diff --git a/build/cjs/vexflow-bravura.js b/build/cjs/vexflow-bravura.js new file mode 100644 index 0000000000..2c773c3dfe --- /dev/null +++ b/build/cjs/vexflow-bravura.js @@ -0,0 +1,7 @@ +/*! + * VexFlow 4.1.0-alpha.0 2022-10-10T04:47:38.237Z 847bc9014672858aedc7f8460384f51f98d6bd84 + * Copyright (c) 2010 Mohit Muthanna Cheppudira + * https://www.vexflow.com https://github.com/0xfe/vexflow + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Vex=e():t.Vex=e()}("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:this,(function(){return(()=>{"use strict";var t={d:(e,i)=>{for(var s in i)t.o(i,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:i[s]})}};t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),t.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),t.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var e={};t.d(e,{default:()=>i});var i={};function s(t,e,i=!0){if("object"!=typeof t||null===t)return!1;let s=t.constructor;if(i){for(;null!==t;){if(s=t.constructor,"CATEGORY"in s&&s.CATEGORY===e)return!0;t=Object.getPrototypeOf(t)}return!1}return"CATEGORY"in s&&s.CATEGORY===e}t.r(i),t.d(i,{Accidental:()=>it,Annotation:()=>ct,AnnotationHorizontalJustify:()=>rt,AnnotationVerticalJustify:()=>ht,Articulation:()=>pt,BEAM_BOTH:()=>Re,BEAM_LEFT:()=>Me,BEAM_RIGHT:()=>Be,BarNote:()=>Nt,Barline:()=>Ft,BarlineType:()=>wt,Beam:()=>Oe,Bend:()=>At,BoundingBox:()=>C,BoundingBoxComputation:()=>E,Builder:()=>Ve,CanvasContext:()=>Jt,Category:()=>_,ChordSymbol:()=>Mt,ChordSymbolHorizontalJustify:()=>vt,ChordSymbolVerticalJustify:()=>Dt,Clef:()=>de,ClefNote:()=>Le,Crescendo:()=>ze,Curve:()=>We,CurvePosition:()=>Ue,Dot:()=>Bt,EasyScore:()=>Je,EasyScoreGrammar:()=>je,Element:()=>O,Factory:()=>Ti,Flow:()=>Ni,Font:()=>M,FontStyle:()=>F,FontWeight:()=>k,Formatter:()=>Fe,Fraction:()=>v,FretHandFinger:()=>Rt,GhostNote:()=>Ze,Glyph:()=>Q,GlyphNote:()=>ti,GraceNote:()=>ei,GraceNoteGroup:()=>Ht,GraceTabNote:()=>wi,KeyManager:()=>vi,KeySigNote:()=>ii,KeySignature:()=>me,Modifier:()=>Z,ModifierContext:()=>be,ModifierPosition:()=>$,MultiMeasureRest:()=>ai,Music:()=>tt,Note:()=>St,NoteHead:()=>Ot,NoteSubGroup:()=>jt,Ornament:()=>Vt,OutlineCode:()=>K,Parenthesis:()=>Kt,Parser:()=>Ye,PedalMarking:()=>oi,Piece:()=>Xe,Registry:()=>R,RenderContext:()=>ut,Renderer:()=>oe,RendererBackends:()=>ie,RendererLineEndType:()=>se,RepeatNote:()=>ri,Repetition:()=>ge,RuntimeError:()=>x,SVGContext:()=>ee,Stave:()=>ve,StaveConnector:()=>Ce,StaveHairpin:()=>Di,StaveLine:()=>ci,StaveModifier:()=>kt,StaveModifierPosition:()=>Tt,StaveNote:()=>Ut,StaveSection:()=>_e,StaveTempo:()=>xe,StaveText:()=>ue,StaveTie:()=>Wt,Stem:()=>st,StemmableNote:()=>Lt,StringNumber:()=>le,Stroke:()=>re,SymbolModifiers:()=>Et,SymbolTypes:()=>Ct,System:()=>bi,TabNote:()=>di,TabSlide:()=>Ci,TabStave:()=>mi,TabTie:()=>It,TextBracket:()=>xi,TextBracketPosition:()=>_i,TextDynamics:()=>ui,TextFormatter:()=>lt,TextJustification:()=>ae,TextNote:()=>pe,TickContext:()=>Xt,Tickable:()=>yt,TimeSigNote:()=>fi,TimeSignature:()=>Se,TimeSignatureGlyph:()=>ye,Tremolo:()=>Ei,Tuning:()=>ki,Tuplet:()=>Ae,TupletLocation:()=>Ne,Vex:()=>Li,Vibrato:()=>he,VibratoBracket:()=>yi,Voice:()=>Yt,VoiceMode:()=>Gt,Volta:()=>fe,VoltaType:()=>ne,defined:()=>u,drawDot:()=>ft,globalObject:()=>p,isAccidental:()=>a,isAnnotation:()=>n,isBarline:()=>o,isCategory:()=>s,isDot:()=>l,isGraceNote:()=>r,isGraceNoteGroup:()=>h,isHTMLCanvas:()=>$t,isHTMLDiv:()=>qt,isNote:()=>c,isRenderContext:()=>b,isStaveNote:()=>d,isStemmableNote:()=>m,isTabNote:()=>g,log:()=>f,midLine:()=>S,normalizeAngle:()=>w,prefix:()=>T,warn:()=>y});const a=t=>s(t,_.Accidental),n=t=>s(t,_.Annotation),o=t=>s(t,_.Barline),l=t=>s(t,_.Dot),r=t=>s(t,_.GraceNote),h=t=>s(t,_.GraceNoteGroup),c=t=>s(t,_.Note),b=t=>s(t,_.RenderContext),d=t=>s(t,_.StaveNote),m=t=>s(t,_.StemmableNote),g=t=>s(t,_.TabNote);var _;!function(t){t.Accidental="Accidental",t.Annotation="Annotation",t.Articulation="Articulation",t.Barline="Barline",t.BarNote="BarNote",t.Beam="Beam",t.Bend="Bend",t.ChordSymbol="ChordSymbol",t.Clef="Clef",t.ClefNote="ClefNote",t.Crescendo="Crescendo",t.Curve="Curve",t.Dot="Dot",t.Element="Element",t.Fraction="Fraction",t.FretHandFinger="FretHandFinger",t.GhostNote="GhostNote",t.Glyph="Glyph",t.GlyphNote="GlyphNote",t.GraceNote="GraceNote",t.GraceNoteGroup="GraceNoteGroup",t.GraceTabNote="GraceTabNote",t.KeySignature="KeySignature",t.KeySigNote="KeySigNote",t.Modifier="Modifier",t.MultiMeasureRest="MultiMeasureRest",t.Note="Note",t.NoteHead="NoteHead",t.NoteSubGroup="NoteSubGroup",t.Ornament="Ornament",t.Parenthesis="Parenthesis",t.PedalMarking="PedalMarking",t.RenderContext="RenderContext",t.RepeatNote="RepeatNote",t.Repetition="Repetition",t.Stave="Stave",t.StaveConnector="StaveConnector",t.StaveHairpin="StaveHairpin",t.StaveLine="StaveLine",t.StaveModifier="StaveModifier",t.StaveNote="StaveNote",t.StaveSection="StaveSection",t.StaveTempo="StaveTempo",t.StaveText="StaveText",t.StaveTie="StaveTie",t.Stem="Stem",t.StemmableNote="StemmableNote",t.StringNumber="StringNumber",t.Stroke="Stroke",t.System="System",t.TabNote="TabNote",t.TabSlide="TabSlide",t.TabStave="TabStave",t.TabTie="TabTie",t.TextBracket="TextBracket",t.TextDynamics="TextDynamics",t.TextNote="TextNote",t.Tickable="Tickable",t.TimeSignature="TimeSignature",t.TimeSigNote="TimeSigNote",t.Tremolo="Tremolo",t.Tuplet="Tuplet",t.Vibrato="Vibrato",t.VibratoBracket="VibratoBracket",t.Voice="Voice",t.Volta="Volta"}(_||(_={}));class x extends Error{constructor(t,e=""){super("[RuntimeError] "+t+": "+e),this.code=t}}function p(){return"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==t.g?t.g:Function("return this")()}function u(t,e="undefined",i=""){if(void 0===t)throw new x(e,i);return t}function f(t,...e){if(!e)return;const i=Array.prototype.slice.call(e).join(" ");p().console.log(t+": "+i)}function y(...t){const e=t.join(" "),i=new Error;p().console.log("Warning: ",e,i.stack)}function S(t,e){let i=e+(t-e)/2;var s,a;return i%2>0&&(i=((s=10*i)%(a=5)>=a/2?parseInt(""+s/a,10)*a+a:parseInt(""+s/a,10)*a)/10),i}function T(t){return`vf-${t}`}function w(t){return(t%=2*Math.PI)<0&&(t+=2*Math.PI),t}class v{constructor(t,e){this.numerator=1,this.denominator=1,this.set(t,e)}static get CATEGORY(){return _.Fraction}static GCD(t,e){if("number"!=typeof t||Number.isNaN(t)||"number"!=typeof e||Number.isNaN(e))throw new x("BadArgument",`Invalid numbers: ${t}, ${e}`);let i;for(;0!==e;)i=e,e=t%e,t=i;return t}static LCM(t,e){return t*e/v.GCD(t,e)}static LCMM(t){return 0===t.length?0:1===t.length?t[0]:2===t.length?v.LCM(t[0],t[1]):v.LCM(t.shift(),v.LCMM(t))}set(t=1,e=1){return this.numerator=t,this.denominator=e,this}value(){return this.numerator/this.denominator}simplify(){let t=this.numerator,e=this.denominator;const i=v.GCD(t,e);return t/=i,e/=i,e<0&&(e=-e,t=-t),this.set(t,e)}add(t=0,e=1){const[i,s]=D(t,e),a=v.LCM(this.denominator,s),n=a/this.denominator,o=a/s,l=this.numerator*n+i*o;return this.set(l,a)}subtract(t=0,e=1){const[i,s]=D(t,e),a=v.LCM(this.denominator,s),n=a/this.denominator,o=a/s,l=this.numerator*n-i*o;return this.set(l,a)}multiply(t=1,e=1){const[i,s]=D(t,e);return this.set(this.numerator*i,this.denominator*s)}divide(t=1,e=1){const[i,s]=D(t,e);return this.set(this.numerator*s,this.denominator*i)}equals(t){const e=v.__staticFractionA.copy(t).simplify(),i=v.__staticFractionB.copy(this).simplify();return e.numerator===i.numerator&&e.denominator===i.denominator}greaterThan(t){const e=v.__staticFractionB.copy(this);return e.subtract(t),e.numerator>0}greaterThanEquals(t){const e=v.__staticFractionB.copy(this);return e.subtract(t),e.numerator>=0}lessThan(t){return!this.greaterThanEquals(t)}lessThanEquals(t){return!this.greaterThan(t)}clone(){return new v(this.numerator,this.denominator)}copy(t){return"number"==typeof t?this.set(t,1):this.set(t.numerator,t.denominator)}quotient(){return Math.floor(this.numerator/this.denominator)}remainder(){return this.numerator%this.denominator}makeAbs(){return this.denominator=Math.abs(this.denominator),this.numerator=Math.abs(this.numerator),this}toString(){return`${this.numerator}/${this.denominator}`}toSimplifiedString(){return v.__staticFractionTmp.copy(this).simplify().toString()}toMixedString(){let t="";const e=this.quotient(),i=v.__staticFractionTmp.copy(this);return e<0&&i.makeAbs(),0!==e?(t+=e,0!==i.numerator&&(t+=` ${i.toSimplifiedString()}`)):t=0===i.numerator?"0":i.toSimplifiedString(),t}parse(t){const e=t.split("/"),i=parseInt(e[0],10),s=e[1]?parseInt(e[1],10):1;return this.set(i,s)}}function D(t,e=1){return"number"==typeof t?[t,e]:[t.numerator,t.denominator]}v.__staticFractionA=new v,v.__staticFractionB=new v,v.__staticFractionTmp=new v;class C{constructor(t,e,i,s){this.x=t,this.y=e,this.w=i,this.h=s}static copy(t){return new C(t.x,t.y,t.w,t.h)}getX(){return this.x}getY(){return this.y}getW(){return this.w}getH(){return this.h}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setW(t){return this.w=t,this}setH(t){return this.h=t,this}move(t,e){return this.x+=t,this.y+=e,this}clone(){return C.copy(this)}mergeWith(t){const e=t,i=this.xthis.x2)&&(this.x2=t),(isNaN(this.y1)||ethis.y2)&&(this.y2=e)}addX(t){this.addPoint(t,this.y1)}addY(t){this.addPoint(this.x1,t)}addQuadraticCurve(t,e,i,s,a,n){this.addPoint(t,e),this.addPoint(a,n);const o=i-t;let l=o-(a-i);if(0!=l){const e=o/l;if(e>0&&e<1){const s=1-e;this.addX(s*s*t+2*s*e*i+e*e*a)}}const r=s-e;if(l=r-(n-s),0!=l){const t=r/l;if(t>0&&t<1){const i=1-t;this.addY(i*i*e+2*i*t*s+t*t*n)}}}addBezierCurve(t,e,i,s,a,n,o,l){const r=[t,e],h=[i,s],c=[a,n],b=[o,l];let d;this.addPoint(r[0],r[1]),this.addPoint(b[0],b[1]);const m=(t,e)=>Math.pow(1-t,3)*r[e]+3*Math.pow(1-t,2)*t*h[e]+3*(1-t)*Math.pow(t,2)*c[e]+Math.pow(t,3)*b[e];for(d=0;d<=1;d++){const t=6*r[d]-12*h[d]+6*c[d],e=-3*r[d]+9*h[d]-9*c[d]+3*b[d],i=3*h[d]-3*r[d];if(0===e){if(0===t)continue;const e=-i/t;0=600;{const e=parseInt(t,10);return isNaN(e)?"bold"===t.toLowerCase():e>=600}}return!1}static isItalic(t){return!!t&&t.toLowerCase()===F.ITALIC}static loadWebFont(t,e,i=!0){return N(this,void 0,void 0,(function*(){const s=new FontFace(t,(i?`url(${e}2) format('woff2'), `:"")+`url(${e}) format('woff')`);return yield s.load(),document.fonts.add(s),s}))}static loadWebFonts(){return N(this,void 0,void 0,(function*(){const t=M.WEB_FONT_HOST,e=M.WEB_FONT_FILES;for(const i in e){const s=e[i];M.loadWebFont(i,t+s)}}))}static load(t,e,i){let s=P[t];return s||(s=new M(t),P[t]=s),e&&s.setData(e),i&&s.setMetrics(i),s}getName(){return this.name}getData(){return u(this.data,"FontError","Missing font data")}getMetrics(){return u(this.metrics,"FontError","Missing metrics")}setData(t){this.data=t}setMetrics(t){this.metrics=t}hasData(){return void 0!==this.data}getResolution(){return this.getData().resolution}getGlyphs(){return this.getData().glyphs}lookupMetric(t,e){const i=t.split(".");let s=this.getMetrics();for(let t=0;tt[e]))}}return[]}getElementsByType(t){return this.getElementsByAttribute("type",t)}getElementsByClass(t){return this.getElementsByAttribute("class",t)}onUpdate(t){return["id","type","class"].includes(t.name)&&this.updateIndex(t),this}}class O{constructor(){var t;this.children=[],this.attrs={id:O.newID(),el:void 0,type:this.getCategory(),classes:{}},this.rendered=!1,null===(t=R.getDefaultRegistry())||void 0===t||t.register(this)}static get CATEGORY(){return _.Element}static newID(){return"auto"+O.ID++}addChildElement(t){return this.children.push(t),this}getCategory(){return this.constructor.CATEGORY}setStyle(t){return this.style=t,this}setGroupStyle(t){return this.style=t,this.children.forEach((e=>e.setGroupStyle(t))),this}getStyle(){return this.style}applyStyle(t=this.context,e=this.getStyle()){return e&&t?(t.save(),e.shadowColor&&t.setShadowColor(e.shadowColor),e.shadowBlur&&t.setShadowBlur(e.shadowBlur),e.fillStyle&&t.setFillStyle(e.fillStyle),e.strokeStyle&&t.setStrokeStyle(e.strokeStyle),e.lineWidth&&t.setLineWidth(e.lineWidth),this):this}restoreStyle(t=this.context,e=this.getStyle()){return e&&t?(t.restore(),this):this}drawWithStyle(){this.checkContext(),this.applyStyle(),this.draw(),this.restoreStyle()}hasClass(t){return!0===this.attrs.classes[t]}addClass(t){var e;return this.attrs.classes[t]=!0,null===(e=this.registry)||void 0===e||e.onUpdate({id:this.attrs.id,name:"class",value:t,oldValue:void 0}),this}removeClass(t){var e;return delete this.attrs.classes[t],null===(e=this.registry)||void 0===e||e.onUpdate({id:this.attrs.id,name:"class",value:void 0,oldValue:t}),this}onRegister(t){return this.registry=t,this}isRendered(){return this.rendered}setRendered(t=!0){return this.rendered=t,this}getAttributes(){return this.attrs}getAttribute(t){return this.attrs[t]}getSVGElement(t=""){const e=T(this.attrs.id+t),i=document.getElementById(e);if(i)return i}setAttribute(t,e){var i;const s=this.attrs.id,a=this.attrs[t];return this.attrs[t]=e,null===(i=this.registry)||void 0===i||i.onUpdate({id:s,name:t,value:e,oldValue:a}),this}getBoundingBox(){return this.boundingBox}getContext(){return this.context}setContext(t){return this.context=t,this}checkContext(){return u(this.context,"NoContext","No rendering context attached to instance.")}set font(t){this.setFont(t)}get font(){return M.toCSSString(this.textFont)}setFont(t,e,i,s){const a=this.constructor.TEXT_FONT,n="object"==typeof t,o="string"==typeof t,l=void 0===t,r=void 0===e&&void 0===i&&void 0===s;return this.textFont=n?Object.assign(Object.assign({},a),t):o&&r?M.fromCSSString(t):l&&r?Object.assign({},a):M.validate(null!=t?t:a.family,null!=e?e:a.size,null!=i?i:a.weight,null!=s?s:a.style),this}getFont(){return this.textFont||this.resetFont(),M.toCSSString(this.textFont)}resetFont(){this.setFont()}get fontInfo(){return this.textFont||this.resetFont(),Object.assign({},this.textFont)}set fontInfo(t){this.setFont(t)}setFontSize(t){const e=this.fontInfo;return this.setFont(e.family,t,e.weight,e.style),this}getFontSize(){return this.fontSize}set fontSize(t){this.setFontSize(t)}get fontSize(){let t=this.fontInfo.size;return"number"==typeof t&&(t=`${t}pt`),t}get fontSizeInPoints(){return M.convertSizeToPointValue(this.fontSize)}get fontSizeInPixels(){return M.convertSizeToPixelValue(this.fontSize)}get fontStyle(){return this.fontInfo.style}set fontStyle(t){const e=this.fontInfo;this.setFont(e.family,e.size,e.weight,t)}get fontWeight(){return this.fontInfo.weight+""}set fontWeight(t){const e=this.fontInfo;this.setFont(e.family,e.size,t,e.style)}}O.ID=1e3,O.TEXT_FONT={family:M.SANS_SERIF,size:M.SIZE,weight:k.NORMAL,style:F.NORMAL};const L=16384,z={"1/2":32768,1:16384,2:8192,4:4096,8:2048,16:1024,32:512,64:256,128:128,256:64},U={w:"1",h:"2",q:"4",b:"256"},W={C:{num:0},Am:{num:0},F:{acc:"b",num:1},Dm:{acc:"b",num:1},Bb:{acc:"b",num:2},Gm:{acc:"b",num:2},Eb:{acc:"b",num:3},Cm:{acc:"b",num:3},Ab:{acc:"b",num:4},Fm:{acc:"b",num:4},Db:{acc:"b",num:5},Bbm:{acc:"b",num:5},Gb:{acc:"b",num:6},Ebm:{acc:"b",num:6},Cb:{acc:"b",num:7},Abm:{acc:"b",num:7},G:{acc:"#",num:1},Em:{acc:"#",num:1},D:{acc:"#",num:2},Bm:{acc:"#",num:2},A:{acc:"#",num:3},"F#m":{acc:"#",num:3},E:{acc:"#",num:4},"C#m":{acc:"#",num:4},B:{acc:"#",num:5},"G#m":{acc:"#",num:5},"F#":{acc:"#",num:6},"D#m":{acc:"#",num:6},"C#":{acc:"#",num:7},"A#m":{acc:"#",num:7}},I={treble:{line_shift:0},bass:{line_shift:6},tenor:{line_shift:4},alto:{line_shift:3},soprano:{line_shift:1},percussion:{line_shift:0},"mezzo-soprano":{line_shift:2},"baritone-c":{line_shift:5},"baritone-f":{line_shift:5},subbass:{line_shift:7},french:{line_shift:-1}},G={C:{index:0,int_val:0},CN:{index:0,int_val:0,accidental:"n"},"C#":{index:0,int_val:1,accidental:"#"},"C##":{index:0,int_val:2,accidental:"##"},CB:{index:0,int_val:11,accidental:"b"},CBB:{index:0,int_val:10,accidental:"bb"},D:{index:1,int_val:2},DN:{index:1,int_val:2,accidental:"n"},"D#":{index:1,int_val:3,accidental:"#"},"D##":{index:1,int_val:4,accidental:"##"},DB:{index:1,int_val:1,accidental:"b"},DBB:{index:1,int_val:0,accidental:"bb"},E:{index:2,int_val:4},EN:{index:2,int_val:4,accidental:"n"},"E#":{index:2,int_val:5,accidental:"#"},"E##":{index:2,int_val:6,accidental:"##"},EB:{index:2,int_val:3,accidental:"b"},EBB:{index:2,int_val:2,accidental:"bb"},F:{index:3,int_val:5},FN:{index:3,int_val:5,accidental:"n"},"F#":{index:3,int_val:6,accidental:"#"},"F##":{index:3,int_val:7,accidental:"##"},FB:{index:3,int_val:4,accidental:"b"},FBB:{index:3,int_val:3,accidental:"bb"},G:{index:4,int_val:7},GN:{index:4,int_val:7,accidental:"n"},"G#":{index:4,int_val:8,accidental:"#"},"G##":{index:4,int_val:9,accidental:"##"},GB:{index:4,int_val:6,accidental:"b"},GBB:{index:4,int_val:5,accidental:"bb"},A:{index:5,int_val:9},AN:{index:5,int_val:9,accidental:"n"},"A#":{index:5,int_val:10,accidental:"#"},"A##":{index:5,int_val:11,accidental:"##"},AB:{index:5,int_val:8,accidental:"b"},ABB:{index:5,int_val:7,accidental:"bb"},B:{index:6,int_val:11},BN:{index:6,int_val:11,accidental:"n"},"B#":{index:6,int_val:12,accidental:"#"},"B##":{index:6,int_val:13,accidental:"##"},BB:{index:6,int_val:10,accidental:"b"},BBB:{index:6,int_val:9,accidental:"bb"},R:{index:6,rest:!0},X:{index:6,accidental:"",octave:4,code:"noteheadXBlack",shift_right:5.5}},Y={"#":{code:"accidentalSharp",parenRightPaddingAdjustment:-1},"##":{code:"accidentalDoubleSharp",parenRightPaddingAdjustment:-1},b:{code:"accidentalFlat",parenRightPaddingAdjustment:-2},bb:{code:"accidentalDoubleFlat",parenRightPaddingAdjustment:-2},n:{code:"accidentalNatural",parenRightPaddingAdjustment:-1},"{":{code:"accidentalParensLeft",parenRightPaddingAdjustment:-1},"}":{code:"accidentalParensRight",parenRightPaddingAdjustment:-1},db:{code:"accidentalThreeQuarterTonesFlatZimmermann",parenRightPaddingAdjustment:-1},d:{code:"accidentalQuarterToneFlatStein",parenRightPaddingAdjustment:0},"++":{code:"accidentalThreeQuarterTonesSharpStein",parenRightPaddingAdjustment:-1},"+":{code:"accidentalQuarterToneSharpStein",parenRightPaddingAdjustment:-1},"+-":{code:"accidentalKucukMucennebSharp",parenRightPaddingAdjustment:-1},bs:{code:"accidentalBakiyeFlat",parenRightPaddingAdjustment:-1},bss:{code:"accidentalBuyukMucennebFlat",parenRightPaddingAdjustment:-1},o:{code:"accidentalSori",parenRightPaddingAdjustment:-1},k:{code:"accidentalKoron",parenRightPaddingAdjustment:-1},bbs:{code:"vexAccidentalMicrotonal1",parenRightPaddingAdjustment:-1},"++-":{code:"vexAccidentalMicrotonal2",parenRightPaddingAdjustment:-1},ashs:{code:"vexAccidentalMicrotonal3",parenRightPaddingAdjustment:-1},afhf:{code:"vexAccidentalMicrotonal4",parenRightPaddingAdjustment:-1},accSagittal5v7KleismaUp:{code:"accSagittal5v7KleismaUp",parenRightPaddingAdjustment:-1},accSagittal5v7KleismaDown:{code:"accSagittal5v7KleismaDown",parenRightPaddingAdjustment:-1},accSagittal5CommaUp:{code:"accSagittal5CommaUp",parenRightPaddingAdjustment:-1},accSagittal5CommaDown:{code:"accSagittal5CommaDown",parenRightPaddingAdjustment:-1},accSagittal7CommaUp:{code:"accSagittal7CommaUp",parenRightPaddingAdjustment:-1},accSagittal7CommaDown:{code:"accSagittal7CommaDown",parenRightPaddingAdjustment:-1},accSagittal25SmallDiesisUp:{code:"accSagittal25SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal25SmallDiesisDown:{code:"accSagittal25SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittal35MediumDiesisUp:{code:"accSagittal35MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal35MediumDiesisDown:{code:"accSagittal35MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11MediumDiesisUp:{code:"accSagittal11MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11MediumDiesisDown:{code:"accSagittal11MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11LargeDiesisUp:{code:"accSagittal11LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11LargeDiesisDown:{code:"accSagittal11LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittal35LargeDiesisUp:{code:"accSagittal35LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal35LargeDiesisDown:{code:"accSagittal35LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp25SDown:{code:"accSagittalSharp25SDown",parenRightPaddingAdjustment:-1},accSagittalFlat25SUp:{code:"accSagittalFlat25SUp",parenRightPaddingAdjustment:-1},accSagittalSharp7CDown:{code:"accSagittalSharp7CDown",parenRightPaddingAdjustment:-1},accSagittalFlat7CUp:{code:"accSagittalFlat7CUp",parenRightPaddingAdjustment:-1},accSagittalSharp5CDown:{code:"accSagittalSharp5CDown",parenRightPaddingAdjustment:-1},accSagittalFlat5CUp:{code:"accSagittalFlat5CUp",parenRightPaddingAdjustment:-1},accSagittalSharp5v7kDown:{code:"accSagittalSharp5v7kDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v7kUp:{code:"accSagittalFlat5v7kUp",parenRightPaddingAdjustment:-1},accSagittalSharp:{code:"accSagittalSharp",parenRightPaddingAdjustment:-1},accSagittalFlat:{code:"accSagittalFlat",parenRightPaddingAdjustment:-1},accSagittalSharp5v7kUp:{code:"accSagittalSharp5v7kUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v7kDown:{code:"accSagittalFlat5v7kDown",parenRightPaddingAdjustment:-1},accSagittalSharp5CUp:{code:"accSagittalSharp5CUp",parenRightPaddingAdjustment:-1},accSagittalFlat5CDown:{code:"accSagittalFlat5CDown",parenRightPaddingAdjustment:-1},accSagittalSharp7CUp:{code:"accSagittalSharp7CUp",parenRightPaddingAdjustment:-1},accSagittalFlat7CDown:{code:"accSagittalFlat7CDown",parenRightPaddingAdjustment:-1},accSagittalSharp25SUp:{code:"accSagittalSharp25SUp",parenRightPaddingAdjustment:-1},accSagittalFlat25SDown:{code:"accSagittalFlat25SDown",parenRightPaddingAdjustment:-1},accSagittalSharp35MUp:{code:"accSagittalSharp35MUp",parenRightPaddingAdjustment:-1},accSagittalFlat35MDown:{code:"accSagittalFlat35MDown",parenRightPaddingAdjustment:-1},accSagittalSharp11MUp:{code:"accSagittalSharp11MUp",parenRightPaddingAdjustment:-1},accSagittalFlat11MDown:{code:"accSagittalFlat11MDown",parenRightPaddingAdjustment:-1},accSagittalSharp11LUp:{code:"accSagittalSharp11LUp",parenRightPaddingAdjustment:-1},accSagittalFlat11LDown:{code:"accSagittalFlat11LDown",parenRightPaddingAdjustment:-1},accSagittalSharp35LUp:{code:"accSagittalSharp35LUp",parenRightPaddingAdjustment:-1},accSagittalFlat35LDown:{code:"accSagittalFlat35LDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp25SDown:{code:"accSagittalDoubleSharp25SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat25SUp:{code:"accSagittalDoubleFlat25SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7CDown:{code:"accSagittalDoubleSharp7CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7CUp:{code:"accSagittalDoubleFlat7CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5CDown:{code:"accSagittalDoubleSharp5CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5CUp:{code:"accSagittalDoubleFlat5CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v7kDown:{code:"accSagittalDoubleSharp5v7kDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v7kUp:{code:"accSagittalDoubleFlat5v7kUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp:{code:"accSagittalDoubleSharp",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat:{code:"accSagittalDoubleFlat",parenRightPaddingAdjustment:-1},accSagittal7v11KleismaUp:{code:"accSagittal7v11KleismaUp",parenRightPaddingAdjustment:-1},accSagittal7v11KleismaDown:{code:"accSagittal7v11KleismaDown",parenRightPaddingAdjustment:-1},accSagittal17CommaUp:{code:"accSagittal17CommaUp",parenRightPaddingAdjustment:-1},accSagittal17CommaDown:{code:"accSagittal17CommaDown",parenRightPaddingAdjustment:-1},accSagittal55CommaUp:{code:"accSagittal55CommaUp",parenRightPaddingAdjustment:-1},accSagittal55CommaDown:{code:"accSagittal55CommaDown",parenRightPaddingAdjustment:-1},accSagittal7v11CommaUp:{code:"accSagittal7v11CommaUp",parenRightPaddingAdjustment:-1},accSagittal7v11CommaDown:{code:"accSagittal7v11CommaDown",parenRightPaddingAdjustment:-1},accSagittal5v11SmallDiesisUp:{code:"accSagittal5v11SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v11SmallDiesisDown:{code:"accSagittal5v11SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v11SDown:{code:"accSagittalSharp5v11SDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v11SUp:{code:"accSagittalFlat5v11SUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v11CDown:{code:"accSagittalSharp7v11CDown",parenRightPaddingAdjustment:-1},accSagittalFlat7v11CUp:{code:"accSagittalFlat7v11CUp",parenRightPaddingAdjustment:-1},accSagittalSharp55CDown:{code:"accSagittalSharp55CDown",parenRightPaddingAdjustment:-1},accSagittalFlat55CUp:{code:"accSagittalFlat55CUp",parenRightPaddingAdjustment:-1},accSagittalSharp17CDown:{code:"accSagittalSharp17CDown",parenRightPaddingAdjustment:-1},accSagittalFlat17CUp:{code:"accSagittalFlat17CUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v11kDown:{code:"accSagittalSharp7v11kDown",parenRightPaddingAdjustment:-1},accSagittalFlat7v11kUp:{code:"accSagittalFlat7v11kUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v11kUp:{code:"accSagittalSharp7v11kUp",parenRightPaddingAdjustment:-1},accSagittalFlat7v11kDown:{code:"accSagittalFlat7v11kDown",parenRightPaddingAdjustment:-1},accSagittalSharp17CUp:{code:"accSagittalSharp17CUp",parenRightPaddingAdjustment:-1},accSagittalFlat17CDown:{code:"accSagittalFlat17CDown",parenRightPaddingAdjustment:-1},accSagittalSharp55CUp:{code:"accSagittalSharp55CUp",parenRightPaddingAdjustment:-1},accSagittalFlat55CDown:{code:"accSagittalFlat55CDown",parenRightPaddingAdjustment:-1},accSagittalSharp7v11CUp:{code:"accSagittalSharp7v11CUp",parenRightPaddingAdjustment:-1},accSagittalFlat7v11CDown:{code:"accSagittalFlat7v11CDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v11SUp:{code:"accSagittalSharp5v11SUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v11SDown:{code:"accSagittalFlat5v11SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v11SDown:{code:"accSagittalDoubleSharp5v11SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v11SUp:{code:"accSagittalDoubleFlat5v11SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7v11CDown:{code:"accSagittalDoubleSharp7v11CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7v11CUp:{code:"accSagittalDoubleFlat7v11CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp55CDown:{code:"accSagittalDoubleSharp55CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat55CUp:{code:"accSagittalDoubleFlat55CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp17CDown:{code:"accSagittalDoubleSharp17CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat17CUp:{code:"accSagittalDoubleFlat17CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7v11kDown:{code:"accSagittalDoubleSharp7v11kDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7v11kUp:{code:"accSagittalDoubleFlat7v11kUp",parenRightPaddingAdjustment:-1},accSagittal23CommaUp:{code:"accSagittal23CommaUp",parenRightPaddingAdjustment:-1},accSagittal23CommaDown:{code:"accSagittal23CommaDown",parenRightPaddingAdjustment:-1},accSagittal5v19CommaUp:{code:"accSagittal5v19CommaUp",parenRightPaddingAdjustment:-1},accSagittal5v19CommaDown:{code:"accSagittal5v19CommaDown",parenRightPaddingAdjustment:-1},accSagittal5v23SmallDiesisUp:{code:"accSagittal5v23SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v23SmallDiesisDown:{code:"accSagittal5v23SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v23SDown:{code:"accSagittalSharp5v23SDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v23SUp:{code:"accSagittalFlat5v23SUp",parenRightPaddingAdjustment:-1},accSagittalSharp5v19CDown:{code:"accSagittalSharp5v19CDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v19CUp:{code:"accSagittalFlat5v19CUp",parenRightPaddingAdjustment:-1},accSagittalSharp23CDown:{code:"accSagittalSharp23CDown",parenRightPaddingAdjustment:-1},accSagittalFlat23CUp:{code:"accSagittalFlat23CUp",parenRightPaddingAdjustment:-1},accSagittalSharp23CUp:{code:"accSagittalSharp23CUp",parenRightPaddingAdjustment:-1},accSagittalFlat23CDown:{code:"accSagittalFlat23CDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v19CUp:{code:"accSagittalSharp5v19CUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v19CDown:{code:"accSagittalFlat5v19CDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v23SUp:{code:"accSagittalSharp5v23SUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v23SDown:{code:"accSagittalFlat5v23SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v23SDown:{code:"accSagittalDoubleSharp5v23SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v23SUp:{code:"accSagittalDoubleFlat5v23SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v19CDown:{code:"accSagittalDoubleSharp5v19CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v19CUp:{code:"accSagittalDoubleFlat5v19CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp23CDown:{code:"accSagittalDoubleSharp23CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat23CUp:{code:"accSagittalDoubleFlat23CUp",parenRightPaddingAdjustment:-1},accSagittal19SchismaUp:{code:"accSagittal19SchismaUp",parenRightPaddingAdjustment:-1},accSagittal19SchismaDown:{code:"accSagittal19SchismaDown",parenRightPaddingAdjustment:-1},accSagittal17KleismaUp:{code:"accSagittal17KleismaUp",parenRightPaddingAdjustment:-1},accSagittal17KleismaDown:{code:"accSagittal17KleismaDown",parenRightPaddingAdjustment:-1},accSagittal143CommaUp:{code:"accSagittal143CommaUp",parenRightPaddingAdjustment:-1},accSagittal143CommaDown:{code:"accSagittal143CommaDown",parenRightPaddingAdjustment:-1},accSagittal11v49CommaUp:{code:"accSagittal11v49CommaUp",parenRightPaddingAdjustment:-1},accSagittal11v49CommaDown:{code:"accSagittal11v49CommaDown",parenRightPaddingAdjustment:-1},accSagittal19CommaUp:{code:"accSagittal19CommaUp",parenRightPaddingAdjustment:-1},accSagittal19CommaDown:{code:"accSagittal19CommaDown",parenRightPaddingAdjustment:-1},accSagittal7v19CommaUp:{code:"accSagittal7v19CommaUp",parenRightPaddingAdjustment:-1},accSagittal7v19CommaDown:{code:"accSagittal7v19CommaDown",parenRightPaddingAdjustment:-1},accSagittal49SmallDiesisUp:{code:"accSagittal49SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal49SmallDiesisDown:{code:"accSagittal49SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittal23SmallDiesisUp:{code:"accSagittal23SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal23SmallDiesisDown:{code:"accSagittal23SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittal5v13MediumDiesisUp:{code:"accSagittal5v13MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v13MediumDiesisDown:{code:"accSagittal5v13MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11v19MediumDiesisUp:{code:"accSagittal11v19MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11v19MediumDiesisDown:{code:"accSagittal11v19MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal49MediumDiesisUp:{code:"accSagittal49MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal49MediumDiesisDown:{code:"accSagittal49MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal5v49MediumDiesisUp:{code:"accSagittal5v49MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v49MediumDiesisDown:{code:"accSagittal5v49MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal49LargeDiesisUp:{code:"accSagittal49LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal49LargeDiesisDown:{code:"accSagittal49LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11v19LargeDiesisUp:{code:"accSagittal11v19LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11v19LargeDiesisDown:{code:"accSagittal11v19LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittal5v13LargeDiesisUp:{code:"accSagittal5v13LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v13LargeDiesisDown:{code:"accSagittal5v13LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp23SDown:{code:"accSagittalSharp23SDown",parenRightPaddingAdjustment:-1},accSagittalFlat23SUp:{code:"accSagittalFlat23SUp",parenRightPaddingAdjustment:-1},accSagittalSharp49SDown:{code:"accSagittalSharp49SDown",parenRightPaddingAdjustment:-1},accSagittalFlat49SUp:{code:"accSagittalFlat49SUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v19CDown:{code:"accSagittalSharp7v19CDown",parenRightPaddingAdjustment:-1},accSagittalFlat7v19CUp:{code:"accSagittalFlat7v19CUp",parenRightPaddingAdjustment:-1},accSagittalSharp19CDown:{code:"accSagittalSharp19CDown",parenRightPaddingAdjustment:-1},accSagittalFlat19CUp:{code:"accSagittalFlat19CUp",parenRightPaddingAdjustment:-1},accSagittalSharp11v49CDown:{code:"accSagittalSharp11v49CDown",parenRightPaddingAdjustment:-1},accSagittalFlat11v49CUp:{code:"accSagittalFlat11v49CUp",parenRightPaddingAdjustment:-1},accSagittalSharp143CDown:{code:"accSagittalSharp143CDown",parenRightPaddingAdjustment:-1},accSagittalFlat143CUp:{code:"accSagittalFlat143CUp",parenRightPaddingAdjustment:-1},accSagittalSharp17kDown:{code:"accSagittalSharp17kDown",parenRightPaddingAdjustment:-1},accSagittalFlat17kUp:{code:"accSagittalFlat17kUp",parenRightPaddingAdjustment:-1},accSagittalSharp19sDown:{code:"accSagittalSharp19sDown",parenRightPaddingAdjustment:-1},accSagittalFlat19sUp:{code:"accSagittalFlat19sUp",parenRightPaddingAdjustment:-1},accSagittalSharp19sUp:{code:"accSagittalSharp19sUp",parenRightPaddingAdjustment:-1},accSagittalFlat19sDown:{code:"accSagittalFlat19sDown",parenRightPaddingAdjustment:-1},accSagittalSharp17kUp:{code:"accSagittalSharp17kUp",parenRightPaddingAdjustment:-1},accSagittalFlat17kDown:{code:"accSagittalFlat17kDown",parenRightPaddingAdjustment:-1},accSagittalSharp143CUp:{code:"accSagittalSharp143CUp",parenRightPaddingAdjustment:-1},accSagittalFlat143CDown:{code:"accSagittalFlat143CDown",parenRightPaddingAdjustment:-1},accSagittalSharp11v49CUp:{code:"accSagittalSharp11v49CUp",parenRightPaddingAdjustment:-1},accSagittalFlat11v49CDown:{code:"accSagittalFlat11v49CDown",parenRightPaddingAdjustment:-1},accSagittalSharp19CUp:{code:"accSagittalSharp19CUp",parenRightPaddingAdjustment:-1},accSagittalFlat19CDown:{code:"accSagittalFlat19CDown",parenRightPaddingAdjustment:-1},accSagittalSharp7v19CUp:{code:"accSagittalSharp7v19CUp",parenRightPaddingAdjustment:-1},accSagittalFlat7v19CDown:{code:"accSagittalFlat7v19CDown",parenRightPaddingAdjustment:-1},accSagittalSharp49SUp:{code:"accSagittalSharp49SUp",parenRightPaddingAdjustment:-1},accSagittalFlat49SDown:{code:"accSagittalFlat49SDown",parenRightPaddingAdjustment:-1},accSagittalSharp23SUp:{code:"accSagittalSharp23SUp",parenRightPaddingAdjustment:-1},accSagittalFlat23SDown:{code:"accSagittalFlat23SDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v13MUp:{code:"accSagittalSharp5v13MUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v13MDown:{code:"accSagittalFlat5v13MDown",parenRightPaddingAdjustment:-1},accSagittalSharp11v19MUp:{code:"accSagittalSharp11v19MUp",parenRightPaddingAdjustment:-1},accSagittalFlat11v19MDown:{code:"accSagittalFlat11v19MDown",parenRightPaddingAdjustment:-1},accSagittalSharp49MUp:{code:"accSagittalSharp49MUp",parenRightPaddingAdjustment:-1},accSagittalFlat49MDown:{code:"accSagittalFlat49MDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v49MUp:{code:"accSagittalSharp5v49MUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v49MDown:{code:"accSagittalFlat5v49MDown",parenRightPaddingAdjustment:-1},accSagittalSharp49LUp:{code:"accSagittalSharp49LUp",parenRightPaddingAdjustment:-1},accSagittalFlat49LDown:{code:"accSagittalFlat49LDown",parenRightPaddingAdjustment:-1},accSagittalSharp11v19LUp:{code:"accSagittalSharp11v19LUp",parenRightPaddingAdjustment:-1},accSagittalFlat11v19LDown:{code:"accSagittalFlat11v19LDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v13LUp:{code:"accSagittalSharp5v13LUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v13LDown:{code:"accSagittalFlat5v13LDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp23SDown:{code:"accSagittalDoubleSharp23SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat23SUp:{code:"accSagittalDoubleFlat23SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp49SDown:{code:"accSagittalDoubleSharp49SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat49SUp:{code:"accSagittalDoubleFlat49SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7v19CDown:{code:"accSagittalDoubleSharp7v19CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7v19CUp:{code:"accSagittalDoubleFlat7v19CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp19CDown:{code:"accSagittalDoubleSharp19CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat19CUp:{code:"accSagittalDoubleFlat19CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp11v49CDown:{code:"accSagittalDoubleSharp11v49CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat11v49CUp:{code:"accSagittalDoubleFlat11v49CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp143CDown:{code:"accSagittalDoubleSharp143CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat143CUp:{code:"accSagittalDoubleFlat143CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp17kDown:{code:"accSagittalDoubleSharp17kDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat17kUp:{code:"accSagittalDoubleFlat17kUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp19sDown:{code:"accSagittalDoubleSharp19sDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat19sUp:{code:"accSagittalDoubleFlat19sUp",parenRightPaddingAdjustment:-1},accSagittalShaftUp:{code:"accSagittalShaftUp",parenRightPaddingAdjustment:-1},accSagittalShaftDown:{code:"accSagittalShaftDown",parenRightPaddingAdjustment:-1},accSagittalAcute:{code:"accSagittalAcute",parenRightPaddingAdjustment:-1},accSagittalGrave:{code:"accSagittalGrave",parenRightPaddingAdjustment:-1},accSagittal1MinaUp:{code:"accSagittal1MinaUp",parenRightPaddingAdjustment:-1},accSagittal1MinaDown:{code:"accSagittal1MinaDown",parenRightPaddingAdjustment:-1},accSagittal2MinasUp:{code:"accSagittal2MinasUp",parenRightPaddingAdjustment:-1},accSagittal2MinasDown:{code:"accSagittal2MinasDown",parenRightPaddingAdjustment:-1},accSagittal1TinaUp:{code:"accSagittal1TinaUp",parenRightPaddingAdjustment:-1},accSagittal1TinaDown:{code:"accSagittal1TinaDown",parenRightPaddingAdjustment:-1},accSagittal2TinasUp:{code:"accSagittal2TinasUp",parenRightPaddingAdjustment:-1},accSagittal2TinasDown:{code:"accSagittal2TinasDown",parenRightPaddingAdjustment:-1},accSagittal3TinasUp:{code:"accSagittal3TinasUp",parenRightPaddingAdjustment:-1},accSagittal3TinasDown:{code:"accSagittal3TinasDown",parenRightPaddingAdjustment:-1},accSagittal4TinasUp:{code:"accSagittal4TinasUp",parenRightPaddingAdjustment:-1},accSagittal4TinasDown:{code:"accSagittal4TinasDown",parenRightPaddingAdjustment:-1},accSagittal5TinasUp:{code:"accSagittal5TinasUp",parenRightPaddingAdjustment:-1},accSagittal5TinasDown:{code:"accSagittal5TinasDown",parenRightPaddingAdjustment:-1},accSagittal6TinasUp:{code:"accSagittal6TinasUp",parenRightPaddingAdjustment:-1},accSagittal6TinasDown:{code:"accSagittal6TinasDown",parenRightPaddingAdjustment:-1},accSagittal7TinasUp:{code:"accSagittal7TinasUp",parenRightPaddingAdjustment:-1},accSagittal7TinasDown:{code:"accSagittal7TinasDown",parenRightPaddingAdjustment:-1},accSagittal8TinasUp:{code:"accSagittal8TinasUp",parenRightPaddingAdjustment:-1},accSagittal8TinasDown:{code:"accSagittal8TinasDown",parenRightPaddingAdjustment:-1},accSagittal9TinasUp:{code:"accSagittal9TinasUp",parenRightPaddingAdjustment:-1},accSagittal9TinasDown:{code:"accSagittal9TinasDown",parenRightPaddingAdjustment:-1},accSagittalFractionalTinaUp:{code:"accSagittalFractionalTinaUp",parenRightPaddingAdjustment:-1},accSagittalFractionalTinaDown:{code:"accSagittalFractionalTinaDown",parenRightPaddingAdjustment:-1},accidentalNarrowReversedFlat:{code:"accidentalNarrowReversedFlat",parenRightPaddingAdjustment:-1},accidentalNarrowReversedFlatAndFlat:{code:"accidentalNarrowReversedFlatAndFlat",parenRightPaddingAdjustment:-1},accidentalWilsonPlus:{code:"accidentalWilsonPlus",parenRightPaddingAdjustment:-1},accidentalWilsonMinus:{code:"accidentalWilsonMinus",parenRightPaddingAdjustment:-1}},H={"a.":{code:"augmentationDot",between_lines:!0},av:{aboveCode:"articStaccatissimoAbove",belowCode:"articStaccatissimoBelow",between_lines:!0},"a>":{aboveCode:"articAccentAbove",belowCode:"articAccentBelow",between_lines:!0},"a-":{aboveCode:"articTenutoAbove",belowCode:"articTenutoBelow",between_lines:!0},"a^":{aboveCode:"articMarcatoAbove",belowCode:"articMarcatoBelow",between_lines:!1},"a+":{code:"pluckedLeftHandPizzicato",between_lines:!1},ao:{aboveCode:"pluckedSnapPizzicatoAbove",belowCode:"pluckedSnapPizzicatoBelow",between_lines:!1},ah:{code:"stringsHarmonic",between_lines:!1},"a@":{aboveCode:"fermataAbove",belowCode:"fermataBelow",between_lines:!1},"a@a":{code:"fermataAbove",between_lines:!1},"a@u":{code:"fermataBelow",between_lines:!1},"a@s":{aboveCode:"fermataShortAbove",belowCode:"fermataShortBelow",between_lines:!1},"a@as":{code:"fermataShortAbove",between_lines:!1},"a@us":{code:"fermataShortBelow",between_lines:!1},"a@l":{aboveCode:"fermataLongAbove",belowCode:"fermataLongBelow",between_lines:!1},"a@al":{code:"fermataLongAbove",between_lines:!1},"a@ul":{code:"fermataLongBelow",between_lines:!1},"a@vl":{aboveCode:"fermataVeryLongAbove",belowCode:"fermataVeryLongBelow",between_lines:!1},"a@avl":{code:"fermataVeryLongAbove",between_lines:!1},"a@uvl":{code:"fermataVeryLongBelow",between_lines:!1},"a|":{code:"stringsUpBow",between_lines:!1},am:{code:"stringsDownBow",between_lines:!1},"a,":{code:"pictChokeCymbal",between_lines:!1}},j={mordent:{code:"ornamentShortTrill"},mordent_inverted:{code:"ornamentMordent"},turn:{code:"ornamentTurn"},turn_inverted:{code:"ornamentTurnSlash"},tr:{code:"ornamentTrill"},upprall:{code:"ornamentPrecompSlideTrillDAnglebert"},downprall:{code:"ornamentPrecompDoubleCadenceUpperPrefix"},prallup:{code:"ornamentPrecompTrillSuffixDandrieu"},pralldown:{code:"ornamentPrecompTrillLowerSuffix"},upmordent:{code:"ornamentPrecompSlideTrillBach"},downmordent:{code:"ornamentPrecompDoubleCadenceUpperPrefixTurn"},lineprall:{code:"ornamentPrecompAppoggTrill"},prallprall:{code:"ornamentTremblement"},scoop:{code:"brassScoop"},doit:{code:"brassDoitMedium"},fall:{code:"brassFallLipShort"},doitLong:{code:"brassLiftMedium"},fallLong:{code:"brassFallRoughMedium"},bend:{code:"brassBend"},plungerClosed:{code:"brassMuteClosed"},plungerOpen:{code:"brassMuteOpen"},flip:{code:"brassFlip"},jazzTurn:{code:"brassJazzTurn"},smear:{code:"brassSmear"}};class X{static currentMusicFont(){if(0===X.MUSIC_FONT_STACK.length)throw new x("NoFonts","The font stack is empty. See: await Flow.fetchMusicFont(...); Flow.setMusicFont(...).");return X.MUSIC_FONT_STACK[0]}static clefProperties(t){if(!t||!(t in I))throw new x("BadArgument","Invalid clef: "+t);return I[t]}static keyProperties(t,e="treble",i){let s={octave_shift:0,duration:"4"};"object"==typeof i&&(s=Object.assign(Object.assign({},s),i));const a=X.sanitizeDuration(s.duration),n=t.split("/");if(n.length<2)throw new x("BadArguments",`First argument must be note/octave or note/octave/glyph-code: ${t}`);const o=n[0].toUpperCase(),l=G[o];if(!l)throw new x("BadArguments","Invalid key name: "+o);l.octave&&(n[1]=l.octave.toString());let r=parseInt(n[1],10);r+=-1*s.octave_shift;let h=(7*r-28+l.index)/2;h+=X.clefProperties(e).line_shift;let c=0;h<=0&&2*h%2==0&&(c=1),h>=6&&2*h%2==0&&(c=-1);const b=void 0!==l.int_val?12*r+l.int_val:void 0,d=l.code,m=l.shift_right;let g={};if(n.length>2&&n[2]){const t=n[2].toUpperCase();g={code:this.codeNoteHead(t,a)}||{}}return Object.assign({key:o,octave:r,line:h,int_value:b,accidental:l.accidental,code:d,stroke:c,shift_right:m,displaced:!1},g)}static integerToNote(t){if(void 0===t||t<0||t>11)throw new x("BadArguments",`integerToNote() requires an integer in the range [0, 11]: ${t}`);const e={0:"C",1:"C#",2:"D",3:"D#",4:"E",5:"F",6:"F#",7:"G",8:"G#",9:"A",10:"A#",11:"B"}[t];if(!e)throw new x("BadArguments",`Unknown note value for integer: ${t}`);return e}static tabToGlyph(t,e=1){let i,s=0,a=0;if("X"===t.toUpperCase()){const t=new Q("accidentalDoubleSharp",X.TABLATURE_FONT_SCALE).getMetrics();if(i="accidentalDoubleSharp",null==t.width||null==t.height)throw new x("InvalidMetrics","Width and height required");s=t.width,a=-t.height/2}else s=X.textWidth(t);return{text:t,code:i,getWidth:()=>s*e,shift_y:a}}static textWidth(t){return 7*t.toString().length}static articulationCodes(t){return H[t]}static accidentalCodes(t){return Y[t]}static ornamentCodes(t){return j[t]}static keySignature(t){const e=W[t];if(!e)throw new x("BadKeySignature",`Bad key signature spec: '${t}'`);if(!e.acc)return[];const i={b:[2,.5,2.5,1,3,1.5,3.5],"#":[0,1.5,-.5,1,2.5,.5,2]}[e.acc],s=[];for(let t=0;tQ.getWidth(n,t)}),s)}}X.SOFTMAX_FACTOR=100,X.STEM_WIDTH=1.5,X.STEM_HEIGHT=35,X.STAVE_LINE_THICKNESS=1,X.RENDER_PRECISION_PLACES=3,X.RESOLUTION=L,X.MUSIC_FONT_STACK=[],X.NOTATION_FONT_SCALE=39,X.TABLATURE_FONT_SCALE=39,X.SLASH_NOTEHEAD_WIDTH=15,X.STAVE_LINE_DISTANCE=10,X.TEXT_HEIGHT_OFFSET_HACK=1,X.accidentalMap=Y,X.accidentalColumnsTable={1:{a:[1],b:[1]},2:{a:[1,2]},3:{a:[1,3,2],b:[1,2,1],second_on_bottom:[1,2,3]},4:{a:[1,3,4,2],b:[1,2,3,1],spaced_out_tetrachord:[1,2,1,2]},5:{a:[1,3,5,4,2],b:[1,2,4,3,1],spaced_out_pentachord:[1,2,3,2,1],very_spaced_out_pentachord:[1,2,1,2,1]},6:{a:[1,3,5,6,4,2],b:[1,2,4,5,3,1],spaced_out_hexachord:[1,3,2,1,3,2],very_spaced_out_hexachord:[1,2,1,2,1,2]}},X.unicode={sharp:String.fromCharCode(9839),flat:String.fromCharCode(9837),natural:String.fromCharCode(9838),triangle:String.fromCharCode(9651),"o-with-slash":String.fromCharCode(248),degrees:String.fromCharCode(176),circle:String.fromCharCode(9675)},X.validTypes={n:{name:"note"},r:{name:"rest"},h:{name:"harmonic"},m:{name:"muted"},s:{name:"slash"},g:{name:"ghost"},d:{name:"diamond"},x:{name:"x"},ci:{name:"circled"},cx:{name:"circle x"},sf:{name:"slashed"},sb:{name:"slashed backward"},sq:{name:"square"},tu:{name:"triangle up"},td:{name:"triangle down"}},X.TIME4_4={num_beats:4,beat_value:4,resolution:L};const V={"1/2":{common:{stem:!1,stem_offset:0,flag:!1,stem_up_extension:-X.STEM_HEIGHT,stem_down_extension:-X.STEM_HEIGHT,tabnote_stem_up_extension:-X.STEM_HEIGHT,tabnote_stem_down_extension:-X.STEM_HEIGHT,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restDoubleWhole",rest:!0,position:"B/5",dot_shiftY:.5},s:{getWidth:()=>X.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},1:{common:{stem:!1,stem_offset:0,flag:!1,stem_up_extension:-X.STEM_HEIGHT,stem_down_extension:-X.STEM_HEIGHT,tabnote_stem_up_extension:-X.STEM_HEIGHT,tabnote_stem_down_extension:-X.STEM_HEIGHT,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restWhole",leger_code_head:"restWholeLegerLine",rest:!0,position:"D/5",dot_shiftY:.5},s:{getWidth:()=>X.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},2:{common:{stem:!0,stem_offset:0,flag:!1,stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restHalf",leger_code_head:"restHalfLegerLine",stem:!1,rest:!0,position:"B/4",dot_shiftY:-.5},s:{getWidth:()=>X.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},4:{common:{stem:!0,stem_offset:0,flag:!1,stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restQuarter",stem:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1.5,line_below:1.5},s:{getWidth:()=>X.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},8:{common:{stem:!0,stem_offset:0,flag:!0,beam_count:1,stem_beam_extension:0,code_flag_upstem:"flag8thUp",code_flag_downstem:"flag8thDown",stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest8th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1,line_below:1},s:{getWidth:()=>X.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},16:{common:{beam_count:2,stem_beam_extension:0,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag16thUp",code_flag_downstem:"flag16thDown",stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest16th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1,line_below:2},s:{getWidth:()=>X.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},32:{common:{beam_count:3,stem_beam_extension:7.5,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag32ndUp",code_flag_downstem:"flag32ndDown",stem_up_extension:9,stem_down_extension:9,tabnote_stem_up_extension:9,tabnote_stem_down_extension:9,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest32nd",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-1.5,line_above:2,line_below:2},s:{getWidth:()=>X.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},64:{common:{beam_count:4,stem_beam_extension:15,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag64thUp",code_flag_downstem:"flag64thDown",stem_up_extension:13,stem_down_extension:13,tabnote_stem_up_extension:13,tabnote_stem_down_extension:13,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest64th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-1.5,line_above:2,line_below:3},s:{getWidth:()=>X.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},128:{common:{beam_count:5,stem_beam_extension:22.5,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag128thUp",code_flag_downstem:"flag128thDown",stem_up_extension:22,stem_down_extension:22,tabnote_stem_up_extension:22,tabnote_stem_down_extension:22,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest128th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-2.5,line_above:3,line_below:3},s:{getWidth:()=>X.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}}};var K,$;!function(t){t[t.MOVE=0]="MOVE",t[t.LINE=1]="LINE",t[t.QUADRATIC=2]="QUADRATIC",t[t.BEZIER=3]="BEZIER"}(K||(K={}));class q{constructor(t,e,i){this.point=-1,this.metrics=Q.loadMetrics(t,e,i),this.bbox=Q.getOutlineBoundingBox(this.metrics.outline,this.metrics.scale,this.metrics.x_shift,this.metrics.y_shift),i&&(this.point=Q.lookupFontMetric(this.metrics.font,i,e,"point",-1))}}class J{constructor(t,e,i,s){this.outline=t,this.originX=e,this.originY=i,this.scale=s,this.i=0,this.precision=1,this.precision=Math.pow(10,X.RENDER_PRECISION_PLACES)}done(){return this.i>=this.outline.length}next(){return Math.round(this.outline[this.i++]*this.precision/this.precision)}nextX(){return Math.round((this.originX+this.outline[this.i++]*this.scale)*this.precision)/this.precision}nextY(){return Math.round((this.originY-this.outline[this.i++]*this.scale)*this.precision)/this.precision}static parse(t){const e=[],i=t.split(" ");let s=0;for(;s{const e=t.getTickContext();a&&t.setStave(a),e.setXOffset(n)}))}}class tt{static get NUM_TONES(){return this.canonical_notes.length}static get roots(){return["c","d","e","f","g","a","b"]}static get root_values(){return[0,2,4,5,7,9,11]}static get root_indices(){return{c:0,d:1,e:2,f:3,g:4,a:5,b:6}}static get canonical_notes(){return["c","c#","d","d#","e","f","f#","g","g#","a","a#","b"]}static get diatonic_intervals(){return["unison","m2","M2","m3","M3","p4","dim5","p5","m6","M6","b7","M7","octave"]}static get diatonic_accidentals(){return{unison:{note:0,accidental:0},m2:{note:1,accidental:-1},M2:{note:1,accidental:0},m3:{note:2,accidental:-1},M3:{note:2,accidental:0},p4:{note:3,accidental:0},dim5:{note:4,accidental:-1},p5:{note:4,accidental:0},m6:{note:5,accidental:-1},M6:{note:5,accidental:0},b7:{note:6,accidental:-1},M7:{note:6,accidental:0},octave:{note:7,accidental:0}}}static get intervals(){return{u:0,unison:0,m2:1,b2:1,min2:1,S:1,H:1,2:2,M2:2,maj2:2,T:2,W:2,m3:3,b3:3,min3:3,M3:4,3:4,maj3:4,4:5,p4:5,"#4":6,b5:6,aug4:6,dim5:6,5:7,p5:7,"#5":8,b6:8,aug5:8,6:9,M6:9,maj6:9,b7:10,m7:10,min7:10,dom7:10,M7:11,maj7:11,8:12,octave:12}}static get scales(){return{major:[2,2,1,2,2,2,1],minor:[2,1,2,2,1,2,2],ionian:[2,2,1,2,2,2,1],dorian:[2,1,2,2,2,1,2],phyrgian:[1,2,2,2,1,2,2],lydian:[2,2,2,1,2,2,1],mixolydian:[2,2,1,2,2,1,2],aeolian:[2,1,2,2,1,2,2],locrian:[1,2,2,1,2,2,2]}}static get scaleTypes(){return{M:tt.scales.major,m:tt.scales.minor}}static get accidentals(){return["bb","b","n","#","##"]}static get noteValues(){return{c:{root_index:0,int_val:0},cn:{root_index:0,int_val:0},"c#":{root_index:0,int_val:1},"c##":{root_index:0,int_val:2},cb:{root_index:0,int_val:11},cbb:{root_index:0,int_val:10},d:{root_index:1,int_val:2},dn:{root_index:1,int_val:2},"d#":{root_index:1,int_val:3},"d##":{root_index:1,int_val:4},db:{root_index:1,int_val:1},dbb:{root_index:1,int_val:0},e:{root_index:2,int_val:4},en:{root_index:2,int_val:4},"e#":{root_index:2,int_val:5},"e##":{root_index:2,int_val:6},eb:{root_index:2,int_val:3},ebb:{root_index:2,int_val:2},f:{root_index:3,int_val:5},fn:{root_index:3,int_val:5},"f#":{root_index:3,int_val:6},"f##":{root_index:3,int_val:7},fb:{root_index:3,int_val:4},fbb:{root_index:3,int_val:3},g:{root_index:4,int_val:7},gn:{root_index:4,int_val:7},"g#":{root_index:4,int_val:8},"g##":{root_index:4,int_val:9},gb:{root_index:4,int_val:6},gbb:{root_index:4,int_val:5},a:{root_index:5,int_val:9},an:{root_index:5,int_val:9},"a#":{root_index:5,int_val:10},"a##":{root_index:5,int_val:11},ab:{root_index:5,int_val:8},abb:{root_index:5,int_val:7},b:{root_index:6,int_val:11},bn:{root_index:6,int_val:11},"b#":{root_index:6,int_val:0},"b##":{root_index:6,int_val:1},bb:{root_index:6,int_val:10},bbb:{root_index:6,int_val:9}}}isValidNoteValue(t){return t>=0&&t=0&&t3)throw new x("BadArguments","Invalid note name: "+t);const e=t.toLowerCase(),i=/^([cdefgab])(b|bb|n|#|##)?$/.exec(e);if(null!==i){return{root:i[1],accidental:i[2]}}throw new x("BadArguments","Invalid note name: "+t)}getKeyParts(t){if(!t||t.length<1)throw new x("BadArguments","Invalid key: "+t);const e=t.toLowerCase(),i=/^([cdefgab])(b|#)?(mel|harm|m|M)?$/.exec(e);if(null!==i){const t=i[1],e=i[2];let s=i[3];return s||(s="M"),{root:t,accidental:e,type:s}}throw new x("BadArguments",`Invalid key: ${t}`)}getNoteValue(t){const e=tt.noteValues[t];if(void 0===e)throw new x("BadArguments",`Invalid note name: ${t}`);return e.int_val}getIntervalValue(t){const e=tt.intervals[t];if(void 0===e)throw new x("BadArguments",`Invalid interval name: ${t}`);return e}getCanonicalNoteName(t){if(!this.isValidNoteValue(t))throw new x("BadArguments",`Invalid note value: ${t}`);return tt.canonical_notes[t]}getCanonicalIntervalName(t){if(!this.isValidIntervalValue(t))throw new x("BadArguments",`Invalid interval value: ${t}`);return tt.diatonic_intervals[t]}getRelativeNoteValue(t,e,i=1){if(1!==i&&-1!==i)throw new x("BadArguments",`Invalid direction: ${i}`);let s=(t+i*e)%tt.NUM_TONES;return s<0&&(s+=tt.NUM_TONES),s}getRelativeNoteName(t,e){const i=this.getNoteParts(t),s=this.getNoteValue(i.root);let a=e-s;if(Math.abs(a)>tt.NUM_TONES-3){let i=1;a>0&&(i=-1);const n=(e+1+(s+1))%tt.NUM_TONES*i;if(Math.abs(n)>2)throw new x("BadArguments",`Notes not related: ${t}, ${e})`);a=n}if(Math.abs(a)>2)throw new x("BadArguments",`Notes not related: ${t}, ${e})`);let n=i.root;if(a>0)for(let t=1;t<=a;++t)n+="#";else if(a<0)for(let t=-1;t>=a;--t)n+="b";return n}getScaleTones(t,e){const i=[t];let s=t;for(let a=0;ae.line-t.line));const c=[];let b,d=0;for(let t=0;td?e.shift:d,b=e.line}let m=0;for(let t=0;tc[i+t],n=t=>t.map(a),o=(t,e)=>{const[i,s]=n([t,e]).map((t=>t.line));return i-s},l=(...t)=>t.map(n).every((([t,e])=>!this.checkCollision(t,e))),r=s-i+1;let h,b,d=this.checkCollision(c[i],c[s])?"a":"b";switch(r){case 3:"a"===d&&.5===o(1,2)&&.5!==o(0,1)&&(d="second_on_bottom");break;case 4:l([0,2],[1,3])&&(d="spaced_out_tetrachord");break;case 5:"b"===d&&l([1,3])&&(d="spaced_out_pentachord",l([0,2],[2,4])&&(d="very_spaced_out_pentachord"));break;case 6:l([0,3],[1,4],[2,5])&&(d="spaced_out_hexachord"),l([0,2],[2,4],[1,3],[3,5])&&(d="very_spaced_out_hexachord")}if(r>=7){let e=2,i=!0;for(;!0===i;){i=!1;for(let t=0;t+eb?m:b}else for(h=t;h<=s;h++)b=X.accidentalColumnsTable[r][d][h-t],c[h].column=b,m=m>b?m:b;t=s}const g=[],_=[];for(let t=0;t<=m;t++)g[t]=0,_[t]=0;g[0]=d+a,_[0]=d+a,c.forEach((t=>{t.width>g[t.column]&&(g[t.column]=t.width)}));for(let t=1;t{let e=0;const i=p+t.numAcc;for(;p0?(s=e.flatLine||e.dblSharpLine?2.5:3,t.dblSharpLine&&(i-=.5)):(s=t.flatLine||t.dblSharpLine?2.5:3,e.dblSharpLine&&(i-=.5));const a=Math.abs(i){const e=new v(0,1);t.getTickables().forEach((t=>{if(t.shouldIgnoreTicks())return;const a=s[e.value()];a?a.push(t):(i.push(e.value()),s[e.value()]=[t]),e.add(t.getTicks())}))}));const n=new tt;e||(e="C");const o=n.createScaleMap(e),l={};i.forEach((t=>{const e=s[t],i=[],r=t=>{if(!d(t)||t.isRest()||t.shouldIgnoreTicks())return;const e=t;e.keys.forEach(((t,s)=>{const r=n.getNoteParts(t.split("/")[0]),h=t.split("/")[1],c=r.accidental||"n",b=r.root+c;l[r.root+h]||(l[r.root+h]=o[r.root]);const d=l[r.root+h]===b,m=i.indexOf(t)>-1;if(e.getModifiers().forEach(((t,i)=>{a(t)&&t.type==c&&t.getIndex()==s&&e.getModifiers().splice(i,1)})),!d||d&&m){l[r.root+h]=b;const a=new it(c);e.addModifier(a,s),i.push(t)}})),e.getModifiers().forEach((t=>{h(t)&&t.getGraceNotes().forEach(r)}))};e.forEach(r)}))}reset(){const t=this.render_options.font_scale;this.glyph=new Q(this.accidental.code,t),this.glyph.setOriginX(1),this.cautionary&&(this.parenLeft=new Q(X.accidentalCodes("{").code,t),this.parenRight=new Q(X.accidentalCodes("}").code,t),this.parenLeft.setOriginX(1),this.parenRight.setOriginX(1))}getWidth(){if(this.cautionary){const t=u(this.parenLeft),e=u(this.parenRight),i=t.getMetrics().width+e.getMetrics().width+this.render_options.parenLeftPadding+this.render_options.parenRightPadding;return this.glyph.getMetrics().width+i}return this.glyph.getMetrics().width}setNote(t){return u(t,"ArgumentError",`Bad note value: ${t}`),this.note=t,r(t)&&(this.render_options.font_scale=25,this.reset()),this}setAsCautionary(){return this.cautionary=!0,this.render_options.font_scale=28,this.reset(),this}draw(){const{type:t,position:e,index:i,cautionary:s,x_shift:a,y_shift:n,glyph:o,render_options:{parenLeftPadding:l,parenRightPadding:r}}=this,h=this.checkContext(),c=this.checkAttachedNote();this.setRendered();const b=c.getModifierStartXY(e,i);let d=b.x+a;const m=b.y+n;if(et("Rendering: ",t,d,m),s){const t=u(this.parenLeft),e=u(this.parenRight);e.render(h,d,m),d-=e.getMetrics().width,d-=r,d-=this.accidental.parenRightPaddingAdjustment,o.render(h,d,m),d-=o.getMetrics().width,d-=l,t.render(h,d,m)}else o.render(h,d,m)}}it.DEBUG=!1;class st extends O{constructor(t){super(),this.stem_up_y_offset=0,this.stem_down_y_offset=0,this.stem_up_y_base_offset=0,this.stem_down_y_base_offset=0,this.x_begin=(null==t?void 0:t.x_begin)||0,this.x_end=(null==t?void 0:t.x_end)||0,this.y_top=(null==t?void 0:t.y_top)||0,this.y_bottom=(null==t?void 0:t.y_bottom)||0,this.stem_extension=(null==t?void 0:t.stem_extension)||0,this.stem_direction=(null==t?void 0:t.stem_direction)||0,this.hide=(null==t?void 0:t.hide)||!1,this.isStemlet=(null==t?void 0:t.isStemlet)||!1,this.stemletHeight=(null==t?void 0:t.stemletHeight)||0,this.renderHeightAdjustment=0,this.setOptions(t)}static get CATEGORY(){return _.Stem}static get UP(){return 1}static get DOWN(){return-1}static get WIDTH(){return X.STEM_WIDTH}static get HEIGHT(){return X.STEM_HEIGHT}setOptions(t){this.stem_up_y_offset=(null==t?void 0:t.stem_up_y_offset)||0,this.stem_down_y_offset=(null==t?void 0:t.stem_down_y_offset)||0,this.stem_up_y_base_offset=(null==t?void 0:t.stem_up_y_base_offset)||0,this.stem_down_y_base_offset=(null==t?void 0:t.stem_down_y_base_offset)||0}setNoteHeadXBounds(t,e){return this.x_begin=t,this.x_end=e,this}setDirection(t){this.stem_direction=t}setExtension(t){this.stem_extension=t}getExtension(){return this.stem_extension}setYBounds(t,e){this.y_top=t,this.y_bottom=e}getHeight(){const t=this.stem_direction===st.UP?this.stem_up_y_offset:this.stem_down_y_offset;return(this.y_bottom-this.y_top+(st.HEIGHT-t+this.stem_extension))*this.stem_direction}getBoundingBox(){throw new x("NotImplemented","getBoundingBox() not implemented.")}getExtents(){const t=this.stem_direction===st.UP,e=[this.y_top,this.y_bottom],i=st.HEIGHT+this.stem_extension,s=(t?Math.min:Math.max)(...e),a=(t?Math.max:Math.min)(...e);return{topY:s+i*-this.stem_direction,baseY:a}}setVisibility(t){return this.hide=!t,this}setStemlet(t,e){return this.isStemlet=t,this.stemletHeight=e,this}adjustHeightForFlag(){this.renderHeightAdjustment=X.currentMusicFont().lookupMetric("stem.heightAdjustmentForFlag",-3)}adjustHeightForBeam(){this.renderHeightAdjustment=-st.WIDTH/2}draw(){if(this.setRendered(),this.hide)return;const t=this.checkContext();let e,i;const s=this.stem_direction;let a=0;s===st.DOWN?(e=this.x_begin,i=this.y_top+this.stem_down_y_offset,a=this.stem_down_y_base_offset):(e=this.x_end,i=this.y_bottom-this.stem_up_y_offset,a=this.stem_up_y_base_offset);const n=this.getHeight();!function(...t){st.DEBUG&&f("Vex.Flow.Stem",t)}("Rendering stem - ","Top Y: ",this.y_top,"Bottom Y: ",this.y_bottom);const o=this.isStemlet?n-this.stemletHeight*this.stem_direction:0;t.save(),t.openGroup("stem",this.getAttribute("id"),{pointerBBox:!0}),this.applyStyle(t),t.beginPath(),t.setLineWidth(st.WIDTH),t.moveTo(e,i-o+a),t.lineTo(e,i-n-this.renderHeightAdjustment*s),t.stroke(),this.restoreStyle(t),t.closeGroup(),t.restore()}}function at(...t){lt.DEBUG&&f("Vex.Flow.TextFormatter",t)}st.DEBUG=!1;const nt={},ot={};class lt{constructor(t){this.family="",this.size=14,this.resolution=1e3,this.glyphs={},this.serifs=!1,this.monospaced=!1,this.italic=!1,this.bold=!1,this.superscriptOffset=0,this.subscriptOffset=0,this.maxSizeGlyph="H",this.cacheKey="",this.updateParams(t)}static getFontFamilies(){const t=[];for(const e in ot){const i=ot[e];t.push(Object.assign({},i))}return t}static create(t={}){at("create: ",t),t.family||(t.family=M.SANS_SERIF);const e=[],i=t.family.split(/\s*,\s*/);for(const t of i){for(const i in ot)i.startsWith(t)&&e.push(ot[i]);if(e.length>0)break}let s;if(0===e.length)s=new lt(Object.values(ot)[0]);else if(1===e.length)s=new lt(e[0]);else{const i=M.isBold(t.weight),a=M.isItalic(t.style),n=e.find((t=>t.bold===i&&t.italic===a));if(n)s=new lt(n);else{const t=e.find((t=>t.italic===a||t.bold===i));s=new lt(t||e[0])}}const a=t.size;if(void 0!==a){const t=M.convertSizeToPointValue(a);s.setFontSize(t)}return s}static getInfo(t){return ot[t]}static registerInfo(t,e=!1){at("registerInfo: ",t,e);const i=t.family;(void 0===ot[i]||e)&&(ot[i]=t)}updateParams(t){t.family&&(this.family=t.family),t.resolution&&(this.resolution=t.resolution),t.glyphs&&(this.glyphs=t.glyphs),t.serifs&&(this.serifs=t.serifs),t.monospaced&&(this.monospaced=t.monospaced),t.italic&&(this.italic=t.italic),t.bold&&(this.bold=t.bold),t.maxSizeGlyph&&(this.maxSizeGlyph=t.maxSizeGlyph),t.superscriptOffset&&(this.superscriptOffset=t.superscriptOffset),t.subscriptOffset&&(this.subscriptOffset=t.subscriptOffset),this.updateCacheKey()}updateCacheKey(){const t=this.family.replace(/\s+/g,"_"),e=this.size,i=this.bold?k.BOLD:k.NORMAL,s=this.italic?F.ITALIC:F.NORMAL;this.cacheKey=`${t}%${e}%${i}%${s}`}getGlyphMetrics(t){return this.glyphs[t]?this.glyphs[t]:this.glyphs[this.maxSizeGlyph]}get maxHeight(){return this.getGlyphMetrics(this.maxSizeGlyph).ha/this.resolution*this.fontSizeInPixels}getWidthForCharacterInEm(t){var e;const i=this.getGlyphMetrics(t);if(i){return(null!==(e=i.advanceWidth)&&void 0!==e?e:0)/this.resolution}return.65}getWidthForTextInEm(t){const e=this.cacheKey;let i=nt[e];void 0===i&&(i={},nt[e]=i);let s=i[t];if(void 0===s){s=0;for(let e=0;et>e?t:e)),r+=(this.text_line+1)*X.STAVE_LINE_DISTANCE+o,b&&i===st.DOWN&&(r=Math.max(r,h.topY+o+c*this.text_line))}else if(this.verticalJustification===ht.CENTER){const t=e.getYForTopText(this.text_line)-1;r=t+(d.getYForBottomText(this.text_line)-t)/2+o/2}else if(this.verticalJustification===ht.TOP)r=e.getYs()[0]-(this.text_line+1)*X.STAVE_LINE_DISTANCE,b&&i===st.UP&&(c=h.topY=1}function _t(t,e){return gt(t,e)?e===bt?Math.ceil:Math.floor:Math.round}const xt=t=>d(t)||r(t);class pt extends Z{constructor(t){super(),this.type=t,this.position=dt,this.render_options={font_scale:38},this.reset()}static get CATEGORY(){return _.Articulation}static format(t,e){if(!t||0===t.length)return!1;let i=0;const s=(t,e,i)=>mt(_t(e,i),u(t.glyph.getMetrics().height)/10+.5);t.forEach((t=>{const a=t.checkAttachedNote();i=Math.max(a.getGlyph().getWidth(),i);let n=5;const o=a.hasStem()?a.getStemDirection():st.UP;let l=0;if(m(a)){const t=a.getStem();t&&(l=Math.abs(t.getHeight())/X.STAVE_LINE_DISTANCE)}const r=a.getStave();if(r&&(n=r.getNumLines()),t.getPosition()===bt){let i=a.getLineNumber(!0);o===st.UP&&(i+=l);let r=s(t,e.top_text_line,bt);const h=i+e.top_text_line+.5;!t.articulation.between_lines&&ht.getWidth())).reduce(((t,e)=>Math.max(e,t))),n=Math.min(Math.max(a-i,0),Math.max(a-(e.left_shift+e.right_shift),0));return e.left_shift+=n/2,e.right_shift+=n/2,!0}static easyScoreHook({articulations:t},e,i){if(!t)return;const s={staccato:"a.",tenuto:"a-",accent:"a>"};t.split(",").map((t=>t.trim().split("."))).map((([t,e])=>{const a={type:s[t]};return e&&(a.position=Z.PositionString[e]),i.getFactory().Articulation(a)})).map((t=>e.addModifier(t,0)))}reset(){this.articulation=X.articulationCodes(this.type);const t=u(this.articulation,"ArgumentError",`Articulation not found: ${this.type}`),e=(this.position===bt?t.aboveCode:t.belowCode)||t.code;this.glyph=new Q(null!=e?e:"",this.render_options.font_scale),this.setWidth(u(this.glyph.getMetrics().width))}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=this.checkIndex(),{position:s,glyph:a,text_line:n}=this,o=this.articulation.between_lines,l=e.checkStave(),r=l.getSpacingBetweenLines(),h=g(e),{x:c}=e.getModifierStartXY(s,i),b=!o||h,d=function(t,e){const i=e===bt&&t.getStemDirection()===st.UP||e===dt&&t.getStemDirection()===st.DOWN;return xt(t)?t.hasStem()&&i?.5:1:t.hasStem()&&i?1:0}(e,s),m=X.currentMusicFont().lookupMetric(`articulation.${a.getCode()}.padding`,0);let _={[bt]:()=>{a.setOrigin(.5,1);const t=function(t,e){const i=t.getStemDirection(),{topY:s,baseY:a}=t.getStemExtents();if(xt(t))return t.hasStem()?i===st.UP?s:a:Math.min(...t.getYs());if(g(t))return t.hasStem()&&i===st.UP?s:t.checkStave().getYForTopText(e);throw new x("UnknownCategory","Only can get the top and bottom ys of stavenotes and tabnotes")}(e,n)-(n+d)*r;return b?Math.min(l.getYForTopText(pt.INITIAL_OFFSET),t):t},[dt]:()=>{a.setOrigin(.5,0);const t=function(t,e){const i=t.getStemDirection(),{topY:s,baseY:a}=t.getStemExtents();if(xt(t))return t.hasStem()?i===st.UP?a:s:Math.max(...t.getYs());if(g(t))return t.hasStem()?i===st.UP?t.checkStave().getYForBottomText(e):s:t.checkStave().getYForBottomText(e);throw new x("UnknownCategory","Only can get the top and bottom ys of stavenotes and tabnotes")}(e,n)+(n+d)*r;return b?Math.max(l.getYForBottomText(pt.INITIAL_OFFSET),t):t}}[s]();if(!h){const t=s===bt?-1:1,n=e.getKeyProps()[i].line,l=(e.getYs()[i]-_)/r+Number(n),h=function(t,e,i,s){const a=mt(_t(e,i),e);if(t&>(a,i)&&a%1==0)return a+.5*-s;return a}(o,l,s,t);gt(h,s)&&a.setOrigin(.5,.5),_+=Math.abs(h-l)*r*t+m*t}!function(...t){pt.DEBUG&&f("Vex.Flow.Articulation",t)}(`Rendering articulation at (x: ${c}, y: ${_})`),a.render(t,c,_)}}pt.DEBUG=!1,pt.INITIAL_OFFSET=-.5;class ut{static get CATEGORY(){return _.RenderContext}set font(t){this.setFont(t)}get font(){return this.getFont()}setRawFont(t){return this.setFont(t),this}}function ft(t,e,i,s="#F55"){t.save(),t.setFillStyle(s),t.beginPath(),t.arc(e,i,3,0,2*Math.PI,!1),t.closePath(),t.fill(),t.restore()}class yt extends O{constructor(){super(),this._preFormatted=!1,this._postFormatted=!1,this.ticks=new v(0,1),this.intrinsicTicks=0,this.tickMultiplier=new v(1,1),this.width=0,this.x_shift=0,this.modifiers=[],this.tupletStack=[],this.align_center=!1,this.center_x_shift=0,this.ignore_ticks=!1,this.formatterMetrics={freedom:{left:0,right:0},duration:"",iterations:0,space:{used:0,mean:0,deviation:0}}}static get CATEGORY(){return _.Tickable}reset(){return this}getTicks(){return this.ticks}shouldIgnoreTicks(){return this.ignore_ticks}setIgnoreTicks(t){return this.ignore_ticks=t,this}setWidth(t){this.width=t}getWidth(){if(!this._preFormatted)throw new x("UnformattedNote","Can't call GetWidth on an unformatted note.");return this.width+(this.modifierContext?this.modifierContext.getWidth():0)}setXShift(t){return this.x_shift=t,this}getXShift(){return this.x_shift}getX(){return this.checkTickContext("Can't getX() without a TickContext.").getX()+this.x_shift}getFormatterMetrics(){return this.formatterMetrics}getCenterXShift(){return this.isCenterAligned()?this.center_x_shift:0}setCenterXShift(t){return this.center_x_shift=t,this}isCenterAligned(){return this.align_center}setCenterAlignment(t){return this.align_center=t,this}getVoice(){return u(this.voice,"NoVoice","Tickable has no voice.")}setVoice(t){this.voice=t}getTuplet(){return this.tuplet}getTupletStack(){return this.tupletStack}resetTuplet(t){let e,i;if(t){const s=this.tupletStack.indexOf(t);return-1!==s&&(this.tupletStack.splice(s,1),e=t.getNoteCount(),i=t.getNotesOccupied(),this.applyTickMultiplier(e,i)),this}for(;this.tupletStack.length;)e=(t=this.tupletStack.pop()).getNoteCount(),i=t.getNotesOccupied(),this.applyTickMultiplier(e,i);return this}setTuplet(t){if(t){this.tupletStack.push(t);const e=t.getNoteCount(),i=t.getNotesOccupied();this.applyTickMultiplier(i,e)}return this.tuplet=t,this}addToModifierContext(t){this.modifierContext=t;for(let t=0;tX.getGlyphProps(this.duration,t))),this.playNote=void 0,this.ignore_ticks=!1,this.width=0,this.leftDisplacedHeadPx=0,this.rightDisplacedHeadPx=0,this.x_shift=0,this.ys=[],t.align_center&&this.setCenterAlignment(t.align_center),this.render_options={annotation_spacing:5,glyph_font_scale:1,stroke_px:1,scale:1,font:"",y_shift:0}}static get CATEGORY(){return _.Note}static plotMetrics(t,e,i){const s=e.getMetrics(),a=e.getAbsoluteX()-s.modLeftPx-s.leftDisplacedHeadPx,n=e.getAbsoluteX()-s.leftDisplacedHeadPx,o=e.getAbsoluteX(),l=e.getAbsoluteX()+s.notePx,r=e.getAbsoluteX()+s.notePx+s.rightDisplacedHeadPx,h=e.getAbsoluteX()+s.notePx+s.rightDisplacedHeadPx+s.modRightPx,c=h+(e.getFormatterMetrics().freedom.right||0),b=h-a;t.save(),t.setFont(M.SANS_SERIF,8),t.fillText(Math.round(b)+"px",a+e.getXShift(),i);const d=i+7;function m(i,s,a,n=d){t.beginPath(),t.setStrokeStyle(a),t.setFillStyle(a),t.setLineWidth(3),t.moveTo(i+e.getXShift(),n),t.lineTo(s+e.getXShift(),n),t.stroke()}m(a,n,"red"),m(n,o,"#999"),m(o,l,"green"),m(l,r,"#999"),m(r,h,"red"),m(h,c,"#DD0"),m(a-e.getXShift(),a,"#BBB"),ft(t,o+e.getXShift(),d,"blue");const g=e.getFormatterMetrics();if(g.iterations>0){const s=g.space.deviation,a=s>=0?"+":"";t.setFillStyle("red"),t.fillText(a+Math.round(s),o+e.getXShift(),i-10)}t.restore()}static parseDuration(t){if(!t)return;const e=/(\d*\/?\d+|[a-z])(d*)([nrhms]|$)/.exec(t);if(!e)return;return{duration:e[1],dots:e[2].length,type:e[3]||"n"}}static parseNoteStruct(t){const e=St.parseDuration(t.duration);if(!e)return;let i=t.type;if(i&&!X.validTypes[i])return;const s=[];i||(i=e.type||"n",void 0!==t.keys&&t.keys.forEach(((t,e)=>{const a=t.split("/");s[e]=a&&3===a.length?a[2]:i})));let a=X.durationToTicks(e.duration);if(!a)return;const n=t.dots?t.dots:e.dots;if("number"!=typeof n)return;let o=a;for(let t=0;t0}hasStem(){return!1}getNoteType(){return this.noteType}getBeam(){return this.beam}checkBeam(){return u(this.beam,"NoBeam","No beam attached to instance")}hasBeam(){return null!=this.beam}setBeam(t){return this.beam=t,this}addModifier(t,e=0){const i="Note.addModifier(modifier: Modifier, index: number=0)";if("string"==typeof e&&(e=parseInt(e),console.warn(i+" expected a number for `index`, but received a string.")),"object"!=typeof t||"number"!=typeof e)throw new x("WrongParams","Incorrect call signature. Use "+i+" instead.");return t.setNote(this),t.setIndex(e),super.addModifier(t),this}getModifiersByType(t){return this.modifiers.filter((e=>e.getCategory()===t))}getModifierStartXY(t,e,i){if(!this.preFormatted)throw new x("UnformattedNote","Can't call GetModifierStartXY on an unformatted note");return{x:this.getAbsoluteX(),y:this.ys[0]}}getRightParenthesisPx(t){return this.getKeyProps()[t].displaced?this.getRightDisplacedHeadPx():0}getLeftParenthesisPx(t){return this.getKeyProps()[t].displaced?this.getLeftDisplacedHeadPx()-this.x_shift:-this.x_shift}getFirstDotPx(){let t=this.getRightDisplacedHeadPx();return 0!==this.checkModifierContext().getMembers("Parenthesis").length&&(t+=X.currentMusicFont().lookupMetric("parenthesis.default.width")),t}getMetrics(){if(!this.preFormatted)throw new x("UnformattedNote","Can't call getMetrics on an unformatted note.");const t=this.modifierContext?this.modifierContext.getState().left_shift:0,e=this.modifierContext?this.modifierContext.getState().right_shift:0,i=this.getWidth();return{width:i,glyphWidth:this.getGlyphWidth(),notePx:i-t-e-this.leftDisplacedHeadPx-this.rightDisplacedHeadPx,modLeftPx:t,modRightPx:e,leftDisplacedHeadPx:this.leftDisplacedHeadPx,rightDisplacedHeadPx:this.rightDisplacedHeadPx,glyphPx:0}}getAbsoluteX(){let t=this.checkTickContext("Can't getAbsoluteX() without a TickContext.").getX();return this.stave&&(t+=this.stave.getNoteStartX()+X.currentMusicFont().lookupMetric("stave.padding")),this.isCenterAligned()&&(t+=this.getCenterXShift()),t}getStemDirection(){throw new x("NoStem","No stem attached to this note.")}getStemExtents(){throw new x("NoStem","No stem attached to this note.")}getTieRightX(){let t=this.getAbsoluteX();return t+=this.glyph.getWidth()/2,t+=-this.width/2+this.width+2,t}getTieLeftX(){let t=this.getAbsoluteX();return t+=this.glyph.getWidth()/2,t-=this.width/2+2,t}getKeys(){return this.keys}getKeyProps(){return this.keyProps}}var Tt,wt,vt,Dt,Ct,Et;!function(t){t[t.CENTER=0]="CENTER",t[t.LEFT=1]="LEFT",t[t.RIGHT=2]="RIGHT",t[t.ABOVE=3]="ABOVE",t[t.BELOW=4]="BELOW",t[t.BEGIN=5]="BEGIN",t[t.END=6]="END"}(Tt||(Tt={}));class kt extends O{constructor(){super(),this.width=0,this.x=0,this.padding=10,this.position=Tt.ABOVE}static get CATEGORY(){return _.StaveModifier}static get Position(){return Tt}getPosition(){return this.position}setPosition(t){return this.position=t,this}getStave(){return this.stave}checkStave(){return u(this.stave,"NoStave","No stave attached to instance.")}setStave(t){return this.stave=t,this}getWidth(){return this.width}setWidth(t){return this.width=t,this}getX(){return this.x}setX(t){return this.x=t,this}placeGlyphOnLine(t,e,i,s=0){t.setYShift(e.getYForLine(null!=i?i:0)-e.getYForGlyphs()+s)}getPadding(t){return void 0!==t&&t<2?0:this.padding}setPadding(t){return this.padding=t,this}setLayoutMetrics(t){return this.layoutMetrics=t,this}getLayoutMetrics(){return this.layoutMetrics}draw(...t){}}!function(t){t[t.SINGLE=1]="SINGLE",t[t.DOUBLE=2]="DOUBLE",t[t.END=3]="END",t[t.REPEAT_BEGIN=4]="REPEAT_BEGIN",t[t.REPEAT_END=5]="REPEAT_END",t[t.REPEAT_BOTH=6]="REPEAT_BOTH",t[t.NONE=7]="NONE"}(wt||(wt={}));class Ft extends kt{constructor(t){super(),this.thickness=X.STAVE_LINE_THICKNESS;const e=wt;this.widths={},this.widths[e.SINGLE]=5,this.widths[e.DOUBLE]=5,this.widths[e.END]=5,this.widths[e.REPEAT_BEGIN]=5,this.widths[e.REPEAT_END]=5,this.widths[e.REPEAT_BOTH]=5,this.widths[e.NONE]=5,this.paddings={},this.paddings[e.SINGLE]=0,this.paddings[e.DOUBLE]=0,this.paddings[e.END]=0,this.paddings[e.REPEAT_BEGIN]=15,this.paddings[e.REPEAT_END]=15,this.paddings[e.REPEAT_BOTH]=15,this.paddings[e.NONE]=0,this.layoutMetricsMap={},this.layoutMetricsMap[e.SINGLE]={xMin:0,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.DOUBLE]={xMin:-3,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.END]={xMin:-5,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.REPEAT_END]={xMin:-10,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.REPEAT_BEGIN]={xMin:-2,xMax:10,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.REPEAT_BOTH]={xMin:-10,xMax:10,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.NONE]={xMin:0,xMax:0,paddingLeft:5,paddingRight:5},this.setPosition(Tt.BEGIN),this.setType(t)}static get CATEGORY(){return _.Barline}static get type(){return wt}static get typeString(){return{single:wt.SINGLE,double:wt.DOUBLE,end:wt.END,repeatBegin:wt.REPEAT_BEGIN,repeatEnd:wt.REPEAT_END,repeatBoth:wt.REPEAT_BOTH,none:wt.NONE}}getType(){return this.type}setType(t){return this.type="string"==typeof t?Ft.typeString[t]:t,this.setWidth(this.widths[this.type]),this.setPadding(this.paddings[this.type]),this.setLayoutMetrics(this.layoutMetricsMap[this.type]),this}draw(t){switch(t.checkContext(),this.setRendered(),this.type){case wt.SINGLE:this.drawVerticalBar(t,this.x,!1);break;case wt.DOUBLE:this.drawVerticalBar(t,this.x,!0);break;case wt.END:this.drawVerticalEndBar(t,this.x);break;case wt.REPEAT_BEGIN:this.drawRepeatBar(t,this.x,!0),t.getX()!==this.x&&this.drawVerticalBar(t,t.getX());break;case wt.REPEAT_END:this.drawRepeatBar(t,this.x,!1);break;case wt.REPEAT_BOTH:this.drawRepeatBar(t,this.x,!1),this.drawRepeatBar(t,this.x,!0)}}drawVerticalBar(t,e,i){const s=t.checkContext(),a=t.getTopLineTopY(),n=t.getBottomLineBottomY();i&&s.fillRect(e-3,a,1,n-a),s.fillRect(e,a,1,n-a)}drawVerticalEndBar(t,e){const i=t.checkContext(),s=t.getTopLineTopY(),a=t.getBottomLineBottomY();i.fillRect(e-5,s,1,a-s),i.fillRect(e-2,s,3,a-s)}drawRepeatBar(t,e,i){const s=t.checkContext(),a=t.getTopLineTopY(),n=t.getBottomLineBottomY();let o=3;i||(o=-5),s.fillRect(e+o,a,1,n-a),s.fillRect(e-2,a,3,n-a);i?o+=4:o-=4;const l=e+o+1;let r=(t.getNumLines()-1)*t.getSpacingBetweenLines();r=r/2-t.getSpacingBetweenLines()/2;let h=a+r+1;s.beginPath(),s.arc(l,h,2,0,2*Math.PI,!1),s.fill(),h+=t.getSpacingBetweenLines(),s.beginPath(),s.arc(l,h,2,0,2*Math.PI,!1),s.fill()}}class Nt extends St{constructor(t=wt.SINGLE){super({duration:"b"}),this.metrics={widths:{}};const e=wt;this.metrics.widths={[e.SINGLE]:8,[e.DOUBLE]:12,[e.END]:15,[e.REPEAT_BEGIN]:14,[e.REPEAT_END]:14,[e.REPEAT_BOTH]:18,[e.NONE]:0},this.ignore_ticks=!0,this.setType(t)}static get CATEGORY(){return _.BarNote}getType(){return this.type}setType(t){return this.type="string"==typeof t?Ft.typeString[t]:t,this.setWidth(this.metrics.widths[this.type]),this}addToModifierContext(t){return this}preFormat(){return this.preFormatted=!0,this}draw(){const t=this.checkContext();!function(...t){Nt.DEBUG&&f("Vex.Flow.BarNote",t)}("Rendering bar line at: ",this.getAbsoluteX()),this.applyStyle(t);const e=new Ft(this.type);e.setX(this.getAbsoluteX()),e.draw(this.checkStave()),this.restoreStyle(t),this.setRendered()}}Nt.DEBUG=!1;class At extends Z{constructor(t,e=!1,i){super(),this.text=t,this.x_shift=0,this.release=e,this.tap="",this.resetFont(),this.render_options={line_width:1.5,line_style:"#777777",bend_width:8,release_width:8},i?this.phrase=i:(this.phrase=[{type:At.UP,text:this.text}],this.release&&this.phrase.push({type:At.DOWN,text:""})),this.updateWidth()}static get CATEGORY(){return _.Bend}static get UP(){return 0}static get DOWN(){return 1}static format(t,e){if(!t||0===t.length)return!1;let i=0;for(let s=0;st{const n=t+s,o=i;e.save(),e.beginPath(),e.setLineWidth(this.render_options.line_width),e.setStrokeStyle(this.render_options.line_style),e.setFillStyle(this.render_options.line_style),e.moveTo(t,i),e.quadraticCurveTo(n,o,t+s,a),e.stroke(),e.restore()},c=(t,i,s,a)=>{e.save(),e.beginPath(),e.setLineWidth(this.render_options.line_width),e.setStrokeStyle(this.render_options.line_style),e.setFillStyle(this.render_options.line_style),e.moveTo(t,a),e.quadraticCurveTo(t+s,a,t+s,i),e.stroke(),e.restore()},b=(t,i,s)=>{const a=i+4*s;e.beginPath(),e.moveTo(t,i),e.lineTo(t-4,a),e.lineTo(t+4,a),e.closePath(),e.fill()},d=(t,i)=>{e.save(),e.setFont(this.textFont);const s=t-e.measureText(i).width/2;e.fillText(i,s,r),e.restore()};let m,g=0,_=0;if(null===(t=this.tap)||void 0===t?void 0:t.length){d(i.getModifierStartXY(Z.Position.CENTER,this.index).x,this.tap)}for(let t=0;t0){const e=h.symbolBlocks[t-1];Mt.isSuperscript(e)||(a=s)}n&&a>0&&(x=!0,e.xShift=e.xShift+(a-s),s=a,a=0,h.setEnableKerning(!1)),i||n||(a=0),e.vAlign=x,s+=e.width,g=s}if(h.updateKerningAdjustments(),h.updateOverBarAdjustments(),h.getVertical()===Dt.TOP?(h.setTextLine(e.top_text_line),e.top_text_line+=_):(h.setTextLine(e.text_line+1),e.text_line+=_+1),h.getReportWidth()&&m(d)){const t=d.getGlyph().getWidth();h.getHorizontal()===vt.LEFT?(l=Math.max(t,l),n=Math.max(n,g)+Mt.minPadding):h.getHorizontal()===vt.RIGHT?(r=Math.max(t,r),o=Math.max(o,g)):(n=Math.max(n,g/2)+Mt.minPadding,o=Math.max(o,g/2),l=Math.max(t/2,l),r=Math.max(t/2,r))}s=0}const h=Math.min(Math.max(o-r,0),Math.max(o-e.right_shift,0)),c=Math.min(Math.max(n-l,0),Math.max(n-e.left_shift,0));return e.left_shift+=c,e.right_shift+=h,!0}static get TEXT_FONT(){let t="Roboto Slab, Times, serif";return"Petaluma"===X.currentMusicFont().getName()&&(t="PetalumaScript, Arial, sans-serif"),{family:t,size:12,weight:k.NORMAL,style:F.NORMAL}}get superscriptOffset(){return Mt.superscriptOffset*this.textFormatter.fontSizeInPixels}get subscriptOffset(){return Mt.subscriptOffset*this.textFormatter.fontSizeInPixels}setReportWidth(t){return this.reportWidth=t,this}getReportWidth(){return this.reportWidth}updateOverBarAdjustments(){const t=this.symbolBlocks.findIndex((({symbolType:t,glyph:e})=>t===Ct.GLYPH&&void 0!==e&&"csymDiagonalArrangementSlash"===e.code));if(t<0)return;const e=this.symbolBlocks[t].width/4,i=.25*this.textFormatter.fontSizeInPixels;let s=0;for(;s0?this.symbolBlocks[t-1]:void 0;let s=0;e.symbolType===Ct.GLYPH&&void 0!==e.glyph&&e.glyph.code===Mt.glyphs.over.code&&(s+=e.glyph.metrics.x_shift),void 0!==i&&i.symbolType===Ct.GLYPH&&void 0!==i.glyph&&i.glyph.code===Mt.glyphs.over.code&&(s+=i.glyph.metrics.x_shift);let a=!1,n=!1;void 0!==i&&i.symbolType===Ct.TEXT&&(a=Mt.upperKerningText.some((t=>t===i.text[i.text.length-1])),n=Mt.lowerKerningText.some((t=>t===i.text[i.text.length-1])));const o=Mt.kerningOffset*this.textFormatter.fontSizeInPixels;return a&&e.symbolModifier===Et.SUPERSCRIPT&&(s+=o),n&&e.symbolType===Ct.TEXT&&(e.text[0]>="a"&&e.text[0]<="z"&&(s+=o/2),Mt.upperKerningText.some((t=>t===(null==i?void 0:i.text[i.text.length-1])))&&(s+=o/2)),s}getSymbolBlock(t={}){var e,i,s;const a=null!==(e=t.symbolType)&&void 0!==e?e:Ct.TEXT,n={text:null!==(i=t.text)&&void 0!==i?i:"",symbolType:a,symbolModifier:null!==(s=t.symbolModifier)&&void 0!==s?s:Et.NONE,xShift:0,yShift:0,vAlign:!1,width:0};if(a===Ct.GLYPH&&"string"==typeof t.glyph){const e=Mt.glyphs[t.glyph],i=20;n.glyph=new Q(e.code,i,{category:"chordSymbol"})}else a===Ct.TEXT?n.width=this.textFormatter.getWidthForTextInEm(n.text):a===Ct.LINE&&(n.width=t.width);return n}addSymbolBlock(t){return this.symbolBlocks.push(this.getSymbolBlock(t)),this}addText(t,e={}){const i=Ct.TEXT;return this.addSymbolBlock(Object.assign(Object.assign({},e),{text:t,symbolType:i}))}addTextSuperscript(t){const e=Ct.TEXT,i=Et.SUPERSCRIPT;return this.addSymbolBlock({text:t,symbolType:e,symbolModifier:i})}addTextSubscript(t){const e=Ct.TEXT,i=Et.SUBSCRIPT;return this.addSymbolBlock({text:t,symbolType:e,symbolModifier:i})}addGlyphSuperscript(t){const e=Ct.GLYPH,i=Et.SUPERSCRIPT;return this.addSymbolBlock({glyph:t,symbolType:e,symbolModifier:i})}addGlyph(t,e={}){const i=Ct.GLYPH;return this.addSymbolBlock(Object.assign(Object.assign({},e),{glyph:t,symbolType:i}))}addGlyphOrText(t,e={}){let i="";for(let s=0;s0&&(this.addText(i,e),i=""),this.addGlyph(a,e)):i+=a}return i.length>0&&this.addText(i,e),this}addLine(t,e={}){const i=Ct.LINE;return this.addSymbolBlock(Object.assign(Object.assign({},e),{symbolType:i,width:t}))}setFont(t,e,i,s){return super.setFont(t,e,i,s),this.textFormatter=lt.create(this.textFont),this}setEnableKerning(t){return this.useKerning=t,this}setVertical(t){return this.vertical="string"==typeof t?Mt.VerticalJustifyString[t]:t,this}getVertical(){return this.vertical}setHorizontal(t){return this.horizontal="string"==typeof t?Mt.HorizontalJustifyString[t]:t,this}getHorizontal(){return this.horizontal}getWidth(){let t=0;return this.symbolBlocks.forEach((e=>{t+=e.vAlign?0:e.width})),t}getYOffsetForText(t){var e;let i=0,s=0;for(s=0;s0?i/a*-1:0}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered(),t.save(),t.openGroup("chordsymbol",this.getAttribute("id"));const i=e.getModifierStartXY(Z.Position.ABOVE,this.index);let s;t.setFont(this.textFont);const a=e.hasStem(),n=e.checkStave();if(this.vertical===Dt.BOTTOM){if(s=n.getYForBottomText(this.text_line+X.TEXT_HEIGHT_OFFSET_HACK),a){const t=e.checkStem().getExtents(),i=n.getSpacingBetweenLines(),a=1===e.getStemDirection()?t.baseY:t.topY;s=Math.max(s,a+i*(this.text_line+2))}}else if(s=Math.min(n.getYForTopText(this.text_line),e.getYs()[0]-10),a){const t=e.checkStem().getExtents(),i=n.getSpacingBetweenLines();s=Math.min(s,t.topY-5-i*this.text_line)}let o=i.x;o=this.horizontal===vt.LEFT?i.x:this.horizontal===vt.RIGHT?i.x+this.getWidth():this.horizontal===vt.CENTER?i.x-this.getWidth()/2:e.getStemX()-this.getWidth()/2,Pt("Rendering ChordSymbol: ",this.textFormatter,o,s),this.symbolBlocks.forEach((e=>{const i=Mt.isSuperscript(e),a=Mt.isSubscript(e);let n=s;if(Pt("shift was ",e.xShift,e.yShift),Pt("curY pre sub ",n),i&&(n+=this.superscriptOffset),a&&(n+=this.subscriptOffset),Pt("curY sup/sub ",n),e.symbolType===Ct.TEXT){if((i||a)&&(t.save(),this.textFont)){const{family:e,size:i,weight:s,style:a}=this.textFont,n=M.scaleSize(i,Mt.superSubRatio);t.setFont(e,n,s,a)}Pt("Rendering Text: ",e.text,o+e.xShift,n+e.yShift),t.fillText(e.text,o+e.xShift,n+e.yShift),(i||a)&&t.restore()}else e.symbolType===Ct.GLYPH&&e.glyph?(n+=e.yShift,Pt("Rendering Glyph: ",e.glyph.code,o+e.xShift,n),e.glyph.render(t,o+e.xShift,n)):e.symbolType===Ct.LINE&&(Pt("Rendering Line : ",e.width,o,n),t.beginPath(),t.setLineWidth(1),t.moveTo(o,s),t.lineTo(o+e.width,n),t.stroke());o+=e.width,e.vAlign&&(o+=e.xShift)})),t.closeGroup(),t.restore()}}Mt.DEBUG=!1,Mt.HorizontalJustify=vt,Mt.HorizontalJustifyString={left:vt.LEFT,right:vt.RIGHT,center:vt.CENTER,centerStem:vt.CENTER_STEM},Mt.VerticalJustify=Dt,Mt.VerticalJustifyString={top:Dt.TOP,above:Dt.TOP,below:Dt.BOTTOM,bottom:Dt.BOTTOM},Mt.glyphs={diminished:{code:"csymDiminished"},dim:{code:"csymDiminished"},halfDiminished:{code:"csymHalfDiminished"},"+":{code:"csymAugmented"},augmented:{code:"csymAugmented"},majorSeventh:{code:"csymMajorSeventh"},minor:{code:"csymMinor"},"-":{code:"csymMinor"},"(":{code:"csymParensLeftTall"},leftParen:{code:"csymParensLeftTall"},")":{code:"csymParensRightTall"},rightParen:{code:"csymParensRightTall"},leftBracket:{code:"csymBracketLeftTall"},rightBracket:{code:"csymBracketRightTall"},leftParenTall:{code:"csymParensLeftVeryTall"},rightParenTall:{code:"csymParensRightVeryTall"},"/":{code:"csymDiagonalArrangementSlash"},over:{code:"csymDiagonalArrangementSlash"},"#":{code:"accidentalSharp"},b:{code:"accidentalFlat"}},Mt.symbolTypes=Ct,Mt.symbolModifiers=Et,Mt.noFormat=!1;class Bt extends Z{constructor(){super(),this.position=Z.Position.RIGHT,this.radius=2,this.setWidth(5),this.dot_shiftY=0}static get CATEGORY(){return _.Dot}static getDots(t){return t.getModifiersByType(Bt.CATEGORY)}static buildAndAttach(t,e){for(const i of t)if(null==e?void 0:e.all)for(let t=0;te.line-t.line));let n=i,o=0,l=null,r=null,h=null,c=0;for(let t=0;to?n:o,l=d,r=i}return e.right_shift+=o,!0}setNote(t){return this.note=t,r(t)&&(this.radius*=.5,this.setWidth(3)),this}setDotShiftY(t){return this.dot_shiftY=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.checkStave().getSpacingBetweenLines(),s=e.getModifierStartXY(this.position,this.index,{forceFlagRight:!0});g(e)&&(s.y=e.getStemExtents().baseY);const a=s.x+this.x_shift+this.width-this.radius,n=s.y+this.y_shift+this.dot_shiftY*i;t.beginPath(),t.arc(a,n,this.radius,0,2*Math.PI,!1),t.fill()}}class Rt extends Z{constructor(t){super(),this.finger=t,this.width=7,this.position=Z.Position.LEFT,this.x_shift=0,this.y_shift=0,this.x_offset=0,this.y_offset=0,this.resetFont()}static get CATEGORY(){return _.FretHandFinger}static format(t,e){const{left_shift:i,right_shift:s}=e;if(!t||0===t.length)return!1;const a=[];let n=null,o=0,l=0;for(let r=0;re.line-t.line));let r=0,h=0,c=0,b=0,d=null,m=null;for(let t=0;tc?e:c):o===Z.Position.RIGHT&&(g.setXShift(h),e=l+u,b=e>b?e:b),d=_,m=n}return e.left_shift+=c,e.right_shift+=b,!0}static easyScoreHook({fingerings:t}={},e,i){null==t||t.split(",").map((t=>{const e=t.trim().split("."),s={number:e[0]};return e[1]&&(s.position=e[1]),i.getFactory().Fingering(s)})).map(((t,i)=>e.addModifier(t,i)))}setFretHandFinger(t){return this.finger=t,this}getFretHandFinger(){return this.finger}setOffsetX(t){return this.x_offset=t,this}setOffsetY(t){return this.y_offset=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getModifierStartXY(this.position,this.index);let s=i.x+this.x_shift+this.x_offset,a=i.y+this.y_shift+this.y_offset+5;switch(this.position){case Z.Position.ABOVE:s-=4,a-=12;break;case Z.Position.BELOW:s-=2,a+=10;break;case Z.Position.LEFT:s-=this.width;break;case Z.Position.RIGHT:s+=1;break;default:throw new x("InvalidPosition",`The position ${this.position} does not exist`)}t.save(),t.setFont(this.textFont),t.fillText(""+this.finger,s,a),t.restore()}}Rt.TEXT_FONT={family:M.SANS_SERIF,size:9,weight:k.BOLD,style:F.NORMAL};class Ot extends St{constructor(t){super(t),this.custom_glyph=!1,this.stem_up_x_offset=0,this.stem_down_x_offset=0,this.index=t.index,this.x=t.x||0,this.y=t.y||0,t.note_type&&(this.noteType=t.note_type),this.displaced=t.displaced||!1,this.stem_direction=t.stem_direction||st.UP,this.line=t.line||0,this.glyph=X.getGlyphProps(this.duration,this.noteType),u(this.glyph,"BadArguments",`No glyph found for duration '${this.duration}' and type '${this.noteType}'`),(this.line>5||this.line<0)&&this.glyph.leger_code_head&&(this.glyph.code_head=this.glyph.leger_code_head),this.glyph_code=this.glyph.code_head,this.x_shift=t.x_shift||0,t.custom_glyph_code&&(this.custom_glyph=!0,this.glyph_code=t.custom_glyph_code,this.stem_up_x_offset=t.stem_up_x_offset||0,this.stem_down_x_offset=t.stem_down_x_offset||0),this.setStyle(t.style),this.slashed=t.slashed||!1,this.render_options=Object.assign(Object.assign({},this.render_options),{glyph_font_scale:t.glyph_font_scale||X.NOTATION_FONT_SCALE}),this.setWidth(this.glyph.getWidth(this.render_options.glyph_font_scale))}static get CATEGORY(){return _.NoteHead}getWidth(){return this.width}isDisplaced(){return!0===this.displaced}getGlyph(){return this.glyph}setX(t){return this.x=t,this}getY(){return this.y}setY(t){return this.y=t,this}getLine(){return this.line}setLine(t){return this.line=t,this}getAbsoluteX(){const t=this.preFormatted?super.getAbsoluteX():this.x,e=st.WIDTH/2,i=X.currentMusicFont(),s=i.lookupMetric("notehead.shiftX",0)*this.stem_direction,a=i.lookupMetric("noteHead.displaced.shiftX",0)*this.stem_direction;return t+s+(this.displaced?(this.width-e)*this.stem_direction+a:0)}getBoundingBox(){if(!this.preFormatted)throw new x("UnformattedNote","Can't call getBoundingBox on an unformatted note.");const t=this.checkStave().getSpacingBetweenLines(),e=t/2,i=this.y-e;return new C(this.getAbsoluteX(),i,this.width,t)}setStave(t){const e=this.getLine();return this.stave=t,this.stave&&(this.setY(this.stave.getYForNote(e)),this.setContext(this.stave.getContext())),this}preFormat(){if(this.preFormatted)return this;const t=this.getWidth()+this.leftDisplacedHeadPx+this.rightDisplacedHeadPx;return this.setWidth(t),this.preFormatted=!0,this}draw(){const t=this.checkContext();this.setRendered();let e=this.getAbsoluteX();this.custom_glyph&&(e+=this.stem_direction===st.UP?this.stem_up_x_offset:this.stem_down_x_offset);const i=this.y;!function(...t){Ot.DEBUG&&f("Vex.Flow.NoteHead",t)}("Drawing note head '",this.noteType,this.duration,"' at",e,i);const s=this.stem_direction,a=this.render_options.glyph_font_scale;this.applyStyle(t);const n=`${this.glyph_code}Stem${s===st.UP?"Up":"Down"}`;if("s"===this.noteType){const a=this.checkStave().getSpacingBetweenLines();!function(t,e,i,s,a,n){const o=X.SLASH_NOTEHEAD_WIDTH;t.save(),t.setLineWidth(X.STEM_WIDTH);let l=!1;if(X.durationToNumber(e)>2&&(l=!0),l||(i-=X.STEM_WIDTH/2*a),t.beginPath(),t.moveTo(i,s+n),t.lineTo(i,s+1),t.lineTo(i+o,s-n),t.lineTo(i+o,s),t.lineTo(i,s+n),t.closePath(),l?t.fill():t.stroke(),X.durationToFraction(e).equals(.5)){const e=[-3,-1,o+1,o+3];for(let a=0;a2&&i++,2===X.durationToNumber(n.note.duration)?e++:X.durationToNumber(n.note.duration)>2&&i++,2!==e&&2!==i||s.note.getModifiersByType(_.Dot).length!==n.note.getModifiersByType(_.Dot).length||t<1&&t>0?(h=r+2,s.stemDirection===n.stemDirection?s.note.setXShift(h):n.note.setXShift(h)):s.note.voice!==n.note.voice&&s.stemDirection===n.stemDirection&&(s.line!=n.line?(h=r+2,s.note.setXShift(h)):1===n.stemDirection&&(n.stemDirection=-1,n.note.setStemDirection(-1)))}else t<1?(h=r+2,s.stemDirection===n.stemDirection?s.note.setXShift(h):n.note.setXShift(h)):s.note.hasStem()?(s.stemDirection=-s.note.getStemDirection(),s.note.setStemDirection(s.stemDirection)):n.note.hasStem()&&(n.stemDirection=-n.note.getStemDirection(),n.note.setStemDirection(n.stemDirection))}return e.right_shift+=h,!0}if(!a)throw new x("InvalidState","noteM not defined.");if(a.isrest&&!s.isrest&&!n.isrest&&(s.minLine<=a.maxLine||a.minLine<=n.maxLine)){return a.maxLine-a.minLinet.postFormat())),!0)}reset(){super.reset();const t=this._noteHeads.map((t=>t.getStyle()));this.buildNoteHeads(),this._noteHeads.forEach(((e,i)=>{const s=t[i];s&&e.setStyle(s)}));const e=this.stave;return e&&this._noteHeads.forEach((t=>t.setStave(e))),this.calcNoteDisplacements(),this}setBeam(t){return this.beam=t,this.calcNoteDisplacements(),this.stem&&this.stem.setExtension(this.getStemExtension()),this}buildStem(){return this.setStem(new st({hide:!!this.isRest()})),this}buildNoteHeads(){this._noteHeads=[];const t=this.getStemDirection(),e=this.getKeys();let i,s,a,n,o,l=!1;t===st.UP?(a=0,n=e.length,o=1):(a=e.length-1,n=-1,o=-1);for(let e=a;e!==n;e+=o){const a=this.sortedKeyProps[e].keyProps,n=a.line;void 0===i?i=n:(s=Math.abs(i-n),0===s||.5===s?l=!l:(l=!1,this.use_default_head_x=!0)),i=n;const o=new Ot({duration:this.duration,note_type:this.noteType,displaced:l,stem_direction:t,custom_glyph_code:a.code,glyph_font_scale:this.render_options.glyph_font_scale,x_shift:a.shift_right,stem_up_x_offset:a.stem_up_x_offset,stem_down_x_offset:a.stem_down_x_offset,line:a.line});this.addChildElement(o),this._noteHeads[this.sortedKeyProps[e].index]=o}}autoStem(){this.setStemDirection(this.calculateOptimalStemDirection())}calculateOptimalStemDirection(){this.minLine=this.sortedKeyProps[0].keyProps.line,this.maxLine=this.sortedKeyProps[this.keyProps.length-1].keyProps.line;return(this.minLine+this.maxLine)/2<3?st.UP:st.DOWN}calculateKeyProps(){let t;for(let e=0;e0&&(this.keyProps[e-1].displaced=!0)),t=n,this.keyProps.push(a)}this.keyProps.forEach(((t,e)=>{this.sortedKeyProps.push({keyProps:t,index:e})})),this.sortedKeyProps.sort(((t,e)=>t.keyProps.line-e.keyProps.line))}getBoundingBox(){var t,e;if(!this.preFormatted)throw new x("UnformattedNote","Can't call getBoundingBox on an unformatted note.");const{width:i,modLeftPx:s,leftDisplacedHeadPx:a}=this.getMetrics(),n=this.getAbsoluteX()-s-a;let o=0,l=0;const r=(null!==(e=null===(t=this.getStave())||void 0===t?void 0:t.getSpacingBetweenLines())&&void 0!==e?e:0)/2,h=2*r;if(this.isRest()){const t=this.ys[0],e=X.durationToFraction(this.duration);e.equals(1)||e.equals(2)?(o=t-r,l=t+r):(o=t-this.glyph.line_above*h,l=t+this.glyph.line_below*h)}else if(this.glyph.stem){const t=this.getStemExtents();t.baseY+=r*this.getStemDirection(),o=Math.min(t.topY,t.baseY),l=Math.max(t.topY,t.baseY)}else{o=0,l=0;for(let t=0;te&&(e=s):s1}hasStem(){return this.glyph.stem}hasFlag(){return super.hasFlag()&&!this.isRest()}getStemX(){return"r"===this.noteType?this.getCenterGlyphX():super.getStemX()+(this.stem_direction?st.WIDTH/(2*-this.stem_direction):0)}getYForTopText(t){const e=this.getStemExtents();return Math.min(this.checkStave().getYForTopText(t),e.topY-this.render_options.annotation_spacing*(t+1))}getYForBottomText(t){const e=this.getStemExtents();return Math.max(this.checkStave().getYForTopText(t),e.baseY+this.render_options.annotation_spacing*t)}setStave(t){super.setStave(t);const e=this._noteHeads.map((e=>(e.setStave(t),e.getY())));if(this.setYs(e),this.stem){const{y_top:t,y_bottom:e}=this.getNoteHeadBounds();this.stem.setYBounds(t,e)}return this}isDisplaced(){return this.displaced}setNoteDisplaced(t){return this.displaced=t,this}getTieRightX(){let t=this.getAbsoluteX();return t+=this.getGlyphWidth()+this.x_shift+this.rightDisplacedHeadPx,this.modifierContext&&(t+=this.modifierContext.getRightShift()),t}getTieLeftX(){let t=this.getAbsoluteX();return t+=this.x_shift-this.leftDisplacedHeadPx,t}getLineForRest(){let t=this.keyProps[0].line;if(this.keyProps.length>1){const e=this.keyProps[this.keyProps.length-1].line;t=S(Math.max(t,e),Math.min(t,e))}return t}getModifierStartXY(t,e,i={}){var s,a;if(!this.preFormatted)throw new x("UnformattedNote","Can't call GetModifierStartXY on an unformatted note");if(0===this.ys.length)throw new x("NoYValues","No Y-Values calculated for this note.");const{ABOVE:n,BELOW:o,LEFT:l,RIGHT:r}=Z.Position;let h=0;return t===l?h=-2:t===r?(h=this.getGlyphWidth()+this.x_shift+2,this.stem_direction===st.UP&&this.hasFlag()&&(i.forceFlagRight||((t,e)=>e===(t.getStemDirection()===st.UP?t.keyProps.length-1:0))(this,e))&&(h+=null!==(a=null===(s=null==this?void 0:this.flag)||void 0===s?void 0:s.getMetrics().width)&&void 0!==a?a:0)):t!==o&&t!==n||(h=this.getGlyphWidth()/2),{x:this.getAbsoluteX()+h,y:this.ys[e]}}setStyle(t){return super.setGroupStyle(t)}setStemStyle(t){const e=this.getStem();return e&&e.setStyle(t),this}getStemStyle(){var t;return null===(t=this.stem)||void 0===t?void 0:t.getStyle()}setLedgerLineStyle(t){this.ledgerLineStyle=t}getLedgerLineStyle(){return this.ledgerLineStyle}setFlagStyle(t){var e;null===(e=this.flag)||void 0===e||e.setStyle(t)}getFlagStyle(){var t;return null===(t=this.flag)||void 0===t?void 0:t.getStyle()}setKeyStyle(t,e){return this._noteHeads[t].setStyle(e),this}setKeyLine(t,e){return this.keyProps[t].line=e,this.reset(),this}getKeyLine(t){return this.keyProps[t].line}getVoiceShiftWidth(){return this.getGlyphWidth()*(this.displaced?2:1)}calcNoteDisplacements(){this.setLeftDisplacedHeadPx(this.displaced&&this.stem_direction===st.DOWN?this.getGlyphWidth():0),this.setRightDisplacedHeadPx(!this.hasFlag()&&this.displaced&&this.stem_direction===st.UP?this.getGlyphWidth():0)}preFormat(){if(this.preFormatted)return;let t=0;this.modifierContext&&(this.modifierContext.preFormat(),0===this.modifierContext.getWidth()&&(t=Ut.minNoteheadPadding));let e=this.getGlyphWidth()+this.leftDisplacedHeadPx+this.rightDisplacedHeadPx+t;this.shouldDrawFlag()&&this.stem_direction===st.UP&&(e+=this.getGlyphWidth()),this.setWidth(e),this.preFormatted=!0}getNoteHeadBounds(){let t,e,i,s,a=1/0,n=-1/0,o=this.checkStave().getNumLines(),l=1,r=o,h=l;return this._noteHeads.forEach((c=>{const b=c.getLine(),d=c.getY();a=Math.min(d,a),n=Math.max(d,n),void 0===e&&c.isDisplaced()&&(e=c.getAbsoluteX()),void 0!==t||c.isDisplaced()||(t=c.getAbsoluteX()),o=Math.max(b,o),l=Math.min(b,l),c.isDisplaced()?(i=void 0===i?b:Math.max(b,i),s=void 0===s?b:Math.min(b,s)):(r=Math.max(b,r),h=Math.min(b,h))}),this),{y_top:a,y_bottom:n,displaced_x:e,non_displaced_x:t,highest_line:o,lowest_line:l,highest_displaced_line:i,lowest_displaced_line:s,highest_non_displaced_line:r,lowest_non_displaced_line:h}}getNoteHeadBeginX(){return this.getAbsoluteX()+this.x_shift}getNoteHeadEndX(){return this.getNoteHeadBeginX()+this.getGlyphWidth()}get noteHeads(){return this._noteHeads.slice()}get note_heads(){return console.warn("StaveNote.note_heads is deprecated. Use StaveNote.noteHeads instead.","This accessor will be removed in VexFlow 5.0."),this.noteHeads}drawLedgerLines(){const t=this.checkStave(),{glyph:e,render_options:{stroke_px:i}}=this,s=this.checkContext(),a=e.getWidth()+2*i,n=2*(e.getWidth()+i)-st.WIDTH/2;if(this.isRest())return;if(!s)throw new x("NoCanvasContext","Can't draw without a canvas context.");const{highest_line:o,lowest_line:l,highest_displaced_line:r,highest_non_displaced_line:h,lowest_displaced_line:c,lowest_non_displaced_line:b,displaced_x:d,non_displaced_x:m}=this.getNoteHeadBounds();if(o<6&&l>0)return;const g=Math.min(null!=d?d:0,null!=m?m:0),_=(t,e,o)=>{let l;l=o&&e?g-i:e?(null!=m?m:0)-i:(null!=d?d:0)-i;const r=e&&o?n:a;s.beginPath(),s.moveTo(l,t),s.lineTo(l+r,t),s.stroke()},p=Object.assign(Object.assign({},t.getDefaultLedgerLineStyle()),this.getLedgerLineStyle());this.applyStyle(s,p);for(let e=6;e<=o;++e){const i=void 0!==m&&e<=h,s=void 0!==r&&e<=r;_(t.getYForNote(e),i,s)}for(let e=0;e>=l;--e){const i=void 0!==m&&e>=b,s=void 0!==c&&e>=c;_(t.getYForNote(e),i,s)}this.restoreStyle(s,p)}drawModifiers(t){const e=this.checkContext();for(let i=0;i{t.openGroup("notehead",e.getAttribute("id"),{pointerBBox:!0}),e.setContext(t).draw(),this.drawModifiers(e),t.closeGroup()}))}drawStem(t){const e=this.checkContext();t&&this.setStem(new st(t)),this.shouldDrawFlag()&&this.stem&&this.stem.adjustHeightForFlag(),this.stem&&this.stem.setContext(e).draw()}getStaveNoteScale(){return 1}getStemExtension(){const t=super.getStemExtension();if(!this.glyph.stem)return t;const e=this.getStemDirection();if(e!==this.calculateOptimalStemDirection())return t;let i;i=e===st.UP?3-this.maxLine:this.minLine-3;const s=i-3.5;if(s<=0)return t;const a=this.getStave();let n=10;return null!=a&&(n=a.getSpacingBetweenLines()),t+s*n}draw(){if(!1===this.render_options.draw)return;if(0===this.ys.length)throw new x("NoYValues","Can't draw note without Y values.");const t=this.checkContext(),e=this.getNoteHeadBeginX(),i=this.hasStem()&&!this.beam;if(this._noteHeads.forEach((t=>t.setX(e))),this.stem){const t=this.getStemX();this.stem.setNoteHeadXBounds(t,t)}!function(...t){Ut.DEBUG&&f("Vex.Flow.StaveNote",t)}("Rendering ",this.isChord()?"chord :":"note :",this.keys),this.applyStyle(),t.openGroup("stavenote",this.getAttribute("id")),this.drawLedgerLines(),i&&this.drawStem(),this.drawNoteHeads(),this.drawFlag(),t.closeGroup(),this.restoreStyle(),this.setRendered()}}Ut.DEBUG=!1;class Wt extends O{constructor(t,e){super(),this.setNotes(t),this.text=e,this.render_options={cp1:8,cp2:12,text_shift_x:0,first_x_shift:0,last_x_shift:0,y_shift:7,tie_spacing:0},this.resetFont()}static get CATEGORY(){return _.StaveTie}setDirection(t){return this.direction=t,this}setNotes(t){if(!t.first_note&&!t.last_note)throw new x("BadArguments","Tie needs to have either first_note or last_note set.");if(t.first_indices||(t.first_indices=[0]),t.last_indices||(t.last_indices=[0]),t.first_indices.length!==t.last_indices.length)throw new x("BadArguments","Tied notes must have same number of indices.");return this.notes=t,this}isPartial(){return!this.notes.first_note||!this.notes.last_note}renderTie(t){if(0===t.first_ys.length||0===t.last_ys.length)throw new x("BadArguments","No Y-values to render");const e=this.checkContext();let i=this.render_options.cp1,s=this.render_options.cp2;Math.abs(t.last_x_px-t.first_x_px)<10&&(i=2,s=8);const a=this.render_options.first_x_shift,n=this.render_options.last_x_shift,o=this.render_options.y_shift*t.direction,l=this.notes.first_indices,r=this.notes.last_indices;for(let h=0;hMath.pow(this.options.softmaxFactor,e.getTicks().value()/t))).reduce(((t,e)=>t+e),0),this.expTicksUsed}softmax(t){this.expTicksUsed||(this.expTicksUsed=this.reCalculateExpTicksUsed());const e=this.ticksUsed.value();return(t=>Math.pow(this.options.softmaxFactor,t/e))(t)/this.expTicksUsed}addTickable(t){if(!t.shouldIgnoreTicks()){const e=t.getTicks();if(this.ticksUsed.add(e),this.expTicksUsed=0,(this.mode===Gt.STRICT||this.mode===Gt.FULL)&&this.ticksUsed.greaterThan(this.totalTicks))throw this.ticksUsed.subtract(e),new x("BadArgument","Too many ticks.");e.lessThan(this.smallestTickCount)&&(this.smallestTickCount=e.clone()),this.resolutionMultiplier=this.ticksUsed.denominator,this.totalTicks.add(0,this.ticksUsed.denominator)}return this.tickables.push(t),t.setVoice(this),this}addTickables(t){for(let e=0;e{e.getStave()||e.setStave(t)})),this.preFormatted=!0,this}checkStave(){return u(this.stave,"NoStave","No stave attached to instance.")}draw(t=this.checkContext(),e){let i;e=null!=e?e:this.stave,this.setRendered();for(let s=0;s1){const e=new Oe(t);e.render_options.beam_width=3,e.render_options.partial_beam_length=4,this.beams.push(e)}return this}setWidth(t){return this.width=t,this}getWidth(){return this.width+Ut.minNoteheadPadding}getGraceNotes(){return this.grace_notes}draw(){const t=this.checkContext(),e=this.checkAttachedNote();if(this.setRendered(),function(...t){Ht.DEBUG&&f("Vex.Flow.GraceNoteGroup",t)}("Drawing grace note group for:",e),this.alignSubNotesWithNote(this.getGraceNotes(),e),this.grace_notes.forEach((e=>e.setContext(t).draw())),this.beams.forEach((e=>e.setContext(t).draw())),this.show_slur){const i=d(e),s=i?Wt:It;this.slur=new s({last_note:this.grace_notes[0],first_note:e,first_indices:[0],last_indices:[0]}),this.slur.render_options.cp2=12,this.slur.render_options.y_shift=(i?7:5)+this.render_options.slur_y_shift,this.slur.setContext(t).draw()}}}Ht.DEBUG=!1;class jt extends Z{constructor(t){super(),this.preFormatted=!1,this.position=Z.Position.LEFT,this.subNotes=t,this.subNotes.forEach((t=>{t.setIgnoreTicks(!1)})),this.width=0,this.formatter=new Fe,this.voice=new Yt({num_beats:4,beat_value:4,resolution:X.RESOLUTION}).setStrict(!1),this.voice.addTickables(this.subNotes)}static get CATEGORY(){return _.NoteSubGroup}static format(t,e){if(!t||0===t.length)return!1;let i=0;for(let e=0;ee.setContext(t).drawWithStyle()))}}class Xt{constructor(t){this.preFormatted=!1,this.postFormatted=!1,this.tickID=t&&t.tickID?t.tickID:0,this.currentTick=new v(0,1),this.maxTicks=new v(0,1),this.maxTickable=void 0,this.minTicks=void 0,this.minTickable=void 0,this.padding=1,this.x=0,this.xBase=0,this.xOffset=0,this.tickables=[],this.tickablesByVoice={},this.notePx=0,this.glyphPx=0,this.leftDisplacedHeadPx=0,this.rightDisplacedHeadPx=0,this.modLeftPx=0,this.modRightPx=0,this.totalLeftPx=0,this.totalRightPx=0,this.tContexts=[],this.width=0,this.formatterMetrics={freedom:{left:0,right:0}}}static getNextContext(t){const e=t.tContexts,i=e.indexOf(t);if(i+1t.isCenterAligned()))}getMetrics(){const{width:t,glyphPx:e,notePx:i,leftDisplacedHeadPx:s,rightDisplacedHeadPx:a,modLeftPx:n,modRightPx:o,totalLeftPx:l,totalRightPx:r}=this;return{width:t,glyphPx:e,notePx:i,leftDisplacedHeadPx:s,rightDisplacedHeadPx:a,modLeftPx:n,modRightPx:o,totalLeftPx:l,totalRightPx:r}}getCurrentTick(){return this.currentTick}setCurrentTick(t){this.currentTick=t,this.preFormatted=!1}addTickable(t,e){if(!t)throw new x("BadArgument","Invalid tickable added.");if(!t.shouldIgnoreTicks()){const e=t.getTicks();e.greaterThan(this.maxTicks)&&(this.maxTicks=e.clone(),this.maxTickable=t),(null==this.minTicks||e.lessThan(this.minTicks))&&(this.minTicks=e.clone(),this.minTickable=t)}return t.setTickContext(this),this.tickables.push(t),this.tickablesByVoice[e||0]=t,this.preFormatted=!1,this}preFormat(){if(this.preFormatted)return this;for(let t=0;t=0,!this.ornament)throw new x("ArgumentError",`Ornament not found: '${this.type}'`);this.x_shift=e?e.xOffset:0,this.y_shift=e?e.yOffset:0,this.glyph=new Q(this.ornament.code,this.render_options.font_scale,{category:`ornament.${this.ornament.code}`}),Vt.ornamentNoteTransition.indexOf(this.type)>=0&&(this.delayed=!0),e||this.glyph.setOrigin(.5,1)}static get CATEGORY(){return _.Ornament}static get minPadding(){return X.currentMusicFont().lookupMetric("glyphs.noteHead.minPadding")}static format(t,e){if(!t||0===t.length)return!1;let i=0,s=e.right_shift,a=e.left_shift,n=0;for(let o=0;o=0&&(l.x_shift+=s+2),Vt.ornamentAttack.indexOf(l.type)>=0&&(l.x_shift-=a+2),l.reportedWidth&&l.x_shift<0?a+=l.reportedWidth:l.reportedWidth&&l.x_shift>=0?s+=l.reportedWidth+Vt.minPadding:i=Math.max(l.getWidth(),i),Vt.ornamentArticulation.indexOf(l.type)>=0){u(l.note,"NoAttachedNote").getLineNumber()>=3||l.getPosition()===Z.Position.ABOVE?(e.top_text_line+=r,l.y_shift+=n,n-=l.glyph.bbox.getH()):(e.text_line+=r,l.y_shift+=n,n+=l.glyph.bbox.getH())}else l.getPosition()===Z.Position.ABOVE?(l.setTextLine(e.top_text_line),e.top_text_line+=r):(l.setTextLine(e.text_line),e.text_line+=r)}return e.left_shift=a+i/2,e.right_shift=s+i/2,!0}static get ornamentNoteTransition(){return["flip","jazzTurn","smear"]}static get ornamentAttack(){return["scoop"]}static get ornamentAlignWithNoteHead(){return["doit","fall","fallLong","doitLong","bend","plungerClosed","plungerOpen","scoop"]}static get ornamentRelease(){return["doit","fall","fallLong","doitLong","jazzTurn","smear","flip"]}static get ornamentArticulation(){return["bend","plungerClosed","plungerOpen"]}getMetrics(){return X.currentMusicFont().getMetrics().glyphs.jazzOrnaments[this.ornament.code]}setDelayed(t){return this.delayed=t,this}setUpperAccidental(t){const e=this.render_options.font_scale/1.3;return this.accidentalUpper=new Q(X.accidentalCodes(t).code,e),this.accidentalUpper.setOrigin(.5,1),this}setLowerAccidental(t){const e=this.render_options.font_scale/1.3;return this.accidentalLower=new Q(X.accidentalCodes(t).code,e),this.accidentalLower.setOrigin(.5,1),this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getStemDirection(),s=e.checkStave();t.openGroup("ornament",this.getAttribute("id"));const a=e.checkStem().getExtents();let n=i===st.DOWN?a.baseY:a.topY;g(e)&&(e.hasStem()?i===st.DOWN&&(n=s.getYForTopText(this.text_line)):n=s.getYForTopText(this.text_line));const o=i===st.DOWN,l=s.getSpacingBetweenLines();let r=1;!o&&e.hasBeam()&&(r+=.5);const h=n-l*(this.text_line+r),c=e.getModifierStartXY(this.position,this.index);let b=c.x,d=this.ornamentAlignWithNoteHead?c.y:Math.min(s.getYForTopText(this.text_line),h);if(d+=this.y_shift,this.delayed){let t=0;const i=b-(s.getX()-10);if(void 0!==this.delayXShift)t=this.delayXShift;else{t+=this.glyph.getMetrics().width/2;const a=Xt.getNextContext(e.getTickContext());t+=a?.5*(a.getX()-i):.5*(s.getX()+s.getWidth()-i),this.delayXShift=t}b+=t}!function(...t){Vt.DEBUG&&f("Vex.Flow.Ornament",t)}("Rendering ornament: ",this.ornament,b,d),this.accidentalLower&&(this.accidentalLower.render(t,b,d),d-=this.accidentalLower.getMetrics().height,d-=this.render_options.accidentalLowerPadding),this.stemUpYOffset&&e.hasStem()&&1===e.getStemDirection()&&(d+=this.stemUpYOffset),e.getLineNumber()<5&&Vt.ornamentNoteTransition.indexOf(this.type)>=0&&(d=e.checkStave().getBoundingBox().getY()+40),this.glyph.render(t,b+this.x_shift,d),this.accidentalUpper&&(d-=this.glyph.getMetrics().height+this.render_options.accidentalUpperPadding,this.accidentalUpper.render(t,b,d)),t.closeGroup()}}Vt.DEBUG=!1;class Kt extends Z{constructor(t){super(),this.position=null!=t?t:Z.Position.LEFT,this.point=X.currentMusicFont().lookupMetric("parenthesis.default.point"),this.setWidth(X.currentMusicFont().lookupMetric("parenthesis.default.width"))}static get CATEGORY(){return _.Parenthesis}static buildAndAttach(t){for(const e of t)for(let t=0;tr+a.width?s:r+a.width),o===$.LEFT&&(r=n.getLeftParenthesisPx(l),i=i>r+a.width?i:r+a.width),a.setXShift(r)}return e.left_shift+=i,e.right_shift+=s,!0}setNote(t){return this.note=t,this.point=X.currentMusicFont().lookupMetric("parenthesis.default.point"),this.setWidth(X.currentMusicFont().lookupMetric("parenthesis.default.width")),r(t)&&(this.point=X.currentMusicFont().lookupMetric("parenthesis.gracenote.point"),this.setWidth(X.currentMusicFont().lookupMetric("parenthesis.gracenote.width"))),this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getModifierStartXY(this.position,this.index,{forceFlagRight:!0}),s=i.x+this.x_shift,a=i.y+this.y_shift;this.position==Z.Position.RIGHT?Q.renderGlyph(t,s+1,a,this.point,"noteheadParenthesisRight",{category:"noteHead.standard.noteheadParenthesisRight"}):this.position==Z.Position.LEFT&&Q.renderGlyph(t,s-2,a,this.point,"noteheadParenthesisLeft",{category:"noteHead.standard.noteheadParenthesisLeft"})}}function $t(t){if(!t)return!1;const e=p();return"function"==typeof e.HTMLCanvasElement&&t instanceof e.HTMLCanvasElement||"function"==typeof t.getContext&&"function"==typeof t.toDataURL}function qt(t){if(!t)return!1;const e=p();return"function"==typeof e.HTMLDivElement&&t instanceof e.HTMLDivElement||"function"==typeof t.appendChild&&"object"==typeof t.style}class Jt extends ut{constructor(t){super(),this.textHeight=0,this.context2D=t,t.canvas?this.canvas=t.canvas:this.canvas={width:Jt.WIDTH,height:Jt.HEIGHT}}static get WIDTH(){return 600}static get HEIGHT(){return 400}static get CANVAS_BROWSER_SIZE_LIMIT(){return 32767}static sanitizeCanvasDims(t,e){const i=this.CANVAS_BROWSER_SIZE_LIMIT;return Math.max(t,e)>i&&(y("Canvas dimensions exceed browser limit. Cropping to "+i),t>i&&(t=i),e>i&&(e=i)),[t,e]}clear(){this.context2D.clearRect(0,0,this.canvas.width,this.canvas.height)}openGroup(t,e,i){}closeGroup(){}add(t){}setFillStyle(t){return this.context2D.fillStyle=t,this}setBackgroundFillStyle(t){return this}setStrokeStyle(t){return this.context2D.strokeStyle=t,this}setShadowColor(t){return this.context2D.shadowColor=t,this}setShadowBlur(t){const e=this.context2D.getTransform(),i=Math.sqrt(e.a*e.a+e.b*e.b+e.c*e.c+e.d*e.d);return this.context2D.shadowBlur=i*t,this}setLineWidth(t){return this.context2D.lineWidth=t,this}setLineCap(t){return this.context2D.lineCap=t,this}setLineDash(t){return this.context2D.setLineDash(t),this}scale(t,e){return this.context2D.scale(t,e),this}resize(t,e){const i=this.context2D.canvas,s=p().devicePixelRatio||1;return[t,e]=Jt.sanitizeCanvasDims(t*s,e*s),t=t/s|0,e=e/s|0,i.width=t*s,i.height=e*s,$t(i)&&(i.style.width=t+"px",i.style.height=e+"px"),this.scale(s,s)}rect(t,e,i,s){return this.context2D.rect(t,e,i,s),this}fillRect(t,e,i,s){return this.context2D.fillRect(t,e,i,s),this}clearRect(t,e,i,s){return this.context2D.clearRect(t,e,i,s),this}beginPath(){return this.context2D.beginPath(),this}moveTo(t,e){return this.context2D.moveTo(t,e),this}lineTo(t,e){return this.context2D.lineTo(t,e),this}bezierCurveTo(t,e,i,s,a,n){return this.context2D.bezierCurveTo(t,e,i,s,a,n),this}quadraticCurveTo(t,e,i,s){return this.context2D.quadraticCurveTo(t,e,i,s),this}arc(t,e,i,s,a,n){return this.context2D.arc(t,e,i,s,a,n),this}fill(){return this.context2D.fill(),this}stroke(){return this.context2D.stroke(),this}closePath(){return this.context2D.closePath(),this}measureText(t){const e=this.context2D.measureText(t);let i=0,s=0;return e.fontBoundingBoxAscent?(i=-e.fontBoundingBoxAscent,s=e.fontBoundingBoxDescent+e.fontBoundingBoxAscent):(i=-e.actualBoundingBoxAscent,s=e.actualBoundingBoxDescent+e.actualBoundingBoxAscent),{x:0,y:i,width:e.width,height:s}}fillText(t,e,i){return this.context2D.fillText(t,e,i),this}save(){return this.context2D.save(),this}restore(){return this.context2D.restore(),this}set fillStyle(t){this.context2D.fillStyle=t}get fillStyle(){return this.context2D.fillStyle}set strokeStyle(t){this.context2D.strokeStyle=t}get strokeStyle(){return this.context2D.strokeStyle}setFont(t,e,i,s){const a=M.validate(t,e,i,s);return this.context2D.font=M.toCSSString(a),this.textHeight=M.convertSizeToPixelValue(a.size),this}getFont(){return this.context2D.font}}const Qt={path:{x:!0,y:!0,width:!0,height:!0,"font-family":!0,"font-weight":!0,"font-style":!0,"font-size":!0},rect:{"font-family":!0,"font-weight":!0,"font-style":!0,"font-size":!0},text:{width:!0,height:!0}},Zt="http://www.w3.org/2000/svg",te=2*Math.PI;class ee extends ut{constructor(t){super(),this.width=0,this.height=0,this.backgroundFillStyle="white",this.fontCSSString="",this.element=t;const e=this.create("svg");this.element.appendChild(e),this.svg=e,this.parent=this.svg,this.groups=[this.svg],this.path="",this.pen={x:NaN,y:NaN},this.lineWidth=1;const i={"font-family":M.SANS_SERIF,"font-size":M.SIZE+"pt","font-weight":k.NORMAL,"font-style":F.NORMAL};this.state=Object.assign({scale:{x:1,y:1}},i),this.attributes=Object.assign({"stroke-width":.3,"stroke-dasharray":"none",fill:"black",stroke:"black"},i),this.shadow_attributes={width:0,color:"black"},this.state_stack=[]}create(t){return document.createElementNS(Zt,t)}openGroup(t,e,i){const s=this.create("g");return this.groups.push(s),this.parent.appendChild(s),this.parent=s,t&&s.setAttribute("class",T(t)),e&&s.setAttribute("id",T(e)),i&&i.pointerBBox&&s.setAttribute("pointer-events","bounding-box"),s}closeGroup(){this.groups.pop(),this.parent=this.groups[this.groups.length-1]}add(t){this.parent.appendChild(t)}setFillStyle(t){return this.attributes.fill=t,this}setBackgroundFillStyle(t){return this.backgroundFillStyle=t,this}setStrokeStyle(t){return this.attributes.stroke=t,this}setShadowColor(t){return this.shadow_attributes.color=t,this}setShadowBlur(t){return this.shadow_attributes.width=t,this}setLineWidth(t){return this.attributes["stroke-width"]=t,this.lineWidth=t,this}setLineDash(t){if("[object Array]"===Object.prototype.toString.call(t))return this.attributes["stroke-dasharray"]=t.join(","),this;throw new x("ArgumentError","lineDash must be an array of integers.")}setLineCap(t){return this.attributes["stroke-linecap"]=t,this}resize(t,e){this.width=t,this.height=e,this.element.style.width=t.toString(),this.svg.style.width=t.toString(),this.svg.style.height=e.toString();const i={width:t,height:e};return this.applyAttributes(this.svg,i),this.scale(this.state.scale.x,this.state.scale.y),this}scale(t,e){this.state.scale={x:t,y:e};const i=this.width/t,s=this.height/e;return this.setViewBox(0,0,i,s),this}setViewBox(t,e,i,s){if("string"==typeof t)this.svg.setAttribute("viewBox",t);else{const a=t+" "+e+" "+i+" "+s;this.svg.setAttribute("viewBox",a)}}applyAttributes(t,e){const i=Qt[t.nodeName];for(const s in e)i&&i[s]||t.setAttributeNS(null,s,e[s]);return t}clear(){for(;this.svg.lastChild;)this.svg.removeChild(this.svg.lastChild);this.scale(this.state.scale.x,this.state.scale.y)}rect(t,e,i,s,a){s<0&&(e+=s,s*=-1);const n=this.create("rect");return a=null!=a?a:{fill:"none","stroke-width":this.lineWidth,stroke:"black"},this.applyAttributes(n,Object.assign({x:t,y:e,width:i,height:s},a)),this.add(n),this}fillRect(t,e,i,s){const a={fill:this.attributes.fill};return this.rect(t,e,i,s,a),this}clearRect(t,e,i,s){return this.rect(t,e,i,s,{"stroke-width":0,fill:this.backgroundFillStyle}),this}beginPath(){return this.path="",this.pen.x=NaN,this.pen.y=NaN,this}moveTo(t,e){return this.path+="M"+t+" "+e,this.pen.x=t,this.pen.y=e,this}lineTo(t,e){return this.path+="L"+t+" "+e,this.pen.x=t,this.pen.y=e,this}bezierCurveTo(t,e,i,s,a,n){return this.path+="C"+t+" "+e+","+i+" "+s+","+a+" "+n,this.pen.x=a,this.pen.y=n,this}quadraticCurveTo(t,e,i,s){return this.path+="Q"+t+" "+e+","+i+" "+s,this.pen.x=i,this.pen.y=s,this}arc(t,e,i,s,a,n){const o=t+i*Math.cos(s),l=e+i*Math.sin(s),r=w(s),h=w(a);if(!n&&a-s>=te||n&&s-a>=te||r===h){const a=t+i*Math.cos(s+Math.PI),n=e+i*Math.sin(s+Math.PI);this.path+=`M${o} ${l} A${i} ${i} 0 0 0 ${a} ${n} `,this.path+=`A${i} ${i} 0 0 0 ${o} ${l}`,this.pen.x=o,this.pen.y=l}else{const c=t+i*Math.cos(a),b=e+i*Math.sin(a);let d;s=r,a=h,d=Math.abs(a-s)a&&(d=!d);const m=!n;this.path+=`M${o} ${l} A${i} ${i} 0 ${+d} ${+m} ${c} ${b}`,this.pen.x=c,this.pen.y=b}return this}closePath(){return this.path+="Z",this}getShadowStyle(){const t=this.shadow_attributes;return`filter: drop-shadow(0 0 ${t.width/1.5}px ${t.color})`}fill(t){const e=this.create("path");return void 0===t&&(t=Object.assign(Object.assign({},this.attributes),{stroke:"none"})),t.d=this.path,this.shadow_attributes.width>0&&(t.style=this.getShadowStyle()),this.applyAttributes(e,t),this.add(e),this}stroke(){const t=this.create("path"),e=Object.assign(Object.assign({},this.attributes),{fill:"none","stroke-width":this.lineWidth,d:this.path});return this.shadow_attributes.width>0&&(e.style=this.getShadowStyle()),this.applyAttributes(t,e),this.add(t),this}measureText(t){return ee.measureTextCache.lookup(t,this.svg,this.attributes)}fillText(t,e,i){if(!t||t.length<=0)return this;const s=Object.assign(Object.assign({},this.attributes),{stroke:"none",x:e,y:i}),a=this.create("text");return a.textContent=t,this.applyAttributes(a,s),this.add(a),this}save(){return this.state_stack.push({state:{"font-family":this.state["font-family"],"font-weight":this.state["font-weight"],"font-style":this.state["font-style"],"font-size":this.state["font-size"],scale:this.state.scale},attributes:{"font-family":this.attributes["font-family"],"font-weight":this.attributes["font-weight"],"font-style":this.attributes["font-style"],"font-size":this.attributes["font-size"],fill:this.attributes.fill,stroke:this.attributes.stroke,"stroke-width":this.attributes["stroke-width"],"stroke-dasharray":this.attributes["stroke-dasharray"]},shadow_attributes:{width:this.shadow_attributes.width,color:this.shadow_attributes.color},lineWidth:this.lineWidth}),this}restore(){const t=this.state_stack.pop();if(t){const e=t;this.state["font-family"]=e.state["font-family"],this.state["font-weight"]=e.state["font-weight"],this.state["font-style"]=e.state["font-style"],this.state["font-size"]=e.state["font-size"],this.state.scale=e.state.scale,this.attributes["font-family"]=e.attributes["font-family"],this.attributes["font-weight"]=e.attributes["font-weight"],this.attributes["font-style"]=e.attributes["font-style"],this.attributes["font-size"]=e.attributes["font-size"],this.attributes.fill=e.attributes.fill,this.attributes.stroke=e.attributes.stroke,this.attributes["stroke-width"]=e.attributes["stroke-width"],this.attributes["stroke-dasharray"]=e.attributes["stroke-dasharray"],this.shadow_attributes.width=e.shadow_attributes.width,this.shadow_attributes.color=e.shadow_attributes.color,this.lineWidth=e.lineWidth}return this}set fillStyle(t){this.setFillStyle(t)}get fillStyle(){return this.attributes.fill}set strokeStyle(t){this.setStrokeStyle(t)}get strokeStyle(){return this.attributes.stroke}setFont(t,e,i,s){const a=M.validate(t,e,i,s);this.fontCSSString=M.toCSSString(a);const n={"font-family":a.family,"font-size":a.size,"font-weight":a.weight,"font-style":a.style};return this.attributes=Object.assign(Object.assign({},this.attributes),n),this.state=Object.assign(Object.assign({},this.state),n),this}getFont(){return this.fontCSSString}}var ie,se,ae,ne;ee.measureTextCache=new class{constructor(){this.cache={}}lookup(t,e,i){let s=this.cache[t];void 0===s&&(s={},this.cache[t]=s);const a=`${i["font-family"]}%${i["font-size"]}%${i["font-weight"]}%${i["font-style"]}`;let n=s[a];return void 0===n&&(n=this.measureImpl(t,e,i),s[a]=n),n}measureImpl(t,e,i){let s=this.txt;s||(s=document.createElementNS(Zt,"text"),this.txt=s),s.textContent=t,s.setAttributeNS(null,"font-family",i["font-family"]),s.setAttributeNS(null,"font-size",i["font-size"]),s.setAttributeNS(null,"font-style",i["font-style"]),s.setAttributeNS(null,"font-weight",i["font-weight"]),e.appendChild(s);const a=s.getBBox();return e.removeChild(s),{x:a.x,y:a.y,width:a.width,height:a.height}}},function(t){t[t.CANVAS=1]="CANVAS",t[t.SVG=2]="SVG"}(ie||(ie={})),function(t){t[t.NONE=1]="NONE",t[t.UP=2]="UP",t[t.DOWN=3]="DOWN"}(se||(se={}));class oe{constructor(t,e){if(b(t))this.ctx=t;else{if(void 0===e)throw new x("InvalidArgument","Missing backend argument");const i=e;let s;if("string"==typeof t){const e=document.getElementById(t);if(!e)throw new x("BadElementId",`Can't find element with ID "${e}"`);s=e}else s=t;if(i===oe.Backends.CANVAS){if(!$t(s))throw new x("BadElement","CANVAS context requires an HTMLCanvasElement.");const t=s.getContext("2d");if(!t)throw new x("BadElement","Can't get canvas context");this.ctx=new Jt(t)}else{if(i!==oe.Backends.SVG)throw new x("InvalidBackend",`No support for backend: ${i}`);if(!qt(s))throw new x("BadElement","SVG context requires an HTMLDivElement.");this.ctx=new ee(s)}}}static buildContext(t,e,i,s,a="#FFF"){const n=new oe(t,e);i&&s&&n.resize(i,s);const o=n.getContext();return o.setBackgroundFillStyle(a),oe.lastContext=o,o}static getCanvasContext(t,e,i,s){return oe.buildContext(t,oe.Backends.CANVAS,e,i,s)}static getSVGContext(t,e,i,s){return oe.buildContext(t,oe.Backends.SVG,e,i,s)}static drawDashedLine(t,e,i,s,a,n){t.beginPath();const o=s-e,l=a-i,r=Math.atan2(l,o);let h=e,c=i;t.moveTo(e,i);let b=0,d=!0;for(;!(o<0?h<=s:h>=s)||!(l<0?c<=a:c>=a);){const e=n[b++%n.length],i=h+Math.cos(r)*e;h=o<0?Math.max(s,i):Math.min(s,i);const m=c+Math.sin(r)*e;c=l<0?Math.max(a,m):Math.min(a,m),d?t.lineTo(h,c):t.moveTo(h,c),d=!d}t.closePath(),t.stroke()}resize(t,e){return this.ctx.resize(t,e),this}getContext(){return this.ctx}}oe.Backends=ie,oe.LineEndType=se,oe.lastContext=void 0;class le extends Z{constructor(t){super(),this.string_number=t,this.position=Z.Position.ABOVE,this.x_shift=0,this.y_shift=0,this.text_line=0,this.stem_offset=0,this.x_offset=0,this.y_offset=0,this.dashed=!0,this.leg=oe.LineEndType.NONE,this.radius=8,this.drawCircle=!0,this.setWidth(2*this.radius+4),this.resetFont()}static get CATEGORY(){return _.StringNumber}static get metrics(){return X.currentMusicFont().getMetrics().glyphs.stringNumber}static format(t,e){const i=e.left_shift,s=e.right_shift;if(!t||0===t.length)return!1;const a=[];let n=null,o=0,l=0;for(let r=0;re.line-t.line));let r=0,h=0,c=0,b=null,m=null;for(let t=0;th?e:h):l===Z.Position.RIGHT&&(d.setXShift(r),e+=x,c=e>c?e:c),b=g,m=n}return e.left_shift+=h,e.right_shift+=c,!0}setLineEndType(t){return t>=oe.LineEndType.NONE&&t<=oe.LineEndType.DOWN&&(this.leg=t),this}setStringNumber(t){return this.string_number=t,this}setOffsetX(t){return this.x_offset=t,this}setOffsetY(t){return this.y_offset=t,this}setLastNote(t){return this.last_note=t,this}setDashed(t){return this.dashed=t,this}setDrawCircle(t){return this.drawCircle=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getModifierStartXY(this.position,this.index),s=e.hasStem()?e.getStemDirection():st.UP;let a=i.x+this.x_shift+this.x_offset,n={};e.hasStem()&&(n=e.checkStem().getExtents());let o=i.y+this.y_shift+this.y_offset;switch(this.position){case Z.Position.ABOVE:o=e.getYs().reduce(((t,e)=>tt>e?t:e)),e.hasStem()&&s==st.DOWN&&(o=n.topY-le.metrics.stemPadding),o+=this.radius+le.metrics.verticalPadding+this.text_line*X.STAVE_LINE_DISTANCE;break;case Z.Position.LEFT:a-=this.radius/2+le.metrics.leftPadding;break;case Z.Position.RIGHT:a+=this.radius/2+le.metrics.rightPadding;break;default:throw new x("InvalidPosition",`The position ${this.position} is invalid`)}t.save(),this.drawCircle&&(t.beginPath(),t.arc(a,o,this.radius,0,2*Math.PI,!1),t.setLineWidth(1.5),t.stroke()),t.setFont(this.textFont);const l=a-t.measureText(this.string_number).width/2;t.fillText(""+this.string_number,l,o+4.5);const r=this.last_note;if(m(r)){const i=r.getStemX()-e.getX()+5;let s,n;switch(t.setStrokeStyle("#000000"),t.setLineCap("round"),t.setLineWidth(.6),this.dashed?oe.drawDashedLine(t,a+10,o,a+i,o,[3,3]):oe.drawDashedLine(t,a+10,o,a+i,o,[3,0]),this.leg){case oe.LineEndType.UP:s=-10,n=this.dashed?[3,3]:[3,0],oe.drawDashedLine(t,a+i,o,a+i,o+s,n);break;case oe.LineEndType.DOWN:s=10,n=this.dashed?[3,3]:[3,0],oe.drawDashedLine(t,a+i,o,a+i,o+s,n)}}t.restore()}}le.TEXT_FONT={family:M.SANS_SERIF,size:M.SIZE,weight:k.BOLD,style:F.NORMAL};class re extends Z{constructor(t,e){super(),this.options=Object.assign({all_voices:!0},e),this.all_voices=this.options.all_voices,this.type=t,this.position=Z.Position.LEFT,this.render_options={font_scale:38},this.resetFont(),this.setXShift(0),this.setWidth(10)}static get CATEGORY(){return _.Stroke}static format(t,e){const i=e.left_shift;if(!t||0===t.length)return!1;const s=t.map((t=>{const e=t.getNote(),i=t.checkIndex();if(d(e)){const{line:s}=e.getKeyProps()[i];return{line:s,shift:e.getLeftDisplacedHeadPx(),stroke:t}}if(g(e)){const{str:s}=e.getPositions()[i];return{line:s,shift:0,stroke:t}}throw new x("Internal","Unexpected instance.")})),a=i,n=s.reduce(((t,{stroke:e,shift:i})=>(e.setXShift(a+i),Math.max(e.getWidth()+0,t))),0);return e.left_shift+=n,!0}getPosition(){return this.position}addEndNote(t){return this.note_end=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getModifierStartXY(this.position,this.index);let s=e.getYs(),a=i.y,n=i.y;const o=i.x-5,l=e.checkStave().getSpacingBetweenLines(),r=this.checkModifierContext().getMembers(e.getCategory());for(let t=0;t0){s-=o.map((t=>t.getTextHeight())).reduce(((t,e)=>t>e?t:e))/X.STAVE_LINE_DISTANCE+1}else e.top_text_line+=1;for(let e=0;e=t.line?i.above:i.below}}this.placeGlyphOnLine(s,this.checkStave(),t.line),this.glyphs.push(s);const n=this.xPositions[this.xPositions.length-1],o=s.getMetrics().width+a;this.xPositions.push(n+o),this.width+=o}cancelKey(t){return this.formatted=!1,this.cancelKeySpec=t,this}convertToCancelAccList(t){const e=X.keySignature(t),i=this.accList.length>0&&e.length>0&&e[0].type!==this.accList[0].type,s=i?e.length:e.length-this.accList.length;if(s<1)return;const a=[];for(let t=0;t0?e[0].type:void 0;let s;if(this.cancelKeySpec&&(s=this.convertToCancelAccList(this.cancelKeySpec)),this.alterKeySpec&&this.convertToAlterAccList(this.alterKeySpec),this.accList.length>0){const a=(this.position===Tt.END?t.getEndClef():t.getClef())||t.getClef();s&&this.convertAccLines(a,s.type,s.accList),this.convertAccLines(a,i,e);for(let t=0;t0?"PlusSmall":"Plus";break;case"(":s=i.length>0?"ParensLeftSmall":"ParensLeft";break;case")":s=i.length>0?"ParensRightSmall":"ParensRight"}const a=new Q("timeSig"+s,this.timeSignature.point);this.topGlyphs.push(a),l+=null!==(o=a.getMetrics().width)&&void 0!==o?o:0}let r=0;for(let t=0;t0?e.getYForLine(this.timeSignature.topLine):(e.getYForLine(this.timeSignature.topLine)+e.getYForLine(this.timeSignature.bottomLine))/2;for(let t=0;t{const e=t.split("/");if(2!==e.length&&"+"!==e[0]&&"-"!==e[0])throw new x("BadTimeSignature",`Invalid time spec: ${t}. Must be in the form "/"`);e.forEach((e=>{if(0==/^[0-9+\-()]+$/.test(e))throw new x("BadTimeSignature",`Invalid time spec: ${t}. Must contain valid signatures.`)}))})(t);const s=t.split("/");return{num:!0,glyph:this.makeTimeSignatureGlyph(null!==(e=s[0])&&void 0!==e?e:"",null!==(i=s[1])&&void 0!==i?i:"")}}makeTimeSignatureGlyph(t,e){return new ye(this,t,e,"timeSig0",this.point)}getInfo(){return this.info}setTimeSig(t){return this.info=this.parseTimeSpec(t),this}draw(){const t=this.checkStave(),e=t.checkContext();this.setRendered(),e.openGroup("timesignature",this.getAttribute("id")),this.info.glyph.setStave(t),this.info.glyph.setContext(e),this.placeGlyphOnLine(this.info.glyph,t,this.info.line),this.info.glyph.renderToStave(this.x),e.closeGroup()}}const Te={[Ft.CATEGORY]:0,[de.CATEGORY]:1,[me.CATEGORY]:2,[Se.CATEGORY]:3},we={[Se.CATEGORY]:0,[me.CATEGORY]:1,[Ft.CATEGORY]:2,[de.CATEGORY]:3};class ve extends O{constructor(t,e,i,s){super(),this.height=0,this.x=t,this.y=e,this.width=i,this.formatted=!1,this.start_x=t+5,this.end_x=t+i,this.modifiers=[],this.measure=0,this.clef="treble",this.endClef=void 0,this.resetFont(),this.options=Object.assign({vertical_bar_width:10,num_lines:5,fill_style:"#999999",left_bar:!0,right_bar:!0,spacing_between_lines_px:X.STAVE_LINE_DISTANCE,space_above_staff_ln:4,space_below_staff_ln:4,top_text_position:1,bottom_text_position:4,line_config:[]},s),this.bounds={x:this.x,y:this.y,w:this.width,h:0},this.defaultLedgerLineStyle={strokeStyle:"#444",lineWidth:1.4},this.resetLines(),this.addModifier(new Ft(this.options.left_bar?wt.SINGLE:wt.NONE)),this.addEndModifier(new Ft(this.options.right_bar?wt.SINGLE:wt.NONE))}static get CATEGORY(){return _.Stave}static get defaultPadding(){const t=X.currentMusicFont();return t.lookupMetric("stave.padding")+t.lookupMetric("stave.endPaddingMax")}static get rightPadding(){return X.currentMusicFont().lookupMetric("stave.endPaddingMax")}setDefaultLedgerLineStyle(t){this.defaultLedgerLineStyle=t}getDefaultLedgerLineStyle(){return Object.assign(Object.assign({},this.getStyle()),this.defaultLedgerLineStyle)}space(t){return this.options.spacing_between_lines_px*t}resetLines(){this.options.line_config=[];for(let t=0;ti.getWidth()&&(e-=i.getWidth()),e}setRepetitionType(t,e=0){return this.modifiers.push(new ge(t,this.x,e)),this}setVoltaType(t,e,i){return this.modifiers.push(new fe(t,e,this.x,i)),this}setSection(t,e,i=0,s,a=!0){const n=new _e(t,this.x+i,e,a);return s&&n.setFontSize(s),this.modifiers.push(n),this}setTempo(t,e){return this.modifiers.push(new xe(t,this.x,e)),this}setText(t,e,i={}){return this.modifiers.push(new ue(t,e,i)),this}getHeight(){return this.height}getSpacingBetweenLines(){return this.options.spacing_between_lines_px}getBoundingBox(){return new C(this.x,this.y,this.width,this.getBottomY()-this.y)}getBottomY(){const t=this.options,e=t.spacing_between_lines_px;return this.getYForLine(t.num_lines)+t.space_below_staff_ln*e}getBottomLineY(){return this.getYForLine(this.options.num_lines)}getYForLine(t){const e=this.options,i=e.spacing_between_lines_px,s=e.space_above_staff_ln;return this.y+t*i+s*i}getLineForY(t){const e=this.options,i=e.spacing_between_lines_px,s=e.space_above_staff_ln;return(t-this.y)/i-s}getYForTopText(t=0){return this.getYForLine(-t-this.options.top_text_position)}getYForBottomText(t=0){return this.getYForLine(this.options.bottom_text_position+t)}getYForNote(t){const e=this.options,i=e.spacing_between_lines_px,s=e.space_above_staff_ln;return this.y+s*i+5*i-t*i}getYForGlyphs(){return this.getYForLine(3)}addModifier(t,e){return void 0!==e&&t.setPosition(e),t.setStave(this),this.formatted=!1,this.modifiers.push(t),this}addEndModifier(t){return this.addModifier(t,Tt.END),this}setBegBarType(t){const{SINGLE:e,REPEAT_BEGIN:i,NONE:s}=wt;return t!==e&&t!==i&&t!==s||(this.modifiers[0].setType(t),this.formatted=!1),this}setEndBarType(t){return t!==wt.REPEAT_BEGIN&&(this.modifiers[1].setType(t),this.formatted=!1),this}setClef(t,e,i,s){void 0===s&&(s=Tt.BEGIN),s===Tt.END?this.endClef=t:this.clef=t;const a=this.getModifiers(s,de.CATEGORY);return 0===a.length?this.addClef(t,e,i,s):a[0].setType(t,e,i),this}getClef(){return this.clef}setEndClef(t,e,i){return this.setClef(t,e,i,Tt.END),this}getEndClef(){return this.endClef}setKeySignature(t,e,i){void 0===i&&(i=Tt.BEGIN);const s=this.getModifiers(i,me.CATEGORY);return 0===s.length?this.addKeySignature(t,e,i):s[0].setKeySig(t,e),this}setEndKeySignature(t,e){return this.setKeySignature(t,e,Tt.END),this}setTimeSignature(t,e,i){void 0===i&&(i=Tt.BEGIN);const s=this.getModifiers(i,Se.CATEGORY);return 0===s.length?this.addTimeSignature(t,e,i):s[0].setTimeSig(t),this}setEndTimeSignature(t,e){return this.setTimeSignature(t,e,Tt.END),this}addKeySignature(t,e,i){return void 0===i&&(i=Tt.BEGIN),this.addModifier(new me(t,e).setPosition(i),i),this}addClef(t,e,i,s){return void 0===s||s===Tt.BEGIN?this.clef=t:s===Tt.END&&(this.endClef=t),this.addModifier(new de(t,e,i),s),this}addEndClef(t,e,i){return this.addClef(t,e,i,Tt.END),this}addTimeSignature(t,e,i){return this.addModifier(new Se(t,e),i),this}addEndTimeSignature(t,e){return this.addTimeSignature(t,e,Tt.END),this}addTrebleGlyph(){return this.addClef("treble"),this}getModifiers(t,e){const i=void 0===t,s=void 0===e;return i&&s?this.modifiers:i?this.modifiers.filter((t=>e===t.getCategory())):s?this.modifiers.filter((e=>t===e.getPosition())):this.modifiers.filter((i=>t===i.getPosition()&&e===i.getCategory()))}sortByCategory(t,e){for(let i=t.length-1;i>=0;i--)for(let s=0;se[t[s+1].getCategory()]){const e=t[s];t[s]=t[s+1],t[s+1]=e}}format(){const t=this.modifiers[0],e=this.modifiers[1],i=this.getModifiers(Tt.BEGIN),s=this.getModifiers(Tt.END);let a,n,l;this.sortByCategory(i,Te),this.sortByCategory(s,we),i.length>1&&t.getType()===wt.REPEAT_BEGIN&&(i.push(i.splice(0,1)[0]),i.splice(0,0,new Ft(wt.SINGLE))),s.indexOf(e)>0&&s.splice(0,0,new Ft(wt.NONE));let r=0,h=this.x;for(let t=0;t0){t.save(),t.setFont(this.textFont);const e=t.measureText(""+this.measure).width;a=this.getYForTopText(0)+3,t.fillText(""+this.measure,this.x-e/2,a),t.restore()}return t.closeGroup(),this}getVerticalBarWidth(){return this.options.vertical_bar_width}getConfigForLines(){return this.options.line_config}setConfigForLine(t,e){if(t>=this.options.num_lines||t<0)throw new x("StaveConfigError","The line number must be within the range of the number of lines in the Stave.");if(void 0===e.visible)throw new x("StaveConfigError","The line configuration object is missing the 'visible' property.");if("boolean"!=typeof e.visible)throw new x("StaveConfigError","The line configuration objects 'visible' property must be true or false.");return this.options.line_config[t]=e,this}setConfigForLines(t){if(t.length!==this.options.num_lines)throw new x("StaveConfigError","The length of the lines configuration array must match the number of lines in the Stave");for(const e in t)null==t[e].visible&&(t[e]=this.options.line_config[e]),this.options.line_config[e]=Object.assign(Object.assign({},this.options.line_config[e]),t[e]);return this.options.line_config=t,this}static formatBegModifiers(t){let e=0;t.forEach((t=>{t.getNoteStartX()>e&&(e=t.getNoteStartX())})),t.forEach((t=>{t.setNoteStartX(e)})),e=0,t.forEach((t=>{t.getModifiers(Tt.BEGIN,_.Barline).forEach((t=>{t.getType()==wt.REPEAT_BEGIN&&t.getX()>e&&(e=t.getX())}))})),t.forEach((t=>{t.getModifiers(Tt.BEGIN,_.Barline).forEach((t=>{t.getType()==wt.REPEAT_BEGIN&&t.setX(e)}))})),e=0,t.forEach((t=>{t.getModifiers(Tt.BEGIN,_.TimeSignature).forEach((t=>{t.getX()>e&&(e=t.getX())}))})),t.forEach((t=>{t.getModifiers(Tt.BEGIN,_.TimeSignature).forEach((t=>{t.setX(e)}))}))}}function De(t,e,i,s,a){if(e!==Ce.type.BOLD_DOUBLE_LEFT&&e!==Ce.type.BOLD_DOUBLE_RIGHT)throw new x("InvalidConnector","A REPEAT_BEGIN or REPEAT_END type must be provided.");let n=3,o=3.5;e===Ce.type.BOLD_DOUBLE_RIGHT&&(n=-5,o=3),t.fillRect(i+n,s,1,a-s),t.fillRect(i-2,s,o,a-s)}ve.TEXT_FONT={family:M.SANS_SERIF,size:8,weight:k.NORMAL,style:F.NORMAL};class Ce extends O{constructor(t,e){super(),this.thickness=X.STAVE_LINE_THICKNESS,this.width=3,this.top_stave=t,this.bottom_stave=e,this.type=Ce.type.DOUBLE,this.resetFont(),this.x_shift=0,this.texts=[]}static get CATEGORY(){return _.StaveConnector}setType(t){const e="string"==typeof t?Ce.typeString[t]:t;return Object.values(Ce.type).includes(e)&&(this.type=e),this}getType(){return this.type}setText(t,e={}){return this.texts.push({content:t,options:Object.assign({shift_x:0,shift_y:0},e)}),this}setXShift(t){if("number"!=typeof t)throw new x("InvalidType","x_shift must be a Number");return this.x_shift=t,this}getXShift(){return this.x_shift}draw(){const t=this.checkContext();this.setRendered();let e=this.top_stave.getYForLine(0),i=this.bottom_stave.getYForLine(this.bottom_stave.getNumLines()-1)+this.thickness,s=this.width,a=this.top_stave.getX();(this.type===Ce.type.SINGLE_RIGHT||this.type===Ce.type.BOLD_DOUBLE_RIGHT||this.type===Ce.type.THIN_DOUBLE)&&(a=this.top_stave.getX()+this.top_stave.getWidth());let n=i-e;switch(this.type){case Ce.type.SINGLE:case Ce.type.SINGLE_LEFT:case Ce.type.SINGLE_RIGHT:s=1;break;case Ce.type.DOUBLE:a-=this.width+2,e-=this.thickness,n+=.5;break;case Ce.type.BRACE:{s=12;const a=this.top_stave.getX()-2+this.x_shift,o=e,l=a,r=i,h=a-s,c=o+n/2,b=h-.9*s,d=o+.2*n,m=a+1.1*s,g=c-.135*n,_=m,x=c+.135*n,p=b,u=r-.2*n,f=h-s,y=u,S=a+.4*s,T=c+.135*n,w=S,v=c-.135*n,D=f,C=d;t.beginPath(),t.moveTo(a,o),t.bezierCurveTo(b,d,m,g,h,c),t.bezierCurveTo(_,x,p,u,l,r),t.bezierCurveTo(f,y,S,T,h,c),t.bezierCurveTo(w,v,D,C,a,o),t.fill(),t.stroke();break}case Ce.type.BRACKET:e-=6,i+=6,n=i-e,Q.renderGlyph(t,a-5,e,40,"bracketTop"),Q.renderGlyph(t,a-5,i,40,"bracketBottom"),a-=this.width+2;break;case Ce.type.BOLD_DOUBLE_LEFT:De(t,this.type,a+this.x_shift,e,i-this.thickness);break;case Ce.type.BOLD_DOUBLE_RIGHT:De(t,this.type,a,e,i-this.thickness);break;case Ce.type.THIN_DOUBLE:s=1,n-=this.thickness;break;case Ce.type.NONE:break;default:throw new x("InvalidType",`The provided StaveConnector.type (${this.type}) is invalid.`)}this.type!==Ce.type.BRACE&&this.type!==Ce.type.BOLD_DOUBLE_LEFT&&this.type!==Ce.type.BOLD_DOUBLE_RIGHT&&this.type!==Ce.type.NONE&&t.fillRect(a,e,s,n),this.type===Ce.type.THIN_DOUBLE&&t.fillRect(a-3,e,s,n),t.save(),t.setLineWidth(2),t.setFont(this.textFont);for(let e=0;et.reduce(((t,e)=>t+e),0);function ke(t,e,i,s){let a=e;for(let e=i+1;e{e.addToModifierContext(new be);const s=(new Xt).addTickable(e).preFormat(),a=s.getMetrics();return s.setX(t+a.totalLeftPx),t+s.getWidth()+a.totalRightPx+i}),e)}static plotDebugging(t,e,i,s,a,n){const o=i+(n=Object.assign({stavePadding:X.currentMusicFont().lookupMetric("stave.padding")},n)).stavePadding,l=e.contextGaps;t.save(),t.setFont(M.SANS_SERIF,8),l.gaps.forEach((e=>{var i,n,l;i=o+e.x1,n=o+e.x2,l="rgba(100,200,100,0.4)",t.beginPath(),t.setStrokeStyle(l),t.setFillStyle(l),t.setLineWidth(1),t.fillRect(i,s,Math.max(n-i,0),a-s),t.setFillStyle("green"),t.fillText(Math.round(e.x2-e.x1).toString(),o+e.x1,a+12)})),t.setFillStyle("red"),t.fillText(`Loss: ${(e.totalCost||0).toFixed(2)} Shift: ${(e.totalShift||0).toFixed(2)} Gap: ${l.total.toFixed(2)}`,o-20,a+27),t.restore()}static FormatAndDraw(t,e,i,s){let a={auto_beam:!1,align_rests:!1};"object"==typeof s?a=Object.assign(Object.assign({},a),s):"boolean"==typeof s&&(a.auto_beam=s);const n=new Yt(X.TIME4_4).setMode(Yt.Mode.SOFT).addTickables(i),o=a.auto_beam?Oe.applyAndGetBeams(n):[];return(new Fe).joinVoices([n]).formatToStave([n],e,{align_rests:a.align_rests,stave:e}),n.setStave(e).draw(t,e),o.forEach((e=>e.setContext(t).draw())),n.getBoundingBox()}static FormatAndDrawTab(t,e,i,s,a,n,o){let l={auto_beam:n,align_rests:!1};"object"==typeof o?l=Object.assign(Object.assign({},l),o):"boolean"==typeof o&&(l.auto_beam=o);const r=new Yt(X.TIME4_4).setMode(Yt.Mode.SOFT).addTickables(a),h=new Yt(X.TIME4_4).setMode(Yt.Mode.SOFT).addTickables(s),c=l.auto_beam?Oe.applyAndGetBeams(r):[];(new Fe).joinVoices([r]).joinVoices([h]).formatToStave([r,h],i,{align_rests:l.align_rests}),r.draw(t,i),h.draw(t,e),c.forEach((e=>e.setContext(t).draw())),new Ce(i,e).setContext(t).draw()}static AlignRestsToNotes(t,e,i){t.forEach(((s,a)=>{if(d(s)&&s.isRest()){if(s.getTuplet()&&!i)return;const n=s.getGlyph().position.toUpperCase();if("R/4"!==n&&"B/4"!==n)return;if(e||s.getBeam()){const e=s.getKeyProps()[0];if(0===a)e.line=ke(t,e.line,a,!1);else if(a>0&&aFe.AlignRestsToNotes(t.getTickables(),e)))}preCalculateMinTotalWidth(t){const e=X.currentMusicFont().lookupMetric("stave.unalignedNotePadding");let i=0,s=0,a=0;const n=[],o=[];if(this.hasMinTotalWidth)return this.minTotalWidth;if(!t)throw new x("BadArgument","'voices' required to run preCalculateMinTotalWidth");this.createTickContexts(t);const{list:l,map:r}=this.tickContexts;this.minTotalWidth=0,l.forEach((e=>{const l=r[e];l.preFormat(),l.getTickables().length{s+=t.getMetrics().width,a+=t.getTicks().value(),n.push(t.getMetrics().width),o.push(t.getTicks().value())}));const h=l.getWidth();this.minTotalWidth+=h})),this.hasMinTotalWidth=!0;const h=s>0?s/n.length:1/n.length,c=Ee(n.map((t=>Math.pow(t-h,2)))),b=Math.pow(c/n.length,.5)/h,d=a/o.length,m=Ee(o.map((t=>Math.pow(t-d,2)))),g=Math.pow(m/o.length,.5)/d,_=Math.max(g,b)*l.length*e,p=e*i;return this.minTotalWidth+Math.max(p,_)}getMinTotalWidth(){if(!this.hasMinTotalWidth)throw new x("NoMinTotalWidth","Call 'preCalculateMinTotalWidth' or 'preFormat' before calling 'getMinTotalWidth'");return this.minTotalWidth}static getResolutionMultiplier(t){if(!t||!t.length)throw new x("BadArgument","No voices to format");const e=t[0].getTotalTicks();return t.reduce(((t,i)=>{if(!i.getTotalTicks().equals(e))throw new x("TickMismatch","Voices should have same total note duration in ticks.");if(i.getMode()===Yt.Mode.STRICT&&!i.isComplete())throw new x("IncompleteVoice","Voice does not have enough notes.");return Math.max(t,v.LCM(t,i.getResolutionMultiplier()))}),1)}createModifierContexts(t){if(0==t.length)return;const e=Fe.getResolutionMultiplier(t),i=new Map,s=[];t.forEach((t=>{const a=new v(0,e);t.getTickables().forEach((t=>{const e=a.numerator;let n=i.get(t.getStave());if(n||(i.set(t.getStave(),{}),n=i.get(t.getStave())),!(n?n[e]:void 0)){const t=new be;s.push(t),n[e]=t}t.addToModifierContext(n[e]),a.add(t.getTicks())}))})),this.modifierContexts.push({map:i,array:s,resolutionMultiplier:e})}createTickContexts(t){const e=function(t,e,i){if(0==t.length)return{map:{},array:[],list:[],resolutionMultiplier:0};const s={},a=[],n=[],o=Fe.getResolutionMultiplier(t);return t.forEach(((t,l)=>{const r=new v(0,o);t.getTickables().forEach((t=>{const o=r.numerator;if(!s[o]){const t=e({tickID:o});n.push(t),s[o]=t,a.push(o)}i(t,s[o],l),r.add(t.getTicks())}))})),{map:s,array:n,list:a.sort(((t,e)=>t-e)),resolutionMultiplier:o}}(t,(t=>new Xt(t)),((t,e,i)=>e.addTickable(t,i)));this.tickContexts=e;const i=this.tickContexts.array;return i.forEach((t=>{t.tContexts=i})),e}getTickContexts(){return this.tickContexts}preFormat(t=0,e,i,s){const a=this.tickContexts;if(!a)throw new x("NoTickContexts","preFormat requires TickContexts");const{list:n,map:o}=a;this.lossHistory=[],i&&s&&i.forEach((t=>t.setStave(s).preFormat()));let l=0,r=0;this.minTotalWidth=0;let h=0;n.forEach((t=>{const e=o[t];e.preFormat();const i=e.getWidth();this.minTotalWidth+=i;const s=e.getMaxTicks().value();h+=s;const a=e.getMetrics();l=l+r+a.totalLeftPx,e.setX(l),r=i-a.totalLeftPx}));const{globalSoftmax:c,softmaxFactor:b,maxIterations:d}=this.formatterOptions,m=Ee(n.map((t=>Math.pow(b,o[t].getMaxTicks().value()/h))));if(this.minTotalWidth=l+r,this.hasMinTotalWidth=!0,t<=0)return this.evaluate();const g=o[n[0]],_=o[n[n.length-1]];function p(t){return n.map(((e,i)=>{const s=o[e],a=s.getTickablesByVoice();let l;if(i>0){const e=o[n[i-1]];for(let r=i-1;r>=0;r--){const i=o[n[r]].getTickablesByVoice(),d=[];if(Object.keys(a).forEach((t=>{i[t]&&d.push(t)})),d.length>0){let n=0,o=1/0,r=0;if(d.forEach((t=>{const e=i[t].getTicks().value();e>n&&(l=i[t],n=e);const s=a[t],r=s.getX()-(s.getMetrics().modLeftPx+s.getMetrics().leftDisplacedHeadPx),h=i[t].getMetrics(),c=i[t].getX()+h.notePx+h.modRightPx+h.rightDisplacedHeadPx;o=Math.min(o,r-c)})),o=Math.min(o,s.getX()-(e.getX()+.05*t)),c){const e=h;r=Math.pow(b,n/e)/m*t}else void 0!==l&&(r=l.getVoice().softmax(n)*t);return{expectedDistance:r,maxNegativeShiftPx:o,fromTickable:l}}}}return{expectedDistance:0,fromTickablePx:0,maxNegativeShiftPx:0}}))}function f(t){const e=y/2;let i=0;return n.forEach(((s,a)=>{const n=o[s];if(a>0){const e=n.getX(),s=t[a],o=u(s.fromTickable).getX()+s.expectedDistance-(e+i);let l=0;o>0?i+=o:o<0&&(l=Math.min(s.maxNegativeShiftPx,Math.abs(o)),i+=-l),n.setX(e+i)}n.getCenterAlignedTickables().forEach((t=>{t.setCenterXShift(e-n.getX())}))})),_.getX()-g.getX()}const y=t-_.getMetrics().notePx-_.getMetrics().totalRightPx-g.getMetrics().totalLeftPx,S=X.currentMusicFont(),T=S.lookupMetric("stave.endPaddingMin"),w=S.lookupMetric("stave.endPaddingMax"),v=S.lookupMetric("stave.padding");let D=y;const C=p(D);let E=f(C);if(1===n.length)return 0;const k=((t,e)=>{let i=t/2;if(e.length>1)for(let t=1;t{let e=0;const i=_&&_.getMaxTickable();if(i){const s=i.getVoice();if(s.getTicksUsed().value()>s.getTotalTicks().value())return 2*wP&&M>0||E+N1;)D-=E-P,N=F(D),A=N-(w-T),E=f(p(D)),M--;return this.justifyWidth=t,this.evaluate()}evaluate(){const t=this.tickContexts,e=this.justifyWidth;this.contextGaps={total:0,gaps:[]},t.list.forEach(((e,i)=>{if(0===i)return;const s=t.list[i-1],a=t.map[s],n=t.map[e],o=a.getMetrics(),l=n.getMetrics(),r=a.getX()+o.notePx+o.totalRightPx,h=n.getX()-l.totalLeftPx,c=h-r;this.contextGaps.total+=c,this.contextGaps.gaps.push({x1:r,x2:h}),n.getFormatterMetrics().freedom.left=c,a.getFormatterMetrics().freedom.right=c})),this.durationStats={};const i=this.durationStats;this.voices.forEach((t=>{t.getTickables().forEach(((t,s,a)=>{const n=t.getTicks().clone().simplify().toString(),o=t.getMetrics(),l=t.getFormatterMetrics(),r=t.getX()+o.notePx+o.modRightPx+o.rightDisplacedHeadPx;let h=0;if(s{t.getTickables().forEach((t=>{const e=t.getTicks().clone().simplify().toString(),a=t.getFormatterMetrics();a.space.mean=i[e].mean,a.duration=e,a.iterations+=1,a.space.deviation=a.space.used-a.space.mean,s+=Math.pow(a.space.deviation,2)}))})),this.totalCost=Math.sqrt(s),this.lossHistory.push(this.totalCost),this.totalCost}tune(t){var e;const i=this.tickContexts;if(!i)return 0;const s=null!==(e=null==t?void 0:t.alpha)&&void 0!==e?e:.5;let a=0;return this.totalShift=0,i.list.forEach(((t,e,n)=>{const o=i.map[t],l=e>0?i.map[n[e-1]]:void 0,r=et.getFormatterMetrics().space.deviation)));h>0?a=-Math.min(o.getFormatterMetrics().freedom.right,Math.abs(h)):h<0&&(a=r?Math.min(r.getFormatterMetrics().freedom.right,Math.abs(h)):0),a*=s,this.totalShift+=a})),this.evaluate()}postFormat(){return this.modifierContexts.forEach((t=>{t.array.forEach((t=>t.postFormat()))})),this.tickContexts.list.forEach((t=>{this.tickContexts.map[t].postFormat()})),this}joinVoices(t){return this.createModifierContexts(t),this.hasMinTotalWidth=!1,this}format(t,e,i){const s=Object.assign({align_rests:!1},i);this.voices=t;const a=this.formatterOptions.softmaxFactor;return a&&this.voices.forEach((t=>t.setSoftmaxFactor(a))),this.alignRests(t,s.align_rests),this.createTickContexts(t),this.preFormat(e,s.context,t,s.stave),s.stave&&this.postFormat(),this}formatToStave(t,e,i){const s=Object.assign({context:e.getContext()},i),a=e.getNoteEndX()-e.getNoteStartX()-ve.defaultPadding;return function(...t){Fe.DEBUG&&f("Vex.Flow.Formatter",t)}("Formatting voices to width: ",a),this.format(t,a,s)}getTickContext(t){var e;return null===(e=this.tickContexts)||void 0===e?void 0:e.map[t]}}var Ne;Fe.DEBUG=!1,function(t){t[t.BOTTOM=-1]="BOTTOM",t[t.TOP=1]="TOP"}(Ne||(Ne={}));class Ae extends O{constructor(t,e={}){if(super(),this.numerator_glyphs=[],this.denom_glyphs=[],!t||!t.length)throw new x("BadArguments","No notes provided for tuplet.");this.options=e,this.notes=t,this.num_notes=null!=this.options.num_notes?this.options.num_notes:t.length,this.options.beats_occupied&&this.beatsOccupiedDeprecationWarning(),this.notes_occupied=this.options.notes_occupied||this.options.beats_occupied||2,null!=this.options.bracketed?this.bracketed=this.options.bracketed:this.bracketed=t.some((t=>!t.hasBeam())),this.ratioed=null!=this.options.ratioed?this.options.ratioed:Math.abs(this.notes_occupied-this.num_notes)>1,this.point=X.currentMusicFont().lookupMetric("digits.tupletPoint"),this.y_pos=16,this.x_pos=100,this.width=200,this.setTupletLocation(this.options.location||Ae.LOCATION_TOP),Fe.AlignRestsToNotes(t,!0,!0),this.resolveGlyphs(),this.attach()}static get CATEGORY(){return _.Tuplet}static get LOCATION_TOP(){return Ne.TOP}static get LOCATION_BOTTOM(){return Ne.BOTTOM}static get NESTING_OFFSET(){return 15}static get metrics(){return X.currentMusicFont().getMetrics().glyphs.tuplet}attach(){for(let t=0;t=1;)this.numerator_glyphs.unshift(new Q("timeSig"+t%10,this.point)),t=parseInt((t/10).toString(),10);for(this.denom_glyphs=[],t=this.notes_occupied;t>=1;)this.denom_glyphs.unshift(new Q("timeSig"+t%10,this.point)),t=parseInt((t/10).toString(),10)}getNestedTupletCount(){const t=this.location,e=this.notes[0];let i=a(e,t),s=a(e,t);function a(t,e){return t.getTupletStack().filter((t=>t.location===e)).length}return this.notes.forEach((e=>{const n=a(e,t);i=n>i?n:i,s=n0&&(s=Math.min(n,s))}}}else{let t=Ae.metrics.bottomLine;this.notes.forEach((e=>{const i=e.getModifierContext();i&&(t=Math.max(t,i.getState().text_line+1))})),s=i.checkStave().getYForLine(t)+Ae.metrics.noteHeadOffset;for(let t=0;ts&&(s=e)}}return s+t+e}draw(){const t=this.checkContext();this.setRendered();const e=this.notes[0],i=this.notes[this.notes.length-1];this.bracketed?(this.x_pos=e.getTieLeftX()-5,this.width=i.getTieRightX()-this.x_pos+5):(this.x_pos=e.getStemX(),this.width=i.getStemX()-this.x_pos),this.y_pos=this.getYPosition();const s=(t,e)=>t+u(e.getMetrics().width);let a=this.numerator_glyphs.reduce(s,0);this.ratioed&&(a=this.denom_glyphs.reduce(s,a),a+=.32*this.point);const n=this.x_pos+this.width/2-a/2;if(this.bracketed){const e=this.width/2-a/2-5;e>0&&(t.fillRect(this.x_pos,this.y_pos,e,1),t.fillRect(this.x_pos+this.width/2+a/2+5,this.y_pos,e,1),t.fillRect(this.x_pos,this.y_pos+(this.location===Ae.LOCATION_BOTTOM?1:0),1,10*this.location),t.fillRect(this.x_pos+this.width,this.y_pos+(this.location===Ae.LOCATION_BOTTOM?1:0),1,10*this.location))}const o=X.currentMusicFont().lookupMetric("digits.shiftY",0);let l=0;if(this.numerator_glyphs.forEach((e=>{e.render(t,n+l,this.y_pos+this.point/3-2+o),l+=u(e.getMetrics().width)})),this.ratioed){const e=n+l+.16*this.point,i=.06*this.point;t.beginPath(),t.arc(e,this.y_pos-.08*this.point,i,0,2*Math.PI,!1),t.closePath(),t.fill(),t.beginPath(),t.arc(e,this.y_pos+.12*this.point,i,0,2*Math.PI,!1),t.closePath(),t.fill(),l+=.32*this.point,this.denom_glyphs.forEach((e=>{e.render(t,n+l,this.y_pos+this.point/3-2+o),l+=u(e.getMetrics().width)}))}}}function Pe(t){let e=0;return t.forEach((t=>{t.keyProps&&t.keyProps.forEach((t=>{e+=t.line-3}))})),e>=0?st.DOWN:st.UP}const Me="L",Be="R",Re="B";class Oe extends O{constructor(t,e=!1){if(super(),this.slope=0,this.y_shift=0,this.forcedPartialDirections={},!t||0===t.length)throw new x("BadArguments","No notes provided for beam.");if(1===t.length)throw new x("BadArguments","Too few notes for beam.");if(this.ticks=t[0].getIntrinsicTicks(),this.ticks>=X.durationToTicks("4"))throw new x("BadArguments","Beams can only be applied to notes shorter than a quarter note.");let i,s;for(this.stem_direction=st.UP,i=0;it+e.getStemDirection()),0);a=e>-1?st.UP:st.DOWN}for(i=0;i(new v).parse(t)));{const e=parseInt(t.split("/")[0],10),i=parseInt(t.split("/")[1],10);if(e%3==0)return[new v(3,i)];if(i>4)return[new v(2,i)];if(i<=4)return[new v(1,i)]}return[new v(1,4)]}static applyAndGetBeams(t,e,i){return Oe.generateBeams(t.getTickables(),{groups:i,stem_direction:e})}static generateBeams(t,e={}){e.groups&&e.groups.length||(e.groups=[new v(2,8)]);const i=e.groups.map((t=>{if(!t.multiply)throw new x("InvalidBeamGroups","The beam groups must be an array of Vex.Flow.Fractions");return t.clone().multiply(X.RESOLUTION,1)})),s=t;let a=0,n=[],o=[];function l(){i.length-1>a?a+=1:a=0}!function(){let t=[],e=new v(0,1);s.forEach((s=>{if(t=[],s.shouldIgnoreTicks())return n.push(o),void(o=t);o.push(s);const r=i[a].clone(),h=(c=o,c.reduce(((t,e)=>e.getTicks().clone().add(t)),new v(0,1))).add(e);var c;const b=X.durationToNumber(s.getDuration())<8;if(b&&s.getTuplet()&&(r.numerator*=2),h.greaterThan(r)){if(!b){const e=o.pop();e&&t.push(e)}n.push(o);do{e=h.subtract(i[a]),l()}while(e.greaterThanEquals(i[a]));o=t}else h.equals(r)&&(n.push(o),e=new v(0,1),o=t,l())})),o.length>0&&n.push(o)}(),function(){const t=[];n.forEach((i=>{let s=[];i.forEach(((i,a,n)=>{const o=0===a||a===n.length-1,l=n[a-1],r=!e.beam_rests&&i.isRest(),h=e.beam_rests&&e.beam_middle_only&&i.isRest()&&o;let c=!1;if(e.maintain_stem_directions&&l&&!i.isRest()&&!l.isRest()){const t=l.getStemDirection();c=i.getStemDirection()!==t}const b=parseInt(i.getDuration(),10)<8;r||h||c||b?(s.length>0&&t.push(s),s=c?[i]:[]):s.push(i)})),s.length>0&&t.push(s)})),n=t}(),n.forEach((t=>{let i;if(e.maintain_stem_directions){const e=function(t){for(let e=0;e{t.setStemDirection(e)}))}(t,i)}));const r=n.filter((t=>{if(t.length>1){let e=!0;return t.forEach((t=>{t.getIntrinsicTicks()>=X.durationToTicks("4")&&(e=!1)})),e}return!1})),h=function(){const t=[];return n.forEach((e=>{let i;e.forEach((e=>{const s=e.getTuplet();s&&i!==s&&(i=s,t.push(i))}))})),t}(),c=[];return r.forEach((t=>{const i=new Oe(t);e.show_stemlets&&(i.render_options.show_stemlets=!0),e.secondary_breaks&&(i.render_options.secondary_break_ticks=X.durationToTicks(e.secondary_breaks)),!0===e.flat_beams&&(i.render_options.flat_beams=!0,i.render_options.flat_beam_offset=e.flat_beam_offset),c.push(i)})),h.forEach((t=>{const e=t.notes[0].stem_direction===st.DOWN?Ne.BOTTOM:Ne.TOP;t.setTupletLocation(e);let i=!1;for(let e=0;et.getGlyph().beam_count)).reduce(((t,e)=>e>t?e:t))}breakSecondaryAt(t){return this.break_on_indices=t,this}setPartialBeamSideAt(t,e){return this.forcedPartialDirections[t]=e,this}unsetPartialBeamSideAt(t){return delete this.forcedPartialDirections[t],this}getSlopeY(t,e,i,s){return i+(t-e)*s}calculateSlope(){const{notes:t,stem_direction:e,render_options:{max_slope:i,min_slope:s,slope_iterations:a,slope_cost:n}}=this,o=t[0],l=function(t,e){const i=t.getStemExtents().topY,s=t.getStemX();return(e.getStemExtents().topY-i)/(e.getStemX()-s)}(o,t[t.length-1]),r=(i-s)/a;let h=Number.MAX_VALUE,c=0,b=0;for(let a=s;a<=i;a+=r){let i=0,s=0;for(let n=1;na)&&(r=a,o=Math.min(...s.getYs()),l=s.getBeamCount())}let h=n/t.length;const c=s+l*(1.5*i),b=o+c*-e;e===st.DOWN&&hb&&(h=o-c),a?(e===st.DOWN&&h>a||e===st.UP&&h=8&&(c=-1!==this.break_on_indices.indexOf(r),this.render_options.secondary_break_ticks&&l>=this.render_options.secondary_break_ticks&&(l=0,c=!0));const b=h.getIntrinsicTicks(){const i=e.getStem();if(i){const s=e.getStemX();i.setNoteHeadXBounds(s,s),i.setContext(t).draw()}}),this)}drawBeamLines(t){const e=["4","8","16","32","64"],i=this.notes[0];let s=this.getBeamYToDraw();const a=i.getStemX(),n=this.render_options.beam_width*this.stem_direction;for(let i=0;i0||!0===e;return!e||a>0||(this.pos=s),o?this.matchSuccess():this.matchFail(s),{success:o,results:i,numMatches:a}}expectZeroOrMore(t){return this.expectOneOrMore(t,!0)}expect(t){if(Ie("Evaluating rule function:",t),!t)throw new x("Invalid rule function");let e;const i=t.bind(this.grammar)();if(i.token)e=this.matchToken(i.token,!0===i.noSpace),e.success&&(this.pos+=e.incrementPos);else{if(!i.expect)throw Ie(i),new x("Bad grammar! No `token` or `expect` property "+i);e=i.oneOrMore?this.expectOneOrMore(i):i.zeroOrMore?this.expectZeroOrMore(i):this.expectOne(i)}const s=[];return e.matches=s,e.results&&e.results.forEach((t=>s.push(Ge(t)))),i.run&&e.success&&i.run({matches:s}),e}}function He(...t){Je.DEBUG&&f("Vex.Flow.EasyScore",t)}Ye.DEBUG=!1;class je{constructor(t){this.builder=t}begin(){return this.LINE}LINE(){return{expect:[this.PIECE,this.PIECES,this.EOL]}}PIECE(){return{expect:[this.CHORDORNOTE,this.PARAMS],run:()=>this.builder.commitPiece()}}PIECES(){return{expect:[this.COMMA,this.PIECE],zeroOrMore:!0}}PARAMS(){return{expect:[this.DURATION,this.TYPE,this.DOTS,this.OPTS]}}CHORDORNOTE(){return{expect:[this.CHORD,this.SINGLENOTE],or:!0}}CHORD(){return{expect:[this.LPAREN,this.NOTES,this.RPAREN],run:t=>this.builder.addChord(t.matches[1])}}NOTES(){return{expect:[this.NOTE],oneOrMore:!0}}NOTE(){return{expect:[this.NOTENAME,this.ACCIDENTAL,this.OCTAVE]}}SINGLENOTE(){return{expect:[this.NOTENAME,this.ACCIDENTAL,this.OCTAVE],run:t=>{const e=t;this.builder.addSingleNote(e.matches[0],e.matches[1],e.matches[2])}}}ACCIDENTAL(){return{expect:[this.MICROTONES,this.ACCIDENTALS],maybe:!0,or:!0}}DOTS(){return{expect:[this.DOT],zeroOrMore:!0,run:t=>this.builder.setNoteDots(t.matches)}}TYPE(){return{expect:[this.SLASH,this.MAYBESLASH,this.TYPES],maybe:!0,run:t=>this.builder.setNoteType(t.matches[2])}}DURATION(){return{expect:[this.SLASH,this.DURATIONS],maybe:!0,run:t=>this.builder.setNoteDuration(t.matches[1])}}OPTS(){return{expect:[this.LBRACKET,this.KEYVAL,this.KEYVALS,this.RBRACKET],maybe:!0}}KEYVALS(){return{expect:[this.COMMA,this.KEYVAL],zeroOrMore:!0}}KEYVAL(){return{expect:[this.KEY,this.EQUALS,this.VAL],run:t=>this.builder.addNoteOption(t.matches[0],t.matches[2].slice(1,-1))}}VAL(){return{expect:[this.SVAL,this.DVAL],or:!0}}KEY(){return{token:"[a-zA-Z][a-zA-Z0-9]*"}}DVAL(){return{token:'["][^"]*["]'}}SVAL(){return{token:"['][^']*[']"}}NOTENAME(){return{token:"[a-gA-G]"}}OCTAVE(){return{token:"[0-9]+"}}ACCIDENTALS(){return{token:"bb|b|##|#|n"}}MICROTONES(){return{token:"bbs|bss|bs|db|d|\\+\\+-|\\+-|\\+\\+|\\+|k|o"}}DURATIONS(){return{token:"[0-9whq]+"}}TYPES(){return{token:"[rRsSmMhHgG]"}}LPAREN(){return{token:"[(]"}}RPAREN(){return{token:"[)]"}}COMMA(){return{token:"[,]"}}DOT(){return{token:"[.]"}}SLASH(){return{token:"[/]"}}MAYBESLASH(){return{token:"[/]?"}}EQUALS(){return{token:"[=]"}}LBRACKET(){return{token:"\\["}}RBRACKET(){return{token:"\\]"}}EOL(){return{token:"$"}}}class Xe{constructor(t){this.chord=[],this.dots=0,this.options={},this.duration=t}}class Ve{constructor(t){this.commitHooks=[],this.factory=t,this.reset()}reset(t){this.options=Object.assign({stem:"auto",clef:"treble"},t),this.elements={notes:[],accidentals:[]},this.rollingDuration="8",this.resetPiece()}getFactory(){return this.factory}getElements(){return this.elements}addCommitHook(t){this.commitHooks.push(t)}resetPiece(){He("resetPiece"),this.piece=new Xe(this.rollingDuration)}setNoteDots(t){He("setNoteDots:",t),t&&(this.piece.dots=t.length)}setNoteDuration(t){He("setNoteDuration:",t),this.rollingDuration=this.piece.duration=t||this.rollingDuration}setNoteType(t){He("setNoteType:",t),t&&(this.piece.type=t)}addNoteOption(t,e){He("addNoteOption: key:",t,"value:",e),this.piece.options[t]=e}addNote(t,e,i){He("addNote:",t,e,i),this.piece.chord.push({key:t,accid:e,octave:i})}addSingleNote(t,e,i){He("addSingleNote:",t,e,i),this.addNote(t,e,i)}addChord(t){He("startChord"),"object"!=typeof t[0]?this.addSingleNote(t[0]):t.forEach((t=>{t&&this.addNote(...t)})),He("endChord")}commitPiece(){He("commitPiece");const{factory:t}=this;if(!t)return;const e=Object.assign(Object.assign({},this.options),this.piece.options),i=u(e.stem,"BadArguments","options.stem is not defined").toLowerCase(),s=u(e.clef,"BadArguments","options.clef is not defined").toLowerCase(),{chord:a,duration:n,dots:o,type:l}=this.piece,r=tt.accidentals,h=a.map((t=>{var e;return t.key+(r.includes(null!==(e=t.accid)&&void 0!==e?e:"")?t.accid:"")+"/"+t.octave})),c="auto"===i,b="g"==(null==l?void 0:l.toLowerCase())?t.GhostNote({duration:n,dots:o}):t.StaveNote({keys:h,duration:n,dots:o,type:l,clef:s,auto_stem:c});c||b.setStemDirection("up"===i?st.UP:st.DOWN);const d=[];a.forEach(((e,i)=>{const s=e.accid;if("string"==typeof s){const e=t.Accidental({type:s});b.addModifier(e,i),d.push(e)}else d.push(void 0)}));for(let t=0;tt(e,b,this))),this.elements.notes.push(b),this.elements.accidentals.push(d),this.resetPiece()}}function Ke(t,e){void 0!==t.id&&e.setAttribute("id",t.id)}const $e=/\s*,\s*/;function qe(t,e){void 0!==t.class&&t.class.split($e).forEach((t=>e.addClass(t)))}class Je{constructor(t={}){this.defaults={clef:"treble",time:"4/4",stem:"auto"},this.setOptions(t)}set(t){return this.defaults=Object.assign(Object.assign({},this.defaults),t),this}setOptions(t){var e,i;const s=t.factory,a=null!==(e=t.builder)&&void 0!==e?e:new Ve(s);return this.options=Object.assign(Object.assign({commitHooks:[Ke,qe,pt.easyScoreHook,Rt.easyScoreHook],throwOnError:!1},t),{factory:s,builder:a}),this.factory=s,this.builder=a,this.grammar=new je(this.builder),this.parser=new Ye(this.grammar),null===(i=this.options.commitHooks)||void 0===i||i.forEach((t=>this.addCommitHook(t))),this}setContext(t){return this.factory.setContext(t),this}parse(t,e={}){this.builder.reset(e);const i=this.parser.parse(t);if(!i.success&&this.options.throwOnError)throw He(i),new x("Error parsing line: "+t);return i}beam(t,e){return this.factory.Beam({notes:t,options:e}),t}tuplet(t,e){return this.factory.Tuplet({notes:t,options:e}),t}notes(t,e={}){return e=Object.assign({clef:this.defaults.clef,stem:this.defaults.stem},e),this.parse(t,e),this.builder.getElements().notes}voice(t,e={}){return e=Object.assign({time:this.defaults.time},e),this.factory.Voice(e).addTickables(t)}addCommitHook(t){this.builder.addCommitHook(t)}}Je.DEBUG=!1;const Qe="Ghost note must have valid initialization data to identify duration.";class Ze extends Lt{static get CATEGORY(){return _.GhostNote}constructor(t){if(!t)throw new x("BadArguments",Qe);let e;if("string"==typeof t)e={duration:t};else{if("object"!=typeof t)throw new x("BadArguments",Qe);e=t}super(e),this.setWidth(0)}isRest(){return!0}setStave(t){return super.setStave(t),this}addToModifierContext(t){return this}preFormat(){return this.preFormatted=!0,this}draw(){this.setRendered();for(let t=0;t=oi.type.TEXT&&t<=oi.type.MIXED&&(this.type=t),this}setCustomText(t,e){return this.custom_depress_text=t||"",this.custom_release_text=e||"",this}setLine(t){return this.line=t,this}drawBracketed(){const t=this.checkContext();let e,i,s=!1;this.notes.forEach(((a,n,o)=>{s=!s;const l=a.getAbsoluteX(),r=a.checkStave().getYForBottomText(this.line+3);if(l{e=!e;const s=i.checkStave(),a=i.getAbsoluteX(),n=s.getYForBottomText(this.line+3),o=X.currentMusicFont().lookupMetric(`pedalMarking.${e?"down":"up"}.point`);let l=0;e?this.custom_depress_text?(l=t.measureText(this.custom_depress_text).width,t.fillText(this.custom_depress_text,a-l/2,n)):ni("pedal_depress",t,a,n,o):this.custom_release_text?(l=t.measureText(this.custom_release_text).width,t.fillText(this.custom_release_text,a-l/2,n)):ni("pedal_release",t,a,n,o)}))}draw(){const t=this.checkContext();this.setRendered(),t.save(),t.setStrokeStyle(this.render_options.color),t.setFillStyle(this.render_options.color),t.setFont(this.textFont),function(...t){oi.DEBUG&&f("Vex.Flow.PedalMarking",t)}("Rendering Pedal Marking"),this.type===oi.type.BRACKET||this.type===oi.type.MIXED?(t.setLineWidth(this.render_options.bracket_line_width),this.drawBracketed()):this.type===oi.type.TEXT&&this.drawText(),t.restore()}}oi.DEBUG=!1,oi.TEXT_FONT={family:M.SERIF,size:12,weight:k.BOLD,style:F.ITALIC},oi.GLYPHS={pedal_depress:{code:"keyboardPedalPed",x_shift:-10,y_shift:0},pedal_release:{code:"keyboardPedalUp",x_shift:-2,y_shift:3}},oi.type={TEXT:1,BRACKET:2,MIXED:3},oi.typeString={text:oi.type.TEXT,bracket:oi.type.BRACKET,mixed:oi.type.MIXED};const li={1:"repeat1Bar",2:"repeat2Bars",4:"repeat4Bars",slash:"repeatBarSlash"};class ri extends ti{static get CATEGORY(){return _.RepeatNote}constructor(t,e,i){super(void 0,Object.assign({duration:"q",align_center:"slash"!==t},e),i);const s=new Q(li[t]||"repeat1Bar",X.currentMusicFont().lookupMetric("repeatNote.point",40),{category:"repeatNote"});this.setGlyph(s)}}function hi(t,e,i,s,a,n,o){t.beginPath(),t.moveTo(e,i),t.lineTo(s,a),t.lineTo(n,o),t.lineTo(e,i),t.closePath(),t.fill()}class ci extends O{constructor(t){super(),this.setNotes(t),this.text="",this.resetFont(),this.render_options={padding_left:4,padding_right:3,line_width:1,line_dash:void 0,rounded_end:!0,color:void 0,draw_start_arrow:!1,draw_end_arrow:!1,arrowhead_length:10,arrowhead_angle:Math.PI/8,text_position_vertical:ci.TextVerticalPosition.TOP,text_justification:ci.TextJustification.CENTER}}static get CATEGORY(){return _.StaveLine}setText(t){return this.text=t,this}setNotes(t){if(!t.first_note&&!t.last_note)throw new x("BadArguments","Notes needs to have either first_note or last_note set.");if(t.first_indices||(t.first_indices=[0]),t.last_indices||(t.last_indices=[0]),t.first_indices.length!==t.last_indices.length)throw new x("BadArguments","Connected notes must have same number of indices.");return this.notes=t,this.first_note=t.first_note,this.first_indices=t.first_indices,this.last_note=t.last_note,this.last_indices=t.last_indices,this}applyLineStyle(){const t=this.checkContext(),e=this.render_options;e.line_dash&&t.setLineDash(e.line_dash),e.line_width&&t.setLineWidth(e.line_width),e.rounded_end?t.setLineCap("round"):t.setLineCap("square")}applyFontStyle(){const t=this.checkContext();t.setFont(this.textFont);const e=this.render_options.color;e&&(t.setStrokeStyle(e),t.setFillStyle(e))}drawArrowLine(t,e,i){const s=this.render_options.draw_start_arrow&&this.render_options.draw_end_arrow,a=e.x,n=e.y,o=i.x,l=i.y,r=Math.sqrt((o-a)*(o-a)+(l-n)*(l-n)),h=(r-this.render_options.arrowhead_length/3)/r;let c,b,d,m;this.render_options.draw_end_arrow||s?(c=Math.round(a+(o-a)*h),b=Math.round(n+(l-n)*h)):(c=o,b=l),this.render_options.draw_start_arrow||s?(d=a+(o-a)*(1-h),m=n+(l-n)*(1-h)):(d=a,m=n),this.render_options.color&&(t.setStrokeStyle(this.render_options.color),t.setFillStyle(this.render_options.color)),t.beginPath(),t.moveTo(d,m),t.lineTo(c,b),t.stroke(),t.closePath();const g=Math.atan2(l-n,o-a),_=Math.abs(this.render_options.arrowhead_length/Math.cos(this.render_options.arrowhead_angle));let x,p,u,f,y,S;(this.render_options.draw_end_arrow||s)&&(x=g+Math.PI+this.render_options.arrowhead_angle,u=o+Math.cos(x)*_,f=l+Math.sin(x)*_,p=g+Math.PI-this.render_options.arrowhead_angle,y=o+Math.cos(p)*_,S=l+Math.sin(p)*_,hi(t,u,f,o,l,y,S)),(this.render_options.draw_start_arrow||s)&&(x=g+this.render_options.arrowhead_angle,u=a+Math.cos(x)*_,f=n+Math.sin(x)*_,p=g-this.render_options.arrowhead_angle,y=a+Math.cos(p)*_,S=n+Math.sin(p)*_,hi(t,u,f,a,n,y,S))}draw(){const t=this.checkContext();this.setRendered();const e=this.first_note,i=this.last_note,s=this.render_options;t.save(),this.applyLineStyle();let a={x:0,y:0},n={x:0,y:0};this.first_indices.forEach(((o,l)=>{const r=this.last_indices[l];a=e.getModifierStartXY(2,o),n=i.getModifierStartXY(1,r);const h=a.y>n.y;a.x+=e.getMetrics().modRightPx+s.padding_left,n.x-=i.getMetrics().modLeftPx+s.padding_right;const c=e.getGlyph().getWidth();e.getKeyProps()[o].displaced&&1===e.getStemDirection()&&(a.x+=c+s.padding_left);i.getKeyProps()[r].displaced&&-1===i.getStemDirection()&&(n.x-=c+s.padding_right),a.y+=h?-3:1,n.y+=h?2:0,this.drawArrowLine(t,a,n)})),t.restore();const o=t.measureText(this.text).width,l=s.text_justification;let r=0;if(l===ci.TextJustification.LEFT)r=a.x;else if(l===ci.TextJustification.CENTER){r=(n.x-a.x)/2+a.x-o/2}else l===ci.TextJustification.RIGHT&&(r=n.x-o);let h=0;const c=s.text_position_vertical;return c===ci.TextVerticalPosition.TOP?h=e.checkStave().getYForTopText():c===ci.TextVerticalPosition.BOTTOM&&(h=e.checkStave().getYForBottomText(X.TEXT_HEIGHT_OFFSET_HACK)),t.save(),this.applyFontStyle(),t.fillText(this.text,r,h),t.restore(),this}}ci.TEXT_FONT=Object.assign({},O.TEXT_FONT),ci.TextVerticalPosition={TOP:1,BOTTOM:2},ci.TextJustification=ae;class bi extends O{constructor(t={}){super(),this.setOptions(t),this.parts=[]}static get CATEGORY(){return _.System}setOptions(t={}){if(!t.factory)throw new x("NoFactory","System.setOptions(options) requires a factory.");this.factory=t.factory,this.options=Object.assign(Object.assign({factory:this.factory,x:10,y:10,width:500,spaceBetweenStaves:12,autoWidth:!1,noJustification:!1,debugFormatter:!1,formatIterations:0,noPadding:!1},t),{details:Object.assign({alpha:.5},t.details),formatOptions:Object.assign({},t.formatOptions)}),!1===this.options.noJustification&&void 0===t.width&&(this.options.autoWidth=!0)}setContext(t){return super.setContext(t),this.factory.setContext(t),this}addConnector(t="double"){return this.connector=this.factory.StaveConnector({top_stave:this.parts[0].stave,bottom_stave:this.parts[this.parts.length-1].stave,type:t}),this.connector}addStave(t){var e;const i=Object.assign({left_bar:!1},t.options),s=null!==(e=t.stave)&&void 0!==e?e:this.factory.Stave({x:this.options.x,y:this.options.y,width:this.options.width,options:i}),a=Object.assign(Object.assign({stave:s,spaceAbove:0,spaceBelow:0,debugNoteMetrics:!1,noJustification:!1},t),{options:i}),n=this.getContext();return a.voices.forEach((t=>t.setContext(n).setStave(s).getTickables().forEach((t=>t.setStave(s))))),this.parts.push(a),s}format(){const t=this.options.details;let e=0;const i=new Fe(t);this.formatter=i;let s=this.options.y,a=0,n=[],o=[];const l=[];this.parts.forEach((t=>{s+=t.stave.space(t.spaceAbove),t.stave.setY(s),i.joinVoices(t.voices),s+=t.stave.space(t.spaceBelow),s+=t.stave.space(this.options.spaceBetweenStaves),t.debugNoteMetrics&&(l.push({y:s,voice:t.voices[0]}),s+=15),n=n.concat(t.voices),o=o.concat(t.stave),a=Math.max(a,t.stave.getNoteStartX())})),this.parts.forEach((t=>t.stave.setNoteStartX(a))),this.options.autoWidth?(e=i.preCalculateMinTotalWidth(n),this.parts.forEach((t=>{t.stave.setWidth(e+ve.rightPadding+(a-this.options.x))}))):e=this.options.noPadding?this.options.width-(a-this.options.x):this.options.width-(a-this.options.x)-ve.defaultPadding,i.format(n,this.options.noJustification?0:e,this.options.formatOptions),i.postFormat();for(let e=0;e{e.voice.getTickables().forEach((i=>St.plotMetrics(t,i,e.y)))}))}}class di extends Lt{constructor(t,e=!1){super(t),this.glyphs=[],this.greatestString=()=>this.positions.map((t=>t.str)).reduce(((t,e)=>t>e?t:e)),this.leastString=()=>this.positions.map((t=>t.str)).reduce(((t,e)=>tthis.width}setStave(t){super.setStave(t);const e=t.getContext();if(this.setContext(e),e){this.width=0;for(let t=0;ti.width),this.width=Math.max(i.getWidth(),this.width)}this.glyph.getWidth=()=>this.width}const i=this.positions.map((({str:e})=>t.getYForLine(Number(e)-1)));return this.setYs(i),this.stem&&this.stem.setYBounds(this.getStemY(),this.getStemY()),this}getPositions(){return this.positions}getModifierStartXY(t,e){if(!this.preFormatted)throw new x("UnformattedNote","Can't call GetModifierStartXY on an unformatted note");if(0===this.ys.length)throw new x("NoYValues","No Y-Values calculated for this note.");let i=0;if(t===Z.Position.LEFT)i=-2;else if(t===Z.Position.RIGHT)i=this.width+2;else if(t===Z.Position.BELOW||t===Z.Position.ABOVE){i=this.glyph.getWidth()/2}return{x:this.getAbsoluteX()+i,y:this.ys[e]}}getLineForRest(){return Number(this.positions[0].str)}preFormat(){this.preFormatted||(this.modifierContext&&this.modifierContext.preFormat(),this.preFormatted=!0)}getStemX(){return this.getCenterGlyphX()}getStemY(){const t=this.checkStave().getNumLines()-.5,e=st.UP===this.stem_direction?-.5:t;return this.checkStave().getYForLine(e)}getStemExtents(){return this.checkStem().getExtents()}drawFlag(){var t;const{beam:e,glyph:i,render_options:{draw_stem:s}}=this,a=this.checkContext(),n=null==e&&s;if(i.flag&&n){const e=this.getStemX(),i=this.getStemDirection()===st.DOWN?this.getStemY()-this.checkStem().getHeight()-(this.glyph?this.glyph.stem_down_extension:0):this.getStemY()-this.checkStem().getHeight()+(this.glyph?this.glyph.stem_up_extension:0);null===(t=this.flag)||void 0===t||t.render(a,e,i)}}drawModifiers(){this.modifiers.forEach((t=>{l(t)&&!this.render_options.draw_dots||(t.setContext(this.getContext()),t.drawWithStyle())}))}drawStemThrough(){const t=this.getStemX(),e=this.getStemY(),i=this.checkContext(),s=this.render_options.draw_stem,a=this.render_options.draw_stem_through_stave;if(s&&a){const s=function(t,e,i,s){const a=1!==s,n=-1!==s,o=i.getSpacingBetweenLines(),l=i.getNumLines(),r=[];return e.forEach((e=>{const h=e.indexOf(l)>-1,c=e.indexOf(1)>-1;if(a&&c||n&&h)return;1===e.length&&e.push(e[0]);const b=[];e.forEach(((e,a,n)=>{const r=1===e,h=e===l;let c=i.getYForLine(e-1);0!==a||r?a!==n.length-1||h||(c+=o/2-1):c-=o/2-1,b.push(c),1===s&&r?b.push(t-2):-1===s&&h&&b.push(t+2)})),r.push(b.sort(((t,e)=>t-e)))})),r}(e,function(t,e){const i=[];let s=[];for(let a=1;a<=t;a++)e.indexOf(a)>-1?(i.push(s),s=[]):s.push(a);return s.length>0&&i.push(s),i}(this.checkStave().getNumLines(),this.positions.map((t=>Number(t.str)))),this.checkStave(),this.getStemDirection());i.save(),i.setLineWidth(st.WIDTH),s.forEach((e=>{0!==e.length&&(i.beginPath(),i.moveTo(t,e[0]),i.lineTo(t,e[e.length-1]),i.stroke(),i.closePath())})),i.restore()}}drawPositions(){const t=this.checkContext(),e=this.getAbsoluteX(),i=this.ys;for(let s=0;s{const i=ui.GLYPHS[e];if(!i)throw new x("Invalid dynamics character: "+e);const s=u(this.render_options.glyph_font_size),a=new Q(i.code,s,{category:"textNote"});this.glyphs.push(a),t+=i.width})),this.setWidth(t),this.preFormatted=!0,this}draw(){this.setRendered();const t=this.getAbsoluteX(),e=this.checkStave().getYForLine(this.line+-3);pi("Rendering Dynamics: ",this.sequence);let i=t;this.glyphs.forEach(((t,s)=>{const a=this.sequence[s];t.render(this.checkContext(),i,e),i+=ui.GLYPHS[a].width}))}}ui.DEBUG=!1;class fi extends St{constructor(t,e){super({duration:"b"});const i=new Se(t,e);this.timeSigInfo=i.getInfo(),this.setWidth(this.timeSigInfo.glyph.getMetrics().width),this.ignore_ticks=!0}static get CATEGORY(){return _.TimeSigNote}addToModifierContext(t){return this}preFormat(){return this.preFormatted=!0,this}draw(){const t=this.checkStave(),e=this.checkContext();this.setRendered(),this.timeSigInfo.glyph.getContext()||this.timeSigInfo.glyph.setContext(e),this.timeSigInfo.glyph.setStave(t),this.timeSigInfo.glyph.setYShift(t.getYForLine(2)-t.getYForGlyphs()),this.timeSigInfo.glyph.renderToStave(this.getAbsoluteX())}}class yi extends O{constructor(t){super(),t.start&&(this.start=t.start),t.stop&&(this.stop=t.stop),this.line=1,this.render_options={harsh:!1,wave_height:6,wave_width:4,wave_girth:2,vibrato_width:0}}static get CATEGORY(){return _.VibratoBracket}setLine(t){return this.line=t,this}setHarsh(t){return this.render_options.harsh=t,this}draw(){const t=this.checkContext();this.setRendered();const e=this.start&&this.start.checkStave().getYForTopText(this.line)||this.stop&&this.stop.checkStave().getYForTopText(this.line)||0,i=this.start&&this.start.getAbsoluteX()||this.stop&&this.stop.checkStave().getTieStartX()||0,s=this.stop&&this.stop.getAbsoluteX()-this.stop.getWidth()-5||this.start&&this.start.checkStave().getTieEndX()-10||0;this.render_options.vibrato_width=s-i,function(...t){yi.DEBUG&&f("Vex.Flow.VibratoBracket",t)}("Rendering VibratoBracket: start_x:",i,"stop_x:",s,"y:",e),he.renderVibrato(t,i,e,this.render_options)}}function Si(...t){Ti.DEBUG&&f("Vex.Flow.Factory",t)}yi.DEBUG=!1;class Ti{constructor(t={}){Si("New factory: ",t),this.options={stave:{space:10},renderer:{elementId:"",width:500,height:200,background:"#FFF"},font:Ti.TEXT_FONT},this.setOptions(t)}static newFromElementId(t,e=500,i=200){return new Ti({renderer:{elementId:t,width:e,height:i}})}reset(){this.renderQ=[],this.systems=[],this.staves=[],this.voices=[],this.stave=void 0}setOptions(t){this.options=Object.assign(Object.assign({},this.options),t),this.initRenderer(),this.reset()}initRenderer(){const{elementId:t,width:e,height:i,background:s}=this.options.renderer;if(null==t)return;if(""==t)throw Si(this),new x("renderer.elementId not set in FactoryOptions");let a=this.options.renderer.backend;if(void 0===a){a=$t(document.getElementById(t))?oe.Backends.CANVAS:oe.Backends.SVG}this.context=oe.buildContext(t,a,e,i,s)}getContext(){return this.context}setContext(t){return this.context=t,this}getStave(){return this.stave}getVoices(){return this.voices}Stave(t){const e=this.options.stave.space,i=Object.assign({x:0,y:0,width:this.options.renderer.width-1*e,options:{spacing_between_lines_px:1*e}},t),s=new ve(i.x,i.y,i.width,i.options);return this.staves.push(s),s.setContext(this.context),this.stave=s,s}TabStave(t){const e=this.options.stave.space,i=Object.assign({x:0,y:0,width:this.options.renderer.width-1*e,options:{spacing_between_lines_px:1.3*e}},t),s=new mi(i.x,i.y,i.width,i.options);return this.staves.push(s),s.setContext(this.context),this.stave=s,s}StaveNote(t){const e=new Ut(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}GlyphNote(t,e,i){const s=new ti(t,e,i);return this.stave&&s.setStave(this.stave),s.setContext(this.context),this.renderQ.push(s),s}RepeatNote(t,e,i){const s=new ri(t,e,i);return this.stave&&s.setStave(this.stave),s.setContext(this.context),this.renderQ.push(s),s}GhostNote(t){const e=new Ze(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}TextNote(t){const e=new pe(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}BarNote(t={}){const e=new Nt(t.type);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}ClefNote(t){const e=Object.assign({type:"treble",options:{size:"default",annotation:void 0}},t),i=new Le(e.type,e.options.size,e.options.annotation);return this.stave&&i.setStave(this.stave),i.setContext(this.context),this.renderQ.push(i),i}TimeSigNote(t){const e=Object.assign({time:"4/4"},t),i=new fi(e.time);return this.stave&&i.setStave(this.stave),i.setContext(this.context),this.renderQ.push(i),i}KeySigNote(t){const e=new ii(t.key,t.cancelKey,t.alterKey);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}TabNote(t){const e=new di(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}GraceNote(t){const e=new ei(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),e}GraceNoteGroup(t){const e=new Ht(t.notes,t.slur);return e.setContext(this.context),e}Accidental(t){const e=new it(t.type);return e.setContext(this.context),e}Annotation(t){const e=Object.assign({text:"p",hJustify:rt.CENTER,vJustify:ht.BOTTOM},t),i=new ct(e.text);return i.setJustification(e.hJustify),i.setVerticalJustification(e.vJustify),i.setFont(e.font),i.setContext(this.context),i}ChordSymbol(t){const e=Object.assign({vJustify:"top",hJustify:"center",kerning:!0,reportWidth:!0},t),i=new Mt;return i.setHorizontal(e.hJustify),i.setVertical(e.vJustify),i.setEnableKerning(e.kerning),i.setReportWidth(e.reportWidth),"string"==typeof e.fontFamily&&"number"==typeof e.fontSize?"string"==typeof e.fontWeight?i.setFont(e.fontFamily,e.fontSize,e.fontWeight):i.setFont(e.fontFamily,e.fontSize,""):"number"==typeof e.fontSize&&i.setFontSize(e.fontSize),i.setContext(this.context),i}Articulation(t){const e=Object.assign({type:"a.",position:"above"},t),i=new pt(e.type);return i.setPosition(e.position),i.setContext(this.context),i}Ornament(t,e){const i=Object.assign({type:t,position:0,accidental:""},e),s=new Vt(t);return s.setPosition(i.position),i.upperAccidental&&s.setUpperAccidental(i.upperAccidental),i.lowerAccidental&&s.setLowerAccidental(i.lowerAccidental),void 0!==i.delayed&&s.setDelayed(i.delayed),s.setContext(this.context),s}TextDynamics(t){const e=Object.assign({text:"p",duration:"q",dots:0,line:0},t),i=new ui({text:e.text,line:e.line,duration:e.duration,dots:e.dots});return this.stave&&i.setStave(this.stave),i.setContext(this.context),this.renderQ.push(i),i}Fingering(t){const e=Object.assign({number:"0",position:"left"},t),i=new Rt(e.number);return i.setPosition(e.position),i.setContext(this.context),i}StringNumber(t,e=!0){const i=new le(t.number);return i.setPosition(t.position),i.setContext(this.context),i.setDrawCircle(e),i}TickContext(){return new Xt}ModifierContext(){return new be}MultiMeasureRest(t){const e=u(t.number_of_measures,"NoNumberOfMeasures"),i=new ai(e,t);return i.setContext(this.context),this.renderQ.push(i),i}Voice(t){const e=Object.assign({time:"4/4"},t),i=new Yt(e.time);return this.voices.push(i),i}StaveConnector(t){const e=new Ce(t.top_stave,t.bottom_stave);return e.setType(t.type).setContext(this.context),this.renderQ.push(e),e}Formatter(t){return new Fe(t)}Tuplet(t){const e=Object.assign({notes:[],options:{}},t),i=new Ae(e.notes,e.options).setContext(this.context);return this.renderQ.push(i),i}Beam(t){var e,i,s,a,n;const o=new Oe(t.notes,null===(e=t.options)||void 0===e?void 0:e.autoStem).setContext(this.context);return o.breakSecondaryAt(null!==(s=null===(i=t.options)||void 0===i?void 0:i.secondaryBeamBreaks)&&void 0!==s?s:[]),(null===(a=t.options)||void 0===a?void 0:a.partialBeamDirections)&&Object.entries(null===(n=t.options)||void 0===n?void 0:n.partialBeamDirections).forEach((([t,e])=>{o.setPartialBeamSideAt(Number(t),e)})),this.renderQ.push(o),o}Curve(t){const e=new We(t.from,t.to,t.options).setContext(this.context);return this.renderQ.push(e),e}StaveTie(t){var e;const i=new Wt({first_note:t.from,last_note:t.to,first_indices:t.first_indices,last_indices:t.last_indices},t.text);return(null===(e=t.options)||void 0===e?void 0:e.direction)&&i.setDirection(t.options.direction),i.setContext(this.context),this.renderQ.push(i),i}StaveLine(t){var e,i;const s=new ci({first_note:t.from,last_note:t.to,first_indices:t.first_indices,last_indices:t.last_indices});return(null===(e=t.options)||void 0===e?void 0:e.text)&&s.setText(t.options.text),(null===(i=t.options)||void 0===i?void 0:i.font)&&s.setFont(t.options.font),s.setContext(this.context),this.renderQ.push(s),s}VibratoBracket(t){const e=new yi({start:t.from,stop:t.to});return t.options.line&&e.setLine(t.options.line),t.options.harsh&&e.setHarsh(t.options.harsh),e.setContext(this.context),this.renderQ.push(e),e}TextBracket(t){const e=new xi({start:t.from,stop:t.to,text:t.text,superscript:t.options.superscript,position:t.options.position});return t.options.line&&e.setLine(t.options.line),t.options.font&&e.setFont(t.options.font),e.setContext(this.context),this.renderQ.push(e),e}System(t={}){t.factory=this;const e=new bi(t).setContext(this.context);return this.systems.push(e),e}EasyScore(t={}){return t.factory=this,new Je(t)}PedalMarking(t){const e=Object.assign({notes:[],options:{style:"mixed"}},t),i=new oi(e.notes);return i.setType(oi.typeString[e.options.style]),i.setContext(this.context),this.renderQ.push(i),i}NoteSubGroup(t){const e=Object.assign({notes:[]},t),i=new jt(e.notes);return i.setContext(this.context),i}draw(){const t=this.context;this.systems.forEach((e=>e.setContext(t).format())),this.staves.forEach((e=>e.setContext(t).draw())),this.voices.forEach((e=>e.setContext(t).draw())),this.renderQ.forEach((e=>{e.isRendered()||e.setContext(t).draw()})),this.systems.forEach((e=>e.setContext(t).draw())),this.reset()}}Ti.DEBUG=!1,Ti.TEXT_FONT=Object.assign({},O.TEXT_FONT);class wi extends di{static get CATEGORY(){return _.GraceTabNote}constructor(t){super(t,!1),this.render_options=Object.assign(Object.assign({},this.render_options),{y_shift:.3,scale:.6,font:`7.5pt ${M.SANS_SERIF}`}),this.updateWidth()}}class vi{constructor(t){this.music=new tt,this.setKey(t)}setKey(t){return this.key=t,this.reset(),this}getKey(){return this.key}reset(){this.keyParts=this.music.getKeyParts(this.key),this.keyString=this.keyParts.root,this.keyParts.accidental&&(this.keyString+=this.keyParts.accidental);if(!tt.scaleTypes[this.keyParts.type])throw new x("BadArguments",`Unsupported key type: ${this.key}`);this.scale=this.music.getScaleTones(this.music.getNoteValue(this.keyString),tt.scaleTypes[this.keyParts.type]),this.scaleMap={},this.scaleMapByValue={},this.originalScaleMapByValue={};const t=tt.root_indices[this.keyParts.root];for(let e=0;es?Ci.SLIDE_DOWN:Ci.SLIDE_UP}this.direction=e,this.render_options.cp1=11,this.render_options.cp2=14,this.render_options.y_shift=.5,this.resetFont()}static get CATEGORY(){return _.TabSlide}static get SLIDE_UP(){return 1}static get SLIDE_DOWN(){return-1}static createSlideUp(t){return new Ci(t,Ci.SLIDE_UP)}static createSlideDown(t){return new Ci(t,Ci.SLIDE_DOWN)}renderTie(t){if(0===t.first_ys.length||0===t.last_ys.length)throw new x("BadArguments","No Y-values to render");const e=this.checkContext(),i=t.first_x_px,s=t.first_ys,a=t.last_x_px,n=t.direction;if(n!==Ci.SLIDE_UP&&n!==Ci.SLIDE_DOWN)throw new x("BadSlide","Invalid slide direction");const o=this.notes.first_indices;for(let t=0;tthis.tuningValues.length)throw new x("BadArguments",`String number must be between 1 and ${this.tuningValues.length}:${t}`);return this.tuningValues[e-1]}getValueForFret(t,e){const i=this.getValueForString(e),s=Number(t);if(s<0)throw new x("BadArguments",`Fret number must be 0 or higher: ${t}`);return i+s}getNoteForFret(t,e){const i=this.getValueForFret(t,e),s=Math.floor(i/12),a=i%12;return`${X.integerToNote(a)}/${s}`}}var Fi=function(t,e,i,s){return new(i||(i=Promise))((function(a,n){function o(t){try{r(s.next(t))}catch(t){n(t)}}function l(t){try{r(s.throw(t))}catch(t){n(t)}}function r(t){var e;t.done?a(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(o,l)}r((s=s.apply(t,e||[])).next())}))};class Ni{static get BUILD(){return{VERSION:"4.1.0-alpha.0",ID:"847bc9014672858aedc7f8460384f51f98d6bd84",DATE:"2022-10-10T04:47:38.237Z"}}static setMusicFont(...t){const e=t.map((t=>M.load(t)));return X.MUSIC_FONT_STACK=e,Q.MUSIC_FONT_STACK=e.slice(),Q.CURRENT_CACHE_KEY=t.join(","),e}static fetchMusicFont(t,e){return Fi(this,void 0,void 0,(function*(){}))}static getMusicFont(){return X.MUSIC_FONT_STACK.map((t=>t.getName()))}static get RENDER_PRECISION_PLACES(){return X.RENDER_PRECISION_PLACES}static set RENDER_PRECISION_PLACES(t){X.RENDER_PRECISION_PLACES=t}static get SOFTMAX_FACTOR(){return X.SOFTMAX_FACTOR}static set SOFTMAX_FACTOR(t){X.SOFTMAX_FACTOR=t}static get NOTATION_FONT_SCALE(){return X.NOTATION_FONT_SCALE}static set NOTATION_FONT_SCALE(t){X.NOTATION_FONT_SCALE=t}static get TABLATURE_FONT_SCALE(){return X.TABLATURE_FONT_SCALE}static set TABLATURE_FONT_SCALE(t){X.TABLATURE_FONT_SCALE=t}static get RESOLUTION(){return X.RESOLUTION}static set RESOLUTION(t){X.RESOLUTION=t}static get SLASH_NOTEHEAD_WIDTH(){return X.SLASH_NOTEHEAD_WIDTH}static set SLASH_NOTEHEAD_WIDTH(t){X.SLASH_NOTEHEAD_WIDTH=t}static get STAVE_LINE_DISTANCE(){return X.STAVE_LINE_DISTANCE}static set STAVE_LINE_DISTANCE(t){X.STAVE_LINE_DISTANCE=t}static get STAVE_LINE_THICKNESS(){return X.STAVE_LINE_THICKNESS}static set STAVE_LINE_THICKNESS(t){X.STAVE_LINE_THICKNESS=t}static get STEM_HEIGHT(){return X.STEM_HEIGHT}static set STEM_HEIGHT(t){X.STEM_HEIGHT=t}static get STEM_WIDTH(){return X.STEM_WIDTH}static set STEM_WIDTH(t){X.STEM_WIDTH=t}static get TIME4_4(){return X.TIME4_4}static get accidentalMap(){return X.accidentalMap}static get unicode(){return X.unicode}static keySignature(t){return X.keySignature(t)}static hasKeySignature(t){return X.hasKeySignature(t)}static getKeySignatures(){return X.getKeySignatures()}static clefProperties(t){return X.clefProperties(t)}static keyProperties(t,e,i){return X.keyProperties(t,e,i)}static durationToTicks(t){return X.durationToTicks(t)}}Ni.Accidental=it,Ni.Annotation=ct,Ni.Articulation=pt,Ni.Barline=Ft,Ni.BarNote=Nt,Ni.Beam=Oe,Ni.Bend=At,Ni.BoundingBox=C,Ni.BoundingBoxComputation=E,Ni.CanvasContext=Jt,Ni.ChordSymbol=Mt,Ni.Clef=de,Ni.ClefNote=Le,Ni.Crescendo=ze,Ni.Curve=We,Ni.Dot=Bt,Ni.EasyScore=Je,Ni.Element=O,Ni.Factory=Ti,Ni.Font=M,Ni.Formatter=Fe,Ni.Fraction=v,Ni.FretHandFinger=Rt,Ni.GhostNote=Ze,Ni.Glyph=Q,Ni.GlyphNote=ti,Ni.GraceNote=ei,Ni.GraceNoteGroup=Ht,Ni.GraceTabNote=wi,Ni.KeyManager=vi,Ni.KeySignature=me,Ni.KeySigNote=ii,Ni.Modifier=Z,Ni.ModifierContext=be,Ni.MultiMeasureRest=ai,Ni.Music=tt,Ni.Note=St,Ni.NoteHead=Ot,Ni.NoteSubGroup=jt,Ni.Ornament=Vt,Ni.Parenthesis=Kt,Ni.Parser=Ye,Ni.PedalMarking=oi,Ni.Registry=R,Ni.RenderContext=ut,Ni.Renderer=oe,Ni.RepeatNote=ri,Ni.Repetition=ge,Ni.Stave=ve,Ni.StaveConnector=Ce,Ni.StaveHairpin=Di,Ni.StaveLine=ci,Ni.StaveModifier=kt,Ni.StaveNote=Ut,Ni.StaveTempo=xe,Ni.StaveText=ue,Ni.StaveTie=Wt,Ni.Stem=st,Ni.StringNumber=le,Ni.Stroke=re,Ni.SVGContext=ee,Ni.System=bi,Ni.TabNote=di,Ni.TabSlide=Ci,Ni.TabStave=mi,Ni.TabTie=It,Ni.TextBracket=xi,Ni.TextDynamics=ui,Ni.TextFormatter=lt,Ni.TextNote=pe,Ni.TickContext=Xt,Ni.TimeSignature=Se,Ni.TimeSigNote=fi,Ni.Tremolo=Ei,Ni.Tuning=ki,Ni.Tuplet=Ae,Ni.Vibrato=he,Ni.VibratoBracket=yi,Ni.Voice=Yt,Ni.Volta=fe,Ni.AnnotationHorizontalJustify=rt,Ni.AnnotationVerticalJustify=ht,Ni.ChordSymbolHorizontalJustify=vt,Ni.ChordSymbolVerticalJustify=Dt,Ni.SymbolTypes=Ct,Ni.SymbolModifiers=Et,Ni.CurvePosition=Ue,Ni.FontWeight=k,Ni.FontStyle=F,Ni.ModifierPosition=$,Ni.RendererBackends=ie,Ni.RendererLineEndType=se,Ni.BarlineType=wt,Ni.StaveModifierPosition=Tt,Ni.VoltaType=ne,Ni.TextBracketPosition=_i,Ni.TextJustification=ae,Ni.VoiceMode=Gt;const Ai={glyphs:{bracketTop:{x_min:0,x_max:469,y_min:0,y_max:295,ha:295,o:"m 0 0 l 180 0 b 674 390 410 43 616 150 b 675 405 675 396 675 400 b 664 425 675 416 671 422 b 628 405 651 425 635 415 b 157 179 613 389 432 199 l 12 179 b 0 168 3 179 0 177 z"},bracketBottom:{x_min:0,x_max:469,y_min:-295,y_max:0,ha:295,o:"m 0 -168 b 12 -179 0 -177 3 -179 l 157 -179 b 628 -405 432 -199 613 -389 b 664 -425 635 -415 651 -425 b 675 -405 671 -422 675 -416 b 674 -390 675 -400 675 -396 b 180 0 616 -150 410 -43 l 0 0 z"},barlineTick:{x_min:0,x_max:36,y_min:868,y_max:1120,ha:252,o:"m 52 1250 l 52 1613 l 0 1613 l 0 1250 z"},breathMarkTick:{x_min:0,x_max:500,y_min:0,y_max:502,ha:502,o:"m 9 367 b 0 374 6 372 3 374 b 9 334 0 367 0 343 b 179 19 40 312 164 121 b 192 0 179 3 186 0 b 210 19 197 0 207 6 b 698 701 245 197 507 658 b 720 714 714 704 720 711 b 698 723 720 720 711 723 b 197 186 455 714 210 202 b 186 176 194 179 189 176 b 176 186 179 176 176 186 b 9 367 143 266 27 359 z"},segno:{x_min:4,x_max:550,y_min:-27,y_max:759,ha:786,o:"m 194 958 b 217 939 203 958 213 955 l 220 929 b 325 805 230 890 252 805 b 425 901 384 805 425 840 b 413 969 425 923 420 946 b 220 1060 390 1035 294 1060 b 6 793 120 1060 6 936 b 29 687 6 759 13 723 b 295 449 75 582 284 454 b 304 438 301 446 304 444 b 295 415 304 432 301 425 b 78 22 285 395 78 22 b 73 3 75 16 73 9 b 114 -39 73 -20 91 -39 b 150 -17 128 -39 143 -30 b 377 395 150 -17 373 386 b 395 402 377 393 389 402 b 704 176 416 397 704 312 b 621 75 704 120 670 82 l 616 73 b 562 138 586 73 562 94 l 562 154 b 485 249 562 209 526 249 b 468 246 480 249 474 248 b 366 153 415 233 366 210 b 540 -12 366 65 455 -12 b 600 -1 559 -12 579 -9 b 792 251 716 37 792 131 b 789 292 792 264 791 278 b 523 588 768 451 540 579 b 498 611 505 598 498 603 b 501 619 498 613 500 616 b 732 1032 508 631 732 1032 b 737 1053 736 1040 737 1045 b 697 1093 737 1076 719 1093 b 661 1073 683 1093 668 1086 b 423 647 661 1073 432 660 b 410 635 419 639 416 635 b 396 639 406 635 402 636 b 128 792 383 644 166 727 b 108 868 120 808 108 838 b 186 958 108 907 125 948 z m 598 671 b 680 589 598 626 635 589 b 762 671 726 589 762 626 b 680 753 762 717 726 753 b 598 671 635 753 598 717 z m 202 380 b 120 462 202 425 166 462 b 37 380 75 462 37 425 b 120 298 37 334 75 298 b 202 380 166 298 202 334 z"},coda:{x_min:-4,x_max:955,y_min:-158,y_max:898,ha:1056,o:"m 1349 576 l 1178 576 b 729 1083 1164 847 962 1064 l 729 1269 b 694 1293 729 1287 713 1293 b 660 1269 675 1293 660 1287 l 660 1083 b 210 576 426 1064 226 848 l 20 576 b -6 541 0 576 -6 560 b 20 507 -6 523 0 507 l 210 507 b 660 0 226 238 426 19 l 660 -202 b 694 -228 660 -222 675 -228 b 729 -202 713 -228 729 -222 l 729 0 b 1178 507 962 19 1164 238 l 1349 507 b 1375 541 1369 507 1375 523 b 1349 576 1375 560 1369 576 z m 940 576 l 729 576 l 729 1002 b 940 576 930 985 940 809 z m 660 1002 l 660 576 l 455 576 b 660 1002 455 809 455 985 z m 455 507 l 660 507 l 660 69 b 455 507 474 91 456 285 z m 729 69 l 729 507 l 940 507 b 729 69 936 287 909 91 z"},gClef:{x_min:0,x_max:671,y_min:-658,y_max:1098,ha:1756,o:"m 541 598 b 550 625 539 615 541 616 b 824 1174 706 770 824 953 b 730 1509 824 1299 789 1423 b 655 1581 708 1541 671 1581 b 562 1512 635 1581 590 1544 b 420 1064 455 1394 420 1214 b 441 828 420 981 431 887 b 428 793 444 811 445 808 b 0 125 220 622 0 416 b 524 -363 0 -125 171 -363 b 624 -354 557 -363 595 -360 b 645 -367 639 -351 642 -350 b 684 -657 662 -464 684 -589 b 455 -896 684 -870 540 -896 b 340 -854 377 -896 340 -873 b 386 -829 340 -844 353 -840 b 482 -694 431 -816 482 -778 b 344 -547 482 -615 432 -547 b 190 -713 248 -547 190 -624 b 464 -948 190 -806 246 -948 b 747 -660 560 -948 747 -904 b 706 -351 747 -577 721 -441 b 724 -327 703 -334 704 -336 b 966 16 870 -269 966 -147 b 619 363 966 200 831 363 b 577 389 582 363 582 363 z m 677 1358 b 763 1240 724 1358 763 1319 b 513 851 763 1080 626 950 b 494 863 503 842 497 844 b 485 995 488 900 485 949 b 677 1358 485 1220 589 1358 z m 520 377 b 498 343 524 350 524 351 b 289 63 372 300 289 186 b 455 -192 289 -66 357 -158 b 494 -200 467 -196 484 -200 b 511 -184 505 -200 511 -193 b 490 -166 511 -174 500 -170 b 386 -12 429 -140 386 -78 b 530 157 386 71 442 132 b 559 145 553 163 556 161 l 631 -284 b 611 -304 634 -300 632 -300 b 530 -311 588 -308 559 -311 b 115 29 278 -311 115 -171 b 249 363 115 114 130 228 b 469 567 336 459 402 513 b 490 562 484 579 487 577 z m 619 148 b 635 168 616 166 618 170 b 848 -66 752 158 848 60 b 713 -271 848 -157 793 -230 b 690 -262 696 -279 693 -279 z"},cClef:{x_min:0,x_max:699,y_min:-506,y_max:506,ha:1012,o:"m 331 694 b 301 724 331 714 321 724 l 300 724 b 269 694 279 724 269 714 l 269 -694 b 300 -724 269 -714 279 -724 l 301 -724 b 331 -694 321 -724 331 -714 l 331 -63 b 344 -55 331 -52 338 -53 b 472 -265 382 -65 442 -102 b 500 -301 477 -288 485 -301 b 530 -262 516 -301 523 -287 b 684 -128 549 -199 582 -128 b 804 -409 778 -128 804 -220 b 651 -683 804 -598 770 -683 b 528 -644 631 -683 528 -674 b 567 -622 528 -636 552 -628 b 625 -528 596 -612 625 -583 b 527 -429 625 -465 583 -429 b 416 -547 465 -429 416 -471 b 667 -729 416 -638 495 -729 b 1007 -413 903 -729 1007 -563 b 706 -76 1007 -215 897 -76 b 618 -89 664 -76 636 -84 b 576 -88 603 -94 589 -96 b 524 0 556 -75 524 -29 b 576 88 524 29 556 75 b 618 89 589 96 603 94 b 706 76 636 84 664 76 b 1007 413 897 76 1007 215 b 667 729 1007 563 903 729 b 416 547 495 729 416 638 b 527 429 416 471 465 429 b 625 528 583 429 625 465 b 567 622 625 583 596 612 b 528 644 552 628 528 636 b 651 683 528 674 631 683 b 804 409 770 683 804 598 b 684 128 804 220 778 128 b 530 262 582 128 549 199 b 500 301 523 287 516 301 b 472 265 485 301 477 288 b 344 55 442 102 382 65 b 331 63 338 53 331 52 z m 30 724 b 0 694 10 724 0 714 l 0 -694 b 30 -724 0 -714 10 -724 l 154 -724 b 184 -694 174 -724 184 -714 l 184 694 b 154 724 184 714 174 724 z"},fClef:{x_min:-5,x_max:684,y_min:-635,y_max:262,ha:897,o:"m 363 377 b 0 56 112 377 0 194 b 177 -158 0 -59 60 -158 b 330 -6 268 -158 330 -95 b 192 144 330 86 262 144 b 120 134 153 144 138 134 b 96 160 101 134 96 145 b 330 323 96 217 183 323 b 549 -53 482 323 549 173 b 14 -871 549 -455 350 -680 b -7 -897 1 -878 -7 -886 b 12 -914 -7 -906 -1 -914 b 36 -907 19 -914 27 -912 b 765 -40 390 -734 765 -478 b 363 377 765 210 612 377 z m 906 259 b 827 180 861 259 827 225 b 906 101 827 135 861 101 b 985 180 950 101 985 135 b 906 259 985 225 950 259 z m 907 -102 b 829 -180 863 -102 829 -135 b 907 -258 829 -225 863 -258 b 985 -180 952 -258 985 -225 b 907 -102 985 -135 952 -102 z"},unpitchedPercussionClef1:{x_min:0,x_max:382,y_min:-250,y_max:250,ha:500,o:"m 230 -338 l 230 338 b 210 360 230 350 222 360 l 20 360 b 0 338 9 360 0 350 l 0 -338 b 20 -360 0 -350 9 -360 l 210 -360 b 230 -338 222 -360 230 -350 z m 550 338 b 530 360 550 350 541 360 l 340 360 b 320 338 328 360 320 350 l 320 -338 b 340 -360 320 -350 328 -360 l 530 -360 b 550 -338 541 -360 550 -350 z"},"6stringTabClef":{x_min:-3,x_max:408,y_min:-748,y_max:764,ha:1512,o:"m 557 1024 l 557 1100 l 26 1100 l 26 1024 l 249 1024 l 249 422 l 336 422 l 336 1024 z m 588 -328 l 350 348 l 238 348 l -4 -328 l 88 -328 l 160 -125 l 420 -125 l 491 -328 z m 397 -52 l 181 -52 l 292 256 z m 544 -883 b 420 -719 544 -802 507 -752 b 514 -572 482 -690 514 -639 b 314 -399 514 -472 442 -399 l 39 -399 l 39 -1077 l 344 -1077 b 544 -883 467 -1077 544 -995 z m 428 -583 b 292 -691 428 -652 389 -691 l 125 -691 l 125 -475 l 292 -475 b 428 -583 389 -475 428 -514 z m 458 -884 b 337 -1001 458 -949 418 -1001 l 125 -1001 l 125 -768 l 337 -768 b 458 -884 418 -768 458 -818 z"},timeSig0:{x_min:20,x_max:450,y_min:-250,y_max:251,ha:501,o:"m 648 0 b 338 361 648 200 510 361 b 29 0 167 361 29 200 b 338 -360 29 -199 167 -360 b 648 0 510 -360 648 -199 z m 338 317 b 446 10 397 317 446 180 b 338 -295 446 -158 397 -295 b 230 10 278 -295 230 -158 b 338 317 230 180 278 317 z"},timeSig1:{x_min:20,x_max:314,y_min:-250,y_max:251,ha:501,o:"m 35 19 b 29 0 35 19 29 10 b 45 -20 29 -7 33 -16 b 58 -23 50 -22 56 -23 b 78 -10 72 -23 78 -10 b 156 117 78 -10 140 89 b 170 131 161 127 167 131 b 179 111 176 131 179 120 l 179 -261 b 115 -315 179 -294 145 -315 b 91 -337 105 -315 91 -320 b 122 -360 91 -353 104 -360 l 429 -360 b 452 -337 452 -360 452 -337 b 431 -315 452 -337 452 -315 b 384 -265 410 -315 384 -289 l 384 328 b 356 361 384 351 376 360 b 281 356 336 361 300 356 b 206 360 253 356 228 357 b 199 361 203 360 200 361 b 173 334 184 361 179 347 z"},timeSig2:{x_min:20,x_max:426,y_min:-257,y_max:254,ha:511,o:"m 606 -131 b 589 -111 606 -114 599 -111 b 570 -127 577 -111 573 -117 l 569 -128 b 513 -192 554 -164 543 -192 b 488 -187 505 -192 498 -190 b 445 -171 469 -180 459 -179 b 289 -137 416 -160 348 -137 b 236 -145 271 -137 252 -140 b 422 -42 268 -94 390 -50 b 613 147 523 -14 613 27 b 330 366 613 300 464 366 b 69 275 229 366 140 357 b 29 170 45 245 29 209 b 42 108 29 150 33 130 b 160 29 63 63 108 29 b 261 156 248 29 261 120 b 161 275 261 242 161 246 b 275 330 164 295 190 330 b 405 192 403 330 405 233 b 193 -102 405 60 297 -39 b 33 -317 114 -153 58 -223 l 32 -321 b 69 -370 32 -340 48 -370 b 203 -282 101 -370 118 -282 b 410 -360 261 -282 282 -360 b 606 -131 472 -360 583 -354 z"},timeSig3:{x_min:20,x_max:401,y_min:-251,y_max:249,ha:500,o:"m 307 357 b 301 357 305 357 304 357 l 291 359 b 285 359 289 359 287 359 b 37 200 161 359 37 276 b 154 84 37 153 65 89 l 161 84 b 256 177 225 84 256 130 l 256 189 b 209 248 252 242 216 245 b 180 268 202 251 180 248 l 180 274 b 240 310 183 298 228 310 b 374 199 363 310 374 233 l 374 189 b 199 36 374 82 289 40 b 164 12 184 35 164 27 b 200 -6 164 -6 189 -6 b 379 -137 366 -6 379 -118 b 269 -307 379 -289 301 -307 b 256 -305 264 -307 258 -305 b 216 -282 245 -304 217 -304 l 216 -275 b 249 -180 216 -243 248 -222 b 145 -76 249 -120 207 -76 b 130 -78 140 -76 135 -76 b 60 -115 105 -82 78 -96 b 29 -203 36 -137 29 -171 b 275 -361 32 -315 134 -359 l 288 -361 b 577 -161 431 -361 577 -288 l 577 -151 b 537 -50 575 -109 564 -82 b 503 -20 528 -39 517 -29 l 472 -3 l 425 10 b 410 17 418 12 413 12 b 409 24 409 20 409 22 b 415 37 409 30 410 36 b 459 50 431 42 446 43 b 547 181 517 78 547 115 b 307 357 547 314 367 353 z"},timeSig4:{x_min:20,x_max:450,y_min:-250,y_max:251,ha:501,o:"m 521 -107 l 521 202 b 504 226 521 213 520 226 b 475 213 491 226 484 223 l 338 48 b 325 14 333 40 325 32 l 325 -107 l 131 -107 b 481 336 246 -9 477 318 l 482 340 b 461 361 482 353 472 361 b 363 359 448 361 389 359 b 261 361 337 359 272 361 b 228 334 248 361 228 357 b 43 -105 228 156 86 -45 l 35 -117 b 35 -118 35 -117 35 -118 l 33 -120 b 29 -137 30 -127 29 -132 b 58 -161 29 -151 40 -161 l 325 -161 l 325 -252 b 268 -302 325 -291 294 -302 b 235 -330 245 -302 235 -315 b 262 -360 235 -344 240 -360 l 569 -360 b 598 -330 583 -360 598 -350 b 566 -301 598 -310 580 -301 b 521 -246 552 -301 521 -292 l 521 -161 l 626 -161 b 648 -134 641 -161 648 -151 b 626 -107 648 -117 642 -107 z"},timeSig5:{x_min:20,x_max:383,y_min:-251,y_max:246,ha:497,o:"m 109 85 b 117 179 109 85 115 166 b 138 197 118 190 125 197 l 144 197 b 285 184 158 194 226 184 b 492 323 485 184 492 300 b 472 353 492 341 488 353 b 295 340 454 353 341 340 b 101 354 249 340 125 351 b 66 330 75 354 68 341 l 50 10 l 50 7 b 79 -14 50 -12 65 -14 b 111 14 94 -14 95 -1 b 209 62 125 29 160 62 b 357 -125 258 62 357 35 b 235 -304 357 -284 272 -304 b 202 -300 223 -304 212 -304 b 184 -279 194 -295 186 -289 b 202 -259 184 -269 194 -264 b 256 -163 235 -239 256 -203 b 144 -50 256 -99 206 -50 b 30 -157 66 -50 35 -107 b 29 -183 29 -166 29 -174 b 284 -361 29 -302 107 -361 b 552 -125 456 -361 552 -255 b 314 112 552 6 445 112 b 122 71 230 112 168 98 b 115 69 120 69 117 69 b 109 79 109 69 109 75 z"},timeSig6:{x_min:20,x_max:414,y_min:-249,y_max:251,ha:500,o:"m 439 120 b 554 229 500 120 554 167 b 553 245 554 235 554 239 b 348 361 539 337 426 361 b 85 209 239 360 137 307 b 29 4 53 148 29 72 l 29 -1 b 73 -200 30 -68 42 -143 b 324 -359 132 -307 203 -359 b 513 -307 389 -359 461 -348 b 596 -137 563 -266 596 -202 b 379 72 596 -24 490 72 b 248 22 333 72 285 55 b 239 19 245 19 242 19 b 226 53 230 19 226 30 b 346 327 230 320 315 327 b 393 305 374 327 393 320 b 357 251 393 285 366 268 b 347 209 350 238 347 223 b 369 150 347 187 354 166 b 439 120 379 131 420 120 z m 320 3 b 405 -158 366 3 405 -69 b 320 -320 405 -248 366 -320 b 236 -158 274 -320 236 -248 b 320 3 236 -69 274 3 z"},timeSig7:{x_min:20,x_max:421,y_min:-250,y_max:249,ha:499,o:"m 606 294 b 582 351 606 333 606 351 b 552 336 580 351 557 346 b 485 236 541 318 521 236 b 262 359 449 236 382 359 b 137 307 179 359 157 325 b 98 281 117 288 108 282 b 60 315 86 281 68 301 b 43 325 58 321 50 325 b 29 308 36 325 29 321 l 29 71 b 45 48 29 71 30 48 b 66 76 56 48 60 60 b 164 196 81 112 99 196 b 374 88 222 196 291 88 b 446 118 415 88 435 109 b 459 124 451 121 456 124 b 469 111 465 124 468 120 b 272 -112 469 71 359 -10 b 173 -315 217 -176 173 -259 b 200 -360 173 -346 173 -360 b 294 -347 226 -360 258 -347 b 412 -360 330 -347 397 -360 b 435 -307 426 -360 435 -348 b 606 288 435 -66 606 140 z"},timeSig8:{x_min:20,x_max:416,y_min:-259,y_max:259,ha:518,o:"m 481 52 b 567 204 533 85 567 132 b 317 373 567 351 356 373 b 36 176 150 373 36 297 b 161 -16 36 76 92 23 b 29 -190 86 -52 29 -99 b 301 -373 29 -315 158 -373 b 599 -117 445 -373 599 -311 b 481 52 599 -30 549 17 z m 406 85 b 168 240 291 125 168 150 b 314 331 168 301 251 331 b 482 207 360 331 482 308 b 406 85 482 150 454 112 z m 295 -325 b 111 -183 199 -325 111 -276 b 225 -48 111 -125 161 -72 b 436 -219 330 -94 436 -124 b 295 -325 436 -276 392 -325 z"},timeSig9:{x_min:20,x_max:414,y_min:-249,y_max:251,ha:500,o:"m 186 -117 b 71 -226 125 -117 71 -164 b 72 -242 71 -232 71 -236 b 276 -359 86 -334 199 -359 b 540 -206 386 -357 488 -304 b 596 -1 572 -145 596 -69 l 596 4 b 552 203 595 71 583 145 b 301 361 492 310 422 361 b 112 310 236 361 164 351 b 29 140 62 269 29 204 b 246 -69 29 27 135 -69 b 377 -19 292 -69 340 -52 b 386 -16 380 -16 383 -16 b 399 -50 395 -16 399 -27 b 279 -324 395 -317 310 -324 b 232 -302 251 -324 232 -317 b 268 -248 232 -282 259 -265 b 278 -206 275 -235 278 -220 b 256 -147 278 -184 271 -163 b 186 -117 246 -128 204 -117 z m 305 0 b 220 161 259 0 220 72 b 305 323 220 251 259 323 b 389 161 351 323 389 251 b 305 0 389 72 351 0 z"},timeSigCommon:{x_min:5,x_max:424,y_min:-249,y_max:251,ha:500,o:"m 336 361 b 7 -14 131 361 7 180 b 101 -262 7 -108 42 -190 b 321 -359 156 -328 235 -359 b 611 -88 573 -359 611 -130 b 589 -56 611 -56 595 -56 b 567 -82 577 -56 567 -58 b 363 -311 567 -268 409 -311 b 184 40 246 -311 184 -197 b 372 327 184 278 294 327 b 477 278 446 327 477 292 b 451 246 477 265 472 246 b 360 140 393 246 360 184 b 471 32 360 58 431 32 b 580 156 471 32 580 36 b 336 361 580 344 363 361 z"},timeSigCutCommon:{x_min:0,x_max:418,y_min:-359,y_max:361,ha:720,o:"m 573 -58 b 559 -82 567 -58 559 -60 b 354 -310 559 -266 400 -310 b 317 -305 340 -310 328 -308 b 302 -284 311 -304 302 -295 l 302 287 b 338 323 302 297 328 321 b 363 324 347 324 356 324 b 468 275 436 324 468 289 b 442 243 468 264 464 243 b 351 137 384 243 351 181 b 462 30 351 56 422 30 b 572 154 462 30 572 35 b 318 357 572 295 441 357 b 302 390 310 359 302 383 l 302 495 b 276 520 302 507 292 520 b 252 495 265 520 252 507 l 252 369 b 235 346 252 359 238 346 l 196 331 b 0 -14 66 275 0 122 b 225 -346 0 -150 86 -310 b 252 -382 235 -350 252 -369 l 252 -492 b 276 -517 252 -505 265 -517 b 302 -492 292 -517 302 -505 l 302 -379 b 318 -359 302 -370 308 -363 b 602 -85 563 -354 602 -130 b 579 -58 600 -58 586 -58 z m 252 -235 b 243 -252 252 -248 248 -252 b 236 -248 240 -252 238 -251 b 177 37 197 -193 177 -96 b 232 259 177 147 200 215 b 236 262 233 262 235 262 b 252 239 243 262 252 251 z"},timeSigPlus:{x_min:-1,x_max:499,y_min:-250,y_max:250,ha:500,o:"m 432 53 b 413 79 420 53 413 65 l 413 340 b 392 360 413 350 405 360 l 325 360 b 305 340 312 360 305 350 l 305 79 b 284 53 305 66 292 53 l 19 53 b -1 33 9 53 -1 46 l -1 -33 b 19 -55 -1 -46 9 -55 l 284 -55 b 305 -75 298 -55 305 -68 l 305 -340 b 325 -360 305 -350 312 -360 l 392 -360 b 413 -340 405 -360 413 -350 l 413 -78 b 433 -55 413 -63 423 -55 l 698 -55 b 719 -33 708 -55 719 -46 l 719 33 b 698 53 719 46 708 53 z"},timeSigPlusSmall:{x_min:-1,x_max:255,y_min:-133,y_max:123,ha:256,o:"m 220 20 b 210 33 215 20 210 26 l 210 166 b 200 177 210 171 206 177 l 166 177 b 156 166 160 177 156 171 l 156 33 b 145 20 156 27 150 20 l 10 20 b -1 10 4 20 -1 16 l -1 -24 b 10 -35 -1 -30 4 -35 l 145 -35 b 156 -46 153 -35 156 -42 l 156 -180 b 166 -192 156 -186 160 -192 l 200 -192 b 210 -180 206 -192 210 -186 l 210 -48 b 222 -35 210 -39 216 -35 l 356 -35 b 367 -24 361 -35 367 -30 l 367 10 b 356 20 367 16 361 20 z"},timeSigMinus:{x_min:0,x_max:448,y_min:-35,y_max:40,ha:75,o:"m 645 39 b 619 58 645 49 634 58 l 27 58 b 0 39 12 58 0 49 l 0 -32 b 27 -50 0 -42 12 -50 l 619 -50 b 645 -32 634 -50 645 -42 z"},timeSigParensRight:{x_min:0,x_max:184,y_min:-489,y_max:491,ha:980,o:"m 0 -696 b 3 -704 0 -698 1 -704 b 7 -703 4 -704 6 -704 b 265 1 187 -530 265 -282 b 12 701 265 289 187 531 b 4 707 12 701 6 707 b 0 696 1 707 0 703 l 0 665 b 4 644 0 665 0 651 b 167 1 112 503 167 315 b 6 -641 167 -311 109 -497 b 0 -658 3 -644 0 -651 z"},timeSigParensRightSmall:{x_min:0,x_max:110,y_min:-251,y_max:249,ha:500,o:"m 0 -356 b 3 -361 0 -357 1 -361 b 158 0 112 -272 158 -145 b 4 359 158 147 109 272 b 0 353 3 359 0 357 l 0 338 b 3 327 0 338 0 330 b 91 0 60 246 91 160 b 4 -328 91 -160 62 -249 b 0 -337 3 -330 0 -333 z"},timeSigParensLeft:{x_min:0,x_max:184,y_min:-489,y_max:491,ha:980,o:"m 265 -658 b 259 -641 265 -651 262 -644 b 98 1 156 -497 98 -311 b 261 644 98 315 153 503 b 265 665 265 651 265 665 l 265 696 b 261 707 265 703 264 707 b 253 701 259 707 253 701 b 0 1 78 531 0 289 b 258 -703 0 -282 78 -530 b 262 -704 259 -704 261 -704 b 265 -696 264 -704 265 -698 z"},timeSigParensLeftSmall:{x_min:0,x_max:110,y_min:-251,y_max:249,ha:500,o:"m 158 -337 b 154 -328 158 -333 156 -330 b 68 0 96 -249 68 -160 b 156 327 68 160 98 246 b 158 338 158 330 158 338 l 158 353 b 154 359 158 357 156 359 b 0 0 49 272 0 147 b 156 -361 0 -145 46 -272 b 158 -356 157 -361 158 -357 z"},noteheadDoubleWhole:{x_min:0,x_max:599,y_min:-155,y_max:155,ha:310,o:"m 13 223 b 0 212 4 223 0 217 l 0 -213 b 13 -223 0 -219 4 -223 l 32 -223 b 45 -213 39 -223 45 -219 l 45 212 b 32 223 45 217 39 223 z m 96 223 b 82 212 88 223 82 217 l 82 -213 b 96 -223 82 -219 88 -223 l 114 -223 b 128 -213 121 -223 128 -219 l 128 212 b 114 223 128 217 121 223 z m 747 223 b 733 212 740 223 733 217 l 733 -213 b 747 -223 733 -219 740 -223 l 766 -223 b 780 -213 773 -223 780 -219 l 780 212 b 766 223 780 217 773 223 z m 829 223 b 815 212 824 223 815 217 l 815 -213 b 829 -223 815 -219 824 -223 l 848 -223 b 863 -213 857 -223 863 -219 l 863 212 b 848 223 863 217 857 223 z m 438 180 b 130 1 248 180 130 101 b 423 -180 130 -92 210 -180 b 733 1 657 -180 733 -98 b 438 180 733 104 572 180 z m 469 -145 b 331 -71 409 -145 369 -112 b 284 58 305 -37 284 12 b 400 147 284 131 333 147 b 577 -45 498 147 577 42 b 469 -145 577 -115 533 -145 z"},noteheadWhole:{x_min:0,x_max:422,y_min:-125,y_max:125,ha:250,o:"m 311 180 b 0 3 120 180 0 101 b 297 -180 0 -94 82 -180 b 608 3 533 -180 608 -98 b 311 180 608 105 445 180 z m 160 91 b 274 148 176 141 229 148 b 452 -45 373 148 452 42 b 386 -141 452 -89 433 -130 b 341 -147 372 -145 356 -147 b 206 -72 289 -147 236 -112 b 156 56 177 -39 156 10 b 160 91 156 68 157 79 z"},noteheadHalf:{x_min:0,x_max:295,y_min:-125,y_max:125,ha:250,o:"m 140 -180 b 425 60 377 -180 425 13 b 282 180 425 134 366 180 b 0 -60 68 180 0 14 b 140 -180 0 -137 60 -180 z m 108 -125 b 50 -92 78 -125 60 -109 b 42 -63 46 -84 42 -73 b 318 121 42 7 251 121 b 372 91 346 121 361 108 b 380 63 376 82 380 73 b 108 -125 380 1 177 -125 z"},noteheadBlack:{x_min:0,x_max:295,y_min:-125,y_max:125,ha:250,o:"m 140 -180 b 425 60 268 -180 425 -62 b 285 180 425 134 367 180 b 0 -60 127 180 0 63 b 140 -180 0 -135 62 -180 z"},noteheadXDoubleWhole:{x_min:0,x_max:546,y_min:-155,y_max:155,ha:310,o:"m 43 213 b 30 223 43 217 39 223 l 13 223 b 0 213 6 223 0 217 l 0 -215 b 13 -223 0 -219 6 -223 l 30 -223 b 43 -215 39 -223 43 -219 z m 704 213 b 693 223 704 217 698 223 l 672 223 b 660 213 667 223 660 217 l 660 163 b 634 180 655 173 645 180 l 505 180 b 484 173 498 180 490 177 l 393 95 l 300 173 b 279 180 294 177 287 180 l 151 180 b 125 163 141 180 130 173 l 125 213 b 112 223 125 217 118 223 l 94 223 b 82 213 86 223 82 217 l 82 -215 b 94 -223 82 -219 86 -223 l 112 -223 b 125 -215 118 -223 125 -219 l 125 -163 b 151 -180 130 -173 140 -180 l 279 -180 b 300 -171 287 -180 294 -177 l 393 -95 l 485 -171 b 505 -180 491 -177 498 -180 l 632 -180 b 660 -163 645 -180 655 -173 l 660 -215 b 672 -223 660 -219 667 -223 l 693 -223 b 704 -215 698 -223 704 -219 z m 786 213 b 772 223 786 217 780 223 l 755 223 b 740 213 747 223 740 217 l 740 -215 b 755 -223 740 -219 747 -223 l 772 -223 b 786 -215 780 -223 786 -219 z m 507 -141 l 393 -45 l 276 -141 l 207 -141 l 364 0 l 207 141 l 276 141 l 393 45 l 507 141 l 577 141 l 420 0 l 577 -141 z m 660 -132 l 518 0 l 660 132 z m 125 131 l 266 0 l 125 -131 z"},noteheadXWhole:{x_min:0,x_max:377,y_min:-125,y_max:125,ha:250,o:"m 272 -95 l 364 -171 b 384 -180 370 -177 377 -180 l 511 -180 b 543 -148 528 -180 543 -164 b 531 -124 543 -140 539 -131 l 412 0 l 531 124 b 541 148 539 131 541 140 b 513 180 541 164 528 180 l 384 180 b 364 171 377 180 370 177 l 272 94 l 179 171 b 158 180 173 177 166 180 l 30 180 b 0 148 16 180 0 164 b 12 124 0 140 4 131 l 132 0 l 12 -124 b 1 -148 4 -131 1 -140 b 32 -180 1 -164 14 -180 l 158 -180 b 179 -171 166 -180 173 -177 z m 386 -141 l 272 -45 l 157 -141 l 88 -141 l 245 0 l 88 141 l 157 141 l 272 45 l 386 141 l 456 141 l 300 0 l 456 -141 z"},noteheadXHalf:{x_min:0,x_max:334,y_min:-125,y_max:125,ha:250,o:"m 295 180 b 271 170 287 180 278 177 l 209 98 l 115 171 b 95 180 109 177 104 180 l 36 180 b 4 148 19 180 4 164 b 14 124 4 140 7 132 l 140 22 l 7 -127 b 0 -148 3 -131 0 -138 b 32 -180 0 -166 14 -180 l 184 -180 b 209 -170 193 -180 203 -177 l 271 -99 l 363 -171 b 384 -180 370 -176 377 -180 l 445 -180 b 478 -147 461 -180 478 -163 b 465 -125 478 -138 474 -131 l 341 -22 l 474 127 b 481 148 480 131 481 138 b 448 180 481 166 468 180 z m 36 148 l 95 148 l 233 33 l 334 148 l 410 148 l 274 -6 l 445 -148 l 384 -148 l 248 -35 l 147 -148 l 71 -148 l 206 4 z"},noteheadXBlack:{x_min:0,x_max:290,y_min:-125,y_max:125,ha:250,o:"m 410 -143 l 239 0 l 410 144 b 418 160 415 147 418 154 b 399 180 418 171 408 180 b 389 177 396 180 392 179 l 207 26 l 29 177 b 17 180 26 179 22 180 b 0 161 7 180 0 170 b 7 144 0 156 3 148 l 179 0 l 7 -143 b 0 -158 1 -147 0 -153 b 19 -180 0 -170 7 -180 b 29 -176 23 -180 26 -179 l 207 -24 l 389 -176 b 399 -180 392 -179 396 -180 b 418 -160 410 -180 418 -168 b 410 -143 418 -153 415 -147 z"},noteheadCircleXDoubleWhole:{x_min:0,x_max:422,y_min:-155,y_max:155,ha:310,o:"m 576 223 b 563 213 570 223 563 219 l 563 -215 b 576 -223 563 -219 570 -223 l 595 -223 b 608 -215 602 -223 608 -219 l 608 213 b 595 223 608 219 602 223 z m 497 223 b 484 213 491 223 484 219 l 484 -215 b 497 -223 484 -219 491 -223 l 516 -223 b 528 -215 523 -223 528 -219 l 528 213 b 516 223 528 219 523 223 z m 94 223 b 81 213 86 223 81 219 l 81 -215 b 94 -223 81 -219 86 -223 l 111 -223 b 124 -215 118 -223 124 -219 l 124 213 b 111 223 124 219 118 223 z m 13 223 b 0 213 6 223 0 219 l 0 -215 b 13 -223 0 -219 6 -223 l 30 -223 b 45 -215 37 -223 45 -219 l 45 213 b 30 223 45 219 37 223 z m 304 180 b 127 0 206 180 127 101 b 304 -180 127 -99 206 -180 b 482 0 405 -180 482 -99 b 304 180 482 101 405 180 z m 305 32 l 225 112 b 304 140 248 130 275 140 b 387 112 336 140 364 130 z m 278 1 l 193 -82 b 216 0 199 -59 216 -30 b 194 85 216 33 203 50 z m 334 1 l 418 84 b 389 0 402 50 389 23 b 418 -81 389 -30 409 -60 z m 305 -27 l 389 -109 b 304 -138 364 -128 336 -138 b 222 -109 274 -138 246 -128 z"},noteheadCircleXWhole:{x_min:0,x_max:249,y_min:-125,y_max:125,ha:250,o:"m 179 180 b 0 0 81 180 0 101 b 179 -180 0 -99 81 -180 b 359 0 278 -180 359 -99 b 179 180 359 101 278 180 z m 180 32 l 99 112 b 179 140 121 130 150 140 b 262 112 210 140 238 130 z m 151 1 l 68 -82 b 86 0 73 -59 86 -30 b 68 85 86 33 78 50 z m 209 1 l 291 84 b 269 0 276 50 269 32 b 291 -79 269 -26 282 -58 z m 180 -27 l 264 -111 b 179 -138 239 -128 210 -138 b 96 -111 148 -138 120 -128 z"},noteheadCircleXHalf:{x_min:0,x_max:250,y_min:-125,y_max:125,ha:250,o:"m 179 180 b 0 0 81 180 0 101 b 179 -180 0 -99 81 -180 b 360 0 278 -180 360 -99 b 179 180 360 101 278 180 z m 186 37 l 131 92 b 220 124 153 109 189 124 b 262 112 236 124 249 121 z m 215 7 l 291 84 b 304 42 300 71 304 58 b 271 -49 304 10 288 -26 z m 145 -6 l 68 -82 b 56 -42 59 -71 56 -58 b 89 52 56 -9 72 27 z m 174 -33 l 230 -89 b 140 -124 206 -108 171 -124 b 96 -111 122 -124 109 -121 z"},noteheadCircleX:{x_min:0,x_max:249,y_min:-125,y_max:125,ha:250,o:"m 179 180 b 0 0 81 180 0 99 b 179 -180 0 -99 81 -180 b 359 0 278 -180 359 -99 b 179 180 359 99 278 180 z m 261 112 l 180 30 l 98 112 b 179 138 121 128 148 138 b 261 112 210 138 238 128 z m 317 0 b 292 -82 317 -30 308 -59 l 209 1 l 291 84 b 317 0 307 60 317 30 z m 40 0 b 69 84 40 32 50 60 l 151 1 l 68 -84 b 40 0 49 -60 40 -30 z m 95 -111 l 180 -27 l 262 -111 b 179 -138 239 -128 210 -138 b 95 -111 148 -138 120 -128 z"},noteheadCircledDoubleWhole:{x_min:0,x_max:603,y_min:-218,y_max:213,ha:431,o:"m 770 223 l 752 223 b 737 213 744 223 737 219 l 737 59 b 435 307 710 203 582 307 b 128 48 281 307 156 197 l 128 213 b 115 223 128 219 122 223 l 96 223 b 84 213 89 223 84 219 l 84 -215 b 96 -223 84 -220 89 -223 l 115 -223 b 128 -215 122 -223 128 -220 l 128 -56 b 435 -314 156 -206 282 -314 b 654 -223 517 -314 595 -282 b 737 -66 697 -180 726 -125 l 737 -215 b 752 -223 737 -220 744 -223 l 770 -223 b 785 -215 778 -223 785 -220 l 785 213 b 770 223 785 219 778 223 z m 435 274 b 698 85 556 274 661 194 b 439 180 641 143 534 180 b 176 99 320 180 228 148 b 435 274 217 203 318 274 z m 32 223 l 13 223 b 0 213 6 223 0 219 l 0 -215 b 13 -223 0 -220 6 -223 l 32 -223 b 45 -215 40 -223 45 -220 l 45 213 b 32 223 45 219 40 223 z m 852 223 l 835 223 b 819 213 828 223 819 219 l 819 -215 b 835 -223 819 -220 828 -223 l 852 -223 b 868 -215 861 -223 868 -220 l 868 213 b 852 223 868 219 861 223 z m 580 -46 b 514 -143 580 -91 562 -131 b 472 -148 501 -147 487 -148 b 364 -105 433 -148 395 -131 l 334 -73 b 285 58 307 -39 285 10 b 289 91 285 69 287 79 b 403 145 305 140 357 145 b 580 -46 501 145 580 42 z m 435 -282 b 176 -108 318 -282 217 -209 b 425 -180 222 -151 301 -180 b 691 -109 563 -180 647 -153 b 435 -282 651 -210 550 -282 z"},noteheadCircledWhole:{x_min:0,x_max:437,y_min:-225,y_max:211,ha:436,o:"m 314 304 b 0 -10 140 304 0 164 b 314 -324 0 -183 141 -324 b 629 -10 487 -324 629 -183 b 314 304 629 164 488 304 z m 314 275 b 588 73 441 275 549 193 b 321 180 536 137 420 180 b 48 88 190 180 95 143 b 314 275 85 199 199 275 z m 393 -141 b 350 -147 379 -145 364 -147 b 314 -141 337 -147 325 -145 b 167 55 235 -120 167 -26 b 173 91 167 66 168 79 b 284 145 187 138 239 145 b 459 -48 382 145 459 39 b 393 -141 459 -91 438 -131 z m 314 -294 b 40 -86 187 -294 75 -207 b 305 -180 81 -141 164 -180 b 588 -86 464 -180 550 -143 b 314 -294 554 -209 442 -294 z"},noteheadCircledHalf:{x_min:-18,x_max:311,y_min:-162,y_max:167,ha:329,o:"m 212 240 b -26 3 81 240 -26 134 b 212 -233 -26 -127 81 -233 b 448 3 341 -233 448 -127 b 212 240 448 134 341 240 z m 212 220 b 363 160 271 220 324 197 b 281 180 341 173 312 180 b 0 -52 76 180 6 26 b -6 3 -4 -35 -6 -16 b 212 220 -6 122 92 220 z m 50 -92 b 42 -63 46 -84 42 -73 b 173 63 42 -33 73 7 b 317 120 243 105 288 120 b 369 89 344 120 359 107 b 377 62 374 81 377 72 b 248 -66 377 33 348 -1 b 108 -125 183 -109 138 -125 b 50 -92 78 -125 60 -109 z m 212 -215 b 84 -171 164 -215 120 -199 b 138 -180 101 -179 120 -180 b 422 56 372 -180 420 7 b 429 3 426 40 429 22 b 212 -215 429 -117 333 -215 z"},noteheadCircledBlack:{x_min:-21,x_max:321,y_min:-171,y_max:167,ha:338,o:"m 216 240 b -30 -3 82 240 -30 131 b 216 -246 -30 -137 82 -246 b 462 -3 351 -246 462 -137 b 216 240 462 131 351 240 z m 216 220 b 372 160 276 220 331 197 b 284 180 348 174 317 180 b 0 -59 127 180 0 65 l 0 -66 b -10 -3 -6 -45 -10 -24 b 216 220 -10 120 92 220 z m 216 -226 b 56 -158 153 -226 96 -200 b 140 -180 79 -171 107 -180 b 425 60 268 -180 425 -60 b 422 88 425 71 425 79 b 442 -3 435 60 442 29 b 216 -226 442 -125 341 -226 z"},noteheadDoubleWholeSquare:{x_min:0,x_max:416,y_min:-190,y_max:198,ha:388,o:"m 563 217 b 528 180 563 192 544 180 l 62 180 b 36 215 52 180 36 192 l 36 268 b 17 285 36 278 27 285 b 0 268 7 285 0 278 l 0 -255 b 17 -274 0 -264 7 -274 b 36 -255 27 -274 36 -264 l 36 -213 b 66 -180 36 -197 53 -180 l 528 -180 b 563 -209 549 -180 563 -196 l 563 -255 b 580 -274 563 -264 570 -274 b 599 -255 590 -274 599 -264 l 599 268 b 580 285 599 278 590 285 b 563 268 570 285 563 278 z m 36 23 b 111 71 36 55 58 71 l 487 71 b 563 30 533 71 563 53 l 563 -22 b 487 -68 563 -53 533 -68 l 117 -68 b 36 -22 66 -68 36 -49 z"},noteheadSquareWhite:{x_min:0,x_max:313,y_min:-125,y_max:125,ha:250,o:"m 451 -180 l 451 180 l 0 180 l 0 -180 z m 40 -138 l 40 140 l 410 140 l 410 -138 z"},noteheadSquareBlack:{x_min:0,x_max:313,y_min:-125,y_max:125,ha:250,o:"m 451 -180 l 451 180 l 0 180 l 0 -180 z"},noteheadTriangleDownDoubleWhole:{x_min:0,x_max:483,y_min:-155,y_max:155,ha:310,o:"m 696 213 b 681 223 696 219 690 223 l 662 223 b 648 213 655 223 648 219 l 648 -213 b 662 -223 648 -217 655 -223 l 681 -223 b 696 -213 690 -223 696 -217 z m 619 213 b 605 223 619 219 613 223 l 588 223 b 573 213 580 223 573 219 l 573 174 b 562 180 570 177 566 180 l 134 180 b 122 174 130 180 125 177 l 122 213 b 108 223 122 219 117 223 l 91 223 b 76 213 84 223 76 219 l 76 -213 b 91 -223 76 -217 84 -223 l 108 -223 b 122 -213 117 -223 122 -217 l 122 154 l 334 -173 b 346 -180 337 -177 341 -180 b 357 -173 351 -180 354 -177 l 573 154 l 573 -213 b 588 -223 573 -217 580 -223 l 605 -223 b 619 -213 613 -223 619 -217 z m 32 -223 b 46 -213 40 -223 46 -217 l 46 213 b 32 223 46 219 40 223 l 14 223 b 0 213 7 223 0 219 l 0 -213 b 14 -223 0 -217 7 -223 z m 428 98 b 346 -107 428 17 377 -53 b 265 96 315 -55 265 17 b 289 137 265 109 275 137 l 406 137 b 428 98 419 137 428 111 z"},noteheadTriangleDownWhole:{x_min:0,x_max:319,y_min:-125,y_max:125,ha:250,o:"m 14 180 b 0 166 6 180 0 173 b 1 158 0 163 1 160 l 216 -173 b 228 -180 219 -177 225 -180 b 239 -173 233 -180 238 -177 l 458 158 b 459 166 458 160 459 163 b 445 180 459 173 454 180 z m 288 137 b 310 98 301 137 310 111 b 228 -108 310 17 259 -55 b 145 96 197 -56 145 17 b 170 137 145 109 157 137 z"},noteheadTriangleDownHalf:{x_min:0,x_max:285,y_min:-125,y_max:125,ha:250,o:"m 196 -180 b 209 -173 200 -180 206 -177 l 408 157 b 410 166 409 160 410 163 b 396 180 410 173 403 180 l 14 180 b 0 166 4 180 0 173 b 1 158 0 163 0 161 l 183 -173 b 196 -180 184 -174 190 -180 z m 164 138 l 295 138 l 179 -76 l 114 37 z"},noteheadTriangleDownBlack:{x_min:0,x_max:292,y_min:-125,y_max:125,ha:250,o:"m 207 -180 l 420 180 l 0 180 z"},noteheadTriangleUpDoubleWhole:{x_min:0,x_max:483,y_min:-155,y_max:155,ha:310,o:"m 696 213 b 681 223 696 217 690 223 l 662 223 b 648 213 655 223 648 217 l 648 -213 b 662 -223 648 -219 655 -223 l 681 -223 b 696 -213 690 -223 696 -219 z m 619 213 b 605 223 619 217 613 223 l 588 223 b 573 213 580 223 573 217 l 573 -154 l 357 173 b 346 180 354 177 351 180 b 334 173 341 180 337 177 l 122 -154 l 122 213 b 108 223 122 217 117 223 l 91 223 b 76 213 84 223 76 217 l 76 -213 b 91 -223 76 -219 84 -223 l 108 -223 b 122 -213 117 -223 122 -219 l 122 -174 b 134 -180 125 -177 130 -180 l 562 -180 b 573 -174 566 -180 570 -177 l 573 -213 b 588 -223 573 -219 580 -223 l 605 -223 b 619 -213 613 -223 619 -219 z m 32 223 l 14 223 b 0 213 7 223 0 217 l 0 -213 b 14 -223 0 -219 7 -223 l 32 -223 b 46 -213 40 -223 46 -219 l 46 213 b 32 223 46 217 40 223 z m 428 -98 b 406 -137 428 -111 419 -137 l 289 -137 b 265 -96 275 -137 265 -109 b 346 107 265 -17 315 55 b 428 -98 377 53 428 -17 z"},noteheadTriangleUpWhole:{x_min:0,x_max:319,y_min:-125,y_max:125,ha:250,o:"m 445 -180 b 459 -166 454 -180 459 -173 b 458 -158 459 -163 458 -160 l 239 173 b 228 180 238 177 233 180 b 216 173 225 180 219 177 l 1 -158 b 0 -166 1 -160 0 -163 b 14 -180 0 -173 6 -180 z m 170 -137 b 145 -96 157 -137 145 -109 b 228 108 145 -17 197 56 b 310 -98 259 55 310 -17 b 288 -137 310 -111 301 -137 z"},noteheadTriangleUpHalf:{x_min:0,x_max:285,y_min:-125,y_max:125,ha:250,o:"m 215 180 b 202 173 210 180 204 177 l 3 -157 b 0 -166 1 -160 0 -163 b 14 -180 0 -173 7 -180 l 396 -180 b 410 -166 406 -180 410 -173 b 409 -158 410 -163 410 -161 l 228 173 b 215 180 226 174 220 180 z m 246 -138 l 115 -138 l 232 76 l 297 -37 z"},noteheadTriangleUpBlack:{x_min:0,x_max:293,y_min:-125,y_max:125,ha:250,o:"m 422 -180 l 207 180 l 0 -180 z"},noteheadSlashedDoubleWhole1:{x_min:0,x_max:596,y_min:-179,y_max:168,ha:347,o:"m 618 135 l 697 206 b 704 222 703 210 704 216 b 698 236 704 226 703 232 b 683 242 694 239 688 242 b 670 238 677 242 674 240 l 575 153 b 435 180 531 168 481 180 b 128 0 246 180 128 98 b 236 -148 128 -58 160 -114 l 153 -222 b 145 -238 148 -226 145 -232 b 151 -252 145 -242 148 -248 b 167 -258 156 -256 161 -258 b 181 -253 171 -258 177 -256 l 282 -164 b 420 -180 320 -173 366 -180 b 729 0 654 -180 729 -98 b 618 135 729 55 681 104 z m 114 223 l 95 223 b 82 212 88 223 82 217 l 82 -215 b 95 -223 82 -219 88 -223 l 114 -223 b 127 -215 121 -223 127 -219 l 127 212 b 114 223 127 217 121 223 z m 32 223 l 13 223 b 0 212 6 223 0 217 l 0 -215 b 13 -223 0 -219 6 -223 l 32 -223 b 45 -215 39 -223 45 -219 l 45 212 b 32 223 45 217 39 223 z m 844 223 l 825 223 b 811 212 819 223 811 217 l 811 -215 b 825 -223 811 -219 819 -223 l 844 -223 b 858 -215 851 -223 858 -219 l 858 212 b 844 223 858 217 851 223 z m 763 223 l 743 223 b 730 212 736 223 730 217 l 730 -215 b 743 -223 730 -219 736 -223 l 763 -223 b 776 -215 769 -223 776 -219 l 776 212 b 763 223 776 217 769 223 z m 282 56 b 285 89 282 68 284 79 b 399 144 301 137 354 144 b 510 95 441 144 480 124 l 327 -68 b 282 56 301 -35 282 13 z m 572 -72 b 508 -141 564 -108 544 -132 b 467 -147 495 -145 481 -147 b 360 -104 428 -147 389 -128 l 356 -98 l 537 63 b 575 -46 560 30 575 -9 b 572 -72 575 -55 573 -65 z"},noteheadSlashedWhole1:{x_min:-22,x_max:433,y_min:-157,y_max:148,ha:305,o:"m 484 140 b 308 180 431 166 367 180 b 0 1 118 180 0 99 b 73 -128 0 -48 22 -95 l -22 -190 b -32 -206 -27 -194 -32 -200 b -27 -217 -32 -210 -30 -215 b -12 -226 -23 -223 -17 -226 b 0 -223 -7 -226 -4 -225 l 112 -150 b 294 -180 157 -168 217 -180 b 602 1 526 -180 602 -98 b 523 118 602 48 570 86 l 613 177 b 624 193 619 181 624 187 b 619 204 624 197 622 200 b 603 213 615 209 609 213 b 592 209 599 213 596 212 z m 190 -52 b 154 56 170 -20 154 19 b 160 91 154 68 156 79 b 271 147 174 138 226 147 b 396 82 321 147 364 121 z m 419 50 b 446 -48 436 19 446 -14 b 337 -147 446 -120 402 -147 b 301 -141 327 -147 314 -144 b 235 -104 276 -134 253 -120 b 215 -84 226 -98 220 -91 z"},noteheadSlashedHalf1:{x_min:-67,x_max:386,y_min:-142,y_max:160,ha:302,o:"m 552 222 b 536 230 549 228 543 230 b 524 228 533 230 528 230 l 389 140 b 281 180 364 164 327 180 b 0 -60 65 180 0 13 b 7 -105 0 -78 3 -92 l -88 -167 b -96 -184 -94 -171 -96 -177 b -94 -194 -96 -187 -95 -192 b -76 -204 -89 -202 -84 -204 b -66 -202 -73 -204 -69 -203 l 29 -140 b 137 -180 55 -167 92 -180 b 420 59 374 -180 420 13 b 412 107 420 76 419 92 l 546 194 b 556 210 552 197 556 204 b 552 222 556 213 554 217 z m 315 120 b 347 112 328 120 338 117 l 46 -82 b 42 -63 43 -76 42 -69 b 315 120 42 6 248 120 z m 108 -124 b 69 -114 91 -124 79 -120 l 372 81 b 376 63 374 75 376 69 b 108 -124 376 0 174 -124 z"},noteheadSlashedBlack1:{x_min:-80,x_max:375,y_min:-165,y_max:167,ha:332,o:"m 518 240 b 507 236 514 240 510 239 l 384 148 b 284 180 359 168 324 180 b 0 -62 127 180 0 63 b 13 -115 0 -82 4 -99 l -107 -202 b -115 -217 -111 -204 -115 -212 b -111 -229 -115 -222 -114 -225 b -95 -238 -108 -235 -101 -238 b -84 -235 -91 -238 -86 -236 l 39 -148 b 140 -180 63 -170 99 -180 b 425 59 268 -180 425 -62 b 410 117 425 81 420 101 l 530 203 b 540 219 536 207 540 213 b 518 240 540 229 528 240 z"},noteheadSlashedDoubleWhole2:{x_min:0,x_max:596,y_min:-178,y_max:169,ha:347,o:"m 729 0 b 435 180 729 102 569 180 b 278 156 374 180 321 170 l 184 239 b 170 243 181 242 176 243 b 154 238 166 243 158 240 b 150 223 151 233 150 228 b 156 207 150 217 153 212 l 233 138 b 128 0 167 107 128 56 b 420 -180 128 -94 210 -180 b 575 -164 482 -180 533 -174 l 672 -252 b 687 -256 677 -255 681 -256 b 703 -251 691 -256 698 -255 b 707 -236 706 -246 707 -240 b 701 -220 707 -230 706 -225 l 619 -150 b 729 0 700 -117 729 -62 z m 114 223 l 95 223 b 82 213 88 223 82 217 l 82 -213 b 95 -223 82 -219 88 -223 l 114 -223 b 127 -213 121 -223 127 -219 l 127 213 b 114 223 127 217 121 223 z m 32 223 l 13 223 b 0 213 6 223 0 217 l 0 -213 b 13 -223 0 -219 6 -223 l 32 -223 b 45 -213 39 -223 45 -219 l 45 213 b 32 223 45 217 39 223 z m 844 223 l 825 223 b 811 213 819 223 811 217 l 811 -213 b 825 -223 811 -219 819 -223 l 844 -223 b 858 -213 851 -223 858 -219 l 858 213 b 844 223 858 217 851 223 z m 763 223 l 743 223 b 730 213 736 223 730 217 l 730 -213 b 743 -223 730 -219 736 -223 l 763 -223 b 776 -213 769 -223 776 -219 l 776 213 b 763 223 776 217 769 223 z m 312 124 b 399 144 336 141 369 144 b 575 -46 495 144 575 40 b 563 -98 575 -65 570 -81 z m 508 -141 b 467 -147 495 -145 481 -147 b 360 -104 428 -147 389 -128 b 330 -72 350 -95 340 -82 b 282 56 304 -37 282 10 b 285 89 282 68 284 79 b 536 -130 287 89 304 75 z"},noteheadSlashedWhole2:{x_min:-18,x_max:436,y_min:-154,y_max:151,ha:305,o:"m 531 -128 b 602 1 582 -96 602 -49 b 308 180 602 104 441 180 b 114 144 230 180 164 166 l 4 215 b -6 217 1 217 -3 217 b -22 209 -13 217 -19 215 b -26 197 -24 204 -26 200 b -16 181 -26 192 -22 184 l 75 121 b 0 1 27 91 0 49 b 294 -180 0 -94 82 -180 b 491 -150 379 -180 444 -168 l 598 -219 b 608 -222 600 -222 605 -222 b 624 -213 615 -222 621 -219 b 628 -202 626 -209 628 -206 b 618 -186 628 -196 624 -189 z m 168 108 b 271 147 190 141 233 147 b 446 -48 369 147 446 40 b 445 -72 446 -56 446 -63 z m 154 69 l 429 -109 b 382 -141 419 -125 402 -135 b 337 -147 367 -144 351 -147 b 301 -141 327 -147 314 -144 b 235 -104 276 -134 253 -120 b 203 -72 223 -94 213 -82 b 154 58 177 -39 154 12 z"},noteheadSlashedHalf2:{x_min:-73,x_max:380,y_min:-134,y_max:168,ha:302,o:"m 537 -156 l 383 -58 b 422 60 413 -9 422 39 b 281 180 422 134 364 180 b 101 127 203 180 144 157 l -75 239 b -85 242 -78 242 -82 242 b -102 233 -92 242 -98 239 b -105 222 -104 229 -105 225 b -95 206 -105 216 -102 209 l 69 99 b 0 -59 19 46 0 -20 b 138 -180 0 -135 60 -180 b 359 -88 248 -180 317 -138 l 516 -190 b 527 -193 520 -192 524 -193 b 543 -183 534 -193 540 -190 b 547 -173 546 -180 547 -176 b 537 -156 547 -166 543 -160 z m 367 92 b 377 63 374 82 377 73 b 318 -14 377 43 361 20 l 184 72 b 317 121 248 108 289 121 b 367 92 344 121 357 109 z m 248 -66 b 108 -124 181 -108 138 -124 b 50 -92 78 -124 60 -109 b 42 -63 46 -84 42 -73 b 145 49 42 -35 68 0 l 285 -40 b 248 -66 274 -49 261 -56 z"},noteheadSlashedBlack2:{x_min:-79,x_max:376,y_min:-164,y_max:168,ha:332,o:"m 531 -200 l 363 -78 b 425 59 402 -37 425 10 b 285 180 425 132 367 180 b 92 114 210 180 144 154 l -81 238 b -94 242 -85 240 -89 242 b -111 232 -99 242 -107 238 b -114 220 -112 229 -114 225 b -105 204 -114 215 -111 207 l 62 85 b 0 -62 23 43 0 -9 b 140 -180 0 -137 62 -180 b 331 -108 204 -180 275 -153 l 507 -233 b 520 -236 511 -236 517 -236 b 537 -228 527 -236 533 -233 b 541 -216 540 -225 541 -220 b 531 -200 541 -210 537 -203 z"},noteheadDiamondDoubleWhole:{x_min:0,x_max:432,y_min:-155,y_max:155,ha:310,o:"m 592 223 b 580 215 585 223 580 219 l 580 -215 b 592 -223 580 -219 585 -223 l 608 -223 b 622 -215 615 -223 622 -219 l 622 215 b 608 223 622 219 615 223 z m 517 223 b 504 215 510 223 504 219 l 504 -215 b 517 -223 504 -219 510 -223 l 533 -223 b 544 -215 540 -223 544 -219 l 544 215 b 533 223 544 219 540 223 z m 246 179 b 240 180 243 179 242 180 b 232 176 236 180 233 179 l 118 22 b 117 17 117 20 117 19 l 117 215 b 104 223 117 219 111 223 l 88 223 b 75 215 81 223 75 219 l 75 -215 b 88 -223 75 -219 81 -223 l 104 -223 b 117 -215 111 -223 117 -219 l 117 14 l 118 14 b 122 7 118 12 120 10 l 374 -179 b 382 -180 376 -180 379 -180 b 390 -177 384 -180 387 -180 l 503 -23 l 503 -17 b 500 -9 503 -13 503 -10 z m 12 223 b 0 215 4 223 0 219 l 0 -215 b 12 -223 0 -219 4 -223 l 29 -223 b 40 -215 36 -223 40 -219 l 40 215 b 29 223 40 219 36 223 z m 183 39 b 179 46 181 39 179 43 b 229 112 226 112 228 112 b 236 109 229 112 233 111 l 436 -39 b 439 -46 438 -39 439 -42 b 390 -112 393 -111 392 -112 b 383 -109 389 -112 386 -111 z"},noteheadDiamondWhole:{x_min:0,x_max:270,y_min:-125,y_max:125,ha:250,o:"m 386 -23 b 389 -16 387 -20 389 -19 b 383 -7 389 -13 386 -9 l 130 179 b 122 180 128 180 125 180 b 115 177 120 180 117 180 l 3 23 b 0 17 1 20 0 19 b 4 7 0 16 3 10 l 258 -179 b 264 -180 261 -179 262 -180 b 272 -176 268 -180 271 -179 z m 66 40 b 62 48 65 42 62 45 l 109 111 b 112 112 109 112 111 112 b 118 111 115 112 117 111 l 320 -37 b 324 -46 323 -39 324 -42 b 275 -111 278 -111 276 -111 b 268 -108 272 -111 271 -109 z"},noteheadDiamondHalf:{x_min:0,x_max:251,y_min:-125,y_max:125,ha:250,o:"m 359 -7 b 361 0 360 -6 361 -3 b 359 7 361 3 360 4 l 189 177 b 180 180 186 179 183 180 b 174 177 179 180 176 179 l 4 7 b 0 0 1 4 0 3 b 4 -7 0 -3 1 -6 l 174 -177 b 180 -180 176 -180 179 -180 b 189 -177 183 -180 186 -180 z m 266 26 b 138 -71 266 -12 176 -71 b 96 -50 121 -71 108 -63 b 88 -24 89 -43 88 -32 b 215 73 88 13 177 73 b 266 26 238 73 266 50 z"},noteheadDiamondBlack:{x_min:0,x_max:250,y_min:-125,y_max:125,ha:250,o:"m 357 -6 b 360 1 359 -4 360 -1 b 357 9 360 4 359 7 l 189 177 b 180 180 187 179 184 180 b 171 177 177 180 173 179 l 3 9 b 0 1 0 6 0 4 b 4 -7 0 -1 1 -4 l 173 -177 b 180 -180 176 -180 177 -180 b 187 -177 181 -180 184 -180 z"},noteheadParenthesis:{x_min:-73,x_max:368,y_min:-180,y_max:182,ha:362,o:"m 52 -249 b -30 -144 3 -212 -14 -190 b -52 4 -45 -102 -52 -56 b 52 252 -52 118 -36 179 l 46 262 b -105 3 -49 197 -105 124 b 45 -259 -105 -109 -48 -200 z m 382 -259 b 530 3 474 -202 530 -108 b 379 262 530 122 474 200 l 373 252 b 478 4 462 180 478 118 b 456 -144 478 -56 471 -102 b 373 -249 439 -190 422 -212 z"},noteheadParenthesisRight:{x_min:-36,x_max:73,y_min:-181,y_max:181,ha:362,o:"m -43 -261 b 105 1 49 -203 105 -109 b -46 261 105 121 49 199 l -52 251 b 53 3 37 179 53 117 b 32 -145 53 -58 46 -104 b -52 -251 14 -192 -3 -213 z"},noteheadParenthesisLeft:{x_min:0,x_max:109,y_min:-181,y_max:181,ha:362,o:"m 157 -251 b 75 -145 108 -213 91 -192 b 53 3 60 -104 53 -58 b 157 251 53 117 69 177 l 151 261 b 0 1 56 196 0 122 b 150 -261 0 -111 58 -202 z"},noteheadMoonBlack:{x_min:0,x_max:315,y_min:-125,y_max:125,ha:250,o:"m 228 -180 b 454 0 343 -180 454 -130 l 454 180 l 0 180 l 0 0 b 228 -180 0 -131 112 -180 z"},noteheadTriangleLeftBlack:{x_min:0,x_max:339,y_min:-125,y_max:125,ha:250,o:"m 488 -180 l 0 180 l 0 -180 z"},noteheadTriangleRightBlack:{x_min:0,x_max:339,y_min:-125,y_max:125,ha:250,o:"m 488 180 l 0 -180 l 488 -180 z"},noteheadTriangleRoundDownBlack:{x_min:0,x_max:278,y_min:-125,y_max:125,ha:250,o:"m 200 -180 l 400 112 l 383 124 b 199 180 327 161 264 180 b 16 124 135 180 73 161 l 0 112 z"},augmentationDot:{x_min:0,x_max:100,y_min:-50,y_max:50,ha:100,o:"m 144 0 b 72 72 144 40 112 72 b 0 0 32 72 0 40 b 72 -72 0 -40 32 -72 b 144 0 112 -72 144 -40 z"},tremolo1:{x_min:-150,x_max:150,y_min:-93,y_max:94,ha:187,o:"m 216 -45 l 216 135 l -216 46 l -216 -134 z"},flag8thUp:{x_min:0,x_max:264,y_min:-810.1921176545985,y_max:9,ha:819.1921176545985,o:"m 343 -1138 b 380 -888 343 -1138 380 -1001 b 215 -395 380 -708 305 -539 b 58 -19 141 -281 81 -157 b 27 13 53 4 42 13 b 0 -9 12 13 0 9 l 0 -353 b 284 -688 95 -370 232 -566 b 318 -904 305 -737 318 -819 b 284 -1102 318 -969 308 -1037 b 279 -1123 281 -1110 279 -1117 b 302 -1165 279 -1146 294 -1159 b 343 -1138 311 -1171 336 -1162 z"},flag8thDown:{x_min:0,x_max:306,y_min:-14,y_max:808,ha:822,o:"m 346 1094 b 376 897 366 1034 376 962 b 318 642 376 812 340 691 b 0 340 265 521 193 405 l 0 1 b 23 -20 0 -13 12 -20 b 58 12 36 -20 55 -12 b 262 387 82 148 189 274 b 441 881 353 530 441 701 b 400 1142 441 994 412 1096 b 377 1164 396 1158 387 1164 b 346 1094 356 1164 331 1136 z"},flag16thUp:{x_min:0,x_max:279,y_min:-813,y_max:2,ha:815,o:"m 392 -1146 b 402 -988 397 -1139 402 -1057 l 402 -956 b 360 -783 402 -896 386 -837 b 359 -770 360 -779 359 -776 b 360 -760 359 -768 359 -765 b 396 -577 364 -752 396 -665 b 392 -526 396 -559 395 -543 b 236 -275 377 -428 340 -387 b 53 -16 158 -192 78 -168 b 24 3 50 0 33 3 b 0 -12 16 3 0 -1 l 0 -570 l 7 -570 b 298 -778 96 -573 199 -576 b 344 -992 331 -847 344 -917 b 333 -1120 344 -1034 340 -1077 b 331 -1133 331 -1126 331 -1129 b 363 -1171 331 -1152 343 -1171 b 392 -1146 373 -1171 383 -1165 z m 301 -661 b 223 -562 278 -625 253 -596 b 59 -331 156 -484 89 -449 b 58 -327 58 -330 58 -328 b 78 -312 58 -321 66 -312 l 89 -312 b 302 -464 177 -312 255 -393 b 341 -592 328 -501 341 -546 b 340 -621 341 -602 341 -611 b 330 -658 337 -632 337 -647 b 311 -667 328 -662 318 -667 b 301 -661 307 -667 304 -665 z"},flag16thDown:{x_min:0,x_max:290.8951581511223,y_min:-9,y_max:812.0064,ha:821.0064,o:"m 346 1132 b 312 768 367 1011 367 880 b 7 559 213 566 96 562 l 0 559 l 0 1 b 24 -13 0 -6 10 -13 b 53 6 35 -13 50 -10 b 406 516 88 228 372 289 b 410 567 409 531 410 549 b 374 750 410 655 379 742 b 373 760 373 753 373 756 b 374 773 373 766 374 769 b 405 1138 426 881 428 1022 b 370 1169 397 1171 387 1169 b 346 1132 353 1168 341 1156 z m 325 657 b 344 647 333 657 343 652 b 354 611 351 636 351 622 b 356 582 356 600 356 590 b 317 454 356 534 343 491 b 89 302 269 383 177 302 l 78 302 b 58 317 66 302 58 310 b 59 321 58 318 58 320 b 238 552 89 439 170 472 b 315 651 268 585 292 613 b 325 657 318 655 321 657 z"},flag32ndUp:{x_min:0,x_max:261,y_min:-812,y_max:149,ha:961,o:"m 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 366 -289 369 -315 369 -302 b 220 -58 350 -202 317 -163 b 46 187 148 20 71 43 b 20 215 45 200 35 215 b 0 197 12 215 0 207 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 56 -390 147 -527 88 -495 b 73 -367 53 -380 60 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z"},flag32ndDown:{x_min:0,x_max:273,y_min:-172,y_max:812,ha:984,o:"m 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -229 b 20 -248 0 -242 9 -248 b 48 -219 35 -248 46 -232 b 229 36 72 -69 154 -46 b 380 278 330 145 364 186 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z"},flag64thUp:{x_min:0,x_max:261,y_min:-812,y_max:347,ha:1159,o:"m 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 220 228 350 84 317 122 b 46 472 148 305 71 328 b 20 500 45 485 32 500 b 0 482 10 500 0 492 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 24 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 58 187 148 20 82 43 b 56 193 58 189 58 192 b 300 24 138 193 220 157 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 b 73 -367 52 -376 63 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z"},flag64thDown:{x_min:0,x_max:273,y_min:-376,y_max:812,ha:1188,o:"m 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -523 b 20 -541 0 -534 9 -541 b 48 -513 35 -541 46 -526 b 229 -258 72 -363 154 -340 b 380 -16 330 -148 364 -108 b 384 27 383 -1 384 13 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z m 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 b 229 36 75 -86 145 -55 b 311 128 264 73 289 102 z"},flag128thUp:{x_min:0,x_max:261,y_min:-812,y_max:533,ha:1345,o:"m 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 341 75 360 26 353 50 b 369 222 354 111 369 167 b 366 264 369 236 369 251 b 220 495 350 351 317 390 b 46 740 148 573 71 596 b 22 768 45 753 35 768 b 0 750 10 768 0 760 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 292 b 321 223 315 264 321 242 b 317 193 321 212 318 203 b 301 135 314 180 308 158 b 220 228 281 161 255 190 b 55 461 151 304 79 327 b 300 292 134 461 220 426 z m 300 24 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 56 187 148 20 81 43 b 55 193 56 189 56 192 b 300 24 137 193 220 157 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 b 73 -367 53 -376 62 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z"},flag128thDown:{x_min:0,x_max:273,y_min:-580,y_max:812,ha:1392,o:"m 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -816 b 20 -835 0 -828 7 -835 b 48 -806 33 -835 46 -819 b 229 -552 72 -657 154 -634 b 380 -310 330 -442 364 -402 b 384 -266 383 -295 384 -281 b 351 -105 384 -206 366 -143 b 384 27 372 -66 384 -16 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z m 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 b 229 36 75 -86 145 -55 b 311 128 264 73 289 102 z m 330 -238 b 334 -268 331 -248 334 -256 b 311 -340 334 -287 328 -310 b 56 -516 229 -478 137 -516 b 229 -258 75 -380 145 -348 b 311 -166 264 -220 289 -192 z"},accidentalFlat:{x_min:0,x_max:226,y_min:-175,y_max:439,ha:614,o:"m 17 -245 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 82 -225 117 -186 b 325 82 281 -72 325 16 b 196 220 325 164 262 216 b 117 196 171 220 137 209 b 85 176 108 189 92 176 b 78 177 82 176 81 176 b 62 202 68 181 62 192 b 72 608 63 233 72 579 b 45 632 72 624 59 632 b 0 592 24 632 1 618 b 17 -245 0 592 6 -230 z m 68 -117 b 63 27 68 -117 63 -30 b 66 73 63 50 65 68 b 167 144 76 102 134 144 b 226 60 209 144 226 96 b 98 -134 226 -17 160 -95 b 84 -138 92 -137 88 -138 b 68 -117 71 -138 68 -124 z"},accidentalNatural:{x_min:0,x_max:168,y_min:-335,y_max:341,ha:676,o:"m 203 261 b 197 259 200 261 199 259 b 68 226 197 259 105 226 b 53 233 59 226 53 228 l 53 474 b 36 491 53 484 45 491 l 17 491 b 0 474 7 491 0 484 l 0 -268 b 13 -281 0 -276 4 -281 l 16 -279 b 22 -278 17 -279 20 -279 b 164 -235 42 -269 122 -235 b 189 -251 179 -235 189 -239 l 189 -465 b 206 -482 189 -475 196 -482 l 225 -482 b 242 -465 233 -482 242 -475 l 242 258 b 230 269 242 265 236 269 b 225 268 229 269 226 269 z m 53 56 b 176 114 53 76 141 114 b 189 107 184 114 189 112 l 189 -42 b 71 -101 189 -68 107 -101 b 53 -92 60 -101 53 -98 z"},accidentalSharp:{x_min:0,x_max:249,y_min:-348,y_max:350,ha:698,o:"m 341 170 b 359 194 351 174 359 186 l 359 297 b 348 308 359 304 354 308 b 341 307 346 308 344 308 b 305 294 341 307 312 295 b 285 312 295 294 285 301 l 285 488 b 265 504 285 497 276 504 b 242 488 251 504 242 497 l 242 301 b 223 259 240 287 236 268 b 132 223 206 249 157 229 b 115 252 120 223 115 240 l 115 425 b 95 441 115 433 105 441 b 72 425 81 441 72 433 l 72 230 b 55 192 72 210 63 196 b 17 176 46 187 17 176 b 0 153 7 173 0 161 l 0 50 b 13 37 0 42 4 37 l 16 39 b 50 53 17 39 39 48 l 52 55 b 72 29 63 55 72 40 l 72 -114 b 56 -147 72 -130 65 -143 b 17 -163 48 -150 17 -163 b 0 -186 7 -166 0 -177 l 0 -288 b 13 -301 0 -297 4 -301 l 16 -300 b 50 -287 17 -300 37 -291 b 55 -285 52 -285 53 -285 b 72 -308 65 -285 72 -301 l 72 -485 b 91 -501 72 -494 81 -501 b 115 -485 105 -501 115 -494 l 115 -285 b 130 -253 115 -266 122 -256 l 217 -217 b 219 -217 217 -217 219 -217 l 222 -216 b 242 -242 235 -216 242 -233 l 242 -422 b 261 -438 242 -431 251 -438 b 285 -422 276 -438 285 -431 l 285 -217 b 301 -184 285 -206 291 -189 b 341 -168 311 -180 341 -168 b 359 -144 351 -164 359 -153 l 359 -42 b 348 -30 359 -35 354 -30 b 341 -32 346 -30 344 -30 l 304 -46 b 285 -20 295 -46 285 -37 l 285 114 b 304 156 285 124 292 151 z m 242 -65 b 132 -122 233 -94 166 -122 b 115 -115 124 -122 117 -120 b 111 -43 112 -109 111 -78 b 115 63 111 1 112 52 b 220 118 118 88 184 118 b 242 109 230 118 239 115 b 248 27 245 102 248 66 b 242 -65 248 -12 245 -52 z"},accidentalDoubleSharp:{x_min:0,x_max:247,y_min:-125,y_max:127,ha:252,o:"m 274 -46 b 206 1 258 -37 206 -9 b 274 50 206 22 253 43 b 278 50 275 50 276 50 l 287 49 b 346 63 304 49 331 52 b 356 115 353 71 356 92 b 292 183 356 174 351 183 b 233 173 266 183 240 180 b 226 117 228 168 226 143 b 179 49 219 101 196 49 b 130 117 158 49 135 96 b 118 173 130 141 125 167 b 66 183 112 180 89 183 b 7 173 42 183 16 180 b 0 120 3 170 0 145 b 7 63 0 94 3 68 b 68 49 17 55 43 49 b 82 50 73 49 78 50 b 150 3 98 42 150 13 b 84 -46 150 -16 104 -39 l 69 -46 b 7 -56 43 -46 16 -49 b 0 -111 3 -60 0 -85 b 7 -166 0 -137 3 -163 b 65 -180 17 -174 40 -180 b 118 -166 86 -180 109 -176 b 130 -111 127 -158 130 -134 b 132 -105 130 -109 131 -107 b 177 -45 141 -85 158 -45 b 226 -111 196 -45 220 -91 b 233 -166 226 -137 228 -161 b 291 -180 243 -174 266 -180 b 356 -114 346 -180 356 -166 b 346 -56 356 -89 351 -63 b 288 -46 338 -49 312 -46 z"},accidentalDoubleFlat:{x_min:0,x_max:411,y_min:-175,y_max:437,ha:612,o:"m 452 217 b 384 194 426 217 408 207 b 350 176 374 189 363 176 b 343 177 347 176 344 176 b 328 202 333 180 328 190 b 337 606 328 232 337 579 b 310 629 337 622 324 629 b 265 592 291 629 268 616 b 269 194 265 592 266 395 b 196 217 248 209 223 217 l 187 217 b 120 194 160 217 143 207 b 85 176 108 189 98 176 b 78 177 82 176 81 176 b 62 202 68 180 62 190 b 72 606 62 232 72 579 b 45 629 72 622 59 629 b 0 592 24 629 1 616 b 17 -245 0 592 7 -232 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 84 -226 120 -186 b 274 -50 206 -124 246 -85 b 284 -245 276 -158 279 -240 b 295 -252 288 -251 292 -252 b 304 -249 300 -252 304 -249 b 416 -163 348 -226 383 -186 b 592 82 546 -72 592 16 b 461 217 592 163 528 216 z m 96 -134 b 84 -138 92 -137 86 -138 b 68 -115 72 -138 68 -124 b 63 26 68 -115 63 -30 b 66 72 63 49 65 66 b 168 144 75 101 134 144 b 226 59 212 144 226 95 b 96 -134 226 -22 161 -94 z m 361 -134 b 348 -138 356 -137 351 -138 b 333 -115 337 -138 333 -124 b 328 39 333 -115 328 -16 b 330 72 328 55 328 68 b 433 144 338 101 399 144 b 468 130 448 144 459 140 b 490 59 481 112 490 88 b 361 -134 490 -22 426 -94 z"},accidentalParensLeft:{x_min:0,x_max:141,y_min:-248,y_max:247,ha:495,o:"m 203 331 l 203 351 b 202 356 203 354 203 356 b 0 0 60 281 0 140 b 199 -357 0 -144 60 -269 b 203 -354 200 -357 203 -356 l 203 -333 b 200 -327 203 -330 202 -328 b 86 0 118 -253 86 -160 b 200 324 86 158 120 251 b 203 331 202 325 203 327 z"},accidentalParensRight:{x_min:0,x_max:141,y_min:-248,y_max:247,ha:495,o:"m 0 331 b 3 324 0 327 1 325 b 117 0 84 251 117 158 b 3 -327 117 -160 85 -253 b 0 -333 1 -328 0 -330 l 0 -354 b 4 -357 0 -356 3 -357 b 203 0 143 -269 203 -144 b 1 356 203 140 143 281 b 0 351 0 356 0 354 z"},accidentalQuarterToneFlatStein:{x_min:1,x_max:227,y_min:-175,y_max:439,ha:614,o:"m 310 -245 b 327 592 321 -230 327 592 b 282 632 325 618 302 632 b 255 608 268 632 255 624 b 265 202 255 579 264 233 b 249 177 265 192 259 181 b 242 176 246 176 245 176 b 210 196 235 176 219 189 b 131 220 190 209 156 220 b 1 85 65 216 1 164 b 174 -161 1 16 46 -72 b 288 -249 210 -186 245 -225 b 297 -252 288 -249 292 -252 b 310 -245 301 -252 305 -251 z m 259 -117 b 243 -138 259 -124 256 -138 b 229 -134 239 -138 235 -137 b 101 60 167 -95 101 -17 b 160 144 101 96 118 144 b 261 73 193 144 251 102 b 264 27 262 68 264 50 b 259 -117 264 -30 259 -117 z"},accidentalThreeQuarterTonesFlatZimmermann:{x_min:1,x_max:466,y_min:-175,y_max:439,ha:614,o:"m 363 -245 b 376 -252 367 -251 372 -252 b 384 -249 380 -252 384 -249 b 497 -161 428 -226 464 -186 b 671 84 625 -72 671 16 b 541 220 671 164 606 217 b 513 217 531 220 523 219 b 464 196 495 212 480 206 b 431 176 452 189 442 176 b 423 177 428 176 426 176 b 408 202 413 180 408 190 l 419 608 b 392 632 419 625 406 632 b 346 592 372 632 347 618 b 363 -245 346 592 351 -230 z m 289 -249 b 297 -252 289 -249 292 -252 b 310 -245 300 -252 305 -251 b 328 592 321 -230 328 592 b 282 631 327 618 302 631 b 255 608 268 631 255 624 l 266 202 b 251 177 266 190 261 180 b 243 176 248 176 246 176 b 210 196 232 176 222 189 b 164 216 196 204 180 210 l 163 217 b 132 220 151 219 143 220 b 1 84 65 217 1 163 b 177 -163 1 16 48 -72 b 289 -249 210 -186 245 -226 z m 262 72 b 265 26 264 66 265 49 b 261 -115 265 -30 261 -115 b 245 -138 261 -124 258 -138 b 230 -134 240 -138 236 -137 b 102 60 166 -92 102 -20 b 124 128 102 88 111 112 b 161 144 134 138 147 144 b 199 134 173 144 184 141 b 262 72 219 122 256 92 z m 413 -115 b 409 26 413 -115 409 -30 b 412 72 409 49 410 66 b 514 144 420 102 480 144 b 570 60 557 144 570 96 b 442 -134 570 -23 508 -91 b 429 -138 436 -137 433 -138 b 413 -115 418 -138 413 -124 z"},accidentalQuarterToneSharpStein:{x_min:0,x_max:179,y_min:-353,y_max:307,ha:660,o:"m 258 240 b 246 252 258 248 252 252 b 240 251 245 252 242 252 b 168 225 240 251 171 225 b 150 253 156 225 150 240 l 150 426 b 130 442 150 435 141 442 b 105 418 108 442 105 429 l 105 230 b 91 193 105 219 101 202 b 17 161 65 183 42 171 b 0 138 9 158 0 147 l 0 36 b 13 23 0 27 4 23 l 16 24 b 86 53 17 24 73 49 l 88 55 b 107 30 98 55 107 42 l 107 -114 b 92 -145 107 -130 101 -143 l 17 -177 b 0 -200 9 -180 0 -192 l 0 -302 b 13 -315 0 -311 4 -315 l 16 -314 b 85 -285 17 -314 72 -291 b 105 -312 92 -282 105 -301 l 105 -492 b 125 -508 105 -501 114 -508 b 150 -484 147 -508 150 -498 l 150 -285 b 151 -274 150 -281 150 -278 b 164 -253 153 -265 158 -256 b 240 -225 176 -251 240 -225 b 258 -202 249 -222 258 -210 l 258 -99 b 245 -86 258 -91 253 -86 l 242 -88 b 240 -88 242 -88 240 -88 l 240 -86 b 168 -115 240 -86 174 -114 b 148 -91 158 -115 148 -107 l 148 43 b 167 85 148 55 156 81 b 240 114 180 91 240 114 b 258 138 249 118 258 128 z"},accidentalThreeQuarterTonesSharpStein:{x_min:3,x_max:317,y_min:-347,y_max:369,ha:716,o:"m 456 324 b 448 336 456 330 454 336 b 393 317 445 336 400 320 b 389 315 392 315 390 315 b 383 325 386 315 383 318 l 383 508 b 360 531 383 528 379 531 b 337 508 341 531 337 527 l 337 318 b 325 291 337 300 334 294 b 268 268 320 288 287 276 b 253 281 256 268 253 274 l 253 464 b 230 487 253 484 249 487 b 207 464 212 487 207 482 l 207 264 b 194 240 207 253 204 245 l 132 217 b 131 217 132 217 132 217 l 130 216 b 118 229 122 216 118 220 l 118 420 b 95 444 118 439 114 444 b 72 420 76 444 72 439 l 72 212 b 60 190 72 197 68 193 l 16 173 b 4 161 9 170 4 167 l 4 50 b 13 39 4 45 9 39 b 58 55 16 39 46 49 b 63 56 60 56 62 56 b 72 42 71 56 72 50 l 72 -125 b 58 -150 72 -137 65 -147 l 16 -166 b 4 -177 9 -168 4 -171 l 4 -289 b 14 -301 4 -295 9 -301 b 53 -287 16 -301 40 -291 b 62 -285 56 -285 59 -285 b 72 -298 69 -285 72 -289 l 72 -477 b 95 -500 72 -495 76 -500 b 118 -477 114 -500 118 -495 l 118 -278 b 127 -259 118 -269 121 -261 l 196 -232 b 207 -243 204 -232 207 -235 l 207 -432 b 230 -455 207 -452 212 -455 b 253 -432 249 -455 253 -451 l 253 -228 b 268 -204 253 -216 259 -207 l 320 -186 b 328 -183 323 -184 325 -183 b 337 -194 334 -183 337 -187 l 337 -387 b 360 -410 337 -408 341 -410 b 383 -387 379 -410 383 -406 l 383 -174 b 395 -157 383 -166 390 -158 l 445 -138 b 456 -127 452 -135 456 -132 l 456 -14 b 448 -3 456 -10 454 -3 b 397 -22 445 -3 408 -17 l 396 -23 b 383 -6 387 -23 383 -16 l 383 163 b 392 181 383 173 384 179 b 445 202 397 183 445 202 b 456 213 452 203 456 207 z m 337 -45 b 266 -78 333 -56 287 -78 b 258 -75 262 -78 259 -76 b 253 19 255 -71 253 -27 b 258 130 253 69 255 122 b 333 163 264 141 315 163 b 337 161 334 163 337 161 b 341 78 340 157 341 120 b 337 -45 341 24 340 -37 z m 118 -127 b 114 -48 114 -121 114 -86 b 118 78 114 6 115 68 b 200 114 122 91 180 114 b 207 111 204 114 206 112 b 212 22 210 107 212 66 b 207 -94 212 -29 210 -85 b 127 -130 203 -108 148 -130 b 118 -127 122 -130 120 -128 z"},accidentalBuyukMucennebFlat:{x_min:1,x_max:287,y_min:-174,y_max:438,ha:612,o:"m 379 452 b 370 464 379 458 377 464 b 164 389 366 464 170 392 b 156 396 163 389 156 393 b 157 436 157 409 157 428 b 167 452 157 445 161 449 b 366 526 173 455 366 526 b 379 540 374 528 379 534 l 379 611 b 370 622 379 616 377 622 b 170 550 366 622 174 552 b 160 557 163 550 160 554 b 161 608 160 585 161 602 b 134 631 161 624 148 631 b 89 590 114 631 91 616 l 89 528 b 81 517 89 526 88 518 b 16 491 76 514 16 491 b 1 480 6 490 1 485 l 1 406 b 13 395 1 400 4 395 l 14 396 b 79 419 16 396 72 415 b 89 412 86 419 89 415 b 91 376 89 399 89 386 b 82 359 91 364 89 361 b 16 331 76 356 16 331 b 1 321 6 331 1 328 l 1 248 b 13 236 1 242 4 236 b 79 262 16 236 71 258 b 92 251 89 262 92 256 b 107 -242 95 23 101 -236 b 120 -251 111 -249 115 -251 b 128 -248 124 -251 128 -248 b 240 -160 171 -225 207 -184 b 413 84 367 -71 413 16 b 284 220 413 166 350 216 b 207 196 259 220 229 209 b 170 176 196 190 184 176 l 168 177 b 151 203 157 181 151 192 b 153 269 151 210 151 236 b 163 292 153 275 153 289 b 366 367 173 297 366 367 b 379 383 374 370 379 376 z m 186 -132 b 173 -137 180 -135 176 -137 b 157 -114 161 -137 157 -122 b 153 35 157 -114 153 -22 b 154 73 153 53 153 68 b 219 135 160 92 197 124 b 255 144 232 141 243 144 b 292 130 269 144 282 140 b 314 62 305 114 314 91 b 186 -132 314 -17 251 -94 z"},accidentalBakiyeFlat:{x_min:-1,x_max:286,y_min:-175,y_max:439,ha:614,o:"m 377 454 b 369 467 377 458 376 467 b 363 465 367 467 364 467 b 161 390 363 465 167 393 b 153 399 154 390 153 395 b 157 608 154 494 157 593 b 130 632 157 624 144 632 b 86 592 111 632 88 618 b 88 377 86 592 86 501 b 76 356 88 373 88 360 l 12 331 b -1 320 3 330 -1 327 l -1 248 b 9 236 -1 242 1 236 b 81 264 12 236 78 261 b 89 258 86 264 89 261 b 104 -245 92 30 96 -236 b 115 -252 108 -251 112 -252 b 124 -249 120 -252 124 -249 b 239 -161 167 -226 203 -186 b 412 84 367 -72 412 17 b 282 220 412 166 348 216 b 255 216 274 220 264 219 b 203 196 238 212 222 206 b 171 177 193 189 177 177 b 163 179 168 177 166 177 b 147 202 153 181 147 192 b 147 216 147 204 147 209 l 150 262 b 150 276 150 269 150 275 b 158 291 150 287 154 289 b 363 370 163 292 363 370 b 377 384 373 373 377 379 z m 181 -134 b 167 -138 176 -137 171 -138 b 153 -117 156 -138 153 -125 b 148 27 153 -117 148 -30 b 151 73 148 50 150 68 b 255 144 161 105 219 144 b 312 62 298 144 312 99 b 181 -134 312 -19 249 -96 z"},accidentalKomaSharp:{x_min:0,x_max:229,y_min:-337,y_max:322,ha:659,o:"m 312 151 b 330 176 323 156 330 166 l 330 278 b 320 289 330 285 327 289 b 312 288 318 289 315 289 b 200 246 312 288 203 248 b 181 275 187 246 181 264 l 181 448 b 163 464 181 456 173 464 b 138 441 140 464 138 452 l 138 253 b 122 215 137 240 132 225 b 17 177 92 203 45 177 b 0 153 7 173 0 163 l 0 50 b 10 39 0 43 4 39 b 17 40 13 39 14 39 l 128 81 b 138 52 138 81 138 63 l 138 -91 b 124 -124 138 -107 132 -120 b 17 -167 115 -127 17 -167 b 0 -192 7 -171 0 -181 l 0 -294 b 10 -305 0 -301 4 -305 b 17 -304 13 -305 14 -305 b 128 -261 17 -304 117 -264 l 130 -259 b 138 -276 137 -259 138 -268 l 138 -469 b 157 -485 138 -478 147 -485 b 181 -462 179 -485 181 -475 l 181 -262 b 183 -252 181 -258 181 -255 b 197 -232 186 -243 190 -235 b 312 -187 207 -228 312 -187 b 330 -163 323 -183 330 -173 l 330 -60 b 320 -49 330 -53 327 -49 b 312 -50 318 -49 315 -49 l 200 -94 b 193 -95 197 -95 194 -95 b 181 -68 183 -95 181 -85 l 181 66 b 200 108 181 92 189 104 z"},accidentalKucukMucennebSharp:{x_min:-1,x_max:339,y_min:-338,y_max:321,ha:659,o:"m 264 92 b 271 102 264 98 265 99 l 395 150 b 412 174 405 154 412 164 l 412 276 b 402 288 412 284 409 288 b 395 287 400 288 397 288 b 282 245 395 287 285 246 b 264 274 269 245 264 262 l 264 446 b 245 462 264 455 255 462 b 220 439 222 462 220 451 l 220 252 b 204 213 219 239 215 223 b 99 176 174 202 127 176 b 82 151 89 171 82 161 l 82 49 b 92 37 82 42 86 37 b 99 39 95 37 96 37 l 210 79 b 216 81 212 81 215 81 b 220 78 219 81 220 79 l 220 56 b 216 46 220 52 220 48 b 16 -29 210 45 16 -29 b -1 -45 4 -32 -1 -36 l -1 -138 b 12 -154 -1 -145 3 -154 l 215 -79 b 220 -84 219 -79 220 -81 l 220 -105 b 210 -122 220 -115 219 -120 b 99 -168 202 -127 99 -168 b 82 -193 89 -173 82 -183 l 82 -295 b 92 -307 82 -302 86 -307 b 99 -305 95 -307 96 -307 b 210 -262 99 -305 199 -265 l 212 -261 b 220 -278 219 -261 220 -269 l 220 -471 b 239 -487 220 -480 229 -487 b 264 -464 261 -487 264 -477 l 264 -264 b 265 -253 264 -259 264 -256 b 279 -233 268 -245 272 -236 b 395 -189 289 -229 395 -189 b 412 -164 405 -184 412 -174 l 412 -62 b 402 -50 412 -55 409 -50 b 395 -52 400 -50 397 -50 l 278 -96 b 264 -86 268 -96 264 -94 l 264 -68 b 269 -59 264 -62 265 -60 b 471 17 274 -58 471 17 b 488 36 484 22 488 27 l 488 127 b 475 144 488 134 487 144 l 472 141 b 471 141 472 141 471 141 l 471 143 b 272 68 471 143 282 71 l 269 66 b 264 71 264 66 264 69 z"},accidentalKoron:{x_min:0,x_max:300,y_min:-472,y_max:157,ha:629,o:"m 432 -4 b 415 10 432 1 418 9 l 4 226 b 0 223 1 226 0 225 l 0 -672 b 7 -680 0 -677 3 -680 l 45 -680 b 52 -672 49 -680 52 -677 l 52 -193 l 415 -22 b 432 -4 418 -20 432 -13 z m 52 -137 l 52 144 l 327 -7 z"},accidentalSori:{x_min:0,x_max:421,y_min:-318,y_max:328,ha:646,o:"m 606 10 b 589 23 606 16 592 22 l 382 109 l 382 465 b 374 472 382 469 379 472 l 337 472 b 330 465 333 472 330 469 l 330 132 l 183 194 l 183 425 b 176 432 183 429 180 432 l 138 432 b 131 425 134 432 131 429 l 131 216 l 3 269 b 0 265 0 269 0 266 l 0 223 b 3 213 0 216 0 215 l 131 160 l 131 -150 l 3 -203 b 0 -212 0 -204 0 -206 l 0 -255 b 3 -259 0 -258 1 -259 l 131 -204 l 131 -451 b 138 -458 131 -455 134 -458 l 176 -458 b 183 -451 180 -458 183 -455 l 183 -183 l 330 -120 l 330 -410 b 337 -418 330 -415 333 -418 l 374 -418 b 382 -410 379 -418 382 -415 l 382 -98 l 589 -9 b 606 10 592 -9 606 0 z m 183 -128 l 183 138 l 330 76 l 330 -66 z m 382 -45 l 382 55 l 501 6 z"},articAccentAbove:{x_min:0,x_max:339,y_min:1,y_max:245,ha:244,o:"m 469 151 b 488 177 488 156 488 166 b 469 203 488 189 488 197 l 37 350 b 24 353 32 351 26 353 b 3 333 12 353 7 344 b 0 318 1 327 0 323 b 20 298 0 311 4 304 b 346 187 20 298 331 193 b 356 177 353 186 356 181 b 344 167 356 173 353 170 b 20 58 328 163 20 58 b 0 36 4 50 0 43 b 3 23 0 32 1 27 b 23 1 7 13 13 1 b 29 3 24 1 27 1 z"},articAccentBelow:{x_min:0,x_max:339,y_min:-244,y_max:0,ha:244,o:"m 469 -202 b 488 -176 488 -197 488 -187 b 469 -150 488 -164 488 -156 l 37 -3 b 24 0 32 -1 26 0 b 3 -20 12 0 7 -9 b 0 -35 1 -26 0 -30 b 20 -55 0 -42 4 -49 b 346 -166 20 -55 331 -160 b 356 -176 353 -167 356 -171 b 344 -186 356 -180 353 -183 b 20 -295 328 -190 20 -295 b 0 -317 4 -302 0 -310 b 3 -330 0 -321 1 -325 b 23 -351 7 -340 13 -351 b 29 -350 24 -351 27 -351 z"},articTenutoAbove:{x_min:-1,x_max:338,y_min:0,y_max:48,ha:48,o:"m 452 0 b 487 35 485 0 487 16 b 452 69 487 53 487 69 l 33 69 b -1 35 -1 69 -1 53 b 33 0 -1 16 -1 0 z"},articTenutoBelow:{x_min:-1,x_max:338,y_min:-48,y_max:0,ha:48,o:"m 452 -69 b 487 -35 485 -69 487 -53 b 452 0 487 -16 487 0 l 33 0 b -1 -35 -1 0 -1 -16 b 33 -69 -1 -53 -1 -69 z"},articStaccatoAbove:{x_min:0,x_max:84,y_min:0,y_max:84,ha:84,o:"m 121 60 b 60 121 121 94 94 121 b 0 60 27 121 0 94 b 60 0 0 27 27 0 b 121 60 94 0 121 27 z"},articStaccatoBelow:{x_min:0,x_max:84,y_min:-84,y_max:0,ha:84,o:"m 121 -60 b 60 0 121 -27 94 0 b 0 -60 27 0 0 -27 b 60 -121 0 -94 27 -121 b 121 -60 94 -121 121 -94 z"},articStaccatissimoAbove:{x_min:1,x_max:100,y_min:-2,y_max:293,ha:295,o:"m 72 422 b 1 390 35 422 3 409 b 72 -3 1 369 39 -3 b 144 389 108 -3 144 356 b 72 422 144 410 111 422 z"},articStaccatissimoBelow:{x_min:1,x_max:100,y_min:-295,y_max:0,ha:295,o:"m 72 -425 b 144 -392 111 -425 144 -413 b 72 0 144 -359 108 0 b 1 -393 39 0 1 -372 b 72 -425 3 -412 35 -425 z"},articMarcatoAbove:{x_min:-1,x_max:235,y_min:-1,y_max:253,ha:254,o:"m 181 356 b 167 364 177 361 173 364 b 153 356 157 364 153 356 l 0 23 b -1 16 -1 20 -1 19 b 9 0 -1 9 1 1 b 16 -1 10 -1 14 -1 b 32 9 22 -1 29 1 b 112 186 32 9 109 180 b 118 190 114 189 115 190 b 127 186 121 190 124 189 b 209 9 128 180 209 9 b 225 0 213 3 219 0 l 323 0 b 338 16 333 1 338 7 b 337 23 338 19 338 22 z"},articMarcatoBelow:{x_min:-1,x_max:235,y_min:-254,y_max:0,ha:254,o:"m 156 -357 b 170 -366 160 -363 164 -366 b 184 -357 180 -366 184 -357 l 337 -24 b 338 -17 338 -22 338 -20 b 328 -1 338 -10 336 -3 b 321 0 327 0 323 0 b 305 -10 315 0 308 -3 b 225 -187 305 -10 228 -181 b 219 -192 223 -190 222 -192 b 210 -187 216 -192 213 -190 b 128 -10 209 -181 128 -10 b 112 -1 124 -4 118 -1 l 14 -1 b -1 -17 4 -3 -1 -9 b 0 -24 -1 -20 -1 -23 z"},fermataAbove:{x_min:3,x_max:605,y_min:-3,y_max:329,ha:332,o:"m 435 318 b 818 36 742 318 804 91 b 821 26 819 32 819 27 b 851 -4 831 6 837 -4 b 871 16 864 -4 871 1 b 870 30 871 20 871 24 b 438 474 780 471 480 474 b 6 30 392 474 94 471 b 4 14 4 24 4 19 b 23 -4 4 0 12 -4 b 52 26 36 -4 43 6 b 56 39 53 27 55 33 b 435 318 73 98 138 318 z m 516 75 b 436 153 516 117 480 153 b 359 75 395 153 359 117 b 436 -4 359 32 395 -4 b 516 75 480 -4 516 32 z"},fermataBelow:{x_min:3,x_max:605,y_min:-332,y_max:0,ha:332,o:"m 435 -323 b 56 -43 138 -323 73 -102 b 52 -30 55 -37 53 -32 b 23 0 43 -10 36 0 b 4 -19 12 0 4 -4 b 6 -35 4 -23 4 -29 b 438 -478 94 -475 392 -478 b 870 -35 480 -478 780 -475 b 871 -20 871 -29 871 -24 b 851 0 871 -6 864 0 b 821 -30 837 0 831 -10 b 818 -40 819 -32 819 -36 b 435 -323 804 -95 742 -323 z m 516 -79 b 436 0 516 -36 480 0 b 359 -79 395 0 359 -36 b 436 -157 359 -121 395 -157 b 516 -79 480 -157 516 -121 z"},fermataLongAbove:{x_min:0,x_max:603,y_min:-1,y_max:333,ha:334,o:"m 72 480 b 0 441 32 480 0 462 l 0 19 b 35 0 0 9 16 0 b 71 19 55 0 71 9 l 71 289 b 433 315 71 307 252 315 b 798 289 615 315 798 307 l 798 19 b 832 0 798 9 814 0 b 868 19 852 0 868 9 l 868 441 b 796 480 868 462 837 480 z m 513 78 b 433 156 513 121 478 156 b 356 78 390 156 356 121 b 433 -1 356 35 390 -1 b 513 78 478 -1 513 35 z"},fermataLongBelow:{x_min:0,x_max:603,y_min:-333,y_max:1,ha:334,o:"m 513 -78 b 433 1 513 -35 478 1 b 356 -78 390 1 356 -35 b 433 -156 356 -121 390 -156 b 513 -78 478 -156 513 -121 z m 796 -480 b 868 -441 837 -480 868 -462 l 868 -19 b 832 0 868 -9 852 0 b 798 -19 814 0 798 -9 l 798 -289 b 433 -315 798 -307 615 -315 b 71 -289 252 -315 71 -307 l 71 -19 b 35 0 71 -9 55 0 b 0 -19 16 0 0 -9 l 0 -441 b 72 -480 0 -462 32 -480 z"},fermataVeryLongAbove:{x_min:0,x_max:715,y_min:0,y_max:408,ha:408,o:"m 76 588 b 0 546 35 588 0 569 l 0 22 b 37 1 0 10 17 1 b 75 22 59 1 75 10 l 75 431 b 514 458 75 449 294 458 b 955 431 734 458 955 449 l 955 22 b 991 1 955 10 971 1 b 1030 22 1012 1 1030 10 l 1030 546 b 953 588 1030 569 995 588 z m 215 389 b 138 347 171 389 138 370 l 138 22 b 174 1 138 10 154 1 b 213 22 196 1 213 10 l 213 217 b 514 245 213 235 363 245 b 816 217 665 245 816 235 l 816 22 b 854 1 816 10 834 1 b 891 22 876 1 891 10 l 891 347 b 815 389 891 370 858 389 z m 606 84 b 521 167 606 130 569 167 b 439 84 475 167 439 130 b 521 0 439 39 475 0 b 606 84 569 0 606 39 z"},fermataVeryLongBelow:{x_min:0,x_max:715,y_min:-408,y_max:0,ha:408,o:"m 606 -84 b 521 0 606 -39 569 0 b 439 -84 475 0 439 -39 b 521 -167 439 -130 475 -167 b 606 -84 569 -167 606 -130 z m 815 -389 b 891 -347 858 -389 891 -370 l 891 -22 b 854 -1 891 -10 876 -1 b 816 -22 834 -1 816 -10 l 816 -217 b 514 -245 816 -235 665 -245 b 213 -217 363 -245 213 -235 l 213 -22 b 174 -1 213 -10 196 -1 b 138 -22 154 -1 138 -10 l 138 -347 b 215 -389 138 -370 171 -389 z m 953 -588 b 1030 -546 995 -588 1030 -569 l 1030 -22 b 991 -1 1030 -10 1012 -1 b 955 -22 971 -1 955 -10 l 955 -431 b 514 -458 955 -449 734 -458 b 75 -431 294 -458 75 -449 l 75 -22 b 37 -1 75 -10 59 -1 b 0 -22 17 -1 0 -10 l 0 -546 b 76 -588 0 -569 35 -588 z"},fermataShortAbove:{x_min:0,x_max:604,y_min:0,y_max:341,ha:341,o:"m 78 0 b 88 6 81 0 82 3 b 435 328 134 45 412 328 b 783 3 458 328 742 39 b 793 0 786 1 793 0 l 865 0 b 870 4 865 0 870 1 b 867 10 870 6 868 9 b 435 491 805 69 474 491 b 3 10 397 491 69 75 b 0 4 1 9 0 6 b 4 0 0 1 4 0 z m 513 94 b 433 171 513 135 477 171 b 354 94 390 171 354 135 b 433 13 354 49 390 13 b 513 94 477 13 513 49 z"},fermataShortBelow:{x_min:0,x_max:604,y_min:-341,y_max:0,ha:341,o:"m 4 0 b 0 -4 4 0 0 -1 b 3 -10 0 -6 1 -9 b 435 -491 69 -75 397 -491 b 867 -10 474 -491 805 -69 b 870 -4 868 -9 870 -6 b 865 0 870 -1 865 0 l 793 0 b 783 -3 793 0 786 -1 b 435 -328 742 -39 458 -328 b 88 -6 412 -328 134 -45 b 78 0 82 -3 81 0 z m 513 -94 b 433 -13 513 -49 477 -13 b 354 -94 390 -13 354 -49 b 433 -171 354 -135 390 -171 b 513 -94 477 -171 513 -135 z"},breathMarkComma:{x_min:1,x_max:152,y_min:2,y_max:251,ha:249,o:"m 104 361 b 1 271 42 361 1 321 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 17 32 29 26 26 l 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 z"},breathMarkUpbow:{x_min:1,x_max:249,y_min:1,y_max:495,ha:494,o:"m 181 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 z"},caesura:{x_min:0,x_max:384,y_min:-1,y_max:532,ha:533,o:"m 40 -1 b 78 26 58 -1 72 9 l 321 713 b 323 726 323 717 323 721 b 282 766 323 747 304 766 b 245 739 265 766 251 756 l 3 52 b 0 37 1 48 0 42 b 27 1 0 22 10 7 b 40 -1 32 -1 36 -1 z m 308 26 l 552 713 b 553 726 553 717 553 721 b 513 766 553 747 534 766 b 475 739 495 766 481 756 l 232 52 b 230 39 230 48 230 43 b 258 1 230 23 240 7 b 271 -1 262 -1 266 -1 b 308 26 287 -1 302 9 z"},caesuraCurved:{x_min:0,x_max:373,y_min:0,y_max:530,ha:530,o:"m 491 763 b 445 719 468 763 446 744 b 252 98 432 507 340 295 l 226 39 b 223 27 225 35 223 32 b 252 0 223 13 233 0 b 276 16 262 0 272 6 b 537 716 386 230 537 478 b 491 763 537 742 518 763 z m 29 0 b 53 16 39 0 48 6 l 82 69 b 314 716 187 264 314 498 b 268 763 314 742 295 763 b 222 719 245 763 223 744 b 29 98 209 507 117 295 l 3 39 b 0 29 1 36 0 33 b 29 0 0 14 12 0 z"},restMaxima:{x_min:0,x_max:381,y_min:-249,y_max:250,ha:499,o:"m 180 -330 l 180 331 b 156 360 180 356 170 360 l 23 360 b 0 331 10 360 0 356 l 0 -330 b 23 -359 0 -354 10 -359 l 156 -359 b 180 -330 170 -359 180 -354 z m 549 -330 l 549 331 b 524 360 549 356 539 360 l 392 360 b 369 331 379 360 369 356 l 369 -330 b 392 -359 369 -354 379 -359 l 524 -359 b 549 -330 539 -359 549 -354 z"},restDoubleWhole:{x_min:0,x_max:125,y_min:0,y_max:250,ha:250,o:"m 180 22 l 180 338 b 156 360 180 350 170 360 l 23 360 b 0 338 10 360 0 350 l 0 22 b 23 0 0 10 10 0 l 156 0 b 180 22 170 0 180 10 z"},restWhole:{x_min:0,x_max:282,y_min:-135,y_max:9,ha:144,o:"m 406 -157 l 406 -24 b 369 13 406 -3 389 13 l 37 13 b 0 -24 16 13 0 -3 l 0 -157 b 37 -194 0 -177 16 -194 l 369 -194 b 406 -157 389 -194 406 -177 z"},restWholeLegerLine:{x_min:-117,x_max:399,y_min:-135,y_max:20,ha:155,o:"m -143 29 b -168 3 -157 29 -168 17 b -143 -23 -168 -12 -157 -23 l 0 -23 l 0 -157 b 37 -194 0 -177 16 -194 l 369 -194 b 406 -157 389 -194 406 -177 l 406 -24 b 549 -23 406 -23 406 -23 b 575 3 563 -23 575 -12 b 549 29 575 17 563 29 z"},restHalf:{x_min:0,x_max:282,y_min:-2,y_max:142,ha:144,o:"m 406 35 l 406 167 b 369 204 406 189 389 204 l 37 204 b 0 167 16 204 0 189 l 0 35 b 37 -3 0 14 16 -3 l 369 -3 b 406 35 389 -3 406 14 z"},restHalfLegerLine:{x_min:-117,x_max:399,y_min:-13,y_max:142,ha:155,o:"m 549 -19 b 575 7 563 -19 575 -7 b 549 33 575 22 563 33 b 406 35 406 33 406 33 l 406 167 b 369 204 406 187 389 204 l 37 204 b 0 167 16 204 0 187 l 0 33 l -143 33 b -168 7 -157 33 -168 22 b -143 -19 -168 -7 -157 -19 z"},restQuarter:{x_min:1,x_max:270,y_min:-375,y_max:373,ha:748,o:"m 112 -55 b 174 -141 135 -84 156 -111 b 183 -161 177 -147 183 -158 b 181 -167 183 -163 183 -166 b 166 -174 179 -173 173 -174 b 143 -170 160 -174 148 -171 b 137 -170 141 -170 138 -170 l 125 -166 b 1 -304 50 -166 1 -233 b 168 -527 1 -376 63 -446 b 206 -540 180 -536 194 -540 b 228 -531 216 -540 226 -537 b 230 -521 229 -527 230 -524 b 207 -487 230 -508 219 -497 b 170 -435 189 -487 173 -448 b 164 -397 166 -423 164 -410 b 255 -292 164 -338 194 -292 b 369 -317 297 -292 344 -308 l 370 -318 b 382 -320 376 -320 379 -320 b 389 -314 386 -320 389 -318 b 336 -232 389 -297 351 -249 b 236 -32 281 -166 236 -112 b 236 -27 236 -30 236 -29 l 238 -17 b 238 -13 238 -16 238 -14 b 333 199 243 71 295 140 b 338 220 337 206 338 213 b 333 248 338 235 333 248 b 95 526 333 248 120 501 b 69 537 88 533 78 537 b 40 507 55 537 40 527 b 46 484 40 500 42 492 b 134 291 52 468 134 395 b 48 108 134 238 112 176 b 27 66 33 94 27 78 b 42 32 27 46 42 32 z"},rest8th:{x_min:0,x_max:247,y_min:-251,y_max:174,ha:425,o:"m 193 154 b 96 251 193 207 150 251 b 0 154 43 251 0 207 b 39 81 0 124 17 98 b 117 56 62 65 89 56 b 173 66 137 56 157 60 b 225 88 193 72 206 78 b 232 89 228 89 230 89 b 239 76 238 89 239 84 b 238 60 239 72 239 66 b 104 -343 233 39 130 -248 b 145 -361 104 -360 137 -361 b 196 -347 161 -361 181 -359 b 341 161 200 -344 341 161 b 356 217 347 187 354 210 b 338 240 356 232 341 239 b 323 235 336 240 331 240 b 193 140 312 226 240 140 z"},rest16th:{x_min:0,x_max:320,y_min:-500,y_max:179,ha:679,o:"m 300 160 b 202 258 300 215 256 258 b 104 160 148 258 104 215 b 219 62 104 101 164 62 b 331 94 258 62 298 75 b 341 96 336 95 338 96 b 348 86 346 96 348 94 b 265 -173 348 63 275 -151 b 194 -217 253 -200 215 -217 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 151 -105 b 0 -203 43 -105 0 -148 b 115 -301 0 -262 60 -301 b 223 -271 153 -301 190 -288 b 229 -279 226 -271 229 -274 l 228 -281 b 228 -282 228 -282 228 -282 l 91 -690 b 91 -691 91 -690 91 -691 l 89 -693 b 134 -720 89 -706 102 -720 b 189 -687 176 -720 183 -703 l 356 -138 b 420 81 393 -16 420 81 b 459 226 420 81 456 207 b 461 232 459 229 461 230 b 446 248 461 240 449 246 b 431 242 439 248 435 245 b 300 145 420 233 348 147 z"},rest32nd:{x_min:0,x_max:363,y_min:-500,y_max:426,ha:926,o:"m 508 603 b 492 598 501 603 497 600 b 361 503 482 590 410 503 l 361 516 b 264 613 361 570 318 613 b 166 516 210 613 166 570 b 206 444 166 487 183 461 b 246 423 217 433 232 428 b 284 418 258 420 269 418 b 393 449 321 418 360 432 b 399 451 395 451 397 451 b 415 426 409 451 415 436 l 413 423 b 413 422 413 423 413 422 l 357 192 b 279 140 350 168 302 140 b 281 153 281 144 281 148 b 183 251 281 207 236 251 b 85 153 128 251 85 207 b 125 81 85 124 102 98 b 164 60 137 71 150 65 b 203 55 176 58 189 55 b 311 86 240 55 278 69 b 315 88 312 88 314 88 b 325 69 323 88 325 76 l 268 -167 b 194 -217 261 -197 216 -216 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 153 -105 b 0 -203 45 -105 0 -148 b 115 -301 0 -262 60 -301 b 228 -269 154 -301 194 -288 b 232 -268 229 -268 230 -268 b 240 -276 236 -268 240 -272 b 138 -688 240 -282 141 -678 b 137 -697 137 -691 137 -694 b 176 -720 137 -708 145 -720 b 232 -690 222 -720 226 -706 b 484 436 236 -672 484 436 b 521 582 484 436 518 564 b 523 588 521 585 523 586 b 508 603 523 600 511 603 z"},rest64th:{x_min:0,x_max:423,y_min:-753,y_max:430,ha:1183,o:"m 596 609 b 580 603 589 609 585 606 b 448 507 569 595 497 507 b 449 521 449 511 449 516 b 351 619 449 575 405 619 b 253 521 297 619 253 575 b 372 422 253 461 317 422 b 481 454 410 422 446 438 b 491 456 484 455 488 456 b 504 441 498 456 504 451 b 501 426 504 436 503 432 b 445 202 500 422 451 217 b 359 144 435 174 383 144 l 359 158 b 261 256 359 212 315 256 b 163 158 207 256 163 212 b 243 65 163 112 202 78 b 279 60 255 62 266 60 b 397 91 320 60 360 73 b 403 92 400 92 402 92 b 412 79 409 92 412 86 b 410 72 412 76 412 75 b 351 -161 408 59 356 -150 b 281 -212 340 -199 301 -212 l 281 -197 b 183 -99 281 -144 238 -99 b 85 -197 130 -99 85 -144 b 125 -271 85 -228 102 -253 b 166 -291 138 -279 151 -287 b 204 -297 177 -294 192 -297 b 262 -287 225 -297 245 -292 b 305 -265 282 -279 287 -274 b 310 -264 307 -264 308 -264 b 318 -284 317 -264 318 -275 b 317 -295 318 -288 317 -294 b 259 -524 315 -302 265 -508 b 194 -567 251 -554 213 -567 b 196 -554 196 -563 196 -559 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 b 40 -626 0 -583 17 -609 b 118 -652 60 -644 92 -652 b 210 -629 145 -652 186 -642 b 216 -628 213 -628 215 -628 b 228 -647 226 -628 228 -639 l 226 -651 b 226 -652 226 -651 226 -652 l 122 -1054 b 121 -1064 121 -1058 121 -1061 b 167 -1084 121 -1077 134 -1084 b 215 -1060 202 -1084 209 -1076 b 402 -278 217 -1047 229 -1021 b 436 -135 403 -278 431 -161 l 570 441 b 609 588 570 441 605 569 b 596 609 609 603 602 608 z"},rest128th:{x_min:0,x_max:485,y_min:-750,y_max:689,ha:1439,o:"m 537 894 b 439 992 537 949 494 992 b 341 894 386 992 341 949 b 382 822 341 865 359 840 b 459 796 402 805 433 796 b 518 806 480 796 501 801 l 520 808 b 569 828 539 814 552 819 b 580 831 572 829 577 831 b 598 812 589 831 598 825 b 596 801 598 809 598 805 b 540 575 590 773 546 595 b 448 510 534 553 475 510 l 448 524 b 350 622 448 577 405 622 b 252 524 297 622 252 577 b 292 451 252 494 269 468 b 369 426 318 433 337 426 b 429 435 389 426 412 429 b 494 464 449 442 475 455 b 498 465 495 465 497 465 b 505 446 504 465 505 456 b 503 426 505 439 504 432 l 446 202 b 366 144 439 173 389 144 l 366 158 b 268 256 366 212 323 256 b 170 158 215 256 170 212 b 289 59 170 98 235 59 b 347 69 310 59 330 63 b 397 91 367 76 379 82 b 406 94 400 92 403 94 b 415 79 412 94 415 88 b 412 63 415 75 413 69 b 357 -157 408 42 364 -134 b 281 -212 346 -196 302 -212 b 282 -197 281 -207 282 -203 b 184 -99 282 -144 238 -99 b 86 -197 130 -99 86 -144 b 204 -297 86 -258 150 -297 b 262 -287 225 -297 245 -292 b 312 -265 282 -279 294 -274 b 318 -264 314 -264 317 -264 b 327 -275 324 -264 327 -269 b 266 -517 324 -287 278 -490 b 200 -569 248 -566 220 -567 l 196 -554 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 b 118 -652 0 -615 63 -652 b 177 -642 138 -652 160 -648 l 179 -641 b 229 -621 197 -635 210 -629 l 230 -619 b 239 -626 236 -619 239 -622 b 238 -632 239 -628 239 -631 b 131 -1057 235 -642 134 -1050 b 173 -1080 131 -1071 140 -1080 b 230 -1057 219 -1080 225 -1074 l 658 815 b 697 960 658 815 694 942 b 698 966 697 963 698 965 b 684 982 698 975 687 981 b 668 976 677 982 672 979 b 537 880 658 969 586 881 z"},dynamicPiano:{x_min:-89,x_max:366,y_min:-142,y_max:274,ha:416,o:"m 395 395 b 292 357 350 395 318 380 b 262 328 272 340 268 328 b 246 363 255 328 259 338 b 177 393 236 380 215 393 b 1 251 92 393 46 333 b -9 223 -6 238 -9 230 b 7 207 -9 213 -1 207 b 30 229 17 207 23 216 b 127 338 72 301 101 338 b 143 321 138 338 143 331 b 134 285 143 310 138 295 l -43 -154 b -65 -168 -48 -166 -50 -168 l -109 -168 b -128 -187 -122 -168 -128 -174 b -111 -204 -128 -199 -122 -204 l 167 -204 b 186 -186 180 -204 186 -199 b 168 -168 186 -174 180 -168 l 111 -168 b 98 -164 102 -168 98 -168 b 101 -154 98 -163 99 -158 l 166 7 b 179 24 168 14 171 24 b 213 -1 186 24 190 10 b 276 -14 233 -12 252 -14 b 527 266 415 -14 527 130 b 395 395 527 350 475 395 z m 356 341 b 389 288 380 341 389 320 b 243 35 389 217 312 35 b 207 81 219 35 207 50 b 235 180 207 111 219 140 l 264 251 b 356 341 284 300 321 341 z"},dynamicMezzo:{x_min:-20,x_max:446,y_min:-10,y_max:274,ha:284,o:"m 528 395 b 431 350 487 395 454 374 b 409 330 416 336 415 330 b 397 360 402 330 406 341 b 334 395 389 379 370 395 b 236 350 292 395 259 374 b 215 330 222 336 220 330 b 203 360 207 330 212 340 b 147 393 194 379 174 393 b -19 251 71 393 26 331 b -29 223 -26 238 -29 230 b -13 207 -29 213 -22 207 b 9 226 -3 207 1 215 b 107 338 52 300 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 287 323 225 292 255 323 b 308 302 304 323 308 314 b 294 249 308 285 302 269 b 203 24 294 248 292 248 b 199 9 200 17 199 13 b 215 0 199 3 203 0 l 285 0 b 308 17 298 0 302 3 l 402 251 b 481 323 419 292 449 323 b 503 302 498 323 503 314 b 413 43 503 252 413 104 b 478 -14 413 6 436 -14 b 629 102 533 -14 583 26 b 642 132 638 117 642 125 b 629 145 642 141 636 145 b 608 127 619 145 615 138 b 534 49 580 84 553 49 b 523 62 526 49 523 53 b 606 317 523 112 606 238 b 528 395 606 353 588 395 z"},dynamicForte:{x_min:-141,x_max:364,y_min:-152,y_max:444,ha:596,o:"m 23 380 b 0 357 7 380 0 373 b 22 336 0 343 7 336 l 105 336 b 117 330 114 336 117 336 b 114 315 117 327 115 323 l 23 0 b -101 -187 -17 -141 -43 -187 b -127 -174 -120 -187 -127 -181 b -92 -156 -127 -163 -114 -170 b -63 -102 -75 -144 -63 -125 b -128 -43 -63 -65 -89 -43 b -203 -122 -171 -43 -203 -78 b -95 -219 -203 -186 -156 -219 b 161 17 14 -219 82 -145 b 269 317 203 105 235 194 l 271 318 b 289 336 271 323 282 336 l 383 336 b 406 359 399 336 406 343 b 384 380 406 373 399 380 l 298 380 b 284 387 288 380 284 380 b 287 405 284 392 285 396 b 419 606 315 530 347 606 b 442 595 431 606 442 603 b 419 580 442 586 435 588 b 389 526 400 572 389 552 b 454 465 389 485 418 465 b 524 543 491 465 524 490 b 400 639 524 596 491 639 b 135 402 261 639 183 540 b 107 380 128 380 127 380 z"},dynamicRinforzando:{x_min:-20,x_max:277,y_min:0,y_max:274,ha:274,o:"m 324 395 b 235 350 287 395 256 374 b 215 330 222 336 220 330 b 203 360 207 330 213 337 b 145 393 194 379 174 393 b -19 251 75 393 27 337 b -29 223 -26 238 -29 230 b -13 207 -29 213 -22 207 b 9 226 -3 207 3 215 b 107 338 52 301 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 304 351 226 298 272 351 b 318 343 312 351 318 348 b 287 285 318 330 287 325 b 338 239 287 256 308 239 b 399 318 373 239 399 268 b 324 395 399 360 377 395 z"},dynamicSforzando:{x_min:0,x_max:229,y_min:-10,y_max:273,ha:283,o:"m 212 393 b 68 274 127 393 68 350 b 145 161 68 223 95 196 b 200 85 187 132 200 114 b 127 20 200 53 173 20 b 66 42 91 20 66 32 b 91 56 66 49 75 46 b 111 98 104 65 111 79 b 59 145 111 127 86 145 b 0 78 24 145 0 117 b 125 -14 0 30 49 -14 b 291 120 219 -14 291 36 b 220 232 291 160 276 190 b 151 314 168 271 151 287 b 213 361 151 337 168 361 b 258 346 238 361 258 356 b 240 333 258 340 251 340 b 226 298 232 325 226 314 b 276 252 226 269 248 252 b 330 307 311 252 330 279 b 212 393 330 360 285 393 z"},dynamicZ:{x_min:-30,x_max:244,y_min:-10,y_max:268,ha:278,o:"m 333 386 b 298 377 321 386 314 382 b 239 370 282 373 259 370 b 94 383 153 370 111 383 b 68 364 79 383 72 377 l 33 264 b 29 242 30 255 29 248 b 45 228 29 232 36 228 b 66 249 55 228 60 236 l 81 279 b 96 297 85 288 88 297 b 168 292 102 297 127 292 b 223 302 194 292 215 302 b 196 269 229 302 197 271 l -26 45 b -43 16 -37 33 -43 27 b -24 -1 -43 6 -36 -1 b 4 16 -12 -1 -3 10 b 39 30 16 24 27 30 b 179 -14 79 30 108 -14 b 297 102 259 -14 297 43 b 245 166 297 147 271 166 b 197 115 219 166 197 145 b 236 72 197 88 216 72 b 259 79 251 72 255 79 b 264 75 262 79 264 78 b 258 60 264 72 261 66 b 229 45 252 50 242 45 b 117 95 186 45 173 95 b 85 86 98 95 89 86 b 102 111 85 86 95 104 l 333 338 b 351 370 344 350 351 359 b 333 386 351 380 343 386 z"},ornamentTrill:{x_min:0,x_max:521,y_min:-10,y_max:390,ha:400,o:"m 383 562 b 364 557 377 562 369 559 l 294 534 b 269 511 281 530 275 526 l 217 384 b 206 367 212 370 210 367 b 179 380 200 367 192 374 b 118 393 158 389 140 393 b 0 292 50 393 0 353 b 95 210 0 248 30 210 b 140 213 112 210 131 213 b 144 209 143 213 144 212 b 140 194 144 206 143 202 l 124 156 b 96 58 108 117 96 88 b 179 -14 96 17 124 -14 b 325 153 253 -14 325 46 b 307 251 325 187 320 219 b 302 265 304 258 302 261 b 334 294 302 274 311 281 l 343 298 b 455 348 393 328 428 348 b 474 327 468 348 474 344 b 465 285 474 312 469 295 l 360 24 b 356 9 357 17 356 13 b 372 0 356 3 360 0 l 442 0 b 465 17 455 0 459 3 l 559 251 b 655 351 577 298 624 351 b 670 343 664 351 670 348 b 638 285 670 330 638 325 b 690 239 638 256 660 239 b 750 318 724 239 750 268 b 675 395 750 360 729 395 b 586 350 638 395 608 374 b 566 330 573 336 572 330 b 553 361 559 330 564 340 b 490 393 543 380 521 393 b 347 348 432 393 377 364 b 312 333 328 338 320 333 b 308 337 310 333 308 334 b 315 359 308 343 312 351 l 387 537 b 392 553 390 544 392 549 b 383 562 392 559 389 562 z m 118 360 b 192 325 134 360 192 347 b 186 307 192 321 189 314 l 180 292 b 148 265 173 274 167 269 b 98 258 130 261 112 258 b 39 301 50 258 39 281 b 118 360 39 327 60 360 z m 272 240 b 292 151 285 240 292 164 b 212 30 292 88 253 30 b 196 48 200 30 196 37 b 207 92 196 59 202 78 b 264 230 207 94 209 94 b 272 240 266 238 268 240 z"},ornamentTurn:{x_min:0,x_max:460,y_min:0,y_max:218,ha:218,o:"m 534 314 b 454 251 490 314 454 294 b 505 199 454 219 475 199 b 579 232 547 199 549 232 b 626 164 603 232 626 202 b 533 72 626 102 583 72 b 377 180 487 72 439 111 b 150 312 307 258 243 312 b 0 148 55 312 0 240 b 128 0 0 45 66 0 b 209 63 173 0 209 20 b 157 115 209 95 187 115 b 84 82 115 115 114 82 b 36 150 59 82 36 112 b 130 242 36 212 79 242 b 285 134 176 242 223 203 b 513 1 356 56 419 1 b 662 166 608 1 662 73 b 534 314 662 269 596 314 z"},ornamentTurnSlash:{x_min:0,x_max:460,y_min:-90,y_max:306,ha:396,o:"m 333 441 b 310 418 315 441 310 433 l 310 274 b 302 252 310 258 308 252 b 261 278 294 252 287 262 b 150 311 228 298 192 311 b 0 147 55 311 0 239 b 128 -1 0 43 66 -1 b 209 62 173 -1 209 19 b 157 114 209 94 187 114 b 84 81 115 114 114 81 b 36 148 59 81 36 111 b 130 240 36 210 79 240 b 285 128 176 240 222 197 b 307 79 304 108 307 105 l 307 -107 b 330 -130 307 -122 312 -130 b 353 -107 347 -130 353 -122 l 353 37 b 360 59 353 53 353 59 b 402 33 369 59 376 49 b 513 0 435 13 471 0 b 662 164 608 0 662 72 b 534 312 662 268 596 312 b 454 249 490 312 454 292 b 505 197 454 217 475 197 b 579 230 547 197 549 230 b 626 163 603 230 626 200 b 533 71 626 101 583 71 b 377 183 487 71 441 114 b 356 232 359 203 356 206 l 356 418 b 333 441 356 433 350 441 z"},ornamentMordent:{x_min:1,x_max:729,y_min:-73,y_max:319,ha:392,o:"m 546 265 l 546 459 l 501 459 l 501 216 l 459 167 b 439 167 454 160 445 160 b 302 327 387 228 310 317 b 258 353 291 338 282 351 b 226 340 245 353 238 348 l 20 107 b 1 73 12 98 1 84 b 30 59 1 65 9 59 b 88 94 53 59 73 79 b 144 143 107 109 124 127 b 176 161 158 154 168 161 b 197 144 183 161 189 156 l 323 10 b 351 0 328 3 340 0 b 377 9 361 0 372 3 b 498 114 392 17 475 94 l 498 -105 l 544 -105 l 544 153 b 562 160 550 157 556 160 b 585 144 569 160 576 156 b 710 10 590 135 697 24 b 737 0 716 3 727 0 b 765 9 749 0 759 3 b 1030 295 776 17 1011 274 l 1032 300 b 1050 328 1041 308 1050 318 b 1012 353 1050 343 1024 353 b 986 343 1002 353 994 348 b 854 190 971 330 871 206 b 828 176 842 180 835 176 b 802 190 818 176 809 183 b 681 333 791 202 696 320 b 645 353 668 344 657 353 b 613 340 634 353 626 350 b 580 304 600 330 590 315 z"},ornamentShortTrill:{x_min:0,x_max:725,y_min:0,y_max:245,ha:245,o:"m 429 167 l 301 325 b 256 353 291 338 282 350 b 225 340 246 353 238 350 b 16 105 158 268 88 186 b 0 72 9 96 0 86 b 29 58 0 63 7 58 b 71 76 42 58 55 62 l 158 154 b 174 160 163 158 168 160 b 197 143 181 160 187 154 b 321 10 203 135 310 24 b 350 0 327 3 338 0 b 377 7 361 0 372 3 l 533 148 b 554 160 543 158 550 160 b 577 143 562 160 566 156 b 703 10 585 135 690 24 b 732 0 708 3 720 0 b 759 7 743 0 753 3 b 1024 294 769 16 1005 272 b 1044 327 1032 305 1044 321 b 1005 353 1044 341 1018 353 b 979 343 996 353 988 348 b 848 189 963 330 864 204 b 821 174 837 179 828 174 b 796 189 811 174 804 181 b 674 331 783 202 688 318 b 641 351 662 343 651 351 b 606 340 628 351 619 350 b 573 304 593 328 583 315 b 444 167 533 259 491 213 b 429 167 439 161 433 161 z"},ornamentTremblement:{x_min:1,x_max:985,y_min:0,y_max:244,ha:244,o:"m 678 325 b 634 351 667 338 657 350 b 602 338 621 351 613 348 l 448 167 b 439 167 446 164 441 164 l 302 325 b 258 351 291 338 281 350 b 228 338 245 351 238 348 b 193 304 215 328 204 315 l 19 107 b 1 72 13 96 1 76 b 30 58 1 63 9 58 b 89 92 52 58 73 78 l 144 141 b 148 144 145 143 147 143 b 176 160 160 153 170 160 b 199 143 183 160 189 154 b 324 10 204 134 311 23 b 351 0 330 3 340 0 b 379 7 363 0 373 3 l 530 148 b 552 160 536 154 546 160 b 575 143 559 160 564 154 b 698 10 580 134 687 23 b 727 0 704 3 716 0 b 755 7 739 0 749 3 l 907 147 b 930 160 922 158 923 160 b 952 143 937 160 943 154 l 1077 10 b 1107 0 1084 3 1096 0 b 1133 7 1117 0 1128 3 b 1398 294 1143 16 1380 272 b 1418 327 1407 305 1418 321 b 1381 351 1418 343 1394 351 b 1354 341 1371 351 1362 348 b 1223 189 1338 328 1238 204 b 1195 174 1211 179 1202 174 b 1171 189 1185 174 1178 181 b 1048 331 1158 200 1063 318 b 1012 351 1035 343 1024 351 b 981 338 1002 351 994 350 b 948 304 968 328 958 315 b 827 166 907 258 865 212 b 815 166 824 163 818 163 b 678 325 760 226 732 264 z"},ornamentPrecompAppoggTrill:{x_min:0,x_max:1119,y_min:0,y_max:481,ha:481,o:"m 1015 163 b 873 328 963 223 880 318 b 828 354 860 344 847 353 b 796 341 816 354 809 351 b 763 305 783 331 773 317 b 642 168 721 261 681 215 b 636 163 641 167 639 164 b 494 328 585 223 501 318 b 449 354 481 344 468 353 b 418 341 438 354 431 351 b 384 305 405 331 395 317 b 264 168 343 261 302 215 l 242 144 b 144 88 232 124 171 88 b 79 197 81 88 79 189 l 79 648 b 60 693 79 683 71 693 b 52 691 58 693 55 693 b 0 616 3 672 0 625 l 0 207 b 121 0 0 40 68 0 b 249 68 168 0 232 53 b 279 94 262 75 271 86 b 336 144 298 111 315 128 b 367 163 350 156 360 163 b 389 145 374 163 380 157 b 514 12 395 137 501 26 b 543 1 520 4 531 1 b 569 9 553 1 563 4 b 636 73 576 14 605 43 l 658 94 b 714 144 677 111 694 128 b 746 163 729 156 739 163 b 768 145 753 163 759 157 b 893 12 773 137 880 26 b 922 1 899 4 910 1 b 948 9 932 1 942 4 l 1012 71 b 1037 94 1022 78 1030 86 b 1092 144 1054 111 1073 128 b 1123 161 1106 156 1115 161 b 1146 145 1130 161 1136 157 b 1270 12 1152 137 1259 26 b 1299 1 1276 4 1287 1 b 1326 9 1310 1 1320 4 b 1591 297 1336 19 1572 275 b 1611 328 1600 307 1611 320 b 1574 354 1611 343 1585 354 b 1548 344 1565 354 1555 350 b 1416 192 1532 331 1431 206 b 1388 177 1404 181 1395 177 b 1365 190 1380 177 1371 184 b 1243 333 1352 203 1256 321 b 1205 354 1228 346 1217 354 b 1174 341 1195 354 1187 351 b 1140 305 1161 330 1152 317 z"},ornamentPrecompSlideTrillDAnglebert:{x_min:2,x_max:1150,y_min:-367,y_max:245,ha:612,o:"m 1058 160 b 916 327 1007 220 923 317 b 871 353 903 343 890 351 b 840 340 860 353 852 350 b 806 304 827 330 816 315 b 685 167 765 259 724 213 l 680 160 l 615 235 b 419 344 582 275 523 344 b 3 -144 258 344 3 26 b 4 -168 3 -153 3 -160 b 246 -482 24 -315 99 -422 b 458 -528 340 -521 410 -528 b 514 -526 485 -528 504 -526 b 552 -508 531 -526 552 -517 b 514 -497 552 -503 541 -498 l 503 -497 b 194 -390 432 -494 298 -488 b 69 -151 194 -390 69 -279 b 184 96 69 -60 128 27 b 328 183 202 118 258 183 b 477 96 413 183 454 118 b 559 10 510 62 552 19 b 588 0 566 3 576 0 b 613 7 598 0 609 3 b 723 112 622 14 681 73 b 789 161 733 122 776 161 b 811 144 796 161 802 156 b 936 10 816 135 923 24 b 965 0 942 3 953 0 b 991 7 975 0 985 3 b 1051 66 996 12 1022 37 b 1081 92 1063 73 1073 84 b 1136 143 1099 109 1117 127 b 1168 160 1151 154 1159 160 b 1191 144 1175 160 1181 156 b 1315 10 1197 135 1303 24 b 1344 0 1320 3 1332 0 b 1371 7 1355 0 1365 3 b 1636 295 1381 17 1617 274 b 1656 327 1644 305 1656 318 b 1619 353 1656 341 1630 353 b 1593 343 1610 353 1600 348 b 1460 190 1577 330 1476 204 b 1433 176 1449 180 1440 176 b 1410 189 1424 176 1416 183 b 1287 331 1397 202 1300 320 b 1250 353 1273 344 1261 353 b 1218 340 1240 353 1231 350 b 1185 304 1205 328 1197 315 z"},ornamentPrecompSlideTrillBach:{x_min:0,x_max:1048,y_min:-367,y_max:331,ha:698,o:"m 1038 477 l 979 477 l 979 238 l 912 160 b 769 327 858 220 775 317 b 724 353 756 343 743 351 b 693 340 713 353 706 350 b 660 304 680 330 670 315 b 539 167 618 259 577 213 b 533 161 536 166 534 163 b 390 327 480 220 396 317 b 346 353 377 343 364 351 l 340 353 b 308 340 330 353 321 350 b 275 304 295 330 285 315 b 117 122 220 243 168 186 b 0 -144 68 62 0 -48 b 1 -168 0 -153 0 -160 b 243 -482 22 -315 96 -422 b 455 -528 337 -521 408 -528 b 511 -526 482 -528 501 -526 b 549 -508 528 -526 549 -517 b 511 -497 549 -503 539 -498 l 500 -497 b 192 -390 429 -494 295 -488 b 68 -177 192 -390 84 -298 b 66 -151 66 -168 66 -160 b 189 105 66 -58 127 35 b 232 143 203 118 216 131 b 264 161 246 154 256 161 b 285 144 271 161 276 156 b 410 10 291 135 397 24 b 439 0 416 3 428 0 b 465 7 449 0 459 3 l 531 72 b 554 92 540 78 547 86 b 611 143 573 109 590 127 b 642 161 625 154 635 161 b 664 144 649 161 655 156 b 789 10 670 135 776 24 b 818 0 795 3 806 0 b 844 7 828 0 838 3 b 904 66 850 12 876 37 b 935 92 916 73 924 84 b 979 134 949 107 963 121 l 979 -88 l 1037 -88 l 1037 151 l 1044 144 b 1168 10 1050 135 1156 24 b 1197 0 1174 3 1185 0 b 1224 7 1208 0 1218 3 b 1489 295 1234 17 1470 274 b 1509 327 1498 305 1509 318 b 1472 353 1509 341 1483 353 b 1446 343 1463 353 1453 348 b 1313 190 1430 330 1329 204 b 1286 176 1302 180 1293 176 b 1263 189 1277 176 1269 183 b 1140 331 1250 202 1153 320 b 1103 353 1126 344 1115 353 b 1071 340 1093 353 1084 350 b 1038 304 1058 328 1050 315 z"},ornamentPrecompTrillSuffixDandrieu:{x_min:0,x_max:949,y_min:0,y_max:381,ha:381,o:"m 1367 314 b 1250 521 1367 419 1318 482 b 1107 549 1211 537 1145 549 b 1083 546 1096 549 1087 549 b 1066 528 1071 540 1066 534 b 1079 520 1066 524 1070 520 b 1323 351 1187 517 1323 487 b 1201 171 1323 269 1260 219 b 1194 166 1201 171 1198 168 b 1056 327 1142 226 1063 317 b 1011 353 1043 343 1030 351 b 979 340 999 353 992 350 b 946 304 966 330 956 315 b 825 167 904 259 864 213 l 821 161 b 678 327 768 222 685 317 b 634 353 665 343 652 351 b 602 340 622 353 615 350 b 569 304 589 330 579 315 b 448 167 527 259 487 213 l 444 161 b 301 327 390 222 308 317 b 256 353 288 343 275 351 b 225 340 245 353 238 350 b 192 304 212 330 202 315 b 71 167 150 259 109 213 b 17 105 52 147 36 127 b 0 73 10 98 0 84 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 174 161 157 154 167 161 b 196 144 181 161 187 156 b 321 10 202 135 308 24 b 350 0 327 3 338 0 b 376 7 360 0 370 3 b 485 112 384 14 444 73 b 552 161 495 122 539 161 b 573 144 559 161 564 156 b 698 10 579 135 685 24 b 727 0 704 3 716 0 b 753 7 737 0 747 3 b 863 112 762 14 821 73 b 929 161 873 122 916 161 b 950 144 936 161 942 156 b 1076 10 956 135 1063 24 b 1104 0 1081 3 1093 0 b 1130 7 1115 0 1125 3 b 1236 108 1139 14 1195 69 b 1367 314 1297 160 1367 233 z"},ornamentPrecompDoubleCadenceUpperPrefix:{x_min:0,x_max:1278,y_min:0,y_max:247,ha:247,o:"m 1801 356 b 1776 346 1793 356 1783 351 b 1642 192 1760 333 1659 206 b 1614 177 1630 181 1621 177 b 1591 190 1606 177 1597 184 b 1469 334 1578 203 1482 323 b 1430 356 1453 347 1441 356 b 1398 343 1420 356 1411 353 b 1365 307 1385 331 1377 318 l 1240 164 b 1097 330 1187 226 1104 320 b 1053 356 1084 346 1071 354 b 1021 343 1041 356 1034 353 b 988 307 1008 333 998 318 b 865 168 946 262 904 216 l 861 163 b 717 330 808 223 724 320 b 672 356 704 346 691 354 b 641 343 661 356 654 353 b 608 307 628 333 618 318 b 485 168 566 262 524 216 l 455 134 b 284 46 409 88 351 46 b 16 285 148 46 32 265 b 3 295 9 292 4 295 b 0 291 1 295 0 292 b 1 285 0 288 1 285 b 308 0 42 190 157 0 b 530 120 415 1 482 63 b 559 144 539 128 549 137 b 590 163 573 156 583 163 b 612 145 598 163 603 157 b 739 10 618 137 724 24 b 768 0 744 3 756 0 b 793 7 778 0 788 3 b 903 114 802 14 861 75 l 939 144 b 971 163 953 156 963 163 b 992 145 978 163 984 157 b 1119 10 998 137 1106 24 b 1148 0 1125 3 1136 0 b 1174 7 1158 0 1168 3 b 1284 114 1182 14 1241 75 b 1316 144 1282 115 1312 141 b 1348 161 1331 156 1339 161 b 1371 145 1355 161 1361 157 b 1496 10 1377 137 1485 24 b 1525 0 1502 3 1513 0 b 1552 7 1536 0 1547 3 b 1819 298 1562 17 1800 276 b 1840 330 1829 308 1840 320 b 1832 344 1840 334 1837 340 b 1801 356 1820 351 1810 356 z"},ornamentPrecompDoubleCadenceUpperPrefixTurn:{x_min:0,x_max:1277,y_min:-62,y_max:333,ha:395,o:"m 1273 202 l 1273 480 l 1230 480 l 1230 174 l 1097 328 b 1053 354 1084 344 1071 353 b 1021 341 1041 354 1034 351 b 988 305 1008 331 998 317 b 865 167 945 261 904 215 l 861 161 b 717 328 808 222 724 318 b 672 354 704 344 691 353 b 641 341 661 354 654 351 b 608 305 628 331 618 317 b 485 167 564 261 524 215 b 455 132 474 156 465 144 b 284 45 410 88 350 45 b 14 284 148 45 30 264 b 3 294 9 291 4 294 b 0 289 1 294 0 291 b 1 284 0 287 1 284 b 308 -1 42 189 157 -1 b 530 118 415 0 481 62 b 557 143 539 127 547 135 b 590 161 572 154 582 161 b 612 144 598 161 603 156 b 737 9 618 135 724 24 b 768 -1 743 1 755 -1 b 793 6 778 -1 788 1 b 903 112 802 13 861 73 l 937 143 b 971 161 953 154 963 161 b 992 144 978 161 984 156 b 1117 9 998 135 1104 24 b 1148 -1 1123 1 1136 -1 b 1174 6 1158 -1 1168 1 l 1230 60 l 1230 -89 l 1273 -89 l 1273 102 l 1283 112 b 1348 160 1295 125 1332 160 b 1371 144 1355 160 1361 156 b 1496 9 1377 135 1483 24 b 1525 -1 1502 1 1513 -1 b 1552 6 1536 -1 1547 1 b 1819 297 1562 16 1800 275 b 1839 328 1827 307 1839 320 b 1801 354 1839 343 1813 354 b 1776 344 1793 354 1783 350 b 1642 190 1760 331 1657 206 b 1614 176 1630 180 1621 176 b 1591 189 1606 176 1597 183 b 1467 333 1578 203 1480 321 b 1430 354 1453 346 1441 354 b 1398 341 1420 354 1411 351 b 1365 305 1385 330 1377 317 z"},ornamentPrecompTrillLowerSuffix:{x_min:0,x_max:859,y_min:-222,y_max:246,ha:468,o:"m 1164 217 b 1031 351 1138 259 1063 351 b 1011 337 1020 351 1024 347 b 828 167 952 291 886 217 l 824 164 b 683 328 772 225 690 318 b 638 354 670 344 657 353 b 606 341 626 354 619 351 b 573 305 593 331 583 317 b 451 167 530 261 490 215 l 446 161 b 302 328 393 222 310 318 b 258 354 289 344 276 353 b 226 341 246 354 239 351 b 193 305 213 331 203 317 b 71 167 150 261 109 215 b 17 105 52 147 36 127 b 0 73 10 98 0 84 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 176 161 157 154 168 161 b 197 144 183 161 189 156 b 323 9 203 135 310 23 b 353 -1 328 1 340 -1 b 379 6 363 -1 373 1 b 488 112 387 13 446 73 l 523 143 b 556 161 539 154 549 161 b 577 144 563 161 569 156 b 703 9 583 135 690 23 b 733 -1 708 1 721 -1 b 759 6 743 -1 753 1 b 868 112 768 13 827 73 b 955 183 878 122 943 183 b 1081 107 965 183 1031 153 b 1156 -89 1128 63 1156 6 l 1156 -102 b 948 -297 1156 -204 1048 -297 b 806 -271 904 -297 850 -282 l 792 -266 b 801 -288 792 -268 795 -282 b 948 -320 809 -297 880 -320 b 1237 -50 1092 -320 1237 -199 b 1164 217 1237 75 1218 122 z"},brassScoop:{x_min:1,x_max:320,y_min:-373,y_max:13,ha:386,o:"m 35 -537 b 461 -12 194 -518 461 -289 b 438 19 461 13 451 19 b 410 -9 425 19 413 9 b 35 -425 357 -366 92 -403 b 1 -482 13 -433 1 -438 l 1 -505 b 26 -537 1 -526 3 -537 z"},brassDoitMedium:{x_min:0,x_max:489,y_min:-40,y_max:346,ha:386,o:"m 33 -58 b 704 468 255 -58 683 186 b 681 498 704 494 693 498 b 654 471 668 498 658 488 b 33 55 550 118 91 76 b 0 -3 12 46 0 42 l 0 -26 b 24 -58 0 -46 1 -58 z"},brassFallLipShort:{x_min:1,x_max:293,y_min:-345,y_max:42,ha:387,o:"m 22 60 b 1 35 4 60 1 52 l 1 6 b 26 -50 3 -40 10 -43 b 32 -52 27 -50 30 -50 b 376 -469 85 -73 327 -111 b 400 -497 379 -487 387 -497 b 422 -467 412 -497 422 -491 b 32 60 422 -187 177 40 z"},brassLiftMedium:{x_min:0,x_max:811,y_min:0,y_max:852,ha:852,o:"m 1138 1220 b 1135 1225 1135 1223 1135 1224 b 1129 1227 1133 1227 1130 1227 b 1117 1207 1122 1227 1117 1212 l 1117 1201 b 1109 1164 1117 1187 1117 1172 b 1100 1156 1107 1161 1104 1158 b 959 1104 1058 1128 995 1140 b 929 1032 936 1081 929 1056 b 932 1007 929 1024 930 1015 b 923 976 932 995 930 985 l 914 971 b 773 919 873 942 809 955 b 743 847 750 896 743 870 b 746 821 743 838 744 829 b 737 791 746 809 744 799 l 729 783 b 588 733 687 756 624 769 b 557 661 564 710 557 684 b 560 635 557 652 559 644 b 552 605 560 624 559 612 l 543 598 b 402 547 501 570 438 583 b 372 475 379 524 372 498 b 374 449 372 467 373 458 b 366 419 374 438 373 426 l 357 412 b 216 361 315 384 252 397 b 186 289 193 338 186 312 b 189 264 186 281 187 272 b 180 233 189 252 187 240 b 171 226 177 232 174 229 b 30 176 130 199 66 212 b 0 104 7 153 0 128 b 33 0 0 88 14 0 b 49 17 40 0 49 10 b 71 63 52 35 56 49 b 212 115 102 95 154 59 b 239 186 230 134 239 160 b 236 210 239 194 238 202 b 256 249 239 225 243 236 b 397 301 288 281 340 245 b 425 372 416 320 425 346 b 422 396 425 380 423 387 b 442 435 425 410 429 422 b 583 487 474 467 526 431 b 611 557 602 505 611 531 b 608 582 611 566 609 573 b 628 621 611 596 615 608 b 769 672 660 652 711 618 b 796 743 788 691 796 717 b 793 768 796 752 795 759 b 814 806 796 782 801 793 b 955 858 845 838 897 804 b 982 929 973 877 982 903 b 979 953 982 937 981 945 b 999 992 982 968 986 979 b 1140 1045 1031 1024 1083 989 b 1168 1116 1161 1066 1168 1090 b 1138 1220 1168 1162 1145 1207 z"},brassFallRoughMedium:{x_min:0,x_max:811,y_min:0,y_max:852,ha:852,o:"m 30 1220 b 0 1116 23 1207 0 1162 b 27 1045 0 1090 7 1066 b 168 992 85 989 137 1024 b 189 953 181 979 186 968 b 186 929 187 945 186 937 b 213 858 186 903 194 877 b 354 806 271 804 323 838 b 374 768 367 793 372 782 b 372 743 373 759 372 752 b 399 672 372 717 380 691 b 540 621 456 618 508 652 b 560 582 553 608 557 596 b 557 557 559 573 557 566 b 585 487 557 531 566 505 b 726 435 642 431 694 467 b 746 396 739 422 743 410 b 743 372 744 387 743 380 b 770 301 743 346 752 320 b 912 249 828 245 880 281 b 932 210 924 236 929 225 b 929 186 930 202 929 194 b 956 115 929 160 937 134 b 1097 63 1014 59 1066 95 b 1119 17 1112 49 1116 35 b 1135 0 1119 10 1128 0 b 1168 104 1153 0 1168 91 b 1138 176 1168 128 1161 153 b 996 226 1102 212 1038 199 b 988 233 994 229 991 232 b 979 264 981 240 979 252 b 982 289 981 272 982 281 b 952 361 982 312 975 338 b 811 412 916 397 852 384 l 802 419 b 793 449 795 426 793 438 b 796 475 795 458 796 467 b 766 547 796 498 789 524 b 625 598 730 583 667 570 l 616 605 b 608 635 609 612 608 624 b 611 661 609 644 611 652 b 580 733 611 684 603 710 b 439 783 544 769 481 756 l 431 791 b 422 821 423 799 422 809 b 425 847 423 829 425 838 b 395 919 425 870 418 896 b 253 971 359 955 295 942 l 245 976 b 236 1007 238 985 236 995 b 239 1032 238 1015 239 1024 b 209 1104 239 1056 232 1081 b 68 1156 173 1140 109 1128 b 59 1164 63 1158 60 1161 b 50 1201 50 1172 50 1187 l 50 1207 b 39 1227 50 1212 46 1227 b 33 1225 37 1227 35 1227 b 30 1220 33 1224 33 1223 z"},brassBend:{x_min:0,x_max:392,y_min:0,y_max:282,ha:282,o:"m 282 0 b 552 72 369 0 456 23 b 564 92 560 75 564 84 l 564 383 b 541 406 564 395 554 406 b 518 383 528 406 518 395 l 518 107 b 282 46 435 65 357 46 b 46 107 207 46 130 65 l 46 383 b 23 406 46 395 36 406 b 0 383 10 406 0 395 l 0 92 b 13 72 0 84 4 75 b 282 0 108 23 196 0 z"},brassMuteClosed:{x_min:0,x_max:272,y_min:0,y_max:272,ha:272,o:"m 392 219 l 219 219 l 219 392 l 173 392 l 173 219 l 0 219 l 0 173 l 173 173 l 173 0 l 219 0 l 219 173 l 392 173 z"},brassMuteOpen:{x_min:0,x_max:304,y_min:0,y_max:304,ha:304,o:"m 219 0 b 438 219 340 0 438 98 b 219 438 438 340 340 438 b 0 219 98 438 0 340 b 219 0 0 98 98 0 z m 219 392 b 392 219 314 392 392 314 b 219 46 392 124 314 46 b 46 219 124 46 46 124 b 219 392 46 314 124 392 z"},brassFlip:{x_min:0,x_max:379,y_min:0,y_max:282,ha:282,o:"m 523 0 b 541 9 530 0 536 3 b 546 22 544 13 546 17 b 536 42 546 29 541 36 l 36 402 b 23 406 33 405 27 406 b 0 383 12 406 0 395 l 0 23 b 23 0 0 10 10 0 b 46 23 36 0 46 10 l 46 337 l 508 4 b 523 0 513 1 517 0 z"},brassJazzTurn:{x_min:0,x_max:620,y_min:0,y_max:245,ha:245,o:"m 792 190 b 765 176 780 179 772 176 b 740 190 755 176 747 183 b 629 325 727 202 644 312 b 593 347 616 338 605 347 b 562 334 583 346 575 344 b 528 298 549 323 539 310 l 406 176 b 389 168 406 176 399 168 b 374 176 384 168 379 170 b 245 325 360 192 245 325 b 200 353 232 343 219 351 b 168 340 190 353 181 350 l 17 156 b 0 121 10 147 0 132 b 16 107 0 114 4 108 b 84 143 26 107 76 137 b 118 160 92 150 108 160 b 141 143 125 160 131 154 b 265 10 147 135 253 24 b 294 0 271 3 282 0 b 321 7 305 0 315 3 b 498 160 321 7 478 158 b 521 143 505 160 513 154 b 647 10 528 135 635 24 b 675 0 652 3 664 0 b 703 7 687 0 697 3 b 874 186 713 16 855 164 b 893 220 881 196 893 212 b 873 245 890 235 883 243 b 796 194 847 245 815 213 z"},brassSmear:{x_min:1,x_max:306,y_min:0,y_max:170,ha:170,o:"m 193 79 b 308 0 219 50 264 0 b 439 117 396 0 438 102 b 439 120 439 118 439 118 l 441 125 b 441 128 441 127 441 127 b 433 141 441 135 439 141 b 416 130 429 141 423 137 b 343 94 390 107 370 94 b 269 153 315 94 294 121 l 265 158 b 144 245 239 190 180 245 b 6 134 62 245 10 143 b 1 114 3 125 1 118 b 7 107 1 108 4 107 b 36 122 13 107 22 112 b 92 151 55 137 65 151 b 183 89 125 151 161 112 b 189 84 184 88 187 86 z"},stringsDownBow:{x_min:0,x_max:312,y_min:0,y_max:318,ha:318,o:"m 37 458 b 0 420 17 458 0 441 l 0 17 b 17 0 0 7 9 0 l 37 0 b 55 17 46 0 55 7 l 55 253 b 225 278 55 269 140 278 b 395 253 310 278 395 269 l 395 17 b 413 0 395 7 403 0 l 432 0 b 449 17 441 0 449 7 l 449 420 b 412 458 449 441 432 458 z"},stringsUpBow:{x_min:1,x_max:249,y_min:1,y_max:495,ha:494,o:"m 181 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 z"},stringsHarmonic:{x_min:0,x_max:200,y_min:0,y_max:200,ha:200,o:"m 288 144 b 144 288 288 225 223 288 b 0 144 65 288 0 225 b 144 0 0 65 65 0 b 288 144 223 0 288 65 z m 144 249 b 249 144 203 249 249 203 b 144 39 249 86 203 39 b 39 144 86 39 39 86 b 144 249 39 203 86 249 z"},pluckedSnapPizzicatoAbove:{x_min:0,x_max:200,y_min:0,y_max:300,ha:300,o:"m 0 144 b 144 0 0 63 65 0 b 288 144 223 0 288 63 b 167 285 288 215 235 275 l 167 432 l 121 432 l 121 285 b 0 144 52 275 0 215 z m 121 246 l 121 144 l 167 144 l 167 246 b 249 144 213 236 249 193 b 144 39 249 85 202 39 b 39 144 85 39 39 85 b 121 246 39 193 73 236 z"},pluckedSnapPizzicatoBelow:{x_min:0,x_max:200,y_min:0,y_max:300,ha:300,o:"m 288 288 b 144 432 288 369 223 432 b 0 288 65 432 0 369 b 121 145 0 216 52 157 l 121 0 l 167 0 l 167 145 b 288 288 235 157 288 216 z m 167 186 l 167 288 l 121 288 l 121 186 b 39 288 75 196 39 238 b 144 393 39 347 86 393 b 249 288 203 393 249 347 b 167 186 249 238 215 196 z"},pluckedLeftHandPizzicato:{x_min:0,x_max:272,y_min:0,y_max:272,ha:272,o:"m 392 219 l 219 219 l 219 392 l 173 392 l 173 219 l 0 219 l 0 173 l 173 173 l 173 0 l 219 0 l 219 173 l 392 173 z"},keyboardPedalPed:{x_min:0,x_max:1019,y_min:-8,y_max:555,ha:563,o:"m 413 799 b 179 749 327 798 261 789 b 0 517 107 713 0 632 b 122 376 0 454 37 376 b 240 540 189 376 240 452 b 225 586 240 579 233 586 b 204 549 213 586 212 573 b 138 480 199 527 181 480 b 85 549 96 480 85 517 l 85 554 b 353 762 89 690 230 762 b 373 752 364 762 373 760 b 351 708 373 740 360 723 b 274 546 330 675 274 585 b 353 416 274 508 333 444 b 412 304 372 390 412 351 b 382 228 412 275 403 256 b 334 190 363 202 361 200 b 147 29 271 167 147 88 b 196 -12 147 4 171 -12 b 343 108 239 -12 279 33 l 363 132 b 387 150 370 141 376 150 b 543 -4 445 150 467 -4 b 631 42 567 -4 586 0 l 668 78 b 685 89 674 84 680 89 b 696 75 688 89 690 86 b 809 -9 717 29 753 -9 b 946 66 854 -9 894 13 b 988 107 971 92 981 107 b 1002 89 994 107 996 99 b 1152 -4 1030 36 1077 -4 b 1329 248 1238 -4 1329 82 b 792 717 1329 556 1047 665 b 766 720 785 719 775 720 b 747 703 752 720 747 711 b 780 680 747 693 756 685 b 1223 222 1028 621 1223 504 b 1152 39 1223 122 1205 39 b 1073 229 1104 39 1073 132 b 1132 423 1073 314 1086 377 b 1142 442 1140 432 1142 436 b 1126 458 1142 451 1136 458 b 1093 446 1119 458 1109 455 b 975 216 1022 408 975 337 l 975 190 b 943 121 975 160 972 150 b 852 69 899 76 877 69 b 776 148 816 69 786 117 b 773 163 775 154 773 158 b 786 177 773 167 776 170 l 801 187 b 937 366 867 235 937 284 b 844 454 937 422 900 454 b 665 217 711 454 665 331 b 671 153 665 197 667 176 l 671 147 b 662 134 671 143 670 140 b 605 111 639 118 625 111 b 521 160 572 111 546 135 b 451 203 497 184 474 197 b 426 212 435 207 426 206 b 436 230 426 216 429 220 b 510 389 464 269 510 340 b 429 521 510 435 480 462 b 369 629 387 570 369 599 b 402 720 369 648 384 691 b 462 763 425 759 446 763 b 611 624 540 763 611 704 b 564 575 611 592 590 575 b 501 602 540 575 520 582 b 474 622 492 611 487 622 b 459 603 465 622 459 615 b 603 471 459 570 510 471 b 711 588 670 471 711 524 b 422 799 711 742 554 799 z m 815 403 b 848 343 838 403 848 383 b 780 226 848 295 824 261 b 765 217 773 220 768 217 b 759 228 762 217 759 220 b 756 282 757 245 756 262 b 815 403 756 346 772 403 z m 1405 124 b 1344 62 1369 124 1344 98 b 1405 0 1344 26 1369 0 b 1467 62 1441 0 1467 26 b 1405 124 1467 98 1441 124 z"},keyboardPedalUp:{x_min:0,x_max:450,y_min:0,y_max:450,ha:450,o:"m 582 396 b 516 367 554 396 533 384 b 465 340 495 347 487 340 l 458 340 b 412 377 432 340 412 348 b 432 409 412 387 419 396 l 438 415 b 490 429 451 428 464 429 b 575 501 534 429 575 452 b 501 575 575 541 541 575 b 429 490 452 575 429 534 b 415 438 429 464 428 451 l 409 432 b 377 412 396 419 387 412 b 340 458 348 412 340 432 l 340 465 b 367 516 340 487 347 495 b 396 582 384 533 396 554 b 324 648 396 625 363 648 b 252 582 285 648 252 625 b 281 516 252 554 264 533 b 308 465 301 495 308 487 l 308 458 b 271 412 308 432 300 412 b 239 432 261 412 252 419 l 233 438 b 219 490 220 451 219 464 b 147 575 219 534 196 575 b 73 501 107 575 73 541 b 158 429 73 452 114 429 b 210 415 184 429 197 428 l 216 409 b 236 377 229 396 236 387 b 190 340 236 348 216 340 l 183 340 b 132 367 161 340 153 347 b 66 396 115 384 94 396 b 0 324 23 396 0 363 b 66 252 0 285 23 252 b 132 281 94 252 115 264 b 183 308 153 301 161 308 l 190 308 b 236 271 216 308 236 300 b 216 239 236 261 229 252 l 210 233 b 158 219 197 220 184 219 b 73 147 114 219 73 196 b 147 73 73 107 107 73 b 219 158 196 73 219 114 b 233 210 219 184 220 197 l 239 216 b 271 236 252 229 261 236 b 308 190 300 236 308 216 l 308 183 b 281 132 308 161 301 153 b 252 66 264 115 252 94 b 324 0 252 23 285 0 b 396 66 363 0 396 23 b 367 132 396 94 384 115 b 340 183 347 153 340 161 l 340 190 b 377 236 340 216 348 236 b 409 216 387 236 396 229 l 415 210 b 429 158 428 197 429 184 b 501 73 429 114 452 73 b 575 147 541 73 575 107 b 490 219 575 196 534 219 b 438 233 464 219 451 220 l 432 239 b 412 271 419 252 412 261 b 458 308 412 300 432 308 l 465 308 b 516 281 487 308 495 301 b 582 252 533 264 554 252 b 648 324 625 252 648 285 b 582 396 648 363 625 396 z m 324 271 b 271 324 291 271 271 291 b 324 377 271 357 291 377 b 377 324 357 377 377 357 b 324 271 377 291 357 271 z"},pictChokeCymbal:{x_min:1,x_max:152,y_min:2,y_max:251,ha:249,o:"m 104 361 b 1 271 42 361 1 321 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 17 32 29 26 26 l 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 z"},wiggleArpeggiatoUp:{x_min:-33,x_max:292,y_min:0,y_max:119,ha:119,o:"m 130 171 b -39 68 16 171 -14 91 b -48 53 -45 62 -48 58 b -29 42 -48 46 -39 42 b -10 46 -23 42 -16 43 b 56 63 12 56 29 63 b 248 0 121 63 135 0 b 419 127 361 0 410 104 b 420 132 420 130 420 131 b 412 140 420 137 416 140 b 386 130 403 140 392 134 b 334 107 367 117 353 107 b 318 108 330 107 324 107 b 240 138 289 112 265 128 b 130 171 209 153 168 171 z"},arrowheadBlackUp:{x_min:0,x_max:228,y_min:0,y_max:299,ha:299,o:"m 166 431 b 0 20 111 274 0 30 b 16 0 0 12 6 0 l 17 1 b 166 50 43 16 160 50 b 310 1 171 50 289 13 l 311 0 b 328 20 321 0 328 12 b 166 431 328 30 220 274 z"},arrowheadBlackDown:{x_min:0,x_max:228,y_min:0,y_max:299,ha:299,o:"m 166 0 b 328 410 220 157 328 400 b 311 431 328 419 321 431 l 310 429 b 166 380 289 418 171 380 b 17 429 160 380 43 415 l 16 431 b 0 410 6 431 0 419 b 166 0 0 400 111 157 z"},arpeggiatoUp:{x_min:1,x_max:229,y_min:7,y_max:1511,ha:1504,o:"m 219 1848 l 330 1848 l 164 2176 l 1 1848 l 121 1848 b 92 1778 115 1822 101 1800 l 89 1773 b 59 1668 75 1741 59 1702 b 96 1555 59 1614 76 1580 b 99 1551 98 1554 99 1551 l 102 1547 b 124 1496 115 1531 124 1515 b 122 1482 124 1492 124 1488 b 92 1404 118 1453 102 1428 b 59 1293 78 1372 59 1332 b 105 1172 59 1234 81 1198 b 124 1120 118 1155 124 1143 l 122 1113 b 122 1110 122 1113 122 1112 b 92 1032 118 1081 102 1057 b 59 922 78 1001 59 960 b 115 792 59 855 86 816 b 124 760 121 782 124 773 b 122 744 124 756 124 750 b 92 667 118 716 102 693 b 59 556 78 635 59 595 b 108 433 59 495 82 458 b 124 389 117 420 124 408 b 122 374 124 384 124 379 b 92 298 118 346 102 323 l 89 292 b 59 186 75 261 59 222 b 163 19 59 73 140 42 b 177 10 168 13 173 10 b 189 29 184 10 189 19 b 184 48 189 35 187 42 b 167 114 174 69 167 85 b 230 305 167 179 229 193 b 181 423 230 357 209 396 b 167 484 173 442 167 458 b 230 675 167 547 229 563 b 179 796 230 729 206 769 b 167 850 171 812 167 827 b 230 1040 167 913 229 929 b 183 1158 230 1092 209 1130 b 167 1220 173 1178 167 1194 b 230 1411 167 1284 229 1300 b 186 1526 230 1462 210 1499 b 167 1594 176 1529 167 1584 b 230 1786 167 1659 229 1673 b 219 1848 230 1809 226 1829 z"},arpeggiatoDown:{x_min:1,x_max:229,y_min:-4,y_max:1500,ha:1504,o:"m 219 323 b 230 384 226 341 230 361 b 167 576 229 497 167 511 b 186 644 167 586 176 641 b 230 759 210 671 230 708 b 167 950 229 870 167 886 b 183 1012 167 976 173 992 b 230 1130 209 1040 230 1079 b 167 1320 229 1241 167 1257 b 179 1374 167 1344 171 1358 b 230 1495 206 1401 230 1441 b 167 1686 229 1607 167 1623 b 181 1747 167 1712 173 1728 b 230 1865 209 1774 230 1813 b 167 2056 229 1977 167 1992 b 184 2123 167 2085 174 2101 b 189 2141 187 2128 189 2136 b 177 2160 189 2151 184 2160 b 163 2151 173 2160 168 2157 b 59 1984 140 2128 59 2097 b 89 1878 59 1948 75 1909 l 92 1872 b 122 1796 102 1848 118 1824 b 124 1781 124 1791 124 1786 b 108 1737 124 1763 117 1750 b 59 1614 82 1712 59 1675 b 92 1503 59 1575 78 1535 b 122 1426 102 1477 118 1454 b 124 1410 124 1420 124 1414 b 115 1378 124 1397 121 1388 b 59 1248 86 1354 59 1315 b 92 1138 59 1210 78 1169 b 122 1060 102 1113 118 1089 b 122 1057 122 1058 122 1058 l 124 1050 b 105 998 124 1027 118 1015 b 59 877 81 972 59 936 b 92 766 59 838 78 798 b 122 688 102 742 118 717 b 124 674 124 683 124 678 b 102 624 124 655 115 639 l 99 619 b 96 615 99 619 98 616 b 59 503 76 590 59 556 b 89 397 59 468 75 429 l 92 392 b 121 323 101 370 115 348 l 1 323 l 164 -6 l 330 323 z"},repeat1Bar:{x_min:0,x_max:532,y_min:-250,y_max:279,ha:529,o:"m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 675 -71 b 586 -161 626 -71 586 -111 b 675 -251 586 -210 626 -251 b 766 -161 726 -251 766 -210 b 675 -71 766 -111 726 -71 z"},repeat2Bars:{x_min:0,x_max:762,y_min:-250,y_max:279,ha:529,o:"m 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 b 343 -360 331 -356 336 -360 l 485 -360 b 516 -340 498 -360 508 -348 z m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 1007 -71 b 917 -161 958 -71 917 -111 b 1007 -251 917 -210 958 -251 b 1097 -161 1057 -251 1097 -210 b 1007 -71 1097 -111 1057 -71 z"},repeat4Bars:{x_min:0,x_max:1232,y_min:-250,y_max:279,ha:529,o:"m 1767 380 b 1774 395 1771 386 1774 390 b 1765 402 1774 399 1771 402 l 1613 402 b 1587 380 1604 402 1597 393 l 1012 -340 b 1008 -350 1009 -343 1008 -347 b 1020 -360 1008 -356 1012 -360 l 1162 -360 b 1192 -340 1175 -360 1185 -348 z m 1436 380 b 1443 395 1440 386 1443 390 b 1434 402 1443 399 1440 402 l 1282 402 b 1256 380 1273 402 1266 393 l 681 -340 b 677 -350 678 -343 677 -347 b 688 -360 677 -356 681 -360 l 831 -360 b 861 -340 844 -360 854 -348 z m 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 b 343 -360 331 -356 336 -360 l 485 -360 b 516 -340 498 -360 508 -348 z m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 1683 -71 b 1594 -161 1634 -71 1594 -111 b 1683 -251 1594 -210 1634 -251 b 1774 -161 1734 -251 1774 -210 b 1683 -71 1774 -111 1734 -71 z"},repeatBarSlash:{x_min:0,x_max:532,y_min:-250,y_max:279,ha:529,o:"m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z"},csymDiminished:{x_min:0,x_max:473,y_min:0,y_max:473,ha:473,o:"m 341 681 b 0 341 153 681 0 530 b 341 0 0 153 153 0 b 681 341 530 0 681 153 b 341 681 681 530 530 681 z m 341 618 b 618 341 495 618 618 495 b 341 63 618 189 494 63 b 63 341 187 63 63 187 b 341 618 63 494 189 618 z"},csymHalfDiminished:{x_min:-16,x_max:488,y_min:-15,y_max:489,ha:504,o:"m 703 660 l 658 704 l 557 603 b 340 681 498 652 422 681 b -1 341 151 681 -1 530 b 78 124 -1 259 29 183 l -23 23 l 22 -22 l 122 79 b 340 0 181 30 258 0 b 680 341 528 0 680 153 b 602 559 680 423 651 500 z m 62 341 b 340 618 62 494 187 618 b 513 559 403 618 464 598 l 122 168 b 62 341 84 217 62 278 z m 616 341 b 340 63 616 189 492 63 b 167 124 276 63 216 85 l 557 514 b 616 341 596 465 616 405 z"},csymAugmented:{x_min:0,x_max:395,y_min:1,y_max:396,ha:395,o:"m 569 318 l 317 318 l 317 570 l 253 570 l 253 318 l 0 318 l 0 255 l 253 255 l 253 1 l 317 1 l 317 255 l 569 255 z"},csymMajorSeventh:{x_min:0,x_max:558,y_min:1,y_max:477,ha:476,o:"m 402 687 l 0 1 l 804 1 z m 402 562 l 693 65 l 111 65 z"},csymMinor:{x_min:0,x_max:325,y_min:216,y_max:260,ha:44,o:"m 468 374 l 0 374 l 0 311 l 468 311 z"},csymParensLeftTall:{x_min:1,x_max:185,y_min:0,y_max:997,ha:997,o:"m 266 48 b 261 65 266 55 264 62 b 92 719 157 212 92 400 b 262 1371 92 1037 154 1228 b 266 1394 266 1378 266 1394 l 266 1424 b 264 1436 266 1431 266 1436 b 259 1434 262 1436 259 1434 b 1 719 84 1261 1 1011 b 259 1 1 429 79 177 b 264 0 261 0 262 0 b 266 9 265 0 266 6 z"},csymParensRightTall:{x_min:-20,x_max:164,y_min:0,y_max:997,ha:997,o:"m -29 9 b -26 0 -29 6 -27 0 b -22 1 -24 0 -23 0 b 236 719 158 177 236 429 b -22 1434 236 1011 154 1261 b -26 1436 -22 1434 -24 1436 b -29 1424 -29 1436 -29 1431 l -29 1394 b -24 1371 -29 1394 -29 1378 b 145 719 84 1228 145 1037 b -23 65 145 400 81 212 b -29 48 -26 62 -29 55 z"},csymBracketLeftTall:{x_min:0,x_max:155,y_min:0,y_max:1e3,ha:1e3,o:"m 217 0 b 223 9 220 0 223 4 l 223 37 b 217 46 223 42 220 46 l 92 46 l 92 1394 l 217 1394 b 223 1403 220 1394 223 1398 l 223 1431 b 217 1440 223 1436 220 1440 l 6 1440 b 0 1436 3 1440 0 1439 l 0 4 b 6 0 0 1 3 0 z"},csymBracketRightTall:{x_min:1,x_max:156,y_min:0,y_max:1e3,ha:1e3,o:"m 219 0 b 225 4 222 0 225 1 l 225 1436 b 219 1440 225 1439 222 1440 l 7 1440 b 1 1431 4 1440 1 1436 l 1 1403 b 7 1394 1 1398 4 1394 l 132 1394 l 132 46 l 7 46 b 1 37 4 46 1 42 l 1 9 b 7 0 1 4 4 0 z"},csymParensLeftVeryTall:{x_min:0,x_max:122,y_min:0,y_max:993,ha:993,o:"m 176 32 b 171 49 176 39 174 46 b 60 716 104 194 60 399 b 173 1382 60 1032 101 1241 b 176 1405 176 1390 176 1405 l 176 1427 b 173 1430 176 1428 174 1430 b 0 716 40 1297 0 978 b 170 3 0 428 50 179 b 171 0 170 1 170 0 b 176 6 173 0 176 4 z"},csymParensRightVeryTall:{x_min:-15,x_max:107,y_min:0,y_max:993,ha:993,o:"m -22 6 b -17 0 -22 4 -19 0 b -16 3 -16 0 -16 1 b 154 716 104 179 154 428 b -19 1430 154 978 114 1297 b -22 1427 -20 1430 -22 1428 l -22 1405 b -19 1382 -22 1405 -22 1390 b 94 716 53 1241 94 1032 b -17 49 94 399 50 194 b -22 32 -20 46 -22 39 z"},csymDiagonalArrangementSlash:{x_min:0,x_max:999,y_min:0,y_max:1e3,ha:1e3,o:"m 1439 1380 l 1377 1440 l 0 60 l 62 0 z"},accSagittal5v7KleismaUp:{x_min:0,x_max:156,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 -35 b 135 -112 68 -86 99 -112 b 225 68 194 -112 225 -53 l 180 68 b 144 -4 180 20 168 -4 b 122 0 138 -4 131 -3 b 23 248 86 14 52 96 l 0 248 z"},accSagittal5v7KleismaDown:{x_min:0,x_max:156,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 23 -248 b 122 0 52 -96 86 -14 b 144 4 131 3 138 4 b 180 -68 168 4 180 -20 l 225 -68 b 135 112 225 53 194 112 b 45 35 99 112 68 86 l 45 517 l 0 517 z"},accSagittal5CommaUp:{x_min:0,x_max:156,y_min:-359,y_max:172,ha:531,o:"m 225 -517 l 225 248 l 203 248 l 0 -112 l 0 -284 l 180 33 l 180 -517 z"},accSagittal5CommaDown:{x_min:0,x_max:156,y_min:-172,y_max:359,ha:531,o:"m 180 517 l 180 -33 l 0 284 l 0 112 l 203 -248 l 225 -248 l 225 517 z"},accSagittal7CommaUp:{x_min:0,x_max:156,y_min:-359,y_max:172,ha:531,o:"m 0 248 l 0 -517 l 45 -517 l 45 112 l 89 112 b 180 -68 150 112 180 53 l 180 -248 l 225 -248 l 225 68 b 135 248 225 187 194 248 z"},accSagittal7CommaDown:{x_min:0,x_max:156,y_min:-172,y_max:359,ha:531,o:"m 135 -248 b 225 -68 194 -248 225 -187 l 225 248 l 180 248 l 180 68 b 89 -112 180 -53 150 -112 l 45 -112 l 45 517 l 0 517 l 0 -248 z"},accSagittal25SmallDiesisUp:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -157 l 0 -259 l 315 -89 l 315 -517 l 360 -517 l 360 248 l 337 248 l 0 68 l 0 -33 l 315 135 l 315 10 z"},accSagittal25SmallDiesisDown:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 315 -10 l 315 -135 l 0 33 l 0 -68 l 337 -248 l 360 -248 l 360 517 l 315 517 l 315 89 l 0 259 l 0 157 z"},accSagittal35MediumDiesisUp:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -68 330 112 360 53 l 360 -248 l 405 -248 l 405 68 b 315 248 405 187 374 248 l 203 248 l 0 -112 z"},accSagittal35MediumDiesisDown:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 0 112 l 203 -248 l 315 -248 b 405 -68 374 -248 405 -187 l 405 248 l 360 248 l 360 68 b 271 -112 360 -53 330 -112 l 225 -112 l 225 517 l 180 517 l 180 -33 l 0 284 z"},accSagittal11MediumDiesisUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 225 53 l 225 -517 l 271 -517 l 271 53 l 495 -248 l 495 -89 l 248 248 l 0 -89 l 0 -248 z"},accSagittal11MediumDiesisDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 248 l 0 89 l 248 -248 l 495 89 l 495 248 l 271 -53 l 271 517 l 225 517 l 225 -53 z"},accSagittal11LargeDiesisUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 112 l 315 112 b 449 -68 405 112 449 53 l 449 -248 l 495 -248 l 495 68 b 360 248 495 187 449 248 l 135 248 b 0 68 45 248 0 187 z"},accSagittal11LargeDiesisDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 135 -248 0 -187 45 -248 l 360 -248 b 495 -68 449 -248 495 -187 l 495 248 l 449 248 l 449 68 b 315 -112 449 -53 405 -112 l 271 -112 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z"},accSagittal35LargeDiesisUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 l 540 112 l 540 274 l 271 -58 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z"},accSagittal35LargeDiesisDown:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 l 540 112 l 540 274 l 269 -58 l 269 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z"},accSagittalSharp25SDown:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 0 68 b 112 -112 0 -53 36 -112 l 135 -112 l 135 -517 l 180 -517 l 180 -89 b 248 26 206 -65 229 -27 b 315 -89 264 -27 287 -65 l 315 -517 l 360 -517 l 360 -112 l 383 -112 b 495 68 458 -112 495 -53 l 449 68 b 399 -4 449 20 433 -4 b 248 248 297 -4 261 171 b 122 0 216 96 176 14 b 94 -4 112 -3 102 -4 b 45 68 60 -4 45 20 z"},accSagittalFlat25SUp:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 45 -68 b 94 4 45 -20 60 4 b 122 0 102 4 112 3 b 248 -248 176 -14 216 -96 b 399 4 261 -171 297 4 b 449 -68 433 4 449 -20 l 495 -68 b 383 112 495 53 458 112 l 360 112 l 360 517 l 315 517 l 315 89 b 248 -26 287 65 264 27 b 180 89 229 27 206 65 l 180 517 l 135 517 l 135 112 l 112 112 b 0 -68 36 112 0 53 z"},accSagittalSharp7CDown:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 112 l 89 112 b 180 104 124 112 154 109 l 180 -517 l 225 -517 l 225 89 b 315 -68 285 60 315 9 l 315 -248 l 360 -248 l 360 68 b 135 248 360 187 285 248 l 0 248 z"},accSagittalFlat7CUp:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 135 -248 b 360 -68 285 -248 360 -187 l 360 248 l 315 248 l 315 68 b 225 -89 315 -9 285 -60 l 225 517 l 180 517 l 180 -104 b 89 -112 154 -109 124 -112 l 45 -112 l 45 517 l 0 517 z"},accSagittalSharp5CDown:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 45 -517 l 45 71 l 180 -56 l 180 -517 l 225 -517 l 225 -98 l 405 -268 l 405 -112 l 23 248 l 0 248 l 0 -517 z"},accSagittalFlat5CUp:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 0 517 l 0 -248 l 23 -248 l 405 112 l 405 268 l 225 98 l 225 517 l 180 517 l 180 56 l 45 -71 l 45 517 z"},accSagittalSharp5v7kDown:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 0 -112 l 0 -276 l 135 -82 l 135 -517 l 180 -517 l 180 -17 l 271 112 l 315 112 l 315 -517 l 360 -517 l 360 107 b 449 -68 420 89 449 30 l 449 -248 l 495 -248 l 495 68 b 360 248 495 189 449 248 l 248 248 z"},accSagittalFlat5v7kUp:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 248 -248 l 360 -248 b 495 -68 449 -248 495 -189 l 495 248 l 449 248 l 449 68 b 360 -107 449 -30 420 -89 l 360 517 l 315 517 l 315 -112 l 271 -112 l 180 17 l 180 517 l 135 517 l 135 82 l 0 276 l 0 112 z"},accSagittalSharp:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 180 -53 l 180 -517 l 225 -517 l 225 0 l 292 85 l 360 0 l 360 -517 l 405 -517 l 405 -53 l 585 -274 l 585 -112 l 292 248 l 0 -112 l 0 -274 z"},accSagittalFlat:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 274 l 0 112 l 292 -248 l 585 112 l 585 274 l 405 53 l 405 517 l 360 517 l 360 0 l 292 -85 l 225 0 l 225 517 l 180 517 l 180 53 z"},accSagittalSharp5v7kUp:{x_min:0,x_max:312,y_min:-361,y_max:172,ha:533,o:"m 45 -517 l 45 -10 b 135 -92 68 -48 98 -75 l 135 -520 l 180 -520 l 180 -108 b 248 -115 203 -112 225 -115 b 271 -112 256 -115 264 -115 l 271 -517 l 315 -517 l 315 -107 b 449 68 405 -89 449 -30 l 405 68 b 297 -4 405 19 369 -4 b 23 248 131 -4 56 85 l 0 248 l 0 -517 z"},accSagittalFlat5v7kDown:{x_min:0,x_max:312,y_min:-172,y_max:361,ha:533,o:"m 0 517 l 0 -248 l 23 -248 b 297 4 56 -85 131 4 b 405 -68 369 4 405 -19 l 449 -68 b 315 107 449 30 405 89 l 315 517 l 271 517 l 271 112 b 248 115 264 115 256 115 b 180 108 225 115 203 112 l 180 520 l 135 520 l 135 92 b 45 10 98 75 68 48 l 45 517 z"},accSagittalSharp5CUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 -266 l 135 -153 l 135 -517 l 180 -517 l 180 -115 l 271 -39 l 271 -517 l 315 -517 l 315 0 l 405 75 l 405 -517 l 449 -517 l 449 248 l 428 248 l 0 -112 z"},accSagittalFlat5CDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 112 l 428 -248 l 449 -248 l 449 517 l 405 517 l 405 -75 l 315 0 l 315 517 l 271 517 l 271 39 l 180 115 l 180 517 l 135 517 l 135 153 l 0 266 z"},accSagittalSharp7CUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 112 l 135 112 l 135 -517 l 180 -517 l 180 108 b 271 89 213 105 243 99 l 271 -517 l 315 -517 l 315 73 b 405 -68 374 45 405 -3 l 405 -248 l 449 -248 l 449 68 b 135 248 449 187 346 248 l 0 248 z"},accSagittalFlat7CDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 135 -248 b 449 -68 346 -248 449 -187 l 449 248 l 405 248 l 405 68 b 315 -73 405 3 374 -45 l 315 517 l 271 517 l 271 -89 b 180 -108 243 -99 213 -105 l 180 517 l 135 517 l 135 -112 l 45 -112 l 45 517 l 0 517 z"},accSagittalSharp25SUp:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 0 -30 l 495 143 l 495 14 l 0 -157 l 0 -255 l 225 -177 l 225 -517 l 271 -517 l 271 -161 l 360 -130 l 360 -517 l 405 -517 l 405 -115 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 517 248 l 0 68 z"},accSagittalFlat25SDown:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 -68 l 517 -248 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 115 l 405 517 l 360 517 l 360 130 l 271 161 l 271 517 l 225 517 l 225 177 l 0 255 l 0 157 l 495 -14 l 495 -143 l 0 30 z"},accSagittalSharp35MUp:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 0 -112 l 0 -274 l 135 -108 l 135 -517 l 180 -517 l 180 -53 l 271 58 l 271 -517 l 315 -517 l 315 112 l 360 112 b 405 109 376 112 390 112 l 405 -517 l 449 -517 l 449 96 b 540 -68 510 72 540 17 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 z"},accSagittalFlat35MDown:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 292 -248 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 449 -96 540 -17 510 -72 l 449 517 l 405 517 l 405 -109 b 360 -112 390 -112 376 -112 l 315 -112 l 315 517 l 271 517 l 271 -58 l 180 53 l 180 517 l 135 517 l 135 108 l 0 274 l 0 112 z"},accSagittalSharp11MUp:{x_min:0,x_max:469,y_min:-359,y_max:172,ha:531,o:"m 0 -112 l 0 -271 l 180 -79 l 180 -517 l 225 -517 l 225 -30 l 315 65 l 315 -517 l 360 -517 l 360 65 l 449 -30 l 449 -517 l 495 -517 l 495 -79 l 675 -271 l 675 -112 l 337 248 z"},accSagittalFlat11MDown:{x_min:0,x_max:469,y_min:-172,y_max:359,ha:531,o:"m 337 -248 l 675 112 l 675 271 l 495 79 l 495 517 l 449 517 l 449 30 l 360 -65 l 360 517 l 315 517 l 315 -65 l 225 30 l 225 517 l 180 517 l 180 79 l 0 271 l 0 112 z"},accSagittalSharp11LUp:{x_min:0,x_max:469,y_min:-359,y_max:172,ha:531,o:"m 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 112 l 449 112 l 449 -517 l 495 -517 l 495 104 b 631 -68 585 82 631 26 l 631 -248 l 675 -248 l 675 68 b 449 248 675 187 600 248 l 225 248 b 0 68 75 248 0 187 z"},accSagittalFlat11LDown:{x_min:0,x_max:469,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 225 -248 0 -187 75 -248 l 449 -248 b 675 -68 600 -248 675 -187 l 675 248 l 631 248 l 631 68 b 495 -104 631 -26 585 -82 l 495 517 l 449 517 l 449 -112 l 360 -112 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z"},accSagittalSharp35LUp:{x_min:0,x_max:500,y_min:-359,y_max:172,ha:531,o:"m 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 71 l 452 -17 l 452 -517 l 495 -517 l 495 -56 l 720 -268 l 720 -112 l 337 248 l 225 248 b 0 68 75 248 0 187 z"},accSagittalFlat35LDown:{x_min:0,x_max:500,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 l 720 112 l 720 268 l 495 56 l 495 517 l 452 517 l 452 17 l 360 -71 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z"},accSagittalDoubleSharp25SDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 0 68 b 135 -112 0 -53 45 -112 b 243 -62 180 -112 215 -95 l 89 -503 l 143 -517 l 292 -82 l 445 -517 l 495 -503 l 343 -62 b 449 -112 372 -95 408 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 315 148 b 112 -4 274 148 236 -4 b 45 68 68 -4 45 20 z"},accSagittalDoubleFlat25SUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 45 -68 b 112 4 45 -20 68 4 b 292 -248 236 4 274 -148 b 475 4 315 -148 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 b 343 62 408 112 372 95 l 495 503 l 445 517 l 292 82 l 143 517 l 89 503 l 243 62 b 135 112 215 95 180 112 b 0 -68 45 112 0 53 z"},accSagittalDoubleSharp7CDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 0 -503 l 52 -517 l 203 -82 l 354 -517 l 405 -503 l 230 0 l 271 108 b 495 -68 420 92 495 35 l 495 -248 l 540 -248 l 540 68 b 225 248 540 187 435 248 l 89 248 l 89 112 l 135 112 l 174 0 z m 213 112 l 203 82 l 192 112 z"},accSagittalDoubleFlat7CUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 174 0 l 135 -112 l 89 -112 l 89 -248 l 225 -248 b 540 -68 435 -248 540 -187 l 540 248 l 495 248 l 495 68 b 271 -108 495 -35 420 -92 l 230 0 l 405 503 l 354 517 l 203 82 l 52 517 l 0 503 z m 192 -112 l 203 -82 l 213 -112 z"},accSagittalDoubleSharp5CDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 405 -503 l 230 0 l 232 4 l 585 -264 l 585 -112 l 112 248 l 89 248 l 89 112 l 151 68 l 174 0 l 0 -503 l 52 -517 l 203 -82 l 354 -517 z"},accSagittalDoubleFlat5CUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 354 517 l 203 82 l 52 517 l 0 503 l 174 0 l 151 -68 l 89 -112 l 89 -248 l 112 -248 l 585 112 l 585 264 l 232 -4 l 230 0 l 405 503 z"},accSagittalDoubleSharp5v7kDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 0 -274 l 252 35 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 360 112 b 540 -68 480 112 540 53 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 l 0 -112 z"},accSagittalDoubleFlat5v7kUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 112 l 292 -248 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 360 -112 540 -53 480 -112 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 252 -35 l 0 274 z"},accSagittalDoubleSharp:{x_min:0,x_max:469,y_min:-359,y_max:172,ha:531,o:"m 540 -503 l 366 0 l 380 45 l 675 -271 l 675 -112 l 337 248 l 0 -112 l 0 -271 l 295 45 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 z"},accSagittalDoubleFlat:{x_min:0,x_max:469,y_min:-172,y_max:359,ha:531,o:"m 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 295 -45 l 0 271 l 0 112 l 337 -248 l 675 112 l 675 271 l 380 -45 l 366 0 l 540 503 z"},accSagittal7v11KleismaUp:{x_min:0,x_max:219,y_min:-359,y_max:172,ha:531,o:"m 68 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 -45 b 248 -112 200 -89 225 -112 b 315 68 292 -112 315 -53 l 271 68 b 248 -4 271 20 264 -4 b 236 0 245 -4 240 -3 b 157 248 213 14 187 96 b 78 0 127 96 101 14 b 65 -4 73 -3 68 -4 b 45 68 50 -4 45 20 l 0 68 b 68 -112 0 -53 23 -112 z"},accSagittal7v11KleismaDown:{x_min:0,x_max:219,y_min:-172,y_max:359,ha:531,o:"m 68 112 b 0 -68 23 112 0 53 l 45 -68 b 65 4 45 -20 50 4 b 78 0 68 4 73 3 b 157 -248 101 -14 127 -96 b 236 0 187 -96 213 -14 b 248 4 240 3 245 4 b 271 -68 264 4 271 -20 l 315 -68 b 248 112 315 53 292 112 b 180 45 225 112 200 89 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 z"},accSagittal17CommaUp:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 -40 b 315 -118 248 -92 279 -118 b 405 62 374 -118 405 -59 l 360 62 b 324 -10 360 14 348 -10 b 302 -6 318 -10 311 -9 b 206 217 268 9 235 84 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z"},accSagittal17CommaDown:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 206 -217 b 302 6 235 -84 268 -9 b 324 10 311 9 318 10 b 360 -62 348 10 360 -14 l 405 -62 b 315 118 405 59 374 118 b 225 40 279 118 248 92 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z"},accSagittal55CommaUp:{x_min:0,x_max:219,y_min:-359,y_max:172,ha:531,o:"m 0 248 l 0 -517 l 45 -517 l 45 58 l 315 -274 l 315 -112 l 23 248 z"},accSagittal55CommaDown:{x_min:0,x_max:219,y_min:-172,y_max:359,ha:531,o:"m 23 -248 l 315 112 l 315 274 l 45 -58 l 45 517 l 0 517 l 0 -248 z"},accSagittal7v11CommaUp:{x_min:0,x_max:188,y_min:-359,y_max:172,ha:531,o:"m 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 248 l 135 248 b 0 68 45 248 0 187 z"},accSagittal7v11CommaDown:{x_min:0,x_max:188,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 135 -248 0 -187 45 -248 l 271 -248 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z"},accSagittal5v11SmallDiesisUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 73 l 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 -40 b 360 -118 295 -92 325 -118 b 449 62 420 -118 449 -59 l 405 62 b 369 -10 405 14 393 -10 b 348 -6 363 -10 356 -9 b 251 217 312 9 279 84 l 248 248 l 135 248 b 0 73 45 248 0 189 z"},accSagittal5v11SmallDiesisDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 -73 b 135 -248 0 -189 45 -248 l 248 -248 l 251 -217 b 348 6 279 -84 312 -9 b 369 10 356 9 363 10 b 405 -62 393 10 405 -14 l 449 -62 b 360 118 449 59 420 118 b 271 40 325 118 295 92 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z"},accSagittalSharp5v11SDown:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 242 37 203 -23 225 -3 b 315 -89 262 -23 285 -63 l 315 -517 l 360 -517 l 360 -112 l 383 -112 b 495 68 458 -112 495 -53 l 449 68 b 399 -4 449 20 433 -4 b 248 248 297 -4 261 171 b 157 68 222 127 192 68 l 89 68 b 0 -203 30 68 0 -23 z"},accSagittalFlat5v11SUp:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -127 b 399 4 261 -171 297 4 b 449 -68 433 4 449 -20 l 495 -68 b 383 112 495 53 458 112 l 360 112 l 360 517 l 315 517 l 315 89 b 242 -37 285 63 262 23 b 180 23 225 3 203 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z"},accSagittalSharp7v11CDown:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 89 -112 l 89 -517 l 135 -517 l 135 -95 b 206 37 163 -73 187 -30 b 271 -23 225 -3 248 -23 l 271 -517 l 315 -517 l 315 -23 l 383 -23 b 449 -203 428 -23 449 -84 l 495 -203 b 405 68 495 -23 465 68 l 292 68 b 203 248 258 68 228 127 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 20 l 0 68 b 89 -112 0 -52 30 -112 z"},accSagittalFlat7v11CUp:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 89 112 b 0 -68 30 112 0 52 l 45 -68 b 81 3 45 -20 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 b 292 -68 228 -127 258 -68 l 405 -68 b 495 203 465 -68 495 23 l 449 203 b 383 23 449 84 428 23 l 315 23 l 315 517 l 271 517 l 271 23 b 206 -37 248 23 225 3 b 135 95 187 30 163 73 l 135 517 l 89 517 z"},accSagittalSharp55CDown:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -271 l 135 -125 l 135 -517 l 180 -517 l 180 -78 l 315 65 l 315 -517 l 360 -517 l 360 248 l 337 248 l 0 -112 z"},accSagittalFlat55CUp:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 0 112 l 337 -248 l 360 -248 l 360 517 l 315 517 l 315 -65 l 180 78 l 180 517 l 135 517 l 135 125 l 0 271 z"},accSagittalSharp17CDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 45 -248 l 45 -68 b 180 109 45 36 89 95 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -89 292 13 321 -55 l 360 -517 l 405 -517 l 405 -112 l 428 -112 b 540 68 504 -112 540 -53 l 495 68 b 445 -4 495 20 480 -4 b 292 248 343 -4 307 171 l 180 248 b 0 68 60 248 0 187 l 0 -248 z"},accSagittalFlat17CUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 248 l 0 -68 b 180 -248 0 -187 60 -248 l 292 -248 b 445 4 307 -171 343 4 b 495 -68 480 4 495 -20 l 540 -68 b 428 112 540 53 504 112 l 405 112 l 405 517 l 360 517 l 360 89 b 271 -112 321 55 292 -13 l 225 -112 l 225 517 l 180 517 l 180 -109 b 45 68 89 -95 45 -36 l 45 248 z"},accSagittalSharp7v11kDown:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 -32 l 405 138 l 405 13 l 0 -157 l 0 -256 l 225 -161 l 225 -517 l 271 -517 l 271 -144 l 405 -86 l 405 -517 l 449 -517 l 449 248 l 428 248 l 0 68 z"},accSagittalFlat7v11kUp:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 -68 l 428 -248 l 449 -248 l 449 517 l 405 517 l 405 86 l 271 144 l 271 517 l 225 517 l 225 161 l 0 256 l 0 157 l 405 -13 l 405 -138 l 0 32 z"},accSagittalSharp7v11kUp:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 135 -112 l 135 -517 l 180 -517 l 180 -105 b 271 -23 217 -94 248 -65 l 271 -517 l 315 -517 l 315 -23 b 405 -105 337 -65 369 -94 l 405 -517 l 449 -517 l 449 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 315 148 b 112 -4 274 148 236 -4 b 45 68 68 -4 45 20 l 0 68 b 135 -112 0 -53 45 -112 z"},accSagittalFlat7v11kDown:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 135 112 b 0 -68 45 112 0 53 l 45 -68 b 112 4 45 -20 68 4 b 292 -248 236 4 274 -148 b 475 4 315 -148 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 l 449 517 l 405 517 l 405 105 b 315 23 369 94 337 65 l 315 517 l 271 517 l 271 23 b 180 105 248 65 217 94 l 180 517 l 135 517 z"},accSagittalSharp17CUp:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 -23 b 405 -105 337 -65 369 -94 l 405 -517 l 449 -517 l 449 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 312 150 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z"},accSagittalFlat17CDown:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 b 475 4 312 -150 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 l 449 517 l 405 517 l 405 105 b 315 23 369 94 337 65 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z"},accSagittalSharp55CUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 45 -517 l 45 78 l 135 10 l 135 -517 l 180 -517 l 180 -23 l 271 -92 l 271 -517 l 315 -517 l 315 -127 l 495 -264 l 495 -112 l 23 248 l 0 248 l 0 -517 z"},accSagittalFlat55CDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 517 l 0 -248 l 23 -248 l 495 112 l 495 264 l 315 127 l 315 517 l 271 517 l 271 92 l 180 23 l 180 517 l 135 517 l 135 -10 l 45 -78 l 45 517 z"},accSagittalSharp7v11CUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 86 45 6 89 58 l 180 -517 l 225 -517 l 225 98 b 315 109 252 104 282 108 l 315 -517 l 360 -517 l 360 112 l 449 112 l 449 -517 l 495 -517 l 495 248 l 360 248 b 0 68 121 248 0 189 z"},accSagittalFlat7v11CDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 360 -248 0 -189 121 -248 l 495 -248 l 495 517 l 449 517 l 449 -112 l 360 -112 l 360 517 l 315 517 l 315 -109 b 225 -98 282 -108 252 -104 l 225 517 l 180 517 l 180 -86 b 45 68 89 -58 45 -6 l 45 248 l 0 248 z"},accSagittalSharp5v11SUp:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 -23 b 449 -105 383 -65 415 -94 l 449 -517 l 495 -517 l 495 -112 b 631 68 585 -112 631 -53 l 585 68 b 520 -4 585 20 563 -4 b 337 248 396 -4 360 150 l 225 248 b 0 68 76 248 0 187 z"},accSagittalFlat5v11SDown:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 225 -248 0 -187 76 -248 l 337 -248 b 520 4 360 -150 396 4 b 585 -68 563 4 585 -20 l 631 -68 b 495 112 631 53 585 112 l 495 517 l 449 517 l 449 105 b 360 23 415 94 383 65 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z"},accSagittalDoubleSharp5v11SDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 341 -60 b 449 -112 370 -95 405 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 312 150 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z"},accSagittalDoubleFlat5v11SUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 b 475 4 312 -150 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 b 341 60 405 112 370 95 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z"},accSagittalDoubleSharp7v11CDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 112 -112 b 193 -73 143 -112 170 -99 l 45 -501 l 95 -517 l 248 -81 l 397 -517 l 449 -503 l 275 0 l 278 4 b 337 -23 295 -13 315 -23 l 405 -23 b 495 -203 465 -23 495 -84 l 540 -203 b 428 68 540 -23 503 68 l 360 68 b 248 248 310 68 271 127 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 112 -112 0 -52 36 -112 z"},accSagittalDoubleFlat7v11CUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 112 112 b 0 -68 36 112 0 52 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 b 360 -68 271 -127 310 -68 l 428 -68 b 540 203 503 -68 540 23 l 495 203 b 405 23 495 84 465 23 l 337 23 b 278 -4 315 23 295 13 l 275 0 l 449 503 l 397 517 l 248 81 l 95 517 l 45 501 l 193 73 b 112 112 170 99 143 112 z"},accSagittalDoubleSharp55CDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 428 248 l 0 -112 l 0 -266 l 307 -7 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 386 59 l 449 112 l 449 248 z"},accSagittalDoubleFlat55CUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 449 -248 l 449 -112 l 386 -59 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 307 7 l 0 266 l 0 112 l 428 -248 z"},accSagittalDoubleSharp17CDown:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 45 -248 l 45 -68 b 271 112 45 53 120 112 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 387 -62 b 495 -112 416 -95 452 -112 b 631 68 585 -112 631 -53 l 585 68 b 520 -4 585 20 563 -4 b 337 248 396 -4 360 150 l 225 248 b 0 68 76 248 0 187 l 0 -248 z"},accSagittalDoubleFlat17CUp:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 0 248 l 0 -68 b 225 -248 0 -187 76 -248 l 337 -248 b 520 4 360 -150 396 4 b 585 -68 563 4 585 -20 l 631 -68 b 495 112 631 53 585 112 b 387 62 452 112 416 95 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 271 -112 b 45 68 120 -112 45 -53 l 45 248 z"},accSagittalDoubleSharp7v11kDown:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 0 68 l 0 -30 l 366 96 l 399 0 l 392 -23 l 0 -157 l 0 -255 l 353 -135 l 225 -503 l 276 -517 l 428 -82 l 579 -517 l 631 -503 l 455 0 l 507 145 l 540 157 l 540 248 l 517 248 z m 416 115 l 442 124 l 428 82 z"},accSagittalDoubleFlat7v11kUp:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 517 -248 l 540 -248 l 540 -157 l 507 -145 l 455 0 l 631 503 l 579 517 l 428 82 l 276 517 l 225 503 l 353 135 l 0 255 l 0 157 l 392 23 l 399 0 l 366 -96 l 0 30 l 0 -68 z m 428 -82 l 442 -124 l 416 -115 z"},accSagittal23CommaUp:{x_min:0,x_max:188,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 -4 b 68 -23 53 -17 60 -23 l 180 -23 b 225 -203 210 -23 225 -82 l 271 -203 b 206 68 271 -23 248 68 l 89 68 b 23 248 71 68 48 127 l 0 248 z"},accSagittal23CommaDown:{x_min:0,x_max:188,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 23 -248 b 89 -68 48 -127 71 -68 l 206 -68 b 271 203 248 -68 271 23 l 225 203 b 180 23 225 82 210 23 l 68 23 b 45 4 60 23 53 17 l 45 517 l 0 517 z"},accSagittal5v19CommaUp:{x_min:0,x_max:156,y_min:-359,y_max:172,ha:531,o:"m 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 248 l 203 248 b 86 112 151 157 112 112 b 45 157 59 112 45 127 l 0 157 b 76 23 0 72 26 27 l 0 -112 z"},accSagittal5v19CommaDown:{x_min:0,x_max:156,y_min:-172,y_max:359,ha:531,o:"m 0 112 l 76 -23 b 0 -157 26 -27 0 -72 l 45 -157 b 86 -112 45 -127 59 -112 b 203 -248 112 -112 151 -157 l 225 -248 l 225 517 l 180 517 l 180 -33 l 0 284 z"},accSagittal5v23SmallDiesisUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 -4 b 248 -23 233 -17 240 -23 l 360 -23 b 405 -203 390 -23 405 -82 l 449 -203 b 386 68 449 -23 428 68 l 271 68 b 203 248 251 68 228 127 l 0 -112 z"},accSagittal5v23SmallDiesisDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 112 l 203 -248 b 271 -68 228 -127 251 -68 l 386 -68 b 449 203 428 -68 449 23 l 405 203 b 360 23 405 82 390 23 l 248 23 b 225 4 240 23 233 17 l 225 517 l 180 517 l 180 -33 l 0 284 z"},accSagittalSharp5v23SDown:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 6 b 89 -23 59 -13 73 -23 l 180 -23 l 180 -517 l 225 -517 l 225 -23 l 292 -23 b 360 -203 337 -23 360 -84 l 405 -203 b 315 68 405 -23 374 68 l 112 68 b 23 248 78 68 48 127 l 0 248 z"},accSagittalFlat5v23SUp:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 23 -248 b 112 -68 48 -127 78 -68 l 315 -68 b 405 203 374 -68 405 23 l 360 203 b 292 23 360 84 337 23 l 225 23 l 225 517 l 180 517 l 180 23 l 89 23 b 45 -6 73 23 59 13 l 45 517 l 0 517 z"},accSagittalSharp5v19CDown:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 68 b 89 -112 0 -52 30 -112 l 89 -517 l 135 -517 l 135 -95 b 225 112 173 -65 203 4 l 271 112 l 271 -517 l 315 -517 l 315 107 b 405 -68 374 89 405 30 l 405 -248 l 449 -248 l 449 68 b 315 248 449 189 405 248 l 203 248 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 23 z"},accSagittalFlat5v19CUp:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 45 -68 b 81 3 45 -23 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 l 315 -248 b 449 -68 405 -248 449 -189 l 449 248 l 405 248 l 405 68 b 315 -107 405 -30 374 -89 l 315 517 l 271 517 l 271 -112 l 225 -112 b 135 95 203 -4 173 65 l 135 517 l 89 517 l 89 112 b 0 -68 30 112 0 52 z"},accSagittalSharp23CDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 135 -82 l 135 -517 l 180 -517 l 180 -17 l 239 68 b 315 -23 261 7 287 -23 l 315 -517 l 360 -517 l 360 -23 l 428 -23 b 495 -203 472 -23 495 -84 l 540 -203 b 449 68 540 -23 510 68 l 337 68 b 248 248 302 68 271 127 l 0 -112 l 0 -276 z"},accSagittalFlat23CUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 276 l 0 112 l 248 -248 b 337 -68 271 -127 302 -68 l 449 -68 b 540 203 510 -68 540 23 l 495 203 b 428 23 495 84 472 23 l 360 23 l 360 517 l 315 517 l 315 23 b 239 -68 287 23 261 -7 l 180 17 l 180 517 l 135 517 l 135 82 z"},accSagittalSharp23CUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 14 b 112 -23 63 -10 86 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 360 -23 b 449 -203 420 -23 449 -84 l 495 -203 b 383 68 495 -23 458 68 l 135 68 b 23 248 85 68 48 127 l 0 248 z"},accSagittalFlat23CDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 23 -248 b 135 -68 48 -127 85 -68 l 383 -68 b 495 203 458 -68 495 23 l 449 203 b 360 23 449 84 420 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 -14 86 23 63 10 l 45 517 l 0 517 z"},accSagittalSharp5v19CUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 -112 l 0 -266 l 135 -153 l 135 -517 l 180 -517 l 180 -115 l 271 -39 l 271 -517 l 315 -517 l 315 0 l 405 75 l 405 -517 l 449 -517 l 449 248 l 428 248 b 130 68 285 127 186 68 b 45 157 73 68 45 98 l 0 157 b 112 -20 0 53 37 -6 z"},accSagittalFlat5v19CDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 112 20 b 0 -157 37 6 0 -53 l 45 -157 b 130 -68 45 -98 73 -68 b 428 -248 186 -68 285 -127 l 449 -248 l 449 517 l 405 517 l 405 -75 l 315 0 l 315 517 l 271 517 l 271 39 l 180 115 l 180 517 l 135 517 l 135 153 l 0 266 l 0 112 z"},accSagittalSharp5v23SUp:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 135 -108 l 135 -517 l 180 -517 l 180 -53 l 271 58 l 271 -517 l 315 -517 l 315 14 b 383 -23 334 -10 357 -23 l 405 -23 l 405 -517 l 449 -517 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 405 68 b 292 248 356 68 318 127 l 0 -112 l 0 -274 z"},accSagittalFlat5v23SDown:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 274 l 0 112 l 292 -248 b 405 -68 318 -127 356 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 449 517 l 405 517 l 405 23 l 383 23 b 315 -14 357 23 334 10 l 315 517 l 271 517 l 271 -58 l 180 53 l 180 517 l 135 517 l 135 108 z"},accSagittalDoubleSharp5v23SDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 52 -517 l 203 -81 l 354 -517 l 405 -503 l 239 -23 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 225 68 b 112 248 176 68 138 127 l 89 248 l 89 112 b 170 -14 109 45 135 0 l 0 -501 z"},accSagittalDoubleFlat5v23SUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 501 l 170 14 b 89 -112 135 0 109 -45 l 89 -248 l 112 -248 b 225 -68 138 -127 176 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 239 23 l 405 503 l 354 517 l 203 81 l 52 517 z"},accSagittalDoubleSharp5v19CDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 0 68 b 112 -112 0 -52 36 -112 b 193 -73 143 -112 170 -99 l 45 -501 l 95 -517 l 248 -81 l 397 -517 l 449 -501 l 275 0 l 315 112 b 495 -68 435 112 495 53 l 495 -248 l 540 -248 l 540 68 b 360 248 540 189 480 248 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 z"},accSagittalDoubleFlat5v19CUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 360 -248 b 540 -68 480 -248 540 -189 l 540 248 l 495 248 l 495 68 b 315 -112 495 -53 435 -112 l 275 0 l 449 501 l 397 517 l 248 81 l 95 517 l 45 501 l 193 73 b 112 112 170 99 143 112 b 0 -68 36 112 0 52 z"},accSagittalDoubleSharp23CDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 252 35 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 323 4 b 383 -23 340 -13 360 -23 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 405 68 b 292 248 356 68 318 127 l 0 -112 l 0 -274 z"},accSagittalDoubleFlat23CUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 274 l 0 112 l 292 -248 b 405 -68 318 -127 356 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 383 23 b 323 -4 360 23 340 13 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 252 -35 z"},accSagittal19SchismaUp:{x_min:0,x_max:125,y_min:-359,y_max:172,ha:531,o:"m 68 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 248 l 157 248 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 l 0 68 b 68 -112 0 -52 23 -112 z"},accSagittal19SchismaDown:{x_min:0,x_max:125,y_min:-172,y_max:359,ha:531,o:"m 68 112 b 0 -68 23 112 0 52 l 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 l 180 -248 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 z"},accSagittal17KleismaUp:{x_min:0,x_max:156,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 248 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z"},accSagittal17KleismaDown:{x_min:0,x_max:156,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 225 -248 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z"},accSagittal143CommaUp:{x_min:0,x_max:156,y_min:-359,y_max:172,ha:531,o:"m 0 -203 l 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 248 l 203 248 b 135 68 177 127 154 68 l 105 68 b 45 157 65 68 45 98 l 0 157 b 23 20 0 95 7 50 b 0 -203 7 -23 0 -98 z"},accSagittal143CommaDown:{x_min:0,x_max:156,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 23 -20 0 98 7 23 b 0 -157 7 -50 0 -95 l 45 -157 b 105 -68 45 -98 65 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 225 -248 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z"},accSagittal11v49CommaUp:{x_min:0,x_max:188,y_min:-359,y_max:172,ha:531,o:"m 45 -292 b 89 -157 45 -203 60 -157 l 203 -157 b 225 -143 210 -157 217 -153 l 225 -517 l 271 -517 l 271 248 l 248 248 b 180 157 233 187 210 157 l 68 157 b 0 -68 23 157 0 82 l 45 -68 b 89 68 45 23 60 68 l 203 68 b 225 84 209 68 216 72 l 225 -36 b 180 -68 213 -58 199 -68 l 68 -68 b 0 -292 23 -68 0 -143 z"},accSagittal11v49CommaDown:{x_min:0,x_max:188,y_min:-172,y_max:359,ha:531,o:"m 0 292 b 68 68 0 143 23 68 l 180 68 b 225 36 199 68 213 58 l 225 -84 b 203 -68 216 -72 209 -68 l 89 -68 b 45 68 60 -68 45 -23 l 0 68 b 68 -157 0 -82 23 -157 l 180 -157 b 248 -248 210 -157 233 -187 l 271 -248 l 271 517 l 225 517 l 225 143 b 203 157 217 153 210 157 l 89 157 b 45 292 60 157 45 203 z"},accSagittal19CommaUp:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 0 68 b 68 -112 0 -52 23 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 -4 b 203 -23 187 -17 196 -23 l 315 -23 b 360 -203 346 -23 360 -82 l 405 -203 b 341 68 405 -23 383 68 l 225 68 b 157 248 206 68 183 127 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 z"},accSagittal19CommaDown:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 b 225 -68 183 -127 206 -68 l 341 -68 b 405 203 383 -68 405 23 l 360 203 b 315 23 360 82 346 23 l 203 23 b 180 4 196 23 187 17 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 b 0 -68 23 112 0 52 z"},accSagittal7v19CommaUp:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 68 b 68 -112 0 -52 23 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 112 l 225 112 b 315 -68 285 112 315 53 l 315 -248 l 360 -248 l 360 68 b 271 248 360 187 330 248 l 157 248 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 z"},accSagittal7v19CommaDown:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 l 271 -248 b 360 -68 330 -248 360 -187 l 360 248 l 315 248 l 315 68 b 225 -112 315 -53 285 -112 l 180 -112 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 b 0 -68 23 112 0 52 z"},accSagittal49SmallDiesisUp:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 0 -203 l 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -68 330 112 360 53 l 360 -248 l 405 -248 l 405 68 b 315 248 405 187 374 248 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z"},accSagittal49SmallDiesisDown:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 315 -248 b 405 -68 374 -248 405 -187 l 405 248 l 360 248 l 360 68 b 271 -112 360 -53 330 -112 l 225 -112 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z"},accSagittal23SmallDiesisUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 58 l 495 -274 l 495 -112 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z"},accSagittal23SmallDiesisDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 495 112 l 495 274 l 225 -58 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z"},accSagittal5v13MediumDiesisUp:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -259 l 315 -89 l 315 -517 l 360 -517 l 360 248 l 337 248 b 128 180 253 203 184 180 b 45 248 73 180 45 203 l 0 248 b 52 95 0 170 17 120 l 0 68 l 0 -33 l 315 135 l 315 10 l 0 -157 z"},accSagittal5v13MediumDiesisDown:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 0 157 l 315 -10 l 315 -135 l 0 33 l 0 -68 l 52 -95 b 0 -248 17 -120 0 -170 l 45 -248 b 128 -180 45 -203 73 -180 b 337 -248 184 -180 253 -203 l 360 -248 l 360 517 l 315 517 l 315 89 l 0 259 z"},accSagittal11v19MediumDiesisUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 -4 b 292 -23 278 -17 285 -23 l 405 -23 b 449 -203 435 -23 449 -82 l 495 -203 b 431 68 495 -23 472 68 l 315 68 b 248 248 295 68 271 127 l 135 248 b 0 68 45 248 0 187 l 0 -248 z"},accSagittal11v19MediumDiesisDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 248 l 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 b 315 -68 271 -127 295 -68 l 431 -68 b 495 203 472 -68 495 23 l 449 203 b 405 23 449 82 435 23 l 292 23 b 271 4 285 23 278 17 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 z"},accSagittal49MediumDiesisUp:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -68 l 0 -248 l 45 -248 l 315 -94 l 315 -517 l 360 -517 l 360 248 l 225 248 b 0 -68 75 248 0 143 z m 45 -68 b 225 112 45 53 105 112 l 315 112 l 315 10 l 45 -145 z"},accSagittal49MediumDiesisDown:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 0 68 b 225 -248 0 -143 75 -248 l 360 -248 l 360 517 l 315 517 l 315 94 l 45 248 l 0 248 z m 45 145 l 315 -10 l 315 -112 l 225 -112 b 45 68 105 -112 45 -53 z"},accSagittal5v49MediumDiesisUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 0 -89 l 0 -248 l 225 53 l 225 -517 l 271 -517 l 271 53 l 495 -248 l 495 -89 l 248 248 b 89 89 170 143 118 89 b 45 157 60 89 45 112 l 0 157 b 68 3 0 68 23 16 z"},accSagittal5v49MediumDiesisDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 68 -3 b 0 -157 23 -16 0 -68 l 45 -157 b 89 -89 45 -112 60 -89 b 248 -248 118 -89 170 -143 l 495 89 l 495 248 l 271 -53 l 271 517 l 225 517 l 225 -53 l 0 248 l 0 89 z"},accSagittal49LargeDiesisUp:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 -89 l 360 -248 l 405 -248 l 405 -68 b 180 248 405 143 330 248 l 0 248 z m 45 12 l 45 112 l 180 112 b 360 -68 300 112 360 53 l 360 -147 z"},accSagittal49LargeDiesisDown:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 180 -248 b 405 68 330 -248 405 -143 l 405 248 l 360 248 l 45 89 l 45 517 l 0 517 z m 360 147 l 360 68 b 180 -112 360 -53 300 -112 l 45 -112 l 45 -12 z"},accSagittal11v19LargeDiesisUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 -86 l 449 -256 l 449 -157 l 45 13 l 45 138 l 449 -30 l 449 68 l 23 248 l 0 248 z"},accSagittal11v19LargeDiesisDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 23 -248 l 449 -68 l 449 30 l 45 -138 l 45 -13 l 449 157 l 449 256 l 45 86 l 45 517 l 0 517 z"},accSagittal5v13LargeDiesisUp:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 0 68 b 89 -112 0 -52 30 -112 b 180 -35 125 -112 157 -86 l 180 -517 l 225 -517 l 225 -86 l 631 -256 l 631 -157 l 225 13 l 225 138 l 631 -30 l 631 68 l 203 248 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 20 z"},accSagittal5v13LargeDiesisDown:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 45 -68 b 81 3 45 -20 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 l 631 -68 l 631 30 l 225 -138 l 225 -13 l 631 157 l 631 256 l 225 86 l 225 517 l 180 517 l 180 35 b 89 112 157 86 125 112 b 0 -68 30 112 0 52 z"},accSagittalSharp23SDown:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -203 l 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 b 315 6 287 -23 301 -13 l 315 -517 l 360 -517 l 360 248 l 337 248 b 248 68 312 127 282 68 l 194 68 b 89 157 125 68 89 98 l 45 157 b 60 59 45 118 50 85 b 0 -203 20 30 0 -56 z"},accSagittalFlat23SUp:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 60 -59 0 56 20 -30 b 45 -157 50 -85 45 -118 l 89 -157 b 194 -68 89 -98 125 -68 l 248 -68 b 337 -248 282 -68 312 -127 l 360 -248 l 360 517 l 315 517 l 315 -6 b 271 23 301 13 287 23 l 180 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z"},accSagittalSharp49SDown:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -292 l 45 -292 b 112 -157 45 -203 68 -157 l 135 -157 l 135 -517 l 180 -517 l 180 -157 l 271 -157 b 315 -135 285 -157 300 -150 l 315 -517 l 360 -517 l 360 248 l 337 248 b 248 157 323 187 292 157 l 89 157 b 0 -68 30 157 0 82 l 45 -68 b 112 68 45 23 68 68 l 271 68 b 315 89 284 68 300 75 l 315 -32 b 248 -68 298 -56 275 -68 l 89 -68 b 0 -292 29 -68 0 -143 z"},accSagittalFlat49SUp:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 0 292 b 89 68 0 143 29 68 l 248 68 b 315 32 275 68 298 56 l 315 -89 b 271 -68 300 -75 284 -68 l 112 -68 b 45 68 68 -68 45 -23 l 0 68 b 89 -157 0 -82 30 -157 l 248 -157 b 337 -248 292 -157 323 -187 l 360 -248 l 360 517 l 315 517 l 315 135 b 271 157 300 150 285 157 l 180 157 l 180 517 l 135 517 l 135 157 l 112 157 b 45 292 68 157 45 203 z"},accSagittalSharp7v19CDown:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -112 l 0 -271 l 135 -125 l 135 -517 l 180 -517 l 180 -78 l 315 65 l 315 -517 l 360 -517 l 360 248 l 337 248 b 118 89 239 143 166 89 b 45 157 68 89 45 112 l 0 157 b 89 -20 0 53 29 -6 z"},accSagittalFlat7v19CUp:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 89 20 b 0 -157 29 6 0 -53 l 45 -157 b 118 -89 45 -112 68 -89 b 337 -248 166 -89 239 -143 l 360 -248 l 360 517 l 315 517 l 315 -65 l 180 78 l 180 517 l 135 517 l 135 125 l 0 271 l 0 112 z"},accSagittalSharp19CDown:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 0 -248 l 45 -248 l 45 -68 b 180 96 45 17 89 72 l 180 -517 l 225 -517 l 225 107 b 315 112 252 112 282 112 l 360 112 l 360 -517 l 405 -517 l 405 248 l 271 248 b 0 68 89 248 0 187 z"},accSagittalFlat19CUp:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 271 -248 0 -187 89 -248 l 405 -248 l 405 517 l 360 517 l 360 -112 l 315 -112 b 225 -107 282 -112 252 -112 l 225 517 l 180 517 l 180 -96 b 45 68 89 -72 45 -17 l 45 248 l 0 248 z"},accSagittalSharp11v49CDown:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 112 -23 45 -82 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 271 112 215 -23 245 23 l 315 112 l 315 -517 l 360 -517 l 360 107 b 449 -68 420 89 449 30 l 449 -248 l 495 -248 l 495 68 b 360 248 495 189 449 248 l 248 248 b 157 68 222 128 192 68 l 89 68 b 0 -203 30 68 0 -23 z"},accSagittalFlat11v49CUp:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -128 l 360 -248 b 495 -68 449 -248 495 -189 l 495 248 l 449 248 l 449 68 b 360 -107 449 -30 420 -89 l 360 517 l 315 517 l 315 -112 l 271 -112 b 180 23 245 -23 215 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 82 z"},accSagittalSharp143CDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 259 76 210 -23 236 10 l 315 17 l 315 -517 l 360 -517 l 360 -30 l 585 -271 l 585 -112 l 248 248 b 157 68 222 127 192 68 l 89 68 b 0 -203 30 68 0 -23 z"},accSagittalFlat143CUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -127 l 585 112 l 585 271 l 360 30 l 360 517 l 315 517 l 315 -17 l 259 -76 b 180 23 236 -10 210 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z"},accSagittalSharp17kDown:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 -157 l 0 -256 l 225 -161 l 225 -517 l 271 -517 l 271 -144 l 405 -86 l 405 -517 l 449 -517 l 449 248 l 428 248 b 145 171 305 196 210 171 b 45 248 78 171 45 196 l 0 248 b 79 101 0 170 26 121 l 0 68 l 0 -32 l 405 138 l 405 13 z"},accSagittalFlat17kUp:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 405 -13 l 405 -138 l 0 32 l 0 -68 l 79 -101 b 0 -248 26 -121 0 -170 l 45 -248 b 145 -171 45 -196 78 -171 b 428 -248 210 -171 305 -196 l 449 -248 l 449 517 l 405 517 l 405 86 l 271 144 l 271 517 l 225 517 l 225 161 l 0 256 l 0 157 z"},accSagittalSharp19sDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 0 -248 l 45 -248 l 45 -68 b 180 109 45 36 89 95 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -23 295 23 325 -23 l 360 -517 l 405 -517 l 405 -23 l 472 -23 b 540 -203 517 -23 540 -84 l 585 -203 b 495 68 585 -23 554 68 l 383 68 b 292 248 348 68 318 127 l 180 248 b 0 68 60 248 0 187 z"},accSagittalFlat19sUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 180 -248 0 -187 60 -248 l 292 -248 b 383 -68 318 -127 348 -68 l 495 -68 b 585 203 554 -68 585 23 l 540 203 b 472 23 540 84 517 23 l 405 23 l 405 517 l 360 517 l 360 23 b 271 -112 325 23 295 -23 l 225 -112 l 225 517 l 180 517 l 180 -109 b 45 68 89 -95 45 -36 l 45 248 l 0 248 z"},accSagittalSharp19sUp:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 89 -96 l 89 -517 l 135 -517 l 135 -108 b 180 -112 148 -112 163 -112 b 225 -108 196 -112 210 -112 l 225 -517 l 271 -517 l 271 -94 b 360 -12 305 -78 337 -50 l 360 -517 l 405 -517 l 405 248 l 383 248 b 190 0 353 98 288 16 b 138 -3 171 0 153 -3 b 45 68 75 -3 45 20 l 0 68 b 89 -96 0 -17 30 -72 z"},accSagittalFlat19sDown:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 89 96 b 0 -68 30 72 0 17 l 45 -68 b 138 3 45 -20 75 3 b 190 0 153 3 171 0 b 383 -248 288 -16 353 -98 l 405 -248 l 405 517 l 360 517 l 360 12 b 271 94 337 50 305 78 l 271 517 l 225 517 l 225 108 b 180 112 210 112 196 112 b 135 108 163 112 148 112 l 135 517 l 89 517 z"},accSagittalSharp17kUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 337 -23 b 405 14 363 -23 386 -10 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 68 402 127 364 68 l 112 68 b 0 -203 37 68 0 -23 z"},accSagittalFlat17kDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 112 -68 0 23 37 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 517 l 405 517 l 405 -14 b 337 23 386 10 363 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z"},accSagittalSharp143CUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 337 -23 b 405 14 363 -23 386 -10 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 68 402 127 364 68 l 240 68 b 89 157 140 68 89 98 l 45 157 b 68 53 45 115 52 81 b 0 -203 23 23 0 -63 z"},accSagittalFlat143CDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 68 -53 0 63 23 -23 b 45 -157 52 -81 45 -115 l 89 -157 b 240 -68 89 -98 140 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 517 l 405 517 l 405 -14 b 337 23 386 10 363 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z"},accSagittalSharp11v49CUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 45 -68 b 135 68 45 23 76 68 l 337 68 b 405 95 363 68 386 76 l 405 -27 b 315 -68 386 -55 356 -68 l 112 -68 b 0 -292 37 -68 0 -143 l 45 -292 b 135 -157 45 -203 75 -157 l 135 -517 l 180 -517 l 180 -157 l 271 -157 l 271 -517 l 315 -517 l 315 -157 l 337 -157 b 405 -130 360 -157 383 -148 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 157 413 187 376 157 l 112 157 b 0 -68 37 157 0 82 z"},accSagittalFlat11v49CDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 68 b 112 -157 0 -82 37 -157 l 315 -157 b 428 -248 376 -157 413 -187 l 449 -248 l 449 517 l 405 517 l 405 130 b 337 157 383 148 360 157 l 315 157 l 315 517 l 271 517 l 271 157 l 180 157 l 180 517 l 135 517 l 135 157 b 45 292 75 157 45 203 l 0 292 b 112 68 0 143 37 68 l 315 68 b 405 27 356 68 386 55 l 405 -95 b 337 -68 386 -76 363 -68 l 135 -68 b 45 68 76 -68 45 -23 z"},accSagittalSharp19CUp:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 14 b 337 -23 289 -10 311 -23 l 360 -23 l 360 -517 l 405 -517 l 405 -23 b 495 -203 465 -23 495 -82 l 540 -203 b 428 68 540 -23 503 68 l 360 68 b 248 248 310 68 271 128 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z"},accSagittalFlat19CDown:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 b 360 -68 271 -128 310 -68 l 428 -68 b 540 203 503 -68 540 23 l 495 203 b 405 23 495 82 465 23 l 405 517 l 360 517 l 360 23 l 337 23 b 271 -14 311 23 289 10 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z"},accSagittalSharp7v19CUp:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 112 l 315 112 b 360 109 331 112 346 112 l 360 -517 l 405 -517 l 405 98 b 495 -68 465 73 495 19 l 495 -248 l 540 -248 l 540 68 b 360 248 540 189 480 248 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z"},accSagittalFlat7v19CDown:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 360 -248 b 540 -68 480 -248 540 -189 l 540 248 l 495 248 l 495 68 b 405 -98 495 -19 465 -73 l 405 517 l 360 517 l 360 -109 b 315 -112 346 -112 331 -112 l 271 -112 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z"},accSagittalSharp49SUp:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 112 l 360 112 b 405 109 376 112 390 112 l 405 -517 l 449 -517 l 449 96 b 540 -68 510 72 540 17 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z"},accSagittalFlat49SDown:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 449 -96 540 -17 510 -72 l 449 517 l 405 517 l 405 -109 b 360 -112 390 -112 376 -112 l 315 -112 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z"},accSagittalSharp23SUp:{x_min:0,x_max:469,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 71 l 405 -14 l 405 -517 l 449 -517 l 449 -56 l 675 -268 l 675 -112 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z"},accSagittalFlat23SDown:{x_min:0,x_max:469,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 675 112 l 675 268 l 449 56 l 449 517 l 405 517 l 405 14 l 315 -71 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z"},accSagittalSharp5v13MUp:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 495 141 l 495 14 l 0 -157 l 0 -256 l 225 -180 l 225 -517 l 271 -517 l 271 -161 l 360 -130 l 360 -517 l 405 -517 l 405 -115 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 517 248 b 167 168 366 194 248 168 b 45 248 85 168 45 194 l 0 248 b 95 99 0 170 30 120 l 0 68 l 0 -30 z"},accSagittalFlat5v13MDown:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 30 l 0 -68 l 95 -99 b 0 -248 30 -120 0 -170 l 45 -248 b 167 -168 45 -194 85 -168 b 517 -248 248 -168 366 -194 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 115 l 405 517 l 360 517 l 360 130 l 271 161 l 271 517 l 225 517 l 225 180 l 0 256 l 0 157 l 495 -14 l 495 -141 z"},accSagittalSharp11v19MUp:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 14 b 428 -23 379 -10 402 -23 l 449 -23 l 449 -517 l 495 -517 l 495 -23 b 585 -203 554 -23 585 -84 l 631 -203 b 517 68 631 -23 593 68 l 449 68 b 337 248 400 68 363 127 l 225 248 b 0 68 75 248 0 187 z"},accSagittalFlat11v19MDown:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 b 449 -68 363 -127 400 -68 l 517 -68 b 631 203 593 -68 631 23 l 585 203 b 495 23 585 84 554 23 l 495 517 l 449 517 l 449 23 l 428 23 b 360 -14 402 23 379 10 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z"},accSagittalSharp49MUp:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 0 -248 l 45 -248 l 225 -180 l 225 -517 l 271 -517 l 271 -166 l 360 -132 l 360 -517 l 405 -517 l 405 -117 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 360 248 b 0 -68 120 248 0 143 z m 45 -145 l 45 -68 b 360 112 45 53 150 112 l 495 112 l 495 14 z"},accSagittalFlat49MDown:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 68 b 360 -248 0 -143 120 -248 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 117 l 405 517 l 360 517 l 360 132 l 271 166 l 271 517 l 225 517 l 225 180 l 45 248 l 0 248 z m 495 -14 l 495 -112 l 360 -112 b 45 68 150 -112 45 -53 l 45 145 z"},accSagittalSharp5v49MUp:{x_min:0,x_max:469,y_min:-359,y_max:172,ha:531,o:"m 0 -271 l 180 -79 l 180 -517 l 225 -517 l 225 -30 l 315 65 l 315 -517 l 360 -517 l 360 65 l 449 -30 l 449 -517 l 495 -517 l 495 -79 l 675 -271 l 675 -112 l 337 248 b 118 89 239 143 166 89 b 45 157 68 89 45 112 l 0 157 b 107 0 0 62 36 10 l 0 -112 z"},accSagittalFlat5v49MDown:{x_min:0,x_max:469,y_min:-172,y_max:359,ha:531,o:"m 0 112 l 107 0 b 0 -157 36 -10 0 -62 l 45 -157 b 118 -89 45 -112 68 -89 b 337 -248 166 -89 239 -143 l 675 112 l 675 271 l 495 79 l 495 517 l 449 517 l 449 30 l 360 -65 l 360 517 l 315 517 l 315 -65 l 225 30 l 225 517 l 180 517 l 180 79 l 0 271 z"},accSagittalSharp49LUp:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 -82 l 135 -112 l 135 -517 l 180 -517 l 180 -127 l 271 -157 l 271 -517 l 315 -517 l 315 -173 l 540 -248 l 585 -248 l 585 -68 b 180 248 585 143 449 248 l 0 248 z m 45 112 l 180 112 b 540 -68 420 112 540 53 l 540 -145 l 45 16 z"},accSagittalFlat49LDown:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 180 -248 b 585 68 449 -248 585 -143 l 585 248 l 540 248 l 315 173 l 315 517 l 271 517 l 271 157 l 180 127 l 180 517 l 135 517 l 135 112 l 45 82 l 45 517 l 0 517 z m 45 -16 l 540 145 l 540 68 b 180 -112 540 -53 420 -112 l 45 -112 z"},accSagittalSharp11v19LUp:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 -81 l 135 -108 l 135 -517 l 180 -517 l 180 -121 l 271 -148 l 271 -517 l 315 -517 l 315 -161 l 631 -255 l 631 -157 l 45 16 l 45 144 l 631 -30 l 631 68 l 23 248 l 0 248 z"},accSagittalFlat11v19LDown:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 23 -248 l 631 -68 l 631 30 l 45 -144 l 45 -16 l 631 157 l 631 255 l 315 161 l 315 517 l 271 517 l 271 148 l 180 121 l 180 517 l 135 517 l 135 108 l 45 81 l 45 517 l 0 517 z"},accSagittalSharp5v13LUp:{x_min:0,x_max:500,y_min:-359,y_max:172,ha:531,o:"m 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 -85 l 360 -120 l 360 -517 l 405 -517 l 405 -135 l 720 -256 l 720 -157 l 271 14 l 271 141 l 720 -30 l 720 68 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z"},accSagittalFlat5v13LDown:{x_min:0,x_max:500,y_min:-172,y_max:359,ha:531,o:"m 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 720 -68 l 720 30 l 271 -141 l 271 -14 l 720 157 l 720 256 l 405 135 l 405 517 l 360 517 l 360 120 l 271 85 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z"},accSagittalDoubleSharp23SDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 0 -203 l 45 -203 b 135 -23 45 -82 76 -23 l 301 -23 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 370 -14 b 449 112 423 10 449 53 l 449 248 l 428 248 b 315 68 402 127 364 68 l 240 68 b 89 157 140 68 89 98 l 45 157 b 68 53 45 115 52 81 b 0 -203 23 23 0 -63 z"},accSagittalDoubleFlat23SUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 68 -53 0 63 23 -23 b 45 -157 52 -81 45 -115 l 89 -157 b 240 -68 89 -98 140 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 -112 b 370 14 449 -53 423 -10 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 301 23 l 135 23 b 45 203 76 23 45 82 z"},accSagittalDoubleSharp49SDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 0 -292 l 45 -292 b 112 -157 45 -203 68 -157 l 256 -157 l 135 -503 l 187 -517 l 337 -82 l 490 -517 l 540 -503 l 366 0 l 396 89 b 449 157 416 102 435 125 l 449 248 l 428 248 b 315 157 413 187 376 157 l 112 157 b 0 -68 39 157 0 82 l 45 -68 b 135 68 45 23 76 68 l 287 68 l 311 0 l 288 -68 l 89 -68 b 0 -292 32 -68 0 -144 z"},accSagittalDoubleFlat49SUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 292 b 89 68 0 144 32 68 l 288 68 l 311 0 l 287 -68 l 135 -68 b 45 68 76 -68 45 -23 l 0 68 b 112 -157 0 -82 39 -157 l 315 -157 b 428 -248 376 -157 413 -187 l 449 -248 l 449 -157 b 396 -89 435 -125 416 -102 l 366 0 l 540 503 l 490 517 l 337 82 l 187 517 l 135 503 l 256 157 l 112 157 b 45 292 68 157 45 203 z"},accSagittalDoubleSharp7v19CDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 0 -112 l 0 -266 l 307 -7 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 386 59 l 449 112 l 449 248 l 428 248 b 130 68 285 127 186 68 b 45 157 73 68 45 98 l 0 157 b 112 -20 0 53 37 -6 z"},accSagittalDoubleFlat7v19CUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 112 20 b 0 -157 37 6 0 -53 l 45 -157 b 130 -68 45 -98 73 -68 b 428 -248 186 -68 285 -127 l 449 -248 l 449 -112 l 386 -59 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 307 7 l 0 266 l 0 112 z"},accSagittalDoubleSharp19CDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 0 68 l 0 -248 l 45 -248 l 45 -68 b 315 109 45 36 135 95 l 354 0 l 180 -503 l 232 -517 l 383 -82 l 534 -517 l 585 -503 l 410 0 l 449 112 l 495 112 l 495 248 l 360 248 b 0 68 120 248 0 187 z m 372 112 l 393 112 l 383 82 z"},accSagittalDoubleFlat19CUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 360 -248 0 -187 120 -248 l 495 -248 l 495 -112 l 449 -112 l 410 0 l 585 503 l 534 517 l 383 82 l 232 517 l 180 503 l 354 0 l 315 -109 b 45 68 135 -95 45 -36 l 45 248 l 0 248 z m 383 -82 l 393 -112 l 372 -112 z"},accSagittalDoubleSharp11v49CDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 360 112 b 540 -68 480 112 540 53 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z"},accSagittalDoubleFlat11v49CUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 360 -112 540 -53 480 -112 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z"},accSagittalDoubleSharp143CDown:{x_min:0,x_max:469,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 337 49 l 675 -268 l 675 -112 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z"},accSagittalDoubleFlat143CUp:{x_min:0,x_max:469,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 675 112 l 675 268 l 337 -49 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z"},accSagittalDoubleSharp17kDown:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 0 248 b 95 101 0 170 30 121 l 0 68 l 0 -30 l 364 96 l 399 0 l 390 -23 l 0 -157 l 0 -255 l 353 -135 l 225 -503 l 275 -517 l 428 -82 l 577 -517 l 631 -503 l 455 0 l 507 145 l 540 157 l 540 248 l 517 248 b 167 168 366 194 248 168 b 45 248 85 168 45 194 z m 416 115 l 442 124 l 428 82 z"},accSagittalDoubleFlat17kUp:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 45 -248 b 167 -168 45 -194 85 -168 b 517 -248 248 -168 366 -194 l 540 -248 l 540 -157 l 507 -145 l 455 0 l 631 503 l 577 517 l 428 82 l 275 517 l 225 503 l 353 135 l 0 255 l 0 157 l 390 23 l 399 0 l 364 -96 l 0 30 l 0 -68 l 95 -101 b 0 -248 30 -121 0 -170 z m 428 -82 l 442 -124 l 416 -115 z"},accSagittalDoubleSharp19sDown:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 0 -248 l 45 -248 l 45 -68 b 271 112 45 53 120 112 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 367 4 b 428 -23 386 -13 405 -23 l 495 -23 b 585 -203 554 -23 585 -84 l 631 -203 b 517 68 631 -23 593 68 l 449 68 b 337 248 400 68 363 127 l 225 248 b 0 68 75 248 0 187 z"},accSagittalDoubleFlat19sUp:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 b 449 -68 363 -127 400 -68 l 517 -68 b 631 203 593 -68 631 23 l 585 203 b 495 23 585 84 554 23 l 428 23 b 367 -4 405 23 386 13 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 271 -112 b 45 68 120 -112 45 -53 l 45 248 l 0 248 z"},accSagittalShaftUp:{x_min:0,x_max:31,y_min:-359,y_max:172,ha:531,o:"m 0 112 l 0 -517 l 45 -517 l 45 112 l 23 248 z"},accSagittalShaftDown:{x_min:0,x_max:31,y_min:-172,y_max:359,ha:531,o:"m 23 -248 l 45 -112 l 45 517 l 0 517 l 0 -112 z"},accSagittalAcute:{x_min:0,x_max:125,y_min:-62,y_max:125,ha:187,o:"m 0 0 l 0 -89 l 180 89 l 180 180 z"},accSagittalGrave:{x_min:0,x_max:125,y_min:-125,y_max:62,ha:187,o:"m 180 -180 l 180 -89 l 0 89 l 0 0 z"},accSagittal1MinaUp:{x_min:-7,x_max:124,y_min:16,y_max:106.31676725154982,ha:90.31676725154982,o:"m -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 134 150 179 112 163 135 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z"},accSagittal1MinaDown:{x_min:-7,x_max:124,y_min:-106.31676725154983,y_max:-16,ha:90.31676725154983,o:"m -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 179 -23 163 -135 179 -112 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z"},accSagittal2MinasUp:{x_min:-7,x_max:218,y_min:16,y_max:106.31676725154982,ha:90.31676725154982,o:"m -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 269 150 314 112 298 135 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z"},accSagittal2MinasDown:{x_min:-7,x_max:218,y_min:-106.31676725154983,y_max:-16,ha:90.31676725154983,o:"m -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z"},accSagittal1TinaUp:{x_min:0,x_max:93,y_min:16,y_max:107,ha:91,o:"m 134 154 l 91 154 b 81 76 91 101 91 86 b 0 68 73 69 48 68 l 0 23 b 134 154 122 23 134 36 z"},accSagittal1TinaDown:{x_min:0,x_max:93,y_min:-107,y_max:-16,ha:91,o:"m 134 -154 b 0 -23 134 -36 122 -23 l 0 -68 b 81 -76 48 -68 73 -69 b 91 -154 91 -86 91 -101 z"},accSagittal2TinasUp:{x_min:0,x_max:94,y_min:16,y_max:107,ha:91,o:"m 135 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z"},accSagittal2TinasDown:{x_min:0,x_max:94,y_min:-107,y_max:-16,ha:91,o:"m 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 z"},accSagittal3TinasUp:{x_min:-7,x_max:124,y_min:16,y_max:106.31676725154982,ha:90.31676725154982,o:"m -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 134 150 179 112 163 135 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z"},accSagittal3TinasDown:{x_min:-7,x_max:124,y_min:-106.31676725154983,y_max:-16,ha:90.31676725154983,o:"m -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 179 -23 163 -135 179 -112 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z"},accSagittal4TinasUp:{x_min:0,x_max:187,y_min:16,y_max:106.69999999999997,ha:90.69999999999997,o:"m 0 68 l 0 23 b 143 45 105 23 124 26 b 203 107 153 55 183 107 b 226 23 216 107 226 86 l 269 23 b 225 150 269 112 253 135 b 160 132 207 158 181 153 b 115 81 138 112 124 88 b 0 68 104 71 94 68 z"},accSagittal4TinasDown:{x_min:0,x_max:187,y_min:-106.69999999999999,y_max:-16,ha:90.69999999999999,o:"m 0 -68 b 115 -81 94 -68 104 -71 b 160 -132 124 -88 138 -112 b 225 -150 181 -153 207 -158 b 269 -23 253 -135 269 -112 l 226 -23 b 203 -107 226 -86 216 -107 b 143 -45 183 -107 153 -55 b 0 -23 124 -26 105 -23 z"},accSagittal5TinasUp:{x_min:0,x_max:218,y_min:16,y_max:107,ha:91,o:"m 135 23 b 187 45 156 23 168 26 b 249 107 197 55 228 107 b 271 23 262 107 271 86 l 314 23 b 269 150 314 112 298 135 b 204 132 252 158 226 153 b 160 81 183 112 168 88 b 135 68 148 71 147 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z"},accSagittal5TinasDown:{x_min:0,x_max:218,y_min:-107,y_max:-16,ha:91,o:"m 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 b 160 -81 147 -68 148 -71 b 204 -132 168 -88 183 -112 b 269 -150 226 -153 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 249 -107 271 -86 262 -107 b 187 -45 228 -107 197 -55 b 135 -23 168 -26 156 -23 z"},accSagittal6TinasUp:{x_min:-7,x_max:218,y_min:16,y_max:106.31676725154982,ha:90.31676725154982,o:"m -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 269 150 314 112 298 135 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z"},accSagittal6TinasDown:{x_min:-7,x_max:218,y_min:-106.31676725154983,y_max:-16,ha:90.31676725154983,o:"m -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z"},accSagittal7TinasUp:{x_min:0,x_max:281,y_min:16,y_max:106.69999999999997,ha:90.69999999999997,o:"m 0 68 l 0 23 b 143 45 105 23 124 26 b 203 107 153 55 183 107 b 226 23 216 107 226 86 l 269 23 b 298 65 269 23 291 55 b 343 107 314 86 331 107 b 361 23 354 107 363 86 l 405 23 b 360 150 405 112 389 135 b 294 130 343 158 311 150 b 264 92 281 115 272 104 b 225 150 258 127 245 140 b 160 132 207 158 181 153 b 115 81 138 112 124 88 b 0 68 104 71 94 68 z"},accSagittal7TinasDown:{x_min:0,x_max:281,y_min:-106.69999999999999,y_max:-16,ha:90.69999999999999,o:"m 0 -68 b 115 -81 94 -68 104 -71 b 160 -132 124 -88 138 -112 b 225 -150 181 -153 207 -158 b 264 -92 245 -140 258 -127 b 294 -130 272 -104 281 -115 b 360 -150 311 -150 343 -158 b 405 -23 389 -135 405 -112 l 361 -23 b 343 -107 363 -86 354 -107 b 298 -65 331 -107 314 -86 b 269 -23 291 -55 269 -23 l 226 -23 b 203 -107 226 -86 216 -107 b 143 -45 183 -107 153 -55 b 0 -23 124 -26 105 -23 z"},accSagittal8TinasUp:{x_min:0,x_max:312,y_min:16,y_max:107,ha:91,o:"m 135 23 b 187 45 156 23 168 26 b 249 107 197 55 228 107 b 271 23 262 107 271 86 l 314 23 b 343 65 314 23 336 55 b 387 107 359 86 376 107 b 406 23 399 107 408 86 l 449 23 b 405 150 449 112 433 135 b 338 130 387 158 356 150 b 308 92 325 115 317 104 b 269 150 302 127 289 140 b 204 132 252 158 226 153 b 160 81 183 112 168 88 b 135 68 148 71 147 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z"},accSagittal8TinasDown:{x_min:0,x_max:312,y_min:-107,y_max:-16,ha:91,o:"m 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 b 160 -81 147 -68 148 -71 b 204 -132 168 -88 183 -112 b 269 -150 226 -153 252 -158 b 308 -92 289 -140 302 -127 b 338 -130 317 -104 325 -115 b 405 -150 356 -150 387 -158 b 449 -23 433 -135 449 -112 l 406 -23 b 387 -107 408 -86 399 -107 b 343 -65 376 -107 359 -86 b 314 -23 336 -55 314 -23 l 271 -23 b 249 -107 271 -86 262 -107 b 187 -45 228 -107 197 -55 b 135 -23 168 -26 156 -23 z"},accSagittal9TinasUp:{x_min:-7,x_max:312,y_min:16,y_max:106.31676725154982,ha:90.31676725154982,o:"m -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 343 65 314 23 336 55 b 387 107 359 86 376 107 b 406 23 399 107 408 86 l 449 23 b 405 150 449 112 433 135 b 338 130 387 158 356 150 b 308 92 325 115 317 104 b 269 150 302 127 289 140 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z"},accSagittal9TinasDown:{x_min:-7,x_max:312,y_min:-106.31676725154983,y_max:-16,ha:90.31676725154983,o:"m -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 308 -92 289 -140 302 -127 b 338 -130 317 -104 325 -115 b 405 -150 356 -150 387 -158 b 449 -23 433 -135 449 -112 l 406 -23 b 387 -107 408 -86 399 -107 b 343 -65 376 -107 359 -86 b 314 -23 336 -55 314 -23 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z"},accSagittalFractionalTinaUp:{x_min:-3,x_max:35,y_min:73,y_max:111,ha:38,o:"m -4 132 b 23 105 -4 118 9 105 b 50 132 37 105 50 118 b 23 160 50 147 37 160 b -4 132 9 160 -4 147 z"},accSagittalFractionalTinaDown:{x_min:-3,x_max:35,y_min:-111,y_max:-73,ha:38,o:"m -4 -132 b 23 -160 -4 -147 9 -160 b 50 -132 37 -160 50 -147 b 23 -105 50 -118 37 -105 b -4 -132 9 -105 -4 -118 z"},accidentalNarrowReversedFlat:{x_min:0,x_max:164,y_min:-194,y_max:421,ha:615,o:"m 236 -279 l 236 606 l 192 606 l 192 179 b 85 243 150 222 114 243 b 0 84 23 243 0 134 b 112 -158 0 3 37 -78 z m 192 112 l 192 -163 l 135 -98 b 82 40 101 -50 82 -3 b 138 144 82 73 96 144 b 192 112 153 144 170 132 z"},accidentalNarrowReversedFlatAndFlat:{x_min:0,x_max:414,y_min:-194,y_max:421,ha:615,o:"m 281 606 l 281 -268 l 438 -158 b 596 84 547 -82 596 3 b 475 243 596 154 556 243 b 325 179 435 243 384 222 l 325 606 z m 235 -279 l 235 606 l 190 606 l 190 179 b 85 243 148 222 114 243 b 12 158 52 243 27 215 b 0 84 3 134 0 108 b 112 -158 0 3 37 -78 z m 325 111 b 410 144 359 132 386 144 b 498 36 462 144 498 84 b 413 -107 498 -9 469 -58 l 325 -173 z m 192 112 l 192 -163 l 135 -98 b 81 40 99 -50 81 -3 b 91 94 81 59 84 76 b 137 144 102 127 118 144 b 192 112 153 144 170 132 z"},accidentalWilsonPlus:{x_min:0,x_max:281,y_min:-203,y_max:203,ha:406,o:"m 405 268 l 225 98 l 225 292 l 180 292 l 180 56 l 0 -112 l 0 -268 l 180 -98 l 180 -292 l 225 -292 l 225 -56 l 405 112 z"},accidentalWilsonMinus:{x_min:0,x_max:281,y_min:-186,y_max:186,ha:372,o:"m 0 112 l 405 -268 l 405 -112 l 0 268 z"}},fontFamily:"Bravura",resolution:1e3,generatedOn:"2022-06-26T17:36:54.186Z"},Pi={name:"Bravura",smufl:!0,stave:{padding:12,endPaddingMax:10,endPaddingMin:5,unalignedNotePadding:10},accidental:{noteheadAccidentalPadding:1,leftPadding:2,accidentalSpacing:3},clef:{default:{point:32,width:26},small:{point:26,width:20},annotations:{"8va":{smuflCode:"timeSig8",default:{point:18,treble:{line:-1.4,shiftX:12}},small:{point:16,treble:{line:-.2,shiftX:8}}},"8vb":{smuflCode:"timeSig8",default:{point:18,treble:{line:6,shiftX:10},bass:{line:3.5,shiftX:1}},small:{point:16,treble:{line:5.3,shiftX:6},bass:{line:3.1,shiftX:.5}}}},lineCount:{8:{point:55,shiftY:14},7:{point:47,shiftY:8},6:{point:32,shiftY:1},5:{point:30,shiftY:-6},4:{point:23,shiftY:-12}}},parenthesis:{default:{point:39,width:7},gracenote:{point:23.4,width:3}},pedalMarking:{up:{point:40},down:{point:34}},digits:{shiftLine:-1,point:34,tupletPoint:22,shiftY:-6},articulation:{articStaccatissimoAbove:{padding:2},articStaccatissimoBelow:{padding:2}},tremolo:{default:{point:25,spacing:5,offsetYStemUp:-5,offsetYStemDown:5,offsetXStemUp:11,offsetXStemDown:1},grace:{point:18,spacing:4,offsetYStemUp:-5,offsetYStemDown:5,offsetXStemUp:7,offsetXStemDown:1}},staveRepetition:{symbolText:{offsetX:12,offsetY:25,spacing:5},coda:{offsetY:25},segno:{offsetY:10}},stem:{heightAdjustmentForFlag:-3,noteHead:{noteheadTriangleUpHalf:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpBlack:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpWhole:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadXHalf:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXBlack:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXWhole:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadHalf:{offsetYBaseStemUp:-2.55,offsetYBaseStemDown:2.65},noteheadBlack:{offsetYBaseStemUp:-2,offsetYBaseStemDown:2},noteheadSquareWhite:{offsetYBaseStemDown:-5,offsetYBaseStemUp:5}}},glyphs:{coda:{point:20,shiftX:-7,shiftY:8},segno:{shiftX:-7},flag:{shiftX:-.75,staveTempo:{shiftX:-1}},clef:{gClef:{default:{scale:1.1,shiftY:1},small:{shiftY:1.5}},fClef:{default:{shiftY:-.5}}},ornament:{ornamentTurn:{scale:1.2},ornamentTurnSlash:{scale:1.2}},stringNumber:{verticalPadding:8,stemPadding:2,leftPadding:5,rightPadding:6},stroke:{arrowheadBlackDown:{straight:{shiftX:-4.5},wiggly:{shiftX:-1,shiftY:1}},arrowheadBlackUp:{straight:{shiftX:-.85},wiggly:{shiftX:-1,shiftY:1}}},textNote:{point:34,breathMarkTick:{point:36,shiftY:9},breathMarkComma:{point:36},segno:{point:30,shiftX:-7,shiftY:8},coda:{point:20,shiftX:-7,shiftY:8},ornamentTrill:{shiftX:-8,shiftY:8},ornamentTurn:{point:42},ornamentTurnSlash:{point:42},ornamentMordent:{shiftX:-8},ornamentShortTrill:{shiftX:-8}},noteHead:{minPadding:2,standard:{restQuarterStemUp:{point:35},restQuarterStemDown:{point:35}},custom:{noteheadCircleXStemUp:{shiftX:1.5},noteheadCircleXStemDown:{shiftX:.25},noteheadDiamondHalfStemUp:{shiftX:1.5},noteheadDiamondBlackStemUp:{shiftX:1.5},noteheadDiamondWholeStemUp:{shiftX:1},noteheadXHalfStemUp:{shiftX:-2},noteheadXHalfStemDown:{shiftX:1},noteheadXWholeStemUp:{shiftX:-4},noteheadXWholeStemDown:{shiftX:1},noteheadXDoubleWholeStemUp:{shiftX:-4},noteheadXDoubleWholeStemDown:{shiftX:1},noteheadSquareWhiteStemDown:{shiftX:.25},noteheadSquareWhiteStemUp:{shiftX:-.75},noteheadSquareBlackStemUp:{shiftX:-.75},noteheadTriangleUpWholeStemUp:{shiftX:-.75}}},chordSymbol:{global:{superscriptOffset:-400,subscriptOffset:300,kerningOffset:-250,lowerKerningText:["D","F","P","T","V","Y"],upperKerningText:["A","L"],spacing:100,superSubRatio:.66},csymDiminished:{scale:.8,leftSideBearing:-32,advanceWidth:506,yOffset:0},csymHalfDiminished:{scale:.8,leftSideBearing:-32,advanceWidth:506,yOffset:0},csymAugmented:{scale:1,leftSideBearing:0,advanceWidth:530,yOffset:0},csymParensLeftTall:{scale:.8,leftSideBearing:-20,advanceWidth:184,yOffset:250},csymParensRightTall:{scale:.8,leftSideBearing:0,advanceWidth:189,yOffset:250},csymBracketLeftTall:{scale:.8,leftSideBearing:0,advanceWidth:328,yOffset:0},csymBracketRightTall:{scale:.8,leftSideBearing:1,advanceWidth:600,yOffset:0},csymParensLeftVeryTall:{scale:.9,leftSideBearing:50,advanceWidth:121,yOffset:350},csymParensRightVeryTall:{scale:.9,leftSideBearing:0,advanceWidth:111,yOffset:350},csymDiagonalArrangementSlash:{scale:.6,leftSideBearing:-1,advanceWidth:990,yOffset:0},csymMinor:{scale:.8,leftSideBearing:0,advanceWidth:482,yOffset:0},csymMajorSeventh:{scale:.9,leftSideBearing:200,yOffset:0,advanceWidth:600},accidentalSharp:{scale:.75,leftSideBearing:20,advanceWidth:250,yOffset:-302},accidentalFlat:{scale:.9,leftSideBearing:-20,advanceWidth:226,yOffset:-184}},jazzOrnaments:{brassScoop:{scale:1,xOffset:-12,yOffset:0,stemUpYOffset:0,reportedWidth:20},brassDoitMedium:{scale:1,xOffset:16,yOffset:0,stemUpYOffset:0,reportedWidth:22},brassFallLipShort:{scale:1,xOffset:16,yOffset:0,stemUpYOffset:0,reportedWidth:15},brassLiftMedium:{scale:1,xOffset:16,yOffset:5,stemUpYOffset:0,reportedWidth:5},brassFallRoughMedium:{scale:1,xOffset:16,yOffset:28,stemUpYOffset:0,reportedWidth:5},brassBend:{scale:1,xOffset:2,yOffset:-8,stemUpYOffset:25,reportedWidth:5},brassMuteClosed:{scale:1,xOffset:3,yOffset:-8,stemUpYOffset:25,reportedWidth:5},brassMuteOpen:{scale:1,xOffset:3,yOffset:-7,stemUpYOffset:25,reportedWidth:5},brassFlip:{scale:1,xOffset:10,yOffset:0,stemUpYOffset:7,reportedWidth:10},brassJazzTurn:{scale:1,xOffset:0,yOffset:0,stemUpYOffset:8,reportedWidth:31},brassSmear:{scale:1,xOffset:10,yOffset:0,stemUpYOffset:8,reportedWidth:5}},tuplet:{noteHeadOffset:20,stemOffset:10,bottomLine:4,topModifierOffset:15}}};const Mi={resolution:1e3,fontFamily:"VexFlowCustom",glyphs:{noteheadSquareWhite:{x_min:0,x_max:430.75,ha:386,o:"m 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 l 50 150 l 380 150 l 380 -150 l 50 -150 l 50 150 "},noteheadSquareBlack:{x_min:0,x_max:430.75,ha:386,o:"m 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 "},accidentalBuyukMucennebFlat:{x_min:-171.5,x_max:251.8125,ha:257,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 "},accidentalBakiyeFlat:{x_min:-176.9375,x_max:251.8125,ha:257,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 "},accidentalKucukMucennebSharp:{x_min:-1.359375,x_max:255.890625,ha:261,o:"m 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 "},accidentalKoron:{x_min:-20,x_max:320,ha:257,o:"m -8 200 b -8 210 8 200 16 200 l 20 148 -199 l 23 -615 b 0 -629 9 -629 6 -629 l -21 -612 l -21 -201 l -21 216 l -20 200 m 16 200 l 310 0 l 240 0 l 16 140 l 16 -120 l 240 0 l 310 0 l 16 -200 "},accidentalSori:{x_min:-10.890625,x_max:299.4375,ha:294,o:"m 44 174 b 51 174 47 174 49 174 b 68 173 55 174 61 174 l 287 112 l 551 40 b 615 20 617 22 609 23 b 626 0 622 16 626 8 b 615 -22 626 -9 622 -18 b 613 -23 613 -23 613 -23 b 613 -23 613 -23 613 -23 b 287 -113 613 -24 597 -29 l 68 -174 b 53 -176 61 -176 57 -176 b 39 -172 47 -176 43 -174 b 27 -151 31 -167 27 -159 b 39 -129 27 -141 31 -133 b 230 -74 43 -124 20 -131 l 370 -36 l 468 -9 b 498 0 484 -4 498 -1 b 468 8 498 0 484 2 l 370 34 l 230 73 b 40 126 28 129 43 124 b 27 149 31 131 27 140 b 44 174 27 161 34 170 m 205 110 l 205 300 b 205 330 245 330 245 300 l 245 300 l 245 -300 b 245 -330 205 -330 205 -300 l 205 -300 l 205 110 l 345 90 m 345 90 l 345 330 b 345 360 385 360 385 330 l 385 330 l 385 -270 b 385 -300 345 -300 345 -270 l 345 -270 l 345 90 "},vexAccidentalMicrotonal2:{x_min:-1.359375,x_max:386.5625,ha:394,o:"m 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 "},vexAccidentalMicrotonal3:{x_min:0,x_max:430.75,ha:360,o:"m -146 537 b -138 538 -143 538 -141 538 b -118 525 -129 538 -121 533 b -117 390 -117 522 -117 521 b -115 259 -117 268 -117 259 b -115 259 -115 259 -115 259 b -59 272 -104 263 -62 272 b -39 259 -50 272 -42 267 b -37 209 -38 257 -37 233 b -39 159 -37 185 -38 162 b -85 138 -43 149 -44 149 l -117 131 l -117 21 b -115 -88 -117 -80 -117 -88 b -115 -88 -115 -88 -115 -88 b -59 -75 -104 -84 -62 -75 b -44 -81 -52 -75 -48 -77 b -38 -124 -38 -87 -38 -85 b -38 -138 -38 -124 -38 -138 b -38 -152 -38 -138 -38 -152 b -44 -195 -38 -191 -38 -190 b -85 -209 -48 -200 -48 -200 l -117 -217 l -117 -349 b -118 -486 -117 -481 -117 -482 b -138 -499 -121 -494 -129 -499 b -153 -493 -143 -499 -149 -497 b -159 -415 -158 -487 -159 -496 b -159 -355 -159 -398 -159 -379 b -159 -227 -159 -284 -159 -227 b -205 -238 -159 -227 -180 -232 b -250 -249 -230 -244 -250 -249 b -251 -386 -251 -249 -251 -311 b -252 -525 -251 -521 -251 -522 b -272 -538 -255 -534 -264 -538 b -287 -532 -277 -538 -283 -536 b -293 -452 -292 -527 -293 -536 b -293 -391 -293 -436 -293 -415 b -294 -260 -293 -269 -293 -260 b -294 -260 -294 -260 -294 -260 b -348 -272 -306 -264 -345 -272 b -368 -259 -357 -272 -365 -267 b -369 -209 -369 -257 -369 -233 b -368 -159 -369 -185 -369 -162 b -323 -139 -364 -149 -362 -148 l -293 -131 l -293 -22 b -294 87 -293 80 -293 87 b -294 87 -294 87 -294 87 b -348 75 -306 84 -345 75 b -368 88 -357 75 -365 80 b -369 138 -369 91 -369 114 b -368 188 -369 162 -369 186 b -323 209 -364 198 -362 199 l -293 216 l -293 349 b -292 486 -293 481 -293 482 b -272 499 -288 494 -280 499 b -257 493 -266 499 -261 497 b -251 414 -251 487 -251 496 b -251 354 -251 398 -251 378 b -251 226 -251 284 -251 226 b -205 238 -250 226 -230 231 b -159 249 -180 244 -159 249 b -159 385 -159 249 -159 310 b -157 525 -159 521 -159 522 b -146 537 -156 530 -151 535 z m -159 11 b -159 120 -159 98 -159 120 l -159 120 b -175 116 -160 120 -167 119 b -221 105 -184 114 -204 109 l -251 98 l -251 -12 b -251 -121 -251 -72 -251 -121 b -205 -110 -250 -121 -230 -116 b -159 -99 -180 -104 -159 -99 b -159 11 -159 -99 -159 -49 z m 89 517 b 97 519 92 518 94 519 b 117 505 106 519 114 513 b 119 376 119 502 119 501 l 119 249 l 145 258 b 176 267 169 266 172 267 b 177 267 176 267 177 267 b 196 255 186 267 192 263 l 197 252 l 197 205 b 197 181 197 195 197 187 b 193 149 197 153 197 153 b 152 131 190 144 187 143 l 119 120 l 119 10 b 119 -100 119 -62 119 -100 b 145 -91 120 -100 131 -96 b 173 -82 159 -86 171 -82 b 176 -81 174 -81 175 -81 b 196 -94 185 -81 193 -87 b 198 -151 197 -97 198 -125 b 197 -194 198 -172 197 -192 b 153 -218 193 -203 192 -204 l 119 -230 l 119 -367 l 118 -504 l 117 -507 b 97 -519 113 -514 105 -519 b 82 -512 92 -519 87 -517 b 76 -434 77 -507 76 -516 b 76 -374 76 -418 76 -398 b 76 -245 76 -303 76 -245 b 52 -254 76 -245 65 -249 b 19 -263 34 -260 25 -263 b 6 -257 13 -263 10 -261 b 0 -214 0 -251 0 -253 b 0 -200 0 -210 0 -205 b 0 -188 0 -196 0 -192 b 6 -143 0 -147 0 -149 b 46 -126 10 -139 10 -139 l 76 -115 l 76 -5 b 76 106 76 56 76 106 b 51 98 76 106 64 102 b 18 89 34 92 25 89 b 6 95 13 89 10 91 b 0 139 0 101 0 99 b 0 153 0 143 0 148 b 0 179 0 163 0 172 b 44 225 0 215 3 211 l 76 236 l 76 369 b 78 505 76 501 76 502 b 89 517 80 510 85 515 z "},vexAccidentalMicrotonal4:{x_min:0,x_max:430.75,ha:360,o:"m 283 633 b 291 634 286 634 289 634 b 311 621 300 634 308 629 b 313 505 313 618 313 617 b 313 393 313 443 313 393 b 378 425 313 393 343 407 l 443 458 l 448 458 b 449 458 449 458 449 458 b 471 437 462 458 471 448 b 469 429 471 434 470 432 b 387 382 466 421 469 423 l 313 344 l 313 247 l 313 150 l 315 152 b 433 201 353 184 394 201 b 479 193 448 201 464 198 b 549 86 524 177 549 135 b 526 1 549 59 541 29 b 395 -143 504 -39 475 -71 b 316 -214 351 -182 341 -191 b 292 -229 302 -228 300 -229 b 272 -216 283 -229 275 -224 b 271 55 271 -212 271 -212 b 270 323 271 203 270 323 b 205 291 270 323 241 308 l 140 258 l 135 258 b 134 258 135 258 134 258 b 112 279 121 258 112 267 b 114 287 112 281 113 284 b 196 334 117 295 114 293 l 271 371 l 271 495 b 272 621 271 617 271 618 b 283 633 274 626 279 631 z m 404 133 b 391 134 400 134 395 134 b 384 134 388 134 386 134 b 318 88 358 130 335 114 l 313 81 l 313 -37 l 313 -156 l 316 -152 b 439 83 391 -71 439 22 l 439 84 b 404 133 439 115 430 128 z m -8 633 l -8 633 b 0 634 -6 634 -3 634 b 20 621 8 634 17 629 b 21 384 21 618 21 617 l 21 150 l 24 152 b 141 201 62 184 102 201 b 187 193 157 201 172 198 b 257 86 232 177 257 135 b 234 1 257 59 250 29 b 103 -143 212 -39 183 -71 b 24 -214 60 -182 49 -191 b 0 -229 10 -228 8 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 203 l -21 618 l -20 621 b -8 633 -18 626 -13 631 z m 113 133 l 113 133 b 99 134 109 134 103 134 b 93 134 97 134 94 134 b 26 88 66 130 43 114 l 21 81 l 21 -37 l 21 -156 l 25 -152 b 148 83 99 -71 148 22 l 148 84 b 113 133 148 115 138 128 z "},vexNoteHeadRectBlack:{x_min:0,x_max:430.75,ha:360,o:"m 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 "},vexNoteHeadRectWhite:{x_min:0,x_max:430.75,ha:360,o:"m 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 l 50 100 l 380 100 l 380 -100 l 50 -100 l 50 100"}}},Bi={name:"VexFlowCustom",smufl:!1,glyphs:{}};const Ri={spacing:50,glyphs:{" ":{x_min:0,x_max:250,y_min:0,y_max:500,ha:500,leftSideBearing:0,advanceWidth:250},0:{x_min:33,x_max:534,y_min:-13,y_max:751,ha:764,leftSideBearing:33,advanceWidth:570},1:{x_min:48,x_max:235,y_min:-17,y_max:734,ha:751,leftSideBearing:48,advanceWidth:286},2:{x_min:56,x_max:571,y_min:-19,y_max:741,ha:760,leftSideBearing:56,advanceWidth:626},3:{x_min:50,x_max:528,y_min:-7,y_max:731,ha:738,leftSideBearing:50,advanceWidth:589},4:{x_min:38,x_max:564,y_min:-13,y_max:743,ha:756,leftSideBearing:38,advanceWidth:614},5:{x_min:42,x_max:601,y_min:-34,y_max:743,ha:777,leftSideBearing:42,advanceWidth:648},6:{x_min:47,x_max:606,y_min:-16,y_max:743,ha:759,leftSideBearing:47,advanceWidth:667},7:{x_min:47,x_max:567,y_min:5,y_max:739,ha:734,leftSideBearing:0,advanceWidth:615},8:{x_min:40,x_max:541,y_min:-15,y_max:752,ha:767,leftSideBearing:40,advanceWidth:585},9:{x_min:40,x_max:537,y_min:-52,y_max:736,ha:788,leftSideBearing:40,advanceWidth:592},"!":{x_min:49,x_max:180,y_min:-7,y_max:761,ha:768,leftSideBearing:49,advanceWidth:230},'"':{x_min:39,x_max:304,y_min:596,y_max:804,ha:208,leftSideBearing:39,advanceWidth:353},"#":{x_min:33,x_max:599,y_min:-8,y_max:765,ha:773,leftSideBearing:33,advanceWidth:648},$:{x_min:53,x_max:495,y_min:-111,y_max:823,ha:934,leftSideBearing:53,advanceWidth:560},"%":{x_min:35,x_max:656,y_min:-128,y_max:808,ha:936,leftSideBearing:35,advanceWidth:711},"&":{x_min:53,x_max:441,y_min:-3,y_max:753,ha:756,leftSideBearing:53,advanceWidth:500},"'":{x_min:43,x_max:161,y_min:590,y_max:811,ha:221,leftSideBearing:43,advanceWidth:217},"(":{x_min:41,x_max:311,y_min:-36,y_max:845,ha:881,leftSideBearing:41,advanceWidth:308},")":{x_min:-8,x_max:257,y_min:-21,y_max:852,ha:873,leftSideBearing:-8,advanceWidth:280},"*":{x_min:59,x_max:539,y_min:175,y_max:589,ha:414,leftSideBearing:59,advanceWidth:601},"+":{x_min:33,x_max:361,y_min:180,y_max:587,ha:407,leftSideBearing:33,advanceWidth:400},",":{x_min:15,x_max:176,y_min:-129,y_max:92,ha:221,leftSideBearing:15,advanceWidth:205},"-":{x_min:40,x_max:380,y_min:317,y_max:452,ha:135,leftSideBearing:40,advanceWidth:422},".":{x_min:48,x_max:185,y_min:-56,y_max:84,ha:140,leftSideBearing:48,advanceWidth:227},"/":{x_min:-58,x_max:654,y_min:-122,y_max:844,ha:966,leftSideBearing:-58,advanceWidth:626},":":{x_min:65,x_max:225,y_min:97,y_max:536,ha:439,leftSideBearing:65,advanceWidth:302},";":{x_min:13,x_max:295,y_min:-139,y_max:536,ha:675,leftSideBearing:13,advanceWidth:334},"<":{x_min:28,x_max:438,y_min:-1,y_max:607,ha:608,leftSideBearing:28,advanceWidth:475},"=":{x_min:40,x_max:383,y_min:199.9598640852289,y_max:541,ha:341.0401359147711,leftSideBearing:40,advanceWidth:422},">":{x_min:35,x_max:421,y_min:28,y_max:632,ha:604,leftSideBearing:35,advanceWidth:466},"?":{x_min:45,x_max:548,y_min:-17,y_max:767,ha:784,leftSideBearing:45,advanceWidth:592},"@":{x_min:51,x_max:730,y_min:-78,y_max:753,ha:831,leftSideBearing:51,advanceWidth:781},A:{x_min:37,x_max:554,y_min:-4,y_max:746,ha:750,leftSideBearing:37,advanceWidth:617},B:{x_min:37,x_max:532,y_min:3,y_max:783,ha:780,leftSideBearing:37,advanceWidth:579},C:{x_min:37,x_max:583,y_min:-3,y_max:775,ha:778,leftSideBearing:37,advanceWidth:623},D:{x_min:50,x_max:530,y_min:-15,y_max:749,ha:764,leftSideBearing:50,advanceWidth:579},E:{x_min:45,x_max:531,y_min:-1,y_max:743,ha:744,leftSideBearing:45,advanceWidth:585},F:{x_min:45,x_max:459,y_min:23,y_max:727,ha:704,leftSideBearing:45,advanceWidth:510},G:{x_min:31,x_max:577,y_min:-8,y_max:733,ha:741,leftSideBearing:31,advanceWidth:611},H:{x_min:37,x_max:493,y_min:-22,y_max:758,ha:780,leftSideBearing:37,advanceWidth:535},I:{x_min:47,x_max:501,y_min:-3,y_max:731,ha:734,leftSideBearing:47,advanceWidth:541},J:{x_min:33,x_max:531,y_min:-23,y_max:725,ha:748,leftSideBearing:33,advanceWidth:573},K:{x_min:43,x_max:505,y_min:-10,y_max:740,ha:750,leftSideBearing:43,advanceWidth:560},L:{x_min:49,x_max:457,y_min:-2,y_max:746,ha:748,leftSideBearing:49,advanceWidth:510},M:{x_min:35,x_max:699,y_min:1,y_max:744,ha:743,leftSideBearing:35,advanceWidth:743},N:{x_min:34,x_max:533,y_min:-17,y_max:761,ha:778,leftSideBearing:34,advanceWidth:579},O:{x_min:41,x_max:608,y_min:-5,y_max:735,ha:740,leftSideBearing:41,advanceWidth:667},P:{x_min:53,x_max:451,y_min:-18,y_max:735,ha:753,leftSideBearing:53,advanceWidth:497},Q:{x_min:40,x_max:599,y_min:-67,y_max:744,ha:811,leftSideBearing:40,advanceWidth:648},R:{x_min:39,x_max:487,y_min:16,y_max:735,ha:719,leftSideBearing:39,advanceWidth:535},S:{x_min:35,x_max:552,y_min:-47,y_max:708,ha:755,leftSideBearing:35,advanceWidth:604},T:{x_min:26,x_max:656,y_min:-13,y_max:718,ha:731,leftSideBearing:26,advanceWidth:705},U:{x_min:41,x_max:518,y_min:-20,y_max:748,ha:768,leftSideBearing:41,advanceWidth:567},V:{x_min:47,x_max:509,y_min:-26,y_max:744,ha:770,leftSideBearing:47,advanceWidth:567},W:{x_min:44,x_max:789,y_min:-35,y_max:720,ha:755,leftSideBearing:44,advanceWidth:833},X:{x_min:63,x_max:635,y_min:-10,y_max:745,ha:755,leftSideBearing:63,advanceWidth:680},Y:{x_min:43,x_max:503,y_min:-21,y_max:734,ha:755,leftSideBearing:43,advanceWidth:541},Z:{x_min:42,x_max:584,y_min:-10,y_max:739,ha:749,leftSideBearing:42,advanceWidth:629},"[":{x_min:46,x_max:346,y_min:-150,y_max:884,ha:1034,leftSideBearing:46,advanceWidth:291},"\\":{x_min:20,x_max:616,y_min:-100,y_max:797,ha:897,leftSideBearing:20,advanceWidth:645},"]":{x_min:-76,x_max:226,y_min:-150,y_max:881,ha:1031,leftSideBearing:-76,advanceWidth:297},"^":{x_min:43,x_max:437,y_min:517,y_max:812,ha:295,leftSideBearing:43,advanceWidth:478},_:{x_min:29,x_max:563,y_min:-110,y_max:-1,ha:109,leftSideBearing:29,advanceWidth:598},"`":{x_min:54,x_max:321,y_min:540,y_max:747,ha:207,leftSideBearing:54,advanceWidth:368},a:{x_min:20,x_max:447,y_min:-17,y_max:495,ha:512,leftSideBearing:20,advanceWidth:494},b:{x_min:37,x_max:466,y_min:-27,y_max:770,ha:797,leftSideBearing:37,advanceWidth:510},c:{x_min:35,x_max:456,y_min:-9,y_max:507,ha:516,leftSideBearing:35,advanceWidth:460},d:{x_min:45,x_max:520,y_min:-15,y_max:764,ha:779,leftSideBearing:45,advanceWidth:560},e:{x_min:33,x_max:370,y_min:-5,y_max:501,ha:506,leftSideBearing:33,advanceWidth:397},f:{x_min:35,x_max:411,y_min:-13,y_max:695,ha:708,leftSideBearing:35,advanceWidth:453},g:{x_min:33,x_max:551,y_min:-257,y_max:505,ha:762,leftSideBearing:33,advanceWidth:611},h:{x_min:32,x_max:458,y_min:-29,y_max:743,ha:772,leftSideBearing:32,advanceWidth:491},i:{x_min:45,x_max:167,y_min:-13,y_max:631,ha:644,leftSideBearing:45,advanceWidth:220},j:{x_min:-127,x_max:261,y_min:-231,y_max:601,ha:832,leftSideBearing:-127,advanceWidth:308},k:{x_min:39,x_max:443,y_min:-3,y_max:700,ha:703,leftSideBearing:39,advanceWidth:497},l:{x_min:58,x_max:168,y_min:-8,y_max:686,ha:694,leftSideBearing:58,advanceWidth:227},m:{x_min:39,x_max:688,y_min:-14,y_max:501,ha:515,leftSideBearing:39,advanceWidth:718},n:{x_min:45,x_max:491,y_min:-32,y_max:512,ha:544,leftSideBearing:45,advanceWidth:541},o:{x_min:41,x_max:424,y_min:-12,y_max:493,ha:505,leftSideBearing:41,advanceWidth:447},p:{x_min:25,x_max:529,y_min:-260,y_max:500,ha:760,leftSideBearing:25,advanceWidth:573},q:{x_min:53,x_max:603,y_min:-235,y_max:514,ha:749,leftSideBearing:53,advanceWidth:623},r:{x_min:32,x_max:407,y_min:-7,y_max:492,ha:499,leftSideBearing:32,advanceWidth:460},s:{x_min:49,x_max:416,y_min:-12,y_max:519,ha:531,leftSideBearing:49,advanceWidth:460},t:{x_min:32,x_max:442,y_min:-5,y_max:684,ha:689,leftSideBearing:32,advanceWidth:469},u:{x_min:41,x_max:487,y_min:-5,y_max:507,ha:512,leftSideBearing:41,advanceWidth:510},v:{x_min:16,x_max:441,y_min:-20,y_max:542,ha:562,leftSideBearing:16,advanceWidth:456},w:{x_min:39,x_max:639,y_min:-22,y_max:505,ha:527,leftSideBearing:39,advanceWidth:661},x:{x_min:15,x_max:505,y_min:-39,y_max:539,ha:578,leftSideBearing:15,advanceWidth:541},y:{x_min:-98,x_max:501,y_min:-242,y_max:511,ha:753,leftSideBearing:-98,advanceWidth:548},z:{x_min:27,x_max:479,y_min:-3,y_max:494,ha:497,leftSideBearing:27,advanceWidth:494},"{":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308},"|":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308},"}":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308},"~":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308}},fontFamily:"PetalumaScript",resolution:1e3,generatedOn:"2020-06-14T18:33:25.407Z"},Oi={spacing:50,glyphs:{" ":{x_min:0,x_max:509,y_min:0,y_max:2e3,ha:2e3,leftSideBearing:0,advanceWidth:509},0:{x_min:121,x_max:1048,y_min:-21,y_max:1477,ha:1498,leftSideBearing:121,advanceWidth:1168},1:{x_min:117,x_max:767,y_min:0,y_max:1456,ha:1456,leftSideBearing:117,advanceWidth:844},2:{x_min:75.8474576645637,x_max:1040,y_min:0,y_max:1477,ha:1477,leftSideBearing:75,advanceWidth:1131},3:{x_min:74.85365853658536,x_max:994,y_min:-21,y_max:1477,ha:1498,leftSideBearing:74,advanceWidth:1106},4:{x_min:63,x_max:1114,y_min:0,y_max:1456,ha:1456,leftSideBearing:63,advanceWidth:1187},5:{x_min:96.8448275474953,x_max:982,y_min:-21,y_max:1456,ha:1477,leftSideBearing:96,advanceWidth:1081},6:{x_min:121,x_max:1067,y_min:-21,y_max:1477,ha:1498,leftSideBearing:121,advanceWidth:1144},7:{x_min:76,x_max:1060,y_min:0,y_max:1456,ha:1456,leftSideBearing:-30,advanceWidth:1128},8:{x_min:92,x_max:1039,y_min:-21,y_max:1477,ha:1498,leftSideBearing:92,advanceWidth:1131},9:{x_min:84,x_max:1026,y_min:-21,y_max:1477,ha:1498,leftSideBearing:84,advanceWidth:1154},"!":{x_min:143,x_max:340,y_min:0,y_max:1456,ha:1456,leftSideBearing:143,advanceWidth:483},'"':{x_min:166,x_max:634,y_min:1055,y_max:1560,ha:505,leftSideBearing:166,advanceWidth:770},"#":{x_min:63,x_max:1179,y_min:0,y_max:1456,ha:1456,leftSideBearing:63,advanceWidth:1246},$:{x_min:81.92156915727656,x_max:1012,y_min:-208,y_max:1693,ha:1901,leftSideBearing:81,advanceWidth:1110},"%":{x_min:77,x_max:1384,y_min:-21,y_max:1477,ha:1498,leftSideBearing:77,advanceWidth:1460},"&":{x_min:74,x_max:1242,y_min:-21,y_max:1477,ha:1498,leftSideBearing:74,advanceWidth:1289},"'":{x_min:166,x_max:324,y_min:1055,y_max:1560,ha:505,leftSideBearing:166,advanceWidth:460},"(":{x_min:114,x_max:650,y_min:-463,y_max:1636,ha:2099,leftSideBearing:114,advanceWidth:662},")":{x_min:11,x_max:547,y_min:-463,y_max:1636,ha:2099,leftSideBearing:11,advanceWidth:654},"*":{x_min:66,x_max:893,y_min:607,y_max:1456,ha:849,leftSideBearing:66,advanceWidth:958},"+":{x_min:73,x_max:1071,y_min:146,y_max:1206,ha:1060,leftSideBearing:73,advanceWidth:1145},",":{x_min:23,x_max:315,y_min:-311,y_max:221,ha:532,leftSideBearing:23,advanceWidth:404},"-":{x_min:154,x_max:643,y_min:538,y_max:692,ha:154,leftSideBearing:154,advanceWidth:797},".":{x_min:145,x_max:342,y_min:0,y_max:202,ha:202,leftSideBearing:145,advanceWidth:493},"/":{x_min:0,x_max:774,y_min:-125,y_max:1456,ha:1581,leftSideBearing:0,advanceWidth:824},":":{x_min:145,x_max:342,y_min:0,y_max:1082,ha:1082,leftSideBearing:145,advanceWidth:419},";":{x_min:53,x_max:345,y_min:-311,y_max:1082,ha:1393,leftSideBearing:53,advanceWidth:424},"<":{x_min:76,x_max:892,y_min:107,y_max:1013,ha:906,leftSideBearing:76,advanceWidth:1017},"=":{x_min:147,x_max:981,y_min:407,y_max:987,ha:580,leftSideBearing:147,advanceWidth:1127},">":{x_min:125,x_max:980,y_min:87,y_max:993,ha:906,leftSideBearing:125,advanceWidth:1060},"?":{x_min:65.92660602419838,x_max:890,y_min:0,y_max:1477,ha:1477,leftSideBearing:65,advanceWidth:953},"@":{x_min:84.3592218305664,x_max:1705.2346925277395,y_min:-453,y_max:1431,ha:1884,leftSideBearing:84,advanceWidth:1821},A:{x_min:70,x_max:1463,y_min:0,y_max:1456,ha:1456,leftSideBearing:70,advanceWidth:1533},B:{x_min:81,x_max:1253,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1322},C:{x_min:80,x_max:1174,y_min:-21,y_max:1477,ha:1498,leftSideBearing:80,advanceWidth:1290},D:{x_min:81,x_max:1291,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1356},E:{x_min:81,x_max:1190,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1306},F:{x_min:81,x_max:1176,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1256},G:{x_min:80,x_max:1226,y_min:-21,y_max:1477,ha:1498,leftSideBearing:80,advanceWidth:1346},H:{x_min:81,x_max:1497,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1578},I:{x_min:81,x_max:604,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:685},J:{x_min:60,x_max:1100,y_min:-21,y_max:1456,ha:1477,leftSideBearing:60,advanceWidth:1169},K:{x_min:81,x_max:1427,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1501},L:{x_min:81,x_max:1130,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1210},M:{x_min:94,x_max:1888,y_min:0,y_max:1456,ha:1456,leftSideBearing:94,advanceWidth:1982},N:{x_min:83,x_max:1509,y_min:0,y_max:1456,ha:1456,leftSideBearing:83,advanceWidth:1592},O:{x_min:70,x_max:1281,y_min:-21,y_max:1477,ha:1498,leftSideBearing:70,advanceWidth:1351},P:{x_min:81,x_max:1242,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1297},Q:{x_min:70,x_max:1348,y_min:-245,y_max:1477,ha:1722,leftSideBearing:70,advanceWidth:1376},R:{x_min:81,x_max:1285,y_min:0,y_max:1455,ha:1455,leftSideBearing:81,advanceWidth:1385},S:{x_min:115,x_max:1116,y_min:-21,y_max:1477,ha:1498,leftSideBearing:115,advanceWidth:1206},T:{x_min:96,x_max:1306,y_min:0,y_max:1456,ha:1456,leftSideBearing:96,advanceWidth:1406},U:{x_min:70,x_max:1452,y_min:-21,y_max:1456,ha:1477,leftSideBearing:70,advanceWidth:1522},V:{x_min:65,x_max:1443,y_min:0,y_max:1456,ha:1456,leftSideBearing:65,advanceWidth:1508},W:{x_min:72,x_max:2057,y_min:0,y_max:1456,ha:1456,leftSideBearing:72,advanceWidth:2129},X:{x_min:80,x_max:1449,y_min:0,y_max:1456,ha:1456,leftSideBearing:80,advanceWidth:1529},Y:{x_min:65,x_max:1396,y_min:0,y_max:1456,ha:1456,leftSideBearing:65,advanceWidth:1461},Z:{x_min:90,x_max:1107,y_min:0,y_max:1456,ha:1456,leftSideBearing:90,advanceWidth:1197},"[":{x_min:157,x_max:541,y_min:-312,y_max:1664,ha:1976,leftSideBearing:157,advanceWidth:573},"\\":{x_min:36,x_max:830,y_min:-125,y_max:1456,ha:1581,leftSideBearing:36,advanceWidth:841},"]":{x_min:23,x_max:408,y_min:-312,y_max:1664,ha:1976,leftSideBearing:23,advanceWidth:552},"^":{x_min:71,x_max:802,y_min:729,y_max:1456,ha:727,leftSideBearing:71,advanceWidth:864},_:{x_min:119,x_max:1041,y_min:-154,y_max:0,ha:154,leftSideBearing:119,advanceWidth:1168},"`":{x_min:40,x_max:456,y_min:1288,y_max:1560,ha:272,leftSideBearing:40,advanceWidth:496},a:{x_min:79,x_max:1053,y_min:-21,y_max:1102,ha:1123,leftSideBearing:79,advanceWidth:1132},b:{x_min:-16,x_max:1071,y_min:-21,y_max:1560,ha:1581,leftSideBearing:-16,advanceWidth:1145},c:{x_min:78,x_max:988,y_min:-21,y_max:1102,ha:1123,leftSideBearing:78,advanceWidth:1067},d:{x_min:78,x_max:1156,y_min:-21,y_max:1560,ha:1581,leftSideBearing:78,advanceWidth:1218},e:{x_min:74,x_max:980,y_min:-21,y_max:1102,ha:1123,leftSideBearing:74,advanceWidth:1059},f:{x_min:64,x_max:731,y_min:0,y_max:1581,ha:1581,leftSideBearing:64,advanceWidth:725},g:{x_min:78,x_max:1133,y_min:-437,y_max:1102,ha:1539,leftSideBearing:78,advanceWidth:1157},h:{x_min:49,x_max:1255,y_min:0,y_max:1560,ha:1560,leftSideBearing:49,advanceWidth:1315},i:{x_min:67,x_max:590,y_min:0,y_max:1560,ha:1560,leftSideBearing:67,advanceWidth:652},j:{x_min:-56,x_max:381,y_min:-437,y_max:1560,ha:1997,leftSideBearing:-56,advanceWidth:525},k:{x_min:64,x_max:1248,y_min:0,y_max:1560,ha:1560,leftSideBearing:64,advanceWidth:1287},l:{x_min:64,x_max:587,y_min:0,y_max:1560,ha:1560,leftSideBearing:64,advanceWidth:653},m:{x_min:74,x_max:1905,y_min:0,y_max:1102,ha:1102,leftSideBearing:74,advanceWidth:1977},n:{x_min:74,x_max:1278,y_min:0,y_max:1102,ha:1102,leftSideBearing:74,advanceWidth:1343},o:{x_min:78,x_max:1046,y_min:-21,y_max:1102,ha:1123,leftSideBearing:78,advanceWidth:1124},p:{x_min:34,x_max:1119,y_min:-416,y_max:1102,ha:1518,leftSideBearing:34,advanceWidth:1197},q:{x_min:78,x_max:1135,y_min:-416,y_max:1102,ha:1518,leftSideBearing:78,advanceWidth:1139},r:{x_min:72,x_max:808,y_min:0,y_max:1102,ha:1102,leftSideBearing:72,advanceWidth:854},s:{x_min:104,x_max:933,y_min:-21,y_max:1102,ha:1123,leftSideBearing:104,advanceWidth:1022},t:{x_min:24,x_max:678,y_min:-17,y_max:1343,ha:1360,leftSideBearing:24,advanceWidth:730},u:{x_min:52,x_max:1181,y_min:-21,y_max:1082,ha:1103,leftSideBearing:52,advanceWidth:1245},v:{x_min:26,x_max:1176,y_min:0,y_max:1082,ha:1082,leftSideBearing:26,advanceWidth:1206},w:{x_min:52,x_max:1777,y_min:0,y_max:1082,ha:1082,leftSideBearing:52,advanceWidth:1823},x:{x_min:42,x_max:1163,y_min:0,y_max:1082,ha:1082,leftSideBearing:42,advanceWidth:1203},y:{x_min:24,x_max:1172,y_min:-437,y_max:1082,ha:1519,leftSideBearing:24,advanceWidth:1192},z:{x_min:88,x_max:960,y_min:0,y_max:1082,ha:1082,leftSideBearing:88,advanceWidth:1032},"{":{x_min:63,x_max:671,y_min:-364,y_max:1597,ha:1961,leftSideBearing:63,advanceWidth:701},"|":{x_min:150,x_max:307,y_min:-270,y_max:1456,ha:1726,leftSideBearing:150,advanceWidth:451},"}":{x_min:27,x_max:635,y_min:-364,y_max:1597,ha:1961,leftSideBearing:27,advanceWidth:701},"~":{x_min:121,x_max:1257,y_min:401,y_max:803,ha:402,leftSideBearing:121,advanceWidth:1386}},fontFamily:"Roboto Slab",resolution:2048,generatedOn:"2020-06-15T19:12:58.120Z"};class Li{static sortAndUnique(t,e,i){if(t.length>1){const s=[];let a;t.sort(e);for(let e=0;e {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Ron B. Yeh\n// MIT License\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Use instead of `instanceof` as a more flexible type guard.\n * @param obj check if this object's CATEGORY matches the provided category.\n * @param category a string representing a category of VexFlow objects.\n * @param checkAncestors defaults to `true`, so we walk up the prototype chain to look for a matching `CATEGORY`.\n * If `false`, we do not check the superclass or other ancestors.\n * @returns true if `obj` has a static `CATEGORY` property that matches `category`.\n */\nexport function isCategory(obj, category, checkAncestors = true) {\n // obj is undefined, a number, a primitive string, or null.\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n // `obj.constructor` is a reference to the constructor function that created the `obj` instance.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor\n let constructorFcn = obj.constructor;\n // Check if the object's static .CATEGORY matches the provided category.\n if (checkAncestors) {\n // Walk up the prototype chain to look for a matching obj.constructor.CATEGORY.\n while (obj !== null) {\n constructorFcn = obj.constructor;\n if ('CATEGORY' in constructorFcn && constructorFcn.CATEGORY === category) {\n return true;\n }\n obj = Object.getPrototypeOf(obj);\n }\n return false;\n }\n else {\n // Do not walk up the prototype chain. Just check this particular object's static .CATEGORY string.\n return 'CATEGORY' in constructorFcn && constructorFcn.CATEGORY === category;\n }\n}\nexport const isAccidental = (obj) => isCategory(obj, Category.Accidental);\nexport const isAnnotation = (obj) => isCategory(obj, Category.Annotation);\nexport const isBarline = (obj) => isCategory(obj, Category.Barline);\nexport const isDot = (obj) => isCategory(obj, Category.Dot);\nexport const isGraceNote = (obj) => isCategory(obj, Category.GraceNote);\nexport const isGraceNoteGroup = (obj) => isCategory(obj, Category.GraceNoteGroup);\nexport const isNote = (obj) => isCategory(obj, Category.Note);\nexport const isRenderContext = (obj) => isCategory(obj, Category.RenderContext);\nexport const isStaveNote = (obj) => isCategory(obj, Category.StaveNote);\nexport const isStemmableNote = (obj) => isCategory(obj, Category.StemmableNote);\nexport const isTabNote = (obj) => isCategory(obj, Category.TabNote);\n// 'const' enums are erased by the TypeScript compiler. The string values are inlined at all the use sites.\n// See: https://www.typescriptlang.org/docs/handbook/enums.html#const-enums\nexport var Category;\n(function (Category) {\n Category[\"Accidental\"] = \"Accidental\";\n Category[\"Annotation\"] = \"Annotation\";\n Category[\"Articulation\"] = \"Articulation\";\n Category[\"Barline\"] = \"Barline\";\n Category[\"BarNote\"] = \"BarNote\";\n Category[\"Beam\"] = \"Beam\";\n Category[\"Bend\"] = \"Bend\";\n Category[\"ChordSymbol\"] = \"ChordSymbol\";\n Category[\"Clef\"] = \"Clef\";\n Category[\"ClefNote\"] = \"ClefNote\";\n Category[\"Crescendo\"] = \"Crescendo\";\n Category[\"Curve\"] = \"Curve\";\n Category[\"Dot\"] = \"Dot\";\n Category[\"Element\"] = \"Element\";\n Category[\"Fraction\"] = \"Fraction\";\n Category[\"FretHandFinger\"] = \"FretHandFinger\";\n Category[\"GhostNote\"] = \"GhostNote\";\n Category[\"Glyph\"] = \"Glyph\";\n Category[\"GlyphNote\"] = \"GlyphNote\";\n Category[\"GraceNote\"] = \"GraceNote\";\n Category[\"GraceNoteGroup\"] = \"GraceNoteGroup\";\n Category[\"GraceTabNote\"] = \"GraceTabNote\";\n Category[\"KeySignature\"] = \"KeySignature\";\n Category[\"KeySigNote\"] = \"KeySigNote\";\n Category[\"Modifier\"] = \"Modifier\";\n Category[\"MultiMeasureRest\"] = \"MultiMeasureRest\";\n Category[\"Note\"] = \"Note\";\n Category[\"NoteHead\"] = \"NoteHead\";\n Category[\"NoteSubGroup\"] = \"NoteSubGroup\";\n Category[\"Ornament\"] = \"Ornament\";\n Category[\"Parenthesis\"] = \"Parenthesis\";\n Category[\"PedalMarking\"] = \"PedalMarking\";\n Category[\"RenderContext\"] = \"RenderContext\";\n Category[\"RepeatNote\"] = \"RepeatNote\";\n Category[\"Repetition\"] = \"Repetition\";\n Category[\"Stave\"] = \"Stave\";\n Category[\"StaveConnector\"] = \"StaveConnector\";\n Category[\"StaveHairpin\"] = \"StaveHairpin\";\n Category[\"StaveLine\"] = \"StaveLine\";\n Category[\"StaveModifier\"] = \"StaveModifier\";\n Category[\"StaveNote\"] = \"StaveNote\";\n Category[\"StaveSection\"] = \"StaveSection\";\n Category[\"StaveTempo\"] = \"StaveTempo\";\n Category[\"StaveText\"] = \"StaveText\";\n Category[\"StaveTie\"] = \"StaveTie\";\n Category[\"Stem\"] = \"Stem\";\n Category[\"StemmableNote\"] = \"StemmableNote\";\n Category[\"StringNumber\"] = \"StringNumber\";\n Category[\"Stroke\"] = \"Stroke\";\n Category[\"System\"] = \"System\";\n Category[\"TabNote\"] = \"TabNote\";\n Category[\"TabSlide\"] = \"TabSlide\";\n Category[\"TabStave\"] = \"TabStave\";\n Category[\"TabTie\"] = \"TabTie\";\n Category[\"TextBracket\"] = \"TextBracket\";\n Category[\"TextDynamics\"] = \"TextDynamics\";\n Category[\"TextNote\"] = \"TextNote\";\n Category[\"Tickable\"] = \"Tickable\";\n Category[\"TimeSignature\"] = \"TimeSignature\";\n Category[\"TimeSigNote\"] = \"TimeSigNote\";\n Category[\"Tremolo\"] = \"Tremolo\";\n Category[\"Tuplet\"] = \"Tuplet\";\n Category[\"Vibrato\"] = \"Vibrato\";\n Category[\"VibratoBracket\"] = \"VibratoBracket\";\n Category[\"Voice\"] = \"Voice\";\n Category[\"Volta\"] = \"Volta\";\n})(Category || (Category = {}));\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// Note: Keep this module free of imports to reduce the chance of circular dependencies.\n/** `RuntimeError` will be thrown by VexFlow classes in case of error. */\nexport class RuntimeError extends Error {\n constructor(code, message = '') {\n super('[RuntimeError] ' + code + ': ' + message);\n this.code = code;\n }\n}\n/** VexFlow can be used outside of the browser (e.g., Node) where `window` may not be defined. */\n// eslint-disable-next-line\nexport function globalObject() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return Function('return this')();\n}\n/**\n * Check that `x` is of type `T` and not `undefined`.\n * If `x` is `undefined`, throw a RuntimeError with the optionally provided error code and message.\n */\nexport function defined(x, code = 'undefined', message = '') {\n if (x === undefined) {\n throw new RuntimeError(code, message);\n }\n return x;\n}\n/** Default log function sends all arguments to console. */\n// eslint-disable-next-line\nexport function log(block, ...args) {\n if (!args)\n return;\n const line = Array.prototype.slice.call(args).join(' ');\n globalObject().console.log(block + ': ' + line);\n}\n/** Dump warning to console. */\n// eslint-disable-next-line\nexport function warn(...args) {\n const line = args.join(' ');\n const err = new Error();\n globalObject().console.log('Warning: ', line, err.stack);\n}\n/** Round number to nearest fractional value (`.5`, `.25`, etc.) */\nfunction roundN(x, n) {\n return x % n >= n / 2 ? parseInt(`${x / n}`, 10) * n + n : parseInt(`${x / n}`, 10) * n;\n}\n/** Locate the mid point between stave lines. Returns a fractional line if a space. */\nexport function midLine(a, b) {\n let mid_line = b + (a - b) / 2;\n if (mid_line % 2 > 0) {\n mid_line = roundN(mid_line * 10, 5) / 10;\n }\n return mid_line;\n}\n/**\n * Used by various classes (e.g., SVGContext) to provide a\n * unique prefix to element names (or other keys in shared namespaces).\n */\nexport function prefix(text) {\n return `vf-${text}`;\n}\n/**\n * Convert an arbitrary angle in radians to the equivalent one in the range [0, pi).\n */\nexport function normalizeAngle(a) {\n a = a % (2 * Math.PI);\n if (a < 0) {\n a += 2 * Math.PI;\n }\n return a;\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Author: Joshua Koo / @zz85\n// Author: @incompleteopus\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n/** Fraction represents a rational number. */\nexport class Fraction {\n /** Set the numerator and denominator. */\n constructor(numerator, denominator) {\n this.numerator = 1;\n this.denominator = 1;\n this.set(numerator, denominator);\n }\n static get CATEGORY() {\n return Category.Fraction;\n }\n /**\n * GCD: Greatest common divisor using the Euclidean algorithm.\n * Note: GCD(0, 0) => 0 and GCD(0, n) => n.\n */\n static GCD(a, b) {\n if (typeof a !== 'number' || Number.isNaN(a) || typeof b !== 'number' || Number.isNaN(b)) {\n throw new RuntimeError('BadArgument', `Invalid numbers: ${a}, ${b}`);\n }\n let t;\n while (b !== 0) {\n t = b;\n b = a % b;\n a = t;\n }\n return a;\n }\n /** LCM: Lowest common multiple. */\n static LCM(a, b) {\n return (a * b) / Fraction.GCD(a, b);\n }\n /** Lowest common multiple for more than two numbers. */\n static LCMM(args) {\n if (args.length === 0) {\n return 0;\n }\n else if (args.length === 1) {\n return args[0];\n }\n else if (args.length === 2) {\n return Fraction.LCM(args[0], args[1]);\n }\n else {\n // args.shift() removes the first number.\n // LCM the first number with the rest of the numbers.\n return Fraction.LCM(args.shift(), Fraction.LCMM(args));\n }\n }\n /** Set the numerator and denominator. */\n set(numerator = 1, denominator = 1) {\n this.numerator = numerator;\n this.denominator = denominator;\n return this;\n }\n /** Return the value of the fraction. */\n value() {\n return this.numerator / this.denominator;\n }\n /** Simplify numerator and denominator using GCD. */\n simplify() {\n let u = this.numerator;\n let d = this.denominator;\n const gcd = Fraction.GCD(u, d);\n u /= gcd;\n d /= gcd;\n if (d < 0) {\n d = -d;\n u = -u;\n }\n return this.set(u, d);\n }\n /** Add value of another fraction. */\n add(param1 = 0, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n const lcm = Fraction.LCM(this.denominator, otherDenominator);\n const a = lcm / this.denominator;\n const b = lcm / otherDenominator;\n const u = this.numerator * a + otherNumerator * b;\n return this.set(u, lcm);\n }\n /** Substract value of another fraction. */\n subtract(param1 = 0, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n const lcm = Fraction.LCM(this.denominator, otherDenominator);\n const a = lcm / this.denominator;\n const b = lcm / otherDenominator;\n const u = this.numerator * a - otherNumerator * b;\n return this.set(u, lcm);\n }\n /** Multiply by value of another fraction. */\n multiply(param1 = 1, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n return this.set(this.numerator * otherNumerator, this.denominator * otherDenominator);\n }\n /** Divide by value of another Fraction. */\n divide(param1 = 1, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n return this.set(this.numerator * otherDenominator, this.denominator * otherNumerator);\n }\n /** Simplify both sides and check if they are equal. */\n equals(compare) {\n const a = Fraction.__staticFractionA.copy(compare).simplify();\n const b = Fraction.__staticFractionB.copy(this).simplify();\n return a.numerator === b.numerator && a.denominator === b.denominator;\n }\n /** Greater than operator. */\n greaterThan(compare) {\n const a = Fraction.__staticFractionB.copy(this);\n a.subtract(compare);\n return a.numerator > 0;\n }\n /** Greater than or equals operator. */\n greaterThanEquals(compare) {\n const a = Fraction.__staticFractionB.copy(this);\n a.subtract(compare);\n return a.numerator >= 0;\n }\n /** Less than operator. */\n lessThan(compare) {\n return !this.greaterThanEquals(compare);\n }\n /** Less than or equals operator. */\n lessThanEquals(compare) {\n return !this.greaterThan(compare);\n }\n /** Return a new copy with current values. */\n clone() {\n return new Fraction(this.numerator, this.denominator);\n }\n /** Copy value of another fraction. */\n copy(other) {\n if (typeof other === 'number') {\n return this.set(other, 1);\n }\n else {\n return this.set(other.numerator, other.denominator);\n }\n }\n /** Return the integer component (eg. 5/2 => 2). */\n quotient() {\n return Math.floor(this.numerator / this.denominator);\n }\n /** Return the remainder component (eg. 5/2 => 1). */\n remainder() {\n return this.numerator % this.denominator;\n }\n /** Calculate absolute value. */\n makeAbs() {\n this.denominator = Math.abs(this.denominator);\n this.numerator = Math.abs(this.numerator);\n return this;\n }\n /** Return a raw string representation (eg. \"5/2\"). */\n toString() {\n return `${this.numerator}/${this.denominator}`;\n }\n /** Return a simplified string respresentation. */\n toSimplifiedString() {\n return Fraction.__staticFractionTmp.copy(this).simplify().toString();\n }\n /** Return string representation in mixed form. */\n toMixedString() {\n let s = '';\n const q = this.quotient();\n const f = Fraction.__staticFractionTmp.copy(this);\n if (q < 0) {\n f.makeAbs();\n }\n if (q !== 0) {\n s += q;\n if (f.numerator !== 0) {\n s += ` ${f.toSimplifiedString()}`;\n }\n }\n else if (f.numerator === 0) {\n s = '0';\n }\n else {\n s = f.toSimplifiedString();\n }\n return s;\n }\n /** Parse a fraction string. */\n parse(str) {\n const i = str.split('/');\n const n = parseInt(i[0], 10);\n const d = i[1] ? parseInt(i[1], 10) : 1;\n return this.set(n, d);\n }\n}\n// Cached objects for comparisons.\nFraction.__staticFractionA = new Fraction();\nFraction.__staticFractionB = new Fraction();\nFraction.__staticFractionTmp = new Fraction();\n/** Helper function to extract the numerator and denominator from another fraction. */\nfunction getNumeratorAndDenominator(n, d = 1) {\n if (typeof n === 'number') {\n // Both params are numbers, so we return them as [numerator, denominator].\n return [n, d];\n }\n else {\n // First param is a Fraction object. We ignore the second param.\n return [n.numerator, n.denominator];\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nexport class BoundingBox {\n constructor(x, y, w, h) {\n this.x = x;\n this.y = y;\n this.w = w;\n this.h = h;\n }\n /**\n * Create a new copy.\n */\n static copy(that) {\n return new BoundingBox(that.x, that.y, that.w, that.h);\n }\n /** Get x position. */\n getX() {\n return this.x;\n }\n /** Get y position. */\n getY() {\n return this.y;\n }\n /** Get width. */\n getW() {\n return this.w;\n }\n /** Get height. */\n getH() {\n return this.h;\n }\n /** Set x position. */\n setX(x) {\n this.x = x;\n return this;\n }\n /** Set y position. */\n setY(y) {\n this.y = y;\n return this;\n }\n /** Set width. */\n setW(w) {\n this.w = w;\n return this;\n }\n /** Set height. */\n setH(h) {\n this.h = h;\n return this;\n }\n /** Move to position. */\n move(x, y) {\n this.x += x;\n this.y += y;\n return this;\n }\n /** Clone. */\n clone() {\n return BoundingBox.copy(this);\n }\n /**\n * Merge my box with given box. Creates a bigger bounding box unless\n * the given box is contained in this one.\n */\n mergeWith(boundingBox) {\n const that = boundingBox;\n const new_x = this.x < that.x ? this.x : that.x;\n const new_y = this.y < that.y ? this.y : that.y;\n const new_w = Math.max(this.x + this.w, that.x + that.w) - new_x;\n const new_h = Math.max(this.y + this.h, that.y + that.h) - new_y;\n this.x = new_x;\n this.y = new_y;\n this.w = new_w;\n this.h = new_h;\n return this;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n/**\n * BoundingBoxComputation computes metrics for a bounding box by continuously\n * taking canvas path commands.\n *\n * Warning: This class is merely a crutch to get bounding box information without\n * explicit metadata. This is likely to get deprecated following SMuFL support.\n *\n * based on: https://github.com/canvg/canvg/blob/master/src/BoundingBox.ts (MIT License)\n */\nexport class BoundingBoxComputation {\n constructor() {\n this.x1 = Number.NaN;\n this.y1 = Number.NaN;\n this.x2 = Number.NaN;\n this.y2 = Number.NaN;\n }\n /** Get calculated X1. */\n getX1() {\n return this.x1;\n }\n /** Get calculated Y1. */\n getY1() {\n return this.y1;\n }\n /** Get calculated width. */\n width() {\n return this.x2 - this.x1;\n }\n /** Get calculated height. */\n height() {\n return this.y2 - this.y1;\n }\n /** Add point to BoundingBox. */\n addPoint(x, y) {\n if (isNaN(this.x1) || x < this.x1)\n this.x1 = x;\n if (isNaN(this.x2) || x > this.x2)\n this.x2 = x;\n if (isNaN(this.y1) || y < this.y1)\n this.y1 = y;\n if (isNaN(this.y2) || y > this.y2)\n this.y2 = y;\n }\n /** Add X to BoundingBox. */\n addX(x) {\n this.addPoint(x, this.y1);\n }\n /** Add Y to BoundingBox. */\n addY(y) {\n this.addPoint(this.x1, y);\n }\n /** Add quadratic curve to BoundingBox. */\n addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {\n this.addPoint(p0x, p0y);\n this.addPoint(p2x, p2y);\n const p01x = p1x - p0x;\n const p12x = p2x - p1x;\n let denom = p01x - p12x;\n if (denom != 0) {\n const t = p01x / denom;\n if (t > 0 && t < 1) {\n const it = 1 - t;\n this.addX(it * it * p0x + 2 * it * t * p1x + t * t * p2x);\n }\n }\n const p01y = p1y - p0y;\n const p12y = p2y - p1y;\n denom = p01y - p12y;\n if (denom != 0) {\n const t = p01y / denom;\n if (t > 0 && t < 1) {\n const it = 1 - t;\n this.addY(it * it * p0y + 2 * it * t * p1y + t * t * p2y);\n }\n }\n }\n /** Add bezier curve to BoundingBox. */\n addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\n // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n const p0 = [p0x, p0y];\n const p1 = [p1x, p1y];\n const p2 = [p2x, p2y];\n const p3 = [p3x, p3y];\n let i;\n this.addPoint(p0[0], p0[1]);\n this.addPoint(p3[0], p3[1]);\n const f = (t, i) => Math.pow(1 - t, 3) * p0[i] +\n 3 * Math.pow(1 - t, 2) * t * p1[i] +\n 3 * (1 - t) * Math.pow(t, 2) * p2[i] +\n Math.pow(t, 3) * p3[i];\n for (i = 0; i <= 1; i++) {\n const b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n const a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n const c = 3 * p1[i] - 3 * p0[i];\n if (a === 0) {\n if (b === 0)\n continue;\n const t = -c / b;\n if (0 < t && t < 1) {\n if (i === 0)\n this.addX(f(t, i));\n if (i === 1)\n this.addY(f(t, i));\n }\n continue;\n }\n const b2ac = Math.pow(b, 2) - 4 * c * a;\n if (b2ac < 0)\n continue;\n const t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n if (0 < t1 && t1 < 1) {\n if (i === 0)\n this.addX(f(t1, i));\n if (i === 1)\n this.addY(f(t1, i));\n }\n const t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n if (0 < t2 && t2 < 1) {\n if (i === 0)\n this.addX(f(t2, i));\n if (i === 1)\n this.addY(f(t2, i));\n }\n }\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { defined } from './util';\nexport var FontWeight;\n(function (FontWeight) {\n FontWeight[\"NORMAL\"] = \"normal\";\n FontWeight[\"BOLD\"] = \"bold\";\n})(FontWeight || (FontWeight = {}));\nexport var FontStyle;\n(function (FontStyle) {\n FontStyle[\"NORMAL\"] = \"normal\";\n FontStyle[\"ITALIC\"] = \"italic\";\n})(FontStyle || (FontStyle = {}));\n// Internal element for parsing CSS font shorthand strings.\nlet fontParser;\nconst Fonts = {};\nexport class Font {\n /**\n * Use `Font.load(fontName)` to get a Font object.\n * Do not call this constructor directly.\n */\n constructor(fontName) {\n this.name = fontName;\n }\n /**\n * @param fontSize a font size to convert. Can be specified as a CSS length string (e.g., '16pt', '1em')\n * or as a number (the unit is assumed to be 'pt'). See `Font.scaleToPxFrom` for the supported\n * units (e.g., pt, em, %).\n * @returns the number of pixels that is equivalent to `fontSize`\n */\n static convertSizeToPixelValue(fontSize = Font.SIZE) {\n var _a;\n if (typeof fontSize === 'number') {\n // Assume the numeric fontSize is specified in pt.\n return fontSize * Font.scaleToPxFrom.pt;\n }\n else {\n const value = parseFloat(fontSize);\n if (isNaN(value)) {\n return 0;\n }\n const unit = fontSize.replace(/[\\d.\\s]/g, '').toLowerCase(); // Extract the unit by removing all numbers, dots, spaces.\n const conversionFactor = (_a = Font.scaleToPxFrom[unit]) !== null && _a !== void 0 ? _a : 1;\n return value * conversionFactor;\n }\n }\n /**\n * @param fontSize a font size to convert. Can be specified as a CSS length string (e.g., '16pt', '1em')\n * or as a number (the unit is assumed to be 'pt'). See `Font.scaleToPxFrom` for the supported\n * units (e.g., pt, em, %).\n * @returns the number of points that is equivalent to `fontSize`\n */\n static convertSizeToPointValue(fontSize = Font.SIZE) {\n var _a;\n if (typeof fontSize === 'number') {\n // Assume the numeric fontSize is specified in pt.\n return fontSize;\n }\n else {\n const value = parseFloat(fontSize);\n if (isNaN(value)) {\n return 0;\n }\n const unit = fontSize.replace(/[\\d.\\s]/g, '').toLowerCase(); // Extract the unit by removing all numbers, dots, spaces.\n const conversionFactor = ((_a = Font.scaleToPxFrom[unit]) !== null && _a !== void 0 ? _a : 1) / Font.scaleToPxFrom.pt;\n return value * conversionFactor;\n }\n }\n /**\n * @param f\n * @param size\n * @param weight\n * @param style\n * @returns the `size` field will include the units (e.g., '12pt', '16px').\n */\n static validate(f, size, weight, style) {\n // If f is a string but all other arguments are undefined, we assume that\n // f is CSS font shorthand (e.g., 'italic bold 10pt Arial').\n if (typeof f === 'string' && size === undefined && weight === undefined && style === undefined) {\n return Font.fromCSSString(f);\n }\n let family;\n if (typeof f === 'object') {\n // f is a FontInfo object, so we extract its fields.\n family = f.family;\n size = f.size;\n weight = f.weight;\n style = f.style;\n }\n else {\n // f is a string representing the font family name or undefined.\n family = f;\n }\n family = family !== null && family !== void 0 ? family : Font.SANS_SERIF;\n size = size !== null && size !== void 0 ? size : Font.SIZE + 'pt';\n weight = weight !== null && weight !== void 0 ? weight : FontWeight.NORMAL;\n style = style !== null && style !== void 0 ? style : FontStyle.NORMAL;\n if (weight === '') {\n weight = FontWeight.NORMAL;\n }\n if (style === '') {\n style = FontStyle.NORMAL;\n }\n // If size is a number, we assume the unit is `pt`.\n if (typeof size === 'number') {\n size = `${size}pt`;\n }\n // If weight is a number (e.g., 900), turn it into a string representation of that number.\n if (typeof weight === 'number') {\n weight = weight.toString();\n }\n // At this point, `family`, `size`, `weight`, and `style` are all strings.\n return { family, size, weight, style };\n }\n /**\n * @param cssFontShorthand a string formatted as CSS font shorthand (e.g., 'italic bold 15pt Arial').\n */\n static fromCSSString(cssFontShorthand) {\n // Let the browser parse this string for us.\n // First, create a span element.\n // Then, set its style.font and extract it back out.\n if (!fontParser) {\n fontParser = document.createElement('span');\n }\n fontParser.style.font = cssFontShorthand;\n const { fontFamily, fontSize, fontWeight, fontStyle } = fontParser.style;\n return { family: fontFamily, size: fontSize, weight: fontWeight, style: fontStyle };\n }\n /**\n * @returns a CSS font shorthand string of the form `italic bold 16pt Arial`.\n */\n static toCSSString(fontInfo) {\n var _a;\n if (!fontInfo) {\n return '';\n }\n let style;\n const st = fontInfo.style;\n if (st === FontStyle.NORMAL || st === '' || st === undefined) {\n style = ''; // no space! Omit the style section.\n }\n else {\n style = st.trim() + ' ';\n }\n let weight;\n const wt = fontInfo.weight;\n if (wt === FontWeight.NORMAL || wt === '' || wt === undefined) {\n weight = ''; // no space! Omit the weight section.\n }\n else if (typeof wt === 'number') {\n weight = wt + ' ';\n }\n else {\n weight = wt.trim() + ' ';\n }\n let size;\n const sz = fontInfo.size;\n if (sz === undefined) {\n size = Font.SIZE + 'pt ';\n }\n else if (typeof sz === 'number') {\n size = sz + 'pt ';\n }\n else {\n // size is already a string.\n size = sz.trim() + ' ';\n }\n const family = (_a = fontInfo.family) !== null && _a !== void 0 ? _a : Font.SANS_SERIF;\n return `${style}${weight}${size}${family}`;\n }\n /**\n * @param fontSize a number representing a font size, or a string font size with units.\n * @param scaleFactor multiply the size by this factor.\n * @returns size * scaleFactor (e.g., 16pt * 3 = 48pt, 8px * 0.5 = 4px, 24 * 2 = 48).\n * If the fontSize argument was a number, the return value will be a number.\n * If the fontSize argument was a string, the return value will be a string.\n */\n static scaleSize(fontSize, scaleFactor) {\n if (typeof fontSize === 'number') {\n return (fontSize * scaleFactor);\n }\n else {\n const value = parseFloat(fontSize);\n const unit = fontSize.replace(/[\\d.\\s]/g, ''); // Remove all numbers, dots, spaces.\n return `${value * scaleFactor}${unit}`;\n }\n }\n /**\n * @param weight a string (e.g., 'bold') or a number (e.g., 600 / semi-bold in the OpenType spec).\n * @returns true if the font weight indicates bold.\n */\n static isBold(weight) {\n if (!weight) {\n return false;\n }\n else if (typeof weight === 'number') {\n return weight >= 600;\n }\n else {\n // a string can be 'bold' or '700'\n const parsedWeight = parseInt(weight, 10);\n if (isNaN(parsedWeight)) {\n return weight.toLowerCase() === 'bold';\n }\n else {\n return parsedWeight >= 600;\n }\n }\n }\n /**\n * @param style\n * @returns true if the font style indicates 'italic'.\n */\n static isItalic(style) {\n if (!style) {\n return false;\n }\n else {\n return style.toLowerCase() === FontStyle.ITALIC;\n }\n }\n /**\n * @param fontName\n * @param woffURL The absolute or relative URL to the woff file.\n * @param includeWoff2 If true, we assume that a woff2 file is in\n * the same folder as the woff file, and will append a `2` to the url.\n */\n // Support distributions of the typescript compiler that do not yet include the FontFace API declarations.\n // eslint-disable-next-line\n // @ts-ignore\n static loadWebFont(fontName, woffURL, includeWoff2 = true) {\n return __awaiter(this, void 0, void 0, function* () {\n const woff2URL = includeWoff2 ? `url(${woffURL}2) format('woff2'), ` : '';\n const woff1URL = `url(${woffURL}) format('woff')`;\n const woffURLs = woff2URL + woff1URL;\n // eslint-disable-next-line\n // @ts-ignore\n const fontFace = new FontFace(fontName, woffURLs);\n yield fontFace.load();\n // eslint-disable-next-line\n // @ts-ignore\n document.fonts.add(fontFace);\n return fontFace;\n });\n }\n /**\n * Load the web fonts that are used by ChordSymbol. For example, `flow.html` calls:\n * `await Vex.Flow.Font.loadWebFonts();`\n * Alternatively, you may load web fonts with a stylesheet link (e.g., from Google Fonts),\n * and a @font-face { font-family: ... } rule in your CSS.\n * If you do not load either of these fonts, ChordSymbol will fall back to Times or Arial,\n * depending on the current music engraving font.\n *\n * You can customize `Font.WEB_FONT_HOST` and `Font.WEB_FONT_FILES` to load different fonts\n * for your app.\n */\n static loadWebFonts() {\n return __awaiter(this, void 0, void 0, function* () {\n const host = Font.WEB_FONT_HOST;\n const files = Font.WEB_FONT_FILES;\n for (const fontName in files) {\n const fontPath = files[fontName];\n Font.loadWebFont(fontName, host + fontPath);\n }\n });\n }\n /**\n * @param fontName\n * @param data optionally set the Font object's `.data` property.\n * This is usually done when setting up a font for the first time.\n * @param metrics optionally set the Font object's `.metrics` property.\n * This is usually done when setting up a font for the first time.\n * @returns a Font object with the given `fontName`.\n * Reuse an existing Font object if a matching one is found.\n */\n static load(fontName, data, metrics) {\n let font = Fonts[fontName];\n if (!font) {\n font = new Font(fontName);\n Fonts[fontName] = font;\n }\n if (data) {\n font.setData(data);\n }\n if (metrics) {\n font.setMetrics(metrics);\n }\n return font;\n }\n getName() {\n return this.name;\n }\n getData() {\n return defined(this.data, 'FontError', 'Missing font data');\n }\n getMetrics() {\n return defined(this.metrics, 'FontError', 'Missing metrics');\n }\n setData(data) {\n this.data = data;\n }\n setMetrics(metrics) {\n this.metrics = metrics;\n }\n hasData() {\n return this.data !== undefined;\n }\n getResolution() {\n return this.getData().resolution;\n }\n getGlyphs() {\n return this.getData().glyphs;\n }\n /**\n * Use the provided key to look up a value in this font's metrics file (e.g., bravura_metrics.ts, petaluma_metrics.ts).\n * @param key is a string separated by periods (e.g., stave.endPaddingMax, clef.lineCount.'5'.shiftY).\n * @param defaultValue is returned if the lookup fails.\n * @returns the retrieved value (or `defaultValue` if the lookup fails).\n */\n // eslint-disable-next-line\n lookupMetric(key, defaultValue) {\n const keyParts = key.split('.');\n // Start with the top level font metrics object, and keep looking deeper into the object (via each part of the period-delimited key).\n let currObj = this.getMetrics();\n for (let i = 0; i < keyParts.length; i++) {\n const keyPart = keyParts[i];\n const value = currObj[keyPart];\n if (value === undefined) {\n // If the key lookup fails, we fall back to the defaultValue.\n return defaultValue;\n }\n // The most recent lookup succeeded, so we drill deeper into the object.\n currObj = value;\n }\n // After checking every part of the key (i.e., the loop completed), return the most recently retrieved value.\n return currObj;\n }\n /** For debugging. */\n toString() {\n return '[' + this.name + ' Font]';\n }\n}\n//////////////////////////////////////////////////////////////////////////////////////////////////\n// STATIC MEMBERS\n/** Default sans-serif font family. */\nFont.SANS_SERIF = 'Arial, sans-serif';\n/** Default serif font family. */\nFont.SERIF = 'Times New Roman, serif';\n/** Default font size in `pt`. */\nFont.SIZE = 10;\n// CSS Font Sizes: 36pt == 48px == 3em == 300% == 0.5in\n/** Given a length (for units: pt, px, em, %, in, mm, cm) what is the scale factor to convert it to px? */\nFont.scaleToPxFrom = {\n pt: 4 / 3,\n px: 1,\n em: 16,\n '%': 4 / 25,\n in: 96,\n mm: 96 / 25.4,\n cm: 96 / 2.54,\n};\n/**\n * Customize this field to specify a different CDN for delivering web fonts.\n * Alternative: https://cdn.jsdelivr.net/npm/vexflow-fonts@1.0.3/\n * Or you can use your own host.\n */\nFont.WEB_FONT_HOST = 'https://unpkg.com/vexflow-fonts@1.0.3/';\n/**\n * These font files will be loaded from the CDN specified by `Font.WEB_FONT_HOST` when\n * `await Font.loadWebFonts()` is called. Customize this field to specify a different\n * set of fonts to load. See: `Font.loadWebFonts()`.\n */\nFont.WEB_FONT_FILES = {\n 'Roboto Slab': 'robotoslab/RobotoSlab-Medium_2.001.woff',\n PetalumaScript: 'petaluma/PetalumaScript_1.10_FS.woff',\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n//\n// ## Description\n//\n// This file implements a registry for VexFlow elements. It allows users\n// to track, query, and manage some subset of generated elements, and\n// dynamically get and set attributes.\n//\n// There are two ways to register with a registry:\n//\n// 1) Explicitly call `registry.register(elem:Element, id?:string)`, or,\n// 2) Call `Registry.enableDefaultRegistry(registry)` when ready, and all future\n// elements will automatically register with it.\n//\n// Once an element is registered, selected attributes are tracked and indexed by\n// the registry. This allows fast look up of elements by attributes like id, type,\n// and class.\nimport { RuntimeError } from './util';\n// Indexes are represented as maps of maps of maps. This allows\n// for both multi-labeling (e.g., an element can have multiple classes)\n// and efficient lookup.\nclass Index {\n constructor() {\n this.id = {};\n this.type = {};\n this.class = {};\n }\n}\nexport class Registry {\n constructor() {\n this.index = new Index();\n }\n static getDefaultRegistry() {\n return Registry.defaultRegistry;\n }\n // If you call `enableDefaultRegistry`, any new elements will auto-register with\n // the provided registry as soon as they're constructed.\n static enableDefaultRegistry(registry) {\n Registry.defaultRegistry = registry;\n }\n static disableDefaultRegistry() {\n Registry.defaultRegistry = undefined;\n }\n clear() {\n this.index = new Index();\n return this;\n }\n setIndexValue(name, value, id, elem) {\n const index = this.index;\n if (!index[name][value]) {\n index[name][value] = {};\n }\n index[name][value][id] = elem;\n }\n // Updates the indexes for element 'id'. If an element's attribute changes\n // from A -> B, make sure to remove the element from A.\n updateIndex({ id, name, value, oldValue }) {\n const elem = this.getElementById(id);\n if (oldValue !== undefined && this.index[name][oldValue]) {\n delete this.index[name][oldValue][id];\n }\n if (value && elem) {\n this.setIndexValue(name, value, elem.getAttribute('id'), elem);\n }\n }\n /**\n * Register element `elem` with this registry.\n * This adds the element to its index and watches it for attribute changes.\n * @param elem\n * @param id\n * @returns this\n */\n register(elem, id) {\n id = id || elem.getAttribute('id');\n if (!id) {\n throw new RuntimeError(\"Can't add element without `id` attribute to registry\");\n }\n // Manually add id to index, then update other indexes.\n elem.setAttribute('id', id);\n this.setIndexValue('id', id, id, elem);\n this.updateIndex({ id, name: 'type', value: elem.getAttribute('type'), oldValue: undefined });\n elem.onRegister(this);\n return this;\n }\n getElementById(id) {\n var _a, _b;\n return (_b = (_a = this.index.id) === null || _a === void 0 ? void 0 : _a[id]) === null || _b === void 0 ? void 0 : _b[id]; // return undefined if the id is not found.\n }\n getElementsByAttribute(attribute, value) {\n const index_attr = this.index[attribute];\n if (index_attr) {\n const index_attr_val = index_attr[value];\n if (index_attr_val) {\n const keys = Object.keys(index_attr_val);\n return keys.map((k) => index_attr_val[k]);\n }\n }\n return [];\n }\n getElementsByType(type) {\n return this.getElementsByAttribute('type', type);\n }\n getElementsByClass(className) {\n return this.getElementsByAttribute('class', className);\n }\n // This is called by the element when an attribute value changes. If an indexed\n // attribute changes, then update the local index.\n onUpdate(info) {\n const allowedNames = ['id', 'type', 'class'];\n if (allowedNames.includes(info.name)) {\n this.updateIndex(info);\n }\n return this;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Registry } from './registry';\nimport { Category } from './typeguard';\nimport { defined, prefix } from './util';\n/**\n * Element implements a generic base class for VexFlow, with implementations\n * of general functions and properties that can be inherited by all VexFlow elements.\n */\nexport class Element {\n constructor() {\n var _a;\n this.children = [];\n this.attrs = {\n id: Element.newID(),\n el: undefined,\n type: this.getCategory(),\n classes: {},\n };\n this.rendered = false;\n // If a default registry exist, then register with it right away.\n (_a = Registry.getDefaultRegistry()) === null || _a === void 0 ? void 0 : _a.register(this);\n }\n static get CATEGORY() {\n return Category.Element;\n }\n static newID() {\n return `auto${Element.ID++}`;\n }\n addChildElement(child) {\n this.children.push(child);\n return this;\n }\n getCategory() {\n return this.constructor.CATEGORY;\n }\n /**\n * Set the element style used to render.\n *\n * Example:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.draw();\n * ```\n * Note: If the element draws additional sub-elements (ie.: Modifiers in a Stave),\n * the style can be applied to all of them by means of the context:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.getContext().setFillStyle('red');\n * element.getContext().setStrokeStyle('red');\n * element.draw();\n * ```\n * or using drawWithStyle:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.drawWithStyle();\n * ```\n */\n setStyle(style) {\n this.style = style;\n return this;\n }\n /** Set the element & associated children style used for rendering. */\n setGroupStyle(style) {\n this.style = style;\n this.children.forEach((child) => child.setGroupStyle(style));\n return this;\n }\n /** Get the element style used for rendering. */\n getStyle() {\n return this.style;\n }\n /** Apply the element style to `context`. */\n applyStyle(context = this.context, style = this.getStyle()) {\n if (!style)\n return this;\n if (!context)\n return this;\n context.save();\n if (style.shadowColor)\n context.setShadowColor(style.shadowColor);\n if (style.shadowBlur)\n context.setShadowBlur(style.shadowBlur);\n if (style.fillStyle)\n context.setFillStyle(style.fillStyle);\n if (style.strokeStyle)\n context.setStrokeStyle(style.strokeStyle);\n if (style.lineWidth)\n context.setLineWidth(style.lineWidth);\n return this;\n }\n /** Restore the style of `context`. */\n restoreStyle(context = this.context, style = this.getStyle()) {\n if (!style)\n return this;\n if (!context)\n return this;\n context.restore();\n return this;\n }\n /**\n * Draw the element and all its sub-elements (ie.: Modifiers in a Stave)\n * with the element style.\n */\n drawWithStyle() {\n this.checkContext();\n this.applyStyle();\n this.draw();\n this.restoreStyle();\n }\n /** Check if it has a class label (An element can have multiple class labels). */\n hasClass(className) {\n return this.attrs.classes[className] === true;\n }\n /** Add a class label (An element can have multiple class labels). */\n addClass(className) {\n var _a;\n this.attrs.classes[className] = true;\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({\n id: this.attrs.id,\n name: 'class',\n value: className,\n oldValue: undefined,\n });\n return this;\n }\n /** Remove a class label (An element can have multiple class labels). */\n removeClass(className) {\n var _a;\n delete this.attrs.classes[className];\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({\n id: this.attrs.id,\n name: 'class',\n value: undefined,\n oldValue: className,\n });\n return this;\n }\n /** Call back from registry after the element is registered. */\n onRegister(registry) {\n this.registry = registry;\n return this;\n }\n /** Return the rendered status. */\n isRendered() {\n return this.rendered;\n }\n /** Set the rendered status. */\n setRendered(rendered = true) {\n this.rendered = rendered;\n return this;\n }\n /** Return the element attributes. */\n getAttributes() {\n return this.attrs;\n }\n /** Return an attribute. */\n // eslint-disable-next-line\n getAttribute(name) {\n return this.attrs[name];\n }\n /** Return associated SVGElement. */\n getSVGElement(suffix = '') {\n const id = prefix(this.attrs.id + suffix);\n const element = document.getElementById(id);\n if (element)\n return element;\n }\n /** Set an attribute. */\n // eslint-disable-next-line\n setAttribute(name, value) {\n var _a;\n const oldID = this.attrs.id;\n const oldValue = this.attrs[name];\n this.attrs[name] = value;\n // Register with old id to support id changes.\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({ id: oldID, name, value, oldValue });\n return this;\n }\n /** Get the boundingBox. */\n getBoundingBox() {\n return this.boundingBox;\n }\n /** Return the context. */\n getContext() {\n return this.context;\n }\n /** Set the context. */\n setContext(context) {\n this.context = context;\n return this;\n }\n /** Validate and return the context. */\n checkContext() {\n return defined(this.context, 'NoContext', 'No rendering context attached to instance.');\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // Font Handling\n /**\n * Provide a CSS compatible font string (e.g., 'bold 16px Arial').\n */\n set font(f) {\n this.setFont(f);\n }\n /** Returns the CSS compatible font string. */\n get font() {\n return Font.toCSSString(this.textFont);\n }\n /**\n * Set the element's font family, size, weight, style (e.g., `Arial`, `10pt`, `bold`, `italic`).\n * @param font is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (at least one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n * If no arguments are provided, then the font is set to the default font.\n * Each Element subclass may specify its own default by overriding the static `TEXT_FONT` property.\n */\n setFont(font, size, weight, style) {\n // Allow subclasses to override `TEXT_FONT`.\n const defaultTextFont = this.constructor.TEXT_FONT;\n const fontIsObject = typeof font === 'object';\n const fontIsString = typeof font === 'string';\n const fontIsUndefined = font === undefined;\n const sizeWeightStyleAreUndefined = size === undefined && weight === undefined && style === undefined;\n if (fontIsObject) {\n // `font` is case 1) a FontInfo object\n this.textFont = Object.assign(Object.assign({}, defaultTextFont), font);\n }\n else if (fontIsString && sizeWeightStyleAreUndefined) {\n // `font` is case 2) CSS font shorthand.\n this.textFont = Font.fromCSSString(font);\n }\n else if (fontIsUndefined && sizeWeightStyleAreUndefined) {\n // All arguments are undefined. Do not check for `arguments.length === 0`,\n // which fails on the edge case: `setFont(undefined)`.\n // TODO: See if we can remove this case entirely without introducing a visual diff.\n // The else case below seems like it should be equivalent to this case.\n this.textFont = Object.assign({}, defaultTextFont);\n }\n else {\n // `font` is case 3) a font family string (e.g., 'Times New Roman').\n // The other parameters represent the size, weight, and style.\n // It is okay for `font` to be undefined while one or more of the other arguments is provided.\n // Following CSS conventions, unspecified params are reset to the default.\n this.textFont = Font.validate(font !== null && font !== void 0 ? font : defaultTextFont.family, size !== null && size !== void 0 ? size : defaultTextFont.size, weight !== null && weight !== void 0 ? weight : defaultTextFont.weight, style !== null && style !== void 0 ? style : defaultTextFont.style);\n }\n return this;\n }\n getFont() {\n if (!this.textFont) {\n this.resetFont();\n }\n return Font.toCSSString(this.textFont);\n }\n /**\n * Reset the text font to the style indicated by the static `TEXT_FONT` property.\n * Subclasses can call this to initialize `textFont` for the first time.\n */\n resetFont() {\n this.setFont();\n }\n /** Return a copy of the current FontInfo object. */\n get fontInfo() {\n if (!this.textFont) {\n this.resetFont();\n }\n // We can cast to Required here, because\n // we just called resetFont() above to ensure this.textFont is set.\n return Object.assign({}, this.textFont);\n }\n set fontInfo(fontInfo) {\n this.setFont(fontInfo);\n }\n /** Change the font size, while keeping everything else the same. */\n setFontSize(size) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, size, fontInfo.weight, fontInfo.style);\n return this;\n }\n /**\n * @returns a CSS font-size string (e.g., '18pt', '12px', '1em').\n * See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.\n */\n getFontSize() {\n return this.fontSize;\n }\n /**\n * The size is 1) a string of the form '10pt' or '16px', compatible with the CSS font-size property.\n * or 2) a number, which is interpreted as a point size (i.e. 12 == '12pt').\n */\n set fontSize(size) {\n this.setFontSize(size);\n }\n /**\n * @returns a CSS font-size string (e.g., '18pt', '12px', '1em').\n */\n get fontSize() {\n let size = this.fontInfo.size;\n if (typeof size === 'number') {\n size = `${size}pt`;\n }\n return size;\n }\n /**\n * @returns the font size in `pt`.\n */\n get fontSizeInPoints() {\n return Font.convertSizeToPointValue(this.fontSize);\n }\n /**\n * @returns the font size in `px`.\n */\n get fontSizeInPixels() {\n return Font.convertSizeToPixelValue(this.fontSize);\n }\n /**\n * @returns a CSS font-style string (e.g., 'italic').\n */\n get fontStyle() {\n return this.fontInfo.style;\n }\n set fontStyle(style) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, fontInfo.size, fontInfo.weight, style);\n }\n /**\n * @returns a CSS font-weight string (e.g., 'bold').\n * As in CSS, font-weight is always returned as a string, even if it was set as a number.\n */\n get fontWeight() {\n return this.fontInfo.weight + '';\n }\n set fontWeight(weight) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, fontInfo.size, weight, fontInfo.style);\n }\n}\nElement.ID = 1000;\n/**\n * Default font for text. This is not related to music engraving. Instead, see `Flow.setMusicFont(...fontNames)`\n * to customize the font for musical symbols placed on the score.\n */\nElement.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: Font.SIZE,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Fraction } from './fraction';\nimport { Glyph } from './glyph';\nimport { RuntimeError } from './util';\nconst RESOLUTION = 16384;\n/**\n * Map duration numbers to 'ticks', the unit of duration used throughout VexFlow.\n * For example, a quarter note is 4, so it maps to RESOLUTION / 4 = 4096 ticks.\n */\nconst durations = {\n '1/2': RESOLUTION * 2,\n 1: RESOLUTION / 1,\n 2: RESOLUTION / 2,\n 4: RESOLUTION / 4,\n 8: RESOLUTION / 8,\n 16: RESOLUTION / 16,\n 32: RESOLUTION / 32,\n 64: RESOLUTION / 64,\n 128: RESOLUTION / 128,\n 256: RESOLUTION / 256,\n};\nconst durationAliases = {\n w: '1',\n h: '2',\n q: '4',\n // This is the default duration used to render bars (BarNote). Bars no longer\n // consume ticks, so this should be a no-op.\n // TODO(0xfe): This needs to be cleaned up.\n b: '256',\n};\nconst keySignatures = {\n C: { num: 0 },\n Am: { num: 0 },\n F: { acc: 'b', num: 1 },\n Dm: { acc: 'b', num: 1 },\n Bb: { acc: 'b', num: 2 },\n Gm: { acc: 'b', num: 2 },\n Eb: { acc: 'b', num: 3 },\n Cm: { acc: 'b', num: 3 },\n Ab: { acc: 'b', num: 4 },\n Fm: { acc: 'b', num: 4 },\n Db: { acc: 'b', num: 5 },\n Bbm: { acc: 'b', num: 5 },\n Gb: { acc: 'b', num: 6 },\n Ebm: { acc: 'b', num: 6 },\n Cb: { acc: 'b', num: 7 },\n Abm: { acc: 'b', num: 7 },\n G: { acc: '#', num: 1 },\n Em: { acc: '#', num: 1 },\n D: { acc: '#', num: 2 },\n Bm: { acc: '#', num: 2 },\n A: { acc: '#', num: 3 },\n 'F#m': { acc: '#', num: 3 },\n E: { acc: '#', num: 4 },\n 'C#m': { acc: '#', num: 4 },\n B: { acc: '#', num: 5 },\n 'G#m': { acc: '#', num: 5 },\n 'F#': { acc: '#', num: 6 },\n 'D#m': { acc: '#', num: 6 },\n 'C#': { acc: '#', num: 7 },\n 'A#m': { acc: '#', num: 7 },\n};\nconst clefs = {\n treble: { line_shift: 0 },\n bass: { line_shift: 6 },\n tenor: { line_shift: 4 },\n alto: { line_shift: 3 },\n soprano: { line_shift: 1 },\n percussion: { line_shift: 0 },\n 'mezzo-soprano': { line_shift: 2 },\n 'baritone-c': { line_shift: 5 },\n 'baritone-f': { line_shift: 5 },\n subbass: { line_shift: 7 },\n french: { line_shift: -1 },\n};\nconst notesInfo = {\n C: { index: 0, int_val: 0 },\n CN: { index: 0, int_val: 0, accidental: 'n' },\n 'C#': { index: 0, int_val: 1, accidental: '#' },\n 'C##': { index: 0, int_val: 2, accidental: '##' },\n CB: { index: 0, int_val: 11, accidental: 'b' },\n CBB: { index: 0, int_val: 10, accidental: 'bb' },\n D: { index: 1, int_val: 2 },\n DN: { index: 1, int_val: 2, accidental: 'n' },\n 'D#': { index: 1, int_val: 3, accidental: '#' },\n 'D##': { index: 1, int_val: 4, accidental: '##' },\n DB: { index: 1, int_val: 1, accidental: 'b' },\n DBB: { index: 1, int_val: 0, accidental: 'bb' },\n E: { index: 2, int_val: 4 },\n EN: { index: 2, int_val: 4, accidental: 'n' },\n 'E#': { index: 2, int_val: 5, accidental: '#' },\n 'E##': { index: 2, int_val: 6, accidental: '##' },\n EB: { index: 2, int_val: 3, accidental: 'b' },\n EBB: { index: 2, int_val: 2, accidental: 'bb' },\n F: { index: 3, int_val: 5 },\n FN: { index: 3, int_val: 5, accidental: 'n' },\n 'F#': { index: 3, int_val: 6, accidental: '#' },\n 'F##': { index: 3, int_val: 7, accidental: '##' },\n FB: { index: 3, int_val: 4, accidental: 'b' },\n FBB: { index: 3, int_val: 3, accidental: 'bb' },\n G: { index: 4, int_val: 7 },\n GN: { index: 4, int_val: 7, accidental: 'n' },\n 'G#': { index: 4, int_val: 8, accidental: '#' },\n 'G##': { index: 4, int_val: 9, accidental: '##' },\n GB: { index: 4, int_val: 6, accidental: 'b' },\n GBB: { index: 4, int_val: 5, accidental: 'bb' },\n A: { index: 5, int_val: 9 },\n AN: { index: 5, int_val: 9, accidental: 'n' },\n 'A#': { index: 5, int_val: 10, accidental: '#' },\n 'A##': { index: 5, int_val: 11, accidental: '##' },\n AB: { index: 5, int_val: 8, accidental: 'b' },\n ABB: { index: 5, int_val: 7, accidental: 'bb' },\n B: { index: 6, int_val: 11 },\n BN: { index: 6, int_val: 11, accidental: 'n' },\n 'B#': { index: 6, int_val: 12, accidental: '#' },\n 'B##': { index: 6, int_val: 13, accidental: '##' },\n BB: { index: 6, int_val: 10, accidental: 'b' },\n BBB: { index: 6, int_val: 9, accidental: 'bb' },\n R: { index: 6, rest: true },\n X: {\n index: 6,\n accidental: '',\n octave: 4,\n code: 'noteheadXBlack',\n shift_right: 5.5,\n },\n};\nconst validNoteTypes = {\n n: { name: 'note' },\n r: { name: 'rest' },\n h: { name: 'harmonic' },\n m: { name: 'muted' },\n s: { name: 'slash' },\n g: { name: 'ghost' },\n d: { name: 'diamond' },\n x: { name: 'x' },\n ci: { name: 'circled' },\n cx: { name: 'circle x' },\n sf: { name: 'slashed' },\n sb: { name: 'slashed backward' },\n sq: { name: 'square' },\n tu: { name: 'triangle up' },\n td: { name: 'triangle down' },\n};\nconst accidentals = {\n '#': { code: 'accidentalSharp', parenRightPaddingAdjustment: -1 },\n '##': { code: 'accidentalDoubleSharp', parenRightPaddingAdjustment: -1 },\n b: { code: 'accidentalFlat', parenRightPaddingAdjustment: -2 },\n bb: { code: 'accidentalDoubleFlat', parenRightPaddingAdjustment: -2 },\n n: { code: 'accidentalNatural', parenRightPaddingAdjustment: -1 },\n '{': { code: 'accidentalParensLeft', parenRightPaddingAdjustment: -1 },\n '}': { code: 'accidentalParensRight', parenRightPaddingAdjustment: -1 },\n db: { code: 'accidentalThreeQuarterTonesFlatZimmermann', parenRightPaddingAdjustment: -1 },\n d: { code: 'accidentalQuarterToneFlatStein', parenRightPaddingAdjustment: 0 },\n '++': { code: 'accidentalThreeQuarterTonesSharpStein', parenRightPaddingAdjustment: -1 },\n '+': { code: 'accidentalQuarterToneSharpStein', parenRightPaddingAdjustment: -1 },\n '+-': { code: 'accidentalKucukMucennebSharp', parenRightPaddingAdjustment: -1 },\n bs: { code: 'accidentalBakiyeFlat', parenRightPaddingAdjustment: -1 },\n bss: { code: 'accidentalBuyukMucennebFlat', parenRightPaddingAdjustment: -1 },\n o: { code: 'accidentalSori', parenRightPaddingAdjustment: -1 },\n k: { code: 'accidentalKoron', parenRightPaddingAdjustment: -1 },\n bbs: { code: 'vexAccidentalMicrotonal1', parenRightPaddingAdjustment: -1 },\n '++-': { code: 'vexAccidentalMicrotonal2', parenRightPaddingAdjustment: -1 },\n ashs: { code: 'vexAccidentalMicrotonal3', parenRightPaddingAdjustment: -1 },\n afhf: { code: 'vexAccidentalMicrotonal4', parenRightPaddingAdjustment: -1 },\n accSagittal5v7KleismaUp: { code: 'accSagittal5v7KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v7KleismaDown: { code: 'accSagittal5v7KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5CommaUp: { code: 'accSagittal5CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5CommaDown: { code: 'accSagittal5CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7CommaUp: { code: 'accSagittal7CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7CommaDown: { code: 'accSagittal7CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal25SmallDiesisUp: { code: 'accSagittal25SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal25SmallDiesisDown: { code: 'accSagittal25SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal35MediumDiesisUp: { code: 'accSagittal35MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal35MediumDiesisDown: { code: 'accSagittal35MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11MediumDiesisUp: { code: 'accSagittal11MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11MediumDiesisDown: { code: 'accSagittal11MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11LargeDiesisUp: { code: 'accSagittal11LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11LargeDiesisDown: { code: 'accSagittal11LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal35LargeDiesisUp: { code: 'accSagittal35LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal35LargeDiesisDown: { code: 'accSagittal35LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp25SDown: { code: 'accSagittalSharp25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat25SUp: { code: 'accSagittalFlat25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7CDown: { code: 'accSagittalSharp7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7CUp: { code: 'accSagittalFlat7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5CDown: { code: 'accSagittalSharp5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5CUp: { code: 'accSagittalFlat5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v7kDown: { code: 'accSagittalSharp5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v7kUp: { code: 'accSagittalFlat5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp: { code: 'accSagittalSharp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat: { code: 'accSagittalFlat', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v7kUp: { code: 'accSagittalSharp5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v7kDown: { code: 'accSagittalFlat5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5CUp: { code: 'accSagittalSharp5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5CDown: { code: 'accSagittalFlat5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7CUp: { code: 'accSagittalSharp7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7CDown: { code: 'accSagittalFlat7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp25SUp: { code: 'accSagittalSharp25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat25SDown: { code: 'accSagittalFlat25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp35MUp: { code: 'accSagittalSharp35MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat35MDown: { code: 'accSagittalFlat35MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11MUp: { code: 'accSagittalSharp11MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11MDown: { code: 'accSagittalFlat11MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11LUp: { code: 'accSagittalSharp11LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11LDown: { code: 'accSagittalFlat11LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp35LUp: { code: 'accSagittalSharp35LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat35LDown: { code: 'accSagittalFlat35LDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp25SDown: { code: 'accSagittalDoubleSharp25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat25SUp: { code: 'accSagittalDoubleFlat25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7CDown: { code: 'accSagittalDoubleSharp7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7CUp: { code: 'accSagittalDoubleFlat7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5CDown: { code: 'accSagittalDoubleSharp5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5CUp: { code: 'accSagittalDoubleFlat5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v7kDown: { code: 'accSagittalDoubleSharp5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v7kUp: { code: 'accSagittalDoubleFlat5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp: { code: 'accSagittalDoubleSharp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat: { code: 'accSagittalDoubleFlat', parenRightPaddingAdjustment: -1 },\n accSagittal7v11KleismaUp: { code: 'accSagittal7v11KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v11KleismaDown: { code: 'accSagittal7v11KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal17CommaUp: { code: 'accSagittal17CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal17CommaDown: { code: 'accSagittal17CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal55CommaUp: { code: 'accSagittal55CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal55CommaDown: { code: 'accSagittal55CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7v11CommaUp: { code: 'accSagittal7v11CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v11CommaDown: { code: 'accSagittal7v11CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v11SmallDiesisUp: { code: 'accSagittal5v11SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v11SmallDiesisDown: { code: 'accSagittal5v11SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v11SDown: { code: 'accSagittalSharp5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v11SUp: { code: 'accSagittalFlat5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11CDown: { code: 'accSagittalSharp7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11CUp: { code: 'accSagittalFlat7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp55CDown: { code: 'accSagittalSharp55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat55CUp: { code: 'accSagittalFlat55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17CDown: { code: 'accSagittalSharp17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17CUp: { code: 'accSagittalFlat17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11kDown: { code: 'accSagittalSharp7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11kUp: { code: 'accSagittalFlat7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11kUp: { code: 'accSagittalSharp7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11kDown: { code: 'accSagittalFlat7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17CUp: { code: 'accSagittalSharp17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17CDown: { code: 'accSagittalFlat17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp55CUp: { code: 'accSagittalSharp55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat55CDown: { code: 'accSagittalFlat55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11CUp: { code: 'accSagittalSharp7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11CDown: { code: 'accSagittalFlat7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v11SUp: { code: 'accSagittalSharp5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v11SDown: { code: 'accSagittalFlat5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v11SDown: { code: 'accSagittalDoubleSharp5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v11SUp: { code: 'accSagittalDoubleFlat5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v11CDown: { code: 'accSagittalDoubleSharp7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v11CUp: { code: 'accSagittalDoubleFlat7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp55CDown: { code: 'accSagittalDoubleSharp55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat55CUp: { code: 'accSagittalDoubleFlat55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp17CDown: { code: 'accSagittalDoubleSharp17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat17CUp: { code: 'accSagittalDoubleFlat17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v11kDown: { code: 'accSagittalDoubleSharp7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v11kUp: { code: 'accSagittalDoubleFlat7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittal23CommaUp: { code: 'accSagittal23CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal23CommaDown: { code: 'accSagittal23CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v19CommaUp: { code: 'accSagittal5v19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v19CommaDown: { code: 'accSagittal5v19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v23SmallDiesisUp: { code: 'accSagittal5v23SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v23SmallDiesisDown: { code: 'accSagittal5v23SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v23SDown: { code: 'accSagittalSharp5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v23SUp: { code: 'accSagittalFlat5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v19CDown: { code: 'accSagittalSharp5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v19CUp: { code: 'accSagittalFlat5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23CDown: { code: 'accSagittalSharp23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23CUp: { code: 'accSagittalFlat23CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23CUp: { code: 'accSagittalSharp23CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23CDown: { code: 'accSagittalFlat23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v19CUp: { code: 'accSagittalSharp5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v19CDown: { code: 'accSagittalFlat5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v23SUp: { code: 'accSagittalSharp5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v23SDown: { code: 'accSagittalFlat5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v23SDown: { code: 'accSagittalDoubleSharp5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v23SUp: { code: 'accSagittalDoubleFlat5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v19CDown: { code: 'accSagittalDoubleSharp5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v19CUp: { code: 'accSagittalDoubleFlat5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp23CDown: { code: 'accSagittalDoubleSharp23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat23CUp: { code: 'accSagittalDoubleFlat23CUp', parenRightPaddingAdjustment: -1 },\n accSagittal19SchismaUp: { code: 'accSagittal19SchismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal19SchismaDown: { code: 'accSagittal19SchismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal17KleismaUp: { code: 'accSagittal17KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal17KleismaDown: { code: 'accSagittal17KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal143CommaUp: { code: 'accSagittal143CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal143CommaDown: { code: 'accSagittal143CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v49CommaUp: { code: 'accSagittal11v49CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v49CommaDown: { code: 'accSagittal11v49CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal19CommaUp: { code: 'accSagittal19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal19CommaDown: { code: 'accSagittal19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7v19CommaUp: { code: 'accSagittal7v19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v19CommaDown: { code: 'accSagittal7v19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal49SmallDiesisUp: { code: 'accSagittal49SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49SmallDiesisDown: { code: 'accSagittal49SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal23SmallDiesisUp: { code: 'accSagittal23SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal23SmallDiesisDown: { code: 'accSagittal23SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v13MediumDiesisUp: { code: 'accSagittal5v13MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v13MediumDiesisDown: { code: 'accSagittal5v13MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v19MediumDiesisUp: { code: 'accSagittal11v19MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v19MediumDiesisDown: { code: 'accSagittal11v19MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal49MediumDiesisUp: { code: 'accSagittal49MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49MediumDiesisDown: { code: 'accSagittal49MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v49MediumDiesisUp: { code: 'accSagittal5v49MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v49MediumDiesisDown: { code: 'accSagittal5v49MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal49LargeDiesisUp: { code: 'accSagittal49LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49LargeDiesisDown: { code: 'accSagittal49LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v19LargeDiesisUp: { code: 'accSagittal11v19LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v19LargeDiesisDown: { code: 'accSagittal11v19LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v13LargeDiesisUp: { code: 'accSagittal5v13LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v13LargeDiesisDown: { code: 'accSagittal5v13LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23SDown: { code: 'accSagittalSharp23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23SUp: { code: 'accSagittalFlat23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49SDown: { code: 'accSagittalSharp49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49SUp: { code: 'accSagittalFlat49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v19CDown: { code: 'accSagittalSharp7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v19CUp: { code: 'accSagittalFlat7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19CDown: { code: 'accSagittalSharp19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19CUp: { code: 'accSagittalFlat19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v49CDown: { code: 'accSagittalSharp11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v49CUp: { code: 'accSagittalFlat11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp143CDown: { code: 'accSagittalSharp143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat143CUp: { code: 'accSagittalFlat143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17kDown: { code: 'accSagittalSharp17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17kUp: { code: 'accSagittalFlat17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19sDown: { code: 'accSagittalSharp19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19sUp: { code: 'accSagittalFlat19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19sUp: { code: 'accSagittalSharp19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19sDown: { code: 'accSagittalFlat19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17kUp: { code: 'accSagittalSharp17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17kDown: { code: 'accSagittalFlat17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp143CUp: { code: 'accSagittalSharp143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat143CDown: { code: 'accSagittalFlat143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v49CUp: { code: 'accSagittalSharp11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v49CDown: { code: 'accSagittalFlat11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19CUp: { code: 'accSagittalSharp19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19CDown: { code: 'accSagittalFlat19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v19CUp: { code: 'accSagittalSharp7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v19CDown: { code: 'accSagittalFlat7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49SUp: { code: 'accSagittalSharp49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49SDown: { code: 'accSagittalFlat49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23SUp: { code: 'accSagittalSharp23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23SDown: { code: 'accSagittalFlat23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v13MUp: { code: 'accSagittalSharp5v13MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v13MDown: { code: 'accSagittalFlat5v13MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v19MUp: { code: 'accSagittalSharp11v19MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v19MDown: { code: 'accSagittalFlat11v19MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49MUp: { code: 'accSagittalSharp49MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49MDown: { code: 'accSagittalFlat49MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v49MUp: { code: 'accSagittalSharp5v49MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v49MDown: { code: 'accSagittalFlat5v49MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49LUp: { code: 'accSagittalSharp49LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49LDown: { code: 'accSagittalFlat49LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v19LUp: { code: 'accSagittalSharp11v19LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v19LDown: { code: 'accSagittalFlat11v19LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v13LUp: { code: 'accSagittalSharp5v13LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v13LDown: { code: 'accSagittalFlat5v13LDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp23SDown: { code: 'accSagittalDoubleSharp23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat23SUp: { code: 'accSagittalDoubleFlat23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp49SDown: { code: 'accSagittalDoubleSharp49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat49SUp: { code: 'accSagittalDoubleFlat49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v19CDown: { code: 'accSagittalDoubleSharp7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v19CUp: { code: 'accSagittalDoubleFlat7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp19CDown: { code: 'accSagittalDoubleSharp19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat19CUp: { code: 'accSagittalDoubleFlat19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp11v49CDown: { code: 'accSagittalDoubleSharp11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat11v49CUp: { code: 'accSagittalDoubleFlat11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp143CDown: { code: 'accSagittalDoubleSharp143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat143CUp: { code: 'accSagittalDoubleFlat143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp17kDown: { code: 'accSagittalDoubleSharp17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat17kUp: { code: 'accSagittalDoubleFlat17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp19sDown: { code: 'accSagittalDoubleSharp19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat19sUp: { code: 'accSagittalDoubleFlat19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalShaftUp: { code: 'accSagittalShaftUp', parenRightPaddingAdjustment: -1 },\n accSagittalShaftDown: { code: 'accSagittalShaftDown', parenRightPaddingAdjustment: -1 },\n accSagittalAcute: { code: 'accSagittalAcute', parenRightPaddingAdjustment: -1 },\n accSagittalGrave: { code: 'accSagittalGrave', parenRightPaddingAdjustment: -1 },\n accSagittal1MinaUp: { code: 'accSagittal1MinaUp', parenRightPaddingAdjustment: -1 },\n accSagittal1MinaDown: { code: 'accSagittal1MinaDown', parenRightPaddingAdjustment: -1 },\n accSagittal2MinasUp: { code: 'accSagittal2MinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal2MinasDown: { code: 'accSagittal2MinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal1TinaUp: { code: 'accSagittal1TinaUp', parenRightPaddingAdjustment: -1 },\n accSagittal1TinaDown: { code: 'accSagittal1TinaDown', parenRightPaddingAdjustment: -1 },\n accSagittal2TinasUp: { code: 'accSagittal2TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal2TinasDown: { code: 'accSagittal2TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal3TinasUp: { code: 'accSagittal3TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal3TinasDown: { code: 'accSagittal3TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal4TinasUp: { code: 'accSagittal4TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal4TinasDown: { code: 'accSagittal4TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal5TinasUp: { code: 'accSagittal5TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal5TinasDown: { code: 'accSagittal5TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal6TinasUp: { code: 'accSagittal6TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal6TinasDown: { code: 'accSagittal6TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal7TinasUp: { code: 'accSagittal7TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal7TinasDown: { code: 'accSagittal7TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal8TinasUp: { code: 'accSagittal8TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal8TinasDown: { code: 'accSagittal8TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal9TinasUp: { code: 'accSagittal9TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal9TinasDown: { code: 'accSagittal9TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittalFractionalTinaUp: { code: 'accSagittalFractionalTinaUp', parenRightPaddingAdjustment: -1 },\n accSagittalFractionalTinaDown: { code: 'accSagittalFractionalTinaDown', parenRightPaddingAdjustment: -1 },\n accidentalNarrowReversedFlat: { code: 'accidentalNarrowReversedFlat', parenRightPaddingAdjustment: -1 },\n accidentalNarrowReversedFlatAndFlat: {\n code: 'accidentalNarrowReversedFlatAndFlat',\n parenRightPaddingAdjustment: -1,\n },\n accidentalWilsonPlus: { code: 'accidentalWilsonPlus', parenRightPaddingAdjustment: -1 },\n accidentalWilsonMinus: { code: 'accidentalWilsonMinus', parenRightPaddingAdjustment: -1 },\n};\n// Helps determine the layout of accidentals.\nconst accidentalColumns = {\n 1: {\n a: [1],\n b: [1],\n },\n 2: {\n a: [1, 2],\n },\n 3: {\n a: [1, 3, 2],\n b: [1, 2, 1],\n second_on_bottom: [1, 2, 3],\n },\n 4: {\n a: [1, 3, 4, 2],\n b: [1, 2, 3, 1],\n spaced_out_tetrachord: [1, 2, 1, 2],\n },\n 5: {\n a: [1, 3, 5, 4, 2],\n b: [1, 2, 4, 3, 1],\n spaced_out_pentachord: [1, 2, 3, 2, 1],\n very_spaced_out_pentachord: [1, 2, 1, 2, 1],\n },\n 6: {\n a: [1, 3, 5, 6, 4, 2],\n b: [1, 2, 4, 5, 3, 1],\n spaced_out_hexachord: [1, 3, 2, 1, 3, 2],\n very_spaced_out_hexachord: [1, 2, 1, 2, 1, 2],\n },\n};\nconst articulations = {\n 'a.': { code: 'augmentationDot', between_lines: true },\n av: {\n aboveCode: 'articStaccatissimoAbove',\n belowCode: 'articStaccatissimoBelow',\n between_lines: true,\n },\n 'a>': {\n aboveCode: 'articAccentAbove',\n belowCode: 'articAccentBelow',\n between_lines: true,\n },\n 'a-': {\n aboveCode: 'articTenutoAbove',\n belowCode: 'articTenutoBelow',\n between_lines: true,\n },\n 'a^': {\n aboveCode: 'articMarcatoAbove',\n belowCode: 'articMarcatoBelow',\n between_lines: false,\n },\n 'a+': { code: 'pluckedLeftHandPizzicato', between_lines: false },\n ao: {\n aboveCode: 'pluckedSnapPizzicatoAbove',\n belowCode: 'pluckedSnapPizzicatoBelow',\n between_lines: false,\n },\n ah: { code: 'stringsHarmonic', between_lines: false },\n 'a@': { aboveCode: 'fermataAbove', belowCode: 'fermataBelow', between_lines: false },\n 'a@a': { code: 'fermataAbove', between_lines: false },\n 'a@u': { code: 'fermataBelow', between_lines: false },\n 'a@s': { aboveCode: 'fermataShortAbove', belowCode: 'fermataShortBelow', between_lines: false },\n 'a@as': { code: 'fermataShortAbove', between_lines: false },\n 'a@us': { code: 'fermataShortBelow', between_lines: false },\n 'a@l': { aboveCode: 'fermataLongAbove', belowCode: 'fermataLongBelow', between_lines: false },\n 'a@al': { code: 'fermataLongAbove', between_lines: false },\n 'a@ul': { code: 'fermataLongBelow', between_lines: false },\n 'a@vl': { aboveCode: 'fermataVeryLongAbove', belowCode: 'fermataVeryLongBelow', between_lines: false },\n 'a@avl': { code: 'fermataVeryLongAbove', between_lines: false },\n 'a@uvl': { code: 'fermataVeryLongBelow', between_lines: false },\n 'a|': { code: 'stringsUpBow', between_lines: false },\n am: { code: 'stringsDownBow', between_lines: false },\n 'a,': { code: 'pictChokeCymbal', between_lines: false }, // Choked\n};\nconst ornaments = {\n mordent: { code: 'ornamentShortTrill' },\n mordent_inverted: { code: 'ornamentMordent' },\n turn: { code: 'ornamentTurn' },\n turn_inverted: { code: 'ornamentTurnSlash' },\n tr: { code: 'ornamentTrill' },\n upprall: { code: 'ornamentPrecompSlideTrillDAnglebert' },\n downprall: { code: 'ornamentPrecompDoubleCadenceUpperPrefix' },\n prallup: { code: 'ornamentPrecompTrillSuffixDandrieu' },\n pralldown: { code: 'ornamentPrecompTrillLowerSuffix' },\n upmordent: { code: 'ornamentPrecompSlideTrillBach' },\n downmordent: { code: 'ornamentPrecompDoubleCadenceUpperPrefixTurn' },\n lineprall: { code: 'ornamentPrecompAppoggTrill' },\n prallprall: { code: 'ornamentTremblement' },\n scoop: { code: 'brassScoop' },\n doit: { code: 'brassDoitMedium' },\n fall: { code: 'brassFallLipShort' },\n doitLong: { code: 'brassLiftMedium' },\n fallLong: { code: 'brassFallRoughMedium' },\n bend: { code: 'brassBend' },\n plungerClosed: { code: 'brassMuteClosed' },\n plungerOpen: { code: 'brassMuteOpen' },\n flip: { code: 'brassFlip' },\n jazzTurn: { code: 'brassJazzTurn' },\n smear: { code: 'brassSmear' },\n};\nexport class Tables {\n /**\n * @returns the `Font` object at the head of the music font stack.\n */\n static currentMusicFont() {\n if (Tables.MUSIC_FONT_STACK.length === 0) {\n throw new RuntimeError('NoFonts', 'The font stack is empty. See: await Flow.fetchMusicFont(...); Flow.setMusicFont(...).');\n }\n else {\n return Tables.MUSIC_FONT_STACK[0];\n }\n }\n static clefProperties(clef) {\n if (!clef || !(clef in clefs))\n throw new RuntimeError('BadArgument', 'Invalid clef: ' + clef);\n return clefs[clef];\n }\n /**\n * @param keyOctaveGlyph a string in the format \"key/octave\" (e.g., \"c/5\") or \"key/octave/custom-note-head-code\" (e.g., \"g/5/t3\").\n * @param clef\n * @param params a struct with one option, `octave_shift` for clef ottavation (0 = default; 1 = 8va; -1 = 8vb, etc.).\n * @returns properties for the specified note.\n */\n // eslint-disable-next-line\n static keyProperties(keyOctaveGlyph, clef = 'treble', params) {\n let options = { octave_shift: 0, duration: '4' };\n if (typeof params === 'object') {\n options = Object.assign(Object.assign({}, options), params);\n }\n const duration = Tables.sanitizeDuration(options.duration);\n const pieces = keyOctaveGlyph.split('/');\n if (pieces.length < 2) {\n throw new RuntimeError('BadArguments', `First argument must be note/octave or note/octave/glyph-code: ${keyOctaveGlyph}`);\n }\n const key = pieces[0].toUpperCase();\n const value = notesInfo[key];\n if (!value)\n throw new RuntimeError('BadArguments', 'Invalid key name: ' + key);\n if (value.octave)\n pieces[1] = value.octave.toString();\n let octave = parseInt(pieces[1], 10);\n // Octave_shift is the shift to compensate for clef 8va/8vb.\n octave += -1 * options.octave_shift;\n const baseIndex = octave * 7 - 4 * 7;\n let line = (baseIndex + value.index) / 2;\n line += Tables.clefProperties(clef).line_shift;\n let stroke = 0;\n if (line <= 0 && (line * 2) % 2 === 0)\n stroke = 1; // stroke up\n if (line >= 6 && (line * 2) % 2 === 0)\n stroke = -1; // stroke down\n // Integer value for note arithmetic.\n const int_value = typeof value.int_val !== 'undefined' ? octave * 12 + value.int_val : undefined;\n // If the user specified a glyph, overwrite the glyph code.\n const code = value.code;\n const shift_right = value.shift_right;\n let customNoteHeadProps = {};\n if (pieces.length > 2 && pieces[2]) {\n const glyphName = pieces[2].toUpperCase();\n customNoteHeadProps = { code: this.codeNoteHead(glyphName, duration) } || {};\n }\n return Object.assign({ key,\n octave,\n line,\n int_value, accidental: value.accidental, code,\n stroke,\n shift_right, displaced: false }, customNoteHeadProps);\n }\n static integerToNote(integer) {\n if (typeof integer === 'undefined' || integer < 0 || integer > 11) {\n throw new RuntimeError('BadArguments', `integerToNote() requires an integer in the range [0, 11]: ${integer}`);\n }\n const table = {\n 0: 'C',\n 1: 'C#',\n 2: 'D',\n 3: 'D#',\n 4: 'E',\n 5: 'F',\n 6: 'F#',\n 7: 'G',\n 8: 'G#',\n 9: 'A',\n 10: 'A#',\n 11: 'B',\n };\n const noteValue = table[integer];\n if (!noteValue) {\n throw new RuntimeError('BadArguments', `Unknown note value for integer: ${integer}`);\n }\n return noteValue;\n }\n static tabToGlyph(fret, scale = 1.0) {\n let glyph = undefined;\n let width = 0;\n let shift_y = 0;\n if (fret.toUpperCase() === 'X') {\n const glyphMetrics = new Glyph('accidentalDoubleSharp', Tables.TABLATURE_FONT_SCALE).getMetrics();\n glyph = 'accidentalDoubleSharp';\n if (glyphMetrics.width == undefined || glyphMetrics.height == undefined)\n throw new RuntimeError('InvalidMetrics', 'Width and height required');\n width = glyphMetrics.width;\n shift_y = -glyphMetrics.height / 2;\n }\n else {\n width = Tables.textWidth(fret);\n }\n return {\n text: fret,\n code: glyph,\n getWidth: () => width * scale,\n shift_y,\n };\n }\n // Used by annotation.ts and bend.ts. Clearly this implementation only works for the default font size.\n // TODO: The actual width depends on the font family, size, weight, style.\n static textWidth(text) {\n return 7 * text.toString().length;\n }\n static articulationCodes(artic) {\n return articulations[artic];\n }\n static accidentalCodes(acc) {\n return accidentals[acc];\n }\n static ornamentCodes(acc) {\n return ornaments[acc];\n }\n static keySignature(spec) {\n const keySpec = keySignatures[spec];\n if (!keySpec) {\n throw new RuntimeError('BadKeySignature', `Bad key signature spec: '${spec}'`);\n }\n if (!keySpec.acc) {\n return [];\n }\n const accidentalList = {\n b: [2, 0.5, 2.5, 1, 3, 1.5, 3.5],\n '#': [0, 1.5, -0.5, 1, 2.5, 0.5, 2],\n };\n const notes = accidentalList[keySpec.acc];\n const acc_list = [];\n for (let i = 0; i < keySpec.num; ++i) {\n const line = notes[i];\n acc_list.push({ type: keySpec.acc, line });\n }\n return acc_list;\n }\n static getKeySignatures() {\n return keySignatures;\n }\n static hasKeySignature(spec) {\n return spec in keySignatures;\n }\n /**\n * Convert duration aliases to the number based duration.\n * If the input isn't an alias, simply return the input.\n * @param duration\n * @returns Example: 'q' -> '4', '8' -> '8'\n */\n static sanitizeDuration(duration) {\n const durationNumber = durationAliases[duration];\n if (durationNumber !== undefined) {\n duration = durationNumber;\n }\n if (durations[duration] === undefined) {\n throw new RuntimeError('BadArguments', `The provided duration is not valid: ${duration}`);\n }\n return duration;\n }\n /** Convert the `duration` to a fraction. */\n static durationToFraction(duration) {\n return new Fraction().parse(Tables.sanitizeDuration(duration));\n }\n /** Convert the `duration` to a number. */\n static durationToNumber(duration) {\n return Tables.durationToFraction(duration).value();\n }\n /* Convert the `duration` to total ticks. */\n static durationToTicks(duration) {\n duration = Tables.sanitizeDuration(duration);\n const ticks = durations[duration];\n if (ticks === undefined) {\n throw new RuntimeError('InvalidDuration');\n }\n return ticks;\n }\n static codeNoteHead(type, duration) {\n let code = '';\n switch (type) {\n /* Diamond */\n case 'D0':\n code = 'noteheadDiamondWhole';\n break;\n case 'D1':\n code = 'noteheadDiamondHalf';\n break;\n case 'D2':\n code = 'noteheadDiamondBlack';\n break;\n case 'D3':\n code = 'noteheadDiamondBlack';\n break;\n /* Triangle */\n case 'T0':\n code = 'noteheadTriangleUpWhole';\n break;\n case 'T1':\n code = 'noteheadTriangleUpHalf';\n break;\n case 'T2':\n code = 'noteheadTriangleUpBlack';\n break;\n case 'T3':\n code = 'noteheadTriangleUpBlack';\n break;\n /* Cross */\n case 'X0':\n code = 'noteheadXWhole';\n break;\n case 'X1':\n code = 'noteheadXHalf';\n break;\n case 'X2':\n code = 'noteheadXBlack';\n break;\n case 'X3':\n code = 'noteheadCircleX';\n break;\n /* Square */\n case 'S1':\n code = 'noteheadSquareWhite';\n break;\n case 'S2':\n code = 'noteheadSquareBlack';\n break;\n /* Rectangle */\n case 'R1':\n code = 'vexNoteHeadRectWhite'; // no smufl code\n break;\n case 'R2':\n code = 'vexNoteHeadRectBlack'; // no smufl code\n break;\n case 'DO':\n code = 'noteheadTriangleUpBlack';\n break;\n case 'RE':\n code = 'noteheadMoonBlack';\n break;\n case 'MI':\n code = 'noteheadDiamondBlack';\n break;\n case 'FA':\n code = 'noteheadTriangleLeftBlack';\n break;\n case 'FAUP':\n code = 'noteheadTriangleRightBlack';\n break;\n case 'SO':\n code = 'noteheadBlack';\n break;\n case 'LA':\n code = 'noteheadSquareBlack';\n break;\n case 'TI':\n code = 'noteheadTriangleRoundDownBlack';\n break;\n case 'D':\n case 'H': // left for backwards compatibility\n switch (duration) {\n case '1/2':\n code = 'noteheadDiamondDoubleWhole';\n break;\n case '1':\n code = 'noteheadDiamondWhole';\n break;\n case '2':\n code = 'noteheadDiamondHalf';\n break;\n default:\n code = 'noteheadDiamondBlack';\n break;\n }\n break;\n case 'N':\n case 'G':\n switch (duration) {\n case '1/2':\n code = 'noteheadDoubleWhole';\n break;\n case '1':\n code = 'noteheadWhole';\n break;\n case '2':\n code = 'noteheadHalf';\n break;\n default:\n code = 'noteheadBlack';\n break;\n }\n break;\n case 'M': // left for backwards compatibility\n case 'X':\n switch (duration) {\n case '1/2':\n code = 'noteheadXDoubleWhole';\n break;\n case '1':\n code = 'noteheadXWhole';\n break;\n case '2':\n code = 'noteheadXHalf';\n break;\n default:\n code = 'noteheadXBlack';\n break;\n }\n break;\n case 'CX':\n switch (duration) {\n case '1/2':\n code = 'noteheadCircleXDoubleWhole';\n break;\n case '1':\n code = 'noteheadCircleXWhole';\n break;\n case '2':\n code = 'noteheadCircleXHalf';\n break;\n default:\n code = 'noteheadCircleX';\n break;\n }\n break;\n case 'CI':\n switch (duration) {\n case '1/2':\n code = 'noteheadCircledDoubleWhole';\n break;\n case '1':\n code = 'noteheadCircledWhole';\n break;\n case '2':\n code = 'noteheadCircledHalf';\n break;\n default:\n code = 'noteheadCircledBlack';\n break;\n }\n break;\n case 'SQ':\n switch (duration) {\n case '1/2':\n code = 'noteheadDoubleWholeSquare';\n break;\n case '1':\n code = 'noteheadSquareWhite';\n break;\n case '2':\n code = 'noteheadSquareWhite';\n break;\n default:\n code = 'noteheadSquareBlack';\n break;\n }\n break;\n case 'TU':\n switch (duration) {\n case '1/2':\n code = 'noteheadTriangleUpDoubleWhole';\n break;\n case '1':\n code = 'noteheadTriangleUpWhole';\n break;\n case '2':\n code = 'noteheadTriangleUpHalf';\n break;\n default:\n code = 'noteheadTriangleUpBlack';\n break;\n }\n break;\n case 'TD':\n switch (duration) {\n case '1/2':\n code = 'noteheadTriangleDownDoubleWhole';\n break;\n case '1':\n code = 'noteheadTriangleDownWhole';\n break;\n case '2':\n code = 'noteheadTriangleDownHalf';\n break;\n default:\n code = 'noteheadTriangleDownBlack';\n break;\n }\n break;\n case 'SF':\n switch (duration) {\n case '1/2':\n code = 'noteheadSlashedDoubleWhole1';\n break;\n case '1':\n code = 'noteheadSlashedWhole1';\n break;\n case '2':\n code = 'noteheadSlashedHalf1';\n break;\n default:\n code = 'noteheadSlashedBlack1';\n }\n break;\n case 'SB':\n switch (duration) {\n case '1/2':\n code = 'noteheadSlashedDoubleWhole2';\n break;\n case '1':\n code = 'noteheadSlashedWhole2';\n break;\n case '2':\n code = 'noteheadSlashedHalf2';\n break;\n default:\n code = 'noteheadSlashedBlack2';\n }\n break;\n }\n return code;\n }\n // Return a glyph given duration and type. The type can be a custom glyph code from customNoteHeads.\n // The default type is a regular note ('n').\n // eslint-disable-next-line\n static getGlyphProps(duration, type = 'n') {\n duration = Tables.sanitizeDuration(duration);\n // Lookup duration for default glyph head code\n const code = durationCodes[duration];\n if (code === undefined) {\n return undefined;\n }\n // Get glyph properties for 'type' from duration string (note, rest, harmonic, muted, slash)\n let glyphTypeProperties = code.type[type];\n // Try and get it from the custom list of note heads\n const codeNoteHead = Tables.codeNoteHead(type.toUpperCase(), duration);\n if (codeNoteHead != '')\n glyphTypeProperties = Object.assign(Object.assign({}, glyphTypeProperties), { code_head: codeNoteHead, code: codeNoteHead });\n const code_head = glyphTypeProperties.code_head;\n // The default implementation of getWidth() calls Glyph.getWidth(code_head, scale).\n // This can be overridden by an individual glyph type (see slash noteheads below: Tables.SLASH_NOTEHEAD_WIDTH).\n const getWidth = (scale = Tables.NOTATION_FONT_SCALE) => Glyph.getWidth(code_head, scale);\n // Merge duration props for 'duration' with the note head properties.\n return Object.assign(Object.assign(Object.assign({}, code.common), { getWidth: getWidth }), glyphTypeProperties);\n }\n}\nTables.SOFTMAX_FACTOR = 100;\nTables.STEM_WIDTH = 1.5;\nTables.STEM_HEIGHT = 35;\nTables.STAVE_LINE_THICKNESS = 1;\nTables.RENDER_PRECISION_PLACES = 3;\nTables.RESOLUTION = RESOLUTION;\n/**\n * Customize this by calling Flow.setMusicFont(...fontNames);\n */\nTables.MUSIC_FONT_STACK = [];\nTables.NOTATION_FONT_SCALE = 39;\nTables.TABLATURE_FONT_SCALE = 39;\nTables.SLASH_NOTEHEAD_WIDTH = 15;\nTables.STAVE_LINE_DISTANCE = 10;\n// HACK:\n// Since text origins are positioned at the baseline, we must\n// compensate for the ascender of the text. Of course, 1 staff space is\n// a very poor approximation.\n//\n// This will be deprecated in the future. This is a temporary solution until\n// we have more robust text metrics.\nTables.TEXT_HEIGHT_OFFSET_HACK = 1;\nTables.accidentalMap = accidentals;\nTables.accidentalColumnsTable = accidentalColumns;\nTables.unicode = {\n // ♯ accidental sharp\n sharp: String.fromCharCode(0x266f),\n // ♭ accidental flat\n flat: String.fromCharCode(0x266d),\n // ♮ accidental natural\n natural: String.fromCharCode(0x266e),\n // △ major seventh\n triangle: String.fromCharCode(0x25b3),\n // ø half-diminished\n 'o-with-slash': String.fromCharCode(0x00f8),\n // ° diminished\n degrees: String.fromCharCode(0x00b0),\n // ○ diminished\n circle: String.fromCharCode(0x25cb),\n};\n/* The list of valid note types. Used by note.ts during parseNoteStruct(). */\nTables.validTypes = validNoteTypes;\n// Default time signature.\nTables.TIME4_4 = {\n num_beats: 4,\n beat_value: 4,\n resolution: RESOLUTION,\n};\n// 1/2, 1, 2, 4, 8, 16, 32, 64, 128\n// NOTE: There is no 256 here! However, there are other mentions of 256 in this file.\n// For example, in durations has a 256 key, and sanitizeDuration() can return 256.\n// The sanitizeDuration() bit may need to be removed by 0xfe.\n// eslint-disable-next-line\nconst durationCodes = {\n '1/2': {\n common: {\n stem: false,\n stem_offset: 0,\n flag: false,\n stem_up_extension: -Tables.STEM_HEIGHT,\n stem_down_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_up_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_down_extension: -Tables.STEM_HEIGHT,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Breve rest\n code_head: 'restDoubleWhole',\n rest: true,\n position: 'B/5',\n dot_shiftY: 0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restDoubleWhole', scale);\n // },\n },\n s: {\n // Breve note slash -\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 1: {\n common: {\n stem: false,\n stem_offset: 0,\n flag: false,\n stem_up_extension: -Tables.STEM_HEIGHT,\n stem_down_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_up_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_down_extension: -Tables.STEM_HEIGHT,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Whole rest\n code_head: 'restWhole',\n leger_code_head: 'restWholeLegerLine',\n rest: true,\n position: 'D/5',\n dot_shiftY: 0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restWhole', scale);\n // },\n },\n s: {\n // Whole note slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 2: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: false,\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Half rest\n code_head: 'restHalf',\n leger_code_head: 'restHalfLegerLine',\n stem: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restHalf', scale);\n // },\n },\n s: {\n // Half note slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 4: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: false,\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Quarter rest\n code_head: 'restQuarter',\n stem: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.5,\n line_below: 1.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restQuarter', scale);\n // },\n },\n s: {\n // Quarter slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 8: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: true,\n beam_count: 1,\n stem_beam_extension: 0,\n code_flag_upstem: 'flag8thUp',\n code_flag_downstem: 'flag8thDown',\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Eighth rest\n code_head: 'rest8th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.0,\n line_below: 1.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest8th', scale);\n // },\n },\n s: {\n // Eighth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 16: {\n common: {\n beam_count: 2,\n stem_beam_extension: 0,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag16thUp',\n code_flag_downstem: 'flag16thDown',\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Sixteenth rest\n code_head: 'rest16th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.0,\n line_below: 2.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest16th', scale);\n // },\n },\n s: {\n // Sixteenth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 32: {\n common: {\n beam_count: 3,\n stem_beam_extension: 7.5,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag32ndUp',\n code_flag_downstem: 'flag32ndDown',\n stem_up_extension: 9,\n stem_down_extension: 9,\n tabnote_stem_up_extension: 9,\n tabnote_stem_down_extension: 9,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Thirty-second rest\n code_head: 'rest32nd',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -1.5,\n line_above: 2.0,\n line_below: 2.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest32nd', scale);\n // },\n },\n s: {\n // Thirty-second slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 64: {\n common: {\n beam_count: 4,\n stem_beam_extension: 15,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag64thUp',\n code_flag_downstem: 'flag64thDown',\n stem_up_extension: 13,\n stem_down_extension: 13,\n tabnote_stem_up_extension: 13,\n tabnote_stem_down_extension: 13,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Sixty-fourth rest\n code_head: 'rest64th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -1.5,\n line_above: 2.0,\n line_below: 3.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest64th', scale);\n // },\n },\n s: {\n // Sixty-fourth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 128: {\n common: {\n beam_count: 5,\n stem_beam_extension: 22.5,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag128thUp',\n code_flag_downstem: 'flag128thDown',\n stem_up_extension: 22,\n stem_down_extension: 22,\n tabnote_stem_up_extension: 22,\n tabnote_stem_down_extension: 22,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Hundred-twenty-eight rest\n code_head: 'rest128th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -2.5,\n line_above: 3.0,\n line_below: 3.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest128th', scale);\n // },\n },\n s: {\n // Hundred-twenty-eight slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { BoundingBoxComputation } from './boundingboxcomputation';\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var OutlineCode;\n(function (OutlineCode) {\n OutlineCode[OutlineCode[\"MOVE\"] = 0] = \"MOVE\";\n OutlineCode[OutlineCode[\"LINE\"] = 1] = \"LINE\";\n OutlineCode[OutlineCode[\"QUADRATIC\"] = 2] = \"QUADRATIC\";\n OutlineCode[OutlineCode[\"BEZIER\"] = 3] = \"BEZIER\";\n})(OutlineCode || (OutlineCode = {}));\nclass GlyphCacheEntry {\n constructor(fontStack, code, category) {\n this.point = -1;\n this.metrics = Glyph.loadMetrics(fontStack, code, category);\n this.bbox = Glyph.getOutlineBoundingBox(this.metrics.outline, this.metrics.scale, this.metrics.x_shift, this.metrics.y_shift);\n if (category) {\n this.point = Glyph.lookupFontMetric(this.metrics.font, category, code, 'point', -1);\n }\n }\n}\nclass GlyphCache {\n constructor() {\n this.cache = new Map();\n }\n lookup(code, category) {\n let entries = this.cache.get(Glyph.CURRENT_CACHE_KEY);\n if (entries === undefined) {\n entries = {};\n this.cache.set(Glyph.CURRENT_CACHE_KEY, entries);\n }\n const key = category ? `${code}%${category}` : code;\n let entry = entries[key];\n if (entry === undefined) {\n entry = new GlyphCacheEntry(Glyph.MUSIC_FONT_STACK, code, category);\n entries[key] = entry;\n }\n return entry;\n }\n}\nclass GlyphOutline {\n constructor(outline, originX, originY, scale) {\n this.outline = outline;\n this.originX = originX;\n this.originY = originY;\n this.scale = scale;\n this.i = 0;\n this.precision = 1;\n // Automatically assign private properties: this.outline, this.originX, this.originY, and this.scale.\n this.precision = Math.pow(10, Tables.RENDER_PRECISION_PLACES);\n }\n done() {\n return this.i >= this.outline.length;\n }\n next() {\n return Math.round((this.outline[this.i++] * this.precision) / this.precision);\n }\n nextX() {\n return Math.round((this.originX + this.outline[this.i++] * this.scale) * this.precision) / this.precision;\n }\n nextY() {\n return Math.round((this.originY - this.outline[this.i++] * this.scale) * this.precision) / this.precision;\n }\n static parse(str) {\n const result = [];\n const parts = str.split(' ');\n let i = 0;\n while (i < parts.length) {\n switch (parts[i++]) {\n case 'm':\n result.push(OutlineCode.MOVE, parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'l':\n result.push(OutlineCode.LINE, parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'q':\n result.push(OutlineCode.QUADRATIC, parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'b':\n result.push(OutlineCode.BEZIER, parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n }\n }\n return result;\n }\n}\nexport class Glyph extends Element {\n /**\n * @param code\n * @param point\n * @param options\n */\n constructor(code, point, options) {\n super();\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // INSTANCE MEMBERS\n this.bbox = new BoundingBox(0, 0, 0, 0);\n this.topGlyphs = [];\n this.botGlyphs = [];\n this.options = {};\n this.scale = 1;\n this.code = code;\n this.point = point;\n this.originShift = { x: 0, y: 0 };\n this.x_shift = 0;\n this.y_shift = 0;\n if (options) {\n this.setOptions(options);\n }\n else {\n this.reset();\n }\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // STATIC MEMBERS\n static get CATEGORY() {\n return Category.Glyph;\n }\n /**\n * Pass a key of the form `glyphs.{category}.{code}.{key}` to Font.lookupMetric(). If the initial lookup fails,\n * try again with the path `glyphs.{category}.{key}`. If the second lookup fails, return the defaultValue.\n *\n * @param font\n * @param category any metric path under 'glyphs', so 'stem.up' could resolve to glyphs.stem.up.shiftX, glyphs.stem.up.shiftY, etc.\n * @param code\n * @param key\n * @param defaultValue\n */\n static lookupFontMetric(font, category, code, key, defaultValue) {\n let value = font.lookupMetric(`glyphs.${category}.${code}.${key}`, undefined);\n if (value === undefined) {\n // The first lookup failed, so we omit .${code} and try again (with a defaultValue this time).\n value = font.lookupMetric(`glyphs.${category}.${key}`, defaultValue);\n }\n return value;\n }\n static lookupGlyph(fontStack, code) {\n defined(fontStack, 'BadFontStack', 'Font stack is misconfigured');\n let glyph;\n let font;\n for (let i = 0; i < fontStack.length; i++) {\n font = fontStack[i];\n glyph = font.getGlyphs()[code];\n if (glyph)\n return { glyph, font };\n }\n throw new RuntimeError('BadGlyph', `Glyph ${code} does not exist in font.`);\n }\n static loadMetrics(fontStack, code, category) {\n const { glyph, font } = Glyph.lookupGlyph(fontStack, code);\n if (!glyph.o)\n throw new RuntimeError('BadGlyph', `Glyph ${code} has no outline defined.`);\n let x_shift = 0;\n let y_shift = 0;\n let scale = 1;\n if (category && font) {\n x_shift = Glyph.lookupFontMetric(font, category, code, 'shiftX', 0);\n y_shift = Glyph.lookupFontMetric(font, category, code, 'shiftY', 0);\n scale = Glyph.lookupFontMetric(font, category, code, 'scale', 1);\n }\n const x_min = glyph.x_min;\n const x_max = glyph.x_max;\n const ha = glyph.ha;\n if (!glyph.cached_outline) {\n glyph.cached_outline = GlyphOutline.parse(glyph.o);\n }\n return {\n x_min,\n x_max,\n x_shift,\n y_shift,\n scale,\n ha,\n outline: glyph.cached_outline,\n font,\n width: x_max - x_min,\n height: ha,\n };\n }\n /**\n * Renders glyphs from the default font stack.\n *\n * @param ctx Canvas or SVG context\n * @param x_pos x coordinate\n * @param y_pos y coordinate\n * @param point the point size of the font\n * @param code the glyph code in font.getGlyphs()\n * @param options\n * @returns\n */\n static renderGlyph(ctx, x_pos, y_pos, point, code, options) {\n var _a;\n const data = Glyph.cache.lookup(code, options === null || options === void 0 ? void 0 : options.category);\n const metrics = data.metrics;\n if (data.point != -1) {\n point = data.point;\n }\n const customScale = (_a = options === null || options === void 0 ? void 0 : options.scale) !== null && _a !== void 0 ? _a : 1;\n const scale = ((point * 72.0) / (metrics.font.getResolution() * 100.0)) * metrics.scale * customScale;\n Glyph.renderOutline(ctx, metrics.outline, scale, x_pos + metrics.x_shift * customScale, y_pos + metrics.y_shift * customScale);\n return metrics;\n }\n static renderOutline(ctx, outline, scale, x_pos, y_pos) {\n const go = new GlyphOutline(outline, x_pos, y_pos, scale);\n ctx.beginPath();\n let x, y;\n while (!go.done()) {\n switch (go.next()) {\n case OutlineCode.MOVE:\n ctx.moveTo(go.nextX(), go.nextY());\n break;\n case OutlineCode.LINE:\n ctx.lineTo(go.nextX(), go.nextY());\n break;\n case OutlineCode.QUADRATIC:\n x = go.nextX();\n y = go.nextY();\n ctx.quadraticCurveTo(go.nextX(), go.nextY(), x, y);\n break;\n case OutlineCode.BEZIER:\n x = go.nextX();\n y = go.nextY();\n ctx.bezierCurveTo(go.nextX(), go.nextY(), go.nextX(), go.nextY(), x, y);\n break;\n }\n }\n ctx.fill();\n }\n static getOutlineBoundingBox(outline, scale, x_pos, y_pos) {\n const go = new GlyphOutline(outline, x_pos, y_pos, scale);\n const bboxComp = new BoundingBoxComputation();\n // (penX, penY) hold the pen position: the start of each stroke.\n let penX = x_pos;\n let penY = y_pos;\n let x, y;\n while (!go.done()) {\n switch (go.next()) {\n case OutlineCode.MOVE:\n // Note that we don't add any points to the bounding box until a srroke is actually drawn.\n penX = go.nextX();\n penY = go.nextY();\n break;\n case OutlineCode.LINE:\n bboxComp.addPoint(penX, penY);\n penX = go.nextX();\n penY = go.nextY();\n bboxComp.addPoint(penX, penY);\n break;\n case OutlineCode.QUADRATIC:\n x = go.nextX();\n y = go.nextY();\n bboxComp.addQuadraticCurve(penX, penY, go.nextX(), go.nextY(), x, y);\n penX = x;\n penY = y;\n break;\n case OutlineCode.BEZIER:\n x = go.nextX();\n y = go.nextY();\n bboxComp.addBezierCurve(penX, penY, go.nextX(), go.nextY(), go.nextX(), go.nextY(), x, y);\n penX = x;\n penY = y;\n break;\n }\n }\n return new BoundingBox(bboxComp.getX1(), bboxComp.getY1(), bboxComp.width(), bboxComp.height());\n }\n static getWidth(code, point, category) {\n const data = Glyph.cache.lookup(code, category);\n if (data.point != -1) {\n point = data.point;\n }\n const scale = (point * 72) / (data.metrics.font.getResolution() * 100);\n return data.bbox.getW() * scale;\n }\n // eslint-disable-next-line\n draw(...args) {\n // DO NOTHING.\n }\n getCode() {\n return this.code;\n }\n // eslint-disable-next-line\n setOptions(options) {\n this.options = Object.assign(Object.assign({}, this.options), options);\n this.reset();\n }\n setPoint(point) {\n this.point = point;\n return this;\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getXShift() {\n return this.x_shift;\n }\n setXShift(x_shift) {\n this.x_shift = x_shift;\n return this;\n }\n getYshift() {\n return this.y_shift;\n }\n setYShift(y_shift) {\n this.y_shift = y_shift;\n return this;\n }\n reset() {\n const data = Glyph.cache.lookup(this.code, this.options.category);\n this.metrics = data.metrics;\n // Override point from metrics file\n if (data.point != -1) {\n this.point = data.point;\n }\n this.scale = (this.point * 72) / (this.metrics.font.getResolution() * 100);\n this.bbox = new BoundingBox(data.bbox.getX() * this.scale, data.bbox.getY() * this.scale, data.bbox.getW() * this.scale, data.bbox.getH() * this.scale);\n }\n checkMetrics() {\n return defined(this.metrics, 'BadGlyph', `Glyph ${this.code} is not initialized.`);\n }\n getMetrics() {\n const metrics = this.checkMetrics();\n const metricsScale = metrics.scale;\n return {\n x_min: metrics.x_min * this.scale * metricsScale,\n x_max: metrics.x_max * this.scale * metricsScale,\n width: this.bbox.getW(),\n height: this.bbox.getH(),\n scale: this.scale * metricsScale,\n x_shift: metrics.x_shift,\n y_shift: metrics.y_shift,\n outline: metrics.outline,\n font: metrics.font,\n ha: metrics.ha,\n };\n }\n setOriginX(x) {\n const { bbox } = this;\n const originX = Math.abs(bbox.getX() / bbox.getW());\n const xShift = (x - originX) * bbox.getW();\n this.originShift.x = -xShift;\n }\n setOriginY(y) {\n const { bbox } = this;\n const originY = Math.abs(bbox.getY() / bbox.getH());\n const yShift = (y - originY) * bbox.getH();\n this.originShift.y = -yShift;\n }\n setOrigin(x, y) {\n this.setOriginX(x);\n this.setOriginY(y);\n }\n render(ctx, x, y) {\n const metrics = this.checkMetrics();\n const outline = metrics.outline;\n const scale = this.scale * metrics.scale;\n this.setRendered();\n this.applyStyle(ctx);\n const xPos = x + this.originShift.x + metrics.x_shift;\n const yPos = y + this.originShift.y + metrics.y_shift;\n Glyph.renderOutline(ctx, outline, scale, xPos, yPos);\n this.restoreStyle(ctx);\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n renderToStave(x) {\n const context = this.checkContext();\n const metrics = this.checkMetrics();\n const stave = this.checkStave();\n const outline = metrics.outline;\n const scale = this.scale * metrics.scale;\n this.setRendered();\n this.applyStyle();\n const xPos = x + this.x_shift + metrics.x_shift;\n const yPos = stave.getYForGlyphs() + this.y_shift + metrics.y_shift;\n Glyph.renderOutline(context, outline, scale, xPos, yPos);\n this.restoreStyle();\n }\n}\nGlyph.cache = new GlyphCache();\n// The current cache key for GlyphCache above.\n// Computed when Flow.setMusicFont(...) is called.\n// It is set to a comma separated list of font names.\nGlyph.CURRENT_CACHE_KEY = '';\n// Used by the GlyphCache above.\n// Set when Flow.setMusicFont(...) is called.\nGlyph.MUSIC_FONT_STACK = [];\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var ModifierPosition;\n(function (ModifierPosition) {\n ModifierPosition[ModifierPosition[\"CENTER\"] = 0] = \"CENTER\";\n ModifierPosition[ModifierPosition[\"LEFT\"] = 1] = \"LEFT\";\n ModifierPosition[ModifierPosition[\"RIGHT\"] = 2] = \"RIGHT\";\n ModifierPosition[ModifierPosition[\"ABOVE\"] = 3] = \"ABOVE\";\n ModifierPosition[ModifierPosition[\"BELOW\"] = 4] = \"BELOW\";\n})(ModifierPosition || (ModifierPosition = {}));\n// To enable logging for this class. Set `Vex.Flow.Modifier.DEBUG` to `true`.\n// function L(...args) { if (Modifier.DEBUG) log('Vex.Flow.Modifier', args); }\n/**\n * `Modifier` is an abstract interface for notational elements that modify\n * a `Note`. Examples of modifiers are `Accidental`, `Annotation`, `Stroke`, etc.\n *\n * For a `Modifier` instance to be positioned correctly, it must be part of\n * a `ModifierContext`. All modifiers in the same context are rendered relative to\n * one another.\n *\n * Typically, all modifiers to a note are part of the same `ModifierContext` instance. Also,\n * in multi-voice staves, all modifiers to notes on the same `tick` are part of the same\n * `ModifierContext`. This ensures that multiple voices don't trample all over each other.\n */\nexport class Modifier extends Element {\n constructor() {\n super();\n this.width = 0;\n // The `text_line` is reserved space above or below a stave.\n this.text_line = 0;\n this.position = Modifier.Position.LEFT;\n this.x_shift = 0;\n this.y_shift = 0;\n this.spacingFromNextModifier = 0;\n }\n /**\n * Modifiers category string. Every modifier has a different category.\n * The `ModifierContext` uses this to determine the type and order of the modifiers.\n */\n static get CATEGORY() {\n return Category.Modifier;\n }\n /** Modifiers can be positioned almost anywhere, relative to a note. */\n static get Position() {\n return ModifierPosition;\n }\n static get PositionString() {\n return {\n center: ModifierPosition.CENTER,\n above: ModifierPosition.ABOVE,\n below: ModifierPosition.BELOW,\n left: ModifierPosition.LEFT,\n right: ModifierPosition.RIGHT,\n };\n }\n /** Called when position changes. */\n reset() {\n // DO NOTHING.\n }\n /** Get modifier widths. */\n getWidth() {\n return this.width;\n }\n /** Set modifier widths. */\n setWidth(width) {\n this.width = width;\n return this;\n }\n /** Get attached note (`StaveNote`, `TabNote`, etc.) */\n getNote() {\n return defined(this.note, 'NoNote', 'Modifier has no note.');\n }\n /**\n * Used in draw() to check and get the attached note (`StaveNote`, `TabNote`, etc.).\n * Also verifies that the index is valid.\n */\n checkAttachedNote() {\n const category = this.getCategory();\n defined(this.index, 'NoIndex', `Can't draw ${category} without an index.`);\n return defined(this.note, 'NoNote', `Can't draw ${category} without a note.`);\n }\n /**\n * Set attached note.\n * @param note (`StaveNote`, `TabNote`, etc.)\n */\n setNote(note) {\n this.note = note;\n return this;\n }\n /** Get note index, which is a specific note in a chord. */\n getIndex() {\n return this.index;\n }\n /** Check and get note index, which is a specific note in a chord. */\n checkIndex() {\n return defined(this.index, 'NoIndex', 'Modifier has an invalid index.');\n }\n /** Set note index, which is a specific note in a chord. */\n setIndex(index) {\n this.index = index;\n return this;\n }\n /** Get `ModifierContext`. */\n getModifierContext() {\n return this.modifierContext;\n }\n /** Check and get `ModifierContext`. */\n checkModifierContext() {\n return defined(this.modifierContext, 'NoModifierContext', 'Modifier Context Required');\n }\n /** Every modifier must be part of a `ModifierContext`. */\n setModifierContext(c) {\n this.modifierContext = c;\n return this;\n }\n /** Get position. */\n getPosition() {\n return this.position;\n }\n /**\n * Set position.\n * @param position CENTER | LEFT | RIGHT | ABOVE | BELOW\n */\n setPosition(position) {\n this.position = typeof position === 'string' ? Modifier.PositionString[position] : position;\n this.reset();\n return this;\n }\n /** Set the `text_line` for the modifier. */\n setTextLine(line) {\n this.text_line = line;\n return this;\n }\n /** Shift modifier down `y` pixels. Negative values shift up. */\n setYShift(y) {\n this.y_shift = y;\n return this;\n }\n /** Set spacing from next modifier. */\n setSpacingFromNextModifier(x) {\n this.spacingFromNextModifier = x;\n }\n /** Get spacing from next modifier. */\n getSpacingFromNextModifier() {\n return this.spacingFromNextModifier;\n }\n /**\n * Shift modifier `x` pixels in the direction of the modifier. Negative values\n * shift reverse.\n */\n setXShift(x) {\n this.x_shift = 0;\n if (this.position === Modifier.Position.LEFT) {\n this.x_shift -= x;\n }\n else {\n this.x_shift += x;\n }\n return this;\n }\n /** Get shift modifier `x` */\n getXShift() {\n return this.x_shift;\n }\n /** Render the modifier onto the canvas. */\n draw() {\n this.checkContext();\n throw new RuntimeError('NotImplemented', 'draw() not implemented for this modifier.');\n }\n // aligns sub notes of NoteSubGroup (or GraceNoteGroup) to the main note with correct x-offset\n alignSubNotesWithNote(subNotes, note) {\n // Shift over the tick contexts of each note\n const tickContext = note.getTickContext();\n const metrics = tickContext.getMetrics();\n const stave = note.getStave();\n const subNoteXOffset = tickContext.getX() - metrics.modLeftPx - metrics.modRightPx + this.getSpacingFromNextModifier();\n subNotes.forEach((subNote) => {\n const subTickContext = subNote.getTickContext();\n if (stave)\n subNote.setStave(stave);\n subTickContext.setXOffset(subNoteXOffset); // don't touch baseX to avoid shift each render\n });\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { RuntimeError } from './util';\n/** Music implements some standard music theory routines. */\nexport class Music {\n /** Number of an canonical notes (12). */\n static get NUM_TONES() {\n return this.canonical_notes.length;\n }\n /** Names of root notes ('c', 'd',...) */\n static get roots() {\n return ['c', 'd', 'e', 'f', 'g', 'a', 'b'];\n }\n /** Values of the root notes.*/\n static get root_values() {\n return [0, 2, 4, 5, 7, 9, 11];\n }\n /** Indices of the root notes.*/\n static get root_indices() {\n return {\n c: 0,\n d: 1,\n e: 2,\n f: 3,\n g: 4,\n a: 5,\n b: 6,\n };\n }\n /** Names of canonical notes ('c', 'c#', 'd',...). */\n static get canonical_notes() {\n return ['c', 'c#', 'd', 'd#', 'e', 'f', 'f#', 'g', 'g#', 'a', 'a#', 'b'];\n }\n /** Names of diatonic intervals ('unison', 'm2', 'M2',...). */\n static get diatonic_intervals() {\n return ['unison', 'm2', 'M2', 'm3', 'M3', 'p4', 'dim5', 'p5', 'm6', 'M6', 'b7', 'M7', 'octave'];\n }\n /** NoteAccidental associated to diatonic intervals. */\n static get diatonic_accidentals() {\n return {\n unison: { note: 0, accidental: 0 },\n m2: { note: 1, accidental: -1 },\n M2: { note: 1, accidental: 0 },\n m3: { note: 2, accidental: -1 },\n M3: { note: 2, accidental: 0 },\n p4: { note: 3, accidental: 0 },\n dim5: { note: 4, accidental: -1 },\n p5: { note: 4, accidental: 0 },\n m6: { note: 5, accidental: -1 },\n M6: { note: 5, accidental: 0 },\n b7: { note: 6, accidental: -1 },\n M7: { note: 6, accidental: 0 },\n octave: { note: 7, accidental: 0 },\n };\n }\n /** Semitones shift associated to intervals .*/\n static get intervals() {\n return {\n u: 0,\n unison: 0,\n m2: 1,\n b2: 1,\n min2: 1,\n S: 1,\n H: 1,\n 2: 2,\n M2: 2,\n maj2: 2,\n T: 2,\n W: 2,\n m3: 3,\n b3: 3,\n min3: 3,\n M3: 4,\n 3: 4,\n maj3: 4,\n 4: 5,\n p4: 5,\n '#4': 6,\n b5: 6,\n aug4: 6,\n dim5: 6,\n 5: 7,\n p5: 7,\n '#5': 8,\n b6: 8,\n aug5: 8,\n 6: 9,\n M6: 9,\n maj6: 9,\n b7: 10,\n m7: 10,\n min7: 10,\n dom7: 10,\n M7: 11,\n maj7: 11,\n 8: 12,\n octave: 12,\n };\n }\n /** Semitones shifts associated with scales. */\n static get scales() {\n return {\n major: [2, 2, 1, 2, 2, 2, 1],\n minor: [2, 1, 2, 2, 1, 2, 2],\n ionian: [2, 2, 1, 2, 2, 2, 1],\n dorian: [2, 1, 2, 2, 2, 1, 2],\n phyrgian: [1, 2, 2, 2, 1, 2, 2],\n lydian: [2, 2, 2, 1, 2, 2, 1],\n mixolydian: [2, 2, 1, 2, 2, 1, 2],\n aeolian: [2, 1, 2, 2, 1, 2, 2],\n locrian: [1, 2, 2, 1, 2, 2, 2],\n };\n }\n /** Scales associated with m (minor) and M (major). */\n static get scaleTypes() {\n return {\n M: Music.scales.major,\n m: Music.scales.minor,\n };\n }\n /** Accidentals abbreviations. */\n static get accidentals() {\n return ['bb', 'b', 'n', '#', '##'];\n }\n /** Note values. */\n static get noteValues() {\n return {\n c: { root_index: 0, int_val: 0 },\n cn: { root_index: 0, int_val: 0 },\n 'c#': { root_index: 0, int_val: 1 },\n 'c##': { root_index: 0, int_val: 2 },\n cb: { root_index: 0, int_val: 11 },\n cbb: { root_index: 0, int_val: 10 },\n d: { root_index: 1, int_val: 2 },\n dn: { root_index: 1, int_val: 2 },\n 'd#': { root_index: 1, int_val: 3 },\n 'd##': { root_index: 1, int_val: 4 },\n db: { root_index: 1, int_val: 1 },\n dbb: { root_index: 1, int_val: 0 },\n e: { root_index: 2, int_val: 4 },\n en: { root_index: 2, int_val: 4 },\n 'e#': { root_index: 2, int_val: 5 },\n 'e##': { root_index: 2, int_val: 6 },\n eb: { root_index: 2, int_val: 3 },\n ebb: { root_index: 2, int_val: 2 },\n f: { root_index: 3, int_val: 5 },\n fn: { root_index: 3, int_val: 5 },\n 'f#': { root_index: 3, int_val: 6 },\n 'f##': { root_index: 3, int_val: 7 },\n fb: { root_index: 3, int_val: 4 },\n fbb: { root_index: 3, int_val: 3 },\n g: { root_index: 4, int_val: 7 },\n gn: { root_index: 4, int_val: 7 },\n 'g#': { root_index: 4, int_val: 8 },\n 'g##': { root_index: 4, int_val: 9 },\n gb: { root_index: 4, int_val: 6 },\n gbb: { root_index: 4, int_val: 5 },\n a: { root_index: 5, int_val: 9 },\n an: { root_index: 5, int_val: 9 },\n 'a#': { root_index: 5, int_val: 10 },\n 'a##': { root_index: 5, int_val: 11 },\n ab: { root_index: 5, int_val: 8 },\n abb: { root_index: 5, int_val: 7 },\n b: { root_index: 6, int_val: 11 },\n bn: { root_index: 6, int_val: 11 },\n 'b#': { root_index: 6, int_val: 0 },\n 'b##': { root_index: 6, int_val: 1 },\n bb: { root_index: 6, int_val: 10 },\n bbb: { root_index: 6, int_val: 9 },\n };\n }\n isValidNoteValue(note) {\n return note >= 0 && note < Music.canonical_notes.length;\n }\n isValidIntervalValue(interval) {\n return interval >= 0 && interval < Music.diatonic_intervals.length;\n }\n /** Return root and accidental associated to a note. */\n getNoteParts(noteString) {\n if (!noteString || noteString.length < 1) {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n if (noteString.length > 3) {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n const note = noteString.toLowerCase();\n const regex = /^([cdefgab])(b|bb|n|#|##)?$/;\n const match = regex.exec(note);\n if (match !== null) {\n const root = match[1];\n const accidental = match[2];\n return {\n root,\n accidental,\n };\n }\n else {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n }\n /** Return root, accidental and type associated to a key. */\n getKeyParts(keyString) {\n if (!keyString || keyString.length < 1) {\n throw new RuntimeError('BadArguments', 'Invalid key: ' + keyString);\n }\n const key = keyString.toLowerCase();\n // Support Major, Minor, Melodic Minor, and Harmonic Minor key types.\n const regex = /^([cdefgab])(b|#)?(mel|harm|m|M)?$/;\n const match = regex.exec(key);\n if (match !== null) {\n const root = match[1];\n const accidental = match[2];\n let type = match[3];\n // Unspecified type implies major\n if (!type)\n type = 'M';\n return {\n root,\n accidental,\n type,\n };\n }\n else {\n throw new RuntimeError('BadArguments', `Invalid key: ${keyString}`);\n }\n }\n /** Note value associated to a note name. */\n getNoteValue(noteString) {\n const value = Music.noteValues[noteString];\n if (value === undefined) {\n throw new RuntimeError('BadArguments', `Invalid note name: ${noteString}`);\n }\n return value.int_val;\n }\n /** Interval value associated to an interval name. */\n getIntervalValue(intervalString) {\n const value = Music.intervals[intervalString];\n if (value === undefined) {\n throw new RuntimeError('BadArguments', `Invalid interval name: ${intervalString}`);\n }\n return value;\n }\n /** Canonical note name associated to a value. */\n getCanonicalNoteName(noteValue) {\n if (!this.isValidNoteValue(noteValue)) {\n throw new RuntimeError('BadArguments', `Invalid note value: ${noteValue}`);\n }\n return Music.canonical_notes[noteValue];\n }\n /** Interval name associated to a value. */\n getCanonicalIntervalName(intervalValue) {\n if (!this.isValidIntervalValue(intervalValue)) {\n throw new RuntimeError('BadArguments', `Invalid interval value: ${intervalValue}`);\n }\n return Music.diatonic_intervals[intervalValue];\n }\n /**\n * Given a note, interval, and interval direction, produce the relative note.\n */\n getRelativeNoteValue(noteValue, intervalValue, direction = 1) {\n if (direction !== 1 && direction !== -1) {\n throw new RuntimeError('BadArguments', `Invalid direction: ${direction}`);\n }\n let sum = (noteValue + direction * intervalValue) % Music.NUM_TONES;\n if (sum < 0)\n sum += Music.NUM_TONES;\n return sum;\n }\n /**\n * Given a root and note value, produce the relative note name.\n */\n getRelativeNoteName(root, noteValue) {\n const parts = this.getNoteParts(root);\n const rootValue = this.getNoteValue(parts.root);\n let interval = noteValue - rootValue;\n if (Math.abs(interval) > Music.NUM_TONES - 3) {\n let multiplier = 1;\n if (interval > 0)\n multiplier = -1;\n // Possibly wrap around. (Add +1 for modulo operator)\n const reverse_interval = ((noteValue + 1 + (rootValue + 1)) % Music.NUM_TONES) * multiplier;\n if (Math.abs(reverse_interval) > 2) {\n throw new RuntimeError('BadArguments', `Notes not related: ${root}, ${noteValue})`);\n }\n else {\n interval = reverse_interval;\n }\n }\n if (Math.abs(interval) > 2) {\n throw new RuntimeError('BadArguments', `Notes not related: ${root}, ${noteValue})`);\n }\n let relativeNoteName = parts.root;\n if (interval > 0) {\n for (let i = 1; i <= interval; ++i) {\n relativeNoteName += '#';\n }\n }\n else if (interval < 0) {\n for (let i = -1; i >= interval; --i) {\n relativeNoteName += 'b';\n }\n }\n return relativeNoteName;\n }\n /**\n * Return scale tones, given intervals. Each successive interval is\n * relative to the previous one, e.g., Major Scale:\n *\n * TTSTTTS = [2,2,1,2,2,2,1]\n *\n * When used with key = 0, returns C scale (which is isomorphic to\n * interval list).\n */\n getScaleTones(key, intervals) {\n const tones = [key];\n let nextNote = key;\n for (let i = 0; i < intervals.length; i++) {\n nextNote = this.getRelativeNoteValue(nextNote, intervals[i]);\n if (nextNote !== key)\n tones.push(nextNote);\n }\n return tones;\n }\n /**\n * Return the interval of a note, given a diatonic scale.\n * e.g., given the scale C, and the note E, returns M3.\n */\n getIntervalBetween(note1, note2, direction = 1) {\n if (direction !== 1 && direction !== -1) {\n throw new RuntimeError('BadArguments', `Invalid direction: ${direction}`);\n }\n if (!this.isValidNoteValue(note1) || !this.isValidNoteValue(note2)) {\n throw new RuntimeError('BadArguments', `Invalid notes: ${note1}, ${note2}`);\n }\n let difference = direction === 1 ? note2 - note1 : note1 - note2;\n if (difference < 0)\n difference += Music.NUM_TONES;\n return difference;\n }\n /**\n * Create a scale map that represents the pitch state for a\n * `keySignature`. For example, passing a `G` to `keySignature` would\n * return a scale map with every note naturalized except for `F` which\n * has an `F#` state.\n */\n createScaleMap(keySignature) {\n const keySigParts = this.getKeyParts(keySignature);\n if (!keySigParts.type)\n throw new RuntimeError('BadArguments', 'Unsupported key type: undefined');\n const scaleName = Music.scaleTypes[keySigParts.type];\n let keySigString = keySigParts.root;\n if (keySigParts.accidental)\n keySigString += keySigParts.accidental;\n if (!scaleName)\n throw new RuntimeError('BadArguments', 'Unsupported key type: ' + keySignature);\n const scale = this.getScaleTones(this.getNoteValue(keySigString), scaleName);\n const noteLocation = Music.root_indices[keySigParts.root];\n const scaleMap = {};\n for (let i = 0; i < Music.roots.length; ++i) {\n const index = (noteLocation + i) % Music.roots.length;\n const rootName = Music.roots[index];\n let noteName = this.getRelativeNoteName(rootName, scale[i]);\n if (noteName.length === 1) {\n noteName += 'n';\n }\n scaleMap[rootName] = noteName;\n }\n return scaleMap;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// @author Mohit Cheppudira\n// @author Greg Ristow (modifications)\nimport { Fraction } from './fraction';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Music } from './music';\nimport { Tables } from './tables';\nimport { Category, isAccidental, isGraceNote, isGraceNoteGroup, isStaveNote } from './typeguard';\nimport { defined, log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Accidental.DEBUG)\n log('Vex.Flow.Accidental', args);\n}\n/**\n * An `Accidental` inherits from `Modifier`, and is formatted within a\n * `ModifierContext`. Accidentals are modifiers that can be attached to\n * notes. Support is included for both western and microtonal accidentals.\n *\n * See `tests/accidental_tests.ts` for usage examples.\n */\nexport class Accidental extends Modifier {\n /**\n * Create accidental.\n * @param type value from `Vex.Flow.accidentalCodes.accidentals` table in `tables.ts`.\n * For example: `#`, `##`, `b`, `n`, etc.\n */\n constructor(type) {\n super();\n L('New accidental: ', type);\n this.type = type;\n this.position = Modifier.Position.LEFT;\n this.render_options = {\n // Font size for glyphs\n font_scale: 38,\n // Padding between accidental and parentheses on each side\n parenLeftPadding: 2,\n parenRightPadding: 2,\n };\n this.accidental = Tables.accidentalCodes(this.type);\n defined(this.accidental, 'ArgumentError', `Unknown accidental type: ${type}`);\n // Cautionary accidentals have parentheses around them\n this.cautionary = false;\n this.reset();\n }\n /** Accidentals category string. */\n static get CATEGORY() {\n return Category.Accidental;\n }\n /** Arrange accidentals inside a ModifierContext. */\n static format(accidentals, state) {\n // If there are no accidentals, no need to format their positions.\n if (!accidentals || accidentals.length === 0)\n return;\n const musicFont = Tables.currentMusicFont();\n const noteheadAccidentalPadding = musicFont.lookupMetric('accidental.noteheadAccidentalPadding');\n const leftShift = state.left_shift + noteheadAccidentalPadding;\n const accidentalSpacing = musicFont.lookupMetric('accidental.accidentalSpacing');\n const additionalPadding = musicFont.lookupMetric('accidental.leftPadding'); // padding to the left of all accidentals\n const accList = [];\n let prevNote = undefined;\n let shiftL = 0;\n // First determine the accidentals' Y positions from the note.keys\n for (let i = 0; i < accidentals.length; ++i) {\n const acc = accidentals[i];\n const note = acc.getNote();\n const stave = note.getStave();\n const index = acc.checkIndex();\n const props = note.getKeyProps()[index];\n if (note !== prevNote) {\n // Iterate through all notes to get the displaced pixels\n for (let n = 0; n < note.keys.length; ++n) {\n shiftL = Math.max(note.getLeftDisplacedHeadPx() - note.getXShift(), shiftL);\n }\n prevNote = note;\n }\n if (stave) {\n const lineSpace = stave.getSpacingBetweenLines();\n const y = stave.getYForLine(props.line);\n const accLine = Math.round((y / lineSpace) * 2) / 2;\n accList.push({ y, line: accLine, shift: shiftL, acc, lineSpace });\n }\n else {\n accList.push({ line: props.line, shift: shiftL, acc });\n }\n }\n // Sort accidentals by line number.\n accList.sort((a, b) => b.line - a.line);\n // FIXME: Confusing name. Each object in this array has a property called `line`.\n // So if this is a list of lines, you end up with: `line.line` which is very awkward.\n const lineList = [];\n // amount by which all accidentals must be shifted right or left for\n // stem flipping, notehead shifting concerns.\n let accShift = 0;\n let previousLine = undefined;\n // Create an array of unique line numbers (lineList) from accList\n for (let i = 0; i < accList.length; i++) {\n const acc = accList[i];\n // if this is the first line, or a new line, add a lineList\n if (previousLine === undefined || previousLine !== acc.line) {\n lineList.push({\n line: acc.line,\n flatLine: true,\n dblSharpLine: true,\n numAcc: 0,\n width: 0,\n column: 0,\n });\n }\n // if this accidental is not a flat, the accidental needs 3.0 lines lower\n // clearance instead of 2.5 lines for b or bb.\n // FIXME: Naming could use work. acc.acc is very awkward\n if (acc.acc.type !== 'b' && acc.acc.type !== 'bb') {\n lineList[lineList.length - 1].flatLine = false;\n }\n // if this accidental is not a double sharp, the accidental needs 3.0 lines above\n if (acc.acc.type !== '##') {\n lineList[lineList.length - 1].dblSharpLine = false;\n }\n // Track how many accidentals are on this line:\n lineList[lineList.length - 1].numAcc++;\n // Track the total x_offset needed for this line which will be needed\n // for formatting lines w/ multiple accidentals:\n // width = accidental width + universal spacing between accidentals\n lineList[lineList.length - 1].width += acc.acc.getWidth() + accidentalSpacing;\n // if this accShift is larger, use it to keep first column accidentals in the same line\n accShift = acc.shift > accShift ? acc.shift : accShift;\n previousLine = acc.line;\n }\n // ### Place Accidentals in Columns\n //\n // Default to a classic triangular layout (middle accidental farthest left),\n // but follow exceptions as outlined in G. Read's _Music Notation_ and\n // Elaine Gould's _Behind Bars_.\n //\n // Additionally, this implements different vertical collision rules for\n // flats (only need 2.5 lines clearance below) and double sharps (only\n // need 2.5 lines of clearance above or below).\n //\n // Classic layouts and exception patterns are found in the 'tables.js'\n // in 'Tables.accidentalColumnsTable'\n //\n // Beyond 6 vertical accidentals, default to the parallel ascending lines approach,\n // using as few columns as possible for the verticle structure.\n //\n // TODO (?): Allow column to be specified for an accidental at run-time?\n let totalColumns = 0;\n // establish the boundaries for a group of notes with clashing accidentals:\n for (let i = 0; i < lineList.length; i++) {\n let noFurtherConflicts = false;\n const groupStart = i;\n let groupEnd = i;\n while (groupEnd + 1 < lineList.length && !noFurtherConflicts) {\n // if this note conflicts with the next:\n if (this.checkCollision(lineList[groupEnd], lineList[groupEnd + 1])) {\n // include the next note in the group:\n groupEnd++;\n }\n else {\n noFurtherConflicts = true;\n }\n }\n // Gets an a line from the `lineList`, relative to the current group\n const getGroupLine = (index) => lineList[groupStart + index];\n const getGroupLines = (indexes) => indexes.map(getGroupLine);\n const lineDifference = (indexA, indexB) => {\n const [a, b] = getGroupLines([indexA, indexB]).map((item) => item.line);\n return a - b;\n };\n const notColliding = (...indexPairs) => indexPairs.map(getGroupLines).every(([line1, line2]) => !this.checkCollision(line1, line2));\n // Set columns for the lines in this group:\n const groupLength = groupEnd - groupStart + 1;\n // Set the accidental column for each line of the group\n let endCase = this.checkCollision(lineList[groupStart], lineList[groupEnd]) ? 'a' : 'b';\n switch (groupLength) {\n case 3:\n if (endCase === 'a' && lineDifference(1, 2) === 0.5 && lineDifference(0, 1) !== 0.5) {\n endCase = 'second_on_bottom';\n }\n break;\n case 4:\n if (notColliding([0, 2], [1, 3])) {\n endCase = 'spaced_out_tetrachord';\n }\n break;\n case 5:\n if (endCase === 'b' && notColliding([1, 3])) {\n endCase = 'spaced_out_pentachord';\n if (notColliding([0, 2], [2, 4])) {\n endCase = 'very_spaced_out_pentachord';\n }\n }\n break;\n case 6:\n if (notColliding([0, 3], [1, 4], [2, 5])) {\n endCase = 'spaced_out_hexachord';\n }\n if (notColliding([0, 2], [2, 4], [1, 3], [3, 5])) {\n endCase = 'very_spaced_out_hexachord';\n }\n break;\n default:\n break;\n }\n let groupMember;\n let column;\n // If the group contains seven members or more, use ascending parallel lines\n // of accidentals, using as few columns as possible while avoiding collisions.\n if (groupLength >= 7) {\n // First, determine how many columns to use:\n let patternLength = 2;\n let collisionDetected = true;\n while (collisionDetected === true) {\n collisionDetected = false;\n for (let line = 0; line + patternLength < lineList.length; line++) {\n if (this.checkCollision(lineList[line], lineList[line + patternLength])) {\n collisionDetected = true;\n patternLength++;\n break;\n }\n }\n }\n // Then, assign a column to each line of accidentals\n for (groupMember = i; groupMember <= groupEnd; groupMember++) {\n column = ((groupMember - i) % patternLength) + 1;\n lineList[groupMember].column = column;\n totalColumns = totalColumns > column ? totalColumns : column;\n }\n }\n else {\n // If the group contains fewer than seven members, use the layouts from\n // the Tables.accidentalColumnsTable (See: tables.ts).\n for (groupMember = i; groupMember <= groupEnd; groupMember++) {\n column = Tables.accidentalColumnsTable[groupLength][endCase][groupMember - i];\n lineList[groupMember].column = column;\n totalColumns = totalColumns > column ? totalColumns : column;\n }\n }\n // Increment i to the last note that was set, so that if a lower set of notes\n // does not conflict at all with this group, it can have its own classic shape.\n i = groupEnd;\n }\n // ### Convert Columns to x_offsets\n //\n // This keeps columns aligned, even if they have different accidentals within them\n // which sometimes results in a larger x_offset than is an accidental might need\n // to preserve the symmetry of the accidental shape.\n //\n // Neither A.C. Vinci nor G. Read address this, and it typically only happens in\n // music with complex chord clusters.\n //\n // TODO (?): Optionally allow closer compression of accidentals, instead of forcing\n // parallel columns.\n // track each column's max width, which will be used as initial shift of later columns:\n const columnWidths = [];\n const columnXOffsets = [];\n for (let i = 0; i <= totalColumns; i++) {\n columnWidths[i] = 0;\n columnXOffsets[i] = 0;\n }\n columnWidths[0] = accShift + leftShift;\n columnXOffsets[0] = accShift + leftShift;\n // Fill columnWidths with widest needed x-space;\n // this is what keeps the columns parallel.\n lineList.forEach((line) => {\n if (line.width > columnWidths[line.column])\n columnWidths[line.column] = line.width;\n });\n for (let i = 1; i < columnWidths.length; i++) {\n // this column's offset = this column's width + previous column's offset\n columnXOffsets[i] = columnWidths[i] + columnXOffsets[i - 1];\n }\n const totalShift = columnXOffsets[columnXOffsets.length - 1];\n // Set the xShift for each accidental according to column offsets:\n let accCount = 0;\n lineList.forEach((line) => {\n let lineWidth = 0;\n const lastAccOnLine = accCount + line.numAcc;\n // handle all of the accidentals on a given line:\n for (accCount; accCount < lastAccOnLine; accCount++) {\n const xShift = columnXOffsets[line.column - 1] + lineWidth;\n accList[accCount].acc.setXShift(xShift);\n // keep track of the width of accidentals we've added so far, so that when\n // we loop, we add space for them.\n lineWidth += accList[accCount].acc.getWidth() + accidentalSpacing;\n L('Line, accCount, shift: ', line.line, accCount, xShift);\n }\n });\n // update the overall layout with the full width of the accidental shapes:\n state.left_shift += totalShift + additionalPadding;\n }\n /** Helper function to determine whether two lines of accidentals collide vertically */\n static checkCollision(line1, line2) {\n let clearance = line2.line - line1.line;\n let clearanceRequired = 3;\n // But less clearance is required for certain accidentals: b, bb and ##.\n if (clearance > 0) {\n // then line 2 is on top\n clearanceRequired = line2.flatLine || line2.dblSharpLine ? 2.5 : 3.0;\n if (line1.dblSharpLine)\n clearance -= 0.5;\n }\n else {\n // line 1 is on top\n clearanceRequired = line1.flatLine || line1.dblSharpLine ? 2.5 : 3.0;\n if (line2.dblSharpLine)\n clearance -= 0.5;\n }\n const collision = Math.abs(clearance) < clearanceRequired;\n L('Line_1, Line_2, Collision: ', line1.line, line2.line, collision);\n return collision;\n }\n /**\n * Use this method to automatically apply accidentals to a set of `voices`.\n * The accidentals will be remembered between all the voices provided.\n * Optionally, you can also provide an initial `keySignature`.\n */\n static applyAccidentals(voices, keySignature) {\n const tickPositions = [];\n const tickNoteMap = {};\n // Sort the tickables in each voice by their tick position in the voice.\n voices.forEach((voice) => {\n const tickPosition = new Fraction(0, 1);\n const tickable = voice.getTickables();\n tickable.forEach((t) => {\n if (t.shouldIgnoreTicks())\n return;\n const notesAtPosition = tickNoteMap[tickPosition.value()];\n if (!notesAtPosition) {\n tickPositions.push(tickPosition.value());\n tickNoteMap[tickPosition.value()] = [t];\n }\n else {\n notesAtPosition.push(t);\n }\n tickPosition.add(t.getTicks());\n });\n });\n const music = new Music();\n // Default key signature is C major.\n if (!keySignature)\n keySignature = 'C';\n // Get the scale map, which represents the current state of each pitch.\n const scaleMapKey = music.createScaleMap(keySignature);\n const scaleMap = {};\n tickPositions.forEach((tickPos) => {\n const tickables = tickNoteMap[tickPos];\n // Array to store all pitches that modified accidental states\n // at this tick position\n const modifiedPitches = [];\n const processNote = (t) => {\n // Only StaveNote implements .addModifier(), which is used below.\n if (!isStaveNote(t) || t.isRest() || t.shouldIgnoreTicks()) {\n return;\n }\n // Go through each key and determine if an accidental should be applied.\n const staveNote = t;\n staveNote.keys.forEach((keyString, keyIndex) => {\n const key = music.getNoteParts(keyString.split('/')[0]);\n const octave = keyString.split('/')[1];\n // Force a natural for every key without an accidental\n const accidentalString = key.accidental || 'n';\n const pitch = key.root + accidentalString;\n // Determine if the current pitch has the same accidental\n // as the scale state\n if (!scaleMap[key.root + octave])\n scaleMap[key.root + octave] = scaleMapKey[key.root];\n const sameAccidental = scaleMap[key.root + octave] === pitch;\n // Determine if an identical pitch in the chord already\n // modified the accidental state\n const previouslyModified = modifiedPitches.indexOf(keyString) > -1;\n // Remove accidentals\n staveNote.getModifiers().forEach((modifier, index) => {\n if (isAccidental(modifier) && modifier.type == accidentalString && modifier.getIndex() == keyIndex) {\n staveNote.getModifiers().splice(index, 1);\n }\n });\n // Add the accidental to the StaveNote\n if (!sameAccidental || (sameAccidental && previouslyModified)) {\n // Modify the scale map so that the root pitch has an\n // updated state\n scaleMap[key.root + octave] = pitch;\n // Create the accidental\n const accidental = new Accidental(accidentalString);\n // Attach the accidental to the StaveNote\n staveNote.addModifier(accidental, keyIndex);\n // Add the pitch to list of pitches that modified accidentals\n modifiedPitches.push(keyString);\n }\n });\n // process grace notes\n staveNote.getModifiers().forEach((modifier) => {\n if (isGraceNoteGroup(modifier)) {\n modifier.getGraceNotes().forEach(processNote);\n }\n });\n };\n tickables.forEach(processNote);\n });\n }\n reset() {\n const fontScale = this.render_options.font_scale;\n this.glyph = new Glyph(this.accidental.code, fontScale);\n this.glyph.setOriginX(1.0);\n if (this.cautionary) {\n this.parenLeft = new Glyph(Tables.accidentalCodes('{').code, fontScale);\n this.parenRight = new Glyph(Tables.accidentalCodes('}').code, fontScale);\n this.parenLeft.setOriginX(1.0);\n this.parenRight.setOriginX(1.0);\n }\n }\n /** Get width in pixels. */\n getWidth() {\n if (this.cautionary) {\n const parenLeft = defined(this.parenLeft);\n const parenRight = defined(this.parenRight);\n const parenWidth = parenLeft.getMetrics().width +\n parenRight.getMetrics().width +\n this.render_options.parenLeftPadding +\n this.render_options.parenRightPadding;\n return this.glyph.getMetrics().width + parenWidth;\n }\n else {\n return this.glyph.getMetrics().width;\n }\n }\n /** Attach this accidental to `note`, which must be a `StaveNote`. */\n setNote(note) {\n defined(note, 'ArgumentError', `Bad note value: ${note}`);\n this.note = note;\n // Accidentals attached to grace notes are rendered smaller.\n if (isGraceNote(note)) {\n this.render_options.font_scale = 25;\n this.reset();\n }\n return this;\n }\n /** If called, draws parenthesis around accidental. */\n setAsCautionary() {\n this.cautionary = true;\n this.render_options.font_scale = 28;\n this.reset();\n return this;\n }\n /** Render accidental onto canvas. */\n draw() {\n const { type, position, index, cautionary, x_shift, y_shift, glyph, render_options: { parenLeftPadding, parenRightPadding }, } = this;\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n // Figure out the start `x` and `y` coordinates for note and index.\n const start = note.getModifierStartXY(position, index);\n let accX = start.x + x_shift;\n const accY = start.y + y_shift;\n L('Rendering: ', type, accX, accY);\n if (!cautionary) {\n glyph.render(ctx, accX, accY);\n }\n else {\n const parenLeft = defined(this.parenLeft);\n const parenRight = defined(this.parenRight);\n // Render the accidental in parentheses.\n parenRight.render(ctx, accX, accY);\n accX -= parenRight.getMetrics().width;\n accX -= parenRightPadding;\n accX -= this.accidental.parenRightPaddingAdjustment;\n glyph.render(ctx, accX, accY);\n accX -= glyph.getMetrics().width;\n accX -= parenLeftPadding;\n parenLeft.render(ctx, accX, accY);\n }\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Accidental.DEBUG` to `true`. */\nAccidental.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// This file implements the `Stem` object. Generally this object is handled\n// by its parent `StemmableNote`.\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Stem.DEBUG)\n log('Vex.Flow.Stem', args);\n}\nexport class Stem extends Element {\n constructor(options) {\n super();\n this.stem_up_y_offset = 0;\n this.stem_down_y_offset = 0;\n this.stem_up_y_base_offset = 0;\n this.stem_down_y_base_offset = 0;\n // Default notehead x bounds\n this.x_begin = (options === null || options === void 0 ? void 0 : options.x_begin) || 0;\n this.x_end = (options === null || options === void 0 ? void 0 : options.x_end) || 0;\n // Y bounds for top/bottom most notehead\n this.y_top = (options === null || options === void 0 ? void 0 : options.y_top) || 0;\n this.y_bottom = (options === null || options === void 0 ? void 0 : options.y_bottom) || 0;\n // Stem top extension\n this.stem_extension = (options === null || options === void 0 ? void 0 : options.stem_extension) || 0;\n // Direction of the stem\n this.stem_direction = (options === null || options === void 0 ? void 0 : options.stem_direction) || 0;\n // Flag to override all draw calls\n this.hide = (options === null || options === void 0 ? void 0 : options.hide) || false;\n this.isStemlet = (options === null || options === void 0 ? void 0 : options.isStemlet) || false;\n this.stemletHeight = (options === null || options === void 0 ? void 0 : options.stemletHeight) || 0;\n // Use to adjust the rendered height without affecting\n // the results of `.getExtents()`\n this.renderHeightAdjustment = 0;\n this.setOptions(options);\n }\n static get CATEGORY() {\n return Category.Stem;\n }\n // Stem directions\n static get UP() {\n return 1;\n }\n static get DOWN() {\n return -1;\n }\n // Theme\n static get WIDTH() {\n return Tables.STEM_WIDTH;\n }\n static get HEIGHT() {\n return Tables.STEM_HEIGHT;\n }\n setOptions(options) {\n // Changing where the stem meets the head\n this.stem_up_y_offset = (options === null || options === void 0 ? void 0 : options.stem_up_y_offset) || 0;\n this.stem_down_y_offset = (options === null || options === void 0 ? void 0 : options.stem_down_y_offset) || 0;\n this.stem_up_y_base_offset = (options === null || options === void 0 ? void 0 : options.stem_up_y_base_offset) || 0;\n this.stem_down_y_base_offset = (options === null || options === void 0 ? void 0 : options.stem_down_y_base_offset) || 0;\n }\n // Set the x bounds for the default notehead\n setNoteHeadXBounds(x_begin, x_end) {\n this.x_begin = x_begin;\n this.x_end = x_end;\n return this;\n }\n // Set the direction of the stem in relation to the noteheads\n setDirection(direction) {\n this.stem_direction = direction;\n }\n // Set the extension for the stem, generally for flags or beams\n setExtension(ext) {\n this.stem_extension = ext;\n }\n getExtension() {\n return this.stem_extension;\n }\n // The the y bounds for the top and bottom noteheads\n setYBounds(y_top, y_bottom) {\n this.y_top = y_top;\n this.y_bottom = y_bottom;\n }\n // Gets the entire height for the stem\n getHeight() {\n const y_offset = this.stem_direction === Stem.UP ? this.stem_up_y_offset : this.stem_down_y_offset;\n const unsigned_height = this.y_bottom - this.y_top + (Stem.HEIGHT - y_offset + this.stem_extension); // parentheses just for grouping.\n return unsigned_height * this.stem_direction;\n }\n getBoundingBox() {\n throw new RuntimeError('NotImplemented', 'getBoundingBox() not implemented.');\n }\n // Get the y coordinates for the very base of the stem to the top of\n // the extension\n getExtents() {\n const isStemUp = this.stem_direction === Stem.UP;\n const ys = [this.y_top, this.y_bottom];\n const stemHeight = Stem.HEIGHT + this.stem_extension;\n const innerMostNoteheadY = (isStemUp ? Math.min : Math.max)(...ys);\n const outerMostNoteheadY = (isStemUp ? Math.max : Math.min)(...ys);\n const stemTipY = innerMostNoteheadY + stemHeight * -this.stem_direction;\n return { topY: stemTipY, baseY: outerMostNoteheadY };\n }\n setVisibility(isVisible) {\n this.hide = !isVisible;\n return this;\n }\n setStemlet(isStemlet, stemletHeight) {\n this.isStemlet = isStemlet;\n this.stemletHeight = stemletHeight;\n return this;\n }\n adjustHeightForFlag() {\n this.renderHeightAdjustment = Tables.currentMusicFont().lookupMetric('stem.heightAdjustmentForFlag', -3);\n }\n adjustHeightForBeam() {\n this.renderHeightAdjustment = -Stem.WIDTH / 2;\n }\n // Render the stem onto the canvas\n draw() {\n this.setRendered();\n if (this.hide)\n return;\n const ctx = this.checkContext();\n let stem_x;\n let stem_y;\n const stem_direction = this.stem_direction;\n let y_base_offset = 0;\n if (stem_direction === Stem.DOWN) {\n // Down stems are rendered to the left of the head.\n stem_x = this.x_begin;\n stem_y = this.y_top + this.stem_down_y_offset;\n y_base_offset = this.stem_down_y_base_offset;\n }\n else {\n // Up stems are rendered to the right of the head.\n stem_x = this.x_end;\n stem_y = this.y_bottom - this.stem_up_y_offset;\n y_base_offset = this.stem_up_y_base_offset;\n }\n const stemHeight = this.getHeight();\n L('Rendering stem - ', 'Top Y: ', this.y_top, 'Bottom Y: ', this.y_bottom);\n // The offset from the stem's base which is required fo satisfy the stemlet height\n const stemletYOffset = this.isStemlet ? stemHeight - this.stemletHeight * this.stem_direction : 0;\n // Draw the stem\n ctx.save();\n ctx.openGroup('stem', this.getAttribute('id'), { pointerBBox: true });\n this.applyStyle(ctx);\n ctx.beginPath();\n ctx.setLineWidth(Stem.WIDTH);\n ctx.moveTo(stem_x, stem_y - stemletYOffset + y_base_offset);\n ctx.lineTo(stem_x, stem_y - stemHeight - this.renderHeightAdjustment * stem_direction);\n ctx.stroke();\n this.restoreStyle(ctx);\n ctx.closeGroup();\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Stem.DEBUG` to `true`. */\nStem.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextFormatter.DEBUG)\n log('Vex.Flow.TextFormatter', args);\n}\n/**\n * Text widths are stored in a cache, so we don't have to recompute widths\n * for the same font + string combination.\n *\n * The cache is first keyed by the font information. The key is of the form:\n * `${family}-${size}-${weight}-${style}`\n * The second level key is the specific text to be measured.\n *\n * The stored value is the measured width in `em` units.\n * textWidth == textWidthCache[cacheKey][textToMeasure]\n */\nconst textWidthCache = {};\n/**\n * Applications may register additional fonts via `TextFormatter.registerInfo(info)`.\n * The metrics for those fonts will be made available to the application.\n */\nconst registry = {};\nexport class TextFormatter {\n /**\n * Use `TextFormatter.create(...)` to build an instance from information previously\n * registered via `TextFormatter.registerInfo(info)`.\n */\n constructor(formatterInfo) {\n /** Font family. */\n this.family = '';\n /** Specified in `pt` units. */\n this.size = 14;\n /** Font metrics are extracted at 1000 upem (units per em). */\n this.resolution = 1000;\n /**\n * For text formatting, we do not require glyph outlines, but instead rely on glyph\n * bounding box metrics such as:\n * ```\n * {\n * x_min: 48,\n * x_max: 235,\n * y_min: -17,\n * y_max: 734,\n * ha: 751,\n * leftSideBearing: 48,\n * advanceWidth: 286,\n * }\n * ```\n */\n this.glyphs = {};\n this.serifs = false;\n this.monospaced = false;\n this.italic = false;\n this.bold = false;\n this.superscriptOffset = 0;\n this.subscriptOffset = 0;\n this.maxSizeGlyph = 'H';\n // This is an internal key used to index the `textWidthCache`.\n this.cacheKey = '';\n this.updateParams(formatterInfo);\n }\n /**\n * Return all registered font families.\n */\n static getFontFamilies() {\n const registeredFonts = [];\n for (const fontFamily in registry) {\n const formatterInfo = registry[fontFamily];\n registeredFonts.push(Object.assign({}, formatterInfo));\n }\n return registeredFonts;\n }\n /**\n * Call `TextFormatter.registerInfo(info)` to register font information before using this method.\n *\n * This method creates a formatter for the font that most closely matches the requested font.\n * We compare font family, bold, and italic attributes.\n * This method will return a fallback formatter if there are no matches.\n */\n static create(requestedFont = {}) {\n L('create: ', requestedFont);\n if (!requestedFont.family) {\n requestedFont.family = Font.SANS_SERIF;\n }\n // TODO: One potential (small) optimization is to cache the TextFormatter object\n // returned for each font info. We would probably want to clear the cache if\n // the registry is ever updated.\n const candidates = [];\n // The incoming font family is a string of comma-separated font family names.\n // (e.g., `PetalumaScript, Arial, sans-serif`).\n const requestedFamilies = requestedFont.family.split(/\\s*,\\s*/);\n for (const requestedFamily of requestedFamilies) {\n for (const fontFamily in registry) {\n // Support cases where the registry contains 'Roboto Slab Medium',\n // but the requestedFont.family is 'Roboto Slab'.\n if (fontFamily.startsWith(requestedFamily)) {\n candidates.push(registry[fontFamily]);\n }\n }\n if (candidates.length > 0) {\n break;\n }\n }\n let formatter;\n if (candidates.length === 0) {\n // No match, so return a fallback text formatter.\n formatter = new TextFormatter(Object.values(registry)[0]);\n }\n else if (candidates.length === 1) {\n formatter = new TextFormatter(candidates[0]);\n }\n else {\n const bold = Font.isBold(requestedFont.weight);\n const italic = Font.isItalic(requestedFont.style);\n const perfectMatch = candidates.find((f) => f.bold === bold && f.italic === italic);\n if (perfectMatch) {\n formatter = new TextFormatter(perfectMatch);\n }\n else {\n const partialMatch = candidates.find((f) => f.italic === italic || f.bold === bold);\n if (partialMatch) {\n formatter = new TextFormatter(partialMatch);\n }\n else {\n formatter = new TextFormatter(candidates[0]);\n }\n }\n }\n const fontSize = requestedFont.size;\n if (typeof fontSize !== 'undefined') {\n const fontSizeInPt = Font.convertSizeToPointValue(fontSize);\n formatter.setFontSize(fontSizeInPt);\n }\n return formatter;\n }\n /**\n * @param fontFamily used as a key to the font registry.\n * @returns the same info object that was passed in via `TextFormatter.registerInfo(info)`\n */\n static getInfo(fontFamily) {\n return registry[fontFamily];\n }\n /**\n * Apps may register their own fonts and metrics, and those metrics\n * will be available to the app for formatting.\n *\n * Metrics can be generated from a font file using fontgen_text.js in the tools/fonts directory.\n * @param info\n * @param overwrite\n */\n static registerInfo(info, overwrite = false) {\n L('registerInfo: ', info, overwrite);\n const fontFamily = info.family;\n const currFontInfo = registry[fontFamily];\n if (currFontInfo === undefined || overwrite) {\n registry[fontFamily] = info;\n }\n }\n updateParams(params) {\n if (params.family)\n this.family = params.family;\n if (params.resolution)\n this.resolution = params.resolution;\n if (params.glyphs)\n this.glyphs = params.glyphs;\n if (params.serifs)\n this.serifs = params.serifs;\n if (params.monospaced)\n this.monospaced = params.monospaced;\n if (params.italic)\n this.italic = params.italic;\n if (params.bold)\n this.bold = params.bold;\n if (params.maxSizeGlyph)\n this.maxSizeGlyph = params.maxSizeGlyph;\n if (params.superscriptOffset)\n this.superscriptOffset = params.superscriptOffset;\n if (params.subscriptOffset)\n this.subscriptOffset = params.subscriptOffset;\n this.updateCacheKey();\n }\n /** Create a hash with the current font data, so we can cache computed widths. */\n updateCacheKey() {\n const family = this.family.replace(/\\s+/g, '_');\n const size = this.size;\n const weight = this.bold ? FontWeight.BOLD : FontWeight.NORMAL;\n const style = this.italic ? FontStyle.ITALIC : FontStyle.NORMAL;\n // Use the same key format as SVGContext.\n this.cacheKey = `${family}%${size}%${weight}%${style}`;\n }\n /**\n * The glyphs table is indexed by the character (e.g., 'C', '@').\n * See: robotoslab_glyphs.ts & petalumascript_glyphs.ts.\n */\n getGlyphMetrics(character) {\n if (this.glyphs[character]) {\n return this.glyphs[character];\n }\n else {\n return this.glyphs[this.maxSizeGlyph];\n }\n }\n get maxHeight() {\n const metrics = this.getGlyphMetrics(this.maxSizeGlyph);\n return (metrics.ha / this.resolution) * this.fontSizeInPixels;\n }\n /**\n * Retrieve the character's advanceWidth as a fraction of an `em` unit.\n * For the space character ' ' as defined in the:\n * petalumascript_glyphs.ts: 250 advanceWidth in the 1000 unitsPerEm font returns 0.25.\n * robotoslab_glyphs.ts: 509 advanceWidth in the 2048 unitsPerEm font returns 0.2485.\n */\n getWidthForCharacterInEm(c) {\n var _a;\n const metrics = this.getGlyphMetrics(c);\n if (!metrics) {\n // An arbitrary number, close to the `em` width of the '#' and '5' characters in PetalumaScript.\n return 0.65;\n }\n else {\n const advanceWidth = (_a = metrics.advanceWidth) !== null && _a !== void 0 ? _a : 0;\n return advanceWidth / this.resolution;\n }\n }\n /**\n * Retrieve the total width of `text` in `em` units.\n */\n getWidthForTextInEm(text) {\n const key = this.cacheKey;\n // Get the cache for this specific font family, size, weight, style combination.\n // The cache contains previously computed widths for different `text` strings.\n let cachedWidths = textWidthCache[key];\n if (cachedWidths === undefined) {\n cachedWidths = {};\n textWidthCache[key] = cachedWidths;\n }\n let width = cachedWidths[text];\n if (width === undefined) {\n width = 0;\n for (let i = 0; i < text.length; ++i) {\n width += this.getWidthForCharacterInEm(text[i]);\n }\n cachedWidths[text] = width;\n }\n return width;\n }\n /** The width of the text (in `em`) is scaled by the font size (in `px`). */\n getWidthForTextInPx(text) {\n return this.getWidthForTextInEm(text) * this.fontSizeInPixels;\n }\n /**\n * @param size in pt.\n */\n setFontSize(size) {\n this.size = size;\n // The width cache key depends on the current font size.\n this.updateCacheKey();\n return this;\n }\n /** `this.size` is specified in points. Convert to pixels. */\n get fontSizeInPixels() {\n return this.size * Font.scaleToPxFrom.pt;\n }\n getResolution() {\n return this.resolution;\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.TextFormatter.DEBUG` to `true`. */\nTextFormatter.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category, isStemmableNote, isTabNote } from './typeguard';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Annotation.DEBUG)\n log('Vex.Flow.Annotation', args);\n}\nexport var AnnotationHorizontalJustify;\n(function (AnnotationHorizontalJustify) {\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"LEFT\"] = 1] = \"LEFT\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"CENTER\"] = 2] = \"CENTER\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"RIGHT\"] = 3] = \"RIGHT\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(AnnotationHorizontalJustify || (AnnotationHorizontalJustify = {}));\nexport var AnnotationVerticalJustify;\n(function (AnnotationVerticalJustify) {\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"TOP\"] = 1] = \"TOP\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"CENTER\"] = 2] = \"CENTER\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"BOTTOM\"] = 3] = \"BOTTOM\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(AnnotationVerticalJustify || (AnnotationVerticalJustify = {}));\n/**\n * Annotations are modifiers that can be attached to\n * notes.\n *\n * See `tests/annotation_tests.ts` for usage examples.\n */\nexport class Annotation extends Modifier {\n /**\n * Annotations inherit from `Modifier` and is positioned correctly when\n * in a `ModifierContext`.\n * Create a new `Annotation` with the string `text`.\n */\n constructor(text) {\n super();\n this.text = text;\n this.horizontalJustification = AnnotationHorizontalJustify.CENTER;\n // warning: the default in the constructor is TOP, but in the factory the default is BOTTOM.\n // this is to support legacy application that may expect this.\n this.verticalJustification = AnnotationVerticalJustify.TOP;\n this.resetFont();\n // The default width is calculated from the text.\n this.setWidth(Tables.textWidth(text));\n }\n /** Annotations category string. */\n static get CATEGORY() {\n return Category.Annotation;\n }\n // Use the same padding for annotations as note head so the\n // words don't run into each other.\n static get minAnnotationPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Arrange annotations within a `ModifierContext` */\n static format(annotations, state) {\n if (!annotations || annotations.length === 0)\n return false;\n let leftWidth = 0;\n let rightWidth = 0;\n let maxLeftGlyphWidth = 0;\n let maxRightGlyphWidth = 0;\n for (let i = 0; i < annotations.length; ++i) {\n const annotation = annotations[i];\n const textFormatter = TextFormatter.create(annotation.textFont);\n // Text height is expressed in fractional stave spaces.\n const textLines = (5 + textFormatter.maxHeight) / Tables.STAVE_LINE_DISTANCE;\n let verticalSpaceNeeded = textLines;\n const note = annotation.checkAttachedNote();\n const glyphWidth = note.getGlyph().getWidth();\n // Get the text width from the font metrics.\n const textWidth = textFormatter.getWidthForTextInPx(annotation.text);\n if (annotation.horizontalJustification === AnnotationHorizontalJustify.LEFT) {\n maxLeftGlyphWidth = Math.max(glyphWidth, maxLeftGlyphWidth);\n leftWidth = Math.max(leftWidth, textWidth) + Annotation.minAnnotationPadding;\n }\n else if (annotation.horizontalJustification === AnnotationHorizontalJustify.RIGHT) {\n maxRightGlyphWidth = Math.max(glyphWidth, maxRightGlyphWidth);\n rightWidth = Math.max(rightWidth, textWidth);\n }\n else {\n leftWidth = Math.max(leftWidth, textWidth / 2) + Annotation.minAnnotationPadding;\n rightWidth = Math.max(rightWidth, textWidth / 2);\n maxLeftGlyphWidth = Math.max(glyphWidth / 2, maxLeftGlyphWidth);\n maxRightGlyphWidth = Math.max(glyphWidth / 2, maxRightGlyphWidth);\n }\n const stave = note.getStave();\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let stemHeight = 0;\n let lines = 5;\n if (isTabNote(note)) {\n if (note.render_options.draw_stem) {\n const stem = note.getStem();\n if (stem) {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n else {\n stemHeight = 0;\n }\n }\n else if (isStemmableNote(note)) {\n const stem = note.getStem();\n if (stem && note.getNoteType() === 'n') {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n if (stave) {\n lines = stave.getNumLines();\n }\n if (annotation.verticalJustification === this.VerticalJustify.TOP) {\n let noteLine = note.getLineNumber(true);\n if (isTabNote(note)) {\n noteLine = lines - (note.leastString() - 0.5);\n }\n if (stemDirection === Stem.UP) {\n noteLine += stemHeight;\n }\n const curTop = noteLine + state.top_text_line + 0.5;\n if (curTop < lines) {\n annotation.setTextLine(lines - noteLine);\n verticalSpaceNeeded += lines - noteLine;\n state.top_text_line = verticalSpaceNeeded;\n }\n else {\n annotation.setTextLine(state.top_text_line);\n state.top_text_line += verticalSpaceNeeded;\n }\n }\n else if (annotation.verticalJustification === this.VerticalJustify.BOTTOM) {\n let noteLine = lines - note.getLineNumber();\n if (isTabNote(note)) {\n noteLine = note.greatestString() - 1;\n }\n if (stemDirection === Stem.DOWN) {\n noteLine += stemHeight;\n }\n const curBottom = noteLine + state.text_line + 1;\n if (curBottom < lines) {\n annotation.setTextLine(lines - curBottom);\n verticalSpaceNeeded += lines - curBottom;\n state.text_line = verticalSpaceNeeded;\n }\n else {\n annotation.setTextLine(state.text_line);\n state.text_line += verticalSpaceNeeded;\n }\n }\n else {\n annotation.setTextLine(state.text_line);\n }\n }\n const rightOverlap = Math.min(Math.max(rightWidth - maxRightGlyphWidth, 0), Math.max(rightWidth - state.right_shift, 0));\n const leftOverlap = Math.min(Math.max(leftWidth - maxLeftGlyphWidth, 0), Math.max(leftWidth - state.left_shift, 0));\n state.left_shift += leftOverlap;\n state.right_shift += rightOverlap;\n return true;\n }\n /**\n * Set vertical position of text (above or below stave).\n * @param just value in `AnnotationVerticalJustify`.\n */\n setVerticalJustification(just) {\n this.verticalJustification = typeof just === 'string' ? Annotation.VerticalJustifyString[just] : just;\n return this;\n }\n /**\n * Get horizontal justification.\n */\n getJustification() {\n return this.horizontalJustification;\n }\n /**\n * Set horizontal justification.\n * @param justification value in `Annotation.Justify`.\n */\n setJustification(just) {\n this.horizontalJustification = typeof just === 'string' ? Annotation.HorizontalJustifyString[just] : just;\n return this;\n }\n /** Render text beside the note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n const textFormatter = TextFormatter.create(this.textFont);\n const start = note.getModifierStartXY(ModifierPosition.ABOVE, this.index);\n this.setRendered();\n // We're changing context parameters. Save current state.\n ctx.save();\n // Apply style might not save context, if this.style is undefined, so we\n // still need to save context state just before this, since we will be\n // changing ctx parameters below.\n this.applyStyle();\n ctx.openGroup('annotation', this.getAttribute('id'));\n ctx.setFont(this.textFont);\n const text_width = ctx.measureText(this.text).width;\n const text_height = textFormatter.maxHeight + 2;\n let x;\n let y;\n if (this.horizontalJustification === AnnotationHorizontalJustify.LEFT) {\n x = start.x;\n }\n else if (this.horizontalJustification === AnnotationHorizontalJustify.RIGHT) {\n x = start.x - text_width;\n }\n else if (this.horizontalJustification === AnnotationHorizontalJustify.CENTER) {\n x = start.x - text_width / 2;\n } /* CENTER_STEM */\n else {\n x = note.getStemX() - text_width / 2;\n }\n let stem_ext = {};\n let spacing = 0;\n const has_stem = note.hasStem();\n const stave = note.checkStave();\n // The position of the text varies based on whether or not the note\n // has a stem.\n if (has_stem) {\n stem_ext = note.checkStem().getExtents();\n spacing = stave.getSpacingBetweenLines();\n }\n if (this.verticalJustification === AnnotationVerticalJustify.BOTTOM) {\n // Use the largest (lowest) Y value\n const ys = note.getYs();\n y = ys.reduce((a, b) => (a > b ? a : b));\n y += (this.text_line + 1) * Tables.STAVE_LINE_DISTANCE + text_height;\n if (has_stem && stemDirection === Stem.DOWN) {\n y = Math.max(y, stem_ext.topY + text_height + spacing * this.text_line);\n }\n }\n else if (this.verticalJustification === AnnotationVerticalJustify.CENTER) {\n const yt = note.getYForTopText(this.text_line) - 1;\n const yb = stave.getYForBottomText(this.text_line);\n y = yt + (yb - yt) / 2 + text_height / 2;\n }\n else if (this.verticalJustification === AnnotationVerticalJustify.TOP) {\n y = note.getYs()[0] - (this.text_line + 1) * Tables.STAVE_LINE_DISTANCE;\n if (has_stem && stemDirection === Stem.UP) {\n // If the stem is above the stave already, go with default line width vs. actual\n // since the lines between don't really matter.\n spacing = stem_ext.topY < stave.getTopLineTopY() ? Tables.STAVE_LINE_DISTANCE : spacing;\n y = Math.min(y, stem_ext.topY - spacing * (this.text_line + 1));\n }\n } /* CENTER_STEM */\n else {\n const extents = note.getStemExtents();\n y = extents.topY + (extents.baseY - extents.topY) / 2 + text_height / 2;\n }\n L('Rendering annotation: ', this.text, x, y);\n ctx.fillText(this.text, x, y);\n ctx.closeGroup();\n this.restoreStyle();\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Annotation.DEBUG` to `true`. */\nAnnotation.DEBUG = false;\nAnnotation.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n/** Text annotations can be positioned and justified relative to the note. */\nAnnotation.HorizontalJustify = AnnotationHorizontalJustify;\nAnnotation.HorizontalJustifyString = {\n left: AnnotationHorizontalJustify.LEFT,\n right: AnnotationHorizontalJustify.RIGHT,\n center: AnnotationHorizontalJustify.CENTER,\n centerStem: AnnotationHorizontalJustify.CENTER_STEM,\n};\nAnnotation.VerticalJustify = AnnotationVerticalJustify;\nAnnotation.VerticalJustifyString = {\n above: AnnotationVerticalJustify.TOP,\n top: AnnotationVerticalJustify.TOP,\n below: AnnotationVerticalJustify.BOTTOM,\n bottom: AnnotationVerticalJustify.BOTTOM,\n center: AnnotationVerticalJustify.CENTER,\n centerStem: AnnotationVerticalJustify.CENTER_STEM,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns.\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isGraceNote, isStaveNote, isStemmableNote, isTabNote } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Articulation.DEBUG)\n log('Vex.Flow.Articulation', args);\n}\nconst { ABOVE, BELOW } = Modifier.Position;\nfunction roundToNearestHalf(mathFn, value) {\n return mathFn(value / 0.5) * 0.5;\n}\n// This includes both staff and ledger lines\nfunction isWithinLines(line, position) {\n return position === ABOVE ? line <= 5 : line >= 1;\n}\nfunction getRoundingFunction(line, position) {\n if (isWithinLines(line, position)) {\n if (position === ABOVE) {\n return Math.ceil;\n }\n else {\n return Math.floor;\n }\n }\n else {\n return Math.round;\n }\n}\nfunction snapLineToStaff(canSitBetweenLines, line, position, offsetDirection) {\n // Initially, snap to nearest staff line or space\n const snappedLine = roundToNearestHalf(getRoundingFunction(line, position), line);\n const canSnapToStaffSpace = canSitBetweenLines && isWithinLines(snappedLine, position);\n const onStaffLine = snappedLine % 1 === 0;\n if (canSnapToStaffSpace && onStaffLine) {\n const HALF_STAFF_SPACE = 0.5;\n return snappedLine + HALF_STAFF_SPACE * -offsetDirection;\n }\n else {\n return snappedLine;\n }\n}\n// Helper function for checking if a Note object is either a StaveNote or a GraceNote.\nconst isStaveOrGraceNote = (note) => isStaveNote(note) || isGraceNote(note);\nfunction getTopY(note, textLine) {\n const stemDirection = note.getStemDirection();\n const { topY: stemTipY, baseY: stemBaseY } = note.getStemExtents();\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemTipY;\n }\n else {\n return stemBaseY;\n }\n }\n else {\n return Math.min(...note.getYs());\n }\n }\n else if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemTipY;\n }\n else {\n return note.checkStave().getYForTopText(textLine);\n }\n }\n else {\n return note.checkStave().getYForTopText(textLine);\n }\n }\n else {\n throw new RuntimeError('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes');\n }\n}\nfunction getBottomY(note, textLine) {\n const stemDirection = note.getStemDirection();\n const { topY: stemTipY, baseY: stemBaseY } = note.getStemExtents();\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemBaseY;\n }\n else {\n return stemTipY;\n }\n }\n else {\n return Math.max(...note.getYs());\n }\n }\n else if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return note.checkStave().getYForBottomText(textLine);\n }\n else {\n return stemTipY;\n }\n }\n else {\n return note.checkStave().getYForBottomText(textLine);\n }\n }\n else {\n throw new RuntimeError('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes');\n }\n}\n/**\n * Get the initial offset of the articulation from the y value of the starting position.\n * This is required because the top/bottom text positions already have spacing applied to\n * provide a \"visually pleasant\" default position. However the y values provided from\n * the stavenote's top/bottom do *not* have any pre-applied spacing. This function\n * normalizes this asymmetry.\n * @param note\n * @param position\n * @returns\n */\nfunction getInitialOffset(note, position) {\n const isOnStemTip = (position === ABOVE && note.getStemDirection() === Stem.UP) ||\n (position === BELOW && note.getStemDirection() === Stem.DOWN);\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem() && isOnStemTip) {\n return 0.5;\n }\n else {\n // this amount is larger than the stem-tip offset because we start from\n // the center of the notehead\n return 1;\n }\n }\n else {\n if (note.hasStem() && isOnStemTip) {\n return 1;\n }\n else {\n return 0;\n }\n }\n}\n/**\n * Articulations and Accents are modifiers that can be\n * attached to notes. The complete list of articulations is available in\n * `tables.ts` under `Vex.Flow.articulationCodes`.\n *\n * See `tests/articulation_tests.ts` for usage examples.\n */\nexport class Articulation extends Modifier {\n /**\n * Create a new articulation.\n * @param type entry in `Vex.Flow.articulationCodes` in `tables.ts`\n */\n constructor(type) {\n super();\n this.type = type;\n this.position = BELOW;\n this.render_options = {\n font_scale: 38,\n };\n this.reset();\n }\n /** Articulations category string. */\n static get CATEGORY() {\n return Category.Articulation;\n }\n /**\n * FIXME:\n * Most of the complex formatting logic (ie: snapping to space) is\n * actually done in .render(). But that logic belongs in this method.\n *\n * Unfortunately, this isn't possible because, by this point, stem lengths\n * have not yet been finalized. Finalized stem lengths are required to determine the\n * initial position of any stem-side articulation.\n *\n * This indicates that all objects should have their stave set before being\n * formatted. It can't be an optional if you want accurate vertical positioning.\n * Consistently positioned articulations that play nice with other modifiers\n * won't be possible until we stop relying on render-time formatting.\n *\n * Ideally, when this function has completed, the vertical articulation positions\n * should be ready to render without further adjustment. But the current state\n * is far from this ideal.\n */\n static format(articulations, state) {\n if (!articulations || articulations.length === 0)\n return false;\n const margin = 0.5;\n let maxGlyphWidth = 0;\n const getIncrement = (articulation, line, position) => roundToNearestHalf(getRoundingFunction(line, position), defined(articulation.glyph.getMetrics().height) / 10 + margin);\n articulations.forEach((articulation) => {\n const note = articulation.checkAttachedNote();\n maxGlyphWidth = Math.max(note.getGlyph().getWidth(), maxGlyphWidth);\n let lines = 5;\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let stemHeight = 0;\n // Decide if we need to consider beam direction in placement.\n if (isStemmableNote(note)) {\n const stem = note.getStem();\n if (stem) {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n const stave = note.getStave();\n if (stave) {\n lines = stave.getNumLines();\n }\n if (articulation.getPosition() === ABOVE) {\n let noteLine = note.getLineNumber(true);\n if (stemDirection === Stem.UP) {\n noteLine += stemHeight;\n }\n let increment = getIncrement(articulation, state.top_text_line, ABOVE);\n const curTop = noteLine + state.top_text_line + 0.5;\n // If articulation must be above stave, add lines between note and stave top\n if (!articulation.articulation.between_lines && curTop < lines) {\n increment += lines - curTop;\n }\n articulation.setTextLine(state.top_text_line);\n state.top_text_line += increment;\n }\n else if (articulation.getPosition() === BELOW) {\n let noteLine = Math.max(lines - note.getLineNumber(), 0);\n if (stemDirection === Stem.DOWN) {\n noteLine += stemHeight;\n }\n let increment = getIncrement(articulation, state.text_line, BELOW);\n const curBottom = noteLine + state.text_line + 0.5;\n // if articulation must be below stave, add lines from note to stave bottom\n if (!articulation.articulation.between_lines && curBottom < lines) {\n increment += lines - curBottom;\n }\n articulation.setTextLine(state.text_line);\n state.text_line += increment;\n }\n });\n const width = articulations\n .map((articulation) => articulation.getWidth())\n .reduce((maxWidth, articWidth) => Math.max(articWidth, maxWidth));\n const overlap = Math.min(Math.max(width - maxGlyphWidth, 0), Math.max(width - (state.left_shift + state.right_shift), 0));\n state.left_shift += overlap / 2;\n state.right_shift += overlap / 2;\n return true;\n }\n static easyScoreHook({ articulations }, note, builder) {\n if (!articulations)\n return;\n const articNameToCode = {\n staccato: 'a.',\n tenuto: 'a-',\n accent: 'a>',\n };\n articulations\n .split(',')\n .map((articString) => articString.trim().split('.'))\n .map(([name, position]) => {\n const artic = { type: articNameToCode[name] };\n if (position)\n artic.position = Modifier.PositionString[position];\n return builder.getFactory().Articulation(artic);\n })\n .map((artic) => note.addModifier(artic, 0));\n }\n reset() {\n this.articulation = Tables.articulationCodes(this.type);\n const articulation = defined(this.articulation, 'ArgumentError', `Articulation not found: ${this.type}`);\n const code = (this.position === ABOVE ? articulation.aboveCode : articulation.belowCode) || articulation.code;\n this.glyph = new Glyph(code !== null && code !== void 0 ? code : '', this.render_options.font_scale);\n this.setWidth(defined(this.glyph.getMetrics().width));\n }\n /** Render articulation in position next to note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const index = this.checkIndex();\n const { position, glyph, text_line: textLine } = this;\n const canSitBetweenLines = this.articulation.between_lines;\n const stave = note.checkStave();\n const staffSpace = stave.getSpacingBetweenLines();\n const isTab = isTabNote(note);\n // Articulations are centered over/under the note head.\n const { x } = note.getModifierStartXY(position, index);\n const shouldSitOutsideStaff = !canSitBetweenLines || isTab;\n const initialOffset = getInitialOffset(note, position);\n const padding = Tables.currentMusicFont().lookupMetric(`articulation.${glyph.getCode()}.padding`, 0);\n let y = {\n [ABOVE]: () => {\n glyph.setOrigin(0.5, 1);\n const y = getTopY(note, textLine) - (textLine + initialOffset) * staffSpace;\n return shouldSitOutsideStaff ? Math.min(stave.getYForTopText(Articulation.INITIAL_OFFSET), y) : y;\n },\n [BELOW]: () => {\n glyph.setOrigin(0.5, 0);\n const y = getBottomY(note, textLine) + (textLine + initialOffset) * staffSpace;\n return shouldSitOutsideStaff ? Math.max(stave.getYForBottomText(Articulation.INITIAL_OFFSET), y) : y;\n },\n }[position]();\n if (!isTab) {\n const offsetDirection = position === ABOVE ? -1 : +1;\n const noteLine = note.getKeyProps()[index].line;\n const distanceFromNote = (note.getYs()[index] - y) / staffSpace;\n const articLine = distanceFromNote + Number(noteLine);\n const snappedLine = snapLineToStaff(canSitBetweenLines, articLine, position, offsetDirection);\n if (isWithinLines(snappedLine, position))\n glyph.setOrigin(0.5, 0.5);\n y += Math.abs(snappedLine - articLine) * staffSpace * offsetDirection + padding * offsetDirection;\n }\n L(`Rendering articulation at (x: ${x}, y: ${y})`);\n glyph.render(ctx, x, y);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Articulation.DEBUG` to `true`. */\nArticulation.DEBUG = false;\nArticulation.INITIAL_OFFSET = -0.5;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2021.\n// MIT License\nimport { Category } from './typeguard';\nexport class RenderContext {\n static get CATEGORY() {\n return Category.RenderContext;\n }\n set font(f) {\n this.setFont(f);\n }\n get font() {\n return this.getFont();\n }\n /**\n * This is kept for backwards compatibility with 3.0.9.\n * @deprecated use `setFont(...)` instead since it now supports CSS font shorthand.\n */\n setRawFont(f) {\n this.setFont(f);\n return this;\n }\n}\n/**\n * Draw a tiny dot marker on the specified context. A great debugging aid.\n * @param ctx context\n * @param x dot x coordinate\n * @param y dot y coordinate\n * @param color\n */\nexport function drawDot(ctx, x, y, color = '#F55') {\n ctx.save();\n ctx.setFillStyle(color);\n // draw a circle\n ctx.beginPath();\n ctx.arc(x, y, 3, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n ctx.restore();\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\n/**\n * Tickable represents a element that sit on a score and\n * has a duration, i.e., Tickables occupy space in the musical rendering dimension.\n */\nexport class Tickable extends Element {\n constructor() {\n super();\n this._preFormatted = false;\n this._postFormatted = false;\n // These properties represent the duration of\n // this tickable element.\n this.ticks = new Fraction(0, 1); // Fractional value of ticks\n this.intrinsicTicks = 0; // Floating point value of ticks\n this.tickMultiplier = new Fraction(1, 1);\n // Formatter metrics\n this.width = 0;\n this.x_shift = 0; // Shift from tick context\n this.modifiers = [];\n this.tupletStack = [];\n this.align_center = false;\n this.center_x_shift = 0; // Shift from tick context if center aligned\n // This flag tells the formatter to ignore this tickable during\n // formatting and justification. It is set by tickables such as BarNote.\n this.ignore_ticks = false;\n // This is a space for an external formatting class or function to maintain\n // metrics.\n this.formatterMetrics = {\n // The freedom of a tickable is the distance it can move without colliding\n // with neighboring elements. A formatter can set these values during its\n // formatting pass, which a different formatter can then use to fine tune.\n freedom: { left: 0, right: 0 },\n // The simplified rational duration of this tick as a string. It can be\n // used as an index to a map or hashtable.\n duration: '',\n // The number of formatting iterations undergone.\n iterations: 0,\n // The space in pixels allocated by this formatter, along with the mean space\n // for tickables of this duration, and the deviation from the mean.\n space: {\n used: 0,\n mean: 0,\n deviation: 0,\n },\n };\n }\n static get CATEGORY() {\n return Category.Tickable;\n }\n /** Reset the Tickable, this function will be overloaded. */\n reset() {\n return this;\n }\n /** Return the ticks. */\n getTicks() {\n return this.ticks;\n }\n /** Check if it ignores the ticks. */\n shouldIgnoreTicks() {\n return this.ignore_ticks;\n }\n /** Ignore the ticks. */\n setIgnoreTicks(flag) {\n this.ignore_ticks = flag;\n return this;\n }\n /** Set width of note. Used by the formatter for positioning. */\n setWidth(width) {\n this.width = width;\n }\n /** Get width of note. Used by the formatter for positioning. */\n getWidth() {\n if (!this._preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetWidth on an unformatted note.\");\n }\n return this.width + (this.modifierContext ? this.modifierContext.getWidth() : 0);\n }\n /** Displace note by `x` pixels. Used by the formatter. */\n setXShift(x) {\n this.x_shift = x;\n return this;\n }\n /** Get the `x` displaced pixels of the note. */\n getXShift() {\n return this.x_shift;\n }\n /** Get `x` position of this tick context. */\n getX() {\n const tickContext = this.checkTickContext(`Can't getX() without a TickContext.`);\n return tickContext.getX() + this.x_shift;\n }\n /** Return the formatterMetrics. */\n getFormatterMetrics() {\n return this.formatterMetrics;\n }\n /** Return the center `x` shift. */\n getCenterXShift() {\n if (this.isCenterAligned()) {\n return this.center_x_shift;\n }\n return 0;\n }\n /** Set the center `x` shift. */\n setCenterXShift(centerXShift) {\n this.center_x_shift = centerXShift;\n return this;\n }\n // Check if tickable is center aligned. */\n isCenterAligned() {\n return this.align_center;\n }\n // Set/unset center alignment. */\n setCenterAlignment(align_center) {\n this.align_center = align_center;\n return this;\n }\n /**\n * Return the associated voice. Every tickable must be associated with a voice.\n * This allows formatters and preFormatter to associate them with the right modifierContexts.\n */\n getVoice() {\n return defined(this.voice, 'NoVoice', 'Tickable has no voice.');\n }\n /** Set the associated voice. */\n setVoice(voice) {\n this.voice = voice;\n }\n /** Get the tuplet. */\n getTuplet() {\n return this.tuplet;\n }\n /** Return the intrinsic ticks. */\n getTupletStack() {\n return this.tupletStack;\n }\n /**\n * Reset the specific Tuplet if this is not provided, all tuplets are reset.\n * Remove any prior tuplets from the tick calculation and\n * reset the intrinsic tick value.\n */\n resetTuplet(tuplet) {\n let noteCount;\n let notesOccupied;\n if (tuplet) {\n const i = this.tupletStack.indexOf(tuplet);\n if (i !== -1) {\n this.tupletStack.splice(i, 1);\n noteCount = tuplet.getNoteCount();\n notesOccupied = tuplet.getNotesOccupied();\n // Revert old multiplier by inverting numerator & denom.:\n this.applyTickMultiplier(noteCount, notesOccupied);\n }\n return this;\n }\n while (this.tupletStack.length) {\n tuplet = this.tupletStack.pop();\n noteCount = tuplet.getNoteCount();\n notesOccupied = tuplet.getNotesOccupied();\n // Revert old multiplier by inverting numerator & denom.:\n this.applyTickMultiplier(noteCount, notesOccupied);\n }\n return this;\n }\n /** Attach to new tuplet. */\n setTuplet(tuplet) {\n if (tuplet) {\n this.tupletStack.push(tuplet);\n const noteCount = tuplet.getNoteCount();\n const notesOccupied = tuplet.getNotesOccupied();\n this.applyTickMultiplier(notesOccupied, noteCount);\n }\n this.tuplet = tuplet;\n return this;\n }\n /**\n * Add self to the provided ModifierContext `mc`.\n * If this tickable has modifiers, set modifierContext.\n * @returns this\n */\n addToModifierContext(mc) {\n this.modifierContext = mc;\n for (let i = 0; i < this.modifiers.length; ++i) {\n this.modifierContext.addMember(this.modifiers[i]);\n }\n this.modifierContext.addMember(this);\n this._preFormatted = false;\n return this;\n }\n /**\n * Optional, if tickable has modifiers, associate a Modifier.\n * @param mod the modifier\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n addModifier(modifier, index = 0) {\n this.modifiers.push(modifier);\n this._preFormatted = false;\n return this;\n }\n /** Get the list of associated modifiers. */\n getModifiers() {\n return this.modifiers;\n }\n /** Set the Tick Context. */\n setTickContext(tc) {\n this.tickContext = tc;\n this._preFormatted = false;\n }\n checkTickContext(message = 'Tickable has no tick context.') {\n return defined(this.tickContext, 'NoTickContext', message);\n }\n /** Preformat the Tickable. */\n preFormat() {\n if (this._preFormatted)\n return;\n this.width = 0;\n if (this.modifierContext) {\n this.modifierContext.preFormat();\n this.width += this.modifierContext.getWidth();\n }\n }\n /** Set preformatted status. */\n set preFormatted(value) {\n this._preFormatted = value;\n }\n get preFormatted() {\n return this._preFormatted;\n }\n /** Postformat the Tickable. */\n postFormat() {\n if (this._postFormatted)\n return this;\n this._postFormatted = true;\n return this;\n }\n /** Set postformatted status. */\n set postFormatted(value) {\n this._postFormatted = value;\n }\n get postFormatted() {\n return this._postFormatted;\n }\n /** Return the intrinsic ticks. */\n getIntrinsicTicks() {\n return this.intrinsicTicks;\n }\n /** Set the intrinsic ticks. */\n setIntrinsicTicks(intrinsicTicks) {\n this.intrinsicTicks = intrinsicTicks;\n this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks);\n }\n /** Get the tick multiplier. */\n getTickMultiplier() {\n return this.tickMultiplier;\n }\n /** Apply a tick multiplier. */\n applyTickMultiplier(numerator, denominator) {\n this.tickMultiplier.multiply(numerator, denominator);\n this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks);\n }\n /** Set the duration. */\n setDuration(duration) {\n const ticks = duration.numerator * (Tables.RESOLUTION / duration.denominator);\n this.ticks = this.tickMultiplier.clone().multiply(ticks);\n this.intrinsicTicks = this.ticks.value();\n }\n getAbsoluteX() {\n const tickContext = this.checkTickContext(`Can't getAbsoluteX() without a TickContext.`);\n return tickContext.getX();\n }\n /** Attach this note to a modifier context. */\n setModifierContext(mc) {\n this.modifierContext = mc;\n return this;\n }\n /** Get `ModifierContext`. */\n getModifierContext() {\n return this.modifierContext;\n }\n /** Check and get `ModifierContext`. */\n checkModifierContext() {\n return defined(this.modifierContext, 'NoModifierContext', 'No modifier context attached to this tickable.');\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from './font';\nimport { drawDot } from './rendercontext';\nimport { Tables } from './tables';\nimport { Tickable } from './tickable';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\n/**\n * Note implements an abstract interface for notes and chords that\n * are rendered on a stave. Notes have some common properties: All of them\n * have a value (e.g., pitch, fret, etc.) and a duration (quarter, half, etc.)\n *\n * Some notes have stems, heads, dots, etc. Most notational elements that\n * surround a note are called *modifiers*, and every note has an associated\n * array of them. All notes also have a rendering context and belong to a stave.\n */\nexport class Note extends Tickable {\n /**\n * Every note is a tickable, i.e., it can be mutated by the `Formatter` class for\n * positioning and layout.\n *\n * @param noteStruct To create a new note you need to provide a `noteStruct`.\n */\n constructor(noteStruct) {\n super();\n if (!noteStruct) {\n throw new RuntimeError('BadArguments', 'Note must have valid initialization data to identify duration and type.');\n }\n /** Parses `noteStruct` and get note properties. */\n const parsedNoteStruct = Note.parseNoteStruct(noteStruct);\n if (!parsedNoteStruct) {\n throw new RuntimeError('BadArguments', `Invalid note initialization object: ${JSON.stringify(noteStruct)}`);\n }\n // Set note properties from parameters.\n this.keys = noteStruct.keys || [];\n // per-pitch properties\n this.keyProps = [];\n this.duration = parsedNoteStruct.duration;\n this.noteType = parsedNoteStruct.type;\n this.customTypes = parsedNoteStruct.customTypes;\n if (noteStruct.duration_override) {\n // Custom duration\n this.setDuration(noteStruct.duration_override);\n }\n else {\n // Default duration\n this.setIntrinsicTicks(parsedNoteStruct.ticks);\n }\n this.modifiers = [];\n // Get the glyph code for this note from the font.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n this.customGlyphs = this.customTypes.map((t) => Tables.getGlyphProps(this.duration, t));\n // Note to play for audio players.\n this.playNote = undefined;\n // Positioning contexts used by the Formatter.\n this.ignore_ticks = false;\n // Positioning variables\n this.width = 0; // Width in pixels calculated after preFormat\n this.leftDisplacedHeadPx = 0; // Extra room on left for displaced note head\n this.rightDisplacedHeadPx = 0; // Extra room on right for displaced note head\n this.x_shift = 0; // X shift from tick context X\n this.ys = []; // list of y coordinates for each note\n // we need to hold on to these for ties and beams.\n if (noteStruct.align_center) {\n this.setCenterAlignment(noteStruct.align_center);\n }\n // The render surface.\n this.render_options = {\n annotation_spacing: 5,\n glyph_font_scale: 1,\n stroke_px: 1,\n scale: 1,\n font: '',\n y_shift: 0,\n };\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // STATIC MEMBERS\n static get CATEGORY() {\n return Category.Note;\n }\n /** Debug helper. Displays various note metrics for the given note. */\n static plotMetrics(ctx, note, yPos) {\n const metrics = note.getMetrics();\n const xStart = note.getAbsoluteX() - metrics.modLeftPx - metrics.leftDisplacedHeadPx;\n const xPre1 = note.getAbsoluteX() - metrics.leftDisplacedHeadPx;\n const xAbs = note.getAbsoluteX();\n const xPost1 = note.getAbsoluteX() + metrics.notePx;\n const xPost2 = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx;\n const xEnd = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx + metrics.modRightPx;\n const xFreedomRight = xEnd + (note.getFormatterMetrics().freedom.right || 0);\n const xWidth = xEnd - xStart;\n ctx.save();\n ctx.setFont(Font.SANS_SERIF, 8);\n ctx.fillText(Math.round(xWidth) + 'px', xStart + note.getXShift(), yPos);\n const y = yPos + 7;\n function stroke(x1, x2, color, yy = y) {\n ctx.beginPath();\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n ctx.setLineWidth(3);\n ctx.moveTo(x1 + note.getXShift(), yy);\n ctx.lineTo(x2 + note.getXShift(), yy);\n ctx.stroke();\n }\n stroke(xStart, xPre1, 'red');\n stroke(xPre1, xAbs, '#999');\n stroke(xAbs, xPost1, 'green');\n stroke(xPost1, xPost2, '#999');\n stroke(xPost2, xEnd, 'red');\n stroke(xEnd, xFreedomRight, '#DD0');\n stroke(xStart - note.getXShift(), xStart, '#BBB'); // Shift\n drawDot(ctx, xAbs + note.getXShift(), y, 'blue');\n const formatterMetrics = note.getFormatterMetrics();\n if (formatterMetrics.iterations > 0) {\n const spaceDeviation = formatterMetrics.space.deviation;\n const prefix = spaceDeviation >= 0 ? '+' : '';\n ctx.setFillStyle('red');\n ctx.fillText(prefix + Math.round(spaceDeviation), xAbs + note.getXShift(), yPos - 10);\n }\n ctx.restore();\n }\n static parseDuration(durationString) {\n if (!durationString) {\n return undefined;\n }\n const regexp = /(\\d*\\/?\\d+|[a-z])(d*)([nrhms]|$)/;\n const result = regexp.exec(durationString);\n if (!result) {\n return undefined;\n }\n const duration = result[1];\n const dots = result[2].length;\n const type = result[3] || 'n';\n return { duration, dots, type };\n }\n static parseNoteStruct(noteStruct) {\n // Preserve backwards-compatibility\n const durationProps = Note.parseDuration(noteStruct.duration);\n if (!durationProps) {\n return undefined;\n }\n // If specified type is invalid, return undefined.\n let type = noteStruct.type;\n if (type && !Tables.validTypes[type]) {\n return undefined;\n }\n // If no type specified, check duration or custom types\n const customTypes = [];\n if (!type) {\n type = durationProps.type || 'n';\n // If we have keys, try and check if we've got a custom glyph\n if (noteStruct.keys !== undefined) {\n noteStruct.keys.forEach((k, i) => {\n const result = k.split('/');\n // We have a custom glyph specified after the note eg. /X2\n customTypes[i] = (result && result.length === 3 ? result[2] : type);\n });\n }\n }\n // Calculate the tick duration of the note\n let ticks = Tables.durationToTicks(durationProps.duration);\n if (!ticks) {\n return undefined;\n }\n // Are there any dots?\n const dots = noteStruct.dots ? noteStruct.dots : durationProps.dots;\n if (typeof dots !== 'number') {\n return undefined;\n }\n // Add ticks as necessary depending on the numbr of dots\n let currentTicks = ticks;\n for (let i = 0; i < dots; i++) {\n if (currentTicks <= 1)\n return undefined;\n currentTicks = currentTicks / 2;\n ticks += currentTicks;\n }\n return {\n duration: durationProps.duration,\n type,\n customTypes,\n dots,\n ticks,\n };\n }\n /**\n * Get the play note, which is arbitrary data that can be used by an\n * audio player.\n */\n getPlayNote() {\n return this.playNote;\n }\n /**\n * Set the play note, which is arbitrary data that can be used by an\n * audio player.\n */\n setPlayNote(note) {\n this.playNote = note;\n return this;\n }\n /**\n * @returns true if this note is a type of rest.\n *\n * Rests don't have pitches, but take up space in the score.\n * Subclasses should override this default implementation.\n */\n isRest() {\n return false;\n }\n /** Add stroke. */\n addStroke(index, stroke) {\n stroke.setNote(this);\n stroke.setIndex(index);\n this.modifiers.push(stroke);\n this.preFormatted = false;\n return this;\n }\n /** Get the target stave. */\n getStave() {\n return this.stave;\n }\n /** Check and get the target stave. */\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n /** Set the target stave. */\n setStave(stave) {\n this.stave = stave;\n this.setYs([stave.getYForLine(0)]); // Update Y values if the stave is changed.\n this.setContext(this.stave.getContext());\n return this;\n }\n /** Get spacing to the left of the notes. */\n getLeftDisplacedHeadPx() {\n return this.leftDisplacedHeadPx;\n }\n /** Get spacing to the right of the notes. */\n getRightDisplacedHeadPx() {\n return this.rightDisplacedHeadPx;\n }\n /** Set spacing to the left of the notes. */\n setLeftDisplacedHeadPx(x) {\n this.leftDisplacedHeadPx = x;\n return this;\n }\n /** Set spacing to the right of the notes. */\n setRightDisplacedHeadPx(x) {\n this.rightDisplacedHeadPx = x;\n return this;\n }\n /** True if this note has no duration (e.g., bar notes, spacers, etc.). */\n shouldIgnoreTicks() {\n return this.ignore_ticks;\n }\n /** Get the stave line number for the note. */\n // eslint-disable-next-line\n getLineNumber(isTopNote) {\n return 0;\n }\n /** Get the stave line number for rest. */\n getLineForRest() {\n return 0;\n }\n /** Get the glyph associated with this note. */\n // eslint-disable-next-line\n getGlyph() {\n return this.glyph;\n }\n /** Get the glyph width. */\n getGlyphWidth() {\n // TODO: FIXME (multiple potential values for this.glyph)\n if (this.glyph) {\n if (this.glyph.getMetrics) {\n return this.glyph.getMetrics().width;\n }\n else if (this.glyph.getWidth) {\n return this.glyph.getWidth(this.render_options.glyph_font_scale);\n }\n }\n return 0;\n }\n /**\n * Set Y positions for this note. Each Y value is associated with\n * an individual pitch/key within the note/chord.\n */\n setYs(ys) {\n this.ys = ys;\n return this;\n }\n /**\n * Get Y positions for this note. Each Y value is associated with\n * an individual pitch/key within the note/chord.\n */\n getYs() {\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-values calculated for this note.');\n }\n return this.ys;\n }\n /**\n * Get the Y position of the space above the stave onto which text can\n * be rendered.\n */\n getYForTopText(text_line) {\n return this.checkStave().getYForTopText(text_line);\n }\n /** Return the voice that this note belongs in. */\n getVoice() {\n if (!this.voice)\n throw new RuntimeError('NoVoice', 'Note has no voice.');\n return this.voice;\n }\n /** Attach this note to `voice`. */\n setVoice(voice) {\n this.voice = voice;\n this.preFormatted = false;\n return this;\n }\n /** Get the `TickContext` for this note. */\n getTickContext() {\n return this.checkTickContext();\n }\n /** Set the `TickContext` for this note. */\n setTickContext(tc) {\n this.tickContext = tc;\n this.preFormatted = false;\n return this;\n }\n /** Accessor to duration. */\n getDuration() {\n return this.duration;\n }\n /** Accessor to isDotted. */\n isDotted() {\n return this.getModifiersByType('Dot').length > 0;\n }\n /** Accessor to hasStem. */\n hasStem() {\n return false;\n }\n /** Accessor to note type. */\n getNoteType() {\n return this.noteType;\n }\n /** Get the beam. */\n getBeam() {\n return this.beam;\n }\n /** Check and get the beam. */\n checkBeam() {\n return defined(this.beam, 'NoBeam', 'No beam attached to instance');\n }\n /** Check it has a beam. */\n hasBeam() {\n return this.beam != undefined;\n }\n /** Set the beam. */\n setBeam(beam) {\n this.beam = beam;\n return this;\n }\n /**\n * Attach a modifier to this note.\n * @param modifier the Modifier to add.\n * @param index of the key to modify.\n * @returns this\n */\n addModifier(modifier, index = 0) {\n const signature = 'Note.addModifier(modifier: Modifier, index: number=0)';\n // Backwards compatibility with 3.0.9.\n if (typeof index === 'string') {\n index = parseInt(index);\n // eslint-disable-next-line\n console.warn(signature + ' expected a number for `index`, but received a string.');\n }\n // Some versions of VexFlow had the two parameters reversed.\n // Check here and throw an error if the argument types are not correct.\n if (typeof modifier !== 'object' || typeof index !== 'number') {\n throw new RuntimeError('WrongParams', 'Incorrect call signature. Use ' + signature + ' instead.');\n }\n modifier.setNote(this);\n modifier.setIndex(index);\n super.addModifier(modifier);\n return this;\n }\n /** Get all modifiers of a specific type in `this.modifiers`. */\n getModifiersByType(type) {\n return this.modifiers.filter((modifier) => modifier.getCategory() === type);\n }\n /** Get the coordinates for where modifiers begin. */\n // eslint-disable-next-line\n getModifierStartXY(position, index, options) {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n return {\n x: this.getAbsoluteX(),\n y: this.ys[0],\n };\n }\n getRightParenthesisPx(index) {\n const props = this.getKeyProps()[index];\n return props.displaced ? this.getRightDisplacedHeadPx() : 0;\n }\n getLeftParenthesisPx(index) {\n const props = this.getKeyProps()[index];\n return props.displaced ? this.getLeftDisplacedHeadPx() - this.x_shift : -this.x_shift;\n }\n getFirstDotPx() {\n let px = this.getRightDisplacedHeadPx();\n if (this.checkModifierContext().getMembers('Parenthesis').length !== 0)\n px += Tables.currentMusicFont().lookupMetric('parenthesis.default.width');\n return px;\n }\n /** Get the metrics for this note. */\n getMetrics() {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getMetrics on an unformatted note.\");\n }\n const modLeftPx = this.modifierContext ? this.modifierContext.getState().left_shift : 0;\n const modRightPx = this.modifierContext ? this.modifierContext.getState().right_shift : 0;\n const width = this.getWidth();\n const glyphWidth = this.getGlyphWidth();\n const notePx = width -\n modLeftPx - // subtract left modifiers\n modRightPx - // subtract right modifiers\n this.leftDisplacedHeadPx - // subtract left displaced head\n this.rightDisplacedHeadPx; // subtract right displaced head\n // NOTE: If you change this, remember to update MockTickable.getMetrics() in the tests/ directory.\n return {\n width,\n glyphWidth,\n notePx,\n // Modifier spacing.\n modLeftPx,\n modRightPx,\n // Displaced note head on left or right.\n leftDisplacedHeadPx: this.leftDisplacedHeadPx,\n rightDisplacedHeadPx: this.rightDisplacedHeadPx,\n glyphPx: 0,\n };\n }\n /**\n * Get the absolute `X` position of this note's tick context. This\n * excludes x_shift, so you'll need to factor it in if you're\n * looking for the post-formatted x-position.\n */\n getAbsoluteX() {\n const tickContext = this.checkTickContext(`Can't getAbsoluteX() without a TickContext.`);\n // Position note to left edge of tick context.\n let x = tickContext.getX();\n if (this.stave) {\n x += this.stave.getNoteStartX() + Tables.currentMusicFont().lookupMetric('stave.padding');\n }\n if (this.isCenterAligned()) {\n x += this.getCenterXShift();\n }\n return x;\n }\n /** Get the direction of the stem. */\n getStemDirection() {\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n }\n /** Get the top and bottom `y` values of the stem. */\n getStemExtents() {\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n }\n /** Get the `x` coordinate to the right of the note. */\n getTieRightX() {\n let tieStartX = this.getAbsoluteX();\n const note_glyph_width = this.glyph.getWidth();\n tieStartX += note_glyph_width / 2;\n tieStartX += -this.width / 2 + this.width + 2;\n return tieStartX;\n }\n /** Get the `x` coordinate to the left of the note. */\n getTieLeftX() {\n let tieEndX = this.getAbsoluteX();\n const note_glyph_width = this.glyph.getWidth();\n tieEndX += note_glyph_width / 2;\n tieEndX -= this.width / 2 + 2;\n return tieEndX;\n }\n // Get the pitches in the note\n getKeys() {\n return this.keys;\n }\n // Get the properties for all the keys in the note\n getKeyProps() {\n return this.keyProps;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// A base class for stave modifiers (e.g. clefs, key signatures)\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { defined } from './util';\nexport var StaveModifierPosition;\n(function (StaveModifierPosition) {\n StaveModifierPosition[StaveModifierPosition[\"CENTER\"] = 0] = \"CENTER\";\n StaveModifierPosition[StaveModifierPosition[\"LEFT\"] = 1] = \"LEFT\";\n StaveModifierPosition[StaveModifierPosition[\"RIGHT\"] = 2] = \"RIGHT\";\n StaveModifierPosition[StaveModifierPosition[\"ABOVE\"] = 3] = \"ABOVE\";\n StaveModifierPosition[StaveModifierPosition[\"BELOW\"] = 4] = \"BELOW\";\n StaveModifierPosition[StaveModifierPosition[\"BEGIN\"] = 5] = \"BEGIN\";\n StaveModifierPosition[StaveModifierPosition[\"END\"] = 6] = \"END\";\n})(StaveModifierPosition || (StaveModifierPosition = {}));\nexport class StaveModifier extends Element {\n constructor() {\n super();\n this.width = 0;\n this.x = 0;\n this.padding = 10;\n this.position = StaveModifierPosition.ABOVE;\n }\n static get CATEGORY() {\n return Category.StaveModifier;\n }\n static get Position() {\n return StaveModifierPosition;\n }\n getPosition() {\n return this.position;\n }\n setPosition(position) {\n this.position = position;\n return this;\n }\n getStave() {\n return this.stave;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getWidth() {\n return this.width;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getX() {\n return this.x;\n }\n setX(x) {\n this.x = x;\n return this;\n }\n placeGlyphOnLine(glyph, stave, line, customShift = 0) {\n glyph.setYShift(stave.getYForLine(line !== null && line !== void 0 ? line : 0) - stave.getYForGlyphs() + customShift);\n }\n getPadding(index) {\n return index !== undefined && index < 2 ? 0 : this.padding;\n }\n setPadding(padding) {\n this.padding = padding;\n return this;\n }\n setLayoutMetrics(layoutMetrics) {\n this.layoutMetrics = layoutMetrics;\n return this;\n }\n getLayoutMetrics() {\n return this.layoutMetrics;\n }\n // eslint-disable-next-line\n draw(...args) {\n // DO NOTHING.\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Author Larry Kuhns 2011\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport var BarlineType;\n(function (BarlineType) {\n BarlineType[BarlineType[\"SINGLE\"] = 1] = \"SINGLE\";\n BarlineType[BarlineType[\"DOUBLE\"] = 2] = \"DOUBLE\";\n BarlineType[BarlineType[\"END\"] = 3] = \"END\";\n BarlineType[BarlineType[\"REPEAT_BEGIN\"] = 4] = \"REPEAT_BEGIN\";\n BarlineType[BarlineType[\"REPEAT_END\"] = 5] = \"REPEAT_END\";\n BarlineType[BarlineType[\"REPEAT_BOTH\"] = 6] = \"REPEAT_BOTH\";\n BarlineType[BarlineType[\"NONE\"] = 7] = \"NONE\";\n})(BarlineType || (BarlineType = {}));\nexport class Barline extends StaveModifier {\n constructor(type) {\n super();\n this.thickness = Tables.STAVE_LINE_THICKNESS;\n const TYPE = BarlineType;\n this.widths = {};\n this.widths[TYPE.SINGLE] = 5;\n this.widths[TYPE.DOUBLE] = 5;\n this.widths[TYPE.END] = 5;\n this.widths[TYPE.REPEAT_BEGIN] = 5;\n this.widths[TYPE.REPEAT_END] = 5;\n this.widths[TYPE.REPEAT_BOTH] = 5;\n this.widths[TYPE.NONE] = 5;\n this.paddings = {};\n this.paddings[TYPE.SINGLE] = 0;\n this.paddings[TYPE.DOUBLE] = 0;\n this.paddings[TYPE.END] = 0;\n this.paddings[TYPE.REPEAT_BEGIN] = 15;\n this.paddings[TYPE.REPEAT_END] = 15;\n this.paddings[TYPE.REPEAT_BOTH] = 15;\n this.paddings[TYPE.NONE] = 0;\n this.layoutMetricsMap = {};\n this.layoutMetricsMap[TYPE.SINGLE] = {\n xMin: 0,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.DOUBLE] = {\n xMin: -3,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.END] = {\n xMin: -5,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_END] = {\n xMin: -10,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_BEGIN] = {\n xMin: -2,\n xMax: 10,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_BOTH] = {\n xMin: -10,\n xMax: 10,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.NONE] = {\n xMin: 0,\n xMax: 0,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.setPosition(StaveModifierPosition.BEGIN);\n this.setType(type);\n }\n static get CATEGORY() {\n return Category.Barline;\n }\n static get type() {\n return BarlineType;\n }\n static get typeString() {\n return {\n single: BarlineType.SINGLE,\n double: BarlineType.DOUBLE,\n end: BarlineType.END,\n repeatBegin: BarlineType.REPEAT_BEGIN,\n repeatEnd: BarlineType.REPEAT_END,\n repeatBoth: BarlineType.REPEAT_BOTH,\n none: BarlineType.NONE,\n };\n }\n getType() {\n return this.type;\n }\n setType(type) {\n this.type = typeof type === 'string' ? Barline.typeString[type] : type;\n this.setWidth(this.widths[this.type]);\n this.setPadding(this.paddings[this.type]);\n this.setLayoutMetrics(this.layoutMetricsMap[this.type]);\n return this;\n }\n // Draw barlines\n draw(stave) {\n stave.checkContext();\n this.setRendered();\n switch (this.type) {\n case BarlineType.SINGLE:\n this.drawVerticalBar(stave, this.x, false);\n break;\n case BarlineType.DOUBLE:\n this.drawVerticalBar(stave, this.x, true);\n break;\n case BarlineType.END:\n this.drawVerticalEndBar(stave, this.x);\n break;\n case BarlineType.REPEAT_BEGIN:\n // If the barline is shifted over (in front of clef/time/key)\n // Draw vertical bar at the beginning.\n this.drawRepeatBar(stave, this.x, true);\n if (stave.getX() !== this.x) {\n this.drawVerticalBar(stave, stave.getX());\n }\n break;\n case BarlineType.REPEAT_END:\n this.drawRepeatBar(stave, this.x, false);\n break;\n case BarlineType.REPEAT_BOTH:\n this.drawRepeatBar(stave, this.x, false);\n this.drawRepeatBar(stave, this.x, true);\n break;\n default:\n // Default is NONE, so nothing to draw\n break;\n }\n }\n drawVerticalBar(stave, x, double_bar) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n if (double_bar) {\n staveCtx.fillRect(x - 3, topY, 1, botY - topY);\n }\n staveCtx.fillRect(x, topY, 1, botY - topY);\n }\n drawVerticalEndBar(stave, x) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n staveCtx.fillRect(x - 5, topY, 1, botY - topY);\n staveCtx.fillRect(x - 2, topY, 3, botY - topY);\n }\n drawRepeatBar(stave, x, begin) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n let x_shift = 3;\n if (!begin) {\n x_shift = -5;\n }\n staveCtx.fillRect(x + x_shift, topY, 1, botY - topY);\n staveCtx.fillRect(x - 2, topY, 3, botY - topY);\n const dot_radius = 2;\n // Shift dots left or right\n if (begin) {\n x_shift += 4;\n }\n else {\n x_shift -= 4;\n }\n const dot_x = x + x_shift + dot_radius / 2;\n // calculate the y offset based on number of stave lines\n let y_offset = (stave.getNumLines() - 1) * stave.getSpacingBetweenLines();\n y_offset = y_offset / 2 - stave.getSpacingBetweenLines() / 2;\n let dot_y = topY + y_offset + dot_radius / 2;\n // draw the top repeat dot\n staveCtx.beginPath();\n staveCtx.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false);\n staveCtx.fill();\n // draw the bottom repeat dot\n dot_y += stave.getSpacingBetweenLines();\n staveCtx.beginPath();\n staveCtx.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false);\n staveCtx.fill();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Author: Aaron (@AaronDavidNewman)\n//\n// This implements chord symbols above/below a chord.\n// Chord symbols are modifiers that can be attached to notes.\n// They can contain multiple 'blocks' which represent text or\n// glyphs with various positioning options.\n//\n// See `tests/chordsymbol_tests.ts` for usage examples.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category, isStemmableNote } from './typeguard';\nimport { log } from './util';\n// To enable logging for this class. Set `Vex.Flow.ChordSymbol.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (ChordSymbol.DEBUG)\n log('Vex.Flow.ChordSymbol', args);\n}\nexport var ChordSymbolHorizontalJustify;\n(function (ChordSymbolHorizontalJustify) {\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"LEFT\"] = 1] = \"LEFT\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"CENTER\"] = 2] = \"CENTER\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"RIGHT\"] = 3] = \"RIGHT\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(ChordSymbolHorizontalJustify || (ChordSymbolHorizontalJustify = {}));\nexport var ChordSymbolVerticalJustify;\n(function (ChordSymbolVerticalJustify) {\n ChordSymbolVerticalJustify[ChordSymbolVerticalJustify[\"TOP\"] = 1] = \"TOP\";\n ChordSymbolVerticalJustify[ChordSymbolVerticalJustify[\"BOTTOM\"] = 2] = \"BOTTOM\";\n})(ChordSymbolVerticalJustify || (ChordSymbolVerticalJustify = {}));\nexport var SymbolTypes;\n(function (SymbolTypes) {\n SymbolTypes[SymbolTypes[\"GLYPH\"] = 1] = \"GLYPH\";\n SymbolTypes[SymbolTypes[\"TEXT\"] = 2] = \"TEXT\";\n SymbolTypes[SymbolTypes[\"LINE\"] = 3] = \"LINE\";\n})(SymbolTypes || (SymbolTypes = {}));\nexport var SymbolModifiers;\n(function (SymbolModifiers) {\n SymbolModifiers[SymbolModifiers[\"NONE\"] = 1] = \"NONE\";\n SymbolModifiers[SymbolModifiers[\"SUBSCRIPT\"] = 2] = \"SUBSCRIPT\";\n SymbolModifiers[SymbolModifiers[\"SUPERSCRIPT\"] = 3] = \"SUPERSCRIPT\";\n})(SymbolModifiers || (SymbolModifiers = {}));\n/**\n * ChordSymbol is a modifier that creates a chord symbol above/below a chord.\n * As a modifier, it is attached to an existing note.\n */\nexport class ChordSymbol extends Modifier {\n constructor() {\n super();\n this.symbolBlocks = [];\n this.horizontal = ChordSymbolHorizontalJustify.LEFT;\n this.vertical = ChordSymbolVerticalJustify.TOP;\n this.useKerning = true;\n this.reportWidth = true;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.ChordSymbol;\n }\n static get superSubRatio() {\n return ChordSymbol.metrics.global.superSubRatio;\n }\n /** Currently unused: Globally turn off text formatting, if the built-in formatting does not work for your font. */\n static set NO_TEXT_FORMAT(val) {\n ChordSymbol.noFormat = val;\n }\n static get NO_TEXT_FORMAT() {\n return ChordSymbol.noFormat;\n }\n // eslint-disable-next-line\n static getMetricForGlyph(glyphCode) {\n if (ChordSymbol.metrics[glyphCode]) {\n return ChordSymbol.metrics[glyphCode];\n }\n return undefined;\n }\n static get engravingFontResolution() {\n return Tables.currentMusicFont().getResolution();\n }\n static get spacingBetweenBlocks() {\n return ChordSymbol.metrics.global.spacing / ChordSymbol.engravingFontResolution;\n }\n static getWidthForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0.65; // probably should do something here.\n }\n return metric.advanceWidth / ChordSymbol.engravingFontResolution;\n }\n static getYShiftForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0;\n }\n return metric.yOffset / ChordSymbol.engravingFontResolution;\n }\n static getXShiftForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0;\n }\n return (-1 * metric.leftSideBearing) / ChordSymbol.engravingFontResolution;\n }\n static get superscriptOffset() {\n return ChordSymbol.metrics.global.superscriptOffset / ChordSymbol.engravingFontResolution;\n }\n static get subscriptOffset() {\n return ChordSymbol.metrics.global.subscriptOffset / ChordSymbol.engravingFontResolution;\n }\n static get kerningOffset() {\n return ChordSymbol.metrics.global.kerningOffset / ChordSymbol.engravingFontResolution;\n }\n // eslint-disable-next-line\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.chordSymbol;\n }\n static get lowerKerningText() {\n // For example, see: `bravura_metrics.ts`\n // BravuraMetrics.glyphs.chordSymbol.global.lowerKerningText, which returns an array of letters.\n // ['D', 'F', 'P', 'T', 'V', 'Y']\n return ChordSymbol.metrics.global.lowerKerningText;\n }\n static get upperKerningText() {\n return ChordSymbol.metrics.global.upperKerningText;\n }\n static isSuperscript(block) {\n return block.symbolModifier !== undefined && block.symbolModifier === SymbolModifiers.SUPERSCRIPT;\n }\n static isSubscript(block) {\n return block.symbolModifier !== undefined && block.symbolModifier === SymbolModifiers.SUBSCRIPT;\n }\n static get minPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /**\n * Estimate the width of the whole chord symbol, based on the sum of the widths of the individual blocks.\n * Estimate how many lines above/below the staff we need.\n */\n static format(symbols, state) {\n var _a;\n if (!symbols || symbols.length === 0)\n return false;\n let width = 0;\n let nonSuperWidth = 0;\n let leftWidth = 0;\n let rightWidth = 0;\n let maxLeftGlyphWidth = 0;\n let maxRightGlyphWidth = 0;\n for (const symbol of symbols) {\n const fontSize = Font.convertSizeToPointValue((_a = symbol.textFont) === null || _a === void 0 ? void 0 : _a.size);\n const fontAdj = Font.scaleSize(fontSize, 0.05);\n const glyphAdj = fontAdj * 2;\n const note = symbol.checkAttachedNote();\n let symbolWidth = 0;\n let lineSpaces = 1;\n let vAlign = false;\n for (let j = 0; j < symbol.symbolBlocks.length; ++j) {\n const block = symbol.symbolBlocks[j];\n const sup = ChordSymbol.isSuperscript(block);\n const sub = ChordSymbol.isSubscript(block);\n const superSubScale = sup || sub ? ChordSymbol.superSubRatio : 1;\n const adj = block.symbolType === SymbolTypes.GLYPH ? glyphAdj * superSubScale : fontAdj * superSubScale;\n // If there are super/subscripts, they extend beyond the line so\n // assume they take up 2 lines\n if (sup || sub) {\n lineSpaces = 2;\n }\n // If there is a symbol-specific offset, add it but consider font\n // size since font and glyphs will be interspersed.\n const fontSize = symbol.textFormatter.fontSizeInPixels;\n const superSubFontSize = fontSize * superSubScale;\n if (block.symbolType === SymbolTypes.GLYPH && block.glyph !== undefined) {\n block.width = ChordSymbol.getWidthForGlyph(block.glyph) * superSubFontSize;\n block.yShift += ChordSymbol.getYShiftForGlyph(block.glyph) * superSubFontSize;\n block.xShift += ChordSymbol.getXShiftForGlyph(block.glyph) * superSubFontSize;\n block.glyph.scale = block.glyph.scale * adj;\n }\n else if (block.symbolType === SymbolTypes.TEXT) {\n block.width = block.width * superSubFontSize;\n block.yShift += symbol.getYOffsetForText(block.text) * adj;\n }\n if (block.symbolType === SymbolTypes.GLYPH &&\n block.glyph !== undefined &&\n block.glyph.code === ChordSymbol.glyphs.over.code) {\n lineSpaces = 2;\n }\n block.width += ChordSymbol.spacingBetweenBlocks * fontSize * superSubScale;\n // If a subscript immediately follows a superscript block, try to\n // overlay them.\n if (sup && j > 0) {\n const prev = symbol.symbolBlocks[j - 1];\n if (!ChordSymbol.isSuperscript(prev)) {\n nonSuperWidth = width;\n }\n }\n if (sub && nonSuperWidth > 0) {\n vAlign = true;\n // slide the symbol over so it lines up with superscript\n block.xShift = block.xShift + (nonSuperWidth - width);\n width = nonSuperWidth;\n nonSuperWidth = 0;\n // If we have vertically lined up, turn kerning off.\n symbol.setEnableKerning(false);\n }\n if (!sup && !sub) {\n nonSuperWidth = 0;\n }\n block.vAlign = vAlign;\n width += block.width;\n symbolWidth = width;\n }\n // make kerning adjustments after computing super/subscripts\n symbol.updateKerningAdjustments();\n symbol.updateOverBarAdjustments();\n if (symbol.getVertical() === ChordSymbolVerticalJustify.TOP) {\n symbol.setTextLine(state.top_text_line);\n state.top_text_line += lineSpaces;\n }\n else {\n symbol.setTextLine(state.text_line + 1);\n state.text_line += lineSpaces + 1;\n }\n if (symbol.getReportWidth() && isStemmableNote(note)) {\n const glyphWidth = note.getGlyph().getWidth();\n if (symbol.getHorizontal() === ChordSymbolHorizontalJustify.LEFT) {\n maxLeftGlyphWidth = Math.max(glyphWidth, maxLeftGlyphWidth);\n leftWidth = Math.max(leftWidth, symbolWidth) + ChordSymbol.minPadding;\n }\n else if (symbol.getHorizontal() === ChordSymbolHorizontalJustify.RIGHT) {\n maxRightGlyphWidth = Math.max(glyphWidth, maxRightGlyphWidth);\n rightWidth = Math.max(rightWidth, symbolWidth);\n }\n else {\n leftWidth = Math.max(leftWidth, symbolWidth / 2) + ChordSymbol.minPadding;\n rightWidth = Math.max(rightWidth, symbolWidth / 2);\n maxLeftGlyphWidth = Math.max(glyphWidth / 2, maxLeftGlyphWidth);\n maxRightGlyphWidth = Math.max(glyphWidth / 2, maxRightGlyphWidth);\n }\n }\n width = 0; // reset symbol width\n }\n const rightOverlap = Math.min(Math.max(rightWidth - maxRightGlyphWidth, 0), Math.max(rightWidth - state.right_shift, 0));\n const leftOverlap = Math.min(Math.max(leftWidth - maxLeftGlyphWidth, 0), Math.max(leftWidth - state.left_shift, 0));\n state.left_shift += leftOverlap;\n state.right_shift += rightOverlap;\n return true;\n }\n /**\n * Default text font.\n * Choose a font family that works well with the current music engraving font.\n * @override `Element.TEXT_FONT`.\n */\n static get TEXT_FONT() {\n let family = 'Roboto Slab, Times, serif';\n if (Tables.currentMusicFont().getName() === 'Petaluma') {\n // Fixes Issue #1180\n family = 'PetalumaScript, Arial, sans-serif';\n }\n return {\n family,\n size: 12,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n };\n }\n /**\n * The offset is specified in `em`. Scale this value by the font size in pixels.\n */\n get superscriptOffset() {\n return ChordSymbol.superscriptOffset * this.textFormatter.fontSizeInPixels;\n }\n get subscriptOffset() {\n return ChordSymbol.subscriptOffset * this.textFormatter.fontSizeInPixels;\n }\n setReportWidth(value) {\n this.reportWidth = value;\n return this;\n }\n getReportWidth() {\n return this.reportWidth;\n }\n updateOverBarAdjustments() {\n const barIndex = this.symbolBlocks.findIndex(({ symbolType, glyph }) => symbolType === SymbolTypes.GLYPH && glyph !== undefined && glyph.code === 'csymDiagonalArrangementSlash');\n if (barIndex < 0) {\n return;\n }\n const bar = this.symbolBlocks[barIndex];\n const xoff = bar.width / 4;\n const yoff = 0.25 * this.textFormatter.fontSizeInPixels;\n let symIndex = 0;\n for (symIndex === 0; symIndex < barIndex; ++symIndex) {\n const symbol = this.symbolBlocks[symIndex];\n symbol.xShift = symbol.xShift + xoff;\n symbol.yShift = symbol.yShift - yoff;\n }\n for (symIndex = barIndex + 1; symIndex < this.symbolBlocks.length; ++symIndex) {\n const symbol = this.symbolBlocks[symIndex];\n symbol.xShift = symbol.xShift - xoff;\n symbol.yShift = symbol.yShift + yoff;\n }\n }\n updateKerningAdjustments() {\n let accum = 0;\n for (let j = 0; j < this.symbolBlocks.length; ++j) {\n const symbol = this.symbolBlocks[j];\n accum += this.getKerningAdjustment(j);\n symbol.xShift += accum;\n }\n }\n /** Do some basic kerning so that letter chords like 'A' don't have the extensions hanging off to the right. */\n getKerningAdjustment(j) {\n if (!this.useKerning) {\n return 0;\n }\n const currSymbol = this.symbolBlocks[j];\n const prevSymbol = j > 0 ? this.symbolBlocks[j - 1] : undefined;\n let adjustment = 0;\n // Move things into the '/' over bar\n if (currSymbol.symbolType === SymbolTypes.GLYPH &&\n currSymbol.glyph !== undefined &&\n currSymbol.glyph.code === ChordSymbol.glyphs.over.code) {\n adjustment += currSymbol.glyph.metrics.x_shift;\n }\n if (prevSymbol !== undefined &&\n prevSymbol.symbolType === SymbolTypes.GLYPH &&\n prevSymbol.glyph !== undefined &&\n prevSymbol.glyph.code === ChordSymbol.glyphs.over.code) {\n adjustment += prevSymbol.glyph.metrics.x_shift;\n }\n // For superscripts that follow a letter without much top part, move it to the left slightly\n let preKernUpper = false;\n let preKernLower = false;\n if (prevSymbol !== undefined && prevSymbol.symbolType === SymbolTypes.TEXT) {\n preKernUpper = ChordSymbol.upperKerningText.some((xx) => xx === prevSymbol.text[prevSymbol.text.length - 1]);\n preKernLower = ChordSymbol.lowerKerningText.some((xx) => xx === prevSymbol.text[prevSymbol.text.length - 1]);\n }\n const kerningOffsetPixels = ChordSymbol.kerningOffset * this.textFormatter.fontSizeInPixels;\n // TODO: adjust kern for font size.\n // Where should this constant live?\n if (preKernUpper && currSymbol.symbolModifier === SymbolModifiers.SUPERSCRIPT) {\n adjustment += kerningOffsetPixels;\n }\n if (preKernLower && currSymbol.symbolType === SymbolTypes.TEXT) {\n if (currSymbol.text[0] >= 'a' && currSymbol.text[0] <= 'z') {\n adjustment += kerningOffsetPixels / 2;\n }\n if (ChordSymbol.upperKerningText.some((xx) => xx === (prevSymbol === null || prevSymbol === void 0 ? void 0 : prevSymbol.text[prevSymbol.text.length - 1]))) {\n adjustment += kerningOffsetPixels / 2;\n }\n }\n return adjustment;\n }\n /**\n * ChordSymbol allows multiple blocks so we can mix glyphs and font text.\n * Each block can have its own vertical orientation.\n */\n // eslint-disable-next-line\n getSymbolBlock(params = {}) {\n var _a, _b, _c;\n const symbolType = (_a = params.symbolType) !== null && _a !== void 0 ? _a : SymbolTypes.TEXT;\n const symbolBlock = {\n text: (_b = params.text) !== null && _b !== void 0 ? _b : '',\n symbolType,\n symbolModifier: (_c = params.symbolModifier) !== null && _c !== void 0 ? _c : SymbolModifiers.NONE,\n xShift: 0,\n yShift: 0,\n vAlign: false,\n width: 0,\n };\n // Note: symbol widths are resolution and font-independent.\n // We convert to pixel values when we know what the font is.\n if (symbolType === SymbolTypes.GLYPH && typeof params.glyph === 'string') {\n const glyphArgs = ChordSymbol.glyphs[params.glyph];\n const glyphPoints = 20;\n symbolBlock.glyph = new Glyph(glyphArgs.code, glyphPoints, { category: 'chordSymbol' });\n // Beware: glyph.metrics is not the same as glyph.getMetrics() !\n // rv.glyph.point = rv.glyph.point * rv.glyph.metrics.scale;\n // rv.width = rv.glyph.getMetrics().width;\n // don't set yShift here, b/c we need to do it at formatting time after the font is set.\n }\n else if (symbolType === SymbolTypes.TEXT) {\n symbolBlock.width = this.textFormatter.getWidthForTextInEm(symbolBlock.text);\n }\n else if (symbolType === SymbolTypes.LINE) {\n symbolBlock.width = params.width;\n }\n return symbolBlock;\n }\n /** Add a symbol to this chord, could be text, glyph or line. */\n // eslint-disable-next-line\n addSymbolBlock(parameters) {\n this.symbolBlocks.push(this.getSymbolBlock(parameters));\n return this;\n }\n // ### Convenience functions for creating different types of chord symbol parts.\n /** Add a text block. */\n // eslint-disable-next-line\n addText(text, parameters = {}) {\n const symbolType = SymbolTypes.TEXT;\n return this.addSymbolBlock(Object.assign(Object.assign({}, parameters), { text, symbolType }));\n }\n /** Add a text block with superscript modifier. */\n addTextSuperscript(text) {\n const symbolType = SymbolTypes.TEXT;\n const symbolModifier = SymbolModifiers.SUPERSCRIPT;\n return this.addSymbolBlock({ text, symbolType, symbolModifier });\n }\n /** Add a text block with subscript modifier. */\n addTextSubscript(text) {\n const symbolType = SymbolTypes.TEXT;\n const symbolModifier = SymbolModifiers.SUBSCRIPT;\n return this.addSymbolBlock({ text, symbolType, symbolModifier });\n }\n /** Add a glyph block with superscript modifier. */\n addGlyphSuperscript(glyph) {\n const symbolType = SymbolTypes.GLYPH;\n const symbolModifier = SymbolModifiers.SUPERSCRIPT;\n return this.addSymbolBlock({ glyph, symbolType, symbolModifier });\n }\n /** Add a glyph block. */\n // eslint-disable-next-line\n addGlyph(glyph, params = {}) {\n const symbolType = SymbolTypes.GLYPH;\n return this.addSymbolBlock(Object.assign(Object.assign({}, params), { glyph, symbolType }));\n }\n /**\n * Add a glyph for each character in 'text'. If the glyph is not available, use text from the font.\n * e.g. `addGlyphOrText('(+5#11)')` will use text for the '5' and '11', and glyphs for everything else.\n */\n // eslint-disable-next-line\n addGlyphOrText(text, params = {}) {\n let str = '';\n for (let i = 0; i < text.length; ++i) {\n const char = text[i];\n if (ChordSymbol.glyphs[char]) {\n if (str.length > 0) {\n this.addText(str, params);\n str = '';\n }\n this.addGlyph(char, params);\n }\n else {\n // Collect consecutive characters with no glyphs.\n str += char;\n }\n }\n if (str.length > 0) {\n this.addText(str, params);\n }\n return this;\n }\n /** Add a line of the given width, used as a continuation of the previous symbol in analysis, or lyrics, etc. */\n // eslint-disable-next-line\n addLine(width, params = {}) {\n const symbolType = SymbolTypes.LINE;\n return this.addSymbolBlock(Object.assign(Object.assign({}, params), { symbolType, width }));\n }\n /**\n * Set the chord symbol's font family, size, weight, style (e.g., `Arial`, `10pt`, `bold`, `italic`).\n *\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n *\n * @override See: Element.\n */\n setFont(f, size, weight, style) {\n super.setFont(f, size, weight, style);\n this.textFormatter = TextFormatter.create(this.textFont);\n return this;\n }\n setEnableKerning(val) {\n this.useKerning = val;\n return this;\n }\n /** Set vertical position of text (above or below stave). */\n setVertical(vj) {\n this.vertical = typeof vj === 'string' ? ChordSymbol.VerticalJustifyString[vj] : vj;\n return this;\n }\n getVertical() {\n return this.vertical;\n }\n /** Set horizontal justification. */\n setHorizontal(hj) {\n this.horizontal = typeof hj === 'string' ? ChordSymbol.HorizontalJustifyString[hj] : hj;\n return this;\n }\n getHorizontal() {\n return this.horizontal;\n }\n getWidth() {\n let width = 0;\n this.symbolBlocks.forEach((symbol) => {\n width += symbol.vAlign ? 0 : symbol.width;\n });\n return width;\n }\n getYOffsetForText(text) {\n var _a;\n let acc = 0;\n let i = 0;\n for (i = 0; i < text.length; ++i) {\n const metrics = this.textFormatter.getGlyphMetrics(text[i]);\n if (metrics) {\n const yMax = (_a = metrics.y_max) !== null && _a !== void 0 ? _a : 0;\n acc = yMax < acc ? yMax : acc;\n }\n }\n const resolution = this.textFormatter.getResolution();\n return i > 0 ? -1 * (acc / resolution) : 0;\n }\n /** Render text and glyphs above/below the note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n // We're changing context parameters. Save current state.\n ctx.save();\n ctx.openGroup('chordsymbol', this.getAttribute('id'));\n const start = note.getModifierStartXY(Modifier.Position.ABOVE, this.index);\n ctx.setFont(this.textFont);\n let y;\n // The position of the text varies based on whether or not the note\n // has a stem.\n const hasStem = note.hasStem();\n const stave = note.checkStave();\n if (this.vertical === ChordSymbolVerticalJustify.BOTTOM) {\n // HACK: We need to compensate for the text's height since its origin is bottom-right.\n y = stave.getYForBottomText(this.text_line + Tables.TEXT_HEIGHT_OFFSET_HACK);\n if (hasStem) {\n const stem_ext = note.checkStem().getExtents();\n const spacing = stave.getSpacingBetweenLines();\n const stem_base = note.getStemDirection() === 1 ? stem_ext.baseY : stem_ext.topY;\n y = Math.max(y, stem_base + spacing * (this.text_line + 2));\n }\n }\n else {\n // (this.vertical === VerticalJustify.TOP)\n y = Math.min(stave.getYForTopText(this.text_line), note.getYs()[0] - 10);\n if (hasStem) {\n const stem_ext = note.checkStem().getExtents();\n const spacing = stave.getSpacingBetweenLines();\n y = Math.min(y, stem_ext.topY - 5 - spacing * this.text_line);\n }\n }\n let x = start.x;\n if (this.horizontal === ChordSymbolHorizontalJustify.LEFT) {\n x = start.x;\n }\n else if (this.horizontal === ChordSymbolHorizontalJustify.RIGHT) {\n x = start.x + this.getWidth();\n }\n else if (this.horizontal === ChordSymbolHorizontalJustify.CENTER) {\n x = start.x - this.getWidth() / 2;\n }\n else {\n // HorizontalJustify.CENTER_STEM\n x = note.getStemX() - this.getWidth() / 2;\n }\n L('Rendering ChordSymbol: ', this.textFormatter, x, y);\n this.symbolBlocks.forEach((symbol) => {\n const isSuper = ChordSymbol.isSuperscript(symbol);\n const isSub = ChordSymbol.isSubscript(symbol);\n let curY = y;\n L('shift was ', symbol.xShift, symbol.yShift);\n L('curY pre sub ', curY);\n if (isSuper) {\n curY += this.superscriptOffset;\n }\n if (isSub) {\n curY += this.subscriptOffset;\n }\n L('curY sup/sub ', curY);\n if (symbol.symbolType === SymbolTypes.TEXT) {\n if (isSuper || isSub) {\n ctx.save();\n if (this.textFont) {\n const { family, size, weight, style } = this.textFont;\n const smallerFontSize = Font.scaleSize(size, ChordSymbol.superSubRatio);\n ctx.setFont(family, smallerFontSize, weight, style);\n }\n }\n // TODO???\n // We estimate the text width, fill it in with the empirical value so the formatting is even.\n // const textDim = ctx.measureText(symbol.text);\n // symbol.width = textDim.width;\n L('Rendering Text: ', symbol.text, x + symbol.xShift, curY + symbol.yShift);\n ctx.fillText(symbol.text, x + symbol.xShift, curY + symbol.yShift);\n if (isSuper || isSub) {\n ctx.restore();\n }\n }\n else if (symbol.symbolType === SymbolTypes.GLYPH && symbol.glyph) {\n curY += symbol.yShift;\n L('Rendering Glyph: ', symbol.glyph.code, x + symbol.xShift, curY);\n symbol.glyph.render(ctx, x + symbol.xShift, curY);\n }\n else if (symbol.symbolType === SymbolTypes.LINE) {\n L('Rendering Line : ', symbol.width, x, curY);\n ctx.beginPath();\n ctx.setLineWidth(1); // ?\n ctx.moveTo(x, y);\n ctx.lineTo(x + symbol.width, curY);\n ctx.stroke();\n }\n x += symbol.width;\n if (symbol.vAlign) {\n x += symbol.xShift;\n }\n });\n ctx.closeGroup();\n ctx.restore();\n }\n}\nChordSymbol.DEBUG = false;\n// Chord symbols can be positioned and justified relative to the note.\nChordSymbol.HorizontalJustify = ChordSymbolHorizontalJustify;\nChordSymbol.HorizontalJustifyString = {\n left: ChordSymbolHorizontalJustify.LEFT,\n right: ChordSymbolHorizontalJustify.RIGHT,\n center: ChordSymbolHorizontalJustify.CENTER,\n centerStem: ChordSymbolHorizontalJustify.CENTER_STEM,\n};\nChordSymbol.VerticalJustify = ChordSymbolVerticalJustify;\nChordSymbol.VerticalJustifyString = {\n top: ChordSymbolVerticalJustify.TOP,\n above: ChordSymbolVerticalJustify.TOP,\n below: ChordSymbolVerticalJustify.BOTTOM,\n bottom: ChordSymbolVerticalJustify.BOTTOM,\n};\n// Glyph data\nChordSymbol.glyphs = {\n diminished: {\n code: 'csymDiminished',\n },\n dim: {\n code: 'csymDiminished',\n },\n halfDiminished: {\n code: 'csymHalfDiminished',\n },\n '+': {\n code: 'csymAugmented',\n },\n augmented: {\n code: 'csymAugmented',\n },\n majorSeventh: {\n code: 'csymMajorSeventh',\n },\n minor: {\n code: 'csymMinor',\n },\n '-': {\n code: 'csymMinor',\n },\n '(': {\n code: 'csymParensLeftTall',\n },\n leftParen: {\n code: 'csymParensLeftTall',\n },\n ')': {\n code: 'csymParensRightTall',\n },\n rightParen: {\n code: 'csymParensRightTall',\n },\n leftBracket: {\n code: 'csymBracketLeftTall',\n },\n rightBracket: {\n code: 'csymBracketRightTall',\n },\n leftParenTall: {\n code: 'csymParensLeftVeryTall',\n },\n rightParenTall: {\n code: 'csymParensRightVeryTall',\n },\n '/': {\n code: 'csymDiagonalArrangementSlash',\n },\n over: {\n code: 'csymDiagonalArrangementSlash',\n },\n '#': {\n code: 'accidentalSharp',\n },\n b: {\n code: 'accidentalFlat',\n },\n};\nChordSymbol.symbolTypes = SymbolTypes;\nChordSymbol.symbolModifiers = SymbolModifiers;\n/** Currently unused. */\nChordSymbol.noFormat = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Note } from './note';\nimport { Barline, BarlineType } from './stavebarline';\nimport { Category } from './typeguard';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (BarNote.DEBUG)\n log('Vex.Flow.BarNote', args);\n}\n/**\n * A `BarNote` is used to render bar lines (from `barline.ts`). `BarNote`s can\n * be added to a voice and rendered in the middle of a stave. Since it has no\n * duration, it consumes no `tick`s, and is dealt with appropriately by the formatter.\n *\n * See `tests/barnote_tests.ts` for usage examples.\n */\nexport class BarNote extends Note {\n constructor(type = BarlineType.SINGLE) {\n super({ duration: 'b' });\n this.metrics = {\n widths: {},\n };\n const TYPE = BarlineType;\n this.metrics.widths = {\n [TYPE.SINGLE]: 8,\n [TYPE.DOUBLE]: 12,\n [TYPE.END]: 15,\n [TYPE.REPEAT_BEGIN]: 14,\n [TYPE.REPEAT_END]: 14,\n [TYPE.REPEAT_BOTH]: 18,\n [TYPE.NONE]: 0,\n };\n // Tell the formatter that bar notes have no duration.\n this.ignore_ticks = true;\n this.setType(type);\n }\n static get CATEGORY() {\n return Category.BarNote;\n }\n /** Get the type of bar note.*/\n getType() {\n return this.type;\n }\n /** Set the type of bar note. */\n setType(type) {\n this.type = typeof type === 'string' ? Barline.typeString[type] : type;\n // Set width to width of relevant `Barline`.\n this.setWidth(this.metrics.widths[this.type]);\n return this;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n /** Overridden to ignore. */\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n /** Render note to stave. */\n draw() {\n const ctx = this.checkContext();\n L('Rendering bar line at: ', this.getAbsoluteX());\n this.applyStyle(ctx);\n const barline = new Barline(this.type);\n barline.setX(this.getAbsoluteX());\n barline.draw(this.checkStave());\n this.restoreStyle(ctx);\n this.setRendered();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.BarNote.DEBUG` to `true`. */\nBarNote.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Modifier } from './modifier';\nimport { TextFormatter } from './textformatter';\nimport { Category, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\n/** Bend implements tablature bends. */\nexport class Bend extends Modifier {\n /**\n * Example of a phrase:\n * ```\n * [{\n * type: UP,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: DOWN,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: UP,\n * text: \"half\"\n * width: 8;\n * },\n * {\n * type: UP,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: DOWN,\n * text: \"1 1/2\"\n * width: 8;\n * }]\n * ```\n * @param text text for bend (\"Full\", \"Half\", etc.) (DEPRECATED)\n * @param release if true, render a release. (DEPRECATED)\n * @param phrase if set, ignore \"text\" and \"release\", and use the more sophisticated phrase specified\n */\n constructor(text, release = false, phrase) {\n super();\n this.text = text;\n this.x_shift = 0;\n this.release = release;\n this.tap = '';\n this.resetFont();\n this.render_options = {\n line_width: 1.5,\n line_style: '#777777',\n bend_width: 8,\n release_width: 8,\n };\n if (phrase) {\n this.phrase = phrase;\n }\n else {\n // Backward compatibility\n this.phrase = [{ type: Bend.UP, text: this.text }];\n if (this.release)\n this.phrase.push({ type: Bend.DOWN, text: '' });\n }\n this.updateWidth();\n }\n static get CATEGORY() {\n return Category.Bend;\n }\n static get UP() {\n return 0;\n }\n static get DOWN() {\n return 1;\n }\n // Arrange bends in `ModifierContext`\n static format(bends, state) {\n if (!bends || bends.length === 0)\n return false;\n let last_width = 0;\n // Format Bends\n for (let i = 0; i < bends.length; ++i) {\n const bend = bends[i];\n const note = bend.checkAttachedNote();\n if (isTabNote(note)) {\n const stringPos = note.leastString() - 1;\n if (state.top_text_line < stringPos) {\n state.top_text_line = stringPos;\n }\n }\n bend.setXShift(last_width);\n last_width = bend.getWidth();\n bend.setTextLine(state.top_text_line);\n }\n state.right_shift += last_width;\n state.top_text_line += 1;\n return true;\n }\n /** Set horizontal shift in pixels. */\n setXShift(value) {\n this.x_shift = value;\n this.updateWidth();\n return this;\n }\n setTap(value) {\n this.tap = value;\n return this;\n }\n /** Get text provided in the constructor. */\n getText() {\n return this.text;\n }\n getTextHeight() {\n const textFormatter = TextFormatter.create(this.textFont);\n return textFormatter.maxHeight;\n }\n /** Recalculate width. */\n updateWidth() {\n const textFormatter = TextFormatter.create(this.textFont);\n const measureText = (text) => {\n return textFormatter.getWidthForTextInPx(text);\n };\n let totalWidth = 0;\n for (let i = 0; i < this.phrase.length; ++i) {\n const bend = this.phrase[i];\n if (bend.width !== undefined) {\n totalWidth += bend.width;\n }\n else {\n const additional_width = bend.type === Bend.UP ? this.render_options.bend_width : this.render_options.release_width;\n bend.width = Math.max(additional_width, measureText(bend.text)) + 3;\n bend.draw_width = bend.width / 2;\n totalWidth += bend.width;\n }\n }\n this.setWidth(totalWidth + this.x_shift);\n return this;\n }\n /** Draw the bend on the rendering context. */\n draw() {\n var _a;\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(Modifier.Position.RIGHT, this.index);\n start.x += 3;\n start.y += 0.5;\n const x_shift = this.x_shift;\n const stave = note.checkStave();\n const spacing = stave.getSpacingBetweenLines();\n const lowestY = note.getYs().reduce((a, b) => (a < b ? a : b));\n // this.text_line is relative to top string in the group.\n const bend_height = start.y - ((this.text_line + 1) * spacing + start.y - lowestY) + 3;\n const annotation_y = start.y - ((this.text_line + 1) * spacing + start.y - lowestY) - 1;\n const renderBend = (x, y, width, height) => {\n const cp_x = x + width;\n const cp_y = y;\n ctx.save();\n ctx.beginPath();\n ctx.setLineWidth(this.render_options.line_width);\n ctx.setStrokeStyle(this.render_options.line_style);\n ctx.setFillStyle(this.render_options.line_style);\n ctx.moveTo(x, y);\n ctx.quadraticCurveTo(cp_x, cp_y, x + width, height);\n ctx.stroke();\n ctx.restore();\n };\n const renderRelease = (x, y, width, height) => {\n ctx.save();\n ctx.beginPath();\n ctx.setLineWidth(this.render_options.line_width);\n ctx.setStrokeStyle(this.render_options.line_style);\n ctx.setFillStyle(this.render_options.line_style);\n ctx.moveTo(x, height);\n ctx.quadraticCurveTo(x + width, height, x + width, y);\n ctx.stroke();\n ctx.restore();\n };\n const renderArrowHead = (x, y, direction) => {\n const width = 4;\n const yBase = y + width * direction;\n ctx.beginPath();\n ctx.moveTo(x, y); // tip of the arrow\n ctx.lineTo(x - width, yBase);\n ctx.lineTo(x + width, yBase);\n ctx.closePath();\n ctx.fill();\n };\n const renderText = (x, text) => {\n ctx.save();\n ctx.setFont(this.textFont);\n const render_x = x - ctx.measureText(text).width / 2;\n ctx.fillText(text, render_x, annotation_y);\n ctx.restore();\n };\n let last_bend = undefined;\n let last_bend_draw_width = 0;\n let last_drawn_width = 0;\n if ((_a = this.tap) === null || _a === void 0 ? void 0 : _a.length) {\n const tapStart = note.getModifierStartXY(Modifier.Position.CENTER, this.index);\n renderText(tapStart.x, this.tap);\n }\n for (let i = 0; i < this.phrase.length; ++i) {\n const bend = this.phrase[i];\n if (!bend.draw_width)\n bend.draw_width = 0;\n if (i === 0)\n bend.draw_width += x_shift;\n last_drawn_width = bend.draw_width + last_bend_draw_width - (i === 1 ? x_shift : 0);\n if (bend.type === Bend.UP) {\n if (last_bend && last_bend.type === Bend.UP) {\n renderArrowHead(start.x, bend_height, +1);\n }\n renderBend(start.x, start.y, last_drawn_width, bend_height);\n }\n if (bend.type === Bend.DOWN) {\n if (last_bend && last_bend.type === Bend.UP) {\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n if (last_bend && last_bend.type === Bend.DOWN) {\n renderArrowHead(start.x, start.y, -1);\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n if (!last_bend) {\n last_drawn_width = bend.draw_width;\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n }\n renderText(start.x + last_drawn_width, bend.text);\n last_bend = bend;\n last_bend_draw_width = bend.draw_width;\n last_bend.x = start.x;\n start.x += last_drawn_width;\n }\n if (!last_bend || last_bend.x == undefined) {\n throw new RuntimeError('NoLastBendForBend', 'Internal error.');\n }\n // Final arrowhead and text\n if (last_bend.type === Bend.UP) {\n renderArrowHead(last_bend.x + last_drawn_width, bend_height, +1);\n }\n else if (last_bend.type === Bend.DOWN) {\n renderArrowHead(last_bend.x + last_drawn_width, start.y, -1);\n }\n }\n}\n/** Default text font. */\nBend.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements dot modifiers for notes.\nimport { Modifier } from './modifier';\nimport { Category, isGraceNote, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class Dot extends Modifier {\n constructor() {\n super();\n this.position = Modifier.Position.RIGHT;\n this.radius = 2;\n this.setWidth(5);\n this.dot_shiftY = 0;\n }\n static get CATEGORY() {\n return Category.Dot;\n }\n /** Returns the dots associated to a Note. */\n static getDots(note) {\n return note.getModifiersByType(Dot.CATEGORY);\n }\n /** Add a dot on the specified keys to the notes. */\n static buildAndAttach(notes, options) {\n for (const note of notes) {\n if (options === null || options === void 0 ? void 0 : options.all) {\n for (let i = 0; i < note.keys.length; i++) {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, i);\n }\n }\n else if ((options === null || options === void 0 ? void 0 : options.index) != undefined) {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, options === null || options === void 0 ? void 0 : options.index);\n }\n else {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, 0);\n }\n }\n }\n // Arrange dots inside a ModifierContext.\n static format(dots, state) {\n const right_shift = state.right_shift;\n const dot_spacing = 1;\n if (!dots || dots.length === 0)\n return false;\n const dot_list = [];\n const max_shift_map = {};\n for (let i = 0; i < dots.length; ++i) {\n const dot = dots[i];\n const note = dot.getNote();\n let props;\n let shift;\n if (isStaveNote(note)) {\n const index = dot.checkIndex();\n props = note.getKeyProps()[index];\n // consider right displaced head with no previous modifier\n shift = note.getFirstDotPx();\n }\n else if (isTabNote(note)) {\n props = { line: 0.5 }; // Shim key props for dot placement\n shift = right_shift;\n }\n else {\n // note object is not StaveNote or TabNote.\n throw new RuntimeError('Internal', 'Unexpected instance.');\n }\n const note_id = note.getAttribute('id');\n dot_list.push({ line: props.line, note, note_id, dot });\n max_shift_map[note_id] = Math.max(max_shift_map[note_id] || shift, shift);\n }\n // Sort dots by line number.\n dot_list.sort((a, b) => b.line - a.line);\n let dot_shift = right_shift;\n let x_width = 0;\n let last_line = null;\n let last_note = null;\n let prev_dotted_space = null;\n let half_shiftY = 0;\n for (let i = 0; i < dot_list.length; ++i) {\n const { dot, note, note_id, line } = dot_list[i];\n // Reset the position of the dot every line.\n if (line !== last_line || note !== last_note) {\n dot_shift = max_shift_map[note_id];\n }\n if (!note.isRest() && line !== last_line) {\n if (Math.abs(line % 1) === 0.5) {\n // note is on a space, so no dot shift\n half_shiftY = 0;\n }\n else {\n // note is on a line, so shift dot to space above the line\n half_shiftY = 0.5;\n if (last_note != null && !last_note.isRest() && last_line != null && last_line - line === 0.5) {\n // previous note on a space, so shift dot to space below the line\n half_shiftY = -0.5;\n }\n else if (line + half_shiftY === prev_dotted_space) {\n // previous space is dotted, so shift dot to space below the line\n half_shiftY = -0.5;\n }\n }\n }\n // convert half_shiftY to a multiplier for dots.draw()\n if (note.isRest()) {\n dot.dot_shiftY += -half_shiftY;\n }\n else {\n dot.dot_shiftY = -half_shiftY;\n }\n prev_dotted_space = line + half_shiftY;\n dot.setXShift(dot_shift);\n dot_shift += dot.getWidth() + dot_spacing; // spacing\n x_width = dot_shift > x_width ? dot_shift : x_width;\n last_line = line;\n last_note = note;\n }\n // Update state.\n state.right_shift += x_width;\n return true;\n }\n setNote(note) {\n this.note = note;\n if (isGraceNote(note)) {\n this.radius *= 0.5;\n this.setWidth(3);\n }\n return this;\n }\n setDotShiftY(y) {\n this.dot_shiftY = y;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stave = note.checkStave();\n const lineSpace = stave.getSpacingBetweenLines();\n const start = note.getModifierStartXY(this.position, this.index, { forceFlagRight: true });\n // Set the starting y coordinate to the base of the stem for TabNotes.\n if (isTabNote(note)) {\n start.y = note.getStemExtents().baseY;\n }\n const x = start.x + this.x_shift + this.width - this.radius;\n const y = start.y + this.y_shift + this.dot_shiftY * lineSpace;\n ctx.beginPath();\n ctx.arc(x, y, this.radius, 0, Math.PI * 2, false);\n ctx.fill();\n }\n}\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n// Author Larry Kuhns 2013\n// Class to draws string numbers into the notation.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class FretHandFinger extends Modifier {\n constructor(finger) {\n super();\n this.finger = finger;\n this.width = 7;\n this.position = Modifier.Position.LEFT; // Default position above stem or note head\n this.x_shift = 0;\n this.y_shift = 0;\n this.x_offset = 0; // Horizontal offset from default\n this.y_offset = 0; // Vertical offset from default\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.FretHandFinger;\n }\n // Arrange fingerings inside a ModifierContext.\n static format(nums, state) {\n const { left_shift, right_shift } = state;\n const num_spacing = 1;\n if (!nums || nums.length === 0)\n return false;\n const nums_list = [];\n let prev_note = null;\n let shiftLeft = 0;\n let shiftRight = 0;\n for (let i = 0; i < nums.length; ++i) {\n const num = nums[i];\n const note = num.getNote();\n const pos = num.getPosition();\n const index = num.checkIndex();\n const props = note.getKeyProps()[index];\n const textFormatter = TextFormatter.create(num.textFont);\n const textHeight = textFormatter.maxHeight;\n if (num.position === ModifierPosition.ABOVE) {\n state.top_text_line += textHeight / Tables.STAVE_LINE_DISTANCE + 0.5;\n }\n if (num.position === ModifierPosition.BELOW) {\n state.text_line += textHeight / Tables.STAVE_LINE_DISTANCE + 0.5;\n }\n if (note !== prev_note) {\n for (let n = 0; n < note.keys.length; ++n) {\n if (left_shift === 0) {\n shiftLeft = Math.max(note.getLeftDisplacedHeadPx(), shiftLeft);\n }\n if (right_shift === 0) {\n shiftRight = Math.max(note.getRightDisplacedHeadPx(), shiftRight);\n }\n }\n prev_note = note;\n }\n nums_list.push({\n note,\n num,\n pos,\n line: props.line,\n shiftL: shiftLeft,\n shiftR: shiftRight,\n });\n }\n // Sort fingernumbers by line number.\n nums_list.sort((a, b) => b.line - a.line);\n let numShiftL = 0;\n let numShiftR = 0;\n let xWidthL = 0;\n let xWidthR = 0;\n let lastLine = null;\n let lastNote = null;\n for (let i = 0; i < nums_list.length; ++i) {\n let num_shift = 0;\n const { note, pos, num, line, shiftL, shiftR } = nums_list[i];\n // Reset the position of the string number every line.\n if (line !== lastLine || note !== lastNote) {\n numShiftL = left_shift + shiftL;\n numShiftR = right_shift + shiftR;\n }\n const numWidth = num.getWidth() + num_spacing;\n if (pos === Modifier.Position.LEFT) {\n num.setXShift(left_shift + numShiftL);\n num_shift = left_shift + numWidth; // spacing\n xWidthL = num_shift > xWidthL ? num_shift : xWidthL;\n }\n else if (pos === Modifier.Position.RIGHT) {\n num.setXShift(numShiftR);\n num_shift = shiftRight + numWidth; // spacing\n xWidthR = num_shift > xWidthR ? num_shift : xWidthR;\n }\n lastLine = line;\n lastNote = note;\n }\n state.left_shift += xWidthL;\n state.right_shift += xWidthR;\n return true;\n }\n static easyScoreHook({ fingerings } = {}, note, builder) {\n fingerings === null || fingerings === void 0 ? void 0 : fingerings.split(',').map((fingeringString) => {\n const split = fingeringString.trim().split('.');\n const params = { number: split[0] };\n if (split[1])\n params.position = split[1];\n return builder.getFactory().Fingering(params);\n }).map((fingering, index) => note.addModifier(fingering, index));\n }\n setFretHandFinger(finger) {\n this.finger = finger;\n return this;\n }\n getFretHandFinger() {\n return this.finger;\n }\n setOffsetX(x) {\n this.x_offset = x;\n return this;\n }\n setOffsetY(y) {\n this.y_offset = y;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n let dot_x = start.x + this.x_shift + this.x_offset;\n let dot_y = start.y + this.y_shift + this.y_offset + 5;\n switch (this.position) {\n case Modifier.Position.ABOVE:\n dot_x -= 4;\n dot_y -= 12;\n break;\n case Modifier.Position.BELOW:\n dot_x -= 2;\n dot_y += 10;\n break;\n case Modifier.Position.LEFT:\n dot_x -= this.width;\n break;\n case Modifier.Position.RIGHT:\n dot_x += 1;\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} does not exist`);\n }\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText('' + this.finger, dot_x, dot_y);\n ctx.restore();\n }\n}\nFretHandFinger.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 9,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (NoteHead.DEBUG)\n log('Vex.Flow.NoteHead', args);\n}\n/**\n * Draw slashnote head manually. No glyph exists for this.\n * @param ctx the Canvas context\n * @param duration the duration of the note. ex: \"4\"\n * @param x the x coordinate to draw at\n * @param y the y coordinate to draw at\n * @param stem_direction the direction of the stem\n */\nfunction drawSlashNoteHead(ctx, duration, x, y, stem_direction, staveSpace) {\n const width = Tables.SLASH_NOTEHEAD_WIDTH;\n ctx.save();\n ctx.setLineWidth(Tables.STEM_WIDTH);\n let fill = false;\n if (Tables.durationToNumber(duration) > 2) {\n fill = true;\n }\n if (!fill)\n x -= (Tables.STEM_WIDTH / 2) * stem_direction;\n ctx.beginPath();\n ctx.moveTo(x, y + staveSpace);\n ctx.lineTo(x, y + 1);\n ctx.lineTo(x + width, y - staveSpace);\n ctx.lineTo(x + width, y);\n ctx.lineTo(x, y + staveSpace);\n ctx.closePath();\n if (fill) {\n ctx.fill();\n }\n else {\n ctx.stroke();\n }\n if (Tables.durationToFraction(duration).equals(0.5)) {\n const breve_lines = [-3, -1, width + 1, width + 3];\n for (let i = 0; i < breve_lines.length; i++) {\n ctx.beginPath();\n ctx.moveTo(x + breve_lines[i], y - 10);\n ctx.lineTo(x + breve_lines[i], y + 11);\n ctx.stroke();\n }\n }\n ctx.restore();\n}\n/**\n * `NoteHeads` are typically not manipulated\n * directly, but used internally in `StaveNote`.\n *\n * See `tests/notehead_tests.ts` for usage examples.\n */\nexport class NoteHead extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n this.custom_glyph = false;\n this.stem_up_x_offset = 0;\n this.stem_down_x_offset = 0;\n this.index = noteStruct.index;\n this.x = noteStruct.x || 0;\n this.y = noteStruct.y || 0;\n if (noteStruct.note_type)\n this.noteType = noteStruct.note_type;\n this.displaced = noteStruct.displaced || false;\n this.stem_direction = noteStruct.stem_direction || Stem.UP;\n this.line = noteStruct.line || 0;\n // Get glyph code based on duration and note type. This could be\n // regular notes, rests, or other custom codes.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n // Swap out the glyph with leger lines\n if ((this.line > 5 || this.line < 0) && this.glyph.leger_code_head) {\n this.glyph.code_head = this.glyph.leger_code_head;\n }\n this.glyph_code = this.glyph.code_head;\n this.x_shift = noteStruct.x_shift || 0;\n if (noteStruct.custom_glyph_code) {\n this.custom_glyph = true;\n this.glyph_code = noteStruct.custom_glyph_code;\n this.stem_up_x_offset = noteStruct.stem_up_x_offset || 0;\n this.stem_down_x_offset = noteStruct.stem_down_x_offset || 0;\n }\n this.setStyle(noteStruct.style);\n this.slashed = noteStruct.slashed || false;\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads\n glyph_font_scale: noteStruct.glyph_font_scale || Tables.NOTATION_FONT_SCALE });\n this.setWidth(this.glyph.getWidth(this.render_options.glyph_font_scale));\n }\n static get CATEGORY() {\n return Category.NoteHead;\n }\n /** Get the width of the notehead. */\n getWidth() {\n return this.width;\n }\n /** Determine if the notehead is displaced. */\n isDisplaced() {\n return this.displaced === true;\n }\n /** Get the glyph data. */\n getGlyph() {\n return this.glyph;\n }\n /** Set the X coordinate. */\n setX(x) {\n this.x = x;\n return this;\n }\n /** Get the Y coordinate. */\n getY() {\n return this.y;\n }\n /** Set the Y coordinate. */\n setY(y) {\n this.y = y;\n return this;\n }\n /** Get the stave line the notehead is placed on. */\n getLine() {\n return this.line;\n }\n /** Set the stave line the notehead is placed on. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Get the canvas `x` coordinate position of the notehead. */\n getAbsoluteX() {\n // If the note has not been preformatted, then get the static x value\n // Otherwise, it's been formatted and we should use it's x value relative\n // to its tick context\n const x = !this.preFormatted ? this.x : super.getAbsoluteX();\n // For a more natural displaced notehead, we adjust the displacement amount\n // by half the stem width in order to maintain a slight overlap with the stem\n const displacementStemAdjustment = Stem.WIDTH / 2;\n const musicFont = Tables.currentMusicFont();\n const fontShift = musicFont.lookupMetric('notehead.shiftX', 0) * this.stem_direction;\n const displacedFontShift = musicFont.lookupMetric('noteHead.displaced.shiftX', 0) * this.stem_direction;\n return (x +\n fontShift +\n (this.displaced ? (this.width - displacementStemAdjustment) * this.stem_direction + displacedFontShift : 0));\n }\n /** Get the `BoundingBox` for the `NoteHead`. */\n getBoundingBox() {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getBoundingBox on an unformatted note.\");\n }\n const spacing = this.checkStave().getSpacingBetweenLines();\n const half_spacing = spacing / 2;\n const min_y = this.y - half_spacing;\n return new BoundingBox(this.getAbsoluteX(), min_y, this.width, spacing);\n }\n /** Set notehead to a provided `stave`. */\n setStave(stave) {\n const line = this.getLine();\n this.stave = stave;\n if (this.stave) {\n this.setY(this.stave.getYForNote(line));\n this.setContext(this.stave.getContext());\n }\n return this;\n }\n /** Pre-render formatting. */\n preFormat() {\n if (this.preFormatted)\n return this;\n const width = this.getWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx;\n this.setWidth(width);\n this.preFormatted = true;\n return this;\n }\n /** Draw the notehead. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let head_x = this.getAbsoluteX();\n if (this.custom_glyph) {\n // head_x += this.x_shift;\n head_x += this.stem_direction === Stem.UP ? this.stem_up_x_offset : this.stem_down_x_offset;\n }\n const y = this.y;\n L(\"Drawing note head '\", this.noteType, this.duration, \"' at\", head_x, y);\n // Begin and end positions for head.\n const stem_direction = this.stem_direction;\n const glyph_font_scale = this.render_options.glyph_font_scale;\n this.applyStyle(ctx);\n const categorySuffix = `${this.glyph_code}Stem${stem_direction === Stem.UP ? 'Up' : 'Down'}`;\n if (this.noteType === 's') {\n const staveSpace = this.checkStave().getSpacingBetweenLines();\n drawSlashNoteHead(ctx, this.duration, head_x, y, stem_direction, staveSpace);\n }\n else {\n Glyph.renderGlyph(ctx, head_x, y, glyph_font_scale, this.glyph_code, {\n category: this.custom_glyph ? `noteHead.custom.${categorySuffix}` : `noteHead.standard.${categorySuffix}`,\n });\n }\n this.restoreStyle(ctx);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.NoteHead.DEBUG` to `true`. */\nNoteHead.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// `StemmableNote` is an abstract interface for notes with optional stems.\n// Examples of stemmable notes are `StaveNote` and `TabNote`\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StemmableNote extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n }\n static get CATEGORY() {\n return Category.StemmableNote;\n }\n // Get and set the note's `Stem`\n getStem() {\n return this.stem;\n }\n checkStem() {\n if (!this.stem) {\n throw new RuntimeError('NoStem', 'No stem attached to instance');\n }\n return this.stem;\n }\n setStem(stem) {\n this.stem = stem;\n this.addChildElement(stem);\n return this;\n }\n // Builds and sets a new stem\n buildStem() {\n const stem = new Stem();\n this.setStem(stem);\n return this;\n }\n buildFlag(category = 'flag') {\n const { glyph } = this;\n if (this.hasFlag()) {\n const flagCode = this.getStemDirection() === Stem.DOWN ? glyph.code_flag_downstem : glyph.code_flag_upstem;\n this.flag = new Glyph(flagCode, this.render_options.glyph_font_scale, { category });\n }\n }\n // Get the custom glyph associated with the outer note head on the base of the stem.\n getBaseCustomNoteHeadGlyph() {\n if (this.getStemDirection() === Stem.DOWN) {\n return this.customGlyphs[this.customGlyphs.length - 1];\n }\n else {\n return this.customGlyphs[0];\n }\n }\n // Get the full length of stem\n getStemLength() {\n return Stem.HEIGHT + this.getStemExtension();\n }\n // Get the number of beams for this duration\n getBeamCount() {\n const glyph = this.getGlyph();\n if (glyph) {\n return glyph.beam_count;\n }\n else {\n return 0;\n }\n }\n // Get the minimum length of stem\n getStemMinimumLength() {\n const frac = Tables.durationToFraction(this.duration);\n let length = frac.value() <= 1 ? 0 : 20;\n // if note is flagged, cannot shorten beam\n switch (this.duration) {\n case '8':\n if (this.beam == undefined)\n length = 35;\n break;\n case '16':\n length = this.beam == undefined ? 35 : 25;\n break;\n case '32':\n length = this.beam == undefined ? 45 : 35;\n break;\n case '64':\n length = this.beam == undefined ? 50 : 40;\n break;\n case '128':\n length = this.beam == undefined ? 55 : 45;\n break;\n default:\n break;\n }\n return length;\n }\n // Get/set the direction of the stem\n getStemDirection() {\n if (!this.stem_direction)\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n return this.stem_direction;\n }\n setStemDirection(direction) {\n if (!direction)\n direction = Stem.UP;\n if (direction !== Stem.UP && direction !== Stem.DOWN) {\n throw new RuntimeError('BadArgument', `Invalid stem direction: ${direction}`);\n }\n this.stem_direction = direction;\n // Reset and reformat everything. Flag has to be built before calling getStemExtension.\n this.reset();\n if (this.hasFlag()) {\n this.buildFlag();\n }\n this.beam = undefined;\n if (this.stem) {\n this.stem.setDirection(direction);\n this.stem.setExtension(this.getStemExtension());\n // Lookup the base custom notehead (closest to the base of the stem) to extend or shorten\n // the stem appropriately. If there's no custom note head, lookup the standard notehead.\n const glyph = this.getBaseCustomNoteHeadGlyph() || this.getGlyph();\n // Get the font-specific customizations for the note heads.\n const offsets = Tables.currentMusicFont().lookupMetric(`stem.noteHead.${glyph.code_head}`, {\n offsetYBaseStemUp: 0,\n offsetYTopStemUp: 0,\n offsetYBaseStemDown: 0,\n offsetYTopStemDown: 0,\n });\n // Configure the stem to use these offsets.\n this.stem.setOptions({\n stem_up_y_offset: offsets.offsetYTopStemUp,\n stem_down_y_offset: offsets.offsetYTopStemDown,\n stem_up_y_base_offset: offsets.offsetYBaseStemUp,\n stem_down_y_base_offset: offsets.offsetYBaseStemDown, // glyph.stem_down_y_base_offset,\n });\n }\n if (this.preFormatted) {\n this.preFormat();\n }\n return this;\n }\n // Get the `x` coordinate of the stem\n getStemX() {\n const x_begin = this.getAbsoluteX() + this.x_shift;\n const x_end = this.getAbsoluteX() + this.x_shift + this.getGlyphWidth();\n const stem_x = this.stem_direction === Stem.DOWN ? x_begin : x_end;\n return stem_x;\n }\n // Get the `x` coordinate for the center of the glyph.\n // Used for `TabNote` stems and stemlets over rests\n getCenterGlyphX() {\n return this.getAbsoluteX() + this.x_shift + this.getGlyphWidth() / 2;\n }\n // Get the stem extension for the current duration\n getStemExtension() {\n const glyph = this.getGlyph();\n if (this.stem_extension_override != undefined) {\n return this.stem_extension_override;\n }\n // Use stem_beam_extension with beams\n if (this.beam) {\n return glyph.stem_beam_extension;\n }\n if (glyph) {\n return this.getStemDirection() === Stem.UP ? glyph.stem_up_extension : glyph.stem_down_extension;\n }\n return 0;\n }\n // Set the stem length to a specific. Will override the default length.\n setStemLength(height) {\n this.stem_extension_override = height - Stem.HEIGHT;\n return this;\n }\n // Get the top and bottom `y` values of the stem.\n getStemExtents() {\n if (!this.stem)\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n return this.stem.getExtents();\n }\n /** Gets the `y` value for the top modifiers at a specific `textLine`. */\n getYForTopText(textLine) {\n const stave = this.checkStave();\n if (this.hasStem()) {\n const extents = this.getStemExtents();\n if (!extents)\n throw new RuntimeError('InvalidState', 'Stem does not have extents.');\n return Math.min(stave.getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1));\n }\n else {\n return stave.getYForTopText(textLine);\n }\n }\n /** Gets the `y` value for the bottom modifiers at a specific `textLine`. */\n getYForBottomText(textLine) {\n const stave = this.checkStave();\n if (this.hasStem()) {\n const extents = this.getStemExtents();\n if (!extents)\n throw new RuntimeError('InvalidState', 'Stem does not have extents.');\n return Math.max(stave.getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine);\n }\n else {\n return stave.getYForBottomText(textLine);\n }\n }\n hasFlag() {\n return Tables.getGlyphProps(this.duration).flag && !this.beam;\n }\n /** Post formats the note. */\n postFormat() {\n var _a;\n (_a = this.beam) === null || _a === void 0 ? void 0 : _a.postFormat();\n this.postFormatted = true;\n return this;\n }\n /** Renders the stem onto the canvas. */\n drawStem(stemOptions) {\n var _a;\n this.checkContext();\n this.setRendered();\n this.setStem(new Stem(stemOptions));\n (_a = this.stem) === null || _a === void 0 ? void 0 : _a.setContext(this.getContext()).draw();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This file implements notes for standard notation. This consists of one or\n// more `NoteHeads`, an optional stem, and an optional flag.\n//\n// Throughout these comments, a \"note\" refers to the entire `StaveNote`,\n// and a \"key\" refers to a specific pitch/notehead within a note.\n//\n// See `tests/stavenote_tests.ts` for usage examples.\nimport { BoundingBox } from './boundingbox';\nimport { Modifier } from './modifier';\nimport { NoteHead } from './notehead';\nimport { Stem } from './stem';\nimport { StemmableNote } from './stemmablenote';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log, midLine, RuntimeError } from './util';\nfunction showDeprecationWarningForNoteHeads() {\n // eslint-disable-next-line\n console.warn('StaveNote.note_heads is deprecated. Use StaveNote.noteHeads instead.', 'This accessor will be removed in VexFlow 5.0.');\n}\n// To enable logging for this class. Set `Vex.Flow.StaveNote.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (StaveNote.DEBUG)\n log('Vex.Flow.StaveNote', args);\n}\nconst isInnerNoteIndex = (note, index) => index === (note.getStemDirection() === Stem.UP ? note.keyProps.length - 1 : 0);\n// Helper methods for rest positioning in ModifierContext.\nfunction shiftRestVertical(rest, note, dir) {\n const delta = dir;\n rest.line += delta;\n rest.maxLine += delta;\n rest.minLine += delta;\n rest.note.setKeyLine(0, rest.note.getKeyLine(0) + delta);\n}\n// Called from formatNotes :: center a rest between two notes\nfunction centerRest(rest, noteU, noteL) {\n const delta = rest.line - midLine(noteU.minLine, noteL.maxLine);\n rest.note.setKeyLine(0, rest.note.getKeyLine(0) - delta);\n rest.line -= delta;\n rest.maxLine -= delta;\n rest.minLine -= delta;\n}\nexport class StaveNote extends StemmableNote {\n constructor(noteStruct) {\n var _a, _b, _c;\n super(noteStruct);\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // INSTANCE MEMBERS\n this.minLine = 0;\n this.maxLine = 0;\n // Sorted variant of keyProps used internally\n this.sortedKeyProps = [];\n this.ledgerLineStyle = {};\n this.clef = (_a = noteStruct.clef) !== null && _a !== void 0 ? _a : 'treble';\n this.octave_shift = (_b = noteStruct.octave_shift) !== null && _b !== void 0 ? _b : 0;\n // Pull note rendering properties.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n // if true, displace note to right\n this.displaced = false;\n this.dot_shiftY = 0;\n // for displaced ledger lines\n this.use_default_head_x = false;\n // Drawing\n this._noteHeads = [];\n this.modifiers = [];\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads and rests\n glyph_font_scale: noteStruct.glyph_font_scale || Tables.NOTATION_FONT_SCALE, \n // number of stroke px to the left and right of head\n stroke_px: noteStruct.stroke_px || StaveNote.LEDGER_LINE_OFFSET });\n this.calculateKeyProps();\n this.buildStem();\n // Set the stem direction\n if (noteStruct.auto_stem) {\n this.autoStem();\n }\n else {\n this.setStemDirection((_c = noteStruct.stem_direction) !== null && _c !== void 0 ? _c : Stem.UP);\n }\n this.reset();\n this.buildFlag();\n }\n static get CATEGORY() {\n return Category.StaveNote;\n }\n /**\n * @deprecated Use Stem.UP.\n */\n static get STEM_UP() {\n return Stem.UP;\n }\n /**\n * @deprecated Use Stem.DOWN.\n */\n static get STEM_DOWN() {\n return Stem.DOWN;\n }\n static get LEDGER_LINE_OFFSET() {\n return 3;\n }\n static get minNoteheadPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Format notes inside a ModifierContext. */\n static format(notes, state) {\n if (!notes || notes.length < 2)\n return false;\n const notesList = [];\n for (let i = 0; i < notes.length; i++) {\n // Formatting uses sortedKeyProps to calculate line and minL.\n const props = notes[i].sortedKeyProps;\n const line = props[0].keyProps.line;\n let minL = props[props.length - 1].keyProps.line;\n const stemDirection = notes[i].getStemDirection();\n const stemMax = notes[i].getStemLength() / 10;\n const stemMin = notes[i].getStemMinimumLength() / 10;\n let maxL;\n if (notes[i].isRest()) {\n maxL = line + notes[i].glyph.line_above;\n minL = line - notes[i].glyph.line_below;\n }\n else {\n maxL =\n stemDirection === 1 ? props[props.length - 1].keyProps.line + stemMax : props[props.length - 1].keyProps.line;\n minL = stemDirection === 1 ? props[0].keyProps.line : props[0].keyProps.line - stemMax;\n }\n notesList.push({\n line: props[0].keyProps.line,\n maxLine: maxL,\n minLine: minL,\n isrest: notes[i].isRest(),\n stemDirection: stemDirection,\n stemMax,\n stemMin,\n voice_shift: notes[i].getVoiceShiftWidth(),\n is_displaced: notes[i].isDisplaced(),\n note: notes[i],\n });\n }\n let voices = 0;\n let noteU = undefined;\n let noteM = undefined;\n let noteL = undefined;\n const draw = [false, false, false];\n for (let i = 0; i < notesList.length; i++) {\n draw[i] = notesList[i].note.render_options.draw == false ? false : true;\n }\n if (draw[0] && draw[1] && draw[2]) {\n // Three visible notes\n voices = 3;\n noteU = notesList[0];\n noteM = notesList[1];\n noteL = notesList[2];\n }\n else if (draw[0] && draw[1]) {\n // Two visible notes, 0 & 1\n voices = 2;\n noteU = notesList[0];\n noteL = notesList[1];\n }\n else if (draw[0] && draw[2]) {\n // Two visible notes, 0 & 2\n voices = 2;\n noteU = notesList[0];\n noteL = notesList[2];\n }\n else if (draw[1] && draw[2]) {\n // Two visible notes, 1 & 2\n voices = 2;\n noteU = notesList[1];\n noteL = notesList[2];\n }\n else {\n // No shift required for less than 2 visible notes\n return true;\n }\n // for two voice backward compatibility, ensure upper voice is stems up\n // for three voices, the voices must be in order (upper, middle, lower)\n if (voices === 2 && noteU.stemDirection === -1 && noteL.stemDirection === 1) {\n noteU = notesList[1];\n noteL = notesList[0];\n }\n const voiceXShift = Math.max(noteU.voice_shift, noteL.voice_shift);\n let xShift = 0;\n // Test for two voice note intersection\n if (voices === 2) {\n const lineSpacing = noteU.note.hasStem() && noteL.note.hasStem() && noteU.stemDirection === noteL.stemDirection ? 0.0 : 0.5;\n if (noteL.isrest && noteU.isrest && noteU.note.duration === noteL.note.duration) {\n noteL.note.render_options.draw = false;\n }\n else if (noteU.minLine <= noteL.maxLine + lineSpacing) {\n if (noteU.isrest) {\n // shift rest up\n shiftRestVertical(noteU, noteL, 1);\n }\n else if (noteL.isrest) {\n // shift rest down\n shiftRestVertical(noteL, noteU, -1);\n }\n else {\n //Instead of shifting notes, remove the appropriate flag\n //If we are sharing a line, switch one notes stem direction.\n //If we are sharing a line and in the same voice, only then offset one note\n const lineDiff = Math.abs(noteU.line - noteL.line);\n if (noteU.note.hasStem() && noteL.note.hasStem()) {\n //If we have different dot values, must offset\n //Or If we have a white mixed with a black notehead, must offset\n let whiteNoteHeadCount = 0;\n let blackNoteHeadCount = 0;\n if (Tables.durationToNumber(noteU.note.duration) === 2) {\n whiteNoteHeadCount++;\n }\n else if (Tables.durationToNumber(noteU.note.duration) > 2) {\n blackNoteHeadCount++;\n }\n if (Tables.durationToNumber(noteL.note.duration) === 2) {\n whiteNoteHeadCount++;\n }\n else if (Tables.durationToNumber(noteL.note.duration) > 2) {\n blackNoteHeadCount++;\n }\n if ((whiteNoteHeadCount !== 2 && blackNoteHeadCount !== 2) ||\n noteU.note.getModifiersByType(Category.Dot).length !== noteL.note.getModifiersByType(Category.Dot).length) {\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (lineDiff < 1 && lineDiff > 0) {\n //if the notes are quite close but not on the same line, shift\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (noteU.note.voice !== noteL.note.voice) {\n //If we are not in the same voice\n if (noteU.stemDirection === noteL.stemDirection) {\n if (noteU.line != noteL.line) {\n xShift = voiceXShift + 2;\n noteU.note.setXShift(xShift);\n }\n else {\n //same line, swap stem direction for one note\n if (noteL.stemDirection === 1) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n }\n }\n } //Very close whole notes\n }\n else if (lineDiff < 1) {\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (noteU.note.hasStem()) {\n noteU.stemDirection = -noteU.note.getStemDirection();\n noteU.note.setStemDirection(noteU.stemDirection);\n }\n else if (noteL.note.hasStem()) {\n noteL.stemDirection = -noteL.note.getStemDirection();\n noteL.note.setStemDirection(noteL.stemDirection);\n }\n }\n }\n // format complete\n state.right_shift += xShift;\n return true;\n }\n if (!noteM)\n throw new RuntimeError('InvalidState', 'noteM not defined.');\n // For three voices, test if rests can be repositioned\n //\n // Special case 1 :: middle voice rest between two notes\n //\n if (noteM.isrest && !noteU.isrest && !noteL.isrest) {\n if (noteU.minLine <= noteM.maxLine || noteM.minLine <= noteL.maxLine) {\n const restHeight = noteM.maxLine - noteM.minLine;\n const space = noteU.minLine - noteL.maxLine;\n if (restHeight < space) {\n // center middle voice rest between the upper and lower voices\n centerRest(noteM, noteU, noteL);\n }\n else {\n xShift = voiceXShift + 2; // shift middle rest right\n noteM.note.setXShift(xShift);\n if (noteL.note.hasBeam() === false) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n if (noteU.minLine <= noteL.maxLine && noteU.note.hasBeam() === false) {\n noteU.stemDirection = 1;\n noteU.note.setStemDirection(1);\n }\n }\n // format complete\n state.right_shift += xShift;\n return true;\n }\n }\n // Special case 2 :: all voices are rests\n if (noteU.isrest && noteM.isrest && noteL.isrest) {\n // Hide upper voice rest\n noteU.note.render_options.draw = false;\n // Hide lower voice rest\n noteL.note.render_options.draw = false;\n // format complete\n state.right_shift += xShift;\n return true;\n }\n // Test if any other rests can be repositioned\n if (noteM.isrest && noteU.isrest && noteM.minLine <= noteL.maxLine) {\n // Hide middle voice rest\n noteM.note.render_options.draw = false;\n }\n if (noteM.isrest && noteL.isrest && noteU.minLine <= noteM.maxLine) {\n // Hide middle voice rest\n noteM.note.render_options.draw = false;\n }\n if (noteU.isrest && noteU.minLine <= noteM.maxLine) {\n // shift upper voice rest up;\n shiftRestVertical(noteU, noteM, 1);\n }\n if (noteL.isrest && noteM.minLine <= noteL.maxLine) {\n // shift lower voice rest down\n shiftRestVertical(noteL, noteM, -1);\n }\n // If middle voice intersects upper or lower voice\n if (noteU.minLine <= noteM.maxLine + 0.5 || noteM.minLine <= noteL.maxLine) {\n // shift middle note right\n xShift = voiceXShift + 2;\n noteM.note.setXShift(xShift);\n if (noteL.note.hasBeam() === false) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n if (noteU.minLine <= noteL.maxLine && noteU.note.hasBeam() === false) {\n noteU.stemDirection = 1;\n noteU.note.setStemDirection(1);\n }\n }\n state.right_shift += xShift;\n return true;\n }\n static postFormat(notes) {\n if (!notes)\n return false;\n notes.forEach((note) => note.postFormat());\n return true;\n }\n reset() {\n super.reset();\n // Save prior noteHead styles & reapply them after making new noteheads.\n const noteHeadStyles = this._noteHeads.map((noteHead) => noteHead.getStyle());\n this.buildNoteHeads();\n this._noteHeads.forEach((noteHead, index) => {\n const noteHeadStyle = noteHeadStyles[index];\n if (noteHeadStyle)\n noteHead.setStyle(noteHeadStyle);\n });\n const stave = this.stave;\n if (stave) {\n this._noteHeads.forEach((head) => head.setStave(stave));\n }\n this.calcNoteDisplacements();\n return this;\n }\n setBeam(beam) {\n this.beam = beam;\n this.calcNoteDisplacements();\n // Update stem extension if a beam is assigned.\n if (this.stem) {\n this.stem.setExtension(this.getStemExtension());\n }\n return this;\n }\n // Builds a `Stem` for the note\n buildStem() {\n this.setStem(new Stem({ hide: !!this.isRest() }));\n return this;\n }\n // Builds a `NoteHead` for each key in the note\n buildNoteHeads() {\n this._noteHeads = [];\n const stemDirection = this.getStemDirection();\n const keys = this.getKeys();\n let lastLine = undefined;\n let lineDiff = undefined;\n let displaced = false;\n // Draw notes from bottom to top.\n // For down-stem notes, we draw from top to bottom.\n let start;\n let end;\n let step;\n if (stemDirection === Stem.UP) {\n start = 0;\n end = keys.length;\n step = 1;\n }\n else {\n start = keys.length - 1;\n end = -1;\n step = -1;\n }\n for (let i = start; i !== end; i += step) {\n // Building noteheads rely on sortedKeNotes in order to calculate the displacements\n const noteProps = this.sortedKeyProps[i].keyProps;\n const line = noteProps.line;\n // Keep track of last line with a note head, so that consecutive heads\n // are correctly displaced.\n if (lastLine === undefined) {\n lastLine = line;\n }\n else {\n lineDiff = Math.abs(lastLine - line);\n if (lineDiff === 0 || lineDiff === 0.5) {\n displaced = !displaced;\n }\n else {\n displaced = false;\n this.use_default_head_x = true;\n }\n }\n lastLine = line;\n const notehead = new NoteHead({\n duration: this.duration,\n note_type: this.noteType,\n displaced,\n stem_direction: stemDirection,\n custom_glyph_code: noteProps.code,\n glyph_font_scale: this.render_options.glyph_font_scale,\n x_shift: noteProps.shift_right,\n stem_up_x_offset: noteProps.stem_up_x_offset,\n stem_down_x_offset: noteProps.stem_down_x_offset,\n line: noteProps.line,\n });\n this.addChildElement(notehead);\n this._noteHeads[this.sortedKeyProps[i].index] = notehead;\n }\n }\n // Automatically sets the stem direction based on the keys in the note\n autoStem() {\n this.setStemDirection(this.calculateOptimalStemDirection());\n }\n calculateOptimalStemDirection() {\n // Figure out optimal stem direction based on given notes\n // minLine & maxLine rely on sortedKeyProps\n this.minLine = this.sortedKeyProps[0].keyProps.line;\n this.maxLine = this.sortedKeyProps[this.keyProps.length - 1].keyProps.line;\n const MIDDLE_LINE = 3;\n const decider = (this.minLine + this.maxLine) / 2;\n const stemDirection = decider < MIDDLE_LINE ? Stem.UP : Stem.DOWN;\n return stemDirection;\n }\n // Calculates and stores the properties for each key in the note\n calculateKeyProps() {\n let lastLine;\n for (let i = 0; i < this.keys.length; ++i) {\n const key = this.keys[i];\n // All rests use the same position on the line.\n // if (this.glyph.rest) key = this.glyph.position;\n if (this.glyph.rest)\n this.glyph.position = key;\n const options = { octave_shift: this.octave_shift || 0, duration: this.duration };\n const props = Tables.keyProperties(key, this.clef, options);\n if (!props) {\n throw new RuntimeError('BadArguments', `Invalid key for note properties: ${key}`);\n }\n // Override line placement for default rests\n if (props.key === 'R') {\n if (this.duration === '1' || this.duration === 'w') {\n props.line = 4;\n }\n else {\n props.line = 3;\n }\n }\n // Calculate displacement of this note\n const line = props.line;\n if (lastLine == undefined) {\n lastLine = line;\n }\n else {\n if (Math.abs(lastLine - line) === 0.5) {\n this.displaced = true;\n props.displaced = true;\n // Have to mark the previous note as\n // displaced as well, for modifier placement\n if (this.keyProps.length > 0) {\n this.keyProps[i - 1].displaced = true;\n }\n }\n }\n lastLine = line;\n this.keyProps.push(props);\n }\n // Sort the notes from lowest line to highest line in sortedKeyProps\n // Warn no longer required as keyProps remains unsorted\n this.keyProps.forEach((keyProps, index) => {\n this.sortedKeyProps.push({ keyProps, index });\n });\n this.sortedKeyProps.sort((a, b) => a.keyProps.line - b.keyProps.line);\n }\n // Get the `BoundingBox` for the entire note\n getBoundingBox() {\n var _a, _b;\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getBoundingBox on an unformatted note.\");\n }\n const { width: w, modLeftPx, leftDisplacedHeadPx } = this.getMetrics();\n const x = this.getAbsoluteX() - modLeftPx - leftDisplacedHeadPx;\n let minY = 0;\n let maxY = 0;\n const halfLineSpacing = ((_b = (_a = this.getStave()) === null || _a === void 0 ? void 0 : _a.getSpacingBetweenLines()) !== null && _b !== void 0 ? _b : 0) / 2;\n const lineSpacing = halfLineSpacing * 2;\n if (this.isRest()) {\n const y = this.ys[0];\n const frac = Tables.durationToFraction(this.duration);\n if (frac.equals(1) || frac.equals(2)) {\n minY = y - halfLineSpacing;\n maxY = y + halfLineSpacing;\n }\n else {\n minY = y - this.glyph.line_above * lineSpacing;\n maxY = y + this.glyph.line_below * lineSpacing;\n }\n }\n else if (this.glyph.stem) {\n const ys = this.getStemExtents();\n ys.baseY += halfLineSpacing * this.getStemDirection();\n minY = Math.min(ys.topY, ys.baseY);\n maxY = Math.max(ys.topY, ys.baseY);\n }\n else {\n minY = 0;\n maxY = 0;\n for (let i = 0; i < this.ys.length; ++i) {\n const yy = this.ys[i];\n if (i === 0) {\n minY = yy;\n maxY = yy;\n }\n else {\n minY = Math.min(yy, minY);\n maxY = Math.max(yy, maxY);\n }\n }\n minY -= halfLineSpacing;\n maxY += halfLineSpacing;\n }\n return new BoundingBox(x, minY, w, maxY - minY);\n }\n // Gets the line number of the bottom note in the chord.\n // If `isTopNote` is `true` then get the top note's line number instead\n getLineNumber(isTopNote) {\n if (!this.keyProps.length) {\n throw new RuntimeError('NoKeyProps', \"Can't get bottom note line, because note is not initialized properly.\");\n }\n let resultLine = this.keyProps[0].line;\n // No precondition assumed for sortedness of keyProps array\n for (let i = 0; i < this.keyProps.length; i++) {\n const thisLine = this.keyProps[i].line;\n if (isTopNote) {\n if (thisLine > resultLine)\n resultLine = thisLine;\n }\n else {\n if (thisLine < resultLine)\n resultLine = thisLine;\n }\n }\n return resultLine;\n }\n /**\n * @returns true if this note is a type of rest. Rests don't have pitches, but take up space in the score.\n */\n isRest() {\n return this.glyph.rest;\n }\n // Determine if the current note is a chord\n isChord() {\n return !this.isRest() && this.keys.length > 1;\n }\n // Determine if the `StaveNote` has a stem\n hasStem() {\n return this.glyph.stem;\n }\n hasFlag() {\n return super.hasFlag() && !this.isRest();\n }\n getStemX() {\n if (this.noteType === 'r') {\n return this.getCenterGlyphX();\n }\n else {\n // We adjust the origin of the stem because we want the stem left-aligned\n // with the notehead if stemmed-down, and right-aligned if stemmed-up\n return super.getStemX() + (this.stem_direction ? Stem.WIDTH / (2 * -this.stem_direction) : 0);\n }\n }\n // Get the `y` coordinate for text placed on the top/bottom of a\n // note at a desired `text_line`\n getYForTopText(textLine) {\n const extents = this.getStemExtents();\n return Math.min(this.checkStave().getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1));\n }\n getYForBottomText(textLine) {\n const extents = this.getStemExtents();\n return Math.max(this.checkStave().getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine);\n }\n // Sets the current note to the provided `stave`. This applies\n // `y` values to the `NoteHeads`.\n setStave(stave) {\n super.setStave(stave);\n const ys = this._noteHeads.map((notehead) => {\n notehead.setStave(stave);\n return notehead.getY();\n });\n this.setYs(ys);\n if (this.stem) {\n const { y_top, y_bottom } = this.getNoteHeadBounds();\n this.stem.setYBounds(y_top, y_bottom);\n }\n return this;\n }\n // Check if note is shifted to the right\n isDisplaced() {\n return this.displaced;\n }\n // Sets whether shift note to the right. `displaced` is a `boolean`\n setNoteDisplaced(displaced) {\n this.displaced = displaced;\n return this;\n }\n // Get the starting `x` coordinate for a `StaveTie`\n getTieRightX() {\n let tieStartX = this.getAbsoluteX();\n tieStartX += this.getGlyphWidth() + this.x_shift + this.rightDisplacedHeadPx;\n if (this.modifierContext)\n tieStartX += this.modifierContext.getRightShift();\n return tieStartX;\n }\n // Get the ending `x` coordinate for a `StaveTie`\n getTieLeftX() {\n let tieEndX = this.getAbsoluteX();\n tieEndX += this.x_shift - this.leftDisplacedHeadPx;\n return tieEndX;\n }\n // Get the stave line on which to place a rest\n getLineForRest() {\n let restLine = this.keyProps[0].line;\n if (this.keyProps.length > 1) {\n const lastLine = this.keyProps[this.keyProps.length - 1].line;\n const top = Math.max(restLine, lastLine);\n const bot = Math.min(restLine, lastLine);\n restLine = midLine(top, bot);\n }\n return restLine;\n }\n // Get the default `x` and `y` coordinates for the provided `position`\n // and key `index`\n getModifierStartXY(position, index, options = {}) {\n var _a, _b;\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-Values calculated for this note.');\n }\n const { ABOVE, BELOW, LEFT, RIGHT } = Modifier.Position;\n let x = 0;\n if (position === LEFT) {\n // FIXME: Left modifier padding, move to font file\n x = -1 * 2;\n }\n else if (position === RIGHT) {\n // FIXME: Right modifier padding, move to font file\n x = this.getGlyphWidth() + this.x_shift + 2;\n if (this.stem_direction === Stem.UP &&\n this.hasFlag() &&\n (options.forceFlagRight || isInnerNoteIndex(this, index))) {\n x += (_b = (_a = this === null || this === void 0 ? void 0 : this.flag) === null || _a === void 0 ? void 0 : _a.getMetrics().width) !== null && _b !== void 0 ? _b : 0;\n }\n }\n else if (position === BELOW || position === ABOVE) {\n x = this.getGlyphWidth() / 2;\n }\n return {\n x: this.getAbsoluteX() + x,\n y: this.ys[index],\n };\n }\n // Sets the style of the complete StaveNote, including all keys\n // and the stem.\n setStyle(style) {\n return super.setGroupStyle(style);\n }\n setStemStyle(style) {\n const stem = this.getStem();\n if (stem)\n stem.setStyle(style);\n return this;\n }\n getStemStyle() {\n var _a;\n return (_a = this.stem) === null || _a === void 0 ? void 0 : _a.getStyle();\n }\n setLedgerLineStyle(style) {\n this.ledgerLineStyle = style;\n }\n getLedgerLineStyle() {\n return this.ledgerLineStyle;\n }\n setFlagStyle(style) {\n var _a;\n (_a = this.flag) === null || _a === void 0 ? void 0 : _a.setStyle(style);\n }\n getFlagStyle() {\n var _a;\n return (_a = this.flag) === null || _a === void 0 ? void 0 : _a.getStyle();\n }\n // Sets the notehead at `index` to the provided coloring `style`.\n //\n // `style` is an `object` with the following properties: `shadowColor`,\n // `shadowBlur`, `fillStyle`, `strokeStyle`\n setKeyStyle(index, style) {\n this._noteHeads[index].setStyle(style);\n return this;\n }\n setKeyLine(index, line) {\n this.keyProps[index].line = line;\n this.reset();\n return this;\n }\n getKeyLine(index) {\n return this.keyProps[index].line;\n }\n // Get the width of the note if it is displaced. Used for `Voice`\n // formatting\n getVoiceShiftWidth() {\n // TODO: may need to accommodate for dot here.\n return this.getGlyphWidth() * (this.displaced ? 2 : 1);\n }\n // Calculates and sets the extra pixels to the left or right\n // if the note is displaced.\n calcNoteDisplacements() {\n this.setLeftDisplacedHeadPx(this.displaced && this.stem_direction === Stem.DOWN ? this.getGlyphWidth() : 0);\n // For upstems with flags, the extra space is unnecessary, since it's taken\n // up by the flag.\n this.setRightDisplacedHeadPx(!this.hasFlag() && this.displaced && this.stem_direction === Stem.UP ? this.getGlyphWidth() : 0);\n }\n // Pre-render formatting\n preFormat() {\n if (this.preFormatted)\n return;\n let noteHeadPadding = 0;\n if (this.modifierContext) {\n this.modifierContext.preFormat();\n // If there are no modifiers on this note, make sure there is adequate padding\n // between the notes.\n if (this.modifierContext.getWidth() === 0) {\n noteHeadPadding = StaveNote.minNoteheadPadding;\n }\n }\n let width = this.getGlyphWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx + noteHeadPadding;\n // For upward flagged notes, the width of the flag needs to be added\n if (this.shouldDrawFlag() && this.stem_direction === Stem.UP) {\n width += this.getGlyphWidth();\n // TODO: Add flag width as a separate metric\n }\n this.setWidth(width);\n this.preFormatted = true;\n }\n /**\n * @typedef {Object} noteHeadBounds\n * @property {number} y_top the highest notehead bound\n * @property {number} y_bottom the lowest notehead bound\n * @property {number|Null} displaced_x the starting x for displaced noteheads\n * @property {number|Null} non_displaced_x the starting x for non-displaced noteheads\n * @property {number} highest_line the highest notehead line in traditional music line\n * numbering (bottom line = 1, top line = 5)\n * @property {number} lowest_line the lowest notehead line\n * @property {number|false} highest_displaced_line the highest staff line number\n * for a displaced notehead\n * @property {number|false} lowest_displaced_line\n * @property {number} highest_non_displaced_line\n * @property {number} lowest_non_displaced_line\n */\n /**\n * Get the staff line and y value for the highest & lowest noteheads\n * @returns {noteHeadBounds}\n */\n getNoteHeadBounds() {\n // Top and bottom Y values for stem.\n let yTop = +Infinity;\n let yBottom = -Infinity;\n let nonDisplacedX;\n let displacedX;\n let highestLine = this.checkStave().getNumLines();\n let lowestLine = 1;\n let highestDisplacedLine;\n let lowestDisplacedLine;\n let highestNonDisplacedLine = highestLine;\n let lowestNonDisplacedLine = lowestLine;\n this._noteHeads.forEach((notehead) => {\n const line = notehead.getLine();\n const y = notehead.getY();\n yTop = Math.min(y, yTop);\n yBottom = Math.max(y, yBottom);\n if (displacedX === undefined && notehead.isDisplaced()) {\n displacedX = notehead.getAbsoluteX();\n }\n if (nonDisplacedX === undefined && !notehead.isDisplaced()) {\n nonDisplacedX = notehead.getAbsoluteX();\n }\n highestLine = Math.max(line, highestLine);\n lowestLine = Math.min(line, lowestLine);\n if (notehead.isDisplaced()) {\n highestDisplacedLine = highestDisplacedLine === undefined ? line : Math.max(line, highestDisplacedLine);\n lowestDisplacedLine = lowestDisplacedLine === undefined ? line : Math.min(line, lowestDisplacedLine);\n }\n else {\n highestNonDisplacedLine = Math.max(line, highestNonDisplacedLine);\n lowestNonDisplacedLine = Math.min(line, lowestNonDisplacedLine);\n }\n }, this);\n return {\n y_top: yTop,\n y_bottom: yBottom,\n displaced_x: displacedX,\n non_displaced_x: nonDisplacedX,\n highest_line: highestLine,\n lowest_line: lowestLine,\n highest_displaced_line: highestDisplacedLine,\n lowest_displaced_line: lowestDisplacedLine,\n highest_non_displaced_line: highestNonDisplacedLine,\n lowest_non_displaced_line: lowestNonDisplacedLine,\n };\n }\n // Get the starting `x` coordinate for the noteheads\n getNoteHeadBeginX() {\n return this.getAbsoluteX() + this.x_shift;\n }\n // Get the ending `x` coordinate for the noteheads\n getNoteHeadEndX() {\n const xBegin = this.getNoteHeadBeginX();\n return xBegin + this.getGlyphWidth();\n }\n get noteHeads() {\n return this._noteHeads.slice();\n }\n /** @deprecated use StaveNote.noteHeads instead. */\n get note_heads() {\n showDeprecationWarningForNoteHeads();\n return this.noteHeads;\n }\n // Draw the ledger lines between the stave and the highest/lowest keys\n drawLedgerLines() {\n const stave = this.checkStave();\n const { glyph, render_options: { stroke_px }, } = this;\n const ctx = this.checkContext();\n const width = glyph.getWidth() + stroke_px * 2;\n const doubleWidth = 2 * (glyph.getWidth() + stroke_px) - Stem.WIDTH / 2;\n if (this.isRest())\n return;\n if (!ctx) {\n throw new RuntimeError('NoCanvasContext', \"Can't draw without a canvas context.\");\n }\n const { highest_line, lowest_line, highest_displaced_line, highest_non_displaced_line, lowest_displaced_line, lowest_non_displaced_line, displaced_x, non_displaced_x, } = this.getNoteHeadBounds();\n // Early out if there are no ledger lines to draw.\n if (highest_line < 6 && lowest_line > 0)\n return;\n const min_x = Math.min(displaced_x !== null && displaced_x !== void 0 ? displaced_x : 0, non_displaced_x !== null && non_displaced_x !== void 0 ? non_displaced_x : 0);\n const drawLedgerLine = (y, normal, displaced) => {\n let x;\n if (displaced && normal)\n x = min_x - stroke_px;\n else if (normal)\n x = (non_displaced_x !== null && non_displaced_x !== void 0 ? non_displaced_x : 0) - stroke_px;\n else\n x = (displaced_x !== null && displaced_x !== void 0 ? displaced_x : 0) - stroke_px;\n const ledgerWidth = normal && displaced ? doubleWidth : width;\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.lineTo(x + ledgerWidth, y);\n ctx.stroke();\n };\n const style = Object.assign(Object.assign({}, stave.getDefaultLedgerLineStyle()), this.getLedgerLineStyle());\n this.applyStyle(ctx, style);\n // Draw ledger lines below the staff:\n for (let line = 6; line <= highest_line; ++line) {\n const normal = non_displaced_x !== undefined && line <= highest_non_displaced_line;\n const displaced = highest_displaced_line !== undefined && line <= highest_displaced_line;\n drawLedgerLine(stave.getYForNote(line), normal, displaced);\n }\n // Draw ledger lines above the staff:\n for (let line = 0; line >= lowest_line; --line) {\n const normal = non_displaced_x !== undefined && line >= lowest_non_displaced_line;\n const displaced = lowest_displaced_line !== undefined && line >= lowest_displaced_line;\n drawLedgerLine(stave.getYForNote(line), normal, displaced);\n }\n this.restoreStyle(ctx, style);\n }\n // Draw all key modifiers\n drawModifiers(noteheadParam) {\n const ctx = this.checkContext();\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n const index = modifier.checkIndex();\n const notehead = this._noteHeads[index];\n if (notehead == noteheadParam) {\n const noteheadStyle = notehead.getStyle();\n notehead.applyStyle(ctx, noteheadStyle);\n modifier.setContext(ctx);\n modifier.drawWithStyle();\n notehead.restoreStyle(ctx, noteheadStyle);\n }\n }\n }\n shouldDrawFlag() {\n const hasStem = this.stem !== undefined;\n const hasFlag = this.glyph.flag; // specified in tables.js\n const hasNoBeam = this.beam === undefined;\n return hasStem && hasFlag && hasNoBeam;\n }\n // Draw the flag for the note\n drawFlag() {\n var _a, _b, _c, _d, _e;\n const ctx = this.checkContext();\n if (!ctx) {\n throw new RuntimeError('NoCanvasContext', \"Can't draw without a canvas context.\");\n }\n if (this.shouldDrawFlag()) {\n const { y_top, y_bottom } = this.getNoteHeadBounds();\n // eslint-disable-next-line\n const noteStemHeight = this.stem.getHeight();\n const flagX = this.getStemX();\n // What's with the magic +/- 2\n // ANSWER: a corner of the note stem pokes out beyond the tip of the flag.\n // The extra +/- 2 pushes the flag glyph outward so it covers the stem entirely.\n // Alternatively, we could shorten the stem.\n const flagY = this.getStemDirection() === Stem.DOWN\n ? // Down stems are below the note head and have flags on the right.\n y_top -\n noteStemHeight +\n 2 -\n (this.glyph ? this.glyph.stem_down_extension : 0) * this.getStaveNoteScale() -\n ((_b = (_a = this.flag) === null || _a === void 0 ? void 0 : _a.getMetrics().y_shift) !== null && _b !== void 0 ? _b : 0) * (1 - this.getStaveNoteScale())\n : // Up stems are above the note head and have flags on the right.\n y_bottom -\n noteStemHeight -\n 2 +\n (this.glyph ? this.glyph.stem_up_extension : 0) * this.getStaveNoteScale() -\n ((_d = (_c = this.flag) === null || _c === void 0 ? void 0 : _c.getMetrics().y_shift) !== null && _d !== void 0 ? _d : 0) * (1 - this.getStaveNoteScale());\n // Draw the Flag\n (_e = this.flag) === null || _e === void 0 ? void 0 : _e.render(ctx, flagX, flagY);\n }\n }\n // Draw the NoteHeads\n drawNoteHeads() {\n const ctx = this.checkContext();\n this._noteHeads.forEach((notehead) => {\n ctx.openGroup('notehead', notehead.getAttribute('id'), { pointerBBox: true });\n notehead.setContext(ctx).draw();\n this.drawModifiers(notehead);\n ctx.closeGroup();\n });\n }\n drawStem(stemOptions) {\n // GCR TODO: I can't find any context in which this is called with the stemStruct\n // argument in the codebase or tests. Nor can I find a case where super.drawStem\n // is called at all. Perhaps these should be removed?\n const ctx = this.checkContext();\n if (stemOptions) {\n this.setStem(new Stem(stemOptions));\n }\n // If we will render a flag, we shorten the stem so that the tip\n // does not poke through the flag.\n if (this.shouldDrawFlag() && this.stem) {\n this.stem.adjustHeightForFlag();\n }\n if (this.stem) {\n this.stem.setContext(ctx).draw();\n }\n }\n /** Primarily used as the scaling factor for grace notes, GraceNote will return the required scale. */\n getStaveNoteScale() {\n return 1.0;\n }\n /**\n * Override stemmablenote stem extension to adjust for distance from middle line.\n */\n getStemExtension() {\n const super_stem_extension = super.getStemExtension();\n if (!this.glyph.stem) {\n return super_stem_extension;\n }\n const stem_direction = this.getStemDirection();\n if (stem_direction !== this.calculateOptimalStemDirection()) {\n return super_stem_extension; // no adjustment for manually set stem direction.\n }\n let mid_line_distance;\n const MIDDLE_LINE = 3;\n if (stem_direction === Stem.UP) {\n // Note that the use of maxLine here instead of minLine might\n // seem counterintuitive, but in the case of (say) treble clef\n // chord(F2, E4) stem up, we do not want to extend the stem because\n // of F2, when a normal octave-length stem above E4 is fine.\n //\n // maxLine and minLine are set in calculateOptimalStemDirection() so\n // will be known.\n mid_line_distance = MIDDLE_LINE - this.maxLine;\n }\n else {\n mid_line_distance = this.minLine - MIDDLE_LINE;\n }\n // how many lines more than an octave is the relevant notehead?\n const lines_over_octave_from_mid_line = mid_line_distance - 3.5;\n if (lines_over_octave_from_mid_line <= 0) {\n return super_stem_extension;\n }\n const stave = this.getStave();\n let spacing_between_lines = 10;\n if (stave != undefined) {\n spacing_between_lines = stave.getSpacingBetweenLines();\n }\n return super_stem_extension + lines_over_octave_from_mid_line * spacing_between_lines;\n }\n // Draws all the `StaveNote` parts. This is the main drawing method.\n draw() {\n if (this.render_options.draw === false)\n return;\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', \"Can't draw note without Y values.\");\n }\n const ctx = this.checkContext();\n const xBegin = this.getNoteHeadBeginX();\n const shouldRenderStem = this.hasStem() && !this.beam;\n // Format note head x positions\n this._noteHeads.forEach((notehead) => notehead.setX(xBegin));\n if (this.stem) {\n // Format stem x positions\n const stemX = this.getStemX();\n this.stem.setNoteHeadXBounds(stemX, stemX);\n }\n L('Rendering ', this.isChord() ? 'chord :' : 'note :', this.keys);\n // Apply the overall style -- may be contradicted by local settings:\n this.applyStyle();\n ctx.openGroup('stavenote', this.getAttribute('id'));\n this.drawLedgerLines();\n if (shouldRenderStem)\n this.drawStem();\n this.drawNoteHeads();\n this.drawFlag();\n ctx.closeGroup();\n this.restoreStyle();\n this.setRendered();\n }\n}\nStaveNote.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveTie extends Element {\n /**\n * @param notes is a struct that has:\n *\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n *\n * @param text\n */\n constructor(notes, text) {\n super();\n this.setNotes(notes);\n this.text = text;\n this.render_options = {\n cp1: 8,\n cp2: 12,\n text_shift_x: 0,\n first_x_shift: 0,\n last_x_shift: 0,\n y_shift: 7,\n tie_spacing: 0,\n };\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveTie;\n }\n setDirection(direction) {\n this.direction = direction;\n return this;\n }\n /**\n * Set the notes to attach this tie to.\n *\n * @param {!Object} notes The notes to tie up.\n */\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Tie needs to have either first_note or last_note set.');\n }\n if (!notes.first_indices) {\n notes.first_indices = [0];\n }\n if (!notes.last_indices) {\n notes.last_indices = [0];\n }\n if (notes.first_indices.length !== notes.last_indices.length) {\n throw new RuntimeError('BadArguments', 'Tied notes must have same number of indices.');\n }\n this.notes = notes;\n return this;\n }\n /**\n * @return {boolean} Returns true if this is a partial bar.\n */\n isPartial() {\n return !this.notes.first_note || !this.notes.last_note;\n }\n renderTie(params) {\n if (params.first_ys.length === 0 || params.last_ys.length === 0) {\n throw new RuntimeError('BadArguments', 'No Y-values to render');\n }\n const ctx = this.checkContext();\n let cp1 = this.render_options.cp1;\n let cp2 = this.render_options.cp2;\n if (Math.abs(params.last_x_px - params.first_x_px) < 10) {\n cp1 = 2;\n cp2 = 8;\n }\n const first_x_shift = this.render_options.first_x_shift;\n const last_x_shift = this.render_options.last_x_shift;\n const y_shift = this.render_options.y_shift * params.direction;\n // setNotes(...) verified that first_indices and last_indices are not undefined.\n // As a result, we use the ! non-null assertion operator here.\n // eslint-disable-next-line\n const first_indices = this.notes.first_indices;\n // eslint-disable-next-line\n const last_indices = this.notes.last_indices;\n for (let i = 0; i < first_indices.length; ++i) {\n const cp_x = (params.last_x_px + last_x_shift + (params.first_x_px + first_x_shift)) / 2;\n const first_y_px = params.first_ys[first_indices[i]] + y_shift;\n const last_y_px = params.last_ys[last_indices[i]] + y_shift;\n if (isNaN(first_y_px) || isNaN(last_y_px)) {\n throw new RuntimeError('BadArguments', 'Bad indices for tie rendering.');\n }\n const top_cp_y = (first_y_px + last_y_px) / 2 + cp1 * params.direction;\n const bottom_cp_y = (first_y_px + last_y_px) / 2 + cp2 * params.direction;\n ctx.openGroup('stavetie', this.getAttribute('id'));\n ctx.beginPath();\n ctx.moveTo(params.first_x_px + first_x_shift, first_y_px);\n ctx.quadraticCurveTo(cp_x, top_cp_y, params.last_x_px + last_x_shift, last_y_px);\n ctx.quadraticCurveTo(cp_x, bottom_cp_y, params.first_x_px + first_x_shift, first_y_px);\n ctx.closePath();\n ctx.fill();\n ctx.closeGroup();\n }\n }\n renderText(first_x_px, last_x_px) {\n var _a, _b, _c;\n if (!this.text)\n return;\n const ctx = this.checkContext();\n let center_x = (first_x_px + last_x_px) / 2;\n center_x -= ctx.measureText(this.text).width / 2;\n const stave = (_b = (_a = this.notes.first_note) === null || _a === void 0 ? void 0 : _a.checkStave()) !== null && _b !== void 0 ? _b : (_c = this.notes.last_note) === null || _c === void 0 ? void 0 : _c.checkStave();\n if (stave) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText(this.text, center_x + this.render_options.text_shift_x, stave.getYForTopText() - 1);\n ctx.restore();\n }\n }\n /**\n * Returns the TieNotes structure of the first and last note this tie connects.\n */\n getNotes() {\n return this.notes;\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const first_note = this.notes.first_note;\n const last_note = this.notes.last_note;\n // Provide some default values so the compiler doesn't complain.\n let first_x_px = 0;\n let last_x_px = 0;\n let first_ys = [0];\n let last_ys = [0];\n let stem_direction = 0;\n if (first_note) {\n first_x_px = first_note.getTieRightX() + this.render_options.tie_spacing;\n stem_direction = first_note.getStemDirection();\n first_ys = first_note.getYs();\n }\n else if (last_note) {\n const stave = last_note.checkStave();\n first_x_px = stave.getTieStartX();\n first_ys = last_note.getYs();\n this.notes.first_indices = this.notes.last_indices;\n }\n if (last_note) {\n last_x_px = last_note.getTieLeftX() + this.render_options.tie_spacing;\n stem_direction = last_note.getStemDirection();\n last_ys = last_note.getYs();\n }\n else if (first_note) {\n const stave = first_note.checkStave();\n last_x_px = stave.getTieEndX();\n last_ys = first_note.getYs();\n this.notes.last_indices = this.notes.first_indices;\n }\n if (this.direction) {\n stem_direction = this.direction;\n }\n this.renderTie({\n first_x_px,\n last_x_px,\n first_ys,\n last_ys,\n direction: stem_direction,\n });\n this.renderText(first_x_px, last_x_px);\n return true;\n }\n}\n/** Default text font. */\nStaveTie.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","// / [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { StaveTie } from './stavetie';\nimport { Category } from './typeguard';\nexport class TabTie extends StaveTie {\n static get CATEGORY() {\n return Category.TabTie;\n }\n static createHammeron(notes) {\n return new TabTie(notes, 'H');\n }\n static createPulloff(notes) {\n return new TabTie(notes, 'P');\n }\n /**\n * @param notes is a struct that has:\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n *\n * @param text\n */\n constructor(notes, text) {\n super(notes, text);\n this.render_options.cp1 = 9;\n this.render_options.cp2 = 11;\n this.render_options.y_shift = 3;\n this.direction = -1; // Tab tie's are always face up.\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var VoiceMode;\n(function (VoiceMode) {\n VoiceMode[VoiceMode[\"STRICT\"] = 1] = \"STRICT\";\n VoiceMode[VoiceMode[\"SOFT\"] = 2] = \"SOFT\";\n VoiceMode[VoiceMode[\"FULL\"] = 3] = \"FULL\";\n})(VoiceMode || (VoiceMode = {}));\n/**\n * `Voice` is mainly a container object to group `Tickables` for formatting.\n */\nexport class Voice extends Element {\n constructor(time) {\n super();\n this.resolutionMultiplier = 1;\n this.mode = VoiceMode.STRICT;\n this.preFormatted = false;\n this.ticksUsed = new Fraction(0, 1);\n this.largestTickWidth = 0;\n this.tickables = [];\n this.options = {\n softmaxFactor: Tables.SOFTMAX_FACTOR,\n };\n // Convert the `time` string into a VoiceTime object if necessary.\n let voiceTime;\n if (typeof time === 'string') {\n // Time signature shortcut: \"4/4\", \"3/8\", etc.\n const match = time.match(/(\\d+)\\/(\\d+)/);\n if (match) {\n voiceTime = {\n num_beats: parseInt(match[1]),\n beat_value: parseInt(match[2]),\n };\n }\n }\n else {\n voiceTime = time;\n }\n // Default time signature is 4/4.\n this.time = Object.assign({ num_beats: 4, beat_value: 4, resolution: Tables.RESOLUTION }, voiceTime);\n // Recalculate total ticks.\n this.totalTicks = new Fraction(this.time.num_beats * (this.time.resolution / this.time.beat_value), 1);\n this.smallestTickCount = this.totalTicks.clone();\n }\n static get CATEGORY() {\n return Category.Voice;\n }\n /**\n * Modes allow the addition of ticks in three different ways:\n * - STRICT: This is the default. Ticks must fill the voice.\n * - SOFT: Ticks can be added without restrictions.\n * - FULL: Ticks do not need to fill the voice, but can't exceed the maximum tick length.\n */\n static get Mode() {\n return VoiceMode;\n }\n /** Get the total ticks in the voice. */\n getTotalTicks() {\n return this.totalTicks;\n }\n /** Get the total ticks used in the voice by all the tickables. */\n getTicksUsed() {\n return this.ticksUsed;\n }\n /** Get the largest width of all the tickables. */\n getLargestTickWidth() {\n return this.largestTickWidth;\n }\n /** Get the tick count for the shortest tickable */\n getSmallestTickCount() {\n return this.smallestTickCount;\n }\n /** Get the tickables in the voice. */\n getTickables() {\n return this.tickables;\n }\n /** Get the voice mode. */\n getMode() {\n return this.mode;\n }\n /**\n * Set the voice mode.\n * @param mode value from `VoiceMode`\n */\n setMode(mode) {\n this.mode = mode;\n return this;\n }\n /** Get the resolution multiplier for the voice. */\n getResolutionMultiplier() {\n return this.resolutionMultiplier;\n }\n /** Get the actual tick resolution for the voice. */\n getActualResolution() {\n return this.resolutionMultiplier * this.time.resolution;\n }\n /** Set the voice's stave. */\n setStave(stave) {\n this.stave = stave;\n // Reset the bounding box so we can reformat.\n this.boundingBox = undefined;\n return this;\n }\n getStave() {\n return this.stave;\n }\n /** Get the bounding box for the voice. */\n getBoundingBox() {\n if (!this.boundingBox) {\n const stave = this.checkStave();\n let boundingBox = undefined;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n tickable.setStave(stave);\n const bb = tickable.getBoundingBox();\n if (bb) {\n boundingBox = boundingBox ? boundingBox.mergeWith(bb) : bb;\n }\n }\n this.boundingBox = boundingBox;\n }\n return this.boundingBox;\n }\n /** Set the voice mode to strict or soft. */\n setStrict(strict) {\n this.mode = strict ? VoiceMode.STRICT : VoiceMode.SOFT;\n return this;\n }\n /** Determine if the voice is complete according to the voice mode. */\n isComplete() {\n if (this.mode === VoiceMode.STRICT || this.mode === VoiceMode.FULL) {\n return this.ticksUsed.equals(this.totalTicks);\n }\n else {\n return true;\n }\n }\n /**\n * We use softmax to layout the tickables proportional to the exponent of\n * their duration. The softmax factor is used to determine the 'linearness' of\n * the layout.\n *\n * The softmax of all the tickables in this voice should sum to 1.\n */\n setSoftmaxFactor(factor) {\n this.options.softmaxFactor = factor;\n return this;\n }\n /**\n * Calculate the sum of the exponents of all the ticks in this voice to use\n * as the denominator of softmax.\n */\n reCalculateExpTicksUsed() {\n const totalTicks = this.ticksUsed.value();\n const exp = (tickable) => Math.pow(this.options.softmaxFactor, tickable.getTicks().value() / totalTicks);\n this.expTicksUsed = this.tickables.map(exp).reduce((a, b) => a + b, 0);\n return this.expTicksUsed;\n }\n /** Get the softmax-scaled value of a tick duration. 'tickValue' is a number. */\n softmax(tickValue) {\n if (!this.expTicksUsed) {\n this.expTicksUsed = this.reCalculateExpTicksUsed();\n }\n const totalTicks = this.ticksUsed.value();\n const exp = (v) => Math.pow(this.options.softmaxFactor, v / totalTicks);\n const sm = exp(tickValue) / this.expTicksUsed;\n return sm;\n }\n /** Add a tickable to the voice. */\n addTickable(tickable) {\n if (!tickable.shouldIgnoreTicks()) {\n const ticks = tickable.getTicks();\n // Update the total ticks for this line.\n this.ticksUsed.add(ticks);\n this.expTicksUsed = 0; // reset\n if ((this.mode === VoiceMode.STRICT || this.mode === VoiceMode.FULL) &&\n this.ticksUsed.greaterThan(this.totalTicks)) {\n this.ticksUsed.subtract(ticks);\n throw new RuntimeError('BadArgument', 'Too many ticks.');\n }\n // Track the smallest tickable for formatting.\n if (ticks.lessThan(this.smallestTickCount)) {\n this.smallestTickCount = ticks.clone();\n }\n this.resolutionMultiplier = this.ticksUsed.denominator;\n // Expand total ticks using denominator from ticks used.\n this.totalTicks.add(0, this.ticksUsed.denominator);\n }\n // Add the tickable to the line.\n this.tickables.push(tickable);\n tickable.setVoice(this);\n return this;\n }\n /** Add an array of tickables to the voice. */\n addTickables(tickables) {\n for (let i = 0; i < tickables.length; ++i) {\n this.addTickable(tickables[i]);\n }\n return this;\n }\n /** Preformat the voice by applying the voice's stave to each note. */\n preFormat() {\n if (this.preFormatted)\n return this;\n const stave = this.checkStave();\n this.tickables.forEach((tickable) => {\n if (!tickable.getStave()) {\n tickable.setStave(stave);\n }\n });\n this.preFormatted = true;\n return this;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n /**\n * Render the voice onto the canvas `context` and an optional `stave`.\n * If `stave` is omitted, it is expected that the notes have staves\n * already set.\n *\n * This method also calculates the voice's boundingBox while drawing\n * the notes. Note the similarities with this.getBoundingBox().\n */\n draw(context = this.checkContext(), stave) {\n stave = stave !== null && stave !== void 0 ? stave : this.stave;\n this.setRendered();\n let boundingBox = undefined;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n // Set the stave if provided.\n if (stave) {\n tickable.setStave(stave);\n }\n defined(tickable.getStave(), 'MissingStave', 'The voice cannot draw tickables without staves.');\n const bb = tickable.getBoundingBox();\n if (bb) {\n boundingBox = boundingBox ? boundingBox.mergeWith(bb) : bb;\n }\n tickable.setContext(context);\n tickable.drawWithStyle();\n }\n this.boundingBox = boundingBox;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This file implements `GraceNoteGroup` which is used to format and\n// render grace notes.\nimport { Beam } from './beam';\nimport { Formatter } from './formatter';\nimport { Modifier } from './modifier';\nimport { StaveNote } from './stavenote';\nimport { StaveTie } from './stavetie';\nimport { Tables } from './tables';\nimport { TabTie } from './tabtie';\nimport { Category, isStaveNote } from './typeguard';\nimport { log } from './util';\nimport { Voice } from './voice';\n// To enable logging for this class. Set `GraceNoteGroup.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (GraceNoteGroup.DEBUG)\n log('Vex.Flow.GraceNoteGroup', args);\n}\n/** GraceNoteGroup is used to format and render grace notes. */\nexport class GraceNoteGroup extends Modifier {\n //** `GraceNoteGroup` inherits from `Modifier` and is placed inside a `ModifierContext`. */\n constructor(grace_notes, show_slur) {\n super();\n this.preFormatted = false;\n this.position = Modifier.Position.LEFT;\n this.grace_notes = grace_notes;\n this.width = 0;\n this.show_slur = show_slur;\n this.slur = undefined;\n this.voice = new Voice({\n num_beats: 4,\n beat_value: 4,\n resolution: Tables.RESOLUTION,\n }).setStrict(false);\n this.render_options = {\n slur_y_shift: 0,\n };\n this.beams = [];\n this.voice.addTickables(this.grace_notes);\n return this;\n }\n static get CATEGORY() {\n return Category.GraceNoteGroup;\n }\n /** Arranges groups inside a `ModifierContext`. */\n static format(gracenote_groups, state) {\n const group_spacing_stave = 4;\n const group_spacing_tab = 0;\n if (!gracenote_groups || gracenote_groups.length === 0)\n return false;\n const group_list = [];\n let prev_note = null;\n let shiftL = 0;\n for (let i = 0; i < gracenote_groups.length; ++i) {\n const gracenote_group = gracenote_groups[i];\n const note = gracenote_group.getNote();\n const is_stavenote = isStaveNote(note);\n const spacing = is_stavenote ? group_spacing_stave : group_spacing_tab;\n if (is_stavenote && note !== prev_note) {\n // Iterate through all notes to get the displaced pixels\n for (let n = 0; n < note.keys.length; ++n) {\n shiftL = Math.max(note.getLeftDisplacedHeadPx(), shiftL);\n }\n prev_note = note;\n }\n group_list.push({ shift: shiftL, gracenote_group, spacing });\n }\n // If first note left shift in case it is displaced\n let group_shift = group_list[0].shift;\n let formatWidth;\n for (let i = 0; i < group_list.length; ++i) {\n const gracenote_group = group_list[i].gracenote_group;\n gracenote_group.preFormat();\n formatWidth = gracenote_group.getWidth() + group_list[i].spacing;\n group_shift = Math.max(formatWidth, group_shift);\n }\n for (let i = 0; i < group_list.length; ++i) {\n const gracenote_group = group_list[i].gracenote_group;\n formatWidth = gracenote_group.getWidth() + group_list[i].spacing;\n gracenote_group.setSpacingFromNextModifier(group_shift - Math.min(formatWidth, group_shift) + StaveNote.minNoteheadPadding);\n }\n state.left_shift += group_shift;\n return true;\n }\n preFormat() {\n if (this.preFormatted)\n return;\n if (!this.formatter) {\n this.formatter = new Formatter();\n }\n this.formatter.joinVoices([this.voice]).format([this.voice], 0, {});\n this.setWidth(this.formatter.getMinTotalWidth());\n this.preFormatted = true;\n }\n beamNotes(grace_notes) {\n grace_notes = grace_notes || this.grace_notes;\n if (grace_notes.length > 1) {\n const beam = new Beam(grace_notes);\n beam.render_options.beam_width = 3;\n beam.render_options.partial_beam_length = 4;\n this.beams.push(beam);\n }\n return this;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getWidth() {\n return this.width + StaveNote.minNoteheadPadding;\n }\n getGraceNotes() {\n return this.grace_notes;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n L('Drawing grace note group for:', note);\n this.alignSubNotesWithNote(this.getGraceNotes(), note); // Modifier function\n // Draw grace notes.\n this.grace_notes.forEach((graceNote) => graceNote.setContext(ctx).draw());\n // Draw beams.\n this.beams.forEach((beam) => beam.setContext(ctx).draw());\n if (this.show_slur) {\n // Create and draw slur.\n const is_stavenote = isStaveNote(note);\n const TieClass = is_stavenote ? StaveTie : TabTie;\n this.slur = new TieClass({\n last_note: this.grace_notes[0],\n first_note: note,\n first_indices: [0],\n last_indices: [0],\n });\n this.slur.render_options.cp2 = 12;\n this.slur.render_options.y_shift = (is_stavenote ? 7 : 5) + this.render_options.slur_y_shift;\n this.slur.setContext(ctx).draw();\n }\n }\n}\nGraceNoteGroup.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2016\n//\n// ## Description\n//\n// This file implements `NoteSubGroup` which is used to format and\n// render notes as a `Modifier`\n// ex) ClefNote, TimeSigNote and BarNote.\nimport { Formatter } from './formatter';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { Voice } from './voice';\nexport class NoteSubGroup extends Modifier {\n constructor(subNotes) {\n super();\n this.preFormatted = false;\n this.position = Modifier.Position.LEFT;\n this.subNotes = subNotes;\n this.subNotes.forEach((subNote) => {\n subNote.setIgnoreTicks(false);\n });\n this.width = 0;\n this.formatter = new Formatter();\n this.voice = new Voice({\n num_beats: 4,\n beat_value: 4,\n resolution: Tables.RESOLUTION,\n }).setStrict(false);\n this.voice.addTickables(this.subNotes);\n }\n static get CATEGORY() {\n return Category.NoteSubGroup;\n }\n // Arrange groups inside a `ModifierContext`\n static format(groups, state) {\n if (!groups || groups.length === 0)\n return false;\n let width = 0;\n for (let i = 0; i < groups.length; ++i) {\n const group = groups[i];\n group.preFormat();\n width += group.getWidth();\n }\n state.left_shift += width;\n return true;\n }\n preFormat() {\n if (this.preFormatted)\n return;\n this.formatter.joinVoices([this.voice]).format([this.voice], 0);\n this.setWidth(this.formatter.getMinTotalWidth());\n this.preFormatted = true;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getWidth() {\n return this.width;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n this.alignSubNotesWithNote(this.subNotes, note); // Modifier function\n this.subNotes.forEach((subNote) => subNote.setContext(ctx).drawWithStyle());\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// A formatter for abstract tickable objects, such as notes, chords,\n// tabs, etc.\nimport { Fraction } from './fraction';\nimport { RuntimeError } from './util';\n/**\n * TickContext formats abstract tickable objects, such as notes, chords, tabs, etc.\n */\nexport class TickContext {\n constructor(options) {\n this.preFormatted = false;\n this.postFormatted = false;\n this.tickID = options && options.tickID ? options.tickID : 0;\n this.currentTick = new Fraction(0, 1);\n this.maxTicks = new Fraction(0, 1);\n this.maxTickable = undefined; // Biggest tickable\n this.minTicks = undefined; // this can remian null if all tickables have ignore_ticks\n this.minTickable = undefined;\n this.padding = 1; // padding on each side (width += padding * 2)\n this.x = 0;\n this.xBase = 0; // base x position without xOffset\n this.xOffset = 0; // xBase and xOffset are an alternative way to describe x (x = xB + xO)\n this.tickables = []; // Notes, tabs, chords, lyrics.\n this.tickablesByVoice = {}; // Tickables indexed by voice number\n // Formatting metrics\n this.notePx = 0; // width of widest note in this context\n this.glyphPx = 0; // width of glyph (note head)\n this.leftDisplacedHeadPx = 0; // Extra left pixels for displaced notes\n this.rightDisplacedHeadPx = 0; // Extra right pixels for displaced notes\n this.modLeftPx = 0; // Left modifier pixels\n this.modRightPx = 0; // Right modifier pixels\n this.totalLeftPx = 0; // Total left pixels\n this.totalRightPx = 0; // Total right pixels\n this.tContexts = []; // Parent array of tick contexts\n this.width = 0;\n this.formatterMetrics = {\n // The freedom of a tickcontext is the distance it can move without colliding\n // with neighboring elements. A formatter can set these values during its\n // formatting pass, which a different formatter can then use to fine tune.\n freedom: { left: 0, right: 0 },\n };\n }\n static getNextContext(tContext) {\n const contexts = tContext.tContexts;\n const index = contexts.indexOf(tContext);\n if (index + 1 < contexts.length)\n return contexts[index + 1];\n }\n getTickID() {\n return this.tickID;\n }\n getX() {\n return this.x;\n }\n setX(x) {\n this.x = x;\n this.xBase = x;\n this.xOffset = 0;\n return this;\n }\n getXBase() {\n return this.xBase;\n } // use of xBase and xOffset is optional, avoids offset creep\n setXBase(xBase) {\n this.xBase = xBase;\n this.x = xBase + this.xOffset;\n }\n getXOffset() {\n return this.xOffset;\n }\n setXOffset(xOffset) {\n this.xOffset = xOffset;\n this.x = this.xBase + xOffset;\n }\n getWidth() {\n return this.width + this.padding * 2;\n }\n setPadding(padding) {\n this.padding = padding;\n return this;\n }\n getMaxTicks() {\n return this.maxTicks;\n }\n getMinTicks() {\n return this.minTicks;\n }\n getMaxTickable() {\n return this.maxTickable;\n }\n getMinTickable() {\n return this.minTickable;\n }\n getTickables() {\n return this.tickables;\n }\n /**\n * Introduced on 2020-04-17 as getTickablesForVoice(voiceIndex).\n * https://github.com/0xfe/vexflow/blame/dc97b0cc5bb93171c0038638c34362dc958222ca/src/tickcontext.js#L63\n * Renamed on 2021-08-05 to getTickableForVoice(voiceIndex). Method renamed to singular, since it returns one Tickable.\n */\n getTickableForVoice(voiceIndex) {\n return this.tickablesByVoice[voiceIndex];\n }\n getTickablesByVoice() {\n return this.tickablesByVoice;\n }\n getCenterAlignedTickables() {\n return this.tickables.filter((tickable) => tickable.isCenterAligned());\n }\n /** Gets widths context, note and left/right modifiers for formatting. */\n getMetrics() {\n const { width, glyphPx, notePx, leftDisplacedHeadPx, rightDisplacedHeadPx, modLeftPx, modRightPx, totalLeftPx, totalRightPx, } = this;\n return {\n width,\n glyphPx,\n notePx,\n leftDisplacedHeadPx,\n rightDisplacedHeadPx,\n modLeftPx,\n modRightPx,\n totalLeftPx,\n totalRightPx,\n };\n }\n getCurrentTick() {\n return this.currentTick;\n }\n setCurrentTick(tick) {\n this.currentTick = tick;\n this.preFormatted = false;\n }\n addTickable(tickable, voiceIndex) {\n if (!tickable) {\n throw new RuntimeError('BadArgument', 'Invalid tickable added.');\n }\n if (!tickable.shouldIgnoreTicks()) {\n const ticks = tickable.getTicks();\n if (ticks.greaterThan(this.maxTicks)) {\n this.maxTicks = ticks.clone();\n this.maxTickable = tickable;\n }\n if (this.minTicks == null) {\n this.minTicks = ticks.clone();\n this.minTickable = tickable;\n }\n else if (ticks.lessThan(this.minTicks)) {\n this.minTicks = ticks.clone();\n this.minTickable = tickable;\n }\n }\n tickable.setTickContext(this);\n this.tickables.push(tickable);\n this.tickablesByVoice[voiceIndex || 0] = tickable;\n this.preFormatted = false;\n return this;\n }\n preFormat() {\n if (this.preFormatted)\n return this;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n tickable.preFormat();\n const metrics = tickable.getMetrics();\n // Maintain max displaced head pixels from all tickables in the context\n this.leftDisplacedHeadPx = Math.max(this.leftDisplacedHeadPx, metrics.leftDisplacedHeadPx);\n this.rightDisplacedHeadPx = Math.max(this.rightDisplacedHeadPx, metrics.rightDisplacedHeadPx);\n // Maintain the widest note for all tickables in the context\n this.notePx = Math.max(this.notePx, metrics.notePx);\n // Maintain the widest note head\n this.glyphPx = Math.max(this.glyphPx, metrics.glyphWidth || 0);\n // Total modifier shift\n this.modLeftPx = Math.max(this.modLeftPx, metrics.modLeftPx);\n this.modRightPx = Math.max(this.modRightPx, metrics.modRightPx);\n // Total shift\n this.totalLeftPx = Math.max(this.totalLeftPx, metrics.modLeftPx + metrics.leftDisplacedHeadPx);\n this.totalRightPx = Math.max(this.totalRightPx, metrics.modRightPx + metrics.rightDisplacedHeadPx);\n // Recalculate the tick context total width\n this.width = this.notePx + this.totalLeftPx + this.totalRightPx;\n }\n return this;\n }\n postFormat() {\n if (this.postFormatted)\n return this;\n this.postFormatted = true;\n return this;\n }\n getFormatterMetrics() {\n return this.formatterMetrics;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TickContext } from './tickcontext';\nimport { Category, isTabNote } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Ornament.DEBUG)\n log('Vex.Flow.Ornament', args);\n}\n/**\n * Ornament implements ornaments as modifiers that can be\n * attached to notes. The complete list of ornaments is available in\n * `tables.ts` under `Vex.Flow.ornamentCodes`.\n *\n * See `tests/ornament_tests.ts` for usage examples.\n */\nexport class Ornament extends Modifier {\n /**\n * Create a new ornament of type `type`, which is an entry in\n * `Vex.Flow.ornamentCodes` in `tables.ts`.\n */\n constructor(type) {\n super();\n this.type = type;\n this.delayed = false;\n this.render_options = {\n font_scale: 38,\n accidentalLowerPadding: 3,\n accidentalUpperPadding: 3,\n };\n this.ornament = Tables.ornamentCodes(this.type);\n // new ornaments have their origin at the origin, and have more specific\n // metrics. Legacy ornaments do some\n // x scaling, and have hard-coded metrics\n const metrics = this.getMetrics();\n // some jazz ornaments are above or below depending on stem direction.\n this.adjustForStemDirection = false;\n // some jazz ornaments like falls are supposed to overlap with future bars\n // and so we report a different width than they actually take up.\n this.reportedWidth = metrics && metrics.reportedWidth ? metrics.reportedWidth : 0;\n this.stemUpYOffset = metrics && metrics.stemUpYOffset ? metrics.stemUpYOffset : 0;\n this.ornamentAlignWithNoteHead = Ornament.ornamentAlignWithNoteHead.indexOf(this.type) >= 0;\n if (!this.ornament) {\n throw new RuntimeError('ArgumentError', `Ornament not found: '${this.type}'`);\n }\n this.x_shift = metrics ? metrics.xOffset : 0;\n this.y_shift = metrics ? metrics.yOffset : 0;\n this.glyph = new Glyph(this.ornament.code, this.render_options.font_scale, {\n category: `ornament.${this.ornament.code}`,\n });\n // Is this a jazz ornament that goes between this note and the next note.\n if (Ornament.ornamentNoteTransition.indexOf(this.type) >= 0) {\n this.delayed = true;\n }\n // Legacy ornaments need this. I don't know why, but horizontal spacing issues\n // happen if I don't set it.\n if (!metrics) {\n this.glyph.setOrigin(0.5, 1.0); // FIXME: SMuFL won't require a vertical origin shift\n }\n }\n /** Ornaments category string. */\n static get CATEGORY() {\n return Category.Ornament;\n }\n static get minPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Arrange ornaments inside `ModifierContext` */\n static format(ornaments, state) {\n if (!ornaments || ornaments.length === 0)\n return false;\n let width = 0; // width is used by ornaments, which are always centered on the note head\n let right_shift = state.right_shift; // jazz ornaments calculate r/l shift separately\n let left_shift = state.left_shift;\n let yOffset = 0;\n for (let i = 0; i < ornaments.length; ++i) {\n const ornament = ornaments[i];\n const increment = 2;\n if (Ornament.ornamentRelease.indexOf(ornament.type) >= 0) {\n ornament.x_shift += right_shift + 2;\n }\n if (Ornament.ornamentAttack.indexOf(ornament.type) >= 0) {\n ornament.x_shift -= left_shift + 2;\n }\n if (ornament.reportedWidth && ornament.x_shift < 0) {\n left_shift += ornament.reportedWidth;\n }\n else if (ornament.reportedWidth && ornament.x_shift >= 0) {\n right_shift += ornament.reportedWidth + Ornament.minPadding;\n }\n else {\n width = Math.max(ornament.getWidth(), width);\n }\n // articulations above/below the line can be stacked.\n if (Ornament.ornamentArticulation.indexOf(ornament.type) >= 0) {\n // Unfortunately we don't know the stem direction. So we base it\n // on the line number, but also allow it to be overridden.\n const ornamentNote = defined(ornament.note, 'NoAttachedNote');\n if (ornamentNote.getLineNumber() >= 3 || ornament.getPosition() === Modifier.Position.ABOVE) {\n state.top_text_line += increment;\n ornament.y_shift += yOffset;\n yOffset -= ornament.glyph.bbox.getH();\n }\n else {\n state.text_line += increment;\n ornament.y_shift += yOffset;\n yOffset += ornament.glyph.bbox.getH();\n }\n }\n else {\n if (ornament.getPosition() === Modifier.Position.ABOVE) {\n ornament.setTextLine(state.top_text_line);\n state.top_text_line += increment;\n }\n else {\n ornament.setTextLine(state.text_line);\n state.text_line += increment;\n }\n }\n }\n // Note: 'legit' ornaments don't consider other modifiers when calculating their\n // X position, but jazz ornaments sometimes need to.\n state.left_shift = left_shift + width / 2;\n state.right_shift = right_shift + width / 2;\n return true;\n }\n /**\n * ornamentNoteTransition means the jazz ornament represents an effect from one note to another,\n * these are generally on the top of the staff.\n */\n static get ornamentNoteTransition() {\n return ['flip', 'jazzTurn', 'smear'];\n }\n /**\n * ornamentAttack indicates something that happens in the attach, placed before the note and\n * any accidentals\n */\n static get ornamentAttack() {\n return ['scoop'];\n }\n /**\n * The ornament is aligned based on the note head, but without regard to whether the\n * stem goes up or down.\n */\n static get ornamentAlignWithNoteHead() {\n return ['doit', 'fall', 'fallLong', 'doitLong', 'bend', 'plungerClosed', 'plungerOpen', 'scoop'];\n }\n /**\n * An ornament that happens on the release of the note, generally placed after the\n * note and overlapping the next beat/measure..\n */\n static get ornamentRelease() {\n return ['doit', 'fall', 'fallLong', 'doitLong', 'jazzTurn', 'smear', 'flip'];\n }\n /** ornamentArticulation goes above/below the note based on space availablity */\n static get ornamentArticulation() {\n return ['bend', 'plungerClosed', 'plungerOpen'];\n }\n /**\n * Legacy ornaments have hard-coded metrics. If additional ornament types are\n * added, get their metrics here.\n */\n // eslint-disable-next-line\n getMetrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.jazzOrnaments[this.ornament.code];\n }\n /** Set whether the ornament is to be delayed. */\n setDelayed(delayed) {\n this.delayed = delayed;\n return this;\n }\n /** Set the upper accidental for the ornament. */\n setUpperAccidental(accid) {\n const scale = this.render_options.font_scale / 1.3;\n this.accidentalUpper = new Glyph(Tables.accidentalCodes(accid).code, scale);\n this.accidentalUpper.setOrigin(0.5, 1.0);\n return this;\n }\n /** Set the lower accidental for the ornament. */\n setLowerAccidental(accid) {\n const scale = this.render_options.font_scale / 1.3;\n this.accidentalLower = new Glyph(Tables.accidentalCodes(accid).code, scale);\n this.accidentalLower.setOrigin(0.5, 1.0);\n return this;\n }\n /** Render ornament in position next to note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stemDir = note.getStemDirection();\n const stave = note.checkStave();\n ctx.openGroup('ornament', this.getAttribute('id'));\n // Get stem extents\n const stemExtents = note.checkStem().getExtents();\n let y = stemDir === Stem.DOWN ? stemExtents.baseY : stemExtents.topY;\n // TabNotes don't have stems attached to them. Tab stems are rendered outside the stave.\n if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDir === Stem.DOWN) {\n y = stave.getYForTopText(this.text_line);\n }\n }\n else {\n // Without a stem\n y = stave.getYForTopText(this.text_line);\n }\n }\n const isPlacedOnNoteheadSide = stemDir === Stem.DOWN;\n const spacing = stave.getSpacingBetweenLines();\n let lineSpacing = 1;\n // Beamed stems are longer than quarter note stems, adjust accordingly\n if (!isPlacedOnNoteheadSide && note.hasBeam()) {\n lineSpacing += 0.5;\n }\n const totalSpacing = spacing * (this.text_line + lineSpacing);\n const glyphYBetweenLines = y - totalSpacing;\n // Get initial coordinates for the modifier position\n const start = note.getModifierStartXY(this.position, this.index);\n let glyphX = start.x;\n // If the ornament is aligned with the note head, don't consider the stave y\n // but use the 'natural' modifier y\n let glyphY = this.ornamentAlignWithNoteHead\n ? start.y\n : Math.min(stave.getYForTopText(this.text_line), glyphYBetweenLines);\n glyphY += this.y_shift;\n // Ajdust x position if ornament is delayed\n if (this.delayed) {\n let delayXShift = 0;\n const startX = glyphX - (stave.getX() - 10);\n if (this.delayXShift !== undefined) {\n delayXShift = this.delayXShift;\n }\n else {\n delayXShift += this.glyph.getMetrics().width / 2;\n const nextContext = TickContext.getNextContext(note.getTickContext());\n if (nextContext) {\n delayXShift += (nextContext.getX() - startX) * 0.5;\n }\n else {\n delayXShift += (stave.getX() + stave.getWidth() - startX) * 0.5;\n }\n this.delayXShift = delayXShift;\n }\n glyphX += delayXShift;\n }\n L('Rendering ornament: ', this.ornament, glyphX, glyphY);\n if (this.accidentalLower) {\n this.accidentalLower.render(ctx, glyphX, glyphY);\n glyphY -= this.accidentalLower.getMetrics().height;\n glyphY -= this.render_options.accidentalLowerPadding;\n }\n if (this.stemUpYOffset && note.hasStem() && note.getStemDirection() === 1) {\n glyphY += this.stemUpYOffset;\n }\n if (note.getLineNumber() < 5 && Ornament.ornamentNoteTransition.indexOf(this.type) >= 0) {\n glyphY = note.checkStave().getBoundingBox().getY() + 40;\n }\n this.glyph.render(ctx, glyphX + this.x_shift, glyphY);\n if (this.accidentalUpper) {\n glyphY -= this.glyph.getMetrics().height + this.render_options.accidentalUpperPadding;\n this.accidentalUpper.render(ctx, glyphX, glyphY);\n }\n ctx.closeGroup();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Ornament.DEBUG` to `true`. */\nOrnament.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Rodrigo Vilar\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Tables } from './tables';\nimport { Category, isGraceNote } from './typeguard';\n/** Parenthesis implements parenthesis modifiers for notes. */\nexport class Parenthesis extends Modifier {\n /**\n * Constructor\n *\n * @param position Modifier.Position.LEFT (default) or Modifier.Position.RIGHT\n */\n constructor(position) {\n super();\n this.position = position !== null && position !== void 0 ? position : Modifier.Position.LEFT;\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.default.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.default.width'));\n }\n static get CATEGORY() {\n return Category.Parenthesis;\n }\n /** Add parentheses to the notes. */\n static buildAndAttach(notes) {\n for (const note of notes) {\n for (let i = 0; i < note.keys.length; i++) {\n note.addModifier(new Parenthesis(ModifierPosition.LEFT), i);\n note.addModifier(new Parenthesis(ModifierPosition.RIGHT), i);\n }\n }\n }\n /** Arrange parentheses inside a ModifierContext. */\n static format(parentheses, state) {\n if (!parentheses || parentheses.length === 0)\n return false;\n let x_widthL = 0;\n let x_widthR = 0;\n for (let i = 0; i < parentheses.length; ++i) {\n const parenthesis = parentheses[i];\n const note = parenthesis.getNote();\n const pos = parenthesis.getPosition();\n const index = parenthesis.checkIndex();\n let shift = 0;\n if (pos === ModifierPosition.RIGHT) {\n shift = note.getRightParenthesisPx(index);\n x_widthR = x_widthR > shift + parenthesis.width ? x_widthR : shift + parenthesis.width;\n }\n if (pos === ModifierPosition.LEFT) {\n shift = note.getLeftParenthesisPx(index);\n x_widthL = x_widthL > shift + parenthesis.width ? x_widthL : shift + parenthesis.width;\n }\n parenthesis.setXShift(shift);\n }\n state.left_shift += x_widthL;\n state.right_shift += x_widthR;\n return true;\n }\n /** Set the associated note. */\n setNote(note) {\n this.note = note;\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.default.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.default.width'));\n if (isGraceNote(note)) {\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.gracenote.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.gracenote.width'));\n }\n return this;\n }\n /** Render the parenthesis. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index, { forceFlagRight: true });\n const x = start.x + this.x_shift;\n const y = start.y + this.y_shift;\n if (this.position == Modifier.Position.RIGHT) {\n Glyph.renderGlyph(ctx, x + 1, y, this.point, 'noteheadParenthesisRight', {\n category: `noteHead.standard.noteheadParenthesisRight`,\n });\n }\n else if (this.position == Modifier.Position.LEFT) {\n Glyph.renderGlyph(ctx, x - 2, y, this.point, 'noteheadParenthesisLeft', {\n category: `noteHead.standard.noteheadParenthesisLeft`,\n });\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Ron B. Yeh\n// MIT License\n//\n// Utilities for working with Web APIs.\n// See: https://developer.mozilla.org/en-US/docs/Web/API\nimport { globalObject } from './util';\n// eslint-disable-next-line\nexport function isHTMLCanvas(element) {\n if (!element)\n return false;\n const global = globalObject();\n return (\n // It's either an instance of the HTMLCanvasElement class,\n (typeof global.HTMLCanvasElement === 'function' && element instanceof global.HTMLCanvasElement) ||\n // OR it's pretending to be a element. Good enough!\n // Do not rely on .tagName, because node-canvas doesn't provide a tagName.\n (typeof element.getContext === 'function' && typeof element.toDataURL === 'function'));\n}\n// eslint-disable-next-line\nexport function isHTMLDiv(element) {\n if (!element)\n return false;\n const global = globalObject();\n return (\n // It's either an instance of the HTMLDivElement class.\n (typeof global.HTMLDivElement === 'function' && element instanceof global.HTMLDivElement) ||\n // OR it's pretending to be a
. See: svgcontext.ts.\n (typeof element.appendChild === 'function' && typeof element.style === 'object'));\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from './font';\nimport { RenderContext } from './rendercontext';\nimport { globalObject, warn } from './util';\nimport { isHTMLCanvas } from './web';\n/**\n * A rendering context for the Canvas backend. This class serves as a proxy for the\n * underlying CanvasRenderingContext2D object, part of the browser's API.\n */\nexport class CanvasContext extends RenderContext {\n constructor(context) {\n super();\n /** Height of one line of text (in pixels). */\n this.textHeight = 0;\n this.context2D = context;\n if (!context.canvas) {\n this.canvas = {\n width: CanvasContext.WIDTH,\n height: CanvasContext.HEIGHT,\n };\n }\n else {\n this.canvas = context.canvas;\n }\n }\n static get WIDTH() {\n return 600;\n }\n static get HEIGHT() {\n return 400;\n }\n static get CANVAS_BROWSER_SIZE_LIMIT() {\n return 32767; // Chrome/Firefox. Could be determined more precisely by npm module canvas-size.\n }\n /**\n * Ensure that width and height do not exceed the browser limit.\n * @returns array of [width, height] clamped to the browser limit.\n */\n static sanitizeCanvasDims(width, height) {\n const limit = this.CANVAS_BROWSER_SIZE_LIMIT;\n if (Math.max(width, height) > limit) {\n warn('Canvas dimensions exceed browser limit. Cropping to ' + limit);\n if (width > limit) {\n width = limit;\n }\n if (height > limit) {\n height = limit;\n }\n }\n return [width, height];\n }\n /**\n * Set all pixels to transparent black rgba(0,0,0,0).\n */\n clear() {\n this.context2D.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n // eslint-disable-next-line\n openGroup(cls, id, attrs) {\n // Containers not implemented.\n }\n closeGroup() {\n // Containers not implemented.\n }\n // eslint-disable-next-line\n add(child) {\n // Containers not implemented.\n }\n setFillStyle(style) {\n this.context2D.fillStyle = style;\n return this;\n }\n /** CanvasContext ignores `setBackgroundFillStyle()`. */\n // eslint-disable-next-line\n setBackgroundFillStyle(style) {\n // DO NOTHING\n return this;\n }\n setStrokeStyle(style) {\n this.context2D.strokeStyle = style;\n return this;\n }\n setShadowColor(color) {\n this.context2D.shadowColor = color;\n return this;\n }\n setShadowBlur(blur) {\n // CanvasRenderingContext2D does not scale the shadow blur by the current\n // transform, so we have to do it manually. We assume uniform scaling\n // (though allow for rotation) because the blur can only be scaled\n // uniformly anyway.\n const t = this.context2D.getTransform();\n const scale = Math.sqrt(t.a * t.a + t.b * t.b + t.c * t.c + t.d * t.d);\n this.context2D.shadowBlur = scale * blur;\n return this;\n }\n setLineWidth(width) {\n this.context2D.lineWidth = width;\n return this;\n }\n setLineCap(capType) {\n this.context2D.lineCap = capType;\n return this;\n }\n setLineDash(dash) {\n this.context2D.setLineDash(dash);\n return this;\n }\n scale(x, y) {\n this.context2D.scale(x, y);\n return this;\n }\n resize(width, height) {\n const canvas = this.context2D.canvas;\n const devicePixelRatio = globalObject().devicePixelRatio || 1;\n // Scale the canvas size by the device pixel ratio clamping to the maximum supported size.\n [width, height] = CanvasContext.sanitizeCanvasDims(width * devicePixelRatio, height * devicePixelRatio);\n // Divide back down by the pixel ratio and convert to integers.\n width = (width / devicePixelRatio) | 0;\n height = (height / devicePixelRatio) | 0;\n canvas.width = width * devicePixelRatio;\n canvas.height = height * devicePixelRatio;\n // The canvas could be an instance of either HTMLCanvasElement or an OffscreenCanvas.\n // Only HTMLCanvasElement has a style attribute.\n if (isHTMLCanvas(canvas)) {\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n }\n return this.scale(devicePixelRatio, devicePixelRatio);\n }\n rect(x, y, width, height) {\n this.context2D.rect(x, y, width, height);\n return this;\n }\n fillRect(x, y, width, height) {\n this.context2D.fillRect(x, y, width, height);\n return this;\n }\n /**\n * Set the pixels in a rectangular area to transparent black rgba(0,0,0,0).\n */\n clearRect(x, y, width, height) {\n this.context2D.clearRect(x, y, width, height);\n return this;\n }\n beginPath() {\n this.context2D.beginPath();\n return this;\n }\n moveTo(x, y) {\n this.context2D.moveTo(x, y);\n return this;\n }\n lineTo(x, y) {\n this.context2D.lineTo(x, y);\n return this;\n }\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\n this.context2D.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n return this;\n }\n quadraticCurveTo(cpx, cpy, x, y) {\n this.context2D.quadraticCurveTo(cpx, cpy, x, y);\n return this;\n }\n arc(x, y, radius, startAngle, endAngle, counterclockwise) {\n this.context2D.arc(x, y, radius, startAngle, endAngle, counterclockwise);\n return this;\n }\n fill() {\n this.context2D.fill();\n return this;\n }\n stroke() {\n this.context2D.stroke();\n return this;\n }\n closePath() {\n this.context2D.closePath();\n return this;\n }\n measureText(text) {\n const metrics = this.context2D.measureText(text);\n let y = 0;\n let height = 0;\n if (metrics.fontBoundingBoxAscent) {\n y = -metrics.fontBoundingBoxAscent;\n height = metrics.fontBoundingBoxDescent + metrics.fontBoundingBoxAscent;\n }\n else {\n y = -metrics.actualBoundingBoxAscent;\n height = metrics.actualBoundingBoxDescent + metrics.actualBoundingBoxAscent;\n }\n // Return x, y, width & height in the same manner as svg getBBox\n return {\n x: 0,\n y: y,\n width: metrics.width,\n height: height,\n };\n }\n fillText(text, x, y) {\n this.context2D.fillText(text, x, y);\n return this;\n }\n save() {\n this.context2D.save();\n return this;\n }\n restore() {\n this.context2D.restore();\n return this;\n }\n set fillStyle(style) {\n this.context2D.fillStyle = style;\n }\n get fillStyle() {\n return this.context2D.fillStyle;\n }\n set strokeStyle(style) {\n this.context2D.strokeStyle = style;\n }\n get strokeStyle() {\n return this.context2D.strokeStyle;\n }\n /**\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n */\n setFont(f, size, weight, style) {\n const fontInfo = Font.validate(f, size, weight, style);\n this.context2D.font = Font.toCSSString(fontInfo);\n this.textHeight = Font.convertSizeToPixelValue(fontInfo.size);\n return this;\n }\n /** Return a string of the form `'italic bold 15pt Arial'` */\n getFont() {\n return this.context2D.font;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// @author Gregory Ristow (2015)\nimport { Font, FontStyle, FontWeight } from './font';\nimport { RenderContext } from './rendercontext';\nimport { normalizeAngle, prefix, RuntimeError } from './util';\n/** For a particular element type (e.g., rect), we will not apply certain presentation attributes. */\nconst ATTRIBUTES_TO_IGNORE = {\n path: {\n x: true,\n y: true,\n width: true,\n height: true,\n 'font-family': true,\n 'font-weight': true,\n 'font-style': true,\n 'font-size': true,\n },\n rect: {\n 'font-family': true,\n 'font-weight': true,\n 'font-style': true,\n 'font-size': true,\n },\n text: {\n width: true,\n height: true,\n },\n};\n/** Create the SVG in the SVG namespace. */\nconst SVG_NS = 'http://www.w3.org/2000/svg';\nconst TWO_PI = 2 * Math.PI;\nclass MeasureTextCache {\n constructor() {\n // The cache is keyed first by the text string, then by the font attributes\n // joined together.\n this.cache = {};\n }\n lookup(text, svg, attributes) {\n let entries = this.cache[text];\n if (entries === undefined) {\n entries = {};\n this.cache[text] = entries;\n }\n const family = attributes['font-family'];\n const size = attributes['font-size'];\n const weight = attributes['font-weight'];\n const style = attributes['font-style'];\n const key = `${family}%${size}%${weight}%${style}`;\n let entry = entries[key];\n if (entry === undefined) {\n entry = this.measureImpl(text, svg, attributes);\n entries[key] = entry;\n }\n return entry;\n }\n measureImpl(text, svg, attributes) {\n let txt = this.txt;\n if (!txt) {\n // Create the SVG text element that will be used to measure text in the event\n // of a cache miss.\n txt = document.createElementNS(SVG_NS, 'text');\n this.txt = txt;\n }\n txt.textContent = text;\n txt.setAttributeNS(null, 'font-family', attributes['font-family']);\n txt.setAttributeNS(null, 'font-size', attributes['font-size']);\n txt.setAttributeNS(null, 'font-style', attributes['font-style']);\n txt.setAttributeNS(null, 'font-weight', attributes['font-weight']);\n svg.appendChild(txt);\n const bbox = txt.getBBox();\n svg.removeChild(txt);\n return { x: bbox.x, y: bbox.y, width: bbox.width, height: bbox.height };\n }\n}\n/**\n * SVG rendering context with an API similar to CanvasRenderingContext2D.\n */\nexport class SVGContext extends RenderContext {\n constructor(element) {\n super();\n this.width = 0;\n this.height = 0;\n this.backgroundFillStyle = 'white';\n /** Formatted as CSS font shorthand (e.g., 'italic bold 12pt Arial') */\n this.fontCSSString = '';\n this.element = element;\n // Create a SVG element and add it to the container element.\n const svg = this.create('svg');\n this.element.appendChild(svg);\n this.svg = svg;\n this.parent = this.svg;\n this.groups = [this.svg];\n this.path = '';\n this.pen = { x: NaN, y: NaN };\n this.lineWidth = 1.0;\n const defaultFontAttributes = {\n 'font-family': Font.SANS_SERIF,\n 'font-size': Font.SIZE + 'pt',\n 'font-weight': FontWeight.NORMAL,\n 'font-style': FontStyle.NORMAL,\n };\n this.state = Object.assign({ scale: { x: 1, y: 1 } }, defaultFontAttributes);\n this.attributes = Object.assign({ 'stroke-width': 0.3, 'stroke-dasharray': 'none', fill: 'black', stroke: 'black' }, defaultFontAttributes);\n this.shadow_attributes = {\n width: 0,\n color: 'black',\n };\n this.state_stack = [];\n }\n create(svgElementType) {\n return document.createElementNS(SVG_NS, svgElementType);\n }\n // Allow grouping elements in containers for interactivity.\n openGroup(cls, id, attrs) {\n const group = this.create('g');\n this.groups.push(group);\n this.parent.appendChild(group);\n this.parent = group;\n if (cls)\n group.setAttribute('class', prefix(cls));\n if (id)\n group.setAttribute('id', prefix(id));\n if (attrs && attrs.pointerBBox) {\n group.setAttribute('pointer-events', 'bounding-box');\n }\n return group;\n }\n closeGroup() {\n this.groups.pop();\n this.parent = this.groups[this.groups.length - 1];\n }\n add(elem) {\n this.parent.appendChild(elem);\n }\n setFillStyle(style) {\n this.attributes.fill = style;\n return this;\n }\n /**\n * Used to set the fill color for `clearRect()`. This allows us to simulate\n * cutting a \"hole\" into the SVG drawing.\n */\n setBackgroundFillStyle(style) {\n this.backgroundFillStyle = style;\n return this;\n }\n setStrokeStyle(style) {\n this.attributes.stroke = style;\n return this;\n }\n setShadowColor(color) {\n this.shadow_attributes.color = color;\n return this;\n }\n /**\n * @param blur A non-negative float specifying the level of shadow blur, where 0\n * represents no blur and larger numbers represent increasingly more blur.\n * @returns this\n */\n setShadowBlur(blur) {\n this.shadow_attributes.width = blur;\n return this;\n }\n /**\n * @param width\n * @returns this\n */\n setLineWidth(width) {\n this.attributes['stroke-width'] = width;\n this.lineWidth = width;\n return this;\n }\n /**\n * @param lineDash an array of integers in the form of [dash, space, dash, space, etc...]\n * @returns this\n *\n * See: [SVG `stroke-dasharray` attribute](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray)\n */\n setLineDash(lineDash) {\n if (Object.prototype.toString.call(lineDash) === '[object Array]') {\n this.attributes['stroke-dasharray'] = lineDash.join(',');\n return this;\n }\n else {\n throw new RuntimeError('ArgumentError', 'lineDash must be an array of integers.');\n }\n }\n /**\n * @param capType\n * @returns this\n */\n setLineCap(capType) {\n this.attributes['stroke-linecap'] = capType;\n return this;\n }\n // ### Sizing & Scaling Methods:\n // TODO (GCR): See note at scale() -- separate our internal\n // conception of pixel-based width/height from the style.width\n // and style.height properties eventually to allow users to\n // apply responsive sizing attributes to the SVG.\n resize(width, height) {\n this.width = width;\n this.height = height;\n this.element.style.width = width.toString();\n this.svg.style.width = width.toString();\n this.svg.style.height = height.toString();\n const attributes = {\n width,\n height,\n };\n this.applyAttributes(this.svg, attributes);\n this.scale(this.state.scale.x, this.state.scale.y);\n return this;\n }\n scale(x, y) {\n // uses viewBox to scale\n // TODO (GCR): we may at some point want to distinguish the\n // style.width / style.height properties that are applied to\n // the SVG object from our internal conception of the SVG\n // width/height. This would allow us to create automatically\n // scaling SVG's that filled their containers, for instance.\n //\n // As this isn't implemented in Canvas contexts,\n // I've left as is for now, but in using the viewBox to\n // handle internal scaling, am trying to make it possible\n // for us to eventually move in that direction.\n this.state.scale = { x, y };\n const visibleWidth = this.width / x;\n const visibleHeight = this.height / y;\n this.setViewBox(0, 0, visibleWidth, visibleHeight);\n return this;\n }\n /**\n * 1 arg: string in the \"x y w h\" format\n * 4 args: x:number, y:number, w:number, h:number\n */\n setViewBox(viewBox_or_minX, minY, width, height) {\n if (typeof viewBox_or_minX === 'string') {\n this.svg.setAttribute('viewBox', viewBox_or_minX);\n }\n else {\n const viewBoxString = viewBox_or_minX + ' ' + minY + ' ' + width + ' ' + height;\n this.svg.setAttribute('viewBox', viewBoxString);\n }\n }\n // ### Drawing helper methods:\n applyAttributes(element, attributes) {\n const attrNamesToIgnore = ATTRIBUTES_TO_IGNORE[element.nodeName];\n for (const attrName in attributes) {\n if (attrNamesToIgnore && attrNamesToIgnore[attrName]) {\n continue;\n }\n element.setAttributeNS(null, attrName, attributes[attrName]);\n }\n return element;\n }\n // ### Shape & Path Methods:\n clear() {\n // Clear the SVG by removing all inner children.\n // (This approach is usually slightly more efficient\n // than removing the old SVG & adding a new one to\n // the container element, since it does not cause the\n // container to resize twice. Also, the resize\n // triggered by removing the entire SVG can trigger\n // a touchcancel event when the element resizes away\n // from a touch point.)\n while (this.svg.lastChild) {\n this.svg.removeChild(this.svg.lastChild);\n }\n // Replace the viewbox attribute we just removed.\n this.scale(this.state.scale.x, this.state.scale.y);\n }\n // ## Rectangles:\n rect(x, y, width, height, attributes) {\n // Avoid invalid negative height attributes by flipping the rectangle on its head:\n if (height < 0) {\n y += height;\n height *= -1;\n }\n const rectangle = this.create('rect');\n attributes = attributes !== null && attributes !== void 0 ? attributes : { fill: 'none', 'stroke-width': this.lineWidth, stroke: 'black' };\n this.applyAttributes(rectangle, Object.assign({ x, y, width, height }, attributes));\n this.add(rectangle);\n return this;\n }\n fillRect(x, y, width, height) {\n const attributes = { fill: this.attributes.fill };\n this.rect(x, y, width, height, attributes);\n return this;\n }\n clearRect(x, y, width, height) {\n // Currently this fills a rect with the backgroundFillStyle, rather\n // than \"cut a hole\" into the existing shapes.\n //\n // Since tabNote seems to be the only module that makes use of this\n // it may be worth creating a separate tabStave that would\n // draw lines around locations of tablature fingering.\n this.rect(x, y, width, height, { 'stroke-width': 0, fill: this.backgroundFillStyle });\n return this;\n }\n // ## Paths:\n beginPath() {\n this.path = '';\n this.pen.x = NaN;\n this.pen.y = NaN;\n return this;\n }\n moveTo(x, y) {\n this.path += 'M' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n lineTo(x, y) {\n this.path += 'L' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this.path += 'C' + x1 + ' ' + y1 + ',' + x2 + ' ' + y2 + ',' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this.path += 'Q' + x1 + ' ' + y1 + ',' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n arc(x, y, radius, startAngle, endAngle, counterclockwise) {\n const x0 = x + radius * Math.cos(startAngle);\n const y0 = y + radius * Math.sin(startAngle);\n // svg behavior different from canvas. Don't normalize angles if\n // we are drawing a circle because they both normalize to 0\n const tmpStartTest = normalizeAngle(startAngle);\n const tmpEndTest = normalizeAngle(endAngle);\n if ((!counterclockwise && endAngle - startAngle >= TWO_PI) ||\n (counterclockwise && startAngle - endAngle >= TWO_PI) ||\n tmpStartTest === tmpEndTest) {\n const x1 = x + radius * Math.cos(startAngle + Math.PI);\n const y1 = y + radius * Math.sin(startAngle + Math.PI);\n // There's no way to specify a completely circular arc in SVG so we have to\n // use two semi-circular arcs.\n this.path += `M${x0} ${y0} A${radius} ${radius} 0 0 0 ${x1} ${y1} `;\n this.path += `A${radius} ${radius} 0 0 0 ${x0} ${y0}`;\n this.pen.x = x0;\n this.pen.y = y0;\n }\n else {\n const x1 = x + radius * Math.cos(endAngle);\n const y1 = y + radius * Math.sin(endAngle);\n startAngle = tmpStartTest;\n endAngle = tmpEndTest;\n let large;\n if (Math.abs(endAngle - startAngle) < Math.PI) {\n large = counterclockwise;\n }\n else {\n large = !counterclockwise;\n }\n if (startAngle > endAngle) {\n large = !large;\n }\n const sweep = !counterclockwise;\n this.path += `M${x0} ${y0} A${radius} ${radius} 0 ${+large} ${+sweep} ${x1} ${y1}`;\n this.pen.x = x1;\n this.pen.y = y1;\n }\n return this;\n }\n closePath() {\n this.path += 'Z';\n return this;\n }\n getShadowStyle() {\n const sa = this.shadow_attributes;\n // A CSS drop-shadow filter blur looks different than a canvas shadowBlur\n // of the same radius, so we scale the drop-shadow radius here to make it\n // look close to the canvas shadow.\n return `filter: drop-shadow(0 0 ${sa.width / 1.5}px ${sa.color})`;\n }\n fill(attributes) {\n const path = this.create('path');\n if (typeof attributes === 'undefined') {\n attributes = Object.assign(Object.assign({}, this.attributes), { stroke: 'none' });\n }\n attributes.d = this.path;\n if (this.shadow_attributes.width > 0) {\n attributes.style = this.getShadowStyle();\n }\n this.applyAttributes(path, attributes);\n this.add(path);\n return this;\n }\n stroke() {\n const path = this.create('path');\n const attributes = Object.assign(Object.assign({}, this.attributes), { fill: 'none', 'stroke-width': this.lineWidth, d: this.path });\n if (this.shadow_attributes.width > 0) {\n attributes.style = this.getShadowStyle();\n }\n this.applyAttributes(path, attributes);\n this.add(path);\n return this;\n }\n // ## Text Methods:\n measureText(text) {\n return SVGContext.measureTextCache.lookup(text, this.svg, this.attributes);\n }\n fillText(text, x, y) {\n if (!text || text.length <= 0) {\n return this;\n }\n const attributes = Object.assign(Object.assign({}, this.attributes), { stroke: 'none', x,\n y });\n const txt = this.create('text');\n txt.textContent = text;\n this.applyAttributes(txt, attributes);\n this.add(txt);\n return this;\n }\n // TODO: State should be deep-copied.\n save() {\n this.state_stack.push({\n state: {\n 'font-family': this.state['font-family'],\n 'font-weight': this.state['font-weight'],\n 'font-style': this.state['font-style'],\n 'font-size': this.state['font-size'],\n scale: this.state.scale,\n },\n attributes: {\n 'font-family': this.attributes['font-family'],\n 'font-weight': this.attributes['font-weight'],\n 'font-style': this.attributes['font-style'],\n 'font-size': this.attributes['font-size'],\n fill: this.attributes.fill,\n stroke: this.attributes.stroke,\n 'stroke-width': this.attributes['stroke-width'],\n 'stroke-dasharray': this.attributes['stroke-dasharray'],\n },\n shadow_attributes: {\n width: this.shadow_attributes.width,\n color: this.shadow_attributes.color,\n },\n lineWidth: this.lineWidth,\n });\n return this;\n }\n // TODO: State should be deep-restored.\n restore() {\n const savedState = this.state_stack.pop();\n if (savedState) {\n const state = savedState;\n this.state['font-family'] = state.state['font-family'];\n this.state['font-weight'] = state.state['font-weight'];\n this.state['font-style'] = state.state['font-style'];\n this.state['font-size'] = state.state['font-size'];\n this.state.scale = state.state.scale;\n this.attributes['font-family'] = state.attributes['font-family'];\n this.attributes['font-weight'] = state.attributes['font-weight'];\n this.attributes['font-style'] = state.attributes['font-style'];\n this.attributes['font-size'] = state.attributes['font-size'];\n this.attributes.fill = state.attributes.fill;\n this.attributes.stroke = state.attributes.stroke;\n this.attributes['stroke-width'] = state.attributes['stroke-width'];\n this.attributes['stroke-dasharray'] = state.attributes['stroke-dasharray'];\n this.shadow_attributes.width = state.shadow_attributes.width;\n this.shadow_attributes.color = state.shadow_attributes.color;\n this.lineWidth = state.lineWidth;\n }\n return this;\n }\n set fillStyle(style) {\n this.setFillStyle(style);\n }\n get fillStyle() {\n return this.attributes.fill;\n }\n set strokeStyle(style) {\n this.setStrokeStyle(style);\n }\n get strokeStyle() {\n return this.attributes.stroke;\n }\n /**\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900). It is inserted\n * into the font-weight attribute (e.g., font-weight=\"bold\")\n * @param style is a string (e.g., 'italic', 'normal') that is inserted into the\n * font-style attribute (e.g., font-style=\"italic\")\n */\n setFont(f, size, weight, style) {\n const fontInfo = Font.validate(f, size, weight, style);\n this.fontCSSString = Font.toCSSString(fontInfo);\n const fontAttributes = {\n 'font-family': fontInfo.family,\n 'font-size': fontInfo.size,\n 'font-weight': fontInfo.weight,\n 'font-style': fontInfo.style,\n };\n this.attributes = Object.assign(Object.assign({}, this.attributes), fontAttributes);\n this.state = Object.assign(Object.assign({}, this.state), fontAttributes);\n return this;\n }\n /** Return a string of the form `'italic bold 15pt Arial'` */\n getFont() {\n return this.fontCSSString;\n }\n}\nSVGContext.measureTextCache = new MeasureTextCache();\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { CanvasContext } from './canvascontext';\nimport { SVGContext } from './svgcontext';\nimport { isRenderContext } from './typeguard';\nimport { RuntimeError } from './util';\nimport { isHTMLCanvas, isHTMLDiv } from './web';\nexport var RendererBackends;\n(function (RendererBackends) {\n RendererBackends[RendererBackends[\"CANVAS\"] = 1] = \"CANVAS\";\n RendererBackends[RendererBackends[\"SVG\"] = 2] = \"SVG\";\n})(RendererBackends || (RendererBackends = {}));\n// End of line types\nexport var RendererLineEndType;\n(function (RendererLineEndType) {\n RendererLineEndType[RendererLineEndType[\"NONE\"] = 1] = \"NONE\";\n RendererLineEndType[RendererLineEndType[\"UP\"] = 2] = \"UP\";\n RendererLineEndType[RendererLineEndType[\"DOWN\"] = 3] = \"DOWN\";\n})(RendererLineEndType || (RendererLineEndType = {}));\n/**\n * Support Canvas & SVG rendering contexts.\n */\nexport class Renderer {\n constructor(arg0, arg1) {\n if (isRenderContext(arg0)) {\n // The user has provided what looks like a RenderContext, let's just use it.\n this.ctx = arg0;\n }\n else {\n if (arg1 === undefined) {\n // The backend must be specified if the render context isn't directly provided.\n throw new RuntimeError('InvalidArgument', 'Missing backend argument');\n }\n const backend = arg1;\n let element;\n if (typeof arg0 == 'string') {\n const maybeElement = document.getElementById(arg0);\n if (!maybeElement) {\n throw new RuntimeError('BadElementId', `Can't find element with ID \"${maybeElement}\"`);\n }\n element = maybeElement;\n }\n else {\n element = arg0;\n }\n // Verify backend and create context\n if (backend === Renderer.Backends.CANVAS) {\n if (!isHTMLCanvas(element)) {\n throw new RuntimeError('BadElement', 'CANVAS context requires an HTMLCanvasElement.');\n }\n const context = element.getContext('2d');\n if (!context) {\n throw new RuntimeError('BadElement', \"Can't get canvas context\");\n }\n this.ctx = new CanvasContext(context);\n }\n else if (backend === Renderer.Backends.SVG) {\n if (!isHTMLDiv(element)) {\n throw new RuntimeError('BadElement', 'SVG context requires an HTMLDivElement.');\n }\n this.ctx = new SVGContext(element);\n }\n else {\n throw new RuntimeError('InvalidBackend', `No support for backend: ${backend}`);\n }\n }\n }\n static buildContext(elementId, backend, width, height, background = '#FFF') {\n const renderer = new Renderer(elementId, backend);\n if (width && height) {\n renderer.resize(width, height);\n }\n const ctx = renderer.getContext();\n ctx.setBackgroundFillStyle(background);\n Renderer.lastContext = ctx;\n return ctx;\n }\n static getCanvasContext(elementId, width, height, background) {\n return Renderer.buildContext(elementId, Renderer.Backends.CANVAS, width, height, background);\n }\n static getSVGContext(elementId, width, height, background) {\n return Renderer.buildContext(elementId, Renderer.Backends.SVG, width, height, background);\n }\n // Draw a dashed line (horizontal, vertical or diagonal\n // dashPattern = [3,3] draws a 3 pixel dash followed by a three pixel space.\n // setting the second number to 0 draws a solid line.\n static drawDashedLine(context, fromX, fromY, toX, toY, dashPattern) {\n context.beginPath();\n const dx = toX - fromX;\n const dy = toY - fromY;\n const angle = Math.atan2(dy, dx);\n let x = fromX;\n let y = fromY;\n context.moveTo(fromX, fromY);\n let idx = 0;\n let draw = true;\n while (!((dx < 0 ? x <= toX : x >= toX) && (dy < 0 ? y <= toY : y >= toY))) {\n const dashLength = dashPattern[idx++ % dashPattern.length];\n const nx = x + Math.cos(angle) * dashLength;\n x = dx < 0 ? Math.max(toX, nx) : Math.min(toX, nx);\n const ny = y + Math.sin(angle) * dashLength;\n y = dy < 0 ? Math.max(toY, ny) : Math.min(toY, ny);\n if (draw) {\n context.lineTo(x, y);\n }\n else {\n context.moveTo(x, y);\n }\n draw = !draw;\n }\n context.closePath();\n context.stroke();\n }\n resize(width, height) {\n this.ctx.resize(width, height);\n return this;\n }\n getContext() {\n return this.ctx;\n }\n}\nRenderer.Backends = RendererBackends;\nRenderer.LineEndType = RendererLineEndType;\n// Used by vexflow_test_helpers.ts\n// Should this be private?\n// Can we do this in a cleaner way?\nRenderer.lastContext = undefined;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport var TextJustification;\n(function (TextJustification) {\n TextJustification[TextJustification[\"LEFT\"] = 1] = \"LEFT\";\n TextJustification[TextJustification[\"CENTER\"] = 2] = \"CENTER\";\n TextJustification[TextJustification[\"RIGHT\"] = 3] = \"RIGHT\";\n})(TextJustification || (TextJustification = {}));\n/**\n * `TextNote` is a notation element that is positioned in time. Generally\n * meant for objects that sit above/below the staff and inline with each other.\n * `TextNote` has to be assigned to a `Stave` before rendering by means of `setStave`.\n * Examples of this would be such as dynamics, lyrics, chord changes, etc.\n */\nexport class TextNote extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n this.text = noteStruct.text || '';\n this.superscript = noteStruct.superscript;\n this.subscript = noteStruct.subscript;\n this.setFont(noteStruct.font);\n this.line = noteStruct.line || 0;\n this.smooth = noteStruct.smooth || false;\n this.ignore_ticks = noteStruct.ignore_ticks || false;\n this.justification = TextJustification.LEFT;\n // Determine and set initial note width. Note that the text width is\n // an approximation and isn't very accurate. The only way to accurately\n // measure the length of text is with `CanvasRenderingContext2D.measureText()`.\n if (noteStruct.glyph) {\n const struct = TextNote.GLYPHS[noteStruct.glyph];\n if (!struct)\n throw new RuntimeError('Invalid glyph type: ' + noteStruct.glyph);\n this.glyph = new Glyph(struct.code, 40, { category: 'textNote' });\n this.setWidth(this.glyph.getMetrics().width);\n }\n else {\n this.glyph = undefined;\n }\n }\n static get CATEGORY() {\n return Category.TextNote;\n }\n /** Glyph data. */\n static get GLYPHS() {\n return {\n segno: {\n code: 'segno',\n },\n tr: {\n code: 'ornamentTrill',\n },\n mordent: {\n code: 'ornamentMordent',\n },\n mordent_upper: {\n code: 'ornamentShortTrill',\n },\n mordent_lower: {\n code: 'ornamentMordent',\n },\n f: {\n code: 'dynamicForte',\n },\n p: {\n code: 'dynamicPiano',\n },\n m: {\n code: 'dynamicMezzo',\n },\n s: {\n code: 'dynamicSforzando',\n },\n z: {\n code: 'dynamicZ',\n },\n coda: {\n code: 'coda',\n },\n pedal_open: {\n code: 'keyboardPedalPed',\n },\n pedal_close: {\n code: 'keyboardPedalUp',\n },\n caesura_straight: {\n code: 'caesura',\n },\n caesura_curved: {\n code: 'caesuraCurved',\n },\n breath: {\n code: 'breathMarkComma',\n },\n tick: {\n code: 'breathMarkTick',\n },\n turn: {\n code: 'ornamentTurn',\n },\n turn_inverted: {\n code: 'ornamentTurnSlash',\n },\n };\n }\n /** Set the horizontal justification of the TextNote. */\n setJustification(just) {\n this.justification = just;\n return this;\n }\n /** Set the Stave line on which the note should be placed. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Return the Stave line on which the TextNote is placed. */\n getLine() {\n return this.line;\n }\n /** Return the unformatted text of this TextNote. */\n getText() {\n return this.text;\n }\n /** Pre-render formatting. */\n preFormat() {\n if (this.preFormatted)\n return;\n const tickContext = this.checkTickContext(`Can't preformat without a TickContext.`);\n if (this.smooth) {\n this.setWidth(0);\n }\n else {\n if (this.glyph) {\n // Width already set.\n }\n else {\n const ctx = this.checkContext();\n ctx.setFont(this.textFont);\n this.setWidth(ctx.measureText(this.text).width);\n }\n }\n if (this.justification === TextJustification.CENTER) {\n this.leftDisplacedHeadPx = this.width / 2;\n }\n else if (this.justification === TextJustification.RIGHT) {\n this.leftDisplacedHeadPx = this.width;\n }\n // We reposition to the center of the note head\n this.rightDisplacedHeadPx = tickContext.getMetrics().glyphPx / 2;\n this.preFormatted = true;\n }\n /**\n * Renders the TextNote.\n * `TextNote` has to be assigned to a `Stave` before rendering by means of `setStave`.\n */\n draw() {\n const ctx = this.checkContext();\n const stave = this.checkStave();\n const tickContext = this.checkTickContext(`Can't draw without a TickContext.`);\n this.setRendered();\n // Reposition to center of note head\n let x = this.getAbsoluteX() + tickContext.getMetrics().glyphPx / 2;\n // Align based on tick-context width.\n const width = this.getWidth();\n if (this.justification === TextJustification.CENTER) {\n x -= width / 2;\n }\n else if (this.justification === TextJustification.RIGHT) {\n x -= width;\n }\n let y;\n if (this.glyph) {\n y = stave.getYForLine(this.line + -3);\n this.glyph.render(ctx, x, y);\n }\n else {\n y = stave.getYForLine(this.line + -3);\n this.applyStyle(ctx);\n ctx.setFont(this.textFont);\n ctx.fillText(this.text, x, y);\n const height = ctx.measureText(this.text).height;\n // We called this.setFont(...) in the constructor, so we know this.textFont is available.\n // eslint-disable-next-line\n const { family, size, weight, style } = this.textFont;\n // Scale the font size by 1/1.3.\n const smallerFontSize = Font.scaleSize(size, 0.769231);\n if (this.superscript) {\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.superscript, x + this.width + 2, y - height / 2.2);\n }\n if (this.subscript) {\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.subscript, x + this.width + 2, y + height / 2.2 - 1);\n }\n this.restoreStyle(ctx);\n }\n }\n}\nTextNote.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 12,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\nTextNote.Justification = TextJustification;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier } from './stavemodifier';\nimport { Category } from './typeguard';\nexport var VoltaType;\n(function (VoltaType) {\n VoltaType[VoltaType[\"NONE\"] = 1] = \"NONE\";\n VoltaType[VoltaType[\"BEGIN\"] = 2] = \"BEGIN\";\n VoltaType[VoltaType[\"MID\"] = 3] = \"MID\";\n VoltaType[VoltaType[\"END\"] = 4] = \"END\";\n VoltaType[VoltaType[\"BEGIN_END\"] = 5] = \"BEGIN_END\";\n})(VoltaType || (VoltaType = {}));\nexport class Volta extends StaveModifier {\n constructor(type, number, x, y_shift) {\n super();\n this.volta = type;\n this.x = x;\n this.y_shift = y_shift;\n this.number = number;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.Volta;\n }\n static get type() {\n return VoltaType;\n }\n setShiftY(y) {\n this.y_shift = y;\n return this;\n }\n draw(stave, x) {\n const ctx = stave.checkContext();\n this.setRendered();\n let width = stave.getWidth() - x; // don't include x (offset) for width\n const top_y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n const vert_height = 1.5 * stave.getSpacingBetweenLines();\n switch (this.volta) {\n case VoltaType.BEGIN:\n ctx.fillRect(this.x + x, top_y, 1, vert_height);\n break;\n case VoltaType.END:\n width -= 5;\n ctx.fillRect(this.x + x + width, top_y, 1, vert_height);\n break;\n case VoltaType.BEGIN_END:\n width -= 3;\n ctx.fillRect(this.x + x, top_y, 1, vert_height);\n ctx.fillRect(this.x + x + width, top_y, 1, vert_height);\n break;\n default:\n break;\n }\n // If the beginning of a volta, draw measure number\n if (this.volta === VoltaType.BEGIN || this.volta === VoltaType.BEGIN_END) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText(this.number, this.x + x + 5, top_y + 15);\n ctx.restore();\n }\n ctx.fillRect(this.x + x, top_y, width, 1);\n return this;\n }\n}\nVolta.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 9,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns\n//\n// This file implements the `StringNumber` class which renders string\n// number annotations beside notes.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Renderer } from './renderer';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isStaveNote, isStemmableNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StringNumber extends Modifier {\n constructor(number) {\n super();\n this.string_number = number;\n this.position = Modifier.Position.ABOVE; // Default position above stem or note head\n this.x_shift = 0;\n this.y_shift = 0;\n this.text_line = 0;\n this.stem_offset = 0;\n this.x_offset = 0; // Horizontal offset from default\n this.y_offset = 0; // Vertical offset from default\n this.dashed = true; // true - draw dashed extension false - no extension\n this.leg = Renderer.LineEndType.NONE; // draw upward/downward leg at the of extension line\n this.radius = 8;\n this.drawCircle = true;\n this.setWidth(this.radius * 2 + 4);\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StringNumber;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.stringNumber;\n }\n // ## Static Methods\n // Arrange string numbers inside a `ModifierContext`\n static format(nums, state) {\n const left_shift = state.left_shift;\n const right_shift = state.right_shift;\n const num_spacing = 1;\n if (!nums || nums.length === 0)\n return false;\n const nums_list = [];\n let prev_note = null;\n let shift_left = 0;\n let shift_right = 0;\n const modLines = 0;\n for (let i = 0; i < nums.length; ++i) {\n const num = nums[i];\n const note = num.getNote();\n const pos = num.getPosition();\n if (!isStaveNote(note)) {\n throw new RuntimeError('NoStaveNote');\n }\n const index = num.checkIndex();\n const props = note.getKeyProps()[index];\n const mc = note.getModifierContext();\n const verticalSpaceNeeded = (num.radius * 2) / Tables.STAVE_LINE_DISTANCE + 0.5;\n if (mc) {\n if (pos === ModifierPosition.ABOVE) {\n num.text_line = mc.getState().top_text_line;\n state.top_text_line += verticalSpaceNeeded;\n }\n else if (pos === ModifierPosition.BELOW) {\n num.text_line = mc.getState().text_line;\n state.text_line += verticalSpaceNeeded;\n }\n }\n if (note !== prev_note) {\n for (let n = 0; n < note.keys.length; ++n) {\n if (left_shift === 0) {\n shift_left = Math.max(note.getLeftDisplacedHeadPx(), shift_left);\n }\n if (right_shift === 0) {\n shift_right = Math.max(note.getRightDisplacedHeadPx(), shift_right);\n }\n }\n prev_note = note;\n }\n const glyphLine = modLines === 0 ? props.line : modLines;\n nums_list.push({\n pos,\n note,\n num,\n line: glyphLine,\n shiftL: shift_left,\n shiftR: shift_right,\n });\n }\n // Sort string numbers by line number.\n nums_list.sort((a, b) => b.line - a.line);\n let num_shiftR = 0;\n let x_widthL = 0;\n let x_widthR = 0;\n let last_line = null;\n let last_note = null;\n for (let i = 0; i < nums_list.length; ++i) {\n let num_shift = 0;\n const note = nums_list[i].note;\n const pos = nums_list[i].pos;\n const num = nums_list[i].num;\n const line = nums_list[i].line;\n const shiftR = nums_list[i].shiftR;\n // Reset the position of the string number every line.\n if (line !== last_line || note !== last_note) {\n num_shiftR = right_shift + shiftR;\n }\n const num_width = num.getWidth() + num_spacing;\n if (pos === Modifier.Position.LEFT) {\n num.setXShift(left_shift);\n num_shift = shift_left + num_width; // spacing\n x_widthL = num_shift > x_widthL ? num_shift : x_widthL;\n }\n else if (pos === Modifier.Position.RIGHT) {\n num.setXShift(num_shiftR);\n num_shift += num_width; // spacing\n x_widthR = num_shift > x_widthR ? num_shift : x_widthR;\n }\n last_line = line;\n last_note = note;\n }\n state.left_shift += x_widthL;\n state.right_shift += x_widthR;\n return true;\n }\n setLineEndType(leg) {\n if (leg >= Renderer.LineEndType.NONE && leg <= Renderer.LineEndType.DOWN) {\n this.leg = leg;\n }\n return this;\n }\n setStringNumber(number) {\n this.string_number = number;\n return this;\n }\n setOffsetX(x) {\n this.x_offset = x;\n return this;\n }\n setOffsetY(y) {\n this.y_offset = y;\n return this;\n }\n setLastNote(note) {\n this.last_note = note;\n return this;\n }\n setDashed(dashed) {\n this.dashed = dashed;\n return this;\n }\n setDrawCircle(drawCircle) {\n this.drawCircle = drawCircle;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let dot_x = start.x + this.x_shift + this.x_offset;\n let stem_ext = {};\n if (note.hasStem()) {\n stem_ext = note.checkStem().getExtents();\n }\n let dot_y = start.y + this.y_shift + this.y_offset;\n switch (this.position) {\n case Modifier.Position.ABOVE:\n {\n const ys = note.getYs();\n dot_y = ys.reduce((a, b) => (a < b ? a : b));\n if (note.hasStem() && stemDirection == Stem.UP) {\n dot_y = stem_ext.topY + StringNumber.metrics.stemPadding;\n }\n dot_y -= this.radius + StringNumber.metrics.verticalPadding + this.text_line * Tables.STAVE_LINE_DISTANCE;\n }\n break;\n case Modifier.Position.BELOW:\n {\n const ys = note.getYs();\n dot_y = ys.reduce((a, b) => (a > b ? a : b));\n if (note.hasStem() && stemDirection == Stem.DOWN) {\n dot_y = stem_ext.topY - StringNumber.metrics.stemPadding;\n }\n dot_y += this.radius + StringNumber.metrics.verticalPadding + this.text_line * Tables.STAVE_LINE_DISTANCE;\n }\n break;\n case Modifier.Position.LEFT:\n dot_x -= this.radius / 2 + StringNumber.metrics.leftPadding;\n break;\n case Modifier.Position.RIGHT:\n dot_x += this.radius / 2 + StringNumber.metrics.rightPadding;\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} is invalid`);\n }\n ctx.save();\n if (this.drawCircle) {\n ctx.beginPath();\n ctx.arc(dot_x, dot_y, this.radius, 0, Math.PI * 2, false);\n ctx.setLineWidth(1.5);\n ctx.stroke();\n }\n ctx.setFont(this.textFont);\n const x = dot_x - ctx.measureText(this.string_number).width / 2;\n ctx.fillText('' + this.string_number, x, dot_y + 4.5);\n const lastNote = this.last_note;\n if (isStemmableNote(lastNote)) {\n // Only StemmableNote objects have getStemX().\n const end = lastNote.getStemX() - note.getX() + 5;\n ctx.setStrokeStyle('#000000');\n ctx.setLineCap('round');\n ctx.setLineWidth(0.6);\n if (this.dashed) {\n Renderer.drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 3]);\n }\n else {\n Renderer.drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 0]);\n }\n let len;\n let pattern;\n switch (this.leg) {\n case Renderer.LineEndType.UP:\n len = -10;\n pattern = this.dashed ? [3, 3] : [3, 0];\n Renderer.drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern);\n break;\n case Renderer.LineEndType.DOWN:\n len = 10;\n pattern = this.dashed ? [3, 3] : [3, 0];\n Renderer.drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern);\n break;\n default:\n break;\n }\n }\n ctx.restore();\n }\n}\nStringNumber.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: Font.SIZE,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns\n//\n// This file implements the `Stroke` class which renders chord strokes\n// that can be arpeggiated, brushed, rasquedo, etc.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Category, isNote, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class Stroke extends Modifier {\n constructor(type, options) {\n super();\n this.options = Object.assign({ all_voices: true }, options);\n // multi voice - span stroke across all voices if true\n this.all_voices = this.options.all_voices;\n // multi voice - end note of stroke, set in draw()\n this.type = type;\n this.position = Modifier.Position.LEFT;\n this.render_options = {\n font_scale: 38,\n };\n this.resetFont();\n this.setXShift(0);\n this.setWidth(10);\n }\n static get CATEGORY() {\n return Category.Stroke;\n }\n // Arrange strokes inside `ModifierContext`\n static format(strokes, state) {\n const left_shift = state.left_shift;\n const stroke_spacing = 0;\n if (!strokes || strokes.length === 0)\n return false;\n const strokeList = strokes.map((stroke) => {\n const note = stroke.getNote();\n const index = stroke.checkIndex();\n if (isStaveNote(note)) {\n // Only StaveNote objects have getKeyProps().\n const { line } = note.getKeyProps()[index];\n const shift = note.getLeftDisplacedHeadPx();\n return { line, shift, stroke };\n }\n else if (isTabNote(note)) {\n // Only TabNote objects have getPositions().\n const { str: string } = note.getPositions()[index];\n return { line: string, shift: 0, stroke };\n }\n else {\n throw new RuntimeError('Internal', 'Unexpected instance.');\n }\n });\n const strokeShift = left_shift;\n // There can only be one stroke .. if more than one, they overlay each other\n const xShift = strokeList.reduce((xShift, { stroke, shift }) => {\n stroke.setXShift(strokeShift + shift);\n return Math.max(stroke.getWidth() + stroke_spacing, xShift);\n }, 0);\n state.left_shift += xShift;\n return true;\n }\n getPosition() {\n return this.position;\n }\n addEndNote(note) {\n this.note_end = note;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n let ys = note.getYs();\n let topY = start.y;\n let botY = start.y;\n const x = start.x - 5;\n const line_space = note.checkStave().getSpacingBetweenLines();\n const notes = this.checkModifierContext().getMembers(note.getCategory());\n for (let i = 0; i < notes.length; i++) {\n const note = notes[i];\n if (isNote(note)) {\n // Only Note objects have getYs().\n // note is an instance of either StaveNote or TabNote.\n ys = note.getYs();\n for (let n = 0; n < ys.length; n++) {\n if (this.note === notes[i] || this.all_voices) {\n topY = Math.min(topY, ys[n]);\n botY = Math.max(botY, ys[n]);\n }\n }\n }\n }\n let arrow = '';\n let arrow_shift_x = 0;\n let arrow_y = 0;\n let text_shift_x = 0;\n let text_y = 0;\n switch (this.type) {\n case Stroke.Type.BRUSH_DOWN:\n arrow = 'arrowheadBlackUp';\n arrow_shift_x = -3;\n arrow_y = topY - line_space / 2 + 10;\n botY += line_space / 2;\n break;\n case Stroke.Type.BRUSH_UP:\n arrow = 'arrowheadBlackDown';\n arrow_shift_x = 0.5;\n arrow_y = botY + line_space / 2;\n topY -= line_space / 2;\n break;\n case Stroke.Type.ROLL_DOWN:\n case Stroke.Type.RASQUEDO_DOWN:\n arrow = 'arrowheadBlackUp';\n arrow_shift_x = -3;\n text_shift_x = this.x_shift + arrow_shift_x - 2;\n if (isStaveNote(note)) {\n topY += 1.5 * line_space;\n if ((botY - topY) % 2 !== 0) {\n botY += 0.5 * line_space;\n }\n else {\n botY += line_space;\n }\n arrow_y = topY - line_space;\n text_y = botY + line_space + 2;\n }\n else {\n topY += 1.5 * line_space;\n botY += line_space;\n arrow_y = topY - 0.75 * line_space;\n text_y = botY + 0.25 * line_space;\n }\n break;\n case Stroke.Type.ROLL_UP:\n case Stroke.Type.RASQUEDO_UP:\n arrow = 'arrowheadBlackDown';\n arrow_shift_x = -4;\n text_shift_x = this.x_shift + arrow_shift_x - 1;\n if (isStaveNote(note)) {\n arrow_y = line_space / 2;\n topY += 0.5 * line_space;\n if ((botY - topY) % 2 === 0) {\n botY += line_space / 2;\n }\n arrow_y = botY + 0.5 * line_space;\n text_y = topY - 1.25 * line_space;\n }\n else {\n topY += 0.25 * line_space;\n botY += 0.5 * line_space;\n arrow_y = botY + 0.25 * line_space;\n text_y = topY - line_space;\n }\n break;\n case Stroke.Type.ARPEGGIO_DIRECTIONLESS:\n topY += 0.5 * line_space;\n botY += line_space; // * 0.5 can lead to slight underlap instead of overlap sometimes\n break;\n default:\n throw new RuntimeError('InvalidType', `The stroke type ${this.type} does not exist`);\n }\n let strokeLine = 'straight';\n // Draw the stroke\n if (this.type === Stroke.Type.BRUSH_DOWN || this.type === Stroke.Type.BRUSH_UP) {\n ctx.fillRect(x + this.x_shift, topY, 1, botY - topY);\n }\n else {\n strokeLine = 'wiggly';\n if (isStaveNote(note)) {\n for (let i = topY; i <= botY; i += line_space) {\n Glyph.renderGlyph(ctx, x + this.x_shift - 4, i, this.render_options.font_scale, 'vexWiggleArpeggioUp');\n }\n }\n else {\n let i;\n for (i = topY; i <= botY; i += 10) {\n Glyph.renderGlyph(ctx, x + this.x_shift - 4, i, this.render_options.font_scale, 'vexWiggleArpeggioUp');\n }\n if (this.type === Stroke.Type.RASQUEDO_DOWN) {\n text_y = i + 0.25 * line_space;\n }\n }\n }\n if (this.type === Stroke.Type.ARPEGGIO_DIRECTIONLESS) {\n return; // skip drawing arrow heads or text\n }\n // Draw the arrow head\n Glyph.renderGlyph(ctx, x + this.x_shift + arrow_shift_x, arrow_y, this.render_options.font_scale, arrow, {\n category: `stroke.${arrow}.${strokeLine}`,\n });\n // Draw the rasquedo \"R\"\n if (this.type === Stroke.Type.RASQUEDO_DOWN || this.type === Stroke.Type.RASQUEDO_UP) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText('R', x + text_shift_x, text_y);\n ctx.restore();\n }\n }\n}\nStroke.Type = {\n BRUSH_DOWN: 1,\n BRUSH_UP: 2,\n ROLL_DOWN: 3,\n ROLL_UP: 4,\n RASQUEDO_DOWN: 5,\n RASQUEDO_UP: 6,\n ARPEGGIO_DIRECTIONLESS: 7, // Arpeggiated chord without upwards or downwards arrow\n};\nStroke.TEXT_FONT = {\n family: Font.SERIF,\n size: Font.SIZE,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Bend } from './bend';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\n/** `Vibrato` implements diverse vibratos. */\nexport class Vibrato extends Modifier {\n constructor() {\n super();\n this.position = Modifier.Position.RIGHT;\n this.render_options = {\n harsh: false,\n vibrato_width: 20,\n wave_height: 6,\n wave_width: 4,\n wave_girth: 2,\n };\n this.setVibratoWidth(this.render_options.vibrato_width);\n }\n static get CATEGORY() {\n return Category.Vibrato;\n }\n /** Arrange vibratos inside a `ModifierContext`. */\n static format(vibratos, state, context) {\n if (!vibratos || vibratos.length === 0)\n return false;\n // Vibratos are always on top.\n let text_line = state.top_text_line;\n let width = 0;\n let shift = state.right_shift - 7;\n // If there's a bend, drop the text line\n const bends = context.getMembers(Bend.CATEGORY);\n if (bends && bends.length > 0) {\n const bendHeight = bends.map((bb) => bb.getTextHeight()).reduce((a, b) => (a > b ? a : b)) / Tables.STAVE_LINE_DISTANCE;\n text_line = text_line - (bendHeight + 1);\n }\n else {\n state.top_text_line += 1;\n }\n // Format Vibratos\n for (let i = 0; i < vibratos.length; ++i) {\n const vibrato = vibratos[i];\n vibrato.setXShift(shift);\n vibrato.setTextLine(text_line);\n width += vibrato.getWidth();\n shift += width;\n }\n state.right_shift += width;\n return true;\n }\n /** Set harsh vibrato. */\n setHarsh(harsh) {\n this.render_options.harsh = harsh;\n return this;\n }\n /** Set vibrato width in pixels. */\n setVibratoWidth(width) {\n this.render_options.vibrato_width = width;\n this.setWidth(width);\n return this;\n }\n /** Draw the vibrato on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(Modifier.Position.RIGHT, this.index);\n const vx = start.x + this.x_shift;\n const vy = note.getYForTopText(this.text_line) + 2;\n Vibrato.renderVibrato(ctx, vx, vy, this.render_options);\n }\n /**\n * Static rendering method that can be called from\n * other classes (e.g. VibratoBracket).\n */\n static renderVibrato(ctx, x, y, opts) {\n const { harsh, vibrato_width, wave_width, wave_girth, wave_height } = opts;\n const num_waves = vibrato_width / wave_width;\n ctx.beginPath();\n let i;\n if (harsh) {\n ctx.moveTo(x, y + wave_girth + 1);\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.lineTo(x + wave_width, y - wave_height / 2);\n x += wave_width;\n ctx.lineTo(x + wave_width, y + wave_height / 2);\n x += wave_width;\n }\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.lineTo(x - wave_width, y - wave_height / 2 + wave_girth + 1);\n x -= wave_width;\n ctx.lineTo(x - wave_width, y + wave_height / 2 + wave_girth + 1);\n x -= wave_width;\n }\n ctx.fill();\n }\n else {\n ctx.moveTo(x, y + wave_girth);\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.quadraticCurveTo(x + wave_width / 2, y - wave_height / 2, x + wave_width, y);\n x += wave_width;\n ctx.quadraticCurveTo(x + wave_width / 2, y + wave_height / 2, x + wave_width, y);\n x += wave_width;\n }\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.quadraticCurveTo(x - wave_width / 2, y + wave_height / 2 + wave_girth, x - wave_width, y + wave_girth);\n x -= wave_width;\n ctx.quadraticCurveTo(x - wave_width / 2, y - wave_height / 2 + wave_girth, x - wave_width, y + wave_girth);\n x -= wave_width;\n }\n ctx.fill();\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This class implements various types of members to notes (e.g. bends,\n// fingering positions etc.)\nimport { Accidental } from './accidental';\nimport { Annotation } from './annotation';\nimport { Articulation } from './articulation';\nimport { Bend } from './bend';\nimport { ChordSymbol } from './chordsymbol';\nimport { Dot } from './dot';\nimport { FretHandFinger } from './frethandfinger';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { Parenthesis } from './parenthesis';\nimport { StaveNote } from './stavenote';\nimport { StringNumber } from './stringnumber';\nimport { Stroke } from './strokes';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\nimport { Vibrato } from './vibrato';\n// To enable logging for this class. Set `Vex.Flow.ModifierContext.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (ModifierContext.DEBUG)\n log('Vex.Flow.ModifierContext', args);\n}\nexport class ModifierContext {\n constructor() {\n // Formatting data.\n this.state = {\n left_shift: 0,\n right_shift: 0,\n text_line: 0,\n top_text_line: 0,\n };\n // Current members\n this.members = {};\n this.preFormatted = false;\n this.postFormatted = false;\n this.formatted = false;\n this.width = 0;\n this.spacing = 0;\n }\n addModifier(member) {\n L('addModifier is deprecated, use addMember instead.');\n return this.addMember(member);\n }\n /**\n * this.members maps CATEGORY strings to arrays of Tickable | Modifier | StaveNote | TabNote.\n * Here we add a new member to this.members, and create a new array if needed.\n * @param member\n * @returns this\n */\n addMember(member) {\n const category = member.getCategory();\n if (!this.members[category]) {\n this.members[category] = [];\n }\n this.members[category].push(member);\n member.setModifierContext(this);\n this.preFormatted = false;\n return this;\n }\n /**\n * @deprecated\n */\n getModifiers(category) {\n L('getModifiers is deprecated, use getMembers instead.');\n return this.getMembers(category);\n }\n getMembers(category) {\n var _a;\n return (_a = this.members[category]) !== null && _a !== void 0 ? _a : [];\n }\n getWidth() {\n return this.width;\n }\n getLeftShift() {\n return this.state.left_shift;\n }\n getRightShift() {\n return this.state.right_shift;\n }\n getState() {\n return this.state;\n }\n getMetrics() {\n if (!this.formatted) {\n throw new RuntimeError('UnformattedMember', 'Unformatted member has no metrics.');\n }\n return {\n width: this.state.left_shift + this.state.right_shift + this.spacing,\n spacing: this.spacing,\n };\n }\n preFormat() {\n if (this.preFormatted)\n return;\n L('Preformatting ModifierContext');\n const state = this.state;\n const members = this.members;\n // The ordering below determines when different members are formatted and rendered.\n StaveNote.format(members[Category.StaveNote], state);\n Parenthesis.format(members[Category.Parenthesis], state);\n Dot.format(members[Category.Dot], state);\n FretHandFinger.format(members[Category.FretHandFinger], state);\n Accidental.format(members[Category.Accidental], state);\n Stroke.format(members[Category.Stroke], state);\n GraceNoteGroup.format(members[Category.GraceNoteGroup], state);\n NoteSubGroup.format(members[Category.NoteSubGroup], state);\n StringNumber.format(members[Category.StringNumber], state);\n Articulation.format(members[Category.Articulation], state);\n Ornament.format(members[Category.Ornament], state);\n Annotation.format(members[Category.Annotation], state);\n ChordSymbol.format(members[Category.ChordSymbol], state);\n Bend.format(members[Category.Bend], state);\n Vibrato.format(members[Category.Vibrato], state, this);\n // Update width of this member context\n this.width = state.left_shift + state.right_shift;\n this.preFormatted = true;\n }\n postFormat() {\n if (this.postFormatted)\n return;\n L('Postformatting ModifierContext');\n // If post-formatting is required for an element, add more lines below.\n StaveNote.postFormat(this.getMembers(Category.StaveNote));\n }\n}\nModifierContext.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna Cheppudira 2013.\n// Co-author: Benjamin W. Bohl\n// MIT License\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Clef.DEBUG)\n log('Vex.Flow.Clef', args);\n}\n/**\n * Clef implements various types of clefs that can be rendered on a stave.\n *\n * See `tests/clef_tests.ts` for usage examples.\n */\nexport class Clef extends StaveModifier {\n /** Create a new clef. */\n constructor(type, size, annotation) {\n super();\n /**\n * The attribute `clef` must be a key from\n * `Clef.types`\n */\n this.clef = Clef.types['treble'];\n this.setPosition(StaveModifierPosition.BEGIN);\n this.setType(type, size, annotation);\n this.setWidth(Tables.currentMusicFont().lookupMetric(`clef.${this.size}.width`));\n L('Creating clef:', type);\n }\n static get CATEGORY() {\n return Category.Clef;\n }\n /**\n * Every clef name is associated with a glyph code from the font file\n * and a default stave line number.\n */\n static get types() {\n return {\n treble: {\n code: 'gClef',\n line: 3,\n point: 0,\n },\n bass: {\n code: 'fClef',\n line: 1,\n point: 0,\n },\n alto: {\n code: 'cClef',\n line: 2,\n point: 0,\n },\n tenor: {\n code: 'cClef',\n line: 1,\n point: 0,\n },\n percussion: {\n code: 'restMaxima',\n line: 2,\n point: 0,\n },\n soprano: {\n code: 'cClef',\n line: 4,\n point: 0,\n },\n 'mezzo-soprano': {\n code: 'cClef',\n line: 3,\n point: 0,\n },\n 'baritone-c': {\n code: 'cClef',\n line: 0,\n point: 0,\n },\n 'baritone-f': {\n code: 'fClef',\n line: 2,\n point: 0,\n },\n subbass: {\n code: 'fClef',\n line: 0,\n point: 0,\n },\n french: {\n code: 'gClef',\n line: 4,\n point: 0,\n },\n tab: {\n code: '6stringTabClef',\n point: 0,\n },\n };\n }\n /** Set clef type, size and annotation. */\n setType(type, size, annotation) {\n this.type = type;\n this.clef = Clef.types[type];\n if (size === undefined) {\n this.size = 'default';\n }\n else {\n this.size = size;\n }\n const musicFont = Tables.currentMusicFont();\n this.clef.point = musicFont.lookupMetric(`clef.${this.size}.point`, 0);\n this.glyph = new Glyph(this.clef.code, this.clef.point, {\n category: `clef.${this.clef.code}.${this.size}`,\n });\n // If an annotation, such as 8va, is specified, add it to the Clef object.\n if (annotation !== undefined) {\n const code = musicFont.lookupMetric(`clef.annotations.${annotation}.smuflCode`);\n const point = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.point`);\n const line = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.${this.type}.line`);\n const x_shift = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.${this.type}.shiftX`);\n this.annotation = { code, point, line, x_shift };\n this.attachment = new Glyph(this.annotation.code, this.annotation.point);\n this.attachment.metrics.x_max = 0;\n this.attachment.setXShift(this.annotation.x_shift);\n }\n else {\n this.annotation = undefined;\n }\n return this;\n }\n /** Get clef width. */\n getWidth() {\n if (this.type === 'tab') {\n defined(this.stave, 'ClefError', \"Can't get width without stave.\");\n }\n return this.width;\n }\n /** Set associated stave. */\n setStave(stave) {\n this.stave = stave;\n if (this.type === 'tab') {\n const glyph = defined(this.glyph, 'ClefError', \"Can't set stave without glyph.\");\n const numLines = this.stave.getNumLines();\n const musicFont = Tables.currentMusicFont();\n const point = musicFont.lookupMetric(`clef.lineCount.${numLines}.point`);\n const shiftY = musicFont.lookupMetric(`clef.lineCount.${numLines}.shiftY`);\n glyph.setPoint(point);\n glyph.setYShift(shiftY);\n }\n return this;\n }\n /** Render clef. */\n draw() {\n const glyph = defined(this.glyph, 'ClefError', \"Can't draw clef without glyph.\");\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('clef', this.getAttribute('id'));\n glyph.setStave(stave);\n glyph.setContext(ctx);\n if (this.clef.line !== undefined) {\n this.placeGlyphOnLine(glyph, stave, this.clef.line);\n }\n glyph.renderToStave(this.x);\n if (this.annotation !== undefined && this.attachment !== undefined) {\n this.placeGlyphOnLine(this.attachment, stave, this.annotation.line);\n this.attachment.setStave(stave);\n this.attachment.setContext(ctx);\n this.attachment.renderToStave(this.x);\n }\n ctx.closeGroup();\n }\n}\n/** To enable logging for this class, set `Vex.Flow.Clef.DEBUG` to `true`. */\nClef.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n//\n// ## Description\n//\n// This file implements key signatures. A key signature sits on a stave\n// and indicates the notes with implicit accidentals.\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined } from './util';\nexport class KeySignature extends StaveModifier {\n // Create a new Key Signature based on a `key_spec`\n constructor(keySpec, cancelKeySpec, alterKeySpec) {\n super();\n this.accList = [];\n this.setKeySig(keySpec, cancelKeySpec, alterKeySpec);\n this.setPosition(StaveModifierPosition.BEGIN);\n this.glyphFontScale = 38; // TODO(0xFE): Should this match StaveNote?\n this.glyphs = [];\n this.xPositions = []; // relative to this.x\n this.paddingForced = false;\n }\n static get CATEGORY() {\n return Category.KeySignature;\n }\n // Add an accidental glyph to the `KeySignature` instance which represents\n // the provided `acc`. If `nextAcc` is also provided, the appropriate\n // spacing will be included in the glyph's position\n convertToGlyph(acc, nextAcc) {\n const accGlyphData = Tables.accidentalCodes(acc.type);\n const glyph = new Glyph(accGlyphData.code, this.glyphFontScale);\n // Determine spacing between current accidental and the next accidental\n let extraWidth = 1;\n if (acc.type === 'n' && nextAcc) {\n const spacing = KeySignature.accidentalSpacing[nextAcc.type];\n if (spacing) {\n const isAbove = nextAcc.line >= acc.line;\n extraWidth = isAbove ? spacing.above : spacing.below;\n }\n }\n // Place the glyph on the stave\n this.placeGlyphOnLine(glyph, this.checkStave(), acc.line);\n this.glyphs.push(glyph);\n const xPosition = this.xPositions[this.xPositions.length - 1];\n const glyphWidth = glyph.getMetrics().width + extraWidth;\n // Store the next accidental's x position\n this.xPositions.push(xPosition + glyphWidth);\n // Expand size of key signature\n this.width += glyphWidth;\n }\n // Cancel out a key signature provided in the `spec` parameter. This will\n // place appropriate natural accidentals before the key signature.\n cancelKey(spec) {\n this.formatted = false;\n this.cancelKeySpec = spec;\n return this;\n }\n convertToCancelAccList(spec) {\n // Get the accidental list for the cancelled key signature\n const cancel_accList = Tables.keySignature(spec);\n // If the cancelled key has a different accidental type, ie: # vs b\n const different_types = this.accList.length > 0 && cancel_accList.length > 0 && cancel_accList[0].type !== this.accList[0].type;\n // Determine how many naturals needed to add\n const naturals = different_types ? cancel_accList.length : cancel_accList.length - this.accList.length;\n // Return if no naturals needed\n if (naturals < 1)\n return undefined;\n // Get the line position for each natural\n const cancelled = [];\n for (let i = 0; i < naturals; i++) {\n let index = i;\n if (!different_types) {\n index = cancel_accList.length - naturals + i;\n }\n const acc = cancel_accList[index];\n cancelled.push({ type: 'n', line: acc.line });\n }\n // Combine naturals with main accidental list for the key signature\n this.accList = cancelled.concat(this.accList);\n return {\n accList: cancelled,\n type: cancel_accList[0].type,\n };\n }\n // Deprecated\n addToStave(stave) {\n this.paddingForced = true;\n stave.addModifier(this);\n return this;\n }\n // Apply the accidental staff line placement based on the `clef` and\n // the accidental `type` for the key signature ('# or 'b').\n convertAccLines(clef, type, accList = this.accList) {\n let offset = 0.0; // if clef === \"treble\"\n let customLines; // when clef doesn't follow treble key sig shape\n switch (clef) {\n // Treble & Subbass both have offsets of 0, so are not included.\n case 'soprano':\n if (type === '#')\n customLines = [2.5, 0.5, 2, 0, 1.5, -0.5, 1];\n else\n offset = -1;\n break;\n case 'mezzo-soprano':\n if (type === 'b')\n customLines = [0, 2, 0.5, 2.5, 1, 3, 1.5];\n else\n offset = 1.5;\n break;\n case 'alto':\n offset = 0.5;\n break;\n case 'tenor':\n if (type === '#')\n customLines = [3, 1, 2.5, 0.5, 2, 0, 1.5];\n else\n offset = -0.5;\n break;\n case 'baritone-f':\n case 'baritone-c':\n if (type === 'b')\n customLines = [0.5, 2.5, 1, 3, 1.5, 3.5, 2];\n else\n offset = 2;\n break;\n case 'bass':\n case 'french':\n offset = 1;\n break;\n default:\n break;\n }\n // If there's a special case, assign those lines/spaces:\n let i;\n if (typeof customLines !== 'undefined') {\n for (i = 0; i < accList.length; ++i) {\n accList[i].line = customLines[i];\n }\n }\n else if (offset !== 0) {\n for (i = 0; i < accList.length; ++i) {\n accList[i].line += offset;\n }\n }\n }\n getPadding(index) {\n if (!this.formatted)\n this.format();\n return this.glyphs.length === 0 || (!this.paddingForced && index < 2) ? 0 : this.padding;\n }\n getWidth() {\n if (!this.formatted)\n this.format();\n return this.width;\n }\n setKeySig(keySpec, cancelKeySpec, alterKeySpec) {\n this.formatted = false;\n this.keySpec = keySpec;\n this.cancelKeySpec = cancelKeySpec;\n this.alterKeySpec = alterKeySpec;\n return this;\n }\n // Alter the accidentals of a key spec one by one.\n // Each alteration is a new accidental that replaces the\n // original accidental (or the canceled one).\n alterKey(alterKeySpec) {\n this.formatted = false;\n this.alterKeySpec = alterKeySpec;\n return this;\n }\n convertToAlterAccList(alterKeySpec) {\n const max = Math.min(alterKeySpec.length, this.accList.length);\n for (let i = 0; i < max; ++i) {\n if (alterKeySpec[i]) {\n this.accList[i].type = alterKeySpec[i];\n }\n }\n }\n format() {\n const stave = this.checkStave();\n this.width = 0;\n this.glyphs = [];\n this.xPositions = [0]; // initialize with initial x position\n this.accList = Tables.keySignature(defined(this.keySpec));\n const accList = this.accList;\n const firstAccidentalType = accList.length > 0 ? accList[0].type : undefined;\n let cancelAccList;\n if (this.cancelKeySpec) {\n cancelAccList = this.convertToCancelAccList(this.cancelKeySpec);\n }\n if (this.alterKeySpec) {\n this.convertToAlterAccList(this.alterKeySpec);\n }\n if (this.accList.length > 0) {\n const clef = (this.position === StaveModifierPosition.END ? stave.getEndClef() : stave.getClef()) || stave.getClef();\n if (cancelAccList) {\n this.convertAccLines(clef, cancelAccList.type, cancelAccList.accList);\n }\n this.convertAccLines(clef, firstAccidentalType, accList);\n for (let i = 0; i < this.accList.length; ++i) {\n this.convertToGlyph(this.accList[i], this.accList[i + 1]);\n }\n }\n this.formatted = true;\n }\n /**\n * Return the Glyph objects making up this KeySignature.\n */\n getGlyphs() {\n if (!this.formatted)\n this.format();\n return this.glyphs;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n if (!this.formatted)\n this.format();\n this.setRendered();\n ctx.openGroup('keysignature', this.getAttribute('id'));\n for (let i = 0; i < this.glyphs.length; i++) {\n const glyph = this.glyphs[i];\n const x = this.x + this.xPositions[i];\n glyph.setStave(stave);\n glyph.setContext(ctx);\n glyph.renderToStave(x);\n }\n ctx.closeGroup();\n }\n}\n// Space between natural and following accidental depending\n// on vertical position\nKeySignature.accidentalSpacing = {\n '#': {\n above: 6,\n below: 4,\n },\n b: {\n above: 4,\n below: 7,\n },\n n: {\n above: 4,\n below: 1,\n },\n '##': {\n above: 6,\n below: 4,\n },\n bb: {\n above: 4,\n below: 7,\n },\n db: {\n above: 4,\n below: 7,\n },\n d: {\n above: 4,\n below: 7,\n },\n bbs: {\n above: 4,\n below: 7,\n },\n '++': {\n above: 6,\n below: 4,\n },\n '+': {\n above: 6,\n below: 4,\n },\n '+-': {\n above: 6,\n below: 4,\n },\n '++-': {\n above: 6,\n below: 4,\n },\n bs: {\n above: 4,\n below: 10,\n },\n bss: {\n above: 4,\n below: 10,\n },\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { StaveModifier } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport class Repetition extends StaveModifier {\n constructor(type, x, y_shift) {\n super();\n this.symbol_type = type;\n this.x = x;\n this.x_shift = 0;\n this.y_shift = y_shift;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.Repetition;\n }\n setShiftX(x) {\n this.x_shift = x;\n return this;\n }\n setShiftY(y) {\n this.y_shift = y;\n return this;\n }\n draw(stave, x) {\n this.setRendered();\n switch (this.symbol_type) {\n case Repetition.type.CODA_RIGHT:\n this.drawCodaFixed(stave, x + stave.getWidth());\n break;\n case Repetition.type.CODA_LEFT:\n this.drawSymbolText(stave, x, 'Coda', true);\n break;\n case Repetition.type.SEGNO_LEFT:\n this.drawSignoFixed(stave, x);\n break;\n case Repetition.type.SEGNO_RIGHT:\n this.drawSignoFixed(stave, x + stave.getWidth());\n break;\n case Repetition.type.DC:\n this.drawSymbolText(stave, x, 'D.C.', false);\n break;\n case Repetition.type.DC_AL_CODA:\n this.drawSymbolText(stave, x, 'D.C. al', true);\n break;\n case Repetition.type.DC_AL_FINE:\n this.drawSymbolText(stave, x, 'D.C. al Fine', false);\n break;\n case Repetition.type.DS:\n this.drawSymbolText(stave, x, 'D.S.', false);\n break;\n case Repetition.type.DS_AL_CODA:\n this.drawSymbolText(stave, x, 'D.S. al', true);\n break;\n case Repetition.type.DS_AL_FINE:\n this.drawSymbolText(stave, x, 'D.S. al Fine', false);\n break;\n case Repetition.type.FINE:\n this.drawSymbolText(stave, x, 'Fine', false);\n break;\n case Repetition.type.TO_CODA:\n this.drawSymbolText(stave, x, 'To', true);\n break;\n default:\n break;\n }\n return this;\n }\n drawCodaFixed(stave, x) {\n const y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n Glyph.renderGlyph(stave.checkContext(), this.x + x + this.x_shift, y + Tables.currentMusicFont().lookupMetric('staveRepetition.coda.offsetY'), 40, 'coda', { category: 'coda' });\n return this;\n }\n drawSignoFixed(stave, x) {\n const y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n Glyph.renderGlyph(stave.checkContext(), this.x + x + this.x_shift, y + Tables.currentMusicFont().lookupMetric('staveRepetition.segno.offsetY'), 30, 'segno', { category: 'segno' });\n return this;\n }\n drawSymbolText(stave, x, text, draw_coda) {\n const ctx = stave.checkContext();\n ctx.save();\n ctx.setFont(this.textFont);\n let text_x = 0;\n let symbol_x = 0;\n const modifierWidth = stave.getNoteStartX() - this.x;\n switch (this.symbol_type) {\n // To the left with symbol\n case Repetition.type.CODA_LEFT:\n // Offset Coda text to right of stave beginning\n text_x = this.x + stave.getVerticalBarWidth();\n symbol_x =\n text_x +\n ctx.measureText(text).width +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n break;\n // To the right without symbol\n case Repetition.type.DC:\n case Repetition.type.DC_AL_FINE:\n case Repetition.type.DS:\n case Repetition.type.DS_AL_FINE:\n case Repetition.type.FINE:\n text_x =\n this.x +\n x +\n this.x_shift +\n stave.getWidth() -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.spacing') -\n modifierWidth -\n ctx.measureText(text).width;\n break;\n // To the right with symbol\n default:\n text_x =\n this.x +\n x +\n this.x_shift +\n stave.getWidth() -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.spacing') -\n modifierWidth -\n ctx.measureText(text).width -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n symbol_x =\n text_x +\n ctx.measureText(text).width +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n break;\n }\n const y = stave.getYForTopText(stave.getNumLines()) +\n this.y_shift +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetY');\n if (draw_coda) {\n Glyph.renderGlyph(ctx, symbol_x, y, 40, 'coda', { category: 'coda' });\n }\n ctx.fillText(text, text_x, y + 5);\n ctx.restore();\n return this;\n }\n}\nRepetition.TEXT_FONT = {\n family: Font.SERIF,\n size: 12,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\nRepetition.type = {\n NONE: 1,\n CODA_LEFT: 2,\n CODA_RIGHT: 3,\n SEGNO_LEFT: 4,\n SEGNO_RIGHT: 5,\n DC: 6,\n DC_AL_CODA: 7,\n DC_AL_FINE: 8,\n DS: 9,\n DS_AL_CODA: 10,\n DS_AL_FINE: 11,\n FINE: 12,\n TO_CODA: 13, // To Coda at end of stave\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier } from './stavemodifier';\nimport { Category } from './typeguard';\nexport class StaveSection extends StaveModifier {\n constructor(section, x, shift_y, drawRect = true) {\n super();\n this.setWidth(16);\n this.section = section;\n this.x = x;\n this.shift_x = 0;\n this.shift_y = shift_y;\n this.drawRect = drawRect;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveSection;\n }\n setStaveSection(section) {\n this.section = section;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n draw(stave, shift_x) {\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n const paddingX = 2;\n const paddingY = 2;\n const rectWidth = 2;\n const textMeasurements = ctx.measureText(this.section);\n const textWidth = textMeasurements.width;\n const textHeight = textMeasurements.height;\n const width = textWidth + 2 * paddingX; // add left & right padding\n const height = textHeight + 2 * paddingY; // add top & bottom padding\n // Seems to be a good default y\n const y = stave.getYForTopText(1.5) + this.shift_y;\n const x = this.x + shift_x;\n if (this.drawRect) {\n ctx.beginPath();\n ctx.setLineWidth(rectWidth);\n ctx.rect(x, y + textMeasurements.y - paddingY, width, height);\n ctx.stroke();\n }\n ctx.fillText(this.section, x + paddingX, y);\n ctx.restore();\n return this;\n }\n}\nStaveSection.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 10,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Radosaw Eichler 2012\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport class StaveTempo extends StaveModifier {\n constructor(tempo, x, shift_y) {\n super();\n /** Font size for note. */\n this.render_options = { glyph_font_scale: 30 };\n this.tempo = tempo;\n this.position = StaveModifierPosition.ABOVE;\n this.x = x;\n this.shift_x = 10;\n this.shift_y = shift_y;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveTempo;\n }\n setTempo(tempo) {\n this.tempo = tempo;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n draw(stave, shift_x) {\n const ctx = stave.checkContext();\n this.setRendered();\n const options = this.render_options;\n // FIXME: What does the '38' mean? Why 38? Is that supposed to\n // be the default font size for standard notation?\n const scale = options.glyph_font_scale / 38;\n const name = this.tempo.name;\n const duration = this.tempo.duration;\n const dots = this.tempo.dots || 0;\n const bpm = this.tempo.bpm;\n let x = this.x + this.shift_x + shift_x;\n const y = stave.getYForTopText(1) + this.shift_y;\n ctx.save();\n if (name) {\n ctx.setFont(this.textFont);\n ctx.fillText(name, x, y);\n x += ctx.measureText(name).width;\n }\n if (duration && bpm) {\n // Override the weight and style.\n ctx.setFont(Object.assign(Object.assign({}, this.textFont), { weight: 'normal', style: 'normal' }));\n if (name) {\n x += ctx.measureText(' ').width;\n ctx.fillText('(', x, y);\n x += ctx.measureText('(').width;\n }\n const code = Tables.getGlyphProps(duration);\n x += 3 * scale;\n Glyph.renderGlyph(ctx, x, y, options.glyph_font_scale, code.code_head);\n x += code.getWidth() * scale;\n // Draw stem and flags\n if (code.stem) {\n let stem_height = 30;\n if (code.beam_count)\n stem_height += 3 * (code.beam_count - 1);\n stem_height *= scale;\n const y_top = y - stem_height;\n ctx.fillRect(x - scale, y_top, scale, stem_height);\n if (code.flag) {\n Glyph.renderGlyph(ctx, x, y_top, options.glyph_font_scale, code.code_flag_upstem, {\n category: 'flag.staveTempo',\n });\n if (!dots)\n x += 6 * scale;\n }\n }\n // Draw dot\n for (let i = 0; i < dots; i++) {\n x += 6 * scale;\n ctx.beginPath();\n ctx.arc(x, y + 2 * scale, 2 * scale, 0, Math.PI * 2, false);\n ctx.fill();\n }\n ctx.fillText(' = ' + bpm + (name ? ')' : ''), x + 3 * scale, y);\n }\n ctx.restore();\n return this;\n }\n}\nStaveTempo.TEXT_FONT = {\n family: Font.SERIF,\n size: 14,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { TextJustification, TextNote } from './textnote';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveText extends StaveModifier {\n constructor(text, position, options = {}) {\n super();\n this.setWidth(16);\n this.text = text;\n this.position = position;\n this.options = Object.assign({ shift_x: 0, shift_y: 0, justification: TextNote.Justification.CENTER }, options);\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveText;\n }\n setStaveText(text) {\n this.text = text;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n setText(text) {\n this.text = text;\n return this;\n }\n draw(stave) {\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n const text_width = ctx.measureText('' + this.text).width;\n let x;\n let y;\n switch (this.position) {\n case StaveModifierPosition.LEFT:\n case StaveModifierPosition.RIGHT:\n y = (stave.getYForLine(0) + stave.getBottomLineY()) / 2 + this.options.shift_y;\n if (this.position === StaveModifierPosition.LEFT) {\n x = stave.getX() - text_width - 24 + this.options.shift_x;\n }\n else {\n x = stave.getX() + stave.getWidth() + 24 + this.options.shift_x;\n }\n break;\n case StaveModifierPosition.ABOVE:\n case StaveModifierPosition.BELOW:\n x = stave.getX() + this.options.shift_x;\n if (this.options.justification === TextJustification.CENTER) {\n x += stave.getWidth() / 2 - text_width / 2;\n }\n else if (this.options.justification === TextJustification.RIGHT) {\n x += stave.getWidth() - text_width;\n }\n if (this.position === StaveModifierPosition.ABOVE) {\n y = stave.getYForTopText(2) + this.options.shift_y;\n }\n else {\n y = stave.getYForBottomText(2) + this.options.shift_y;\n }\n break;\n default:\n throw new RuntimeError('InvalidPosition', 'Value Must be in Modifier.Position.');\n }\n ctx.fillText('' + this.text, x, y + 4);\n ctx.restore();\n return this;\n }\n}\nStaveText.TEXT_FONT = {\n family: Font.SERIF,\n size: 16,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Renders time signatures glyphs for staffs\n// This class is used by TimeSignature to render the associated glyphs\nimport { Glyph } from './glyph';\nimport { defined } from './util';\nexport class TimeSignatureGlyph extends Glyph {\n constructor(timeSignature, topDigits, botDigits, code, point, options) {\n var _a;\n super(code, point, options);\n this.timeSignature = timeSignature;\n this.topGlyphs = [];\n this.botGlyphs = [];\n let topWidth = 0;\n for (let i = 0; i < topDigits.length; ++i) {\n let timeSigType = topDigits[i];\n switch (topDigits[i]) {\n case '-':\n timeSigType = 'Minus';\n break;\n case '+':\n timeSigType = botDigits.length > 0 ? 'PlusSmall' : 'Plus';\n break;\n case '(':\n timeSigType = botDigits.length > 0 ? 'ParensLeftSmall' : 'ParensLeft';\n break;\n case ')':\n timeSigType = botDigits.length > 0 ? 'ParensRightSmall' : 'ParensRight';\n break;\n }\n const topGlyph = new Glyph('timeSig' + timeSigType, this.timeSignature.point);\n this.topGlyphs.push(topGlyph);\n topWidth += (_a = topGlyph.getMetrics().width) !== null && _a !== void 0 ? _a : 0;\n }\n let botWidth = 0;\n for (let i = 0; i < botDigits.length; ++i) {\n let timeSigType = botDigits[i];\n switch (botDigits[i]) {\n case '+':\n timeSigType = 'PlusSmall';\n break;\n case '(':\n timeSigType = 'ParensLeftSmall';\n break;\n case ')':\n timeSigType = 'ParensRightSmall';\n break;\n }\n const botGlyph = new Glyph('timeSig' + timeSigType, this.timeSignature.point);\n this.botGlyphs.push(botGlyph);\n botWidth += defined(botGlyph.getMetrics().width);\n }\n this.width = Math.max(topWidth, botWidth);\n this.xMin = this.getMetrics().x_min;\n this.topStartX = (this.width - topWidth) / 2.0;\n this.botStartX = (this.width - botWidth) / 2.0;\n this.reset();\n }\n getMetrics() {\n return {\n x_min: this.xMin,\n x_max: this.xMin + this.width,\n width: this.width,\n };\n }\n renderToStave(x) {\n const stave = this.checkStave();\n const ctx = this.checkContext();\n let start_x = x + this.topStartX;\n let y = 0;\n if (this.botGlyphs.length > 0)\n y = stave.getYForLine(this.timeSignature.topLine);\n else\n y = (stave.getYForLine(this.timeSignature.topLine) + stave.getYForLine(this.timeSignature.bottomLine)) / 2;\n for (let i = 0; i < this.topGlyphs.length; ++i) {\n const glyph = this.topGlyphs[i];\n Glyph.renderOutline(ctx, glyph.getMetrics().outline, this.scale, start_x + this.x_shift, y);\n start_x += defined(glyph.getMetrics().width);\n }\n start_x = x + this.botStartX;\n y = stave.getYForLine(this.timeSignature.bottomLine);\n for (let i = 0; i < this.botGlyphs.length; ++i) {\n const glyph = this.botGlyphs[i];\n this.timeSignature.placeGlyphOnLine(glyph, stave, 0);\n Glyph.renderOutline(ctx, glyph.getMetrics().outline, this.scale, start_x + glyph.getMetrics().x_shift, y);\n start_x += defined(glyph.getMetrics().width);\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Implements time signatures glyphs for staffs\n// See tables.js for the internal time signatures\n// representation\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { TimeSignatureGlyph } from './timesigglyph';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nconst assertIsValidTimeSig = (timeSpec) => {\n const numbers = timeSpec.split('/');\n if (numbers.length !== 2 && numbers[0] !== '+' && numbers[0] !== '-') {\n throw new RuntimeError('BadTimeSignature', `Invalid time spec: ${timeSpec}. Must be in the form \"/\"`);\n }\n numbers.forEach((number) => {\n // Characters consisting in number 0..9, '+', '-', '(' or ')'\n if (/^[0-9+\\-()]+$/.test(number) == false) {\n throw new RuntimeError('BadTimeSignature', `Invalid time spec: ${timeSpec}. Must contain valid signatures.`);\n }\n });\n};\nexport class TimeSignature extends StaveModifier {\n constructor(timeSpec = '4/4', customPadding = 15, validate_args = true) {\n super();\n this.validate_args = validate_args;\n const padding = customPadding;\n const musicFont = Tables.currentMusicFont();\n this.point = musicFont.lookupMetric('digits.point');\n const fontLineShift = musicFont.lookupMetric('digits.shiftLine', 0);\n this.topLine = 2 + fontLineShift;\n this.bottomLine = 4 + fontLineShift;\n this.setPosition(StaveModifierPosition.BEGIN);\n this.info = this.parseTimeSpec(timeSpec);\n this.setWidth(defined(this.info.glyph.getMetrics().width));\n this.setPadding(padding);\n }\n static get CATEGORY() {\n return Category.TimeSignature;\n }\n static get glyphs() {\n return {\n C: {\n code: 'timeSigCommon',\n point: 40,\n line: 2,\n },\n 'C|': {\n code: 'timeSigCutCommon',\n point: 40,\n line: 2,\n },\n };\n }\n parseTimeSpec(timeSpec) {\n var _a, _b;\n if (timeSpec === 'C' || timeSpec === 'C|') {\n const { line, code, point } = TimeSignature.glyphs[timeSpec];\n return {\n line,\n num: false,\n glyph: new Glyph(code, point),\n };\n }\n if (this.validate_args) {\n assertIsValidTimeSig(timeSpec);\n }\n const parts = timeSpec.split('/');\n return {\n num: true,\n glyph: this.makeTimeSignatureGlyph((_a = parts[0]) !== null && _a !== void 0 ? _a : '', (_b = parts[1]) !== null && _b !== void 0 ? _b : ''),\n };\n }\n makeTimeSignatureGlyph(topDigits, botDigits) {\n return new TimeSignatureGlyph(this, topDigits, botDigits, 'timeSig0', this.point);\n }\n getInfo() {\n return this.info;\n }\n setTimeSig(timeSpec) {\n this.info = this.parseTimeSpec(timeSpec);\n return this;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('timesignature', this.getAttribute('id'));\n this.info.glyph.setStave(stave);\n this.info.glyph.setContext(ctx);\n this.placeGlyphOnLine(this.info.glyph, stave, this.info.line);\n this.info.glyph.renderToStave(this.x);\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Clef } from './clef';\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { KeySignature } from './keysignature';\nimport { Barline, BarlineType } from './stavebarline';\nimport { StaveModifierPosition } from './stavemodifier';\nimport { Repetition } from './staverepetition';\nimport { StaveSection } from './stavesection';\nimport { StaveTempo } from './stavetempo';\nimport { StaveText } from './stavetext';\nimport { Volta } from './stavevolta';\nimport { Tables } from './tables';\nimport { TimeSignature } from './timesignature';\nimport { Category, isBarline } from './typeguard';\nimport { RuntimeError } from './util';\n// Used by Stave.format() to sort the modifiers at the beginning and end of a stave.\n// The keys (computed property names) match the CATEGORY property in the\n// Barline, Clef, KeySignature, TimeSignature classes.\nconst SORT_ORDER_BEG_MODIFIERS = {\n [Barline.CATEGORY]: 0,\n [Clef.CATEGORY]: 1,\n [KeySignature.CATEGORY]: 2,\n [TimeSignature.CATEGORY]: 3,\n};\nconst SORT_ORDER_END_MODIFIERS = {\n [TimeSignature.CATEGORY]: 0,\n [KeySignature.CATEGORY]: 1,\n [Barline.CATEGORY]: 2,\n [Clef.CATEGORY]: 3,\n};\nexport class Stave extends Element {\n constructor(x, y, width, options) {\n super();\n // Initialized by the constructor via this.resetLines().\n this.height = 0;\n this.x = x;\n this.y = y;\n this.width = width;\n this.formatted = false;\n this.start_x = x + 5;\n this.end_x = x + width;\n this.modifiers = []; // stave modifiers (clef, key, time, barlines, coda, segno, etc.)\n this.measure = 0;\n this.clef = 'treble';\n this.endClef = undefined;\n this.resetFont();\n this.options = Object.assign({ vertical_bar_width: 10, num_lines: 5, fill_style: '#999999', left_bar: true, right_bar: true, spacing_between_lines_px: Tables.STAVE_LINE_DISTANCE, space_above_staff_ln: 4, space_below_staff_ln: 4, top_text_position: 1, bottom_text_position: 4, line_config: [] }, options);\n this.bounds = { x: this.x, y: this.y, w: this.width, h: 0 };\n this.defaultLedgerLineStyle = { strokeStyle: '#444', lineWidth: 1.4 };\n this.resetLines();\n // beg bar\n this.addModifier(new Barline(this.options.left_bar ? BarlineType.SINGLE : BarlineType.NONE));\n // end bar\n this.addEndModifier(new Barline(this.options.right_bar ? BarlineType.SINGLE : BarlineType.NONE));\n }\n static get CATEGORY() {\n return Category.Stave;\n }\n // This is the sum of the padding that normally goes on left + right of a stave during\n // drawing. Used to size staves correctly with content width.\n static get defaultPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('stave.padding') + musicFont.lookupMetric('stave.endPaddingMax');\n }\n // Right padding, used by system if startX is already determined.\n static get rightPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('stave.endPaddingMax');\n }\n /** Set default style for ledger lines. */\n setDefaultLedgerLineStyle(style) {\n this.defaultLedgerLineStyle = style;\n }\n /** Get default style for ledger lines. */\n getDefaultLedgerLineStyle() {\n return Object.assign(Object.assign({}, this.getStyle()), this.defaultLedgerLineStyle);\n }\n space(spacing) {\n return this.options.spacing_between_lines_px * spacing;\n }\n resetLines() {\n this.options.line_config = [];\n for (let i = 0; i < this.options.num_lines; i++) {\n this.options.line_config.push({ visible: true });\n }\n this.height = (this.options.num_lines + this.options.space_above_staff_ln) * this.options.spacing_between_lines_px;\n this.options.bottom_text_position = this.options.num_lines;\n }\n setNoteStartX(x) {\n if (!this.formatted)\n this.format();\n this.start_x = x;\n return this;\n }\n getNoteStartX() {\n if (!this.formatted)\n this.format();\n return this.start_x;\n }\n getNoteEndX() {\n if (!this.formatted)\n this.format();\n return this.end_x;\n }\n getTieStartX() {\n return this.start_x;\n }\n getTieEndX() {\n return this.end_x;\n }\n getX() {\n return this.x;\n }\n getNumLines() {\n return this.options.num_lines;\n }\n setNumLines(n) {\n this.options.num_lines = n;\n this.resetLines();\n return this;\n }\n setY(y) {\n this.y = y;\n return this;\n }\n getY() {\n return this.y;\n }\n getTopLineTopY() {\n return this.getYForLine(0) - Tables.STAVE_LINE_THICKNESS / 2;\n }\n getBottomLineBottomY() {\n return this.getYForLine(this.getNumLines() - 1) + Tables.STAVE_LINE_THICKNESS / 2;\n }\n setX(x) {\n const shift = x - this.x;\n this.formatted = false;\n this.x = x;\n this.start_x += shift;\n this.end_x += shift;\n for (let i = 0; i < this.modifiers.length; i++) {\n const mod = this.modifiers[i];\n mod.setX(mod.getX() + shift);\n }\n return this;\n }\n setWidth(width) {\n this.formatted = false;\n this.width = width;\n this.end_x = this.x + width;\n // reset the x position of the end barline (TODO(0xfe): This makes no sense)\n // this.modifiers[1].setX(this.end_x);\n return this;\n }\n getWidth() {\n return this.width;\n }\n getStyle() {\n return Object.assign({ fillStyle: this.options.fill_style, strokeStyle: this.options.fill_style, lineWidth: Tables.STAVE_LINE_THICKNESS }, super.getStyle());\n }\n /**\n * Set the measure number of this Stave.\n */\n setMeasure(measure) {\n this.measure = measure;\n return this;\n }\n /**\n * Return the measure number of this Stave.\n */\n getMeasure() {\n return this.measure;\n }\n /**\n * Gets the pixels to shift from the beginning of the stave\n * following the modifier at the provided index\n * @param {Number} index The index from which to determine the shift\n * @return {Number} The amount of pixels shifted\n */\n getModifierXShift(index = 0) {\n if (typeof index !== 'number') {\n throw new RuntimeError('InvalidIndex', 'Must be of number type');\n }\n if (!this.formatted)\n this.format();\n if (this.getModifiers(StaveModifierPosition.BEGIN).length === 1) {\n return 0;\n }\n // for right position modifiers zero shift seems correct, see 'Volta + Modifier Measure Test'\n if (this.modifiers[index].getPosition() === StaveModifierPosition.RIGHT) {\n return 0;\n }\n let start_x = this.start_x - this.x;\n const begBarline = this.modifiers[0];\n if (begBarline.getType() === BarlineType.REPEAT_BEGIN && start_x > begBarline.getWidth()) {\n start_x -= begBarline.getWidth();\n }\n return start_x;\n }\n /** Coda & Segno Symbol functions */\n setRepetitionType(type, yShift = 0) {\n this.modifiers.push(new Repetition(type, this.x, yShift));\n return this;\n }\n // Volta functions\n setVoltaType(type, number_t, y) {\n this.modifiers.push(new Volta(type, number_t, this.x, y));\n return this;\n }\n // Section functions\n setSection(section, y, xOffset = 0, fontSize, drawRect = true) {\n const staveSection = new StaveSection(section, this.x + xOffset, y, drawRect);\n if (fontSize)\n staveSection.setFontSize(fontSize);\n this.modifiers.push(staveSection);\n return this;\n }\n // Tempo functions\n setTempo(tempo, y) {\n this.modifiers.push(new StaveTempo(tempo, this.x, y));\n return this;\n }\n // Text functions\n setText(text, position, options = {}) {\n this.modifiers.push(new StaveText(text, position, options));\n return this;\n }\n getHeight() {\n return this.height;\n }\n getSpacingBetweenLines() {\n return this.options.spacing_between_lines_px;\n }\n getBoundingBox() {\n return new BoundingBox(this.x, this.y, this.width, this.getBottomY() - this.y);\n }\n getBottomY() {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const score_bottom = this.getYForLine(options.num_lines) + options.space_below_staff_ln * spacing;\n return score_bottom;\n }\n getBottomLineY() {\n return this.getYForLine(this.options.num_lines);\n }\n // This returns\n /** @returns the y for the *center* of a staff line */\n getYForLine(line) {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n const y = this.y + line * spacing + headroom * spacing;\n return y;\n }\n getLineForY(y) {\n // Does the reverse of getYForLine - somewhat dumb and just calls\n // getYForLine until the right value is reaches\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n return (y - this.y) / spacing - headroom;\n }\n getYForTopText(line = 0) {\n return this.getYForLine(-line - this.options.top_text_position);\n }\n getYForBottomText(line = 0) {\n return this.getYForLine(this.options.bottom_text_position + line);\n }\n getYForNote(line) {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n return this.y + headroom * spacing + 5 * spacing - line * spacing;\n }\n getYForGlyphs() {\n return this.getYForLine(3);\n }\n // This method adds a stave modifier to the stave. Note that the first two\n // modifiers (BarLines) are automatically added upon construction.\n addModifier(modifier, position) {\n if (position !== undefined) {\n modifier.setPosition(position);\n }\n modifier.setStave(this);\n this.formatted = false;\n this.modifiers.push(modifier);\n return this;\n }\n addEndModifier(modifier) {\n this.addModifier(modifier, StaveModifierPosition.END);\n return this;\n }\n // Bar Line functions\n setBegBarType(type) {\n // Only valid bar types at beginning of stave is none, single or begin repeat\n const { SINGLE, REPEAT_BEGIN, NONE } = BarlineType;\n if (type === SINGLE || type === REPEAT_BEGIN || type === NONE) {\n this.modifiers[0].setType(type);\n this.formatted = false;\n }\n return this;\n }\n setEndBarType(type) {\n // Repeat end not valid at end of stave\n if (type !== BarlineType.REPEAT_BEGIN) {\n this.modifiers[1].setType(type);\n this.formatted = false;\n }\n return this;\n }\n setClef(clefSpec, size, annotation, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n if (position === StaveModifierPosition.END) {\n this.endClef = clefSpec;\n }\n else {\n this.clef = clefSpec;\n }\n const clefs = this.getModifiers(position, Clef.CATEGORY);\n if (clefs.length === 0) {\n this.addClef(clefSpec, size, annotation, position);\n }\n else {\n clefs[0].setType(clefSpec, size, annotation);\n }\n return this;\n }\n getClef() {\n return this.clef;\n }\n setEndClef(clefSpec, size, annotation) {\n this.setClef(clefSpec, size, annotation, StaveModifierPosition.END);\n return this;\n }\n getEndClef() {\n return this.endClef;\n }\n setKeySignature(keySpec, cancelKeySpec, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n const keySignatures = this.getModifiers(position, KeySignature.CATEGORY);\n if (keySignatures.length === 0) {\n this.addKeySignature(keySpec, cancelKeySpec, position);\n }\n else {\n keySignatures[0].setKeySig(keySpec, cancelKeySpec);\n }\n return this;\n }\n setEndKeySignature(keySpec, cancelKeySpec) {\n this.setKeySignature(keySpec, cancelKeySpec, StaveModifierPosition.END);\n return this;\n }\n setTimeSignature(timeSpec, customPadding, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n const timeSignatures = this.getModifiers(position, TimeSignature.CATEGORY);\n if (timeSignatures.length === 0) {\n this.addTimeSignature(timeSpec, customPadding, position);\n }\n else {\n timeSignatures[0].setTimeSig(timeSpec);\n }\n return this;\n }\n setEndTimeSignature(timeSpec, customPadding) {\n this.setTimeSignature(timeSpec, customPadding, StaveModifierPosition.END);\n return this;\n }\n /**\n * Add a key signature to the stave.\n *\n * Example:\n * `stave.addKeySignature('Db');`\n * @param keySpec new key specification `[A-G][b|#]?`\n * @param cancelKeySpec\n * @param position\n * @returns\n */\n addKeySignature(keySpec, cancelKeySpec, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n this.addModifier(new KeySignature(keySpec, cancelKeySpec).setPosition(position), position);\n return this;\n }\n /**\n * Add a clef to the stave.\n *\n * Example:\n *\n * stave.addClef('treble')\n * @param clef clef (treble|bass|...) see {@link Clef.types}\n * @param size\n * @param annotation\n * @param position\n * @returns\n */\n addClef(clef, size, annotation, position) {\n if (position === undefined || position === StaveModifierPosition.BEGIN) {\n this.clef = clef;\n }\n else if (position === StaveModifierPosition.END) {\n this.endClef = clef;\n }\n this.addModifier(new Clef(clef, size, annotation), position);\n return this;\n }\n addEndClef(clef, size, annotation) {\n this.addClef(clef, size, annotation, StaveModifierPosition.END);\n return this;\n }\n /**\n * Add a time signature to the stave\n *\n * Example:\n *\n * `stave.addTimeSignature('4/4');`\n * @param timeSpec time signature specification `(C\\||C|\\d\\/\\d)`\n * @param customPadding\n * @param position\n * @returns\n */\n addTimeSignature(timeSpec, customPadding, position) {\n this.addModifier(new TimeSignature(timeSpec, customPadding), position);\n return this;\n }\n addEndTimeSignature(timeSpec, customPadding) {\n this.addTimeSignature(timeSpec, customPadding, StaveModifierPosition.END);\n return this;\n }\n // Deprecated\n addTrebleGlyph() {\n this.addClef('treble');\n return this;\n }\n /**\n * @param position\n * @param category\n * @returns array of StaveModifiers that match the provided position and category.\n */\n getModifiers(position, category) {\n const noPosition = position === undefined;\n const noCategory = category === undefined;\n if (noPosition && noCategory) {\n return this.modifiers;\n }\n else if (noPosition) {\n // A category was provided.\n return this.modifiers.filter((m) => category === m.getCategory());\n }\n else if (noCategory) {\n // A position was provided.\n return this.modifiers.filter((m) => position === m.getPosition());\n }\n else {\n // Both position and category were provided!\n return this.modifiers.filter((m) => position === m.getPosition() && category === m.getCategory());\n }\n }\n /**\n * Use the modifier's `getCategory()` as a key for the `order` array.\n * The retrieved value is used to sort modifiers from left to right (0 to to 3).\n */\n sortByCategory(items, order) {\n for (let i = items.length - 1; i >= 0; i--) {\n for (let j = 0; j < i; j++) {\n if (order[items[j].getCategory()] > order[items[j + 1].getCategory()]) {\n const temp = items[j];\n items[j] = items[j + 1];\n items[j + 1] = temp;\n }\n }\n }\n }\n format() {\n const begBarline = this.modifiers[0];\n const endBarline = this.modifiers[1];\n const begModifiers = this.getModifiers(StaveModifierPosition.BEGIN);\n const endModifiers = this.getModifiers(StaveModifierPosition.END);\n this.sortByCategory(begModifiers, SORT_ORDER_BEG_MODIFIERS);\n this.sortByCategory(endModifiers, SORT_ORDER_END_MODIFIERS);\n if (begModifiers.length > 1 && begBarline.getType() === BarlineType.REPEAT_BEGIN) {\n begModifiers.push(begModifiers.splice(0, 1)[0]);\n begModifiers.splice(0, 0, new Barline(BarlineType.SINGLE));\n }\n if (endModifiers.indexOf(endBarline) > 0) {\n endModifiers.splice(0, 0, new Barline(BarlineType.NONE));\n }\n let width;\n let padding;\n let modifier;\n let offset = 0;\n let x = this.x;\n for (let i = 0; i < begModifiers.length; i++) {\n modifier = begModifiers[i];\n padding = modifier.getPadding(i + offset);\n width = modifier.getWidth();\n x += padding;\n modifier.setX(x);\n x += width;\n if (padding + width === 0)\n offset--;\n }\n this.start_x = x;\n x = this.x + this.width;\n const widths = {\n left: 0,\n right: 0,\n paddingRight: 0,\n paddingLeft: 0,\n };\n let lastBarlineIdx = 0;\n for (let i = 0; i < endModifiers.length; i++) {\n modifier = endModifiers[i];\n lastBarlineIdx = isBarline(modifier) ? i : lastBarlineIdx;\n widths.right = 0;\n widths.left = 0;\n widths.paddingRight = 0;\n widths.paddingLeft = 0;\n const layoutMetrics = modifier.getLayoutMetrics();\n if (layoutMetrics) {\n if (i !== 0) {\n widths.right = layoutMetrics.xMax || 0;\n widths.paddingRight = layoutMetrics.paddingRight || 0;\n }\n widths.left = -layoutMetrics.xMin || 0;\n widths.paddingLeft = layoutMetrics.paddingLeft || 0;\n if (i === endModifiers.length - 1) {\n widths.paddingLeft = 0;\n }\n }\n else {\n widths.paddingRight = modifier.getPadding(i - lastBarlineIdx);\n if (i !== 0) {\n widths.right = modifier.getWidth();\n }\n if (i === 0) {\n widths.left = modifier.getWidth();\n }\n }\n x -= widths.paddingRight;\n x -= widths.right;\n modifier.setX(x);\n x -= widths.left;\n x -= widths.paddingLeft;\n }\n this.end_x = endModifiers.length === 1 ? this.x + this.width : x;\n this.formatted = true;\n }\n /**\n * All drawing functions below need the context to be set.\n */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n ctx.openGroup('stave', this.getAttribute('id'));\n if (!this.formatted)\n this.format();\n const num_lines = this.options.num_lines;\n const width = this.width;\n const x = this.x;\n let y;\n // Render lines\n for (let line = 0; line < num_lines; line++) {\n y = this.getYForLine(line);\n this.applyStyle();\n if (this.options.line_config[line].visible) {\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.lineTo(x + width, y);\n ctx.stroke();\n }\n this.restoreStyle();\n }\n // Draw the modifiers (bar lines, coda, segno, repeat brackets, etc.)\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n // Only draw modifier if it has a draw function\n if (typeof modifier.draw === 'function') {\n modifier.applyStyle(ctx);\n modifier.draw(this, this.getModifierXShift(i));\n modifier.restoreStyle(ctx);\n }\n }\n // Render measure numbers\n if (this.measure > 0) {\n ctx.save();\n ctx.setFont(this.textFont);\n const textWidth = ctx.measureText('' + this.measure).width;\n y = this.getYForTopText(0) + 3;\n ctx.fillText('' + this.measure, this.x - textWidth / 2, y);\n ctx.restore();\n }\n ctx.closeGroup();\n return this;\n }\n getVerticalBarWidth() {\n return this.options.vertical_bar_width;\n }\n /**\n * Get the current configuration for the Stave.\n * @return {Array} An array of configuration objects.\n */\n getConfigForLines() {\n return this.options.line_config;\n }\n /**\n * Configure properties of the lines in the Stave\n * @param line_number The index of the line to configure.\n * @param line_config An configuration object for the specified line.\n * @throws RuntimeError \"StaveConfigError\" When the specified line number is out of\n * range of the number of lines specified in the constructor.\n */\n setConfigForLine(line_number, line_config) {\n if (line_number >= this.options.num_lines || line_number < 0) {\n throw new RuntimeError('StaveConfigError', 'The line number must be within the range of the number of lines in the Stave.');\n }\n if (line_config.visible === undefined) {\n throw new RuntimeError('StaveConfigError', \"The line configuration object is missing the 'visible' property.\");\n }\n if (typeof line_config.visible !== 'boolean') {\n throw new RuntimeError('StaveConfigError', \"The line configuration objects 'visible' property must be true or false.\");\n }\n this.options.line_config[line_number] = line_config;\n return this;\n }\n /**\n * Set the staff line configuration array for all of the lines at once.\n * @param lines_configuration An array of line configuration objects. These objects\n * are of the same format as the single one passed in to setLineConfiguration().\n * The caller can set null for any line config entry if it is desired that the default be used\n * @throws RuntimeError \"StaveConfigError\" When the lines_configuration array does not have\n * exactly the same number of elements as the num_lines configuration object set in\n * the constructor.\n */\n setConfigForLines(lines_configuration) {\n if (lines_configuration.length !== this.options.num_lines) {\n throw new RuntimeError('StaveConfigError', 'The length of the lines configuration array must match the number of lines in the Stave');\n }\n // Make sure the defaults are present in case an incomplete set of\n // configuration options were supplied.\n // eslint-disable-next-line\n for (const line_config in lines_configuration) {\n // Allow '{}' to be used if the caller just wants the default for a particular node.\n if (lines_configuration[line_config].visible == undefined) {\n lines_configuration[line_config] = this.options.line_config[line_config];\n }\n this.options.line_config[line_config] = Object.assign(Object.assign({}, this.options.line_config[line_config]), lines_configuration[line_config]);\n }\n this.options.line_config = lines_configuration;\n return this;\n }\n static formatBegModifiers(staves) {\n let maxX = 0;\n // align note start\n staves.forEach((stave) => {\n if (stave.getNoteStartX() > maxX)\n maxX = stave.getNoteStartX();\n });\n staves.forEach((stave) => {\n stave.setNoteStartX(maxX);\n });\n maxX = 0;\n // align REPEAT_BEGIN\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.Barline);\n modifiers.forEach((modifier) => {\n if (modifier.getType() == BarlineType.REPEAT_BEGIN)\n if (modifier.getX() > maxX)\n maxX = modifier.getX();\n });\n });\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.Barline);\n modifiers.forEach((modifier) => {\n if (modifier.getType() == BarlineType.REPEAT_BEGIN)\n modifier.setX(maxX);\n });\n });\n maxX = 0;\n // Align time signatures\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.TimeSignature);\n modifiers.forEach((modifier) => {\n if (modifier.getX() > maxX)\n maxX = modifier.getX();\n });\n });\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.TimeSignature);\n modifiers.forEach((modifier) => {\n modifier.setX(maxX);\n });\n });\n }\n}\nStave.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 8,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nfunction drawBoldDoubleLine(ctx, type, topX, topY, botY) {\n if (type !== StaveConnector.type.BOLD_DOUBLE_LEFT && type !== StaveConnector.type.BOLD_DOUBLE_RIGHT) {\n throw new RuntimeError('InvalidConnector', 'A REPEAT_BEGIN or REPEAT_END type must be provided.');\n }\n let x_shift = 3;\n let variableWidth = 3.5; // Width for avoiding anti-aliasing width issues\n const thickLineOffset = 2; // For aesthetics\n if (type === StaveConnector.type.BOLD_DOUBLE_RIGHT) {\n x_shift = -5; // Flips the side of the thin line\n variableWidth = 3;\n }\n // Thin line\n ctx.fillRect(topX + x_shift, topY, 1, botY - topY);\n // Thick line\n ctx.fillRect(topX - thickLineOffset, topY, variableWidth, botY - topY);\n}\n/** StaveConnector implements the connector lines between staves of a system. */\nexport class StaveConnector extends Element {\n constructor(top_stave, bottom_stave) {\n super();\n this.thickness = Tables.STAVE_LINE_THICKNESS;\n this.width = 3;\n this.top_stave = top_stave;\n this.bottom_stave = bottom_stave;\n this.type = StaveConnector.type.DOUBLE;\n this.resetFont();\n // 1. Offset Bold Double Left to align with offset Repeat Begin bars\n // 2. Offset BRACE type not to overlap with another StaveConnector\n this.x_shift = 0;\n this.texts = [];\n }\n static get CATEGORY() {\n return Category.StaveConnector;\n }\n /**\n * Set type.\n * @param type see {@link StaveConnector.type} & {@link StaveConnector.typeString}\n */\n setType(type) {\n const newType = typeof type === 'string' ? StaveConnector.typeString[type] : type;\n // Be certain that the type is a valid type:\n if (Object.values(StaveConnector.type).includes(newType)) {\n this.type = newType;\n }\n return this;\n }\n /**\n * Get type.\n * @returns number {@link StaveConnector.type}\n */\n getType() {\n return this.type;\n }\n /** Set optional associated Text. */\n setText(text, options = {}) {\n this.texts.push({\n content: text,\n options: Object.assign({ shift_x: 0, shift_y: 0 }, options),\n });\n return this;\n }\n setXShift(x_shift) {\n if (typeof x_shift !== 'number') {\n throw new RuntimeError('InvalidType', 'x_shift must be a Number');\n }\n this.x_shift = x_shift;\n return this;\n }\n getXShift() {\n return this.x_shift;\n }\n /** Render connector and associated text. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let topY = this.top_stave.getYForLine(0);\n let botY = this.bottom_stave.getYForLine(this.bottom_stave.getNumLines() - 1) + this.thickness;\n let width = this.width;\n let topX = this.top_stave.getX();\n const isRightSidedConnector = this.type === StaveConnector.type.SINGLE_RIGHT ||\n this.type === StaveConnector.type.BOLD_DOUBLE_RIGHT ||\n this.type === StaveConnector.type.THIN_DOUBLE;\n if (isRightSidedConnector) {\n topX = this.top_stave.getX() + this.top_stave.getWidth();\n }\n let attachment_height = botY - topY;\n switch (this.type) {\n case StaveConnector.type.SINGLE:\n width = 1;\n break;\n case StaveConnector.type.SINGLE_LEFT:\n width = 1;\n break;\n case StaveConnector.type.SINGLE_RIGHT:\n width = 1;\n break;\n case StaveConnector.type.DOUBLE:\n topX -= this.width + 2;\n topY -= this.thickness;\n attachment_height += 0.5;\n break;\n case StaveConnector.type.BRACE: {\n width = 12;\n // May need additional code to draw brace\n const x1 = this.top_stave.getX() - 2 + this.x_shift;\n const y1 = topY;\n const x3 = x1;\n const y3 = botY;\n const x2 = x1 - width;\n const y2 = y1 + attachment_height / 2.0;\n const cpx1 = x2 - 0.9 * width;\n const cpy1 = y1 + 0.2 * attachment_height;\n const cpx2 = x1 + 1.1 * width;\n const cpy2 = y2 - 0.135 * attachment_height;\n const cpx3 = cpx2;\n const cpy3 = y2 + 0.135 * attachment_height;\n const cpx4 = cpx1;\n const cpy4 = y3 - 0.2 * attachment_height;\n const cpx5 = x2 - width;\n const cpy5 = cpy4;\n const cpx6 = x1 + 0.4 * width;\n const cpy6 = y2 + 0.135 * attachment_height;\n const cpx7 = cpx6;\n const cpy7 = y2 - 0.135 * attachment_height;\n const cpx8 = cpx5;\n const cpy8 = cpy1;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);\n ctx.bezierCurveTo(cpx3, cpy3, cpx4, cpy4, x3, y3);\n ctx.bezierCurveTo(cpx5, cpy5, cpx6, cpy6, x2, y2);\n ctx.bezierCurveTo(cpx7, cpy7, cpx8, cpy8, x1, y1);\n ctx.fill();\n ctx.stroke();\n break;\n }\n case StaveConnector.type.BRACKET:\n topY -= 6;\n botY += 6;\n attachment_height = botY - topY;\n Glyph.renderGlyph(ctx, topX - 5, topY, 40, 'bracketTop');\n Glyph.renderGlyph(ctx, topX - 5, botY, 40, 'bracketBottom');\n topX -= this.width + 2;\n break;\n case StaveConnector.type.BOLD_DOUBLE_LEFT:\n drawBoldDoubleLine(ctx, this.type, topX + this.x_shift, topY, botY - this.thickness);\n break;\n case StaveConnector.type.BOLD_DOUBLE_RIGHT:\n drawBoldDoubleLine(ctx, this.type, topX, topY, botY - this.thickness);\n break;\n case StaveConnector.type.THIN_DOUBLE:\n width = 1;\n attachment_height -= this.thickness;\n break;\n case StaveConnector.type.NONE:\n break;\n default:\n throw new RuntimeError('InvalidType', `The provided StaveConnector.type (${this.type}) is invalid.`);\n }\n if (this.type !== StaveConnector.type.BRACE &&\n this.type !== StaveConnector.type.BOLD_DOUBLE_LEFT &&\n this.type !== StaveConnector.type.BOLD_DOUBLE_RIGHT &&\n this.type !== StaveConnector.type.NONE) {\n ctx.fillRect(topX, topY, width, attachment_height);\n }\n // If the connector is a thin double barline, draw the paralell line\n if (this.type === StaveConnector.type.THIN_DOUBLE) {\n ctx.fillRect(topX - 3, topY, width, attachment_height);\n }\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n // Add stave connector text\n for (let i = 0; i < this.texts.length; i++) {\n const text = this.texts[i];\n const text_width = ctx.measureText('' + text.content).width;\n const x = this.top_stave.getX() - text_width - 24 + text.options.shift_x;\n const y = (this.top_stave.getYForLine(0) + this.bottom_stave.getBottomLineY()) / 2 + text.options.shift_y;\n ctx.fillText('' + text.content, x, y + 4);\n }\n ctx.restore();\n }\n}\nStaveConnector.TEXT_FONT = {\n family: Font.SERIF,\n size: 16,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n/**\n * SINGLE_LEFT and SINGLE are the same value for compatibility\n * with older versions of vexflow which didn't have right sided\n * stave connectors.\n */\nStaveConnector.type = {\n SINGLE_RIGHT: 0,\n SINGLE_LEFT: 1,\n SINGLE: 1,\n DOUBLE: 2,\n BRACE: 3,\n BRACKET: 4,\n BOLD_DOUBLE_LEFT: 5,\n BOLD_DOUBLE_RIGHT: 6,\n THIN_DOUBLE: 7,\n NONE: 8,\n};\n/**\n * Connector type:\n * * \"singleRight\"\n * * \"singleLeft\"\n * * \"single\"\n * * \"double\"\n * * \"brace\"\n * * \"bracket\"\n * * \"boldDoubleLeft\"\n * * \"boldDoubleRight\"\n * * \"thinDouble\"\n * * \"none\"\n */\nStaveConnector.typeString = {\n singleRight: StaveConnector.type.SINGLE_RIGHT,\n singleLeft: StaveConnector.type.SINGLE_LEFT,\n single: StaveConnector.type.SINGLE,\n double: StaveConnector.type.DOUBLE,\n brace: StaveConnector.type.BRACE,\n bracket: StaveConnector.type.BRACKET,\n boldDoubleLeft: StaveConnector.type.BOLD_DOUBLE_LEFT,\n boldDoubleRight: StaveConnector.type.BOLD_DOUBLE_RIGHT,\n thinDouble: StaveConnector.type.THIN_DOUBLE,\n none: StaveConnector.type.NONE,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Beam } from './beam';\nimport { Font } from './font';\nimport { Fraction } from './fraction';\nimport { ModifierContext } from './modifiercontext';\nimport { Stave } from './stave';\nimport { StaveConnector } from './staveconnector';\nimport { Tables } from './tables';\nimport { TickContext } from './tickcontext';\nimport { isNote, isStaveNote } from './typeguard';\nimport { defined, log, midLine, RuntimeError } from './util';\nimport { Voice } from './voice';\n// Helper function\nconst sumArray = (arr) => arr.reduce((a, b) => a + b, 0);\n/**\n * Create `Alignment`s for each tick in `voices`. Also calculate the\n * total number of ticks in voices.\n */\nfunction createContexts(voices, makeContext, addToContext) {\n if (voices.length == 0)\n return {\n map: {},\n array: [],\n list: [],\n resolutionMultiplier: 0,\n };\n // Initialize tick maps.\n const tickToContextMap = {};\n const tickList = [];\n const contexts = [];\n const resolutionMultiplier = Formatter.getResolutionMultiplier(voices);\n // For each voice, extract notes and create a context for every\n // new tick that hasn't been seen before.\n voices.forEach((voice, voiceIndex) => {\n // Use resolution multiplier as denominator so that no additional expansion\n // of fractional tick values is needed.\n const ticksUsed = new Fraction(0, resolutionMultiplier);\n voice.getTickables().forEach((tickable) => {\n const integerTicks = ticksUsed.numerator;\n // If we have no tick context for this tick, create one.\n if (!tickToContextMap[integerTicks]) {\n const newContext = makeContext({ tickID: integerTicks });\n contexts.push(newContext);\n tickToContextMap[integerTicks] = newContext;\n // Maintain a list of unique integerTicks.\n tickList.push(integerTicks);\n }\n // Add this tickable to the TickContext.\n addToContext(tickable, tickToContextMap[integerTicks], voiceIndex);\n ticksUsed.add(tickable.getTicks());\n });\n });\n return {\n map: tickToContextMap,\n array: contexts,\n list: tickList.sort((a, b) => a - b),\n resolutionMultiplier,\n };\n}\n// eslint-disable-next-line\nfunction L(...args) {\n if (Formatter.DEBUG)\n log('Vex.Flow.Formatter', args);\n}\n/**\n * Get the rest line number of the next non-rest note(s).\n * @param notes array of Notes\n * @param currRestLine\n * @param currNoteIndex current note index\n * @param compare if true, return the midpoint between the current rest line and the next rest line\n * @returns a line number, which determines the vertical position of a rest.\n */\nfunction getRestLineForNextNoteGroup(notes, currRestLine, currNoteIndex, compare) {\n // If no valid next note group, nextRestLine is same as current.\n let nextRestLine = currRestLine;\n // Start with the next note and keep going until we find a valid non-rest note group.\n for (let noteIndex = currNoteIndex + 1; noteIndex < notes.length; noteIndex++) {\n const note = notes[noteIndex];\n if (isNote(note) && !note.isRest() && !note.shouldIgnoreTicks()) {\n nextRestLine = note.getLineForRest();\n break;\n }\n }\n // Locate the mid point between two lines.\n if (compare && currRestLine !== nextRestLine) {\n const top = Math.max(currRestLine, nextRestLine);\n const bot = Math.min(currRestLine, nextRestLine);\n nextRestLine = midLine(top, bot);\n }\n return nextRestLine;\n}\n/**\n * Format implements the formatting and layout algorithms that are used\n * to position notes in a voice. The algorithm can align multiple voices both\n * within a stave, and across multiple staves.\n *\n * To do this, the formatter breaks up voices into a grid of rational-valued\n * `ticks`, to which each note is assigned. Then, minimum widths are assigned\n * to each tick based on the widths of the notes and modifiers in that tick. This\n * establishes the smallest amount of space required for each tick.\n *\n * Finally, the formatter distributes the left over space proportionally to\n * all the ticks, setting the `x` values of the notes in each tick.\n *\n * See `tests/formatter_tests.ts` for usage examples. The helper functions included\n * here (`FormatAndDraw`, `FormatAndDrawTab`) also serve as useful usage examples.\n */\nexport class Formatter {\n constructor(options) {\n this.formatterOptions = Object.assign({ globalSoftmax: false, softmaxFactor: Tables.SOFTMAX_FACTOR, maxIterations: 5 }, options);\n this.justifyWidth = 0;\n this.totalCost = 0;\n this.totalShift = 0;\n this.durationStats = {};\n // Minimum width required to render all the notes in the voices.\n this.minTotalWidth = 0;\n // This is set to `true` after `minTotalWidth` is calculated.\n this.hasMinTotalWidth = false;\n // Arrays of tick and modifier contexts.\n this.tickContexts = {\n map: {},\n array: [],\n list: [],\n resolutionMultiplier: 0,\n };\n this.modifierContexts = [];\n // Gaps between contexts, for free movement of notes post\n // formatting.\n this.contextGaps = {\n total: 0,\n gaps: [],\n };\n this.voices = [];\n this.lossHistory = [];\n }\n /**\n * Helper function to layout \"notes\" one after the other without\n * regard for proportions. Useful for tests and debugging.\n */\n static SimpleFormat(notes, x = 0, { paddingBetween = 10 } = {}) {\n notes.reduce((accumulator, note) => {\n note.addToModifierContext(new ModifierContext());\n const tick = new TickContext().addTickable(note).preFormat();\n const metrics = tick.getMetrics();\n tick.setX(accumulator + metrics.totalLeftPx);\n return accumulator + tick.getWidth() + metrics.totalRightPx + paddingBetween;\n }, x);\n }\n /** Helper function to plot formatter debug info. */\n static plotDebugging(ctx, formatter, xPos, y1, y2, options) {\n options = Object.assign({ stavePadding: Tables.currentMusicFont().lookupMetric('stave.padding') }, options);\n const x = xPos + options.stavePadding;\n const contextGaps = formatter.contextGaps;\n function stroke(x1, x2, color) {\n ctx.beginPath();\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n ctx.setLineWidth(1);\n ctx.fillRect(x1, y1, Math.max(x2 - x1, 0), y2 - y1);\n }\n ctx.save();\n ctx.setFont(Font.SANS_SERIF, 8);\n contextGaps.gaps.forEach((gap) => {\n stroke(x + gap.x1, x + gap.x2, 'rgba(100,200,100,0.4)');\n ctx.setFillStyle('green');\n ctx.fillText(Math.round(gap.x2 - gap.x1).toString(), x + gap.x1, y2 + 12);\n });\n ctx.setFillStyle('red');\n ctx.fillText(`Loss: ${(formatter.totalCost || 0).toFixed(2)} Shift: ${(formatter.totalShift || 0).toFixed(2)} Gap: ${contextGaps.total.toFixed(2)}`, x - 20, y2 + 27);\n ctx.restore();\n }\n /**\n * Helper function to format and draw a single voice. Returns a bounding\n * box for the notation.\n * @param ctx the rendering context\n * @param stave the stave to which to draw (`Stave` or `TabStave`)\n * @param notes array of `Note` instances (`Note`, `TextNote`, `TabNote`, etc.)\n * @param params one of below:\n * * Setting `autobeam` only `(context, stave, notes, true)` or\n * `(ctx, stave, notes, {autobeam: true})`\n * * Setting `align_rests` a struct is needed `(context, stave, notes, {align_rests: true})`\n * * Setting both a struct is needed `(context, stave, notes, {\n * autobeam: true, align_rests: true})`\n * * `autobeam` automatically generates beams for the notes.\n * * `align_rests` aligns rests with nearby notes.\n */\n static FormatAndDraw(ctx, stave, notes, params) {\n let options = {\n auto_beam: false,\n align_rests: false,\n };\n if (typeof params === 'object') {\n options = Object.assign(Object.assign({}, options), params);\n }\n else if (typeof params === 'boolean') {\n options.auto_beam = params;\n }\n // Start by creating a voice and adding all the notes to it.\n const voice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(notes);\n // Then create beams, if requested.\n const beams = options.auto_beam ? Beam.applyAndGetBeams(voice) : [];\n // Instantiate a `Formatter` and format the notes.\n new Formatter()\n .joinVoices([voice]) // , { align_rests: options.align_rests })\n .formatToStave([voice], stave, { align_rests: options.align_rests, stave });\n // Render the voice and beams to the stave.\n voice.setStave(stave).draw(ctx, stave);\n beams.forEach((beam) => beam.setContext(ctx).draw());\n // Return the bounding box of the voice.\n return voice.getBoundingBox();\n }\n /**\n * Helper function to format and draw aligned tab and stave notes in two\n * separate staves.\n * @param ctx the rendering context\n * @param tabstave a `TabStave` instance on which to render `TabNote`s.\n * @param stave a `Stave` instance on which to render `Note`s.\n * @param notes array of `Note` instances for the stave (`Note`, `BarNote`, etc.)\n * @param tabnotes array of `Note` instances for the tab stave (`TabNote`, `BarNote`, etc.)\n * @param autobeam automatically generate beams.\n * @param params a configuration object:\n * * `autobeam` automatically generates beams for the notes.\n * * `align_rests` aligns rests with nearby notes.\n */\n static FormatAndDrawTab(ctx, tabstave, stave, tabnotes, notes, autobeam, params) {\n let opts = {\n auto_beam: autobeam,\n align_rests: false,\n };\n if (typeof params === 'object') {\n opts = Object.assign(Object.assign({}, opts), params);\n }\n else if (typeof params === 'boolean') {\n opts.auto_beam = params;\n }\n // Create a `4/4` voice for `notes`.\n const notevoice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(notes);\n // Create a `4/4` voice for `tabnotes`.\n const tabvoice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(tabnotes);\n // Then create beams, if requested.\n const beams = opts.auto_beam ? Beam.applyAndGetBeams(notevoice) : [];\n // Instantiate a `Formatter` and align tab and stave notes.\n new Formatter()\n .joinVoices([notevoice]) // , { align_rests: opts.align_rests })\n .joinVoices([tabvoice])\n .formatToStave([notevoice, tabvoice], stave, { align_rests: opts.align_rests });\n // Render voices and beams to staves.\n notevoice.draw(ctx, stave);\n tabvoice.draw(ctx, tabstave);\n beams.forEach((beam) => beam.setContext(ctx).draw());\n // Draw a connector between tab and note staves.\n new StaveConnector(stave, tabstave).setContext(ctx).draw();\n }\n /**\n * Automatically set the vertical position of rests based on previous/next note positions.\n * @param tickables an array of Tickables.\n * @param alignAllNotes If `false`, only align rests that are within a group of beamed notes.\n * @param alignTuplets If `false`, ignores tuplets.\n */\n static AlignRestsToNotes(tickables, alignAllNotes, alignTuplets) {\n tickables.forEach((currTickable, index) => {\n if (isStaveNote(currTickable) && currTickable.isRest()) {\n if (currTickable.getTuplet() && !alignTuplets) {\n return;\n }\n // If activated rests not on default can be rendered as specified.\n const position = currTickable.getGlyph().position.toUpperCase();\n if (position !== 'R/4' && position !== 'B/4') {\n return;\n }\n if (alignAllNotes || currTickable.getBeam()) {\n // Align rests with previous/next notes.\n const props = currTickable.getKeyProps()[0];\n if (index === 0) {\n props.line = getRestLineForNextNoteGroup(tickables, props.line, index, false);\n }\n else if (index > 0 && index < tickables.length) {\n // If previous tickable is a rest, use its line number.\n const prevTickable = tickables[index - 1];\n if (isStaveNote(prevTickable)) {\n if (prevTickable.isRest()) {\n props.line = prevTickable.getKeyProps()[0].line;\n }\n else {\n const restLine = prevTickable.getLineForRest();\n // Get the rest line for next valid non-rest note group.\n props.line = getRestLineForNextNoteGroup(tickables, restLine, index, true);\n }\n }\n }\n currTickable.setKeyLine(0, props.line);\n }\n }\n });\n }\n /**\n * Find all the rests in each of the `voices` and align them to neighboring notes.\n *\n * @param voices\n * @param alignAllNotes If `false`, only align rests within beamed groups of notes. If `true`, align all rests.\n */\n alignRests(voices, alignAllNotes) {\n if (!voices || !voices.length) {\n throw new RuntimeError('BadArgument', 'No voices to format rests');\n }\n voices.forEach((voice) => Formatter.AlignRestsToNotes(voice.getTickables(), alignAllNotes));\n }\n /**\n * Estimate the width required to render 'voices'. This is done by:\n * 1. Sum the widths of all the tick contexts\n * 2. Estimate the padding.\n * The latter is done by calculating the padding 3 different ways, and taking the\n * greatest value:\n * 1. the padding required for unaligned notes in different voices\n * 2. the padding based on the stddev of the tickable widths\n * 3. the padding based on the stddev of the tickable durations.\n *\n * The last 2 quantities estimate a 'width entropy', where notes might need more\n * room than the proportional formatting gives them. A measure of all same duration\n * and width will need no extra padding, and all these quantities will be\n * zero in that case.\n *\n * Note: joinVoices has to be called before calling preCalculateMinTotalWidth.\n *\n * @param voices the voices that contain the notes\n * @returns the estimated width in pixels\n */\n preCalculateMinTotalWidth(voices) {\n const unalignedPadding = Tables.currentMusicFont().lookupMetric('stave.unalignedNotePadding');\n // Calculate additional padding based on 3 methods:\n // 1) unaligned beats in voices, 2) variance of width, 3) variance of durations\n let unalignedCtxCount = 0;\n let wsum = 0;\n let dsum = 0;\n const widths = [];\n const durations = [];\n // Cache results.\n if (this.hasMinTotalWidth)\n return this.minTotalWidth;\n // Create tick contexts.\n if (!voices) {\n throw new RuntimeError('BadArgument', \"'voices' required to run preCalculateMinTotalWidth\");\n }\n this.createTickContexts(voices);\n // eslint-disable-next-line\n const { list: contextList, map: contextMap } = this.tickContexts;\n this.minTotalWidth = 0;\n // Go through each tick context and calculate total width,\n // and also accumulate values used in padding hints\n contextList.forEach((tick) => {\n const context = contextMap[tick];\n context.preFormat();\n // If this TC doesn't have all the voices on it, it's unaligned.\n // so increment the unaligned padding accumulator\n if (context.getTickables().length < voices.length) {\n unalignedCtxCount += 1;\n }\n // Calculate the 'width entropy' over all the Tickables.\n context.getTickables().forEach((t) => {\n wsum += t.getMetrics().width;\n dsum += t.getTicks().value();\n widths.push(t.getMetrics().width);\n durations.push(t.getTicks().value());\n });\n const width = context.getWidth();\n this.minTotalWidth += width;\n });\n this.hasMinTotalWidth = true;\n // normalized (0-1) STDDEV of widths/durations gives us padding hints.\n const wavg = wsum > 0 ? wsum / widths.length : 1 / widths.length;\n const wvar = sumArray(widths.map((ll) => Math.pow(ll - wavg, 2)));\n const wpads = Math.pow(wvar / widths.length, 0.5) / wavg;\n const davg = dsum / durations.length;\n const dvar = sumArray(durations.map((ll) => Math.pow(ll - davg, 2)));\n const dpads = Math.pow(dvar / durations.length, 0.5) / davg;\n // Find max of 3 methods pad the width with that\n const padmax = Math.max(dpads, wpads) * contextList.length * unalignedPadding;\n const unalignedPad = unalignedPadding * unalignedCtxCount;\n return this.minTotalWidth + Math.max(unalignedPad, padmax);\n }\n /**\n * Get minimum width required to render all voices. Either `format` or\n * `preCalculateMinTotalWidth` must be called before this method.\n */\n getMinTotalWidth() {\n if (!this.hasMinTotalWidth) {\n throw new RuntimeError('NoMinTotalWidth', \"Call 'preCalculateMinTotalWidth' or 'preFormat' before calling 'getMinTotalWidth'\");\n }\n return this.minTotalWidth;\n }\n /** Calculate the resolution multiplier for `voices`. */\n static getResolutionMultiplier(voices) {\n if (!voices || !voices.length) {\n throw new RuntimeError('BadArgument', 'No voices to format');\n }\n const totalTicks = voices[0].getTotalTicks();\n const resolutionMultiplier = voices.reduce((accumulator, voice) => {\n if (!voice.getTotalTicks().equals(totalTicks)) {\n throw new RuntimeError('TickMismatch', 'Voices should have same total note duration in ticks.');\n }\n if (voice.getMode() === Voice.Mode.STRICT && !voice.isComplete()) {\n throw new RuntimeError('IncompleteVoice', 'Voice does not have enough notes.');\n }\n return Math.max(accumulator, Fraction.LCM(accumulator, voice.getResolutionMultiplier()));\n }, 1);\n return resolutionMultiplier;\n }\n /** Create a `ModifierContext` for each tick in `voices`. */\n createModifierContexts(voices) {\n if (voices.length == 0)\n return;\n const resolutionMultiplier = Formatter.getResolutionMultiplier(voices);\n // Initialize tick maps.\n const tickToContextMap = new Map();\n const contexts = [];\n // For each voice, extract notes and create a context for every\n // new tick that hasn't been seen before.\n voices.forEach((voice) => {\n // Use resolution multiplier as denominator so that no additional expansion\n // of fractional tick values is needed.\n const ticksUsed = new Fraction(0, resolutionMultiplier);\n voice.getTickables().forEach((tickable) => {\n const integerTicks = ticksUsed.numerator;\n let staveTickToContextMap = tickToContextMap.get(tickable.getStave());\n // If we have no tick context for this tick, create one.\n if (!staveTickToContextMap) {\n tickToContextMap.set(tickable.getStave(), {});\n staveTickToContextMap = tickToContextMap.get(tickable.getStave());\n }\n if (!(staveTickToContextMap ? staveTickToContextMap[integerTicks] : undefined)) {\n const newContext = new ModifierContext();\n contexts.push(newContext);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n staveTickToContextMap[integerTicks] = newContext;\n }\n // Add this tickable to the TickContext.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n tickable.addToModifierContext(staveTickToContextMap[integerTicks]);\n ticksUsed.add(tickable.getTicks());\n });\n });\n this.modifierContexts.push({\n map: tickToContextMap,\n array: contexts,\n resolutionMultiplier,\n });\n }\n /**\n * Create a `TickContext` for each tick in `voices`. Also calculate the\n * total number of ticks in voices.\n */\n createTickContexts(voices) {\n const fn = (tickable, context, voiceIndex) => context.addTickable(tickable, voiceIndex);\n const contexts = createContexts(voices, (tick) => new TickContext(tick), fn);\n this.tickContexts = contexts;\n const contextArray = this.tickContexts.array;\n contextArray.forEach((context) => {\n context.tContexts = contextArray;\n });\n return contexts;\n }\n /**\n * Get the AlignmentContexts of TickContexts that were created by createTickContexts.\n * Returns undefined if createTickContexts has not yet been run.\n */\n getTickContexts() {\n return this.tickContexts;\n }\n /**\n * This is the core formatter logic. Format voices and justify them\n * to `justifyWidth` pixels. `renderingContext` is required to justify elements\n * that can't retrieve widths without a canvas. This method sets the `x` positions\n * of all the tickables/notes in the formatter.\n */\n preFormat(justifyWidth = 0, renderingContext, voicesParam, stave) {\n // Initialize context maps.\n const contexts = this.tickContexts;\n if (!contexts) {\n throw new RuntimeError('NoTickContexts', 'preFormat requires TickContexts');\n }\n const { list: contextList, map: contextMap } = contexts;\n // Reset loss history for evaluator.\n this.lossHistory = [];\n // If voices and a stave were provided, set the Stave for each voice\n // and preFormat to apply Y values to the notes;\n if (voicesParam && stave) {\n voicesParam.forEach((voice) => voice.setStave(stave).preFormat());\n }\n // Now distribute the ticks to each tick context, and assign them their\n // own X positions.\n let x = 0;\n let shift = 0;\n this.minTotalWidth = 0;\n let totalTicks = 0;\n // Pass 1: Give each note maximum width requested by context.\n contextList.forEach((tick) => {\n const context = contextMap[tick];\n // Make sure that all tickables in this context have calculated their\n // space requirements.\n context.preFormat();\n const width = context.getWidth();\n this.minTotalWidth += width;\n const maxTicks = context.getMaxTicks().value();\n totalTicks += maxTicks;\n const metrics = context.getMetrics();\n x = x + shift + metrics.totalLeftPx;\n context.setX(x);\n // Calculate shift for the next tick.\n shift = width - metrics.totalLeftPx;\n });\n // Use softmax based on all notes across all staves. (options.globalSoftmax)\n const { globalSoftmax, softmaxFactor, maxIterations } = this.formatterOptions;\n const exp = (tick) => Math.pow(softmaxFactor, (contextMap[tick].getMaxTicks().value() / totalTicks));\n const expTicksUsed = sumArray(contextList.map(exp));\n this.minTotalWidth = x + shift;\n this.hasMinTotalWidth = true;\n // No justification needed. End formatting.\n if (justifyWidth <= 0)\n return this.evaluate();\n // Start justification. Subtract the right extra pixels of the final context because the formatter\n // justifies based on the context's X position, which is the left-most part of the note head.\n const firstContext = contextMap[contextList[0]];\n const lastContext = contextMap[contextList[contextList.length - 1]];\n // Calculate the \"distance error\" between the tick contexts. The expected distance is the spacing proportional to\n // the softmax of the ticks.\n function calculateIdealDistances(adjustedJustifyWidth) {\n const distances = contextList.map((tick, i) => {\n const context = contextMap[tick];\n const voices = context.getTickablesByVoice();\n let backTickable;\n if (i > 0) {\n const prevContext = contextMap[contextList[i - 1]];\n // Go through each tickable and search backwards for another tickable\n // in the same voice. If found, use that duration (ticks) to calculate\n // the expected distance.\n for (let j = i - 1; j >= 0; j--) {\n const backTick = contextMap[contextList[j]];\n const backVoices = backTick.getTickablesByVoice();\n // Look for matching voices between tick contexts.\n const matchingVoices = [];\n Object.keys(voices).forEach((v) => {\n if (backVoices[v]) {\n matchingVoices.push(v);\n }\n });\n if (matchingVoices.length > 0) {\n // Found matching voices, get largest duration\n let maxTicks = 0;\n let maxNegativeShiftPx = Infinity;\n let expectedDistance = 0;\n matchingVoices.forEach((v) => {\n const ticks = backVoices[v].getTicks().value();\n if (ticks > maxTicks) {\n backTickable = backVoices[v];\n maxTicks = ticks;\n }\n // Calculate the limits of the shift based on modifiers, etc.\n const thisTickable = voices[v];\n const insideLeftEdge = thisTickable.getX() -\n (thisTickable.getMetrics().modLeftPx + thisTickable.getMetrics().leftDisplacedHeadPx);\n const backMetrics = backVoices[v].getMetrics();\n const insideRightEdge = backVoices[v].getX() + backMetrics.notePx + backMetrics.modRightPx + backMetrics.rightDisplacedHeadPx;\n // Don't allow shifting if notes in the same voice can collide\n maxNegativeShiftPx = Math.min(maxNegativeShiftPx, insideLeftEdge - insideRightEdge);\n });\n // Don't shift further left than the notehead of the last context. Actually, stay at most 5% to the right\n // so that two different tick contexts don't align across staves.\n maxNegativeShiftPx = Math.min(maxNegativeShiftPx, context.getX() - (prevContext.getX() + adjustedJustifyWidth * 0.05));\n // Calculate the expected distance of the current context from the last matching tickable. The\n // distance is scaled down by the softmax for the voice.\n if (globalSoftmax) {\n const t = totalTicks;\n expectedDistance = (Math.pow(softmaxFactor, (maxTicks / t)) / expTicksUsed) * adjustedJustifyWidth;\n }\n else if (typeof backTickable !== 'undefined') {\n expectedDistance = backTickable.getVoice().softmax(maxTicks) * adjustedJustifyWidth;\n }\n return {\n expectedDistance,\n maxNegativeShiftPx,\n fromTickable: backTickable,\n };\n }\n }\n }\n return { expectedDistance: 0, fromTickablePx: 0, maxNegativeShiftPx: 0 };\n });\n return distances;\n }\n function shiftToIdealDistances(idealDistances) {\n // Distribute ticks to the contexts based on the calculated distance error.\n const centerX = adjustedJustifyWidth / 2;\n let spaceAccum = 0;\n contextList.forEach((tick, index) => {\n const context = contextMap[tick];\n if (index > 0) {\n const contextX = context.getX();\n const ideal = idealDistances[index];\n const errorPx = defined(ideal.fromTickable).getX() + ideal.expectedDistance - (contextX + spaceAccum);\n let negativeShiftPx = 0;\n if (errorPx > 0) {\n spaceAccum += errorPx;\n }\n else if (errorPx < 0) {\n negativeShiftPx = Math.min(ideal.maxNegativeShiftPx, Math.abs(errorPx));\n spaceAccum += -negativeShiftPx;\n }\n context.setX(contextX + spaceAccum);\n }\n // Move center aligned tickables to middle\n context.getCenterAlignedTickables().forEach((tickable) => {\n tickable.setCenterXShift(centerX - context.getX());\n });\n });\n return lastContext.getX() - firstContext.getX();\n }\n const adjustedJustifyWidth = justifyWidth -\n lastContext.getMetrics().notePx -\n lastContext.getMetrics().totalRightPx -\n firstContext.getMetrics().totalLeftPx;\n const musicFont = Tables.currentMusicFont();\n const configMinPadding = musicFont.lookupMetric('stave.endPaddingMin');\n const configMaxPadding = musicFont.lookupMetric('stave.endPaddingMax');\n const leftPadding = musicFont.lookupMetric('stave.padding');\n let targetWidth = adjustedJustifyWidth;\n const distances = calculateIdealDistances(targetWidth);\n let actualWidth = shiftToIdealDistances(distances);\n // Just one context. Done formatting.\n if (contextList.length === 1)\n return 0;\n const calcMinDistance = (targetWidth, distances) => {\n let mdCalc = targetWidth / 2;\n if (distances.length > 1) {\n for (let di = 1; di < distances.length; ++di) {\n mdCalc = Math.min(distances[di].expectedDistance / 2, mdCalc);\n }\n }\n return mdCalc;\n };\n const minDistance = calcMinDistance(targetWidth, distances);\n // right justify to either the configured padding, or the min distance between notes, whichever is greatest.\n // This * 2 keeps the existing formatting unless there is 'a lot' of extra whitespace, which won't break\n // existing visual regression tests.\n const paddingMaxCalc = (curTargetWidth) => {\n let lastTickablePadding = 0;\n const lastTickable = lastContext && lastContext.getMaxTickable();\n if (lastTickable) {\n const voice = lastTickable.getVoice();\n // If the number of actual ticks in the measure <> configured ticks, right-justify\n // because the softmax won't yield the correct value\n if (voice.getTicksUsed().value() > voice.getTotalTicks().value()) {\n return configMaxPadding * 2 < minDistance ? minDistance : configMaxPadding;\n }\n const tickWidth = lastTickable.getWidth();\n lastTickablePadding =\n voice.softmax(lastContext.getMaxTicks().value()) * curTargetWidth - (tickWidth + leftPadding);\n }\n return configMaxPadding * 2 < lastTickablePadding ? lastTickablePadding : configMaxPadding;\n };\n let paddingMax = paddingMaxCalc(targetWidth);\n let paddingMin = paddingMax - (configMaxPadding - configMinPadding);\n const maxX = adjustedJustifyWidth - paddingMin;\n let iterations = maxIterations;\n // Adjust justification width until the right margin is as close as possible to the calculated padding,\n // without going over\n while ((actualWidth > maxX && iterations > 0) || (actualWidth + paddingMax < maxX && iterations > 1)) {\n targetWidth -= actualWidth - maxX;\n paddingMax = paddingMaxCalc(targetWidth);\n paddingMin = paddingMax - (configMaxPadding - configMinPadding);\n actualWidth = shiftToIdealDistances(calculateIdealDistances(targetWidth));\n iterations--;\n }\n this.justifyWidth = justifyWidth;\n return this.evaluate();\n }\n /** Calculate the total cost of this formatting decision. */\n evaluate() {\n const contexts = this.tickContexts;\n const justifyWidth = this.justifyWidth;\n // Calculate available slack per tick context. This works out how much freedom\n // to move a context has in either direction, without affecting other notes.\n this.contextGaps = { total: 0, gaps: [] };\n contexts.list.forEach((tick, index) => {\n if (index === 0)\n return;\n const prevTick = contexts.list[index - 1];\n const prevContext = contexts.map[prevTick];\n const context = contexts.map[tick];\n const prevMetrics = prevContext.getMetrics();\n const currMetrics = context.getMetrics();\n // Calculate X position of right edge of previous note\n const insideRightEdge = prevContext.getX() + prevMetrics.notePx + prevMetrics.totalRightPx;\n // Calculate X position of left edge of current note\n const insideLeftEdge = context.getX() - currMetrics.totalLeftPx;\n const gap = insideLeftEdge - insideRightEdge;\n this.contextGaps.total += gap;\n this.contextGaps.gaps.push({ x1: insideRightEdge, x2: insideLeftEdge });\n // Tell the tick contexts how much they can reposition themselves.\n context.getFormatterMetrics().freedom.left = gap;\n prevContext.getFormatterMetrics().freedom.right = gap;\n });\n // Calculate mean distance in each voice for each duration type, then calculate\n // how far each note is from the mean.\n this.durationStats = {};\n const durationStats = this.durationStats;\n function updateStats(duration, space) {\n const stats = durationStats[duration];\n if (stats === undefined) {\n durationStats[duration] = { mean: space, count: 1 };\n }\n else {\n stats.count += 1;\n stats.mean = (stats.mean + space) / 2;\n }\n }\n this.voices.forEach((voice) => {\n voice.getTickables().forEach((note, i, notes) => {\n const duration = note.getTicks().clone().simplify().toString();\n const metrics = note.getMetrics();\n const formatterMetrics = note.getFormatterMetrics();\n const leftNoteEdge = note.getX() + metrics.notePx + metrics.modRightPx + metrics.rightDisplacedHeadPx;\n let space = 0;\n if (i < notes.length - 1) {\n const rightNote = notes[i + 1];\n const rightMetrics = rightNote.getMetrics();\n const rightNoteEdge = rightNote.getX() - rightMetrics.modLeftPx - rightMetrics.leftDisplacedHeadPx;\n space = rightNoteEdge - leftNoteEdge;\n formatterMetrics.space.used = rightNote.getX() - note.getX();\n rightNote.getFormatterMetrics().freedom.left = space;\n }\n else {\n space = justifyWidth - leftNoteEdge;\n formatterMetrics.space.used = justifyWidth - note.getX();\n }\n formatterMetrics.freedom.right = space;\n updateStats(duration, formatterMetrics.space.used);\n });\n });\n // Calculate how much each note deviates from the mean. Loss function is square\n // root of the sum of squared deviations.\n let totalDeviation = 0;\n this.voices.forEach((voice) => {\n voice.getTickables().forEach((note) => {\n const duration = note.getTicks().clone().simplify().toString();\n const metrics = note.getFormatterMetrics();\n metrics.space.mean = durationStats[duration].mean;\n metrics.duration = duration;\n metrics.iterations += 1;\n metrics.space.deviation = metrics.space.used - metrics.space.mean;\n totalDeviation += Math.pow(metrics.space.deviation, 2);\n });\n });\n this.totalCost = Math.sqrt(totalDeviation);\n this.lossHistory.push(this.totalCost);\n return this.totalCost;\n }\n /**\n * Run a single iteration of rejustification. At a high level, this method calculates\n * the overall \"loss\" (or cost) of this layout, and repositions tickcontexts in an\n * attempt to reduce the cost. You can call this method multiple times until it finds\n * and oscillates around a global minimum.\n * @param options[alpha] the \"learning rate\" for the formatter. It determines how much of a shift\n * the formatter should make based on its cost function.\n */\n tune(options) {\n var _a;\n const contexts = this.tickContexts;\n if (!contexts) {\n return 0;\n }\n const alpha = (_a = options === null || options === void 0 ? void 0 : options.alpha) !== null && _a !== void 0 ? _a : 0.5;\n // Move `current` tickcontext by `shift` pixels, and adjust the freedom\n // on adjacent tickcontexts.\n function move(current, shift, prev, next) {\n current.setX(current.getX() + shift);\n current.getFormatterMetrics().freedom.left += shift;\n current.getFormatterMetrics().freedom.right -= shift;\n if (prev)\n prev.getFormatterMetrics().freedom.right += shift;\n if (next)\n next.getFormatterMetrics().freedom.left -= shift;\n }\n let shift = 0;\n this.totalShift = 0;\n contexts.list.forEach((tick, index, list) => {\n const context = contexts.map[tick];\n const prevContext = index > 0 ? contexts.map[list[index - 1]] : undefined;\n const nextContext = index < list.length - 1 ? contexts.map[list[index + 1]] : undefined;\n move(context, shift, prevContext, nextContext);\n const cost = -sumArray(context.getTickables().map((t) => t.getFormatterMetrics().space.deviation));\n if (cost > 0) {\n shift = -Math.min(context.getFormatterMetrics().freedom.right, Math.abs(cost));\n }\n else if (cost < 0) {\n if (nextContext) {\n shift = Math.min(nextContext.getFormatterMetrics().freedom.right, Math.abs(cost));\n }\n else {\n shift = 0;\n }\n }\n shift *= alpha;\n this.totalShift += shift;\n });\n return this.evaluate();\n }\n /**\n * This is the top-level call for all formatting logic completed\n * after `x` *and* `y` values have been computed for the notes\n * in the voices.\n */\n postFormat() {\n this.modifierContexts.forEach((modifierContexts) => {\n modifierContexts.array.forEach((mc) => mc.postFormat());\n });\n this.tickContexts.list.forEach((tick) => {\n this.tickContexts.map[tick].postFormat();\n });\n return this;\n }\n /**\n * Take all `voices` and create `ModifierContext`s out of them. This tells\n * the formatters that the voices belong on a single stave.\n */\n joinVoices(voices) {\n this.createModifierContexts(voices);\n this.hasMinTotalWidth = false;\n return this;\n }\n /**\n * Align rests in voices, justify the contexts, and position the notes\n * so voices are aligned and ready to render onto the stave. This method\n * mutates the `x` positions of all tickables in `voices`.\n *\n * Voices are full justified to fit in `justifyWidth` pixels.\n *\n * Set `options.context` to the rendering context. Set `options.align_rests`\n * to true to enable rest alignment.\n */\n format(voices, justifyWidth, options) {\n const opts = Object.assign({ align_rests: false }, options);\n this.voices = voices;\n const softmaxFactor = this.formatterOptions.softmaxFactor;\n if (softmaxFactor) {\n this.voices.forEach((v) => v.setSoftmaxFactor(softmaxFactor));\n }\n this.alignRests(voices, opts.align_rests);\n this.createTickContexts(voices);\n this.preFormat(justifyWidth, opts.context, voices, opts.stave);\n // Only postFormat if a stave was supplied for y value formatting\n if (opts.stave)\n this.postFormat();\n return this;\n }\n // This method is just like `format` except that the `justifyWidth` is inferred from the `stave`.\n formatToStave(voices, stave, optionsParam) {\n const options = Object.assign({ context: stave.getContext() }, optionsParam);\n // eslint-disable-next-line\n const justifyWidth = stave.getNoteEndX() - stave.getNoteStartX() - Stave.defaultPadding;\n L('Formatting voices to width: ', justifyWidth);\n return this.format(voices, justifyWidth, options);\n }\n getTickContext(tick) {\n var _a;\n return (_a = this.tickContexts) === null || _a === void 0 ? void 0 : _a.map[tick];\n }\n}\n// To enable logging for this class. Set `Vex.Flow.Formatter.DEBUG` to `true`.\nFormatter.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n/**\n * ## Description\n *\n * Create a new tuplet from the specified notes. The notes must\n * be part of the same voice. If they are of different rhythmic\n * values, then options.num_notes must be set.\n *\n * @constructor\n * @param {Array.} A set of notes: staveNotes,\n * notes, etc... any class that inherits stemmableNote at some\n * point in its prototype chain.\n * @param options: object {\n *\n * num_notes: fit this many notes into...\n * notes_occupied: ...the space of this many notes\n *\n * Together, these two properties make up the tuplet ratio\n * in the form of num_notes : notes_occupied.\n * num_notes defaults to the number of notes passed in, so\n * it is important that if you omit this property, all of\n * the notes passed should be of the same note value.\n * notes_occupied defaults to 2 -- so you should almost\n * certainly pass this parameter for anything other than\n * a basic triplet.\n *\n * location:\n * default 1, which is above the notes: ┌─── 3 ───┐\n * -1 is below the notes └─── 3 ───┘\n *\n * bracketed: boolean, draw a bracket around the tuplet number\n * when true: ┌─── 3 ───┐ when false: 3\n * defaults to true if notes are not beamed, false otherwise\n *\n * ratioed: boolean\n * when true: ┌─── 7:8 ───┐, when false: ┌─── 7 ───┐\n * defaults to true if the difference between num_notes and\n * notes_occupied is greater than 1.\n *\n * y_offset: int, default 0\n * manually offset a tuplet, for instance to avoid collisions\n * with articulations, etc...\n * }\n */\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { Glyph } from './glyph';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var TupletLocation;\n(function (TupletLocation) {\n TupletLocation[TupletLocation[\"BOTTOM\"] = -1] = \"BOTTOM\";\n TupletLocation[TupletLocation[\"TOP\"] = 1] = \"TOP\";\n})(TupletLocation || (TupletLocation = {}));\nexport class Tuplet extends Element {\n constructor(notes, options = {}) {\n super();\n this.numerator_glyphs = [];\n this.denom_glyphs = [];\n if (!notes || !notes.length) {\n throw new RuntimeError('BadArguments', 'No notes provided for tuplet.');\n }\n this.options = options;\n this.notes = notes;\n this.num_notes = this.options.num_notes != undefined ? this.options.num_notes : notes.length;\n // We accept beats_occupied, but warn that it's deprecated:\n // the preferred property name is now notes_occupied.\n if (this.options.beats_occupied) {\n this.beatsOccupiedDeprecationWarning();\n }\n this.notes_occupied = this.options.notes_occupied || this.options.beats_occupied || 2;\n if (this.options.bracketed != undefined) {\n this.bracketed = this.options.bracketed;\n }\n else {\n this.bracketed = notes.some((note) => !note.hasBeam());\n }\n this.ratioed =\n this.options.ratioed != undefined ? this.options.ratioed : Math.abs(this.notes_occupied - this.num_notes) > 1;\n this.point = Tables.currentMusicFont().lookupMetric('digits.tupletPoint');\n this.y_pos = 16;\n this.x_pos = 100;\n this.width = 200;\n this.setTupletLocation(this.options.location || Tuplet.LOCATION_TOP);\n Formatter.AlignRestsToNotes(notes, true, true);\n this.resolveGlyphs();\n this.attach();\n }\n static get CATEGORY() {\n return Category.Tuplet;\n }\n static get LOCATION_TOP() {\n return TupletLocation.TOP;\n }\n static get LOCATION_BOTTOM() {\n return TupletLocation.BOTTOM;\n }\n static get NESTING_OFFSET() {\n return 15;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.tuplet;\n }\n attach() {\n for (let i = 0; i < this.notes.length; i++) {\n const note = this.notes[i];\n note.setTuplet(this);\n }\n }\n detach() {\n for (let i = 0; i < this.notes.length; i++) {\n const note = this.notes[i];\n note.resetTuplet(this);\n }\n }\n /**\n * Set whether or not the bracket is drawn.\n */\n setBracketed(bracketed) {\n this.bracketed = !!bracketed;\n return this;\n }\n /**\n * Set whether or not the ratio is shown.\n */\n setRatioed(ratioed) {\n this.ratioed = !!ratioed;\n return this;\n }\n /**\n * Set the tuplet indicator to be displayed either on the top or bottom of the stave.\n */\n setTupletLocation(location) {\n if (location !== Tuplet.LOCATION_TOP && location !== Tuplet.LOCATION_BOTTOM) {\n // eslint-disable-next-line\n console.warn(`Invalid tuplet location [${location}]. Using Tuplet.LOCATION_TOP.`);\n location = Tuplet.LOCATION_TOP;\n }\n this.location = location;\n return this;\n }\n getNotes() {\n return this.notes;\n }\n getNoteCount() {\n return this.num_notes;\n }\n beatsOccupiedDeprecationWarning() {\n // eslint-disable-next-line\n console.warn('beats_occupied has been deprecated as an option for tuplets. Please use notes_occupied instead.', 'Calls to getBeatsOccupied / setBeatsOccupied should now be routed to getNotesOccupied / setNotesOccupied.', 'The old methods will be removed in VexFlow 5.0.');\n }\n getBeatsOccupied() {\n this.beatsOccupiedDeprecationWarning();\n return this.getNotesOccupied();\n }\n setBeatsOccupied(beats) {\n this.beatsOccupiedDeprecationWarning();\n return this.setNotesOccupied(beats);\n }\n getNotesOccupied() {\n return this.notes_occupied;\n }\n setNotesOccupied(notes) {\n this.detach();\n this.notes_occupied = notes;\n this.resolveGlyphs();\n this.attach();\n }\n resolveGlyphs() {\n this.numerator_glyphs = [];\n let n = this.num_notes;\n while (n >= 1) {\n this.numerator_glyphs.unshift(new Glyph('timeSig' + (n % 10), this.point));\n n = parseInt((n / 10).toString(), 10);\n }\n this.denom_glyphs = [];\n n = this.notes_occupied;\n while (n >= 1) {\n this.denom_glyphs.unshift(new Glyph('timeSig' + (n % 10), this.point));\n n = parseInt((n / 10).toString(), 10);\n }\n }\n // determine how many tuplets are nested within this tuplet\n // on the same side (above/below), to calculate a y\n // offset for this tuplet:\n getNestedTupletCount() {\n const location = this.location;\n const first_note = this.notes[0];\n let maxTupletCount = countTuplets(first_note, location);\n let minTupletCount = countTuplets(first_note, location);\n // Count the tuplets that are on the same side (above/below)\n // as this tuplet:\n function countTuplets(note, location) {\n return note.getTupletStack().filter((tuplet) => tuplet.location === location).length;\n }\n this.notes.forEach((note) => {\n const tupletCount = countTuplets(note, location);\n maxTupletCount = tupletCount > maxTupletCount ? tupletCount : maxTupletCount;\n minTupletCount = tupletCount < minTupletCount ? tupletCount : minTupletCount;\n });\n return maxTupletCount - minTupletCount;\n }\n // determine the y position of the tuplet:\n getYPosition() {\n // offset the tuplet for any nested tuplets between\n // it and the notes:\n const nested_tuplet_y_offset = this.getNestedTupletCount() * Tuplet.NESTING_OFFSET * -this.location;\n // offset the tuplet for any manual y_offset:\n const y_offset = this.options.y_offset || 0;\n // now iterate through the notes and find our highest\n // or lowest locations, to form a base y_pos\n const first_note = this.notes[0];\n let y_pos;\n if (this.location === Tuplet.LOCATION_TOP) {\n y_pos = first_note.checkStave().getYForLine(0) - Tuplet.metrics.topModifierOffset;\n // check modifiers above note to see if they will collide with tuplet beam\n for (let i = 0; i < this.notes.length; ++i) {\n const note = this.notes[i];\n let modLines = 0;\n const mc = note.getModifierContext();\n if (mc) {\n modLines = Math.max(modLines, mc.getState().top_text_line);\n }\n const modY = note.getYForTopText(modLines) - Tuplet.metrics.noteHeadOffset;\n if (note.hasStem() || note.isRest()) {\n const top_y = note.getStemDirection() === Stem.UP\n ? note.getStemExtents().topY - Tuplet.metrics.stemOffset\n : note.getStemExtents().baseY - Tuplet.metrics.noteHeadOffset;\n y_pos = Math.min(top_y, y_pos);\n if (modLines > 0) {\n y_pos = Math.min(modY, y_pos);\n }\n }\n }\n }\n else {\n let lineCheck = Tuplet.metrics.bottomLine; // tuplet default on line 4\n // check modifiers below note to see if they will collide with tuplet beam\n this.notes.forEach((nn) => {\n const mc = nn.getModifierContext();\n if (mc) {\n lineCheck = Math.max(lineCheck, mc.getState().text_line + 1);\n }\n });\n y_pos = first_note.checkStave().getYForLine(lineCheck) + Tuplet.metrics.noteHeadOffset;\n for (let i = 0; i < this.notes.length; ++i) {\n if (this.notes[i].hasStem() || this.notes[i].isRest()) {\n const bottom_y = this.notes[i].getStemDirection() === Stem.UP\n ? this.notes[i].getStemExtents().baseY + Tuplet.metrics.noteHeadOffset\n : this.notes[i].getStemExtents().topY + Tuplet.metrics.stemOffset;\n if (bottom_y > y_pos) {\n y_pos = bottom_y;\n }\n }\n }\n }\n return y_pos + nested_tuplet_y_offset + y_offset;\n }\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n // determine x value of left bound of tuplet\n const first_note = this.notes[0];\n const last_note = this.notes[this.notes.length - 1];\n if (!this.bracketed) {\n this.x_pos = first_note.getStemX();\n this.width = last_note.getStemX() - this.x_pos;\n }\n else {\n this.x_pos = first_note.getTieLeftX() - 5;\n this.width = last_note.getTieRightX() - this.x_pos + 5;\n }\n // determine y value for tuplet\n this.y_pos = this.getYPosition();\n const addGlyphWidth = (width, glyph) => width + defined(glyph.getMetrics().width);\n // calculate total width of tuplet notation\n let width = this.numerator_glyphs.reduce(addGlyphWidth, 0);\n if (this.ratioed) {\n width = this.denom_glyphs.reduce(addGlyphWidth, width);\n width += this.point * 0.32;\n }\n const notation_center_x = this.x_pos + this.width / 2;\n const notation_start_x = notation_center_x - width / 2;\n // draw bracket if the tuplet is not beamed\n if (this.bracketed) {\n const line_width = this.width / 2 - width / 2 - 5;\n // only draw the bracket if it has positive length\n if (line_width > 0) {\n ctx.fillRect(this.x_pos, this.y_pos, line_width, 1);\n ctx.fillRect(this.x_pos + this.width / 2 + width / 2 + 5, this.y_pos, line_width, 1);\n ctx.fillRect(this.x_pos, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM ? 1 : 0), 1, this.location * 10);\n ctx.fillRect(this.x_pos + this.width, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM ? 1 : 0), 1, this.location * 10);\n }\n }\n // draw numerator glyphs\n const shiftY = Tables.currentMusicFont().lookupMetric('digits.shiftY', 0);\n let x_offset = 0;\n this.numerator_glyphs.forEach((glyph) => {\n glyph.render(ctx, notation_start_x + x_offset, this.y_pos + this.point / 3 - 2 + shiftY);\n x_offset += defined(glyph.getMetrics().width);\n });\n // display colon and denominator if the ratio is to be shown\n if (this.ratioed) {\n const colon_x = notation_start_x + x_offset + this.point * 0.16;\n const colon_radius = this.point * 0.06;\n ctx.beginPath();\n ctx.arc(colon_x, this.y_pos - this.point * 0.08, colon_radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n ctx.beginPath();\n ctx.arc(colon_x, this.y_pos + this.point * 0.12, colon_radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n x_offset += this.point * 0.32;\n this.denom_glyphs.forEach((glyph) => {\n glyph.render(ctx, notation_start_x + x_offset, this.y_pos + this.point / 3 - 2 + shiftY);\n x_offset += defined(glyph.getMetrics().width);\n });\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TupletLocation } from './tuplet';\nimport { Category, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nfunction calculateStemDirection(notes) {\n let lineSum = 0;\n notes.forEach((note) => {\n if (note.keyProps) {\n note.keyProps.forEach((keyProp) => {\n lineSum += keyProp.line - 3;\n });\n }\n });\n if (lineSum >= 0) {\n return Stem.DOWN;\n }\n return Stem.UP;\n}\nfunction getStemSlope(firstNote, lastNote) {\n const firstStemTipY = firstNote.getStemExtents().topY;\n const firstStemX = firstNote.getStemX();\n const lastStemTipY = lastNote.getStemExtents().topY;\n const lastStemX = lastNote.getStemX();\n return (lastStemTipY - firstStemTipY) / (lastStemX - firstStemX);\n}\nexport const BEAM_LEFT = 'L';\nexport const BEAM_RIGHT = 'R';\nexport const BEAM_BOTH = 'B';\n/** `Beams` span over a set of `StemmableNotes`. */\nexport class Beam extends Element {\n constructor(notes, auto_stem = false) {\n super();\n this.slope = 0;\n this.y_shift = 0;\n /**\n * Overrides to default beam directions for secondary-level beams that do not\n * connect to any other note. See further explanation at\n * `setPartialBeamSideAt`\n */\n this.forcedPartialDirections = {};\n if (!notes || notes.length === 0) {\n throw new RuntimeError('BadArguments', 'No notes provided for beam.');\n }\n if (notes.length === 1) {\n throw new RuntimeError('BadArguments', 'Too few notes for beam.');\n }\n // Validate beam line, direction and ticks.\n this.ticks = notes[0].getIntrinsicTicks();\n if (this.ticks >= Tables.durationToTicks('4')) {\n throw new RuntimeError('BadArguments', 'Beams can only be applied to notes shorter than a quarter note.');\n }\n let i; // shared iterator\n let note;\n this.stem_direction = Stem.UP;\n for (i = 0; i < notes.length; ++i) {\n note = notes[i];\n if (note.hasStem()) {\n this.stem_direction = note.getStemDirection();\n break;\n }\n }\n let stem_direction = this.stem_direction;\n // Figure out optimal stem direction based on given notes\n if (auto_stem && isStaveNote(notes[0])) {\n stem_direction = calculateStemDirection(notes);\n }\n else if (auto_stem && isTabNote(notes[0])) {\n // Auto Stem TabNotes\n const stem_weight = notes.reduce((memo, note) => memo + note.getStemDirection(), 0);\n stem_direction = stem_weight > -1 ? Stem.UP : Stem.DOWN;\n }\n // Apply stem directions and attach beam to notes\n for (i = 0; i < notes.length; ++i) {\n note = notes[i];\n if (auto_stem) {\n note.setStemDirection(stem_direction);\n this.stem_direction = stem_direction;\n }\n note.setBeam(this);\n }\n this.postFormatted = false;\n this.notes = notes;\n this.beam_count = this.getBeamCount();\n this.break_on_indices = [];\n this.render_options = {\n beam_width: 5,\n max_slope: 0.25,\n min_slope: -0.25,\n slope_iterations: 20,\n slope_cost: 100,\n show_stemlets: false,\n stemlet_extension: 7,\n partial_beam_length: 10,\n flat_beams: false,\n min_flat_beam_offset: 15,\n };\n }\n static get CATEGORY() {\n return Category.Beam;\n }\n /** Get the direction of the beam */\n getStemDirection() {\n return this.stem_direction;\n }\n /**\n * Get the default beam groups for a provided time signature.\n * Attempt to guess if the time signature is not found in table.\n * Currently this is fairly naive.\n */\n static getDefaultBeamGroups(time_sig) {\n if (!time_sig || time_sig === 'c') {\n time_sig = '4/4';\n }\n const defaults = {\n '1/2': ['1/2'],\n '2/2': ['1/2'],\n '3/2': ['1/2'],\n '4/2': ['1/2'],\n '1/4': ['1/4'],\n '2/4': ['1/4'],\n '3/4': ['1/4'],\n '4/4': ['1/4'],\n '1/8': ['1/8'],\n '2/8': ['2/8'],\n '3/8': ['3/8'],\n '4/8': ['2/8'],\n '1/16': ['1/16'],\n '2/16': ['2/16'],\n '3/16': ['3/16'],\n '4/16': ['2/16'],\n };\n const groups = defaults[time_sig];\n if (groups === undefined) {\n // If no beam groups found, naively determine\n // the beam groupings from the time signature\n const beatTotal = parseInt(time_sig.split('/')[0], 10);\n const beatValue = parseInt(time_sig.split('/')[1], 10);\n const tripleMeter = beatTotal % 3 === 0;\n if (tripleMeter) {\n return [new Fraction(3, beatValue)];\n }\n else if (beatValue > 4) {\n return [new Fraction(2, beatValue)];\n }\n else if (beatValue <= 4) {\n return [new Fraction(1, beatValue)];\n }\n }\n else {\n return groups.map((group) => new Fraction().parse(group));\n }\n return [new Fraction(1, 4)];\n }\n /**\n * A helper function to automatically build basic beams for a voice. For more\n * complex auto-beaming use `Beam.generateBeams()`.\n * @param voice the voice to generate the beams for\n * @param stem_direction a stem direction to apply to the entire voice\n * @param groups an array of `Fraction` representing beat groupings for the beam\n */\n static applyAndGetBeams(voice, stem_direction, groups) {\n return Beam.generateBeams(voice.getTickables(), { groups, stem_direction });\n }\n /**\n * A helper function to autimatically build beams for a voice with\n * configuration options.\n *\n * Example configuration object:\n *\n * ```\n * config = {\n * groups: [new Vex.Flow.Fraction(2, 8)],\n * stem_direction: -1,\n * beam_rests: true,\n * beam_middle_only: true,\n * show_stemlets: false\n * };\n * ```\n * @param notes an array of notes to create the beams for\n * @param config the configuration object\n * @param config.stem_direction set to apply the same direction to all notes\n * @param config.beam_rests set to `true` to include rests in the beams\n * @param config.beam_middle_only set to `true` to only beam rests in the middle of the beat\n * @param config.show_stemlets set to `true` to draw stemlets for rests\n * @param config.maintain_stem_directions set to `true` to not apply new stem directions\n * @param config.groups array of `Fractions` that represent the beat structure to beam the notes\n *\n */\n static generateBeams(notes, config = {}) {\n if (!config.groups || !config.groups.length) {\n config.groups = [new Fraction(2, 8)];\n }\n // Convert beam groups to tick amounts\n const tickGroups = config.groups.map((group) => {\n if (!group.multiply) {\n throw new RuntimeError('InvalidBeamGroups', 'The beam groups must be an array of Vex.Flow.Fractions');\n }\n return group.clone().multiply(Tables.RESOLUTION, 1);\n });\n const unprocessedNotes = notes;\n let currentTickGroup = 0;\n let noteGroups = [];\n let currentGroup = [];\n function getTotalTicks(vf_notes) {\n return vf_notes.reduce((memo, note) => note.getTicks().clone().add(memo), new Fraction(0, 1));\n }\n function nextTickGroup() {\n if (tickGroups.length - 1 > currentTickGroup) {\n currentTickGroup += 1;\n }\n else {\n currentTickGroup = 0;\n }\n }\n function createGroups() {\n let nextGroup = [];\n // number of ticks in current group\n let currentGroupTotalTicks = new Fraction(0, 1);\n unprocessedNotes.forEach((unprocessedNote) => {\n nextGroup = [];\n if (unprocessedNote.shouldIgnoreTicks()) {\n noteGroups.push(currentGroup);\n currentGroup = nextGroup;\n return; // Ignore untickables (like bar notes)\n }\n currentGroup.push(unprocessedNote);\n const ticksPerGroup = tickGroups[currentTickGroup].clone();\n const totalTicks = getTotalTicks(currentGroup).add(currentGroupTotalTicks);\n // Double the amount of ticks in a group, if it's an unbeamable tuplet\n const unbeamable = Tables.durationToNumber(unprocessedNote.getDuration()) < 8;\n if (unbeamable && unprocessedNote.getTuplet()) {\n ticksPerGroup.numerator *= 2;\n }\n // If the note that was just added overflows the group tick total\n if (totalTicks.greaterThan(ticksPerGroup)) {\n // If the overflow note can be beamed, start the next group\n // with it. Unbeamable notes leave the group overflowed.\n if (!unbeamable) {\n const note = currentGroup.pop();\n if (note)\n nextGroup.push(note);\n }\n noteGroups.push(currentGroup);\n // We have overflown, so we're going to next tick group. As we might have\n // overflown by more than 1 group, we need to go forward as many times as\n // needed, decreasing currentGroupTotalTicks by as many ticks as there are\n // in current groups as we go forward.\n do {\n currentGroupTotalTicks = totalTicks.subtract(tickGroups[currentTickGroup]);\n nextTickGroup();\n } while (currentGroupTotalTicks.greaterThanEquals(tickGroups[currentTickGroup]));\n currentGroup = nextGroup;\n }\n else if (totalTicks.equals(ticksPerGroup)) {\n noteGroups.push(currentGroup);\n currentGroupTotalTicks = new Fraction(0, 1);\n currentGroup = nextGroup;\n nextTickGroup();\n }\n });\n // Adds any remainder notes beam\n if (currentGroup.length > 0) {\n noteGroups.push(currentGroup);\n }\n }\n function getBeamGroups() {\n return noteGroups.filter((group) => {\n if (group.length > 1) {\n let beamable = true;\n group.forEach((note) => {\n if (note.getIntrinsicTicks() >= Tables.durationToTicks('4')) {\n beamable = false;\n }\n });\n return beamable;\n }\n return false;\n });\n }\n // Splits up groups by Rest\n function sanitizeGroups() {\n const sanitizedGroups = [];\n noteGroups.forEach((group) => {\n let tempGroup = [];\n group.forEach((note, index, group) => {\n const isFirstOrLast = index === 0 || index === group.length - 1;\n const prevNote = group[index - 1];\n const breaksOnEachRest = !config.beam_rests && note.isRest();\n const breaksOnFirstOrLastRest = config.beam_rests && config.beam_middle_only && note.isRest() && isFirstOrLast;\n let breakOnStemChange = false;\n if (config.maintain_stem_directions && prevNote && !note.isRest() && !prevNote.isRest()) {\n const prevDirection = prevNote.getStemDirection();\n const currentDirection = note.getStemDirection();\n breakOnStemChange = currentDirection !== prevDirection;\n }\n const isUnbeamableDuration = parseInt(note.getDuration(), 10) < 8;\n // Determine if the group should be broken at this note\n const shouldBreak = breaksOnEachRest || breaksOnFirstOrLastRest || breakOnStemChange || isUnbeamableDuration;\n if (shouldBreak) {\n // Add current group\n if (tempGroup.length > 0) {\n sanitizedGroups.push(tempGroup);\n }\n // Start a new group. Include the current note if the group\n // was broken up by stem direction, as that note needs to start\n // the next group of notes\n tempGroup = breakOnStemChange ? [note] : [];\n }\n else {\n // Add note to group\n tempGroup.push(note);\n }\n });\n // If there is a remaining group, add it as well\n if (tempGroup.length > 0) {\n sanitizedGroups.push(tempGroup);\n }\n });\n noteGroups = sanitizedGroups;\n }\n function formatStems() {\n noteGroups.forEach((group) => {\n let stemDirection;\n if (config.maintain_stem_directions) {\n const note = findFirstNote(group);\n stemDirection = note ? note.getStemDirection() : Stem.UP;\n }\n else {\n if (config.stem_direction) {\n stemDirection = config.stem_direction;\n }\n else {\n stemDirection = calculateStemDirection(group);\n }\n }\n applyStemDirection(group, stemDirection);\n });\n }\n function findFirstNote(group) {\n for (let i = 0; i < group.length; i++) {\n const note = group[i];\n if (!note.isRest()) {\n return note;\n }\n }\n return false;\n }\n function applyStemDirection(group, direction) {\n group.forEach((note) => {\n note.setStemDirection(direction);\n });\n }\n // Get all of the tuplets in all of the note groups\n function getTuplets() {\n const uniqueTuplets = [];\n // Go through all of the note groups and inspect for tuplets\n noteGroups.forEach((group) => {\n let tuplet;\n group.forEach((note) => {\n const noteTuplet = note.getTuplet();\n if (noteTuplet && tuplet !== noteTuplet) {\n tuplet = noteTuplet;\n uniqueTuplets.push(tuplet);\n }\n });\n });\n return uniqueTuplets;\n }\n // Using closures to store the variables throughout the various functions\n // IMO Keeps it this process lot cleaner - but not super consistent with\n // the rest of the API's style - Silverwolf90 (Cyril)\n createGroups();\n sanitizeGroups();\n formatStems();\n // Get the notes to be beamed\n const beamedNoteGroups = getBeamGroups();\n // Get the tuplets in order to format them accurately\n const allTuplets = getTuplets();\n // Create a Vex.Flow.Beam from each group of notes to be beamed\n const beams = [];\n beamedNoteGroups.forEach((group) => {\n const beam = new Beam(group);\n if (config.show_stemlets) {\n beam.render_options.show_stemlets = true;\n }\n if (config.secondary_breaks) {\n beam.render_options.secondary_break_ticks = Tables.durationToTicks(config.secondary_breaks);\n }\n if (config.flat_beams === true) {\n beam.render_options.flat_beams = true;\n beam.render_options.flat_beam_offset = config.flat_beam_offset;\n }\n beams.push(beam);\n });\n // Reformat tuplets\n allTuplets.forEach((tuplet) => {\n // Set the tuplet location based on the stem direction\n const direction = tuplet.notes[0].stem_direction === Stem.DOWN ? TupletLocation.BOTTOM : TupletLocation.TOP;\n tuplet.setTupletLocation(direction);\n // If any of the notes in the tuplet are not beamed, draw a bracket.\n let bracketed = false;\n for (let i = 0; i < tuplet.notes.length; i++) {\n const note = tuplet.notes[i];\n if (!note.hasBeam()) {\n bracketed = true;\n break;\n }\n }\n tuplet.setBracketed(bracketed);\n });\n return beams;\n }\n /** Get the notes in this beam. */\n getNotes() {\n return this.notes;\n }\n /** Get the max number of beams in the set of notes. */\n getBeamCount() {\n const beamCounts = this.notes.map((note) => note.getGlyph().beam_count);\n const maxBeamCount = beamCounts.reduce((max, beamCount) => (beamCount > max ? beamCount : max));\n return maxBeamCount;\n }\n /** Set which note `indices` to break the secondary beam at. */\n breakSecondaryAt(indices) {\n this.break_on_indices = indices;\n return this;\n }\n /**\n * Forces the direction of a partial beam (a secondary-level beam that exists\n * on one note only of the beam group). This is useful in rhythms such as 6/8\n * eighth-sixteenth-eighth-sixteenth, where the direction of the beam on the\n * first sixteenth note can help imply whether the rhythm is to be felt as\n * three groups of eighth notes (typical) or as two groups of three-sixteenths\n * (less common):\n * ```\n * ┌───┬──┬──┐ ┌──┬──┬──┐\n * │ ├─ │ ─┤ vs │ ─┤ │ ─┤\n * │ │ │ │ │ │ │ │\n * ```\n */\n setPartialBeamSideAt(noteIndex, side) {\n this.forcedPartialDirections[noteIndex] = side;\n return this;\n }\n /**\n * Restore the default direction of a partial beam (a secondary-level beam\n * that does not connect to any other notes).\n */\n unsetPartialBeamSideAt(noteIndex) {\n delete this.forcedPartialDirections[noteIndex];\n return this;\n }\n /** Return the y coordinate for linear function. */\n getSlopeY(x, first_x_px, first_y_px, slope) {\n return first_y_px + (x - first_x_px) * slope;\n }\n /** Calculate the best possible slope for the provided notes. */\n calculateSlope() {\n const { notes, stem_direction: stemDirection, render_options: { max_slope, min_slope, slope_iterations, slope_cost }, } = this;\n const firstNote = notes[0];\n const initialSlope = getStemSlope(firstNote, notes[notes.length - 1]);\n const increment = (max_slope - min_slope) / slope_iterations;\n let minCost = Number.MAX_VALUE;\n let bestSlope = 0;\n let yShift = 0;\n // iterate through slope values to find best weighted fit\n for (let slope = min_slope; slope <= max_slope; slope += increment) {\n let totalStemExtension = 0;\n let yShiftTemp = 0;\n // iterate through notes, calculating y shift and stem extension\n for (let i = 1; i < notes.length; ++i) {\n const note = notes[i];\n if (note.hasStem() || note.isRest()) {\n const adjustedStemTipY = this.getSlopeY(note.getStemX(), firstNote.getStemX(), firstNote.getStemExtents().topY, slope) + yShiftTemp;\n const stemTipY = note.getStemExtents().topY;\n // beam needs to be shifted up to accommodate note\n if (stemTipY * stemDirection < adjustedStemTipY * stemDirection) {\n const diff = Math.abs(stemTipY - adjustedStemTipY);\n yShiftTemp += diff * -stemDirection;\n totalStemExtension += diff * i;\n }\n else {\n // beam overshoots note, account for the difference\n totalStemExtension += (stemTipY - adjustedStemTipY) * stemDirection;\n }\n }\n }\n // most engraving books suggest aiming for a slope about half the angle of the\n // difference between the first and last notes' stem length;\n const idealSlope = initialSlope / 2;\n const distanceFromIdeal = Math.abs(idealSlope - slope);\n // This tries to align most beams to something closer to the idealSlope, but\n // doesn't go crazy. To disable, set this.render_options.slope_cost = 0\n const cost = slope_cost * distanceFromIdeal + Math.abs(totalStemExtension);\n // update state when a more ideal slope is found\n if (cost < minCost) {\n minCost = cost;\n bestSlope = slope;\n yShift = yShiftTemp;\n }\n }\n this.slope = bestSlope;\n this.y_shift = yShift;\n }\n /** Calculate a slope and y-shift for flat beams. */\n calculateFlatSlope() {\n const { notes, stem_direction, render_options: { beam_width, min_flat_beam_offset, flat_beam_offset }, } = this;\n // If a flat beam offset has not yet been supplied or calculated,\n // generate one based on the notes in this particular note group\n let total = 0;\n let extremeY = 0; // Store the highest or lowest note here\n let extremeBeamCount = 0; // The beam count of the extreme note\n let currentExtreme = 0;\n for (let i = 0; i < notes.length; i++) {\n // Total up all of the offsets so we can average them out later\n const note = notes[i];\n const stemTipY = note.getStemExtents().topY;\n total += stemTipY;\n // Store the highest (stems-up) or lowest (stems-down) note so the\n // offset can be adjusted in case the average isn't enough\n if (stem_direction === Stem.DOWN && currentExtreme < stemTipY) {\n currentExtreme = stemTipY;\n extremeY = Math.max(...note.getYs());\n extremeBeamCount = note.getBeamCount();\n }\n else if (stem_direction === Stem.UP && (currentExtreme === 0 || currentExtreme > stemTipY)) {\n currentExtreme = stemTipY;\n extremeY = Math.min(...note.getYs());\n extremeBeamCount = note.getBeamCount();\n }\n }\n // Average the offsets to try and come up with a reasonable one that\n // works for all of the notes in the beam group.\n let offset = total / notes.length;\n // In case the average isn't long enough, add or subtract some more\n // based on the highest or lowest note (again, based on the stem\n // direction). This also takes into account the added height due to\n // the width of the beams.\n const beamWidth = beam_width * 1.5;\n const extremeTest = min_flat_beam_offset + extremeBeamCount * beamWidth;\n const newOffset = extremeY + extremeTest * -stem_direction;\n if (stem_direction === Stem.DOWN && offset < newOffset) {\n offset = extremeY + extremeTest;\n }\n else if (stem_direction === Stem.UP && offset > newOffset) {\n offset = extremeY - extremeTest;\n }\n if (!flat_beam_offset) {\n // Set the offset for the group based on the calculations above.\n this.render_options.flat_beam_offset = offset;\n }\n else if (stem_direction === Stem.DOWN && offset > flat_beam_offset) {\n this.render_options.flat_beam_offset = offset;\n }\n else if (stem_direction === Stem.UP && offset < flat_beam_offset) {\n this.render_options.flat_beam_offset = offset;\n }\n // for flat beams, the slope and y_shift are simply 0\n this.slope = 0;\n this.y_shift = 0;\n }\n /** Return the Beam y offset. */\n getBeamYToDraw() {\n const firstNote = this.notes[0];\n const firstStemTipY = firstNote.getStemExtents().topY;\n let beamY = firstStemTipY;\n // For flat beams, set the first and last Y to the offset, rather than\n // using the note's stem extents.\n if (this.render_options.flat_beams && this.render_options.flat_beam_offset) {\n beamY = this.render_options.flat_beam_offset;\n }\n return beamY;\n }\n /**\n * Create new stems for the notes in the beam, so that each stem\n * extends into the beams.\n */\n applyStemExtensions() {\n const { notes, slope, y_shift, stem_direction, beam_count, render_options: { show_stemlets, stemlet_extension, beam_width }, } = this;\n const firstNote = notes[0];\n const firstStemTipY = this.getBeamYToDraw();\n const firstStemX = firstNote.getStemX();\n for (let i = 0; i < notes.length; ++i) {\n const note = notes[i];\n const stem = note.getStem();\n if (stem) {\n const stemX = note.getStemX();\n const { topY: stemTipY } = note.getStemExtents();\n const beamedStemTipY = this.getSlopeY(stemX, firstStemX, firstStemTipY, slope) + y_shift;\n const preBeamExtension = stem.getExtension();\n const beamExtension = stem_direction === Stem.UP ? stemTipY - beamedStemTipY : beamedStemTipY - stemTipY;\n stem.setExtension(preBeamExtension + beamExtension);\n stem.adjustHeightForBeam();\n if (note.isRest() && show_stemlets) {\n const beamWidth = beam_width;\n const totalBeamWidth = (beam_count - 1) * beamWidth * 1.5 + beamWidth;\n stem.setVisibility(true).setStemlet(true, totalBeamWidth + stemlet_extension);\n }\n }\n }\n }\n /** Return upper level beam direction. */\n lookupBeamDirection(duration, prev_tick, tick, next_tick, noteIndex) {\n if (duration === '4') {\n return BEAM_LEFT;\n }\n const forcedBeamDirection = this.forcedPartialDirections[noteIndex];\n if (forcedBeamDirection)\n return forcedBeamDirection;\n const lookup_duration = `${Tables.durationToNumber(duration) / 2}`;\n const prev_note_gets_beam = prev_tick < Tables.durationToTicks(lookup_duration);\n const next_note_gets_beam = next_tick < Tables.durationToTicks(lookup_duration);\n const note_gets_beam = tick < Tables.durationToTicks(lookup_duration);\n if (prev_note_gets_beam && next_note_gets_beam && note_gets_beam) {\n return BEAM_BOTH;\n }\n else if (prev_note_gets_beam && !next_note_gets_beam && note_gets_beam) {\n return BEAM_LEFT;\n }\n else if (!prev_note_gets_beam && next_note_gets_beam && note_gets_beam) {\n return BEAM_RIGHT;\n }\n return this.lookupBeamDirection(lookup_duration, prev_tick, tick, next_tick, noteIndex);\n }\n /** Get the x coordinates for the beam lines of specific `duration`. */\n getBeamLines(duration) {\n const tick_of_duration = Tables.durationToTicks(duration);\n let beam_started = false;\n const beam_lines = [];\n let current_beam = undefined;\n const partial_beam_length = this.render_options.partial_beam_length;\n let previous_should_break = false;\n let tick_tally = 0;\n for (let i = 0; i < this.notes.length; ++i) {\n const note = this.notes[i];\n // See if we need to break secondary beams on this note.\n const ticks = note.getTicks().value();\n tick_tally += ticks;\n let should_break = false;\n // 8th note beams are always drawn.\n if (parseInt(duration, 10) >= 8) {\n // First, check to see if any indices were set up through breakSecondaryAt()\n should_break = this.break_on_indices.indexOf(i) !== -1;\n // If the secondary breaks were auto-configured in the render options,\n // handle that as well.\n if (this.render_options.secondary_break_ticks && tick_tally >= this.render_options.secondary_break_ticks) {\n tick_tally = 0;\n should_break = true;\n }\n }\n const note_gets_beam = note.getIntrinsicTicks() < tick_of_duration;\n const stem_x = note.getStemX() - Stem.WIDTH / 2;\n // Check to see if the next note in the group will get a beam at this\n // level. This will help to inform the partial beam logic below.\n const prev_note = this.notes[i - 1];\n const next_note = this.notes[i + 1];\n const next_note_gets_beam = next_note && next_note.getIntrinsicTicks() < tick_of_duration;\n const prev_note_gets_beam = prev_note && prev_note.getIntrinsicTicks() < tick_of_duration;\n const beam_alone = prev_note && next_note && note_gets_beam && !prev_note_gets_beam && !next_note_gets_beam;\n // const beam_alone = note_gets_beam && !prev_note_gets_beam && !next_note_gets_beam;\n if (note_gets_beam) {\n // This note gets a beam at the current level\n if (beam_started) {\n // We're currently in the middle of a beam. Just continue it on to\n // the stem X of the current note.\n current_beam = beam_lines[beam_lines.length - 1];\n current_beam.end = stem_x;\n // If a secondary beam break is set up, end the beam right now.\n if (should_break) {\n beam_started = false;\n if (next_note && !next_note_gets_beam && current_beam.end === undefined) {\n // This note gets a beam,.but the next one does not. This means\n // we need a partial pointing right.\n current_beam.end = current_beam.start - partial_beam_length;\n }\n }\n }\n else {\n // No beam started yet. Start a new one.\n current_beam = { start: stem_x, end: undefined };\n beam_started = true;\n if (beam_alone) {\n // previous and next beam exists and does not get a beam but current gets it.\n const prev_tick = prev_note.getIntrinsicTicks();\n const next_tick = next_note.getIntrinsicTicks();\n const tick = note.getIntrinsicTicks();\n const beam_direction = this.lookupBeamDirection(duration, prev_tick, tick, next_tick, i);\n if ([BEAM_LEFT, BEAM_BOTH].includes(beam_direction)) {\n current_beam.end = current_beam.start - partial_beam_length;\n }\n else {\n current_beam.end = current_beam.start + partial_beam_length;\n }\n }\n else if (!next_note_gets_beam) {\n // The next note doesn't get a beam. Draw a partial.\n if ((previous_should_break || i === 0) && next_note) {\n // This is the first note (but not the last one), or it is\n // following a secondary break. Draw a partial to the right.\n current_beam.end = current_beam.start + partial_beam_length;\n }\n else {\n // By default, draw a partial to the left.\n current_beam.end = current_beam.start - partial_beam_length;\n }\n }\n else if (should_break) {\n // This note should have a secondary break after it. Even though\n // we just started a beam, it needs to end immediately.\n current_beam.end = current_beam.start - partial_beam_length;\n beam_started = false;\n }\n beam_lines.push(current_beam);\n }\n }\n else {\n // The current note does not get a beam.\n beam_started = false;\n }\n // Store the secondary break flag to inform the partial beam logic in\n // the next iteration of the loop.\n previous_should_break = should_break;\n }\n // Add a partial beam pointing left if this is the last note in the group\n const last_beam = beam_lines[beam_lines.length - 1];\n if (last_beam && last_beam.end === undefined) {\n last_beam.end = last_beam.start - partial_beam_length;\n }\n return beam_lines;\n }\n /** Render the stems for each note. */\n drawStems(ctx) {\n this.notes.forEach((note) => {\n const stem = note.getStem();\n if (stem) {\n const stem_x = note.getStemX();\n stem.setNoteHeadXBounds(stem_x, stem_x);\n stem.setContext(ctx).draw();\n }\n }, this);\n }\n // Render the beam lines\n drawBeamLines(ctx) {\n const valid_beam_durations = ['4', '8', '16', '32', '64'];\n const firstNote = this.notes[0];\n let beamY = this.getBeamYToDraw();\n const firstStemX = firstNote.getStemX();\n const beamThickness = this.render_options.beam_width * this.stem_direction;\n // Draw the beams.\n for (let i = 0; i < valid_beam_durations.length; ++i) {\n const duration = valid_beam_durations[i];\n const beamLines = this.getBeamLines(duration);\n for (let j = 0; j < beamLines.length; ++j) {\n const beam_line = beamLines[j];\n const startBeamX = beam_line.start;\n const startBeamY = this.getSlopeY(startBeamX, firstStemX, beamY, this.slope);\n const lastBeamX = beam_line.end;\n if (lastBeamX) {\n const lastBeamY = this.getSlopeY(lastBeamX, firstStemX, beamY, this.slope);\n ctx.openGroup('beam', this.getAttribute('id'));\n ctx.beginPath();\n ctx.moveTo(startBeamX, startBeamY);\n ctx.lineTo(startBeamX, startBeamY + beamThickness);\n ctx.lineTo(lastBeamX + 1, lastBeamY + beamThickness);\n ctx.lineTo(lastBeamX + 1, lastBeamY);\n ctx.closePath();\n ctx.fill();\n ctx.closeGroup();\n }\n else {\n throw new RuntimeError('NoLastBeamX', 'lastBeamX undefined.');\n }\n }\n beamY += beamThickness * 1.5;\n }\n }\n /** Pre-format the beam. */\n preFormat() {\n return this;\n }\n /**\n * Post-format the beam. This can only be called after\n * the notes in the beam have both `x` and `y` values. ie: they've\n * been formatted and have staves.\n */\n postFormat() {\n if (this.postFormatted)\n return;\n // Calculate a smart slope if we're not forcing the beams to be flat.\n if (isTabNote(this.notes[0]) || this.render_options.flat_beams) {\n this.calculateFlatSlope();\n }\n else {\n this.calculateSlope();\n }\n this.applyStemExtensions();\n this.postFormatted = true;\n }\n /** Render the beam to the canvas context */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n if (this.unbeamable)\n return;\n if (!this.postFormatted) {\n this.postFormat();\n }\n this.drawStems(ctx);\n this.applyStyle();\n this.drawBeamLines(ctx);\n this.restoreStyle();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\n// MIT License\nimport { Clef } from './clef';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\n/** ClefNote implements clef annotations in measures. */\nexport class ClefNote extends Note {\n constructor(type, size, annotation) {\n super({ duration: 'b' });\n this.type = type;\n this.clef_obj = new Clef(type, size, annotation);\n this.clef = this.clef_obj.clef;\n this.glyph = new Glyph(this.clef.code, this.clef.point);\n this.setWidth(this.glyph.getMetrics().width);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.ClefNote;\n }\n /** Set clef type, size and annotation. */\n setType(type, size, annotation) {\n this.type = type;\n this.clef_obj = new Clef(type, size, annotation);\n this.clef = this.clef_obj.clef;\n this.glyph = new Glyph(this.clef.code, this.clef.point);\n this.setWidth(this.glyph.getMetrics().width);\n return this;\n }\n /** Get associated clef. */\n getClef() {\n return this.clef;\n }\n /** Set associated context. */\n setContext(context) {\n super.setContext(context);\n this.glyph.setContext(this.getContext());\n return this;\n }\n /** Get bounding box. */\n getBoundingBox() {\n return super.getBoundingBox();\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n /** Render clef note. */\n draw() {\n var _a;\n const stave = this.checkStave();\n if (!this.glyph.getContext()) {\n this.glyph.setContext(this.getContext());\n }\n this.setRendered();\n const abs_x = this.getAbsoluteX();\n this.glyph.setStave(stave);\n this.glyph.setYShift(stave.getYForLine((_a = this.clef.line) !== null && _a !== void 0 ? _a : 0) - stave.getYForGlyphs());\n this.glyph.renderToStave(abs_x);\n // If the Vex.Flow.Clef has an annotation, such as 8va, draw it.\n if (this.clef_obj.annotation !== undefined) {\n const attachment = new Glyph(this.clef_obj.annotation.code, this.clef_obj.annotation.point);\n if (!attachment.getContext()) {\n attachment.setContext(this.getContext());\n }\n attachment.setStave(stave);\n attachment.setYShift(stave.getYForLine(this.clef_obj.annotation.line) - stave.getYForGlyphs());\n attachment.setXShift(this.clef_obj.annotation.x_shift);\n attachment.renderToStave(abs_x);\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This file implements the `Crescendo` object which draws crescendos and\n// decrescendo dynamics markings. A `Crescendo` is initialized with a\n// duration and formatted as part of a `Voice` like any other `Note`\n// type in VexFlow. This object would most likely be formatted in a Voice\n// with `TextNotes` - which are used to represent other dynamics markings.\nimport { Note } from './note';\nimport { TickContext } from './tickcontext';\nimport { Category } from './typeguard';\nimport { log } from './util';\n// To enable logging for this class. Set `Vex.Flow.Crescendo.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (Crescendo.DEBUG)\n log('Vex.Flow.Crescendo', args);\n}\n// Private helper to draw the hairpin\nfunction renderHairpin(ctx, params) {\n const begin_x = params.begin_x;\n const end_x = params.end_x;\n const y = params.y;\n const half_height = params.height / 2;\n ctx.beginPath();\n if (params.reverse) {\n ctx.moveTo(begin_x, y - half_height);\n ctx.lineTo(end_x, y);\n ctx.lineTo(begin_x, y + half_height);\n }\n else {\n ctx.moveTo(end_x, y - half_height);\n ctx.lineTo(begin_x, y);\n ctx.lineTo(end_x, y + half_height);\n }\n ctx.stroke();\n ctx.closePath();\n}\nexport class Crescendo extends Note {\n // Initialize the crescendo's properties\n constructor(noteStruct) {\n super(noteStruct);\n this.options = {\n // Extensions to the length of the crescendo on either side\n extend_left: 0,\n extend_right: 0,\n // Vertical shift\n y_shift: 0,\n };\n // Whether the object is a decrescendo\n this.decrescendo = false;\n // The staff line to be placed on\n this.line = noteStruct.line || 0;\n // The height at the open end of the cresc/decresc\n this.height = 15;\n }\n /** Crescendo category string. */\n static get CATEGORY() {\n return Category.Crescendo;\n }\n // Set the line to center the element on\n setLine(line) {\n this.line = line;\n return this;\n }\n // Set the full height at the open end\n setHeight(height) {\n this.height = height;\n return this;\n }\n // Set whether the sign should be a descresendo by passing a bool\n // to `decresc`\n setDecrescendo(decresc) {\n this.decrescendo = decresc;\n return this;\n }\n // Preformat the note\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n // Render the Crescendo object onto the canvas\n draw() {\n const ctx = this.checkContext();\n const stave = this.checkStave();\n this.setRendered();\n const tick_context = this.getTickContext();\n const next_context = TickContext.getNextContext(tick_context);\n const begin_x = this.getAbsoluteX();\n const end_x = next_context ? next_context.getX() : stave.getX() + stave.getWidth();\n const y = stave.getYForLine(this.line + -3) + 1;\n L('Drawing ', this.decrescendo ? 'decrescendo ' : 'crescendo ', this.height, 'x', begin_x - end_x);\n renderHairpin(ctx, {\n begin_x: begin_x - this.options.extend_left,\n end_x: end_x + this.options.extend_right,\n y: y + this.options.y_shift,\n height: this.height,\n reverse: this.decrescendo,\n });\n }\n}\nCrescendo.DEBUG = false;\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements curves (for slurs)\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport var CurvePosition;\n(function (CurvePosition) {\n CurvePosition[CurvePosition[\"NEAR_HEAD\"] = 1] = \"NEAR_HEAD\";\n CurvePosition[CurvePosition[\"NEAR_TOP\"] = 2] = \"NEAR_TOP\";\n})(CurvePosition || (CurvePosition = {}));\nexport class Curve extends Element {\n // from: Start note\n // to: End note\n // options:\n // cps: List of control points\n // x_shift: pixels to shift\n // y_shift: pixels to shift\n constructor(from, to, options) {\n super();\n this.render_options = Object.assign({ thickness: 2, x_shift: 0, y_shift: 10, position: CurvePosition.NEAR_HEAD, position_end: CurvePosition.NEAR_HEAD, invert: false, cps: [\n { x: 0, y: 10 },\n { x: 0, y: 10 },\n ] }, options);\n this.from = from;\n this.to = to;\n }\n static get CATEGORY() {\n return Category.Curve;\n }\n static get Position() {\n return CurvePosition;\n }\n static get PositionString() {\n return {\n nearHead: CurvePosition.NEAR_HEAD,\n nearTop: CurvePosition.NEAR_TOP,\n };\n }\n setNotes(from, to) {\n if (!from && !to) {\n throw new RuntimeError('BadArguments', 'Curve needs to have either `from` or `to` set.');\n }\n this.from = from;\n this.to = to;\n return this;\n }\n /**\n * @return {boolean} Returns true if this is a partial bar.\n */\n isPartial() {\n return !this.from || !this.to;\n }\n renderCurve(params) {\n const ctx = this.checkContext();\n const x_shift = this.render_options.x_shift;\n const y_shift = this.render_options.y_shift * params.direction;\n const first_x = params.first_x + x_shift;\n const first_y = params.first_y + y_shift;\n const last_x = params.last_x - x_shift;\n const last_y = params.last_y + y_shift;\n const thickness = this.render_options.thickness;\n const cps = this.render_options.cps;\n const { x: cp0x, y: cp0y } = cps[0];\n const { x: cp1x, y: cp1y } = cps[1];\n const cp_spacing = (last_x - first_x) / (cps.length + 2);\n ctx.beginPath();\n ctx.moveTo(first_x, first_y);\n ctx.bezierCurveTo(first_x + cp_spacing + cp0x, first_y + cp0y * params.direction, last_x - cp_spacing + cp1x, last_y + cp1y * params.direction, last_x, last_y);\n ctx.bezierCurveTo(last_x - cp_spacing + cp1x, last_y + (cp1y + thickness) * params.direction, first_x + cp_spacing + cp0x, first_y + (cp0y + thickness) * params.direction, first_x, first_y);\n ctx.stroke();\n ctx.closePath();\n ctx.fill();\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const first_note = this.from;\n const last_note = this.to;\n let first_x;\n let last_x;\n let first_y;\n let last_y;\n let stem_direction = 0;\n let metric = 'baseY';\n let end_metric = 'baseY';\n function getPosition(position) {\n return typeof position === 'string' ? Curve.PositionString[position] : position;\n }\n const position = getPosition(this.render_options.position);\n const position_end = getPosition(this.render_options.position_end);\n if (position === CurvePosition.NEAR_TOP) {\n metric = 'topY';\n end_metric = 'topY';\n }\n if (position_end === CurvePosition.NEAR_HEAD) {\n end_metric = 'baseY';\n }\n else if (position_end === CurvePosition.NEAR_TOP) {\n end_metric = 'topY';\n }\n if (first_note) {\n first_x = first_note.getTieRightX();\n stem_direction = first_note.getStemDirection();\n first_y = first_note.getStemExtents()[metric];\n }\n else {\n const stave = last_note.checkStave();\n first_x = stave.getTieStartX();\n first_y = last_note.getStemExtents()[metric];\n }\n if (last_note) {\n last_x = last_note.getTieLeftX();\n stem_direction = last_note.getStemDirection();\n last_y = last_note.getStemExtents()[end_metric];\n }\n else {\n const stave = first_note.checkStave();\n last_x = stave.getTieEndX();\n last_y = first_note.getStemExtents()[end_metric];\n }\n this.renderCurve({\n first_x,\n last_x,\n first_y,\n last_y,\n direction: stem_direction * (this.render_options.invert === true ? -1 : 1),\n });\n return true;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// A generic text parsing class for VexFlow.\nimport { log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.Parser.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (Parser.DEBUG)\n log('Vex.Flow.Parser', args);\n}\nconst NO_ERROR_POS = -1;\n// Converts parser results into an easy to reference list that can be\n// used in triggers. This function returns:\n// - nested array in which the leaf elements are string or null\n// - string (including empty strings)\n// - null\nfunction flattenMatches(r) {\n if ('matchedString' in r)\n return r.matchedString; // string\n if ('results' in r)\n return flattenMatches(r.results);\n const results = r;\n if (results.length === 1)\n return flattenMatches(results[0]);\n if (results.length === 0)\n return null;\n return results.map(flattenMatches); // nested array\n}\n// This is the base parser class. Given an arbitrary context-free grammar, it\n// can parse any line and execute code when specific rules are met (e.g.,\n// when a string is terminated.)\nexport class Parser {\n // For an example of a simple grammar, take a look at tests/parser_tests.ts or\n // the EasyScore grammar in easyscore.ts.\n constructor(grammar) {\n this.grammar = grammar;\n this.line = '';\n this.pos = 0;\n this.errorPos = NO_ERROR_POS;\n }\n // Parse `line` using current grammar. Returns `{success: true}` if the\n // line parsed correctly, otherwise returns `{success: false, errorPos: N}`\n // where `errorPos` is the location of the error in the string.\n parse(line) {\n this.line = line;\n this.pos = 0;\n this.errorPos = NO_ERROR_POS;\n const result = this.expect(this.grammar.begin());\n result.errorPos = this.errorPos;\n return result;\n }\n matchFail(returnPos) {\n if (this.errorPos === NO_ERROR_POS)\n this.errorPos = this.pos;\n this.pos = returnPos;\n }\n matchSuccess() {\n this.errorPos = NO_ERROR_POS;\n }\n // Look for `token` in this.line[this.pos], and return success\n // if one is found. `token` is specified as a regular expression.\n matchToken(token, noSpace = false) {\n const regexp = noSpace ? new RegExp('^((' + token + '))') : new RegExp('^((' + token + ')\\\\s*)');\n const workingLine = this.line.slice(this.pos);\n const result = workingLine.match(regexp);\n if (result !== null) {\n return {\n success: true,\n matchedString: result[2],\n incrementPos: result[1].length,\n pos: this.pos,\n };\n }\n else {\n return { success: false, pos: this.pos };\n }\n }\n // Execute rule to match a sequence of tokens (or rules). If `maybe` is\n // set, then return success even if the token is not found, but reset\n // the position before exiting.\n // TODO: expectOne(...) is never called with the `maybe` parameter.\n expectOne(rule, maybe = false) {\n const results = [];\n const pos = this.pos;\n let allMatches = true;\n let oneMatch = false;\n maybe = maybe === true || rule.maybe === true;\n // Execute all sub rules in sequence.\n if (rule.expect) {\n for (const next of rule.expect) {\n const localPos = this.pos;\n const result = this.expect(next);\n // If `rule.or` is set, then return success if any one\n // of the subrules match, else all subrules must match.\n if (result.success) {\n results.push(result);\n oneMatch = true;\n if (rule.or)\n break;\n }\n else {\n allMatches = false;\n if (!rule.or) {\n this.pos = localPos;\n break;\n }\n }\n }\n }\n const gotOne = (rule.or && oneMatch) || allMatches;\n const success = gotOne || maybe === true;\n const numMatches = gotOne ? 1 : 0;\n if (maybe && !gotOne)\n this.pos = pos;\n if (success) {\n this.matchSuccess();\n }\n else {\n this.matchFail(pos);\n }\n return { success, results, numMatches };\n }\n // Try to match multiple (one or more) instances of the rule. If `maybe` is set,\n // then a failed match is also a success (but the position is reset).\n expectOneOrMore(rule, maybe = false) {\n const results = [];\n const pos = this.pos;\n let numMatches = 0;\n let more = true;\n do {\n const result = this.expectOne(rule);\n if (result.success && result.results) {\n numMatches++;\n results.push(result.results);\n }\n else {\n more = false;\n }\n } while (more);\n const success = numMatches > 0 || maybe === true;\n if (maybe && !(numMatches > 0))\n this.pos = pos;\n if (success) {\n this.matchSuccess();\n }\n else {\n this.matchFail(pos);\n }\n return { success, results, numMatches };\n }\n // Match zero or more instances of `rule`. Offloads to `expectOneOrMore`.\n expectZeroOrMore(rule) {\n return this.expectOneOrMore(rule, true);\n }\n // Execute the rule produced by the provided `rules` function. This\n // offloads to one of the above matchers and consolidates the results. It is also\n // responsible for executing any code triggered by the rule (in `rule.run`.)\n expect(ruleFunc) {\n L('Evaluating rule function:', ruleFunc);\n if (!ruleFunc) {\n throw new RuntimeError('Invalid rule function');\n }\n let result;\n // Get rule from Grammar class.\n // expect(...) handles both lexing & parsing:\n // - lexer rules produce tokens.\n // - parser rules produce expressions which may trigger code via the\n // { run: () => ... } trigger functions in easyscore.ts.\n // These functions build the VexFlow objects that are displayed on screen.\n const rule = ruleFunc.bind(this.grammar)();\n if (rule.token) {\n // A lexer rule has a `token` property.\n // Base case: parse the regex and throw an error if the\n // line doesn't match.\n result = this.matchToken(rule.token, rule.noSpace === true);\n if (result.success) {\n // Token match! Update position and throw away parsed portion\n // of string.\n this.pos += result.incrementPos;\n }\n }\n else if (rule.expect) {\n // A parser rule has an `expect` property.\n if (rule.oneOrMore) {\n result = this.expectOneOrMore(rule);\n }\n else if (rule.zeroOrMore) {\n result = this.expectZeroOrMore(rule);\n }\n else {\n result = this.expectOne(rule);\n }\n }\n else {\n L(rule);\n throw new RuntimeError('Bad grammar! No `token` or `expect` property ' + rule);\n }\n // If there's a trigger attached to this rule, then run it.\n // Make the matches accessible through `state.matches` in the\n // `run: (state) => ...` trigger.\n const matches = [];\n result.matches = matches;\n if (result.results) {\n result.results.forEach((r) => matches.push(flattenMatches(r)));\n }\n if (rule.run && result.success) {\n rule.run({ matches });\n }\n return result;\n }\n}\nParser.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Articulation } from './articulation';\nimport { Dot } from './dot';\nimport { FretHandFinger } from './frethandfinger';\nimport { Music } from './music';\nimport { Parser } from './parser';\nimport { Stem } from './stem';\nimport { defined, log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.EasyScore.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (EasyScore.DEBUG)\n log('Vex.Flow.EasyScore', args);\n}\nexport class EasyScoreGrammar {\n constructor(builder) {\n this.builder = builder;\n }\n begin() {\n return this.LINE;\n }\n LINE() {\n return {\n expect: [this.PIECE, this.PIECES, this.EOL],\n };\n }\n PIECE() {\n return {\n expect: [this.CHORDORNOTE, this.PARAMS],\n run: () => this.builder.commitPiece(),\n };\n }\n PIECES() {\n return {\n expect: [this.COMMA, this.PIECE],\n zeroOrMore: true,\n };\n }\n PARAMS() {\n return {\n expect: [this.DURATION, this.TYPE, this.DOTS, this.OPTS],\n };\n }\n CHORDORNOTE() {\n return {\n expect: [this.CHORD, this.SINGLENOTE],\n or: true,\n };\n }\n CHORD() {\n return {\n expect: [this.LPAREN, this.NOTES, this.RPAREN],\n // eslint-disable-next-line\n run: (state) => this.builder.addChord(state.matches[1]),\n };\n }\n NOTES() {\n return {\n expect: [this.NOTE],\n oneOrMore: true,\n };\n }\n NOTE() {\n return {\n expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE],\n };\n }\n SINGLENOTE() {\n return {\n expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE],\n run: (state) => {\n // eslint-disable-next-line\n const s = state;\n this.builder.addSingleNote(s.matches[0], s.matches[1], s.matches[2]);\n },\n };\n }\n ACCIDENTAL() {\n return {\n expect: [this.MICROTONES, this.ACCIDENTALS],\n maybe: true,\n or: true,\n };\n }\n DOTS() {\n return {\n expect: [this.DOT],\n zeroOrMore: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteDots(state.matches),\n };\n }\n TYPE() {\n return {\n expect: [this.SLASH, this.MAYBESLASH, this.TYPES],\n maybe: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteType(state.matches[2]),\n };\n }\n DURATION() {\n return {\n expect: [this.SLASH, this.DURATIONS],\n maybe: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteDuration(state.matches[1]),\n };\n }\n OPTS() {\n return {\n expect: [this.LBRACKET, this.KEYVAL, this.KEYVALS, this.RBRACKET],\n maybe: true,\n };\n }\n KEYVALS() {\n return {\n expect: [this.COMMA, this.KEYVAL],\n zeroOrMore: true,\n };\n }\n KEYVAL() {\n const unquote = (str) => str.slice(1, -1);\n return {\n expect: [this.KEY, this.EQUALS, this.VAL],\n // eslint-disable-next-line\n run: (state) => this.builder.addNoteOption(state.matches[0], unquote(state.matches[2])),\n };\n }\n VAL() {\n return {\n expect: [this.SVAL, this.DVAL],\n or: true,\n };\n }\n KEY() {\n return { token: '[a-zA-Z][a-zA-Z0-9]*' };\n }\n DVAL() {\n return { token: '[\"][^\"]*[\"]' };\n }\n SVAL() {\n return { token: \"['][^']*[']\" };\n }\n NOTENAME() {\n return { token: '[a-gA-G]' };\n }\n OCTAVE() {\n return { token: '[0-9]+' };\n }\n ACCIDENTALS() {\n return { token: 'bb|b|##|#|n' };\n }\n MICROTONES() {\n return { token: 'bbs|bss|bs|db|d|\\\\+\\\\+-|\\\\+-|\\\\+\\\\+|\\\\+|k|o' };\n }\n DURATIONS() {\n return { token: '[0-9whq]+' };\n }\n TYPES() {\n return { token: '[rRsSmMhHgG]' };\n }\n LPAREN() {\n return { token: '[(]' };\n }\n RPAREN() {\n return { token: '[)]' };\n }\n COMMA() {\n return { token: '[,]' };\n }\n DOT() {\n return { token: '[.]' };\n }\n SLASH() {\n return { token: '[/]' };\n }\n MAYBESLASH() {\n return { token: '[/]?' };\n }\n EQUALS() {\n return { token: '[=]' };\n }\n LBRACKET() {\n return { token: '\\\\[' };\n }\n RBRACKET() {\n return { token: '\\\\]' };\n }\n EOL() {\n return { token: '$' };\n }\n}\nexport class Piece {\n constructor(duration) {\n this.chord = [];\n this.dots = 0;\n this.options = {};\n this.duration = duration;\n }\n}\nexport class Builder {\n constructor(factory) {\n this.commitHooks = [];\n this.factory = factory;\n this.reset();\n }\n reset(options) {\n this.options = Object.assign({ stem: 'auto', clef: 'treble' }, options);\n this.elements = { notes: [], accidentals: [] };\n this.rollingDuration = '8';\n this.resetPiece();\n }\n getFactory() {\n return this.factory;\n }\n getElements() {\n return this.elements;\n }\n addCommitHook(commitHook) {\n this.commitHooks.push(commitHook);\n }\n resetPiece() {\n L('resetPiece');\n this.piece = new Piece(this.rollingDuration);\n }\n setNoteDots(dots) {\n L('setNoteDots:', dots);\n if (dots)\n this.piece.dots = dots.length;\n }\n setNoteDuration(duration) {\n L('setNoteDuration:', duration);\n this.rollingDuration = this.piece.duration = duration || this.rollingDuration;\n }\n setNoteType(type) {\n L('setNoteType:', type);\n if (type)\n this.piece.type = type;\n }\n addNoteOption(key, value) {\n L('addNoteOption: key:', key, 'value:', value);\n this.piece.options[key] = value;\n }\n addNote(key, accid, octave) {\n L('addNote:', key, accid, octave);\n this.piece.chord.push({\n key: key,\n accid,\n octave,\n });\n }\n addSingleNote(key, accid, octave) {\n L('addSingleNote:', key, accid, octave);\n this.addNote(key, accid, octave);\n }\n // notes is an array with 3 entries\n addChord(notes) {\n L('startChord');\n if (typeof notes[0] !== 'object') {\n this.addSingleNote(notes[0]);\n }\n else {\n notes.forEach((n) => {\n if (n)\n this.addNote(...n); // n => [string, string | null, string]\n });\n }\n L('endChord');\n }\n commitPiece() {\n L('commitPiece');\n const { factory } = this;\n if (!factory)\n return;\n const options = Object.assign(Object.assign({}, this.options), this.piece.options);\n // reset() sets this.options.stem & this.options.clef but we check to make sure nothing has changed.\n // e.g., auto | up | down\n const stem = defined(options.stem, 'BadArguments', 'options.stem is not defined').toLowerCase();\n // e.g., treble | bass\n const clef = defined(options.clef, 'BadArguments', 'options.clef is not defined').toLowerCase();\n const { chord, duration, dots, type } = this.piece;\n // Create a string[] that will be assigned to the .keys property of the StaveNote.\n // Each string in the array represents a note pitch and is of the form: {NoteName}{Accidental}/{Octave}\n // Only standard accidentals are included in the .keys property. Microtonal accidentals are not included.\n const standardAccidentals = Music.accidentals;\n const keys = chord.map((notePiece) => {\n var _a;\n return notePiece.key +\n (standardAccidentals.includes((_a = notePiece.accid) !== null && _a !== void 0 ? _a : '') ? notePiece.accid : '') +\n '/' +\n notePiece.octave;\n });\n const auto_stem = stem === 'auto'; // StaveNoteStruct expects the underscore & lowercase.\n // Build a GhostNote or StaveNote using the information we gathered.\n const note = (type === null || type === void 0 ? void 0 : type.toLowerCase()) == 'g'\n ? factory.GhostNote({ duration, dots })\n : factory.StaveNote({ keys, duration, dots, type, clef, auto_stem });\n if (!auto_stem)\n note.setStemDirection(stem === 'up' ? Stem.UP : Stem.DOWN);\n // Attach accidentals.\n const accidentals = [];\n chord.forEach((notePiece, index) => {\n const accid = notePiece.accid;\n if (typeof accid === 'string') {\n const accidental = factory.Accidental({ type: accid });\n note.addModifier(accidental, index);\n accidentals.push(accidental);\n }\n else {\n accidentals.push(undefined);\n }\n });\n // Attach dots.\n for (let i = 0; i < dots; i++)\n Dot.buildAndAttach([note], { all: true });\n this.commitHooks.forEach((commitHook) => commitHook(options, note, this));\n this.elements.notes.push(note);\n this.elements.accidentals.push(accidentals);\n this.resetPiece();\n }\n}\n/**\n * Commit hook used by EasyScore.setOptions().\n */\nfunction setId(options, note) {\n if (options.id === undefined)\n return;\n note.setAttribute('id', options.id);\n}\n// Used by setClass() below.\nconst commaSeparatedRegex = /\\s*,\\s*/;\n/**\n * Commit hook used by EasyScore.setOptions().\n */\nfunction setClass(options, note) {\n if (options.class === undefined)\n return;\n options.class.split(commaSeparatedRegex).forEach((className) => note.addClass(className));\n}\n/**\n * EasyScore implements a parser for a simple language to generate VexFlow objects.\n */\nexport class EasyScore {\n constructor(options = {}) {\n this.defaults = {\n clef: 'treble',\n time: '4/4',\n stem: 'auto',\n };\n this.setOptions(options);\n }\n /**\n * Set the score defaults.\n * clef must be set appropriately to avoid errors when adding Staves.\n * @param defaults.clef default clef ( treble | bass ...) see {@link Clef.types}\n * @param defaults.time default time signature ( 4/4 | 9/8 ...)\n * @param defaults.stem default stem arrangement (auto | up | down)\n * @returns this\n */\n set(defaults) {\n this.defaults = Object.assign(Object.assign({}, this.defaults), defaults);\n return this;\n }\n /**\n * @param options.factory is required.\n * @returns this\n */\n setOptions(options) {\n var _a, _b;\n // eslint-disable-next-line\n const factory = options.factory; // ! operator, because options.factory was set in Factory.EasyScore().\n const builder = (_a = options.builder) !== null && _a !== void 0 ? _a : new Builder(factory);\n this.options = Object.assign(Object.assign({ commitHooks: [setId, setClass, Articulation.easyScoreHook, FretHandFinger.easyScoreHook], throwOnError: false }, options), { factory,\n builder });\n this.factory = factory;\n this.builder = builder;\n this.grammar = new EasyScoreGrammar(this.builder);\n this.parser = new Parser(this.grammar);\n (_b = this.options.commitHooks) === null || _b === void 0 ? void 0 : _b.forEach((commitHook) => this.addCommitHook(commitHook));\n return this;\n }\n setContext(context) {\n this.factory.setContext(context);\n return this;\n }\n parse(line, options = {}) {\n this.builder.reset(options);\n const result = this.parser.parse(line);\n if (!result.success && this.options.throwOnError) {\n L(result);\n throw new RuntimeError('Error parsing line: ' + line);\n }\n return result;\n }\n beam(notes, options) {\n this.factory.Beam({ notes, options });\n return notes;\n }\n tuplet(notes, options) {\n this.factory.Tuplet({ notes, options });\n return notes;\n }\n notes(line, options = {}) {\n options = Object.assign({ clef: this.defaults.clef, stem: this.defaults.stem }, options);\n this.parse(line, options);\n return this.builder.getElements().notes;\n }\n voice(notes, options = {}) {\n options = Object.assign({ time: this.defaults.time }, options);\n return this.factory.Voice(options).addTickables(notes);\n }\n addCommitHook(commitHook) {\n this.builder.addCommitHook(commitHook);\n }\n}\nEasyScore.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\nimport { StemmableNote } from './stemmablenote';\nimport { Category, isAnnotation } from './typeguard';\nimport { RuntimeError } from './util';\nconst ERROR_MSG = 'Ghost note must have valid initialization data to identify duration.';\nexport class GhostNote extends StemmableNote {\n static get CATEGORY() {\n return Category.GhostNote;\n }\n constructor(parameter) {\n if (!parameter) {\n throw new RuntimeError('BadArguments', ERROR_MSG);\n }\n let noteStruct;\n if (typeof parameter === 'string') {\n // Preserve backwards-compatibility\n noteStruct = { duration: parameter };\n }\n else if (typeof parameter === 'object') {\n noteStruct = parameter;\n }\n else {\n throw new RuntimeError('BadArguments', ERROR_MSG);\n }\n super(noteStruct);\n // Note properties\n this.setWidth(0);\n }\n /**\n * @returns true if this note is a type of rest. Rests don't have pitches, but take up space in the score.\n */\n isRest() {\n return true;\n }\n setStave(stave) {\n super.setStave(stave);\n return this;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n draw() {\n // Draw Annotations\n this.setRendered();\n for (let i = 0; i < this.modifiers.length; ++i) {\n const modifier = this.modifiers[i];\n if (isAnnotation(modifier)) {\n modifier.setContext(this.getContext());\n modifier.drawWithStyle();\n }\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Note } from './note';\nimport { Category } from './typeguard';\nexport class GlyphNote extends Note {\n constructor(glyph, noteStruct, options) {\n super(noteStruct);\n this.options = Object.assign({ ignoreTicks: false, line: 2 }, options);\n // Note properties\n this.ignore_ticks = this.options.ignoreTicks;\n if (glyph) {\n this.setGlyph(glyph);\n }\n }\n static get CATEGORY() {\n return Category.GlyphNote;\n }\n setGlyph(glyph) {\n this.glyph = glyph;\n this.setWidth(this.glyph.getMetrics().width);\n return this;\n }\n getBoundingBox() {\n return this.glyph.getBoundingBox();\n }\n preFormat() {\n if (!this.preFormatted && this.modifierContext) {\n this.modifierContext.preFormat();\n }\n this.preFormatted = true;\n return this;\n }\n drawModifiers() {\n const ctx = this.checkContext();\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n modifier.setContext(ctx);\n modifier.drawWithStyle();\n }\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('glyphNote', this.getAttribute('id'));\n // Context is set when setStave is called on Note\n const glyph = this.glyph;\n if (!glyph.getContext()) {\n glyph.setContext(ctx);\n }\n glyph.setStave(stave);\n glyph.setYShift(stave.getYForLine(this.options.line) - stave.getYForGlyphs());\n const x = this.isCenterAligned() ? this.getAbsoluteX() - this.getWidth() / 2 : this.getAbsoluteX();\n glyph.renderToStave(x);\n this.drawModifiers();\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { StaveNote } from './stavenote';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class GraceNote extends StaveNote {\n constructor(noteStruct) {\n super(Object.assign({ glyph_font_scale: Tables.NOTATION_FONT_SCALE * GraceNote.SCALE, stroke_px: GraceNote.LEDGER_LINE_OFFSET }, noteStruct));\n this.slash = noteStruct.slash || false;\n this.slur = true;\n this.buildNoteHeads();\n this.width = 3;\n }\n static get CATEGORY() {\n return Category.GraceNote;\n }\n static get LEDGER_LINE_OFFSET() {\n return 2;\n }\n static get SCALE() {\n return 0.66;\n }\n getStemExtension() {\n if (this.stem_extension_override) {\n return this.stem_extension_override;\n }\n const glyph = this.getGlyph();\n if (glyph) {\n let ret = super.getStemExtension();\n if (glyph.stem) {\n const staveNoteScale = this.getStaveNoteScale();\n ret = (Stem.HEIGHT + ret) * staveNoteScale - Stem.HEIGHT;\n }\n return ret;\n }\n return 0;\n }\n getStaveNoteScale() {\n return this.render_options.glyph_font_scale / Tables.NOTATION_FONT_SCALE;\n }\n draw() {\n super.draw();\n this.setRendered();\n const stem = this.stem;\n if (this.slash && stem) {\n const staveNoteScale = this.getStaveNoteScale();\n // some magic numbers are based on the staveNoteScale 0.66.\n const offsetScale = staveNoteScale / 0.66;\n let slashBBox = undefined;\n const beam = this.beam;\n if (beam) {\n // FIXME: should render slash after beam?\n if (!beam.postFormatted) {\n beam.postFormat();\n }\n slashBBox = this.calcBeamedNotesSlashBBox(8 * offsetScale, 8 * offsetScale, {\n stem: 6 * offsetScale,\n beam: 5 * offsetScale,\n });\n }\n else {\n const stem_direction = this.getStemDirection();\n const noteHeadBounds = this.getNoteHeadBounds();\n const noteStemHeight = stem.getHeight();\n let x = this.getAbsoluteX();\n let y = stem_direction === Stem.DOWN\n ? noteHeadBounds.y_top - noteStemHeight\n : noteHeadBounds.y_bottom - noteStemHeight;\n const defaultStemExtention = stem_direction === Stem.DOWN ? this.glyph.stem_down_extension : this.glyph.stem_up_extension;\n let defaultOffsetY = Tables.STEM_HEIGHT;\n defaultOffsetY -= defaultOffsetY / 2.8;\n defaultOffsetY += defaultStemExtention;\n y += defaultOffsetY * staveNoteScale * stem_direction;\n const offsets = stem_direction === Stem.UP\n ? {\n x1: 1,\n y1: 0,\n x2: 13,\n y2: -9,\n }\n : {\n x1: -4,\n y1: 1,\n x2: 13,\n y2: 9,\n };\n x += offsets.x1 * offsetScale;\n y += offsets.y1 * offsetScale;\n slashBBox = {\n x1: x,\n y1: y,\n x2: x + offsets.x2 * offsetScale,\n y2: y + offsets.y2 * offsetScale,\n };\n }\n // FIXME: avoid staff lines, ledger lines or others.\n const ctx = this.checkContext();\n ctx.save();\n ctx.setLineWidth(1 * offsetScale); // FIXME: use more appropriate value.\n ctx.beginPath();\n ctx.moveTo(slashBBox.x1, slashBBox.y1);\n ctx.lineTo(slashBBox.x2, slashBBox.y2);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n }\n }\n calcBeamedNotesSlashBBox(slashStemOffset, slashBeamOffset, protrusions) {\n const beam = this.beam;\n if (!beam)\n throw new RuntimeError('NoBeam', \"Can't calculate without a beam.\");\n const beam_slope = beam.slope;\n const isBeamEndNote = beam.notes[beam.notes.length - 1] === this;\n const scaleX = isBeamEndNote ? -1 : 1;\n const beam_angle = Math.atan(beam_slope * scaleX);\n // slash line intersecting point on beam.\n const iPointOnBeam = {\n dx: Math.cos(beam_angle) * slashBeamOffset,\n dy: Math.sin(beam_angle) * slashBeamOffset,\n };\n slashStemOffset *= this.getStemDirection();\n const slash_angle = Math.atan((iPointOnBeam.dy - slashStemOffset) / iPointOnBeam.dx);\n const protrusion_stem_dx = Math.cos(slash_angle) * protrusions.stem * scaleX;\n const protrusion_stem_dy = Math.sin(slash_angle) * protrusions.stem;\n const protrusion_beam_dx = Math.cos(slash_angle) * protrusions.beam * scaleX;\n const protrusion_beam_dy = Math.sin(slash_angle) * protrusions.beam;\n const stemX = this.getStemX();\n const stem0X = beam.notes[0].getStemX();\n const stemY = beam.getBeamYToDraw() + (stemX - stem0X) * beam_slope;\n const ret = {\n x1: stemX - protrusion_stem_dx,\n y1: stemY + slashStemOffset - protrusion_stem_dy,\n x2: stemX + iPointOnBeam.dx * scaleX + protrusion_beam_dx,\n y2: stemY + iPointOnBeam.dy + protrusion_beam_dy,\n };\n return ret;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Mark Meeus 2019\nimport { KeySignature } from './keysignature';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nexport class KeySigNote extends Note {\n constructor(keySpec, cancelKeySpec, alterKeySpec) {\n super({ duration: 'b' });\n this.keySignature = new KeySignature(keySpec, cancelKeySpec, alterKeySpec);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.KeySigNote;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n this.keySignature.setStave(this.checkStave());\n this.setWidth(this.keySignature.getWidth());\n return this;\n }\n draw() {\n const ctx = this.checkStave().checkContext();\n this.setRendered();\n this.keySignature.setX(this.getAbsoluteX());\n this.keySignature.setContext(ctx);\n this.keySignature.draw();\n }\n}\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements multiple measure rests.\nimport { Element } from './element';\nimport { Glyph } from './glyph';\nimport { NoteHead } from './notehead';\nimport { StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { TimeSignature } from './timesignature';\nimport { Category, isBarline } from './typeguard';\nimport { defined } from './util';\nlet semibreve_rest;\nfunction get_semibreve_rest() {\n if (!semibreve_rest) {\n const noteHead = new NoteHead({ duration: 'w', note_type: 'r' });\n semibreve_rest = {\n glyph_font_scale: noteHead.render_options.glyph_font_scale,\n glyph_code: noteHead.glyph_code,\n width: noteHead.getWidth(),\n };\n }\n return semibreve_rest;\n}\nexport class MultiMeasureRest extends Element {\n /**\n *\n * @param number_of_measures Number of measures.\n * @param options The options object.\n */\n constructor(number_of_measures, options) {\n super();\n this.xs = { left: NaN, right: NaN };\n this.hasPaddingLeft = false;\n this.hasPaddingRight = false;\n this.hasLineThickness = false;\n this.hasSymbolSpacing = false;\n this.number_of_measures = number_of_measures;\n // Keep track of whether these four options were provided.\n this.hasPaddingLeft = typeof options.padding_left === 'number';\n this.hasPaddingRight = typeof options.padding_right === 'number';\n this.hasLineThickness = typeof options.line_thickness === 'number';\n this.hasSymbolSpacing = typeof options.symbol_spacing === 'number';\n const musicFont = Tables.currentMusicFont();\n this.render_options = Object.assign({ use_symbols: false, show_number: true, number_line: -0.5, number_glyph_point: musicFont.lookupMetric('digits.point'), line: 2, spacing_between_lines_px: Tables.STAVE_LINE_DISTANCE, serif_thickness: 2, semibreve_rest_glyph_scale: Tables.NOTATION_FONT_SCALE, padding_left: 0, padding_right: 0, line_thickness: 5, symbol_spacing: 0 }, options);\n const fontLineShift = musicFont.lookupMetric('digits.shiftLine', 0);\n this.render_options.number_line += fontLineShift;\n }\n static get CATEGORY() {\n return Category.MultiMeasureRest;\n }\n getXs() {\n return this.xs;\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getStave() {\n return this.stave;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n drawLine(stave, ctx, left, right, spacingBetweenLines) {\n const options = this.render_options;\n const y = stave.getYForLine(options.line);\n const padding = (right - left) * 0.1;\n left += padding;\n right -= padding;\n let lineThicknessHalf;\n if (this.hasLineThickness) {\n lineThicknessHalf = options.line_thickness * 0.5;\n }\n else {\n lineThicknessHalf = spacingBetweenLines * 0.25;\n }\n const serifThickness = options.serif_thickness;\n const top = y - spacingBetweenLines;\n const bot = y + spacingBetweenLines;\n const leftIndented = left + serifThickness;\n const rightIndented = right - serifThickness;\n const lineTop = y - lineThicknessHalf;\n const lineBottom = y + lineThicknessHalf;\n ctx.save();\n ctx.beginPath();\n ctx.moveTo(left, top);\n ctx.lineTo(leftIndented, top);\n ctx.lineTo(leftIndented, lineTop);\n ctx.lineTo(rightIndented, lineTop);\n ctx.lineTo(rightIndented, top);\n ctx.lineTo(right, top);\n ctx.lineTo(right, bot);\n ctx.lineTo(rightIndented, bot);\n ctx.lineTo(rightIndented, lineBottom);\n ctx.lineTo(leftIndented, lineBottom);\n ctx.lineTo(leftIndented, bot);\n ctx.lineTo(left, bot);\n ctx.closePath();\n ctx.fill();\n }\n drawSymbols(stave, ctx, left, right, spacingBetweenLines) {\n const n4 = Math.floor(this.number_of_measures / 4);\n const n = this.number_of_measures % 4;\n const n2 = Math.floor(n / 2);\n const n1 = n % 2;\n const options = this.render_options;\n // FIXME: TODO: invalidate semibreve_rest at the appropriate time\n // (e.g., if the system font settings are changed).\n semibreve_rest = undefined;\n const rest = get_semibreve_rest();\n const rest_scale = options.semibreve_rest_glyph_scale;\n const rest_width = rest.width * (rest_scale / rest.glyph_font_scale);\n const glyphs = {\n 2: {\n width: rest_width * 0.5,\n height: spacingBetweenLines,\n },\n 1: {\n width: rest_width,\n },\n };\n /* 10: normal spacingBetweenLines */\n const spacing = this.hasSymbolSpacing ? options.symbol_spacing : 10;\n const width = n4 * glyphs[2].width + n2 * glyphs[2].width + n1 * glyphs[1].width + (n4 + n2 + n1 - 1) * spacing;\n let x = left + (right - left) * 0.5 - width * 0.5;\n const line = options.line;\n const yTop = stave.getYForLine(line - 1);\n const yMiddle = stave.getYForLine(line);\n const yBottom = stave.getYForLine(line + 1);\n ctx.save();\n ctx.setStrokeStyle('none');\n ctx.setLineWidth(0);\n for (let i = 0; i < n4; ++i) {\n ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n ctx.fillRect(x, yBottom - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n x += glyphs[2].width + spacing;\n }\n for (let i = 0; i < n2; ++i) {\n ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n x += glyphs[2].width + spacing;\n }\n for (let i = 0; i < n1; ++i) {\n Glyph.renderGlyph(ctx, x, yTop, rest_scale, rest.glyph_code);\n x += glyphs[1].width + spacing;\n }\n ctx.restore();\n }\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const stave = this.checkStave();\n let left = stave.getNoteStartX();\n let right = stave.getNoteEndX();\n // FIXME: getNoteStartX() returns x + 5(barline width)\n // getNoteEndX() returns x + width(no barline width)\n // See Stave constructor. How do we fix this?\n // Here, we subtract the barline width.\n const begModifiers = stave.getModifiers(StaveModifierPosition.BEGIN);\n if (begModifiers.length === 1 && isBarline(begModifiers[0])) {\n left -= begModifiers[0].getWidth();\n }\n const options = this.render_options;\n if (this.hasPaddingLeft) {\n left = stave.getX() + options.padding_left;\n }\n if (this.hasPaddingRight) {\n right = stave.getX() + stave.getWidth() - options.padding_right;\n }\n this.xs.left = left;\n this.xs.right = right;\n const spacingBetweenLines = options.spacing_between_lines_px;\n if (options.use_symbols) {\n this.drawSymbols(stave, ctx, left, right, spacingBetweenLines);\n }\n else {\n this.drawLine(stave, ctx, left, right, spacingBetweenLines);\n }\n if (options.show_number) {\n const timeSpec = '/' + this.number_of_measures;\n const timeSig = new TimeSignature(timeSpec, 0, false);\n timeSig.point = options.number_glyph_point;\n timeSig.setTimeSig(timeSpec);\n timeSig.setStave(stave);\n timeSig.setX(left + (right - left) * 0.5 - timeSig.getInfo().glyph.getMetrics().width * 0.5);\n timeSig.bottomLine = options.number_line;\n timeSig.setContext(ctx).draw();\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (PedalMarking.DEBUG)\n log('Vex.Flow.PedalMarking', args);\n}\n/**\n * Draws a pedal glyph with the provided `name` on a rendering `context`\n * at the coordinates `x` and `y. Takes into account the glyph data\n * coordinate shifts.\n */\nfunction drawPedalGlyph(name, context, x, y, point) {\n const glyph_data = PedalMarking.GLYPHS[name];\n const glyph = new Glyph(glyph_data.code, point, { category: 'pedalMarking' });\n glyph.render(context, x + glyph_data.x_shift, y + glyph_data.y_shift);\n}\n/**\n * PedalMarking implements different types of pedal markings. These notation\n * elements indicate to the performer when to depress and release the a pedal.\n *\n * In order to create \"Sostenuto\", and \"una corda\" markings, you must set\n * custom text for the release/depress pedal markings.\n */\nexport class PedalMarking extends Element {\n constructor(notes) {\n super();\n this.notes = notes;\n this.type = PedalMarking.type.TEXT;\n this.line = 0;\n // Custom text for the release/depress markings\n this.custom_depress_text = '';\n this.custom_release_text = '';\n this.resetFont();\n this.render_options = {\n bracket_height: 10,\n text_margin_right: 6,\n bracket_line_width: 1,\n color: 'black',\n };\n }\n static get CATEGORY() {\n return Category.PedalMarking;\n }\n /**\n * Create a sustain pedal marking. Returns the defaults PedalMarking.\n * Which uses the traditional \"Ped\" and \"*\"\" markings.\n */\n static createSustain(notes) {\n const pedal = new PedalMarking(notes);\n return pedal;\n }\n /** Create a sostenuto pedal marking */\n static createSostenuto(notes) {\n const pedal = new PedalMarking(notes);\n pedal.setType(PedalMarking.type.MIXED);\n pedal.setCustomText('Sost. Ped.');\n return pedal;\n }\n /** Create an una corda pedal marking */\n static createUnaCorda(notes) {\n const pedal = new PedalMarking(notes);\n pedal.setType(PedalMarking.type.TEXT);\n pedal.setCustomText('una corda', 'tre corda');\n return pedal;\n }\n /** Set pedal type. */\n setType(type) {\n type = typeof type === 'string' ? PedalMarking.typeString[type] : type;\n if (type >= PedalMarking.type.TEXT && type <= PedalMarking.type.MIXED) {\n this.type = type;\n }\n return this;\n }\n /**\n * Set custom text for the `depress`/`release` pedal markings. No text is\n * set if the parameter is falsy.\n */\n setCustomText(depress, release) {\n this.custom_depress_text = depress || '';\n this.custom_release_text = release || '';\n return this;\n }\n /** Set the staff line to render the markings on. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Draw the bracket based pedal markings. */\n drawBracketed() {\n const ctx = this.checkContext();\n let is_pedal_depressed = false;\n let prev_x;\n let prev_y;\n // Iterate through each note\n this.notes.forEach((note, index, notes) => {\n // Each note triggers the opposite pedal action\n is_pedal_depressed = !is_pedal_depressed;\n // Get the initial coordinates for the note\n const x = note.getAbsoluteX();\n const y = note.checkStave().getYForBottomText(this.line + 3);\n // Throw if current note is positioned before the previous note\n if (x < prev_x) {\n throw new RuntimeError('InvalidConfiguration', 'The notes provided must be in order of ascending x positions');\n }\n // Determine if the previous or next note are the same\n // as the current note. We need to keep track of this for\n // when adjustments are made for the release+depress action\n const next_is_same = notes[index + 1] === note;\n const prev_is_same = notes[index - 1] === note;\n let x_shift = 0;\n const point = Tables.currentMusicFont().lookupMetric(`pedalMarking.${is_pedal_depressed ? 'down' : 'up'}.point`);\n if (is_pedal_depressed) {\n // Adjustment for release+depress\n x_shift = prev_is_same ? 5 : 0;\n if (this.type === PedalMarking.type.MIXED && !prev_is_same) {\n // For MIXED style, start with text instead of bracket\n if (this.custom_depress_text) {\n // If we have custom text, use instead of the default \"Ped\" glyph\n const text_width = ctx.measureText(this.custom_depress_text).width;\n ctx.fillText(this.custom_depress_text, x - text_width / 2, y);\n x_shift = text_width / 2 + this.render_options.text_margin_right;\n }\n else {\n // Render the Ped glyph in position\n drawPedalGlyph('pedal_depress', ctx, x, y, point);\n x_shift = 20 + this.render_options.text_margin_right;\n }\n }\n else {\n // Draw start bracket\n ctx.beginPath();\n ctx.moveTo(x, y - this.render_options.bracket_height);\n ctx.lineTo(x + x_shift, y);\n ctx.stroke();\n ctx.closePath();\n }\n }\n else {\n // Adjustment for release+depress\n x_shift = next_is_same ? -5 : 0;\n // Draw end bracket\n ctx.beginPath();\n ctx.moveTo(prev_x, prev_y);\n ctx.lineTo(x + x_shift, y);\n ctx.lineTo(x, y - this.render_options.bracket_height);\n ctx.stroke();\n ctx.closePath();\n }\n // Store previous coordinates\n prev_x = x + x_shift;\n prev_y = y;\n });\n }\n /**\n * Draw the text based pedal markings. This defaults to the traditional\n * \"Ped\" and \"*\"\" symbols if no custom text has been provided.\n */\n drawText() {\n const ctx = this.checkContext();\n let is_pedal_depressed = false;\n // Iterate through each note, placing glyphs or custom text accordingly\n this.notes.forEach((note) => {\n is_pedal_depressed = !is_pedal_depressed;\n const stave = note.checkStave();\n const x = note.getAbsoluteX();\n const y = stave.getYForBottomText(this.line + 3);\n const point = Tables.currentMusicFont().lookupMetric(`pedalMarking.${is_pedal_depressed ? 'down' : 'up'}.point`);\n let text_width = 0;\n if (is_pedal_depressed) {\n if (this.custom_depress_text) {\n text_width = ctx.measureText(this.custom_depress_text).width;\n ctx.fillText(this.custom_depress_text, x - text_width / 2, y);\n }\n else {\n drawPedalGlyph('pedal_depress', ctx, x, y, point);\n }\n }\n else {\n if (this.custom_release_text) {\n text_width = ctx.measureText(this.custom_release_text).width;\n ctx.fillText(this.custom_release_text, x - text_width / 2, y);\n }\n else {\n drawPedalGlyph('pedal_release', ctx, x, y, point);\n }\n }\n });\n }\n /** Render the pedal marking in position on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setStrokeStyle(this.render_options.color);\n ctx.setFillStyle(this.render_options.color);\n ctx.setFont(this.textFont);\n L('Rendering Pedal Marking');\n if (this.type === PedalMarking.type.BRACKET || this.type === PedalMarking.type.MIXED) {\n ctx.setLineWidth(this.render_options.bracket_line_width);\n this.drawBracketed();\n }\n else if (this.type === PedalMarking.type.TEXT) {\n this.drawText();\n }\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.PedalMarking.DEBUG` to `true`. */\nPedalMarking.DEBUG = false;\nPedalMarking.TEXT_FONT = {\n family: Font.SERIF,\n size: 12,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n/** Glyph data */\nPedalMarking.GLYPHS = {\n pedal_depress: {\n code: 'keyboardPedalPed',\n x_shift: -10,\n y_shift: 0,\n },\n pedal_release: {\n code: 'keyboardPedalUp',\n x_shift: -2,\n y_shift: 3,\n },\n};\n/** Pedal type as number. */\nPedalMarking.type = {\n TEXT: 1,\n BRACKET: 2,\n MIXED: 3,\n};\n/** Pedal type as string. */\nPedalMarking.typeString = {\n text: PedalMarking.type.TEXT,\n bracket: PedalMarking.type.BRACKET,\n mixed: PedalMarking.type.MIXED,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Glyph } from './glyph';\nimport { GlyphNote } from './glyphnote';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\n// Map `type` to SMuFL glyph code.\nconst CODES = {\n '1': 'repeat1Bar',\n '2': 'repeat2Bars',\n '4': 'repeat4Bars',\n slash: 'repeatBarSlash',\n};\nexport class RepeatNote extends GlyphNote {\n static get CATEGORY() {\n return Category.RepeatNote;\n }\n constructor(type, noteStruct, options) {\n super(undefined, Object.assign({ duration: 'q', align_center: type !== 'slash' }, noteStruct), options);\n const glyphCode = CODES[type] || 'repeat1Bar';\n const glyph = new Glyph(glyphCode, Tables.currentMusicFont().lookupMetric('repeatNote.point', 40), {\n category: 'repeatNote',\n });\n this.setGlyph(glyph);\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This file implements `StaveLine` which are simply lines that connect\n// two notes. This object is highly configurable, see the `render_options`.\n// A simple line is often used for notating glissando articulations, but you\n// can format a `StaveLine` with arrows or colors for more pedagogical\n// purposes, such as diagrams.\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { TextJustification } from './textnote';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n// Attribution: Arrow rendering implementations based off of\n// Patrick Horgan's article, \"Drawing lines and arcs with\n// arrow heads on HTML5 Canvas\"\n//\n// Draw an arrow head that connects between 3 coordinates.\nfunction drawArrowHead(ctx, x0, y0, x1, y1, x2, y2) {\n // all cases do this.\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.lineTo(x0, y0);\n ctx.closePath();\n ctx.fill();\n}\nexport class StaveLine extends Element {\n // Initialize the StaveLine with the given `notes`.\n //\n // `notes` is a struct that has:\n //\n // ```\n // {\n // first_note: Note,\n // last_note: Note,\n // first_indices: [n1, n2, n3],\n // last_indices: [n1, n2, n3]\n // }\n // ```\n constructor(notes) {\n super();\n this.setNotes(notes);\n this.text = '';\n this.resetFont();\n this.render_options = {\n // Space to add to the left or the right\n padding_left: 4,\n padding_right: 3,\n // The width of the line in pixels\n line_width: 1,\n // An array of line/space lengths. (TODO/QUESTION: Is this supported in SVG?).\n line_dash: undefined,\n // Can draw rounded line end, instead of a square. (TODO/QUESTION: Is this supported in SVG?).\n rounded_end: true,\n // The color of the line and arrowheads\n color: undefined,\n // Flags to draw arrows on each end of the line\n draw_start_arrow: false,\n draw_end_arrow: false,\n // The length of the arrowhead sides\n arrowhead_length: 10,\n // The angle of the arrowhead\n arrowhead_angle: Math.PI / 8,\n // The position of the text\n text_position_vertical: StaveLine.TextVerticalPosition.TOP,\n text_justification: StaveLine.TextJustification.CENTER,\n };\n }\n static get CATEGORY() {\n return Category.StaveLine;\n }\n // The the annotation for the `StaveLine`\n setText(text) {\n this.text = text;\n return this;\n }\n // Set the notes for the `StaveLine`\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Notes needs to have either first_note or last_note set.');\n }\n if (!notes.first_indices)\n notes.first_indices = [0];\n if (!notes.last_indices)\n notes.last_indices = [0];\n if (notes.first_indices.length !== notes.last_indices.length) {\n throw new RuntimeError('BadArguments', 'Connected notes must have same number of indices.');\n }\n this.notes = notes;\n this.first_note = notes.first_note;\n this.first_indices = notes.first_indices;\n this.last_note = notes.last_note;\n this.last_indices = notes.last_indices;\n return this;\n }\n // Apply the style of the `StaveLine` to the context\n applyLineStyle() {\n const ctx = this.checkContext();\n const render_options = this.render_options;\n if (render_options.line_dash) {\n ctx.setLineDash(render_options.line_dash);\n }\n if (render_options.line_width) {\n ctx.setLineWidth(render_options.line_width);\n }\n if (render_options.rounded_end) {\n ctx.setLineCap('round');\n }\n else {\n ctx.setLineCap('square');\n }\n }\n // Apply the text styling to the context\n applyFontStyle() {\n const ctx = this.checkContext();\n ctx.setFont(this.textFont);\n const render_options = this.render_options;\n const color = render_options.color;\n if (color) {\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n }\n }\n // Helper function to draw a line with arrow heads\n drawArrowLine(ctx, pt1, pt2) {\n const both_arrows = this.render_options.draw_start_arrow && this.render_options.draw_end_arrow;\n const x1 = pt1.x;\n const y1 = pt1.y;\n const x2 = pt2.x;\n const y2 = pt2.y;\n // For ends with arrow we actually want to stop before we get to the arrow\n // so that wide lines won't put a flat end on the arrow.\n const distance = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n const ratio = (distance - this.render_options.arrowhead_length / 3) / distance;\n let end_x;\n let end_y;\n let start_x;\n let start_y;\n if (this.render_options.draw_end_arrow || both_arrows) {\n end_x = Math.round(x1 + (x2 - x1) * ratio);\n end_y = Math.round(y1 + (y2 - y1) * ratio);\n }\n else {\n end_x = x2;\n end_y = y2;\n }\n if (this.render_options.draw_start_arrow || both_arrows) {\n start_x = x1 + (x2 - x1) * (1 - ratio);\n start_y = y1 + (y2 - y1) * (1 - ratio);\n }\n else {\n start_x = x1;\n start_y = y1;\n }\n if (this.render_options.color) {\n ctx.setStrokeStyle(this.render_options.color);\n ctx.setFillStyle(this.render_options.color);\n }\n // Draw the shaft of the arrow\n ctx.beginPath();\n ctx.moveTo(start_x, start_y);\n ctx.lineTo(end_x, end_y);\n ctx.stroke();\n ctx.closePath();\n // calculate the angle of the line\n const line_angle = Math.atan2(y2 - y1, x2 - x1);\n // h is the line length of a side of the arrow head\n const h = Math.abs(this.render_options.arrowhead_length / Math.cos(this.render_options.arrowhead_angle));\n let angle1;\n let angle2;\n let top_x;\n let top_y;\n let bottom_x;\n let bottom_y;\n if (this.render_options.draw_end_arrow || both_arrows) {\n angle1 = line_angle + Math.PI + this.render_options.arrowhead_angle;\n top_x = x2 + Math.cos(angle1) * h;\n top_y = y2 + Math.sin(angle1) * h;\n angle2 = line_angle + Math.PI - this.render_options.arrowhead_angle;\n bottom_x = x2 + Math.cos(angle2) * h;\n bottom_y = y2 + Math.sin(angle2) * h;\n drawArrowHead(ctx, top_x, top_y, x2, y2, bottom_x, bottom_y);\n }\n if (this.render_options.draw_start_arrow || both_arrows) {\n angle1 = line_angle + this.render_options.arrowhead_angle;\n top_x = x1 + Math.cos(angle1) * h;\n top_y = y1 + Math.sin(angle1) * h;\n angle2 = line_angle - this.render_options.arrowhead_angle;\n bottom_x = x1 + Math.cos(angle2) * h;\n bottom_y = y1 + Math.sin(angle2) * h;\n drawArrowHead(ctx, top_x, top_y, x1, y1, bottom_x, bottom_y);\n }\n }\n // Renders the `StaveLine` on the context\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const first_note = this.first_note;\n const last_note = this.last_note;\n const render_options = this.render_options;\n ctx.save();\n this.applyLineStyle();\n // Cycle through each set of indices and draw lines\n let start_position = { x: 0, y: 0 };\n let end_position = { x: 0, y: 0 };\n this.first_indices.forEach((first_index, i) => {\n const last_index = this.last_indices[i];\n // Get initial coordinates for the start/end of the line\n start_position = first_note.getModifierStartXY(2, first_index);\n end_position = last_note.getModifierStartXY(1, last_index);\n const upwards_slope = start_position.y > end_position.y;\n // Adjust `x` coordinates for modifiers\n start_position.x += first_note.getMetrics().modRightPx + render_options.padding_left;\n end_position.x -= last_note.getMetrics().modLeftPx + render_options.padding_right;\n // Adjust first `x` coordinates for displacements\n const notehead_width = first_note.getGlyph().getWidth();\n const first_displaced = first_note.getKeyProps()[first_index].displaced;\n if (first_displaced && first_note.getStemDirection() === 1) {\n start_position.x += notehead_width + render_options.padding_left;\n }\n // Adjust last `x` coordinates for displacements\n const last_displaced = last_note.getKeyProps()[last_index].displaced;\n if (last_displaced && last_note.getStemDirection() === -1) {\n end_position.x -= notehead_width + render_options.padding_right;\n }\n // Adjust y position better if it's not coming from the center of the note\n start_position.y += upwards_slope ? -3 : 1;\n end_position.y += upwards_slope ? 2 : 0;\n this.drawArrowLine(ctx, start_position, end_position);\n });\n ctx.restore();\n // Determine the x coordinate where to start the text\n const text_width = ctx.measureText(this.text).width;\n const justification = render_options.text_justification;\n let x = 0;\n if (justification === StaveLine.TextJustification.LEFT) {\n x = start_position.x;\n }\n else if (justification === StaveLine.TextJustification.CENTER) {\n const delta_x = end_position.x - start_position.x;\n const center_x = delta_x / 2 + start_position.x;\n x = center_x - text_width / 2;\n }\n else if (justification === StaveLine.TextJustification.RIGHT) {\n x = end_position.x - text_width;\n }\n // Determine the y value to start the text\n let y = 0;\n const vertical_position = render_options.text_position_vertical;\n if (vertical_position === StaveLine.TextVerticalPosition.TOP) {\n y = first_note.checkStave().getYForTopText();\n }\n else if (vertical_position === StaveLine.TextVerticalPosition.BOTTOM) {\n y = first_note.checkStave().getYForBottomText(Tables.TEXT_HEIGHT_OFFSET_HACK);\n }\n // Draw the text\n ctx.save();\n this.applyFontStyle();\n ctx.fillText(this.text, x, y);\n ctx.restore();\n return this;\n }\n}\n/** Default text font. */\nStaveLine.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n// Text Positioning\nStaveLine.TextVerticalPosition = {\n TOP: 1,\n BOTTOM: 2,\n};\nStaveLine.TextJustification = TextJustification;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { Note } from './note';\nimport { Stave } from './stave';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n/**\n * System implements a musical system, which is a collection of staves,\n * each which can have one or more voices. All voices across all staves in\n * the system are formatted together.\n */\nexport class System extends Element {\n constructor(params = {}) {\n super();\n this.setOptions(params);\n this.parts = [];\n }\n static get CATEGORY() {\n return Category.System;\n }\n /** Set formatting options. */\n setOptions(options = {}) {\n if (!options.factory) {\n throw new RuntimeError('NoFactory', 'System.setOptions(options) requires a factory.');\n }\n this.factory = options.factory;\n this.options = Object.assign(Object.assign({ factory: this.factory, x: 10, y: 10, width: 500, spaceBetweenStaves: 12, autoWidth: false, noJustification: false, debugFormatter: false, formatIterations: 0, noPadding: false }, options), { details: Object.assign({ alpha: 0.5 }, options.details), formatOptions: Object.assign({}, options.formatOptions) });\n if (this.options.noJustification === false && typeof options.width === 'undefined') {\n this.options.autoWidth = true;\n }\n }\n /** Set associated context. */\n setContext(context) {\n super.setContext(context);\n this.factory.setContext(context);\n return this;\n }\n /**\n * Add connector between staves.\n * @param type see {@link StaveConnector.typeString}\n */\n addConnector(type = 'double') {\n this.connector = this.factory.StaveConnector({\n top_stave: this.parts[0].stave,\n bottom_stave: this.parts[this.parts.length - 1].stave,\n type,\n });\n return this.connector;\n }\n /**\n * Add a stave to the system.\n *\n * Example (one voice):\n *\n * `system.addStave({voices: [score.voice(score.notes('C#5/q, B4, A4, G#4'))]});`\n *\n * Example (two voices):\n *\n * `system.addStave({voices: [`\n * `score.voice(score.notes('C#5/q, B4, A4, G#4', {stem: 'up'})),`\n * `score.voice(score.notes('C#4/h, C#4', {stem: 'down'}))`\n * `]});`\n */\n addStave(params) {\n var _a;\n const staveOptions = Object.assign({ left_bar: false }, params.options);\n const stave = (_a = params.stave) !== null && _a !== void 0 ? _a : this.factory.Stave({ x: this.options.x, y: this.options.y, width: this.options.width, options: staveOptions });\n const p = Object.assign(Object.assign({ stave, \n /* voices: [], */\n spaceAbove: 0, spaceBelow: 0, debugNoteMetrics: false, noJustification: false }, params), { options: staveOptions });\n const ctx = this.getContext();\n p.voices.forEach((voice) => voice\n .setContext(ctx)\n .setStave(stave)\n .getTickables()\n .forEach((tickable) => tickable.setStave(stave)));\n this.parts.push(p);\n return stave;\n }\n /** Format the system. */\n format() {\n const options_details = this.options.details;\n let justifyWidth = 0;\n const formatter = new Formatter(options_details);\n this.formatter = formatter;\n let y = this.options.y;\n let startX = 0;\n let allVoices = [];\n let allStaves = [];\n const debugNoteMetricsYs = [];\n // Join the voices for each stave.\n this.parts.forEach((part) => {\n y = y + part.stave.space(part.spaceAbove);\n part.stave.setY(y);\n formatter.joinVoices(part.voices);\n y = y + part.stave.space(part.spaceBelow);\n y = y + part.stave.space(this.options.spaceBetweenStaves);\n if (part.debugNoteMetrics) {\n debugNoteMetricsYs.push({ y, voice: part.voices[0] });\n y += 15;\n }\n allVoices = allVoices.concat(part.voices);\n allStaves = allStaves.concat(part.stave);\n startX = Math.max(startX, part.stave.getNoteStartX());\n });\n // Update the start position of all staves.\n this.parts.forEach((part) => part.stave.setNoteStartX(startX));\n if (this.options.autoWidth) {\n justifyWidth = formatter.preCalculateMinTotalWidth(allVoices);\n this.parts.forEach((part) => {\n part.stave.setWidth(justifyWidth + Stave.rightPadding + (startX - this.options.x));\n });\n }\n else {\n justifyWidth = this.options.noPadding\n ? this.options.width - (startX - this.options.x)\n : this.options.width - (startX - this.options.x) - Stave.defaultPadding;\n }\n formatter.format(allVoices, this.options.noJustification ? 0 : justifyWidth, this.options.formatOptions);\n formatter.postFormat();\n for (let i = 0; i < this.options.formatIterations; i++) {\n formatter.tune(options_details);\n }\n this.startX = startX;\n this.debugNoteMetricsYs = debugNoteMetricsYs;\n this.lastY = y;\n this.boundingBox = new BoundingBox(this.options.x, this.options.y, this.options.width, this.lastY - this.options.y);\n Stave.formatBegModifiers(allStaves);\n }\n /** Render the system. */\n draw() {\n // Render debugging information, if requested.\n const ctx = this.checkContext();\n if (!this.formatter || !this.startX || !this.lastY || !this.debugNoteMetricsYs) {\n throw new RuntimeError('NoFormatter', 'format() must be called before draw()');\n }\n this.setRendered();\n if (this.options.debugFormatter) {\n Formatter.plotDebugging(ctx, this.formatter, this.startX, this.options.y, this.lastY);\n }\n this.debugNoteMetricsYs.forEach((d) => {\n d.voice.getTickables().forEach((tickable) => Note.plotMetrics(ctx, tickable, d.y));\n });\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// The file implements notes for Tablature notation. This consists of one or\n// more fret positions, and can either be drawn with or without stems.\n//\n// See `tests/tabnote_tests.ts` for usage examples.\nimport { Font } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { StemmableNote } from './stemmablenote';\nimport { Tables } from './tables';\nimport { Category, isDot } from './typeguard';\nimport { defined, RuntimeError } from './util';\n// Gets the unused strings grouped together if consecutive.\n//\n// Parameters:\n// * num_lines - The number of lines\n// * strings_used - An array of numbers representing which strings have fret positions\nfunction getUnusedStringGroups(num_lines, strings_used) {\n const stem_through = [];\n let group = [];\n for (let string = 1; string <= num_lines; string++) {\n const is_used = strings_used.indexOf(string) > -1;\n if (!is_used) {\n group.push(string);\n }\n else {\n stem_through.push(group);\n group = [];\n }\n }\n if (group.length > 0)\n stem_through.push(group);\n return stem_through;\n}\n// Gets groups of points that outline the partial stem lines\n// between fret positions\n//\n// Parameters:\n// * stem_Y - The `y` coordinate the stem is located on\n// * unused_strings - An array of groups of unused strings\n// * stave - The stave to use for reference\n// * stem_direction - The direction of the stem\nfunction getPartialStemLines(stem_y, unused_strings, stave, stem_direction) {\n const up_stem = stem_direction !== 1;\n const down_stem = stem_direction !== -1;\n const line_spacing = stave.getSpacingBetweenLines();\n const total_lines = stave.getNumLines();\n const stem_lines = [];\n unused_strings.forEach((strings) => {\n const containsLastString = strings.indexOf(total_lines) > -1;\n const containsFirstString = strings.indexOf(1) > -1;\n if ((up_stem && containsFirstString) || (down_stem && containsLastString)) {\n return;\n }\n // If there's only one string in the group, push a duplicate value.\n // We do this because we need 2 strings to convert into upper/lower y\n // values.\n if (strings.length === 1) {\n strings.push(strings[0]);\n }\n const line_ys = [];\n // Iterate through each group string and store it's y position\n strings.forEach((string, index, strings) => {\n const isTopBound = string === 1;\n const isBottomBound = string === total_lines;\n // Get the y value for the appropriate staff line,\n // we adjust for a 0 index array, since string numbers are index 1\n let y = stave.getYForLine(string - 1);\n // Unless the string is the first or last, add padding to each side\n // of the line\n if (index === 0 && !isTopBound) {\n y -= line_spacing / 2 - 1;\n }\n else if (index === strings.length - 1 && !isBottomBound) {\n y += line_spacing / 2 - 1;\n }\n // Store the y value\n line_ys.push(y);\n // Store a subsequent y value connecting this group to the main\n // stem above/below the stave if it's the top/bottom string\n if (stem_direction === 1 && isTopBound) {\n line_ys.push(stem_y - 2);\n }\n else if (stem_direction === -1 && isBottomBound) {\n line_ys.push(stem_y + 2);\n }\n });\n // Add the sorted y values to the\n stem_lines.push(line_ys.sort((a, b) => a - b));\n });\n return stem_lines;\n}\nexport class TabNote extends StemmableNote {\n // Initialize the TabNote with a `noteStruct` full of properties\n // and whether to `draw_stem` when rendering the note\n constructor(noteStruct, draw_stem = false) {\n super(noteStruct);\n this.glyphs = [];\n // Return the number of the greatest string, which is the string lowest on the display\n this.greatestString = () => {\n return this.positions.map((x) => x.str).reduce((a, b) => (a > b ? a : b));\n };\n // Return the number of the least string, which is the string highest on the display\n this.leastString = () => {\n return this.positions.map((x) => x.str).reduce((a, b) => (a < b ? a : b));\n };\n this.ghost = false; // Renders parenthesis around notes\n // Note properties\n // The fret positions in the note. An array of `{ str: X, fret: X }`\n this.positions = noteStruct.positions || [];\n // Render Options\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads and rests\n glyph_font_scale: Tables.TABLATURE_FONT_SCALE, \n // Flag to draw a stem\n draw_stem, \n // Flag to draw dot modifiers\n draw_dots: draw_stem, \n // Flag to extend the main stem through the stave and fret positions\n draw_stem_through_stave: false, \n // vertical shift from stave line\n y_shift: 0, \n // normal glyph scale\n scale: 1.0, \n // default tablature font\n font: `${Font.SIZE}pt ${Font.SANS_SERIF}` });\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n this.buildStem();\n if (noteStruct.stem_direction) {\n this.setStemDirection(noteStruct.stem_direction);\n }\n else {\n this.setStemDirection(Stem.UP);\n }\n // Renders parenthesis around notes\n this.ghost = false;\n this.updateWidth();\n }\n static get CATEGORY() {\n return Category.TabNote;\n }\n reset() {\n super.reset();\n if (this.stave)\n this.setStave(this.stave);\n return this;\n }\n // Set as ghost `TabNote`, surrounds the fret positions with parenthesis.\n // Often used for indicating frets that are being bent to\n setGhost(ghost) {\n this.ghost = ghost;\n this.updateWidth();\n return this;\n }\n // Determine if the note has a stem\n hasStem() {\n if (this.render_options.draw_stem)\n return true;\n return false;\n }\n // Get the default stem extension for the note\n getStemExtension() {\n const glyph = this.getGlyph();\n if (this.stem_extension_override != null) {\n return this.stem_extension_override;\n }\n if (glyph) {\n return this.getStemDirection() === Stem.UP ? glyph.tabnote_stem_up_extension : glyph.tabnote_stem_down_extension;\n }\n return 0;\n }\n // Calculate and store the width of the note\n updateWidth() {\n this.glyphs = [];\n this.width = 0;\n for (let i = 0; i < this.positions.length; ++i) {\n let fret = this.positions[i].fret;\n if (this.ghost)\n fret = '(' + fret + ')';\n const glyph = Tables.tabToGlyph(fret.toString(), this.render_options.scale);\n this.glyphs.push(glyph);\n this.width = Math.max(glyph.getWidth(), this.width);\n }\n // For some reason we associate a notehead glyph with a TabNote, and this\n // glyph is used for certain width calculations. Of course, this is totally\n // incorrect since a notehead is a poor approximation for the dimensions of\n // a fret number which can have multiple digits. As a result, we must\n // overwrite getWidth() to return the correct width\n this.glyph.getWidth = () => this.width;\n }\n // Set the `stave` to the note\n setStave(stave) {\n super.setStave(stave);\n const ctx = stave.getContext();\n this.setContext(ctx);\n // Calculate the fret number width based on font used\n if (ctx) {\n this.width = 0;\n for (let i = 0; i < this.glyphs.length; ++i) {\n const glyph = this.glyphs[i];\n const text = '' + glyph.text;\n if (text.toUpperCase() !== 'X') {\n ctx.save();\n ctx.setFont(this.render_options.font);\n glyph.width = ctx.measureText(text).width;\n ctx.restore();\n glyph.getWidth = () => glyph.width;\n }\n this.width = Math.max(glyph.getWidth(), this.width);\n }\n this.glyph.getWidth = () => this.width;\n }\n // we subtract 1 from `line` because getYForLine expects a 0-based index,\n // while the position.str is a 1-based index\n const ys = this.positions.map(({ str: line }) => stave.getYForLine(Number(line) - 1));\n this.setYs(ys);\n if (this.stem) {\n this.stem.setYBounds(this.getStemY(), this.getStemY());\n }\n return this;\n }\n // Get the fret positions for the note\n getPositions() {\n return this.positions;\n }\n // Get the default `x` and `y` coordinates for a modifier at a specific\n // `position` at a fret position `index`\n getModifierStartXY(position, index) {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-Values calculated for this note.');\n }\n let x = 0;\n if (position === Modifier.Position.LEFT) {\n x = -1 * 2; // FIXME: modifier padding, move to font file\n }\n else if (position === Modifier.Position.RIGHT) {\n x = this.width + 2; // FIXME: modifier padding, move to font file\n }\n else if (position === Modifier.Position.BELOW || position === Modifier.Position.ABOVE) {\n const note_glyph_width = this.glyph.getWidth();\n x = note_glyph_width / 2;\n }\n return {\n x: this.getAbsoluteX() + x,\n y: this.ys[index],\n };\n }\n // Get the default line for rest\n getLineForRest() {\n return Number(this.positions[0].str);\n }\n // Pre-render formatting\n preFormat() {\n if (this.preFormatted)\n return;\n if (this.modifierContext)\n this.modifierContext.preFormat();\n // width is already set during init()\n this.preFormatted = true;\n }\n // Get the x position for the stem\n getStemX() {\n return this.getCenterGlyphX();\n }\n // Get the y position for the stem\n getStemY() {\n const num_lines = this.checkStave().getNumLines();\n // The decimal staff line amounts provide optimal spacing between the\n // fret number and the stem\n const stemUpLine = -0.5;\n const stemDownLine = num_lines - 0.5;\n const stemStartLine = Stem.UP === this.stem_direction ? stemUpLine : stemDownLine;\n return this.checkStave().getYForLine(stemStartLine);\n }\n // Get the stem extents for the tabnote\n getStemExtents() {\n return this.checkStem().getExtents();\n }\n // Draw the fal onto the context\n drawFlag() {\n var _a;\n const { beam, glyph, render_options: { draw_stem }, } = this;\n const context = this.checkContext();\n const shouldDrawFlag = beam == undefined && draw_stem;\n // Now it's the flag's turn.\n if (glyph.flag && shouldDrawFlag) {\n const flag_x = this.getStemX();\n const flag_y = this.getStemDirection() === Stem.DOWN\n ? // Down stems are below the note head and have flags on the right.\n this.getStemY() - this.checkStem().getHeight() - (this.glyph ? this.glyph.stem_down_extension : 0)\n : // Up stems are above the note head and have flags on the right.\n this.getStemY() - this.checkStem().getHeight() + (this.glyph ? this.glyph.stem_up_extension : 0);\n // Draw the Flag\n //this.flag?.setOptions({ category: 'flag.tabStem' });\n (_a = this.flag) === null || _a === void 0 ? void 0 : _a.render(context, flag_x, flag_y);\n //Glyph.renderGlyph(context, flag_x, flag_y, glyph_font_scale, flag_code, { category: 'flag.tabStem' });\n }\n }\n // Render the modifiers onto the context.\n drawModifiers() {\n this.modifiers.forEach((modifier) => {\n // Only draw the dots if enabled.\n if (isDot(modifier) && !this.render_options.draw_dots) {\n return;\n }\n modifier.setContext(this.getContext());\n modifier.drawWithStyle();\n });\n }\n // Render the stem extension through the fret positions\n drawStemThrough() {\n const stemX = this.getStemX();\n const stemY = this.getStemY();\n const ctx = this.checkContext();\n const drawStem = this.render_options.draw_stem;\n const stemThrough = this.render_options.draw_stem_through_stave;\n if (drawStem && stemThrough) {\n const numLines = this.checkStave().getNumLines();\n const stringsUsed = this.positions.map((position) => Number(position.str));\n const unusedStrings = getUnusedStringGroups(numLines, stringsUsed);\n const stemLines = getPartialStemLines(stemY, unusedStrings, this.checkStave(), this.getStemDirection());\n ctx.save();\n ctx.setLineWidth(Stem.WIDTH);\n stemLines.forEach((bounds) => {\n if (bounds.length === 0)\n return;\n ctx.beginPath();\n ctx.moveTo(stemX, bounds[0]);\n ctx.lineTo(stemX, bounds[bounds.length - 1]);\n ctx.stroke();\n ctx.closePath();\n });\n ctx.restore();\n }\n }\n // Render the fret positions onto the context\n drawPositions() {\n const ctx = this.checkContext();\n const x = this.getAbsoluteX();\n const ys = this.ys;\n for (let i = 0; i < this.positions.length; ++i) {\n const y = ys[i] + this.render_options.y_shift;\n const glyph = this.glyphs[i];\n // Center the fret text beneath the notation note head\n const note_glyph_width = this.glyph.getWidth();\n const tab_x = x + note_glyph_width / 2 - glyph.getWidth() / 2;\n // FIXME: Magic numbers.\n ctx.clearRect(tab_x - 2, y - 3, glyph.getWidth() + 4, 6);\n if (glyph.code) {\n Glyph.renderGlyph(ctx, tab_x, y, this.render_options.glyph_font_scale * this.render_options.scale, glyph.code);\n }\n else {\n ctx.save();\n ctx.setFont(this.render_options.font);\n const text = glyph.text.toString();\n ctx.fillText(text, tab_x, y + 5 * this.render_options.scale);\n ctx.restore();\n }\n }\n }\n // The main rendering function for the entire note.\n draw() {\n const ctx = this.checkContext();\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', \"Can't draw note without Y values.\");\n }\n this.setRendered();\n const render_stem = this.beam == undefined && this.render_options.draw_stem;\n ctx.openGroup('tabnote', this.getAttribute('id'), { pointerBBox: true });\n this.drawPositions();\n this.drawStemThrough();\n if (this.stem && render_stem) {\n const stem_x = this.getStemX();\n this.stem.setNoteHeadXBounds(stem_x, stem_x);\n this.stem.setContext(ctx).draw();\n }\n this.drawFlag();\n this.drawModifiers();\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Stave } from './stave';\nimport { Category } from './typeguard';\nexport class TabStave extends Stave {\n static get CATEGORY() {\n return Category.TabStave;\n }\n constructor(x, y, width, options) {\n const tab_options = Object.assign({ spacing_between_lines_px: 13, num_lines: 6, top_text_position: 1 }, options);\n super(x, y, width, tab_options);\n }\n getYForGlyphs() {\n return this.getYForLine(2.5);\n }\n // Deprecated\n addTabGlyph() {\n this.addClef('tab');\n return this;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n//\n// This file implements `TextBrackets` which extend between two notes.\n// The octave transposition markings (8va, 8vb, 15va, 15vb) can be created\n// using this class.\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Renderer } from './renderer';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.TextBracket.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextBracket.DEBUG)\n log('Vex.Flow.TextBracket', args);\n}\nexport var TextBracketPosition;\n(function (TextBracketPosition) {\n TextBracketPosition[TextBracketPosition[\"TOP\"] = 1] = \"TOP\";\n TextBracketPosition[TextBracketPosition[\"BOTTOM\"] = -1] = \"BOTTOM\";\n})(TextBracketPosition || (TextBracketPosition = {}));\nexport class TextBracket extends Element {\n constructor({ start, stop, text = '', superscript = '', position = TextBracketPosition.TOP }) {\n super();\n this.start = start;\n this.stop = stop;\n this.text = text;\n this.superscript = superscript;\n this.position = typeof position === 'string' ? TextBracket.PositionString[position] : position;\n this.line = 1;\n this.resetFont();\n this.render_options = {\n dashed: true,\n dash: [5],\n color: 'black',\n line_width: 1,\n show_bracket: true,\n bracket_height: 8,\n // In the BOTTOM position, the bracket line can extend\n // under the superscript.\n underline_superscript: true,\n };\n }\n static get CATEGORY() {\n return Category.TextBracket;\n }\n static get Position() {\n return TextBracketPosition;\n }\n static get PositionString() {\n return {\n top: TextBracketPosition.TOP,\n bottom: TextBracketPosition.BOTTOM,\n };\n }\n /**\n * @deprecated Use `TextBracket.Position` instead.\n */\n static get Positions() {\n L('Positions is deprecated, use TextBracketPosition instead.');\n return TextBracketPosition;\n }\n /**\n * @deprecated Use `TextBracket.PositionString` instead.\n */\n static get PositionsString() {\n L('PositionsString is deprecated, use PositionString instead.');\n return TextBracket.PositionString;\n }\n /**\n * Apply the text backet styling to the provided context.\n * @param ctx\n * @returns this\n */\n applyStyle(ctx) {\n ctx.setFont(this.font);\n const options = this.render_options;\n ctx.setStrokeStyle(options.color);\n ctx.setFillStyle(options.color);\n ctx.setLineWidth(options.line_width);\n return this;\n }\n // Set whether the bracket line should be `dashed`. You can also\n // optionally set the `dash` pattern by passing in an array of numbers\n setDashed(dashed, dash) {\n this.render_options.dashed = dashed;\n if (dash)\n this.render_options.dash = dash;\n return this;\n }\n // Set the rendering `context` for the octave bracket\n setLine(line) {\n this.line = line;\n return this;\n }\n // Draw the octave bracket on the rendering context\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let y = 0;\n switch (this.position) {\n case TextBracketPosition.TOP:\n y = this.start.checkStave().getYForTopText(this.line);\n break;\n case TextBracketPosition.BOTTOM:\n y = this.start.checkStave().getYForBottomText(this.line + Tables.TEXT_HEIGHT_OFFSET_HACK);\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} is invalid.`);\n }\n // Get the preliminary start and stop coordintates for the bracket\n const start = { x: this.start.getAbsoluteX(), y };\n const stop = { x: this.stop.getAbsoluteX(), y };\n L('Rendering TextBracket: start:', start, 'stop:', stop, 'y:', y);\n const bracket_height = this.render_options.bracket_height * this.position;\n ctx.save();\n this.applyStyle(ctx);\n // Draw text\n ctx.fillText(this.text, start.x, start.y);\n // Get the width and height for the octave number\n const main_measure = ctx.measureText(this.text);\n const main_width = main_measure.width;\n const main_height = main_measure.height;\n // Calculate the y position for the super script\n const super_y = start.y - main_height / 2.5;\n // We called this.resetFont() in the constructor, so we know this.textFont is available.\n // eslint-disable-next-line\n const { family, size, weight, style } = this.textFont;\n // To draw the superscript, we scale the font size by 1/1.4.\n const smallerFontSize = Font.scaleSize(size, 0.714286);\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.superscript, start.x + main_width + 1, super_y);\n // Determine width and height of the superscript\n const super_measure = ctx.measureText(this.superscript);\n const super_width = super_measure.width;\n const super_height = super_measure.height;\n // Setup initial coordinates for the bracket line\n let start_x = start.x;\n let line_y = super_y;\n const end_x = stop.x + this.stop.getGlyph().getWidth();\n // Adjust x and y coordinates based on position\n if (this.position === TextBracketPosition.TOP) {\n start_x += main_width + super_width + 5;\n line_y -= super_height / 2.7;\n }\n else if (this.position === TextBracketPosition.BOTTOM) {\n line_y += super_height / 2.7;\n start_x += main_width + 2;\n if (!this.render_options.underline_superscript) {\n start_x += super_width;\n }\n }\n if (this.render_options.dashed) {\n // Main line\n Renderer.drawDashedLine(ctx, start_x, line_y, end_x, line_y, this.render_options.dash);\n // Ending Bracket\n if (this.render_options.show_bracket) {\n Renderer.drawDashedLine(ctx, end_x, line_y + 1 * this.position, end_x, line_y + bracket_height, this.render_options.dash);\n }\n }\n else {\n ctx.beginPath();\n ctx.moveTo(start_x, line_y);\n // Main line\n ctx.lineTo(end_x, line_y);\n if (this.render_options.show_bracket) {\n // Ending bracket\n ctx.lineTo(end_x, line_y + bracket_height);\n }\n ctx.stroke();\n ctx.closePath();\n }\n ctx.restore();\n }\n}\nTextBracket.DEBUG = false;\nTextBracket.TEXT_FONT = {\n family: Font.SERIF,\n size: 15,\n weight: FontWeight.NORMAL,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextDynamics.DEBUG)\n log('Vex.Flow.TextDynamics', args);\n}\n/**\n * `TextDynamics` renders traditional\n * text dynamics markings, **ie: p, f, sfz, rfz, ppp**\n *\n * You can render any dynamics string that contains a combination of\n * the following letters: P, M, F, Z, R, S\n */\nexport class TextDynamics extends Note {\n /**\n * Create the dynamics marking.\n *\n * A `TextDynamics` object inherits from `Note` so that it can be formatted\n * within a `Voice`.\n *\n * @param noteStruct an object that contains a `duration` property and a\n * `sequence` of letters that represents the letters to render.\n */\n constructor(noteStruct) {\n super(noteStruct);\n this.sequence = (noteStruct.text || '').toLowerCase();\n this.line = noteStruct.line || 0;\n this.glyphs = [];\n this.render_options = Object.assign(Object.assign({}, this.render_options), { glyph_font_size: 40 });\n L('New Dynamics Text: ', this.sequence);\n }\n static get CATEGORY() {\n return Category.TextDynamics;\n }\n /** The glyph data for each dynamics letter. */\n static get GLYPHS() {\n return {\n f: {\n code: 'dynamicForte',\n width: 12,\n },\n p: {\n code: 'dynamicPiano',\n width: 14,\n },\n m: {\n code: 'dynamicMezzo',\n width: 17,\n },\n s: {\n code: 'dynamicSforzando',\n width: 10,\n },\n z: {\n code: 'dynamicZ',\n width: 12,\n },\n r: {\n code: 'dynamicRinforzando',\n width: 12,\n },\n };\n }\n /** Set the Stave line on which the note should be placed. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Preformat the dynamics text. */\n preFormat() {\n let total_width = 0;\n // length of this.glyphs must be <=\n // length of this.sequence, so if we're formatted before\n // create new glyphs.\n this.glyphs = [];\n // Iterate through each letter\n this.sequence.split('').forEach((letter) => {\n // Get the glyph data for the letter\n const glyph_data = TextDynamics.GLYPHS[letter];\n if (!glyph_data)\n throw new RuntimeError('Invalid dynamics character: ' + letter);\n const size = defined(this.render_options.glyph_font_size);\n const glyph = new Glyph(glyph_data.code, size, { category: 'textNote' });\n // Add the glyph\n this.glyphs.push(glyph);\n total_width += glyph_data.width;\n });\n // Store the width of the text\n this.setWidth(total_width);\n this.preFormatted = true;\n return this;\n }\n /** Draw the dynamics text on the rendering context. */\n draw() {\n this.setRendered();\n const x = this.getAbsoluteX();\n const y = this.checkStave().getYForLine(this.line + -3);\n L('Rendering Dynamics: ', this.sequence);\n let letter_x = x;\n this.glyphs.forEach((glyph, index) => {\n const current_letter = this.sequence[index];\n glyph.render(this.checkContext(), letter_x, y);\n letter_x += TextDynamics.GLYPHS[current_letter].width;\n });\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.TextDynamics.DEBUG` to `true`. */\nTextDynamics.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\nimport { Note } from './note';\nimport { TimeSignature } from './timesignature';\nimport { Category } from './typeguard';\nexport class TimeSigNote extends Note {\n constructor(timeSpec, customPadding) {\n super({ duration: 'b' });\n const timeSignature = new TimeSignature(timeSpec, customPadding);\n this.timeSigInfo = timeSignature.getInfo();\n this.setWidth(this.timeSigInfo.glyph.getMetrics().width);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.TimeSigNote;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = this.checkContext();\n this.setRendered();\n if (!this.timeSigInfo.glyph.getContext()) {\n this.timeSigInfo.glyph.setContext(ctx);\n }\n this.timeSigInfo.glyph.setStave(stave);\n this.timeSigInfo.glyph.setYShift(stave.getYForLine(2) - stave.getYForGlyphs());\n this.timeSigInfo.glyph.renderToStave(this.getAbsoluteX());\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Balazs Forian-Szabo\n// MIT License\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { log } from './util';\nimport { Vibrato } from './vibrato';\n// eslint-disable-next-line\nfunction L(...args) {\n if (VibratoBracket.DEBUG)\n log('Vex.Flow.VibratoBracket', args);\n}\n/** `VibratoBracket` renders vibrato effect between two notes. */\nexport class VibratoBracket extends Element {\n /**\n * Either the stop or start note must be set, or both of them.\n * An undefined value for the start or stop note indicates that the vibrato\n * is drawn from the beginning or until the end of the stave accordingly.\n */\n constructor(bracket_data) {\n super();\n if (bracket_data.start)\n this.start = bracket_data.start;\n if (bracket_data.stop)\n this.stop = bracket_data.stop;\n this.line = 1;\n this.render_options = {\n harsh: false,\n wave_height: 6,\n wave_width: 4,\n wave_girth: 2,\n vibrato_width: 0,\n };\n }\n static get CATEGORY() {\n return Category.VibratoBracket;\n }\n /** Set line position of the vibrato bracket. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Set harsh vibrato bracket. */\n setHarsh(harsh) {\n this.render_options.harsh = harsh;\n return this;\n }\n /** Draw the vibrato bracket on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const y = (this.start && this.start.checkStave().getYForTopText(this.line)) ||\n (this.stop && this.stop.checkStave().getYForTopText(this.line)) ||\n 0;\n // If start note is not set then vibrato will be drawn\n // from the beginning of the stave\n const start_x = (this.start && this.start.getAbsoluteX()) || (this.stop && this.stop.checkStave().getTieStartX()) || 0;\n // If stop note is not set then vibrato will be drawn\n // until the end of the stave\n const stop_x = (this.stop && this.stop.getAbsoluteX() - this.stop.getWidth() - 5) ||\n (this.start && this.start.checkStave().getTieEndX() - 10) ||\n 0;\n this.render_options.vibrato_width = stop_x - start_x;\n L('Rendering VibratoBracket: start_x:', start_x, 'stop_x:', stop_x, 'y:', y);\n Vibrato.renderVibrato(ctx, start_x, y, this.render_options);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.VibratoBracket.DEBUG` to `true`. */\nVibratoBracket.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n// MIT License\nimport { Accidental } from './accidental';\nimport { Annotation, AnnotationHorizontalJustify, AnnotationVerticalJustify } from './annotation';\nimport { Articulation } from './articulation';\nimport { BarNote } from './barnote';\nimport { Beam } from './beam';\nimport { ChordSymbol } from './chordsymbol';\nimport { ClefNote } from './clefnote';\nimport { Curve } from './curve';\nimport { EasyScore } from './easyscore';\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { FretHandFinger } from './frethandfinger';\nimport { GhostNote } from './ghostnote';\nimport { GlyphNote } from './glyphnote';\nimport { GraceNote } from './gracenote';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { KeySigNote } from './keysignote';\nimport { ModifierContext } from './modifiercontext';\nimport { MultiMeasureRest } from './multimeasurerest';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { PedalMarking } from './pedalmarking';\nimport { Renderer } from './renderer';\nimport { RepeatNote } from './repeatnote';\nimport { Stave } from './stave';\nimport { StaveConnector } from './staveconnector';\nimport { StaveLine } from './staveline';\nimport { StaveNote } from './stavenote';\nimport { StaveTie } from './stavetie';\nimport { StringNumber } from './stringnumber';\nimport { System } from './system';\nimport { TabNote } from './tabnote';\nimport { TabStave } from './tabstave';\nimport { TextBracket } from './textbracket';\nimport { TextDynamics } from './textdynamics';\nimport { TextNote } from './textnote';\nimport { TickContext } from './tickcontext';\nimport { TimeSigNote } from './timesignote';\nimport { Tuplet } from './tuplet';\nimport { defined, log, RuntimeError } from './util';\nimport { VibratoBracket } from './vibratobracket';\nimport { Voice } from './voice';\nimport { isHTMLCanvas } from './web';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Factory.DEBUG)\n log('Vex.Flow.Factory', args);\n}\n/**\n * Factory implements a high level API around VexFlow.\n */\nexport class Factory {\n /**\n * Example:\n *\n * Create an SVG renderer and attach it to the DIV element named \"boo\" to render using 1200 and 600\n *\n * `const vf: Factory = new Vex.Flow.Factory({renderer: { elementId: 'boo', width: 1200, height: 600 }});`\n */\n constructor(options = {}) {\n L('New factory: ', options);\n this.options = {\n stave: {\n space: 10,\n },\n renderer: {\n elementId: '',\n width: 500,\n height: 200,\n background: '#FFF',\n },\n font: Factory.TEXT_FONT,\n };\n this.setOptions(options);\n }\n /**\n * Static simplified function to access constructor without providing FactoryOptions\n *\n * Example:\n *\n * Create an SVG renderer and attach it to the DIV element named \"boo\" to render using 1200 and 600\n *\n * `const vf: Factory = Vex.Flow.Factory.newFromElementId('boo', 1200, 600 );`\n */\n static newFromElementId(elementId, width = 500, height = 200) {\n return new Factory({ renderer: { elementId, width, height } });\n }\n reset() {\n this.renderQ = [];\n this.systems = [];\n this.staves = [];\n this.voices = [];\n this.stave = undefined; // current stave\n }\n setOptions(options) {\n this.options = Object.assign(Object.assign({}, this.options), options);\n this.initRenderer();\n this.reset();\n }\n initRenderer() {\n const { elementId, width, height, background } = this.options.renderer;\n if (elementId == null) {\n return;\n }\n if (elementId == '') {\n L(this);\n throw new RuntimeError('renderer.elementId not set in FactoryOptions');\n }\n let backend = this.options.renderer.backend;\n if (backend === undefined) {\n const elem = document.getElementById(elementId);\n // We use a custom type check here, because node-canvas mimics canvas,\n // but is not an instance of window.HTMLCanvasElement.\n // In fact, `window` might be undefined here.\n // See: https://www.npmjs.com/package/canvas\n if (isHTMLCanvas(elem)) {\n backend = Renderer.Backends.CANVAS;\n }\n else {\n backend = Renderer.Backends.SVG;\n }\n }\n this.context = Renderer.buildContext(elementId, backend, width, height, background);\n }\n getContext() {\n return this.context;\n }\n setContext(context) {\n this.context = context;\n return this;\n }\n getStave() {\n return this.stave;\n }\n getVoices() {\n return this.voices;\n }\n /** Return pixels from current stave spacing. */\n Stave(params) {\n const staveSpace = this.options.stave.space;\n const p = Object.assign({ x: 0, y: 0, width: this.options.renderer.width - staveSpace * 1.0, options: { spacing_between_lines_px: staveSpace * 1.0 } }, params);\n const stave = new Stave(p.x, p.y, p.width, p.options);\n this.staves.push(stave);\n stave.setContext(this.context);\n this.stave = stave;\n return stave;\n }\n TabStave(params) {\n const staveSpace = this.options.stave.space;\n const p = Object.assign({ x: 0, y: 0, width: this.options.renderer.width - staveSpace * 1.0, options: { spacing_between_lines_px: staveSpace * 1.3 } }, params);\n const stave = new TabStave(p.x, p.y, p.width, p.options);\n this.staves.push(stave);\n stave.setContext(this.context);\n this.stave = stave;\n return stave;\n }\n StaveNote(noteStruct) {\n const note = new StaveNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GlyphNote(glyph, noteStruct, options) {\n const note = new GlyphNote(glyph, noteStruct, options);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n RepeatNote(type, noteStruct, options) {\n const note = new RepeatNote(type, noteStruct, options);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GhostNote(noteStruct) {\n const ghostNote = new GhostNote(noteStruct);\n if (this.stave)\n ghostNote.setStave(this.stave);\n ghostNote.setContext(this.context);\n this.renderQ.push(ghostNote);\n return ghostNote;\n }\n TextNote(noteStruct) {\n const textNote = new TextNote(noteStruct);\n if (this.stave)\n textNote.setStave(this.stave);\n textNote.setContext(this.context);\n this.renderQ.push(textNote);\n return textNote;\n }\n BarNote(params = {}) {\n const barNote = new BarNote(params.type);\n if (this.stave)\n barNote.setStave(this.stave);\n barNote.setContext(this.context);\n this.renderQ.push(barNote);\n return barNote;\n }\n ClefNote(params) {\n const p = Object.assign({ type: 'treble', options: {\n size: 'default',\n annotation: undefined,\n } }, params);\n const clefNote = new ClefNote(p.type, p.options.size, p.options.annotation);\n if (this.stave)\n clefNote.setStave(this.stave);\n clefNote.setContext(this.context);\n this.renderQ.push(clefNote);\n return clefNote;\n }\n TimeSigNote(params) {\n const p = Object.assign({ time: '4/4' }, params);\n const timeSigNote = new TimeSigNote(p.time);\n if (this.stave)\n timeSigNote.setStave(this.stave);\n timeSigNote.setContext(this.context);\n this.renderQ.push(timeSigNote);\n return timeSigNote;\n }\n KeySigNote(params) {\n const keySigNote = new KeySigNote(params.key, params.cancelKey, params.alterKey);\n if (this.stave)\n keySigNote.setStave(this.stave);\n keySigNote.setContext(this.context);\n this.renderQ.push(keySigNote);\n return keySigNote;\n }\n TabNote(noteStruct) {\n const note = new TabNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GraceNote(noteStruct) {\n const note = new GraceNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n return note;\n }\n GraceNoteGroup(params) {\n const group = new GraceNoteGroup(params.notes, params.slur);\n group.setContext(this.context);\n return group;\n }\n Accidental(params) {\n const accid = new Accidental(params.type);\n accid.setContext(this.context);\n return accid;\n }\n Annotation(params) {\n const p = Object.assign({ text: 'p', hJustify: AnnotationHorizontalJustify.CENTER, vJustify: AnnotationVerticalJustify.BOTTOM }, params);\n const annotation = new Annotation(p.text);\n annotation.setJustification(p.hJustify);\n annotation.setVerticalJustification(p.vJustify);\n annotation.setFont(p.font);\n annotation.setContext(this.context);\n return annotation;\n }\n ChordSymbol(params) {\n const p = Object.assign({ vJustify: 'top', hJustify: 'center', kerning: true, reportWidth: true }, params);\n const chordSymbol = new ChordSymbol();\n chordSymbol.setHorizontal(p.hJustify);\n chordSymbol.setVertical(p.vJustify);\n chordSymbol.setEnableKerning(p.kerning);\n chordSymbol.setReportWidth(p.reportWidth);\n // There is a default font based on the engraving font. Only set then\n // font if it is specific, else use the default\n if (typeof p.fontFamily === 'string' && typeof p.fontSize === 'number') {\n if (typeof p.fontWeight === 'string')\n chordSymbol.setFont(p.fontFamily, p.fontSize, p.fontWeight);\n else\n chordSymbol.setFont(p.fontFamily, p.fontSize, '');\n }\n else if (typeof p.fontSize === 'number') {\n chordSymbol.setFontSize(p.fontSize);\n }\n chordSymbol.setContext(this.context);\n return chordSymbol;\n }\n Articulation(params) {\n const p = Object.assign({ type: 'a.', position: 'above' }, params);\n const articulation = new Articulation(p.type);\n articulation.setPosition(p.position);\n articulation.setContext(this.context);\n return articulation;\n }\n Ornament(type, params) {\n const options = Object.assign({ type, position: 0, accidental: '' }, params);\n const ornament = new Ornament(type);\n ornament.setPosition(options.position);\n if (options.upperAccidental) {\n ornament.setUpperAccidental(options.upperAccidental);\n }\n if (options.lowerAccidental) {\n ornament.setLowerAccidental(options.lowerAccidental);\n }\n if (typeof options.delayed !== 'undefined') {\n ornament.setDelayed(options.delayed);\n }\n ornament.setContext(this.context);\n return ornament;\n }\n TextDynamics(params) {\n const p = Object.assign({ text: 'p', duration: 'q', dots: 0, line: 0 }, params);\n const text = new TextDynamics({\n text: p.text,\n line: p.line,\n duration: p.duration,\n dots: p.dots,\n });\n if (this.stave)\n text.setStave(this.stave);\n text.setContext(this.context);\n this.renderQ.push(text);\n return text;\n }\n Fingering(params) {\n const p = Object.assign({ number: '0', position: 'left' }, params);\n const fingering = new FretHandFinger(p.number);\n fingering.setPosition(p.position);\n fingering.setContext(this.context);\n return fingering;\n }\n StringNumber(params, drawCircle = true) {\n const stringNumber = new StringNumber(params.number);\n stringNumber.setPosition(params.position);\n stringNumber.setContext(this.context);\n stringNumber.setDrawCircle(drawCircle);\n return stringNumber;\n }\n TickContext() {\n return new TickContext();\n }\n ModifierContext() {\n return new ModifierContext();\n }\n MultiMeasureRest(params) {\n const numMeasures = defined(params.number_of_measures, 'NoNumberOfMeasures');\n const multiMeasureRest = new MultiMeasureRest(numMeasures, params);\n multiMeasureRest.setContext(this.context);\n this.renderQ.push(multiMeasureRest);\n return multiMeasureRest;\n }\n Voice(params) {\n const p = Object.assign({ time: '4/4' }, params);\n const voice = new Voice(p.time);\n this.voices.push(voice);\n return voice;\n }\n StaveConnector(params) {\n const connector = new StaveConnector(params.top_stave, params.bottom_stave);\n connector.setType(params.type).setContext(this.context);\n this.renderQ.push(connector);\n return connector;\n }\n Formatter(options) {\n return new Formatter(options);\n }\n Tuplet(params) {\n const p = Object.assign({ notes: [], options: {} }, params);\n const tuplet = new Tuplet(p.notes, p.options).setContext(this.context);\n this.renderQ.push(tuplet);\n return tuplet;\n }\n Beam(params) {\n var _a, _b, _c, _d, _e;\n const beam = new Beam(params.notes, (_a = params.options) === null || _a === void 0 ? void 0 : _a.autoStem).setContext(this.context);\n beam.breakSecondaryAt((_c = (_b = params.options) === null || _b === void 0 ? void 0 : _b.secondaryBeamBreaks) !== null && _c !== void 0 ? _c : []);\n if ((_d = params.options) === null || _d === void 0 ? void 0 : _d.partialBeamDirections) {\n Object.entries((_e = params.options) === null || _e === void 0 ? void 0 : _e.partialBeamDirections).forEach(([noteIndex, direction]) => {\n beam.setPartialBeamSideAt(Number(noteIndex), direction);\n });\n }\n this.renderQ.push(beam);\n return beam;\n }\n Curve(params) {\n const curve = new Curve(params.from, params.to, params.options).setContext(this.context);\n this.renderQ.push(curve);\n return curve;\n }\n StaveTie(params) {\n var _a;\n const tie = new StaveTie({\n first_note: params.from,\n last_note: params.to,\n first_indices: params.first_indices,\n last_indices: params.last_indices,\n }, params.text);\n if ((_a = params.options) === null || _a === void 0 ? void 0 : _a.direction)\n tie.setDirection(params.options.direction);\n tie.setContext(this.context);\n this.renderQ.push(tie);\n return tie;\n }\n StaveLine(params) {\n var _a, _b;\n const line = new StaveLine({\n first_note: params.from,\n last_note: params.to,\n first_indices: params.first_indices,\n last_indices: params.last_indices,\n });\n if ((_a = params.options) === null || _a === void 0 ? void 0 : _a.text)\n line.setText(params.options.text);\n if ((_b = params.options) === null || _b === void 0 ? void 0 : _b.font)\n line.setFont(params.options.font);\n line.setContext(this.context);\n this.renderQ.push(line);\n return line;\n }\n VibratoBracket(params) {\n const vibratoBracket = new VibratoBracket({\n start: params.from,\n stop: params.to,\n });\n if (params.options.line)\n vibratoBracket.setLine(params.options.line);\n if (params.options.harsh)\n vibratoBracket.setHarsh(params.options.harsh);\n vibratoBracket.setContext(this.context);\n this.renderQ.push(vibratoBracket);\n return vibratoBracket;\n }\n TextBracket(params) {\n const textBracket = new TextBracket({\n start: params.from,\n stop: params.to,\n text: params.text,\n superscript: params.options.superscript,\n position: params.options.position,\n });\n if (params.options.line)\n textBracket.setLine(params.options.line);\n if (params.options.font)\n textBracket.setFont(params.options.font);\n textBracket.setContext(this.context);\n this.renderQ.push(textBracket);\n return textBracket;\n }\n System(params = {}) {\n params.factory = this;\n const system = new System(params).setContext(this.context);\n this.systems.push(system);\n return system;\n }\n /**\n * Creates EasyScore. Normally the first step after constructing a Factory. For example:\n * ```\n * const vf: Factory = new Vex.Flow.Factory({renderer: { elementId: 'boo', width: 1200, height: 600 }});\n * const score: EasyScore = vf.EasyScore();\n * ```\n * @param options.factory optional instance of Factory\n * @param options.builder instance of Builder\n * @param options.commitHooks function to call after a note element is created\n * @param options.throwOnError throw error in case of parsing error\n */\n EasyScore(options = {}) {\n options.factory = this;\n return new EasyScore(options);\n }\n PedalMarking(params) {\n const p = Object.assign({ notes: [], options: {\n style: 'mixed',\n } }, params);\n const pedal = new PedalMarking(p.notes);\n pedal.setType(PedalMarking.typeString[p.options.style]);\n pedal.setContext(this.context);\n this.renderQ.push(pedal);\n return pedal;\n }\n NoteSubGroup(params) {\n const p = Object.assign({ notes: [] }, params);\n const group = new NoteSubGroup(p.notes);\n group.setContext(this.context);\n return group;\n }\n /** Render the score. */\n draw() {\n const ctx = this.context;\n this.systems.forEach((s) => s.setContext(ctx).format());\n this.staves.forEach((s) => s.setContext(ctx).draw());\n this.voices.forEach((v) => v.setContext(ctx).draw());\n this.renderQ.forEach((e) => {\n if (!e.isRendered())\n e.setContext(ctx).draw();\n });\n this.systems.forEach((s) => s.setContext(ctx).draw());\n this.reset();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Factory.DEBUG` to `true`. */\nFactory.DEBUG = false;\n/** Default text font. */\nFactory.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Balazs Forian-Szabo\n//\n// ## Description\n//\n// A basic implementation of grace notes\n// to be rendered on a tab stave.\n//\n// See `tests/gracetabnote_tests.ts` for usage examples.\nimport { Font } from './font';\nimport { TabNote } from './tabnote';\nimport { Category } from './typeguard';\nexport class GraceTabNote extends TabNote {\n static get CATEGORY() {\n return Category.GraceTabNote;\n }\n constructor(noteStruct) {\n super(noteStruct, false);\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // vertical shift from stave line\n y_shift: 0.3, \n // grace glyph scale\n scale: 0.6, \n // grace tablature font\n font: `7.5pt ${Font.SANS_SERIF}` });\n this.updateWidth();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This class implements diatonic key management.\nimport { Music } from './music';\nimport { RuntimeError } from './util';\nexport class KeyManager {\n constructor(key) {\n this.music = new Music();\n this.setKey(key);\n }\n setKey(key) {\n this.key = key;\n this.reset();\n return this;\n }\n getKey() {\n return this.key;\n }\n reset() {\n this.keyParts = this.music.getKeyParts(this.key);\n this.keyString = this.keyParts.root;\n if (this.keyParts.accidental)\n this.keyString += this.keyParts.accidental;\n const is_supported_type = Music.scaleTypes[this.keyParts.type];\n if (!is_supported_type) {\n throw new RuntimeError('BadArguments', `Unsupported key type: ${this.key}`);\n }\n this.scale = this.music.getScaleTones(this.music.getNoteValue(this.keyString), Music.scaleTypes[this.keyParts.type]);\n this.scaleMap = {};\n this.scaleMapByValue = {};\n this.originalScaleMapByValue = {};\n const noteLocation = Music.root_indices[this.keyParts.root];\n for (let i = 0; i < Music.roots.length; ++i) {\n const index = (noteLocation + i) % Music.roots.length;\n const rootName = Music.roots[index];\n const noteName = this.music.getRelativeNoteName(rootName, this.scale[i]);\n this.scaleMap[rootName] = noteName;\n this.scaleMapByValue[this.scale[i]] = noteName;\n this.originalScaleMapByValue[this.scale[i]] = noteName;\n }\n return this;\n }\n getAccidental(key) {\n const root = this.music.getKeyParts(key).root;\n const parts = this.music.getNoteParts(this.scaleMap[root]);\n return {\n note: this.scaleMap[root],\n accidental: parts.accidental,\n };\n }\n selectNote(note) {\n note = note.toLowerCase();\n const parts = this.music.getNoteParts(note);\n // First look for matching note in our altered scale\n const scaleNote = this.scaleMap[parts.root];\n const modparts = this.music.getNoteParts(scaleNote);\n if (scaleNote === note) {\n return {\n note: scaleNote,\n accidental: parts.accidental,\n change: false,\n };\n }\n // Then search for a note of equivalent value in our altered scale\n const valueNote = this.scaleMapByValue[this.music.getNoteValue(note)];\n if (valueNote != null) {\n return {\n note: valueNote,\n accidental: this.music.getNoteParts(valueNote).accidental,\n change: false,\n };\n }\n // Then search for a note of equivalent value in the original scale\n const originalValueNote = this.originalScaleMapByValue[this.music.getNoteValue(note)];\n if (originalValueNote != null) {\n this.scaleMap[modparts.root] = originalValueNote;\n delete this.scaleMapByValue[this.music.getNoteValue(scaleNote)];\n this.scaleMapByValue[this.music.getNoteValue(note)] = originalValueNote;\n return {\n note: originalValueNote,\n accidental: this.music.getNoteParts(originalValueNote).accidental,\n change: true,\n };\n }\n // Then try to unmodify a currently modified note.\n if (modparts.root === note) {\n delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])];\n this.scaleMapByValue[this.music.getNoteValue(modparts.root)] = modparts.root;\n this.scaleMap[modparts.root] = modparts.root;\n return {\n note: modparts.root,\n accidental: undefined,\n change: true,\n };\n }\n // Last resort -- shitshoot\n delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])];\n this.scaleMapByValue[this.music.getNoteValue(note)] = note;\n delete this.scaleMap[modparts.root];\n this.scaleMap[modparts.root] = note;\n return {\n note,\n accidental: parts.accidental,\n change: true,\n };\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Author: Raffaele Viglianti, 2012 http://itisnotsound.wordpress.com/\n//\n// This class implements hairpins between notes.\n// Hairpins can be either crescendo or decrescendo.\nimport { Element } from './element';\nimport { Modifier } from './modifier';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveHairpin extends Element {\n /**\n * Create a new hairpin from the specified notes.\n *\n * @param {!Object} notes The notes to tie up.\n * Notes is a struct that has:\n *\n * {\n * first_note: Note,\n * last_note: Note,\n * }\n * @param {!Object} type The type of hairpin\n */\n constructor(notes, type) {\n super();\n this.setNotes(notes);\n this.hairpin = type;\n this.position = Modifier.Position.BELOW;\n this.render_options = {\n height: 10,\n y_shift: 0,\n left_shift_px: 0,\n right_shift_px: 0,\n right_shift_ticks: 0,\n left_shift_ticks: 0,\n };\n }\n static get CATEGORY() {\n return Category.StaveHairpin;\n }\n /* Helper function to convert ticks into pixels.\n * Requires a Formatter with voices joined and formatted (to\n * get pixels per tick)\n *\n * options is struct that has:\n *\n * {\n * height: px,\n * y_shift: px, // vertical offset\n * left_shift_ticks: 0, // left horizontal offset expressed in ticks\n * right_shift_ticks: 0 // right horizontal offset expressed in ticks\n * }\n *\n **/\n static FormatByTicksAndDraw(ctx, formatter, notes, type, position, options) {\n var _a, _b;\n const ppt = formatter.pixelsPerTick;\n if (ppt == null) {\n throw new RuntimeError('BadArguments', 'A valid Formatter must be provide to draw offsets by ticks.');\n }\n const l_shift_px = ppt * ((_a = options.left_shift_ticks) !== null && _a !== void 0 ? _a : 0);\n const r_shift_px = ppt * ((_b = options.right_shift_ticks) !== null && _b !== void 0 ? _b : 0);\n const hairpin_options = {\n height: options.height,\n y_shift: options.y_shift,\n left_shift_px: l_shift_px,\n right_shift_px: r_shift_px,\n right_shift_ticks: 0,\n left_shift_ticks: 0,\n };\n new StaveHairpin({\n first_note: notes.first_note,\n last_note: notes.last_note,\n }, type)\n .setContext(ctx)\n .setRenderOptions(hairpin_options)\n .setPosition(position)\n .draw();\n }\n setPosition(position) {\n if (position === Modifier.Position.ABOVE || position === Modifier.Position.BELOW) {\n this.position = position;\n }\n return this;\n }\n setRenderOptions(options) {\n if (options.height != null &&\n options.y_shift != null &&\n options.left_shift_px != null &&\n options.right_shift_px != null) {\n this.render_options = options;\n }\n return this;\n }\n /**\n * Set the notes to attach this hairpin to.\n *\n * @param {!Object} notes The start and end notes.\n */\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Hairpin needs to have either first_note or last_note set.');\n }\n this.notes = notes;\n this.first_note = notes.first_note;\n this.last_note = notes.last_note;\n return this;\n }\n renderHairpin(params) {\n const ctx = this.checkContext();\n let dis = this.render_options.y_shift + 20;\n let y_shift = params.first_y;\n if (this.position === Modifier.Position.ABOVE) {\n dis = -dis + 30;\n y_shift = params.first_y - params.staff_height;\n }\n const l_shift = this.render_options.left_shift_px;\n const r_shift = this.render_options.right_shift_px;\n ctx.beginPath();\n switch (this.hairpin) {\n case StaveHairpin.type.CRESC:\n ctx.moveTo(params.last_x + r_shift, y_shift + dis);\n ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height / 2 + dis);\n ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height + dis);\n break;\n case StaveHairpin.type.DECRESC:\n ctx.moveTo(params.first_x + l_shift, y_shift + dis);\n ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height / 2 + dis);\n ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height + dis);\n break;\n default:\n // Default is NONE, so nothing to draw\n break;\n }\n ctx.stroke();\n ctx.closePath();\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const firstNote = this.first_note;\n const lastNote = this.last_note;\n if (!firstNote || !lastNote)\n throw new RuntimeError('NoNote', 'Notes required to draw');\n const start = firstNote.getModifierStartXY(this.position, 0);\n const end = lastNote.getModifierStartXY(this.position, 0);\n this.renderHairpin({\n first_x: start.x,\n last_x: end.x,\n first_y: firstNote.checkStave().getY() + firstNote.checkStave().getHeight(),\n last_y: lastNote.checkStave().getY() + lastNote.checkStave().getHeight(),\n staff_height: firstNote.checkStave().getHeight(),\n });\n }\n}\nStaveHairpin.type = {\n CRESC: 1,\n DECRESC: 2,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { TabTie } from './tabtie';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class TabSlide extends TabTie {\n /**\n * @param notes is a struct of the form:\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n * @param notes.first_note the starting note of the slide\n * @param notes.last_note the ending note of the slide\n * @param notes.first_indices specifies which string + fret positions of the TabNote are used in this slide. zero indexed.\n * @param notes.last_indices currently unused. we assume it's the same as first_indices.\n *\n * @param direction TabSlide.SLIDE_UP or TabSlide.SLIDE_DOWN\n */\n constructor(notes, direction) {\n super(notes, 'sl.');\n // Determine the direction automatically if it is not provided.\n if (!direction) {\n let first_fret = notes.first_note.getPositions()[0].fret;\n if (typeof first_fret === 'string') {\n first_fret = parseInt(first_fret, 10);\n }\n let last_fret = notes.last_note.getPositions()[0].fret;\n if (typeof last_fret === 'string') {\n last_fret = parseInt(last_fret, 10);\n }\n // If either of the frets are 'X', parseInt() above will return NaN.\n // Choose TabSlide.SLIDE_UP by default.\n if (isNaN(first_fret) || isNaN(last_fret)) {\n direction = TabSlide.SLIDE_UP;\n }\n else {\n direction = first_fret > last_fret ? TabSlide.SLIDE_DOWN : TabSlide.SLIDE_UP;\n }\n }\n this.direction = direction;\n this.render_options.cp1 = 11;\n this.render_options.cp2 = 14;\n this.render_options.y_shift = 0.5;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.TabSlide;\n }\n static get SLIDE_UP() {\n return 1;\n }\n static get SLIDE_DOWN() {\n return -1;\n }\n static createSlideUp(notes) {\n return new TabSlide(notes, TabSlide.SLIDE_UP);\n }\n static createSlideDown(notes) {\n return new TabSlide(notes, TabSlide.SLIDE_DOWN);\n }\n renderTie(params) {\n if (params.first_ys.length === 0 || params.last_ys.length === 0) {\n throw new RuntimeError('BadArguments', 'No Y-values to render');\n }\n const ctx = this.checkContext();\n const first_x_px = params.first_x_px;\n const first_ys = params.first_ys;\n const last_x_px = params.last_x_px;\n const direction = params.direction;\n if (direction !== TabSlide.SLIDE_UP && direction !== TabSlide.SLIDE_DOWN) {\n throw new RuntimeError('BadSlide', 'Invalid slide direction');\n }\n // eslint-disable-next-line\n const first_indices = this.notes.first_indices;\n for (let i = 0; i < first_indices.length; ++i) {\n const slide_y = first_ys[first_indices[i]] + this.render_options.y_shift;\n if (isNaN(slide_y)) {\n throw new RuntimeError('BadArguments', 'Bad indices for slide rendering.');\n }\n ctx.beginPath();\n ctx.moveTo(first_x_px, slide_y + 3 * direction);\n ctx.lineTo(last_x_px, slide_y - 3 * direction);\n ctx.closePath();\n ctx.stroke();\n }\n this.setRendered();\n }\n}\nTabSlide.TEXT_FONT = {\n family: Font.SERIF,\n size: 10,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Mike Corrigan \n// MIT License\nimport { Glyph } from './glyph';\nimport { GraceNote } from './gracenote';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isGraceNote } from './typeguard';\n/** Tremolo implements tremolo notation. */\nexport class Tremolo extends Modifier {\n /**\n * @param num number of bars\n */\n constructor(num) {\n super();\n this.num = num;\n this.position = Modifier.Position.CENTER;\n this.code = 'tremolo1';\n // big strokes scales initialised to 1 (no scale)\n this.y_spacing_scale = 1;\n this.extra_stroke_scale = 1;\n }\n static get CATEGORY() {\n return Category.Tremolo;\n }\n /** Draw the tremolo on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stemDirection = note.getStemDirection();\n const start = note.getModifierStartXY(this.position, this.index);\n let x = start.x;\n const gn = isGraceNote(note);\n const scale = gn ? GraceNote.SCALE : 1;\n const category = `tremolo.${gn ? 'grace' : 'default'}`;\n const musicFont = Tables.currentMusicFont();\n let y_spacing = musicFont.lookupMetric(`${category}.spacing`) * stemDirection;\n // add y_spacing_scale for big strokes (#1258)\n y_spacing *= this.y_spacing_scale;\n const height = this.num * y_spacing;\n let y = note.getStemExtents().baseY - height;\n if (stemDirection < 0) {\n y += musicFont.lookupMetric(`${category}.offsetYStemDown`) * scale;\n }\n else {\n y += musicFont.lookupMetric(`${category}.offsetYStemUp`) * scale;\n }\n const fontScale = musicFont.lookupMetric(`${category}.point`);\n x += musicFont.lookupMetric(`${category}.offsetXStem${stemDirection === Stem.UP ? 'Up' : 'Down'}`);\n for (let i = 0; i < this.num; ++i) {\n Glyph.renderGlyph(ctx, x, y, fontScale, this.code, { category, scale: this.extra_stroke_scale });\n y += y_spacing;\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Tables } from './tables';\nimport { RuntimeError } from './util';\n/** `Tuning` implements varies types of tunings for tablature. */\nexport class Tuning {\n /**\n * Constructor.\n * @param tuningString tuning name (eg. 'dagdad') or comma separated note strings\n */\n constructor(tuningString = 'E/5,B/4,G/4,D/4,A/3,E/3,B/2,E/2') {\n this.tuningValues = [];\n // Default to standard tuning.\n this.setTuning(tuningString);\n }\n static get names() {\n return {\n standard: 'E/5,B/4,G/4,D/4,A/3,E/3',\n dagdad: 'D/5,A/4,G/4,D/4,A/3,D/3',\n dropd: 'E/5,B/4,G/4,D/4,A/3,D/3',\n eb: 'Eb/5,Bb/4,Gb/4,Db/4,Ab/3,Db/3',\n standardBanjo: 'D/5,B/4,G/4,D/4,G/5',\n };\n }\n /** Return the note number associated to the note string. */\n noteToInteger(noteString) {\n return Tables.keyProperties(noteString).int_value;\n }\n /**\n * Set tuning identified by tuning name (eg. 'dagdad')\n * @param tuningString tuning name (eg. 'dagdad') or comma separated note strings\n */\n setTuning(tuningString) {\n if (Tuning.names[tuningString]) {\n tuningString = Tuning.names[tuningString];\n }\n this.tuningValues = [];\n const keys = tuningString.split(/\\s*,\\s*/);\n if (keys.length === 0) {\n throw new RuntimeError('BadArguments', `Invalid tuning string: ${tuningString}`);\n }\n for (let i = 0; i < keys.length; ++i) {\n this.tuningValues[i] = this.noteToInteger(keys[i]);\n }\n }\n /** Return the note number associated with a tablature string. */\n getValueForString(stringNum) {\n const s = Number(stringNum);\n if (s < 1 || s > this.tuningValues.length) {\n throw new RuntimeError('BadArguments', `String number must be between 1 and ${this.tuningValues.length}:${stringNum}`);\n }\n return this.tuningValues[s - 1];\n }\n /** Return the note number associated with a tablature string and fret. */\n getValueForFret(fretNum, stringNum) {\n const stringValue = this.getValueForString(stringNum);\n const f = Number(fretNum);\n if (f < 0) {\n throw new RuntimeError('BadArguments', `Fret number must be 0 or higher: ${fretNum}`);\n }\n return stringValue + f;\n }\n /** Return the note string associated with tablature string and fret. */\n getNoteForFret(fretNum, stringNum) {\n const noteValue = this.getValueForFret(fretNum, stringNum);\n const octave = Math.floor(noteValue / 12);\n const value = noteValue % 12;\n return `${Tables.integerToNote(value)}/${octave}`;\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Accidental } from './accidental';\nimport { Annotation, AnnotationHorizontalJustify, AnnotationVerticalJustify } from './annotation';\nimport { Articulation } from './articulation';\nimport { BarNote } from './barnote';\nimport { Beam } from './beam';\nimport { Bend } from './bend';\nimport { BoundingBox } from './boundingbox';\nimport { BoundingBoxComputation } from './boundingboxcomputation';\nimport { CanvasContext } from './canvascontext';\nimport { ChordSymbol, ChordSymbolHorizontalJustify, ChordSymbolVerticalJustify, SymbolModifiers, SymbolTypes, } from './chordsymbol';\nimport { Clef } from './clef';\nimport { ClefNote } from './clefnote';\nimport { Crescendo } from './crescendo';\nimport { Curve, CurvePosition } from './curve';\nimport { Dot } from './dot';\nimport { EasyScore } from './easyscore';\nimport { Element } from './element';\nimport { Factory } from './factory';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Formatter } from './formatter';\nimport { Fraction } from './fraction';\nimport { FretHandFinger } from './frethandfinger';\nimport { GhostNote } from './ghostnote';\nimport { Glyph } from './glyph';\nimport { GlyphNote } from './glyphnote';\nimport { GraceNote } from './gracenote';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { GraceTabNote } from './gracetabnote';\nimport { KeyManager } from './keymanager';\nimport { KeySignature } from './keysignature';\nimport { KeySigNote } from './keysignote';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { ModifierContext } from './modifiercontext';\nimport { MultiMeasureRest } from './multimeasurerest';\nimport { Music } from './music';\nimport { Note } from './note';\nimport { NoteHead } from './notehead';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { Parenthesis } from './parenthesis';\nimport { Parser } from './parser';\nimport { PedalMarking } from './pedalmarking';\nimport { Registry } from './registry';\nimport { RenderContext } from './rendercontext';\nimport { Renderer, RendererBackends, RendererLineEndType } from './renderer';\nimport { RepeatNote } from './repeatnote';\nimport { Stave } from './stave';\nimport { Barline, BarlineType } from './stavebarline';\nimport { StaveConnector } from './staveconnector';\nimport { StaveHairpin } from './stavehairpin';\nimport { StaveLine } from './staveline';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { StaveNote } from './stavenote';\nimport { Repetition } from './staverepetition';\nimport { StaveTempo } from './stavetempo';\nimport { StaveText } from './stavetext';\nimport { StaveTie } from './stavetie';\nimport { Volta, VoltaType } from './stavevolta';\nimport { Stem } from './stem';\nimport { StringNumber } from './stringnumber';\nimport { Stroke } from './strokes';\nimport { SVGContext } from './svgcontext';\nimport { System } from './system';\nimport { Tables } from './tables';\nimport { TabNote } from './tabnote';\nimport { TabSlide } from './tabslide';\nimport { TabStave } from './tabstave';\nimport { TabTie } from './tabtie';\nimport { TextBracket, TextBracketPosition } from './textbracket';\nimport { TextDynamics } from './textdynamics';\nimport { TextFormatter } from './textformatter';\nimport { TextJustification, TextNote } from './textnote';\nimport { TickContext } from './tickcontext';\nimport { TimeSignature } from './timesignature';\nimport { TimeSigNote } from './timesignote';\nimport { Tremolo } from './tremolo';\nimport { Tuning } from './tuning';\nimport { Tuplet } from './tuplet';\nimport { DATE, ID, VERSION } from './version';\nimport { Vibrato } from './vibrato';\nimport { VibratoBracket } from './vibratobracket';\nimport { Voice, VoiceMode } from './voice';\nexport class Flow {\n static get BUILD() {\n return {\n /** version number. */\n VERSION: VERSION,\n /** git commit ID that this library was built from. */\n ID: ID,\n /** The date when this library was compiled. */\n DATE: DATE,\n };\n }\n /**\n * Examples:\n * ```\n * Vex.Flow.setMusicFont('Petaluma');\n * Vex.Flow.setMusicFont('Bravura', 'Gonville');\n * ```\n *\n * **CASE 1**: You are using `vexflow.js`, which includes all music fonts (Bravura, Gonville, Petaluma, Custom).\n * In this case, calling this method is optional, since VexFlow already defaults to a music font stack of:\n * 'Bravura', 'Gonville', 'Custom'.\n *\n * **CASE 2**: You are using `vexflow-bravura.js` or `vexflow-petaluma.js` or `vexflow-gonville.js`,\n * which includes a single music font. Calling this method is unnecessary.\n *\n * **CASE 3**: You are using the light weight `vexflow-core.js` to take advantage of lazy loading for fonts.\n * In this case, the default music font stack is empty.\n * Example:\n * ```\n * await Vex.Flow.fetchMusicFont('Petaluma');\n * Vex.Flow.setMusicFont('Petaluma');\n * ... (do VexFlow stuff) ...\n * ```\n * See `demos/fonts/` for more examples.\n *\n * @returns an array of Font objects corresponding to the provided `fontNames`.\n */\n static setMusicFont(...fontNames) {\n // Convert the array of font names into an array of Font objects.\n const fonts = fontNames.map((fontName) => Font.load(fontName));\n Tables.MUSIC_FONT_STACK = fonts;\n Glyph.MUSIC_FONT_STACK = fonts.slice();\n Glyph.CURRENT_CACHE_KEY = fontNames.join(',');\n return fonts;\n }\n /**\n * Used with vexflow-core which supports dynamic font loading.\n */\n // eslint-disable-next-line\n static fetchMusicFont(fontName, fontModuleOrPath) {\n return __awaiter(this, void 0, void 0, function* () {\n // The default implementation does nothing.\n // See vexflow-core.ts for the implementation that vexflow-core.js uses.\n });\n }\n static getMusicFont() {\n const fonts = Tables.MUSIC_FONT_STACK;\n return fonts.map((font) => font.getName());\n }\n static get RENDER_PRECISION_PLACES() {\n return Tables.RENDER_PRECISION_PLACES;\n }\n static set RENDER_PRECISION_PLACES(precision) {\n Tables.RENDER_PRECISION_PLACES = precision;\n }\n static get SOFTMAX_FACTOR() {\n return Tables.SOFTMAX_FACTOR;\n }\n static set SOFTMAX_FACTOR(factor) {\n Tables.SOFTMAX_FACTOR = factor;\n }\n static get NOTATION_FONT_SCALE() {\n return Tables.NOTATION_FONT_SCALE;\n }\n static set NOTATION_FONT_SCALE(value) {\n Tables.NOTATION_FONT_SCALE = value;\n }\n static get TABLATURE_FONT_SCALE() {\n return Tables.TABLATURE_FONT_SCALE;\n }\n static set TABLATURE_FONT_SCALE(value) {\n Tables.TABLATURE_FONT_SCALE = value;\n }\n static get RESOLUTION() {\n return Tables.RESOLUTION;\n }\n static set RESOLUTION(value) {\n Tables.RESOLUTION = value;\n }\n static get SLASH_NOTEHEAD_WIDTH() {\n return Tables.SLASH_NOTEHEAD_WIDTH;\n }\n static set SLASH_NOTEHEAD_WIDTH(value) {\n Tables.SLASH_NOTEHEAD_WIDTH = value;\n }\n static get STAVE_LINE_DISTANCE() {\n return Tables.STAVE_LINE_DISTANCE;\n }\n static set STAVE_LINE_DISTANCE(value) {\n Tables.STAVE_LINE_DISTANCE = value;\n }\n static get STAVE_LINE_THICKNESS() {\n return Tables.STAVE_LINE_THICKNESS;\n }\n static set STAVE_LINE_THICKNESS(value) {\n Tables.STAVE_LINE_THICKNESS = value;\n }\n static get STEM_HEIGHT() {\n return Tables.STEM_HEIGHT;\n }\n static set STEM_HEIGHT(value) {\n Tables.STEM_HEIGHT = value;\n }\n static get STEM_WIDTH() {\n return Tables.STEM_WIDTH;\n }\n static set STEM_WIDTH(value) {\n Tables.STEM_WIDTH = value;\n }\n static get TIME4_4() {\n return Tables.TIME4_4;\n }\n static get accidentalMap() {\n return Tables.accidentalMap;\n }\n static get unicode() {\n return Tables.unicode;\n }\n static keySignature(spec) {\n return Tables.keySignature(spec);\n }\n static hasKeySignature(spec) {\n return Tables.hasKeySignature(spec);\n }\n static getKeySignatures() {\n return Tables.getKeySignatures();\n }\n static clefProperties(clef) {\n return Tables.clefProperties(clef);\n }\n // eslint-disable-next-line\n static keyProperties(key, clef, params) {\n return Tables.keyProperties(key, clef, params);\n }\n static durationToTicks(duration) {\n return Tables.durationToTicks(duration);\n }\n}\nFlow.Accidental = Accidental;\nFlow.Annotation = Annotation;\nFlow.Articulation = Articulation;\nFlow.Barline = Barline;\nFlow.BarNote = BarNote;\nFlow.Beam = Beam;\nFlow.Bend = Bend;\nFlow.BoundingBox = BoundingBox;\nFlow.BoundingBoxComputation = BoundingBoxComputation;\nFlow.CanvasContext = CanvasContext;\nFlow.ChordSymbol = ChordSymbol;\nFlow.Clef = Clef;\nFlow.ClefNote = ClefNote;\nFlow.Crescendo = Crescendo;\nFlow.Curve = Curve;\nFlow.Dot = Dot;\nFlow.EasyScore = EasyScore;\nFlow.Element = Element;\nFlow.Factory = Factory;\nFlow.Font = Font;\nFlow.Formatter = Formatter;\nFlow.Fraction = Fraction;\nFlow.FretHandFinger = FretHandFinger;\nFlow.GhostNote = GhostNote;\nFlow.Glyph = Glyph;\nFlow.GlyphNote = GlyphNote;\nFlow.GraceNote = GraceNote;\nFlow.GraceNoteGroup = GraceNoteGroup;\nFlow.GraceTabNote = GraceTabNote;\nFlow.KeyManager = KeyManager;\nFlow.KeySignature = KeySignature;\nFlow.KeySigNote = KeySigNote;\nFlow.Modifier = Modifier;\nFlow.ModifierContext = ModifierContext;\nFlow.MultiMeasureRest = MultiMeasureRest;\nFlow.Music = Music;\nFlow.Note = Note;\nFlow.NoteHead = NoteHead;\nFlow.NoteSubGroup = NoteSubGroup;\nFlow.Ornament = Ornament;\nFlow.Parenthesis = Parenthesis;\nFlow.Parser = Parser;\nFlow.PedalMarking = PedalMarking;\nFlow.Registry = Registry;\nFlow.RenderContext = RenderContext;\nFlow.Renderer = Renderer;\nFlow.RepeatNote = RepeatNote;\nFlow.Repetition = Repetition;\nFlow.Stave = Stave;\nFlow.StaveConnector = StaveConnector;\nFlow.StaveHairpin = StaveHairpin;\nFlow.StaveLine = StaveLine;\nFlow.StaveModifier = StaveModifier;\nFlow.StaveNote = StaveNote;\nFlow.StaveTempo = StaveTempo;\nFlow.StaveText = StaveText;\nFlow.StaveTie = StaveTie;\nFlow.Stem = Stem;\nFlow.StringNumber = StringNumber;\nFlow.Stroke = Stroke;\nFlow.SVGContext = SVGContext;\nFlow.System = System;\nFlow.TabNote = TabNote;\nFlow.TabSlide = TabSlide;\nFlow.TabStave = TabStave;\nFlow.TabTie = TabTie;\nFlow.TextBracket = TextBracket;\nFlow.TextDynamics = TextDynamics;\nFlow.TextFormatter = TextFormatter;\nFlow.TextNote = TextNote;\nFlow.TickContext = TickContext;\nFlow.TimeSignature = TimeSignature;\nFlow.TimeSigNote = TimeSigNote;\nFlow.Tremolo = Tremolo;\nFlow.Tuning = Tuning;\nFlow.Tuplet = Tuplet;\nFlow.Vibrato = Vibrato;\nFlow.VibratoBracket = VibratoBracket;\nFlow.Voice = Voice;\nFlow.Volta = Volta;\n// Exported Enums.\n// Sorted by the module / file they are exported from.\nFlow.AnnotationHorizontalJustify = AnnotationHorizontalJustify;\nFlow.AnnotationVerticalJustify = AnnotationVerticalJustify;\nFlow.ChordSymbolHorizontalJustify = ChordSymbolHorizontalJustify;\nFlow.ChordSymbolVerticalJustify = ChordSymbolVerticalJustify;\nFlow.SymbolTypes = SymbolTypes;\nFlow.SymbolModifiers = SymbolModifiers;\nFlow.CurvePosition = CurvePosition;\nFlow.FontWeight = FontWeight;\nFlow.FontStyle = FontStyle;\nFlow.ModifierPosition = ModifierPosition;\nFlow.RendererBackends = RendererBackends;\nFlow.RendererLineEndType = RendererLineEndType;\nFlow.BarlineType = BarlineType;\nFlow.StaveModifierPosition = StaveModifierPosition;\nFlow.VoltaType = VoltaType;\nFlow.TextBracketPosition = TextBracketPosition;\nFlow.TextJustification = TextJustification;\nFlow.VoiceMode = VoiceMode;\n","export const VERSION = '4.1.0-alpha.0';\nexport const ID = '847bc9014672858aedc7f8460384f51f98d6bd84';\nexport const DATE = '2022-10-10T04:47:38.237Z';\n","export const BravuraFont = {\n glyphs: {\n bracketTop: {\n x_min: 0,\n x_max: 469,\n y_min: 0,\n y_max: 295,\n ha: 295,\n o: 'm 0 0 l 180 0 b 674 390 410 43 616 150 b 675 405 675 396 675 400 b 664 425 675 416 671 422 b 628 405 651 425 635 415 b 157 179 613 389 432 199 l 12 179 b 0 168 3 179 0 177 z',\n },\n bracketBottom: {\n x_min: 0,\n x_max: 469,\n y_min: -295,\n y_max: 0,\n ha: 295,\n o: 'm 0 -168 b 12 -179 0 -177 3 -179 l 157 -179 b 628 -405 432 -199 613 -389 b 664 -425 635 -415 651 -425 b 675 -405 671 -422 675 -416 b 674 -390 675 -400 675 -396 b 180 0 616 -150 410 -43 l 0 0 z',\n },\n barlineTick: {\n x_min: 0,\n x_max: 36,\n y_min: 868,\n y_max: 1120,\n ha: 252,\n o: 'm 52 1250 l 52 1613 l 0 1613 l 0 1250 z',\n },\n breathMarkTick: {\n x_min: 0,\n x_max: 500,\n y_min: 0,\n y_max: 502,\n ha: 502,\n o: 'm 9 367 b 0 374 6 372 3 374 b 9 334 0 367 0 343 b 179 19 40 312 164 121 b 192 0 179 3 186 0 b 210 19 197 0 207 6 b 698 701 245 197 507 658 b 720 714 714 704 720 711 b 698 723 720 720 711 723 b 197 186 455 714 210 202 b 186 176 194 179 189 176 b 176 186 179 176 176 186 b 9 367 143 266 27 359 z',\n },\n segno: {\n x_min: 4,\n x_max: 550,\n y_min: -27,\n y_max: 759,\n ha: 786,\n o: 'm 194 958 b 217 939 203 958 213 955 l 220 929 b 325 805 230 890 252 805 b 425 901 384 805 425 840 b 413 969 425 923 420 946 b 220 1060 390 1035 294 1060 b 6 793 120 1060 6 936 b 29 687 6 759 13 723 b 295 449 75 582 284 454 b 304 438 301 446 304 444 b 295 415 304 432 301 425 b 78 22 285 395 78 22 b 73 3 75 16 73 9 b 114 -39 73 -20 91 -39 b 150 -17 128 -39 143 -30 b 377 395 150 -17 373 386 b 395 402 377 393 389 402 b 704 176 416 397 704 312 b 621 75 704 120 670 82 l 616 73 b 562 138 586 73 562 94 l 562 154 b 485 249 562 209 526 249 b 468 246 480 249 474 248 b 366 153 415 233 366 210 b 540 -12 366 65 455 -12 b 600 -1 559 -12 579 -9 b 792 251 716 37 792 131 b 789 292 792 264 791 278 b 523 588 768 451 540 579 b 498 611 505 598 498 603 b 501 619 498 613 500 616 b 732 1032 508 631 732 1032 b 737 1053 736 1040 737 1045 b 697 1093 737 1076 719 1093 b 661 1073 683 1093 668 1086 b 423 647 661 1073 432 660 b 410 635 419 639 416 635 b 396 639 406 635 402 636 b 128 792 383 644 166 727 b 108 868 120 808 108 838 b 186 958 108 907 125 948 z m 598 671 b 680 589 598 626 635 589 b 762 671 726 589 762 626 b 680 753 762 717 726 753 b 598 671 635 753 598 717 z m 202 380 b 120 462 202 425 166 462 b 37 380 75 462 37 425 b 120 298 37 334 75 298 b 202 380 166 298 202 334 z',\n },\n coda: {\n x_min: -4,\n x_max: 955,\n y_min: -158,\n y_max: 898,\n ha: 1056,\n o: 'm 1349 576 l 1178 576 b 729 1083 1164 847 962 1064 l 729 1269 b 694 1293 729 1287 713 1293 b 660 1269 675 1293 660 1287 l 660 1083 b 210 576 426 1064 226 848 l 20 576 b -6 541 0 576 -6 560 b 20 507 -6 523 0 507 l 210 507 b 660 0 226 238 426 19 l 660 -202 b 694 -228 660 -222 675 -228 b 729 -202 713 -228 729 -222 l 729 0 b 1178 507 962 19 1164 238 l 1349 507 b 1375 541 1369 507 1375 523 b 1349 576 1375 560 1369 576 z m 940 576 l 729 576 l 729 1002 b 940 576 930 985 940 809 z m 660 1002 l 660 576 l 455 576 b 660 1002 455 809 455 985 z m 455 507 l 660 507 l 660 69 b 455 507 474 91 456 285 z m 729 69 l 729 507 l 940 507 b 729 69 936 287 909 91 z',\n },\n gClef: {\n x_min: 0,\n x_max: 671,\n y_min: -658,\n y_max: 1098,\n ha: 1756,\n o: 'm 541 598 b 550 625 539 615 541 616 b 824 1174 706 770 824 953 b 730 1509 824 1299 789 1423 b 655 1581 708 1541 671 1581 b 562 1512 635 1581 590 1544 b 420 1064 455 1394 420 1214 b 441 828 420 981 431 887 b 428 793 444 811 445 808 b 0 125 220 622 0 416 b 524 -363 0 -125 171 -363 b 624 -354 557 -363 595 -360 b 645 -367 639 -351 642 -350 b 684 -657 662 -464 684 -589 b 455 -896 684 -870 540 -896 b 340 -854 377 -896 340 -873 b 386 -829 340 -844 353 -840 b 482 -694 431 -816 482 -778 b 344 -547 482 -615 432 -547 b 190 -713 248 -547 190 -624 b 464 -948 190 -806 246 -948 b 747 -660 560 -948 747 -904 b 706 -351 747 -577 721 -441 b 724 -327 703 -334 704 -336 b 966 16 870 -269 966 -147 b 619 363 966 200 831 363 b 577 389 582 363 582 363 z m 677 1358 b 763 1240 724 1358 763 1319 b 513 851 763 1080 626 950 b 494 863 503 842 497 844 b 485 995 488 900 485 949 b 677 1358 485 1220 589 1358 z m 520 377 b 498 343 524 350 524 351 b 289 63 372 300 289 186 b 455 -192 289 -66 357 -158 b 494 -200 467 -196 484 -200 b 511 -184 505 -200 511 -193 b 490 -166 511 -174 500 -170 b 386 -12 429 -140 386 -78 b 530 157 386 71 442 132 b 559 145 553 163 556 161 l 631 -284 b 611 -304 634 -300 632 -300 b 530 -311 588 -308 559 -311 b 115 29 278 -311 115 -171 b 249 363 115 114 130 228 b 469 567 336 459 402 513 b 490 562 484 579 487 577 z m 619 148 b 635 168 616 166 618 170 b 848 -66 752 158 848 60 b 713 -271 848 -157 793 -230 b 690 -262 696 -279 693 -279 z',\n },\n cClef: {\n x_min: 0,\n x_max: 699,\n y_min: -506,\n y_max: 506,\n ha: 1012,\n o: 'm 331 694 b 301 724 331 714 321 724 l 300 724 b 269 694 279 724 269 714 l 269 -694 b 300 -724 269 -714 279 -724 l 301 -724 b 331 -694 321 -724 331 -714 l 331 -63 b 344 -55 331 -52 338 -53 b 472 -265 382 -65 442 -102 b 500 -301 477 -288 485 -301 b 530 -262 516 -301 523 -287 b 684 -128 549 -199 582 -128 b 804 -409 778 -128 804 -220 b 651 -683 804 -598 770 -683 b 528 -644 631 -683 528 -674 b 567 -622 528 -636 552 -628 b 625 -528 596 -612 625 -583 b 527 -429 625 -465 583 -429 b 416 -547 465 -429 416 -471 b 667 -729 416 -638 495 -729 b 1007 -413 903 -729 1007 -563 b 706 -76 1007 -215 897 -76 b 618 -89 664 -76 636 -84 b 576 -88 603 -94 589 -96 b 524 0 556 -75 524 -29 b 576 88 524 29 556 75 b 618 89 589 96 603 94 b 706 76 636 84 664 76 b 1007 413 897 76 1007 215 b 667 729 1007 563 903 729 b 416 547 495 729 416 638 b 527 429 416 471 465 429 b 625 528 583 429 625 465 b 567 622 625 583 596 612 b 528 644 552 628 528 636 b 651 683 528 674 631 683 b 804 409 770 683 804 598 b 684 128 804 220 778 128 b 530 262 582 128 549 199 b 500 301 523 287 516 301 b 472 265 485 301 477 288 b 344 55 442 102 382 65 b 331 63 338 53 331 52 z m 30 724 b 0 694 10 724 0 714 l 0 -694 b 30 -724 0 -714 10 -724 l 154 -724 b 184 -694 174 -724 184 -714 l 184 694 b 154 724 184 714 174 724 z',\n },\n fClef: {\n x_min: -5,\n x_max: 684,\n y_min: -635,\n y_max: 262,\n ha: 897,\n o: 'm 363 377 b 0 56 112 377 0 194 b 177 -158 0 -59 60 -158 b 330 -6 268 -158 330 -95 b 192 144 330 86 262 144 b 120 134 153 144 138 134 b 96 160 101 134 96 145 b 330 323 96 217 183 323 b 549 -53 482 323 549 173 b 14 -871 549 -455 350 -680 b -7 -897 1 -878 -7 -886 b 12 -914 -7 -906 -1 -914 b 36 -907 19 -914 27 -912 b 765 -40 390 -734 765 -478 b 363 377 765 210 612 377 z m 906 259 b 827 180 861 259 827 225 b 906 101 827 135 861 101 b 985 180 950 101 985 135 b 906 259 985 225 950 259 z m 907 -102 b 829 -180 863 -102 829 -135 b 907 -258 829 -225 863 -258 b 985 -180 952 -258 985 -225 b 907 -102 985 -135 952 -102 z',\n },\n unpitchedPercussionClef1: {\n x_min: 0,\n x_max: 382,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 230 -338 l 230 338 b 210 360 230 350 222 360 l 20 360 b 0 338 9 360 0 350 l 0 -338 b 20 -360 0 -350 9 -360 l 210 -360 b 230 -338 222 -360 230 -350 z m 550 338 b 530 360 550 350 541 360 l 340 360 b 320 338 328 360 320 350 l 320 -338 b 340 -360 320 -350 328 -360 l 530 -360 b 550 -338 541 -360 550 -350 z',\n },\n '6stringTabClef': {\n x_min: -3,\n x_max: 408,\n y_min: -748,\n y_max: 764,\n ha: 1512,\n o: 'm 557 1024 l 557 1100 l 26 1100 l 26 1024 l 249 1024 l 249 422 l 336 422 l 336 1024 z m 588 -328 l 350 348 l 238 348 l -4 -328 l 88 -328 l 160 -125 l 420 -125 l 491 -328 z m 397 -52 l 181 -52 l 292 256 z m 544 -883 b 420 -719 544 -802 507 -752 b 514 -572 482 -690 514 -639 b 314 -399 514 -472 442 -399 l 39 -399 l 39 -1077 l 344 -1077 b 544 -883 467 -1077 544 -995 z m 428 -583 b 292 -691 428 -652 389 -691 l 125 -691 l 125 -475 l 292 -475 b 428 -583 389 -475 428 -514 z m 458 -884 b 337 -1001 458 -949 418 -1001 l 125 -1001 l 125 -768 l 337 -768 b 458 -884 418 -768 458 -818 z',\n },\n timeSig0: {\n x_min: 20,\n x_max: 450,\n y_min: -250,\n y_max: 251,\n ha: 501,\n o: 'm 648 0 b 338 361 648 200 510 361 b 29 0 167 361 29 200 b 338 -360 29 -199 167 -360 b 648 0 510 -360 648 -199 z m 338 317 b 446 10 397 317 446 180 b 338 -295 446 -158 397 -295 b 230 10 278 -295 230 -158 b 338 317 230 180 278 317 z',\n },\n timeSig1: {\n x_min: 20,\n x_max: 314,\n y_min: -250,\n y_max: 251,\n ha: 501,\n o: 'm 35 19 b 29 0 35 19 29 10 b 45 -20 29 -7 33 -16 b 58 -23 50 -22 56 -23 b 78 -10 72 -23 78 -10 b 156 117 78 -10 140 89 b 170 131 161 127 167 131 b 179 111 176 131 179 120 l 179 -261 b 115 -315 179 -294 145 -315 b 91 -337 105 -315 91 -320 b 122 -360 91 -353 104 -360 l 429 -360 b 452 -337 452 -360 452 -337 b 431 -315 452 -337 452 -315 b 384 -265 410 -315 384 -289 l 384 328 b 356 361 384 351 376 360 b 281 356 336 361 300 356 b 206 360 253 356 228 357 b 199 361 203 360 200 361 b 173 334 184 361 179 347 z',\n },\n timeSig2: {\n x_min: 20,\n x_max: 426,\n y_min: -257,\n y_max: 254,\n ha: 511,\n o: 'm 606 -131 b 589 -111 606 -114 599 -111 b 570 -127 577 -111 573 -117 l 569 -128 b 513 -192 554 -164 543 -192 b 488 -187 505 -192 498 -190 b 445 -171 469 -180 459 -179 b 289 -137 416 -160 348 -137 b 236 -145 271 -137 252 -140 b 422 -42 268 -94 390 -50 b 613 147 523 -14 613 27 b 330 366 613 300 464 366 b 69 275 229 366 140 357 b 29 170 45 245 29 209 b 42 108 29 150 33 130 b 160 29 63 63 108 29 b 261 156 248 29 261 120 b 161 275 261 242 161 246 b 275 330 164 295 190 330 b 405 192 403 330 405 233 b 193 -102 405 60 297 -39 b 33 -317 114 -153 58 -223 l 32 -321 b 69 -370 32 -340 48 -370 b 203 -282 101 -370 118 -282 b 410 -360 261 -282 282 -360 b 606 -131 472 -360 583 -354 z',\n },\n timeSig3: {\n x_min: 20,\n x_max: 401,\n y_min: -251,\n y_max: 249,\n ha: 500,\n o: 'm 307 357 b 301 357 305 357 304 357 l 291 359 b 285 359 289 359 287 359 b 37 200 161 359 37 276 b 154 84 37 153 65 89 l 161 84 b 256 177 225 84 256 130 l 256 189 b 209 248 252 242 216 245 b 180 268 202 251 180 248 l 180 274 b 240 310 183 298 228 310 b 374 199 363 310 374 233 l 374 189 b 199 36 374 82 289 40 b 164 12 184 35 164 27 b 200 -6 164 -6 189 -6 b 379 -137 366 -6 379 -118 b 269 -307 379 -289 301 -307 b 256 -305 264 -307 258 -305 b 216 -282 245 -304 217 -304 l 216 -275 b 249 -180 216 -243 248 -222 b 145 -76 249 -120 207 -76 b 130 -78 140 -76 135 -76 b 60 -115 105 -82 78 -96 b 29 -203 36 -137 29 -171 b 275 -361 32 -315 134 -359 l 288 -361 b 577 -161 431 -361 577 -288 l 577 -151 b 537 -50 575 -109 564 -82 b 503 -20 528 -39 517 -29 l 472 -3 l 425 10 b 410 17 418 12 413 12 b 409 24 409 20 409 22 b 415 37 409 30 410 36 b 459 50 431 42 446 43 b 547 181 517 78 547 115 b 307 357 547 314 367 353 z',\n },\n timeSig4: {\n x_min: 20,\n x_max: 450,\n y_min: -250,\n y_max: 251,\n ha: 501,\n o: 'm 521 -107 l 521 202 b 504 226 521 213 520 226 b 475 213 491 226 484 223 l 338 48 b 325 14 333 40 325 32 l 325 -107 l 131 -107 b 481 336 246 -9 477 318 l 482 340 b 461 361 482 353 472 361 b 363 359 448 361 389 359 b 261 361 337 359 272 361 b 228 334 248 361 228 357 b 43 -105 228 156 86 -45 l 35 -117 b 35 -118 35 -117 35 -118 l 33 -120 b 29 -137 30 -127 29 -132 b 58 -161 29 -151 40 -161 l 325 -161 l 325 -252 b 268 -302 325 -291 294 -302 b 235 -330 245 -302 235 -315 b 262 -360 235 -344 240 -360 l 569 -360 b 598 -330 583 -360 598 -350 b 566 -301 598 -310 580 -301 b 521 -246 552 -301 521 -292 l 521 -161 l 626 -161 b 648 -134 641 -161 648 -151 b 626 -107 648 -117 642 -107 z',\n },\n timeSig5: {\n x_min: 20,\n x_max: 383,\n y_min: -251,\n y_max: 246,\n ha: 497,\n o: 'm 109 85 b 117 179 109 85 115 166 b 138 197 118 190 125 197 l 144 197 b 285 184 158 194 226 184 b 492 323 485 184 492 300 b 472 353 492 341 488 353 b 295 340 454 353 341 340 b 101 354 249 340 125 351 b 66 330 75 354 68 341 l 50 10 l 50 7 b 79 -14 50 -12 65 -14 b 111 14 94 -14 95 -1 b 209 62 125 29 160 62 b 357 -125 258 62 357 35 b 235 -304 357 -284 272 -304 b 202 -300 223 -304 212 -304 b 184 -279 194 -295 186 -289 b 202 -259 184 -269 194 -264 b 256 -163 235 -239 256 -203 b 144 -50 256 -99 206 -50 b 30 -157 66 -50 35 -107 b 29 -183 29 -166 29 -174 b 284 -361 29 -302 107 -361 b 552 -125 456 -361 552 -255 b 314 112 552 6 445 112 b 122 71 230 112 168 98 b 115 69 120 69 117 69 b 109 79 109 69 109 75 z',\n },\n timeSig6: {\n x_min: 20,\n x_max: 414,\n y_min: -249,\n y_max: 251,\n ha: 500,\n o: 'm 439 120 b 554 229 500 120 554 167 b 553 245 554 235 554 239 b 348 361 539 337 426 361 b 85 209 239 360 137 307 b 29 4 53 148 29 72 l 29 -1 b 73 -200 30 -68 42 -143 b 324 -359 132 -307 203 -359 b 513 -307 389 -359 461 -348 b 596 -137 563 -266 596 -202 b 379 72 596 -24 490 72 b 248 22 333 72 285 55 b 239 19 245 19 242 19 b 226 53 230 19 226 30 b 346 327 230 320 315 327 b 393 305 374 327 393 320 b 357 251 393 285 366 268 b 347 209 350 238 347 223 b 369 150 347 187 354 166 b 439 120 379 131 420 120 z m 320 3 b 405 -158 366 3 405 -69 b 320 -320 405 -248 366 -320 b 236 -158 274 -320 236 -248 b 320 3 236 -69 274 3 z',\n },\n timeSig7: {\n x_min: 20,\n x_max: 421,\n y_min: -250,\n y_max: 249,\n ha: 499,\n o: 'm 606 294 b 582 351 606 333 606 351 b 552 336 580 351 557 346 b 485 236 541 318 521 236 b 262 359 449 236 382 359 b 137 307 179 359 157 325 b 98 281 117 288 108 282 b 60 315 86 281 68 301 b 43 325 58 321 50 325 b 29 308 36 325 29 321 l 29 71 b 45 48 29 71 30 48 b 66 76 56 48 60 60 b 164 196 81 112 99 196 b 374 88 222 196 291 88 b 446 118 415 88 435 109 b 459 124 451 121 456 124 b 469 111 465 124 468 120 b 272 -112 469 71 359 -10 b 173 -315 217 -176 173 -259 b 200 -360 173 -346 173 -360 b 294 -347 226 -360 258 -347 b 412 -360 330 -347 397 -360 b 435 -307 426 -360 435 -348 b 606 288 435 -66 606 140 z',\n },\n timeSig8: {\n x_min: 20,\n x_max: 416,\n y_min: -259,\n y_max: 259,\n ha: 518,\n o: 'm 481 52 b 567 204 533 85 567 132 b 317 373 567 351 356 373 b 36 176 150 373 36 297 b 161 -16 36 76 92 23 b 29 -190 86 -52 29 -99 b 301 -373 29 -315 158 -373 b 599 -117 445 -373 599 -311 b 481 52 599 -30 549 17 z m 406 85 b 168 240 291 125 168 150 b 314 331 168 301 251 331 b 482 207 360 331 482 308 b 406 85 482 150 454 112 z m 295 -325 b 111 -183 199 -325 111 -276 b 225 -48 111 -125 161 -72 b 436 -219 330 -94 436 -124 b 295 -325 436 -276 392 -325 z',\n },\n timeSig9: {\n x_min: 20,\n x_max: 414,\n y_min: -249,\n y_max: 251,\n ha: 500,\n o: 'm 186 -117 b 71 -226 125 -117 71 -164 b 72 -242 71 -232 71 -236 b 276 -359 86 -334 199 -359 b 540 -206 386 -357 488 -304 b 596 -1 572 -145 596 -69 l 596 4 b 552 203 595 71 583 145 b 301 361 492 310 422 361 b 112 310 236 361 164 351 b 29 140 62 269 29 204 b 246 -69 29 27 135 -69 b 377 -19 292 -69 340 -52 b 386 -16 380 -16 383 -16 b 399 -50 395 -16 399 -27 b 279 -324 395 -317 310 -324 b 232 -302 251 -324 232 -317 b 268 -248 232 -282 259 -265 b 278 -206 275 -235 278 -220 b 256 -147 278 -184 271 -163 b 186 -117 246 -128 204 -117 z m 305 0 b 220 161 259 0 220 72 b 305 323 220 251 259 323 b 389 161 351 323 389 251 b 305 0 389 72 351 0 z',\n },\n timeSigCommon: {\n x_min: 5,\n x_max: 424,\n y_min: -249,\n y_max: 251,\n ha: 500,\n o: 'm 336 361 b 7 -14 131 361 7 180 b 101 -262 7 -108 42 -190 b 321 -359 156 -328 235 -359 b 611 -88 573 -359 611 -130 b 589 -56 611 -56 595 -56 b 567 -82 577 -56 567 -58 b 363 -311 567 -268 409 -311 b 184 40 246 -311 184 -197 b 372 327 184 278 294 327 b 477 278 446 327 477 292 b 451 246 477 265 472 246 b 360 140 393 246 360 184 b 471 32 360 58 431 32 b 580 156 471 32 580 36 b 336 361 580 344 363 361 z',\n },\n timeSigCutCommon: {\n x_min: 0,\n x_max: 418,\n y_min: -359,\n y_max: 361,\n ha: 720,\n o: 'm 573 -58 b 559 -82 567 -58 559 -60 b 354 -310 559 -266 400 -310 b 317 -305 340 -310 328 -308 b 302 -284 311 -304 302 -295 l 302 287 b 338 323 302 297 328 321 b 363 324 347 324 356 324 b 468 275 436 324 468 289 b 442 243 468 264 464 243 b 351 137 384 243 351 181 b 462 30 351 56 422 30 b 572 154 462 30 572 35 b 318 357 572 295 441 357 b 302 390 310 359 302 383 l 302 495 b 276 520 302 507 292 520 b 252 495 265 520 252 507 l 252 369 b 235 346 252 359 238 346 l 196 331 b 0 -14 66 275 0 122 b 225 -346 0 -150 86 -310 b 252 -382 235 -350 252 -369 l 252 -492 b 276 -517 252 -505 265 -517 b 302 -492 292 -517 302 -505 l 302 -379 b 318 -359 302 -370 308 -363 b 602 -85 563 -354 602 -130 b 579 -58 600 -58 586 -58 z m 252 -235 b 243 -252 252 -248 248 -252 b 236 -248 240 -252 238 -251 b 177 37 197 -193 177 -96 b 232 259 177 147 200 215 b 236 262 233 262 235 262 b 252 239 243 262 252 251 z',\n },\n timeSigPlus: {\n x_min: -1,\n x_max: 499,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 432 53 b 413 79 420 53 413 65 l 413 340 b 392 360 413 350 405 360 l 325 360 b 305 340 312 360 305 350 l 305 79 b 284 53 305 66 292 53 l 19 53 b -1 33 9 53 -1 46 l -1 -33 b 19 -55 -1 -46 9 -55 l 284 -55 b 305 -75 298 -55 305 -68 l 305 -340 b 325 -360 305 -350 312 -360 l 392 -360 b 413 -340 405 -360 413 -350 l 413 -78 b 433 -55 413 -63 423 -55 l 698 -55 b 719 -33 708 -55 719 -46 l 719 33 b 698 53 719 46 708 53 z',\n },\n timeSigPlusSmall: {\n x_min: -1,\n x_max: 255,\n y_min: -133,\n y_max: 123,\n ha: 256,\n o: 'm 220 20 b 210 33 215 20 210 26 l 210 166 b 200 177 210 171 206 177 l 166 177 b 156 166 160 177 156 171 l 156 33 b 145 20 156 27 150 20 l 10 20 b -1 10 4 20 -1 16 l -1 -24 b 10 -35 -1 -30 4 -35 l 145 -35 b 156 -46 153 -35 156 -42 l 156 -180 b 166 -192 156 -186 160 -192 l 200 -192 b 210 -180 206 -192 210 -186 l 210 -48 b 222 -35 210 -39 216 -35 l 356 -35 b 367 -24 361 -35 367 -30 l 367 10 b 356 20 367 16 361 20 z',\n },\n timeSigMinus: {\n x_min: 0,\n x_max: 448,\n y_min: -35,\n y_max: 40,\n ha: 75,\n o: 'm 645 39 b 619 58 645 49 634 58 l 27 58 b 0 39 12 58 0 49 l 0 -32 b 27 -50 0 -42 12 -50 l 619 -50 b 645 -32 634 -50 645 -42 z',\n },\n timeSigParensRight: {\n x_min: 0,\n x_max: 184,\n y_min: -489,\n y_max: 491,\n ha: 980,\n o: 'm 0 -696 b 3 -704 0 -698 1 -704 b 7 -703 4 -704 6 -704 b 265 1 187 -530 265 -282 b 12 701 265 289 187 531 b 4 707 12 701 6 707 b 0 696 1 707 0 703 l 0 665 b 4 644 0 665 0 651 b 167 1 112 503 167 315 b 6 -641 167 -311 109 -497 b 0 -658 3 -644 0 -651 z',\n },\n timeSigParensRightSmall: {\n x_min: 0,\n x_max: 110,\n y_min: -251,\n y_max: 249,\n ha: 500,\n o: 'm 0 -356 b 3 -361 0 -357 1 -361 b 158 0 112 -272 158 -145 b 4 359 158 147 109 272 b 0 353 3 359 0 357 l 0 338 b 3 327 0 338 0 330 b 91 0 60 246 91 160 b 4 -328 91 -160 62 -249 b 0 -337 3 -330 0 -333 z',\n },\n timeSigParensLeft: {\n x_min: 0,\n x_max: 184,\n y_min: -489,\n y_max: 491,\n ha: 980,\n o: 'm 265 -658 b 259 -641 265 -651 262 -644 b 98 1 156 -497 98 -311 b 261 644 98 315 153 503 b 265 665 265 651 265 665 l 265 696 b 261 707 265 703 264 707 b 253 701 259 707 253 701 b 0 1 78 531 0 289 b 258 -703 0 -282 78 -530 b 262 -704 259 -704 261 -704 b 265 -696 264 -704 265 -698 z',\n },\n timeSigParensLeftSmall: {\n x_min: 0,\n x_max: 110,\n y_min: -251,\n y_max: 249,\n ha: 500,\n o: 'm 158 -337 b 154 -328 158 -333 156 -330 b 68 0 96 -249 68 -160 b 156 327 68 160 98 246 b 158 338 158 330 158 338 l 158 353 b 154 359 158 357 156 359 b 0 0 49 272 0 147 b 156 -361 0 -145 46 -272 b 158 -356 157 -361 158 -357 z',\n },\n noteheadDoubleWhole: {\n x_min: 0,\n x_max: 599,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 13 223 b 0 212 4 223 0 217 l 0 -213 b 13 -223 0 -219 4 -223 l 32 -223 b 45 -213 39 -223 45 -219 l 45 212 b 32 223 45 217 39 223 z m 96 223 b 82 212 88 223 82 217 l 82 -213 b 96 -223 82 -219 88 -223 l 114 -223 b 128 -213 121 -223 128 -219 l 128 212 b 114 223 128 217 121 223 z m 747 223 b 733 212 740 223 733 217 l 733 -213 b 747 -223 733 -219 740 -223 l 766 -223 b 780 -213 773 -223 780 -219 l 780 212 b 766 223 780 217 773 223 z m 829 223 b 815 212 824 223 815 217 l 815 -213 b 829 -223 815 -219 824 -223 l 848 -223 b 863 -213 857 -223 863 -219 l 863 212 b 848 223 863 217 857 223 z m 438 180 b 130 1 248 180 130 101 b 423 -180 130 -92 210 -180 b 733 1 657 -180 733 -98 b 438 180 733 104 572 180 z m 469 -145 b 331 -71 409 -145 369 -112 b 284 58 305 -37 284 12 b 400 147 284 131 333 147 b 577 -45 498 147 577 42 b 469 -145 577 -115 533 -145 z',\n },\n noteheadWhole: {\n x_min: 0,\n x_max: 422,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 311 180 b 0 3 120 180 0 101 b 297 -180 0 -94 82 -180 b 608 3 533 -180 608 -98 b 311 180 608 105 445 180 z m 160 91 b 274 148 176 141 229 148 b 452 -45 373 148 452 42 b 386 -141 452 -89 433 -130 b 341 -147 372 -145 356 -147 b 206 -72 289 -147 236 -112 b 156 56 177 -39 156 10 b 160 91 156 68 157 79 z',\n },\n noteheadHalf: {\n x_min: 0,\n x_max: 295,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 140 -180 b 425 60 377 -180 425 13 b 282 180 425 134 366 180 b 0 -60 68 180 0 14 b 140 -180 0 -137 60 -180 z m 108 -125 b 50 -92 78 -125 60 -109 b 42 -63 46 -84 42 -73 b 318 121 42 7 251 121 b 372 91 346 121 361 108 b 380 63 376 82 380 73 b 108 -125 380 1 177 -125 z',\n },\n noteheadBlack: {\n x_min: 0,\n x_max: 295,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 140 -180 b 425 60 268 -180 425 -62 b 285 180 425 134 367 180 b 0 -60 127 180 0 63 b 140 -180 0 -135 62 -180 z',\n },\n noteheadXDoubleWhole: {\n x_min: 0,\n x_max: 546,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 43 213 b 30 223 43 217 39 223 l 13 223 b 0 213 6 223 0 217 l 0 -215 b 13 -223 0 -219 6 -223 l 30 -223 b 43 -215 39 -223 43 -219 z m 704 213 b 693 223 704 217 698 223 l 672 223 b 660 213 667 223 660 217 l 660 163 b 634 180 655 173 645 180 l 505 180 b 484 173 498 180 490 177 l 393 95 l 300 173 b 279 180 294 177 287 180 l 151 180 b 125 163 141 180 130 173 l 125 213 b 112 223 125 217 118 223 l 94 223 b 82 213 86 223 82 217 l 82 -215 b 94 -223 82 -219 86 -223 l 112 -223 b 125 -215 118 -223 125 -219 l 125 -163 b 151 -180 130 -173 140 -180 l 279 -180 b 300 -171 287 -180 294 -177 l 393 -95 l 485 -171 b 505 -180 491 -177 498 -180 l 632 -180 b 660 -163 645 -180 655 -173 l 660 -215 b 672 -223 660 -219 667 -223 l 693 -223 b 704 -215 698 -223 704 -219 z m 786 213 b 772 223 786 217 780 223 l 755 223 b 740 213 747 223 740 217 l 740 -215 b 755 -223 740 -219 747 -223 l 772 -223 b 786 -215 780 -223 786 -219 z m 507 -141 l 393 -45 l 276 -141 l 207 -141 l 364 0 l 207 141 l 276 141 l 393 45 l 507 141 l 577 141 l 420 0 l 577 -141 z m 660 -132 l 518 0 l 660 132 z m 125 131 l 266 0 l 125 -131 z',\n },\n noteheadXWhole: {\n x_min: 0,\n x_max: 377,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 272 -95 l 364 -171 b 384 -180 370 -177 377 -180 l 511 -180 b 543 -148 528 -180 543 -164 b 531 -124 543 -140 539 -131 l 412 0 l 531 124 b 541 148 539 131 541 140 b 513 180 541 164 528 180 l 384 180 b 364 171 377 180 370 177 l 272 94 l 179 171 b 158 180 173 177 166 180 l 30 180 b 0 148 16 180 0 164 b 12 124 0 140 4 131 l 132 0 l 12 -124 b 1 -148 4 -131 1 -140 b 32 -180 1 -164 14 -180 l 158 -180 b 179 -171 166 -180 173 -177 z m 386 -141 l 272 -45 l 157 -141 l 88 -141 l 245 0 l 88 141 l 157 141 l 272 45 l 386 141 l 456 141 l 300 0 l 456 -141 z',\n },\n noteheadXHalf: {\n x_min: 0,\n x_max: 334,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 295 180 b 271 170 287 180 278 177 l 209 98 l 115 171 b 95 180 109 177 104 180 l 36 180 b 4 148 19 180 4 164 b 14 124 4 140 7 132 l 140 22 l 7 -127 b 0 -148 3 -131 0 -138 b 32 -180 0 -166 14 -180 l 184 -180 b 209 -170 193 -180 203 -177 l 271 -99 l 363 -171 b 384 -180 370 -176 377 -180 l 445 -180 b 478 -147 461 -180 478 -163 b 465 -125 478 -138 474 -131 l 341 -22 l 474 127 b 481 148 480 131 481 138 b 448 180 481 166 468 180 z m 36 148 l 95 148 l 233 33 l 334 148 l 410 148 l 274 -6 l 445 -148 l 384 -148 l 248 -35 l 147 -148 l 71 -148 l 206 4 z',\n },\n noteheadXBlack: {\n x_min: 0,\n x_max: 290,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 410 -143 l 239 0 l 410 144 b 418 160 415 147 418 154 b 399 180 418 171 408 180 b 389 177 396 180 392 179 l 207 26 l 29 177 b 17 180 26 179 22 180 b 0 161 7 180 0 170 b 7 144 0 156 3 148 l 179 0 l 7 -143 b 0 -158 1 -147 0 -153 b 19 -180 0 -170 7 -180 b 29 -176 23 -180 26 -179 l 207 -24 l 389 -176 b 399 -180 392 -179 396 -180 b 418 -160 410 -180 418 -168 b 410 -143 418 -153 415 -147 z',\n },\n noteheadCircleXDoubleWhole: {\n x_min: 0,\n x_max: 422,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 576 223 b 563 213 570 223 563 219 l 563 -215 b 576 -223 563 -219 570 -223 l 595 -223 b 608 -215 602 -223 608 -219 l 608 213 b 595 223 608 219 602 223 z m 497 223 b 484 213 491 223 484 219 l 484 -215 b 497 -223 484 -219 491 -223 l 516 -223 b 528 -215 523 -223 528 -219 l 528 213 b 516 223 528 219 523 223 z m 94 223 b 81 213 86 223 81 219 l 81 -215 b 94 -223 81 -219 86 -223 l 111 -223 b 124 -215 118 -223 124 -219 l 124 213 b 111 223 124 219 118 223 z m 13 223 b 0 213 6 223 0 219 l 0 -215 b 13 -223 0 -219 6 -223 l 30 -223 b 45 -215 37 -223 45 -219 l 45 213 b 30 223 45 219 37 223 z m 304 180 b 127 0 206 180 127 101 b 304 -180 127 -99 206 -180 b 482 0 405 -180 482 -99 b 304 180 482 101 405 180 z m 305 32 l 225 112 b 304 140 248 130 275 140 b 387 112 336 140 364 130 z m 278 1 l 193 -82 b 216 0 199 -59 216 -30 b 194 85 216 33 203 50 z m 334 1 l 418 84 b 389 0 402 50 389 23 b 418 -81 389 -30 409 -60 z m 305 -27 l 389 -109 b 304 -138 364 -128 336 -138 b 222 -109 274 -138 246 -128 z',\n },\n noteheadCircleXWhole: {\n x_min: 0,\n x_max: 249,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 179 180 b 0 0 81 180 0 101 b 179 -180 0 -99 81 -180 b 359 0 278 -180 359 -99 b 179 180 359 101 278 180 z m 180 32 l 99 112 b 179 140 121 130 150 140 b 262 112 210 140 238 130 z m 151 1 l 68 -82 b 86 0 73 -59 86 -30 b 68 85 86 33 78 50 z m 209 1 l 291 84 b 269 0 276 50 269 32 b 291 -79 269 -26 282 -58 z m 180 -27 l 264 -111 b 179 -138 239 -128 210 -138 b 96 -111 148 -138 120 -128 z',\n },\n noteheadCircleXHalf: {\n x_min: 0,\n x_max: 250,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 179 180 b 0 0 81 180 0 101 b 179 -180 0 -99 81 -180 b 360 0 278 -180 360 -99 b 179 180 360 101 278 180 z m 186 37 l 131 92 b 220 124 153 109 189 124 b 262 112 236 124 249 121 z m 215 7 l 291 84 b 304 42 300 71 304 58 b 271 -49 304 10 288 -26 z m 145 -6 l 68 -82 b 56 -42 59 -71 56 -58 b 89 52 56 -9 72 27 z m 174 -33 l 230 -89 b 140 -124 206 -108 171 -124 b 96 -111 122 -124 109 -121 z',\n },\n noteheadCircleX: {\n x_min: 0,\n x_max: 249,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 179 180 b 0 0 81 180 0 99 b 179 -180 0 -99 81 -180 b 359 0 278 -180 359 -99 b 179 180 359 99 278 180 z m 261 112 l 180 30 l 98 112 b 179 138 121 128 148 138 b 261 112 210 138 238 128 z m 317 0 b 292 -82 317 -30 308 -59 l 209 1 l 291 84 b 317 0 307 60 317 30 z m 40 0 b 69 84 40 32 50 60 l 151 1 l 68 -84 b 40 0 49 -60 40 -30 z m 95 -111 l 180 -27 l 262 -111 b 179 -138 239 -128 210 -138 b 95 -111 148 -138 120 -128 z',\n },\n noteheadCircledDoubleWhole: {\n x_min: 0,\n x_max: 603,\n y_min: -218,\n y_max: 213,\n ha: 431,\n o: 'm 770 223 l 752 223 b 737 213 744 223 737 219 l 737 59 b 435 307 710 203 582 307 b 128 48 281 307 156 197 l 128 213 b 115 223 128 219 122 223 l 96 223 b 84 213 89 223 84 219 l 84 -215 b 96 -223 84 -220 89 -223 l 115 -223 b 128 -215 122 -223 128 -220 l 128 -56 b 435 -314 156 -206 282 -314 b 654 -223 517 -314 595 -282 b 737 -66 697 -180 726 -125 l 737 -215 b 752 -223 737 -220 744 -223 l 770 -223 b 785 -215 778 -223 785 -220 l 785 213 b 770 223 785 219 778 223 z m 435 274 b 698 85 556 274 661 194 b 439 180 641 143 534 180 b 176 99 320 180 228 148 b 435 274 217 203 318 274 z m 32 223 l 13 223 b 0 213 6 223 0 219 l 0 -215 b 13 -223 0 -220 6 -223 l 32 -223 b 45 -215 40 -223 45 -220 l 45 213 b 32 223 45 219 40 223 z m 852 223 l 835 223 b 819 213 828 223 819 219 l 819 -215 b 835 -223 819 -220 828 -223 l 852 -223 b 868 -215 861 -223 868 -220 l 868 213 b 852 223 868 219 861 223 z m 580 -46 b 514 -143 580 -91 562 -131 b 472 -148 501 -147 487 -148 b 364 -105 433 -148 395 -131 l 334 -73 b 285 58 307 -39 285 10 b 289 91 285 69 287 79 b 403 145 305 140 357 145 b 580 -46 501 145 580 42 z m 435 -282 b 176 -108 318 -282 217 -209 b 425 -180 222 -151 301 -180 b 691 -109 563 -180 647 -153 b 435 -282 651 -210 550 -282 z',\n },\n noteheadCircledWhole: {\n x_min: 0,\n x_max: 437,\n y_min: -225,\n y_max: 211,\n ha: 436,\n o: 'm 314 304 b 0 -10 140 304 0 164 b 314 -324 0 -183 141 -324 b 629 -10 487 -324 629 -183 b 314 304 629 164 488 304 z m 314 275 b 588 73 441 275 549 193 b 321 180 536 137 420 180 b 48 88 190 180 95 143 b 314 275 85 199 199 275 z m 393 -141 b 350 -147 379 -145 364 -147 b 314 -141 337 -147 325 -145 b 167 55 235 -120 167 -26 b 173 91 167 66 168 79 b 284 145 187 138 239 145 b 459 -48 382 145 459 39 b 393 -141 459 -91 438 -131 z m 314 -294 b 40 -86 187 -294 75 -207 b 305 -180 81 -141 164 -180 b 588 -86 464 -180 550 -143 b 314 -294 554 -209 442 -294 z',\n },\n noteheadCircledHalf: {\n x_min: -18,\n x_max: 311,\n y_min: -162,\n y_max: 167,\n ha: 329,\n o: 'm 212 240 b -26 3 81 240 -26 134 b 212 -233 -26 -127 81 -233 b 448 3 341 -233 448 -127 b 212 240 448 134 341 240 z m 212 220 b 363 160 271 220 324 197 b 281 180 341 173 312 180 b 0 -52 76 180 6 26 b -6 3 -4 -35 -6 -16 b 212 220 -6 122 92 220 z m 50 -92 b 42 -63 46 -84 42 -73 b 173 63 42 -33 73 7 b 317 120 243 105 288 120 b 369 89 344 120 359 107 b 377 62 374 81 377 72 b 248 -66 377 33 348 -1 b 108 -125 183 -109 138 -125 b 50 -92 78 -125 60 -109 z m 212 -215 b 84 -171 164 -215 120 -199 b 138 -180 101 -179 120 -180 b 422 56 372 -180 420 7 b 429 3 426 40 429 22 b 212 -215 429 -117 333 -215 z',\n },\n noteheadCircledBlack: {\n x_min: -21,\n x_max: 321,\n y_min: -171,\n y_max: 167,\n ha: 338,\n o: 'm 216 240 b -30 -3 82 240 -30 131 b 216 -246 -30 -137 82 -246 b 462 -3 351 -246 462 -137 b 216 240 462 131 351 240 z m 216 220 b 372 160 276 220 331 197 b 284 180 348 174 317 180 b 0 -59 127 180 0 65 l 0 -66 b -10 -3 -6 -45 -10 -24 b 216 220 -10 120 92 220 z m 216 -226 b 56 -158 153 -226 96 -200 b 140 -180 79 -171 107 -180 b 425 60 268 -180 425 -60 b 422 88 425 71 425 79 b 442 -3 435 60 442 29 b 216 -226 442 -125 341 -226 z',\n },\n noteheadDoubleWholeSquare: {\n x_min: 0,\n x_max: 416,\n y_min: -190,\n y_max: 198,\n ha: 388,\n o: 'm 563 217 b 528 180 563 192 544 180 l 62 180 b 36 215 52 180 36 192 l 36 268 b 17 285 36 278 27 285 b 0 268 7 285 0 278 l 0 -255 b 17 -274 0 -264 7 -274 b 36 -255 27 -274 36 -264 l 36 -213 b 66 -180 36 -197 53 -180 l 528 -180 b 563 -209 549 -180 563 -196 l 563 -255 b 580 -274 563 -264 570 -274 b 599 -255 590 -274 599 -264 l 599 268 b 580 285 599 278 590 285 b 563 268 570 285 563 278 z m 36 23 b 111 71 36 55 58 71 l 487 71 b 563 30 533 71 563 53 l 563 -22 b 487 -68 563 -53 533 -68 l 117 -68 b 36 -22 66 -68 36 -49 z',\n },\n noteheadSquareWhite: {\n x_min: 0,\n x_max: 313,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 451 -180 l 451 180 l 0 180 l 0 -180 z m 40 -138 l 40 140 l 410 140 l 410 -138 z',\n },\n noteheadSquareBlack: {\n x_min: 0,\n x_max: 313,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 451 -180 l 451 180 l 0 180 l 0 -180 z',\n },\n noteheadTriangleDownDoubleWhole: {\n x_min: 0,\n x_max: 483,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 696 213 b 681 223 696 219 690 223 l 662 223 b 648 213 655 223 648 219 l 648 -213 b 662 -223 648 -217 655 -223 l 681 -223 b 696 -213 690 -223 696 -217 z m 619 213 b 605 223 619 219 613 223 l 588 223 b 573 213 580 223 573 219 l 573 174 b 562 180 570 177 566 180 l 134 180 b 122 174 130 180 125 177 l 122 213 b 108 223 122 219 117 223 l 91 223 b 76 213 84 223 76 219 l 76 -213 b 91 -223 76 -217 84 -223 l 108 -223 b 122 -213 117 -223 122 -217 l 122 154 l 334 -173 b 346 -180 337 -177 341 -180 b 357 -173 351 -180 354 -177 l 573 154 l 573 -213 b 588 -223 573 -217 580 -223 l 605 -223 b 619 -213 613 -223 619 -217 z m 32 -223 b 46 -213 40 -223 46 -217 l 46 213 b 32 223 46 219 40 223 l 14 223 b 0 213 7 223 0 219 l 0 -213 b 14 -223 0 -217 7 -223 z m 428 98 b 346 -107 428 17 377 -53 b 265 96 315 -55 265 17 b 289 137 265 109 275 137 l 406 137 b 428 98 419 137 428 111 z',\n },\n noteheadTriangleDownWhole: {\n x_min: 0,\n x_max: 319,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 14 180 b 0 166 6 180 0 173 b 1 158 0 163 1 160 l 216 -173 b 228 -180 219 -177 225 -180 b 239 -173 233 -180 238 -177 l 458 158 b 459 166 458 160 459 163 b 445 180 459 173 454 180 z m 288 137 b 310 98 301 137 310 111 b 228 -108 310 17 259 -55 b 145 96 197 -56 145 17 b 170 137 145 109 157 137 z',\n },\n noteheadTriangleDownHalf: {\n x_min: 0,\n x_max: 285,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 196 -180 b 209 -173 200 -180 206 -177 l 408 157 b 410 166 409 160 410 163 b 396 180 410 173 403 180 l 14 180 b 0 166 4 180 0 173 b 1 158 0 163 0 161 l 183 -173 b 196 -180 184 -174 190 -180 z m 164 138 l 295 138 l 179 -76 l 114 37 z',\n },\n noteheadTriangleDownBlack: {\n x_min: 0,\n x_max: 292,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 207 -180 l 420 180 l 0 180 z',\n },\n noteheadTriangleUpDoubleWhole: {\n x_min: 0,\n x_max: 483,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 696 213 b 681 223 696 217 690 223 l 662 223 b 648 213 655 223 648 217 l 648 -213 b 662 -223 648 -219 655 -223 l 681 -223 b 696 -213 690 -223 696 -219 z m 619 213 b 605 223 619 217 613 223 l 588 223 b 573 213 580 223 573 217 l 573 -154 l 357 173 b 346 180 354 177 351 180 b 334 173 341 180 337 177 l 122 -154 l 122 213 b 108 223 122 217 117 223 l 91 223 b 76 213 84 223 76 217 l 76 -213 b 91 -223 76 -219 84 -223 l 108 -223 b 122 -213 117 -223 122 -219 l 122 -174 b 134 -180 125 -177 130 -180 l 562 -180 b 573 -174 566 -180 570 -177 l 573 -213 b 588 -223 573 -219 580 -223 l 605 -223 b 619 -213 613 -223 619 -219 z m 32 223 l 14 223 b 0 213 7 223 0 217 l 0 -213 b 14 -223 0 -219 7 -223 l 32 -223 b 46 -213 40 -223 46 -219 l 46 213 b 32 223 46 217 40 223 z m 428 -98 b 406 -137 428 -111 419 -137 l 289 -137 b 265 -96 275 -137 265 -109 b 346 107 265 -17 315 55 b 428 -98 377 53 428 -17 z',\n },\n noteheadTriangleUpWhole: {\n x_min: 0,\n x_max: 319,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 445 -180 b 459 -166 454 -180 459 -173 b 458 -158 459 -163 458 -160 l 239 173 b 228 180 238 177 233 180 b 216 173 225 180 219 177 l 1 -158 b 0 -166 1 -160 0 -163 b 14 -180 0 -173 6 -180 z m 170 -137 b 145 -96 157 -137 145 -109 b 228 108 145 -17 197 56 b 310 -98 259 55 310 -17 b 288 -137 310 -111 301 -137 z',\n },\n noteheadTriangleUpHalf: {\n x_min: 0,\n x_max: 285,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 215 180 b 202 173 210 180 204 177 l 3 -157 b 0 -166 1 -160 0 -163 b 14 -180 0 -173 7 -180 l 396 -180 b 410 -166 406 -180 410 -173 b 409 -158 410 -163 410 -161 l 228 173 b 215 180 226 174 220 180 z m 246 -138 l 115 -138 l 232 76 l 297 -37 z',\n },\n noteheadTriangleUpBlack: {\n x_min: 0,\n x_max: 293,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 422 -180 l 207 180 l 0 -180 z',\n },\n noteheadSlashedDoubleWhole1: {\n x_min: 0,\n x_max: 596,\n y_min: -179,\n y_max: 168,\n ha: 347,\n o: 'm 618 135 l 697 206 b 704 222 703 210 704 216 b 698 236 704 226 703 232 b 683 242 694 239 688 242 b 670 238 677 242 674 240 l 575 153 b 435 180 531 168 481 180 b 128 0 246 180 128 98 b 236 -148 128 -58 160 -114 l 153 -222 b 145 -238 148 -226 145 -232 b 151 -252 145 -242 148 -248 b 167 -258 156 -256 161 -258 b 181 -253 171 -258 177 -256 l 282 -164 b 420 -180 320 -173 366 -180 b 729 0 654 -180 729 -98 b 618 135 729 55 681 104 z m 114 223 l 95 223 b 82 212 88 223 82 217 l 82 -215 b 95 -223 82 -219 88 -223 l 114 -223 b 127 -215 121 -223 127 -219 l 127 212 b 114 223 127 217 121 223 z m 32 223 l 13 223 b 0 212 6 223 0 217 l 0 -215 b 13 -223 0 -219 6 -223 l 32 -223 b 45 -215 39 -223 45 -219 l 45 212 b 32 223 45 217 39 223 z m 844 223 l 825 223 b 811 212 819 223 811 217 l 811 -215 b 825 -223 811 -219 819 -223 l 844 -223 b 858 -215 851 -223 858 -219 l 858 212 b 844 223 858 217 851 223 z m 763 223 l 743 223 b 730 212 736 223 730 217 l 730 -215 b 743 -223 730 -219 736 -223 l 763 -223 b 776 -215 769 -223 776 -219 l 776 212 b 763 223 776 217 769 223 z m 282 56 b 285 89 282 68 284 79 b 399 144 301 137 354 144 b 510 95 441 144 480 124 l 327 -68 b 282 56 301 -35 282 13 z m 572 -72 b 508 -141 564 -108 544 -132 b 467 -147 495 -145 481 -147 b 360 -104 428 -147 389 -128 l 356 -98 l 537 63 b 575 -46 560 30 575 -9 b 572 -72 575 -55 573 -65 z',\n },\n noteheadSlashedWhole1: {\n x_min: -22,\n x_max: 433,\n y_min: -157,\n y_max: 148,\n ha: 305,\n o: 'm 484 140 b 308 180 431 166 367 180 b 0 1 118 180 0 99 b 73 -128 0 -48 22 -95 l -22 -190 b -32 -206 -27 -194 -32 -200 b -27 -217 -32 -210 -30 -215 b -12 -226 -23 -223 -17 -226 b 0 -223 -7 -226 -4 -225 l 112 -150 b 294 -180 157 -168 217 -180 b 602 1 526 -180 602 -98 b 523 118 602 48 570 86 l 613 177 b 624 193 619 181 624 187 b 619 204 624 197 622 200 b 603 213 615 209 609 213 b 592 209 599 213 596 212 z m 190 -52 b 154 56 170 -20 154 19 b 160 91 154 68 156 79 b 271 147 174 138 226 147 b 396 82 321 147 364 121 z m 419 50 b 446 -48 436 19 446 -14 b 337 -147 446 -120 402 -147 b 301 -141 327 -147 314 -144 b 235 -104 276 -134 253 -120 b 215 -84 226 -98 220 -91 z',\n },\n noteheadSlashedHalf1: {\n x_min: -67,\n x_max: 386,\n y_min: -142,\n y_max: 160,\n ha: 302,\n o: 'm 552 222 b 536 230 549 228 543 230 b 524 228 533 230 528 230 l 389 140 b 281 180 364 164 327 180 b 0 -60 65 180 0 13 b 7 -105 0 -78 3 -92 l -88 -167 b -96 -184 -94 -171 -96 -177 b -94 -194 -96 -187 -95 -192 b -76 -204 -89 -202 -84 -204 b -66 -202 -73 -204 -69 -203 l 29 -140 b 137 -180 55 -167 92 -180 b 420 59 374 -180 420 13 b 412 107 420 76 419 92 l 546 194 b 556 210 552 197 556 204 b 552 222 556 213 554 217 z m 315 120 b 347 112 328 120 338 117 l 46 -82 b 42 -63 43 -76 42 -69 b 315 120 42 6 248 120 z m 108 -124 b 69 -114 91 -124 79 -120 l 372 81 b 376 63 374 75 376 69 b 108 -124 376 0 174 -124 z',\n },\n noteheadSlashedBlack1: {\n x_min: -80,\n x_max: 375,\n y_min: -165,\n y_max: 167,\n ha: 332,\n o: 'm 518 240 b 507 236 514 240 510 239 l 384 148 b 284 180 359 168 324 180 b 0 -62 127 180 0 63 b 13 -115 0 -82 4 -99 l -107 -202 b -115 -217 -111 -204 -115 -212 b -111 -229 -115 -222 -114 -225 b -95 -238 -108 -235 -101 -238 b -84 -235 -91 -238 -86 -236 l 39 -148 b 140 -180 63 -170 99 -180 b 425 59 268 -180 425 -62 b 410 117 425 81 420 101 l 530 203 b 540 219 536 207 540 213 b 518 240 540 229 528 240 z',\n },\n noteheadSlashedDoubleWhole2: {\n x_min: 0,\n x_max: 596,\n y_min: -178,\n y_max: 169,\n ha: 347,\n o: 'm 729 0 b 435 180 729 102 569 180 b 278 156 374 180 321 170 l 184 239 b 170 243 181 242 176 243 b 154 238 166 243 158 240 b 150 223 151 233 150 228 b 156 207 150 217 153 212 l 233 138 b 128 0 167 107 128 56 b 420 -180 128 -94 210 -180 b 575 -164 482 -180 533 -174 l 672 -252 b 687 -256 677 -255 681 -256 b 703 -251 691 -256 698 -255 b 707 -236 706 -246 707 -240 b 701 -220 707 -230 706 -225 l 619 -150 b 729 0 700 -117 729 -62 z m 114 223 l 95 223 b 82 213 88 223 82 217 l 82 -213 b 95 -223 82 -219 88 -223 l 114 -223 b 127 -213 121 -223 127 -219 l 127 213 b 114 223 127 217 121 223 z m 32 223 l 13 223 b 0 213 6 223 0 217 l 0 -213 b 13 -223 0 -219 6 -223 l 32 -223 b 45 -213 39 -223 45 -219 l 45 213 b 32 223 45 217 39 223 z m 844 223 l 825 223 b 811 213 819 223 811 217 l 811 -213 b 825 -223 811 -219 819 -223 l 844 -223 b 858 -213 851 -223 858 -219 l 858 213 b 844 223 858 217 851 223 z m 763 223 l 743 223 b 730 213 736 223 730 217 l 730 -213 b 743 -223 730 -219 736 -223 l 763 -223 b 776 -213 769 -223 776 -219 l 776 213 b 763 223 776 217 769 223 z m 312 124 b 399 144 336 141 369 144 b 575 -46 495 144 575 40 b 563 -98 575 -65 570 -81 z m 508 -141 b 467 -147 495 -145 481 -147 b 360 -104 428 -147 389 -128 b 330 -72 350 -95 340 -82 b 282 56 304 -37 282 10 b 285 89 282 68 284 79 b 536 -130 287 89 304 75 z',\n },\n noteheadSlashedWhole2: {\n x_min: -18,\n x_max: 436,\n y_min: -154,\n y_max: 151,\n ha: 305,\n o: 'm 531 -128 b 602 1 582 -96 602 -49 b 308 180 602 104 441 180 b 114 144 230 180 164 166 l 4 215 b -6 217 1 217 -3 217 b -22 209 -13 217 -19 215 b -26 197 -24 204 -26 200 b -16 181 -26 192 -22 184 l 75 121 b 0 1 27 91 0 49 b 294 -180 0 -94 82 -180 b 491 -150 379 -180 444 -168 l 598 -219 b 608 -222 600 -222 605 -222 b 624 -213 615 -222 621 -219 b 628 -202 626 -209 628 -206 b 618 -186 628 -196 624 -189 z m 168 108 b 271 147 190 141 233 147 b 446 -48 369 147 446 40 b 445 -72 446 -56 446 -63 z m 154 69 l 429 -109 b 382 -141 419 -125 402 -135 b 337 -147 367 -144 351 -147 b 301 -141 327 -147 314 -144 b 235 -104 276 -134 253 -120 b 203 -72 223 -94 213 -82 b 154 58 177 -39 154 12 z',\n },\n noteheadSlashedHalf2: {\n x_min: -73,\n x_max: 380,\n y_min: -134,\n y_max: 168,\n ha: 302,\n o: 'm 537 -156 l 383 -58 b 422 60 413 -9 422 39 b 281 180 422 134 364 180 b 101 127 203 180 144 157 l -75 239 b -85 242 -78 242 -82 242 b -102 233 -92 242 -98 239 b -105 222 -104 229 -105 225 b -95 206 -105 216 -102 209 l 69 99 b 0 -59 19 46 0 -20 b 138 -180 0 -135 60 -180 b 359 -88 248 -180 317 -138 l 516 -190 b 527 -193 520 -192 524 -193 b 543 -183 534 -193 540 -190 b 547 -173 546 -180 547 -176 b 537 -156 547 -166 543 -160 z m 367 92 b 377 63 374 82 377 73 b 318 -14 377 43 361 20 l 184 72 b 317 121 248 108 289 121 b 367 92 344 121 357 109 z m 248 -66 b 108 -124 181 -108 138 -124 b 50 -92 78 -124 60 -109 b 42 -63 46 -84 42 -73 b 145 49 42 -35 68 0 l 285 -40 b 248 -66 274 -49 261 -56 z',\n },\n noteheadSlashedBlack2: {\n x_min: -79,\n x_max: 376,\n y_min: -164,\n y_max: 168,\n ha: 332,\n o: 'm 531 -200 l 363 -78 b 425 59 402 -37 425 10 b 285 180 425 132 367 180 b 92 114 210 180 144 154 l -81 238 b -94 242 -85 240 -89 242 b -111 232 -99 242 -107 238 b -114 220 -112 229 -114 225 b -105 204 -114 215 -111 207 l 62 85 b 0 -62 23 43 0 -9 b 140 -180 0 -137 62 -180 b 331 -108 204 -180 275 -153 l 507 -233 b 520 -236 511 -236 517 -236 b 537 -228 527 -236 533 -233 b 541 -216 540 -225 541 -220 b 531 -200 541 -210 537 -203 z',\n },\n noteheadDiamondDoubleWhole: {\n x_min: 0,\n x_max: 432,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 592 223 b 580 215 585 223 580 219 l 580 -215 b 592 -223 580 -219 585 -223 l 608 -223 b 622 -215 615 -223 622 -219 l 622 215 b 608 223 622 219 615 223 z m 517 223 b 504 215 510 223 504 219 l 504 -215 b 517 -223 504 -219 510 -223 l 533 -223 b 544 -215 540 -223 544 -219 l 544 215 b 533 223 544 219 540 223 z m 246 179 b 240 180 243 179 242 180 b 232 176 236 180 233 179 l 118 22 b 117 17 117 20 117 19 l 117 215 b 104 223 117 219 111 223 l 88 223 b 75 215 81 223 75 219 l 75 -215 b 88 -223 75 -219 81 -223 l 104 -223 b 117 -215 111 -223 117 -219 l 117 14 l 118 14 b 122 7 118 12 120 10 l 374 -179 b 382 -180 376 -180 379 -180 b 390 -177 384 -180 387 -180 l 503 -23 l 503 -17 b 500 -9 503 -13 503 -10 z m 12 223 b 0 215 4 223 0 219 l 0 -215 b 12 -223 0 -219 4 -223 l 29 -223 b 40 -215 36 -223 40 -219 l 40 215 b 29 223 40 219 36 223 z m 183 39 b 179 46 181 39 179 43 b 229 112 226 112 228 112 b 236 109 229 112 233 111 l 436 -39 b 439 -46 438 -39 439 -42 b 390 -112 393 -111 392 -112 b 383 -109 389 -112 386 -111 z',\n },\n noteheadDiamondWhole: {\n x_min: 0,\n x_max: 270,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 386 -23 b 389 -16 387 -20 389 -19 b 383 -7 389 -13 386 -9 l 130 179 b 122 180 128 180 125 180 b 115 177 120 180 117 180 l 3 23 b 0 17 1 20 0 19 b 4 7 0 16 3 10 l 258 -179 b 264 -180 261 -179 262 -180 b 272 -176 268 -180 271 -179 z m 66 40 b 62 48 65 42 62 45 l 109 111 b 112 112 109 112 111 112 b 118 111 115 112 117 111 l 320 -37 b 324 -46 323 -39 324 -42 b 275 -111 278 -111 276 -111 b 268 -108 272 -111 271 -109 z',\n },\n noteheadDiamondHalf: {\n x_min: 0,\n x_max: 251,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 359 -7 b 361 0 360 -6 361 -3 b 359 7 361 3 360 4 l 189 177 b 180 180 186 179 183 180 b 174 177 179 180 176 179 l 4 7 b 0 0 1 4 0 3 b 4 -7 0 -3 1 -6 l 174 -177 b 180 -180 176 -180 179 -180 b 189 -177 183 -180 186 -180 z m 266 26 b 138 -71 266 -12 176 -71 b 96 -50 121 -71 108 -63 b 88 -24 89 -43 88 -32 b 215 73 88 13 177 73 b 266 26 238 73 266 50 z',\n },\n noteheadDiamondBlack: {\n x_min: 0,\n x_max: 250,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 357 -6 b 360 1 359 -4 360 -1 b 357 9 360 4 359 7 l 189 177 b 180 180 187 179 184 180 b 171 177 177 180 173 179 l 3 9 b 0 1 0 6 0 4 b 4 -7 0 -1 1 -4 l 173 -177 b 180 -180 176 -180 177 -180 b 187 -177 181 -180 184 -180 z',\n },\n noteheadParenthesis: {\n x_min: -73,\n x_max: 368,\n y_min: -180,\n y_max: 182,\n ha: 362,\n o: 'm 52 -249 b -30 -144 3 -212 -14 -190 b -52 4 -45 -102 -52 -56 b 52 252 -52 118 -36 179 l 46 262 b -105 3 -49 197 -105 124 b 45 -259 -105 -109 -48 -200 z m 382 -259 b 530 3 474 -202 530 -108 b 379 262 530 122 474 200 l 373 252 b 478 4 462 180 478 118 b 456 -144 478 -56 471 -102 b 373 -249 439 -190 422 -212 z',\n },\n noteheadParenthesisRight: {\n x_min: -36,\n x_max: 73,\n y_min: -181,\n y_max: 181,\n ha: 362,\n o: 'm -43 -261 b 105 1 49 -203 105 -109 b -46 261 105 121 49 199 l -52 251 b 53 3 37 179 53 117 b 32 -145 53 -58 46 -104 b -52 -251 14 -192 -3 -213 z',\n },\n noteheadParenthesisLeft: {\n x_min: 0,\n x_max: 109,\n y_min: -181,\n y_max: 181,\n ha: 362,\n o: 'm 157 -251 b 75 -145 108 -213 91 -192 b 53 3 60 -104 53 -58 b 157 251 53 117 69 177 l 151 261 b 0 1 56 196 0 122 b 150 -261 0 -111 58 -202 z',\n },\n noteheadMoonBlack: {\n x_min: 0,\n x_max: 315,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 228 -180 b 454 0 343 -180 454 -130 l 454 180 l 0 180 l 0 0 b 228 -180 0 -131 112 -180 z',\n },\n noteheadTriangleLeftBlack: {\n x_min: 0,\n x_max: 339,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 488 -180 l 0 180 l 0 -180 z',\n },\n noteheadTriangleRightBlack: {\n x_min: 0,\n x_max: 339,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 488 180 l 0 -180 l 488 -180 z',\n },\n noteheadTriangleRoundDownBlack: {\n x_min: 0,\n x_max: 278,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 200 -180 l 400 112 l 383 124 b 199 180 327 161 264 180 b 16 124 135 180 73 161 l 0 112 z',\n },\n augmentationDot: {\n x_min: 0,\n x_max: 100,\n y_min: -50,\n y_max: 50,\n ha: 100,\n o: 'm 144 0 b 72 72 144 40 112 72 b 0 0 32 72 0 40 b 72 -72 0 -40 32 -72 b 144 0 112 -72 144 -40 z',\n },\n tremolo1: {\n x_min: -150,\n x_max: 150,\n y_min: -93,\n y_max: 94,\n ha: 187,\n o: 'm 216 -45 l 216 135 l -216 46 l -216 -134 z',\n },\n flag8thUp: {\n x_min: 0,\n x_max: 264,\n y_min: -810.1921176545985,\n y_max: 9,\n ha: 819.1921176545985,\n o: 'm 343 -1138 b 380 -888 343 -1138 380 -1001 b 215 -395 380 -708 305 -539 b 58 -19 141 -281 81 -157 b 27 13 53 4 42 13 b 0 -9 12 13 0 9 l 0 -353 b 284 -688 95 -370 232 -566 b 318 -904 305 -737 318 -819 b 284 -1102 318 -969 308 -1037 b 279 -1123 281 -1110 279 -1117 b 302 -1165 279 -1146 294 -1159 b 343 -1138 311 -1171 336 -1162 z',\n },\n flag8thDown: {\n x_min: 0,\n x_max: 306,\n y_min: -14,\n y_max: 808,\n ha: 822,\n o: 'm 346 1094 b 376 897 366 1034 376 962 b 318 642 376 812 340 691 b 0 340 265 521 193 405 l 0 1 b 23 -20 0 -13 12 -20 b 58 12 36 -20 55 -12 b 262 387 82 148 189 274 b 441 881 353 530 441 701 b 400 1142 441 994 412 1096 b 377 1164 396 1158 387 1164 b 346 1094 356 1164 331 1136 z',\n },\n flag16thUp: {\n x_min: 0,\n x_max: 279,\n y_min: -813,\n y_max: 2,\n ha: 815,\n o: 'm 392 -1146 b 402 -988 397 -1139 402 -1057 l 402 -956 b 360 -783 402 -896 386 -837 b 359 -770 360 -779 359 -776 b 360 -760 359 -768 359 -765 b 396 -577 364 -752 396 -665 b 392 -526 396 -559 395 -543 b 236 -275 377 -428 340 -387 b 53 -16 158 -192 78 -168 b 24 3 50 0 33 3 b 0 -12 16 3 0 -1 l 0 -570 l 7 -570 b 298 -778 96 -573 199 -576 b 344 -992 331 -847 344 -917 b 333 -1120 344 -1034 340 -1077 b 331 -1133 331 -1126 331 -1129 b 363 -1171 331 -1152 343 -1171 b 392 -1146 373 -1171 383 -1165 z m 301 -661 b 223 -562 278 -625 253 -596 b 59 -331 156 -484 89 -449 b 58 -327 58 -330 58 -328 b 78 -312 58 -321 66 -312 l 89 -312 b 302 -464 177 -312 255 -393 b 341 -592 328 -501 341 -546 b 340 -621 341 -602 341 -611 b 330 -658 337 -632 337 -647 b 311 -667 328 -662 318 -667 b 301 -661 307 -667 304 -665 z',\n },\n flag16thDown: {\n x_min: 0,\n x_max: 290.8951581511223,\n y_min: -9,\n y_max: 812.0064,\n ha: 821.0064,\n o: 'm 346 1132 b 312 768 367 1011 367 880 b 7 559 213 566 96 562 l 0 559 l 0 1 b 24 -13 0 -6 10 -13 b 53 6 35 -13 50 -10 b 406 516 88 228 372 289 b 410 567 409 531 410 549 b 374 750 410 655 379 742 b 373 760 373 753 373 756 b 374 773 373 766 374 769 b 405 1138 426 881 428 1022 b 370 1169 397 1171 387 1169 b 346 1132 353 1168 341 1156 z m 325 657 b 344 647 333 657 343 652 b 354 611 351 636 351 622 b 356 582 356 600 356 590 b 317 454 356 534 343 491 b 89 302 269 383 177 302 l 78 302 b 58 317 66 302 58 310 b 59 321 58 318 58 320 b 238 552 89 439 170 472 b 315 651 268 585 292 613 b 325 657 318 655 321 657 z',\n },\n flag32ndUp: {\n x_min: 0,\n x_max: 261,\n y_min: -812,\n y_max: 149,\n ha: 961,\n o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 366 -289 369 -315 369 -302 b 220 -58 350 -202 317 -163 b 46 187 148 20 71 43 b 20 215 45 200 35 215 b 0 197 12 215 0 207 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 56 -390 147 -527 88 -495 b 73 -367 53 -380 60 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z',\n },\n flag32ndDown: {\n x_min: 0,\n x_max: 273,\n y_min: -172,\n y_max: 812,\n ha: 984,\n o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -229 b 20 -248 0 -242 9 -248 b 48 -219 35 -248 46 -232 b 229 36 72 -69 154 -46 b 380 278 330 145 364 186 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z',\n },\n flag64thUp: {\n x_min: 0,\n x_max: 261,\n y_min: -812,\n y_max: 347,\n ha: 1159,\n o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 220 228 350 84 317 122 b 46 472 148 305 71 328 b 20 500 45 485 32 500 b 0 482 10 500 0 492 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 24 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 58 187 148 20 82 43 b 56 193 58 189 58 192 b 300 24 138 193 220 157 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 b 73 -367 52 -376 63 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z',\n },\n flag64thDown: {\n x_min: 0,\n x_max: 273,\n y_min: -376,\n y_max: 812,\n ha: 1188,\n o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -523 b 20 -541 0 -534 9 -541 b 48 -513 35 -541 46 -526 b 229 -258 72 -363 154 -340 b 380 -16 330 -148 364 -108 b 384 27 383 -1 384 13 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z m 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 b 229 36 75 -86 145 -55 b 311 128 264 73 289 102 z',\n },\n flag128thUp: {\n x_min: 0,\n x_max: 261,\n y_min: -812,\n y_max: 533,\n ha: 1345,\n o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 341 75 360 26 353 50 b 369 222 354 111 369 167 b 366 264 369 236 369 251 b 220 495 350 351 317 390 b 46 740 148 573 71 596 b 22 768 45 753 35 768 b 0 750 10 768 0 760 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 292 b 321 223 315 264 321 242 b 317 193 321 212 318 203 b 301 135 314 180 308 158 b 220 228 281 161 255 190 b 55 461 151 304 79 327 b 300 292 134 461 220 426 z m 300 24 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 56 187 148 20 81 43 b 55 193 56 189 56 192 b 300 24 137 193 220 157 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 b 73 -367 53 -376 62 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z',\n },\n flag128thDown: {\n x_min: 0,\n x_max: 273,\n y_min: -580,\n y_max: 812,\n ha: 1392,\n o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -816 b 20 -835 0 -828 7 -835 b 48 -806 33 -835 46 -819 b 229 -552 72 -657 154 -634 b 380 -310 330 -442 364 -402 b 384 -266 383 -295 384 -281 b 351 -105 384 -206 366 -143 b 384 27 372 -66 384 -16 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z m 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 b 229 36 75 -86 145 -55 b 311 128 264 73 289 102 z m 330 -238 b 334 -268 331 -248 334 -256 b 311 -340 334 -287 328 -310 b 56 -516 229 -478 137 -516 b 229 -258 75 -380 145 -348 b 311 -166 264 -220 289 -192 z',\n },\n accidentalFlat: {\n x_min: 0,\n x_max: 226,\n y_min: -175,\n y_max: 439,\n ha: 614,\n o: 'm 17 -245 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 82 -225 117 -186 b 325 82 281 -72 325 16 b 196 220 325 164 262 216 b 117 196 171 220 137 209 b 85 176 108 189 92 176 b 78 177 82 176 81 176 b 62 202 68 181 62 192 b 72 608 63 233 72 579 b 45 632 72 624 59 632 b 0 592 24 632 1 618 b 17 -245 0 592 6 -230 z m 68 -117 b 63 27 68 -117 63 -30 b 66 73 63 50 65 68 b 167 144 76 102 134 144 b 226 60 209 144 226 96 b 98 -134 226 -17 160 -95 b 84 -138 92 -137 88 -138 b 68 -117 71 -138 68 -124 z',\n },\n accidentalNatural: {\n x_min: 0,\n x_max: 168,\n y_min: -335,\n y_max: 341,\n ha: 676,\n o: 'm 203 261 b 197 259 200 261 199 259 b 68 226 197 259 105 226 b 53 233 59 226 53 228 l 53 474 b 36 491 53 484 45 491 l 17 491 b 0 474 7 491 0 484 l 0 -268 b 13 -281 0 -276 4 -281 l 16 -279 b 22 -278 17 -279 20 -279 b 164 -235 42 -269 122 -235 b 189 -251 179 -235 189 -239 l 189 -465 b 206 -482 189 -475 196 -482 l 225 -482 b 242 -465 233 -482 242 -475 l 242 258 b 230 269 242 265 236 269 b 225 268 229 269 226 269 z m 53 56 b 176 114 53 76 141 114 b 189 107 184 114 189 112 l 189 -42 b 71 -101 189 -68 107 -101 b 53 -92 60 -101 53 -98 z',\n },\n accidentalSharp: {\n x_min: 0,\n x_max: 249,\n y_min: -348,\n y_max: 350,\n ha: 698,\n o: 'm 341 170 b 359 194 351 174 359 186 l 359 297 b 348 308 359 304 354 308 b 341 307 346 308 344 308 b 305 294 341 307 312 295 b 285 312 295 294 285 301 l 285 488 b 265 504 285 497 276 504 b 242 488 251 504 242 497 l 242 301 b 223 259 240 287 236 268 b 132 223 206 249 157 229 b 115 252 120 223 115 240 l 115 425 b 95 441 115 433 105 441 b 72 425 81 441 72 433 l 72 230 b 55 192 72 210 63 196 b 17 176 46 187 17 176 b 0 153 7 173 0 161 l 0 50 b 13 37 0 42 4 37 l 16 39 b 50 53 17 39 39 48 l 52 55 b 72 29 63 55 72 40 l 72 -114 b 56 -147 72 -130 65 -143 b 17 -163 48 -150 17 -163 b 0 -186 7 -166 0 -177 l 0 -288 b 13 -301 0 -297 4 -301 l 16 -300 b 50 -287 17 -300 37 -291 b 55 -285 52 -285 53 -285 b 72 -308 65 -285 72 -301 l 72 -485 b 91 -501 72 -494 81 -501 b 115 -485 105 -501 115 -494 l 115 -285 b 130 -253 115 -266 122 -256 l 217 -217 b 219 -217 217 -217 219 -217 l 222 -216 b 242 -242 235 -216 242 -233 l 242 -422 b 261 -438 242 -431 251 -438 b 285 -422 276 -438 285 -431 l 285 -217 b 301 -184 285 -206 291 -189 b 341 -168 311 -180 341 -168 b 359 -144 351 -164 359 -153 l 359 -42 b 348 -30 359 -35 354 -30 b 341 -32 346 -30 344 -30 l 304 -46 b 285 -20 295 -46 285 -37 l 285 114 b 304 156 285 124 292 151 z m 242 -65 b 132 -122 233 -94 166 -122 b 115 -115 124 -122 117 -120 b 111 -43 112 -109 111 -78 b 115 63 111 1 112 52 b 220 118 118 88 184 118 b 242 109 230 118 239 115 b 248 27 245 102 248 66 b 242 -65 248 -12 245 -52 z',\n },\n accidentalDoubleSharp: {\n x_min: 0,\n x_max: 247,\n y_min: -125,\n y_max: 127,\n ha: 252,\n o: 'm 274 -46 b 206 1 258 -37 206 -9 b 274 50 206 22 253 43 b 278 50 275 50 276 50 l 287 49 b 346 63 304 49 331 52 b 356 115 353 71 356 92 b 292 183 356 174 351 183 b 233 173 266 183 240 180 b 226 117 228 168 226 143 b 179 49 219 101 196 49 b 130 117 158 49 135 96 b 118 173 130 141 125 167 b 66 183 112 180 89 183 b 7 173 42 183 16 180 b 0 120 3 170 0 145 b 7 63 0 94 3 68 b 68 49 17 55 43 49 b 82 50 73 49 78 50 b 150 3 98 42 150 13 b 84 -46 150 -16 104 -39 l 69 -46 b 7 -56 43 -46 16 -49 b 0 -111 3 -60 0 -85 b 7 -166 0 -137 3 -163 b 65 -180 17 -174 40 -180 b 118 -166 86 -180 109 -176 b 130 -111 127 -158 130 -134 b 132 -105 130 -109 131 -107 b 177 -45 141 -85 158 -45 b 226 -111 196 -45 220 -91 b 233 -166 226 -137 228 -161 b 291 -180 243 -174 266 -180 b 356 -114 346 -180 356 -166 b 346 -56 356 -89 351 -63 b 288 -46 338 -49 312 -46 z',\n },\n accidentalDoubleFlat: {\n x_min: 0,\n x_max: 411,\n y_min: -175,\n y_max: 437,\n ha: 612,\n o: 'm 452 217 b 384 194 426 217 408 207 b 350 176 374 189 363 176 b 343 177 347 176 344 176 b 328 202 333 180 328 190 b 337 606 328 232 337 579 b 310 629 337 622 324 629 b 265 592 291 629 268 616 b 269 194 265 592 266 395 b 196 217 248 209 223 217 l 187 217 b 120 194 160 217 143 207 b 85 176 108 189 98 176 b 78 177 82 176 81 176 b 62 202 68 180 62 190 b 72 606 62 232 72 579 b 45 629 72 622 59 629 b 0 592 24 629 1 616 b 17 -245 0 592 7 -232 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 84 -226 120 -186 b 274 -50 206 -124 246 -85 b 284 -245 276 -158 279 -240 b 295 -252 288 -251 292 -252 b 304 -249 300 -252 304 -249 b 416 -163 348 -226 383 -186 b 592 82 546 -72 592 16 b 461 217 592 163 528 216 z m 96 -134 b 84 -138 92 -137 86 -138 b 68 -115 72 -138 68 -124 b 63 26 68 -115 63 -30 b 66 72 63 49 65 66 b 168 144 75 101 134 144 b 226 59 212 144 226 95 b 96 -134 226 -22 161 -94 z m 361 -134 b 348 -138 356 -137 351 -138 b 333 -115 337 -138 333 -124 b 328 39 333 -115 328 -16 b 330 72 328 55 328 68 b 433 144 338 101 399 144 b 468 130 448 144 459 140 b 490 59 481 112 490 88 b 361 -134 490 -22 426 -94 z',\n },\n accidentalParensLeft: {\n x_min: 0,\n x_max: 141,\n y_min: -248,\n y_max: 247,\n ha: 495,\n o: 'm 203 331 l 203 351 b 202 356 203 354 203 356 b 0 0 60 281 0 140 b 199 -357 0 -144 60 -269 b 203 -354 200 -357 203 -356 l 203 -333 b 200 -327 203 -330 202 -328 b 86 0 118 -253 86 -160 b 200 324 86 158 120 251 b 203 331 202 325 203 327 z',\n },\n accidentalParensRight: {\n x_min: 0,\n x_max: 141,\n y_min: -248,\n y_max: 247,\n ha: 495,\n o: 'm 0 331 b 3 324 0 327 1 325 b 117 0 84 251 117 158 b 3 -327 117 -160 85 -253 b 0 -333 1 -328 0 -330 l 0 -354 b 4 -357 0 -356 3 -357 b 203 0 143 -269 203 -144 b 1 356 203 140 143 281 b 0 351 0 356 0 354 z',\n },\n accidentalQuarterToneFlatStein: {\n x_min: 1,\n x_max: 227,\n y_min: -175,\n y_max: 439,\n ha: 614,\n o: 'm 310 -245 b 327 592 321 -230 327 592 b 282 632 325 618 302 632 b 255 608 268 632 255 624 b 265 202 255 579 264 233 b 249 177 265 192 259 181 b 242 176 246 176 245 176 b 210 196 235 176 219 189 b 131 220 190 209 156 220 b 1 85 65 216 1 164 b 174 -161 1 16 46 -72 b 288 -249 210 -186 245 -225 b 297 -252 288 -249 292 -252 b 310 -245 301 -252 305 -251 z m 259 -117 b 243 -138 259 -124 256 -138 b 229 -134 239 -138 235 -137 b 101 60 167 -95 101 -17 b 160 144 101 96 118 144 b 261 73 193 144 251 102 b 264 27 262 68 264 50 b 259 -117 264 -30 259 -117 z',\n },\n accidentalThreeQuarterTonesFlatZimmermann: {\n x_min: 1,\n x_max: 466,\n y_min: -175,\n y_max: 439,\n ha: 614,\n o: 'm 363 -245 b 376 -252 367 -251 372 -252 b 384 -249 380 -252 384 -249 b 497 -161 428 -226 464 -186 b 671 84 625 -72 671 16 b 541 220 671 164 606 217 b 513 217 531 220 523 219 b 464 196 495 212 480 206 b 431 176 452 189 442 176 b 423 177 428 176 426 176 b 408 202 413 180 408 190 l 419 608 b 392 632 419 625 406 632 b 346 592 372 632 347 618 b 363 -245 346 592 351 -230 z m 289 -249 b 297 -252 289 -249 292 -252 b 310 -245 300 -252 305 -251 b 328 592 321 -230 328 592 b 282 631 327 618 302 631 b 255 608 268 631 255 624 l 266 202 b 251 177 266 190 261 180 b 243 176 248 176 246 176 b 210 196 232 176 222 189 b 164 216 196 204 180 210 l 163 217 b 132 220 151 219 143 220 b 1 84 65 217 1 163 b 177 -163 1 16 48 -72 b 289 -249 210 -186 245 -226 z m 262 72 b 265 26 264 66 265 49 b 261 -115 265 -30 261 -115 b 245 -138 261 -124 258 -138 b 230 -134 240 -138 236 -137 b 102 60 166 -92 102 -20 b 124 128 102 88 111 112 b 161 144 134 138 147 144 b 199 134 173 144 184 141 b 262 72 219 122 256 92 z m 413 -115 b 409 26 413 -115 409 -30 b 412 72 409 49 410 66 b 514 144 420 102 480 144 b 570 60 557 144 570 96 b 442 -134 570 -23 508 -91 b 429 -138 436 -137 433 -138 b 413 -115 418 -138 413 -124 z',\n },\n accidentalQuarterToneSharpStein: {\n x_min: 0,\n x_max: 179,\n y_min: -353,\n y_max: 307,\n ha: 660,\n o: 'm 258 240 b 246 252 258 248 252 252 b 240 251 245 252 242 252 b 168 225 240 251 171 225 b 150 253 156 225 150 240 l 150 426 b 130 442 150 435 141 442 b 105 418 108 442 105 429 l 105 230 b 91 193 105 219 101 202 b 17 161 65 183 42 171 b 0 138 9 158 0 147 l 0 36 b 13 23 0 27 4 23 l 16 24 b 86 53 17 24 73 49 l 88 55 b 107 30 98 55 107 42 l 107 -114 b 92 -145 107 -130 101 -143 l 17 -177 b 0 -200 9 -180 0 -192 l 0 -302 b 13 -315 0 -311 4 -315 l 16 -314 b 85 -285 17 -314 72 -291 b 105 -312 92 -282 105 -301 l 105 -492 b 125 -508 105 -501 114 -508 b 150 -484 147 -508 150 -498 l 150 -285 b 151 -274 150 -281 150 -278 b 164 -253 153 -265 158 -256 b 240 -225 176 -251 240 -225 b 258 -202 249 -222 258 -210 l 258 -99 b 245 -86 258 -91 253 -86 l 242 -88 b 240 -88 242 -88 240 -88 l 240 -86 b 168 -115 240 -86 174 -114 b 148 -91 158 -115 148 -107 l 148 43 b 167 85 148 55 156 81 b 240 114 180 91 240 114 b 258 138 249 118 258 128 z',\n },\n accidentalThreeQuarterTonesSharpStein: {\n x_min: 3,\n x_max: 317,\n y_min: -347,\n y_max: 369,\n ha: 716,\n o: 'm 456 324 b 448 336 456 330 454 336 b 393 317 445 336 400 320 b 389 315 392 315 390 315 b 383 325 386 315 383 318 l 383 508 b 360 531 383 528 379 531 b 337 508 341 531 337 527 l 337 318 b 325 291 337 300 334 294 b 268 268 320 288 287 276 b 253 281 256 268 253 274 l 253 464 b 230 487 253 484 249 487 b 207 464 212 487 207 482 l 207 264 b 194 240 207 253 204 245 l 132 217 b 131 217 132 217 132 217 l 130 216 b 118 229 122 216 118 220 l 118 420 b 95 444 118 439 114 444 b 72 420 76 444 72 439 l 72 212 b 60 190 72 197 68 193 l 16 173 b 4 161 9 170 4 167 l 4 50 b 13 39 4 45 9 39 b 58 55 16 39 46 49 b 63 56 60 56 62 56 b 72 42 71 56 72 50 l 72 -125 b 58 -150 72 -137 65 -147 l 16 -166 b 4 -177 9 -168 4 -171 l 4 -289 b 14 -301 4 -295 9 -301 b 53 -287 16 -301 40 -291 b 62 -285 56 -285 59 -285 b 72 -298 69 -285 72 -289 l 72 -477 b 95 -500 72 -495 76 -500 b 118 -477 114 -500 118 -495 l 118 -278 b 127 -259 118 -269 121 -261 l 196 -232 b 207 -243 204 -232 207 -235 l 207 -432 b 230 -455 207 -452 212 -455 b 253 -432 249 -455 253 -451 l 253 -228 b 268 -204 253 -216 259 -207 l 320 -186 b 328 -183 323 -184 325 -183 b 337 -194 334 -183 337 -187 l 337 -387 b 360 -410 337 -408 341 -410 b 383 -387 379 -410 383 -406 l 383 -174 b 395 -157 383 -166 390 -158 l 445 -138 b 456 -127 452 -135 456 -132 l 456 -14 b 448 -3 456 -10 454 -3 b 397 -22 445 -3 408 -17 l 396 -23 b 383 -6 387 -23 383 -16 l 383 163 b 392 181 383 173 384 179 b 445 202 397 183 445 202 b 456 213 452 203 456 207 z m 337 -45 b 266 -78 333 -56 287 -78 b 258 -75 262 -78 259 -76 b 253 19 255 -71 253 -27 b 258 130 253 69 255 122 b 333 163 264 141 315 163 b 337 161 334 163 337 161 b 341 78 340 157 341 120 b 337 -45 341 24 340 -37 z m 118 -127 b 114 -48 114 -121 114 -86 b 118 78 114 6 115 68 b 200 114 122 91 180 114 b 207 111 204 114 206 112 b 212 22 210 107 212 66 b 207 -94 212 -29 210 -85 b 127 -130 203 -108 148 -130 b 118 -127 122 -130 120 -128 z',\n },\n accidentalBuyukMucennebFlat: {\n x_min: 1,\n x_max: 287,\n y_min: -174,\n y_max: 438,\n ha: 612,\n o: 'm 379 452 b 370 464 379 458 377 464 b 164 389 366 464 170 392 b 156 396 163 389 156 393 b 157 436 157 409 157 428 b 167 452 157 445 161 449 b 366 526 173 455 366 526 b 379 540 374 528 379 534 l 379 611 b 370 622 379 616 377 622 b 170 550 366 622 174 552 b 160 557 163 550 160 554 b 161 608 160 585 161 602 b 134 631 161 624 148 631 b 89 590 114 631 91 616 l 89 528 b 81 517 89 526 88 518 b 16 491 76 514 16 491 b 1 480 6 490 1 485 l 1 406 b 13 395 1 400 4 395 l 14 396 b 79 419 16 396 72 415 b 89 412 86 419 89 415 b 91 376 89 399 89 386 b 82 359 91 364 89 361 b 16 331 76 356 16 331 b 1 321 6 331 1 328 l 1 248 b 13 236 1 242 4 236 b 79 262 16 236 71 258 b 92 251 89 262 92 256 b 107 -242 95 23 101 -236 b 120 -251 111 -249 115 -251 b 128 -248 124 -251 128 -248 b 240 -160 171 -225 207 -184 b 413 84 367 -71 413 16 b 284 220 413 166 350 216 b 207 196 259 220 229 209 b 170 176 196 190 184 176 l 168 177 b 151 203 157 181 151 192 b 153 269 151 210 151 236 b 163 292 153 275 153 289 b 366 367 173 297 366 367 b 379 383 374 370 379 376 z m 186 -132 b 173 -137 180 -135 176 -137 b 157 -114 161 -137 157 -122 b 153 35 157 -114 153 -22 b 154 73 153 53 153 68 b 219 135 160 92 197 124 b 255 144 232 141 243 144 b 292 130 269 144 282 140 b 314 62 305 114 314 91 b 186 -132 314 -17 251 -94 z',\n },\n accidentalBakiyeFlat: {\n x_min: -1,\n x_max: 286,\n y_min: -175,\n y_max: 439,\n ha: 614,\n o: 'm 377 454 b 369 467 377 458 376 467 b 363 465 367 467 364 467 b 161 390 363 465 167 393 b 153 399 154 390 153 395 b 157 608 154 494 157 593 b 130 632 157 624 144 632 b 86 592 111 632 88 618 b 88 377 86 592 86 501 b 76 356 88 373 88 360 l 12 331 b -1 320 3 330 -1 327 l -1 248 b 9 236 -1 242 1 236 b 81 264 12 236 78 261 b 89 258 86 264 89 261 b 104 -245 92 30 96 -236 b 115 -252 108 -251 112 -252 b 124 -249 120 -252 124 -249 b 239 -161 167 -226 203 -186 b 412 84 367 -72 412 17 b 282 220 412 166 348 216 b 255 216 274 220 264 219 b 203 196 238 212 222 206 b 171 177 193 189 177 177 b 163 179 168 177 166 177 b 147 202 153 181 147 192 b 147 216 147 204 147 209 l 150 262 b 150 276 150 269 150 275 b 158 291 150 287 154 289 b 363 370 163 292 363 370 b 377 384 373 373 377 379 z m 181 -134 b 167 -138 176 -137 171 -138 b 153 -117 156 -138 153 -125 b 148 27 153 -117 148 -30 b 151 73 148 50 150 68 b 255 144 161 105 219 144 b 312 62 298 144 312 99 b 181 -134 312 -19 249 -96 z',\n },\n accidentalKomaSharp: {\n x_min: 0,\n x_max: 229,\n y_min: -337,\n y_max: 322,\n ha: 659,\n o: 'm 312 151 b 330 176 323 156 330 166 l 330 278 b 320 289 330 285 327 289 b 312 288 318 289 315 289 b 200 246 312 288 203 248 b 181 275 187 246 181 264 l 181 448 b 163 464 181 456 173 464 b 138 441 140 464 138 452 l 138 253 b 122 215 137 240 132 225 b 17 177 92 203 45 177 b 0 153 7 173 0 163 l 0 50 b 10 39 0 43 4 39 b 17 40 13 39 14 39 l 128 81 b 138 52 138 81 138 63 l 138 -91 b 124 -124 138 -107 132 -120 b 17 -167 115 -127 17 -167 b 0 -192 7 -171 0 -181 l 0 -294 b 10 -305 0 -301 4 -305 b 17 -304 13 -305 14 -305 b 128 -261 17 -304 117 -264 l 130 -259 b 138 -276 137 -259 138 -268 l 138 -469 b 157 -485 138 -478 147 -485 b 181 -462 179 -485 181 -475 l 181 -262 b 183 -252 181 -258 181 -255 b 197 -232 186 -243 190 -235 b 312 -187 207 -228 312 -187 b 330 -163 323 -183 330 -173 l 330 -60 b 320 -49 330 -53 327 -49 b 312 -50 318 -49 315 -49 l 200 -94 b 193 -95 197 -95 194 -95 b 181 -68 183 -95 181 -85 l 181 66 b 200 108 181 92 189 104 z',\n },\n accidentalKucukMucennebSharp: {\n x_min: -1,\n x_max: 339,\n y_min: -338,\n y_max: 321,\n ha: 659,\n o: 'm 264 92 b 271 102 264 98 265 99 l 395 150 b 412 174 405 154 412 164 l 412 276 b 402 288 412 284 409 288 b 395 287 400 288 397 288 b 282 245 395 287 285 246 b 264 274 269 245 264 262 l 264 446 b 245 462 264 455 255 462 b 220 439 222 462 220 451 l 220 252 b 204 213 219 239 215 223 b 99 176 174 202 127 176 b 82 151 89 171 82 161 l 82 49 b 92 37 82 42 86 37 b 99 39 95 37 96 37 l 210 79 b 216 81 212 81 215 81 b 220 78 219 81 220 79 l 220 56 b 216 46 220 52 220 48 b 16 -29 210 45 16 -29 b -1 -45 4 -32 -1 -36 l -1 -138 b 12 -154 -1 -145 3 -154 l 215 -79 b 220 -84 219 -79 220 -81 l 220 -105 b 210 -122 220 -115 219 -120 b 99 -168 202 -127 99 -168 b 82 -193 89 -173 82 -183 l 82 -295 b 92 -307 82 -302 86 -307 b 99 -305 95 -307 96 -307 b 210 -262 99 -305 199 -265 l 212 -261 b 220 -278 219 -261 220 -269 l 220 -471 b 239 -487 220 -480 229 -487 b 264 -464 261 -487 264 -477 l 264 -264 b 265 -253 264 -259 264 -256 b 279 -233 268 -245 272 -236 b 395 -189 289 -229 395 -189 b 412 -164 405 -184 412 -174 l 412 -62 b 402 -50 412 -55 409 -50 b 395 -52 400 -50 397 -50 l 278 -96 b 264 -86 268 -96 264 -94 l 264 -68 b 269 -59 264 -62 265 -60 b 471 17 274 -58 471 17 b 488 36 484 22 488 27 l 488 127 b 475 144 488 134 487 144 l 472 141 b 471 141 472 141 471 141 l 471 143 b 272 68 471 143 282 71 l 269 66 b 264 71 264 66 264 69 z',\n },\n accidentalKoron: {\n x_min: 0,\n x_max: 300,\n y_min: -472,\n y_max: 157,\n ha: 629,\n o: 'm 432 -4 b 415 10 432 1 418 9 l 4 226 b 0 223 1 226 0 225 l 0 -672 b 7 -680 0 -677 3 -680 l 45 -680 b 52 -672 49 -680 52 -677 l 52 -193 l 415 -22 b 432 -4 418 -20 432 -13 z m 52 -137 l 52 144 l 327 -7 z',\n },\n accidentalSori: {\n x_min: 0,\n x_max: 421,\n y_min: -318,\n y_max: 328,\n ha: 646,\n o: 'm 606 10 b 589 23 606 16 592 22 l 382 109 l 382 465 b 374 472 382 469 379 472 l 337 472 b 330 465 333 472 330 469 l 330 132 l 183 194 l 183 425 b 176 432 183 429 180 432 l 138 432 b 131 425 134 432 131 429 l 131 216 l 3 269 b 0 265 0 269 0 266 l 0 223 b 3 213 0 216 0 215 l 131 160 l 131 -150 l 3 -203 b 0 -212 0 -204 0 -206 l 0 -255 b 3 -259 0 -258 1 -259 l 131 -204 l 131 -451 b 138 -458 131 -455 134 -458 l 176 -458 b 183 -451 180 -458 183 -455 l 183 -183 l 330 -120 l 330 -410 b 337 -418 330 -415 333 -418 l 374 -418 b 382 -410 379 -418 382 -415 l 382 -98 l 589 -9 b 606 10 592 -9 606 0 z m 183 -128 l 183 138 l 330 76 l 330 -66 z m 382 -45 l 382 55 l 501 6 z',\n },\n articAccentAbove: {\n x_min: 0,\n x_max: 339,\n y_min: 1,\n y_max: 245,\n ha: 244,\n o: 'm 469 151 b 488 177 488 156 488 166 b 469 203 488 189 488 197 l 37 350 b 24 353 32 351 26 353 b 3 333 12 353 7 344 b 0 318 1 327 0 323 b 20 298 0 311 4 304 b 346 187 20 298 331 193 b 356 177 353 186 356 181 b 344 167 356 173 353 170 b 20 58 328 163 20 58 b 0 36 4 50 0 43 b 3 23 0 32 1 27 b 23 1 7 13 13 1 b 29 3 24 1 27 1 z',\n },\n articAccentBelow: {\n x_min: 0,\n x_max: 339,\n y_min: -244,\n y_max: 0,\n ha: 244,\n o: 'm 469 -202 b 488 -176 488 -197 488 -187 b 469 -150 488 -164 488 -156 l 37 -3 b 24 0 32 -1 26 0 b 3 -20 12 0 7 -9 b 0 -35 1 -26 0 -30 b 20 -55 0 -42 4 -49 b 346 -166 20 -55 331 -160 b 356 -176 353 -167 356 -171 b 344 -186 356 -180 353 -183 b 20 -295 328 -190 20 -295 b 0 -317 4 -302 0 -310 b 3 -330 0 -321 1 -325 b 23 -351 7 -340 13 -351 b 29 -350 24 -351 27 -351 z',\n },\n articTenutoAbove: {\n x_min: -1,\n x_max: 338,\n y_min: 0,\n y_max: 48,\n ha: 48,\n o: 'm 452 0 b 487 35 485 0 487 16 b 452 69 487 53 487 69 l 33 69 b -1 35 -1 69 -1 53 b 33 0 -1 16 -1 0 z',\n },\n articTenutoBelow: {\n x_min: -1,\n x_max: 338,\n y_min: -48,\n y_max: 0,\n ha: 48,\n o: 'm 452 -69 b 487 -35 485 -69 487 -53 b 452 0 487 -16 487 0 l 33 0 b -1 -35 -1 0 -1 -16 b 33 -69 -1 -53 -1 -69 z',\n },\n articStaccatoAbove: {\n x_min: 0,\n x_max: 84,\n y_min: 0,\n y_max: 84,\n ha: 84,\n o: 'm 121 60 b 60 121 121 94 94 121 b 0 60 27 121 0 94 b 60 0 0 27 27 0 b 121 60 94 0 121 27 z',\n },\n articStaccatoBelow: {\n x_min: 0,\n x_max: 84,\n y_min: -84,\n y_max: 0,\n ha: 84,\n o: 'm 121 -60 b 60 0 121 -27 94 0 b 0 -60 27 0 0 -27 b 60 -121 0 -94 27 -121 b 121 -60 94 -121 121 -94 z',\n },\n articStaccatissimoAbove: {\n x_min: 1,\n x_max: 100,\n y_min: -2,\n y_max: 293,\n ha: 295,\n o: 'm 72 422 b 1 390 35 422 3 409 b 72 -3 1 369 39 -3 b 144 389 108 -3 144 356 b 72 422 144 410 111 422 z',\n },\n articStaccatissimoBelow: {\n x_min: 1,\n x_max: 100,\n y_min: -295,\n y_max: 0,\n ha: 295,\n o: 'm 72 -425 b 144 -392 111 -425 144 -413 b 72 0 144 -359 108 0 b 1 -393 39 0 1 -372 b 72 -425 3 -412 35 -425 z',\n },\n articMarcatoAbove: {\n x_min: -1,\n x_max: 235,\n y_min: -1,\n y_max: 253,\n ha: 254,\n o: 'm 181 356 b 167 364 177 361 173 364 b 153 356 157 364 153 356 l 0 23 b -1 16 -1 20 -1 19 b 9 0 -1 9 1 1 b 16 -1 10 -1 14 -1 b 32 9 22 -1 29 1 b 112 186 32 9 109 180 b 118 190 114 189 115 190 b 127 186 121 190 124 189 b 209 9 128 180 209 9 b 225 0 213 3 219 0 l 323 0 b 338 16 333 1 338 7 b 337 23 338 19 338 22 z',\n },\n articMarcatoBelow: {\n x_min: -1,\n x_max: 235,\n y_min: -254,\n y_max: 0,\n ha: 254,\n o: 'm 156 -357 b 170 -366 160 -363 164 -366 b 184 -357 180 -366 184 -357 l 337 -24 b 338 -17 338 -22 338 -20 b 328 -1 338 -10 336 -3 b 321 0 327 0 323 0 b 305 -10 315 0 308 -3 b 225 -187 305 -10 228 -181 b 219 -192 223 -190 222 -192 b 210 -187 216 -192 213 -190 b 128 -10 209 -181 128 -10 b 112 -1 124 -4 118 -1 l 14 -1 b -1 -17 4 -3 -1 -9 b 0 -24 -1 -20 -1 -23 z',\n },\n fermataAbove: {\n x_min: 3,\n x_max: 605,\n y_min: -3,\n y_max: 329,\n ha: 332,\n o: 'm 435 318 b 818 36 742 318 804 91 b 821 26 819 32 819 27 b 851 -4 831 6 837 -4 b 871 16 864 -4 871 1 b 870 30 871 20 871 24 b 438 474 780 471 480 474 b 6 30 392 474 94 471 b 4 14 4 24 4 19 b 23 -4 4 0 12 -4 b 52 26 36 -4 43 6 b 56 39 53 27 55 33 b 435 318 73 98 138 318 z m 516 75 b 436 153 516 117 480 153 b 359 75 395 153 359 117 b 436 -4 359 32 395 -4 b 516 75 480 -4 516 32 z',\n },\n fermataBelow: {\n x_min: 3,\n x_max: 605,\n y_min: -332,\n y_max: 0,\n ha: 332,\n o: 'm 435 -323 b 56 -43 138 -323 73 -102 b 52 -30 55 -37 53 -32 b 23 0 43 -10 36 0 b 4 -19 12 0 4 -4 b 6 -35 4 -23 4 -29 b 438 -478 94 -475 392 -478 b 870 -35 480 -478 780 -475 b 871 -20 871 -29 871 -24 b 851 0 871 -6 864 0 b 821 -30 837 0 831 -10 b 818 -40 819 -32 819 -36 b 435 -323 804 -95 742 -323 z m 516 -79 b 436 0 516 -36 480 0 b 359 -79 395 0 359 -36 b 436 -157 359 -121 395 -157 b 516 -79 480 -157 516 -121 z',\n },\n fermataLongAbove: {\n x_min: 0,\n x_max: 603,\n y_min: -1,\n y_max: 333,\n ha: 334,\n o: 'm 72 480 b 0 441 32 480 0 462 l 0 19 b 35 0 0 9 16 0 b 71 19 55 0 71 9 l 71 289 b 433 315 71 307 252 315 b 798 289 615 315 798 307 l 798 19 b 832 0 798 9 814 0 b 868 19 852 0 868 9 l 868 441 b 796 480 868 462 837 480 z m 513 78 b 433 156 513 121 478 156 b 356 78 390 156 356 121 b 433 -1 356 35 390 -1 b 513 78 478 -1 513 35 z',\n },\n fermataLongBelow: {\n x_min: 0,\n x_max: 603,\n y_min: -333,\n y_max: 1,\n ha: 334,\n o: 'm 513 -78 b 433 1 513 -35 478 1 b 356 -78 390 1 356 -35 b 433 -156 356 -121 390 -156 b 513 -78 478 -156 513 -121 z m 796 -480 b 868 -441 837 -480 868 -462 l 868 -19 b 832 0 868 -9 852 0 b 798 -19 814 0 798 -9 l 798 -289 b 433 -315 798 -307 615 -315 b 71 -289 252 -315 71 -307 l 71 -19 b 35 0 71 -9 55 0 b 0 -19 16 0 0 -9 l 0 -441 b 72 -480 0 -462 32 -480 z',\n },\n fermataVeryLongAbove: {\n x_min: 0,\n x_max: 715,\n y_min: 0,\n y_max: 408,\n ha: 408,\n o: 'm 76 588 b 0 546 35 588 0 569 l 0 22 b 37 1 0 10 17 1 b 75 22 59 1 75 10 l 75 431 b 514 458 75 449 294 458 b 955 431 734 458 955 449 l 955 22 b 991 1 955 10 971 1 b 1030 22 1012 1 1030 10 l 1030 546 b 953 588 1030 569 995 588 z m 215 389 b 138 347 171 389 138 370 l 138 22 b 174 1 138 10 154 1 b 213 22 196 1 213 10 l 213 217 b 514 245 213 235 363 245 b 816 217 665 245 816 235 l 816 22 b 854 1 816 10 834 1 b 891 22 876 1 891 10 l 891 347 b 815 389 891 370 858 389 z m 606 84 b 521 167 606 130 569 167 b 439 84 475 167 439 130 b 521 0 439 39 475 0 b 606 84 569 0 606 39 z',\n },\n fermataVeryLongBelow: {\n x_min: 0,\n x_max: 715,\n y_min: -408,\n y_max: 0,\n ha: 408,\n o: 'm 606 -84 b 521 0 606 -39 569 0 b 439 -84 475 0 439 -39 b 521 -167 439 -130 475 -167 b 606 -84 569 -167 606 -130 z m 815 -389 b 891 -347 858 -389 891 -370 l 891 -22 b 854 -1 891 -10 876 -1 b 816 -22 834 -1 816 -10 l 816 -217 b 514 -245 816 -235 665 -245 b 213 -217 363 -245 213 -235 l 213 -22 b 174 -1 213 -10 196 -1 b 138 -22 154 -1 138 -10 l 138 -347 b 215 -389 138 -370 171 -389 z m 953 -588 b 1030 -546 995 -588 1030 -569 l 1030 -22 b 991 -1 1030 -10 1012 -1 b 955 -22 971 -1 955 -10 l 955 -431 b 514 -458 955 -449 734 -458 b 75 -431 294 -458 75 -449 l 75 -22 b 37 -1 75 -10 59 -1 b 0 -22 17 -1 0 -10 l 0 -546 b 76 -588 0 -569 35 -588 z',\n },\n fermataShortAbove: {\n x_min: 0,\n x_max: 604,\n y_min: 0,\n y_max: 341,\n ha: 341,\n o: 'm 78 0 b 88 6 81 0 82 3 b 435 328 134 45 412 328 b 783 3 458 328 742 39 b 793 0 786 1 793 0 l 865 0 b 870 4 865 0 870 1 b 867 10 870 6 868 9 b 435 491 805 69 474 491 b 3 10 397 491 69 75 b 0 4 1 9 0 6 b 4 0 0 1 4 0 z m 513 94 b 433 171 513 135 477 171 b 354 94 390 171 354 135 b 433 13 354 49 390 13 b 513 94 477 13 513 49 z',\n },\n fermataShortBelow: {\n x_min: 0,\n x_max: 604,\n y_min: -341,\n y_max: 0,\n ha: 341,\n o: 'm 4 0 b 0 -4 4 0 0 -1 b 3 -10 0 -6 1 -9 b 435 -491 69 -75 397 -491 b 867 -10 474 -491 805 -69 b 870 -4 868 -9 870 -6 b 865 0 870 -1 865 0 l 793 0 b 783 -3 793 0 786 -1 b 435 -328 742 -39 458 -328 b 88 -6 412 -328 134 -45 b 78 0 82 -3 81 0 z m 513 -94 b 433 -13 513 -49 477 -13 b 354 -94 390 -13 354 -49 b 433 -171 354 -135 390 -171 b 513 -94 477 -171 513 -135 z',\n },\n breathMarkComma: {\n x_min: 1,\n x_max: 152,\n y_min: 2,\n y_max: 251,\n ha: 249,\n o: 'm 104 361 b 1 271 42 361 1 321 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 17 32 29 26 26 l 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 z',\n },\n breathMarkUpbow: {\n x_min: 1,\n x_max: 249,\n y_min: 1,\n y_max: 495,\n ha: 494,\n o: 'm 181 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 z',\n },\n caesura: {\n x_min: 0,\n x_max: 384,\n y_min: -1,\n y_max: 532,\n ha: 533,\n o: 'm 40 -1 b 78 26 58 -1 72 9 l 321 713 b 323 726 323 717 323 721 b 282 766 323 747 304 766 b 245 739 265 766 251 756 l 3 52 b 0 37 1 48 0 42 b 27 1 0 22 10 7 b 40 -1 32 -1 36 -1 z m 308 26 l 552 713 b 553 726 553 717 553 721 b 513 766 553 747 534 766 b 475 739 495 766 481 756 l 232 52 b 230 39 230 48 230 43 b 258 1 230 23 240 7 b 271 -1 262 -1 266 -1 b 308 26 287 -1 302 9 z',\n },\n caesuraCurved: {\n x_min: 0,\n x_max: 373,\n y_min: 0,\n y_max: 530,\n ha: 530,\n o: 'm 491 763 b 445 719 468 763 446 744 b 252 98 432 507 340 295 l 226 39 b 223 27 225 35 223 32 b 252 0 223 13 233 0 b 276 16 262 0 272 6 b 537 716 386 230 537 478 b 491 763 537 742 518 763 z m 29 0 b 53 16 39 0 48 6 l 82 69 b 314 716 187 264 314 498 b 268 763 314 742 295 763 b 222 719 245 763 223 744 b 29 98 209 507 117 295 l 3 39 b 0 29 1 36 0 33 b 29 0 0 14 12 0 z',\n },\n restMaxima: {\n x_min: 0,\n x_max: 381,\n y_min: -249,\n y_max: 250,\n ha: 499,\n o: 'm 180 -330 l 180 331 b 156 360 180 356 170 360 l 23 360 b 0 331 10 360 0 356 l 0 -330 b 23 -359 0 -354 10 -359 l 156 -359 b 180 -330 170 -359 180 -354 z m 549 -330 l 549 331 b 524 360 549 356 539 360 l 392 360 b 369 331 379 360 369 356 l 369 -330 b 392 -359 369 -354 379 -359 l 524 -359 b 549 -330 539 -359 549 -354 z',\n },\n restDoubleWhole: {\n x_min: 0,\n x_max: 125,\n y_min: 0,\n y_max: 250,\n ha: 250,\n o: 'm 180 22 l 180 338 b 156 360 180 350 170 360 l 23 360 b 0 338 10 360 0 350 l 0 22 b 23 0 0 10 10 0 l 156 0 b 180 22 170 0 180 10 z',\n },\n restWhole: {\n x_min: 0,\n x_max: 282,\n y_min: -135,\n y_max: 9,\n ha: 144,\n o: 'm 406 -157 l 406 -24 b 369 13 406 -3 389 13 l 37 13 b 0 -24 16 13 0 -3 l 0 -157 b 37 -194 0 -177 16 -194 l 369 -194 b 406 -157 389 -194 406 -177 z',\n },\n restWholeLegerLine: {\n x_min: -117,\n x_max: 399,\n y_min: -135,\n y_max: 20,\n ha: 155,\n o: 'm -143 29 b -168 3 -157 29 -168 17 b -143 -23 -168 -12 -157 -23 l 0 -23 l 0 -157 b 37 -194 0 -177 16 -194 l 369 -194 b 406 -157 389 -194 406 -177 l 406 -24 b 549 -23 406 -23 406 -23 b 575 3 563 -23 575 -12 b 549 29 575 17 563 29 z',\n },\n restHalf: {\n x_min: 0,\n x_max: 282,\n y_min: -2,\n y_max: 142,\n ha: 144,\n o: 'm 406 35 l 406 167 b 369 204 406 189 389 204 l 37 204 b 0 167 16 204 0 189 l 0 35 b 37 -3 0 14 16 -3 l 369 -3 b 406 35 389 -3 406 14 z',\n },\n restHalfLegerLine: {\n x_min: -117,\n x_max: 399,\n y_min: -13,\n y_max: 142,\n ha: 155,\n o: 'm 549 -19 b 575 7 563 -19 575 -7 b 549 33 575 22 563 33 b 406 35 406 33 406 33 l 406 167 b 369 204 406 187 389 204 l 37 204 b 0 167 16 204 0 187 l 0 33 l -143 33 b -168 7 -157 33 -168 22 b -143 -19 -168 -7 -157 -19 z',\n },\n restQuarter: {\n x_min: 1,\n x_max: 270,\n y_min: -375,\n y_max: 373,\n ha: 748,\n o: 'm 112 -55 b 174 -141 135 -84 156 -111 b 183 -161 177 -147 183 -158 b 181 -167 183 -163 183 -166 b 166 -174 179 -173 173 -174 b 143 -170 160 -174 148 -171 b 137 -170 141 -170 138 -170 l 125 -166 b 1 -304 50 -166 1 -233 b 168 -527 1 -376 63 -446 b 206 -540 180 -536 194 -540 b 228 -531 216 -540 226 -537 b 230 -521 229 -527 230 -524 b 207 -487 230 -508 219 -497 b 170 -435 189 -487 173 -448 b 164 -397 166 -423 164 -410 b 255 -292 164 -338 194 -292 b 369 -317 297 -292 344 -308 l 370 -318 b 382 -320 376 -320 379 -320 b 389 -314 386 -320 389 -318 b 336 -232 389 -297 351 -249 b 236 -32 281 -166 236 -112 b 236 -27 236 -30 236 -29 l 238 -17 b 238 -13 238 -16 238 -14 b 333 199 243 71 295 140 b 338 220 337 206 338 213 b 333 248 338 235 333 248 b 95 526 333 248 120 501 b 69 537 88 533 78 537 b 40 507 55 537 40 527 b 46 484 40 500 42 492 b 134 291 52 468 134 395 b 48 108 134 238 112 176 b 27 66 33 94 27 78 b 42 32 27 46 42 32 z',\n },\n rest8th: {\n x_min: 0,\n x_max: 247,\n y_min: -251,\n y_max: 174,\n ha: 425,\n o: 'm 193 154 b 96 251 193 207 150 251 b 0 154 43 251 0 207 b 39 81 0 124 17 98 b 117 56 62 65 89 56 b 173 66 137 56 157 60 b 225 88 193 72 206 78 b 232 89 228 89 230 89 b 239 76 238 89 239 84 b 238 60 239 72 239 66 b 104 -343 233 39 130 -248 b 145 -361 104 -360 137 -361 b 196 -347 161 -361 181 -359 b 341 161 200 -344 341 161 b 356 217 347 187 354 210 b 338 240 356 232 341 239 b 323 235 336 240 331 240 b 193 140 312 226 240 140 z',\n },\n rest16th: {\n x_min: 0,\n x_max: 320,\n y_min: -500,\n y_max: 179,\n ha: 679,\n o: 'm 300 160 b 202 258 300 215 256 258 b 104 160 148 258 104 215 b 219 62 104 101 164 62 b 331 94 258 62 298 75 b 341 96 336 95 338 96 b 348 86 346 96 348 94 b 265 -173 348 63 275 -151 b 194 -217 253 -200 215 -217 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 151 -105 b 0 -203 43 -105 0 -148 b 115 -301 0 -262 60 -301 b 223 -271 153 -301 190 -288 b 229 -279 226 -271 229 -274 l 228 -281 b 228 -282 228 -282 228 -282 l 91 -690 b 91 -691 91 -690 91 -691 l 89 -693 b 134 -720 89 -706 102 -720 b 189 -687 176 -720 183 -703 l 356 -138 b 420 81 393 -16 420 81 b 459 226 420 81 456 207 b 461 232 459 229 461 230 b 446 248 461 240 449 246 b 431 242 439 248 435 245 b 300 145 420 233 348 147 z',\n },\n rest32nd: {\n x_min: 0,\n x_max: 363,\n y_min: -500,\n y_max: 426,\n ha: 926,\n o: 'm 508 603 b 492 598 501 603 497 600 b 361 503 482 590 410 503 l 361 516 b 264 613 361 570 318 613 b 166 516 210 613 166 570 b 206 444 166 487 183 461 b 246 423 217 433 232 428 b 284 418 258 420 269 418 b 393 449 321 418 360 432 b 399 451 395 451 397 451 b 415 426 409 451 415 436 l 413 423 b 413 422 413 423 413 422 l 357 192 b 279 140 350 168 302 140 b 281 153 281 144 281 148 b 183 251 281 207 236 251 b 85 153 128 251 85 207 b 125 81 85 124 102 98 b 164 60 137 71 150 65 b 203 55 176 58 189 55 b 311 86 240 55 278 69 b 315 88 312 88 314 88 b 325 69 323 88 325 76 l 268 -167 b 194 -217 261 -197 216 -216 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 153 -105 b 0 -203 45 -105 0 -148 b 115 -301 0 -262 60 -301 b 228 -269 154 -301 194 -288 b 232 -268 229 -268 230 -268 b 240 -276 236 -268 240 -272 b 138 -688 240 -282 141 -678 b 137 -697 137 -691 137 -694 b 176 -720 137 -708 145 -720 b 232 -690 222 -720 226 -706 b 484 436 236 -672 484 436 b 521 582 484 436 518 564 b 523 588 521 585 523 586 b 508 603 523 600 511 603 z',\n },\n rest64th: {\n x_min: 0,\n x_max: 423,\n y_min: -753,\n y_max: 430,\n ha: 1183,\n o: 'm 596 609 b 580 603 589 609 585 606 b 448 507 569 595 497 507 b 449 521 449 511 449 516 b 351 619 449 575 405 619 b 253 521 297 619 253 575 b 372 422 253 461 317 422 b 481 454 410 422 446 438 b 491 456 484 455 488 456 b 504 441 498 456 504 451 b 501 426 504 436 503 432 b 445 202 500 422 451 217 b 359 144 435 174 383 144 l 359 158 b 261 256 359 212 315 256 b 163 158 207 256 163 212 b 243 65 163 112 202 78 b 279 60 255 62 266 60 b 397 91 320 60 360 73 b 403 92 400 92 402 92 b 412 79 409 92 412 86 b 410 72 412 76 412 75 b 351 -161 408 59 356 -150 b 281 -212 340 -199 301 -212 l 281 -197 b 183 -99 281 -144 238 -99 b 85 -197 130 -99 85 -144 b 125 -271 85 -228 102 -253 b 166 -291 138 -279 151 -287 b 204 -297 177 -294 192 -297 b 262 -287 225 -297 245 -292 b 305 -265 282 -279 287 -274 b 310 -264 307 -264 308 -264 b 318 -284 317 -264 318 -275 b 317 -295 318 -288 317 -294 b 259 -524 315 -302 265 -508 b 194 -567 251 -554 213 -567 b 196 -554 196 -563 196 -559 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 b 40 -626 0 -583 17 -609 b 118 -652 60 -644 92 -652 b 210 -629 145 -652 186 -642 b 216 -628 213 -628 215 -628 b 228 -647 226 -628 228 -639 l 226 -651 b 226 -652 226 -651 226 -652 l 122 -1054 b 121 -1064 121 -1058 121 -1061 b 167 -1084 121 -1077 134 -1084 b 215 -1060 202 -1084 209 -1076 b 402 -278 217 -1047 229 -1021 b 436 -135 403 -278 431 -161 l 570 441 b 609 588 570 441 605 569 b 596 609 609 603 602 608 z',\n },\n rest128th: {\n x_min: 0,\n x_max: 485,\n y_min: -750,\n y_max: 689,\n ha: 1439,\n o: 'm 537 894 b 439 992 537 949 494 992 b 341 894 386 992 341 949 b 382 822 341 865 359 840 b 459 796 402 805 433 796 b 518 806 480 796 501 801 l 520 808 b 569 828 539 814 552 819 b 580 831 572 829 577 831 b 598 812 589 831 598 825 b 596 801 598 809 598 805 b 540 575 590 773 546 595 b 448 510 534 553 475 510 l 448 524 b 350 622 448 577 405 622 b 252 524 297 622 252 577 b 292 451 252 494 269 468 b 369 426 318 433 337 426 b 429 435 389 426 412 429 b 494 464 449 442 475 455 b 498 465 495 465 497 465 b 505 446 504 465 505 456 b 503 426 505 439 504 432 l 446 202 b 366 144 439 173 389 144 l 366 158 b 268 256 366 212 323 256 b 170 158 215 256 170 212 b 289 59 170 98 235 59 b 347 69 310 59 330 63 b 397 91 367 76 379 82 b 406 94 400 92 403 94 b 415 79 412 94 415 88 b 412 63 415 75 413 69 b 357 -157 408 42 364 -134 b 281 -212 346 -196 302 -212 b 282 -197 281 -207 282 -203 b 184 -99 282 -144 238 -99 b 86 -197 130 -99 86 -144 b 204 -297 86 -258 150 -297 b 262 -287 225 -297 245 -292 b 312 -265 282 -279 294 -274 b 318 -264 314 -264 317 -264 b 327 -275 324 -264 327 -269 b 266 -517 324 -287 278 -490 b 200 -569 248 -566 220 -567 l 196 -554 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 b 118 -652 0 -615 63 -652 b 177 -642 138 -652 160 -648 l 179 -641 b 229 -621 197 -635 210 -629 l 230 -619 b 239 -626 236 -619 239 -622 b 238 -632 239 -628 239 -631 b 131 -1057 235 -642 134 -1050 b 173 -1080 131 -1071 140 -1080 b 230 -1057 219 -1080 225 -1074 l 658 815 b 697 960 658 815 694 942 b 698 966 697 963 698 965 b 684 982 698 975 687 981 b 668 976 677 982 672 979 b 537 880 658 969 586 881 z',\n },\n dynamicPiano: {\n x_min: -89,\n x_max: 366,\n y_min: -142,\n y_max: 274,\n ha: 416,\n o: 'm 395 395 b 292 357 350 395 318 380 b 262 328 272 340 268 328 b 246 363 255 328 259 338 b 177 393 236 380 215 393 b 1 251 92 393 46 333 b -9 223 -6 238 -9 230 b 7 207 -9 213 -1 207 b 30 229 17 207 23 216 b 127 338 72 301 101 338 b 143 321 138 338 143 331 b 134 285 143 310 138 295 l -43 -154 b -65 -168 -48 -166 -50 -168 l -109 -168 b -128 -187 -122 -168 -128 -174 b -111 -204 -128 -199 -122 -204 l 167 -204 b 186 -186 180 -204 186 -199 b 168 -168 186 -174 180 -168 l 111 -168 b 98 -164 102 -168 98 -168 b 101 -154 98 -163 99 -158 l 166 7 b 179 24 168 14 171 24 b 213 -1 186 24 190 10 b 276 -14 233 -12 252 -14 b 527 266 415 -14 527 130 b 395 395 527 350 475 395 z m 356 341 b 389 288 380 341 389 320 b 243 35 389 217 312 35 b 207 81 219 35 207 50 b 235 180 207 111 219 140 l 264 251 b 356 341 284 300 321 341 z',\n },\n dynamicMezzo: {\n x_min: -20,\n x_max: 446,\n y_min: -10,\n y_max: 274,\n ha: 284,\n o: 'm 528 395 b 431 350 487 395 454 374 b 409 330 416 336 415 330 b 397 360 402 330 406 341 b 334 395 389 379 370 395 b 236 350 292 395 259 374 b 215 330 222 336 220 330 b 203 360 207 330 212 340 b 147 393 194 379 174 393 b -19 251 71 393 26 331 b -29 223 -26 238 -29 230 b -13 207 -29 213 -22 207 b 9 226 -3 207 1 215 b 107 338 52 300 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 287 323 225 292 255 323 b 308 302 304 323 308 314 b 294 249 308 285 302 269 b 203 24 294 248 292 248 b 199 9 200 17 199 13 b 215 0 199 3 203 0 l 285 0 b 308 17 298 0 302 3 l 402 251 b 481 323 419 292 449 323 b 503 302 498 323 503 314 b 413 43 503 252 413 104 b 478 -14 413 6 436 -14 b 629 102 533 -14 583 26 b 642 132 638 117 642 125 b 629 145 642 141 636 145 b 608 127 619 145 615 138 b 534 49 580 84 553 49 b 523 62 526 49 523 53 b 606 317 523 112 606 238 b 528 395 606 353 588 395 z',\n },\n dynamicForte: {\n x_min: -141,\n x_max: 364,\n y_min: -152,\n y_max: 444,\n ha: 596,\n o: 'm 23 380 b 0 357 7 380 0 373 b 22 336 0 343 7 336 l 105 336 b 117 330 114 336 117 336 b 114 315 117 327 115 323 l 23 0 b -101 -187 -17 -141 -43 -187 b -127 -174 -120 -187 -127 -181 b -92 -156 -127 -163 -114 -170 b -63 -102 -75 -144 -63 -125 b -128 -43 -63 -65 -89 -43 b -203 -122 -171 -43 -203 -78 b -95 -219 -203 -186 -156 -219 b 161 17 14 -219 82 -145 b 269 317 203 105 235 194 l 271 318 b 289 336 271 323 282 336 l 383 336 b 406 359 399 336 406 343 b 384 380 406 373 399 380 l 298 380 b 284 387 288 380 284 380 b 287 405 284 392 285 396 b 419 606 315 530 347 606 b 442 595 431 606 442 603 b 419 580 442 586 435 588 b 389 526 400 572 389 552 b 454 465 389 485 418 465 b 524 543 491 465 524 490 b 400 639 524 596 491 639 b 135 402 261 639 183 540 b 107 380 128 380 127 380 z',\n },\n dynamicRinforzando: {\n x_min: -20,\n x_max: 277,\n y_min: 0,\n y_max: 274,\n ha: 274,\n o: 'm 324 395 b 235 350 287 395 256 374 b 215 330 222 336 220 330 b 203 360 207 330 213 337 b 145 393 194 379 174 393 b -19 251 75 393 27 337 b -29 223 -26 238 -29 230 b -13 207 -29 213 -22 207 b 9 226 -3 207 3 215 b 107 338 52 301 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 304 351 226 298 272 351 b 318 343 312 351 318 348 b 287 285 318 330 287 325 b 338 239 287 256 308 239 b 399 318 373 239 399 268 b 324 395 399 360 377 395 z',\n },\n dynamicSforzando: {\n x_min: 0,\n x_max: 229,\n y_min: -10,\n y_max: 273,\n ha: 283,\n o: 'm 212 393 b 68 274 127 393 68 350 b 145 161 68 223 95 196 b 200 85 187 132 200 114 b 127 20 200 53 173 20 b 66 42 91 20 66 32 b 91 56 66 49 75 46 b 111 98 104 65 111 79 b 59 145 111 127 86 145 b 0 78 24 145 0 117 b 125 -14 0 30 49 -14 b 291 120 219 -14 291 36 b 220 232 291 160 276 190 b 151 314 168 271 151 287 b 213 361 151 337 168 361 b 258 346 238 361 258 356 b 240 333 258 340 251 340 b 226 298 232 325 226 314 b 276 252 226 269 248 252 b 330 307 311 252 330 279 b 212 393 330 360 285 393 z',\n },\n dynamicZ: {\n x_min: -30,\n x_max: 244,\n y_min: -10,\n y_max: 268,\n ha: 278,\n o: 'm 333 386 b 298 377 321 386 314 382 b 239 370 282 373 259 370 b 94 383 153 370 111 383 b 68 364 79 383 72 377 l 33 264 b 29 242 30 255 29 248 b 45 228 29 232 36 228 b 66 249 55 228 60 236 l 81 279 b 96 297 85 288 88 297 b 168 292 102 297 127 292 b 223 302 194 292 215 302 b 196 269 229 302 197 271 l -26 45 b -43 16 -37 33 -43 27 b -24 -1 -43 6 -36 -1 b 4 16 -12 -1 -3 10 b 39 30 16 24 27 30 b 179 -14 79 30 108 -14 b 297 102 259 -14 297 43 b 245 166 297 147 271 166 b 197 115 219 166 197 145 b 236 72 197 88 216 72 b 259 79 251 72 255 79 b 264 75 262 79 264 78 b 258 60 264 72 261 66 b 229 45 252 50 242 45 b 117 95 186 45 173 95 b 85 86 98 95 89 86 b 102 111 85 86 95 104 l 333 338 b 351 370 344 350 351 359 b 333 386 351 380 343 386 z',\n },\n ornamentTrill: {\n x_min: 0,\n x_max: 521,\n y_min: -10,\n y_max: 390,\n ha: 400,\n o: 'm 383 562 b 364 557 377 562 369 559 l 294 534 b 269 511 281 530 275 526 l 217 384 b 206 367 212 370 210 367 b 179 380 200 367 192 374 b 118 393 158 389 140 393 b 0 292 50 393 0 353 b 95 210 0 248 30 210 b 140 213 112 210 131 213 b 144 209 143 213 144 212 b 140 194 144 206 143 202 l 124 156 b 96 58 108 117 96 88 b 179 -14 96 17 124 -14 b 325 153 253 -14 325 46 b 307 251 325 187 320 219 b 302 265 304 258 302 261 b 334 294 302 274 311 281 l 343 298 b 455 348 393 328 428 348 b 474 327 468 348 474 344 b 465 285 474 312 469 295 l 360 24 b 356 9 357 17 356 13 b 372 0 356 3 360 0 l 442 0 b 465 17 455 0 459 3 l 559 251 b 655 351 577 298 624 351 b 670 343 664 351 670 348 b 638 285 670 330 638 325 b 690 239 638 256 660 239 b 750 318 724 239 750 268 b 675 395 750 360 729 395 b 586 350 638 395 608 374 b 566 330 573 336 572 330 b 553 361 559 330 564 340 b 490 393 543 380 521 393 b 347 348 432 393 377 364 b 312 333 328 338 320 333 b 308 337 310 333 308 334 b 315 359 308 343 312 351 l 387 537 b 392 553 390 544 392 549 b 383 562 392 559 389 562 z m 118 360 b 192 325 134 360 192 347 b 186 307 192 321 189 314 l 180 292 b 148 265 173 274 167 269 b 98 258 130 261 112 258 b 39 301 50 258 39 281 b 118 360 39 327 60 360 z m 272 240 b 292 151 285 240 292 164 b 212 30 292 88 253 30 b 196 48 200 30 196 37 b 207 92 196 59 202 78 b 264 230 207 94 209 94 b 272 240 266 238 268 240 z',\n },\n ornamentTurn: {\n x_min: 0,\n x_max: 460,\n y_min: 0,\n y_max: 218,\n ha: 218,\n o: 'm 534 314 b 454 251 490 314 454 294 b 505 199 454 219 475 199 b 579 232 547 199 549 232 b 626 164 603 232 626 202 b 533 72 626 102 583 72 b 377 180 487 72 439 111 b 150 312 307 258 243 312 b 0 148 55 312 0 240 b 128 0 0 45 66 0 b 209 63 173 0 209 20 b 157 115 209 95 187 115 b 84 82 115 115 114 82 b 36 150 59 82 36 112 b 130 242 36 212 79 242 b 285 134 176 242 223 203 b 513 1 356 56 419 1 b 662 166 608 1 662 73 b 534 314 662 269 596 314 z',\n },\n ornamentTurnSlash: {\n x_min: 0,\n x_max: 460,\n y_min: -90,\n y_max: 306,\n ha: 396,\n o: 'm 333 441 b 310 418 315 441 310 433 l 310 274 b 302 252 310 258 308 252 b 261 278 294 252 287 262 b 150 311 228 298 192 311 b 0 147 55 311 0 239 b 128 -1 0 43 66 -1 b 209 62 173 -1 209 19 b 157 114 209 94 187 114 b 84 81 115 114 114 81 b 36 148 59 81 36 111 b 130 240 36 210 79 240 b 285 128 176 240 222 197 b 307 79 304 108 307 105 l 307 -107 b 330 -130 307 -122 312 -130 b 353 -107 347 -130 353 -122 l 353 37 b 360 59 353 53 353 59 b 402 33 369 59 376 49 b 513 0 435 13 471 0 b 662 164 608 0 662 72 b 534 312 662 268 596 312 b 454 249 490 312 454 292 b 505 197 454 217 475 197 b 579 230 547 197 549 230 b 626 163 603 230 626 200 b 533 71 626 101 583 71 b 377 183 487 71 441 114 b 356 232 359 203 356 206 l 356 418 b 333 441 356 433 350 441 z',\n },\n ornamentMordent: {\n x_min: 1,\n x_max: 729,\n y_min: -73,\n y_max: 319,\n ha: 392,\n o: 'm 546 265 l 546 459 l 501 459 l 501 216 l 459 167 b 439 167 454 160 445 160 b 302 327 387 228 310 317 b 258 353 291 338 282 351 b 226 340 245 353 238 348 l 20 107 b 1 73 12 98 1 84 b 30 59 1 65 9 59 b 88 94 53 59 73 79 b 144 143 107 109 124 127 b 176 161 158 154 168 161 b 197 144 183 161 189 156 l 323 10 b 351 0 328 3 340 0 b 377 9 361 0 372 3 b 498 114 392 17 475 94 l 498 -105 l 544 -105 l 544 153 b 562 160 550 157 556 160 b 585 144 569 160 576 156 b 710 10 590 135 697 24 b 737 0 716 3 727 0 b 765 9 749 0 759 3 b 1030 295 776 17 1011 274 l 1032 300 b 1050 328 1041 308 1050 318 b 1012 353 1050 343 1024 353 b 986 343 1002 353 994 348 b 854 190 971 330 871 206 b 828 176 842 180 835 176 b 802 190 818 176 809 183 b 681 333 791 202 696 320 b 645 353 668 344 657 353 b 613 340 634 353 626 350 b 580 304 600 330 590 315 z',\n },\n ornamentShortTrill: {\n x_min: 0,\n x_max: 725,\n y_min: 0,\n y_max: 245,\n ha: 245,\n o: 'm 429 167 l 301 325 b 256 353 291 338 282 350 b 225 340 246 353 238 350 b 16 105 158 268 88 186 b 0 72 9 96 0 86 b 29 58 0 63 7 58 b 71 76 42 58 55 62 l 158 154 b 174 160 163 158 168 160 b 197 143 181 160 187 154 b 321 10 203 135 310 24 b 350 0 327 3 338 0 b 377 7 361 0 372 3 l 533 148 b 554 160 543 158 550 160 b 577 143 562 160 566 156 b 703 10 585 135 690 24 b 732 0 708 3 720 0 b 759 7 743 0 753 3 b 1024 294 769 16 1005 272 b 1044 327 1032 305 1044 321 b 1005 353 1044 341 1018 353 b 979 343 996 353 988 348 b 848 189 963 330 864 204 b 821 174 837 179 828 174 b 796 189 811 174 804 181 b 674 331 783 202 688 318 b 641 351 662 343 651 351 b 606 340 628 351 619 350 b 573 304 593 328 583 315 b 444 167 533 259 491 213 b 429 167 439 161 433 161 z',\n },\n ornamentTremblement: {\n x_min: 1,\n x_max: 985,\n y_min: 0,\n y_max: 244,\n ha: 244,\n o: 'm 678 325 b 634 351 667 338 657 350 b 602 338 621 351 613 348 l 448 167 b 439 167 446 164 441 164 l 302 325 b 258 351 291 338 281 350 b 228 338 245 351 238 348 b 193 304 215 328 204 315 l 19 107 b 1 72 13 96 1 76 b 30 58 1 63 9 58 b 89 92 52 58 73 78 l 144 141 b 148 144 145 143 147 143 b 176 160 160 153 170 160 b 199 143 183 160 189 154 b 324 10 204 134 311 23 b 351 0 330 3 340 0 b 379 7 363 0 373 3 l 530 148 b 552 160 536 154 546 160 b 575 143 559 160 564 154 b 698 10 580 134 687 23 b 727 0 704 3 716 0 b 755 7 739 0 749 3 l 907 147 b 930 160 922 158 923 160 b 952 143 937 160 943 154 l 1077 10 b 1107 0 1084 3 1096 0 b 1133 7 1117 0 1128 3 b 1398 294 1143 16 1380 272 b 1418 327 1407 305 1418 321 b 1381 351 1418 343 1394 351 b 1354 341 1371 351 1362 348 b 1223 189 1338 328 1238 204 b 1195 174 1211 179 1202 174 b 1171 189 1185 174 1178 181 b 1048 331 1158 200 1063 318 b 1012 351 1035 343 1024 351 b 981 338 1002 351 994 350 b 948 304 968 328 958 315 b 827 166 907 258 865 212 b 815 166 824 163 818 163 b 678 325 760 226 732 264 z',\n },\n ornamentPrecompAppoggTrill: {\n x_min: 0,\n x_max: 1119,\n y_min: 0,\n y_max: 481,\n ha: 481,\n o: 'm 1015 163 b 873 328 963 223 880 318 b 828 354 860 344 847 353 b 796 341 816 354 809 351 b 763 305 783 331 773 317 b 642 168 721 261 681 215 b 636 163 641 167 639 164 b 494 328 585 223 501 318 b 449 354 481 344 468 353 b 418 341 438 354 431 351 b 384 305 405 331 395 317 b 264 168 343 261 302 215 l 242 144 b 144 88 232 124 171 88 b 79 197 81 88 79 189 l 79 648 b 60 693 79 683 71 693 b 52 691 58 693 55 693 b 0 616 3 672 0 625 l 0 207 b 121 0 0 40 68 0 b 249 68 168 0 232 53 b 279 94 262 75 271 86 b 336 144 298 111 315 128 b 367 163 350 156 360 163 b 389 145 374 163 380 157 b 514 12 395 137 501 26 b 543 1 520 4 531 1 b 569 9 553 1 563 4 b 636 73 576 14 605 43 l 658 94 b 714 144 677 111 694 128 b 746 163 729 156 739 163 b 768 145 753 163 759 157 b 893 12 773 137 880 26 b 922 1 899 4 910 1 b 948 9 932 1 942 4 l 1012 71 b 1037 94 1022 78 1030 86 b 1092 144 1054 111 1073 128 b 1123 161 1106 156 1115 161 b 1146 145 1130 161 1136 157 b 1270 12 1152 137 1259 26 b 1299 1 1276 4 1287 1 b 1326 9 1310 1 1320 4 b 1591 297 1336 19 1572 275 b 1611 328 1600 307 1611 320 b 1574 354 1611 343 1585 354 b 1548 344 1565 354 1555 350 b 1416 192 1532 331 1431 206 b 1388 177 1404 181 1395 177 b 1365 190 1380 177 1371 184 b 1243 333 1352 203 1256 321 b 1205 354 1228 346 1217 354 b 1174 341 1195 354 1187 351 b 1140 305 1161 330 1152 317 z',\n },\n ornamentPrecompSlideTrillDAnglebert: {\n x_min: 2,\n x_max: 1150,\n y_min: -367,\n y_max: 245,\n ha: 612,\n o: 'm 1058 160 b 916 327 1007 220 923 317 b 871 353 903 343 890 351 b 840 340 860 353 852 350 b 806 304 827 330 816 315 b 685 167 765 259 724 213 l 680 160 l 615 235 b 419 344 582 275 523 344 b 3 -144 258 344 3 26 b 4 -168 3 -153 3 -160 b 246 -482 24 -315 99 -422 b 458 -528 340 -521 410 -528 b 514 -526 485 -528 504 -526 b 552 -508 531 -526 552 -517 b 514 -497 552 -503 541 -498 l 503 -497 b 194 -390 432 -494 298 -488 b 69 -151 194 -390 69 -279 b 184 96 69 -60 128 27 b 328 183 202 118 258 183 b 477 96 413 183 454 118 b 559 10 510 62 552 19 b 588 0 566 3 576 0 b 613 7 598 0 609 3 b 723 112 622 14 681 73 b 789 161 733 122 776 161 b 811 144 796 161 802 156 b 936 10 816 135 923 24 b 965 0 942 3 953 0 b 991 7 975 0 985 3 b 1051 66 996 12 1022 37 b 1081 92 1063 73 1073 84 b 1136 143 1099 109 1117 127 b 1168 160 1151 154 1159 160 b 1191 144 1175 160 1181 156 b 1315 10 1197 135 1303 24 b 1344 0 1320 3 1332 0 b 1371 7 1355 0 1365 3 b 1636 295 1381 17 1617 274 b 1656 327 1644 305 1656 318 b 1619 353 1656 341 1630 353 b 1593 343 1610 353 1600 348 b 1460 190 1577 330 1476 204 b 1433 176 1449 180 1440 176 b 1410 189 1424 176 1416 183 b 1287 331 1397 202 1300 320 b 1250 353 1273 344 1261 353 b 1218 340 1240 353 1231 350 b 1185 304 1205 328 1197 315 z',\n },\n ornamentPrecompSlideTrillBach: {\n x_min: 0,\n x_max: 1048,\n y_min: -367,\n y_max: 331,\n ha: 698,\n o: 'm 1038 477 l 979 477 l 979 238 l 912 160 b 769 327 858 220 775 317 b 724 353 756 343 743 351 b 693 340 713 353 706 350 b 660 304 680 330 670 315 b 539 167 618 259 577 213 b 533 161 536 166 534 163 b 390 327 480 220 396 317 b 346 353 377 343 364 351 l 340 353 b 308 340 330 353 321 350 b 275 304 295 330 285 315 b 117 122 220 243 168 186 b 0 -144 68 62 0 -48 b 1 -168 0 -153 0 -160 b 243 -482 22 -315 96 -422 b 455 -528 337 -521 408 -528 b 511 -526 482 -528 501 -526 b 549 -508 528 -526 549 -517 b 511 -497 549 -503 539 -498 l 500 -497 b 192 -390 429 -494 295 -488 b 68 -177 192 -390 84 -298 b 66 -151 66 -168 66 -160 b 189 105 66 -58 127 35 b 232 143 203 118 216 131 b 264 161 246 154 256 161 b 285 144 271 161 276 156 b 410 10 291 135 397 24 b 439 0 416 3 428 0 b 465 7 449 0 459 3 l 531 72 b 554 92 540 78 547 86 b 611 143 573 109 590 127 b 642 161 625 154 635 161 b 664 144 649 161 655 156 b 789 10 670 135 776 24 b 818 0 795 3 806 0 b 844 7 828 0 838 3 b 904 66 850 12 876 37 b 935 92 916 73 924 84 b 979 134 949 107 963 121 l 979 -88 l 1037 -88 l 1037 151 l 1044 144 b 1168 10 1050 135 1156 24 b 1197 0 1174 3 1185 0 b 1224 7 1208 0 1218 3 b 1489 295 1234 17 1470 274 b 1509 327 1498 305 1509 318 b 1472 353 1509 341 1483 353 b 1446 343 1463 353 1453 348 b 1313 190 1430 330 1329 204 b 1286 176 1302 180 1293 176 b 1263 189 1277 176 1269 183 b 1140 331 1250 202 1153 320 b 1103 353 1126 344 1115 353 b 1071 340 1093 353 1084 350 b 1038 304 1058 328 1050 315 z',\n },\n ornamentPrecompTrillSuffixDandrieu: {\n x_min: 0,\n x_max: 949,\n y_min: 0,\n y_max: 381,\n ha: 381,\n o: 'm 1367 314 b 1250 521 1367 419 1318 482 b 1107 549 1211 537 1145 549 b 1083 546 1096 549 1087 549 b 1066 528 1071 540 1066 534 b 1079 520 1066 524 1070 520 b 1323 351 1187 517 1323 487 b 1201 171 1323 269 1260 219 b 1194 166 1201 171 1198 168 b 1056 327 1142 226 1063 317 b 1011 353 1043 343 1030 351 b 979 340 999 353 992 350 b 946 304 966 330 956 315 b 825 167 904 259 864 213 l 821 161 b 678 327 768 222 685 317 b 634 353 665 343 652 351 b 602 340 622 353 615 350 b 569 304 589 330 579 315 b 448 167 527 259 487 213 l 444 161 b 301 327 390 222 308 317 b 256 353 288 343 275 351 b 225 340 245 353 238 350 b 192 304 212 330 202 315 b 71 167 150 259 109 213 b 17 105 52 147 36 127 b 0 73 10 98 0 84 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 174 161 157 154 167 161 b 196 144 181 161 187 156 b 321 10 202 135 308 24 b 350 0 327 3 338 0 b 376 7 360 0 370 3 b 485 112 384 14 444 73 b 552 161 495 122 539 161 b 573 144 559 161 564 156 b 698 10 579 135 685 24 b 727 0 704 3 716 0 b 753 7 737 0 747 3 b 863 112 762 14 821 73 b 929 161 873 122 916 161 b 950 144 936 161 942 156 b 1076 10 956 135 1063 24 b 1104 0 1081 3 1093 0 b 1130 7 1115 0 1125 3 b 1236 108 1139 14 1195 69 b 1367 314 1297 160 1367 233 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefix: {\n x_min: 0,\n x_max: 1278,\n y_min: 0,\n y_max: 247,\n ha: 247,\n o: 'm 1801 356 b 1776 346 1793 356 1783 351 b 1642 192 1760 333 1659 206 b 1614 177 1630 181 1621 177 b 1591 190 1606 177 1597 184 b 1469 334 1578 203 1482 323 b 1430 356 1453 347 1441 356 b 1398 343 1420 356 1411 353 b 1365 307 1385 331 1377 318 l 1240 164 b 1097 330 1187 226 1104 320 b 1053 356 1084 346 1071 354 b 1021 343 1041 356 1034 353 b 988 307 1008 333 998 318 b 865 168 946 262 904 216 l 861 163 b 717 330 808 223 724 320 b 672 356 704 346 691 354 b 641 343 661 356 654 353 b 608 307 628 333 618 318 b 485 168 566 262 524 216 l 455 134 b 284 46 409 88 351 46 b 16 285 148 46 32 265 b 3 295 9 292 4 295 b 0 291 1 295 0 292 b 1 285 0 288 1 285 b 308 0 42 190 157 0 b 530 120 415 1 482 63 b 559 144 539 128 549 137 b 590 163 573 156 583 163 b 612 145 598 163 603 157 b 739 10 618 137 724 24 b 768 0 744 3 756 0 b 793 7 778 0 788 3 b 903 114 802 14 861 75 l 939 144 b 971 163 953 156 963 163 b 992 145 978 163 984 157 b 1119 10 998 137 1106 24 b 1148 0 1125 3 1136 0 b 1174 7 1158 0 1168 3 b 1284 114 1182 14 1241 75 b 1316 144 1282 115 1312 141 b 1348 161 1331 156 1339 161 b 1371 145 1355 161 1361 157 b 1496 10 1377 137 1485 24 b 1525 0 1502 3 1513 0 b 1552 7 1536 0 1547 3 b 1819 298 1562 17 1800 276 b 1840 330 1829 308 1840 320 b 1832 344 1840 334 1837 340 b 1801 356 1820 351 1810 356 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefixTurn: {\n x_min: 0,\n x_max: 1277,\n y_min: -62,\n y_max: 333,\n ha: 395,\n o: 'm 1273 202 l 1273 480 l 1230 480 l 1230 174 l 1097 328 b 1053 354 1084 344 1071 353 b 1021 341 1041 354 1034 351 b 988 305 1008 331 998 317 b 865 167 945 261 904 215 l 861 161 b 717 328 808 222 724 318 b 672 354 704 344 691 353 b 641 341 661 354 654 351 b 608 305 628 331 618 317 b 485 167 564 261 524 215 b 455 132 474 156 465 144 b 284 45 410 88 350 45 b 14 284 148 45 30 264 b 3 294 9 291 4 294 b 0 289 1 294 0 291 b 1 284 0 287 1 284 b 308 -1 42 189 157 -1 b 530 118 415 0 481 62 b 557 143 539 127 547 135 b 590 161 572 154 582 161 b 612 144 598 161 603 156 b 737 9 618 135 724 24 b 768 -1 743 1 755 -1 b 793 6 778 -1 788 1 b 903 112 802 13 861 73 l 937 143 b 971 161 953 154 963 161 b 992 144 978 161 984 156 b 1117 9 998 135 1104 24 b 1148 -1 1123 1 1136 -1 b 1174 6 1158 -1 1168 1 l 1230 60 l 1230 -89 l 1273 -89 l 1273 102 l 1283 112 b 1348 160 1295 125 1332 160 b 1371 144 1355 160 1361 156 b 1496 9 1377 135 1483 24 b 1525 -1 1502 1 1513 -1 b 1552 6 1536 -1 1547 1 b 1819 297 1562 16 1800 275 b 1839 328 1827 307 1839 320 b 1801 354 1839 343 1813 354 b 1776 344 1793 354 1783 350 b 1642 190 1760 331 1657 206 b 1614 176 1630 180 1621 176 b 1591 189 1606 176 1597 183 b 1467 333 1578 203 1480 321 b 1430 354 1453 346 1441 354 b 1398 341 1420 354 1411 351 b 1365 305 1385 330 1377 317 z',\n },\n ornamentPrecompTrillLowerSuffix: {\n x_min: 0,\n x_max: 859,\n y_min: -222,\n y_max: 246,\n ha: 468,\n o: 'm 1164 217 b 1031 351 1138 259 1063 351 b 1011 337 1020 351 1024 347 b 828 167 952 291 886 217 l 824 164 b 683 328 772 225 690 318 b 638 354 670 344 657 353 b 606 341 626 354 619 351 b 573 305 593 331 583 317 b 451 167 530 261 490 215 l 446 161 b 302 328 393 222 310 318 b 258 354 289 344 276 353 b 226 341 246 354 239 351 b 193 305 213 331 203 317 b 71 167 150 261 109 215 b 17 105 52 147 36 127 b 0 73 10 98 0 84 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 176 161 157 154 168 161 b 197 144 183 161 189 156 b 323 9 203 135 310 23 b 353 -1 328 1 340 -1 b 379 6 363 -1 373 1 b 488 112 387 13 446 73 l 523 143 b 556 161 539 154 549 161 b 577 144 563 161 569 156 b 703 9 583 135 690 23 b 733 -1 708 1 721 -1 b 759 6 743 -1 753 1 b 868 112 768 13 827 73 b 955 183 878 122 943 183 b 1081 107 965 183 1031 153 b 1156 -89 1128 63 1156 6 l 1156 -102 b 948 -297 1156 -204 1048 -297 b 806 -271 904 -297 850 -282 l 792 -266 b 801 -288 792 -268 795 -282 b 948 -320 809 -297 880 -320 b 1237 -50 1092 -320 1237 -199 b 1164 217 1237 75 1218 122 z',\n },\n brassScoop: {\n x_min: 1,\n x_max: 320,\n y_min: -373,\n y_max: 13,\n ha: 386,\n o: 'm 35 -537 b 461 -12 194 -518 461 -289 b 438 19 461 13 451 19 b 410 -9 425 19 413 9 b 35 -425 357 -366 92 -403 b 1 -482 13 -433 1 -438 l 1 -505 b 26 -537 1 -526 3 -537 z',\n },\n brassDoitMedium: {\n x_min: 0,\n x_max: 489,\n y_min: -40,\n y_max: 346,\n ha: 386,\n o: 'm 33 -58 b 704 468 255 -58 683 186 b 681 498 704 494 693 498 b 654 471 668 498 658 488 b 33 55 550 118 91 76 b 0 -3 12 46 0 42 l 0 -26 b 24 -58 0 -46 1 -58 z',\n },\n brassFallLipShort: {\n x_min: 1,\n x_max: 293,\n y_min: -345,\n y_max: 42,\n ha: 387,\n o: 'm 22 60 b 1 35 4 60 1 52 l 1 6 b 26 -50 3 -40 10 -43 b 32 -52 27 -50 30 -50 b 376 -469 85 -73 327 -111 b 400 -497 379 -487 387 -497 b 422 -467 412 -497 422 -491 b 32 60 422 -187 177 40 z',\n },\n brassLiftMedium: {\n x_min: 0,\n x_max: 811,\n y_min: 0,\n y_max: 852,\n ha: 852,\n o: 'm 1138 1220 b 1135 1225 1135 1223 1135 1224 b 1129 1227 1133 1227 1130 1227 b 1117 1207 1122 1227 1117 1212 l 1117 1201 b 1109 1164 1117 1187 1117 1172 b 1100 1156 1107 1161 1104 1158 b 959 1104 1058 1128 995 1140 b 929 1032 936 1081 929 1056 b 932 1007 929 1024 930 1015 b 923 976 932 995 930 985 l 914 971 b 773 919 873 942 809 955 b 743 847 750 896 743 870 b 746 821 743 838 744 829 b 737 791 746 809 744 799 l 729 783 b 588 733 687 756 624 769 b 557 661 564 710 557 684 b 560 635 557 652 559 644 b 552 605 560 624 559 612 l 543 598 b 402 547 501 570 438 583 b 372 475 379 524 372 498 b 374 449 372 467 373 458 b 366 419 374 438 373 426 l 357 412 b 216 361 315 384 252 397 b 186 289 193 338 186 312 b 189 264 186 281 187 272 b 180 233 189 252 187 240 b 171 226 177 232 174 229 b 30 176 130 199 66 212 b 0 104 7 153 0 128 b 33 0 0 88 14 0 b 49 17 40 0 49 10 b 71 63 52 35 56 49 b 212 115 102 95 154 59 b 239 186 230 134 239 160 b 236 210 239 194 238 202 b 256 249 239 225 243 236 b 397 301 288 281 340 245 b 425 372 416 320 425 346 b 422 396 425 380 423 387 b 442 435 425 410 429 422 b 583 487 474 467 526 431 b 611 557 602 505 611 531 b 608 582 611 566 609 573 b 628 621 611 596 615 608 b 769 672 660 652 711 618 b 796 743 788 691 796 717 b 793 768 796 752 795 759 b 814 806 796 782 801 793 b 955 858 845 838 897 804 b 982 929 973 877 982 903 b 979 953 982 937 981 945 b 999 992 982 968 986 979 b 1140 1045 1031 1024 1083 989 b 1168 1116 1161 1066 1168 1090 b 1138 1220 1168 1162 1145 1207 z',\n },\n brassFallRoughMedium: {\n x_min: 0,\n x_max: 811,\n y_min: 0,\n y_max: 852,\n ha: 852,\n o: 'm 30 1220 b 0 1116 23 1207 0 1162 b 27 1045 0 1090 7 1066 b 168 992 85 989 137 1024 b 189 953 181 979 186 968 b 186 929 187 945 186 937 b 213 858 186 903 194 877 b 354 806 271 804 323 838 b 374 768 367 793 372 782 b 372 743 373 759 372 752 b 399 672 372 717 380 691 b 540 621 456 618 508 652 b 560 582 553 608 557 596 b 557 557 559 573 557 566 b 585 487 557 531 566 505 b 726 435 642 431 694 467 b 746 396 739 422 743 410 b 743 372 744 387 743 380 b 770 301 743 346 752 320 b 912 249 828 245 880 281 b 932 210 924 236 929 225 b 929 186 930 202 929 194 b 956 115 929 160 937 134 b 1097 63 1014 59 1066 95 b 1119 17 1112 49 1116 35 b 1135 0 1119 10 1128 0 b 1168 104 1153 0 1168 91 b 1138 176 1168 128 1161 153 b 996 226 1102 212 1038 199 b 988 233 994 229 991 232 b 979 264 981 240 979 252 b 982 289 981 272 982 281 b 952 361 982 312 975 338 b 811 412 916 397 852 384 l 802 419 b 793 449 795 426 793 438 b 796 475 795 458 796 467 b 766 547 796 498 789 524 b 625 598 730 583 667 570 l 616 605 b 608 635 609 612 608 624 b 611 661 609 644 611 652 b 580 733 611 684 603 710 b 439 783 544 769 481 756 l 431 791 b 422 821 423 799 422 809 b 425 847 423 829 425 838 b 395 919 425 870 418 896 b 253 971 359 955 295 942 l 245 976 b 236 1007 238 985 236 995 b 239 1032 238 1015 239 1024 b 209 1104 239 1056 232 1081 b 68 1156 173 1140 109 1128 b 59 1164 63 1158 60 1161 b 50 1201 50 1172 50 1187 l 50 1207 b 39 1227 50 1212 46 1227 b 33 1225 37 1227 35 1227 b 30 1220 33 1224 33 1223 z',\n },\n brassBend: {\n x_min: 0,\n x_max: 392,\n y_min: 0,\n y_max: 282,\n ha: 282,\n o: 'm 282 0 b 552 72 369 0 456 23 b 564 92 560 75 564 84 l 564 383 b 541 406 564 395 554 406 b 518 383 528 406 518 395 l 518 107 b 282 46 435 65 357 46 b 46 107 207 46 130 65 l 46 383 b 23 406 46 395 36 406 b 0 383 10 406 0 395 l 0 92 b 13 72 0 84 4 75 b 282 0 108 23 196 0 z',\n },\n brassMuteClosed: {\n x_min: 0,\n x_max: 272,\n y_min: 0,\n y_max: 272,\n ha: 272,\n o: 'm 392 219 l 219 219 l 219 392 l 173 392 l 173 219 l 0 219 l 0 173 l 173 173 l 173 0 l 219 0 l 219 173 l 392 173 z',\n },\n brassMuteOpen: {\n x_min: 0,\n x_max: 304,\n y_min: 0,\n y_max: 304,\n ha: 304,\n o: 'm 219 0 b 438 219 340 0 438 98 b 219 438 438 340 340 438 b 0 219 98 438 0 340 b 219 0 0 98 98 0 z m 219 392 b 392 219 314 392 392 314 b 219 46 392 124 314 46 b 46 219 124 46 46 124 b 219 392 46 314 124 392 z',\n },\n brassFlip: {\n x_min: 0,\n x_max: 379,\n y_min: 0,\n y_max: 282,\n ha: 282,\n o: 'm 523 0 b 541 9 530 0 536 3 b 546 22 544 13 546 17 b 536 42 546 29 541 36 l 36 402 b 23 406 33 405 27 406 b 0 383 12 406 0 395 l 0 23 b 23 0 0 10 10 0 b 46 23 36 0 46 10 l 46 337 l 508 4 b 523 0 513 1 517 0 z',\n },\n brassJazzTurn: {\n x_min: 0,\n x_max: 620,\n y_min: 0,\n y_max: 245,\n ha: 245,\n o: 'm 792 190 b 765 176 780 179 772 176 b 740 190 755 176 747 183 b 629 325 727 202 644 312 b 593 347 616 338 605 347 b 562 334 583 346 575 344 b 528 298 549 323 539 310 l 406 176 b 389 168 406 176 399 168 b 374 176 384 168 379 170 b 245 325 360 192 245 325 b 200 353 232 343 219 351 b 168 340 190 353 181 350 l 17 156 b 0 121 10 147 0 132 b 16 107 0 114 4 108 b 84 143 26 107 76 137 b 118 160 92 150 108 160 b 141 143 125 160 131 154 b 265 10 147 135 253 24 b 294 0 271 3 282 0 b 321 7 305 0 315 3 b 498 160 321 7 478 158 b 521 143 505 160 513 154 b 647 10 528 135 635 24 b 675 0 652 3 664 0 b 703 7 687 0 697 3 b 874 186 713 16 855 164 b 893 220 881 196 893 212 b 873 245 890 235 883 243 b 796 194 847 245 815 213 z',\n },\n brassSmear: {\n x_min: 1,\n x_max: 306,\n y_min: 0,\n y_max: 170,\n ha: 170,\n o: 'm 193 79 b 308 0 219 50 264 0 b 439 117 396 0 438 102 b 439 120 439 118 439 118 l 441 125 b 441 128 441 127 441 127 b 433 141 441 135 439 141 b 416 130 429 141 423 137 b 343 94 390 107 370 94 b 269 153 315 94 294 121 l 265 158 b 144 245 239 190 180 245 b 6 134 62 245 10 143 b 1 114 3 125 1 118 b 7 107 1 108 4 107 b 36 122 13 107 22 112 b 92 151 55 137 65 151 b 183 89 125 151 161 112 b 189 84 184 88 187 86 z',\n },\n stringsDownBow: {\n x_min: 0,\n x_max: 312,\n y_min: 0,\n y_max: 318,\n ha: 318,\n o: 'm 37 458 b 0 420 17 458 0 441 l 0 17 b 17 0 0 7 9 0 l 37 0 b 55 17 46 0 55 7 l 55 253 b 225 278 55 269 140 278 b 395 253 310 278 395 269 l 395 17 b 413 0 395 7 403 0 l 432 0 b 449 17 441 0 449 7 l 449 420 b 412 458 449 441 432 458 z',\n },\n stringsUpBow: {\n x_min: 1,\n x_max: 249,\n y_min: 1,\n y_max: 495,\n ha: 494,\n o: 'm 181 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 z',\n },\n stringsHarmonic: {\n x_min: 0,\n x_max: 200,\n y_min: 0,\n y_max: 200,\n ha: 200,\n o: 'm 288 144 b 144 288 288 225 223 288 b 0 144 65 288 0 225 b 144 0 0 65 65 0 b 288 144 223 0 288 65 z m 144 249 b 249 144 203 249 249 203 b 144 39 249 86 203 39 b 39 144 86 39 39 86 b 144 249 39 203 86 249 z',\n },\n pluckedSnapPizzicatoAbove: {\n x_min: 0,\n x_max: 200,\n y_min: 0,\n y_max: 300,\n ha: 300,\n o: 'm 0 144 b 144 0 0 63 65 0 b 288 144 223 0 288 63 b 167 285 288 215 235 275 l 167 432 l 121 432 l 121 285 b 0 144 52 275 0 215 z m 121 246 l 121 144 l 167 144 l 167 246 b 249 144 213 236 249 193 b 144 39 249 85 202 39 b 39 144 85 39 39 85 b 121 246 39 193 73 236 z',\n },\n pluckedSnapPizzicatoBelow: {\n x_min: 0,\n x_max: 200,\n y_min: 0,\n y_max: 300,\n ha: 300,\n o: 'm 288 288 b 144 432 288 369 223 432 b 0 288 65 432 0 369 b 121 145 0 216 52 157 l 121 0 l 167 0 l 167 145 b 288 288 235 157 288 216 z m 167 186 l 167 288 l 121 288 l 121 186 b 39 288 75 196 39 238 b 144 393 39 347 86 393 b 249 288 203 393 249 347 b 167 186 249 238 215 196 z',\n },\n pluckedLeftHandPizzicato: {\n x_min: 0,\n x_max: 272,\n y_min: 0,\n y_max: 272,\n ha: 272,\n o: 'm 392 219 l 219 219 l 219 392 l 173 392 l 173 219 l 0 219 l 0 173 l 173 173 l 173 0 l 219 0 l 219 173 l 392 173 z',\n },\n keyboardPedalPed: {\n x_min: 0,\n x_max: 1019,\n y_min: -8,\n y_max: 555,\n ha: 563,\n o: 'm 413 799 b 179 749 327 798 261 789 b 0 517 107 713 0 632 b 122 376 0 454 37 376 b 240 540 189 376 240 452 b 225 586 240 579 233 586 b 204 549 213 586 212 573 b 138 480 199 527 181 480 b 85 549 96 480 85 517 l 85 554 b 353 762 89 690 230 762 b 373 752 364 762 373 760 b 351 708 373 740 360 723 b 274 546 330 675 274 585 b 353 416 274 508 333 444 b 412 304 372 390 412 351 b 382 228 412 275 403 256 b 334 190 363 202 361 200 b 147 29 271 167 147 88 b 196 -12 147 4 171 -12 b 343 108 239 -12 279 33 l 363 132 b 387 150 370 141 376 150 b 543 -4 445 150 467 -4 b 631 42 567 -4 586 0 l 668 78 b 685 89 674 84 680 89 b 696 75 688 89 690 86 b 809 -9 717 29 753 -9 b 946 66 854 -9 894 13 b 988 107 971 92 981 107 b 1002 89 994 107 996 99 b 1152 -4 1030 36 1077 -4 b 1329 248 1238 -4 1329 82 b 792 717 1329 556 1047 665 b 766 720 785 719 775 720 b 747 703 752 720 747 711 b 780 680 747 693 756 685 b 1223 222 1028 621 1223 504 b 1152 39 1223 122 1205 39 b 1073 229 1104 39 1073 132 b 1132 423 1073 314 1086 377 b 1142 442 1140 432 1142 436 b 1126 458 1142 451 1136 458 b 1093 446 1119 458 1109 455 b 975 216 1022 408 975 337 l 975 190 b 943 121 975 160 972 150 b 852 69 899 76 877 69 b 776 148 816 69 786 117 b 773 163 775 154 773 158 b 786 177 773 167 776 170 l 801 187 b 937 366 867 235 937 284 b 844 454 937 422 900 454 b 665 217 711 454 665 331 b 671 153 665 197 667 176 l 671 147 b 662 134 671 143 670 140 b 605 111 639 118 625 111 b 521 160 572 111 546 135 b 451 203 497 184 474 197 b 426 212 435 207 426 206 b 436 230 426 216 429 220 b 510 389 464 269 510 340 b 429 521 510 435 480 462 b 369 629 387 570 369 599 b 402 720 369 648 384 691 b 462 763 425 759 446 763 b 611 624 540 763 611 704 b 564 575 611 592 590 575 b 501 602 540 575 520 582 b 474 622 492 611 487 622 b 459 603 465 622 459 615 b 603 471 459 570 510 471 b 711 588 670 471 711 524 b 422 799 711 742 554 799 z m 815 403 b 848 343 838 403 848 383 b 780 226 848 295 824 261 b 765 217 773 220 768 217 b 759 228 762 217 759 220 b 756 282 757 245 756 262 b 815 403 756 346 772 403 z m 1405 124 b 1344 62 1369 124 1344 98 b 1405 0 1344 26 1369 0 b 1467 62 1441 0 1467 26 b 1405 124 1467 98 1441 124 z',\n },\n keyboardPedalUp: {\n x_min: 0,\n x_max: 450,\n y_min: 0,\n y_max: 450,\n ha: 450,\n o: 'm 582 396 b 516 367 554 396 533 384 b 465 340 495 347 487 340 l 458 340 b 412 377 432 340 412 348 b 432 409 412 387 419 396 l 438 415 b 490 429 451 428 464 429 b 575 501 534 429 575 452 b 501 575 575 541 541 575 b 429 490 452 575 429 534 b 415 438 429 464 428 451 l 409 432 b 377 412 396 419 387 412 b 340 458 348 412 340 432 l 340 465 b 367 516 340 487 347 495 b 396 582 384 533 396 554 b 324 648 396 625 363 648 b 252 582 285 648 252 625 b 281 516 252 554 264 533 b 308 465 301 495 308 487 l 308 458 b 271 412 308 432 300 412 b 239 432 261 412 252 419 l 233 438 b 219 490 220 451 219 464 b 147 575 219 534 196 575 b 73 501 107 575 73 541 b 158 429 73 452 114 429 b 210 415 184 429 197 428 l 216 409 b 236 377 229 396 236 387 b 190 340 236 348 216 340 l 183 340 b 132 367 161 340 153 347 b 66 396 115 384 94 396 b 0 324 23 396 0 363 b 66 252 0 285 23 252 b 132 281 94 252 115 264 b 183 308 153 301 161 308 l 190 308 b 236 271 216 308 236 300 b 216 239 236 261 229 252 l 210 233 b 158 219 197 220 184 219 b 73 147 114 219 73 196 b 147 73 73 107 107 73 b 219 158 196 73 219 114 b 233 210 219 184 220 197 l 239 216 b 271 236 252 229 261 236 b 308 190 300 236 308 216 l 308 183 b 281 132 308 161 301 153 b 252 66 264 115 252 94 b 324 0 252 23 285 0 b 396 66 363 0 396 23 b 367 132 396 94 384 115 b 340 183 347 153 340 161 l 340 190 b 377 236 340 216 348 236 b 409 216 387 236 396 229 l 415 210 b 429 158 428 197 429 184 b 501 73 429 114 452 73 b 575 147 541 73 575 107 b 490 219 575 196 534 219 b 438 233 464 219 451 220 l 432 239 b 412 271 419 252 412 261 b 458 308 412 300 432 308 l 465 308 b 516 281 487 308 495 301 b 582 252 533 264 554 252 b 648 324 625 252 648 285 b 582 396 648 363 625 396 z m 324 271 b 271 324 291 271 271 291 b 324 377 271 357 291 377 b 377 324 357 377 377 357 b 324 271 377 291 357 271 z',\n },\n pictChokeCymbal: {\n x_min: 1,\n x_max: 152,\n y_min: 2,\n y_max: 251,\n ha: 249,\n o: 'm 104 361 b 1 271 42 361 1 321 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 17 32 29 26 26 l 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 z',\n },\n wiggleArpeggiatoUp: {\n x_min: -33,\n x_max: 292,\n y_min: 0,\n y_max: 119,\n ha: 119,\n o: 'm 130 171 b -39 68 16 171 -14 91 b -48 53 -45 62 -48 58 b -29 42 -48 46 -39 42 b -10 46 -23 42 -16 43 b 56 63 12 56 29 63 b 248 0 121 63 135 0 b 419 127 361 0 410 104 b 420 132 420 130 420 131 b 412 140 420 137 416 140 b 386 130 403 140 392 134 b 334 107 367 117 353 107 b 318 108 330 107 324 107 b 240 138 289 112 265 128 b 130 171 209 153 168 171 z',\n },\n arrowheadBlackUp: {\n x_min: 0,\n x_max: 228,\n y_min: 0,\n y_max: 299,\n ha: 299,\n o: 'm 166 431 b 0 20 111 274 0 30 b 16 0 0 12 6 0 l 17 1 b 166 50 43 16 160 50 b 310 1 171 50 289 13 l 311 0 b 328 20 321 0 328 12 b 166 431 328 30 220 274 z',\n },\n arrowheadBlackDown: {\n x_min: 0,\n x_max: 228,\n y_min: 0,\n y_max: 299,\n ha: 299,\n o: 'm 166 0 b 328 410 220 157 328 400 b 311 431 328 419 321 431 l 310 429 b 166 380 289 418 171 380 b 17 429 160 380 43 415 l 16 431 b 0 410 6 431 0 419 b 166 0 0 400 111 157 z',\n },\n arpeggiatoUp: {\n x_min: 1,\n x_max: 229,\n y_min: 7,\n y_max: 1511,\n ha: 1504,\n o: 'm 219 1848 l 330 1848 l 164 2176 l 1 1848 l 121 1848 b 92 1778 115 1822 101 1800 l 89 1773 b 59 1668 75 1741 59 1702 b 96 1555 59 1614 76 1580 b 99 1551 98 1554 99 1551 l 102 1547 b 124 1496 115 1531 124 1515 b 122 1482 124 1492 124 1488 b 92 1404 118 1453 102 1428 b 59 1293 78 1372 59 1332 b 105 1172 59 1234 81 1198 b 124 1120 118 1155 124 1143 l 122 1113 b 122 1110 122 1113 122 1112 b 92 1032 118 1081 102 1057 b 59 922 78 1001 59 960 b 115 792 59 855 86 816 b 124 760 121 782 124 773 b 122 744 124 756 124 750 b 92 667 118 716 102 693 b 59 556 78 635 59 595 b 108 433 59 495 82 458 b 124 389 117 420 124 408 b 122 374 124 384 124 379 b 92 298 118 346 102 323 l 89 292 b 59 186 75 261 59 222 b 163 19 59 73 140 42 b 177 10 168 13 173 10 b 189 29 184 10 189 19 b 184 48 189 35 187 42 b 167 114 174 69 167 85 b 230 305 167 179 229 193 b 181 423 230 357 209 396 b 167 484 173 442 167 458 b 230 675 167 547 229 563 b 179 796 230 729 206 769 b 167 850 171 812 167 827 b 230 1040 167 913 229 929 b 183 1158 230 1092 209 1130 b 167 1220 173 1178 167 1194 b 230 1411 167 1284 229 1300 b 186 1526 230 1462 210 1499 b 167 1594 176 1529 167 1584 b 230 1786 167 1659 229 1673 b 219 1848 230 1809 226 1829 z',\n },\n arpeggiatoDown: {\n x_min: 1,\n x_max: 229,\n y_min: -4,\n y_max: 1500,\n ha: 1504,\n o: 'm 219 323 b 230 384 226 341 230 361 b 167 576 229 497 167 511 b 186 644 167 586 176 641 b 230 759 210 671 230 708 b 167 950 229 870 167 886 b 183 1012 167 976 173 992 b 230 1130 209 1040 230 1079 b 167 1320 229 1241 167 1257 b 179 1374 167 1344 171 1358 b 230 1495 206 1401 230 1441 b 167 1686 229 1607 167 1623 b 181 1747 167 1712 173 1728 b 230 1865 209 1774 230 1813 b 167 2056 229 1977 167 1992 b 184 2123 167 2085 174 2101 b 189 2141 187 2128 189 2136 b 177 2160 189 2151 184 2160 b 163 2151 173 2160 168 2157 b 59 1984 140 2128 59 2097 b 89 1878 59 1948 75 1909 l 92 1872 b 122 1796 102 1848 118 1824 b 124 1781 124 1791 124 1786 b 108 1737 124 1763 117 1750 b 59 1614 82 1712 59 1675 b 92 1503 59 1575 78 1535 b 122 1426 102 1477 118 1454 b 124 1410 124 1420 124 1414 b 115 1378 124 1397 121 1388 b 59 1248 86 1354 59 1315 b 92 1138 59 1210 78 1169 b 122 1060 102 1113 118 1089 b 122 1057 122 1058 122 1058 l 124 1050 b 105 998 124 1027 118 1015 b 59 877 81 972 59 936 b 92 766 59 838 78 798 b 122 688 102 742 118 717 b 124 674 124 683 124 678 b 102 624 124 655 115 639 l 99 619 b 96 615 99 619 98 616 b 59 503 76 590 59 556 b 89 397 59 468 75 429 l 92 392 b 121 323 101 370 115 348 l 1 323 l 164 -6 l 330 323 z',\n },\n repeat1Bar: {\n x_min: 0,\n x_max: 532,\n y_min: -250,\n y_max: 279,\n ha: 529,\n o: 'm 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 675 -71 b 586 -161 626 -71 586 -111 b 675 -251 586 -210 626 -251 b 766 -161 726 -251 766 -210 b 675 -71 766 -111 726 -71 z',\n },\n repeat2Bars: {\n x_min: 0,\n x_max: 762,\n y_min: -250,\n y_max: 279,\n ha: 529,\n o: 'm 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 b 343 -360 331 -356 336 -360 l 485 -360 b 516 -340 498 -360 508 -348 z m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 1007 -71 b 917 -161 958 -71 917 -111 b 1007 -251 917 -210 958 -251 b 1097 -161 1057 -251 1097 -210 b 1007 -71 1097 -111 1057 -71 z',\n },\n repeat4Bars: {\n x_min: 0,\n x_max: 1232,\n y_min: -250,\n y_max: 279,\n ha: 529,\n o: 'm 1767 380 b 1774 395 1771 386 1774 390 b 1765 402 1774 399 1771 402 l 1613 402 b 1587 380 1604 402 1597 393 l 1012 -340 b 1008 -350 1009 -343 1008 -347 b 1020 -360 1008 -356 1012 -360 l 1162 -360 b 1192 -340 1175 -360 1185 -348 z m 1436 380 b 1443 395 1440 386 1443 390 b 1434 402 1443 399 1440 402 l 1282 402 b 1256 380 1273 402 1266 393 l 681 -340 b 677 -350 678 -343 677 -347 b 688 -360 677 -356 681 -360 l 831 -360 b 861 -340 844 -360 854 -348 z m 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 b 343 -360 331 -356 336 -360 l 485 -360 b 516 -340 498 -360 508 -348 z m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 1683 -71 b 1594 -161 1634 -71 1594 -111 b 1683 -251 1594 -210 1634 -251 b 1774 -161 1734 -251 1774 -210 b 1683 -71 1774 -111 1734 -71 z',\n },\n repeatBarSlash: {\n x_min: 0,\n x_max: 532,\n y_min: -250,\n y_max: 279,\n ha: 529,\n o: 'm 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z',\n },\n csymDiminished: {\n x_min: 0,\n x_max: 473,\n y_min: 0,\n y_max: 473,\n ha: 473,\n o: 'm 341 681 b 0 341 153 681 0 530 b 341 0 0 153 153 0 b 681 341 530 0 681 153 b 341 681 681 530 530 681 z m 341 618 b 618 341 495 618 618 495 b 341 63 618 189 494 63 b 63 341 187 63 63 187 b 341 618 63 494 189 618 z',\n },\n csymHalfDiminished: {\n x_min: -16,\n x_max: 488,\n y_min: -15,\n y_max: 489,\n ha: 504,\n o: 'm 703 660 l 658 704 l 557 603 b 340 681 498 652 422 681 b -1 341 151 681 -1 530 b 78 124 -1 259 29 183 l -23 23 l 22 -22 l 122 79 b 340 0 181 30 258 0 b 680 341 528 0 680 153 b 602 559 680 423 651 500 z m 62 341 b 340 618 62 494 187 618 b 513 559 403 618 464 598 l 122 168 b 62 341 84 217 62 278 z m 616 341 b 340 63 616 189 492 63 b 167 124 276 63 216 85 l 557 514 b 616 341 596 465 616 405 z',\n },\n csymAugmented: {\n x_min: 0,\n x_max: 395,\n y_min: 1,\n y_max: 396,\n ha: 395,\n o: 'm 569 318 l 317 318 l 317 570 l 253 570 l 253 318 l 0 318 l 0 255 l 253 255 l 253 1 l 317 1 l 317 255 l 569 255 z',\n },\n csymMajorSeventh: {\n x_min: 0,\n x_max: 558,\n y_min: 1,\n y_max: 477,\n ha: 476,\n o: 'm 402 687 l 0 1 l 804 1 z m 402 562 l 693 65 l 111 65 z',\n },\n csymMinor: {\n x_min: 0,\n x_max: 325,\n y_min: 216,\n y_max: 260,\n ha: 44,\n o: 'm 468 374 l 0 374 l 0 311 l 468 311 z',\n },\n csymParensLeftTall: {\n x_min: 1,\n x_max: 185,\n y_min: 0,\n y_max: 997,\n ha: 997,\n o: 'm 266 48 b 261 65 266 55 264 62 b 92 719 157 212 92 400 b 262 1371 92 1037 154 1228 b 266 1394 266 1378 266 1394 l 266 1424 b 264 1436 266 1431 266 1436 b 259 1434 262 1436 259 1434 b 1 719 84 1261 1 1011 b 259 1 1 429 79 177 b 264 0 261 0 262 0 b 266 9 265 0 266 6 z',\n },\n csymParensRightTall: {\n x_min: -20,\n x_max: 164,\n y_min: 0,\n y_max: 997,\n ha: 997,\n o: 'm -29 9 b -26 0 -29 6 -27 0 b -22 1 -24 0 -23 0 b 236 719 158 177 236 429 b -22 1434 236 1011 154 1261 b -26 1436 -22 1434 -24 1436 b -29 1424 -29 1436 -29 1431 l -29 1394 b -24 1371 -29 1394 -29 1378 b 145 719 84 1228 145 1037 b -23 65 145 400 81 212 b -29 48 -26 62 -29 55 z',\n },\n csymBracketLeftTall: {\n x_min: 0,\n x_max: 155,\n y_min: 0,\n y_max: 1000,\n ha: 1000,\n o: 'm 217 0 b 223 9 220 0 223 4 l 223 37 b 217 46 223 42 220 46 l 92 46 l 92 1394 l 217 1394 b 223 1403 220 1394 223 1398 l 223 1431 b 217 1440 223 1436 220 1440 l 6 1440 b 0 1436 3 1440 0 1439 l 0 4 b 6 0 0 1 3 0 z',\n },\n csymBracketRightTall: {\n x_min: 1,\n x_max: 156,\n y_min: 0,\n y_max: 1000,\n ha: 1000,\n o: 'm 219 0 b 225 4 222 0 225 1 l 225 1436 b 219 1440 225 1439 222 1440 l 7 1440 b 1 1431 4 1440 1 1436 l 1 1403 b 7 1394 1 1398 4 1394 l 132 1394 l 132 46 l 7 46 b 1 37 4 46 1 42 l 1 9 b 7 0 1 4 4 0 z',\n },\n csymParensLeftVeryTall: {\n x_min: 0,\n x_max: 122,\n y_min: 0,\n y_max: 993,\n ha: 993,\n o: 'm 176 32 b 171 49 176 39 174 46 b 60 716 104 194 60 399 b 173 1382 60 1032 101 1241 b 176 1405 176 1390 176 1405 l 176 1427 b 173 1430 176 1428 174 1430 b 0 716 40 1297 0 978 b 170 3 0 428 50 179 b 171 0 170 1 170 0 b 176 6 173 0 176 4 z',\n },\n csymParensRightVeryTall: {\n x_min: -15,\n x_max: 107,\n y_min: 0,\n y_max: 993,\n ha: 993,\n o: 'm -22 6 b -17 0 -22 4 -19 0 b -16 3 -16 0 -16 1 b 154 716 104 179 154 428 b -19 1430 154 978 114 1297 b -22 1427 -20 1430 -22 1428 l -22 1405 b -19 1382 -22 1405 -22 1390 b 94 716 53 1241 94 1032 b -17 49 94 399 50 194 b -22 32 -20 46 -22 39 z',\n },\n csymDiagonalArrangementSlash: {\n x_min: 0,\n x_max: 999,\n y_min: 0,\n y_max: 1000,\n ha: 1000,\n o: 'm 1439 1380 l 1377 1440 l 0 60 l 62 0 z',\n },\n accSagittal5v7KleismaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -35 b 135 -112 68 -86 99 -112 b 225 68 194 -112 225 -53 l 180 68 b 144 -4 180 20 168 -4 b 122 0 138 -4 131 -3 b 23 248 86 14 52 96 l 0 248 z',\n },\n accSagittal5v7KleismaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 b 122 0 52 -96 86 -14 b 144 4 131 3 138 4 b 180 -68 168 4 180 -20 l 225 -68 b 135 112 225 53 194 112 b 45 35 99 112 68 86 l 45 517 l 0 517 z',\n },\n accSagittal5CommaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 225 -517 l 225 248 l 203 248 l 0 -112 l 0 -284 l 180 33 l 180 -517 z',\n },\n accSagittal5CommaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 180 517 l 180 -33 l 0 284 l 0 112 l 203 -248 l 225 -248 l 225 517 z',\n },\n accSagittal7CommaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 248 l 0 -517 l 45 -517 l 45 112 l 89 112 b 180 -68 150 112 180 53 l 180 -248 l 225 -248 l 225 68 b 135 248 225 187 194 248 z',\n },\n accSagittal7CommaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 135 -248 b 225 -68 194 -248 225 -187 l 225 248 l 180 248 l 180 68 b 89 -112 180 -53 150 -112 l 45 -112 l 45 517 l 0 517 l 0 -248 z',\n },\n accSagittal25SmallDiesisUp: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -157 l 0 -259 l 315 -89 l 315 -517 l 360 -517 l 360 248 l 337 248 l 0 68 l 0 -33 l 315 135 l 315 10 z',\n },\n accSagittal25SmallDiesisDown: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 315 -10 l 315 -135 l 0 33 l 0 -68 l 337 -248 l 360 -248 l 360 517 l 315 517 l 315 89 l 0 259 l 0 157 z',\n },\n accSagittal35MediumDiesisUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -68 330 112 360 53 l 360 -248 l 405 -248 l 405 68 b 315 248 405 187 374 248 l 203 248 l 0 -112 z',\n },\n accSagittal35MediumDiesisDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 203 -248 l 315 -248 b 405 -68 374 -248 405 -187 l 405 248 l 360 248 l 360 68 b 271 -112 360 -53 330 -112 l 225 -112 l 225 517 l 180 517 l 180 -33 l 0 284 z',\n },\n accSagittal11MediumDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 225 53 l 225 -517 l 271 -517 l 271 53 l 495 -248 l 495 -89 l 248 248 l 0 -89 l 0 -248 z',\n },\n accSagittal11MediumDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 248 l 0 89 l 248 -248 l 495 89 l 495 248 l 271 -53 l 271 517 l 225 517 l 225 -53 z',\n },\n accSagittal11LargeDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 112 l 315 112 b 449 -68 405 112 449 53 l 449 -248 l 495 -248 l 495 68 b 360 248 495 187 449 248 l 135 248 b 0 68 45 248 0 187 z',\n },\n accSagittal11LargeDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 360 -248 b 495 -68 449 -248 495 -187 l 495 248 l 449 248 l 449 68 b 315 -112 449 -53 405 -112 l 271 -112 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittal35LargeDiesisUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 l 540 112 l 540 274 l 271 -58 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittal35LargeDiesisDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 l 540 112 l 540 274 l 269 -58 l 269 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittalSharp25SDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 112 -112 0 -53 36 -112 l 135 -112 l 135 -517 l 180 -517 l 180 -89 b 248 26 206 -65 229 -27 b 315 -89 264 -27 287 -65 l 315 -517 l 360 -517 l 360 -112 l 383 -112 b 495 68 458 -112 495 -53 l 449 68 b 399 -4 449 20 433 -4 b 248 248 297 -4 261 171 b 122 0 216 96 176 14 b 94 -4 112 -3 102 -4 b 45 68 60 -4 45 20 z',\n },\n accSagittalFlat25SUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 94 4 45 -20 60 4 b 122 0 102 4 112 3 b 248 -248 176 -14 216 -96 b 399 4 261 -171 297 4 b 449 -68 433 4 449 -20 l 495 -68 b 383 112 495 53 458 112 l 360 112 l 360 517 l 315 517 l 315 89 b 248 -26 287 65 264 27 b 180 89 229 27 206 65 l 180 517 l 135 517 l 135 112 l 112 112 b 0 -68 36 112 0 53 z',\n },\n accSagittalSharp7CDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 112 l 89 112 b 180 104 124 112 154 109 l 180 -517 l 225 -517 l 225 89 b 315 -68 285 60 315 9 l 315 -248 l 360 -248 l 360 68 b 135 248 360 187 285 248 l 0 248 z',\n },\n accSagittalFlat7CUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 135 -248 b 360 -68 285 -248 360 -187 l 360 248 l 315 248 l 315 68 b 225 -89 315 -9 285 -60 l 225 517 l 180 517 l 180 -104 b 89 -112 154 -109 124 -112 l 45 -112 l 45 517 l 0 517 z',\n },\n accSagittalSharp5CDown: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -517 l 45 71 l 180 -56 l 180 -517 l 225 -517 l 225 -98 l 405 -268 l 405 -112 l 23 248 l 0 248 l 0 -517 z',\n },\n accSagittalFlat5CUp: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 517 l 0 -248 l 23 -248 l 405 112 l 405 268 l 225 98 l 225 517 l 180 517 l 180 56 l 45 -71 l 45 517 z',\n },\n accSagittalSharp5v7kDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -276 l 135 -82 l 135 -517 l 180 -517 l 180 -17 l 271 112 l 315 112 l 315 -517 l 360 -517 l 360 107 b 449 -68 420 89 449 30 l 449 -248 l 495 -248 l 495 68 b 360 248 495 189 449 248 l 248 248 z',\n },\n accSagittalFlat5v7kUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 248 -248 l 360 -248 b 495 -68 449 -248 495 -189 l 495 248 l 449 248 l 449 68 b 360 -107 449 -30 420 -89 l 360 517 l 315 517 l 315 -112 l 271 -112 l 180 17 l 180 517 l 135 517 l 135 82 l 0 276 l 0 112 z',\n },\n accSagittalSharp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 180 -53 l 180 -517 l 225 -517 l 225 0 l 292 85 l 360 0 l 360 -517 l 405 -517 l 405 -53 l 585 -274 l 585 -112 l 292 248 l 0 -112 l 0 -274 z',\n },\n accSagittalFlat: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 274 l 0 112 l 292 -248 l 585 112 l 585 274 l 405 53 l 405 517 l 360 517 l 360 0 l 292 -85 l 225 0 l 225 517 l 180 517 l 180 53 z',\n },\n accSagittalSharp5v7kUp: {\n x_min: 0,\n x_max: 312,\n y_min: -361,\n y_max: 172,\n ha: 533,\n o: 'm 45 -517 l 45 -10 b 135 -92 68 -48 98 -75 l 135 -520 l 180 -520 l 180 -108 b 248 -115 203 -112 225 -115 b 271 -112 256 -115 264 -115 l 271 -517 l 315 -517 l 315 -107 b 449 68 405 -89 449 -30 l 405 68 b 297 -4 405 19 369 -4 b 23 248 131 -4 56 85 l 0 248 l 0 -517 z',\n },\n accSagittalFlat5v7kDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 361,\n ha: 533,\n o: 'm 0 517 l 0 -248 l 23 -248 b 297 4 56 -85 131 4 b 405 -68 369 4 405 -19 l 449 -68 b 315 107 449 30 405 89 l 315 517 l 271 517 l 271 112 b 248 115 264 115 256 115 b 180 108 225 115 203 112 l 180 520 l 135 520 l 135 92 b 45 10 98 75 68 48 l 45 517 z',\n },\n accSagittalSharp5CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -266 l 135 -153 l 135 -517 l 180 -517 l 180 -115 l 271 -39 l 271 -517 l 315 -517 l 315 0 l 405 75 l 405 -517 l 449 -517 l 449 248 l 428 248 l 0 -112 z',\n },\n accSagittalFlat5CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 428 -248 l 449 -248 l 449 517 l 405 517 l 405 -75 l 315 0 l 315 517 l 271 517 l 271 39 l 180 115 l 180 517 l 135 517 l 135 153 l 0 266 z',\n },\n accSagittalSharp7CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 112 l 135 112 l 135 -517 l 180 -517 l 180 108 b 271 89 213 105 243 99 l 271 -517 l 315 -517 l 315 73 b 405 -68 374 45 405 -3 l 405 -248 l 449 -248 l 449 68 b 135 248 449 187 346 248 l 0 248 z',\n },\n accSagittalFlat7CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 135 -248 b 449 -68 346 -248 449 -187 l 449 248 l 405 248 l 405 68 b 315 -73 405 3 374 -45 l 315 517 l 271 517 l 271 -89 b 180 -108 243 -99 213 -105 l 180 517 l 135 517 l 135 -112 l 45 -112 l 45 517 l 0 517 z',\n },\n accSagittalSharp25SUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -30 l 495 143 l 495 14 l 0 -157 l 0 -255 l 225 -177 l 225 -517 l 271 -517 l 271 -161 l 360 -130 l 360 -517 l 405 -517 l 405 -115 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 517 248 l 0 68 z',\n },\n accSagittalFlat25SDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 l 517 -248 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 115 l 405 517 l 360 517 l 360 130 l 271 161 l 271 517 l 225 517 l 225 177 l 0 255 l 0 157 l 495 -14 l 495 -143 l 0 30 z',\n },\n accSagittalSharp35MUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -274 l 135 -108 l 135 -517 l 180 -517 l 180 -53 l 271 58 l 271 -517 l 315 -517 l 315 112 l 360 112 b 405 109 376 112 390 112 l 405 -517 l 449 -517 l 449 96 b 540 -68 510 72 540 17 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 z',\n },\n accSagittalFlat35MDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 292 -248 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 449 -96 540 -17 510 -72 l 449 517 l 405 517 l 405 -109 b 360 -112 390 -112 376 -112 l 315 -112 l 315 517 l 271 517 l 271 -58 l 180 53 l 180 517 l 135 517 l 135 108 l 0 274 l 0 112 z',\n },\n accSagittalSharp11MUp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -271 l 180 -79 l 180 -517 l 225 -517 l 225 -30 l 315 65 l 315 -517 l 360 -517 l 360 65 l 449 -30 l 449 -517 l 495 -517 l 495 -79 l 675 -271 l 675 -112 l 337 248 z',\n },\n accSagittalFlat11MDown: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 337 -248 l 675 112 l 675 271 l 495 79 l 495 517 l 449 517 l 449 30 l 360 -65 l 360 517 l 315 517 l 315 -65 l 225 30 l 225 517 l 180 517 l 180 79 l 0 271 l 0 112 z',\n },\n accSagittalSharp11LUp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 112 l 449 112 l 449 -517 l 495 -517 l 495 104 b 631 -68 585 82 631 26 l 631 -248 l 675 -248 l 675 68 b 449 248 675 187 600 248 l 225 248 b 0 68 75 248 0 187 z',\n },\n accSagittalFlat11LDown: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 449 -248 b 675 -68 600 -248 675 -187 l 675 248 l 631 248 l 631 68 b 495 -104 631 -26 585 -82 l 495 517 l 449 517 l 449 -112 l 360 -112 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z',\n },\n accSagittalSharp35LUp: {\n x_min: 0,\n x_max: 500,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 71 l 452 -17 l 452 -517 l 495 -517 l 495 -56 l 720 -268 l 720 -112 l 337 248 l 225 248 b 0 68 75 248 0 187 z',\n },\n accSagittalFlat35LDown: {\n x_min: 0,\n x_max: 500,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 l 720 112 l 720 268 l 495 56 l 495 517 l 452 517 l 452 17 l 360 -71 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z',\n },\n accSagittalDoubleSharp25SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 135 -112 0 -53 45 -112 b 243 -62 180 -112 215 -95 l 89 -503 l 143 -517 l 292 -82 l 445 -517 l 495 -503 l 343 -62 b 449 -112 372 -95 408 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 315 148 b 112 -4 274 148 236 -4 b 45 68 68 -4 45 20 z',\n },\n accSagittalDoubleFlat25SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 112 4 45 -20 68 4 b 292 -248 236 4 274 -148 b 475 4 315 -148 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 b 343 62 408 112 372 95 l 495 503 l 445 517 l 292 82 l 143 517 l 89 503 l 243 62 b 135 112 215 95 180 112 b 0 -68 45 112 0 53 z',\n },\n accSagittalDoubleSharp7CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -503 l 52 -517 l 203 -82 l 354 -517 l 405 -503 l 230 0 l 271 108 b 495 -68 420 92 495 35 l 495 -248 l 540 -248 l 540 68 b 225 248 540 187 435 248 l 89 248 l 89 112 l 135 112 l 174 0 z m 213 112 l 203 82 l 192 112 z',\n },\n accSagittalDoubleFlat7CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 174 0 l 135 -112 l 89 -112 l 89 -248 l 225 -248 b 540 -68 435 -248 540 -187 l 540 248 l 495 248 l 495 68 b 271 -108 495 -35 420 -92 l 230 0 l 405 503 l 354 517 l 203 82 l 52 517 l 0 503 z m 192 -112 l 203 -82 l 213 -112 z',\n },\n accSagittalDoubleSharp5CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 405 -503 l 230 0 l 232 4 l 585 -264 l 585 -112 l 112 248 l 89 248 l 89 112 l 151 68 l 174 0 l 0 -503 l 52 -517 l 203 -82 l 354 -517 z',\n },\n accSagittalDoubleFlat5CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 354 517 l 203 82 l 52 517 l 0 503 l 174 0 l 151 -68 l 89 -112 l 89 -248 l 112 -248 l 585 112 l 585 264 l 232 -4 l 230 0 l 405 503 z',\n },\n accSagittalDoubleSharp5v7kDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -274 l 252 35 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 360 112 b 540 -68 480 112 540 53 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 l 0 -112 z',\n },\n accSagittalDoubleFlat5v7kUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 292 -248 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 360 -112 540 -53 480 -112 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 252 -35 l 0 274 z',\n },\n accSagittalDoubleSharp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 540 -503 l 366 0 l 380 45 l 675 -271 l 675 -112 l 337 248 l 0 -112 l 0 -271 l 295 45 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 z',\n },\n accSagittalDoubleFlat: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 295 -45 l 0 271 l 0 112 l 337 -248 l 675 112 l 675 271 l 380 -45 l 366 0 l 540 503 z',\n },\n accSagittal7v11KleismaUp: {\n x_min: 0,\n x_max: 219,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 68 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 -45 b 248 -112 200 -89 225 -112 b 315 68 292 -112 315 -53 l 271 68 b 248 -4 271 20 264 -4 b 236 0 245 -4 240 -3 b 157 248 213 14 187 96 b 78 0 127 96 101 14 b 65 -4 73 -3 68 -4 b 45 68 50 -4 45 20 l 0 68 b 68 -112 0 -53 23 -112 z',\n },\n accSagittal7v11KleismaDown: {\n x_min: 0,\n x_max: 219,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 68 112 b 0 -68 23 112 0 53 l 45 -68 b 65 4 45 -20 50 4 b 78 0 68 4 73 3 b 157 -248 101 -14 127 -96 b 236 0 187 -96 213 -14 b 248 4 240 3 245 4 b 271 -68 264 4 271 -20 l 315 -68 b 248 112 315 53 292 112 b 180 45 225 112 200 89 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 z',\n },\n accSagittal17CommaUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 -40 b 315 -118 248 -92 279 -118 b 405 62 374 -118 405 -59 l 360 62 b 324 -10 360 14 348 -10 b 302 -6 318 -10 311 -9 b 206 217 268 9 235 84 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z',\n },\n accSagittal17CommaDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 206 -217 b 302 6 235 -84 268 -9 b 324 10 311 9 318 10 b 360 -62 348 10 360 -14 l 405 -62 b 315 118 405 59 374 118 b 225 40 279 118 248 92 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal55CommaUp: {\n x_min: 0,\n x_max: 219,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 248 l 0 -517 l 45 -517 l 45 58 l 315 -274 l 315 -112 l 23 248 z',\n },\n accSagittal55CommaDown: {\n x_min: 0,\n x_max: 219,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 23 -248 l 315 112 l 315 274 l 45 -58 l 45 517 l 0 517 l 0 -248 z',\n },\n accSagittal7v11CommaUp: {\n x_min: 0,\n x_max: 188,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 248 l 135 248 b 0 68 45 248 0 187 z',\n },\n accSagittal7v11CommaDown: {\n x_min: 0,\n x_max: 188,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 271 -248 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittal5v11SmallDiesisUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 73 l 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 -40 b 360 -118 295 -92 325 -118 b 449 62 420 -118 449 -59 l 405 62 b 369 -10 405 14 393 -10 b 348 -6 363 -10 356 -9 b 251 217 312 9 279 84 l 248 248 l 135 248 b 0 73 45 248 0 189 z',\n },\n accSagittal5v11SmallDiesisDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -73 b 135 -248 0 -189 45 -248 l 248 -248 l 251 -217 b 348 6 279 -84 312 -9 b 369 10 356 9 363 10 b 405 -62 393 10 405 -14 l 449 -62 b 360 118 449 59 420 118 b 271 40 325 118 295 92 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittalSharp5v11SDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 242 37 203 -23 225 -3 b 315 -89 262 -23 285 -63 l 315 -517 l 360 -517 l 360 -112 l 383 -112 b 495 68 458 -112 495 -53 l 449 68 b 399 -4 449 20 433 -4 b 248 248 297 -4 261 171 b 157 68 222 127 192 68 l 89 68 b 0 -203 30 68 0 -23 z',\n },\n accSagittalFlat5v11SUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -127 b 399 4 261 -171 297 4 b 449 -68 433 4 449 -20 l 495 -68 b 383 112 495 53 458 112 l 360 112 l 360 517 l 315 517 l 315 89 b 242 -37 285 63 262 23 b 180 23 225 3 203 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z',\n },\n accSagittalSharp7v11CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -112 l 89 -517 l 135 -517 l 135 -95 b 206 37 163 -73 187 -30 b 271 -23 225 -3 248 -23 l 271 -517 l 315 -517 l 315 -23 l 383 -23 b 449 -203 428 -23 449 -84 l 495 -203 b 405 68 495 -23 465 68 l 292 68 b 203 248 258 68 228 127 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 20 l 0 68 b 89 -112 0 -52 30 -112 z',\n },\n accSagittalFlat7v11CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 112 b 0 -68 30 112 0 52 l 45 -68 b 81 3 45 -20 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 b 292 -68 228 -127 258 -68 l 405 -68 b 495 203 465 -68 495 23 l 449 203 b 383 23 449 84 428 23 l 315 23 l 315 517 l 271 517 l 271 23 b 206 -37 248 23 225 3 b 135 95 187 30 163 73 l 135 517 l 89 517 z',\n },\n accSagittalSharp55CDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -271 l 135 -125 l 135 -517 l 180 -517 l 180 -78 l 315 65 l 315 -517 l 360 -517 l 360 248 l 337 248 l 0 -112 z',\n },\n accSagittalFlat55CUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 337 -248 l 360 -248 l 360 517 l 315 517 l 315 -65 l 180 78 l 180 517 l 135 517 l 135 125 l 0 271 z',\n },\n accSagittalSharp17CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -248 l 45 -68 b 180 109 45 36 89 95 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -89 292 13 321 -55 l 360 -517 l 405 -517 l 405 -112 l 428 -112 b 540 68 504 -112 540 -53 l 495 68 b 445 -4 495 20 480 -4 b 292 248 343 -4 307 171 l 180 248 b 0 68 60 248 0 187 l 0 -248 z',\n },\n accSagittalFlat17CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 248 l 0 -68 b 180 -248 0 -187 60 -248 l 292 -248 b 445 4 307 -171 343 4 b 495 -68 480 4 495 -20 l 540 -68 b 428 112 540 53 504 112 l 405 112 l 405 517 l 360 517 l 360 89 b 271 -112 321 55 292 -13 l 225 -112 l 225 517 l 180 517 l 180 -109 b 45 68 89 -95 45 -36 l 45 248 z',\n },\n accSagittalSharp7v11kDown: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -32 l 405 138 l 405 13 l 0 -157 l 0 -256 l 225 -161 l 225 -517 l 271 -517 l 271 -144 l 405 -86 l 405 -517 l 449 -517 l 449 248 l 428 248 l 0 68 z',\n },\n accSagittalFlat7v11kUp: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 l 428 -248 l 449 -248 l 449 517 l 405 517 l 405 86 l 271 144 l 271 517 l 225 517 l 225 161 l 0 256 l 0 157 l 405 -13 l 405 -138 l 0 32 z',\n },\n accSagittalSharp7v11kUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 135 -112 l 135 -517 l 180 -517 l 180 -105 b 271 -23 217 -94 248 -65 l 271 -517 l 315 -517 l 315 -23 b 405 -105 337 -65 369 -94 l 405 -517 l 449 -517 l 449 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 315 148 b 112 -4 274 148 236 -4 b 45 68 68 -4 45 20 l 0 68 b 135 -112 0 -53 45 -112 z',\n },\n accSagittalFlat7v11kDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 135 112 b 0 -68 45 112 0 53 l 45 -68 b 112 4 45 -20 68 4 b 292 -248 236 4 274 -148 b 475 4 315 -148 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 l 449 517 l 405 517 l 405 105 b 315 23 369 94 337 65 l 315 517 l 271 517 l 271 23 b 180 105 248 65 217 94 l 180 517 l 135 517 z',\n },\n accSagittalSharp17CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 -23 b 405 -105 337 -65 369 -94 l 405 -517 l 449 -517 l 449 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 312 150 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalFlat17CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 b 475 4 312 -150 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 l 449 517 l 405 517 l 405 105 b 315 23 369 94 337 65 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp55CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -517 l 45 78 l 135 10 l 135 -517 l 180 -517 l 180 -23 l 271 -92 l 271 -517 l 315 -517 l 315 -127 l 495 -264 l 495 -112 l 23 248 l 0 248 l 0 -517 z',\n },\n accSagittalFlat55CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 517 l 0 -248 l 23 -248 l 495 112 l 495 264 l 315 127 l 315 517 l 271 517 l 271 92 l 180 23 l 180 517 l 135 517 l 135 -10 l 45 -78 l 45 517 z',\n },\n accSagittalSharp7v11CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 86 45 6 89 58 l 180 -517 l 225 -517 l 225 98 b 315 109 252 104 282 108 l 315 -517 l 360 -517 l 360 112 l 449 112 l 449 -517 l 495 -517 l 495 248 l 360 248 b 0 68 121 248 0 189 z',\n },\n accSagittalFlat7v11CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 360 -248 0 -189 121 -248 l 495 -248 l 495 517 l 449 517 l 449 -112 l 360 -112 l 360 517 l 315 517 l 315 -109 b 225 -98 282 -108 252 -104 l 225 517 l 180 517 l 180 -86 b 45 68 89 -58 45 -6 l 45 248 l 0 248 z',\n },\n accSagittalSharp5v11SUp: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 -23 b 449 -105 383 -65 415 -94 l 449 -517 l 495 -517 l 495 -112 b 631 68 585 -112 631 -53 l 585 68 b 520 -4 585 20 563 -4 b 337 248 396 -4 360 150 l 225 248 b 0 68 76 248 0 187 z',\n },\n accSagittalFlat5v11SDown: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 76 -248 l 337 -248 b 520 4 360 -150 396 4 b 585 -68 563 4 585 -20 l 631 -68 b 495 112 631 53 585 112 l 495 517 l 449 517 l 449 105 b 360 23 415 94 383 65 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z',\n },\n accSagittalDoubleSharp5v11SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 341 -60 b 449 -112 370 -95 405 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 312 150 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalDoubleFlat5v11SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 b 475 4 312 -150 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 b 341 60 405 112 370 95 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalDoubleSharp7v11CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 112 -112 b 193 -73 143 -112 170 -99 l 45 -501 l 95 -517 l 248 -81 l 397 -517 l 449 -503 l 275 0 l 278 4 b 337 -23 295 -13 315 -23 l 405 -23 b 495 -203 465 -23 495 -84 l 540 -203 b 428 68 540 -23 503 68 l 360 68 b 248 248 310 68 271 127 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 112 -112 0 -52 36 -112 z',\n },\n accSagittalDoubleFlat7v11CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 112 112 b 0 -68 36 112 0 52 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 b 360 -68 271 -127 310 -68 l 428 -68 b 540 203 503 -68 540 23 l 495 203 b 405 23 495 84 465 23 l 337 23 b 278 -4 315 23 295 13 l 275 0 l 449 503 l 397 517 l 248 81 l 95 517 l 45 501 l 193 73 b 112 112 170 99 143 112 z',\n },\n accSagittalDoubleSharp55CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 428 248 l 0 -112 l 0 -266 l 307 -7 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 386 59 l 449 112 l 449 248 z',\n },\n accSagittalDoubleFlat55CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 449 -248 l 449 -112 l 386 -59 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 307 7 l 0 266 l 0 112 l 428 -248 z',\n },\n accSagittalDoubleSharp17CDown: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -248 l 45 -68 b 271 112 45 53 120 112 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 387 -62 b 495 -112 416 -95 452 -112 b 631 68 585 -112 631 -53 l 585 68 b 520 -4 585 20 563 -4 b 337 248 396 -4 360 150 l 225 248 b 0 68 76 248 0 187 l 0 -248 z',\n },\n accSagittalDoubleFlat17CUp: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 248 l 0 -68 b 225 -248 0 -187 76 -248 l 337 -248 b 520 4 360 -150 396 4 b 585 -68 563 4 585 -20 l 631 -68 b 495 112 631 53 585 112 b 387 62 452 112 416 95 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 271 -112 b 45 68 120 -112 45 -53 l 45 248 z',\n },\n accSagittalDoubleSharp7v11kDown: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -30 l 366 96 l 399 0 l 392 -23 l 0 -157 l 0 -255 l 353 -135 l 225 -503 l 276 -517 l 428 -82 l 579 -517 l 631 -503 l 455 0 l 507 145 l 540 157 l 540 248 l 517 248 z m 416 115 l 442 124 l 428 82 z',\n },\n accSagittalDoubleFlat7v11kUp: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 517 -248 l 540 -248 l 540 -157 l 507 -145 l 455 0 l 631 503 l 579 517 l 428 82 l 276 517 l 225 503 l 353 135 l 0 255 l 0 157 l 392 23 l 399 0 l 366 -96 l 0 30 l 0 -68 z m 428 -82 l 442 -124 l 416 -115 z',\n },\n accSagittal23CommaUp: {\n x_min: 0,\n x_max: 188,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -4 b 68 -23 53 -17 60 -23 l 180 -23 b 225 -203 210 -23 225 -82 l 271 -203 b 206 68 271 -23 248 68 l 89 68 b 23 248 71 68 48 127 l 0 248 z',\n },\n accSagittal23CommaDown: {\n x_min: 0,\n x_max: 188,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 b 89 -68 48 -127 71 -68 l 206 -68 b 271 203 248 -68 271 23 l 225 203 b 180 23 225 82 210 23 l 68 23 b 45 4 60 23 53 17 l 45 517 l 0 517 z',\n },\n accSagittal5v19CommaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 248 l 203 248 b 86 112 151 157 112 112 b 45 157 59 112 45 127 l 0 157 b 76 23 0 72 26 27 l 0 -112 z',\n },\n accSagittal5v19CommaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 76 -23 b 0 -157 26 -27 0 -72 l 45 -157 b 86 -112 45 -127 59 -112 b 203 -248 112 -112 151 -157 l 225 -248 l 225 517 l 180 517 l 180 -33 l 0 284 z',\n },\n accSagittal5v23SmallDiesisUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 -4 b 248 -23 233 -17 240 -23 l 360 -23 b 405 -203 390 -23 405 -82 l 449 -203 b 386 68 449 -23 428 68 l 271 68 b 203 248 251 68 228 127 l 0 -112 z',\n },\n accSagittal5v23SmallDiesisDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 203 -248 b 271 -68 228 -127 251 -68 l 386 -68 b 449 203 428 -68 449 23 l 405 203 b 360 23 405 82 390 23 l 248 23 b 225 4 240 23 233 17 l 225 517 l 180 517 l 180 -33 l 0 284 z',\n },\n accSagittalSharp5v23SDown: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 6 b 89 -23 59 -13 73 -23 l 180 -23 l 180 -517 l 225 -517 l 225 -23 l 292 -23 b 360 -203 337 -23 360 -84 l 405 -203 b 315 68 405 -23 374 68 l 112 68 b 23 248 78 68 48 127 l 0 248 z',\n },\n accSagittalFlat5v23SUp: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 b 112 -68 48 -127 78 -68 l 315 -68 b 405 203 374 -68 405 23 l 360 203 b 292 23 360 84 337 23 l 225 23 l 225 517 l 180 517 l 180 23 l 89 23 b 45 -6 73 23 59 13 l 45 517 l 0 517 z',\n },\n accSagittalSharp5v19CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 89 -112 0 -52 30 -112 l 89 -517 l 135 -517 l 135 -95 b 225 112 173 -65 203 4 l 271 112 l 271 -517 l 315 -517 l 315 107 b 405 -68 374 89 405 30 l 405 -248 l 449 -248 l 449 68 b 315 248 449 189 405 248 l 203 248 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 23 z',\n },\n accSagittalFlat5v19CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 81 3 45 -23 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 l 315 -248 b 449 -68 405 -248 449 -189 l 449 248 l 405 248 l 405 68 b 315 -107 405 -30 374 -89 l 315 517 l 271 517 l 271 -112 l 225 -112 b 135 95 203 -4 173 65 l 135 517 l 89 517 l 89 112 b 0 -68 30 112 0 52 z',\n },\n accSagittalSharp23CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 135 -82 l 135 -517 l 180 -517 l 180 -17 l 239 68 b 315 -23 261 7 287 -23 l 315 -517 l 360 -517 l 360 -23 l 428 -23 b 495 -203 472 -23 495 -84 l 540 -203 b 449 68 540 -23 510 68 l 337 68 b 248 248 302 68 271 127 l 0 -112 l 0 -276 z',\n },\n accSagittalFlat23CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 276 l 0 112 l 248 -248 b 337 -68 271 -127 302 -68 l 449 -68 b 540 203 510 -68 540 23 l 495 203 b 428 23 495 84 472 23 l 360 23 l 360 517 l 315 517 l 315 23 b 239 -68 287 23 261 -7 l 180 17 l 180 517 l 135 517 l 135 82 z',\n },\n accSagittalSharp23CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 14 b 112 -23 63 -10 86 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 360 -23 b 449 -203 420 -23 449 -84 l 495 -203 b 383 68 495 -23 458 68 l 135 68 b 23 248 85 68 48 127 l 0 248 z',\n },\n accSagittalFlat23CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 b 135 -68 48 -127 85 -68 l 383 -68 b 495 203 458 -68 495 23 l 449 203 b 360 23 449 84 420 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 -14 86 23 63 10 l 45 517 l 0 517 z',\n },\n accSagittalSharp5v19CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -266 l 135 -153 l 135 -517 l 180 -517 l 180 -115 l 271 -39 l 271 -517 l 315 -517 l 315 0 l 405 75 l 405 -517 l 449 -517 l 449 248 l 428 248 b 130 68 285 127 186 68 b 45 157 73 68 45 98 l 0 157 b 112 -20 0 53 37 -6 z',\n },\n accSagittalFlat5v19CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 112 20 b 0 -157 37 6 0 -53 l 45 -157 b 130 -68 45 -98 73 -68 b 428 -248 186 -68 285 -127 l 449 -248 l 449 517 l 405 517 l 405 -75 l 315 0 l 315 517 l 271 517 l 271 39 l 180 115 l 180 517 l 135 517 l 135 153 l 0 266 l 0 112 z',\n },\n accSagittalSharp5v23SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 135 -108 l 135 -517 l 180 -517 l 180 -53 l 271 58 l 271 -517 l 315 -517 l 315 14 b 383 -23 334 -10 357 -23 l 405 -23 l 405 -517 l 449 -517 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 405 68 b 292 248 356 68 318 127 l 0 -112 l 0 -274 z',\n },\n accSagittalFlat5v23SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 274 l 0 112 l 292 -248 b 405 -68 318 -127 356 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 449 517 l 405 517 l 405 23 l 383 23 b 315 -14 357 23 334 10 l 315 517 l 271 517 l 271 -58 l 180 53 l 180 517 l 135 517 l 135 108 z',\n },\n accSagittalDoubleSharp5v23SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 52 -517 l 203 -81 l 354 -517 l 405 -503 l 239 -23 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 225 68 b 112 248 176 68 138 127 l 89 248 l 89 112 b 170 -14 109 45 135 0 l 0 -501 z',\n },\n accSagittalDoubleFlat5v23SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 501 l 170 14 b 89 -112 135 0 109 -45 l 89 -248 l 112 -248 b 225 -68 138 -127 176 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 239 23 l 405 503 l 354 517 l 203 81 l 52 517 z',\n },\n accSagittalDoubleSharp5v19CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 112 -112 0 -52 36 -112 b 193 -73 143 -112 170 -99 l 45 -501 l 95 -517 l 248 -81 l 397 -517 l 449 -501 l 275 0 l 315 112 b 495 -68 435 112 495 53 l 495 -248 l 540 -248 l 540 68 b 360 248 540 189 480 248 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 z',\n },\n accSagittalDoubleFlat5v19CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 360 -248 b 540 -68 480 -248 540 -189 l 540 248 l 495 248 l 495 68 b 315 -112 495 -53 435 -112 l 275 0 l 449 501 l 397 517 l 248 81 l 95 517 l 45 501 l 193 73 b 112 112 170 99 143 112 b 0 -68 36 112 0 52 z',\n },\n accSagittalDoubleSharp23CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 252 35 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 323 4 b 383 -23 340 -13 360 -23 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 405 68 b 292 248 356 68 318 127 l 0 -112 l 0 -274 z',\n },\n accSagittalDoubleFlat23CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 274 l 0 112 l 292 -248 b 405 -68 318 -127 356 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 383 23 b 323 -4 360 23 340 13 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 252 -35 z',\n },\n accSagittal19SchismaUp: {\n x_min: 0,\n x_max: 125,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 68 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 248 l 157 248 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 l 0 68 b 68 -112 0 -52 23 -112 z',\n },\n accSagittal19SchismaDown: {\n x_min: 0,\n x_max: 125,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 68 112 b 0 -68 23 112 0 52 l 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 l 180 -248 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 z',\n },\n accSagittal17KleismaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 248 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z',\n },\n accSagittal17KleismaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 225 -248 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal143CommaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -203 l 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 248 l 203 248 b 135 68 177 127 154 68 l 105 68 b 45 157 65 68 45 98 l 0 157 b 23 20 0 95 7 50 b 0 -203 7 -23 0 -98 z',\n },\n accSagittal143CommaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 23 -20 0 98 7 23 b 0 -157 7 -50 0 -95 l 45 -157 b 105 -68 45 -98 65 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 225 -248 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal11v49CommaUp: {\n x_min: 0,\n x_max: 188,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -292 b 89 -157 45 -203 60 -157 l 203 -157 b 225 -143 210 -157 217 -153 l 225 -517 l 271 -517 l 271 248 l 248 248 b 180 157 233 187 210 157 l 68 157 b 0 -68 23 157 0 82 l 45 -68 b 89 68 45 23 60 68 l 203 68 b 225 84 209 68 216 72 l 225 -36 b 180 -68 213 -58 199 -68 l 68 -68 b 0 -292 23 -68 0 -143 z',\n },\n accSagittal11v49CommaDown: {\n x_min: 0,\n x_max: 188,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 292 b 68 68 0 143 23 68 l 180 68 b 225 36 199 68 213 58 l 225 -84 b 203 -68 216 -72 209 -68 l 89 -68 b 45 68 60 -68 45 -23 l 0 68 b 68 -157 0 -82 23 -157 l 180 -157 b 248 -248 210 -157 233 -187 l 271 -248 l 271 517 l 225 517 l 225 143 b 203 157 217 153 210 157 l 89 157 b 45 292 60 157 45 203 z',\n },\n accSagittal19CommaUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 68 -112 0 -52 23 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 -4 b 203 -23 187 -17 196 -23 l 315 -23 b 360 -203 346 -23 360 -82 l 405 -203 b 341 68 405 -23 383 68 l 225 68 b 157 248 206 68 183 127 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 z',\n },\n accSagittal19CommaDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 b 225 -68 183 -127 206 -68 l 341 -68 b 405 203 383 -68 405 23 l 360 203 b 315 23 360 82 346 23 l 203 23 b 180 4 196 23 187 17 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 b 0 -68 23 112 0 52 z',\n },\n accSagittal7v19CommaUp: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 68 -112 0 -52 23 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 112 l 225 112 b 315 -68 285 112 315 53 l 315 -248 l 360 -248 l 360 68 b 271 248 360 187 330 248 l 157 248 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 z',\n },\n accSagittal7v19CommaDown: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 l 271 -248 b 360 -68 330 -248 360 -187 l 360 248 l 315 248 l 315 68 b 225 -112 315 -53 285 -112 l 180 -112 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 b 0 -68 23 112 0 52 z',\n },\n accSagittal49SmallDiesisUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -203 l 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -68 330 112 360 53 l 360 -248 l 405 -248 l 405 68 b 315 248 405 187 374 248 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z',\n },\n accSagittal49SmallDiesisDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 315 -248 b 405 -68 374 -248 405 -187 l 405 248 l 360 248 l 360 68 b 271 -112 360 -53 330 -112 l 225 -112 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal23SmallDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 58 l 495 -274 l 495 -112 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z',\n },\n accSagittal23SmallDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 495 112 l 495 274 l 225 -58 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal5v13MediumDiesisUp: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -259 l 315 -89 l 315 -517 l 360 -517 l 360 248 l 337 248 b 128 180 253 203 184 180 b 45 248 73 180 45 203 l 0 248 b 52 95 0 170 17 120 l 0 68 l 0 -33 l 315 135 l 315 10 l 0 -157 z',\n },\n accSagittal5v13MediumDiesisDown: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 157 l 315 -10 l 315 -135 l 0 33 l 0 -68 l 52 -95 b 0 -248 17 -120 0 -170 l 45 -248 b 128 -180 45 -203 73 -180 b 337 -248 184 -180 253 -203 l 360 -248 l 360 517 l 315 517 l 315 89 l 0 259 z',\n },\n accSagittal11v19MediumDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 -4 b 292 -23 278 -17 285 -23 l 405 -23 b 449 -203 435 -23 449 -82 l 495 -203 b 431 68 495 -23 472 68 l 315 68 b 248 248 295 68 271 127 l 135 248 b 0 68 45 248 0 187 l 0 -248 z',\n },\n accSagittal11v19MediumDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 248 l 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 b 315 -68 271 -127 295 -68 l 431 -68 b 495 203 472 -68 495 23 l 449 203 b 405 23 449 82 435 23 l 292 23 b 271 4 285 23 278 17 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 z',\n },\n accSagittal49MediumDiesisUp: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -68 l 0 -248 l 45 -248 l 315 -94 l 315 -517 l 360 -517 l 360 248 l 225 248 b 0 -68 75 248 0 143 z m 45 -68 b 225 112 45 53 105 112 l 315 112 l 315 10 l 45 -145 z',\n },\n accSagittal49MediumDiesisDown: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 68 b 225 -248 0 -143 75 -248 l 360 -248 l 360 517 l 315 517 l 315 94 l 45 248 l 0 248 z m 45 145 l 315 -10 l 315 -112 l 225 -112 b 45 68 105 -112 45 -53 z',\n },\n accSagittal5v49MediumDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -89 l 0 -248 l 225 53 l 225 -517 l 271 -517 l 271 53 l 495 -248 l 495 -89 l 248 248 b 89 89 170 143 118 89 b 45 157 60 89 45 112 l 0 157 b 68 3 0 68 23 16 z',\n },\n accSagittal5v49MediumDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 68 -3 b 0 -157 23 -16 0 -68 l 45 -157 b 89 -89 45 -112 60 -89 b 248 -248 118 -89 170 -143 l 495 89 l 495 248 l 271 -53 l 271 517 l 225 517 l 225 -53 l 0 248 l 0 89 z',\n },\n accSagittal49LargeDiesisUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -89 l 360 -248 l 405 -248 l 405 -68 b 180 248 405 143 330 248 l 0 248 z m 45 12 l 45 112 l 180 112 b 360 -68 300 112 360 53 l 360 -147 z',\n },\n accSagittal49LargeDiesisDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 180 -248 b 405 68 330 -248 405 -143 l 405 248 l 360 248 l 45 89 l 45 517 l 0 517 z m 360 147 l 360 68 b 180 -112 360 -53 300 -112 l 45 -112 l 45 -12 z',\n },\n accSagittal11v19LargeDiesisUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -86 l 449 -256 l 449 -157 l 45 13 l 45 138 l 449 -30 l 449 68 l 23 248 l 0 248 z',\n },\n accSagittal11v19LargeDiesisDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 l 449 -68 l 449 30 l 45 -138 l 45 -13 l 449 157 l 449 256 l 45 86 l 45 517 l 0 517 z',\n },\n accSagittal5v13LargeDiesisUp: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 89 -112 0 -52 30 -112 b 180 -35 125 -112 157 -86 l 180 -517 l 225 -517 l 225 -86 l 631 -256 l 631 -157 l 225 13 l 225 138 l 631 -30 l 631 68 l 203 248 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 20 z',\n },\n accSagittal5v13LargeDiesisDown: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 81 3 45 -20 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 l 631 -68 l 631 30 l 225 -138 l 225 -13 l 631 157 l 631 256 l 225 86 l 225 517 l 180 517 l 180 35 b 89 112 157 86 125 112 b 0 -68 30 112 0 52 z',\n },\n accSagittalSharp23SDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -203 l 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 b 315 6 287 -23 301 -13 l 315 -517 l 360 -517 l 360 248 l 337 248 b 248 68 312 127 282 68 l 194 68 b 89 157 125 68 89 98 l 45 157 b 60 59 45 118 50 85 b 0 -203 20 30 0 -56 z',\n },\n accSagittalFlat23SUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 60 -59 0 56 20 -30 b 45 -157 50 -85 45 -118 l 89 -157 b 194 -68 89 -98 125 -68 l 248 -68 b 337 -248 282 -68 312 -127 l 360 -248 l 360 517 l 315 517 l 315 -6 b 271 23 301 13 287 23 l 180 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z',\n },\n accSagittalSharp49SDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -292 l 45 -292 b 112 -157 45 -203 68 -157 l 135 -157 l 135 -517 l 180 -517 l 180 -157 l 271 -157 b 315 -135 285 -157 300 -150 l 315 -517 l 360 -517 l 360 248 l 337 248 b 248 157 323 187 292 157 l 89 157 b 0 -68 30 157 0 82 l 45 -68 b 112 68 45 23 68 68 l 271 68 b 315 89 284 68 300 75 l 315 -32 b 248 -68 298 -56 275 -68 l 89 -68 b 0 -292 29 -68 0 -143 z',\n },\n accSagittalFlat49SUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 292 b 89 68 0 143 29 68 l 248 68 b 315 32 275 68 298 56 l 315 -89 b 271 -68 300 -75 284 -68 l 112 -68 b 45 68 68 -68 45 -23 l 0 68 b 89 -157 0 -82 30 -157 l 248 -157 b 337 -248 292 -157 323 -187 l 360 -248 l 360 517 l 315 517 l 315 135 b 271 157 300 150 285 157 l 180 157 l 180 517 l 135 517 l 135 157 l 112 157 b 45 292 68 157 45 203 z',\n },\n accSagittalSharp7v19CDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -271 l 135 -125 l 135 -517 l 180 -517 l 180 -78 l 315 65 l 315 -517 l 360 -517 l 360 248 l 337 248 b 118 89 239 143 166 89 b 45 157 68 89 45 112 l 0 157 b 89 -20 0 53 29 -6 z',\n },\n accSagittalFlat7v19CUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 20 b 0 -157 29 6 0 -53 l 45 -157 b 118 -89 45 -112 68 -89 b 337 -248 166 -89 239 -143 l 360 -248 l 360 517 l 315 517 l 315 -65 l 180 78 l 180 517 l 135 517 l 135 125 l 0 271 l 0 112 z',\n },\n accSagittalSharp19CDown: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 96 45 17 89 72 l 180 -517 l 225 -517 l 225 107 b 315 112 252 112 282 112 l 360 112 l 360 -517 l 405 -517 l 405 248 l 271 248 b 0 68 89 248 0 187 z',\n },\n accSagittalFlat19CUp: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 271 -248 0 -187 89 -248 l 405 -248 l 405 517 l 360 517 l 360 -112 l 315 -112 b 225 -107 282 -112 252 -112 l 225 517 l 180 517 l 180 -96 b 45 68 89 -72 45 -17 l 45 248 l 0 248 z',\n },\n accSagittalSharp11v49CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 112 -23 45 -82 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 271 112 215 -23 245 23 l 315 112 l 315 -517 l 360 -517 l 360 107 b 449 -68 420 89 449 30 l 449 -248 l 495 -248 l 495 68 b 360 248 495 189 449 248 l 248 248 b 157 68 222 128 192 68 l 89 68 b 0 -203 30 68 0 -23 z',\n },\n accSagittalFlat11v49CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -128 l 360 -248 b 495 -68 449 -248 495 -189 l 495 248 l 449 248 l 449 68 b 360 -107 449 -30 420 -89 l 360 517 l 315 517 l 315 -112 l 271 -112 b 180 23 245 -23 215 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 82 z',\n },\n accSagittalSharp143CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 259 76 210 -23 236 10 l 315 17 l 315 -517 l 360 -517 l 360 -30 l 585 -271 l 585 -112 l 248 248 b 157 68 222 127 192 68 l 89 68 b 0 -203 30 68 0 -23 z',\n },\n accSagittalFlat143CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -127 l 585 112 l 585 271 l 360 30 l 360 517 l 315 517 l 315 -17 l 259 -76 b 180 23 236 -10 210 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z',\n },\n accSagittalSharp17kDown: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -157 l 0 -256 l 225 -161 l 225 -517 l 271 -517 l 271 -144 l 405 -86 l 405 -517 l 449 -517 l 449 248 l 428 248 b 145 171 305 196 210 171 b 45 248 78 171 45 196 l 0 248 b 79 101 0 170 26 121 l 0 68 l 0 -32 l 405 138 l 405 13 z',\n },\n accSagittalFlat17kUp: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 405 -13 l 405 -138 l 0 32 l 0 -68 l 79 -101 b 0 -248 26 -121 0 -170 l 45 -248 b 145 -171 45 -196 78 -171 b 428 -248 210 -171 305 -196 l 449 -248 l 449 517 l 405 517 l 405 86 l 271 144 l 271 517 l 225 517 l 225 161 l 0 256 l 0 157 z',\n },\n accSagittalSharp19sDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 109 45 36 89 95 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -23 295 23 325 -23 l 360 -517 l 405 -517 l 405 -23 l 472 -23 b 540 -203 517 -23 540 -84 l 585 -203 b 495 68 585 -23 554 68 l 383 68 b 292 248 348 68 318 127 l 180 248 b 0 68 60 248 0 187 z',\n },\n accSagittalFlat19sUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 180 -248 0 -187 60 -248 l 292 -248 b 383 -68 318 -127 348 -68 l 495 -68 b 585 203 554 -68 585 23 l 540 203 b 472 23 540 84 517 23 l 405 23 l 405 517 l 360 517 l 360 23 b 271 -112 325 23 295 -23 l 225 -112 l 225 517 l 180 517 l 180 -109 b 45 68 89 -95 45 -36 l 45 248 l 0 248 z',\n },\n accSagittalSharp19sUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -96 l 89 -517 l 135 -517 l 135 -108 b 180 -112 148 -112 163 -112 b 225 -108 196 -112 210 -112 l 225 -517 l 271 -517 l 271 -94 b 360 -12 305 -78 337 -50 l 360 -517 l 405 -517 l 405 248 l 383 248 b 190 0 353 98 288 16 b 138 -3 171 0 153 -3 b 45 68 75 -3 45 20 l 0 68 b 89 -96 0 -17 30 -72 z',\n },\n accSagittalFlat19sDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 96 b 0 -68 30 72 0 17 l 45 -68 b 138 3 45 -20 75 3 b 190 0 153 3 171 0 b 383 -248 288 -16 353 -98 l 405 -248 l 405 517 l 360 517 l 360 12 b 271 94 337 50 305 78 l 271 517 l 225 517 l 225 108 b 180 112 210 112 196 112 b 135 108 163 112 148 112 l 135 517 l 89 517 z',\n },\n accSagittalSharp17kUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 337 -23 b 405 14 363 -23 386 -10 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 68 402 127 364 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalFlat17kDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 517 l 405 517 l 405 -14 b 337 23 386 10 363 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp143CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 337 -23 b 405 14 363 -23 386 -10 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 68 402 127 364 68 l 240 68 b 89 157 140 68 89 98 l 45 157 b 68 53 45 115 52 81 b 0 -203 23 23 0 -63 z',\n },\n accSagittalFlat143CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -53 0 63 23 -23 b 45 -157 52 -81 45 -115 l 89 -157 b 240 -68 89 -98 140 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 517 l 405 517 l 405 -14 b 337 23 386 10 363 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp11v49CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -68 b 135 68 45 23 76 68 l 337 68 b 405 95 363 68 386 76 l 405 -27 b 315 -68 386 -55 356 -68 l 112 -68 b 0 -292 37 -68 0 -143 l 45 -292 b 135 -157 45 -203 75 -157 l 135 -517 l 180 -517 l 180 -157 l 271 -157 l 271 -517 l 315 -517 l 315 -157 l 337 -157 b 405 -130 360 -157 383 -148 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 157 413 187 376 157 l 112 157 b 0 -68 37 157 0 82 z',\n },\n accSagittalFlat11v49CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 68 b 112 -157 0 -82 37 -157 l 315 -157 b 428 -248 376 -157 413 -187 l 449 -248 l 449 517 l 405 517 l 405 130 b 337 157 383 148 360 157 l 315 157 l 315 517 l 271 517 l 271 157 l 180 157 l 180 517 l 135 517 l 135 157 b 45 292 75 157 45 203 l 0 292 b 112 68 0 143 37 68 l 315 68 b 405 27 356 68 386 55 l 405 -95 b 337 -68 386 -76 363 -68 l 135 -68 b 45 68 76 -68 45 -23 z',\n },\n accSagittalSharp19CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 14 b 337 -23 289 -10 311 -23 l 360 -23 l 360 -517 l 405 -517 l 405 -23 b 495 -203 465 -23 495 -82 l 540 -203 b 428 68 540 -23 503 68 l 360 68 b 248 248 310 68 271 128 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z',\n },\n accSagittalFlat19CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 b 360 -68 271 -128 310 -68 l 428 -68 b 540 203 503 -68 540 23 l 495 203 b 405 23 495 82 465 23 l 405 517 l 360 517 l 360 23 l 337 23 b 271 -14 311 23 289 10 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z',\n },\n accSagittalSharp7v19CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 112 l 315 112 b 360 109 331 112 346 112 l 360 -517 l 405 -517 l 405 98 b 495 -68 465 73 495 19 l 495 -248 l 540 -248 l 540 68 b 360 248 540 189 480 248 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z',\n },\n accSagittalFlat7v19CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 360 -248 b 540 -68 480 -248 540 -189 l 540 248 l 495 248 l 495 68 b 405 -98 495 -19 465 -73 l 405 517 l 360 517 l 360 -109 b 315 -112 346 -112 331 -112 l 271 -112 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z',\n },\n accSagittalSharp49SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 112 l 360 112 b 405 109 376 112 390 112 l 405 -517 l 449 -517 l 449 96 b 540 -68 510 72 540 17 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalFlat49SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 449 -96 540 -17 510 -72 l 449 517 l 405 517 l 405 -109 b 360 -112 390 -112 376 -112 l 315 -112 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp23SUp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 71 l 405 -14 l 405 -517 l 449 -517 l 449 -56 l 675 -268 l 675 -112 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalFlat23SDown: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 675 112 l 675 268 l 449 56 l 449 517 l 405 517 l 405 14 l 315 -71 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp5v13MUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 495 141 l 495 14 l 0 -157 l 0 -256 l 225 -180 l 225 -517 l 271 -517 l 271 -161 l 360 -130 l 360 -517 l 405 -517 l 405 -115 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 517 248 b 167 168 366 194 248 168 b 45 248 85 168 45 194 l 0 248 b 95 99 0 170 30 120 l 0 68 l 0 -30 z',\n },\n accSagittalFlat5v13MDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 30 l 0 -68 l 95 -99 b 0 -248 30 -120 0 -170 l 45 -248 b 167 -168 45 -194 85 -168 b 517 -248 248 -168 366 -194 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 115 l 405 517 l 360 517 l 360 130 l 271 161 l 271 517 l 225 517 l 225 180 l 0 256 l 0 157 l 495 -14 l 495 -141 z',\n },\n accSagittalSharp11v19MUp: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 14 b 428 -23 379 -10 402 -23 l 449 -23 l 449 -517 l 495 -517 l 495 -23 b 585 -203 554 -23 585 -84 l 631 -203 b 517 68 631 -23 593 68 l 449 68 b 337 248 400 68 363 127 l 225 248 b 0 68 75 248 0 187 z',\n },\n accSagittalFlat11v19MDown: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 b 449 -68 363 -127 400 -68 l 517 -68 b 631 203 593 -68 631 23 l 585 203 b 495 23 585 84 554 23 l 495 517 l 449 517 l 449 23 l 428 23 b 360 -14 402 23 379 10 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z',\n },\n accSagittalSharp49MUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 225 -180 l 225 -517 l 271 -517 l 271 -166 l 360 -132 l 360 -517 l 405 -517 l 405 -117 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 360 248 b 0 -68 120 248 0 143 z m 45 -145 l 45 -68 b 360 112 45 53 150 112 l 495 112 l 495 14 z',\n },\n accSagittalFlat49MDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 68 b 360 -248 0 -143 120 -248 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 117 l 405 517 l 360 517 l 360 132 l 271 166 l 271 517 l 225 517 l 225 180 l 45 248 l 0 248 z m 495 -14 l 495 -112 l 360 -112 b 45 68 150 -112 45 -53 l 45 145 z',\n },\n accSagittalSharp5v49MUp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -271 l 180 -79 l 180 -517 l 225 -517 l 225 -30 l 315 65 l 315 -517 l 360 -517 l 360 65 l 449 -30 l 449 -517 l 495 -517 l 495 -79 l 675 -271 l 675 -112 l 337 248 b 118 89 239 143 166 89 b 45 157 68 89 45 112 l 0 157 b 107 0 0 62 36 10 l 0 -112 z',\n },\n accSagittalFlat5v49MDown: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 107 0 b 0 -157 36 -10 0 -62 l 45 -157 b 118 -89 45 -112 68 -89 b 337 -248 166 -89 239 -143 l 675 112 l 675 271 l 495 79 l 495 517 l 449 517 l 449 30 l 360 -65 l 360 517 l 315 517 l 315 -65 l 225 30 l 225 517 l 180 517 l 180 79 l 0 271 z',\n },\n accSagittalSharp49LUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -82 l 135 -112 l 135 -517 l 180 -517 l 180 -127 l 271 -157 l 271 -517 l 315 -517 l 315 -173 l 540 -248 l 585 -248 l 585 -68 b 180 248 585 143 449 248 l 0 248 z m 45 112 l 180 112 b 540 -68 420 112 540 53 l 540 -145 l 45 16 z',\n },\n accSagittalFlat49LDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 180 -248 b 585 68 449 -248 585 -143 l 585 248 l 540 248 l 315 173 l 315 517 l 271 517 l 271 157 l 180 127 l 180 517 l 135 517 l 135 112 l 45 82 l 45 517 l 0 517 z m 45 -16 l 540 145 l 540 68 b 180 -112 540 -53 420 -112 l 45 -112 z',\n },\n accSagittalSharp11v19LUp: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -81 l 135 -108 l 135 -517 l 180 -517 l 180 -121 l 271 -148 l 271 -517 l 315 -517 l 315 -161 l 631 -255 l 631 -157 l 45 16 l 45 144 l 631 -30 l 631 68 l 23 248 l 0 248 z',\n },\n accSagittalFlat11v19LDown: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 l 631 -68 l 631 30 l 45 -144 l 45 -16 l 631 157 l 631 255 l 315 161 l 315 517 l 271 517 l 271 148 l 180 121 l 180 517 l 135 517 l 135 108 l 45 81 l 45 517 l 0 517 z',\n },\n accSagittalSharp5v13LUp: {\n x_min: 0,\n x_max: 500,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 -85 l 360 -120 l 360 -517 l 405 -517 l 405 -135 l 720 -256 l 720 -157 l 271 14 l 271 141 l 720 -30 l 720 68 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z',\n },\n accSagittalFlat5v13LDown: {\n x_min: 0,\n x_max: 500,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 720 -68 l 720 30 l 271 -141 l 271 -14 l 720 157 l 720 256 l 405 135 l 405 517 l 360 517 l 360 120 l 271 85 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z',\n },\n accSagittalDoubleSharp23SDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -203 l 45 -203 b 135 -23 45 -82 76 -23 l 301 -23 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 370 -14 b 449 112 423 10 449 53 l 449 248 l 428 248 b 315 68 402 127 364 68 l 240 68 b 89 157 140 68 89 98 l 45 157 b 68 53 45 115 52 81 b 0 -203 23 23 0 -63 z',\n },\n accSagittalDoubleFlat23SUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -53 0 63 23 -23 b 45 -157 52 -81 45 -115 l 89 -157 b 240 -68 89 -98 140 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 -112 b 370 14 449 -53 423 -10 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 301 23 l 135 23 b 45 203 76 23 45 82 z',\n },\n accSagittalDoubleSharp49SDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -292 l 45 -292 b 112 -157 45 -203 68 -157 l 256 -157 l 135 -503 l 187 -517 l 337 -82 l 490 -517 l 540 -503 l 366 0 l 396 89 b 449 157 416 102 435 125 l 449 248 l 428 248 b 315 157 413 187 376 157 l 112 157 b 0 -68 39 157 0 82 l 45 -68 b 135 68 45 23 76 68 l 287 68 l 311 0 l 288 -68 l 89 -68 b 0 -292 32 -68 0 -144 z',\n },\n accSagittalDoubleFlat49SUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 292 b 89 68 0 144 32 68 l 288 68 l 311 0 l 287 -68 l 135 -68 b 45 68 76 -68 45 -23 l 0 68 b 112 -157 0 -82 39 -157 l 315 -157 b 428 -248 376 -157 413 -187 l 449 -248 l 449 -157 b 396 -89 435 -125 416 -102 l 366 0 l 540 503 l 490 517 l 337 82 l 187 517 l 135 503 l 256 157 l 112 157 b 45 292 68 157 45 203 z',\n },\n accSagittalDoubleSharp7v19CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -266 l 307 -7 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 386 59 l 449 112 l 449 248 l 428 248 b 130 68 285 127 186 68 b 45 157 73 68 45 98 l 0 157 b 112 -20 0 53 37 -6 z',\n },\n accSagittalDoubleFlat7v19CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 112 20 b 0 -157 37 6 0 -53 l 45 -157 b 130 -68 45 -98 73 -68 b 428 -248 186 -68 285 -127 l 449 -248 l 449 -112 l 386 -59 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 307 7 l 0 266 l 0 112 z',\n },\n accSagittalDoubleSharp19CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 315 109 45 36 135 95 l 354 0 l 180 -503 l 232 -517 l 383 -82 l 534 -517 l 585 -503 l 410 0 l 449 112 l 495 112 l 495 248 l 360 248 b 0 68 120 248 0 187 z m 372 112 l 393 112 l 383 82 z',\n },\n accSagittalDoubleFlat19CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 360 -248 0 -187 120 -248 l 495 -248 l 495 -112 l 449 -112 l 410 0 l 585 503 l 534 517 l 383 82 l 232 517 l 180 503 l 354 0 l 315 -109 b 45 68 135 -95 45 -36 l 45 248 l 0 248 z m 383 -82 l 393 -112 l 372 -112 z',\n },\n accSagittalDoubleSharp11v49CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 360 112 b 540 -68 480 112 540 53 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalDoubleFlat11v49CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 360 -112 540 -53 480 -112 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalDoubleSharp143CDown: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 337 49 l 675 -268 l 675 -112 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalDoubleFlat143CUp: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 675 112 l 675 268 l 337 -49 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalDoubleSharp17kDown: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 248 b 95 101 0 170 30 121 l 0 68 l 0 -30 l 364 96 l 399 0 l 390 -23 l 0 -157 l 0 -255 l 353 -135 l 225 -503 l 275 -517 l 428 -82 l 577 -517 l 631 -503 l 455 0 l 507 145 l 540 157 l 540 248 l 517 248 b 167 168 366 194 248 168 b 45 248 85 168 45 194 z m 416 115 l 442 124 l 428 82 z',\n },\n accSagittalDoubleFlat17kUp: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -248 b 167 -168 45 -194 85 -168 b 517 -248 248 -168 366 -194 l 540 -248 l 540 -157 l 507 -145 l 455 0 l 631 503 l 577 517 l 428 82 l 275 517 l 225 503 l 353 135 l 0 255 l 0 157 l 390 23 l 399 0 l 364 -96 l 0 30 l 0 -68 l 95 -101 b 0 -248 30 -121 0 -170 z m 428 -82 l 442 -124 l 416 -115 z',\n },\n accSagittalDoubleSharp19sDown: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 271 112 45 53 120 112 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 367 4 b 428 -23 386 -13 405 -23 l 495 -23 b 585 -203 554 -23 585 -84 l 631 -203 b 517 68 631 -23 593 68 l 449 68 b 337 248 400 68 363 127 l 225 248 b 0 68 75 248 0 187 z',\n },\n accSagittalDoubleFlat19sUp: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 b 449 -68 363 -127 400 -68 l 517 -68 b 631 203 593 -68 631 23 l 585 203 b 495 23 585 84 554 23 l 428 23 b 367 -4 405 23 386 13 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 271 -112 b 45 68 120 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittalShaftUp: {\n x_min: 0,\n x_max: 31,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 112 l 0 -517 l 45 -517 l 45 112 l 23 248 z',\n },\n accSagittalShaftDown: {\n x_min: 0,\n x_max: 31,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 23 -248 l 45 -112 l 45 517 l 0 517 l 0 -112 z',\n },\n accSagittalAcute: {\n x_min: 0,\n x_max: 125,\n y_min: -62,\n y_max: 125,\n ha: 187,\n o: 'm 0 0 l 0 -89 l 180 89 l 180 180 z',\n },\n accSagittalGrave: {\n x_min: 0,\n x_max: 125,\n y_min: -125,\n y_max: 62,\n ha: 187,\n o: 'm 180 -180 l 180 -89 l 0 89 l 0 0 z',\n },\n accSagittal1MinaUp: {\n x_min: -7,\n x_max: 124,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 134 150 179 112 163 135 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal1MinaDown: {\n x_min: -7,\n x_max: 124,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 179 -23 163 -135 179 -112 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittal2MinasUp: {\n x_min: -7,\n x_max: 218,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 269 150 314 112 298 135 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal2MinasDown: {\n x_min: -7,\n x_max: 218,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittal1TinaUp: {\n x_min: 0,\n x_max: 93,\n y_min: 16,\n y_max: 107,\n ha: 91,\n o: 'm 134 154 l 91 154 b 81 76 91 101 91 86 b 0 68 73 69 48 68 l 0 23 b 134 154 122 23 134 36 z',\n },\n accSagittal1TinaDown: {\n x_min: 0,\n x_max: 93,\n y_min: -107,\n y_max: -16,\n ha: 91,\n o: 'm 134 -154 b 0 -23 134 -36 122 -23 l 0 -68 b 81 -76 48 -68 73 -69 b 91 -154 91 -86 91 -101 z',\n },\n accSagittal2TinasUp: {\n x_min: 0,\n x_max: 94,\n y_min: 16,\n y_max: 107,\n ha: 91,\n o: 'm 135 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z',\n },\n accSagittal2TinasDown: {\n x_min: 0,\n x_max: 94,\n y_min: -107,\n y_max: -16,\n ha: 91,\n o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 z',\n },\n accSagittal3TinasUp: {\n x_min: -7,\n x_max: 124,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 134 150 179 112 163 135 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal3TinasDown: {\n x_min: -7,\n x_max: 124,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 179 -23 163 -135 179 -112 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittal4TinasUp: {\n x_min: 0,\n x_max: 187,\n y_min: 16,\n y_max: 106.69999999999997,\n ha: 90.69999999999997,\n o: 'm 0 68 l 0 23 b 143 45 105 23 124 26 b 203 107 153 55 183 107 b 226 23 216 107 226 86 l 269 23 b 225 150 269 112 253 135 b 160 132 207 158 181 153 b 115 81 138 112 124 88 b 0 68 104 71 94 68 z',\n },\n accSagittal4TinasDown: {\n x_min: 0,\n x_max: 187,\n y_min: -106.69999999999999,\n y_max: -16,\n ha: 90.69999999999999,\n o: 'm 0 -68 b 115 -81 94 -68 104 -71 b 160 -132 124 -88 138 -112 b 225 -150 181 -153 207 -158 b 269 -23 253 -135 269 -112 l 226 -23 b 203 -107 226 -86 216 -107 b 143 -45 183 -107 153 -55 b 0 -23 124 -26 105 -23 z',\n },\n accSagittal5TinasUp: {\n x_min: 0,\n x_max: 218,\n y_min: 16,\n y_max: 107,\n ha: 91,\n o: 'm 135 23 b 187 45 156 23 168 26 b 249 107 197 55 228 107 b 271 23 262 107 271 86 l 314 23 b 269 150 314 112 298 135 b 204 132 252 158 226 153 b 160 81 183 112 168 88 b 135 68 148 71 147 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z',\n },\n accSagittal5TinasDown: {\n x_min: 0,\n x_max: 218,\n y_min: -107,\n y_max: -16,\n ha: 91,\n o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 b 160 -81 147 -68 148 -71 b 204 -132 168 -88 183 -112 b 269 -150 226 -153 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 249 -107 271 -86 262 -107 b 187 -45 228 -107 197 -55 b 135 -23 168 -26 156 -23 z',\n },\n accSagittal6TinasUp: {\n x_min: -7,\n x_max: 218,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 269 150 314 112 298 135 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal6TinasDown: {\n x_min: -7,\n x_max: 218,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittal7TinasUp: {\n x_min: 0,\n x_max: 281,\n y_min: 16,\n y_max: 106.69999999999997,\n ha: 90.69999999999997,\n o: 'm 0 68 l 0 23 b 143 45 105 23 124 26 b 203 107 153 55 183 107 b 226 23 216 107 226 86 l 269 23 b 298 65 269 23 291 55 b 343 107 314 86 331 107 b 361 23 354 107 363 86 l 405 23 b 360 150 405 112 389 135 b 294 130 343 158 311 150 b 264 92 281 115 272 104 b 225 150 258 127 245 140 b 160 132 207 158 181 153 b 115 81 138 112 124 88 b 0 68 104 71 94 68 z',\n },\n accSagittal7TinasDown: {\n x_min: 0,\n x_max: 281,\n y_min: -106.69999999999999,\n y_max: -16,\n ha: 90.69999999999999,\n o: 'm 0 -68 b 115 -81 94 -68 104 -71 b 160 -132 124 -88 138 -112 b 225 -150 181 -153 207 -158 b 264 -92 245 -140 258 -127 b 294 -130 272 -104 281 -115 b 360 -150 311 -150 343 -158 b 405 -23 389 -135 405 -112 l 361 -23 b 343 -107 363 -86 354 -107 b 298 -65 331 -107 314 -86 b 269 -23 291 -55 269 -23 l 226 -23 b 203 -107 226 -86 216 -107 b 143 -45 183 -107 153 -55 b 0 -23 124 -26 105 -23 z',\n },\n accSagittal8TinasUp: {\n x_min: 0,\n x_max: 312,\n y_min: 16,\n y_max: 107,\n ha: 91,\n o: 'm 135 23 b 187 45 156 23 168 26 b 249 107 197 55 228 107 b 271 23 262 107 271 86 l 314 23 b 343 65 314 23 336 55 b 387 107 359 86 376 107 b 406 23 399 107 408 86 l 449 23 b 405 150 449 112 433 135 b 338 130 387 158 356 150 b 308 92 325 115 317 104 b 269 150 302 127 289 140 b 204 132 252 158 226 153 b 160 81 183 112 168 88 b 135 68 148 71 147 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z',\n },\n accSagittal8TinasDown: {\n x_min: 0,\n x_max: 312,\n y_min: -107,\n y_max: -16,\n ha: 91,\n o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 b 160 -81 147 -68 148 -71 b 204 -132 168 -88 183 -112 b 269 -150 226 -153 252 -158 b 308 -92 289 -140 302 -127 b 338 -130 317 -104 325 -115 b 405 -150 356 -150 387 -158 b 449 -23 433 -135 449 -112 l 406 -23 b 387 -107 408 -86 399 -107 b 343 -65 376 -107 359 -86 b 314 -23 336 -55 314 -23 l 271 -23 b 249 -107 271 -86 262 -107 b 187 -45 228 -107 197 -55 b 135 -23 168 -26 156 -23 z',\n },\n accSagittal9TinasUp: {\n x_min: -7,\n x_max: 312,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 343 65 314 23 336 55 b 387 107 359 86 376 107 b 406 23 399 107 408 86 l 449 23 b 405 150 449 112 433 135 b 338 130 387 158 356 150 b 308 92 325 115 317 104 b 269 150 302 127 289 140 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal9TinasDown: {\n x_min: -7,\n x_max: 312,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 308 -92 289 -140 302 -127 b 338 -130 317 -104 325 -115 b 405 -150 356 -150 387 -158 b 449 -23 433 -135 449 -112 l 406 -23 b 387 -107 408 -86 399 -107 b 343 -65 376 -107 359 -86 b 314 -23 336 -55 314 -23 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittalFractionalTinaUp: {\n x_min: -3,\n x_max: 35,\n y_min: 73,\n y_max: 111,\n ha: 38,\n o: 'm -4 132 b 23 105 -4 118 9 105 b 50 132 37 105 50 118 b 23 160 50 147 37 160 b -4 132 9 160 -4 147 z',\n },\n accSagittalFractionalTinaDown: {\n x_min: -3,\n x_max: 35,\n y_min: -111,\n y_max: -73,\n ha: 38,\n o: 'm -4 -132 b 23 -160 -4 -147 9 -160 b 50 -132 37 -160 50 -147 b 23 -105 50 -118 37 -105 b -4 -132 9 -105 -4 -118 z',\n },\n accidentalNarrowReversedFlat: {\n x_min: 0,\n x_max: 164,\n y_min: -194,\n y_max: 421,\n ha: 615,\n o: 'm 236 -279 l 236 606 l 192 606 l 192 179 b 85 243 150 222 114 243 b 0 84 23 243 0 134 b 112 -158 0 3 37 -78 z m 192 112 l 192 -163 l 135 -98 b 82 40 101 -50 82 -3 b 138 144 82 73 96 144 b 192 112 153 144 170 132 z',\n },\n accidentalNarrowReversedFlatAndFlat: {\n x_min: 0,\n x_max: 414,\n y_min: -194,\n y_max: 421,\n ha: 615,\n o: 'm 281 606 l 281 -268 l 438 -158 b 596 84 547 -82 596 3 b 475 243 596 154 556 243 b 325 179 435 243 384 222 l 325 606 z m 235 -279 l 235 606 l 190 606 l 190 179 b 85 243 148 222 114 243 b 12 158 52 243 27 215 b 0 84 3 134 0 108 b 112 -158 0 3 37 -78 z m 325 111 b 410 144 359 132 386 144 b 498 36 462 144 498 84 b 413 -107 498 -9 469 -58 l 325 -173 z m 192 112 l 192 -163 l 135 -98 b 81 40 99 -50 81 -3 b 91 94 81 59 84 76 b 137 144 102 127 118 144 b 192 112 153 144 170 132 z',\n },\n accidentalWilsonPlus: {\n x_min: 0,\n x_max: 281,\n y_min: -203,\n y_max: 203,\n ha: 406,\n o: 'm 405 268 l 225 98 l 225 292 l 180 292 l 180 56 l 0 -112 l 0 -268 l 180 -98 l 180 -292 l 225 -292 l 225 -56 l 405 112 z',\n },\n accidentalWilsonMinus: {\n x_min: 0,\n x_max: 281,\n y_min: -186,\n y_max: 186,\n ha: 372,\n o: 'm 0 112 l 405 -268 l 405 -112 l 0 268 z',\n },\n },\n fontFamily: 'Bravura',\n resolution: 1000,\n generatedOn: '2022-06-26T17:36:54.186Z',\n};\n","/**\n * The Bravura font was created by Daniel Spreadbury @ Steinberg.\n * https://github.com/steinbergmedia/bravura/\n */\nexport const BravuraMetrics = {\n name: 'Bravura',\n smufl: true,\n stave: {\n padding: 12,\n endPaddingMax: 10,\n endPaddingMin: 5,\n unalignedNotePadding: 10,\n },\n accidental: {\n noteheadAccidentalPadding: 1,\n leftPadding: 2,\n accidentalSpacing: 3,\n },\n clef: {\n default: {\n point: 32,\n width: 26,\n },\n small: {\n point: 26,\n width: 20,\n },\n annotations: {\n '8va': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: -1.4,\n shiftX: 12,\n },\n },\n small: {\n point: 16,\n treble: {\n line: -0.2,\n shiftX: 8,\n },\n },\n },\n '8vb': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: 6,\n shiftX: 10,\n },\n bass: {\n line: 3.5,\n shiftX: 1,\n },\n },\n small: {\n point: 16,\n treble: {\n line: 5.3,\n shiftX: 6,\n },\n bass: {\n line: 3.1,\n shiftX: 0.5,\n },\n },\n },\n },\n // These may no longer be necessary\n lineCount: {\n '8': { point: 55, shiftY: 14 },\n '7': { point: 47, shiftY: 8 },\n '6': { point: 32, shiftY: 1 },\n '5': { point: 30, shiftY: -6 },\n '4': { point: 23, shiftY: -12 },\n },\n },\n parenthesis: {\n default: {\n point: 39,\n width: 7,\n },\n gracenote: {\n point: (39 * 3) / 5,\n width: 3,\n },\n },\n pedalMarking: {\n up: {\n point: 40,\n },\n down: {\n point: 34,\n },\n },\n // These are for numeric digits, such as in time signatures\n digits: {\n // used by timesig\n shiftLine: -1,\n point: 34,\n // used by tuplets\n tupletPoint: 22,\n shiftY: -6,\n },\n articulation: {\n articStaccatissimoAbove: {\n padding: 2,\n },\n articStaccatissimoBelow: {\n padding: 2,\n },\n },\n tremolo: {\n default: {\n point: 25,\n spacing: 5,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 11,\n offsetXStemDown: 1,\n },\n grace: {\n point: 18,\n spacing: 4,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 7,\n offsetXStemDown: 1,\n },\n },\n staveRepetition: {\n symbolText: {\n offsetX: 12,\n offsetY: 25,\n spacing: 5,\n },\n coda: {\n offsetY: 25,\n },\n segno: {\n offsetY: 10,\n },\n },\n // noteHead: {\n // },\n stem: {\n heightAdjustmentForFlag: -3,\n // These are stem (Y) offsets to the note heads. To shift the\n // noteheads (x-position) themselves, see glyphs.notehead.custom.\n noteHead: {\n noteheadTriangleUpHalf: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpBlack: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpWhole: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadXHalf: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXBlack: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXWhole: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadHalf: {\n offsetYBaseStemUp: -2.55,\n offsetYBaseStemDown: 2.65,\n },\n noteheadBlack: {\n offsetYBaseStemUp: -2,\n offsetYBaseStemDown: 2,\n },\n noteheadSquareWhite: {\n offsetYBaseStemDown: -5,\n offsetYBaseStemUp: 5,\n },\n },\n },\n // Values under here are used by the Glyph class to reposition and rescale\n // glyphs based on their category. This should be the first stop for\n // custom font glyph repositioning.\n //\n // The glyph loader first looks up a specific set of settings based on the\n // glyph code, and if not found, uses the defaults from the category. See\n // glyphs.textNote for an example of this.\n //\n // Details in Glyph.lookupFontMetrics.\n glyphs: {\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n segno: {\n shiftX: -7,\n },\n flag: {\n shiftX: -0.75,\n staveTempo: {\n shiftX: -1,\n },\n },\n clef: {\n gClef: {\n default: { scale: 1.1, shiftY: 1 },\n small: { shiftY: 1.5 },\n },\n fClef: {\n default: { shiftY: -0.5 },\n },\n },\n ornament: {\n ornamentTurn: {\n scale: 1.2,\n },\n ornamentTurnSlash: {\n scale: 1.2,\n },\n },\n stringNumber: {\n verticalPadding: 8,\n stemPadding: 2,\n leftPadding: 5,\n rightPadding: 6,\n },\n stroke: {\n arrowheadBlackDown: {\n straight: {\n shiftX: -4.5,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n arrowheadBlackUp: {\n straight: {\n shiftX: -0.85,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n },\n textNote: {\n point: 34,\n breathMarkTick: {\n point: 36,\n shiftY: 9,\n },\n breathMarkComma: {\n point: 36,\n },\n segno: {\n point: 30,\n shiftX: -7,\n shiftY: 8,\n },\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n ornamentTrill: {\n shiftX: -8,\n shiftY: 8,\n },\n ornamentTurn: {\n point: 42,\n },\n ornamentTurnSlash: {\n point: 42,\n },\n ornamentMordent: {\n shiftX: -8,\n },\n ornamentShortTrill: {\n shiftX: -8,\n },\n },\n noteHead: {\n minPadding: 2,\n standard: {\n restQuarterStemUp: {\n point: 35,\n },\n restQuarterStemDown: {\n point: 35,\n },\n },\n custom: {\n noteheadCircleXStemUp: {\n shiftX: 1.5,\n },\n noteheadCircleXStemDown: {\n shiftX: 0.25,\n },\n noteheadDiamondHalfStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondBlackStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondWholeStemUp: {\n shiftX: 1,\n },\n noteheadXHalfStemUp: {\n shiftX: -2,\n },\n noteheadXHalfStemDown: {\n shiftX: 1,\n },\n noteheadXWholeStemUp: {\n shiftX: -4,\n },\n noteheadXWholeStemDown: {\n shiftX: 1,\n },\n noteheadXDoubleWholeStemUp: {\n shiftX: -4,\n },\n noteheadXDoubleWholeStemDown: {\n shiftX: 1,\n },\n noteheadSquareWhiteStemDown: {\n shiftX: 0.25,\n },\n noteheadSquareWhiteStemUp: {\n shiftX: -0.75,\n },\n noteheadSquareBlackStemUp: {\n shiftX: -0.75,\n },\n noteheadTriangleUpWholeStemUp: {\n shiftX: -0.75,\n },\n },\n },\n chordSymbol: {\n global: {\n superscriptOffset: -400,\n subscriptOffset: 300,\n kerningOffset: -250,\n lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'],\n upperKerningText: ['A', 'L'],\n spacing: 100,\n superSubRatio: 0.66,\n },\n csymDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymHalfDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymAugmented: {\n scale: 1,\n leftSideBearing: 0,\n advanceWidth: 530,\n yOffset: 0,\n },\n csymParensLeftTall: {\n scale: 0.8,\n leftSideBearing: -20,\n advanceWidth: 184,\n yOffset: 250,\n },\n csymParensRightTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 189,\n yOffset: 250,\n },\n csymBracketLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 328,\n yOffset: 0,\n },\n csymBracketRightTall: {\n scale: 0.8,\n leftSideBearing: 1,\n advanceWidth: 600,\n yOffset: 0,\n },\n csymParensLeftVeryTall: {\n scale: 0.9,\n leftSideBearing: 50,\n advanceWidth: 121,\n yOffset: 350,\n },\n csymParensRightVeryTall: {\n scale: 0.9,\n leftSideBearing: 0,\n advanceWidth: 111,\n yOffset: 350,\n },\n csymDiagonalArrangementSlash: {\n scale: 0.6,\n leftSideBearing: -1,\n advanceWidth: 990,\n yOffset: 0,\n },\n csymMinor: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 482,\n yOffset: 0,\n },\n csymMajorSeventh: {\n scale: 0.9,\n leftSideBearing: 200,\n yOffset: 0,\n advanceWidth: 600,\n },\n accidentalSharp: {\n scale: 0.75,\n leftSideBearing: 20,\n advanceWidth: 250,\n yOffset: -302,\n },\n accidentalFlat: {\n scale: 0.9,\n leftSideBearing: -20,\n advanceWidth: 226,\n yOffset: -184,\n },\n },\n jazzOrnaments: {\n brassScoop: {\n scale: 1.0,\n xOffset: -12,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 20,\n },\n brassDoitMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 22,\n },\n brassFallLipShort: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassLiftMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 5,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassFallRoughMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 28,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassBend: {\n scale: 1.0,\n xOffset: 2,\n yOffset: -8,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassMuteClosed: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -8,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassMuteOpen: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -7,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassFlip: {\n scale: 1.0,\n xOffset: 10,\n yOffset: 0,\n stemUpYOffset: 7,\n reportedWidth: 10,\n },\n brassJazzTurn: {\n scale: 1.0,\n xOffset: 0,\n yOffset: 0,\n stemUpYOffset: 8,\n reportedWidth: 31,\n },\n brassSmear: {\n scale: 1.0,\n xOffset: 10,\n yOffset: 0,\n stemUpYOffset: 8,\n reportedWidth: 5,\n },\n },\n tuplet: {\n noteHeadOffset: 20,\n stemOffset: 10,\n bottomLine: 4,\n topModifierOffset: 15,\n },\n },\n};\n","export const CustomFont = {\n resolution: 1000,\n fontFamily: 'VexFlowCustom',\n glyphs: {\n noteheadSquareWhite: {\n x_min: 0,\n x_max: 430.75,\n ha: 386,\n o: 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 l 50 150 l 380 150 l 380 -150 l 50 -150 l 50 150 ',\n },\n noteheadSquareBlack: {\n x_min: 0,\n x_max: 430.75,\n ha: 386,\n o: 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 ',\n },\n accidentalBuyukMucennebFlat: {\n x_min: -171.5,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalBakiyeFlat: {\n x_min: -176.9375,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalKucukMucennebSharp: {\n x_min: -1.359375,\n x_max: 255.890625,\n ha: 261,\n o: 'm 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 ',\n },\n accidentalKoron: {\n x_min: -20,\n x_max: 320,\n ha: 257,\n o: 'm -8 200 b -8 210 8 200 16 200 l 20 148 -199 l 23 -615 b 0 -629 9 -629 6 -629 l -21 -612 l -21 -201 l -21 216 l -20 200 m 16 200 l 310 0 l 240 0 l 16 140 l 16 -120 l 240 0 l 310 0 l 16 -200 ',\n },\n accidentalSori: {\n x_min: -10.890625,\n x_max: 299.4375,\n ha: 294,\n o: 'm 44 174 b 51 174 47 174 49 174 b 68 173 55 174 61 174 l 287 112 l 551 40 b 615 20 617 22 609 23 b 626 0 622 16 626 8 b 615 -22 626 -9 622 -18 b 613 -23 613 -23 613 -23 b 613 -23 613 -23 613 -23 b 287 -113 613 -24 597 -29 l 68 -174 b 53 -176 61 -176 57 -176 b 39 -172 47 -176 43 -174 b 27 -151 31 -167 27 -159 b 39 -129 27 -141 31 -133 b 230 -74 43 -124 20 -131 l 370 -36 l 468 -9 b 498 0 484 -4 498 -1 b 468 8 498 0 484 2 l 370 34 l 230 73 b 40 126 28 129 43 124 b 27 149 31 131 27 140 b 44 174 27 161 34 170 m 205 110 l 205 300 b 205 330 245 330 245 300 l 245 300 l 245 -300 b 245 -330 205 -330 205 -300 l 205 -300 l 205 110 l 345 90 m 345 90 l 345 330 b 345 360 385 360 385 330 l 385 330 l 385 -270 b 385 -300 345 -300 345 -270 l 345 -270 l 345 90 ',\n },\n vexAccidentalMicrotonal2: {\n x_min: -1.359375,\n x_max: 386.5625,\n ha: 394,\n o: 'm 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 ',\n },\n vexAccidentalMicrotonal3: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm -146 537 b -138 538 -143 538 -141 538 b -118 525 -129 538 -121 533 b -117 390 -117 522 -117 521 b -115 259 -117 268 -117 259 b -115 259 -115 259 -115 259 b -59 272 -104 263 -62 272 b -39 259 -50 272 -42 267 b -37 209 -38 257 -37 233 b -39 159 -37 185 -38 162 b -85 138 -43 149 -44 149 l -117 131 l -117 21 b -115 -88 -117 -80 -117 -88 b -115 -88 -115 -88 -115 -88 b -59 -75 -104 -84 -62 -75 b -44 -81 -52 -75 -48 -77 b -38 -124 -38 -87 -38 -85 b -38 -138 -38 -124 -38 -138 b -38 -152 -38 -138 -38 -152 b -44 -195 -38 -191 -38 -190 b -85 -209 -48 -200 -48 -200 l -117 -217 l -117 -349 b -118 -486 -117 -481 -117 -482 b -138 -499 -121 -494 -129 -499 b -153 -493 -143 -499 -149 -497 b -159 -415 -158 -487 -159 -496 b -159 -355 -159 -398 -159 -379 b -159 -227 -159 -284 -159 -227 b -205 -238 -159 -227 -180 -232 b -250 -249 -230 -244 -250 -249 b -251 -386 -251 -249 -251 -311 b -252 -525 -251 -521 -251 -522 b -272 -538 -255 -534 -264 -538 b -287 -532 -277 -538 -283 -536 b -293 -452 -292 -527 -293 -536 b -293 -391 -293 -436 -293 -415 b -294 -260 -293 -269 -293 -260 b -294 -260 -294 -260 -294 -260 b -348 -272 -306 -264 -345 -272 b -368 -259 -357 -272 -365 -267 b -369 -209 -369 -257 -369 -233 b -368 -159 -369 -185 -369 -162 b -323 -139 -364 -149 -362 -148 l -293 -131 l -293 -22 b -294 87 -293 80 -293 87 b -294 87 -294 87 -294 87 b -348 75 -306 84 -345 75 b -368 88 -357 75 -365 80 b -369 138 -369 91 -369 114 b -368 188 -369 162 -369 186 b -323 209 -364 198 -362 199 l -293 216 l -293 349 b -292 486 -293 481 -293 482 b -272 499 -288 494 -280 499 b -257 493 -266 499 -261 497 b -251 414 -251 487 -251 496 b -251 354 -251 398 -251 378 b -251 226 -251 284 -251 226 b -205 238 -250 226 -230 231 b -159 249 -180 244 -159 249 b -159 385 -159 249 -159 310 b -157 525 -159 521 -159 522 b -146 537 -156 530 -151 535 z m -159 11 b -159 120 -159 98 -159 120 l -159 120 b -175 116 -160 120 -167 119 b -221 105 -184 114 -204 109 l -251 98 l -251 -12 b -251 -121 -251 -72 -251 -121 b -205 -110 -250 -121 -230 -116 b -159 -99 -180 -104 -159 -99 b -159 11 -159 -99 -159 -49 z m 89 517 b 97 519 92 518 94 519 b 117 505 106 519 114 513 b 119 376 119 502 119 501 l 119 249 l 145 258 b 176 267 169 266 172 267 b 177 267 176 267 177 267 b 196 255 186 267 192 263 l 197 252 l 197 205 b 197 181 197 195 197 187 b 193 149 197 153 197 153 b 152 131 190 144 187 143 l 119 120 l 119 10 b 119 -100 119 -62 119 -100 b 145 -91 120 -100 131 -96 b 173 -82 159 -86 171 -82 b 176 -81 174 -81 175 -81 b 196 -94 185 -81 193 -87 b 198 -151 197 -97 198 -125 b 197 -194 198 -172 197 -192 b 153 -218 193 -203 192 -204 l 119 -230 l 119 -367 l 118 -504 l 117 -507 b 97 -519 113 -514 105 -519 b 82 -512 92 -519 87 -517 b 76 -434 77 -507 76 -516 b 76 -374 76 -418 76 -398 b 76 -245 76 -303 76 -245 b 52 -254 76 -245 65 -249 b 19 -263 34 -260 25 -263 b 6 -257 13 -263 10 -261 b 0 -214 0 -251 0 -253 b 0 -200 0 -210 0 -205 b 0 -188 0 -196 0 -192 b 6 -143 0 -147 0 -149 b 46 -126 10 -139 10 -139 l 76 -115 l 76 -5 b 76 106 76 56 76 106 b 51 98 76 106 64 102 b 18 89 34 92 25 89 b 6 95 13 89 10 91 b 0 139 0 101 0 99 b 0 153 0 143 0 148 b 0 179 0 163 0 172 b 44 225 0 215 3 211 l 76 236 l 76 369 b 78 505 76 501 76 502 b 89 517 80 510 85 515 z ',\n },\n vexAccidentalMicrotonal4: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 283 633 b 291 634 286 634 289 634 b 311 621 300 634 308 629 b 313 505 313 618 313 617 b 313 393 313 443 313 393 b 378 425 313 393 343 407 l 443 458 l 448 458 b 449 458 449 458 449 458 b 471 437 462 458 471 448 b 469 429 471 434 470 432 b 387 382 466 421 469 423 l 313 344 l 313 247 l 313 150 l 315 152 b 433 201 353 184 394 201 b 479 193 448 201 464 198 b 549 86 524 177 549 135 b 526 1 549 59 541 29 b 395 -143 504 -39 475 -71 b 316 -214 351 -182 341 -191 b 292 -229 302 -228 300 -229 b 272 -216 283 -229 275 -224 b 271 55 271 -212 271 -212 b 270 323 271 203 270 323 b 205 291 270 323 241 308 l 140 258 l 135 258 b 134 258 135 258 134 258 b 112 279 121 258 112 267 b 114 287 112 281 113 284 b 196 334 117 295 114 293 l 271 371 l 271 495 b 272 621 271 617 271 618 b 283 633 274 626 279 631 z m 404 133 b 391 134 400 134 395 134 b 384 134 388 134 386 134 b 318 88 358 130 335 114 l 313 81 l 313 -37 l 313 -156 l 316 -152 b 439 83 391 -71 439 22 l 439 84 b 404 133 439 115 430 128 z m -8 633 l -8 633 b 0 634 -6 634 -3 634 b 20 621 8 634 17 629 b 21 384 21 618 21 617 l 21 150 l 24 152 b 141 201 62 184 102 201 b 187 193 157 201 172 198 b 257 86 232 177 257 135 b 234 1 257 59 250 29 b 103 -143 212 -39 183 -71 b 24 -214 60 -182 49 -191 b 0 -229 10 -228 8 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 203 l -21 618 l -20 621 b -8 633 -18 626 -13 631 z m 113 133 l 113 133 b 99 134 109 134 103 134 b 93 134 97 134 94 134 b 26 88 66 130 43 114 l 21 81 l 21 -37 l 21 -156 l 25 -152 b 148 83 99 -71 148 22 l 148 84 b 113 133 148 115 138 128 z ',\n },\n vexNoteHeadRectBlack: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 ',\n },\n vexNoteHeadRectWhite: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 l 50 100 l 380 100 l 380 -100 l 50 -100 l 50 100',\n },\n },\n};\n","export const CustomMetrics = {\n name: 'VexFlowCustom',\n smufl: false,\n glyphs: {},\n};\n","export const PetalumaScriptFont = {\n spacing: 50,\n glyphs: {\n ' ': {\n x_min: 0,\n x_max: 250,\n y_min: 0,\n y_max: 500,\n ha: 500,\n leftSideBearing: 0,\n advanceWidth: 250,\n },\n '0': {\n x_min: 33,\n x_max: 534,\n y_min: -13,\n y_max: 751,\n ha: 764,\n leftSideBearing: 33,\n advanceWidth: 570,\n },\n '1': {\n x_min: 48,\n x_max: 235,\n y_min: -17,\n y_max: 734,\n ha: 751,\n leftSideBearing: 48,\n advanceWidth: 286,\n },\n '2': {\n x_min: 56,\n x_max: 571,\n y_min: -19,\n y_max: 741,\n ha: 760,\n leftSideBearing: 56,\n advanceWidth: 626,\n },\n '3': {\n x_min: 50,\n x_max: 528,\n y_min: -7,\n y_max: 731,\n ha: 738,\n leftSideBearing: 50,\n advanceWidth: 589,\n },\n '4': {\n x_min: 38,\n x_max: 564,\n y_min: -13,\n y_max: 743,\n ha: 756,\n leftSideBearing: 38,\n advanceWidth: 614,\n },\n '5': {\n x_min: 42,\n x_max: 601,\n y_min: -34,\n y_max: 743,\n ha: 777,\n leftSideBearing: 42,\n advanceWidth: 648,\n },\n '6': {\n x_min: 47,\n x_max: 606,\n y_min: -16,\n y_max: 743,\n ha: 759,\n leftSideBearing: 47,\n advanceWidth: 667,\n },\n '7': {\n x_min: 47,\n x_max: 567,\n y_min: 5,\n y_max: 739,\n ha: 734,\n leftSideBearing: 0,\n advanceWidth: 615,\n },\n '8': {\n x_min: 40,\n x_max: 541,\n y_min: -15,\n y_max: 752,\n ha: 767,\n leftSideBearing: 40,\n advanceWidth: 585,\n },\n '9': {\n x_min: 40,\n x_max: 537,\n y_min: -52,\n y_max: 736,\n ha: 788,\n leftSideBearing: 40,\n advanceWidth: 592,\n },\n '!': {\n x_min: 49,\n x_max: 180,\n y_min: -7,\n y_max: 761,\n ha: 768,\n leftSideBearing: 49,\n advanceWidth: 230,\n },\n '\"': {\n x_min: 39,\n x_max: 304,\n y_min: 596,\n y_max: 804,\n ha: 208,\n leftSideBearing: 39,\n advanceWidth: 353,\n },\n '#': {\n x_min: 33,\n x_max: 599,\n y_min: -8,\n y_max: 765,\n ha: 773,\n leftSideBearing: 33,\n advanceWidth: 648,\n },\n $: {\n x_min: 53,\n x_max: 495,\n y_min: -111,\n y_max: 823,\n ha: 934,\n leftSideBearing: 53,\n advanceWidth: 560,\n },\n '%': {\n x_min: 35,\n x_max: 656,\n y_min: -128,\n y_max: 808,\n ha: 936,\n leftSideBearing: 35,\n advanceWidth: 711,\n },\n '&': {\n x_min: 53,\n x_max: 441,\n y_min: -3,\n y_max: 753,\n ha: 756,\n leftSideBearing: 53,\n advanceWidth: 500,\n },\n \"'\": {\n x_min: 43,\n x_max: 161,\n y_min: 590,\n y_max: 811,\n ha: 221,\n leftSideBearing: 43,\n advanceWidth: 217,\n },\n '(': {\n x_min: 41,\n x_max: 311,\n y_min: -36,\n y_max: 845,\n ha: 881,\n leftSideBearing: 41,\n advanceWidth: 308,\n },\n ')': {\n x_min: -8,\n x_max: 257,\n y_min: -21,\n y_max: 852,\n ha: 873,\n leftSideBearing: -8,\n advanceWidth: 280,\n },\n '*': {\n x_min: 59,\n x_max: 539,\n y_min: 175,\n y_max: 589,\n ha: 414,\n leftSideBearing: 59,\n advanceWidth: 601,\n },\n '+': {\n x_min: 33,\n x_max: 361,\n y_min: 180,\n y_max: 587,\n ha: 407,\n leftSideBearing: 33,\n advanceWidth: 400,\n },\n ',': {\n x_min: 15,\n x_max: 176,\n y_min: -129,\n y_max: 92,\n ha: 221,\n leftSideBearing: 15,\n advanceWidth: 205,\n },\n '-': {\n x_min: 40,\n x_max: 380,\n y_min: 317,\n y_max: 452,\n ha: 135,\n leftSideBearing: 40,\n advanceWidth: 422,\n },\n '.': {\n x_min: 48,\n x_max: 185,\n y_min: -56,\n y_max: 84,\n ha: 140,\n leftSideBearing: 48,\n advanceWidth: 227,\n },\n '/': {\n x_min: -58,\n x_max: 654,\n y_min: -122,\n y_max: 844,\n ha: 966,\n leftSideBearing: -58,\n advanceWidth: 626,\n },\n ':': {\n x_min: 65,\n x_max: 225,\n y_min: 97,\n y_max: 536,\n ha: 439,\n leftSideBearing: 65,\n advanceWidth: 302,\n },\n ';': {\n x_min: 13,\n x_max: 295,\n y_min: -139,\n y_max: 536,\n ha: 675,\n leftSideBearing: 13,\n advanceWidth: 334,\n },\n '<': {\n x_min: 28,\n x_max: 438,\n y_min: -1,\n y_max: 607,\n ha: 608,\n leftSideBearing: 28,\n advanceWidth: 475,\n },\n '=': {\n x_min: 40,\n x_max: 383,\n y_min: 199.9598640852289,\n y_max: 541,\n ha: 341.0401359147711,\n leftSideBearing: 40,\n advanceWidth: 422,\n },\n '>': {\n x_min: 35,\n x_max: 421,\n y_min: 28,\n y_max: 632,\n ha: 604,\n leftSideBearing: 35,\n advanceWidth: 466,\n },\n '?': {\n x_min: 45,\n x_max: 548,\n y_min: -17,\n y_max: 767,\n ha: 784,\n leftSideBearing: 45,\n advanceWidth: 592,\n },\n '@': {\n x_min: 51,\n x_max: 730,\n y_min: -78,\n y_max: 753,\n ha: 831,\n leftSideBearing: 51,\n advanceWidth: 781,\n },\n A: {\n x_min: 37,\n x_max: 554,\n y_min: -4,\n y_max: 746,\n ha: 750,\n leftSideBearing: 37,\n advanceWidth: 617,\n },\n B: {\n x_min: 37,\n x_max: 532,\n y_min: 3,\n y_max: 783,\n ha: 780,\n leftSideBearing: 37,\n advanceWidth: 579,\n },\n C: {\n x_min: 37,\n x_max: 583,\n y_min: -3,\n y_max: 775,\n ha: 778,\n leftSideBearing: 37,\n advanceWidth: 623,\n },\n D: {\n x_min: 50,\n x_max: 530,\n y_min: -15,\n y_max: 749,\n ha: 764,\n leftSideBearing: 50,\n advanceWidth: 579,\n },\n E: {\n x_min: 45,\n x_max: 531,\n y_min: -1,\n y_max: 743,\n ha: 744,\n leftSideBearing: 45,\n advanceWidth: 585,\n },\n F: {\n x_min: 45,\n x_max: 459,\n y_min: 23,\n y_max: 727,\n ha: 704,\n leftSideBearing: 45,\n advanceWidth: 510,\n },\n G: {\n x_min: 31,\n x_max: 577,\n y_min: -8,\n y_max: 733,\n ha: 741,\n leftSideBearing: 31,\n advanceWidth: 611,\n },\n H: {\n x_min: 37,\n x_max: 493,\n y_min: -22,\n y_max: 758,\n ha: 780,\n leftSideBearing: 37,\n advanceWidth: 535,\n },\n I: {\n x_min: 47,\n x_max: 501,\n y_min: -3,\n y_max: 731,\n ha: 734,\n leftSideBearing: 47,\n advanceWidth: 541,\n },\n J: {\n x_min: 33,\n x_max: 531,\n y_min: -23,\n y_max: 725,\n ha: 748,\n leftSideBearing: 33,\n advanceWidth: 573,\n },\n K: {\n x_min: 43,\n x_max: 505,\n y_min: -10,\n y_max: 740,\n ha: 750,\n leftSideBearing: 43,\n advanceWidth: 560,\n },\n L: {\n x_min: 49,\n x_max: 457,\n y_min: -2,\n y_max: 746,\n ha: 748,\n leftSideBearing: 49,\n advanceWidth: 510,\n },\n M: {\n x_min: 35,\n x_max: 699,\n y_min: 1,\n y_max: 744,\n ha: 743,\n leftSideBearing: 35,\n advanceWidth: 743,\n },\n N: {\n x_min: 34,\n x_max: 533,\n y_min: -17,\n y_max: 761,\n ha: 778,\n leftSideBearing: 34,\n advanceWidth: 579,\n },\n O: {\n x_min: 41,\n x_max: 608,\n y_min: -5,\n y_max: 735,\n ha: 740,\n leftSideBearing: 41,\n advanceWidth: 667,\n },\n P: {\n x_min: 53,\n x_max: 451,\n y_min: -18,\n y_max: 735,\n ha: 753,\n leftSideBearing: 53,\n advanceWidth: 497,\n },\n Q: {\n x_min: 40,\n x_max: 599,\n y_min: -67,\n y_max: 744,\n ha: 811,\n leftSideBearing: 40,\n advanceWidth: 648,\n },\n R: {\n x_min: 39,\n x_max: 487,\n y_min: 16,\n y_max: 735,\n ha: 719,\n leftSideBearing: 39,\n advanceWidth: 535,\n },\n S: {\n x_min: 35,\n x_max: 552,\n y_min: -47,\n y_max: 708,\n ha: 755,\n leftSideBearing: 35,\n advanceWidth: 604,\n },\n T: {\n x_min: 26,\n x_max: 656,\n y_min: -13,\n y_max: 718,\n ha: 731,\n leftSideBearing: 26,\n advanceWidth: 705,\n },\n U: {\n x_min: 41,\n x_max: 518,\n y_min: -20,\n y_max: 748,\n ha: 768,\n leftSideBearing: 41,\n advanceWidth: 567,\n },\n V: {\n x_min: 47,\n x_max: 509,\n y_min: -26,\n y_max: 744,\n ha: 770,\n leftSideBearing: 47,\n advanceWidth: 567,\n },\n W: {\n x_min: 44,\n x_max: 789,\n y_min: -35,\n y_max: 720,\n ha: 755,\n leftSideBearing: 44,\n advanceWidth: 833,\n },\n X: {\n x_min: 63,\n x_max: 635,\n y_min: -10,\n y_max: 745,\n ha: 755,\n leftSideBearing: 63,\n advanceWidth: 680,\n },\n Y: {\n x_min: 43,\n x_max: 503,\n y_min: -21,\n y_max: 734,\n ha: 755,\n leftSideBearing: 43,\n advanceWidth: 541,\n },\n Z: {\n x_min: 42,\n x_max: 584,\n y_min: -10,\n y_max: 739,\n ha: 749,\n leftSideBearing: 42,\n advanceWidth: 629,\n },\n '[': {\n x_min: 46,\n x_max: 346,\n y_min: -150,\n y_max: 884,\n ha: 1034,\n leftSideBearing: 46,\n advanceWidth: 291,\n },\n '\\\\': {\n x_min: 20,\n x_max: 616,\n y_min: -100,\n y_max: 797,\n ha: 897,\n leftSideBearing: 20,\n advanceWidth: 645,\n },\n ']': {\n x_min: -76,\n x_max: 226,\n y_min: -150,\n y_max: 881,\n ha: 1031,\n leftSideBearing: -76,\n advanceWidth: 297,\n },\n '^': {\n x_min: 43,\n x_max: 437,\n y_min: 517,\n y_max: 812,\n ha: 295,\n leftSideBearing: 43,\n advanceWidth: 478,\n },\n _: {\n x_min: 29,\n x_max: 563,\n y_min: -110,\n y_max: -1,\n ha: 109,\n leftSideBearing: 29,\n advanceWidth: 598,\n },\n '`': {\n x_min: 54,\n x_max: 321,\n y_min: 540,\n y_max: 747,\n ha: 207,\n leftSideBearing: 54,\n advanceWidth: 368,\n },\n a: {\n x_min: 20,\n x_max: 447,\n y_min: -17,\n y_max: 495,\n ha: 512,\n leftSideBearing: 20,\n advanceWidth: 494,\n },\n b: {\n x_min: 37,\n x_max: 466,\n y_min: -27,\n y_max: 770,\n ha: 797,\n leftSideBearing: 37,\n advanceWidth: 510,\n },\n c: {\n x_min: 35,\n x_max: 456,\n y_min: -9,\n y_max: 507,\n ha: 516,\n leftSideBearing: 35,\n advanceWidth: 460,\n },\n d: {\n x_min: 45,\n x_max: 520,\n y_min: -15,\n y_max: 764,\n ha: 779,\n leftSideBearing: 45,\n advanceWidth: 560,\n },\n e: {\n x_min: 33,\n x_max: 370,\n y_min: -5,\n y_max: 501,\n ha: 506,\n leftSideBearing: 33,\n advanceWidth: 397,\n },\n f: {\n x_min: 35,\n x_max: 411,\n y_min: -13,\n y_max: 695,\n ha: 708,\n leftSideBearing: 35,\n advanceWidth: 453,\n },\n g: {\n x_min: 33,\n x_max: 551,\n y_min: -257,\n y_max: 505,\n ha: 762,\n leftSideBearing: 33,\n advanceWidth: 611,\n },\n h: {\n x_min: 32,\n x_max: 458,\n y_min: -29,\n y_max: 743,\n ha: 772,\n leftSideBearing: 32,\n advanceWidth: 491,\n },\n i: {\n x_min: 45,\n x_max: 167,\n y_min: -13,\n y_max: 631,\n ha: 644,\n leftSideBearing: 45,\n advanceWidth: 220,\n },\n j: {\n x_min: -127,\n x_max: 261,\n y_min: -231,\n y_max: 601,\n ha: 832,\n leftSideBearing: -127,\n advanceWidth: 308,\n },\n k: {\n x_min: 39,\n x_max: 443,\n y_min: -3,\n y_max: 700,\n ha: 703,\n leftSideBearing: 39,\n advanceWidth: 497,\n },\n l: {\n x_min: 58,\n x_max: 168,\n y_min: -8,\n y_max: 686,\n ha: 694,\n leftSideBearing: 58,\n advanceWidth: 227,\n },\n m: {\n x_min: 39,\n x_max: 688,\n y_min: -14,\n y_max: 501,\n ha: 515,\n leftSideBearing: 39,\n advanceWidth: 718,\n },\n n: {\n x_min: 45,\n x_max: 491,\n y_min: -32,\n y_max: 512,\n ha: 544,\n leftSideBearing: 45,\n advanceWidth: 541,\n },\n o: {\n x_min: 41,\n x_max: 424,\n y_min: -12,\n y_max: 493,\n ha: 505,\n leftSideBearing: 41,\n advanceWidth: 447,\n },\n p: {\n x_min: 25,\n x_max: 529,\n y_min: -260,\n y_max: 500,\n ha: 760,\n leftSideBearing: 25,\n advanceWidth: 573,\n },\n q: {\n x_min: 53,\n x_max: 603,\n y_min: -235,\n y_max: 514,\n ha: 749,\n leftSideBearing: 53,\n advanceWidth: 623,\n },\n r: {\n x_min: 32,\n x_max: 407,\n y_min: -7,\n y_max: 492,\n ha: 499,\n leftSideBearing: 32,\n advanceWidth: 460,\n },\n s: {\n x_min: 49,\n x_max: 416,\n y_min: -12,\n y_max: 519,\n ha: 531,\n leftSideBearing: 49,\n advanceWidth: 460,\n },\n t: {\n x_min: 32,\n x_max: 442,\n y_min: -5,\n y_max: 684,\n ha: 689,\n leftSideBearing: 32,\n advanceWidth: 469,\n },\n u: {\n x_min: 41,\n x_max: 487,\n y_min: -5,\n y_max: 507,\n ha: 512,\n leftSideBearing: 41,\n advanceWidth: 510,\n },\n v: {\n x_min: 16,\n x_max: 441,\n y_min: -20,\n y_max: 542,\n ha: 562,\n leftSideBearing: 16,\n advanceWidth: 456,\n },\n w: {\n x_min: 39,\n x_max: 639,\n y_min: -22,\n y_max: 505,\n ha: 527,\n leftSideBearing: 39,\n advanceWidth: 661,\n },\n x: {\n x_min: 15,\n x_max: 505,\n y_min: -39,\n y_max: 539,\n ha: 578,\n leftSideBearing: 15,\n advanceWidth: 541,\n },\n y: {\n x_min: -98,\n x_max: 501,\n y_min: -242,\n y_max: 511,\n ha: 753,\n leftSideBearing: -98,\n advanceWidth: 548,\n },\n z: {\n x_min: 27,\n x_max: 479,\n y_min: -3,\n y_max: 494,\n ha: 497,\n leftSideBearing: 27,\n advanceWidth: 494,\n },\n '{': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '|': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '}': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '~': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n },\n fontFamily: 'PetalumaScript',\n resolution: 1000,\n generatedOn: '2020-06-14T18:33:25.407Z',\n};\n","export const RobotoSlabFont = {\n spacing: 50,\n glyphs: {\n ' ': {\n x_min: 0,\n x_max: 509,\n y_min: 0,\n y_max: 2000,\n ha: 2000,\n leftSideBearing: 0,\n advanceWidth: 509,\n },\n '0': {\n x_min: 121,\n x_max: 1048,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 121,\n advanceWidth: 1168,\n },\n '1': {\n x_min: 117,\n x_max: 767,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 117,\n advanceWidth: 844,\n },\n '2': {\n x_min: 75.8474576645637,\n x_max: 1040,\n y_min: 0,\n y_max: 1477,\n ha: 1477,\n leftSideBearing: 75,\n advanceWidth: 1131,\n },\n '3': {\n x_min: 74.85365853658536,\n x_max: 994,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 74,\n advanceWidth: 1106,\n },\n '4': {\n x_min: 63,\n x_max: 1114,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 63,\n advanceWidth: 1187,\n },\n '5': {\n x_min: 96.8448275474953,\n x_max: 982,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 96,\n advanceWidth: 1081,\n },\n '6': {\n x_min: 121,\n x_max: 1067,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 121,\n advanceWidth: 1144,\n },\n '7': {\n x_min: 76,\n x_max: 1060,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: -30,\n advanceWidth: 1128,\n },\n '8': {\n x_min: 92,\n x_max: 1039,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 92,\n advanceWidth: 1131,\n },\n '9': {\n x_min: 84,\n x_max: 1026,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 84,\n advanceWidth: 1154,\n },\n '!': {\n x_min: 143,\n x_max: 340,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 143,\n advanceWidth: 483,\n },\n '\"': {\n x_min: 166,\n x_max: 634,\n y_min: 1055,\n y_max: 1560,\n ha: 505,\n leftSideBearing: 166,\n advanceWidth: 770,\n },\n '#': {\n x_min: 63,\n x_max: 1179,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 63,\n advanceWidth: 1246,\n },\n $: {\n x_min: 81.92156915727656,\n x_max: 1012,\n y_min: -208,\n y_max: 1693,\n ha: 1901,\n leftSideBearing: 81,\n advanceWidth: 1110,\n },\n '%': {\n x_min: 77,\n x_max: 1384,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 77,\n advanceWidth: 1460,\n },\n '&': {\n x_min: 74,\n x_max: 1242,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 74,\n advanceWidth: 1289,\n },\n \"'\": {\n x_min: 166,\n x_max: 324,\n y_min: 1055,\n y_max: 1560,\n ha: 505,\n leftSideBearing: 166,\n advanceWidth: 460,\n },\n '(': {\n x_min: 114,\n x_max: 650,\n y_min: -463,\n y_max: 1636,\n ha: 2099,\n leftSideBearing: 114,\n advanceWidth: 662,\n },\n ')': {\n x_min: 11,\n x_max: 547,\n y_min: -463,\n y_max: 1636,\n ha: 2099,\n leftSideBearing: 11,\n advanceWidth: 654,\n },\n '*': {\n x_min: 66,\n x_max: 893,\n y_min: 607,\n y_max: 1456,\n ha: 849,\n leftSideBearing: 66,\n advanceWidth: 958,\n },\n '+': {\n x_min: 73,\n x_max: 1071,\n y_min: 146,\n y_max: 1206,\n ha: 1060,\n leftSideBearing: 73,\n advanceWidth: 1145,\n },\n ',': {\n x_min: 23,\n x_max: 315,\n y_min: -311,\n y_max: 221,\n ha: 532,\n leftSideBearing: 23,\n advanceWidth: 404,\n },\n '-': {\n x_min: 154,\n x_max: 643,\n y_min: 538,\n y_max: 692,\n ha: 154,\n leftSideBearing: 154,\n advanceWidth: 797,\n },\n '.': {\n x_min: 145,\n x_max: 342,\n y_min: 0,\n y_max: 202,\n ha: 202,\n leftSideBearing: 145,\n advanceWidth: 493,\n },\n '/': {\n x_min: 0,\n x_max: 774,\n y_min: -125,\n y_max: 1456,\n ha: 1581,\n leftSideBearing: 0,\n advanceWidth: 824,\n },\n ':': {\n x_min: 145,\n x_max: 342,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 145,\n advanceWidth: 419,\n },\n ';': {\n x_min: 53,\n x_max: 345,\n y_min: -311,\n y_max: 1082,\n ha: 1393,\n leftSideBearing: 53,\n advanceWidth: 424,\n },\n '<': {\n x_min: 76,\n x_max: 892,\n y_min: 107,\n y_max: 1013,\n ha: 906,\n leftSideBearing: 76,\n advanceWidth: 1017,\n },\n '=': {\n x_min: 147,\n x_max: 981,\n y_min: 407,\n y_max: 987,\n ha: 580,\n leftSideBearing: 147,\n advanceWidth: 1127,\n },\n '>': {\n x_min: 125,\n x_max: 980,\n y_min: 87,\n y_max: 993,\n ha: 906,\n leftSideBearing: 125,\n advanceWidth: 1060,\n },\n '?': {\n x_min: 65.92660602419838,\n x_max: 890,\n y_min: 0,\n y_max: 1477,\n ha: 1477,\n leftSideBearing: 65,\n advanceWidth: 953,\n },\n '@': {\n x_min: 84.3592218305664,\n x_max: 1705.2346925277395,\n y_min: -453,\n y_max: 1431,\n ha: 1884,\n leftSideBearing: 84,\n advanceWidth: 1821,\n },\n A: {\n x_min: 70,\n x_max: 1463,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 70,\n advanceWidth: 1533,\n },\n B: {\n x_min: 81,\n x_max: 1253,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1322,\n },\n C: {\n x_min: 80,\n x_max: 1174,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 80,\n advanceWidth: 1290,\n },\n D: {\n x_min: 81,\n x_max: 1291,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1356,\n },\n E: {\n x_min: 81,\n x_max: 1190,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1306,\n },\n F: {\n x_min: 81,\n x_max: 1176,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1256,\n },\n G: {\n x_min: 80,\n x_max: 1226,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 80,\n advanceWidth: 1346,\n },\n H: {\n x_min: 81,\n x_max: 1497,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1578,\n },\n I: {\n x_min: 81,\n x_max: 604,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 685,\n },\n J: {\n x_min: 60,\n x_max: 1100,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 60,\n advanceWidth: 1169,\n },\n K: {\n x_min: 81,\n x_max: 1427,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1501,\n },\n L: {\n x_min: 81,\n x_max: 1130,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1210,\n },\n M: {\n x_min: 94,\n x_max: 1888,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 94,\n advanceWidth: 1982,\n },\n N: {\n x_min: 83,\n x_max: 1509,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 83,\n advanceWidth: 1592,\n },\n O: {\n x_min: 70,\n x_max: 1281,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 70,\n advanceWidth: 1351,\n },\n P: {\n x_min: 81,\n x_max: 1242,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1297,\n },\n Q: {\n x_min: 70,\n x_max: 1348,\n y_min: -245,\n y_max: 1477,\n ha: 1722,\n leftSideBearing: 70,\n advanceWidth: 1376,\n },\n R: {\n x_min: 81,\n x_max: 1285,\n y_min: 0,\n y_max: 1455,\n ha: 1455,\n leftSideBearing: 81,\n advanceWidth: 1385,\n },\n S: {\n x_min: 115,\n x_max: 1116,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 115,\n advanceWidth: 1206,\n },\n T: {\n x_min: 96,\n x_max: 1306,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 96,\n advanceWidth: 1406,\n },\n U: {\n x_min: 70,\n x_max: 1452,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 70,\n advanceWidth: 1522,\n },\n V: {\n x_min: 65,\n x_max: 1443,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 65,\n advanceWidth: 1508,\n },\n W: {\n x_min: 72,\n x_max: 2057,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 72,\n advanceWidth: 2129,\n },\n X: {\n x_min: 80,\n x_max: 1449,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 80,\n advanceWidth: 1529,\n },\n Y: {\n x_min: 65,\n x_max: 1396,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 65,\n advanceWidth: 1461,\n },\n Z: {\n x_min: 90,\n x_max: 1107,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 90,\n advanceWidth: 1197,\n },\n '[': {\n x_min: 157,\n x_max: 541,\n y_min: -312,\n y_max: 1664,\n ha: 1976,\n leftSideBearing: 157,\n advanceWidth: 573,\n },\n '\\\\': {\n x_min: 36,\n x_max: 830,\n y_min: -125,\n y_max: 1456,\n ha: 1581,\n leftSideBearing: 36,\n advanceWidth: 841,\n },\n ']': {\n x_min: 23,\n x_max: 408,\n y_min: -312,\n y_max: 1664,\n ha: 1976,\n leftSideBearing: 23,\n advanceWidth: 552,\n },\n '^': {\n x_min: 71,\n x_max: 802,\n y_min: 729,\n y_max: 1456,\n ha: 727,\n leftSideBearing: 71,\n advanceWidth: 864,\n },\n _: {\n x_min: 119,\n x_max: 1041,\n y_min: -154,\n y_max: 0,\n ha: 154,\n leftSideBearing: 119,\n advanceWidth: 1168,\n },\n '`': {\n x_min: 40,\n x_max: 456,\n y_min: 1288,\n y_max: 1560,\n ha: 272,\n leftSideBearing: 40,\n advanceWidth: 496,\n },\n a: {\n x_min: 79,\n x_max: 1053,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 79,\n advanceWidth: 1132,\n },\n b: {\n x_min: -16,\n x_max: 1071,\n y_min: -21,\n y_max: 1560,\n ha: 1581,\n leftSideBearing: -16,\n advanceWidth: 1145,\n },\n c: {\n x_min: 78,\n x_max: 988,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 78,\n advanceWidth: 1067,\n },\n d: {\n x_min: 78,\n x_max: 1156,\n y_min: -21,\n y_max: 1560,\n ha: 1581,\n leftSideBearing: 78,\n advanceWidth: 1218,\n },\n e: {\n x_min: 74,\n x_max: 980,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 74,\n advanceWidth: 1059,\n },\n f: {\n x_min: 64,\n x_max: 731,\n y_min: 0,\n y_max: 1581,\n ha: 1581,\n leftSideBearing: 64,\n advanceWidth: 725,\n },\n g: {\n x_min: 78,\n x_max: 1133,\n y_min: -437,\n y_max: 1102,\n ha: 1539,\n leftSideBearing: 78,\n advanceWidth: 1157,\n },\n h: {\n x_min: 49,\n x_max: 1255,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 49,\n advanceWidth: 1315,\n },\n i: {\n x_min: 67,\n x_max: 590,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 67,\n advanceWidth: 652,\n },\n j: {\n x_min: -56,\n x_max: 381,\n y_min: -437,\n y_max: 1560,\n ha: 1997,\n leftSideBearing: -56,\n advanceWidth: 525,\n },\n k: {\n x_min: 64,\n x_max: 1248,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 64,\n advanceWidth: 1287,\n },\n l: {\n x_min: 64,\n x_max: 587,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 64,\n advanceWidth: 653,\n },\n m: {\n x_min: 74,\n x_max: 1905,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 74,\n advanceWidth: 1977,\n },\n n: {\n x_min: 74,\n x_max: 1278,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 74,\n advanceWidth: 1343,\n },\n o: {\n x_min: 78,\n x_max: 1046,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 78,\n advanceWidth: 1124,\n },\n p: {\n x_min: 34,\n x_max: 1119,\n y_min: -416,\n y_max: 1102,\n ha: 1518,\n leftSideBearing: 34,\n advanceWidth: 1197,\n },\n q: {\n x_min: 78,\n x_max: 1135,\n y_min: -416,\n y_max: 1102,\n ha: 1518,\n leftSideBearing: 78,\n advanceWidth: 1139,\n },\n r: {\n x_min: 72,\n x_max: 808,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 72,\n advanceWidth: 854,\n },\n s: {\n x_min: 104,\n x_max: 933,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 104,\n advanceWidth: 1022,\n },\n t: {\n x_min: 24,\n x_max: 678,\n y_min: -17,\n y_max: 1343,\n ha: 1360,\n leftSideBearing: 24,\n advanceWidth: 730,\n },\n u: {\n x_min: 52,\n x_max: 1181,\n y_min: -21,\n y_max: 1082,\n ha: 1103,\n leftSideBearing: 52,\n advanceWidth: 1245,\n },\n v: {\n x_min: 26,\n x_max: 1176,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 26,\n advanceWidth: 1206,\n },\n w: {\n x_min: 52,\n x_max: 1777,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 52,\n advanceWidth: 1823,\n },\n x: {\n x_min: 42,\n x_max: 1163,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 42,\n advanceWidth: 1203,\n },\n y: {\n x_min: 24,\n x_max: 1172,\n y_min: -437,\n y_max: 1082,\n ha: 1519,\n leftSideBearing: 24,\n advanceWidth: 1192,\n },\n z: {\n x_min: 88,\n x_max: 960,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 88,\n advanceWidth: 1032,\n },\n '{': {\n x_min: 63,\n x_max: 671,\n y_min: -364,\n y_max: 1597,\n ha: 1961,\n leftSideBearing: 63,\n advanceWidth: 701,\n },\n '|': {\n x_min: 150,\n x_max: 307,\n y_min: -270,\n y_max: 1456,\n ha: 1726,\n leftSideBearing: 150,\n advanceWidth: 451,\n },\n '}': {\n x_min: 27,\n x_max: 635,\n y_min: -364,\n y_max: 1597,\n ha: 1961,\n leftSideBearing: 27,\n advanceWidth: 701,\n },\n '~': {\n x_min: 121,\n x_max: 1257,\n y_min: 401,\n y_max: 803,\n ha: 402,\n leftSideBearing: 121,\n advanceWidth: 1386,\n },\n },\n fontFamily: 'Roboto Slab',\n resolution: 2048,\n generatedOn: '2020-06-15T19:12:58.120Z',\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Utility methods used by the rest of the VexFlow codebase.\nimport { Flow } from './flow';\nimport { log, RuntimeError } from './util';\nexport class Vex {\n // Users of `Vex.forEach(a, fn)` should use `Array.prototype.forEach()` instead.\n // static forEach(arr: T[], callbackFn: (value: T, index: number, array: T[]) => void) {\n // arr.forEach(callbackFn);\n // }\n /**\n * Take `arr` and return a new list consisting of the sorted, unique,\n * contents of arr. Does not modify `arr`.\n */\n // eslint-disable-next-line\n static sortAndUnique(arr, cmp, eq) {\n if (arr.length > 1) {\n const newArr = [];\n let last;\n arr.sort(cmp);\n for (let i = 0; i < arr.length; ++i) {\n if (i === 0 || !eq(arr[i], last)) {\n newArr.push(arr[i]);\n }\n last = arr[i];\n }\n return newArr;\n }\n else {\n return arr;\n }\n }\n /** Check if array `arr` contains `obj`. */\n // eslint-disable-next-line\n static contains(arr, obj) {\n let i = arr.length;\n while (i--) {\n if (arr[i] === obj) {\n return true;\n }\n }\n return false;\n }\n // Get the 2D Canvas context from DOM element `canvas_sel`.\n static getCanvasContext(canvasSelector) {\n if (!canvasSelector) {\n throw new RuntimeError('BadArgument', 'Invalid canvas selector: ' + canvasSelector);\n }\n const canvas = document.getElementById(canvasSelector);\n if (!(canvas && canvas.getContext)) {\n throw new RuntimeError('UnsupportedBrowserError', 'This browser does not support HTML5 Canvas');\n }\n return canvas.getContext('2d');\n }\n /** Benchmark. Run function `f` once and report time elapsed shifted by `s` milliseconds. */\n // eslint-disable-next-line\n static benchmark(s, f) {\n const start_time = new Date().getTime();\n f();\n const elapsed = new Date().getTime() - start_time;\n log(s, elapsed + 'ms');\n }\n // Get stack trace.\n static stackTrace() {\n const err = new Error();\n return err.stack;\n }\n}\nVex.Flow = Flow;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// If you are adding a new music engraving font, search for instances of ADD_MUSIC_FONT throughout the code base.\n// To compile your new font into vexflow.js, take a look at src/fonts/load_all.ts\n// You can export a font module which can be dynamically loaded by vexflow-core.js (see: Gruntfile.js).\n// ADD_MUSIC_FONT\n// To add a new music engraving font XXX, make a copy of this file and name it load_xxx.ts.\n// Then you will need to generate xxx_glyphs.ts and xxx_metrics.ts.\n// xxx_glyphs.ts is created by tools/fonts/fontgen_smufl.js\n// xxx_metrics.ts is created by hand. You could copy bravura_metrics.ts and modify/remove/add entries where necessary.\nimport { Font } from '../font';\nimport { BravuraFont } from './bravura_glyphs';\nimport { BravuraMetrics } from './bravura_metrics';\nexport function loadBravura() {\n Font.load('Bravura', BravuraFont, BravuraMetrics);\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { CustomFont } from './custom_glyphs';\nimport { CustomMetrics } from './custom_metrics';\nexport function loadCustom() {\n Font.load('Custom', CustomFont, CustomMetrics);\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// vexflow-bravura.ts is the entry point for vexflow-bravura.js.\n// This version bundles the Bravura music engraving font.\nimport { Flow } from '../src/flow';\nimport { loadBravura } from '../src/fonts/load_bravura';\nimport { loadCustom } from '../src/fonts/load_custom';\nimport { loadTextFonts } from '../src/fonts/textfonts';\nloadBravura();\nloadCustom();\nFlow.setMusicFont('Bravura', 'Custom');\nloadTextFonts();\n// Re-export all exports from index.ts.\nexport * from '../src/index';\n// Also collect all exports into a default export for CJS projects.\nexport * as default from '../src/index';\n// ADD_MUSIC_FONT\n// To make a vexflow-xxx.js build that ONLY loads your new music font, copy this file and name it vexflow-xxx.ts.\n// Replace these lines:\n// import { loadXXX } from '../src/fonts/load_xxx';\n// loadXXX();\n// Flow.setMusicFont('XXX', 'Custom');\n// Feel free to remove references to Custom if you are not using those glyphs.\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { TextFormatter } from '../textformatter';\nimport { PetalumaScriptFont } from './petalumascript_glyphs';\nimport { RobotoSlabFont } from './robotoslab_glyphs';\nexport function loadTextFonts() {\n // Roboto Slab\n {\n const fontData = RobotoSlabFont;\n const { fontFamily, resolution, glyphs } = fontData;\n Font.load(fontFamily, fontData);\n // Previously we used 'H', but it isn't actually the tallest or the widest.\n // Interestingly, the lowercase 'b' is the tallest glyph.\n const maxSizeGlyph = 'b';\n TextFormatter.registerInfo({\n family: fontFamily,\n resolution,\n glyphs,\n maxSizeGlyph,\n monospaced: false,\n bold: false,\n italic: false,\n superscriptOffset: 0.66,\n subscriptOffset: 0.66,\n serifs: true,\n description: 'Text font to pair with the Bravura / Gonville music fonts.',\n });\n }\n // PetalumaScript\n {\n const fontData = PetalumaScriptFont;\n const { fontFamily, resolution, glyphs } = fontData;\n Font.load(fontFamily, fontData);\n // M is wider, but H is taller. :-)\n // Lowercase b is also taller in this font.\n const maxSizeGlyph = 'b';\n TextFormatter.registerInfo({\n family: fontFamily,\n resolution,\n glyphs,\n maxSizeGlyph,\n monospaced: false,\n bold: false,\n italic: false,\n superscriptOffset: 0.66,\n subscriptOffset: 0.66,\n serifs: false,\n description: 'Text font to pair with the Petaluma music font.',\n });\n }\n}\n"],"names":["root","factory","exports","module","define","amd","window","globalThis","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","g","Function","e","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","isCategory","category","checkAncestors","constructorFcn","constructor","CATEGORY","getPrototypeOf","isAccidental","Category","Accidental","isAnnotation","Annotation","isBarline","Barline","isDot","Dot","isGraceNote","GraceNote","isGraceNoteGroup","GraceNoteGroup","isNote","Note","isRenderContext","RenderContext","isStaveNote","StaveNote","isStemmableNote","StemmableNote","isTabNote","TabNote","RuntimeError","Error","code","message","super","globalObject","self","defined","x","undefined","log","block","args","line","Array","slice","join","console","warn","err","stack","midLine","a","b","mid_line","n","parseInt","prefix","text","normalizeAngle","Math","PI","Fraction","numerator","denominator","set","static","Number","isNaN","t","GCD","length","LCM","shift","LCMM","simplify","u","d","gcd","add","param1","param2","otherNumerator","otherDenominator","getNumeratorAndDenominator","lcm","subtract","multiply","divide","equals","compare","__staticFractionA","copy","__staticFractionB","greaterThan","greaterThanEquals","lessThan","lessThanEquals","clone","other","quotient","floor","remainder","makeAbs","abs","toString","toSimplifiedString","__staticFractionTmp","toMixedString","s","q","f","parse","str","i","split","BoundingBox","y","w","h","that","getX","getY","getW","getH","setX","setY","setW","setH","move","mergeWith","boundingBox","new_x","new_y","new_w","max","new_h","BoundingBoxComputation","x1","NaN","y1","x2","y2","getX1","getY1","width","height","addPoint","addX","addY","addQuadraticCurve","p0x","p0y","p1x","p1y","p2x","p2y","p01x","denom","it","p01y","addBezierCurve","p3x","p3y","p0","p1","p2","p3","pow","c","b2ac","t1","sqrt","t2","FontWeight","FontStyle","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","apply","fontParser","Fonts","Font","fontName","name","fontSize","SIZE","_a","scaleToPxFrom","pt","parseFloat","unit","replace","toLowerCase","size","weight","style","fromCSSString","family","SANS_SERIF","NORMAL","cssFontShorthand","document","createElement","font","fontFamily","fontWeight","fontStyle","fontInfo","st","trim","wt","sz","scaleFactor","parsedWeight","ITALIC","woffURL","includeWoff2","fontFace","FontFace","load","fonts","host","WEB_FONT_HOST","files","WEB_FONT_FILES","fontPath","loadWebFont","data","metrics","setData","setMetrics","getName","getData","getMetrics","hasData","getResolution","resolution","getGlyphs","glyphs","lookupMetric","defaultValue","keyParts","currObj","SERIF","px","em","in","mm","cm","PetalumaScript","Index","id","type","class","Registry","index","defaultRegistry","registry","clear","setIndexValue","elem","updateIndex","oldValue","getElementById","getAttribute","register","setAttribute","onRegister","_b","getElementsByAttribute","attribute","index_attr","index_attr_val","keys","map","k","getElementsByType","getElementsByClass","className","onUpdate","info","includes","Element","children","attrs","newID","el","getCategory","classes","rendered","getDefaultRegistry","ID","addChildElement","child","push","setStyle","setGroupStyle","forEach","getStyle","applyStyle","context","save","shadowColor","setShadowColor","shadowBlur","setShadowBlur","fillStyle","setFillStyle","strokeStyle","setStrokeStyle","lineWidth","setLineWidth","restoreStyle","restore","drawWithStyle","checkContext","draw","hasClass","addClass","removeClass","isRendered","setRendered","getAttributes","getSVGElement","suffix","element","oldID","getBoundingBox","getContext","setContext","setFont","toCSSString","textFont","defaultTextFont","TEXT_FONT","fontIsObject","fontIsString","fontIsUndefined","sizeWeightStyleAreUndefined","assign","validate","getFont","resetFont","setFontSize","getFontSize","fontSizeInPoints","convertSizeToPointValue","fontSizeInPixels","convertSizeToPixelValue","RESOLUTION","durations","durationAliases","keySignatures","C","num","Am","F","acc","Dm","Bb","Gm","Eb","Cm","Ab","Fm","Db","Bbm","Gb","Ebm","Cb","Abm","G","Em","D","Bm","A","E","B","clefs","treble","line_shift","bass","tenor","alto","soprano","percussion","subbass","french","notesInfo","int_val","CN","accidental","CB","CBB","DN","DB","DBB","EN","EB","EBB","FN","FB","FBB","GN","GB","GBB","AN","AB","ABB","BN","BB","BBB","R","rest","X","octave","shift_right","accidentals","parenRightPaddingAdjustment","bb","db","bs","bss","bbs","ashs","afhf","accSagittal5v7KleismaUp","accSagittal5v7KleismaDown","accSagittal5CommaUp","accSagittal5CommaDown","accSagittal7CommaUp","accSagittal7CommaDown","accSagittal25SmallDiesisUp","accSagittal25SmallDiesisDown","accSagittal35MediumDiesisUp","accSagittal35MediumDiesisDown","accSagittal11MediumDiesisUp","accSagittal11MediumDiesisDown","accSagittal11LargeDiesisUp","accSagittal11LargeDiesisDown","accSagittal35LargeDiesisUp","accSagittal35LargeDiesisDown","accSagittalSharp25SDown","accSagittalFlat25SUp","accSagittalSharp7CDown","accSagittalFlat7CUp","accSagittalSharp5CDown","accSagittalFlat5CUp","accSagittalSharp5v7kDown","accSagittalFlat5v7kUp","accSagittalSharp","accSagittalFlat","accSagittalSharp5v7kUp","accSagittalFlat5v7kDown","accSagittalSharp5CUp","accSagittalFlat5CDown","accSagittalSharp7CUp","accSagittalFlat7CDown","accSagittalSharp25SUp","accSagittalFlat25SDown","accSagittalSharp35MUp","accSagittalFlat35MDown","accSagittalSharp11MUp","accSagittalFlat11MDown","accSagittalSharp11LUp","accSagittalFlat11LDown","accSagittalSharp35LUp","accSagittalFlat35LDown","accSagittalDoubleSharp25SDown","accSagittalDoubleFlat25SUp","accSagittalDoubleSharp7CDown","accSagittalDoubleFlat7CUp","accSagittalDoubleSharp5CDown","accSagittalDoubleFlat5CUp","accSagittalDoubleSharp5v7kDown","accSagittalDoubleFlat5v7kUp","accSagittalDoubleSharp","accSagittalDoubleFlat","accSagittal7v11KleismaUp","accSagittal7v11KleismaDown","accSagittal17CommaUp","accSagittal17CommaDown","accSagittal55CommaUp","accSagittal55CommaDown","accSagittal7v11CommaUp","accSagittal7v11CommaDown","accSagittal5v11SmallDiesisUp","accSagittal5v11SmallDiesisDown","accSagittalSharp5v11SDown","accSagittalFlat5v11SUp","accSagittalSharp7v11CDown","accSagittalFlat7v11CUp","accSagittalSharp55CDown","accSagittalFlat55CUp","accSagittalSharp17CDown","accSagittalFlat17CUp","accSagittalSharp7v11kDown","accSagittalFlat7v11kUp","accSagittalSharp7v11kUp","accSagittalFlat7v11kDown","accSagittalSharp17CUp","accSagittalFlat17CDown","accSagittalSharp55CUp","accSagittalFlat55CDown","accSagittalSharp7v11CUp","accSagittalFlat7v11CDown","accSagittalSharp5v11SUp","accSagittalFlat5v11SDown","accSagittalDoubleSharp5v11SDown","accSagittalDoubleFlat5v11SUp","accSagittalDoubleSharp7v11CDown","accSagittalDoubleFlat7v11CUp","accSagittalDoubleSharp55CDown","accSagittalDoubleFlat55CUp","accSagittalDoubleSharp17CDown","accSagittalDoubleFlat17CUp","accSagittalDoubleSharp7v11kDown","accSagittalDoubleFlat7v11kUp","accSagittal23CommaUp","accSagittal23CommaDown","accSagittal5v19CommaUp","accSagittal5v19CommaDown","accSagittal5v23SmallDiesisUp","accSagittal5v23SmallDiesisDown","accSagittalSharp5v23SDown","accSagittalFlat5v23SUp","accSagittalSharp5v19CDown","accSagittalFlat5v19CUp","accSagittalSharp23CDown","accSagittalFlat23CUp","accSagittalSharp23CUp","accSagittalFlat23CDown","accSagittalSharp5v19CUp","accSagittalFlat5v19CDown","accSagittalSharp5v23SUp","accSagittalFlat5v23SDown","accSagittalDoubleSharp5v23SDown","accSagittalDoubleFlat5v23SUp","accSagittalDoubleSharp5v19CDown","accSagittalDoubleFlat5v19CUp","accSagittalDoubleSharp23CDown","accSagittalDoubleFlat23CUp","accSagittal19SchismaUp","accSagittal19SchismaDown","accSagittal17KleismaUp","accSagittal17KleismaDown","accSagittal143CommaUp","accSagittal143CommaDown","accSagittal11v49CommaUp","accSagittal11v49CommaDown","accSagittal19CommaUp","accSagittal19CommaDown","accSagittal7v19CommaUp","accSagittal7v19CommaDown","accSagittal49SmallDiesisUp","accSagittal49SmallDiesisDown","accSagittal23SmallDiesisUp","accSagittal23SmallDiesisDown","accSagittal5v13MediumDiesisUp","accSagittal5v13MediumDiesisDown","accSagittal11v19MediumDiesisUp","accSagittal11v19MediumDiesisDown","accSagittal49MediumDiesisUp","accSagittal49MediumDiesisDown","accSagittal5v49MediumDiesisUp","accSagittal5v49MediumDiesisDown","accSagittal49LargeDiesisUp","accSagittal49LargeDiesisDown","accSagittal11v19LargeDiesisUp","accSagittal11v19LargeDiesisDown","accSagittal5v13LargeDiesisUp","accSagittal5v13LargeDiesisDown","accSagittalSharp23SDown","accSagittalFlat23SUp","accSagittalSharp49SDown","accSagittalFlat49SUp","accSagittalSharp7v19CDown","accSagittalFlat7v19CUp","accSagittalSharp19CDown","accSagittalFlat19CUp","accSagittalSharp11v49CDown","accSagittalFlat11v49CUp","accSagittalSharp143CDown","accSagittalFlat143CUp","accSagittalSharp17kDown","accSagittalFlat17kUp","accSagittalSharp19sDown","accSagittalFlat19sUp","accSagittalSharp19sUp","accSagittalFlat19sDown","accSagittalSharp17kUp","accSagittalFlat17kDown","accSagittalSharp143CUp","accSagittalFlat143CDown","accSagittalSharp11v49CUp","accSagittalFlat11v49CDown","accSagittalSharp19CUp","accSagittalFlat19CDown","accSagittalSharp7v19CUp","accSagittalFlat7v19CDown","accSagittalSharp49SUp","accSagittalFlat49SDown","accSagittalSharp23SUp","accSagittalFlat23SDown","accSagittalSharp5v13MUp","accSagittalFlat5v13MDown","accSagittalSharp11v19MUp","accSagittalFlat11v19MDown","accSagittalSharp49MUp","accSagittalFlat49MDown","accSagittalSharp5v49MUp","accSagittalFlat5v49MDown","accSagittalSharp49LUp","accSagittalFlat49LDown","accSagittalSharp11v19LUp","accSagittalFlat11v19LDown","accSagittalSharp5v13LUp","accSagittalFlat5v13LDown","accSagittalDoubleSharp23SDown","accSagittalDoubleFlat23SUp","accSagittalDoubleSharp49SDown","accSagittalDoubleFlat49SUp","accSagittalDoubleSharp7v19CDown","accSagittalDoubleFlat7v19CUp","accSagittalDoubleSharp19CDown","accSagittalDoubleFlat19CUp","accSagittalDoubleSharp11v49CDown","accSagittalDoubleFlat11v49CUp","accSagittalDoubleSharp143CDown","accSagittalDoubleFlat143CUp","accSagittalDoubleSharp17kDown","accSagittalDoubleFlat17kUp","accSagittalDoubleSharp19sDown","accSagittalDoubleFlat19sUp","accSagittalShaftUp","accSagittalShaftDown","accSagittalAcute","accSagittalGrave","accSagittal1MinaUp","accSagittal1MinaDown","accSagittal2MinasUp","accSagittal2MinasDown","accSagittal1TinaUp","accSagittal1TinaDown","accSagittal2TinasUp","accSagittal2TinasDown","accSagittal3TinasUp","accSagittal3TinasDown","accSagittal4TinasUp","accSagittal4TinasDown","accSagittal5TinasUp","accSagittal5TinasDown","accSagittal6TinasUp","accSagittal6TinasDown","accSagittal7TinasUp","accSagittal7TinasDown","accSagittal8TinasUp","accSagittal8TinasDown","accSagittal9TinasUp","accSagittal9TinasDown","accSagittalFractionalTinaUp","accSagittalFractionalTinaDown","accidentalNarrowReversedFlat","accidentalNarrowReversedFlatAndFlat","accidentalWilsonPlus","accidentalWilsonMinus","articulations","between_lines","av","aboveCode","belowCode","ao","ah","am","ornaments","mordent","mordent_inverted","turn","turn_inverted","tr","upprall","downprall","prallup","pralldown","upmordent","downmordent","lineprall","prallprall","scoop","doit","fall","doitLong","fallLong","bend","plungerClosed","plungerOpen","flip","jazzTurn","smear","Tables","MUSIC_FONT_STACK","clef","keyOctaveGlyph","params","options","octave_shift","duration","sanitizeDuration","pieces","toUpperCase","clefProperties","stroke","int_value","customNoteHeadProps","glyphName","codeNoteHead","displaced","integer","noteValue","fret","scale","glyph","shift_y","glyphMetrics","Glyph","TABLATURE_FONT_SCALE","textWidth","getWidth","artic","spec","keySpec","notes","acc_list","durationNumber","durationToFraction","ticks","durationCodes","glyphTypeProperties","code_head","common","NOTATION_FONT_SCALE","SOFTMAX_FACTOR","STEM_WIDTH","STEM_HEIGHT","STAVE_LINE_THICKNESS","RENDER_PRECISION_PLACES","SLASH_NOTEHEAD_WIDTH","STAVE_LINE_DISTANCE","TEXT_HEIGHT_OFFSET_HACK","accidentalMap","accidentalColumnsTable","second_on_bottom","spaced_out_tetrachord","spaced_out_pentachord","very_spaced_out_pentachord","spaced_out_hexachord","very_spaced_out_hexachord","unicode","sharp","String","fromCharCode","flat","natural","triangle","degrees","circle","validTypes","m","ci","cx","sf","sb","sq","tu","td","TIME4_4","num_beats","beat_value","stem","stem_offset","flag","stem_up_extension","stem_down_extension","tabnote_stem_up_extension","tabnote_stem_down_extension","dot_shiftY","line_above","line_below","position","leger_code_head","beam_count","stem_beam_extension","code_flag_upstem","code_flag_downstem","OutlineCode","ModifierPosition","GlyphCacheEntry","fontStack","point","loadMetrics","bbox","getOutlineBoundingBox","outline","x_shift","y_shift","lookupFontMetric","GlyphOutline","originX","originY","precision","round","nextX","nextY","parts","MOVE","LINE","QUADRATIC","BEZIER","topGlyphs","botGlyphs","originShift","setOptions","reset","lookupGlyph","x_min","x_max","ha","cached_outline","ctx","x_pos","y_pos","cache","lookup","customScale","renderOutline","go","beginPath","moveTo","lineTo","quadraticCurveTo","bezierCurveTo","fill","bboxComp","penX","penY","getCode","setPoint","setStave","stave","getXShift","setXShift","getYshift","setYShift","checkMetrics","metricsScale","setOriginX","xShift","setOriginY","yShift","setOrigin","render","xPos","yPos","checkStave","renderToStave","getYForGlyphs","Map","entries","CURRENT_CACHE_KEY","entry","Modifier","text_line","Position","LEFT","spacingFromNextModifier","PositionString","center","CENTER","above","ABOVE","below","BELOW","left","right","RIGHT","setWidth","getNote","note","checkAttachedNote","setNote","getIndex","checkIndex","setIndex","getModifierContext","modifierContext","checkModifierContext","setModifierContext","getPosition","setPosition","setTextLine","setSpacingFromNextModifier","getSpacingFromNextModifier","alignSubNotesWithNote","subNotes","tickContext","getTickContext","getStave","subNoteXOffset","modLeftPx","modRightPx","subNote","subTickContext","setXOffset","Music","NUM_TONES","canonical_notes","roots","root_values","root_indices","diatonic_intervals","diatonic_accidentals","unison","m2","M2","m3","M3","p4","dim5","p5","m6","M6","b7","M7","intervals","b2","min2","S","H","maj2","T","W","b3","min3","maj3","b5","aug4","b6","aug5","maj6","m7","min7","dom7","maj7","scales","major","minor","ionian","dorian","phyrgian","lydian","mixolydian","aeolian","locrian","scaleTypes","M","noteValues","root_index","cn","cb","cbb","dn","dbb","en","eb","ebb","fn","fb","fbb","gn","gb","gbb","an","ab","abb","bn","bbb","isValidNoteValue","isValidIntervalValue","interval","getNoteParts","noteString","match","exec","getKeyParts","keyString","getNoteValue","getIntervalValue","intervalString","getCanonicalNoteName","getCanonicalIntervalName","intervalValue","getRelativeNoteValue","direction","sum","getRelativeNoteName","rootValue","multiplier","reverse_interval","relativeNoteName","getScaleTones","tones","nextNote","getIntervalBetween","note1","note2","difference","createScaleMap","keySignature","keySigParts","scaleName","keySigString","noteLocation","scaleMap","rootName","noteName","L","DEBUG","render_options","font_scale","parenLeftPadding","parenRightPadding","accidentalCodes","cautionary","state","musicFont","currentMusicFont","noteheadAccidentalPadding","leftShift","left_shift","accidentalSpacing","additionalPadding","accList","prevNote","shiftL","props","getKeyProps","getLeftDisplacedHeadPx","lineSpace","getSpacingBetweenLines","getYForLine","accLine","sort","lineList","previousLine","accShift","flatLine","dblSharpLine","numAcc","column","totalColumns","noFurtherConflicts","groupStart","groupEnd","checkCollision","getGroupLine","getGroupLines","indexes","lineDifference","indexA","indexB","item","notColliding","indexPairs","every","line1","line2","groupLength","groupMember","endCase","patternLength","collisionDetected","columnWidths","columnXOffsets","totalShift","accCount","lastAccOnLine","clearance","clearanceRequired","collision","voices","tickPositions","tickNoteMap","voice","tickPosition","getTickables","shouldIgnoreTicks","notesAtPosition","getTicks","music","scaleMapKey","tickPos","tickables","modifiedPitches","processNote","isRest","staveNote","keyIndex","accidentalString","pitch","sameAccidental","previouslyModified","indexOf","getModifiers","modifier","splice","addModifier","getGraceNotes","fontScale","parenLeft","parenRight","parenWidth","setAsCautionary","start","getModifierStartXY","accX","accY","Stem","stem_up_y_offset","stem_down_y_offset","stem_up_y_base_offset","stem_down_y_base_offset","x_begin","x_end","y_top","y_bottom","stem_extension","stem_direction","hide","isStemlet","stemletHeight","renderHeightAdjustment","UP","DOWN","WIDTH","HEIGHT","setNoteHeadXBounds","setDirection","setExtension","ext","getExtension","setYBounds","getHeight","y_offset","getExtents","isStemUp","ys","stemHeight","innerMostNoteheadY","min","outerMostNoteheadY","topY","baseY","setVisibility","isVisible","setStemlet","adjustHeightForFlag","adjustHeightForBeam","stem_x","stem_y","y_base_offset","stemletYOffset","openGroup","pointerBBox","closeGroup","TextFormatter","textWidthCache","formatterInfo","serifs","monospaced","italic","bold","superscriptOffset","subscriptOffset","maxSizeGlyph","cacheKey","updateParams","registeredFonts","requestedFont","candidates","requestedFamilies","requestedFamily","startsWith","formatter","values","isBold","isItalic","perfectMatch","find","partialMatch","fontSizeInPt","overwrite","updateCacheKey","BOLD","getGlyphMetrics","character","maxHeight","getWidthForCharacterInEm","advanceWidth","getWidthForTextInEm","cachedWidths","getWidthForTextInPx","AnnotationHorizontalJustify","AnnotationVerticalJustify","horizontalJustification","verticalJustification","TOP","minAnnotationPadding","annotations","leftWidth","rightWidth","maxLeftGlyphWidth","maxRightGlyphWidth","annotation","textFormatter","create","verticalSpaceNeeded","glyphWidth","getGlyph","stemDirection","hasStem","getStemDirection","lines","draw_stem","getStem","getNoteType","getNumLines","VerticalJustify","noteLine","getLineNumber","leastString","top_text_line","BOTTOM","greatestString","curBottom","rightOverlap","right_shift","leftOverlap","setVerticalJustification","just","VerticalJustifyString","getJustification","setJustification","HorizontalJustifyString","text_width","measureText","text_height","getStemX","stem_ext","spacing","has_stem","checkStem","getYs","reduce","yt","getYForTopText","getYForBottomText","getTopLineTopY","extents","getStemExtents","fillText","HorizontalJustify","centerStem","CENTER_STEM","top","bottom","roundToNearestHalf","mathFn","isWithinLines","getRoundingFunction","ceil","isStaveOrGraceNote","Articulation","maxGlyphWidth","getIncrement","articulation","increment","curTop","maxWidth","articWidth","overlap","builder","articNameToCode","staccato","tenuto","accent","articString","getFactory","articulationCodes","textLine","canSitBetweenLines","staffSpace","isTab","shouldSitOutsideStaff","initialOffset","isOnStemTip","getInitialOffset","padding","stemTipY","stemBaseY","getTopY","INITIAL_OFFSET","getBottomY","offsetDirection","articLine","snappedLine","snapLineToStaff","setRawFont","drawDot","color","arc","closePath","Tickable","_preFormatted","_postFormatted","intrinsicTicks","tickMultiplier","modifiers","tupletStack","align_center","center_x_shift","ignore_ticks","formatterMetrics","freedom","iterations","space","used","mean","deviation","setIgnoreTicks","checkTickContext","getFormatterMetrics","getCenterXShift","isCenterAligned","setCenterXShift","centerXShift","setCenterAlignment","getVoice","setVoice","getTuplet","tuplet","getTupletStack","resetTuplet","noteCount","notesOccupied","getNoteCount","getNotesOccupied","applyTickMultiplier","pop","setTuplet","addToModifierContext","mc","addMember","setTickContext","tc","preFormat","preFormatted","postFormat","postFormatted","getIntrinsicTicks","setIntrinsicTicks","getTickMultiplier","setDuration","getAbsoluteX","noteStruct","parsedNoteStruct","parseNoteStruct","JSON","stringify","keyProps","noteType","customTypes","duration_override","getGlyphProps","customGlyphs","playNote","leftDisplacedHeadPx","rightDisplacedHeadPx","annotation_spacing","glyph_font_scale","stroke_px","xStart","xPre1","xAbs","xPost1","notePx","xPost2","xEnd","xFreedomRight","xWidth","yy","spaceDeviation","durationString","dots","durationProps","parseDuration","durationToTicks","currentTicks","getPlayNote","setPlayNote","addStroke","setYs","getRightDisplacedHeadPx","setLeftDisplacedHeadPx","setRightDisplacedHeadPx","isTopNote","getLineForRest","getGlyphWidth","getDuration","isDotted","getModifiersByType","getBeam","beam","checkBeam","hasBeam","setBeam","signature","filter","getRightParenthesisPx","getLeftParenthesisPx","getFirstDotPx","getMembers","getState","glyphPx","getNoteStartX","getTieRightX","tieStartX","getTieLeftX","tieEndX","getKeys","StaveModifierPosition","BarlineType","ChordSymbolHorizontalJustify","ChordSymbolVerticalJustify","SymbolTypes","SymbolModifiers","StaveModifier","placeGlyphOnLine","customShift","getPadding","setPadding","setLayoutMetrics","layoutMetrics","getLayoutMetrics","thickness","TYPE","widths","SINGLE","DOUBLE","END","REPEAT_BEGIN","REPEAT_END","REPEAT_BOTH","NONE","paddings","layoutMetricsMap","xMin","xMax","paddingLeft","paddingRight","BEGIN","setType","typeString","single","double","end","repeatBegin","repeatEnd","repeatBoth","none","getType","drawVerticalBar","drawVerticalEndBar","drawRepeatBar","double_bar","staveCtx","botY","getBottomLineBottomY","fillRect","begin","dot_x","dot_radius","dot_y","BarNote","barline","Bend","release","phrase","tap","line_width","line_style","bend_width","release_width","updateWidth","bends","last_width","stringPos","setTap","getText","getTextHeight","totalWidth","additional_width","draw_width","lowestY","bend_height","annotation_y","renderBend","cp_x","cp_y","renderRelease","renderArrowHead","yBase","renderText","render_x","last_bend","last_bend_draw_width","last_drawn_width","ChordSymbol","symbolBlocks","horizontal","vertical","useKerning","reportWidth","superSubRatio","global","NO_TEXT_FORMAT","val","noFormat","glyphCode","engravingFontResolution","spacingBetweenBlocks","metric","getMetricForGlyph","yOffset","leftSideBearing","kerningOffset","chordSymbol","lowerKerningText","upperKerningText","symbolModifier","SUPERSCRIPT","SUBSCRIPT","minPadding","symbols","nonSuperWidth","symbol","fontAdj","scaleSize","glyphAdj","symbolWidth","lineSpaces","vAlign","j","sup","isSuperscript","sub","isSubscript","superSubScale","adj","symbolType","GLYPH","superSubFontSize","getWidthForGlyph","getYShiftForGlyph","getXShiftForGlyph","TEXT","getYOffsetForText","over","prev","setEnableKerning","updateKerningAdjustments","updateOverBarAdjustments","getVertical","getReportWidth","getHorizontal","setReportWidth","barIndex","findIndex","xoff","yoff","symIndex","accum","getKerningAdjustment","currSymbol","prevSymbol","adjustment","preKernUpper","preKernLower","some","xx","kerningOffsetPixels","getSymbolBlock","_c","symbolBlock","glyphArgs","glyphPoints","addSymbolBlock","parameters","addText","addTextSuperscript","addTextSubscript","addGlyphSuperscript","addGlyph","addGlyphOrText","char","addLine","setVertical","vj","setHorizontal","hj","yMax","y_max","stem_base","isSuper","isSub","curY","smallerFontSize","diminished","dim","halfDiminished","augmented","majorSeventh","leftParen","rightParen","leftBracket","rightBracket","leftParenTall","rightParenTall","symbolTypes","symbolModifiers","radius","all","dot","setDotShiftY","dot_list","max_shift_map","note_id","dot_shift","x_width","last_line","last_note","prev_dotted_space","half_shiftY","forceFlagRight","FretHandFinger","finger","x_offset","nums","nums_list","prev_note","shiftLeft","shiftRight","pos","textHeight","shiftR","numShiftL","numShiftR","xWidthL","xWidthR","lastLine","lastNote","num_shift","numWidth","fingerings","fingeringString","number","Fingering","fingering","setFretHandFinger","getFretHandFinger","setOffsetX","setOffsetY","NoteHead","custom_glyph","stem_up_x_offset","stem_down_x_offset","note_type","glyph_code","custom_glyph_code","slashed","isDisplaced","getLine","setLine","displacementStemAdjustment","fontShift","displacedFontShift","half_spacing","min_y","getYForNote","head_x","categorySuffix","staveSpace","durationToNumber","breve_lines","drawSlashNoteHead","renderGlyph","setStem","buildStem","buildFlag","hasFlag","flagCode","getBaseCustomNoteHeadGlyph","getStemLength","getStemExtension","getBeamCount","getStemMinimumLength","setStemDirection","offsets","offsetYBaseStemUp","offsetYTopStemUp","offsetYBaseStemDown","offsetYTopStemDown","getCenterGlyphX","stem_extension_override","setStemLength","drawStem","stemOptions","shiftRestVertical","dir","delta","maxLine","minLine","setKeyLine","getKeyLine","sortedKeyProps","ledgerLineStyle","use_default_head_x","_noteHeads","LEDGER_LINE_OFFSET","calculateKeyProps","auto_stem","autoStem","STEM_UP","STEM_DOWN","minNoteheadPadding","notesList","minL","stemMax","stemMin","maxL","isrest","voice_shift","getVoiceShiftWidth","is_displaced","noteU","noteM","noteL","voiceXShift","lineSpacing","lineDiff","whiteNoteHeadCount","blackNoteHeadCount","centerRest","noteHeadStyles","noteHead","buildNoteHeads","noteHeadStyle","head","calcNoteDisplacements","noteProps","notehead","calculateOptimalStemDirection","keyProperties","minY","maxY","halfLineSpacing","frac","resultLine","thisLine","isChord","getNoteHeadBounds","setNoteDisplaced","getRightShift","restLine","isInnerNoteIndex","setStemStyle","getStemStyle","setLedgerLineStyle","getLedgerLineStyle","setFlagStyle","getFlagStyle","setKeyStyle","noteHeadPadding","shouldDrawFlag","nonDisplacedX","displacedX","highestDisplacedLine","lowestDisplacedLine","yTop","Infinity","yBottom","highestLine","lowestLine","highestNonDisplacedLine","lowestNonDisplacedLine","displaced_x","non_displaced_x","highest_line","lowest_line","highest_displaced_line","lowest_displaced_line","highest_non_displaced_line","lowest_non_displaced_line","getNoteHeadBeginX","getNoteHeadEndX","noteHeads","note_heads","drawLedgerLines","doubleWidth","min_x","drawLedgerLine","normal","ledgerWidth","getDefaultLedgerLineStyle","drawModifiers","noteheadParam","noteheadStyle","hasNoBeam","drawFlag","_d","_e","noteStemHeight","flagX","flagY","getStaveNoteScale","drawNoteHeads","super_stem_extension","mid_line_distance","lines_over_octave_from_mid_line","spacing_between_lines","xBegin","shouldRenderStem","stemX","StaveTie","setNotes","cp1","cp2","text_shift_x","first_x_shift","last_x_shift","tie_spacing","first_note","first_indices","last_indices","isPartial","renderTie","first_ys","last_ys","last_x_px","first_x_px","first_y_px","last_y_px","top_cp_y","bottom_cp_y","center_x","getNotes","getTieStartX","getTieEndX","TabTie","VoiceMode","Voice","time","voiceTime","resolutionMultiplier","mode","STRICT","ticksUsed","largestTickWidth","softmaxFactor","totalTicks","smallestTickCount","Mode","getTotalTicks","getTicksUsed","getLargestTickWidth","getSmallestTickCount","getMode","setMode","getResolutionMultiplier","getActualResolution","tickable","setStrict","strict","SOFT","isComplete","FULL","setSoftmaxFactor","factor","reCalculateExpTicksUsed","expTicksUsed","softmax","tickValue","v","exp","addTickable","addTickables","grace_notes","show_slur","slur","slur_y_shift","beams","gracenote_groups","group_list","gracenote_group","is_stavenote","formatWidth","group_shift","Formatter","joinVoices","format","getMinTotalWidth","beamNotes","Beam","beam_width","partial_beam_length","graceNote","TieClass","NoteSubGroup","groups","group","TickContext","tickID","currentTick","maxTicks","maxTickable","minTicks","minTickable","xBase","xOffset","tickablesByVoice","totalLeftPx","totalRightPx","tContexts","tContext","contexts","getTickID","getXBase","setXBase","getXOffset","getMaxTicks","getMinTicks","getMaxTickable","getMinTickable","getTickableForVoice","voiceIndex","getTickablesByVoice","getCenterAlignedTickables","getCurrentTick","setCurrentTick","tick","Ornament","delayed","accidentalLowerPadding","accidentalUpperPadding","ornament","ornamentCodes","adjustForStemDirection","reportedWidth","stemUpYOffset","ornamentAlignWithNoteHead","ornamentNoteTransition","ornamentRelease","ornamentAttack","ornamentArticulation","jazzOrnaments","setDelayed","setUpperAccidental","accid","accidentalUpper","setLowerAccidental","accidentalLower","stemDir","stemExtents","isPlacedOnNoteheadSide","glyphYBetweenLines","glyphX","glyphY","delayXShift","startX","nextContext","getNextContext","Parenthesis","parentheses","x_widthL","x_widthR","parenthesis","isHTMLCanvas","HTMLCanvasElement","toDataURL","isHTMLDiv","HTMLDivElement","appendChild","CanvasContext","context2D","canvas","CANVAS_BROWSER_SIZE_LIMIT","limit","clearRect","cls","setBackgroundFillStyle","blur","getTransform","setLineCap","capType","lineCap","setLineDash","dash","resize","devicePixelRatio","sanitizeCanvasDims","rect","cp1x","cp1y","cp2x","cp2y","cpx","cpy","startAngle","endAngle","counterclockwise","fontBoundingBoxAscent","fontBoundingBoxDescent","actualBoundingBoxAscent","actualBoundingBoxDescent","ATTRIBUTES_TO_IGNORE","path","SVG_NS","TWO_PI","SVGContext","backgroundFillStyle","fontCSSString","svg","parent","pen","defaultFontAttributes","attributes","shadow_attributes","state_stack","svgElementType","createElementNS","lineDash","applyAttributes","visibleWidth","visibleHeight","setViewBox","viewBox_or_minX","viewBoxString","attrNamesToIgnore","nodeName","attrName","setAttributeNS","lastChild","removeChild","rectangle","x0","cos","y0","sin","tmpStartTest","tmpEndTest","large","sweep","getShadowStyle","sa","measureTextCache","txt","textContent","savedState","fontAttributes","RendererBackends","RendererLineEndType","TextJustification","VoltaType","measureImpl","getBBox","Renderer","arg0","arg1","backend","maybeElement","Backends","CANVAS","SVG","elementId","background","renderer","lastContext","buildContext","fromX","fromY","toX","toY","dashPattern","dx","dy","angle","atan2","idx","dashLength","nx","ny","LineEndType","StringNumber","string_number","dashed","leg","drawCircle","stringNumber","shift_left","glyphLine","num_shiftR","num_width","setLineEndType","setStringNumber","setLastNote","setDashed","setDrawCircle","stemPadding","verticalPadding","leftPadding","rightPadding","len","pattern","drawDashedLine","Stroke","all_voices","strokes","strokeList","string","getPositions","strokeShift","addEndNote","note_end","line_space","arrow","arrow_shift_x","arrow_y","text_y","Type","BRUSH_DOWN","BRUSH_UP","ROLL_DOWN","RASQUEDO_DOWN","ROLL_UP","RASQUEDO_UP","ARPEGGIO_DIRECTIONLESS","strokeLine","Vibrato","harsh","vibrato_width","wave_height","wave_width","wave_girth","setVibratoWidth","vibratos","vibrato","setHarsh","vx","vy","renderVibrato","opts","num_waves","ModifierContext","members","formatted","member","getLeftShift","Clef","types","tab","attachment","numLines","shiftY","KeySignature","cancelKeySpec","alterKeySpec","setKeySig","glyphFontScale","xPositions","paddingForced","convertToGlyph","nextAcc","accGlyphData","extraWidth","xPosition","cancelKey","convertToCancelAccList","cancel_accList","different_types","naturals","cancelled","concat","addToStave","convertAccLines","customLines","offset","alterKey","convertToAlterAccList","firstAccidentalType","cancelAccList","getEndClef","getClef","Repetition","symbol_type","setShiftX","setShiftY","CODA_RIGHT","drawCodaFixed","CODA_LEFT","drawSymbolText","SEGNO_LEFT","drawSignoFixed","SEGNO_RIGHT","DC","DC_AL_CODA","DC_AL_FINE","DS","DS_AL_CODA","DS_AL_FINE","FINE","TO_CODA","draw_coda","text_x","symbol_x","modifierWidth","getVerticalBarWidth","StaveSection","section","drawRect","shift_x","setStaveSection","textMeasurements","StaveTempo","tempo","setTempo","bpm","stem_height","TextNote","superscript","subscript","smooth","justification","struct","GLYPHS","segno","mordent_upper","mordent_lower","p","z","coda","pedal_open","pedal_close","caesura_straight","caesura_curved","breath","Justification","StaveText","setStaveText","setText","getBottomLineY","Volta","volta","top_y","vert_height","BEGIN_END","TimeSignatureGlyph","timeSignature","topDigits","botDigits","topWidth","timeSigType","topGlyph","botWidth","botGlyph","topStartX","botStartX","start_x","topLine","bottomLine","TimeSignature","timeSpec","customPadding","validate_args","fontLineShift","parseTimeSpec","numbers","test","assertIsValidTimeSig","makeTimeSignatureGlyph","getInfo","setTimeSig","SORT_ORDER_BEG_MODIFIERS","SORT_ORDER_END_MODIFIERS","Stave","end_x","measure","endClef","vertical_bar_width","num_lines","fill_style","left_bar","right_bar","spacing_between_lines_px","space_above_staff_ln","space_below_staff_ln","top_text_position","bottom_text_position","line_config","bounds","defaultLedgerLineStyle","resetLines","addEndModifier","defaultPadding","setDefaultLedgerLineStyle","visible","setNoteStartX","getNoteEndX","setNumLines","mod","setMeasure","getMeasure","getModifierXShift","begBarline","setRepetitionType","setVoltaType","number_t","setSection","staveSection","headroom","getLineForY","setBegBarType","setEndBarType","setClef","clefSpec","addClef","setEndClef","setKeySignature","addKeySignature","setEndKeySignature","setTimeSignature","timeSignatures","addTimeSignature","setEndTimeSignature","addEndClef","addEndTimeSignature","addTrebleGlyph","noPosition","noCategory","sortByCategory","items","order","temp","endBarline","begModifiers","endModifiers","lastBarlineIdx","getConfigForLines","setConfigForLine","line_number","setConfigForLines","lines_configuration","staves","maxX","drawBoldDoubleLine","topX","StaveConnector","BOLD_DOUBLE_LEFT","BOLD_DOUBLE_RIGHT","variableWidth","top_stave","bottom_stave","texts","newType","content","SINGLE_RIGHT","THIN_DOUBLE","attachment_height","SINGLE_LEFT","BRACE","x3","y3","cpx1","cpy1","cpx2","cpy2","cpx3","cpy3","cpx4","cpy4","cpx5","cpy5","cpx6","cpy6","cpx7","cpy7","cpx8","cpy8","BRACKET","singleRight","singleLeft","brace","bracket","boldDoubleLeft","boldDoubleRight","thinDouble","sumArray","arr","getRestLineForNextNoteGroup","currRestLine","currNoteIndex","nextRestLine","noteIndex","formatterOptions","globalSoftmax","maxIterations","justifyWidth","totalCost","durationStats","minTotalWidth","hasMinTotalWidth","tickContexts","array","list","modifierContexts","contextGaps","total","gaps","lossHistory","paddingBetween","accumulator","stavePadding","gap","toFixed","auto_beam","align_rests","applyAndGetBeams","formatToStave","tabstave","tabnotes","autobeam","notevoice","tabvoice","alignAllNotes","alignTuplets","currTickable","prevTickable","alignRests","AlignRestsToNotes","preCalculateMinTotalWidth","unalignedPadding","unalignedCtxCount","wsum","dsum","createTickContexts","contextList","contextMap","wavg","wvar","ll","wpads","davg","dvar","dpads","padmax","unalignedPad","createModifierContexts","tickToContextMap","integerTicks","staveTickToContextMap","newContext","makeContext","addToContext","tickList","createContexts","contextArray","getTickContexts","renderingContext","voicesParam","evaluate","firstContext","calculateIdealDistances","adjustedJustifyWidth","backTickable","prevContext","backVoices","matchingVoices","maxNegativeShiftPx","expectedDistance","thisTickable","insideLeftEdge","backMetrics","insideRightEdge","fromTickable","fromTickablePx","shiftToIdealDistances","idealDistances","centerX","spaceAccum","contextX","ideal","errorPx","negativeShiftPx","configMinPadding","configMaxPadding","targetWidth","distances","actualWidth","minDistance","mdCalc","di","calcMinDistance","paddingMaxCalc","curTargetWidth","lastTickablePadding","lastTickable","tickWidth","paddingMax","paddingMin","prevTick","prevMetrics","currMetrics","leftNoteEdge","rightNote","rightMetrics","stats","count","updateStats","totalDeviation","tune","alpha","current","cost","optionsParam","TupletLocation","Tuplet","numerator_glyphs","denom_glyphs","num_notes","beats_occupied","beatsOccupiedDeprecationWarning","notes_occupied","bracketed","ratioed","setTupletLocation","location","LOCATION_TOP","resolveGlyphs","attach","LOCATION_BOTTOM","NESTING_OFFSET","detach","setBracketed","setRatioed","getBeatsOccupied","setBeatsOccupied","beats","setNotesOccupied","unshift","getNestedTupletCount","maxTupletCount","countTuplets","minTupletCount","tupletCount","getYPosition","nested_tuplet_y_offset","topModifierOffset","modLines","modY","noteHeadOffset","stemOffset","lineCheck","nn","bottom_y","addGlyphWidth","notation_start_x","colon_x","colon_radius","calculateStemDirection","lineSum","keyProp","BEAM_LEFT","BEAM_RIGHT","BEAM_BOTH","slope","forcedPartialDirections","stem_weight","memo","break_on_indices","max_slope","min_slope","slope_iterations","slope_cost","show_stemlets","stemlet_extension","flat_beams","min_flat_beam_offset","time_sig","beatTotal","beatValue","generateBeams","config","tickGroups","unprocessedNotes","currentTickGroup","noteGroups","currentGroup","nextTickGroup","nextGroup","currentGroupTotalTicks","unprocessedNote","ticksPerGroup","vf_notes","unbeamable","createGroups","sanitizedGroups","tempGroup","isFirstOrLast","breaksOnEachRest","beam_rests","breaksOnFirstOrLastRest","beam_middle_only","breakOnStemChange","maintain_stem_directions","prevDirection","isUnbeamableDuration","sanitizeGroups","findFirstNote","applyStemDirection","beamedNoteGroups","beamable","allTuplets","uniqueTuplets","noteTuplet","getTuplets","secondary_breaks","secondary_break_ticks","flat_beam_offset","beamCount","breakSecondaryAt","indices","setPartialBeamSideAt","side","unsetPartialBeamSideAt","getSlopeY","calculateSlope","firstNote","initialSlope","firstStemTipY","firstStemX","getStemSlope","minCost","MAX_VALUE","bestSlope","totalStemExtension","yShiftTemp","adjustedStemTipY","diff","idealSlope","calculateFlatSlope","extremeY","extremeBeamCount","currentExtreme","extremeTest","newOffset","getBeamYToDraw","beamY","applyStemExtensions","beamedStemTipY","preBeamExtension","beamExtension","totalBeamWidth","lookupBeamDirection","prev_tick","next_tick","forcedBeamDirection","lookup_duration","prev_note_gets_beam","next_note_gets_beam","note_gets_beam","getBeamLines","tick_of_duration","beam_started","beam_lines","current_beam","previous_should_break","tick_tally","should_break","next_note","beam_alone","beam_direction","last_beam","drawStems","drawBeamLines","valid_beam_durations","beamThickness","beamLines","beam_line","startBeamX","startBeamY","lastBeamX","lastBeamY","ClefNote","clef_obj","abs_x","Crescendo","extend_left","extend_right","decrescendo","setHeight","setDecrescendo","decresc","tick_context","next_context","begin_x","half_height","reverse","renderHairpin","CurvePosition","Curve","from","to","NEAR_HEAD","position_end","invert","cps","nearHead","nearTop","NEAR_TOP","renderCurve","first_x","first_y","last_x","last_y","cp0x","cp0y","cp_spacing","end_metric","Parser","flattenMatches","matchedString","results","grammar","errorPos","expect","matchFail","returnPos","matchSuccess","matchToken","token","noSpace","regexp","RegExp","success","incrementPos","expectOne","rule","maybe","allMatches","oneMatch","localPos","or","gotOne","numMatches","expectOneOrMore","more","expectZeroOrMore","ruleFunc","bind","oneOrMore","zeroOrMore","matches","run","EasyScore","EasyScoreGrammar","PIECE","PIECES","EOL","CHORDORNOTE","PARAMS","commitPiece","COMMA","DURATION","DOTS","OPTS","CHORD","SINGLENOTE","LPAREN","NOTES","RPAREN","addChord","NOTE","NOTENAME","ACCIDENTAL","OCTAVE","addSingleNote","MICROTONES","ACCIDENTALS","DOT","setNoteDots","SLASH","MAYBESLASH","TYPES","setNoteType","DURATIONS","setNoteDuration","LBRACKET","KEYVAL","KEYVALS","RBRACKET","KEY","EQUALS","VAL","addNoteOption","SVAL","DVAL","Piece","chord","Builder","commitHooks","elements","rollingDuration","resetPiece","getElements","addCommitHook","commitHook","piece","addNote","standardAccidentals","notePiece","GhostNote","buildAndAttach","setId","commaSeparatedRegex","setClass","defaults","easyScoreHook","throwOnError","parser","ERROR_MSG","parameter","GlyphNote","ignoreTicks","setGlyph","SCALE","slash","ret","staveNoteScale","offsetScale","slashBBox","calcBeamedNotesSlashBBox","noteHeadBounds","defaultStemExtention","defaultOffsetY","slashStemOffset","slashBeamOffset","protrusions","beam_slope","scaleX","beam_angle","atan","iPointOnBeam","slash_angle","protrusion_stem_dx","protrusion_stem_dy","protrusion_beam_dx","protrusion_beam_dy","stem0X","stemY","KeySigNote","semibreve_rest","MultiMeasureRest","number_of_measures","xs","hasPaddingLeft","hasPaddingRight","hasLineThickness","hasSymbolSpacing","padding_left","padding_right","line_thickness","symbol_spacing","use_symbols","show_number","number_line","number_glyph_point","serif_thickness","semibreve_rest_glyph_scale","getXs","drawLine","spacingBetweenLines","lineThicknessHalf","serifThickness","bot","leftIndented","rightIndented","lineTop","lineBottom","drawSymbols","n4","n2","n1","get_semibreve_rest","rest_scale","rest_width","yMiddle","timeSig","drawPedalGlyph","glyph_data","PedalMarking","custom_depress_text","custom_release_text","bracket_height","text_margin_right","bracket_line_width","pedal","MIXED","setCustomText","depress","drawBracketed","prev_x","prev_y","is_pedal_depressed","next_is_same","prev_is_same","drawText","pedal_depress","pedal_release","mixed","CODES","RepeatNote","drawArrowHead","StaveLine","line_dash","rounded_end","draw_start_arrow","draw_end_arrow","arrowhead_length","arrowhead_angle","text_position_vertical","TextVerticalPosition","text_justification","applyLineStyle","applyFontStyle","drawArrowLine","pt1","pt2","both_arrows","distance","ratio","end_y","start_y","line_angle","angle1","angle2","top_x","bottom_x","start_position","end_position","first_index","last_index","upwards_slope","notehead_width","vertical_position","System","spaceBetweenStaves","autoWidth","noJustification","debugFormatter","formatIterations","noPadding","details","formatOptions","addConnector","connector","addStave","staveOptions","spaceAbove","spaceBelow","debugNoteMetrics","options_details","allVoices","allStaves","debugNoteMetricsYs","part","lastY","formatBegModifiers","plotDebugging","plotMetrics","positions","ghost","draw_dots","draw_stem_through_stave","setGhost","tabToGlyph","getStemY","stemDownLine","stemStartLine","flag_x","flag_y","drawStemThrough","stemThrough","stemLines","unused_strings","up_stem","down_stem","line_spacing","total_lines","stem_lines","strings","containsLastString","containsFirstString","line_ys","isTopBound","isBottomBound","getPartialStemLines","strings_used","stem_through","getUnusedStringGroups","drawPositions","tab_x","render_stem","TabStave","addTabGlyph","TextBracket","TextBracketPosition","stop","show_bracket","underline_superscript","Positions","PositionsString","main_measure","main_width","main_height","super_y","super_measure","super_width","super_height","line_y","TextDynamics","sequence","glyph_font_size","total_width","letter","letter_x","current_letter","TimeSigNote","timeSigInfo","VibratoBracket","bracket_data","stop_x","Factory","renderQ","systems","initRenderer","getVoices","ghostNote","textNote","barNote","clefNote","timeSigNote","keySigNote","hJustify","vJustify","kerning","upperAccidental","lowerAccidental","numMeasures","multiMeasureRest","secondaryBeamBreaks","partialBeamDirections","curve","tie","vibratoBracket","textBracket","system","GraceTabNote","KeyManager","setKey","getKey","scaleMapByValue","originalScaleMapByValue","getAccidental","selectNote","scaleNote","modparts","change","valueNote","originalValueNote","StaveHairpin","hairpin","left_shift_px","right_shift_px","right_shift_ticks","left_shift_ticks","ppt","pixelsPerTick","l_shift_px","r_shift_px","hairpin_options","setRenderOptions","dis","staff_height","l_shift","r_shift","CRESC","DECRESC","TabSlide","first_fret","last_fret","SLIDE_UP","SLIDE_DOWN","slide_y","Tremolo","y_spacing_scale","extra_stroke_scale","y_spacing","Tuning","tuningString","tuningValues","setTuning","names","standard","dagdad","dropd","standardBanjo","noteToInteger","getValueForString","stringNum","getValueForFret","fretNum","stringValue","getNoteForFret","integerToNote","Flow","BUILD","VERSION","DATE","fontNames","fontModuleOrPath","hasKeySignature","getKeySignatures","BravuraFont","bracketTop","y_min","bracketBottom","barlineTick","breathMarkTick","gClef","cClef","fClef","unpitchedPercussionClef1","timeSig0","timeSig1","timeSig2","timeSig3","timeSig4","timeSig5","timeSig6","timeSig7","timeSig8","timeSig9","timeSigCommon","timeSigCutCommon","timeSigPlus","timeSigPlusSmall","timeSigMinus","timeSigParensRight","timeSigParensRightSmall","timeSigParensLeft","timeSigParensLeftSmall","noteheadDoubleWhole","noteheadWhole","noteheadHalf","noteheadBlack","noteheadXDoubleWhole","noteheadXWhole","noteheadXHalf","noteheadXBlack","noteheadCircleXDoubleWhole","noteheadCircleXWhole","noteheadCircleXHalf","noteheadCircleX","noteheadCircledDoubleWhole","noteheadCircledWhole","noteheadCircledHalf","noteheadCircledBlack","noteheadDoubleWholeSquare","noteheadSquareWhite","noteheadSquareBlack","noteheadTriangleDownDoubleWhole","noteheadTriangleDownWhole","noteheadTriangleDownHalf","noteheadTriangleDownBlack","noteheadTriangleUpDoubleWhole","noteheadTriangleUpWhole","noteheadTriangleUpHalf","noteheadTriangleUpBlack","noteheadSlashedDoubleWhole1","noteheadSlashedWhole1","noteheadSlashedHalf1","noteheadSlashedBlack1","noteheadSlashedDoubleWhole2","noteheadSlashedWhole2","noteheadSlashedHalf2","noteheadSlashedBlack2","noteheadDiamondDoubleWhole","noteheadDiamondWhole","noteheadDiamondHalf","noteheadDiamondBlack","noteheadParenthesis","noteheadParenthesisRight","noteheadParenthesisLeft","noteheadMoonBlack","noteheadTriangleLeftBlack","noteheadTriangleRightBlack","noteheadTriangleRoundDownBlack","augmentationDot","tremolo1","flag8thUp","flag8thDown","flag16thUp","flag16thDown","flag32ndUp","flag32ndDown","flag64thUp","flag64thDown","flag128thUp","flag128thDown","accidentalFlat","accidentalNatural","accidentalSharp","accidentalDoubleSharp","accidentalDoubleFlat","accidentalParensLeft","accidentalParensRight","accidentalQuarterToneFlatStein","accidentalThreeQuarterTonesFlatZimmermann","accidentalQuarterToneSharpStein","accidentalThreeQuarterTonesSharpStein","accidentalBuyukMucennebFlat","accidentalBakiyeFlat","accidentalKomaSharp","accidentalKucukMucennebSharp","accidentalKoron","accidentalSori","articAccentAbove","articAccentBelow","articTenutoAbove","articTenutoBelow","articStaccatoAbove","articStaccatoBelow","articStaccatissimoAbove","articStaccatissimoBelow","articMarcatoAbove","articMarcatoBelow","fermataAbove","fermataBelow","fermataLongAbove","fermataLongBelow","fermataVeryLongAbove","fermataVeryLongBelow","fermataShortAbove","fermataShortBelow","breathMarkComma","breathMarkUpbow","caesura","caesuraCurved","restMaxima","restDoubleWhole","restWhole","restWholeLegerLine","restHalf","restHalfLegerLine","restQuarter","rest8th","rest16th","rest32nd","rest64th","rest128th","dynamicPiano","dynamicMezzo","dynamicForte","dynamicRinforzando","dynamicSforzando","dynamicZ","ornamentTrill","ornamentTurn","ornamentTurnSlash","ornamentMordent","ornamentShortTrill","ornamentTremblement","ornamentPrecompAppoggTrill","ornamentPrecompSlideTrillDAnglebert","ornamentPrecompSlideTrillBach","ornamentPrecompTrillSuffixDandrieu","ornamentPrecompDoubleCadenceUpperPrefix","ornamentPrecompDoubleCadenceUpperPrefixTurn","ornamentPrecompTrillLowerSuffix","brassScoop","brassDoitMedium","brassFallLipShort","brassLiftMedium","brassFallRoughMedium","brassBend","brassMuteClosed","brassMuteOpen","brassFlip","brassJazzTurn","brassSmear","stringsDownBow","stringsUpBow","stringsHarmonic","pluckedSnapPizzicatoAbove","pluckedSnapPizzicatoBelow","pluckedLeftHandPizzicato","keyboardPedalPed","keyboardPedalUp","pictChokeCymbal","wiggleArpeggiatoUp","arrowheadBlackUp","arrowheadBlackDown","arpeggiatoUp","arpeggiatoDown","repeat1Bar","repeat2Bars","repeat4Bars","repeatBarSlash","csymDiminished","csymHalfDiminished","csymAugmented","csymMajorSeventh","csymMinor","csymParensLeftTall","csymParensRightTall","csymBracketLeftTall","csymBracketRightTall","csymParensLeftVeryTall","csymParensRightVeryTall","csymDiagonalArrangementSlash","generatedOn","BravuraMetrics","smufl","endPaddingMax","endPaddingMin","unalignedNotePadding","default","small","smuflCode","shiftX","lineCount","gracenote","pedalMarking","up","down","digits","shiftLine","tupletPoint","tremolo","offsetYStemUp","offsetYStemDown","offsetXStemUp","offsetXStemDown","grace","staveRepetition","symbolText","offsetX","offsetY","heightAdjustmentForFlag","staveTempo","straight","wiggly","restQuarterStemUp","restQuarterStemDown","custom","noteheadCircleXStemUp","noteheadCircleXStemDown","noteheadDiamondHalfStemUp","noteheadDiamondBlackStemUp","noteheadDiamondWholeStemUp","noteheadXHalfStemUp","noteheadXHalfStemDown","noteheadXWholeStemUp","noteheadXWholeStemDown","noteheadXDoubleWholeStemUp","noteheadXDoubleWholeStemDown","noteheadSquareWhiteStemDown","noteheadSquareWhiteStemUp","noteheadSquareBlackStemUp","noteheadTriangleUpWholeStemUp","CustomFont","vexAccidentalMicrotonal2","vexAccidentalMicrotonal3","vexAccidentalMicrotonal4","vexNoteHeadRectBlack","vexNoteHeadRectWhite","CustomMetrics","PetalumaScriptFont","$","I","J","K","N","O","Q","U","V","Y","Z","_","l","RobotoSlabFont","Vex","cmp","eq","newArr","last","canvasSelector","start_time","Date","getTime","setMusicFont","fontData","registerInfo","description","loadTextFonts"],"sourceRoot":""} \ No newline at end of file diff --git a/build/cjs/vexflow-core.js b/build/cjs/vexflow-core.js new file mode 100644 index 0000000000..0d57464e27 --- /dev/null +++ b/build/cjs/vexflow-core.js @@ -0,0 +1,7 @@ +/*! + * VexFlow 4.1.0-alpha.0 2022-10-10T04:47:38.237Z 847bc9014672858aedc7f8460384f51f98d6bd84 + * Copyright (c) 2010 Mohit Muthanna Cheppudira + * https://www.vexflow.com https://github.com/0xfe/vexflow + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Vex=e():t.Vex=e()}("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:this,(function(){return(()=>{"use strict";var t={d:(e,i)=>{for(var s in i)t.o(i,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:i[s]})}};t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),t.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),t.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var e={};t.d(e,{default:()=>i});var i={};function s(t,e,i=!0){if("object"!=typeof t||null===t)return!1;let s=t.constructor;if(i){for(;null!==t;){if(s=t.constructor,"CATEGORY"in s&&s.CATEGORY===e)return!0;t=Object.getPrototypeOf(t)}return!1}return"CATEGORY"in s&&s.CATEGORY===e}t.r(i),t.d(i,{Accidental:()=>it,Annotation:()=>dt,AnnotationHorizontalJustify:()=>ht,AnnotationVerticalJustify:()=>ct,Articulation:()=>_t,BEAM_BOTH:()=>Be,BEAM_LEFT:()=>Fe,BEAM_RIGHT:()=>Re,BarNote:()=>At,Barline:()=>Dt,BarlineType:()=>wt,Beam:()=>Oe,Bend:()=>Pt,BoundingBox:()=>C,BoundingBoxComputation:()=>k,Builder:()=>ze,CanvasContext:()=>qt,Category:()=>m,ChordSymbol:()=>Ft,ChordSymbolHorizontalJustify:()=>vt,ChordSymbolVerticalJustify:()=>Et,Clef:()=>ge,ClefNote:()=>Le,Crescendo:()=>Ie,Curve:()=>Ge,CurvePosition:()=>We,Dot:()=>Rt,EasyScore:()=>qe,EasyScoreGrammar:()=>Xe,Element:()=>O,Factory:()=>bi,Flow:()=>Ai,Font:()=>F,FontStyle:()=>D,FontWeight:()=>N,Formatter:()=>De,Fraction:()=>v,FretHandFinger:()=>Bt,GhostNote:()=>Ze,Glyph:()=>Q,GlyphNote:()=>ti,GraceNote:()=>ei,GraceNoteGroup:()=>jt,GraceTabNote:()=>wi,KeyManager:()=>vi,KeySigNote:()=>ii,KeySignature:()=>ue,Modifier:()=>Z,ModifierContext:()=>le,ModifierPosition:()=>$,MultiMeasureRest:()=>ni,Music:()=>tt,Note:()=>Tt,NoteHead:()=>Ot,NoteSubGroup:()=>Xt,Ornament:()=>zt,OutlineCode:()=>K,Parenthesis:()=>Kt,Parser:()=>Ye,PedalMarking:()=>oi,Piece:()=>Ve,Registry:()=>B,RenderContext:()=>xt,Renderer:()=>oe,RendererBackends:()=>ie,RendererLineEndType:()=>se,RepeatNote:()=>hi,Repetition:()=>pe,RuntimeError:()=>f,SVGContext:()=>ee,Stave:()=>ve,StaveConnector:()=>Ce,StaveHairpin:()=>Ei,StaveLine:()=>di,StaveModifier:()=>Nt,StaveModifierPosition:()=>bt,StaveNote:()=>Wt,StaveSection:()=>me,StaveTempo:()=>fe,StaveText:()=>xe,StaveTie:()=>Gt,Stem:()=>st,StemmableNote:()=>Lt,StringNumber:()=>re,Stroke:()=>he,SymbolModifiers:()=>kt,SymbolTypes:()=>Ct,System:()=>li,TabNote:()=>gi,TabSlide:()=>Ci,TabStave:()=>ui,TabTie:()=>Ut,TextBracket:()=>fi,TextBracketPosition:()=>mi,TextDynamics:()=>xi,TextFormatter:()=>rt,TextJustification:()=>ne,TextNote:()=>_e,TickContext:()=>Vt,Tickable:()=>yt,TimeSigNote:()=>Si,TimeSignature:()=>Te,TimeSignatureGlyph:()=>ye,Tremolo:()=>ki,Tuning:()=>Ni,Tuplet:()=>Pe,TupletLocation:()=>Ae,Vex:()=>Fi,Vibrato:()=>ce,VibratoBracket:()=>yi,Voice:()=>Yt,VoiceMode:()=>Ht,Volta:()=>Se,VoltaType:()=>ae,defined:()=>x,drawDot:()=>St,globalObject:()=>_,isAccidental:()=>n,isAnnotation:()=>a,isBarline:()=>o,isCategory:()=>s,isDot:()=>r,isGraceNote:()=>h,isGraceNoteGroup:()=>c,isHTMLCanvas:()=>$t,isHTMLDiv:()=>Jt,isNote:()=>d,isRenderContext:()=>l,isStaveNote:()=>g,isStemmableNote:()=>u,isTabNote:()=>p,log:()=>S,midLine:()=>T,normalizeAngle:()=>w,prefix:()=>b,warn:()=>y});const n=t=>s(t,m.Accidental),a=t=>s(t,m.Annotation),o=t=>s(t,m.Barline),r=t=>s(t,m.Dot),h=t=>s(t,m.GraceNote),c=t=>s(t,m.GraceNoteGroup),d=t=>s(t,m.Note),l=t=>s(t,m.RenderContext),g=t=>s(t,m.StaveNote),u=t=>s(t,m.StemmableNote),p=t=>s(t,m.TabNote);var m;!function(t){t.Accidental="Accidental",t.Annotation="Annotation",t.Articulation="Articulation",t.Barline="Barline",t.BarNote="BarNote",t.Beam="Beam",t.Bend="Bend",t.ChordSymbol="ChordSymbol",t.Clef="Clef",t.ClefNote="ClefNote",t.Crescendo="Crescendo",t.Curve="Curve",t.Dot="Dot",t.Element="Element",t.Fraction="Fraction",t.FretHandFinger="FretHandFinger",t.GhostNote="GhostNote",t.Glyph="Glyph",t.GlyphNote="GlyphNote",t.GraceNote="GraceNote",t.GraceNoteGroup="GraceNoteGroup",t.GraceTabNote="GraceTabNote",t.KeySignature="KeySignature",t.KeySigNote="KeySigNote",t.Modifier="Modifier",t.MultiMeasureRest="MultiMeasureRest",t.Note="Note",t.NoteHead="NoteHead",t.NoteSubGroup="NoteSubGroup",t.Ornament="Ornament",t.Parenthesis="Parenthesis",t.PedalMarking="PedalMarking",t.RenderContext="RenderContext",t.RepeatNote="RepeatNote",t.Repetition="Repetition",t.Stave="Stave",t.StaveConnector="StaveConnector",t.StaveHairpin="StaveHairpin",t.StaveLine="StaveLine",t.StaveModifier="StaveModifier",t.StaveNote="StaveNote",t.StaveSection="StaveSection",t.StaveTempo="StaveTempo",t.StaveText="StaveText",t.StaveTie="StaveTie",t.Stem="Stem",t.StemmableNote="StemmableNote",t.StringNumber="StringNumber",t.Stroke="Stroke",t.System="System",t.TabNote="TabNote",t.TabSlide="TabSlide",t.TabStave="TabStave",t.TabTie="TabTie",t.TextBracket="TextBracket",t.TextDynamics="TextDynamics",t.TextNote="TextNote",t.Tickable="Tickable",t.TimeSignature="TimeSignature",t.TimeSigNote="TimeSigNote",t.Tremolo="Tremolo",t.Tuplet="Tuplet",t.Vibrato="Vibrato",t.VibratoBracket="VibratoBracket",t.Voice="Voice",t.Volta="Volta"}(m||(m={}));class f extends Error{constructor(t,e=""){super("[RuntimeError] "+t+": "+e),this.code=t}}function _(){return"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==t.g?t.g:Function("return this")()}function x(t,e="undefined",i=""){if(void 0===t)throw new f(e,i);return t}function S(t,...e){if(!e)return;const i=Array.prototype.slice.call(e).join(" ");_().console.log(t+": "+i)}function y(...t){const e=t.join(" "),i=new Error;_().console.log("Warning: ",e,i.stack)}function T(t,e){let i=e+(t-e)/2;var s,n;return i%2>0&&(i=((s=10*i)%(n=5)>=n/2?parseInt(""+s/n,10)*n+n:parseInt(""+s/n,10)*n)/10),i}function b(t){return`vf-${t}`}function w(t){return(t%=2*Math.PI)<0&&(t+=2*Math.PI),t}class v{constructor(t,e){this.numerator=1,this.denominator=1,this.set(t,e)}static get CATEGORY(){return m.Fraction}static GCD(t,e){if("number"!=typeof t||Number.isNaN(t)||"number"!=typeof e||Number.isNaN(e))throw new f("BadArgument",`Invalid numbers: ${t}, ${e}`);let i;for(;0!==e;)i=e,e=t%e,t=i;return t}static LCM(t,e){return t*e/v.GCD(t,e)}static LCMM(t){return 0===t.length?0:1===t.length?t[0]:2===t.length?v.LCM(t[0],t[1]):v.LCM(t.shift(),v.LCMM(t))}set(t=1,e=1){return this.numerator=t,this.denominator=e,this}value(){return this.numerator/this.denominator}simplify(){let t=this.numerator,e=this.denominator;const i=v.GCD(t,e);return t/=i,e/=i,e<0&&(e=-e,t=-t),this.set(t,e)}add(t=0,e=1){const[i,s]=E(t,e),n=v.LCM(this.denominator,s),a=n/this.denominator,o=n/s,r=this.numerator*a+i*o;return this.set(r,n)}subtract(t=0,e=1){const[i,s]=E(t,e),n=v.LCM(this.denominator,s),a=n/this.denominator,o=n/s,r=this.numerator*a-i*o;return this.set(r,n)}multiply(t=1,e=1){const[i,s]=E(t,e);return this.set(this.numerator*i,this.denominator*s)}divide(t=1,e=1){const[i,s]=E(t,e);return this.set(this.numerator*s,this.denominator*i)}equals(t){const e=v.__staticFractionA.copy(t).simplify(),i=v.__staticFractionB.copy(this).simplify();return e.numerator===i.numerator&&e.denominator===i.denominator}greaterThan(t){const e=v.__staticFractionB.copy(this);return e.subtract(t),e.numerator>0}greaterThanEquals(t){const e=v.__staticFractionB.copy(this);return e.subtract(t),e.numerator>=0}lessThan(t){return!this.greaterThanEquals(t)}lessThanEquals(t){return!this.greaterThan(t)}clone(){return new v(this.numerator,this.denominator)}copy(t){return"number"==typeof t?this.set(t,1):this.set(t.numerator,t.denominator)}quotient(){return Math.floor(this.numerator/this.denominator)}remainder(){return this.numerator%this.denominator}makeAbs(){return this.denominator=Math.abs(this.denominator),this.numerator=Math.abs(this.numerator),this}toString(){return`${this.numerator}/${this.denominator}`}toSimplifiedString(){return v.__staticFractionTmp.copy(this).simplify().toString()}toMixedString(){let t="";const e=this.quotient(),i=v.__staticFractionTmp.copy(this);return e<0&&i.makeAbs(),0!==e?(t+=e,0!==i.numerator&&(t+=` ${i.toSimplifiedString()}`)):t=0===i.numerator?"0":i.toSimplifiedString(),t}parse(t){const e=t.split("/"),i=parseInt(e[0],10),s=e[1]?parseInt(e[1],10):1;return this.set(i,s)}}function E(t,e=1){return"number"==typeof t?[t,e]:[t.numerator,t.denominator]}v.__staticFractionA=new v,v.__staticFractionB=new v,v.__staticFractionTmp=new v;class C{constructor(t,e,i,s){this.x=t,this.y=e,this.w=i,this.h=s}static copy(t){return new C(t.x,t.y,t.w,t.h)}getX(){return this.x}getY(){return this.y}getW(){return this.w}getH(){return this.h}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setW(t){return this.w=t,this}setH(t){return this.h=t,this}move(t,e){return this.x+=t,this.y+=e,this}clone(){return C.copy(this)}mergeWith(t){const e=t,i=this.xthis.x2)&&(this.x2=t),(isNaN(this.y1)||ethis.y2)&&(this.y2=e)}addX(t){this.addPoint(t,this.y1)}addY(t){this.addPoint(this.x1,t)}addQuadraticCurve(t,e,i,s,n,a){this.addPoint(t,e),this.addPoint(n,a);const o=i-t;let r=o-(n-i);if(0!=r){const e=o/r;if(e>0&&e<1){const s=1-e;this.addX(s*s*t+2*s*e*i+e*e*n)}}const h=s-e;if(r=h-(a-s),0!=r){const t=h/r;if(t>0&&t<1){const i=1-t;this.addY(i*i*e+2*i*t*s+t*t*a)}}}addBezierCurve(t,e,i,s,n,a,o,r){const h=[t,e],c=[i,s],d=[n,a],l=[o,r];let g;this.addPoint(h[0],h[1]),this.addPoint(l[0],l[1]);const u=(t,e)=>Math.pow(1-t,3)*h[e]+3*Math.pow(1-t,2)*t*c[e]+3*(1-t)*Math.pow(t,2)*d[e]+Math.pow(t,3)*l[e];for(g=0;g<=1;g++){const t=6*h[g]-12*c[g]+6*d[g],e=-3*h[g]+9*c[g]-9*d[g]+3*l[g],i=3*c[g]-3*h[g];if(0===e){if(0===t)continue;const e=-i/t;0=600;{const e=parseInt(t,10);return isNaN(e)?"bold"===t.toLowerCase():e>=600}}return!1}static isItalic(t){return!!t&&t.toLowerCase()===D.ITALIC}static loadWebFont(t,e,i=!0){return A(this,void 0,void 0,(function*(){const s=new FontFace(t,(i?`url(${e}2) format('woff2'), `:"")+`url(${e}) format('woff')`);return yield s.load(),document.fonts.add(s),s}))}static loadWebFonts(){return A(this,void 0,void 0,(function*(){const t=F.WEB_FONT_HOST,e=F.WEB_FONT_FILES;for(const i in e){const s=e[i];F.loadWebFont(i,t+s)}}))}static load(t,e,i){let s=M[t];return s||(s=new F(t),M[t]=s),e&&s.setData(e),i&&s.setMetrics(i),s}getName(){return this.name}getData(){return x(this.data,"FontError","Missing font data")}getMetrics(){return x(this.metrics,"FontError","Missing metrics")}setData(t){this.data=t}setMetrics(t){this.metrics=t}hasData(){return void 0!==this.data}getResolution(){return this.getData().resolution}getGlyphs(){return this.getData().glyphs}lookupMetric(t,e){const i=t.split(".");let s=this.getMetrics();for(let t=0;tt[e]))}}return[]}getElementsByType(t){return this.getElementsByAttribute("type",t)}getElementsByClass(t){return this.getElementsByAttribute("class",t)}onUpdate(t){return["id","type","class"].includes(t.name)&&this.updateIndex(t),this}}class O{constructor(){var t;this.children=[],this.attrs={id:O.newID(),el:void 0,type:this.getCategory(),classes:{}},this.rendered=!1,null===(t=B.getDefaultRegistry())||void 0===t||t.register(this)}static get CATEGORY(){return m.Element}static newID(){return"auto"+O.ID++}addChildElement(t){return this.children.push(t),this}getCategory(){return this.constructor.CATEGORY}setStyle(t){return this.style=t,this}setGroupStyle(t){return this.style=t,this.children.forEach((e=>e.setGroupStyle(t))),this}getStyle(){return this.style}applyStyle(t=this.context,e=this.getStyle()){return e&&t?(t.save(),e.shadowColor&&t.setShadowColor(e.shadowColor),e.shadowBlur&&t.setShadowBlur(e.shadowBlur),e.fillStyle&&t.setFillStyle(e.fillStyle),e.strokeStyle&&t.setStrokeStyle(e.strokeStyle),e.lineWidth&&t.setLineWidth(e.lineWidth),this):this}restoreStyle(t=this.context,e=this.getStyle()){return e&&t?(t.restore(),this):this}drawWithStyle(){this.checkContext(),this.applyStyle(),this.draw(),this.restoreStyle()}hasClass(t){return!0===this.attrs.classes[t]}addClass(t){var e;return this.attrs.classes[t]=!0,null===(e=this.registry)||void 0===e||e.onUpdate({id:this.attrs.id,name:"class",value:t,oldValue:void 0}),this}removeClass(t){var e;return delete this.attrs.classes[t],null===(e=this.registry)||void 0===e||e.onUpdate({id:this.attrs.id,name:"class",value:void 0,oldValue:t}),this}onRegister(t){return this.registry=t,this}isRendered(){return this.rendered}setRendered(t=!0){return this.rendered=t,this}getAttributes(){return this.attrs}getAttribute(t){return this.attrs[t]}getSVGElement(t=""){const e=b(this.attrs.id+t),i=document.getElementById(e);if(i)return i}setAttribute(t,e){var i;const s=this.attrs.id,n=this.attrs[t];return this.attrs[t]=e,null===(i=this.registry)||void 0===i||i.onUpdate({id:s,name:t,value:e,oldValue:n}),this}getBoundingBox(){return this.boundingBox}getContext(){return this.context}setContext(t){return this.context=t,this}checkContext(){return x(this.context,"NoContext","No rendering context attached to instance.")}set font(t){this.setFont(t)}get font(){return F.toCSSString(this.textFont)}setFont(t,e,i,s){const n=this.constructor.TEXT_FONT,a="object"==typeof t,o="string"==typeof t,r=void 0===t,h=void 0===e&&void 0===i&&void 0===s;return this.textFont=a?Object.assign(Object.assign({},n),t):o&&h?F.fromCSSString(t):r&&h?Object.assign({},n):F.validate(null!=t?t:n.family,null!=e?e:n.size,null!=i?i:n.weight,null!=s?s:n.style),this}getFont(){return this.textFont||this.resetFont(),F.toCSSString(this.textFont)}resetFont(){this.setFont()}get fontInfo(){return this.textFont||this.resetFont(),Object.assign({},this.textFont)}set fontInfo(t){this.setFont(t)}setFontSize(t){const e=this.fontInfo;return this.setFont(e.family,t,e.weight,e.style),this}getFontSize(){return this.fontSize}set fontSize(t){this.setFontSize(t)}get fontSize(){let t=this.fontInfo.size;return"number"==typeof t&&(t=`${t}pt`),t}get fontSizeInPoints(){return F.convertSizeToPointValue(this.fontSize)}get fontSizeInPixels(){return F.convertSizeToPixelValue(this.fontSize)}get fontStyle(){return this.fontInfo.style}set fontStyle(t){const e=this.fontInfo;this.setFont(e.family,e.size,e.weight,t)}get fontWeight(){return this.fontInfo.weight+""}set fontWeight(t){const e=this.fontInfo;this.setFont(e.family,e.size,t,e.style)}}O.ID=1e3,O.TEXT_FONT={family:F.SANS_SERIF,size:F.SIZE,weight:N.NORMAL,style:D.NORMAL};const L=16384,I={"1/2":32768,1:16384,2:8192,4:4096,8:2048,16:1024,32:512,64:256,128:128,256:64},W={w:"1",h:"2",q:"4",b:"256"},G={C:{num:0},Am:{num:0},F:{acc:"b",num:1},Dm:{acc:"b",num:1},Bb:{acc:"b",num:2},Gm:{acc:"b",num:2},Eb:{acc:"b",num:3},Cm:{acc:"b",num:3},Ab:{acc:"b",num:4},Fm:{acc:"b",num:4},Db:{acc:"b",num:5},Bbm:{acc:"b",num:5},Gb:{acc:"b",num:6},Ebm:{acc:"b",num:6},Cb:{acc:"b",num:7},Abm:{acc:"b",num:7},G:{acc:"#",num:1},Em:{acc:"#",num:1},D:{acc:"#",num:2},Bm:{acc:"#",num:2},A:{acc:"#",num:3},"F#m":{acc:"#",num:3},E:{acc:"#",num:4},"C#m":{acc:"#",num:4},B:{acc:"#",num:5},"G#m":{acc:"#",num:5},"F#":{acc:"#",num:6},"D#m":{acc:"#",num:6},"C#":{acc:"#",num:7},"A#m":{acc:"#",num:7}},U={treble:{line_shift:0},bass:{line_shift:6},tenor:{line_shift:4},alto:{line_shift:3},soprano:{line_shift:1},percussion:{line_shift:0},"mezzo-soprano":{line_shift:2},"baritone-c":{line_shift:5},"baritone-f":{line_shift:5},subbass:{line_shift:7},french:{line_shift:-1}},H={C:{index:0,int_val:0},CN:{index:0,int_val:0,accidental:"n"},"C#":{index:0,int_val:1,accidental:"#"},"C##":{index:0,int_val:2,accidental:"##"},CB:{index:0,int_val:11,accidental:"b"},CBB:{index:0,int_val:10,accidental:"bb"},D:{index:1,int_val:2},DN:{index:1,int_val:2,accidental:"n"},"D#":{index:1,int_val:3,accidental:"#"},"D##":{index:1,int_val:4,accidental:"##"},DB:{index:1,int_val:1,accidental:"b"},DBB:{index:1,int_val:0,accidental:"bb"},E:{index:2,int_val:4},EN:{index:2,int_val:4,accidental:"n"},"E#":{index:2,int_val:5,accidental:"#"},"E##":{index:2,int_val:6,accidental:"##"},EB:{index:2,int_val:3,accidental:"b"},EBB:{index:2,int_val:2,accidental:"bb"},F:{index:3,int_val:5},FN:{index:3,int_val:5,accidental:"n"},"F#":{index:3,int_val:6,accidental:"#"},"F##":{index:3,int_val:7,accidental:"##"},FB:{index:3,int_val:4,accidental:"b"},FBB:{index:3,int_val:3,accidental:"bb"},G:{index:4,int_val:7},GN:{index:4,int_val:7,accidental:"n"},"G#":{index:4,int_val:8,accidental:"#"},"G##":{index:4,int_val:9,accidental:"##"},GB:{index:4,int_val:6,accidental:"b"},GBB:{index:4,int_val:5,accidental:"bb"},A:{index:5,int_val:9},AN:{index:5,int_val:9,accidental:"n"},"A#":{index:5,int_val:10,accidental:"#"},"A##":{index:5,int_val:11,accidental:"##"},AB:{index:5,int_val:8,accidental:"b"},ABB:{index:5,int_val:7,accidental:"bb"},B:{index:6,int_val:11},BN:{index:6,int_val:11,accidental:"n"},"B#":{index:6,int_val:12,accidental:"#"},"B##":{index:6,int_val:13,accidental:"##"},BB:{index:6,int_val:10,accidental:"b"},BBB:{index:6,int_val:9,accidental:"bb"},R:{index:6,rest:!0},X:{index:6,accidental:"",octave:4,code:"noteheadXBlack",shift_right:5.5}},Y={"#":{code:"accidentalSharp",parenRightPaddingAdjustment:-1},"##":{code:"accidentalDoubleSharp",parenRightPaddingAdjustment:-1},b:{code:"accidentalFlat",parenRightPaddingAdjustment:-2},bb:{code:"accidentalDoubleFlat",parenRightPaddingAdjustment:-2},n:{code:"accidentalNatural",parenRightPaddingAdjustment:-1},"{":{code:"accidentalParensLeft",parenRightPaddingAdjustment:-1},"}":{code:"accidentalParensRight",parenRightPaddingAdjustment:-1},db:{code:"accidentalThreeQuarterTonesFlatZimmermann",parenRightPaddingAdjustment:-1},d:{code:"accidentalQuarterToneFlatStein",parenRightPaddingAdjustment:0},"++":{code:"accidentalThreeQuarterTonesSharpStein",parenRightPaddingAdjustment:-1},"+":{code:"accidentalQuarterToneSharpStein",parenRightPaddingAdjustment:-1},"+-":{code:"accidentalKucukMucennebSharp",parenRightPaddingAdjustment:-1},bs:{code:"accidentalBakiyeFlat",parenRightPaddingAdjustment:-1},bss:{code:"accidentalBuyukMucennebFlat",parenRightPaddingAdjustment:-1},o:{code:"accidentalSori",parenRightPaddingAdjustment:-1},k:{code:"accidentalKoron",parenRightPaddingAdjustment:-1},bbs:{code:"vexAccidentalMicrotonal1",parenRightPaddingAdjustment:-1},"++-":{code:"vexAccidentalMicrotonal2",parenRightPaddingAdjustment:-1},ashs:{code:"vexAccidentalMicrotonal3",parenRightPaddingAdjustment:-1},afhf:{code:"vexAccidentalMicrotonal4",parenRightPaddingAdjustment:-1},accSagittal5v7KleismaUp:{code:"accSagittal5v7KleismaUp",parenRightPaddingAdjustment:-1},accSagittal5v7KleismaDown:{code:"accSagittal5v7KleismaDown",parenRightPaddingAdjustment:-1},accSagittal5CommaUp:{code:"accSagittal5CommaUp",parenRightPaddingAdjustment:-1},accSagittal5CommaDown:{code:"accSagittal5CommaDown",parenRightPaddingAdjustment:-1},accSagittal7CommaUp:{code:"accSagittal7CommaUp",parenRightPaddingAdjustment:-1},accSagittal7CommaDown:{code:"accSagittal7CommaDown",parenRightPaddingAdjustment:-1},accSagittal25SmallDiesisUp:{code:"accSagittal25SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal25SmallDiesisDown:{code:"accSagittal25SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittal35MediumDiesisUp:{code:"accSagittal35MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal35MediumDiesisDown:{code:"accSagittal35MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11MediumDiesisUp:{code:"accSagittal11MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11MediumDiesisDown:{code:"accSagittal11MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11LargeDiesisUp:{code:"accSagittal11LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11LargeDiesisDown:{code:"accSagittal11LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittal35LargeDiesisUp:{code:"accSagittal35LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal35LargeDiesisDown:{code:"accSagittal35LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp25SDown:{code:"accSagittalSharp25SDown",parenRightPaddingAdjustment:-1},accSagittalFlat25SUp:{code:"accSagittalFlat25SUp",parenRightPaddingAdjustment:-1},accSagittalSharp7CDown:{code:"accSagittalSharp7CDown",parenRightPaddingAdjustment:-1},accSagittalFlat7CUp:{code:"accSagittalFlat7CUp",parenRightPaddingAdjustment:-1},accSagittalSharp5CDown:{code:"accSagittalSharp5CDown",parenRightPaddingAdjustment:-1},accSagittalFlat5CUp:{code:"accSagittalFlat5CUp",parenRightPaddingAdjustment:-1},accSagittalSharp5v7kDown:{code:"accSagittalSharp5v7kDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v7kUp:{code:"accSagittalFlat5v7kUp",parenRightPaddingAdjustment:-1},accSagittalSharp:{code:"accSagittalSharp",parenRightPaddingAdjustment:-1},accSagittalFlat:{code:"accSagittalFlat",parenRightPaddingAdjustment:-1},accSagittalSharp5v7kUp:{code:"accSagittalSharp5v7kUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v7kDown:{code:"accSagittalFlat5v7kDown",parenRightPaddingAdjustment:-1},accSagittalSharp5CUp:{code:"accSagittalSharp5CUp",parenRightPaddingAdjustment:-1},accSagittalFlat5CDown:{code:"accSagittalFlat5CDown",parenRightPaddingAdjustment:-1},accSagittalSharp7CUp:{code:"accSagittalSharp7CUp",parenRightPaddingAdjustment:-1},accSagittalFlat7CDown:{code:"accSagittalFlat7CDown",parenRightPaddingAdjustment:-1},accSagittalSharp25SUp:{code:"accSagittalSharp25SUp",parenRightPaddingAdjustment:-1},accSagittalFlat25SDown:{code:"accSagittalFlat25SDown",parenRightPaddingAdjustment:-1},accSagittalSharp35MUp:{code:"accSagittalSharp35MUp",parenRightPaddingAdjustment:-1},accSagittalFlat35MDown:{code:"accSagittalFlat35MDown",parenRightPaddingAdjustment:-1},accSagittalSharp11MUp:{code:"accSagittalSharp11MUp",parenRightPaddingAdjustment:-1},accSagittalFlat11MDown:{code:"accSagittalFlat11MDown",parenRightPaddingAdjustment:-1},accSagittalSharp11LUp:{code:"accSagittalSharp11LUp",parenRightPaddingAdjustment:-1},accSagittalFlat11LDown:{code:"accSagittalFlat11LDown",parenRightPaddingAdjustment:-1},accSagittalSharp35LUp:{code:"accSagittalSharp35LUp",parenRightPaddingAdjustment:-1},accSagittalFlat35LDown:{code:"accSagittalFlat35LDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp25SDown:{code:"accSagittalDoubleSharp25SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat25SUp:{code:"accSagittalDoubleFlat25SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7CDown:{code:"accSagittalDoubleSharp7CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7CUp:{code:"accSagittalDoubleFlat7CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5CDown:{code:"accSagittalDoubleSharp5CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5CUp:{code:"accSagittalDoubleFlat5CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v7kDown:{code:"accSagittalDoubleSharp5v7kDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v7kUp:{code:"accSagittalDoubleFlat5v7kUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp:{code:"accSagittalDoubleSharp",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat:{code:"accSagittalDoubleFlat",parenRightPaddingAdjustment:-1},accSagittal7v11KleismaUp:{code:"accSagittal7v11KleismaUp",parenRightPaddingAdjustment:-1},accSagittal7v11KleismaDown:{code:"accSagittal7v11KleismaDown",parenRightPaddingAdjustment:-1},accSagittal17CommaUp:{code:"accSagittal17CommaUp",parenRightPaddingAdjustment:-1},accSagittal17CommaDown:{code:"accSagittal17CommaDown",parenRightPaddingAdjustment:-1},accSagittal55CommaUp:{code:"accSagittal55CommaUp",parenRightPaddingAdjustment:-1},accSagittal55CommaDown:{code:"accSagittal55CommaDown",parenRightPaddingAdjustment:-1},accSagittal7v11CommaUp:{code:"accSagittal7v11CommaUp",parenRightPaddingAdjustment:-1},accSagittal7v11CommaDown:{code:"accSagittal7v11CommaDown",parenRightPaddingAdjustment:-1},accSagittal5v11SmallDiesisUp:{code:"accSagittal5v11SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v11SmallDiesisDown:{code:"accSagittal5v11SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v11SDown:{code:"accSagittalSharp5v11SDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v11SUp:{code:"accSagittalFlat5v11SUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v11CDown:{code:"accSagittalSharp7v11CDown",parenRightPaddingAdjustment:-1},accSagittalFlat7v11CUp:{code:"accSagittalFlat7v11CUp",parenRightPaddingAdjustment:-1},accSagittalSharp55CDown:{code:"accSagittalSharp55CDown",parenRightPaddingAdjustment:-1},accSagittalFlat55CUp:{code:"accSagittalFlat55CUp",parenRightPaddingAdjustment:-1},accSagittalSharp17CDown:{code:"accSagittalSharp17CDown",parenRightPaddingAdjustment:-1},accSagittalFlat17CUp:{code:"accSagittalFlat17CUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v11kDown:{code:"accSagittalSharp7v11kDown",parenRightPaddingAdjustment:-1},accSagittalFlat7v11kUp:{code:"accSagittalFlat7v11kUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v11kUp:{code:"accSagittalSharp7v11kUp",parenRightPaddingAdjustment:-1},accSagittalFlat7v11kDown:{code:"accSagittalFlat7v11kDown",parenRightPaddingAdjustment:-1},accSagittalSharp17CUp:{code:"accSagittalSharp17CUp",parenRightPaddingAdjustment:-1},accSagittalFlat17CDown:{code:"accSagittalFlat17CDown",parenRightPaddingAdjustment:-1},accSagittalSharp55CUp:{code:"accSagittalSharp55CUp",parenRightPaddingAdjustment:-1},accSagittalFlat55CDown:{code:"accSagittalFlat55CDown",parenRightPaddingAdjustment:-1},accSagittalSharp7v11CUp:{code:"accSagittalSharp7v11CUp",parenRightPaddingAdjustment:-1},accSagittalFlat7v11CDown:{code:"accSagittalFlat7v11CDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v11SUp:{code:"accSagittalSharp5v11SUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v11SDown:{code:"accSagittalFlat5v11SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v11SDown:{code:"accSagittalDoubleSharp5v11SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v11SUp:{code:"accSagittalDoubleFlat5v11SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7v11CDown:{code:"accSagittalDoubleSharp7v11CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7v11CUp:{code:"accSagittalDoubleFlat7v11CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp55CDown:{code:"accSagittalDoubleSharp55CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat55CUp:{code:"accSagittalDoubleFlat55CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp17CDown:{code:"accSagittalDoubleSharp17CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat17CUp:{code:"accSagittalDoubleFlat17CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7v11kDown:{code:"accSagittalDoubleSharp7v11kDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7v11kUp:{code:"accSagittalDoubleFlat7v11kUp",parenRightPaddingAdjustment:-1},accSagittal23CommaUp:{code:"accSagittal23CommaUp",parenRightPaddingAdjustment:-1},accSagittal23CommaDown:{code:"accSagittal23CommaDown",parenRightPaddingAdjustment:-1},accSagittal5v19CommaUp:{code:"accSagittal5v19CommaUp",parenRightPaddingAdjustment:-1},accSagittal5v19CommaDown:{code:"accSagittal5v19CommaDown",parenRightPaddingAdjustment:-1},accSagittal5v23SmallDiesisUp:{code:"accSagittal5v23SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v23SmallDiesisDown:{code:"accSagittal5v23SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v23SDown:{code:"accSagittalSharp5v23SDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v23SUp:{code:"accSagittalFlat5v23SUp",parenRightPaddingAdjustment:-1},accSagittalSharp5v19CDown:{code:"accSagittalSharp5v19CDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v19CUp:{code:"accSagittalFlat5v19CUp",parenRightPaddingAdjustment:-1},accSagittalSharp23CDown:{code:"accSagittalSharp23CDown",parenRightPaddingAdjustment:-1},accSagittalFlat23CUp:{code:"accSagittalFlat23CUp",parenRightPaddingAdjustment:-1},accSagittalSharp23CUp:{code:"accSagittalSharp23CUp",parenRightPaddingAdjustment:-1},accSagittalFlat23CDown:{code:"accSagittalFlat23CDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v19CUp:{code:"accSagittalSharp5v19CUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v19CDown:{code:"accSagittalFlat5v19CDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v23SUp:{code:"accSagittalSharp5v23SUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v23SDown:{code:"accSagittalFlat5v23SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v23SDown:{code:"accSagittalDoubleSharp5v23SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v23SUp:{code:"accSagittalDoubleFlat5v23SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v19CDown:{code:"accSagittalDoubleSharp5v19CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v19CUp:{code:"accSagittalDoubleFlat5v19CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp23CDown:{code:"accSagittalDoubleSharp23CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat23CUp:{code:"accSagittalDoubleFlat23CUp",parenRightPaddingAdjustment:-1},accSagittal19SchismaUp:{code:"accSagittal19SchismaUp",parenRightPaddingAdjustment:-1},accSagittal19SchismaDown:{code:"accSagittal19SchismaDown",parenRightPaddingAdjustment:-1},accSagittal17KleismaUp:{code:"accSagittal17KleismaUp",parenRightPaddingAdjustment:-1},accSagittal17KleismaDown:{code:"accSagittal17KleismaDown",parenRightPaddingAdjustment:-1},accSagittal143CommaUp:{code:"accSagittal143CommaUp",parenRightPaddingAdjustment:-1},accSagittal143CommaDown:{code:"accSagittal143CommaDown",parenRightPaddingAdjustment:-1},accSagittal11v49CommaUp:{code:"accSagittal11v49CommaUp",parenRightPaddingAdjustment:-1},accSagittal11v49CommaDown:{code:"accSagittal11v49CommaDown",parenRightPaddingAdjustment:-1},accSagittal19CommaUp:{code:"accSagittal19CommaUp",parenRightPaddingAdjustment:-1},accSagittal19CommaDown:{code:"accSagittal19CommaDown",parenRightPaddingAdjustment:-1},accSagittal7v19CommaUp:{code:"accSagittal7v19CommaUp",parenRightPaddingAdjustment:-1},accSagittal7v19CommaDown:{code:"accSagittal7v19CommaDown",parenRightPaddingAdjustment:-1},accSagittal49SmallDiesisUp:{code:"accSagittal49SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal49SmallDiesisDown:{code:"accSagittal49SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittal23SmallDiesisUp:{code:"accSagittal23SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal23SmallDiesisDown:{code:"accSagittal23SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittal5v13MediumDiesisUp:{code:"accSagittal5v13MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v13MediumDiesisDown:{code:"accSagittal5v13MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11v19MediumDiesisUp:{code:"accSagittal11v19MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11v19MediumDiesisDown:{code:"accSagittal11v19MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal49MediumDiesisUp:{code:"accSagittal49MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal49MediumDiesisDown:{code:"accSagittal49MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal5v49MediumDiesisUp:{code:"accSagittal5v49MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v49MediumDiesisDown:{code:"accSagittal5v49MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal49LargeDiesisUp:{code:"accSagittal49LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal49LargeDiesisDown:{code:"accSagittal49LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11v19LargeDiesisUp:{code:"accSagittal11v19LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11v19LargeDiesisDown:{code:"accSagittal11v19LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittal5v13LargeDiesisUp:{code:"accSagittal5v13LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v13LargeDiesisDown:{code:"accSagittal5v13LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp23SDown:{code:"accSagittalSharp23SDown",parenRightPaddingAdjustment:-1},accSagittalFlat23SUp:{code:"accSagittalFlat23SUp",parenRightPaddingAdjustment:-1},accSagittalSharp49SDown:{code:"accSagittalSharp49SDown",parenRightPaddingAdjustment:-1},accSagittalFlat49SUp:{code:"accSagittalFlat49SUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v19CDown:{code:"accSagittalSharp7v19CDown",parenRightPaddingAdjustment:-1},accSagittalFlat7v19CUp:{code:"accSagittalFlat7v19CUp",parenRightPaddingAdjustment:-1},accSagittalSharp19CDown:{code:"accSagittalSharp19CDown",parenRightPaddingAdjustment:-1},accSagittalFlat19CUp:{code:"accSagittalFlat19CUp",parenRightPaddingAdjustment:-1},accSagittalSharp11v49CDown:{code:"accSagittalSharp11v49CDown",parenRightPaddingAdjustment:-1},accSagittalFlat11v49CUp:{code:"accSagittalFlat11v49CUp",parenRightPaddingAdjustment:-1},accSagittalSharp143CDown:{code:"accSagittalSharp143CDown",parenRightPaddingAdjustment:-1},accSagittalFlat143CUp:{code:"accSagittalFlat143CUp",parenRightPaddingAdjustment:-1},accSagittalSharp17kDown:{code:"accSagittalSharp17kDown",parenRightPaddingAdjustment:-1},accSagittalFlat17kUp:{code:"accSagittalFlat17kUp",parenRightPaddingAdjustment:-1},accSagittalSharp19sDown:{code:"accSagittalSharp19sDown",parenRightPaddingAdjustment:-1},accSagittalFlat19sUp:{code:"accSagittalFlat19sUp",parenRightPaddingAdjustment:-1},accSagittalSharp19sUp:{code:"accSagittalSharp19sUp",parenRightPaddingAdjustment:-1},accSagittalFlat19sDown:{code:"accSagittalFlat19sDown",parenRightPaddingAdjustment:-1},accSagittalSharp17kUp:{code:"accSagittalSharp17kUp",parenRightPaddingAdjustment:-1},accSagittalFlat17kDown:{code:"accSagittalFlat17kDown",parenRightPaddingAdjustment:-1},accSagittalSharp143CUp:{code:"accSagittalSharp143CUp",parenRightPaddingAdjustment:-1},accSagittalFlat143CDown:{code:"accSagittalFlat143CDown",parenRightPaddingAdjustment:-1},accSagittalSharp11v49CUp:{code:"accSagittalSharp11v49CUp",parenRightPaddingAdjustment:-1},accSagittalFlat11v49CDown:{code:"accSagittalFlat11v49CDown",parenRightPaddingAdjustment:-1},accSagittalSharp19CUp:{code:"accSagittalSharp19CUp",parenRightPaddingAdjustment:-1},accSagittalFlat19CDown:{code:"accSagittalFlat19CDown",parenRightPaddingAdjustment:-1},accSagittalSharp7v19CUp:{code:"accSagittalSharp7v19CUp",parenRightPaddingAdjustment:-1},accSagittalFlat7v19CDown:{code:"accSagittalFlat7v19CDown",parenRightPaddingAdjustment:-1},accSagittalSharp49SUp:{code:"accSagittalSharp49SUp",parenRightPaddingAdjustment:-1},accSagittalFlat49SDown:{code:"accSagittalFlat49SDown",parenRightPaddingAdjustment:-1},accSagittalSharp23SUp:{code:"accSagittalSharp23SUp",parenRightPaddingAdjustment:-1},accSagittalFlat23SDown:{code:"accSagittalFlat23SDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v13MUp:{code:"accSagittalSharp5v13MUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v13MDown:{code:"accSagittalFlat5v13MDown",parenRightPaddingAdjustment:-1},accSagittalSharp11v19MUp:{code:"accSagittalSharp11v19MUp",parenRightPaddingAdjustment:-1},accSagittalFlat11v19MDown:{code:"accSagittalFlat11v19MDown",parenRightPaddingAdjustment:-1},accSagittalSharp49MUp:{code:"accSagittalSharp49MUp",parenRightPaddingAdjustment:-1},accSagittalFlat49MDown:{code:"accSagittalFlat49MDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v49MUp:{code:"accSagittalSharp5v49MUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v49MDown:{code:"accSagittalFlat5v49MDown",parenRightPaddingAdjustment:-1},accSagittalSharp49LUp:{code:"accSagittalSharp49LUp",parenRightPaddingAdjustment:-1},accSagittalFlat49LDown:{code:"accSagittalFlat49LDown",parenRightPaddingAdjustment:-1},accSagittalSharp11v19LUp:{code:"accSagittalSharp11v19LUp",parenRightPaddingAdjustment:-1},accSagittalFlat11v19LDown:{code:"accSagittalFlat11v19LDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v13LUp:{code:"accSagittalSharp5v13LUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v13LDown:{code:"accSagittalFlat5v13LDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp23SDown:{code:"accSagittalDoubleSharp23SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat23SUp:{code:"accSagittalDoubleFlat23SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp49SDown:{code:"accSagittalDoubleSharp49SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat49SUp:{code:"accSagittalDoubleFlat49SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7v19CDown:{code:"accSagittalDoubleSharp7v19CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7v19CUp:{code:"accSagittalDoubleFlat7v19CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp19CDown:{code:"accSagittalDoubleSharp19CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat19CUp:{code:"accSagittalDoubleFlat19CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp11v49CDown:{code:"accSagittalDoubleSharp11v49CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat11v49CUp:{code:"accSagittalDoubleFlat11v49CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp143CDown:{code:"accSagittalDoubleSharp143CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat143CUp:{code:"accSagittalDoubleFlat143CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp17kDown:{code:"accSagittalDoubleSharp17kDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat17kUp:{code:"accSagittalDoubleFlat17kUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp19sDown:{code:"accSagittalDoubleSharp19sDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat19sUp:{code:"accSagittalDoubleFlat19sUp",parenRightPaddingAdjustment:-1},accSagittalShaftUp:{code:"accSagittalShaftUp",parenRightPaddingAdjustment:-1},accSagittalShaftDown:{code:"accSagittalShaftDown",parenRightPaddingAdjustment:-1},accSagittalAcute:{code:"accSagittalAcute",parenRightPaddingAdjustment:-1},accSagittalGrave:{code:"accSagittalGrave",parenRightPaddingAdjustment:-1},accSagittal1MinaUp:{code:"accSagittal1MinaUp",parenRightPaddingAdjustment:-1},accSagittal1MinaDown:{code:"accSagittal1MinaDown",parenRightPaddingAdjustment:-1},accSagittal2MinasUp:{code:"accSagittal2MinasUp",parenRightPaddingAdjustment:-1},accSagittal2MinasDown:{code:"accSagittal2MinasDown",parenRightPaddingAdjustment:-1},accSagittal1TinaUp:{code:"accSagittal1TinaUp",parenRightPaddingAdjustment:-1},accSagittal1TinaDown:{code:"accSagittal1TinaDown",parenRightPaddingAdjustment:-1},accSagittal2TinasUp:{code:"accSagittal2TinasUp",parenRightPaddingAdjustment:-1},accSagittal2TinasDown:{code:"accSagittal2TinasDown",parenRightPaddingAdjustment:-1},accSagittal3TinasUp:{code:"accSagittal3TinasUp",parenRightPaddingAdjustment:-1},accSagittal3TinasDown:{code:"accSagittal3TinasDown",parenRightPaddingAdjustment:-1},accSagittal4TinasUp:{code:"accSagittal4TinasUp",parenRightPaddingAdjustment:-1},accSagittal4TinasDown:{code:"accSagittal4TinasDown",parenRightPaddingAdjustment:-1},accSagittal5TinasUp:{code:"accSagittal5TinasUp",parenRightPaddingAdjustment:-1},accSagittal5TinasDown:{code:"accSagittal5TinasDown",parenRightPaddingAdjustment:-1},accSagittal6TinasUp:{code:"accSagittal6TinasUp",parenRightPaddingAdjustment:-1},accSagittal6TinasDown:{code:"accSagittal6TinasDown",parenRightPaddingAdjustment:-1},accSagittal7TinasUp:{code:"accSagittal7TinasUp",parenRightPaddingAdjustment:-1},accSagittal7TinasDown:{code:"accSagittal7TinasDown",parenRightPaddingAdjustment:-1},accSagittal8TinasUp:{code:"accSagittal8TinasUp",parenRightPaddingAdjustment:-1},accSagittal8TinasDown:{code:"accSagittal8TinasDown",parenRightPaddingAdjustment:-1},accSagittal9TinasUp:{code:"accSagittal9TinasUp",parenRightPaddingAdjustment:-1},accSagittal9TinasDown:{code:"accSagittal9TinasDown",parenRightPaddingAdjustment:-1},accSagittalFractionalTinaUp:{code:"accSagittalFractionalTinaUp",parenRightPaddingAdjustment:-1},accSagittalFractionalTinaDown:{code:"accSagittalFractionalTinaDown",parenRightPaddingAdjustment:-1},accidentalNarrowReversedFlat:{code:"accidentalNarrowReversedFlat",parenRightPaddingAdjustment:-1},accidentalNarrowReversedFlatAndFlat:{code:"accidentalNarrowReversedFlatAndFlat",parenRightPaddingAdjustment:-1},accidentalWilsonPlus:{code:"accidentalWilsonPlus",parenRightPaddingAdjustment:-1},accidentalWilsonMinus:{code:"accidentalWilsonMinus",parenRightPaddingAdjustment:-1}},j={"a.":{code:"augmentationDot",between_lines:!0},av:{aboveCode:"articStaccatissimoAbove",belowCode:"articStaccatissimoBelow",between_lines:!0},"a>":{aboveCode:"articAccentAbove",belowCode:"articAccentBelow",between_lines:!0},"a-":{aboveCode:"articTenutoAbove",belowCode:"articTenutoBelow",between_lines:!0},"a^":{aboveCode:"articMarcatoAbove",belowCode:"articMarcatoBelow",between_lines:!1},"a+":{code:"pluckedLeftHandPizzicato",between_lines:!1},ao:{aboveCode:"pluckedSnapPizzicatoAbove",belowCode:"pluckedSnapPizzicatoBelow",between_lines:!1},ah:{code:"stringsHarmonic",between_lines:!1},"a@":{aboveCode:"fermataAbove",belowCode:"fermataBelow",between_lines:!1},"a@a":{code:"fermataAbove",between_lines:!1},"a@u":{code:"fermataBelow",between_lines:!1},"a@s":{aboveCode:"fermataShortAbove",belowCode:"fermataShortBelow",between_lines:!1},"a@as":{code:"fermataShortAbove",between_lines:!1},"a@us":{code:"fermataShortBelow",between_lines:!1},"a@l":{aboveCode:"fermataLongAbove",belowCode:"fermataLongBelow",between_lines:!1},"a@al":{code:"fermataLongAbove",between_lines:!1},"a@ul":{code:"fermataLongBelow",between_lines:!1},"a@vl":{aboveCode:"fermataVeryLongAbove",belowCode:"fermataVeryLongBelow",between_lines:!1},"a@avl":{code:"fermataVeryLongAbove",between_lines:!1},"a@uvl":{code:"fermataVeryLongBelow",between_lines:!1},"a|":{code:"stringsUpBow",between_lines:!1},am:{code:"stringsDownBow",between_lines:!1},"a,":{code:"pictChokeCymbal",between_lines:!1}},X={mordent:{code:"ornamentShortTrill"},mordent_inverted:{code:"ornamentMordent"},turn:{code:"ornamentTurn"},turn_inverted:{code:"ornamentTurnSlash"},tr:{code:"ornamentTrill"},upprall:{code:"ornamentPrecompSlideTrillDAnglebert"},downprall:{code:"ornamentPrecompDoubleCadenceUpperPrefix"},prallup:{code:"ornamentPrecompTrillSuffixDandrieu"},pralldown:{code:"ornamentPrecompTrillLowerSuffix"},upmordent:{code:"ornamentPrecompSlideTrillBach"},downmordent:{code:"ornamentPrecompDoubleCadenceUpperPrefixTurn"},lineprall:{code:"ornamentPrecompAppoggTrill"},prallprall:{code:"ornamentTremblement"},scoop:{code:"brassScoop"},doit:{code:"brassDoitMedium"},fall:{code:"brassFallLipShort"},doitLong:{code:"brassLiftMedium"},fallLong:{code:"brassFallRoughMedium"},bend:{code:"brassBend"},plungerClosed:{code:"brassMuteClosed"},plungerOpen:{code:"brassMuteOpen"},flip:{code:"brassFlip"},jazzTurn:{code:"brassJazzTurn"},smear:{code:"brassSmear"}};class V{static currentMusicFont(){if(0===V.MUSIC_FONT_STACK.length)throw new f("NoFonts","The font stack is empty. See: await Flow.fetchMusicFont(...); Flow.setMusicFont(...).");return V.MUSIC_FONT_STACK[0]}static clefProperties(t){if(!t||!(t in U))throw new f("BadArgument","Invalid clef: "+t);return U[t]}static keyProperties(t,e="treble",i){let s={octave_shift:0,duration:"4"};"object"==typeof i&&(s=Object.assign(Object.assign({},s),i));const n=V.sanitizeDuration(s.duration),a=t.split("/");if(a.length<2)throw new f("BadArguments",`First argument must be note/octave or note/octave/glyph-code: ${t}`);const o=a[0].toUpperCase(),r=H[o];if(!r)throw new f("BadArguments","Invalid key name: "+o);r.octave&&(a[1]=r.octave.toString());let h=parseInt(a[1],10);h+=-1*s.octave_shift;let c=(7*h-28+r.index)/2;c+=V.clefProperties(e).line_shift;let d=0;c<=0&&2*c%2==0&&(d=1),c>=6&&2*c%2==0&&(d=-1);const l=void 0!==r.int_val?12*h+r.int_val:void 0,g=r.code,u=r.shift_right;let p={};if(a.length>2&&a[2]){const t=a[2].toUpperCase();p={code:this.codeNoteHead(t,n)}||{}}return Object.assign({key:o,octave:h,line:c,int_value:l,accidental:r.accidental,code:g,stroke:d,shift_right:u,displaced:!1},p)}static integerToNote(t){if(void 0===t||t<0||t>11)throw new f("BadArguments",`integerToNote() requires an integer in the range [0, 11]: ${t}`);const e={0:"C",1:"C#",2:"D",3:"D#",4:"E",5:"F",6:"F#",7:"G",8:"G#",9:"A",10:"A#",11:"B"}[t];if(!e)throw new f("BadArguments",`Unknown note value for integer: ${t}`);return e}static tabToGlyph(t,e=1){let i,s=0,n=0;if("X"===t.toUpperCase()){const t=new Q("accidentalDoubleSharp",V.TABLATURE_FONT_SCALE).getMetrics();if(i="accidentalDoubleSharp",null==t.width||null==t.height)throw new f("InvalidMetrics","Width and height required");s=t.width,n=-t.height/2}else s=V.textWidth(t);return{text:t,code:i,getWidth:()=>s*e,shift_y:n}}static textWidth(t){return 7*t.toString().length}static articulationCodes(t){return j[t]}static accidentalCodes(t){return Y[t]}static ornamentCodes(t){return X[t]}static keySignature(t){const e=G[t];if(!e)throw new f("BadKeySignature",`Bad key signature spec: '${t}'`);if(!e.acc)return[];const i={b:[2,.5,2.5,1,3,1.5,3.5],"#":[0,1.5,-.5,1,2.5,.5,2]}[e.acc],s=[];for(let t=0;tQ.getWidth(a,t)}),s)}}V.SOFTMAX_FACTOR=100,V.STEM_WIDTH=1.5,V.STEM_HEIGHT=35,V.STAVE_LINE_THICKNESS=1,V.RENDER_PRECISION_PLACES=3,V.RESOLUTION=L,V.MUSIC_FONT_STACK=[],V.NOTATION_FONT_SCALE=39,V.TABLATURE_FONT_SCALE=39,V.SLASH_NOTEHEAD_WIDTH=15,V.STAVE_LINE_DISTANCE=10,V.TEXT_HEIGHT_OFFSET_HACK=1,V.accidentalMap=Y,V.accidentalColumnsTable={1:{a:[1],b:[1]},2:{a:[1,2]},3:{a:[1,3,2],b:[1,2,1],second_on_bottom:[1,2,3]},4:{a:[1,3,4,2],b:[1,2,3,1],spaced_out_tetrachord:[1,2,1,2]},5:{a:[1,3,5,4,2],b:[1,2,4,3,1],spaced_out_pentachord:[1,2,3,2,1],very_spaced_out_pentachord:[1,2,1,2,1]},6:{a:[1,3,5,6,4,2],b:[1,2,4,5,3,1],spaced_out_hexachord:[1,3,2,1,3,2],very_spaced_out_hexachord:[1,2,1,2,1,2]}},V.unicode={sharp:String.fromCharCode(9839),flat:String.fromCharCode(9837),natural:String.fromCharCode(9838),triangle:String.fromCharCode(9651),"o-with-slash":String.fromCharCode(248),degrees:String.fromCharCode(176),circle:String.fromCharCode(9675)},V.validTypes={n:{name:"note"},r:{name:"rest"},h:{name:"harmonic"},m:{name:"muted"},s:{name:"slash"},g:{name:"ghost"},d:{name:"diamond"},x:{name:"x"},ci:{name:"circled"},cx:{name:"circle x"},sf:{name:"slashed"},sb:{name:"slashed backward"},sq:{name:"square"},tu:{name:"triangle up"},td:{name:"triangle down"}},V.TIME4_4={num_beats:4,beat_value:4,resolution:L};const z={"1/2":{common:{stem:!1,stem_offset:0,flag:!1,stem_up_extension:-V.STEM_HEIGHT,stem_down_extension:-V.STEM_HEIGHT,tabnote_stem_up_extension:-V.STEM_HEIGHT,tabnote_stem_down_extension:-V.STEM_HEIGHT,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restDoubleWhole",rest:!0,position:"B/5",dot_shiftY:.5},s:{getWidth:()=>V.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},1:{common:{stem:!1,stem_offset:0,flag:!1,stem_up_extension:-V.STEM_HEIGHT,stem_down_extension:-V.STEM_HEIGHT,tabnote_stem_up_extension:-V.STEM_HEIGHT,tabnote_stem_down_extension:-V.STEM_HEIGHT,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restWhole",leger_code_head:"restWholeLegerLine",rest:!0,position:"D/5",dot_shiftY:.5},s:{getWidth:()=>V.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},2:{common:{stem:!0,stem_offset:0,flag:!1,stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restHalf",leger_code_head:"restHalfLegerLine",stem:!1,rest:!0,position:"B/4",dot_shiftY:-.5},s:{getWidth:()=>V.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},4:{common:{stem:!0,stem_offset:0,flag:!1,stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restQuarter",stem:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1.5,line_below:1.5},s:{getWidth:()=>V.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},8:{common:{stem:!0,stem_offset:0,flag:!0,beam_count:1,stem_beam_extension:0,code_flag_upstem:"flag8thUp",code_flag_downstem:"flag8thDown",stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest8th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1,line_below:1},s:{getWidth:()=>V.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},16:{common:{beam_count:2,stem_beam_extension:0,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag16thUp",code_flag_downstem:"flag16thDown",stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest16th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1,line_below:2},s:{getWidth:()=>V.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},32:{common:{beam_count:3,stem_beam_extension:7.5,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag32ndUp",code_flag_downstem:"flag32ndDown",stem_up_extension:9,stem_down_extension:9,tabnote_stem_up_extension:9,tabnote_stem_down_extension:9,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest32nd",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-1.5,line_above:2,line_below:2},s:{getWidth:()=>V.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},64:{common:{beam_count:4,stem_beam_extension:15,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag64thUp",code_flag_downstem:"flag64thDown",stem_up_extension:13,stem_down_extension:13,tabnote_stem_up_extension:13,tabnote_stem_down_extension:13,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest64th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-1.5,line_above:2,line_below:3},s:{getWidth:()=>V.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},128:{common:{beam_count:5,stem_beam_extension:22.5,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag128thUp",code_flag_downstem:"flag128thDown",stem_up_extension:22,stem_down_extension:22,tabnote_stem_up_extension:22,tabnote_stem_down_extension:22,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest128th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-2.5,line_above:3,line_below:3},s:{getWidth:()=>V.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}}};var K,$;!function(t){t[t.MOVE=0]="MOVE",t[t.LINE=1]="LINE",t[t.QUADRATIC=2]="QUADRATIC",t[t.BEZIER=3]="BEZIER"}(K||(K={}));class J{constructor(t,e,i){this.point=-1,this.metrics=Q.loadMetrics(t,e,i),this.bbox=Q.getOutlineBoundingBox(this.metrics.outline,this.metrics.scale,this.metrics.x_shift,this.metrics.y_shift),i&&(this.point=Q.lookupFontMetric(this.metrics.font,i,e,"point",-1))}}class q{constructor(t,e,i,s){this.outline=t,this.originX=e,this.originY=i,this.scale=s,this.i=0,this.precision=1,this.precision=Math.pow(10,V.RENDER_PRECISION_PLACES)}done(){return this.i>=this.outline.length}next(){return Math.round(this.outline[this.i++]*this.precision/this.precision)}nextX(){return Math.round((this.originX+this.outline[this.i++]*this.scale)*this.precision)/this.precision}nextY(){return Math.round((this.originY-this.outline[this.i++]*this.scale)*this.precision)/this.precision}static parse(t){const e=[],i=t.split(" ");let s=0;for(;s{const e=t.getTickContext();n&&t.setStave(n),e.setXOffset(a)}))}}class tt{static get NUM_TONES(){return this.canonical_notes.length}static get roots(){return["c","d","e","f","g","a","b"]}static get root_values(){return[0,2,4,5,7,9,11]}static get root_indices(){return{c:0,d:1,e:2,f:3,g:4,a:5,b:6}}static get canonical_notes(){return["c","c#","d","d#","e","f","f#","g","g#","a","a#","b"]}static get diatonic_intervals(){return["unison","m2","M2","m3","M3","p4","dim5","p5","m6","M6","b7","M7","octave"]}static get diatonic_accidentals(){return{unison:{note:0,accidental:0},m2:{note:1,accidental:-1},M2:{note:1,accidental:0},m3:{note:2,accidental:-1},M3:{note:2,accidental:0},p4:{note:3,accidental:0},dim5:{note:4,accidental:-1},p5:{note:4,accidental:0},m6:{note:5,accidental:-1},M6:{note:5,accidental:0},b7:{note:6,accidental:-1},M7:{note:6,accidental:0},octave:{note:7,accidental:0}}}static get intervals(){return{u:0,unison:0,m2:1,b2:1,min2:1,S:1,H:1,2:2,M2:2,maj2:2,T:2,W:2,m3:3,b3:3,min3:3,M3:4,3:4,maj3:4,4:5,p4:5,"#4":6,b5:6,aug4:6,dim5:6,5:7,p5:7,"#5":8,b6:8,aug5:8,6:9,M6:9,maj6:9,b7:10,m7:10,min7:10,dom7:10,M7:11,maj7:11,8:12,octave:12}}static get scales(){return{major:[2,2,1,2,2,2,1],minor:[2,1,2,2,1,2,2],ionian:[2,2,1,2,2,2,1],dorian:[2,1,2,2,2,1,2],phyrgian:[1,2,2,2,1,2,2],lydian:[2,2,2,1,2,2,1],mixolydian:[2,2,1,2,2,1,2],aeolian:[2,1,2,2,1,2,2],locrian:[1,2,2,1,2,2,2]}}static get scaleTypes(){return{M:tt.scales.major,m:tt.scales.minor}}static get accidentals(){return["bb","b","n","#","##"]}static get noteValues(){return{c:{root_index:0,int_val:0},cn:{root_index:0,int_val:0},"c#":{root_index:0,int_val:1},"c##":{root_index:0,int_val:2},cb:{root_index:0,int_val:11},cbb:{root_index:0,int_val:10},d:{root_index:1,int_val:2},dn:{root_index:1,int_val:2},"d#":{root_index:1,int_val:3},"d##":{root_index:1,int_val:4},db:{root_index:1,int_val:1},dbb:{root_index:1,int_val:0},e:{root_index:2,int_val:4},en:{root_index:2,int_val:4},"e#":{root_index:2,int_val:5},"e##":{root_index:2,int_val:6},eb:{root_index:2,int_val:3},ebb:{root_index:2,int_val:2},f:{root_index:3,int_val:5},fn:{root_index:3,int_val:5},"f#":{root_index:3,int_val:6},"f##":{root_index:3,int_val:7},fb:{root_index:3,int_val:4},fbb:{root_index:3,int_val:3},g:{root_index:4,int_val:7},gn:{root_index:4,int_val:7},"g#":{root_index:4,int_val:8},"g##":{root_index:4,int_val:9},gb:{root_index:4,int_val:6},gbb:{root_index:4,int_val:5},a:{root_index:5,int_val:9},an:{root_index:5,int_val:9},"a#":{root_index:5,int_val:10},"a##":{root_index:5,int_val:11},ab:{root_index:5,int_val:8},abb:{root_index:5,int_val:7},b:{root_index:6,int_val:11},bn:{root_index:6,int_val:11},"b#":{root_index:6,int_val:0},"b##":{root_index:6,int_val:1},bb:{root_index:6,int_val:10},bbb:{root_index:6,int_val:9}}}isValidNoteValue(t){return t>=0&&t=0&&t3)throw new f("BadArguments","Invalid note name: "+t);const e=t.toLowerCase(),i=/^([cdefgab])(b|bb|n|#|##)?$/.exec(e);if(null!==i){return{root:i[1],accidental:i[2]}}throw new f("BadArguments","Invalid note name: "+t)}getKeyParts(t){if(!t||t.length<1)throw new f("BadArguments","Invalid key: "+t);const e=t.toLowerCase(),i=/^([cdefgab])(b|#)?(mel|harm|m|M)?$/.exec(e);if(null!==i){const t=i[1],e=i[2];let s=i[3];return s||(s="M"),{root:t,accidental:e,type:s}}throw new f("BadArguments",`Invalid key: ${t}`)}getNoteValue(t){const e=tt.noteValues[t];if(void 0===e)throw new f("BadArguments",`Invalid note name: ${t}`);return e.int_val}getIntervalValue(t){const e=tt.intervals[t];if(void 0===e)throw new f("BadArguments",`Invalid interval name: ${t}`);return e}getCanonicalNoteName(t){if(!this.isValidNoteValue(t))throw new f("BadArguments",`Invalid note value: ${t}`);return tt.canonical_notes[t]}getCanonicalIntervalName(t){if(!this.isValidIntervalValue(t))throw new f("BadArguments",`Invalid interval value: ${t}`);return tt.diatonic_intervals[t]}getRelativeNoteValue(t,e,i=1){if(1!==i&&-1!==i)throw new f("BadArguments",`Invalid direction: ${i}`);let s=(t+i*e)%tt.NUM_TONES;return s<0&&(s+=tt.NUM_TONES),s}getRelativeNoteName(t,e){const i=this.getNoteParts(t),s=this.getNoteValue(i.root);let n=e-s;if(Math.abs(n)>tt.NUM_TONES-3){let i=1;n>0&&(i=-1);const a=(e+1+(s+1))%tt.NUM_TONES*i;if(Math.abs(a)>2)throw new f("BadArguments",`Notes not related: ${t}, ${e})`);n=a}if(Math.abs(n)>2)throw new f("BadArguments",`Notes not related: ${t}, ${e})`);let a=i.root;if(n>0)for(let t=1;t<=n;++t)a+="#";else if(n<0)for(let t=-1;t>=n;--t)a+="b";return a}getScaleTones(t,e){const i=[t];let s=t;for(let n=0;ne.line-t.line));const d=[];let l,g=0;for(let t=0;tg?e.shift:g,l=e.line}let u=0;for(let t=0;td[i+t],a=t=>t.map(n),o=(t,e)=>{const[i,s]=a([t,e]).map((t=>t.line));return i-s},r=(...t)=>t.map(a).every((([t,e])=>!this.checkCollision(t,e))),h=s-i+1;let c,l,g=this.checkCollision(d[i],d[s])?"a":"b";switch(h){case 3:"a"===g&&.5===o(1,2)&&.5!==o(0,1)&&(g="second_on_bottom");break;case 4:r([0,2],[1,3])&&(g="spaced_out_tetrachord");break;case 5:"b"===g&&r([1,3])&&(g="spaced_out_pentachord",r([0,2],[2,4])&&(g="very_spaced_out_pentachord"));break;case 6:r([0,3],[1,4],[2,5])&&(g="spaced_out_hexachord"),r([0,2],[2,4],[1,3],[3,5])&&(g="very_spaced_out_hexachord")}if(h>=7){let e=2,i=!0;for(;!0===i;){i=!1;for(let t=0;t+el?u:l}else for(c=t;c<=s;c++)l=V.accidentalColumnsTable[h][g][c-t],d[c].column=l,u=u>l?u:l;t=s}const p=[],m=[];for(let t=0;t<=u;t++)p[t]=0,m[t]=0;p[0]=g+n,m[0]=g+n,d.forEach((t=>{t.width>p[t.column]&&(p[t.column]=t.width)}));for(let t=1;t{let e=0;const i=_+t.numAcc;for(;_0?(s=e.flatLine||e.dblSharpLine?2.5:3,t.dblSharpLine&&(i-=.5)):(s=t.flatLine||t.dblSharpLine?2.5:3,e.dblSharpLine&&(i-=.5));const n=Math.abs(i){const e=new v(0,1);t.getTickables().forEach((t=>{if(t.shouldIgnoreTicks())return;const n=s[e.value()];n?n.push(t):(i.push(e.value()),s[e.value()]=[t]),e.add(t.getTicks())}))}));const a=new tt;e||(e="C");const o=a.createScaleMap(e),r={};i.forEach((t=>{const e=s[t],i=[],h=t=>{if(!g(t)||t.isRest()||t.shouldIgnoreTicks())return;const e=t;e.keys.forEach(((t,s)=>{const h=a.getNoteParts(t.split("/")[0]),c=t.split("/")[1],d=h.accidental||"n",l=h.root+d;r[h.root+c]||(r[h.root+c]=o[h.root]);const g=r[h.root+c]===l,u=i.indexOf(t)>-1;if(e.getModifiers().forEach(((t,i)=>{n(t)&&t.type==d&&t.getIndex()==s&&e.getModifiers().splice(i,1)})),!g||g&&u){r[h.root+c]=l;const n=new it(d);e.addModifier(n,s),i.push(t)}})),e.getModifiers().forEach((t=>{c(t)&&t.getGraceNotes().forEach(h)}))};e.forEach(h)}))}reset(){const t=this.render_options.font_scale;this.glyph=new Q(this.accidental.code,t),this.glyph.setOriginX(1),this.cautionary&&(this.parenLeft=new Q(V.accidentalCodes("{").code,t),this.parenRight=new Q(V.accidentalCodes("}").code,t),this.parenLeft.setOriginX(1),this.parenRight.setOriginX(1))}getWidth(){if(this.cautionary){const t=x(this.parenLeft),e=x(this.parenRight),i=t.getMetrics().width+e.getMetrics().width+this.render_options.parenLeftPadding+this.render_options.parenRightPadding;return this.glyph.getMetrics().width+i}return this.glyph.getMetrics().width}setNote(t){return x(t,"ArgumentError",`Bad note value: ${t}`),this.note=t,h(t)&&(this.render_options.font_scale=25,this.reset()),this}setAsCautionary(){return this.cautionary=!0,this.render_options.font_scale=28,this.reset(),this}draw(){const{type:t,position:e,index:i,cautionary:s,x_shift:n,y_shift:a,glyph:o,render_options:{parenLeftPadding:r,parenRightPadding:h}}=this,c=this.checkContext(),d=this.checkAttachedNote();this.setRendered();const l=d.getModifierStartXY(e,i);let g=l.x+n;const u=l.y+a;if(et("Rendering: ",t,g,u),s){const t=x(this.parenLeft),e=x(this.parenRight);e.render(c,g,u),g-=e.getMetrics().width,g-=h,g-=this.accidental.parenRightPaddingAdjustment,o.render(c,g,u),g-=o.getMetrics().width,g-=r,t.render(c,g,u)}else o.render(c,g,u)}}it.DEBUG=!1;class st extends O{constructor(t){super(),this.stem_up_y_offset=0,this.stem_down_y_offset=0,this.stem_up_y_base_offset=0,this.stem_down_y_base_offset=0,this.x_begin=(null==t?void 0:t.x_begin)||0,this.x_end=(null==t?void 0:t.x_end)||0,this.y_top=(null==t?void 0:t.y_top)||0,this.y_bottom=(null==t?void 0:t.y_bottom)||0,this.stem_extension=(null==t?void 0:t.stem_extension)||0,this.stem_direction=(null==t?void 0:t.stem_direction)||0,this.hide=(null==t?void 0:t.hide)||!1,this.isStemlet=(null==t?void 0:t.isStemlet)||!1,this.stemletHeight=(null==t?void 0:t.stemletHeight)||0,this.renderHeightAdjustment=0,this.setOptions(t)}static get CATEGORY(){return m.Stem}static get UP(){return 1}static get DOWN(){return-1}static get WIDTH(){return V.STEM_WIDTH}static get HEIGHT(){return V.STEM_HEIGHT}setOptions(t){this.stem_up_y_offset=(null==t?void 0:t.stem_up_y_offset)||0,this.stem_down_y_offset=(null==t?void 0:t.stem_down_y_offset)||0,this.stem_up_y_base_offset=(null==t?void 0:t.stem_up_y_base_offset)||0,this.stem_down_y_base_offset=(null==t?void 0:t.stem_down_y_base_offset)||0}setNoteHeadXBounds(t,e){return this.x_begin=t,this.x_end=e,this}setDirection(t){this.stem_direction=t}setExtension(t){this.stem_extension=t}getExtension(){return this.stem_extension}setYBounds(t,e){this.y_top=t,this.y_bottom=e}getHeight(){const t=this.stem_direction===st.UP?this.stem_up_y_offset:this.stem_down_y_offset;return(this.y_bottom-this.y_top+(st.HEIGHT-t+this.stem_extension))*this.stem_direction}getBoundingBox(){throw new f("NotImplemented","getBoundingBox() not implemented.")}getExtents(){const t=this.stem_direction===st.UP,e=[this.y_top,this.y_bottom],i=st.HEIGHT+this.stem_extension,s=(t?Math.min:Math.max)(...e),n=(t?Math.max:Math.min)(...e);return{topY:s+i*-this.stem_direction,baseY:n}}setVisibility(t){return this.hide=!t,this}setStemlet(t,e){return this.isStemlet=t,this.stemletHeight=e,this}adjustHeightForFlag(){this.renderHeightAdjustment=V.currentMusicFont().lookupMetric("stem.heightAdjustmentForFlag",-3)}adjustHeightForBeam(){this.renderHeightAdjustment=-st.WIDTH/2}draw(){if(this.setRendered(),this.hide)return;const t=this.checkContext();let e,i;const s=this.stem_direction;let n=0;s===st.DOWN?(e=this.x_begin,i=this.y_top+this.stem_down_y_offset,n=this.stem_down_y_base_offset):(e=this.x_end,i=this.y_bottom-this.stem_up_y_offset,n=this.stem_up_y_base_offset);const a=this.getHeight();!function(...t){st.DEBUG&&S("Vex.Flow.Stem",t)}("Rendering stem - ","Top Y: ",this.y_top,"Bottom Y: ",this.y_bottom);const o=this.isStemlet?a-this.stemletHeight*this.stem_direction:0;t.save(),t.openGroup("stem",this.getAttribute("id"),{pointerBBox:!0}),this.applyStyle(t),t.beginPath(),t.setLineWidth(st.WIDTH),t.moveTo(e,i-o+n),t.lineTo(e,i-a-this.renderHeightAdjustment*s),t.stroke(),this.restoreStyle(t),t.closeGroup(),t.restore()}}function nt(...t){rt.DEBUG&&S("Vex.Flow.TextFormatter",t)}st.DEBUG=!1;const at={},ot={};class rt{constructor(t){this.family="",this.size=14,this.resolution=1e3,this.glyphs={},this.serifs=!1,this.monospaced=!1,this.italic=!1,this.bold=!1,this.superscriptOffset=0,this.subscriptOffset=0,this.maxSizeGlyph="H",this.cacheKey="",this.updateParams(t)}static getFontFamilies(){const t=[];for(const e in ot){const i=ot[e];t.push(Object.assign({},i))}return t}static create(t={}){nt("create: ",t),t.family||(t.family=F.SANS_SERIF);const e=[],i=t.family.split(/\s*,\s*/);for(const t of i){for(const i in ot)i.startsWith(t)&&e.push(ot[i]);if(e.length>0)break}let s;if(0===e.length)s=new rt(Object.values(ot)[0]);else if(1===e.length)s=new rt(e[0]);else{const i=F.isBold(t.weight),n=F.isItalic(t.style),a=e.find((t=>t.bold===i&&t.italic===n));if(a)s=new rt(a);else{const t=e.find((t=>t.italic===n||t.bold===i));s=new rt(t||e[0])}}const n=t.size;if(void 0!==n){const t=F.convertSizeToPointValue(n);s.setFontSize(t)}return s}static getInfo(t){return ot[t]}static registerInfo(t,e=!1){nt("registerInfo: ",t,e);const i=t.family;(void 0===ot[i]||e)&&(ot[i]=t)}updateParams(t){t.family&&(this.family=t.family),t.resolution&&(this.resolution=t.resolution),t.glyphs&&(this.glyphs=t.glyphs),t.serifs&&(this.serifs=t.serifs),t.monospaced&&(this.monospaced=t.monospaced),t.italic&&(this.italic=t.italic),t.bold&&(this.bold=t.bold),t.maxSizeGlyph&&(this.maxSizeGlyph=t.maxSizeGlyph),t.superscriptOffset&&(this.superscriptOffset=t.superscriptOffset),t.subscriptOffset&&(this.subscriptOffset=t.subscriptOffset),this.updateCacheKey()}updateCacheKey(){const t=this.family.replace(/\s+/g,"_"),e=this.size,i=this.bold?N.BOLD:N.NORMAL,s=this.italic?D.ITALIC:D.NORMAL;this.cacheKey=`${t}%${e}%${i}%${s}`}getGlyphMetrics(t){return this.glyphs[t]?this.glyphs[t]:this.glyphs[this.maxSizeGlyph]}get maxHeight(){return this.getGlyphMetrics(this.maxSizeGlyph).ha/this.resolution*this.fontSizeInPixels}getWidthForCharacterInEm(t){var e;const i=this.getGlyphMetrics(t);if(i){return(null!==(e=i.advanceWidth)&&void 0!==e?e:0)/this.resolution}return.65}getWidthForTextInEm(t){const e=this.cacheKey;let i=at[e];void 0===i&&(i={},at[e]=i);let s=i[t];if(void 0===s){s=0;for(let e=0;et>e?t:e)),h+=(this.text_line+1)*V.STAVE_LINE_DISTANCE+o,l&&i===st.DOWN&&(h=Math.max(h,c.topY+o+d*this.text_line))}else if(this.verticalJustification===ct.CENTER){const t=e.getYForTopText(this.text_line)-1;h=t+(g.getYForBottomText(this.text_line)-t)/2+o/2}else if(this.verticalJustification===ct.TOP)h=e.getYs()[0]-(this.text_line+1)*V.STAVE_LINE_DISTANCE,l&&i===st.UP&&(d=c.topY=1}function mt(t,e){return pt(t,e)?e===lt?Math.ceil:Math.floor:Math.round}const ft=t=>g(t)||h(t);class _t extends Z{constructor(t){super(),this.type=t,this.position=gt,this.render_options={font_scale:38},this.reset()}static get CATEGORY(){return m.Articulation}static format(t,e){if(!t||0===t.length)return!1;let i=0;const s=(t,e,i)=>ut(mt(e,i),x(t.glyph.getMetrics().height)/10+.5);t.forEach((t=>{const n=t.checkAttachedNote();i=Math.max(n.getGlyph().getWidth(),i);let a=5;const o=n.hasStem()?n.getStemDirection():st.UP;let r=0;if(u(n)){const t=n.getStem();t&&(r=Math.abs(t.getHeight())/V.STAVE_LINE_DISTANCE)}const h=n.getStave();if(h&&(a=h.getNumLines()),t.getPosition()===lt){let i=n.getLineNumber(!0);o===st.UP&&(i+=r);let h=s(t,e.top_text_line,lt);const c=i+e.top_text_line+.5;!t.articulation.between_lines&&ct.getWidth())).reduce(((t,e)=>Math.max(e,t))),a=Math.min(Math.max(n-i,0),Math.max(n-(e.left_shift+e.right_shift),0));return e.left_shift+=a/2,e.right_shift+=a/2,!0}static easyScoreHook({articulations:t},e,i){if(!t)return;const s={staccato:"a.",tenuto:"a-",accent:"a>"};t.split(",").map((t=>t.trim().split("."))).map((([t,e])=>{const n={type:s[t]};return e&&(n.position=Z.PositionString[e]),i.getFactory().Articulation(n)})).map((t=>e.addModifier(t,0)))}reset(){this.articulation=V.articulationCodes(this.type);const t=x(this.articulation,"ArgumentError",`Articulation not found: ${this.type}`),e=(this.position===lt?t.aboveCode:t.belowCode)||t.code;this.glyph=new Q(null!=e?e:"",this.render_options.font_scale),this.setWidth(x(this.glyph.getMetrics().width))}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=this.checkIndex(),{position:s,glyph:n,text_line:a}=this,o=this.articulation.between_lines,r=e.checkStave(),h=r.getSpacingBetweenLines(),c=p(e),{x:d}=e.getModifierStartXY(s,i),l=!o||c,g=function(t,e){const i=e===lt&&t.getStemDirection()===st.UP||e===gt&&t.getStemDirection()===st.DOWN;return ft(t)?t.hasStem()&&i?.5:1:t.hasStem()&&i?1:0}(e,s),u=V.currentMusicFont().lookupMetric(`articulation.${n.getCode()}.padding`,0);let m={[lt]:()=>{n.setOrigin(.5,1);const t=function(t,e){const i=t.getStemDirection(),{topY:s,baseY:n}=t.getStemExtents();if(ft(t))return t.hasStem()?i===st.UP?s:n:Math.min(...t.getYs());if(p(t))return t.hasStem()&&i===st.UP?s:t.checkStave().getYForTopText(e);throw new f("UnknownCategory","Only can get the top and bottom ys of stavenotes and tabnotes")}(e,a)-(a+g)*h;return l?Math.min(r.getYForTopText(_t.INITIAL_OFFSET),t):t},[gt]:()=>{n.setOrigin(.5,0);const t=function(t,e){const i=t.getStemDirection(),{topY:s,baseY:n}=t.getStemExtents();if(ft(t))return t.hasStem()?i===st.UP?n:s:Math.max(...t.getYs());if(p(t))return t.hasStem()?i===st.UP?t.checkStave().getYForBottomText(e):s:t.checkStave().getYForBottomText(e);throw new f("UnknownCategory","Only can get the top and bottom ys of stavenotes and tabnotes")}(e,a)+(a+g)*h;return l?Math.max(r.getYForBottomText(_t.INITIAL_OFFSET),t):t}}[s]();if(!c){const t=s===lt?-1:1,a=e.getKeyProps()[i].line,r=(e.getYs()[i]-m)/h+Number(a),c=function(t,e,i,s){const n=ut(mt(e,i),e);if(t&&pt(n,i)&&n%1==0)return n+.5*-s;return n}(o,r,s,t);pt(c,s)&&n.setOrigin(.5,.5),m+=Math.abs(c-r)*h*t+u*t}!function(...t){_t.DEBUG&&S("Vex.Flow.Articulation",t)}(`Rendering articulation at (x: ${d}, y: ${m})`),n.render(t,d,m)}}_t.DEBUG=!1,_t.INITIAL_OFFSET=-.5;class xt{static get CATEGORY(){return m.RenderContext}set font(t){this.setFont(t)}get font(){return this.getFont()}setRawFont(t){return this.setFont(t),this}}function St(t,e,i,s="#F55"){t.save(),t.setFillStyle(s),t.beginPath(),t.arc(e,i,3,0,2*Math.PI,!1),t.closePath(),t.fill(),t.restore()}class yt extends O{constructor(){super(),this._preFormatted=!1,this._postFormatted=!1,this.ticks=new v(0,1),this.intrinsicTicks=0,this.tickMultiplier=new v(1,1),this.width=0,this.x_shift=0,this.modifiers=[],this.tupletStack=[],this.align_center=!1,this.center_x_shift=0,this.ignore_ticks=!1,this.formatterMetrics={freedom:{left:0,right:0},duration:"",iterations:0,space:{used:0,mean:0,deviation:0}}}static get CATEGORY(){return m.Tickable}reset(){return this}getTicks(){return this.ticks}shouldIgnoreTicks(){return this.ignore_ticks}setIgnoreTicks(t){return this.ignore_ticks=t,this}setWidth(t){this.width=t}getWidth(){if(!this._preFormatted)throw new f("UnformattedNote","Can't call GetWidth on an unformatted note.");return this.width+(this.modifierContext?this.modifierContext.getWidth():0)}setXShift(t){return this.x_shift=t,this}getXShift(){return this.x_shift}getX(){return this.checkTickContext("Can't getX() without a TickContext.").getX()+this.x_shift}getFormatterMetrics(){return this.formatterMetrics}getCenterXShift(){return this.isCenterAligned()?this.center_x_shift:0}setCenterXShift(t){return this.center_x_shift=t,this}isCenterAligned(){return this.align_center}setCenterAlignment(t){return this.align_center=t,this}getVoice(){return x(this.voice,"NoVoice","Tickable has no voice.")}setVoice(t){this.voice=t}getTuplet(){return this.tuplet}getTupletStack(){return this.tupletStack}resetTuplet(t){let e,i;if(t){const s=this.tupletStack.indexOf(t);return-1!==s&&(this.tupletStack.splice(s,1),e=t.getNoteCount(),i=t.getNotesOccupied(),this.applyTickMultiplier(e,i)),this}for(;this.tupletStack.length;)e=(t=this.tupletStack.pop()).getNoteCount(),i=t.getNotesOccupied(),this.applyTickMultiplier(e,i);return this}setTuplet(t){if(t){this.tupletStack.push(t);const e=t.getNoteCount(),i=t.getNotesOccupied();this.applyTickMultiplier(i,e)}return this.tuplet=t,this}addToModifierContext(t){this.modifierContext=t;for(let t=0;tV.getGlyphProps(this.duration,t))),this.playNote=void 0,this.ignore_ticks=!1,this.width=0,this.leftDisplacedHeadPx=0,this.rightDisplacedHeadPx=0,this.x_shift=0,this.ys=[],t.align_center&&this.setCenterAlignment(t.align_center),this.render_options={annotation_spacing:5,glyph_font_scale:1,stroke_px:1,scale:1,font:"",y_shift:0}}static get CATEGORY(){return m.Note}static plotMetrics(t,e,i){const s=e.getMetrics(),n=e.getAbsoluteX()-s.modLeftPx-s.leftDisplacedHeadPx,a=e.getAbsoluteX()-s.leftDisplacedHeadPx,o=e.getAbsoluteX(),r=e.getAbsoluteX()+s.notePx,h=e.getAbsoluteX()+s.notePx+s.rightDisplacedHeadPx,c=e.getAbsoluteX()+s.notePx+s.rightDisplacedHeadPx+s.modRightPx,d=c+(e.getFormatterMetrics().freedom.right||0),l=c-n;t.save(),t.setFont(F.SANS_SERIF,8),t.fillText(Math.round(l)+"px",n+e.getXShift(),i);const g=i+7;function u(i,s,n,a=g){t.beginPath(),t.setStrokeStyle(n),t.setFillStyle(n),t.setLineWidth(3),t.moveTo(i+e.getXShift(),a),t.lineTo(s+e.getXShift(),a),t.stroke()}u(n,a,"red"),u(a,o,"#999"),u(o,r,"green"),u(r,h,"#999"),u(h,c,"red"),u(c,d,"#DD0"),u(n-e.getXShift(),n,"#BBB"),St(t,o+e.getXShift(),g,"blue");const p=e.getFormatterMetrics();if(p.iterations>0){const s=p.space.deviation,n=s>=0?"+":"";t.setFillStyle("red"),t.fillText(n+Math.round(s),o+e.getXShift(),i-10)}t.restore()}static parseDuration(t){if(!t)return;const e=/(\d*\/?\d+|[a-z])(d*)([nrhms]|$)/.exec(t);if(!e)return;return{duration:e[1],dots:e[2].length,type:e[3]||"n"}}static parseNoteStruct(t){const e=Tt.parseDuration(t.duration);if(!e)return;let i=t.type;if(i&&!V.validTypes[i])return;const s=[];i||(i=e.type||"n",void 0!==t.keys&&t.keys.forEach(((t,e)=>{const n=t.split("/");s[e]=n&&3===n.length?n[2]:i})));let n=V.durationToTicks(e.duration);if(!n)return;const a=t.dots?t.dots:e.dots;if("number"!=typeof a)return;let o=n;for(let t=0;t0}hasStem(){return!1}getNoteType(){return this.noteType}getBeam(){return this.beam}checkBeam(){return x(this.beam,"NoBeam","No beam attached to instance")}hasBeam(){return null!=this.beam}setBeam(t){return this.beam=t,this}addModifier(t,e=0){const i="Note.addModifier(modifier: Modifier, index: number=0)";if("string"==typeof e&&(e=parseInt(e),console.warn(i+" expected a number for `index`, but received a string.")),"object"!=typeof t||"number"!=typeof e)throw new f("WrongParams","Incorrect call signature. Use "+i+" instead.");return t.setNote(this),t.setIndex(e),super.addModifier(t),this}getModifiersByType(t){return this.modifiers.filter((e=>e.getCategory()===t))}getModifierStartXY(t,e,i){if(!this.preFormatted)throw new f("UnformattedNote","Can't call GetModifierStartXY on an unformatted note");return{x:this.getAbsoluteX(),y:this.ys[0]}}getRightParenthesisPx(t){return this.getKeyProps()[t].displaced?this.getRightDisplacedHeadPx():0}getLeftParenthesisPx(t){return this.getKeyProps()[t].displaced?this.getLeftDisplacedHeadPx()-this.x_shift:-this.x_shift}getFirstDotPx(){let t=this.getRightDisplacedHeadPx();return 0!==this.checkModifierContext().getMembers("Parenthesis").length&&(t+=V.currentMusicFont().lookupMetric("parenthesis.default.width")),t}getMetrics(){if(!this.preFormatted)throw new f("UnformattedNote","Can't call getMetrics on an unformatted note.");const t=this.modifierContext?this.modifierContext.getState().left_shift:0,e=this.modifierContext?this.modifierContext.getState().right_shift:0,i=this.getWidth();return{width:i,glyphWidth:this.getGlyphWidth(),notePx:i-t-e-this.leftDisplacedHeadPx-this.rightDisplacedHeadPx,modLeftPx:t,modRightPx:e,leftDisplacedHeadPx:this.leftDisplacedHeadPx,rightDisplacedHeadPx:this.rightDisplacedHeadPx,glyphPx:0}}getAbsoluteX(){let t=this.checkTickContext("Can't getAbsoluteX() without a TickContext.").getX();return this.stave&&(t+=this.stave.getNoteStartX()+V.currentMusicFont().lookupMetric("stave.padding")),this.isCenterAligned()&&(t+=this.getCenterXShift()),t}getStemDirection(){throw new f("NoStem","No stem attached to this note.")}getStemExtents(){throw new f("NoStem","No stem attached to this note.")}getTieRightX(){let t=this.getAbsoluteX();return t+=this.glyph.getWidth()/2,t+=-this.width/2+this.width+2,t}getTieLeftX(){let t=this.getAbsoluteX();return t+=this.glyph.getWidth()/2,t-=this.width/2+2,t}getKeys(){return this.keys}getKeyProps(){return this.keyProps}}var bt,wt,vt,Et,Ct,kt;!function(t){t[t.CENTER=0]="CENTER",t[t.LEFT=1]="LEFT",t[t.RIGHT=2]="RIGHT",t[t.ABOVE=3]="ABOVE",t[t.BELOW=4]="BELOW",t[t.BEGIN=5]="BEGIN",t[t.END=6]="END"}(bt||(bt={}));class Nt extends O{constructor(){super(),this.width=0,this.x=0,this.padding=10,this.position=bt.ABOVE}static get CATEGORY(){return m.StaveModifier}static get Position(){return bt}getPosition(){return this.position}setPosition(t){return this.position=t,this}getStave(){return this.stave}checkStave(){return x(this.stave,"NoStave","No stave attached to instance.")}setStave(t){return this.stave=t,this}getWidth(){return this.width}setWidth(t){return this.width=t,this}getX(){return this.x}setX(t){return this.x=t,this}placeGlyphOnLine(t,e,i,s=0){t.setYShift(e.getYForLine(null!=i?i:0)-e.getYForGlyphs()+s)}getPadding(t){return void 0!==t&&t<2?0:this.padding}setPadding(t){return this.padding=t,this}setLayoutMetrics(t){return this.layoutMetrics=t,this}getLayoutMetrics(){return this.layoutMetrics}draw(...t){}}!function(t){t[t.SINGLE=1]="SINGLE",t[t.DOUBLE=2]="DOUBLE",t[t.END=3]="END",t[t.REPEAT_BEGIN=4]="REPEAT_BEGIN",t[t.REPEAT_END=5]="REPEAT_END",t[t.REPEAT_BOTH=6]="REPEAT_BOTH",t[t.NONE=7]="NONE"}(wt||(wt={}));class Dt extends Nt{constructor(t){super(),this.thickness=V.STAVE_LINE_THICKNESS;const e=wt;this.widths={},this.widths[e.SINGLE]=5,this.widths[e.DOUBLE]=5,this.widths[e.END]=5,this.widths[e.REPEAT_BEGIN]=5,this.widths[e.REPEAT_END]=5,this.widths[e.REPEAT_BOTH]=5,this.widths[e.NONE]=5,this.paddings={},this.paddings[e.SINGLE]=0,this.paddings[e.DOUBLE]=0,this.paddings[e.END]=0,this.paddings[e.REPEAT_BEGIN]=15,this.paddings[e.REPEAT_END]=15,this.paddings[e.REPEAT_BOTH]=15,this.paddings[e.NONE]=0,this.layoutMetricsMap={},this.layoutMetricsMap[e.SINGLE]={xMin:0,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.DOUBLE]={xMin:-3,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.END]={xMin:-5,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.REPEAT_END]={xMin:-10,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.REPEAT_BEGIN]={xMin:-2,xMax:10,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.REPEAT_BOTH]={xMin:-10,xMax:10,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.NONE]={xMin:0,xMax:0,paddingLeft:5,paddingRight:5},this.setPosition(bt.BEGIN),this.setType(t)}static get CATEGORY(){return m.Barline}static get type(){return wt}static get typeString(){return{single:wt.SINGLE,double:wt.DOUBLE,end:wt.END,repeatBegin:wt.REPEAT_BEGIN,repeatEnd:wt.REPEAT_END,repeatBoth:wt.REPEAT_BOTH,none:wt.NONE}}getType(){return this.type}setType(t){return this.type="string"==typeof t?Dt.typeString[t]:t,this.setWidth(this.widths[this.type]),this.setPadding(this.paddings[this.type]),this.setLayoutMetrics(this.layoutMetricsMap[this.type]),this}draw(t){switch(t.checkContext(),this.setRendered(),this.type){case wt.SINGLE:this.drawVerticalBar(t,this.x,!1);break;case wt.DOUBLE:this.drawVerticalBar(t,this.x,!0);break;case wt.END:this.drawVerticalEndBar(t,this.x);break;case wt.REPEAT_BEGIN:this.drawRepeatBar(t,this.x,!0),t.getX()!==this.x&&this.drawVerticalBar(t,t.getX());break;case wt.REPEAT_END:this.drawRepeatBar(t,this.x,!1);break;case wt.REPEAT_BOTH:this.drawRepeatBar(t,this.x,!1),this.drawRepeatBar(t,this.x,!0)}}drawVerticalBar(t,e,i){const s=t.checkContext(),n=t.getTopLineTopY(),a=t.getBottomLineBottomY();i&&s.fillRect(e-3,n,1,a-n),s.fillRect(e,n,1,a-n)}drawVerticalEndBar(t,e){const i=t.checkContext(),s=t.getTopLineTopY(),n=t.getBottomLineBottomY();i.fillRect(e-5,s,1,n-s),i.fillRect(e-2,s,3,n-s)}drawRepeatBar(t,e,i){const s=t.checkContext(),n=t.getTopLineTopY(),a=t.getBottomLineBottomY();let o=3;i||(o=-5),s.fillRect(e+o,n,1,a-n),s.fillRect(e-2,n,3,a-n);i?o+=4:o-=4;const r=e+o+1;let h=(t.getNumLines()-1)*t.getSpacingBetweenLines();h=h/2-t.getSpacingBetweenLines()/2;let c=n+h+1;s.beginPath(),s.arc(r,c,2,0,2*Math.PI,!1),s.fill(),c+=t.getSpacingBetweenLines(),s.beginPath(),s.arc(r,c,2,0,2*Math.PI,!1),s.fill()}}class At extends Tt{constructor(t=wt.SINGLE){super({duration:"b"}),this.metrics={widths:{}};const e=wt;this.metrics.widths={[e.SINGLE]:8,[e.DOUBLE]:12,[e.END]:15,[e.REPEAT_BEGIN]:14,[e.REPEAT_END]:14,[e.REPEAT_BOTH]:18,[e.NONE]:0},this.ignore_ticks=!0,this.setType(t)}static get CATEGORY(){return m.BarNote}getType(){return this.type}setType(t){return this.type="string"==typeof t?Dt.typeString[t]:t,this.setWidth(this.metrics.widths[this.type]),this}addToModifierContext(t){return this}preFormat(){return this.preFormatted=!0,this}draw(){const t=this.checkContext();!function(...t){At.DEBUG&&S("Vex.Flow.BarNote",t)}("Rendering bar line at: ",this.getAbsoluteX()),this.applyStyle(t);const e=new Dt(this.type);e.setX(this.getAbsoluteX()),e.draw(this.checkStave()),this.restoreStyle(t),this.setRendered()}}At.DEBUG=!1;class Pt extends Z{constructor(t,e=!1,i){super(),this.text=t,this.x_shift=0,this.release=e,this.tap="",this.resetFont(),this.render_options={line_width:1.5,line_style:"#777777",bend_width:8,release_width:8},i?this.phrase=i:(this.phrase=[{type:Pt.UP,text:this.text}],this.release&&this.phrase.push({type:Pt.DOWN,text:""})),this.updateWidth()}static get CATEGORY(){return m.Bend}static get UP(){return 0}static get DOWN(){return 1}static format(t,e){if(!t||0===t.length)return!1;let i=0;for(let s=0;st{const a=t+s,o=i;e.save(),e.beginPath(),e.setLineWidth(this.render_options.line_width),e.setStrokeStyle(this.render_options.line_style),e.setFillStyle(this.render_options.line_style),e.moveTo(t,i),e.quadraticCurveTo(a,o,t+s,n),e.stroke(),e.restore()},d=(t,i,s,n)=>{e.save(),e.beginPath(),e.setLineWidth(this.render_options.line_width),e.setStrokeStyle(this.render_options.line_style),e.setFillStyle(this.render_options.line_style),e.moveTo(t,n),e.quadraticCurveTo(t+s,n,t+s,i),e.stroke(),e.restore()},l=(t,i,s)=>{const n=i+4*s;e.beginPath(),e.moveTo(t,i),e.lineTo(t-4,n),e.lineTo(t+4,n),e.closePath(),e.fill()},g=(t,i)=>{e.save(),e.setFont(this.textFont);const s=t-e.measureText(i).width/2;e.fillText(i,s,h),e.restore()};let u,p=0,m=0;if(null===(t=this.tap)||void 0===t?void 0:t.length){g(i.getModifierStartXY(Z.Position.CENTER,this.index).x,this.tap)}for(let t=0;t0){const e=c.symbolBlocks[t-1];Ft.isSuperscript(e)||(n=s)}a&&n>0&&(f=!0,e.xShift=e.xShift+(n-s),s=n,n=0,c.setEnableKerning(!1)),i||a||(n=0),e.vAlign=f,s+=e.width,p=s}if(c.updateKerningAdjustments(),c.updateOverBarAdjustments(),c.getVertical()===Et.TOP?(c.setTextLine(e.top_text_line),e.top_text_line+=m):(c.setTextLine(e.text_line+1),e.text_line+=m+1),c.getReportWidth()&&u(g)){const t=g.getGlyph().getWidth();c.getHorizontal()===vt.LEFT?(r=Math.max(t,r),a=Math.max(a,p)+Ft.minPadding):c.getHorizontal()===vt.RIGHT?(h=Math.max(t,h),o=Math.max(o,p)):(a=Math.max(a,p/2)+Ft.minPadding,o=Math.max(o,p/2),r=Math.max(t/2,r),h=Math.max(t/2,h))}s=0}const c=Math.min(Math.max(o-h,0),Math.max(o-e.right_shift,0)),d=Math.min(Math.max(a-r,0),Math.max(a-e.left_shift,0));return e.left_shift+=d,e.right_shift+=c,!0}static get TEXT_FONT(){let t="Roboto Slab, Times, serif";return"Petaluma"===V.currentMusicFont().getName()&&(t="PetalumaScript, Arial, sans-serif"),{family:t,size:12,weight:N.NORMAL,style:D.NORMAL}}get superscriptOffset(){return Ft.superscriptOffset*this.textFormatter.fontSizeInPixels}get subscriptOffset(){return Ft.subscriptOffset*this.textFormatter.fontSizeInPixels}setReportWidth(t){return this.reportWidth=t,this}getReportWidth(){return this.reportWidth}updateOverBarAdjustments(){const t=this.symbolBlocks.findIndex((({symbolType:t,glyph:e})=>t===Ct.GLYPH&&void 0!==e&&"csymDiagonalArrangementSlash"===e.code));if(t<0)return;const e=this.symbolBlocks[t].width/4,i=.25*this.textFormatter.fontSizeInPixels;let s=0;for(;s0?this.symbolBlocks[t-1]:void 0;let s=0;e.symbolType===Ct.GLYPH&&void 0!==e.glyph&&e.glyph.code===Ft.glyphs.over.code&&(s+=e.glyph.metrics.x_shift),void 0!==i&&i.symbolType===Ct.GLYPH&&void 0!==i.glyph&&i.glyph.code===Ft.glyphs.over.code&&(s+=i.glyph.metrics.x_shift);let n=!1,a=!1;void 0!==i&&i.symbolType===Ct.TEXT&&(n=Ft.upperKerningText.some((t=>t===i.text[i.text.length-1])),a=Ft.lowerKerningText.some((t=>t===i.text[i.text.length-1])));const o=Ft.kerningOffset*this.textFormatter.fontSizeInPixels;return n&&e.symbolModifier===kt.SUPERSCRIPT&&(s+=o),a&&e.symbolType===Ct.TEXT&&(e.text[0]>="a"&&e.text[0]<="z"&&(s+=o/2),Ft.upperKerningText.some((t=>t===(null==i?void 0:i.text[i.text.length-1])))&&(s+=o/2)),s}getSymbolBlock(t={}){var e,i,s;const n=null!==(e=t.symbolType)&&void 0!==e?e:Ct.TEXT,a={text:null!==(i=t.text)&&void 0!==i?i:"",symbolType:n,symbolModifier:null!==(s=t.symbolModifier)&&void 0!==s?s:kt.NONE,xShift:0,yShift:0,vAlign:!1,width:0};if(n===Ct.GLYPH&&"string"==typeof t.glyph){const e=Ft.glyphs[t.glyph],i=20;a.glyph=new Q(e.code,i,{category:"chordSymbol"})}else n===Ct.TEXT?a.width=this.textFormatter.getWidthForTextInEm(a.text):n===Ct.LINE&&(a.width=t.width);return a}addSymbolBlock(t){return this.symbolBlocks.push(this.getSymbolBlock(t)),this}addText(t,e={}){const i=Ct.TEXT;return this.addSymbolBlock(Object.assign(Object.assign({},e),{text:t,symbolType:i}))}addTextSuperscript(t){const e=Ct.TEXT,i=kt.SUPERSCRIPT;return this.addSymbolBlock({text:t,symbolType:e,symbolModifier:i})}addTextSubscript(t){const e=Ct.TEXT,i=kt.SUBSCRIPT;return this.addSymbolBlock({text:t,symbolType:e,symbolModifier:i})}addGlyphSuperscript(t){const e=Ct.GLYPH,i=kt.SUPERSCRIPT;return this.addSymbolBlock({glyph:t,symbolType:e,symbolModifier:i})}addGlyph(t,e={}){const i=Ct.GLYPH;return this.addSymbolBlock(Object.assign(Object.assign({},e),{glyph:t,symbolType:i}))}addGlyphOrText(t,e={}){let i="";for(let s=0;s0&&(this.addText(i,e),i=""),this.addGlyph(n,e)):i+=n}return i.length>0&&this.addText(i,e),this}addLine(t,e={}){const i=Ct.LINE;return this.addSymbolBlock(Object.assign(Object.assign({},e),{symbolType:i,width:t}))}setFont(t,e,i,s){return super.setFont(t,e,i,s),this.textFormatter=rt.create(this.textFont),this}setEnableKerning(t){return this.useKerning=t,this}setVertical(t){return this.vertical="string"==typeof t?Ft.VerticalJustifyString[t]:t,this}getVertical(){return this.vertical}setHorizontal(t){return this.horizontal="string"==typeof t?Ft.HorizontalJustifyString[t]:t,this}getHorizontal(){return this.horizontal}getWidth(){let t=0;return this.symbolBlocks.forEach((e=>{t+=e.vAlign?0:e.width})),t}getYOffsetForText(t){var e;let i=0,s=0;for(s=0;s0?i/n*-1:0}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered(),t.save(),t.openGroup("chordsymbol",this.getAttribute("id"));const i=e.getModifierStartXY(Z.Position.ABOVE,this.index);let s;t.setFont(this.textFont);const n=e.hasStem(),a=e.checkStave();if(this.vertical===Et.BOTTOM){if(s=a.getYForBottomText(this.text_line+V.TEXT_HEIGHT_OFFSET_HACK),n){const t=e.checkStem().getExtents(),i=a.getSpacingBetweenLines(),n=1===e.getStemDirection()?t.baseY:t.topY;s=Math.max(s,n+i*(this.text_line+2))}}else if(s=Math.min(a.getYForTopText(this.text_line),e.getYs()[0]-10),n){const t=e.checkStem().getExtents(),i=a.getSpacingBetweenLines();s=Math.min(s,t.topY-5-i*this.text_line)}let o=i.x;o=this.horizontal===vt.LEFT?i.x:this.horizontal===vt.RIGHT?i.x+this.getWidth():this.horizontal===vt.CENTER?i.x-this.getWidth()/2:e.getStemX()-this.getWidth()/2,Mt("Rendering ChordSymbol: ",this.textFormatter,o,s),this.symbolBlocks.forEach((e=>{const i=Ft.isSuperscript(e),n=Ft.isSubscript(e);let a=s;if(Mt("shift was ",e.xShift,e.yShift),Mt("curY pre sub ",a),i&&(a+=this.superscriptOffset),n&&(a+=this.subscriptOffset),Mt("curY sup/sub ",a),e.symbolType===Ct.TEXT){if((i||n)&&(t.save(),this.textFont)){const{family:e,size:i,weight:s,style:n}=this.textFont,a=F.scaleSize(i,Ft.superSubRatio);t.setFont(e,a,s,n)}Mt("Rendering Text: ",e.text,o+e.xShift,a+e.yShift),t.fillText(e.text,o+e.xShift,a+e.yShift),(i||n)&&t.restore()}else e.symbolType===Ct.GLYPH&&e.glyph?(a+=e.yShift,Mt("Rendering Glyph: ",e.glyph.code,o+e.xShift,a),e.glyph.render(t,o+e.xShift,a)):e.symbolType===Ct.LINE&&(Mt("Rendering Line : ",e.width,o,a),t.beginPath(),t.setLineWidth(1),t.moveTo(o,s),t.lineTo(o+e.width,a),t.stroke());o+=e.width,e.vAlign&&(o+=e.xShift)})),t.closeGroup(),t.restore()}}Ft.DEBUG=!1,Ft.HorizontalJustify=vt,Ft.HorizontalJustifyString={left:vt.LEFT,right:vt.RIGHT,center:vt.CENTER,centerStem:vt.CENTER_STEM},Ft.VerticalJustify=Et,Ft.VerticalJustifyString={top:Et.TOP,above:Et.TOP,below:Et.BOTTOM,bottom:Et.BOTTOM},Ft.glyphs={diminished:{code:"csymDiminished"},dim:{code:"csymDiminished"},halfDiminished:{code:"csymHalfDiminished"},"+":{code:"csymAugmented"},augmented:{code:"csymAugmented"},majorSeventh:{code:"csymMajorSeventh"},minor:{code:"csymMinor"},"-":{code:"csymMinor"},"(":{code:"csymParensLeftTall"},leftParen:{code:"csymParensLeftTall"},")":{code:"csymParensRightTall"},rightParen:{code:"csymParensRightTall"},leftBracket:{code:"csymBracketLeftTall"},rightBracket:{code:"csymBracketRightTall"},leftParenTall:{code:"csymParensLeftVeryTall"},rightParenTall:{code:"csymParensRightVeryTall"},"/":{code:"csymDiagonalArrangementSlash"},over:{code:"csymDiagonalArrangementSlash"},"#":{code:"accidentalSharp"},b:{code:"accidentalFlat"}},Ft.symbolTypes=Ct,Ft.symbolModifiers=kt,Ft.noFormat=!1;class Rt extends Z{constructor(){super(),this.position=Z.Position.RIGHT,this.radius=2,this.setWidth(5),this.dot_shiftY=0}static get CATEGORY(){return m.Dot}static getDots(t){return t.getModifiersByType(Rt.CATEGORY)}static buildAndAttach(t,e){for(const i of t)if(null==e?void 0:e.all)for(let t=0;te.line-t.line));let a=i,o=0,r=null,h=null,c=null,d=0;for(let t=0;to?a:o,r=g,h=i}return e.right_shift+=o,!0}setNote(t){return this.note=t,h(t)&&(this.radius*=.5,this.setWidth(3)),this}setDotShiftY(t){return this.dot_shiftY=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.checkStave().getSpacingBetweenLines(),s=e.getModifierStartXY(this.position,this.index,{forceFlagRight:!0});p(e)&&(s.y=e.getStemExtents().baseY);const n=s.x+this.x_shift+this.width-this.radius,a=s.y+this.y_shift+this.dot_shiftY*i;t.beginPath(),t.arc(n,a,this.radius,0,2*Math.PI,!1),t.fill()}}class Bt extends Z{constructor(t){super(),this.finger=t,this.width=7,this.position=Z.Position.LEFT,this.x_shift=0,this.y_shift=0,this.x_offset=0,this.y_offset=0,this.resetFont()}static get CATEGORY(){return m.FretHandFinger}static format(t,e){const{left_shift:i,right_shift:s}=e;if(!t||0===t.length)return!1;const n=[];let a=null,o=0,r=0;for(let h=0;he.line-t.line));let h=0,c=0,d=0,l=0,g=null,u=null;for(let t=0;td?e:d):o===Z.Position.RIGHT&&(p.setXShift(c),e=r+x,l=e>l?e:l),g=m,u=a}return e.left_shift+=d,e.right_shift+=l,!0}static easyScoreHook({fingerings:t}={},e,i){null==t||t.split(",").map((t=>{const e=t.trim().split("."),s={number:e[0]};return e[1]&&(s.position=e[1]),i.getFactory().Fingering(s)})).map(((t,i)=>e.addModifier(t,i)))}setFretHandFinger(t){return this.finger=t,this}getFretHandFinger(){return this.finger}setOffsetX(t){return this.x_offset=t,this}setOffsetY(t){return this.y_offset=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getModifierStartXY(this.position,this.index);let s=i.x+this.x_shift+this.x_offset,n=i.y+this.y_shift+this.y_offset+5;switch(this.position){case Z.Position.ABOVE:s-=4,n-=12;break;case Z.Position.BELOW:s-=2,n+=10;break;case Z.Position.LEFT:s-=this.width;break;case Z.Position.RIGHT:s+=1;break;default:throw new f("InvalidPosition",`The position ${this.position} does not exist`)}t.save(),t.setFont(this.textFont),t.fillText(""+this.finger,s,n),t.restore()}}Bt.TEXT_FONT={family:F.SANS_SERIF,size:9,weight:N.BOLD,style:D.NORMAL};class Ot extends Tt{constructor(t){super(t),this.custom_glyph=!1,this.stem_up_x_offset=0,this.stem_down_x_offset=0,this.index=t.index,this.x=t.x||0,this.y=t.y||0,t.note_type&&(this.noteType=t.note_type),this.displaced=t.displaced||!1,this.stem_direction=t.stem_direction||st.UP,this.line=t.line||0,this.glyph=V.getGlyphProps(this.duration,this.noteType),x(this.glyph,"BadArguments",`No glyph found for duration '${this.duration}' and type '${this.noteType}'`),(this.line>5||this.line<0)&&this.glyph.leger_code_head&&(this.glyph.code_head=this.glyph.leger_code_head),this.glyph_code=this.glyph.code_head,this.x_shift=t.x_shift||0,t.custom_glyph_code&&(this.custom_glyph=!0,this.glyph_code=t.custom_glyph_code,this.stem_up_x_offset=t.stem_up_x_offset||0,this.stem_down_x_offset=t.stem_down_x_offset||0),this.setStyle(t.style),this.slashed=t.slashed||!1,this.render_options=Object.assign(Object.assign({},this.render_options),{glyph_font_scale:t.glyph_font_scale||V.NOTATION_FONT_SCALE}),this.setWidth(this.glyph.getWidth(this.render_options.glyph_font_scale))}static get CATEGORY(){return m.NoteHead}getWidth(){return this.width}isDisplaced(){return!0===this.displaced}getGlyph(){return this.glyph}setX(t){return this.x=t,this}getY(){return this.y}setY(t){return this.y=t,this}getLine(){return this.line}setLine(t){return this.line=t,this}getAbsoluteX(){const t=this.preFormatted?super.getAbsoluteX():this.x,e=st.WIDTH/2,i=V.currentMusicFont(),s=i.lookupMetric("notehead.shiftX",0)*this.stem_direction,n=i.lookupMetric("noteHead.displaced.shiftX",0)*this.stem_direction;return t+s+(this.displaced?(this.width-e)*this.stem_direction+n:0)}getBoundingBox(){if(!this.preFormatted)throw new f("UnformattedNote","Can't call getBoundingBox on an unformatted note.");const t=this.checkStave().getSpacingBetweenLines(),e=t/2,i=this.y-e;return new C(this.getAbsoluteX(),i,this.width,t)}setStave(t){const e=this.getLine();return this.stave=t,this.stave&&(this.setY(this.stave.getYForNote(e)),this.setContext(this.stave.getContext())),this}preFormat(){if(this.preFormatted)return this;const t=this.getWidth()+this.leftDisplacedHeadPx+this.rightDisplacedHeadPx;return this.setWidth(t),this.preFormatted=!0,this}draw(){const t=this.checkContext();this.setRendered();let e=this.getAbsoluteX();this.custom_glyph&&(e+=this.stem_direction===st.UP?this.stem_up_x_offset:this.stem_down_x_offset);const i=this.y;!function(...t){Ot.DEBUG&&S("Vex.Flow.NoteHead",t)}("Drawing note head '",this.noteType,this.duration,"' at",e,i);const s=this.stem_direction,n=this.render_options.glyph_font_scale;this.applyStyle(t);const a=`${this.glyph_code}Stem${s===st.UP?"Up":"Down"}`;if("s"===this.noteType){const n=this.checkStave().getSpacingBetweenLines();!function(t,e,i,s,n,a){const o=V.SLASH_NOTEHEAD_WIDTH;t.save(),t.setLineWidth(V.STEM_WIDTH);let r=!1;if(V.durationToNumber(e)>2&&(r=!0),r||(i-=V.STEM_WIDTH/2*n),t.beginPath(),t.moveTo(i,s+a),t.lineTo(i,s+1),t.lineTo(i+o,s-a),t.lineTo(i+o,s),t.lineTo(i,s+a),t.closePath(),r?t.fill():t.stroke(),V.durationToFraction(e).equals(.5)){const e=[-3,-1,o+1,o+3];for(let n=0;n2&&i++,2===V.durationToNumber(a.note.duration)?e++:V.durationToNumber(a.note.duration)>2&&i++,2!==e&&2!==i||s.note.getModifiersByType(m.Dot).length!==a.note.getModifiersByType(m.Dot).length||t<1&&t>0?(c=h+2,s.stemDirection===a.stemDirection?s.note.setXShift(c):a.note.setXShift(c)):s.note.voice!==a.note.voice&&s.stemDirection===a.stemDirection&&(s.line!=a.line?(c=h+2,s.note.setXShift(c)):1===a.stemDirection&&(a.stemDirection=-1,a.note.setStemDirection(-1)))}else t<1?(c=h+2,s.stemDirection===a.stemDirection?s.note.setXShift(c):a.note.setXShift(c)):s.note.hasStem()?(s.stemDirection=-s.note.getStemDirection(),s.note.setStemDirection(s.stemDirection)):a.note.hasStem()&&(a.stemDirection=-a.note.getStemDirection(),a.note.setStemDirection(a.stemDirection))}return e.right_shift+=c,!0}if(!n)throw new f("InvalidState","noteM not defined.");if(n.isrest&&!s.isrest&&!a.isrest&&(s.minLine<=n.maxLine||n.minLine<=a.maxLine)){return n.maxLine-n.minLinet.postFormat())),!0)}reset(){super.reset();const t=this._noteHeads.map((t=>t.getStyle()));this.buildNoteHeads(),this._noteHeads.forEach(((e,i)=>{const s=t[i];s&&e.setStyle(s)}));const e=this.stave;return e&&this._noteHeads.forEach((t=>t.setStave(e))),this.calcNoteDisplacements(),this}setBeam(t){return this.beam=t,this.calcNoteDisplacements(),this.stem&&this.stem.setExtension(this.getStemExtension()),this}buildStem(){return this.setStem(new st({hide:!!this.isRest()})),this}buildNoteHeads(){this._noteHeads=[];const t=this.getStemDirection(),e=this.getKeys();let i,s,n,a,o,r=!1;t===st.UP?(n=0,a=e.length,o=1):(n=e.length-1,a=-1,o=-1);for(let e=n;e!==a;e+=o){const n=this.sortedKeyProps[e].keyProps,a=n.line;void 0===i?i=a:(s=Math.abs(i-a),0===s||.5===s?r=!r:(r=!1,this.use_default_head_x=!0)),i=a;const o=new Ot({duration:this.duration,note_type:this.noteType,displaced:r,stem_direction:t,custom_glyph_code:n.code,glyph_font_scale:this.render_options.glyph_font_scale,x_shift:n.shift_right,stem_up_x_offset:n.stem_up_x_offset,stem_down_x_offset:n.stem_down_x_offset,line:n.line});this.addChildElement(o),this._noteHeads[this.sortedKeyProps[e].index]=o}}autoStem(){this.setStemDirection(this.calculateOptimalStemDirection())}calculateOptimalStemDirection(){this.minLine=this.sortedKeyProps[0].keyProps.line,this.maxLine=this.sortedKeyProps[this.keyProps.length-1].keyProps.line;return(this.minLine+this.maxLine)/2<3?st.UP:st.DOWN}calculateKeyProps(){let t;for(let e=0;e0&&(this.keyProps[e-1].displaced=!0)),t=a,this.keyProps.push(n)}this.keyProps.forEach(((t,e)=>{this.sortedKeyProps.push({keyProps:t,index:e})})),this.sortedKeyProps.sort(((t,e)=>t.keyProps.line-e.keyProps.line))}getBoundingBox(){var t,e;if(!this.preFormatted)throw new f("UnformattedNote","Can't call getBoundingBox on an unformatted note.");const{width:i,modLeftPx:s,leftDisplacedHeadPx:n}=this.getMetrics(),a=this.getAbsoluteX()-s-n;let o=0,r=0;const h=(null!==(e=null===(t=this.getStave())||void 0===t?void 0:t.getSpacingBetweenLines())&&void 0!==e?e:0)/2,c=2*h;if(this.isRest()){const t=this.ys[0],e=V.durationToFraction(this.duration);e.equals(1)||e.equals(2)?(o=t-h,r=t+h):(o=t-this.glyph.line_above*c,r=t+this.glyph.line_below*c)}else if(this.glyph.stem){const t=this.getStemExtents();t.baseY+=h*this.getStemDirection(),o=Math.min(t.topY,t.baseY),r=Math.max(t.topY,t.baseY)}else{o=0,r=0;for(let t=0;te&&(e=s):s1}hasStem(){return this.glyph.stem}hasFlag(){return super.hasFlag()&&!this.isRest()}getStemX(){return"r"===this.noteType?this.getCenterGlyphX():super.getStemX()+(this.stem_direction?st.WIDTH/(2*-this.stem_direction):0)}getYForTopText(t){const e=this.getStemExtents();return Math.min(this.checkStave().getYForTopText(t),e.topY-this.render_options.annotation_spacing*(t+1))}getYForBottomText(t){const e=this.getStemExtents();return Math.max(this.checkStave().getYForTopText(t),e.baseY+this.render_options.annotation_spacing*t)}setStave(t){super.setStave(t);const e=this._noteHeads.map((e=>(e.setStave(t),e.getY())));if(this.setYs(e),this.stem){const{y_top:t,y_bottom:e}=this.getNoteHeadBounds();this.stem.setYBounds(t,e)}return this}isDisplaced(){return this.displaced}setNoteDisplaced(t){return this.displaced=t,this}getTieRightX(){let t=this.getAbsoluteX();return t+=this.getGlyphWidth()+this.x_shift+this.rightDisplacedHeadPx,this.modifierContext&&(t+=this.modifierContext.getRightShift()),t}getTieLeftX(){let t=this.getAbsoluteX();return t+=this.x_shift-this.leftDisplacedHeadPx,t}getLineForRest(){let t=this.keyProps[0].line;if(this.keyProps.length>1){const e=this.keyProps[this.keyProps.length-1].line;t=T(Math.max(t,e),Math.min(t,e))}return t}getModifierStartXY(t,e,i={}){var s,n;if(!this.preFormatted)throw new f("UnformattedNote","Can't call GetModifierStartXY on an unformatted note");if(0===this.ys.length)throw new f("NoYValues","No Y-Values calculated for this note.");const{ABOVE:a,BELOW:o,LEFT:r,RIGHT:h}=Z.Position;let c=0;return t===r?c=-2:t===h?(c=this.getGlyphWidth()+this.x_shift+2,this.stem_direction===st.UP&&this.hasFlag()&&(i.forceFlagRight||((t,e)=>e===(t.getStemDirection()===st.UP?t.keyProps.length-1:0))(this,e))&&(c+=null!==(n=null===(s=null==this?void 0:this.flag)||void 0===s?void 0:s.getMetrics().width)&&void 0!==n?n:0)):t!==o&&t!==a||(c=this.getGlyphWidth()/2),{x:this.getAbsoluteX()+c,y:this.ys[e]}}setStyle(t){return super.setGroupStyle(t)}setStemStyle(t){const e=this.getStem();return e&&e.setStyle(t),this}getStemStyle(){var t;return null===(t=this.stem)||void 0===t?void 0:t.getStyle()}setLedgerLineStyle(t){this.ledgerLineStyle=t}getLedgerLineStyle(){return this.ledgerLineStyle}setFlagStyle(t){var e;null===(e=this.flag)||void 0===e||e.setStyle(t)}getFlagStyle(){var t;return null===(t=this.flag)||void 0===t?void 0:t.getStyle()}setKeyStyle(t,e){return this._noteHeads[t].setStyle(e),this}setKeyLine(t,e){return this.keyProps[t].line=e,this.reset(),this}getKeyLine(t){return this.keyProps[t].line}getVoiceShiftWidth(){return this.getGlyphWidth()*(this.displaced?2:1)}calcNoteDisplacements(){this.setLeftDisplacedHeadPx(this.displaced&&this.stem_direction===st.DOWN?this.getGlyphWidth():0),this.setRightDisplacedHeadPx(!this.hasFlag()&&this.displaced&&this.stem_direction===st.UP?this.getGlyphWidth():0)}preFormat(){if(this.preFormatted)return;let t=0;this.modifierContext&&(this.modifierContext.preFormat(),0===this.modifierContext.getWidth()&&(t=Wt.minNoteheadPadding));let e=this.getGlyphWidth()+this.leftDisplacedHeadPx+this.rightDisplacedHeadPx+t;this.shouldDrawFlag()&&this.stem_direction===st.UP&&(e+=this.getGlyphWidth()),this.setWidth(e),this.preFormatted=!0}getNoteHeadBounds(){let t,e,i,s,n=1/0,a=-1/0,o=this.checkStave().getNumLines(),r=1,h=o,c=r;return this._noteHeads.forEach((d=>{const l=d.getLine(),g=d.getY();n=Math.min(g,n),a=Math.max(g,a),void 0===e&&d.isDisplaced()&&(e=d.getAbsoluteX()),void 0!==t||d.isDisplaced()||(t=d.getAbsoluteX()),o=Math.max(l,o),r=Math.min(l,r),d.isDisplaced()?(i=void 0===i?l:Math.max(l,i),s=void 0===s?l:Math.min(l,s)):(h=Math.max(l,h),c=Math.min(l,c))}),this),{y_top:n,y_bottom:a,displaced_x:e,non_displaced_x:t,highest_line:o,lowest_line:r,highest_displaced_line:i,lowest_displaced_line:s,highest_non_displaced_line:h,lowest_non_displaced_line:c}}getNoteHeadBeginX(){return this.getAbsoluteX()+this.x_shift}getNoteHeadEndX(){return this.getNoteHeadBeginX()+this.getGlyphWidth()}get noteHeads(){return this._noteHeads.slice()}get note_heads(){return console.warn("StaveNote.note_heads is deprecated. Use StaveNote.noteHeads instead.","This accessor will be removed in VexFlow 5.0."),this.noteHeads}drawLedgerLines(){const t=this.checkStave(),{glyph:e,render_options:{stroke_px:i}}=this,s=this.checkContext(),n=e.getWidth()+2*i,a=2*(e.getWidth()+i)-st.WIDTH/2;if(this.isRest())return;if(!s)throw new f("NoCanvasContext","Can't draw without a canvas context.");const{highest_line:o,lowest_line:r,highest_displaced_line:h,highest_non_displaced_line:c,lowest_displaced_line:d,lowest_non_displaced_line:l,displaced_x:g,non_displaced_x:u}=this.getNoteHeadBounds();if(o<6&&r>0)return;const p=Math.min(null!=g?g:0,null!=u?u:0),m=(t,e,o)=>{let r;r=o&&e?p-i:e?(null!=u?u:0)-i:(null!=g?g:0)-i;const h=e&&o?a:n;s.beginPath(),s.moveTo(r,t),s.lineTo(r+h,t),s.stroke()},_=Object.assign(Object.assign({},t.getDefaultLedgerLineStyle()),this.getLedgerLineStyle());this.applyStyle(s,_);for(let e=6;e<=o;++e){const i=void 0!==u&&e<=c,s=void 0!==h&&e<=h;m(t.getYForNote(e),i,s)}for(let e=0;e>=r;--e){const i=void 0!==u&&e>=l,s=void 0!==d&&e>=d;m(t.getYForNote(e),i,s)}this.restoreStyle(s,_)}drawModifiers(t){const e=this.checkContext();for(let i=0;i{t.openGroup("notehead",e.getAttribute("id"),{pointerBBox:!0}),e.setContext(t).draw(),this.drawModifiers(e),t.closeGroup()}))}drawStem(t){const e=this.checkContext();t&&this.setStem(new st(t)),this.shouldDrawFlag()&&this.stem&&this.stem.adjustHeightForFlag(),this.stem&&this.stem.setContext(e).draw()}getStaveNoteScale(){return 1}getStemExtension(){const t=super.getStemExtension();if(!this.glyph.stem)return t;const e=this.getStemDirection();if(e!==this.calculateOptimalStemDirection())return t;let i;i=e===st.UP?3-this.maxLine:this.minLine-3;const s=i-3.5;if(s<=0)return t;const n=this.getStave();let a=10;return null!=n&&(a=n.getSpacingBetweenLines()),t+s*a}draw(){if(!1===this.render_options.draw)return;if(0===this.ys.length)throw new f("NoYValues","Can't draw note without Y values.");const t=this.checkContext(),e=this.getNoteHeadBeginX(),i=this.hasStem()&&!this.beam;if(this._noteHeads.forEach((t=>t.setX(e))),this.stem){const t=this.getStemX();this.stem.setNoteHeadXBounds(t,t)}!function(...t){Wt.DEBUG&&S("Vex.Flow.StaveNote",t)}("Rendering ",this.isChord()?"chord :":"note :",this.keys),this.applyStyle(),t.openGroup("stavenote",this.getAttribute("id")),this.drawLedgerLines(),i&&this.drawStem(),this.drawNoteHeads(),this.drawFlag(),t.closeGroup(),this.restoreStyle(),this.setRendered()}}Wt.DEBUG=!1;class Gt extends O{constructor(t,e){super(),this.setNotes(t),this.text=e,this.render_options={cp1:8,cp2:12,text_shift_x:0,first_x_shift:0,last_x_shift:0,y_shift:7,tie_spacing:0},this.resetFont()}static get CATEGORY(){return m.StaveTie}setDirection(t){return this.direction=t,this}setNotes(t){if(!t.first_note&&!t.last_note)throw new f("BadArguments","Tie needs to have either first_note or last_note set.");if(t.first_indices||(t.first_indices=[0]),t.last_indices||(t.last_indices=[0]),t.first_indices.length!==t.last_indices.length)throw new f("BadArguments","Tied notes must have same number of indices.");return this.notes=t,this}isPartial(){return!this.notes.first_note||!this.notes.last_note}renderTie(t){if(0===t.first_ys.length||0===t.last_ys.length)throw new f("BadArguments","No Y-values to render");const e=this.checkContext();let i=this.render_options.cp1,s=this.render_options.cp2;Math.abs(t.last_x_px-t.first_x_px)<10&&(i=2,s=8);const n=this.render_options.first_x_shift,a=this.render_options.last_x_shift,o=this.render_options.y_shift*t.direction,r=this.notes.first_indices,h=this.notes.last_indices;for(let c=0;cMath.pow(this.options.softmaxFactor,e.getTicks().value()/t))).reduce(((t,e)=>t+e),0),this.expTicksUsed}softmax(t){this.expTicksUsed||(this.expTicksUsed=this.reCalculateExpTicksUsed());const e=this.ticksUsed.value();return(t=>Math.pow(this.options.softmaxFactor,t/e))(t)/this.expTicksUsed}addTickable(t){if(!t.shouldIgnoreTicks()){const e=t.getTicks();if(this.ticksUsed.add(e),this.expTicksUsed=0,(this.mode===Ht.STRICT||this.mode===Ht.FULL)&&this.ticksUsed.greaterThan(this.totalTicks))throw this.ticksUsed.subtract(e),new f("BadArgument","Too many ticks.");e.lessThan(this.smallestTickCount)&&(this.smallestTickCount=e.clone()),this.resolutionMultiplier=this.ticksUsed.denominator,this.totalTicks.add(0,this.ticksUsed.denominator)}return this.tickables.push(t),t.setVoice(this),this}addTickables(t){for(let e=0;e{e.getStave()||e.setStave(t)})),this.preFormatted=!0,this}checkStave(){return x(this.stave,"NoStave","No stave attached to instance.")}draw(t=this.checkContext(),e){let i;e=null!=e?e:this.stave,this.setRendered();for(let s=0;s1){const e=new Oe(t);e.render_options.beam_width=3,e.render_options.partial_beam_length=4,this.beams.push(e)}return this}setWidth(t){return this.width=t,this}getWidth(){return this.width+Wt.minNoteheadPadding}getGraceNotes(){return this.grace_notes}draw(){const t=this.checkContext(),e=this.checkAttachedNote();if(this.setRendered(),function(...t){jt.DEBUG&&S("Vex.Flow.GraceNoteGroup",t)}("Drawing grace note group for:",e),this.alignSubNotesWithNote(this.getGraceNotes(),e),this.grace_notes.forEach((e=>e.setContext(t).draw())),this.beams.forEach((e=>e.setContext(t).draw())),this.show_slur){const i=g(e),s=i?Gt:Ut;this.slur=new s({last_note:this.grace_notes[0],first_note:e,first_indices:[0],last_indices:[0]}),this.slur.render_options.cp2=12,this.slur.render_options.y_shift=(i?7:5)+this.render_options.slur_y_shift,this.slur.setContext(t).draw()}}}jt.DEBUG=!1;class Xt extends Z{constructor(t){super(),this.preFormatted=!1,this.position=Z.Position.LEFT,this.subNotes=t,this.subNotes.forEach((t=>{t.setIgnoreTicks(!1)})),this.width=0,this.formatter=new De,this.voice=new Yt({num_beats:4,beat_value:4,resolution:V.RESOLUTION}).setStrict(!1),this.voice.addTickables(this.subNotes)}static get CATEGORY(){return m.NoteSubGroup}static format(t,e){if(!t||0===t.length)return!1;let i=0;for(let e=0;ee.setContext(t).drawWithStyle()))}}class Vt{constructor(t){this.preFormatted=!1,this.postFormatted=!1,this.tickID=t&&t.tickID?t.tickID:0,this.currentTick=new v(0,1),this.maxTicks=new v(0,1),this.maxTickable=void 0,this.minTicks=void 0,this.minTickable=void 0,this.padding=1,this.x=0,this.xBase=0,this.xOffset=0,this.tickables=[],this.tickablesByVoice={},this.notePx=0,this.glyphPx=0,this.leftDisplacedHeadPx=0,this.rightDisplacedHeadPx=0,this.modLeftPx=0,this.modRightPx=0,this.totalLeftPx=0,this.totalRightPx=0,this.tContexts=[],this.width=0,this.formatterMetrics={freedom:{left:0,right:0}}}static getNextContext(t){const e=t.tContexts,i=e.indexOf(t);if(i+1t.isCenterAligned()))}getMetrics(){const{width:t,glyphPx:e,notePx:i,leftDisplacedHeadPx:s,rightDisplacedHeadPx:n,modLeftPx:a,modRightPx:o,totalLeftPx:r,totalRightPx:h}=this;return{width:t,glyphPx:e,notePx:i,leftDisplacedHeadPx:s,rightDisplacedHeadPx:n,modLeftPx:a,modRightPx:o,totalLeftPx:r,totalRightPx:h}}getCurrentTick(){return this.currentTick}setCurrentTick(t){this.currentTick=t,this.preFormatted=!1}addTickable(t,e){if(!t)throw new f("BadArgument","Invalid tickable added.");if(!t.shouldIgnoreTicks()){const e=t.getTicks();e.greaterThan(this.maxTicks)&&(this.maxTicks=e.clone(),this.maxTickable=t),(null==this.minTicks||e.lessThan(this.minTicks))&&(this.minTicks=e.clone(),this.minTickable=t)}return t.setTickContext(this),this.tickables.push(t),this.tickablesByVoice[e||0]=t,this.preFormatted=!1,this}preFormat(){if(this.preFormatted)return this;for(let t=0;t=0,!this.ornament)throw new f("ArgumentError",`Ornament not found: '${this.type}'`);this.x_shift=e?e.xOffset:0,this.y_shift=e?e.yOffset:0,this.glyph=new Q(this.ornament.code,this.render_options.font_scale,{category:`ornament.${this.ornament.code}`}),zt.ornamentNoteTransition.indexOf(this.type)>=0&&(this.delayed=!0),e||this.glyph.setOrigin(.5,1)}static get CATEGORY(){return m.Ornament}static get minPadding(){return V.currentMusicFont().lookupMetric("glyphs.noteHead.minPadding")}static format(t,e){if(!t||0===t.length)return!1;let i=0,s=e.right_shift,n=e.left_shift,a=0;for(let o=0;o=0&&(r.x_shift+=s+2),zt.ornamentAttack.indexOf(r.type)>=0&&(r.x_shift-=n+2),r.reportedWidth&&r.x_shift<0?n+=r.reportedWidth:r.reportedWidth&&r.x_shift>=0?s+=r.reportedWidth+zt.minPadding:i=Math.max(r.getWidth(),i),zt.ornamentArticulation.indexOf(r.type)>=0){x(r.note,"NoAttachedNote").getLineNumber()>=3||r.getPosition()===Z.Position.ABOVE?(e.top_text_line+=h,r.y_shift+=a,a-=r.glyph.bbox.getH()):(e.text_line+=h,r.y_shift+=a,a+=r.glyph.bbox.getH())}else r.getPosition()===Z.Position.ABOVE?(r.setTextLine(e.top_text_line),e.top_text_line+=h):(r.setTextLine(e.text_line),e.text_line+=h)}return e.left_shift=n+i/2,e.right_shift=s+i/2,!0}static get ornamentNoteTransition(){return["flip","jazzTurn","smear"]}static get ornamentAttack(){return["scoop"]}static get ornamentAlignWithNoteHead(){return["doit","fall","fallLong","doitLong","bend","plungerClosed","plungerOpen","scoop"]}static get ornamentRelease(){return["doit","fall","fallLong","doitLong","jazzTurn","smear","flip"]}static get ornamentArticulation(){return["bend","plungerClosed","plungerOpen"]}getMetrics(){return V.currentMusicFont().getMetrics().glyphs.jazzOrnaments[this.ornament.code]}setDelayed(t){return this.delayed=t,this}setUpperAccidental(t){const e=this.render_options.font_scale/1.3;return this.accidentalUpper=new Q(V.accidentalCodes(t).code,e),this.accidentalUpper.setOrigin(.5,1),this}setLowerAccidental(t){const e=this.render_options.font_scale/1.3;return this.accidentalLower=new Q(V.accidentalCodes(t).code,e),this.accidentalLower.setOrigin(.5,1),this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getStemDirection(),s=e.checkStave();t.openGroup("ornament",this.getAttribute("id"));const n=e.checkStem().getExtents();let a=i===st.DOWN?n.baseY:n.topY;p(e)&&(e.hasStem()?i===st.DOWN&&(a=s.getYForTopText(this.text_line)):a=s.getYForTopText(this.text_line));const o=i===st.DOWN,r=s.getSpacingBetweenLines();let h=1;!o&&e.hasBeam()&&(h+=.5);const c=a-r*(this.text_line+h),d=e.getModifierStartXY(this.position,this.index);let l=d.x,g=this.ornamentAlignWithNoteHead?d.y:Math.min(s.getYForTopText(this.text_line),c);if(g+=this.y_shift,this.delayed){let t=0;const i=l-(s.getX()-10);if(void 0!==this.delayXShift)t=this.delayXShift;else{t+=this.glyph.getMetrics().width/2;const n=Vt.getNextContext(e.getTickContext());t+=n?.5*(n.getX()-i):.5*(s.getX()+s.getWidth()-i),this.delayXShift=t}l+=t}!function(...t){zt.DEBUG&&S("Vex.Flow.Ornament",t)}("Rendering ornament: ",this.ornament,l,g),this.accidentalLower&&(this.accidentalLower.render(t,l,g),g-=this.accidentalLower.getMetrics().height,g-=this.render_options.accidentalLowerPadding),this.stemUpYOffset&&e.hasStem()&&1===e.getStemDirection()&&(g+=this.stemUpYOffset),e.getLineNumber()<5&&zt.ornamentNoteTransition.indexOf(this.type)>=0&&(g=e.checkStave().getBoundingBox().getY()+40),this.glyph.render(t,l+this.x_shift,g),this.accidentalUpper&&(g-=this.glyph.getMetrics().height+this.render_options.accidentalUpperPadding,this.accidentalUpper.render(t,l,g)),t.closeGroup()}}zt.DEBUG=!1;class Kt extends Z{constructor(t){super(),this.position=null!=t?t:Z.Position.LEFT,this.point=V.currentMusicFont().lookupMetric("parenthesis.default.point"),this.setWidth(V.currentMusicFont().lookupMetric("parenthesis.default.width"))}static get CATEGORY(){return m.Parenthesis}static buildAndAttach(t){for(const e of t)for(let t=0;th+n.width?s:h+n.width),o===$.LEFT&&(h=a.getLeftParenthesisPx(r),i=i>h+n.width?i:h+n.width),n.setXShift(h)}return e.left_shift+=i,e.right_shift+=s,!0}setNote(t){return this.note=t,this.point=V.currentMusicFont().lookupMetric("parenthesis.default.point"),this.setWidth(V.currentMusicFont().lookupMetric("parenthesis.default.width")),h(t)&&(this.point=V.currentMusicFont().lookupMetric("parenthesis.gracenote.point"),this.setWidth(V.currentMusicFont().lookupMetric("parenthesis.gracenote.width"))),this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getModifierStartXY(this.position,this.index,{forceFlagRight:!0}),s=i.x+this.x_shift,n=i.y+this.y_shift;this.position==Z.Position.RIGHT?Q.renderGlyph(t,s+1,n,this.point,"noteheadParenthesisRight",{category:"noteHead.standard.noteheadParenthesisRight"}):this.position==Z.Position.LEFT&&Q.renderGlyph(t,s-2,n,this.point,"noteheadParenthesisLeft",{category:"noteHead.standard.noteheadParenthesisLeft"})}}function $t(t){if(!t)return!1;const e=_();return"function"==typeof e.HTMLCanvasElement&&t instanceof e.HTMLCanvasElement||"function"==typeof t.getContext&&"function"==typeof t.toDataURL}function Jt(t){if(!t)return!1;const e=_();return"function"==typeof e.HTMLDivElement&&t instanceof e.HTMLDivElement||"function"==typeof t.appendChild&&"object"==typeof t.style}class qt extends xt{constructor(t){super(),this.textHeight=0,this.context2D=t,t.canvas?this.canvas=t.canvas:this.canvas={width:qt.WIDTH,height:qt.HEIGHT}}static get WIDTH(){return 600}static get HEIGHT(){return 400}static get CANVAS_BROWSER_SIZE_LIMIT(){return 32767}static sanitizeCanvasDims(t,e){const i=this.CANVAS_BROWSER_SIZE_LIMIT;return Math.max(t,e)>i&&(y("Canvas dimensions exceed browser limit. Cropping to "+i),t>i&&(t=i),e>i&&(e=i)),[t,e]}clear(){this.context2D.clearRect(0,0,this.canvas.width,this.canvas.height)}openGroup(t,e,i){}closeGroup(){}add(t){}setFillStyle(t){return this.context2D.fillStyle=t,this}setBackgroundFillStyle(t){return this}setStrokeStyle(t){return this.context2D.strokeStyle=t,this}setShadowColor(t){return this.context2D.shadowColor=t,this}setShadowBlur(t){const e=this.context2D.getTransform(),i=Math.sqrt(e.a*e.a+e.b*e.b+e.c*e.c+e.d*e.d);return this.context2D.shadowBlur=i*t,this}setLineWidth(t){return this.context2D.lineWidth=t,this}setLineCap(t){return this.context2D.lineCap=t,this}setLineDash(t){return this.context2D.setLineDash(t),this}scale(t,e){return this.context2D.scale(t,e),this}resize(t,e){const i=this.context2D.canvas,s=_().devicePixelRatio||1;return[t,e]=qt.sanitizeCanvasDims(t*s,e*s),t=t/s|0,e=e/s|0,i.width=t*s,i.height=e*s,$t(i)&&(i.style.width=t+"px",i.style.height=e+"px"),this.scale(s,s)}rect(t,e,i,s){return this.context2D.rect(t,e,i,s),this}fillRect(t,e,i,s){return this.context2D.fillRect(t,e,i,s),this}clearRect(t,e,i,s){return this.context2D.clearRect(t,e,i,s),this}beginPath(){return this.context2D.beginPath(),this}moveTo(t,e){return this.context2D.moveTo(t,e),this}lineTo(t,e){return this.context2D.lineTo(t,e),this}bezierCurveTo(t,e,i,s,n,a){return this.context2D.bezierCurveTo(t,e,i,s,n,a),this}quadraticCurveTo(t,e,i,s){return this.context2D.quadraticCurveTo(t,e,i,s),this}arc(t,e,i,s,n,a){return this.context2D.arc(t,e,i,s,n,a),this}fill(){return this.context2D.fill(),this}stroke(){return this.context2D.stroke(),this}closePath(){return this.context2D.closePath(),this}measureText(t){const e=this.context2D.measureText(t);let i=0,s=0;return e.fontBoundingBoxAscent?(i=-e.fontBoundingBoxAscent,s=e.fontBoundingBoxDescent+e.fontBoundingBoxAscent):(i=-e.actualBoundingBoxAscent,s=e.actualBoundingBoxDescent+e.actualBoundingBoxAscent),{x:0,y:i,width:e.width,height:s}}fillText(t,e,i){return this.context2D.fillText(t,e,i),this}save(){return this.context2D.save(),this}restore(){return this.context2D.restore(),this}set fillStyle(t){this.context2D.fillStyle=t}get fillStyle(){return this.context2D.fillStyle}set strokeStyle(t){this.context2D.strokeStyle=t}get strokeStyle(){return this.context2D.strokeStyle}setFont(t,e,i,s){const n=F.validate(t,e,i,s);return this.context2D.font=F.toCSSString(n),this.textHeight=F.convertSizeToPixelValue(n.size),this}getFont(){return this.context2D.font}}const Qt={path:{x:!0,y:!0,width:!0,height:!0,"font-family":!0,"font-weight":!0,"font-style":!0,"font-size":!0},rect:{"font-family":!0,"font-weight":!0,"font-style":!0,"font-size":!0},text:{width:!0,height:!0}},Zt="http://www.w3.org/2000/svg",te=2*Math.PI;class ee extends xt{constructor(t){super(),this.width=0,this.height=0,this.backgroundFillStyle="white",this.fontCSSString="",this.element=t;const e=this.create("svg");this.element.appendChild(e),this.svg=e,this.parent=this.svg,this.groups=[this.svg],this.path="",this.pen={x:NaN,y:NaN},this.lineWidth=1;const i={"font-family":F.SANS_SERIF,"font-size":F.SIZE+"pt","font-weight":N.NORMAL,"font-style":D.NORMAL};this.state=Object.assign({scale:{x:1,y:1}},i),this.attributes=Object.assign({"stroke-width":.3,"stroke-dasharray":"none",fill:"black",stroke:"black"},i),this.shadow_attributes={width:0,color:"black"},this.state_stack=[]}create(t){return document.createElementNS(Zt,t)}openGroup(t,e,i){const s=this.create("g");return this.groups.push(s),this.parent.appendChild(s),this.parent=s,t&&s.setAttribute("class",b(t)),e&&s.setAttribute("id",b(e)),i&&i.pointerBBox&&s.setAttribute("pointer-events","bounding-box"),s}closeGroup(){this.groups.pop(),this.parent=this.groups[this.groups.length-1]}add(t){this.parent.appendChild(t)}setFillStyle(t){return this.attributes.fill=t,this}setBackgroundFillStyle(t){return this.backgroundFillStyle=t,this}setStrokeStyle(t){return this.attributes.stroke=t,this}setShadowColor(t){return this.shadow_attributes.color=t,this}setShadowBlur(t){return this.shadow_attributes.width=t,this}setLineWidth(t){return this.attributes["stroke-width"]=t,this.lineWidth=t,this}setLineDash(t){if("[object Array]"===Object.prototype.toString.call(t))return this.attributes["stroke-dasharray"]=t.join(","),this;throw new f("ArgumentError","lineDash must be an array of integers.")}setLineCap(t){return this.attributes["stroke-linecap"]=t,this}resize(t,e){this.width=t,this.height=e,this.element.style.width=t.toString(),this.svg.style.width=t.toString(),this.svg.style.height=e.toString();const i={width:t,height:e};return this.applyAttributes(this.svg,i),this.scale(this.state.scale.x,this.state.scale.y),this}scale(t,e){this.state.scale={x:t,y:e};const i=this.width/t,s=this.height/e;return this.setViewBox(0,0,i,s),this}setViewBox(t,e,i,s){if("string"==typeof t)this.svg.setAttribute("viewBox",t);else{const n=t+" "+e+" "+i+" "+s;this.svg.setAttribute("viewBox",n)}}applyAttributes(t,e){const i=Qt[t.nodeName];for(const s in e)i&&i[s]||t.setAttributeNS(null,s,e[s]);return t}clear(){for(;this.svg.lastChild;)this.svg.removeChild(this.svg.lastChild);this.scale(this.state.scale.x,this.state.scale.y)}rect(t,e,i,s,n){s<0&&(e+=s,s*=-1);const a=this.create("rect");return n=null!=n?n:{fill:"none","stroke-width":this.lineWidth,stroke:"black"},this.applyAttributes(a,Object.assign({x:t,y:e,width:i,height:s},n)),this.add(a),this}fillRect(t,e,i,s){const n={fill:this.attributes.fill};return this.rect(t,e,i,s,n),this}clearRect(t,e,i,s){return this.rect(t,e,i,s,{"stroke-width":0,fill:this.backgroundFillStyle}),this}beginPath(){return this.path="",this.pen.x=NaN,this.pen.y=NaN,this}moveTo(t,e){return this.path+="M"+t+" "+e,this.pen.x=t,this.pen.y=e,this}lineTo(t,e){return this.path+="L"+t+" "+e,this.pen.x=t,this.pen.y=e,this}bezierCurveTo(t,e,i,s,n,a){return this.path+="C"+t+" "+e+","+i+" "+s+","+n+" "+a,this.pen.x=n,this.pen.y=a,this}quadraticCurveTo(t,e,i,s){return this.path+="Q"+t+" "+e+","+i+" "+s,this.pen.x=i,this.pen.y=s,this}arc(t,e,i,s,n,a){const o=t+i*Math.cos(s),r=e+i*Math.sin(s),h=w(s),c=w(n);if(!a&&n-s>=te||a&&s-n>=te||h===c){const n=t+i*Math.cos(s+Math.PI),a=e+i*Math.sin(s+Math.PI);this.path+=`M${o} ${r} A${i} ${i} 0 0 0 ${n} ${a} `,this.path+=`A${i} ${i} 0 0 0 ${o} ${r}`,this.pen.x=o,this.pen.y=r}else{const d=t+i*Math.cos(n),l=e+i*Math.sin(n);let g;s=h,n=c,g=Math.abs(n-s)n&&(g=!g);const u=!a;this.path+=`M${o} ${r} A${i} ${i} 0 ${+g} ${+u} ${d} ${l}`,this.pen.x=d,this.pen.y=l}return this}closePath(){return this.path+="Z",this}getShadowStyle(){const t=this.shadow_attributes;return`filter: drop-shadow(0 0 ${t.width/1.5}px ${t.color})`}fill(t){const e=this.create("path");return void 0===t&&(t=Object.assign(Object.assign({},this.attributes),{stroke:"none"})),t.d=this.path,this.shadow_attributes.width>0&&(t.style=this.getShadowStyle()),this.applyAttributes(e,t),this.add(e),this}stroke(){const t=this.create("path"),e=Object.assign(Object.assign({},this.attributes),{fill:"none","stroke-width":this.lineWidth,d:this.path});return this.shadow_attributes.width>0&&(e.style=this.getShadowStyle()),this.applyAttributes(t,e),this.add(t),this}measureText(t){return ee.measureTextCache.lookup(t,this.svg,this.attributes)}fillText(t,e,i){if(!t||t.length<=0)return this;const s=Object.assign(Object.assign({},this.attributes),{stroke:"none",x:e,y:i}),n=this.create("text");return n.textContent=t,this.applyAttributes(n,s),this.add(n),this}save(){return this.state_stack.push({state:{"font-family":this.state["font-family"],"font-weight":this.state["font-weight"],"font-style":this.state["font-style"],"font-size":this.state["font-size"],scale:this.state.scale},attributes:{"font-family":this.attributes["font-family"],"font-weight":this.attributes["font-weight"],"font-style":this.attributes["font-style"],"font-size":this.attributes["font-size"],fill:this.attributes.fill,stroke:this.attributes.stroke,"stroke-width":this.attributes["stroke-width"],"stroke-dasharray":this.attributes["stroke-dasharray"]},shadow_attributes:{width:this.shadow_attributes.width,color:this.shadow_attributes.color},lineWidth:this.lineWidth}),this}restore(){const t=this.state_stack.pop();if(t){const e=t;this.state["font-family"]=e.state["font-family"],this.state["font-weight"]=e.state["font-weight"],this.state["font-style"]=e.state["font-style"],this.state["font-size"]=e.state["font-size"],this.state.scale=e.state.scale,this.attributes["font-family"]=e.attributes["font-family"],this.attributes["font-weight"]=e.attributes["font-weight"],this.attributes["font-style"]=e.attributes["font-style"],this.attributes["font-size"]=e.attributes["font-size"],this.attributes.fill=e.attributes.fill,this.attributes.stroke=e.attributes.stroke,this.attributes["stroke-width"]=e.attributes["stroke-width"],this.attributes["stroke-dasharray"]=e.attributes["stroke-dasharray"],this.shadow_attributes.width=e.shadow_attributes.width,this.shadow_attributes.color=e.shadow_attributes.color,this.lineWidth=e.lineWidth}return this}set fillStyle(t){this.setFillStyle(t)}get fillStyle(){return this.attributes.fill}set strokeStyle(t){this.setStrokeStyle(t)}get strokeStyle(){return this.attributes.stroke}setFont(t,e,i,s){const n=F.validate(t,e,i,s);this.fontCSSString=F.toCSSString(n);const a={"font-family":n.family,"font-size":n.size,"font-weight":n.weight,"font-style":n.style};return this.attributes=Object.assign(Object.assign({},this.attributes),a),this.state=Object.assign(Object.assign({},this.state),a),this}getFont(){return this.fontCSSString}}var ie,se,ne,ae;ee.measureTextCache=new class{constructor(){this.cache={}}lookup(t,e,i){let s=this.cache[t];void 0===s&&(s={},this.cache[t]=s);const n=`${i["font-family"]}%${i["font-size"]}%${i["font-weight"]}%${i["font-style"]}`;let a=s[n];return void 0===a&&(a=this.measureImpl(t,e,i),s[n]=a),a}measureImpl(t,e,i){let s=this.txt;s||(s=document.createElementNS(Zt,"text"),this.txt=s),s.textContent=t,s.setAttributeNS(null,"font-family",i["font-family"]),s.setAttributeNS(null,"font-size",i["font-size"]),s.setAttributeNS(null,"font-style",i["font-style"]),s.setAttributeNS(null,"font-weight",i["font-weight"]),e.appendChild(s);const n=s.getBBox();return e.removeChild(s),{x:n.x,y:n.y,width:n.width,height:n.height}}},function(t){t[t.CANVAS=1]="CANVAS",t[t.SVG=2]="SVG"}(ie||(ie={})),function(t){t[t.NONE=1]="NONE",t[t.UP=2]="UP",t[t.DOWN=3]="DOWN"}(se||(se={}));class oe{constructor(t,e){if(l(t))this.ctx=t;else{if(void 0===e)throw new f("InvalidArgument","Missing backend argument");const i=e;let s;if("string"==typeof t){const e=document.getElementById(t);if(!e)throw new f("BadElementId",`Can't find element with ID "${e}"`);s=e}else s=t;if(i===oe.Backends.CANVAS){if(!$t(s))throw new f("BadElement","CANVAS context requires an HTMLCanvasElement.");const t=s.getContext("2d");if(!t)throw new f("BadElement","Can't get canvas context");this.ctx=new qt(t)}else{if(i!==oe.Backends.SVG)throw new f("InvalidBackend",`No support for backend: ${i}`);if(!Jt(s))throw new f("BadElement","SVG context requires an HTMLDivElement.");this.ctx=new ee(s)}}}static buildContext(t,e,i,s,n="#FFF"){const a=new oe(t,e);i&&s&&a.resize(i,s);const o=a.getContext();return o.setBackgroundFillStyle(n),oe.lastContext=o,o}static getCanvasContext(t,e,i,s){return oe.buildContext(t,oe.Backends.CANVAS,e,i,s)}static getSVGContext(t,e,i,s){return oe.buildContext(t,oe.Backends.SVG,e,i,s)}static drawDashedLine(t,e,i,s,n,a){t.beginPath();const o=s-e,r=n-i,h=Math.atan2(r,o);let c=e,d=i;t.moveTo(e,i);let l=0,g=!0;for(;!(o<0?c<=s:c>=s)||!(r<0?d<=n:d>=n);){const e=a[l++%a.length],i=c+Math.cos(h)*e;c=o<0?Math.max(s,i):Math.min(s,i);const u=d+Math.sin(h)*e;d=r<0?Math.max(n,u):Math.min(n,u),g?t.lineTo(c,d):t.moveTo(c,d),g=!g}t.closePath(),t.stroke()}resize(t,e){return this.ctx.resize(t,e),this}getContext(){return this.ctx}}oe.Backends=ie,oe.LineEndType=se,oe.lastContext=void 0;class re extends Z{constructor(t){super(),this.string_number=t,this.position=Z.Position.ABOVE,this.x_shift=0,this.y_shift=0,this.text_line=0,this.stem_offset=0,this.x_offset=0,this.y_offset=0,this.dashed=!0,this.leg=oe.LineEndType.NONE,this.radius=8,this.drawCircle=!0,this.setWidth(2*this.radius+4),this.resetFont()}static get CATEGORY(){return m.StringNumber}static get metrics(){return V.currentMusicFont().getMetrics().glyphs.stringNumber}static format(t,e){const i=e.left_shift,s=e.right_shift;if(!t||0===t.length)return!1;const n=[];let a=null,o=0,r=0;for(let h=0;he.line-t.line));let h=0,c=0,d=0,l=null,u=null;for(let t=0;tc?e:c):r===Z.Position.RIGHT&&(g.setXShift(h),e+=f,d=e>d?e:d),l=p,u=a}return e.left_shift+=c,e.right_shift+=d,!0}setLineEndType(t){return t>=oe.LineEndType.NONE&&t<=oe.LineEndType.DOWN&&(this.leg=t),this}setStringNumber(t){return this.string_number=t,this}setOffsetX(t){return this.x_offset=t,this}setOffsetY(t){return this.y_offset=t,this}setLastNote(t){return this.last_note=t,this}setDashed(t){return this.dashed=t,this}setDrawCircle(t){return this.drawCircle=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getModifierStartXY(this.position,this.index),s=e.hasStem()?e.getStemDirection():st.UP;let n=i.x+this.x_shift+this.x_offset,a={};e.hasStem()&&(a=e.checkStem().getExtents());let o=i.y+this.y_shift+this.y_offset;switch(this.position){case Z.Position.ABOVE:o=e.getYs().reduce(((t,e)=>tt>e?t:e)),e.hasStem()&&s==st.DOWN&&(o=a.topY-re.metrics.stemPadding),o+=this.radius+re.metrics.verticalPadding+this.text_line*V.STAVE_LINE_DISTANCE;break;case Z.Position.LEFT:n-=this.radius/2+re.metrics.leftPadding;break;case Z.Position.RIGHT:n+=this.radius/2+re.metrics.rightPadding;break;default:throw new f("InvalidPosition",`The position ${this.position} is invalid`)}t.save(),this.drawCircle&&(t.beginPath(),t.arc(n,o,this.radius,0,2*Math.PI,!1),t.setLineWidth(1.5),t.stroke()),t.setFont(this.textFont);const r=n-t.measureText(this.string_number).width/2;t.fillText(""+this.string_number,r,o+4.5);const h=this.last_note;if(u(h)){const i=h.getStemX()-e.getX()+5;let s,a;switch(t.setStrokeStyle("#000000"),t.setLineCap("round"),t.setLineWidth(.6),this.dashed?oe.drawDashedLine(t,n+10,o,n+i,o,[3,3]):oe.drawDashedLine(t,n+10,o,n+i,o,[3,0]),this.leg){case oe.LineEndType.UP:s=-10,a=this.dashed?[3,3]:[3,0],oe.drawDashedLine(t,n+i,o,n+i,o+s,a);break;case oe.LineEndType.DOWN:s=10,a=this.dashed?[3,3]:[3,0],oe.drawDashedLine(t,n+i,o,n+i,o+s,a)}}t.restore()}}re.TEXT_FONT={family:F.SANS_SERIF,size:F.SIZE,weight:N.BOLD,style:D.NORMAL};class he extends Z{constructor(t,e){super(),this.options=Object.assign({all_voices:!0},e),this.all_voices=this.options.all_voices,this.type=t,this.position=Z.Position.LEFT,this.render_options={font_scale:38},this.resetFont(),this.setXShift(0),this.setWidth(10)}static get CATEGORY(){return m.Stroke}static format(t,e){const i=e.left_shift;if(!t||0===t.length)return!1;const s=t.map((t=>{const e=t.getNote(),i=t.checkIndex();if(g(e)){const{line:s}=e.getKeyProps()[i];return{line:s,shift:e.getLeftDisplacedHeadPx(),stroke:t}}if(p(e)){const{str:s}=e.getPositions()[i];return{line:s,shift:0,stroke:t}}throw new f("Internal","Unexpected instance.")})),n=i,a=s.reduce(((t,{stroke:e,shift:i})=>(e.setXShift(n+i),Math.max(e.getWidth()+0,t))),0);return e.left_shift+=a,!0}getPosition(){return this.position}addEndNote(t){return this.note_end=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getModifierStartXY(this.position,this.index);let s=e.getYs(),n=i.y,a=i.y;const o=i.x-5,r=e.checkStave().getSpacingBetweenLines(),h=this.checkModifierContext().getMembers(e.getCategory());for(let t=0;t0){s-=o.map((t=>t.getTextHeight())).reduce(((t,e)=>t>e?t:e))/V.STAVE_LINE_DISTANCE+1}else e.top_text_line+=1;for(let e=0;e=t.line?i.above:i.below}}this.placeGlyphOnLine(s,this.checkStave(),t.line),this.glyphs.push(s);const a=this.xPositions[this.xPositions.length-1],o=s.getMetrics().width+n;this.xPositions.push(a+o),this.width+=o}cancelKey(t){return this.formatted=!1,this.cancelKeySpec=t,this}convertToCancelAccList(t){const e=V.keySignature(t),i=this.accList.length>0&&e.length>0&&e[0].type!==this.accList[0].type,s=i?e.length:e.length-this.accList.length;if(s<1)return;const n=[];for(let t=0;t0?e[0].type:void 0;let s;if(this.cancelKeySpec&&(s=this.convertToCancelAccList(this.cancelKeySpec)),this.alterKeySpec&&this.convertToAlterAccList(this.alterKeySpec),this.accList.length>0){const n=(this.position===bt.END?t.getEndClef():t.getClef())||t.getClef();s&&this.convertAccLines(n,s.type,s.accList),this.convertAccLines(n,i,e);for(let t=0;t0?"PlusSmall":"Plus";break;case"(":s=i.length>0?"ParensLeftSmall":"ParensLeft";break;case")":s=i.length>0?"ParensRightSmall":"ParensRight"}const n=new Q("timeSig"+s,this.timeSignature.point);this.topGlyphs.push(n),r+=null!==(o=n.getMetrics().width)&&void 0!==o?o:0}let h=0;for(let t=0;t0?e.getYForLine(this.timeSignature.topLine):(e.getYForLine(this.timeSignature.topLine)+e.getYForLine(this.timeSignature.bottomLine))/2;for(let t=0;t{const e=t.split("/");if(2!==e.length&&"+"!==e[0]&&"-"!==e[0])throw new f("BadTimeSignature",`Invalid time spec: ${t}. Must be in the form "/"`);e.forEach((e=>{if(0==/^[0-9+\-()]+$/.test(e))throw new f("BadTimeSignature",`Invalid time spec: ${t}. Must contain valid signatures.`)}))})(t);const s=t.split("/");return{num:!0,glyph:this.makeTimeSignatureGlyph(null!==(e=s[0])&&void 0!==e?e:"",null!==(i=s[1])&&void 0!==i?i:"")}}makeTimeSignatureGlyph(t,e){return new ye(this,t,e,"timeSig0",this.point)}getInfo(){return this.info}setTimeSig(t){return this.info=this.parseTimeSpec(t),this}draw(){const t=this.checkStave(),e=t.checkContext();this.setRendered(),e.openGroup("timesignature",this.getAttribute("id")),this.info.glyph.setStave(t),this.info.glyph.setContext(e),this.placeGlyphOnLine(this.info.glyph,t,this.info.line),this.info.glyph.renderToStave(this.x),e.closeGroup()}}const be={[Dt.CATEGORY]:0,[ge.CATEGORY]:1,[ue.CATEGORY]:2,[Te.CATEGORY]:3},we={[Te.CATEGORY]:0,[ue.CATEGORY]:1,[Dt.CATEGORY]:2,[ge.CATEGORY]:3};class ve extends O{constructor(t,e,i,s){super(),this.height=0,this.x=t,this.y=e,this.width=i,this.formatted=!1,this.start_x=t+5,this.end_x=t+i,this.modifiers=[],this.measure=0,this.clef="treble",this.endClef=void 0,this.resetFont(),this.options=Object.assign({vertical_bar_width:10,num_lines:5,fill_style:"#999999",left_bar:!0,right_bar:!0,spacing_between_lines_px:V.STAVE_LINE_DISTANCE,space_above_staff_ln:4,space_below_staff_ln:4,top_text_position:1,bottom_text_position:4,line_config:[]},s),this.bounds={x:this.x,y:this.y,w:this.width,h:0},this.defaultLedgerLineStyle={strokeStyle:"#444",lineWidth:1.4},this.resetLines(),this.addModifier(new Dt(this.options.left_bar?wt.SINGLE:wt.NONE)),this.addEndModifier(new Dt(this.options.right_bar?wt.SINGLE:wt.NONE))}static get CATEGORY(){return m.Stave}static get defaultPadding(){const t=V.currentMusicFont();return t.lookupMetric("stave.padding")+t.lookupMetric("stave.endPaddingMax")}static get rightPadding(){return V.currentMusicFont().lookupMetric("stave.endPaddingMax")}setDefaultLedgerLineStyle(t){this.defaultLedgerLineStyle=t}getDefaultLedgerLineStyle(){return Object.assign(Object.assign({},this.getStyle()),this.defaultLedgerLineStyle)}space(t){return this.options.spacing_between_lines_px*t}resetLines(){this.options.line_config=[];for(let t=0;ti.getWidth()&&(e-=i.getWidth()),e}setRepetitionType(t,e=0){return this.modifiers.push(new pe(t,this.x,e)),this}setVoltaType(t,e,i){return this.modifiers.push(new Se(t,e,this.x,i)),this}setSection(t,e,i=0,s,n=!0){const a=new me(t,this.x+i,e,n);return s&&a.setFontSize(s),this.modifiers.push(a),this}setTempo(t,e){return this.modifiers.push(new fe(t,this.x,e)),this}setText(t,e,i={}){return this.modifiers.push(new xe(t,e,i)),this}getHeight(){return this.height}getSpacingBetweenLines(){return this.options.spacing_between_lines_px}getBoundingBox(){return new C(this.x,this.y,this.width,this.getBottomY()-this.y)}getBottomY(){const t=this.options,e=t.spacing_between_lines_px;return this.getYForLine(t.num_lines)+t.space_below_staff_ln*e}getBottomLineY(){return this.getYForLine(this.options.num_lines)}getYForLine(t){const e=this.options,i=e.spacing_between_lines_px,s=e.space_above_staff_ln;return this.y+t*i+s*i}getLineForY(t){const e=this.options,i=e.spacing_between_lines_px,s=e.space_above_staff_ln;return(t-this.y)/i-s}getYForTopText(t=0){return this.getYForLine(-t-this.options.top_text_position)}getYForBottomText(t=0){return this.getYForLine(this.options.bottom_text_position+t)}getYForNote(t){const e=this.options,i=e.spacing_between_lines_px,s=e.space_above_staff_ln;return this.y+s*i+5*i-t*i}getYForGlyphs(){return this.getYForLine(3)}addModifier(t,e){return void 0!==e&&t.setPosition(e),t.setStave(this),this.formatted=!1,this.modifiers.push(t),this}addEndModifier(t){return this.addModifier(t,bt.END),this}setBegBarType(t){const{SINGLE:e,REPEAT_BEGIN:i,NONE:s}=wt;return t!==e&&t!==i&&t!==s||(this.modifiers[0].setType(t),this.formatted=!1),this}setEndBarType(t){return t!==wt.REPEAT_BEGIN&&(this.modifiers[1].setType(t),this.formatted=!1),this}setClef(t,e,i,s){void 0===s&&(s=bt.BEGIN),s===bt.END?this.endClef=t:this.clef=t;const n=this.getModifiers(s,ge.CATEGORY);return 0===n.length?this.addClef(t,e,i,s):n[0].setType(t,e,i),this}getClef(){return this.clef}setEndClef(t,e,i){return this.setClef(t,e,i,bt.END),this}getEndClef(){return this.endClef}setKeySignature(t,e,i){void 0===i&&(i=bt.BEGIN);const s=this.getModifiers(i,ue.CATEGORY);return 0===s.length?this.addKeySignature(t,e,i):s[0].setKeySig(t,e),this}setEndKeySignature(t,e){return this.setKeySignature(t,e,bt.END),this}setTimeSignature(t,e,i){void 0===i&&(i=bt.BEGIN);const s=this.getModifiers(i,Te.CATEGORY);return 0===s.length?this.addTimeSignature(t,e,i):s[0].setTimeSig(t),this}setEndTimeSignature(t,e){return this.setTimeSignature(t,e,bt.END),this}addKeySignature(t,e,i){return void 0===i&&(i=bt.BEGIN),this.addModifier(new ue(t,e).setPosition(i),i),this}addClef(t,e,i,s){return void 0===s||s===bt.BEGIN?this.clef=t:s===bt.END&&(this.endClef=t),this.addModifier(new ge(t,e,i),s),this}addEndClef(t,e,i){return this.addClef(t,e,i,bt.END),this}addTimeSignature(t,e,i){return this.addModifier(new Te(t,e),i),this}addEndTimeSignature(t,e){return this.addTimeSignature(t,e,bt.END),this}addTrebleGlyph(){return this.addClef("treble"),this}getModifiers(t,e){const i=void 0===t,s=void 0===e;return i&&s?this.modifiers:i?this.modifiers.filter((t=>e===t.getCategory())):s?this.modifiers.filter((e=>t===e.getPosition())):this.modifiers.filter((i=>t===i.getPosition()&&e===i.getCategory()))}sortByCategory(t,e){for(let i=t.length-1;i>=0;i--)for(let s=0;se[t[s+1].getCategory()]){const e=t[s];t[s]=t[s+1],t[s+1]=e}}format(){const t=this.modifiers[0],e=this.modifiers[1],i=this.getModifiers(bt.BEGIN),s=this.getModifiers(bt.END);let n,a,r;this.sortByCategory(i,be),this.sortByCategory(s,we),i.length>1&&t.getType()===wt.REPEAT_BEGIN&&(i.push(i.splice(0,1)[0]),i.splice(0,0,new Dt(wt.SINGLE))),s.indexOf(e)>0&&s.splice(0,0,new Dt(wt.NONE));let h=0,c=this.x;for(let t=0;t0){t.save(),t.setFont(this.textFont);const e=t.measureText(""+this.measure).width;n=this.getYForTopText(0)+3,t.fillText(""+this.measure,this.x-e/2,n),t.restore()}return t.closeGroup(),this}getVerticalBarWidth(){return this.options.vertical_bar_width}getConfigForLines(){return this.options.line_config}setConfigForLine(t,e){if(t>=this.options.num_lines||t<0)throw new f("StaveConfigError","The line number must be within the range of the number of lines in the Stave.");if(void 0===e.visible)throw new f("StaveConfigError","The line configuration object is missing the 'visible' property.");if("boolean"!=typeof e.visible)throw new f("StaveConfigError","The line configuration objects 'visible' property must be true or false.");return this.options.line_config[t]=e,this}setConfigForLines(t){if(t.length!==this.options.num_lines)throw new f("StaveConfigError","The length of the lines configuration array must match the number of lines in the Stave");for(const e in t)null==t[e].visible&&(t[e]=this.options.line_config[e]),this.options.line_config[e]=Object.assign(Object.assign({},this.options.line_config[e]),t[e]);return this.options.line_config=t,this}static formatBegModifiers(t){let e=0;t.forEach((t=>{t.getNoteStartX()>e&&(e=t.getNoteStartX())})),t.forEach((t=>{t.setNoteStartX(e)})),e=0,t.forEach((t=>{t.getModifiers(bt.BEGIN,m.Barline).forEach((t=>{t.getType()==wt.REPEAT_BEGIN&&t.getX()>e&&(e=t.getX())}))})),t.forEach((t=>{t.getModifiers(bt.BEGIN,m.Barline).forEach((t=>{t.getType()==wt.REPEAT_BEGIN&&t.setX(e)}))})),e=0,t.forEach((t=>{t.getModifiers(bt.BEGIN,m.TimeSignature).forEach((t=>{t.getX()>e&&(e=t.getX())}))})),t.forEach((t=>{t.getModifiers(bt.BEGIN,m.TimeSignature).forEach((t=>{t.setX(e)}))}))}}function Ee(t,e,i,s,n){if(e!==Ce.type.BOLD_DOUBLE_LEFT&&e!==Ce.type.BOLD_DOUBLE_RIGHT)throw new f("InvalidConnector","A REPEAT_BEGIN or REPEAT_END type must be provided.");let a=3,o=3.5;e===Ce.type.BOLD_DOUBLE_RIGHT&&(a=-5,o=3),t.fillRect(i+a,s,1,n-s),t.fillRect(i-2,s,o,n-s)}ve.TEXT_FONT={family:F.SANS_SERIF,size:8,weight:N.NORMAL,style:D.NORMAL};class Ce extends O{constructor(t,e){super(),this.thickness=V.STAVE_LINE_THICKNESS,this.width=3,this.top_stave=t,this.bottom_stave=e,this.type=Ce.type.DOUBLE,this.resetFont(),this.x_shift=0,this.texts=[]}static get CATEGORY(){return m.StaveConnector}setType(t){const e="string"==typeof t?Ce.typeString[t]:t;return Object.values(Ce.type).includes(e)&&(this.type=e),this}getType(){return this.type}setText(t,e={}){return this.texts.push({content:t,options:Object.assign({shift_x:0,shift_y:0},e)}),this}setXShift(t){if("number"!=typeof t)throw new f("InvalidType","x_shift must be a Number");return this.x_shift=t,this}getXShift(){return this.x_shift}draw(){const t=this.checkContext();this.setRendered();let e=this.top_stave.getYForLine(0),i=this.bottom_stave.getYForLine(this.bottom_stave.getNumLines()-1)+this.thickness,s=this.width,n=this.top_stave.getX();(this.type===Ce.type.SINGLE_RIGHT||this.type===Ce.type.BOLD_DOUBLE_RIGHT||this.type===Ce.type.THIN_DOUBLE)&&(n=this.top_stave.getX()+this.top_stave.getWidth());let a=i-e;switch(this.type){case Ce.type.SINGLE:case Ce.type.SINGLE_LEFT:case Ce.type.SINGLE_RIGHT:s=1;break;case Ce.type.DOUBLE:n-=this.width+2,e-=this.thickness,a+=.5;break;case Ce.type.BRACE:{s=12;const n=this.top_stave.getX()-2+this.x_shift,o=e,r=n,h=i,c=n-s,d=o+a/2,l=c-.9*s,g=o+.2*a,u=n+1.1*s,p=d-.135*a,m=u,f=d+.135*a,_=l,x=h-.2*a,S=c-s,y=x,T=n+.4*s,b=d+.135*a,w=T,v=d-.135*a,E=S,C=g;t.beginPath(),t.moveTo(n,o),t.bezierCurveTo(l,g,u,p,c,d),t.bezierCurveTo(m,f,_,x,r,h),t.bezierCurveTo(S,y,T,b,c,d),t.bezierCurveTo(w,v,E,C,n,o),t.fill(),t.stroke();break}case Ce.type.BRACKET:e-=6,i+=6,a=i-e,Q.renderGlyph(t,n-5,e,40,"bracketTop"),Q.renderGlyph(t,n-5,i,40,"bracketBottom"),n-=this.width+2;break;case Ce.type.BOLD_DOUBLE_LEFT:Ee(t,this.type,n+this.x_shift,e,i-this.thickness);break;case Ce.type.BOLD_DOUBLE_RIGHT:Ee(t,this.type,n,e,i-this.thickness);break;case Ce.type.THIN_DOUBLE:s=1,a-=this.thickness;break;case Ce.type.NONE:break;default:throw new f("InvalidType",`The provided StaveConnector.type (${this.type}) is invalid.`)}this.type!==Ce.type.BRACE&&this.type!==Ce.type.BOLD_DOUBLE_LEFT&&this.type!==Ce.type.BOLD_DOUBLE_RIGHT&&this.type!==Ce.type.NONE&&t.fillRect(n,e,s,a),this.type===Ce.type.THIN_DOUBLE&&t.fillRect(n-3,e,s,a),t.save(),t.setLineWidth(2),t.setFont(this.textFont);for(let e=0;et.reduce(((t,e)=>t+e),0);function Ne(t,e,i,s){let n=e;for(let e=i+1;e{e.addToModifierContext(new le);const s=(new Vt).addTickable(e).preFormat(),n=s.getMetrics();return s.setX(t+n.totalLeftPx),t+s.getWidth()+n.totalRightPx+i}),e)}static plotDebugging(t,e,i,s,n,a){const o=i+(a=Object.assign({stavePadding:V.currentMusicFont().lookupMetric("stave.padding")},a)).stavePadding,r=e.contextGaps;t.save(),t.setFont(F.SANS_SERIF,8),r.gaps.forEach((e=>{var i,a,r;i=o+e.x1,a=o+e.x2,r="rgba(100,200,100,0.4)",t.beginPath(),t.setStrokeStyle(r),t.setFillStyle(r),t.setLineWidth(1),t.fillRect(i,s,Math.max(a-i,0),n-s),t.setFillStyle("green"),t.fillText(Math.round(e.x2-e.x1).toString(),o+e.x1,n+12)})),t.setFillStyle("red"),t.fillText(`Loss: ${(e.totalCost||0).toFixed(2)} Shift: ${(e.totalShift||0).toFixed(2)} Gap: ${r.total.toFixed(2)}`,o-20,n+27),t.restore()}static FormatAndDraw(t,e,i,s){let n={auto_beam:!1,align_rests:!1};"object"==typeof s?n=Object.assign(Object.assign({},n),s):"boolean"==typeof s&&(n.auto_beam=s);const a=new Yt(V.TIME4_4).setMode(Yt.Mode.SOFT).addTickables(i),o=n.auto_beam?Oe.applyAndGetBeams(a):[];return(new De).joinVoices([a]).formatToStave([a],e,{align_rests:n.align_rests,stave:e}),a.setStave(e).draw(t,e),o.forEach((e=>e.setContext(t).draw())),a.getBoundingBox()}static FormatAndDrawTab(t,e,i,s,n,a,o){let r={auto_beam:a,align_rests:!1};"object"==typeof o?r=Object.assign(Object.assign({},r),o):"boolean"==typeof o&&(r.auto_beam=o);const h=new Yt(V.TIME4_4).setMode(Yt.Mode.SOFT).addTickables(n),c=new Yt(V.TIME4_4).setMode(Yt.Mode.SOFT).addTickables(s),d=r.auto_beam?Oe.applyAndGetBeams(h):[];(new De).joinVoices([h]).joinVoices([c]).formatToStave([h,c],i,{align_rests:r.align_rests}),h.draw(t,i),c.draw(t,e),d.forEach((e=>e.setContext(t).draw())),new Ce(i,e).setContext(t).draw()}static AlignRestsToNotes(t,e,i){t.forEach(((s,n)=>{if(g(s)&&s.isRest()){if(s.getTuplet()&&!i)return;const a=s.getGlyph().position.toUpperCase();if("R/4"!==a&&"B/4"!==a)return;if(e||s.getBeam()){const e=s.getKeyProps()[0];if(0===n)e.line=Ne(t,e.line,n,!1);else if(n>0&&nDe.AlignRestsToNotes(t.getTickables(),e)))}preCalculateMinTotalWidth(t){const e=V.currentMusicFont().lookupMetric("stave.unalignedNotePadding");let i=0,s=0,n=0;const a=[],o=[];if(this.hasMinTotalWidth)return this.minTotalWidth;if(!t)throw new f("BadArgument","'voices' required to run preCalculateMinTotalWidth");this.createTickContexts(t);const{list:r,map:h}=this.tickContexts;this.minTotalWidth=0,r.forEach((e=>{const r=h[e];r.preFormat(),r.getTickables().length{s+=t.getMetrics().width,n+=t.getTicks().value(),a.push(t.getMetrics().width),o.push(t.getTicks().value())}));const c=r.getWidth();this.minTotalWidth+=c})),this.hasMinTotalWidth=!0;const c=s>0?s/a.length:1/a.length,d=ke(a.map((t=>Math.pow(t-c,2)))),l=Math.pow(d/a.length,.5)/c,g=n/o.length,u=ke(o.map((t=>Math.pow(t-g,2)))),p=Math.pow(u/o.length,.5)/g,m=Math.max(p,l)*r.length*e,_=e*i;return this.minTotalWidth+Math.max(_,m)}getMinTotalWidth(){if(!this.hasMinTotalWidth)throw new f("NoMinTotalWidth","Call 'preCalculateMinTotalWidth' or 'preFormat' before calling 'getMinTotalWidth'");return this.minTotalWidth}static getResolutionMultiplier(t){if(!t||!t.length)throw new f("BadArgument","No voices to format");const e=t[0].getTotalTicks();return t.reduce(((t,i)=>{if(!i.getTotalTicks().equals(e))throw new f("TickMismatch","Voices should have same total note duration in ticks.");if(i.getMode()===Yt.Mode.STRICT&&!i.isComplete())throw new f("IncompleteVoice","Voice does not have enough notes.");return Math.max(t,v.LCM(t,i.getResolutionMultiplier()))}),1)}createModifierContexts(t){if(0==t.length)return;const e=De.getResolutionMultiplier(t),i=new Map,s=[];t.forEach((t=>{const n=new v(0,e);t.getTickables().forEach((t=>{const e=n.numerator;let a=i.get(t.getStave());if(a||(i.set(t.getStave(),{}),a=i.get(t.getStave())),!(a?a[e]:void 0)){const t=new le;s.push(t),a[e]=t}t.addToModifierContext(a[e]),n.add(t.getTicks())}))})),this.modifierContexts.push({map:i,array:s,resolutionMultiplier:e})}createTickContexts(t){const e=function(t,e,i){if(0==t.length)return{map:{},array:[],list:[],resolutionMultiplier:0};const s={},n=[],a=[],o=De.getResolutionMultiplier(t);return t.forEach(((t,r)=>{const h=new v(0,o);t.getTickables().forEach((t=>{const o=h.numerator;if(!s[o]){const t=e({tickID:o});a.push(t),s[o]=t,n.push(o)}i(t,s[o],r),h.add(t.getTicks())}))})),{map:s,array:a,list:n.sort(((t,e)=>t-e)),resolutionMultiplier:o}}(t,(t=>new Vt(t)),((t,e,i)=>e.addTickable(t,i)));this.tickContexts=e;const i=this.tickContexts.array;return i.forEach((t=>{t.tContexts=i})),e}getTickContexts(){return this.tickContexts}preFormat(t=0,e,i,s){const n=this.tickContexts;if(!n)throw new f("NoTickContexts","preFormat requires TickContexts");const{list:a,map:o}=n;this.lossHistory=[],i&&s&&i.forEach((t=>t.setStave(s).preFormat()));let r=0,h=0;this.minTotalWidth=0;let c=0;a.forEach((t=>{const e=o[t];e.preFormat();const i=e.getWidth();this.minTotalWidth+=i;const s=e.getMaxTicks().value();c+=s;const n=e.getMetrics();r=r+h+n.totalLeftPx,e.setX(r),h=i-n.totalLeftPx}));const{globalSoftmax:d,softmaxFactor:l,maxIterations:g}=this.formatterOptions,u=ke(a.map((t=>Math.pow(l,o[t].getMaxTicks().value()/c))));if(this.minTotalWidth=r+h,this.hasMinTotalWidth=!0,t<=0)return this.evaluate();const p=o[a[0]],m=o[a[a.length-1]];function _(t){return a.map(((e,i)=>{const s=o[e],n=s.getTickablesByVoice();let r;if(i>0){const e=o[a[i-1]];for(let h=i-1;h>=0;h--){const i=o[a[h]].getTickablesByVoice(),g=[];if(Object.keys(n).forEach((t=>{i[t]&&g.push(t)})),g.length>0){let a=0,o=1/0,h=0;if(g.forEach((t=>{const e=i[t].getTicks().value();e>a&&(r=i[t],a=e);const s=n[t],h=s.getX()-(s.getMetrics().modLeftPx+s.getMetrics().leftDisplacedHeadPx),c=i[t].getMetrics(),d=i[t].getX()+c.notePx+c.modRightPx+c.rightDisplacedHeadPx;o=Math.min(o,h-d)})),o=Math.min(o,s.getX()-(e.getX()+.05*t)),d){const e=c;h=Math.pow(l,a/e)/u*t}else void 0!==r&&(h=r.getVoice().softmax(a)*t);return{expectedDistance:h,maxNegativeShiftPx:o,fromTickable:r}}}}return{expectedDistance:0,fromTickablePx:0,maxNegativeShiftPx:0}}))}function S(t){const e=y/2;let i=0;return a.forEach(((s,n)=>{const a=o[s];if(n>0){const e=a.getX(),s=t[n],o=x(s.fromTickable).getX()+s.expectedDistance-(e+i);let r=0;o>0?i+=o:o<0&&(r=Math.min(s.maxNegativeShiftPx,Math.abs(o)),i+=-r),a.setX(e+i)}a.getCenterAlignedTickables().forEach((t=>{t.setCenterXShift(e-a.getX())}))})),m.getX()-p.getX()}const y=t-m.getMetrics().notePx-m.getMetrics().totalRightPx-p.getMetrics().totalLeftPx,T=V.currentMusicFont(),b=T.lookupMetric("stave.endPaddingMin"),w=T.lookupMetric("stave.endPaddingMax"),v=T.lookupMetric("stave.padding");let E=y;const C=_(E);let k=S(C);if(1===a.length)return 0;const N=((t,e)=>{let i=t/2;if(e.length>1)for(let t=1;t{let e=0;const i=m&&m.getMaxTickable();if(i){const s=i.getVoice();if(s.getTicksUsed().value()>s.getTotalTicks().value())return 2*wM&&F>0||k+A1;)E-=k-M,A=D(E),P=A-(w-b),k=S(_(E)),F--;return this.justifyWidth=t,this.evaluate()}evaluate(){const t=this.tickContexts,e=this.justifyWidth;this.contextGaps={total:0,gaps:[]},t.list.forEach(((e,i)=>{if(0===i)return;const s=t.list[i-1],n=t.map[s],a=t.map[e],o=n.getMetrics(),r=a.getMetrics(),h=n.getX()+o.notePx+o.totalRightPx,c=a.getX()-r.totalLeftPx,d=c-h;this.contextGaps.total+=d,this.contextGaps.gaps.push({x1:h,x2:c}),a.getFormatterMetrics().freedom.left=d,n.getFormatterMetrics().freedom.right=d})),this.durationStats={};const i=this.durationStats;this.voices.forEach((t=>{t.getTickables().forEach(((t,s,n)=>{const a=t.getTicks().clone().simplify().toString(),o=t.getMetrics(),r=t.getFormatterMetrics(),h=t.getX()+o.notePx+o.modRightPx+o.rightDisplacedHeadPx;let c=0;if(s{t.getTickables().forEach((t=>{const e=t.getTicks().clone().simplify().toString(),n=t.getFormatterMetrics();n.space.mean=i[e].mean,n.duration=e,n.iterations+=1,n.space.deviation=n.space.used-n.space.mean,s+=Math.pow(n.space.deviation,2)}))})),this.totalCost=Math.sqrt(s),this.lossHistory.push(this.totalCost),this.totalCost}tune(t){var e;const i=this.tickContexts;if(!i)return 0;const s=null!==(e=null==t?void 0:t.alpha)&&void 0!==e?e:.5;let n=0;return this.totalShift=0,i.list.forEach(((t,e,a)=>{const o=i.map[t],r=e>0?i.map[a[e-1]]:void 0,h=et.getFormatterMetrics().space.deviation)));c>0?n=-Math.min(o.getFormatterMetrics().freedom.right,Math.abs(c)):c<0&&(n=h?Math.min(h.getFormatterMetrics().freedom.right,Math.abs(c)):0),n*=s,this.totalShift+=n})),this.evaluate()}postFormat(){return this.modifierContexts.forEach((t=>{t.array.forEach((t=>t.postFormat()))})),this.tickContexts.list.forEach((t=>{this.tickContexts.map[t].postFormat()})),this}joinVoices(t){return this.createModifierContexts(t),this.hasMinTotalWidth=!1,this}format(t,e,i){const s=Object.assign({align_rests:!1},i);this.voices=t;const n=this.formatterOptions.softmaxFactor;return n&&this.voices.forEach((t=>t.setSoftmaxFactor(n))),this.alignRests(t,s.align_rests),this.createTickContexts(t),this.preFormat(e,s.context,t,s.stave),s.stave&&this.postFormat(),this}formatToStave(t,e,i){const s=Object.assign({context:e.getContext()},i),n=e.getNoteEndX()-e.getNoteStartX()-ve.defaultPadding;return function(...t){De.DEBUG&&S("Vex.Flow.Formatter",t)}("Formatting voices to width: ",n),this.format(t,n,s)}getTickContext(t){var e;return null===(e=this.tickContexts)||void 0===e?void 0:e.map[t]}}var Ae;De.DEBUG=!1,function(t){t[t.BOTTOM=-1]="BOTTOM",t[t.TOP=1]="TOP"}(Ae||(Ae={}));class Pe extends O{constructor(t,e={}){if(super(),this.numerator_glyphs=[],this.denom_glyphs=[],!t||!t.length)throw new f("BadArguments","No notes provided for tuplet.");this.options=e,this.notes=t,this.num_notes=null!=this.options.num_notes?this.options.num_notes:t.length,this.options.beats_occupied&&this.beatsOccupiedDeprecationWarning(),this.notes_occupied=this.options.notes_occupied||this.options.beats_occupied||2,null!=this.options.bracketed?this.bracketed=this.options.bracketed:this.bracketed=t.some((t=>!t.hasBeam())),this.ratioed=null!=this.options.ratioed?this.options.ratioed:Math.abs(this.notes_occupied-this.num_notes)>1,this.point=V.currentMusicFont().lookupMetric("digits.tupletPoint"),this.y_pos=16,this.x_pos=100,this.width=200,this.setTupletLocation(this.options.location||Pe.LOCATION_TOP),De.AlignRestsToNotes(t,!0,!0),this.resolveGlyphs(),this.attach()}static get CATEGORY(){return m.Tuplet}static get LOCATION_TOP(){return Ae.TOP}static get LOCATION_BOTTOM(){return Ae.BOTTOM}static get NESTING_OFFSET(){return 15}static get metrics(){return V.currentMusicFont().getMetrics().glyphs.tuplet}attach(){for(let t=0;t=1;)this.numerator_glyphs.unshift(new Q("timeSig"+t%10,this.point)),t=parseInt((t/10).toString(),10);for(this.denom_glyphs=[],t=this.notes_occupied;t>=1;)this.denom_glyphs.unshift(new Q("timeSig"+t%10,this.point)),t=parseInt((t/10).toString(),10)}getNestedTupletCount(){const t=this.location,e=this.notes[0];let i=n(e,t),s=n(e,t);function n(t,e){return t.getTupletStack().filter((t=>t.location===e)).length}return this.notes.forEach((e=>{const a=n(e,t);i=a>i?a:i,s=a0&&(s=Math.min(a,s))}}}else{let t=Pe.metrics.bottomLine;this.notes.forEach((e=>{const i=e.getModifierContext();i&&(t=Math.max(t,i.getState().text_line+1))})),s=i.checkStave().getYForLine(t)+Pe.metrics.noteHeadOffset;for(let t=0;ts&&(s=e)}}return s+t+e}draw(){const t=this.checkContext();this.setRendered();const e=this.notes[0],i=this.notes[this.notes.length-1];this.bracketed?(this.x_pos=e.getTieLeftX()-5,this.width=i.getTieRightX()-this.x_pos+5):(this.x_pos=e.getStemX(),this.width=i.getStemX()-this.x_pos),this.y_pos=this.getYPosition();const s=(t,e)=>t+x(e.getMetrics().width);let n=this.numerator_glyphs.reduce(s,0);this.ratioed&&(n=this.denom_glyphs.reduce(s,n),n+=.32*this.point);const a=this.x_pos+this.width/2-n/2;if(this.bracketed){const e=this.width/2-n/2-5;e>0&&(t.fillRect(this.x_pos,this.y_pos,e,1),t.fillRect(this.x_pos+this.width/2+n/2+5,this.y_pos,e,1),t.fillRect(this.x_pos,this.y_pos+(this.location===Pe.LOCATION_BOTTOM?1:0),1,10*this.location),t.fillRect(this.x_pos+this.width,this.y_pos+(this.location===Pe.LOCATION_BOTTOM?1:0),1,10*this.location))}const o=V.currentMusicFont().lookupMetric("digits.shiftY",0);let r=0;if(this.numerator_glyphs.forEach((e=>{e.render(t,a+r,this.y_pos+this.point/3-2+o),r+=x(e.getMetrics().width)})),this.ratioed){const e=a+r+.16*this.point,i=.06*this.point;t.beginPath(),t.arc(e,this.y_pos-.08*this.point,i,0,2*Math.PI,!1),t.closePath(),t.fill(),t.beginPath(),t.arc(e,this.y_pos+.12*this.point,i,0,2*Math.PI,!1),t.closePath(),t.fill(),r+=.32*this.point,this.denom_glyphs.forEach((e=>{e.render(t,a+r,this.y_pos+this.point/3-2+o),r+=x(e.getMetrics().width)}))}}}function Me(t){let e=0;return t.forEach((t=>{t.keyProps&&t.keyProps.forEach((t=>{e+=t.line-3}))})),e>=0?st.DOWN:st.UP}const Fe="L",Re="R",Be="B";class Oe extends O{constructor(t,e=!1){if(super(),this.slope=0,this.y_shift=0,this.forcedPartialDirections={},!t||0===t.length)throw new f("BadArguments","No notes provided for beam.");if(1===t.length)throw new f("BadArguments","Too few notes for beam.");if(this.ticks=t[0].getIntrinsicTicks(),this.ticks>=V.durationToTicks("4"))throw new f("BadArguments","Beams can only be applied to notes shorter than a quarter note.");let i,s;for(this.stem_direction=st.UP,i=0;it+e.getStemDirection()),0);n=e>-1?st.UP:st.DOWN}for(i=0;i(new v).parse(t)));{const e=parseInt(t.split("/")[0],10),i=parseInt(t.split("/")[1],10);if(e%3==0)return[new v(3,i)];if(i>4)return[new v(2,i)];if(i<=4)return[new v(1,i)]}return[new v(1,4)]}static applyAndGetBeams(t,e,i){return Oe.generateBeams(t.getTickables(),{groups:i,stem_direction:e})}static generateBeams(t,e={}){e.groups&&e.groups.length||(e.groups=[new v(2,8)]);const i=e.groups.map((t=>{if(!t.multiply)throw new f("InvalidBeamGroups","The beam groups must be an array of Vex.Flow.Fractions");return t.clone().multiply(V.RESOLUTION,1)})),s=t;let n=0,a=[],o=[];function r(){i.length-1>n?n+=1:n=0}!function(){let t=[],e=new v(0,1);s.forEach((s=>{if(t=[],s.shouldIgnoreTicks())return a.push(o),void(o=t);o.push(s);const h=i[n].clone(),c=(d=o,d.reduce(((t,e)=>e.getTicks().clone().add(t)),new v(0,1))).add(e);var d;const l=V.durationToNumber(s.getDuration())<8;if(l&&s.getTuplet()&&(h.numerator*=2),c.greaterThan(h)){if(!l){const e=o.pop();e&&t.push(e)}a.push(o);do{e=c.subtract(i[n]),r()}while(e.greaterThanEquals(i[n]));o=t}else c.equals(h)&&(a.push(o),e=new v(0,1),o=t,r())})),o.length>0&&a.push(o)}(),function(){const t=[];a.forEach((i=>{let s=[];i.forEach(((i,n,a)=>{const o=0===n||n===a.length-1,r=a[n-1],h=!e.beam_rests&&i.isRest(),c=e.beam_rests&&e.beam_middle_only&&i.isRest()&&o;let d=!1;if(e.maintain_stem_directions&&r&&!i.isRest()&&!r.isRest()){const t=r.getStemDirection();d=i.getStemDirection()!==t}const l=parseInt(i.getDuration(),10)<8;h||c||d||l?(s.length>0&&t.push(s),s=d?[i]:[]):s.push(i)})),s.length>0&&t.push(s)})),a=t}(),a.forEach((t=>{let i;if(e.maintain_stem_directions){const e=function(t){for(let e=0;e{t.setStemDirection(e)}))}(t,i)}));const h=a.filter((t=>{if(t.length>1){let e=!0;return t.forEach((t=>{t.getIntrinsicTicks()>=V.durationToTicks("4")&&(e=!1)})),e}return!1})),c=function(){const t=[];return a.forEach((e=>{let i;e.forEach((e=>{const s=e.getTuplet();s&&i!==s&&(i=s,t.push(i))}))})),t}(),d=[];return h.forEach((t=>{const i=new Oe(t);e.show_stemlets&&(i.render_options.show_stemlets=!0),e.secondary_breaks&&(i.render_options.secondary_break_ticks=V.durationToTicks(e.secondary_breaks)),!0===e.flat_beams&&(i.render_options.flat_beams=!0,i.render_options.flat_beam_offset=e.flat_beam_offset),d.push(i)})),c.forEach((t=>{const e=t.notes[0].stem_direction===st.DOWN?Ae.BOTTOM:Ae.TOP;t.setTupletLocation(e);let i=!1;for(let e=0;et.getGlyph().beam_count)).reduce(((t,e)=>e>t?e:t))}breakSecondaryAt(t){return this.break_on_indices=t,this}setPartialBeamSideAt(t,e){return this.forcedPartialDirections[t]=e,this}unsetPartialBeamSideAt(t){return delete this.forcedPartialDirections[t],this}getSlopeY(t,e,i,s){return i+(t-e)*s}calculateSlope(){const{notes:t,stem_direction:e,render_options:{max_slope:i,min_slope:s,slope_iterations:n,slope_cost:a}}=this,o=t[0],r=function(t,e){const i=t.getStemExtents().topY,s=t.getStemX();return(e.getStemExtents().topY-i)/(e.getStemX()-s)}(o,t[t.length-1]),h=(i-s)/n;let c=Number.MAX_VALUE,d=0,l=0;for(let n=s;n<=i;n+=h){let i=0,s=0;for(let a=1;an)&&(h=n,o=Math.min(...s.getYs()),r=s.getBeamCount())}let c=a/t.length;const d=s+r*(1.5*i),l=o+d*-e;e===st.DOWN&&cl&&(c=o-d),n?(e===st.DOWN&&c>n||e===st.UP&&c=8&&(d=-1!==this.break_on_indices.indexOf(h),this.render_options.secondary_break_ticks&&r>=this.render_options.secondary_break_ticks&&(r=0,d=!0));const l=c.getIntrinsicTicks(){const i=e.getStem();if(i){const s=e.getStemX();i.setNoteHeadXBounds(s,s),i.setContext(t).draw()}}),this)}drawBeamLines(t){const e=["4","8","16","32","64"],i=this.notes[0];let s=this.getBeamYToDraw();const n=i.getStemX(),a=this.render_options.beam_width*this.stem_direction;for(let i=0;i0||!0===e;return!e||n>0||(this.pos=s),o?this.matchSuccess():this.matchFail(s),{success:o,results:i,numMatches:n}}expectZeroOrMore(t){return this.expectOneOrMore(t,!0)}expect(t){if(Ue("Evaluating rule function:",t),!t)throw new f("Invalid rule function");let e;const i=t.bind(this.grammar)();if(i.token)e=this.matchToken(i.token,!0===i.noSpace),e.success&&(this.pos+=e.incrementPos);else{if(!i.expect)throw Ue(i),new f("Bad grammar! No `token` or `expect` property "+i);e=i.oneOrMore?this.expectOneOrMore(i):i.zeroOrMore?this.expectZeroOrMore(i):this.expectOne(i)}const s=[];return e.matches=s,e.results&&e.results.forEach((t=>s.push(He(t)))),i.run&&e.success&&i.run({matches:s}),e}}function je(...t){qe.DEBUG&&S("Vex.Flow.EasyScore",t)}Ye.DEBUG=!1;class Xe{constructor(t){this.builder=t}begin(){return this.LINE}LINE(){return{expect:[this.PIECE,this.PIECES,this.EOL]}}PIECE(){return{expect:[this.CHORDORNOTE,this.PARAMS],run:()=>this.builder.commitPiece()}}PIECES(){return{expect:[this.COMMA,this.PIECE],zeroOrMore:!0}}PARAMS(){return{expect:[this.DURATION,this.TYPE,this.DOTS,this.OPTS]}}CHORDORNOTE(){return{expect:[this.CHORD,this.SINGLENOTE],or:!0}}CHORD(){return{expect:[this.LPAREN,this.NOTES,this.RPAREN],run:t=>this.builder.addChord(t.matches[1])}}NOTES(){return{expect:[this.NOTE],oneOrMore:!0}}NOTE(){return{expect:[this.NOTENAME,this.ACCIDENTAL,this.OCTAVE]}}SINGLENOTE(){return{expect:[this.NOTENAME,this.ACCIDENTAL,this.OCTAVE],run:t=>{const e=t;this.builder.addSingleNote(e.matches[0],e.matches[1],e.matches[2])}}}ACCIDENTAL(){return{expect:[this.MICROTONES,this.ACCIDENTALS],maybe:!0,or:!0}}DOTS(){return{expect:[this.DOT],zeroOrMore:!0,run:t=>this.builder.setNoteDots(t.matches)}}TYPE(){return{expect:[this.SLASH,this.MAYBESLASH,this.TYPES],maybe:!0,run:t=>this.builder.setNoteType(t.matches[2])}}DURATION(){return{expect:[this.SLASH,this.DURATIONS],maybe:!0,run:t=>this.builder.setNoteDuration(t.matches[1])}}OPTS(){return{expect:[this.LBRACKET,this.KEYVAL,this.KEYVALS,this.RBRACKET],maybe:!0}}KEYVALS(){return{expect:[this.COMMA,this.KEYVAL],zeroOrMore:!0}}KEYVAL(){return{expect:[this.KEY,this.EQUALS,this.VAL],run:t=>this.builder.addNoteOption(t.matches[0],t.matches[2].slice(1,-1))}}VAL(){return{expect:[this.SVAL,this.DVAL],or:!0}}KEY(){return{token:"[a-zA-Z][a-zA-Z0-9]*"}}DVAL(){return{token:'["][^"]*["]'}}SVAL(){return{token:"['][^']*[']"}}NOTENAME(){return{token:"[a-gA-G]"}}OCTAVE(){return{token:"[0-9]+"}}ACCIDENTALS(){return{token:"bb|b|##|#|n"}}MICROTONES(){return{token:"bbs|bss|bs|db|d|\\+\\+-|\\+-|\\+\\+|\\+|k|o"}}DURATIONS(){return{token:"[0-9whq]+"}}TYPES(){return{token:"[rRsSmMhHgG]"}}LPAREN(){return{token:"[(]"}}RPAREN(){return{token:"[)]"}}COMMA(){return{token:"[,]"}}DOT(){return{token:"[.]"}}SLASH(){return{token:"[/]"}}MAYBESLASH(){return{token:"[/]?"}}EQUALS(){return{token:"[=]"}}LBRACKET(){return{token:"\\["}}RBRACKET(){return{token:"\\]"}}EOL(){return{token:"$"}}}class Ve{constructor(t){this.chord=[],this.dots=0,this.options={},this.duration=t}}class ze{constructor(t){this.commitHooks=[],this.factory=t,this.reset()}reset(t){this.options=Object.assign({stem:"auto",clef:"treble"},t),this.elements={notes:[],accidentals:[]},this.rollingDuration="8",this.resetPiece()}getFactory(){return this.factory}getElements(){return this.elements}addCommitHook(t){this.commitHooks.push(t)}resetPiece(){je("resetPiece"),this.piece=new Ve(this.rollingDuration)}setNoteDots(t){je("setNoteDots:",t),t&&(this.piece.dots=t.length)}setNoteDuration(t){je("setNoteDuration:",t),this.rollingDuration=this.piece.duration=t||this.rollingDuration}setNoteType(t){je("setNoteType:",t),t&&(this.piece.type=t)}addNoteOption(t,e){je("addNoteOption: key:",t,"value:",e),this.piece.options[t]=e}addNote(t,e,i){je("addNote:",t,e,i),this.piece.chord.push({key:t,accid:e,octave:i})}addSingleNote(t,e,i){je("addSingleNote:",t,e,i),this.addNote(t,e,i)}addChord(t){je("startChord"),"object"!=typeof t[0]?this.addSingleNote(t[0]):t.forEach((t=>{t&&this.addNote(...t)})),je("endChord")}commitPiece(){je("commitPiece");const{factory:t}=this;if(!t)return;const e=Object.assign(Object.assign({},this.options),this.piece.options),i=x(e.stem,"BadArguments","options.stem is not defined").toLowerCase(),s=x(e.clef,"BadArguments","options.clef is not defined").toLowerCase(),{chord:n,duration:a,dots:o,type:r}=this.piece,h=tt.accidentals,c=n.map((t=>{var e;return t.key+(h.includes(null!==(e=t.accid)&&void 0!==e?e:"")?t.accid:"")+"/"+t.octave})),d="auto"===i,l="g"==(null==r?void 0:r.toLowerCase())?t.GhostNote({duration:a,dots:o}):t.StaveNote({keys:c,duration:a,dots:o,type:r,clef:s,auto_stem:d});d||l.setStemDirection("up"===i?st.UP:st.DOWN);const g=[];n.forEach(((e,i)=>{const s=e.accid;if("string"==typeof s){const e=t.Accidental({type:s});l.addModifier(e,i),g.push(e)}else g.push(void 0)}));for(let t=0;tt(e,l,this))),this.elements.notes.push(l),this.elements.accidentals.push(g),this.resetPiece()}}function Ke(t,e){void 0!==t.id&&e.setAttribute("id",t.id)}const $e=/\s*,\s*/;function Je(t,e){void 0!==t.class&&t.class.split($e).forEach((t=>e.addClass(t)))}class qe{constructor(t={}){this.defaults={clef:"treble",time:"4/4",stem:"auto"},this.setOptions(t)}set(t){return this.defaults=Object.assign(Object.assign({},this.defaults),t),this}setOptions(t){var e,i;const s=t.factory,n=null!==(e=t.builder)&&void 0!==e?e:new ze(s);return this.options=Object.assign(Object.assign({commitHooks:[Ke,Je,_t.easyScoreHook,Bt.easyScoreHook],throwOnError:!1},t),{factory:s,builder:n}),this.factory=s,this.builder=n,this.grammar=new Xe(this.builder),this.parser=new Ye(this.grammar),null===(i=this.options.commitHooks)||void 0===i||i.forEach((t=>this.addCommitHook(t))),this}setContext(t){return this.factory.setContext(t),this}parse(t,e={}){this.builder.reset(e);const i=this.parser.parse(t);if(!i.success&&this.options.throwOnError)throw je(i),new f("Error parsing line: "+t);return i}beam(t,e){return this.factory.Beam({notes:t,options:e}),t}tuplet(t,e){return this.factory.Tuplet({notes:t,options:e}),t}notes(t,e={}){return e=Object.assign({clef:this.defaults.clef,stem:this.defaults.stem},e),this.parse(t,e),this.builder.getElements().notes}voice(t,e={}){return e=Object.assign({time:this.defaults.time},e),this.factory.Voice(e).addTickables(t)}addCommitHook(t){this.builder.addCommitHook(t)}}qe.DEBUG=!1;const Qe="Ghost note must have valid initialization data to identify duration.";class Ze extends Lt{static get CATEGORY(){return m.GhostNote}constructor(t){if(!t)throw new f("BadArguments",Qe);let e;if("string"==typeof t)e={duration:t};else{if("object"!=typeof t)throw new f("BadArguments",Qe);e=t}super(e),this.setWidth(0)}isRest(){return!0}setStave(t){return super.setStave(t),this}addToModifierContext(t){return this}preFormat(){return this.preFormatted=!0,this}draw(){this.setRendered();for(let t=0;t=oi.type.TEXT&&t<=oi.type.MIXED&&(this.type=t),this}setCustomText(t,e){return this.custom_depress_text=t||"",this.custom_release_text=e||"",this}setLine(t){return this.line=t,this}drawBracketed(){const t=this.checkContext();let e,i,s=!1;this.notes.forEach(((n,a,o)=>{s=!s;const r=n.getAbsoluteX(),h=n.checkStave().getYForBottomText(this.line+3);if(r{e=!e;const s=i.checkStave(),n=i.getAbsoluteX(),a=s.getYForBottomText(this.line+3),o=V.currentMusicFont().lookupMetric(`pedalMarking.${e?"down":"up"}.point`);let r=0;e?this.custom_depress_text?(r=t.measureText(this.custom_depress_text).width,t.fillText(this.custom_depress_text,n-r/2,a)):ai("pedal_depress",t,n,a,o):this.custom_release_text?(r=t.measureText(this.custom_release_text).width,t.fillText(this.custom_release_text,n-r/2,a)):ai("pedal_release",t,n,a,o)}))}draw(){const t=this.checkContext();this.setRendered(),t.save(),t.setStrokeStyle(this.render_options.color),t.setFillStyle(this.render_options.color),t.setFont(this.textFont),function(...t){oi.DEBUG&&S("Vex.Flow.PedalMarking",t)}("Rendering Pedal Marking"),this.type===oi.type.BRACKET||this.type===oi.type.MIXED?(t.setLineWidth(this.render_options.bracket_line_width),this.drawBracketed()):this.type===oi.type.TEXT&&this.drawText(),t.restore()}}oi.DEBUG=!1,oi.TEXT_FONT={family:F.SERIF,size:12,weight:N.BOLD,style:D.ITALIC},oi.GLYPHS={pedal_depress:{code:"keyboardPedalPed",x_shift:-10,y_shift:0},pedal_release:{code:"keyboardPedalUp",x_shift:-2,y_shift:3}},oi.type={TEXT:1,BRACKET:2,MIXED:3},oi.typeString={text:oi.type.TEXT,bracket:oi.type.BRACKET,mixed:oi.type.MIXED};const ri={1:"repeat1Bar",2:"repeat2Bars",4:"repeat4Bars",slash:"repeatBarSlash"};class hi extends ti{static get CATEGORY(){return m.RepeatNote}constructor(t,e,i){super(void 0,Object.assign({duration:"q",align_center:"slash"!==t},e),i);const s=new Q(ri[t]||"repeat1Bar",V.currentMusicFont().lookupMetric("repeatNote.point",40),{category:"repeatNote"});this.setGlyph(s)}}function ci(t,e,i,s,n,a,o){t.beginPath(),t.moveTo(e,i),t.lineTo(s,n),t.lineTo(a,o),t.lineTo(e,i),t.closePath(),t.fill()}class di extends O{constructor(t){super(),this.setNotes(t),this.text="",this.resetFont(),this.render_options={padding_left:4,padding_right:3,line_width:1,line_dash:void 0,rounded_end:!0,color:void 0,draw_start_arrow:!1,draw_end_arrow:!1,arrowhead_length:10,arrowhead_angle:Math.PI/8,text_position_vertical:di.TextVerticalPosition.TOP,text_justification:di.TextJustification.CENTER}}static get CATEGORY(){return m.StaveLine}setText(t){return this.text=t,this}setNotes(t){if(!t.first_note&&!t.last_note)throw new f("BadArguments","Notes needs to have either first_note or last_note set.");if(t.first_indices||(t.first_indices=[0]),t.last_indices||(t.last_indices=[0]),t.first_indices.length!==t.last_indices.length)throw new f("BadArguments","Connected notes must have same number of indices.");return this.notes=t,this.first_note=t.first_note,this.first_indices=t.first_indices,this.last_note=t.last_note,this.last_indices=t.last_indices,this}applyLineStyle(){const t=this.checkContext(),e=this.render_options;e.line_dash&&t.setLineDash(e.line_dash),e.line_width&&t.setLineWidth(e.line_width),e.rounded_end?t.setLineCap("round"):t.setLineCap("square")}applyFontStyle(){const t=this.checkContext();t.setFont(this.textFont);const e=this.render_options.color;e&&(t.setStrokeStyle(e),t.setFillStyle(e))}drawArrowLine(t,e,i){const s=this.render_options.draw_start_arrow&&this.render_options.draw_end_arrow,n=e.x,a=e.y,o=i.x,r=i.y,h=Math.sqrt((o-n)*(o-n)+(r-a)*(r-a)),c=(h-this.render_options.arrowhead_length/3)/h;let d,l,g,u;this.render_options.draw_end_arrow||s?(d=Math.round(n+(o-n)*c),l=Math.round(a+(r-a)*c)):(d=o,l=r),this.render_options.draw_start_arrow||s?(g=n+(o-n)*(1-c),u=a+(r-a)*(1-c)):(g=n,u=a),this.render_options.color&&(t.setStrokeStyle(this.render_options.color),t.setFillStyle(this.render_options.color)),t.beginPath(),t.moveTo(g,u),t.lineTo(d,l),t.stroke(),t.closePath();const p=Math.atan2(r-a,o-n),m=Math.abs(this.render_options.arrowhead_length/Math.cos(this.render_options.arrowhead_angle));let f,_,x,S,y,T;(this.render_options.draw_end_arrow||s)&&(f=p+Math.PI+this.render_options.arrowhead_angle,x=o+Math.cos(f)*m,S=r+Math.sin(f)*m,_=p+Math.PI-this.render_options.arrowhead_angle,y=o+Math.cos(_)*m,T=r+Math.sin(_)*m,ci(t,x,S,o,r,y,T)),(this.render_options.draw_start_arrow||s)&&(f=p+this.render_options.arrowhead_angle,x=n+Math.cos(f)*m,S=a+Math.sin(f)*m,_=p-this.render_options.arrowhead_angle,y=n+Math.cos(_)*m,T=a+Math.sin(_)*m,ci(t,x,S,n,a,y,T))}draw(){const t=this.checkContext();this.setRendered();const e=this.first_note,i=this.last_note,s=this.render_options;t.save(),this.applyLineStyle();let n={x:0,y:0},a={x:0,y:0};this.first_indices.forEach(((o,r)=>{const h=this.last_indices[r];n=e.getModifierStartXY(2,o),a=i.getModifierStartXY(1,h);const c=n.y>a.y;n.x+=e.getMetrics().modRightPx+s.padding_left,a.x-=i.getMetrics().modLeftPx+s.padding_right;const d=e.getGlyph().getWidth();e.getKeyProps()[o].displaced&&1===e.getStemDirection()&&(n.x+=d+s.padding_left);i.getKeyProps()[h].displaced&&-1===i.getStemDirection()&&(a.x-=d+s.padding_right),n.y+=c?-3:1,a.y+=c?2:0,this.drawArrowLine(t,n,a)})),t.restore();const o=t.measureText(this.text).width,r=s.text_justification;let h=0;if(r===di.TextJustification.LEFT)h=n.x;else if(r===di.TextJustification.CENTER){h=(a.x-n.x)/2+n.x-o/2}else r===di.TextJustification.RIGHT&&(h=a.x-o);let c=0;const d=s.text_position_vertical;return d===di.TextVerticalPosition.TOP?c=e.checkStave().getYForTopText():d===di.TextVerticalPosition.BOTTOM&&(c=e.checkStave().getYForBottomText(V.TEXT_HEIGHT_OFFSET_HACK)),t.save(),this.applyFontStyle(),t.fillText(this.text,h,c),t.restore(),this}}di.TEXT_FONT=Object.assign({},O.TEXT_FONT),di.TextVerticalPosition={TOP:1,BOTTOM:2},di.TextJustification=ne;class li extends O{constructor(t={}){super(),this.setOptions(t),this.parts=[]}static get CATEGORY(){return m.System}setOptions(t={}){if(!t.factory)throw new f("NoFactory","System.setOptions(options) requires a factory.");this.factory=t.factory,this.options=Object.assign(Object.assign({factory:this.factory,x:10,y:10,width:500,spaceBetweenStaves:12,autoWidth:!1,noJustification:!1,debugFormatter:!1,formatIterations:0,noPadding:!1},t),{details:Object.assign({alpha:.5},t.details),formatOptions:Object.assign({},t.formatOptions)}),!1===this.options.noJustification&&void 0===t.width&&(this.options.autoWidth=!0)}setContext(t){return super.setContext(t),this.factory.setContext(t),this}addConnector(t="double"){return this.connector=this.factory.StaveConnector({top_stave:this.parts[0].stave,bottom_stave:this.parts[this.parts.length-1].stave,type:t}),this.connector}addStave(t){var e;const i=Object.assign({left_bar:!1},t.options),s=null!==(e=t.stave)&&void 0!==e?e:this.factory.Stave({x:this.options.x,y:this.options.y,width:this.options.width,options:i}),n=Object.assign(Object.assign({stave:s,spaceAbove:0,spaceBelow:0,debugNoteMetrics:!1,noJustification:!1},t),{options:i}),a=this.getContext();return n.voices.forEach((t=>t.setContext(a).setStave(s).getTickables().forEach((t=>t.setStave(s))))),this.parts.push(n),s}format(){const t=this.options.details;let e=0;const i=new De(t);this.formatter=i;let s=this.options.y,n=0,a=[],o=[];const r=[];this.parts.forEach((t=>{s+=t.stave.space(t.spaceAbove),t.stave.setY(s),i.joinVoices(t.voices),s+=t.stave.space(t.spaceBelow),s+=t.stave.space(this.options.spaceBetweenStaves),t.debugNoteMetrics&&(r.push({y:s,voice:t.voices[0]}),s+=15),a=a.concat(t.voices),o=o.concat(t.stave),n=Math.max(n,t.stave.getNoteStartX())})),this.parts.forEach((t=>t.stave.setNoteStartX(n))),this.options.autoWidth?(e=i.preCalculateMinTotalWidth(a),this.parts.forEach((t=>{t.stave.setWidth(e+ve.rightPadding+(n-this.options.x))}))):e=this.options.noPadding?this.options.width-(n-this.options.x):this.options.width-(n-this.options.x)-ve.defaultPadding,i.format(a,this.options.noJustification?0:e,this.options.formatOptions),i.postFormat();for(let e=0;e{e.voice.getTickables().forEach((i=>Tt.plotMetrics(t,i,e.y)))}))}}class gi extends Lt{constructor(t,e=!1){super(t),this.glyphs=[],this.greatestString=()=>this.positions.map((t=>t.str)).reduce(((t,e)=>t>e?t:e)),this.leastString=()=>this.positions.map((t=>t.str)).reduce(((t,e)=>tthis.width}setStave(t){super.setStave(t);const e=t.getContext();if(this.setContext(e),e){this.width=0;for(let t=0;ti.width),this.width=Math.max(i.getWidth(),this.width)}this.glyph.getWidth=()=>this.width}const i=this.positions.map((({str:e})=>t.getYForLine(Number(e)-1)));return this.setYs(i),this.stem&&this.stem.setYBounds(this.getStemY(),this.getStemY()),this}getPositions(){return this.positions}getModifierStartXY(t,e){if(!this.preFormatted)throw new f("UnformattedNote","Can't call GetModifierStartXY on an unformatted note");if(0===this.ys.length)throw new f("NoYValues","No Y-Values calculated for this note.");let i=0;if(t===Z.Position.LEFT)i=-2;else if(t===Z.Position.RIGHT)i=this.width+2;else if(t===Z.Position.BELOW||t===Z.Position.ABOVE){i=this.glyph.getWidth()/2}return{x:this.getAbsoluteX()+i,y:this.ys[e]}}getLineForRest(){return Number(this.positions[0].str)}preFormat(){this.preFormatted||(this.modifierContext&&this.modifierContext.preFormat(),this.preFormatted=!0)}getStemX(){return this.getCenterGlyphX()}getStemY(){const t=this.checkStave().getNumLines()-.5,e=st.UP===this.stem_direction?-.5:t;return this.checkStave().getYForLine(e)}getStemExtents(){return this.checkStem().getExtents()}drawFlag(){var t;const{beam:e,glyph:i,render_options:{draw_stem:s}}=this,n=this.checkContext(),a=null==e&&s;if(i.flag&&a){const e=this.getStemX(),i=this.getStemDirection()===st.DOWN?this.getStemY()-this.checkStem().getHeight()-(this.glyph?this.glyph.stem_down_extension:0):this.getStemY()-this.checkStem().getHeight()+(this.glyph?this.glyph.stem_up_extension:0);null===(t=this.flag)||void 0===t||t.render(n,e,i)}}drawModifiers(){this.modifiers.forEach((t=>{r(t)&&!this.render_options.draw_dots||(t.setContext(this.getContext()),t.drawWithStyle())}))}drawStemThrough(){const t=this.getStemX(),e=this.getStemY(),i=this.checkContext(),s=this.render_options.draw_stem,n=this.render_options.draw_stem_through_stave;if(s&&n){const s=function(t,e,i,s){const n=1!==s,a=-1!==s,o=i.getSpacingBetweenLines(),r=i.getNumLines(),h=[];return e.forEach((e=>{const c=e.indexOf(r)>-1,d=e.indexOf(1)>-1;if(n&&d||a&&c)return;1===e.length&&e.push(e[0]);const l=[];e.forEach(((e,n,a)=>{const h=1===e,c=e===r;let d=i.getYForLine(e-1);0!==n||h?n!==a.length-1||c||(d+=o/2-1):d-=o/2-1,l.push(d),1===s&&h?l.push(t-2):-1===s&&c&&l.push(t+2)})),h.push(l.sort(((t,e)=>t-e)))})),h}(e,function(t,e){const i=[];let s=[];for(let n=1;n<=t;n++)e.indexOf(n)>-1?(i.push(s),s=[]):s.push(n);return s.length>0&&i.push(s),i}(this.checkStave().getNumLines(),this.positions.map((t=>Number(t.str)))),this.checkStave(),this.getStemDirection());i.save(),i.setLineWidth(st.WIDTH),s.forEach((e=>{0!==e.length&&(i.beginPath(),i.moveTo(t,e[0]),i.lineTo(t,e[e.length-1]),i.stroke(),i.closePath())})),i.restore()}}drawPositions(){const t=this.checkContext(),e=this.getAbsoluteX(),i=this.ys;for(let s=0;s{const i=xi.GLYPHS[e];if(!i)throw new f("Invalid dynamics character: "+e);const s=x(this.render_options.glyph_font_size),n=new Q(i.code,s,{category:"textNote"});this.glyphs.push(n),t+=i.width})),this.setWidth(t),this.preFormatted=!0,this}draw(){this.setRendered();const t=this.getAbsoluteX(),e=this.checkStave().getYForLine(this.line+-3);_i("Rendering Dynamics: ",this.sequence);let i=t;this.glyphs.forEach(((t,s)=>{const n=this.sequence[s];t.render(this.checkContext(),i,e),i+=xi.GLYPHS[n].width}))}}xi.DEBUG=!1;class Si extends Tt{constructor(t,e){super({duration:"b"});const i=new Te(t,e);this.timeSigInfo=i.getInfo(),this.setWidth(this.timeSigInfo.glyph.getMetrics().width),this.ignore_ticks=!0}static get CATEGORY(){return m.TimeSigNote}addToModifierContext(t){return this}preFormat(){return this.preFormatted=!0,this}draw(){const t=this.checkStave(),e=this.checkContext();this.setRendered(),this.timeSigInfo.glyph.getContext()||this.timeSigInfo.glyph.setContext(e),this.timeSigInfo.glyph.setStave(t),this.timeSigInfo.glyph.setYShift(t.getYForLine(2)-t.getYForGlyphs()),this.timeSigInfo.glyph.renderToStave(this.getAbsoluteX())}}class yi extends O{constructor(t){super(),t.start&&(this.start=t.start),t.stop&&(this.stop=t.stop),this.line=1,this.render_options={harsh:!1,wave_height:6,wave_width:4,wave_girth:2,vibrato_width:0}}static get CATEGORY(){return m.VibratoBracket}setLine(t){return this.line=t,this}setHarsh(t){return this.render_options.harsh=t,this}draw(){const t=this.checkContext();this.setRendered();const e=this.start&&this.start.checkStave().getYForTopText(this.line)||this.stop&&this.stop.checkStave().getYForTopText(this.line)||0,i=this.start&&this.start.getAbsoluteX()||this.stop&&this.stop.checkStave().getTieStartX()||0,s=this.stop&&this.stop.getAbsoluteX()-this.stop.getWidth()-5||this.start&&this.start.checkStave().getTieEndX()-10||0;this.render_options.vibrato_width=s-i,function(...t){yi.DEBUG&&S("Vex.Flow.VibratoBracket",t)}("Rendering VibratoBracket: start_x:",i,"stop_x:",s,"y:",e),ce.renderVibrato(t,i,e,this.render_options)}}function Ti(...t){bi.DEBUG&&S("Vex.Flow.Factory",t)}yi.DEBUG=!1;class bi{constructor(t={}){Ti("New factory: ",t),this.options={stave:{space:10},renderer:{elementId:"",width:500,height:200,background:"#FFF"},font:bi.TEXT_FONT},this.setOptions(t)}static newFromElementId(t,e=500,i=200){return new bi({renderer:{elementId:t,width:e,height:i}})}reset(){this.renderQ=[],this.systems=[],this.staves=[],this.voices=[],this.stave=void 0}setOptions(t){this.options=Object.assign(Object.assign({},this.options),t),this.initRenderer(),this.reset()}initRenderer(){const{elementId:t,width:e,height:i,background:s}=this.options.renderer;if(null==t)return;if(""==t)throw Ti(this),new f("renderer.elementId not set in FactoryOptions");let n=this.options.renderer.backend;if(void 0===n){n=$t(document.getElementById(t))?oe.Backends.CANVAS:oe.Backends.SVG}this.context=oe.buildContext(t,n,e,i,s)}getContext(){return this.context}setContext(t){return this.context=t,this}getStave(){return this.stave}getVoices(){return this.voices}Stave(t){const e=this.options.stave.space,i=Object.assign({x:0,y:0,width:this.options.renderer.width-1*e,options:{spacing_between_lines_px:1*e}},t),s=new ve(i.x,i.y,i.width,i.options);return this.staves.push(s),s.setContext(this.context),this.stave=s,s}TabStave(t){const e=this.options.stave.space,i=Object.assign({x:0,y:0,width:this.options.renderer.width-1*e,options:{spacing_between_lines_px:1.3*e}},t),s=new ui(i.x,i.y,i.width,i.options);return this.staves.push(s),s.setContext(this.context),this.stave=s,s}StaveNote(t){const e=new Wt(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}GlyphNote(t,e,i){const s=new ti(t,e,i);return this.stave&&s.setStave(this.stave),s.setContext(this.context),this.renderQ.push(s),s}RepeatNote(t,e,i){const s=new hi(t,e,i);return this.stave&&s.setStave(this.stave),s.setContext(this.context),this.renderQ.push(s),s}GhostNote(t){const e=new Ze(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}TextNote(t){const e=new _e(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}BarNote(t={}){const e=new At(t.type);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}ClefNote(t){const e=Object.assign({type:"treble",options:{size:"default",annotation:void 0}},t),i=new Le(e.type,e.options.size,e.options.annotation);return this.stave&&i.setStave(this.stave),i.setContext(this.context),this.renderQ.push(i),i}TimeSigNote(t){const e=Object.assign({time:"4/4"},t),i=new Si(e.time);return this.stave&&i.setStave(this.stave),i.setContext(this.context),this.renderQ.push(i),i}KeySigNote(t){const e=new ii(t.key,t.cancelKey,t.alterKey);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}TabNote(t){const e=new gi(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}GraceNote(t){const e=new ei(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),e}GraceNoteGroup(t){const e=new jt(t.notes,t.slur);return e.setContext(this.context),e}Accidental(t){const e=new it(t.type);return e.setContext(this.context),e}Annotation(t){const e=Object.assign({text:"p",hJustify:ht.CENTER,vJustify:ct.BOTTOM},t),i=new dt(e.text);return i.setJustification(e.hJustify),i.setVerticalJustification(e.vJustify),i.setFont(e.font),i.setContext(this.context),i}ChordSymbol(t){const e=Object.assign({vJustify:"top",hJustify:"center",kerning:!0,reportWidth:!0},t),i=new Ft;return i.setHorizontal(e.hJustify),i.setVertical(e.vJustify),i.setEnableKerning(e.kerning),i.setReportWidth(e.reportWidth),"string"==typeof e.fontFamily&&"number"==typeof e.fontSize?"string"==typeof e.fontWeight?i.setFont(e.fontFamily,e.fontSize,e.fontWeight):i.setFont(e.fontFamily,e.fontSize,""):"number"==typeof e.fontSize&&i.setFontSize(e.fontSize),i.setContext(this.context),i}Articulation(t){const e=Object.assign({type:"a.",position:"above"},t),i=new _t(e.type);return i.setPosition(e.position),i.setContext(this.context),i}Ornament(t,e){const i=Object.assign({type:t,position:0,accidental:""},e),s=new zt(t);return s.setPosition(i.position),i.upperAccidental&&s.setUpperAccidental(i.upperAccidental),i.lowerAccidental&&s.setLowerAccidental(i.lowerAccidental),void 0!==i.delayed&&s.setDelayed(i.delayed),s.setContext(this.context),s}TextDynamics(t){const e=Object.assign({text:"p",duration:"q",dots:0,line:0},t),i=new xi({text:e.text,line:e.line,duration:e.duration,dots:e.dots});return this.stave&&i.setStave(this.stave),i.setContext(this.context),this.renderQ.push(i),i}Fingering(t){const e=Object.assign({number:"0",position:"left"},t),i=new Bt(e.number);return i.setPosition(e.position),i.setContext(this.context),i}StringNumber(t,e=!0){const i=new re(t.number);return i.setPosition(t.position),i.setContext(this.context),i.setDrawCircle(e),i}TickContext(){return new Vt}ModifierContext(){return new le}MultiMeasureRest(t){const e=x(t.number_of_measures,"NoNumberOfMeasures"),i=new ni(e,t);return i.setContext(this.context),this.renderQ.push(i),i}Voice(t){const e=Object.assign({time:"4/4"},t),i=new Yt(e.time);return this.voices.push(i),i}StaveConnector(t){const e=new Ce(t.top_stave,t.bottom_stave);return e.setType(t.type).setContext(this.context),this.renderQ.push(e),e}Formatter(t){return new De(t)}Tuplet(t){const e=Object.assign({notes:[],options:{}},t),i=new Pe(e.notes,e.options).setContext(this.context);return this.renderQ.push(i),i}Beam(t){var e,i,s,n,a;const o=new Oe(t.notes,null===(e=t.options)||void 0===e?void 0:e.autoStem).setContext(this.context);return o.breakSecondaryAt(null!==(s=null===(i=t.options)||void 0===i?void 0:i.secondaryBeamBreaks)&&void 0!==s?s:[]),(null===(n=t.options)||void 0===n?void 0:n.partialBeamDirections)&&Object.entries(null===(a=t.options)||void 0===a?void 0:a.partialBeamDirections).forEach((([t,e])=>{o.setPartialBeamSideAt(Number(t),e)})),this.renderQ.push(o),o}Curve(t){const e=new Ge(t.from,t.to,t.options).setContext(this.context);return this.renderQ.push(e),e}StaveTie(t){var e;const i=new Gt({first_note:t.from,last_note:t.to,first_indices:t.first_indices,last_indices:t.last_indices},t.text);return(null===(e=t.options)||void 0===e?void 0:e.direction)&&i.setDirection(t.options.direction),i.setContext(this.context),this.renderQ.push(i),i}StaveLine(t){var e,i;const s=new di({first_note:t.from,last_note:t.to,first_indices:t.first_indices,last_indices:t.last_indices});return(null===(e=t.options)||void 0===e?void 0:e.text)&&s.setText(t.options.text),(null===(i=t.options)||void 0===i?void 0:i.font)&&s.setFont(t.options.font),s.setContext(this.context),this.renderQ.push(s),s}VibratoBracket(t){const e=new yi({start:t.from,stop:t.to});return t.options.line&&e.setLine(t.options.line),t.options.harsh&&e.setHarsh(t.options.harsh),e.setContext(this.context),this.renderQ.push(e),e}TextBracket(t){const e=new fi({start:t.from,stop:t.to,text:t.text,superscript:t.options.superscript,position:t.options.position});return t.options.line&&e.setLine(t.options.line),t.options.font&&e.setFont(t.options.font),e.setContext(this.context),this.renderQ.push(e),e}System(t={}){t.factory=this;const e=new li(t).setContext(this.context);return this.systems.push(e),e}EasyScore(t={}){return t.factory=this,new qe(t)}PedalMarking(t){const e=Object.assign({notes:[],options:{style:"mixed"}},t),i=new oi(e.notes);return i.setType(oi.typeString[e.options.style]),i.setContext(this.context),this.renderQ.push(i),i}NoteSubGroup(t){const e=Object.assign({notes:[]},t),i=new Xt(e.notes);return i.setContext(this.context),i}draw(){const t=this.context;this.systems.forEach((e=>e.setContext(t).format())),this.staves.forEach((e=>e.setContext(t).draw())),this.voices.forEach((e=>e.setContext(t).draw())),this.renderQ.forEach((e=>{e.isRendered()||e.setContext(t).draw()})),this.systems.forEach((e=>e.setContext(t).draw())),this.reset()}}bi.DEBUG=!1,bi.TEXT_FONT=Object.assign({},O.TEXT_FONT);class wi extends gi{static get CATEGORY(){return m.GraceTabNote}constructor(t){super(t,!1),this.render_options=Object.assign(Object.assign({},this.render_options),{y_shift:.3,scale:.6,font:`7.5pt ${F.SANS_SERIF}`}),this.updateWidth()}}class vi{constructor(t){this.music=new tt,this.setKey(t)}setKey(t){return this.key=t,this.reset(),this}getKey(){return this.key}reset(){this.keyParts=this.music.getKeyParts(this.key),this.keyString=this.keyParts.root,this.keyParts.accidental&&(this.keyString+=this.keyParts.accidental);if(!tt.scaleTypes[this.keyParts.type])throw new f("BadArguments",`Unsupported key type: ${this.key}`);this.scale=this.music.getScaleTones(this.music.getNoteValue(this.keyString),tt.scaleTypes[this.keyParts.type]),this.scaleMap={},this.scaleMapByValue={},this.originalScaleMapByValue={};const t=tt.root_indices[this.keyParts.root];for(let e=0;es?Ci.SLIDE_DOWN:Ci.SLIDE_UP}this.direction=e,this.render_options.cp1=11,this.render_options.cp2=14,this.render_options.y_shift=.5,this.resetFont()}static get CATEGORY(){return m.TabSlide}static get SLIDE_UP(){return 1}static get SLIDE_DOWN(){return-1}static createSlideUp(t){return new Ci(t,Ci.SLIDE_UP)}static createSlideDown(t){return new Ci(t,Ci.SLIDE_DOWN)}renderTie(t){if(0===t.first_ys.length||0===t.last_ys.length)throw new f("BadArguments","No Y-values to render");const e=this.checkContext(),i=t.first_x_px,s=t.first_ys,n=t.last_x_px,a=t.direction;if(a!==Ci.SLIDE_UP&&a!==Ci.SLIDE_DOWN)throw new f("BadSlide","Invalid slide direction");const o=this.notes.first_indices;for(let t=0;tthis.tuningValues.length)throw new f("BadArguments",`String number must be between 1 and ${this.tuningValues.length}:${t}`);return this.tuningValues[e-1]}getValueForFret(t,e){const i=this.getValueForString(e),s=Number(t);if(s<0)throw new f("BadArguments",`Fret number must be 0 or higher: ${t}`);return i+s}getNoteForFret(t,e){const i=this.getValueForFret(t,e),s=Math.floor(i/12),n=i%12;return`${V.integerToNote(n)}/${s}`}}var Di=function(t,e,i,s){return new(i||(i=Promise))((function(n,a){function o(t){try{h(s.next(t))}catch(t){a(t)}}function r(t){try{h(s.throw(t))}catch(t){a(t)}}function h(t){var e;t.done?n(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(o,r)}h((s=s.apply(t,e||[])).next())}))};class Ai{static get BUILD(){return{VERSION:"4.1.0-alpha.0",ID:"847bc9014672858aedc7f8460384f51f98d6bd84",DATE:"2022-10-10T04:47:38.237Z"}}static setMusicFont(...t){const e=t.map((t=>F.load(t)));return V.MUSIC_FONT_STACK=e,Q.MUSIC_FONT_STACK=e.slice(),Q.CURRENT_CACHE_KEY=t.join(","),e}static fetchMusicFont(t,e){return Di(this,void 0,void 0,(function*(){}))}static getMusicFont(){return V.MUSIC_FONT_STACK.map((t=>t.getName()))}static get RENDER_PRECISION_PLACES(){return V.RENDER_PRECISION_PLACES}static set RENDER_PRECISION_PLACES(t){V.RENDER_PRECISION_PLACES=t}static get SOFTMAX_FACTOR(){return V.SOFTMAX_FACTOR}static set SOFTMAX_FACTOR(t){V.SOFTMAX_FACTOR=t}static get NOTATION_FONT_SCALE(){return V.NOTATION_FONT_SCALE}static set NOTATION_FONT_SCALE(t){V.NOTATION_FONT_SCALE=t}static get TABLATURE_FONT_SCALE(){return V.TABLATURE_FONT_SCALE}static set TABLATURE_FONT_SCALE(t){V.TABLATURE_FONT_SCALE=t}static get RESOLUTION(){return V.RESOLUTION}static set RESOLUTION(t){V.RESOLUTION=t}static get SLASH_NOTEHEAD_WIDTH(){return V.SLASH_NOTEHEAD_WIDTH}static set SLASH_NOTEHEAD_WIDTH(t){V.SLASH_NOTEHEAD_WIDTH=t}static get STAVE_LINE_DISTANCE(){return V.STAVE_LINE_DISTANCE}static set STAVE_LINE_DISTANCE(t){V.STAVE_LINE_DISTANCE=t}static get STAVE_LINE_THICKNESS(){return V.STAVE_LINE_THICKNESS}static set STAVE_LINE_THICKNESS(t){V.STAVE_LINE_THICKNESS=t}static get STEM_HEIGHT(){return V.STEM_HEIGHT}static set STEM_HEIGHT(t){V.STEM_HEIGHT=t}static get STEM_WIDTH(){return V.STEM_WIDTH}static set STEM_WIDTH(t){V.STEM_WIDTH=t}static get TIME4_4(){return V.TIME4_4}static get accidentalMap(){return V.accidentalMap}static get unicode(){return V.unicode}static keySignature(t){return V.keySignature(t)}static hasKeySignature(t){return V.hasKeySignature(t)}static getKeySignatures(){return V.getKeySignatures()}static clefProperties(t){return V.clefProperties(t)}static keyProperties(t,e,i){return V.keyProperties(t,e,i)}static durationToTicks(t){return V.durationToTicks(t)}}Ai.Accidental=it,Ai.Annotation=dt,Ai.Articulation=_t,Ai.Barline=Dt,Ai.BarNote=At,Ai.Beam=Oe,Ai.Bend=Pt,Ai.BoundingBox=C,Ai.BoundingBoxComputation=k,Ai.CanvasContext=qt,Ai.ChordSymbol=Ft,Ai.Clef=ge,Ai.ClefNote=Le,Ai.Crescendo=Ie,Ai.Curve=Ge,Ai.Dot=Rt,Ai.EasyScore=qe,Ai.Element=O,Ai.Factory=bi,Ai.Font=F,Ai.Formatter=De,Ai.Fraction=v,Ai.FretHandFinger=Bt,Ai.GhostNote=Ze,Ai.Glyph=Q,Ai.GlyphNote=ti,Ai.GraceNote=ei,Ai.GraceNoteGroup=jt,Ai.GraceTabNote=wi,Ai.KeyManager=vi,Ai.KeySignature=ue,Ai.KeySigNote=ii,Ai.Modifier=Z,Ai.ModifierContext=le,Ai.MultiMeasureRest=ni,Ai.Music=tt,Ai.Note=Tt,Ai.NoteHead=Ot,Ai.NoteSubGroup=Xt,Ai.Ornament=zt,Ai.Parenthesis=Kt,Ai.Parser=Ye,Ai.PedalMarking=oi,Ai.Registry=B,Ai.RenderContext=xt,Ai.Renderer=oe,Ai.RepeatNote=hi,Ai.Repetition=pe,Ai.Stave=ve,Ai.StaveConnector=Ce,Ai.StaveHairpin=Ei,Ai.StaveLine=di,Ai.StaveModifier=Nt,Ai.StaveNote=Wt,Ai.StaveTempo=fe,Ai.StaveText=xe,Ai.StaveTie=Gt,Ai.Stem=st,Ai.StringNumber=re,Ai.Stroke=he,Ai.SVGContext=ee,Ai.System=li,Ai.TabNote=gi,Ai.TabSlide=Ci,Ai.TabStave=ui,Ai.TabTie=Ut,Ai.TextBracket=fi,Ai.TextDynamics=xi,Ai.TextFormatter=rt,Ai.TextNote=_e,Ai.TickContext=Vt,Ai.TimeSignature=Te,Ai.TimeSigNote=Si,Ai.Tremolo=ki,Ai.Tuning=Ni,Ai.Tuplet=Pe,Ai.Vibrato=ce,Ai.VibratoBracket=yi,Ai.Voice=Yt,Ai.Volta=Se,Ai.AnnotationHorizontalJustify=ht,Ai.AnnotationVerticalJustify=ct,Ai.ChordSymbolHorizontalJustify=vt,Ai.ChordSymbolVerticalJustify=Et,Ai.SymbolTypes=Ct,Ai.SymbolModifiers=kt,Ai.CurvePosition=We,Ai.FontWeight=N,Ai.FontStyle=D,Ai.ModifierPosition=$,Ai.RendererBackends=ie,Ai.RendererLineEndType=se,Ai.BarlineType=wt,Ai.StaveModifierPosition=bt,Ai.VoltaType=ae,Ai.TextBracketPosition=mi,Ai.TextJustification=ne,Ai.VoiceMode=Ht;const Pi={spacing:50,glyphs:{" ":{x_min:0,x_max:250,y_min:0,y_max:500,ha:500,leftSideBearing:0,advanceWidth:250},0:{x_min:33,x_max:534,y_min:-13,y_max:751,ha:764,leftSideBearing:33,advanceWidth:570},1:{x_min:48,x_max:235,y_min:-17,y_max:734,ha:751,leftSideBearing:48,advanceWidth:286},2:{x_min:56,x_max:571,y_min:-19,y_max:741,ha:760,leftSideBearing:56,advanceWidth:626},3:{x_min:50,x_max:528,y_min:-7,y_max:731,ha:738,leftSideBearing:50,advanceWidth:589},4:{x_min:38,x_max:564,y_min:-13,y_max:743,ha:756,leftSideBearing:38,advanceWidth:614},5:{x_min:42,x_max:601,y_min:-34,y_max:743,ha:777,leftSideBearing:42,advanceWidth:648},6:{x_min:47,x_max:606,y_min:-16,y_max:743,ha:759,leftSideBearing:47,advanceWidth:667},7:{x_min:47,x_max:567,y_min:5,y_max:739,ha:734,leftSideBearing:0,advanceWidth:615},8:{x_min:40,x_max:541,y_min:-15,y_max:752,ha:767,leftSideBearing:40,advanceWidth:585},9:{x_min:40,x_max:537,y_min:-52,y_max:736,ha:788,leftSideBearing:40,advanceWidth:592},"!":{x_min:49,x_max:180,y_min:-7,y_max:761,ha:768,leftSideBearing:49,advanceWidth:230},'"':{x_min:39,x_max:304,y_min:596,y_max:804,ha:208,leftSideBearing:39,advanceWidth:353},"#":{x_min:33,x_max:599,y_min:-8,y_max:765,ha:773,leftSideBearing:33,advanceWidth:648},$:{x_min:53,x_max:495,y_min:-111,y_max:823,ha:934,leftSideBearing:53,advanceWidth:560},"%":{x_min:35,x_max:656,y_min:-128,y_max:808,ha:936,leftSideBearing:35,advanceWidth:711},"&":{x_min:53,x_max:441,y_min:-3,y_max:753,ha:756,leftSideBearing:53,advanceWidth:500},"'":{x_min:43,x_max:161,y_min:590,y_max:811,ha:221,leftSideBearing:43,advanceWidth:217},"(":{x_min:41,x_max:311,y_min:-36,y_max:845,ha:881,leftSideBearing:41,advanceWidth:308},")":{x_min:-8,x_max:257,y_min:-21,y_max:852,ha:873,leftSideBearing:-8,advanceWidth:280},"*":{x_min:59,x_max:539,y_min:175,y_max:589,ha:414,leftSideBearing:59,advanceWidth:601},"+":{x_min:33,x_max:361,y_min:180,y_max:587,ha:407,leftSideBearing:33,advanceWidth:400},",":{x_min:15,x_max:176,y_min:-129,y_max:92,ha:221,leftSideBearing:15,advanceWidth:205},"-":{x_min:40,x_max:380,y_min:317,y_max:452,ha:135,leftSideBearing:40,advanceWidth:422},".":{x_min:48,x_max:185,y_min:-56,y_max:84,ha:140,leftSideBearing:48,advanceWidth:227},"/":{x_min:-58,x_max:654,y_min:-122,y_max:844,ha:966,leftSideBearing:-58,advanceWidth:626},":":{x_min:65,x_max:225,y_min:97,y_max:536,ha:439,leftSideBearing:65,advanceWidth:302},";":{x_min:13,x_max:295,y_min:-139,y_max:536,ha:675,leftSideBearing:13,advanceWidth:334},"<":{x_min:28,x_max:438,y_min:-1,y_max:607,ha:608,leftSideBearing:28,advanceWidth:475},"=":{x_min:40,x_max:383,y_min:199.9598640852289,y_max:541,ha:341.0401359147711,leftSideBearing:40,advanceWidth:422},">":{x_min:35,x_max:421,y_min:28,y_max:632,ha:604,leftSideBearing:35,advanceWidth:466},"?":{x_min:45,x_max:548,y_min:-17,y_max:767,ha:784,leftSideBearing:45,advanceWidth:592},"@":{x_min:51,x_max:730,y_min:-78,y_max:753,ha:831,leftSideBearing:51,advanceWidth:781},A:{x_min:37,x_max:554,y_min:-4,y_max:746,ha:750,leftSideBearing:37,advanceWidth:617},B:{x_min:37,x_max:532,y_min:3,y_max:783,ha:780,leftSideBearing:37,advanceWidth:579},C:{x_min:37,x_max:583,y_min:-3,y_max:775,ha:778,leftSideBearing:37,advanceWidth:623},D:{x_min:50,x_max:530,y_min:-15,y_max:749,ha:764,leftSideBearing:50,advanceWidth:579},E:{x_min:45,x_max:531,y_min:-1,y_max:743,ha:744,leftSideBearing:45,advanceWidth:585},F:{x_min:45,x_max:459,y_min:23,y_max:727,ha:704,leftSideBearing:45,advanceWidth:510},G:{x_min:31,x_max:577,y_min:-8,y_max:733,ha:741,leftSideBearing:31,advanceWidth:611},H:{x_min:37,x_max:493,y_min:-22,y_max:758,ha:780,leftSideBearing:37,advanceWidth:535},I:{x_min:47,x_max:501,y_min:-3,y_max:731,ha:734,leftSideBearing:47,advanceWidth:541},J:{x_min:33,x_max:531,y_min:-23,y_max:725,ha:748,leftSideBearing:33,advanceWidth:573},K:{x_min:43,x_max:505,y_min:-10,y_max:740,ha:750,leftSideBearing:43,advanceWidth:560},L:{x_min:49,x_max:457,y_min:-2,y_max:746,ha:748,leftSideBearing:49,advanceWidth:510},M:{x_min:35,x_max:699,y_min:1,y_max:744,ha:743,leftSideBearing:35,advanceWidth:743},N:{x_min:34,x_max:533,y_min:-17,y_max:761,ha:778,leftSideBearing:34,advanceWidth:579},O:{x_min:41,x_max:608,y_min:-5,y_max:735,ha:740,leftSideBearing:41,advanceWidth:667},P:{x_min:53,x_max:451,y_min:-18,y_max:735,ha:753,leftSideBearing:53,advanceWidth:497},Q:{x_min:40,x_max:599,y_min:-67,y_max:744,ha:811,leftSideBearing:40,advanceWidth:648},R:{x_min:39,x_max:487,y_min:16,y_max:735,ha:719,leftSideBearing:39,advanceWidth:535},S:{x_min:35,x_max:552,y_min:-47,y_max:708,ha:755,leftSideBearing:35,advanceWidth:604},T:{x_min:26,x_max:656,y_min:-13,y_max:718,ha:731,leftSideBearing:26,advanceWidth:705},U:{x_min:41,x_max:518,y_min:-20,y_max:748,ha:768,leftSideBearing:41,advanceWidth:567},V:{x_min:47,x_max:509,y_min:-26,y_max:744,ha:770,leftSideBearing:47,advanceWidth:567},W:{x_min:44,x_max:789,y_min:-35,y_max:720,ha:755,leftSideBearing:44,advanceWidth:833},X:{x_min:63,x_max:635,y_min:-10,y_max:745,ha:755,leftSideBearing:63,advanceWidth:680},Y:{x_min:43,x_max:503,y_min:-21,y_max:734,ha:755,leftSideBearing:43,advanceWidth:541},Z:{x_min:42,x_max:584,y_min:-10,y_max:739,ha:749,leftSideBearing:42,advanceWidth:629},"[":{x_min:46,x_max:346,y_min:-150,y_max:884,ha:1034,leftSideBearing:46,advanceWidth:291},"\\":{x_min:20,x_max:616,y_min:-100,y_max:797,ha:897,leftSideBearing:20,advanceWidth:645},"]":{x_min:-76,x_max:226,y_min:-150,y_max:881,ha:1031,leftSideBearing:-76,advanceWidth:297},"^":{x_min:43,x_max:437,y_min:517,y_max:812,ha:295,leftSideBearing:43,advanceWidth:478},_:{x_min:29,x_max:563,y_min:-110,y_max:-1,ha:109,leftSideBearing:29,advanceWidth:598},"`":{x_min:54,x_max:321,y_min:540,y_max:747,ha:207,leftSideBearing:54,advanceWidth:368},a:{x_min:20,x_max:447,y_min:-17,y_max:495,ha:512,leftSideBearing:20,advanceWidth:494},b:{x_min:37,x_max:466,y_min:-27,y_max:770,ha:797,leftSideBearing:37,advanceWidth:510},c:{x_min:35,x_max:456,y_min:-9,y_max:507,ha:516,leftSideBearing:35,advanceWidth:460},d:{x_min:45,x_max:520,y_min:-15,y_max:764,ha:779,leftSideBearing:45,advanceWidth:560},e:{x_min:33,x_max:370,y_min:-5,y_max:501,ha:506,leftSideBearing:33,advanceWidth:397},f:{x_min:35,x_max:411,y_min:-13,y_max:695,ha:708,leftSideBearing:35,advanceWidth:453},g:{x_min:33,x_max:551,y_min:-257,y_max:505,ha:762,leftSideBearing:33,advanceWidth:611},h:{x_min:32,x_max:458,y_min:-29,y_max:743,ha:772,leftSideBearing:32,advanceWidth:491},i:{x_min:45,x_max:167,y_min:-13,y_max:631,ha:644,leftSideBearing:45,advanceWidth:220},j:{x_min:-127,x_max:261,y_min:-231,y_max:601,ha:832,leftSideBearing:-127,advanceWidth:308},k:{x_min:39,x_max:443,y_min:-3,y_max:700,ha:703,leftSideBearing:39,advanceWidth:497},l:{x_min:58,x_max:168,y_min:-8,y_max:686,ha:694,leftSideBearing:58,advanceWidth:227},m:{x_min:39,x_max:688,y_min:-14,y_max:501,ha:515,leftSideBearing:39,advanceWidth:718},n:{x_min:45,x_max:491,y_min:-32,y_max:512,ha:544,leftSideBearing:45,advanceWidth:541},o:{x_min:41,x_max:424,y_min:-12,y_max:493,ha:505,leftSideBearing:41,advanceWidth:447},p:{x_min:25,x_max:529,y_min:-260,y_max:500,ha:760,leftSideBearing:25,advanceWidth:573},q:{x_min:53,x_max:603,y_min:-235,y_max:514,ha:749,leftSideBearing:53,advanceWidth:623},r:{x_min:32,x_max:407,y_min:-7,y_max:492,ha:499,leftSideBearing:32,advanceWidth:460},s:{x_min:49,x_max:416,y_min:-12,y_max:519,ha:531,leftSideBearing:49,advanceWidth:460},t:{x_min:32,x_max:442,y_min:-5,y_max:684,ha:689,leftSideBearing:32,advanceWidth:469},u:{x_min:41,x_max:487,y_min:-5,y_max:507,ha:512,leftSideBearing:41,advanceWidth:510},v:{x_min:16,x_max:441,y_min:-20,y_max:542,ha:562,leftSideBearing:16,advanceWidth:456},w:{x_min:39,x_max:639,y_min:-22,y_max:505,ha:527,leftSideBearing:39,advanceWidth:661},x:{x_min:15,x_max:505,y_min:-39,y_max:539,ha:578,leftSideBearing:15,advanceWidth:541},y:{x_min:-98,x_max:501,y_min:-242,y_max:511,ha:753,leftSideBearing:-98,advanceWidth:548},z:{x_min:27,x_max:479,y_min:-3,y_max:494,ha:497,leftSideBearing:27,advanceWidth:494},"{":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308},"|":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308},"}":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308},"~":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308}},fontFamily:"PetalumaScript",resolution:1e3,generatedOn:"2020-06-14T18:33:25.407Z"},Mi={spacing:50,glyphs:{" ":{x_min:0,x_max:509,y_min:0,y_max:2e3,ha:2e3,leftSideBearing:0,advanceWidth:509},0:{x_min:121,x_max:1048,y_min:-21,y_max:1477,ha:1498,leftSideBearing:121,advanceWidth:1168},1:{x_min:117,x_max:767,y_min:0,y_max:1456,ha:1456,leftSideBearing:117,advanceWidth:844},2:{x_min:75.8474576645637,x_max:1040,y_min:0,y_max:1477,ha:1477,leftSideBearing:75,advanceWidth:1131},3:{x_min:74.85365853658536,x_max:994,y_min:-21,y_max:1477,ha:1498,leftSideBearing:74,advanceWidth:1106},4:{x_min:63,x_max:1114,y_min:0,y_max:1456,ha:1456,leftSideBearing:63,advanceWidth:1187},5:{x_min:96.8448275474953,x_max:982,y_min:-21,y_max:1456,ha:1477,leftSideBearing:96,advanceWidth:1081},6:{x_min:121,x_max:1067,y_min:-21,y_max:1477,ha:1498,leftSideBearing:121,advanceWidth:1144},7:{x_min:76,x_max:1060,y_min:0,y_max:1456,ha:1456,leftSideBearing:-30,advanceWidth:1128},8:{x_min:92,x_max:1039,y_min:-21,y_max:1477,ha:1498,leftSideBearing:92,advanceWidth:1131},9:{x_min:84,x_max:1026,y_min:-21,y_max:1477,ha:1498,leftSideBearing:84,advanceWidth:1154},"!":{x_min:143,x_max:340,y_min:0,y_max:1456,ha:1456,leftSideBearing:143,advanceWidth:483},'"':{x_min:166,x_max:634,y_min:1055,y_max:1560,ha:505,leftSideBearing:166,advanceWidth:770},"#":{x_min:63,x_max:1179,y_min:0,y_max:1456,ha:1456,leftSideBearing:63,advanceWidth:1246},$:{x_min:81.92156915727656,x_max:1012,y_min:-208,y_max:1693,ha:1901,leftSideBearing:81,advanceWidth:1110},"%":{x_min:77,x_max:1384,y_min:-21,y_max:1477,ha:1498,leftSideBearing:77,advanceWidth:1460},"&":{x_min:74,x_max:1242,y_min:-21,y_max:1477,ha:1498,leftSideBearing:74,advanceWidth:1289},"'":{x_min:166,x_max:324,y_min:1055,y_max:1560,ha:505,leftSideBearing:166,advanceWidth:460},"(":{x_min:114,x_max:650,y_min:-463,y_max:1636,ha:2099,leftSideBearing:114,advanceWidth:662},")":{x_min:11,x_max:547,y_min:-463,y_max:1636,ha:2099,leftSideBearing:11,advanceWidth:654},"*":{x_min:66,x_max:893,y_min:607,y_max:1456,ha:849,leftSideBearing:66,advanceWidth:958},"+":{x_min:73,x_max:1071,y_min:146,y_max:1206,ha:1060,leftSideBearing:73,advanceWidth:1145},",":{x_min:23,x_max:315,y_min:-311,y_max:221,ha:532,leftSideBearing:23,advanceWidth:404},"-":{x_min:154,x_max:643,y_min:538,y_max:692,ha:154,leftSideBearing:154,advanceWidth:797},".":{x_min:145,x_max:342,y_min:0,y_max:202,ha:202,leftSideBearing:145,advanceWidth:493},"/":{x_min:0,x_max:774,y_min:-125,y_max:1456,ha:1581,leftSideBearing:0,advanceWidth:824},":":{x_min:145,x_max:342,y_min:0,y_max:1082,ha:1082,leftSideBearing:145,advanceWidth:419},";":{x_min:53,x_max:345,y_min:-311,y_max:1082,ha:1393,leftSideBearing:53,advanceWidth:424},"<":{x_min:76,x_max:892,y_min:107,y_max:1013,ha:906,leftSideBearing:76,advanceWidth:1017},"=":{x_min:147,x_max:981,y_min:407,y_max:987,ha:580,leftSideBearing:147,advanceWidth:1127},">":{x_min:125,x_max:980,y_min:87,y_max:993,ha:906,leftSideBearing:125,advanceWidth:1060},"?":{x_min:65.92660602419838,x_max:890,y_min:0,y_max:1477,ha:1477,leftSideBearing:65,advanceWidth:953},"@":{x_min:84.3592218305664,x_max:1705.2346925277395,y_min:-453,y_max:1431,ha:1884,leftSideBearing:84,advanceWidth:1821},A:{x_min:70,x_max:1463,y_min:0,y_max:1456,ha:1456,leftSideBearing:70,advanceWidth:1533},B:{x_min:81,x_max:1253,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1322},C:{x_min:80,x_max:1174,y_min:-21,y_max:1477,ha:1498,leftSideBearing:80,advanceWidth:1290},D:{x_min:81,x_max:1291,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1356},E:{x_min:81,x_max:1190,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1306},F:{x_min:81,x_max:1176,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1256},G:{x_min:80,x_max:1226,y_min:-21,y_max:1477,ha:1498,leftSideBearing:80,advanceWidth:1346},H:{x_min:81,x_max:1497,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1578},I:{x_min:81,x_max:604,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:685},J:{x_min:60,x_max:1100,y_min:-21,y_max:1456,ha:1477,leftSideBearing:60,advanceWidth:1169},K:{x_min:81,x_max:1427,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1501},L:{x_min:81,x_max:1130,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1210},M:{x_min:94,x_max:1888,y_min:0,y_max:1456,ha:1456,leftSideBearing:94,advanceWidth:1982},N:{x_min:83,x_max:1509,y_min:0,y_max:1456,ha:1456,leftSideBearing:83,advanceWidth:1592},O:{x_min:70,x_max:1281,y_min:-21,y_max:1477,ha:1498,leftSideBearing:70,advanceWidth:1351},P:{x_min:81,x_max:1242,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1297},Q:{x_min:70,x_max:1348,y_min:-245,y_max:1477,ha:1722,leftSideBearing:70,advanceWidth:1376},R:{x_min:81,x_max:1285,y_min:0,y_max:1455,ha:1455,leftSideBearing:81,advanceWidth:1385},S:{x_min:115,x_max:1116,y_min:-21,y_max:1477,ha:1498,leftSideBearing:115,advanceWidth:1206},T:{x_min:96,x_max:1306,y_min:0,y_max:1456,ha:1456,leftSideBearing:96,advanceWidth:1406},U:{x_min:70,x_max:1452,y_min:-21,y_max:1456,ha:1477,leftSideBearing:70,advanceWidth:1522},V:{x_min:65,x_max:1443,y_min:0,y_max:1456,ha:1456,leftSideBearing:65,advanceWidth:1508},W:{x_min:72,x_max:2057,y_min:0,y_max:1456,ha:1456,leftSideBearing:72,advanceWidth:2129},X:{x_min:80,x_max:1449,y_min:0,y_max:1456,ha:1456,leftSideBearing:80,advanceWidth:1529},Y:{x_min:65,x_max:1396,y_min:0,y_max:1456,ha:1456,leftSideBearing:65,advanceWidth:1461},Z:{x_min:90,x_max:1107,y_min:0,y_max:1456,ha:1456,leftSideBearing:90,advanceWidth:1197},"[":{x_min:157,x_max:541,y_min:-312,y_max:1664,ha:1976,leftSideBearing:157,advanceWidth:573},"\\":{x_min:36,x_max:830,y_min:-125,y_max:1456,ha:1581,leftSideBearing:36,advanceWidth:841},"]":{x_min:23,x_max:408,y_min:-312,y_max:1664,ha:1976,leftSideBearing:23,advanceWidth:552},"^":{x_min:71,x_max:802,y_min:729,y_max:1456,ha:727,leftSideBearing:71,advanceWidth:864},_:{x_min:119,x_max:1041,y_min:-154,y_max:0,ha:154,leftSideBearing:119,advanceWidth:1168},"`":{x_min:40,x_max:456,y_min:1288,y_max:1560,ha:272,leftSideBearing:40,advanceWidth:496},a:{x_min:79,x_max:1053,y_min:-21,y_max:1102,ha:1123,leftSideBearing:79,advanceWidth:1132},b:{x_min:-16,x_max:1071,y_min:-21,y_max:1560,ha:1581,leftSideBearing:-16,advanceWidth:1145},c:{x_min:78,x_max:988,y_min:-21,y_max:1102,ha:1123,leftSideBearing:78,advanceWidth:1067},d:{x_min:78,x_max:1156,y_min:-21,y_max:1560,ha:1581,leftSideBearing:78,advanceWidth:1218},e:{x_min:74,x_max:980,y_min:-21,y_max:1102,ha:1123,leftSideBearing:74,advanceWidth:1059},f:{x_min:64,x_max:731,y_min:0,y_max:1581,ha:1581,leftSideBearing:64,advanceWidth:725},g:{x_min:78,x_max:1133,y_min:-437,y_max:1102,ha:1539,leftSideBearing:78,advanceWidth:1157},h:{x_min:49,x_max:1255,y_min:0,y_max:1560,ha:1560,leftSideBearing:49,advanceWidth:1315},i:{x_min:67,x_max:590,y_min:0,y_max:1560,ha:1560,leftSideBearing:67,advanceWidth:652},j:{x_min:-56,x_max:381,y_min:-437,y_max:1560,ha:1997,leftSideBearing:-56,advanceWidth:525},k:{x_min:64,x_max:1248,y_min:0,y_max:1560,ha:1560,leftSideBearing:64,advanceWidth:1287},l:{x_min:64,x_max:587,y_min:0,y_max:1560,ha:1560,leftSideBearing:64,advanceWidth:653},m:{x_min:74,x_max:1905,y_min:0,y_max:1102,ha:1102,leftSideBearing:74,advanceWidth:1977},n:{x_min:74,x_max:1278,y_min:0,y_max:1102,ha:1102,leftSideBearing:74,advanceWidth:1343},o:{x_min:78,x_max:1046,y_min:-21,y_max:1102,ha:1123,leftSideBearing:78,advanceWidth:1124},p:{x_min:34,x_max:1119,y_min:-416,y_max:1102,ha:1518,leftSideBearing:34,advanceWidth:1197},q:{x_min:78,x_max:1135,y_min:-416,y_max:1102,ha:1518,leftSideBearing:78,advanceWidth:1139},r:{x_min:72,x_max:808,y_min:0,y_max:1102,ha:1102,leftSideBearing:72,advanceWidth:854},s:{x_min:104,x_max:933,y_min:-21,y_max:1102,ha:1123,leftSideBearing:104,advanceWidth:1022},t:{x_min:24,x_max:678,y_min:-17,y_max:1343,ha:1360,leftSideBearing:24,advanceWidth:730},u:{x_min:52,x_max:1181,y_min:-21,y_max:1082,ha:1103,leftSideBearing:52,advanceWidth:1245},v:{x_min:26,x_max:1176,y_min:0,y_max:1082,ha:1082,leftSideBearing:26,advanceWidth:1206},w:{x_min:52,x_max:1777,y_min:0,y_max:1082,ha:1082,leftSideBearing:52,advanceWidth:1823},x:{x_min:42,x_max:1163,y_min:0,y_max:1082,ha:1082,leftSideBearing:42,advanceWidth:1203},y:{x_min:24,x_max:1172,y_min:-437,y_max:1082,ha:1519,leftSideBearing:24,advanceWidth:1192},z:{x_min:88,x_max:960,y_min:0,y_max:1082,ha:1082,leftSideBearing:88,advanceWidth:1032},"{":{x_min:63,x_max:671,y_min:-364,y_max:1597,ha:1961,leftSideBearing:63,advanceWidth:701},"|":{x_min:150,x_max:307,y_min:-270,y_max:1456,ha:1726,leftSideBearing:150,advanceWidth:451},"}":{x_min:27,x_max:635,y_min:-364,y_max:1597,ha:1961,leftSideBearing:27,advanceWidth:701},"~":{x_min:121,x_max:1257,y_min:401,y_max:803,ha:402,leftSideBearing:121,advanceWidth:1386}},fontFamily:"Roboto Slab",resolution:2048,generatedOn:"2020-06-15T19:12:58.120Z"};class Fi{static sortAndUnique(t,e,i){if(t.length>1){const s=[];let n;t.sort(e);for(let e=0;eRi(void 0,void 0,void 0,(function*(){const i=F.load(t);if(i.hasData())return;if(!e){if(!(t in Bi))throw new f("UnknownFont",`Music font ${t} does not exist.`);e=Bi[t]}let s;if("string"==typeof e){const i=yield import(e),n=_().VexFlowFont;s=void 0!==n&&void 0!==n[t]?n[t]:i.Font}else s=e;i.setData(s.data),i.setMetrics(s.metrics)})),function(){{const t=Mi,{fontFamily:e,resolution:i,glyphs:s}=t;F.load(e,t);const n="b";rt.registerInfo({family:e,resolution:i,glyphs:s,maxSizeGlyph:n,monospaced:!1,bold:!1,italic:!1,superscriptOffset:.66,subscriptOffset:.66,serifs:!0,description:"Text font to pair with the Bravura / Gonville music fonts."})}{const t=Pi,{fontFamily:e,resolution:i,glyphs:s}=t;F.load(e,t);const n="b";rt.registerInfo({family:e,resolution:i,glyphs:s,maxSizeGlyph:n,monospaced:!1,bold:!1,italic:!1,superscriptOffset:.66,subscriptOffset:.66,serifs:!1,description:"Text font to pair with the Petaluma music font."})}}(),e=e.default})()})); +//# sourceMappingURL=vexflow-core.js.map \ No newline at end of file diff --git a/build/cjs/vexflow-core.js.map b/build/cjs/vexflow-core.js.map new file mode 100644 index 0000000000..a30c3f1a1a --- /dev/null +++ b/build/cjs/vexflow-core.js.map @@ -0,0 +1 @@ +{"version":3,"file":"vexflow-core.js","mappings":";;;;;CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAa,IAAID,IAEjBD,EAAU,IAAIC,IARhB,CASsB,oBAAXK,OAAyBA,OAA+B,oBAAfC,WAA6BA,WAAaC,MAAO,WACrG,Y,aCTA,IAAIC,EAAsB,CCA1BA,EAAwB,CAACP,EAASQ,KACjC,IAAI,IAAIC,KAAOD,EACXD,EAAoBG,EAAEF,EAAYC,KAASF,EAAoBG,EAAEV,EAASS,IAC5EE,OAAOC,eAAeZ,EAASS,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,OCJ3EF,EAAoBQ,EAAI,WACvB,GAA0B,iBAAfV,WAAyB,OAAOA,WAC3C,IACC,OAAOC,MAAQ,IAAIU,SAAS,cAAb,GACd,MAAOC,GACR,GAAsB,iBAAXb,OAAqB,OAAOA,QALjB,GCAxBG,EAAoBG,EAAI,CAACQ,EAAKC,IAAUR,OAAOS,UAAUC,eAAeC,KAAKJ,EAAKC,GCClFZ,EAAoBgB,EAAKvB,IACH,oBAAXwB,QAA0BA,OAAOC,aAC1Cd,OAAOC,eAAeZ,EAASwB,OAAOC,YAAa,CAAEC,MAAO,WAE7Df,OAAOC,eAAeZ,EAAS,aAAc,CAAE0B,OAAO,K,yCCOhD,SAASC,EAAWT,EAAKU,EAAUC,GAAiB,GAEvD,GAAmB,iBAARX,GAA4B,OAARA,EAC3B,OAAO,EAIX,IAAIY,EAAiBZ,EAAIa,YAEzB,GAAIF,EAAgB,CAEhB,KAAe,OAARX,GAAc,CAEjB,GADAY,EAAiBZ,EAAIa,YACjB,aAAcD,GAAkBA,EAAeE,WAAaJ,EAC5D,OAAO,EAEXV,EAAMP,OAAOsB,eAAef,GAEhC,OAAO,EAIP,MAAO,aAAcY,GAAkBA,EAAeE,WAAaJ,E,s6EAGpE,MAAMM,EAAgBhB,GAAQS,EAAWT,EAAKiB,EAASC,YACjDC,EAAgBnB,GAAQS,EAAWT,EAAKiB,EAASG,YACjDC,EAAarB,GAAQS,EAAWT,EAAKiB,EAASK,SAC9CC,EAASvB,GAAQS,EAAWT,EAAKiB,EAASO,KAC1CC,EAAezB,GAAQS,EAAWT,EAAKiB,EAASS,WAChDC,EAAoB3B,GAAQS,EAAWT,EAAKiB,EAASW,gBACrDC,EAAU7B,GAAQS,EAAWT,EAAKiB,EAASa,MAC3CC,EAAmB/B,GAAQS,EAAWT,EAAKiB,EAASe,eACpDC,EAAejC,GAAQS,EAAWT,EAAKiB,EAASiB,WAChDC,EAAmBnC,GAAQS,EAAWT,EAAKiB,EAASmB,eACpDC,EAAarC,GAAQS,EAAWT,EAAKiB,EAASqB,SAGpD,IAAIrB,GACX,SAAWA,GACPA,EAAqB,WAAI,aACzBA,EAAqB,WAAI,aACzBA,EAAuB,aAAI,eAC3BA,EAAkB,QAAI,UACtBA,EAAkB,QAAI,UACtBA,EAAe,KAAI,OACnBA,EAAe,KAAI,OACnBA,EAAsB,YAAI,cAC1BA,EAAe,KAAI,OACnBA,EAAmB,SAAI,WACvBA,EAAoB,UAAI,YACxBA,EAAgB,MAAI,QACpBA,EAAc,IAAI,MAClBA,EAAkB,QAAI,UACtBA,EAAmB,SAAI,WACvBA,EAAyB,eAAI,iBAC7BA,EAAoB,UAAI,YACxBA,EAAgB,MAAI,QACpBA,EAAoB,UAAI,YACxBA,EAAoB,UAAI,YACxBA,EAAyB,eAAI,iBAC7BA,EAAuB,aAAI,eAC3BA,EAAuB,aAAI,eAC3BA,EAAqB,WAAI,aACzBA,EAAmB,SAAI,WACvBA,EAA2B,iBAAI,mBAC/BA,EAAe,KAAI,OACnBA,EAAmB,SAAI,WACvBA,EAAuB,aAAI,eAC3BA,EAAmB,SAAI,WACvBA,EAAsB,YAAI,cAC1BA,EAAuB,aAAI,eAC3BA,EAAwB,cAAI,gBAC5BA,EAAqB,WAAI,aACzBA,EAAqB,WAAI,aACzBA,EAAgB,MAAI,QACpBA,EAAyB,eAAI,iBAC7BA,EAAuB,aAAI,eAC3BA,EAAoB,UAAI,YACxBA,EAAwB,cAAI,gBAC5BA,EAAoB,UAAI,YACxBA,EAAuB,aAAI,eAC3BA,EAAqB,WAAI,aACzBA,EAAoB,UAAI,YACxBA,EAAmB,SAAI,WACvBA,EAAe,KAAI,OACnBA,EAAwB,cAAI,gBAC5BA,EAAuB,aAAI,eAC3BA,EAAiB,OAAI,SACrBA,EAAiB,OAAI,SACrBA,EAAkB,QAAI,UACtBA,EAAmB,SAAI,WACvBA,EAAmB,SAAI,WACvBA,EAAiB,OAAI,SACrBA,EAAsB,YAAI,cAC1BA,EAAuB,aAAI,eAC3BA,EAAmB,SAAI,WACvBA,EAAmB,SAAI,WACvBA,EAAwB,cAAI,gBAC5BA,EAAsB,YAAI,cAC1BA,EAAkB,QAAI,UACtBA,EAAiB,OAAI,SACrBA,EAAkB,QAAI,UACtBA,EAAyB,eAAI,iBAC7BA,EAAgB,MAAI,QACpBA,EAAgB,MAAI,QAlExB,CAmEGA,IAAaA,EAAW,KClHpB,MAAMsB,UAAqBC,MAC9B3B,YAAY4B,EAAMC,EAAU,IACxBC,MAAM,kBAAoBF,EAAO,KAAOC,GACxCtD,KAAKqD,KAAOA,GAKb,SAASG,IACZ,MAA0B,oBAAfzD,WACAA,WAES,oBAAT0D,KACAA,KAEW,oBAAX3D,OACAA,YAEW,IAAX,EAAAW,EACA,EAAAA,EAEJC,SAAS,cAATA,GAMJ,SAASgD,EAAQC,EAAGN,EAAO,YAAaC,EAAU,IACrD,QAAUM,IAAND,EACA,MAAM,IAAIR,EAAaE,EAAMC,GAEjC,OAAOK,EAIJ,SAASE,EAAIC,KAAUC,GAC1B,IAAKA,EACD,OACJ,MAAMC,EAAOC,MAAMnD,UAAUoD,MAAMlD,KAAK+C,GAAMI,KAAK,KACnDX,IAAeY,QAAQP,IAAIC,EAAQ,KAAOE,GAIvC,SAASK,KAAQN,GACpB,MAAMC,EAAOD,EAAKI,KAAK,KACjBG,EAAM,IAAIlB,MAChBI,IAAeY,QAAQP,IAAI,YAAaG,EAAMM,EAAIC,OAO/C,SAASC,EAAQC,EAAGC,GACvB,IAAIC,EAAWD,GAAKD,EAAIC,GAAK,EALjC,IAAgBf,EAAGiB,EASf,OAHID,EAAW,EAAI,IACfA,IAPQhB,EAOqB,GAAXgB,IAPPC,EAOsB,IANrBA,EAAI,EAAIC,SAAS,GAAGlB,EAAIiB,EAAK,IAAMA,EAAIA,EAAIC,SAAS,GAAGlB,EAAIiB,EAAK,IAAMA,GAM5C,IAEnCD,EAMJ,SAASG,EAAOC,GACnB,MAAO,MAAMA,IAKV,SAASC,EAAeP,GAK3B,OAJAA,GAAS,EAAIQ,KAAKC,IACV,IACJT,GAAK,EAAIQ,KAAKC,IAEXT,ECvEJ,MAAMU,EAET1D,YAAY2D,EAAWC,GACnBrF,KAAKoF,UAAY,EACjBpF,KAAKqF,YAAc,EACnBrF,KAAKsF,IAAIF,EAAWC,GAEb3D,sBACP,OAAOG,EAASsD,SAMpBI,WAAWd,EAAGC,GACV,GAAiB,iBAAND,GAAkBe,OAAOC,MAAMhB,IAAmB,iBAANC,GAAkBc,OAAOC,MAAMf,GAClF,MAAM,IAAIvB,EAAa,cAAe,oBAAoBsB,MAAMC,KAEpE,IAAIgB,EACJ,KAAa,IAANhB,GACHgB,EAAIhB,EACJA,EAAID,EAAIC,EACRD,EAAIiB,EAER,OAAOjB,EAGXc,WAAWd,EAAGC,GACV,OAAQD,EAAIC,EAAKS,EAASQ,IAAIlB,EAAGC,GAGrCa,YAAYxB,GACR,OAAoB,IAAhBA,EAAK6B,OACE,EAEc,IAAhB7B,EAAK6B,OACH7B,EAAK,GAES,IAAhBA,EAAK6B,OACHT,EAASU,IAAI9B,EAAK,GAAIA,EAAK,IAK3BoB,EAASU,IAAI9B,EAAK+B,QAASX,EAASY,KAAKhC,IAIxDuB,IAAIF,EAAY,EAAGC,EAAc,GAG7B,OAFArF,KAAKoF,UAAYA,EACjBpF,KAAKqF,YAAcA,EACZrF,KAGXoB,QACI,OAAOpB,KAAKoF,UAAYpF,KAAKqF,YAGjCW,WACI,IAAIC,EAAIjG,KAAKoF,UACTc,EAAIlG,KAAKqF,YACb,MAAMc,EAAMhB,EAASQ,IAAIM,EAAGC,GAO5B,OANAD,GAAKE,EACLD,GAAKC,EACDD,EAAI,IACJA,GAAKA,EACLD,GAAKA,GAEFjG,KAAKsF,IAAIW,EAAGC,GAGvBE,IAAIC,EAAS,EAAGC,EAAS,GACrB,MAAOC,EAAgBC,GAAoBC,EAA2BJ,EAAQC,GACxEI,EAAMvB,EAASU,IAAI7F,KAAKqF,YAAamB,GACrC/B,EAAIiC,EAAM1G,KAAKqF,YACfX,EAAIgC,EAAMF,EACVP,EAAIjG,KAAKoF,UAAYX,EAAI8B,EAAiB7B,EAChD,OAAO1E,KAAKsF,IAAIW,EAAGS,GAGvBC,SAASN,EAAS,EAAGC,EAAS,GAC1B,MAAOC,EAAgBC,GAAoBC,EAA2BJ,EAAQC,GACxEI,EAAMvB,EAASU,IAAI7F,KAAKqF,YAAamB,GACrC/B,EAAIiC,EAAM1G,KAAKqF,YACfX,EAAIgC,EAAMF,EACVP,EAAIjG,KAAKoF,UAAYX,EAAI8B,EAAiB7B,EAChD,OAAO1E,KAAKsF,IAAIW,EAAGS,GAGvBE,SAASP,EAAS,EAAGC,EAAS,GAC1B,MAAOC,EAAgBC,GAAoBC,EAA2BJ,EAAQC,GAC9E,OAAOtG,KAAKsF,IAAItF,KAAKoF,UAAYmB,EAAgBvG,KAAKqF,YAAcmB,GAGxEK,OAAOR,EAAS,EAAGC,EAAS,GACxB,MAAOC,EAAgBC,GAAoBC,EAA2BJ,EAAQC,GAC9E,OAAOtG,KAAKsF,IAAItF,KAAKoF,UAAYoB,EAAkBxG,KAAKqF,YAAckB,GAG1EO,OAAOC,GACH,MAAMtC,EAAIU,EAAS6B,kBAAkBC,KAAKF,GAASf,WAC7CtB,EAAIS,EAAS+B,kBAAkBD,KAAKjH,MAAMgG,WAChD,OAAOvB,EAAEW,YAAcV,EAAEU,WAAaX,EAAEY,cAAgBX,EAAEW,YAG9D8B,YAAYJ,GACR,MAAMtC,EAAIU,EAAS+B,kBAAkBD,KAAKjH,MAE1C,OADAyE,EAAEkC,SAASI,GACJtC,EAAEW,UAAY,EAGzBgC,kBAAkBL,GACd,MAAMtC,EAAIU,EAAS+B,kBAAkBD,KAAKjH,MAE1C,OADAyE,EAAEkC,SAASI,GACJtC,EAAEW,WAAa,EAG1BiC,SAASN,GACL,OAAQ/G,KAAKoH,kBAAkBL,GAGnCO,eAAeP,GACX,OAAQ/G,KAAKmH,YAAYJ,GAG7BQ,QACI,OAAO,IAAIpC,EAASnF,KAAKoF,UAAWpF,KAAKqF,aAG7C4B,KAAKO,GACD,MAAqB,iBAAVA,EACAxH,KAAKsF,IAAIkC,EAAO,GAGhBxH,KAAKsF,IAAIkC,EAAMpC,UAAWoC,EAAMnC,aAI/CoC,WACI,OAAOxC,KAAKyC,MAAM1H,KAAKoF,UAAYpF,KAAKqF,aAG5CsC,YACI,OAAO3H,KAAKoF,UAAYpF,KAAKqF,YAGjCuC,UAGI,OAFA5H,KAAKqF,YAAcJ,KAAK4C,IAAI7H,KAAKqF,aACjCrF,KAAKoF,UAAYH,KAAK4C,IAAI7H,KAAKoF,WACxBpF,KAGX8H,WACI,MAAO,GAAG9H,KAAKoF,aAAapF,KAAKqF,cAGrC0C,qBACI,OAAO5C,EAAS6C,oBAAoBf,KAAKjH,MAAMgG,WAAW8B,WAG9DG,gBACI,IAAIC,EAAI,GACR,MAAMC,EAAInI,KAAKyH,WACTW,EAAIjD,EAAS6C,oBAAoBf,KAAKjH,MAgB5C,OAfImI,EAAI,GACJC,EAAER,UAEI,IAANO,GACAD,GAAKC,EACe,IAAhBC,EAAEhD,YACF8C,GAAK,IAAIE,EAAEL,yBAIfG,EADqB,IAAhBE,EAAEhD,UACH,IAGAgD,EAAEL,qBAEHG,EAGXG,MAAMC,GACF,MAAMC,EAAID,EAAIE,MAAM,KACd5D,EAAIC,SAAS0D,EAAE,GAAI,IACnBrC,EAAIqC,EAAE,GAAK1D,SAAS0D,EAAE,GAAI,IAAM,EACtC,OAAOvI,KAAKsF,IAAIV,EAAGsB,IAQ3B,SAASO,EAA2B7B,EAAGsB,EAAI,GACvC,MAAiB,iBAANtB,EAEA,CAACA,EAAGsB,GAIJ,CAACtB,EAAEQ,UAAWR,EAAES,aAX/BF,EAAS6B,kBAAoB,IAAI7B,EACjCA,EAAS+B,kBAAoB,IAAI/B,EACjCA,EAAS6C,oBAAsB,IAAI7C,ECtM5B,MAAMsD,EACThH,YAAYkC,EAAG+E,EAAGC,EAAGC,GACjB5I,KAAK2D,EAAIA,EACT3D,KAAK0I,EAAIA,EACT1I,KAAK2I,EAAIA,EACT3I,KAAK4I,EAAIA,EAKbrD,YAAYsD,GACR,OAAO,IAAIJ,EAAYI,EAAKlF,EAAGkF,EAAKH,EAAGG,EAAKF,EAAGE,EAAKD,GAGxDE,OACI,OAAO9I,KAAK2D,EAGhBoF,OACI,OAAO/I,KAAK0I,EAGhBM,OACI,OAAOhJ,KAAK2I,EAGhBM,OACI,OAAOjJ,KAAK4I,EAGhBM,KAAKvF,GAED,OADA3D,KAAK2D,EAAIA,EACF3D,KAGXmJ,KAAKT,GAED,OADA1I,KAAK0I,EAAIA,EACF1I,KAGXoJ,KAAKT,GAED,OADA3I,KAAK2I,EAAIA,EACF3I,KAGXqJ,KAAKT,GAED,OADA5I,KAAK4I,EAAIA,EACF5I,KAGXsJ,KAAK3F,EAAG+E,GAGJ,OAFA1I,KAAK2D,GAAKA,EACV3D,KAAK0I,GAAKA,EACH1I,KAGXuH,QACI,OAAOkB,EAAYxB,KAAKjH,MAM5BuJ,UAAUC,GACN,MAAMX,EAAOW,EACPC,EAAQzJ,KAAK2D,EAAIkF,EAAKlF,EAAI3D,KAAK2D,EAAIkF,EAAKlF,EACxC+F,EAAQ1J,KAAK0I,EAAIG,EAAKH,EAAI1I,KAAK0I,EAAIG,EAAKH,EACxCiB,EAAQ1E,KAAK2E,IAAI5J,KAAK2D,EAAI3D,KAAK2I,EAAGE,EAAKlF,EAAIkF,EAAKF,GAAKc,EACrDI,EAAQ5E,KAAK2E,IAAI5J,KAAK0I,EAAI1I,KAAK4I,EAAGC,EAAKH,EAAIG,EAAKD,GAAKc,EAK3D,OAJA1J,KAAK2D,EAAI8F,EACTzJ,KAAK0I,EAAIgB,EACT1J,KAAK2I,EAAIgB,EACT3J,KAAK4I,EAAIiB,EACF7J,MChER,MAAM8J,EACTrI,cACIzB,KAAK+J,GAAKvE,OAAOwE,IACjBhK,KAAKiK,GAAKzE,OAAOwE,IACjBhK,KAAKkK,GAAK1E,OAAOwE,IACjBhK,KAAKmK,GAAK3E,OAAOwE,IAGrBI,QACI,OAAOpK,KAAK+J,GAGhBM,QACI,OAAOrK,KAAKiK,GAGhBK,QACI,OAAOtK,KAAKkK,GAAKlK,KAAK+J,GAG1BQ,SACI,OAAOvK,KAAKmK,GAAKnK,KAAKiK,GAG1BO,SAAS7G,EAAG+E,IACJjD,MAAMzF,KAAK+J,KAAOpG,EAAI3D,KAAK+J,MAC3B/J,KAAK+J,GAAKpG,IACV8B,MAAMzF,KAAKkK,KAAOvG,EAAI3D,KAAKkK,MAC3BlK,KAAKkK,GAAKvG,IACV8B,MAAMzF,KAAKiK,KAAOvB,EAAI1I,KAAKiK,MAC3BjK,KAAKiK,GAAKvB,IACVjD,MAAMzF,KAAKmK,KAAOzB,EAAI1I,KAAKmK,MAC3BnK,KAAKmK,GAAKzB,GAGlB+B,KAAK9G,GACD3D,KAAKwK,SAAS7G,EAAG3D,KAAKiK,IAG1BS,KAAKhC,GACD1I,KAAKwK,SAASxK,KAAK+J,GAAIrB,GAG3BiC,kBAAkBC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,GACvCjL,KAAKwK,SAASI,EAAKC,GACnB7K,KAAKwK,SAASQ,EAAKC,GACnB,MAAMC,EAAOJ,EAAMF,EAEnB,IAAIO,EAAQD,GADCF,EAAMF,GAEnB,GAAa,GAATK,EAAY,CACZ,MAAMzF,EAAIwF,EAAOC,EACjB,GAAIzF,EAAI,GAAKA,EAAI,EAAG,CAChB,MAAM0F,EAAK,EAAI1F,EACf1F,KAAKyK,KAAKW,EAAKA,EAAKR,EAAM,EAAIQ,EAAK1F,EAAIoF,EAAMpF,EAAIA,EAAIsF,IAG7D,MAAMK,EAAON,EAAMF,EAGnB,GADAM,EAAQE,GADKJ,EAAMF,GAEN,GAATI,EAAY,CACZ,MAAMzF,EAAI2F,EAAOF,EACjB,GAAIzF,EAAI,GAAKA,EAAI,EAAG,CAChB,MAAM0F,EAAK,EAAI1F,EACf1F,KAAK0K,KAAKU,EAAKA,EAAKP,EAAM,EAAIO,EAAK1F,EAAIqF,EAAMrF,EAAIA,EAAIuF,KAKjEK,eAAeV,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKM,EAAKC,GAE9C,MAAMC,EAAK,CAACb,EAAKC,GACXa,EAAK,CAACZ,EAAKC,GACXY,EAAK,CAACX,EAAKC,GACXW,EAAK,CAACL,EAAKC,GACjB,IAAIjD,EACJvI,KAAKwK,SAASiB,EAAG,GAAIA,EAAG,IACxBzL,KAAKwK,SAASoB,EAAG,GAAIA,EAAG,IACxB,MAAMxD,EAAI,CAAC1C,EAAG6C,IAAMtD,KAAK4G,IAAI,EAAInG,EAAG,GAAK+F,EAAGlD,GACxC,EAAItD,KAAK4G,IAAI,EAAInG,EAAG,GAAKA,EAAIgG,EAAGnD,GAChC,GAAK,EAAI7C,GAAKT,KAAK4G,IAAInG,EAAG,GAAKiG,EAAGpD,GAClCtD,KAAK4G,IAAInG,EAAG,GAAKkG,EAAGrD,GACxB,IAAKA,EAAI,EAAGA,GAAK,EAAGA,IAAK,CACrB,MAAM7D,EAAI,EAAI+G,EAAGlD,GAAK,GAAKmD,EAAGnD,GAAK,EAAIoD,EAAGpD,GACpC9D,GAAK,EAAIgH,EAAGlD,GAAK,EAAImD,EAAGnD,GAAK,EAAIoD,EAAGpD,GAAK,EAAIqD,EAAGrD,GAChDuD,EAAI,EAAIJ,EAAGnD,GAAK,EAAIkD,EAAGlD,GAC7B,GAAU,IAAN9D,EAAS,CACT,GAAU,IAANC,EACA,SACJ,MAAMgB,GAAKoG,EAAIpH,EACX,EAAIgB,GAAKA,EAAI,IACH,IAAN6C,GACAvI,KAAKyK,KAAKrC,EAAE1C,EAAG6C,IACT,IAANA,GACAvI,KAAK0K,KAAKtC,EAAE1C,EAAG6C,KAEvB,SAEJ,MAAMwD,EAAO9G,KAAK4G,IAAInH,EAAG,GAAK,EAAIoH,EAAIrH,EACtC,GAAIsH,EAAO,EACP,SACJ,MAAMC,IAAOtH,EAAIO,KAAKgH,KAAKF,KAAU,EAAItH,GACrC,EAAIuH,GAAMA,EAAK,IACL,IAANzD,GACAvI,KAAKyK,KAAKrC,EAAE4D,EAAIzD,IACV,IAANA,GACAvI,KAAK0K,KAAKtC,EAAE4D,EAAIzD,KAExB,MAAM2D,IAAOxH,EAAIO,KAAKgH,KAAKF,KAAU,EAAItH,GACrC,EAAIyH,GAAMA,EAAK,IACL,IAAN3D,GACAvI,KAAKyK,KAAKrC,EAAE8D,EAAI3D,IACV,IAANA,GACAvI,KAAK0K,KAAKtC,EAAE8D,EAAI3D,OC3HpC,IAUW4D,EAKAC,EAfPC,EAAwC,SAAUC,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUzL,GAAS,IAAM0L,EAAKL,EAAUM,KAAK3L,IAAW,MAAOT,GAAKiM,EAAOjM,IACpF,SAASqM,EAAS5L,GAAS,IAAM0L,EAAKL,EAAiB,MAAErL,IAAW,MAAOT,GAAKiM,EAAOjM,IACvF,SAASmM,EAAKG,GAJlB,IAAe7L,EAIa6L,EAAOC,KAAOP,EAAQM,EAAO7L,QAJ1CA,EAIyD6L,EAAO7L,MAJhDA,aAAiBoL,EAAIpL,EAAQ,IAAIoL,GAAE,SAAUG,GAAWA,EAAQvL,OAIT+L,KAAKN,EAAWG,GAClGF,GAAML,EAAYA,EAAUW,MAAMd,EAASC,GAAc,KAAKQ,YAetE,IAAIM,GAVJ,SAAWlB,GACPA,EAAmB,OAAI,SACvBA,EAAiB,KAAI,OAFzB,CAGGA,IAAeA,EAAa,KAE/B,SAAWC,GACPA,EAAkB,OAAI,SACtBA,EAAkB,OAAI,SAF1B,CAGGA,IAAcA,EAAY,KAG7B,MAAMkB,EAAQ,GACP,MAAMC,EAKT9L,YAAY+L,GACRxN,KAAKyN,KAAOD,EAQhBjI,+BAA+BmI,EAAWH,EAAKI,MAC3C,IAAIC,EACJ,GAAwB,iBAAbF,EAEP,OAAOA,EAAWH,EAAKM,cAAcC,GAEpC,CACD,MAAM1M,EAAQ2M,WAAWL,GACzB,GAAIjI,MAAMrE,GACN,OAAO,EAEX,MAAM4M,EAAON,EAASO,QAAQ,WAAY,IAAIC,cAE9C,OAAO9M,GADsD,QAAnCwM,EAAKL,EAAKM,cAAcG,UAA0B,IAAPJ,EAAgBA,EAAK,IAUlGrI,+BAA+BmI,EAAWH,EAAKI,MAC3C,IAAIC,EACJ,GAAwB,iBAAbF,EAEP,OAAOA,EAEN,CACD,MAAMtM,EAAQ2M,WAAWL,GACzB,GAAIjI,MAAMrE,GACN,OAAO,EAEX,MAAM4M,EAAON,EAASO,QAAQ,WAAY,IAAIC,cAE9C,OAAO9M,IADuD,QAAnCwM,EAAKL,EAAKM,cAAcG,UAA0B,IAAPJ,EAAgBA,EAAK,GAAKL,EAAKM,cAAcC,KAW3HvI,gBAAgB6C,EAAG+F,EAAMC,EAAQC,GAG7B,GAAiB,iBAANjG,QAA2BxE,IAATuK,QAAiCvK,IAAXwK,QAAkCxK,IAAVyK,EACvE,OAAOd,EAAKe,cAAclG,GAE9B,IAAImG,EA+BJ,MA9BiB,iBAANnG,GAEPmG,EAASnG,EAAEmG,OACXJ,EAAO/F,EAAE+F,KACTC,EAAShG,EAAEgG,OACXC,EAAQjG,EAAEiG,OAIVE,EAASnG,EAEbmG,EAASA,MAAAA,EAAuCA,EAAShB,EAAKiB,WAC9DL,EAAOA,MAAAA,EAAmCA,EAAOZ,EAAKI,KAAO,KAC7DS,EAASA,MAAAA,EAAuCA,EAASjC,EAAWsC,OACpEJ,EAAQA,MAAAA,EAAqCA,EAAQjC,EAAUqC,OAChD,KAAXL,IACAA,EAASjC,EAAWsC,QAEV,KAAVJ,IACAA,EAAQjC,EAAUqC,QAGF,iBAATN,IACPA,EAAO,GAAGA,OAGQ,iBAAXC,IACPA,EAASA,EAAOtG,YAGb,CAAEyG,OAAAA,EAAQJ,KAAAA,EAAMC,OAAAA,EAAQC,MAAAA,GAKnC9I,qBAAqBmJ,GAIZrB,IACDA,EAAasB,SAASC,cAAc,SAExCvB,EAAWgB,MAAMQ,KAAOH,EACxB,MAAM,WAAEI,EAAU,SAAEpB,EAAQ,WAAEqB,EAAU,UAAEC,GAAc3B,EAAWgB,MACnE,MAAO,CAAEE,OAAQO,EAAYX,KAAMT,EAAUU,OAAQW,EAAYV,MAAOW,GAK5EzJ,mBAAmB0J,GACf,IAAIrB,EACJ,IAAKqB,EACD,MAAO,GAEX,IAAIZ,EACJ,MAAMa,EAAKD,EAASZ,MAOpB,IAAID,EALAC,EADAa,IAAO9C,EAAUqC,QAAiB,KAAPS,QAAoBtL,IAAPsL,EAChC,GAGAA,EAAGC,OAAS,IAGxB,MAAMC,EAAKH,EAASb,OAUpB,IAAID,EARAC,EADAgB,IAAOjD,EAAWsC,QAAiB,KAAPW,QAAoBxL,IAAPwL,EAChC,GAEU,iBAAPA,EACHA,EAAK,IAGLA,EAAGD,OAAS,IAGzB,MAAME,EAAKJ,EAASd,KAEhBA,OADOvK,IAAPyL,EACO9B,EAAKI,KAAO,MAEA,iBAAP0B,EACLA,EAAK,MAILA,EAAGF,OAAS,IAGvB,MAAO,GAAGd,IAAQD,IAASD,IADe,QAA1BP,EAAKqB,EAASV,cAA2B,IAAPX,EAAgBA,EAAKL,EAAKiB,aAUhFjJ,iBAAiBmI,EAAU4B,GACvB,GAAwB,iBAAb5B,EACP,OAAQA,EAAW4B,EAKnB,MAAO,GAFOvB,WAAWL,GAEP4B,IADL5B,EAASO,QAAQ,WAAY,MAQlD1I,cAAc6I,GACV,GAAKA,EAGA,IAAsB,iBAAXA,EACZ,OAAOA,GAAU,IAEhB,CAED,MAAMmB,EAAe1K,SAASuJ,EAAQ,IACtC,OAAI3I,MAAM8J,GAC0B,SAAzBnB,EAAOF,cAGPqB,GAAgB,KAZ3B,OAAO,EAoBfhK,gBAAgB8I,GACZ,QAAKA,GAIMA,EAAMH,gBAAkB9B,EAAUoD,OAYjDjK,mBAAmBiI,EAAUiC,EAASC,GAAe,GACjD,OAAOrD,EAAUrM,UAAM,OAAQ,GAAQ,YACnC,MAKM2P,EAAW,IAAIC,SAASpC,GALbkC,EAAe,OAAOD,wBAAgC,IACtD,OAAOA,qBASxB,aAJME,EAASE,OAGflB,SAASmB,MAAM1J,IAAIuJ,GACZA,KAcfpK,sBACI,OAAO8G,EAAUrM,UAAM,OAAQ,GAAQ,YACnC,MAAM+P,EAAOxC,EAAKyC,cACZC,EAAQ1C,EAAK2C,eACnB,IAAK,MAAM1C,KAAYyC,EAAO,CAC1B,MAAME,EAAWF,EAAMzC,GACvBD,EAAK6C,YAAY5C,EAAUuC,EAAOI,OAa9C5K,YAAYiI,EAAU6C,EAAMC,GACxB,IAAIzB,EAAOvB,EAAME,GAWjB,OAVKqB,IACDA,EAAO,IAAItB,EAAKC,GAChBF,EAAME,GAAYqB,GAElBwB,GACAxB,EAAK0B,QAAQF,GAEbC,GACAzB,EAAK2B,WAAWF,GAEbzB,EAEX4B,UACI,OAAOzQ,KAAKyN,KAEhBiD,UACI,OAAOhN,EAAQ1D,KAAKqQ,KAAM,YAAa,qBAE3CM,aACI,OAAOjN,EAAQ1D,KAAKsQ,QAAS,YAAa,mBAE9CC,QAAQF,GACJrQ,KAAKqQ,KAAOA,EAEhBG,WAAWF,GACPtQ,KAAKsQ,QAAUA,EAEnBM,UACI,YAAqBhN,IAAd5D,KAAKqQ,KAEhBQ,gBACI,OAAO7Q,KAAK0Q,UAAUI,WAE1BC,YACI,OAAO/Q,KAAK0Q,UAAUM,OAS1BC,aAAa9Q,EAAK+Q,GACd,MAAMC,EAAWhR,EAAIqI,MAAM,KAE3B,IAAI4I,EAAUpR,KAAK2Q,aACnB,IAAK,IAAIpI,EAAI,EAAGA,EAAI4I,EAASvL,OAAQ2C,IAAK,CACtC,MACMnH,EAAQgQ,EADED,EAAS5I,IAEzB,QAAc3E,IAAVxC,EAEA,OAAO8P,EAGXE,EAAUhQ,EAGd,OAAOgQ,EAGXtJ,WACI,MAAO,IAAM9H,KAAKyN,KAAO,UAMjCF,EAAKiB,WAAa,oBAElBjB,EAAK8D,MAAQ,yBAEb9D,EAAKI,KAAO,GAGZJ,EAAKM,cAAgB,CACjBC,GAAI,EAAI,EACRwD,GAAI,EACJC,GAAI,GACJ,IAAK,IACLC,GAAI,GACJC,GAAI,GAAK,KACTC,GAAI,GAAK,MAObnE,EAAKyC,cAAgB,yCAMrBzC,EAAK2C,eAAiB,CAClB,cAAe,0CACfyB,eAAgB,wCCvWpB,MAAMC,EACFnQ,cACIzB,KAAK6R,GAAK,GACV7R,KAAK8R,KAAO,GACZ9R,KAAK+R,MAAQ,IAGd,MAAMC,EACTvQ,cACIzB,KAAKiS,MAAQ,IAAIL,EAErBrM,4BACI,OAAOyM,EAASE,gBAIpB3M,6BAA6B4M,GACzBH,EAASE,gBAAkBC,EAE/B5M,gCACIyM,EAASE,qBAAkBtO,EAE/BwO,QAEI,OADApS,KAAKiS,MAAQ,IAAIL,EACV5R,KAEXqS,cAAc5E,EAAMrM,EAAOyQ,EAAIS,GAC3B,MAAML,EAAQjS,KAAKiS,MACdA,EAAMxE,GAAMrM,KACb6Q,EAAMxE,GAAMrM,GAAS,IAEzB6Q,EAAMxE,GAAMrM,GAAOyQ,GAAMS,EAI7BC,aAAY,GAAEV,EAAE,KAAEpE,EAAI,MAAErM,EAAK,SAAEoR,IAC3B,MAAMF,EAAOtS,KAAKyS,eAAeZ,QAChBjO,IAAb4O,GAA0BxS,KAAKiS,MAAMxE,GAAM+E,WACpCxS,KAAKiS,MAAMxE,GAAM+E,GAAUX,GAElCzQ,GAASkR,GACTtS,KAAKqS,cAAc5E,EAAMrM,EAAOkR,EAAKI,aAAa,MAAOJ,GAUjEK,SAASL,EAAMT,GAEX,KADAA,EAAKA,GAAMS,EAAKI,aAAa,OAEzB,MAAM,IAAIvP,EAAa,wDAO3B,OAJAmP,EAAKM,aAAa,KAAMf,GACxB7R,KAAKqS,cAAc,KAAMR,EAAIA,EAAIS,GACjCtS,KAAKuS,YAAY,CAAEV,GAAAA,EAAIpE,KAAM,OAAQrM,MAAOkR,EAAKI,aAAa,QAASF,cAAU5O,IACjF0O,EAAKO,WAAW7S,MACTA,KAEXyS,eAAeZ,GACX,IAAIjE,EAAIkF,EACR,OAAmF,QAA3EA,EAA8B,QAAxBlF,EAAK5N,KAAKiS,MAAMJ,UAAuB,IAAPjE,OAAgB,EAASA,EAAGiE,UAAwB,IAAPiB,OAAgB,EAASA,EAAGjB,GAE3HkB,uBAAuBC,EAAW5R,GAC9B,MAAM6R,EAAajT,KAAKiS,MAAMe,GAC9B,GAAIC,EAAY,CACZ,MAAMC,EAAiBD,EAAW7R,GAClC,GAAI8R,EAAgB,CAEhB,OADa7S,OAAO8S,KAAKD,GACbE,KAAKC,GAAMH,EAAeG,MAG9C,MAAO,GAEXC,kBAAkBxB,GACd,OAAO9R,KAAK+S,uBAAuB,OAAQjB,GAE/CyB,mBAAmBC,GACf,OAAOxT,KAAK+S,uBAAuB,QAASS,GAIhDC,SAASC,GAKL,MAJqB,CAAC,KAAM,OAAQ,SACnBC,SAASD,EAAKjG,OAC3BzN,KAAKuS,YAAYmB,GAEd1T,MCtGR,MAAM4T,EACTnS,cACI,IAAImM,EACJ5N,KAAK6T,SAAW,GAChB7T,KAAK8T,MAAQ,CACTjC,GAAI+B,EAAQG,QACZC,QAAIpQ,EACJkO,KAAM9R,KAAKiU,cACXC,QAAS,IAEblU,KAAKmU,UAAW,EAEyB,QAAxCvG,EAAKoE,EAASoC,4BAAyC,IAAPxG,GAAyBA,EAAG+E,SAAS3S,MAE/E0B,sBACP,OAAOG,EAAS+R,QAEpBrO,eACI,MAAO,OAAOqO,EAAQS,KAE1BC,gBAAgBC,GAEZ,OADAvU,KAAK6T,SAASW,KAAKD,GACZvU,KAEXiU,cACI,OAAOjU,KAAKyB,YAAYC,SAwB5B+S,SAASpG,GAEL,OADArO,KAAKqO,MAAQA,EACNrO,KAGX0U,cAAcrG,GAGV,OAFArO,KAAKqO,MAAQA,EACbrO,KAAK6T,SAASc,SAASJ,GAAUA,EAAMG,cAAcrG,KAC9CrO,KAGX4U,WACI,OAAO5U,KAAKqO,MAGhBwG,WAAWC,EAAU9U,KAAK8U,QAASzG,EAAQrO,KAAK4U,YAC5C,OAAKvG,GAEAyG,GAELA,EAAQC,OACJ1G,EAAM2G,aACNF,EAAQG,eAAe5G,EAAM2G,aAC7B3G,EAAM6G,YACNJ,EAAQK,cAAc9G,EAAM6G,YAC5B7G,EAAM+G,WACNN,EAAQO,aAAahH,EAAM+G,WAC3B/G,EAAMiH,aACNR,EAAQS,eAAelH,EAAMiH,aAC7BjH,EAAMmH,WACNV,EAAQW,aAAapH,EAAMmH,WACxBxV,MAdIA,KAiBf0V,aAAaZ,EAAU9U,KAAK8U,QAASzG,EAAQrO,KAAK4U,YAC9C,OAAKvG,GAEAyG,GAELA,EAAQa,UACD3V,MAJIA,KAUf4V,gBACI5V,KAAK6V,eACL7V,KAAK6U,aACL7U,KAAK8V,OACL9V,KAAK0V,eAGTK,SAASvC,GACL,OAAyC,IAAlCxT,KAAK8T,MAAMI,QAAQV,GAG9BwC,SAASxC,GACL,IAAI5F,EAQJ,OAPA5N,KAAK8T,MAAMI,QAAQV,IAAa,EACP,QAAxB5F,EAAK5N,KAAKmS,gBAA6B,IAAPvE,GAAyBA,EAAG6F,SAAS,CAClE5B,GAAI7R,KAAK8T,MAAMjC,GACfpE,KAAM,QACNrM,MAAOoS,EACPhB,cAAU5O,IAEP5D,KAGXiW,YAAYzC,GACR,IAAI5F,EAQJ,cAPO5N,KAAK8T,MAAMI,QAAQV,GACD,QAAxB5F,EAAK5N,KAAKmS,gBAA6B,IAAPvE,GAAyBA,EAAG6F,SAAS,CAClE5B,GAAI7R,KAAK8T,MAAMjC,GACfpE,KAAM,QACNrM,WAAOwC,EACP4O,SAAUgB,IAEPxT,KAGX6S,WAAWV,GAEP,OADAnS,KAAKmS,SAAWA,EACTnS,KAGXkW,aACI,OAAOlW,KAAKmU,SAGhBgC,YAAYhC,GAAW,GAEnB,OADAnU,KAAKmU,SAAWA,EACTnU,KAGXoW,gBACI,OAAOpW,KAAK8T,MAIhBpB,aAAajF,GACT,OAAOzN,KAAK8T,MAAMrG,GAGtB4I,cAAcC,EAAS,IACnB,MAAMzE,EAAK/M,EAAO9E,KAAK8T,MAAMjC,GAAKyE,GAC5BC,EAAU5H,SAAS8D,eAAeZ,GACxC,GAAI0E,EACA,OAAOA,EAIf3D,aAAanF,EAAMrM,GACf,IAAIwM,EACJ,MAAM4I,EAAQxW,KAAK8T,MAAMjC,GACnBW,EAAWxS,KAAK8T,MAAMrG,GAI5B,OAHAzN,KAAK8T,MAAMrG,GAAQrM,EAEM,QAAxBwM,EAAK5N,KAAKmS,gBAA6B,IAAPvE,GAAyBA,EAAG6F,SAAS,CAAE5B,GAAI2E,EAAO/I,KAAAA,EAAMrM,MAAAA,EAAOoR,SAAAA,IACzFxS,KAGXyW,iBACI,OAAOzW,KAAKwJ,YAGhBkN,aACI,OAAO1W,KAAK8U,QAGhB6B,WAAW7B,GAEP,OADA9U,KAAK8U,QAAUA,EACR9U,KAGX6V,eACI,OAAOnS,EAAQ1D,KAAK8U,QAAS,YAAa,8CAO1CjG,SAAKzG,GACLpI,KAAK4W,QAAQxO,GAGbyG,WACA,OAAOtB,EAAKsJ,YAAY7W,KAAK8W,UAajCF,QAAQ/H,EAAMV,EAAMC,EAAQC,GAExB,MAAM0I,EAAkB/W,KAAKyB,YAAYuV,UACnCC,EAA+B,iBAATpI,EACtBqI,EAA+B,iBAATrI,EACtBsI,OAA2BvT,IAATiL,EAClBuI,OAAuCxT,IAATuK,QAAiCvK,IAAXwK,QAAkCxK,IAAVyK,EAuBlF,OApBIrO,KAAK8W,SAFLG,EAEgB5W,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAIN,GAAkBlI,GAE7DqI,GAAgBE,EAEL7J,EAAKe,cAAcO,GAE9BsI,GAAmBC,EAKR/W,OAAOgX,OAAO,GAAIN,GAOlBxJ,EAAK+J,SAASzI,MAAAA,EAAmCA,EAAOkI,EAAgBxI,OAAQJ,MAAAA,EAAmCA,EAAO4I,EAAgB5I,KAAMC,MAAAA,EAAuCA,EAAS2I,EAAgB3I,OAAQC,MAAAA,EAAqCA,EAAQ0I,EAAgB1I,OAElSrO,KAEXuX,UAII,OAHKvX,KAAK8W,UACN9W,KAAKwX,YAEFjK,EAAKsJ,YAAY7W,KAAK8W,UAMjCU,YACIxX,KAAK4W,UAGL3H,eAMA,OALKjP,KAAK8W,UACN9W,KAAKwX,YAIFnX,OAAOgX,OAAO,GAAIrX,KAAK8W,UAE9B7H,aAASA,GACTjP,KAAK4W,QAAQ3H,GAGjBwI,YAAYtJ,GACR,MAAMc,EAAWjP,KAAKiP,SAEtB,OADAjP,KAAK4W,QAAQ3H,EAASV,OAAQJ,EAAMc,EAASb,OAAQa,EAASZ,OACvDrO,KAMX0X,cACI,OAAO1X,KAAK0N,SAMZA,aAASS,GACTnO,KAAKyX,YAAYtJ,GAKjBT,eACA,IAAIS,EAAOnO,KAAKiP,SAASd,KAIzB,MAHoB,iBAATA,IACPA,EAAO,GAAGA,OAEPA,EAKPwJ,uBACA,OAAOpK,EAAKqK,wBAAwB5X,KAAK0N,UAKzCmK,uBACA,OAAOtK,EAAKuK,wBAAwB9X,KAAK0N,UAKzCsB,gBACA,OAAOhP,KAAKiP,SAASZ,MAErBW,cAAUX,GACV,MAAMY,EAAWjP,KAAKiP,SACtBjP,KAAK4W,QAAQ3H,EAASV,OAAQU,EAASd,KAAMc,EAASb,OAAQC,GAM9DU,iBACA,OAAO/O,KAAKiP,SAASb,OAAS,GAE9BW,eAAWX,GACX,MAAMa,EAAWjP,KAAKiP,SACtBjP,KAAK4W,QAAQ3H,EAASV,OAAQU,EAASd,KAAMC,EAAQa,EAASZ,QAGtEuF,EAAQS,GAAK,IAKbT,EAAQoD,UAAY,CAChBzI,OAAQhB,EAAKiB,WACbL,KAAMZ,EAAKI,KACXS,OAAQjC,EAAWsC,OACnBJ,MAAOjC,EAAUqC,QC1VrB,MAAMsJ,EAAa,MAKbC,EAAY,CACd,MAAOD,MACP,EAAGA,MACH,EAAGA,KACH,EAAGA,KACH,EAAGA,KACH,GAAIA,KACJ,GAAIA,IACJ,GAAIA,IACJ,IAAKA,IACL,IAAKA,IAEHE,EAAkB,CACpBtP,EAAG,IACHC,EAAG,IACHT,EAAG,IAIHzD,EAAG,OAEDwT,EAAgB,CAClBC,EAAG,CAAEC,IAAK,GACVC,GAAI,CAAED,IAAK,GACXE,EAAG,CAAEC,IAAK,IAAKH,IAAK,GACpBI,GAAI,CAAED,IAAK,IAAKH,IAAK,GACrBK,GAAI,CAAEF,IAAK,IAAKH,IAAK,GACrBM,GAAI,CAAEH,IAAK,IAAKH,IAAK,GACrBO,GAAI,CAAEJ,IAAK,IAAKH,IAAK,GACrBQ,GAAI,CAAEL,IAAK,IAAKH,IAAK,GACrBS,GAAI,CAAEN,IAAK,IAAKH,IAAK,GACrBU,GAAI,CAAEP,IAAK,IAAKH,IAAK,GACrBW,GAAI,CAAER,IAAK,IAAKH,IAAK,GACrBY,IAAK,CAAET,IAAK,IAAKH,IAAK,GACtBa,GAAI,CAAEV,IAAK,IAAKH,IAAK,GACrBc,IAAK,CAAEX,IAAK,IAAKH,IAAK,GACtBe,GAAI,CAAEZ,IAAK,IAAKH,IAAK,GACrBgB,IAAK,CAAEb,IAAK,IAAKH,IAAK,GACtBiB,EAAG,CAAEd,IAAK,IAAKH,IAAK,GACpBkB,GAAI,CAAEf,IAAK,IAAKH,IAAK,GACrBmB,EAAG,CAAEhB,IAAK,IAAKH,IAAK,GACpBoB,GAAI,CAAEjB,IAAK,IAAKH,IAAK,GACrBqB,EAAG,CAAElB,IAAK,IAAKH,IAAK,GACpB,MAAO,CAAEG,IAAK,IAAKH,IAAK,GACxBsB,EAAG,CAAEnB,IAAK,IAAKH,IAAK,GACpB,MAAO,CAAEG,IAAK,IAAKH,IAAK,GACxBuB,EAAG,CAAEpB,IAAK,IAAKH,IAAK,GACpB,MAAO,CAAEG,IAAK,IAAKH,IAAK,GACxB,KAAM,CAAEG,IAAK,IAAKH,IAAK,GACvB,MAAO,CAAEG,IAAK,IAAKH,IAAK,GACxB,KAAM,CAAEG,IAAK,IAAKH,IAAK,GACvB,MAAO,CAAEG,IAAK,IAAKH,IAAK,IAEtBwB,EAAQ,CACVC,OAAQ,CAAEC,WAAY,GACtBC,KAAM,CAAED,WAAY,GACpBE,MAAO,CAAEF,WAAY,GACrBG,KAAM,CAAEH,WAAY,GACpBI,QAAS,CAAEJ,WAAY,GACvBK,WAAY,CAAEL,WAAY,GAC1B,gBAAiB,CAAEA,WAAY,GAC/B,aAAc,CAAEA,WAAY,GAC5B,aAAc,CAAEA,WAAY,GAC5BM,QAAS,CAAEN,WAAY,GACvBO,OAAQ,CAAEP,YAAa,IAErBQ,EAAY,CACdnC,EAAG,CAAElG,MAAO,EAAGsI,QAAS,GACxBC,GAAI,CAAEvI,MAAO,EAAGsI,QAAS,EAAGE,WAAY,KACxC,KAAM,CAAExI,MAAO,EAAGsI,QAAS,EAAGE,WAAY,KAC1C,MAAO,CAAExI,MAAO,EAAGsI,QAAS,EAAGE,WAAY,MAC3CC,GAAI,CAAEzI,MAAO,EAAGsI,QAAS,GAAIE,WAAY,KACzCE,IAAK,CAAE1I,MAAO,EAAGsI,QAAS,GAAIE,WAAY,MAC1ClB,EAAG,CAAEtH,MAAO,EAAGsI,QAAS,GACxBK,GAAI,CAAE3I,MAAO,EAAGsI,QAAS,EAAGE,WAAY,KACxC,KAAM,CAAExI,MAAO,EAAGsI,QAAS,EAAGE,WAAY,KAC1C,MAAO,CAAExI,MAAO,EAAGsI,QAAS,EAAGE,WAAY,MAC3CI,GAAI,CAAE5I,MAAO,EAAGsI,QAAS,EAAGE,WAAY,KACxCK,IAAK,CAAE7I,MAAO,EAAGsI,QAAS,EAAGE,WAAY,MACzCf,EAAG,CAAEzH,MAAO,EAAGsI,QAAS,GACxBQ,GAAI,CAAE9I,MAAO,EAAGsI,QAAS,EAAGE,WAAY,KACxC,KAAM,CAAExI,MAAO,EAAGsI,QAAS,EAAGE,WAAY,KAC1C,MAAO,CAAExI,MAAO,EAAGsI,QAAS,EAAGE,WAAY,MAC3CO,GAAI,CAAE/I,MAAO,EAAGsI,QAAS,EAAGE,WAAY,KACxCQ,IAAK,CAAEhJ,MAAO,EAAGsI,QAAS,EAAGE,WAAY,MACzCnC,EAAG,CAAErG,MAAO,EAAGsI,QAAS,GACxBW,GAAI,CAAEjJ,MAAO,EAAGsI,QAAS,EAAGE,WAAY,KACxC,KAAM,CAAExI,MAAO,EAAGsI,QAAS,EAAGE,WAAY,KAC1C,MAAO,CAAExI,MAAO,EAAGsI,QAAS,EAAGE,WAAY,MAC3CU,GAAI,CAAElJ,MAAO,EAAGsI,QAAS,EAAGE,WAAY,KACxCW,IAAK,CAAEnJ,MAAO,EAAGsI,QAAS,EAAGE,WAAY,MACzCpB,EAAG,CAAEpH,MAAO,EAAGsI,QAAS,GACxBc,GAAI,CAAEpJ,MAAO,EAAGsI,QAAS,EAAGE,WAAY,KACxC,KAAM,CAAExI,MAAO,EAAGsI,QAAS,EAAGE,WAAY,KAC1C,MAAO,CAAExI,MAAO,EAAGsI,QAAS,EAAGE,WAAY,MAC3Ca,GAAI,CAAErJ,MAAO,EAAGsI,QAAS,EAAGE,WAAY,KACxCc,IAAK,CAAEtJ,MAAO,EAAGsI,QAAS,EAAGE,WAAY,MACzChB,EAAG,CAAExH,MAAO,EAAGsI,QAAS,GACxBiB,GAAI,CAAEvJ,MAAO,EAAGsI,QAAS,EAAGE,WAAY,KACxC,KAAM,CAAExI,MAAO,EAAGsI,QAAS,GAAIE,WAAY,KAC3C,MAAO,CAAExI,MAAO,EAAGsI,QAAS,GAAIE,WAAY,MAC5CgB,GAAI,CAAExJ,MAAO,EAAGsI,QAAS,EAAGE,WAAY,KACxCiB,IAAK,CAAEzJ,MAAO,EAAGsI,QAAS,EAAGE,WAAY,MACzCd,EAAG,CAAE1H,MAAO,EAAGsI,QAAS,IACxBoB,GAAI,CAAE1J,MAAO,EAAGsI,QAAS,GAAIE,WAAY,KACzC,KAAM,CAAExI,MAAO,EAAGsI,QAAS,GAAIE,WAAY,KAC3C,MAAO,CAAExI,MAAO,EAAGsI,QAAS,GAAIE,WAAY,MAC5CmB,GAAI,CAAE3J,MAAO,EAAGsI,QAAS,GAAIE,WAAY,KACzCoB,IAAK,CAAE5J,MAAO,EAAGsI,QAAS,EAAGE,WAAY,MACzCqB,EAAG,CAAE7J,MAAO,EAAG8J,MAAM,GACrBC,EAAG,CACC/J,MAAO,EACPwI,WAAY,GACZwB,OAAQ,EACR5Y,KAAM,iBACN6Y,YAAa,MAoBfC,EAAc,CAChB,IAAK,CAAE9Y,KAAM,kBAAmB+Y,6BAA8B,GAC9D,KAAM,CAAE/Y,KAAM,wBAAyB+Y,6BAA8B,GACrE1X,EAAG,CAAErB,KAAM,iBAAkB+Y,6BAA8B,GAC3DC,GAAI,CAAEhZ,KAAM,uBAAwB+Y,6BAA8B,GAClExX,EAAG,CAAEvB,KAAM,oBAAqB+Y,6BAA8B,GAC9D,IAAK,CAAE/Y,KAAM,uBAAwB+Y,6BAA8B,GACnE,IAAK,CAAE/Y,KAAM,wBAAyB+Y,6BAA8B,GACpEE,GAAI,CAAEjZ,KAAM,4CAA6C+Y,6BAA8B,GACvFlW,EAAG,CAAE7C,KAAM,iCAAkC+Y,4BAA6B,GAC1E,KAAM,CAAE/Y,KAAM,wCAAyC+Y,6BAA8B,GACrF,IAAK,CAAE/Y,KAAM,kCAAmC+Y,6BAA8B,GAC9E,KAAM,CAAE/Y,KAAM,+BAAgC+Y,6BAA8B,GAC5EG,GAAI,CAAElZ,KAAM,uBAAwB+Y,6BAA8B,GAClEI,IAAK,CAAEnZ,KAAM,8BAA+B+Y,6BAA8B,GAC1Ehc,EAAG,CAAEiD,KAAM,iBAAkB+Y,6BAA8B,GAC3D/I,EAAG,CAAEhQ,KAAM,kBAAmB+Y,6BAA8B,GAC5DK,IAAK,CAAEpZ,KAAM,2BAA4B+Y,6BAA8B,GACvE,MAAO,CAAE/Y,KAAM,2BAA4B+Y,6BAA8B,GACzEM,KAAM,CAAErZ,KAAM,2BAA4B+Y,6BAA8B,GACxEO,KAAM,CAAEtZ,KAAM,2BAA4B+Y,6BAA8B,GACxEQ,wBAAyB,CAAEvZ,KAAM,0BAA2B+Y,6BAA8B,GAC1FS,0BAA2B,CAAExZ,KAAM,4BAA6B+Y,6BAA8B,GAC9FU,oBAAqB,CAAEzZ,KAAM,sBAAuB+Y,6BAA8B,GAClFW,sBAAuB,CAAE1Z,KAAM,wBAAyB+Y,6BAA8B,GACtFY,oBAAqB,CAAE3Z,KAAM,sBAAuB+Y,6BAA8B,GAClFa,sBAAuB,CAAE5Z,KAAM,wBAAyB+Y,6BAA8B,GACtFc,2BAA4B,CAAE7Z,KAAM,6BAA8B+Y,6BAA8B,GAChGe,6BAA8B,CAAE9Z,KAAM,+BAAgC+Y,6BAA8B,GACpGgB,4BAA6B,CAAE/Z,KAAM,8BAA+B+Y,6BAA8B,GAClGiB,8BAA+B,CAAEha,KAAM,gCAAiC+Y,6BAA8B,GACtGkB,4BAA6B,CAAEja,KAAM,8BAA+B+Y,6BAA8B,GAClGmB,8BAA+B,CAAEla,KAAM,gCAAiC+Y,6BAA8B,GACtGoB,2BAA4B,CAAEna,KAAM,6BAA8B+Y,6BAA8B,GAChGqB,6BAA8B,CAAEpa,KAAM,+BAAgC+Y,6BAA8B,GACpGsB,2BAA4B,CAAEra,KAAM,6BAA8B+Y,6BAA8B,GAChGuB,6BAA8B,CAAEta,KAAM,+BAAgC+Y,6BAA8B,GACpGwB,wBAAyB,CAAEva,KAAM,0BAA2B+Y,6BAA8B,GAC1FyB,qBAAsB,CAAExa,KAAM,uBAAwB+Y,6BAA8B,GACpF0B,uBAAwB,CAAEza,KAAM,yBAA0B+Y,6BAA8B,GACxF2B,oBAAqB,CAAE1a,KAAM,sBAAuB+Y,6BAA8B,GAClF4B,uBAAwB,CAAE3a,KAAM,yBAA0B+Y,6BAA8B,GACxF6B,oBAAqB,CAAE5a,KAAM,sBAAuB+Y,6BAA8B,GAClF8B,yBAA0B,CAAE7a,KAAM,2BAA4B+Y,6BAA8B,GAC5F+B,sBAAuB,CAAE9a,KAAM,wBAAyB+Y,6BAA8B,GACtFgC,iBAAkB,CAAE/a,KAAM,mBAAoB+Y,6BAA8B,GAC5EiC,gBAAiB,CAAEhb,KAAM,kBAAmB+Y,6BAA8B,GAC1EkC,uBAAwB,CAAEjb,KAAM,yBAA0B+Y,6BAA8B,GACxFmC,wBAAyB,CAAElb,KAAM,0BAA2B+Y,6BAA8B,GAC1FoC,qBAAsB,CAAEnb,KAAM,uBAAwB+Y,6BAA8B,GACpFqC,sBAAuB,CAAEpb,KAAM,wBAAyB+Y,6BAA8B,GACtFsC,qBAAsB,CAAErb,KAAM,uBAAwB+Y,6BAA8B,GACpFuC,sBAAuB,CAAEtb,KAAM,wBAAyB+Y,6BAA8B,GACtFwC,sBAAuB,CAAEvb,KAAM,wBAAyB+Y,6BAA8B,GACtFyC,uBAAwB,CAAExb,KAAM,yBAA0B+Y,6BAA8B,GACxF0C,sBAAuB,CAAEzb,KAAM,wBAAyB+Y,6BAA8B,GACtF2C,uBAAwB,CAAE1b,KAAM,yBAA0B+Y,6BAA8B,GACxF4C,sBAAuB,CAAE3b,KAAM,wBAAyB+Y,6BAA8B,GACtF6C,uBAAwB,CAAE5b,KAAM,yBAA0B+Y,6BAA8B,GACxF8C,sBAAuB,CAAE7b,KAAM,wBAAyB+Y,6BAA8B,GACtF+C,uBAAwB,CAAE9b,KAAM,yBAA0B+Y,6BAA8B,GACxFgD,sBAAuB,CAAE/b,KAAM,wBAAyB+Y,6BAA8B,GACtFiD,uBAAwB,CAAEhc,KAAM,yBAA0B+Y,6BAA8B,GACxFkD,8BAA+B,CAAEjc,KAAM,gCAAiC+Y,6BAA8B,GACtGmD,2BAA4B,CAAElc,KAAM,6BAA8B+Y,6BAA8B,GAChGoD,6BAA8B,CAAEnc,KAAM,+BAAgC+Y,6BAA8B,GACpGqD,0BAA2B,CAAEpc,KAAM,4BAA6B+Y,6BAA8B,GAC9FsD,6BAA8B,CAAErc,KAAM,+BAAgC+Y,6BAA8B,GACpGuD,0BAA2B,CAAEtc,KAAM,4BAA6B+Y,6BAA8B,GAC9FwD,+BAAgC,CAAEvc,KAAM,iCAAkC+Y,6BAA8B,GACxGyD,4BAA6B,CAAExc,KAAM,8BAA+B+Y,6BAA8B,GAClG0D,uBAAwB,CAAEzc,KAAM,yBAA0B+Y,6BAA8B,GACxF2D,sBAAuB,CAAE1c,KAAM,wBAAyB+Y,6BAA8B,GACtF4D,yBAA0B,CAAE3c,KAAM,2BAA4B+Y,6BAA8B,GAC5F6D,2BAA4B,CAAE5c,KAAM,6BAA8B+Y,6BAA8B,GAChG8D,qBAAsB,CAAE7c,KAAM,uBAAwB+Y,6BAA8B,GACpF+D,uBAAwB,CAAE9c,KAAM,yBAA0B+Y,6BAA8B,GACxFgE,qBAAsB,CAAE/c,KAAM,uBAAwB+Y,6BAA8B,GACpFiE,uBAAwB,CAAEhd,KAAM,yBAA0B+Y,6BAA8B,GACxFkE,uBAAwB,CAAEjd,KAAM,yBAA0B+Y,6BAA8B,GACxFmE,yBAA0B,CAAEld,KAAM,2BAA4B+Y,6BAA8B,GAC5FoE,6BAA8B,CAAEnd,KAAM,+BAAgC+Y,6BAA8B,GACpGqE,+BAAgC,CAAEpd,KAAM,iCAAkC+Y,6BAA8B,GACxGsE,0BAA2B,CAAErd,KAAM,4BAA6B+Y,6BAA8B,GAC9FuE,uBAAwB,CAAEtd,KAAM,yBAA0B+Y,6BAA8B,GACxFwE,0BAA2B,CAAEvd,KAAM,4BAA6B+Y,6BAA8B,GAC9FyE,uBAAwB,CAAExd,KAAM,yBAA0B+Y,6BAA8B,GACxF0E,wBAAyB,CAAEzd,KAAM,0BAA2B+Y,6BAA8B,GAC1F2E,qBAAsB,CAAE1d,KAAM,uBAAwB+Y,6BAA8B,GACpF4E,wBAAyB,CAAE3d,KAAM,0BAA2B+Y,6BAA8B,GAC1F6E,qBAAsB,CAAE5d,KAAM,uBAAwB+Y,6BAA8B,GACpF8E,0BAA2B,CAAE7d,KAAM,4BAA6B+Y,6BAA8B,GAC9F+E,uBAAwB,CAAE9d,KAAM,yBAA0B+Y,6BAA8B,GACxFgF,wBAAyB,CAAE/d,KAAM,0BAA2B+Y,6BAA8B,GAC1FiF,yBAA0B,CAAEhe,KAAM,2BAA4B+Y,6BAA8B,GAC5FkF,sBAAuB,CAAEje,KAAM,wBAAyB+Y,6BAA8B,GACtFmF,uBAAwB,CAAEle,KAAM,yBAA0B+Y,6BAA8B,GACxFoF,sBAAuB,CAAEne,KAAM,wBAAyB+Y,6BAA8B,GACtFqF,uBAAwB,CAAEpe,KAAM,yBAA0B+Y,6BAA8B,GACxFsF,wBAAyB,CAAEre,KAAM,0BAA2B+Y,6BAA8B,GAC1FuF,yBAA0B,CAAEte,KAAM,2BAA4B+Y,6BAA8B,GAC5FwF,wBAAyB,CAAEve,KAAM,0BAA2B+Y,6BAA8B,GAC1FyF,yBAA0B,CAAExe,KAAM,2BAA4B+Y,6BAA8B,GAC5F0F,gCAAiC,CAAEze,KAAM,kCAAmC+Y,6BAA8B,GAC1G2F,6BAA8B,CAAE1e,KAAM,+BAAgC+Y,6BAA8B,GACpG4F,gCAAiC,CAAE3e,KAAM,kCAAmC+Y,6BAA8B,GAC1G6F,6BAA8B,CAAE5e,KAAM,+BAAgC+Y,6BAA8B,GACpG8F,8BAA+B,CAAE7e,KAAM,gCAAiC+Y,6BAA8B,GACtG+F,2BAA4B,CAAE9e,KAAM,6BAA8B+Y,6BAA8B,GAChGgG,8BAA+B,CAAE/e,KAAM,gCAAiC+Y,6BAA8B,GACtGiG,2BAA4B,CAAEhf,KAAM,6BAA8B+Y,6BAA8B,GAChGkG,gCAAiC,CAAEjf,KAAM,kCAAmC+Y,6BAA8B,GAC1GmG,6BAA8B,CAAElf,KAAM,+BAAgC+Y,6BAA8B,GACpGoG,qBAAsB,CAAEnf,KAAM,uBAAwB+Y,6BAA8B,GACpFqG,uBAAwB,CAAEpf,KAAM,yBAA0B+Y,6BAA8B,GACxFsG,uBAAwB,CAAErf,KAAM,yBAA0B+Y,6BAA8B,GACxFuG,yBAA0B,CAAEtf,KAAM,2BAA4B+Y,6BAA8B,GAC5FwG,6BAA8B,CAAEvf,KAAM,+BAAgC+Y,6BAA8B,GACpGyG,+BAAgC,CAAExf,KAAM,iCAAkC+Y,6BAA8B,GACxG0G,0BAA2B,CAAEzf,KAAM,4BAA6B+Y,6BAA8B,GAC9F2G,uBAAwB,CAAE1f,KAAM,yBAA0B+Y,6BAA8B,GACxF4G,0BAA2B,CAAE3f,KAAM,4BAA6B+Y,6BAA8B,GAC9F6G,uBAAwB,CAAE5f,KAAM,yBAA0B+Y,6BAA8B,GACxF8G,wBAAyB,CAAE7f,KAAM,0BAA2B+Y,6BAA8B,GAC1F+G,qBAAsB,CAAE9f,KAAM,uBAAwB+Y,6BAA8B,GACpFgH,sBAAuB,CAAE/f,KAAM,wBAAyB+Y,6BAA8B,GACtFiH,uBAAwB,CAAEhgB,KAAM,yBAA0B+Y,6BAA8B,GACxFkH,wBAAyB,CAAEjgB,KAAM,0BAA2B+Y,6BAA8B,GAC1FmH,yBAA0B,CAAElgB,KAAM,2BAA4B+Y,6BAA8B,GAC5FoH,wBAAyB,CAAEngB,KAAM,0BAA2B+Y,6BAA8B,GAC1FqH,yBAA0B,CAAEpgB,KAAM,2BAA4B+Y,6BAA8B,GAC5FsH,gCAAiC,CAAErgB,KAAM,kCAAmC+Y,6BAA8B,GAC1GuH,6BAA8B,CAAEtgB,KAAM,+BAAgC+Y,6BAA8B,GACpGwH,gCAAiC,CAAEvgB,KAAM,kCAAmC+Y,6BAA8B,GAC1GyH,6BAA8B,CAAExgB,KAAM,+BAAgC+Y,6BAA8B,GACpG0H,8BAA+B,CAAEzgB,KAAM,gCAAiC+Y,6BAA8B,GACtG2H,2BAA4B,CAAE1gB,KAAM,6BAA8B+Y,6BAA8B,GAChG4H,uBAAwB,CAAE3gB,KAAM,yBAA0B+Y,6BAA8B,GACxF6H,yBAA0B,CAAE5gB,KAAM,2BAA4B+Y,6BAA8B,GAC5F8H,uBAAwB,CAAE7gB,KAAM,yBAA0B+Y,6BAA8B,GACxF+H,yBAA0B,CAAE9gB,KAAM,2BAA4B+Y,6BAA8B,GAC5FgI,sBAAuB,CAAE/gB,KAAM,wBAAyB+Y,6BAA8B,GACtFiI,wBAAyB,CAAEhhB,KAAM,0BAA2B+Y,6BAA8B,GAC1FkI,wBAAyB,CAAEjhB,KAAM,0BAA2B+Y,6BAA8B,GAC1FmI,0BAA2B,CAAElhB,KAAM,4BAA6B+Y,6BAA8B,GAC9FoI,qBAAsB,CAAEnhB,KAAM,uBAAwB+Y,6BAA8B,GACpFqI,uBAAwB,CAAEphB,KAAM,yBAA0B+Y,6BAA8B,GACxFsI,uBAAwB,CAAErhB,KAAM,yBAA0B+Y,6BAA8B,GACxFuI,yBAA0B,CAAEthB,KAAM,2BAA4B+Y,6BAA8B,GAC5FwI,2BAA4B,CAAEvhB,KAAM,6BAA8B+Y,6BAA8B,GAChGyI,6BAA8B,CAAExhB,KAAM,+BAAgC+Y,6BAA8B,GACpG0I,2BAA4B,CAAEzhB,KAAM,6BAA8B+Y,6BAA8B,GAChG2I,6BAA8B,CAAE1hB,KAAM,+BAAgC+Y,6BAA8B,GACpG4I,8BAA+B,CAAE3hB,KAAM,gCAAiC+Y,6BAA8B,GACtG6I,gCAAiC,CAAE5hB,KAAM,kCAAmC+Y,6BAA8B,GAC1G8I,+BAAgC,CAAE7hB,KAAM,iCAAkC+Y,6BAA8B,GACxG+I,iCAAkC,CAAE9hB,KAAM,mCAAoC+Y,6BAA8B,GAC5GgJ,4BAA6B,CAAE/hB,KAAM,8BAA+B+Y,6BAA8B,GAClGiJ,8BAA+B,CAAEhiB,KAAM,gCAAiC+Y,6BAA8B,GACtGkJ,8BAA+B,CAAEjiB,KAAM,gCAAiC+Y,6BAA8B,GACtGmJ,gCAAiC,CAAEliB,KAAM,kCAAmC+Y,6BAA8B,GAC1GoJ,2BAA4B,CAAEniB,KAAM,6BAA8B+Y,6BAA8B,GAChGqJ,6BAA8B,CAAEpiB,KAAM,+BAAgC+Y,6BAA8B,GACpGsJ,8BAA+B,CAAEriB,KAAM,gCAAiC+Y,6BAA8B,GACtGuJ,gCAAiC,CAAEtiB,KAAM,kCAAmC+Y,6BAA8B,GAC1GwJ,6BAA8B,CAAEviB,KAAM,+BAAgC+Y,6BAA8B,GACpGyJ,+BAAgC,CAAExiB,KAAM,iCAAkC+Y,6BAA8B,GACxG0J,wBAAyB,CAAEziB,KAAM,0BAA2B+Y,6BAA8B,GAC1F2J,qBAAsB,CAAE1iB,KAAM,uBAAwB+Y,6BAA8B,GACpF4J,wBAAyB,CAAE3iB,KAAM,0BAA2B+Y,6BAA8B,GAC1F6J,qBAAsB,CAAE5iB,KAAM,uBAAwB+Y,6BAA8B,GACpF8J,0BAA2B,CAAE7iB,KAAM,4BAA6B+Y,6BAA8B,GAC9F+J,uBAAwB,CAAE9iB,KAAM,yBAA0B+Y,6BAA8B,GACxFgK,wBAAyB,CAAE/iB,KAAM,0BAA2B+Y,6BAA8B,GAC1FiK,qBAAsB,CAAEhjB,KAAM,uBAAwB+Y,6BAA8B,GACpFkK,2BAA4B,CAAEjjB,KAAM,6BAA8B+Y,6BAA8B,GAChGmK,wBAAyB,CAAEljB,KAAM,0BAA2B+Y,6BAA8B,GAC1FoK,yBAA0B,CAAEnjB,KAAM,2BAA4B+Y,6BAA8B,GAC5FqK,sBAAuB,CAAEpjB,KAAM,wBAAyB+Y,6BAA8B,GACtFsK,wBAAyB,CAAErjB,KAAM,0BAA2B+Y,6BAA8B,GAC1FuK,qBAAsB,CAAEtjB,KAAM,uBAAwB+Y,6BAA8B,GACpFwK,wBAAyB,CAAEvjB,KAAM,0BAA2B+Y,6BAA8B,GAC1FyK,qBAAsB,CAAExjB,KAAM,uBAAwB+Y,6BAA8B,GACpF0K,sBAAuB,CAAEzjB,KAAM,wBAAyB+Y,6BAA8B,GACtF2K,uBAAwB,CAAE1jB,KAAM,yBAA0B+Y,6BAA8B,GACxF4K,sBAAuB,CAAE3jB,KAAM,wBAAyB+Y,6BAA8B,GACtF6K,uBAAwB,CAAE5jB,KAAM,yBAA0B+Y,6BAA8B,GACxF8K,uBAAwB,CAAE7jB,KAAM,yBAA0B+Y,6BAA8B,GACxF+K,wBAAyB,CAAE9jB,KAAM,0BAA2B+Y,6BAA8B,GAC1FgL,yBAA0B,CAAE/jB,KAAM,2BAA4B+Y,6BAA8B,GAC5FiL,0BAA2B,CAAEhkB,KAAM,4BAA6B+Y,6BAA8B,GAC9FkL,sBAAuB,CAAEjkB,KAAM,wBAAyB+Y,6BAA8B,GACtFmL,uBAAwB,CAAElkB,KAAM,yBAA0B+Y,6BAA8B,GACxFoL,wBAAyB,CAAEnkB,KAAM,0BAA2B+Y,6BAA8B,GAC1FqL,yBAA0B,CAAEpkB,KAAM,2BAA4B+Y,6BAA8B,GAC5FsL,sBAAuB,CAAErkB,KAAM,wBAAyB+Y,6BAA8B,GACtFuL,uBAAwB,CAAEtkB,KAAM,yBAA0B+Y,6BAA8B,GACxFwL,sBAAuB,CAAEvkB,KAAM,wBAAyB+Y,6BAA8B,GACtFyL,uBAAwB,CAAExkB,KAAM,yBAA0B+Y,6BAA8B,GACxF0L,wBAAyB,CAAEzkB,KAAM,0BAA2B+Y,6BAA8B,GAC1F2L,yBAA0B,CAAE1kB,KAAM,2BAA4B+Y,6BAA8B,GAC5F4L,yBAA0B,CAAE3kB,KAAM,2BAA4B+Y,6BAA8B,GAC5F6L,0BAA2B,CAAE5kB,KAAM,4BAA6B+Y,6BAA8B,GAC9F8L,sBAAuB,CAAE7kB,KAAM,wBAAyB+Y,6BAA8B,GACtF+L,uBAAwB,CAAE9kB,KAAM,yBAA0B+Y,6BAA8B,GACxFgM,wBAAyB,CAAE/kB,KAAM,0BAA2B+Y,6BAA8B,GAC1FiM,yBAA0B,CAAEhlB,KAAM,2BAA4B+Y,6BAA8B,GAC5FkM,sBAAuB,CAAEjlB,KAAM,wBAAyB+Y,6BAA8B,GACtFmM,uBAAwB,CAAEllB,KAAM,yBAA0B+Y,6BAA8B,GACxFoM,yBAA0B,CAAEnlB,KAAM,2BAA4B+Y,6BAA8B,GAC5FqM,0BAA2B,CAAEplB,KAAM,4BAA6B+Y,6BAA8B,GAC9FsM,wBAAyB,CAAErlB,KAAM,0BAA2B+Y,6BAA8B,GAC1FuM,yBAA0B,CAAEtlB,KAAM,2BAA4B+Y,6BAA8B,GAC5FwM,8BAA+B,CAAEvlB,KAAM,gCAAiC+Y,6BAA8B,GACtGyM,2BAA4B,CAAExlB,KAAM,6BAA8B+Y,6BAA8B,GAChG0M,8BAA+B,CAAEzlB,KAAM,gCAAiC+Y,6BAA8B,GACtG2M,2BAA4B,CAAE1lB,KAAM,6BAA8B+Y,6BAA8B,GAChG4M,gCAAiC,CAAE3lB,KAAM,kCAAmC+Y,6BAA8B,GAC1G6M,6BAA8B,CAAE5lB,KAAM,+BAAgC+Y,6BAA8B,GACpG8M,8BAA+B,CAAE7lB,KAAM,gCAAiC+Y,6BAA8B,GACtG+M,2BAA4B,CAAE9lB,KAAM,6BAA8B+Y,6BAA8B,GAChGgN,iCAAkC,CAAE/lB,KAAM,mCAAoC+Y,6BAA8B,GAC5GiN,8BAA+B,CAAEhmB,KAAM,gCAAiC+Y,6BAA8B,GACtGkN,+BAAgC,CAAEjmB,KAAM,iCAAkC+Y,6BAA8B,GACxGmN,4BAA6B,CAAElmB,KAAM,8BAA+B+Y,6BAA8B,GAClGoN,8BAA+B,CAAEnmB,KAAM,gCAAiC+Y,6BAA8B,GACtGqN,2BAA4B,CAAEpmB,KAAM,6BAA8B+Y,6BAA8B,GAChGsN,8BAA+B,CAAErmB,KAAM,gCAAiC+Y,6BAA8B,GACtGuN,2BAA4B,CAAEtmB,KAAM,6BAA8B+Y,6BAA8B,GAChGwN,mBAAoB,CAAEvmB,KAAM,qBAAsB+Y,6BAA8B,GAChFyN,qBAAsB,CAAExmB,KAAM,uBAAwB+Y,6BAA8B,GACpF0N,iBAAkB,CAAEzmB,KAAM,mBAAoB+Y,6BAA8B,GAC5E2N,iBAAkB,CAAE1mB,KAAM,mBAAoB+Y,6BAA8B,GAC5E4N,mBAAoB,CAAE3mB,KAAM,qBAAsB+Y,6BAA8B,GAChF6N,qBAAsB,CAAE5mB,KAAM,uBAAwB+Y,6BAA8B,GACpF8N,oBAAqB,CAAE7mB,KAAM,sBAAuB+Y,6BAA8B,GAClF+N,sBAAuB,CAAE9mB,KAAM,wBAAyB+Y,6BAA8B,GACtFgO,mBAAoB,CAAE/mB,KAAM,qBAAsB+Y,6BAA8B,GAChFiO,qBAAsB,CAAEhnB,KAAM,uBAAwB+Y,6BAA8B,GACpFkO,oBAAqB,CAAEjnB,KAAM,sBAAuB+Y,6BAA8B,GAClFmO,sBAAuB,CAAElnB,KAAM,wBAAyB+Y,6BAA8B,GACtFoO,oBAAqB,CAAEnnB,KAAM,sBAAuB+Y,6BAA8B,GAClFqO,sBAAuB,CAAEpnB,KAAM,wBAAyB+Y,6BAA8B,GACtFsO,oBAAqB,CAAErnB,KAAM,sBAAuB+Y,6BAA8B,GAClFuO,sBAAuB,CAAEtnB,KAAM,wBAAyB+Y,6BAA8B,GACtFwO,oBAAqB,CAAEvnB,KAAM,sBAAuB+Y,6BAA8B,GAClFyO,sBAAuB,CAAExnB,KAAM,wBAAyB+Y,6BAA8B,GACtF0O,oBAAqB,CAAEznB,KAAM,sBAAuB+Y,6BAA8B,GAClF2O,sBAAuB,CAAE1nB,KAAM,wBAAyB+Y,6BAA8B,GACtF4O,oBAAqB,CAAE3nB,KAAM,sBAAuB+Y,6BAA8B,GAClF6O,sBAAuB,CAAE5nB,KAAM,wBAAyB+Y,6BAA8B,GACtF8O,oBAAqB,CAAE7nB,KAAM,sBAAuB+Y,6BAA8B,GAClF+O,sBAAuB,CAAE9nB,KAAM,wBAAyB+Y,6BAA8B,GACtFgP,oBAAqB,CAAE/nB,KAAM,sBAAuB+Y,6BAA8B,GAClFiP,sBAAuB,CAAEhoB,KAAM,wBAAyB+Y,6BAA8B,GACtFkP,4BAA6B,CAAEjoB,KAAM,8BAA+B+Y,6BAA8B,GAClGmP,8BAA+B,CAAEloB,KAAM,gCAAiC+Y,6BAA8B,GACtGoP,6BAA8B,CAAEnoB,KAAM,+BAAgC+Y,6BAA8B,GACpGqP,oCAAqC,CACjCpoB,KAAM,sCACN+Y,6BAA8B,GAElCsP,qBAAsB,CAAEroB,KAAM,uBAAwB+Y,6BAA8B,GACpFuP,sBAAuB,CAAEtoB,KAAM,wBAAyB+Y,6BAA8B,IAkCpFwP,EAAgB,CAClB,KAAM,CAAEvoB,KAAM,kBAAmBwoB,eAAe,GAChDC,GAAI,CACAC,UAAW,0BACXC,UAAW,0BACXH,eAAe,GAEnB,KAAM,CACFE,UAAW,mBACXC,UAAW,mBACXH,eAAe,GAEnB,KAAM,CACFE,UAAW,mBACXC,UAAW,mBACXH,eAAe,GAEnB,KAAM,CACFE,UAAW,oBACXC,UAAW,oBACXH,eAAe,GAEnB,KAAM,CAAExoB,KAAM,2BAA4BwoB,eAAe,GACzDI,GAAI,CACAF,UAAW,4BACXC,UAAW,4BACXH,eAAe,GAEnBK,GAAI,CAAE7oB,KAAM,kBAAmBwoB,eAAe,GAC9C,KAAM,CAAEE,UAAW,eAAgBC,UAAW,eAAgBH,eAAe,GAC7E,MAAO,CAAExoB,KAAM,eAAgBwoB,eAAe,GAC9C,MAAO,CAAExoB,KAAM,eAAgBwoB,eAAe,GAC9C,MAAO,CAAEE,UAAW,oBAAqBC,UAAW,oBAAqBH,eAAe,GACxF,OAAQ,CAAExoB,KAAM,oBAAqBwoB,eAAe,GACpD,OAAQ,CAAExoB,KAAM,oBAAqBwoB,eAAe,GACpD,MAAO,CAAEE,UAAW,mBAAoBC,UAAW,mBAAoBH,eAAe,GACtF,OAAQ,CAAExoB,KAAM,mBAAoBwoB,eAAe,GACnD,OAAQ,CAAExoB,KAAM,mBAAoBwoB,eAAe,GACnD,OAAQ,CAAEE,UAAW,uBAAwBC,UAAW,uBAAwBH,eAAe,GAC/F,QAAS,CAAExoB,KAAM,uBAAwBwoB,eAAe,GACxD,QAAS,CAAExoB,KAAM,uBAAwBwoB,eAAe,GACxD,KAAM,CAAExoB,KAAM,eAAgBwoB,eAAe,GAC7CM,GAAI,CAAE9oB,KAAM,iBAAkBwoB,eAAe,GAC7C,KAAM,CAAExoB,KAAM,kBAAmBwoB,eAAe,IAE9CO,EAAY,CACdC,QAAS,CAAEhpB,KAAM,sBACjBipB,iBAAkB,CAAEjpB,KAAM,mBAC1BkpB,KAAM,CAAElpB,KAAM,gBACdmpB,cAAe,CAAEnpB,KAAM,qBACvBopB,GAAI,CAAEppB,KAAM,iBACZqpB,QAAS,CAAErpB,KAAM,uCACjBspB,UAAW,CAAEtpB,KAAM,2CACnBupB,QAAS,CAAEvpB,KAAM,sCACjBwpB,UAAW,CAAExpB,KAAM,mCACnBypB,UAAW,CAAEzpB,KAAM,iCACnB0pB,YAAa,CAAE1pB,KAAM,+CACrB2pB,UAAW,CAAE3pB,KAAM,8BACnB4pB,WAAY,CAAE5pB,KAAM,uBACpB6pB,MAAO,CAAE7pB,KAAM,cACf8pB,KAAM,CAAE9pB,KAAM,mBACd+pB,KAAM,CAAE/pB,KAAM,qBACdgqB,SAAU,CAAEhqB,KAAM,mBAClBiqB,SAAU,CAAEjqB,KAAM,wBAClBkqB,KAAM,CAAElqB,KAAM,aACdmqB,cAAe,CAAEnqB,KAAM,mBACvBoqB,YAAa,CAAEpqB,KAAM,iBACrBqqB,KAAM,CAAErqB,KAAM,aACdsqB,SAAU,CAAEtqB,KAAM,iBAClBuqB,MAAO,CAAEvqB,KAAM,eAEZ,MAAMwqB,EAITtoB,0BACI,GAAuC,IAAnCsoB,EAAOC,iBAAiBloB,OACxB,MAAM,IAAIzC,EAAa,UAAW,yFAGlC,OAAO0qB,EAAOC,iBAAiB,GAGvCvoB,sBAAsBwoB,GAClB,IAAKA,KAAUA,KAAQnU,GACnB,MAAM,IAAIzW,EAAa,cAAe,iBAAmB4qB,GAC7D,OAAOnU,EAAMmU,GASjBxoB,qBAAqByoB,EAAgBD,EAAO,SAAUE,GAClD,IAAIC,EAAU,CAAEC,aAAc,EAAGC,SAAU,KACrB,iBAAXH,IACPC,EAAU7tB,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAI6W,GAAUD,IAExD,MAAMG,EAAWP,EAAOQ,iBAAiBH,EAAQE,UAC3CE,EAASN,EAAexlB,MAAM,KACpC,GAAI8lB,EAAO1oB,OAAS,EAChB,MAAM,IAAIzC,EAAa,eAAgB,iEAAiE6qB,KAE5G,MAAM7tB,EAAMmuB,EAAO,GAAGC,cAChBntB,EAAQkZ,EAAUna,GACxB,IAAKiB,EACD,MAAM,IAAI+B,EAAa,eAAgB,qBAAuBhD,GAC9DiB,EAAM6a,SACNqS,EAAO,GAAKltB,EAAM6a,OAAOnU,YAC7B,IAAImU,EAASpX,SAASypB,EAAO,GAAI,IAEjCrS,IAAW,EAAIiS,EAAQC,aAEvB,IAAInqB,GADuB,EAATiY,EAAa,GACP7a,EAAM6Q,OAAS,EACvCjO,GAAQ6pB,EAAOW,eAAeT,GAAMjU,WACpC,IAAI2U,EAAS,EACTzqB,GAAQ,GAAa,EAAPA,EAAY,GAAM,IAChCyqB,EAAS,GACTzqB,GAAQ,GAAa,EAAPA,EAAY,GAAM,IAChCyqB,GAAU,GAEd,MAAMC,OAAqC,IAAlBttB,EAAMmZ,QAAmC,GAAT0B,EAAc7a,EAAMmZ,aAAU3W,EAEjFP,EAAOjC,EAAMiC,KACb6Y,EAAc9a,EAAM8a,YAC1B,IAAIyS,EAAsB,GAC1B,GAAIL,EAAO1oB,OAAS,GAAK0oB,EAAO,GAAI,CAChC,MAAMM,EAAYN,EAAO,GAAGC,cAC5BI,EAAsB,CAAEtrB,KAAMrD,KAAK6uB,aAAaD,EAAWR,KAAe,GAE9E,OAAO/tB,OAAOgX,OAAO,CAAElX,IAAAA,EACnB8b,OAAAA,EACAjY,KAAAA,EACA0qB,UAAAA,EAAWjU,WAAYrZ,EAAMqZ,WAAYpX,KAAAA,EACzCorB,OAAAA,EACAvS,YAAAA,EAAa4S,WAAW,GAASH,GAEzCppB,qBAAqBwpB,GACjB,QAAuB,IAAZA,GAA2BA,EAAU,GAAKA,EAAU,GAC3D,MAAM,IAAI5rB,EAAa,eAAgB,6DAA6D4rB,KAExG,MAcMC,EAdQ,CACV,EAAG,IACH,EAAG,KACH,EAAG,IACH,EAAG,KACH,EAAG,IACH,EAAG,IACH,EAAG,KACH,EAAG,IACH,EAAG,KACH,EAAG,IACH,GAAI,KACJ,GAAI,KAEgBD,GACxB,IAAKC,EACD,MAAM,IAAI7rB,EAAa,eAAgB,mCAAmC4rB,KAE9E,OAAOC,EAEXzpB,kBAAkB0pB,EAAMC,EAAQ,GAC5B,IAAIC,EACA7kB,EAAQ,EACR8kB,EAAU,EACd,GAA2B,MAAvBH,EAAKV,cAAuB,CAC5B,MAAMc,EAAe,IAAIC,EAAM,wBAAyBzB,EAAO0B,sBAAsB5e,aAErF,GADAwe,EAAQ,wBACkBvrB,MAAtByrB,EAAa/kB,OAA6C1G,MAAvByrB,EAAa9kB,OAChD,MAAM,IAAIpH,EAAa,iBAAkB,6BAC7CmH,EAAQ+kB,EAAa/kB,MACrB8kB,GAAWC,EAAa9kB,OAAS,OAGjCD,EAAQujB,EAAO2B,UAAUP,GAE7B,MAAO,CACHlqB,KAAMkqB,EACN5rB,KAAM8rB,EACNM,SAAU,IAAMnlB,EAAQ4kB,EACxBE,QAAAA,GAKR7pB,iBAAiBR,GACb,OAAO,EAAIA,EAAK+C,WAAWlC,OAE/BL,yBAAyBmqB,GACrB,OAAO9D,EAAc8D,GAEzBnqB,uBAAuBgT,GACnB,OAAO4D,EAAY5D,GAEvBhT,qBAAqBgT,GACjB,OAAO6T,EAAU7T,GAErBhT,oBAAoBoqB,GAChB,MAAMC,EAAU1X,EAAcyX,GAC9B,IAAKC,EACD,MAAM,IAAIzsB,EAAa,kBAAmB,4BAA4BwsB,MAE1E,IAAKC,EAAQrX,IACT,MAAO,GAEX,MAIMsX,EAJiB,CACnBnrB,EAAG,CAAC,EAAG,GAAK,IAAK,EAAG,EAAG,IAAK,KAC5B,IAAK,CAAC,EAAG,KAAM,GAAK,EAAG,IAAK,GAAK,IAERkrB,EAAQrX,KAC/BuX,EAAW,GACjB,IAAK,IAAIvnB,EAAI,EAAGA,EAAIqnB,EAAQxX,MAAO7P,EAAG,CAClC,MAAMvE,EAAO6rB,EAAMtnB,GACnBunB,EAAStb,KAAK,CAAE1C,KAAM8d,EAAQrX,IAAKvU,KAAAA,IAEvC,OAAO8rB,EAEXvqB,0BACI,OAAO2S,EAEX3S,uBAAuBoqB,GACnB,OAAOA,KAAQzX,EAQnB3S,wBAAwB6oB,GACpB,MAAM2B,EAAiB9X,EAAgBmW,GAIvC,QAHuBxqB,IAAnBmsB,IACA3B,EAAW2B,QAEansB,IAAxBoU,EAAUoW,GACV,MAAM,IAAIjrB,EAAa,eAAgB,uCAAuCirB,KAElF,OAAOA,EAGX7oB,0BAA0B6oB,GACtB,OAAO,IAAIjpB,GAAWkD,MAAMwlB,EAAOQ,iBAAiBD,IAGxD7oB,wBAAwB6oB,GACpB,OAAOP,EAAOmC,mBAAmB5B,GAAUhtB,QAG/CmE,uBAAuB6oB,GACnBA,EAAWP,EAAOQ,iBAAiBD,GACnC,MAAM6B,EAAQjY,EAAUoW,GACxB,QAAcxqB,IAAVqsB,EACA,MAAM,IAAI9sB,EAAa,mBAE3B,OAAO8sB,EAEX1qB,oBAAoBuM,EAAMsc,GACtB,IAAI/qB,EAAO,GACX,OAAQyO,GAEJ,IAAK,KACDzO,EAAO,uBACP,MACJ,IAAK,KACDA,EAAO,sBACP,MACJ,IAAK,KAGL,IAAK,KAiDL,IAAK,KACDA,EAAO,uBACP,MA/CJ,IAAK,KACDA,EAAO,0BACP,MACJ,IAAK,KACDA,EAAO,yBACP,MACJ,IAAK,KAGL,IAAK,KA8BL,IAAK,KACDA,EAAO,0BACP,MA5BJ,IAAK,KACDA,EAAO,iBACP,MACJ,IAAK,KACDA,EAAO,gBACP,MACJ,IAAK,KACDA,EAAO,iBACP,MACJ,IAAK,KACDA,EAAO,kBACP,MAEJ,IAAK,KACDA,EAAO,sBACP,MACJ,IAAK,KA4BL,IAAK,KACDA,EAAO,sBACP,MA1BJ,IAAK,KACDA,EAAO,uBACP,MACJ,IAAK,KACDA,EAAO,uBACP,MAIJ,IAAK,KACDA,EAAO,oBACP,MAIJ,IAAK,KACDA,EAAO,4BACP,MACJ,IAAK,OACDA,EAAO,6BACP,MACJ,IAAK,KACDA,EAAO,gBACP,MAIJ,IAAK,KACDA,EAAO,iCACP,MACJ,IAAK,IACL,IAAK,IACD,OAAQ+qB,GACJ,IAAK,MACD/qB,EAAO,6BACP,MACJ,IAAK,IACDA,EAAO,uBACP,MACJ,IAAK,IACDA,EAAO,sBACP,MACJ,QACIA,EAAO,uBAGf,MACJ,IAAK,IACL,IAAK,IACD,OAAQ+qB,GACJ,IAAK,MACD/qB,EAAO,sBACP,MACJ,IAAK,IACDA,EAAO,gBACP,MACJ,IAAK,IACDA,EAAO,eACP,MACJ,QACIA,EAAO,gBAGf,MACJ,IAAK,IACL,IAAK,IACD,OAAQ+qB,GACJ,IAAK,MACD/qB,EAAO,uBACP,MACJ,IAAK,IACDA,EAAO,iBACP,MACJ,IAAK,IACDA,EAAO,gBACP,MACJ,QACIA,EAAO,iBAGf,MACJ,IAAK,KACD,OAAQ+qB,GACJ,IAAK,MACD/qB,EAAO,6BACP,MACJ,IAAK,IACDA,EAAO,uBACP,MACJ,IAAK,IACDA,EAAO,sBACP,MACJ,QACIA,EAAO,kBAGf,MACJ,IAAK,KACD,OAAQ+qB,GACJ,IAAK,MACD/qB,EAAO,6BACP,MACJ,IAAK,IACDA,EAAO,uBACP,MACJ,IAAK,IACDA,EAAO,sBACP,MACJ,QACIA,EAAO,uBAGf,MACJ,IAAK,KACD,OAAQ+qB,GACJ,IAAK,MACD/qB,EAAO,4BACP,MACJ,IAAK,IAGL,IAAK,IACDA,EAAO,sBACP,MACJ,QACIA,EAAO,sBAGf,MACJ,IAAK,KACD,OAAQ+qB,GACJ,IAAK,MACD/qB,EAAO,gCACP,MACJ,IAAK,IACDA,EAAO,0BACP,MACJ,IAAK,IACDA,EAAO,yBACP,MACJ,QACIA,EAAO,0BAGf,MACJ,IAAK,KACD,OAAQ+qB,GACJ,IAAK,MACD/qB,EAAO,kCACP,MACJ,IAAK,IACDA,EAAO,4BACP,MACJ,IAAK,IACDA,EAAO,2BACP,MACJ,QACIA,EAAO,4BAGf,MACJ,IAAK,KACD,OAAQ+qB,GACJ,IAAK,MACD/qB,EAAO,8BACP,MACJ,IAAK,IACDA,EAAO,wBACP,MACJ,IAAK,IACDA,EAAO,uBACP,MACJ,QACIA,EAAO,wBAEf,MACJ,IAAK,KACD,OAAQ+qB,GACJ,IAAK,MACD/qB,EAAO,8BACP,MACJ,IAAK,IACDA,EAAO,wBACP,MACJ,IAAK,IACDA,EAAO,uBACP,MACJ,QACIA,EAAO,yBAIvB,OAAOA,EAKXkC,qBAAqB6oB,EAAUtc,EAAO,KAClCsc,EAAWP,EAAOQ,iBAAiBD,GAEnC,MAAM/qB,EAAO6sB,EAAc9B,GAC3B,QAAaxqB,IAATP,EACA,OAGJ,IAAI8sB,EAAsB9sB,EAAKyO,KAAKA,GAEpC,MAAM+c,EAAehB,EAAOgB,aAAa/c,EAAKyc,cAAeH,GACzC,IAAhBS,IACAsB,EAAsB9vB,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAI8Y,GAAsB,CAAEC,UAAWvB,EAAcxrB,KAAMwrB,KACjH,MAAMuB,EAAYD,EAAoBC,UAKtC,OAAO/vB,OAAOgX,OAAOhX,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAIhU,EAAKgtB,QAAS,CAAEZ,SAFpD,CAACP,EAAQrB,EAAOyC,sBAAwBhB,EAAMG,SAASW,EAAWlB,KAESiB,IAGpGtC,EAAO0C,eAAiB,IACxB1C,EAAO2C,WAAa,IACpB3C,EAAO4C,YAAc,GACrB5C,EAAO6C,qBAAuB,EAC9B7C,EAAO8C,wBAA0B,EACjC9C,EAAO9V,WAAaA,EAIpB8V,EAAOC,iBAAmB,GAC1BD,EAAOyC,oBAAsB,GAC7BzC,EAAO0B,qBAAuB,GAC9B1B,EAAO+C,qBAAuB,GAC9B/C,EAAOgD,oBAAsB,GAQ7BhD,EAAOiD,wBAA0B,EACjCjD,EAAOkD,cAAgB5U,EACvB0R,EAAOmD,uBApkBmB,CACtB,EAAG,CACCvsB,EAAG,CAAC,GACJC,EAAG,CAAC,IAER,EAAG,CACCD,EAAG,CAAC,EAAG,IAEX,EAAG,CACCA,EAAG,CAAC,EAAG,EAAG,GACVC,EAAG,CAAC,EAAG,EAAG,GACVusB,iBAAkB,CAAC,EAAG,EAAG,IAE7B,EAAG,CACCxsB,EAAG,CAAC,EAAG,EAAG,EAAG,GACbC,EAAG,CAAC,EAAG,EAAG,EAAG,GACbwsB,sBAAuB,CAAC,EAAG,EAAG,EAAG,IAErC,EAAG,CACCzsB,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAChBC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,GAChBysB,sBAAuB,CAAC,EAAG,EAAG,EAAG,EAAG,GACpCC,2BAA4B,CAAC,EAAG,EAAG,EAAG,EAAG,IAE7C,EAAG,CACC3sB,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GACnBC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB2sB,qBAAsB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GACtCC,0BAA2B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,KAyiBnDzD,EAAO0D,QAAU,CAEbC,MAAOC,OAAOC,aAAa,MAE3BC,KAAMF,OAAOC,aAAa,MAE1BE,QAASH,OAAOC,aAAa,MAE7BG,SAAUJ,OAAOC,aAAa,MAE9B,eAAgBD,OAAOC,aAAa,KAEpCI,QAASL,OAAOC,aAAa,KAE7BK,OAAQN,OAAOC,aAAa,OAGhC7D,EAAOmE,WAj3BgB,CACnBptB,EAAG,CAAE6I,KAAM,QACXxM,EAAG,CAAEwM,KAAM,QACX7E,EAAG,CAAE6E,KAAM,YACXwkB,EAAG,CAAExkB,KAAM,SACXvF,EAAG,CAAEuF,KAAM,SACXhN,EAAG,CAAEgN,KAAM,SACXvH,EAAG,CAAEuH,KAAM,WACX9J,EAAG,CAAE8J,KAAM,KACXykB,GAAI,CAAEzkB,KAAM,WACZ0kB,GAAI,CAAE1kB,KAAM,YACZ2kB,GAAI,CAAE3kB,KAAM,WACZ4kB,GAAI,CAAE5kB,KAAM,oBACZ6kB,GAAI,CAAE7kB,KAAM,UACZ8kB,GAAI,CAAE9kB,KAAM,eACZ+kB,GAAI,CAAE/kB,KAAM,kBAo2BhBogB,EAAO4E,QAAU,CACbC,UAAW,EACXC,WAAY,EACZ7hB,WAAYiH,GAOhB,MAAMmY,EAAgB,CAClB,MAAO,CACHG,OAAQ,CACJuC,MAAM,EACNC,YAAa,EACbC,MAAM,EACNC,mBAAoBlF,EAAO4C,YAC3BuC,qBAAsBnF,EAAO4C,YAC7BwC,2BAA4BpF,EAAO4C,YACnCyC,6BAA8BrF,EAAO4C,YACrC0C,WAAY,EACZC,WAAY,EACZC,WAAY,GAEhBvhB,KAAM,CACF7Q,EAAG,CAECmvB,UAAW,kBACXrU,MAAM,EACNuX,SAAU,MACVH,WAAY,IAKhBjrB,EAAG,CAGCunB,SAAU,IAAM5B,EAAO+C,qBACvB0C,SAAU,SAItB,EAAG,CACCjD,OAAQ,CACJuC,MAAM,EACNC,YAAa,EACbC,MAAM,EACNC,mBAAoBlF,EAAO4C,YAC3BuC,qBAAsBnF,EAAO4C,YAC7BwC,2BAA4BpF,EAAO4C,YACnCyC,6BAA8BrF,EAAO4C,YACrC0C,WAAY,EACZC,WAAY,EACZC,WAAY,GAEhBvhB,KAAM,CACF7Q,EAAG,CAECmvB,UAAW,YACXmD,gBAAiB,qBACjBxX,MAAM,EACNuX,SAAU,MACVH,WAAY,IAKhBjrB,EAAG,CAGCunB,SAAU,IAAM5B,EAAO+C,qBACvB0C,SAAU,SAItB,EAAG,CACCjD,OAAQ,CACJuC,MAAM,EACNC,YAAa,EACbC,MAAM,EACNC,kBAAmB,EACnBC,oBAAqB,EACrBC,0BAA2B,EAC3BC,4BAA6B,EAC7BC,WAAY,EACZC,WAAY,EACZC,WAAY,GAEhBvhB,KAAM,CACF7Q,EAAG,CAECmvB,UAAW,WACXmD,gBAAiB,oBACjBX,MAAM,EACN7W,MAAM,EACNuX,SAAU,MACVH,YAAa,IAKjBjrB,EAAG,CAGCunB,SAAU,IAAM5B,EAAO+C,qBACvB0C,SAAU,SAItB,EAAG,CACCjD,OAAQ,CACJuC,MAAM,EACNC,YAAa,EACbC,MAAM,EACNC,kBAAmB,EACnBC,oBAAqB,EACrBC,0BAA2B,EAC3BC,4BAA6B,EAC7BC,WAAY,EACZC,WAAY,EACZC,WAAY,GAEhBvhB,KAAM,CACF7Q,EAAG,CAECmvB,UAAW,cACXwC,MAAM,EACN7W,MAAM,EACNuX,SAAU,MACVH,YAAa,GACbC,WAAY,IACZC,WAAY,KAKhBnrB,EAAG,CAGCunB,SAAU,IAAM5B,EAAO+C,qBACvB0C,SAAU,SAItB,EAAG,CACCjD,OAAQ,CACJuC,MAAM,EACNC,YAAa,EACbC,MAAM,EACNU,WAAY,EACZC,oBAAqB,EACrBC,iBAAkB,YAClBC,mBAAoB,cACpBZ,kBAAmB,EACnBC,oBAAqB,EACrBC,0BAA2B,EAC3BC,4BAA6B,EAC7BC,WAAY,EACZC,WAAY,EACZC,WAAY,GAEhBvhB,KAAM,CACF7Q,EAAG,CAECmvB,UAAW,UACXwC,MAAM,EACNE,MAAM,EACN/W,MAAM,EACNuX,SAAU,MACVH,YAAa,GACbC,WAAY,EACZC,WAAY,GAKhBnrB,EAAG,CAGCunB,SAAU,IAAM5B,EAAO+C,qBACvB0C,SAAU,SAItB,GAAI,CACAjD,OAAQ,CACJmD,WAAY,EACZC,oBAAqB,EACrBb,MAAM,EACNC,YAAa,EACbC,MAAM,EACNY,iBAAkB,aAClBC,mBAAoB,eACpBZ,kBAAmB,EACnBC,oBAAqB,EACrBC,0BAA2B,EAC3BC,4BAA6B,EAC7BC,WAAY,EACZC,WAAY,EACZC,WAAY,GAEhBvhB,KAAM,CACF7Q,EAAG,CAECmvB,UAAW,WACXwC,MAAM,EACNE,MAAM,EACN/W,MAAM,EACNuX,SAAU,MACVH,YAAa,GACbC,WAAY,EACZC,WAAY,GAKhBnrB,EAAG,CAGCunB,SAAU,IAAM5B,EAAO+C,qBACvB0C,SAAU,SAItB,GAAI,CACAjD,OAAQ,CACJmD,WAAY,EACZC,oBAAqB,IACrBb,MAAM,EACNC,YAAa,EACbC,MAAM,EACNY,iBAAkB,aAClBC,mBAAoB,eACpBZ,kBAAmB,EACnBC,oBAAqB,EACrBC,0BAA2B,EAC3BC,4BAA6B,EAC7BC,WAAY,EACZC,WAAY,EACZC,WAAY,GAEhBvhB,KAAM,CACF7Q,EAAG,CAECmvB,UAAW,WACXwC,MAAM,EACNE,MAAM,EACN/W,MAAM,EACNuX,SAAU,MACVH,YAAa,IACbC,WAAY,EACZC,WAAY,GAKhBnrB,EAAG,CAGCunB,SAAU,IAAM5B,EAAO+C,qBACvB0C,SAAU,SAItB,GAAI,CACAjD,OAAQ,CACJmD,WAAY,EACZC,oBAAqB,GACrBb,MAAM,EACNC,YAAa,EACbC,MAAM,EACNY,iBAAkB,aAClBC,mBAAoB,eACpBZ,kBAAmB,GACnBC,oBAAqB,GACrBC,0BAA2B,GAC3BC,4BAA6B,GAC7BC,WAAY,EACZC,WAAY,EACZC,WAAY,GAEhBvhB,KAAM,CACF7Q,EAAG,CAECmvB,UAAW,WACXwC,MAAM,EACNE,MAAM,EACN/W,MAAM,EACNuX,SAAU,MACVH,YAAa,IACbC,WAAY,EACZC,WAAY,GAKhBnrB,EAAG,CAGCunB,SAAU,IAAM5B,EAAO+C,qBACvB0C,SAAU,SAItB,IAAK,CACDjD,OAAQ,CACJmD,WAAY,EACZC,oBAAqB,KACrBb,MAAM,EACNC,YAAa,EACbC,MAAM,EACNY,iBAAkB,cAClBC,mBAAoB,gBACpBZ,kBAAmB,GACnBC,oBAAqB,GACrBC,0BAA2B,GAC3BC,4BAA6B,GAC7BC,WAAY,EACZC,WAAY,EACZC,WAAY,GAEhBvhB,KAAM,CACF7Q,EAAG,CAECmvB,UAAW,YACXwC,MAAM,EACNE,MAAM,EACN/W,MAAM,EACNuX,SAAU,MACVH,YAAa,IACbC,WAAY,EACZC,WAAY,GAKhBnrB,EAAG,CAGCunB,SAAU,IAAM5B,EAAO+C,qBACvB0C,SAAU,UC/zCnB,IAAIM,ECHAC,GDIX,SAAWD,GACPA,EAAYA,EAAkB,KAAI,GAAK,OACvCA,EAAYA,EAAkB,KAAI,GAAK,OACvCA,EAAYA,EAAuB,UAAI,GAAK,YAC5CA,EAAYA,EAAoB,OAAI,GAAK,SAJ7C,CAKGA,IAAgBA,EAAc,KACjC,MAAME,EACFryB,YAAYsyB,EAAW1wB,EAAM/B,GACzBtB,KAAKg0B,OAAS,EACdh0B,KAAKsQ,QAAUgf,EAAM2E,YAAYF,EAAW1wB,EAAM/B,GAClDtB,KAAKk0B,KAAO5E,EAAM6E,sBAAsBn0B,KAAKsQ,QAAQ8jB,QAASp0B,KAAKsQ,QAAQ4e,MAAOlvB,KAAKsQ,QAAQ+jB,QAASr0B,KAAKsQ,QAAQgkB,SACjHhzB,IACAtB,KAAKg0B,MAAQ1E,EAAMiF,iBAAiBv0B,KAAKsQ,QAAQzB,KAAMvN,EAAU+B,EAAM,SAAU,KAuB7F,MAAMmxB,EACF/yB,YAAY2yB,EAASK,EAASC,EAASxF,GACnClvB,KAAKo0B,QAAUA,EACfp0B,KAAKy0B,QAAUA,EACfz0B,KAAK00B,QAAUA,EACf10B,KAAKkvB,MAAQA,EACblvB,KAAKuI,EAAI,EACTvI,KAAK20B,UAAY,EAEjB30B,KAAK20B,UAAY1vB,KAAK4G,IAAI,GAAIgiB,EAAO8C,yBAEzCzjB,OACI,OAAOlN,KAAKuI,GAAKvI,KAAKo0B,QAAQxuB,OAElCmH,OACI,OAAO9H,KAAK2vB,MAAO50B,KAAKo0B,QAAQp0B,KAAKuI,KAAOvI,KAAK20B,UAAa30B,KAAK20B,WAEvEE,QACI,OAAO5vB,KAAK2vB,OAAO50B,KAAKy0B,QAAUz0B,KAAKo0B,QAAQp0B,KAAKuI,KAAOvI,KAAKkvB,OAASlvB,KAAK20B,WAAa30B,KAAK20B,UAEpGG,QACI,OAAO7vB,KAAK2vB,OAAO50B,KAAK00B,QAAU10B,KAAKo0B,QAAQp0B,KAAKuI,KAAOvI,KAAKkvB,OAASlvB,KAAK20B,WAAa30B,KAAK20B,UAEpGpvB,aAAa+C,GACT,MAAM2E,EAAS,GACT8nB,EAAQzsB,EAAIE,MAAM,KACxB,IAAID,EAAI,EACR,KAAOA,EAAIwsB,EAAMnvB,QACb,OAAQmvB,EAAMxsB,MACV,IAAK,IACD0E,EAAOuH,KAAKof,EAAYoB,KAAMnwB,SAASkwB,EAAMxsB,MAAO1D,SAASkwB,EAAMxsB,OACnE,MACJ,IAAK,IACD0E,EAAOuH,KAAKof,EAAYqB,KAAMpwB,SAASkwB,EAAMxsB,MAAO1D,SAASkwB,EAAMxsB,OACnE,MACJ,IAAK,IACD0E,EAAOuH,KAAKof,EAAYsB,UAAWrwB,SAASkwB,EAAMxsB,MAAO1D,SAASkwB,EAAMxsB,MAAO1D,SAASkwB,EAAMxsB,MAAO1D,SAASkwB,EAAMxsB,OACpH,MACJ,IAAK,IACD0E,EAAOuH,KAAKof,EAAYuB,OAAQtwB,SAASkwB,EAAMxsB,MAAO1D,SAASkwB,EAAMxsB,MAAO1D,SAASkwB,EAAMxsB,MAAO1D,SAASkwB,EAAMxsB,MAAO1D,SAASkwB,EAAMxsB,MAAO1D,SAASkwB,EAAMxsB,OAIzK,OAAO0E,GAGR,MAAMqiB,UAAc1b,EAMvBnS,YAAY4B,EAAM2wB,EAAO9F,GACrB3qB,QAGAvD,KAAKk0B,KAAO,IAAIzrB,EAAY,EAAG,EAAG,EAAG,GACrCzI,KAAKo1B,UAAY,GACjBp1B,KAAKq1B,UAAY,GACjBr1B,KAAKkuB,QAAU,GACfluB,KAAKkvB,MAAQ,EACblvB,KAAKqD,KAAOA,EACZrD,KAAKg0B,MAAQA,EACbh0B,KAAKs1B,YAAc,CAAE3xB,EAAG,EAAG+E,EAAG,GAC9B1I,KAAKq0B,QAAU,EACfr0B,KAAKs0B,QAAU,EACXpG,EACAluB,KAAKu1B,WAAWrH,GAGhBluB,KAAKw1B,QAKF9zB,sBACP,OAAOG,EAASytB,MAYpB/pB,wBAAwBsJ,EAAMvN,EAAU+B,EAAMlD,EAAK+Q,GAC/C,IAAI9P,EAAQyN,EAAKoC,aAAa,UAAU3P,KAAY+B,KAAQlD,SAAOyD,GAKnE,YAJcA,IAAVxC,IAEAA,EAAQyN,EAAKoC,aAAa,UAAU3P,KAAYnB,IAAO+Q,IAEpD9P,EAEXmE,mBAAmBwuB,EAAW1wB,GAE1B,IAAI8rB,EACAtgB,EAFJnL,EAAQqwB,EAAW,eAAgB,+BAGnC,IAAK,IAAIxrB,EAAI,EAAGA,EAAIwrB,EAAUnuB,OAAQ2C,IAGlC,GAFAsG,EAAOklB,EAAUxrB,GACjB4mB,EAAQtgB,EAAKkC,YAAY1N,GACrB8rB,EACA,MAAO,CAAEA,MAAAA,EAAOtgB,KAAAA,GAExB,MAAM,IAAI1L,EAAa,WAAY,SAASE,6BAEhDkC,mBAAmBwuB,EAAW1wB,EAAM/B,GAChC,MAAM,MAAE6tB,EAAK,KAAEtgB,GAASygB,EAAMmG,YAAY1B,EAAW1wB,GACrD,IAAK8rB,EAAM/uB,EACP,MAAM,IAAI+C,EAAa,WAAY,SAASE,6BAChD,IAAIgxB,EAAU,EACVC,EAAU,EACVpF,EAAQ,EACR5tB,GAAYuN,IACZwlB,EAAU/E,EAAMiF,iBAAiB1lB,EAAMvN,EAAU+B,EAAM,SAAU,GACjEixB,EAAUhF,EAAMiF,iBAAiB1lB,EAAMvN,EAAU+B,EAAM,SAAU,GACjE6rB,EAAQI,EAAMiF,iBAAiB1lB,EAAMvN,EAAU+B,EAAM,QAAS,IAElE,MAAMqyB,EAAQvG,EAAMuG,MACdC,EAAQxG,EAAMwG,MACdC,EAAKzG,EAAMyG,GAIjB,OAHKzG,EAAM0G,iBACP1G,EAAM0G,eAAiBrB,EAAansB,MAAM8mB,EAAM/uB,IAE7C,CACHs1B,MAAAA,EACAC,MAAAA,EACAtB,QAAAA,EACAC,QAAAA,EACApF,MAAAA,EACA0G,GAAAA,EACAxB,QAASjF,EAAM0G,eACfhnB,KAAAA,EACAvE,MAAOqrB,EAAQD,EACfnrB,OAAQqrB,GAchBrwB,mBAAmBuwB,EAAKC,EAAOC,EAAOhC,EAAO3wB,EAAM6qB,GAC/C,IAAItgB,EACJ,MAAMyC,EAAOif,EAAM2G,MAAMC,OAAO7yB,EAAM6qB,MAAAA,OAAyC,EAASA,EAAQ5sB,UAC1FgP,EAAUD,EAAKC,SACF,GAAfD,EAAK2jB,QACLA,EAAQ3jB,EAAK2jB,OAEjB,MAAMmC,EAAyF,QAA1EvoB,EAAKsgB,MAAAA,OAAyC,EAASA,EAAQgB,aAA0B,IAAPthB,EAAgBA,EAAK,EACtHshB,EAAkB,GAAR8E,GAAgD,IAA/B1jB,EAAQzB,KAAKgC,iBAA4BP,EAAQ4e,MAAQiH,EAE1F,OADA7G,EAAM8G,cAAcN,EAAKxlB,EAAQ8jB,QAASlF,EAAO6G,EAAQzlB,EAAQ+jB,QAAU8B,EAAaH,EAAQ1lB,EAAQgkB,QAAU6B,GAC3G7lB,EAEX/K,qBAAqBuwB,EAAK1B,EAASlF,EAAO6G,EAAOC,GAC7C,MAAMK,EAAK,IAAI7B,EAAaJ,EAAS2B,EAAOC,EAAO9G,GAEnD,IAAIvrB,EAAG+E,EACP,IAFAotB,EAAIQ,aAEID,EAAGnpB,QACP,OAAQmpB,EAAGtpB,QACP,KAAK6mB,EAAYoB,KACbc,EAAIS,OAAOF,EAAGxB,QAASwB,EAAGvB,SAC1B,MACJ,KAAKlB,EAAYqB,KACba,EAAIU,OAAOH,EAAGxB,QAASwB,EAAGvB,SAC1B,MACJ,KAAKlB,EAAYsB,UACbvxB,EAAI0yB,EAAGxB,QACPnsB,EAAI2tB,EAAGvB,QACPgB,EAAIW,iBAAiBJ,EAAGxB,QAASwB,EAAGvB,QAASnxB,EAAG+E,GAChD,MACJ,KAAKkrB,EAAYuB,OACbxxB,EAAI0yB,EAAGxB,QACPnsB,EAAI2tB,EAAGvB,QACPgB,EAAIY,cAAcL,EAAGxB,QAASwB,EAAGvB,QAASuB,EAAGxB,QAASwB,EAAGvB,QAASnxB,EAAG+E,GAIjFotB,EAAIa,OAERpxB,6BAA6B6uB,EAASlF,EAAO6G,EAAOC,GAChD,MAAMK,EAAK,IAAI7B,EAAaJ,EAAS2B,EAAOC,EAAO9G,GAC7C0H,EAAW,IAAI9sB,EAErB,IAEInG,EAAG+E,EAFHmuB,EAAOd,EACPe,EAAOd,EAEX,MAAQK,EAAGnpB,QACP,OAAQmpB,EAAGtpB,QACP,KAAK6mB,EAAYoB,KAEb6B,EAAOR,EAAGxB,QACViC,EAAOT,EAAGvB,QACV,MACJ,KAAKlB,EAAYqB,KACb2B,EAASpsB,SAASqsB,EAAMC,GACxBD,EAAOR,EAAGxB,QACViC,EAAOT,EAAGvB,QACV8B,EAASpsB,SAASqsB,EAAMC,GACxB,MACJ,KAAKlD,EAAYsB,UACbvxB,EAAI0yB,EAAGxB,QACPnsB,EAAI2tB,EAAGvB,QACP8B,EAASjsB,kBAAkBksB,EAAMC,EAAMT,EAAGxB,QAASwB,EAAGvB,QAASnxB,EAAG+E,GAClEmuB,EAAOlzB,EACPmzB,EAAOpuB,EACP,MACJ,KAAKkrB,EAAYuB,OACbxxB,EAAI0yB,EAAGxB,QACPnsB,EAAI2tB,EAAGvB,QACP8B,EAAStrB,eAAeurB,EAAMC,EAAMT,EAAGxB,QAASwB,EAAGvB,QAASuB,EAAGxB,QAASwB,EAAGvB,QAASnxB,EAAG+E,GACvFmuB,EAAOlzB,EACPmzB,EAAOpuB,EAInB,OAAO,IAAID,EAAYmuB,EAASxsB,QAASwsB,EAASvsB,QAASusB,EAAStsB,QAASssB,EAASrsB,UAE1FhF,gBAAgBlC,EAAM2wB,EAAO1yB,GACzB,MAAM+O,EAAOif,EAAM2G,MAAMC,OAAO7yB,EAAM/B,IACnB,GAAf+O,EAAK2jB,QACLA,EAAQ3jB,EAAK2jB,OAEjB,MAAM9E,EAAiB,GAAR8E,GAAmD,IAApC3jB,EAAKC,QAAQzB,KAAKgC,iBAChD,OAAOR,EAAK6jB,KAAKlrB,OAASkmB,EAG9BpZ,QAAQ/R,IAGRgzB,UACI,OAAO/2B,KAAKqD,KAGhBkyB,WAAWrH,GACPluB,KAAKkuB,QAAU7tB,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAIrX,KAAKkuB,SAAUA,GAC9DluB,KAAKw1B,QAETwB,SAAShD,GAEL,OADAh0B,KAAKg0B,MAAQA,EACNh0B,KAEXi3B,SAASC,GAEL,OADAl3B,KAAKk3B,MAAQA,EACNl3B,KAEXm3B,YACI,OAAOn3B,KAAKq0B,QAEhB+C,UAAU/C,GAEN,OADAr0B,KAAKq0B,QAAUA,EACRr0B,KAEXq3B,YACI,OAAOr3B,KAAKs0B,QAEhBgD,UAAUhD,GAEN,OADAt0B,KAAKs0B,QAAUA,EACRt0B,KAEXw1B,QACI,MAAMnlB,EAAOif,EAAM2G,MAAMC,OAAOl2B,KAAKqD,KAAMrD,KAAKkuB,QAAQ5sB,UACxDtB,KAAKsQ,QAAUD,EAAKC,SAED,GAAfD,EAAK2jB,QACLh0B,KAAKg0B,MAAQ3jB,EAAK2jB,OAEtBh0B,KAAKkvB,MAAsB,GAAblvB,KAAKg0B,OAAmD,IAApCh0B,KAAKsQ,QAAQzB,KAAKgC,iBACpD7Q,KAAKk0B,KAAO,IAAIzrB,EAAY4H,EAAK6jB,KAAKprB,OAAS9I,KAAKkvB,MAAO7e,EAAK6jB,KAAKnrB,OAAS/I,KAAKkvB,MAAO7e,EAAK6jB,KAAKlrB,OAAShJ,KAAKkvB,MAAO7e,EAAK6jB,KAAKjrB,OAASjJ,KAAKkvB,OAErJqI,eACI,OAAO7zB,EAAQ1D,KAAKsQ,QAAS,WAAY,SAAStQ,KAAKqD,4BAE3DsN,aACI,MAAML,EAAUtQ,KAAKu3B,eACfC,EAAelnB,EAAQ4e,MAC7B,MAAO,CACHwG,MAAOplB,EAAQolB,MAAQ11B,KAAKkvB,MAAQsI,EACpC7B,MAAOrlB,EAAQqlB,MAAQ31B,KAAKkvB,MAAQsI,EACpCltB,MAAOtK,KAAKk0B,KAAKlrB,OACjBuB,OAAQvK,KAAKk0B,KAAKjrB,OAClBimB,MAAOlvB,KAAKkvB,MAAQsI,EACpBnD,QAAS/jB,EAAQ+jB,QACjBC,QAAShkB,EAAQgkB,QACjBF,QAAS9jB,EAAQ8jB,QACjBvlB,KAAMyB,EAAQzB,KACd+mB,GAAItlB,EAAQslB,IAGpB6B,WAAW9zB,GACP,MAAM,KAAEuwB,GAASl0B,KAEX03B,GAAU/zB,EADAsB,KAAK4C,IAAIqsB,EAAKprB,OAASorB,EAAKlrB,SACbkrB,EAAKlrB,OACpChJ,KAAKs1B,YAAY3xB,GAAK+zB,EAE1BC,WAAWjvB,GACP,MAAM,KAAEwrB,GAASl0B,KAEX43B,GAAUlvB,EADAzD,KAAK4C,IAAIqsB,EAAKnrB,OAASmrB,EAAKjrB,SACbirB,EAAKjrB,OACpCjJ,KAAKs1B,YAAY5sB,GAAKkvB,EAE1BC,UAAUl0B,EAAG+E,GACT1I,KAAKy3B,WAAW9zB,GAChB3D,KAAK23B,WAAWjvB,GAEpBovB,OAAOhC,EAAKnyB,EAAG+E,GACX,MAAM4H,EAAUtQ,KAAKu3B,eACfnD,EAAU9jB,EAAQ8jB,QAClBlF,EAAQlvB,KAAKkvB,MAAQ5e,EAAQ4e,MACnClvB,KAAKmW,cACLnW,KAAK6U,WAAWihB,GAChB,MAAMiC,EAAOp0B,EAAI3D,KAAKs1B,YAAY3xB,EAAI2M,EAAQ+jB,QACxC2D,EAAOtvB,EAAI1I,KAAKs1B,YAAY5sB,EAAI4H,EAAQgkB,QAC9ChF,EAAM8G,cAAcN,EAAK1B,EAASlF,EAAO6I,EAAMC,GAC/Ch4B,KAAK0V,aAAaogB,GAEtBmC,aACI,OAAOv0B,EAAQ1D,KAAKk3B,MAAO,UAAW,kCAE1CgB,cAAcv0B,GACV,MAAMmR,EAAU9U,KAAK6V,eACfvF,EAAUtQ,KAAKu3B,eACfL,EAAQl3B,KAAKi4B,aACb7D,EAAU9jB,EAAQ8jB,QAClBlF,EAAQlvB,KAAKkvB,MAAQ5e,EAAQ4e,MACnClvB,KAAKmW,cACLnW,KAAK6U,aACL,MAAMkjB,EAAOp0B,EAAI3D,KAAKq0B,QAAU/jB,EAAQ+jB,QAClC2D,EAAOd,EAAMiB,gBAAkBn4B,KAAKs0B,QAAUhkB,EAAQgkB,QAC5DhF,EAAM8G,cAActhB,EAASsf,EAASlF,EAAO6I,EAAMC,GACnDh4B,KAAK0V,gBAGb4Z,EAAM2G,MAAQ,IAxWd,MACIx0B,cACIzB,KAAKi2B,MAAQ,IAAImC,IAErBlC,OAAO7yB,EAAM/B,GACT,IAAI+2B,EAAUr4B,KAAKi2B,MAAMz1B,IAAI8uB,EAAMgJ,wBACnB10B,IAAZy0B,IACAA,EAAU,GACVr4B,KAAKi2B,MAAM3wB,IAAIgqB,EAAMgJ,kBAAmBD,IAE5C,MAAMl4B,EAAMmB,EAAW,GAAG+B,KAAQ/B,IAAa+B,EAC/C,IAAIk1B,EAAQF,EAAQl4B,GAKpB,YAJcyD,IAAV20B,IACAA,EAAQ,IAAIzE,EAAgBxE,EAAMxB,iBAAkBzqB,EAAM/B,GAC1D+2B,EAAQl4B,GAAOo4B,GAEZA,IA4VfjJ,EAAMgJ,kBAAoB,GAG1BhJ,EAAMxB,iBAAmB,GClYzB,SAAW+F,GACPA,EAAiBA,EAAyB,OAAI,GAAK,SACnDA,EAAiBA,EAAuB,KAAI,GAAK,OACjDA,EAAiBA,EAAwB,MAAI,GAAK,QAClDA,EAAiBA,EAAwB,MAAI,GAAK,QAClDA,EAAiBA,EAAwB,MAAI,GAAK,QALtD,CAMGA,IAAqBA,EAAmB,KAepC,MAAM2E,UAAiB5kB,EAC1BnS,cACI8B,QACAvD,KAAKsK,MAAQ,EAEbtK,KAAKy4B,UAAY,EACjBz4B,KAAKszB,SAAWkF,EAASE,SAASC,KAClC34B,KAAKq0B,QAAU,EACfr0B,KAAKs0B,QAAU,EACft0B,KAAK44B,wBAA0B,EAMxBl3B,sBACP,OAAOG,EAAS22B,SAGTE,sBACP,OAAO7E,EAEAgF,4BACP,MAAO,CACHC,OAAQjF,EAAiBkF,OACzBC,MAAOnF,EAAiBoF,MACxBC,MAAOrF,EAAiBsF,MACxBC,KAAMvF,EAAiB8E,KACvBU,MAAOxF,EAAiByF,OAIhC9D,SAIA/F,WACI,OAAOzvB,KAAKsK,MAGhBivB,SAASjvB,GAEL,OADAtK,KAAKsK,MAAQA,EACNtK,KAGXw5B,UACI,OAAO91B,EAAQ1D,KAAKy5B,KAAM,SAAU,yBAMxCC,oBACI,MAAMp4B,EAAWtB,KAAKiU,cAEtB,OADAvQ,EAAQ1D,KAAKiS,MAAO,UAAW,cAAc3Q,uBACtCoC,EAAQ1D,KAAKy5B,KAAM,SAAU,cAAcn4B,qBAMtDq4B,QAAQF,GAEJ,OADAz5B,KAAKy5B,KAAOA,EACLz5B,KAGX45B,WACI,OAAO55B,KAAKiS,MAGhB4nB,aACI,OAAOn2B,EAAQ1D,KAAKiS,MAAO,UAAW,kCAG1C6nB,SAAS7nB,GAEL,OADAjS,KAAKiS,MAAQA,EACNjS,KAGX+5B,qBACI,OAAO/5B,KAAKg6B,gBAGhBC,uBACI,OAAOv2B,EAAQ1D,KAAKg6B,gBAAiB,oBAAqB,6BAG9DE,mBAAmBpuB,GAEf,OADA9L,KAAKg6B,gBAAkBluB,EAChB9L,KAGXm6B,cACI,OAAOn6B,KAAKszB,SAMhB8G,YAAY9G,GAGR,OAFAtzB,KAAKszB,SAA+B,iBAAbA,EAAwBkF,EAASK,eAAevF,GAAYA,EACnFtzB,KAAKw1B,QACEx1B,KAGXq6B,YAAYr2B,GAER,OADAhE,KAAKy4B,UAAYz0B,EACVhE,KAGXs3B,UAAU5uB,GAEN,OADA1I,KAAKs0B,QAAU5rB,EACR1I,KAGXs6B,2BAA2B32B,GACvB3D,KAAK44B,wBAA0Bj1B,EAGnC42B,6BACI,OAAOv6B,KAAK44B,wBAMhBxB,UAAUzzB,GAQN,OAPA3D,KAAKq0B,QAAU,EACXr0B,KAAKszB,WAAakF,EAASE,SAASC,KACpC34B,KAAKq0B,SAAW1wB,EAGhB3D,KAAKq0B,SAAW1wB,EAEb3D,KAGXm3B,YACI,OAAOn3B,KAAKq0B,QAGhBve,OAEI,MADA9V,KAAK6V,eACC,IAAI1S,EAAa,iBAAkB,6CAG7Cq3B,sBAAsBC,EAAUhB,GAE5B,MAAMiB,EAAcjB,EAAKkB,iBACnBrqB,EAAUoqB,EAAY/pB,aACtBumB,EAAQuC,EAAKmB,WACbC,EAAiBH,EAAY5xB,OAASwH,EAAQwqB,UAAYxqB,EAAQyqB,WAAa/6B,KAAKu6B,6BAC1FE,EAAS9lB,SAASqmB,IACd,MAAMC,EAAiBD,EAAQL,iBAC3BzD,GACA8D,EAAQ/D,SAASC,GACrB+D,EAAeC,WAAWL,OCnL/B,MAAMM,GAEEC,uBACP,OAAOp7B,KAAKq7B,gBAAgBz1B,OAGrB01B,mBACP,MAAO,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAG/BC,yBACP,MAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAGnBC,0BACP,MAAO,CACH1vB,EAAG,EACH5F,EAAG,EACHvF,EAAG,EACHyH,EAAG,EACH3H,EAAG,EACHgE,EAAG,EACHC,EAAG,GAIA22B,6BACP,MAAO,CAAC,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,KAG7DI,gCACP,MAAO,CAAC,SAAU,KAAM,KAAM,KAAM,KAAM,KAAM,OAAQ,KAAM,KAAM,KAAM,KAAM,KAAM,UAG/EC,kCACP,MAAO,CACHC,OAAQ,CAAElC,KAAM,EAAGhf,WAAY,GAC/BmhB,GAAI,CAAEnC,KAAM,EAAGhf,YAAa,GAC5BohB,GAAI,CAAEpC,KAAM,EAAGhf,WAAY,GAC3BqhB,GAAI,CAAErC,KAAM,EAAGhf,YAAa,GAC5BshB,GAAI,CAAEtC,KAAM,EAAGhf,WAAY,GAC3BuhB,GAAI,CAAEvC,KAAM,EAAGhf,WAAY,GAC3BwhB,KAAM,CAAExC,KAAM,EAAGhf,YAAa,GAC9ByhB,GAAI,CAAEzC,KAAM,EAAGhf,WAAY,GAC3B0hB,GAAI,CAAE1C,KAAM,EAAGhf,YAAa,GAC5B2hB,GAAI,CAAE3C,KAAM,EAAGhf,WAAY,GAC3B4hB,GAAI,CAAE5C,KAAM,EAAGhf,YAAa,GAC5B6hB,GAAI,CAAE7C,KAAM,EAAGhf,WAAY,GAC3BwB,OAAQ,CAAEwd,KAAM,EAAGhf,WAAY,IAI5B8hB,uBACP,MAAO,CACHt2B,EAAG,EACH01B,OAAQ,EACRC,GAAI,EACJY,GAAI,EACJC,KAAM,EACNC,EAAG,EACHC,EAAG,EACH,EAAG,EACHd,GAAI,EACJe,KAAM,EACNC,EAAG,EACHC,EAAG,EACHhB,GAAI,EACJiB,GAAI,EACJC,KAAM,EACNjB,GAAI,EACJ,EAAG,EACHkB,KAAM,EACN,EAAG,EACHjB,GAAI,EACJ,KAAM,EACNkB,GAAI,EACJC,KAAM,EACNlB,KAAM,EACN,EAAG,EACHC,GAAI,EACJ,KAAM,EACNkB,GAAI,EACJC,KAAM,EACN,EAAG,EACHjB,GAAI,EACJkB,KAAM,EACNjB,GAAI,GACJkB,GAAI,GACJC,KAAM,GACNC,KAAM,GACNnB,GAAI,GACJoB,KAAM,GACN,EAAG,GACHzhB,OAAQ,IAIL0hB,oBACP,MAAO,CACHC,MAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC1BC,MAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC1BC,OAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC3BC,OAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC3BC,SAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC7BC,OAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC3BC,WAAY,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC/BC,QAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC5BC,QAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAIzBC,wBACP,MAAO,CACHC,EAAGnD,GAAMwC,OAAOC,MAChB3L,EAAGkJ,GAAMwC,OAAOE,OAIb1hB,yBACP,MAAO,CAAC,KAAM,IAAK,IAAK,IAAK,MAGtBoiB,wBACP,MAAO,CACHzyB,EAAG,CAAE0yB,WAAY,EAAGjkB,QAAS,GAC7BkkB,GAAI,CAAED,WAAY,EAAGjkB,QAAS,GAC9B,KAAM,CAAEikB,WAAY,EAAGjkB,QAAS,GAChC,MAAO,CAAEikB,WAAY,EAAGjkB,QAAS,GACjCmkB,GAAI,CAAEF,WAAY,EAAGjkB,QAAS,IAC9BokB,IAAK,CAAEH,WAAY,EAAGjkB,QAAS,IAC/BrU,EAAG,CAAEs4B,WAAY,EAAGjkB,QAAS,GAC7BqkB,GAAI,CAAEJ,WAAY,EAAGjkB,QAAS,GAC9B,KAAM,CAAEikB,WAAY,EAAGjkB,QAAS,GAChC,MAAO,CAAEikB,WAAY,EAAGjkB,QAAS,GACjC+B,GAAI,CAAEkiB,WAAY,EAAGjkB,QAAS,GAC9BskB,IAAK,CAAEL,WAAY,EAAGjkB,QAAS,GAC/B5Z,EAAG,CAAE69B,WAAY,EAAGjkB,QAAS,GAC7BukB,GAAI,CAAEN,WAAY,EAAGjkB,QAAS,GAC9B,KAAM,CAAEikB,WAAY,EAAGjkB,QAAS,GAChC,MAAO,CAAEikB,WAAY,EAAGjkB,QAAS,GACjCwkB,GAAI,CAAEP,WAAY,EAAGjkB,QAAS,GAC9BykB,IAAK,CAAER,WAAY,EAAGjkB,QAAS,GAC/BnS,EAAG,CAAEo2B,WAAY,EAAGjkB,QAAS,GAC7B0kB,GAAI,CAAET,WAAY,EAAGjkB,QAAS,GAC9B,KAAM,CAAEikB,WAAY,EAAGjkB,QAAS,GAChC,MAAO,CAAEikB,WAAY,EAAGjkB,QAAS,GACjC2kB,GAAI,CAAEV,WAAY,EAAGjkB,QAAS,GAC9B4kB,IAAK,CAAEX,WAAY,EAAGjkB,QAAS,GAC/B9Z,EAAG,CAAE+9B,WAAY,EAAGjkB,QAAS,GAC7B6kB,GAAI,CAAEZ,WAAY,EAAGjkB,QAAS,GAC9B,KAAM,CAAEikB,WAAY,EAAGjkB,QAAS,GAChC,MAAO,CAAEikB,WAAY,EAAGjkB,QAAS,GACjC8kB,GAAI,CAAEb,WAAY,EAAGjkB,QAAS,GAC9B+kB,IAAK,CAAEd,WAAY,EAAGjkB,QAAS,GAC/B9V,EAAG,CAAE+5B,WAAY,EAAGjkB,QAAS,GAC7BglB,GAAI,CAAEf,WAAY,EAAGjkB,QAAS,GAC9B,KAAM,CAAEikB,WAAY,EAAGjkB,QAAS,IAChC,MAAO,CAAEikB,WAAY,EAAGjkB,QAAS,IACjCilB,GAAI,CAAEhB,WAAY,EAAGjkB,QAAS,GAC9BklB,IAAK,CAAEjB,WAAY,EAAGjkB,QAAS,GAC/B7V,EAAG,CAAE85B,WAAY,EAAGjkB,QAAS,IAC7BmlB,GAAI,CAAElB,WAAY,EAAGjkB,QAAS,IAC9B,KAAM,CAAEikB,WAAY,EAAGjkB,QAAS,GAChC,MAAO,CAAEikB,WAAY,EAAGjkB,QAAS,GACjC8B,GAAI,CAAEmiB,WAAY,EAAGjkB,QAAS,IAC9BolB,IAAK,CAAEnB,WAAY,EAAGjkB,QAAS,IAGvCqlB,iBAAiBnG,GACb,OAAOA,GAAQ,GAAKA,EAAO0B,GAAME,gBAAgBz1B,OAErDi6B,qBAAqBC,GACjB,OAAOA,GAAY,GAAKA,EAAW3E,GAAMM,mBAAmB71B,OAGhEm6B,aAAaC,GACT,IAAKA,GAAcA,EAAWp6B,OAAS,EACnC,MAAM,IAAIzC,EAAa,eAAgB,sBAAwB68B,GAEnE,GAAIA,EAAWp6B,OAAS,EACpB,MAAM,IAAIzC,EAAa,eAAgB,sBAAwB68B,GAEnE,MAAMvG,EAAOuG,EAAW9xB,cAElB+xB,EADQ,8BACMC,KAAKzG,GACzB,GAAc,OAAVwG,EAAgB,CAGhB,MAAO,CACHzgC,KAHSygC,EAAM,GAIfxlB,WAHewlB,EAAM,IAOzB,MAAM,IAAI98B,EAAa,eAAgB,sBAAwB68B,GAIvEG,YAAYC,GACR,IAAKA,GAAaA,EAAUx6B,OAAS,EACjC,MAAM,IAAIzC,EAAa,eAAgB,gBAAkBi9B,GAE7D,MAAMjgC,EAAMigC,EAAUlyB,cAGhB+xB,EADQ,qCACMC,KAAK//B,GACzB,GAAc,OAAV8/B,EAAgB,CAChB,MAAMzgC,EAAOygC,EAAM,GACbxlB,EAAawlB,EAAM,GACzB,IAAInuB,EAAOmuB,EAAM,GAIjB,OAFKnuB,IACDA,EAAO,KACJ,CACHtS,KAAAA,EACAib,WAAAA,EACA3I,KAAAA,GAIJ,MAAM,IAAI3O,EAAa,eAAgB,gBAAgBi9B,KAI/DC,aAAaL,GACT,MAAM5+B,EAAQ+5B,GAAMoD,WAAWyB,GAC/B,QAAcp8B,IAAVxC,EACA,MAAM,IAAI+B,EAAa,eAAgB,sBAAsB68B,KAEjE,OAAO5+B,EAAMmZ,QAGjB+lB,iBAAiBC,GACb,MAAMn/B,EAAQ+5B,GAAMoB,UAAUgE,GAC9B,QAAc38B,IAAVxC,EACA,MAAM,IAAI+B,EAAa,eAAgB,0BAA0Bo9B,KAErE,OAAOn/B,EAGXo/B,qBAAqBxR,GACjB,IAAKhvB,KAAK4/B,iBAAiB5Q,GACvB,MAAM,IAAI7rB,EAAa,eAAgB,uBAAuB6rB,KAElE,OAAOmM,GAAME,gBAAgBrM,GAGjCyR,yBAAyBC,GACrB,IAAK1gC,KAAK6/B,qBAAqBa,GAC3B,MAAM,IAAIv9B,EAAa,eAAgB,2BAA2Bu9B,KAEtE,OAAOvF,GAAMM,mBAAmBiF,GAKpCC,qBAAqB3R,EAAW0R,EAAeE,EAAY,GACvD,GAAkB,IAAdA,IAAkC,IAAfA,EACnB,MAAM,IAAIz9B,EAAa,eAAgB,sBAAsBy9B,KAEjE,IAAIC,GAAO7R,EAAY4R,EAAYF,GAAiBvF,GAAMC,UAG1D,OAFIyF,EAAM,IACNA,GAAO1F,GAAMC,WACVyF,EAKXC,oBAAoBthC,EAAMwvB,GACtB,MAAM+F,EAAQ/0B,KAAK+/B,aAAavgC,GAC1BuhC,EAAY/gC,KAAKqgC,aAAatL,EAAMv1B,MAC1C,IAAIsgC,EAAW9Q,EAAY+R,EAC3B,GAAI97B,KAAK4C,IAAIi4B,GAAY3E,GAAMC,UAAY,EAAG,CAC1C,IAAI4F,EAAa,EACblB,EAAW,IACXkB,GAAc,GAElB,MAAMC,GAAqBjS,EAAY,GAAK+R,EAAY,IAAM5F,GAAMC,UAAa4F,EACjF,GAAI/7B,KAAK4C,IAAIo5B,GAAoB,EAC7B,MAAM,IAAI99B,EAAa,eAAgB,sBAAsB3D,MAASwvB,MAGtE8Q,EAAWmB,EAGnB,GAAIh8B,KAAK4C,IAAIi4B,GAAY,EACrB,MAAM,IAAI38B,EAAa,eAAgB,sBAAsB3D,MAASwvB,MAE1E,IAAIkS,EAAmBnM,EAAMv1B,KAC7B,GAAIsgC,EAAW,EACX,IAAK,IAAIv3B,EAAI,EAAGA,GAAKu3B,IAAYv3B,EAC7B24B,GAAoB,SAGvB,GAAIpB,EAAW,EAChB,IAAK,IAAIv3B,GAAK,EAAGA,GAAKu3B,IAAYv3B,EAC9B24B,GAAoB,IAG5B,OAAOA,EAWXC,cAAchhC,EAAKo8B,GACf,MAAM6E,EAAQ,CAACjhC,GACf,IAAIkhC,EAAWlhC,EACf,IAAK,IAAIoI,EAAI,EAAGA,EAAIg0B,EAAU32B,OAAQ2C,IAClC84B,EAAWrhC,KAAK2gC,qBAAqBU,EAAU9E,EAAUh0B,IACrD84B,IAAalhC,GACbihC,EAAM5sB,KAAK6sB,GAEnB,OAAOD,EAMXE,mBAAmBC,EAAOC,EAAOZ,EAAY,GACzC,GAAkB,IAAdA,IAAkC,IAAfA,EACnB,MAAM,IAAIz9B,EAAa,eAAgB,sBAAsBy9B,KAEjE,IAAK5gC,KAAK4/B,iBAAiB2B,KAAWvhC,KAAK4/B,iBAAiB4B,GACxD,MAAM,IAAIr+B,EAAa,eAAgB,kBAAkBo+B,MAAUC,KAEvE,IAAIC,EAA2B,IAAdb,EAAkBY,EAAQD,EAAQA,EAAQC,EAG3D,OAFIC,EAAa,IACbA,GAActG,GAAMC,WACjBqG,EAQXC,eAAeC,GACX,MAAMC,EAAc5hC,KAAKmgC,YAAYwB,GACrC,IAAKC,EAAY9vB,KACb,MAAM,IAAI3O,EAAa,eAAgB,mCAC3C,MAAM0+B,EAAY1G,GAAMkD,WAAWuD,EAAY9vB,MAC/C,IAAIgwB,EAAeF,EAAYpiC,KAG/B,GAFIoiC,EAAYnnB,aACZqnB,GAAgBF,EAAYnnB,aAC3BonB,EACD,MAAM,IAAI1+B,EAAa,eAAgB,yBAA2Bw+B,GACtE,MAAMzS,EAAQlvB,KAAKmhC,cAAcnhC,KAAKqgC,aAAayB,GAAeD,GAC5DE,EAAe5G,GAAMK,aAAaoG,EAAYpiC,MAC9CwiC,EAAW,GACjB,IAAK,IAAIz5B,EAAI,EAAGA,EAAI4yB,GAAMG,MAAM11B,SAAU2C,EAAG,CACzC,MAAM0J,GAAS8vB,EAAex5B,GAAK4yB,GAAMG,MAAM11B,OACzCq8B,EAAW9G,GAAMG,MAAMrpB,GAC7B,IAAIiwB,EAAWliC,KAAK8gC,oBAAoBmB,EAAU/S,EAAM3mB,IAChC,IAApB25B,EAASt8B,SACTs8B,GAAY,KAEhBF,EAASC,GAAYC,EAEzB,OAAOF,GCpWf,SAASG,MAAKp+B,GACNjC,GAAWsgC,OACXv+B,EAAI,sBAAuBE,GAS5B,MAAMjC,WAAmB02B,EAM5B/2B,YAAYqQ,GACRvO,QACA4+B,GAAE,mBAAoBrwB,GACtB9R,KAAK8R,KAAOA,EACZ9R,KAAKszB,SAAWkF,EAASE,SAASC,KAClC34B,KAAKqiC,eAAiB,CAElBC,WAAY,GAEZC,iBAAkB,EAClBC,kBAAmB,GAEvBxiC,KAAKya,WAAaoT,EAAO4U,gBAAgBziC,KAAK8R,MAC9CpO,EAAQ1D,KAAKya,WAAY,gBAAiB,4BAA4B3I,KAEtE9R,KAAK0iC,YAAa,EAClB1iC,KAAKw1B,QAGE9zB,sBACP,OAAOG,EAASC,WAGpByD,cAAc4W,EAAawmB,GAEvB,IAAKxmB,GAAsC,IAAvBA,EAAYvW,OAC5B,OACJ,MAAMg9B,EAAY/U,EAAOgV,mBACnBC,EAA4BF,EAAU3xB,aAAa,wCACnD8xB,EAAYJ,EAAMK,WAAaF,EAC/BG,EAAoBL,EAAU3xB,aAAa,gCAC3CiyB,EAAoBN,EAAU3xB,aAAa,0BAC3CkyB,EAAU,GAChB,IAAIC,EACAC,EAAS,EAEb,IAAK,IAAI96B,EAAI,EAAGA,EAAI4T,EAAYvW,SAAU2C,EAAG,CACzC,MAAMgQ,EAAM4D,EAAY5T,GAClBkxB,EAAOlhB,EAAIihB,UACXtC,EAAQuC,EAAKmB,WACb3oB,EAAQsG,EAAIshB,aACZyJ,EAAQ7J,EAAK8J,cAActxB,GACjC,GAAIwnB,IAAS2J,EAAU,CAEnB,IAAK,IAAIx+B,EAAI,EAAGA,EAAI60B,EAAKtmB,KAAKvN,SAAUhB,EACpCy+B,EAASp+B,KAAK2E,IAAI6vB,EAAK+J,yBAA2B/J,EAAKtC,YAAakM,GAExED,EAAW3J,EAEf,GAAIvC,EAAO,CACP,MAAMuM,EAAYvM,EAAMwM,yBAClBh7B,EAAIwuB,EAAMyM,YAAYL,EAAMt/B,MAC5B4/B,EAAU3+B,KAAK2vB,MAAOlsB,EAAI+6B,EAAa,GAAK,EAClDN,EAAQ3uB,KAAK,CAAE9L,EAAAA,EAAG1E,KAAM4/B,EAAS99B,MAAOu9B,EAAQ9qB,IAAAA,EAAKkrB,UAAAA,SAGrDN,EAAQ3uB,KAAK,CAAExQ,KAAMs/B,EAAMt/B,KAAM8B,MAAOu9B,EAAQ9qB,IAAAA,IAIxD4qB,EAAQU,MAAK,CAACp/B,EAAGC,IAAMA,EAAEV,KAAOS,EAAET,OAGlC,MAAM8/B,EAAW,GAGjB,IACIC,EADAC,EAAW,EAGf,IAAK,IAAIz7B,EAAI,EAAGA,EAAI46B,EAAQv9B,OAAQ2C,IAAK,CACrC,MAAMgQ,EAAM4qB,EAAQ56B,QAEC3E,IAAjBmgC,GAA8BA,IAAiBxrB,EAAIvU,MACnD8/B,EAAStvB,KAAK,CACVxQ,KAAMuU,EAAIvU,KACVigC,UAAU,EACVC,cAAc,EACdC,OAAQ,EACR75B,MAAO,EACP85B,OAAQ,IAMK,MAAjB7rB,EAAIA,IAAIzG,MAAiC,OAAjByG,EAAIA,IAAIzG,OAChCgyB,EAASA,EAASl+B,OAAS,GAAGq+B,UAAW,GAGxB,OAAjB1rB,EAAIA,IAAIzG,OACRgyB,EAASA,EAASl+B,OAAS,GAAGs+B,cAAe,GAGjDJ,EAASA,EAASl+B,OAAS,GAAGu+B,SAI9BL,EAASA,EAASl+B,OAAS,GAAG0E,OAASiO,EAAIA,IAAIkX,WAAawT,EAE5De,EAAWzrB,EAAIzS,MAAQk+B,EAAWzrB,EAAIzS,MAAQk+B,EAC9CD,EAAexrB,EAAIvU,KAmBvB,IAAIqgC,EAAe,EAEnB,IAAK,IAAI97B,EAAI,EAAGA,EAAIu7B,EAASl+B,OAAQ2C,IAAK,CACtC,IAAI+7B,GAAqB,EACzB,MAAMC,EAAah8B,EACnB,IAAIi8B,EAAWj8B,EACf,KAAOi8B,EAAW,EAAIV,EAASl+B,SAAW0+B,GAElCtkC,KAAKykC,eAAeX,EAASU,GAAWV,EAASU,EAAW,IAE5DA,IAGAF,GAAqB,EAI7B,MAAMI,EAAgBzyB,GAAU6xB,EAASS,EAAatyB,GAChD0yB,EAAiBC,GAAYA,EAAQxxB,IAAIsxB,GACzCG,EAAiB,CAACC,EAAQC,KAC5B,MAAOtgC,EAAGC,GAAKigC,EAAc,CAACG,EAAQC,IAAS3xB,KAAK4xB,GAASA,EAAKhhC,OAClE,OAAOS,EAAIC,GAETugC,EAAe,IAAIC,IAAeA,EAAW9xB,IAAIuxB,GAAeQ,OAAM,EAAEC,EAAOC,MAAYrlC,KAAKykC,eAAeW,EAAOC,KAEtHC,EAAcd,EAAWD,EAAa,EAE5C,IA+BIgB,EACAnB,EAhCAoB,EAAUxlC,KAAKykC,eAAeX,EAASS,GAAaT,EAASU,IAAa,IAAM,IACpF,OAAQc,GACJ,KAAK,EACe,MAAZE,GAA4C,KAAzBX,EAAe,EAAG,IAAuC,KAAzBA,EAAe,EAAG,KACrEW,EAAU,oBAEd,MACJ,KAAK,EACGP,EAAa,CAAC,EAAG,GAAI,CAAC,EAAG,MACzBO,EAAU,yBAEd,MACJ,KAAK,EACe,MAAZA,GAAmBP,EAAa,CAAC,EAAG,MACpCO,EAAU,wBACNP,EAAa,CAAC,EAAG,GAAI,CAAC,EAAG,MACzBO,EAAU,+BAGlB,MACJ,KAAK,EACGP,EAAa,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,MACjCO,EAAU,wBAEVP,EAAa,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,MACzCO,EAAU,6BAUtB,GAAIF,GAAe,EAAG,CAElB,IAAIG,EAAgB,EAChBC,GAAoB,EACxB,MAA6B,IAAtBA,GAA4B,CAC/BA,GAAoB,EACpB,IAAK,IAAI1hC,EAAO,EAAGA,EAAOyhC,EAAgB3B,EAASl+B,OAAQ5B,IACvD,GAAIhE,KAAKykC,eAAeX,EAAS9/B,GAAO8/B,EAAS9/B,EAAOyhC,IAAiB,CACrEC,GAAoB,EACpBD,IACA,OAKZ,IAAKF,EAAch9B,EAAGg9B,GAAef,EAAUe,IAC3CnB,GAAWmB,EAAch9B,GAAKk9B,EAAiB,EAC/C3B,EAASyB,GAAanB,OAASA,EAC/BC,EAAeA,EAAeD,EAASC,EAAeD,OAM1D,IAAKmB,EAAch9B,EAAGg9B,GAAef,EAAUe,IAC3CnB,EAASvW,EAAOmD,uBAAuBsU,GAAaE,GAASD,EAAch9B,GAC3Eu7B,EAASyB,GAAanB,OAASA,EAC/BC,EAAeA,EAAeD,EAASC,EAAeD,EAK9D77B,EAAIi8B,EAcR,MAAMmB,EAAe,GACfC,EAAiB,GACvB,IAAK,IAAIr9B,EAAI,EAAGA,GAAK87B,EAAc97B,IAC/Bo9B,EAAap9B,GAAK,EAClBq9B,EAAer9B,GAAK,EAExBo9B,EAAa,GAAK3B,EAAWjB,EAC7B6C,EAAe,GAAK5B,EAAWjB,EAG/Be,EAASnvB,SAAS3Q,IACVA,EAAKsG,MAAQq7B,EAAa3hC,EAAKogC,UAC/BuB,EAAa3hC,EAAKogC,QAAUpgC,EAAKsG,UAEzC,IAAK,IAAI/B,EAAI,EAAGA,EAAIo9B,EAAa//B,OAAQ2C,IAErCq9B,EAAer9B,GAAKo9B,EAAap9B,GAAKq9B,EAAer9B,EAAI,GAE7D,MAAMs9B,EAAaD,EAAeA,EAAehgC,OAAS,GAE1D,IAAIkgC,EAAW,EACfhC,EAASnvB,SAAS3Q,IACd,IAAIwR,EAAY,EAChB,MAAMuwB,EAAgBD,EAAW9hC,EAAKmgC,OAEtC,KAAe2B,EAAWC,EAAeD,IAAY,CACjD,MAAMpO,EAASkO,EAAe5hC,EAAKogC,OAAS,GAAK5uB,EACjD2tB,EAAQ2C,GAAUvtB,IAAI6e,UAAUM,GAGhCliB,GAAa2tB,EAAQ2C,GAAUvtB,IAAIkX,WAAawT,EAChDd,GAAE,0BAA2Bn+B,EAAKA,KAAM8hC,EAAUpO,OAI1DiL,EAAMK,YAAc6C,EAAa3C,EAGrC39B,sBAAsB6/B,EAAOC,GACzB,IAAIW,EAAYX,EAAMrhC,KAAOohC,EAAMphC,KAC/BiiC,EAAoB,EAEpBD,EAAY,GAEZC,EAAoBZ,EAAMpB,UAAYoB,EAAMnB,aAAe,IAAM,EAC7DkB,EAAMlB,eACN8B,GAAa,MAIjBC,EAAoBb,EAAMnB,UAAYmB,EAAMlB,aAAe,IAAM,EAC7DmB,EAAMnB,eACN8B,GAAa,KAErB,MAAME,EAAYjhC,KAAK4C,IAAIm+B,GAAaC,EAExC,OADA9D,GAAE,8BAA+BiD,EAAMphC,KAAMqhC,EAAMrhC,KAAMkiC,GAClDA,EAOX3gC,wBAAwB4gC,EAAQxE,GAC5B,MAAMyE,EAAgB,GAChBC,EAAc,GAEpBF,EAAOxxB,SAAS2xB,IACZ,MAAMC,EAAe,IAAIphC,EAAS,EAAG,GACpBmhC,EAAME,eACd7xB,SAASjP,IACd,GAAIA,EAAE+gC,oBACF,OACJ,MAAMC,EAAkBL,EAAYE,EAAanlC,SAC5CslC,EAKDA,EAAgBlyB,KAAK9O,IAJrB0gC,EAAc5xB,KAAK+xB,EAAanlC,SAChCilC,EAAYE,EAAanlC,SAAW,CAACsE,IAKzC6gC,EAAangC,IAAIV,EAAEihC,kBAG3B,MAAMC,EAAQ,IAAIzL,GAEbwG,IACDA,EAAe,KAEnB,MAAMkF,EAAcD,EAAMlF,eAAeC,GACnCK,EAAW,GACjBoE,EAAczxB,SAASmyB,IACnB,MAAMC,EAAYV,EAAYS,GAGxBE,EAAkB,GAClBC,EAAevhC,IAEjB,IAAK7C,EAAY6C,IAAMA,EAAEwhC,UAAYxhC,EAAE+gC,oBACnC,OAGJ,MAAMU,EAAYzhC,EAClByhC,EAAUh0B,KAAKwB,SAAQ,CAACyrB,EAAWgH,KAC/B,MAAMjnC,EAAMymC,EAAM7G,aAAaK,EAAU53B,MAAM,KAAK,IAC9CyT,EAASmkB,EAAU53B,MAAM,KAAK,GAE9B6+B,EAAmBlnC,EAAIsa,YAAc,IACrC6sB,EAAQnnC,EAAIX,KAAO6nC,EAGpBrF,EAAS7hC,EAAIX,KAAOyc,KACrB+lB,EAAS7hC,EAAIX,KAAOyc,GAAU4qB,EAAY1mC,EAAIX,OAClD,MAAM+nC,EAAiBvF,EAAS7hC,EAAIX,KAAOyc,KAAYqrB,EAGjDE,EAAqBR,EAAgBS,QAAQrH,IAAc,EAQjE,GANA+G,EAAUO,eAAe/yB,SAAQ,CAACgzB,EAAU11B,KACpCrQ,EAAa+lC,IAAaA,EAAS71B,MAAQu1B,GAAoBM,EAAS/N,YAAcwN,GACtFD,EAAUO,eAAeE,OAAO31B,EAAO,OAI1Cs1B,GAAmBA,GAAkBC,EAAqB,CAG3DxF,EAAS7hC,EAAIX,KAAOyc,GAAUqrB,EAE9B,MAAM7sB,EAAa,IAAI3Y,GAAWulC,GAElCF,EAAUU,YAAYptB,EAAY2sB,GAElCJ,EAAgBxyB,KAAK4rB,OAI7B+G,EAAUO,eAAe/yB,SAASgzB,IAC1BplC,EAAiBolC,IACjBA,EAASG,gBAAgBnzB,QAAQsyB,OAI7CF,EAAUpyB,QAAQsyB,MAG1BzR,QACI,MAAMuS,EAAY/nC,KAAKqiC,eAAeC,WACtCtiC,KAAKmvB,MAAQ,IAAIG,EAAMtvB,KAAKya,WAAWpX,KAAM0kC,GAC7C/nC,KAAKmvB,MAAMsI,WAAW,GAClBz3B,KAAK0iC,aACL1iC,KAAKgoC,UAAY,IAAI1Y,EAAMzB,EAAO4U,gBAAgB,KAAKp/B,KAAM0kC,GAC7D/nC,KAAKioC,WAAa,IAAI3Y,EAAMzB,EAAO4U,gBAAgB,KAAKp/B,KAAM0kC,GAC9D/nC,KAAKgoC,UAAUvQ,WAAW,GAC1Bz3B,KAAKioC,WAAWxQ,WAAW,IAInChI,WACI,GAAIzvB,KAAK0iC,WAAY,CACjB,MAAMsF,EAAYtkC,EAAQ1D,KAAKgoC,WACzBC,EAAavkC,EAAQ1D,KAAKioC,YAC1BC,EAAaF,EAAUr3B,aAAarG,MACtC29B,EAAWt3B,aAAarG,MACxBtK,KAAKqiC,eAAeE,iBACpBviC,KAAKqiC,eAAeG,kBACxB,OAAOxiC,KAAKmvB,MAAMxe,aAAarG,MAAQ49B,EAGvC,OAAOloC,KAAKmvB,MAAMxe,aAAarG,MAIvCqvB,QAAQF,GAQJ,OAPA/1B,EAAQ+1B,EAAM,gBAAiB,mBAAmBA,KAClDz5B,KAAKy5B,KAAOA,EAERp3B,EAAYo3B,KACZz5B,KAAKqiC,eAAeC,WAAa,GACjCtiC,KAAKw1B,SAEFx1B,KAGXmoC,kBAII,OAHAnoC,KAAK0iC,YAAa,EAClB1iC,KAAKqiC,eAAeC,WAAa,GACjCtiC,KAAKw1B,QACEx1B,KAGX8V,OACI,MAAM,KAAEhE,EAAI,SAAEwhB,EAAQ,MAAErhB,EAAK,WAAEywB,EAAU,QAAErO,EAAO,QAAEC,EAAO,MAAEnF,EAAOkT,gBAAgB,iBAAEE,EAAgB,kBAAEC,IAAyBxiC,KAC3H81B,EAAM91B,KAAK6V,eACX4jB,EAAOz5B,KAAK05B,oBAClB15B,KAAKmW,cAEL,MAAMiyB,EAAQ3O,EAAK4O,mBAAmB/U,EAAUrhB,GAChD,IAAIq2B,EAAOF,EAAMzkC,EAAI0wB,EACrB,MAAMkU,EAAOH,EAAM1/B,EAAI4rB,EAEvB,GADA6N,GAAE,cAAerwB,EAAMw2B,EAAMC,GACxB7F,EAGA,CACD,MAAMsF,EAAYtkC,EAAQ1D,KAAKgoC,WACzBC,EAAavkC,EAAQ1D,KAAKioC,YAEhCA,EAAWnQ,OAAOhC,EAAKwS,EAAMC,GAC7BD,GAAQL,EAAWt3B,aAAarG,MAChCg+B,GAAQ9F,EACR8F,GAAQtoC,KAAKya,WAAW2B,4BACxB+S,EAAM2I,OAAOhC,EAAKwS,EAAMC,GACxBD,GAAQnZ,EAAMxe,aAAarG,MAC3Bg+B,GAAQ/F,EACRyF,EAAUlQ,OAAOhC,EAAKwS,EAAMC,QAb5BpZ,EAAM2I,OAAOhC,EAAKwS,EAAMC,IAkBpCzmC,GAAWsgC,OAAQ,EC9cZ,MAAMoG,WAAa50B,EACtBnS,YAAYysB,GACR3qB,QACAvD,KAAKyoC,iBAAmB,EACxBzoC,KAAK0oC,mBAAqB,EAC1B1oC,KAAK2oC,sBAAwB,EAC7B3oC,KAAK4oC,wBAA0B,EAE/B5oC,KAAK6oC,SAAW3a,MAAAA,OAAyC,EAASA,EAAQ2a,UAAY,EACtF7oC,KAAK8oC,OAAS5a,MAAAA,OAAyC,EAASA,EAAQ4a,QAAU,EAElF9oC,KAAK+oC,OAAS7a,MAAAA,OAAyC,EAASA,EAAQ6a,QAAU,EAClF/oC,KAAKgpC,UAAY9a,MAAAA,OAAyC,EAASA,EAAQ8a,WAAa,EAExFhpC,KAAKipC,gBAAkB/a,MAAAA,OAAyC,EAASA,EAAQ+a,iBAAmB,EAEpGjpC,KAAKkpC,gBAAkBhb,MAAAA,OAAyC,EAASA,EAAQgb,iBAAmB,EAEpGlpC,KAAKmpC,MAAQjb,MAAAA,OAAyC,EAASA,EAAQib,QAAS,EAChFnpC,KAAKopC,WAAalb,MAAAA,OAAyC,EAASA,EAAQkb,aAAc,EAC1FppC,KAAKqpC,eAAiBnb,MAAAA,OAAyC,EAASA,EAAQmb,gBAAkB,EAGlGrpC,KAAKspC,uBAAyB,EAC9BtpC,KAAKu1B,WAAWrH,GAETxsB,sBACP,OAAOG,EAAS2mC,KAGTe,gBACP,OAAO,EAEAC,kBACP,OAAQ,EAGDC,mBACP,OAAO5b,EAAO2C,WAEPkZ,oBACP,OAAO7b,EAAO4C,YAElB8E,WAAWrH,GAEPluB,KAAKyoC,kBAAoBva,MAAAA,OAAyC,EAASA,EAAQua,mBAAqB,EACxGzoC,KAAK0oC,oBAAsBxa,MAAAA,OAAyC,EAASA,EAAQwa,qBAAuB,EAC5G1oC,KAAK2oC,uBAAyBza,MAAAA,OAAyC,EAASA,EAAQya,wBAA0B,EAClH3oC,KAAK4oC,yBAA2B1a,MAAAA,OAAyC,EAASA,EAAQ0a,0BAA4B,EAG1He,mBAAmBd,EAASC,GAGxB,OAFA9oC,KAAK6oC,QAAUA,EACf7oC,KAAK8oC,MAAQA,EACN9oC,KAGX4pC,aAAahJ,GACT5gC,KAAKkpC,eAAiBtI,EAG1BiJ,aAAaC,GACT9pC,KAAKipC,eAAiBa,EAE1BC,eACI,OAAO/pC,KAAKipC,eAGhBe,WAAWjB,EAAOC,GACdhpC,KAAK+oC,MAAQA,EACb/oC,KAAKgpC,SAAWA,EAGpBiB,YACI,MAAMC,EAAWlqC,KAAKkpC,iBAAmBV,GAAKe,GAAKvpC,KAAKyoC,iBAAmBzoC,KAAK0oC,mBAEhF,OADwB1oC,KAAKgpC,SAAWhpC,KAAK+oC,OAASP,GAAKkB,OAASQ,EAAWlqC,KAAKipC,iBAC3DjpC,KAAKkpC,eAElCzyB,iBACI,MAAM,IAAItT,EAAa,iBAAkB,qCAI7CgnC,aACI,MAAMC,EAAWpqC,KAAKkpC,iBAAmBV,GAAKe,GACxCc,EAAK,CAACrqC,KAAK+oC,MAAO/oC,KAAKgpC,UACvBsB,EAAa9B,GAAKkB,OAAS1pC,KAAKipC,eAChCsB,GAAsBH,EAAWnlC,KAAKulC,IAAMvlC,KAAK2E,QAAQygC,GACzDI,GAAsBL,EAAWnlC,KAAK2E,IAAM3E,KAAKulC,QAAQH,GAE/D,MAAO,CAAEK,KADQH,EAAqBD,GAActqC,KAAKkpC,eAChCyB,MAAOF,GAEpCG,cAAcC,GAEV,OADA7qC,KAAKmpC,MAAQ0B,EACN7qC,KAEX8qC,WAAW1B,EAAWC,GAGlB,OAFArpC,KAAKopC,UAAYA,EACjBppC,KAAKqpC,cAAgBA,EACdrpC,KAEX+qC,sBACI/qC,KAAKspC,uBAAyBzb,EAAOgV,mBAAmB5xB,aAAa,gCAAiC,GAE1G+5B,sBACIhrC,KAAKspC,wBAA0Bd,GAAKiB,MAAQ,EAGhD3zB,OAEI,GADA9V,KAAKmW,cACDnW,KAAKmpC,KACL,OACJ,MAAMrT,EAAM91B,KAAK6V,eACjB,IAAIo1B,EACAC,EACJ,MAAMhC,EAAiBlpC,KAAKkpC,eAC5B,IAAIiC,EAAgB,EAChBjC,IAAmBV,GAAKgB,MAExByB,EAASjrC,KAAK6oC,QACdqC,EAASlrC,KAAK+oC,MAAQ/oC,KAAK0oC,mBAC3ByC,EAAgBnrC,KAAK4oC,0BAIrBqC,EAASjrC,KAAK8oC,MACdoC,EAASlrC,KAAKgpC,SAAWhpC,KAAKyoC,iBAC9B0C,EAAgBnrC,KAAK2oC,uBAEzB,MAAM2B,EAAatqC,KAAKiqC,aArIhC,YAAclmC,GACNykC,GAAKpG,OACLv+B,EAAI,gBAAiBE,GAoIrB,CAAE,oBAAqB,UAAW/D,KAAK+oC,MAAO,aAAc/oC,KAAKgpC,UAEjE,MAAMoC,EAAiBprC,KAAKopC,UAAYkB,EAAatqC,KAAKqpC,cAAgBrpC,KAAKkpC,eAAiB,EAEhGpT,EAAI/gB,OACJ+gB,EAAIuV,UAAU,OAAQrrC,KAAK0S,aAAa,MAAO,CAAE44B,aAAa,IAC9DtrC,KAAK6U,WAAWihB,GAChBA,EAAIQ,YACJR,EAAIrgB,aAAa+yB,GAAKiB,OACtB3T,EAAIS,OAAO0U,EAAQC,EAASE,EAAiBD,GAC7CrV,EAAIU,OAAOyU,EAAQC,EAASZ,EAAatqC,KAAKspC,uBAAyBJ,GACvEpT,EAAIrH,SACJzuB,KAAK0V,aAAaogB,GAClBA,EAAIyV,aACJzV,EAAIngB,WCzJZ,SAAS,MAAK5R,GACNynC,GAAcpJ,OACdv+B,EAAI,yBAA0BE,GD2JtCykC,GAAKpG,OAAQ,EC9Ib,MAAMqJ,GAAiB,GAKjBt5B,GAAW,GACV,MAAMq5B,GAKT/pC,YAAYiqC,GAER1rC,KAAKuO,OAAS,GAEdvO,KAAKmO,KAAO,GAEZnO,KAAK8Q,WAAa,IAgBlB9Q,KAAKgR,OAAS,GACdhR,KAAK2rC,QAAS,EACd3rC,KAAK4rC,YAAa,EAClB5rC,KAAK6rC,QAAS,EACd7rC,KAAK8rC,MAAO,EACZ9rC,KAAK+rC,kBAAoB,EACzB/rC,KAAKgsC,gBAAkB,EACvBhsC,KAAKisC,aAAe,IAEpBjsC,KAAKksC,SAAW,GAChBlsC,KAAKmsC,aAAaT,GAKtBnmC,yBACI,MAAM6mC,EAAkB,GACxB,IAAK,MAAMt9B,KAAcqD,GAAU,CAC/B,MAAMu5B,EAAgBv5B,GAASrD,GAC/Bs9B,EAAgB53B,KAAKnU,OAAOgX,OAAO,GAAIq0B,IAE3C,OAAOU,EASX7mC,cAAc8mC,EAAgB,IAC1B,GAAE,WAAYA,GACTA,EAAc99B,SACf89B,EAAc99B,OAAShB,EAAKiB,YAKhC,MAAM89B,EAAa,GAGbC,EAAoBF,EAAc99B,OAAO/F,MAAM,WACrD,IAAK,MAAMgkC,KAAmBD,EAAmB,CAC7C,IAAK,MAAMz9B,KAAcqD,GAGjBrD,EAAW29B,WAAWD,IACtBF,EAAW93B,KAAKrC,GAASrD,IAGjC,GAAIw9B,EAAW1mC,OAAS,EACpB,MAGR,IAAI8mC,EACJ,GAA0B,IAAtBJ,EAAW1mC,OAEX8mC,EAAY,IAAIlB,GAAcnrC,OAAOssC,OAAOx6B,IAAU,SAErD,GAA0B,IAAtBm6B,EAAW1mC,OAChB8mC,EAAY,IAAIlB,GAAcc,EAAW,QAExC,CACD,MAAMR,EAAOv+B,EAAKq/B,OAAOP,EAAcj+B,QACjCy9B,EAASt+B,EAAKs/B,SAASR,EAAch+B,OACrCy+B,EAAeR,EAAWS,MAAM3kC,GAAMA,EAAE0jC,OAASA,GAAQ1jC,EAAEyjC,SAAWA,IAC5E,GAAIiB,EACAJ,EAAY,IAAIlB,GAAcsB,OAE7B,CACD,MAAME,EAAeV,EAAWS,MAAM3kC,GAAMA,EAAEyjC,SAAWA,GAAUzjC,EAAE0jC,OAASA,IAE1EY,EAAY,IAAIlB,GADhBwB,GAI8BV,EAAW,KAIrD,MAAM5+B,EAAW2+B,EAAcl+B,KAC/B,QAAwB,IAAbT,EAA0B,CACjC,MAAMu/B,EAAe1/B,EAAKqK,wBAAwBlK,GAClDg/B,EAAUj1B,YAAYw1B,GAE1B,OAAOP,EAMXnnC,eAAeuJ,GACX,OAAOqD,GAASrD,GAUpBvJ,oBAAoBmO,EAAMw5B,GAAY,GAClC,GAAE,iBAAkBx5B,EAAMw5B,GAC1B,MAAMp+B,EAAa4E,EAAKnF,aAEH3K,IADAuO,GAASrD,IACIo+B,KAC9B/6B,GAASrD,GAAc4E,GAG/By4B,aAAale,GACLA,EAAO1f,SACPvO,KAAKuO,OAAS0f,EAAO1f,QACrB0f,EAAOnd,aACP9Q,KAAK8Q,WAAamd,EAAOnd,YACzBmd,EAAOjd,SACPhR,KAAKgR,OAASid,EAAOjd,QACrBid,EAAO0d,SACP3rC,KAAK2rC,OAAS1d,EAAO0d,QACrB1d,EAAO2d,aACP5rC,KAAK4rC,WAAa3d,EAAO2d,YACzB3d,EAAO4d,SACP7rC,KAAK6rC,OAAS5d,EAAO4d,QACrB5d,EAAO6d,OACP9rC,KAAK8rC,KAAO7d,EAAO6d,MACnB7d,EAAOge,eACPjsC,KAAKisC,aAAehe,EAAOge,cAC3Bhe,EAAO8d,oBACP/rC,KAAK+rC,kBAAoB9d,EAAO8d,mBAChC9d,EAAO+d,kBACPhsC,KAAKgsC,gBAAkB/d,EAAO+d,iBAClChsC,KAAKmtC,iBAGTA,iBACI,MAAM5+B,EAASvO,KAAKuO,OAAON,QAAQ,OAAQ,KACrCE,EAAOnO,KAAKmO,KACZC,EAASpO,KAAK8rC,KAAO3/B,EAAWihC,KAAOjhC,EAAWsC,OAClDJ,EAAQrO,KAAK6rC,OAASz/B,EAAUoD,OAASpD,EAAUqC,OAEzDzO,KAAKksC,SAAW,GAAG39B,KAAUJ,KAAQC,KAAUC,IAMnDg/B,gBAAgBC,GACZ,OAAIttC,KAAKgR,OAAOs8B,GACLttC,KAAKgR,OAAOs8B,GAGZttC,KAAKgR,OAAOhR,KAAKisC,cAG5BsB,gBAEA,OADgBvtC,KAAKqtC,gBAAgBrtC,KAAKisC,cAC1BrW,GAAK51B,KAAK8Q,WAAc9Q,KAAK6X,iBAQjD21B,yBAAyB1hC,GACrB,IAAI8B,EACJ,MAAM0C,EAAUtQ,KAAKqtC,gBAAgBvhC,GACrC,GAAKwE,EAIA,CAED,OADqD,QAA/B1C,EAAK0C,EAAQm9B,oBAAiC,IAAP7/B,EAAgBA,EAAK,GAC5D5N,KAAK8Q,WAJ3B,MAAO,IAUf48B,oBAAoB3oC,GAChB,MAAM5E,EAAMH,KAAKksC,SAGjB,IAAIyB,EAAelC,GAAetrC,QACbyD,IAAjB+pC,IACAA,EAAe,GACflC,GAAetrC,GAAOwtC,GAE1B,IAAIrjC,EAAQqjC,EAAa5oC,GACzB,QAAcnB,IAAV0G,EAAqB,CACrBA,EAAQ,EACR,IAAK,IAAI/B,EAAI,EAAGA,EAAIxD,EAAKa,SAAU2C,EAC/B+B,GAAStK,KAAKwtC,yBAAyBzoC,EAAKwD,IAEhDolC,EAAa5oC,GAAQuF,EAEzB,OAAOA,EAGXsjC,oBAAoB7oC,GAChB,OAAO/E,KAAK0tC,oBAAoB3oC,GAAQ/E,KAAK6X,iBAKjDJ,YAAYtJ,GAIR,OAHAnO,KAAKmO,KAAOA,EAEZnO,KAAKmtC,iBACEntC,KAGP6X,uBACA,OAAO7X,KAAKmO,KAAOZ,EAAKM,cAAcC,GAE1C+C,gBACI,OAAO7Q,KAAK8Q,YC9Pb,IAAI+8B,GAOAC,GD2PXtC,GAAcpJ,OAAQ,ECjQtB,SAAWyL,GACPA,EAA4BA,EAAkC,KAAI,GAAK,OACvEA,EAA4BA,EAAoC,OAAI,GAAK,SACzEA,EAA4BA,EAAmC,MAAI,GAAK,QACxEA,EAA4BA,EAAyC,YAAI,GAAK,cAJlF,CAKGA,KAAgCA,GAA8B,KAEjE,SAAWC,GACPA,EAA0BA,EAA+B,IAAI,GAAK,MAClEA,EAA0BA,EAAkC,OAAI,GAAK,SACrEA,EAA0BA,EAAkC,OAAI,GAAK,SACrEA,EAA0BA,EAAuC,YAAI,GAAK,cAJ9E,CAKGA,KAA8BA,GAA4B,KAOtD,MAAM9rC,WAAmBw2B,EAM5B/2B,YAAYsD,GACRxB,QACAvD,KAAK+E,KAAOA,EACZ/E,KAAK+tC,wBAA0BF,GAA4B9U,OAG3D/4B,KAAKguC,sBAAwBF,GAA0BG,IACvDjuC,KAAKwX,YAELxX,KAAKu5B,SAAS1L,EAAO2B,UAAUzqB,IAGxBrD,sBACP,OAAOG,EAASG,WAITksC,kCAEP,OADkBrgB,EAAOgV,mBACR5xB,aAAa,8BAGlC1L,cAAc4oC,EAAaxL,GACvB,IAAKwL,GAAsC,IAAvBA,EAAYvoC,OAC5B,OAAO,EACX,IAAIwoC,EAAY,EACZC,EAAa,EACbC,EAAoB,EACpBC,EAAqB,EACzB,IAAK,IAAIhmC,EAAI,EAAGA,EAAI4lC,EAAYvoC,SAAU2C,EAAG,CACzC,MAAMimC,EAAaL,EAAY5lC,GACzBkmC,EAAgBjD,GAAckD,OAAOF,EAAW13B,UAGtD,IAAI63B,GADe,EAAIF,EAAclB,WAAa1f,EAAOgD,oBAEzD,MAAM4I,EAAO+U,EAAW9U,oBAClBkV,EAAanV,EAAKoV,WAAWpf,WAE7BD,EAAYif,EAAcb,oBAAoBY,EAAWzpC,MAC3DypC,EAAWT,0BAA4BF,GAA4BlV,MACnE2V,EAAoBrpC,KAAK2E,IAAIglC,EAAYN,GACzCF,EAAYnpC,KAAK2E,IAAIwkC,EAAW5e,GAAaxtB,GAAWksC,sBAEnDM,EAAWT,0BAA4BF,GAA4BvU,OACxEiV,EAAqBtpC,KAAK2E,IAAIglC,EAAYL,GAC1CF,EAAappC,KAAK2E,IAAIykC,EAAY7e,KAGlC4e,EAAYnpC,KAAK2E,IAAIwkC,EAAW5e,EAAY,GAAKxtB,GAAWksC,qBAC5DG,EAAappC,KAAK2E,IAAIykC,EAAY7e,EAAY,GAC9C8e,EAAoBrpC,KAAK2E,IAAIglC,EAAa,EAAGN,GAC7CC,EAAqBtpC,KAAK2E,IAAIglC,EAAa,EAAGL,IAElD,MAAMrX,EAAQuC,EAAKmB,WACbkU,EAAgBrV,EAAKsV,UAAYtV,EAAKuV,mBAAqBxG,GAAKe,GACtE,IAAIe,EAAa,EACb2E,EAAQ,EACZ,GAAIhsC,EAAUw2B,GACV,GAAIA,EAAK4I,eAAe6M,UAAW,CAC/B,MAAMtc,EAAO6G,EAAK0V,UACdvc,IACA0X,EAAarlC,KAAK4C,IAAI+qB,EAAKqX,aAAepc,EAAOgD,0BAIrDyZ,EAAa,OAGhB,GAAIvnC,EAAgB02B,GAAO,CAC5B,MAAM7G,EAAO6G,EAAK0V,UACdvc,GAA+B,MAAvB6G,EAAK2V,gBACb9E,EAAarlC,KAAK4C,IAAI+qB,EAAKqX,aAAepc,EAAOgD,qBAMzD,GAHIqG,IACA+X,EAAQ/X,EAAMmY,eAEdb,EAAWR,wBAA0BhuC,KAAKsvC,gBAAgBrB,IAAK,CAC/D,IAAIsB,EAAW9V,EAAK+V,eAAc,GAC9BvsC,EAAUw2B,KACV8V,EAAWN,GAASxV,EAAKgW,cAAgB,KAEzCX,IAAkBtG,GAAKe,KACvBgG,GAAYjF,GAEDiF,EAAW5M,EAAM+M,cAAgB,GACnCT,GACTT,EAAWnU,YAAY4U,EAAQM,GAC/BZ,GAAuBM,EAAQM,EAC/B5M,EAAM+M,cAAgBf,IAGtBH,EAAWnU,YAAYsI,EAAM+M,eAC7B/M,EAAM+M,eAAiBf,QAG1B,GAAIH,EAAWR,wBAA0BhuC,KAAKsvC,gBAAgBK,OAAQ,CACvE,IAAIJ,EAAWN,EAAQxV,EAAK+V,gBACxBvsC,EAAUw2B,KACV8V,EAAW9V,EAAKmW,iBAAmB,GAEnCd,IAAkBtG,GAAKgB,OACvB+F,GAAYjF,GAEhB,MAAMuF,EAAYN,EAAW5M,EAAMlK,UAAY,EAC3CoX,EAAYZ,GACZT,EAAWnU,YAAY4U,EAAQY,GAC/BlB,GAAuBM,EAAQY,EAC/BlN,EAAMlK,UAAYkW,IAGlBH,EAAWnU,YAAYsI,EAAMlK,WAC7BkK,EAAMlK,WAAakW,QAIvBH,EAAWnU,YAAYsI,EAAMlK,WAGrC,MAAMqX,EAAe7qC,KAAKulC,IAAIvlC,KAAK2E,IAAIykC,EAAaE,EAAoB,GAAItpC,KAAK2E,IAAIykC,EAAa1L,EAAMoN,YAAa,IAC/GC,EAAc/qC,KAAKulC,IAAIvlC,KAAK2E,IAAIwkC,EAAYE,EAAmB,GAAIrpC,KAAK2E,IAAIwkC,EAAYzL,EAAMK,WAAY,IAGhH,OAFAL,EAAMK,YAAcgN,EACpBrN,EAAMoN,aAAeD,GACd,EAMXG,yBAAyBC,GAErB,OADAlwC,KAAKguC,sBAAwC,iBAATkC,EAAoBluC,GAAWmuC,sBAAsBD,GAAQA,EAC1FlwC,KAKXowC,mBACI,OAAOpwC,KAAK+tC,wBAMhBsC,iBAAiBH,GAEb,OADAlwC,KAAK+tC,wBAA0C,iBAATmC,EAAoBluC,GAAWsuC,wBAAwBJ,GAAQA,EAC9FlwC,KAGX8V,OACI,MAAMggB,EAAM91B,KAAK6V,eACX4jB,EAAOz5B,KAAK05B,oBACZoV,EAAgBrV,EAAKsV,UAAYtV,EAAKuV,mBAAqBxG,GAAKe,GAChEkF,EAAgBjD,GAAckD,OAAO1uC,KAAK8W,UAC1CsxB,EAAQ3O,EAAK4O,mBAAmBxU,EAAiBoF,MAAOj5B,KAAKiS,OACnEjS,KAAKmW,cAEL2f,EAAI/gB,OAIJ/U,KAAK6U,aACLihB,EAAIuV,UAAU,aAAcrrC,KAAK0S,aAAa,OAC9CojB,EAAIlf,QAAQ5W,KAAK8W,UACjB,MAAMy5B,EAAaza,EAAI0a,YAAYxwC,KAAK+E,MAAMuF,MACxCmmC,EAAchC,EAAclB,UAAY,EAC9C,IAAI5pC,EACA+E,EAEA/E,EADA3D,KAAK+tC,0BAA4BF,GAA4BlV,KACzDyP,EAAMzkC,EAEL3D,KAAK+tC,0BAA4BF,GAA4BvU,MAC9D8O,EAAMzkC,EAAI4sC,EAETvwC,KAAK+tC,0BAA4BF,GAA4B9U,OAC9DqP,EAAMzkC,EAAI4sC,EAAa,EAGvB9W,EAAKiX,WAAaH,EAAa,EAEvC,IAAII,EAAW,GACXC,EAAU,EACd,MAAMC,EAAWpX,EAAKsV,UAChB7X,EAAQuC,EAAKxB,aAOnB,GAJI4Y,IACAF,EAAWlX,EAAKqX,YAAY3G,aAC5ByG,EAAU1Z,EAAMwM,0BAEhB1jC,KAAKguC,wBAA0BF,GAA0B6B,OAAQ,CAGjEjnC,EADW+wB,EAAKsX,QACTC,QAAO,CAACvsC,EAAGC,IAAOD,EAAIC,EAAID,EAAIC,IACrCgE,IAAM1I,KAAKy4B,UAAY,GAAK5K,EAAOgD,oBAAsB4f,EACrDI,GAAY/B,IAAkBtG,GAAKgB,OACnC9gC,EAAIzD,KAAK2E,IAAIlB,EAAGioC,EAASjG,KAAO+F,EAAcG,EAAU5wC,KAAKy4B,iBAGhE,GAAIz4B,KAAKguC,wBAA0BF,GAA0B/U,OAAQ,CACtE,MAAMkY,EAAKxX,EAAKyX,eAAelxC,KAAKy4B,WAAa,EAEjD/vB,EAAIuoC,GADO/Z,EAAMia,kBAAkBnxC,KAAKy4B,WACzBwY,GAAM,EAAIR,EAAc,OAEtC,GAAIzwC,KAAKguC,wBAA0BF,GAA0BG,IAC9DvlC,EAAI+wB,EAAKsX,QAAQ,IAAM/wC,KAAKy4B,UAAY,GAAK5K,EAAOgD,oBAChDggB,GAAY/B,IAAkBtG,GAAKe,KAGnCqH,EAAUD,EAASjG,KAAOxT,EAAMka,iBAAmBvjB,EAAOgD,oBAAsB+f,EAChFloC,EAAIzD,KAAKulC,IAAI9hC,EAAGioC,EAASjG,KAAOkG,GAAW5wC,KAAKy4B,UAAY,SAG/D,CACD,MAAM4Y,EAAU5X,EAAK6X,iBACrB5oC,EAAI2oC,EAAQ3G,MAAQ2G,EAAQ1G,MAAQ0G,EAAQ3G,MAAQ,EAAI+F,EAAc,GApPlF,YAAc1sC,GACN/B,GAAWogC,OACXv+B,EAAI,sBAAuBE,GAoP3B,CAAE,yBAA0B/D,KAAK+E,KAAMpB,EAAG+E,GAC1CotB,EAAIyb,SAASvxC,KAAK+E,KAAMpB,EAAG+E,GAC3BotB,EAAIyV,aACJvrC,KAAK0V,eACLogB,EAAIngB,WAIZ3T,GAAWogC,OAAQ,EACnBpgC,GAAWgV,UAAY3W,OAAOgX,OAAO,GAAIzD,EAAQoD,WAEjDhV,GAAWwvC,kBAAoB3D,GAC/B7rC,GAAWsuC,wBAA0B,CACjClX,KAAMyU,GAA4BlV,KAClCU,MAAOwU,GAA4BvU,MACnCR,OAAQ+U,GAA4B9U,OACpC0Y,WAAY5D,GAA4B6D,aAE5C1vC,GAAWstC,gBAAkBxB,GAC7B9rC,GAAWmuC,sBAAwB,CAC/BnX,MAAO8U,GAA0BG,IACjC0D,IAAK7D,GAA0BG,IAC/B/U,MAAO4U,GAA0B6B,OACjCiC,OAAQ9D,GAA0B6B,OAClC7W,OAAQgV,GAA0B/U,OAClC0Y,WAAY3D,GAA0B4D,aC3Q1C,MAAM,MAAEzY,GAAK,MAAEE,IAAUX,EAASE,SAClC,SAASmZ,GAAmBC,EAAQ1wC,GAChC,MAA6B,GAAtB0wC,EAAO1wC,EAAQ,IAG1B,SAAS2wC,GAAc/tC,EAAMsvB,GACzB,OAAOA,IAAa2F,GAAQj1B,GAAQ,EAAIA,GAAQ,EAEpD,SAASguC,GAAoBhuC,EAAMsvB,GAC/B,OAAIye,GAAc/tC,EAAMsvB,GAChBA,IAAa2F,GACNh0B,KAAKgtC,KAGLhtC,KAAKyC,MAITzC,KAAK2vB,MAiBpB,MAAMsd,GAAsBzY,GAAS52B,EAAY42B,IAASp3B,EAAYo3B,GA0G/D,MAAM0Y,WAAqB3Z,EAK9B/2B,YAAYqQ,GACRvO,QACAvD,KAAK8R,KAAOA,EACZ9R,KAAKszB,SAAW6F,GAChBn5B,KAAKqiC,eAAiB,CAClBC,WAAY,IAEhBtiC,KAAKw1B,QAGE9zB,sBACP,OAAOG,EAASswC,aAoBpB5sC,cAAcqmB,EAAe+W,GACzB,IAAK/W,GAA0C,IAAzBA,EAAchmB,OAChC,OAAO,EAEX,IAAIwsC,EAAgB,EACpB,MAAMC,EAAe,CAACC,EAActuC,EAAMsvB,IAAaue,GAAmBG,GAAoBhuC,EAAMsvB,GAAW5vB,EAAQ4uC,EAAanjB,MAAMxe,aAAapG,QAAU,GAFlJ,IAGfqhB,EAAcjX,SAAS29B,IACnB,MAAM7Y,EAAO6Y,EAAa5Y,oBAC1B0Y,EAAgBntC,KAAK2E,IAAI6vB,EAAKoV,WAAWpf,WAAY2iB,GACrD,IAAInD,EAAQ,EACZ,MAAMH,EAAgBrV,EAAKsV,UAAYtV,EAAKuV,mBAAqBxG,GAAKe,GACtE,IAAIe,EAAa,EAEjB,GAAIvnC,EAAgB02B,GAAO,CACvB,MAAM7G,EAAO6G,EAAK0V,UACdvc,IACA0X,EAAarlC,KAAK4C,IAAI+qB,EAAKqX,aAAepc,EAAOgD,qBAGzD,MAAMqG,EAAQuC,EAAKmB,WAInB,GAHI1D,IACA+X,EAAQ/X,EAAMmY,eAEdiD,EAAanY,gBAAkBlB,GAAO,CACtC,IAAIsW,EAAW9V,EAAK+V,eAAc,GAC9BV,IAAkBtG,GAAKe,KACvBgG,GAAYjF,GAEhB,IAAIiI,EAAYF,EAAaC,EAAc3P,EAAM+M,cAAezW,IAChE,MAAMuZ,EAASjD,EAAW5M,EAAM+M,cAAgB,IAE3C4C,EAAaA,aAAazmB,eAAiB2mB,EAASvD,IACrDsD,GAAatD,EAAQuD,GAEzBF,EAAajY,YAAYsI,EAAM+M,eAC/B/M,EAAM+M,eAAiB6C,OAEtB,GAAID,EAAanY,gBAAkBhB,GAAO,CAC3C,IAAIoW,EAAWtqC,KAAK2E,IAAIqlC,EAAQxV,EAAK+V,gBAAiB,GAClDV,IAAkBtG,GAAKgB,OACvB+F,GAAYjF,GAEhB,IAAIiI,EAAYF,EAAaC,EAAc3P,EAAMlK,UAAWU,IAC5D,MAAM0W,EAAYN,EAAW5M,EAAMlK,UAAY,IAE1C6Z,EAAaA,aAAazmB,eAAiBgkB,EAAYZ,IACxDsD,GAAatD,EAAQY,GAEzByC,EAAajY,YAAYsI,EAAMlK,WAC/BkK,EAAMlK,WAAa8Z,MAG3B,MAAMjoC,EAAQshB,EACTxY,KAAKk/B,GAAiBA,EAAa7iB,aACnCuhB,QAAO,CAACyB,EAAUC,IAAeztC,KAAK2E,IAAI8oC,EAAYD,KACrDE,EAAU1tC,KAAKulC,IAAIvlC,KAAK2E,IAAIU,EAAQ8nC,EAAe,GAAIntC,KAAK2E,IAAIU,GAASq4B,EAAMK,WAAaL,EAAMoN,aAAc,IAGtH,OAFApN,EAAMK,YAAc2P,EAAU,EAC9BhQ,EAAMoN,aAAe4C,EAAU,GACxB,EAEXptC,sBAAqB,cAAEqmB,GAAiB6N,EAAMmZ,GAC1C,IAAKhnB,EACD,OACJ,MAAMinB,EAAkB,CACpBC,SAAU,KACVC,OAAQ,KACRC,OAAQ,MAEZpnB,EACKpjB,MAAM,KACN4K,KAAK6/B,GAAgBA,EAAY9jC,OAAO3G,MAAM,OAC9C4K,KAAI,EAAE3F,EAAM6lB,MACb,MAAM5D,EAAQ,CAAE5d,KAAM+gC,EAAgBplC,IAGtC,OAFI6lB,IACA5D,EAAM4D,SAAWkF,EAASK,eAAevF,IACtCsf,EAAQM,aAAaf,aAAaziB,MAExCtc,KAAKsc,GAAU+J,EAAKoO,YAAYnY,EAAO,KAEhD8F,QACIx1B,KAAKsyC,aAAezkB,EAAOslB,kBAAkBnzC,KAAK8R,MAClD,MAAMwgC,EAAe5uC,EAAQ1D,KAAKsyC,aAAc,gBAAiB,2BAA2BtyC,KAAK8R,QAC3FzO,GAAQrD,KAAKszB,WAAa2F,GAAQqZ,EAAavmB,UAAYumB,EAAatmB,YAAcsmB,EAAajvC,KACzGrD,KAAKmvB,MAAQ,IAAIG,EAAMjsB,MAAAA,EAAmCA,EAAO,GAAIrD,KAAKqiC,eAAeC,YACzFtiC,KAAKu5B,SAAS71B,EAAQ1D,KAAKmvB,MAAMxe,aAAarG,QAGlDwL,OACI,MAAMggB,EAAM91B,KAAK6V,eACX4jB,EAAOz5B,KAAK05B,oBAClB15B,KAAKmW,cACL,MAAMlE,EAAQjS,KAAK65B,cACb,SAAEvG,EAAQ,MAAEnE,EAAOsJ,UAAW2a,GAAapzC,KAC3CqzC,EAAqBrzC,KAAKsyC,aAAazmB,cACvCqL,EAAQuC,EAAKxB,aACbqb,EAAapc,EAAMwM,yBACnB6P,EAAQtwC,EAAUw2B,IAElB,EAAE91B,GAAM81B,EAAK4O,mBAAmB/U,EAAUrhB,GAC1CuhC,GAAyBH,GAAsBE,EAC/CE,EArKd,SAA0Bha,EAAMnG,GAC5B,MAAMogB,EAAepgB,IAAa2F,IAASQ,EAAKuV,qBAAuBxG,GAAKe,IACvEjW,IAAa6F,IAASM,EAAKuV,qBAAuBxG,GAAKgB,KAC5D,OAAI0I,GAAmBzY,GACfA,EAAKsV,WAAa2E,EACX,GAKA,EAIPja,EAAKsV,WAAa2E,EACX,EAGA,EAmJWC,CAAiBla,EAAMnG,GACvCsgB,EAAU/lB,EAAOgV,mBAAmB5xB,aAAa,gBAAgBke,EAAM4H,oBAAqB,GAClG,IAAIruB,EAAI,CACJ,CAACuwB,IAAQ,KACL9J,EAAM0I,UAAU,GAAK,GACrB,MAAMnvB,EAtPtB,SAAiB+wB,EAAM2Z,GACnB,MAAMtE,EAAgBrV,EAAKuV,oBACnBtE,KAAMmJ,EAAUlJ,MAAOmJ,GAAcra,EAAK6X,iBAClD,GAAIY,GAAmBzY,GACnB,OAAIA,EAAKsV,UACDD,IAAkBtG,GAAKe,GAChBsK,EAGAC,EAIJ7uC,KAAKulC,OAAO/Q,EAAKsX,SAG3B,GAAI9tC,EAAUw2B,GACf,OAAIA,EAAKsV,WACDD,IAAkBtG,GAAKe,GAChBsK,EAOJpa,EAAKxB,aAAaiZ,eAAekC,GAI5C,MAAM,IAAIjwC,EAAa,kBAAmB,iEAwNxB4wC,CAAQta,EAAM2Z,IAAaA,EAAWK,GAAiBH,EACjE,OAAOE,EAAwBvuC,KAAKulC,IAAItT,EAAMga,eAAeiB,GAAa6B,gBAAiBtrC,GAAKA,GAEpG,CAACywB,IAAQ,KACLhK,EAAM0I,UAAU,GAAK,GACrB,MAAMnvB,EA1NtB,SAAoB+wB,EAAM2Z,GACtB,MAAMtE,EAAgBrV,EAAKuV,oBACnBtE,KAAMmJ,EAAUlJ,MAAOmJ,GAAcra,EAAK6X,iBAClD,GAAIY,GAAmBzY,GACnB,OAAIA,EAAKsV,UACDD,IAAkBtG,GAAKe,GAChBuK,EAGAD,EAIJ5uC,KAAK2E,OAAO6vB,EAAKsX,SAG3B,GAAI9tC,EAAUw2B,GACf,OAAIA,EAAKsV,UACDD,IAAkBtG,GAAKe,GAChB9P,EAAKxB,aAAakZ,kBAAkBiC,GAGpCS,EAIJpa,EAAKxB,aAAakZ,kBAAkBiC,GAI/C,MAAM,IAAIjwC,EAAa,kBAAmB,iEA4LxB8wC,CAAWxa,EAAM2Z,IAAaA,EAAWK,GAAiBH,EACpE,OAAOE,EAAwBvuC,KAAK2E,IAAIstB,EAAMia,kBAAkBgB,GAAa6B,gBAAiBtrC,GAAKA,IAEzG4qB,KACF,IAAKigB,EAAO,CACR,MAAMW,EAAkB5gB,IAAa2F,IAAS,EAAI,EAC5CsW,EAAW9V,EAAK8J,cAActxB,GAAOjO,KAErCmwC,GADoB1a,EAAKsX,QAAQ9+B,GAASvJ,GAAK4qC,EAChB9tC,OAAO+pC,GACtC6E,EAnRlB,SAAyBf,EAAoBrvC,EAAMsvB,EAAU4gB,GAEzD,MAAME,EAAcvC,GAAmBG,GAAoBhuC,EAAMsvB,GAAWtvB,GAG5E,GAF4BqvC,GAAsBtB,GAAcqC,EAAa9gB,IACzD8gB,EAAc,GAAM,EAGpC,OAAOA,EADkB,IACgBF,EAGzC,OAAOE,EAyQiBC,CAAgBhB,EAAoBc,EAAW7gB,EAAU4gB,GACzEnC,GAAcqC,EAAa9gB,IAC3BnE,EAAM0I,UAAU,GAAK,IACzBnvB,GAAKzD,KAAK4C,IAAIusC,EAAcD,GAAab,EAAaY,EAAkBN,EAAUM,GA/S9F,YAAcnwC,GACNouC,GAAa/P,OACbv+B,EAAI,wBAAyBE,GA+S7B,CAAE,iCAAiCJ,SAAS+E,MAC5CymB,EAAM2I,OAAOhC,EAAKnyB,EAAG+E,IAI7BypC,GAAa/P,OAAQ,EACrB+P,GAAa6B,gBAAkB,GC9TxB,MAAMpxC,GACElB,sBACP,OAAOG,EAASe,cAEhBiM,SAAKzG,GACLpI,KAAK4W,QAAQxO,GAEbyG,WACA,OAAO7O,KAAKuX,UAMhB+8B,WAAWlsC,GAEP,OADApI,KAAK4W,QAAQxO,GACNpI,MAUR,SAASu0C,GAAQze,EAAKnyB,EAAG+E,EAAG8rC,EAAQ,QACvC1e,EAAI/gB,OACJ+gB,EAAIzgB,aAAam/B,GAEjB1e,EAAIQ,YACJR,EAAI2e,IAAI9wC,EAAG+E,EAAG,EAAG,EAAa,EAAVzD,KAAKC,IAAQ,GACjC4wB,EAAI4e,YACJ5e,EAAIa,OACJb,EAAIngB,UC1BD,MAAMg/B,WAAiB/gC,EAC1BnS,cACI8B,QACAvD,KAAK40C,eAAgB,EACrB50C,KAAK60C,gBAAiB,EAGtB70C,KAAKiwB,MAAQ,IAAI9qB,EAAS,EAAG,GAC7BnF,KAAK80C,eAAiB,EACtB90C,KAAK+0C,eAAiB,IAAI5vC,EAAS,EAAG,GAEtCnF,KAAKsK,MAAQ,EACbtK,KAAKq0B,QAAU,EACfr0B,KAAKg1C,UAAY,GACjBh1C,KAAKi1C,YAAc,GACnBj1C,KAAKk1C,cAAe,EACpBl1C,KAAKm1C,eAAiB,EAGtBn1C,KAAKo1C,cAAe,EAGpBp1C,KAAKq1C,iBAAmB,CAIpBC,QAAS,CAAElc,KAAM,EAAGC,MAAO,GAG3BjL,SAAU,GAEVmnB,WAAY,EAGZC,MAAO,CACHC,KAAM,EACNC,KAAM,EACNC,UAAW,IAIZj0C,sBACP,OAAOG,EAAS8yC,SAGpBnf,QACI,OAAOx1B,KAGX2mC,WACI,OAAO3mC,KAAKiwB,MAGhBwW,oBACI,OAAOzmC,KAAKo1C,aAGhBQ,eAAe9iB,GAEX,OADA9yB,KAAKo1C,aAAetiB,EACb9yB,KAGXu5B,SAASjvB,GACLtK,KAAKsK,MAAQA,EAGjBmlB,WACI,IAAKzvB,KAAK40C,cACN,MAAM,IAAIzxC,EAAa,kBAAmB,+CAE9C,OAAOnD,KAAKsK,OAAStK,KAAKg6B,gBAAkBh6B,KAAKg6B,gBAAgBvK,WAAa,GAGlF2H,UAAUzzB,GAEN,OADA3D,KAAKq0B,QAAU1wB,EACR3D,KAGXm3B,YACI,OAAOn3B,KAAKq0B,QAGhBvrB,OAEI,OADoB9I,KAAK61C,iBAAiB,uCACvB/sC,OAAS9I,KAAKq0B,QAGrCyhB,sBACI,OAAO91C,KAAKq1C,iBAGhBU,kBACI,OAAI/1C,KAAKg2C,kBACEh2C,KAAKm1C,eAET,EAGXc,gBAAgBC,GAEZ,OADAl2C,KAAKm1C,eAAiBe,EACfl2C,KAGXg2C,kBACI,OAAOh2C,KAAKk1C,aAGhBiB,mBAAmBjB,GAEf,OADAl1C,KAAKk1C,aAAeA,EACbl1C,KAMXo2C,WACI,OAAO1yC,EAAQ1D,KAAKsmC,MAAO,UAAW,0BAG1C+P,SAAS/P,GACLtmC,KAAKsmC,MAAQA,EAGjBgQ,YACI,OAAOt2C,KAAKu2C,OAGhBC,iBACI,OAAOx2C,KAAKi1C,YAOhBwB,YAAYF,GACR,IAAIG,EACAC,EACJ,GAAIJ,EAAQ,CACR,MAAMhuC,EAAIvI,KAAKi1C,YAAYxN,QAAQ8O,GAQnC,OAPW,IAAPhuC,IACAvI,KAAKi1C,YAAYrN,OAAOr/B,EAAG,GAC3BmuC,EAAYH,EAAOK,eACnBD,EAAgBJ,EAAOM,mBAEvB72C,KAAK82C,oBAAoBJ,EAAWC,IAEjC32C,KAEX,KAAOA,KAAKi1C,YAAYrvC,QAEpB8wC,GADAH,EAASv2C,KAAKi1C,YAAY8B,OACPH,eACnBD,EAAgBJ,EAAOM,mBAEvB72C,KAAK82C,oBAAoBJ,EAAWC,GAExC,OAAO32C,KAGXg3C,UAAUT,GACN,GAAIA,EAAQ,CACRv2C,KAAKi1C,YAAYzgC,KAAK+hC,GACtB,MAAMG,EAAYH,EAAOK,eACnBD,EAAgBJ,EAAOM,mBAC7B72C,KAAK82C,oBAAoBH,EAAeD,GAG5C,OADA12C,KAAKu2C,OAASA,EACPv2C,KAOXi3C,qBAAqBC,GACjBl3C,KAAKg6B,gBAAkBkd,EACvB,IAAK,IAAI3uC,EAAI,EAAGA,EAAIvI,KAAKg1C,UAAUpvC,SAAU2C,EACzCvI,KAAKg6B,gBAAgBmd,UAAUn3C,KAAKg1C,UAAUzsC,IAIlD,OAFAvI,KAAKg6B,gBAAgBmd,UAAUn3C,MAC/BA,KAAK40C,eAAgB,EACd50C,KAOX6nC,YAAYF,EAAU11B,EAAQ,GAG1B,OAFAjS,KAAKg1C,UAAUxgC,KAAKmzB,GACpB3nC,KAAK40C,eAAgB,EACd50C,KAGX0nC,eACI,OAAO1nC,KAAKg1C,UAGhBoC,eAAeC,GACXr3C,KAAK06B,YAAc2c,EACnBr3C,KAAK40C,eAAgB,EAEzBiB,iBAAiBvyC,EAAU,iCACvB,OAAOI,EAAQ1D,KAAK06B,YAAa,gBAAiBp3B,GAGtDg0C,YACQt3C,KAAK40C,gBAET50C,KAAKsK,MAAQ,EACTtK,KAAKg6B,kBACLh6B,KAAKg6B,gBAAgBsd,YACrBt3C,KAAKsK,OAAStK,KAAKg6B,gBAAgBvK,aAIvC8nB,iBAAan2C,GACbpB,KAAK40C,cAAgBxzC,EAErBm2C,mBACA,OAAOv3C,KAAK40C,cAGhB4C,aACI,OAAIx3C,KAAK60C,iBAET70C,KAAK60C,gBAAiB,GADX70C,KAKXy3C,kBAAcr2C,GACdpB,KAAK60C,eAAiBzzC,EAEtBq2C,oBACA,OAAOz3C,KAAK60C,eAGhB6C,oBACI,OAAO13C,KAAK80C,eAGhB6C,kBAAkB7C,GACd90C,KAAK80C,eAAiBA,EACtB90C,KAAKiwB,MAAQjwB,KAAK+0C,eAAextC,QAAQX,SAAS5G,KAAK80C,gBAG3D8C,oBACI,OAAO53C,KAAK+0C,eAGhB+B,oBAAoB1xC,EAAWC,GAC3BrF,KAAK+0C,eAAenuC,SAASxB,EAAWC,GACxCrF,KAAKiwB,MAAQjwB,KAAK+0C,eAAextC,QAAQX,SAAS5G,KAAK80C,gBAG3D+C,YAAYzpB,GACR,MAAM6B,EAAQ7B,EAAShpB,WAAayoB,EAAO9V,WAAaqW,EAAS/oB,aACjErF,KAAKiwB,MAAQjwB,KAAK+0C,eAAextC,QAAQX,SAASqpB,GAClDjwB,KAAK80C,eAAiB90C,KAAKiwB,MAAM7uB,QAErC02C,eAEI,OADoB93C,KAAK61C,iBAAiB,+CACvB/sC,OAGvBoxB,mBAAmBgd,GAEf,OADAl3C,KAAKg6B,gBAAkBkd,EAChBl3C,KAGX+5B,qBACI,OAAO/5B,KAAKg6B,gBAGhBC,uBACI,OAAOv2B,EAAQ1D,KAAKg6B,gBAAiB,oBAAqB,mDC7Q3D,MAAMt3B,WAAaiyC,GAOtBlzC,YAAYs2C,GAER,GADAx0C,SACKw0C,EACD,MAAM,IAAI50C,EAAa,eAAgB,2EAG3C,MAAM60C,EAAmBt1C,GAAKu1C,gBAAgBF,GAC9C,IAAKC,EACD,MAAM,IAAI70C,EAAa,eAAgB,uCAAuC+0C,KAAKC,UAAUJ,MAGjG/3C,KAAKmT,KAAO4kC,EAAW5kC,MAAQ,GAE/BnT,KAAKo4C,SAAW,GAChBp4C,KAAKouB,SAAW4pB,EAAiB5pB,SACjCpuB,KAAKq4C,SAAWL,EAAiBlmC,KACjC9R,KAAKs4C,YAAcN,EAAiBM,YAChCP,EAAWQ,kBAEXv4C,KAAK63C,YAAYE,EAAWQ,mBAI5Bv4C,KAAK23C,kBAAkBK,EAAiB/nB,OAE5CjwB,KAAKg1C,UAAY,GAEjBh1C,KAAKmvB,MAAQtB,EAAO2qB,cAAcx4C,KAAKouB,SAAUpuB,KAAKq4C,UACtDr4C,KAAKy4C,aAAez4C,KAAKs4C,YAAYllC,KAAK1N,GAAMmoB,EAAO2qB,cAAcx4C,KAAKouB,SAAU1oB,KAEpF1F,KAAK04C,cAAW90C,EAEhB5D,KAAKo1C,cAAe,EAEpBp1C,KAAKsK,MAAQ,EACbtK,KAAK24C,oBAAsB,EAC3B34C,KAAK44C,qBAAuB,EAC5B54C,KAAKq0B,QAAU,EACfr0B,KAAKqqC,GAAK,GAEN0N,EAAW7C,cACXl1C,KAAKm2C,mBAAmB4B,EAAW7C,cAGvCl1C,KAAKqiC,eAAiB,CAClBwW,mBAAoB,EACpBC,iBAAkB,EAClBC,UAAW,EACX7pB,MAAO,EACPrgB,KAAM,GACNylB,QAAS,GAKN5yB,sBACP,OAAOG,EAASa,KAGpB6C,mBAAmBuwB,EAAK2D,EAAMzB,GAC1B,MAAM1nB,EAAUmpB,EAAK9oB,aACfqoC,EAASvf,EAAKqe,eAAiBxnC,EAAQwqB,UAAYxqB,EAAQqoC,oBAC3DM,EAAQxf,EAAKqe,eAAiBxnC,EAAQqoC,oBACtCO,EAAOzf,EAAKqe,eACZqB,EAAS1f,EAAKqe,eAAiBxnC,EAAQ8oC,OACvCC,EAAS5f,EAAKqe,eAAiBxnC,EAAQ8oC,OAAS9oC,EAAQsoC,qBACxDU,EAAO7f,EAAKqe,eAAiBxnC,EAAQ8oC,OAAS9oC,EAAQsoC,qBAAuBtoC,EAAQyqB,WACrFwe,EAAgBD,GAAQ7f,EAAKqc,sBAAsBR,QAAQjc,OAAS,GACpEmgB,EAASF,EAAON,EACtBljB,EAAI/gB,OACJ+gB,EAAIlf,QAAQrJ,EAAKiB,WAAY,GAC7BsnB,EAAIyb,SAAStsC,KAAK2vB,MAAM4kB,GAAU,KAAMR,EAASvf,EAAKtC,YAAaa,GACnE,MAAMtvB,EAAIsvB,EAAO,EACjB,SAASvJ,EAAO1kB,EAAIG,EAAIsqC,EAAOiF,EAAK/wC,GAChCotB,EAAIQ,YACJR,EAAIvgB,eAAei/B,GACnB1e,EAAIzgB,aAAam/B,GACjB1e,EAAIrgB,aAAa,GACjBqgB,EAAIS,OAAOxsB,EAAK0vB,EAAKtC,YAAasiB,GAClC3jB,EAAIU,OAAOtsB,EAAKuvB,EAAKtC,YAAasiB,GAClC3jB,EAAIrH,SAERA,EAAOuqB,EAAQC,EAAO,OACtBxqB,EAAOwqB,EAAOC,EAAM,QACpBzqB,EAAOyqB,EAAMC,EAAQ,SACrB1qB,EAAO0qB,EAAQE,EAAQ,QACvB5qB,EAAO4qB,EAAQC,EAAM,OACrB7qB,EAAO6qB,EAAMC,EAAe,QAC5B9qB,EAAOuqB,EAASvf,EAAKtC,YAAa6hB,EAAQ,QAC1CzE,GAAQze,EAAKojB,EAAOzf,EAAKtC,YAAazuB,EAAG,QACzC,MAAM2sC,EAAmB5b,EAAKqc,sBAC9B,GAAIT,EAAiBE,WAAa,EAAG,CACjC,MAAMmE,EAAiBrE,EAAiBG,MAAMG,UACxC7wC,EAAS40C,GAAkB,EAAI,IAAM,GAC3C5jB,EAAIzgB,aAAa,OACjBygB,EAAIyb,SAASzsC,EAASG,KAAK2vB,MAAM8kB,GAAiBR,EAAOzf,EAAKtC,YAAaa,EAAO,IAEtFlC,EAAIngB,UAERpQ,qBAAqBo0C,GACjB,IAAKA,EACD,OAEJ,MACM1sC,EADS,mCACOizB,KAAKyZ,GAC3B,IAAK1sC,EACD,OAKJ,MAAO,CAAEmhB,SAHQnhB,EAAO,GAGL2sC,KAFN3sC,EAAO,GAAGrH,OAEEkM,KADZ7E,EAAO,IAAM,KAG9B1H,uBAAuBwyC,GAEnB,MAAM8B,EAAgBn3C,GAAKo3C,cAAc/B,EAAW3pB,UACpD,IAAKyrB,EACD,OAGJ,IAAI/nC,EAAOimC,EAAWjmC,KACtB,GAAIA,IAAS+b,EAAOmE,WAAWlgB,GAC3B,OAGJ,MAAMwmC,EAAc,GACfxmC,IACDA,EAAO+nC,EAAc/nC,MAAQ,SAELlO,IAApBm0C,EAAW5kC,MACX4kC,EAAW5kC,KAAKwB,SAAQ,CAACtB,EAAG9K,KACxB,MAAM0E,EAASoG,EAAE7K,MAAM,KAEvB8vC,EAAY/vC,GAAM0E,GAA4B,IAAlBA,EAAOrH,OAAeqH,EAAO,GAAK6E,MAK1E,IAAIme,EAAQpC,EAAOksB,gBAAgBF,EAAczrB,UACjD,IAAK6B,EACD,OAGJ,MAAM2pB,EAAO7B,EAAW6B,KAAO7B,EAAW6B,KAAOC,EAAcD,KAC/D,GAAoB,iBAATA,EACP,OAGJ,IAAII,EAAe/pB,EACnB,IAAK,IAAI1nB,EAAI,EAAGA,EAAIqxC,EAAMrxC,IAAK,CAC3B,GAAIyxC,GAAgB,EAChB,OACJA,GAA8B,EAC9B/pB,GAAS+pB,EAEb,MAAO,CACH5rB,SAAUyrB,EAAczrB,SACxBtc,KAAAA,EACAwmC,YAAAA,EACAsB,KAAAA,EACA3pB,MAAAA,GAORgqB,cACI,OAAOj6C,KAAK04C,SAMhBwB,YAAYzgB,GAER,OADAz5B,KAAK04C,SAAWjf,EACTz5B,KAQXknC,SACI,OAAO,EAGXiT,UAAUloC,EAAOwc,GAKb,OAJAA,EAAOkL,QAAQ35B,MACfyuB,EAAOqL,SAAS7nB,GAChBjS,KAAKg1C,UAAUxgC,KAAKia,GACpBzuB,KAAKu3C,cAAe,EACbv3C,KAGX46B,WACI,OAAO56B,KAAKk3B,MAGhBe,aACI,OAAOv0B,EAAQ1D,KAAKk3B,MAAO,UAAW,kCAG1CD,SAASC,GAIL,OAHAl3B,KAAKk3B,MAAQA,EACbl3B,KAAKo6C,MAAM,CAACljB,EAAMyM,YAAY,KAC9B3jC,KAAK2W,WAAW3W,KAAKk3B,MAAMxgB,cACpB1W,KAGXwjC,yBACI,OAAOxjC,KAAK24C,oBAGhB0B,0BACI,OAAOr6C,KAAK44C,qBAGhB0B,uBAAuB32C,GAEnB,OADA3D,KAAK24C,oBAAsBh1C,EACpB3D,KAGXu6C,wBAAwB52C,GAEpB,OADA3D,KAAK44C,qBAAuBj1C,EACrB3D,KAGXymC,oBACI,OAAOzmC,KAAKo1C,aAIhB5F,cAAcgL,GACV,OAAO,EAGXC,iBACI,OAAO,EAIX5L,WACI,OAAO7uC,KAAKmvB,MAGhBurB,gBAEI,GAAI16C,KAAKmvB,MAAO,CACZ,GAAInvB,KAAKmvB,MAAMxe,WACX,OAAO3Q,KAAKmvB,MAAMxe,aAAarG,MAE9B,GAAItK,KAAKmvB,MAAMM,SAChB,OAAOzvB,KAAKmvB,MAAMM,SAASzvB,KAAKqiC,eAAeyW,kBAGvD,OAAO,EAMXsB,MAAM/P,GAEF,OADArqC,KAAKqqC,GAAKA,EACHrqC,KAMX+wC,QACI,GAAuB,IAAnB/wC,KAAKqqC,GAAGzkC,OACR,MAAM,IAAIzC,EAAa,YAAa,yCAExC,OAAOnD,KAAKqqC,GAMhB6G,eAAezY,GACX,OAAOz4B,KAAKi4B,aAAaiZ,eAAezY,GAG5C2d,WACI,IAAKp2C,KAAKsmC,MACN,MAAM,IAAInjC,EAAa,UAAW,sBACtC,OAAOnD,KAAKsmC,MAGhB+P,SAAS/P,GAGL,OAFAtmC,KAAKsmC,MAAQA,EACbtmC,KAAKu3C,cAAe,EACbv3C,KAGX26B,iBACI,OAAO36B,KAAK61C,mBAGhBuB,eAAeC,GAGX,OAFAr3C,KAAK06B,YAAc2c,EACnBr3C,KAAKu3C,cAAe,EACbv3C,KAGX26C,cACI,OAAO36C,KAAKouB,SAGhBwsB,WACI,OAAO56C,KAAK66C,mBAAmB,OAAOj1C,OAAS,EAGnDmpC,UACI,OAAO,EAGXK,cACI,OAAOpvC,KAAKq4C,SAGhByC,UACI,OAAO96C,KAAK+6C,KAGhBC,YACI,OAAOt3C,EAAQ1D,KAAK+6C,KAAM,SAAU,gCAGxCE,UACI,OAAoBr3C,MAAb5D,KAAK+6C,KAGhBG,QAAQH,GAEJ,OADA/6C,KAAK+6C,KAAOA,EACL/6C,KAQX6nC,YAAYF,EAAU11B,EAAQ,GAC1B,MAAMkpC,EAAY,wDASlB,GAPqB,iBAAVlpC,IACPA,EAAQpN,SAASoN,GAEjB7N,QAAQC,KAAK82C,EAAY,2DAIL,iBAAbxT,GAA0C,iBAAV11B,EACvC,MAAM,IAAI9O,EAAa,cAAe,iCAAmCg4C,EAAY,aAKzF,OAHAxT,EAAShO,QAAQ35B,MACjB2nC,EAAS7N,SAAS7nB,GAClB1O,MAAMskC,YAAYF,GACX3nC,KAGX66C,mBAAmB/oC,GACf,OAAO9R,KAAKg1C,UAAUoG,QAAQzT,GAAaA,EAAS1zB,gBAAkBnC,IAI1Eu2B,mBAAmB/U,EAAUrhB,EAAOic,GAChC,IAAKluB,KAAKu3C,aACN,MAAM,IAAIp0C,EAAa,kBAAmB,wDAE9C,MAAO,CACHQ,EAAG3D,KAAK83C,eACRpvC,EAAG1I,KAAKqqC,GAAG,IAGnBgR,sBAAsBppC,GAElB,OADcjS,KAAKujC,cAActxB,GACpB6c,UAAY9uB,KAAKq6C,0BAA4B,EAE9DiB,qBAAqBrpC,GAEjB,OADcjS,KAAKujC,cAActxB,GACpB6c,UAAY9uB,KAAKwjC,yBAA2BxjC,KAAKq0B,SAAWr0B,KAAKq0B,QAElFknB,gBACI,IAAIjqC,EAAKtR,KAAKq6C,0BAGd,OAFqE,IAAjEr6C,KAAKi6B,uBAAuBuhB,WAAW,eAAe51C,SACtD0L,GAAMuc,EAAOgV,mBAAmB5xB,aAAa,8BAC1CK,EAGXX,aACI,IAAK3Q,KAAKu3C,aACN,MAAM,IAAIp0C,EAAa,kBAAmB,iDAE9C,MAAM23B,EAAY96B,KAAKg6B,gBAAkBh6B,KAAKg6B,gBAAgByhB,WAAWzY,WAAa,EAChFjI,EAAa/6B,KAAKg6B,gBAAkBh6B,KAAKg6B,gBAAgByhB,WAAW1L,YAAc,EAClFzlC,EAAQtK,KAAKyvB,WAQnB,MAAO,CACHnlB,MAAAA,EACAskC,WATe5uC,KAAK06C,gBAUpBtB,OATW9uC,EACXwwB,EACAC,EACA/6B,KAAK24C,oBACL34C,KAAK44C,qBAOL9d,UAAAA,EACAC,WAAAA,EAEA4d,oBAAqB34C,KAAK24C,oBAC1BC,qBAAsB54C,KAAK44C,qBAC3B8C,QAAS,GAQjB5D,eAGI,IAAIn0C,EAFgB3D,KAAK61C,iBAAiB,+CAEtB/sC,OAOpB,OANI9I,KAAKk3B,QACLvzB,GAAK3D,KAAKk3B,MAAMykB,gBAAkB9tB,EAAOgV,mBAAmB5xB,aAAa,kBAEzEjR,KAAKg2C,oBACLryC,GAAK3D,KAAK+1C,mBAEPpyC,EAGXqrC,mBACI,MAAM,IAAI7rC,EAAa,SAAU,kCAGrCmuC,iBACI,MAAM,IAAInuC,EAAa,SAAU,kCAGrCy4C,eACI,IAAIC,EAAY77C,KAAK83C,eAIrB,OAFA+D,GADyB77C,KAAKmvB,MAAMM,WACJ,EAChCosB,IAAc77C,KAAKsK,MAAQ,EAAItK,KAAKsK,MAAQ,EACrCuxC,EAGXC,cACI,IAAIC,EAAU/7C,KAAK83C,eAInB,OAFAiE,GADyB/7C,KAAKmvB,MAAMM,WACN,EAC9BssB,GAAW/7C,KAAKsK,MAAQ,EAAI,EACrByxC,EAGXC,UACI,OAAOh8C,KAAKmT,KAGhBowB,cACI,OAAOvjC,KAAKo4C,UCpeb,IAAI6D,GCDAC,GCiBAC,GAOAC,GAKAC,GAMAC,IFjCX,SAAWL,GACPA,EAAsBA,EAA8B,OAAI,GAAK,SAC7DA,EAAsBA,EAA4B,KAAI,GAAK,OAC3DA,EAAsBA,EAA6B,MAAI,GAAK,QAC5DA,EAAsBA,EAA6B,MAAI,GAAK,QAC5DA,EAAsBA,EAA6B,MAAI,GAAK,QAC5DA,EAAsBA,EAA6B,MAAI,GAAK,QAC5DA,EAAsBA,EAA2B,IAAI,GAAK,MAP9D,CAQGA,KAA0BA,GAAwB,KAC9C,MAAMM,WAAsB3oC,EAC/BnS,cACI8B,QACAvD,KAAKsK,MAAQ,EACbtK,KAAK2D,EAAI,EACT3D,KAAK4zC,QAAU,GACf5zC,KAAKszB,SAAW2oB,GAAsBhjB,MAE/Bv3B,sBACP,OAAOG,EAAS06C,cAET7jB,sBACP,OAAOujB,GAEX9hB,cACI,OAAOn6B,KAAKszB,SAEhB8G,YAAY9G,GAER,OADAtzB,KAAKszB,SAAWA,EACTtzB,KAEX46B,WACI,OAAO56B,KAAKk3B,MAEhBe,aACI,OAAOv0B,EAAQ1D,KAAKk3B,MAAO,UAAW,kCAE1CD,SAASC,GAEL,OADAl3B,KAAKk3B,MAAQA,EACNl3B,KAEXyvB,WACI,OAAOzvB,KAAKsK,MAEhBivB,SAASjvB,GAEL,OADAtK,KAAKsK,MAAQA,EACNtK,KAEX8I,OACI,OAAO9I,KAAK2D,EAEhBuF,KAAKvF,GAED,OADA3D,KAAK2D,EAAIA,EACF3D,KAEXw8C,iBAAiBrtB,EAAO+H,EAAOlzB,EAAMy4C,EAAc,GAC/CttB,EAAMmI,UAAUJ,EAAMyM,YAAY3/B,MAAAA,EAAmCA,EAAO,GAAKkzB,EAAMiB,gBAAkBskB,GAE7GC,WAAWzqC,GACP,YAAiBrO,IAAVqO,GAAuBA,EAAQ,EAAI,EAAIjS,KAAK4zC,QAEvD+I,WAAW/I,GAEP,OADA5zC,KAAK4zC,QAAUA,EACR5zC,KAEX48C,iBAAiBC,GAEb,OADA78C,KAAK68C,cAAgBA,EACd78C,KAEX88C,mBACI,OAAO98C,KAAK68C,cAGhB/mC,QAAQ/R,MCzEZ,SAAWm4C,GACPA,EAAYA,EAAoB,OAAI,GAAK,SACzCA,EAAYA,EAAoB,OAAI,GAAK,SACzCA,EAAYA,EAAiB,IAAI,GAAK,MACtCA,EAAYA,EAA0B,aAAI,GAAK,eAC/CA,EAAYA,EAAwB,WAAI,GAAK,aAC7CA,EAAYA,EAAyB,YAAI,GAAK,cAC9CA,EAAYA,EAAkB,KAAI,GAAK,OAP3C,CAQGA,KAAgBA,GAAc,KAC1B,MAAMh6C,WAAgBq6C,GACzB96C,YAAYqQ,GACRvO,QACAvD,KAAK+8C,UAAYlvB,EAAO6C,qBACxB,MAAMssB,EAAOd,GACbl8C,KAAKi9C,OAAS,GACdj9C,KAAKi9C,OAAOD,EAAKE,QAAU,EAC3Bl9C,KAAKi9C,OAAOD,EAAKG,QAAU,EAC3Bn9C,KAAKi9C,OAAOD,EAAKI,KAAO,EACxBp9C,KAAKi9C,OAAOD,EAAKK,cAAgB,EACjCr9C,KAAKi9C,OAAOD,EAAKM,YAAc,EAC/Bt9C,KAAKi9C,OAAOD,EAAKO,aAAe,EAChCv9C,KAAKi9C,OAAOD,EAAKQ,MAAQ,EACzBx9C,KAAKy9C,SAAW,GAChBz9C,KAAKy9C,SAAST,EAAKE,QAAU,EAC7Bl9C,KAAKy9C,SAAST,EAAKG,QAAU,EAC7Bn9C,KAAKy9C,SAAST,EAAKI,KAAO,EAC1Bp9C,KAAKy9C,SAAST,EAAKK,cAAgB,GACnCr9C,KAAKy9C,SAAST,EAAKM,YAAc,GACjCt9C,KAAKy9C,SAAST,EAAKO,aAAe,GAClCv9C,KAAKy9C,SAAST,EAAKQ,MAAQ,EAC3Bx9C,KAAK09C,iBAAmB,GACxB19C,KAAK09C,iBAAiBV,EAAKE,QAAU,CACjCS,KAAM,EACNC,KAAM,EACNC,YAAa,EACbC,aAAc,GAElB99C,KAAK09C,iBAAiBV,EAAKG,QAAU,CACjCQ,MAAO,EACPC,KAAM,EACNC,YAAa,EACbC,aAAc,GAElB99C,KAAK09C,iBAAiBV,EAAKI,KAAO,CAC9BO,MAAO,EACPC,KAAM,EACNC,YAAa,EACbC,aAAc,GAElB99C,KAAK09C,iBAAiBV,EAAKM,YAAc,CACrCK,MAAO,GACPC,KAAM,EACNC,YAAa,EACbC,aAAc,GAElB99C,KAAK09C,iBAAiBV,EAAKK,cAAgB,CACvCM,MAAO,EACPC,KAAM,GACNC,YAAa,EACbC,aAAc,GAElB99C,KAAK09C,iBAAiBV,EAAKO,aAAe,CACtCI,MAAO,GACPC,KAAM,GACNC,YAAa,EACbC,aAAc,GAElB99C,KAAK09C,iBAAiBV,EAAKQ,MAAQ,CAC/BG,KAAM,EACNC,KAAM,EACNC,YAAa,EACbC,aAAc,GAElB99C,KAAKo6B,YAAY6hB,GAAsB8B,OACvC/9C,KAAKg+C,QAAQlsC,GAENpQ,sBACP,OAAOG,EAASK,QAET4P,kBACP,OAAOoqC,GAEA+B,wBACP,MAAO,CACHC,OAAQhC,GAAYgB,OACpBiB,OAAQjC,GAAYiB,OACpBiB,IAAKlC,GAAYkB,IACjBiB,YAAanC,GAAYmB,aACzBiB,UAAWpC,GAAYoB,WACvBiB,WAAYrC,GAAYqB,YACxBiB,KAAMtC,GAAYsB,MAG1BiB,UACI,OAAOz+C,KAAK8R,KAEhBksC,QAAQlsC,GAKJ,OAJA9R,KAAK8R,KAAuB,iBAATA,EAAoB5P,GAAQ+7C,WAAWnsC,GAAQA,EAClE9R,KAAKu5B,SAASv5B,KAAKi9C,OAAOj9C,KAAK8R,OAC/B9R,KAAK28C,WAAW38C,KAAKy9C,SAASz9C,KAAK8R,OACnC9R,KAAK48C,iBAAiB58C,KAAK09C,iBAAiB19C,KAAK8R,OAC1C9R,KAGX8V,KAAKohB,GAGD,OAFAA,EAAMrhB,eACN7V,KAAKmW,cACGnW,KAAK8R,MACT,KAAKoqC,GAAYgB,OACbl9C,KAAK0+C,gBAAgBxnB,EAAOl3B,KAAK2D,GAAG,GACpC,MACJ,KAAKu4C,GAAYiB,OACbn9C,KAAK0+C,gBAAgBxnB,EAAOl3B,KAAK2D,GAAG,GACpC,MACJ,KAAKu4C,GAAYkB,IACbp9C,KAAK2+C,mBAAmBznB,EAAOl3B,KAAK2D,GACpC,MACJ,KAAKu4C,GAAYmB,aAGbr9C,KAAK4+C,cAAc1nB,EAAOl3B,KAAK2D,GAAG,GAC9BuzB,EAAMpuB,SAAW9I,KAAK2D,GACtB3D,KAAK0+C,gBAAgBxnB,EAAOA,EAAMpuB,QAEtC,MACJ,KAAKozC,GAAYoB,WACbt9C,KAAK4+C,cAAc1nB,EAAOl3B,KAAK2D,GAAG,GAClC,MACJ,KAAKu4C,GAAYqB,YACbv9C,KAAK4+C,cAAc1nB,EAAOl3B,KAAK2D,GAAG,GAClC3D,KAAK4+C,cAAc1nB,EAAOl3B,KAAK2D,GAAG,IAO9C+6C,gBAAgBxnB,EAAOvzB,EAAGk7C,GACtB,MAAMC,EAAW5nB,EAAMrhB,eACjB60B,EAAOxT,EAAMka,iBACb2N,EAAO7nB,EAAM8nB,uBACfH,GACAC,EAASG,SAASt7C,EAAI,EAAG+mC,EAAM,EAAGqU,EAAOrU,GAE7CoU,EAASG,SAASt7C,EAAG+mC,EAAM,EAAGqU,EAAOrU,GAEzCiU,mBAAmBznB,EAAOvzB,GACtB,MAAMm7C,EAAW5nB,EAAMrhB,eACjB60B,EAAOxT,EAAMka,iBACb2N,EAAO7nB,EAAM8nB,uBACnBF,EAASG,SAASt7C,EAAI,EAAG+mC,EAAM,EAAGqU,EAAOrU,GACzCoU,EAASG,SAASt7C,EAAI,EAAG+mC,EAAM,EAAGqU,EAAOrU,GAE7CkU,cAAc1nB,EAAOvzB,EAAGu7C,GACpB,MAAMJ,EAAW5nB,EAAMrhB,eACjB60B,EAAOxT,EAAMka,iBACb2N,EAAO7nB,EAAM8nB,uBACnB,IAAI3qB,EAAU,EACT6qB,IACD7qB,GAAW,GAEfyqB,EAASG,SAASt7C,EAAI0wB,EAASqW,EAAM,EAAGqU,EAAOrU,GAC/CoU,EAASG,SAASt7C,EAAI,EAAG+mC,EAAM,EAAGqU,EAAOrU,GAGrCwU,EACA7qB,GAAW,EAGXA,GAAW,EAEf,MAAM8qB,EAAQx7C,EAAI0wB,EAAU+qB,EAE5B,IAAIlV,GAAYhT,EAAMmY,cAAgB,GAAKnY,EAAMwM,yBACjDwG,EAAWA,EAAW,EAAIhT,EAAMwM,yBAA2B,EAC3D,IAAI2b,EAAQ3U,EAAOR,EAAWkV,EAE9BN,EAASxoB,YACTwoB,EAASrK,IAAI0K,EAAOE,EAfD,EAeoB,EAAa,EAAVp6C,KAAKC,IAAQ,GACvD45C,EAASnoB,OAET0oB,GAASnoB,EAAMwM,yBACfob,EAASxoB,YACTwoB,EAASrK,IAAI0K,EAAOE,EApBD,EAoBoB,EAAa,EAAVp6C,KAAKC,IAAQ,GACvD45C,EAASnoB,QE7KV,MAAM2oB,WAAgB58C,GACzBjB,YAAYqQ,EAAOoqC,GAAYgB,QAC3B35C,MAAM,CAAE6qB,SAAU,MAClBpuB,KAAKsQ,QAAU,CACX2sC,OAAQ,IAEZ,MAAMD,EAAOd,GACbl8C,KAAKsQ,QAAQ2sC,OAAS,CAClB,CAACD,EAAKE,QAAS,EACf,CAACF,EAAKG,QAAS,GACf,CAACH,EAAKI,KAAM,GACZ,CAACJ,EAAKK,cAAe,GACrB,CAACL,EAAKM,YAAa,GACnB,CAACN,EAAKO,aAAc,GACpB,CAACP,EAAKQ,MAAO,GAGjBx9C,KAAKo1C,cAAe,EACpBp1C,KAAKg+C,QAAQlsC,GAENpQ,sBACP,OAAOG,EAASy9C,QAGpBb,UACI,OAAOz+C,KAAK8R,KAGhBksC,QAAQlsC,GAIJ,OAHA9R,KAAK8R,KAAuB,iBAATA,EAAoB5P,GAAQ+7C,WAAWnsC,GAAQA,EAElE9R,KAAKu5B,SAASv5B,KAAKsQ,QAAQ2sC,OAAOj9C,KAAK8R,OAChC9R,KAIXi3C,qBAAqBC,GAEjB,OAAOl3C,KAGXs3C,YAEI,OADAt3C,KAAKu3C,cAAe,EACbv3C,KAGX8V,OACI,MAAMggB,EAAM91B,KAAK6V,gBA1DzB,YAAc9R,GACNu7C,GAAQld,OACRv+B,EAAI,mBAAoBE,GAyDxB,CAAE,0BAA2B/D,KAAK83C,gBAClC93C,KAAK6U,WAAWihB,GAChB,MAAMypB,EAAU,IAAIr9C,GAAQlC,KAAK8R,MACjCytC,EAAQr2C,KAAKlJ,KAAK83C,gBAClByH,EAAQzpC,KAAK9V,KAAKi4B,cAClBj4B,KAAK0V,aAAaogB,GAClB91B,KAAKmW,eAIbmpC,GAAQld,OAAQ,ECpET,MAAMod,WAAahnB,EAkCtB/2B,YAAYsD,EAAM06C,GAAU,EAAOC,GAC/Bn8C,QACAvD,KAAK+E,KAAOA,EACZ/E,KAAKq0B,QAAU,EACfr0B,KAAKy/C,QAAUA,EACfz/C,KAAK2/C,IAAM,GACX3/C,KAAKwX,YACLxX,KAAKqiC,eAAiB,CAClBud,WAAY,IACZC,WAAY,UACZC,WAAY,EACZC,cAAe,GAEfL,EACA1/C,KAAK0/C,OAASA,GAId1/C,KAAK0/C,OAAS,CAAC,CAAE5tC,KAAM0tC,GAAKjW,GAAIxkC,KAAM/E,KAAK+E,OACvC/E,KAAKy/C,SACLz/C,KAAK0/C,OAAOlrC,KAAK,CAAE1C,KAAM0tC,GAAKhW,KAAMzkC,KAAM,MAElD/E,KAAKggD,cAEEt+C,sBACP,OAAOG,EAAS29C,KAETjW,gBACP,OAAO,EAEAC,kBACP,OAAO,EAGXjkC,cAAc06C,EAAOtd,GACjB,IAAKsd,GAA0B,IAAjBA,EAAMr6C,OAChB,OAAO,EACX,IAAIs6C,EAAa,EAEjB,IAAK,IAAI33C,EAAI,EAAGA,EAAI03C,EAAMr6C,SAAU2C,EAAG,CACnC,MAAMglB,EAAO0yB,EAAM13C,GACbkxB,EAAOlM,EAAKmM,oBAClB,GAAIz2B,EAAUw2B,GAAO,CACjB,MAAM0mB,EAAY1mB,EAAKgW,cAAgB,EACnC9M,EAAM+M,cAAgByQ,IACtBxd,EAAM+M,cAAgByQ,GAG9B5yB,EAAK6J,UAAU8oB,GACfA,EAAa3yB,EAAKkC,WAClBlC,EAAK8M,YAAYsI,EAAM+M,eAI3B,OAFA/M,EAAMoN,aAAemQ,EACrBvd,EAAM+M,eAAiB,GAChB,EAGXtY,UAAUh2B,GAGN,OAFApB,KAAKq0B,QAAUjzB,EACfpB,KAAKggD,cACEhgD,KAEXogD,OAAOh/C,GAEH,OADApB,KAAK2/C,IAAMv+C,EACJpB,KAGXqgD,UACI,OAAOrgD,KAAK+E,KAEhBu7C,gBAEI,OADsB9U,GAAckD,OAAO1uC,KAAK8W,UAC3By2B,UAGzByS,cACI,MAAMvR,EAAgBjD,GAAckD,OAAO1uC,KAAK8W,UAIhD,IAAIypC,EAAa,EACjB,IAAK,IAAIh4C,EAAI,EAAGA,EAAIvI,KAAK0/C,OAAO95C,SAAU2C,EAAG,CACzC,MAAMglB,EAAOvtB,KAAK0/C,OAAOn3C,GACzB,QAAmB3E,IAAf2pB,EAAKjjB,MACLi2C,GAAchzB,EAAKjjB,UAElB,CACD,MAAMk2C,EAAmBjzB,EAAKzb,OAAS0tC,GAAKjW,GAAKvpC,KAAKqiC,eAAeyd,WAAa9/C,KAAKqiC,eAAe0d,cACtGxyB,EAAKjjB,MAAQrF,KAAK2E,IAAI42C,GAXTz7C,EAWuCwoB,EAAKxoB,KAVtD0pC,EAAcb,oBAAoB7oC,KAU6B,EAClEwoB,EAAKkzB,WAAalzB,EAAKjjB,MAAQ,EAC/Bi2C,GAAchzB,EAAKjjB,OAbP,IAACvF,EAiBrB,OADA/E,KAAKu5B,SAASgnB,EAAavgD,KAAKq0B,SACzBr0B,KAGX8V,OACI,IAAIlI,EACJ,MAAMkoB,EAAM91B,KAAK6V,eACX4jB,EAAOz5B,KAAK05B,oBAClB15B,KAAKmW,cACL,MAAMiyB,EAAQ3O,EAAK4O,mBAAmB7P,EAASE,SAASY,MAAOt5B,KAAKiS,OACpEm2B,EAAMzkC,GAAK,EACXykC,EAAM1/B,GAAK,GACX,MAAM2rB,EAAUr0B,KAAKq0B,QAEfuc,EADQnX,EAAKxB,aACGyL,yBAChBgd,EAAUjnB,EAAKsX,QAAQC,QAAO,CAACvsC,EAAGC,IAAOD,EAAIC,EAAID,EAAIC,IAErDi8C,EAAcvY,EAAM1/B,IAAM1I,KAAKy4B,UAAY,GAAKmY,EAAUxI,EAAM1/B,EAAIg4C,GAAW,EAC/EE,EAAexY,EAAM1/B,IAAM1I,KAAKy4B,UAAY,GAAKmY,EAAUxI,EAAM1/B,EAAIg4C,GAAW,EAChFG,EAAa,CAACl9C,EAAG+E,EAAG4B,EAAOC,KAC7B,MAAMu2C,EAAOn9C,EAAI2G,EACXy2C,EAAOr4C,EACbotB,EAAI/gB,OACJ+gB,EAAIQ,YACJR,EAAIrgB,aAAazV,KAAKqiC,eAAeud,YACrC9pB,EAAIvgB,eAAevV,KAAKqiC,eAAewd,YACvC/pB,EAAIzgB,aAAarV,KAAKqiC,eAAewd,YACrC/pB,EAAIS,OAAO5yB,EAAG+E,GACdotB,EAAIW,iBAAiBqqB,EAAMC,EAAMp9C,EAAI2G,EAAOC,GAC5CurB,EAAIrH,SACJqH,EAAIngB,WAEFqrC,EAAgB,CAACr9C,EAAG+E,EAAG4B,EAAOC,KAChCurB,EAAI/gB,OACJ+gB,EAAIQ,YACJR,EAAIrgB,aAAazV,KAAKqiC,eAAeud,YACrC9pB,EAAIvgB,eAAevV,KAAKqiC,eAAewd,YACvC/pB,EAAIzgB,aAAarV,KAAKqiC,eAAewd,YACrC/pB,EAAIS,OAAO5yB,EAAG4G,GACdurB,EAAIW,iBAAiB9yB,EAAI2G,EAAOC,EAAQ5G,EAAI2G,EAAO5B,GACnDotB,EAAIrH,SACJqH,EAAIngB,WAEFsrC,EAAkB,CAACt9C,EAAG+E,EAAGk4B,KAC3B,MACMsgB,EAAQx4C,EADA,EACYk4B,EAC1B9K,EAAIQ,YACJR,EAAIS,OAAO5yB,EAAG+E,GACdotB,EAAIU,OAAO7yB,EAJG,EAIQu9C,GACtBprB,EAAIU,OAAO7yB,EALG,EAKQu9C,GACtBprB,EAAI4e,YACJ5e,EAAIa,QAEFwqB,EAAa,CAACx9C,EAAGoB,KACnB+wB,EAAI/gB,OACJ+gB,EAAIlf,QAAQ5W,KAAK8W,UACjB,MAAMsqC,EAAWz9C,EAAImyB,EAAI0a,YAAYzrC,GAAMuF,MAAQ,EACnDwrB,EAAIyb,SAASxsC,EAAMq8C,EAAUR,GAC7B9qB,EAAIngB,WAER,IAAI0rC,EACAC,EAAuB,EACvBC,EAAmB,EACvB,GAAwB,QAAnB3zC,EAAK5N,KAAK2/C,WAAwB,IAAP/xC,OAAgB,EAASA,EAAGhI,OAAQ,CAEhEu7C,EADiB1nB,EAAK4O,mBAAmB7P,EAASE,SAASK,OAAQ/4B,KAAKiS,OACpDtO,EAAG3D,KAAK2/C,KAEhC,IAAK,IAAIp3C,EAAI,EAAGA,EAAIvI,KAAK0/C,OAAO95C,SAAU2C,EAAG,CACzC,MAAMglB,EAAOvtB,KAAK0/C,OAAOn3C,GACpBglB,EAAKkzB,aACNlzB,EAAKkzB,WAAa,GACZ,IAANl4C,IACAglB,EAAKkzB,YAAcpsB,GACvBktB,EAAmBh0B,EAAKkzB,WAAaa,GAA8B,IAAN/4C,EAAU8rB,EAAU,GAC7E9G,EAAKzb,OAAS0tC,GAAKjW,KACf8X,GAAaA,EAAUvvC,OAAS0tC,GAAKjW,IACrC0X,EAAgB7Y,EAAMzkC,EAAGg9C,EAAa,GAE1CE,EAAWzY,EAAMzkC,EAAGykC,EAAM1/B,EAAG64C,EAAkBZ,IAE/CpzB,EAAKzb,OAAS0tC,GAAKhW,OACf6X,GAAaA,EAAUvvC,OAAS0tC,GAAKjW,IACrCyX,EAAc5Y,EAAMzkC,EAAGykC,EAAM1/B,EAAG64C,EAAkBZ,GAElDU,GAAaA,EAAUvvC,OAAS0tC,GAAKhW,OACrCyX,EAAgB7Y,EAAMzkC,EAAGykC,EAAM1/B,GAAI,GACnCs4C,EAAc5Y,EAAMzkC,EAAGykC,EAAM1/B,EAAG64C,EAAkBZ,IAEjDU,IACDE,EAAmBh0B,EAAKkzB,WACxBO,EAAc5Y,EAAMzkC,EAAGykC,EAAM1/B,EAAG64C,EAAkBZ,KAG1DQ,EAAW/Y,EAAMzkC,EAAI49C,EAAkBh0B,EAAKxoB,MAC5Cs8C,EAAY9zB,EACZ+zB,EAAuB/zB,EAAKkzB,WAC5BY,EAAU19C,EAAIykC,EAAMzkC,EACpBykC,EAAMzkC,GAAK49C,EAEf,IAAKF,GAA4Bz9C,MAAfy9C,EAAU19C,EACxB,MAAM,IAAIR,EAAa,oBAAqB,mBAG5Ck+C,EAAUvvC,OAAS0tC,GAAKjW,GACxB0X,EAAgBI,EAAU19C,EAAI49C,EAAkBZ,EAAa,GAExDU,EAAUvvC,OAAS0tC,GAAKhW,MAC7ByX,EAAgBI,EAAU19C,EAAI49C,EAAkBnZ,EAAM1/B,GAAI,IF/NtE,SAAS,MAAK3E,GACNy9C,GAAYpf,OACZv+B,EAAI,uBAAwBE,GEkOpCy7C,GAAKxoC,UAAY3W,OAAOgX,OAAO,GAAIzD,EAAQoD,WF/N3C,SAAWmlC,GACPA,EAA6BA,EAAmC,KAAI,GAAK,OACzEA,EAA6BA,EAAqC,OAAI,GAAK,SAC3EA,EAA6BA,EAAoC,MAAI,GAAK,QAC1EA,EAA6BA,EAA0C,YAAI,GAAK,cAJpF,CAKGA,KAAiCA,GAA+B,KAEnE,SAAWC,GACPA,EAA2BA,EAAgC,IAAI,GAAK,MACpEA,EAA2BA,EAAmC,OAAI,GAAK,SAF3E,CAGGA,KAA+BA,GAA6B,KAE/D,SAAWC,GACPA,EAAYA,EAAmB,MAAI,GAAK,QACxCA,EAAYA,EAAkB,KAAI,GAAK,OACvCA,EAAYA,EAAkB,KAAI,GAAK,OAH3C,CAIGA,KAAgBA,GAAc,KAEjC,SAAWC,GACPA,EAAgBA,EAAsB,KAAI,GAAK,OAC/CA,EAAgBA,EAA2B,UAAI,GAAK,YACpDA,EAAgBA,EAA6B,YAAI,GAAK,cAH1D,CAIGA,KAAoBA,GAAkB,KAKlC,MAAMkF,WAAoBhpB,EAC7B/2B,cACI8B,QACAvD,KAAKyhD,aAAe,GACpBzhD,KAAK0hD,WAAavF,GAA6BxjB,KAC/C34B,KAAK2hD,SAAWvF,GAA2BnO,IAC3CjuC,KAAK4hD,YAAa,EAClB5hD,KAAK6hD,aAAc,EACnB7hD,KAAKwX,YAEE9V,sBACP,OAAOG,EAAS2/C,YAETM,2BACP,OAAON,GAAYlxC,QAAQyxC,OAAOD,cAG3BE,0BAAeC,GACtBT,GAAYU,SAAWD,EAEhBD,4BACP,OAAOR,GAAYU,SAGvB38C,yBAAyB48C,GACrB,GAAIX,GAAYlxC,QAAQ6xC,GACpB,OAAOX,GAAYlxC,QAAQ6xC,GAIxBC,qCACP,OAAOv0B,EAAOgV,mBAAmBhyB,gBAE1BwxC,kCACP,OAAOb,GAAYlxC,QAAQyxC,OAAOnR,QAAU4Q,GAAYY,wBAE5D78C,wBAAwB4pB,GACpB,MAAMmzB,EAASd,GAAYe,kBAAkBpzB,EAAM9rB,MACnD,OAAKi/C,EAGEA,EAAO7U,aAAe+T,GAAYY,wBAF9B,IAIf78C,yBAAyB4pB,GACrB,MAAMmzB,EAASd,GAAYe,kBAAkBpzB,EAAM9rB,MACnD,OAAKi/C,EAGEA,EAAOE,QAAUhB,GAAYY,wBAFzB,EAIf78C,yBAAyB4pB,GACrB,MAAMmzB,EAASd,GAAYe,kBAAkBpzB,EAAM9rB,MACnD,OAAKi/C,GAGI,EAAIA,EAAOG,gBAAmBjB,GAAYY,wBAFxC,EAIJrW,+BACP,OAAOyV,GAAYlxC,QAAQyxC,OAAOhW,kBAAoByV,GAAYY,wBAE3DpW,6BACP,OAAOwV,GAAYlxC,QAAQyxC,OAAO/V,gBAAkBwV,GAAYY,wBAEzDM,2BACP,OAAOlB,GAAYlxC,QAAQyxC,OAAOW,cAAgBlB,GAAYY,wBAGvD9xC,qBACP,OAAOud,EAAOgV,mBAAmBlyB,aAAaK,OAAO2xC,YAE9CC,8BAIP,OAAOpB,GAAYlxC,QAAQyxC,OAAOa,iBAE3BC,8BACP,OAAOrB,GAAYlxC,QAAQyxC,OAAOc,iBAEtCt9C,qBAAqBzB,GACjB,YAAgCF,IAAzBE,EAAMg/C,gBAAgCh/C,EAAMg/C,iBAAmBxG,GAAgByG,YAE1Fx9C,mBAAmBzB,GACf,YAAgCF,IAAzBE,EAAMg/C,gBAAgCh/C,EAAMg/C,iBAAmBxG,GAAgB0G,UAE/EC,wBAEP,OADkBp1B,EAAOgV,mBACR5xB,aAAa,8BAMlC1L,cAAc29C,EAASvgB,GACnB,IAAI/0B,EACJ,IAAKs1C,GAA8B,IAAnBA,EAAQt9C,OACpB,OAAO,EACX,IAAI0E,EAAQ,EACR64C,EAAgB,EAChB/U,EAAY,EACZC,EAAa,EACbC,EAAoB,EACpBC,EAAqB,EACzB,IAAK,MAAM6U,KAAUF,EAAS,CAC1B,MAAMx1C,EAAWH,EAAKqK,wBAAmD,QAA1BhK,EAAKw1C,EAAOtsC,gBAA6B,IAAPlJ,OAAgB,EAASA,EAAGO,MACvGk1C,EAAU91C,EAAK+1C,UAAU51C,EAAU,KACnC61C,EAAqB,EAAVF,EACX5pB,EAAO2pB,EAAO1pB,oBACpB,IAAI8pB,EAAc,EACdC,EAAa,EACbC,GAAS,EACb,IAAK,IAAIC,EAAI,EAAGA,EAAIP,EAAO3B,aAAa77C,SAAU+9C,EAAG,CACjD,MAAM7/C,EAAQs/C,EAAO3B,aAAakC,GAC5BC,EAAMpC,GAAYqC,cAAc//C,GAChCggD,EAAMtC,GAAYuC,YAAYjgD,GAC9BkgD,EAAgBJ,GAAOE,EAAMtC,GAAYM,cAAgB,EACzDmC,EAAMngD,EAAMogD,aAAe7H,GAAY8H,MAAQZ,EAAWS,EAAgBX,EAAUW,GAGtFJ,GAAOE,KACPL,EAAa,GAIjB,MAAM/1C,EAAW01C,EAAO3U,cAAc52B,iBAChCusC,EAAmB12C,EAAWs2C,EAmBpC,GAlBIlgD,EAAMogD,aAAe7H,GAAY8H,YAAyBvgD,IAAhBE,EAAMqrB,OAChDrrB,EAAMwG,MAAQk3C,GAAY6C,iBAAiBvgD,EAAMqrB,OAASi1B,EAC1DtgD,EAAM8zB,QAAU4pB,GAAY8C,kBAAkBxgD,EAAMqrB,OAASi1B,EAC7DtgD,EAAM4zB,QAAU8pB,GAAY+C,kBAAkBzgD,EAAMqrB,OAASi1B,EAC7DtgD,EAAMqrB,MAAMD,MAAQprB,EAAMqrB,MAAMD,MAAQ+0B,GAEnCngD,EAAMogD,aAAe7H,GAAYmI,OACtC1gD,EAAMwG,MAAQxG,EAAMwG,MAAQ85C,EAC5BtgD,EAAM8zB,QAAUwrB,EAAOqB,kBAAkB3gD,EAAMiB,MAAQk/C,GAEvDngD,EAAMogD,aAAe7H,GAAY8H,YACjBvgD,IAAhBE,EAAMqrB,OACNrrB,EAAMqrB,MAAM9rB,OAASm+C,GAAYxwC,OAAO0zC,KAAKrhD,OAC7CogD,EAAa,GAEjB3/C,EAAMwG,OAASk3C,GAAYa,qBAAuB30C,EAAWs2C,EAGzDJ,GAAOD,EAAI,EAAG,CACd,MAAMgB,EAAOvB,EAAO3B,aAAakC,EAAI,GAChCnC,GAAYqC,cAAcc,KAC3BxB,EAAgB74C,GAGpBw5C,GAAOX,EAAgB,IACvBO,GAAS,EAET5/C,EAAM4zB,OAAS5zB,EAAM4zB,QAAUyrB,EAAgB74C,GAC/CA,EAAQ64C,EACRA,EAAgB,EAEhBC,EAAOwB,kBAAiB,IAEvBhB,GAAQE,IACTX,EAAgB,GAEpBr/C,EAAM4/C,OAASA,EACfp5C,GAASxG,EAAMwG,MACfk5C,EAAcl5C,EAalB,GAVA84C,EAAOyB,2BACPzB,EAAO0B,2BACH1B,EAAO2B,gBAAkB3I,GAA2BnO,KACpDmV,EAAO/oB,YAAYsI,EAAM+M,eACzB/M,EAAM+M,eAAiB+T,IAGvBL,EAAO/oB,YAAYsI,EAAMlK,UAAY,GACrCkK,EAAMlK,WAAagrB,EAAa,GAEhCL,EAAO4B,kBAAoBjiD,EAAgB02B,GAAO,CAClD,MAAMmV,EAAanV,EAAKoV,WAAWpf,WAC/B2zB,EAAO6B,kBAAoB9I,GAA6BxjB,MACxD2V,EAAoBrpC,KAAK2E,IAAIglC,EAAYN,GACzCF,EAAYnpC,KAAK2E,IAAIwkC,EAAWoV,GAAehC,GAAYyB,YAEtDG,EAAO6B,kBAAoB9I,GAA6B7iB,OAC7DiV,EAAqBtpC,KAAK2E,IAAIglC,EAAYL,GAC1CF,EAAappC,KAAK2E,IAAIykC,EAAYmV,KAGlCpV,EAAYnpC,KAAK2E,IAAIwkC,EAAWoV,EAAc,GAAKhC,GAAYyB,WAC/D5U,EAAappC,KAAK2E,IAAIykC,EAAYmV,EAAc,GAChDlV,EAAoBrpC,KAAK2E,IAAIglC,EAAa,EAAGN,GAC7CC,EAAqBtpC,KAAK2E,IAAIglC,EAAa,EAAGL,IAGtDjkC,EAAQ,EAEZ,MAAMwlC,EAAe7qC,KAAKulC,IAAIvlC,KAAK2E,IAAIykC,EAAaE,EAAoB,GAAItpC,KAAK2E,IAAIykC,EAAa1L,EAAMoN,YAAa,IAC/GC,EAAc/qC,KAAKulC,IAAIvlC,KAAK2E,IAAIwkC,EAAYE,EAAmB,GAAIrpC,KAAK2E,IAAIwkC,EAAYzL,EAAMK,WAAY,IAGhH,OAFAL,EAAMK,YAAcgN,EACpBrN,EAAMoN,aAAeD,GACd,EAOA94B,uBACP,IAAIzI,EAAS,4BAKb,MAJ4C,aAAxCsf,EAAOgV,mBAAmBpyB,YAE1BlC,EAAS,qCAEN,CACHA,OAAAA,EACAJ,KAAM,GACNC,OAAQjC,EAAWsC,OACnBJ,MAAOjC,EAAUqC,QAMrBs9B,wBACA,OAAOyV,GAAYzV,kBAAoB/rC,KAAKyuC,cAAc52B,iBAE1Dm0B,sBACA,OAAOwV,GAAYxV,gBAAkBhsC,KAAKyuC,cAAc52B,iBAE5DqtC,eAAe9jD,GAEX,OADApB,KAAK6hD,YAAczgD,EACZpB,KAEXglD,iBACI,OAAOhlD,KAAK6hD,YAEhBiD,2BACI,MAAMK,EAAWnlD,KAAKyhD,aAAa2D,WAAU,EAAGlB,WAAAA,EAAY/0B,MAAAA,KAAY+0B,IAAe7H,GAAY8H,YAAmBvgD,IAAVurB,GAAsC,iCAAfA,EAAM9rB,OACzI,GAAI8hD,EAAW,EACX,OAEJ,MACME,EADMrlD,KAAKyhD,aAAa0D,GACb76C,MAAQ,EACnBg7C,EAAO,IAAOtlD,KAAKyuC,cAAc52B,iBACvC,IAAI0tC,EAAW,EACf,KAAqBA,EAAWJ,IAAYI,EAAU,CAClD,MAAMnC,EAASpjD,KAAKyhD,aAAa8D,GACjCnC,EAAO1rB,OAAS0rB,EAAO1rB,OAAS2tB,EAChCjC,EAAOxrB,OAASwrB,EAAOxrB,OAAS0tB,EAEpC,IAAKC,EAAWJ,EAAW,EAAGI,EAAWvlD,KAAKyhD,aAAa77C,SAAU2/C,EAAU,CAC3E,MAAMnC,EAASpjD,KAAKyhD,aAAa8D,GACjCnC,EAAO1rB,OAAS0rB,EAAO1rB,OAAS2tB,EAChCjC,EAAOxrB,OAASwrB,EAAOxrB,OAAS0tB,GAGxCT,2BACI,IAAIW,EAAQ,EACZ,IAAK,IAAI7B,EAAI,EAAGA,EAAI3jD,KAAKyhD,aAAa77C,SAAU+9C,EAAG,CAC/C,MAAMP,EAASpjD,KAAKyhD,aAAakC,GACjC6B,GAASxlD,KAAKylD,qBAAqB9B,GACnCP,EAAO1rB,QAAU8tB,GAIzBC,qBAAqB9B,GACjB,IAAK3jD,KAAK4hD,WACN,OAAO,EAEX,MAAM8D,EAAa1lD,KAAKyhD,aAAakC,GAC/BgC,EAAahC,EAAI,EAAI3jD,KAAKyhD,aAAakC,EAAI,QAAK//C,EACtD,IAAIgiD,EAAa,EAEbF,EAAWxB,aAAe7H,GAAY8H,YACjBvgD,IAArB8hD,EAAWv2B,OACXu2B,EAAWv2B,MAAM9rB,OAASm+C,GAAYxwC,OAAO0zC,KAAKrhD,OAClDuiD,GAAcF,EAAWv2B,MAAM7e,QAAQ+jB,cAExBzwB,IAAf+hD,GACAA,EAAWzB,aAAe7H,GAAY8H,YACjBvgD,IAArB+hD,EAAWx2B,OACXw2B,EAAWx2B,MAAM9rB,OAASm+C,GAAYxwC,OAAO0zC,KAAKrhD,OAClDuiD,GAAcD,EAAWx2B,MAAM7e,QAAQ+jB,SAG3C,IAAIwxB,GAAe,EACfC,GAAe,OACAliD,IAAf+hD,GAA4BA,EAAWzB,aAAe7H,GAAYmI,OAClEqB,EAAerE,GAAYqB,iBAAiBkD,MAAMC,GAAOA,IAAOL,EAAW5gD,KAAK4gD,EAAW5gD,KAAKa,OAAS,KACzGkgD,EAAetE,GAAYoB,iBAAiBmD,MAAMC,GAAOA,IAAOL,EAAW5gD,KAAK4gD,EAAW5gD,KAAKa,OAAS,MAE7G,MAAMqgD,EAAsBzE,GAAYkB,cAAgB1iD,KAAKyuC,cAAc52B,iBAc3E,OAXIguC,GAAgBH,EAAW5C,iBAAmBxG,GAAgByG,cAC9D6C,GAAcK,GAEdH,GAAgBJ,EAAWxB,aAAe7H,GAAYmI,OAClDkB,EAAW3gD,KAAK,IAAM,KAAO2gD,EAAW3gD,KAAK,IAAM,MACnD6gD,GAAcK,EAAsB,GAEpCzE,GAAYqB,iBAAiBkD,MAAMC,GAAOA,KAAQL,MAAAA,OAA+C,EAASA,EAAW5gD,KAAK4gD,EAAW5gD,KAAKa,OAAS,QACnJggD,GAAcK,EAAsB,IAGrCL,EAOXM,eAAej4B,EAAS,IACpB,IAAIrgB,EAAIkF,EAAIqzC,EACZ,MAAMjC,EAA0C,QAA5Bt2C,EAAKqgB,EAAOi2B,kBAA+B,IAAPt2C,EAAgBA,EAAKyuC,GAAYmI,KACnF4B,EAAc,CAChBrhD,KAA6B,QAAtB+N,EAAKmb,EAAOlpB,YAAyB,IAAP+N,EAAgBA,EAAK,GAC1DoxC,WAAAA,EACApB,eAAiD,QAAhCqD,EAAKl4B,EAAO60B,sBAAmC,IAAPqD,EAAgBA,EAAK7J,GAAgBkB,KAC9F9lB,OAAQ,EACRE,OAAQ,EACR8rB,QAAQ,EACRp5C,MAAO,GAIX,GAAI45C,IAAe7H,GAAY8H,OAAiC,iBAAjBl2B,EAAOkB,MAAoB,CACtE,MAAMk3B,EAAY7E,GAAYxwC,OAAOid,EAAOkB,OACtCm3B,EAAc,GACpBF,EAAYj3B,MAAQ,IAAIG,EAAM+2B,EAAUhjD,KAAMijD,EAAa,CAAEhlD,SAAU,qBAMlE4iD,IAAe7H,GAAYmI,KAChC4B,EAAY97C,MAAQtK,KAAKyuC,cAAcf,oBAAoB0Y,EAAYrhD,MAElEm/C,IAAe7H,GAAYpnB,OAChCmxB,EAAY97C,MAAQ2jB,EAAO3jB,OAE/B,OAAO87C,EAIXG,eAAeC,GAEX,OADAxmD,KAAKyhD,aAAajtC,KAAKxU,KAAKkmD,eAAeM,IACpCxmD,KAKXymD,QAAQ1hD,EAAMyhD,EAAa,IACvB,MAAMtC,EAAa7H,GAAYmI,KAC/B,OAAOxkD,KAAKumD,eAAelmD,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAImvC,GAAa,CAAEzhD,KAAAA,EAAMm/C,WAAAA,KAGpFwC,mBAAmB3hD,GACf,MAAMm/C,EAAa7H,GAAYmI,KACzB1B,EAAiBxG,GAAgByG,YACvC,OAAO/iD,KAAKumD,eAAe,CAAExhD,KAAAA,EAAMm/C,WAAAA,EAAYpB,eAAAA,IAGnD6D,iBAAiB5hD,GACb,MAAMm/C,EAAa7H,GAAYmI,KACzB1B,EAAiBxG,GAAgB0G,UACvC,OAAOhjD,KAAKumD,eAAe,CAAExhD,KAAAA,EAAMm/C,WAAAA,EAAYpB,eAAAA,IAGnD8D,oBAAoBz3B,GAChB,MAAM+0B,EAAa7H,GAAY8H,MACzBrB,EAAiBxG,GAAgByG,YACvC,OAAO/iD,KAAKumD,eAAe,CAAEp3B,MAAAA,EAAO+0B,WAAAA,EAAYpB,eAAAA,IAIpD+D,SAAS13B,EAAOlB,EAAS,IACrB,MAAMi2B,EAAa7H,GAAY8H,MAC/B,OAAOnkD,KAAKumD,eAAelmD,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAI4W,GAAS,CAAEkB,MAAAA,EAAO+0B,WAAAA,KAOjF4C,eAAe/hD,EAAMkpB,EAAS,IAC1B,IAAI3lB,EAAM,GACV,IAAK,IAAIC,EAAI,EAAGA,EAAIxD,EAAKa,SAAU2C,EAAG,CAClC,MAAMw+C,EAAOhiD,EAAKwD,GACdi5C,GAAYxwC,OAAO+1C,IACfz+C,EAAI1C,OAAS,IACb5F,KAAKymD,QAAQn+C,EAAK2lB,GAClB3lB,EAAM,IAEVtI,KAAK6mD,SAASE,EAAM94B,IAIpB3lB,GAAOy+C,EAMf,OAHIz+C,EAAI1C,OAAS,GACb5F,KAAKymD,QAAQn+C,EAAK2lB,GAEfjuB,KAIXgnD,QAAQ18C,EAAO2jB,EAAS,IACpB,MAAMi2B,EAAa7H,GAAYpnB,KAC/B,OAAOj1B,KAAKumD,eAAelmD,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAI4W,GAAS,CAAEi2B,WAAAA,EAAY55C,MAAAA,KActFsM,QAAQxO,EAAG+F,EAAMC,EAAQC,GAGrB,OAFA9K,MAAMqT,QAAQxO,EAAG+F,EAAMC,EAAQC,GAC/BrO,KAAKyuC,cAAgBjD,GAAckD,OAAO1uC,KAAK8W,UACxC9W,KAEX4kD,iBAAiB3C,GAEb,OADAjiD,KAAK4hD,WAAaK,EACXjiD,KAGXinD,YAAYC,GAER,OADAlnD,KAAK2hD,SAAyB,iBAAPuF,EAAkB1F,GAAYrR,sBAAsB+W,GAAMA,EAC1ElnD,KAEX+kD,cACI,OAAO/kD,KAAK2hD,SAGhBwF,cAAcC,GAEV,OADApnD,KAAK0hD,WAA2B,iBAAP0F,EAAkB5F,GAAYlR,wBAAwB8W,GAAMA,EAC9EpnD,KAEXilD,gBACI,OAAOjlD,KAAK0hD,WAEhBjyB,WACI,IAAInlB,EAAQ,EAIZ,OAHAtK,KAAKyhD,aAAa9sC,SAASyuC,IACvB94C,GAAS84C,EAAOM,OAAS,EAAIN,EAAO94C,SAEjCA,EAEXm6C,kBAAkB1/C,GACd,IAAI6I,EACJ,IAAI2K,EAAM,EACNhQ,EAAI,EACR,IAAKA,EAAI,EAAGA,EAAIxD,EAAKa,SAAU2C,EAAG,CAC9B,MAAM+H,EAAUtQ,KAAKyuC,cAAcpB,gBAAgBtoC,EAAKwD,IACxD,GAAI+H,EAAS,CACT,MAAM+2C,EAAgC,QAAxBz5C,EAAK0C,EAAQg3C,aAA0B,IAAP15C,EAAgBA,EAAK,EACnE2K,EAAM8uC,EAAO9uC,EAAM8uC,EAAO9uC,GAGlC,MAAMzH,EAAa9Q,KAAKyuC,cAAc59B,gBACtC,OAAOtI,EAAI,EAAUgQ,EAAMzH,GAAX,EAAyB,EAG7CgF,OACI,MAAMggB,EAAM91B,KAAK6V,eACX4jB,EAAOz5B,KAAK05B,oBAClB15B,KAAKmW,cAEL2f,EAAI/gB,OACJ+gB,EAAIuV,UAAU,cAAerrC,KAAK0S,aAAa,OAC/C,MAAM01B,EAAQ3O,EAAK4O,mBAAmB7P,EAASE,SAASO,MAAOj5B,KAAKiS,OAEpE,IAAIvJ,EADJotB,EAAIlf,QAAQ5W,KAAK8W,UAIjB,MAAMi4B,EAAUtV,EAAKsV,UACf7X,EAAQuC,EAAKxB,aACnB,GAAIj4B,KAAK2hD,WAAavF,GAA2BzM,QAG7C,GADAjnC,EAAIwuB,EAAMia,kBAAkBnxC,KAAKy4B,UAAY5K,EAAOiD,yBAChDie,EAAS,CACT,MAAM4B,EAAWlX,EAAKqX,YAAY3G,aAC5ByG,EAAU1Z,EAAMwM,yBAChB6jB,EAAwC,IAA5B9tB,EAAKuV,mBAA2B2B,EAAShG,MAAQgG,EAASjG,KAC5EhiC,EAAIzD,KAAK2E,IAAIlB,EAAG6+C,EAAY3W,GAAW5wC,KAAKy4B,UAAY,UAM5D,GADA/vB,EAAIzD,KAAKulC,IAAItT,EAAMga,eAAelxC,KAAKy4B,WAAYgB,EAAKsX,QAAQ,GAAK,IACjEhC,EAAS,CACT,MAAM4B,EAAWlX,EAAKqX,YAAY3G,aAC5ByG,EAAU1Z,EAAMwM,yBACtBh7B,EAAIzD,KAAKulC,IAAI9hC,EAAGioC,EAASjG,KAAO,EAAIkG,EAAU5wC,KAAKy4B,WAG3D,IAAI90B,EAAIykC,EAAMzkC,EAEVA,EADA3D,KAAK0hD,aAAevF,GAA6BxjB,KAC7CyP,EAAMzkC,EAEL3D,KAAK0hD,aAAevF,GAA6B7iB,MAClD8O,EAAMzkC,EAAI3D,KAAKyvB,WAEdzvB,KAAK0hD,aAAevF,GAA6BpjB,OAClDqP,EAAMzkC,EAAI3D,KAAKyvB,WAAa,EAI5BgK,EAAKiX,WAAa1wC,KAAKyvB,WAAa,EAE5C,GAAE,0BAA2BzvB,KAAKyuC,cAAe9qC,EAAG+E,GACpD1I,KAAKyhD,aAAa9sC,SAASyuC,IACvB,MAAMoE,EAAUhG,GAAYqC,cAAcT,GACpCqE,EAAQjG,GAAYuC,YAAYX,GACtC,IAAIsE,EAAOh/C,EAUX,GATA,GAAE,aAAc06C,EAAO1rB,OAAQ0rB,EAAOxrB,QACtC,GAAE,gBAAiB8vB,GACfF,IACAE,GAAQ1nD,KAAK+rC,mBAEb0b,IACAC,GAAQ1nD,KAAKgsC,iBAEjB,GAAE,gBAAiB0b,GACftE,EAAOc,aAAe7H,GAAYmI,KAAM,CACxC,IAAIgD,GAAWC,KACX3xB,EAAI/gB,OACA/U,KAAK8W,UAAU,CACf,MAAM,OAAEvI,EAAM,KAAEJ,EAAI,OAAEC,EAAM,MAAEC,GAAUrO,KAAK8W,SACvC6wC,EAAkBp6C,EAAK+1C,UAAUn1C,EAAMqzC,GAAYM,eACzDhsB,EAAIlf,QAAQrI,EAAQo5C,EAAiBv5C,EAAQC,GAOrD,GAAE,mBAAoB+0C,EAAOr+C,KAAMpB,EAAIy/C,EAAO1rB,OAAQgwB,EAAOtE,EAAOxrB,QACpE9B,EAAIyb,SAAS6R,EAAOr+C,KAAMpB,EAAIy/C,EAAO1rB,OAAQgwB,EAAOtE,EAAOxrB,SACvD4vB,GAAWC,IACX3xB,EAAIngB,eAGHytC,EAAOc,aAAe7H,GAAY8H,OAASf,EAAOj0B,OACvDu4B,GAAQtE,EAAOxrB,OACf,GAAE,oBAAqBwrB,EAAOj0B,MAAM9rB,KAAMM,EAAIy/C,EAAO1rB,OAAQgwB,GAC7DtE,EAAOj0B,MAAM2I,OAAOhC,EAAKnyB,EAAIy/C,EAAO1rB,OAAQgwB,IAEvCtE,EAAOc,aAAe7H,GAAYpnB,OACvC,GAAE,oBAAqBmuB,EAAO94C,MAAO3G,EAAG+jD,GACxC5xB,EAAIQ,YACJR,EAAIrgB,aAAa,GACjBqgB,EAAIS,OAAO5yB,EAAG+E,GACdotB,EAAIU,OAAO7yB,EAAIy/C,EAAO94C,MAAOo9C,GAC7B5xB,EAAIrH,UAER9qB,GAAKy/C,EAAO94C,MACR84C,EAAOM,SACP//C,GAAKy/C,EAAO1rB,WAGpB5B,EAAIyV,aACJzV,EAAIngB,WAGZ6rC,GAAYpf,OAAQ,EAEpBof,GAAYhQ,kBAAoB2K,GAChCqF,GAAYlR,wBAA0B,CAClClX,KAAM+iB,GAA6BxjB,KACnCU,MAAO8iB,GAA6B7iB,MACpCR,OAAQqjB,GAA6BpjB,OACrC0Y,WAAY0K,GAA6BzK,aAE7C8P,GAAYlS,gBAAkB8M,GAC9BoF,GAAYrR,sBAAwB,CAChCwB,IAAKyK,GAA2BnO,IAChCjV,MAAOojB,GAA2BnO,IAClC/U,MAAOkjB,GAA2BzM,OAClCiC,OAAQwK,GAA2BzM,QAGvC6R,GAAYxwC,OAAS,CACjB42C,WAAY,CACRvkD,KAAM,kBAEVwkD,IAAK,CACDxkD,KAAM,kBAEVykD,eAAgB,CACZzkD,KAAM,sBAEV,IAAK,CACDA,KAAM,iBAEV0kD,UAAW,CACP1kD,KAAM,iBAEV2kD,aAAc,CACV3kD,KAAM,oBAEVw6B,MAAO,CACHx6B,KAAM,aAEV,IAAK,CACDA,KAAM,aAEV,IAAK,CACDA,KAAM,sBAEV4kD,UAAW,CACP5kD,KAAM,sBAEV,IAAK,CACDA,KAAM,uBAEV6kD,WAAY,CACR7kD,KAAM,uBAEV8kD,YAAa,CACT9kD,KAAM,uBAEV+kD,aAAc,CACV/kD,KAAM,wBAEVglD,cAAe,CACXhlD,KAAM,0BAEVilD,eAAgB,CACZjlD,KAAM,2BAEV,IAAK,CACDA,KAAM,gCAEVqhD,KAAM,CACFrhD,KAAM,gCAEV,IAAK,CACDA,KAAM,mBAEVqB,EAAG,CACCrB,KAAM,mBAGdm+C,GAAY+G,YAAclM,GAC1BmF,GAAYgH,gBAAkBlM,GAE9BkF,GAAYU,UAAW,EG3rBhB,MAAM9/C,WAAYo2B,EACrB/2B,cACI8B,QACAvD,KAAKszB,SAAWkF,EAASE,SAASY,MAClCt5B,KAAKyoD,OAAS,EACdzoD,KAAKu5B,SAAS,GACdv5B,KAAKmzB,WAAa,EAEXzxB,sBACP,OAAOG,EAASO,IAGpBmD,eAAek0B,GACX,OAAOA,EAAKohB,mBAAmBz4C,GAAIV,UAGvC6D,sBAAsBsqB,EAAO3B,GACzB,IAAK,MAAMuL,KAAQ5J,EACf,GAAI3B,MAAAA,OAAyC,EAASA,EAAQw6B,IAC1D,IAAK,IAAIngD,EAAI,EAAGA,EAAIkxB,EAAKtmB,KAAKvN,OAAQ2C,IAAK,CACvC,MAAMogD,EAAM,IAAIvmD,GAChBumD,EAAIC,aAAanvB,EAAKtK,MAAMgE,YAC5BsG,EAAKoO,YAAY8gB,EAAKpgD,QAGzB,GAAyE3E,OAApEsqB,MAAAA,OAAyC,EAASA,EAAQjc,OAAqB,CACrF,MAAM02C,EAAM,IAAIvmD,GAChBumD,EAAIC,aAAanvB,EAAKtK,MAAMgE,YAC5BsG,EAAKoO,YAAY8gB,EAAKz6B,MAAAA,OAAyC,EAASA,EAAQjc,WAE/E,CACD,MAAM02C,EAAM,IAAIvmD,GAChBumD,EAAIC,aAAanvB,EAAKtK,MAAMgE,YAC5BsG,EAAKoO,YAAY8gB,EAAK,IAKlCpjD,cAAcq0C,EAAMjX,GAChB,MAAMoN,EAAcpN,EAAMoN,YAE1B,IAAK6J,GAAwB,IAAhBA,EAAKh0C,OACd,OAAO,EACX,MAAMijD,EAAW,GACXC,EAAgB,GACtB,IAAK,IAAIvgD,EAAI,EAAGA,EAAIqxC,EAAKh0C,SAAU2C,EAAG,CAClC,MAAMogD,EAAM/O,EAAKrxC,GACXkxB,EAAOkvB,EAAInvB,UACjB,IAAI8J,EACAx9B,EACJ,GAAIjD,EAAY42B,GAAO,CACnB,MAAMxnB,EAAQ02C,EAAI9uB,aAClByJ,EAAQ7J,EAAK8J,cAActxB,GAE3BnM,EAAQ2zB,EAAK8hB,oBAEZ,KAAIt4C,EAAUw2B,GAMf,MAAM,IAAIt2B,EAAa,WAAY,wBALnCmgC,EAAQ,CAAEt/B,KAAM,IAChB8B,EAAQiqC,EAMZ,MAAMgZ,EAAUtvB,EAAK/mB,aAAa,MAClCm2C,EAASr0C,KAAK,CAAExQ,KAAMs/B,EAAMt/B,KAAMy1B,KAAAA,EAAMsvB,QAAAA,EAASJ,IAAAA,IACjDG,EAAcC,GAAW9jD,KAAK2E,IAAIk/C,EAAcC,IAAYjjD,EAAOA,GAGvE+iD,EAAShlB,MAAK,CAACp/B,EAAGC,IAAMA,EAAEV,KAAOS,EAAET,OACnC,IAAIglD,EAAYjZ,EACZkZ,EAAU,EACVC,EAAY,KACZC,EAAY,KACZC,EAAoB,KACpBC,EAAc,EAClB,IAAK,IAAI9gD,EAAI,EAAGA,EAAIsgD,EAASjjD,SAAU2C,EAAG,CACtC,MAAM,IAAEogD,EAAG,KAAElvB,EAAI,QAAEsvB,EAAO,KAAE/kD,GAAS6kD,EAAStgD,GAE1CvE,IAASklD,GAAazvB,IAAS0vB,IAC/BH,EAAYF,EAAcC,IAEzBtvB,EAAKyN,UAAYljC,IAASklD,IACA,KAAvBjkD,KAAK4C,IAAI7D,EAAO,GAEhBqlD,EAAc,GAIdA,EAAc,GACG,MAAbF,GAAsBA,EAAUjiB,UAAyB,MAAbgiB,GAAqBA,EAAYllD,GAAS,GAIjFA,EAAOqlD,IAAgBD,IAE5BC,GAAe,IAJfA,GAAe,KASvB5vB,EAAKyN,SACLyhB,EAAIx1B,aAAek2B,EAGnBV,EAAIx1B,YAAck2B,EAEtBD,EAAoBplD,EAAOqlD,EAC3BV,EAAIvxB,UAAU4xB,GACdA,GAAaL,EAAIl5B,WArED,EAsEhBw5B,EAAUD,EAAYC,EAAUD,EAAYC,EAC5CC,EAAYllD,EACZmlD,EAAY1vB,EAIhB,OADAkJ,EAAMoN,aAAekZ,GACd,EAEXtvB,QAAQF,GAMJ,OALAz5B,KAAKy5B,KAAOA,EACRp3B,EAAYo3B,KACZz5B,KAAKyoD,QAAU,GACfzoD,KAAKu5B,SAAS,IAEXv5B,KAEX4oD,aAAalgD,GAET,OADA1I,KAAKmzB,WAAazqB,EACX1I,KAEX8V,OACI,MAAMggB,EAAM91B,KAAK6V,eACX4jB,EAAOz5B,KAAK05B,oBAClB15B,KAAKmW,cACL,MACMstB,EADQhK,EAAKxB,aACKyL,yBAClB0E,EAAQ3O,EAAK4O,mBAAmBroC,KAAKszB,SAAUtzB,KAAKiS,MAAO,CAAEq3C,gBAAgB,IAE/ErmD,EAAUw2B,KACV2O,EAAM1/B,EAAI+wB,EAAK6X,iBAAiB3G,OAEpC,MAAMhnC,EAAIykC,EAAMzkC,EAAI3D,KAAKq0B,QAAUr0B,KAAKsK,MAAQtK,KAAKyoD,OAC/C//C,EAAI0/B,EAAM1/B,EAAI1I,KAAKs0B,QAAUt0B,KAAKmzB,WAAasQ,EACrD3N,EAAIQ,YACJR,EAAI2e,IAAI9wC,EAAG+E,EAAG1I,KAAKyoD,OAAQ,EAAa,EAAVxjD,KAAKC,IAAQ,GAC3C4wB,EAAIa,QC9IL,MAAM4yB,WAAuB/wB,EAChC/2B,YAAY+nD,GACRjmD,QACAvD,KAAKwpD,OAASA,EACdxpD,KAAKsK,MAAQ,EACbtK,KAAKszB,SAAWkF,EAASE,SAASC,KAClC34B,KAAKq0B,QAAU,EACfr0B,KAAKs0B,QAAU,EACft0B,KAAKypD,SAAW,EAChBzpD,KAAKkqC,SAAW,EAChBlqC,KAAKwX,YAEE9V,sBACP,OAAOG,EAAS0nD,eAGpBhkD,cAAcmkD,EAAM/mB,GAChB,MAAM,WAAEK,EAAU,YAAE+M,GAAgBpN,EAEpC,IAAK+mB,GAAwB,IAAhBA,EAAK9jD,OACd,OAAO,EACX,MAAM+jD,EAAY,GAClB,IAAIC,EAAY,KACZC,EAAY,EACZC,EAAa,EACjB,IAAK,IAAIvhD,EAAI,EAAGA,EAAImhD,EAAK9jD,SAAU2C,EAAG,CAClC,MAAM6P,EAAMsxC,EAAKnhD,GACXkxB,EAAOrhB,EAAIohB,UACXuwB,EAAM3xC,EAAI+hB,cACVloB,EAAQmG,EAAIyhB,aACZyJ,EAAQ7J,EAAK8J,cAActxB,GAE3B+3C,EADgBxe,GAAckD,OAAOt2B,EAAItB,UACdy2B,UAOjC,GANIn1B,EAAIkb,WAAaO,EAAiBoF,QAClC0J,EAAM+M,eAAiBsa,EAAan8B,EAAOgD,oBAAsB,IAEjEzY,EAAIkb,WAAaO,EAAiBsF,QAClCwJ,EAAMlK,WAAauxB,EAAan8B,EAAOgD,oBAAsB,IAE7D4I,IAASmwB,EAAW,CACpB,IAAK,IAAIhlD,EAAI,EAAGA,EAAI60B,EAAKtmB,KAAKvN,SAAUhB,EACjB,IAAfo+B,IACA6mB,EAAY5kD,KAAK2E,IAAI6vB,EAAK+J,yBAA0BqmB,IAEpC,IAAhB9Z,IACA+Z,EAAa7kD,KAAK2E,IAAI6vB,EAAK4gB,0BAA2ByP,IAG9DF,EAAYnwB,EAEhBkwB,EAAUn1C,KAAK,CACXilB,KAAAA,EACArhB,IAAAA,EACA2xC,IAAAA,EACA/lD,KAAMs/B,EAAMt/B,KACZq/B,OAAQwmB,EACRI,OAAQH,IAIhBH,EAAU9lB,MAAK,CAACp/B,EAAGC,IAAMA,EAAEV,KAAOS,EAAET,OACpC,IAAIkmD,EAAY,EACZC,EAAY,EACZC,EAAU,EACVC,EAAU,EACVC,EAAW,KACXC,EAAW,KACf,IAAK,IAAIhiD,EAAI,EAAGA,EAAIohD,EAAU/jD,SAAU2C,EAAG,CACvC,IAAIiiD,EAAY,EAChB,MAAM,KAAE/wB,EAAI,IAAEswB,EAAG,IAAE3xC,EAAG,KAAEpU,EAAI,OAAEq/B,EAAM,OAAE4mB,GAAWN,EAAUphD,GAEvDvE,IAASsmD,GAAY7wB,IAAS8wB,IAC9BL,EAAYlnB,EAAaK,EACzB8mB,EAAYpa,EAAcka,GAE9B,MAAMQ,EAAWryC,EAAIqX,WAzDL,EA0DZs6B,IAAQvxB,EAASE,SAASC,MAC1BvgB,EAAIgf,UAAU4L,EAAaknB,GAC3BM,EAAYxnB,EAAaynB,EACzBL,EAAUI,EAAYJ,EAAUI,EAAYJ,GAEvCL,IAAQvxB,EAASE,SAASY,QAC/BlhB,EAAIgf,UAAU+yB,GACdK,EAAYV,EAAaW,EACzBJ,EAAUG,EAAYH,EAAUG,EAAYH,GAEhDC,EAAWtmD,EACXumD,EAAW9wB,EAIf,OAFAkJ,EAAMK,YAAconB,EACpBznB,EAAMoN,aAAesa,GACd,EAEX9kD,sBAAqB,WAAEmlD,GAAe,GAAIjxB,EAAMmZ,GAC5C8X,MAAAA,GAAwDA,EAAWliD,MAAM,KAAK4K,KAAKu3C,IAC/E,MAAMniD,EAAQmiD,EAAgBx7C,OAAO3G,MAAM,KACrCylB,EAAS,CAAE28B,OAAQpiD,EAAM,IAG/B,OAFIA,EAAM,KACNylB,EAAOqF,SAAW9qB,EAAM,IACrBoqC,EAAQM,aAAa2X,UAAU58B,MACvC7a,KAAI,CAAC03C,EAAW74C,IAAUwnB,EAAKoO,YAAYijB,EAAW74C,KAE7D84C,kBAAkBvB,GAEd,OADAxpD,KAAKwpD,OAASA,EACPxpD,KAEXgrD,oBACI,OAAOhrD,KAAKwpD,OAEhByB,WAAWtnD,GAEP,OADA3D,KAAKypD,SAAW9lD,EACT3D,KAEXkrD,WAAWxiD,GAEP,OADA1I,KAAKkqC,SAAWxhC,EACT1I,KAEX8V,OACI,MAAMggB,EAAM91B,KAAK6V,eACX4jB,EAAOz5B,KAAK05B,oBAClB15B,KAAKmW,cACL,MAAMiyB,EAAQ3O,EAAK4O,mBAAmBroC,KAAKszB,SAAUtzB,KAAKiS,OAC1D,IAAIktC,EAAQ/W,EAAMzkC,EAAI3D,KAAKq0B,QAAUr0B,KAAKypD,SACtCpK,EAAQjX,EAAM1/B,EAAI1I,KAAKs0B,QAAUt0B,KAAKkqC,SAAW,EACrD,OAAQlqC,KAAKszB,UACT,KAAKkF,EAASE,SAASO,MACnBkmB,GAAS,EACTE,GAAS,GACT,MACJ,KAAK7mB,EAASE,SAASS,MACnBgmB,GAAS,EACTE,GAAS,GACT,MACJ,KAAK7mB,EAASE,SAASC,KACnBwmB,GAASn/C,KAAKsK,MACd,MACJ,KAAKkuB,EAASE,SAASY,MACnB6lB,GAAS,EACT,MACJ,QACI,MAAM,IAAIh8C,EAAa,kBAAmB,gBAAgBnD,KAAKszB,2BAEvEwC,EAAI/gB,OACJ+gB,EAAIlf,QAAQ5W,KAAK8W,UACjBgf,EAAIyb,SAAS,GAAKvxC,KAAKwpD,OAAQrK,EAAOE,GACtCvpB,EAAIngB,WAGZ4zC,GAAevyC,UAAY,CACvBzI,OAAQhB,EAAKiB,WACbL,KAAM,EACNC,OAAQjC,EAAWihC,KACnB/+B,MAAOjC,EAAUqC,QCpGd,MAAM08C,WAAiBzoD,GAC1BjB,YAAYs2C,GACRx0C,MAAMw0C,GACN/3C,KAAKorD,cAAe,EACpBprD,KAAKqrD,iBAAmB,EACxBrrD,KAAKsrD,mBAAqB,EAC1BtrD,KAAKiS,MAAQ8lC,EAAW9lC,MACxBjS,KAAK2D,EAAIo0C,EAAWp0C,GAAK,EACzB3D,KAAK0I,EAAIqvC,EAAWrvC,GAAK,EACrBqvC,EAAWwT,YACXvrD,KAAKq4C,SAAWN,EAAWwT,WAC/BvrD,KAAK8uB,UAAYipB,EAAWjpB,YAAa,EACzC9uB,KAAKkpC,eAAiB6O,EAAW7O,gBAAkBV,GAAKe,GACxDvpC,KAAKgE,KAAO+zC,EAAW/zC,MAAQ,EAG/BhE,KAAKmvB,MAAQtB,EAAO2qB,cAAcx4C,KAAKouB,SAAUpuB,KAAKq4C,UACtD30C,EAAQ1D,KAAKmvB,MAAO,eAAgB,gCAAgCnvB,KAAKouB,uBAAuBpuB,KAAKq4C,cAEhGr4C,KAAKgE,KAAO,GAAKhE,KAAKgE,KAAO,IAAMhE,KAAKmvB,MAAMoE,kBAC/CvzB,KAAKmvB,MAAMiB,UAAYpwB,KAAKmvB,MAAMoE,iBAEtCvzB,KAAKwrD,WAAaxrD,KAAKmvB,MAAMiB,UAC7BpwB,KAAKq0B,QAAU0jB,EAAW1jB,SAAW,EACjC0jB,EAAW0T,oBACXzrD,KAAKorD,cAAe,EACpBprD,KAAKwrD,WAAazT,EAAW0T,kBAC7BzrD,KAAKqrD,iBAAmBtT,EAAWsT,kBAAoB,EACvDrrD,KAAKsrD,mBAAqBvT,EAAWuT,oBAAsB,GAE/DtrD,KAAKyU,SAASsjC,EAAW1pC,OACzBrO,KAAK0rD,QAAU3T,EAAW2T,UAAW,EACrC1rD,KAAKqiC,eAAiBhiC,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAIrX,KAAKqiC,gBAAiB,CAExEyW,iBAAkBf,EAAWe,kBAAoBjrB,EAAOyC,sBAC5DtwB,KAAKu5B,SAASv5B,KAAKmvB,MAAMM,SAASzvB,KAAKqiC,eAAeyW,mBAE/Cp3C,sBACP,OAAOG,EAASspD,SAGpB17B,WACI,OAAOzvB,KAAKsK,MAGhBqhD,cACI,OAA0B,IAAnB3rD,KAAK8uB,UAGhB+f,WACI,OAAO7uC,KAAKmvB,MAGhBjmB,KAAKvF,GAED,OADA3D,KAAK2D,EAAIA,EACF3D,KAGX+I,OACI,OAAO/I,KAAK0I,EAGhBS,KAAKT,GAED,OADA1I,KAAK0I,EAAIA,EACF1I,KAGX4rD,UACI,OAAO5rD,KAAKgE,KAGhB6nD,QAAQ7nD,GAEJ,OADAhE,KAAKgE,KAAOA,EACLhE,KAGX83C,eAII,MAAMn0C,EAAK3D,KAAKu3C,aAAwBh0C,MAAMu0C,eAAf93C,KAAK2D,EAG9BmoD,EAA6BtjB,GAAKiB,MAAQ,EAC1C7G,EAAY/U,EAAOgV,mBACnBkpB,EAAYnpB,EAAU3xB,aAAa,kBAAmB,GAAKjR,KAAKkpC,eAChE8iB,EAAqBppB,EAAU3xB,aAAa,4BAA6B,GAAKjR,KAAKkpC,eACzF,OAAQvlC,EACJooD,GACC/rD,KAAK8uB,WAAa9uB,KAAKsK,MAAQwhD,GAA8B9rD,KAAKkpC,eAAiB8iB,EAAqB,GAGjHv1C,iBACI,IAAKzW,KAAKu3C,aACN,MAAM,IAAIp0C,EAAa,kBAAmB,qDAE9C,MAAMytC,EAAU5wC,KAAKi4B,aAAayL,yBAC5BuoB,EAAerb,EAAU,EACzBsb,EAAQlsD,KAAK0I,EAAIujD,EACvB,OAAO,IAAIxjD,EAAYzI,KAAK83C,eAAgBoU,EAAOlsD,KAAKsK,MAAOsmC,GAGnE3Z,SAASC,GACL,MAAMlzB,EAAOhE,KAAK4rD,UAMlB,OALA5rD,KAAKk3B,MAAQA,EACTl3B,KAAKk3B,QACLl3B,KAAKmJ,KAAKnJ,KAAKk3B,MAAMi1B,YAAYnoD,IACjChE,KAAK2W,WAAW3W,KAAKk3B,MAAMxgB,eAExB1W,KAGXs3C,YACI,GAAIt3C,KAAKu3C,aACL,OAAOv3C,KACX,MAAMsK,EAAQtK,KAAKyvB,WAAazvB,KAAK24C,oBAAsB34C,KAAK44C,qBAGhE,OAFA54C,KAAKu5B,SAASjvB,GACdtK,KAAKu3C,cAAe,EACbv3C,KAGX8V,OACI,MAAMggB,EAAM91B,KAAK6V,eACjB7V,KAAKmW,cACL,IAAIi2C,EAASpsD,KAAK83C,eACd93C,KAAKorD,eAELgB,GAAUpsD,KAAKkpC,iBAAmBV,GAAKe,GAAKvpC,KAAKqrD,iBAAmBrrD,KAAKsrD,oBAE7E,MAAM5iD,EAAI1I,KAAK0I,GArLvB,YAAc3E,GACNonD,GAAS/oB,OACTv+B,EAAI,oBAAqBE,GAoLzB,CAAE,sBAAuB/D,KAAKq4C,SAAUr4C,KAAKouB,SAAU,OAAQg+B,EAAQ1jD,GAEvE,MAAMwgC,EAAiBlpC,KAAKkpC,eACtB4P,EAAmB94C,KAAKqiC,eAAeyW,iBAC7C94C,KAAK6U,WAAWihB,GAChB,MAAMu2B,EAAiB,GAAGrsD,KAAKwrD,iBAAiBtiB,IAAmBV,GAAKe,GAAK,KAAO,SACpF,GAAsB,MAAlBvpC,KAAKq4C,SAAkB,CACvB,MAAMiU,EAAatsD,KAAKi4B,aAAayL,0BAjLjD,SAA2B5N,EAAK1H,EAAUzqB,EAAG+E,EAAGwgC,EAAgBojB,GAC5D,MAAMhiD,EAAQujB,EAAO+C,qBACrBkF,EAAI/gB,OACJ+gB,EAAIrgB,aAAaoY,EAAO2C,YACxB,IAAImG,GAAO,EAmBX,GAlBI9I,EAAO0+B,iBAAiBn+B,GAAY,IACpCuI,GAAO,GAENA,IACDhzB,GAAMkqB,EAAO2C,WAAa,EAAK0Y,GACnCpT,EAAIQ,YACJR,EAAIS,OAAO5yB,EAAG+E,EAAI4jD,GAClBx2B,EAAIU,OAAO7yB,EAAG+E,EAAI,GAClBotB,EAAIU,OAAO7yB,EAAI2G,EAAO5B,EAAI4jD,GAC1Bx2B,EAAIU,OAAO7yB,EAAI2G,EAAO5B,GACtBotB,EAAIU,OAAO7yB,EAAG+E,EAAI4jD,GAClBx2B,EAAI4e,YACA/d,EACAb,EAAIa,OAGJb,EAAIrH,SAEJZ,EAAOmC,mBAAmB5B,GAAUtnB,OAAO,IAAM,CACjD,MAAM0lD,EAAc,EAAE,GAAI,EAAGliD,EAAQ,EAAGA,EAAQ,GAChD,IAAK,IAAI/B,EAAI,EAAGA,EAAIikD,EAAY5mD,OAAQ2C,IACpCutB,EAAIQ,YACJR,EAAIS,OAAO5yB,EAAI6oD,EAAYjkD,GAAIG,EAAI,IACnCotB,EAAIU,OAAO7yB,EAAI6oD,EAAYjkD,GAAIG,EAAI,IACnCotB,EAAIrH,SAGZqH,EAAIngB,UAkJI82C,CAAkB32B,EAAK91B,KAAKouB,SAAUg+B,EAAQ1jD,EAAGwgC,EAAgBojB,QAGjEh9B,EAAMo9B,YAAY52B,EAAKs2B,EAAQ1jD,EAAGowC,EAAkB94C,KAAKwrD,WAAY,CACjElqD,SAAUtB,KAAKorD,aAAe,mBAAmBiB,IAAmB,qBAAqBA,MAGjGrsD,KAAK0V,aAAaogB,IAI1Bq1B,GAAS/oB,OAAQ,ECxMV,MAAMp/B,WAAsBN,GAC/BjB,YAAYs2C,GACRx0C,MAAMw0C,GAECr2C,sBACP,OAAOG,EAASmB,cAGpBmsC,UACI,OAAOnvC,KAAK4yB,KAEhBke,YACI,IAAK9wC,KAAK4yB,KACN,MAAM,IAAIzvB,EAAa,SAAU,gCAErC,OAAOnD,KAAK4yB,KAEhB+5B,QAAQ/5B,GAGJ,OAFA5yB,KAAK4yB,KAAOA,EACZ5yB,KAAKsU,gBAAgBse,GACd5yB,KAGX4sD,YACI,MAAMh6B,EAAO,IAAI4V,GAEjB,OADAxoC,KAAK2sD,QAAQ/5B,GACN5yB,KAEX6sD,UAAUvrD,EAAW,QACjB,MAAM,MAAE6tB,GAAUnvB,KAClB,GAAIA,KAAK8sD,UAAW,CAChB,MAAMC,EAAW/sD,KAAKgvC,qBAAuBxG,GAAKgB,KAAOra,EAAMwE,mBAAqBxE,EAAMuE,iBAC1F1zB,KAAK8yB,KAAO,IAAIxD,EAAMy9B,EAAU/sD,KAAKqiC,eAAeyW,iBAAkB,CAAEx3C,SAAAA,KAIhF0rD,6BACI,OAAIhtD,KAAKgvC,qBAAuBxG,GAAKgB,KAC1BxpC,KAAKy4C,aAAaz4C,KAAKy4C,aAAa7yC,OAAS,GAG7C5F,KAAKy4C,aAAa,GAIjCwU,gBACI,OAAOzkB,GAAKkB,OAAS1pC,KAAKktD,mBAG9BC,eACI,MAAMh+B,EAAQnvB,KAAK6uC,WACnB,OAAI1f,EACOA,EAAMqE,WAGN,EAIf45B,uBAEI,IAAIxnD,EADSioB,EAAOmC,mBAAmBhwB,KAAKouB,UAC1BhtB,SAAW,EAAI,EAAI,GAErC,OAAQpB,KAAKouB,UACT,IAAK,IACgBxqB,MAAb5D,KAAK+6C,OACLn1C,EAAS,IACb,MACJ,IAAK,KACDA,EAAsBhC,MAAb5D,KAAK+6C,KAAoB,GAAK,GACvC,MACJ,IAAK,KACDn1C,EAAsBhC,MAAb5D,KAAK+6C,KAAoB,GAAK,GACvC,MACJ,IAAK,KACDn1C,EAAsBhC,MAAb5D,KAAK+6C,KAAoB,GAAK,GACvC,MACJ,IAAK,MACDn1C,EAAsBhC,MAAb5D,KAAK+6C,KAAoB,GAAK,GAK/C,OAAOn1C,EAGXopC,mBACI,IAAKhvC,KAAKkpC,eACN,MAAM,IAAI/lC,EAAa,SAAU,kCACrC,OAAOnD,KAAKkpC,eAEhBmkB,iBAAiBzsB,GAGb,GAFKA,IACDA,EAAY4H,GAAKe,IACjB3I,IAAc4H,GAAKe,IAAM3I,IAAc4H,GAAKgB,KAC5C,MAAM,IAAIrmC,EAAa,cAAe,2BAA2By9B,KASrE,GAPA5gC,KAAKkpC,eAAiBtI,EAEtB5gC,KAAKw1B,QACDx1B,KAAK8sD,WACL9sD,KAAK6sD,YAET7sD,KAAK+6C,UAAOn3C,EACR5D,KAAK4yB,KAAM,CACX5yB,KAAK4yB,KAAKgX,aAAahJ,GACvB5gC,KAAK4yB,KAAKiX,aAAa7pC,KAAKktD,oBAG5B,MAAM/9B,EAAQnvB,KAAKgtD,8BAAgChtD,KAAK6uC,WAElDye,EAAUz/B,EAAOgV,mBAAmB5xB,aAAa,iBAAiBke,EAAMiB,YAAa,CACvFm9B,kBAAmB,EACnBC,iBAAkB,EAClBC,oBAAqB,EACrBC,mBAAoB,IAGxB1tD,KAAK4yB,KAAK2C,WAAW,CACjBkT,iBAAkB6kB,EAAQE,iBAC1B9kB,mBAAoB4kB,EAAQI,mBAC5B/kB,sBAAuB2kB,EAAQC,kBAC/B3kB,wBAAyB0kB,EAAQG,sBAMzC,OAHIztD,KAAKu3C,cACLv3C,KAAKs3C,YAEFt3C,KAGX0wC,WACI,MAAM7H,EAAU7oC,KAAK83C,eAAiB93C,KAAKq0B,QACrCyU,EAAQ9oC,KAAK83C,eAAiB93C,KAAKq0B,QAAUr0B,KAAK06C,gBAExD,OADe16C,KAAKkpC,iBAAmBV,GAAKgB,KAAOX,EAAUC,EAKjE6kB,kBACI,OAAO3tD,KAAK83C,eAAiB93C,KAAKq0B,QAAUr0B,KAAK06C,gBAAkB,EAGvEwS,mBACI,MAAM/9B,EAAQnvB,KAAK6uC,WACnB,OAAoCjrC,MAAhC5D,KAAK4tD,wBACE5tD,KAAK4tD,wBAGZ5tD,KAAK+6C,KACE5rB,EAAMsE,oBAEbtE,EACOnvB,KAAKgvC,qBAAuBxG,GAAKe,GAAKpa,EAAM4D,kBAAoB5D,EAAM6D,oBAE1E,EAGX66B,cAActjD,GAEV,OADAvK,KAAK4tD,wBAA0BrjD,EAASi+B,GAAKkB,OACtC1pC,KAGXsxC,iBACI,IAAKtxC,KAAK4yB,KACN,MAAM,IAAIzvB,EAAa,SAAU,kCACrC,OAAOnD,KAAK4yB,KAAKuX,aAGrB+G,eAAekC,GACX,MAAMlc,EAAQl3B,KAAKi4B,aACnB,GAAIj4B,KAAK+uC,UAAW,CAChB,MAAMsC,EAAUrxC,KAAKsxC,iBACrB,IAAKD,EACD,MAAM,IAAIluC,EAAa,eAAgB,+BAC3C,OAAO8B,KAAKulC,IAAItT,EAAMga,eAAekC,GAAW/B,EAAQ3G,KAAO1qC,KAAKqiC,eAAewW,oBAAsBzF,EAAW,IAGpH,OAAOlc,EAAMga,eAAekC,GAIpCjC,kBAAkBiC,GACd,MAAMlc,EAAQl3B,KAAKi4B,aACnB,GAAIj4B,KAAK+uC,UAAW,CAChB,MAAMsC,EAAUrxC,KAAKsxC,iBACrB,IAAKD,EACD,MAAM,IAAIluC,EAAa,eAAgB,+BAC3C,OAAO8B,KAAK2E,IAAIstB,EAAMga,eAAekC,GAAW/B,EAAQ1G,MAAQ3qC,KAAKqiC,eAAewW,mBAAqBzF,GAGzG,OAAOlc,EAAMia,kBAAkBiC,GAGvC0Z,UACI,OAAOj/B,EAAO2qB,cAAcx4C,KAAKouB,UAAU0E,OAAS9yB,KAAK+6C,KAG7DvD,aACI,IAAI5pC,EAGJ,OAFqB,QAApBA,EAAK5N,KAAK+6C,YAAyB,IAAPntC,GAAyBA,EAAG4pC,aACzDx3C,KAAKy3C,eAAgB,EACdz3C,KAGX8tD,SAASC,GACL,IAAIngD,EACJ5N,KAAK6V,eACL7V,KAAKmW,cACLnW,KAAK2sD,QAAQ,IAAInkB,GAAKulB,IACD,QAApBngD,EAAK5N,KAAK4yB,YAAyB,IAAPhlB,GAAyBA,EAAG+I,WAAW3W,KAAK0W,cAAcZ,QChM/F,SAASk4C,GAAkBjyC,EAAM0d,EAAMw0B,GACnC,MAAMC,EAAQD,EACdlyC,EAAK/X,MAAQkqD,EACbnyC,EAAKoyC,SAAWD,EAChBnyC,EAAKqyC,SAAWF,EAChBnyC,EAAK0d,KAAK40B,WAAW,EAAGtyC,EAAK0d,KAAK60B,WAAW,GAAKJ,GAU/C,MAAMprD,WAAkBE,GAC3BvB,YAAYs2C,GACR,IAAInqC,EAAIkF,EAAIqzC,EACZ5iD,MAAMw0C,GAGN/3C,KAAKouD,QAAU,EACfpuD,KAAKmuD,QAAU,EAEfnuD,KAAKuuD,eAAiB,GACtBvuD,KAAKwuD,gBAAkB,GACvBxuD,KAAK+tB,KAAkC,QAA1BngB,EAAKmqC,EAAWhqB,YAAyB,IAAPngB,EAAgBA,EAAK,SACpE5N,KAAKmuB,aAAkD,QAAlCrb,EAAKilC,EAAW5pB,oBAAiC,IAAPrb,EAAgBA,EAAK,EAEpF9S,KAAKmvB,MAAQtB,EAAO2qB,cAAcx4C,KAAKouB,SAAUpuB,KAAKq4C,UACtD30C,EAAQ1D,KAAKmvB,MAAO,eAAgB,gCAAgCnvB,KAAKouB,uBAAuBpuB,KAAKq4C,aAErGr4C,KAAK8uB,WAAY,EACjB9uB,KAAKmzB,WAAa,EAElBnzB,KAAKyuD,oBAAqB,EAE1BzuD,KAAK0uD,WAAa,GAClB1uD,KAAKg1C,UAAY,GACjBh1C,KAAKqiC,eAAiBhiC,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAIrX,KAAKqiC,gBAAiB,CAExEyW,iBAAkBf,EAAWe,kBAAoBjrB,EAAOyC,oBAExDyoB,UAAWhB,EAAWgB,WAAaj2C,GAAU6rD,qBACjD3uD,KAAK4uD,oBACL5uD,KAAK4sD,YAED7U,EAAW8W,UACX7uD,KAAK8uD,WAGL9uD,KAAKqtD,iBAAsD,QAApClH,EAAKpO,EAAW7O,sBAAmC,IAAPid,EAAgBA,EAAK3d,GAAKe,IAEjGvpC,KAAKw1B,QACLx1B,KAAK6sD,YAEEnrD,sBACP,OAAOG,EAASiB,UAKTisD,qBACP,OAAOvmB,GAAKe,GAKLylB,uBACP,OAAOxmB,GAAKgB,KAELmlB,gCACP,OAAO,EAEAM,gCAEP,OADkBphC,EAAOgV,mBACR5xB,aAAa,8BAGlC1L,cAAcsqB,EAAO8S,GACjB,IAAK9S,GAASA,EAAMjqB,OAAS,EACzB,OAAO,EACX,MAAMspD,EAAY,GAClB,IAAK,IAAI3mD,EAAI,EAAGA,EAAIsnB,EAAMjqB,OAAQ2C,IAAK,CAEnC,MAAM+6B,EAAQzT,EAAMtnB,GAAGgmD,eACjBvqD,EAAOs/B,EAAM,GAAG8U,SAASp0C,KAC/B,IAAImrD,EAAO7rB,EAAMA,EAAM19B,OAAS,GAAGwyC,SAASp0C,KAC5C,MAAM8qC,EAAgBjf,EAAMtnB,GAAGymC,mBACzBogB,EAAUv/B,EAAMtnB,GAAG0kD,gBAAkB,GACrCoC,EAAUx/B,EAAMtnB,GAAG6kD,uBAAyB,GAClD,IAAIkC,EACAz/B,EAAMtnB,GAAG2+B,UACTooB,EAAOtrD,EAAO6rB,EAAMtnB,GAAG4mB,MAAMiE,WAC7B+7B,EAAOnrD,EAAO6rB,EAAMtnB,GAAG4mB,MAAMkE,aAG7Bi8B,EACsB,IAAlBxgB,EAAsBxL,EAAMA,EAAM19B,OAAS,GAAGwyC,SAASp0C,KAAOorD,EAAU9rB,EAAMA,EAAM19B,OAAS,GAAGwyC,SAASp0C,KAC7GmrD,EAAyB,IAAlBrgB,EAAsBxL,EAAM,GAAG8U,SAASp0C,KAAOs/B,EAAM,GAAG8U,SAASp0C,KAAOorD,GAEnFF,EAAU16C,KAAK,CACXxQ,KAAMs/B,EAAM,GAAG8U,SAASp0C,KACxBmqD,QAASmB,EACTlB,QAASe,EACTI,OAAQ1/B,EAAMtnB,GAAG2+B,SACjB4H,cAAeA,EACfsgB,QAAAA,EACAC,QAAAA,EACAG,YAAa3/B,EAAMtnB,GAAGknD,qBACtBC,aAAc7/B,EAAMtnB,GAAGojD,cACvBlyB,KAAM5J,EAAMtnB,KAGpB,IACIonD,EACAC,EACAC,EAHA1pB,EAAS,EAIb,MAAMrwB,EAAO,EAAC,GAAO,GAAO,GAC5B,IAAK,IAAIvN,EAAI,EAAGA,EAAI2mD,EAAUtpD,OAAQ2C,IAClCuN,EAAKvN,GAA8C,GAAzC2mD,EAAU3mD,GAAGkxB,KAAK4I,eAAevsB,KAE/C,GAAIA,EAAK,IAAMA,EAAK,IAAMA,EAAK,GAE3BqwB,EAAS,EACTwpB,EAAQT,EAAU,GAClBU,EAAQV,EAAU,GAClBW,EAAQX,EAAU,QAEjB,GAAIp5C,EAAK,IAAMA,EAAK,GAErBqwB,EAAS,EACTwpB,EAAQT,EAAU,GAClBW,EAAQX,EAAU,QAEjB,GAAIp5C,EAAK,IAAMA,EAAK,GAErBqwB,EAAS,EACTwpB,EAAQT,EAAU,GAClBW,EAAQX,EAAU,OAEjB,KAAIp5C,EAAK,KAAMA,EAAK,GAQrB,OAAO,EANPqwB,EAAS,EACTwpB,EAAQT,EAAU,GAClBW,EAAQX,EAAU,GAQP,IAAX/oB,IAAyC,IAAzBwpB,EAAM7gB,eAAgD,IAAxB+gB,EAAM/gB,gBACpD6gB,EAAQT,EAAU,GAClBW,EAAQX,EAAU,IAEtB,MAAMY,EAAc7qD,KAAK2E,IAAI+lD,EAAMH,YAAaK,EAAML,aACtD,IAAI93B,EAAS,EAEb,GAAe,IAAXyO,EAAc,CACd,MAAM4pB,EAAcJ,EAAMl2B,KAAKsV,WAAa8gB,EAAMp2B,KAAKsV,WAAa4gB,EAAM7gB,gBAAkB+gB,EAAM/gB,cAAgB,EAAM,GACxH,GAAI+gB,EAAMN,QAAUI,EAAMJ,QAAUI,EAAMl2B,KAAKrL,WAAayhC,EAAMp2B,KAAKrL,SACnEyhC,EAAMp2B,KAAK4I,eAAevsB,MAAO,OAEhC,GAAI65C,EAAMvB,SAAWyB,EAAM1B,QAAU4B,EACtC,GAAIJ,EAAMJ,OAENvB,GAAkB2B,EAAOE,EAAO,QAE/B,GAAIA,EAAMN,OAEXvB,GAAkB6B,EAAOF,GAAQ,OAEhC,CAID,MAAMK,EAAW/qD,KAAK4C,IAAI8nD,EAAM3rD,KAAO6rD,EAAM7rD,MAC7C,GAAI2rD,EAAMl2B,KAAKsV,WAAa8gB,EAAMp2B,KAAKsV,UAAW,CAG9C,IAAIkhB,EAAqB,EACrBC,EAAqB,EAC4B,IAAjDriC,EAAO0+B,iBAAiBoD,EAAMl2B,KAAKrL,UACnC6hC,IAEKpiC,EAAO0+B,iBAAiBoD,EAAMl2B,KAAKrL,UAAY,GACpD8hC,IAEiD,IAAjDriC,EAAO0+B,iBAAiBsD,EAAMp2B,KAAKrL,UACnC6hC,IAEKpiC,EAAO0+B,iBAAiBsD,EAAMp2B,KAAKrL,UAAY,GACpD8hC,IAEwB,IAAvBD,GAAmD,IAAvBC,GAC7BP,EAAMl2B,KAAKohB,mBAAmBh5C,EAASO,KAAKwD,SAAWiqD,EAAMp2B,KAAKohB,mBAAmBh5C,EAASO,KAAKwD,QAW9FoqD,EAAW,GAAKA,EAAW,GAVhCt4B,EAASo4B,EAAc,EACnBH,EAAM7gB,gBAAkB+gB,EAAM/gB,cAE9B6gB,EAAMl2B,KAAKrC,UAAUM,GAIrBm4B,EAAMp2B,KAAKrC,UAAUM,IAepBi4B,EAAMl2B,KAAK6M,QAAUupB,EAAMp2B,KAAK6M,OAEjCqpB,EAAM7gB,gBAAkB+gB,EAAM/gB,gBAC1B6gB,EAAM3rD,MAAQ6rD,EAAM7rD,MACpB0zB,EAASo4B,EAAc,EACvBH,EAAMl2B,KAAKrC,UAAUM,IAIO,IAAxBm4B,EAAM/gB,gBACN+gB,EAAM/gB,eAAiB,EACvB+gB,EAAMp2B,KAAK4zB,kBAAkB,UAMxC2C,EAAW,GAChBt4B,EAASo4B,EAAc,EACnBH,EAAM7gB,gBAAkB+gB,EAAM/gB,cAE9B6gB,EAAMl2B,KAAKrC,UAAUM,GAIrBm4B,EAAMp2B,KAAKrC,UAAUM,IAGpBi4B,EAAMl2B,KAAKsV,WAChB4gB,EAAM7gB,eAAiB6gB,EAAMl2B,KAAKuV,mBAClC2gB,EAAMl2B,KAAK4zB,iBAAiBsC,EAAM7gB,gBAE7B+gB,EAAMp2B,KAAKsV,YAChB8gB,EAAM/gB,eAAiB+gB,EAAMp2B,KAAKuV,mBAClC6gB,EAAMp2B,KAAK4zB,iBAAiBwC,EAAM/gB,gBAM9C,OADAnM,EAAMoN,aAAerY,GACd,EAEX,IAAKk4B,EACD,MAAM,IAAIzsD,EAAa,eAAgB,sBAK3C,GAAIysD,EAAML,SAAWI,EAAMJ,SAAWM,EAAMN,SACpCI,EAAMvB,SAAWwB,EAAMzB,SAAWyB,EAAMxB,SAAWyB,EAAM1B,SAAS,CAqBlE,OApBmByB,EAAMzB,QAAUyB,EAAMxB,QAC3BuB,EAAMvB,QAAUyB,EAAM1B,QAvQpD,SAAoBpyC,EAAM4zC,EAAOE,GAC7B,MAAM3B,EAAQnyC,EAAK/X,KAAOQ,EAAQmrD,EAAMvB,QAASyB,EAAM1B,SACvDpyC,EAAK0d,KAAK40B,WAAW,EAAGtyC,EAAK0d,KAAK60B,WAAW,GAAKJ,GAClDnyC,EAAK/X,MAAQkqD,EACbnyC,EAAKoyC,SAAWD,EAChBnyC,EAAKqyC,SAAWF,EAqQAiC,CAAWP,EAAOD,EAAOE,IAGzBn4B,EAASo4B,EAAc,EACvBF,EAAMn2B,KAAKrC,UAAUM,IACQ,IAAzBm4B,EAAMp2B,KAAKwhB,YACX4U,EAAM/gB,eAAiB,EACvB+gB,EAAMp2B,KAAK4zB,kBAAkB,IAE7BsC,EAAMvB,SAAWyB,EAAM1B,UAAoC,IAAzBwB,EAAMl2B,KAAKwhB,YAC7C0U,EAAM7gB,cAAgB,EACtB6gB,EAAMl2B,KAAK4zB,iBAAiB,KAIpC1qB,EAAMoN,aAAerY,GACd,EAIf,OAAIi4B,EAAMJ,QAAUK,EAAML,QAAUM,EAAMN,QAEtCI,EAAMl2B,KAAK4I,eAAevsB,MAAO,EAEjC+5C,EAAMp2B,KAAK4I,eAAevsB,MAAO,EAEjC6sB,EAAMoN,aAAerY,GACd,IAGPk4B,EAAML,QAAUI,EAAMJ,QAAUK,EAAMxB,SAAWyB,EAAM1B,UAEvDyB,EAAMn2B,KAAK4I,eAAevsB,MAAO,GAEjC85C,EAAML,QAAUM,EAAMN,QAAUI,EAAMvB,SAAWwB,EAAMzB,UAEvDyB,EAAMn2B,KAAK4I,eAAevsB,MAAO,GAEjC65C,EAAMJ,QAAUI,EAAMvB,SAAWwB,EAAMzB,SAEvCH,GAAkB2B,EAAOC,EAAO,GAEhCC,EAAMN,QAAUK,EAAMxB,SAAWyB,EAAM1B,SAEvCH,GAAkB6B,EAAOD,GAAQ,IAGjCD,EAAMvB,SAAWwB,EAAMzB,QAAU,IAAOyB,EAAMxB,SAAWyB,EAAM1B,WAE/Dz2B,EAASo4B,EAAc,EACvBF,EAAMn2B,KAAKrC,UAAUM,IACQ,IAAzBm4B,EAAMp2B,KAAKwhB,YACX4U,EAAM/gB,eAAiB,EACvB+gB,EAAMp2B,KAAK4zB,kBAAkB,IAE7BsC,EAAMvB,SAAWyB,EAAM1B,UAAoC,IAAzBwB,EAAMl2B,KAAKwhB,YAC7C0U,EAAM7gB,cAAgB,EACtB6gB,EAAMl2B,KAAK4zB,iBAAiB,KAGpC1qB,EAAMoN,aAAerY,GACd,GAEXnyB,kBAAkBsqB,GACd,QAAKA,IAELA,EAAMlb,SAAS8kB,GAASA,EAAK+d,gBACtB,GAEXhiB,QACIjyB,MAAMiyB,QAEN,MAAM46B,EAAiBpwD,KAAK0uD,WAAWt7C,KAAKi9C,GAAaA,EAASz7C,aAClE5U,KAAKswD,iBACLtwD,KAAK0uD,WAAW/5C,SAAQ,CAAC07C,EAAUp+C,KAC/B,MAAMs+C,EAAgBH,EAAen+C,GACjCs+C,GACAF,EAAS57C,SAAS87C,MAE1B,MAAMr5B,EAAQl3B,KAAKk3B,MAKnB,OAJIA,GACAl3B,KAAK0uD,WAAW/5C,SAAS67C,GAASA,EAAKv5B,SAASC,KAEpDl3B,KAAKywD,wBACEzwD,KAEXk7C,QAAQH,GAOJ,OANA/6C,KAAK+6C,KAAOA,EACZ/6C,KAAKywD,wBAEDzwD,KAAK4yB,MACL5yB,KAAK4yB,KAAKiX,aAAa7pC,KAAKktD,oBAEzBltD,KAGX4sD,YAEI,OADA5sD,KAAK2sD,QAAQ,IAAInkB,GAAK,CAAEW,OAAQnpC,KAAKknC,YAC9BlnC,KAGXswD,iBACItwD,KAAK0uD,WAAa,GAClB,MAAM5f,EAAgB9uC,KAAKgvC,mBACrB77B,EAAOnT,KAAKg8C,UAClB,IAAIsO,EACA0F,EAIA5nB,EACAgW,EACAtxC,EALAgiB,GAAY,EAMZggB,IAAkBtG,GAAKe,IACvBnB,EAAQ,EACRgW,EAAMjrC,EAAKvN,OACXkH,EAAO,IAGPs7B,EAAQj1B,EAAKvN,OAAS,EACtBw4C,GAAO,EACPtxC,GAAQ,GAEZ,IAAK,IAAIvE,EAAI6/B,EAAO7/B,IAAM61C,EAAK71C,GAAKuE,EAAM,CAEtC,MAAM4jD,EAAY1wD,KAAKuuD,eAAehmD,GAAG6vC,SACnCp0C,EAAO0sD,EAAU1sD,UAGNJ,IAAb0mD,EACAA,EAAWtmD,GAGXgsD,EAAW/qD,KAAK4C,IAAIyiD,EAAWtmD,GACd,IAAbgsD,GAA+B,KAAbA,EAClBlhC,GAAaA,GAGbA,GAAY,EACZ9uB,KAAKyuD,oBAAqB,IAGlCnE,EAAWtmD,EACX,MAAM2sD,EAAW,IAAIxF,GAAS,CAC1B/8B,SAAUpuB,KAAKouB,SACfm9B,UAAWvrD,KAAKq4C,SAChBvpB,UAAAA,EACAoa,eAAgB4F,EAChB2c,kBAAmBiF,EAAUrtD,KAC7By1C,iBAAkB94C,KAAKqiC,eAAeyW,iBACtCzkB,QAASq8B,EAAUx0C,YACnBmvC,iBAAkBqF,EAAUrF,iBAC5BC,mBAAoBoF,EAAUpF,mBAC9BtnD,KAAM0sD,EAAU1sD,OAEpBhE,KAAKsU,gBAAgBq8C,GACrB3wD,KAAK0uD,WAAW1uD,KAAKuuD,eAAehmD,GAAG0J,OAAS0+C,GAIxD7B,WACI9uD,KAAKqtD,iBAAiBrtD,KAAK4wD,iCAE/BA,gCAGI5wD,KAAKouD,QAAUpuD,KAAKuuD,eAAe,GAAGnW,SAASp0C,KAC/ChE,KAAKmuD,QAAUnuD,KAAKuuD,eAAevuD,KAAKo4C,SAASxyC,OAAS,GAAGwyC,SAASp0C,KAItE,OAFiBhE,KAAKouD,QAAUpuD,KAAKmuD,SAAW,EAD5B,EAE0B3lB,GAAKe,GAAKf,GAAKgB,KAIjEolB,oBACI,IAAItE,EACJ,IAAK,IAAI/hD,EAAI,EAAGA,EAAIvI,KAAKmT,KAAKvN,SAAU2C,EAAG,CACvC,MAAMpI,EAAMH,KAAKmT,KAAK5K,GAGlBvI,KAAKmvB,MAAMpT,OACX/b,KAAKmvB,MAAMmE,SAAWnzB,GAC1B,MAAM+tB,EAAU,CAAEC,aAAcnuB,KAAKmuB,cAAgB,EAAGC,SAAUpuB,KAAKouB,UACjEkV,EAAQzV,EAAOgjC,cAAc1wD,EAAKH,KAAK+tB,KAAMG,GACnD,IAAKoV,EACD,MAAM,IAAIngC,EAAa,eAAgB,oCAAoChD,KAG7D,MAAdmjC,EAAMnjC,MACgB,MAAlBH,KAAKouB,UAAsC,MAAlBpuB,KAAKouB,SAC9BkV,EAAMt/B,KAAO,EAGbs/B,EAAMt/B,KAAO,GAIrB,MAAMA,EAAOs/B,EAAMt/B,KACHJ,MAAZ0mD,EACAA,EAAWtmD,EAGuB,KAA9BiB,KAAK4C,IAAIyiD,EAAWtmD,KACpBhE,KAAK8uB,WAAY,EACjBwU,EAAMxU,WAAY,EAGd9uB,KAAKo4C,SAASxyC,OAAS,IACvB5F,KAAKo4C,SAAS7vC,EAAI,GAAGumB,WAAY,IAI7Cw7B,EAAWtmD,EACXhE,KAAKo4C,SAAS5jC,KAAK8uB,GAIvBtjC,KAAKo4C,SAASzjC,SAAQ,CAACyjC,EAAUnmC,KAC7BjS,KAAKuuD,eAAe/5C,KAAK,CAAE4jC,SAAAA,EAAUnmC,MAAAA,OAEzCjS,KAAKuuD,eAAe1qB,MAAK,CAACp/B,EAAGC,IAAMD,EAAE2zC,SAASp0C,KAAOU,EAAE0zC,SAASp0C,OAGpEyS,iBACI,IAAI7I,EAAIkF,EACR,IAAK9S,KAAKu3C,aACN,MAAM,IAAIp0C,EAAa,kBAAmB,qDAE9C,MAAQmH,MAAO3B,EAAC,UAAEmyB,EAAS,oBAAE6d,GAAwB34C,KAAK2Q,aACpDhN,EAAI3D,KAAK83C,eAAiBhd,EAAY6d,EAC5C,IAAImY,EAAO,EACPC,EAAO,EACX,MAAMC,GAAsH,QAAlGl+C,EAAgC,QAA1BlF,EAAK5N,KAAK46B,kBAA+B,IAAPhtB,OAAgB,EAASA,EAAG81B,gCAA6C,IAAP5wB,EAAgBA,EAAK,GAAK,EACxJi9C,EAAgC,EAAlBiB,EACpB,GAAIhxD,KAAKknC,SAAU,CACf,MAAMx+B,EAAI1I,KAAKqqC,GAAG,GACZ4mB,EAAOpjC,EAAOmC,mBAAmBhwB,KAAKouB,UACxC6iC,EAAKnqD,OAAO,IAAMmqD,EAAKnqD,OAAO,IAC9BgqD,EAAOpoD,EAAIsoD,EACXD,EAAOroD,EAAIsoD,IAGXF,EAAOpoD,EAAI1I,KAAKmvB,MAAMiE,WAAa28B,EACnCgB,EAAOroD,EAAI1I,KAAKmvB,MAAMkE,WAAa08B,QAGtC,GAAI/vD,KAAKmvB,MAAMyD,KAAM,CACtB,MAAMyX,EAAKrqC,KAAKsxC,iBAChBjH,EAAGM,OAASqmB,EAAkBhxD,KAAKgvC,mBACnC8hB,EAAO7rD,KAAKulC,IAAIH,EAAGK,KAAML,EAAGM,OAC5BomB,EAAO9rD,KAAK2E,IAAIygC,EAAGK,KAAML,EAAGM,WAE3B,CACDmmB,EAAO,EACPC,EAAO,EACP,IAAK,IAAIxoD,EAAI,EAAGA,EAAIvI,KAAKqqC,GAAGzkC,SAAU2C,EAAG,CACrC,MAAMkxC,EAAKz5C,KAAKqqC,GAAG9hC,GACT,IAANA,GACAuoD,EAAOrX,EACPsX,EAAOtX,IAGPqX,EAAO7rD,KAAKulC,IAAIiP,EAAIqX,GACpBC,EAAO9rD,KAAK2E,IAAI6vC,EAAIsX,IAG5BD,GAAQE,EACRD,GAAQC,EAEZ,OAAO,IAAIvoD,EAAY9E,EAAGmtD,EAAMnoD,EAAGooD,EAAOD,GAI9CthB,cAAcgL,GACV,IAAKx6C,KAAKo4C,SAASxyC,OACf,MAAM,IAAIzC,EAAa,aAAc,yEAEzC,IAAI+tD,EAAalxD,KAAKo4C,SAAS,GAAGp0C,KAElC,IAAK,IAAIuE,EAAI,EAAGA,EAAIvI,KAAKo4C,SAASxyC,OAAQ2C,IAAK,CAC3C,MAAM4oD,EAAWnxD,KAAKo4C,SAAS7vC,GAAGvE,KAC9Bw2C,EACI2W,EAAWD,IACXA,EAAaC,GAGbA,EAAWD,IACXA,EAAaC,GAGzB,OAAOD,EAKXhqB,SACI,OAAOlnC,KAAKmvB,MAAMpT,KAGtBq1C,UACI,OAAQpxD,KAAKknC,UAAYlnC,KAAKmT,KAAKvN,OAAS,EAGhDmpC,UACI,OAAO/uC,KAAKmvB,MAAMyD,KAEtBk6B,UACI,OAAOvpD,MAAMupD,YAAc9sD,KAAKknC,SAEpCwJ,WACI,MAAsB,MAAlB1wC,KAAKq4C,SACEr4C,KAAK2tD,kBAKLpqD,MAAMmtC,YAAc1wC,KAAKkpC,eAAiBV,GAAKiB,OAAS,GAAKzpC,KAAKkpC,gBAAkB,GAKnGgI,eAAekC,GACX,MAAM/B,EAAUrxC,KAAKsxC,iBACrB,OAAOrsC,KAAKulC,IAAIxqC,KAAKi4B,aAAaiZ,eAAekC,GAAW/B,EAAQ3G,KAAO1qC,KAAKqiC,eAAewW,oBAAsBzF,EAAW,IAEpIjC,kBAAkBiC,GACd,MAAM/B,EAAUrxC,KAAKsxC,iBACrB,OAAOrsC,KAAK2E,IAAI5J,KAAKi4B,aAAaiZ,eAAekC,GAAW/B,EAAQ1G,MAAQ3qC,KAAKqiC,eAAewW,mBAAqBzF,GAIzHnc,SAASC,GACL3zB,MAAM0zB,SAASC,GACf,MAAMmT,EAAKrqC,KAAK0uD,WAAWt7C,KAAKu9C,IAC5BA,EAAS15B,SAASC,GACXy5B,EAAS5nD,UAGpB,GADA/I,KAAKo6C,MAAM/P,GACPrqC,KAAK4yB,KAAM,CACX,MAAM,MAAEmW,EAAK,SAAEC,GAAahpC,KAAKqxD,oBACjCrxD,KAAK4yB,KAAKoX,WAAWjB,EAAOC,GAEhC,OAAOhpC,KAGX2rD,cACI,OAAO3rD,KAAK8uB,UAGhBwiC,iBAAiBxiC,GAEb,OADA9uB,KAAK8uB,UAAYA,EACV9uB,KAGX47C,eACI,IAAIC,EAAY77C,KAAK83C,eAIrB,OAHA+D,GAAa77C,KAAK06C,gBAAkB16C,KAAKq0B,QAAUr0B,KAAK44C,qBACpD54C,KAAKg6B,kBACL6hB,GAAa77C,KAAKg6B,gBAAgBu3B,iBAC/B1V,EAGXC,cACI,IAAIC,EAAU/7C,KAAK83C,eAEnB,OADAiE,GAAW/7C,KAAKq0B,QAAUr0B,KAAK24C,oBACxBoD,EAGXtB,iBACI,IAAI+W,EAAWxxD,KAAKo4C,SAAS,GAAGp0C,KAChC,GAAIhE,KAAKo4C,SAASxyC,OAAS,EAAG,CAC1B,MAAM0kD,EAAWtqD,KAAKo4C,SAASp4C,KAAKo4C,SAASxyC,OAAS,GAAG5B,KAGzDwtD,EAAWhtD,EAFCS,KAAK2E,IAAI4nD,EAAUlH,GACnBrlD,KAAKulC,IAAIgnB,EAAUlH,IAGnC,OAAOkH,EAIXnpB,mBAAmB/U,EAAUrhB,EAAOic,EAAU,IAC1C,IAAItgB,EAAIkF,EACR,IAAK9S,KAAKu3C,aACN,MAAM,IAAIp0C,EAAa,kBAAmB,wDAE9C,GAAuB,IAAnBnD,KAAKqqC,GAAGzkC,OACR,MAAM,IAAIzC,EAAa,YAAa,yCAExC,MAAM,MAAE81B,EAAK,MAAEE,EAAK,KAAER,EAAI,MAAEW,GAAUd,EAASE,SAC/C,IAAI/0B,EAAI,EAiBR,OAhBI2vB,IAAaqF,EAEbh1B,GAAI,EAEC2vB,IAAagG,GAElB31B,EAAI3D,KAAK06C,gBAAkB16C,KAAKq0B,QAAU,EACtCr0B,KAAKkpC,iBAAmBV,GAAKe,IAC7BvpC,KAAK8sD,YACJ5+B,EAAQo7B,gBAnqBA,EAAC7vB,EAAMxnB,IAAUA,KAAWwnB,EAAKuV,qBAAuBxG,GAAKe,GAAK9P,EAAK2e,SAASxyC,OAAS,EAAI,GAmqB3E6rD,CAAiBzxD,KAAMiS,MAClDtO,GAAwI,QAAlImP,EAAsE,QAAhElF,EAAK5N,MAAAA,UAAmC,EAASA,KAAK8yB,YAAyB,IAAPllB,OAAgB,EAASA,EAAG+C,aAAarG,aAA0B,IAAPwI,EAAgBA,EAAK,IAGpKwgB,IAAa6F,GAAS7F,IAAa2F,IACxCt1B,EAAI3D,KAAK06C,gBAAkB,GAExB,CACH/2C,EAAG3D,KAAK83C,eAAiBn0C,EACzB+E,EAAG1I,KAAKqqC,GAAGp4B,IAKnBwC,SAASpG,GACL,OAAO9K,MAAMmR,cAAcrG,GAE/BqjD,aAAarjD,GACT,MAAMukB,EAAO5yB,KAAKmvC,UAGlB,OAFIvc,GACAA,EAAKne,SAASpG,GACXrO,KAEX2xD,eACI,IAAI/jD,EACJ,OAA4B,QAApBA,EAAK5N,KAAK4yB,YAAyB,IAAPhlB,OAAgB,EAASA,EAAGgH,WAEpEg9C,mBAAmBvjD,GACfrO,KAAKwuD,gBAAkBngD,EAE3BwjD,qBACI,OAAO7xD,KAAKwuD,gBAEhBsD,aAAazjD,GACT,IAAIT,EACiB,QAApBA,EAAK5N,KAAK8yB,YAAyB,IAAPllB,GAAyBA,EAAG6G,SAASpG,GAEtE0jD,eACI,IAAInkD,EACJ,OAA4B,QAApBA,EAAK5N,KAAK8yB,YAAyB,IAAPllB,OAAgB,EAASA,EAAGgH,WAMpEo9C,YAAY//C,EAAO5D,GAEf,OADArO,KAAK0uD,WAAWz8C,GAAOwC,SAASpG,GACzBrO,KAEXquD,WAAWp8C,EAAOjO,GAGd,OAFAhE,KAAKo4C,SAASnmC,GAAOjO,KAAOA,EAC5BhE,KAAKw1B,QACEx1B,KAEXsuD,WAAWr8C,GACP,OAAOjS,KAAKo4C,SAASnmC,GAAOjO,KAIhCyrD,qBAEI,OAAOzvD,KAAK06C,iBAAmB16C,KAAK8uB,UAAY,EAAI,GAIxD2hC,wBACIzwD,KAAKs6C,uBAAuBt6C,KAAK8uB,WAAa9uB,KAAKkpC,iBAAmBV,GAAKgB,KAAOxpC,KAAK06C,gBAAkB,GAGzG16C,KAAKu6C,yBAAyBv6C,KAAK8sD,WAAa9sD,KAAK8uB,WAAa9uB,KAAKkpC,iBAAmBV,GAAKe,GAAKvpC,KAAK06C,gBAAkB,GAG/HpD,YACI,GAAIt3C,KAAKu3C,aACL,OACJ,IAAI0a,EAAkB,EAClBjyD,KAAKg6B,kBACLh6B,KAAKg6B,gBAAgBsd,YAGmB,IAApCt3C,KAAKg6B,gBAAgBvK,aACrBwiC,EAAkBnvD,GAAUmsD,qBAGpC,IAAI3kD,EAAQtK,KAAK06C,gBAAkB16C,KAAK24C,oBAAsB34C,KAAK44C,qBAAuBqZ,EAEtFjyD,KAAKkyD,kBAAoBlyD,KAAKkpC,iBAAmBV,GAAKe,KACtDj/B,GAAStK,KAAK06C,iBAGlB16C,KAAKu5B,SAASjvB,GACdtK,KAAKu3C,cAAe,EAqBxB8Z,oBAEI,IAEIc,EACAC,EAGAC,EACAC,EAPAC,EAAQC,EAAAA,EACRC,GAAWD,EAAAA,EAGXE,EAAc1yD,KAAKi4B,aAAaoX,cAChCsjB,EAAa,EAGbC,EAA0BF,EAC1BG,EAAyBF,EAuB7B,OAtBA3yD,KAAK0uD,WAAW/5C,SAASg8C,IACrB,MAAM3sD,EAAO2sD,EAAS/E,UAChBljD,EAAIioD,EAAS5nD,OACnBwpD,EAAOttD,KAAKulC,IAAI9hC,EAAG6pD,GACnBE,EAAUxtD,KAAK2E,IAAIlB,EAAG+pD,QACH7uD,IAAfwuD,GAA4BzB,EAAShF,gBACrCyG,EAAazB,EAAS7Y,qBAEJl0C,IAAlBuuD,GAAgCxB,EAAShF,gBACzCwG,EAAgBxB,EAAS7Y,gBAE7B4a,EAAcztD,KAAK2E,IAAI5F,EAAM0uD,GAC7BC,EAAa1tD,KAAKulC,IAAIxmC,EAAM2uD,GACxBhC,EAAShF,eACT0G,OAAgDzuD,IAAzByuD,EAAqCruD,EAAOiB,KAAK2E,IAAI5F,EAAMquD,GAClFC,OAA8C1uD,IAAxB0uD,EAAoCtuD,EAAOiB,KAAKulC,IAAIxmC,EAAMsuD,KAGhFM,EAA0B3tD,KAAK2E,IAAI5F,EAAM4uD,GACzCC,EAAyB5tD,KAAKulC,IAAIxmC,EAAM6uD,MAE7C7yD,MACI,CACH+oC,MAAOwpB,EACPvpB,SAAUypB,EACVK,YAAaV,EACbW,gBAAiBZ,EACjBa,aAAcN,EACdO,YAAaN,EACbO,uBAAwBb,EACxBc,sBAAuBb,EACvBc,2BAA4BR,EAC5BS,0BAA2BR,GAInCS,oBACI,OAAOtzD,KAAK83C,eAAiB93C,KAAKq0B,QAGtCk/B,kBAEI,OADevzD,KAAKszD,oBACJtzD,KAAK06C,gBAErB8Y,gBACA,OAAOxzD,KAAK0uD,WAAWxqD,QAGvBuvD,iBAEA,OAz1BJrvD,QAAQC,KAAK,uEAAwE,iDAy1B1ErE,KAAKwzD,UAGhBE,kBACI,MAAMx8B,EAAQl3B,KAAKi4B,cACb,MAAE9I,EAAOkT,gBAAgB,UAAE0W,IAAiB/4C,KAC5C81B,EAAM91B,KAAK6V,eACXvL,EAAQ6kB,EAAMM,WAAyB,EAAZspB,EAC3B4a,EAAc,GAAKxkC,EAAMM,WAAaspB,GAAavQ,GAAKiB,MAAQ,EACtE,GAAIzpC,KAAKknC,SACL,OACJ,IAAKpR,EACD,MAAM,IAAI3yB,EAAa,kBAAmB,wCAE9C,MAAM,aAAE6vD,EAAY,YAAEC,EAAW,uBAAEC,EAAsB,2BAAEE,EAA0B,sBAAED,EAAqB,0BAAEE,EAAyB,YAAEP,EAAW,gBAAEC,GAAqB/yD,KAAKqxD,oBAEhL,GAAI2B,EAAe,GAAKC,EAAc,EAClC,OACJ,MAAMW,EAAQ3uD,KAAKulC,IAAIsoB,MAAAA,EAAiDA,EAAc,EAAGC,MAAAA,EAAyDA,EAAkB,GAC9Jc,EAAiB,CAACnrD,EAAGorD,EAAQhlC,KAC/B,IAAInrB,EAEAA,EADAmrB,GAAaglC,EACTF,EAAQ7a,EACP+a,GACAf,MAAAA,EAAyDA,EAAkB,GAAKha,GAEhF+Z,MAAAA,EAAiDA,EAAc,GAAK/Z,EAC7E,MAAMgb,EAAcD,GAAUhlC,EAAY6kC,EAAcrpD,EACxDwrB,EAAIQ,YACJR,EAAIS,OAAO5yB,EAAG+E,GACdotB,EAAIU,OAAO7yB,EAAIowD,EAAarrD,GAC5BotB,EAAIrH,UAEFpgB,EAAQhO,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAI6f,EAAM88B,6BAA8Bh0D,KAAK6xD,sBACvF7xD,KAAK6U,WAAWihB,EAAKznB,GAErB,IAAK,IAAIrK,EAAO,EAAGA,GAAQgvD,IAAgBhvD,EAAM,CAC7C,MAAM8vD,OAA6BlwD,IAApBmvD,GAAiC/uD,GAAQovD,EAClDtkC,OAAuClrB,IAA3BsvD,GAAwClvD,GAAQkvD,EAClEW,EAAe38B,EAAMi1B,YAAYnoD,GAAO8vD,EAAQhlC,GAGpD,IAAK,IAAI9qB,EAAO,EAAGA,GAAQivD,IAAejvD,EAAM,CAC5C,MAAM8vD,OAA6BlwD,IAApBmvD,GAAiC/uD,GAAQqvD,EAClDvkC,OAAsClrB,IAA1BuvD,GAAuCnvD,GAAQmvD,EACjEU,EAAe38B,EAAMi1B,YAAYnoD,GAAO8vD,EAAQhlC,GAEpD9uB,KAAK0V,aAAaogB,EAAKznB,GAG3B4lD,cAAcC,GACV,MAAMp+B,EAAM91B,KAAK6V,eACjB,IAAK,IAAItN,EAAI,EAAGA,EAAIvI,KAAKg1C,UAAUpvC,OAAQ2C,IAAK,CAC5C,MAAMo/B,EAAW3nC,KAAKg1C,UAAUzsC,GAC1B0J,EAAQ01B,EAAS9N,aACjB82B,EAAW3wD,KAAK0uD,WAAWz8C,GACjC,GAAI0+C,GAAYuD,EAAe,CAC3B,MAAMC,EAAgBxD,EAAS/7C,WAC/B+7C,EAAS97C,WAAWihB,EAAKq+B,GACzBxsB,EAAShxB,WAAWmf,GACpB6R,EAAS/xB,gBACT+6C,EAASj7C,aAAaogB,EAAKq+B,KAIvCjC,iBACI,MAAMnjB,OAAwBnrC,IAAd5D,KAAK4yB,KACfk6B,EAAU9sD,KAAKmvB,MAAM2D,KACrBshC,OAA0BxwD,IAAd5D,KAAK+6C,KACvB,OAAOhM,GAAW+d,GAAWsH,EAGjCC,WACI,IAAIzmD,EAAIkF,EAAIqzC,EAAImO,EAAIC,EACpB,MAAMz+B,EAAM91B,KAAK6V,eACjB,IAAKigB,EACD,MAAM,IAAI3yB,EAAa,kBAAmB,wCAE9C,GAAInD,KAAKkyD,iBAAkB,CACvB,MAAM,MAAEnpB,EAAK,SAAEC,GAAahpC,KAAKqxD,oBAE3BmD,EAAiBx0D,KAAK4yB,KAAKqX,YAC3BwqB,EAAQz0D,KAAK0wC,WAKbgkB,EAAQ10D,KAAKgvC,qBAAuBxG,GAAKgB,KAEvCT,EACIyrB,EACA,GACCx0D,KAAKmvB,MAAQnvB,KAAKmvB,MAAM6D,oBAAsB,GAAKhzB,KAAK20D,qBACiC,QAAxF7hD,EAA0B,QAApBlF,EAAK5N,KAAK8yB,YAAyB,IAAPllB,OAAgB,EAASA,EAAG+C,aAAa2jB,eAA4B,IAAPxhB,EAAgBA,EAAK,IAAM,EAAI9S,KAAK20D,qBAE1I3rB,EACIwrB,EACA,GACCx0D,KAAKmvB,MAAQnvB,KAAKmvB,MAAM4D,kBAAoB,GAAK/yB,KAAK20D,qBACmC,QAAxFL,EAA0B,QAApBnO,EAAKnmD,KAAK8yB,YAAyB,IAAPqzB,OAAgB,EAASA,EAAGx1C,aAAa2jB,eAA4B,IAAPggC,EAAgBA,EAAK,IAAM,EAAIt0D,KAAK20D,qBAE7H,QAApBJ,EAAKv0D,KAAK8yB,YAAyB,IAAPyhC,GAAyBA,EAAGz8B,OAAOhC,EAAK2+B,EAAOC,IAIpFE,gBACI,MAAM9+B,EAAM91B,KAAK6V,eACjB7V,KAAK0uD,WAAW/5C,SAASg8C,IACrB76B,EAAIuV,UAAU,WAAYslB,EAASj+C,aAAa,MAAO,CAAE44B,aAAa,IACtEqlB,EAASh6C,WAAWmf,GAAKhgB,OACzB9V,KAAKi0D,cAActD,GACnB76B,EAAIyV,gBAGZuiB,SAASC,GAIL,MAAMj4B,EAAM91B,KAAK6V,eACbk4C,GACA/tD,KAAK2sD,QAAQ,IAAInkB,GAAKulB,IAItB/tD,KAAKkyD,kBAAoBlyD,KAAK4yB,MAC9B5yB,KAAK4yB,KAAKmY,sBAEV/qC,KAAK4yB,MACL5yB,KAAK4yB,KAAKjc,WAAWmf,GAAKhgB,OAIlC6+C,oBACI,OAAO,EAKXzH,mBACI,MAAM2H,EAAuBtxD,MAAM2pD,mBACnC,IAAKltD,KAAKmvB,MAAMyD,KACZ,OAAOiiC,EAEX,MAAM3rB,EAAiBlpC,KAAKgvC,mBAC5B,GAAI9F,IAAmBlpC,KAAK4wD,gCACxB,OAAOiE,EAEX,IAAIC,EAUAA,EARA5rB,IAAmBV,GAAKe,GADR,EASkBvpC,KAAKmuD,QAGnBnuD,KAAKouD,QAZT,EAepB,MAAM2G,EAAkCD,EAAoB,IAC5D,GAAIC,GAAmC,EACnC,OAAOF,EAEX,MAAM39B,EAAQl3B,KAAK46B,WACnB,IAAIo6B,EAAwB,GAI5B,OAHapxD,MAATszB,IACA89B,EAAwB99B,EAAMwM,0BAE3BmxB,EAAuBE,EAAkCC,EAGpEl/C,OACI,IAAiC,IAA7B9V,KAAKqiC,eAAevsB,KACpB,OACJ,GAAuB,IAAnB9V,KAAKqqC,GAAGzkC,OACR,MAAM,IAAIzC,EAAa,YAAa,qCAExC,MAAM2yB,EAAM91B,KAAK6V,eACXo/C,EAASj1D,KAAKszD,oBACd4B,EAAmBl1D,KAAK+uC,YAAc/uC,KAAK+6C,KAGjD,GADA/6C,KAAK0uD,WAAW/5C,SAASg8C,GAAaA,EAASznD,KAAK+rD,KAChDj1D,KAAK4yB,KAAM,CAEX,MAAMuiC,EAAQn1D,KAAK0wC,WACnB1wC,KAAK4yB,KAAK+W,mBAAmBwrB,EAAOA,IAlhChD,YAAcpxD,GACNjB,GAAUs/B,OACVv+B,EAAI,qBAAsBE,GAkhC1B,CAAE,aAAc/D,KAAKoxD,UAAY,UAAY,SAAUpxD,KAAKmT,MAE5DnT,KAAK6U,aACLihB,EAAIuV,UAAU,YAAarrC,KAAK0S,aAAa,OAC7C1S,KAAK0zD,kBACDwB,GACAl1D,KAAK8tD,WACT9tD,KAAK40D,gBACL50D,KAAKq0D,WACLv+B,EAAIyV,aACJvrC,KAAK0V,eACL1V,KAAKmW,eAGbrT,GAAUs/B,OAAQ,ECljCX,MAAMgzB,WAAiBxhD,EAa1BnS,YAAYouB,EAAO9qB,GACfxB,QACAvD,KAAKq1D,SAASxlC,GACd7vB,KAAK+E,KAAOA,EACZ/E,KAAKqiC,eAAiB,CAClBizB,IAAK,EACLC,IAAK,GACLC,aAAc,EACdC,cAAe,EACfC,aAAc,EACdphC,QAAS,EACTqhC,YAAa,GAEjB31D,KAAKwX,YAEE9V,sBACP,OAAOG,EAASuzD,SAEpBxrB,aAAahJ,GAET,OADA5gC,KAAK4gC,UAAYA,EACV5gC,KAOXq1D,SAASxlC,GACL,IAAKA,EAAM+lC,aAAe/lC,EAAMs5B,UAC5B,MAAM,IAAIhmD,EAAa,eAAgB,yDAQ3C,GANK0sB,EAAMgmC,gBACPhmC,EAAMgmC,cAAgB,CAAC,IAEtBhmC,EAAMimC,eACPjmC,EAAMimC,aAAe,CAAC,IAEtBjmC,EAAMgmC,cAAcjwD,SAAWiqB,EAAMimC,aAAalwD,OAClD,MAAM,IAAIzC,EAAa,eAAgB,gDAG3C,OADAnD,KAAK6vB,MAAQA,EACN7vB,KAKX+1D,YACI,OAAQ/1D,KAAK6vB,MAAM+lC,aAAe51D,KAAK6vB,MAAMs5B,UAEjD6M,UAAU/nC,GACN,GAA+B,IAA3BA,EAAOgoC,SAASrwD,QAA0C,IAA1BqoB,EAAOioC,QAAQtwD,OAC/C,MAAM,IAAIzC,EAAa,eAAgB,yBAE3C,MAAM2yB,EAAM91B,KAAK6V,eACjB,IAAIy/C,EAAMt1D,KAAKqiC,eAAeizB,IAC1BC,EAAMv1D,KAAKqiC,eAAekzB,IAC1BtwD,KAAK4C,IAAIomB,EAAOkoC,UAAYloC,EAAOmoC,YAAc,KACjDd,EAAM,EACNC,EAAM,GAEV,MAAME,EAAgBz1D,KAAKqiC,eAAeozB,cACpCC,EAAe11D,KAAKqiC,eAAeqzB,aACnCphC,EAAUt0B,KAAKqiC,eAAe/N,QAAUrG,EAAO2S,UAI/Ci1B,EAAgB71D,KAAK6vB,MAAMgmC,cAE3BC,EAAe91D,KAAK6vB,MAAMimC,aAChC,IAAK,IAAIvtD,EAAI,EAAGA,EAAIstD,EAAcjwD,SAAU2C,EAAG,CAC3C,MAAMu4C,GAAQ7yB,EAAOkoC,UAAYT,GAAgBznC,EAAOmoC,WAAaX,IAAkB,EACjFY,EAAapoC,EAAOgoC,SAASJ,EAActtD,IAAM+rB,EACjDgiC,EAAYroC,EAAOioC,QAAQJ,EAAavtD,IAAM+rB,EACpD,GAAI7uB,MAAM4wD,IAAe5wD,MAAM6wD,GAC3B,MAAM,IAAInzD,EAAa,eAAgB,kCAE3C,MAAMozD,GAAYF,EAAaC,GAAa,EAAIhB,EAAMrnC,EAAO2S,UACvD41B,GAAeH,EAAaC,GAAa,EAAIf,EAAMtnC,EAAO2S,UAChE9K,EAAIuV,UAAU,WAAYrrC,KAAK0S,aAAa,OAC5CojB,EAAIQ,YACJR,EAAIS,OAAOtI,EAAOmoC,WAAaX,EAAeY,GAC9CvgC,EAAIW,iBAAiBqqB,EAAMyV,EAAUtoC,EAAOkoC,UAAYT,EAAcY,GACtExgC,EAAIW,iBAAiBqqB,EAAM0V,EAAavoC,EAAOmoC,WAAaX,EAAeY,GAC3EvgC,EAAI4e,YACJ5e,EAAIa,OACJb,EAAIyV,cAGZ4V,WAAWiV,EAAYD,GACnB,IAAIvoD,EAAIkF,EAAIqzC,EACZ,IAAKnmD,KAAK+E,KACN,OACJ,MAAM+wB,EAAM91B,KAAK6V,eACjB,IAAI4gD,GAAYL,EAAaD,GAAa,EAC1CM,GAAY3gC,EAAI0a,YAAYxwC,KAAK+E,MAAMuF,MAAQ,EAC/C,MAAM4sB,EAAqG,QAA5FpkB,EAAsC,QAAhClF,EAAK5N,KAAK6vB,MAAM+lC,kBAA+B,IAAPhoD,OAAgB,EAASA,EAAGqqB,oBAAiC,IAAPnlB,EAAgBA,EAAqC,QAA/BqzC,EAAKnmD,KAAK6vB,MAAMs5B,iBAA8B,IAAPhD,OAAgB,EAASA,EAAGluB,aACxMf,IACApB,EAAI/gB,OACJ+gB,EAAIlf,QAAQ5W,KAAK8W,UACjBgf,EAAIyb,SAASvxC,KAAK+E,KAAM0xD,EAAWz2D,KAAKqiC,eAAemzB,aAAct+B,EAAMga,iBAAmB,GAC9Fpb,EAAIngB,WAMZ+gD,WACI,OAAO12D,KAAK6vB,MAEhB/Z,OACI9V,KAAK6V,eACL7V,KAAKmW,cACL,MAAMy/C,EAAa51D,KAAK6vB,MAAM+lC,WACxBzM,EAAYnpD,KAAK6vB,MAAMs5B,UAE7B,IAAIiN,EAAa,EACbD,EAAY,EACZF,EAAW,CAAC,GACZC,EAAU,CAAC,GACXhtB,EAAiB,EACrB,GAAI0sB,EACAQ,EAAaR,EAAWha,eAAiB57C,KAAKqiC,eAAeszB,YAC7DzsB,EAAiB0sB,EAAW5mB,mBAC5BinB,EAAWL,EAAW7kB,aAErB,GAAIoY,EAAW,CAEhBiN,EADcjN,EAAUlxB,aACL0+B,eACnBV,EAAW9M,EAAUpY,QACrB/wC,KAAK6vB,MAAMgmC,cAAgB71D,KAAK6vB,MAAMimC,aAE1C,GAAI3M,EACAgN,EAAYhN,EAAUrN,cAAgB97C,KAAKqiC,eAAeszB,YAC1DzsB,EAAiBigB,EAAUna,mBAC3BknB,EAAU/M,EAAUpY,aAEnB,GAAI6kB,EAAY,CAEjBO,EADcP,EAAW39B,aACP2+B,aAClBV,EAAUN,EAAW7kB,QACrB/wC,KAAK6vB,MAAMimC,aAAe91D,KAAK6vB,MAAMgmC,cAazC,OAXI71D,KAAK4gC,YACLsI,EAAiBlpC,KAAK4gC,WAE1B5gC,KAAKg2D,UAAU,CACXI,WAAAA,EACAD,UAAAA,EACAF,SAAAA,EACAC,QAAAA,EACAt1B,UAAWsI,IAEflpC,KAAKmhD,WAAWiV,EAAYD,IACrB,GAIff,GAASp+C,UAAY3W,OAAOgX,OAAO,GAAIzD,EAAQoD,WC1KxC,MAAM6/C,WAAezB,GACb1zD,sBACP,OAAOG,EAASg1D,OAEpBtxD,sBAAsBsqB,GAClB,OAAO,IAAIgnC,GAAOhnC,EAAO,KAE7BtqB,qBAAqBsqB,GACjB,OAAO,IAAIgnC,GAAOhnC,EAAO,KAa7BpuB,YAAYouB,EAAO9qB,GACfxB,MAAMssB,EAAO9qB,GACb/E,KAAKqiC,eAAeizB,IAAM,EAC1Bt1D,KAAKqiC,eAAekzB,IAAM,GAC1Bv1D,KAAKqiC,eAAe/N,QAAU,EAC9Bt0B,KAAK4gC,WAAa,GC1BnB,IAAIk2B,IACX,SAAWA,GACPA,EAAUA,EAAkB,OAAI,GAAK,SACrCA,EAAUA,EAAgB,KAAI,GAAK,OACnCA,EAAUA,EAAgB,KAAI,GAAK,OAHvC,CAIGA,KAAcA,GAAY,KAItB,MAAMC,WAAcnjD,EACvBnS,YAAYu1D,GAYR,IAAIC,EACJ,GAZA1zD,QACAvD,KAAKk3D,qBAAuB,EAC5Bl3D,KAAKm3D,KAAOL,GAAUM,OACtBp3D,KAAKu3C,cAAe,EACpBv3C,KAAKq3D,UAAY,IAAIlyD,EAAS,EAAG,GACjCnF,KAAKs3D,iBAAmB,EACxBt3D,KAAK+mC,UAAY,GACjB/mC,KAAKkuB,QAAU,CACXqpC,cAAe1pC,EAAO0C,gBAIN,iBAATymC,EAAmB,CAE1B,MAAM/2B,EAAQ+2B,EAAK/2B,MAAM,gBACrBA,IACAg3B,EAAY,CACRvkC,UAAW7tB,SAASo7B,EAAM,IAC1BtN,WAAY9tB,SAASo7B,EAAM,WAKnCg3B,EAAYD,EAGhBh3D,KAAKg3D,KAAO32D,OAAOgX,OAAO,CAAEqb,UAAW,EAAGC,WAAY,EAAG7hB,WAAY+c,EAAO9V,YAAck/C,GAE1Fj3D,KAAKw3D,WAAa,IAAIryD,EAASnF,KAAKg3D,KAAKtkC,WAAa1yB,KAAKg3D,KAAKlmD,WAAa9Q,KAAKg3D,KAAKrkC,YAAa,GACpG3yB,KAAKy3D,kBAAoBz3D,KAAKw3D,WAAWjwD,QAElC7F,sBACP,OAAOG,EAASk1D,MAQTW,kBACP,OAAOZ,GAGXa,gBACI,OAAO33D,KAAKw3D,WAGhBI,eACI,OAAO53D,KAAKq3D,UAGhBQ,sBACI,OAAO73D,KAAKs3D,iBAGhBQ,uBACI,OAAO93D,KAAKy3D,kBAGhBjxB,eACI,OAAOxmC,KAAK+mC,UAGhBgxB,UACI,OAAO/3D,KAAKm3D,KAMhBa,QAAQb,GAEJ,OADAn3D,KAAKm3D,KAAOA,EACLn3D,KAGXi4D,0BACI,OAAOj4D,KAAKk3D,qBAGhBgB,sBACI,OAAOl4D,KAAKk3D,qBAAuBl3D,KAAKg3D,KAAKlmD,WAGjDmmB,SAASC,GAIL,OAHAl3B,KAAKk3B,MAAQA,EAEbl3B,KAAKwJ,iBAAc5F,EACZ5D,KAEX46B,WACI,OAAO56B,KAAKk3B,MAGhBzgB,iBACI,IAAKzW,KAAKwJ,YAAa,CACnB,MAAM0tB,EAAQl3B,KAAKi4B,aACnB,IAAIzuB,EACJ,IAAK,IAAIjB,EAAI,EAAGA,EAAIvI,KAAK+mC,UAAUnhC,SAAU2C,EAAG,CAC5C,MAAM4vD,EAAWn4D,KAAK+mC,UAAUx+B,GAChC4vD,EAASlhC,SAASC,GAClB,MAAM7a,EAAK87C,EAAS1hD,iBAChB4F,IACA7S,EAAcA,EAAcA,EAAYD,UAAU8S,GAAMA,GAGhErc,KAAKwJ,YAAcA,EAEvB,OAAOxJ,KAAKwJ,YAGhB4uD,UAAUC,GAEN,OADAr4D,KAAKm3D,KAAOkB,EAASvB,GAAUM,OAASN,GAAUwB,KAC3Ct4D,KAGXu4D,aACI,OAAIv4D,KAAKm3D,OAASL,GAAUM,QAAUp3D,KAAKm3D,OAASL,GAAU0B,MACnDx4D,KAAKq3D,UAAUvwD,OAAO9G,KAAKw3D,YAa1CiB,iBAAiBC,GAEb,OADA14D,KAAKkuB,QAAQqpC,cAAgBmB,EACtB14D,KAMX24D,0BACI,MAAMnB,EAAax3D,KAAKq3D,UAAUj2D,QAGlC,OADApB,KAAK44D,aAAe54D,KAAK+mC,UAAU3zB,KADtB+kD,GAAalzD,KAAK4G,IAAI7L,KAAKkuB,QAAQqpC,cAAeY,EAASxxB,WAAWvlC,QAAUo2D,KACjDxmB,QAAO,CAACvsC,EAAGC,IAAMD,EAAIC,GAAG,GAC7D1E,KAAK44D,aAGhBC,QAAQC,GACC94D,KAAK44D,eACN54D,KAAK44D,aAAe54D,KAAK24D,2BAE7B,MAAMnB,EAAax3D,KAAKq3D,UAAUj2D,QAGlC,MAFY,CAAC23D,GAAM9zD,KAAK4G,IAAI7L,KAAKkuB,QAAQqpC,cAAewB,EAAIvB,GACjDwB,CAAIF,GAAa94D,KAAK44D,aAIrCK,YAAYd,GACR,IAAKA,EAAS1xB,oBAAqB,CAC/B,MAAMxW,EAAQkoC,EAASxxB,WAIvB,GAFA3mC,KAAKq3D,UAAUjxD,IAAI6pB,GACnBjwB,KAAK44D,aAAe,GACf54D,KAAKm3D,OAASL,GAAUM,QAAUp3D,KAAKm3D,OAASL,GAAU0B,OAC3Dx4D,KAAKq3D,UAAUlwD,YAAYnH,KAAKw3D,YAEhC,MADAx3D,KAAKq3D,UAAU1wD,SAASspB,GAClB,IAAI9sB,EAAa,cAAe,mBAGtC8sB,EAAM5oB,SAASrH,KAAKy3D,qBACpBz3D,KAAKy3D,kBAAoBxnC,EAAM1oB,SAEnCvH,KAAKk3D,qBAAuBl3D,KAAKq3D,UAAUhyD,YAE3CrF,KAAKw3D,WAAWpxD,IAAI,EAAGpG,KAAKq3D,UAAUhyD,aAK1C,OAFArF,KAAK+mC,UAAUvyB,KAAK2jD,GACpBA,EAAS9hB,SAASr2C,MACXA,KAGXk5D,aAAanyB,GACT,IAAK,IAAIx+B,EAAI,EAAGA,EAAIw+B,EAAUnhC,SAAU2C,EACpCvI,KAAKi5D,YAAYlyB,EAAUx+B,IAE/B,OAAOvI,KAGXs3C,YACI,GAAIt3C,KAAKu3C,aACL,OAAOv3C,KACX,MAAMk3B,EAAQl3B,KAAKi4B,aAOnB,OANAj4B,KAAK+mC,UAAUpyB,SAASwjD,IACfA,EAASv9B,YACVu9B,EAASlhC,SAASC,MAG1Bl3B,KAAKu3C,cAAe,EACbv3C,KAEXi4B,aACI,OAAOv0B,EAAQ1D,KAAKk3B,MAAO,UAAW,kCAU1CphB,KAAKhB,EAAU9U,KAAK6V,eAAgBqhB,GAGhC,IAAI1tB,EAFJ0tB,EAAQA,MAAAA,EAAqCA,EAAQl3B,KAAKk3B,MAC1Dl3B,KAAKmW,cAEL,IAAK,IAAI5N,EAAI,EAAGA,EAAIvI,KAAK+mC,UAAUnhC,SAAU2C,EAAG,CAC5C,MAAM4vD,EAAWn4D,KAAK+mC,UAAUx+B,GAE5B2uB,GACAihC,EAASlhC,SAASC,GAEtBxzB,EAAQy0D,EAASv9B,WAAY,eAAgB,mDAC7C,MAAMve,EAAK87C,EAAS1hD,iBAChB4F,IACA7S,EAAcA,EAAcA,EAAYD,UAAU8S,GAAMA,GAE5D87C,EAASxhD,WAAW7B,GACpBqjD,EAASviD,gBAEb5V,KAAKwJ,YAAcA,GChOpB,MAAMhH,WAAuBg2B,EAEhC/2B,YAAY03D,EAAaC,GAkBrB,OAjBA71D,QACAvD,KAAKu3C,cAAe,EACpBv3C,KAAKszB,SAAWkF,EAASE,SAASC,KAClC34B,KAAKm5D,YAAcA,EACnBn5D,KAAKsK,MAAQ,EACbtK,KAAKo5D,UAAYA,EACjBp5D,KAAKq5D,UAAOz1D,EACZ5D,KAAKsmC,MAAQ,IAAIywB,GAAM,CACnBrkC,UAAW,EACXC,WAAY,EACZ7hB,WAAY+c,EAAO9V,aACpBqgD,WAAU,GACbp4D,KAAKqiC,eAAiB,CAClBi3B,aAAc,GAElBt5D,KAAKu5D,MAAQ,GACbv5D,KAAKsmC,MAAM4yB,aAAal5D,KAAKm5D,aACtBn5D,KAEA0B,sBACP,OAAOG,EAASW,eAGpB+C,cAAci0D,EAAkB72B,GAG5B,IAAK62B,GAAgD,IAA5BA,EAAiB5zD,OACtC,OAAO,EACX,MAAM6zD,EAAa,GACnB,IAAI7P,EAAY,KACZvmB,EAAS,EACb,IAAK,IAAI96B,EAAI,EAAGA,EAAIixD,EAAiB5zD,SAAU2C,EAAG,CAC9C,MAAMmxD,EAAkBF,EAAiBjxD,GACnCkxB,EAAOigC,EAAgBlgC,UACvBmgC,EAAe92D,EAAY42B,GAC3BmX,EAAU+oB,EAXQ,EACF,EAWtB,GAAIA,GAAgBlgC,IAASmwB,EAAW,CAEpC,IAAK,IAAIhlD,EAAI,EAAGA,EAAI60B,EAAKtmB,KAAKvN,SAAUhB,EACpCy+B,EAASp+B,KAAK2E,IAAI6vB,EAAK+J,yBAA0BH,GAErDumB,EAAYnwB,EAEhBggC,EAAWjlD,KAAK,CAAE1O,MAAOu9B,EAAQq2B,gBAAAA,EAAiB9oB,QAAAA,IAGtD,IACIgpB,EADAC,EAAcJ,EAAW,GAAG3zD,MAEhC,IAAK,IAAIyC,EAAI,EAAGA,EAAIkxD,EAAW7zD,SAAU2C,EAAG,CACxC,MAAMmxD,EAAkBD,EAAWlxD,GAAGmxD,gBACtCA,EAAgBpiB,YAChBsiB,EAAcF,EAAgBjqC,WAAagqC,EAAWlxD,GAAGqoC,QACzDipB,EAAc50D,KAAK2E,IAAIgwD,EAAaC,GAExC,IAAK,IAAItxD,EAAI,EAAGA,EAAIkxD,EAAW7zD,SAAU2C,EAAG,CACxC,MAAMmxD,EAAkBD,EAAWlxD,GAAGmxD,gBACtCE,EAAcF,EAAgBjqC,WAAagqC,EAAWlxD,GAAGqoC,QACzD8oB,EAAgBp/B,2BAA2Bu/B,EAAc50D,KAAKulC,IAAIovB,EAAaC,GAAe/2D,GAAUmsD,oBAG5G,OADAtsB,EAAMK,YAAc62B,GACb,EAEXviB,YACQt3C,KAAKu3C,eAEJv3C,KAAK0sC,YACN1sC,KAAK0sC,UAAY,IAAIotB,IAEzB95D,KAAK0sC,UAAUqtB,WAAW,CAAC/5D,KAAKsmC,QAAQ0zB,OAAO,CAACh6D,KAAKsmC,OAAQ,EAAG,IAChEtmC,KAAKu5B,SAASv5B,KAAK0sC,UAAUutB,oBAC7Bj6D,KAAKu3C,cAAe,GAExB2iB,UAAUf,GAEN,IADAA,EAAcA,GAAen5D,KAAKm5D,aAClBvzD,OAAS,EAAG,CACxB,MAAMm1C,EAAO,IAAIof,GAAKhB,GACtBpe,EAAK1Y,eAAe+3B,WAAa,EACjCrf,EAAK1Y,eAAeg4B,oBAAsB,EAC1Cr6D,KAAKu5D,MAAM/kD,KAAKumC,GAEpB,OAAO/6C,KAEXu5B,SAASjvB,GAEL,OADAtK,KAAKsK,MAAQA,EACNtK,KAEXyvB,WACI,OAAOzvB,KAAKsK,MAAQxH,GAAUmsD,mBAElCnnB,gBACI,OAAO9nC,KAAKm5D,YAEhBrjD,OACI,MAAMggB,EAAM91B,KAAK6V,eACX4jB,EAAOz5B,KAAK05B,oBAQlB,GAPA15B,KAAKmW,cAvGb,YAAcpS,GACNvB,GAAe4/B,OACfv+B,EAAI,0BAA2BE,GAsG/B,CAAE,gCAAiC01B,GACnCz5B,KAAKw6B,sBAAsBx6B,KAAK8nC,gBAAiBrO,GAEjDz5B,KAAKm5D,YAAYxkD,SAAS2lD,GAAcA,EAAU3jD,WAAWmf,GAAKhgB,SAElE9V,KAAKu5D,MAAM5kD,SAASomC,GAASA,EAAKpkC,WAAWmf,GAAKhgB,SAC9C9V,KAAKo5D,UAAW,CAEhB,MAAMO,EAAe92D,EAAY42B,GAC3B8gC,EAAWZ,EAAevE,GAAWyB,GAC3C72D,KAAKq5D,KAAO,IAAIkB,EAAS,CACrBpR,UAAWnpD,KAAKm5D,YAAY,GAC5BvD,WAAYn8B,EACZo8B,cAAe,CAAC,GAChBC,aAAc,CAAC,KAEnB91D,KAAKq5D,KAAKh3B,eAAekzB,IAAM,GAC/Bv1D,KAAKq5D,KAAKh3B,eAAe/N,SAAWqlC,EAAe,EAAI,GAAK35D,KAAKqiC,eAAei3B,aAChFt5D,KAAKq5D,KAAK1iD,WAAWmf,GAAKhgB,SAItCtT,GAAe4/B,OAAQ,ECnIhB,MAAMo4B,WAAqBhiC,EAC9B/2B,YAAYg5B,GACRl3B,QACAvD,KAAKu3C,cAAe,EACpBv3C,KAAKszB,SAAWkF,EAASE,SAASC,KAClC34B,KAAKy6B,SAAWA,EAChBz6B,KAAKy6B,SAAS9lB,SAASqmB,IACnBA,EAAQ4a,gBAAe,MAE3B51C,KAAKsK,MAAQ,EACbtK,KAAK0sC,UAAY,IAAIotB,GACrB95D,KAAKsmC,MAAQ,IAAIywB,GAAM,CACnBrkC,UAAW,EACXC,WAAY,EACZ7hB,WAAY+c,EAAO9V,aACpBqgD,WAAU,GACbp4D,KAAKsmC,MAAM4yB,aAAal5D,KAAKy6B,UAEtB/4B,sBACP,OAAOG,EAAS24D,aAGpBj1D,cAAck1D,EAAQ93B,GAClB,IAAK83B,GAA4B,IAAlBA,EAAO70D,OAClB,OAAO,EACX,IAAI0E,EAAQ,EACZ,IAAK,IAAI/B,EAAI,EAAGA,EAAIkyD,EAAO70D,SAAU2C,EAAG,CACpC,MAAMmyD,EAAQD,EAAOlyD,GACrBmyD,EAAMpjB,YACNhtC,GAASowD,EAAMjrC,WAGnB,OADAkT,EAAMK,YAAc14B,GACb,EAEXgtC,YACQt3C,KAAKu3C,eAETv3C,KAAK0sC,UAAUqtB,WAAW,CAAC/5D,KAAKsmC,QAAQ0zB,OAAO,CAACh6D,KAAKsmC,OAAQ,GAC7DtmC,KAAKu5B,SAASv5B,KAAK0sC,UAAUutB,oBAC7Bj6D,KAAKu3C,cAAe,GAExBhe,SAASjvB,GAEL,OADAtK,KAAKsK,MAAQA,EACNtK,KAEXyvB,WACI,OAAOzvB,KAAKsK,MAEhBwL,OACI,MAAMggB,EAAM91B,KAAK6V,eACX4jB,EAAOz5B,KAAK05B,oBAClB15B,KAAKmW,cACLnW,KAAKw6B,sBAAsBx6B,KAAKy6B,SAAUhB,GAC1Cz5B,KAAKy6B,SAAS9lB,SAASqmB,GAAYA,EAAQrkB,WAAWmf,GAAKlgB,mBCxD5D,MAAM+kD,GACTl5D,YAAYysB,GACRluB,KAAKu3C,cAAe,EACpBv3C,KAAKy3C,eAAgB,EACrBz3C,KAAK46D,OAAS1sC,GAAWA,EAAQ0sC,OAAS1sC,EAAQ0sC,OAAS,EAC3D56D,KAAK66D,YAAc,IAAI11D,EAAS,EAAG,GACnCnF,KAAK86D,SAAW,IAAI31D,EAAS,EAAG,GAChCnF,KAAK+6D,iBAAcn3D,EACnB5D,KAAKg7D,cAAWp3D,EAChB5D,KAAKi7D,iBAAcr3D,EACnB5D,KAAK4zC,QAAU,EACf5zC,KAAK2D,EAAI,EACT3D,KAAKk7D,MAAQ,EACbl7D,KAAKm7D,QAAU,EACfn7D,KAAK+mC,UAAY,GACjB/mC,KAAKo7D,iBAAmB,GAExBp7D,KAAKo5C,OAAS,EACdp5C,KAAK07C,QAAU,EACf17C,KAAK24C,oBAAsB,EAC3B34C,KAAK44C,qBAAuB,EAC5B54C,KAAK86B,UAAY,EACjB96B,KAAK+6B,WAAa,EAClB/6B,KAAKq7D,YAAc,EACnBr7D,KAAKs7D,aAAe,EACpBt7D,KAAKu7D,UAAY,GACjBv7D,KAAKsK,MAAQ,EACbtK,KAAKq1C,iBAAmB,CAIpBC,QAAS,CAAElc,KAAM,EAAGC,MAAO,IAGnC9zB,sBAAsBi2D,GAClB,MAAMC,EAAWD,EAASD,UACpBtpD,EAAQwpD,EAASh0B,QAAQ+zB,GAC/B,GAAIvpD,EAAQ,EAAIwpD,EAAS71D,OACrB,OAAO61D,EAASxpD,EAAQ,GAEhCypD,YACI,OAAO17D,KAAK46D,OAEhB9xD,OACI,OAAO9I,KAAK2D,EAEhBuF,KAAKvF,GAID,OAHA3D,KAAK2D,EAAIA,EACT3D,KAAKk7D,MAAQv3D,EACb3D,KAAKm7D,QAAU,EACRn7D,KAEX27D,WACI,OAAO37D,KAAKk7D,MAEhBU,SAASV,GACLl7D,KAAKk7D,MAAQA,EACbl7D,KAAK2D,EAAIu3D,EAAQl7D,KAAKm7D,QAE1BU,aACI,OAAO77D,KAAKm7D,QAEhBjgC,WAAWigC,GACPn7D,KAAKm7D,QAAUA,EACfn7D,KAAK2D,EAAI3D,KAAKk7D,MAAQC,EAE1B1rC,WACI,OAAOzvB,KAAKsK,MAAuB,EAAftK,KAAK4zC,QAE7B+I,WAAW/I,GAEP,OADA5zC,KAAK4zC,QAAUA,EACR5zC,KAEX87D,cACI,OAAO97D,KAAK86D,SAEhBiB,cACI,OAAO/7D,KAAKg7D,SAEhBgB,iBACI,OAAOh8D,KAAK+6D,YAEhBkB,iBACI,OAAOj8D,KAAKi7D,YAEhBz0B,eACI,OAAOxmC,KAAK+mC,UAOhBm1B,oBAAoBC,GAChB,OAAOn8D,KAAKo7D,iBAAiBe,GAEjCC,sBACI,OAAOp8D,KAAKo7D,iBAEhBiB,4BACI,OAAOr8D,KAAK+mC,UAAUqU,QAAQ+c,GAAaA,EAASniB,oBAGxDrlC,aACI,MAAM,MAAErG,EAAK,QAAEoxC,EAAO,OAAEtC,EAAM,oBAAET,EAAmB,qBAAEC,EAAoB,UAAE9d,EAAS,WAAEC,EAAU,YAAEsgC,EAAW,aAAEC,GAAkBt7D,KACjI,MAAO,CACHsK,MAAAA,EACAoxC,QAAAA,EACAtC,OAAAA,EACAT,oBAAAA,EACAC,qBAAAA,EACA9d,UAAAA,EACAC,WAAAA,EACAsgC,YAAAA,EACAC,aAAAA,GAGRgB,iBACI,OAAOt8D,KAAK66D,YAEhB0B,eAAeC,GACXx8D,KAAK66D,YAAc2B,EACnBx8D,KAAKu3C,cAAe,EAExB0hB,YAAYd,EAAUgE,GAClB,IAAKhE,EACD,MAAM,IAAIh1D,EAAa,cAAe,2BAE1C,IAAKg1D,EAAS1xB,oBAAqB,CAC/B,MAAMxW,EAAQkoC,EAASxxB,WACnB1W,EAAM9oB,YAAYnH,KAAK86D,YACvB96D,KAAK86D,SAAW7qC,EAAM1oB,QACtBvH,KAAK+6D,YAAc5C,IAEF,MAAjBn4D,KAAKg7D,UAIA/qC,EAAM5oB,SAASrH,KAAKg7D,aAHzBh7D,KAAKg7D,SAAW/qC,EAAM1oB,QACtBvH,KAAKi7D,YAAc9C,GAW3B,OAJAA,EAAS/gB,eAAep3C,MACxBA,KAAK+mC,UAAUvyB,KAAK2jD,GACpBn4D,KAAKo7D,iBAAiBe,GAAc,GAAKhE,EACzCn4D,KAAKu3C,cAAe,EACbv3C,KAEXs3C,YACI,GAAIt3C,KAAKu3C,aACL,OAAOv3C,KACX,IAAK,IAAIuI,EAAI,EAAGA,EAAIvI,KAAK+mC,UAAUnhC,SAAU2C,EAAG,CAC5C,MAAM4vD,EAAWn4D,KAAK+mC,UAAUx+B,GAChC4vD,EAAS7gB,YACT,MAAMhnC,EAAU6nD,EAASxnD,aAEzB3Q,KAAK24C,oBAAsB1zC,KAAK2E,IAAI5J,KAAK24C,oBAAqBroC,EAAQqoC,qBACtE34C,KAAK44C,qBAAuB3zC,KAAK2E,IAAI5J,KAAK44C,qBAAsBtoC,EAAQsoC,sBAExE54C,KAAKo5C,OAASn0C,KAAK2E,IAAI5J,KAAKo5C,OAAQ9oC,EAAQ8oC,QAE5Cp5C,KAAK07C,QAAUz2C,KAAK2E,IAAI5J,KAAK07C,QAASprC,EAAQs+B,YAAc,GAE5D5uC,KAAK86B,UAAY71B,KAAK2E,IAAI5J,KAAK86B,UAAWxqB,EAAQwqB,WAClD96B,KAAK+6B,WAAa91B,KAAK2E,IAAI5J,KAAK+6B,WAAYzqB,EAAQyqB,YAEpD/6B,KAAKq7D,YAAcp2D,KAAK2E,IAAI5J,KAAKq7D,YAAa/qD,EAAQwqB,UAAYxqB,EAAQqoC,qBAC1E34C,KAAKs7D,aAAer2D,KAAK2E,IAAI5J,KAAKs7D,aAAchrD,EAAQyqB,WAAazqB,EAAQsoC,sBAE7E54C,KAAKsK,MAAQtK,KAAKo5C,OAASp5C,KAAKq7D,YAAcr7D,KAAKs7D,aAEvD,OAAOt7D,KAEXw3C,aACI,OAAIx3C,KAAKy3C,gBAETz3C,KAAKy3C,eAAgB,GADVz3C,KAIf81C,sBACI,OAAO91C,KAAKq1C,kBCzKb,MAAMonB,WAAiBjkC,EAK1B/2B,YAAYqQ,GACRvO,QACAvD,KAAK8R,KAAOA,EACZ9R,KAAK08D,SAAU,EACf18D,KAAKqiC,eAAiB,CAClBC,WAAY,GACZq6B,uBAAwB,EACxBC,uBAAwB,GAE5B58D,KAAK68D,SAAWhvC,EAAOivC,cAAc98D,KAAK8R,MAI1C,MAAMxB,EAAUtQ,KAAK2Q,aAQrB,GANA3Q,KAAK+8D,wBAAyB,EAG9B/8D,KAAKg9D,cAAgB1sD,GAAWA,EAAQ0sD,cAAgB1sD,EAAQ0sD,cAAgB,EAChFh9D,KAAKi9D,cAAgB3sD,GAAWA,EAAQ2sD,cAAgB3sD,EAAQ2sD,cAAgB,EAChFj9D,KAAKk9D,0BAA4BT,GAASS,0BAA0Bz1B,QAAQznC,KAAK8R,OAAS,GACrF9R,KAAK68D,SACN,MAAM,IAAI15D,EAAa,gBAAiB,wBAAwBnD,KAAK8R,SAEzE9R,KAAKq0B,QAAU/jB,EAAUA,EAAQ6qD,QAAU,EAC3Cn7D,KAAKs0B,QAAUhkB,EAAUA,EAAQkyC,QAAU,EAC3CxiD,KAAKmvB,MAAQ,IAAIG,EAAMtvB,KAAK68D,SAASx5D,KAAMrD,KAAKqiC,eAAeC,WAAY,CACvEhhC,SAAU,YAAYtB,KAAK68D,SAASx5D,SAGpCo5D,GAASU,uBAAuB11B,QAAQznC,KAAK8R,OAAS,IACtD9R,KAAK08D,SAAU,GAIdpsD,GACDtQ,KAAKmvB,MAAM0I,UAAU,GAAK,GAIvBn2B,sBACP,OAAOG,EAAS46D,SAETxZ,wBAEP,OADkBp1B,EAAOgV,mBACR5xB,aAAa,8BAGlC1L,cAAc6mB,EAAWuW,GACrB,IAAKvW,GAAkC,IAArBA,EAAUxmB,OACxB,OAAO,EACX,IAAI0E,EAAQ,EACRylC,EAAcpN,EAAMoN,YACpB/M,EAAaL,EAAMK,WACnBwf,EAAU,EACd,IAAK,IAAIj6C,EAAI,EAAGA,EAAI6jB,EAAUxmB,SAAU2C,EAAG,CACvC,MAAMs0D,EAAWzwC,EAAU7jB,GACrBgqC,EAAY,EAiBlB,GAhBIkqB,GAASW,gBAAgB31B,QAAQo1B,EAAS/qD,OAAS,IACnD+qD,EAASxoC,SAAW0b,EAAc,GAElC0sB,GAASY,eAAe51B,QAAQo1B,EAAS/qD,OAAS,IAClD+qD,EAASxoC,SAAW2O,EAAa,GAEjC65B,EAASG,eAAiBH,EAASxoC,QAAU,EAC7C2O,GAAc65B,EAASG,cAElBH,EAASG,eAAiBH,EAASxoC,SAAW,EACnD0b,GAAe8sB,EAASG,cAAgBP,GAASxZ,WAGjD34C,EAAQrF,KAAK2E,IAAIizD,EAASptC,WAAYnlB,GAGtCmyD,GAASa,qBAAqB71B,QAAQo1B,EAAS/qD,OAAS,EAAG,CAGtCpO,EAAQm5D,EAASpjC,KAAM,kBAC3B+V,iBAAmB,GAAKqtB,EAAS1iC,gBAAkB3B,EAASE,SAASO,OAClF0J,EAAM+M,eAAiB6C,EACvBsqB,EAASvoC,SAAWkuB,EACpBA,GAAWqa,EAAS1tC,MAAM+E,KAAKjrB,SAG/B05B,EAAMlK,WAAa8Z,EACnBsqB,EAASvoC,SAAWkuB,EACpBA,GAAWqa,EAAS1tC,MAAM+E,KAAKjrB,aAI/B4zD,EAAS1iC,gBAAkB3B,EAASE,SAASO,OAC7C4jC,EAASxiC,YAAYsI,EAAM+M,eAC3B/M,EAAM+M,eAAiB6C,IAGvBsqB,EAASxiC,YAAYsI,EAAMlK,WAC3BkK,EAAMlK,WAAa8Z,GAQ/B,OAFA5P,EAAMK,WAAaA,EAAa14B,EAAQ,EACxCq4B,EAAMoN,YAAcA,EAAczlC,EAAQ,GACnC,EAMA6yD,oCACP,MAAO,CAAC,OAAQ,WAAY,SAMrBE,4BACP,MAAO,CAAC,SAMDH,uCACP,MAAO,CAAC,OAAQ,OAAQ,WAAY,WAAY,OAAQ,gBAAiB,cAAe,SAMjFE,6BACP,MAAO,CAAC,OAAQ,OAAQ,WAAY,WAAY,WAAY,QAAS,QAG9DE,kCACP,MAAO,CAAC,OAAQ,gBAAiB,eAOrC3sD,aACI,OAAOkd,EAAOgV,mBAAmBlyB,aAAaK,OAAOusD,cAAcv9D,KAAK68D,SAASx5D,MAGrFm6D,WAAWd,GAEP,OADA18D,KAAK08D,QAAUA,EACR18D,KAGXy9D,mBAAmBC,GACf,MAAMxuC,EAAQlvB,KAAKqiC,eAAeC,WAAa,IAG/C,OAFAtiC,KAAK29D,gBAAkB,IAAIruC,EAAMzB,EAAO4U,gBAAgBi7B,GAAOr6D,KAAM6rB,GACrElvB,KAAK29D,gBAAgB9lC,UAAU,GAAK,GAC7B73B,KAGX49D,mBAAmBF,GACf,MAAMxuC,EAAQlvB,KAAKqiC,eAAeC,WAAa,IAG/C,OAFAtiC,KAAK69D,gBAAkB,IAAIvuC,EAAMzB,EAAO4U,gBAAgBi7B,GAAOr6D,KAAM6rB,GACrElvB,KAAK69D,gBAAgBhmC,UAAU,GAAK,GAC7B73B,KAGX8V,OACI,MAAMggB,EAAM91B,KAAK6V,eACX4jB,EAAOz5B,KAAK05B,oBAClB15B,KAAKmW,cACL,MAAM2nD,EAAUrkC,EAAKuV,mBACf9X,EAAQuC,EAAKxB,aACnBnC,EAAIuV,UAAU,WAAYrrC,KAAK0S,aAAa,OAE5C,MAAMqrD,EAActkC,EAAKqX,YAAY3G,aACrC,IAAIzhC,EAAIo1D,IAAYt1B,GAAKgB,KAAOu0B,EAAYpzB,MAAQozB,EAAYrzB,KAE5DznC,EAAUw2B,KACNA,EAAKsV,UACD+uB,IAAYt1B,GAAKgB,OACjB9gC,EAAIwuB,EAAMga,eAAelxC,KAAKy4B,YAKlC/vB,EAAIwuB,EAAMga,eAAelxC,KAAKy4B,YAGtC,MAAMulC,EAAyBF,IAAYt1B,GAAKgB,KAC1CoH,EAAU1Z,EAAMwM,yBACtB,IAAIqsB,EAAc,GAEbiO,GAA0BvkC,EAAKwhB,YAChC8U,GAAe,IAEnB,MACMkO,EAAqBv1D,EADNkoC,GAAW5wC,KAAKy4B,UAAYs3B,GAG3C3nB,EAAQ3O,EAAK4O,mBAAmBroC,KAAKszB,SAAUtzB,KAAKiS,OAC1D,IAAIisD,EAAS91B,EAAMzkC,EAGfw6D,EAASn+D,KAAKk9D,0BACZ90B,EAAM1/B,EACNzD,KAAKulC,IAAItT,EAAMga,eAAelxC,KAAKy4B,WAAYwlC,GAGrD,GAFAE,GAAUn+D,KAAKs0B,QAEXt0B,KAAK08D,QAAS,CACd,IAAI0B,EAAc,EAClB,MAAMC,EAASH,GAAUhnC,EAAMpuB,OAAS,IACxC,QAAyBlF,IAArB5D,KAAKo+D,YACLA,EAAcp+D,KAAKo+D,gBAElB,CACDA,GAAep+D,KAAKmvB,MAAMxe,aAAarG,MAAQ,EAC/C,MAAMg0D,EAAc3D,GAAY4D,eAAe9kC,EAAKkB,kBAEhDyjC,GADAE,EAC+C,IAA/BA,EAAYx1D,OAASu1D,GAGuB,IAA5CnnC,EAAMpuB,OAASouB,EAAMzH,WAAa4uC,GAEtDr+D,KAAKo+D,YAAcA,EAEvBF,GAAUE,GAhPtB,YAAcr6D,GACN04D,GAASr6B,OACTv+B,EAAI,oBAAqBE,GAgPzB,CAAE,uBAAwB/D,KAAK68D,SAAUqB,EAAQC,GAC7Cn+D,KAAK69D,kBACL79D,KAAK69D,gBAAgB/lC,OAAOhC,EAAKooC,EAAQC,GACzCA,GAAUn+D,KAAK69D,gBAAgBltD,aAAapG,OAC5C4zD,GAAUn+D,KAAKqiC,eAAes6B,wBAE9B38D,KAAKi9D,eAAiBxjC,EAAKsV,WAAyC,IAA5BtV,EAAKuV,qBAC7CmvB,GAAUn+D,KAAKi9D,eAEfxjC,EAAK+V,gBAAkB,GAAKitB,GAASU,uBAAuB11B,QAAQznC,KAAK8R,OAAS,IAClFqsD,EAAS1kC,EAAKxB,aAAaxhB,iBAAiB1N,OAAS,IAEzD/I,KAAKmvB,MAAM2I,OAAOhC,EAAKooC,EAASl+D,KAAKq0B,QAAS8pC,GAC1Cn+D,KAAK29D,kBACLQ,GAAUn+D,KAAKmvB,MAAMxe,aAAapG,OAASvK,KAAKqiC,eAAeu6B,uBAC/D58D,KAAK29D,gBAAgB7lC,OAAOhC,EAAKooC,EAAQC,IAE7CroC,EAAIyV,cAIZkxB,GAASr6B,OAAQ,EC1QV,MAAMo8B,WAAoBhmC,EAM7B/2B,YAAY6xB,GACR/vB,QACAvD,KAAKszB,SAAWA,MAAAA,EAA2CA,EAAWkF,EAASE,SAASC,KACxF34B,KAAKg0B,MAAQnG,EAAOgV,mBAAmB5xB,aAAa,6BACpDjR,KAAKu5B,SAAS1L,EAAOgV,mBAAmB5xB,aAAa,8BAE9CvP,sBACP,OAAOG,EAAS28D,YAGpBj5D,sBAAsBsqB,GAClB,IAAK,MAAM4J,KAAQ5J,EACf,IAAK,IAAItnB,EAAI,EAAGA,EAAIkxB,EAAKtmB,KAAKvN,OAAQ2C,IAClCkxB,EAAKoO,YAAY,IAAI22B,GAAY3qC,EAAiB8E,MAAOpwB,GACzDkxB,EAAKoO,YAAY,IAAI22B,GAAY3qC,EAAiByF,OAAQ/wB,GAKtEhD,cAAck5D,EAAa97B,GACvB,IAAK87B,GAAsC,IAAvBA,EAAY74D,OAC5B,OAAO,EACX,IAAI84D,EAAW,EACXC,EAAW,EACf,IAAK,IAAIp2D,EAAI,EAAGA,EAAIk2D,EAAY74D,SAAU2C,EAAG,CACzC,MAAMq2D,EAAcH,EAAYl2D,GAC1BkxB,EAAOmlC,EAAYplC,UACnBuwB,EAAM6U,EAAYzkC,cAClBloB,EAAQ2sD,EAAY/kC,aAC1B,IAAI/zB,EAAQ,EACRikD,IAAQl2B,EAAiByF,QACzBxzB,EAAQ2zB,EAAK4hB,sBAAsBppC,GACnC0sD,EAAWA,EAAW74D,EAAQ84D,EAAYt0D,MAAQq0D,EAAW74D,EAAQ84D,EAAYt0D,OAEjFy/C,IAAQl2B,EAAiB8E,OACzB7yB,EAAQ2zB,EAAK6hB,qBAAqBrpC,GAClCysD,EAAWA,EAAW54D,EAAQ84D,EAAYt0D,MAAQo0D,EAAW54D,EAAQ84D,EAAYt0D,OAErFs0D,EAAYxnC,UAAUtxB,GAI1B,OAFA68B,EAAMK,YAAc07B,EACpB/7B,EAAMoN,aAAe4uB,GACd,EAGXhlC,QAAQF,GAQJ,OAPAz5B,KAAKy5B,KAAOA,EACZz5B,KAAKg0B,MAAQnG,EAAOgV,mBAAmB5xB,aAAa,6BACpDjR,KAAKu5B,SAAS1L,EAAOgV,mBAAmB5xB,aAAa,8BACjD5O,EAAYo3B,KACZz5B,KAAKg0B,MAAQnG,EAAOgV,mBAAmB5xB,aAAa,+BACpDjR,KAAKu5B,SAAS1L,EAAOgV,mBAAmB5xB,aAAa,iCAElDjR,KAGX8V,OACI,MAAMggB,EAAM91B,KAAK6V,eACX4jB,EAAOz5B,KAAK05B,oBAClB15B,KAAKmW,cACL,MAAMiyB,EAAQ3O,EAAK4O,mBAAmBroC,KAAKszB,SAAUtzB,KAAKiS,MAAO,CAAEq3C,gBAAgB,IAC7E3lD,EAAIykC,EAAMzkC,EAAI3D,KAAKq0B,QACnB3rB,EAAI0/B,EAAM1/B,EAAI1I,KAAKs0B,QACrBt0B,KAAKszB,UAAYkF,EAASE,SAASY,MACnChK,EAAMo9B,YAAY52B,EAAKnyB,EAAI,EAAG+E,EAAG1I,KAAKg0B,MAAO,2BAA4B,CACrE1yB,SAAU,+CAGTtB,KAAKszB,UAAYkF,EAASE,SAASC,MACxCrJ,EAAMo9B,YAAY52B,EAAKnyB,EAAI,EAAG+E,EAAG1I,KAAKg0B,MAAO,0BAA2B,CACpE1yB,SAAU,+CC5EnB,SAASu9D,GAAatoD,GACzB,IAAKA,EACD,OAAO,EACX,MAAMwrC,EAASv+C,IACf,MAEqC,mBAA7Bu+C,EAAO+c,mBAAoCvoD,aAAmBwrC,EAAO+c,mBAG1C,mBAAvBvoD,EAAQG,YAA0D,mBAAtBH,EAAQwoD,UAG7D,SAASC,GAAUzoD,GACtB,IAAKA,EACD,OAAO,EACX,MAAMwrC,EAASv+C,IACf,MAEkC,mBAA1Bu+C,EAAOkd,gBAAiC1oD,aAAmBwrC,EAAOkd,gBAEtC,mBAAxB1oD,EAAQ2oD,aAAuD,iBAAlB3oD,EAAQlI,MClB9D,MAAM8wD,WAAsBv8D,GAC/BnB,YAAYqT,GACRvR,QAEAvD,KAAKgqD,WAAa,EAClBhqD,KAAKo/D,UAAYtqD,EACZA,EAAQuqD,OAOTr/D,KAAKq/D,OAASvqD,EAAQuqD,OANtBr/D,KAAKq/D,OAAS,CACV/0D,MAAO60D,GAAc11B,MACrBl/B,OAAQ40D,GAAcz1B,QAOvBD,mBACP,OAAO,IAEAC,oBACP,OAAO,IAEA41B,uCACP,OAAO,MAMX/5D,0BAA0B+E,EAAOC,GAC7B,MAAMg1D,EAAQv/D,KAAKs/D,0BAUnB,OATIr6D,KAAK2E,IAAIU,EAAOC,GAAUg1D,IAC1Bl7D,EAAK,uDAAyDk7D,GAC1Dj1D,EAAQi1D,IACRj1D,EAAQi1D,GAERh1D,EAASg1D,IACTh1D,EAASg1D,IAGV,CAACj1D,EAAOC,GAKnB6H,QACIpS,KAAKo/D,UAAUI,UAAU,EAAG,EAAGx/D,KAAKq/D,OAAO/0D,MAAOtK,KAAKq/D,OAAO90D,QAGlE8gC,UAAUo0B,EAAK5tD,EAAIiC,IAGnBy3B,cAIAnlC,IAAImO,IAGJc,aAAahH,GAET,OADArO,KAAKo/D,UAAUhqD,UAAY/G,EACpBrO,KAIX0/D,uBAAuBrxD,GAEnB,OAAOrO,KAEXuV,eAAelH,GAEX,OADArO,KAAKo/D,UAAU9pD,YAAcjH,EACtBrO,KAEXiV,eAAeu/B,GAEX,OADAx0C,KAAKo/D,UAAUpqD,YAAcw/B,EACtBx0C,KAEXmV,cAAcwqD,GAKV,MAAMj6D,EAAI1F,KAAKo/D,UAAUQ,eACnB1wC,EAAQjqB,KAAKgH,KAAKvG,EAAEjB,EAAIiB,EAAEjB,EAAIiB,EAAEhB,EAAIgB,EAAEhB,EAAIgB,EAAEoG,EAAIpG,EAAEoG,EAAIpG,EAAEQ,EAAIR,EAAEQ,GAEpE,OADAlG,KAAKo/D,UAAUlqD,WAAaga,EAAQywC,EAC7B3/D,KAEXyV,aAAanL,GAET,OADAtK,KAAKo/D,UAAU5pD,UAAYlL,EACpBtK,KAEX6/D,WAAWC,GAEP,OADA9/D,KAAKo/D,UAAUW,QAAUD,EAClB9/D,KAEXggE,YAAYC,GAER,OADAjgE,KAAKo/D,UAAUY,YAAYC,GACpBjgE,KAEXkvB,MAAMvrB,EAAG+E,GAEL,OADA1I,KAAKo/D,UAAUlwC,MAAMvrB,EAAG+E,GACjB1I,KAEXkgE,OAAO51D,EAAOC,GACV,MAAM80D,EAASr/D,KAAKo/D,UAAUC,OACxBc,EAAmB38D,IAAe28D,kBAAoB,EAc5D,OAZC71D,EAAOC,GAAU40D,GAAciB,mBAAmB91D,EAAQ61D,EAAkB51D,EAAS41D,GAEtF71D,EAASA,EAAQ61D,EAAoB,EACrC51D,EAAUA,EAAS41D,EAAoB,EACvCd,EAAO/0D,MAAQA,EAAQ61D,EACvBd,EAAO90D,OAASA,EAAS41D,EAGrBtB,GAAaQ,KACbA,EAAOhxD,MAAM/D,MAAQA,EAAQ,KAC7B+0D,EAAOhxD,MAAM9D,OAASA,EAAS,MAE5BvK,KAAKkvB,MAAMixC,EAAkBA,GAExCE,KAAK18D,EAAG+E,EAAG4B,EAAOC,GAEd,OADAvK,KAAKo/D,UAAUiB,KAAK18D,EAAG+E,EAAG4B,EAAOC,GAC1BvK,KAEXi/C,SAASt7C,EAAG+E,EAAG4B,EAAOC,GAElB,OADAvK,KAAKo/D,UAAUngB,SAASt7C,EAAG+E,EAAG4B,EAAOC,GAC9BvK,KAKXw/D,UAAU77D,EAAG+E,EAAG4B,EAAOC,GAEnB,OADAvK,KAAKo/D,UAAUI,UAAU77D,EAAG+E,EAAG4B,EAAOC,GAC/BvK,KAEXs2B,YAEI,OADAt2B,KAAKo/D,UAAU9oC,YACRt2B,KAEXu2B,OAAO5yB,EAAG+E,GAEN,OADA1I,KAAKo/D,UAAU7oC,OAAO5yB,EAAG+E,GAClB1I,KAEXw2B,OAAO7yB,EAAG+E,GAEN,OADA1I,KAAKo/D,UAAU5oC,OAAO7yB,EAAG+E,GAClB1I,KAEX02B,cAAc4pC,EAAMC,EAAMC,EAAMC,EAAM98D,EAAG+E,GAErC,OADA1I,KAAKo/D,UAAU1oC,cAAc4pC,EAAMC,EAAMC,EAAMC,EAAM98D,EAAG+E,GACjD1I,KAEXy2B,iBAAiBiqC,EAAKC,EAAKh9D,EAAG+E,GAE1B,OADA1I,KAAKo/D,UAAU3oC,iBAAiBiqC,EAAKC,EAAKh9D,EAAG+E,GACtC1I,KAEXy0C,IAAI9wC,EAAG+E,EAAG+/C,EAAQmY,EAAYC,EAAUC,GAEpC,OADA9gE,KAAKo/D,UAAU3qB,IAAI9wC,EAAG+E,EAAG+/C,EAAQmY,EAAYC,EAAUC,GAChD9gE,KAEX22B,OAEI,OADA32B,KAAKo/D,UAAUzoC,OACR32B,KAEXyuB,SAEI,OADAzuB,KAAKo/D,UAAU3wC,SACRzuB,KAEX00C,YAEI,OADA10C,KAAKo/D,UAAU1qB,YACR10C,KAEXwwC,YAAYzrC,GACR,MAAMuL,EAAUtQ,KAAKo/D,UAAU5uB,YAAYzrC,GAC3C,IAAI2D,EAAI,EACJ6B,EAAS,EAUb,OATI+F,EAAQywD,uBACRr4D,GAAK4H,EAAQywD,sBACbx2D,EAAS+F,EAAQ0wD,uBAAyB1wD,EAAQywD,wBAGlDr4D,GAAK4H,EAAQ2wD,wBACb12D,EAAS+F,EAAQ4wD,yBAA2B5wD,EAAQ2wD,yBAGjD,CACHt9D,EAAG,EACH+E,EAAGA,EACH4B,MAAOgG,EAAQhG,MACfC,OAAQA,GAGhBgnC,SAASxsC,EAAMpB,EAAG+E,GAEd,OADA1I,KAAKo/D,UAAU7tB,SAASxsC,EAAMpB,EAAG+E,GAC1B1I,KAEX+U,OAEI,OADA/U,KAAKo/D,UAAUrqD,OACR/U,KAEX2V,UAEI,OADA3V,KAAKo/D,UAAUzpD,UACR3V,KAEPoV,cAAU/G,GACVrO,KAAKo/D,UAAUhqD,UAAY/G,EAE3B+G,gBACA,OAAOpV,KAAKo/D,UAAUhqD,UAEtBE,gBAAYjH,GACZrO,KAAKo/D,UAAU9pD,YAAcjH,EAE7BiH,kBACA,OAAOtV,KAAKo/D,UAAU9pD,YAU1BsB,QAAQxO,EAAG+F,EAAMC,EAAQC,GACrB,MAAMY,EAAW1B,EAAK+J,SAASlP,EAAG+F,EAAMC,EAAQC,GAGhD,OAFArO,KAAKo/D,UAAUvwD,KAAOtB,EAAKsJ,YAAY5H,GACvCjP,KAAKgqD,WAAaz8C,EAAKuK,wBAAwB7I,EAASd,MACjDnO,KAGXuX,UACI,OAAOvX,KAAKo/D,UAAUvwD,MC3O9B,MAAMsyD,GAAuB,CACzBC,KAAM,CACFz9D,GAAG,EACH+E,GAAG,EACH4B,OAAO,EACPC,QAAQ,EACR,eAAe,EACf,eAAe,EACf,cAAc,EACd,aAAa,GAEjB81D,KAAM,CACF,eAAe,EACf,eAAe,EACf,cAAc,EACd,aAAa,GAEjBt7D,KAAM,CACFuF,OAAO,EACPC,QAAQ,IAIV82D,GAAS,6BACTC,GAAS,EAAIr8D,KAAKC,GA+CjB,MAAMq8D,WAAmB3+D,GAC5BnB,YAAY8U,GACRhT,QACAvD,KAAKsK,MAAQ,EACbtK,KAAKuK,OAAS,EACdvK,KAAKwhE,oBAAsB,QAE3BxhE,KAAKyhE,cAAgB,GACrBzhE,KAAKuW,QAAUA,EAEf,MAAMmrD,EAAM1hE,KAAK0uC,OAAO,OACxB1uC,KAAKuW,QAAQ2oD,YAAYwC,GACzB1hE,KAAK0hE,IAAMA,EACX1hE,KAAK2hE,OAAS3hE,KAAK0hE,IACnB1hE,KAAKy6D,OAAS,CAACz6D,KAAK0hE,KACpB1hE,KAAKohE,KAAO,GACZphE,KAAK4hE,IAAM,CAAEj+D,EAAGqG,IAAKtB,EAAGsB,KACxBhK,KAAKwV,UAAY,EACjB,MAAMqsD,EAAwB,CAC1B,cAAet0D,EAAKiB,WACpB,YAAajB,EAAKI,KAAO,KACzB,cAAexB,EAAWsC,OAC1B,aAAcrC,EAAUqC,QAE5BzO,KAAK2iC,MAAQtiC,OAAOgX,OAAO,CAAE6X,MAAO,CAAEvrB,EAAG,EAAG+E,EAAG,IAAOm5D,GACtD7hE,KAAK8hE,WAAazhE,OAAOgX,OAAO,CAAE,eAAgB,GAAK,mBAAoB,OAAQsf,KAAM,QAASlI,OAAQ,SAAWozC,GACrH7hE,KAAK+hE,kBAAoB,CACrBz3D,MAAO,EACPkqC,MAAO,SAEXx0C,KAAKgiE,YAAc,GAEvBtzB,OAAOuzB,GACH,OAAOtzD,SAASuzD,gBAAgBb,GAAQY,GAG5C52B,UAAUo0B,EAAK5tD,EAAIiC,GACf,MAAM4mD,EAAQ16D,KAAK0uC,OAAO,KAW1B,OAVA1uC,KAAKy6D,OAAOjmD,KAAKkmD,GACjB16D,KAAK2hE,OAAOzC,YAAYxE,GACxB16D,KAAK2hE,OAASjH,EACV+E,GACA/E,EAAM9nD,aAAa,QAAS9N,EAAO26D,IACnC5tD,GACA6oD,EAAM9nD,aAAa,KAAM9N,EAAO+M,IAChCiC,GAASA,EAAMw3B,aACfovB,EAAM9nD,aAAa,iBAAkB,gBAElC8nD,EAEXnvB,aACIvrC,KAAKy6D,OAAO1jB,MACZ/2C,KAAK2hE,OAAS3hE,KAAKy6D,OAAOz6D,KAAKy6D,OAAO70D,OAAS,GAEnDQ,IAAIkM,GACAtS,KAAK2hE,OAAOzC,YAAY5sD,GAE5B+C,aAAahH,GAET,OADArO,KAAK8hE,WAAWnrC,KAAOtoB,EAChBrO,KAMX0/D,uBAAuBrxD,GAEnB,OADArO,KAAKwhE,oBAAsBnzD,EACpBrO,KAEXuV,eAAelH,GAEX,OADArO,KAAK8hE,WAAWrzC,OAASpgB,EAClBrO,KAEXiV,eAAeu/B,GAEX,OADAx0C,KAAK+hE,kBAAkBvtB,MAAQA,EACxBx0C,KAOXmV,cAAcwqD,GAEV,OADA3/D,KAAK+hE,kBAAkBz3D,MAAQq1D,EACxB3/D,KAMXyV,aAAanL,GAGT,OAFAtK,KAAK8hE,WAAW,gBAAkBx3D,EAClCtK,KAAKwV,UAAYlL,EACVtK,KAQXggE,YAAYmC,GACR,GAAiD,mBAA7C9hE,OAAOS,UAAUgH,SAAS9G,KAAKmhE,GAE/B,OADAniE,KAAK8hE,WAAW,oBAAsBK,EAASh+D,KAAK,KAC7CnE,KAGP,MAAM,IAAImD,EAAa,gBAAiB,0CAOhD08D,WAAWC,GAEP,OADA9/D,KAAK8hE,WAAW,kBAAoBhC,EAC7B9/D,KAOXkgE,OAAO51D,EAAOC,GACVvK,KAAKsK,MAAQA,EACbtK,KAAKuK,OAASA,EACdvK,KAAKuW,QAAQlI,MAAM/D,MAAQA,EAAMxC,WACjC9H,KAAK0hE,IAAIrzD,MAAM/D,MAAQA,EAAMxC,WAC7B9H,KAAK0hE,IAAIrzD,MAAM9D,OAASA,EAAOzC,WAC/B,MAAMg6D,EAAa,CACfx3D,MAAAA,EACAC,OAAAA,GAIJ,OAFAvK,KAAKoiE,gBAAgBpiE,KAAK0hE,IAAKI,GAC/B9hE,KAAKkvB,MAAMlvB,KAAK2iC,MAAMzT,MAAMvrB,EAAG3D,KAAK2iC,MAAMzT,MAAMxmB,GACzC1I,KAEXkvB,MAAMvrB,EAAG+E,GAYL1I,KAAK2iC,MAAMzT,MAAQ,CAAEvrB,EAAAA,EAAG+E,EAAAA,GACxB,MAAM25D,EAAeriE,KAAKsK,MAAQ3G,EAC5B2+D,EAAgBtiE,KAAKuK,OAAS7B,EAEpC,OADA1I,KAAKuiE,WAAW,EAAG,EAAGF,EAAcC,GAC7BtiE,KAMXuiE,WAAWC,EAAiB1R,EAAMxmD,EAAOC,GACrC,GAA+B,iBAApBi4D,EACPxiE,KAAK0hE,IAAI9uD,aAAa,UAAW4vD,OAEhC,CACD,MAAMC,EAAgBD,EAAkB,IAAM1R,EAAO,IAAMxmD,EAAQ,IAAMC,EACzEvK,KAAK0hE,IAAI9uD,aAAa,UAAW6vD,IAIzCL,gBAAgB7rD,EAASurD,GACrB,MAAMY,EAAoBvB,GAAqB5qD,EAAQosD,UACvD,IAAK,MAAMC,KAAYd,EACfY,GAAqBA,EAAkBE,IAG3CrsD,EAAQssD,eAAe,KAAMD,EAAUd,EAAWc,IAEtD,OAAOrsD,EAGXnE,QASI,KAAOpS,KAAK0hE,IAAIoB,WACZ9iE,KAAK0hE,IAAIqB,YAAY/iE,KAAK0hE,IAAIoB,WAGlC9iE,KAAKkvB,MAAMlvB,KAAK2iC,MAAMzT,MAAMvrB,EAAG3D,KAAK2iC,MAAMzT,MAAMxmB,GAGpD23D,KAAK18D,EAAG+E,EAAG4B,EAAOC,EAAQu3D,GAElBv3D,EAAS,IACT7B,GAAK6B,EACLA,IAAW,GAEf,MAAMy4D,EAAYhjE,KAAK0uC,OAAO,QAI9B,OAHAozB,EAAaA,MAAAA,EAA+CA,EAAa,CAAEnrC,KAAM,OAAQ,eAAgB32B,KAAKwV,UAAWiZ,OAAQ,SACjIzuB,KAAKoiE,gBAAgBY,EAAW3iE,OAAOgX,OAAO,CAAE1T,EAAAA,EAAG+E,EAAAA,EAAG4B,MAAAA,EAAOC,OAAAA,GAAUu3D,IACvE9hE,KAAKoG,IAAI48D,GACFhjE,KAEXi/C,SAASt7C,EAAG+E,EAAG4B,EAAOC,GAClB,MAAMu3D,EAAa,CAAEnrC,KAAM32B,KAAK8hE,WAAWnrC,MAE3C,OADA32B,KAAKqgE,KAAK18D,EAAG+E,EAAG4B,EAAOC,EAAQu3D,GACxB9hE,KAEXw/D,UAAU77D,EAAG+E,EAAG4B,EAAOC,GAQnB,OADAvK,KAAKqgE,KAAK18D,EAAG+E,EAAG4B,EAAOC,EAAQ,CAAE,eAAgB,EAAGosB,KAAM32B,KAAKwhE,sBACxDxhE,KAGXs2B,YAII,OAHAt2B,KAAKohE,KAAO,GACZphE,KAAK4hE,IAAIj+D,EAAIqG,IACbhK,KAAK4hE,IAAIl5D,EAAIsB,IACNhK,KAEXu2B,OAAO5yB,EAAG+E,GAIN,OAHA1I,KAAKohE,MAAQ,IAAMz9D,EAAI,IAAM+E,EAC7B1I,KAAK4hE,IAAIj+D,EAAIA,EACb3D,KAAK4hE,IAAIl5D,EAAIA,EACN1I,KAEXw2B,OAAO7yB,EAAG+E,GAIN,OAHA1I,KAAKohE,MAAQ,IAAMz9D,EAAI,IAAM+E,EAC7B1I,KAAK4hE,IAAIj+D,EAAIA,EACb3D,KAAK4hE,IAAIl5D,EAAIA,EACN1I,KAEX02B,cAAc3sB,EAAIE,EAAIC,EAAIC,EAAIxG,EAAG+E,GAI7B,OAHA1I,KAAKohE,MAAQ,IAAMr3D,EAAK,IAAME,EAAK,IAAMC,EAAK,IAAMC,EAAK,IAAMxG,EAAI,IAAM+E,EACzE1I,KAAK4hE,IAAIj+D,EAAIA,EACb3D,KAAK4hE,IAAIl5D,EAAIA,EACN1I,KAEXy2B,iBAAiB1sB,EAAIE,EAAItG,EAAG+E,GAIxB,OAHA1I,KAAKohE,MAAQ,IAAMr3D,EAAK,IAAME,EAAK,IAAMtG,EAAI,IAAM+E,EACnD1I,KAAK4hE,IAAIj+D,EAAIA,EACb3D,KAAK4hE,IAAIl5D,EAAIA,EACN1I,KAEXy0C,IAAI9wC,EAAG+E,EAAG+/C,EAAQmY,EAAYC,EAAUC,GACpC,MAAMmC,EAAKt/D,EAAI8kD,EAASxjD,KAAKi+D,IAAItC,GAC3BuC,EAAKz6D,EAAI+/C,EAASxjD,KAAKm+D,IAAIxC,GAG3ByC,EAAer+D,EAAe47D,GAC9B0C,EAAat+D,EAAe67D,GAClC,IAAMC,GAAoBD,EAAWD,GAAcU,IAC9CR,GAAoBF,EAAaC,GAAYS,IAC9C+B,IAAiBC,EAAY,CAC7B,MAAMv5D,EAAKpG,EAAI8kD,EAASxjD,KAAKi+D,IAAItC,EAAa37D,KAAKC,IAC7C+E,EAAKvB,EAAI+/C,EAASxjD,KAAKm+D,IAAIxC,EAAa37D,KAAKC,IAGnDlF,KAAKohE,MAAQ,IAAI6B,KAAME,MAAO1a,KAAUA,WAAgB1+C,KAAME,KAC9DjK,KAAKohE,MAAQ,IAAI3Y,KAAUA,WAAgBwa,KAAME,IACjDnjE,KAAK4hE,IAAIj+D,EAAIs/D,EACbjjE,KAAK4hE,IAAIl5D,EAAIy6D,MAEZ,CACD,MAAMp5D,EAAKpG,EAAI8kD,EAASxjD,KAAKi+D,IAAIrC,GAC3B52D,EAAKvB,EAAI+/C,EAASxjD,KAAKm+D,IAAIvC,GAGjC,IAAI0C,EAFJ3C,EAAayC,EACbxC,EAAWyC,EAGPC,EADAt+D,KAAK4C,IAAIg5D,EAAWD,GAAc37D,KAAKC,GAC/B47D,GAGCA,EAETF,EAAaC,IACb0C,GAASA,GAEb,MAAMC,GAAS1C,EACf9gE,KAAKohE,MAAQ,IAAI6B,KAAME,MAAO1a,KAAUA,QAAa8a,MAAUC,KAASz5D,KAAME,IAC9EjK,KAAK4hE,IAAIj+D,EAAIoG,EACb/J,KAAK4hE,IAAIl5D,EAAIuB,EAEjB,OAAOjK,KAEX00C,YAEI,OADA10C,KAAKohE,MAAQ,IACNphE,KAEXyjE,iBACI,MAAMC,EAAK1jE,KAAK+hE,kBAIhB,MAAO,2BAA2B2B,EAAGp5D,MAAQ,SAASo5D,EAAGlvB,SAE7D7d,KAAKmrC,GACD,MAAMV,EAAOphE,KAAK0uC,OAAO,QAUzB,YAT0B,IAAfozB,IACPA,EAAazhE,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAIrX,KAAK8hE,YAAa,CAAErzC,OAAQ,UAE7EqzC,EAAW57D,EAAIlG,KAAKohE,KAChBphE,KAAK+hE,kBAAkBz3D,MAAQ,IAC/Bw3D,EAAWzzD,MAAQrO,KAAKyjE,kBAE5BzjE,KAAKoiE,gBAAgBhB,EAAMU,GAC3B9hE,KAAKoG,IAAIg7D,GACFphE,KAEXyuB,SACI,MAAM2yC,EAAOphE,KAAK0uC,OAAO,QACnBozB,EAAazhE,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAIrX,KAAK8hE,YAAa,CAAEnrC,KAAM,OAAQ,eAAgB32B,KAAKwV,UAAWtP,EAAGlG,KAAKohE,OAM7H,OALIphE,KAAK+hE,kBAAkBz3D,MAAQ,IAC/Bw3D,EAAWzzD,MAAQrO,KAAKyjE,kBAE5BzjE,KAAKoiE,gBAAgBhB,EAAMU,GAC3B9hE,KAAKoG,IAAIg7D,GACFphE,KAGXwwC,YAAYzrC,GACR,OAAOw8D,GAAWoC,iBAAiBztC,OAAOnxB,EAAM/E,KAAK0hE,IAAK1hE,KAAK8hE,YAEnEvwB,SAASxsC,EAAMpB,EAAG+E,GACd,IAAK3D,GAAQA,EAAKa,QAAU,EACxB,OAAO5F,KAEX,MAAM8hE,EAAazhE,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAIrX,KAAK8hE,YAAa,CAAErzC,OAAQ,OAAQ9qB,EAAAA,EACnF+E,EAAAA,IACEk7D,EAAM5jE,KAAK0uC,OAAO,QAIxB,OAHAk1B,EAAIC,YAAc9+D,EAClB/E,KAAKoiE,gBAAgBwB,EAAK9B,GAC1B9hE,KAAKoG,IAAIw9D,GACF5jE,KAGX+U,OAyBI,OAxBA/U,KAAKgiE,YAAYxtD,KAAK,CAClBmuB,MAAO,CACH,cAAe3iC,KAAK2iC,MAAM,eAC1B,cAAe3iC,KAAK2iC,MAAM,eAC1B,aAAc3iC,KAAK2iC,MAAM,cACzB,YAAa3iC,KAAK2iC,MAAM,aACxBzT,MAAOlvB,KAAK2iC,MAAMzT,OAEtB4yC,WAAY,CACR,cAAe9hE,KAAK8hE,WAAW,eAC/B,cAAe9hE,KAAK8hE,WAAW,eAC/B,aAAc9hE,KAAK8hE,WAAW,cAC9B,YAAa9hE,KAAK8hE,WAAW,aAC7BnrC,KAAM32B,KAAK8hE,WAAWnrC,KACtBlI,OAAQzuB,KAAK8hE,WAAWrzC,OACxB,eAAgBzuB,KAAK8hE,WAAW,gBAChC,mBAAoB9hE,KAAK8hE,WAAW,qBAExCC,kBAAmB,CACfz3D,MAAOtK,KAAK+hE,kBAAkBz3D,MAC9BkqC,MAAOx0C,KAAK+hE,kBAAkBvtB,OAElCh/B,UAAWxV,KAAKwV,YAEbxV,KAGX2V,UACI,MAAMmuD,EAAa9jE,KAAKgiE,YAAYjrB,MACpC,GAAI+sB,EAAY,CACZ,MAAMnhC,EAAQmhC,EACd9jE,KAAK2iC,MAAM,eAAiBA,EAAMA,MAAM,eACxC3iC,KAAK2iC,MAAM,eAAiBA,EAAMA,MAAM,eACxC3iC,KAAK2iC,MAAM,cAAgBA,EAAMA,MAAM,cACvC3iC,KAAK2iC,MAAM,aAAeA,EAAMA,MAAM,aACtC3iC,KAAK2iC,MAAMzT,MAAQyT,EAAMA,MAAMzT,MAC/BlvB,KAAK8hE,WAAW,eAAiBn/B,EAAMm/B,WAAW,eAClD9hE,KAAK8hE,WAAW,eAAiBn/B,EAAMm/B,WAAW,eAClD9hE,KAAK8hE,WAAW,cAAgBn/B,EAAMm/B,WAAW,cACjD9hE,KAAK8hE,WAAW,aAAen/B,EAAMm/B,WAAW,aAChD9hE,KAAK8hE,WAAWnrC,KAAOgM,EAAMm/B,WAAWnrC,KACxC32B,KAAK8hE,WAAWrzC,OAASkU,EAAMm/B,WAAWrzC,OAC1CzuB,KAAK8hE,WAAW,gBAAkBn/B,EAAMm/B,WAAW,gBACnD9hE,KAAK8hE,WAAW,oBAAsBn/B,EAAMm/B,WAAW,oBACvD9hE,KAAK+hE,kBAAkBz3D,MAAQq4B,EAAMo/B,kBAAkBz3D,MACvDtK,KAAK+hE,kBAAkBvtB,MAAQ7R,EAAMo/B,kBAAkBvtB,MACvDx0C,KAAKwV,UAAYmtB,EAAMntB,UAE3B,OAAOxV,KAEPoV,cAAU/G,GACVrO,KAAKqV,aAAahH,GAElB+G,gBACA,OAAOpV,KAAK8hE,WAAWnrC,KAEvBrhB,gBAAYjH,GACZrO,KAAKuV,eAAelH,GAEpBiH,kBACA,OAAOtV,KAAK8hE,WAAWrzC,OAY3B7X,QAAQxO,EAAG+F,EAAMC,EAAQC,GACrB,MAAMY,EAAW1B,EAAK+J,SAASlP,EAAG+F,EAAMC,EAAQC,GAChDrO,KAAKyhE,cAAgBl0D,EAAKsJ,YAAY5H,GACtC,MAAM80D,EAAiB,CACnB,cAAe90D,EAASV,OACxB,YAAaU,EAASd,KACtB,cAAec,EAASb,OACxB,aAAca,EAASZ,OAI3B,OAFArO,KAAK8hE,WAAazhE,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAIrX,KAAK8hE,YAAaiC,GACpE/jE,KAAK2iC,MAAQtiC,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAIrX,KAAK2iC,OAAQohC,GACnD/jE,KAGXuX,UACI,OAAOvX,KAAKyhE,eCzfb,IAAIuC,GAMAC,GCNAC,GCFAC,GH8fX5C,GAAWoC,iBAAmB,IAne9B,MACIliE,cAGIzB,KAAKi2B,MAAQ,GAEjBC,OAAOnxB,EAAM28D,EAAKI,GACd,IAAIzpC,EAAUr4B,KAAKi2B,MAAMlxB,QACTnB,IAAZy0B,IACAA,EAAU,GACVr4B,KAAKi2B,MAAMlxB,GAAQszB,GAEvB,MAIMl4B,EAAM,GAJG2hE,EAAW,kBACbA,EAAW,gBACTA,EAAW,kBACZA,EAAW,gBAEzB,IAAIvpC,EAAQF,EAAQl4B,GAKpB,YAJcyD,IAAV20B,IACAA,EAAQv4B,KAAKokE,YAAYr/D,EAAM28D,EAAKI,GACpCzpC,EAAQl4B,GAAOo4B,GAEZA,EAEX6rC,YAAYr/D,EAAM28D,EAAKI,GACnB,IAAI8B,EAAM5jE,KAAK4jE,IACVA,IAGDA,EAAMj1D,SAASuzD,gBAAgBb,GAAQ,QACvCrhE,KAAK4jE,IAAMA,GAEfA,EAAIC,YAAc9+D,EAClB6+D,EAAIf,eAAe,KAAM,cAAef,EAAW,gBACnD8B,EAAIf,eAAe,KAAM,YAAaf,EAAW,cACjD8B,EAAIf,eAAe,KAAM,aAAcf,EAAW,eAClD8B,EAAIf,eAAe,KAAM,cAAef,EAAW,gBACnDJ,EAAIxC,YAAY0E,GAChB,MAAM1vC,EAAO0vC,EAAIS,UAEjB,OADA3C,EAAIqB,YAAYa,GACT,CAAEjgE,EAAGuwB,EAAKvwB,EAAG+E,EAAGwrB,EAAKxrB,EAAG4B,MAAO4pB,EAAK5pB,MAAOC,OAAQ2pB,EAAK3pB,UChEvE,SAAWy5D,GACPA,EAAiBA,EAAyB,OAAI,GAAK,SACnDA,EAAiBA,EAAsB,IAAI,GAAK,MAFpD,CAGGA,KAAqBA,GAAmB,KAG3C,SAAWC,GACPA,EAAoBA,EAA0B,KAAI,GAAK,OACvDA,EAAoBA,EAAwB,GAAI,GAAK,KACrDA,EAAoBA,EAA0B,KAAI,GAAK,OAH3D,CAIGA,KAAwBA,GAAsB,KAI1C,MAAMK,GACT7iE,YAAY8iE,EAAMC,GACd,GAAI7hE,EAAgB4hE,GAEhBvkE,KAAK81B,IAAMyuC,MAEV,CACD,QAAa3gE,IAAT4gE,EAEA,MAAM,IAAIrhE,EAAa,kBAAmB,4BAE9C,MAAMshE,EAAUD,EAChB,IAAIjuD,EACJ,GAAmB,iBAARguD,EAAkB,CACzB,MAAMG,EAAe/1D,SAAS8D,eAAe8xD,GAC7C,IAAKG,EACD,MAAM,IAAIvhE,EAAa,eAAgB,+BAA+BuhE,MAE1EnuD,EAAUmuD,OAGVnuD,EAAUguD,EAGd,GAAIE,IAAYH,GAASK,SAASC,OAAQ,CACtC,IAAK/F,GAAatoD,GACd,MAAM,IAAIpT,EAAa,aAAc,iDAEzC,MAAM2R,EAAUyB,EAAQG,WAAW,MACnC,IAAK5B,EACD,MAAM,IAAI3R,EAAa,aAAc,4BAEzCnD,KAAK81B,IAAM,IAAIqpC,GAAcrqD,OAE5B,IAAI2vD,IAAYH,GAASK,SAASE,IAOnC,MAAM,IAAI1hE,EAAa,iBAAkB,2BAA2BshE,KANpE,IAAKzF,GAAUzoD,GACX,MAAM,IAAIpT,EAAa,aAAc,2CAEzCnD,KAAK81B,IAAM,IAAIyrC,GAAWhrD,KAOtChR,oBAAoBu/D,EAAWL,EAASn6D,EAAOC,EAAQw6D,EAAa,QAChE,MAAMC,EAAW,IAAIV,GAASQ,EAAWL,GACrCn6D,GAASC,GACTy6D,EAAS9E,OAAO51D,EAAOC,GAE3B,MAAMurB,EAAMkvC,EAAStuD,aAGrB,OAFAof,EAAI4pC,uBAAuBqF,GAC3BT,GAASW,YAAcnvC,EAChBA,EAEXvwB,wBAAwBu/D,EAAWx6D,EAAOC,EAAQw6D,GAC9C,OAAOT,GAASY,aAAaJ,EAAWR,GAASK,SAASC,OAAQt6D,EAAOC,EAAQw6D,GAErFx/D,qBAAqBu/D,EAAWx6D,EAAOC,EAAQw6D,GAC3C,OAAOT,GAASY,aAAaJ,EAAWR,GAASK,SAASE,IAAKv6D,EAAOC,EAAQw6D,GAKlFx/D,sBAAsBuP,EAASqwD,EAAOC,EAAOC,EAAKC,EAAKC,GACnDzwD,EAAQwhB,YACR,MAAMkvC,EAAKH,EAAMF,EACXM,EAAKH,EAAMF,EACXM,EAAQzgE,KAAK0gE,MAAMF,EAAID,GAC7B,IAAI7hE,EAAIwhE,EACJz8D,EAAI08D,EACRtwD,EAAQyhB,OAAO4uC,EAAOC,GACtB,IAAIQ,EAAM,EACN9vD,GAAO,EACX,OAAU0vD,EAAK,EAAI7hE,GAAK0hE,EAAM1hE,GAAK0hE,MAASI,EAAK,EAAI/8D,GAAK48D,EAAM58D,GAAK48D,IAAO,CACxE,MAAMO,EAAaN,EAAYK,IAAQL,EAAY3/D,QAC7CkgE,EAAKniE,EAAIsB,KAAKi+D,IAAIwC,GAASG,EACjCliE,EAAI6hE,EAAK,EAAIvgE,KAAK2E,IAAIy7D,EAAKS,GAAM7gE,KAAKulC,IAAI66B,EAAKS,GAC/C,MAAMC,EAAKr9D,EAAIzD,KAAKm+D,IAAIsC,GAASG,EACjCn9D,EAAI+8D,EAAK,EAAIxgE,KAAK2E,IAAI07D,EAAKS,GAAM9gE,KAAKulC,IAAI86B,EAAKS,GAC3CjwD,EACAhB,EAAQ0hB,OAAO7yB,EAAG+E,GAGlBoM,EAAQyhB,OAAO5yB,EAAG+E,GAEtBoN,GAAQA,EAEZhB,EAAQ4/B,YACR5/B,EAAQ2Z,SAEZyxC,OAAO51D,EAAOC,GAEV,OADAvK,KAAK81B,IAAIoqC,OAAO51D,EAAOC,GAChBvK,KAEX0W,aACI,OAAO1W,KAAK81B,KAGpBwuC,GAASK,SAAWX,GACpBM,GAAS0B,YAAc/B,GAIvBK,GAASW,iBAAcrhE,EGlHhB,MAAMqiE,WAAqBztC,EAC9B/2B,YAAYmpD,GACRrnD,QACAvD,KAAKkmE,cAAgBtb,EACrB5qD,KAAKszB,SAAWkF,EAASE,SAASO,MAClCj5B,KAAKq0B,QAAU,EACfr0B,KAAKs0B,QAAU,EACft0B,KAAKy4B,UAAY,EACjBz4B,KAAK6yB,YAAc,EACnB7yB,KAAKypD,SAAW,EAChBzpD,KAAKkqC,SAAW,EAChBlqC,KAAKmmE,QAAS,EACdnmE,KAAKomE,IAAM9B,GAAS0B,YAAYxoB,KAChCx9C,KAAKyoD,OAAS,EACdzoD,KAAKqmE,YAAa,EAClBrmE,KAAKu5B,SAAuB,EAAdv5B,KAAKyoD,OAAa,GAChCzoD,KAAKwX,YAEE9V,sBACP,OAAOG,EAASokE,aAGT31D,qBACP,OAAOud,EAAOgV,mBAAmBlyB,aAAaK,OAAOs1D,aAIzD/gE,cAAcmkD,EAAM/mB,GAChB,MAAMK,EAAaL,EAAMK,WACnB+M,EAAcpN,EAAMoN,YAE1B,IAAK2Z,GAAwB,IAAhBA,EAAK9jD,OACd,OAAO,EACX,MAAM+jD,EAAY,GAClB,IAAIC,EAAY,KACZ2c,EAAa,EACbrqD,EAAc,EAElB,IAAK,IAAI3T,EAAI,EAAGA,EAAImhD,EAAK9jD,SAAU2C,EAAG,CAClC,MAAM6P,EAAMsxC,EAAKnhD,GACXkxB,EAAOrhB,EAAIohB,UACXuwB,EAAM3xC,EAAI+hB,cAChB,IAAKt3B,EAAY42B,GACb,MAAM,IAAIt2B,EAAa,eAE3B,MAAM8O,EAAQmG,EAAIyhB,aACZyJ,EAAQ7J,EAAK8J,cAActxB,GAC3BilC,EAAKzd,EAAKM,qBACV4U,EAAoC,EAAbv2B,EAAIqwC,OAAc56B,EAAOgD,oBAAsB,GAW5E,GAVIqmB,IACI6S,IAAQl2B,EAAiBoF,OACzB7gB,EAAIqgB,UAAYye,EAAGuE,WAAW/L,cAC9B/M,EAAM+M,eAAiBf,GAElBob,IAAQl2B,EAAiBsF,QAC9B/gB,EAAIqgB,UAAYye,EAAGuE,WAAWhjB,UAC9BkK,EAAMlK,WAAakW,IAGvBlV,IAASmwB,EAAW,CACpB,IAAK,IAAIhlD,EAAI,EAAGA,EAAI60B,EAAKtmB,KAAKvN,SAAUhB,EACjB,IAAfo+B,IACAujC,EAAathE,KAAK2E,IAAI6vB,EAAK+J,yBAA0B+iC,IAErC,IAAhBx2B,IACA7zB,EAAcjX,KAAK2E,IAAI6vB,EAAK4gB,0BAA2Bn+B,IAG/D0tC,EAAYnwB,EAEhB,MAAM+sC,EAA6BljC,EAAMt/B,KACzC2lD,EAAUn1C,KAAK,CACXu1C,IAAAA,EACAtwB,KAAAA,EACArhB,IAAAA,EACApU,KAAMwiE,EACNnjC,OAAQkjC,EACRtc,OAAQ/tC,IAIhBytC,EAAU9lB,MAAK,CAACp/B,EAAGC,IAAMA,EAAEV,KAAOS,EAAET,OACpC,IAAIyiE,EAAa,EACb/H,EAAW,EACXC,EAAW,EACXzV,EAAY,KACZC,EAAY,KAChB,IAAK,IAAI5gD,EAAI,EAAGA,EAAIohD,EAAU/jD,SAAU2C,EAAG,CACvC,IAAIiiD,EAAY,EAChB,MAAM/wB,EAAOkwB,EAAUphD,GAAGkxB,KACpBswB,EAAMJ,EAAUphD,GAAGwhD,IACnB3xC,EAAMuxC,EAAUphD,GAAG6P,IACnBpU,EAAO2lD,EAAUphD,GAAGvE,KACpBimD,EAASN,EAAUphD,GAAG0hD,OAExBjmD,IAASklD,GAAazvB,IAAS0vB,IAC/Bsd,EAAa12B,EAAcka,GAE/B,MAAMyc,EAAYtuD,EAAIqX,WApEN,EAqEZs6B,IAAQvxB,EAASE,SAASC,MAC1BvgB,EAAIgf,UAAU4L,GACdwnB,EAAY+b,EAAaG,EACzBhI,EAAWlU,EAAYkU,EAAWlU,EAAYkU,GAEzC3U,IAAQvxB,EAASE,SAASY,QAC/BlhB,EAAIgf,UAAUqvC,GACdjc,GAAakc,EACb/H,EAAWnU,EAAYmU,EAAWnU,EAAYmU,GAElDzV,EAAYllD,EACZmlD,EAAY1vB,EAIhB,OAFAkJ,EAAMK,YAAc07B,EACpB/7B,EAAMoN,aAAe4uB,GACd,EAEXgI,eAAeP,GAIX,OAHIA,GAAO9B,GAAS0B,YAAYxoB,MAAQ4oB,GAAO9B,GAAS0B,YAAYx8B,OAChExpC,KAAKomE,IAAMA,GAERpmE,KAEX4mE,gBAAgBhc,GAEZ,OADA5qD,KAAKkmE,cAAgBtb,EACd5qD,KAEXirD,WAAWtnD,GAEP,OADA3D,KAAKypD,SAAW9lD,EACT3D,KAEXkrD,WAAWxiD,GAEP,OADA1I,KAAKkqC,SAAWxhC,EACT1I,KAEX6mE,YAAYptC,GAER,OADAz5B,KAAKmpD,UAAY1vB,EACVz5B,KAEX8mE,UAAUX,GAEN,OADAnmE,KAAKmmE,OAASA,EACPnmE,KAEX+mE,cAAcV,GAEV,OADArmE,KAAKqmE,WAAaA,EACXrmE,KAEX8V,OACI,MAAMggB,EAAM91B,KAAK6V,eACX4jB,EAAOz5B,KAAK05B,oBAClB15B,KAAKmW,cACL,MAAMiyB,EAAQ3O,EAAK4O,mBAAmBroC,KAAKszB,SAAUtzB,KAAKiS,OACpD68B,EAAgBrV,EAAKsV,UAAYtV,EAAKuV,mBAAqBxG,GAAKe,GACtE,IAAI4V,EAAQ/W,EAAMzkC,EAAI3D,KAAKq0B,QAAUr0B,KAAKypD,SACtC9Y,EAAW,GACXlX,EAAKsV,YACL4B,EAAWlX,EAAKqX,YAAY3G,cAEhC,IAAIkV,EAAQjX,EAAM1/B,EAAI1I,KAAKs0B,QAAUt0B,KAAKkqC,SAC1C,OAAQlqC,KAAKszB,UACT,KAAKkF,EAASE,SAASO,MAGfomB,EADW5lB,EAAKsX,QACLC,QAAO,CAACvsC,EAAGC,IAAOD,EAAIC,EAAID,EAAIC,IACrC+0B,EAAKsV,WAAaD,GAAiBtG,GAAKe,KACxC8V,EAAQ1O,EAASjG,KAAOu7B,GAAa31D,QAAQ02D,aAEjD3nB,GAASr/C,KAAKyoD,OAASwd,GAAa31D,QAAQ22D,gBAAkBjnE,KAAKy4B,UAAY5K,EAAOgD,oBAE1F,MACJ,KAAK2H,EAASE,SAASS,MAGfkmB,EADW5lB,EAAKsX,QACLC,QAAO,CAACvsC,EAAGC,IAAOD,EAAIC,EAAID,EAAIC,IACrC+0B,EAAKsV,WAAaD,GAAiBtG,GAAKgB,OACxC6V,EAAQ1O,EAASjG,KAAOu7B,GAAa31D,QAAQ02D,aAEjD3nB,GAASr/C,KAAKyoD,OAASwd,GAAa31D,QAAQ22D,gBAAkBjnE,KAAKy4B,UAAY5K,EAAOgD,oBAE1F,MACJ,KAAK2H,EAASE,SAASC,KACnBwmB,GAASn/C,KAAKyoD,OAAS,EAAIwd,GAAa31D,QAAQ42D,YAChD,MACJ,KAAK1uC,EAASE,SAASY,MACnB6lB,GAASn/C,KAAKyoD,OAAS,EAAIwd,GAAa31D,QAAQ62D,aAChD,MACJ,QACI,MAAM,IAAIhkE,EAAa,kBAAmB,gBAAgBnD,KAAKszB,uBAEvEwC,EAAI/gB,OACA/U,KAAKqmE,aACLvwC,EAAIQ,YACJR,EAAI2e,IAAI0K,EAAOE,EAAOr/C,KAAKyoD,OAAQ,EAAa,EAAVxjD,KAAKC,IAAQ,GACnD4wB,EAAIrgB,aAAa,KACjBqgB,EAAIrH,UAERqH,EAAIlf,QAAQ5W,KAAK8W,UACjB,MAAMnT,EAAIw7C,EAAQrpB,EAAI0a,YAAYxwC,KAAKkmE,eAAe57D,MAAQ,EAC9DwrB,EAAIyb,SAAS,GAAKvxC,KAAKkmE,cAAeviE,EAAG07C,EAAQ,KACjD,MAAMkL,EAAWvqD,KAAKmpD,UACtB,GAAIpmD,EAAgBwnD,GAAW,CAE3B,MAAMnM,EAAMmM,EAAS7Z,WAAajX,EAAK3wB,OAAS,EAUhD,IAAIs+D,EACAC,EACJ,OAXAvxC,EAAIvgB,eAAe,WACnBugB,EAAI+pC,WAAW,SACf/pC,EAAIrgB,aAAa,IACbzV,KAAKmmE,OACL7B,GAASgD,eAAexxC,EAAKqpB,EAAQ,GAAIE,EAAOF,EAAQf,EAAKiB,EAAO,CAAC,EAAG,IAGxEilB,GAASgD,eAAexxC,EAAKqpB,EAAQ,GAAIE,EAAOF,EAAQf,EAAKiB,EAAO,CAAC,EAAG,IAIpEr/C,KAAKomE,KACT,KAAK9B,GAAS0B,YAAYz8B,GACtB69B,GAAO,GACPC,EAAUrnE,KAAKmmE,OAAS,CAAC,EAAG,GAAK,CAAC,EAAG,GACrC7B,GAASgD,eAAexxC,EAAKqpB,EAAQf,EAAKiB,EAAOF,EAAQf,EAAKiB,EAAQ+nB,EAAKC,GAC3E,MACJ,KAAK/C,GAAS0B,YAAYx8B,KACtB49B,EAAM,GACNC,EAAUrnE,KAAKmmE,OAAS,CAAC,EAAG,GAAK,CAAC,EAAG,GACrC7B,GAASgD,eAAexxC,EAAKqpB,EAAQf,EAAKiB,EAAOF,EAAQf,EAAKiB,EAAQ+nB,EAAKC,IAMvFvxC,EAAIngB,WAGZswD,GAAajvD,UAAY,CACrBzI,OAAQhB,EAAKiB,WACbL,KAAMZ,EAAKI,KACXS,OAAQjC,EAAWihC,KACnB/+B,MAAOjC,EAAUqC,QC7Od,MAAM84D,WAAe/uC,EACxB/2B,YAAYqQ,EAAMoc,GACd3qB,QACAvD,KAAKkuB,QAAU7tB,OAAOgX,OAAO,CAAEmwD,YAAY,GAAQt5C,GAEnDluB,KAAKwnE,WAAaxnE,KAAKkuB,QAAQs5C,WAE/BxnE,KAAK8R,KAAOA,EACZ9R,KAAKszB,SAAWkF,EAASE,SAASC,KAClC34B,KAAKqiC,eAAiB,CAClBC,WAAY,IAEhBtiC,KAAKwX,YACLxX,KAAKo3B,UAAU,GACfp3B,KAAKu5B,SAAS,IAEP73B,sBACP,OAAOG,EAAS0lE,OAGpBhiE,cAAckiE,EAAS9kC,GACnB,MAAMK,EAAaL,EAAMK,WAEzB,IAAKykC,GAA8B,IAAnBA,EAAQ7hE,OACpB,OAAO,EACX,MAAM8hE,EAAaD,EAAQr0D,KAAKqb,IAC5B,MAAMgL,EAAOhL,EAAO+K,UACdvnB,EAAQwc,EAAOoL,aACrB,GAAIh3B,EAAY42B,GAAO,CAEnB,MAAM,KAAEz1B,GAASy1B,EAAK8J,cAActxB,GAEpC,MAAO,CAAEjO,KAAAA,EAAM8B,MADD2zB,EAAK+J,yBACG/U,OAAAA,GAErB,GAAIxrB,EAAUw2B,GAAO,CAEtB,MAAQnxB,IAAKq/D,GAAWluC,EAAKmuC,eAAe31D,GAC5C,MAAO,CAAEjO,KAAM2jE,EAAQ7hE,MAAO,EAAG2oB,OAAAA,GAGjC,MAAM,IAAItrB,EAAa,WAAY,2BAGrC0kE,EAAc7kC,EAEdtL,EAASgwC,EAAW12B,QAAO,CAACtZ,GAAUjJ,OAAAA,EAAQ3oB,MAAAA,MAChD2oB,EAAO2I,UAAUywC,EAAc/hE,GACxBb,KAAK2E,IAAI6kB,EAAOgB,WAzBJ,EAyBiCiI,KACrD,GAEH,OADAiL,EAAMK,YAActL,GACb,EAEXyC,cACI,OAAOn6B,KAAKszB,SAEhBw0C,WAAWruC,GAEP,OADAz5B,KAAK+nE,SAAWtuC,EACTz5B,KAEX8V,OACI,MAAMggB,EAAM91B,KAAK6V,eACX4jB,EAAOz5B,KAAK05B,oBAClB15B,KAAKmW,cACL,MAAMiyB,EAAQ3O,EAAK4O,mBAAmBroC,KAAKszB,SAAUtzB,KAAKiS,OAC1D,IAAIo4B,EAAK5Q,EAAKsX,QACVrG,EAAOtC,EAAM1/B,EACbq2C,EAAO3W,EAAM1/B,EACjB,MAAM/E,EAAIykC,EAAMzkC,EAAI,EACdqkE,EAAavuC,EAAKxB,aAAayL,yBAC/B7T,EAAQ7vB,KAAKi6B,uBAAuBuhB,WAAW/hB,EAAKxlB,eAC1D,IAAK,IAAI1L,EAAI,EAAGA,EAAIsnB,EAAMjqB,OAAQ2C,IAAK,CACnC,MAAMkxB,EAAO5J,EAAMtnB,GACnB,GAAI9F,EAAOg3B,GAAO,CAGd4Q,EAAK5Q,EAAKsX,QACV,IAAK,IAAInsC,EAAI,EAAGA,EAAIylC,EAAGzkC,OAAQhB,KACvB5E,KAAKy5B,OAAS5J,EAAMtnB,IAAMvI,KAAKwnE,cAC/B98B,EAAOzlC,KAAKulC,IAAIE,EAAML,EAAGzlC,IACzBm6C,EAAO95C,KAAK2E,IAAIm1C,EAAM1U,EAAGzlC,MAKzC,IAAIqjE,EAAQ,GACRC,EAAgB,EAChBC,EAAU,EACV3S,EAAe,EACf4S,EAAS,EACb,OAAQpoE,KAAK8R,MACT,KAAKy1D,GAAOc,KAAKC,WACbL,EAAQ,mBACRC,GAAiB,EACjBC,EAAUz9B,EAAOs9B,EAAa,EAAI,GAClCjpB,GAAQipB,EAAa,EACrB,MACJ,KAAKT,GAAOc,KAAKE,SACbN,EAAQ,qBACRC,EAAgB,GAChBC,EAAUppB,EAAOipB,EAAa,EAC9Bt9B,GAAQs9B,EAAa,EACrB,MACJ,KAAKT,GAAOc,KAAKG,UACjB,KAAKjB,GAAOc,KAAKI,cACbR,EAAQ,mBACRC,GAAiB,EACjB1S,EAAex1D,KAAKq0B,QAAU6zC,EAAgB,EAC1CrlE,EAAY42B,IACZiR,GAAQ,IAAMs9B,EAEVjpB,IADCA,EAAOrU,GAAQ,GAAM,EACd,GAAMs9B,EAGNA,EAEZG,EAAUz9B,EAAOs9B,EACjBI,EAASrpB,EAAOipB,EAAa,IAG7Bt9B,GAAQ,IAAMs9B,EACdjpB,GAAQipB,EACRG,EAAUz9B,EAAO,IAAOs9B,EACxBI,EAASrpB,EAAO,IAAOipB,GAE3B,MACJ,KAAKT,GAAOc,KAAKK,QACjB,KAAKnB,GAAOc,KAAKM,YACbV,EAAQ,qBACRC,GAAiB,EACjB1S,EAAex1D,KAAKq0B,QAAU6zC,EAAgB,EAC1CrlE,EAAY42B,IACZ0uC,EAAUH,EAAa,EACvBt9B,GAAQ,GAAMs9B,GACTjpB,EAAOrU,GAAQ,GAAM,IACtBqU,GAAQipB,EAAa,GAEzBG,EAAUppB,EAAO,GAAMipB,EACvBI,EAAS19B,EAAO,KAAOs9B,IAGvBt9B,GAAQ,IAAOs9B,EACfjpB,GAAQ,GAAMipB,EACdG,EAAUppB,EAAO,IAAOipB,EACxBI,EAAS19B,EAAOs9B,GAEpB,MACJ,KAAKT,GAAOc,KAAKO,uBACbl+B,GAAQ,GAAMs9B,EACdjpB,GAAQipB,EACR,MACJ,QACI,MAAM,IAAI7kE,EAAa,cAAe,mBAAmBnD,KAAK8R,uBAEtE,IAAI+2D,EAAa,WAEjB,GAAI7oE,KAAK8R,OAASy1D,GAAOc,KAAKC,YAActoE,KAAK8R,OAASy1D,GAAOc,KAAKE,SAClEzyC,EAAImpB,SAASt7C,EAAI3D,KAAKq0B,QAASqW,EAAM,EAAGqU,EAAOrU,QAI/C,GADAm+B,EAAa,SACThmE,EAAY42B,GACZ,IAAK,IAAIlxB,EAAImiC,EAAMniC,GAAKw2C,EAAMx2C,GAAKy/D,EAC/B14C,EAAMo9B,YAAY52B,EAAKnyB,EAAI3D,KAAKq0B,QAAU,EAAG9rB,EAAGvI,KAAKqiC,eAAeC,WAAY,2BAGnF,CACD,IAAI/5B,EACJ,IAAKA,EAAImiC,EAAMniC,GAAKw2C,EAAMx2C,GAAK,GAC3B+mB,EAAMo9B,YAAY52B,EAAKnyB,EAAI3D,KAAKq0B,QAAU,EAAG9rB,EAAGvI,KAAKqiC,eAAeC,WAAY,uBAEhFtiC,KAAK8R,OAASy1D,GAAOc,KAAKI,gBAC1BL,EAAS7/D,EAAI,IAAOy/D,GAI5BhoE,KAAK8R,OAASy1D,GAAOc,KAAKO,yBAI9Bt5C,EAAMo9B,YAAY52B,EAAKnyB,EAAI3D,KAAKq0B,QAAU6zC,EAAeC,EAASnoE,KAAKqiC,eAAeC,WAAY2lC,EAAO,CACrG3mE,SAAU,UAAU2mE,KAASY,MAG7B7oE,KAAK8R,OAASy1D,GAAOc,KAAKI,eAAiBzoE,KAAK8R,OAASy1D,GAAOc,KAAKM,cACrE7yC,EAAI/gB,OACJ+gB,EAAIlf,QAAQ5W,KAAK8W,UACjBgf,EAAIyb,SAAS,IAAK5tC,EAAI6xD,EAAc4S,GACpCtyC,EAAIngB,aAIhB4xD,GAAOc,KAAO,CACVC,WAAY,EACZC,SAAU,EACVC,UAAW,EACXE,QAAS,EACTD,cAAe,EACfE,YAAa,EACbC,uBAAwB,GAE5BrB,GAAOvwD,UAAY,CACfzI,OAAQhB,EAAK8D,MACblD,KAAMZ,EAAKI,KACXS,OAAQjC,EAAWihC,KACnB/+B,MAAOjC,EAAUoD,QC/Md,MAAMs5D,WAAgBtwC,EACzB/2B,cACI8B,QACAvD,KAAKszB,SAAWkF,EAASE,SAASY,MAClCt5B,KAAKqiC,eAAiB,CAClB0mC,OAAO,EACPC,cAAe,GACfC,YAAa,EACbC,WAAY,EACZC,WAAY,GAEhBnpE,KAAKopE,gBAAgBppE,KAAKqiC,eAAe2mC,eAElCtnE,sBACP,OAAOG,EAASinE,QAGpBvjE,cAAc8jE,EAAU1mC,EAAO7tB,GAC3B,IAAKu0D,GAAgC,IAApBA,EAASzjE,OACtB,OAAO,EAEX,IAAI6yB,EAAYkK,EAAM+M,cAClBplC,EAAQ,EACRxE,EAAQ68B,EAAMoN,YAAc,EAEhC,MAAMkQ,EAAQnrC,EAAQ0mC,WAAWgE,GAAK99C,UACtC,GAAIu+C,GAASA,EAAMr6C,OAAS,EAAG,CAE3B6yB,GADmBwnB,EAAM7sC,KAAKiJ,GAAOA,EAAGikC,kBAAiBtP,QAAO,CAACvsC,EAAGC,IAAOD,EAAIC,EAAID,EAAIC,IAAMmpB,EAAOgD,oBAC9D,OAGtC8R,EAAM+M,eAAiB,EAG3B,IAAK,IAAInnC,EAAI,EAAGA,EAAI8gE,EAASzjE,SAAU2C,EAAG,CACtC,MAAM+gE,EAAUD,EAAS9gE,GACzB+gE,EAAQlyC,UAAUtxB,GAClBwjE,EAAQjvC,YAAY5B,GACpBnuB,GAASg/D,EAAQ75C,WACjB3pB,GAASwE,EAGb,OADAq4B,EAAMoN,aAAezlC,GACd,EAGXi/D,SAASR,GAEL,OADA/oE,KAAKqiC,eAAe0mC,MAAQA,EACrB/oE,KAGXopE,gBAAgB9+D,GAGZ,OAFAtK,KAAKqiC,eAAe2mC,cAAgB1+D,EACpCtK,KAAKu5B,SAASjvB,GACPtK,KAGX8V,OACI,MAAMggB,EAAM91B,KAAK6V,eACX4jB,EAAOz5B,KAAK05B,oBAClB15B,KAAKmW,cACL,MACMqzD,EADQ/vC,EAAK4O,mBAAmB7P,EAASE,SAASY,MAAOt5B,KAAKiS,OACnDtO,EAAI3D,KAAKq0B,QACpBo1C,EAAKhwC,EAAKyX,eAAelxC,KAAKy4B,WAAa,EACjDqwC,GAAQY,cAAc5zC,EAAK0zC,EAAIC,EAAIzpE,KAAKqiC,gBAM5C98B,qBAAqBuwB,EAAKnyB,EAAG+E,EAAGihE,GAC5B,MAAM,MAAEZ,EAAK,cAAEC,EAAa,WAAEE,EAAU,WAAEC,EAAU,YAAEF,GAAgBU,EAChEC,EAAYZ,EAAgBE,EAElC,IAAI3gE,EACJ,GAFAutB,EAAIQ,YAEAyyC,EAAO,CAEP,IADAjzC,EAAIS,OAAO5yB,EAAG+E,EAAIygE,EAAa,GAC1B5gE,EAAI,EAAGA,EAAIqhE,EAAY,IAAKrhE,EAC7ButB,EAAIU,OAAO7yB,EAAIulE,EAAYxgE,EAAIugE,EAAc,GAC7CtlE,GAAKulE,EACLpzC,EAAIU,OAAO7yB,EAAIulE,EAAYxgE,EAAIugE,EAAc,GAC7CtlE,GAAKulE,EAET,IAAK3gE,EAAI,EAAGA,EAAIqhE,EAAY,IAAKrhE,EAC7ButB,EAAIU,OAAO7yB,EAAIulE,EAAYxgE,EAAIugE,EAAc,EAAIE,EAAa,GAC9DxlE,GAAKulE,EACLpzC,EAAIU,OAAO7yB,EAAIulE,EAAYxgE,EAAIugE,EAAc,EAAIE,EAAa,GAC9DxlE,GAAKulE,EAETpzC,EAAIa,WAEH,CAED,IADAb,EAAIS,OAAO5yB,EAAG+E,EAAIygE,GACb5gE,EAAI,EAAGA,EAAIqhE,EAAY,IAAKrhE,EAC7ButB,EAAIW,iBAAiB9yB,EAAIulE,EAAa,EAAGxgE,EAAIugE,EAAc,EAAGtlE,EAAIulE,EAAYxgE,GAC9E/E,GAAKulE,EACLpzC,EAAIW,iBAAiB9yB,EAAIulE,EAAa,EAAGxgE,EAAIugE,EAAc,EAAGtlE,EAAIulE,EAAYxgE,GAC9E/E,GAAKulE,EAET,IAAK3gE,EAAI,EAAGA,EAAIqhE,EAAY,IAAKrhE,EAC7ButB,EAAIW,iBAAiB9yB,EAAIulE,EAAa,EAAGxgE,EAAIugE,EAAc,EAAIE,EAAYxlE,EAAIulE,EAAYxgE,EAAIygE,GAC/FxlE,GAAKulE,EACLpzC,EAAIW,iBAAiB9yB,EAAIulE,EAAa,EAAGxgE,EAAIugE,EAAc,EAAIE,EAAYxlE,EAAIulE,EAAYxgE,EAAIygE,GAC/FxlE,GAAKulE,EAETpzC,EAAIa,SCtFhB,SAAS,MAAK5yB,GACN8lE,GAAgBznC,OAChBv+B,EAAI,2BAA4BE,GAEjC,MAAM8lE,GACTpoE,cAEIzB,KAAK2iC,MAAQ,CACTK,WAAY,EACZ+M,YAAa,EACbtX,UAAW,EACXiX,cAAe,GAGnB1vC,KAAK8pE,QAAU,GACf9pE,KAAKu3C,cAAe,EACpBv3C,KAAKy3C,eAAgB,EACrBz3C,KAAK+pE,WAAY,EACjB/pE,KAAKsK,MAAQ,EACbtK,KAAK4wC,QAAU,EAEnB/I,YAAYmiC,GAER,OADA,GAAE,qDACKhqE,KAAKm3C,UAAU6yB,GAQ1B7yB,UAAU6yB,GACN,MAAM1oE,EAAW0oE,EAAO/1D,cAOxB,OANKjU,KAAK8pE,QAAQxoE,KACdtB,KAAK8pE,QAAQxoE,GAAY,IAE7BtB,KAAK8pE,QAAQxoE,GAAUkT,KAAKw1D,GAC5BA,EAAO9vC,mBAAmBl6B,MAC1BA,KAAKu3C,cAAe,EACbv3C,KAKX0nC,aAAapmC,GAET,OADA,GAAE,uDACKtB,KAAKw7C,WAAWl6C,GAE3Bk6C,WAAWl6C,GACP,IAAIsM,EACJ,OAAyC,QAAjCA,EAAK5N,KAAK8pE,QAAQxoE,UAA8B,IAAPsM,EAAgBA,EAAK,GAE1E6hB,WACI,OAAOzvB,KAAKsK,MAEhB2/D,eACI,OAAOjqE,KAAK2iC,MAAMK,WAEtBuuB,gBACI,OAAOvxD,KAAK2iC,MAAMoN,YAEtB0L,WACI,OAAOz7C,KAAK2iC,MAEhBhyB,aACI,IAAK3Q,KAAK+pE,UACN,MAAM,IAAI5mE,EAAa,oBAAqB,sCAEhD,MAAO,CACHmH,MAAOtK,KAAK2iC,MAAMK,WAAahjC,KAAK2iC,MAAMoN,YAAc/vC,KAAK4wC,QAC7DA,QAAS5wC,KAAK4wC,SAGtB0G,YACI,GAAIt3C,KAAKu3C,aACL,OACJ,GAAE,iCACF,MAAM5U,EAAQ3iC,KAAK2iC,MACbmnC,EAAU9pE,KAAK8pE,QAErBhnE,GAAUk3D,OAAO8P,EAAQjoE,EAASiB,WAAY6/B,GAC9C67B,GAAYxE,OAAO8P,EAAQjoE,EAAS28D,aAAc77B,GAClDvgC,GAAI43D,OAAO8P,EAAQjoE,EAASO,KAAMugC,GAClC4mB,GAAeyQ,OAAO8P,EAAQjoE,EAAS0nD,gBAAiB5mB,GACxD7gC,GAAWk4D,OAAO8P,EAAQjoE,EAASC,YAAa6gC,GAChD4kC,GAAOvN,OAAO8P,EAAQjoE,EAAS0lE,QAAS5kC,GACxCngC,GAAew3D,OAAO8P,EAAQjoE,EAASW,gBAAiBmgC,GACxD63B,GAAaR,OAAO8P,EAAQjoE,EAAS24D,cAAe73B,GACpDsjC,GAAajM,OAAO8P,EAAQjoE,EAASokE,cAAetjC,GACpDwP,GAAa6nB,OAAO8P,EAAQjoE,EAASswC,cAAexP,GACpD85B,GAASzC,OAAO8P,EAAQjoE,EAAS46D,UAAW95B,GAC5C3gC,GAAWg4D,OAAO8P,EAAQjoE,EAASG,YAAa2gC,GAChD6e,GAAYwY,OAAO8P,EAAQjoE,EAAS2/C,aAAc7e,GAClD6c,GAAKwa,OAAO8P,EAAQjoE,EAAS29C,MAAO7c,GACpCmmC,GAAQ9O,OAAO8P,EAAQjoE,EAASinE,SAAUnmC,EAAO3iC,MAEjDA,KAAKsK,MAAQq4B,EAAMK,WAAaL,EAAMoN,YACtC/vC,KAAKu3C,cAAe,EAExBC,aACQx3C,KAAKy3C,gBAET,GAAE,kCAEF30C,GAAU00C,WAAWx3C,KAAKw7C,WAAW35C,EAASiB,cAGtD+mE,GAAgBznC,OAAQ,EClHjB,MAAM8nC,WAAa3tB,GAEtB96C,YAAYqQ,EAAM3D,EAAMqgC,GACpBjrC,QAKAvD,KAAK+tB,KAAOm8C,GAAKC,MAAc,OAC/BnqE,KAAKo6B,YAAY6hB,GAAsB8B,OACvC/9C,KAAKg+C,QAAQlsC,EAAM3D,EAAMqgC,GACzBxuC,KAAKu5B,SAAS1L,EAAOgV,mBAAmB5xB,aAAa,QAAQjR,KAAKmO,eApB1E,YAAcpK,GACNmmE,GAAK9nC,OACLv+B,EAAI,gBAAiBE,GAmBrB,CAAE,iBAAkB+N,GAEbpQ,sBACP,OAAOG,EAASqoE,KAMTC,mBACP,MAAO,CACHtwD,OAAQ,CACJxW,KAAM,QACNW,KAAM,EACNgwB,MAAO,GAEXja,KAAM,CACF1W,KAAM,QACNW,KAAM,EACNgwB,MAAO,GAEX/Z,KAAM,CACF5W,KAAM,QACNW,KAAM,EACNgwB,MAAO,GAEXha,MAAO,CACH3W,KAAM,QACNW,KAAM,EACNgwB,MAAO,GAEX7Z,WAAY,CACR9W,KAAM,aACNW,KAAM,EACNgwB,MAAO,GAEX9Z,QAAS,CACL7W,KAAM,QACNW,KAAM,EACNgwB,MAAO,GAEX,gBAAiB,CACb3wB,KAAM,QACNW,KAAM,EACNgwB,MAAO,GAEX,aAAc,CACV3wB,KAAM,QACNW,KAAM,EACNgwB,MAAO,GAEX,aAAc,CACV3wB,KAAM,QACNW,KAAM,EACNgwB,MAAO,GAEX5Z,QAAS,CACL/W,KAAM,QACNW,KAAM,EACNgwB,MAAO,GAEX3Z,OAAQ,CACJhX,KAAM,QACNW,KAAM,EACNgwB,MAAO,GAEXo2C,IAAK,CACD/mE,KAAM,iBACN2wB,MAAO,IAKnBgqB,QAAQlsC,EAAM3D,EAAMqgC,GAChBxuC,KAAK8R,KAAOA,EACZ9R,KAAK+tB,KAAOm8C,GAAKC,MAAMr4D,GAEnB9R,KAAKmO,UADIvK,IAATuK,EACY,UAGAA,EAEhB,MAAMy0B,EAAY/U,EAAOgV,mBAMzB,GALA7iC,KAAK+tB,KAAKiG,MAAQ4O,EAAU3xB,aAAa,QAAQjR,KAAKmO,aAAc,GACpEnO,KAAKmvB,MAAQ,IAAIG,EAAMtvB,KAAK+tB,KAAK1qB,KAAMrD,KAAK+tB,KAAKiG,MAAO,CACpD1yB,SAAU,QAAQtB,KAAK+tB,KAAK1qB,QAAQrD,KAAKmO,cAG1BvK,IAAf4qC,EAA0B,CAC1B,MAAMnrC,EAAOu/B,EAAU3xB,aAAa,oBAAoBu9B,eAClDxa,EAAQ4O,EAAU3xB,aAAa,oBAAoBu9B,KAAcxuC,KAAKmO,cACtEnK,EAAO4+B,EAAU3xB,aAAa,oBAAoBu9B,KAAcxuC,KAAKmO,QAAQnO,KAAK8R,aAClFuiB,EAAUuO,EAAU3xB,aAAa,oBAAoBu9B,KAAcxuC,KAAKmO,QAAQnO,KAAK8R,eAC3F9R,KAAKwuC,WAAa,CAAEnrC,KAAAA,EAAM2wB,MAAAA,EAAOhwB,KAAAA,EAAMqwB,QAAAA,GACvCr0B,KAAKqqE,WAAa,IAAI/6C,EAAMtvB,KAAKwuC,WAAWnrC,KAAMrD,KAAKwuC,WAAWxa,OAClEh0B,KAAKqqE,WAAW/5D,QAAQqlB,MAAQ,EAChC31B,KAAKqqE,WAAWjzC,UAAUp3B,KAAKwuC,WAAWna,cAG1Cr0B,KAAKwuC,gBAAa5qC,EAEtB,OAAO5D,KAGXyvB,WAII,MAHkB,QAAdzvB,KAAK8R,MACLpO,EAAQ1D,KAAKk3B,MAAO,YAAa,kCAE9Bl3B,KAAKsK,MAGhB2sB,SAASC,GAEL,GADAl3B,KAAKk3B,MAAQA,EACK,QAAdl3B,KAAK8R,KAAgB,CACrB,MAAMqd,EAAQzrB,EAAQ1D,KAAKmvB,MAAO,YAAa,kCACzCm7C,EAAWtqE,KAAKk3B,MAAMmY,cACtBzM,EAAY/U,EAAOgV,mBACnB7O,EAAQ4O,EAAU3xB,aAAa,kBAAkBq5D,WACjDC,EAAS3nC,EAAU3xB,aAAa,kBAAkBq5D,YACxDn7C,EAAM6H,SAAShD,GACf7E,EAAMmI,UAAUizC,GAEpB,OAAOvqE,KAGX8V,OACI,MAAMqZ,EAAQzrB,EAAQ1D,KAAKmvB,MAAO,YAAa,kCACzC+H,EAAQl3B,KAAKi4B,aACbnC,EAAMoB,EAAMrhB,eAClB7V,KAAKmW,cACL2f,EAAIuV,UAAU,OAAQrrC,KAAK0S,aAAa,OACxCyc,EAAM8H,SAASC,GACf/H,EAAMxY,WAAWmf,QACMlyB,IAAnB5D,KAAK+tB,KAAK/pB,MACVhE,KAAKw8C,iBAAiBrtB,EAAO+H,EAAOl3B,KAAK+tB,KAAK/pB,MAElDmrB,EAAM+I,cAAcl4B,KAAK2D,QACDC,IAApB5D,KAAKwuC,iBAAgD5qC,IAApB5D,KAAKqqE,aACtCrqE,KAAKw8C,iBAAiBx8C,KAAKqqE,WAAYnzC,EAAOl3B,KAAKwuC,WAAWxqC,MAC9DhE,KAAKqqE,WAAWpzC,SAASC,GACzBl3B,KAAKqqE,WAAW1zD,WAAWmf,GAC3B91B,KAAKqqE,WAAWnyC,cAAcl4B,KAAK2D,IAEvCmyB,EAAIyV,cAIZ2+B,GAAK9nC,OAAQ,ECrKN,MAAMooC,WAAqBjuB,GAE9B96C,YAAYmuB,EAAS66C,EAAeC,GAChCnnE,QACAvD,KAAKmjC,QAAU,GACfnjC,KAAK2qE,UAAU/6C,EAAS66C,EAAeC,GACvC1qE,KAAKo6B,YAAY6hB,GAAsB8B,OACvC/9C,KAAK4qE,eAAiB,GACtB5qE,KAAKgR,OAAS,GACdhR,KAAK6qE,WAAa,GAClB7qE,KAAK8qE,eAAgB,EAEdppE,sBACP,OAAOG,EAAS2oE,aAKpBO,eAAexyD,EAAKyyD,GAChB,MAAMC,EAAep9C,EAAO4U,gBAAgBlqB,EAAIzG,MAC1Cqd,EAAQ,IAAIG,EAAM27C,EAAa5nE,KAAMrD,KAAK4qE,gBAEhD,IAAIM,EAAa,EACjB,GAAiB,MAAb3yD,EAAIzG,MAAgBk5D,EAAS,CAC7B,MAAMp6B,EAAU45B,GAAavnC,kBAAkB+nC,EAAQl5D,MACvD,GAAI8+B,EAAS,CAETs6B,EADgBF,EAAQhnE,MAAQuU,EAAIvU,KACb4sC,EAAQ5X,MAAQ4X,EAAQ1X,OAIvDl5B,KAAKw8C,iBAAiBrtB,EAAOnvB,KAAKi4B,aAAc1f,EAAIvU,MACpDhE,KAAKgR,OAAOwD,KAAK2a,GACjB,MAAMg8C,EAAYnrE,KAAK6qE,WAAW7qE,KAAK6qE,WAAWjlE,OAAS,GACrDgpC,EAAazf,EAAMxe,aAAarG,MAAQ4gE,EAE9ClrE,KAAK6qE,WAAWr2D,KAAK22D,EAAYv8B,GAEjC5uC,KAAKsK,OAASskC,EAIlBw8B,UAAUz7C,GAGN,OAFA3vB,KAAK+pE,WAAY,EACjB/pE,KAAKyqE,cAAgB96C,EACd3vB,KAEXqrE,uBAAuB17C,GAEnB,MAAM27C,EAAiBz9C,EAAO8T,aAAahS,GAErC47C,EAAkBvrE,KAAKmjC,QAAQv9B,OAAS,GAAK0lE,EAAe1lE,OAAS,GAAK0lE,EAAe,GAAGx5D,OAAS9R,KAAKmjC,QAAQ,GAAGrxB,KAErH05D,EAAWD,EAAkBD,EAAe1lE,OAAS0lE,EAAe1lE,OAAS5F,KAAKmjC,QAAQv9B,OAEhG,GAAI4lE,EAAW,EACX,OAEJ,MAAMC,EAAY,GAClB,IAAK,IAAIljE,EAAI,EAAGA,EAAIijE,EAAUjjE,IAAK,CAC/B,IAAI0J,EAAQ1J,EACPgjE,IACDt5D,EAAQq5D,EAAe1lE,OAAS4lE,EAAWjjE,GAE/C,MAAMgQ,EAAM+yD,EAAer5D,GAC3Bw5D,EAAUj3D,KAAK,CAAE1C,KAAM,IAAK9N,KAAMuU,EAAIvU,OAI1C,OADAhE,KAAKmjC,QAAUsoC,EAAUC,OAAO1rE,KAAKmjC,SAC9B,CACHA,QAASsoC,EACT35D,KAAMw5D,EAAe,GAAGx5D,MAIhC65D,WAAWz0C,GAGP,OAFAl3B,KAAK8qE,eAAgB,EACrB5zC,EAAM2Q,YAAY7nC,MACXA,KAIX4rE,gBAAgB79C,EAAMjc,EAAMqxB,EAAUnjC,KAAKmjC,SACvC,IACI0oC,EAuCAtjE,EAxCAujE,EAAS,EAEb,OAAQ/9C,GAEJ,IAAK,UACY,MAATjc,EACA+5D,EAAc,CAAC,IAAK,GAAK,EAAG,EAAG,KAAM,GAAK,GAE1CC,GAAU,EACd,MACJ,IAAK,gBACY,MAATh6D,EACA+5D,EAAc,CAAC,EAAG,EAAG,GAAK,IAAK,EAAG,EAAG,KAErCC,EAAS,IACb,MACJ,IAAK,OACDA,EAAS,GACT,MACJ,IAAK,QACY,MAATh6D,EACA+5D,EAAc,CAAC,EAAG,EAAG,IAAK,GAAK,EAAG,EAAG,KAErCC,GAAU,GACd,MACJ,IAAK,aACL,IAAK,aACY,MAATh6D,EACA+5D,EAAc,CAAC,GAAK,IAAK,EAAG,EAAG,IAAK,IAAK,GAEzCC,EAAS,EACb,MACJ,IAAK,OACL,IAAK,SACDA,EAAS,EAOjB,QAA2B,IAAhBD,EACP,IAAKtjE,EAAI,EAAGA,EAAI46B,EAAQv9B,SAAU2C,EAC9B46B,EAAQ56B,GAAGvE,KAAO6nE,EAAYtjE,QAGjC,GAAe,IAAXujE,EACL,IAAKvjE,EAAI,EAAGA,EAAI46B,EAAQv9B,SAAU2C,EAC9B46B,EAAQ56B,GAAGvE,MAAQ8nE,EAI/BpvB,WAAWzqC,GAGP,OAFKjS,KAAK+pE,WACN/pE,KAAKg6D,SACqB,IAAvBh6D,KAAKgR,OAAOpL,SAAkB5F,KAAK8qE,eAAiB74D,EAAQ,EAAK,EAAIjS,KAAK4zC,QAErFnkB,WAGI,OAFKzvB,KAAK+pE,WACN/pE,KAAKg6D,SACFh6D,KAAKsK,MAEhBqgE,UAAU/6C,EAAS66C,EAAeC,GAK9B,OAJA1qE,KAAK+pE,WAAY,EACjB/pE,KAAK4vB,QAAUA,EACf5vB,KAAKyqE,cAAgBA,EACrBzqE,KAAK0qE,aAAeA,EACb1qE,KAKX+rE,SAASrB,GAGL,OAFA1qE,KAAK+pE,WAAY,EACjB/pE,KAAK0qE,aAAeA,EACb1qE,KAEXgsE,sBAAsBtB,GAClB,MAAM9gE,EAAM3E,KAAKulC,IAAIkgC,EAAa9kE,OAAQ5F,KAAKmjC,QAAQv9B,QACvD,IAAK,IAAI2C,EAAI,EAAGA,EAAIqB,IAAOrB,EACnBmiE,EAAaniE,KACbvI,KAAKmjC,QAAQ56B,GAAGuJ,KAAO44D,EAAaniE,IAIhDyxD,SACI,MAAM9iC,EAAQl3B,KAAKi4B,aACnBj4B,KAAKsK,MAAQ,EACbtK,KAAKgR,OAAS,GACdhR,KAAK6qE,WAAa,CAAC,GACnB7qE,KAAKmjC,QAAUtV,EAAO8T,aAAaj+B,EAAQ1D,KAAK4vB,UAChD,MAAMuT,EAAUnjC,KAAKmjC,QACf8oC,EAAsB9oC,EAAQv9B,OAAS,EAAIu9B,EAAQ,GAAGrxB,UAAOlO,EACnE,IAAIsoE,EAOJ,GANIlsE,KAAKyqE,gBACLyB,EAAgBlsE,KAAKqrE,uBAAuBrrE,KAAKyqE,gBAEjDzqE,KAAK0qE,cACL1qE,KAAKgsE,sBAAsBhsE,KAAK0qE,cAEhC1qE,KAAKmjC,QAAQv9B,OAAS,EAAG,CACzB,MAAMmoB,GAAQ/tB,KAAKszB,WAAa2oB,GAAsBmB,IAAMlmB,EAAMi1C,aAAej1C,EAAMk1C,YAAcl1C,EAAMk1C,UACvGF,GACAlsE,KAAK4rE,gBAAgB79C,EAAMm+C,EAAcp6D,KAAMo6D,EAAc/oC,SAEjEnjC,KAAK4rE,gBAAgB79C,EAAMk+C,EAAqB9oC,GAChD,IAAK,IAAI56B,EAAI,EAAGA,EAAIvI,KAAKmjC,QAAQv9B,SAAU2C,EACvCvI,KAAK+qE,eAAe/qE,KAAKmjC,QAAQ56B,GAAIvI,KAAKmjC,QAAQ56B,EAAI,IAG9DvI,KAAK+pE,WAAY,EAKrBh5D,YAGI,OAFK/Q,KAAK+pE,WACN/pE,KAAKg6D,SACFh6D,KAAKgR,OAEhB8E,OACI,MAAMohB,EAAQl3B,KAAKi4B,aACbnC,EAAMoB,EAAMrhB,eACb7V,KAAK+pE,WACN/pE,KAAKg6D,SACTh6D,KAAKmW,cACL2f,EAAIuV,UAAU,eAAgBrrC,KAAK0S,aAAa,OAChD,IAAK,IAAInK,EAAI,EAAGA,EAAIvI,KAAKgR,OAAOpL,OAAQ2C,IAAK,CACzC,MAAM4mB,EAAQnvB,KAAKgR,OAAOzI,GACpB5E,EAAI3D,KAAK2D,EAAI3D,KAAK6qE,WAAWtiE,GACnC4mB,EAAM8H,SAASC,GACf/H,EAAMxY,WAAWmf,GACjB3G,EAAM+I,cAAcv0B,GAExBmyB,EAAIyV,cAKZi/B,GAAavnC,kBAAoB,CAC7B,IAAK,CACDjK,MAAO,EACPE,MAAO,GAEXx0B,EAAG,CACCs0B,MAAO,EACPE,MAAO,GAEXt0B,EAAG,CACCo0B,MAAO,EACPE,MAAO,GAEX,KAAM,CACFF,MAAO,EACPE,MAAO,GAEX7c,GAAI,CACA2c,MAAO,EACPE,MAAO,GAEX5c,GAAI,CACA0c,MAAO,EACPE,MAAO,GAEXhzB,EAAG,CACC8yB,MAAO,EACPE,MAAO,GAEXzc,IAAK,CACDuc,MAAO,EACPE,MAAO,GAEX,KAAM,CACFF,MAAO,EACPE,MAAO,GAEX,IAAK,CACDF,MAAO,EACPE,MAAO,GAEX,KAAM,CACFF,MAAO,EACPE,MAAO,GAEX,MAAO,CACHF,MAAO,EACPE,MAAO,GAEX3c,GAAI,CACAyc,MAAO,EACPE,MAAO,IAEX1c,IAAK,CACDwc,MAAO,EACPE,MAAO,KC1RR,MAAMmzC,WAAmB9vB,GAC5B96C,YAAYqQ,EAAMnO,EAAG2wB,GACjB/wB,QACAvD,KAAKssE,YAAcx6D,EACnB9R,KAAK2D,EAAIA,EACT3D,KAAKq0B,QAAU,EACfr0B,KAAKs0B,QAAUA,EACft0B,KAAKwX,YAEE9V,sBACP,OAAOG,EAASwqE,WAEpBE,UAAU5oE,GAEN,OADA3D,KAAKq0B,QAAU1wB,EACR3D,KAEXwsE,UAAU9jE,GAEN,OADA1I,KAAKs0B,QAAU5rB,EACR1I,KAEX8V,KAAKohB,EAAOvzB,GAER,OADA3D,KAAKmW,cACGnW,KAAKssE,aACT,KAAKD,GAAWv6D,KAAK26D,WACjBzsE,KAAK0sE,cAAcx1C,EAAOvzB,EAAIuzB,EAAMzH,YACpC,MACJ,KAAK48C,GAAWv6D,KAAK66D,UACjB3sE,KAAK4sE,eAAe11C,EAAOvzB,EAAG,QAAQ,GACtC,MACJ,KAAK0oE,GAAWv6D,KAAK+6D,WACjB7sE,KAAK8sE,eAAe51C,EAAOvzB,GAC3B,MACJ,KAAK0oE,GAAWv6D,KAAKi7D,YACjB/sE,KAAK8sE,eAAe51C,EAAOvzB,EAAIuzB,EAAMzH,YACrC,MACJ,KAAK48C,GAAWv6D,KAAKk7D,GACjBhtE,KAAK4sE,eAAe11C,EAAOvzB,EAAG,QAAQ,GACtC,MACJ,KAAK0oE,GAAWv6D,KAAKm7D,WACjBjtE,KAAK4sE,eAAe11C,EAAOvzB,EAAG,WAAW,GACzC,MACJ,KAAK0oE,GAAWv6D,KAAKo7D,WACjBltE,KAAK4sE,eAAe11C,EAAOvzB,EAAG,gBAAgB,GAC9C,MACJ,KAAK0oE,GAAWv6D,KAAKq7D,GACjBntE,KAAK4sE,eAAe11C,EAAOvzB,EAAG,QAAQ,GACtC,MACJ,KAAK0oE,GAAWv6D,KAAKs7D,WACjBptE,KAAK4sE,eAAe11C,EAAOvzB,EAAG,WAAW,GACzC,MACJ,KAAK0oE,GAAWv6D,KAAKu7D,WACjBrtE,KAAK4sE,eAAe11C,EAAOvzB,EAAG,gBAAgB,GAC9C,MACJ,KAAK0oE,GAAWv6D,KAAKw7D,KACjBttE,KAAK4sE,eAAe11C,EAAOvzB,EAAG,QAAQ,GACtC,MACJ,KAAK0oE,GAAWv6D,KAAKy7D,QACjBvtE,KAAK4sE,eAAe11C,EAAOvzB,EAAG,MAAM,GAK5C,OAAO3D,KAEX0sE,cAAcx1C,EAAOvzB,GACjB,MAAM+E,EAAIwuB,EAAMga,eAAeha,EAAMmY,eAAiBrvC,KAAKs0B,QAE3D,OADAhF,EAAMo9B,YAAYx1B,EAAMrhB,eAAgB7V,KAAK2D,EAAIA,EAAI3D,KAAKq0B,QAAS3rB,EAAImlB,EAAOgV,mBAAmB5xB,aAAa,gCAAiC,GAAI,OAAQ,CAAE3P,SAAU,SAChKtB,KAEX8sE,eAAe51C,EAAOvzB,GAClB,MAAM+E,EAAIwuB,EAAMga,eAAeha,EAAMmY,eAAiBrvC,KAAKs0B,QAE3D,OADAhF,EAAMo9B,YAAYx1B,EAAMrhB,eAAgB7V,KAAK2D,EAAIA,EAAI3D,KAAKq0B,QAAS3rB,EAAImlB,EAAOgV,mBAAmB5xB,aAAa,iCAAkC,GAAI,QAAS,CAAE3P,SAAU,UAClKtB,KAEX4sE,eAAe11C,EAAOvzB,EAAGoB,EAAMyoE,GAC3B,MAAM13C,EAAMoB,EAAMrhB,eAClBigB,EAAI/gB,OACJ+gB,EAAIlf,QAAQ5W,KAAK8W,UACjB,IAAI22D,EAAS,EACTC,EAAW,EACf,MAAMC,EAAgBz2C,EAAMykB,gBAAkB37C,KAAK2D,EACnD,OAAQ3D,KAAKssE,aAET,KAAKD,GAAWv6D,KAAK66D,UAEjBc,EAASztE,KAAK2D,EAAIuzB,EAAM02C,sBACxBF,EACID,EACI33C,EAAI0a,YAAYzrC,GAAMuF,MACtBujB,EAAOgV,mBAAmB5xB,aAAa,sCAC/C,MAEJ,KAAKo7D,GAAWv6D,KAAKk7D,GACrB,KAAKX,GAAWv6D,KAAKo7D,WACrB,KAAKb,GAAWv6D,KAAKq7D,GACrB,KAAKd,GAAWv6D,KAAKu7D,WACrB,KAAKhB,GAAWv6D,KAAKw7D,KACjBG,EACIztE,KAAK2D,EACDA,EACA3D,KAAKq0B,QACL6C,EAAMzH,WACN5B,EAAOgV,mBAAmB5xB,aAAa,sCACvC08D,EACA73C,EAAI0a,YAAYzrC,GAAMuF,MAC9B,MAEJ,QACImjE,EACIztE,KAAK2D,EACDA,EACA3D,KAAKq0B,QACL6C,EAAMzH,WACN5B,EAAOgV,mBAAmB5xB,aAAa,sCACvC08D,EACA73C,EAAI0a,YAAYzrC,GAAMuF,MACtBujB,EAAOgV,mBAAmB5xB,aAAa,sCAC/Cy8D,EACID,EACI33C,EAAI0a,YAAYzrC,GAAMuF,MACtBujB,EAAOgV,mBAAmB5xB,aAAa,sCAGvD,MAAMvI,EAAIwuB,EAAMga,eAAeha,EAAMmY,eACjCrvC,KAAKs0B,QACLzG,EAAOgV,mBAAmB5xB,aAAa,sCAM3C,OALIu8D,GACAl+C,EAAMo9B,YAAY52B,EAAK43C,EAAUhlE,EAAG,GAAI,OAAQ,CAAEpH,SAAU,SAEhEw0B,EAAIyb,SAASxsC,EAAM0oE,EAAQ/kE,EAAI,GAC/BotB,EAAIngB,UACG3V,MAGfqsE,GAAWr1D,UAAY,CACnBzI,OAAQhB,EAAK8D,MACblD,KAAM,GACNC,OAAQjC,EAAWihC,KACnB/+B,MAAOjC,EAAUqC,QAErB49D,GAAWv6D,KAAO,CACd0rC,KAAM,EACNmvB,UAAW,EACXF,WAAY,EACZI,WAAY,EACZE,YAAa,EACbC,GAAI,EACJC,WAAY,EACZC,WAAY,EACZC,GAAI,EACJC,WAAY,GACZC,WAAY,GACZC,KAAM,GACNC,QAAS,IC3JN,MAAMM,WAAqBtxB,GAC9B96C,YAAYqsE,EAASnqE,EAAGyrB,EAAS2+C,GAAW,GACxCxqE,QACAvD,KAAKu5B,SAAS,IACdv5B,KAAK8tE,QAAUA,EACf9tE,KAAK2D,EAAIA,EACT3D,KAAKguE,QAAU,EACfhuE,KAAKovB,QAAUA,EACfpvB,KAAK+tE,SAAWA,EAChB/tE,KAAKwX,YAEE9V,sBACP,OAAOG,EAASgsE,aAEpBI,gBAAgBH,GAEZ,OADA9tE,KAAK8tE,QAAUA,EACR9tE,KAEXusE,UAAU5oE,GAEN,OADA3D,KAAKguE,QAAUrqE,EACR3D,KAEXwsE,UAAU9jE,GAEN,OADA1I,KAAKovB,QAAU1mB,EACR1I,KAEX8V,KAAKohB,EAAO82C,GACR,MAAMl4C,EAAMoB,EAAMrhB,eAClB7V,KAAKmW,cACL2f,EAAI/gB,OACJ+gB,EAAIrgB,aAAa,GACjBqgB,EAAIlf,QAAQ5W,KAAK8W,UACjB,MAGMo3D,EAAmBp4C,EAAI0a,YAAYxwC,KAAK8tE,SAGxCxjE,EAFY4jE,EAAiB5jE,MAET,EACpBC,EAFa2jE,EAAiB3jE,OAER,EAEtB7B,EAAIwuB,EAAMga,eAAe,KAAOlxC,KAAKovB,QACrCzrB,EAAI3D,KAAK2D,EAAIqqE,EASnB,OARIhuE,KAAK+tE,WACLj4C,EAAIQ,YACJR,EAAIrgB,aAXU,GAYdqgB,EAAIuqC,KAAK18D,EAAG+E,EAAIwlE,EAAiBxlE,EAbpB,EAakC4B,EAAOC,GACtDurB,EAAIrH,UAERqH,EAAIyb,SAASvxC,KAAK8tE,QAASnqE,EAjBV,EAiBwB+E,GACzCotB,EAAIngB,UACG3V,MAGf6tE,GAAa72D,UAAY,CACrBzI,OAAQhB,EAAKiB,WACbL,KAAM,GACNC,OAAQjC,EAAWihC,KACnB/+B,MAAOjC,EAAUqC,QCxDd,MAAM0/D,WAAmB5xB,GAC5B96C,YAAY2sE,EAAOzqE,EAAGyrB,GAClB7rB,QAEAvD,KAAKqiC,eAAiB,CAAEyW,iBAAkB,IAC1C94C,KAAKouE,MAAQA,EACbpuE,KAAKszB,SAAW2oB,GAAsBhjB,MACtCj5B,KAAK2D,EAAIA,EACT3D,KAAKguE,QAAU,GACfhuE,KAAKovB,QAAUA,EACfpvB,KAAKwX,YAEE9V,sBACP,OAAOG,EAASssE,WAEpBE,SAASD,GAEL,OADApuE,KAAKouE,MAAQA,EACNpuE,KAEXusE,UAAU5oE,GAEN,OADA3D,KAAKguE,QAAUrqE,EACR3D,KAEXwsE,UAAU9jE,GAEN,OADA1I,KAAKovB,QAAU1mB,EACR1I,KAEX8V,KAAKohB,EAAO82C,GACR,MAAMl4C,EAAMoB,EAAMrhB,eAClB7V,KAAKmW,cACL,MAAM+X,EAAUluB,KAAKqiC,eAGfnT,EAAQhB,EAAQ4qB,iBAAmB,GACnCrrC,EAAOzN,KAAKouE,MAAM3gE,KAClB2gB,EAAWpuB,KAAKouE,MAAMhgD,SACtBwrB,EAAO55C,KAAKouE,MAAMx0B,MAAQ,EAC1B00B,EAAMtuE,KAAKouE,MAAME,IACvB,IAAI3qE,EAAI3D,KAAK2D,EAAI3D,KAAKguE,QAAUA,EAChC,MAAMtlE,EAAIwuB,EAAMga,eAAe,GAAKlxC,KAAKovB,QAOzC,GANA0G,EAAI/gB,OACAtH,IACAqoB,EAAIlf,QAAQ5W,KAAK8W,UACjBgf,EAAIyb,SAAS9jC,EAAM9J,EAAG+E,GACtB/E,GAAKmyB,EAAI0a,YAAY/iC,GAAMnD,OAE3B8jB,GAAYkgD,EAAK,CAEjBx4C,EAAIlf,QAAQvW,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAIrX,KAAK8W,UAAW,CAAE1I,OAAQ,SAAUC,MAAO,YACnFZ,IACA9J,GAAKmyB,EAAI0a,YAAY,KAAKlmC,MAC1BwrB,EAAIyb,SAAS,IAAK5tC,EAAG+E,GACrB/E,GAAKmyB,EAAI0a,YAAY,KAAKlmC,OAE9B,MAAMjH,EAAOwqB,EAAO2qB,cAAcpqB,GAKlC,GAJAzqB,GAAK,EAAIurB,EACTI,EAAMo9B,YAAY52B,EAAKnyB,EAAG+E,EAAGwlB,EAAQ4qB,iBAAkBz1C,EAAK+sB,WAC5DzsB,GAAKN,EAAKosB,WAAaP,EAEnB7rB,EAAKuvB,KAAM,CACX,IAAI27C,EAAc,GACdlrE,EAAKmwB,aACL+6C,GAAe,GAAKlrE,EAAKmwB,WAAa,IAC1C+6C,GAAer/C,EACf,MAAM6Z,EAAQrgC,EAAI6lE,EAClBz4C,EAAImpB,SAASt7C,EAAIurB,EAAO6Z,EAAO7Z,EAAOq/C,GAClClrE,EAAKyvB,OACLxD,EAAMo9B,YAAY52B,EAAKnyB,EAAGolC,EAAO7a,EAAQ4qB,iBAAkBz1C,EAAKqwB,iBAAkB,CAC9EpyB,SAAU,oBAETs4C,IACDj2C,GAAK,EAAIurB,IAIrB,IAAK,IAAI3mB,EAAI,EAAGA,EAAIqxC,EAAMrxC,IACtB5E,GAAK,EAAIurB,EACT4G,EAAIQ,YACJR,EAAI2e,IAAI9wC,EAAG+E,EAAI,EAAIwmB,EAAO,EAAIA,EAAO,EAAa,EAAVjqB,KAAKC,IAAQ,GACrD4wB,EAAIa,OAERb,EAAIyb,SAAS,MAAQ+8B,GAAO7gE,EAAO,IAAM,IAAK9J,EAAI,EAAIurB,EAAOxmB,GAGjE,OADAotB,EAAIngB,UACG3V,MAGfmuE,GAAWn3D,UAAY,CACnBzI,OAAQhB,EAAK8D,MACblD,KAAM,GACNC,OAAQjC,EAAWihC,KACnB/+B,MAAOjC,EAAUqC,QV1FrB,SAAWy1D,GACPA,EAAkBA,EAAwB,KAAI,GAAK,OACnDA,EAAkBA,EAA0B,OAAI,GAAK,SACrDA,EAAkBA,EAAyB,MAAI,GAAK,QAHxD,CAIGA,KAAsBA,GAAoB,KAOtC,MAAMsK,WAAiB9rE,GAC1BjB,YAAYs2C,GAaR,GAZAx0C,MAAMw0C,GACN/3C,KAAK+E,KAAOgzC,EAAWhzC,MAAQ,GAC/B/E,KAAKyuE,YAAc12B,EAAW02B,YAC9BzuE,KAAK0uE,UAAY32B,EAAW22B,UAC5B1uE,KAAK4W,QAAQmhC,EAAWlpC,MACxB7O,KAAKgE,KAAO+zC,EAAW/zC,MAAQ,EAC/BhE,KAAK2uE,OAAS52B,EAAW42B,SAAU,EACnC3uE,KAAKo1C,aAAe2C,EAAW3C,eAAgB,EAC/Cp1C,KAAK4uE,cAAgB1K,GAAkBvrC,KAInCof,EAAW5oB,MAAO,CAClB,MAAM0/C,EAASL,GAASM,OAAO/2B,EAAW5oB,OAC1C,IAAK0/C,EACD,MAAM,IAAI1rE,EAAa,uBAAyB40C,EAAW5oB,OAC/DnvB,KAAKmvB,MAAQ,IAAIG,EAAMu/C,EAAOxrE,KAAM,GAAI,CAAE/B,SAAU,aACpDtB,KAAKu5B,SAASv5B,KAAKmvB,MAAMxe,aAAarG,YAGtCtK,KAAKmvB,WAAQvrB,EAGVlC,sBACP,OAAOG,EAAS2sE,SAGTM,oBACP,MAAO,CACHC,MAAO,CACH1rE,KAAM,SAEVopB,GAAI,CACAppB,KAAM,iBAEVgpB,QAAS,CACLhpB,KAAM,mBAEV2rE,cAAe,CACX3rE,KAAM,sBAEV4rE,cAAe,CACX5rE,KAAM,mBAEV+E,EAAG,CACC/E,KAAM,gBAEV6rE,EAAG,CACC7rE,KAAM,gBAEV4uB,EAAG,CACC5uB,KAAM,gBAEV6E,EAAG,CACC7E,KAAM,oBAEV8rE,EAAG,CACC9rE,KAAM,YAEV+rE,KAAM,CACF/rE,KAAM,QAEVgsE,WAAY,CACRhsE,KAAM,oBAEVisE,YAAa,CACTjsE,KAAM,mBAEVksE,iBAAkB,CACdlsE,KAAM,WAEVmsE,eAAgB,CACZnsE,KAAM,iBAEVosE,OAAQ,CACJpsE,KAAM,mBAEVm5D,KAAM,CACFn5D,KAAM,kBAEVkpB,KAAM,CACFlpB,KAAM,gBAEVmpB,cAAe,CACXnpB,KAAM,sBAKlBgtC,iBAAiBH,GAEb,OADAlwC,KAAK4uE,cAAgB1+B,EACdlwC,KAGX6rD,QAAQ7nD,GAEJ,OADAhE,KAAKgE,KAAOA,EACLhE,KAGX4rD,UACI,OAAO5rD,KAAKgE,KAGhBq8C,UACI,OAAOrgD,KAAK+E,KAGhBuyC,YACI,GAAIt3C,KAAKu3C,aACL,OACJ,MAAM7c,EAAc16B,KAAK61C,iBAAiB,0CAC1C,GAAI71C,KAAK2uE,OACL3uE,KAAKu5B,SAAS,QAGd,GAAIv5B,KAAKmvB,WAGJ,CACD,MAAM2G,EAAM91B,KAAK6V,eACjBigB,EAAIlf,QAAQ5W,KAAK8W,UACjB9W,KAAKu5B,SAASzD,EAAI0a,YAAYxwC,KAAK+E,MAAMuF,OAG7CtK,KAAK4uE,gBAAkB1K,GAAkBnrC,OACzC/4B,KAAK24C,oBAAsB34C,KAAKsK,MAAQ,EAEnCtK,KAAK4uE,gBAAkB1K,GAAkB5qC,QAC9Ct5B,KAAK24C,oBAAsB34C,KAAKsK,OAGpCtK,KAAK44C,qBAAuBle,EAAY/pB,aAAa+qC,QAAU,EAC/D17C,KAAKu3C,cAAe,EAMxBzhC,OACI,MAAMggB,EAAM91B,KAAK6V,eACXqhB,EAAQl3B,KAAKi4B,aACbyC,EAAc16B,KAAK61C,iBAAiB,qCAC1C71C,KAAKmW,cAEL,IAAIxS,EAAI3D,KAAK83C,eAAiBpd,EAAY/pB,aAAa+qC,QAAU,EAEjE,MAAMpxC,EAAQtK,KAAKyvB,WAOnB,IAAI/mB,EACJ,GAPI1I,KAAK4uE,gBAAkB1K,GAAkBnrC,OACzCp1B,GAAK2G,EAAQ,EAERtK,KAAK4uE,gBAAkB1K,GAAkB5qC,QAC9C31B,GAAK2G,GAGLtK,KAAKmvB,MACLzmB,EAAIwuB,EAAMyM,YAAY3jC,KAAKgE,MAAQ,GACnChE,KAAKmvB,MAAM2I,OAAOhC,EAAKnyB,EAAG+E,OAEzB,CACDA,EAAIwuB,EAAMyM,YAAY3jC,KAAKgE,MAAQ,GACnChE,KAAK6U,WAAWihB,GAChBA,EAAIlf,QAAQ5W,KAAK8W,UACjBgf,EAAIyb,SAASvxC,KAAK+E,KAAMpB,EAAG+E,GAC3B,MAAM6B,EAASurB,EAAI0a,YAAYxwC,KAAK+E,MAAMwF,QAGpC,OAAEgE,EAAM,KAAEJ,EAAI,OAAEC,EAAM,MAAEC,GAAUrO,KAAK8W,SAEvC6wC,EAAkBp6C,EAAK+1C,UAAUn1C,EAAM,SACzCnO,KAAKyuE,cACL34C,EAAIlf,QAAQrI,EAAQo5C,EAAiBv5C,EAAQC,GAC7CynB,EAAIyb,SAASvxC,KAAKyuE,YAAa9qE,EAAI3D,KAAKsK,MAAQ,EAAG5B,EAAI6B,EAAS,MAEhEvK,KAAK0uE,YACL54C,EAAIlf,QAAQrI,EAAQo5C,EAAiBv5C,EAAQC,GAC7CynB,EAAIyb,SAASvxC,KAAK0uE,UAAW/qE,EAAI3D,KAAKsK,MAAQ,EAAG5B,EAAI6B,EAAS,IAAM,IAExEvK,KAAK0V,aAAaogB,KAI9B04C,GAASx3D,UAAY,CACjBzI,OAAQhB,EAAKiB,WACbL,KAAM,GACNC,OAAQjC,EAAWsC,OACnBJ,MAAOjC,EAAUqC,QAErB+/D,GAASkB,cAAgBxL,GWzMlB,MAAMyL,WAAkBpzB,GAC3B96C,YAAYsD,EAAMuuB,EAAUpF,EAAU,IAClC3qB,QACAvD,KAAKu5B,SAAS,IACdv5B,KAAK+E,KAAOA,EACZ/E,KAAKszB,SAAWA,EAChBtzB,KAAKkuB,QAAU7tB,OAAOgX,OAAO,CAAE22D,QAAS,EAAG5+C,QAAS,EAAGw/C,cAAeJ,GAASkB,cAAc32C,QAAU7K,GACvGluB,KAAKwX,YAEE9V,sBACP,OAAOG,EAAS8tE,UAEpBC,aAAa7qE,GAET,OADA/E,KAAK+E,KAAOA,EACL/E,KAEXusE,UAAU5oE,GAEN,OADA3D,KAAKguE,QAAUrqE,EACR3D,KAEXwsE,UAAU9jE,GAEN,OADA1I,KAAKovB,QAAU1mB,EACR1I,KAEX6vE,QAAQ9qE,GAEJ,OADA/E,KAAK+E,KAAOA,EACL/E,KAEX8V,KAAKohB,GACD,MAAMpB,EAAMoB,EAAMrhB,eAClB7V,KAAKmW,cACL2f,EAAI/gB,OACJ+gB,EAAIrgB,aAAa,GACjBqgB,EAAIlf,QAAQ5W,KAAK8W,UACjB,MAAMy5B,EAAaza,EAAI0a,YAAY,GAAKxwC,KAAK+E,MAAMuF,MACnD,IAAI3G,EACA+E,EACJ,OAAQ1I,KAAKszB,UACT,KAAK2oB,GAAsBtjB,KAC3B,KAAKsjB,GAAsB3iB,MACvB5wB,GAAKwuB,EAAMyM,YAAY,GAAKzM,EAAM44C,kBAAoB,EAAI9vE,KAAKkuB,QAAQkB,QAEnEzrB,EADA3D,KAAKszB,WAAa2oB,GAAsBtjB,KACpCzB,EAAMpuB,OAASynC,EAAa,GAAKvwC,KAAKkuB,QAAQ8/C,QAG9C92C,EAAMpuB,OAASouB,EAAMzH,WAAa,GAAKzvB,KAAKkuB,QAAQ8/C,QAE5D,MACJ,KAAK/xB,GAAsBhjB,MAC3B,KAAKgjB,GAAsB9iB,MACvBx1B,EAAIuzB,EAAMpuB,OAAS9I,KAAKkuB,QAAQ8/C,QAC5BhuE,KAAKkuB,QAAQ0gD,gBAAkB1K,GAAkBnrC,OACjDp1B,GAAKuzB,EAAMzH,WAAa,EAAI8gB,EAAa,EAEpCvwC,KAAKkuB,QAAQ0gD,gBAAkB1K,GAAkB5qC,QACtD31B,GAAKuzB,EAAMzH,WAAa8gB,GAGxB7nC,EADA1I,KAAKszB,WAAa2oB,GAAsBhjB,MACpC/B,EAAMga,eAAe,GAAKlxC,KAAKkuB,QAAQkB,QAGvC8H,EAAMia,kBAAkB,GAAKnxC,KAAKkuB,QAAQkB,QAElD,MACJ,QACI,MAAM,IAAIjsB,EAAa,kBAAmB,uCAIlD,OAFA2yB,EAAIyb,SAAS,GAAKvxC,KAAK+E,KAAMpB,EAAG+E,EAAI,GACpCotB,EAAIngB,UACG3V,MAGf2vE,GAAU34D,UAAY,CAClBzI,OAAQhB,EAAK8D,MACblD,KAAM,GACNC,OAAQjC,EAAWsC,OACnBJ,MAAOjC,EAAUqC,QV7ErB,SAAW01D,GACPA,EAAUA,EAAgB,KAAI,GAAK,OACnCA,EAAUA,EAAiB,MAAI,GAAK,QACpCA,EAAUA,EAAe,IAAI,GAAK,MAClCA,EAAUA,EAAe,IAAI,GAAK,MAClCA,EAAUA,EAAqB,UAAI,GAAK,YAL5C,CAMGA,KAAcA,GAAY,KACtB,MAAM4L,WAAcxzB,GACvB96C,YAAYqQ,EAAM84C,EAAQjnD,EAAG2wB,GACzB/wB,QACAvD,KAAKgwE,MAAQl+D,EACb9R,KAAK2D,EAAIA,EACT3D,KAAKs0B,QAAUA,EACft0B,KAAK4qD,OAASA,EACd5qD,KAAKwX,YAEE9V,sBACP,OAAOG,EAASkuE,MAETj+D,kBACP,OAAOqyD,GAEXqI,UAAU9jE,GAEN,OADA1I,KAAKs0B,QAAU5rB,EACR1I,KAEX8V,KAAKohB,EAAOvzB,GACR,MAAMmyB,EAAMoB,EAAMrhB,eAClB7V,KAAKmW,cACL,IAAI7L,EAAQ4sB,EAAMzH,WAAa9rB,EAC/B,MAAMssE,EAAQ/4C,EAAMga,eAAeha,EAAMmY,eAAiBrvC,KAAKs0B,QACzD47C,EAAc,IAAMh5C,EAAMwM,yBAChC,OAAQ1jC,KAAKgwE,OACT,KAAK7L,GAAUpmB,MACXjoB,EAAImpB,SAASj/C,KAAK2D,EAAIA,EAAGssE,EAAO,EAAGC,GACnC,MACJ,KAAK/L,GAAU/mB,IACX9yC,GAAS,EACTwrB,EAAImpB,SAASj/C,KAAK2D,EAAIA,EAAI2G,EAAO2lE,EAAO,EAAGC,GAC3C,MACJ,KAAK/L,GAAUgM,UACX7lE,GAAS,EACTwrB,EAAImpB,SAASj/C,KAAK2D,EAAIA,EAAGssE,EAAO,EAAGC,GACnCp6C,EAAImpB,SAASj/C,KAAK2D,EAAIA,EAAI2G,EAAO2lE,EAAO,EAAGC,GAanD,OAPIlwE,KAAKgwE,QAAU7L,GAAUpmB,OAAS/9C,KAAKgwE,QAAU7L,GAAUgM,YAC3Dr6C,EAAI/gB,OACJ+gB,EAAIlf,QAAQ5W,KAAK8W,UACjBgf,EAAIyb,SAASvxC,KAAK4qD,OAAQ5qD,KAAK2D,EAAIA,EAAI,EAAGssE,EAAQ,IAClDn6C,EAAIngB,WAERmgB,EAAImpB,SAASj/C,KAAK2D,EAAIA,EAAGssE,EAAO3lE,EAAO,GAChCtK,MAGf+vE,GAAM/4D,UAAY,CACdzI,OAAQhB,EAAKiB,WACbL,KAAM,EACNC,OAAQjC,EAAWihC,KACnB/+B,MAAOjC,EAAUqC,QW9Dd,MAAM2hE,WAA2B9gD,EACpC7tB,YAAY4uE,EAAeC,EAAWC,EAAWltE,EAAM2wB,EAAO9F,GAC1D,IAAItgB,EACJrK,MAAMF,EAAM2wB,EAAO9F,GACnBluB,KAAKqwE,cAAgBA,EACrBrwE,KAAKo1B,UAAY,GACjBp1B,KAAKq1B,UAAY,GACjB,IAAIm7C,EAAW,EACf,IAAK,IAAIjoE,EAAI,EAAGA,EAAI+nE,EAAU1qE,SAAU2C,EAAG,CACvC,IAAIkoE,EAAcH,EAAU/nE,GAC5B,OAAQ+nE,EAAU/nE,IACd,IAAK,IACDkoE,EAAc,QACd,MACJ,IAAK,IACDA,EAAcF,EAAU3qE,OAAS,EAAI,YAAc,OACnD,MACJ,IAAK,IACD6qE,EAAcF,EAAU3qE,OAAS,EAAI,kBAAoB,aACzD,MACJ,IAAK,IACD6qE,EAAcF,EAAU3qE,OAAS,EAAI,mBAAqB,cAGlE,MAAM8qE,EAAW,IAAIphD,EAAM,UAAYmhD,EAAazwE,KAAKqwE,cAAcr8C,OACvEh0B,KAAKo1B,UAAU5gB,KAAKk8D,GACpBF,GAAmD,QAAtC5iE,EAAK8iE,EAAS//D,aAAarG,aAA0B,IAAPsD,EAAgBA,EAAK,EAEpF,IAAI+iE,EAAW,EACf,IAAK,IAAIpoE,EAAI,EAAGA,EAAIgoE,EAAU3qE,SAAU2C,EAAG,CACvC,IAAIkoE,EAAcF,EAAUhoE,GAC5B,OAAQgoE,EAAUhoE,IACd,IAAK,IACDkoE,EAAc,YACd,MACJ,IAAK,IACDA,EAAc,kBACd,MACJ,IAAK,IACDA,EAAc,mBAGtB,MAAMG,EAAW,IAAIthD,EAAM,UAAYmhD,EAAazwE,KAAKqwE,cAAcr8C,OACvEh0B,KAAKq1B,UAAU7gB,KAAKo8D,GACpBD,GAAYjtE,EAAQktE,EAASjgE,aAAarG,OAE9CtK,KAAKsK,MAAQrF,KAAK2E,IAAI4mE,EAAUG,GAChC3wE,KAAK29C,KAAO39C,KAAK2Q,aAAa+kB,MAC9B11B,KAAK6wE,WAAa7wE,KAAKsK,MAAQkmE,GAAY,EAC3CxwE,KAAK8wE,WAAa9wE,KAAKsK,MAAQqmE,GAAY,EAC3C3wE,KAAKw1B,QAET7kB,aACI,MAAO,CACH+kB,MAAO11B,KAAK29C,KACZhoB,MAAO31B,KAAK29C,KAAO39C,KAAKsK,MACxBA,MAAOtK,KAAKsK,OAGpB4tB,cAAcv0B,GACV,MAAMuzB,EAAQl3B,KAAKi4B,aACbnC,EAAM91B,KAAK6V,eACjB,IAAIk7D,EAAUptE,EAAI3D,KAAK6wE,UACnBnoE,EAAI,EAEJA,EADA1I,KAAKq1B,UAAUzvB,OAAS,EACpBsxB,EAAMyM,YAAY3jC,KAAKqwE,cAAcW,UAEpC95C,EAAMyM,YAAY3jC,KAAKqwE,cAAcW,SAAW95C,EAAMyM,YAAY3jC,KAAKqwE,cAAcY,aAAe,EAC7G,IAAK,IAAI1oE,EAAI,EAAGA,EAAIvI,KAAKo1B,UAAUxvB,SAAU2C,EAAG,CAC5C,MAAM4mB,EAAQnvB,KAAKo1B,UAAU7sB,GAC7B+mB,EAAM8G,cAAcN,EAAK3G,EAAMxe,aAAayjB,QAASp0B,KAAKkvB,MAAO6hD,EAAU/wE,KAAKq0B,QAAS3rB,GACzFqoE,GAAWrtE,EAAQyrB,EAAMxe,aAAarG,OAE1CymE,EAAUptE,EAAI3D,KAAK8wE,UACnBpoE,EAAIwuB,EAAMyM,YAAY3jC,KAAKqwE,cAAcY,YACzC,IAAK,IAAI1oE,EAAI,EAAGA,EAAIvI,KAAKq1B,UAAUzvB,SAAU2C,EAAG,CAC5C,MAAM4mB,EAAQnvB,KAAKq1B,UAAU9sB,GAC7BvI,KAAKqwE,cAAc7zB,iBAAiBrtB,EAAO+H,EAAO,GAClD5H,EAAM8G,cAAcN,EAAK3G,EAAMxe,aAAayjB,QAASp0B,KAAKkvB,MAAO6hD,EAAU5hD,EAAMxe,aAAa0jB,QAAS3rB,GACvGqoE,GAAWrtE,EAAQyrB,EAAMxe,aAAarG,SC9D3C,MAAM4mE,WAAsB30B,GAC/B96C,YAAY0vE,EAAW,MAAOC,EAAgB,GAAIC,GAAgB,GAC9D9tE,QACAvD,KAAKqxE,cAAgBA,EACrB,MAAMz9B,EAAUw9B,EACVxuC,EAAY/U,EAAOgV,mBACzB7iC,KAAKg0B,MAAQ4O,EAAU3xB,aAAa,gBACpC,MAAMqgE,EAAgB1uC,EAAU3xB,aAAa,mBAAoB,GACjEjR,KAAKgxE,QAAU,EAAIM,EACnBtxE,KAAKixE,WAAa,EAAIK,EACtBtxE,KAAKo6B,YAAY6hB,GAAsB8B,OACvC/9C,KAAK0T,KAAO1T,KAAKuxE,cAAcJ,GAC/BnxE,KAAKu5B,SAAS71B,EAAQ1D,KAAK0T,KAAKyb,MAAMxe,aAAarG,QACnDtK,KAAK28C,WAAW/I,GAETlyC,sBACP,OAAOG,EAASqvE,cAETlgE,oBACP,MAAO,CACHmH,EAAG,CACC9U,KAAM,gBACN2wB,MAAO,GACPhwB,KAAM,GAEV,KAAM,CACFX,KAAM,mBACN2wB,MAAO,GACPhwB,KAAM,IAIlButE,cAAcJ,GACV,IAAIvjE,EAAIkF,EACR,GAAiB,MAAbq+D,GAAiC,OAAbA,EAAmB,CACvC,MAAM,KAAEntE,EAAI,KAAEX,EAAI,MAAE2wB,GAAUk9C,GAAclgE,OAAOmgE,GACnD,MAAO,CACHntE,KAAAA,EACAoU,KAAK,EACL+W,MAAO,IAAIG,EAAMjsB,EAAM2wB,IAG3Bh0B,KAAKqxE,eAtDY,CAACF,IAC1B,MAAMK,EAAUL,EAAS3oE,MAAM,KAC/B,GAAuB,IAAnBgpE,EAAQ5rE,QAA+B,MAAf4rE,EAAQ,IAA6B,MAAfA,EAAQ,GACtD,MAAM,IAAIruE,EAAa,mBAAoB,sBAAsBguE,sDAErEK,EAAQ78D,SAASi2C,IAEb,GAAoC,GAAhC,gBAAgB6mB,KAAK7mB,GACrB,MAAM,IAAIznD,EAAa,mBAAoB,sBAAsBguE,yCA+CjEO,CAAqBP,GAEzB,MAAMp8C,EAAQo8C,EAAS3oE,MAAM,KAC7B,MAAO,CACH4P,KAAK,EACL+W,MAAOnvB,KAAK2xE,uBAA2C,QAAnB/jE,EAAKmnB,EAAM,UAAuB,IAAPnnB,EAAgBA,EAAK,GAAwB,QAAnBkF,EAAKiiB,EAAM,UAAuB,IAAPjiB,EAAgBA,EAAK,KAGjJ6+D,uBAAuBrB,EAAWC,GAC9B,OAAO,IAAIH,GAAmBpwE,KAAMswE,EAAWC,EAAW,WAAYvwE,KAAKg0B,OAE/E49C,UACI,OAAO5xE,KAAK0T,KAEhBm+D,WAAWV,GAEP,OADAnxE,KAAK0T,KAAO1T,KAAKuxE,cAAcJ,GACxBnxE,KAEX8V,OACI,MAAMohB,EAAQl3B,KAAKi4B,aACbnC,EAAMoB,EAAMrhB,eAClB7V,KAAKmW,cACL2f,EAAIuV,UAAU,gBAAiBrrC,KAAK0S,aAAa,OACjD1S,KAAK0T,KAAKyb,MAAM8H,SAASC,GACzBl3B,KAAK0T,KAAKyb,MAAMxY,WAAWmf,GAC3B91B,KAAKw8C,iBAAiBx8C,KAAK0T,KAAKyb,MAAO+H,EAAOl3B,KAAK0T,KAAK1P,MACxDhE,KAAK0T,KAAKyb,MAAM+I,cAAcl4B,KAAK2D,GACnCmyB,EAAIyV,cCzEZ,MAAMumC,GAA2B,CAC7B,CAAC5vE,GAAQR,UAAW,EACpB,CAACwoE,GAAKxoE,UAAW,EACjB,CAAC8oE,GAAa9oE,UAAW,EACzB,CAACwvE,GAAcxvE,UAAW,GAExBqwE,GAA2B,CAC7B,CAACb,GAAcxvE,UAAW,EAC1B,CAAC8oE,GAAa9oE,UAAW,EACzB,CAACQ,GAAQR,UAAW,EACpB,CAACwoE,GAAKxoE,UAAW,GAEd,MAAMswE,WAAcp+D,EACvBnS,YAAYkC,EAAG+E,EAAG4B,EAAO4jB,GACrB3qB,QAEAvD,KAAKuK,OAAS,EACdvK,KAAK2D,EAAIA,EACT3D,KAAK0I,EAAIA,EACT1I,KAAKsK,MAAQA,EACbtK,KAAK+pE,WAAY,EACjB/pE,KAAK+wE,QAAUptE,EAAI,EACnB3D,KAAKiyE,MAAQtuE,EAAI2G,EACjBtK,KAAKg1C,UAAY,GACjBh1C,KAAKkyE,QAAU,EACflyE,KAAK+tB,KAAO,SACZ/tB,KAAKmyE,aAAUvuE,EACf5D,KAAKwX,YACLxX,KAAKkuB,QAAU7tB,OAAOgX,OAAO,CAAE+6D,mBAAoB,GAAIC,UAAW,EAAGC,WAAY,UAAWC,UAAU,EAAMC,WAAW,EAAMC,yBAA0B5kD,EAAOgD,oBAAqB6hD,qBAAsB,EAAGC,qBAAsB,EAAGC,kBAAmB,EAAGC,qBAAsB,EAAGC,YAAa,IAAM5kD,GACvSluB,KAAK+yE,OAAS,CAAEpvE,EAAG3D,KAAK2D,EAAG+E,EAAG1I,KAAK0I,EAAGC,EAAG3I,KAAKsK,MAAO1B,EAAG,GACxD5I,KAAKgzE,uBAAyB,CAAE19D,YAAa,OAAQE,UAAW,KAChExV,KAAKizE,aAELjzE,KAAK6nC,YAAY,IAAI3lC,GAAQlC,KAAKkuB,QAAQqkD,SAAWr2B,GAAYgB,OAAShB,GAAYsB,OAEtFx9C,KAAKkzE,eAAe,IAAIhxE,GAAQlC,KAAKkuB,QAAQskD,UAAYt2B,GAAYgB,OAAShB,GAAYsB,OAEnF97C,sBACP,OAAOG,EAASmwE,MAITmB,4BACP,MAAMvwC,EAAY/U,EAAOgV,mBACzB,OAAOD,EAAU3xB,aAAa,iBAAmB2xB,EAAU3xB,aAAa,uBAGjEk2D,0BAEP,OADkBt5C,EAAOgV,mBACR5xB,aAAa,uBAGlCmiE,0BAA0B/kE,GACtBrO,KAAKgzE,uBAAyB3kE,EAGlC2lD,4BACI,OAAO3zD,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAIrX,KAAK4U,YAAa5U,KAAKgzE,wBAElEx9B,MAAM5E,GACF,OAAO5wC,KAAKkuB,QAAQukD,yBAA2B7hC,EAEnDqiC,aACIjzE,KAAKkuB,QAAQ4kD,YAAc,GAC3B,IAAK,IAAIvqE,EAAI,EAAGA,EAAIvI,KAAKkuB,QAAQmkD,UAAW9pE,IACxCvI,KAAKkuB,QAAQ4kD,YAAYt+D,KAAK,CAAE6+D,SAAS,IAE7CrzE,KAAKuK,QAAUvK,KAAKkuB,QAAQmkD,UAAYryE,KAAKkuB,QAAQwkD,sBAAwB1yE,KAAKkuB,QAAQukD,yBAC1FzyE,KAAKkuB,QAAQ2kD,qBAAuB7yE,KAAKkuB,QAAQmkD,UAErDiB,cAAc3vE,GAIV,OAHK3D,KAAK+pE,WACN/pE,KAAKg6D,SACTh6D,KAAK+wE,QAAUptE,EACR3D,KAEX27C,gBAGI,OAFK37C,KAAK+pE,WACN/pE,KAAKg6D,SACFh6D,KAAK+wE,QAEhBwC,cAGI,OAFKvzE,KAAK+pE,WACN/pE,KAAKg6D,SACFh6D,KAAKiyE,MAEhBtb,eACI,OAAO32D,KAAK+wE,QAEhBna,aACI,OAAO52D,KAAKiyE,MAEhBnpE,OACI,OAAO9I,KAAK2D,EAEhB0rC,cACI,OAAOrvC,KAAKkuB,QAAQmkD,UAExBmB,YAAY5uE,GAGR,OAFA5E,KAAKkuB,QAAQmkD,UAAYztE,EACzB5E,KAAKizE,aACEjzE,KAEXmJ,KAAKT,GAED,OADA1I,KAAK0I,EAAIA,EACF1I,KAEX+I,OACI,OAAO/I,KAAK0I,EAEhB0oC,iBACI,OAAOpxC,KAAK2jC,YAAY,GAAK9V,EAAO6C,qBAAuB,EAE/DsuB,uBACI,OAAOh/C,KAAK2jC,YAAY3jC,KAAKqvC,cAAgB,GAAKxhB,EAAO6C,qBAAuB,EAEpFxnB,KAAKvF,GACD,MAAMmC,EAAQnC,EAAI3D,KAAK2D,EACvB3D,KAAK+pE,WAAY,EACjB/pE,KAAK2D,EAAIA,EACT3D,KAAK+wE,SAAWjrE,EAChB9F,KAAKiyE,OAASnsE,EACd,IAAK,IAAIyC,EAAI,EAAGA,EAAIvI,KAAKg1C,UAAUpvC,OAAQ2C,IAAK,CAC5C,MAAMkrE,EAAMzzE,KAAKg1C,UAAUzsC,GAC3BkrE,EAAIvqE,KAAKuqE,EAAI3qE,OAAShD,GAE1B,OAAO9F,KAEXu5B,SAASjvB,GAML,OALAtK,KAAK+pE,WAAY,EACjB/pE,KAAKsK,MAAQA,EACbtK,KAAKiyE,MAAQjyE,KAAK2D,EAAI2G,EAGftK,KAEXyvB,WACI,OAAOzvB,KAAKsK,MAEhBsK,WACI,OAAOvU,OAAOgX,OAAO,CAAEjC,UAAWpV,KAAKkuB,QAAQokD,WAAYh9D,YAAatV,KAAKkuB,QAAQokD,WAAY98D,UAAWqY,EAAO6C,sBAAwBntB,MAAMqR,YAKrJ8+D,WAAWxB,GAEP,OADAlyE,KAAKkyE,QAAUA,EACRlyE,KAKX2zE,aACI,OAAO3zE,KAAKkyE,QAQhB0B,kBAAkB3hE,EAAQ,GACtB,GAAqB,iBAAVA,EACP,MAAM,IAAI9O,EAAa,eAAgB,0BAI3C,GAFKnD,KAAK+pE,WACN/pE,KAAKg6D,SACqD,IAA1Dh6D,KAAK0nC,aAAauU,GAAsB8B,OAAOn4C,OAC/C,OAAO,EAGX,GAAI5F,KAAKg1C,UAAU/iC,GAAOkoB,gBAAkB8hB,GAAsB3iB,MAC9D,OAAO,EAEX,IAAIy3C,EAAU/wE,KAAK+wE,QAAU/wE,KAAK2D,EAClC,MAAMkwE,EAAa7zE,KAAKg1C,UAAU,GAIlC,OAHI6+B,EAAWp1B,YAAcvC,GAAYmB,cAAgB0zB,EAAU8C,EAAWpkD,aAC1EshD,GAAW8C,EAAWpkD,YAEnBshD,EAGX+C,kBAAkBhiE,EAAM8lB,EAAS,GAE7B,OADA53B,KAAKg1C,UAAUxgC,KAAK,IAAI63D,GAAWv6D,EAAM9R,KAAK2D,EAAGi0B,IAC1C53B,KAGX+zE,aAAajiE,EAAMkiE,EAAUtrE,GAEzB,OADA1I,KAAKg1C,UAAUxgC,KAAK,IAAIu7D,GAAMj+D,EAAMkiE,EAAUh0E,KAAK2D,EAAG+E,IAC/C1I,KAGXi0E,WAAWnG,EAASplE,EAAGyyD,EAAU,EAAGztD,EAAUqgE,GAAW,GACrD,MAAMmG,EAAe,IAAIrG,GAAaC,EAAS9tE,KAAK2D,EAAIw3D,EAASzyD,EAAGqlE,GAIpE,OAHIrgE,GACAwmE,EAAaz8D,YAAY/J,GAC7B1N,KAAKg1C,UAAUxgC,KAAK0/D,GACbl0E,KAGXquE,SAASD,EAAO1lE,GAEZ,OADA1I,KAAKg1C,UAAUxgC,KAAK,IAAI25D,GAAWC,EAAOpuE,KAAK2D,EAAG+E,IAC3C1I,KAGX6vE,QAAQ9qE,EAAMuuB,EAAUpF,EAAU,IAE9B,OADAluB,KAAKg1C,UAAUxgC,KAAK,IAAIm7D,GAAU5qE,EAAMuuB,EAAUpF,IAC3CluB,KAEXiqC,YACI,OAAOjqC,KAAKuK,OAEhBm5B,yBACI,OAAO1jC,KAAKkuB,QAAQukD,yBAExBh8D,iBACI,OAAO,IAAIhO,EAAYzI,KAAK2D,EAAG3D,KAAK0I,EAAG1I,KAAKsK,MAAOtK,KAAKi0C,aAAej0C,KAAK0I,GAEhFurC,aACI,MAAM/lB,EAAUluB,KAAKkuB,QACf0iB,EAAU1iB,EAAQukD,yBAExB,OADqBzyE,KAAK2jC,YAAYzV,EAAQmkD,WAAankD,EAAQykD,qBAAuB/hC,EAG9Fk/B,iBACI,OAAO9vE,KAAK2jC,YAAY3jC,KAAKkuB,QAAQmkD,WAIzC1uC,YAAY3/B,GACR,MAAMkqB,EAAUluB,KAAKkuB,QACf0iB,EAAU1iB,EAAQukD,yBAClB0B,EAAWjmD,EAAQwkD,qBAEzB,OADU1yE,KAAK0I,EAAI1E,EAAO4sC,EAAUujC,EAAWvjC,EAGnDwjC,YAAY1rE,GAGR,MAAMwlB,EAAUluB,KAAKkuB,QACf0iB,EAAU1iB,EAAQukD,yBAClB0B,EAAWjmD,EAAQwkD,qBACzB,OAAQhqE,EAAI1I,KAAK0I,GAAKkoC,EAAUujC,EAEpCjjC,eAAeltC,EAAO,GAClB,OAAOhE,KAAK2jC,aAAa3/B,EAAOhE,KAAKkuB,QAAQ0kD,mBAEjDzhC,kBAAkBntC,EAAO,GACrB,OAAOhE,KAAK2jC,YAAY3jC,KAAKkuB,QAAQ2kD,qBAAuB7uE,GAEhEmoD,YAAYnoD,GACR,MAAMkqB,EAAUluB,KAAKkuB,QACf0iB,EAAU1iB,EAAQukD,yBAClB0B,EAAWjmD,EAAQwkD,qBACzB,OAAO1yE,KAAK0I,EAAIyrE,EAAWvjC,EAAU,EAAIA,EAAU5sC,EAAO4sC,EAE9DzY,gBACI,OAAOn4B,KAAK2jC,YAAY,GAI5BkE,YAAYF,EAAUrU,GAOlB,YANiB1vB,IAAb0vB,GACAqU,EAASvN,YAAY9G,GAEzBqU,EAAS1Q,SAASj3B,MAClBA,KAAK+pE,WAAY,EACjB/pE,KAAKg1C,UAAUxgC,KAAKmzB,GACb3nC,KAEXkzE,eAAevrC,GAEX,OADA3nC,KAAK6nC,YAAYF,EAAUsU,GAAsBmB,KAC1Cp9C,KAGXq0E,cAAcviE,GAEV,MAAM,OAAEorC,EAAM,aAAEG,EAAY,KAAEG,GAAStB,GAKvC,OAJIpqC,IAASorC,GAAUprC,IAASurC,GAAgBvrC,IAAS0rC,IACrDx9C,KAAKg1C,UAAU,GAAGgJ,QAAQlsC,GAC1B9R,KAAK+pE,WAAY,GAEd/pE,KAEXs0E,cAAcxiE,GAMV,OAJIA,IAASoqC,GAAYmB,eACrBr9C,KAAKg1C,UAAU,GAAGgJ,QAAQlsC,GAC1B9R,KAAK+pE,WAAY,GAEd/pE,KAEXu0E,QAAQC,EAAUrmE,EAAMqgC,EAAYlb,QACf1vB,IAAb0vB,IACAA,EAAW2oB,GAAsB8B,OAEjCzqB,IAAa2oB,GAAsBmB,IACnCp9C,KAAKmyE,QAAUqC,EAGfx0E,KAAK+tB,KAAOymD,EAEhB,MAAM56D,EAAQ5Z,KAAK0nC,aAAapU,EAAU42C,GAAKxoE,UAO/C,OANqB,IAAjBkY,EAAMhU,OACN5F,KAAKy0E,QAAQD,EAAUrmE,EAAMqgC,EAAYlb,GAGzC1Z,EAAM,GAAGokC,QAAQw2B,EAAUrmE,EAAMqgC,GAE9BxuC,KAEXosE,UACI,OAAOpsE,KAAK+tB,KAEhB2mD,WAAWF,EAAUrmE,EAAMqgC,GAEvB,OADAxuC,KAAKu0E,QAAQC,EAAUrmE,EAAMqgC,EAAYyN,GAAsBmB,KACxDp9C,KAEXmsE,aACI,OAAOnsE,KAAKmyE,QAEhBwC,gBAAgB/kD,EAAS66C,EAAen3C,QACnB1vB,IAAb0vB,IACAA,EAAW2oB,GAAsB8B,OAErC,MAAM7lC,EAAgBlY,KAAK0nC,aAAapU,EAAUk3C,GAAa9oE,UAO/D,OAN6B,IAAzBwW,EAActS,OACd5F,KAAK40E,gBAAgBhlD,EAAS66C,EAAen3C,GAG7Cpb,EAAc,GAAGyyD,UAAU/6C,EAAS66C,GAEjCzqE,KAEX60E,mBAAmBjlD,EAAS66C,GAExB,OADAzqE,KAAK20E,gBAAgB/kD,EAAS66C,EAAexuB,GAAsBmB,KAC5Dp9C,KAEX80E,iBAAiB3D,EAAUC,EAAe99C,QACrB1vB,IAAb0vB,IACAA,EAAW2oB,GAAsB8B,OAErC,MAAMg3B,EAAiB/0E,KAAK0nC,aAAapU,EAAU49C,GAAcxvE,UAOjE,OAN8B,IAA1BqzE,EAAenvE,OACf5F,KAAKg1E,iBAAiB7D,EAAUC,EAAe99C,GAG/CyhD,EAAe,GAAGlD,WAAWV,GAE1BnxE,KAEXi1E,oBAAoB9D,EAAUC,GAE1B,OADApxE,KAAK80E,iBAAiB3D,EAAUC,EAAen1B,GAAsBmB,KAC9Dp9C,KAYX40E,gBAAgBhlD,EAAS66C,EAAen3C,GAKpC,YAJiB1vB,IAAb0vB,IACAA,EAAW2oB,GAAsB8B,OAErC/9C,KAAK6nC,YAAY,IAAI2iC,GAAa56C,EAAS66C,GAAerwC,YAAY9G,GAAWA,GAC1EtzB,KAcXy0E,QAAQ1mD,EAAM5f,EAAMqgC,EAAYlb,GAQ5B,YAPiB1vB,IAAb0vB,GAA0BA,IAAa2oB,GAAsB8B,MAC7D/9C,KAAK+tB,KAAOA,EAEPuF,IAAa2oB,GAAsBmB,MACxCp9C,KAAKmyE,QAAUpkD,GAEnB/tB,KAAK6nC,YAAY,IAAIqiC,GAAKn8C,EAAM5f,EAAMqgC,GAAalb,GAC5CtzB,KAEXk1E,WAAWnnD,EAAM5f,EAAMqgC,GAEnB,OADAxuC,KAAKy0E,QAAQ1mD,EAAM5f,EAAMqgC,EAAYyN,GAAsBmB,KACpDp9C,KAaXg1E,iBAAiB7D,EAAUC,EAAe99C,GAEtC,OADAtzB,KAAK6nC,YAAY,IAAIqpC,GAAcC,EAAUC,GAAgB99C,GACtDtzB,KAEXm1E,oBAAoBhE,EAAUC,GAE1B,OADApxE,KAAKg1E,iBAAiB7D,EAAUC,EAAen1B,GAAsBmB,KAC9Dp9C,KAGXo1E,iBAEI,OADAp1E,KAAKy0E,QAAQ,UACNz0E,KAOX0nC,aAAapU,EAAUhyB,GACnB,MAAM+zE,OAA0BzxE,IAAb0vB,EACbgiD,OAA0B1xE,IAAbtC,EACnB,OAAI+zE,GAAcC,EACPt1E,KAAKg1C,UAEPqgC,EAEEr1E,KAAKg1C,UAAUoG,QAAQnpB,GAAM3wB,IAAa2wB,EAAEhe,gBAE9CqhE,EAEEt1E,KAAKg1C,UAAUoG,QAAQnpB,GAAMqB,IAAarB,EAAEkI,gBAI5Cn6B,KAAKg1C,UAAUoG,QAAQnpB,GAAMqB,IAAarB,EAAEkI,eAAiB74B,IAAa2wB,EAAEhe,gBAO3FshE,eAAeC,EAAOC,GAClB,IAAK,IAAIltE,EAAIitE,EAAM5vE,OAAS,EAAG2C,GAAK,EAAGA,IACnC,IAAK,IAAIo7C,EAAI,EAAGA,EAAIp7C,EAAGo7C,IACnB,GAAI8xB,EAAMD,EAAM7xB,GAAG1vC,eAAiBwhE,EAAMD,EAAM7xB,EAAI,GAAG1vC,eAAgB,CACnE,MAAMyhE,EAAOF,EAAM7xB,GACnB6xB,EAAM7xB,GAAK6xB,EAAM7xB,EAAI,GACrB6xB,EAAM7xB,EAAI,GAAK+xB,GAK/B1b,SACI,MAAM6Z,EAAa7zE,KAAKg1C,UAAU,GAC5B2gC,EAAa31E,KAAKg1C,UAAU,GAC5B4gC,EAAe51E,KAAK0nC,aAAauU,GAAsB8B,OACvD83B,EAAe71E,KAAK0nC,aAAauU,GAAsBmB,KAU7D,IAAI9yC,EACAspC,EACAjM,EAXJ3nC,KAAKu1E,eAAeK,EAAc9D,IAClC9xE,KAAKu1E,eAAeM,EAAc9D,IAC9B6D,EAAahwE,OAAS,GAAKiuE,EAAWp1B,YAAcvC,GAAYmB,eAChEu4B,EAAaphE,KAAKohE,EAAahuC,OAAO,EAAG,GAAG,IAC5CguC,EAAahuC,OAAO,EAAG,EAAG,IAAI1lC,GAAQg6C,GAAYgB,UAElD24B,EAAapuC,QAAQkuC,GAAc,GACnCE,EAAajuC,OAAO,EAAG,EAAG,IAAI1lC,GAAQg6C,GAAYsB,OAKtD,IAAIsuB,EAAS,EACTnoE,EAAI3D,KAAK2D,EACb,IAAK,IAAI4E,EAAI,EAAGA,EAAIqtE,EAAahwE,OAAQ2C,IACrCo/B,EAAWiuC,EAAartE,GACxBqrC,EAAUjM,EAAS+U,WAAWn0C,EAAIujE,GAClCxhE,EAAQq9B,EAASlY,WACjB9rB,GAAKiwC,EACLjM,EAASz+B,KAAKvF,GACdA,GAAK2G,EACDspC,EAAUtpC,IAAU,GACpBwhE,IAER9rE,KAAK+wE,QAAUptE,EACfA,EAAI3D,KAAK2D,EAAI3D,KAAKsK,MAClB,MAAM2yC,EAAS,CACX7jB,KAAM,EACNC,MAAO,EACPykB,aAAc,EACdD,YAAa,GAEjB,IAAIi4B,EAAiB,EACrB,IAAK,IAAIvtE,EAAI,EAAGA,EAAIstE,EAAajwE,OAAQ2C,IAAK,CAC1Co/B,EAAWkuC,EAAattE,GACxButE,EAAiB7zE,EAAU0lC,GAAYp/B,EAAIutE,EAC3C74B,EAAO5jB,MAAQ,EACf4jB,EAAO7jB,KAAO,EACd6jB,EAAOa,aAAe,EACtBb,EAAOY,YAAc,EACrB,MAAMhB,EAAgBlV,EAASmV,mBAC3BD,GACU,IAANt0C,IACA00C,EAAO5jB,MAAQwjB,EAAce,MAAQ,EACrCX,EAAOa,aAAejB,EAAciB,cAAgB,GAExDb,EAAO7jB,MAAQyjB,EAAcc,MAAQ,EACrCV,EAAOY,YAAchB,EAAcgB,aAAe,EAC9Ct1C,IAAMstE,EAAajwE,OAAS,IAC5Bq3C,EAAOY,YAAc,KAIzBZ,EAAOa,aAAenW,EAAS+U,WAAWn0C,EAAIutE,GACpC,IAANvtE,IACA00C,EAAO5jB,MAAQsO,EAASlY,YAElB,IAANlnB,IACA00C,EAAO7jB,KAAOuO,EAASlY,aAG/B9rB,GAAKs5C,EAAOa,aACZn6C,GAAKs5C,EAAO5jB,MACZsO,EAASz+B,KAAKvF,GACdA,GAAKs5C,EAAO7jB,KACZz1B,GAAKs5C,EAAOY,YAEhB79C,KAAKiyE,MAAgC,IAAxB4D,EAAajwE,OAAe5F,KAAK2D,EAAI3D,KAAKsK,MAAQ3G,EAC/D3D,KAAK+pE,WAAY,EAKrBj0D,OACI,MAAMggB,EAAM91B,KAAK6V,eACjB7V,KAAKmW,cACL2f,EAAIuV,UAAU,QAASrrC,KAAK0S,aAAa,OACpC1S,KAAK+pE,WACN/pE,KAAKg6D,SACT,MAAMqY,EAAYryE,KAAKkuB,QAAQmkD,UACzB/nE,EAAQtK,KAAKsK,MACb3G,EAAI3D,KAAK2D,EACf,IAAI+E,EAEJ,IAAK,IAAI1E,EAAO,EAAGA,EAAOquE,EAAWruE,IACjC0E,EAAI1I,KAAK2jC,YAAY3/B,GACrBhE,KAAK6U,aACD7U,KAAKkuB,QAAQ4kD,YAAY9uE,GAAMqvE,UAC/Bv9C,EAAIQ,YACJR,EAAIS,OAAO5yB,EAAG+E,GACdotB,EAAIU,OAAO7yB,EAAI2G,EAAO5B,GACtBotB,EAAIrH,UAERzuB,KAAK0V,eAGT,IAAK,IAAInN,EAAI,EAAGA,EAAIvI,KAAKg1C,UAAUpvC,OAAQ2C,IAAK,CAC5C,MAAMo/B,EAAW3nC,KAAKg1C,UAAUzsC,GAEH,mBAAlBo/B,EAAS7xB,OAChB6xB,EAAS9yB,WAAWihB,GACpB6R,EAAS7xB,KAAK9V,KAAMA,KAAK4zE,kBAAkBrrE,IAC3Co/B,EAASjyB,aAAaogB,IAI9B,GAAI91B,KAAKkyE,QAAU,EAAG,CAClBp8C,EAAI/gB,OACJ+gB,EAAIlf,QAAQ5W,KAAK8W,UACjB,MAAM0Y,EAAYsG,EAAI0a,YAAY,GAAKxwC,KAAKkyE,SAAS5nE,MACrD5B,EAAI1I,KAAKkxC,eAAe,GAAK,EAC7Bpb,EAAIyb,SAAS,GAAKvxC,KAAKkyE,QAASlyE,KAAK2D,EAAI6rB,EAAY,EAAG9mB,GACxDotB,EAAIngB,UAGR,OADAmgB,EAAIyV,aACGvrC,KAEX4tE,sBACI,OAAO5tE,KAAKkuB,QAAQkkD,mBAMxB2D,oBACI,OAAO/1E,KAAKkuB,QAAQ4kD,YASxBkD,iBAAiBC,EAAanD,GAC1B,GAAImD,GAAej2E,KAAKkuB,QAAQmkD,WAAa4D,EAAc,EACvD,MAAM,IAAI9yE,EAAa,mBAAoB,iFAE/C,QAA4BS,IAAxBkvE,EAAYO,QACZ,MAAM,IAAIlwE,EAAa,mBAAoB,oEAE/C,GAAmC,kBAAxB2vE,EAAYO,QACnB,MAAM,IAAIlwE,EAAa,mBAAoB,4EAG/C,OADAnD,KAAKkuB,QAAQ4kD,YAAYmD,GAAenD,EACjC9yE,KAWXk2E,kBAAkBC,GACd,GAAIA,EAAoBvwE,SAAW5F,KAAKkuB,QAAQmkD,UAC5C,MAAM,IAAIlvE,EAAa,mBAAoB,2FAK/C,IAAK,MAAM2vE,KAAeqD,EAE0BvyE,MAA5CuyE,EAAoBrD,GAAaO,UACjC8C,EAAoBrD,GAAe9yE,KAAKkuB,QAAQ4kD,YAAYA,IAEhE9yE,KAAKkuB,QAAQ4kD,YAAYA,GAAezyE,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAIrX,KAAKkuB,QAAQ4kD,YAAYA,IAAeqD,EAAoBrD,IAGxI,OADA9yE,KAAKkuB,QAAQ4kD,YAAcqD,EACpBn2E,KAEXuF,0BAA0B6wE,GACtB,IAAIC,EAAO,EAEXD,EAAOzhE,SAASuiB,IACRA,EAAMykB,gBAAkB06B,IACxBA,EAAOn/C,EAAMykB,oBAErBy6B,EAAOzhE,SAASuiB,IACZA,EAAMo8C,cAAc+C,MAExBA,EAAO,EAEPD,EAAOzhE,SAASuiB,IACMA,EAAMwQ,aAAauU,GAAsB8B,MAAOl8C,EAASK,SACjEyS,SAASgzB,IACXA,EAAS8W,WAAavC,GAAYmB,cAC9B1V,EAAS7+B,OAASutE,IAClBA,EAAO1uC,EAAS7+B,cAGhCstE,EAAOzhE,SAASuiB,IACMA,EAAMwQ,aAAauU,GAAsB8B,MAAOl8C,EAASK,SACjEyS,SAASgzB,IACXA,EAAS8W,WAAavC,GAAYmB,cAClC1V,EAASz+B,KAAKmtE,SAG1BA,EAAO,EAEPD,EAAOzhE,SAASuiB,IACMA,EAAMwQ,aAAauU,GAAsB8B,MAAOl8C,EAASqvE,eACjEv8D,SAASgzB,IACXA,EAAS7+B,OAASutE,IAClBA,EAAO1uC,EAAS7+B,cAG5BstE,EAAOzhE,SAASuiB,IACMA,EAAMwQ,aAAauU,GAAsB8B,MAAOl8C,EAASqvE,eACjEv8D,SAASgzB,IACfA,EAASz+B,KAAKmtE,UCnrB9B,SAASC,GAAmBxgD,EAAKhkB,EAAMykE,EAAM7rC,EAAMqU,GAC/C,GAAIjtC,IAAS0kE,GAAe1kE,KAAK2kE,kBAAoB3kE,IAAS0kE,GAAe1kE,KAAK4kE,kBAC9E,MAAM,IAAIvzE,EAAa,mBAAoB,uDAE/C,IAAIkxB,EAAU,EACVsiD,EAAgB,IAEhB7kE,IAAS0kE,GAAe1kE,KAAK4kE,oBAC7BriD,GAAW,EACXsiD,EAAgB,GAGpB7gD,EAAImpB,SAASs3B,EAAOliD,EAASqW,EAAM,EAAGqU,EAAOrU,GAE7C5U,EAAImpB,SAASs3B,EARW,EAQa7rC,EAAMisC,EAAe53B,EAAOrU,GD0qBrEsnC,GAAMh7D,UAAY,CACdzI,OAAQhB,EAAKiB,WACbL,KAAM,EACNC,OAAQjC,EAAWsC,OACnBJ,MAAOjC,EAAUqC,QC3qBd,MAAM+nE,WAAuB5iE,EAChCnS,YAAYm1E,EAAWC,GACnBtzE,QACAvD,KAAK+8C,UAAYlvB,EAAO6C,qBACxB1wB,KAAKsK,MAAQ,EACbtK,KAAK42E,UAAYA,EACjB52E,KAAK62E,aAAeA,EACpB72E,KAAK8R,KAAO0kE,GAAe1kE,KAAKqrC,OAChCn9C,KAAKwX,YAGLxX,KAAKq0B,QAAU,EACfr0B,KAAK82E,MAAQ,GAENp1E,sBACP,OAAOG,EAAS20E,eAMpBx4B,QAAQlsC,GACJ,MAAMilE,EAA0B,iBAATjlE,EAAoB0kE,GAAev4B,WAAWnsC,GAAQA,EAK7E,OAHIzR,OAAOssC,OAAO6pC,GAAe1kE,MAAM6B,SAASojE,KAC5C/2E,KAAK8R,KAAOilE,GAET/2E,KAMXy+C,UACI,OAAOz+C,KAAK8R,KAGhB+9D,QAAQ9qE,EAAMmpB,EAAU,IAKpB,OAJAluB,KAAK82E,MAAMtiE,KAAK,CACZwiE,QAASjyE,EACTmpB,QAAS7tB,OAAOgX,OAAO,CAAE22D,QAAS,EAAG5+C,QAAS,GAAKlB,KAEhDluB,KAEXo3B,UAAU/C,GACN,GAAuB,iBAAZA,EACP,MAAM,IAAIlxB,EAAa,cAAe,4BAG1C,OADAnD,KAAKq0B,QAAUA,EACRr0B,KAEXm3B,YACI,OAAOn3B,KAAKq0B,QAGhBve,OACI,MAAMggB,EAAM91B,KAAK6V,eACjB7V,KAAKmW,cACL,IAAIu0B,EAAO1qC,KAAK42E,UAAUjzC,YAAY,GAClCob,EAAO/+C,KAAK62E,aAAalzC,YAAY3jC,KAAK62E,aAAaxnC,cAAgB,GAAKrvC,KAAK+8C,UACjFzyC,EAAQtK,KAAKsK,MACbisE,EAAOv2E,KAAK42E,UAAU9tE,QACI9I,KAAK8R,OAAS0kE,GAAe1kE,KAAKmlE,cAC5Dj3E,KAAK8R,OAAS0kE,GAAe1kE,KAAK4kE,mBAClC12E,KAAK8R,OAAS0kE,GAAe1kE,KAAKolE,eAElCX,EAAOv2E,KAAK42E,UAAU9tE,OAAS9I,KAAK42E,UAAUnnD,YAElD,IAAI0nD,EAAoBp4B,EAAOrU,EAC/B,OAAQ1qC,KAAK8R,MACT,KAAK0kE,GAAe1kE,KAAKorC,OAGzB,KAAKs5B,GAAe1kE,KAAKslE,YAGzB,KAAKZ,GAAe1kE,KAAKmlE,aACrB3sE,EAAQ,EACR,MACJ,KAAKksE,GAAe1kE,KAAKqrC,OACrBo5B,GAAQv2E,KAAKsK,MAAQ,EACrBogC,GAAQ1qC,KAAK+8C,UACbo6B,GAAqB,GACrB,MACJ,KAAKX,GAAe1kE,KAAKulE,MAAO,CAC5B/sE,EAAQ,GAER,MAAMP,EAAK/J,KAAK42E,UAAU9tE,OAAS,EAAI9I,KAAKq0B,QACtCpqB,EAAKygC,EACL4sC,EAAKvtE,EACLwtE,EAAKx4B,EACL70C,EAAKH,EAAKO,EACVH,EAAKF,EAAKktE,EAAoB,EAC9BK,EAAOttE,EAAK,GAAMI,EAClBmtE,EAAOxtE,EAAK,GAAMktE,EAClBO,EAAO3tE,EAAK,IAAMO,EAClBqtE,EAAOxtE,EAAK,KAAQgtE,EACpBS,EAAOF,EACPG,EAAO1tE,EAAK,KAAQgtE,EACpBW,EAAON,EACPO,EAAOR,EAAK,GAAMJ,EAClBa,EAAO9tE,EAAKI,EACZ2tE,EAAOF,EACPG,EAAOnuE,EAAK,GAAMO,EAClB6tE,EAAOhuE,EAAK,KAAQgtE,EACpBiB,EAAOF,EACPG,EAAOluE,EAAK,KAAQgtE,EACpBmB,EAAON,EACPO,EAAOd,EACb3hD,EAAIQ,YACJR,EAAIS,OAAOxsB,EAAIE,GACf6rB,EAAIY,cAAc8gD,EAAMC,EAAMC,EAAMC,EAAMztE,EAAIC,GAC9C2rB,EAAIY,cAAckhD,EAAMC,EAAMC,EAAMC,EAAMT,EAAIC,GAC9CzhD,EAAIY,cAAcshD,EAAMC,EAAMC,EAAMC,EAAMjuE,EAAIC,GAC9C2rB,EAAIY,cAAc0hD,EAAMC,EAAMC,EAAMC,EAAMxuE,EAAIE,GAC9C6rB,EAAIa,OACJb,EAAIrH,SACJ,MAEJ,KAAK+nD,GAAe1kE,KAAK0mE,QACrB9tC,GAAQ,EACRqU,GAAQ,EACRo4B,EAAoBp4B,EAAOrU,EAC3Bpb,EAAMo9B,YAAY52B,EAAKygD,EAAO,EAAG7rC,EAAM,GAAI,cAC3Cpb,EAAMo9B,YAAY52B,EAAKygD,EAAO,EAAGx3B,EAAM,GAAI,iBAC3Cw3B,GAAQv2E,KAAKsK,MAAQ,EACrB,MACJ,KAAKksE,GAAe1kE,KAAK2kE,iBACrBH,GAAmBxgD,EAAK91B,KAAK8R,KAAMykE,EAAOv2E,KAAKq0B,QAASqW,EAAMqU,EAAO/+C,KAAK+8C,WAC1E,MACJ,KAAKy5B,GAAe1kE,KAAK4kE,kBACrBJ,GAAmBxgD,EAAK91B,KAAK8R,KAAMykE,EAAM7rC,EAAMqU,EAAO/+C,KAAK+8C,WAC3D,MACJ,KAAKy5B,GAAe1kE,KAAKolE,YACrB5sE,EAAQ,EACR6sE,GAAqBn3E,KAAK+8C,UAC1B,MACJ,KAAKy5B,GAAe1kE,KAAK0rC,KACrB,MACJ,QACI,MAAM,IAAIr6C,EAAa,cAAe,qCAAqCnD,KAAK8R,qBAEpF9R,KAAK8R,OAAS0kE,GAAe1kE,KAAKulE,OAClCr3E,KAAK8R,OAAS0kE,GAAe1kE,KAAK2kE,kBAClCz2E,KAAK8R,OAAS0kE,GAAe1kE,KAAK4kE,mBAClC12E,KAAK8R,OAAS0kE,GAAe1kE,KAAK0rC,MAClC1nB,EAAImpB,SAASs3B,EAAM7rC,EAAMpgC,EAAO6sE,GAGhCn3E,KAAK8R,OAAS0kE,GAAe1kE,KAAKolE,aAClCphD,EAAImpB,SAASs3B,EAAO,EAAG7rC,EAAMpgC,EAAO6sE,GAExCrhD,EAAI/gB,OACJ+gB,EAAIrgB,aAAa,GACjBqgB,EAAIlf,QAAQ5W,KAAK8W,UAEjB,IAAK,IAAIvO,EAAI,EAAGA,EAAIvI,KAAK82E,MAAMlxE,OAAQ2C,IAAK,CACxC,MAAMxD,EAAO/E,KAAK82E,MAAMvuE,GAClBgoC,EAAaza,EAAI0a,YAAY,GAAKzrC,EAAKiyE,SAAS1sE,MAChD3G,EAAI3D,KAAK42E,UAAU9tE,OAASynC,EAAa,GAAKxrC,EAAKmpB,QAAQ8/C,QAC3DtlE,GAAK1I,KAAK42E,UAAUjzC,YAAY,GAAK3jC,KAAK62E,aAAa/G,kBAAoB,EAAI/qE,EAAKmpB,QAAQkB,QAClG0G,EAAIyb,SAAS,GAAKxsC,EAAKiyE,QAASrzE,EAAG+E,EAAI,GAE3CotB,EAAIngB,WAGZ6gE,GAAex/D,UAAY,CACvBzI,OAAQhB,EAAK8D,MACblD,KAAM,GACNC,OAAQjC,EAAWsC,OACnBJ,MAAOjC,EAAUqC,QAOrB+nE,GAAe1kE,KAAO,CAClBmlE,aAAc,EACdG,YAAa,EACbl6B,OAAQ,EACRC,OAAQ,EACRk6B,MAAO,EACPmB,QAAS,EACT/B,iBAAkB,EAClBC,kBAAmB,EACnBQ,YAAa,EACb15B,KAAM,GAeVg5B,GAAev4B,WAAa,CACxBw6B,YAAajC,GAAe1kE,KAAKmlE,aACjCyB,WAAYlC,GAAe1kE,KAAKslE,YAChCl5B,OAAQs4B,GAAe1kE,KAAKorC,OAC5BiB,OAAQq4B,GAAe1kE,KAAKqrC,OAC5Bw7B,MAAOnC,GAAe1kE,KAAKulE,MAC3BuB,QAASpC,GAAe1kE,KAAK0mE,QAC7BK,eAAgBrC,GAAe1kE,KAAK2kE,iBACpCqC,gBAAiBtC,GAAe1kE,KAAK4kE,kBACrCqC,WAAYvC,GAAe1kE,KAAKolE,YAChC14B,KAAMg4B,GAAe1kE,KAAK0rC,MC/N9B,MAAMw7B,GAAYC,GAAQA,EAAIjoC,QAAO,CAACvsC,EAAGC,IAAMD,EAAIC,GAAG,GA2DtD,SAASw0E,GAA4BrpD,EAAOspD,EAAcC,EAAeryE,GAErE,IAAIsyE,EAAeF,EAEnB,IAAK,IAAIG,EAAYF,EAAgB,EAAGE,EAAYzpD,EAAMjqB,OAAQ0zE,IAAa,CAC3E,MAAM7/C,EAAO5J,EAAMypD,GACnB,GAAI72E,EAAOg3B,KAAUA,EAAKyN,WAAazN,EAAKgN,oBAAqB,CAC7D4yC,EAAe5/C,EAAKghB,iBACpB,OAIR,GAAI1zC,GAAWoyE,IAAiBE,EAAc,CAG1CA,EAAe70E,EAFHS,KAAK2E,IAAIuvE,EAAcE,GACvBp0E,KAAKulC,IAAI2uC,EAAcE,IAGvC,OAAOA,EAkBJ,MAAMvf,GACTr4D,YAAYysB,GACRluB,KAAKu5E,iBAAmBl5E,OAAOgX,OAAO,CAAEmiE,eAAe,EAAOjiB,cAAe1pC,EAAO0C,eAAgBkpD,cAAe,GAAKvrD,GACxHluB,KAAK05E,aAAe,EACpB15E,KAAK25E,UAAY,EACjB35E,KAAK6lC,WAAa,EAClB7lC,KAAK45E,cAAgB,GAErB55E,KAAK65E,cAAgB,EAErB75E,KAAK85E,kBAAmB,EAExB95E,KAAK+5E,aAAe,CAChB3mE,IAAK,GACL4mE,MAAO,GACPC,KAAM,GACN/iB,qBAAsB,GAE1Bl3D,KAAKk6E,iBAAmB,GAGxBl6E,KAAKm6E,YAAc,CACfC,MAAO,EACPC,KAAM,IAEVr6E,KAAKmmC,OAAS,GACdnmC,KAAKs6E,YAAc,GAMvB/0E,oBAAoBsqB,EAAOlsB,EAAI,GAAG,eAAE42E,EAAiB,IAAO,IACxD1qD,EAAMmhB,QAAO,CAACwpC,EAAa/gD,KACvBA,EAAKwd,qBAAqB,IAAI4yB,IAC9B,MAAMrN,GAAO,IAAI7B,IAAc1B,YAAYx/B,GAAM6d,YAC3ChnC,EAAUksD,EAAK7rD,aAErB,OADA6rD,EAAKtzD,KAAKsxE,EAAclqE,EAAQ+qD,aACzBmf,EAAche,EAAK/sC,WAAanf,EAAQgrD,aAAeif,IAC/D52E,GAGP4B,qBAAqBuwB,EAAK4W,EAAW3U,EAAM9tB,EAAIE,EAAI+jB,GAE/C,MAAMvqB,EAAIo0B,GADV7J,EAAU7tB,OAAOgX,OAAO,CAAEojE,aAAc5sD,EAAOgV,mBAAmB5xB,aAAa,kBAAoBid,IAC1EusD,aACnBN,EAAcztC,EAAUytC,YAQ9BrkD,EAAI/gB,OACJ+gB,EAAIlf,QAAQrJ,EAAKiB,WAAY,GAC7B2rE,EAAYE,KAAK1lE,SAAS+lE,IAT1B,IAAgB3wE,EAAIG,EAAIsqC,EAARzqC,EAULpG,EAAI+2E,EAAI3wE,GAVCG,EAUGvG,EAAI+2E,EAAIxwE,GAVPsqC,EAUW,wBAT/B1e,EAAIQ,YACJR,EAAIvgB,eAAei/B,GACnB1e,EAAIzgB,aAAam/B,GACjB1e,EAAIrgB,aAAa,GACjBqgB,EAAImpB,SAASl1C,EAAIE,EAAIhF,KAAK2E,IAAIM,EAAKH,EAAI,GAAII,EAAKF,GAMhD6rB,EAAIzgB,aAAa,SACjBygB,EAAIyb,SAAStsC,KAAK2vB,MAAM8lD,EAAIxwE,GAAKwwE,EAAI3wE,IAAIjC,WAAYnE,EAAI+2E,EAAI3wE,GAAII,EAAK,OAE1E2rB,EAAIzgB,aAAa,OACjBygB,EAAIyb,SAAS,UAAU7E,EAAUitC,WAAa,GAAGgB,QAAQ,cAAcjuC,EAAU7G,YAAc,GAAG80C,QAAQ,WAAWR,EAAYC,MAAMO,QAAQ,KAAMh3E,EAAI,GAAIwG,EAAK,IAClK2rB,EAAIngB,UAiBRpQ,qBAAqBuwB,EAAKoB,EAAOrH,EAAO5B,GACpC,IAAIC,EAAU,CACV0sD,WAAW,EACXC,aAAa,GAEK,iBAAX5sD,EACPC,EAAU7tB,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAI6W,GAAUD,GAE7B,kBAAXA,IACZC,EAAQ0sD,UAAY3sD,GAGxB,MAAMqY,EAAQ,IAAIywB,GAAMlpC,EAAO4E,SAASulC,QAAQjB,GAAMW,KAAKY,MAAMY,aAAarpC,GAExE0pC,EAAQrrC,EAAQ0sD,UAAYzgB,GAAK2gB,iBAAiBx0C,GAAS,GASjE,OAPA,IAAIwzB,IACCC,WAAW,CAACzzB,IACZy0C,cAAc,CAACz0C,GAAQpP,EAAO,CAAE2jD,YAAa3sD,EAAQ2sD,YAAa3jD,MAAAA,IAEvEoP,EAAMrP,SAASC,GAAOphB,KAAKggB,EAAKoB,GAChCqiC,EAAM5kD,SAASomC,GAASA,EAAKpkC,WAAWmf,GAAKhgB,SAEtCwwB,EAAM7vB,iBAejBlR,wBAAwBuwB,EAAKklD,EAAU9jD,EAAO+jD,EAAUprD,EAAOqrD,EAAUjtD,GACrE,IAAI07C,EAAO,CACPiR,UAAWM,EACXL,aAAa,GAEK,iBAAX5sD,EACP07C,EAAOtpE,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAIsyD,GAAO17C,GAEvB,kBAAXA,IACZ07C,EAAKiR,UAAY3sD,GAGrB,MAAMktD,EAAY,IAAIpkB,GAAMlpC,EAAO4E,SAASulC,QAAQjB,GAAMW,KAAKY,MAAMY,aAAarpC,GAE5EurD,EAAW,IAAIrkB,GAAMlpC,EAAO4E,SAASulC,QAAQjB,GAAMW,KAAKY,MAAMY,aAAa+hB,GAE3E1hB,EAAQoQ,EAAKiR,UAAYzgB,GAAK2gB,iBAAiBK,GAAa,IAElE,IAAIrhB,IACCC,WAAW,CAACohB,IACZphB,WAAW,CAACqhB,IACZL,cAAc,CAACI,EAAWC,GAAWlkD,EAAO,CAAE2jD,YAAalR,EAAKkR,cAErEM,EAAUrlE,KAAKggB,EAAKoB,GACpBkkD,EAAStlE,KAAKggB,EAAKklD,GACnBzhB,EAAM5kD,SAASomC,GAASA,EAAKpkC,WAAWmf,GAAKhgB,SAE7C,IAAI0gE,GAAet/C,EAAO8jD,GAAUrkE,WAAWmf,GAAKhgB,OAQxDvQ,yBAAyBwhC,EAAWs0C,EAAeC,GAC/Cv0C,EAAUpyB,SAAQ,CAAC4mE,EAActpE,KAC7B,GAAIpP,EAAY04E,IAAiBA,EAAar0C,SAAU,CACpD,GAAIq0C,EAAajlC,cAAgBglC,EAC7B,OAGJ,MAAMhoD,EAAWioD,EAAa1sC,WAAWvb,SAAS/E,cAClD,GAAiB,QAAb+E,GAAmC,QAAbA,EACtB,OAEJ,GAAI+nD,GAAiBE,EAAazgC,UAAW,CAEzC,MAAMxX,EAAQi4C,EAAah4C,cAAc,GACzC,GAAc,IAAVtxB,EACAqxB,EAAMt/B,KAAOk1E,GAA4BnyC,EAAWzD,EAAMt/B,KAAMiO,GAAO,QAEtE,GAAIA,EAAQ,GAAKA,EAAQ80B,EAAUnhC,OAAQ,CAE5C,MAAM41E,EAAez0C,EAAU90B,EAAQ,GACvC,GAAIpP,EAAY24E,GACZ,GAAIA,EAAat0C,SACb5D,EAAMt/B,KAAOw3E,EAAaj4C,cAAc,GAAGv/B,SAE1C,CACD,MAAMwtD,EAAWgqB,EAAa/gC,iBAE9BnX,EAAMt/B,KAAOk1E,GAA4BnyC,EAAWyqB,EAAUv/C,GAAO,IAIjFspE,EAAaltB,WAAW,EAAG/qB,EAAMt/B,WAWjDy3E,WAAWt1C,EAAQk1C,GACf,IAAKl1C,IAAWA,EAAOvgC,OACnB,MAAM,IAAIzC,EAAa,cAAe,6BAE1CgjC,EAAOxxB,SAAS2xB,GAAUwzB,GAAU4hB,kBAAkBp1C,EAAME,eAAgB60C,KAsBhFM,0BAA0Bx1C,GACtB,MAAMy1C,EAAmB/tD,EAAOgV,mBAAmB5xB,aAAa,8BAGhE,IAAI4qE,EAAoB,EACpBC,EAAO,EACPC,EAAO,EACX,MAAM9+B,EAAS,GACTjlC,EAAY,GAElB,GAAIhY,KAAK85E,iBACL,OAAO95E,KAAK65E,cAEhB,IAAK1zC,EACD,MAAM,IAAIhjC,EAAa,cAAe,sDAE1CnD,KAAKg8E,mBAAmB71C,GAExB,MAAQ8zC,KAAMgC,EAAa7oE,IAAK8oE,GAAel8E,KAAK+5E,aACpD/5E,KAAK65E,cAAgB,EAGrBoC,EAAYtnE,SAAS6nD,IACjB,MAAM1nD,EAAUonE,EAAW1f,GAC3B1nD,EAAQwiC,YAGJxiC,EAAQ0xB,eAAe5gC,OAASugC,EAAOvgC,SACvCi2E,GAAqB,GAGzB/mE,EAAQ0xB,eAAe7xB,SAASjP,IAC5Bo2E,GAAQp2E,EAAEiL,aAAarG,MACvByxE,GAAQr2E,EAAEihC,WAAWvlC,QACrB67C,EAAOzoC,KAAK9O,EAAEiL,aAAarG,OAC3B0N,EAAUxD,KAAK9O,EAAEihC,WAAWvlC,YAEhC,MAAMkJ,EAAQwK,EAAQ2a,WACtBzvB,KAAK65E,eAAiBvvE,KAE1BtK,KAAK85E,kBAAmB,EAExB,MAAMqC,EAAOL,EAAO,EAAIA,EAAO7+B,EAAOr3C,OAAS,EAAIq3C,EAAOr3C,OACpDw2E,EAAOpD,GAAS/7B,EAAO7pC,KAAKipE,GAAOp3E,KAAK4G,IAAIwwE,EAAKF,EAAM,MACvDG,EAAQr3E,KAAK4G,IAAIuwE,EAAOn/B,EAAOr3C,OAAQ,IAAOu2E,EAC9CI,EAAOR,EAAO/jE,EAAUpS,OACxB42E,EAAOxD,GAAShhE,EAAU5E,KAAKipE,GAAOp3E,KAAK4G,IAAIwwE,EAAKE,EAAM,MAC1DE,EAAQx3E,KAAK4G,IAAI2wE,EAAOxkE,EAAUpS,OAAQ,IAAO22E,EAEjDG,EAASz3E,KAAK2E,IAAI6yE,EAAOH,GAASL,EAAYr2E,OAASg2E,EACvDe,EAAef,EAAmBC,EACxC,OAAO77E,KAAK65E,cAAgB50E,KAAK2E,IAAI+yE,EAAcD,GAMvDziB,mBACI,IAAKj6D,KAAK85E,iBACN,MAAM,IAAI32E,EAAa,kBAAmB,qFAE9C,OAAOnD,KAAK65E,cAGhBt0E,+BAA+B4gC,GAC3B,IAAKA,IAAWA,EAAOvgC,OACnB,MAAM,IAAIzC,EAAa,cAAe,uBAE1C,MAAMq0D,EAAarxB,EAAO,GAAGwxB,gBAU7B,OAT6BxxB,EAAO6K,QAAO,CAACwpC,EAAal0C,KACrD,IAAKA,EAAMqxB,gBAAgB7wD,OAAO0wD,GAC9B,MAAM,IAAIr0D,EAAa,eAAgB,yDAE3C,GAAImjC,EAAMyxB,YAAchB,GAAMW,KAAKN,SAAW9wB,EAAMiyB,aAChD,MAAM,IAAIp1D,EAAa,kBAAmB,qCAE9C,OAAO8B,KAAK2E,IAAI4wE,EAAar1E,EAASU,IAAI20E,EAAal0C,EAAM2xB,8BAC9D,GAIP2kB,uBAAuBz2C,GACnB,GAAqB,GAAjBA,EAAOvgC,OACP,OACJ,MAAMsxD,EAAuB4C,GAAU7B,wBAAwB9xB,GAEzD02C,EAAmB,IAAIzkD,IACvBqjC,EAAW,GAGjBt1B,EAAOxxB,SAAS2xB,IAGZ,MAAM+wB,EAAY,IAAIlyD,EAAS,EAAG+xD,GAClC5wB,EAAME,eAAe7xB,SAASwjD,IAC1B,MAAM2kB,EAAezlB,EAAUjyD,UAC/B,IAAI23E,EAAwBF,EAAiBr8E,IAAI23D,EAASv9B,YAM1D,GAJKmiD,IACDF,EAAiBv3E,IAAI6yD,EAASv9B,WAAY,IAC1CmiD,EAAwBF,EAAiBr8E,IAAI23D,EAASv9B,eAEpDmiD,EAAwBA,EAAsBD,QAAgBl5E,GAAY,CAC5E,MAAMo5E,EAAa,IAAInT,GACvBpO,EAASjnD,KAAKwoE,GAEdD,EAAsBD,GAAgBE,EAI1C7kB,EAASlhB,qBAAqB8lC,EAAsBD,IACpDzlB,EAAUjxD,IAAI+xD,EAASxxB,kBAG/B3mC,KAAKk6E,iBAAiB1lE,KAAK,CACvBpB,IAAKypE,EACL7C,MAAOve,EACPvE,qBAAAA,IAOR8kB,mBAAmB71C,GACf,MACMs1B,EAnbd,SAAwBt1B,EAAQ82C,EAAaC,GACzC,GAAqB,GAAjB/2C,EAAOvgC,OACP,MAAO,CACHwN,IAAK,GACL4mE,MAAO,GACPC,KAAM,GACN/iB,qBAAsB,GAG9B,MAAM2lB,EAAmB,GACnBM,EAAW,GACX1hB,EAAW,GACXvE,EAAuB4C,GAAU7B,wBAAwB9xB,GAsB/D,OAnBAA,EAAOxxB,SAAQ,CAAC2xB,EAAO61B,KAGnB,MAAM9E,EAAY,IAAIlyD,EAAS,EAAG+xD,GAClC5wB,EAAME,eAAe7xB,SAASwjD,IAC1B,MAAM2kB,EAAezlB,EAAUjyD,UAE/B,IAAKy3E,EAAiBC,GAAe,CACjC,MAAME,EAAaC,EAAY,CAAEriB,OAAQkiB,IACzCrhB,EAASjnD,KAAKwoE,GACdH,EAAiBC,GAAgBE,EAEjCG,EAAS3oE,KAAKsoE,GAGlBI,EAAa/kB,EAAU0kB,EAAiBC,GAAe3gB,GACvD9E,EAAUjxD,IAAI+xD,EAASxxB,kBAGxB,CACHvzB,IAAKypE,EACL7C,MAAOve,EACPwe,KAAMkD,EAASt5C,MAAK,CAACp/B,EAAGC,IAAMD,EAAIC,IAClCwyD,qBAAAA,GA6YiBkmB,CAAej3C,GAASq2B,GAAS,IAAI7B,GAAY6B,KADvD,CAACrE,EAAUrjD,EAASqnD,IAAernD,EAAQmkD,YAAYd,EAAUgE,KAE5En8D,KAAK+5E,aAAete,EACpB,MAAM4hB,EAAer9E,KAAK+5E,aAAaC,MAIvC,OAHAqD,EAAa1oE,SAASG,IAClBA,EAAQymD,UAAY8hB,KAEjB5hB,EAMX6hB,kBACI,OAAOt9E,KAAK+5E,aAQhBziC,UAAUoiC,EAAe,EAAG6D,EAAkBC,EAAatmD,GAEvD,MAAMukC,EAAWz7D,KAAK+5E,aACtB,IAAKte,EACD,MAAM,IAAIt4D,EAAa,iBAAkB,mCAE7C,MAAQ82E,KAAMgC,EAAa7oE,IAAK8oE,GAAezgB,EAE/Cz7D,KAAKs6E,YAAc,GAGfkD,GAAetmD,GACfsmD,EAAY7oE,SAAS2xB,GAAUA,EAAMrP,SAASC,GAAOogB,cAIzD,IAAI3zC,EAAI,EACJmC,EAAQ,EACZ9F,KAAK65E,cAAgB,EACrB,IAAIriB,EAAa,EAEjBykB,EAAYtnE,SAAS6nD,IACjB,MAAM1nD,EAAUonE,EAAW1f,GAG3B1nD,EAAQwiC,YACR,MAAMhtC,EAAQwK,EAAQ2a,WACtBzvB,KAAK65E,eAAiBvvE,EACtB,MAAMwwD,EAAWhmD,EAAQgnD,cAAc16D,QACvCo2D,GAAcsD,EACd,MAAMxqD,EAAUwE,EAAQnE,aACxBhN,EAAIA,EAAImC,EAAQwK,EAAQ+qD,YACxBvmD,EAAQ5L,KAAKvF,GAEbmC,EAAQwE,EAAQgG,EAAQ+qD,eAG5B,MAAM,cAAEme,EAAa,cAAEjiB,EAAa,cAAEkiB,GAAkBz5E,KAAKu5E,iBAEvD3gB,EAAeogB,GAASiD,EAAY7oE,KAD7BopD,GAASv3D,KAAK4G,IAAI0rD,EAAgB2kB,EAAW1f,GAAMV,cAAc16D,QAAUo2D,MAKxF,GAHAx3D,KAAK65E,cAAgBl2E,EAAImC,EACzB9F,KAAK85E,kBAAmB,EAEpBJ,GAAgB,EAChB,OAAO15E,KAAKy9E,WAGhB,MAAMC,EAAexB,EAAWD,EAAY,IACtChX,EAAciX,EAAWD,EAAYA,EAAYr2E,OAAS,IAGhE,SAAS+3E,EAAwBC,GA8D7B,OA7DkB3B,EAAY7oE,KAAI,CAACopD,EAAMj0D,KACrC,MAAMuM,EAAUonE,EAAW1f,GACrBr2B,EAASrxB,EAAQsnD,sBACvB,IAAIyhB,EACJ,GAAIt1E,EAAI,EAAG,CACP,MAAMu1E,EAAc5B,EAAWD,EAAY1zE,EAAI,IAI/C,IAAK,IAAIo7C,EAAIp7C,EAAI,EAAGo7C,GAAK,EAAGA,IAAK,CAC7B,MACMo6B,EADW7B,EAAWD,EAAYt4B,IACZyY,sBAEtB4hB,EAAiB,GAMvB,GALA39E,OAAO8S,KAAKgzB,GAAQxxB,SAASokD,IACrBglB,EAAWhlB,IACXilB,EAAexpE,KAAKukD,MAGxBilB,EAAep4E,OAAS,EAAG,CAE3B,IAAIk1D,EAAW,EACXmjB,EAAqBzrB,EAAAA,EACrB0rB,EAAmB,EAqBvB,GApBAF,EAAerpE,SAASokD,IACpB,MAAM9oC,EAAQ8tD,EAAWhlB,GAAGpyB,WAAWvlC,QACnC6uB,EAAQ6qC,IACR+iB,EAAeE,EAAWhlB,GAC1B+B,EAAW7qC,GAGf,MAAMkuD,EAAeh4C,EAAO4yB,GACtBqlB,EAAiBD,EAAar1E,QAC/Bq1E,EAAaxtE,aAAamqB,UAAYqjD,EAAaxtE,aAAagoC,qBAC/D0lC,EAAcN,EAAWhlB,GAAGpoD,aAC5B2tE,EAAkBP,EAAWhlB,GAAGjwD,OAASu1E,EAAYjlC,OAASilC,EAAYtjD,WAAasjD,EAAYzlC,qBAEzGqlC,EAAqBh5E,KAAKulC,IAAIyzC,EAAoBG,EAAiBE,MAIvEL,EAAqBh5E,KAAKulC,IAAIyzC,EAAoBnpE,EAAQhM,QAAUg1E,EAAYh1E,OAAgC,IAAvB80E,IAGrFpE,EAAe,CACf,MAAM9zE,EAAI8xD,EACV0mB,EAAoBj5E,KAAK4G,IAAI0rD,EAAgBuD,EAAWp1D,GAAMkzD,EAAgBglB,YAEjD,IAAjBC,IACZK,EAAmBL,EAAaznC,WAAWyiB,QAAQiC,GAAY8iB,GAEnE,MAAO,CACHM,iBAAAA,EACAD,mBAAAA,EACAM,aAAcV,KAK9B,MAAO,CAAEK,iBAAkB,EAAGM,eAAgB,EAAGP,mBAAoB,MAI7E,SAASQ,EAAsBC,GAE3B,MAAMC,EAAUf,EAAuB,EACvC,IAAIgB,EAAa,EAsBjB,OArBA3C,EAAYtnE,SAAQ,CAAC6nD,EAAMvqD,KACvB,MAAM6C,EAAUonE,EAAW1f,GAC3B,GAAIvqD,EAAQ,EAAG,CACX,MAAM4sE,EAAW/pE,EAAQhM,OACnBg2E,EAAQJ,EAAezsE,GACvB8sE,EAAUr7E,EAAQo7E,EAAMP,cAAcz1E,OAASg2E,EAAMZ,kBAAoBW,EAAWD,GAC1F,IAAII,EAAkB,EAClBD,EAAU,EACVH,GAAcG,EAETA,EAAU,IACfC,EAAkB/5E,KAAKulC,IAAIs0C,EAAMb,mBAAoBh5E,KAAK4C,IAAIk3E,IAC9DH,IAAeI,GAEnBlqE,EAAQ5L,KAAK21E,EAAWD,GAG5B9pE,EAAQunD,4BAA4B1nD,SAASwjD,IACzCA,EAASliB,gBAAgB0oC,EAAU7pE,EAAQhM,cAG5Cm8D,EAAYn8D,OAAS40E,EAAa50E,OAE7C,MAAM80E,EAAuBlE,EACzBzU,EAAYt0D,aAAayoC,OACzB6rB,EAAYt0D,aAAa2qD,aACzBoiB,EAAa/sE,aAAa0qD,YACxBz4B,EAAY/U,EAAOgV,mBACnBo8C,EAAmBr8C,EAAU3xB,aAAa,uBAC1CiuE,EAAmBt8C,EAAU3xB,aAAa,uBAC1Ci2D,EAActkC,EAAU3xB,aAAa,iBAC3C,IAAIkuE,EAAcvB,EAClB,MAAMwB,EAAYzB,EAAwBwB,GAC1C,IAAIE,EAAcZ,EAAsBW,GAExC,GAA2B,IAAvBnD,EAAYr2E,OACZ,OAAO,EACX,MASM05E,EATkB,EAACH,EAAaC,KAClC,IAAIG,EAASJ,EAAc,EAC3B,GAAIC,EAAUx5E,OAAS,EACnB,IAAK,IAAI45E,EAAK,EAAGA,EAAKJ,EAAUx5E,SAAU45E,EACtCD,EAASt6E,KAAKulC,IAAI40C,EAAUI,GAAItB,iBAAmB,EAAGqB,GAG9D,OAAOA,GAESE,CAAgBN,EAAaC,GAI3CM,EAAkBC,IACpB,IAAIC,EAAsB,EAC1B,MAAMC,EAAe5a,GAAeA,EAAYjJ,iBAChD,GAAI6jB,EAAc,CACd,MAAMv5C,EAAQu5C,EAAazpC,WAG3B,GAAI9P,EAAMsxB,eAAex2D,QAAUklC,EAAMqxB,gBAAgBv2D,QACrD,OAA0B,EAAnB89E,EAAuBI,EAAcA,EAAcJ,EAE9D,MAAMY,EAAYD,EAAapwD,WAC/BmwD,EACIt5C,EAAMuyB,QAAQoM,EAAYnJ,cAAc16D,SAAWu+E,GAAkBG,EAAY5Y,GAEzF,OAA0B,EAAnBgY,EAAuBU,EAAsBA,EAAsBV,GAE9E,IAAIa,EAAaL,EAAeP,GAC5Ba,EAAaD,GAAcb,EAAmBD,GAClD,MAAM5I,EAAOuH,EAAuBoC,EACpC,IAAIzqC,EAAakkC,EAGjB,KAAQ4F,EAAchJ,GAAQ9gC,EAAa,GAAO8pC,EAAcU,EAAa1J,GAAQ9gC,EAAa,GAC9F4pC,GAAeE,EAAchJ,EAC7B0J,EAAaL,EAAeP,GAC5Ba,EAAaD,GAAcb,EAAmBD,GAC9CI,EAAcZ,EAAsBd,EAAwBwB,IAC5D5pC,IAGJ,OADAv1C,KAAK05E,aAAeA,EACb15E,KAAKy9E,WAGhBA,WACI,MAAMhiB,EAAWz7D,KAAK+5E,aAChBL,EAAe15E,KAAK05E,aAG1B15E,KAAKm6E,YAAc,CAAEC,MAAO,EAAGC,KAAM,IACrC5e,EAASwe,KAAKtlE,SAAQ,CAAC6nD,EAAMvqD,KACzB,GAAc,IAAVA,EACA,OACJ,MAAMguE,EAAWxkB,EAASwe,KAAKhoE,EAAQ,GACjC6rE,EAAcriB,EAASroD,IAAI6sE,GAC3BnrE,EAAU2mD,EAASroD,IAAIopD,GACvB0jB,EAAcpC,EAAYntE,aAC1BwvE,EAAcrrE,EAAQnE,aAEtB2tE,EAAkBR,EAAYh1E,OAASo3E,EAAY9mC,OAAS8mC,EAAY5kB,aAExE8iB,EAAiBtpE,EAAQhM,OAASq3E,EAAY9kB,YAC9Cqf,EAAM0D,EAAiBE,EAC7Bt+E,KAAKm6E,YAAYC,OAASM,EAC1B16E,KAAKm6E,YAAYE,KAAK7lE,KAAK,CAAEzK,GAAIu0E,EAAiBp0E,GAAIk0E,IAEtDtpE,EAAQghC,sBAAsBR,QAAQlc,KAAOshD,EAC7CoD,EAAYhoC,sBAAsBR,QAAQjc,MAAQqhD,KAItD16E,KAAK45E,cAAgB,GACrB,MAAMA,EAAgB55E,KAAK45E,cAW3B55E,KAAKmmC,OAAOxxB,SAAS2xB,IACjBA,EAAME,eAAe7xB,SAAQ,CAAC8kB,EAAMlxB,EAAGsnB,KACnC,MAAMzB,EAAWqL,EAAKkN,WAAWp/B,QAAQvB,WAAW8B,WAC9CwI,EAAUmpB,EAAK9oB,aACf0kC,EAAmB5b,EAAKqc,sBACxBsqC,EAAe3mD,EAAK3wB,OAASwH,EAAQ8oC,OAAS9oC,EAAQyqB,WAAazqB,EAAQsoC,qBACjF,IAAIpD,EAAQ,EACZ,GAAIjtC,EAAIsnB,EAAMjqB,OAAS,EAAG,CACtB,MAAMy6E,EAAYxwD,EAAMtnB,EAAI,GACtB+3E,EAAeD,EAAU1vE,aAE/B6kC,EADsB6qC,EAAUv3E,OAASw3E,EAAaxlD,UAAYwlD,EAAa3nC,oBACvDynC,EACxB/qC,EAAiBG,MAAMC,KAAO4qC,EAAUv3E,OAAS2wB,EAAK3wB,OACtDu3E,EAAUvqC,sBAAsBR,QAAQlc,KAAOoc,OAG/CA,EAAQkkC,EAAe0G,EACvB/qC,EAAiBG,MAAMC,KAAOikC,EAAejgD,EAAK3wB,OAEtDusC,EAAiBC,QAAQjc,MAAQmc,EA7BzC,SAAqBpnB,EAAUonB,GAC3B,MAAM+qC,EAAQ3G,EAAcxrD,QACdxqB,IAAV28E,EACA3G,EAAcxrD,GAAY,CAAEsnB,KAAMF,EAAOgrC,MAAO,IAGhDD,EAAMC,OAAS,EACfD,EAAM7qC,MAAQ6qC,EAAM7qC,KAAOF,GAAS,GAuBpCirC,CAAYryD,EAAUinB,EAAiBG,MAAMC,YAKrD,IAAIirC,EAAiB,EAcrB,OAbA1gF,KAAKmmC,OAAOxxB,SAAS2xB,IACjBA,EAAME,eAAe7xB,SAAS8kB,IAC1B,MAAMrL,EAAWqL,EAAKkN,WAAWp/B,QAAQvB,WAAW8B,WAC9CwI,EAAUmpB,EAAKqc,sBACrBxlC,EAAQklC,MAAME,KAAOkkC,EAAcxrD,GAAUsnB,KAC7CplC,EAAQ8d,SAAWA,EACnB9d,EAAQilC,YAAc,EACtBjlC,EAAQklC,MAAMG,UAAYrlC,EAAQklC,MAAMC,KAAOnlC,EAAQklC,MAAME,KAC7DgrC,GAAkBz7E,KAAK4G,IAAIyE,EAAQklC,MAAMG,UAAW,SAG5D31C,KAAK25E,UAAY10E,KAAKgH,KAAKy0E,GAC3B1gF,KAAKs6E,YAAY9lE,KAAKxU,KAAK25E,WACpB35E,KAAK25E,UAUhBgH,KAAKzyD,GACD,IAAItgB,EACJ,MAAM6tD,EAAWz7D,KAAK+5E,aACtB,IAAKte,EACD,OAAO,EAEX,MAAMmlB,EAAmF,QAA1EhzE,EAAKsgB,MAAAA,OAAyC,EAASA,EAAQ0yD,aAA0B,IAAPhzE,EAAgBA,EAAK,GAYtH,IAAI9H,EAAQ,EAsBZ,OArBA9F,KAAK6lC,WAAa,EAClB41B,EAASwe,KAAKtlE,SAAQ,CAAC6nD,EAAMvqD,EAAOgoE,KAChC,MAAMnlE,EAAU2mD,EAASroD,IAAIopD,GACvBshB,EAAc7rE,EAAQ,EAAIwpD,EAASroD,IAAI6mE,EAAKhoE,EAAQ,SAAMrO,EAC1D06D,EAAcrsD,EAAQgoE,EAAKr0E,OAAS,EAAI61D,EAASroD,IAAI6mE,EAAKhoE,EAAQ,SAAMrO,GAdlF,SAAci9E,EAAS/6E,EAAO6+C,EAAM53C,GAChC8zE,EAAQ33E,KAAK23E,EAAQ/3E,OAAShD,GAC9B+6E,EAAQ/qC,sBAAsBR,QAAQlc,MAAQtzB,EAC9C+6E,EAAQ/qC,sBAAsBR,QAAQjc,OAASvzB,EAC3C6+C,IACAA,EAAK7O,sBAAsBR,QAAQjc,OAASvzB,GAC5CiH,IACAA,EAAK+oC,sBAAsBR,QAAQlc,MAAQtzB,GAQ/CwD,CAAKwL,EAAShP,EAAOg4E,EAAaxf,GAClC,MAAMwiB,GAAQ9H,GAASlkE,EAAQ0xB,eAAepzB,KAAK1N,GAAMA,EAAEowC,sBAAsBN,MAAMG,aACnFmrC,EAAO,EACPh7E,GAASb,KAAKulC,IAAI11B,EAAQghC,sBAAsBR,QAAQjc,MAAOp0B,KAAK4C,IAAIi5E,IAEnEA,EAAO,IAERh7E,EADAw4D,EACQr5D,KAAKulC,IAAI8zB,EAAYxoB,sBAAsBR,QAAQjc,MAAOp0B,KAAK4C,IAAIi5E,IAGnE,GAGhBh7E,GAAS86E,EACT5gF,KAAK6lC,YAAc//B,KAEhB9F,KAAKy9E,WAOhBjmC,aAOI,OANAx3C,KAAKk6E,iBAAiBvlE,SAASulE,IAC3BA,EAAiBF,MAAMrlE,SAASuiC,GAAOA,EAAGM,kBAE9Cx3C,KAAK+5E,aAAaE,KAAKtlE,SAAS6nD,IAC5Bx8D,KAAK+5E,aAAa3mE,IAAIopD,GAAMhlB,gBAEzBx3C,KAMX+5D,WAAW5zB,GAGP,OAFAnmC,KAAK48E,uBAAuBz2C,GAC5BnmC,KAAK85E,kBAAmB,EACjB95E,KAYXg6D,OAAO7zB,EAAQuzC,EAAcxrD,GACzB,MAAMy7C,EAAOtpE,OAAOgX,OAAO,CAAEwjE,aAAa,GAAS3sD,GACnDluB,KAAKmmC,OAASA,EACd,MAAMoxB,EAAgBv3D,KAAKu5E,iBAAiBhiB,cAU5C,OATIA,GACAv3D,KAAKmmC,OAAOxxB,SAASokD,GAAMA,EAAEN,iBAAiBlB,KAElDv3D,KAAKy7E,WAAWt1C,EAAQwjC,EAAKkR,aAC7B76E,KAAKg8E,mBAAmB71C,GACxBnmC,KAAKs3C,UAAUoiC,EAAc/P,EAAK70D,QAASqxB,EAAQwjC,EAAKzyC,OAEpDyyC,EAAKzyC,OACLl3B,KAAKw3C,aACFx3C,KAGX+6E,cAAc50C,EAAQjP,EAAO6pD,GACzB,MAAM7yD,EAAU7tB,OAAOgX,OAAO,CAAEvC,QAASoiB,EAAMxgB,cAAgBqqE,GAEzDrH,EAAexiD,EAAMq8C,cAAgBr8C,EAAMykB,gBAAkBq2B,GAAMmB,eAEzE,OAhyBR,YAAcpvE,GACN+1D,GAAU13B,OACVv+B,EAAI,qBAAsBE,GA6xB1B,CAAE,+BAAgC21E,GAC3B15E,KAAKg6D,OAAO7zB,EAAQuzC,EAAcxrD,GAE7CyM,eAAe6hC,GACX,IAAI5uD,EACJ,OAAoC,QAA5BA,EAAK5N,KAAK+5E,oBAAiC,IAAPnsE,OAAgB,EAASA,EAAGwF,IAAIopD,IC9yB7E,IAAIwkB,GDkzBXlnB,GAAU13B,OAAQ,ECjzBlB,SAAW4+C,GACPA,EAAeA,EAAuB,QAAK,GAAK,SAChDA,EAAeA,EAAoB,IAAI,GAAK,MAFhD,CAGGA,KAAmBA,GAAiB,KAChC,MAAMC,WAAertE,EACxBnS,YAAYouB,EAAO3B,EAAU,IAIzB,GAHA3qB,QACAvD,KAAKkhF,iBAAmB,GACxBlhF,KAAKmhF,aAAe,IACftxD,IAAUA,EAAMjqB,OACjB,MAAM,IAAIzC,EAAa,eAAgB,iCAE3CnD,KAAKkuB,QAAUA,EACfluB,KAAK6vB,MAAQA,EACb7vB,KAAKohF,UAAsCx9E,MAA1B5D,KAAKkuB,QAAQkzD,UAAyBphF,KAAKkuB,QAAQkzD,UAAYvxD,EAAMjqB,OAGlF5F,KAAKkuB,QAAQmzD,gBACbrhF,KAAKshF,kCAETthF,KAAKuhF,eAAiBvhF,KAAKkuB,QAAQqzD,gBAAkBvhF,KAAKkuB,QAAQmzD,gBAAkB,EACtDz9E,MAA1B5D,KAAKkuB,QAAQszD,UACbxhF,KAAKwhF,UAAYxhF,KAAKkuB,QAAQszD,UAG9BxhF,KAAKwhF,UAAY3xD,EAAMk2B,MAAMtsB,IAAUA,EAAKwhB,YAEhDj7C,KAAKyhF,QACuB79E,MAAxB5D,KAAKkuB,QAAQuzD,QAAuBzhF,KAAKkuB,QAAQuzD,QAAUx8E,KAAK4C,IAAI7H,KAAKuhF,eAAiBvhF,KAAKohF,WAAa,EAChHphF,KAAKg0B,MAAQnG,EAAOgV,mBAAmB5xB,aAAa,sBACpDjR,KAAKg2B,MAAQ,GACbh2B,KAAK+1B,MAAQ,IACb/1B,KAAKsK,MAAQ,IACbtK,KAAK0hF,kBAAkB1hF,KAAKkuB,QAAQyzD,UAAYV,GAAOW,cACvD9nB,GAAU4hB,kBAAkB7rD,GAAO,GAAM,GACzC7vB,KAAK6hF,gBACL7hF,KAAK8hF,SAEEpgF,sBACP,OAAOG,EAASo/E,OAETW,0BACP,OAAOZ,GAAe/yC,IAEf8zC,6BACP,OAAOf,GAAerxC,OAEfqyC,4BACP,OAAO,GAGA1xE,qBACP,OAAOud,EAAOgV,mBAAmBlyB,aAAaK,OAAOulC,OAEzDurC,SACI,IAAK,IAAIv5E,EAAI,EAAGA,EAAIvI,KAAK6vB,MAAMjqB,OAAQ2C,IAAK,CAC3BvI,KAAK6vB,MAAMtnB,GACnByuC,UAAUh3C,OAGvBiiF,SACI,IAAK,IAAI15E,EAAI,EAAGA,EAAIvI,KAAK6vB,MAAMjqB,OAAQ2C,IAAK,CAC3BvI,KAAK6vB,MAAMtnB,GACnBkuC,YAAYz2C,OAMzBkiF,aAAaV,GAET,OADAxhF,KAAKwhF,YAAcA,EACZxhF,KAKXmiF,WAAWV,GAEP,OADAzhF,KAAKyhF,UAAYA,EACVzhF,KAKX0hF,kBAAkBC,GAOd,OANIA,IAAaV,GAAOW,cAAgBD,IAAaV,GAAOc,kBAExD39E,QAAQC,KAAK,4BAA4Bs9E,kCACzCA,EAAWV,GAAOW,cAEtB5hF,KAAK2hF,SAAWA,EACT3hF,KAEX02D,WACI,OAAO12D,KAAK6vB,MAEhB+mB,eACI,OAAO52C,KAAKohF,UAEhBE,kCAEIl9E,QAAQC,KAAK,kGAAmG,4GAA6G,mDAEjO+9E,mBAEI,OADApiF,KAAKshF,kCACEthF,KAAK62C,mBAEhBwrC,iBAAiBC,GAEb,OADAtiF,KAAKshF,kCACEthF,KAAKuiF,iBAAiBD,GAEjCzrC,mBACI,OAAO72C,KAAKuhF,eAEhBgB,iBAAiB1yD,GACb7vB,KAAKiiF,SACLjiF,KAAKuhF,eAAiB1xD,EACtB7vB,KAAK6hF,gBACL7hF,KAAK8hF,SAETD,gBACI7hF,KAAKkhF,iBAAmB,GACxB,IAAIt8E,EAAI5E,KAAKohF,UACb,KAAOx8E,GAAK,GACR5E,KAAKkhF,iBAAiBsB,QAAQ,IAAIlzD,EAAM,UAAa1qB,EAAI,GAAK5E,KAAKg0B,QACnEpvB,EAAIC,UAAUD,EAAI,IAAIkD,WAAY,IAItC,IAFA9H,KAAKmhF,aAAe,GACpBv8E,EAAI5E,KAAKuhF,eACF38E,GAAK,GACR5E,KAAKmhF,aAAaqB,QAAQ,IAAIlzD,EAAM,UAAa1qB,EAAI,GAAK5E,KAAKg0B,QAC/DpvB,EAAIC,UAAUD,EAAI,IAAIkD,WAAY,IAM1C26E,uBACI,MAAMd,EAAW3hF,KAAK2hF,SAChB/rB,EAAa51D,KAAK6vB,MAAM,GAC9B,IAAI6yD,EAAiBC,EAAa/sB,EAAY+rB,GAC1CiB,EAAiBD,EAAa/sB,EAAY+rB,GAG9C,SAASgB,EAAalpD,EAAMkoD,GACxB,OAAOloD,EAAK+c,iBAAiB4E,QAAQ7E,GAAWA,EAAOorC,WAAaA,IAAU/7E,OAOlF,OALA5F,KAAK6vB,MAAMlb,SAAS8kB,IAChB,MAAMopD,EAAcF,EAAalpD,EAAMkoD,GACvCe,EAAiBG,EAAcH,EAAiBG,EAAcH,EAC9DE,EAAiBC,EAAcD,EAAiBC,EAAcD,KAE3DF,EAAiBE,EAG5BE,eAGI,MAAMC,EAAyB/iF,KAAKyiF,uBAAyBxB,GAAOe,gBAAkBhiF,KAAK2hF,SAErFz3C,EAAWlqC,KAAKkuB,QAAQgc,UAAY,EAGpC0rB,EAAa51D,KAAK6vB,MAAM,GAC9B,IAAImG,EACJ,GAAIh2B,KAAK2hF,WAAaV,GAAOW,aAAc,CACvC5rD,EAAQ4/B,EAAW39B,aAAa0L,YAAY,GAAKs9C,GAAO3wE,QAAQ0yE,kBAEhE,IAAK,IAAIz6E,EAAI,EAAGA,EAAIvI,KAAK6vB,MAAMjqB,SAAU2C,EAAG,CACxC,MAAMkxB,EAAOz5B,KAAK6vB,MAAMtnB,GACxB,IAAI06E,EAAW,EACf,MAAM/rC,EAAKzd,EAAKM,qBACZmd,IACA+rC,EAAWh+E,KAAK2E,IAAIq5E,EAAU/rC,EAAGuE,WAAW/L,gBAEhD,MAAMwzC,EAAOzpD,EAAKyX,eAAe+xC,GAAYhC,GAAO3wE,QAAQ6yE,eAC5D,GAAI1pD,EAAKsV,WAAatV,EAAKyN,SAAU,CACjC,MAAM+oC,EAAQx2C,EAAKuV,qBAAuBxG,GAAKe,GACzC9P,EAAK6X,iBAAiB5G,KAAOu2C,GAAO3wE,QAAQ8yE,WAC5C3pD,EAAK6X,iBAAiB3G,MAAQs2C,GAAO3wE,QAAQ6yE,eACnDntD,EAAQ/wB,KAAKulC,IAAIylC,EAAOj6C,GACpBitD,EAAW,IACXjtD,EAAQ/wB,KAAKulC,IAAI04C,EAAMltD,UAKlC,CACD,IAAIqtD,EAAYpC,GAAO3wE,QAAQ2gE,WAE/BjxE,KAAK6vB,MAAMlb,SAAS2uE,IAChB,MAAMpsC,EAAKosC,EAAGvpD,qBACVmd,IACAmsC,EAAYp+E,KAAK2E,IAAIy5E,EAAWnsC,EAAGuE,WAAWhjB,UAAY,OAGlEzC,EAAQ4/B,EAAW39B,aAAa0L,YAAY0/C,GAAapC,GAAO3wE,QAAQ6yE,eACxE,IAAK,IAAI56E,EAAI,EAAGA,EAAIvI,KAAK6vB,MAAMjqB,SAAU2C,EACrC,GAAIvI,KAAK6vB,MAAMtnB,GAAGwmC,WAAa/uC,KAAK6vB,MAAMtnB,GAAG2+B,SAAU,CACnD,MAAMq8C,EAAWvjF,KAAK6vB,MAAMtnB,GAAGymC,qBAAuBxG,GAAKe,GACrDvpC,KAAK6vB,MAAMtnB,GAAG+oC,iBAAiB3G,MAAQs2C,GAAO3wE,QAAQ6yE,eACtDnjF,KAAK6vB,MAAMtnB,GAAG+oC,iBAAiB5G,KAAOu2C,GAAO3wE,QAAQ8yE,WACvDG,EAAWvtD,IACXA,EAAQutD,IAKxB,OAAOvtD,EAAQ+sD,EAAyB74C,EAE5Cp0B,OACI,MAAMggB,EAAM91B,KAAK6V,eACjB7V,KAAKmW,cAEL,MAAMy/C,EAAa51D,KAAK6vB,MAAM,GACxBs5B,EAAYnpD,KAAK6vB,MAAM7vB,KAAK6vB,MAAMjqB,OAAS,GAC5C5F,KAAKwhF,WAKNxhF,KAAK+1B,MAAQ6/B,EAAW9Z,cAAgB,EACxC97C,KAAKsK,MAAQ6+C,EAAUvN,eAAiB57C,KAAK+1B,MAAQ,IALrD/1B,KAAK+1B,MAAQ6/B,EAAWllB,WACxB1wC,KAAKsK,MAAQ6+C,EAAUzY,WAAa1wC,KAAK+1B,OAO7C/1B,KAAKg2B,MAAQh2B,KAAK8iF,eAClB,MAAMU,EAAgB,CAACl5E,EAAO6kB,IAAU7kB,EAAQ5G,EAAQyrB,EAAMxe,aAAarG,OAE3E,IAAIA,EAAQtK,KAAKkhF,iBAAiBlwC,OAAOwyC,EAAe,GACpDxjF,KAAKyhF,UACLn3E,EAAQtK,KAAKmhF,aAAanwC,OAAOwyC,EAAel5E,GAChDA,GAAsB,IAAbtK,KAAKg0B,OAElB,MACMyvD,EADoBzjF,KAAK+1B,MAAQ/1B,KAAKsK,MAAQ,EACPA,EAAQ,EAErD,GAAItK,KAAKwhF,UAAW,CAChB,MAAM5hC,EAAa5/C,KAAKsK,MAAQ,EAAIA,EAAQ,EAAI,EAE5Cs1C,EAAa,IACb9pB,EAAImpB,SAASj/C,KAAK+1B,MAAO/1B,KAAKg2B,MAAO4pB,EAAY,GACjD9pB,EAAImpB,SAASj/C,KAAK+1B,MAAQ/1B,KAAKsK,MAAQ,EAAIA,EAAQ,EAAI,EAAGtK,KAAKg2B,MAAO4pB,EAAY,GAClF9pB,EAAImpB,SAASj/C,KAAK+1B,MAAO/1B,KAAKg2B,OAASh2B,KAAK2hF,WAAaV,GAAOc,gBAAkB,EAAI,GAAI,EAAmB,GAAhB/hF,KAAK2hF,UAClG7rD,EAAImpB,SAASj/C,KAAK+1B,MAAQ/1B,KAAKsK,MAAOtK,KAAKg2B,OAASh2B,KAAK2hF,WAAaV,GAAOc,gBAAkB,EAAI,GAAI,EAAmB,GAAhB/hF,KAAK2hF,WAIvH,MAAMpX,EAAS18C,EAAOgV,mBAAmB5xB,aAAa,gBAAiB,GACvE,IAAIw4C,EAAW,EAMf,GALAzpD,KAAKkhF,iBAAiBvsE,SAASwa,IAC3BA,EAAM2I,OAAOhC,EAAK2tD,EAAmBh6B,EAAUzpD,KAAKg2B,MAAQh2B,KAAKg0B,MAAQ,EAAI,EAAIu2C,GACjF9gB,GAAY/lD,EAAQyrB,EAAMxe,aAAarG,UAGvCtK,KAAKyhF,QAAS,CACd,MAAMiC,EAAUD,EAAmBh6B,EAAwB,IAAbzpD,KAAKg0B,MAC7C2vD,EAA4B,IAAb3jF,KAAKg0B,MAC1B8B,EAAIQ,YACJR,EAAI2e,IAAIivC,EAAS1jF,KAAKg2B,MAAqB,IAAbh2B,KAAKg0B,MAAc2vD,EAAc,EAAa,EAAV1+E,KAAKC,IAAQ,GAC/E4wB,EAAI4e,YACJ5e,EAAIa,OACJb,EAAIQ,YACJR,EAAI2e,IAAIivC,EAAS1jF,KAAKg2B,MAAqB,IAAbh2B,KAAKg0B,MAAc2vD,EAAc,EAAa,EAAV1+E,KAAKC,IAAQ,GAC/E4wB,EAAI4e,YACJ5e,EAAIa,OACJ8yB,GAAyB,IAAbzpD,KAAKg0B,MACjBh0B,KAAKmhF,aAAaxsE,SAASwa,IACvBA,EAAM2I,OAAOhC,EAAK2tD,EAAmBh6B,EAAUzpD,KAAKg2B,MAAQh2B,KAAKg0B,MAAQ,EAAI,EAAIu2C,GACjF9gB,GAAY/lD,EAAQyrB,EAAMxe,aAAarG,YCtTvD,SAASs5E,GAAuB/zD,GAC5B,IAAIg0D,EAAU,EAQd,OAPAh0D,EAAMlb,SAAS8kB,IACPA,EAAK2e,UACL3e,EAAK2e,SAASzjC,SAASmvE,IACnBD,GAAWC,EAAQ9/E,KAAO,QAIlC6/E,GAAW,EACJr7C,GAAKgB,KAEThB,GAAKe,GAST,MAAMw6C,GAAY,IACZC,GAAa,IACbC,GAAY,IAElB,MAAM9pB,WAAavmD,EACtBnS,YAAYouB,EAAOg/B,GAAY,GAU3B,GATAtrD,QACAvD,KAAKkkF,MAAQ,EACblkF,KAAKs0B,QAAU,EAMft0B,KAAKmkF,wBAA0B,IAC1Bt0D,GAA0B,IAAjBA,EAAMjqB,OAChB,MAAM,IAAIzC,EAAa,eAAgB,+BAE3C,GAAqB,IAAjB0sB,EAAMjqB,OACN,MAAM,IAAIzC,EAAa,eAAgB,2BAI3C,GADAnD,KAAKiwB,MAAQJ,EAAM,GAAG6nB,oBAClB13C,KAAKiwB,OAASpC,EAAOksB,gBAAgB,KACrC,MAAM,IAAI52C,EAAa,eAAgB,mEAE3C,IAAIoF,EACAkxB,EAEJ,IADAz5B,KAAKkpC,eAAiBV,GAAKe,GACtBhhC,EAAI,EAAGA,EAAIsnB,EAAMjqB,SAAU2C,EAE5B,GADAkxB,EAAO5J,EAAMtnB,GACTkxB,EAAKsV,UAAW,CAChB/uC,KAAKkpC,eAAiBzP,EAAKuV,mBAC3B,MAGR,IAAI9F,EAAiBlpC,KAAKkpC,eAE1B,GAAI2lB,GAAahsD,EAAYgtB,EAAM,IAC/BqZ,EAAiB06C,GAAuB/zD,QAEvC,GAAIg/B,GAAa5rD,EAAU4sB,EAAM,IAAK,CAEvC,MAAMu0D,EAAcv0D,EAAMmhB,QAAO,CAACqzC,EAAM5qD,IAAS4qD,EAAO5qD,EAAKuV,oBAAoB,GACjF9F,EAAiBk7C,GAAe,EAAI57C,GAAKe,GAAKf,GAAKgB,KAGvD,IAAKjhC,EAAI,EAAGA,EAAIsnB,EAAMjqB,SAAU2C,EAC5BkxB,EAAO5J,EAAMtnB,GACTsmD,IACAp1B,EAAK4zB,iBAAiBnkB,GACtBlpC,KAAKkpC,eAAiBA,GAE1BzP,EAAKyhB,QAAQl7C,MAEjBA,KAAKy3C,eAAgB,EACrBz3C,KAAK6vB,MAAQA,EACb7vB,KAAKwzB,WAAaxzB,KAAKmtD,eACvBntD,KAAKskF,iBAAmB,GACxBtkF,KAAKqiC,eAAiB,CAClB+3B,WAAY,EACZmqB,UAAW,IACXC,WAAY,IACZC,iBAAkB,GAClBC,WAAY,IACZC,eAAe,EACfC,kBAAmB,EACnBvqB,oBAAqB,GACrBwqB,YAAY,EACZC,qBAAsB,IAGnBpjF,sBACP,OAAOG,EAASs4D,KAGpBnrB,mBACI,OAAOhvC,KAAKkpC,eAOhB3jC,4BAA4Bw/E,GACnBA,GAAyB,MAAbA,IACbA,EAAW,OAEf,MAkBMtqB,EAlBW,CACb,MAAO,CAAC,OACR,MAAO,CAAC,OACR,MAAO,CAAC,OACR,MAAO,CAAC,OACR,MAAO,CAAC,OACR,MAAO,CAAC,OACR,MAAO,CAAC,OACR,MAAO,CAAC,OACR,MAAO,CAAC,OACR,MAAO,CAAC,OACR,MAAO,CAAC,OACR,MAAO,CAAC,OACR,OAAQ,CAAC,QACT,OAAQ,CAAC,QACT,OAAQ,CAAC,QACT,OAAQ,CAAC,SAEWsqB,GACxB,QAAenhF,IAAX62D,EAiBA,OAAOA,EAAOrnD,KAAKsnD,IAAU,IAAIv1D,GAAWkD,MAAMqyD,KAjB5B,CAGtB,MAAMsqB,EAAYngF,SAASkgF,EAASv8E,MAAM,KAAK,GAAI,IAC7Cy8E,EAAYpgF,SAASkgF,EAASv8E,MAAM,KAAK,GAAI,IAEnD,GADoBw8E,EAAY,GAAM,EAElC,MAAO,CAAC,IAAI7/E,EAAS,EAAG8/E,IAEvB,GAAIA,EAAY,EACjB,MAAO,CAAC,IAAI9/E,EAAS,EAAG8/E,IAEvB,GAAIA,GAAa,EAClB,MAAO,CAAC,IAAI9/E,EAAS,EAAG8/E,IAMhC,MAAO,CAAC,IAAI9/E,EAAS,EAAG,IAS5BI,wBAAwB+gC,EAAO4C,EAAgBuxB,GAC3C,OAAON,GAAK+qB,cAAc5+C,EAAME,eAAgB,CAAEi0B,OAAAA,EAAQvxB,eAAAA,IA2B9D3jC,qBAAqBsqB,EAAOs1D,EAAS,IAC5BA,EAAO1qB,QAAW0qB,EAAO1qB,OAAO70D,SACjCu/E,EAAO1qB,OAAS,CAAC,IAAIt1D,EAAS,EAAG,KAGrC,MAAMigF,EAAaD,EAAO1qB,OAAOrnD,KAAKsnD,IAClC,IAAKA,EAAM9zD,SACP,MAAM,IAAIzD,EAAa,oBAAqB,0DAEhD,OAAOu3D,EAAMnzD,QAAQX,SAASinB,EAAO9V,WAAY,MAE/CstE,EAAmBx1D,EACzB,IAAIy1D,EAAmB,EACnBC,EAAa,GACbC,EAAe,GAInB,SAASC,IACDL,EAAWx/E,OAAS,EAAI0/E,EACxBA,GAAoB,EAGpBA,EAAmB,GAG3B,WACI,IAAII,EAAY,GAEZC,EAAyB,IAAIxgF,EAAS,EAAG,GAC7CkgF,EAAiB1wE,SAASixE,IAEtB,GADAF,EAAY,GACRE,EAAgBn/C,oBAGhB,OAFA8+C,EAAW/wE,KAAKgxE,QAChBA,EAAeE,GAGnBF,EAAahxE,KAAKoxE,GAClB,MAAMC,EAAgBT,EAAWE,GAAkB/9E,QAC7CiwD,GAxBSsuB,EAwBkBN,EAvB9BM,EAAS90C,QAAO,CAACqzC,EAAM5qD,IAASA,EAAKkN,WAAWp/B,QAAQnB,IAAIi+E,IAAO,IAAIl/E,EAAS,EAAG,KAuBvCiB,IAAIu/E,GAxB3D,IAAuBG,EA0Bf,MAAMC,EAAal4D,EAAO0+B,iBAAiBq5B,EAAgBjrC,eAAiB,EAK5E,GAJIorC,GAAcH,EAAgBtvC,cAC9BuvC,EAAczgF,WAAa,GAG3BoyD,EAAWrwD,YAAY0+E,GAAgB,CAGvC,IAAKE,EAAY,CACb,MAAMtsD,EAAO+rD,EAAazuC,MACtBtd,GACAisD,EAAUlxE,KAAKilB,GAEvB8rD,EAAW/wE,KAAKgxE,GAKhB,GACIG,EAAyBnuB,EAAW7wD,SAASy+E,EAAWE,IACxDG,UACKE,EAAuBv+E,kBAAkBg+E,EAAWE,KAC7DE,EAAeE,OAEVluB,EAAW1wD,OAAO++E,KACvBN,EAAW/wE,KAAKgxE,GAChBG,EAAyB,IAAIxgF,EAAS,EAAG,GACzCqgF,EAAeE,EACfD,QAIJD,EAAa5/E,OAAS,GACtB2/E,EAAW/wE,KAAKgxE,GA6GxBQ,GA3FA,WACI,MAAMC,EAAkB,GACxBV,EAAW5wE,SAAS+lD,IAChB,IAAIwrB,EAAY,GAChBxrB,EAAM/lD,SAAQ,CAAC8kB,EAAMxnB,EAAOyoD,KACxB,MAAMyrB,EAA0B,IAAVl0E,GAAeA,IAAUyoD,EAAM90D,OAAS,EACxDw9B,EAAWs3B,EAAMzoD,EAAQ,GACzBm0E,GAAoBjB,EAAOkB,YAAc5sD,EAAKyN,SAC9Co/C,EAA0BnB,EAAOkB,YAAclB,EAAOoB,kBAAoB9sD,EAAKyN,UAAYi/C,EACjG,IAAIK,GAAoB,EACxB,GAAIrB,EAAOsB,0BAA4BrjD,IAAa3J,EAAKyN,WAAa9D,EAAS8D,SAAU,CACrF,MAAMw/C,EAAgBtjD,EAAS4L,mBAE/Bw3C,EADyB/sD,EAAKuV,qBACW03C,EAE7C,MAAMC,EAAuB9hF,SAAS40B,EAAKkhB,cAAe,IAAM,EAE5CyrC,GAAoBE,GAA2BE,GAAqBG,GAGhFT,EAAUtgF,OAAS,GACnBqgF,EAAgBzxE,KAAK0xE,GAKzBA,EAAYM,EAAoB,CAAC/sD,GAAQ,IAIzCysD,EAAU1xE,KAAKilB,MAInBysD,EAAUtgF,OAAS,GACnBqgF,EAAgBzxE,KAAK0xE,MAG7BX,EAAaU,EAsDjBW,GAnDIrB,EAAW5wE,SAAS+lD,IAChB,IAAI5rB,EACJ,GAAIq2C,EAAOsB,yBAA0B,CACjC,MAAMhtD,EAclB,SAAuBihC,GACnB,IAAK,IAAInyD,EAAI,EAAGA,EAAImyD,EAAM90D,OAAQ2C,IAAK,CACnC,MAAMkxB,EAAOihC,EAAMnyD,GACnB,IAAKkxB,EAAKyN,SACN,OAAOzN,EAGf,OAAO,EArBcotD,CAAcnsB,GAC3B5rB,EAAgBrV,EAAOA,EAAKuV,mBAAqBxG,GAAKe,QAIlDuF,EADAq2C,EAAOj8C,eACSi8C,EAAOj8C,eAGP06C,GAAuBlpB,IAevD,SAA4BA,EAAO95B,GAC/B85B,EAAM/lD,SAAS8kB,IACXA,EAAK4zB,iBAAiBzsB,MAdtBkmD,CAAmBpsB,EAAO5rB,MAwClC,MAAMi4C,EA7GKxB,EAAWnqC,QAAQsf,IACtB,GAAIA,EAAM90D,OAAS,EAAG,CAClB,IAAIohF,GAAW,EAMf,OALAtsB,EAAM/lD,SAAS8kB,IACPA,EAAKie,qBAAuB7pB,EAAOksB,gBAAgB,OACnDitC,GAAW,MAGZA,EAEX,OAAO,KAqGTC,EAxBN,WACI,MAAMC,EAAgB,GAYtB,OAVA3B,EAAW5wE,SAAS+lD,IAChB,IAAInkB,EACJmkB,EAAM/lD,SAAS8kB,IACX,MAAM0tD,EAAa1tD,EAAK6c,YACpB6wC,GAAc5wC,IAAW4wC,IACzB5wC,EAAS4wC,EACTD,EAAc1yE,KAAK+hC,UAIxB2wC,EAWQE,GAEb7tB,EAAQ,GA+Bd,OA9BAwtB,EAAiBpyE,SAAS+lD,IACtB,MAAM3f,EAAO,IAAIof,GAAKO,GAClByqB,EAAOR,gBACP5pC,EAAK1Y,eAAesiD,eAAgB,GAEpCQ,EAAOkC,mBACPtsC,EAAK1Y,eAAeilD,sBAAwBz5D,EAAOksB,gBAAgBorC,EAAOkC,oBAEpD,IAAtBlC,EAAON,aACP9pC,EAAK1Y,eAAewiD,YAAa,EACjC9pC,EAAK1Y,eAAeklD,iBAAmBpC,EAAOoC,kBAElDhuB,EAAM/kD,KAAKumC,MAGfksC,EAAWtyE,SAAS4hC,IAEhB,MAAM3V,EAAY2V,EAAO1mB,MAAM,GAAGqZ,iBAAmBV,GAAKgB,KAAOw3C,GAAerxC,OAASqxC,GAAe/yC,IACxGsI,EAAOmrC,kBAAkB9gD,GAEzB,IAAI4gD,GAAY,EAChB,IAAK,IAAIj5E,EAAI,EAAGA,EAAIguC,EAAO1mB,MAAMjqB,OAAQ2C,IAAK,CAE1C,IADaguC,EAAO1mB,MAAMtnB,GAChB0yC,UAAW,CACjBumC,GAAY,EACZ,OAGRjrC,EAAO2rC,aAAaV,MAEjBjoB,EAGX7C,WACI,OAAO12D,KAAK6vB,MAGhBs9B,eAGI,OAFmBntD,KAAK6vB,MAAMzc,KAAKqmB,GAASA,EAAKoV,WAAWrb,aAC5Bwd,QAAO,CAACpnC,EAAK49E,IAAeA,EAAY59E,EAAM49E,EAAY59E,IAI9F69E,iBAAiBC,GAEb,OADA1nF,KAAKskF,iBAAmBoD,EACjB1nF,KAeX2nF,qBAAqBrO,EAAWsO,GAE5B,OADA5nF,KAAKmkF,wBAAwB7K,GAAasO,EACnC5nF,KAMX6nF,uBAAuBvO,GAEnB,cADOt5E,KAAKmkF,wBAAwB7K,GAC7Bt5E,KAGX8nF,UAAUnkF,EAAGyyD,EAAYC,EAAY6tB,GACjC,OAAO7tB,GAAc1yD,EAAIyyD,GAAc8tB,EAG3C6D,iBACI,MAAM,MAAEl4D,EAAOqZ,eAAgB4F,EAAezM,gBAAgB,UAAEkiD,EAAS,UAAEC,EAAS,iBAAEC,EAAgB,WAAEC,IAAkB1kF,KACpHgoF,EAAYn4D,EAAM,GAClBo4D,EA1bd,SAAsBD,EAAWz9B,GAC7B,MAAM29B,EAAgBF,EAAU12C,iBAAiB5G,KAC3Cy9C,EAAaH,EAAUt3C,WAG7B,OAFqB6Z,EAASjZ,iBAAiB5G,KAExBw9C,IADL39B,EAAS7Z,WAC0By3C,GAqb5BC,CAAaJ,EAAWn4D,EAAMA,EAAMjqB,OAAS,IAC5D2sC,GAAagyC,EAAYC,GAAaC,EAC5C,IAAI4D,EAAU7iF,OAAO8iF,UACjBC,EAAY,EACZ3wD,EAAS,EAEb,IAAK,IAAIssD,EAAQM,EAAWN,GAASK,EAAWL,GAAS3xC,EAAW,CAChE,IAAIi2C,EAAqB,EACrBC,EAAa,EAEjB,IAAK,IAAIlgF,EAAI,EAAGA,EAAIsnB,EAAMjqB,SAAU2C,EAAG,CACnC,MAAMkxB,EAAO5J,EAAMtnB,GACnB,GAAIkxB,EAAKsV,WAAatV,EAAKyN,SAAU,CACjC,MAAMwhD,EAAmB1oF,KAAK8nF,UAAUruD,EAAKiX,WAAYs3C,EAAUt3C,WAAYs3C,EAAU12C,iBAAiB5G,KAAMw5C,GAASuE,EACnH50C,EAAWpa,EAAK6X,iBAAiB5G,KAEvC,GAAImJ,EAAW/E,EAAgB45C,EAAmB55C,EAAe,CAC7D,MAAM65C,EAAO1jF,KAAK4C,IAAIgsC,EAAW60C,GACjCD,GAAcE,GAAQ75C,EACtB05C,GAAsBG,EAAOpgF,OAI7BigF,IAAuB30C,EAAW60C,GAAoB55C,GAMlE,MAAM85C,EAAaX,EAAe,EAI5BnH,EAAO4D,EAHaz/E,KAAK4C,IAAI+gF,EAAa1E,GAGFj/E,KAAK4C,IAAI2gF,GAEnD1H,EAAOuH,IACPA,EAAUvH,EACVyH,EAAYrE,EACZtsD,EAAS6wD,GAGjBzoF,KAAKkkF,MAAQqE,EACbvoF,KAAKs0B,QAAUsD,EAGnBixD,qBACI,MAAM,MAAEh5D,EAAK,eAAEqZ,EAAgB7G,gBAAgB,WAAE+3B,EAAU,qBAAE0qB,EAAoB,iBAAEyC,IAAwBvnF,KAG3G,IAAIo6E,EAAQ,EACR0O,EAAW,EACXC,EAAmB,EACnBC,EAAiB,EACrB,IAAK,IAAIzgF,EAAI,EAAGA,EAAIsnB,EAAMjqB,OAAQ2C,IAAK,CAEnC,MAAMkxB,EAAO5J,EAAMtnB,GACbsrC,EAAWpa,EAAK6X,iBAAiB5G,KACvC0vC,GAASvmC,EAGL3K,IAAmBV,GAAKgB,MAAQw/C,EAAiBn1C,GACjDm1C,EAAiBn1C,EACjBi1C,EAAW7jF,KAAK2E,OAAO6vB,EAAKsX,SAC5Bg4C,EAAmBtvD,EAAK0zB,gBAEnBjkB,IAAmBV,GAAKe,KAA0B,IAAnBy/C,GAAwBA,EAAiBn1C,KAC7Em1C,EAAiBn1C,EACjBi1C,EAAW7jF,KAAKulC,OAAO/Q,EAAKsX,SAC5Bg4C,EAAmBtvD,EAAK0zB,gBAKhC,IAAI2e,EAASsO,EAAQvqD,EAAMjqB,OAK3B,MACMqjF,EAAcnE,EAAuBiE,GADZ,IAAb3uB,GAEZ8uB,EAAYJ,EAAWG,GAAe//C,EACxCA,IAAmBV,GAAKgB,MAAQsiC,EAASod,EACzCpd,EAASgd,EAAWG,EAEf//C,IAAmBV,GAAKe,IAAMuiC,EAASod,IAC5Cpd,EAASgd,EAAWG,GAEnB1B,GAIIr+C,IAAmBV,GAAKgB,MAAQsiC,EAASyb,GAGzCr+C,IAAmBV,GAAKe,IAAMuiC,EAASyb,KAF5CvnF,KAAKqiC,eAAeklD,iBAAmBzb,GAHvC9rE,KAAKqiC,eAAeklD,iBAAmBzb,EAS3C9rE,KAAKkkF,MAAQ,EACblkF,KAAKs0B,QAAU,EAGnB60D,iBAGI,IAAIC,EAFcppF,KAAK6vB,MAAM,GACGyhB,iBAAiB5G,KAOjD,OAHI1qC,KAAKqiC,eAAewiD,YAAc7kF,KAAKqiC,eAAeklD,mBACtD6B,EAAQppF,KAAKqiC,eAAeklD,kBAEzB6B,EAMXC,sBACI,MAAM,MAAEx5D,EAAK,MAAEq0D,EAAK,QAAE5vD,EAAO,eAAE4U,EAAc,WAAE1V,EAAY6O,gBAAgB,cAAEsiD,EAAa,kBAAEC,EAAiB,WAAExqB,IAAkBp6D,KAC3HgoF,EAAYn4D,EAAM,GAClBq4D,EAAgBloF,KAAKmpF,iBACrBhB,EAAaH,EAAUt3C,WAC7B,IAAK,IAAInoC,EAAI,EAAGA,EAAIsnB,EAAMjqB,SAAU2C,EAAG,CACnC,MAAMkxB,EAAO5J,EAAMtnB,GACbqqB,EAAO6G,EAAK0V,UAClB,GAAIvc,EAAM,CACN,MAAMuiC,EAAQ17B,EAAKiX,YACXhG,KAAMmJ,GAAapa,EAAK6X,iBAC1Bg4C,EAAiBtpF,KAAK8nF,UAAU3yB,EAAOgzB,EAAYD,EAAehE,GAAS5vD,EAC3Ei1D,EAAmB32D,EAAKmX,eACxBy/C,EAAgBtgD,IAAmBV,GAAKe,GAAKsK,EAAWy1C,EAAiBA,EAAiBz1C,EAGhG,GAFAjhB,EAAKiX,aAAa0/C,EAAmBC,GACrC52D,EAAKoY,sBACDvR,EAAKyN,UAAYy9C,EAAe,CAChC,MACM8E,GAAkBj2D,EAAa,GADnB4mC,EACoC,IADpCA,EAElBxnC,EAAKgY,eAAc,GAAME,YAAW,EAAM2+C,EAAiB7E,MAM3E8E,oBAAoBt7D,EAAUu7D,EAAWntB,EAAMotB,EAAWtQ,GACtD,GAAiB,MAAblrD,EACA,OAAO21D,GAEX,MAAM8F,EAAsB7pF,KAAKmkF,wBAAwB7K,GACzD,GAAIuQ,EACA,OAAOA,EACX,MAAMC,EAAkB,GAAGj8D,EAAO0+B,iBAAiBn+B,GAAY,EACzD27D,EAAsBJ,EAAY97D,EAAOksB,gBAAgB+vC,GACzDE,EAAsBJ,EAAY/7D,EAAOksB,gBAAgB+vC,GACzDG,EAAiBztB,EAAO3uC,EAAOksB,gBAAgB+vC,GACrD,OAAIC,GAAuBC,GAAuBC,EACvChG,GAEF8F,IAAwBC,GAAuBC,EAC7ClG,IAEDgG,GAAuBC,GAAuBC,EAC7CjG,GAEJhkF,KAAK0pF,oBAAoBI,EAAiBH,EAAWntB,EAAMotB,EAAWtQ,GAGjF4Q,aAAa97D,GACT,MAAM+7D,EAAmBt8D,EAAOksB,gBAAgB3rB,GAChD,IAAIg8D,GAAe,EACnB,MAAMC,EAAa,GACnB,IAAIC,EACJ,MAAMjwB,EAAsBr6D,KAAKqiC,eAAeg4B,oBAChD,IAAIkwB,GAAwB,EACxBC,EAAa,EACjB,IAAK,IAAIjiF,EAAI,EAAGA,EAAIvI,KAAK6vB,MAAMjqB,SAAU2C,EAAG,CACxC,MAAMkxB,EAAOz5B,KAAK6vB,MAAMtnB,GAGxBiiF,GADc/wD,EAAKkN,WAAWvlC,QAE9B,IAAIqpF,GAAe,EAEf5lF,SAASupB,EAAU,KAAO,IAE1Bq8D,GAAqD,IAAtCzqF,KAAKskF,iBAAiB78C,QAAQl/B,GAGzCvI,KAAKqiC,eAAeilD,uBAAyBkD,GAAcxqF,KAAKqiC,eAAeilD,wBAC/EkD,EAAa,EACbC,GAAe,IAGvB,MAAMR,EAAiBxwD,EAAKie,oBAAsByyC,EAC5Cl/C,EAASxR,EAAKiX,WAAalI,GAAKiB,MAAQ,EAGxCmgB,EAAY5pD,KAAK6vB,MAAMtnB,EAAI,GAC3BmiF,EAAY1qF,KAAK6vB,MAAMtnB,EAAI,GAC3ByhF,EAAsBU,GAAaA,EAAUhzC,oBAAsByyC,EACnEJ,EAAsBngC,GAAaA,EAAUlS,oBAAsByyC,EACnEQ,EAAa/gC,GAAa8gC,GAAaT,IAAmBF,IAAwBC,EAExF,GAAIC,EAEA,GAAIG,EAGAE,EAAeD,EAAWA,EAAWzkF,OAAS,GAC9C0kF,EAAalsC,IAAMnT,EAEfw/C,IACAL,GAAe,EACXM,IAAcV,QAA4CpmF,IAArB0mF,EAAalsC,MAGlDksC,EAAalsC,IAAMksC,EAAaliD,MAAQiyB,QAI/C,CAID,GAFAiwB,EAAe,CAAEliD,MAAO6C,EAAQmT,SAAKx6C,GACrCwmF,GAAe,EACXO,EAAY,CAEZ,MAAMhB,EAAY//B,EAAUlS,oBACtBkyC,EAAYc,EAAUhzC,oBACtB8kB,EAAO/iC,EAAKie,oBACZkzC,EAAiB5qF,KAAK0pF,oBAAoBt7D,EAAUu7D,EAAWntB,EAAMotB,EAAWrhF,GAClF,CAACw7E,GAAWE,IAAWtwE,SAASi3E,GAChCN,EAAalsC,IAAMksC,EAAaliD,MAAQiyB,EAGxCiwB,EAAalsC,IAAMksC,EAAaliD,MAAQiyB,OAGtC2vB,EAYDS,IAGLH,EAAalsC,IAAMksC,EAAaliD,MAAQiyB,EACxC+vB,GAAe,GAXXE,EAAalsC,KAHZmsC,GAA+B,IAANhiF,IAAYmiF,EAGnBJ,EAAaliD,MAAQiyB,EAIrBiwB,EAAaliD,MAAQiyB,EAShDgwB,EAAW71E,KAAK81E,QAKpBF,GAAe,EAInBG,EAAwBE,EAG5B,MAAMI,EAAYR,EAAWA,EAAWzkF,OAAS,GAIjD,OAHIilF,QAA+BjnF,IAAlBinF,EAAUzsC,MACvBysC,EAAUzsC,IAAMysC,EAAUziD,MAAQiyB,GAE/BgwB,EAGXS,UAAUh1D,GACN91B,KAAK6vB,MAAMlb,SAAS8kB,IAChB,MAAM7G,EAAO6G,EAAK0V,UAClB,GAAIvc,EAAM,CACN,MAAMqY,EAASxR,EAAKiX,WACpB9d,EAAK+W,mBAAmBsB,EAAQA,GAChCrY,EAAKjc,WAAWmf,GAAKhgB,UAE1B9V,MAGP+qF,cAAcj1D,GACV,MAAMk1D,EAAuB,CAAC,IAAK,IAAK,KAAM,KAAM,MAC9ChD,EAAYhoF,KAAK6vB,MAAM,GAC7B,IAAIu5D,EAAQppF,KAAKmpF,iBACjB,MAAMhB,EAAaH,EAAUt3C,WACvBu6C,EAAgBjrF,KAAKqiC,eAAe+3B,WAAap6D,KAAKkpC,eAE5D,IAAK,IAAI3gC,EAAI,EAAGA,EAAIyiF,EAAqBplF,SAAU2C,EAAG,CAClD,MAAM6lB,EAAW48D,EAAqBziF,GAChC2iF,EAAYlrF,KAAKkqF,aAAa97D,GACpC,IAAK,IAAIu1B,EAAI,EAAGA,EAAIunC,EAAUtlF,SAAU+9C,EAAG,CACvC,MAAMwnC,EAAYD,EAAUvnC,GACtBynC,EAAaD,EAAU/iD,MACvBijD,EAAarrF,KAAK8nF,UAAUsD,EAAYjD,EAAYiB,EAAOppF,KAAKkkF,OAChEoH,EAAYH,EAAU/sC,IAC5B,IAAIktC,EAaA,MAAM,IAAInoF,EAAa,cAAe,wBAb3B,CACX,MAAMooF,EAAYvrF,KAAK8nF,UAAUwD,EAAWnD,EAAYiB,EAAOppF,KAAKkkF,OACpEpuD,EAAIuV,UAAU,OAAQrrC,KAAK0S,aAAa,OACxCojB,EAAIQ,YACJR,EAAIS,OAAO60D,EAAYC,GACvBv1D,EAAIU,OAAO40D,EAAYC,EAAaJ,GACpCn1D,EAAIU,OAAO80D,EAAY,EAAGC,EAAYN,GACtCn1D,EAAIU,OAAO80D,EAAY,EAAGC,GAC1Bz1D,EAAI4e,YACJ5e,EAAIa,OACJb,EAAIyV,cAMZ69C,GAAyB,IAAhB6B,GAIjB3zC,YACI,OAAOt3C,KAOXw3C,aACQx3C,KAAKy3C,gBAGLx0C,EAAUjD,KAAK6vB,MAAM,KAAO7vB,KAAKqiC,eAAewiD,WAChD7kF,KAAK6oF,qBAGL7oF,KAAK+nF,iBAET/nF,KAAKqpF,sBACLrpF,KAAKy3C,eAAgB,GAGzB3hC,OACI,MAAMggB,EAAM91B,KAAK6V,eACjB7V,KAAKmW,cACDnW,KAAK+lF,aAEJ/lF,KAAKy3C,eACNz3C,KAAKw3C,aAETx3C,KAAK8qF,UAAUh1D,GACf91B,KAAK6U,aACL7U,KAAK+qF,cAAcj1D,GACnB91B,KAAK0V,iBCvyBN,MAAM81E,WAAiB9oF,GAC1BjB,YAAYqQ,EAAM3D,EAAMqgC,GACpBjrC,MAAM,CAAE6qB,SAAU,MAClBpuB,KAAK8R,KAAOA,EACZ9R,KAAKyrF,SAAW,IAAIvhB,GAAKp4D,EAAM3D,EAAMqgC,GACrCxuC,KAAK+tB,KAAO/tB,KAAKyrF,SAAS19D,KAC1B/tB,KAAKmvB,MAAQ,IAAIG,EAAMtvB,KAAK+tB,KAAK1qB,KAAMrD,KAAK+tB,KAAKiG,OACjDh0B,KAAKu5B,SAASv5B,KAAKmvB,MAAMxe,aAAarG,OAEtCtK,KAAKo1C,cAAe,EAEb1zC,sBACP,OAAOG,EAAS2pF,SAGpBxtC,QAAQlsC,EAAM3D,EAAMqgC,GAMhB,OALAxuC,KAAK8R,KAAOA,EACZ9R,KAAKyrF,SAAW,IAAIvhB,GAAKp4D,EAAM3D,EAAMqgC,GACrCxuC,KAAK+tB,KAAO/tB,KAAKyrF,SAAS19D,KAC1B/tB,KAAKmvB,MAAQ,IAAIG,EAAMtvB,KAAK+tB,KAAK1qB,KAAMrD,KAAK+tB,KAAKiG,OACjDh0B,KAAKu5B,SAASv5B,KAAKmvB,MAAMxe,aAAarG,OAC/BtK,KAGXosE,UACI,OAAOpsE,KAAK+tB,KAGhBpX,WAAW7B,GAGP,OAFAvR,MAAMoT,WAAW7B,GACjB9U,KAAKmvB,MAAMxY,WAAW3W,KAAK0W,cACpB1W,KAGXyW,iBACI,OAAOlT,MAAMkT,iBAIjBwgC,qBAAqBC,GAEjB,OAAOl3C,KAEXs3C,YAEI,OADAt3C,KAAKu3C,cAAe,EACbv3C,KAGX8V,OACI,IAAIlI,EACJ,MAAMspB,EAAQl3B,KAAKi4B,aACdj4B,KAAKmvB,MAAMzY,cACZ1W,KAAKmvB,MAAMxY,WAAW3W,KAAK0W,cAE/B1W,KAAKmW,cACL,MAAMu1E,EAAQ1rF,KAAK83C,eAKnB,GAJA93C,KAAKmvB,MAAM8H,SAASC,GACpBl3B,KAAKmvB,MAAMmI,UAAUJ,EAAMyM,YAAsC,QAAzB/1B,EAAK5N,KAAK+tB,KAAK/pB,YAAyB,IAAP4J,EAAgBA,EAAK,GAAKspB,EAAMiB,iBACzGn4B,KAAKmvB,MAAM+I,cAAcwzD,QAEQ9nF,IAA7B5D,KAAKyrF,SAASj9C,WAA0B,CACxC,MAAM67B,EAAa,IAAI/6C,EAAMtvB,KAAKyrF,SAASj9C,WAAWnrC,KAAMrD,KAAKyrF,SAASj9C,WAAWxa,OAChFq2C,EAAW3zD,cACZ2zD,EAAW1zD,WAAW3W,KAAK0W,cAE/B2zD,EAAWpzC,SAASC,GACpBmzC,EAAW/yC,UAAUJ,EAAMyM,YAAY3jC,KAAKyrF,SAASj9C,WAAWxqC,MAAQkzB,EAAMiB,iBAC9EkyC,EAAWjzC,UAAUp3B,KAAKyrF,SAASj9C,WAAWna,SAC9Cg2C,EAAWnyC,cAAcwzD,KCvC9B,MAAMC,WAAkBjpF,GAE3BjB,YAAYs2C,GACRx0C,MAAMw0C,GACN/3C,KAAKkuB,QAAU,CAEX09D,YAAa,EACbC,aAAc,EAEdv3D,QAAS,GAGbt0B,KAAK8rF,aAAc,EAEnB9rF,KAAKgE,KAAO+zC,EAAW/zC,MAAQ,EAE/BhE,KAAKuK,OAAS,GAGP7I,sBACP,OAAOG,EAAS8pF,UAGpB9/B,QAAQ7nD,GAEJ,OADAhE,KAAKgE,KAAOA,EACLhE,KAGX+rF,UAAUxhF,GAEN,OADAvK,KAAKuK,OAASA,EACPvK,KAIXgsF,eAAeC,GAEX,OADAjsF,KAAK8rF,YAAcG,EACZjsF,KAGXs3C,YAEI,OADAt3C,KAAKu3C,cAAe,EACbv3C,KAGX8V,OACI,MAAMggB,EAAM91B,KAAK6V,eACXqhB,EAAQl3B,KAAKi4B,aACnBj4B,KAAKmW,cACL,MAAM+1E,EAAelsF,KAAK26B,iBACpBwxD,EAAexxB,GAAY4D,eAAe2tB,GAC1CE,EAAUpsF,KAAK83C,eACfm6B,EAAQka,EAAeA,EAAarjF,OAASouB,EAAMpuB,OAASouB,EAAMzH,WAClE/mB,EAAIwuB,EAAMyM,YAAY3jC,KAAKgE,MAAQ,GAAK,GA5EtD,YAAcD,GACN4nF,GAAUvpD,OACVv+B,EAAI,qBAAsBE,GA2E1B,CAAE,WAAY/D,KAAK8rF,YAAc,eAAiB,aAAc9rF,KAAKuK,OAAQ,IAAK6hF,EAAUna,GAxEpG,SAAuBn8C,EAAK7H,GACxB,MAAMm+D,EAAUn+D,EAAOm+D,QACjBna,EAAQhkD,EAAOgkD,MACfvpE,EAAIulB,EAAOvlB,EACX2jF,EAAcp+D,EAAO1jB,OAAS,EACpCurB,EAAIQ,YACArI,EAAOq+D,SACPx2D,EAAIS,OAAO61D,EAAS1jF,EAAI2jF,GACxBv2D,EAAIU,OAAOy7C,EAAOvpE,GAClBotB,EAAIU,OAAO41D,EAAS1jF,EAAI2jF,KAGxBv2D,EAAIS,OAAO07C,EAAOvpE,EAAI2jF,GACtBv2D,EAAIU,OAAO41D,EAAS1jF,GACpBotB,EAAIU,OAAOy7C,EAAOvpE,EAAI2jF,IAE1Bv2D,EAAIrH,SACJqH,EAAI4e,YAwDA63C,CAAcz2D,EAAK,CACfs2D,QAASA,EAAUpsF,KAAKkuB,QAAQ09D,YAChC3Z,MAAOA,EAAQjyE,KAAKkuB,QAAQ29D,aAC5BnjF,EAAGA,EAAI1I,KAAKkuB,QAAQoG,QACpB/pB,OAAQvK,KAAKuK,OACb+hF,QAAStsF,KAAK8rF,eCzFnB,IAAIU,GD6FXb,GAAUvpD,OAAQ,EC5FlB,SAAWoqD,GACPA,EAAcA,EAAyB,UAAI,GAAK,YAChDA,EAAcA,EAAwB,SAAI,GAAK,WAFnD,CAGGA,KAAkBA,GAAgB,KAC9B,MAAMC,WAAc74E,EAOvBnS,YAAYirF,EAAMC,EAAIz+D,GAClB3qB,QACAvD,KAAKqiC,eAAiBhiC,OAAOgX,OAAO,CAAE0lC,UAAW,EAAG1oB,QAAS,EAAGC,QAAS,GAAIhB,SAAUk5D,GAAcI,UAAWC,aAAcL,GAAcI,UAAWE,QAAQ,EAAOC,IAAK,CACnK,CAAEppF,EAAG,EAAG+E,EAAG,IACX,CAAE/E,EAAG,EAAG+E,EAAG,MACVwlB,GACTluB,KAAK0sF,KAAOA,EACZ1sF,KAAK2sF,GAAKA,EAEHjrF,sBACP,OAAOG,EAAS4qF,MAET/zD,sBACP,OAAO8zD,GAEA3zD,4BACP,MAAO,CACHm0D,SAAUR,GAAcI,UACxBK,QAAST,GAAcU,UAG/B73B,SAASq3B,EAAMC,GACX,IAAKD,IAASC,EACV,MAAM,IAAIxpF,EAAa,eAAgB,kDAI3C,OAFAnD,KAAK0sF,KAAOA,EACZ1sF,KAAK2sF,GAAKA,EACH3sF,KAKX+1D,YACI,OAAQ/1D,KAAK0sF,OAAS1sF,KAAK2sF,GAE/BQ,YAAYl/D,GACR,MAAM6H,EAAM91B,KAAK6V,eACXwe,EAAUr0B,KAAKqiC,eAAehO,QAC9BC,EAAUt0B,KAAKqiC,eAAe/N,QAAUrG,EAAO2S,UAC/CwsD,EAAUn/D,EAAOm/D,QAAU/4D,EAC3Bg5D,EAAUp/D,EAAOo/D,QAAU/4D,EAC3Bg5D,EAASr/D,EAAOq/D,OAASj5D,EACzBk5D,EAASt/D,EAAOs/D,OAASj5D,EACzByoB,EAAY/8C,KAAKqiC,eAAe0a,UAChCgwC,EAAM/sF,KAAKqiC,eAAe0qD,KACxBppF,EAAG6pF,EAAM9kF,EAAG+kF,GAASV,EAAI,IACzBppF,EAAG28D,EAAM53D,EAAG63D,GAASwsB,EAAI,GAC3BW,GAAcJ,EAASF,IAAYL,EAAInnF,OAAS,GACtDkwB,EAAIQ,YACJR,EAAIS,OAAO62D,EAASC,GACpBv3D,EAAIY,cAAc02D,EAAUM,EAAaF,EAAMH,EAAUI,EAAOx/D,EAAO2S,UAAW0sD,EAASI,EAAaptB,EAAMitB,EAAShtB,EAAOtyC,EAAO2S,UAAW0sD,EAAQC,GACxJz3D,EAAIY,cAAc42D,EAASI,EAAaptB,EAAMitB,GAAUhtB,EAAOxjB,GAAa9uB,EAAO2S,UAAWwsD,EAAUM,EAAaF,EAAMH,GAAWI,EAAO1wC,GAAa9uB,EAAO2S,UAAWwsD,EAASC,GACrLv3D,EAAIrH,SACJqH,EAAI4e,YACJ5e,EAAIa,OAER7gB,OACI9V,KAAK6V,eACL7V,KAAKmW,cACL,MAAMy/C,EAAa51D,KAAK0sF,KAClBvjC,EAAYnpD,KAAK2sF,GACvB,IAAIS,EACAE,EACAD,EACAE,EACArkD,EAAiB,EACjBoZ,EAAS,QACTqrC,EAAa,QACjB,SAASxzD,EAAY7G,GACjB,MAA2B,iBAAbA,EAAwBm5D,GAAM5zD,eAAevF,GAAYA,EAE3E,MAAMA,EAAW6G,EAAYn6B,KAAKqiC,eAAe/O,UAC3Cu5D,EAAe1yD,EAAYn6B,KAAKqiC,eAAewqD,cAWrD,GAVIv5D,IAAak5D,GAAcU,WAC3B5qC,EAAS,OACTqrC,EAAa,QAEbd,IAAiBL,GAAcI,UAC/Be,EAAa,QAERd,IAAiBL,GAAcU,WACpCS,EAAa,QAEb/3B,EACAw3B,EAAUx3B,EAAWha,eACrB1S,EAAiB0sB,EAAW5mB,mBAC5Bq+C,EAAUz3B,EAAWtkB,iBAAiBgR,OAErC,CAED8qC,EADcjkC,EAAUlxB,aACR0+B,eAChB02B,EAAUlkC,EAAU7X,iBAAiBgR,GAEzC,GAAI6G,EACAmkC,EAASnkC,EAAUrN,cACnB5S,EAAiBigB,EAAUna,mBAC3Bu+C,EAASpkC,EAAU7X,iBAAiBq8C,OAEnC,CAEDL,EADc13B,EAAW39B,aACV2+B,aACf22B,EAAS33B,EAAWtkB,iBAAiBq8C,GASzC,OAPA3tF,KAAKmtF,YAAY,CACbC,QAAAA,EACAE,OAAAA,EACAD,QAAAA,EACAE,OAAAA,EACA3sD,UAAWsI,IAAiD,IAA/BlpC,KAAKqiC,eAAeyqD,QAAmB,EAAI,MAErE,GC3Hf,SAAS,MAAK/oF,GACN6pF,GAAOxrD,OACPv+B,EAAI,kBAAmBE,GAQ/B,SAAS8pF,GAAe5sF,GACpB,GAAI,kBAAmBA,EACnB,OAAOA,EAAE6sF,cACb,GAAI,YAAa7sF,EACb,OAAO4sF,GAAe5sF,EAAE8sF,SAC5B,MAAMA,EAAU9sF,EAChB,OAAuB,IAAnB8sF,EAAQnoF,OACDioF,GAAeE,EAAQ,IACX,IAAnBA,EAAQnoF,OACD,KACJmoF,EAAQ36E,IAAIy6E,IAKhB,MAAMD,GAGTnsF,YAAYusF,GACRhuF,KAAKguF,QAAUA,EACfhuF,KAAKgE,KAAO,GACZhE,KAAK+pD,IAAM,EACX/pD,KAAKiuF,UA5BQ,EAiCjB5lF,MAAMrE,GACFhE,KAAKgE,KAAOA,EACZhE,KAAK+pD,IAAM,EACX/pD,KAAKiuF,UApCQ,EAqCb,MAAMhhF,EAASjN,KAAKkuF,OAAOluF,KAAKguF,QAAQ9uC,SAExC,OADAjyC,EAAOghF,SAAWjuF,KAAKiuF,SAChBhhF,EAEXkhF,UAAUC,IAzCO,IA0CTpuF,KAAKiuF,WACLjuF,KAAKiuF,SAAWjuF,KAAK+pD,KACzB/pD,KAAK+pD,IAAMqkC,EAEfC,eACIruF,KAAKiuF,UA/CQ,EAmDjBK,WAAWC,EAAOC,GAAU,GACxB,MAAMC,EAASD,EAAU,IAAIE,OAAO,MAAQH,EAAQ,MAAQ,IAAIG,OAAO,MAAQH,EAAQ,UAEjFthF,EADcjN,KAAKgE,KAAKE,MAAMlE,KAAK+pD,KACd9pB,MAAMwuD,GACjC,OAAe,OAAXxhF,EACO,CACH0hF,SAAS,EACTb,cAAe7gF,EAAO,GACtB2hF,aAAc3hF,EAAO,GAAGrH,OACxBmkD,IAAK/pD,KAAK+pD,KAIP,CAAE4kC,SAAS,EAAO5kC,IAAK/pD,KAAK+pD,KAO3C8kC,UAAUC,EAAMC,GAAQ,GACpB,MAAMhB,EAAU,GACVhkC,EAAM/pD,KAAK+pD,IACjB,IAAIilC,GAAa,EACbC,GAAW,EAGf,GAFAF,GAAkB,IAAVA,IAAiC,IAAfD,EAAKC,MAE3BD,EAAKZ,OACL,IAAK,MAAMnhF,KAAQ+hF,EAAKZ,OAAQ,CAC5B,MAAMgB,EAAWlvF,KAAK+pD,IAChB98C,EAASjN,KAAKkuF,OAAOnhF,GAG3B,GAAIE,EAAO0hF,SAGP,GAFAZ,EAAQv5E,KAAKvH,GACbgiF,GAAW,EACPH,EAAKK,GACL,WAIJ,GADAH,GAAa,GACRF,EAAKK,GAAI,CACVnvF,KAAK+pD,IAAMmlC,EACX,OAKhB,MAAME,EAAUN,EAAKK,IAAMF,GAAaD,EAClCL,EAAUS,IAAoB,IAAVL,EACpBM,EAAaD,EAAS,EAAI,EAShC,OARIL,IAAUK,IACVpvF,KAAK+pD,IAAMA,GACX4kC,EACA3uF,KAAKquF,eAGLruF,KAAKmuF,UAAUpkC,GAEZ,CAAE4kC,QAAAA,EAASZ,QAAAA,EAASsB,WAAAA,GAI/BC,gBAAgBR,EAAMC,GAAQ,GAC1B,MAAMhB,EAAU,GACVhkC,EAAM/pD,KAAK+pD,IACjB,IAAIslC,EAAa,EACbE,GAAO,EACX,EAAG,CACC,MAAMtiF,EAASjN,KAAK6uF,UAAUC,GAC1B7hF,EAAO0hF,SAAW1hF,EAAO8gF,SACzBsB,IACAtB,EAAQv5E,KAAKvH,EAAO8gF,UAGpBwB,GAAO,QAENA,GACT,MAAMZ,EAAUU,EAAa,IAAe,IAAVN,EASlC,OARIA,GAAWM,EAAa,IACxBrvF,KAAK+pD,IAAMA,GACX4kC,EACA3uF,KAAKquF,eAGLruF,KAAKmuF,UAAUpkC,GAEZ,CAAE4kC,QAAAA,EAASZ,QAAAA,EAASsB,WAAAA,GAG/BG,iBAAiBV,GACb,OAAO9uF,KAAKsvF,gBAAgBR,GAAM,GAKtCZ,OAAOuB,GAEH,GADA,GAAE,4BAA6BA,IAC1BA,EACD,MAAM,IAAItsF,EAAa,yBAE3B,IAAI8J,EAOJ,MAAM6hF,EAAOW,EAASC,KAAK1vF,KAAKguF,QAAnByB,GACb,GAAIX,EAAKP,MAILthF,EAASjN,KAAKsuF,WAAWQ,EAAKP,OAAwB,IAAjBO,EAAKN,SACtCvhF,EAAO0hF,UAGP3uF,KAAK+pD,KAAO98C,EAAO2hF,kBAGtB,KAAIE,EAAKZ,OAcV,MADA,GAAEY,GACI,IAAI3rF,EAAa,gDAAkD2rF,GAXrE7hF,EADA6hF,EAAKa,UACI3vF,KAAKsvF,gBAAgBR,GAEzBA,EAAKc,WACD5vF,KAAKwvF,iBAAiBV,GAGtB9uF,KAAK6uF,UAAUC,GAUhC,MAAMe,EAAU,GAQhB,OAPA5iF,EAAO4iF,QAAUA,EACb5iF,EAAO8gF,SACP9gF,EAAO8gF,QAAQp5E,SAAS1T,GAAM4uF,EAAQr7E,KAAKq5E,GAAe5sF,MAE1D6tF,EAAKgB,KAAO7iF,EAAO0hF,SACnBG,EAAKgB,IAAI,CAAED,QAAAA,IAER5iF,GCrMf,SAAS,MAAKlJ,GACNgsF,GAAU3tD,OACVv+B,EAAI,qBAAsBE,GDsMlC6pF,GAAOxrD,OAAQ,ECpMR,MAAM4tD,GACTvuF,YAAYmxC,GACR5yC,KAAK4yC,QAAUA,EAEnBsM,QACI,OAAOl/C,KAAKi1B,KAEhBA,OACI,MAAO,CACHi5D,OAAQ,CAACluF,KAAKiwF,MAAOjwF,KAAKkwF,OAAQlwF,KAAKmwF,MAG/CF,QACI,MAAO,CACH/B,OAAQ,CAACluF,KAAKowF,YAAapwF,KAAKqwF,QAChCP,IAAK,IAAM9vF,KAAK4yC,QAAQ09C,eAGhCJ,SACI,MAAO,CACHhC,OAAQ,CAACluF,KAAKuwF,MAAOvwF,KAAKiwF,OAC1BL,YAAY,GAGpBS,SACI,MAAO,CACHnC,OAAQ,CAACluF,KAAKwwF,SAAUxwF,KAAKg9C,KAAMh9C,KAAKywF,KAAMzwF,KAAK0wF,OAG3DN,cACI,MAAO,CACHlC,OAAQ,CAACluF,KAAK2wF,MAAO3wF,KAAK4wF,YAC1BzB,IAAI,GAGZwB,QACI,MAAO,CACHzC,OAAQ,CAACluF,KAAK6wF,OAAQ7wF,KAAK8wF,MAAO9wF,KAAK+wF,QAEvCjB,IAAMntD,GAAU3iC,KAAK4yC,QAAQo+C,SAASruD,EAAMktD,QAAQ,KAG5DiB,QACI,MAAO,CACH5C,OAAQ,CAACluF,KAAKixF,MACdtB,WAAW,GAGnBsB,OACI,MAAO,CACH/C,OAAQ,CAACluF,KAAKkxF,SAAUlxF,KAAKmxF,WAAYnxF,KAAKoxF,SAGtDR,aACI,MAAO,CACH1C,OAAQ,CAACluF,KAAKkxF,SAAUlxF,KAAKmxF,WAAYnxF,KAAKoxF,QAC9CtB,IAAMntD,IAEF,MAAMz6B,EAAIy6B,EACV3iC,KAAK4yC,QAAQy+C,cAAcnpF,EAAE2nF,QAAQ,GAAI3nF,EAAE2nF,QAAQ,GAAI3nF,EAAE2nF,QAAQ,MAI7EsB,aACI,MAAO,CACHjD,OAAQ,CAACluF,KAAKsxF,WAAYtxF,KAAKuxF,aAC/BxC,OAAO,EACPI,IAAI,GAGZsB,OACI,MAAO,CACHvC,OAAQ,CAACluF,KAAKwxF,KACd5B,YAAY,EAEZE,IAAMntD,GAAU3iC,KAAK4yC,QAAQ6+C,YAAY9uD,EAAMktD,UAGvD7yC,OACI,MAAO,CACHkxC,OAAQ,CAACluF,KAAK0xF,MAAO1xF,KAAK2xF,WAAY3xF,KAAK4xF,OAC3C7C,OAAO,EAEPe,IAAMntD,GAAU3iC,KAAK4yC,QAAQi/C,YAAYlvD,EAAMktD,QAAQ,KAG/DW,WACI,MAAO,CACHtC,OAAQ,CAACluF,KAAK0xF,MAAO1xF,KAAK8xF,WAC1B/C,OAAO,EAEPe,IAAMntD,GAAU3iC,KAAK4yC,QAAQm/C,gBAAgBpvD,EAAMktD,QAAQ,KAGnEa,OACI,MAAO,CACHxC,OAAQ,CAACluF,KAAKgyF,SAAUhyF,KAAKiyF,OAAQjyF,KAAKkyF,QAASlyF,KAAKmyF,UACxDpD,OAAO,GAGfmD,UACI,MAAO,CACHhE,OAAQ,CAACluF,KAAKuwF,MAAOvwF,KAAKiyF,QAC1BrC,YAAY,GAGpBqC,SAEI,MAAO,CACH/D,OAAQ,CAACluF,KAAKoyF,IAAKpyF,KAAKqyF,OAAQryF,KAAKsyF,KAErCxC,IAAMntD,GAAU3iC,KAAK4yC,QAAQ2/C,cAAc5vD,EAAMktD,QAAQ,GAAYltD,EAAMktD,QAAQ,GAJ1D3rF,MAAM,GAAI,KAO3CouF,MACI,MAAO,CACHpE,OAAQ,CAACluF,KAAKwyF,KAAMxyF,KAAKyyF,MACzBtD,IAAI,GAGZiD,MACI,MAAO,CAAE7D,MAAO,wBAEpBkE,OACI,MAAO,CAAElE,MAAO,eAEpBiE,OACI,MAAO,CAAEjE,MAAO,eAEpB2C,WACI,MAAO,CAAE3C,MAAO,YAEpB6C,SACI,MAAO,CAAE7C,MAAO,UAEpBgD,cACI,MAAO,CAAEhD,MAAO,eAEpB+C,aACI,MAAO,CAAE/C,MAAO,+CAEpBuD,YACI,MAAO,CAAEvD,MAAO,aAEpBqD,QACI,MAAO,CAAErD,MAAO,gBAEpBsC,SACI,MAAO,CAAEtC,MAAO,OAEpBwC,SACI,MAAO,CAAExC,MAAO,OAEpBgC,QACI,MAAO,CAAEhC,MAAO,OAEpBiD,MACI,MAAO,CAAEjD,MAAO,OAEpBmD,QACI,MAAO,CAAEnD,MAAO,OAEpBoD,aACI,MAAO,CAAEpD,MAAO,QAEpB8D,SACI,MAAO,CAAE9D,MAAO,OAEpByD,WACI,MAAO,CAAEzD,MAAO,OAEpB4D,WACI,MAAO,CAAE5D,MAAO,OAEpB4B,MACI,MAAO,CAAE5B,MAAO,MAGjB,MAAMmE,GACTjxF,YAAY2sB,GACRpuB,KAAK2yF,MAAQ,GACb3yF,KAAK45C,KAAO,EACZ55C,KAAKkuB,QAAU,GACfluB,KAAKouB,SAAWA,GAGjB,MAAMwkE,GACTnxF,YAAYhC,GACRO,KAAK6yF,YAAc,GACnB7yF,KAAKP,QAAUA,EACfO,KAAKw1B,QAETA,MAAMtH,GACFluB,KAAKkuB,QAAU7tB,OAAOgX,OAAO,CAAEub,KAAM,OAAQ7E,KAAM,UAAYG,GAC/DluB,KAAK8yF,SAAW,CAAEjjE,MAAO,GAAI1T,YAAa,IAC1Cnc,KAAK+yF,gBAAkB,IACvB/yF,KAAKgzF,aAET9/C,aACI,OAAOlzC,KAAKP,QAEhBwzF,cACI,OAAOjzF,KAAK8yF,SAEhBI,cAAcC,GACVnzF,KAAK6yF,YAAYr+E,KAAK2+E,GAE1BH,aACI,GAAE,cACFhzF,KAAKozF,MAAQ,IAAIV,GAAM1yF,KAAK+yF,iBAEhCtB,YAAY73C,GACR,GAAE,eAAgBA,GACdA,IACA55C,KAAKozF,MAAMx5C,KAAOA,EAAKh0C,QAE/BmsF,gBAAgB3jE,GACZ,GAAE,mBAAoBA,GACtBpuB,KAAK+yF,gBAAkB/yF,KAAKozF,MAAMhlE,SAAWA,GAAYpuB,KAAK+yF,gBAElElB,YAAY//E,GACR,GAAE,eAAgBA,GACdA,IACA9R,KAAKozF,MAAMthF,KAAOA,GAE1BygF,cAAcpyF,EAAKiB,GACf,GAAE,sBAAuBjB,EAAK,SAAUiB,GACxCpB,KAAKozF,MAAMllE,QAAQ/tB,GAAOiB,EAE9BiyF,QAAQlzF,EAAKu9D,EAAOzhD,GAChB,GAAE,WAAY9b,EAAKu9D,EAAOzhD,GAC1Bjc,KAAKozF,MAAMT,MAAMn+E,KAAK,CAClBrU,IAAKA,EACLu9D,MAAAA,EACAzhD,OAAAA,IAGRo1E,cAAclxF,EAAKu9D,EAAOzhD,GACtB,GAAE,iBAAkB9b,EAAKu9D,EAAOzhD,GAChCjc,KAAKqzF,QAAQlzF,EAAKu9D,EAAOzhD,GAG7B+0E,SAASnhE,GACL,GAAE,cACsB,iBAAbA,EAAM,GACb7vB,KAAKqxF,cAAcxhE,EAAM,IAGzBA,EAAMlb,SAAS/P,IACPA,GACA5E,KAAKqzF,WAAWzuF,MAG5B,GAAE,YAEN0rF,cACI,GAAE,eACF,MAAM,QAAE7wF,GAAYO,KACpB,IAAKP,EACD,OACJ,MAAMyuB,EAAU7tB,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAIrX,KAAKkuB,SAAUluB,KAAKozF,MAAMllE,SAGpE0E,EAAOlvB,EAAQwqB,EAAQ0E,KAAM,eAAgB,+BAA+B1kB,cAE5E6f,EAAOrqB,EAAQwqB,EAAQH,KAAM,eAAgB,+BAA+B7f,eAC5E,MAAEykF,EAAK,SAAEvkE,EAAQ,KAAEwrB,EAAI,KAAE9nC,GAAS9R,KAAKozF,MAIvCE,EAAsBn4D,GAAMhf,YAC5BhJ,EAAOw/E,EAAMv/E,KAAKmgF,IACpB,IAAI3lF,EACJ,OAAO2lF,EAAUpzF,KACZmzF,EAAoB3/E,SAAoC,QAA1B/F,EAAK2lF,EAAU71B,aAA0B,IAAP9vD,EAAgBA,EAAK,IAAM2lF,EAAU71B,MAAQ,IAC9G,IACA61B,EAAUt3E,UAEZ4yC,EAAqB,SAATj8B,EAEZ6G,EAA2E,MAAnE3nB,MAAAA,OAAmC,EAASA,EAAK5D,eACzDzO,EAAQ+zF,UAAU,CAAEplE,SAAAA,EAAUwrB,KAAAA,IAC9Bn6C,EAAQqD,UAAU,CAAEqQ,KAAAA,EAAMib,SAAAA,EAAUwrB,KAAAA,EAAM9nC,KAAAA,EAAMic,KAAAA,EAAM8gC,UAAAA,IACvDA,GACDp1B,EAAK4zB,iBAA0B,OAATz6B,EAAgB4V,GAAKe,GAAKf,GAAKgB,MAEzD,MAAMrtB,EAAc,GACpBw2E,EAAMh+E,SAAQ,CAAC4+E,EAAWthF,KACtB,MAAMyrD,EAAQ61B,EAAU71B,MACxB,GAAqB,iBAAVA,EAAoB,CAC3B,MAAMjjD,EAAahb,EAAQqC,WAAW,CAAEgQ,KAAM4rD,IAC9CjkC,EAAKoO,YAAYptB,EAAYxI,GAC7BkK,EAAY3H,KAAKiG,QAGjB0B,EAAY3H,UAAK5Q,MAIzB,IAAK,IAAI2E,EAAI,EAAGA,EAAIqxC,EAAMrxC,IACtBnG,GAAIqxF,eAAe,CAACh6D,GAAO,CAAEivB,KAAK,IACtC1oD,KAAK6yF,YAAYl+E,SAASw+E,GAAeA,EAAWjlE,EAASuL,EAAMz5B,QACnEA,KAAK8yF,SAASjjE,MAAMrb,KAAKilB,GACzBz5B,KAAK8yF,SAAS32E,YAAY3H,KAAK2H,GAC/Bnc,KAAKgzF,cAMb,SAASU,GAAMxlE,EAASuL,QACD71B,IAAfsqB,EAAQrc,IAEZ4nB,EAAK7mB,aAAa,KAAMsb,EAAQrc,IAGpC,MAAM8hF,GAAsB,UAI5B,SAASC,GAAS1lE,EAASuL,QACD71B,IAAlBsqB,EAAQnc,OAEZmc,EAAQnc,MAAMvJ,MAAMmrF,IAAqBh/E,SAASnB,GAAcimB,EAAKzjB,SAASxC,KAK3E,MAAMu8E,GACTtuF,YAAYysB,EAAU,IAClBluB,KAAK6zF,SAAW,CACZ9lE,KAAM,SACNipC,KAAM,MACNpkC,KAAM,QAEV5yB,KAAKu1B,WAAWrH,GAUpB5oB,IAAIuuF,GAEA,OADA7zF,KAAK6zF,SAAWxzF,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAIrX,KAAK6zF,UAAWA,GACzD7zF,KAMXu1B,WAAWrH,GACP,IAAItgB,EAAIkF,EAER,MAAMrT,EAAUyuB,EAAQzuB,QAClBmzC,EAAqC,QAA1BhlC,EAAKsgB,EAAQ0kB,eAA4B,IAAPhlC,EAAgBA,EAAK,IAAIglF,GAAQnzF,GAQpF,OAPAO,KAAKkuB,QAAU7tB,OAAOgX,OAAOhX,OAAOgX,OAAO,CAAEw7E,YAAa,CAACa,GAAOE,GAAUzhD,GAAa2hD,cAAevqC,GAAeuqC,eAAgBC,cAAc,GAAS7lE,GAAU,CAAEzuB,QAAAA,EACtKmzC,QAAAA,IACJ5yC,KAAKP,QAAUA,EACfO,KAAK4yC,QAAUA,EACf5yC,KAAKguF,QAAU,IAAIgC,GAAiBhwF,KAAK4yC,SACzC5yC,KAAKg0F,OAAS,IAAIpG,GAAO5tF,KAAKguF,SACM,QAAnCl7E,EAAK9S,KAAKkuB,QAAQ2kE,mBAAgC,IAAP//E,GAAyBA,EAAG6B,SAASw+E,GAAenzF,KAAKkzF,cAAcC,KAC5GnzF,KAEX2W,WAAW7B,GAEP,OADA9U,KAAKP,QAAQkX,WAAW7B,GACjB9U,KAEXqI,MAAMrE,EAAMkqB,EAAU,IAClBluB,KAAK4yC,QAAQpd,MAAMtH,GACnB,MAAMjhB,EAASjN,KAAKg0F,OAAO3rF,MAAMrE,GACjC,IAAKiJ,EAAO0hF,SAAW3uF,KAAKkuB,QAAQ6lE,aAEhC,MADA,GAAE9mF,GACI,IAAI9J,EAAa,uBAAyBa,GAEpD,OAAOiJ,EAEX8tC,KAAKlrB,EAAO3B,GAER,OADAluB,KAAKP,QAAQ06D,KAAK,CAAEtqC,MAAAA,EAAO3B,QAAAA,IACpB2B,EAEX0mB,OAAO1mB,EAAO3B,GAEV,OADAluB,KAAKP,QAAQwhF,OAAO,CAAEpxD,MAAAA,EAAO3B,QAAAA,IACtB2B,EAEXA,MAAM7rB,EAAMkqB,EAAU,IAGlB,OAFAA,EAAU7tB,OAAOgX,OAAO,CAAE0W,KAAM/tB,KAAK6zF,SAAS9lE,KAAM6E,KAAM5yB,KAAK6zF,SAASjhE,MAAQ1E,GAChFluB,KAAKqI,MAAMrE,EAAMkqB,GACVluB,KAAK4yC,QAAQqgD,cAAcpjE,MAEtCyW,MAAMzW,EAAO3B,EAAU,IAEnB,OADAA,EAAU7tB,OAAOgX,OAAO,CAAE2/C,KAAMh3D,KAAK6zF,SAAS78B,MAAQ9oC,GAC/CluB,KAAKP,QAAQs3D,MAAM7oC,GAASgrC,aAAarpC,GAEpDqjE,cAAcC,GACVnzF,KAAK4yC,QAAQsgD,cAAcC,IAGnCpD,GAAU3tD,OAAQ,EC1ZlB,MAAM6xD,GAAY,uEACX,MAAMT,WAAkBxwF,GAChBtB,sBACP,OAAOG,EAAS2xF,UAEpB/xF,YAAYyyF,GACR,IAAKA,EACD,MAAM,IAAI/wF,EAAa,eAAgB8wF,IAE3C,IAAIl8C,EACJ,GAAyB,iBAAdm8C,EAEPn8C,EAAa,CAAE3pB,SAAU8lE,OAExB,IAAyB,iBAAdA,EAIZ,MAAM,IAAI/wF,EAAa,eAAgB8wF,IAHvCl8C,EAAam8C,EAKjB3wF,MAAMw0C,GAEN/3C,KAAKu5B,SAAS,GAKlB2N,SACI,OAAO,EAEXjQ,SAASC,GAEL,OADA3zB,MAAM0zB,SAASC,GACRl3B,KAIXi3C,qBAAqBC,GAEjB,OAAOl3C,KAEXs3C,YAEI,OADAt3C,KAAKu3C,cAAe,EACbv3C,KAEX8V,OAEI9V,KAAKmW,cACL,IAAK,IAAI5N,EAAI,EAAGA,EAAIvI,KAAKg1C,UAAUpvC,SAAU2C,EAAG,CAC5C,MAAMo/B,EAAW3nC,KAAKg1C,UAAUzsC,GAC5BxG,EAAa4lC,KACbA,EAAShxB,WAAW3W,KAAK0W,cACzBixB,EAAS/xB,mBCtDlB,MAAMu+E,WAAkBzxF,GAC3BjB,YAAY0tB,EAAO4oB,EAAY7pB,GAC3B3qB,MAAMw0C,GACN/3C,KAAKkuB,QAAU7tB,OAAOgX,OAAO,CAAE+8E,aAAa,EAAOpwF,KAAM,GAAKkqB,GAE9DluB,KAAKo1C,aAAep1C,KAAKkuB,QAAQkmE,YAC7BjlE,GACAnvB,KAAKq0F,SAASllE,GAGXztB,sBACP,OAAOG,EAASsyF,UAEpBE,SAASllE,GAGL,OAFAnvB,KAAKmvB,MAAQA,EACbnvB,KAAKu5B,SAASv5B,KAAKmvB,MAAMxe,aAAarG,OAC/BtK,KAEXyW,iBACI,OAAOzW,KAAKmvB,MAAM1Y,iBAEtB6gC,YAKI,OAJKt3C,KAAKu3C,cAAgBv3C,KAAKg6B,iBAC3Bh6B,KAAKg6B,gBAAgBsd,YAEzBt3C,KAAKu3C,cAAe,EACbv3C,KAEXi0D,gBACI,MAAMn+B,EAAM91B,KAAK6V,eACjB,IAAK,IAAItN,EAAI,EAAGA,EAAIvI,KAAKg1C,UAAUpvC,OAAQ2C,IAAK,CAC5C,MAAMo/B,EAAW3nC,KAAKg1C,UAAUzsC,GAChCo/B,EAAShxB,WAAWmf,GACpB6R,EAAS/xB,iBAGjBE,OACI,MAAMohB,EAAQl3B,KAAKi4B,aACbnC,EAAMoB,EAAMrhB,eAClB7V,KAAKmW,cACL2f,EAAIuV,UAAU,YAAarrC,KAAK0S,aAAa,OAE7C,MAAMyc,EAAQnvB,KAAKmvB,MACdA,EAAMzY,cACPyY,EAAMxY,WAAWmf,GAErB3G,EAAM8H,SAASC,GACf/H,EAAMmI,UAAUJ,EAAMyM,YAAY3jC,KAAKkuB,QAAQlqB,MAAQkzB,EAAMiB,iBAC7D,MAAMx0B,EAAI3D,KAAKg2C,kBAAoBh2C,KAAK83C,eAAiB93C,KAAKyvB,WAAa,EAAIzvB,KAAK83C,eACpF3oB,EAAM+I,cAAcv0B,GACpB3D,KAAKi0D,gBACLn+B,EAAIyV,cChDL,MAAMjpC,WAAkBQ,GAC3BrB,YAAYs2C,GACRx0C,MAAMlD,OAAOgX,OAAO,CAAEyhC,iBAAkBjrB,EAAOyC,oBAAsBhuB,GAAUgyF,MAAOv7C,UAAWz2C,GAAUqsD,oBAAsB5W,IACjI/3C,KAAKu0F,MAAQx8C,EAAWw8C,QAAS,EACjCv0F,KAAKq5D,MAAO,EACZr5D,KAAKswD,iBACLtwD,KAAKsK,MAAQ,EAEN5I,sBACP,OAAOG,EAASS,UAETqsD,gCACP,OAAO,EAEA2lC,mBACP,MAAO,IAEXpnC,mBACI,GAAIltD,KAAK4tD,wBACL,OAAO5tD,KAAK4tD,wBAEhB,MAAMz+B,EAAQnvB,KAAK6uC,WACnB,GAAI1f,EAAO,CACP,IAAIqlE,EAAMjxF,MAAM2pD,mBAChB,GAAI/9B,EAAMyD,KAAM,CACZ,MAAM6hE,EAAiBz0F,KAAK20D,oBAC5B6/B,GAAOhsD,GAAKkB,OAAS8qD,GAAOC,EAAiBjsD,GAAKkB,OAEtD,OAAO8qD,EAEX,OAAO,EAEX7/B,oBACI,OAAO30D,KAAKqiC,eAAeyW,iBAAmBjrB,EAAOyC,oBAEzDxa,OACIvS,MAAMuS,OACN9V,KAAKmW,cACL,MAAMyc,EAAO5yB,KAAK4yB,KAClB,GAAI5yB,KAAKu0F,OAAS3hE,EAAM,CACpB,MAAM6hE,EAAiBz0F,KAAK20D,oBAEtB+/B,EAAcD,EAAiB,IACrC,IAAIE,EACJ,MAAM55C,EAAO/6C,KAAK+6C,KAClB,GAAIA,EAEKA,EAAKtD,eACNsD,EAAKvD,aAETm9C,EAAY30F,KAAK40F,yBAAyB,EAAIF,EAAa,EAAIA,EAAa,CACxE9hE,KAAM,EAAI8hE,EACV35C,KAAM,EAAI25C,QAGb,CACD,MAAMxrD,EAAiBlpC,KAAKgvC,mBACtB6lD,EAAiB70F,KAAKqxD,oBACtBmD,EAAiB5hC,EAAKqX,YAC5B,IAAItmC,EAAI3D,KAAK83C,eACTpvC,EAAIwgC,IAAmBV,GAAKgB,KAC1BqrD,EAAe9rD,MAAQyrB,EACvBqgC,EAAe7rD,SAAWwrB,EAChC,MAAMsgC,EAAuB5rD,IAAmBV,GAAKgB,KAAOxpC,KAAKmvB,MAAM6D,oBAAsBhzB,KAAKmvB,MAAM4D,kBACxG,IAAIgiE,EAAiBlnE,EAAO4C,YAC5BskE,GAAkBA,EAAiB,IACnCA,GAAkBD,EAClBpsF,GAAKqsF,EAAiBN,EAAiBvrD,EACvC,MAAMokB,EAAUpkB,IAAmBV,GAAKe,GAClC,CACEx/B,GAAI,EACJE,GAAI,EACJC,GAAI,GACJC,IAAK,GAEP,CACEJ,IAAK,EACLE,GAAI,EACJC,GAAI,GACJC,GAAI,GAEZxG,GAAK2pD,EAAQvjD,GAAK2qF,EAClBhsF,GAAK4kD,EAAQrjD,GAAKyqF,EAClBC,EAAY,CACR5qF,GAAIpG,EACJsG,GAAIvB,EACJwB,GAAIvG,EAAI2pD,EAAQpjD,GAAKwqF,EACrBvqF,GAAIzB,EAAI4kD,EAAQnjD,GAAKuqF,GAI7B,MAAM5+D,EAAM91B,KAAK6V,eACjBigB,EAAI/gB,OACJ+gB,EAAIrgB,aAAa,EAAIi/E,GACrB5+D,EAAIQ,YACJR,EAAIS,OAAOo+D,EAAU5qF,GAAI4qF,EAAU1qF,IACnC6rB,EAAIU,OAAOm+D,EAAUzqF,GAAIyqF,EAAUxqF,IACnC2rB,EAAI4e,YACJ5e,EAAIrH,SACJqH,EAAIngB,WAGZi/E,yBAAyBI,EAAiBC,EAAiBC,GACvD,MAAMn6C,EAAO/6C,KAAK+6C,KAClB,IAAKA,EACD,MAAM,IAAI53C,EAAa,SAAU,mCACrC,MAAMgyF,EAAap6C,EAAKmpC,MAElBkR,EADgBr6C,EAAKlrB,MAAMkrB,EAAKlrB,MAAMjqB,OAAS,KAAO5F,MAC5B,EAAI,EAC9Bq1F,EAAapwF,KAAKqwF,KAAKH,EAAaC,GAEpCG,EACEtwF,KAAKi+D,IAAImyB,GAAcJ,EADzBM,EAEEtwF,KAAKm+D,IAAIiyB,GAAcJ,EAE/BD,GAAmBh1F,KAAKgvC,mBACxB,MAAMwmD,EAAcvwF,KAAKqwF,MAAMC,EAAkBP,GAAmBO,GAC9DE,EAAqBxwF,KAAKi+D,IAAIsyB,GAAeN,EAAYtiE,KAAOwiE,EAChEM,EAAqBzwF,KAAKm+D,IAAIoyB,GAAeN,EAAYtiE,KACzD+iE,EAAqB1wF,KAAKi+D,IAAIsyB,GAAeN,EAAYn6C,KAAOq6C,EAChEQ,EAAqB3wF,KAAKm+D,IAAIoyB,GAAeN,EAAYn6C,KACzDoa,EAAQn1D,KAAK0wC,WACbmlD,EAAS96C,EAAKlrB,MAAM,GAAG6gB,WACvBolD,EAAQ/6C,EAAKouC,kBAAoBh0B,EAAQ0gC,GAAUV,EAOzD,MANY,CACRprF,GAAIorD,EAAQsgC,EACZxrF,GAAI6rF,EAAQd,EAAkBU,EAC9BxrF,GAAIirD,EAAQogC,EAAkBH,EAASO,EACvCxrF,GAAI2rF,EAAQP,EAAkBK,ICjInC,MAAMG,WAAmBrzF,GAC5BjB,YAAYmuB,EAAS66C,EAAeC,GAChCnnE,MAAM,CAAE6qB,SAAU,MAClBpuB,KAAK2hC,aAAe,IAAI6oC,GAAa56C,EAAS66C,EAAeC,GAE7D1qE,KAAKo1C,cAAe,EAEb1zC,sBACP,OAAOG,EAASk0F,WAIpB9+C,qBAAqBC,GAEjB,OAAOl3C,KAEXs3C,YAII,OAHAt3C,KAAKu3C,cAAe,EACpBv3C,KAAK2hC,aAAa1K,SAASj3B,KAAKi4B,cAChCj4B,KAAKu5B,SAASv5B,KAAK2hC,aAAalS,YACzBzvB,KAEX8V,OACI,MAAMggB,EAAM91B,KAAKi4B,aAAapiB,eAC9B7V,KAAKmW,cACLnW,KAAK2hC,aAAaz4B,KAAKlJ,KAAK83C,gBAC5B93C,KAAK2hC,aAAahrB,WAAWmf,GAC7B91B,KAAK2hC,aAAa7rB,QCpB1B,IAAIkgF,GAYG,MAAMC,WAAyBriF,EAMlCnS,YAAYy0F,EAAoBhoE,GAC5B3qB,QACAvD,KAAKm2F,GAAK,CAAE/8D,KAAMpvB,IAAKqvB,MAAOrvB,KAC9BhK,KAAKo2F,gBAAiB,EACtBp2F,KAAKq2F,iBAAkB,EACvBr2F,KAAKs2F,kBAAmB,EACxBt2F,KAAKu2F,kBAAmB,EACxBv2F,KAAKk2F,mBAAqBA,EAE1Bl2F,KAAKo2F,eAAiD,iBAAzBloE,EAAQsoE,aACrCx2F,KAAKq2F,gBAAmD,iBAA1BnoE,EAAQuoE,cACtCz2F,KAAKs2F,iBAAqD,iBAA3BpoE,EAAQwoE,eACvC12F,KAAKu2F,iBAAqD,iBAA3BroE,EAAQyoE,eACvC,MAAM/zD,EAAY/U,EAAOgV,mBACzB7iC,KAAKqiC,eAAiBhiC,OAAOgX,OAAO,CAAEu/E,aAAa,EAAOC,aAAa,EAAMC,aAAc,GAAKC,mBAAoBn0D,EAAU3xB,aAAa,gBAAiBjN,KAAM,EAAGyuE,yBAA0B5kD,EAAOgD,oBAAqBmmE,gBAAiB,EAAGC,2BAA4BppE,EAAOyC,oBAAqBkmE,aAAc,EAAGC,cAAe,EAAGC,eAAgB,EAAGC,eAAgB,GAAKzoE,GAClX,MAAMojD,EAAgB1uC,EAAU3xB,aAAa,mBAAoB,GACjEjR,KAAKqiC,eAAey0D,aAAexlB,EAE5B5vE,sBACP,OAAOG,EAASo0F,iBAEpBiB,QACI,OAAOl3F,KAAKm2F,GAEhBl/D,SAASC,GAEL,OADAl3B,KAAKk3B,MAAQA,EACNl3B,KAEX46B,WACI,OAAO56B,KAAKk3B,MAEhBe,aACI,OAAOv0B,EAAQ1D,KAAKk3B,MAAO,UAAW,kCAE1CigE,SAASjgE,EAAOpB,EAAKsD,EAAMC,EAAO+9D,GAC9B,MAAMlpE,EAAUluB,KAAKqiC,eACf35B,EAAIwuB,EAAMyM,YAAYzV,EAAQlqB,MAC9B4vC,EAA2B,IAAhBva,EAAQD,GAGzB,IAAIi+D,EAFJj+D,GAAQwa,EACRva,GAASua,EAGLyjD,EADAr3F,KAAKs2F,iBACwC,GAAzBpoE,EAAQwoE,eAGc,IAAtBU,EAExB,MAAME,EAAiBppE,EAAQ8oE,gBACzBrlD,EAAMjpC,EAAI0uF,EACVG,EAAM7uF,EAAI0uF,EACVI,EAAep+D,EAAOk+D,EACtBG,EAAgBp+D,EAAQi+D,EACxBI,EAAUhvF,EAAI2uF,EACdM,EAAajvF,EAAI2uF,EACvBvhE,EAAI/gB,OACJ+gB,EAAIQ,YACJR,EAAIS,OAAO6C,EAAMuY,GACjB7b,EAAIU,OAAOghE,EAAc7lD,GACzB7b,EAAIU,OAAOghE,EAAcE,GACzB5hE,EAAIU,OAAOihE,EAAeC,GAC1B5hE,EAAIU,OAAOihE,EAAe9lD,GAC1B7b,EAAIU,OAAO6C,EAAOsY,GAClB7b,EAAIU,OAAO6C,EAAOk+D,GAClBzhE,EAAIU,OAAOihE,EAAeF,GAC1BzhE,EAAIU,OAAOihE,EAAeE,GAC1B7hE,EAAIU,OAAOghE,EAAcG,GACzB7hE,EAAIU,OAAOghE,EAAcD,GACzBzhE,EAAIU,OAAO4C,EAAMm+D,GACjBzhE,EAAI4e,YACJ5e,EAAIa,OAERihE,YAAY1gE,EAAOpB,EAAKsD,EAAMC,EAAO+9D,GACjC,MAAMS,EAAK5yF,KAAKyC,MAAM1H,KAAKk2F,mBAAqB,GAC1CtxF,EAAI5E,KAAKk2F,mBAAqB,EAC9B4B,EAAK7yF,KAAKyC,MAAM9C,EAAI,GACpBmzF,EAAKnzF,EAAI,EACTspB,EAAUluB,KAAKqiC,eAGrB2zD,QAAiBpyF,EACjB,MAAMmY,EAjGd,WACI,IAAKi6E,GAAgB,CACjB,MAAM3lC,EAAW,IAAIlF,GAAS,CAAE/8B,SAAU,IAAKm9B,UAAW,MAC1DyqC,GAAiB,CACbl9C,iBAAkBuX,EAAShuB,eAAeyW,iBAC1C0S,WAAY6E,EAAS7E,WACrBlhD,MAAO+lD,EAAS5gC,YAGxB,OAAOumE,GAwFUgC,GACPC,EAAa/pE,EAAQ+oE,2BACrBiB,EAAan8E,EAAKzR,OAAS2tF,EAAal8E,EAAK+8B,kBAC7C9nC,EAAS,CACX,EAAG,CACC1G,MAAoB,GAAb4tF,EACP3tF,OAAQ6sF,GAEZ,EAAG,CACC9sF,MAAO4tF,IAITtnD,EAAU5wC,KAAKu2F,iBAAmBroE,EAAQyoE,eAAiB,GAEjE,IAAIhzF,EAAIy1B,EAAwB,IAAhBC,EAAQD,GAAsB,IADhCy+D,EAAK7mF,EAAO,GAAG1G,MAAQwtF,EAAK9mF,EAAO,GAAG1G,MAAQytF,EAAK/mF,EAAO,GAAG1G,OAASutF,EAAKC,EAAKC,EAAK,GAAKnnD,GAExG,MAAM5sC,EAAOkqB,EAAQlqB,KACfuuD,EAAOr7B,EAAMyM,YAAY3/B,EAAO,GAChCm0F,EAAUjhE,EAAMyM,YAAY3/B,GAC5ByuD,EAAUv7B,EAAMyM,YAAY3/B,EAAO,GACzC8xB,EAAI/gB,OACJ+gB,EAAIvgB,eAAe,QACnBugB,EAAIrgB,aAAa,GACjB,IAAK,IAAIlN,EAAI,EAAGA,EAAIsvF,IAAMtvF,EACtButB,EAAImpB,SAASt7C,EAAGw0F,EAAUnnF,EAAO,GAAGzG,OAAQyG,EAAO,GAAG1G,MAAO0G,EAAO,GAAGzG,QACvEurB,EAAImpB,SAASt7C,EAAG8uD,EAAUzhD,EAAO,GAAGzG,OAAQyG,EAAO,GAAG1G,MAAO0G,EAAO,GAAGzG,QACvE5G,GAAKqN,EAAO,GAAG1G,MAAQsmC,EAE3B,IAAK,IAAIroC,EAAI,EAAGA,EAAIuvF,IAAMvvF,EACtButB,EAAImpB,SAASt7C,EAAGw0F,EAAUnnF,EAAO,GAAGzG,OAAQyG,EAAO,GAAG1G,MAAO0G,EAAO,GAAGzG,QACvE5G,GAAKqN,EAAO,GAAG1G,MAAQsmC,EAE3B,IAAK,IAAIroC,EAAI,EAAGA,EAAIwvF,IAAMxvF,EACtB+mB,EAAMo9B,YAAY52B,EAAKnyB,EAAG4uD,EAAM0lC,EAAYl8E,EAAKyvC,YACjD7nD,GAAKqN,EAAO,GAAG1G,MAAQsmC,EAE3B9a,EAAIngB,UAERG,OACI,MAAMggB,EAAM91B,KAAK6V,eACjB7V,KAAKmW,cACL,MAAM+gB,EAAQl3B,KAAKi4B,aACnB,IAAImB,EAAOlC,EAAMykB,gBACbtiB,EAAQnC,EAAMq8C,cAKlB,MAAMqC,EAAe1+C,EAAMwQ,aAAauU,GAAsB8B,OAClC,IAAxB63B,EAAahwE,QAAgB3D,EAAU2zE,EAAa,MACpDx8C,GAAQw8C,EAAa,GAAGnmD,YAE5B,MAAMvB,EAAUluB,KAAKqiC,eACjBriC,KAAKo2F,iBACLh9D,EAAOlC,EAAMpuB,OAASolB,EAAQsoE,cAE9Bx2F,KAAKq2F,kBACLh9D,EAAQnC,EAAMpuB,OAASouB,EAAMzH,WAAavB,EAAQuoE,eAEtDz2F,KAAKm2F,GAAG/8D,KAAOA,EACfp5B,KAAKm2F,GAAG98D,MAAQA,EAChB,MAAM+9D,EAAsBlpE,EAAQukD,yBAOpC,GANIvkD,EAAQ0oE,YACR52F,KAAK43F,YAAY1gE,EAAOpB,EAAKsD,EAAMC,EAAO+9D,GAG1Cp3F,KAAKm3F,SAASjgE,EAAOpB,EAAKsD,EAAMC,EAAO+9D,GAEvClpE,EAAQ2oE,YAAa,CACrB,MAAM1lB,EAAW,IAAMnxE,KAAKk2F,mBACtBkC,EAAU,IAAIlnB,GAAcC,EAAU,GAAG,GAC/CinB,EAAQpkE,MAAQ9F,EAAQ6oE,mBACxBqB,EAAQvmB,WAAWV,GACnBinB,EAAQnhE,SAASC,GACjBkhE,EAAQlvF,KAAKkwB,EAAwB,IAAhBC,EAAQD,GAA2D,GAA7Cg/D,EAAQxmB,UAAUziD,MAAMxe,aAAarG,OAChF8tF,EAAQnnB,WAAa/iD,EAAQ4oE,YAC7BsB,EAAQzhF,WAAWmf,GAAKhgB,SCxKpC,SAASuiF,GAAe5qF,EAAMqH,EAASnR,EAAG+E,EAAGsrB,GACzC,MAAMskE,EAAaC,GAAazpB,OAAOrhE,GACzB,IAAI6hB,EAAMgpE,EAAWj1F,KAAM2wB,EAAO,CAAE1yB,SAAU,iBACtDw2B,OAAOhjB,EAASnR,EAAI20F,EAAWjkE,QAAS3rB,EAAI4vF,EAAWhkE,SAS1D,MAAMikE,WAAqB3kF,EAC9BnS,YAAYouB,GACRtsB,QACAvD,KAAK6vB,MAAQA,EACb7vB,KAAK8R,KAAOymF,GAAazmF,KAAK0yC,KAC9BxkD,KAAKgE,KAAO,EAEZhE,KAAKw4F,oBAAsB,GAC3Bx4F,KAAKy4F,oBAAsB,GAC3Bz4F,KAAKwX,YACLxX,KAAKqiC,eAAiB,CAClBq2D,eAAgB,GAChBC,kBAAmB,EACnBC,mBAAoB,EACpBpkD,MAAO,SAGJ9yC,sBACP,OAAOG,EAAS02F,aAMpBhzF,qBAAqBsqB,GAEjB,OADc,IAAI0oE,GAAa1oE,GAInCtqB,uBAAuBsqB,GACnB,MAAMgpE,EAAQ,IAAIN,GAAa1oE,GAG/B,OAFAgpE,EAAM76C,QAAQu6C,GAAazmF,KAAKgnF,OAChCD,EAAME,cAAc,cACbF,EAGXtzF,sBAAsBsqB,GAClB,MAAMgpE,EAAQ,IAAIN,GAAa1oE,GAG/B,OAFAgpE,EAAM76C,QAAQu6C,GAAazmF,KAAK0yC,MAChCq0C,EAAME,cAAc,YAAa,aAC1BF,EAGX76C,QAAQlsC,GAKJ,OAJAA,EAAuB,iBAATA,EAAoBymF,GAAat6C,WAAWnsC,GAAQA,IACtDymF,GAAazmF,KAAK0yC,MAAQ1yC,GAAQymF,GAAazmF,KAAKgnF,QAC5D94F,KAAK8R,KAAOA,GAET9R,KAMX+4F,cAAcC,EAASv5C,GAGnB,OAFAz/C,KAAKw4F,oBAAsBQ,GAAW,GACtCh5F,KAAKy4F,oBAAsBh5C,GAAW,GAC/Bz/C,KAGX6rD,QAAQ7nD,GAEJ,OADAhE,KAAKgE,KAAOA,EACLhE,KAGXi5F,gBACI,MAAMnjE,EAAM91B,KAAK6V,eACjB,IACIqjF,EACAC,EAFAC,GAAqB,EAIzBp5F,KAAK6vB,MAAMlb,SAAQ,CAAC8kB,EAAMxnB,EAAO4d,KAE7BupE,GAAsBA,EAEtB,MAAMz1F,EAAI81B,EAAKqe,eACTpvC,EAAI+wB,EAAKxB,aAAakZ,kBAAkBnxC,KAAKgE,KAAO,GAE1D,GAAIL,EAAIu1F,EACJ,MAAM,IAAI/1F,EAAa,uBAAwB,gEAKnD,MAAMk2F,EAAexpE,EAAM5d,EAAQ,KAAOwnB,EACpC6/D,EAAezpE,EAAM5d,EAAQ,KAAOwnB,EAC1C,IAAIpF,EAAU,EACd,MAAML,EAAQnG,EAAOgV,mBAAmB5xB,aAAa,gBAAgBmoF,EAAqB,OAAS,cACnG,GAAIA,EAGA,GADA/kE,EAAUilE,EAAe,EAAI,EACzBt5F,KAAK8R,OAASymF,GAAazmF,KAAKgnF,OAAUQ,EAgB1CxjE,EAAIQ,YACJR,EAAIS,OAAO5yB,EAAG+E,EAAI1I,KAAKqiC,eAAeq2D,gBACtC5iE,EAAIU,OAAO7yB,EAAI0wB,EAAS3rB,GACxBotB,EAAIrH,SACJqH,EAAI4e,iBAlBJ,GAAI10C,KAAKw4F,oBAAqB,CAE1B,MAAMjoD,EAAaza,EAAI0a,YAAYxwC,KAAKw4F,qBAAqBluF,MAC7DwrB,EAAIyb,SAASvxC,KAAKw4F,oBAAqB70F,EAAI4sC,EAAa,EAAG7nC,GAC3D2rB,EAAUkc,EAAa,EAAIvwC,KAAKqiC,eAAes2D,uBAI/CN,GAAe,gBAAiBviE,EAAKnyB,EAAG+E,EAAGsrB,GAC3CK,EAAU,GAAKr0B,KAAKqiC,eAAes2D,uBAc3CtkE,EAAUglE,GAAgB,EAAI,EAE9BvjE,EAAIQ,YACJR,EAAIS,OAAO2iE,EAAQC,GACnBrjE,EAAIU,OAAO7yB,EAAI0wB,EAAS3rB,GACxBotB,EAAIU,OAAO7yB,EAAG+E,EAAI1I,KAAKqiC,eAAeq2D,gBACtC5iE,EAAIrH,SACJqH,EAAI4e,YAGRwkD,EAASv1F,EAAI0wB,EACb8kE,EAASzwF,KAOjB6wF,WACI,MAAMzjE,EAAM91B,KAAK6V,eACjB,IAAIujF,GAAqB,EAEzBp5F,KAAK6vB,MAAMlb,SAAS8kB,IAChB2/D,GAAsBA,EACtB,MAAMliE,EAAQuC,EAAKxB,aACbt0B,EAAI81B,EAAKqe,eACTpvC,EAAIwuB,EAAMia,kBAAkBnxC,KAAKgE,KAAO,GACxCgwB,EAAQnG,EAAOgV,mBAAmB5xB,aAAa,gBAAgBmoF,EAAqB,OAAS,cACnG,IAAI7oD,EAAa,EACb6oD,EACIp5F,KAAKw4F,qBACLjoD,EAAaza,EAAI0a,YAAYxwC,KAAKw4F,qBAAqBluF,MACvDwrB,EAAIyb,SAASvxC,KAAKw4F,oBAAqB70F,EAAI4sC,EAAa,EAAG7nC,IAG3D2vF,GAAe,gBAAiBviE,EAAKnyB,EAAG+E,EAAGsrB,GAI3Ch0B,KAAKy4F,qBACLloD,EAAaza,EAAI0a,YAAYxwC,KAAKy4F,qBAAqBnuF,MACvDwrB,EAAIyb,SAASvxC,KAAKy4F,oBAAqB90F,EAAI4sC,EAAa,EAAG7nC,IAG3D2vF,GAAe,gBAAiBviE,EAAKnyB,EAAG+E,EAAGsrB,MAM3Dle,OACI,MAAMggB,EAAM91B,KAAK6V,eACjB7V,KAAKmW,cACL2f,EAAI/gB,OACJ+gB,EAAIvgB,eAAevV,KAAKqiC,eAAemS,OACvC1e,EAAIzgB,aAAarV,KAAKqiC,eAAemS,OACrC1e,EAAIlf,QAAQ5W,KAAK8W,UAjMzB,YAAc/S,GACNw0F,GAAan2D,OACbv+B,EAAI,wBAAyBE,GAgM7B,CAAE,2BACE/D,KAAK8R,OAASymF,GAAazmF,KAAK0mE,SAAWx4E,KAAK8R,OAASymF,GAAazmF,KAAKgnF,OAC3EhjE,EAAIrgB,aAAazV,KAAKqiC,eAAeu2D,oBACrC54F,KAAKi5F,iBAEAj5F,KAAK8R,OAASymF,GAAazmF,KAAK0yC,MACrCxkD,KAAKu5F,WAETzjE,EAAIngB,WAIZ4iF,GAAan2D,OAAQ,EACrBm2D,GAAavhF,UAAY,CACrBzI,OAAQhB,EAAK8D,MACblD,KAAM,GACNC,OAAQjC,EAAWihC,KACnB/+B,MAAOjC,EAAUoD,QAGrB+oF,GAAazpB,OAAS,CAClB0qB,cAAe,CACXn2F,KAAM,mBACNgxB,SAAU,GACVC,QAAS,GAEbmlE,cAAe,CACXp2F,KAAM,kBACNgxB,SAAU,EACVC,QAAS,IAIjBikE,GAAazmF,KAAO,CAChB0yC,KAAM,EACNg0B,QAAS,EACTsgB,MAAO,GAGXP,GAAat6C,WAAa,CACtBl5C,KAAMwzF,GAAazmF,KAAK0yC,KACxBo0B,QAAS2f,GAAazmF,KAAK0mE,QAC3BkhB,MAAOnB,GAAazmF,KAAKgnF,OC/O7B,MAAMa,GAAQ,CACV,EAAK,aACL,EAAK,cACL,EAAK,cACLpF,MAAO,kBAEJ,MAAMqF,WAAmBzF,GACjBzyF,sBACP,OAAOG,EAAS+3F,WAEpBn4F,YAAYqQ,EAAMimC,EAAY7pB,GAC1B3qB,WAAMK,EAAWvD,OAAOgX,OAAO,CAAE+W,SAAU,IAAK8mB,aAAuB,UAATpjC,GAAoBimC,GAAa7pB,GAC/F,MACMiB,EAAQ,IAAIG,EADAqqE,GAAM7nF,IAAS,aACE+b,EAAOgV,mBAAmB5xB,aAAa,mBAAoB,IAAK,CAC/F3P,SAAU,eAEdtB,KAAKq0F,SAASllE,ICHtB,SAAS0qE,GAAc/jE,EAAKmtC,EAAIE,EAAIp5D,EAAIE,EAAIC,EAAIC,GAE5C2rB,EAAIQ,YACJR,EAAIS,OAAO0sC,EAAIE,GACfrtC,EAAIU,OAAOzsB,EAAIE,GACf6rB,EAAIU,OAAOtsB,EAAIC,GACf2rB,EAAIU,OAAOysC,EAAIE,GACfrtC,EAAI4e,YACJ5e,EAAIa,OAED,MAAMmjE,WAAkBlmF,EAa3BnS,YAAYouB,GACRtsB,QACAvD,KAAKq1D,SAASxlC,GACd7vB,KAAK+E,KAAO,GACZ/E,KAAKwX,YACLxX,KAAKqiC,eAAiB,CAElBm0D,aAAc,EACdC,cAAe,EAEf72C,WAAY,EAEZm6C,eAAWn2F,EAEXo2F,aAAa,EAEbxlD,WAAO5wC,EAEPq2F,kBAAkB,EAClBC,gBAAgB,EAEhBC,iBAAkB,GAElBC,gBAAiBn1F,KAAKC,GAAK,EAE3Bm1F,uBAAwBP,GAAUQ,qBAAqBrsD,IACvDssD,mBAAoBT,GAAU51B,kBAAkBnrC,QAG7Cr3B,sBACP,OAAOG,EAASi4F,UAGpBjqB,QAAQ9qE,GAEJ,OADA/E,KAAK+E,KAAOA,EACL/E,KAGXq1D,SAASxlC,GACL,IAAKA,EAAM+lC,aAAe/lC,EAAMs5B,UAC5B,MAAM,IAAIhmD,EAAa,eAAgB,2DAM3C,GAJK0sB,EAAMgmC,gBACPhmC,EAAMgmC,cAAgB,CAAC,IACtBhmC,EAAMimC,eACPjmC,EAAMimC,aAAe,CAAC,IACtBjmC,EAAMgmC,cAAcjwD,SAAWiqB,EAAMimC,aAAalwD,OAClD,MAAM,IAAIzC,EAAa,eAAgB,qDAO3C,OALAnD,KAAK6vB,MAAQA,EACb7vB,KAAK41D,WAAa/lC,EAAM+lC,WACxB51D,KAAK61D,cAAgBhmC,EAAMgmC,cAC3B71D,KAAKmpD,UAAYt5B,EAAMs5B,UACvBnpD,KAAK81D,aAAejmC,EAAMimC,aACnB91D,KAGXw6F,iBACI,MAAM1kE,EAAM91B,KAAK6V,eACXwsB,EAAiBriC,KAAKqiC,eACxBA,EAAe03D,WACfjkE,EAAIkqC,YAAY39B,EAAe03D,WAE/B13D,EAAeud,YACf9pB,EAAIrgB,aAAa4sB,EAAeud,YAEhCvd,EAAe23D,YACflkE,EAAI+pC,WAAW,SAGf/pC,EAAI+pC,WAAW,UAIvB46B,iBACI,MAAM3kE,EAAM91B,KAAK6V,eACjBigB,EAAIlf,QAAQ5W,KAAK8W,UACjB,MACM09B,EADiBx0C,KAAKqiC,eACCmS,MACzBA,IACA1e,EAAIvgB,eAAei/B,GACnB1e,EAAIzgB,aAAam/B,IAIzBkmD,cAAc5kE,EAAK6kE,EAAKC,GACpB,MAAMC,EAAc76F,KAAKqiC,eAAe43D,kBAAoBj6F,KAAKqiC,eAAe63D,eAC1EnwF,EAAK4wF,EAAIh3F,EACTsG,EAAK0wF,EAAIjyF,EACTwB,EAAK0wF,EAAIj3F,EACTwG,EAAKywF,EAAIlyF,EAGToyF,EAAW71F,KAAKgH,MAAM/B,EAAKH,IAAOG,EAAKH,IAAOI,EAAKF,IAAOE,EAAKF,IAC/D8wF,GAASD,EAAW96F,KAAKqiC,eAAe83D,iBAAmB,GAAKW,EACtE,IAAI7oB,EACA+oB,EACAjqB,EACAkqB,EACAj7F,KAAKqiC,eAAe63D,gBAAkBW,GACtC5oB,EAAQhtE,KAAK2vB,MAAM7qB,GAAMG,EAAKH,GAAMgxF,GACpCC,EAAQ/1F,KAAK2vB,MAAM3qB,GAAME,EAAKF,GAAM8wF,KAGpC9oB,EAAQ/nE,EACR8wF,EAAQ7wF,GAERnK,KAAKqiC,eAAe43D,kBAAoBY,GACxC9pB,EAAUhnE,GAAMG,EAAKH,IAAO,EAAIgxF,GAChCE,EAAUhxF,GAAME,EAAKF,IAAO,EAAI8wF,KAGhChqB,EAAUhnE,EACVkxF,EAAUhxF,GAEVjK,KAAKqiC,eAAemS,QACpB1e,EAAIvgB,eAAevV,KAAKqiC,eAAemS,OACvC1e,EAAIzgB,aAAarV,KAAKqiC,eAAemS,QAGzC1e,EAAIQ,YACJR,EAAIS,OAAOw6C,EAASkqB,GACpBnlE,EAAIU,OAAOy7C,EAAO+oB,GAClBllE,EAAIrH,SACJqH,EAAI4e,YAEJ,MAAMwmD,EAAaj2F,KAAK0gE,MAAMx7D,EAAKF,EAAIC,EAAKH,GAEtCnB,EAAI3D,KAAK4C,IAAI7H,KAAKqiC,eAAe83D,iBAAmBl1F,KAAKi+D,IAAIljE,KAAKqiC,eAAe+3D,kBACvF,IAAIe,EACAC,EACAC,EACAprB,EACAqrB,EACA/X,GACAvjF,KAAKqiC,eAAe63D,gBAAkBW,KACtCM,EAASD,EAAaj2F,KAAKC,GAAKlF,KAAKqiC,eAAe+3D,gBACpDiB,EAAQnxF,EAAKjF,KAAKi+D,IAAIi4B,GAAUvyF,EAChCqnE,EAAQ9lE,EAAKlF,KAAKm+D,IAAI+3B,GAAUvyF,EAChCwyF,EAASF,EAAaj2F,KAAKC,GAAKlF,KAAKqiC,eAAe+3D,gBACpDkB,EAAWpxF,EAAKjF,KAAKi+D,IAAIk4B,GAAUxyF,EACnC26E,EAAWp5E,EAAKlF,KAAKm+D,IAAIg4B,GAAUxyF,EACnCixF,GAAc/jE,EAAKulE,EAAOprB,EAAO/lE,EAAIC,EAAImxF,EAAU/X,KAEnDvjF,KAAKqiC,eAAe43D,kBAAoBY,KACxCM,EAASD,EAAal7F,KAAKqiC,eAAe+3D,gBAC1CiB,EAAQtxF,EAAK9E,KAAKi+D,IAAIi4B,GAAUvyF,EAChCqnE,EAAQhmE,EAAKhF,KAAKm+D,IAAI+3B,GAAUvyF,EAChCwyF,EAASF,EAAal7F,KAAKqiC,eAAe+3D,gBAC1CkB,EAAWvxF,EAAK9E,KAAKi+D,IAAIk4B,GAAUxyF,EACnC26E,EAAWt5E,EAAKhF,KAAKm+D,IAAIg4B,GAAUxyF,EACnCixF,GAAc/jE,EAAKulE,EAAOprB,EAAOlmE,EAAIE,EAAIqxF,EAAU/X,IAI3DztE,OACI,MAAMggB,EAAM91B,KAAK6V,eACjB7V,KAAKmW,cACL,MAAMy/C,EAAa51D,KAAK41D,WAClBzM,EAAYnpD,KAAKmpD,UACjB9mB,EAAiBriC,KAAKqiC,eAC5BvM,EAAI/gB,OACJ/U,KAAKw6F,iBAEL,IAAIe,EAAiB,CAAE53F,EAAG,EAAG+E,EAAG,GAC5B8yF,EAAe,CAAE73F,EAAG,EAAG+E,EAAG,GAC9B1I,KAAK61D,cAAclhD,SAAQ,CAAC8mF,EAAalzF,KACrC,MAAMmzF,EAAa17F,KAAK81D,aAAavtD,GAErCgzF,EAAiB3lC,EAAWvtB,mBAAmB,EAAGozD,GAClDD,EAAeryC,EAAU9gB,mBAAmB,EAAGqzD,GAC/C,MAAMC,EAAgBJ,EAAe7yF,EAAI8yF,EAAa9yF,EAEtD6yF,EAAe53F,GAAKiyD,EAAWjlD,aAAaoqB,WAAasH,EAAem0D,aACxEgF,EAAa73F,GAAKwlD,EAAUx4C,aAAamqB,UAAYuH,EAAeo0D,cAEpE,MAAMmF,EAAiBhmC,EAAW/mB,WAAWpf,WACrBmmC,EAAWryB,cAAck4D,GAAa3sE,WACL,IAAlC8mC,EAAW5mB,qBAC9BusD,EAAe53F,GAAKi4F,EAAiBv5D,EAAem0D,cAGjCrtC,EAAU5lB,cAAcm4D,GAAY5sE,YACH,IAAlCq6B,EAAUna,qBAC5BwsD,EAAa73F,GAAKi4F,EAAiBv5D,EAAeo0D,eAGtD8E,EAAe7yF,GAAKizF,GAAiB,EAAI,EACzCH,EAAa9yF,GAAKizF,EAAgB,EAAI,EACtC37F,KAAK06F,cAAc5kE,EAAKylE,EAAgBC,MAE5C1lE,EAAIngB,UAEJ,MAAM46B,EAAaza,EAAI0a,YAAYxwC,KAAK+E,MAAMuF,MACxCskE,EAAgBvsC,EAAek4D,mBACrC,IAAI52F,EAAI,EACR,GAAIirE,IAAkBkrB,GAAU51B,kBAAkBvrC,KAC9Ch1B,EAAI43F,EAAe53F,OAElB,GAAIirE,IAAkBkrB,GAAU51B,kBAAkBnrC,OAAQ,CAG3Dp1B,GAFgB63F,EAAa73F,EAAI43F,EAAe53F,GACrB,EAAI43F,EAAe53F,EAC/B4sC,EAAa,OAEvBq+B,IAAkBkrB,GAAU51B,kBAAkB5qC,QACnD31B,EAAI63F,EAAa73F,EAAI4sC,GAGzB,IAAI7nC,EAAI,EACR,MAAMmzF,EAAoBx5D,EAAeg4D,uBAYzC,OAXIwB,IAAsB/B,GAAUQ,qBAAqBrsD,IACrDvlC,EAAIktD,EAAW39B,aAAaiZ,iBAEvB2qD,IAAsB/B,GAAUQ,qBAAqB3qD,SAC1DjnC,EAAIktD,EAAW39B,aAAakZ,kBAAkBtjB,EAAOiD,0BAGzDgF,EAAI/gB,OACJ/U,KAAKy6F,iBACL3kE,EAAIyb,SAASvxC,KAAK+E,KAAMpB,EAAG+E,GAC3BotB,EAAIngB,UACG3V,MAIf85F,GAAU9iF,UAAY3W,OAAOgX,OAAO,GAAIzD,EAAQoD,WAEhD8iF,GAAUQ,qBAAuB,CAC7BrsD,IAAK,EACL0B,OAAQ,GAEZmqD,GAAU51B,kBAAoBA,GCnQvB,MAAM43B,WAAeloF,EACxBnS,YAAYwsB,EAAS,IACjB1qB,QACAvD,KAAKu1B,WAAWtH,GAChBjuB,KAAK+0B,MAAQ,GAENrzB,sBACP,OAAOG,EAASi6F,OAGpBvmE,WAAWrH,EAAU,IACjB,IAAKA,EAAQzuB,QACT,MAAM,IAAI0D,EAAa,YAAa,kDAExCnD,KAAKP,QAAUyuB,EAAQzuB,QACvBO,KAAKkuB,QAAU7tB,OAAOgX,OAAOhX,OAAOgX,OAAO,CAAE5X,QAASO,KAAKP,QAASkE,EAAG,GAAI+E,EAAG,GAAI4B,MAAO,IAAKyxF,mBAAoB,GAAIC,WAAW,EAAOC,iBAAiB,EAAOC,gBAAgB,EAAOC,iBAAkB,EAAGC,WAAW,GAASluE,GAAU,CAAEmuE,QAASh8F,OAAOgX,OAAO,CAAEupE,MAAO,IAAO1yD,EAAQmuE,SAAUC,cAAej8F,OAAOgX,OAAO,GAAI6W,EAAQouE,kBACzS,IAAjCt8F,KAAKkuB,QAAQ+tE,sBAAsD,IAAlB/tE,EAAQ5jB,QACzDtK,KAAKkuB,QAAQ8tE,WAAY,GAIjCrlF,WAAW7B,GAGP,OAFAvR,MAAMoT,WAAW7B,GACjB9U,KAAKP,QAAQkX,WAAW7B,GACjB9U,KAMXu8F,aAAazqF,EAAO,UAMhB,OALA9R,KAAKw8F,UAAYx8F,KAAKP,QAAQ+2E,eAAe,CACzCI,UAAW52E,KAAK+0B,MAAM,GAAGmC,MACzB2/C,aAAc72E,KAAK+0B,MAAM/0B,KAAK+0B,MAAMnvB,OAAS,GAAGsxB,MAChDplB,KAAAA,IAEG9R,KAAKw8F,UAgBhBC,SAASxuE,GACL,IAAIrgB,EACJ,MAAM8uF,EAAer8F,OAAOgX,OAAO,CAAEk7D,UAAU,GAAStkD,EAAOC,SACzDgJ,EAAgC,QAAvBtpB,EAAKqgB,EAAOiJ,aAA0B,IAAPtpB,EAAgBA,EAAK5N,KAAKP,QAAQuyE,MAAM,CAAEruE,EAAG3D,KAAKkuB,QAAQvqB,EAAG+E,EAAG1I,KAAKkuB,QAAQxlB,EAAG4B,MAAOtK,KAAKkuB,QAAQ5jB,MAAO4jB,QAASwuE,IAC5JxtB,EAAI7uE,OAAOgX,OAAOhX,OAAOgX,OAAO,CAAE6f,MAAAA,EAEpCylE,WAAY,EAAGC,WAAY,EAAGC,kBAAkB,EAAOZ,iBAAiB,GAAShuE,GAAS,CAAEC,QAASwuE,IACnG5mE,EAAM91B,KAAK0W,aAOjB,OANAw4D,EAAE/oC,OAAOxxB,SAAS2xB,GAAUA,EACvB3vB,WAAWmf,GACXmB,SAASC,GACTsP,eACA7xB,SAASwjD,GAAaA,EAASlhC,SAASC,OAC7Cl3B,KAAK+0B,MAAMvgB,KAAK06D,GACTh4C,EAGX8iC,SACI,MAAM8iC,EAAkB98F,KAAKkuB,QAAQmuE,QACrC,IAAI3iB,EAAe,EACnB,MAAMhtC,EAAY,IAAIotB,GAAUgjC,GAChC98F,KAAK0sC,UAAYA,EACjB,IAAIhkC,EAAI1I,KAAKkuB,QAAQxlB,EACjB21D,EAAS,EACT0+B,EAAY,GACZC,EAAY,GAChB,MAAMC,EAAqB,GAE3Bj9F,KAAK+0B,MAAMpgB,SAASuoF,IAChBx0F,GAAQw0F,EAAKhmE,MAAMse,MAAM0nD,EAAKP,YAC9BO,EAAKhmE,MAAM/tB,KAAKT,GAChBgkC,EAAUqtB,WAAWmjC,EAAK/2D,QAC1Bz9B,GAAQw0F,EAAKhmE,MAAMse,MAAM0nD,EAAKN,YAC9Bl0F,GAAQw0F,EAAKhmE,MAAMse,MAAMx1C,KAAKkuB,QAAQ6tE,oBAClCmB,EAAKL,mBACLI,EAAmBzoF,KAAK,CAAE9L,EAAAA,EAAG49B,MAAO42D,EAAK/2D,OAAO,KAChDz9B,GAAK,IAETq0F,EAAYA,EAAUrxB,OAAOwxB,EAAK/2D,QAClC62D,EAAYA,EAAUtxB,OAAOwxB,EAAKhmE,OAClCmnC,EAASp5D,KAAK2E,IAAIy0D,EAAQ6+B,EAAKhmE,MAAMykB,oBAGzC37C,KAAK+0B,MAAMpgB,SAASuoF,GAASA,EAAKhmE,MAAMo8C,cAAcjV,KAClDr+D,KAAKkuB,QAAQ8tE,WACbtiB,EAAehtC,EAAUivC,0BAA0BohB,GACnD/8F,KAAK+0B,MAAMpgB,SAASuoF,IAChBA,EAAKhmE,MAAMqC,SAASmgD,EAAe1H,GAAM7K,cAAgB9I,EAASr+D,KAAKkuB,QAAQvqB,QAInF+1E,EAAe15E,KAAKkuB,QAAQkuE,UACtBp8F,KAAKkuB,QAAQ5jB,OAAS+zD,EAASr+D,KAAKkuB,QAAQvqB,GAC5C3D,KAAKkuB,QAAQ5jB,OAAS+zD,EAASr+D,KAAKkuB,QAAQvqB,GAAKquE,GAAMmB,eAEjEzmC,EAAUstB,OAAO+iC,EAAW/8F,KAAKkuB,QAAQ+tE,gBAAkB,EAAIviB,EAAc15E,KAAKkuB,QAAQouE,eAC1F5vD,EAAU8K,aACV,IAAK,IAAIjvC,EAAI,EAAGA,EAAIvI,KAAKkuB,QAAQiuE,iBAAkB5zF,IAC/CmkC,EAAUi0C,KAAKmc,GAEnB98F,KAAKq+D,OAASA,EACdr+D,KAAKi9F,mBAAqBA,EAC1Bj9F,KAAKm9F,MAAQz0F,EACb1I,KAAKwJ,YAAc,IAAIf,EAAYzI,KAAKkuB,QAAQvqB,EAAG3D,KAAKkuB,QAAQxlB,EAAG1I,KAAKkuB,QAAQ5jB,MAAOtK,KAAKm9F,MAAQn9F,KAAKkuB,QAAQxlB,GACjHspE,GAAMorB,mBAAmBJ,GAG7BlnF,OAEI,MAAMggB,EAAM91B,KAAK6V,eACjB,KAAK7V,KAAK0sC,WAAc1sC,KAAKq+D,QAAWr+D,KAAKm9F,OAAUn9F,KAAKi9F,oBACxD,MAAM,IAAI95F,EAAa,cAAe,yCAE1CnD,KAAKmW,cACDnW,KAAKkuB,QAAQguE,gBACbpiC,GAAUujC,cAAcvnE,EAAK91B,KAAK0sC,UAAW1sC,KAAKq+D,OAAQr+D,KAAKkuB,QAAQxlB,EAAG1I,KAAKm9F,OAEnFn9F,KAAKi9F,mBAAmBtoF,SAASzO,IAC7BA,EAAEogC,MAAME,eAAe7xB,SAASwjD,GAAaz1D,GAAK46F,YAAYxnE,EAAKqiC,EAAUjyD,EAAEwC,SChDpF,MAAMxF,WAAgBF,GAGzBvB,YAAYs2C,EAAY7I,GAAY,GAChC3rC,MAAMw0C,GACN/3C,KAAKgR,OAAS,GAEdhR,KAAK4vC,eAAiB,IACX5vC,KAAKu9F,UAAUnqF,KAAKzP,GAAMA,EAAE2E,MAAK0oC,QAAO,CAACvsC,EAAGC,IAAOD,EAAIC,EAAID,EAAIC,IAG1E1E,KAAKyvC,YAAc,IACRzvC,KAAKu9F,UAAUnqF,KAAKzP,GAAMA,EAAE2E,MAAK0oC,QAAO,CAACvsC,EAAGC,IAAOD,EAAIC,EAAID,EAAIC,IAE1E1E,KAAKw9F,OAAQ,EAGbx9F,KAAKu9F,UAAYxlD,EAAWwlD,WAAa,GAEzCv9F,KAAKqiC,eAAiBhiC,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAIrX,KAAKqiC,gBAAiB,CAExEyW,iBAAkBjrB,EAAO0B,qBAEzB2f,UAAAA,EAEAuuD,UAAWvuD,EAEXwuD,yBAAyB,EAEzBppE,QAAS,EAETpF,MAAO,EAEPrgB,KAAM,GAAGtB,EAAKI,UAAUJ,EAAKiB,eACjCxO,KAAKmvB,MAAQtB,EAAO2qB,cAAcx4C,KAAKouB,SAAUpuB,KAAKq4C,UACtD30C,EAAQ1D,KAAKmvB,MAAO,eAAgB,gCAAgCnvB,KAAKouB,uBAAuBpuB,KAAKq4C,aACrGr4C,KAAK4sD,YACD7U,EAAW7O,eACXlpC,KAAKqtD,iBAAiBtV,EAAW7O,gBAGjClpC,KAAKqtD,iBAAiB7kB,GAAKe,IAG/BvpC,KAAKw9F,OAAQ,EACbx9F,KAAKggD,cAEEt+C,sBACP,OAAOG,EAASqB,QAEpBsyB,QAII,OAHAjyB,MAAMiyB,QACFx1B,KAAKk3B,OACLl3B,KAAKi3B,SAASj3B,KAAKk3B,OAChBl3B,KAIX29F,SAASH,GAGL,OAFAx9F,KAAKw9F,MAAQA,EACbx9F,KAAKggD,cACEhgD,KAGX+uC,UACI,QAAI/uC,KAAKqiC,eAAe6M,UAK5Bge,mBACI,MAAM/9B,EAAQnvB,KAAK6uC,WACnB,OAAoC,MAAhC7uC,KAAK4tD,wBACE5tD,KAAK4tD,wBAEZz+B,EACOnvB,KAAKgvC,qBAAuBxG,GAAKe,GAAKpa,EAAM8D,0BAA4B9D,EAAM+D,4BAElF,EAGX8sB,cACIhgD,KAAKgR,OAAS,GACdhR,KAAKsK,MAAQ,EACb,IAAK,IAAI/B,EAAI,EAAGA,EAAIvI,KAAKu9F,UAAU33F,SAAU2C,EAAG,CAC5C,IAAI0mB,EAAOjvB,KAAKu9F,UAAUh1F,GAAG0mB,KACzBjvB,KAAKw9F,QACLvuE,EAAO,IAAMA,EAAO,KACxB,MAAME,EAAQtB,EAAO+vE,WAAW3uE,EAAKnnB,WAAY9H,KAAKqiC,eAAenT,OACrElvB,KAAKgR,OAAOwD,KAAK2a,GACjBnvB,KAAKsK,MAAQrF,KAAK2E,IAAIulB,EAAMM,WAAYzvB,KAAKsK,OAOjDtK,KAAKmvB,MAAMM,SAAW,IAAMzvB,KAAKsK,MAGrC2sB,SAASC,GACL3zB,MAAM0zB,SAASC,GACf,MAAMpB,EAAMoB,EAAMxgB,aAGlB,GAFA1W,KAAK2W,WAAWmf,GAEZA,EAAK,CACL91B,KAAKsK,MAAQ,EACb,IAAK,IAAI/B,EAAI,EAAGA,EAAIvI,KAAKgR,OAAOpL,SAAU2C,EAAG,CACzC,MAAM4mB,EAAQnvB,KAAKgR,OAAOzI,GACpBxD,EAAO,GAAKoqB,EAAMpqB,KACG,MAAvBA,EAAKwpB,gBACLuH,EAAI/gB,OACJ+gB,EAAIlf,QAAQ5W,KAAKqiC,eAAexzB,MAChCsgB,EAAM7kB,MAAQwrB,EAAI0a,YAAYzrC,GAAMuF,MACpCwrB,EAAIngB,UACJwZ,EAAMM,SAAW,IAAMN,EAAM7kB,OAEjCtK,KAAKsK,MAAQrF,KAAK2E,IAAIulB,EAAMM,WAAYzvB,KAAKsK,OAEjDtK,KAAKmvB,MAAMM,SAAW,IAAMzvB,KAAKsK,MAIrC,MAAM+/B,EAAKrqC,KAAKu9F,UAAUnqF,KAAI,EAAG9K,IAAKtE,KAAWkzB,EAAMyM,YAAYn+B,OAAOxB,GAAQ,KAKlF,OAJAhE,KAAKo6C,MAAM/P,GACPrqC,KAAK4yB,MACL5yB,KAAK4yB,KAAKoX,WAAWhqC,KAAK69F,WAAY79F,KAAK69F,YAExC79F,KAGX4nE,eACI,OAAO5nE,KAAKu9F,UAIhBl1D,mBAAmB/U,EAAUrhB,GACzB,IAAKjS,KAAKu3C,aACN,MAAM,IAAIp0C,EAAa,kBAAmB,wDAE9C,GAAuB,IAAnBnD,KAAKqqC,GAAGzkC,OACR,MAAM,IAAIzC,EAAa,YAAa,yCAExC,IAAIQ,EAAI,EACR,GAAI2vB,IAAakF,EAASE,SAASC,KAC/Bh1B,GAAI,OAEH,GAAI2vB,IAAakF,EAASE,SAASY,MACpC31B,EAAI3D,KAAKsK,MAAQ,OAEhB,GAAIgpB,IAAakF,EAASE,SAASS,OAAS7F,IAAakF,EAASE,SAASO,MAAO,CAEnFt1B,EADyB3D,KAAKmvB,MAAMM,WACb,EAE3B,MAAO,CACH9rB,EAAG3D,KAAK83C,eAAiBn0C,EACzB+E,EAAG1I,KAAKqqC,GAAGp4B,IAInBwoC,iBACI,OAAOj1C,OAAOxF,KAAKu9F,UAAU,GAAGj1F,KAGpCgvC,YACQt3C,KAAKu3C,eAELv3C,KAAKg6B,iBACLh6B,KAAKg6B,gBAAgBsd,YAEzBt3C,KAAKu3C,cAAe,GAGxB7G,WACI,OAAO1wC,KAAK2tD,kBAGhBkwC,WACI,MAIMC,EAJY99F,KAAKi4B,aAAaoX,cAIH,GAC3B0uD,EAAgBv1D,GAAKe,KAAOvpC,KAAKkpC,gBAFnB,GAEiD40D,EACrE,OAAO99F,KAAKi4B,aAAa0L,YAAYo6D,GAGzCzsD,iBACI,OAAOtxC,KAAK8wC,YAAY3G,aAG5BkqB,WACI,IAAIzmD,EACJ,MAAM,KAAEmtC,EAAI,MAAE5rB,EAAOkT,gBAAgB,UAAE6M,IAAiBlvC,KAClD8U,EAAU9U,KAAK6V,eACfq8C,EAAyBtuD,MAARm3C,GAAqB7L,EAE5C,GAAI/f,EAAM2D,MAAQo/B,EAAgB,CAC9B,MAAM8rC,EAASh+F,KAAK0wC,WACdutD,EAASj+F,KAAKgvC,qBAAuBxG,GAAKgB,KAExCxpC,KAAK69F,WAAa79F,KAAK8wC,YAAY7G,aAAejqC,KAAKmvB,MAAQnvB,KAAKmvB,MAAM6D,oBAAsB,GAEhGhzB,KAAK69F,WAAa79F,KAAK8wC,YAAY7G,aAAejqC,KAAKmvB,MAAQnvB,KAAKmvB,MAAM4D,kBAAoB,GAGjF,QAApBnlB,EAAK5N,KAAK8yB,YAAyB,IAAPllB,GAAyBA,EAAGkqB,OAAOhjB,EAASkpF,EAAQC,IAKzFhqC,gBACIj0D,KAAKg1C,UAAUrgC,SAASgzB,IAEhBxlC,EAAMwlC,KAAc3nC,KAAKqiC,eAAeo7D,YAG5C91D,EAAShxB,WAAW3W,KAAK0W,cACzBixB,EAAS/xB,oBAIjBsoF,kBACI,MAAM/oC,EAAQn1D,KAAK0wC,WACbolD,EAAQ91F,KAAK69F,WACb/nE,EAAM91B,KAAK6V,eACXi4C,EAAW9tD,KAAKqiC,eAAe6M,UAC/BivD,EAAcn+F,KAAKqiC,eAAeq7D,wBACxC,GAAI5vC,GAAYqwC,EAAa,CACzB,MAGMC,EA1RlB,SAA6BlzD,EAAQmzD,EAAgBnnE,EAAOgS,GACxD,MAAMo1D,EAA6B,IAAnBp1D,EACVq1D,GAAgC,IAApBr1D,EACZs1D,EAAetnE,EAAMwM,yBACrB+6D,EAAcvnE,EAAMmY,cACpBqvD,EAAa,GA2CnB,OA1CAL,EAAe1pF,SAASgqF,IACpB,MAAMC,EAAqBD,EAAQl3D,QAAQg3D,IAAgB,EACrDI,EAAsBF,EAAQl3D,QAAQ,IAAM,EAClD,GAAK62D,GAAWO,GAAyBN,GAAaK,EAClD,OAKmB,IAAnBD,EAAQ/4F,QACR+4F,EAAQnqF,KAAKmqF,EAAQ,IAEzB,MAAMG,EAAU,GAEhBH,EAAQhqF,SAAQ,CAACgzD,EAAQ11D,EAAO0sF,KAC5B,MAAMI,EAAwB,IAAXp3B,EACbq3B,EAAgBr3B,IAAW82B,EAGjC,IAAI/1F,EAAIwuB,EAAMyM,YAAYgkC,EAAS,GAGrB,IAAV11D,GAAgB8sF,EAGX9sF,IAAU0sF,EAAQ/4F,OAAS,GAAMo5F,IACtCt2F,GAAK81F,EAAe,EAAI,GAHxB91F,GAAK81F,EAAe,EAAI,EAM5BM,EAAQtqF,KAAK9L,GAGU,IAAnBwgC,GAAwB61D,EACxBD,EAAQtqF,KAAK02B,EAAS,IAEG,IAApBhC,GAAyB81D,GAC9BF,EAAQtqF,KAAK02B,EAAS,MAI9BwzD,EAAWlqF,KAAKsqF,EAAQj7D,MAAK,CAACp/B,EAAGC,IAAMD,EAAIC,QAExCg6F,EA0OmBO,CAAoBnJ,EAnTlD,SAA+BzjB,EAAW6sB,GACtC,MAAMC,EAAe,GACrB,IAAIzkC,EAAQ,GACZ,IAAK,IAAIiN,EAAS,EAAGA,GAAU0K,EAAW1K,IACtBu3B,EAAaz3D,QAAQkgC,IAAW,GAK5Cw3B,EAAa3qF,KAAKkmD,GAClBA,EAAQ,IAJRA,EAAMlmD,KAAKmzD,GASnB,OAFIjN,EAAM90D,OAAS,GACfu5F,EAAa3qF,KAAKkmD,GACfykC,EAmSuBC,CAFLp/F,KAAKi4B,aAAaoX,cACfrvC,KAAKu9F,UAAUnqF,KAAKkgB,GAAa9tB,OAAO8tB,EAAShrB,QAETtI,KAAKi4B,aAAcj4B,KAAKgvC,oBACpFlZ,EAAI/gB,OACJ+gB,EAAIrgB,aAAa+yB,GAAKiB,OACtB20D,EAAUzpF,SAASo+D,IACO,IAAlBA,EAAOntE,SAEXkwB,EAAIQ,YACJR,EAAIS,OAAO4+B,EAAO4d,EAAO,IACzBj9C,EAAIU,OAAO2+B,EAAO4d,EAAOA,EAAOntE,OAAS,IACzCkwB,EAAIrH,SACJqH,EAAI4e,gBAER5e,EAAIngB,WAIZ0pF,gBACI,MAAMvpE,EAAM91B,KAAK6V,eACXlS,EAAI3D,KAAK83C,eACTzN,EAAKrqC,KAAKqqC,GAChB,IAAK,IAAI9hC,EAAI,EAAGA,EAAIvI,KAAKu9F,UAAU33F,SAAU2C,EAAG,CAC5C,MAAMG,EAAI2hC,EAAG9hC,GAAKvI,KAAKqiC,eAAe/N,QAChCnF,EAAQnvB,KAAKgR,OAAOzI,GAGpB+2F,EAAQ37F,EADW3D,KAAKmvB,MAAMM,WACC,EAAIN,EAAMM,WAAa,EAG5D,GADAqG,EAAI0pC,UAAU8/B,EAAQ,EAAG52F,EAAI,EAAGymB,EAAMM,WAAa,EAAG,GAClDN,EAAM9rB,KACNisB,EAAMo9B,YAAY52B,EAAKwpE,EAAO52F,EAAG1I,KAAKqiC,eAAeyW,iBAAmB94C,KAAKqiC,eAAenT,MAAOC,EAAM9rB,UAExG,CACDyyB,EAAI/gB,OACJ+gB,EAAIlf,QAAQ5W,KAAKqiC,eAAexzB,MAChC,MAAM9J,EAAOoqB,EAAMpqB,KAAK+C,WACxBguB,EAAIyb,SAASxsC,EAAMu6F,EAAO52F,EAAI,EAAI1I,KAAKqiC,eAAenT,OACtD4G,EAAIngB,YAKhBG,OACI,MAAMggB,EAAM91B,KAAK6V,eACjB,GAAuB,IAAnB7V,KAAKqqC,GAAGzkC,OACR,MAAM,IAAIzC,EAAa,YAAa,qCAExCnD,KAAKmW,cACL,MAAMopF,EAA2B37F,MAAb5D,KAAK+6C,MAAqB/6C,KAAKqiC,eAAe6M,UAIlE,GAHApZ,EAAIuV,UAAU,UAAWrrC,KAAK0S,aAAa,MAAO,CAAE44B,aAAa,IACjEtrC,KAAKq/F,gBACLr/F,KAAKk+F,kBACDl+F,KAAK4yB,MAAQ2sE,EAAa,CAC1B,MAAMt0D,EAASjrC,KAAK0wC,WACpB1wC,KAAK4yB,KAAK+W,mBAAmBsB,EAAQA,GACrCjrC,KAAK4yB,KAAKjc,WAAWmf,GAAKhgB,OAE9B9V,KAAKq0D,WACLr0D,KAAKi0D,gBACLn+B,EAAIyV,cC/XL,MAAMi0D,WAAiBxtB,GACftwE,sBACP,OAAOG,EAAS29F,SAEpB/9F,YAAYkC,EAAG+E,EAAG4B,EAAO4jB,GAErB3qB,MAAMI,EAAG+E,EAAG4B,EADQjK,OAAOgX,OAAO,CAAEo7D,yBAA0B,GAAIJ,UAAW,EAAGO,kBAAmB,GAAK1kD,IAG5GiK,gBACI,OAAOn4B,KAAK2jC,YAAY,KAG5B87D,cAEI,OADAz/F,KAAKy0E,QAAQ,OACNz0E,MCHf,SAAS,MAAK+D,GACN27F,GAAYt9D,OACZv+B,EAAI,uBAAwBE,GAE7B,IAAI47F,IACX,SAAWA,GACPA,EAAoBA,EAAyB,IAAI,GAAK,MACtDA,EAAoBA,EAA4B,QAAK,GAAK,SAF9D,CAGGA,KAAwBA,GAAsB,KAC1C,MAAMD,WAAoB9rF,EAC7BnS,aAAY,MAAE2mC,EAAK,KAAEw3D,EAAI,KAAE76F,EAAO,GAAE,YAAE0pE,EAAc,GAAE,SAAEn7C,EAAWqsE,GAAoB1xD,MACnF1qC,QACAvD,KAAKooC,MAAQA,EACbpoC,KAAK4/F,KAAOA,EACZ5/F,KAAK+E,KAAOA,EACZ/E,KAAKyuE,YAAcA,EACnBzuE,KAAKszB,SAA+B,iBAAbA,EAAwBosE,GAAY7mE,eAAevF,GAAYA,EACtFtzB,KAAKgE,KAAO,EACZhE,KAAKwX,YACLxX,KAAKqiC,eAAiB,CAClB8jC,QAAQ,EACRlG,KAAM,CAAC,GACPzrB,MAAO,QACPoL,WAAY,EACZigD,cAAc,EACdnH,eAAgB,EAGhBoH,uBAAuB,GAGpBp+F,sBACP,OAAOG,EAAS69F,YAEThnE,sBACP,OAAOinE,GAEA9mE,4BACP,MAAO,CACH8Y,IAAKguD,GAAoB1xD,IACzB2D,OAAQ+tD,GAAoBhwD,QAMzBowD,uBAEP,OADA,GAAE,6DACKJ,GAKAK,6BAEP,OADA,GAAE,8DACKN,GAAY7mE,eAOvBhkB,WAAWihB,GACPA,EAAIlf,QAAQ5W,KAAK6O,MACjB,MAAMqf,EAAUluB,KAAKqiC,eAIrB,OAHAvM,EAAIvgB,eAAe2Y,EAAQsmB,OAC3B1e,EAAIzgB,aAAa6Y,EAAQsmB,OACzB1e,EAAIrgB,aAAayY,EAAQ0xB,YAClB5/C,KAIX8mE,UAAUX,EAAQlG,GAId,OAHAjgE,KAAKqiC,eAAe8jC,OAASA,EACzBlG,IACAjgE,KAAKqiC,eAAe49B,KAAOA,GACxBjgE,KAGX6rD,QAAQ7nD,GAEJ,OADAhE,KAAKgE,KAAOA,EACLhE,KAGX8V,OACI,MAAMggB,EAAM91B,KAAK6V,eACjB7V,KAAKmW,cACL,IAAIzN,EAAI,EACR,OAAQ1I,KAAKszB,UACT,KAAKqsE,GAAoB1xD,IACrBvlC,EAAI1I,KAAKooC,MAAMnQ,aAAaiZ,eAAelxC,KAAKgE,MAChD,MACJ,KAAK27F,GAAoBhwD,OACrBjnC,EAAI1I,KAAKooC,MAAMnQ,aAAakZ,kBAAkBnxC,KAAKgE,KAAO6pB,EAAOiD,yBACjE,MACJ,QACI,MAAM,IAAI3tB,EAAa,kBAAmB,gBAAgBnD,KAAKszB,wBAGvE,MAAM8U,EAAQ,CAAEzkC,EAAG3D,KAAKooC,MAAM0P,eAAgBpvC,EAAAA,GACxCk3F,EAAO,CAAEj8F,EAAG3D,KAAK4/F,KAAK9nD,eAAgBpvC,EAAAA,GAC5C,GAAE,gCAAiC0/B,EAAO,QAASw3D,EAAM,KAAMl3F,GAC/D,MAAMgwF,EAAiB14F,KAAKqiC,eAAeq2D,eAAiB14F,KAAKszB,SACjEwC,EAAI/gB,OACJ/U,KAAK6U,WAAWihB,GAEhBA,EAAIyb,SAASvxC,KAAK+E,KAAMqjC,EAAMzkC,EAAGykC,EAAM1/B,GAEvC,MAAMu3F,EAAenqE,EAAI0a,YAAYxwC,KAAK+E,MACpCm7F,EAAaD,EAAa31F,MAC1B61F,EAAcF,EAAa11F,OAE3B61F,EAAUh4D,EAAM1/B,EAAIy3F,EAAc,KAGlC,OAAE5xF,EAAM,KAAEJ,EAAI,OAAEC,EAAM,MAAEC,GAAUrO,KAAK8W,SAEvC6wC,EAAkBp6C,EAAK+1C,UAAUn1C,EAAM,SAC7C2nB,EAAIlf,QAAQrI,EAAQo5C,EAAiBv5C,EAAQC,GAC7CynB,EAAIyb,SAASvxC,KAAKyuE,YAAarmC,EAAMzkC,EAAIu8F,EAAa,EAAGE,GAEzD,MAAMC,EAAgBvqE,EAAI0a,YAAYxwC,KAAKyuE,aACrC6xB,EAAcD,EAAc/1F,MAC5Bi2F,EAAeF,EAAc91F,OAEnC,IAAIwmE,EAAU3oC,EAAMzkC,EAChB68F,EAASJ,EACb,MAAMnuB,EAAQ2tB,EAAKj8F,EAAI3D,KAAK4/F,KAAK/wD,WAAWpf,WAExCzvB,KAAKszB,WAAaqsE,GAAoB1xD,KACtC8iC,GAAWmvB,EAAaI,EAAc,EACtCE,GAAUD,EAAe,KAEpBvgG,KAAKszB,WAAaqsE,GAAoBhwD,SAC3C6wD,GAAUD,EAAe,IACzBxvB,GAAWmvB,EAAa,EACnBlgG,KAAKqiC,eAAey9D,wBACrB/uB,GAAWuvB,IAGftgG,KAAKqiC,eAAe8jC,QAEpB7B,GAASgD,eAAexxC,EAAKi7C,EAASyvB,EAAQvuB,EAAOuuB,EAAQxgG,KAAKqiC,eAAe49B,MAE7EjgE,KAAKqiC,eAAew9D,cACpBv7B,GAASgD,eAAexxC,EAAKm8C,EAAOuuB,EAAS,EAAIxgG,KAAKszB,SAAU2+C,EAAOuuB,EAAS9H,EAAgB14F,KAAKqiC,eAAe49B,QAIxHnqC,EAAIQ,YACJR,EAAIS,OAAOw6C,EAASyvB,GAEpB1qE,EAAIU,OAAOy7C,EAAOuuB,GACdxgG,KAAKqiC,eAAew9D,cAEpB/pE,EAAIU,OAAOy7C,EAAOuuB,EAAS9H,GAE/B5iE,EAAIrH,SACJqH,EAAI4e,aAER5e,EAAIngB,WCvKZ,SAAS,MAAK5R,GACN08F,GAAar+D,OACbv+B,EAAI,wBAAyBE,GDwKrC27F,GAAYt9D,OAAQ,EACpBs9D,GAAY1oF,UAAY,CACpBzI,OAAQhB,EAAK8D,MACblD,KAAM,GACNC,OAAQjC,EAAWsC,OACnBJ,MAAOjC,EAAUoD,QCpKd,MAAMixF,WAAqB/9F,GAU9BjB,YAAYs2C,GACRx0C,MAAMw0C,GACN/3C,KAAK0gG,UAAY3oD,EAAWhzC,MAAQ,IAAImJ,cACxClO,KAAKgE,KAAO+zC,EAAW/zC,MAAQ,EAC/BhE,KAAKgR,OAAS,GACdhR,KAAKqiC,eAAiBhiC,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAIrX,KAAKqiC,gBAAiB,CAAEs+D,gBAAiB,KAC/F,GAAE,sBAAuB3gG,KAAK0gG,UAEvBh/F,sBACP,OAAOG,EAAS4+F,aAGT3xB,oBACP,MAAO,CACH1mE,EAAG,CACC/E,KAAM,eACNiH,MAAO,IAEX4kE,EAAG,CACC7rE,KAAM,eACNiH,MAAO,IAEX2nB,EAAG,CACC5uB,KAAM,eACNiH,MAAO,IAEXpC,EAAG,CACC7E,KAAM,mBACNiH,MAAO,IAEX6kE,EAAG,CACC9rE,KAAM,WACNiH,MAAO,IAEXrJ,EAAG,CACCoC,KAAM,qBACNiH,MAAO,KAKnBuhD,QAAQ7nD,GAEJ,OADAhE,KAAKgE,KAAOA,EACLhE,KAGXs3C,YACI,IAAIspD,EAAc,EAoBlB,OAhBA5gG,KAAKgR,OAAS,GAEdhR,KAAK0gG,SAASl4F,MAAM,IAAImM,SAASksF,IAE7B,MAAMvI,EAAamI,GAAa3xB,OAAO+xB,GACvC,IAAKvI,EACD,MAAM,IAAIn1F,EAAa,+BAAiC09F,GAC5D,MAAM1yF,EAAOzK,EAAQ1D,KAAKqiC,eAAes+D,iBACnCxxE,EAAQ,IAAIG,EAAMgpE,EAAWj1F,KAAM8K,EAAM,CAAE7M,SAAU,aAE3DtB,KAAKgR,OAAOwD,KAAK2a,GACjByxE,GAAetI,EAAWhuF,SAG9BtK,KAAKu5B,SAASqnE,GACd5gG,KAAKu3C,cAAe,EACbv3C,KAGX8V,OACI9V,KAAKmW,cACL,MAAMxS,EAAI3D,KAAK83C,eACTpvC,EAAI1I,KAAKi4B,aAAa0L,YAAY3jC,KAAKgE,MAAQ,GACrD,GAAE,uBAAwBhE,KAAK0gG,UAC/B,IAAII,EAAWn9F,EACf3D,KAAKgR,OAAO2D,SAAQ,CAACwa,EAAOld,KACxB,MAAM8uF,EAAiB/gG,KAAK0gG,SAASzuF,GACrCkd,EAAM2I,OAAO93B,KAAK6V,eAAgBirF,EAAUp4F,GAC5Co4F,GAAYL,GAAa3xB,OAAOiyB,GAAgBz2F,UAK5Dm2F,GAAar+D,OAAQ,EC3Gd,MAAM4+D,WAAoBt+F,GAC7BjB,YAAY0vE,EAAUC,GAClB7tE,MAAM,CAAE6qB,SAAU,MAClB,MAAMiiD,EAAgB,IAAIa,GAAcC,EAAUC,GAClDpxE,KAAKihG,YAAc5wB,EAAcuB,UACjC5xE,KAAKu5B,SAASv5B,KAAKihG,YAAY9xE,MAAMxe,aAAarG,OAElDtK,KAAKo1C,cAAe,EAEb1zC,sBACP,OAAOG,EAASm/F,YAIpB/pD,qBAAqBC,GAEjB,OAAOl3C,KAEXs3C,YAEI,OADAt3C,KAAKu3C,cAAe,EACbv3C,KAEX8V,OACI,MAAMohB,EAAQl3B,KAAKi4B,aACbnC,EAAM91B,KAAK6V,eACjB7V,KAAKmW,cACAnW,KAAKihG,YAAY9xE,MAAMzY,cACxB1W,KAAKihG,YAAY9xE,MAAMxY,WAAWmf,GAEtC91B,KAAKihG,YAAY9xE,MAAM8H,SAASC,GAChCl3B,KAAKihG,YAAY9xE,MAAMmI,UAAUJ,EAAMyM,YAAY,GAAKzM,EAAMiB,iBAC9Dn4B,KAAKihG,YAAY9xE,MAAM+I,cAAcl4B,KAAK83C,iBCvB3C,MAAMopD,WAAuBttF,EAMhCnS,YAAY0/F,GACR59F,QACI49F,EAAa/4D,QACbpoC,KAAKooC,MAAQ+4D,EAAa/4D,OAC1B+4D,EAAavB,OACb5/F,KAAK4/F,KAAOuB,EAAavB,MAC7B5/F,KAAKgE,KAAO,EACZhE,KAAKqiC,eAAiB,CAClB0mC,OAAO,EACPE,YAAa,EACbC,WAAY,EACZC,WAAY,EACZH,cAAe,GAGZtnE,sBACP,OAAOG,EAASq/F,eAGpBr1C,QAAQ7nD,GAEJ,OADAhE,KAAKgE,KAAOA,EACLhE,KAGXupE,SAASR,GAEL,OADA/oE,KAAKqiC,eAAe0mC,MAAQA,EACrB/oE,KAGX8V,OACI,MAAMggB,EAAM91B,KAAK6V,eACjB7V,KAAKmW,cACL,MAAMzN,EAAK1I,KAAKooC,OAASpoC,KAAKooC,MAAMnQ,aAAaiZ,eAAelxC,KAAKgE,OAChEhE,KAAK4/F,MAAQ5/F,KAAK4/F,KAAK3nE,aAAaiZ,eAAelxC,KAAKgE,OACzD,EAGE+sE,EAAW/wE,KAAKooC,OAASpoC,KAAKooC,MAAM0P,gBAAoB93C,KAAK4/F,MAAQ5/F,KAAK4/F,KAAK3nE,aAAa0+B,gBAAmB,EAG/GyqC,EAAUphG,KAAK4/F,MAAQ5/F,KAAK4/F,KAAK9nD,eAAiB93C,KAAK4/F,KAAKnwE,WAAa,GAC1EzvB,KAAKooC,OAASpoC,KAAKooC,MAAMnQ,aAAa2+B,aAAe,IACtD,EACJ52D,KAAKqiC,eAAe2mC,cAAgBo4B,EAASrwB,EAtDrD,YAAchtE,GACNm9F,GAAe9+D,OACfv+B,EAAI,0BAA2BE,GAqD/B,CAAE,qCAAsCgtE,EAAS,UAAWqwB,EAAQ,KAAM14F,GAC1EogE,GAAQY,cAAc5zC,EAAKi7C,EAASroE,EAAG1I,KAAKqiC,iBCjBpD,SAAS,MAAKt+B,GACNs9F,GAAQj/D,OACRv+B,EAAI,mBAAoBE,GDmBhCm9F,GAAe9+D,OAAQ,ECdhB,MAAMi/D,GAQT5/F,YAAYysB,EAAU,IAClB,GAAE,gBAAiBA,GACnBluB,KAAKkuB,QAAU,CACXgJ,MAAO,CACHse,MAAO,IAEXwvB,SAAU,CACNF,UAAW,GACXx6D,MAAO,IACPC,OAAQ,IACRw6D,WAAY,QAEhBl2D,KAAMwyF,GAAQrqF,WAElBhX,KAAKu1B,WAAWrH,GAWpB3oB,wBAAwBu/D,EAAWx6D,EAAQ,IAAKC,EAAS,KACrD,OAAO,IAAI82F,GAAQ,CAAEr8B,SAAU,CAAEF,UAAAA,EAAWx6D,MAAAA,EAAOC,OAAAA,KAEvDirB,QACIx1B,KAAKshG,QAAU,GACfthG,KAAKuhG,QAAU,GACfvhG,KAAKo2E,OAAS,GACdp2E,KAAKmmC,OAAS,GACdnmC,KAAKk3B,WAAQtzB,EAEjB2xB,WAAWrH,GACPluB,KAAKkuB,QAAU7tB,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAIrX,KAAKkuB,SAAUA,GAC9DluB,KAAKwhG,eACLxhG,KAAKw1B,QAETgsE,eACI,MAAM,UAAE18B,EAAS,MAAEx6D,EAAK,OAAEC,EAAM,WAAEw6D,GAAe/kE,KAAKkuB,QAAQ82C,SAC9D,GAAiB,MAAbF,EACA,OAEJ,GAAiB,IAAbA,EAEA,MADA,GAAE9kE,MACI,IAAImD,EAAa,gDAE3B,IAAIshE,EAAUzkE,KAAKkuB,QAAQ82C,SAASP,QACpC,QAAgB7gE,IAAZ6gE,EAAuB,CAOnBA,EADA5F,GALSlwD,SAAS8D,eAAeqyD,IAMvBR,GAASK,SAASC,OAGlBN,GAASK,SAASE,IAGpC7kE,KAAK8U,QAAUwvD,GAASY,aAAaJ,EAAWL,EAASn6D,EAAOC,EAAQw6D,GAE5EruD,aACI,OAAO1W,KAAK8U,QAEhB6B,WAAW7B,GAEP,OADA9U,KAAK8U,QAAUA,EACR9U,KAEX46B,WACI,OAAO56B,KAAKk3B,MAEhBuqE,YACI,OAAOzhG,KAAKmmC,OAGhB6rC,MAAM/jD,GACF,MAAMq+B,EAAatsD,KAAKkuB,QAAQgJ,MAAMse,MAChC05B,EAAI7uE,OAAOgX,OAAO,CAAE1T,EAAG,EAAG+E,EAAG,EAAG4B,MAAOtK,KAAKkuB,QAAQ82C,SAAS16D,MAAqB,EAAbgiD,EAAkBp+B,QAAS,CAAEukD,yBAAuC,EAAbnmB,IAAsBr+B,GAClJiJ,EAAQ,IAAI86C,GAAM9C,EAAEvrE,EAAGurE,EAAExmE,EAAGwmE,EAAE5kE,MAAO4kE,EAAEhhD,SAI7C,OAHAluB,KAAKo2E,OAAO5hE,KAAK0iB,GACjBA,EAAMvgB,WAAW3W,KAAK8U,SACtB9U,KAAKk3B,MAAQA,EACNA,EAEXsoE,SAASvxE,GACL,MAAMq+B,EAAatsD,KAAKkuB,QAAQgJ,MAAMse,MAChC05B,EAAI7uE,OAAOgX,OAAO,CAAE1T,EAAG,EAAG+E,EAAG,EAAG4B,MAAOtK,KAAKkuB,QAAQ82C,SAAS16D,MAAqB,EAAbgiD,EAAkBp+B,QAAS,CAAEukD,yBAAuC,IAAbnmB,IAAsBr+B,GAClJiJ,EAAQ,IAAIsoE,GAAStwB,EAAEvrE,EAAGurE,EAAExmE,EAAGwmE,EAAE5kE,MAAO4kE,EAAEhhD,SAIhD,OAHAluB,KAAKo2E,OAAO5hE,KAAK0iB,GACjBA,EAAMvgB,WAAW3W,KAAK8U,SACtB9U,KAAKk3B,MAAQA,EACNA,EAEXp0B,UAAUi1C,GACN,MAAMte,EAAO,IAAI32B,GAAUi1C,GAK3B,OAJI/3C,KAAKk3B,OACLuC,EAAKxC,SAASj3B,KAAKk3B,OACvBuC,EAAK9iB,WAAW3W,KAAK8U,SACrB9U,KAAKshG,QAAQ9sF,KAAKilB,GACXA,EAEX06D,UAAUhlE,EAAO4oB,EAAY7pB,GACzB,MAAMuL,EAAO,IAAI06D,GAAUhlE,EAAO4oB,EAAY7pB,GAK9C,OAJIluB,KAAKk3B,OACLuC,EAAKxC,SAASj3B,KAAKk3B,OACvBuC,EAAK9iB,WAAW3W,KAAK8U,SACrB9U,KAAKshG,QAAQ9sF,KAAKilB,GACXA,EAEXmgE,WAAW9nF,EAAMimC,EAAY7pB,GACzB,MAAMuL,EAAO,IAAImgE,GAAW9nF,EAAMimC,EAAY7pB,GAK9C,OAJIluB,KAAKk3B,OACLuC,EAAKxC,SAASj3B,KAAKk3B,OACvBuC,EAAK9iB,WAAW3W,KAAK8U,SACrB9U,KAAKshG,QAAQ9sF,KAAKilB,GACXA,EAEX+5D,UAAUz7C,GACN,MAAM2pD,EAAY,IAAIlO,GAAUz7C,GAKhC,OAJI/3C,KAAKk3B,OACLwqE,EAAUzqE,SAASj3B,KAAKk3B,OAC5BwqE,EAAU/qF,WAAW3W,KAAK8U,SAC1B9U,KAAKshG,QAAQ9sF,KAAKktF,GACXA,EAEXlzB,SAASz2B,GACL,MAAM4pD,EAAW,IAAInzB,GAASz2B,GAK9B,OAJI/3C,KAAKk3B,OACLyqE,EAAS1qE,SAASj3B,KAAKk3B,OAC3ByqE,EAAShrF,WAAW3W,KAAK8U,SACzB9U,KAAKshG,QAAQ9sF,KAAKmtF,GACXA,EAEXriD,QAAQrxB,EAAS,IACb,MAAM2zE,EAAU,IAAItiD,GAAQrxB,EAAOnc,MAKnC,OAJI9R,KAAKk3B,OACL0qE,EAAQ3qE,SAASj3B,KAAKk3B,OAC1B0qE,EAAQjrF,WAAW3W,KAAK8U,SACxB9U,KAAKshG,QAAQ9sF,KAAKotF,GACXA,EAEXpW,SAASv9D,GACL,MAAMihD,EAAI7uE,OAAOgX,OAAO,CAAEvF,KAAM,SAAUoc,QAAS,CAC3C/f,KAAM,UACNqgC,gBAAY5qC,IACXqqB,GACH4zE,EAAW,IAAIrW,GAAStc,EAAEp9D,KAAMo9D,EAAEhhD,QAAQ/f,KAAM+gE,EAAEhhD,QAAQsgB,YAKhE,OAJIxuC,KAAKk3B,OACL2qE,EAAS5qE,SAASj3B,KAAKk3B,OAC3B2qE,EAASlrF,WAAW3W,KAAK8U,SACzB9U,KAAKshG,QAAQ9sF,KAAKqtF,GACXA,EAEXb,YAAY/yE,GACR,MAAMihD,EAAI7uE,OAAOgX,OAAO,CAAE2/C,KAAM,OAAS/oC,GACnC6zE,EAAc,IAAId,GAAY9xB,EAAElY,MAKtC,OAJIh3D,KAAKk3B,OACL4qE,EAAY7qE,SAASj3B,KAAKk3B,OAC9B4qE,EAAYnrF,WAAW3W,KAAK8U,SAC5B9U,KAAKshG,QAAQ9sF,KAAKstF,GACXA,EAEX/L,WAAW9nE,GACP,MAAM8zE,EAAa,IAAIhM,GAAW9nE,EAAO9tB,IAAK8tB,EAAOm9C,UAAWn9C,EAAO89C,UAKvE,OAJI/rE,KAAKk3B,OACL6qE,EAAW9qE,SAASj3B,KAAKk3B,OAC7B6qE,EAAWprF,WAAW3W,KAAK8U,SAC3B9U,KAAKshG,QAAQ9sF,KAAKutF,GACXA,EAEX7+F,QAAQ60C,GACJ,MAAMte,EAAO,IAAIv2B,GAAQ60C,GAKzB,OAJI/3C,KAAKk3B,OACLuC,EAAKxC,SAASj3B,KAAKk3B,OACvBuC,EAAK9iB,WAAW3W,KAAK8U,SACrB9U,KAAKshG,QAAQ9sF,KAAKilB,GACXA,EAEXn3B,UAAUy1C,GACN,MAAMte,EAAO,IAAIn3B,GAAUy1C,GAI3B,OAHI/3C,KAAKk3B,OACLuC,EAAKxC,SAASj3B,KAAKk3B,OACvBuC,EAAK9iB,WAAW3W,KAAK8U,SACd2kB,EAEXj3B,eAAeyrB,GACX,MAAMysC,EAAQ,IAAIl4D,GAAeyrB,EAAO4B,MAAO5B,EAAOorC,MAEtD,OADAqB,EAAM/jD,WAAW3W,KAAK8U,SACf4lD,EAEX54D,WAAWmsB,GACP,MAAMyvC,EAAQ,IAAI57D,GAAWmsB,EAAOnc,MAEpC,OADA4rD,EAAM/mD,WAAW3W,KAAK8U,SACf4oD,EAEX17D,WAAWisB,GACP,MAAMihD,EAAI7uE,OAAOgX,OAAO,CAAEtS,KAAM,IAAKi9F,SAAUn0D,GAA4B9U,OAAQkpE,SAAUn0D,GAA0B6B,QAAU1hB,GAC3HugB,EAAa,IAAIxsC,GAAWktE,EAAEnqE,MAKpC,OAJAypC,EAAW6B,iBAAiB6+B,EAAE8yB,UAC9BxzD,EAAWyB,yBAAyBi/B,EAAE+yB,UACtCzzD,EAAW53B,QAAQs4D,EAAErgE,MACrB2/B,EAAW73B,WAAW3W,KAAK8U,SACpB05B,EAEXgT,YAAYvzB,GACR,MAAMihD,EAAI7uE,OAAOgX,OAAO,CAAE4qF,SAAU,MAAOD,SAAU,SAAUE,SAAS,EAAMrgD,aAAa,GAAQ5zB,GAC7F00B,EAAc,IAAInB,GAiBxB,OAhBAmB,EAAYwE,cAAc+nB,EAAE8yB,UAC5Br/C,EAAYsE,YAAYioB,EAAE+yB,UAC1Bt/C,EAAYiC,iBAAiBsqB,EAAEgzB,SAC/Bv/C,EAAYuC,eAAegqB,EAAErtB,aAGD,iBAAjBqtB,EAAEpgE,YAAiD,iBAAfogE,EAAExhE,SACjB,iBAAjBwhE,EAAEngE,WACT4zC,EAAY/rC,QAAQs4D,EAAEpgE,WAAYogE,EAAExhE,SAAUwhE,EAAEngE,YAEhD4zC,EAAY/rC,QAAQs4D,EAAEpgE,WAAYogE,EAAExhE,SAAU,IAEvB,iBAAfwhE,EAAExhE,UACdi1C,EAAYlrC,YAAYy3D,EAAExhE,UAE9Bi1C,EAAYhsC,WAAW3W,KAAK8U,SACrB6tC,EAEXxQ,aAAalkB,GACT,MAAMihD,EAAI7uE,OAAOgX,OAAO,CAAEvF,KAAM,KAAMwhB,SAAU,SAAWrF,GACrDqkB,EAAe,IAAIH,GAAa+8B,EAAEp9D,MAGxC,OAFAwgC,EAAalY,YAAY80C,EAAE57C,UAC3Bgf,EAAa37B,WAAW3W,KAAK8U,SACtBw9B,EAEXmqB,SAAS3qD,EAAMmc,GACX,MAAMC,EAAU7tB,OAAOgX,OAAO,CAAEvF,KAAAA,EAAMwhB,SAAU,EAAG7Y,WAAY,IAAMwT,GAC/D4uC,EAAW,IAAIJ,GAAS3qD,GAY9B,OAXA+qD,EAASziC,YAAYlM,EAAQoF,UACzBpF,EAAQi0E,iBACRtlC,EAASY,mBAAmBvvC,EAAQi0E,iBAEpCj0E,EAAQk0E,iBACRvlC,EAASe,mBAAmB1vC,EAAQk0E,sBAET,IAApBl0E,EAAQwuC,SACfG,EAASW,WAAWtvC,EAAQwuC,SAEhCG,EAASlmD,WAAW3W,KAAK8U,SAClB+nD,EAEX4jC,aAAaxyE,GACT,MAAMihD,EAAI7uE,OAAOgX,OAAO,CAAEtS,KAAM,IAAKqpB,SAAU,IAAKwrB,KAAM,EAAG51C,KAAM,GAAKiqB,GAClElpB,EAAO,IAAI07F,GAAa,CAC1B17F,KAAMmqE,EAAEnqE,KACRf,KAAMkrE,EAAElrE,KACRoqB,SAAU8gD,EAAE9gD,SACZwrB,KAAMs1B,EAAEt1B,OAMZ,OAJI55C,KAAKk3B,OACLnyB,EAAKkyB,SAASj3B,KAAKk3B,OACvBnyB,EAAK4R,WAAW3W,KAAK8U,SACrB9U,KAAKshG,QAAQ9sF,KAAKzP,GACXA,EAEX8lD,UAAU58B,GACN,MAAMihD,EAAI7uE,OAAOgX,OAAO,CAAEuzC,OAAQ,IAAKt3B,SAAU,QAAUrF,GACrD68B,EAAY,IAAIvB,GAAe2lB,EAAEtkB,QAGvC,OAFAE,EAAU1wB,YAAY80C,EAAE57C,UACxBw3B,EAAUn0C,WAAW3W,KAAK8U,SACnBg2C,EAEXmb,aAAah4C,EAAQo4C,GAAa,GAC9B,MAAMC,EAAe,IAAIL,GAAah4C,EAAO28B,QAI7C,OAHA0b,EAAalsC,YAAYnM,EAAOqF,UAChCgzC,EAAa3vD,WAAW3W,KAAK8U,SAC7BwxD,EAAaS,cAAcV,GACpBC,EAEX3L,cACI,OAAO,IAAIA,GAEfkP,kBACI,OAAO,IAAIA,GAEfosB,iBAAiBhoE,GACb,MAAMo0E,EAAc3+F,EAAQuqB,EAAOioE,mBAAoB,sBACjDoM,EAAmB,IAAIrM,GAAiBoM,EAAap0E,GAG3D,OAFAq0E,EAAiB3rF,WAAW3W,KAAK8U,SACjC9U,KAAKshG,QAAQ9sF,KAAK8tF,GACXA,EAEXvrC,MAAM9oC,GACF,MAAMihD,EAAI7uE,OAAOgX,OAAO,CAAE2/C,KAAM,OAAS/oC,GACnCqY,EAAQ,IAAIywB,GAAMmY,EAAElY,MAE1B,OADAh3D,KAAKmmC,OAAO3xB,KAAK8xB,GACVA,EAEXkwC,eAAevoD,GACX,MAAMuuE,EAAY,IAAIhmB,GAAevoD,EAAO2oD,UAAW3oD,EAAO4oD,cAG9D,OAFA2lB,EAAUx+C,QAAQ/vB,EAAOnc,MAAM6E,WAAW3W,KAAK8U,SAC/C9U,KAAKshG,QAAQ9sF,KAAKgoF,GACXA,EAEX1iC,UAAU5rC,GACN,OAAO,IAAI4rC,GAAU5rC,GAEzB+yD,OAAOhzD,GACH,MAAMihD,EAAI7uE,OAAOgX,OAAO,CAAEwY,MAAO,GAAI3B,QAAS,IAAMD,GAC9CsoB,EAAS,IAAI0qC,GAAO/R,EAAEr/C,MAAOq/C,EAAEhhD,SAASvX,WAAW3W,KAAK8U,SAE9D,OADA9U,KAAKshG,QAAQ9sF,KAAK+hC,GACXA,EAEX4jB,KAAKlsC,GACD,IAAIrgB,EAAIkF,EAAIqzC,EAAImO,EAAIC,EACpB,MAAMxZ,EAAO,IAAIof,GAAKlsC,EAAO4B,MAAiC,QAAzBjiB,EAAKqgB,EAAOC,eAA4B,IAAPtgB,OAAgB,EAASA,EAAGkhD,UAAUn4C,WAAW3W,KAAK8U,SAQ5H,OAPAimC,EAAK0sC,iBAA8G,QAA5FthC,EAA+B,QAAzBrzC,EAAKmb,EAAOC,eAA4B,IAAPpb,OAAgB,EAASA,EAAGyvF,2BAAwC,IAAPp8C,EAAgBA,EAAK,KAClH,QAAzBmO,EAAKrmC,EAAOC,eAA4B,IAAPomC,OAAgB,EAASA,EAAGkuC,wBAC9DniG,OAAOg4B,QAAkC,QAAzBk8B,EAAKtmC,EAAOC,eAA4B,IAAPqmC,OAAgB,EAASA,EAAGiuC,uBAAuB7tF,SAAQ,EAAE2kE,EAAW14C,MACrHma,EAAK4sC,qBAAqBniF,OAAO8zE,GAAY14C,MAGrD5gC,KAAKshG,QAAQ9sF,KAAKumC,GACXA,EAEX0xC,MAAMx+D,GACF,MAAMw0E,EAAQ,IAAIhW,GAAMx+D,EAAOy+D,KAAMz+D,EAAO0+D,GAAI1+D,EAAOC,SAASvX,WAAW3W,KAAK8U,SAEhF,OADA9U,KAAKshG,QAAQ9sF,KAAKiuF,GACXA,EAEXrtC,SAASnnC,GACL,IAAIrgB,EACJ,MAAM80F,EAAM,IAAIttC,GAAS,CACrBQ,WAAY3nC,EAAOy+D,KACnBvjC,UAAWl7B,EAAO0+D,GAClB92B,cAAe5nC,EAAO4nC,cACtBC,aAAc7nC,EAAO6nC,cACtB7nC,EAAOlpB,MAKV,OAJ8B,QAAzB6I,EAAKqgB,EAAOC,eAA4B,IAAPtgB,OAAgB,EAASA,EAAGgzB,YAC9D8hE,EAAI94D,aAAa3b,EAAOC,QAAQ0S,WACpC8hE,EAAI/rF,WAAW3W,KAAK8U,SACpB9U,KAAKshG,QAAQ9sF,KAAKkuF,GACXA,EAEX5I,UAAU7rE,GACN,IAAIrgB,EAAIkF,EACR,MAAM9O,EAAO,IAAI81F,GAAU,CACvBlkC,WAAY3nC,EAAOy+D,KACnBvjC,UAAWl7B,EAAO0+D,GAClB92B,cAAe5nC,EAAO4nC,cACtBC,aAAc7nC,EAAO6nC,eAQzB,OAN8B,QAAzBloD,EAAKqgB,EAAOC,eAA4B,IAAPtgB,OAAgB,EAASA,EAAG7I,OAC9Df,EAAK6rE,QAAQ5hD,EAAOC,QAAQnpB,OACF,QAAzB+N,EAAKmb,EAAOC,eAA4B,IAAPpb,OAAgB,EAASA,EAAGjE,OAC9D7K,EAAK4S,QAAQqX,EAAOC,QAAQrf,MAChC7K,EAAK2S,WAAW3W,KAAK8U,SACrB9U,KAAKshG,QAAQ9sF,KAAKxQ,GACXA,EAEXk9F,eAAejzE,GACX,MAAM00E,EAAiB,IAAIzB,GAAe,CACtC94D,MAAOna,EAAOy+D,KACdkT,KAAM3xE,EAAO0+D,KAQjB,OANI1+D,EAAOC,QAAQlqB,MACf2+F,EAAe92C,QAAQ59B,EAAOC,QAAQlqB,MACtCiqB,EAAOC,QAAQ66C,OACf45B,EAAep5B,SAASt7C,EAAOC,QAAQ66C,OAC3C45B,EAAehsF,WAAW3W,KAAK8U,SAC/B9U,KAAKshG,QAAQ9sF,KAAKmuF,GACXA,EAEXjD,YAAYzxE,GACR,MAAM20E,EAAc,IAAIlD,GAAY,CAChCt3D,MAAOna,EAAOy+D,KACdkT,KAAM3xE,EAAO0+D,GACb5nF,KAAMkpB,EAAOlpB,KACb0pE,YAAaxgD,EAAOC,QAAQugD,YAC5Bn7C,SAAUrF,EAAOC,QAAQoF,WAQ7B,OANIrF,EAAOC,QAAQlqB,MACf4+F,EAAY/2C,QAAQ59B,EAAOC,QAAQlqB,MACnCiqB,EAAOC,QAAQrf,MACf+zF,EAAYhsF,QAAQqX,EAAOC,QAAQrf,MACvC+zF,EAAYjsF,WAAW3W,KAAK8U,SAC5B9U,KAAKshG,QAAQ9sF,KAAKouF,GACXA,EAEX9G,OAAO7tE,EAAS,IACZA,EAAOxuB,QAAUO,KACjB,MAAM6iG,EAAS,IAAI/G,GAAO7tE,GAAQtX,WAAW3W,KAAK8U,SAElD,OADA9U,KAAKuhG,QAAQ/sF,KAAKquF,GACXA,EAaX9S,UAAU7hE,EAAU,IAEhB,OADAA,EAAQzuB,QAAUO,KACX,IAAI+vF,GAAU7hE,GAEzBqqE,aAAatqE,GACT,MAAMihD,EAAI7uE,OAAOgX,OAAO,CAAEwY,MAAO,GAAI3B,QAAS,CACtC7f,MAAO,UACN4f,GACH4qE,EAAQ,IAAIN,GAAarpB,EAAEr/C,OAIjC,OAHAgpE,EAAM76C,QAAQu6C,GAAat6C,WAAWixB,EAAEhhD,QAAQ7f,QAChDwqF,EAAMliF,WAAW3W,KAAK8U,SACtB9U,KAAKshG,QAAQ9sF,KAAKqkF,GACXA,EAEXr+B,aAAavsC,GACT,MAAMihD,EAAI7uE,OAAOgX,OAAO,CAAEwY,MAAO,IAAM5B,GACjCysC,EAAQ,IAAIF,GAAa0U,EAAEr/C,OAEjC,OADA6qC,EAAM/jD,WAAW3W,KAAK8U,SACf4lD,EAGX5kD,OACI,MAAMggB,EAAM91B,KAAK8U,QACjB9U,KAAKuhG,QAAQ5sF,SAASzM,GAAMA,EAAEyO,WAAWmf,GAAKkkC,WAC9Ch6D,KAAKo2E,OAAOzhE,SAASzM,GAAMA,EAAEyO,WAAWmf,GAAKhgB,SAC7C9V,KAAKmmC,OAAOxxB,SAASokD,GAAMA,EAAEpiD,WAAWmf,GAAKhgB,SAC7C9V,KAAKshG,QAAQ3sF,SAAShU,IACbA,EAAEuV,cACHvV,EAAEgW,WAAWmf,GAAKhgB,UAE1B9V,KAAKuhG,QAAQ5sF,SAASzM,GAAMA,EAAEyO,WAAWmf,GAAKhgB,SAC9C9V,KAAKw1B,SAIb6rE,GAAQj/D,OAAQ,EAEhBi/D,GAAQrqF,UAAY3W,OAAOgX,OAAO,GAAIzD,EAAQoD,WC9evC,MAAM8rF,WAAqB5/F,GACnBxB,sBACP,OAAOG,EAASihG,aAEpBrhG,YAAYs2C,GACRx0C,MAAMw0C,GAAY,GAClB/3C,KAAKqiC,eAAiBhiC,OAAOgX,OAAOhX,OAAOgX,OAAO,GAAIrX,KAAKqiC,gBAAiB,CAExE/N,QAAS,GAETpF,MAAO,GAEPrgB,KAAM,SAAStB,EAAKiB,eACxBxO,KAAKggD,eClBN,MAAM+iD,GACTthG,YAAYtB,GACRH,KAAK4mC,MAAQ,IAAIzL,GACjBn7B,KAAKgjG,OAAO7iG,GAEhB6iG,OAAO7iG,GAGH,OAFAH,KAAKG,IAAMA,EACXH,KAAKw1B,QACEx1B,KAEXijG,SACI,OAAOjjG,KAAKG,IAEhBq1B,QACIx1B,KAAKmR,SAAWnR,KAAK4mC,MAAMzG,YAAYngC,KAAKG,KAC5CH,KAAKogC,UAAYpgC,KAAKmR,SAAS3R,KAC3BQ,KAAKmR,SAASsJ,aACdza,KAAKogC,WAAapgC,KAAKmR,SAASsJ,YAEpC,IAD0B0gB,GAAMkD,WAAWr+B,KAAKmR,SAASW,MAErD,MAAM,IAAI3O,EAAa,eAAgB,yBAAyBnD,KAAKG,OAEzEH,KAAKkvB,MAAQlvB,KAAK4mC,MAAMzF,cAAcnhC,KAAK4mC,MAAMvG,aAAargC,KAAKogC,WAAYjF,GAAMkD,WAAWr+B,KAAKmR,SAASW,OAC9G9R,KAAKgiC,SAAW,GAChBhiC,KAAKkjG,gBAAkB,GACvBljG,KAAKmjG,wBAA0B,GAC/B,MAAMphE,EAAe5G,GAAMK,aAAax7B,KAAKmR,SAAS3R,MACtD,IAAK,IAAI+I,EAAI,EAAGA,EAAI4yB,GAAMG,MAAM11B,SAAU2C,EAAG,CACzC,MAAM0J,GAAS8vB,EAAex5B,GAAK4yB,GAAMG,MAAM11B,OACzCq8B,EAAW9G,GAAMG,MAAMrpB,GACvBiwB,EAAWliC,KAAK4mC,MAAM9F,oBAAoBmB,EAAUjiC,KAAKkvB,MAAM3mB,IACrEvI,KAAKgiC,SAASC,GAAYC,EAC1BliC,KAAKkjG,gBAAgBljG,KAAKkvB,MAAM3mB,IAAM25B,EACtCliC,KAAKmjG,wBAAwBnjG,KAAKkvB,MAAM3mB,IAAM25B,EAElD,OAAOliC,KAEXojG,cAAcjjG,GACV,MAAMX,EAAOQ,KAAK4mC,MAAMzG,YAAYhgC,GAAKX,KACnCu1B,EAAQ/0B,KAAK4mC,MAAM7G,aAAa//B,KAAKgiC,SAASxiC,IACpD,MAAO,CACHi6B,KAAMz5B,KAAKgiC,SAASxiC,GACpBib,WAAYsa,EAAMta,YAG1B4oF,WAAW5pE,GACPA,EAAOA,EAAKvrB,cACZ,MAAM6mB,EAAQ/0B,KAAK4mC,MAAM7G,aAAatG,GAEhC6pE,EAAYtjG,KAAKgiC,SAASjN,EAAMv1B,MAChC+jG,EAAWvjG,KAAK4mC,MAAM7G,aAAaujE,GACzC,GAAIA,IAAc7pE,EACd,MAAO,CACHA,KAAM6pE,EACN7oF,WAAYsa,EAAMta,WAClB+oF,QAAQ,GAIhB,MAAMC,EAAYzjG,KAAKkjG,gBAAgBljG,KAAK4mC,MAAMvG,aAAa5G,IAC/D,GAAiB,MAAbgqE,EACA,MAAO,CACHhqE,KAAMgqE,EACNhpF,WAAYza,KAAK4mC,MAAM7G,aAAa0jE,GAAWhpF,WAC/C+oF,QAAQ,GAIhB,MAAME,EAAoB1jG,KAAKmjG,wBAAwBnjG,KAAK4mC,MAAMvG,aAAa5G,IAC/E,OAAyB,MAArBiqE,GACA1jG,KAAKgiC,SAASuhE,EAAS/jG,MAAQkkG,SACxB1jG,KAAKkjG,gBAAgBljG,KAAK4mC,MAAMvG,aAAaijE,IACpDtjG,KAAKkjG,gBAAgBljG,KAAK4mC,MAAMvG,aAAa5G,IAASiqE,EAC/C,CACHjqE,KAAMiqE,EACNjpF,WAAYza,KAAK4mC,MAAM7G,aAAa2jE,GAAmBjpF,WACvD+oF,QAAQ,IAIZD,EAAS/jG,OAASi6B,UACXz5B,KAAKkjG,gBAAgBljG,KAAK4mC,MAAMvG,aAAargC,KAAKgiC,SAASjN,EAAMv1B,QACxEQ,KAAKkjG,gBAAgBljG,KAAK4mC,MAAMvG,aAAakjE,EAAS/jG,OAAS+jG,EAAS/jG,KACxEQ,KAAKgiC,SAASuhE,EAAS/jG,MAAQ+jG,EAAS/jG,KACjC,CACHi6B,KAAM8pE,EAAS/jG,KACfib,gBAAY7W,EACZ4/F,QAAQ,YAITxjG,KAAKkjG,gBAAgBljG,KAAK4mC,MAAMvG,aAAargC,KAAKgiC,SAASjN,EAAMv1B,QACxEQ,KAAKkjG,gBAAgBljG,KAAK4mC,MAAMvG,aAAa5G,IAASA,SAC/Cz5B,KAAKgiC,SAASuhE,EAAS/jG,MAC9BQ,KAAKgiC,SAASuhE,EAAS/jG,MAAQi6B,EACxB,CACHA,KAAAA,EACAhf,WAAYsa,EAAMta,WAClB+oF,QAAQ,KC9Fb,MAAMG,WAAqB/vF,EAa9BnS,YAAYouB,EAAO/d,GACfvO,QACAvD,KAAKq1D,SAASxlC,GACd7vB,KAAK4jG,QAAU9xF,EACf9R,KAAKszB,SAAWkF,EAASE,SAASS,MAClCn5B,KAAKqiC,eAAiB,CAClB93B,OAAQ,GACR+pB,QAAS,EACTuvE,cAAe,EACfC,eAAgB,EAChBC,kBAAmB,EACnBC,iBAAkB,GAGftiG,sBACP,OAAOG,EAAS8hG,aAgBpBp+F,4BAA4BuwB,EAAK4W,EAAW7c,EAAO/d,EAAMwhB,EAAUpF,GAC/D,IAAItgB,EAAIkF,EACR,MAAMmxF,EAAMv3D,EAAUw3D,cACtB,GAAW,MAAPD,EACA,MAAM,IAAI9gG,EAAa,eAAgB,+DAE3C,MAAMghG,EAAaF,GAA2C,QAAnCr2F,EAAKsgB,EAAQ81E,wBAAqC,IAAPp2F,EAAgBA,EAAK,GACrFw2F,EAAaH,GAA4C,QAApCnxF,EAAKob,EAAQ61E,yBAAsC,IAAPjxF,EAAgBA,EAAK,GACtFuxF,EAAkB,CACpB95F,OAAQ2jB,EAAQ3jB,OAChB+pB,QAASpG,EAAQoG,QACjBuvE,cAAeM,EACfL,eAAgBM,EAChBL,kBAAmB,EACnBC,iBAAkB,GAEtB,IAAIL,GAAa,CACb/tC,WAAY/lC,EAAM+lC,WAClBzM,UAAWt5B,EAAMs5B,WAClBr3C,GACE6E,WAAWmf,GACXwuE,iBAAiBD,GACjBjqE,YAAY9G,GACZxd,OAETskB,YAAY9G,GAIR,OAHIA,IAAakF,EAASE,SAASO,OAAS3F,IAAakF,EAASE,SAASS,QACvEn5B,KAAKszB,SAAWA,GAEbtzB,KAEXskG,iBAAiBp2E,GAOb,OANsB,MAAlBA,EAAQ3jB,QACW,MAAnB2jB,EAAQoG,SACiB,MAAzBpG,EAAQ21E,eACkB,MAA1B31E,EAAQ41E,iBACR9jG,KAAKqiC,eAAiBnU,GAEnBluB,KAOXq1D,SAASxlC,GACL,IAAKA,EAAM+lC,aAAe/lC,EAAMs5B,UAC5B,MAAM,IAAIhmD,EAAa,eAAgB,6DAK3C,OAHAnD,KAAK6vB,MAAQA,EACb7vB,KAAK41D,WAAa/lC,EAAM+lC,WACxB51D,KAAKmpD,UAAYt5B,EAAMs5B,UAChBnpD,KAEXusF,cAAct+D,GACV,MAAM6H,EAAM91B,KAAK6V,eACjB,IAAI0uF,EAAMvkG,KAAKqiC,eAAe/N,QAAU,GACpCA,EAAUrG,EAAOo/D,QACjBrtF,KAAKszB,WAAakF,EAASE,SAASO,QACpCsrE,EAAa,GAANA,EACPjwE,EAAUrG,EAAOo/D,QAAUp/D,EAAOu2E,cAEtC,MAAMC,EAAUzkG,KAAKqiC,eAAewhE,cAC9Ba,EAAU1kG,KAAKqiC,eAAeyhE,eAEpC,OADAhuE,EAAIQ,YACIt2B,KAAK4jG,SACT,KAAKD,GAAa7xF,KAAK6yF,MACnB7uE,EAAIS,OAAOtI,EAAOq/D,OAASoX,EAASpwE,EAAUiwE,GAC9CzuE,EAAIU,OAAOvI,EAAOm/D,QAAUqX,EAASnwE,EAAUt0B,KAAKqiC,eAAe93B,OAAS,EAAIg6F,GAChFzuE,EAAIU,OAAOvI,EAAOq/D,OAASoX,EAASpwE,EAAUt0B,KAAKqiC,eAAe93B,OAASg6F,GAC3E,MACJ,KAAKZ,GAAa7xF,KAAK8yF,QACnB9uE,EAAIS,OAAOtI,EAAOm/D,QAAUqX,EAASnwE,EAAUiwE,GAC/CzuE,EAAIU,OAAOvI,EAAOq/D,OAASoX,EAASpwE,EAAUt0B,KAAKqiC,eAAe93B,OAAS,EAAIg6F,GAC/EzuE,EAAIU,OAAOvI,EAAOm/D,QAAUqX,EAASnwE,EAAUt0B,KAAKqiC,eAAe93B,OAASg6F,GAMpFzuE,EAAIrH,SACJqH,EAAI4e,YAER5+B,OACI9V,KAAK6V,eACL7V,KAAKmW,cACL,MAAM6xE,EAAYhoF,KAAK41D,WACjBrL,EAAWvqD,KAAKmpD,UACtB,IAAK6+B,IAAcz9B,EACf,MAAM,IAAIpnD,EAAa,SAAU,0BACrC,MAAMilC,EAAQ4/C,EAAU3/C,mBAAmBroC,KAAKszB,SAAU,GACpD8qB,EAAMmM,EAASliB,mBAAmBroC,KAAKszB,SAAU,GACvDtzB,KAAKusF,cAAc,CACfa,QAAShlD,EAAMzkC,EACf2pF,OAAQlvC,EAAIz6C,EACZ0pF,QAASrF,EAAU/vD,aAAalvB,OAASi/E,EAAU/vD,aAAagS,YAChEsjD,OAAQhjC,EAAStyB,aAAalvB,OAASwhD,EAAStyB,aAAagS,YAC7Du6D,aAAcxc,EAAU/vD,aAAagS,eAIjD05D,GAAa7xF,KAAO,CAChB6yF,MAAO,EACPC,QAAS,GCrJN,MAAMC,WAAiBhuC,GAgB1Bp1D,YAAYouB,EAAO+Q,GAGf,GAFAr9B,MAAMssB,EAAO,QAER+Q,EAAW,CACZ,IAAIkkE,EAAaj1E,EAAM+lC,WAAWgS,eAAe,GAAG34C,KAC1B,iBAAf61E,IACPA,EAAajgG,SAASigG,EAAY,KAEtC,IAAIC,EAAYl1E,EAAMs5B,UAAUye,eAAe,GAAG34C,KACzB,iBAAd81E,IACPA,EAAYlgG,SAASkgG,EAAW,KAKhCnkE,EADAn7B,MAAMq/F,IAAer/F,MAAMs/F,GACfF,GAASG,SAGTF,EAAaC,EAAYF,GAASI,WAAaJ,GAASG,SAG5EhlG,KAAK4gC,UAAYA,EACjB5gC,KAAKqiC,eAAeizB,IAAM,GAC1Bt1D,KAAKqiC,eAAekzB,IAAM,GAC1Bv1D,KAAKqiC,eAAe/N,QAAU,GAC9Bt0B,KAAKwX,YAEE9V,sBACP,OAAOG,EAASgjG,SAETG,sBACP,OAAO,EAEAC,wBACP,OAAQ,EAEZ1/F,qBAAqBsqB,GACjB,OAAO,IAAIg1E,GAASh1E,EAAOg1E,GAASG,UAExCz/F,uBAAuBsqB,GACnB,OAAO,IAAIg1E,GAASh1E,EAAOg1E,GAASI,YAExCjvC,UAAU/nC,GACN,GAA+B,IAA3BA,EAAOgoC,SAASrwD,QAA0C,IAA1BqoB,EAAOioC,QAAQtwD,OAC/C,MAAM,IAAIzC,EAAa,eAAgB,yBAE3C,MAAM2yB,EAAM91B,KAAK6V,eACXugD,EAAanoC,EAAOmoC,WACpBH,EAAWhoC,EAAOgoC,SAClBE,EAAYloC,EAAOkoC,UACnBv1B,EAAY3S,EAAO2S,UACzB,GAAIA,IAAcikE,GAASG,UAAYpkE,IAAcikE,GAASI,WAC1D,MAAM,IAAI9hG,EAAa,WAAY,2BAGvC,MAAM0yD,EAAgB71D,KAAK6vB,MAAMgmC,cACjC,IAAK,IAAIttD,EAAI,EAAGA,EAAIstD,EAAcjwD,SAAU2C,EAAG,CAC3C,MAAM28F,EAAUjvC,EAASJ,EAActtD,IAAMvI,KAAKqiC,eAAe/N,QACjE,GAAI7uB,MAAMy/F,GACN,MAAM,IAAI/hG,EAAa,eAAgB,oCAE3C2yB,EAAIQ,YACJR,EAAIS,OAAO6/B,EAAY8uC,EAAU,EAAItkE,GACrC9K,EAAIU,OAAO2/B,EAAW+uC,EAAU,EAAItkE,GACpC9K,EAAI4e,YACJ5e,EAAIrH,SAERzuB,KAAKmW,eAGb0uF,GAAS7tF,UAAY,CACjBzI,OAAQhB,EAAK8D,MACblD,KAAM,GACNC,OAAQjC,EAAWihC,KACnB/+B,MAAOjC,EAAUoD,QCzFd,MAAM21F,WAAgB3sE,EAIzB/2B,YAAY2W,GACR7U,QACAvD,KAAKoY,IAAMA,EACXpY,KAAKszB,SAAWkF,EAASE,SAASK,OAClC/4B,KAAKqD,KAAO,WAEZrD,KAAKolG,gBAAkB,EACvBplG,KAAKqlG,mBAAqB,EAEnB3jG,sBACP,OAAOG,EAASsjG,QAGpBrvF,OACI,MAAMggB,EAAM91B,KAAK6V,eACX4jB,EAAOz5B,KAAK05B,oBAClB15B,KAAKmW,cACL,MAAM24B,EAAgBrV,EAAKuV,mBAE3B,IAAIrrC,EADU81B,EAAK4O,mBAAmBroC,KAAKszB,SAAUtzB,KAAKiS,OAC5CtO,EACd,MAAMy7B,EAAK/8B,EAAYo3B,GACjBvK,EAAQkQ,EAAK98B,GAAUgyF,MAAQ,EAC/BhzF,EAAW,YAAW89B,EAAK,QAAU,WACrCwD,EAAY/U,EAAOgV,mBACzB,IAAIyiE,EAAY1iE,EAAU3xB,aAAa,GAAG3P,aAAsBwtC,EAEhEw2D,GAAatlG,KAAKolG,gBAClB,MAAM76F,EAASvK,KAAKoY,IAAMktF,EAC1B,IAAI58F,EAAI+wB,EAAK6X,iBAAiB3G,MAAQpgC,EAElC7B,GADAomC,EAAgB,EACXlM,EAAU3xB,aAAa,GAAG3P,qBAA8B4tB,EAGxD0T,EAAU3xB,aAAa,GAAG3P,mBAA4B4tB,EAE/D,MAAM6Y,EAAYnF,EAAU3xB,aAAa,GAAG3P,WAC5CqC,GAAKi/B,EAAU3xB,aAAa,GAAG3P,gBAAuBwtC,IAAkBtG,GAAKe,GAAK,KAAO,UACzF,IAAK,IAAIhhC,EAAI,EAAGA,EAAIvI,KAAKoY,MAAO7P,EAC5B+mB,EAAMo9B,YAAY52B,EAAKnyB,EAAG+E,EAAGq/B,EAAW/nC,KAAKqD,KAAM,CAAE/B,SAAAA,EAAU4tB,MAAOlvB,KAAKqlG,qBAC3E38F,GAAK48F,GChDV,MAAMC,GAKT9jG,YAAY+jG,EAAe,mCACvBxlG,KAAKylG,aAAe,GAEpBzlG,KAAK0lG,UAAUF,GAERG,mBACP,MAAO,CACHC,SAAU,0BACVC,OAAQ,0BACRC,MAAO,0BACP/mE,GAAI,gCACJgnE,cAAe,uBAIvBC,cAAchmE,GACV,OAAOnS,EAAOgjC,cAAc7wB,GAAYtR,UAM5Cg3E,UAAUF,GACFD,GAAOI,MAAMH,KACbA,EAAeD,GAAOI,MAAMH,IAEhCxlG,KAAKylG,aAAe,GACpB,MAAMtyF,EAAOqyF,EAAah9F,MAAM,WAChC,GAAoB,IAAhB2K,EAAKvN,OACL,MAAM,IAAIzC,EAAa,eAAgB,0BAA0BqiG,KAErE,IAAK,IAAIj9F,EAAI,EAAGA,EAAI4K,EAAKvN,SAAU2C,EAC/BvI,KAAKylG,aAAal9F,GAAKvI,KAAKgmG,cAAc7yF,EAAK5K,IAIvD09F,kBAAkBC,GACd,MAAMh+F,EAAI1C,OAAO0gG,GACjB,GAAIh+F,EAAI,GAAKA,EAAIlI,KAAKylG,aAAa7/F,OAC/B,MAAM,IAAIzC,EAAa,eAAgB,uCAAuCnD,KAAKylG,aAAa7/F,UAAUsgG,KAE9G,OAAOlmG,KAAKylG,aAAav9F,EAAI,GAGjCi+F,gBAAgBC,EAASF,GACrB,MAAMG,EAAcrmG,KAAKimG,kBAAkBC,GACrC99F,EAAI5C,OAAO4gG,GACjB,GAAIh+F,EAAI,EACJ,MAAM,IAAIjF,EAAa,eAAgB,oCAAoCijG,KAE/E,OAAOC,EAAcj+F,EAGzBk+F,eAAeF,EAASF,GACpB,MAAMl3E,EAAYhvB,KAAKmmG,gBAAgBC,EAASF,GAC1CjqF,EAAShX,KAAKyC,MAAMsnB,EAAY,IAChC5tB,EAAQ4tB,EAAY,GAC1B,MAAO,GAAGnB,EAAO04E,cAAcnlG,MAAU6a,KCnEjD,IAAI,GAAwC,SAAU3P,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUzL,GAAS,IAAM0L,EAAKL,EAAUM,KAAK3L,IAAW,MAAOT,GAAKiM,EAAOjM,IACpF,SAASqM,EAAS5L,GAAS,IAAM0L,EAAKL,EAAiB,MAAErL,IAAW,MAAOT,GAAKiM,EAAOjM,IACvF,SAASmM,EAAKG,GAJlB,IAAe7L,EAIa6L,EAAOC,KAAOP,EAAQM,EAAO7L,QAJ1CA,EAIyD6L,EAAO7L,MAJhDA,aAAiBoL,EAAIpL,EAAQ,IAAIoL,GAAE,SAAUG,GAAWA,EAAQvL,OAIT+L,KAAKN,EAAWG,GAClGF,GAAML,EAAYA,EAAUW,MAAMd,EAASC,GAAc,KAAKQ,YAqF/D,MAAMy5F,GACEC,mBACP,MAAO,CAEHC,QC/FW,gBDiGXryF,GChGM,2CDkGNsyF,KCjGQ,4BD8HhBphG,uBAAuBqhG,GAEnB,MAAM92F,EAAQ82F,EAAUxzF,KAAK5F,GAAaD,EAAKsC,KAAKrC,KAIpD,OAHAqgB,EAAOC,iBAAmBhe,EAC1Bwf,EAAMxB,iBAAmBhe,EAAM5L,QAC/BorB,EAAMgJ,kBAAoBsuE,EAAUziG,KAAK,KAClC2L,EAMXvK,sBAAsBiI,EAAUq5F,GAC5B,OAAO,GAAU7mG,UAAM,OAAQ,GAAQ,gBAK3CuF,sBAEI,OADcsoB,EAAOC,iBACR1a,KAAKvE,GAASA,EAAK4B,YAEzBkgB,qCACP,OAAO9C,EAAO8C,wBAEPA,mCAAwBgE,GAC/B9G,EAAO8C,wBAA0BgE,EAE1BpE,4BACP,OAAO1C,EAAO0C,eAEPA,0BAAemoC,GACtB7qC,EAAO0C,eAAiBmoC,EAEjBpoC,iCACP,OAAOzC,EAAOyC,oBAEPA,+BAAoBlvB,GAC3BysB,EAAOyC,oBAAsBlvB,EAEtBmuB,kCACP,OAAO1B,EAAO0B,qBAEPA,gCAAqBnuB,GAC5BysB,EAAO0B,qBAAuBnuB,EAEvB2W,wBACP,OAAO8V,EAAO9V,WAEPA,sBAAW3W,GAClBysB,EAAO9V,WAAa3W,EAEbwvB,kCACP,OAAO/C,EAAO+C,qBAEPA,gCAAqBxvB,GAC5BysB,EAAO+C,qBAAuBxvB,EAEvByvB,iCACP,OAAOhD,EAAOgD,oBAEPA,+BAAoBzvB,GAC3BysB,EAAOgD,oBAAsBzvB,EAEtBsvB,kCACP,OAAO7C,EAAO6C,qBAEPA,gCAAqBtvB,GAC5BysB,EAAO6C,qBAAuBtvB,EAEvBqvB,yBACP,OAAO5C,EAAO4C,YAEPA,uBAAYrvB,GACnBysB,EAAO4C,YAAcrvB,EAEdovB,wBACP,OAAO3C,EAAO2C,WAEPA,sBAAWpvB,GAClBysB,EAAO2C,WAAapvB,EAEbqxB,qBACP,OAAO5E,EAAO4E,QAEP1B,2BACP,OAAOlD,EAAOkD,cAEPQ,qBACP,OAAO1D,EAAO0D,QAElBhsB,oBAAoBoqB,GAChB,OAAO9B,EAAO8T,aAAahS,GAE/BpqB,uBAAuBoqB,GACnB,OAAO9B,EAAOi5E,gBAAgBn3E,GAElCpqB,0BACI,OAAOsoB,EAAOk5E,mBAElBxhG,sBAAsBwoB,GAClB,OAAOF,EAAOW,eAAeT,GAGjCxoB,qBAAqBpF,EAAK4tB,EAAME,GAC5B,OAAOJ,EAAOgjC,cAAc1wD,EAAK4tB,EAAME,GAE3C1oB,uBAAuB6oB,GACnB,OAAOP,EAAOksB,gBAAgB3rB,IAGtCo4E,GAAK1kG,WAAaA,GAClB0kG,GAAKxkG,WAAaA,GAClBwkG,GAAKr0D,aAAeA,GACpBq0D,GAAKtkG,QAAUA,GACfskG,GAAKlnD,QAAUA,GACfknD,GAAKrsC,KAAOA,GACZqsC,GAAKhnD,KAAOA,GACZgnD,GAAK/9F,YAAcA,EACnB+9F,GAAK18F,uBAAyBA,EAC9B08F,GAAKrnC,cAAgBA,GACrBqnC,GAAKhlD,YAAcA,GACnBglD,GAAKt8B,KAAOA,GACZs8B,GAAKhb,SAAWA,GAChBgb,GAAK7a,UAAYA,GACjB6a,GAAK/Z,MAAQA,GACb+Z,GAAKpkG,IAAMA,GACXokG,GAAKzW,UAAYA,GACjByW,GAAK5yF,QAAUA,EACf4yF,GAAKnF,QAAUA,GACfmF,GAAKj5F,KAAOA,EACZi5F,GAAK1sC,UAAYA,GACjB0sC,GAAKrhG,SAAWA,EAChBqhG,GAAKj9C,eAAiBA,GACtBi9C,GAAKhT,UAAYA,GACjBgT,GAAKl3E,MAAQA,EACbk3E,GAAKrS,UAAYA,GACjBqS,GAAKlkG,UAAYA,GACjBkkG,GAAKhkG,eAAiBA,GACtBgkG,GAAK1D,aAAeA,GACpB0D,GAAKzD,WAAaA,GAClByD,GAAKh8B,aAAeA,GACpBg8B,GAAKzQ,WAAaA,GAClByQ,GAAKhuE,SAAWA,EAChBguE,GAAK38B,gBAAkBA,GACvB28B,GAAKvQ,iBAAmBA,GACxBuQ,GAAKrrE,MAAQA,GACbqrE,GAAK9jG,KAAOA,GACZ8jG,GAAKr7C,SAAWA,GAChBq7C,GAAKhsC,aAAeA,GACpBgsC,GAAK/pC,SAAWA,GAChB+pC,GAAKhoC,YAAcA,GACnBgoC,GAAK5Y,OAASA,GACd4Y,GAAKjO,aAAeA,GACpBiO,GAAKx0F,SAAWA,EAChBw0F,GAAK5jG,cAAgBA,GACrB4jG,GAAKliC,SAAWA,GAChBkiC,GAAK5M,WAAaA,GAClB4M,GAAKn6B,WAAaA,GAClBm6B,GAAKx0B,MAAQA,GACbw0B,GAAKhwB,eAAiBA,GACtBgwB,GAAK7C,aAAeA,GACpB6C,GAAK1M,UAAYA,GACjB0M,GAAKjqD,cAAgBA,GACrBiqD,GAAK1jG,UAAYA,GACjB0jG,GAAKr4B,WAAaA,GAClBq4B,GAAK72B,UAAYA,GACjB62B,GAAKpxC,SAAWA,GAChBoxC,GAAKh+D,KAAOA,GACZg+D,GAAKvgC,aAAeA,GACpBugC,GAAKj/B,OAASA,GACdi/B,GAAKjlC,WAAaA,GAClBilC,GAAK1K,OAASA,GACd0K,GAAKtjG,QAAUA,GACfsjG,GAAK3B,SAAWA,GAChB2B,GAAKhH,SAAWA,GAChBgH,GAAK3vC,OAASA,GACd2vC,GAAK9G,YAAcA,GACnB8G,GAAK/F,aAAeA,GACpB+F,GAAKh7D,cAAgBA,GACrBg7D,GAAKh4B,SAAWA,GAChBg4B,GAAK7rC,YAAcA,GACnB6rC,GAAKt1B,cAAgBA,GACrBs1B,GAAKxF,YAAcA,GACnBwF,GAAKrB,QAAUA,GACfqB,GAAKjB,OAASA,GACdiB,GAAKvlB,OAASA,GACdulB,GAAK19B,QAAUA,GACf09B,GAAKtF,eAAiBA,GACtBsF,GAAKzvC,MAAQA,GACbyvC,GAAKz2B,MAAQA,GAGby2B,GAAK34D,4BAA8BA,GACnC24D,GAAK14D,0BAA4BA,GACjC04D,GAAKrqD,6BAA+BA,GACpCqqD,GAAKpqD,2BAA6BA,GAClCoqD,GAAKnqD,YAAcA,GACnBmqD,GAAKlqD,gBAAkBA,GACvBkqD,GAAKha,cAAgBA,GACrBga,GAAKr6F,WAAaA,EAClBq6F,GAAKp6F,UAAYA,EACjBo6F,GAAK3yE,iBAAmBA,EACxB2yE,GAAKxiC,iBAAmBA,GACxBwiC,GAAKviC,oBAAsBA,GAC3BuiC,GAAKtqD,YAAcA,GACnBsqD,GAAKvqD,sBAAwBA,GAC7BuqD,GAAKriC,UAAYA,GACjBqiC,GAAK7G,oBAAsBA,GAC3B6G,GAAKtiC,kBAAoBA,GACzBsiC,GAAK1vC,UAAYA,GElVV,MAAMkwC,GAAqB,CAC9Bp2D,QAAS,GACT5/B,OAAQ,CACJ,IAAK,CACD0kB,MAAO,EACPC,MAAO,IACPsxE,MAAO,EACP3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,EACjBhV,aAAc,KAElB,EAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,EAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,EAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,EAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,EACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,EAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,EAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,EAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,EAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,MAAO,EACP3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,EACjBhV,aAAc,KAElB,EAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,EAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,EACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,MAAO,IACP3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,EACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBy5D,EAAG,CACCxxE,MAAO,GACPC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,EACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,MAAO,IACP3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,OAAQ,EACRC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,iBAAkB,EAClBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,MAAO,IACP3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,MAAO,IACP3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,GACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,MAAO,IACP3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,GACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,OAAQ,GACRC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,iBAAkB,GAClBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,MAAO,GACP3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,EACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,MAAO,kBACP3/C,MAAO,IACP1xB,GAAI,kBACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,MAAO,GACP3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBh0B,EAAG,CACCic,MAAO,GACPC,MAAO,IACPsxE,OAAQ,EACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB9zB,EAAG,CACC+b,MAAO,GACPC,MAAO,IACPsxE,MAAO,EACP3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBt1B,EAAG,CACCud,MAAO,GACPC,MAAO,IACPsxE,OAAQ,EACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBl0B,EAAG,CACCmc,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB/zB,EAAG,CACCgc,MAAO,GACPC,MAAO,IACPsxE,OAAQ,EACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBn1B,EAAG,CACCod,MAAO,GACPC,MAAO,IACPsxE,MAAO,GACP3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBp0B,EAAG,CACCqc,MAAO,GACPC,MAAO,IACPsxE,OAAQ,EACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB9Q,EAAG,CACCjH,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB05D,EAAG,CACCzxE,MAAO,GACPC,MAAO,IACPsxE,OAAQ,EACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB25D,EAAG,CACC1xE,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB45D,EAAG,CACC3xE,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBtL,EAAG,CACCzM,MAAO,GACPC,MAAO,IACPsxE,OAAQ,EACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBnP,EAAG,CACC5I,MAAO,GACPC,MAAO,IACPsxE,MAAO,EACP3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB65D,EAAG,CACC5xE,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB85D,EAAG,CACC7xE,MAAO,GACPC,MAAO,IACPsxE,OAAQ,EACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBjhC,EAAG,CACCkpB,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB+5D,EAAG,CACC9xE,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB3xB,EAAG,CACC4Z,MAAO,GACPC,MAAO,IACPsxE,MAAO,GACP3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB/Q,EAAG,CACChH,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB5Q,EAAG,CACCnH,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBg6D,EAAG,CACC/xE,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBi6D,EAAG,CACChyE,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB3Q,EAAG,CACCpH,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBzxB,EAAG,CACC0Z,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBk6D,EAAG,CACCjyE,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBm6D,EAAG,CACClyE,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,IACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,KAAM,CACF/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,OAAQ,GACRC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,IACP1xB,GAAI,KACJ6sB,iBAAkB,GAClBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,MAAO,IACP3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBo6D,EAAG,CACCnyE,MAAO,GACPC,MAAO,IACPsxE,OAAQ,IACR3/C,OAAQ,EACR1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,MAAO,IACP3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBhpC,EAAG,CACCixB,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB/oC,EAAG,CACCgxB,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB3hC,EAAG,CACC4pB,MAAO,GACPC,MAAO,IACPsxE,OAAQ,EACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBvnC,EAAG,CACCwvB,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB9sC,EAAG,CACC+0B,MAAO,GACPC,MAAO,IACPsxE,OAAQ,EACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBrlC,EAAG,CACCstB,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBhtC,EAAG,CACCi1B,MAAO,GACPC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB7kC,EAAG,CACC8sB,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBllC,EAAG,CACCmtB,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBkW,EAAG,CACCjuB,OAAQ,IACRC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,iBAAkB,IAClBhV,aAAc,KAElBp6B,EAAG,CACCqiB,MAAO,GACPC,MAAO,IACPsxE,OAAQ,EACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBq6D,EAAG,CACCpyE,MAAO,GACPC,MAAO,IACPsxE,OAAQ,EACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBxb,EAAG,CACCyD,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB7oC,EAAG,CACC8wB,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBrtC,EAAG,CACCs1B,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElByhC,EAAG,CACCx5C,MAAO,GACPC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBtlC,EAAG,CACCutB,MAAO,GACPC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBxsC,EAAG,CACCy0B,MAAO,GACPC,MAAO,IACPsxE,OAAQ,EACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBvlC,EAAG,CACCwtB,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB/nC,EAAG,CACCgwB,MAAO,GACPC,MAAO,IACPsxE,OAAQ,EACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBxnC,EAAG,CACCyvB,MAAO,GACPC,MAAO,IACPsxE,OAAQ,EACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBsrB,EAAG,CACCrjC,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB9kC,EAAG,CACC+sB,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB9pC,EAAG,CACC+xB,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB/kC,EAAG,CACCgtB,OAAQ,GACRC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,iBAAkB,GAClBhV,aAAc,KAElB0hC,EAAG,CACCz5C,MAAO,GACPC,MAAO,IACPsxE,OAAQ,EACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,EACPC,MAAO,EACPsxE,MAAO,EACP3/C,MAAO,EACP1xB,GAAI,EACJ6sB,gBAAiB,EACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,EACPC,MAAO,EACPsxE,MAAO,EACP3/C,MAAO,EACP1xB,GAAI,EACJ6sB,gBAAiB,EACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,EACPC,MAAO,EACPsxE,MAAO,EACP3/C,MAAO,EACP1xB,GAAI,EACJ6sB,gBAAiB,EACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,EACPC,MAAO,EACPsxE,MAAO,EACP3/C,MAAO,EACP1xB,GAAI,EACJ6sB,gBAAiB,EACjBhV,aAAc,MAGtB3+B,WAAY,iBACZgC,WAAY,IACZi3F,YAAa,4BC71BJC,GAAiB,CAC1Bp3D,QAAS,GACT5/B,OAAQ,CACJ,IAAK,CACD0kB,MAAO,EACPC,MAAO,IACPsxE,MAAO,EACP3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,EACjBhV,aAAc,KAElB,EAAK,CACD/X,MAAO,IACPC,MAAO,KACPsxE,OAAQ,GACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,IACjBhV,aAAc,MAElB,EAAK,CACD/X,MAAO,IACPC,MAAO,IACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,IACjBhV,aAAc,KAElB,EAAK,CACD/X,MAAO,iBACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB,EAAK,CACD/X,MAAO,kBACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB,EAAK,CACD/X,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB,EAAK,CACD/X,MAAO,iBACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB,EAAK,CACD/X,MAAO,IACPC,MAAO,KACPsxE,OAAQ,GACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,IACjBhV,aAAc,MAElB,EAAK,CACD/X,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,iBAAkB,GAClBhV,aAAc,MAElB,EAAK,CACD/X,MAAO,GACPC,MAAO,KACPsxE,OAAQ,GACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB,EAAK,CACD/X,MAAO,GACPC,MAAO,KACPsxE,OAAQ,GACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB,IAAK,CACD/X,MAAO,IACPC,MAAO,IACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,IACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,IACPC,MAAO,IACPsxE,MAAO,KACP3/C,MAAO,KACP1xB,GAAI,IACJ6sB,gBAAiB,IACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElBy5D,EAAG,CACCxxE,MAAO,kBACPC,MAAO,KACPsxE,OAAQ,IACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,KACPsxE,OAAQ,GACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,KACPsxE,OAAQ,GACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB,IAAK,CACD/X,MAAO,IACPC,MAAO,IACPsxE,MAAO,KACP3/C,MAAO,KACP1xB,GAAI,IACJ6sB,gBAAiB,IACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,IACPC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,IACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,MAAO,IACP3/C,MAAO,KACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,KACPsxE,MAAO,IACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,IACPC,MAAO,IACPsxE,MAAO,IACP3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,IACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,IACPC,MAAO,IACPsxE,MAAO,EACP3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,IACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,EACPC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,EACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,IACPC,MAAO,IACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,IACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,MAAO,IACP3/C,MAAO,KACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB,IAAK,CACD/X,MAAO,IACPC,MAAO,IACPsxE,MAAO,IACP3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,IACjBhV,aAAc,MAElB,IAAK,CACD/X,MAAO,IACPC,MAAO,IACPsxE,MAAO,GACP3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,IACjBhV,aAAc,MAElB,IAAK,CACD/X,MAAO,kBACPC,MAAO,IACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,iBACPC,MAAO,mBACPsxE,OAAQ,IACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElBh0B,EAAG,CACCic,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB9zB,EAAG,CACC+b,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElBt1B,EAAG,CACCud,MAAO,GACPC,MAAO,KACPsxE,OAAQ,GACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElBl0B,EAAG,CACCmc,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB/zB,EAAG,CACCgc,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElBn1B,EAAG,CACCod,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElBp0B,EAAG,CACCqc,MAAO,GACPC,MAAO,KACPsxE,OAAQ,GACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB9Q,EAAG,CACCjH,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB05D,EAAG,CACCzxE,MAAO,GACPC,MAAO,IACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB25D,EAAG,CACC1xE,MAAO,GACPC,MAAO,KACPsxE,OAAQ,GACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB45D,EAAG,CACC3xE,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElBtL,EAAG,CACCzM,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElBnP,EAAG,CACC5I,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB65D,EAAG,CACC5xE,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB85D,EAAG,CACC7xE,MAAO,GACPC,MAAO,KACPsxE,OAAQ,GACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElBjhC,EAAG,CACCkpB,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB+5D,EAAG,CACC9xE,MAAO,GACPC,MAAO,KACPsxE,OAAQ,IACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB3xB,EAAG,CACC4Z,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB/Q,EAAG,CACChH,MAAO,IACPC,MAAO,KACPsxE,OAAQ,GACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,IACjBhV,aAAc,MAElB5Q,EAAG,CACCnH,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElBg6D,EAAG,CACC/xE,MAAO,GACPC,MAAO,KACPsxE,OAAQ,GACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElBi6D,EAAG,CACChyE,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB3Q,EAAG,CACCpH,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElBzxB,EAAG,CACC0Z,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElBk6D,EAAG,CACCjyE,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElBm6D,EAAG,CACClyE,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB,IAAK,CACD/X,MAAO,IACPC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,IACjBhV,aAAc,KAElB,KAAM,CACF/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,MAAO,IACP3/C,MAAO,KACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBo6D,EAAG,CACCnyE,MAAO,IACPC,MAAO,KACPsxE,OAAQ,IACR3/C,MAAO,EACP1xB,GAAI,IACJ6sB,gBAAiB,IACjBhV,aAAc,MAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,MAAO,KACP3/C,MAAO,KACP1xB,GAAI,IACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBhpC,EAAG,CACCixB,MAAO,GACPC,MAAO,KACPsxE,OAAQ,GACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB/oC,EAAG,CACCgxB,OAAQ,GACRC,MAAO,KACPsxE,OAAQ,GACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,iBAAkB,GAClBhV,aAAc,MAElB3hC,EAAG,CACC4pB,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElBvnC,EAAG,CACCwvB,MAAO,GACPC,MAAO,KACPsxE,OAAQ,GACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB9sC,EAAG,CACC+0B,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElBrlC,EAAG,CACCstB,MAAO,GACPC,MAAO,IACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBhtC,EAAG,CACCi1B,MAAO,GACPC,MAAO,KACPsxE,OAAQ,IACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB7kC,EAAG,CACC8sB,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElBllC,EAAG,CACCmtB,MAAO,GACPC,MAAO,IACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBkW,EAAG,CACCjuB,OAAQ,GACRC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,iBAAkB,GAClBhV,aAAc,KAElBp6B,EAAG,CACCqiB,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElBq6D,EAAG,CACCpyE,MAAO,GACPC,MAAO,IACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBxb,EAAG,CACCyD,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB7oC,EAAG,CACC8wB,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElBrtC,EAAG,CACCs1B,MAAO,GACPC,MAAO,KACPsxE,OAAQ,GACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElByhC,EAAG,CACCx5C,MAAO,GACPC,MAAO,KACPsxE,OAAQ,IACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElBtlC,EAAG,CACCutB,MAAO,GACPC,MAAO,KACPsxE,OAAQ,IACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElBxsC,EAAG,CACCy0B,MAAO,GACPC,MAAO,IACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBvlC,EAAG,CACCwtB,MAAO,IACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,IACjBhV,aAAc,MAElB/nC,EAAG,CACCgwB,MAAO,GACPC,MAAO,IACPsxE,OAAQ,GACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,KAElBxnC,EAAG,CACCyvB,MAAO,GACPC,MAAO,KACPsxE,OAAQ,GACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElBsrB,EAAG,CACCrjC,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB9kC,EAAG,CACC+sB,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB9pC,EAAG,CACC+xB,MAAO,GACPC,MAAO,KACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB/kC,EAAG,CACCgtB,MAAO,GACPC,MAAO,KACPsxE,OAAQ,IACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB0hC,EAAG,CACCz5C,MAAO,GACPC,MAAO,IACPsxE,MAAO,EACP3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,MAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,IACPC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,IACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,GACPC,MAAO,IACPsxE,OAAQ,IACR3/C,MAAO,KACP1xB,GAAI,KACJ6sB,gBAAiB,GACjBhV,aAAc,KAElB,IAAK,CACD/X,MAAO,IACPC,MAAO,KACPsxE,MAAO,IACP3/C,MAAO,IACP1xB,GAAI,IACJ6sB,gBAAiB,IACjBhV,aAAc,OAGtB3+B,WAAY,cACZgC,WAAY,KACZi3F,YAAa,4BCx1BV,MAAME,GAUT1iG,qBAAqB0zE,EAAKivB,EAAKC,GAC3B,GAAIlvB,EAAIrzE,OAAS,EAAG,CAChB,MAAMwiG,EAAS,GACf,IAAIC,EACJpvB,EAAIp1C,KAAKqkE,GACT,IAAK,IAAI3/F,EAAI,EAAGA,EAAI0wE,EAAIrzE,SAAU2C,EACpB,IAANA,GAAY4/F,EAAGlvB,EAAI1wE,GAAI8/F,IACvBD,EAAO5zF,KAAKykE,EAAI1wE,IAEpB8/F,EAAOpvB,EAAI1wE,GAEf,OAAO6/F,EAGP,OAAOnvB,EAKf1zE,gBAAgB0zE,EAAKr4E,GACjB,IAAI2H,EAAI0wE,EAAIrzE,OACZ,KAAO2C,KACH,GAAI0wE,EAAI1wE,KAAO3H,EACX,OAAO,EAGf,OAAO,EAGX2E,wBAAwB+iG,GACpB,IAAKA,EACD,MAAM,IAAInlG,EAAa,cAAe,4BAA8BmlG,GAExE,MAAMjpC,EAAS1wD,SAAS8D,eAAe61F,GACvC,IAAMjpC,IAAUA,EAAO3oD,WACnB,MAAM,IAAIvT,EAAa,0BAA2B,8CAEtD,OAAOk8D,EAAO3oD,WAAW,MAI7BnR,iBAAiB2C,EAAGE,GAChB,MAAMmgG,GAAa,IAAIC,MAAOC,UAC9BrgG,IAEAvE,EAAIqE,GADY,IAAIsgG,MAAOC,UAAYF,EACtB,MAGrBhjG,oBAEI,OADY,IAAInC,OACLmB,OAGnB0jG,GAAIzB,KAAOA,GC1DX,IAAI,GAAwC,SAAUl6F,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUzL,GAAS,IAAM0L,EAAKL,EAAUM,KAAK3L,IAAW,MAAOT,GAAKiM,EAAOjM,IACpF,SAASqM,EAAS5L,GAAS,IAAM0L,EAAKL,EAAiB,MAAErL,IAAW,MAAOT,GAAKiM,EAAOjM,IACvF,SAASmM,EAAKG,GAJlB,IAAe7L,EAIa6L,EAAOC,KAAOP,EAAQM,EAAO7L,QAJ1CA,EAIyD6L,EAAO7L,MAJhDA,aAAiBoL,EAAIpL,EAAQ,IAAIoL,GAAE,SAAUG,GAAWA,EAAQvL,OAIT+L,KAAKN,EAAWG,GAClGF,GAAML,EAAYA,EAAUW,MAAMd,EAASC,GAAc,KAAKQ,YAStE,MAAM27F,GAAc,CAChBC,QAAS,4BACTC,SAAU,6BACVC,SAAU,6BACVC,OAAQ,2BACRC,OAAQ,4B,OASZvC,GAAKwC,eAAiB,CAACx7F,EAAUq5F,IAAqB,QAAU,OAAQ,OAAQ,GAAQ,YACpF,MAAMh4F,EAAOtB,EAAKsC,KAAKrC,GAEvB,GAAIqB,EAAK+B,UACL,OAEJ,IAAKi2F,EAAkB,CAEnB,KAAIr5F,KAAYk7F,IAIZ,MAAM,IAAIvlG,EAAa,cAAe,cAAcqK,qBAHpDq5F,EAAmB6B,GAAYl7F,GAMvC,IAAIy7F,EACJ,GAAgC,iBAArBpC,EAA+B,CACtC,MAAMlnG,QAAeupG,OAAiCrC,GAEhDsC,EADI3lG,IACyB,YAG/BylG,OAFuB,IAAhBE,QAAgE,IAA1BA,EAAY37F,GAE5C27F,EAAY37F,GAKZ7N,EAAO4N,UAIxB07F,EAAapC,EAEjBh4F,EAAK0B,QAAQ04F,EAAW54F,MACxBxB,EAAK2B,WAAWy4F,EAAW34F,YCnExB,WAEH,CACI,MAAM84F,EAAWpB,IACX,WAAEl5F,EAAU,WAAEgC,EAAU,OAAEE,GAAWo4F,EAC3C77F,EAAKsC,KAAKf,EAAYs6F,GAGtB,MAAMn9D,EAAe,IACrBT,GAAc69D,aAAa,CACvB96F,OAAQO,EACRgC,WAAAA,EACAE,OAAAA,EACAi7B,aAAAA,EACAL,YAAY,EACZE,MAAM,EACND,QAAQ,EACRE,kBAAmB,IACnBC,gBAAiB,IACjBL,QAAQ,EACR29D,YAAa,+DAIrB,CACI,MAAMF,EAAWpC,IACX,WAAEl4F,EAAU,WAAEgC,EAAU,OAAEE,GAAWo4F,EAC3C77F,EAAKsC,KAAKf,EAAYs6F,GAGtB,MAAMn9D,EAAe,IACrBT,GAAc69D,aAAa,CACvB96F,OAAQO,EACRgC,WAAAA,EACAE,OAAAA,EACAi7B,aAAAA,EACAL,YAAY,EACZE,MAAM,EACND,QAAQ,EACRE,kBAAmB,IACnBC,gBAAiB,IACjBL,QAAQ,EACR29D,YAAa,qDD4BzBC,G,anGlEA","sources":["webpack://Vex/webpack/universalModuleDefinition","webpack://Vex/webpack/bootstrap","webpack://Vex/webpack/runtime/define property getters","webpack://Vex/webpack/runtime/global","webpack://Vex/webpack/runtime/hasOwnProperty shorthand","webpack://Vex/webpack/runtime/make namespace object","webpack://Vex/./src/typeguard.ts","webpack://Vex/./src/util.ts","webpack://Vex/./src/fraction.ts","webpack://Vex/./src/boundingbox.ts","webpack://Vex/./src/boundingboxcomputation.ts","webpack://Vex/./src/font.ts","webpack://Vex/./src/registry.ts","webpack://Vex/./src/element.ts","webpack://Vex/./src/tables.ts","webpack://Vex/./src/glyph.ts","webpack://Vex/./src/modifier.ts","webpack://Vex/./src/music.ts","webpack://Vex/./src/accidental.ts","webpack://Vex/./src/stem.ts","webpack://Vex/./src/textformatter.ts","webpack://Vex/./src/annotation.ts","webpack://Vex/./src/articulation.ts","webpack://Vex/./src/rendercontext.ts","webpack://Vex/./src/tickable.ts","webpack://Vex/./src/note.ts","webpack://Vex/./src/stavemodifier.ts","webpack://Vex/./src/stavebarline.ts","webpack://Vex/./src/chordsymbol.ts","webpack://Vex/./src/barnote.ts","webpack://Vex/./src/bend.ts","webpack://Vex/./src/dot.ts","webpack://Vex/./src/frethandfinger.ts","webpack://Vex/./src/notehead.ts","webpack://Vex/./src/stemmablenote.ts","webpack://Vex/./src/stavenote.ts","webpack://Vex/./src/stavetie.ts","webpack://Vex/./src/tabtie.ts","webpack://Vex/./src/voice.ts","webpack://Vex/./src/gracenotegroup.ts","webpack://Vex/./src/notesubgroup.ts","webpack://Vex/./src/tickcontext.ts","webpack://Vex/./src/ornament.ts","webpack://Vex/./src/parenthesis.ts","webpack://Vex/./src/web.ts","webpack://Vex/./src/canvascontext.ts","webpack://Vex/./src/svgcontext.ts","webpack://Vex/./src/renderer.ts","webpack://Vex/./src/textnote.ts","webpack://Vex/./src/stavevolta.ts","webpack://Vex/./src/stringnumber.ts","webpack://Vex/./src/strokes.ts","webpack://Vex/./src/vibrato.ts","webpack://Vex/./src/modifiercontext.ts","webpack://Vex/./src/clef.ts","webpack://Vex/./src/keysignature.ts","webpack://Vex/./src/staverepetition.ts","webpack://Vex/./src/stavesection.ts","webpack://Vex/./src/stavetempo.ts","webpack://Vex/./src/stavetext.ts","webpack://Vex/./src/timesigglyph.ts","webpack://Vex/./src/timesignature.ts","webpack://Vex/./src/stave.ts","webpack://Vex/./src/staveconnector.ts","webpack://Vex/./src/formatter.ts","webpack://Vex/./src/tuplet.ts","webpack://Vex/./src/beam.ts","webpack://Vex/./src/clefnote.ts","webpack://Vex/./src/crescendo.ts","webpack://Vex/./src/curve.ts","webpack://Vex/./src/parser.ts","webpack://Vex/./src/easyscore.ts","webpack://Vex/./src/ghostnote.ts","webpack://Vex/./src/glyphnote.ts","webpack://Vex/./src/gracenote.ts","webpack://Vex/./src/keysignote.ts","webpack://Vex/./src/multimeasurerest.ts","webpack://Vex/./src/pedalmarking.ts","webpack://Vex/./src/repeatnote.ts","webpack://Vex/./src/staveline.ts","webpack://Vex/./src/system.ts","webpack://Vex/./src/tabnote.ts","webpack://Vex/./src/tabstave.ts","webpack://Vex/./src/textbracket.ts","webpack://Vex/./src/textdynamics.ts","webpack://Vex/./src/timesignote.ts","webpack://Vex/./src/vibratobracket.ts","webpack://Vex/./src/factory.ts","webpack://Vex/./src/gracetabnote.ts","webpack://Vex/./src/keymanager.ts","webpack://Vex/./src/stavehairpin.ts","webpack://Vex/./src/tabslide.ts","webpack://Vex/./src/tremolo.ts","webpack://Vex/./src/tuning.ts","webpack://Vex/./src/flow.ts","webpack://Vex/./src/version.ts","webpack://Vex/./src/fonts/petalumascript_glyphs.ts","webpack://Vex/./src/fonts/robotoslab_glyphs.ts","webpack://Vex/./src/vex.ts","webpack://Vex/./entry/vexflow-core.ts","webpack://Vex/./src/fonts/textfonts.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Vex\"] = factory();\n\telse\n\t\troot[\"Vex\"] = factory();\n})((typeof window !== 'undefined' ? window : typeof globalThis !== 'undefined' ? globalThis : this), function() {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Ron B. Yeh\n// MIT License\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Use instead of `instanceof` as a more flexible type guard.\n * @param obj check if this object's CATEGORY matches the provided category.\n * @param category a string representing a category of VexFlow objects.\n * @param checkAncestors defaults to `true`, so we walk up the prototype chain to look for a matching `CATEGORY`.\n * If `false`, we do not check the superclass or other ancestors.\n * @returns true if `obj` has a static `CATEGORY` property that matches `category`.\n */\nexport function isCategory(obj, category, checkAncestors = true) {\n // obj is undefined, a number, a primitive string, or null.\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n // `obj.constructor` is a reference to the constructor function that created the `obj` instance.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor\n let constructorFcn = obj.constructor;\n // Check if the object's static .CATEGORY matches the provided category.\n if (checkAncestors) {\n // Walk up the prototype chain to look for a matching obj.constructor.CATEGORY.\n while (obj !== null) {\n constructorFcn = obj.constructor;\n if ('CATEGORY' in constructorFcn && constructorFcn.CATEGORY === category) {\n return true;\n }\n obj = Object.getPrototypeOf(obj);\n }\n return false;\n }\n else {\n // Do not walk up the prototype chain. Just check this particular object's static .CATEGORY string.\n return 'CATEGORY' in constructorFcn && constructorFcn.CATEGORY === category;\n }\n}\nexport const isAccidental = (obj) => isCategory(obj, Category.Accidental);\nexport const isAnnotation = (obj) => isCategory(obj, Category.Annotation);\nexport const isBarline = (obj) => isCategory(obj, Category.Barline);\nexport const isDot = (obj) => isCategory(obj, Category.Dot);\nexport const isGraceNote = (obj) => isCategory(obj, Category.GraceNote);\nexport const isGraceNoteGroup = (obj) => isCategory(obj, Category.GraceNoteGroup);\nexport const isNote = (obj) => isCategory(obj, Category.Note);\nexport const isRenderContext = (obj) => isCategory(obj, Category.RenderContext);\nexport const isStaveNote = (obj) => isCategory(obj, Category.StaveNote);\nexport const isStemmableNote = (obj) => isCategory(obj, Category.StemmableNote);\nexport const isTabNote = (obj) => isCategory(obj, Category.TabNote);\n// 'const' enums are erased by the TypeScript compiler. The string values are inlined at all the use sites.\n// See: https://www.typescriptlang.org/docs/handbook/enums.html#const-enums\nexport var Category;\n(function (Category) {\n Category[\"Accidental\"] = \"Accidental\";\n Category[\"Annotation\"] = \"Annotation\";\n Category[\"Articulation\"] = \"Articulation\";\n Category[\"Barline\"] = \"Barline\";\n Category[\"BarNote\"] = \"BarNote\";\n Category[\"Beam\"] = \"Beam\";\n Category[\"Bend\"] = \"Bend\";\n Category[\"ChordSymbol\"] = \"ChordSymbol\";\n Category[\"Clef\"] = \"Clef\";\n Category[\"ClefNote\"] = \"ClefNote\";\n Category[\"Crescendo\"] = \"Crescendo\";\n Category[\"Curve\"] = \"Curve\";\n Category[\"Dot\"] = \"Dot\";\n Category[\"Element\"] = \"Element\";\n Category[\"Fraction\"] = \"Fraction\";\n Category[\"FretHandFinger\"] = \"FretHandFinger\";\n Category[\"GhostNote\"] = \"GhostNote\";\n Category[\"Glyph\"] = \"Glyph\";\n Category[\"GlyphNote\"] = \"GlyphNote\";\n Category[\"GraceNote\"] = \"GraceNote\";\n Category[\"GraceNoteGroup\"] = \"GraceNoteGroup\";\n Category[\"GraceTabNote\"] = \"GraceTabNote\";\n Category[\"KeySignature\"] = \"KeySignature\";\n Category[\"KeySigNote\"] = \"KeySigNote\";\n Category[\"Modifier\"] = \"Modifier\";\n Category[\"MultiMeasureRest\"] = \"MultiMeasureRest\";\n Category[\"Note\"] = \"Note\";\n Category[\"NoteHead\"] = \"NoteHead\";\n Category[\"NoteSubGroup\"] = \"NoteSubGroup\";\n Category[\"Ornament\"] = \"Ornament\";\n Category[\"Parenthesis\"] = \"Parenthesis\";\n Category[\"PedalMarking\"] = \"PedalMarking\";\n Category[\"RenderContext\"] = \"RenderContext\";\n Category[\"RepeatNote\"] = \"RepeatNote\";\n Category[\"Repetition\"] = \"Repetition\";\n Category[\"Stave\"] = \"Stave\";\n Category[\"StaveConnector\"] = \"StaveConnector\";\n Category[\"StaveHairpin\"] = \"StaveHairpin\";\n Category[\"StaveLine\"] = \"StaveLine\";\n Category[\"StaveModifier\"] = \"StaveModifier\";\n Category[\"StaveNote\"] = \"StaveNote\";\n Category[\"StaveSection\"] = \"StaveSection\";\n Category[\"StaveTempo\"] = \"StaveTempo\";\n Category[\"StaveText\"] = \"StaveText\";\n Category[\"StaveTie\"] = \"StaveTie\";\n Category[\"Stem\"] = \"Stem\";\n Category[\"StemmableNote\"] = \"StemmableNote\";\n Category[\"StringNumber\"] = \"StringNumber\";\n Category[\"Stroke\"] = \"Stroke\";\n Category[\"System\"] = \"System\";\n Category[\"TabNote\"] = \"TabNote\";\n Category[\"TabSlide\"] = \"TabSlide\";\n Category[\"TabStave\"] = \"TabStave\";\n Category[\"TabTie\"] = \"TabTie\";\n Category[\"TextBracket\"] = \"TextBracket\";\n Category[\"TextDynamics\"] = \"TextDynamics\";\n Category[\"TextNote\"] = \"TextNote\";\n Category[\"Tickable\"] = \"Tickable\";\n Category[\"TimeSignature\"] = \"TimeSignature\";\n Category[\"TimeSigNote\"] = \"TimeSigNote\";\n Category[\"Tremolo\"] = \"Tremolo\";\n Category[\"Tuplet\"] = \"Tuplet\";\n Category[\"Vibrato\"] = \"Vibrato\";\n Category[\"VibratoBracket\"] = \"VibratoBracket\";\n Category[\"Voice\"] = \"Voice\";\n Category[\"Volta\"] = \"Volta\";\n})(Category || (Category = {}));\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// Note: Keep this module free of imports to reduce the chance of circular dependencies.\n/** `RuntimeError` will be thrown by VexFlow classes in case of error. */\nexport class RuntimeError extends Error {\n constructor(code, message = '') {\n super('[RuntimeError] ' + code + ': ' + message);\n this.code = code;\n }\n}\n/** VexFlow can be used outside of the browser (e.g., Node) where `window` may not be defined. */\n// eslint-disable-next-line\nexport function globalObject() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return Function('return this')();\n}\n/**\n * Check that `x` is of type `T` and not `undefined`.\n * If `x` is `undefined`, throw a RuntimeError with the optionally provided error code and message.\n */\nexport function defined(x, code = 'undefined', message = '') {\n if (x === undefined) {\n throw new RuntimeError(code, message);\n }\n return x;\n}\n/** Default log function sends all arguments to console. */\n// eslint-disable-next-line\nexport function log(block, ...args) {\n if (!args)\n return;\n const line = Array.prototype.slice.call(args).join(' ');\n globalObject().console.log(block + ': ' + line);\n}\n/** Dump warning to console. */\n// eslint-disable-next-line\nexport function warn(...args) {\n const line = args.join(' ');\n const err = new Error();\n globalObject().console.log('Warning: ', line, err.stack);\n}\n/** Round number to nearest fractional value (`.5`, `.25`, etc.) */\nfunction roundN(x, n) {\n return x % n >= n / 2 ? parseInt(`${x / n}`, 10) * n + n : parseInt(`${x / n}`, 10) * n;\n}\n/** Locate the mid point between stave lines. Returns a fractional line if a space. */\nexport function midLine(a, b) {\n let mid_line = b + (a - b) / 2;\n if (mid_line % 2 > 0) {\n mid_line = roundN(mid_line * 10, 5) / 10;\n }\n return mid_line;\n}\n/**\n * Used by various classes (e.g., SVGContext) to provide a\n * unique prefix to element names (or other keys in shared namespaces).\n */\nexport function prefix(text) {\n return `vf-${text}`;\n}\n/**\n * Convert an arbitrary angle in radians to the equivalent one in the range [0, pi).\n */\nexport function normalizeAngle(a) {\n a = a % (2 * Math.PI);\n if (a < 0) {\n a += 2 * Math.PI;\n }\n return a;\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Author: Joshua Koo / @zz85\n// Author: @incompleteopus\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n/** Fraction represents a rational number. */\nexport class Fraction {\n /** Set the numerator and denominator. */\n constructor(numerator, denominator) {\n this.numerator = 1;\n this.denominator = 1;\n this.set(numerator, denominator);\n }\n static get CATEGORY() {\n return Category.Fraction;\n }\n /**\n * GCD: Greatest common divisor using the Euclidean algorithm.\n * Note: GCD(0, 0) => 0 and GCD(0, n) => n.\n */\n static GCD(a, b) {\n if (typeof a !== 'number' || Number.isNaN(a) || typeof b !== 'number' || Number.isNaN(b)) {\n throw new RuntimeError('BadArgument', `Invalid numbers: ${a}, ${b}`);\n }\n let t;\n while (b !== 0) {\n t = b;\n b = a % b;\n a = t;\n }\n return a;\n }\n /** LCM: Lowest common multiple. */\n static LCM(a, b) {\n return (a * b) / Fraction.GCD(a, b);\n }\n /** Lowest common multiple for more than two numbers. */\n static LCMM(args) {\n if (args.length === 0) {\n return 0;\n }\n else if (args.length === 1) {\n return args[0];\n }\n else if (args.length === 2) {\n return Fraction.LCM(args[0], args[1]);\n }\n else {\n // args.shift() removes the first number.\n // LCM the first number with the rest of the numbers.\n return Fraction.LCM(args.shift(), Fraction.LCMM(args));\n }\n }\n /** Set the numerator and denominator. */\n set(numerator = 1, denominator = 1) {\n this.numerator = numerator;\n this.denominator = denominator;\n return this;\n }\n /** Return the value of the fraction. */\n value() {\n return this.numerator / this.denominator;\n }\n /** Simplify numerator and denominator using GCD. */\n simplify() {\n let u = this.numerator;\n let d = this.denominator;\n const gcd = Fraction.GCD(u, d);\n u /= gcd;\n d /= gcd;\n if (d < 0) {\n d = -d;\n u = -u;\n }\n return this.set(u, d);\n }\n /** Add value of another fraction. */\n add(param1 = 0, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n const lcm = Fraction.LCM(this.denominator, otherDenominator);\n const a = lcm / this.denominator;\n const b = lcm / otherDenominator;\n const u = this.numerator * a + otherNumerator * b;\n return this.set(u, lcm);\n }\n /** Substract value of another fraction. */\n subtract(param1 = 0, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n const lcm = Fraction.LCM(this.denominator, otherDenominator);\n const a = lcm / this.denominator;\n const b = lcm / otherDenominator;\n const u = this.numerator * a - otherNumerator * b;\n return this.set(u, lcm);\n }\n /** Multiply by value of another fraction. */\n multiply(param1 = 1, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n return this.set(this.numerator * otherNumerator, this.denominator * otherDenominator);\n }\n /** Divide by value of another Fraction. */\n divide(param1 = 1, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n return this.set(this.numerator * otherDenominator, this.denominator * otherNumerator);\n }\n /** Simplify both sides and check if they are equal. */\n equals(compare) {\n const a = Fraction.__staticFractionA.copy(compare).simplify();\n const b = Fraction.__staticFractionB.copy(this).simplify();\n return a.numerator === b.numerator && a.denominator === b.denominator;\n }\n /** Greater than operator. */\n greaterThan(compare) {\n const a = Fraction.__staticFractionB.copy(this);\n a.subtract(compare);\n return a.numerator > 0;\n }\n /** Greater than or equals operator. */\n greaterThanEquals(compare) {\n const a = Fraction.__staticFractionB.copy(this);\n a.subtract(compare);\n return a.numerator >= 0;\n }\n /** Less than operator. */\n lessThan(compare) {\n return !this.greaterThanEquals(compare);\n }\n /** Less than or equals operator. */\n lessThanEquals(compare) {\n return !this.greaterThan(compare);\n }\n /** Return a new copy with current values. */\n clone() {\n return new Fraction(this.numerator, this.denominator);\n }\n /** Copy value of another fraction. */\n copy(other) {\n if (typeof other === 'number') {\n return this.set(other, 1);\n }\n else {\n return this.set(other.numerator, other.denominator);\n }\n }\n /** Return the integer component (eg. 5/2 => 2). */\n quotient() {\n return Math.floor(this.numerator / this.denominator);\n }\n /** Return the remainder component (eg. 5/2 => 1). */\n remainder() {\n return this.numerator % this.denominator;\n }\n /** Calculate absolute value. */\n makeAbs() {\n this.denominator = Math.abs(this.denominator);\n this.numerator = Math.abs(this.numerator);\n return this;\n }\n /** Return a raw string representation (eg. \"5/2\"). */\n toString() {\n return `${this.numerator}/${this.denominator}`;\n }\n /** Return a simplified string respresentation. */\n toSimplifiedString() {\n return Fraction.__staticFractionTmp.copy(this).simplify().toString();\n }\n /** Return string representation in mixed form. */\n toMixedString() {\n let s = '';\n const q = this.quotient();\n const f = Fraction.__staticFractionTmp.copy(this);\n if (q < 0) {\n f.makeAbs();\n }\n if (q !== 0) {\n s += q;\n if (f.numerator !== 0) {\n s += ` ${f.toSimplifiedString()}`;\n }\n }\n else if (f.numerator === 0) {\n s = '0';\n }\n else {\n s = f.toSimplifiedString();\n }\n return s;\n }\n /** Parse a fraction string. */\n parse(str) {\n const i = str.split('/');\n const n = parseInt(i[0], 10);\n const d = i[1] ? parseInt(i[1], 10) : 1;\n return this.set(n, d);\n }\n}\n// Cached objects for comparisons.\nFraction.__staticFractionA = new Fraction();\nFraction.__staticFractionB = new Fraction();\nFraction.__staticFractionTmp = new Fraction();\n/** Helper function to extract the numerator and denominator from another fraction. */\nfunction getNumeratorAndDenominator(n, d = 1) {\n if (typeof n === 'number') {\n // Both params are numbers, so we return them as [numerator, denominator].\n return [n, d];\n }\n else {\n // First param is a Fraction object. We ignore the second param.\n return [n.numerator, n.denominator];\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nexport class BoundingBox {\n constructor(x, y, w, h) {\n this.x = x;\n this.y = y;\n this.w = w;\n this.h = h;\n }\n /**\n * Create a new copy.\n */\n static copy(that) {\n return new BoundingBox(that.x, that.y, that.w, that.h);\n }\n /** Get x position. */\n getX() {\n return this.x;\n }\n /** Get y position. */\n getY() {\n return this.y;\n }\n /** Get width. */\n getW() {\n return this.w;\n }\n /** Get height. */\n getH() {\n return this.h;\n }\n /** Set x position. */\n setX(x) {\n this.x = x;\n return this;\n }\n /** Set y position. */\n setY(y) {\n this.y = y;\n return this;\n }\n /** Set width. */\n setW(w) {\n this.w = w;\n return this;\n }\n /** Set height. */\n setH(h) {\n this.h = h;\n return this;\n }\n /** Move to position. */\n move(x, y) {\n this.x += x;\n this.y += y;\n return this;\n }\n /** Clone. */\n clone() {\n return BoundingBox.copy(this);\n }\n /**\n * Merge my box with given box. Creates a bigger bounding box unless\n * the given box is contained in this one.\n */\n mergeWith(boundingBox) {\n const that = boundingBox;\n const new_x = this.x < that.x ? this.x : that.x;\n const new_y = this.y < that.y ? this.y : that.y;\n const new_w = Math.max(this.x + this.w, that.x + that.w) - new_x;\n const new_h = Math.max(this.y + this.h, that.y + that.h) - new_y;\n this.x = new_x;\n this.y = new_y;\n this.w = new_w;\n this.h = new_h;\n return this;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n/**\n * BoundingBoxComputation computes metrics for a bounding box by continuously\n * taking canvas path commands.\n *\n * Warning: This class is merely a crutch to get bounding box information without\n * explicit metadata. This is likely to get deprecated following SMuFL support.\n *\n * based on: https://github.com/canvg/canvg/blob/master/src/BoundingBox.ts (MIT License)\n */\nexport class BoundingBoxComputation {\n constructor() {\n this.x1 = Number.NaN;\n this.y1 = Number.NaN;\n this.x2 = Number.NaN;\n this.y2 = Number.NaN;\n }\n /** Get calculated X1. */\n getX1() {\n return this.x1;\n }\n /** Get calculated Y1. */\n getY1() {\n return this.y1;\n }\n /** Get calculated width. */\n width() {\n return this.x2 - this.x1;\n }\n /** Get calculated height. */\n height() {\n return this.y2 - this.y1;\n }\n /** Add point to BoundingBox. */\n addPoint(x, y) {\n if (isNaN(this.x1) || x < this.x1)\n this.x1 = x;\n if (isNaN(this.x2) || x > this.x2)\n this.x2 = x;\n if (isNaN(this.y1) || y < this.y1)\n this.y1 = y;\n if (isNaN(this.y2) || y > this.y2)\n this.y2 = y;\n }\n /** Add X to BoundingBox. */\n addX(x) {\n this.addPoint(x, this.y1);\n }\n /** Add Y to BoundingBox. */\n addY(y) {\n this.addPoint(this.x1, y);\n }\n /** Add quadratic curve to BoundingBox. */\n addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {\n this.addPoint(p0x, p0y);\n this.addPoint(p2x, p2y);\n const p01x = p1x - p0x;\n const p12x = p2x - p1x;\n let denom = p01x - p12x;\n if (denom != 0) {\n const t = p01x / denom;\n if (t > 0 && t < 1) {\n const it = 1 - t;\n this.addX(it * it * p0x + 2 * it * t * p1x + t * t * p2x);\n }\n }\n const p01y = p1y - p0y;\n const p12y = p2y - p1y;\n denom = p01y - p12y;\n if (denom != 0) {\n const t = p01y / denom;\n if (t > 0 && t < 1) {\n const it = 1 - t;\n this.addY(it * it * p0y + 2 * it * t * p1y + t * t * p2y);\n }\n }\n }\n /** Add bezier curve to BoundingBox. */\n addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\n // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n const p0 = [p0x, p0y];\n const p1 = [p1x, p1y];\n const p2 = [p2x, p2y];\n const p3 = [p3x, p3y];\n let i;\n this.addPoint(p0[0], p0[1]);\n this.addPoint(p3[0], p3[1]);\n const f = (t, i) => Math.pow(1 - t, 3) * p0[i] +\n 3 * Math.pow(1 - t, 2) * t * p1[i] +\n 3 * (1 - t) * Math.pow(t, 2) * p2[i] +\n Math.pow(t, 3) * p3[i];\n for (i = 0; i <= 1; i++) {\n const b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n const a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n const c = 3 * p1[i] - 3 * p0[i];\n if (a === 0) {\n if (b === 0)\n continue;\n const t = -c / b;\n if (0 < t && t < 1) {\n if (i === 0)\n this.addX(f(t, i));\n if (i === 1)\n this.addY(f(t, i));\n }\n continue;\n }\n const b2ac = Math.pow(b, 2) - 4 * c * a;\n if (b2ac < 0)\n continue;\n const t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n if (0 < t1 && t1 < 1) {\n if (i === 0)\n this.addX(f(t1, i));\n if (i === 1)\n this.addY(f(t1, i));\n }\n const t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n if (0 < t2 && t2 < 1) {\n if (i === 0)\n this.addX(f(t2, i));\n if (i === 1)\n this.addY(f(t2, i));\n }\n }\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { defined } from './util';\nexport var FontWeight;\n(function (FontWeight) {\n FontWeight[\"NORMAL\"] = \"normal\";\n FontWeight[\"BOLD\"] = \"bold\";\n})(FontWeight || (FontWeight = {}));\nexport var FontStyle;\n(function (FontStyle) {\n FontStyle[\"NORMAL\"] = \"normal\";\n FontStyle[\"ITALIC\"] = \"italic\";\n})(FontStyle || (FontStyle = {}));\n// Internal element for parsing CSS font shorthand strings.\nlet fontParser;\nconst Fonts = {};\nexport class Font {\n /**\n * Use `Font.load(fontName)` to get a Font object.\n * Do not call this constructor directly.\n */\n constructor(fontName) {\n this.name = fontName;\n }\n /**\n * @param fontSize a font size to convert. Can be specified as a CSS length string (e.g., '16pt', '1em')\n * or as a number (the unit is assumed to be 'pt'). See `Font.scaleToPxFrom` for the supported\n * units (e.g., pt, em, %).\n * @returns the number of pixels that is equivalent to `fontSize`\n */\n static convertSizeToPixelValue(fontSize = Font.SIZE) {\n var _a;\n if (typeof fontSize === 'number') {\n // Assume the numeric fontSize is specified in pt.\n return fontSize * Font.scaleToPxFrom.pt;\n }\n else {\n const value = parseFloat(fontSize);\n if (isNaN(value)) {\n return 0;\n }\n const unit = fontSize.replace(/[\\d.\\s]/g, '').toLowerCase(); // Extract the unit by removing all numbers, dots, spaces.\n const conversionFactor = (_a = Font.scaleToPxFrom[unit]) !== null && _a !== void 0 ? _a : 1;\n return value * conversionFactor;\n }\n }\n /**\n * @param fontSize a font size to convert. Can be specified as a CSS length string (e.g., '16pt', '1em')\n * or as a number (the unit is assumed to be 'pt'). See `Font.scaleToPxFrom` for the supported\n * units (e.g., pt, em, %).\n * @returns the number of points that is equivalent to `fontSize`\n */\n static convertSizeToPointValue(fontSize = Font.SIZE) {\n var _a;\n if (typeof fontSize === 'number') {\n // Assume the numeric fontSize is specified in pt.\n return fontSize;\n }\n else {\n const value = parseFloat(fontSize);\n if (isNaN(value)) {\n return 0;\n }\n const unit = fontSize.replace(/[\\d.\\s]/g, '').toLowerCase(); // Extract the unit by removing all numbers, dots, spaces.\n const conversionFactor = ((_a = Font.scaleToPxFrom[unit]) !== null && _a !== void 0 ? _a : 1) / Font.scaleToPxFrom.pt;\n return value * conversionFactor;\n }\n }\n /**\n * @param f\n * @param size\n * @param weight\n * @param style\n * @returns the `size` field will include the units (e.g., '12pt', '16px').\n */\n static validate(f, size, weight, style) {\n // If f is a string but all other arguments are undefined, we assume that\n // f is CSS font shorthand (e.g., 'italic bold 10pt Arial').\n if (typeof f === 'string' && size === undefined && weight === undefined && style === undefined) {\n return Font.fromCSSString(f);\n }\n let family;\n if (typeof f === 'object') {\n // f is a FontInfo object, so we extract its fields.\n family = f.family;\n size = f.size;\n weight = f.weight;\n style = f.style;\n }\n else {\n // f is a string representing the font family name or undefined.\n family = f;\n }\n family = family !== null && family !== void 0 ? family : Font.SANS_SERIF;\n size = size !== null && size !== void 0 ? size : Font.SIZE + 'pt';\n weight = weight !== null && weight !== void 0 ? weight : FontWeight.NORMAL;\n style = style !== null && style !== void 0 ? style : FontStyle.NORMAL;\n if (weight === '') {\n weight = FontWeight.NORMAL;\n }\n if (style === '') {\n style = FontStyle.NORMAL;\n }\n // If size is a number, we assume the unit is `pt`.\n if (typeof size === 'number') {\n size = `${size}pt`;\n }\n // If weight is a number (e.g., 900), turn it into a string representation of that number.\n if (typeof weight === 'number') {\n weight = weight.toString();\n }\n // At this point, `family`, `size`, `weight`, and `style` are all strings.\n return { family, size, weight, style };\n }\n /**\n * @param cssFontShorthand a string formatted as CSS font shorthand (e.g., 'italic bold 15pt Arial').\n */\n static fromCSSString(cssFontShorthand) {\n // Let the browser parse this string for us.\n // First, create a span element.\n // Then, set its style.font and extract it back out.\n if (!fontParser) {\n fontParser = document.createElement('span');\n }\n fontParser.style.font = cssFontShorthand;\n const { fontFamily, fontSize, fontWeight, fontStyle } = fontParser.style;\n return { family: fontFamily, size: fontSize, weight: fontWeight, style: fontStyle };\n }\n /**\n * @returns a CSS font shorthand string of the form `italic bold 16pt Arial`.\n */\n static toCSSString(fontInfo) {\n var _a;\n if (!fontInfo) {\n return '';\n }\n let style;\n const st = fontInfo.style;\n if (st === FontStyle.NORMAL || st === '' || st === undefined) {\n style = ''; // no space! Omit the style section.\n }\n else {\n style = st.trim() + ' ';\n }\n let weight;\n const wt = fontInfo.weight;\n if (wt === FontWeight.NORMAL || wt === '' || wt === undefined) {\n weight = ''; // no space! Omit the weight section.\n }\n else if (typeof wt === 'number') {\n weight = wt + ' ';\n }\n else {\n weight = wt.trim() + ' ';\n }\n let size;\n const sz = fontInfo.size;\n if (sz === undefined) {\n size = Font.SIZE + 'pt ';\n }\n else if (typeof sz === 'number') {\n size = sz + 'pt ';\n }\n else {\n // size is already a string.\n size = sz.trim() + ' ';\n }\n const family = (_a = fontInfo.family) !== null && _a !== void 0 ? _a : Font.SANS_SERIF;\n return `${style}${weight}${size}${family}`;\n }\n /**\n * @param fontSize a number representing a font size, or a string font size with units.\n * @param scaleFactor multiply the size by this factor.\n * @returns size * scaleFactor (e.g., 16pt * 3 = 48pt, 8px * 0.5 = 4px, 24 * 2 = 48).\n * If the fontSize argument was a number, the return value will be a number.\n * If the fontSize argument was a string, the return value will be a string.\n */\n static scaleSize(fontSize, scaleFactor) {\n if (typeof fontSize === 'number') {\n return (fontSize * scaleFactor);\n }\n else {\n const value = parseFloat(fontSize);\n const unit = fontSize.replace(/[\\d.\\s]/g, ''); // Remove all numbers, dots, spaces.\n return `${value * scaleFactor}${unit}`;\n }\n }\n /**\n * @param weight a string (e.g., 'bold') or a number (e.g., 600 / semi-bold in the OpenType spec).\n * @returns true if the font weight indicates bold.\n */\n static isBold(weight) {\n if (!weight) {\n return false;\n }\n else if (typeof weight === 'number') {\n return weight >= 600;\n }\n else {\n // a string can be 'bold' or '700'\n const parsedWeight = parseInt(weight, 10);\n if (isNaN(parsedWeight)) {\n return weight.toLowerCase() === 'bold';\n }\n else {\n return parsedWeight >= 600;\n }\n }\n }\n /**\n * @param style\n * @returns true if the font style indicates 'italic'.\n */\n static isItalic(style) {\n if (!style) {\n return false;\n }\n else {\n return style.toLowerCase() === FontStyle.ITALIC;\n }\n }\n /**\n * @param fontName\n * @param woffURL The absolute or relative URL to the woff file.\n * @param includeWoff2 If true, we assume that a woff2 file is in\n * the same folder as the woff file, and will append a `2` to the url.\n */\n // Support distributions of the typescript compiler that do not yet include the FontFace API declarations.\n // eslint-disable-next-line\n // @ts-ignore\n static loadWebFont(fontName, woffURL, includeWoff2 = true) {\n return __awaiter(this, void 0, void 0, function* () {\n const woff2URL = includeWoff2 ? `url(${woffURL}2) format('woff2'), ` : '';\n const woff1URL = `url(${woffURL}) format('woff')`;\n const woffURLs = woff2URL + woff1URL;\n // eslint-disable-next-line\n // @ts-ignore\n const fontFace = new FontFace(fontName, woffURLs);\n yield fontFace.load();\n // eslint-disable-next-line\n // @ts-ignore\n document.fonts.add(fontFace);\n return fontFace;\n });\n }\n /**\n * Load the web fonts that are used by ChordSymbol. For example, `flow.html` calls:\n * `await Vex.Flow.Font.loadWebFonts();`\n * Alternatively, you may load web fonts with a stylesheet link (e.g., from Google Fonts),\n * and a @font-face { font-family: ... } rule in your CSS.\n * If you do not load either of these fonts, ChordSymbol will fall back to Times or Arial,\n * depending on the current music engraving font.\n *\n * You can customize `Font.WEB_FONT_HOST` and `Font.WEB_FONT_FILES` to load different fonts\n * for your app.\n */\n static loadWebFonts() {\n return __awaiter(this, void 0, void 0, function* () {\n const host = Font.WEB_FONT_HOST;\n const files = Font.WEB_FONT_FILES;\n for (const fontName in files) {\n const fontPath = files[fontName];\n Font.loadWebFont(fontName, host + fontPath);\n }\n });\n }\n /**\n * @param fontName\n * @param data optionally set the Font object's `.data` property.\n * This is usually done when setting up a font for the first time.\n * @param metrics optionally set the Font object's `.metrics` property.\n * This is usually done when setting up a font for the first time.\n * @returns a Font object with the given `fontName`.\n * Reuse an existing Font object if a matching one is found.\n */\n static load(fontName, data, metrics) {\n let font = Fonts[fontName];\n if (!font) {\n font = new Font(fontName);\n Fonts[fontName] = font;\n }\n if (data) {\n font.setData(data);\n }\n if (metrics) {\n font.setMetrics(metrics);\n }\n return font;\n }\n getName() {\n return this.name;\n }\n getData() {\n return defined(this.data, 'FontError', 'Missing font data');\n }\n getMetrics() {\n return defined(this.metrics, 'FontError', 'Missing metrics');\n }\n setData(data) {\n this.data = data;\n }\n setMetrics(metrics) {\n this.metrics = metrics;\n }\n hasData() {\n return this.data !== undefined;\n }\n getResolution() {\n return this.getData().resolution;\n }\n getGlyphs() {\n return this.getData().glyphs;\n }\n /**\n * Use the provided key to look up a value in this font's metrics file (e.g., bravura_metrics.ts, petaluma_metrics.ts).\n * @param key is a string separated by periods (e.g., stave.endPaddingMax, clef.lineCount.'5'.shiftY).\n * @param defaultValue is returned if the lookup fails.\n * @returns the retrieved value (or `defaultValue` if the lookup fails).\n */\n // eslint-disable-next-line\n lookupMetric(key, defaultValue) {\n const keyParts = key.split('.');\n // Start with the top level font metrics object, and keep looking deeper into the object (via each part of the period-delimited key).\n let currObj = this.getMetrics();\n for (let i = 0; i < keyParts.length; i++) {\n const keyPart = keyParts[i];\n const value = currObj[keyPart];\n if (value === undefined) {\n // If the key lookup fails, we fall back to the defaultValue.\n return defaultValue;\n }\n // The most recent lookup succeeded, so we drill deeper into the object.\n currObj = value;\n }\n // After checking every part of the key (i.e., the loop completed), return the most recently retrieved value.\n return currObj;\n }\n /** For debugging. */\n toString() {\n return '[' + this.name + ' Font]';\n }\n}\n//////////////////////////////////////////////////////////////////////////////////////////////////\n// STATIC MEMBERS\n/** Default sans-serif font family. */\nFont.SANS_SERIF = 'Arial, sans-serif';\n/** Default serif font family. */\nFont.SERIF = 'Times New Roman, serif';\n/** Default font size in `pt`. */\nFont.SIZE = 10;\n// CSS Font Sizes: 36pt == 48px == 3em == 300% == 0.5in\n/** Given a length (for units: pt, px, em, %, in, mm, cm) what is the scale factor to convert it to px? */\nFont.scaleToPxFrom = {\n pt: 4 / 3,\n px: 1,\n em: 16,\n '%': 4 / 25,\n in: 96,\n mm: 96 / 25.4,\n cm: 96 / 2.54,\n};\n/**\n * Customize this field to specify a different CDN for delivering web fonts.\n * Alternative: https://cdn.jsdelivr.net/npm/vexflow-fonts@1.0.3/\n * Or you can use your own host.\n */\nFont.WEB_FONT_HOST = 'https://unpkg.com/vexflow-fonts@1.0.3/';\n/**\n * These font files will be loaded from the CDN specified by `Font.WEB_FONT_HOST` when\n * `await Font.loadWebFonts()` is called. Customize this field to specify a different\n * set of fonts to load. See: `Font.loadWebFonts()`.\n */\nFont.WEB_FONT_FILES = {\n 'Roboto Slab': 'robotoslab/RobotoSlab-Medium_2.001.woff',\n PetalumaScript: 'petaluma/PetalumaScript_1.10_FS.woff',\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n//\n// ## Description\n//\n// This file implements a registry for VexFlow elements. It allows users\n// to track, query, and manage some subset of generated elements, and\n// dynamically get and set attributes.\n//\n// There are two ways to register with a registry:\n//\n// 1) Explicitly call `registry.register(elem:Element, id?:string)`, or,\n// 2) Call `Registry.enableDefaultRegistry(registry)` when ready, and all future\n// elements will automatically register with it.\n//\n// Once an element is registered, selected attributes are tracked and indexed by\n// the registry. This allows fast look up of elements by attributes like id, type,\n// and class.\nimport { RuntimeError } from './util';\n// Indexes are represented as maps of maps of maps. This allows\n// for both multi-labeling (e.g., an element can have multiple classes)\n// and efficient lookup.\nclass Index {\n constructor() {\n this.id = {};\n this.type = {};\n this.class = {};\n }\n}\nexport class Registry {\n constructor() {\n this.index = new Index();\n }\n static getDefaultRegistry() {\n return Registry.defaultRegistry;\n }\n // If you call `enableDefaultRegistry`, any new elements will auto-register with\n // the provided registry as soon as they're constructed.\n static enableDefaultRegistry(registry) {\n Registry.defaultRegistry = registry;\n }\n static disableDefaultRegistry() {\n Registry.defaultRegistry = undefined;\n }\n clear() {\n this.index = new Index();\n return this;\n }\n setIndexValue(name, value, id, elem) {\n const index = this.index;\n if (!index[name][value]) {\n index[name][value] = {};\n }\n index[name][value][id] = elem;\n }\n // Updates the indexes for element 'id'. If an element's attribute changes\n // from A -> B, make sure to remove the element from A.\n updateIndex({ id, name, value, oldValue }) {\n const elem = this.getElementById(id);\n if (oldValue !== undefined && this.index[name][oldValue]) {\n delete this.index[name][oldValue][id];\n }\n if (value && elem) {\n this.setIndexValue(name, value, elem.getAttribute('id'), elem);\n }\n }\n /**\n * Register element `elem` with this registry.\n * This adds the element to its index and watches it for attribute changes.\n * @param elem\n * @param id\n * @returns this\n */\n register(elem, id) {\n id = id || elem.getAttribute('id');\n if (!id) {\n throw new RuntimeError(\"Can't add element without `id` attribute to registry\");\n }\n // Manually add id to index, then update other indexes.\n elem.setAttribute('id', id);\n this.setIndexValue('id', id, id, elem);\n this.updateIndex({ id, name: 'type', value: elem.getAttribute('type'), oldValue: undefined });\n elem.onRegister(this);\n return this;\n }\n getElementById(id) {\n var _a, _b;\n return (_b = (_a = this.index.id) === null || _a === void 0 ? void 0 : _a[id]) === null || _b === void 0 ? void 0 : _b[id]; // return undefined if the id is not found.\n }\n getElementsByAttribute(attribute, value) {\n const index_attr = this.index[attribute];\n if (index_attr) {\n const index_attr_val = index_attr[value];\n if (index_attr_val) {\n const keys = Object.keys(index_attr_val);\n return keys.map((k) => index_attr_val[k]);\n }\n }\n return [];\n }\n getElementsByType(type) {\n return this.getElementsByAttribute('type', type);\n }\n getElementsByClass(className) {\n return this.getElementsByAttribute('class', className);\n }\n // This is called by the element when an attribute value changes. If an indexed\n // attribute changes, then update the local index.\n onUpdate(info) {\n const allowedNames = ['id', 'type', 'class'];\n if (allowedNames.includes(info.name)) {\n this.updateIndex(info);\n }\n return this;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Registry } from './registry';\nimport { Category } from './typeguard';\nimport { defined, prefix } from './util';\n/**\n * Element implements a generic base class for VexFlow, with implementations\n * of general functions and properties that can be inherited by all VexFlow elements.\n */\nexport class Element {\n constructor() {\n var _a;\n this.children = [];\n this.attrs = {\n id: Element.newID(),\n el: undefined,\n type: this.getCategory(),\n classes: {},\n };\n this.rendered = false;\n // If a default registry exist, then register with it right away.\n (_a = Registry.getDefaultRegistry()) === null || _a === void 0 ? void 0 : _a.register(this);\n }\n static get CATEGORY() {\n return Category.Element;\n }\n static newID() {\n return `auto${Element.ID++}`;\n }\n addChildElement(child) {\n this.children.push(child);\n return this;\n }\n getCategory() {\n return this.constructor.CATEGORY;\n }\n /**\n * Set the element style used to render.\n *\n * Example:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.draw();\n * ```\n * Note: If the element draws additional sub-elements (ie.: Modifiers in a Stave),\n * the style can be applied to all of them by means of the context:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.getContext().setFillStyle('red');\n * element.getContext().setStrokeStyle('red');\n * element.draw();\n * ```\n * or using drawWithStyle:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.drawWithStyle();\n * ```\n */\n setStyle(style) {\n this.style = style;\n return this;\n }\n /** Set the element & associated children style used for rendering. */\n setGroupStyle(style) {\n this.style = style;\n this.children.forEach((child) => child.setGroupStyle(style));\n return this;\n }\n /** Get the element style used for rendering. */\n getStyle() {\n return this.style;\n }\n /** Apply the element style to `context`. */\n applyStyle(context = this.context, style = this.getStyle()) {\n if (!style)\n return this;\n if (!context)\n return this;\n context.save();\n if (style.shadowColor)\n context.setShadowColor(style.shadowColor);\n if (style.shadowBlur)\n context.setShadowBlur(style.shadowBlur);\n if (style.fillStyle)\n context.setFillStyle(style.fillStyle);\n if (style.strokeStyle)\n context.setStrokeStyle(style.strokeStyle);\n if (style.lineWidth)\n context.setLineWidth(style.lineWidth);\n return this;\n }\n /** Restore the style of `context`. */\n restoreStyle(context = this.context, style = this.getStyle()) {\n if (!style)\n return this;\n if (!context)\n return this;\n context.restore();\n return this;\n }\n /**\n * Draw the element and all its sub-elements (ie.: Modifiers in a Stave)\n * with the element style.\n */\n drawWithStyle() {\n this.checkContext();\n this.applyStyle();\n this.draw();\n this.restoreStyle();\n }\n /** Check if it has a class label (An element can have multiple class labels). */\n hasClass(className) {\n return this.attrs.classes[className] === true;\n }\n /** Add a class label (An element can have multiple class labels). */\n addClass(className) {\n var _a;\n this.attrs.classes[className] = true;\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({\n id: this.attrs.id,\n name: 'class',\n value: className,\n oldValue: undefined,\n });\n return this;\n }\n /** Remove a class label (An element can have multiple class labels). */\n removeClass(className) {\n var _a;\n delete this.attrs.classes[className];\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({\n id: this.attrs.id,\n name: 'class',\n value: undefined,\n oldValue: className,\n });\n return this;\n }\n /** Call back from registry after the element is registered. */\n onRegister(registry) {\n this.registry = registry;\n return this;\n }\n /** Return the rendered status. */\n isRendered() {\n return this.rendered;\n }\n /** Set the rendered status. */\n setRendered(rendered = true) {\n this.rendered = rendered;\n return this;\n }\n /** Return the element attributes. */\n getAttributes() {\n return this.attrs;\n }\n /** Return an attribute. */\n // eslint-disable-next-line\n getAttribute(name) {\n return this.attrs[name];\n }\n /** Return associated SVGElement. */\n getSVGElement(suffix = '') {\n const id = prefix(this.attrs.id + suffix);\n const element = document.getElementById(id);\n if (element)\n return element;\n }\n /** Set an attribute. */\n // eslint-disable-next-line\n setAttribute(name, value) {\n var _a;\n const oldID = this.attrs.id;\n const oldValue = this.attrs[name];\n this.attrs[name] = value;\n // Register with old id to support id changes.\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({ id: oldID, name, value, oldValue });\n return this;\n }\n /** Get the boundingBox. */\n getBoundingBox() {\n return this.boundingBox;\n }\n /** Return the context. */\n getContext() {\n return this.context;\n }\n /** Set the context. */\n setContext(context) {\n this.context = context;\n return this;\n }\n /** Validate and return the context. */\n checkContext() {\n return defined(this.context, 'NoContext', 'No rendering context attached to instance.');\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // Font Handling\n /**\n * Provide a CSS compatible font string (e.g., 'bold 16px Arial').\n */\n set font(f) {\n this.setFont(f);\n }\n /** Returns the CSS compatible font string. */\n get font() {\n return Font.toCSSString(this.textFont);\n }\n /**\n * Set the element's font family, size, weight, style (e.g., `Arial`, `10pt`, `bold`, `italic`).\n * @param font is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (at least one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n * If no arguments are provided, then the font is set to the default font.\n * Each Element subclass may specify its own default by overriding the static `TEXT_FONT` property.\n */\n setFont(font, size, weight, style) {\n // Allow subclasses to override `TEXT_FONT`.\n const defaultTextFont = this.constructor.TEXT_FONT;\n const fontIsObject = typeof font === 'object';\n const fontIsString = typeof font === 'string';\n const fontIsUndefined = font === undefined;\n const sizeWeightStyleAreUndefined = size === undefined && weight === undefined && style === undefined;\n if (fontIsObject) {\n // `font` is case 1) a FontInfo object\n this.textFont = Object.assign(Object.assign({}, defaultTextFont), font);\n }\n else if (fontIsString && sizeWeightStyleAreUndefined) {\n // `font` is case 2) CSS font shorthand.\n this.textFont = Font.fromCSSString(font);\n }\n else if (fontIsUndefined && sizeWeightStyleAreUndefined) {\n // All arguments are undefined. Do not check for `arguments.length === 0`,\n // which fails on the edge case: `setFont(undefined)`.\n // TODO: See if we can remove this case entirely without introducing a visual diff.\n // The else case below seems like it should be equivalent to this case.\n this.textFont = Object.assign({}, defaultTextFont);\n }\n else {\n // `font` is case 3) a font family string (e.g., 'Times New Roman').\n // The other parameters represent the size, weight, and style.\n // It is okay for `font` to be undefined while one or more of the other arguments is provided.\n // Following CSS conventions, unspecified params are reset to the default.\n this.textFont = Font.validate(font !== null && font !== void 0 ? font : defaultTextFont.family, size !== null && size !== void 0 ? size : defaultTextFont.size, weight !== null && weight !== void 0 ? weight : defaultTextFont.weight, style !== null && style !== void 0 ? style : defaultTextFont.style);\n }\n return this;\n }\n getFont() {\n if (!this.textFont) {\n this.resetFont();\n }\n return Font.toCSSString(this.textFont);\n }\n /**\n * Reset the text font to the style indicated by the static `TEXT_FONT` property.\n * Subclasses can call this to initialize `textFont` for the first time.\n */\n resetFont() {\n this.setFont();\n }\n /** Return a copy of the current FontInfo object. */\n get fontInfo() {\n if (!this.textFont) {\n this.resetFont();\n }\n // We can cast to Required here, because\n // we just called resetFont() above to ensure this.textFont is set.\n return Object.assign({}, this.textFont);\n }\n set fontInfo(fontInfo) {\n this.setFont(fontInfo);\n }\n /** Change the font size, while keeping everything else the same. */\n setFontSize(size) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, size, fontInfo.weight, fontInfo.style);\n return this;\n }\n /**\n * @returns a CSS font-size string (e.g., '18pt', '12px', '1em').\n * See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.\n */\n getFontSize() {\n return this.fontSize;\n }\n /**\n * The size is 1) a string of the form '10pt' or '16px', compatible with the CSS font-size property.\n * or 2) a number, which is interpreted as a point size (i.e. 12 == '12pt').\n */\n set fontSize(size) {\n this.setFontSize(size);\n }\n /**\n * @returns a CSS font-size string (e.g., '18pt', '12px', '1em').\n */\n get fontSize() {\n let size = this.fontInfo.size;\n if (typeof size === 'number') {\n size = `${size}pt`;\n }\n return size;\n }\n /**\n * @returns the font size in `pt`.\n */\n get fontSizeInPoints() {\n return Font.convertSizeToPointValue(this.fontSize);\n }\n /**\n * @returns the font size in `px`.\n */\n get fontSizeInPixels() {\n return Font.convertSizeToPixelValue(this.fontSize);\n }\n /**\n * @returns a CSS font-style string (e.g., 'italic').\n */\n get fontStyle() {\n return this.fontInfo.style;\n }\n set fontStyle(style) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, fontInfo.size, fontInfo.weight, style);\n }\n /**\n * @returns a CSS font-weight string (e.g., 'bold').\n * As in CSS, font-weight is always returned as a string, even if it was set as a number.\n */\n get fontWeight() {\n return this.fontInfo.weight + '';\n }\n set fontWeight(weight) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, fontInfo.size, weight, fontInfo.style);\n }\n}\nElement.ID = 1000;\n/**\n * Default font for text. This is not related to music engraving. Instead, see `Flow.setMusicFont(...fontNames)`\n * to customize the font for musical symbols placed on the score.\n */\nElement.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: Font.SIZE,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Fraction } from './fraction';\nimport { Glyph } from './glyph';\nimport { RuntimeError } from './util';\nconst RESOLUTION = 16384;\n/**\n * Map duration numbers to 'ticks', the unit of duration used throughout VexFlow.\n * For example, a quarter note is 4, so it maps to RESOLUTION / 4 = 4096 ticks.\n */\nconst durations = {\n '1/2': RESOLUTION * 2,\n 1: RESOLUTION / 1,\n 2: RESOLUTION / 2,\n 4: RESOLUTION / 4,\n 8: RESOLUTION / 8,\n 16: RESOLUTION / 16,\n 32: RESOLUTION / 32,\n 64: RESOLUTION / 64,\n 128: RESOLUTION / 128,\n 256: RESOLUTION / 256,\n};\nconst durationAliases = {\n w: '1',\n h: '2',\n q: '4',\n // This is the default duration used to render bars (BarNote). Bars no longer\n // consume ticks, so this should be a no-op.\n // TODO(0xfe): This needs to be cleaned up.\n b: '256',\n};\nconst keySignatures = {\n C: { num: 0 },\n Am: { num: 0 },\n F: { acc: 'b', num: 1 },\n Dm: { acc: 'b', num: 1 },\n Bb: { acc: 'b', num: 2 },\n Gm: { acc: 'b', num: 2 },\n Eb: { acc: 'b', num: 3 },\n Cm: { acc: 'b', num: 3 },\n Ab: { acc: 'b', num: 4 },\n Fm: { acc: 'b', num: 4 },\n Db: { acc: 'b', num: 5 },\n Bbm: { acc: 'b', num: 5 },\n Gb: { acc: 'b', num: 6 },\n Ebm: { acc: 'b', num: 6 },\n Cb: { acc: 'b', num: 7 },\n Abm: { acc: 'b', num: 7 },\n G: { acc: '#', num: 1 },\n Em: { acc: '#', num: 1 },\n D: { acc: '#', num: 2 },\n Bm: { acc: '#', num: 2 },\n A: { acc: '#', num: 3 },\n 'F#m': { acc: '#', num: 3 },\n E: { acc: '#', num: 4 },\n 'C#m': { acc: '#', num: 4 },\n B: { acc: '#', num: 5 },\n 'G#m': { acc: '#', num: 5 },\n 'F#': { acc: '#', num: 6 },\n 'D#m': { acc: '#', num: 6 },\n 'C#': { acc: '#', num: 7 },\n 'A#m': { acc: '#', num: 7 },\n};\nconst clefs = {\n treble: { line_shift: 0 },\n bass: { line_shift: 6 },\n tenor: { line_shift: 4 },\n alto: { line_shift: 3 },\n soprano: { line_shift: 1 },\n percussion: { line_shift: 0 },\n 'mezzo-soprano': { line_shift: 2 },\n 'baritone-c': { line_shift: 5 },\n 'baritone-f': { line_shift: 5 },\n subbass: { line_shift: 7 },\n french: { line_shift: -1 },\n};\nconst notesInfo = {\n C: { index: 0, int_val: 0 },\n CN: { index: 0, int_val: 0, accidental: 'n' },\n 'C#': { index: 0, int_val: 1, accidental: '#' },\n 'C##': { index: 0, int_val: 2, accidental: '##' },\n CB: { index: 0, int_val: 11, accidental: 'b' },\n CBB: { index: 0, int_val: 10, accidental: 'bb' },\n D: { index: 1, int_val: 2 },\n DN: { index: 1, int_val: 2, accidental: 'n' },\n 'D#': { index: 1, int_val: 3, accidental: '#' },\n 'D##': { index: 1, int_val: 4, accidental: '##' },\n DB: { index: 1, int_val: 1, accidental: 'b' },\n DBB: { index: 1, int_val: 0, accidental: 'bb' },\n E: { index: 2, int_val: 4 },\n EN: { index: 2, int_val: 4, accidental: 'n' },\n 'E#': { index: 2, int_val: 5, accidental: '#' },\n 'E##': { index: 2, int_val: 6, accidental: '##' },\n EB: { index: 2, int_val: 3, accidental: 'b' },\n EBB: { index: 2, int_val: 2, accidental: 'bb' },\n F: { index: 3, int_val: 5 },\n FN: { index: 3, int_val: 5, accidental: 'n' },\n 'F#': { index: 3, int_val: 6, accidental: '#' },\n 'F##': { index: 3, int_val: 7, accidental: '##' },\n FB: { index: 3, int_val: 4, accidental: 'b' },\n FBB: { index: 3, int_val: 3, accidental: 'bb' },\n G: { index: 4, int_val: 7 },\n GN: { index: 4, int_val: 7, accidental: 'n' },\n 'G#': { index: 4, int_val: 8, accidental: '#' },\n 'G##': { index: 4, int_val: 9, accidental: '##' },\n GB: { index: 4, int_val: 6, accidental: 'b' },\n GBB: { index: 4, int_val: 5, accidental: 'bb' },\n A: { index: 5, int_val: 9 },\n AN: { index: 5, int_val: 9, accidental: 'n' },\n 'A#': { index: 5, int_val: 10, accidental: '#' },\n 'A##': { index: 5, int_val: 11, accidental: '##' },\n AB: { index: 5, int_val: 8, accidental: 'b' },\n ABB: { index: 5, int_val: 7, accidental: 'bb' },\n B: { index: 6, int_val: 11 },\n BN: { index: 6, int_val: 11, accidental: 'n' },\n 'B#': { index: 6, int_val: 12, accidental: '#' },\n 'B##': { index: 6, int_val: 13, accidental: '##' },\n BB: { index: 6, int_val: 10, accidental: 'b' },\n BBB: { index: 6, int_val: 9, accidental: 'bb' },\n R: { index: 6, rest: true },\n X: {\n index: 6,\n accidental: '',\n octave: 4,\n code: 'noteheadXBlack',\n shift_right: 5.5,\n },\n};\nconst validNoteTypes = {\n n: { name: 'note' },\n r: { name: 'rest' },\n h: { name: 'harmonic' },\n m: { name: 'muted' },\n s: { name: 'slash' },\n g: { name: 'ghost' },\n d: { name: 'diamond' },\n x: { name: 'x' },\n ci: { name: 'circled' },\n cx: { name: 'circle x' },\n sf: { name: 'slashed' },\n sb: { name: 'slashed backward' },\n sq: { name: 'square' },\n tu: { name: 'triangle up' },\n td: { name: 'triangle down' },\n};\nconst accidentals = {\n '#': { code: 'accidentalSharp', parenRightPaddingAdjustment: -1 },\n '##': { code: 'accidentalDoubleSharp', parenRightPaddingAdjustment: -1 },\n b: { code: 'accidentalFlat', parenRightPaddingAdjustment: -2 },\n bb: { code: 'accidentalDoubleFlat', parenRightPaddingAdjustment: -2 },\n n: { code: 'accidentalNatural', parenRightPaddingAdjustment: -1 },\n '{': { code: 'accidentalParensLeft', parenRightPaddingAdjustment: -1 },\n '}': { code: 'accidentalParensRight', parenRightPaddingAdjustment: -1 },\n db: { code: 'accidentalThreeQuarterTonesFlatZimmermann', parenRightPaddingAdjustment: -1 },\n d: { code: 'accidentalQuarterToneFlatStein', parenRightPaddingAdjustment: 0 },\n '++': { code: 'accidentalThreeQuarterTonesSharpStein', parenRightPaddingAdjustment: -1 },\n '+': { code: 'accidentalQuarterToneSharpStein', parenRightPaddingAdjustment: -1 },\n '+-': { code: 'accidentalKucukMucennebSharp', parenRightPaddingAdjustment: -1 },\n bs: { code: 'accidentalBakiyeFlat', parenRightPaddingAdjustment: -1 },\n bss: { code: 'accidentalBuyukMucennebFlat', parenRightPaddingAdjustment: -1 },\n o: { code: 'accidentalSori', parenRightPaddingAdjustment: -1 },\n k: { code: 'accidentalKoron', parenRightPaddingAdjustment: -1 },\n bbs: { code: 'vexAccidentalMicrotonal1', parenRightPaddingAdjustment: -1 },\n '++-': { code: 'vexAccidentalMicrotonal2', parenRightPaddingAdjustment: -1 },\n ashs: { code: 'vexAccidentalMicrotonal3', parenRightPaddingAdjustment: -1 },\n afhf: { code: 'vexAccidentalMicrotonal4', parenRightPaddingAdjustment: -1 },\n accSagittal5v7KleismaUp: { code: 'accSagittal5v7KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v7KleismaDown: { code: 'accSagittal5v7KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5CommaUp: { code: 'accSagittal5CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5CommaDown: { code: 'accSagittal5CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7CommaUp: { code: 'accSagittal7CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7CommaDown: { code: 'accSagittal7CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal25SmallDiesisUp: { code: 'accSagittal25SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal25SmallDiesisDown: { code: 'accSagittal25SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal35MediumDiesisUp: { code: 'accSagittal35MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal35MediumDiesisDown: { code: 'accSagittal35MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11MediumDiesisUp: { code: 'accSagittal11MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11MediumDiesisDown: { code: 'accSagittal11MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11LargeDiesisUp: { code: 'accSagittal11LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11LargeDiesisDown: { code: 'accSagittal11LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal35LargeDiesisUp: { code: 'accSagittal35LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal35LargeDiesisDown: { code: 'accSagittal35LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp25SDown: { code: 'accSagittalSharp25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat25SUp: { code: 'accSagittalFlat25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7CDown: { code: 'accSagittalSharp7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7CUp: { code: 'accSagittalFlat7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5CDown: { code: 'accSagittalSharp5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5CUp: { code: 'accSagittalFlat5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v7kDown: { code: 'accSagittalSharp5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v7kUp: { code: 'accSagittalFlat5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp: { code: 'accSagittalSharp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat: { code: 'accSagittalFlat', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v7kUp: { code: 'accSagittalSharp5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v7kDown: { code: 'accSagittalFlat5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5CUp: { code: 'accSagittalSharp5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5CDown: { code: 'accSagittalFlat5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7CUp: { code: 'accSagittalSharp7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7CDown: { code: 'accSagittalFlat7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp25SUp: { code: 'accSagittalSharp25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat25SDown: { code: 'accSagittalFlat25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp35MUp: { code: 'accSagittalSharp35MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat35MDown: { code: 'accSagittalFlat35MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11MUp: { code: 'accSagittalSharp11MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11MDown: { code: 'accSagittalFlat11MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11LUp: { code: 'accSagittalSharp11LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11LDown: { code: 'accSagittalFlat11LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp35LUp: { code: 'accSagittalSharp35LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat35LDown: { code: 'accSagittalFlat35LDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp25SDown: { code: 'accSagittalDoubleSharp25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat25SUp: { code: 'accSagittalDoubleFlat25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7CDown: { code: 'accSagittalDoubleSharp7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7CUp: { code: 'accSagittalDoubleFlat7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5CDown: { code: 'accSagittalDoubleSharp5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5CUp: { code: 'accSagittalDoubleFlat5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v7kDown: { code: 'accSagittalDoubleSharp5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v7kUp: { code: 'accSagittalDoubleFlat5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp: { code: 'accSagittalDoubleSharp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat: { code: 'accSagittalDoubleFlat', parenRightPaddingAdjustment: -1 },\n accSagittal7v11KleismaUp: { code: 'accSagittal7v11KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v11KleismaDown: { code: 'accSagittal7v11KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal17CommaUp: { code: 'accSagittal17CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal17CommaDown: { code: 'accSagittal17CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal55CommaUp: { code: 'accSagittal55CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal55CommaDown: { code: 'accSagittal55CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7v11CommaUp: { code: 'accSagittal7v11CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v11CommaDown: { code: 'accSagittal7v11CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v11SmallDiesisUp: { code: 'accSagittal5v11SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v11SmallDiesisDown: { code: 'accSagittal5v11SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v11SDown: { code: 'accSagittalSharp5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v11SUp: { code: 'accSagittalFlat5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11CDown: { code: 'accSagittalSharp7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11CUp: { code: 'accSagittalFlat7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp55CDown: { code: 'accSagittalSharp55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat55CUp: { code: 'accSagittalFlat55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17CDown: { code: 'accSagittalSharp17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17CUp: { code: 'accSagittalFlat17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11kDown: { code: 'accSagittalSharp7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11kUp: { code: 'accSagittalFlat7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11kUp: { code: 'accSagittalSharp7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11kDown: { code: 'accSagittalFlat7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17CUp: { code: 'accSagittalSharp17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17CDown: { code: 'accSagittalFlat17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp55CUp: { code: 'accSagittalSharp55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat55CDown: { code: 'accSagittalFlat55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11CUp: { code: 'accSagittalSharp7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11CDown: { code: 'accSagittalFlat7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v11SUp: { code: 'accSagittalSharp5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v11SDown: { code: 'accSagittalFlat5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v11SDown: { code: 'accSagittalDoubleSharp5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v11SUp: { code: 'accSagittalDoubleFlat5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v11CDown: { code: 'accSagittalDoubleSharp7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v11CUp: { code: 'accSagittalDoubleFlat7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp55CDown: { code: 'accSagittalDoubleSharp55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat55CUp: { code: 'accSagittalDoubleFlat55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp17CDown: { code: 'accSagittalDoubleSharp17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat17CUp: { code: 'accSagittalDoubleFlat17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v11kDown: { code: 'accSagittalDoubleSharp7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v11kUp: { code: 'accSagittalDoubleFlat7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittal23CommaUp: { code: 'accSagittal23CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal23CommaDown: { code: 'accSagittal23CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v19CommaUp: { code: 'accSagittal5v19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v19CommaDown: { code: 'accSagittal5v19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v23SmallDiesisUp: { code: 'accSagittal5v23SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v23SmallDiesisDown: { code: 'accSagittal5v23SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v23SDown: { code: 'accSagittalSharp5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v23SUp: { code: 'accSagittalFlat5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v19CDown: { code: 'accSagittalSharp5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v19CUp: { code: 'accSagittalFlat5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23CDown: { code: 'accSagittalSharp23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23CUp: { code: 'accSagittalFlat23CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23CUp: { code: 'accSagittalSharp23CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23CDown: { code: 'accSagittalFlat23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v19CUp: { code: 'accSagittalSharp5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v19CDown: { code: 'accSagittalFlat5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v23SUp: { code: 'accSagittalSharp5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v23SDown: { code: 'accSagittalFlat5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v23SDown: { code: 'accSagittalDoubleSharp5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v23SUp: { code: 'accSagittalDoubleFlat5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v19CDown: { code: 'accSagittalDoubleSharp5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v19CUp: { code: 'accSagittalDoubleFlat5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp23CDown: { code: 'accSagittalDoubleSharp23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat23CUp: { code: 'accSagittalDoubleFlat23CUp', parenRightPaddingAdjustment: -1 },\n accSagittal19SchismaUp: { code: 'accSagittal19SchismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal19SchismaDown: { code: 'accSagittal19SchismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal17KleismaUp: { code: 'accSagittal17KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal17KleismaDown: { code: 'accSagittal17KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal143CommaUp: { code: 'accSagittal143CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal143CommaDown: { code: 'accSagittal143CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v49CommaUp: { code: 'accSagittal11v49CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v49CommaDown: { code: 'accSagittal11v49CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal19CommaUp: { code: 'accSagittal19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal19CommaDown: { code: 'accSagittal19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7v19CommaUp: { code: 'accSagittal7v19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v19CommaDown: { code: 'accSagittal7v19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal49SmallDiesisUp: { code: 'accSagittal49SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49SmallDiesisDown: { code: 'accSagittal49SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal23SmallDiesisUp: { code: 'accSagittal23SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal23SmallDiesisDown: { code: 'accSagittal23SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v13MediumDiesisUp: { code: 'accSagittal5v13MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v13MediumDiesisDown: { code: 'accSagittal5v13MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v19MediumDiesisUp: { code: 'accSagittal11v19MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v19MediumDiesisDown: { code: 'accSagittal11v19MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal49MediumDiesisUp: { code: 'accSagittal49MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49MediumDiesisDown: { code: 'accSagittal49MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v49MediumDiesisUp: { code: 'accSagittal5v49MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v49MediumDiesisDown: { code: 'accSagittal5v49MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal49LargeDiesisUp: { code: 'accSagittal49LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49LargeDiesisDown: { code: 'accSagittal49LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v19LargeDiesisUp: { code: 'accSagittal11v19LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v19LargeDiesisDown: { code: 'accSagittal11v19LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v13LargeDiesisUp: { code: 'accSagittal5v13LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v13LargeDiesisDown: { code: 'accSagittal5v13LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23SDown: { code: 'accSagittalSharp23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23SUp: { code: 'accSagittalFlat23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49SDown: { code: 'accSagittalSharp49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49SUp: { code: 'accSagittalFlat49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v19CDown: { code: 'accSagittalSharp7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v19CUp: { code: 'accSagittalFlat7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19CDown: { code: 'accSagittalSharp19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19CUp: { code: 'accSagittalFlat19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v49CDown: { code: 'accSagittalSharp11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v49CUp: { code: 'accSagittalFlat11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp143CDown: { code: 'accSagittalSharp143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat143CUp: { code: 'accSagittalFlat143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17kDown: { code: 'accSagittalSharp17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17kUp: { code: 'accSagittalFlat17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19sDown: { code: 'accSagittalSharp19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19sUp: { code: 'accSagittalFlat19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19sUp: { code: 'accSagittalSharp19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19sDown: { code: 'accSagittalFlat19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17kUp: { code: 'accSagittalSharp17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17kDown: { code: 'accSagittalFlat17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp143CUp: { code: 'accSagittalSharp143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat143CDown: { code: 'accSagittalFlat143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v49CUp: { code: 'accSagittalSharp11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v49CDown: { code: 'accSagittalFlat11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19CUp: { code: 'accSagittalSharp19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19CDown: { code: 'accSagittalFlat19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v19CUp: { code: 'accSagittalSharp7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v19CDown: { code: 'accSagittalFlat7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49SUp: { code: 'accSagittalSharp49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49SDown: { code: 'accSagittalFlat49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23SUp: { code: 'accSagittalSharp23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23SDown: { code: 'accSagittalFlat23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v13MUp: { code: 'accSagittalSharp5v13MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v13MDown: { code: 'accSagittalFlat5v13MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v19MUp: { code: 'accSagittalSharp11v19MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v19MDown: { code: 'accSagittalFlat11v19MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49MUp: { code: 'accSagittalSharp49MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49MDown: { code: 'accSagittalFlat49MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v49MUp: { code: 'accSagittalSharp5v49MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v49MDown: { code: 'accSagittalFlat5v49MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49LUp: { code: 'accSagittalSharp49LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49LDown: { code: 'accSagittalFlat49LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v19LUp: { code: 'accSagittalSharp11v19LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v19LDown: { code: 'accSagittalFlat11v19LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v13LUp: { code: 'accSagittalSharp5v13LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v13LDown: { code: 'accSagittalFlat5v13LDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp23SDown: { code: 'accSagittalDoubleSharp23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat23SUp: { code: 'accSagittalDoubleFlat23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp49SDown: { code: 'accSagittalDoubleSharp49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat49SUp: { code: 'accSagittalDoubleFlat49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v19CDown: { code: 'accSagittalDoubleSharp7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v19CUp: { code: 'accSagittalDoubleFlat7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp19CDown: { code: 'accSagittalDoubleSharp19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat19CUp: { code: 'accSagittalDoubleFlat19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp11v49CDown: { code: 'accSagittalDoubleSharp11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat11v49CUp: { code: 'accSagittalDoubleFlat11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp143CDown: { code: 'accSagittalDoubleSharp143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat143CUp: { code: 'accSagittalDoubleFlat143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp17kDown: { code: 'accSagittalDoubleSharp17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat17kUp: { code: 'accSagittalDoubleFlat17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp19sDown: { code: 'accSagittalDoubleSharp19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat19sUp: { code: 'accSagittalDoubleFlat19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalShaftUp: { code: 'accSagittalShaftUp', parenRightPaddingAdjustment: -1 },\n accSagittalShaftDown: { code: 'accSagittalShaftDown', parenRightPaddingAdjustment: -1 },\n accSagittalAcute: { code: 'accSagittalAcute', parenRightPaddingAdjustment: -1 },\n accSagittalGrave: { code: 'accSagittalGrave', parenRightPaddingAdjustment: -1 },\n accSagittal1MinaUp: { code: 'accSagittal1MinaUp', parenRightPaddingAdjustment: -1 },\n accSagittal1MinaDown: { code: 'accSagittal1MinaDown', parenRightPaddingAdjustment: -1 },\n accSagittal2MinasUp: { code: 'accSagittal2MinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal2MinasDown: { code: 'accSagittal2MinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal1TinaUp: { code: 'accSagittal1TinaUp', parenRightPaddingAdjustment: -1 },\n accSagittal1TinaDown: { code: 'accSagittal1TinaDown', parenRightPaddingAdjustment: -1 },\n accSagittal2TinasUp: { code: 'accSagittal2TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal2TinasDown: { code: 'accSagittal2TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal3TinasUp: { code: 'accSagittal3TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal3TinasDown: { code: 'accSagittal3TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal4TinasUp: { code: 'accSagittal4TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal4TinasDown: { code: 'accSagittal4TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal5TinasUp: { code: 'accSagittal5TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal5TinasDown: { code: 'accSagittal5TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal6TinasUp: { code: 'accSagittal6TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal6TinasDown: { code: 'accSagittal6TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal7TinasUp: { code: 'accSagittal7TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal7TinasDown: { code: 'accSagittal7TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal8TinasUp: { code: 'accSagittal8TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal8TinasDown: { code: 'accSagittal8TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal9TinasUp: { code: 'accSagittal9TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal9TinasDown: { code: 'accSagittal9TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittalFractionalTinaUp: { code: 'accSagittalFractionalTinaUp', parenRightPaddingAdjustment: -1 },\n accSagittalFractionalTinaDown: { code: 'accSagittalFractionalTinaDown', parenRightPaddingAdjustment: -1 },\n accidentalNarrowReversedFlat: { code: 'accidentalNarrowReversedFlat', parenRightPaddingAdjustment: -1 },\n accidentalNarrowReversedFlatAndFlat: {\n code: 'accidentalNarrowReversedFlatAndFlat',\n parenRightPaddingAdjustment: -1,\n },\n accidentalWilsonPlus: { code: 'accidentalWilsonPlus', parenRightPaddingAdjustment: -1 },\n accidentalWilsonMinus: { code: 'accidentalWilsonMinus', parenRightPaddingAdjustment: -1 },\n};\n// Helps determine the layout of accidentals.\nconst accidentalColumns = {\n 1: {\n a: [1],\n b: [1],\n },\n 2: {\n a: [1, 2],\n },\n 3: {\n a: [1, 3, 2],\n b: [1, 2, 1],\n second_on_bottom: [1, 2, 3],\n },\n 4: {\n a: [1, 3, 4, 2],\n b: [1, 2, 3, 1],\n spaced_out_tetrachord: [1, 2, 1, 2],\n },\n 5: {\n a: [1, 3, 5, 4, 2],\n b: [1, 2, 4, 3, 1],\n spaced_out_pentachord: [1, 2, 3, 2, 1],\n very_spaced_out_pentachord: [1, 2, 1, 2, 1],\n },\n 6: {\n a: [1, 3, 5, 6, 4, 2],\n b: [1, 2, 4, 5, 3, 1],\n spaced_out_hexachord: [1, 3, 2, 1, 3, 2],\n very_spaced_out_hexachord: [1, 2, 1, 2, 1, 2],\n },\n};\nconst articulations = {\n 'a.': { code: 'augmentationDot', between_lines: true },\n av: {\n aboveCode: 'articStaccatissimoAbove',\n belowCode: 'articStaccatissimoBelow',\n between_lines: true,\n },\n 'a>': {\n aboveCode: 'articAccentAbove',\n belowCode: 'articAccentBelow',\n between_lines: true,\n },\n 'a-': {\n aboveCode: 'articTenutoAbove',\n belowCode: 'articTenutoBelow',\n between_lines: true,\n },\n 'a^': {\n aboveCode: 'articMarcatoAbove',\n belowCode: 'articMarcatoBelow',\n between_lines: false,\n },\n 'a+': { code: 'pluckedLeftHandPizzicato', between_lines: false },\n ao: {\n aboveCode: 'pluckedSnapPizzicatoAbove',\n belowCode: 'pluckedSnapPizzicatoBelow',\n between_lines: false,\n },\n ah: { code: 'stringsHarmonic', between_lines: false },\n 'a@': { aboveCode: 'fermataAbove', belowCode: 'fermataBelow', between_lines: false },\n 'a@a': { code: 'fermataAbove', between_lines: false },\n 'a@u': { code: 'fermataBelow', between_lines: false },\n 'a@s': { aboveCode: 'fermataShortAbove', belowCode: 'fermataShortBelow', between_lines: false },\n 'a@as': { code: 'fermataShortAbove', between_lines: false },\n 'a@us': { code: 'fermataShortBelow', between_lines: false },\n 'a@l': { aboveCode: 'fermataLongAbove', belowCode: 'fermataLongBelow', between_lines: false },\n 'a@al': { code: 'fermataLongAbove', between_lines: false },\n 'a@ul': { code: 'fermataLongBelow', between_lines: false },\n 'a@vl': { aboveCode: 'fermataVeryLongAbove', belowCode: 'fermataVeryLongBelow', between_lines: false },\n 'a@avl': { code: 'fermataVeryLongAbove', between_lines: false },\n 'a@uvl': { code: 'fermataVeryLongBelow', between_lines: false },\n 'a|': { code: 'stringsUpBow', between_lines: false },\n am: { code: 'stringsDownBow', between_lines: false },\n 'a,': { code: 'pictChokeCymbal', between_lines: false }, // Choked\n};\nconst ornaments = {\n mordent: { code: 'ornamentShortTrill' },\n mordent_inverted: { code: 'ornamentMordent' },\n turn: { code: 'ornamentTurn' },\n turn_inverted: { code: 'ornamentTurnSlash' },\n tr: { code: 'ornamentTrill' },\n upprall: { code: 'ornamentPrecompSlideTrillDAnglebert' },\n downprall: { code: 'ornamentPrecompDoubleCadenceUpperPrefix' },\n prallup: { code: 'ornamentPrecompTrillSuffixDandrieu' },\n pralldown: { code: 'ornamentPrecompTrillLowerSuffix' },\n upmordent: { code: 'ornamentPrecompSlideTrillBach' },\n downmordent: { code: 'ornamentPrecompDoubleCadenceUpperPrefixTurn' },\n lineprall: { code: 'ornamentPrecompAppoggTrill' },\n prallprall: { code: 'ornamentTremblement' },\n scoop: { code: 'brassScoop' },\n doit: { code: 'brassDoitMedium' },\n fall: { code: 'brassFallLipShort' },\n doitLong: { code: 'brassLiftMedium' },\n fallLong: { code: 'brassFallRoughMedium' },\n bend: { code: 'brassBend' },\n plungerClosed: { code: 'brassMuteClosed' },\n plungerOpen: { code: 'brassMuteOpen' },\n flip: { code: 'brassFlip' },\n jazzTurn: { code: 'brassJazzTurn' },\n smear: { code: 'brassSmear' },\n};\nexport class Tables {\n /**\n * @returns the `Font` object at the head of the music font stack.\n */\n static currentMusicFont() {\n if (Tables.MUSIC_FONT_STACK.length === 0) {\n throw new RuntimeError('NoFonts', 'The font stack is empty. See: await Flow.fetchMusicFont(...); Flow.setMusicFont(...).');\n }\n else {\n return Tables.MUSIC_FONT_STACK[0];\n }\n }\n static clefProperties(clef) {\n if (!clef || !(clef in clefs))\n throw new RuntimeError('BadArgument', 'Invalid clef: ' + clef);\n return clefs[clef];\n }\n /**\n * @param keyOctaveGlyph a string in the format \"key/octave\" (e.g., \"c/5\") or \"key/octave/custom-note-head-code\" (e.g., \"g/5/t3\").\n * @param clef\n * @param params a struct with one option, `octave_shift` for clef ottavation (0 = default; 1 = 8va; -1 = 8vb, etc.).\n * @returns properties for the specified note.\n */\n // eslint-disable-next-line\n static keyProperties(keyOctaveGlyph, clef = 'treble', params) {\n let options = { octave_shift: 0, duration: '4' };\n if (typeof params === 'object') {\n options = Object.assign(Object.assign({}, options), params);\n }\n const duration = Tables.sanitizeDuration(options.duration);\n const pieces = keyOctaveGlyph.split('/');\n if (pieces.length < 2) {\n throw new RuntimeError('BadArguments', `First argument must be note/octave or note/octave/glyph-code: ${keyOctaveGlyph}`);\n }\n const key = pieces[0].toUpperCase();\n const value = notesInfo[key];\n if (!value)\n throw new RuntimeError('BadArguments', 'Invalid key name: ' + key);\n if (value.octave)\n pieces[1] = value.octave.toString();\n let octave = parseInt(pieces[1], 10);\n // Octave_shift is the shift to compensate for clef 8va/8vb.\n octave += -1 * options.octave_shift;\n const baseIndex = octave * 7 - 4 * 7;\n let line = (baseIndex + value.index) / 2;\n line += Tables.clefProperties(clef).line_shift;\n let stroke = 0;\n if (line <= 0 && (line * 2) % 2 === 0)\n stroke = 1; // stroke up\n if (line >= 6 && (line * 2) % 2 === 0)\n stroke = -1; // stroke down\n // Integer value for note arithmetic.\n const int_value = typeof value.int_val !== 'undefined' ? octave * 12 + value.int_val : undefined;\n // If the user specified a glyph, overwrite the glyph code.\n const code = value.code;\n const shift_right = value.shift_right;\n let customNoteHeadProps = {};\n if (pieces.length > 2 && pieces[2]) {\n const glyphName = pieces[2].toUpperCase();\n customNoteHeadProps = { code: this.codeNoteHead(glyphName, duration) } || {};\n }\n return Object.assign({ key,\n octave,\n line,\n int_value, accidental: value.accidental, code,\n stroke,\n shift_right, displaced: false }, customNoteHeadProps);\n }\n static integerToNote(integer) {\n if (typeof integer === 'undefined' || integer < 0 || integer > 11) {\n throw new RuntimeError('BadArguments', `integerToNote() requires an integer in the range [0, 11]: ${integer}`);\n }\n const table = {\n 0: 'C',\n 1: 'C#',\n 2: 'D',\n 3: 'D#',\n 4: 'E',\n 5: 'F',\n 6: 'F#',\n 7: 'G',\n 8: 'G#',\n 9: 'A',\n 10: 'A#',\n 11: 'B',\n };\n const noteValue = table[integer];\n if (!noteValue) {\n throw new RuntimeError('BadArguments', `Unknown note value for integer: ${integer}`);\n }\n return noteValue;\n }\n static tabToGlyph(fret, scale = 1.0) {\n let glyph = undefined;\n let width = 0;\n let shift_y = 0;\n if (fret.toUpperCase() === 'X') {\n const glyphMetrics = new Glyph('accidentalDoubleSharp', Tables.TABLATURE_FONT_SCALE).getMetrics();\n glyph = 'accidentalDoubleSharp';\n if (glyphMetrics.width == undefined || glyphMetrics.height == undefined)\n throw new RuntimeError('InvalidMetrics', 'Width and height required');\n width = glyphMetrics.width;\n shift_y = -glyphMetrics.height / 2;\n }\n else {\n width = Tables.textWidth(fret);\n }\n return {\n text: fret,\n code: glyph,\n getWidth: () => width * scale,\n shift_y,\n };\n }\n // Used by annotation.ts and bend.ts. Clearly this implementation only works for the default font size.\n // TODO: The actual width depends on the font family, size, weight, style.\n static textWidth(text) {\n return 7 * text.toString().length;\n }\n static articulationCodes(artic) {\n return articulations[artic];\n }\n static accidentalCodes(acc) {\n return accidentals[acc];\n }\n static ornamentCodes(acc) {\n return ornaments[acc];\n }\n static keySignature(spec) {\n const keySpec = keySignatures[spec];\n if (!keySpec) {\n throw new RuntimeError('BadKeySignature', `Bad key signature spec: '${spec}'`);\n }\n if (!keySpec.acc) {\n return [];\n }\n const accidentalList = {\n b: [2, 0.5, 2.5, 1, 3, 1.5, 3.5],\n '#': [0, 1.5, -0.5, 1, 2.5, 0.5, 2],\n };\n const notes = accidentalList[keySpec.acc];\n const acc_list = [];\n for (let i = 0; i < keySpec.num; ++i) {\n const line = notes[i];\n acc_list.push({ type: keySpec.acc, line });\n }\n return acc_list;\n }\n static getKeySignatures() {\n return keySignatures;\n }\n static hasKeySignature(spec) {\n return spec in keySignatures;\n }\n /**\n * Convert duration aliases to the number based duration.\n * If the input isn't an alias, simply return the input.\n * @param duration\n * @returns Example: 'q' -> '4', '8' -> '8'\n */\n static sanitizeDuration(duration) {\n const durationNumber = durationAliases[duration];\n if (durationNumber !== undefined) {\n duration = durationNumber;\n }\n if (durations[duration] === undefined) {\n throw new RuntimeError('BadArguments', `The provided duration is not valid: ${duration}`);\n }\n return duration;\n }\n /** Convert the `duration` to a fraction. */\n static durationToFraction(duration) {\n return new Fraction().parse(Tables.sanitizeDuration(duration));\n }\n /** Convert the `duration` to a number. */\n static durationToNumber(duration) {\n return Tables.durationToFraction(duration).value();\n }\n /* Convert the `duration` to total ticks. */\n static durationToTicks(duration) {\n duration = Tables.sanitizeDuration(duration);\n const ticks = durations[duration];\n if (ticks === undefined) {\n throw new RuntimeError('InvalidDuration');\n }\n return ticks;\n }\n static codeNoteHead(type, duration) {\n let code = '';\n switch (type) {\n /* Diamond */\n case 'D0':\n code = 'noteheadDiamondWhole';\n break;\n case 'D1':\n code = 'noteheadDiamondHalf';\n break;\n case 'D2':\n code = 'noteheadDiamondBlack';\n break;\n case 'D3':\n code = 'noteheadDiamondBlack';\n break;\n /* Triangle */\n case 'T0':\n code = 'noteheadTriangleUpWhole';\n break;\n case 'T1':\n code = 'noteheadTriangleUpHalf';\n break;\n case 'T2':\n code = 'noteheadTriangleUpBlack';\n break;\n case 'T3':\n code = 'noteheadTriangleUpBlack';\n break;\n /* Cross */\n case 'X0':\n code = 'noteheadXWhole';\n break;\n case 'X1':\n code = 'noteheadXHalf';\n break;\n case 'X2':\n code = 'noteheadXBlack';\n break;\n case 'X3':\n code = 'noteheadCircleX';\n break;\n /* Square */\n case 'S1':\n code = 'noteheadSquareWhite';\n break;\n case 'S2':\n code = 'noteheadSquareBlack';\n break;\n /* Rectangle */\n case 'R1':\n code = 'vexNoteHeadRectWhite'; // no smufl code\n break;\n case 'R2':\n code = 'vexNoteHeadRectBlack'; // no smufl code\n break;\n case 'DO':\n code = 'noteheadTriangleUpBlack';\n break;\n case 'RE':\n code = 'noteheadMoonBlack';\n break;\n case 'MI':\n code = 'noteheadDiamondBlack';\n break;\n case 'FA':\n code = 'noteheadTriangleLeftBlack';\n break;\n case 'FAUP':\n code = 'noteheadTriangleRightBlack';\n break;\n case 'SO':\n code = 'noteheadBlack';\n break;\n case 'LA':\n code = 'noteheadSquareBlack';\n break;\n case 'TI':\n code = 'noteheadTriangleRoundDownBlack';\n break;\n case 'D':\n case 'H': // left for backwards compatibility\n switch (duration) {\n case '1/2':\n code = 'noteheadDiamondDoubleWhole';\n break;\n case '1':\n code = 'noteheadDiamondWhole';\n break;\n case '2':\n code = 'noteheadDiamondHalf';\n break;\n default:\n code = 'noteheadDiamondBlack';\n break;\n }\n break;\n case 'N':\n case 'G':\n switch (duration) {\n case '1/2':\n code = 'noteheadDoubleWhole';\n break;\n case '1':\n code = 'noteheadWhole';\n break;\n case '2':\n code = 'noteheadHalf';\n break;\n default:\n code = 'noteheadBlack';\n break;\n }\n break;\n case 'M': // left for backwards compatibility\n case 'X':\n switch (duration) {\n case '1/2':\n code = 'noteheadXDoubleWhole';\n break;\n case '1':\n code = 'noteheadXWhole';\n break;\n case '2':\n code = 'noteheadXHalf';\n break;\n default:\n code = 'noteheadXBlack';\n break;\n }\n break;\n case 'CX':\n switch (duration) {\n case '1/2':\n code = 'noteheadCircleXDoubleWhole';\n break;\n case '1':\n code = 'noteheadCircleXWhole';\n break;\n case '2':\n code = 'noteheadCircleXHalf';\n break;\n default:\n code = 'noteheadCircleX';\n break;\n }\n break;\n case 'CI':\n switch (duration) {\n case '1/2':\n code = 'noteheadCircledDoubleWhole';\n break;\n case '1':\n code = 'noteheadCircledWhole';\n break;\n case '2':\n code = 'noteheadCircledHalf';\n break;\n default:\n code = 'noteheadCircledBlack';\n break;\n }\n break;\n case 'SQ':\n switch (duration) {\n case '1/2':\n code = 'noteheadDoubleWholeSquare';\n break;\n case '1':\n code = 'noteheadSquareWhite';\n break;\n case '2':\n code = 'noteheadSquareWhite';\n break;\n default:\n code = 'noteheadSquareBlack';\n break;\n }\n break;\n case 'TU':\n switch (duration) {\n case '1/2':\n code = 'noteheadTriangleUpDoubleWhole';\n break;\n case '1':\n code = 'noteheadTriangleUpWhole';\n break;\n case '2':\n code = 'noteheadTriangleUpHalf';\n break;\n default:\n code = 'noteheadTriangleUpBlack';\n break;\n }\n break;\n case 'TD':\n switch (duration) {\n case '1/2':\n code = 'noteheadTriangleDownDoubleWhole';\n break;\n case '1':\n code = 'noteheadTriangleDownWhole';\n break;\n case '2':\n code = 'noteheadTriangleDownHalf';\n break;\n default:\n code = 'noteheadTriangleDownBlack';\n break;\n }\n break;\n case 'SF':\n switch (duration) {\n case '1/2':\n code = 'noteheadSlashedDoubleWhole1';\n break;\n case '1':\n code = 'noteheadSlashedWhole1';\n break;\n case '2':\n code = 'noteheadSlashedHalf1';\n break;\n default:\n code = 'noteheadSlashedBlack1';\n }\n break;\n case 'SB':\n switch (duration) {\n case '1/2':\n code = 'noteheadSlashedDoubleWhole2';\n break;\n case '1':\n code = 'noteheadSlashedWhole2';\n break;\n case '2':\n code = 'noteheadSlashedHalf2';\n break;\n default:\n code = 'noteheadSlashedBlack2';\n }\n break;\n }\n return code;\n }\n // Return a glyph given duration and type. The type can be a custom glyph code from customNoteHeads.\n // The default type is a regular note ('n').\n // eslint-disable-next-line\n static getGlyphProps(duration, type = 'n') {\n duration = Tables.sanitizeDuration(duration);\n // Lookup duration for default glyph head code\n const code = durationCodes[duration];\n if (code === undefined) {\n return undefined;\n }\n // Get glyph properties for 'type' from duration string (note, rest, harmonic, muted, slash)\n let glyphTypeProperties = code.type[type];\n // Try and get it from the custom list of note heads\n const codeNoteHead = Tables.codeNoteHead(type.toUpperCase(), duration);\n if (codeNoteHead != '')\n glyphTypeProperties = Object.assign(Object.assign({}, glyphTypeProperties), { code_head: codeNoteHead, code: codeNoteHead });\n const code_head = glyphTypeProperties.code_head;\n // The default implementation of getWidth() calls Glyph.getWidth(code_head, scale).\n // This can be overridden by an individual glyph type (see slash noteheads below: Tables.SLASH_NOTEHEAD_WIDTH).\n const getWidth = (scale = Tables.NOTATION_FONT_SCALE) => Glyph.getWidth(code_head, scale);\n // Merge duration props for 'duration' with the note head properties.\n return Object.assign(Object.assign(Object.assign({}, code.common), { getWidth: getWidth }), glyphTypeProperties);\n }\n}\nTables.SOFTMAX_FACTOR = 100;\nTables.STEM_WIDTH = 1.5;\nTables.STEM_HEIGHT = 35;\nTables.STAVE_LINE_THICKNESS = 1;\nTables.RENDER_PRECISION_PLACES = 3;\nTables.RESOLUTION = RESOLUTION;\n/**\n * Customize this by calling Flow.setMusicFont(...fontNames);\n */\nTables.MUSIC_FONT_STACK = [];\nTables.NOTATION_FONT_SCALE = 39;\nTables.TABLATURE_FONT_SCALE = 39;\nTables.SLASH_NOTEHEAD_WIDTH = 15;\nTables.STAVE_LINE_DISTANCE = 10;\n// HACK:\n// Since text origins are positioned at the baseline, we must\n// compensate for the ascender of the text. Of course, 1 staff space is\n// a very poor approximation.\n//\n// This will be deprecated in the future. This is a temporary solution until\n// we have more robust text metrics.\nTables.TEXT_HEIGHT_OFFSET_HACK = 1;\nTables.accidentalMap = accidentals;\nTables.accidentalColumnsTable = accidentalColumns;\nTables.unicode = {\n // ♯ accidental sharp\n sharp: String.fromCharCode(0x266f),\n // ♭ accidental flat\n flat: String.fromCharCode(0x266d),\n // ♮ accidental natural\n natural: String.fromCharCode(0x266e),\n // △ major seventh\n triangle: String.fromCharCode(0x25b3),\n // ø half-diminished\n 'o-with-slash': String.fromCharCode(0x00f8),\n // ° diminished\n degrees: String.fromCharCode(0x00b0),\n // ○ diminished\n circle: String.fromCharCode(0x25cb),\n};\n/* The list of valid note types. Used by note.ts during parseNoteStruct(). */\nTables.validTypes = validNoteTypes;\n// Default time signature.\nTables.TIME4_4 = {\n num_beats: 4,\n beat_value: 4,\n resolution: RESOLUTION,\n};\n// 1/2, 1, 2, 4, 8, 16, 32, 64, 128\n// NOTE: There is no 256 here! However, there are other mentions of 256 in this file.\n// For example, in durations has a 256 key, and sanitizeDuration() can return 256.\n// The sanitizeDuration() bit may need to be removed by 0xfe.\n// eslint-disable-next-line\nconst durationCodes = {\n '1/2': {\n common: {\n stem: false,\n stem_offset: 0,\n flag: false,\n stem_up_extension: -Tables.STEM_HEIGHT,\n stem_down_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_up_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_down_extension: -Tables.STEM_HEIGHT,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Breve rest\n code_head: 'restDoubleWhole',\n rest: true,\n position: 'B/5',\n dot_shiftY: 0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restDoubleWhole', scale);\n // },\n },\n s: {\n // Breve note slash -\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 1: {\n common: {\n stem: false,\n stem_offset: 0,\n flag: false,\n stem_up_extension: -Tables.STEM_HEIGHT,\n stem_down_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_up_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_down_extension: -Tables.STEM_HEIGHT,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Whole rest\n code_head: 'restWhole',\n leger_code_head: 'restWholeLegerLine',\n rest: true,\n position: 'D/5',\n dot_shiftY: 0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restWhole', scale);\n // },\n },\n s: {\n // Whole note slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 2: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: false,\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Half rest\n code_head: 'restHalf',\n leger_code_head: 'restHalfLegerLine',\n stem: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restHalf', scale);\n // },\n },\n s: {\n // Half note slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 4: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: false,\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Quarter rest\n code_head: 'restQuarter',\n stem: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.5,\n line_below: 1.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restQuarter', scale);\n // },\n },\n s: {\n // Quarter slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 8: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: true,\n beam_count: 1,\n stem_beam_extension: 0,\n code_flag_upstem: 'flag8thUp',\n code_flag_downstem: 'flag8thDown',\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Eighth rest\n code_head: 'rest8th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.0,\n line_below: 1.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest8th', scale);\n // },\n },\n s: {\n // Eighth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 16: {\n common: {\n beam_count: 2,\n stem_beam_extension: 0,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag16thUp',\n code_flag_downstem: 'flag16thDown',\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Sixteenth rest\n code_head: 'rest16th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.0,\n line_below: 2.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest16th', scale);\n // },\n },\n s: {\n // Sixteenth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 32: {\n common: {\n beam_count: 3,\n stem_beam_extension: 7.5,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag32ndUp',\n code_flag_downstem: 'flag32ndDown',\n stem_up_extension: 9,\n stem_down_extension: 9,\n tabnote_stem_up_extension: 9,\n tabnote_stem_down_extension: 9,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Thirty-second rest\n code_head: 'rest32nd',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -1.5,\n line_above: 2.0,\n line_below: 2.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest32nd', scale);\n // },\n },\n s: {\n // Thirty-second slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 64: {\n common: {\n beam_count: 4,\n stem_beam_extension: 15,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag64thUp',\n code_flag_downstem: 'flag64thDown',\n stem_up_extension: 13,\n stem_down_extension: 13,\n tabnote_stem_up_extension: 13,\n tabnote_stem_down_extension: 13,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Sixty-fourth rest\n code_head: 'rest64th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -1.5,\n line_above: 2.0,\n line_below: 3.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest64th', scale);\n // },\n },\n s: {\n // Sixty-fourth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 128: {\n common: {\n beam_count: 5,\n stem_beam_extension: 22.5,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag128thUp',\n code_flag_downstem: 'flag128thDown',\n stem_up_extension: 22,\n stem_down_extension: 22,\n tabnote_stem_up_extension: 22,\n tabnote_stem_down_extension: 22,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Hundred-twenty-eight rest\n code_head: 'rest128th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -2.5,\n line_above: 3.0,\n line_below: 3.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest128th', scale);\n // },\n },\n s: {\n // Hundred-twenty-eight slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { BoundingBoxComputation } from './boundingboxcomputation';\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var OutlineCode;\n(function (OutlineCode) {\n OutlineCode[OutlineCode[\"MOVE\"] = 0] = \"MOVE\";\n OutlineCode[OutlineCode[\"LINE\"] = 1] = \"LINE\";\n OutlineCode[OutlineCode[\"QUADRATIC\"] = 2] = \"QUADRATIC\";\n OutlineCode[OutlineCode[\"BEZIER\"] = 3] = \"BEZIER\";\n})(OutlineCode || (OutlineCode = {}));\nclass GlyphCacheEntry {\n constructor(fontStack, code, category) {\n this.point = -1;\n this.metrics = Glyph.loadMetrics(fontStack, code, category);\n this.bbox = Glyph.getOutlineBoundingBox(this.metrics.outline, this.metrics.scale, this.metrics.x_shift, this.metrics.y_shift);\n if (category) {\n this.point = Glyph.lookupFontMetric(this.metrics.font, category, code, 'point', -1);\n }\n }\n}\nclass GlyphCache {\n constructor() {\n this.cache = new Map();\n }\n lookup(code, category) {\n let entries = this.cache.get(Glyph.CURRENT_CACHE_KEY);\n if (entries === undefined) {\n entries = {};\n this.cache.set(Glyph.CURRENT_CACHE_KEY, entries);\n }\n const key = category ? `${code}%${category}` : code;\n let entry = entries[key];\n if (entry === undefined) {\n entry = new GlyphCacheEntry(Glyph.MUSIC_FONT_STACK, code, category);\n entries[key] = entry;\n }\n return entry;\n }\n}\nclass GlyphOutline {\n constructor(outline, originX, originY, scale) {\n this.outline = outline;\n this.originX = originX;\n this.originY = originY;\n this.scale = scale;\n this.i = 0;\n this.precision = 1;\n // Automatically assign private properties: this.outline, this.originX, this.originY, and this.scale.\n this.precision = Math.pow(10, Tables.RENDER_PRECISION_PLACES);\n }\n done() {\n return this.i >= this.outline.length;\n }\n next() {\n return Math.round((this.outline[this.i++] * this.precision) / this.precision);\n }\n nextX() {\n return Math.round((this.originX + this.outline[this.i++] * this.scale) * this.precision) / this.precision;\n }\n nextY() {\n return Math.round((this.originY - this.outline[this.i++] * this.scale) * this.precision) / this.precision;\n }\n static parse(str) {\n const result = [];\n const parts = str.split(' ');\n let i = 0;\n while (i < parts.length) {\n switch (parts[i++]) {\n case 'm':\n result.push(OutlineCode.MOVE, parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'l':\n result.push(OutlineCode.LINE, parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'q':\n result.push(OutlineCode.QUADRATIC, parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'b':\n result.push(OutlineCode.BEZIER, parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n }\n }\n return result;\n }\n}\nexport class Glyph extends Element {\n /**\n * @param code\n * @param point\n * @param options\n */\n constructor(code, point, options) {\n super();\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // INSTANCE MEMBERS\n this.bbox = new BoundingBox(0, 0, 0, 0);\n this.topGlyphs = [];\n this.botGlyphs = [];\n this.options = {};\n this.scale = 1;\n this.code = code;\n this.point = point;\n this.originShift = { x: 0, y: 0 };\n this.x_shift = 0;\n this.y_shift = 0;\n if (options) {\n this.setOptions(options);\n }\n else {\n this.reset();\n }\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // STATIC MEMBERS\n static get CATEGORY() {\n return Category.Glyph;\n }\n /**\n * Pass a key of the form `glyphs.{category}.{code}.{key}` to Font.lookupMetric(). If the initial lookup fails,\n * try again with the path `glyphs.{category}.{key}`. If the second lookup fails, return the defaultValue.\n *\n * @param font\n * @param category any metric path under 'glyphs', so 'stem.up' could resolve to glyphs.stem.up.shiftX, glyphs.stem.up.shiftY, etc.\n * @param code\n * @param key\n * @param defaultValue\n */\n static lookupFontMetric(font, category, code, key, defaultValue) {\n let value = font.lookupMetric(`glyphs.${category}.${code}.${key}`, undefined);\n if (value === undefined) {\n // The first lookup failed, so we omit .${code} and try again (with a defaultValue this time).\n value = font.lookupMetric(`glyphs.${category}.${key}`, defaultValue);\n }\n return value;\n }\n static lookupGlyph(fontStack, code) {\n defined(fontStack, 'BadFontStack', 'Font stack is misconfigured');\n let glyph;\n let font;\n for (let i = 0; i < fontStack.length; i++) {\n font = fontStack[i];\n glyph = font.getGlyphs()[code];\n if (glyph)\n return { glyph, font };\n }\n throw new RuntimeError('BadGlyph', `Glyph ${code} does not exist in font.`);\n }\n static loadMetrics(fontStack, code, category) {\n const { glyph, font } = Glyph.lookupGlyph(fontStack, code);\n if (!glyph.o)\n throw new RuntimeError('BadGlyph', `Glyph ${code} has no outline defined.`);\n let x_shift = 0;\n let y_shift = 0;\n let scale = 1;\n if (category && font) {\n x_shift = Glyph.lookupFontMetric(font, category, code, 'shiftX', 0);\n y_shift = Glyph.lookupFontMetric(font, category, code, 'shiftY', 0);\n scale = Glyph.lookupFontMetric(font, category, code, 'scale', 1);\n }\n const x_min = glyph.x_min;\n const x_max = glyph.x_max;\n const ha = glyph.ha;\n if (!glyph.cached_outline) {\n glyph.cached_outline = GlyphOutline.parse(glyph.o);\n }\n return {\n x_min,\n x_max,\n x_shift,\n y_shift,\n scale,\n ha,\n outline: glyph.cached_outline,\n font,\n width: x_max - x_min,\n height: ha,\n };\n }\n /**\n * Renders glyphs from the default font stack.\n *\n * @param ctx Canvas or SVG context\n * @param x_pos x coordinate\n * @param y_pos y coordinate\n * @param point the point size of the font\n * @param code the glyph code in font.getGlyphs()\n * @param options\n * @returns\n */\n static renderGlyph(ctx, x_pos, y_pos, point, code, options) {\n var _a;\n const data = Glyph.cache.lookup(code, options === null || options === void 0 ? void 0 : options.category);\n const metrics = data.metrics;\n if (data.point != -1) {\n point = data.point;\n }\n const customScale = (_a = options === null || options === void 0 ? void 0 : options.scale) !== null && _a !== void 0 ? _a : 1;\n const scale = ((point * 72.0) / (metrics.font.getResolution() * 100.0)) * metrics.scale * customScale;\n Glyph.renderOutline(ctx, metrics.outline, scale, x_pos + metrics.x_shift * customScale, y_pos + metrics.y_shift * customScale);\n return metrics;\n }\n static renderOutline(ctx, outline, scale, x_pos, y_pos) {\n const go = new GlyphOutline(outline, x_pos, y_pos, scale);\n ctx.beginPath();\n let x, y;\n while (!go.done()) {\n switch (go.next()) {\n case OutlineCode.MOVE:\n ctx.moveTo(go.nextX(), go.nextY());\n break;\n case OutlineCode.LINE:\n ctx.lineTo(go.nextX(), go.nextY());\n break;\n case OutlineCode.QUADRATIC:\n x = go.nextX();\n y = go.nextY();\n ctx.quadraticCurveTo(go.nextX(), go.nextY(), x, y);\n break;\n case OutlineCode.BEZIER:\n x = go.nextX();\n y = go.nextY();\n ctx.bezierCurveTo(go.nextX(), go.nextY(), go.nextX(), go.nextY(), x, y);\n break;\n }\n }\n ctx.fill();\n }\n static getOutlineBoundingBox(outline, scale, x_pos, y_pos) {\n const go = new GlyphOutline(outline, x_pos, y_pos, scale);\n const bboxComp = new BoundingBoxComputation();\n // (penX, penY) hold the pen position: the start of each stroke.\n let penX = x_pos;\n let penY = y_pos;\n let x, y;\n while (!go.done()) {\n switch (go.next()) {\n case OutlineCode.MOVE:\n // Note that we don't add any points to the bounding box until a srroke is actually drawn.\n penX = go.nextX();\n penY = go.nextY();\n break;\n case OutlineCode.LINE:\n bboxComp.addPoint(penX, penY);\n penX = go.nextX();\n penY = go.nextY();\n bboxComp.addPoint(penX, penY);\n break;\n case OutlineCode.QUADRATIC:\n x = go.nextX();\n y = go.nextY();\n bboxComp.addQuadraticCurve(penX, penY, go.nextX(), go.nextY(), x, y);\n penX = x;\n penY = y;\n break;\n case OutlineCode.BEZIER:\n x = go.nextX();\n y = go.nextY();\n bboxComp.addBezierCurve(penX, penY, go.nextX(), go.nextY(), go.nextX(), go.nextY(), x, y);\n penX = x;\n penY = y;\n break;\n }\n }\n return new BoundingBox(bboxComp.getX1(), bboxComp.getY1(), bboxComp.width(), bboxComp.height());\n }\n static getWidth(code, point, category) {\n const data = Glyph.cache.lookup(code, category);\n if (data.point != -1) {\n point = data.point;\n }\n const scale = (point * 72) / (data.metrics.font.getResolution() * 100);\n return data.bbox.getW() * scale;\n }\n // eslint-disable-next-line\n draw(...args) {\n // DO NOTHING.\n }\n getCode() {\n return this.code;\n }\n // eslint-disable-next-line\n setOptions(options) {\n this.options = Object.assign(Object.assign({}, this.options), options);\n this.reset();\n }\n setPoint(point) {\n this.point = point;\n return this;\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getXShift() {\n return this.x_shift;\n }\n setXShift(x_shift) {\n this.x_shift = x_shift;\n return this;\n }\n getYshift() {\n return this.y_shift;\n }\n setYShift(y_shift) {\n this.y_shift = y_shift;\n return this;\n }\n reset() {\n const data = Glyph.cache.lookup(this.code, this.options.category);\n this.metrics = data.metrics;\n // Override point from metrics file\n if (data.point != -1) {\n this.point = data.point;\n }\n this.scale = (this.point * 72) / (this.metrics.font.getResolution() * 100);\n this.bbox = new BoundingBox(data.bbox.getX() * this.scale, data.bbox.getY() * this.scale, data.bbox.getW() * this.scale, data.bbox.getH() * this.scale);\n }\n checkMetrics() {\n return defined(this.metrics, 'BadGlyph', `Glyph ${this.code} is not initialized.`);\n }\n getMetrics() {\n const metrics = this.checkMetrics();\n const metricsScale = metrics.scale;\n return {\n x_min: metrics.x_min * this.scale * metricsScale,\n x_max: metrics.x_max * this.scale * metricsScale,\n width: this.bbox.getW(),\n height: this.bbox.getH(),\n scale: this.scale * metricsScale,\n x_shift: metrics.x_shift,\n y_shift: metrics.y_shift,\n outline: metrics.outline,\n font: metrics.font,\n ha: metrics.ha,\n };\n }\n setOriginX(x) {\n const { bbox } = this;\n const originX = Math.abs(bbox.getX() / bbox.getW());\n const xShift = (x - originX) * bbox.getW();\n this.originShift.x = -xShift;\n }\n setOriginY(y) {\n const { bbox } = this;\n const originY = Math.abs(bbox.getY() / bbox.getH());\n const yShift = (y - originY) * bbox.getH();\n this.originShift.y = -yShift;\n }\n setOrigin(x, y) {\n this.setOriginX(x);\n this.setOriginY(y);\n }\n render(ctx, x, y) {\n const metrics = this.checkMetrics();\n const outline = metrics.outline;\n const scale = this.scale * metrics.scale;\n this.setRendered();\n this.applyStyle(ctx);\n const xPos = x + this.originShift.x + metrics.x_shift;\n const yPos = y + this.originShift.y + metrics.y_shift;\n Glyph.renderOutline(ctx, outline, scale, xPos, yPos);\n this.restoreStyle(ctx);\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n renderToStave(x) {\n const context = this.checkContext();\n const metrics = this.checkMetrics();\n const stave = this.checkStave();\n const outline = metrics.outline;\n const scale = this.scale * metrics.scale;\n this.setRendered();\n this.applyStyle();\n const xPos = x + this.x_shift + metrics.x_shift;\n const yPos = stave.getYForGlyphs() + this.y_shift + metrics.y_shift;\n Glyph.renderOutline(context, outline, scale, xPos, yPos);\n this.restoreStyle();\n }\n}\nGlyph.cache = new GlyphCache();\n// The current cache key for GlyphCache above.\n// Computed when Flow.setMusicFont(...) is called.\n// It is set to a comma separated list of font names.\nGlyph.CURRENT_CACHE_KEY = '';\n// Used by the GlyphCache above.\n// Set when Flow.setMusicFont(...) is called.\nGlyph.MUSIC_FONT_STACK = [];\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var ModifierPosition;\n(function (ModifierPosition) {\n ModifierPosition[ModifierPosition[\"CENTER\"] = 0] = \"CENTER\";\n ModifierPosition[ModifierPosition[\"LEFT\"] = 1] = \"LEFT\";\n ModifierPosition[ModifierPosition[\"RIGHT\"] = 2] = \"RIGHT\";\n ModifierPosition[ModifierPosition[\"ABOVE\"] = 3] = \"ABOVE\";\n ModifierPosition[ModifierPosition[\"BELOW\"] = 4] = \"BELOW\";\n})(ModifierPosition || (ModifierPosition = {}));\n// To enable logging for this class. Set `Vex.Flow.Modifier.DEBUG` to `true`.\n// function L(...args) { if (Modifier.DEBUG) log('Vex.Flow.Modifier', args); }\n/**\n * `Modifier` is an abstract interface for notational elements that modify\n * a `Note`. Examples of modifiers are `Accidental`, `Annotation`, `Stroke`, etc.\n *\n * For a `Modifier` instance to be positioned correctly, it must be part of\n * a `ModifierContext`. All modifiers in the same context are rendered relative to\n * one another.\n *\n * Typically, all modifiers to a note are part of the same `ModifierContext` instance. Also,\n * in multi-voice staves, all modifiers to notes on the same `tick` are part of the same\n * `ModifierContext`. This ensures that multiple voices don't trample all over each other.\n */\nexport class Modifier extends Element {\n constructor() {\n super();\n this.width = 0;\n // The `text_line` is reserved space above or below a stave.\n this.text_line = 0;\n this.position = Modifier.Position.LEFT;\n this.x_shift = 0;\n this.y_shift = 0;\n this.spacingFromNextModifier = 0;\n }\n /**\n * Modifiers category string. Every modifier has a different category.\n * The `ModifierContext` uses this to determine the type and order of the modifiers.\n */\n static get CATEGORY() {\n return Category.Modifier;\n }\n /** Modifiers can be positioned almost anywhere, relative to a note. */\n static get Position() {\n return ModifierPosition;\n }\n static get PositionString() {\n return {\n center: ModifierPosition.CENTER,\n above: ModifierPosition.ABOVE,\n below: ModifierPosition.BELOW,\n left: ModifierPosition.LEFT,\n right: ModifierPosition.RIGHT,\n };\n }\n /** Called when position changes. */\n reset() {\n // DO NOTHING.\n }\n /** Get modifier widths. */\n getWidth() {\n return this.width;\n }\n /** Set modifier widths. */\n setWidth(width) {\n this.width = width;\n return this;\n }\n /** Get attached note (`StaveNote`, `TabNote`, etc.) */\n getNote() {\n return defined(this.note, 'NoNote', 'Modifier has no note.');\n }\n /**\n * Used in draw() to check and get the attached note (`StaveNote`, `TabNote`, etc.).\n * Also verifies that the index is valid.\n */\n checkAttachedNote() {\n const category = this.getCategory();\n defined(this.index, 'NoIndex', `Can't draw ${category} without an index.`);\n return defined(this.note, 'NoNote', `Can't draw ${category} without a note.`);\n }\n /**\n * Set attached note.\n * @param note (`StaveNote`, `TabNote`, etc.)\n */\n setNote(note) {\n this.note = note;\n return this;\n }\n /** Get note index, which is a specific note in a chord. */\n getIndex() {\n return this.index;\n }\n /** Check and get note index, which is a specific note in a chord. */\n checkIndex() {\n return defined(this.index, 'NoIndex', 'Modifier has an invalid index.');\n }\n /** Set note index, which is a specific note in a chord. */\n setIndex(index) {\n this.index = index;\n return this;\n }\n /** Get `ModifierContext`. */\n getModifierContext() {\n return this.modifierContext;\n }\n /** Check and get `ModifierContext`. */\n checkModifierContext() {\n return defined(this.modifierContext, 'NoModifierContext', 'Modifier Context Required');\n }\n /** Every modifier must be part of a `ModifierContext`. */\n setModifierContext(c) {\n this.modifierContext = c;\n return this;\n }\n /** Get position. */\n getPosition() {\n return this.position;\n }\n /**\n * Set position.\n * @param position CENTER | LEFT | RIGHT | ABOVE | BELOW\n */\n setPosition(position) {\n this.position = typeof position === 'string' ? Modifier.PositionString[position] : position;\n this.reset();\n return this;\n }\n /** Set the `text_line` for the modifier. */\n setTextLine(line) {\n this.text_line = line;\n return this;\n }\n /** Shift modifier down `y` pixels. Negative values shift up. */\n setYShift(y) {\n this.y_shift = y;\n return this;\n }\n /** Set spacing from next modifier. */\n setSpacingFromNextModifier(x) {\n this.spacingFromNextModifier = x;\n }\n /** Get spacing from next modifier. */\n getSpacingFromNextModifier() {\n return this.spacingFromNextModifier;\n }\n /**\n * Shift modifier `x` pixels in the direction of the modifier. Negative values\n * shift reverse.\n */\n setXShift(x) {\n this.x_shift = 0;\n if (this.position === Modifier.Position.LEFT) {\n this.x_shift -= x;\n }\n else {\n this.x_shift += x;\n }\n return this;\n }\n /** Get shift modifier `x` */\n getXShift() {\n return this.x_shift;\n }\n /** Render the modifier onto the canvas. */\n draw() {\n this.checkContext();\n throw new RuntimeError('NotImplemented', 'draw() not implemented for this modifier.');\n }\n // aligns sub notes of NoteSubGroup (or GraceNoteGroup) to the main note with correct x-offset\n alignSubNotesWithNote(subNotes, note) {\n // Shift over the tick contexts of each note\n const tickContext = note.getTickContext();\n const metrics = tickContext.getMetrics();\n const stave = note.getStave();\n const subNoteXOffset = tickContext.getX() - metrics.modLeftPx - metrics.modRightPx + this.getSpacingFromNextModifier();\n subNotes.forEach((subNote) => {\n const subTickContext = subNote.getTickContext();\n if (stave)\n subNote.setStave(stave);\n subTickContext.setXOffset(subNoteXOffset); // don't touch baseX to avoid shift each render\n });\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { RuntimeError } from './util';\n/** Music implements some standard music theory routines. */\nexport class Music {\n /** Number of an canonical notes (12). */\n static get NUM_TONES() {\n return this.canonical_notes.length;\n }\n /** Names of root notes ('c', 'd',...) */\n static get roots() {\n return ['c', 'd', 'e', 'f', 'g', 'a', 'b'];\n }\n /** Values of the root notes.*/\n static get root_values() {\n return [0, 2, 4, 5, 7, 9, 11];\n }\n /** Indices of the root notes.*/\n static get root_indices() {\n return {\n c: 0,\n d: 1,\n e: 2,\n f: 3,\n g: 4,\n a: 5,\n b: 6,\n };\n }\n /** Names of canonical notes ('c', 'c#', 'd',...). */\n static get canonical_notes() {\n return ['c', 'c#', 'd', 'd#', 'e', 'f', 'f#', 'g', 'g#', 'a', 'a#', 'b'];\n }\n /** Names of diatonic intervals ('unison', 'm2', 'M2',...). */\n static get diatonic_intervals() {\n return ['unison', 'm2', 'M2', 'm3', 'M3', 'p4', 'dim5', 'p5', 'm6', 'M6', 'b7', 'M7', 'octave'];\n }\n /** NoteAccidental associated to diatonic intervals. */\n static get diatonic_accidentals() {\n return {\n unison: { note: 0, accidental: 0 },\n m2: { note: 1, accidental: -1 },\n M2: { note: 1, accidental: 0 },\n m3: { note: 2, accidental: -1 },\n M3: { note: 2, accidental: 0 },\n p4: { note: 3, accidental: 0 },\n dim5: { note: 4, accidental: -1 },\n p5: { note: 4, accidental: 0 },\n m6: { note: 5, accidental: -1 },\n M6: { note: 5, accidental: 0 },\n b7: { note: 6, accidental: -1 },\n M7: { note: 6, accidental: 0 },\n octave: { note: 7, accidental: 0 },\n };\n }\n /** Semitones shift associated to intervals .*/\n static get intervals() {\n return {\n u: 0,\n unison: 0,\n m2: 1,\n b2: 1,\n min2: 1,\n S: 1,\n H: 1,\n 2: 2,\n M2: 2,\n maj2: 2,\n T: 2,\n W: 2,\n m3: 3,\n b3: 3,\n min3: 3,\n M3: 4,\n 3: 4,\n maj3: 4,\n 4: 5,\n p4: 5,\n '#4': 6,\n b5: 6,\n aug4: 6,\n dim5: 6,\n 5: 7,\n p5: 7,\n '#5': 8,\n b6: 8,\n aug5: 8,\n 6: 9,\n M6: 9,\n maj6: 9,\n b7: 10,\n m7: 10,\n min7: 10,\n dom7: 10,\n M7: 11,\n maj7: 11,\n 8: 12,\n octave: 12,\n };\n }\n /** Semitones shifts associated with scales. */\n static get scales() {\n return {\n major: [2, 2, 1, 2, 2, 2, 1],\n minor: [2, 1, 2, 2, 1, 2, 2],\n ionian: [2, 2, 1, 2, 2, 2, 1],\n dorian: [2, 1, 2, 2, 2, 1, 2],\n phyrgian: [1, 2, 2, 2, 1, 2, 2],\n lydian: [2, 2, 2, 1, 2, 2, 1],\n mixolydian: [2, 2, 1, 2, 2, 1, 2],\n aeolian: [2, 1, 2, 2, 1, 2, 2],\n locrian: [1, 2, 2, 1, 2, 2, 2],\n };\n }\n /** Scales associated with m (minor) and M (major). */\n static get scaleTypes() {\n return {\n M: Music.scales.major,\n m: Music.scales.minor,\n };\n }\n /** Accidentals abbreviations. */\n static get accidentals() {\n return ['bb', 'b', 'n', '#', '##'];\n }\n /** Note values. */\n static get noteValues() {\n return {\n c: { root_index: 0, int_val: 0 },\n cn: { root_index: 0, int_val: 0 },\n 'c#': { root_index: 0, int_val: 1 },\n 'c##': { root_index: 0, int_val: 2 },\n cb: { root_index: 0, int_val: 11 },\n cbb: { root_index: 0, int_val: 10 },\n d: { root_index: 1, int_val: 2 },\n dn: { root_index: 1, int_val: 2 },\n 'd#': { root_index: 1, int_val: 3 },\n 'd##': { root_index: 1, int_val: 4 },\n db: { root_index: 1, int_val: 1 },\n dbb: { root_index: 1, int_val: 0 },\n e: { root_index: 2, int_val: 4 },\n en: { root_index: 2, int_val: 4 },\n 'e#': { root_index: 2, int_val: 5 },\n 'e##': { root_index: 2, int_val: 6 },\n eb: { root_index: 2, int_val: 3 },\n ebb: { root_index: 2, int_val: 2 },\n f: { root_index: 3, int_val: 5 },\n fn: { root_index: 3, int_val: 5 },\n 'f#': { root_index: 3, int_val: 6 },\n 'f##': { root_index: 3, int_val: 7 },\n fb: { root_index: 3, int_val: 4 },\n fbb: { root_index: 3, int_val: 3 },\n g: { root_index: 4, int_val: 7 },\n gn: { root_index: 4, int_val: 7 },\n 'g#': { root_index: 4, int_val: 8 },\n 'g##': { root_index: 4, int_val: 9 },\n gb: { root_index: 4, int_val: 6 },\n gbb: { root_index: 4, int_val: 5 },\n a: { root_index: 5, int_val: 9 },\n an: { root_index: 5, int_val: 9 },\n 'a#': { root_index: 5, int_val: 10 },\n 'a##': { root_index: 5, int_val: 11 },\n ab: { root_index: 5, int_val: 8 },\n abb: { root_index: 5, int_val: 7 },\n b: { root_index: 6, int_val: 11 },\n bn: { root_index: 6, int_val: 11 },\n 'b#': { root_index: 6, int_val: 0 },\n 'b##': { root_index: 6, int_val: 1 },\n bb: { root_index: 6, int_val: 10 },\n bbb: { root_index: 6, int_val: 9 },\n };\n }\n isValidNoteValue(note) {\n return note >= 0 && note < Music.canonical_notes.length;\n }\n isValidIntervalValue(interval) {\n return interval >= 0 && interval < Music.diatonic_intervals.length;\n }\n /** Return root and accidental associated to a note. */\n getNoteParts(noteString) {\n if (!noteString || noteString.length < 1) {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n if (noteString.length > 3) {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n const note = noteString.toLowerCase();\n const regex = /^([cdefgab])(b|bb|n|#|##)?$/;\n const match = regex.exec(note);\n if (match !== null) {\n const root = match[1];\n const accidental = match[2];\n return {\n root,\n accidental,\n };\n }\n else {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n }\n /** Return root, accidental and type associated to a key. */\n getKeyParts(keyString) {\n if (!keyString || keyString.length < 1) {\n throw new RuntimeError('BadArguments', 'Invalid key: ' + keyString);\n }\n const key = keyString.toLowerCase();\n // Support Major, Minor, Melodic Minor, and Harmonic Minor key types.\n const regex = /^([cdefgab])(b|#)?(mel|harm|m|M)?$/;\n const match = regex.exec(key);\n if (match !== null) {\n const root = match[1];\n const accidental = match[2];\n let type = match[3];\n // Unspecified type implies major\n if (!type)\n type = 'M';\n return {\n root,\n accidental,\n type,\n };\n }\n else {\n throw new RuntimeError('BadArguments', `Invalid key: ${keyString}`);\n }\n }\n /** Note value associated to a note name. */\n getNoteValue(noteString) {\n const value = Music.noteValues[noteString];\n if (value === undefined) {\n throw new RuntimeError('BadArguments', `Invalid note name: ${noteString}`);\n }\n return value.int_val;\n }\n /** Interval value associated to an interval name. */\n getIntervalValue(intervalString) {\n const value = Music.intervals[intervalString];\n if (value === undefined) {\n throw new RuntimeError('BadArguments', `Invalid interval name: ${intervalString}`);\n }\n return value;\n }\n /** Canonical note name associated to a value. */\n getCanonicalNoteName(noteValue) {\n if (!this.isValidNoteValue(noteValue)) {\n throw new RuntimeError('BadArguments', `Invalid note value: ${noteValue}`);\n }\n return Music.canonical_notes[noteValue];\n }\n /** Interval name associated to a value. */\n getCanonicalIntervalName(intervalValue) {\n if (!this.isValidIntervalValue(intervalValue)) {\n throw new RuntimeError('BadArguments', `Invalid interval value: ${intervalValue}`);\n }\n return Music.diatonic_intervals[intervalValue];\n }\n /**\n * Given a note, interval, and interval direction, produce the relative note.\n */\n getRelativeNoteValue(noteValue, intervalValue, direction = 1) {\n if (direction !== 1 && direction !== -1) {\n throw new RuntimeError('BadArguments', `Invalid direction: ${direction}`);\n }\n let sum = (noteValue + direction * intervalValue) % Music.NUM_TONES;\n if (sum < 0)\n sum += Music.NUM_TONES;\n return sum;\n }\n /**\n * Given a root and note value, produce the relative note name.\n */\n getRelativeNoteName(root, noteValue) {\n const parts = this.getNoteParts(root);\n const rootValue = this.getNoteValue(parts.root);\n let interval = noteValue - rootValue;\n if (Math.abs(interval) > Music.NUM_TONES - 3) {\n let multiplier = 1;\n if (interval > 0)\n multiplier = -1;\n // Possibly wrap around. (Add +1 for modulo operator)\n const reverse_interval = ((noteValue + 1 + (rootValue + 1)) % Music.NUM_TONES) * multiplier;\n if (Math.abs(reverse_interval) > 2) {\n throw new RuntimeError('BadArguments', `Notes not related: ${root}, ${noteValue})`);\n }\n else {\n interval = reverse_interval;\n }\n }\n if (Math.abs(interval) > 2) {\n throw new RuntimeError('BadArguments', `Notes not related: ${root}, ${noteValue})`);\n }\n let relativeNoteName = parts.root;\n if (interval > 0) {\n for (let i = 1; i <= interval; ++i) {\n relativeNoteName += '#';\n }\n }\n else if (interval < 0) {\n for (let i = -1; i >= interval; --i) {\n relativeNoteName += 'b';\n }\n }\n return relativeNoteName;\n }\n /**\n * Return scale tones, given intervals. Each successive interval is\n * relative to the previous one, e.g., Major Scale:\n *\n * TTSTTTS = [2,2,1,2,2,2,1]\n *\n * When used with key = 0, returns C scale (which is isomorphic to\n * interval list).\n */\n getScaleTones(key, intervals) {\n const tones = [key];\n let nextNote = key;\n for (let i = 0; i < intervals.length; i++) {\n nextNote = this.getRelativeNoteValue(nextNote, intervals[i]);\n if (nextNote !== key)\n tones.push(nextNote);\n }\n return tones;\n }\n /**\n * Return the interval of a note, given a diatonic scale.\n * e.g., given the scale C, and the note E, returns M3.\n */\n getIntervalBetween(note1, note2, direction = 1) {\n if (direction !== 1 && direction !== -1) {\n throw new RuntimeError('BadArguments', `Invalid direction: ${direction}`);\n }\n if (!this.isValidNoteValue(note1) || !this.isValidNoteValue(note2)) {\n throw new RuntimeError('BadArguments', `Invalid notes: ${note1}, ${note2}`);\n }\n let difference = direction === 1 ? note2 - note1 : note1 - note2;\n if (difference < 0)\n difference += Music.NUM_TONES;\n return difference;\n }\n /**\n * Create a scale map that represents the pitch state for a\n * `keySignature`. For example, passing a `G` to `keySignature` would\n * return a scale map with every note naturalized except for `F` which\n * has an `F#` state.\n */\n createScaleMap(keySignature) {\n const keySigParts = this.getKeyParts(keySignature);\n if (!keySigParts.type)\n throw new RuntimeError('BadArguments', 'Unsupported key type: undefined');\n const scaleName = Music.scaleTypes[keySigParts.type];\n let keySigString = keySigParts.root;\n if (keySigParts.accidental)\n keySigString += keySigParts.accidental;\n if (!scaleName)\n throw new RuntimeError('BadArguments', 'Unsupported key type: ' + keySignature);\n const scale = this.getScaleTones(this.getNoteValue(keySigString), scaleName);\n const noteLocation = Music.root_indices[keySigParts.root];\n const scaleMap = {};\n for (let i = 0; i < Music.roots.length; ++i) {\n const index = (noteLocation + i) % Music.roots.length;\n const rootName = Music.roots[index];\n let noteName = this.getRelativeNoteName(rootName, scale[i]);\n if (noteName.length === 1) {\n noteName += 'n';\n }\n scaleMap[rootName] = noteName;\n }\n return scaleMap;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// @author Mohit Cheppudira\n// @author Greg Ristow (modifications)\nimport { Fraction } from './fraction';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Music } from './music';\nimport { Tables } from './tables';\nimport { Category, isAccidental, isGraceNote, isGraceNoteGroup, isStaveNote } from './typeguard';\nimport { defined, log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Accidental.DEBUG)\n log('Vex.Flow.Accidental', args);\n}\n/**\n * An `Accidental` inherits from `Modifier`, and is formatted within a\n * `ModifierContext`. Accidentals are modifiers that can be attached to\n * notes. Support is included for both western and microtonal accidentals.\n *\n * See `tests/accidental_tests.ts` for usage examples.\n */\nexport class Accidental extends Modifier {\n /**\n * Create accidental.\n * @param type value from `Vex.Flow.accidentalCodes.accidentals` table in `tables.ts`.\n * For example: `#`, `##`, `b`, `n`, etc.\n */\n constructor(type) {\n super();\n L('New accidental: ', type);\n this.type = type;\n this.position = Modifier.Position.LEFT;\n this.render_options = {\n // Font size for glyphs\n font_scale: 38,\n // Padding between accidental and parentheses on each side\n parenLeftPadding: 2,\n parenRightPadding: 2,\n };\n this.accidental = Tables.accidentalCodes(this.type);\n defined(this.accidental, 'ArgumentError', `Unknown accidental type: ${type}`);\n // Cautionary accidentals have parentheses around them\n this.cautionary = false;\n this.reset();\n }\n /** Accidentals category string. */\n static get CATEGORY() {\n return Category.Accidental;\n }\n /** Arrange accidentals inside a ModifierContext. */\n static format(accidentals, state) {\n // If there are no accidentals, no need to format their positions.\n if (!accidentals || accidentals.length === 0)\n return;\n const musicFont = Tables.currentMusicFont();\n const noteheadAccidentalPadding = musicFont.lookupMetric('accidental.noteheadAccidentalPadding');\n const leftShift = state.left_shift + noteheadAccidentalPadding;\n const accidentalSpacing = musicFont.lookupMetric('accidental.accidentalSpacing');\n const additionalPadding = musicFont.lookupMetric('accidental.leftPadding'); // padding to the left of all accidentals\n const accList = [];\n let prevNote = undefined;\n let shiftL = 0;\n // First determine the accidentals' Y positions from the note.keys\n for (let i = 0; i < accidentals.length; ++i) {\n const acc = accidentals[i];\n const note = acc.getNote();\n const stave = note.getStave();\n const index = acc.checkIndex();\n const props = note.getKeyProps()[index];\n if (note !== prevNote) {\n // Iterate through all notes to get the displaced pixels\n for (let n = 0; n < note.keys.length; ++n) {\n shiftL = Math.max(note.getLeftDisplacedHeadPx() - note.getXShift(), shiftL);\n }\n prevNote = note;\n }\n if (stave) {\n const lineSpace = stave.getSpacingBetweenLines();\n const y = stave.getYForLine(props.line);\n const accLine = Math.round((y / lineSpace) * 2) / 2;\n accList.push({ y, line: accLine, shift: shiftL, acc, lineSpace });\n }\n else {\n accList.push({ line: props.line, shift: shiftL, acc });\n }\n }\n // Sort accidentals by line number.\n accList.sort((a, b) => b.line - a.line);\n // FIXME: Confusing name. Each object in this array has a property called `line`.\n // So if this is a list of lines, you end up with: `line.line` which is very awkward.\n const lineList = [];\n // amount by which all accidentals must be shifted right or left for\n // stem flipping, notehead shifting concerns.\n let accShift = 0;\n let previousLine = undefined;\n // Create an array of unique line numbers (lineList) from accList\n for (let i = 0; i < accList.length; i++) {\n const acc = accList[i];\n // if this is the first line, or a new line, add a lineList\n if (previousLine === undefined || previousLine !== acc.line) {\n lineList.push({\n line: acc.line,\n flatLine: true,\n dblSharpLine: true,\n numAcc: 0,\n width: 0,\n column: 0,\n });\n }\n // if this accidental is not a flat, the accidental needs 3.0 lines lower\n // clearance instead of 2.5 lines for b or bb.\n // FIXME: Naming could use work. acc.acc is very awkward\n if (acc.acc.type !== 'b' && acc.acc.type !== 'bb') {\n lineList[lineList.length - 1].flatLine = false;\n }\n // if this accidental is not a double sharp, the accidental needs 3.0 lines above\n if (acc.acc.type !== '##') {\n lineList[lineList.length - 1].dblSharpLine = false;\n }\n // Track how many accidentals are on this line:\n lineList[lineList.length - 1].numAcc++;\n // Track the total x_offset needed for this line which will be needed\n // for formatting lines w/ multiple accidentals:\n // width = accidental width + universal spacing between accidentals\n lineList[lineList.length - 1].width += acc.acc.getWidth() + accidentalSpacing;\n // if this accShift is larger, use it to keep first column accidentals in the same line\n accShift = acc.shift > accShift ? acc.shift : accShift;\n previousLine = acc.line;\n }\n // ### Place Accidentals in Columns\n //\n // Default to a classic triangular layout (middle accidental farthest left),\n // but follow exceptions as outlined in G. Read's _Music Notation_ and\n // Elaine Gould's _Behind Bars_.\n //\n // Additionally, this implements different vertical collision rules for\n // flats (only need 2.5 lines clearance below) and double sharps (only\n // need 2.5 lines of clearance above or below).\n //\n // Classic layouts and exception patterns are found in the 'tables.js'\n // in 'Tables.accidentalColumnsTable'\n //\n // Beyond 6 vertical accidentals, default to the parallel ascending lines approach,\n // using as few columns as possible for the verticle structure.\n //\n // TODO (?): Allow column to be specified for an accidental at run-time?\n let totalColumns = 0;\n // establish the boundaries for a group of notes with clashing accidentals:\n for (let i = 0; i < lineList.length; i++) {\n let noFurtherConflicts = false;\n const groupStart = i;\n let groupEnd = i;\n while (groupEnd + 1 < lineList.length && !noFurtherConflicts) {\n // if this note conflicts with the next:\n if (this.checkCollision(lineList[groupEnd], lineList[groupEnd + 1])) {\n // include the next note in the group:\n groupEnd++;\n }\n else {\n noFurtherConflicts = true;\n }\n }\n // Gets an a line from the `lineList`, relative to the current group\n const getGroupLine = (index) => lineList[groupStart + index];\n const getGroupLines = (indexes) => indexes.map(getGroupLine);\n const lineDifference = (indexA, indexB) => {\n const [a, b] = getGroupLines([indexA, indexB]).map((item) => item.line);\n return a - b;\n };\n const notColliding = (...indexPairs) => indexPairs.map(getGroupLines).every(([line1, line2]) => !this.checkCollision(line1, line2));\n // Set columns for the lines in this group:\n const groupLength = groupEnd - groupStart + 1;\n // Set the accidental column for each line of the group\n let endCase = this.checkCollision(lineList[groupStart], lineList[groupEnd]) ? 'a' : 'b';\n switch (groupLength) {\n case 3:\n if (endCase === 'a' && lineDifference(1, 2) === 0.5 && lineDifference(0, 1) !== 0.5) {\n endCase = 'second_on_bottom';\n }\n break;\n case 4:\n if (notColliding([0, 2], [1, 3])) {\n endCase = 'spaced_out_tetrachord';\n }\n break;\n case 5:\n if (endCase === 'b' && notColliding([1, 3])) {\n endCase = 'spaced_out_pentachord';\n if (notColliding([0, 2], [2, 4])) {\n endCase = 'very_spaced_out_pentachord';\n }\n }\n break;\n case 6:\n if (notColliding([0, 3], [1, 4], [2, 5])) {\n endCase = 'spaced_out_hexachord';\n }\n if (notColliding([0, 2], [2, 4], [1, 3], [3, 5])) {\n endCase = 'very_spaced_out_hexachord';\n }\n break;\n default:\n break;\n }\n let groupMember;\n let column;\n // If the group contains seven members or more, use ascending parallel lines\n // of accidentals, using as few columns as possible while avoiding collisions.\n if (groupLength >= 7) {\n // First, determine how many columns to use:\n let patternLength = 2;\n let collisionDetected = true;\n while (collisionDetected === true) {\n collisionDetected = false;\n for (let line = 0; line + patternLength < lineList.length; line++) {\n if (this.checkCollision(lineList[line], lineList[line + patternLength])) {\n collisionDetected = true;\n patternLength++;\n break;\n }\n }\n }\n // Then, assign a column to each line of accidentals\n for (groupMember = i; groupMember <= groupEnd; groupMember++) {\n column = ((groupMember - i) % patternLength) + 1;\n lineList[groupMember].column = column;\n totalColumns = totalColumns > column ? totalColumns : column;\n }\n }\n else {\n // If the group contains fewer than seven members, use the layouts from\n // the Tables.accidentalColumnsTable (See: tables.ts).\n for (groupMember = i; groupMember <= groupEnd; groupMember++) {\n column = Tables.accidentalColumnsTable[groupLength][endCase][groupMember - i];\n lineList[groupMember].column = column;\n totalColumns = totalColumns > column ? totalColumns : column;\n }\n }\n // Increment i to the last note that was set, so that if a lower set of notes\n // does not conflict at all with this group, it can have its own classic shape.\n i = groupEnd;\n }\n // ### Convert Columns to x_offsets\n //\n // This keeps columns aligned, even if they have different accidentals within them\n // which sometimes results in a larger x_offset than is an accidental might need\n // to preserve the symmetry of the accidental shape.\n //\n // Neither A.C. Vinci nor G. Read address this, and it typically only happens in\n // music with complex chord clusters.\n //\n // TODO (?): Optionally allow closer compression of accidentals, instead of forcing\n // parallel columns.\n // track each column's max width, which will be used as initial shift of later columns:\n const columnWidths = [];\n const columnXOffsets = [];\n for (let i = 0; i <= totalColumns; i++) {\n columnWidths[i] = 0;\n columnXOffsets[i] = 0;\n }\n columnWidths[0] = accShift + leftShift;\n columnXOffsets[0] = accShift + leftShift;\n // Fill columnWidths with widest needed x-space;\n // this is what keeps the columns parallel.\n lineList.forEach((line) => {\n if (line.width > columnWidths[line.column])\n columnWidths[line.column] = line.width;\n });\n for (let i = 1; i < columnWidths.length; i++) {\n // this column's offset = this column's width + previous column's offset\n columnXOffsets[i] = columnWidths[i] + columnXOffsets[i - 1];\n }\n const totalShift = columnXOffsets[columnXOffsets.length - 1];\n // Set the xShift for each accidental according to column offsets:\n let accCount = 0;\n lineList.forEach((line) => {\n let lineWidth = 0;\n const lastAccOnLine = accCount + line.numAcc;\n // handle all of the accidentals on a given line:\n for (accCount; accCount < lastAccOnLine; accCount++) {\n const xShift = columnXOffsets[line.column - 1] + lineWidth;\n accList[accCount].acc.setXShift(xShift);\n // keep track of the width of accidentals we've added so far, so that when\n // we loop, we add space for them.\n lineWidth += accList[accCount].acc.getWidth() + accidentalSpacing;\n L('Line, accCount, shift: ', line.line, accCount, xShift);\n }\n });\n // update the overall layout with the full width of the accidental shapes:\n state.left_shift += totalShift + additionalPadding;\n }\n /** Helper function to determine whether two lines of accidentals collide vertically */\n static checkCollision(line1, line2) {\n let clearance = line2.line - line1.line;\n let clearanceRequired = 3;\n // But less clearance is required for certain accidentals: b, bb and ##.\n if (clearance > 0) {\n // then line 2 is on top\n clearanceRequired = line2.flatLine || line2.dblSharpLine ? 2.5 : 3.0;\n if (line1.dblSharpLine)\n clearance -= 0.5;\n }\n else {\n // line 1 is on top\n clearanceRequired = line1.flatLine || line1.dblSharpLine ? 2.5 : 3.0;\n if (line2.dblSharpLine)\n clearance -= 0.5;\n }\n const collision = Math.abs(clearance) < clearanceRequired;\n L('Line_1, Line_2, Collision: ', line1.line, line2.line, collision);\n return collision;\n }\n /**\n * Use this method to automatically apply accidentals to a set of `voices`.\n * The accidentals will be remembered between all the voices provided.\n * Optionally, you can also provide an initial `keySignature`.\n */\n static applyAccidentals(voices, keySignature) {\n const tickPositions = [];\n const tickNoteMap = {};\n // Sort the tickables in each voice by their tick position in the voice.\n voices.forEach((voice) => {\n const tickPosition = new Fraction(0, 1);\n const tickable = voice.getTickables();\n tickable.forEach((t) => {\n if (t.shouldIgnoreTicks())\n return;\n const notesAtPosition = tickNoteMap[tickPosition.value()];\n if (!notesAtPosition) {\n tickPositions.push(tickPosition.value());\n tickNoteMap[tickPosition.value()] = [t];\n }\n else {\n notesAtPosition.push(t);\n }\n tickPosition.add(t.getTicks());\n });\n });\n const music = new Music();\n // Default key signature is C major.\n if (!keySignature)\n keySignature = 'C';\n // Get the scale map, which represents the current state of each pitch.\n const scaleMapKey = music.createScaleMap(keySignature);\n const scaleMap = {};\n tickPositions.forEach((tickPos) => {\n const tickables = tickNoteMap[tickPos];\n // Array to store all pitches that modified accidental states\n // at this tick position\n const modifiedPitches = [];\n const processNote = (t) => {\n // Only StaveNote implements .addModifier(), which is used below.\n if (!isStaveNote(t) || t.isRest() || t.shouldIgnoreTicks()) {\n return;\n }\n // Go through each key and determine if an accidental should be applied.\n const staveNote = t;\n staveNote.keys.forEach((keyString, keyIndex) => {\n const key = music.getNoteParts(keyString.split('/')[0]);\n const octave = keyString.split('/')[1];\n // Force a natural for every key without an accidental\n const accidentalString = key.accidental || 'n';\n const pitch = key.root + accidentalString;\n // Determine if the current pitch has the same accidental\n // as the scale state\n if (!scaleMap[key.root + octave])\n scaleMap[key.root + octave] = scaleMapKey[key.root];\n const sameAccidental = scaleMap[key.root + octave] === pitch;\n // Determine if an identical pitch in the chord already\n // modified the accidental state\n const previouslyModified = modifiedPitches.indexOf(keyString) > -1;\n // Remove accidentals\n staveNote.getModifiers().forEach((modifier, index) => {\n if (isAccidental(modifier) && modifier.type == accidentalString && modifier.getIndex() == keyIndex) {\n staveNote.getModifiers().splice(index, 1);\n }\n });\n // Add the accidental to the StaveNote\n if (!sameAccidental || (sameAccidental && previouslyModified)) {\n // Modify the scale map so that the root pitch has an\n // updated state\n scaleMap[key.root + octave] = pitch;\n // Create the accidental\n const accidental = new Accidental(accidentalString);\n // Attach the accidental to the StaveNote\n staveNote.addModifier(accidental, keyIndex);\n // Add the pitch to list of pitches that modified accidentals\n modifiedPitches.push(keyString);\n }\n });\n // process grace notes\n staveNote.getModifiers().forEach((modifier) => {\n if (isGraceNoteGroup(modifier)) {\n modifier.getGraceNotes().forEach(processNote);\n }\n });\n };\n tickables.forEach(processNote);\n });\n }\n reset() {\n const fontScale = this.render_options.font_scale;\n this.glyph = new Glyph(this.accidental.code, fontScale);\n this.glyph.setOriginX(1.0);\n if (this.cautionary) {\n this.parenLeft = new Glyph(Tables.accidentalCodes('{').code, fontScale);\n this.parenRight = new Glyph(Tables.accidentalCodes('}').code, fontScale);\n this.parenLeft.setOriginX(1.0);\n this.parenRight.setOriginX(1.0);\n }\n }\n /** Get width in pixels. */\n getWidth() {\n if (this.cautionary) {\n const parenLeft = defined(this.parenLeft);\n const parenRight = defined(this.parenRight);\n const parenWidth = parenLeft.getMetrics().width +\n parenRight.getMetrics().width +\n this.render_options.parenLeftPadding +\n this.render_options.parenRightPadding;\n return this.glyph.getMetrics().width + parenWidth;\n }\n else {\n return this.glyph.getMetrics().width;\n }\n }\n /** Attach this accidental to `note`, which must be a `StaveNote`. */\n setNote(note) {\n defined(note, 'ArgumentError', `Bad note value: ${note}`);\n this.note = note;\n // Accidentals attached to grace notes are rendered smaller.\n if (isGraceNote(note)) {\n this.render_options.font_scale = 25;\n this.reset();\n }\n return this;\n }\n /** If called, draws parenthesis around accidental. */\n setAsCautionary() {\n this.cautionary = true;\n this.render_options.font_scale = 28;\n this.reset();\n return this;\n }\n /** Render accidental onto canvas. */\n draw() {\n const { type, position, index, cautionary, x_shift, y_shift, glyph, render_options: { parenLeftPadding, parenRightPadding }, } = this;\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n // Figure out the start `x` and `y` coordinates for note and index.\n const start = note.getModifierStartXY(position, index);\n let accX = start.x + x_shift;\n const accY = start.y + y_shift;\n L('Rendering: ', type, accX, accY);\n if (!cautionary) {\n glyph.render(ctx, accX, accY);\n }\n else {\n const parenLeft = defined(this.parenLeft);\n const parenRight = defined(this.parenRight);\n // Render the accidental in parentheses.\n parenRight.render(ctx, accX, accY);\n accX -= parenRight.getMetrics().width;\n accX -= parenRightPadding;\n accX -= this.accidental.parenRightPaddingAdjustment;\n glyph.render(ctx, accX, accY);\n accX -= glyph.getMetrics().width;\n accX -= parenLeftPadding;\n parenLeft.render(ctx, accX, accY);\n }\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Accidental.DEBUG` to `true`. */\nAccidental.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// This file implements the `Stem` object. Generally this object is handled\n// by its parent `StemmableNote`.\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Stem.DEBUG)\n log('Vex.Flow.Stem', args);\n}\nexport class Stem extends Element {\n constructor(options) {\n super();\n this.stem_up_y_offset = 0;\n this.stem_down_y_offset = 0;\n this.stem_up_y_base_offset = 0;\n this.stem_down_y_base_offset = 0;\n // Default notehead x bounds\n this.x_begin = (options === null || options === void 0 ? void 0 : options.x_begin) || 0;\n this.x_end = (options === null || options === void 0 ? void 0 : options.x_end) || 0;\n // Y bounds for top/bottom most notehead\n this.y_top = (options === null || options === void 0 ? void 0 : options.y_top) || 0;\n this.y_bottom = (options === null || options === void 0 ? void 0 : options.y_bottom) || 0;\n // Stem top extension\n this.stem_extension = (options === null || options === void 0 ? void 0 : options.stem_extension) || 0;\n // Direction of the stem\n this.stem_direction = (options === null || options === void 0 ? void 0 : options.stem_direction) || 0;\n // Flag to override all draw calls\n this.hide = (options === null || options === void 0 ? void 0 : options.hide) || false;\n this.isStemlet = (options === null || options === void 0 ? void 0 : options.isStemlet) || false;\n this.stemletHeight = (options === null || options === void 0 ? void 0 : options.stemletHeight) || 0;\n // Use to adjust the rendered height without affecting\n // the results of `.getExtents()`\n this.renderHeightAdjustment = 0;\n this.setOptions(options);\n }\n static get CATEGORY() {\n return Category.Stem;\n }\n // Stem directions\n static get UP() {\n return 1;\n }\n static get DOWN() {\n return -1;\n }\n // Theme\n static get WIDTH() {\n return Tables.STEM_WIDTH;\n }\n static get HEIGHT() {\n return Tables.STEM_HEIGHT;\n }\n setOptions(options) {\n // Changing where the stem meets the head\n this.stem_up_y_offset = (options === null || options === void 0 ? void 0 : options.stem_up_y_offset) || 0;\n this.stem_down_y_offset = (options === null || options === void 0 ? void 0 : options.stem_down_y_offset) || 0;\n this.stem_up_y_base_offset = (options === null || options === void 0 ? void 0 : options.stem_up_y_base_offset) || 0;\n this.stem_down_y_base_offset = (options === null || options === void 0 ? void 0 : options.stem_down_y_base_offset) || 0;\n }\n // Set the x bounds for the default notehead\n setNoteHeadXBounds(x_begin, x_end) {\n this.x_begin = x_begin;\n this.x_end = x_end;\n return this;\n }\n // Set the direction of the stem in relation to the noteheads\n setDirection(direction) {\n this.stem_direction = direction;\n }\n // Set the extension for the stem, generally for flags or beams\n setExtension(ext) {\n this.stem_extension = ext;\n }\n getExtension() {\n return this.stem_extension;\n }\n // The the y bounds for the top and bottom noteheads\n setYBounds(y_top, y_bottom) {\n this.y_top = y_top;\n this.y_bottom = y_bottom;\n }\n // Gets the entire height for the stem\n getHeight() {\n const y_offset = this.stem_direction === Stem.UP ? this.stem_up_y_offset : this.stem_down_y_offset;\n const unsigned_height = this.y_bottom - this.y_top + (Stem.HEIGHT - y_offset + this.stem_extension); // parentheses just for grouping.\n return unsigned_height * this.stem_direction;\n }\n getBoundingBox() {\n throw new RuntimeError('NotImplemented', 'getBoundingBox() not implemented.');\n }\n // Get the y coordinates for the very base of the stem to the top of\n // the extension\n getExtents() {\n const isStemUp = this.stem_direction === Stem.UP;\n const ys = [this.y_top, this.y_bottom];\n const stemHeight = Stem.HEIGHT + this.stem_extension;\n const innerMostNoteheadY = (isStemUp ? Math.min : Math.max)(...ys);\n const outerMostNoteheadY = (isStemUp ? Math.max : Math.min)(...ys);\n const stemTipY = innerMostNoteheadY + stemHeight * -this.stem_direction;\n return { topY: stemTipY, baseY: outerMostNoteheadY };\n }\n setVisibility(isVisible) {\n this.hide = !isVisible;\n return this;\n }\n setStemlet(isStemlet, stemletHeight) {\n this.isStemlet = isStemlet;\n this.stemletHeight = stemletHeight;\n return this;\n }\n adjustHeightForFlag() {\n this.renderHeightAdjustment = Tables.currentMusicFont().lookupMetric('stem.heightAdjustmentForFlag', -3);\n }\n adjustHeightForBeam() {\n this.renderHeightAdjustment = -Stem.WIDTH / 2;\n }\n // Render the stem onto the canvas\n draw() {\n this.setRendered();\n if (this.hide)\n return;\n const ctx = this.checkContext();\n let stem_x;\n let stem_y;\n const stem_direction = this.stem_direction;\n let y_base_offset = 0;\n if (stem_direction === Stem.DOWN) {\n // Down stems are rendered to the left of the head.\n stem_x = this.x_begin;\n stem_y = this.y_top + this.stem_down_y_offset;\n y_base_offset = this.stem_down_y_base_offset;\n }\n else {\n // Up stems are rendered to the right of the head.\n stem_x = this.x_end;\n stem_y = this.y_bottom - this.stem_up_y_offset;\n y_base_offset = this.stem_up_y_base_offset;\n }\n const stemHeight = this.getHeight();\n L('Rendering stem - ', 'Top Y: ', this.y_top, 'Bottom Y: ', this.y_bottom);\n // The offset from the stem's base which is required fo satisfy the stemlet height\n const stemletYOffset = this.isStemlet ? stemHeight - this.stemletHeight * this.stem_direction : 0;\n // Draw the stem\n ctx.save();\n ctx.openGroup('stem', this.getAttribute('id'), { pointerBBox: true });\n this.applyStyle(ctx);\n ctx.beginPath();\n ctx.setLineWidth(Stem.WIDTH);\n ctx.moveTo(stem_x, stem_y - stemletYOffset + y_base_offset);\n ctx.lineTo(stem_x, stem_y - stemHeight - this.renderHeightAdjustment * stem_direction);\n ctx.stroke();\n this.restoreStyle(ctx);\n ctx.closeGroup();\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Stem.DEBUG` to `true`. */\nStem.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextFormatter.DEBUG)\n log('Vex.Flow.TextFormatter', args);\n}\n/**\n * Text widths are stored in a cache, so we don't have to recompute widths\n * for the same font + string combination.\n *\n * The cache is first keyed by the font information. The key is of the form:\n * `${family}-${size}-${weight}-${style}`\n * The second level key is the specific text to be measured.\n *\n * The stored value is the measured width in `em` units.\n * textWidth == textWidthCache[cacheKey][textToMeasure]\n */\nconst textWidthCache = {};\n/**\n * Applications may register additional fonts via `TextFormatter.registerInfo(info)`.\n * The metrics for those fonts will be made available to the application.\n */\nconst registry = {};\nexport class TextFormatter {\n /**\n * Use `TextFormatter.create(...)` to build an instance from information previously\n * registered via `TextFormatter.registerInfo(info)`.\n */\n constructor(formatterInfo) {\n /** Font family. */\n this.family = '';\n /** Specified in `pt` units. */\n this.size = 14;\n /** Font metrics are extracted at 1000 upem (units per em). */\n this.resolution = 1000;\n /**\n * For text formatting, we do not require glyph outlines, but instead rely on glyph\n * bounding box metrics such as:\n * ```\n * {\n * x_min: 48,\n * x_max: 235,\n * y_min: -17,\n * y_max: 734,\n * ha: 751,\n * leftSideBearing: 48,\n * advanceWidth: 286,\n * }\n * ```\n */\n this.glyphs = {};\n this.serifs = false;\n this.monospaced = false;\n this.italic = false;\n this.bold = false;\n this.superscriptOffset = 0;\n this.subscriptOffset = 0;\n this.maxSizeGlyph = 'H';\n // This is an internal key used to index the `textWidthCache`.\n this.cacheKey = '';\n this.updateParams(formatterInfo);\n }\n /**\n * Return all registered font families.\n */\n static getFontFamilies() {\n const registeredFonts = [];\n for (const fontFamily in registry) {\n const formatterInfo = registry[fontFamily];\n registeredFonts.push(Object.assign({}, formatterInfo));\n }\n return registeredFonts;\n }\n /**\n * Call `TextFormatter.registerInfo(info)` to register font information before using this method.\n *\n * This method creates a formatter for the font that most closely matches the requested font.\n * We compare font family, bold, and italic attributes.\n * This method will return a fallback formatter if there are no matches.\n */\n static create(requestedFont = {}) {\n L('create: ', requestedFont);\n if (!requestedFont.family) {\n requestedFont.family = Font.SANS_SERIF;\n }\n // TODO: One potential (small) optimization is to cache the TextFormatter object\n // returned for each font info. We would probably want to clear the cache if\n // the registry is ever updated.\n const candidates = [];\n // The incoming font family is a string of comma-separated font family names.\n // (e.g., `PetalumaScript, Arial, sans-serif`).\n const requestedFamilies = requestedFont.family.split(/\\s*,\\s*/);\n for (const requestedFamily of requestedFamilies) {\n for (const fontFamily in registry) {\n // Support cases where the registry contains 'Roboto Slab Medium',\n // but the requestedFont.family is 'Roboto Slab'.\n if (fontFamily.startsWith(requestedFamily)) {\n candidates.push(registry[fontFamily]);\n }\n }\n if (candidates.length > 0) {\n break;\n }\n }\n let formatter;\n if (candidates.length === 0) {\n // No match, so return a fallback text formatter.\n formatter = new TextFormatter(Object.values(registry)[0]);\n }\n else if (candidates.length === 1) {\n formatter = new TextFormatter(candidates[0]);\n }\n else {\n const bold = Font.isBold(requestedFont.weight);\n const italic = Font.isItalic(requestedFont.style);\n const perfectMatch = candidates.find((f) => f.bold === bold && f.italic === italic);\n if (perfectMatch) {\n formatter = new TextFormatter(perfectMatch);\n }\n else {\n const partialMatch = candidates.find((f) => f.italic === italic || f.bold === bold);\n if (partialMatch) {\n formatter = new TextFormatter(partialMatch);\n }\n else {\n formatter = new TextFormatter(candidates[0]);\n }\n }\n }\n const fontSize = requestedFont.size;\n if (typeof fontSize !== 'undefined') {\n const fontSizeInPt = Font.convertSizeToPointValue(fontSize);\n formatter.setFontSize(fontSizeInPt);\n }\n return formatter;\n }\n /**\n * @param fontFamily used as a key to the font registry.\n * @returns the same info object that was passed in via `TextFormatter.registerInfo(info)`\n */\n static getInfo(fontFamily) {\n return registry[fontFamily];\n }\n /**\n * Apps may register their own fonts and metrics, and those metrics\n * will be available to the app for formatting.\n *\n * Metrics can be generated from a font file using fontgen_text.js in the tools/fonts directory.\n * @param info\n * @param overwrite\n */\n static registerInfo(info, overwrite = false) {\n L('registerInfo: ', info, overwrite);\n const fontFamily = info.family;\n const currFontInfo = registry[fontFamily];\n if (currFontInfo === undefined || overwrite) {\n registry[fontFamily] = info;\n }\n }\n updateParams(params) {\n if (params.family)\n this.family = params.family;\n if (params.resolution)\n this.resolution = params.resolution;\n if (params.glyphs)\n this.glyphs = params.glyphs;\n if (params.serifs)\n this.serifs = params.serifs;\n if (params.monospaced)\n this.monospaced = params.monospaced;\n if (params.italic)\n this.italic = params.italic;\n if (params.bold)\n this.bold = params.bold;\n if (params.maxSizeGlyph)\n this.maxSizeGlyph = params.maxSizeGlyph;\n if (params.superscriptOffset)\n this.superscriptOffset = params.superscriptOffset;\n if (params.subscriptOffset)\n this.subscriptOffset = params.subscriptOffset;\n this.updateCacheKey();\n }\n /** Create a hash with the current font data, so we can cache computed widths. */\n updateCacheKey() {\n const family = this.family.replace(/\\s+/g, '_');\n const size = this.size;\n const weight = this.bold ? FontWeight.BOLD : FontWeight.NORMAL;\n const style = this.italic ? FontStyle.ITALIC : FontStyle.NORMAL;\n // Use the same key format as SVGContext.\n this.cacheKey = `${family}%${size}%${weight}%${style}`;\n }\n /**\n * The glyphs table is indexed by the character (e.g., 'C', '@').\n * See: robotoslab_glyphs.ts & petalumascript_glyphs.ts.\n */\n getGlyphMetrics(character) {\n if (this.glyphs[character]) {\n return this.glyphs[character];\n }\n else {\n return this.glyphs[this.maxSizeGlyph];\n }\n }\n get maxHeight() {\n const metrics = this.getGlyphMetrics(this.maxSizeGlyph);\n return (metrics.ha / this.resolution) * this.fontSizeInPixels;\n }\n /**\n * Retrieve the character's advanceWidth as a fraction of an `em` unit.\n * For the space character ' ' as defined in the:\n * petalumascript_glyphs.ts: 250 advanceWidth in the 1000 unitsPerEm font returns 0.25.\n * robotoslab_glyphs.ts: 509 advanceWidth in the 2048 unitsPerEm font returns 0.2485.\n */\n getWidthForCharacterInEm(c) {\n var _a;\n const metrics = this.getGlyphMetrics(c);\n if (!metrics) {\n // An arbitrary number, close to the `em` width of the '#' and '5' characters in PetalumaScript.\n return 0.65;\n }\n else {\n const advanceWidth = (_a = metrics.advanceWidth) !== null && _a !== void 0 ? _a : 0;\n return advanceWidth / this.resolution;\n }\n }\n /**\n * Retrieve the total width of `text` in `em` units.\n */\n getWidthForTextInEm(text) {\n const key = this.cacheKey;\n // Get the cache for this specific font family, size, weight, style combination.\n // The cache contains previously computed widths for different `text` strings.\n let cachedWidths = textWidthCache[key];\n if (cachedWidths === undefined) {\n cachedWidths = {};\n textWidthCache[key] = cachedWidths;\n }\n let width = cachedWidths[text];\n if (width === undefined) {\n width = 0;\n for (let i = 0; i < text.length; ++i) {\n width += this.getWidthForCharacterInEm(text[i]);\n }\n cachedWidths[text] = width;\n }\n return width;\n }\n /** The width of the text (in `em`) is scaled by the font size (in `px`). */\n getWidthForTextInPx(text) {\n return this.getWidthForTextInEm(text) * this.fontSizeInPixels;\n }\n /**\n * @param size in pt.\n */\n setFontSize(size) {\n this.size = size;\n // The width cache key depends on the current font size.\n this.updateCacheKey();\n return this;\n }\n /** `this.size` is specified in points. Convert to pixels. */\n get fontSizeInPixels() {\n return this.size * Font.scaleToPxFrom.pt;\n }\n getResolution() {\n return this.resolution;\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.TextFormatter.DEBUG` to `true`. */\nTextFormatter.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category, isStemmableNote, isTabNote } from './typeguard';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Annotation.DEBUG)\n log('Vex.Flow.Annotation', args);\n}\nexport var AnnotationHorizontalJustify;\n(function (AnnotationHorizontalJustify) {\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"LEFT\"] = 1] = \"LEFT\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"CENTER\"] = 2] = \"CENTER\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"RIGHT\"] = 3] = \"RIGHT\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(AnnotationHorizontalJustify || (AnnotationHorizontalJustify = {}));\nexport var AnnotationVerticalJustify;\n(function (AnnotationVerticalJustify) {\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"TOP\"] = 1] = \"TOP\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"CENTER\"] = 2] = \"CENTER\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"BOTTOM\"] = 3] = \"BOTTOM\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(AnnotationVerticalJustify || (AnnotationVerticalJustify = {}));\n/**\n * Annotations are modifiers that can be attached to\n * notes.\n *\n * See `tests/annotation_tests.ts` for usage examples.\n */\nexport class Annotation extends Modifier {\n /**\n * Annotations inherit from `Modifier` and is positioned correctly when\n * in a `ModifierContext`.\n * Create a new `Annotation` with the string `text`.\n */\n constructor(text) {\n super();\n this.text = text;\n this.horizontalJustification = AnnotationHorizontalJustify.CENTER;\n // warning: the default in the constructor is TOP, but in the factory the default is BOTTOM.\n // this is to support legacy application that may expect this.\n this.verticalJustification = AnnotationVerticalJustify.TOP;\n this.resetFont();\n // The default width is calculated from the text.\n this.setWidth(Tables.textWidth(text));\n }\n /** Annotations category string. */\n static get CATEGORY() {\n return Category.Annotation;\n }\n // Use the same padding for annotations as note head so the\n // words don't run into each other.\n static get minAnnotationPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Arrange annotations within a `ModifierContext` */\n static format(annotations, state) {\n if (!annotations || annotations.length === 0)\n return false;\n let leftWidth = 0;\n let rightWidth = 0;\n let maxLeftGlyphWidth = 0;\n let maxRightGlyphWidth = 0;\n for (let i = 0; i < annotations.length; ++i) {\n const annotation = annotations[i];\n const textFormatter = TextFormatter.create(annotation.textFont);\n // Text height is expressed in fractional stave spaces.\n const textLines = (5 + textFormatter.maxHeight) / Tables.STAVE_LINE_DISTANCE;\n let verticalSpaceNeeded = textLines;\n const note = annotation.checkAttachedNote();\n const glyphWidth = note.getGlyph().getWidth();\n // Get the text width from the font metrics.\n const textWidth = textFormatter.getWidthForTextInPx(annotation.text);\n if (annotation.horizontalJustification === AnnotationHorizontalJustify.LEFT) {\n maxLeftGlyphWidth = Math.max(glyphWidth, maxLeftGlyphWidth);\n leftWidth = Math.max(leftWidth, textWidth) + Annotation.minAnnotationPadding;\n }\n else if (annotation.horizontalJustification === AnnotationHorizontalJustify.RIGHT) {\n maxRightGlyphWidth = Math.max(glyphWidth, maxRightGlyphWidth);\n rightWidth = Math.max(rightWidth, textWidth);\n }\n else {\n leftWidth = Math.max(leftWidth, textWidth / 2) + Annotation.minAnnotationPadding;\n rightWidth = Math.max(rightWidth, textWidth / 2);\n maxLeftGlyphWidth = Math.max(glyphWidth / 2, maxLeftGlyphWidth);\n maxRightGlyphWidth = Math.max(glyphWidth / 2, maxRightGlyphWidth);\n }\n const stave = note.getStave();\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let stemHeight = 0;\n let lines = 5;\n if (isTabNote(note)) {\n if (note.render_options.draw_stem) {\n const stem = note.getStem();\n if (stem) {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n else {\n stemHeight = 0;\n }\n }\n else if (isStemmableNote(note)) {\n const stem = note.getStem();\n if (stem && note.getNoteType() === 'n') {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n if (stave) {\n lines = stave.getNumLines();\n }\n if (annotation.verticalJustification === this.VerticalJustify.TOP) {\n let noteLine = note.getLineNumber(true);\n if (isTabNote(note)) {\n noteLine = lines - (note.leastString() - 0.5);\n }\n if (stemDirection === Stem.UP) {\n noteLine += stemHeight;\n }\n const curTop = noteLine + state.top_text_line + 0.5;\n if (curTop < lines) {\n annotation.setTextLine(lines - noteLine);\n verticalSpaceNeeded += lines - noteLine;\n state.top_text_line = verticalSpaceNeeded;\n }\n else {\n annotation.setTextLine(state.top_text_line);\n state.top_text_line += verticalSpaceNeeded;\n }\n }\n else if (annotation.verticalJustification === this.VerticalJustify.BOTTOM) {\n let noteLine = lines - note.getLineNumber();\n if (isTabNote(note)) {\n noteLine = note.greatestString() - 1;\n }\n if (stemDirection === Stem.DOWN) {\n noteLine += stemHeight;\n }\n const curBottom = noteLine + state.text_line + 1;\n if (curBottom < lines) {\n annotation.setTextLine(lines - curBottom);\n verticalSpaceNeeded += lines - curBottom;\n state.text_line = verticalSpaceNeeded;\n }\n else {\n annotation.setTextLine(state.text_line);\n state.text_line += verticalSpaceNeeded;\n }\n }\n else {\n annotation.setTextLine(state.text_line);\n }\n }\n const rightOverlap = Math.min(Math.max(rightWidth - maxRightGlyphWidth, 0), Math.max(rightWidth - state.right_shift, 0));\n const leftOverlap = Math.min(Math.max(leftWidth - maxLeftGlyphWidth, 0), Math.max(leftWidth - state.left_shift, 0));\n state.left_shift += leftOverlap;\n state.right_shift += rightOverlap;\n return true;\n }\n /**\n * Set vertical position of text (above or below stave).\n * @param just value in `AnnotationVerticalJustify`.\n */\n setVerticalJustification(just) {\n this.verticalJustification = typeof just === 'string' ? Annotation.VerticalJustifyString[just] : just;\n return this;\n }\n /**\n * Get horizontal justification.\n */\n getJustification() {\n return this.horizontalJustification;\n }\n /**\n * Set horizontal justification.\n * @param justification value in `Annotation.Justify`.\n */\n setJustification(just) {\n this.horizontalJustification = typeof just === 'string' ? Annotation.HorizontalJustifyString[just] : just;\n return this;\n }\n /** Render text beside the note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n const textFormatter = TextFormatter.create(this.textFont);\n const start = note.getModifierStartXY(ModifierPosition.ABOVE, this.index);\n this.setRendered();\n // We're changing context parameters. Save current state.\n ctx.save();\n // Apply style might not save context, if this.style is undefined, so we\n // still need to save context state just before this, since we will be\n // changing ctx parameters below.\n this.applyStyle();\n ctx.openGroup('annotation', this.getAttribute('id'));\n ctx.setFont(this.textFont);\n const text_width = ctx.measureText(this.text).width;\n const text_height = textFormatter.maxHeight + 2;\n let x;\n let y;\n if (this.horizontalJustification === AnnotationHorizontalJustify.LEFT) {\n x = start.x;\n }\n else if (this.horizontalJustification === AnnotationHorizontalJustify.RIGHT) {\n x = start.x - text_width;\n }\n else if (this.horizontalJustification === AnnotationHorizontalJustify.CENTER) {\n x = start.x - text_width / 2;\n } /* CENTER_STEM */\n else {\n x = note.getStemX() - text_width / 2;\n }\n let stem_ext = {};\n let spacing = 0;\n const has_stem = note.hasStem();\n const stave = note.checkStave();\n // The position of the text varies based on whether or not the note\n // has a stem.\n if (has_stem) {\n stem_ext = note.checkStem().getExtents();\n spacing = stave.getSpacingBetweenLines();\n }\n if (this.verticalJustification === AnnotationVerticalJustify.BOTTOM) {\n // Use the largest (lowest) Y value\n const ys = note.getYs();\n y = ys.reduce((a, b) => (a > b ? a : b));\n y += (this.text_line + 1) * Tables.STAVE_LINE_DISTANCE + text_height;\n if (has_stem && stemDirection === Stem.DOWN) {\n y = Math.max(y, stem_ext.topY + text_height + spacing * this.text_line);\n }\n }\n else if (this.verticalJustification === AnnotationVerticalJustify.CENTER) {\n const yt = note.getYForTopText(this.text_line) - 1;\n const yb = stave.getYForBottomText(this.text_line);\n y = yt + (yb - yt) / 2 + text_height / 2;\n }\n else if (this.verticalJustification === AnnotationVerticalJustify.TOP) {\n y = note.getYs()[0] - (this.text_line + 1) * Tables.STAVE_LINE_DISTANCE;\n if (has_stem && stemDirection === Stem.UP) {\n // If the stem is above the stave already, go with default line width vs. actual\n // since the lines between don't really matter.\n spacing = stem_ext.topY < stave.getTopLineTopY() ? Tables.STAVE_LINE_DISTANCE : spacing;\n y = Math.min(y, stem_ext.topY - spacing * (this.text_line + 1));\n }\n } /* CENTER_STEM */\n else {\n const extents = note.getStemExtents();\n y = extents.topY + (extents.baseY - extents.topY) / 2 + text_height / 2;\n }\n L('Rendering annotation: ', this.text, x, y);\n ctx.fillText(this.text, x, y);\n ctx.closeGroup();\n this.restoreStyle();\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Annotation.DEBUG` to `true`. */\nAnnotation.DEBUG = false;\nAnnotation.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n/** Text annotations can be positioned and justified relative to the note. */\nAnnotation.HorizontalJustify = AnnotationHorizontalJustify;\nAnnotation.HorizontalJustifyString = {\n left: AnnotationHorizontalJustify.LEFT,\n right: AnnotationHorizontalJustify.RIGHT,\n center: AnnotationHorizontalJustify.CENTER,\n centerStem: AnnotationHorizontalJustify.CENTER_STEM,\n};\nAnnotation.VerticalJustify = AnnotationVerticalJustify;\nAnnotation.VerticalJustifyString = {\n above: AnnotationVerticalJustify.TOP,\n top: AnnotationVerticalJustify.TOP,\n below: AnnotationVerticalJustify.BOTTOM,\n bottom: AnnotationVerticalJustify.BOTTOM,\n center: AnnotationVerticalJustify.CENTER,\n centerStem: AnnotationVerticalJustify.CENTER_STEM,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns.\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isGraceNote, isStaveNote, isStemmableNote, isTabNote } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Articulation.DEBUG)\n log('Vex.Flow.Articulation', args);\n}\nconst { ABOVE, BELOW } = Modifier.Position;\nfunction roundToNearestHalf(mathFn, value) {\n return mathFn(value / 0.5) * 0.5;\n}\n// This includes both staff and ledger lines\nfunction isWithinLines(line, position) {\n return position === ABOVE ? line <= 5 : line >= 1;\n}\nfunction getRoundingFunction(line, position) {\n if (isWithinLines(line, position)) {\n if (position === ABOVE) {\n return Math.ceil;\n }\n else {\n return Math.floor;\n }\n }\n else {\n return Math.round;\n }\n}\nfunction snapLineToStaff(canSitBetweenLines, line, position, offsetDirection) {\n // Initially, snap to nearest staff line or space\n const snappedLine = roundToNearestHalf(getRoundingFunction(line, position), line);\n const canSnapToStaffSpace = canSitBetweenLines && isWithinLines(snappedLine, position);\n const onStaffLine = snappedLine % 1 === 0;\n if (canSnapToStaffSpace && onStaffLine) {\n const HALF_STAFF_SPACE = 0.5;\n return snappedLine + HALF_STAFF_SPACE * -offsetDirection;\n }\n else {\n return snappedLine;\n }\n}\n// Helper function for checking if a Note object is either a StaveNote or a GraceNote.\nconst isStaveOrGraceNote = (note) => isStaveNote(note) || isGraceNote(note);\nfunction getTopY(note, textLine) {\n const stemDirection = note.getStemDirection();\n const { topY: stemTipY, baseY: stemBaseY } = note.getStemExtents();\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemTipY;\n }\n else {\n return stemBaseY;\n }\n }\n else {\n return Math.min(...note.getYs());\n }\n }\n else if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemTipY;\n }\n else {\n return note.checkStave().getYForTopText(textLine);\n }\n }\n else {\n return note.checkStave().getYForTopText(textLine);\n }\n }\n else {\n throw new RuntimeError('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes');\n }\n}\nfunction getBottomY(note, textLine) {\n const stemDirection = note.getStemDirection();\n const { topY: stemTipY, baseY: stemBaseY } = note.getStemExtents();\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemBaseY;\n }\n else {\n return stemTipY;\n }\n }\n else {\n return Math.max(...note.getYs());\n }\n }\n else if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return note.checkStave().getYForBottomText(textLine);\n }\n else {\n return stemTipY;\n }\n }\n else {\n return note.checkStave().getYForBottomText(textLine);\n }\n }\n else {\n throw new RuntimeError('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes');\n }\n}\n/**\n * Get the initial offset of the articulation from the y value of the starting position.\n * This is required because the top/bottom text positions already have spacing applied to\n * provide a \"visually pleasant\" default position. However the y values provided from\n * the stavenote's top/bottom do *not* have any pre-applied spacing. This function\n * normalizes this asymmetry.\n * @param note\n * @param position\n * @returns\n */\nfunction getInitialOffset(note, position) {\n const isOnStemTip = (position === ABOVE && note.getStemDirection() === Stem.UP) ||\n (position === BELOW && note.getStemDirection() === Stem.DOWN);\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem() && isOnStemTip) {\n return 0.5;\n }\n else {\n // this amount is larger than the stem-tip offset because we start from\n // the center of the notehead\n return 1;\n }\n }\n else {\n if (note.hasStem() && isOnStemTip) {\n return 1;\n }\n else {\n return 0;\n }\n }\n}\n/**\n * Articulations and Accents are modifiers that can be\n * attached to notes. The complete list of articulations is available in\n * `tables.ts` under `Vex.Flow.articulationCodes`.\n *\n * See `tests/articulation_tests.ts` for usage examples.\n */\nexport class Articulation extends Modifier {\n /**\n * Create a new articulation.\n * @param type entry in `Vex.Flow.articulationCodes` in `tables.ts`\n */\n constructor(type) {\n super();\n this.type = type;\n this.position = BELOW;\n this.render_options = {\n font_scale: 38,\n };\n this.reset();\n }\n /** Articulations category string. */\n static get CATEGORY() {\n return Category.Articulation;\n }\n /**\n * FIXME:\n * Most of the complex formatting logic (ie: snapping to space) is\n * actually done in .render(). But that logic belongs in this method.\n *\n * Unfortunately, this isn't possible because, by this point, stem lengths\n * have not yet been finalized. Finalized stem lengths are required to determine the\n * initial position of any stem-side articulation.\n *\n * This indicates that all objects should have their stave set before being\n * formatted. It can't be an optional if you want accurate vertical positioning.\n * Consistently positioned articulations that play nice with other modifiers\n * won't be possible until we stop relying on render-time formatting.\n *\n * Ideally, when this function has completed, the vertical articulation positions\n * should be ready to render without further adjustment. But the current state\n * is far from this ideal.\n */\n static format(articulations, state) {\n if (!articulations || articulations.length === 0)\n return false;\n const margin = 0.5;\n let maxGlyphWidth = 0;\n const getIncrement = (articulation, line, position) => roundToNearestHalf(getRoundingFunction(line, position), defined(articulation.glyph.getMetrics().height) / 10 + margin);\n articulations.forEach((articulation) => {\n const note = articulation.checkAttachedNote();\n maxGlyphWidth = Math.max(note.getGlyph().getWidth(), maxGlyphWidth);\n let lines = 5;\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let stemHeight = 0;\n // Decide if we need to consider beam direction in placement.\n if (isStemmableNote(note)) {\n const stem = note.getStem();\n if (stem) {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n const stave = note.getStave();\n if (stave) {\n lines = stave.getNumLines();\n }\n if (articulation.getPosition() === ABOVE) {\n let noteLine = note.getLineNumber(true);\n if (stemDirection === Stem.UP) {\n noteLine += stemHeight;\n }\n let increment = getIncrement(articulation, state.top_text_line, ABOVE);\n const curTop = noteLine + state.top_text_line + 0.5;\n // If articulation must be above stave, add lines between note and stave top\n if (!articulation.articulation.between_lines && curTop < lines) {\n increment += lines - curTop;\n }\n articulation.setTextLine(state.top_text_line);\n state.top_text_line += increment;\n }\n else if (articulation.getPosition() === BELOW) {\n let noteLine = Math.max(lines - note.getLineNumber(), 0);\n if (stemDirection === Stem.DOWN) {\n noteLine += stemHeight;\n }\n let increment = getIncrement(articulation, state.text_line, BELOW);\n const curBottom = noteLine + state.text_line + 0.5;\n // if articulation must be below stave, add lines from note to stave bottom\n if (!articulation.articulation.between_lines && curBottom < lines) {\n increment += lines - curBottom;\n }\n articulation.setTextLine(state.text_line);\n state.text_line += increment;\n }\n });\n const width = articulations\n .map((articulation) => articulation.getWidth())\n .reduce((maxWidth, articWidth) => Math.max(articWidth, maxWidth));\n const overlap = Math.min(Math.max(width - maxGlyphWidth, 0), Math.max(width - (state.left_shift + state.right_shift), 0));\n state.left_shift += overlap / 2;\n state.right_shift += overlap / 2;\n return true;\n }\n static easyScoreHook({ articulations }, note, builder) {\n if (!articulations)\n return;\n const articNameToCode = {\n staccato: 'a.',\n tenuto: 'a-',\n accent: 'a>',\n };\n articulations\n .split(',')\n .map((articString) => articString.trim().split('.'))\n .map(([name, position]) => {\n const artic = { type: articNameToCode[name] };\n if (position)\n artic.position = Modifier.PositionString[position];\n return builder.getFactory().Articulation(artic);\n })\n .map((artic) => note.addModifier(artic, 0));\n }\n reset() {\n this.articulation = Tables.articulationCodes(this.type);\n const articulation = defined(this.articulation, 'ArgumentError', `Articulation not found: ${this.type}`);\n const code = (this.position === ABOVE ? articulation.aboveCode : articulation.belowCode) || articulation.code;\n this.glyph = new Glyph(code !== null && code !== void 0 ? code : '', this.render_options.font_scale);\n this.setWidth(defined(this.glyph.getMetrics().width));\n }\n /** Render articulation in position next to note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const index = this.checkIndex();\n const { position, glyph, text_line: textLine } = this;\n const canSitBetweenLines = this.articulation.between_lines;\n const stave = note.checkStave();\n const staffSpace = stave.getSpacingBetweenLines();\n const isTab = isTabNote(note);\n // Articulations are centered over/under the note head.\n const { x } = note.getModifierStartXY(position, index);\n const shouldSitOutsideStaff = !canSitBetweenLines || isTab;\n const initialOffset = getInitialOffset(note, position);\n const padding = Tables.currentMusicFont().lookupMetric(`articulation.${glyph.getCode()}.padding`, 0);\n let y = {\n [ABOVE]: () => {\n glyph.setOrigin(0.5, 1);\n const y = getTopY(note, textLine) - (textLine + initialOffset) * staffSpace;\n return shouldSitOutsideStaff ? Math.min(stave.getYForTopText(Articulation.INITIAL_OFFSET), y) : y;\n },\n [BELOW]: () => {\n glyph.setOrigin(0.5, 0);\n const y = getBottomY(note, textLine) + (textLine + initialOffset) * staffSpace;\n return shouldSitOutsideStaff ? Math.max(stave.getYForBottomText(Articulation.INITIAL_OFFSET), y) : y;\n },\n }[position]();\n if (!isTab) {\n const offsetDirection = position === ABOVE ? -1 : +1;\n const noteLine = note.getKeyProps()[index].line;\n const distanceFromNote = (note.getYs()[index] - y) / staffSpace;\n const articLine = distanceFromNote + Number(noteLine);\n const snappedLine = snapLineToStaff(canSitBetweenLines, articLine, position, offsetDirection);\n if (isWithinLines(snappedLine, position))\n glyph.setOrigin(0.5, 0.5);\n y += Math.abs(snappedLine - articLine) * staffSpace * offsetDirection + padding * offsetDirection;\n }\n L(`Rendering articulation at (x: ${x}, y: ${y})`);\n glyph.render(ctx, x, y);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Articulation.DEBUG` to `true`. */\nArticulation.DEBUG = false;\nArticulation.INITIAL_OFFSET = -0.5;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2021.\n// MIT License\nimport { Category } from './typeguard';\nexport class RenderContext {\n static get CATEGORY() {\n return Category.RenderContext;\n }\n set font(f) {\n this.setFont(f);\n }\n get font() {\n return this.getFont();\n }\n /**\n * This is kept for backwards compatibility with 3.0.9.\n * @deprecated use `setFont(...)` instead since it now supports CSS font shorthand.\n */\n setRawFont(f) {\n this.setFont(f);\n return this;\n }\n}\n/**\n * Draw a tiny dot marker on the specified context. A great debugging aid.\n * @param ctx context\n * @param x dot x coordinate\n * @param y dot y coordinate\n * @param color\n */\nexport function drawDot(ctx, x, y, color = '#F55') {\n ctx.save();\n ctx.setFillStyle(color);\n // draw a circle\n ctx.beginPath();\n ctx.arc(x, y, 3, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n ctx.restore();\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\n/**\n * Tickable represents a element that sit on a score and\n * has a duration, i.e., Tickables occupy space in the musical rendering dimension.\n */\nexport class Tickable extends Element {\n constructor() {\n super();\n this._preFormatted = false;\n this._postFormatted = false;\n // These properties represent the duration of\n // this tickable element.\n this.ticks = new Fraction(0, 1); // Fractional value of ticks\n this.intrinsicTicks = 0; // Floating point value of ticks\n this.tickMultiplier = new Fraction(1, 1);\n // Formatter metrics\n this.width = 0;\n this.x_shift = 0; // Shift from tick context\n this.modifiers = [];\n this.tupletStack = [];\n this.align_center = false;\n this.center_x_shift = 0; // Shift from tick context if center aligned\n // This flag tells the formatter to ignore this tickable during\n // formatting and justification. It is set by tickables such as BarNote.\n this.ignore_ticks = false;\n // This is a space for an external formatting class or function to maintain\n // metrics.\n this.formatterMetrics = {\n // The freedom of a tickable is the distance it can move without colliding\n // with neighboring elements. A formatter can set these values during its\n // formatting pass, which a different formatter can then use to fine tune.\n freedom: { left: 0, right: 0 },\n // The simplified rational duration of this tick as a string. It can be\n // used as an index to a map or hashtable.\n duration: '',\n // The number of formatting iterations undergone.\n iterations: 0,\n // The space in pixels allocated by this formatter, along with the mean space\n // for tickables of this duration, and the deviation from the mean.\n space: {\n used: 0,\n mean: 0,\n deviation: 0,\n },\n };\n }\n static get CATEGORY() {\n return Category.Tickable;\n }\n /** Reset the Tickable, this function will be overloaded. */\n reset() {\n return this;\n }\n /** Return the ticks. */\n getTicks() {\n return this.ticks;\n }\n /** Check if it ignores the ticks. */\n shouldIgnoreTicks() {\n return this.ignore_ticks;\n }\n /** Ignore the ticks. */\n setIgnoreTicks(flag) {\n this.ignore_ticks = flag;\n return this;\n }\n /** Set width of note. Used by the formatter for positioning. */\n setWidth(width) {\n this.width = width;\n }\n /** Get width of note. Used by the formatter for positioning. */\n getWidth() {\n if (!this._preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetWidth on an unformatted note.\");\n }\n return this.width + (this.modifierContext ? this.modifierContext.getWidth() : 0);\n }\n /** Displace note by `x` pixels. Used by the formatter. */\n setXShift(x) {\n this.x_shift = x;\n return this;\n }\n /** Get the `x` displaced pixels of the note. */\n getXShift() {\n return this.x_shift;\n }\n /** Get `x` position of this tick context. */\n getX() {\n const tickContext = this.checkTickContext(`Can't getX() without a TickContext.`);\n return tickContext.getX() + this.x_shift;\n }\n /** Return the formatterMetrics. */\n getFormatterMetrics() {\n return this.formatterMetrics;\n }\n /** Return the center `x` shift. */\n getCenterXShift() {\n if (this.isCenterAligned()) {\n return this.center_x_shift;\n }\n return 0;\n }\n /** Set the center `x` shift. */\n setCenterXShift(centerXShift) {\n this.center_x_shift = centerXShift;\n return this;\n }\n // Check if tickable is center aligned. */\n isCenterAligned() {\n return this.align_center;\n }\n // Set/unset center alignment. */\n setCenterAlignment(align_center) {\n this.align_center = align_center;\n return this;\n }\n /**\n * Return the associated voice. Every tickable must be associated with a voice.\n * This allows formatters and preFormatter to associate them with the right modifierContexts.\n */\n getVoice() {\n return defined(this.voice, 'NoVoice', 'Tickable has no voice.');\n }\n /** Set the associated voice. */\n setVoice(voice) {\n this.voice = voice;\n }\n /** Get the tuplet. */\n getTuplet() {\n return this.tuplet;\n }\n /** Return the intrinsic ticks. */\n getTupletStack() {\n return this.tupletStack;\n }\n /**\n * Reset the specific Tuplet if this is not provided, all tuplets are reset.\n * Remove any prior tuplets from the tick calculation and\n * reset the intrinsic tick value.\n */\n resetTuplet(tuplet) {\n let noteCount;\n let notesOccupied;\n if (tuplet) {\n const i = this.tupletStack.indexOf(tuplet);\n if (i !== -1) {\n this.tupletStack.splice(i, 1);\n noteCount = tuplet.getNoteCount();\n notesOccupied = tuplet.getNotesOccupied();\n // Revert old multiplier by inverting numerator & denom.:\n this.applyTickMultiplier(noteCount, notesOccupied);\n }\n return this;\n }\n while (this.tupletStack.length) {\n tuplet = this.tupletStack.pop();\n noteCount = tuplet.getNoteCount();\n notesOccupied = tuplet.getNotesOccupied();\n // Revert old multiplier by inverting numerator & denom.:\n this.applyTickMultiplier(noteCount, notesOccupied);\n }\n return this;\n }\n /** Attach to new tuplet. */\n setTuplet(tuplet) {\n if (tuplet) {\n this.tupletStack.push(tuplet);\n const noteCount = tuplet.getNoteCount();\n const notesOccupied = tuplet.getNotesOccupied();\n this.applyTickMultiplier(notesOccupied, noteCount);\n }\n this.tuplet = tuplet;\n return this;\n }\n /**\n * Add self to the provided ModifierContext `mc`.\n * If this tickable has modifiers, set modifierContext.\n * @returns this\n */\n addToModifierContext(mc) {\n this.modifierContext = mc;\n for (let i = 0; i < this.modifiers.length; ++i) {\n this.modifierContext.addMember(this.modifiers[i]);\n }\n this.modifierContext.addMember(this);\n this._preFormatted = false;\n return this;\n }\n /**\n * Optional, if tickable has modifiers, associate a Modifier.\n * @param mod the modifier\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n addModifier(modifier, index = 0) {\n this.modifiers.push(modifier);\n this._preFormatted = false;\n return this;\n }\n /** Get the list of associated modifiers. */\n getModifiers() {\n return this.modifiers;\n }\n /** Set the Tick Context. */\n setTickContext(tc) {\n this.tickContext = tc;\n this._preFormatted = false;\n }\n checkTickContext(message = 'Tickable has no tick context.') {\n return defined(this.tickContext, 'NoTickContext', message);\n }\n /** Preformat the Tickable. */\n preFormat() {\n if (this._preFormatted)\n return;\n this.width = 0;\n if (this.modifierContext) {\n this.modifierContext.preFormat();\n this.width += this.modifierContext.getWidth();\n }\n }\n /** Set preformatted status. */\n set preFormatted(value) {\n this._preFormatted = value;\n }\n get preFormatted() {\n return this._preFormatted;\n }\n /** Postformat the Tickable. */\n postFormat() {\n if (this._postFormatted)\n return this;\n this._postFormatted = true;\n return this;\n }\n /** Set postformatted status. */\n set postFormatted(value) {\n this._postFormatted = value;\n }\n get postFormatted() {\n return this._postFormatted;\n }\n /** Return the intrinsic ticks. */\n getIntrinsicTicks() {\n return this.intrinsicTicks;\n }\n /** Set the intrinsic ticks. */\n setIntrinsicTicks(intrinsicTicks) {\n this.intrinsicTicks = intrinsicTicks;\n this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks);\n }\n /** Get the tick multiplier. */\n getTickMultiplier() {\n return this.tickMultiplier;\n }\n /** Apply a tick multiplier. */\n applyTickMultiplier(numerator, denominator) {\n this.tickMultiplier.multiply(numerator, denominator);\n this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks);\n }\n /** Set the duration. */\n setDuration(duration) {\n const ticks = duration.numerator * (Tables.RESOLUTION / duration.denominator);\n this.ticks = this.tickMultiplier.clone().multiply(ticks);\n this.intrinsicTicks = this.ticks.value();\n }\n getAbsoluteX() {\n const tickContext = this.checkTickContext(`Can't getAbsoluteX() without a TickContext.`);\n return tickContext.getX();\n }\n /** Attach this note to a modifier context. */\n setModifierContext(mc) {\n this.modifierContext = mc;\n return this;\n }\n /** Get `ModifierContext`. */\n getModifierContext() {\n return this.modifierContext;\n }\n /** Check and get `ModifierContext`. */\n checkModifierContext() {\n return defined(this.modifierContext, 'NoModifierContext', 'No modifier context attached to this tickable.');\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from './font';\nimport { drawDot } from './rendercontext';\nimport { Tables } from './tables';\nimport { Tickable } from './tickable';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\n/**\n * Note implements an abstract interface for notes and chords that\n * are rendered on a stave. Notes have some common properties: All of them\n * have a value (e.g., pitch, fret, etc.) and a duration (quarter, half, etc.)\n *\n * Some notes have stems, heads, dots, etc. Most notational elements that\n * surround a note are called *modifiers*, and every note has an associated\n * array of them. All notes also have a rendering context and belong to a stave.\n */\nexport class Note extends Tickable {\n /**\n * Every note is a tickable, i.e., it can be mutated by the `Formatter` class for\n * positioning and layout.\n *\n * @param noteStruct To create a new note you need to provide a `noteStruct`.\n */\n constructor(noteStruct) {\n super();\n if (!noteStruct) {\n throw new RuntimeError('BadArguments', 'Note must have valid initialization data to identify duration and type.');\n }\n /** Parses `noteStruct` and get note properties. */\n const parsedNoteStruct = Note.parseNoteStruct(noteStruct);\n if (!parsedNoteStruct) {\n throw new RuntimeError('BadArguments', `Invalid note initialization object: ${JSON.stringify(noteStruct)}`);\n }\n // Set note properties from parameters.\n this.keys = noteStruct.keys || [];\n // per-pitch properties\n this.keyProps = [];\n this.duration = parsedNoteStruct.duration;\n this.noteType = parsedNoteStruct.type;\n this.customTypes = parsedNoteStruct.customTypes;\n if (noteStruct.duration_override) {\n // Custom duration\n this.setDuration(noteStruct.duration_override);\n }\n else {\n // Default duration\n this.setIntrinsicTicks(parsedNoteStruct.ticks);\n }\n this.modifiers = [];\n // Get the glyph code for this note from the font.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n this.customGlyphs = this.customTypes.map((t) => Tables.getGlyphProps(this.duration, t));\n // Note to play for audio players.\n this.playNote = undefined;\n // Positioning contexts used by the Formatter.\n this.ignore_ticks = false;\n // Positioning variables\n this.width = 0; // Width in pixels calculated after preFormat\n this.leftDisplacedHeadPx = 0; // Extra room on left for displaced note head\n this.rightDisplacedHeadPx = 0; // Extra room on right for displaced note head\n this.x_shift = 0; // X shift from tick context X\n this.ys = []; // list of y coordinates for each note\n // we need to hold on to these for ties and beams.\n if (noteStruct.align_center) {\n this.setCenterAlignment(noteStruct.align_center);\n }\n // The render surface.\n this.render_options = {\n annotation_spacing: 5,\n glyph_font_scale: 1,\n stroke_px: 1,\n scale: 1,\n font: '',\n y_shift: 0,\n };\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // STATIC MEMBERS\n static get CATEGORY() {\n return Category.Note;\n }\n /** Debug helper. Displays various note metrics for the given note. */\n static plotMetrics(ctx, note, yPos) {\n const metrics = note.getMetrics();\n const xStart = note.getAbsoluteX() - metrics.modLeftPx - metrics.leftDisplacedHeadPx;\n const xPre1 = note.getAbsoluteX() - metrics.leftDisplacedHeadPx;\n const xAbs = note.getAbsoluteX();\n const xPost1 = note.getAbsoluteX() + metrics.notePx;\n const xPost2 = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx;\n const xEnd = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx + metrics.modRightPx;\n const xFreedomRight = xEnd + (note.getFormatterMetrics().freedom.right || 0);\n const xWidth = xEnd - xStart;\n ctx.save();\n ctx.setFont(Font.SANS_SERIF, 8);\n ctx.fillText(Math.round(xWidth) + 'px', xStart + note.getXShift(), yPos);\n const y = yPos + 7;\n function stroke(x1, x2, color, yy = y) {\n ctx.beginPath();\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n ctx.setLineWidth(3);\n ctx.moveTo(x1 + note.getXShift(), yy);\n ctx.lineTo(x2 + note.getXShift(), yy);\n ctx.stroke();\n }\n stroke(xStart, xPre1, 'red');\n stroke(xPre1, xAbs, '#999');\n stroke(xAbs, xPost1, 'green');\n stroke(xPost1, xPost2, '#999');\n stroke(xPost2, xEnd, 'red');\n stroke(xEnd, xFreedomRight, '#DD0');\n stroke(xStart - note.getXShift(), xStart, '#BBB'); // Shift\n drawDot(ctx, xAbs + note.getXShift(), y, 'blue');\n const formatterMetrics = note.getFormatterMetrics();\n if (formatterMetrics.iterations > 0) {\n const spaceDeviation = formatterMetrics.space.deviation;\n const prefix = spaceDeviation >= 0 ? '+' : '';\n ctx.setFillStyle('red');\n ctx.fillText(prefix + Math.round(spaceDeviation), xAbs + note.getXShift(), yPos - 10);\n }\n ctx.restore();\n }\n static parseDuration(durationString) {\n if (!durationString) {\n return undefined;\n }\n const regexp = /(\\d*\\/?\\d+|[a-z])(d*)([nrhms]|$)/;\n const result = regexp.exec(durationString);\n if (!result) {\n return undefined;\n }\n const duration = result[1];\n const dots = result[2].length;\n const type = result[3] || 'n';\n return { duration, dots, type };\n }\n static parseNoteStruct(noteStruct) {\n // Preserve backwards-compatibility\n const durationProps = Note.parseDuration(noteStruct.duration);\n if (!durationProps) {\n return undefined;\n }\n // If specified type is invalid, return undefined.\n let type = noteStruct.type;\n if (type && !Tables.validTypes[type]) {\n return undefined;\n }\n // If no type specified, check duration or custom types\n const customTypes = [];\n if (!type) {\n type = durationProps.type || 'n';\n // If we have keys, try and check if we've got a custom glyph\n if (noteStruct.keys !== undefined) {\n noteStruct.keys.forEach((k, i) => {\n const result = k.split('/');\n // We have a custom glyph specified after the note eg. /X2\n customTypes[i] = (result && result.length === 3 ? result[2] : type);\n });\n }\n }\n // Calculate the tick duration of the note\n let ticks = Tables.durationToTicks(durationProps.duration);\n if (!ticks) {\n return undefined;\n }\n // Are there any dots?\n const dots = noteStruct.dots ? noteStruct.dots : durationProps.dots;\n if (typeof dots !== 'number') {\n return undefined;\n }\n // Add ticks as necessary depending on the numbr of dots\n let currentTicks = ticks;\n for (let i = 0; i < dots; i++) {\n if (currentTicks <= 1)\n return undefined;\n currentTicks = currentTicks / 2;\n ticks += currentTicks;\n }\n return {\n duration: durationProps.duration,\n type,\n customTypes,\n dots,\n ticks,\n };\n }\n /**\n * Get the play note, which is arbitrary data that can be used by an\n * audio player.\n */\n getPlayNote() {\n return this.playNote;\n }\n /**\n * Set the play note, which is arbitrary data that can be used by an\n * audio player.\n */\n setPlayNote(note) {\n this.playNote = note;\n return this;\n }\n /**\n * @returns true if this note is a type of rest.\n *\n * Rests don't have pitches, but take up space in the score.\n * Subclasses should override this default implementation.\n */\n isRest() {\n return false;\n }\n /** Add stroke. */\n addStroke(index, stroke) {\n stroke.setNote(this);\n stroke.setIndex(index);\n this.modifiers.push(stroke);\n this.preFormatted = false;\n return this;\n }\n /** Get the target stave. */\n getStave() {\n return this.stave;\n }\n /** Check and get the target stave. */\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n /** Set the target stave. */\n setStave(stave) {\n this.stave = stave;\n this.setYs([stave.getYForLine(0)]); // Update Y values if the stave is changed.\n this.setContext(this.stave.getContext());\n return this;\n }\n /** Get spacing to the left of the notes. */\n getLeftDisplacedHeadPx() {\n return this.leftDisplacedHeadPx;\n }\n /** Get spacing to the right of the notes. */\n getRightDisplacedHeadPx() {\n return this.rightDisplacedHeadPx;\n }\n /** Set spacing to the left of the notes. */\n setLeftDisplacedHeadPx(x) {\n this.leftDisplacedHeadPx = x;\n return this;\n }\n /** Set spacing to the right of the notes. */\n setRightDisplacedHeadPx(x) {\n this.rightDisplacedHeadPx = x;\n return this;\n }\n /** True if this note has no duration (e.g., bar notes, spacers, etc.). */\n shouldIgnoreTicks() {\n return this.ignore_ticks;\n }\n /** Get the stave line number for the note. */\n // eslint-disable-next-line\n getLineNumber(isTopNote) {\n return 0;\n }\n /** Get the stave line number for rest. */\n getLineForRest() {\n return 0;\n }\n /** Get the glyph associated with this note. */\n // eslint-disable-next-line\n getGlyph() {\n return this.glyph;\n }\n /** Get the glyph width. */\n getGlyphWidth() {\n // TODO: FIXME (multiple potential values for this.glyph)\n if (this.glyph) {\n if (this.glyph.getMetrics) {\n return this.glyph.getMetrics().width;\n }\n else if (this.glyph.getWidth) {\n return this.glyph.getWidth(this.render_options.glyph_font_scale);\n }\n }\n return 0;\n }\n /**\n * Set Y positions for this note. Each Y value is associated with\n * an individual pitch/key within the note/chord.\n */\n setYs(ys) {\n this.ys = ys;\n return this;\n }\n /**\n * Get Y positions for this note. Each Y value is associated with\n * an individual pitch/key within the note/chord.\n */\n getYs() {\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-values calculated for this note.');\n }\n return this.ys;\n }\n /**\n * Get the Y position of the space above the stave onto which text can\n * be rendered.\n */\n getYForTopText(text_line) {\n return this.checkStave().getYForTopText(text_line);\n }\n /** Return the voice that this note belongs in. */\n getVoice() {\n if (!this.voice)\n throw new RuntimeError('NoVoice', 'Note has no voice.');\n return this.voice;\n }\n /** Attach this note to `voice`. */\n setVoice(voice) {\n this.voice = voice;\n this.preFormatted = false;\n return this;\n }\n /** Get the `TickContext` for this note. */\n getTickContext() {\n return this.checkTickContext();\n }\n /** Set the `TickContext` for this note. */\n setTickContext(tc) {\n this.tickContext = tc;\n this.preFormatted = false;\n return this;\n }\n /** Accessor to duration. */\n getDuration() {\n return this.duration;\n }\n /** Accessor to isDotted. */\n isDotted() {\n return this.getModifiersByType('Dot').length > 0;\n }\n /** Accessor to hasStem. */\n hasStem() {\n return false;\n }\n /** Accessor to note type. */\n getNoteType() {\n return this.noteType;\n }\n /** Get the beam. */\n getBeam() {\n return this.beam;\n }\n /** Check and get the beam. */\n checkBeam() {\n return defined(this.beam, 'NoBeam', 'No beam attached to instance');\n }\n /** Check it has a beam. */\n hasBeam() {\n return this.beam != undefined;\n }\n /** Set the beam. */\n setBeam(beam) {\n this.beam = beam;\n return this;\n }\n /**\n * Attach a modifier to this note.\n * @param modifier the Modifier to add.\n * @param index of the key to modify.\n * @returns this\n */\n addModifier(modifier, index = 0) {\n const signature = 'Note.addModifier(modifier: Modifier, index: number=0)';\n // Backwards compatibility with 3.0.9.\n if (typeof index === 'string') {\n index = parseInt(index);\n // eslint-disable-next-line\n console.warn(signature + ' expected a number for `index`, but received a string.');\n }\n // Some versions of VexFlow had the two parameters reversed.\n // Check here and throw an error if the argument types are not correct.\n if (typeof modifier !== 'object' || typeof index !== 'number') {\n throw new RuntimeError('WrongParams', 'Incorrect call signature. Use ' + signature + ' instead.');\n }\n modifier.setNote(this);\n modifier.setIndex(index);\n super.addModifier(modifier);\n return this;\n }\n /** Get all modifiers of a specific type in `this.modifiers`. */\n getModifiersByType(type) {\n return this.modifiers.filter((modifier) => modifier.getCategory() === type);\n }\n /** Get the coordinates for where modifiers begin. */\n // eslint-disable-next-line\n getModifierStartXY(position, index, options) {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n return {\n x: this.getAbsoluteX(),\n y: this.ys[0],\n };\n }\n getRightParenthesisPx(index) {\n const props = this.getKeyProps()[index];\n return props.displaced ? this.getRightDisplacedHeadPx() : 0;\n }\n getLeftParenthesisPx(index) {\n const props = this.getKeyProps()[index];\n return props.displaced ? this.getLeftDisplacedHeadPx() - this.x_shift : -this.x_shift;\n }\n getFirstDotPx() {\n let px = this.getRightDisplacedHeadPx();\n if (this.checkModifierContext().getMembers('Parenthesis').length !== 0)\n px += Tables.currentMusicFont().lookupMetric('parenthesis.default.width');\n return px;\n }\n /** Get the metrics for this note. */\n getMetrics() {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getMetrics on an unformatted note.\");\n }\n const modLeftPx = this.modifierContext ? this.modifierContext.getState().left_shift : 0;\n const modRightPx = this.modifierContext ? this.modifierContext.getState().right_shift : 0;\n const width = this.getWidth();\n const glyphWidth = this.getGlyphWidth();\n const notePx = width -\n modLeftPx - // subtract left modifiers\n modRightPx - // subtract right modifiers\n this.leftDisplacedHeadPx - // subtract left displaced head\n this.rightDisplacedHeadPx; // subtract right displaced head\n // NOTE: If you change this, remember to update MockTickable.getMetrics() in the tests/ directory.\n return {\n width,\n glyphWidth,\n notePx,\n // Modifier spacing.\n modLeftPx,\n modRightPx,\n // Displaced note head on left or right.\n leftDisplacedHeadPx: this.leftDisplacedHeadPx,\n rightDisplacedHeadPx: this.rightDisplacedHeadPx,\n glyphPx: 0,\n };\n }\n /**\n * Get the absolute `X` position of this note's tick context. This\n * excludes x_shift, so you'll need to factor it in if you're\n * looking for the post-formatted x-position.\n */\n getAbsoluteX() {\n const tickContext = this.checkTickContext(`Can't getAbsoluteX() without a TickContext.`);\n // Position note to left edge of tick context.\n let x = tickContext.getX();\n if (this.stave) {\n x += this.stave.getNoteStartX() + Tables.currentMusicFont().lookupMetric('stave.padding');\n }\n if (this.isCenterAligned()) {\n x += this.getCenterXShift();\n }\n return x;\n }\n /** Get the direction of the stem. */\n getStemDirection() {\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n }\n /** Get the top and bottom `y` values of the stem. */\n getStemExtents() {\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n }\n /** Get the `x` coordinate to the right of the note. */\n getTieRightX() {\n let tieStartX = this.getAbsoluteX();\n const note_glyph_width = this.glyph.getWidth();\n tieStartX += note_glyph_width / 2;\n tieStartX += -this.width / 2 + this.width + 2;\n return tieStartX;\n }\n /** Get the `x` coordinate to the left of the note. */\n getTieLeftX() {\n let tieEndX = this.getAbsoluteX();\n const note_glyph_width = this.glyph.getWidth();\n tieEndX += note_glyph_width / 2;\n tieEndX -= this.width / 2 + 2;\n return tieEndX;\n }\n // Get the pitches in the note\n getKeys() {\n return this.keys;\n }\n // Get the properties for all the keys in the note\n getKeyProps() {\n return this.keyProps;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// A base class for stave modifiers (e.g. clefs, key signatures)\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { defined } from './util';\nexport var StaveModifierPosition;\n(function (StaveModifierPosition) {\n StaveModifierPosition[StaveModifierPosition[\"CENTER\"] = 0] = \"CENTER\";\n StaveModifierPosition[StaveModifierPosition[\"LEFT\"] = 1] = \"LEFT\";\n StaveModifierPosition[StaveModifierPosition[\"RIGHT\"] = 2] = \"RIGHT\";\n StaveModifierPosition[StaveModifierPosition[\"ABOVE\"] = 3] = \"ABOVE\";\n StaveModifierPosition[StaveModifierPosition[\"BELOW\"] = 4] = \"BELOW\";\n StaveModifierPosition[StaveModifierPosition[\"BEGIN\"] = 5] = \"BEGIN\";\n StaveModifierPosition[StaveModifierPosition[\"END\"] = 6] = \"END\";\n})(StaveModifierPosition || (StaveModifierPosition = {}));\nexport class StaveModifier extends Element {\n constructor() {\n super();\n this.width = 0;\n this.x = 0;\n this.padding = 10;\n this.position = StaveModifierPosition.ABOVE;\n }\n static get CATEGORY() {\n return Category.StaveModifier;\n }\n static get Position() {\n return StaveModifierPosition;\n }\n getPosition() {\n return this.position;\n }\n setPosition(position) {\n this.position = position;\n return this;\n }\n getStave() {\n return this.stave;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getWidth() {\n return this.width;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getX() {\n return this.x;\n }\n setX(x) {\n this.x = x;\n return this;\n }\n placeGlyphOnLine(glyph, stave, line, customShift = 0) {\n glyph.setYShift(stave.getYForLine(line !== null && line !== void 0 ? line : 0) - stave.getYForGlyphs() + customShift);\n }\n getPadding(index) {\n return index !== undefined && index < 2 ? 0 : this.padding;\n }\n setPadding(padding) {\n this.padding = padding;\n return this;\n }\n setLayoutMetrics(layoutMetrics) {\n this.layoutMetrics = layoutMetrics;\n return this;\n }\n getLayoutMetrics() {\n return this.layoutMetrics;\n }\n // eslint-disable-next-line\n draw(...args) {\n // DO NOTHING.\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Author Larry Kuhns 2011\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport var BarlineType;\n(function (BarlineType) {\n BarlineType[BarlineType[\"SINGLE\"] = 1] = \"SINGLE\";\n BarlineType[BarlineType[\"DOUBLE\"] = 2] = \"DOUBLE\";\n BarlineType[BarlineType[\"END\"] = 3] = \"END\";\n BarlineType[BarlineType[\"REPEAT_BEGIN\"] = 4] = \"REPEAT_BEGIN\";\n BarlineType[BarlineType[\"REPEAT_END\"] = 5] = \"REPEAT_END\";\n BarlineType[BarlineType[\"REPEAT_BOTH\"] = 6] = \"REPEAT_BOTH\";\n BarlineType[BarlineType[\"NONE\"] = 7] = \"NONE\";\n})(BarlineType || (BarlineType = {}));\nexport class Barline extends StaveModifier {\n constructor(type) {\n super();\n this.thickness = Tables.STAVE_LINE_THICKNESS;\n const TYPE = BarlineType;\n this.widths = {};\n this.widths[TYPE.SINGLE] = 5;\n this.widths[TYPE.DOUBLE] = 5;\n this.widths[TYPE.END] = 5;\n this.widths[TYPE.REPEAT_BEGIN] = 5;\n this.widths[TYPE.REPEAT_END] = 5;\n this.widths[TYPE.REPEAT_BOTH] = 5;\n this.widths[TYPE.NONE] = 5;\n this.paddings = {};\n this.paddings[TYPE.SINGLE] = 0;\n this.paddings[TYPE.DOUBLE] = 0;\n this.paddings[TYPE.END] = 0;\n this.paddings[TYPE.REPEAT_BEGIN] = 15;\n this.paddings[TYPE.REPEAT_END] = 15;\n this.paddings[TYPE.REPEAT_BOTH] = 15;\n this.paddings[TYPE.NONE] = 0;\n this.layoutMetricsMap = {};\n this.layoutMetricsMap[TYPE.SINGLE] = {\n xMin: 0,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.DOUBLE] = {\n xMin: -3,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.END] = {\n xMin: -5,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_END] = {\n xMin: -10,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_BEGIN] = {\n xMin: -2,\n xMax: 10,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_BOTH] = {\n xMin: -10,\n xMax: 10,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.NONE] = {\n xMin: 0,\n xMax: 0,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.setPosition(StaveModifierPosition.BEGIN);\n this.setType(type);\n }\n static get CATEGORY() {\n return Category.Barline;\n }\n static get type() {\n return BarlineType;\n }\n static get typeString() {\n return {\n single: BarlineType.SINGLE,\n double: BarlineType.DOUBLE,\n end: BarlineType.END,\n repeatBegin: BarlineType.REPEAT_BEGIN,\n repeatEnd: BarlineType.REPEAT_END,\n repeatBoth: BarlineType.REPEAT_BOTH,\n none: BarlineType.NONE,\n };\n }\n getType() {\n return this.type;\n }\n setType(type) {\n this.type = typeof type === 'string' ? Barline.typeString[type] : type;\n this.setWidth(this.widths[this.type]);\n this.setPadding(this.paddings[this.type]);\n this.setLayoutMetrics(this.layoutMetricsMap[this.type]);\n return this;\n }\n // Draw barlines\n draw(stave) {\n stave.checkContext();\n this.setRendered();\n switch (this.type) {\n case BarlineType.SINGLE:\n this.drawVerticalBar(stave, this.x, false);\n break;\n case BarlineType.DOUBLE:\n this.drawVerticalBar(stave, this.x, true);\n break;\n case BarlineType.END:\n this.drawVerticalEndBar(stave, this.x);\n break;\n case BarlineType.REPEAT_BEGIN:\n // If the barline is shifted over (in front of clef/time/key)\n // Draw vertical bar at the beginning.\n this.drawRepeatBar(stave, this.x, true);\n if (stave.getX() !== this.x) {\n this.drawVerticalBar(stave, stave.getX());\n }\n break;\n case BarlineType.REPEAT_END:\n this.drawRepeatBar(stave, this.x, false);\n break;\n case BarlineType.REPEAT_BOTH:\n this.drawRepeatBar(stave, this.x, false);\n this.drawRepeatBar(stave, this.x, true);\n break;\n default:\n // Default is NONE, so nothing to draw\n break;\n }\n }\n drawVerticalBar(stave, x, double_bar) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n if (double_bar) {\n staveCtx.fillRect(x - 3, topY, 1, botY - topY);\n }\n staveCtx.fillRect(x, topY, 1, botY - topY);\n }\n drawVerticalEndBar(stave, x) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n staveCtx.fillRect(x - 5, topY, 1, botY - topY);\n staveCtx.fillRect(x - 2, topY, 3, botY - topY);\n }\n drawRepeatBar(stave, x, begin) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n let x_shift = 3;\n if (!begin) {\n x_shift = -5;\n }\n staveCtx.fillRect(x + x_shift, topY, 1, botY - topY);\n staveCtx.fillRect(x - 2, topY, 3, botY - topY);\n const dot_radius = 2;\n // Shift dots left or right\n if (begin) {\n x_shift += 4;\n }\n else {\n x_shift -= 4;\n }\n const dot_x = x + x_shift + dot_radius / 2;\n // calculate the y offset based on number of stave lines\n let y_offset = (stave.getNumLines() - 1) * stave.getSpacingBetweenLines();\n y_offset = y_offset / 2 - stave.getSpacingBetweenLines() / 2;\n let dot_y = topY + y_offset + dot_radius / 2;\n // draw the top repeat dot\n staveCtx.beginPath();\n staveCtx.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false);\n staveCtx.fill();\n // draw the bottom repeat dot\n dot_y += stave.getSpacingBetweenLines();\n staveCtx.beginPath();\n staveCtx.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false);\n staveCtx.fill();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Author: Aaron (@AaronDavidNewman)\n//\n// This implements chord symbols above/below a chord.\n// Chord symbols are modifiers that can be attached to notes.\n// They can contain multiple 'blocks' which represent text or\n// glyphs with various positioning options.\n//\n// See `tests/chordsymbol_tests.ts` for usage examples.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category, isStemmableNote } from './typeguard';\nimport { log } from './util';\n// To enable logging for this class. Set `Vex.Flow.ChordSymbol.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (ChordSymbol.DEBUG)\n log('Vex.Flow.ChordSymbol', args);\n}\nexport var ChordSymbolHorizontalJustify;\n(function (ChordSymbolHorizontalJustify) {\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"LEFT\"] = 1] = \"LEFT\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"CENTER\"] = 2] = \"CENTER\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"RIGHT\"] = 3] = \"RIGHT\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(ChordSymbolHorizontalJustify || (ChordSymbolHorizontalJustify = {}));\nexport var ChordSymbolVerticalJustify;\n(function (ChordSymbolVerticalJustify) {\n ChordSymbolVerticalJustify[ChordSymbolVerticalJustify[\"TOP\"] = 1] = \"TOP\";\n ChordSymbolVerticalJustify[ChordSymbolVerticalJustify[\"BOTTOM\"] = 2] = \"BOTTOM\";\n})(ChordSymbolVerticalJustify || (ChordSymbolVerticalJustify = {}));\nexport var SymbolTypes;\n(function (SymbolTypes) {\n SymbolTypes[SymbolTypes[\"GLYPH\"] = 1] = \"GLYPH\";\n SymbolTypes[SymbolTypes[\"TEXT\"] = 2] = \"TEXT\";\n SymbolTypes[SymbolTypes[\"LINE\"] = 3] = \"LINE\";\n})(SymbolTypes || (SymbolTypes = {}));\nexport var SymbolModifiers;\n(function (SymbolModifiers) {\n SymbolModifiers[SymbolModifiers[\"NONE\"] = 1] = \"NONE\";\n SymbolModifiers[SymbolModifiers[\"SUBSCRIPT\"] = 2] = \"SUBSCRIPT\";\n SymbolModifiers[SymbolModifiers[\"SUPERSCRIPT\"] = 3] = \"SUPERSCRIPT\";\n})(SymbolModifiers || (SymbolModifiers = {}));\n/**\n * ChordSymbol is a modifier that creates a chord symbol above/below a chord.\n * As a modifier, it is attached to an existing note.\n */\nexport class ChordSymbol extends Modifier {\n constructor() {\n super();\n this.symbolBlocks = [];\n this.horizontal = ChordSymbolHorizontalJustify.LEFT;\n this.vertical = ChordSymbolVerticalJustify.TOP;\n this.useKerning = true;\n this.reportWidth = true;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.ChordSymbol;\n }\n static get superSubRatio() {\n return ChordSymbol.metrics.global.superSubRatio;\n }\n /** Currently unused: Globally turn off text formatting, if the built-in formatting does not work for your font. */\n static set NO_TEXT_FORMAT(val) {\n ChordSymbol.noFormat = val;\n }\n static get NO_TEXT_FORMAT() {\n return ChordSymbol.noFormat;\n }\n // eslint-disable-next-line\n static getMetricForGlyph(glyphCode) {\n if (ChordSymbol.metrics[glyphCode]) {\n return ChordSymbol.metrics[glyphCode];\n }\n return undefined;\n }\n static get engravingFontResolution() {\n return Tables.currentMusicFont().getResolution();\n }\n static get spacingBetweenBlocks() {\n return ChordSymbol.metrics.global.spacing / ChordSymbol.engravingFontResolution;\n }\n static getWidthForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0.65; // probably should do something here.\n }\n return metric.advanceWidth / ChordSymbol.engravingFontResolution;\n }\n static getYShiftForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0;\n }\n return metric.yOffset / ChordSymbol.engravingFontResolution;\n }\n static getXShiftForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0;\n }\n return (-1 * metric.leftSideBearing) / ChordSymbol.engravingFontResolution;\n }\n static get superscriptOffset() {\n return ChordSymbol.metrics.global.superscriptOffset / ChordSymbol.engravingFontResolution;\n }\n static get subscriptOffset() {\n return ChordSymbol.metrics.global.subscriptOffset / ChordSymbol.engravingFontResolution;\n }\n static get kerningOffset() {\n return ChordSymbol.metrics.global.kerningOffset / ChordSymbol.engravingFontResolution;\n }\n // eslint-disable-next-line\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.chordSymbol;\n }\n static get lowerKerningText() {\n // For example, see: `bravura_metrics.ts`\n // BravuraMetrics.glyphs.chordSymbol.global.lowerKerningText, which returns an array of letters.\n // ['D', 'F', 'P', 'T', 'V', 'Y']\n return ChordSymbol.metrics.global.lowerKerningText;\n }\n static get upperKerningText() {\n return ChordSymbol.metrics.global.upperKerningText;\n }\n static isSuperscript(block) {\n return block.symbolModifier !== undefined && block.symbolModifier === SymbolModifiers.SUPERSCRIPT;\n }\n static isSubscript(block) {\n return block.symbolModifier !== undefined && block.symbolModifier === SymbolModifiers.SUBSCRIPT;\n }\n static get minPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /**\n * Estimate the width of the whole chord symbol, based on the sum of the widths of the individual blocks.\n * Estimate how many lines above/below the staff we need.\n */\n static format(symbols, state) {\n var _a;\n if (!symbols || symbols.length === 0)\n return false;\n let width = 0;\n let nonSuperWidth = 0;\n let leftWidth = 0;\n let rightWidth = 0;\n let maxLeftGlyphWidth = 0;\n let maxRightGlyphWidth = 0;\n for (const symbol of symbols) {\n const fontSize = Font.convertSizeToPointValue((_a = symbol.textFont) === null || _a === void 0 ? void 0 : _a.size);\n const fontAdj = Font.scaleSize(fontSize, 0.05);\n const glyphAdj = fontAdj * 2;\n const note = symbol.checkAttachedNote();\n let symbolWidth = 0;\n let lineSpaces = 1;\n let vAlign = false;\n for (let j = 0; j < symbol.symbolBlocks.length; ++j) {\n const block = symbol.symbolBlocks[j];\n const sup = ChordSymbol.isSuperscript(block);\n const sub = ChordSymbol.isSubscript(block);\n const superSubScale = sup || sub ? ChordSymbol.superSubRatio : 1;\n const adj = block.symbolType === SymbolTypes.GLYPH ? glyphAdj * superSubScale : fontAdj * superSubScale;\n // If there are super/subscripts, they extend beyond the line so\n // assume they take up 2 lines\n if (sup || sub) {\n lineSpaces = 2;\n }\n // If there is a symbol-specific offset, add it but consider font\n // size since font and glyphs will be interspersed.\n const fontSize = symbol.textFormatter.fontSizeInPixels;\n const superSubFontSize = fontSize * superSubScale;\n if (block.symbolType === SymbolTypes.GLYPH && block.glyph !== undefined) {\n block.width = ChordSymbol.getWidthForGlyph(block.glyph) * superSubFontSize;\n block.yShift += ChordSymbol.getYShiftForGlyph(block.glyph) * superSubFontSize;\n block.xShift += ChordSymbol.getXShiftForGlyph(block.glyph) * superSubFontSize;\n block.glyph.scale = block.glyph.scale * adj;\n }\n else if (block.symbolType === SymbolTypes.TEXT) {\n block.width = block.width * superSubFontSize;\n block.yShift += symbol.getYOffsetForText(block.text) * adj;\n }\n if (block.symbolType === SymbolTypes.GLYPH &&\n block.glyph !== undefined &&\n block.glyph.code === ChordSymbol.glyphs.over.code) {\n lineSpaces = 2;\n }\n block.width += ChordSymbol.spacingBetweenBlocks * fontSize * superSubScale;\n // If a subscript immediately follows a superscript block, try to\n // overlay them.\n if (sup && j > 0) {\n const prev = symbol.symbolBlocks[j - 1];\n if (!ChordSymbol.isSuperscript(prev)) {\n nonSuperWidth = width;\n }\n }\n if (sub && nonSuperWidth > 0) {\n vAlign = true;\n // slide the symbol over so it lines up with superscript\n block.xShift = block.xShift + (nonSuperWidth - width);\n width = nonSuperWidth;\n nonSuperWidth = 0;\n // If we have vertically lined up, turn kerning off.\n symbol.setEnableKerning(false);\n }\n if (!sup && !sub) {\n nonSuperWidth = 0;\n }\n block.vAlign = vAlign;\n width += block.width;\n symbolWidth = width;\n }\n // make kerning adjustments after computing super/subscripts\n symbol.updateKerningAdjustments();\n symbol.updateOverBarAdjustments();\n if (symbol.getVertical() === ChordSymbolVerticalJustify.TOP) {\n symbol.setTextLine(state.top_text_line);\n state.top_text_line += lineSpaces;\n }\n else {\n symbol.setTextLine(state.text_line + 1);\n state.text_line += lineSpaces + 1;\n }\n if (symbol.getReportWidth() && isStemmableNote(note)) {\n const glyphWidth = note.getGlyph().getWidth();\n if (symbol.getHorizontal() === ChordSymbolHorizontalJustify.LEFT) {\n maxLeftGlyphWidth = Math.max(glyphWidth, maxLeftGlyphWidth);\n leftWidth = Math.max(leftWidth, symbolWidth) + ChordSymbol.minPadding;\n }\n else if (symbol.getHorizontal() === ChordSymbolHorizontalJustify.RIGHT) {\n maxRightGlyphWidth = Math.max(glyphWidth, maxRightGlyphWidth);\n rightWidth = Math.max(rightWidth, symbolWidth);\n }\n else {\n leftWidth = Math.max(leftWidth, symbolWidth / 2) + ChordSymbol.minPadding;\n rightWidth = Math.max(rightWidth, symbolWidth / 2);\n maxLeftGlyphWidth = Math.max(glyphWidth / 2, maxLeftGlyphWidth);\n maxRightGlyphWidth = Math.max(glyphWidth / 2, maxRightGlyphWidth);\n }\n }\n width = 0; // reset symbol width\n }\n const rightOverlap = Math.min(Math.max(rightWidth - maxRightGlyphWidth, 0), Math.max(rightWidth - state.right_shift, 0));\n const leftOverlap = Math.min(Math.max(leftWidth - maxLeftGlyphWidth, 0), Math.max(leftWidth - state.left_shift, 0));\n state.left_shift += leftOverlap;\n state.right_shift += rightOverlap;\n return true;\n }\n /**\n * Default text font.\n * Choose a font family that works well with the current music engraving font.\n * @override `Element.TEXT_FONT`.\n */\n static get TEXT_FONT() {\n let family = 'Roboto Slab, Times, serif';\n if (Tables.currentMusicFont().getName() === 'Petaluma') {\n // Fixes Issue #1180\n family = 'PetalumaScript, Arial, sans-serif';\n }\n return {\n family,\n size: 12,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n };\n }\n /**\n * The offset is specified in `em`. Scale this value by the font size in pixels.\n */\n get superscriptOffset() {\n return ChordSymbol.superscriptOffset * this.textFormatter.fontSizeInPixels;\n }\n get subscriptOffset() {\n return ChordSymbol.subscriptOffset * this.textFormatter.fontSizeInPixels;\n }\n setReportWidth(value) {\n this.reportWidth = value;\n return this;\n }\n getReportWidth() {\n return this.reportWidth;\n }\n updateOverBarAdjustments() {\n const barIndex = this.symbolBlocks.findIndex(({ symbolType, glyph }) => symbolType === SymbolTypes.GLYPH && glyph !== undefined && glyph.code === 'csymDiagonalArrangementSlash');\n if (barIndex < 0) {\n return;\n }\n const bar = this.symbolBlocks[barIndex];\n const xoff = bar.width / 4;\n const yoff = 0.25 * this.textFormatter.fontSizeInPixels;\n let symIndex = 0;\n for (symIndex === 0; symIndex < barIndex; ++symIndex) {\n const symbol = this.symbolBlocks[symIndex];\n symbol.xShift = symbol.xShift + xoff;\n symbol.yShift = symbol.yShift - yoff;\n }\n for (symIndex = barIndex + 1; symIndex < this.symbolBlocks.length; ++symIndex) {\n const symbol = this.symbolBlocks[symIndex];\n symbol.xShift = symbol.xShift - xoff;\n symbol.yShift = symbol.yShift + yoff;\n }\n }\n updateKerningAdjustments() {\n let accum = 0;\n for (let j = 0; j < this.symbolBlocks.length; ++j) {\n const symbol = this.symbolBlocks[j];\n accum += this.getKerningAdjustment(j);\n symbol.xShift += accum;\n }\n }\n /** Do some basic kerning so that letter chords like 'A' don't have the extensions hanging off to the right. */\n getKerningAdjustment(j) {\n if (!this.useKerning) {\n return 0;\n }\n const currSymbol = this.symbolBlocks[j];\n const prevSymbol = j > 0 ? this.symbolBlocks[j - 1] : undefined;\n let adjustment = 0;\n // Move things into the '/' over bar\n if (currSymbol.symbolType === SymbolTypes.GLYPH &&\n currSymbol.glyph !== undefined &&\n currSymbol.glyph.code === ChordSymbol.glyphs.over.code) {\n adjustment += currSymbol.glyph.metrics.x_shift;\n }\n if (prevSymbol !== undefined &&\n prevSymbol.symbolType === SymbolTypes.GLYPH &&\n prevSymbol.glyph !== undefined &&\n prevSymbol.glyph.code === ChordSymbol.glyphs.over.code) {\n adjustment += prevSymbol.glyph.metrics.x_shift;\n }\n // For superscripts that follow a letter without much top part, move it to the left slightly\n let preKernUpper = false;\n let preKernLower = false;\n if (prevSymbol !== undefined && prevSymbol.symbolType === SymbolTypes.TEXT) {\n preKernUpper = ChordSymbol.upperKerningText.some((xx) => xx === prevSymbol.text[prevSymbol.text.length - 1]);\n preKernLower = ChordSymbol.lowerKerningText.some((xx) => xx === prevSymbol.text[prevSymbol.text.length - 1]);\n }\n const kerningOffsetPixels = ChordSymbol.kerningOffset * this.textFormatter.fontSizeInPixels;\n // TODO: adjust kern for font size.\n // Where should this constant live?\n if (preKernUpper && currSymbol.symbolModifier === SymbolModifiers.SUPERSCRIPT) {\n adjustment += kerningOffsetPixels;\n }\n if (preKernLower && currSymbol.symbolType === SymbolTypes.TEXT) {\n if (currSymbol.text[0] >= 'a' && currSymbol.text[0] <= 'z') {\n adjustment += kerningOffsetPixels / 2;\n }\n if (ChordSymbol.upperKerningText.some((xx) => xx === (prevSymbol === null || prevSymbol === void 0 ? void 0 : prevSymbol.text[prevSymbol.text.length - 1]))) {\n adjustment += kerningOffsetPixels / 2;\n }\n }\n return adjustment;\n }\n /**\n * ChordSymbol allows multiple blocks so we can mix glyphs and font text.\n * Each block can have its own vertical orientation.\n */\n // eslint-disable-next-line\n getSymbolBlock(params = {}) {\n var _a, _b, _c;\n const symbolType = (_a = params.symbolType) !== null && _a !== void 0 ? _a : SymbolTypes.TEXT;\n const symbolBlock = {\n text: (_b = params.text) !== null && _b !== void 0 ? _b : '',\n symbolType,\n symbolModifier: (_c = params.symbolModifier) !== null && _c !== void 0 ? _c : SymbolModifiers.NONE,\n xShift: 0,\n yShift: 0,\n vAlign: false,\n width: 0,\n };\n // Note: symbol widths are resolution and font-independent.\n // We convert to pixel values when we know what the font is.\n if (symbolType === SymbolTypes.GLYPH && typeof params.glyph === 'string') {\n const glyphArgs = ChordSymbol.glyphs[params.glyph];\n const glyphPoints = 20;\n symbolBlock.glyph = new Glyph(glyphArgs.code, glyphPoints, { category: 'chordSymbol' });\n // Beware: glyph.metrics is not the same as glyph.getMetrics() !\n // rv.glyph.point = rv.glyph.point * rv.glyph.metrics.scale;\n // rv.width = rv.glyph.getMetrics().width;\n // don't set yShift here, b/c we need to do it at formatting time after the font is set.\n }\n else if (symbolType === SymbolTypes.TEXT) {\n symbolBlock.width = this.textFormatter.getWidthForTextInEm(symbolBlock.text);\n }\n else if (symbolType === SymbolTypes.LINE) {\n symbolBlock.width = params.width;\n }\n return symbolBlock;\n }\n /** Add a symbol to this chord, could be text, glyph or line. */\n // eslint-disable-next-line\n addSymbolBlock(parameters) {\n this.symbolBlocks.push(this.getSymbolBlock(parameters));\n return this;\n }\n // ### Convenience functions for creating different types of chord symbol parts.\n /** Add a text block. */\n // eslint-disable-next-line\n addText(text, parameters = {}) {\n const symbolType = SymbolTypes.TEXT;\n return this.addSymbolBlock(Object.assign(Object.assign({}, parameters), { text, symbolType }));\n }\n /** Add a text block with superscript modifier. */\n addTextSuperscript(text) {\n const symbolType = SymbolTypes.TEXT;\n const symbolModifier = SymbolModifiers.SUPERSCRIPT;\n return this.addSymbolBlock({ text, symbolType, symbolModifier });\n }\n /** Add a text block with subscript modifier. */\n addTextSubscript(text) {\n const symbolType = SymbolTypes.TEXT;\n const symbolModifier = SymbolModifiers.SUBSCRIPT;\n return this.addSymbolBlock({ text, symbolType, symbolModifier });\n }\n /** Add a glyph block with superscript modifier. */\n addGlyphSuperscript(glyph) {\n const symbolType = SymbolTypes.GLYPH;\n const symbolModifier = SymbolModifiers.SUPERSCRIPT;\n return this.addSymbolBlock({ glyph, symbolType, symbolModifier });\n }\n /** Add a glyph block. */\n // eslint-disable-next-line\n addGlyph(glyph, params = {}) {\n const symbolType = SymbolTypes.GLYPH;\n return this.addSymbolBlock(Object.assign(Object.assign({}, params), { glyph, symbolType }));\n }\n /**\n * Add a glyph for each character in 'text'. If the glyph is not available, use text from the font.\n * e.g. `addGlyphOrText('(+5#11)')` will use text for the '5' and '11', and glyphs for everything else.\n */\n // eslint-disable-next-line\n addGlyphOrText(text, params = {}) {\n let str = '';\n for (let i = 0; i < text.length; ++i) {\n const char = text[i];\n if (ChordSymbol.glyphs[char]) {\n if (str.length > 0) {\n this.addText(str, params);\n str = '';\n }\n this.addGlyph(char, params);\n }\n else {\n // Collect consecutive characters with no glyphs.\n str += char;\n }\n }\n if (str.length > 0) {\n this.addText(str, params);\n }\n return this;\n }\n /** Add a line of the given width, used as a continuation of the previous symbol in analysis, or lyrics, etc. */\n // eslint-disable-next-line\n addLine(width, params = {}) {\n const symbolType = SymbolTypes.LINE;\n return this.addSymbolBlock(Object.assign(Object.assign({}, params), { symbolType, width }));\n }\n /**\n * Set the chord symbol's font family, size, weight, style (e.g., `Arial`, `10pt`, `bold`, `italic`).\n *\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n *\n * @override See: Element.\n */\n setFont(f, size, weight, style) {\n super.setFont(f, size, weight, style);\n this.textFormatter = TextFormatter.create(this.textFont);\n return this;\n }\n setEnableKerning(val) {\n this.useKerning = val;\n return this;\n }\n /** Set vertical position of text (above or below stave). */\n setVertical(vj) {\n this.vertical = typeof vj === 'string' ? ChordSymbol.VerticalJustifyString[vj] : vj;\n return this;\n }\n getVertical() {\n return this.vertical;\n }\n /** Set horizontal justification. */\n setHorizontal(hj) {\n this.horizontal = typeof hj === 'string' ? ChordSymbol.HorizontalJustifyString[hj] : hj;\n return this;\n }\n getHorizontal() {\n return this.horizontal;\n }\n getWidth() {\n let width = 0;\n this.symbolBlocks.forEach((symbol) => {\n width += symbol.vAlign ? 0 : symbol.width;\n });\n return width;\n }\n getYOffsetForText(text) {\n var _a;\n let acc = 0;\n let i = 0;\n for (i = 0; i < text.length; ++i) {\n const metrics = this.textFormatter.getGlyphMetrics(text[i]);\n if (metrics) {\n const yMax = (_a = metrics.y_max) !== null && _a !== void 0 ? _a : 0;\n acc = yMax < acc ? yMax : acc;\n }\n }\n const resolution = this.textFormatter.getResolution();\n return i > 0 ? -1 * (acc / resolution) : 0;\n }\n /** Render text and glyphs above/below the note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n // We're changing context parameters. Save current state.\n ctx.save();\n ctx.openGroup('chordsymbol', this.getAttribute('id'));\n const start = note.getModifierStartXY(Modifier.Position.ABOVE, this.index);\n ctx.setFont(this.textFont);\n let y;\n // The position of the text varies based on whether or not the note\n // has a stem.\n const hasStem = note.hasStem();\n const stave = note.checkStave();\n if (this.vertical === ChordSymbolVerticalJustify.BOTTOM) {\n // HACK: We need to compensate for the text's height since its origin is bottom-right.\n y = stave.getYForBottomText(this.text_line + Tables.TEXT_HEIGHT_OFFSET_HACK);\n if (hasStem) {\n const stem_ext = note.checkStem().getExtents();\n const spacing = stave.getSpacingBetweenLines();\n const stem_base = note.getStemDirection() === 1 ? stem_ext.baseY : stem_ext.topY;\n y = Math.max(y, stem_base + spacing * (this.text_line + 2));\n }\n }\n else {\n // (this.vertical === VerticalJustify.TOP)\n y = Math.min(stave.getYForTopText(this.text_line), note.getYs()[0] - 10);\n if (hasStem) {\n const stem_ext = note.checkStem().getExtents();\n const spacing = stave.getSpacingBetweenLines();\n y = Math.min(y, stem_ext.topY - 5 - spacing * this.text_line);\n }\n }\n let x = start.x;\n if (this.horizontal === ChordSymbolHorizontalJustify.LEFT) {\n x = start.x;\n }\n else if (this.horizontal === ChordSymbolHorizontalJustify.RIGHT) {\n x = start.x + this.getWidth();\n }\n else if (this.horizontal === ChordSymbolHorizontalJustify.CENTER) {\n x = start.x - this.getWidth() / 2;\n }\n else {\n // HorizontalJustify.CENTER_STEM\n x = note.getStemX() - this.getWidth() / 2;\n }\n L('Rendering ChordSymbol: ', this.textFormatter, x, y);\n this.symbolBlocks.forEach((symbol) => {\n const isSuper = ChordSymbol.isSuperscript(symbol);\n const isSub = ChordSymbol.isSubscript(symbol);\n let curY = y;\n L('shift was ', symbol.xShift, symbol.yShift);\n L('curY pre sub ', curY);\n if (isSuper) {\n curY += this.superscriptOffset;\n }\n if (isSub) {\n curY += this.subscriptOffset;\n }\n L('curY sup/sub ', curY);\n if (symbol.symbolType === SymbolTypes.TEXT) {\n if (isSuper || isSub) {\n ctx.save();\n if (this.textFont) {\n const { family, size, weight, style } = this.textFont;\n const smallerFontSize = Font.scaleSize(size, ChordSymbol.superSubRatio);\n ctx.setFont(family, smallerFontSize, weight, style);\n }\n }\n // TODO???\n // We estimate the text width, fill it in with the empirical value so the formatting is even.\n // const textDim = ctx.measureText(symbol.text);\n // symbol.width = textDim.width;\n L('Rendering Text: ', symbol.text, x + symbol.xShift, curY + symbol.yShift);\n ctx.fillText(symbol.text, x + symbol.xShift, curY + symbol.yShift);\n if (isSuper || isSub) {\n ctx.restore();\n }\n }\n else if (symbol.symbolType === SymbolTypes.GLYPH && symbol.glyph) {\n curY += symbol.yShift;\n L('Rendering Glyph: ', symbol.glyph.code, x + symbol.xShift, curY);\n symbol.glyph.render(ctx, x + symbol.xShift, curY);\n }\n else if (symbol.symbolType === SymbolTypes.LINE) {\n L('Rendering Line : ', symbol.width, x, curY);\n ctx.beginPath();\n ctx.setLineWidth(1); // ?\n ctx.moveTo(x, y);\n ctx.lineTo(x + symbol.width, curY);\n ctx.stroke();\n }\n x += symbol.width;\n if (symbol.vAlign) {\n x += symbol.xShift;\n }\n });\n ctx.closeGroup();\n ctx.restore();\n }\n}\nChordSymbol.DEBUG = false;\n// Chord symbols can be positioned and justified relative to the note.\nChordSymbol.HorizontalJustify = ChordSymbolHorizontalJustify;\nChordSymbol.HorizontalJustifyString = {\n left: ChordSymbolHorizontalJustify.LEFT,\n right: ChordSymbolHorizontalJustify.RIGHT,\n center: ChordSymbolHorizontalJustify.CENTER,\n centerStem: ChordSymbolHorizontalJustify.CENTER_STEM,\n};\nChordSymbol.VerticalJustify = ChordSymbolVerticalJustify;\nChordSymbol.VerticalJustifyString = {\n top: ChordSymbolVerticalJustify.TOP,\n above: ChordSymbolVerticalJustify.TOP,\n below: ChordSymbolVerticalJustify.BOTTOM,\n bottom: ChordSymbolVerticalJustify.BOTTOM,\n};\n// Glyph data\nChordSymbol.glyphs = {\n diminished: {\n code: 'csymDiminished',\n },\n dim: {\n code: 'csymDiminished',\n },\n halfDiminished: {\n code: 'csymHalfDiminished',\n },\n '+': {\n code: 'csymAugmented',\n },\n augmented: {\n code: 'csymAugmented',\n },\n majorSeventh: {\n code: 'csymMajorSeventh',\n },\n minor: {\n code: 'csymMinor',\n },\n '-': {\n code: 'csymMinor',\n },\n '(': {\n code: 'csymParensLeftTall',\n },\n leftParen: {\n code: 'csymParensLeftTall',\n },\n ')': {\n code: 'csymParensRightTall',\n },\n rightParen: {\n code: 'csymParensRightTall',\n },\n leftBracket: {\n code: 'csymBracketLeftTall',\n },\n rightBracket: {\n code: 'csymBracketRightTall',\n },\n leftParenTall: {\n code: 'csymParensLeftVeryTall',\n },\n rightParenTall: {\n code: 'csymParensRightVeryTall',\n },\n '/': {\n code: 'csymDiagonalArrangementSlash',\n },\n over: {\n code: 'csymDiagonalArrangementSlash',\n },\n '#': {\n code: 'accidentalSharp',\n },\n b: {\n code: 'accidentalFlat',\n },\n};\nChordSymbol.symbolTypes = SymbolTypes;\nChordSymbol.symbolModifiers = SymbolModifiers;\n/** Currently unused. */\nChordSymbol.noFormat = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Note } from './note';\nimport { Barline, BarlineType } from './stavebarline';\nimport { Category } from './typeguard';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (BarNote.DEBUG)\n log('Vex.Flow.BarNote', args);\n}\n/**\n * A `BarNote` is used to render bar lines (from `barline.ts`). `BarNote`s can\n * be added to a voice and rendered in the middle of a stave. Since it has no\n * duration, it consumes no `tick`s, and is dealt with appropriately by the formatter.\n *\n * See `tests/barnote_tests.ts` for usage examples.\n */\nexport class BarNote extends Note {\n constructor(type = BarlineType.SINGLE) {\n super({ duration: 'b' });\n this.metrics = {\n widths: {},\n };\n const TYPE = BarlineType;\n this.metrics.widths = {\n [TYPE.SINGLE]: 8,\n [TYPE.DOUBLE]: 12,\n [TYPE.END]: 15,\n [TYPE.REPEAT_BEGIN]: 14,\n [TYPE.REPEAT_END]: 14,\n [TYPE.REPEAT_BOTH]: 18,\n [TYPE.NONE]: 0,\n };\n // Tell the formatter that bar notes have no duration.\n this.ignore_ticks = true;\n this.setType(type);\n }\n static get CATEGORY() {\n return Category.BarNote;\n }\n /** Get the type of bar note.*/\n getType() {\n return this.type;\n }\n /** Set the type of bar note. */\n setType(type) {\n this.type = typeof type === 'string' ? Barline.typeString[type] : type;\n // Set width to width of relevant `Barline`.\n this.setWidth(this.metrics.widths[this.type]);\n return this;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n /** Overridden to ignore. */\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n /** Render note to stave. */\n draw() {\n const ctx = this.checkContext();\n L('Rendering bar line at: ', this.getAbsoluteX());\n this.applyStyle(ctx);\n const barline = new Barline(this.type);\n barline.setX(this.getAbsoluteX());\n barline.draw(this.checkStave());\n this.restoreStyle(ctx);\n this.setRendered();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.BarNote.DEBUG` to `true`. */\nBarNote.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Modifier } from './modifier';\nimport { TextFormatter } from './textformatter';\nimport { Category, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\n/** Bend implements tablature bends. */\nexport class Bend extends Modifier {\n /**\n * Example of a phrase:\n * ```\n * [{\n * type: UP,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: DOWN,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: UP,\n * text: \"half\"\n * width: 8;\n * },\n * {\n * type: UP,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: DOWN,\n * text: \"1 1/2\"\n * width: 8;\n * }]\n * ```\n * @param text text for bend (\"Full\", \"Half\", etc.) (DEPRECATED)\n * @param release if true, render a release. (DEPRECATED)\n * @param phrase if set, ignore \"text\" and \"release\", and use the more sophisticated phrase specified\n */\n constructor(text, release = false, phrase) {\n super();\n this.text = text;\n this.x_shift = 0;\n this.release = release;\n this.tap = '';\n this.resetFont();\n this.render_options = {\n line_width: 1.5,\n line_style: '#777777',\n bend_width: 8,\n release_width: 8,\n };\n if (phrase) {\n this.phrase = phrase;\n }\n else {\n // Backward compatibility\n this.phrase = [{ type: Bend.UP, text: this.text }];\n if (this.release)\n this.phrase.push({ type: Bend.DOWN, text: '' });\n }\n this.updateWidth();\n }\n static get CATEGORY() {\n return Category.Bend;\n }\n static get UP() {\n return 0;\n }\n static get DOWN() {\n return 1;\n }\n // Arrange bends in `ModifierContext`\n static format(bends, state) {\n if (!bends || bends.length === 0)\n return false;\n let last_width = 0;\n // Format Bends\n for (let i = 0; i < bends.length; ++i) {\n const bend = bends[i];\n const note = bend.checkAttachedNote();\n if (isTabNote(note)) {\n const stringPos = note.leastString() - 1;\n if (state.top_text_line < stringPos) {\n state.top_text_line = stringPos;\n }\n }\n bend.setXShift(last_width);\n last_width = bend.getWidth();\n bend.setTextLine(state.top_text_line);\n }\n state.right_shift += last_width;\n state.top_text_line += 1;\n return true;\n }\n /** Set horizontal shift in pixels. */\n setXShift(value) {\n this.x_shift = value;\n this.updateWidth();\n return this;\n }\n setTap(value) {\n this.tap = value;\n return this;\n }\n /** Get text provided in the constructor. */\n getText() {\n return this.text;\n }\n getTextHeight() {\n const textFormatter = TextFormatter.create(this.textFont);\n return textFormatter.maxHeight;\n }\n /** Recalculate width. */\n updateWidth() {\n const textFormatter = TextFormatter.create(this.textFont);\n const measureText = (text) => {\n return textFormatter.getWidthForTextInPx(text);\n };\n let totalWidth = 0;\n for (let i = 0; i < this.phrase.length; ++i) {\n const bend = this.phrase[i];\n if (bend.width !== undefined) {\n totalWidth += bend.width;\n }\n else {\n const additional_width = bend.type === Bend.UP ? this.render_options.bend_width : this.render_options.release_width;\n bend.width = Math.max(additional_width, measureText(bend.text)) + 3;\n bend.draw_width = bend.width / 2;\n totalWidth += bend.width;\n }\n }\n this.setWidth(totalWidth + this.x_shift);\n return this;\n }\n /** Draw the bend on the rendering context. */\n draw() {\n var _a;\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(Modifier.Position.RIGHT, this.index);\n start.x += 3;\n start.y += 0.5;\n const x_shift = this.x_shift;\n const stave = note.checkStave();\n const spacing = stave.getSpacingBetweenLines();\n const lowestY = note.getYs().reduce((a, b) => (a < b ? a : b));\n // this.text_line is relative to top string in the group.\n const bend_height = start.y - ((this.text_line + 1) * spacing + start.y - lowestY) + 3;\n const annotation_y = start.y - ((this.text_line + 1) * spacing + start.y - lowestY) - 1;\n const renderBend = (x, y, width, height) => {\n const cp_x = x + width;\n const cp_y = y;\n ctx.save();\n ctx.beginPath();\n ctx.setLineWidth(this.render_options.line_width);\n ctx.setStrokeStyle(this.render_options.line_style);\n ctx.setFillStyle(this.render_options.line_style);\n ctx.moveTo(x, y);\n ctx.quadraticCurveTo(cp_x, cp_y, x + width, height);\n ctx.stroke();\n ctx.restore();\n };\n const renderRelease = (x, y, width, height) => {\n ctx.save();\n ctx.beginPath();\n ctx.setLineWidth(this.render_options.line_width);\n ctx.setStrokeStyle(this.render_options.line_style);\n ctx.setFillStyle(this.render_options.line_style);\n ctx.moveTo(x, height);\n ctx.quadraticCurveTo(x + width, height, x + width, y);\n ctx.stroke();\n ctx.restore();\n };\n const renderArrowHead = (x, y, direction) => {\n const width = 4;\n const yBase = y + width * direction;\n ctx.beginPath();\n ctx.moveTo(x, y); // tip of the arrow\n ctx.lineTo(x - width, yBase);\n ctx.lineTo(x + width, yBase);\n ctx.closePath();\n ctx.fill();\n };\n const renderText = (x, text) => {\n ctx.save();\n ctx.setFont(this.textFont);\n const render_x = x - ctx.measureText(text).width / 2;\n ctx.fillText(text, render_x, annotation_y);\n ctx.restore();\n };\n let last_bend = undefined;\n let last_bend_draw_width = 0;\n let last_drawn_width = 0;\n if ((_a = this.tap) === null || _a === void 0 ? void 0 : _a.length) {\n const tapStart = note.getModifierStartXY(Modifier.Position.CENTER, this.index);\n renderText(tapStart.x, this.tap);\n }\n for (let i = 0; i < this.phrase.length; ++i) {\n const bend = this.phrase[i];\n if (!bend.draw_width)\n bend.draw_width = 0;\n if (i === 0)\n bend.draw_width += x_shift;\n last_drawn_width = bend.draw_width + last_bend_draw_width - (i === 1 ? x_shift : 0);\n if (bend.type === Bend.UP) {\n if (last_bend && last_bend.type === Bend.UP) {\n renderArrowHead(start.x, bend_height, +1);\n }\n renderBend(start.x, start.y, last_drawn_width, bend_height);\n }\n if (bend.type === Bend.DOWN) {\n if (last_bend && last_bend.type === Bend.UP) {\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n if (last_bend && last_bend.type === Bend.DOWN) {\n renderArrowHead(start.x, start.y, -1);\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n if (!last_bend) {\n last_drawn_width = bend.draw_width;\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n }\n renderText(start.x + last_drawn_width, bend.text);\n last_bend = bend;\n last_bend_draw_width = bend.draw_width;\n last_bend.x = start.x;\n start.x += last_drawn_width;\n }\n if (!last_bend || last_bend.x == undefined) {\n throw new RuntimeError('NoLastBendForBend', 'Internal error.');\n }\n // Final arrowhead and text\n if (last_bend.type === Bend.UP) {\n renderArrowHead(last_bend.x + last_drawn_width, bend_height, +1);\n }\n else if (last_bend.type === Bend.DOWN) {\n renderArrowHead(last_bend.x + last_drawn_width, start.y, -1);\n }\n }\n}\n/** Default text font. */\nBend.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements dot modifiers for notes.\nimport { Modifier } from './modifier';\nimport { Category, isGraceNote, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class Dot extends Modifier {\n constructor() {\n super();\n this.position = Modifier.Position.RIGHT;\n this.radius = 2;\n this.setWidth(5);\n this.dot_shiftY = 0;\n }\n static get CATEGORY() {\n return Category.Dot;\n }\n /** Returns the dots associated to a Note. */\n static getDots(note) {\n return note.getModifiersByType(Dot.CATEGORY);\n }\n /** Add a dot on the specified keys to the notes. */\n static buildAndAttach(notes, options) {\n for (const note of notes) {\n if (options === null || options === void 0 ? void 0 : options.all) {\n for (let i = 0; i < note.keys.length; i++) {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, i);\n }\n }\n else if ((options === null || options === void 0 ? void 0 : options.index) != undefined) {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, options === null || options === void 0 ? void 0 : options.index);\n }\n else {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, 0);\n }\n }\n }\n // Arrange dots inside a ModifierContext.\n static format(dots, state) {\n const right_shift = state.right_shift;\n const dot_spacing = 1;\n if (!dots || dots.length === 0)\n return false;\n const dot_list = [];\n const max_shift_map = {};\n for (let i = 0; i < dots.length; ++i) {\n const dot = dots[i];\n const note = dot.getNote();\n let props;\n let shift;\n if (isStaveNote(note)) {\n const index = dot.checkIndex();\n props = note.getKeyProps()[index];\n // consider right displaced head with no previous modifier\n shift = note.getFirstDotPx();\n }\n else if (isTabNote(note)) {\n props = { line: 0.5 }; // Shim key props for dot placement\n shift = right_shift;\n }\n else {\n // note object is not StaveNote or TabNote.\n throw new RuntimeError('Internal', 'Unexpected instance.');\n }\n const note_id = note.getAttribute('id');\n dot_list.push({ line: props.line, note, note_id, dot });\n max_shift_map[note_id] = Math.max(max_shift_map[note_id] || shift, shift);\n }\n // Sort dots by line number.\n dot_list.sort((a, b) => b.line - a.line);\n let dot_shift = right_shift;\n let x_width = 0;\n let last_line = null;\n let last_note = null;\n let prev_dotted_space = null;\n let half_shiftY = 0;\n for (let i = 0; i < dot_list.length; ++i) {\n const { dot, note, note_id, line } = dot_list[i];\n // Reset the position of the dot every line.\n if (line !== last_line || note !== last_note) {\n dot_shift = max_shift_map[note_id];\n }\n if (!note.isRest() && line !== last_line) {\n if (Math.abs(line % 1) === 0.5) {\n // note is on a space, so no dot shift\n half_shiftY = 0;\n }\n else {\n // note is on a line, so shift dot to space above the line\n half_shiftY = 0.5;\n if (last_note != null && !last_note.isRest() && last_line != null && last_line - line === 0.5) {\n // previous note on a space, so shift dot to space below the line\n half_shiftY = -0.5;\n }\n else if (line + half_shiftY === prev_dotted_space) {\n // previous space is dotted, so shift dot to space below the line\n half_shiftY = -0.5;\n }\n }\n }\n // convert half_shiftY to a multiplier for dots.draw()\n if (note.isRest()) {\n dot.dot_shiftY += -half_shiftY;\n }\n else {\n dot.dot_shiftY = -half_shiftY;\n }\n prev_dotted_space = line + half_shiftY;\n dot.setXShift(dot_shift);\n dot_shift += dot.getWidth() + dot_spacing; // spacing\n x_width = dot_shift > x_width ? dot_shift : x_width;\n last_line = line;\n last_note = note;\n }\n // Update state.\n state.right_shift += x_width;\n return true;\n }\n setNote(note) {\n this.note = note;\n if (isGraceNote(note)) {\n this.radius *= 0.5;\n this.setWidth(3);\n }\n return this;\n }\n setDotShiftY(y) {\n this.dot_shiftY = y;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stave = note.checkStave();\n const lineSpace = stave.getSpacingBetweenLines();\n const start = note.getModifierStartXY(this.position, this.index, { forceFlagRight: true });\n // Set the starting y coordinate to the base of the stem for TabNotes.\n if (isTabNote(note)) {\n start.y = note.getStemExtents().baseY;\n }\n const x = start.x + this.x_shift + this.width - this.radius;\n const y = start.y + this.y_shift + this.dot_shiftY * lineSpace;\n ctx.beginPath();\n ctx.arc(x, y, this.radius, 0, Math.PI * 2, false);\n ctx.fill();\n }\n}\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n// Author Larry Kuhns 2013\n// Class to draws string numbers into the notation.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class FretHandFinger extends Modifier {\n constructor(finger) {\n super();\n this.finger = finger;\n this.width = 7;\n this.position = Modifier.Position.LEFT; // Default position above stem or note head\n this.x_shift = 0;\n this.y_shift = 0;\n this.x_offset = 0; // Horizontal offset from default\n this.y_offset = 0; // Vertical offset from default\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.FretHandFinger;\n }\n // Arrange fingerings inside a ModifierContext.\n static format(nums, state) {\n const { left_shift, right_shift } = state;\n const num_spacing = 1;\n if (!nums || nums.length === 0)\n return false;\n const nums_list = [];\n let prev_note = null;\n let shiftLeft = 0;\n let shiftRight = 0;\n for (let i = 0; i < nums.length; ++i) {\n const num = nums[i];\n const note = num.getNote();\n const pos = num.getPosition();\n const index = num.checkIndex();\n const props = note.getKeyProps()[index];\n const textFormatter = TextFormatter.create(num.textFont);\n const textHeight = textFormatter.maxHeight;\n if (num.position === ModifierPosition.ABOVE) {\n state.top_text_line += textHeight / Tables.STAVE_LINE_DISTANCE + 0.5;\n }\n if (num.position === ModifierPosition.BELOW) {\n state.text_line += textHeight / Tables.STAVE_LINE_DISTANCE + 0.5;\n }\n if (note !== prev_note) {\n for (let n = 0; n < note.keys.length; ++n) {\n if (left_shift === 0) {\n shiftLeft = Math.max(note.getLeftDisplacedHeadPx(), shiftLeft);\n }\n if (right_shift === 0) {\n shiftRight = Math.max(note.getRightDisplacedHeadPx(), shiftRight);\n }\n }\n prev_note = note;\n }\n nums_list.push({\n note,\n num,\n pos,\n line: props.line,\n shiftL: shiftLeft,\n shiftR: shiftRight,\n });\n }\n // Sort fingernumbers by line number.\n nums_list.sort((a, b) => b.line - a.line);\n let numShiftL = 0;\n let numShiftR = 0;\n let xWidthL = 0;\n let xWidthR = 0;\n let lastLine = null;\n let lastNote = null;\n for (let i = 0; i < nums_list.length; ++i) {\n let num_shift = 0;\n const { note, pos, num, line, shiftL, shiftR } = nums_list[i];\n // Reset the position of the string number every line.\n if (line !== lastLine || note !== lastNote) {\n numShiftL = left_shift + shiftL;\n numShiftR = right_shift + shiftR;\n }\n const numWidth = num.getWidth() + num_spacing;\n if (pos === Modifier.Position.LEFT) {\n num.setXShift(left_shift + numShiftL);\n num_shift = left_shift + numWidth; // spacing\n xWidthL = num_shift > xWidthL ? num_shift : xWidthL;\n }\n else if (pos === Modifier.Position.RIGHT) {\n num.setXShift(numShiftR);\n num_shift = shiftRight + numWidth; // spacing\n xWidthR = num_shift > xWidthR ? num_shift : xWidthR;\n }\n lastLine = line;\n lastNote = note;\n }\n state.left_shift += xWidthL;\n state.right_shift += xWidthR;\n return true;\n }\n static easyScoreHook({ fingerings } = {}, note, builder) {\n fingerings === null || fingerings === void 0 ? void 0 : fingerings.split(',').map((fingeringString) => {\n const split = fingeringString.trim().split('.');\n const params = { number: split[0] };\n if (split[1])\n params.position = split[1];\n return builder.getFactory().Fingering(params);\n }).map((fingering, index) => note.addModifier(fingering, index));\n }\n setFretHandFinger(finger) {\n this.finger = finger;\n return this;\n }\n getFretHandFinger() {\n return this.finger;\n }\n setOffsetX(x) {\n this.x_offset = x;\n return this;\n }\n setOffsetY(y) {\n this.y_offset = y;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n let dot_x = start.x + this.x_shift + this.x_offset;\n let dot_y = start.y + this.y_shift + this.y_offset + 5;\n switch (this.position) {\n case Modifier.Position.ABOVE:\n dot_x -= 4;\n dot_y -= 12;\n break;\n case Modifier.Position.BELOW:\n dot_x -= 2;\n dot_y += 10;\n break;\n case Modifier.Position.LEFT:\n dot_x -= this.width;\n break;\n case Modifier.Position.RIGHT:\n dot_x += 1;\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} does not exist`);\n }\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText('' + this.finger, dot_x, dot_y);\n ctx.restore();\n }\n}\nFretHandFinger.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 9,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (NoteHead.DEBUG)\n log('Vex.Flow.NoteHead', args);\n}\n/**\n * Draw slashnote head manually. No glyph exists for this.\n * @param ctx the Canvas context\n * @param duration the duration of the note. ex: \"4\"\n * @param x the x coordinate to draw at\n * @param y the y coordinate to draw at\n * @param stem_direction the direction of the stem\n */\nfunction drawSlashNoteHead(ctx, duration, x, y, stem_direction, staveSpace) {\n const width = Tables.SLASH_NOTEHEAD_WIDTH;\n ctx.save();\n ctx.setLineWidth(Tables.STEM_WIDTH);\n let fill = false;\n if (Tables.durationToNumber(duration) > 2) {\n fill = true;\n }\n if (!fill)\n x -= (Tables.STEM_WIDTH / 2) * stem_direction;\n ctx.beginPath();\n ctx.moveTo(x, y + staveSpace);\n ctx.lineTo(x, y + 1);\n ctx.lineTo(x + width, y - staveSpace);\n ctx.lineTo(x + width, y);\n ctx.lineTo(x, y + staveSpace);\n ctx.closePath();\n if (fill) {\n ctx.fill();\n }\n else {\n ctx.stroke();\n }\n if (Tables.durationToFraction(duration).equals(0.5)) {\n const breve_lines = [-3, -1, width + 1, width + 3];\n for (let i = 0; i < breve_lines.length; i++) {\n ctx.beginPath();\n ctx.moveTo(x + breve_lines[i], y - 10);\n ctx.lineTo(x + breve_lines[i], y + 11);\n ctx.stroke();\n }\n }\n ctx.restore();\n}\n/**\n * `NoteHeads` are typically not manipulated\n * directly, but used internally in `StaveNote`.\n *\n * See `tests/notehead_tests.ts` for usage examples.\n */\nexport class NoteHead extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n this.custom_glyph = false;\n this.stem_up_x_offset = 0;\n this.stem_down_x_offset = 0;\n this.index = noteStruct.index;\n this.x = noteStruct.x || 0;\n this.y = noteStruct.y || 0;\n if (noteStruct.note_type)\n this.noteType = noteStruct.note_type;\n this.displaced = noteStruct.displaced || false;\n this.stem_direction = noteStruct.stem_direction || Stem.UP;\n this.line = noteStruct.line || 0;\n // Get glyph code based on duration and note type. This could be\n // regular notes, rests, or other custom codes.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n // Swap out the glyph with leger lines\n if ((this.line > 5 || this.line < 0) && this.glyph.leger_code_head) {\n this.glyph.code_head = this.glyph.leger_code_head;\n }\n this.glyph_code = this.glyph.code_head;\n this.x_shift = noteStruct.x_shift || 0;\n if (noteStruct.custom_glyph_code) {\n this.custom_glyph = true;\n this.glyph_code = noteStruct.custom_glyph_code;\n this.stem_up_x_offset = noteStruct.stem_up_x_offset || 0;\n this.stem_down_x_offset = noteStruct.stem_down_x_offset || 0;\n }\n this.setStyle(noteStruct.style);\n this.slashed = noteStruct.slashed || false;\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads\n glyph_font_scale: noteStruct.glyph_font_scale || Tables.NOTATION_FONT_SCALE });\n this.setWidth(this.glyph.getWidth(this.render_options.glyph_font_scale));\n }\n static get CATEGORY() {\n return Category.NoteHead;\n }\n /** Get the width of the notehead. */\n getWidth() {\n return this.width;\n }\n /** Determine if the notehead is displaced. */\n isDisplaced() {\n return this.displaced === true;\n }\n /** Get the glyph data. */\n getGlyph() {\n return this.glyph;\n }\n /** Set the X coordinate. */\n setX(x) {\n this.x = x;\n return this;\n }\n /** Get the Y coordinate. */\n getY() {\n return this.y;\n }\n /** Set the Y coordinate. */\n setY(y) {\n this.y = y;\n return this;\n }\n /** Get the stave line the notehead is placed on. */\n getLine() {\n return this.line;\n }\n /** Set the stave line the notehead is placed on. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Get the canvas `x` coordinate position of the notehead. */\n getAbsoluteX() {\n // If the note has not been preformatted, then get the static x value\n // Otherwise, it's been formatted and we should use it's x value relative\n // to its tick context\n const x = !this.preFormatted ? this.x : super.getAbsoluteX();\n // For a more natural displaced notehead, we adjust the displacement amount\n // by half the stem width in order to maintain a slight overlap with the stem\n const displacementStemAdjustment = Stem.WIDTH / 2;\n const musicFont = Tables.currentMusicFont();\n const fontShift = musicFont.lookupMetric('notehead.shiftX', 0) * this.stem_direction;\n const displacedFontShift = musicFont.lookupMetric('noteHead.displaced.shiftX', 0) * this.stem_direction;\n return (x +\n fontShift +\n (this.displaced ? (this.width - displacementStemAdjustment) * this.stem_direction + displacedFontShift : 0));\n }\n /** Get the `BoundingBox` for the `NoteHead`. */\n getBoundingBox() {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getBoundingBox on an unformatted note.\");\n }\n const spacing = this.checkStave().getSpacingBetweenLines();\n const half_spacing = spacing / 2;\n const min_y = this.y - half_spacing;\n return new BoundingBox(this.getAbsoluteX(), min_y, this.width, spacing);\n }\n /** Set notehead to a provided `stave`. */\n setStave(stave) {\n const line = this.getLine();\n this.stave = stave;\n if (this.stave) {\n this.setY(this.stave.getYForNote(line));\n this.setContext(this.stave.getContext());\n }\n return this;\n }\n /** Pre-render formatting. */\n preFormat() {\n if (this.preFormatted)\n return this;\n const width = this.getWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx;\n this.setWidth(width);\n this.preFormatted = true;\n return this;\n }\n /** Draw the notehead. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let head_x = this.getAbsoluteX();\n if (this.custom_glyph) {\n // head_x += this.x_shift;\n head_x += this.stem_direction === Stem.UP ? this.stem_up_x_offset : this.stem_down_x_offset;\n }\n const y = this.y;\n L(\"Drawing note head '\", this.noteType, this.duration, \"' at\", head_x, y);\n // Begin and end positions for head.\n const stem_direction = this.stem_direction;\n const glyph_font_scale = this.render_options.glyph_font_scale;\n this.applyStyle(ctx);\n const categorySuffix = `${this.glyph_code}Stem${stem_direction === Stem.UP ? 'Up' : 'Down'}`;\n if (this.noteType === 's') {\n const staveSpace = this.checkStave().getSpacingBetweenLines();\n drawSlashNoteHead(ctx, this.duration, head_x, y, stem_direction, staveSpace);\n }\n else {\n Glyph.renderGlyph(ctx, head_x, y, glyph_font_scale, this.glyph_code, {\n category: this.custom_glyph ? `noteHead.custom.${categorySuffix}` : `noteHead.standard.${categorySuffix}`,\n });\n }\n this.restoreStyle(ctx);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.NoteHead.DEBUG` to `true`. */\nNoteHead.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// `StemmableNote` is an abstract interface for notes with optional stems.\n// Examples of stemmable notes are `StaveNote` and `TabNote`\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StemmableNote extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n }\n static get CATEGORY() {\n return Category.StemmableNote;\n }\n // Get and set the note's `Stem`\n getStem() {\n return this.stem;\n }\n checkStem() {\n if (!this.stem) {\n throw new RuntimeError('NoStem', 'No stem attached to instance');\n }\n return this.stem;\n }\n setStem(stem) {\n this.stem = stem;\n this.addChildElement(stem);\n return this;\n }\n // Builds and sets a new stem\n buildStem() {\n const stem = new Stem();\n this.setStem(stem);\n return this;\n }\n buildFlag(category = 'flag') {\n const { glyph } = this;\n if (this.hasFlag()) {\n const flagCode = this.getStemDirection() === Stem.DOWN ? glyph.code_flag_downstem : glyph.code_flag_upstem;\n this.flag = new Glyph(flagCode, this.render_options.glyph_font_scale, { category });\n }\n }\n // Get the custom glyph associated with the outer note head on the base of the stem.\n getBaseCustomNoteHeadGlyph() {\n if (this.getStemDirection() === Stem.DOWN) {\n return this.customGlyphs[this.customGlyphs.length - 1];\n }\n else {\n return this.customGlyphs[0];\n }\n }\n // Get the full length of stem\n getStemLength() {\n return Stem.HEIGHT + this.getStemExtension();\n }\n // Get the number of beams for this duration\n getBeamCount() {\n const glyph = this.getGlyph();\n if (glyph) {\n return glyph.beam_count;\n }\n else {\n return 0;\n }\n }\n // Get the minimum length of stem\n getStemMinimumLength() {\n const frac = Tables.durationToFraction(this.duration);\n let length = frac.value() <= 1 ? 0 : 20;\n // if note is flagged, cannot shorten beam\n switch (this.duration) {\n case '8':\n if (this.beam == undefined)\n length = 35;\n break;\n case '16':\n length = this.beam == undefined ? 35 : 25;\n break;\n case '32':\n length = this.beam == undefined ? 45 : 35;\n break;\n case '64':\n length = this.beam == undefined ? 50 : 40;\n break;\n case '128':\n length = this.beam == undefined ? 55 : 45;\n break;\n default:\n break;\n }\n return length;\n }\n // Get/set the direction of the stem\n getStemDirection() {\n if (!this.stem_direction)\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n return this.stem_direction;\n }\n setStemDirection(direction) {\n if (!direction)\n direction = Stem.UP;\n if (direction !== Stem.UP && direction !== Stem.DOWN) {\n throw new RuntimeError('BadArgument', `Invalid stem direction: ${direction}`);\n }\n this.stem_direction = direction;\n // Reset and reformat everything. Flag has to be built before calling getStemExtension.\n this.reset();\n if (this.hasFlag()) {\n this.buildFlag();\n }\n this.beam = undefined;\n if (this.stem) {\n this.stem.setDirection(direction);\n this.stem.setExtension(this.getStemExtension());\n // Lookup the base custom notehead (closest to the base of the stem) to extend or shorten\n // the stem appropriately. If there's no custom note head, lookup the standard notehead.\n const glyph = this.getBaseCustomNoteHeadGlyph() || this.getGlyph();\n // Get the font-specific customizations for the note heads.\n const offsets = Tables.currentMusicFont().lookupMetric(`stem.noteHead.${glyph.code_head}`, {\n offsetYBaseStemUp: 0,\n offsetYTopStemUp: 0,\n offsetYBaseStemDown: 0,\n offsetYTopStemDown: 0,\n });\n // Configure the stem to use these offsets.\n this.stem.setOptions({\n stem_up_y_offset: offsets.offsetYTopStemUp,\n stem_down_y_offset: offsets.offsetYTopStemDown,\n stem_up_y_base_offset: offsets.offsetYBaseStemUp,\n stem_down_y_base_offset: offsets.offsetYBaseStemDown, // glyph.stem_down_y_base_offset,\n });\n }\n if (this.preFormatted) {\n this.preFormat();\n }\n return this;\n }\n // Get the `x` coordinate of the stem\n getStemX() {\n const x_begin = this.getAbsoluteX() + this.x_shift;\n const x_end = this.getAbsoluteX() + this.x_shift + this.getGlyphWidth();\n const stem_x = this.stem_direction === Stem.DOWN ? x_begin : x_end;\n return stem_x;\n }\n // Get the `x` coordinate for the center of the glyph.\n // Used for `TabNote` stems and stemlets over rests\n getCenterGlyphX() {\n return this.getAbsoluteX() + this.x_shift + this.getGlyphWidth() / 2;\n }\n // Get the stem extension for the current duration\n getStemExtension() {\n const glyph = this.getGlyph();\n if (this.stem_extension_override != undefined) {\n return this.stem_extension_override;\n }\n // Use stem_beam_extension with beams\n if (this.beam) {\n return glyph.stem_beam_extension;\n }\n if (glyph) {\n return this.getStemDirection() === Stem.UP ? glyph.stem_up_extension : glyph.stem_down_extension;\n }\n return 0;\n }\n // Set the stem length to a specific. Will override the default length.\n setStemLength(height) {\n this.stem_extension_override = height - Stem.HEIGHT;\n return this;\n }\n // Get the top and bottom `y` values of the stem.\n getStemExtents() {\n if (!this.stem)\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n return this.stem.getExtents();\n }\n /** Gets the `y` value for the top modifiers at a specific `textLine`. */\n getYForTopText(textLine) {\n const stave = this.checkStave();\n if (this.hasStem()) {\n const extents = this.getStemExtents();\n if (!extents)\n throw new RuntimeError('InvalidState', 'Stem does not have extents.');\n return Math.min(stave.getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1));\n }\n else {\n return stave.getYForTopText(textLine);\n }\n }\n /** Gets the `y` value for the bottom modifiers at a specific `textLine`. */\n getYForBottomText(textLine) {\n const stave = this.checkStave();\n if (this.hasStem()) {\n const extents = this.getStemExtents();\n if (!extents)\n throw new RuntimeError('InvalidState', 'Stem does not have extents.');\n return Math.max(stave.getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine);\n }\n else {\n return stave.getYForBottomText(textLine);\n }\n }\n hasFlag() {\n return Tables.getGlyphProps(this.duration).flag && !this.beam;\n }\n /** Post formats the note. */\n postFormat() {\n var _a;\n (_a = this.beam) === null || _a === void 0 ? void 0 : _a.postFormat();\n this.postFormatted = true;\n return this;\n }\n /** Renders the stem onto the canvas. */\n drawStem(stemOptions) {\n var _a;\n this.checkContext();\n this.setRendered();\n this.setStem(new Stem(stemOptions));\n (_a = this.stem) === null || _a === void 0 ? void 0 : _a.setContext(this.getContext()).draw();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This file implements notes for standard notation. This consists of one or\n// more `NoteHeads`, an optional stem, and an optional flag.\n//\n// Throughout these comments, a \"note\" refers to the entire `StaveNote`,\n// and a \"key\" refers to a specific pitch/notehead within a note.\n//\n// See `tests/stavenote_tests.ts` for usage examples.\nimport { BoundingBox } from './boundingbox';\nimport { Modifier } from './modifier';\nimport { NoteHead } from './notehead';\nimport { Stem } from './stem';\nimport { StemmableNote } from './stemmablenote';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log, midLine, RuntimeError } from './util';\nfunction showDeprecationWarningForNoteHeads() {\n // eslint-disable-next-line\n console.warn('StaveNote.note_heads is deprecated. Use StaveNote.noteHeads instead.', 'This accessor will be removed in VexFlow 5.0.');\n}\n// To enable logging for this class. Set `Vex.Flow.StaveNote.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (StaveNote.DEBUG)\n log('Vex.Flow.StaveNote', args);\n}\nconst isInnerNoteIndex = (note, index) => index === (note.getStemDirection() === Stem.UP ? note.keyProps.length - 1 : 0);\n// Helper methods for rest positioning in ModifierContext.\nfunction shiftRestVertical(rest, note, dir) {\n const delta = dir;\n rest.line += delta;\n rest.maxLine += delta;\n rest.minLine += delta;\n rest.note.setKeyLine(0, rest.note.getKeyLine(0) + delta);\n}\n// Called from formatNotes :: center a rest between two notes\nfunction centerRest(rest, noteU, noteL) {\n const delta = rest.line - midLine(noteU.minLine, noteL.maxLine);\n rest.note.setKeyLine(0, rest.note.getKeyLine(0) - delta);\n rest.line -= delta;\n rest.maxLine -= delta;\n rest.minLine -= delta;\n}\nexport class StaveNote extends StemmableNote {\n constructor(noteStruct) {\n var _a, _b, _c;\n super(noteStruct);\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // INSTANCE MEMBERS\n this.minLine = 0;\n this.maxLine = 0;\n // Sorted variant of keyProps used internally\n this.sortedKeyProps = [];\n this.ledgerLineStyle = {};\n this.clef = (_a = noteStruct.clef) !== null && _a !== void 0 ? _a : 'treble';\n this.octave_shift = (_b = noteStruct.octave_shift) !== null && _b !== void 0 ? _b : 0;\n // Pull note rendering properties.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n // if true, displace note to right\n this.displaced = false;\n this.dot_shiftY = 0;\n // for displaced ledger lines\n this.use_default_head_x = false;\n // Drawing\n this._noteHeads = [];\n this.modifiers = [];\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads and rests\n glyph_font_scale: noteStruct.glyph_font_scale || Tables.NOTATION_FONT_SCALE, \n // number of stroke px to the left and right of head\n stroke_px: noteStruct.stroke_px || StaveNote.LEDGER_LINE_OFFSET });\n this.calculateKeyProps();\n this.buildStem();\n // Set the stem direction\n if (noteStruct.auto_stem) {\n this.autoStem();\n }\n else {\n this.setStemDirection((_c = noteStruct.stem_direction) !== null && _c !== void 0 ? _c : Stem.UP);\n }\n this.reset();\n this.buildFlag();\n }\n static get CATEGORY() {\n return Category.StaveNote;\n }\n /**\n * @deprecated Use Stem.UP.\n */\n static get STEM_UP() {\n return Stem.UP;\n }\n /**\n * @deprecated Use Stem.DOWN.\n */\n static get STEM_DOWN() {\n return Stem.DOWN;\n }\n static get LEDGER_LINE_OFFSET() {\n return 3;\n }\n static get minNoteheadPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Format notes inside a ModifierContext. */\n static format(notes, state) {\n if (!notes || notes.length < 2)\n return false;\n const notesList = [];\n for (let i = 0; i < notes.length; i++) {\n // Formatting uses sortedKeyProps to calculate line and minL.\n const props = notes[i].sortedKeyProps;\n const line = props[0].keyProps.line;\n let minL = props[props.length - 1].keyProps.line;\n const stemDirection = notes[i].getStemDirection();\n const stemMax = notes[i].getStemLength() / 10;\n const stemMin = notes[i].getStemMinimumLength() / 10;\n let maxL;\n if (notes[i].isRest()) {\n maxL = line + notes[i].glyph.line_above;\n minL = line - notes[i].glyph.line_below;\n }\n else {\n maxL =\n stemDirection === 1 ? props[props.length - 1].keyProps.line + stemMax : props[props.length - 1].keyProps.line;\n minL = stemDirection === 1 ? props[0].keyProps.line : props[0].keyProps.line - stemMax;\n }\n notesList.push({\n line: props[0].keyProps.line,\n maxLine: maxL,\n minLine: minL,\n isrest: notes[i].isRest(),\n stemDirection: stemDirection,\n stemMax,\n stemMin,\n voice_shift: notes[i].getVoiceShiftWidth(),\n is_displaced: notes[i].isDisplaced(),\n note: notes[i],\n });\n }\n let voices = 0;\n let noteU = undefined;\n let noteM = undefined;\n let noteL = undefined;\n const draw = [false, false, false];\n for (let i = 0; i < notesList.length; i++) {\n draw[i] = notesList[i].note.render_options.draw == false ? false : true;\n }\n if (draw[0] && draw[1] && draw[2]) {\n // Three visible notes\n voices = 3;\n noteU = notesList[0];\n noteM = notesList[1];\n noteL = notesList[2];\n }\n else if (draw[0] && draw[1]) {\n // Two visible notes, 0 & 1\n voices = 2;\n noteU = notesList[0];\n noteL = notesList[1];\n }\n else if (draw[0] && draw[2]) {\n // Two visible notes, 0 & 2\n voices = 2;\n noteU = notesList[0];\n noteL = notesList[2];\n }\n else if (draw[1] && draw[2]) {\n // Two visible notes, 1 & 2\n voices = 2;\n noteU = notesList[1];\n noteL = notesList[2];\n }\n else {\n // No shift required for less than 2 visible notes\n return true;\n }\n // for two voice backward compatibility, ensure upper voice is stems up\n // for three voices, the voices must be in order (upper, middle, lower)\n if (voices === 2 && noteU.stemDirection === -1 && noteL.stemDirection === 1) {\n noteU = notesList[1];\n noteL = notesList[0];\n }\n const voiceXShift = Math.max(noteU.voice_shift, noteL.voice_shift);\n let xShift = 0;\n // Test for two voice note intersection\n if (voices === 2) {\n const lineSpacing = noteU.note.hasStem() && noteL.note.hasStem() && noteU.stemDirection === noteL.stemDirection ? 0.0 : 0.5;\n if (noteL.isrest && noteU.isrest && noteU.note.duration === noteL.note.duration) {\n noteL.note.render_options.draw = false;\n }\n else if (noteU.minLine <= noteL.maxLine + lineSpacing) {\n if (noteU.isrest) {\n // shift rest up\n shiftRestVertical(noteU, noteL, 1);\n }\n else if (noteL.isrest) {\n // shift rest down\n shiftRestVertical(noteL, noteU, -1);\n }\n else {\n //Instead of shifting notes, remove the appropriate flag\n //If we are sharing a line, switch one notes stem direction.\n //If we are sharing a line and in the same voice, only then offset one note\n const lineDiff = Math.abs(noteU.line - noteL.line);\n if (noteU.note.hasStem() && noteL.note.hasStem()) {\n //If we have different dot values, must offset\n //Or If we have a white mixed with a black notehead, must offset\n let whiteNoteHeadCount = 0;\n let blackNoteHeadCount = 0;\n if (Tables.durationToNumber(noteU.note.duration) === 2) {\n whiteNoteHeadCount++;\n }\n else if (Tables.durationToNumber(noteU.note.duration) > 2) {\n blackNoteHeadCount++;\n }\n if (Tables.durationToNumber(noteL.note.duration) === 2) {\n whiteNoteHeadCount++;\n }\n else if (Tables.durationToNumber(noteL.note.duration) > 2) {\n blackNoteHeadCount++;\n }\n if ((whiteNoteHeadCount !== 2 && blackNoteHeadCount !== 2) ||\n noteU.note.getModifiersByType(Category.Dot).length !== noteL.note.getModifiersByType(Category.Dot).length) {\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (lineDiff < 1 && lineDiff > 0) {\n //if the notes are quite close but not on the same line, shift\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (noteU.note.voice !== noteL.note.voice) {\n //If we are not in the same voice\n if (noteU.stemDirection === noteL.stemDirection) {\n if (noteU.line != noteL.line) {\n xShift = voiceXShift + 2;\n noteU.note.setXShift(xShift);\n }\n else {\n //same line, swap stem direction for one note\n if (noteL.stemDirection === 1) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n }\n }\n } //Very close whole notes\n }\n else if (lineDiff < 1) {\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (noteU.note.hasStem()) {\n noteU.stemDirection = -noteU.note.getStemDirection();\n noteU.note.setStemDirection(noteU.stemDirection);\n }\n else if (noteL.note.hasStem()) {\n noteL.stemDirection = -noteL.note.getStemDirection();\n noteL.note.setStemDirection(noteL.stemDirection);\n }\n }\n }\n // format complete\n state.right_shift += xShift;\n return true;\n }\n if (!noteM)\n throw new RuntimeError('InvalidState', 'noteM not defined.');\n // For three voices, test if rests can be repositioned\n //\n // Special case 1 :: middle voice rest between two notes\n //\n if (noteM.isrest && !noteU.isrest && !noteL.isrest) {\n if (noteU.minLine <= noteM.maxLine || noteM.minLine <= noteL.maxLine) {\n const restHeight = noteM.maxLine - noteM.minLine;\n const space = noteU.minLine - noteL.maxLine;\n if (restHeight < space) {\n // center middle voice rest between the upper and lower voices\n centerRest(noteM, noteU, noteL);\n }\n else {\n xShift = voiceXShift + 2; // shift middle rest right\n noteM.note.setXShift(xShift);\n if (noteL.note.hasBeam() === false) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n if (noteU.minLine <= noteL.maxLine && noteU.note.hasBeam() === false) {\n noteU.stemDirection = 1;\n noteU.note.setStemDirection(1);\n }\n }\n // format complete\n state.right_shift += xShift;\n return true;\n }\n }\n // Special case 2 :: all voices are rests\n if (noteU.isrest && noteM.isrest && noteL.isrest) {\n // Hide upper voice rest\n noteU.note.render_options.draw = false;\n // Hide lower voice rest\n noteL.note.render_options.draw = false;\n // format complete\n state.right_shift += xShift;\n return true;\n }\n // Test if any other rests can be repositioned\n if (noteM.isrest && noteU.isrest && noteM.minLine <= noteL.maxLine) {\n // Hide middle voice rest\n noteM.note.render_options.draw = false;\n }\n if (noteM.isrest && noteL.isrest && noteU.minLine <= noteM.maxLine) {\n // Hide middle voice rest\n noteM.note.render_options.draw = false;\n }\n if (noteU.isrest && noteU.minLine <= noteM.maxLine) {\n // shift upper voice rest up;\n shiftRestVertical(noteU, noteM, 1);\n }\n if (noteL.isrest && noteM.minLine <= noteL.maxLine) {\n // shift lower voice rest down\n shiftRestVertical(noteL, noteM, -1);\n }\n // If middle voice intersects upper or lower voice\n if (noteU.minLine <= noteM.maxLine + 0.5 || noteM.minLine <= noteL.maxLine) {\n // shift middle note right\n xShift = voiceXShift + 2;\n noteM.note.setXShift(xShift);\n if (noteL.note.hasBeam() === false) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n if (noteU.minLine <= noteL.maxLine && noteU.note.hasBeam() === false) {\n noteU.stemDirection = 1;\n noteU.note.setStemDirection(1);\n }\n }\n state.right_shift += xShift;\n return true;\n }\n static postFormat(notes) {\n if (!notes)\n return false;\n notes.forEach((note) => note.postFormat());\n return true;\n }\n reset() {\n super.reset();\n // Save prior noteHead styles & reapply them after making new noteheads.\n const noteHeadStyles = this._noteHeads.map((noteHead) => noteHead.getStyle());\n this.buildNoteHeads();\n this._noteHeads.forEach((noteHead, index) => {\n const noteHeadStyle = noteHeadStyles[index];\n if (noteHeadStyle)\n noteHead.setStyle(noteHeadStyle);\n });\n const stave = this.stave;\n if (stave) {\n this._noteHeads.forEach((head) => head.setStave(stave));\n }\n this.calcNoteDisplacements();\n return this;\n }\n setBeam(beam) {\n this.beam = beam;\n this.calcNoteDisplacements();\n // Update stem extension if a beam is assigned.\n if (this.stem) {\n this.stem.setExtension(this.getStemExtension());\n }\n return this;\n }\n // Builds a `Stem` for the note\n buildStem() {\n this.setStem(new Stem({ hide: !!this.isRest() }));\n return this;\n }\n // Builds a `NoteHead` for each key in the note\n buildNoteHeads() {\n this._noteHeads = [];\n const stemDirection = this.getStemDirection();\n const keys = this.getKeys();\n let lastLine = undefined;\n let lineDiff = undefined;\n let displaced = false;\n // Draw notes from bottom to top.\n // For down-stem notes, we draw from top to bottom.\n let start;\n let end;\n let step;\n if (stemDirection === Stem.UP) {\n start = 0;\n end = keys.length;\n step = 1;\n }\n else {\n start = keys.length - 1;\n end = -1;\n step = -1;\n }\n for (let i = start; i !== end; i += step) {\n // Building noteheads rely on sortedKeNotes in order to calculate the displacements\n const noteProps = this.sortedKeyProps[i].keyProps;\n const line = noteProps.line;\n // Keep track of last line with a note head, so that consecutive heads\n // are correctly displaced.\n if (lastLine === undefined) {\n lastLine = line;\n }\n else {\n lineDiff = Math.abs(lastLine - line);\n if (lineDiff === 0 || lineDiff === 0.5) {\n displaced = !displaced;\n }\n else {\n displaced = false;\n this.use_default_head_x = true;\n }\n }\n lastLine = line;\n const notehead = new NoteHead({\n duration: this.duration,\n note_type: this.noteType,\n displaced,\n stem_direction: stemDirection,\n custom_glyph_code: noteProps.code,\n glyph_font_scale: this.render_options.glyph_font_scale,\n x_shift: noteProps.shift_right,\n stem_up_x_offset: noteProps.stem_up_x_offset,\n stem_down_x_offset: noteProps.stem_down_x_offset,\n line: noteProps.line,\n });\n this.addChildElement(notehead);\n this._noteHeads[this.sortedKeyProps[i].index] = notehead;\n }\n }\n // Automatically sets the stem direction based on the keys in the note\n autoStem() {\n this.setStemDirection(this.calculateOptimalStemDirection());\n }\n calculateOptimalStemDirection() {\n // Figure out optimal stem direction based on given notes\n // minLine & maxLine rely on sortedKeyProps\n this.minLine = this.sortedKeyProps[0].keyProps.line;\n this.maxLine = this.sortedKeyProps[this.keyProps.length - 1].keyProps.line;\n const MIDDLE_LINE = 3;\n const decider = (this.minLine + this.maxLine) / 2;\n const stemDirection = decider < MIDDLE_LINE ? Stem.UP : Stem.DOWN;\n return stemDirection;\n }\n // Calculates and stores the properties for each key in the note\n calculateKeyProps() {\n let lastLine;\n for (let i = 0; i < this.keys.length; ++i) {\n const key = this.keys[i];\n // All rests use the same position on the line.\n // if (this.glyph.rest) key = this.glyph.position;\n if (this.glyph.rest)\n this.glyph.position = key;\n const options = { octave_shift: this.octave_shift || 0, duration: this.duration };\n const props = Tables.keyProperties(key, this.clef, options);\n if (!props) {\n throw new RuntimeError('BadArguments', `Invalid key for note properties: ${key}`);\n }\n // Override line placement for default rests\n if (props.key === 'R') {\n if (this.duration === '1' || this.duration === 'w') {\n props.line = 4;\n }\n else {\n props.line = 3;\n }\n }\n // Calculate displacement of this note\n const line = props.line;\n if (lastLine == undefined) {\n lastLine = line;\n }\n else {\n if (Math.abs(lastLine - line) === 0.5) {\n this.displaced = true;\n props.displaced = true;\n // Have to mark the previous note as\n // displaced as well, for modifier placement\n if (this.keyProps.length > 0) {\n this.keyProps[i - 1].displaced = true;\n }\n }\n }\n lastLine = line;\n this.keyProps.push(props);\n }\n // Sort the notes from lowest line to highest line in sortedKeyProps\n // Warn no longer required as keyProps remains unsorted\n this.keyProps.forEach((keyProps, index) => {\n this.sortedKeyProps.push({ keyProps, index });\n });\n this.sortedKeyProps.sort((a, b) => a.keyProps.line - b.keyProps.line);\n }\n // Get the `BoundingBox` for the entire note\n getBoundingBox() {\n var _a, _b;\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getBoundingBox on an unformatted note.\");\n }\n const { width: w, modLeftPx, leftDisplacedHeadPx } = this.getMetrics();\n const x = this.getAbsoluteX() - modLeftPx - leftDisplacedHeadPx;\n let minY = 0;\n let maxY = 0;\n const halfLineSpacing = ((_b = (_a = this.getStave()) === null || _a === void 0 ? void 0 : _a.getSpacingBetweenLines()) !== null && _b !== void 0 ? _b : 0) / 2;\n const lineSpacing = halfLineSpacing * 2;\n if (this.isRest()) {\n const y = this.ys[0];\n const frac = Tables.durationToFraction(this.duration);\n if (frac.equals(1) || frac.equals(2)) {\n minY = y - halfLineSpacing;\n maxY = y + halfLineSpacing;\n }\n else {\n minY = y - this.glyph.line_above * lineSpacing;\n maxY = y + this.glyph.line_below * lineSpacing;\n }\n }\n else if (this.glyph.stem) {\n const ys = this.getStemExtents();\n ys.baseY += halfLineSpacing * this.getStemDirection();\n minY = Math.min(ys.topY, ys.baseY);\n maxY = Math.max(ys.topY, ys.baseY);\n }\n else {\n minY = 0;\n maxY = 0;\n for (let i = 0; i < this.ys.length; ++i) {\n const yy = this.ys[i];\n if (i === 0) {\n minY = yy;\n maxY = yy;\n }\n else {\n minY = Math.min(yy, minY);\n maxY = Math.max(yy, maxY);\n }\n }\n minY -= halfLineSpacing;\n maxY += halfLineSpacing;\n }\n return new BoundingBox(x, minY, w, maxY - minY);\n }\n // Gets the line number of the bottom note in the chord.\n // If `isTopNote` is `true` then get the top note's line number instead\n getLineNumber(isTopNote) {\n if (!this.keyProps.length) {\n throw new RuntimeError('NoKeyProps', \"Can't get bottom note line, because note is not initialized properly.\");\n }\n let resultLine = this.keyProps[0].line;\n // No precondition assumed for sortedness of keyProps array\n for (let i = 0; i < this.keyProps.length; i++) {\n const thisLine = this.keyProps[i].line;\n if (isTopNote) {\n if (thisLine > resultLine)\n resultLine = thisLine;\n }\n else {\n if (thisLine < resultLine)\n resultLine = thisLine;\n }\n }\n return resultLine;\n }\n /**\n * @returns true if this note is a type of rest. Rests don't have pitches, but take up space in the score.\n */\n isRest() {\n return this.glyph.rest;\n }\n // Determine if the current note is a chord\n isChord() {\n return !this.isRest() && this.keys.length > 1;\n }\n // Determine if the `StaveNote` has a stem\n hasStem() {\n return this.glyph.stem;\n }\n hasFlag() {\n return super.hasFlag() && !this.isRest();\n }\n getStemX() {\n if (this.noteType === 'r') {\n return this.getCenterGlyphX();\n }\n else {\n // We adjust the origin of the stem because we want the stem left-aligned\n // with the notehead if stemmed-down, and right-aligned if stemmed-up\n return super.getStemX() + (this.stem_direction ? Stem.WIDTH / (2 * -this.stem_direction) : 0);\n }\n }\n // Get the `y` coordinate for text placed on the top/bottom of a\n // note at a desired `text_line`\n getYForTopText(textLine) {\n const extents = this.getStemExtents();\n return Math.min(this.checkStave().getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1));\n }\n getYForBottomText(textLine) {\n const extents = this.getStemExtents();\n return Math.max(this.checkStave().getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine);\n }\n // Sets the current note to the provided `stave`. This applies\n // `y` values to the `NoteHeads`.\n setStave(stave) {\n super.setStave(stave);\n const ys = this._noteHeads.map((notehead) => {\n notehead.setStave(stave);\n return notehead.getY();\n });\n this.setYs(ys);\n if (this.stem) {\n const { y_top, y_bottom } = this.getNoteHeadBounds();\n this.stem.setYBounds(y_top, y_bottom);\n }\n return this;\n }\n // Check if note is shifted to the right\n isDisplaced() {\n return this.displaced;\n }\n // Sets whether shift note to the right. `displaced` is a `boolean`\n setNoteDisplaced(displaced) {\n this.displaced = displaced;\n return this;\n }\n // Get the starting `x` coordinate for a `StaveTie`\n getTieRightX() {\n let tieStartX = this.getAbsoluteX();\n tieStartX += this.getGlyphWidth() + this.x_shift + this.rightDisplacedHeadPx;\n if (this.modifierContext)\n tieStartX += this.modifierContext.getRightShift();\n return tieStartX;\n }\n // Get the ending `x` coordinate for a `StaveTie`\n getTieLeftX() {\n let tieEndX = this.getAbsoluteX();\n tieEndX += this.x_shift - this.leftDisplacedHeadPx;\n return tieEndX;\n }\n // Get the stave line on which to place a rest\n getLineForRest() {\n let restLine = this.keyProps[0].line;\n if (this.keyProps.length > 1) {\n const lastLine = this.keyProps[this.keyProps.length - 1].line;\n const top = Math.max(restLine, lastLine);\n const bot = Math.min(restLine, lastLine);\n restLine = midLine(top, bot);\n }\n return restLine;\n }\n // Get the default `x` and `y` coordinates for the provided `position`\n // and key `index`\n getModifierStartXY(position, index, options = {}) {\n var _a, _b;\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-Values calculated for this note.');\n }\n const { ABOVE, BELOW, LEFT, RIGHT } = Modifier.Position;\n let x = 0;\n if (position === LEFT) {\n // FIXME: Left modifier padding, move to font file\n x = -1 * 2;\n }\n else if (position === RIGHT) {\n // FIXME: Right modifier padding, move to font file\n x = this.getGlyphWidth() + this.x_shift + 2;\n if (this.stem_direction === Stem.UP &&\n this.hasFlag() &&\n (options.forceFlagRight || isInnerNoteIndex(this, index))) {\n x += (_b = (_a = this === null || this === void 0 ? void 0 : this.flag) === null || _a === void 0 ? void 0 : _a.getMetrics().width) !== null && _b !== void 0 ? _b : 0;\n }\n }\n else if (position === BELOW || position === ABOVE) {\n x = this.getGlyphWidth() / 2;\n }\n return {\n x: this.getAbsoluteX() + x,\n y: this.ys[index],\n };\n }\n // Sets the style of the complete StaveNote, including all keys\n // and the stem.\n setStyle(style) {\n return super.setGroupStyle(style);\n }\n setStemStyle(style) {\n const stem = this.getStem();\n if (stem)\n stem.setStyle(style);\n return this;\n }\n getStemStyle() {\n var _a;\n return (_a = this.stem) === null || _a === void 0 ? void 0 : _a.getStyle();\n }\n setLedgerLineStyle(style) {\n this.ledgerLineStyle = style;\n }\n getLedgerLineStyle() {\n return this.ledgerLineStyle;\n }\n setFlagStyle(style) {\n var _a;\n (_a = this.flag) === null || _a === void 0 ? void 0 : _a.setStyle(style);\n }\n getFlagStyle() {\n var _a;\n return (_a = this.flag) === null || _a === void 0 ? void 0 : _a.getStyle();\n }\n // Sets the notehead at `index` to the provided coloring `style`.\n //\n // `style` is an `object` with the following properties: `shadowColor`,\n // `shadowBlur`, `fillStyle`, `strokeStyle`\n setKeyStyle(index, style) {\n this._noteHeads[index].setStyle(style);\n return this;\n }\n setKeyLine(index, line) {\n this.keyProps[index].line = line;\n this.reset();\n return this;\n }\n getKeyLine(index) {\n return this.keyProps[index].line;\n }\n // Get the width of the note if it is displaced. Used for `Voice`\n // formatting\n getVoiceShiftWidth() {\n // TODO: may need to accommodate for dot here.\n return this.getGlyphWidth() * (this.displaced ? 2 : 1);\n }\n // Calculates and sets the extra pixels to the left or right\n // if the note is displaced.\n calcNoteDisplacements() {\n this.setLeftDisplacedHeadPx(this.displaced && this.stem_direction === Stem.DOWN ? this.getGlyphWidth() : 0);\n // For upstems with flags, the extra space is unnecessary, since it's taken\n // up by the flag.\n this.setRightDisplacedHeadPx(!this.hasFlag() && this.displaced && this.stem_direction === Stem.UP ? this.getGlyphWidth() : 0);\n }\n // Pre-render formatting\n preFormat() {\n if (this.preFormatted)\n return;\n let noteHeadPadding = 0;\n if (this.modifierContext) {\n this.modifierContext.preFormat();\n // If there are no modifiers on this note, make sure there is adequate padding\n // between the notes.\n if (this.modifierContext.getWidth() === 0) {\n noteHeadPadding = StaveNote.minNoteheadPadding;\n }\n }\n let width = this.getGlyphWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx + noteHeadPadding;\n // For upward flagged notes, the width of the flag needs to be added\n if (this.shouldDrawFlag() && this.stem_direction === Stem.UP) {\n width += this.getGlyphWidth();\n // TODO: Add flag width as a separate metric\n }\n this.setWidth(width);\n this.preFormatted = true;\n }\n /**\n * @typedef {Object} noteHeadBounds\n * @property {number} y_top the highest notehead bound\n * @property {number} y_bottom the lowest notehead bound\n * @property {number|Null} displaced_x the starting x for displaced noteheads\n * @property {number|Null} non_displaced_x the starting x for non-displaced noteheads\n * @property {number} highest_line the highest notehead line in traditional music line\n * numbering (bottom line = 1, top line = 5)\n * @property {number} lowest_line the lowest notehead line\n * @property {number|false} highest_displaced_line the highest staff line number\n * for a displaced notehead\n * @property {number|false} lowest_displaced_line\n * @property {number} highest_non_displaced_line\n * @property {number} lowest_non_displaced_line\n */\n /**\n * Get the staff line and y value for the highest & lowest noteheads\n * @returns {noteHeadBounds}\n */\n getNoteHeadBounds() {\n // Top and bottom Y values for stem.\n let yTop = +Infinity;\n let yBottom = -Infinity;\n let nonDisplacedX;\n let displacedX;\n let highestLine = this.checkStave().getNumLines();\n let lowestLine = 1;\n let highestDisplacedLine;\n let lowestDisplacedLine;\n let highestNonDisplacedLine = highestLine;\n let lowestNonDisplacedLine = lowestLine;\n this._noteHeads.forEach((notehead) => {\n const line = notehead.getLine();\n const y = notehead.getY();\n yTop = Math.min(y, yTop);\n yBottom = Math.max(y, yBottom);\n if (displacedX === undefined && notehead.isDisplaced()) {\n displacedX = notehead.getAbsoluteX();\n }\n if (nonDisplacedX === undefined && !notehead.isDisplaced()) {\n nonDisplacedX = notehead.getAbsoluteX();\n }\n highestLine = Math.max(line, highestLine);\n lowestLine = Math.min(line, lowestLine);\n if (notehead.isDisplaced()) {\n highestDisplacedLine = highestDisplacedLine === undefined ? line : Math.max(line, highestDisplacedLine);\n lowestDisplacedLine = lowestDisplacedLine === undefined ? line : Math.min(line, lowestDisplacedLine);\n }\n else {\n highestNonDisplacedLine = Math.max(line, highestNonDisplacedLine);\n lowestNonDisplacedLine = Math.min(line, lowestNonDisplacedLine);\n }\n }, this);\n return {\n y_top: yTop,\n y_bottom: yBottom,\n displaced_x: displacedX,\n non_displaced_x: nonDisplacedX,\n highest_line: highestLine,\n lowest_line: lowestLine,\n highest_displaced_line: highestDisplacedLine,\n lowest_displaced_line: lowestDisplacedLine,\n highest_non_displaced_line: highestNonDisplacedLine,\n lowest_non_displaced_line: lowestNonDisplacedLine,\n };\n }\n // Get the starting `x` coordinate for the noteheads\n getNoteHeadBeginX() {\n return this.getAbsoluteX() + this.x_shift;\n }\n // Get the ending `x` coordinate for the noteheads\n getNoteHeadEndX() {\n const xBegin = this.getNoteHeadBeginX();\n return xBegin + this.getGlyphWidth();\n }\n get noteHeads() {\n return this._noteHeads.slice();\n }\n /** @deprecated use StaveNote.noteHeads instead. */\n get note_heads() {\n showDeprecationWarningForNoteHeads();\n return this.noteHeads;\n }\n // Draw the ledger lines between the stave and the highest/lowest keys\n drawLedgerLines() {\n const stave = this.checkStave();\n const { glyph, render_options: { stroke_px }, } = this;\n const ctx = this.checkContext();\n const width = glyph.getWidth() + stroke_px * 2;\n const doubleWidth = 2 * (glyph.getWidth() + stroke_px) - Stem.WIDTH / 2;\n if (this.isRest())\n return;\n if (!ctx) {\n throw new RuntimeError('NoCanvasContext', \"Can't draw without a canvas context.\");\n }\n const { highest_line, lowest_line, highest_displaced_line, highest_non_displaced_line, lowest_displaced_line, lowest_non_displaced_line, displaced_x, non_displaced_x, } = this.getNoteHeadBounds();\n // Early out if there are no ledger lines to draw.\n if (highest_line < 6 && lowest_line > 0)\n return;\n const min_x = Math.min(displaced_x !== null && displaced_x !== void 0 ? displaced_x : 0, non_displaced_x !== null && non_displaced_x !== void 0 ? non_displaced_x : 0);\n const drawLedgerLine = (y, normal, displaced) => {\n let x;\n if (displaced && normal)\n x = min_x - stroke_px;\n else if (normal)\n x = (non_displaced_x !== null && non_displaced_x !== void 0 ? non_displaced_x : 0) - stroke_px;\n else\n x = (displaced_x !== null && displaced_x !== void 0 ? displaced_x : 0) - stroke_px;\n const ledgerWidth = normal && displaced ? doubleWidth : width;\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.lineTo(x + ledgerWidth, y);\n ctx.stroke();\n };\n const style = Object.assign(Object.assign({}, stave.getDefaultLedgerLineStyle()), this.getLedgerLineStyle());\n this.applyStyle(ctx, style);\n // Draw ledger lines below the staff:\n for (let line = 6; line <= highest_line; ++line) {\n const normal = non_displaced_x !== undefined && line <= highest_non_displaced_line;\n const displaced = highest_displaced_line !== undefined && line <= highest_displaced_line;\n drawLedgerLine(stave.getYForNote(line), normal, displaced);\n }\n // Draw ledger lines above the staff:\n for (let line = 0; line >= lowest_line; --line) {\n const normal = non_displaced_x !== undefined && line >= lowest_non_displaced_line;\n const displaced = lowest_displaced_line !== undefined && line >= lowest_displaced_line;\n drawLedgerLine(stave.getYForNote(line), normal, displaced);\n }\n this.restoreStyle(ctx, style);\n }\n // Draw all key modifiers\n drawModifiers(noteheadParam) {\n const ctx = this.checkContext();\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n const index = modifier.checkIndex();\n const notehead = this._noteHeads[index];\n if (notehead == noteheadParam) {\n const noteheadStyle = notehead.getStyle();\n notehead.applyStyle(ctx, noteheadStyle);\n modifier.setContext(ctx);\n modifier.drawWithStyle();\n notehead.restoreStyle(ctx, noteheadStyle);\n }\n }\n }\n shouldDrawFlag() {\n const hasStem = this.stem !== undefined;\n const hasFlag = this.glyph.flag; // specified in tables.js\n const hasNoBeam = this.beam === undefined;\n return hasStem && hasFlag && hasNoBeam;\n }\n // Draw the flag for the note\n drawFlag() {\n var _a, _b, _c, _d, _e;\n const ctx = this.checkContext();\n if (!ctx) {\n throw new RuntimeError('NoCanvasContext', \"Can't draw without a canvas context.\");\n }\n if (this.shouldDrawFlag()) {\n const { y_top, y_bottom } = this.getNoteHeadBounds();\n // eslint-disable-next-line\n const noteStemHeight = this.stem.getHeight();\n const flagX = this.getStemX();\n // What's with the magic +/- 2\n // ANSWER: a corner of the note stem pokes out beyond the tip of the flag.\n // The extra +/- 2 pushes the flag glyph outward so it covers the stem entirely.\n // Alternatively, we could shorten the stem.\n const flagY = this.getStemDirection() === Stem.DOWN\n ? // Down stems are below the note head and have flags on the right.\n y_top -\n noteStemHeight +\n 2 -\n (this.glyph ? this.glyph.stem_down_extension : 0) * this.getStaveNoteScale() -\n ((_b = (_a = this.flag) === null || _a === void 0 ? void 0 : _a.getMetrics().y_shift) !== null && _b !== void 0 ? _b : 0) * (1 - this.getStaveNoteScale())\n : // Up stems are above the note head and have flags on the right.\n y_bottom -\n noteStemHeight -\n 2 +\n (this.glyph ? this.glyph.stem_up_extension : 0) * this.getStaveNoteScale() -\n ((_d = (_c = this.flag) === null || _c === void 0 ? void 0 : _c.getMetrics().y_shift) !== null && _d !== void 0 ? _d : 0) * (1 - this.getStaveNoteScale());\n // Draw the Flag\n (_e = this.flag) === null || _e === void 0 ? void 0 : _e.render(ctx, flagX, flagY);\n }\n }\n // Draw the NoteHeads\n drawNoteHeads() {\n const ctx = this.checkContext();\n this._noteHeads.forEach((notehead) => {\n ctx.openGroup('notehead', notehead.getAttribute('id'), { pointerBBox: true });\n notehead.setContext(ctx).draw();\n this.drawModifiers(notehead);\n ctx.closeGroup();\n });\n }\n drawStem(stemOptions) {\n // GCR TODO: I can't find any context in which this is called with the stemStruct\n // argument in the codebase or tests. Nor can I find a case where super.drawStem\n // is called at all. Perhaps these should be removed?\n const ctx = this.checkContext();\n if (stemOptions) {\n this.setStem(new Stem(stemOptions));\n }\n // If we will render a flag, we shorten the stem so that the tip\n // does not poke through the flag.\n if (this.shouldDrawFlag() && this.stem) {\n this.stem.adjustHeightForFlag();\n }\n if (this.stem) {\n this.stem.setContext(ctx).draw();\n }\n }\n /** Primarily used as the scaling factor for grace notes, GraceNote will return the required scale. */\n getStaveNoteScale() {\n return 1.0;\n }\n /**\n * Override stemmablenote stem extension to adjust for distance from middle line.\n */\n getStemExtension() {\n const super_stem_extension = super.getStemExtension();\n if (!this.glyph.stem) {\n return super_stem_extension;\n }\n const stem_direction = this.getStemDirection();\n if (stem_direction !== this.calculateOptimalStemDirection()) {\n return super_stem_extension; // no adjustment for manually set stem direction.\n }\n let mid_line_distance;\n const MIDDLE_LINE = 3;\n if (stem_direction === Stem.UP) {\n // Note that the use of maxLine here instead of minLine might\n // seem counterintuitive, but in the case of (say) treble clef\n // chord(F2, E4) stem up, we do not want to extend the stem because\n // of F2, when a normal octave-length stem above E4 is fine.\n //\n // maxLine and minLine are set in calculateOptimalStemDirection() so\n // will be known.\n mid_line_distance = MIDDLE_LINE - this.maxLine;\n }\n else {\n mid_line_distance = this.minLine - MIDDLE_LINE;\n }\n // how many lines more than an octave is the relevant notehead?\n const lines_over_octave_from_mid_line = mid_line_distance - 3.5;\n if (lines_over_octave_from_mid_line <= 0) {\n return super_stem_extension;\n }\n const stave = this.getStave();\n let spacing_between_lines = 10;\n if (stave != undefined) {\n spacing_between_lines = stave.getSpacingBetweenLines();\n }\n return super_stem_extension + lines_over_octave_from_mid_line * spacing_between_lines;\n }\n // Draws all the `StaveNote` parts. This is the main drawing method.\n draw() {\n if (this.render_options.draw === false)\n return;\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', \"Can't draw note without Y values.\");\n }\n const ctx = this.checkContext();\n const xBegin = this.getNoteHeadBeginX();\n const shouldRenderStem = this.hasStem() && !this.beam;\n // Format note head x positions\n this._noteHeads.forEach((notehead) => notehead.setX(xBegin));\n if (this.stem) {\n // Format stem x positions\n const stemX = this.getStemX();\n this.stem.setNoteHeadXBounds(stemX, stemX);\n }\n L('Rendering ', this.isChord() ? 'chord :' : 'note :', this.keys);\n // Apply the overall style -- may be contradicted by local settings:\n this.applyStyle();\n ctx.openGroup('stavenote', this.getAttribute('id'));\n this.drawLedgerLines();\n if (shouldRenderStem)\n this.drawStem();\n this.drawNoteHeads();\n this.drawFlag();\n ctx.closeGroup();\n this.restoreStyle();\n this.setRendered();\n }\n}\nStaveNote.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveTie extends Element {\n /**\n * @param notes is a struct that has:\n *\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n *\n * @param text\n */\n constructor(notes, text) {\n super();\n this.setNotes(notes);\n this.text = text;\n this.render_options = {\n cp1: 8,\n cp2: 12,\n text_shift_x: 0,\n first_x_shift: 0,\n last_x_shift: 0,\n y_shift: 7,\n tie_spacing: 0,\n };\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveTie;\n }\n setDirection(direction) {\n this.direction = direction;\n return this;\n }\n /**\n * Set the notes to attach this tie to.\n *\n * @param {!Object} notes The notes to tie up.\n */\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Tie needs to have either first_note or last_note set.');\n }\n if (!notes.first_indices) {\n notes.first_indices = [0];\n }\n if (!notes.last_indices) {\n notes.last_indices = [0];\n }\n if (notes.first_indices.length !== notes.last_indices.length) {\n throw new RuntimeError('BadArguments', 'Tied notes must have same number of indices.');\n }\n this.notes = notes;\n return this;\n }\n /**\n * @return {boolean} Returns true if this is a partial bar.\n */\n isPartial() {\n return !this.notes.first_note || !this.notes.last_note;\n }\n renderTie(params) {\n if (params.first_ys.length === 0 || params.last_ys.length === 0) {\n throw new RuntimeError('BadArguments', 'No Y-values to render');\n }\n const ctx = this.checkContext();\n let cp1 = this.render_options.cp1;\n let cp2 = this.render_options.cp2;\n if (Math.abs(params.last_x_px - params.first_x_px) < 10) {\n cp1 = 2;\n cp2 = 8;\n }\n const first_x_shift = this.render_options.first_x_shift;\n const last_x_shift = this.render_options.last_x_shift;\n const y_shift = this.render_options.y_shift * params.direction;\n // setNotes(...) verified that first_indices and last_indices are not undefined.\n // As a result, we use the ! non-null assertion operator here.\n // eslint-disable-next-line\n const first_indices = this.notes.first_indices;\n // eslint-disable-next-line\n const last_indices = this.notes.last_indices;\n for (let i = 0; i < first_indices.length; ++i) {\n const cp_x = (params.last_x_px + last_x_shift + (params.first_x_px + first_x_shift)) / 2;\n const first_y_px = params.first_ys[first_indices[i]] + y_shift;\n const last_y_px = params.last_ys[last_indices[i]] + y_shift;\n if (isNaN(first_y_px) || isNaN(last_y_px)) {\n throw new RuntimeError('BadArguments', 'Bad indices for tie rendering.');\n }\n const top_cp_y = (first_y_px + last_y_px) / 2 + cp1 * params.direction;\n const bottom_cp_y = (first_y_px + last_y_px) / 2 + cp2 * params.direction;\n ctx.openGroup('stavetie', this.getAttribute('id'));\n ctx.beginPath();\n ctx.moveTo(params.first_x_px + first_x_shift, first_y_px);\n ctx.quadraticCurveTo(cp_x, top_cp_y, params.last_x_px + last_x_shift, last_y_px);\n ctx.quadraticCurveTo(cp_x, bottom_cp_y, params.first_x_px + first_x_shift, first_y_px);\n ctx.closePath();\n ctx.fill();\n ctx.closeGroup();\n }\n }\n renderText(first_x_px, last_x_px) {\n var _a, _b, _c;\n if (!this.text)\n return;\n const ctx = this.checkContext();\n let center_x = (first_x_px + last_x_px) / 2;\n center_x -= ctx.measureText(this.text).width / 2;\n const stave = (_b = (_a = this.notes.first_note) === null || _a === void 0 ? void 0 : _a.checkStave()) !== null && _b !== void 0 ? _b : (_c = this.notes.last_note) === null || _c === void 0 ? void 0 : _c.checkStave();\n if (stave) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText(this.text, center_x + this.render_options.text_shift_x, stave.getYForTopText() - 1);\n ctx.restore();\n }\n }\n /**\n * Returns the TieNotes structure of the first and last note this tie connects.\n */\n getNotes() {\n return this.notes;\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const first_note = this.notes.first_note;\n const last_note = this.notes.last_note;\n // Provide some default values so the compiler doesn't complain.\n let first_x_px = 0;\n let last_x_px = 0;\n let first_ys = [0];\n let last_ys = [0];\n let stem_direction = 0;\n if (first_note) {\n first_x_px = first_note.getTieRightX() + this.render_options.tie_spacing;\n stem_direction = first_note.getStemDirection();\n first_ys = first_note.getYs();\n }\n else if (last_note) {\n const stave = last_note.checkStave();\n first_x_px = stave.getTieStartX();\n first_ys = last_note.getYs();\n this.notes.first_indices = this.notes.last_indices;\n }\n if (last_note) {\n last_x_px = last_note.getTieLeftX() + this.render_options.tie_spacing;\n stem_direction = last_note.getStemDirection();\n last_ys = last_note.getYs();\n }\n else if (first_note) {\n const stave = first_note.checkStave();\n last_x_px = stave.getTieEndX();\n last_ys = first_note.getYs();\n this.notes.last_indices = this.notes.first_indices;\n }\n if (this.direction) {\n stem_direction = this.direction;\n }\n this.renderTie({\n first_x_px,\n last_x_px,\n first_ys,\n last_ys,\n direction: stem_direction,\n });\n this.renderText(first_x_px, last_x_px);\n return true;\n }\n}\n/** Default text font. */\nStaveTie.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","// / [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { StaveTie } from './stavetie';\nimport { Category } from './typeguard';\nexport class TabTie extends StaveTie {\n static get CATEGORY() {\n return Category.TabTie;\n }\n static createHammeron(notes) {\n return new TabTie(notes, 'H');\n }\n static createPulloff(notes) {\n return new TabTie(notes, 'P');\n }\n /**\n * @param notes is a struct that has:\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n *\n * @param text\n */\n constructor(notes, text) {\n super(notes, text);\n this.render_options.cp1 = 9;\n this.render_options.cp2 = 11;\n this.render_options.y_shift = 3;\n this.direction = -1; // Tab tie's are always face up.\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var VoiceMode;\n(function (VoiceMode) {\n VoiceMode[VoiceMode[\"STRICT\"] = 1] = \"STRICT\";\n VoiceMode[VoiceMode[\"SOFT\"] = 2] = \"SOFT\";\n VoiceMode[VoiceMode[\"FULL\"] = 3] = \"FULL\";\n})(VoiceMode || (VoiceMode = {}));\n/**\n * `Voice` is mainly a container object to group `Tickables` for formatting.\n */\nexport class Voice extends Element {\n constructor(time) {\n super();\n this.resolutionMultiplier = 1;\n this.mode = VoiceMode.STRICT;\n this.preFormatted = false;\n this.ticksUsed = new Fraction(0, 1);\n this.largestTickWidth = 0;\n this.tickables = [];\n this.options = {\n softmaxFactor: Tables.SOFTMAX_FACTOR,\n };\n // Convert the `time` string into a VoiceTime object if necessary.\n let voiceTime;\n if (typeof time === 'string') {\n // Time signature shortcut: \"4/4\", \"3/8\", etc.\n const match = time.match(/(\\d+)\\/(\\d+)/);\n if (match) {\n voiceTime = {\n num_beats: parseInt(match[1]),\n beat_value: parseInt(match[2]),\n };\n }\n }\n else {\n voiceTime = time;\n }\n // Default time signature is 4/4.\n this.time = Object.assign({ num_beats: 4, beat_value: 4, resolution: Tables.RESOLUTION }, voiceTime);\n // Recalculate total ticks.\n this.totalTicks = new Fraction(this.time.num_beats * (this.time.resolution / this.time.beat_value), 1);\n this.smallestTickCount = this.totalTicks.clone();\n }\n static get CATEGORY() {\n return Category.Voice;\n }\n /**\n * Modes allow the addition of ticks in three different ways:\n * - STRICT: This is the default. Ticks must fill the voice.\n * - SOFT: Ticks can be added without restrictions.\n * - FULL: Ticks do not need to fill the voice, but can't exceed the maximum tick length.\n */\n static get Mode() {\n return VoiceMode;\n }\n /** Get the total ticks in the voice. */\n getTotalTicks() {\n return this.totalTicks;\n }\n /** Get the total ticks used in the voice by all the tickables. */\n getTicksUsed() {\n return this.ticksUsed;\n }\n /** Get the largest width of all the tickables. */\n getLargestTickWidth() {\n return this.largestTickWidth;\n }\n /** Get the tick count for the shortest tickable */\n getSmallestTickCount() {\n return this.smallestTickCount;\n }\n /** Get the tickables in the voice. */\n getTickables() {\n return this.tickables;\n }\n /** Get the voice mode. */\n getMode() {\n return this.mode;\n }\n /**\n * Set the voice mode.\n * @param mode value from `VoiceMode`\n */\n setMode(mode) {\n this.mode = mode;\n return this;\n }\n /** Get the resolution multiplier for the voice. */\n getResolutionMultiplier() {\n return this.resolutionMultiplier;\n }\n /** Get the actual tick resolution for the voice. */\n getActualResolution() {\n return this.resolutionMultiplier * this.time.resolution;\n }\n /** Set the voice's stave. */\n setStave(stave) {\n this.stave = stave;\n // Reset the bounding box so we can reformat.\n this.boundingBox = undefined;\n return this;\n }\n getStave() {\n return this.stave;\n }\n /** Get the bounding box for the voice. */\n getBoundingBox() {\n if (!this.boundingBox) {\n const stave = this.checkStave();\n let boundingBox = undefined;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n tickable.setStave(stave);\n const bb = tickable.getBoundingBox();\n if (bb) {\n boundingBox = boundingBox ? boundingBox.mergeWith(bb) : bb;\n }\n }\n this.boundingBox = boundingBox;\n }\n return this.boundingBox;\n }\n /** Set the voice mode to strict or soft. */\n setStrict(strict) {\n this.mode = strict ? VoiceMode.STRICT : VoiceMode.SOFT;\n return this;\n }\n /** Determine if the voice is complete according to the voice mode. */\n isComplete() {\n if (this.mode === VoiceMode.STRICT || this.mode === VoiceMode.FULL) {\n return this.ticksUsed.equals(this.totalTicks);\n }\n else {\n return true;\n }\n }\n /**\n * We use softmax to layout the tickables proportional to the exponent of\n * their duration. The softmax factor is used to determine the 'linearness' of\n * the layout.\n *\n * The softmax of all the tickables in this voice should sum to 1.\n */\n setSoftmaxFactor(factor) {\n this.options.softmaxFactor = factor;\n return this;\n }\n /**\n * Calculate the sum of the exponents of all the ticks in this voice to use\n * as the denominator of softmax.\n */\n reCalculateExpTicksUsed() {\n const totalTicks = this.ticksUsed.value();\n const exp = (tickable) => Math.pow(this.options.softmaxFactor, tickable.getTicks().value() / totalTicks);\n this.expTicksUsed = this.tickables.map(exp).reduce((a, b) => a + b, 0);\n return this.expTicksUsed;\n }\n /** Get the softmax-scaled value of a tick duration. 'tickValue' is a number. */\n softmax(tickValue) {\n if (!this.expTicksUsed) {\n this.expTicksUsed = this.reCalculateExpTicksUsed();\n }\n const totalTicks = this.ticksUsed.value();\n const exp = (v) => Math.pow(this.options.softmaxFactor, v / totalTicks);\n const sm = exp(tickValue) / this.expTicksUsed;\n return sm;\n }\n /** Add a tickable to the voice. */\n addTickable(tickable) {\n if (!tickable.shouldIgnoreTicks()) {\n const ticks = tickable.getTicks();\n // Update the total ticks for this line.\n this.ticksUsed.add(ticks);\n this.expTicksUsed = 0; // reset\n if ((this.mode === VoiceMode.STRICT || this.mode === VoiceMode.FULL) &&\n this.ticksUsed.greaterThan(this.totalTicks)) {\n this.ticksUsed.subtract(ticks);\n throw new RuntimeError('BadArgument', 'Too many ticks.');\n }\n // Track the smallest tickable for formatting.\n if (ticks.lessThan(this.smallestTickCount)) {\n this.smallestTickCount = ticks.clone();\n }\n this.resolutionMultiplier = this.ticksUsed.denominator;\n // Expand total ticks using denominator from ticks used.\n this.totalTicks.add(0, this.ticksUsed.denominator);\n }\n // Add the tickable to the line.\n this.tickables.push(tickable);\n tickable.setVoice(this);\n return this;\n }\n /** Add an array of tickables to the voice. */\n addTickables(tickables) {\n for (let i = 0; i < tickables.length; ++i) {\n this.addTickable(tickables[i]);\n }\n return this;\n }\n /** Preformat the voice by applying the voice's stave to each note. */\n preFormat() {\n if (this.preFormatted)\n return this;\n const stave = this.checkStave();\n this.tickables.forEach((tickable) => {\n if (!tickable.getStave()) {\n tickable.setStave(stave);\n }\n });\n this.preFormatted = true;\n return this;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n /**\n * Render the voice onto the canvas `context` and an optional `stave`.\n * If `stave` is omitted, it is expected that the notes have staves\n * already set.\n *\n * This method also calculates the voice's boundingBox while drawing\n * the notes. Note the similarities with this.getBoundingBox().\n */\n draw(context = this.checkContext(), stave) {\n stave = stave !== null && stave !== void 0 ? stave : this.stave;\n this.setRendered();\n let boundingBox = undefined;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n // Set the stave if provided.\n if (stave) {\n tickable.setStave(stave);\n }\n defined(tickable.getStave(), 'MissingStave', 'The voice cannot draw tickables without staves.');\n const bb = tickable.getBoundingBox();\n if (bb) {\n boundingBox = boundingBox ? boundingBox.mergeWith(bb) : bb;\n }\n tickable.setContext(context);\n tickable.drawWithStyle();\n }\n this.boundingBox = boundingBox;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This file implements `GraceNoteGroup` which is used to format and\n// render grace notes.\nimport { Beam } from './beam';\nimport { Formatter } from './formatter';\nimport { Modifier } from './modifier';\nimport { StaveNote } from './stavenote';\nimport { StaveTie } from './stavetie';\nimport { Tables } from './tables';\nimport { TabTie } from './tabtie';\nimport { Category, isStaveNote } from './typeguard';\nimport { log } from './util';\nimport { Voice } from './voice';\n// To enable logging for this class. Set `GraceNoteGroup.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (GraceNoteGroup.DEBUG)\n log('Vex.Flow.GraceNoteGroup', args);\n}\n/** GraceNoteGroup is used to format and render grace notes. */\nexport class GraceNoteGroup extends Modifier {\n //** `GraceNoteGroup` inherits from `Modifier` and is placed inside a `ModifierContext`. */\n constructor(grace_notes, show_slur) {\n super();\n this.preFormatted = false;\n this.position = Modifier.Position.LEFT;\n this.grace_notes = grace_notes;\n this.width = 0;\n this.show_slur = show_slur;\n this.slur = undefined;\n this.voice = new Voice({\n num_beats: 4,\n beat_value: 4,\n resolution: Tables.RESOLUTION,\n }).setStrict(false);\n this.render_options = {\n slur_y_shift: 0,\n };\n this.beams = [];\n this.voice.addTickables(this.grace_notes);\n return this;\n }\n static get CATEGORY() {\n return Category.GraceNoteGroup;\n }\n /** Arranges groups inside a `ModifierContext`. */\n static format(gracenote_groups, state) {\n const group_spacing_stave = 4;\n const group_spacing_tab = 0;\n if (!gracenote_groups || gracenote_groups.length === 0)\n return false;\n const group_list = [];\n let prev_note = null;\n let shiftL = 0;\n for (let i = 0; i < gracenote_groups.length; ++i) {\n const gracenote_group = gracenote_groups[i];\n const note = gracenote_group.getNote();\n const is_stavenote = isStaveNote(note);\n const spacing = is_stavenote ? group_spacing_stave : group_spacing_tab;\n if (is_stavenote && note !== prev_note) {\n // Iterate through all notes to get the displaced pixels\n for (let n = 0; n < note.keys.length; ++n) {\n shiftL = Math.max(note.getLeftDisplacedHeadPx(), shiftL);\n }\n prev_note = note;\n }\n group_list.push({ shift: shiftL, gracenote_group, spacing });\n }\n // If first note left shift in case it is displaced\n let group_shift = group_list[0].shift;\n let formatWidth;\n for (let i = 0; i < group_list.length; ++i) {\n const gracenote_group = group_list[i].gracenote_group;\n gracenote_group.preFormat();\n formatWidth = gracenote_group.getWidth() + group_list[i].spacing;\n group_shift = Math.max(formatWidth, group_shift);\n }\n for (let i = 0; i < group_list.length; ++i) {\n const gracenote_group = group_list[i].gracenote_group;\n formatWidth = gracenote_group.getWidth() + group_list[i].spacing;\n gracenote_group.setSpacingFromNextModifier(group_shift - Math.min(formatWidth, group_shift) + StaveNote.minNoteheadPadding);\n }\n state.left_shift += group_shift;\n return true;\n }\n preFormat() {\n if (this.preFormatted)\n return;\n if (!this.formatter) {\n this.formatter = new Formatter();\n }\n this.formatter.joinVoices([this.voice]).format([this.voice], 0, {});\n this.setWidth(this.formatter.getMinTotalWidth());\n this.preFormatted = true;\n }\n beamNotes(grace_notes) {\n grace_notes = grace_notes || this.grace_notes;\n if (grace_notes.length > 1) {\n const beam = new Beam(grace_notes);\n beam.render_options.beam_width = 3;\n beam.render_options.partial_beam_length = 4;\n this.beams.push(beam);\n }\n return this;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getWidth() {\n return this.width + StaveNote.minNoteheadPadding;\n }\n getGraceNotes() {\n return this.grace_notes;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n L('Drawing grace note group for:', note);\n this.alignSubNotesWithNote(this.getGraceNotes(), note); // Modifier function\n // Draw grace notes.\n this.grace_notes.forEach((graceNote) => graceNote.setContext(ctx).draw());\n // Draw beams.\n this.beams.forEach((beam) => beam.setContext(ctx).draw());\n if (this.show_slur) {\n // Create and draw slur.\n const is_stavenote = isStaveNote(note);\n const TieClass = is_stavenote ? StaveTie : TabTie;\n this.slur = new TieClass({\n last_note: this.grace_notes[0],\n first_note: note,\n first_indices: [0],\n last_indices: [0],\n });\n this.slur.render_options.cp2 = 12;\n this.slur.render_options.y_shift = (is_stavenote ? 7 : 5) + this.render_options.slur_y_shift;\n this.slur.setContext(ctx).draw();\n }\n }\n}\nGraceNoteGroup.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2016\n//\n// ## Description\n//\n// This file implements `NoteSubGroup` which is used to format and\n// render notes as a `Modifier`\n// ex) ClefNote, TimeSigNote and BarNote.\nimport { Formatter } from './formatter';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { Voice } from './voice';\nexport class NoteSubGroup extends Modifier {\n constructor(subNotes) {\n super();\n this.preFormatted = false;\n this.position = Modifier.Position.LEFT;\n this.subNotes = subNotes;\n this.subNotes.forEach((subNote) => {\n subNote.setIgnoreTicks(false);\n });\n this.width = 0;\n this.formatter = new Formatter();\n this.voice = new Voice({\n num_beats: 4,\n beat_value: 4,\n resolution: Tables.RESOLUTION,\n }).setStrict(false);\n this.voice.addTickables(this.subNotes);\n }\n static get CATEGORY() {\n return Category.NoteSubGroup;\n }\n // Arrange groups inside a `ModifierContext`\n static format(groups, state) {\n if (!groups || groups.length === 0)\n return false;\n let width = 0;\n for (let i = 0; i < groups.length; ++i) {\n const group = groups[i];\n group.preFormat();\n width += group.getWidth();\n }\n state.left_shift += width;\n return true;\n }\n preFormat() {\n if (this.preFormatted)\n return;\n this.formatter.joinVoices([this.voice]).format([this.voice], 0);\n this.setWidth(this.formatter.getMinTotalWidth());\n this.preFormatted = true;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getWidth() {\n return this.width;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n this.alignSubNotesWithNote(this.subNotes, note); // Modifier function\n this.subNotes.forEach((subNote) => subNote.setContext(ctx).drawWithStyle());\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// A formatter for abstract tickable objects, such as notes, chords,\n// tabs, etc.\nimport { Fraction } from './fraction';\nimport { RuntimeError } from './util';\n/**\n * TickContext formats abstract tickable objects, such as notes, chords, tabs, etc.\n */\nexport class TickContext {\n constructor(options) {\n this.preFormatted = false;\n this.postFormatted = false;\n this.tickID = options && options.tickID ? options.tickID : 0;\n this.currentTick = new Fraction(0, 1);\n this.maxTicks = new Fraction(0, 1);\n this.maxTickable = undefined; // Biggest tickable\n this.minTicks = undefined; // this can remian null if all tickables have ignore_ticks\n this.minTickable = undefined;\n this.padding = 1; // padding on each side (width += padding * 2)\n this.x = 0;\n this.xBase = 0; // base x position without xOffset\n this.xOffset = 0; // xBase and xOffset are an alternative way to describe x (x = xB + xO)\n this.tickables = []; // Notes, tabs, chords, lyrics.\n this.tickablesByVoice = {}; // Tickables indexed by voice number\n // Formatting metrics\n this.notePx = 0; // width of widest note in this context\n this.glyphPx = 0; // width of glyph (note head)\n this.leftDisplacedHeadPx = 0; // Extra left pixels for displaced notes\n this.rightDisplacedHeadPx = 0; // Extra right pixels for displaced notes\n this.modLeftPx = 0; // Left modifier pixels\n this.modRightPx = 0; // Right modifier pixels\n this.totalLeftPx = 0; // Total left pixels\n this.totalRightPx = 0; // Total right pixels\n this.tContexts = []; // Parent array of tick contexts\n this.width = 0;\n this.formatterMetrics = {\n // The freedom of a tickcontext is the distance it can move without colliding\n // with neighboring elements. A formatter can set these values during its\n // formatting pass, which a different formatter can then use to fine tune.\n freedom: { left: 0, right: 0 },\n };\n }\n static getNextContext(tContext) {\n const contexts = tContext.tContexts;\n const index = contexts.indexOf(tContext);\n if (index + 1 < contexts.length)\n return contexts[index + 1];\n }\n getTickID() {\n return this.tickID;\n }\n getX() {\n return this.x;\n }\n setX(x) {\n this.x = x;\n this.xBase = x;\n this.xOffset = 0;\n return this;\n }\n getXBase() {\n return this.xBase;\n } // use of xBase and xOffset is optional, avoids offset creep\n setXBase(xBase) {\n this.xBase = xBase;\n this.x = xBase + this.xOffset;\n }\n getXOffset() {\n return this.xOffset;\n }\n setXOffset(xOffset) {\n this.xOffset = xOffset;\n this.x = this.xBase + xOffset;\n }\n getWidth() {\n return this.width + this.padding * 2;\n }\n setPadding(padding) {\n this.padding = padding;\n return this;\n }\n getMaxTicks() {\n return this.maxTicks;\n }\n getMinTicks() {\n return this.minTicks;\n }\n getMaxTickable() {\n return this.maxTickable;\n }\n getMinTickable() {\n return this.minTickable;\n }\n getTickables() {\n return this.tickables;\n }\n /**\n * Introduced on 2020-04-17 as getTickablesForVoice(voiceIndex).\n * https://github.com/0xfe/vexflow/blame/dc97b0cc5bb93171c0038638c34362dc958222ca/src/tickcontext.js#L63\n * Renamed on 2021-08-05 to getTickableForVoice(voiceIndex). Method renamed to singular, since it returns one Tickable.\n */\n getTickableForVoice(voiceIndex) {\n return this.tickablesByVoice[voiceIndex];\n }\n getTickablesByVoice() {\n return this.tickablesByVoice;\n }\n getCenterAlignedTickables() {\n return this.tickables.filter((tickable) => tickable.isCenterAligned());\n }\n /** Gets widths context, note and left/right modifiers for formatting. */\n getMetrics() {\n const { width, glyphPx, notePx, leftDisplacedHeadPx, rightDisplacedHeadPx, modLeftPx, modRightPx, totalLeftPx, totalRightPx, } = this;\n return {\n width,\n glyphPx,\n notePx,\n leftDisplacedHeadPx,\n rightDisplacedHeadPx,\n modLeftPx,\n modRightPx,\n totalLeftPx,\n totalRightPx,\n };\n }\n getCurrentTick() {\n return this.currentTick;\n }\n setCurrentTick(tick) {\n this.currentTick = tick;\n this.preFormatted = false;\n }\n addTickable(tickable, voiceIndex) {\n if (!tickable) {\n throw new RuntimeError('BadArgument', 'Invalid tickable added.');\n }\n if (!tickable.shouldIgnoreTicks()) {\n const ticks = tickable.getTicks();\n if (ticks.greaterThan(this.maxTicks)) {\n this.maxTicks = ticks.clone();\n this.maxTickable = tickable;\n }\n if (this.minTicks == null) {\n this.minTicks = ticks.clone();\n this.minTickable = tickable;\n }\n else if (ticks.lessThan(this.minTicks)) {\n this.minTicks = ticks.clone();\n this.minTickable = tickable;\n }\n }\n tickable.setTickContext(this);\n this.tickables.push(tickable);\n this.tickablesByVoice[voiceIndex || 0] = tickable;\n this.preFormatted = false;\n return this;\n }\n preFormat() {\n if (this.preFormatted)\n return this;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n tickable.preFormat();\n const metrics = tickable.getMetrics();\n // Maintain max displaced head pixels from all tickables in the context\n this.leftDisplacedHeadPx = Math.max(this.leftDisplacedHeadPx, metrics.leftDisplacedHeadPx);\n this.rightDisplacedHeadPx = Math.max(this.rightDisplacedHeadPx, metrics.rightDisplacedHeadPx);\n // Maintain the widest note for all tickables in the context\n this.notePx = Math.max(this.notePx, metrics.notePx);\n // Maintain the widest note head\n this.glyphPx = Math.max(this.glyphPx, metrics.glyphWidth || 0);\n // Total modifier shift\n this.modLeftPx = Math.max(this.modLeftPx, metrics.modLeftPx);\n this.modRightPx = Math.max(this.modRightPx, metrics.modRightPx);\n // Total shift\n this.totalLeftPx = Math.max(this.totalLeftPx, metrics.modLeftPx + metrics.leftDisplacedHeadPx);\n this.totalRightPx = Math.max(this.totalRightPx, metrics.modRightPx + metrics.rightDisplacedHeadPx);\n // Recalculate the tick context total width\n this.width = this.notePx + this.totalLeftPx + this.totalRightPx;\n }\n return this;\n }\n postFormat() {\n if (this.postFormatted)\n return this;\n this.postFormatted = true;\n return this;\n }\n getFormatterMetrics() {\n return this.formatterMetrics;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TickContext } from './tickcontext';\nimport { Category, isTabNote } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Ornament.DEBUG)\n log('Vex.Flow.Ornament', args);\n}\n/**\n * Ornament implements ornaments as modifiers that can be\n * attached to notes. The complete list of ornaments is available in\n * `tables.ts` under `Vex.Flow.ornamentCodes`.\n *\n * See `tests/ornament_tests.ts` for usage examples.\n */\nexport class Ornament extends Modifier {\n /**\n * Create a new ornament of type `type`, which is an entry in\n * `Vex.Flow.ornamentCodes` in `tables.ts`.\n */\n constructor(type) {\n super();\n this.type = type;\n this.delayed = false;\n this.render_options = {\n font_scale: 38,\n accidentalLowerPadding: 3,\n accidentalUpperPadding: 3,\n };\n this.ornament = Tables.ornamentCodes(this.type);\n // new ornaments have their origin at the origin, and have more specific\n // metrics. Legacy ornaments do some\n // x scaling, and have hard-coded metrics\n const metrics = this.getMetrics();\n // some jazz ornaments are above or below depending on stem direction.\n this.adjustForStemDirection = false;\n // some jazz ornaments like falls are supposed to overlap with future bars\n // and so we report a different width than they actually take up.\n this.reportedWidth = metrics && metrics.reportedWidth ? metrics.reportedWidth : 0;\n this.stemUpYOffset = metrics && metrics.stemUpYOffset ? metrics.stemUpYOffset : 0;\n this.ornamentAlignWithNoteHead = Ornament.ornamentAlignWithNoteHead.indexOf(this.type) >= 0;\n if (!this.ornament) {\n throw new RuntimeError('ArgumentError', `Ornament not found: '${this.type}'`);\n }\n this.x_shift = metrics ? metrics.xOffset : 0;\n this.y_shift = metrics ? metrics.yOffset : 0;\n this.glyph = new Glyph(this.ornament.code, this.render_options.font_scale, {\n category: `ornament.${this.ornament.code}`,\n });\n // Is this a jazz ornament that goes between this note and the next note.\n if (Ornament.ornamentNoteTransition.indexOf(this.type) >= 0) {\n this.delayed = true;\n }\n // Legacy ornaments need this. I don't know why, but horizontal spacing issues\n // happen if I don't set it.\n if (!metrics) {\n this.glyph.setOrigin(0.5, 1.0); // FIXME: SMuFL won't require a vertical origin shift\n }\n }\n /** Ornaments category string. */\n static get CATEGORY() {\n return Category.Ornament;\n }\n static get minPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Arrange ornaments inside `ModifierContext` */\n static format(ornaments, state) {\n if (!ornaments || ornaments.length === 0)\n return false;\n let width = 0; // width is used by ornaments, which are always centered on the note head\n let right_shift = state.right_shift; // jazz ornaments calculate r/l shift separately\n let left_shift = state.left_shift;\n let yOffset = 0;\n for (let i = 0; i < ornaments.length; ++i) {\n const ornament = ornaments[i];\n const increment = 2;\n if (Ornament.ornamentRelease.indexOf(ornament.type) >= 0) {\n ornament.x_shift += right_shift + 2;\n }\n if (Ornament.ornamentAttack.indexOf(ornament.type) >= 0) {\n ornament.x_shift -= left_shift + 2;\n }\n if (ornament.reportedWidth && ornament.x_shift < 0) {\n left_shift += ornament.reportedWidth;\n }\n else if (ornament.reportedWidth && ornament.x_shift >= 0) {\n right_shift += ornament.reportedWidth + Ornament.minPadding;\n }\n else {\n width = Math.max(ornament.getWidth(), width);\n }\n // articulations above/below the line can be stacked.\n if (Ornament.ornamentArticulation.indexOf(ornament.type) >= 0) {\n // Unfortunately we don't know the stem direction. So we base it\n // on the line number, but also allow it to be overridden.\n const ornamentNote = defined(ornament.note, 'NoAttachedNote');\n if (ornamentNote.getLineNumber() >= 3 || ornament.getPosition() === Modifier.Position.ABOVE) {\n state.top_text_line += increment;\n ornament.y_shift += yOffset;\n yOffset -= ornament.glyph.bbox.getH();\n }\n else {\n state.text_line += increment;\n ornament.y_shift += yOffset;\n yOffset += ornament.glyph.bbox.getH();\n }\n }\n else {\n if (ornament.getPosition() === Modifier.Position.ABOVE) {\n ornament.setTextLine(state.top_text_line);\n state.top_text_line += increment;\n }\n else {\n ornament.setTextLine(state.text_line);\n state.text_line += increment;\n }\n }\n }\n // Note: 'legit' ornaments don't consider other modifiers when calculating their\n // X position, but jazz ornaments sometimes need to.\n state.left_shift = left_shift + width / 2;\n state.right_shift = right_shift + width / 2;\n return true;\n }\n /**\n * ornamentNoteTransition means the jazz ornament represents an effect from one note to another,\n * these are generally on the top of the staff.\n */\n static get ornamentNoteTransition() {\n return ['flip', 'jazzTurn', 'smear'];\n }\n /**\n * ornamentAttack indicates something that happens in the attach, placed before the note and\n * any accidentals\n */\n static get ornamentAttack() {\n return ['scoop'];\n }\n /**\n * The ornament is aligned based on the note head, but without regard to whether the\n * stem goes up or down.\n */\n static get ornamentAlignWithNoteHead() {\n return ['doit', 'fall', 'fallLong', 'doitLong', 'bend', 'plungerClosed', 'plungerOpen', 'scoop'];\n }\n /**\n * An ornament that happens on the release of the note, generally placed after the\n * note and overlapping the next beat/measure..\n */\n static get ornamentRelease() {\n return ['doit', 'fall', 'fallLong', 'doitLong', 'jazzTurn', 'smear', 'flip'];\n }\n /** ornamentArticulation goes above/below the note based on space availablity */\n static get ornamentArticulation() {\n return ['bend', 'plungerClosed', 'plungerOpen'];\n }\n /**\n * Legacy ornaments have hard-coded metrics. If additional ornament types are\n * added, get their metrics here.\n */\n // eslint-disable-next-line\n getMetrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.jazzOrnaments[this.ornament.code];\n }\n /** Set whether the ornament is to be delayed. */\n setDelayed(delayed) {\n this.delayed = delayed;\n return this;\n }\n /** Set the upper accidental for the ornament. */\n setUpperAccidental(accid) {\n const scale = this.render_options.font_scale / 1.3;\n this.accidentalUpper = new Glyph(Tables.accidentalCodes(accid).code, scale);\n this.accidentalUpper.setOrigin(0.5, 1.0);\n return this;\n }\n /** Set the lower accidental for the ornament. */\n setLowerAccidental(accid) {\n const scale = this.render_options.font_scale / 1.3;\n this.accidentalLower = new Glyph(Tables.accidentalCodes(accid).code, scale);\n this.accidentalLower.setOrigin(0.5, 1.0);\n return this;\n }\n /** Render ornament in position next to note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stemDir = note.getStemDirection();\n const stave = note.checkStave();\n ctx.openGroup('ornament', this.getAttribute('id'));\n // Get stem extents\n const stemExtents = note.checkStem().getExtents();\n let y = stemDir === Stem.DOWN ? stemExtents.baseY : stemExtents.topY;\n // TabNotes don't have stems attached to them. Tab stems are rendered outside the stave.\n if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDir === Stem.DOWN) {\n y = stave.getYForTopText(this.text_line);\n }\n }\n else {\n // Without a stem\n y = stave.getYForTopText(this.text_line);\n }\n }\n const isPlacedOnNoteheadSide = stemDir === Stem.DOWN;\n const spacing = stave.getSpacingBetweenLines();\n let lineSpacing = 1;\n // Beamed stems are longer than quarter note stems, adjust accordingly\n if (!isPlacedOnNoteheadSide && note.hasBeam()) {\n lineSpacing += 0.5;\n }\n const totalSpacing = spacing * (this.text_line + lineSpacing);\n const glyphYBetweenLines = y - totalSpacing;\n // Get initial coordinates for the modifier position\n const start = note.getModifierStartXY(this.position, this.index);\n let glyphX = start.x;\n // If the ornament is aligned with the note head, don't consider the stave y\n // but use the 'natural' modifier y\n let glyphY = this.ornamentAlignWithNoteHead\n ? start.y\n : Math.min(stave.getYForTopText(this.text_line), glyphYBetweenLines);\n glyphY += this.y_shift;\n // Ajdust x position if ornament is delayed\n if (this.delayed) {\n let delayXShift = 0;\n const startX = glyphX - (stave.getX() - 10);\n if (this.delayXShift !== undefined) {\n delayXShift = this.delayXShift;\n }\n else {\n delayXShift += this.glyph.getMetrics().width / 2;\n const nextContext = TickContext.getNextContext(note.getTickContext());\n if (nextContext) {\n delayXShift += (nextContext.getX() - startX) * 0.5;\n }\n else {\n delayXShift += (stave.getX() + stave.getWidth() - startX) * 0.5;\n }\n this.delayXShift = delayXShift;\n }\n glyphX += delayXShift;\n }\n L('Rendering ornament: ', this.ornament, glyphX, glyphY);\n if (this.accidentalLower) {\n this.accidentalLower.render(ctx, glyphX, glyphY);\n glyphY -= this.accidentalLower.getMetrics().height;\n glyphY -= this.render_options.accidentalLowerPadding;\n }\n if (this.stemUpYOffset && note.hasStem() && note.getStemDirection() === 1) {\n glyphY += this.stemUpYOffset;\n }\n if (note.getLineNumber() < 5 && Ornament.ornamentNoteTransition.indexOf(this.type) >= 0) {\n glyphY = note.checkStave().getBoundingBox().getY() + 40;\n }\n this.glyph.render(ctx, glyphX + this.x_shift, glyphY);\n if (this.accidentalUpper) {\n glyphY -= this.glyph.getMetrics().height + this.render_options.accidentalUpperPadding;\n this.accidentalUpper.render(ctx, glyphX, glyphY);\n }\n ctx.closeGroup();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Ornament.DEBUG` to `true`. */\nOrnament.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Rodrigo Vilar\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Tables } from './tables';\nimport { Category, isGraceNote } from './typeguard';\n/** Parenthesis implements parenthesis modifiers for notes. */\nexport class Parenthesis extends Modifier {\n /**\n * Constructor\n *\n * @param position Modifier.Position.LEFT (default) or Modifier.Position.RIGHT\n */\n constructor(position) {\n super();\n this.position = position !== null && position !== void 0 ? position : Modifier.Position.LEFT;\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.default.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.default.width'));\n }\n static get CATEGORY() {\n return Category.Parenthesis;\n }\n /** Add parentheses to the notes. */\n static buildAndAttach(notes) {\n for (const note of notes) {\n for (let i = 0; i < note.keys.length; i++) {\n note.addModifier(new Parenthesis(ModifierPosition.LEFT), i);\n note.addModifier(new Parenthesis(ModifierPosition.RIGHT), i);\n }\n }\n }\n /** Arrange parentheses inside a ModifierContext. */\n static format(parentheses, state) {\n if (!parentheses || parentheses.length === 0)\n return false;\n let x_widthL = 0;\n let x_widthR = 0;\n for (let i = 0; i < parentheses.length; ++i) {\n const parenthesis = parentheses[i];\n const note = parenthesis.getNote();\n const pos = parenthesis.getPosition();\n const index = parenthesis.checkIndex();\n let shift = 0;\n if (pos === ModifierPosition.RIGHT) {\n shift = note.getRightParenthesisPx(index);\n x_widthR = x_widthR > shift + parenthesis.width ? x_widthR : shift + parenthesis.width;\n }\n if (pos === ModifierPosition.LEFT) {\n shift = note.getLeftParenthesisPx(index);\n x_widthL = x_widthL > shift + parenthesis.width ? x_widthL : shift + parenthesis.width;\n }\n parenthesis.setXShift(shift);\n }\n state.left_shift += x_widthL;\n state.right_shift += x_widthR;\n return true;\n }\n /** Set the associated note. */\n setNote(note) {\n this.note = note;\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.default.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.default.width'));\n if (isGraceNote(note)) {\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.gracenote.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.gracenote.width'));\n }\n return this;\n }\n /** Render the parenthesis. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index, { forceFlagRight: true });\n const x = start.x + this.x_shift;\n const y = start.y + this.y_shift;\n if (this.position == Modifier.Position.RIGHT) {\n Glyph.renderGlyph(ctx, x + 1, y, this.point, 'noteheadParenthesisRight', {\n category: `noteHead.standard.noteheadParenthesisRight`,\n });\n }\n else if (this.position == Modifier.Position.LEFT) {\n Glyph.renderGlyph(ctx, x - 2, y, this.point, 'noteheadParenthesisLeft', {\n category: `noteHead.standard.noteheadParenthesisLeft`,\n });\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Ron B. Yeh\n// MIT License\n//\n// Utilities for working with Web APIs.\n// See: https://developer.mozilla.org/en-US/docs/Web/API\nimport { globalObject } from './util';\n// eslint-disable-next-line\nexport function isHTMLCanvas(element) {\n if (!element)\n return false;\n const global = globalObject();\n return (\n // It's either an instance of the HTMLCanvasElement class,\n (typeof global.HTMLCanvasElement === 'function' && element instanceof global.HTMLCanvasElement) ||\n // OR it's pretending to be a element. Good enough!\n // Do not rely on .tagName, because node-canvas doesn't provide a tagName.\n (typeof element.getContext === 'function' && typeof element.toDataURL === 'function'));\n}\n// eslint-disable-next-line\nexport function isHTMLDiv(element) {\n if (!element)\n return false;\n const global = globalObject();\n return (\n // It's either an instance of the HTMLDivElement class.\n (typeof global.HTMLDivElement === 'function' && element instanceof global.HTMLDivElement) ||\n // OR it's pretending to be a
. See: svgcontext.ts.\n (typeof element.appendChild === 'function' && typeof element.style === 'object'));\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from './font';\nimport { RenderContext } from './rendercontext';\nimport { globalObject, warn } from './util';\nimport { isHTMLCanvas } from './web';\n/**\n * A rendering context for the Canvas backend. This class serves as a proxy for the\n * underlying CanvasRenderingContext2D object, part of the browser's API.\n */\nexport class CanvasContext extends RenderContext {\n constructor(context) {\n super();\n /** Height of one line of text (in pixels). */\n this.textHeight = 0;\n this.context2D = context;\n if (!context.canvas) {\n this.canvas = {\n width: CanvasContext.WIDTH,\n height: CanvasContext.HEIGHT,\n };\n }\n else {\n this.canvas = context.canvas;\n }\n }\n static get WIDTH() {\n return 600;\n }\n static get HEIGHT() {\n return 400;\n }\n static get CANVAS_BROWSER_SIZE_LIMIT() {\n return 32767; // Chrome/Firefox. Could be determined more precisely by npm module canvas-size.\n }\n /**\n * Ensure that width and height do not exceed the browser limit.\n * @returns array of [width, height] clamped to the browser limit.\n */\n static sanitizeCanvasDims(width, height) {\n const limit = this.CANVAS_BROWSER_SIZE_LIMIT;\n if (Math.max(width, height) > limit) {\n warn('Canvas dimensions exceed browser limit. Cropping to ' + limit);\n if (width > limit) {\n width = limit;\n }\n if (height > limit) {\n height = limit;\n }\n }\n return [width, height];\n }\n /**\n * Set all pixels to transparent black rgba(0,0,0,0).\n */\n clear() {\n this.context2D.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n // eslint-disable-next-line\n openGroup(cls, id, attrs) {\n // Containers not implemented.\n }\n closeGroup() {\n // Containers not implemented.\n }\n // eslint-disable-next-line\n add(child) {\n // Containers not implemented.\n }\n setFillStyle(style) {\n this.context2D.fillStyle = style;\n return this;\n }\n /** CanvasContext ignores `setBackgroundFillStyle()`. */\n // eslint-disable-next-line\n setBackgroundFillStyle(style) {\n // DO NOTHING\n return this;\n }\n setStrokeStyle(style) {\n this.context2D.strokeStyle = style;\n return this;\n }\n setShadowColor(color) {\n this.context2D.shadowColor = color;\n return this;\n }\n setShadowBlur(blur) {\n // CanvasRenderingContext2D does not scale the shadow blur by the current\n // transform, so we have to do it manually. We assume uniform scaling\n // (though allow for rotation) because the blur can only be scaled\n // uniformly anyway.\n const t = this.context2D.getTransform();\n const scale = Math.sqrt(t.a * t.a + t.b * t.b + t.c * t.c + t.d * t.d);\n this.context2D.shadowBlur = scale * blur;\n return this;\n }\n setLineWidth(width) {\n this.context2D.lineWidth = width;\n return this;\n }\n setLineCap(capType) {\n this.context2D.lineCap = capType;\n return this;\n }\n setLineDash(dash) {\n this.context2D.setLineDash(dash);\n return this;\n }\n scale(x, y) {\n this.context2D.scale(x, y);\n return this;\n }\n resize(width, height) {\n const canvas = this.context2D.canvas;\n const devicePixelRatio = globalObject().devicePixelRatio || 1;\n // Scale the canvas size by the device pixel ratio clamping to the maximum supported size.\n [width, height] = CanvasContext.sanitizeCanvasDims(width * devicePixelRatio, height * devicePixelRatio);\n // Divide back down by the pixel ratio and convert to integers.\n width = (width / devicePixelRatio) | 0;\n height = (height / devicePixelRatio) | 0;\n canvas.width = width * devicePixelRatio;\n canvas.height = height * devicePixelRatio;\n // The canvas could be an instance of either HTMLCanvasElement or an OffscreenCanvas.\n // Only HTMLCanvasElement has a style attribute.\n if (isHTMLCanvas(canvas)) {\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n }\n return this.scale(devicePixelRatio, devicePixelRatio);\n }\n rect(x, y, width, height) {\n this.context2D.rect(x, y, width, height);\n return this;\n }\n fillRect(x, y, width, height) {\n this.context2D.fillRect(x, y, width, height);\n return this;\n }\n /**\n * Set the pixels in a rectangular area to transparent black rgba(0,0,0,0).\n */\n clearRect(x, y, width, height) {\n this.context2D.clearRect(x, y, width, height);\n return this;\n }\n beginPath() {\n this.context2D.beginPath();\n return this;\n }\n moveTo(x, y) {\n this.context2D.moveTo(x, y);\n return this;\n }\n lineTo(x, y) {\n this.context2D.lineTo(x, y);\n return this;\n }\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\n this.context2D.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n return this;\n }\n quadraticCurveTo(cpx, cpy, x, y) {\n this.context2D.quadraticCurveTo(cpx, cpy, x, y);\n return this;\n }\n arc(x, y, radius, startAngle, endAngle, counterclockwise) {\n this.context2D.arc(x, y, radius, startAngle, endAngle, counterclockwise);\n return this;\n }\n fill() {\n this.context2D.fill();\n return this;\n }\n stroke() {\n this.context2D.stroke();\n return this;\n }\n closePath() {\n this.context2D.closePath();\n return this;\n }\n measureText(text) {\n const metrics = this.context2D.measureText(text);\n let y = 0;\n let height = 0;\n if (metrics.fontBoundingBoxAscent) {\n y = -metrics.fontBoundingBoxAscent;\n height = metrics.fontBoundingBoxDescent + metrics.fontBoundingBoxAscent;\n }\n else {\n y = -metrics.actualBoundingBoxAscent;\n height = metrics.actualBoundingBoxDescent + metrics.actualBoundingBoxAscent;\n }\n // Return x, y, width & height in the same manner as svg getBBox\n return {\n x: 0,\n y: y,\n width: metrics.width,\n height: height,\n };\n }\n fillText(text, x, y) {\n this.context2D.fillText(text, x, y);\n return this;\n }\n save() {\n this.context2D.save();\n return this;\n }\n restore() {\n this.context2D.restore();\n return this;\n }\n set fillStyle(style) {\n this.context2D.fillStyle = style;\n }\n get fillStyle() {\n return this.context2D.fillStyle;\n }\n set strokeStyle(style) {\n this.context2D.strokeStyle = style;\n }\n get strokeStyle() {\n return this.context2D.strokeStyle;\n }\n /**\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n */\n setFont(f, size, weight, style) {\n const fontInfo = Font.validate(f, size, weight, style);\n this.context2D.font = Font.toCSSString(fontInfo);\n this.textHeight = Font.convertSizeToPixelValue(fontInfo.size);\n return this;\n }\n /** Return a string of the form `'italic bold 15pt Arial'` */\n getFont() {\n return this.context2D.font;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// @author Gregory Ristow (2015)\nimport { Font, FontStyle, FontWeight } from './font';\nimport { RenderContext } from './rendercontext';\nimport { normalizeAngle, prefix, RuntimeError } from './util';\n/** For a particular element type (e.g., rect), we will not apply certain presentation attributes. */\nconst ATTRIBUTES_TO_IGNORE = {\n path: {\n x: true,\n y: true,\n width: true,\n height: true,\n 'font-family': true,\n 'font-weight': true,\n 'font-style': true,\n 'font-size': true,\n },\n rect: {\n 'font-family': true,\n 'font-weight': true,\n 'font-style': true,\n 'font-size': true,\n },\n text: {\n width: true,\n height: true,\n },\n};\n/** Create the SVG in the SVG namespace. */\nconst SVG_NS = 'http://www.w3.org/2000/svg';\nconst TWO_PI = 2 * Math.PI;\nclass MeasureTextCache {\n constructor() {\n // The cache is keyed first by the text string, then by the font attributes\n // joined together.\n this.cache = {};\n }\n lookup(text, svg, attributes) {\n let entries = this.cache[text];\n if (entries === undefined) {\n entries = {};\n this.cache[text] = entries;\n }\n const family = attributes['font-family'];\n const size = attributes['font-size'];\n const weight = attributes['font-weight'];\n const style = attributes['font-style'];\n const key = `${family}%${size}%${weight}%${style}`;\n let entry = entries[key];\n if (entry === undefined) {\n entry = this.measureImpl(text, svg, attributes);\n entries[key] = entry;\n }\n return entry;\n }\n measureImpl(text, svg, attributes) {\n let txt = this.txt;\n if (!txt) {\n // Create the SVG text element that will be used to measure text in the event\n // of a cache miss.\n txt = document.createElementNS(SVG_NS, 'text');\n this.txt = txt;\n }\n txt.textContent = text;\n txt.setAttributeNS(null, 'font-family', attributes['font-family']);\n txt.setAttributeNS(null, 'font-size', attributes['font-size']);\n txt.setAttributeNS(null, 'font-style', attributes['font-style']);\n txt.setAttributeNS(null, 'font-weight', attributes['font-weight']);\n svg.appendChild(txt);\n const bbox = txt.getBBox();\n svg.removeChild(txt);\n return { x: bbox.x, y: bbox.y, width: bbox.width, height: bbox.height };\n }\n}\n/**\n * SVG rendering context with an API similar to CanvasRenderingContext2D.\n */\nexport class SVGContext extends RenderContext {\n constructor(element) {\n super();\n this.width = 0;\n this.height = 0;\n this.backgroundFillStyle = 'white';\n /** Formatted as CSS font shorthand (e.g., 'italic bold 12pt Arial') */\n this.fontCSSString = '';\n this.element = element;\n // Create a SVG element and add it to the container element.\n const svg = this.create('svg');\n this.element.appendChild(svg);\n this.svg = svg;\n this.parent = this.svg;\n this.groups = [this.svg];\n this.path = '';\n this.pen = { x: NaN, y: NaN };\n this.lineWidth = 1.0;\n const defaultFontAttributes = {\n 'font-family': Font.SANS_SERIF,\n 'font-size': Font.SIZE + 'pt',\n 'font-weight': FontWeight.NORMAL,\n 'font-style': FontStyle.NORMAL,\n };\n this.state = Object.assign({ scale: { x: 1, y: 1 } }, defaultFontAttributes);\n this.attributes = Object.assign({ 'stroke-width': 0.3, 'stroke-dasharray': 'none', fill: 'black', stroke: 'black' }, defaultFontAttributes);\n this.shadow_attributes = {\n width: 0,\n color: 'black',\n };\n this.state_stack = [];\n }\n create(svgElementType) {\n return document.createElementNS(SVG_NS, svgElementType);\n }\n // Allow grouping elements in containers for interactivity.\n openGroup(cls, id, attrs) {\n const group = this.create('g');\n this.groups.push(group);\n this.parent.appendChild(group);\n this.parent = group;\n if (cls)\n group.setAttribute('class', prefix(cls));\n if (id)\n group.setAttribute('id', prefix(id));\n if (attrs && attrs.pointerBBox) {\n group.setAttribute('pointer-events', 'bounding-box');\n }\n return group;\n }\n closeGroup() {\n this.groups.pop();\n this.parent = this.groups[this.groups.length - 1];\n }\n add(elem) {\n this.parent.appendChild(elem);\n }\n setFillStyle(style) {\n this.attributes.fill = style;\n return this;\n }\n /**\n * Used to set the fill color for `clearRect()`. This allows us to simulate\n * cutting a \"hole\" into the SVG drawing.\n */\n setBackgroundFillStyle(style) {\n this.backgroundFillStyle = style;\n return this;\n }\n setStrokeStyle(style) {\n this.attributes.stroke = style;\n return this;\n }\n setShadowColor(color) {\n this.shadow_attributes.color = color;\n return this;\n }\n /**\n * @param blur A non-negative float specifying the level of shadow blur, where 0\n * represents no blur and larger numbers represent increasingly more blur.\n * @returns this\n */\n setShadowBlur(blur) {\n this.shadow_attributes.width = blur;\n return this;\n }\n /**\n * @param width\n * @returns this\n */\n setLineWidth(width) {\n this.attributes['stroke-width'] = width;\n this.lineWidth = width;\n return this;\n }\n /**\n * @param lineDash an array of integers in the form of [dash, space, dash, space, etc...]\n * @returns this\n *\n * See: [SVG `stroke-dasharray` attribute](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray)\n */\n setLineDash(lineDash) {\n if (Object.prototype.toString.call(lineDash) === '[object Array]') {\n this.attributes['stroke-dasharray'] = lineDash.join(',');\n return this;\n }\n else {\n throw new RuntimeError('ArgumentError', 'lineDash must be an array of integers.');\n }\n }\n /**\n * @param capType\n * @returns this\n */\n setLineCap(capType) {\n this.attributes['stroke-linecap'] = capType;\n return this;\n }\n // ### Sizing & Scaling Methods:\n // TODO (GCR): See note at scale() -- separate our internal\n // conception of pixel-based width/height from the style.width\n // and style.height properties eventually to allow users to\n // apply responsive sizing attributes to the SVG.\n resize(width, height) {\n this.width = width;\n this.height = height;\n this.element.style.width = width.toString();\n this.svg.style.width = width.toString();\n this.svg.style.height = height.toString();\n const attributes = {\n width,\n height,\n };\n this.applyAttributes(this.svg, attributes);\n this.scale(this.state.scale.x, this.state.scale.y);\n return this;\n }\n scale(x, y) {\n // uses viewBox to scale\n // TODO (GCR): we may at some point want to distinguish the\n // style.width / style.height properties that are applied to\n // the SVG object from our internal conception of the SVG\n // width/height. This would allow us to create automatically\n // scaling SVG's that filled their containers, for instance.\n //\n // As this isn't implemented in Canvas contexts,\n // I've left as is for now, but in using the viewBox to\n // handle internal scaling, am trying to make it possible\n // for us to eventually move in that direction.\n this.state.scale = { x, y };\n const visibleWidth = this.width / x;\n const visibleHeight = this.height / y;\n this.setViewBox(0, 0, visibleWidth, visibleHeight);\n return this;\n }\n /**\n * 1 arg: string in the \"x y w h\" format\n * 4 args: x:number, y:number, w:number, h:number\n */\n setViewBox(viewBox_or_minX, minY, width, height) {\n if (typeof viewBox_or_minX === 'string') {\n this.svg.setAttribute('viewBox', viewBox_or_minX);\n }\n else {\n const viewBoxString = viewBox_or_minX + ' ' + minY + ' ' + width + ' ' + height;\n this.svg.setAttribute('viewBox', viewBoxString);\n }\n }\n // ### Drawing helper methods:\n applyAttributes(element, attributes) {\n const attrNamesToIgnore = ATTRIBUTES_TO_IGNORE[element.nodeName];\n for (const attrName in attributes) {\n if (attrNamesToIgnore && attrNamesToIgnore[attrName]) {\n continue;\n }\n element.setAttributeNS(null, attrName, attributes[attrName]);\n }\n return element;\n }\n // ### Shape & Path Methods:\n clear() {\n // Clear the SVG by removing all inner children.\n // (This approach is usually slightly more efficient\n // than removing the old SVG & adding a new one to\n // the container element, since it does not cause the\n // container to resize twice. Also, the resize\n // triggered by removing the entire SVG can trigger\n // a touchcancel event when the element resizes away\n // from a touch point.)\n while (this.svg.lastChild) {\n this.svg.removeChild(this.svg.lastChild);\n }\n // Replace the viewbox attribute we just removed.\n this.scale(this.state.scale.x, this.state.scale.y);\n }\n // ## Rectangles:\n rect(x, y, width, height, attributes) {\n // Avoid invalid negative height attributes by flipping the rectangle on its head:\n if (height < 0) {\n y += height;\n height *= -1;\n }\n const rectangle = this.create('rect');\n attributes = attributes !== null && attributes !== void 0 ? attributes : { fill: 'none', 'stroke-width': this.lineWidth, stroke: 'black' };\n this.applyAttributes(rectangle, Object.assign({ x, y, width, height }, attributes));\n this.add(rectangle);\n return this;\n }\n fillRect(x, y, width, height) {\n const attributes = { fill: this.attributes.fill };\n this.rect(x, y, width, height, attributes);\n return this;\n }\n clearRect(x, y, width, height) {\n // Currently this fills a rect with the backgroundFillStyle, rather\n // than \"cut a hole\" into the existing shapes.\n //\n // Since tabNote seems to be the only module that makes use of this\n // it may be worth creating a separate tabStave that would\n // draw lines around locations of tablature fingering.\n this.rect(x, y, width, height, { 'stroke-width': 0, fill: this.backgroundFillStyle });\n return this;\n }\n // ## Paths:\n beginPath() {\n this.path = '';\n this.pen.x = NaN;\n this.pen.y = NaN;\n return this;\n }\n moveTo(x, y) {\n this.path += 'M' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n lineTo(x, y) {\n this.path += 'L' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this.path += 'C' + x1 + ' ' + y1 + ',' + x2 + ' ' + y2 + ',' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this.path += 'Q' + x1 + ' ' + y1 + ',' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n arc(x, y, radius, startAngle, endAngle, counterclockwise) {\n const x0 = x + radius * Math.cos(startAngle);\n const y0 = y + radius * Math.sin(startAngle);\n // svg behavior different from canvas. Don't normalize angles if\n // we are drawing a circle because they both normalize to 0\n const tmpStartTest = normalizeAngle(startAngle);\n const tmpEndTest = normalizeAngle(endAngle);\n if ((!counterclockwise && endAngle - startAngle >= TWO_PI) ||\n (counterclockwise && startAngle - endAngle >= TWO_PI) ||\n tmpStartTest === tmpEndTest) {\n const x1 = x + radius * Math.cos(startAngle + Math.PI);\n const y1 = y + radius * Math.sin(startAngle + Math.PI);\n // There's no way to specify a completely circular arc in SVG so we have to\n // use two semi-circular arcs.\n this.path += `M${x0} ${y0} A${radius} ${radius} 0 0 0 ${x1} ${y1} `;\n this.path += `A${radius} ${radius} 0 0 0 ${x0} ${y0}`;\n this.pen.x = x0;\n this.pen.y = y0;\n }\n else {\n const x1 = x + radius * Math.cos(endAngle);\n const y1 = y + radius * Math.sin(endAngle);\n startAngle = tmpStartTest;\n endAngle = tmpEndTest;\n let large;\n if (Math.abs(endAngle - startAngle) < Math.PI) {\n large = counterclockwise;\n }\n else {\n large = !counterclockwise;\n }\n if (startAngle > endAngle) {\n large = !large;\n }\n const sweep = !counterclockwise;\n this.path += `M${x0} ${y0} A${radius} ${radius} 0 ${+large} ${+sweep} ${x1} ${y1}`;\n this.pen.x = x1;\n this.pen.y = y1;\n }\n return this;\n }\n closePath() {\n this.path += 'Z';\n return this;\n }\n getShadowStyle() {\n const sa = this.shadow_attributes;\n // A CSS drop-shadow filter blur looks different than a canvas shadowBlur\n // of the same radius, so we scale the drop-shadow radius here to make it\n // look close to the canvas shadow.\n return `filter: drop-shadow(0 0 ${sa.width / 1.5}px ${sa.color})`;\n }\n fill(attributes) {\n const path = this.create('path');\n if (typeof attributes === 'undefined') {\n attributes = Object.assign(Object.assign({}, this.attributes), { stroke: 'none' });\n }\n attributes.d = this.path;\n if (this.shadow_attributes.width > 0) {\n attributes.style = this.getShadowStyle();\n }\n this.applyAttributes(path, attributes);\n this.add(path);\n return this;\n }\n stroke() {\n const path = this.create('path');\n const attributes = Object.assign(Object.assign({}, this.attributes), { fill: 'none', 'stroke-width': this.lineWidth, d: this.path });\n if (this.shadow_attributes.width > 0) {\n attributes.style = this.getShadowStyle();\n }\n this.applyAttributes(path, attributes);\n this.add(path);\n return this;\n }\n // ## Text Methods:\n measureText(text) {\n return SVGContext.measureTextCache.lookup(text, this.svg, this.attributes);\n }\n fillText(text, x, y) {\n if (!text || text.length <= 0) {\n return this;\n }\n const attributes = Object.assign(Object.assign({}, this.attributes), { stroke: 'none', x,\n y });\n const txt = this.create('text');\n txt.textContent = text;\n this.applyAttributes(txt, attributes);\n this.add(txt);\n return this;\n }\n // TODO: State should be deep-copied.\n save() {\n this.state_stack.push({\n state: {\n 'font-family': this.state['font-family'],\n 'font-weight': this.state['font-weight'],\n 'font-style': this.state['font-style'],\n 'font-size': this.state['font-size'],\n scale: this.state.scale,\n },\n attributes: {\n 'font-family': this.attributes['font-family'],\n 'font-weight': this.attributes['font-weight'],\n 'font-style': this.attributes['font-style'],\n 'font-size': this.attributes['font-size'],\n fill: this.attributes.fill,\n stroke: this.attributes.stroke,\n 'stroke-width': this.attributes['stroke-width'],\n 'stroke-dasharray': this.attributes['stroke-dasharray'],\n },\n shadow_attributes: {\n width: this.shadow_attributes.width,\n color: this.shadow_attributes.color,\n },\n lineWidth: this.lineWidth,\n });\n return this;\n }\n // TODO: State should be deep-restored.\n restore() {\n const savedState = this.state_stack.pop();\n if (savedState) {\n const state = savedState;\n this.state['font-family'] = state.state['font-family'];\n this.state['font-weight'] = state.state['font-weight'];\n this.state['font-style'] = state.state['font-style'];\n this.state['font-size'] = state.state['font-size'];\n this.state.scale = state.state.scale;\n this.attributes['font-family'] = state.attributes['font-family'];\n this.attributes['font-weight'] = state.attributes['font-weight'];\n this.attributes['font-style'] = state.attributes['font-style'];\n this.attributes['font-size'] = state.attributes['font-size'];\n this.attributes.fill = state.attributes.fill;\n this.attributes.stroke = state.attributes.stroke;\n this.attributes['stroke-width'] = state.attributes['stroke-width'];\n this.attributes['stroke-dasharray'] = state.attributes['stroke-dasharray'];\n this.shadow_attributes.width = state.shadow_attributes.width;\n this.shadow_attributes.color = state.shadow_attributes.color;\n this.lineWidth = state.lineWidth;\n }\n return this;\n }\n set fillStyle(style) {\n this.setFillStyle(style);\n }\n get fillStyle() {\n return this.attributes.fill;\n }\n set strokeStyle(style) {\n this.setStrokeStyle(style);\n }\n get strokeStyle() {\n return this.attributes.stroke;\n }\n /**\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900). It is inserted\n * into the font-weight attribute (e.g., font-weight=\"bold\")\n * @param style is a string (e.g., 'italic', 'normal') that is inserted into the\n * font-style attribute (e.g., font-style=\"italic\")\n */\n setFont(f, size, weight, style) {\n const fontInfo = Font.validate(f, size, weight, style);\n this.fontCSSString = Font.toCSSString(fontInfo);\n const fontAttributes = {\n 'font-family': fontInfo.family,\n 'font-size': fontInfo.size,\n 'font-weight': fontInfo.weight,\n 'font-style': fontInfo.style,\n };\n this.attributes = Object.assign(Object.assign({}, this.attributes), fontAttributes);\n this.state = Object.assign(Object.assign({}, this.state), fontAttributes);\n return this;\n }\n /** Return a string of the form `'italic bold 15pt Arial'` */\n getFont() {\n return this.fontCSSString;\n }\n}\nSVGContext.measureTextCache = new MeasureTextCache();\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { CanvasContext } from './canvascontext';\nimport { SVGContext } from './svgcontext';\nimport { isRenderContext } from './typeguard';\nimport { RuntimeError } from './util';\nimport { isHTMLCanvas, isHTMLDiv } from './web';\nexport var RendererBackends;\n(function (RendererBackends) {\n RendererBackends[RendererBackends[\"CANVAS\"] = 1] = \"CANVAS\";\n RendererBackends[RendererBackends[\"SVG\"] = 2] = \"SVG\";\n})(RendererBackends || (RendererBackends = {}));\n// End of line types\nexport var RendererLineEndType;\n(function (RendererLineEndType) {\n RendererLineEndType[RendererLineEndType[\"NONE\"] = 1] = \"NONE\";\n RendererLineEndType[RendererLineEndType[\"UP\"] = 2] = \"UP\";\n RendererLineEndType[RendererLineEndType[\"DOWN\"] = 3] = \"DOWN\";\n})(RendererLineEndType || (RendererLineEndType = {}));\n/**\n * Support Canvas & SVG rendering contexts.\n */\nexport class Renderer {\n constructor(arg0, arg1) {\n if (isRenderContext(arg0)) {\n // The user has provided what looks like a RenderContext, let's just use it.\n this.ctx = arg0;\n }\n else {\n if (arg1 === undefined) {\n // The backend must be specified if the render context isn't directly provided.\n throw new RuntimeError('InvalidArgument', 'Missing backend argument');\n }\n const backend = arg1;\n let element;\n if (typeof arg0 == 'string') {\n const maybeElement = document.getElementById(arg0);\n if (!maybeElement) {\n throw new RuntimeError('BadElementId', `Can't find element with ID \"${maybeElement}\"`);\n }\n element = maybeElement;\n }\n else {\n element = arg0;\n }\n // Verify backend and create context\n if (backend === Renderer.Backends.CANVAS) {\n if (!isHTMLCanvas(element)) {\n throw new RuntimeError('BadElement', 'CANVAS context requires an HTMLCanvasElement.');\n }\n const context = element.getContext('2d');\n if (!context) {\n throw new RuntimeError('BadElement', \"Can't get canvas context\");\n }\n this.ctx = new CanvasContext(context);\n }\n else if (backend === Renderer.Backends.SVG) {\n if (!isHTMLDiv(element)) {\n throw new RuntimeError('BadElement', 'SVG context requires an HTMLDivElement.');\n }\n this.ctx = new SVGContext(element);\n }\n else {\n throw new RuntimeError('InvalidBackend', `No support for backend: ${backend}`);\n }\n }\n }\n static buildContext(elementId, backend, width, height, background = '#FFF') {\n const renderer = new Renderer(elementId, backend);\n if (width && height) {\n renderer.resize(width, height);\n }\n const ctx = renderer.getContext();\n ctx.setBackgroundFillStyle(background);\n Renderer.lastContext = ctx;\n return ctx;\n }\n static getCanvasContext(elementId, width, height, background) {\n return Renderer.buildContext(elementId, Renderer.Backends.CANVAS, width, height, background);\n }\n static getSVGContext(elementId, width, height, background) {\n return Renderer.buildContext(elementId, Renderer.Backends.SVG, width, height, background);\n }\n // Draw a dashed line (horizontal, vertical or diagonal\n // dashPattern = [3,3] draws a 3 pixel dash followed by a three pixel space.\n // setting the second number to 0 draws a solid line.\n static drawDashedLine(context, fromX, fromY, toX, toY, dashPattern) {\n context.beginPath();\n const dx = toX - fromX;\n const dy = toY - fromY;\n const angle = Math.atan2(dy, dx);\n let x = fromX;\n let y = fromY;\n context.moveTo(fromX, fromY);\n let idx = 0;\n let draw = true;\n while (!((dx < 0 ? x <= toX : x >= toX) && (dy < 0 ? y <= toY : y >= toY))) {\n const dashLength = dashPattern[idx++ % dashPattern.length];\n const nx = x + Math.cos(angle) * dashLength;\n x = dx < 0 ? Math.max(toX, nx) : Math.min(toX, nx);\n const ny = y + Math.sin(angle) * dashLength;\n y = dy < 0 ? Math.max(toY, ny) : Math.min(toY, ny);\n if (draw) {\n context.lineTo(x, y);\n }\n else {\n context.moveTo(x, y);\n }\n draw = !draw;\n }\n context.closePath();\n context.stroke();\n }\n resize(width, height) {\n this.ctx.resize(width, height);\n return this;\n }\n getContext() {\n return this.ctx;\n }\n}\nRenderer.Backends = RendererBackends;\nRenderer.LineEndType = RendererLineEndType;\n// Used by vexflow_test_helpers.ts\n// Should this be private?\n// Can we do this in a cleaner way?\nRenderer.lastContext = undefined;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport var TextJustification;\n(function (TextJustification) {\n TextJustification[TextJustification[\"LEFT\"] = 1] = \"LEFT\";\n TextJustification[TextJustification[\"CENTER\"] = 2] = \"CENTER\";\n TextJustification[TextJustification[\"RIGHT\"] = 3] = \"RIGHT\";\n})(TextJustification || (TextJustification = {}));\n/**\n * `TextNote` is a notation element that is positioned in time. Generally\n * meant for objects that sit above/below the staff and inline with each other.\n * `TextNote` has to be assigned to a `Stave` before rendering by means of `setStave`.\n * Examples of this would be such as dynamics, lyrics, chord changes, etc.\n */\nexport class TextNote extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n this.text = noteStruct.text || '';\n this.superscript = noteStruct.superscript;\n this.subscript = noteStruct.subscript;\n this.setFont(noteStruct.font);\n this.line = noteStruct.line || 0;\n this.smooth = noteStruct.smooth || false;\n this.ignore_ticks = noteStruct.ignore_ticks || false;\n this.justification = TextJustification.LEFT;\n // Determine and set initial note width. Note that the text width is\n // an approximation and isn't very accurate. The only way to accurately\n // measure the length of text is with `CanvasRenderingContext2D.measureText()`.\n if (noteStruct.glyph) {\n const struct = TextNote.GLYPHS[noteStruct.glyph];\n if (!struct)\n throw new RuntimeError('Invalid glyph type: ' + noteStruct.glyph);\n this.glyph = new Glyph(struct.code, 40, { category: 'textNote' });\n this.setWidth(this.glyph.getMetrics().width);\n }\n else {\n this.glyph = undefined;\n }\n }\n static get CATEGORY() {\n return Category.TextNote;\n }\n /** Glyph data. */\n static get GLYPHS() {\n return {\n segno: {\n code: 'segno',\n },\n tr: {\n code: 'ornamentTrill',\n },\n mordent: {\n code: 'ornamentMordent',\n },\n mordent_upper: {\n code: 'ornamentShortTrill',\n },\n mordent_lower: {\n code: 'ornamentMordent',\n },\n f: {\n code: 'dynamicForte',\n },\n p: {\n code: 'dynamicPiano',\n },\n m: {\n code: 'dynamicMezzo',\n },\n s: {\n code: 'dynamicSforzando',\n },\n z: {\n code: 'dynamicZ',\n },\n coda: {\n code: 'coda',\n },\n pedal_open: {\n code: 'keyboardPedalPed',\n },\n pedal_close: {\n code: 'keyboardPedalUp',\n },\n caesura_straight: {\n code: 'caesura',\n },\n caesura_curved: {\n code: 'caesuraCurved',\n },\n breath: {\n code: 'breathMarkComma',\n },\n tick: {\n code: 'breathMarkTick',\n },\n turn: {\n code: 'ornamentTurn',\n },\n turn_inverted: {\n code: 'ornamentTurnSlash',\n },\n };\n }\n /** Set the horizontal justification of the TextNote. */\n setJustification(just) {\n this.justification = just;\n return this;\n }\n /** Set the Stave line on which the note should be placed. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Return the Stave line on which the TextNote is placed. */\n getLine() {\n return this.line;\n }\n /** Return the unformatted text of this TextNote. */\n getText() {\n return this.text;\n }\n /** Pre-render formatting. */\n preFormat() {\n if (this.preFormatted)\n return;\n const tickContext = this.checkTickContext(`Can't preformat without a TickContext.`);\n if (this.smooth) {\n this.setWidth(0);\n }\n else {\n if (this.glyph) {\n // Width already set.\n }\n else {\n const ctx = this.checkContext();\n ctx.setFont(this.textFont);\n this.setWidth(ctx.measureText(this.text).width);\n }\n }\n if (this.justification === TextJustification.CENTER) {\n this.leftDisplacedHeadPx = this.width / 2;\n }\n else if (this.justification === TextJustification.RIGHT) {\n this.leftDisplacedHeadPx = this.width;\n }\n // We reposition to the center of the note head\n this.rightDisplacedHeadPx = tickContext.getMetrics().glyphPx / 2;\n this.preFormatted = true;\n }\n /**\n * Renders the TextNote.\n * `TextNote` has to be assigned to a `Stave` before rendering by means of `setStave`.\n */\n draw() {\n const ctx = this.checkContext();\n const stave = this.checkStave();\n const tickContext = this.checkTickContext(`Can't draw without a TickContext.`);\n this.setRendered();\n // Reposition to center of note head\n let x = this.getAbsoluteX() + tickContext.getMetrics().glyphPx / 2;\n // Align based on tick-context width.\n const width = this.getWidth();\n if (this.justification === TextJustification.CENTER) {\n x -= width / 2;\n }\n else if (this.justification === TextJustification.RIGHT) {\n x -= width;\n }\n let y;\n if (this.glyph) {\n y = stave.getYForLine(this.line + -3);\n this.glyph.render(ctx, x, y);\n }\n else {\n y = stave.getYForLine(this.line + -3);\n this.applyStyle(ctx);\n ctx.setFont(this.textFont);\n ctx.fillText(this.text, x, y);\n const height = ctx.measureText(this.text).height;\n // We called this.setFont(...) in the constructor, so we know this.textFont is available.\n // eslint-disable-next-line\n const { family, size, weight, style } = this.textFont;\n // Scale the font size by 1/1.3.\n const smallerFontSize = Font.scaleSize(size, 0.769231);\n if (this.superscript) {\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.superscript, x + this.width + 2, y - height / 2.2);\n }\n if (this.subscript) {\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.subscript, x + this.width + 2, y + height / 2.2 - 1);\n }\n this.restoreStyle(ctx);\n }\n }\n}\nTextNote.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 12,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\nTextNote.Justification = TextJustification;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier } from './stavemodifier';\nimport { Category } from './typeguard';\nexport var VoltaType;\n(function (VoltaType) {\n VoltaType[VoltaType[\"NONE\"] = 1] = \"NONE\";\n VoltaType[VoltaType[\"BEGIN\"] = 2] = \"BEGIN\";\n VoltaType[VoltaType[\"MID\"] = 3] = \"MID\";\n VoltaType[VoltaType[\"END\"] = 4] = \"END\";\n VoltaType[VoltaType[\"BEGIN_END\"] = 5] = \"BEGIN_END\";\n})(VoltaType || (VoltaType = {}));\nexport class Volta extends StaveModifier {\n constructor(type, number, x, y_shift) {\n super();\n this.volta = type;\n this.x = x;\n this.y_shift = y_shift;\n this.number = number;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.Volta;\n }\n static get type() {\n return VoltaType;\n }\n setShiftY(y) {\n this.y_shift = y;\n return this;\n }\n draw(stave, x) {\n const ctx = stave.checkContext();\n this.setRendered();\n let width = stave.getWidth() - x; // don't include x (offset) for width\n const top_y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n const vert_height = 1.5 * stave.getSpacingBetweenLines();\n switch (this.volta) {\n case VoltaType.BEGIN:\n ctx.fillRect(this.x + x, top_y, 1, vert_height);\n break;\n case VoltaType.END:\n width -= 5;\n ctx.fillRect(this.x + x + width, top_y, 1, vert_height);\n break;\n case VoltaType.BEGIN_END:\n width -= 3;\n ctx.fillRect(this.x + x, top_y, 1, vert_height);\n ctx.fillRect(this.x + x + width, top_y, 1, vert_height);\n break;\n default:\n break;\n }\n // If the beginning of a volta, draw measure number\n if (this.volta === VoltaType.BEGIN || this.volta === VoltaType.BEGIN_END) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText(this.number, this.x + x + 5, top_y + 15);\n ctx.restore();\n }\n ctx.fillRect(this.x + x, top_y, width, 1);\n return this;\n }\n}\nVolta.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 9,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns\n//\n// This file implements the `StringNumber` class which renders string\n// number annotations beside notes.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Renderer } from './renderer';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isStaveNote, isStemmableNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StringNumber extends Modifier {\n constructor(number) {\n super();\n this.string_number = number;\n this.position = Modifier.Position.ABOVE; // Default position above stem or note head\n this.x_shift = 0;\n this.y_shift = 0;\n this.text_line = 0;\n this.stem_offset = 0;\n this.x_offset = 0; // Horizontal offset from default\n this.y_offset = 0; // Vertical offset from default\n this.dashed = true; // true - draw dashed extension false - no extension\n this.leg = Renderer.LineEndType.NONE; // draw upward/downward leg at the of extension line\n this.radius = 8;\n this.drawCircle = true;\n this.setWidth(this.radius * 2 + 4);\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StringNumber;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.stringNumber;\n }\n // ## Static Methods\n // Arrange string numbers inside a `ModifierContext`\n static format(nums, state) {\n const left_shift = state.left_shift;\n const right_shift = state.right_shift;\n const num_spacing = 1;\n if (!nums || nums.length === 0)\n return false;\n const nums_list = [];\n let prev_note = null;\n let shift_left = 0;\n let shift_right = 0;\n const modLines = 0;\n for (let i = 0; i < nums.length; ++i) {\n const num = nums[i];\n const note = num.getNote();\n const pos = num.getPosition();\n if (!isStaveNote(note)) {\n throw new RuntimeError('NoStaveNote');\n }\n const index = num.checkIndex();\n const props = note.getKeyProps()[index];\n const mc = note.getModifierContext();\n const verticalSpaceNeeded = (num.radius * 2) / Tables.STAVE_LINE_DISTANCE + 0.5;\n if (mc) {\n if (pos === ModifierPosition.ABOVE) {\n num.text_line = mc.getState().top_text_line;\n state.top_text_line += verticalSpaceNeeded;\n }\n else if (pos === ModifierPosition.BELOW) {\n num.text_line = mc.getState().text_line;\n state.text_line += verticalSpaceNeeded;\n }\n }\n if (note !== prev_note) {\n for (let n = 0; n < note.keys.length; ++n) {\n if (left_shift === 0) {\n shift_left = Math.max(note.getLeftDisplacedHeadPx(), shift_left);\n }\n if (right_shift === 0) {\n shift_right = Math.max(note.getRightDisplacedHeadPx(), shift_right);\n }\n }\n prev_note = note;\n }\n const glyphLine = modLines === 0 ? props.line : modLines;\n nums_list.push({\n pos,\n note,\n num,\n line: glyphLine,\n shiftL: shift_left,\n shiftR: shift_right,\n });\n }\n // Sort string numbers by line number.\n nums_list.sort((a, b) => b.line - a.line);\n let num_shiftR = 0;\n let x_widthL = 0;\n let x_widthR = 0;\n let last_line = null;\n let last_note = null;\n for (let i = 0; i < nums_list.length; ++i) {\n let num_shift = 0;\n const note = nums_list[i].note;\n const pos = nums_list[i].pos;\n const num = nums_list[i].num;\n const line = nums_list[i].line;\n const shiftR = nums_list[i].shiftR;\n // Reset the position of the string number every line.\n if (line !== last_line || note !== last_note) {\n num_shiftR = right_shift + shiftR;\n }\n const num_width = num.getWidth() + num_spacing;\n if (pos === Modifier.Position.LEFT) {\n num.setXShift(left_shift);\n num_shift = shift_left + num_width; // spacing\n x_widthL = num_shift > x_widthL ? num_shift : x_widthL;\n }\n else if (pos === Modifier.Position.RIGHT) {\n num.setXShift(num_shiftR);\n num_shift += num_width; // spacing\n x_widthR = num_shift > x_widthR ? num_shift : x_widthR;\n }\n last_line = line;\n last_note = note;\n }\n state.left_shift += x_widthL;\n state.right_shift += x_widthR;\n return true;\n }\n setLineEndType(leg) {\n if (leg >= Renderer.LineEndType.NONE && leg <= Renderer.LineEndType.DOWN) {\n this.leg = leg;\n }\n return this;\n }\n setStringNumber(number) {\n this.string_number = number;\n return this;\n }\n setOffsetX(x) {\n this.x_offset = x;\n return this;\n }\n setOffsetY(y) {\n this.y_offset = y;\n return this;\n }\n setLastNote(note) {\n this.last_note = note;\n return this;\n }\n setDashed(dashed) {\n this.dashed = dashed;\n return this;\n }\n setDrawCircle(drawCircle) {\n this.drawCircle = drawCircle;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let dot_x = start.x + this.x_shift + this.x_offset;\n let stem_ext = {};\n if (note.hasStem()) {\n stem_ext = note.checkStem().getExtents();\n }\n let dot_y = start.y + this.y_shift + this.y_offset;\n switch (this.position) {\n case Modifier.Position.ABOVE:\n {\n const ys = note.getYs();\n dot_y = ys.reduce((a, b) => (a < b ? a : b));\n if (note.hasStem() && stemDirection == Stem.UP) {\n dot_y = stem_ext.topY + StringNumber.metrics.stemPadding;\n }\n dot_y -= this.radius + StringNumber.metrics.verticalPadding + this.text_line * Tables.STAVE_LINE_DISTANCE;\n }\n break;\n case Modifier.Position.BELOW:\n {\n const ys = note.getYs();\n dot_y = ys.reduce((a, b) => (a > b ? a : b));\n if (note.hasStem() && stemDirection == Stem.DOWN) {\n dot_y = stem_ext.topY - StringNumber.metrics.stemPadding;\n }\n dot_y += this.radius + StringNumber.metrics.verticalPadding + this.text_line * Tables.STAVE_LINE_DISTANCE;\n }\n break;\n case Modifier.Position.LEFT:\n dot_x -= this.radius / 2 + StringNumber.metrics.leftPadding;\n break;\n case Modifier.Position.RIGHT:\n dot_x += this.radius / 2 + StringNumber.metrics.rightPadding;\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} is invalid`);\n }\n ctx.save();\n if (this.drawCircle) {\n ctx.beginPath();\n ctx.arc(dot_x, dot_y, this.radius, 0, Math.PI * 2, false);\n ctx.setLineWidth(1.5);\n ctx.stroke();\n }\n ctx.setFont(this.textFont);\n const x = dot_x - ctx.measureText(this.string_number).width / 2;\n ctx.fillText('' + this.string_number, x, dot_y + 4.5);\n const lastNote = this.last_note;\n if (isStemmableNote(lastNote)) {\n // Only StemmableNote objects have getStemX().\n const end = lastNote.getStemX() - note.getX() + 5;\n ctx.setStrokeStyle('#000000');\n ctx.setLineCap('round');\n ctx.setLineWidth(0.6);\n if (this.dashed) {\n Renderer.drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 3]);\n }\n else {\n Renderer.drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 0]);\n }\n let len;\n let pattern;\n switch (this.leg) {\n case Renderer.LineEndType.UP:\n len = -10;\n pattern = this.dashed ? [3, 3] : [3, 0];\n Renderer.drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern);\n break;\n case Renderer.LineEndType.DOWN:\n len = 10;\n pattern = this.dashed ? [3, 3] : [3, 0];\n Renderer.drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern);\n break;\n default:\n break;\n }\n }\n ctx.restore();\n }\n}\nStringNumber.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: Font.SIZE,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns\n//\n// This file implements the `Stroke` class which renders chord strokes\n// that can be arpeggiated, brushed, rasquedo, etc.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Category, isNote, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class Stroke extends Modifier {\n constructor(type, options) {\n super();\n this.options = Object.assign({ all_voices: true }, options);\n // multi voice - span stroke across all voices if true\n this.all_voices = this.options.all_voices;\n // multi voice - end note of stroke, set in draw()\n this.type = type;\n this.position = Modifier.Position.LEFT;\n this.render_options = {\n font_scale: 38,\n };\n this.resetFont();\n this.setXShift(0);\n this.setWidth(10);\n }\n static get CATEGORY() {\n return Category.Stroke;\n }\n // Arrange strokes inside `ModifierContext`\n static format(strokes, state) {\n const left_shift = state.left_shift;\n const stroke_spacing = 0;\n if (!strokes || strokes.length === 0)\n return false;\n const strokeList = strokes.map((stroke) => {\n const note = stroke.getNote();\n const index = stroke.checkIndex();\n if (isStaveNote(note)) {\n // Only StaveNote objects have getKeyProps().\n const { line } = note.getKeyProps()[index];\n const shift = note.getLeftDisplacedHeadPx();\n return { line, shift, stroke };\n }\n else if (isTabNote(note)) {\n // Only TabNote objects have getPositions().\n const { str: string } = note.getPositions()[index];\n return { line: string, shift: 0, stroke };\n }\n else {\n throw new RuntimeError('Internal', 'Unexpected instance.');\n }\n });\n const strokeShift = left_shift;\n // There can only be one stroke .. if more than one, they overlay each other\n const xShift = strokeList.reduce((xShift, { stroke, shift }) => {\n stroke.setXShift(strokeShift + shift);\n return Math.max(stroke.getWidth() + stroke_spacing, xShift);\n }, 0);\n state.left_shift += xShift;\n return true;\n }\n getPosition() {\n return this.position;\n }\n addEndNote(note) {\n this.note_end = note;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n let ys = note.getYs();\n let topY = start.y;\n let botY = start.y;\n const x = start.x - 5;\n const line_space = note.checkStave().getSpacingBetweenLines();\n const notes = this.checkModifierContext().getMembers(note.getCategory());\n for (let i = 0; i < notes.length; i++) {\n const note = notes[i];\n if (isNote(note)) {\n // Only Note objects have getYs().\n // note is an instance of either StaveNote or TabNote.\n ys = note.getYs();\n for (let n = 0; n < ys.length; n++) {\n if (this.note === notes[i] || this.all_voices) {\n topY = Math.min(topY, ys[n]);\n botY = Math.max(botY, ys[n]);\n }\n }\n }\n }\n let arrow = '';\n let arrow_shift_x = 0;\n let arrow_y = 0;\n let text_shift_x = 0;\n let text_y = 0;\n switch (this.type) {\n case Stroke.Type.BRUSH_DOWN:\n arrow = 'arrowheadBlackUp';\n arrow_shift_x = -3;\n arrow_y = topY - line_space / 2 + 10;\n botY += line_space / 2;\n break;\n case Stroke.Type.BRUSH_UP:\n arrow = 'arrowheadBlackDown';\n arrow_shift_x = 0.5;\n arrow_y = botY + line_space / 2;\n topY -= line_space / 2;\n break;\n case Stroke.Type.ROLL_DOWN:\n case Stroke.Type.RASQUEDO_DOWN:\n arrow = 'arrowheadBlackUp';\n arrow_shift_x = -3;\n text_shift_x = this.x_shift + arrow_shift_x - 2;\n if (isStaveNote(note)) {\n topY += 1.5 * line_space;\n if ((botY - topY) % 2 !== 0) {\n botY += 0.5 * line_space;\n }\n else {\n botY += line_space;\n }\n arrow_y = topY - line_space;\n text_y = botY + line_space + 2;\n }\n else {\n topY += 1.5 * line_space;\n botY += line_space;\n arrow_y = topY - 0.75 * line_space;\n text_y = botY + 0.25 * line_space;\n }\n break;\n case Stroke.Type.ROLL_UP:\n case Stroke.Type.RASQUEDO_UP:\n arrow = 'arrowheadBlackDown';\n arrow_shift_x = -4;\n text_shift_x = this.x_shift + arrow_shift_x - 1;\n if (isStaveNote(note)) {\n arrow_y = line_space / 2;\n topY += 0.5 * line_space;\n if ((botY - topY) % 2 === 0) {\n botY += line_space / 2;\n }\n arrow_y = botY + 0.5 * line_space;\n text_y = topY - 1.25 * line_space;\n }\n else {\n topY += 0.25 * line_space;\n botY += 0.5 * line_space;\n arrow_y = botY + 0.25 * line_space;\n text_y = topY - line_space;\n }\n break;\n case Stroke.Type.ARPEGGIO_DIRECTIONLESS:\n topY += 0.5 * line_space;\n botY += line_space; // * 0.5 can lead to slight underlap instead of overlap sometimes\n break;\n default:\n throw new RuntimeError('InvalidType', `The stroke type ${this.type} does not exist`);\n }\n let strokeLine = 'straight';\n // Draw the stroke\n if (this.type === Stroke.Type.BRUSH_DOWN || this.type === Stroke.Type.BRUSH_UP) {\n ctx.fillRect(x + this.x_shift, topY, 1, botY - topY);\n }\n else {\n strokeLine = 'wiggly';\n if (isStaveNote(note)) {\n for (let i = topY; i <= botY; i += line_space) {\n Glyph.renderGlyph(ctx, x + this.x_shift - 4, i, this.render_options.font_scale, 'vexWiggleArpeggioUp');\n }\n }\n else {\n let i;\n for (i = topY; i <= botY; i += 10) {\n Glyph.renderGlyph(ctx, x + this.x_shift - 4, i, this.render_options.font_scale, 'vexWiggleArpeggioUp');\n }\n if (this.type === Stroke.Type.RASQUEDO_DOWN) {\n text_y = i + 0.25 * line_space;\n }\n }\n }\n if (this.type === Stroke.Type.ARPEGGIO_DIRECTIONLESS) {\n return; // skip drawing arrow heads or text\n }\n // Draw the arrow head\n Glyph.renderGlyph(ctx, x + this.x_shift + arrow_shift_x, arrow_y, this.render_options.font_scale, arrow, {\n category: `stroke.${arrow}.${strokeLine}`,\n });\n // Draw the rasquedo \"R\"\n if (this.type === Stroke.Type.RASQUEDO_DOWN || this.type === Stroke.Type.RASQUEDO_UP) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText('R', x + text_shift_x, text_y);\n ctx.restore();\n }\n }\n}\nStroke.Type = {\n BRUSH_DOWN: 1,\n BRUSH_UP: 2,\n ROLL_DOWN: 3,\n ROLL_UP: 4,\n RASQUEDO_DOWN: 5,\n RASQUEDO_UP: 6,\n ARPEGGIO_DIRECTIONLESS: 7, // Arpeggiated chord without upwards or downwards arrow\n};\nStroke.TEXT_FONT = {\n family: Font.SERIF,\n size: Font.SIZE,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Bend } from './bend';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\n/** `Vibrato` implements diverse vibratos. */\nexport class Vibrato extends Modifier {\n constructor() {\n super();\n this.position = Modifier.Position.RIGHT;\n this.render_options = {\n harsh: false,\n vibrato_width: 20,\n wave_height: 6,\n wave_width: 4,\n wave_girth: 2,\n };\n this.setVibratoWidth(this.render_options.vibrato_width);\n }\n static get CATEGORY() {\n return Category.Vibrato;\n }\n /** Arrange vibratos inside a `ModifierContext`. */\n static format(vibratos, state, context) {\n if (!vibratos || vibratos.length === 0)\n return false;\n // Vibratos are always on top.\n let text_line = state.top_text_line;\n let width = 0;\n let shift = state.right_shift - 7;\n // If there's a bend, drop the text line\n const bends = context.getMembers(Bend.CATEGORY);\n if (bends && bends.length > 0) {\n const bendHeight = bends.map((bb) => bb.getTextHeight()).reduce((a, b) => (a > b ? a : b)) / Tables.STAVE_LINE_DISTANCE;\n text_line = text_line - (bendHeight + 1);\n }\n else {\n state.top_text_line += 1;\n }\n // Format Vibratos\n for (let i = 0; i < vibratos.length; ++i) {\n const vibrato = vibratos[i];\n vibrato.setXShift(shift);\n vibrato.setTextLine(text_line);\n width += vibrato.getWidth();\n shift += width;\n }\n state.right_shift += width;\n return true;\n }\n /** Set harsh vibrato. */\n setHarsh(harsh) {\n this.render_options.harsh = harsh;\n return this;\n }\n /** Set vibrato width in pixels. */\n setVibratoWidth(width) {\n this.render_options.vibrato_width = width;\n this.setWidth(width);\n return this;\n }\n /** Draw the vibrato on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(Modifier.Position.RIGHT, this.index);\n const vx = start.x + this.x_shift;\n const vy = note.getYForTopText(this.text_line) + 2;\n Vibrato.renderVibrato(ctx, vx, vy, this.render_options);\n }\n /**\n * Static rendering method that can be called from\n * other classes (e.g. VibratoBracket).\n */\n static renderVibrato(ctx, x, y, opts) {\n const { harsh, vibrato_width, wave_width, wave_girth, wave_height } = opts;\n const num_waves = vibrato_width / wave_width;\n ctx.beginPath();\n let i;\n if (harsh) {\n ctx.moveTo(x, y + wave_girth + 1);\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.lineTo(x + wave_width, y - wave_height / 2);\n x += wave_width;\n ctx.lineTo(x + wave_width, y + wave_height / 2);\n x += wave_width;\n }\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.lineTo(x - wave_width, y - wave_height / 2 + wave_girth + 1);\n x -= wave_width;\n ctx.lineTo(x - wave_width, y + wave_height / 2 + wave_girth + 1);\n x -= wave_width;\n }\n ctx.fill();\n }\n else {\n ctx.moveTo(x, y + wave_girth);\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.quadraticCurveTo(x + wave_width / 2, y - wave_height / 2, x + wave_width, y);\n x += wave_width;\n ctx.quadraticCurveTo(x + wave_width / 2, y + wave_height / 2, x + wave_width, y);\n x += wave_width;\n }\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.quadraticCurveTo(x - wave_width / 2, y + wave_height / 2 + wave_girth, x - wave_width, y + wave_girth);\n x -= wave_width;\n ctx.quadraticCurveTo(x - wave_width / 2, y - wave_height / 2 + wave_girth, x - wave_width, y + wave_girth);\n x -= wave_width;\n }\n ctx.fill();\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This class implements various types of members to notes (e.g. bends,\n// fingering positions etc.)\nimport { Accidental } from './accidental';\nimport { Annotation } from './annotation';\nimport { Articulation } from './articulation';\nimport { Bend } from './bend';\nimport { ChordSymbol } from './chordsymbol';\nimport { Dot } from './dot';\nimport { FretHandFinger } from './frethandfinger';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { Parenthesis } from './parenthesis';\nimport { StaveNote } from './stavenote';\nimport { StringNumber } from './stringnumber';\nimport { Stroke } from './strokes';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\nimport { Vibrato } from './vibrato';\n// To enable logging for this class. Set `Vex.Flow.ModifierContext.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (ModifierContext.DEBUG)\n log('Vex.Flow.ModifierContext', args);\n}\nexport class ModifierContext {\n constructor() {\n // Formatting data.\n this.state = {\n left_shift: 0,\n right_shift: 0,\n text_line: 0,\n top_text_line: 0,\n };\n // Current members\n this.members = {};\n this.preFormatted = false;\n this.postFormatted = false;\n this.formatted = false;\n this.width = 0;\n this.spacing = 0;\n }\n addModifier(member) {\n L('addModifier is deprecated, use addMember instead.');\n return this.addMember(member);\n }\n /**\n * this.members maps CATEGORY strings to arrays of Tickable | Modifier | StaveNote | TabNote.\n * Here we add a new member to this.members, and create a new array if needed.\n * @param member\n * @returns this\n */\n addMember(member) {\n const category = member.getCategory();\n if (!this.members[category]) {\n this.members[category] = [];\n }\n this.members[category].push(member);\n member.setModifierContext(this);\n this.preFormatted = false;\n return this;\n }\n /**\n * @deprecated\n */\n getModifiers(category) {\n L('getModifiers is deprecated, use getMembers instead.');\n return this.getMembers(category);\n }\n getMembers(category) {\n var _a;\n return (_a = this.members[category]) !== null && _a !== void 0 ? _a : [];\n }\n getWidth() {\n return this.width;\n }\n getLeftShift() {\n return this.state.left_shift;\n }\n getRightShift() {\n return this.state.right_shift;\n }\n getState() {\n return this.state;\n }\n getMetrics() {\n if (!this.formatted) {\n throw new RuntimeError('UnformattedMember', 'Unformatted member has no metrics.');\n }\n return {\n width: this.state.left_shift + this.state.right_shift + this.spacing,\n spacing: this.spacing,\n };\n }\n preFormat() {\n if (this.preFormatted)\n return;\n L('Preformatting ModifierContext');\n const state = this.state;\n const members = this.members;\n // The ordering below determines when different members are formatted and rendered.\n StaveNote.format(members[Category.StaveNote], state);\n Parenthesis.format(members[Category.Parenthesis], state);\n Dot.format(members[Category.Dot], state);\n FretHandFinger.format(members[Category.FretHandFinger], state);\n Accidental.format(members[Category.Accidental], state);\n Stroke.format(members[Category.Stroke], state);\n GraceNoteGroup.format(members[Category.GraceNoteGroup], state);\n NoteSubGroup.format(members[Category.NoteSubGroup], state);\n StringNumber.format(members[Category.StringNumber], state);\n Articulation.format(members[Category.Articulation], state);\n Ornament.format(members[Category.Ornament], state);\n Annotation.format(members[Category.Annotation], state);\n ChordSymbol.format(members[Category.ChordSymbol], state);\n Bend.format(members[Category.Bend], state);\n Vibrato.format(members[Category.Vibrato], state, this);\n // Update width of this member context\n this.width = state.left_shift + state.right_shift;\n this.preFormatted = true;\n }\n postFormat() {\n if (this.postFormatted)\n return;\n L('Postformatting ModifierContext');\n // If post-formatting is required for an element, add more lines below.\n StaveNote.postFormat(this.getMembers(Category.StaveNote));\n }\n}\nModifierContext.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna Cheppudira 2013.\n// Co-author: Benjamin W. Bohl\n// MIT License\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Clef.DEBUG)\n log('Vex.Flow.Clef', args);\n}\n/**\n * Clef implements various types of clefs that can be rendered on a stave.\n *\n * See `tests/clef_tests.ts` for usage examples.\n */\nexport class Clef extends StaveModifier {\n /** Create a new clef. */\n constructor(type, size, annotation) {\n super();\n /**\n * The attribute `clef` must be a key from\n * `Clef.types`\n */\n this.clef = Clef.types['treble'];\n this.setPosition(StaveModifierPosition.BEGIN);\n this.setType(type, size, annotation);\n this.setWidth(Tables.currentMusicFont().lookupMetric(`clef.${this.size}.width`));\n L('Creating clef:', type);\n }\n static get CATEGORY() {\n return Category.Clef;\n }\n /**\n * Every clef name is associated with a glyph code from the font file\n * and a default stave line number.\n */\n static get types() {\n return {\n treble: {\n code: 'gClef',\n line: 3,\n point: 0,\n },\n bass: {\n code: 'fClef',\n line: 1,\n point: 0,\n },\n alto: {\n code: 'cClef',\n line: 2,\n point: 0,\n },\n tenor: {\n code: 'cClef',\n line: 1,\n point: 0,\n },\n percussion: {\n code: 'restMaxima',\n line: 2,\n point: 0,\n },\n soprano: {\n code: 'cClef',\n line: 4,\n point: 0,\n },\n 'mezzo-soprano': {\n code: 'cClef',\n line: 3,\n point: 0,\n },\n 'baritone-c': {\n code: 'cClef',\n line: 0,\n point: 0,\n },\n 'baritone-f': {\n code: 'fClef',\n line: 2,\n point: 0,\n },\n subbass: {\n code: 'fClef',\n line: 0,\n point: 0,\n },\n french: {\n code: 'gClef',\n line: 4,\n point: 0,\n },\n tab: {\n code: '6stringTabClef',\n point: 0,\n },\n };\n }\n /** Set clef type, size and annotation. */\n setType(type, size, annotation) {\n this.type = type;\n this.clef = Clef.types[type];\n if (size === undefined) {\n this.size = 'default';\n }\n else {\n this.size = size;\n }\n const musicFont = Tables.currentMusicFont();\n this.clef.point = musicFont.lookupMetric(`clef.${this.size}.point`, 0);\n this.glyph = new Glyph(this.clef.code, this.clef.point, {\n category: `clef.${this.clef.code}.${this.size}`,\n });\n // If an annotation, such as 8va, is specified, add it to the Clef object.\n if (annotation !== undefined) {\n const code = musicFont.lookupMetric(`clef.annotations.${annotation}.smuflCode`);\n const point = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.point`);\n const line = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.${this.type}.line`);\n const x_shift = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.${this.type}.shiftX`);\n this.annotation = { code, point, line, x_shift };\n this.attachment = new Glyph(this.annotation.code, this.annotation.point);\n this.attachment.metrics.x_max = 0;\n this.attachment.setXShift(this.annotation.x_shift);\n }\n else {\n this.annotation = undefined;\n }\n return this;\n }\n /** Get clef width. */\n getWidth() {\n if (this.type === 'tab') {\n defined(this.stave, 'ClefError', \"Can't get width without stave.\");\n }\n return this.width;\n }\n /** Set associated stave. */\n setStave(stave) {\n this.stave = stave;\n if (this.type === 'tab') {\n const glyph = defined(this.glyph, 'ClefError', \"Can't set stave without glyph.\");\n const numLines = this.stave.getNumLines();\n const musicFont = Tables.currentMusicFont();\n const point = musicFont.lookupMetric(`clef.lineCount.${numLines}.point`);\n const shiftY = musicFont.lookupMetric(`clef.lineCount.${numLines}.shiftY`);\n glyph.setPoint(point);\n glyph.setYShift(shiftY);\n }\n return this;\n }\n /** Render clef. */\n draw() {\n const glyph = defined(this.glyph, 'ClefError', \"Can't draw clef without glyph.\");\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('clef', this.getAttribute('id'));\n glyph.setStave(stave);\n glyph.setContext(ctx);\n if (this.clef.line !== undefined) {\n this.placeGlyphOnLine(glyph, stave, this.clef.line);\n }\n glyph.renderToStave(this.x);\n if (this.annotation !== undefined && this.attachment !== undefined) {\n this.placeGlyphOnLine(this.attachment, stave, this.annotation.line);\n this.attachment.setStave(stave);\n this.attachment.setContext(ctx);\n this.attachment.renderToStave(this.x);\n }\n ctx.closeGroup();\n }\n}\n/** To enable logging for this class, set `Vex.Flow.Clef.DEBUG` to `true`. */\nClef.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n//\n// ## Description\n//\n// This file implements key signatures. A key signature sits on a stave\n// and indicates the notes with implicit accidentals.\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined } from './util';\nexport class KeySignature extends StaveModifier {\n // Create a new Key Signature based on a `key_spec`\n constructor(keySpec, cancelKeySpec, alterKeySpec) {\n super();\n this.accList = [];\n this.setKeySig(keySpec, cancelKeySpec, alterKeySpec);\n this.setPosition(StaveModifierPosition.BEGIN);\n this.glyphFontScale = 38; // TODO(0xFE): Should this match StaveNote?\n this.glyphs = [];\n this.xPositions = []; // relative to this.x\n this.paddingForced = false;\n }\n static get CATEGORY() {\n return Category.KeySignature;\n }\n // Add an accidental glyph to the `KeySignature` instance which represents\n // the provided `acc`. If `nextAcc` is also provided, the appropriate\n // spacing will be included in the glyph's position\n convertToGlyph(acc, nextAcc) {\n const accGlyphData = Tables.accidentalCodes(acc.type);\n const glyph = new Glyph(accGlyphData.code, this.glyphFontScale);\n // Determine spacing between current accidental and the next accidental\n let extraWidth = 1;\n if (acc.type === 'n' && nextAcc) {\n const spacing = KeySignature.accidentalSpacing[nextAcc.type];\n if (spacing) {\n const isAbove = nextAcc.line >= acc.line;\n extraWidth = isAbove ? spacing.above : spacing.below;\n }\n }\n // Place the glyph on the stave\n this.placeGlyphOnLine(glyph, this.checkStave(), acc.line);\n this.glyphs.push(glyph);\n const xPosition = this.xPositions[this.xPositions.length - 1];\n const glyphWidth = glyph.getMetrics().width + extraWidth;\n // Store the next accidental's x position\n this.xPositions.push(xPosition + glyphWidth);\n // Expand size of key signature\n this.width += glyphWidth;\n }\n // Cancel out a key signature provided in the `spec` parameter. This will\n // place appropriate natural accidentals before the key signature.\n cancelKey(spec) {\n this.formatted = false;\n this.cancelKeySpec = spec;\n return this;\n }\n convertToCancelAccList(spec) {\n // Get the accidental list for the cancelled key signature\n const cancel_accList = Tables.keySignature(spec);\n // If the cancelled key has a different accidental type, ie: # vs b\n const different_types = this.accList.length > 0 && cancel_accList.length > 0 && cancel_accList[0].type !== this.accList[0].type;\n // Determine how many naturals needed to add\n const naturals = different_types ? cancel_accList.length : cancel_accList.length - this.accList.length;\n // Return if no naturals needed\n if (naturals < 1)\n return undefined;\n // Get the line position for each natural\n const cancelled = [];\n for (let i = 0; i < naturals; i++) {\n let index = i;\n if (!different_types) {\n index = cancel_accList.length - naturals + i;\n }\n const acc = cancel_accList[index];\n cancelled.push({ type: 'n', line: acc.line });\n }\n // Combine naturals with main accidental list for the key signature\n this.accList = cancelled.concat(this.accList);\n return {\n accList: cancelled,\n type: cancel_accList[0].type,\n };\n }\n // Deprecated\n addToStave(stave) {\n this.paddingForced = true;\n stave.addModifier(this);\n return this;\n }\n // Apply the accidental staff line placement based on the `clef` and\n // the accidental `type` for the key signature ('# or 'b').\n convertAccLines(clef, type, accList = this.accList) {\n let offset = 0.0; // if clef === \"treble\"\n let customLines; // when clef doesn't follow treble key sig shape\n switch (clef) {\n // Treble & Subbass both have offsets of 0, so are not included.\n case 'soprano':\n if (type === '#')\n customLines = [2.5, 0.5, 2, 0, 1.5, -0.5, 1];\n else\n offset = -1;\n break;\n case 'mezzo-soprano':\n if (type === 'b')\n customLines = [0, 2, 0.5, 2.5, 1, 3, 1.5];\n else\n offset = 1.5;\n break;\n case 'alto':\n offset = 0.5;\n break;\n case 'tenor':\n if (type === '#')\n customLines = [3, 1, 2.5, 0.5, 2, 0, 1.5];\n else\n offset = -0.5;\n break;\n case 'baritone-f':\n case 'baritone-c':\n if (type === 'b')\n customLines = [0.5, 2.5, 1, 3, 1.5, 3.5, 2];\n else\n offset = 2;\n break;\n case 'bass':\n case 'french':\n offset = 1;\n break;\n default:\n break;\n }\n // If there's a special case, assign those lines/spaces:\n let i;\n if (typeof customLines !== 'undefined') {\n for (i = 0; i < accList.length; ++i) {\n accList[i].line = customLines[i];\n }\n }\n else if (offset !== 0) {\n for (i = 0; i < accList.length; ++i) {\n accList[i].line += offset;\n }\n }\n }\n getPadding(index) {\n if (!this.formatted)\n this.format();\n return this.glyphs.length === 0 || (!this.paddingForced && index < 2) ? 0 : this.padding;\n }\n getWidth() {\n if (!this.formatted)\n this.format();\n return this.width;\n }\n setKeySig(keySpec, cancelKeySpec, alterKeySpec) {\n this.formatted = false;\n this.keySpec = keySpec;\n this.cancelKeySpec = cancelKeySpec;\n this.alterKeySpec = alterKeySpec;\n return this;\n }\n // Alter the accidentals of a key spec one by one.\n // Each alteration is a new accidental that replaces the\n // original accidental (or the canceled one).\n alterKey(alterKeySpec) {\n this.formatted = false;\n this.alterKeySpec = alterKeySpec;\n return this;\n }\n convertToAlterAccList(alterKeySpec) {\n const max = Math.min(alterKeySpec.length, this.accList.length);\n for (let i = 0; i < max; ++i) {\n if (alterKeySpec[i]) {\n this.accList[i].type = alterKeySpec[i];\n }\n }\n }\n format() {\n const stave = this.checkStave();\n this.width = 0;\n this.glyphs = [];\n this.xPositions = [0]; // initialize with initial x position\n this.accList = Tables.keySignature(defined(this.keySpec));\n const accList = this.accList;\n const firstAccidentalType = accList.length > 0 ? accList[0].type : undefined;\n let cancelAccList;\n if (this.cancelKeySpec) {\n cancelAccList = this.convertToCancelAccList(this.cancelKeySpec);\n }\n if (this.alterKeySpec) {\n this.convertToAlterAccList(this.alterKeySpec);\n }\n if (this.accList.length > 0) {\n const clef = (this.position === StaveModifierPosition.END ? stave.getEndClef() : stave.getClef()) || stave.getClef();\n if (cancelAccList) {\n this.convertAccLines(clef, cancelAccList.type, cancelAccList.accList);\n }\n this.convertAccLines(clef, firstAccidentalType, accList);\n for (let i = 0; i < this.accList.length; ++i) {\n this.convertToGlyph(this.accList[i], this.accList[i + 1]);\n }\n }\n this.formatted = true;\n }\n /**\n * Return the Glyph objects making up this KeySignature.\n */\n getGlyphs() {\n if (!this.formatted)\n this.format();\n return this.glyphs;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n if (!this.formatted)\n this.format();\n this.setRendered();\n ctx.openGroup('keysignature', this.getAttribute('id'));\n for (let i = 0; i < this.glyphs.length; i++) {\n const glyph = this.glyphs[i];\n const x = this.x + this.xPositions[i];\n glyph.setStave(stave);\n glyph.setContext(ctx);\n glyph.renderToStave(x);\n }\n ctx.closeGroup();\n }\n}\n// Space between natural and following accidental depending\n// on vertical position\nKeySignature.accidentalSpacing = {\n '#': {\n above: 6,\n below: 4,\n },\n b: {\n above: 4,\n below: 7,\n },\n n: {\n above: 4,\n below: 1,\n },\n '##': {\n above: 6,\n below: 4,\n },\n bb: {\n above: 4,\n below: 7,\n },\n db: {\n above: 4,\n below: 7,\n },\n d: {\n above: 4,\n below: 7,\n },\n bbs: {\n above: 4,\n below: 7,\n },\n '++': {\n above: 6,\n below: 4,\n },\n '+': {\n above: 6,\n below: 4,\n },\n '+-': {\n above: 6,\n below: 4,\n },\n '++-': {\n above: 6,\n below: 4,\n },\n bs: {\n above: 4,\n below: 10,\n },\n bss: {\n above: 4,\n below: 10,\n },\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { StaveModifier } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport class Repetition extends StaveModifier {\n constructor(type, x, y_shift) {\n super();\n this.symbol_type = type;\n this.x = x;\n this.x_shift = 0;\n this.y_shift = y_shift;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.Repetition;\n }\n setShiftX(x) {\n this.x_shift = x;\n return this;\n }\n setShiftY(y) {\n this.y_shift = y;\n return this;\n }\n draw(stave, x) {\n this.setRendered();\n switch (this.symbol_type) {\n case Repetition.type.CODA_RIGHT:\n this.drawCodaFixed(stave, x + stave.getWidth());\n break;\n case Repetition.type.CODA_LEFT:\n this.drawSymbolText(stave, x, 'Coda', true);\n break;\n case Repetition.type.SEGNO_LEFT:\n this.drawSignoFixed(stave, x);\n break;\n case Repetition.type.SEGNO_RIGHT:\n this.drawSignoFixed(stave, x + stave.getWidth());\n break;\n case Repetition.type.DC:\n this.drawSymbolText(stave, x, 'D.C.', false);\n break;\n case Repetition.type.DC_AL_CODA:\n this.drawSymbolText(stave, x, 'D.C. al', true);\n break;\n case Repetition.type.DC_AL_FINE:\n this.drawSymbolText(stave, x, 'D.C. al Fine', false);\n break;\n case Repetition.type.DS:\n this.drawSymbolText(stave, x, 'D.S.', false);\n break;\n case Repetition.type.DS_AL_CODA:\n this.drawSymbolText(stave, x, 'D.S. al', true);\n break;\n case Repetition.type.DS_AL_FINE:\n this.drawSymbolText(stave, x, 'D.S. al Fine', false);\n break;\n case Repetition.type.FINE:\n this.drawSymbolText(stave, x, 'Fine', false);\n break;\n case Repetition.type.TO_CODA:\n this.drawSymbolText(stave, x, 'To', true);\n break;\n default:\n break;\n }\n return this;\n }\n drawCodaFixed(stave, x) {\n const y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n Glyph.renderGlyph(stave.checkContext(), this.x + x + this.x_shift, y + Tables.currentMusicFont().lookupMetric('staveRepetition.coda.offsetY'), 40, 'coda', { category: 'coda' });\n return this;\n }\n drawSignoFixed(stave, x) {\n const y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n Glyph.renderGlyph(stave.checkContext(), this.x + x + this.x_shift, y + Tables.currentMusicFont().lookupMetric('staveRepetition.segno.offsetY'), 30, 'segno', { category: 'segno' });\n return this;\n }\n drawSymbolText(stave, x, text, draw_coda) {\n const ctx = stave.checkContext();\n ctx.save();\n ctx.setFont(this.textFont);\n let text_x = 0;\n let symbol_x = 0;\n const modifierWidth = stave.getNoteStartX() - this.x;\n switch (this.symbol_type) {\n // To the left with symbol\n case Repetition.type.CODA_LEFT:\n // Offset Coda text to right of stave beginning\n text_x = this.x + stave.getVerticalBarWidth();\n symbol_x =\n text_x +\n ctx.measureText(text).width +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n break;\n // To the right without symbol\n case Repetition.type.DC:\n case Repetition.type.DC_AL_FINE:\n case Repetition.type.DS:\n case Repetition.type.DS_AL_FINE:\n case Repetition.type.FINE:\n text_x =\n this.x +\n x +\n this.x_shift +\n stave.getWidth() -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.spacing') -\n modifierWidth -\n ctx.measureText(text).width;\n break;\n // To the right with symbol\n default:\n text_x =\n this.x +\n x +\n this.x_shift +\n stave.getWidth() -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.spacing') -\n modifierWidth -\n ctx.measureText(text).width -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n symbol_x =\n text_x +\n ctx.measureText(text).width +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n break;\n }\n const y = stave.getYForTopText(stave.getNumLines()) +\n this.y_shift +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetY');\n if (draw_coda) {\n Glyph.renderGlyph(ctx, symbol_x, y, 40, 'coda', { category: 'coda' });\n }\n ctx.fillText(text, text_x, y + 5);\n ctx.restore();\n return this;\n }\n}\nRepetition.TEXT_FONT = {\n family: Font.SERIF,\n size: 12,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\nRepetition.type = {\n NONE: 1,\n CODA_LEFT: 2,\n CODA_RIGHT: 3,\n SEGNO_LEFT: 4,\n SEGNO_RIGHT: 5,\n DC: 6,\n DC_AL_CODA: 7,\n DC_AL_FINE: 8,\n DS: 9,\n DS_AL_CODA: 10,\n DS_AL_FINE: 11,\n FINE: 12,\n TO_CODA: 13, // To Coda at end of stave\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier } from './stavemodifier';\nimport { Category } from './typeguard';\nexport class StaveSection extends StaveModifier {\n constructor(section, x, shift_y, drawRect = true) {\n super();\n this.setWidth(16);\n this.section = section;\n this.x = x;\n this.shift_x = 0;\n this.shift_y = shift_y;\n this.drawRect = drawRect;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveSection;\n }\n setStaveSection(section) {\n this.section = section;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n draw(stave, shift_x) {\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n const paddingX = 2;\n const paddingY = 2;\n const rectWidth = 2;\n const textMeasurements = ctx.measureText(this.section);\n const textWidth = textMeasurements.width;\n const textHeight = textMeasurements.height;\n const width = textWidth + 2 * paddingX; // add left & right padding\n const height = textHeight + 2 * paddingY; // add top & bottom padding\n // Seems to be a good default y\n const y = stave.getYForTopText(1.5) + this.shift_y;\n const x = this.x + shift_x;\n if (this.drawRect) {\n ctx.beginPath();\n ctx.setLineWidth(rectWidth);\n ctx.rect(x, y + textMeasurements.y - paddingY, width, height);\n ctx.stroke();\n }\n ctx.fillText(this.section, x + paddingX, y);\n ctx.restore();\n return this;\n }\n}\nStaveSection.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 10,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Radosaw Eichler 2012\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport class StaveTempo extends StaveModifier {\n constructor(tempo, x, shift_y) {\n super();\n /** Font size for note. */\n this.render_options = { glyph_font_scale: 30 };\n this.tempo = tempo;\n this.position = StaveModifierPosition.ABOVE;\n this.x = x;\n this.shift_x = 10;\n this.shift_y = shift_y;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveTempo;\n }\n setTempo(tempo) {\n this.tempo = tempo;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n draw(stave, shift_x) {\n const ctx = stave.checkContext();\n this.setRendered();\n const options = this.render_options;\n // FIXME: What does the '38' mean? Why 38? Is that supposed to\n // be the default font size for standard notation?\n const scale = options.glyph_font_scale / 38;\n const name = this.tempo.name;\n const duration = this.tempo.duration;\n const dots = this.tempo.dots || 0;\n const bpm = this.tempo.bpm;\n let x = this.x + this.shift_x + shift_x;\n const y = stave.getYForTopText(1) + this.shift_y;\n ctx.save();\n if (name) {\n ctx.setFont(this.textFont);\n ctx.fillText(name, x, y);\n x += ctx.measureText(name).width;\n }\n if (duration && bpm) {\n // Override the weight and style.\n ctx.setFont(Object.assign(Object.assign({}, this.textFont), { weight: 'normal', style: 'normal' }));\n if (name) {\n x += ctx.measureText(' ').width;\n ctx.fillText('(', x, y);\n x += ctx.measureText('(').width;\n }\n const code = Tables.getGlyphProps(duration);\n x += 3 * scale;\n Glyph.renderGlyph(ctx, x, y, options.glyph_font_scale, code.code_head);\n x += code.getWidth() * scale;\n // Draw stem and flags\n if (code.stem) {\n let stem_height = 30;\n if (code.beam_count)\n stem_height += 3 * (code.beam_count - 1);\n stem_height *= scale;\n const y_top = y - stem_height;\n ctx.fillRect(x - scale, y_top, scale, stem_height);\n if (code.flag) {\n Glyph.renderGlyph(ctx, x, y_top, options.glyph_font_scale, code.code_flag_upstem, {\n category: 'flag.staveTempo',\n });\n if (!dots)\n x += 6 * scale;\n }\n }\n // Draw dot\n for (let i = 0; i < dots; i++) {\n x += 6 * scale;\n ctx.beginPath();\n ctx.arc(x, y + 2 * scale, 2 * scale, 0, Math.PI * 2, false);\n ctx.fill();\n }\n ctx.fillText(' = ' + bpm + (name ? ')' : ''), x + 3 * scale, y);\n }\n ctx.restore();\n return this;\n }\n}\nStaveTempo.TEXT_FONT = {\n family: Font.SERIF,\n size: 14,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { TextJustification, TextNote } from './textnote';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveText extends StaveModifier {\n constructor(text, position, options = {}) {\n super();\n this.setWidth(16);\n this.text = text;\n this.position = position;\n this.options = Object.assign({ shift_x: 0, shift_y: 0, justification: TextNote.Justification.CENTER }, options);\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveText;\n }\n setStaveText(text) {\n this.text = text;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n setText(text) {\n this.text = text;\n return this;\n }\n draw(stave) {\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n const text_width = ctx.measureText('' + this.text).width;\n let x;\n let y;\n switch (this.position) {\n case StaveModifierPosition.LEFT:\n case StaveModifierPosition.RIGHT:\n y = (stave.getYForLine(0) + stave.getBottomLineY()) / 2 + this.options.shift_y;\n if (this.position === StaveModifierPosition.LEFT) {\n x = stave.getX() - text_width - 24 + this.options.shift_x;\n }\n else {\n x = stave.getX() + stave.getWidth() + 24 + this.options.shift_x;\n }\n break;\n case StaveModifierPosition.ABOVE:\n case StaveModifierPosition.BELOW:\n x = stave.getX() + this.options.shift_x;\n if (this.options.justification === TextJustification.CENTER) {\n x += stave.getWidth() / 2 - text_width / 2;\n }\n else if (this.options.justification === TextJustification.RIGHT) {\n x += stave.getWidth() - text_width;\n }\n if (this.position === StaveModifierPosition.ABOVE) {\n y = stave.getYForTopText(2) + this.options.shift_y;\n }\n else {\n y = stave.getYForBottomText(2) + this.options.shift_y;\n }\n break;\n default:\n throw new RuntimeError('InvalidPosition', 'Value Must be in Modifier.Position.');\n }\n ctx.fillText('' + this.text, x, y + 4);\n ctx.restore();\n return this;\n }\n}\nStaveText.TEXT_FONT = {\n family: Font.SERIF,\n size: 16,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Renders time signatures glyphs for staffs\n// This class is used by TimeSignature to render the associated glyphs\nimport { Glyph } from './glyph';\nimport { defined } from './util';\nexport class TimeSignatureGlyph extends Glyph {\n constructor(timeSignature, topDigits, botDigits, code, point, options) {\n var _a;\n super(code, point, options);\n this.timeSignature = timeSignature;\n this.topGlyphs = [];\n this.botGlyphs = [];\n let topWidth = 0;\n for (let i = 0; i < topDigits.length; ++i) {\n let timeSigType = topDigits[i];\n switch (topDigits[i]) {\n case '-':\n timeSigType = 'Minus';\n break;\n case '+':\n timeSigType = botDigits.length > 0 ? 'PlusSmall' : 'Plus';\n break;\n case '(':\n timeSigType = botDigits.length > 0 ? 'ParensLeftSmall' : 'ParensLeft';\n break;\n case ')':\n timeSigType = botDigits.length > 0 ? 'ParensRightSmall' : 'ParensRight';\n break;\n }\n const topGlyph = new Glyph('timeSig' + timeSigType, this.timeSignature.point);\n this.topGlyphs.push(topGlyph);\n topWidth += (_a = topGlyph.getMetrics().width) !== null && _a !== void 0 ? _a : 0;\n }\n let botWidth = 0;\n for (let i = 0; i < botDigits.length; ++i) {\n let timeSigType = botDigits[i];\n switch (botDigits[i]) {\n case '+':\n timeSigType = 'PlusSmall';\n break;\n case '(':\n timeSigType = 'ParensLeftSmall';\n break;\n case ')':\n timeSigType = 'ParensRightSmall';\n break;\n }\n const botGlyph = new Glyph('timeSig' + timeSigType, this.timeSignature.point);\n this.botGlyphs.push(botGlyph);\n botWidth += defined(botGlyph.getMetrics().width);\n }\n this.width = Math.max(topWidth, botWidth);\n this.xMin = this.getMetrics().x_min;\n this.topStartX = (this.width - topWidth) / 2.0;\n this.botStartX = (this.width - botWidth) / 2.0;\n this.reset();\n }\n getMetrics() {\n return {\n x_min: this.xMin,\n x_max: this.xMin + this.width,\n width: this.width,\n };\n }\n renderToStave(x) {\n const stave = this.checkStave();\n const ctx = this.checkContext();\n let start_x = x + this.topStartX;\n let y = 0;\n if (this.botGlyphs.length > 0)\n y = stave.getYForLine(this.timeSignature.topLine);\n else\n y = (stave.getYForLine(this.timeSignature.topLine) + stave.getYForLine(this.timeSignature.bottomLine)) / 2;\n for (let i = 0; i < this.topGlyphs.length; ++i) {\n const glyph = this.topGlyphs[i];\n Glyph.renderOutline(ctx, glyph.getMetrics().outline, this.scale, start_x + this.x_shift, y);\n start_x += defined(glyph.getMetrics().width);\n }\n start_x = x + this.botStartX;\n y = stave.getYForLine(this.timeSignature.bottomLine);\n for (let i = 0; i < this.botGlyphs.length; ++i) {\n const glyph = this.botGlyphs[i];\n this.timeSignature.placeGlyphOnLine(glyph, stave, 0);\n Glyph.renderOutline(ctx, glyph.getMetrics().outline, this.scale, start_x + glyph.getMetrics().x_shift, y);\n start_x += defined(glyph.getMetrics().width);\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Implements time signatures glyphs for staffs\n// See tables.js for the internal time signatures\n// representation\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { TimeSignatureGlyph } from './timesigglyph';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nconst assertIsValidTimeSig = (timeSpec) => {\n const numbers = timeSpec.split('/');\n if (numbers.length !== 2 && numbers[0] !== '+' && numbers[0] !== '-') {\n throw new RuntimeError('BadTimeSignature', `Invalid time spec: ${timeSpec}. Must be in the form \"/\"`);\n }\n numbers.forEach((number) => {\n // Characters consisting in number 0..9, '+', '-', '(' or ')'\n if (/^[0-9+\\-()]+$/.test(number) == false) {\n throw new RuntimeError('BadTimeSignature', `Invalid time spec: ${timeSpec}. Must contain valid signatures.`);\n }\n });\n};\nexport class TimeSignature extends StaveModifier {\n constructor(timeSpec = '4/4', customPadding = 15, validate_args = true) {\n super();\n this.validate_args = validate_args;\n const padding = customPadding;\n const musicFont = Tables.currentMusicFont();\n this.point = musicFont.lookupMetric('digits.point');\n const fontLineShift = musicFont.lookupMetric('digits.shiftLine', 0);\n this.topLine = 2 + fontLineShift;\n this.bottomLine = 4 + fontLineShift;\n this.setPosition(StaveModifierPosition.BEGIN);\n this.info = this.parseTimeSpec(timeSpec);\n this.setWidth(defined(this.info.glyph.getMetrics().width));\n this.setPadding(padding);\n }\n static get CATEGORY() {\n return Category.TimeSignature;\n }\n static get glyphs() {\n return {\n C: {\n code: 'timeSigCommon',\n point: 40,\n line: 2,\n },\n 'C|': {\n code: 'timeSigCutCommon',\n point: 40,\n line: 2,\n },\n };\n }\n parseTimeSpec(timeSpec) {\n var _a, _b;\n if (timeSpec === 'C' || timeSpec === 'C|') {\n const { line, code, point } = TimeSignature.glyphs[timeSpec];\n return {\n line,\n num: false,\n glyph: new Glyph(code, point),\n };\n }\n if (this.validate_args) {\n assertIsValidTimeSig(timeSpec);\n }\n const parts = timeSpec.split('/');\n return {\n num: true,\n glyph: this.makeTimeSignatureGlyph((_a = parts[0]) !== null && _a !== void 0 ? _a : '', (_b = parts[1]) !== null && _b !== void 0 ? _b : ''),\n };\n }\n makeTimeSignatureGlyph(topDigits, botDigits) {\n return new TimeSignatureGlyph(this, topDigits, botDigits, 'timeSig0', this.point);\n }\n getInfo() {\n return this.info;\n }\n setTimeSig(timeSpec) {\n this.info = this.parseTimeSpec(timeSpec);\n return this;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('timesignature', this.getAttribute('id'));\n this.info.glyph.setStave(stave);\n this.info.glyph.setContext(ctx);\n this.placeGlyphOnLine(this.info.glyph, stave, this.info.line);\n this.info.glyph.renderToStave(this.x);\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Clef } from './clef';\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { KeySignature } from './keysignature';\nimport { Barline, BarlineType } from './stavebarline';\nimport { StaveModifierPosition } from './stavemodifier';\nimport { Repetition } from './staverepetition';\nimport { StaveSection } from './stavesection';\nimport { StaveTempo } from './stavetempo';\nimport { StaveText } from './stavetext';\nimport { Volta } from './stavevolta';\nimport { Tables } from './tables';\nimport { TimeSignature } from './timesignature';\nimport { Category, isBarline } from './typeguard';\nimport { RuntimeError } from './util';\n// Used by Stave.format() to sort the modifiers at the beginning and end of a stave.\n// The keys (computed property names) match the CATEGORY property in the\n// Barline, Clef, KeySignature, TimeSignature classes.\nconst SORT_ORDER_BEG_MODIFIERS = {\n [Barline.CATEGORY]: 0,\n [Clef.CATEGORY]: 1,\n [KeySignature.CATEGORY]: 2,\n [TimeSignature.CATEGORY]: 3,\n};\nconst SORT_ORDER_END_MODIFIERS = {\n [TimeSignature.CATEGORY]: 0,\n [KeySignature.CATEGORY]: 1,\n [Barline.CATEGORY]: 2,\n [Clef.CATEGORY]: 3,\n};\nexport class Stave extends Element {\n constructor(x, y, width, options) {\n super();\n // Initialized by the constructor via this.resetLines().\n this.height = 0;\n this.x = x;\n this.y = y;\n this.width = width;\n this.formatted = false;\n this.start_x = x + 5;\n this.end_x = x + width;\n this.modifiers = []; // stave modifiers (clef, key, time, barlines, coda, segno, etc.)\n this.measure = 0;\n this.clef = 'treble';\n this.endClef = undefined;\n this.resetFont();\n this.options = Object.assign({ vertical_bar_width: 10, num_lines: 5, fill_style: '#999999', left_bar: true, right_bar: true, spacing_between_lines_px: Tables.STAVE_LINE_DISTANCE, space_above_staff_ln: 4, space_below_staff_ln: 4, top_text_position: 1, bottom_text_position: 4, line_config: [] }, options);\n this.bounds = { x: this.x, y: this.y, w: this.width, h: 0 };\n this.defaultLedgerLineStyle = { strokeStyle: '#444', lineWidth: 1.4 };\n this.resetLines();\n // beg bar\n this.addModifier(new Barline(this.options.left_bar ? BarlineType.SINGLE : BarlineType.NONE));\n // end bar\n this.addEndModifier(new Barline(this.options.right_bar ? BarlineType.SINGLE : BarlineType.NONE));\n }\n static get CATEGORY() {\n return Category.Stave;\n }\n // This is the sum of the padding that normally goes on left + right of a stave during\n // drawing. Used to size staves correctly with content width.\n static get defaultPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('stave.padding') + musicFont.lookupMetric('stave.endPaddingMax');\n }\n // Right padding, used by system if startX is already determined.\n static get rightPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('stave.endPaddingMax');\n }\n /** Set default style for ledger lines. */\n setDefaultLedgerLineStyle(style) {\n this.defaultLedgerLineStyle = style;\n }\n /** Get default style for ledger lines. */\n getDefaultLedgerLineStyle() {\n return Object.assign(Object.assign({}, this.getStyle()), this.defaultLedgerLineStyle);\n }\n space(spacing) {\n return this.options.spacing_between_lines_px * spacing;\n }\n resetLines() {\n this.options.line_config = [];\n for (let i = 0; i < this.options.num_lines; i++) {\n this.options.line_config.push({ visible: true });\n }\n this.height = (this.options.num_lines + this.options.space_above_staff_ln) * this.options.spacing_between_lines_px;\n this.options.bottom_text_position = this.options.num_lines;\n }\n setNoteStartX(x) {\n if (!this.formatted)\n this.format();\n this.start_x = x;\n return this;\n }\n getNoteStartX() {\n if (!this.formatted)\n this.format();\n return this.start_x;\n }\n getNoteEndX() {\n if (!this.formatted)\n this.format();\n return this.end_x;\n }\n getTieStartX() {\n return this.start_x;\n }\n getTieEndX() {\n return this.end_x;\n }\n getX() {\n return this.x;\n }\n getNumLines() {\n return this.options.num_lines;\n }\n setNumLines(n) {\n this.options.num_lines = n;\n this.resetLines();\n return this;\n }\n setY(y) {\n this.y = y;\n return this;\n }\n getY() {\n return this.y;\n }\n getTopLineTopY() {\n return this.getYForLine(0) - Tables.STAVE_LINE_THICKNESS / 2;\n }\n getBottomLineBottomY() {\n return this.getYForLine(this.getNumLines() - 1) + Tables.STAVE_LINE_THICKNESS / 2;\n }\n setX(x) {\n const shift = x - this.x;\n this.formatted = false;\n this.x = x;\n this.start_x += shift;\n this.end_x += shift;\n for (let i = 0; i < this.modifiers.length; i++) {\n const mod = this.modifiers[i];\n mod.setX(mod.getX() + shift);\n }\n return this;\n }\n setWidth(width) {\n this.formatted = false;\n this.width = width;\n this.end_x = this.x + width;\n // reset the x position of the end barline (TODO(0xfe): This makes no sense)\n // this.modifiers[1].setX(this.end_x);\n return this;\n }\n getWidth() {\n return this.width;\n }\n getStyle() {\n return Object.assign({ fillStyle: this.options.fill_style, strokeStyle: this.options.fill_style, lineWidth: Tables.STAVE_LINE_THICKNESS }, super.getStyle());\n }\n /**\n * Set the measure number of this Stave.\n */\n setMeasure(measure) {\n this.measure = measure;\n return this;\n }\n /**\n * Return the measure number of this Stave.\n */\n getMeasure() {\n return this.measure;\n }\n /**\n * Gets the pixels to shift from the beginning of the stave\n * following the modifier at the provided index\n * @param {Number} index The index from which to determine the shift\n * @return {Number} The amount of pixels shifted\n */\n getModifierXShift(index = 0) {\n if (typeof index !== 'number') {\n throw new RuntimeError('InvalidIndex', 'Must be of number type');\n }\n if (!this.formatted)\n this.format();\n if (this.getModifiers(StaveModifierPosition.BEGIN).length === 1) {\n return 0;\n }\n // for right position modifiers zero shift seems correct, see 'Volta + Modifier Measure Test'\n if (this.modifiers[index].getPosition() === StaveModifierPosition.RIGHT) {\n return 0;\n }\n let start_x = this.start_x - this.x;\n const begBarline = this.modifiers[0];\n if (begBarline.getType() === BarlineType.REPEAT_BEGIN && start_x > begBarline.getWidth()) {\n start_x -= begBarline.getWidth();\n }\n return start_x;\n }\n /** Coda & Segno Symbol functions */\n setRepetitionType(type, yShift = 0) {\n this.modifiers.push(new Repetition(type, this.x, yShift));\n return this;\n }\n // Volta functions\n setVoltaType(type, number_t, y) {\n this.modifiers.push(new Volta(type, number_t, this.x, y));\n return this;\n }\n // Section functions\n setSection(section, y, xOffset = 0, fontSize, drawRect = true) {\n const staveSection = new StaveSection(section, this.x + xOffset, y, drawRect);\n if (fontSize)\n staveSection.setFontSize(fontSize);\n this.modifiers.push(staveSection);\n return this;\n }\n // Tempo functions\n setTempo(tempo, y) {\n this.modifiers.push(new StaveTempo(tempo, this.x, y));\n return this;\n }\n // Text functions\n setText(text, position, options = {}) {\n this.modifiers.push(new StaveText(text, position, options));\n return this;\n }\n getHeight() {\n return this.height;\n }\n getSpacingBetweenLines() {\n return this.options.spacing_between_lines_px;\n }\n getBoundingBox() {\n return new BoundingBox(this.x, this.y, this.width, this.getBottomY() - this.y);\n }\n getBottomY() {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const score_bottom = this.getYForLine(options.num_lines) + options.space_below_staff_ln * spacing;\n return score_bottom;\n }\n getBottomLineY() {\n return this.getYForLine(this.options.num_lines);\n }\n // This returns\n /** @returns the y for the *center* of a staff line */\n getYForLine(line) {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n const y = this.y + line * spacing + headroom * spacing;\n return y;\n }\n getLineForY(y) {\n // Does the reverse of getYForLine - somewhat dumb and just calls\n // getYForLine until the right value is reaches\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n return (y - this.y) / spacing - headroom;\n }\n getYForTopText(line = 0) {\n return this.getYForLine(-line - this.options.top_text_position);\n }\n getYForBottomText(line = 0) {\n return this.getYForLine(this.options.bottom_text_position + line);\n }\n getYForNote(line) {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n return this.y + headroom * spacing + 5 * spacing - line * spacing;\n }\n getYForGlyphs() {\n return this.getYForLine(3);\n }\n // This method adds a stave modifier to the stave. Note that the first two\n // modifiers (BarLines) are automatically added upon construction.\n addModifier(modifier, position) {\n if (position !== undefined) {\n modifier.setPosition(position);\n }\n modifier.setStave(this);\n this.formatted = false;\n this.modifiers.push(modifier);\n return this;\n }\n addEndModifier(modifier) {\n this.addModifier(modifier, StaveModifierPosition.END);\n return this;\n }\n // Bar Line functions\n setBegBarType(type) {\n // Only valid bar types at beginning of stave is none, single or begin repeat\n const { SINGLE, REPEAT_BEGIN, NONE } = BarlineType;\n if (type === SINGLE || type === REPEAT_BEGIN || type === NONE) {\n this.modifiers[0].setType(type);\n this.formatted = false;\n }\n return this;\n }\n setEndBarType(type) {\n // Repeat end not valid at end of stave\n if (type !== BarlineType.REPEAT_BEGIN) {\n this.modifiers[1].setType(type);\n this.formatted = false;\n }\n return this;\n }\n setClef(clefSpec, size, annotation, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n if (position === StaveModifierPosition.END) {\n this.endClef = clefSpec;\n }\n else {\n this.clef = clefSpec;\n }\n const clefs = this.getModifiers(position, Clef.CATEGORY);\n if (clefs.length === 0) {\n this.addClef(clefSpec, size, annotation, position);\n }\n else {\n clefs[0].setType(clefSpec, size, annotation);\n }\n return this;\n }\n getClef() {\n return this.clef;\n }\n setEndClef(clefSpec, size, annotation) {\n this.setClef(clefSpec, size, annotation, StaveModifierPosition.END);\n return this;\n }\n getEndClef() {\n return this.endClef;\n }\n setKeySignature(keySpec, cancelKeySpec, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n const keySignatures = this.getModifiers(position, KeySignature.CATEGORY);\n if (keySignatures.length === 0) {\n this.addKeySignature(keySpec, cancelKeySpec, position);\n }\n else {\n keySignatures[0].setKeySig(keySpec, cancelKeySpec);\n }\n return this;\n }\n setEndKeySignature(keySpec, cancelKeySpec) {\n this.setKeySignature(keySpec, cancelKeySpec, StaveModifierPosition.END);\n return this;\n }\n setTimeSignature(timeSpec, customPadding, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n const timeSignatures = this.getModifiers(position, TimeSignature.CATEGORY);\n if (timeSignatures.length === 0) {\n this.addTimeSignature(timeSpec, customPadding, position);\n }\n else {\n timeSignatures[0].setTimeSig(timeSpec);\n }\n return this;\n }\n setEndTimeSignature(timeSpec, customPadding) {\n this.setTimeSignature(timeSpec, customPadding, StaveModifierPosition.END);\n return this;\n }\n /**\n * Add a key signature to the stave.\n *\n * Example:\n * `stave.addKeySignature('Db');`\n * @param keySpec new key specification `[A-G][b|#]?`\n * @param cancelKeySpec\n * @param position\n * @returns\n */\n addKeySignature(keySpec, cancelKeySpec, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n this.addModifier(new KeySignature(keySpec, cancelKeySpec).setPosition(position), position);\n return this;\n }\n /**\n * Add a clef to the stave.\n *\n * Example:\n *\n * stave.addClef('treble')\n * @param clef clef (treble|bass|...) see {@link Clef.types}\n * @param size\n * @param annotation\n * @param position\n * @returns\n */\n addClef(clef, size, annotation, position) {\n if (position === undefined || position === StaveModifierPosition.BEGIN) {\n this.clef = clef;\n }\n else if (position === StaveModifierPosition.END) {\n this.endClef = clef;\n }\n this.addModifier(new Clef(clef, size, annotation), position);\n return this;\n }\n addEndClef(clef, size, annotation) {\n this.addClef(clef, size, annotation, StaveModifierPosition.END);\n return this;\n }\n /**\n * Add a time signature to the stave\n *\n * Example:\n *\n * `stave.addTimeSignature('4/4');`\n * @param timeSpec time signature specification `(C\\||C|\\d\\/\\d)`\n * @param customPadding\n * @param position\n * @returns\n */\n addTimeSignature(timeSpec, customPadding, position) {\n this.addModifier(new TimeSignature(timeSpec, customPadding), position);\n return this;\n }\n addEndTimeSignature(timeSpec, customPadding) {\n this.addTimeSignature(timeSpec, customPadding, StaveModifierPosition.END);\n return this;\n }\n // Deprecated\n addTrebleGlyph() {\n this.addClef('treble');\n return this;\n }\n /**\n * @param position\n * @param category\n * @returns array of StaveModifiers that match the provided position and category.\n */\n getModifiers(position, category) {\n const noPosition = position === undefined;\n const noCategory = category === undefined;\n if (noPosition && noCategory) {\n return this.modifiers;\n }\n else if (noPosition) {\n // A category was provided.\n return this.modifiers.filter((m) => category === m.getCategory());\n }\n else if (noCategory) {\n // A position was provided.\n return this.modifiers.filter((m) => position === m.getPosition());\n }\n else {\n // Both position and category were provided!\n return this.modifiers.filter((m) => position === m.getPosition() && category === m.getCategory());\n }\n }\n /**\n * Use the modifier's `getCategory()` as a key for the `order` array.\n * The retrieved value is used to sort modifiers from left to right (0 to to 3).\n */\n sortByCategory(items, order) {\n for (let i = items.length - 1; i >= 0; i--) {\n for (let j = 0; j < i; j++) {\n if (order[items[j].getCategory()] > order[items[j + 1].getCategory()]) {\n const temp = items[j];\n items[j] = items[j + 1];\n items[j + 1] = temp;\n }\n }\n }\n }\n format() {\n const begBarline = this.modifiers[0];\n const endBarline = this.modifiers[1];\n const begModifiers = this.getModifiers(StaveModifierPosition.BEGIN);\n const endModifiers = this.getModifiers(StaveModifierPosition.END);\n this.sortByCategory(begModifiers, SORT_ORDER_BEG_MODIFIERS);\n this.sortByCategory(endModifiers, SORT_ORDER_END_MODIFIERS);\n if (begModifiers.length > 1 && begBarline.getType() === BarlineType.REPEAT_BEGIN) {\n begModifiers.push(begModifiers.splice(0, 1)[0]);\n begModifiers.splice(0, 0, new Barline(BarlineType.SINGLE));\n }\n if (endModifiers.indexOf(endBarline) > 0) {\n endModifiers.splice(0, 0, new Barline(BarlineType.NONE));\n }\n let width;\n let padding;\n let modifier;\n let offset = 0;\n let x = this.x;\n for (let i = 0; i < begModifiers.length; i++) {\n modifier = begModifiers[i];\n padding = modifier.getPadding(i + offset);\n width = modifier.getWidth();\n x += padding;\n modifier.setX(x);\n x += width;\n if (padding + width === 0)\n offset--;\n }\n this.start_x = x;\n x = this.x + this.width;\n const widths = {\n left: 0,\n right: 0,\n paddingRight: 0,\n paddingLeft: 0,\n };\n let lastBarlineIdx = 0;\n for (let i = 0; i < endModifiers.length; i++) {\n modifier = endModifiers[i];\n lastBarlineIdx = isBarline(modifier) ? i : lastBarlineIdx;\n widths.right = 0;\n widths.left = 0;\n widths.paddingRight = 0;\n widths.paddingLeft = 0;\n const layoutMetrics = modifier.getLayoutMetrics();\n if (layoutMetrics) {\n if (i !== 0) {\n widths.right = layoutMetrics.xMax || 0;\n widths.paddingRight = layoutMetrics.paddingRight || 0;\n }\n widths.left = -layoutMetrics.xMin || 0;\n widths.paddingLeft = layoutMetrics.paddingLeft || 0;\n if (i === endModifiers.length - 1) {\n widths.paddingLeft = 0;\n }\n }\n else {\n widths.paddingRight = modifier.getPadding(i - lastBarlineIdx);\n if (i !== 0) {\n widths.right = modifier.getWidth();\n }\n if (i === 0) {\n widths.left = modifier.getWidth();\n }\n }\n x -= widths.paddingRight;\n x -= widths.right;\n modifier.setX(x);\n x -= widths.left;\n x -= widths.paddingLeft;\n }\n this.end_x = endModifiers.length === 1 ? this.x + this.width : x;\n this.formatted = true;\n }\n /**\n * All drawing functions below need the context to be set.\n */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n ctx.openGroup('stave', this.getAttribute('id'));\n if (!this.formatted)\n this.format();\n const num_lines = this.options.num_lines;\n const width = this.width;\n const x = this.x;\n let y;\n // Render lines\n for (let line = 0; line < num_lines; line++) {\n y = this.getYForLine(line);\n this.applyStyle();\n if (this.options.line_config[line].visible) {\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.lineTo(x + width, y);\n ctx.stroke();\n }\n this.restoreStyle();\n }\n // Draw the modifiers (bar lines, coda, segno, repeat brackets, etc.)\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n // Only draw modifier if it has a draw function\n if (typeof modifier.draw === 'function') {\n modifier.applyStyle(ctx);\n modifier.draw(this, this.getModifierXShift(i));\n modifier.restoreStyle(ctx);\n }\n }\n // Render measure numbers\n if (this.measure > 0) {\n ctx.save();\n ctx.setFont(this.textFont);\n const textWidth = ctx.measureText('' + this.measure).width;\n y = this.getYForTopText(0) + 3;\n ctx.fillText('' + this.measure, this.x - textWidth / 2, y);\n ctx.restore();\n }\n ctx.closeGroup();\n return this;\n }\n getVerticalBarWidth() {\n return this.options.vertical_bar_width;\n }\n /**\n * Get the current configuration for the Stave.\n * @return {Array} An array of configuration objects.\n */\n getConfigForLines() {\n return this.options.line_config;\n }\n /**\n * Configure properties of the lines in the Stave\n * @param line_number The index of the line to configure.\n * @param line_config An configuration object for the specified line.\n * @throws RuntimeError \"StaveConfigError\" When the specified line number is out of\n * range of the number of lines specified in the constructor.\n */\n setConfigForLine(line_number, line_config) {\n if (line_number >= this.options.num_lines || line_number < 0) {\n throw new RuntimeError('StaveConfigError', 'The line number must be within the range of the number of lines in the Stave.');\n }\n if (line_config.visible === undefined) {\n throw new RuntimeError('StaveConfigError', \"The line configuration object is missing the 'visible' property.\");\n }\n if (typeof line_config.visible !== 'boolean') {\n throw new RuntimeError('StaveConfigError', \"The line configuration objects 'visible' property must be true or false.\");\n }\n this.options.line_config[line_number] = line_config;\n return this;\n }\n /**\n * Set the staff line configuration array for all of the lines at once.\n * @param lines_configuration An array of line configuration objects. These objects\n * are of the same format as the single one passed in to setLineConfiguration().\n * The caller can set null for any line config entry if it is desired that the default be used\n * @throws RuntimeError \"StaveConfigError\" When the lines_configuration array does not have\n * exactly the same number of elements as the num_lines configuration object set in\n * the constructor.\n */\n setConfigForLines(lines_configuration) {\n if (lines_configuration.length !== this.options.num_lines) {\n throw new RuntimeError('StaveConfigError', 'The length of the lines configuration array must match the number of lines in the Stave');\n }\n // Make sure the defaults are present in case an incomplete set of\n // configuration options were supplied.\n // eslint-disable-next-line\n for (const line_config in lines_configuration) {\n // Allow '{}' to be used if the caller just wants the default for a particular node.\n if (lines_configuration[line_config].visible == undefined) {\n lines_configuration[line_config] = this.options.line_config[line_config];\n }\n this.options.line_config[line_config] = Object.assign(Object.assign({}, this.options.line_config[line_config]), lines_configuration[line_config]);\n }\n this.options.line_config = lines_configuration;\n return this;\n }\n static formatBegModifiers(staves) {\n let maxX = 0;\n // align note start\n staves.forEach((stave) => {\n if (stave.getNoteStartX() > maxX)\n maxX = stave.getNoteStartX();\n });\n staves.forEach((stave) => {\n stave.setNoteStartX(maxX);\n });\n maxX = 0;\n // align REPEAT_BEGIN\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.Barline);\n modifiers.forEach((modifier) => {\n if (modifier.getType() == BarlineType.REPEAT_BEGIN)\n if (modifier.getX() > maxX)\n maxX = modifier.getX();\n });\n });\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.Barline);\n modifiers.forEach((modifier) => {\n if (modifier.getType() == BarlineType.REPEAT_BEGIN)\n modifier.setX(maxX);\n });\n });\n maxX = 0;\n // Align time signatures\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.TimeSignature);\n modifiers.forEach((modifier) => {\n if (modifier.getX() > maxX)\n maxX = modifier.getX();\n });\n });\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.TimeSignature);\n modifiers.forEach((modifier) => {\n modifier.setX(maxX);\n });\n });\n }\n}\nStave.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 8,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nfunction drawBoldDoubleLine(ctx, type, topX, topY, botY) {\n if (type !== StaveConnector.type.BOLD_DOUBLE_LEFT && type !== StaveConnector.type.BOLD_DOUBLE_RIGHT) {\n throw new RuntimeError('InvalidConnector', 'A REPEAT_BEGIN or REPEAT_END type must be provided.');\n }\n let x_shift = 3;\n let variableWidth = 3.5; // Width for avoiding anti-aliasing width issues\n const thickLineOffset = 2; // For aesthetics\n if (type === StaveConnector.type.BOLD_DOUBLE_RIGHT) {\n x_shift = -5; // Flips the side of the thin line\n variableWidth = 3;\n }\n // Thin line\n ctx.fillRect(topX + x_shift, topY, 1, botY - topY);\n // Thick line\n ctx.fillRect(topX - thickLineOffset, topY, variableWidth, botY - topY);\n}\n/** StaveConnector implements the connector lines between staves of a system. */\nexport class StaveConnector extends Element {\n constructor(top_stave, bottom_stave) {\n super();\n this.thickness = Tables.STAVE_LINE_THICKNESS;\n this.width = 3;\n this.top_stave = top_stave;\n this.bottom_stave = bottom_stave;\n this.type = StaveConnector.type.DOUBLE;\n this.resetFont();\n // 1. Offset Bold Double Left to align with offset Repeat Begin bars\n // 2. Offset BRACE type not to overlap with another StaveConnector\n this.x_shift = 0;\n this.texts = [];\n }\n static get CATEGORY() {\n return Category.StaveConnector;\n }\n /**\n * Set type.\n * @param type see {@link StaveConnector.type} & {@link StaveConnector.typeString}\n */\n setType(type) {\n const newType = typeof type === 'string' ? StaveConnector.typeString[type] : type;\n // Be certain that the type is a valid type:\n if (Object.values(StaveConnector.type).includes(newType)) {\n this.type = newType;\n }\n return this;\n }\n /**\n * Get type.\n * @returns number {@link StaveConnector.type}\n */\n getType() {\n return this.type;\n }\n /** Set optional associated Text. */\n setText(text, options = {}) {\n this.texts.push({\n content: text,\n options: Object.assign({ shift_x: 0, shift_y: 0 }, options),\n });\n return this;\n }\n setXShift(x_shift) {\n if (typeof x_shift !== 'number') {\n throw new RuntimeError('InvalidType', 'x_shift must be a Number');\n }\n this.x_shift = x_shift;\n return this;\n }\n getXShift() {\n return this.x_shift;\n }\n /** Render connector and associated text. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let topY = this.top_stave.getYForLine(0);\n let botY = this.bottom_stave.getYForLine(this.bottom_stave.getNumLines() - 1) + this.thickness;\n let width = this.width;\n let topX = this.top_stave.getX();\n const isRightSidedConnector = this.type === StaveConnector.type.SINGLE_RIGHT ||\n this.type === StaveConnector.type.BOLD_DOUBLE_RIGHT ||\n this.type === StaveConnector.type.THIN_DOUBLE;\n if (isRightSidedConnector) {\n topX = this.top_stave.getX() + this.top_stave.getWidth();\n }\n let attachment_height = botY - topY;\n switch (this.type) {\n case StaveConnector.type.SINGLE:\n width = 1;\n break;\n case StaveConnector.type.SINGLE_LEFT:\n width = 1;\n break;\n case StaveConnector.type.SINGLE_RIGHT:\n width = 1;\n break;\n case StaveConnector.type.DOUBLE:\n topX -= this.width + 2;\n topY -= this.thickness;\n attachment_height += 0.5;\n break;\n case StaveConnector.type.BRACE: {\n width = 12;\n // May need additional code to draw brace\n const x1 = this.top_stave.getX() - 2 + this.x_shift;\n const y1 = topY;\n const x3 = x1;\n const y3 = botY;\n const x2 = x1 - width;\n const y2 = y1 + attachment_height / 2.0;\n const cpx1 = x2 - 0.9 * width;\n const cpy1 = y1 + 0.2 * attachment_height;\n const cpx2 = x1 + 1.1 * width;\n const cpy2 = y2 - 0.135 * attachment_height;\n const cpx3 = cpx2;\n const cpy3 = y2 + 0.135 * attachment_height;\n const cpx4 = cpx1;\n const cpy4 = y3 - 0.2 * attachment_height;\n const cpx5 = x2 - width;\n const cpy5 = cpy4;\n const cpx6 = x1 + 0.4 * width;\n const cpy6 = y2 + 0.135 * attachment_height;\n const cpx7 = cpx6;\n const cpy7 = y2 - 0.135 * attachment_height;\n const cpx8 = cpx5;\n const cpy8 = cpy1;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);\n ctx.bezierCurveTo(cpx3, cpy3, cpx4, cpy4, x3, y3);\n ctx.bezierCurveTo(cpx5, cpy5, cpx6, cpy6, x2, y2);\n ctx.bezierCurveTo(cpx7, cpy7, cpx8, cpy8, x1, y1);\n ctx.fill();\n ctx.stroke();\n break;\n }\n case StaveConnector.type.BRACKET:\n topY -= 6;\n botY += 6;\n attachment_height = botY - topY;\n Glyph.renderGlyph(ctx, topX - 5, topY, 40, 'bracketTop');\n Glyph.renderGlyph(ctx, topX - 5, botY, 40, 'bracketBottom');\n topX -= this.width + 2;\n break;\n case StaveConnector.type.BOLD_DOUBLE_LEFT:\n drawBoldDoubleLine(ctx, this.type, topX + this.x_shift, topY, botY - this.thickness);\n break;\n case StaveConnector.type.BOLD_DOUBLE_RIGHT:\n drawBoldDoubleLine(ctx, this.type, topX, topY, botY - this.thickness);\n break;\n case StaveConnector.type.THIN_DOUBLE:\n width = 1;\n attachment_height -= this.thickness;\n break;\n case StaveConnector.type.NONE:\n break;\n default:\n throw new RuntimeError('InvalidType', `The provided StaveConnector.type (${this.type}) is invalid.`);\n }\n if (this.type !== StaveConnector.type.BRACE &&\n this.type !== StaveConnector.type.BOLD_DOUBLE_LEFT &&\n this.type !== StaveConnector.type.BOLD_DOUBLE_RIGHT &&\n this.type !== StaveConnector.type.NONE) {\n ctx.fillRect(topX, topY, width, attachment_height);\n }\n // If the connector is a thin double barline, draw the paralell line\n if (this.type === StaveConnector.type.THIN_DOUBLE) {\n ctx.fillRect(topX - 3, topY, width, attachment_height);\n }\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n // Add stave connector text\n for (let i = 0; i < this.texts.length; i++) {\n const text = this.texts[i];\n const text_width = ctx.measureText('' + text.content).width;\n const x = this.top_stave.getX() - text_width - 24 + text.options.shift_x;\n const y = (this.top_stave.getYForLine(0) + this.bottom_stave.getBottomLineY()) / 2 + text.options.shift_y;\n ctx.fillText('' + text.content, x, y + 4);\n }\n ctx.restore();\n }\n}\nStaveConnector.TEXT_FONT = {\n family: Font.SERIF,\n size: 16,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n/**\n * SINGLE_LEFT and SINGLE are the same value for compatibility\n * with older versions of vexflow which didn't have right sided\n * stave connectors.\n */\nStaveConnector.type = {\n SINGLE_RIGHT: 0,\n SINGLE_LEFT: 1,\n SINGLE: 1,\n DOUBLE: 2,\n BRACE: 3,\n BRACKET: 4,\n BOLD_DOUBLE_LEFT: 5,\n BOLD_DOUBLE_RIGHT: 6,\n THIN_DOUBLE: 7,\n NONE: 8,\n};\n/**\n * Connector type:\n * * \"singleRight\"\n * * \"singleLeft\"\n * * \"single\"\n * * \"double\"\n * * \"brace\"\n * * \"bracket\"\n * * \"boldDoubleLeft\"\n * * \"boldDoubleRight\"\n * * \"thinDouble\"\n * * \"none\"\n */\nStaveConnector.typeString = {\n singleRight: StaveConnector.type.SINGLE_RIGHT,\n singleLeft: StaveConnector.type.SINGLE_LEFT,\n single: StaveConnector.type.SINGLE,\n double: StaveConnector.type.DOUBLE,\n brace: StaveConnector.type.BRACE,\n bracket: StaveConnector.type.BRACKET,\n boldDoubleLeft: StaveConnector.type.BOLD_DOUBLE_LEFT,\n boldDoubleRight: StaveConnector.type.BOLD_DOUBLE_RIGHT,\n thinDouble: StaveConnector.type.THIN_DOUBLE,\n none: StaveConnector.type.NONE,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Beam } from './beam';\nimport { Font } from './font';\nimport { Fraction } from './fraction';\nimport { ModifierContext } from './modifiercontext';\nimport { Stave } from './stave';\nimport { StaveConnector } from './staveconnector';\nimport { Tables } from './tables';\nimport { TickContext } from './tickcontext';\nimport { isNote, isStaveNote } from './typeguard';\nimport { defined, log, midLine, RuntimeError } from './util';\nimport { Voice } from './voice';\n// Helper function\nconst sumArray = (arr) => arr.reduce((a, b) => a + b, 0);\n/**\n * Create `Alignment`s for each tick in `voices`. Also calculate the\n * total number of ticks in voices.\n */\nfunction createContexts(voices, makeContext, addToContext) {\n if (voices.length == 0)\n return {\n map: {},\n array: [],\n list: [],\n resolutionMultiplier: 0,\n };\n // Initialize tick maps.\n const tickToContextMap = {};\n const tickList = [];\n const contexts = [];\n const resolutionMultiplier = Formatter.getResolutionMultiplier(voices);\n // For each voice, extract notes and create a context for every\n // new tick that hasn't been seen before.\n voices.forEach((voice, voiceIndex) => {\n // Use resolution multiplier as denominator so that no additional expansion\n // of fractional tick values is needed.\n const ticksUsed = new Fraction(0, resolutionMultiplier);\n voice.getTickables().forEach((tickable) => {\n const integerTicks = ticksUsed.numerator;\n // If we have no tick context for this tick, create one.\n if (!tickToContextMap[integerTicks]) {\n const newContext = makeContext({ tickID: integerTicks });\n contexts.push(newContext);\n tickToContextMap[integerTicks] = newContext;\n // Maintain a list of unique integerTicks.\n tickList.push(integerTicks);\n }\n // Add this tickable to the TickContext.\n addToContext(tickable, tickToContextMap[integerTicks], voiceIndex);\n ticksUsed.add(tickable.getTicks());\n });\n });\n return {\n map: tickToContextMap,\n array: contexts,\n list: tickList.sort((a, b) => a - b),\n resolutionMultiplier,\n };\n}\n// eslint-disable-next-line\nfunction L(...args) {\n if (Formatter.DEBUG)\n log('Vex.Flow.Formatter', args);\n}\n/**\n * Get the rest line number of the next non-rest note(s).\n * @param notes array of Notes\n * @param currRestLine\n * @param currNoteIndex current note index\n * @param compare if true, return the midpoint between the current rest line and the next rest line\n * @returns a line number, which determines the vertical position of a rest.\n */\nfunction getRestLineForNextNoteGroup(notes, currRestLine, currNoteIndex, compare) {\n // If no valid next note group, nextRestLine is same as current.\n let nextRestLine = currRestLine;\n // Start with the next note and keep going until we find a valid non-rest note group.\n for (let noteIndex = currNoteIndex + 1; noteIndex < notes.length; noteIndex++) {\n const note = notes[noteIndex];\n if (isNote(note) && !note.isRest() && !note.shouldIgnoreTicks()) {\n nextRestLine = note.getLineForRest();\n break;\n }\n }\n // Locate the mid point between two lines.\n if (compare && currRestLine !== nextRestLine) {\n const top = Math.max(currRestLine, nextRestLine);\n const bot = Math.min(currRestLine, nextRestLine);\n nextRestLine = midLine(top, bot);\n }\n return nextRestLine;\n}\n/**\n * Format implements the formatting and layout algorithms that are used\n * to position notes in a voice. The algorithm can align multiple voices both\n * within a stave, and across multiple staves.\n *\n * To do this, the formatter breaks up voices into a grid of rational-valued\n * `ticks`, to which each note is assigned. Then, minimum widths are assigned\n * to each tick based on the widths of the notes and modifiers in that tick. This\n * establishes the smallest amount of space required for each tick.\n *\n * Finally, the formatter distributes the left over space proportionally to\n * all the ticks, setting the `x` values of the notes in each tick.\n *\n * See `tests/formatter_tests.ts` for usage examples. The helper functions included\n * here (`FormatAndDraw`, `FormatAndDrawTab`) also serve as useful usage examples.\n */\nexport class Formatter {\n constructor(options) {\n this.formatterOptions = Object.assign({ globalSoftmax: false, softmaxFactor: Tables.SOFTMAX_FACTOR, maxIterations: 5 }, options);\n this.justifyWidth = 0;\n this.totalCost = 0;\n this.totalShift = 0;\n this.durationStats = {};\n // Minimum width required to render all the notes in the voices.\n this.minTotalWidth = 0;\n // This is set to `true` after `minTotalWidth` is calculated.\n this.hasMinTotalWidth = false;\n // Arrays of tick and modifier contexts.\n this.tickContexts = {\n map: {},\n array: [],\n list: [],\n resolutionMultiplier: 0,\n };\n this.modifierContexts = [];\n // Gaps between contexts, for free movement of notes post\n // formatting.\n this.contextGaps = {\n total: 0,\n gaps: [],\n };\n this.voices = [];\n this.lossHistory = [];\n }\n /**\n * Helper function to layout \"notes\" one after the other without\n * regard for proportions. Useful for tests and debugging.\n */\n static SimpleFormat(notes, x = 0, { paddingBetween = 10 } = {}) {\n notes.reduce((accumulator, note) => {\n note.addToModifierContext(new ModifierContext());\n const tick = new TickContext().addTickable(note).preFormat();\n const metrics = tick.getMetrics();\n tick.setX(accumulator + metrics.totalLeftPx);\n return accumulator + tick.getWidth() + metrics.totalRightPx + paddingBetween;\n }, x);\n }\n /** Helper function to plot formatter debug info. */\n static plotDebugging(ctx, formatter, xPos, y1, y2, options) {\n options = Object.assign({ stavePadding: Tables.currentMusicFont().lookupMetric('stave.padding') }, options);\n const x = xPos + options.stavePadding;\n const contextGaps = formatter.contextGaps;\n function stroke(x1, x2, color) {\n ctx.beginPath();\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n ctx.setLineWidth(1);\n ctx.fillRect(x1, y1, Math.max(x2 - x1, 0), y2 - y1);\n }\n ctx.save();\n ctx.setFont(Font.SANS_SERIF, 8);\n contextGaps.gaps.forEach((gap) => {\n stroke(x + gap.x1, x + gap.x2, 'rgba(100,200,100,0.4)');\n ctx.setFillStyle('green');\n ctx.fillText(Math.round(gap.x2 - gap.x1).toString(), x + gap.x1, y2 + 12);\n });\n ctx.setFillStyle('red');\n ctx.fillText(`Loss: ${(formatter.totalCost || 0).toFixed(2)} Shift: ${(formatter.totalShift || 0).toFixed(2)} Gap: ${contextGaps.total.toFixed(2)}`, x - 20, y2 + 27);\n ctx.restore();\n }\n /**\n * Helper function to format and draw a single voice. Returns a bounding\n * box for the notation.\n * @param ctx the rendering context\n * @param stave the stave to which to draw (`Stave` or `TabStave`)\n * @param notes array of `Note` instances (`Note`, `TextNote`, `TabNote`, etc.)\n * @param params one of below:\n * * Setting `autobeam` only `(context, stave, notes, true)` or\n * `(ctx, stave, notes, {autobeam: true})`\n * * Setting `align_rests` a struct is needed `(context, stave, notes, {align_rests: true})`\n * * Setting both a struct is needed `(context, stave, notes, {\n * autobeam: true, align_rests: true})`\n * * `autobeam` automatically generates beams for the notes.\n * * `align_rests` aligns rests with nearby notes.\n */\n static FormatAndDraw(ctx, stave, notes, params) {\n let options = {\n auto_beam: false,\n align_rests: false,\n };\n if (typeof params === 'object') {\n options = Object.assign(Object.assign({}, options), params);\n }\n else if (typeof params === 'boolean') {\n options.auto_beam = params;\n }\n // Start by creating a voice and adding all the notes to it.\n const voice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(notes);\n // Then create beams, if requested.\n const beams = options.auto_beam ? Beam.applyAndGetBeams(voice) : [];\n // Instantiate a `Formatter` and format the notes.\n new Formatter()\n .joinVoices([voice]) // , { align_rests: options.align_rests })\n .formatToStave([voice], stave, { align_rests: options.align_rests, stave });\n // Render the voice and beams to the stave.\n voice.setStave(stave).draw(ctx, stave);\n beams.forEach((beam) => beam.setContext(ctx).draw());\n // Return the bounding box of the voice.\n return voice.getBoundingBox();\n }\n /**\n * Helper function to format and draw aligned tab and stave notes in two\n * separate staves.\n * @param ctx the rendering context\n * @param tabstave a `TabStave` instance on which to render `TabNote`s.\n * @param stave a `Stave` instance on which to render `Note`s.\n * @param notes array of `Note` instances for the stave (`Note`, `BarNote`, etc.)\n * @param tabnotes array of `Note` instances for the tab stave (`TabNote`, `BarNote`, etc.)\n * @param autobeam automatically generate beams.\n * @param params a configuration object:\n * * `autobeam` automatically generates beams for the notes.\n * * `align_rests` aligns rests with nearby notes.\n */\n static FormatAndDrawTab(ctx, tabstave, stave, tabnotes, notes, autobeam, params) {\n let opts = {\n auto_beam: autobeam,\n align_rests: false,\n };\n if (typeof params === 'object') {\n opts = Object.assign(Object.assign({}, opts), params);\n }\n else if (typeof params === 'boolean') {\n opts.auto_beam = params;\n }\n // Create a `4/4` voice for `notes`.\n const notevoice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(notes);\n // Create a `4/4` voice for `tabnotes`.\n const tabvoice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(tabnotes);\n // Then create beams, if requested.\n const beams = opts.auto_beam ? Beam.applyAndGetBeams(notevoice) : [];\n // Instantiate a `Formatter` and align tab and stave notes.\n new Formatter()\n .joinVoices([notevoice]) // , { align_rests: opts.align_rests })\n .joinVoices([tabvoice])\n .formatToStave([notevoice, tabvoice], stave, { align_rests: opts.align_rests });\n // Render voices and beams to staves.\n notevoice.draw(ctx, stave);\n tabvoice.draw(ctx, tabstave);\n beams.forEach((beam) => beam.setContext(ctx).draw());\n // Draw a connector between tab and note staves.\n new StaveConnector(stave, tabstave).setContext(ctx).draw();\n }\n /**\n * Automatically set the vertical position of rests based on previous/next note positions.\n * @param tickables an array of Tickables.\n * @param alignAllNotes If `false`, only align rests that are within a group of beamed notes.\n * @param alignTuplets If `false`, ignores tuplets.\n */\n static AlignRestsToNotes(tickables, alignAllNotes, alignTuplets) {\n tickables.forEach((currTickable, index) => {\n if (isStaveNote(currTickable) && currTickable.isRest()) {\n if (currTickable.getTuplet() && !alignTuplets) {\n return;\n }\n // If activated rests not on default can be rendered as specified.\n const position = currTickable.getGlyph().position.toUpperCase();\n if (position !== 'R/4' && position !== 'B/4') {\n return;\n }\n if (alignAllNotes || currTickable.getBeam()) {\n // Align rests with previous/next notes.\n const props = currTickable.getKeyProps()[0];\n if (index === 0) {\n props.line = getRestLineForNextNoteGroup(tickables, props.line, index, false);\n }\n else if (index > 0 && index < tickables.length) {\n // If previous tickable is a rest, use its line number.\n const prevTickable = tickables[index - 1];\n if (isStaveNote(prevTickable)) {\n if (prevTickable.isRest()) {\n props.line = prevTickable.getKeyProps()[0].line;\n }\n else {\n const restLine = prevTickable.getLineForRest();\n // Get the rest line for next valid non-rest note group.\n props.line = getRestLineForNextNoteGroup(tickables, restLine, index, true);\n }\n }\n }\n currTickable.setKeyLine(0, props.line);\n }\n }\n });\n }\n /**\n * Find all the rests in each of the `voices` and align them to neighboring notes.\n *\n * @param voices\n * @param alignAllNotes If `false`, only align rests within beamed groups of notes. If `true`, align all rests.\n */\n alignRests(voices, alignAllNotes) {\n if (!voices || !voices.length) {\n throw new RuntimeError('BadArgument', 'No voices to format rests');\n }\n voices.forEach((voice) => Formatter.AlignRestsToNotes(voice.getTickables(), alignAllNotes));\n }\n /**\n * Estimate the width required to render 'voices'. This is done by:\n * 1. Sum the widths of all the tick contexts\n * 2. Estimate the padding.\n * The latter is done by calculating the padding 3 different ways, and taking the\n * greatest value:\n * 1. the padding required for unaligned notes in different voices\n * 2. the padding based on the stddev of the tickable widths\n * 3. the padding based on the stddev of the tickable durations.\n *\n * The last 2 quantities estimate a 'width entropy', where notes might need more\n * room than the proportional formatting gives them. A measure of all same duration\n * and width will need no extra padding, and all these quantities will be\n * zero in that case.\n *\n * Note: joinVoices has to be called before calling preCalculateMinTotalWidth.\n *\n * @param voices the voices that contain the notes\n * @returns the estimated width in pixels\n */\n preCalculateMinTotalWidth(voices) {\n const unalignedPadding = Tables.currentMusicFont().lookupMetric('stave.unalignedNotePadding');\n // Calculate additional padding based on 3 methods:\n // 1) unaligned beats in voices, 2) variance of width, 3) variance of durations\n let unalignedCtxCount = 0;\n let wsum = 0;\n let dsum = 0;\n const widths = [];\n const durations = [];\n // Cache results.\n if (this.hasMinTotalWidth)\n return this.minTotalWidth;\n // Create tick contexts.\n if (!voices) {\n throw new RuntimeError('BadArgument', \"'voices' required to run preCalculateMinTotalWidth\");\n }\n this.createTickContexts(voices);\n // eslint-disable-next-line\n const { list: contextList, map: contextMap } = this.tickContexts;\n this.minTotalWidth = 0;\n // Go through each tick context and calculate total width,\n // and also accumulate values used in padding hints\n contextList.forEach((tick) => {\n const context = contextMap[tick];\n context.preFormat();\n // If this TC doesn't have all the voices on it, it's unaligned.\n // so increment the unaligned padding accumulator\n if (context.getTickables().length < voices.length) {\n unalignedCtxCount += 1;\n }\n // Calculate the 'width entropy' over all the Tickables.\n context.getTickables().forEach((t) => {\n wsum += t.getMetrics().width;\n dsum += t.getTicks().value();\n widths.push(t.getMetrics().width);\n durations.push(t.getTicks().value());\n });\n const width = context.getWidth();\n this.minTotalWidth += width;\n });\n this.hasMinTotalWidth = true;\n // normalized (0-1) STDDEV of widths/durations gives us padding hints.\n const wavg = wsum > 0 ? wsum / widths.length : 1 / widths.length;\n const wvar = sumArray(widths.map((ll) => Math.pow(ll - wavg, 2)));\n const wpads = Math.pow(wvar / widths.length, 0.5) / wavg;\n const davg = dsum / durations.length;\n const dvar = sumArray(durations.map((ll) => Math.pow(ll - davg, 2)));\n const dpads = Math.pow(dvar / durations.length, 0.5) / davg;\n // Find max of 3 methods pad the width with that\n const padmax = Math.max(dpads, wpads) * contextList.length * unalignedPadding;\n const unalignedPad = unalignedPadding * unalignedCtxCount;\n return this.minTotalWidth + Math.max(unalignedPad, padmax);\n }\n /**\n * Get minimum width required to render all voices. Either `format` or\n * `preCalculateMinTotalWidth` must be called before this method.\n */\n getMinTotalWidth() {\n if (!this.hasMinTotalWidth) {\n throw new RuntimeError('NoMinTotalWidth', \"Call 'preCalculateMinTotalWidth' or 'preFormat' before calling 'getMinTotalWidth'\");\n }\n return this.minTotalWidth;\n }\n /** Calculate the resolution multiplier for `voices`. */\n static getResolutionMultiplier(voices) {\n if (!voices || !voices.length) {\n throw new RuntimeError('BadArgument', 'No voices to format');\n }\n const totalTicks = voices[0].getTotalTicks();\n const resolutionMultiplier = voices.reduce((accumulator, voice) => {\n if (!voice.getTotalTicks().equals(totalTicks)) {\n throw new RuntimeError('TickMismatch', 'Voices should have same total note duration in ticks.');\n }\n if (voice.getMode() === Voice.Mode.STRICT && !voice.isComplete()) {\n throw new RuntimeError('IncompleteVoice', 'Voice does not have enough notes.');\n }\n return Math.max(accumulator, Fraction.LCM(accumulator, voice.getResolutionMultiplier()));\n }, 1);\n return resolutionMultiplier;\n }\n /** Create a `ModifierContext` for each tick in `voices`. */\n createModifierContexts(voices) {\n if (voices.length == 0)\n return;\n const resolutionMultiplier = Formatter.getResolutionMultiplier(voices);\n // Initialize tick maps.\n const tickToContextMap = new Map();\n const contexts = [];\n // For each voice, extract notes and create a context for every\n // new tick that hasn't been seen before.\n voices.forEach((voice) => {\n // Use resolution multiplier as denominator so that no additional expansion\n // of fractional tick values is needed.\n const ticksUsed = new Fraction(0, resolutionMultiplier);\n voice.getTickables().forEach((tickable) => {\n const integerTicks = ticksUsed.numerator;\n let staveTickToContextMap = tickToContextMap.get(tickable.getStave());\n // If we have no tick context for this tick, create one.\n if (!staveTickToContextMap) {\n tickToContextMap.set(tickable.getStave(), {});\n staveTickToContextMap = tickToContextMap.get(tickable.getStave());\n }\n if (!(staveTickToContextMap ? staveTickToContextMap[integerTicks] : undefined)) {\n const newContext = new ModifierContext();\n contexts.push(newContext);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n staveTickToContextMap[integerTicks] = newContext;\n }\n // Add this tickable to the TickContext.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n tickable.addToModifierContext(staveTickToContextMap[integerTicks]);\n ticksUsed.add(tickable.getTicks());\n });\n });\n this.modifierContexts.push({\n map: tickToContextMap,\n array: contexts,\n resolutionMultiplier,\n });\n }\n /**\n * Create a `TickContext` for each tick in `voices`. Also calculate the\n * total number of ticks in voices.\n */\n createTickContexts(voices) {\n const fn = (tickable, context, voiceIndex) => context.addTickable(tickable, voiceIndex);\n const contexts = createContexts(voices, (tick) => new TickContext(tick), fn);\n this.tickContexts = contexts;\n const contextArray = this.tickContexts.array;\n contextArray.forEach((context) => {\n context.tContexts = contextArray;\n });\n return contexts;\n }\n /**\n * Get the AlignmentContexts of TickContexts that were created by createTickContexts.\n * Returns undefined if createTickContexts has not yet been run.\n */\n getTickContexts() {\n return this.tickContexts;\n }\n /**\n * This is the core formatter logic. Format voices and justify them\n * to `justifyWidth` pixels. `renderingContext` is required to justify elements\n * that can't retrieve widths without a canvas. This method sets the `x` positions\n * of all the tickables/notes in the formatter.\n */\n preFormat(justifyWidth = 0, renderingContext, voicesParam, stave) {\n // Initialize context maps.\n const contexts = this.tickContexts;\n if (!contexts) {\n throw new RuntimeError('NoTickContexts', 'preFormat requires TickContexts');\n }\n const { list: contextList, map: contextMap } = contexts;\n // Reset loss history for evaluator.\n this.lossHistory = [];\n // If voices and a stave were provided, set the Stave for each voice\n // and preFormat to apply Y values to the notes;\n if (voicesParam && stave) {\n voicesParam.forEach((voice) => voice.setStave(stave).preFormat());\n }\n // Now distribute the ticks to each tick context, and assign them their\n // own X positions.\n let x = 0;\n let shift = 0;\n this.minTotalWidth = 0;\n let totalTicks = 0;\n // Pass 1: Give each note maximum width requested by context.\n contextList.forEach((tick) => {\n const context = contextMap[tick];\n // Make sure that all tickables in this context have calculated their\n // space requirements.\n context.preFormat();\n const width = context.getWidth();\n this.minTotalWidth += width;\n const maxTicks = context.getMaxTicks().value();\n totalTicks += maxTicks;\n const metrics = context.getMetrics();\n x = x + shift + metrics.totalLeftPx;\n context.setX(x);\n // Calculate shift for the next tick.\n shift = width - metrics.totalLeftPx;\n });\n // Use softmax based on all notes across all staves. (options.globalSoftmax)\n const { globalSoftmax, softmaxFactor, maxIterations } = this.formatterOptions;\n const exp = (tick) => Math.pow(softmaxFactor, (contextMap[tick].getMaxTicks().value() / totalTicks));\n const expTicksUsed = sumArray(contextList.map(exp));\n this.minTotalWidth = x + shift;\n this.hasMinTotalWidth = true;\n // No justification needed. End formatting.\n if (justifyWidth <= 0)\n return this.evaluate();\n // Start justification. Subtract the right extra pixels of the final context because the formatter\n // justifies based on the context's X position, which is the left-most part of the note head.\n const firstContext = contextMap[contextList[0]];\n const lastContext = contextMap[contextList[contextList.length - 1]];\n // Calculate the \"distance error\" between the tick contexts. The expected distance is the spacing proportional to\n // the softmax of the ticks.\n function calculateIdealDistances(adjustedJustifyWidth) {\n const distances = contextList.map((tick, i) => {\n const context = contextMap[tick];\n const voices = context.getTickablesByVoice();\n let backTickable;\n if (i > 0) {\n const prevContext = contextMap[contextList[i - 1]];\n // Go through each tickable and search backwards for another tickable\n // in the same voice. If found, use that duration (ticks) to calculate\n // the expected distance.\n for (let j = i - 1; j >= 0; j--) {\n const backTick = contextMap[contextList[j]];\n const backVoices = backTick.getTickablesByVoice();\n // Look for matching voices between tick contexts.\n const matchingVoices = [];\n Object.keys(voices).forEach((v) => {\n if (backVoices[v]) {\n matchingVoices.push(v);\n }\n });\n if (matchingVoices.length > 0) {\n // Found matching voices, get largest duration\n let maxTicks = 0;\n let maxNegativeShiftPx = Infinity;\n let expectedDistance = 0;\n matchingVoices.forEach((v) => {\n const ticks = backVoices[v].getTicks().value();\n if (ticks > maxTicks) {\n backTickable = backVoices[v];\n maxTicks = ticks;\n }\n // Calculate the limits of the shift based on modifiers, etc.\n const thisTickable = voices[v];\n const insideLeftEdge = thisTickable.getX() -\n (thisTickable.getMetrics().modLeftPx + thisTickable.getMetrics().leftDisplacedHeadPx);\n const backMetrics = backVoices[v].getMetrics();\n const insideRightEdge = backVoices[v].getX() + backMetrics.notePx + backMetrics.modRightPx + backMetrics.rightDisplacedHeadPx;\n // Don't allow shifting if notes in the same voice can collide\n maxNegativeShiftPx = Math.min(maxNegativeShiftPx, insideLeftEdge - insideRightEdge);\n });\n // Don't shift further left than the notehead of the last context. Actually, stay at most 5% to the right\n // so that two different tick contexts don't align across staves.\n maxNegativeShiftPx = Math.min(maxNegativeShiftPx, context.getX() - (prevContext.getX() + adjustedJustifyWidth * 0.05));\n // Calculate the expected distance of the current context from the last matching tickable. The\n // distance is scaled down by the softmax for the voice.\n if (globalSoftmax) {\n const t = totalTicks;\n expectedDistance = (Math.pow(softmaxFactor, (maxTicks / t)) / expTicksUsed) * adjustedJustifyWidth;\n }\n else if (typeof backTickable !== 'undefined') {\n expectedDistance = backTickable.getVoice().softmax(maxTicks) * adjustedJustifyWidth;\n }\n return {\n expectedDistance,\n maxNegativeShiftPx,\n fromTickable: backTickable,\n };\n }\n }\n }\n return { expectedDistance: 0, fromTickablePx: 0, maxNegativeShiftPx: 0 };\n });\n return distances;\n }\n function shiftToIdealDistances(idealDistances) {\n // Distribute ticks to the contexts based on the calculated distance error.\n const centerX = adjustedJustifyWidth / 2;\n let spaceAccum = 0;\n contextList.forEach((tick, index) => {\n const context = contextMap[tick];\n if (index > 0) {\n const contextX = context.getX();\n const ideal = idealDistances[index];\n const errorPx = defined(ideal.fromTickable).getX() + ideal.expectedDistance - (contextX + spaceAccum);\n let negativeShiftPx = 0;\n if (errorPx > 0) {\n spaceAccum += errorPx;\n }\n else if (errorPx < 0) {\n negativeShiftPx = Math.min(ideal.maxNegativeShiftPx, Math.abs(errorPx));\n spaceAccum += -negativeShiftPx;\n }\n context.setX(contextX + spaceAccum);\n }\n // Move center aligned tickables to middle\n context.getCenterAlignedTickables().forEach((tickable) => {\n tickable.setCenterXShift(centerX - context.getX());\n });\n });\n return lastContext.getX() - firstContext.getX();\n }\n const adjustedJustifyWidth = justifyWidth -\n lastContext.getMetrics().notePx -\n lastContext.getMetrics().totalRightPx -\n firstContext.getMetrics().totalLeftPx;\n const musicFont = Tables.currentMusicFont();\n const configMinPadding = musicFont.lookupMetric('stave.endPaddingMin');\n const configMaxPadding = musicFont.lookupMetric('stave.endPaddingMax');\n const leftPadding = musicFont.lookupMetric('stave.padding');\n let targetWidth = adjustedJustifyWidth;\n const distances = calculateIdealDistances(targetWidth);\n let actualWidth = shiftToIdealDistances(distances);\n // Just one context. Done formatting.\n if (contextList.length === 1)\n return 0;\n const calcMinDistance = (targetWidth, distances) => {\n let mdCalc = targetWidth / 2;\n if (distances.length > 1) {\n for (let di = 1; di < distances.length; ++di) {\n mdCalc = Math.min(distances[di].expectedDistance / 2, mdCalc);\n }\n }\n return mdCalc;\n };\n const minDistance = calcMinDistance(targetWidth, distances);\n // right justify to either the configured padding, or the min distance between notes, whichever is greatest.\n // This * 2 keeps the existing formatting unless there is 'a lot' of extra whitespace, which won't break\n // existing visual regression tests.\n const paddingMaxCalc = (curTargetWidth) => {\n let lastTickablePadding = 0;\n const lastTickable = lastContext && lastContext.getMaxTickable();\n if (lastTickable) {\n const voice = lastTickable.getVoice();\n // If the number of actual ticks in the measure <> configured ticks, right-justify\n // because the softmax won't yield the correct value\n if (voice.getTicksUsed().value() > voice.getTotalTicks().value()) {\n return configMaxPadding * 2 < minDistance ? minDistance : configMaxPadding;\n }\n const tickWidth = lastTickable.getWidth();\n lastTickablePadding =\n voice.softmax(lastContext.getMaxTicks().value()) * curTargetWidth - (tickWidth + leftPadding);\n }\n return configMaxPadding * 2 < lastTickablePadding ? lastTickablePadding : configMaxPadding;\n };\n let paddingMax = paddingMaxCalc(targetWidth);\n let paddingMin = paddingMax - (configMaxPadding - configMinPadding);\n const maxX = adjustedJustifyWidth - paddingMin;\n let iterations = maxIterations;\n // Adjust justification width until the right margin is as close as possible to the calculated padding,\n // without going over\n while ((actualWidth > maxX && iterations > 0) || (actualWidth + paddingMax < maxX && iterations > 1)) {\n targetWidth -= actualWidth - maxX;\n paddingMax = paddingMaxCalc(targetWidth);\n paddingMin = paddingMax - (configMaxPadding - configMinPadding);\n actualWidth = shiftToIdealDistances(calculateIdealDistances(targetWidth));\n iterations--;\n }\n this.justifyWidth = justifyWidth;\n return this.evaluate();\n }\n /** Calculate the total cost of this formatting decision. */\n evaluate() {\n const contexts = this.tickContexts;\n const justifyWidth = this.justifyWidth;\n // Calculate available slack per tick context. This works out how much freedom\n // to move a context has in either direction, without affecting other notes.\n this.contextGaps = { total: 0, gaps: [] };\n contexts.list.forEach((tick, index) => {\n if (index === 0)\n return;\n const prevTick = contexts.list[index - 1];\n const prevContext = contexts.map[prevTick];\n const context = contexts.map[tick];\n const prevMetrics = prevContext.getMetrics();\n const currMetrics = context.getMetrics();\n // Calculate X position of right edge of previous note\n const insideRightEdge = prevContext.getX() + prevMetrics.notePx + prevMetrics.totalRightPx;\n // Calculate X position of left edge of current note\n const insideLeftEdge = context.getX() - currMetrics.totalLeftPx;\n const gap = insideLeftEdge - insideRightEdge;\n this.contextGaps.total += gap;\n this.contextGaps.gaps.push({ x1: insideRightEdge, x2: insideLeftEdge });\n // Tell the tick contexts how much they can reposition themselves.\n context.getFormatterMetrics().freedom.left = gap;\n prevContext.getFormatterMetrics().freedom.right = gap;\n });\n // Calculate mean distance in each voice for each duration type, then calculate\n // how far each note is from the mean.\n this.durationStats = {};\n const durationStats = this.durationStats;\n function updateStats(duration, space) {\n const stats = durationStats[duration];\n if (stats === undefined) {\n durationStats[duration] = { mean: space, count: 1 };\n }\n else {\n stats.count += 1;\n stats.mean = (stats.mean + space) / 2;\n }\n }\n this.voices.forEach((voice) => {\n voice.getTickables().forEach((note, i, notes) => {\n const duration = note.getTicks().clone().simplify().toString();\n const metrics = note.getMetrics();\n const formatterMetrics = note.getFormatterMetrics();\n const leftNoteEdge = note.getX() + metrics.notePx + metrics.modRightPx + metrics.rightDisplacedHeadPx;\n let space = 0;\n if (i < notes.length - 1) {\n const rightNote = notes[i + 1];\n const rightMetrics = rightNote.getMetrics();\n const rightNoteEdge = rightNote.getX() - rightMetrics.modLeftPx - rightMetrics.leftDisplacedHeadPx;\n space = rightNoteEdge - leftNoteEdge;\n formatterMetrics.space.used = rightNote.getX() - note.getX();\n rightNote.getFormatterMetrics().freedom.left = space;\n }\n else {\n space = justifyWidth - leftNoteEdge;\n formatterMetrics.space.used = justifyWidth - note.getX();\n }\n formatterMetrics.freedom.right = space;\n updateStats(duration, formatterMetrics.space.used);\n });\n });\n // Calculate how much each note deviates from the mean. Loss function is square\n // root of the sum of squared deviations.\n let totalDeviation = 0;\n this.voices.forEach((voice) => {\n voice.getTickables().forEach((note) => {\n const duration = note.getTicks().clone().simplify().toString();\n const metrics = note.getFormatterMetrics();\n metrics.space.mean = durationStats[duration].mean;\n metrics.duration = duration;\n metrics.iterations += 1;\n metrics.space.deviation = metrics.space.used - metrics.space.mean;\n totalDeviation += Math.pow(metrics.space.deviation, 2);\n });\n });\n this.totalCost = Math.sqrt(totalDeviation);\n this.lossHistory.push(this.totalCost);\n return this.totalCost;\n }\n /**\n * Run a single iteration of rejustification. At a high level, this method calculates\n * the overall \"loss\" (or cost) of this layout, and repositions tickcontexts in an\n * attempt to reduce the cost. You can call this method multiple times until it finds\n * and oscillates around a global minimum.\n * @param options[alpha] the \"learning rate\" for the formatter. It determines how much of a shift\n * the formatter should make based on its cost function.\n */\n tune(options) {\n var _a;\n const contexts = this.tickContexts;\n if (!contexts) {\n return 0;\n }\n const alpha = (_a = options === null || options === void 0 ? void 0 : options.alpha) !== null && _a !== void 0 ? _a : 0.5;\n // Move `current` tickcontext by `shift` pixels, and adjust the freedom\n // on adjacent tickcontexts.\n function move(current, shift, prev, next) {\n current.setX(current.getX() + shift);\n current.getFormatterMetrics().freedom.left += shift;\n current.getFormatterMetrics().freedom.right -= shift;\n if (prev)\n prev.getFormatterMetrics().freedom.right += shift;\n if (next)\n next.getFormatterMetrics().freedom.left -= shift;\n }\n let shift = 0;\n this.totalShift = 0;\n contexts.list.forEach((tick, index, list) => {\n const context = contexts.map[tick];\n const prevContext = index > 0 ? contexts.map[list[index - 1]] : undefined;\n const nextContext = index < list.length - 1 ? contexts.map[list[index + 1]] : undefined;\n move(context, shift, prevContext, nextContext);\n const cost = -sumArray(context.getTickables().map((t) => t.getFormatterMetrics().space.deviation));\n if (cost > 0) {\n shift = -Math.min(context.getFormatterMetrics().freedom.right, Math.abs(cost));\n }\n else if (cost < 0) {\n if (nextContext) {\n shift = Math.min(nextContext.getFormatterMetrics().freedom.right, Math.abs(cost));\n }\n else {\n shift = 0;\n }\n }\n shift *= alpha;\n this.totalShift += shift;\n });\n return this.evaluate();\n }\n /**\n * This is the top-level call for all formatting logic completed\n * after `x` *and* `y` values have been computed for the notes\n * in the voices.\n */\n postFormat() {\n this.modifierContexts.forEach((modifierContexts) => {\n modifierContexts.array.forEach((mc) => mc.postFormat());\n });\n this.tickContexts.list.forEach((tick) => {\n this.tickContexts.map[tick].postFormat();\n });\n return this;\n }\n /**\n * Take all `voices` and create `ModifierContext`s out of them. This tells\n * the formatters that the voices belong on a single stave.\n */\n joinVoices(voices) {\n this.createModifierContexts(voices);\n this.hasMinTotalWidth = false;\n return this;\n }\n /**\n * Align rests in voices, justify the contexts, and position the notes\n * so voices are aligned and ready to render onto the stave. This method\n * mutates the `x` positions of all tickables in `voices`.\n *\n * Voices are full justified to fit in `justifyWidth` pixels.\n *\n * Set `options.context` to the rendering context. Set `options.align_rests`\n * to true to enable rest alignment.\n */\n format(voices, justifyWidth, options) {\n const opts = Object.assign({ align_rests: false }, options);\n this.voices = voices;\n const softmaxFactor = this.formatterOptions.softmaxFactor;\n if (softmaxFactor) {\n this.voices.forEach((v) => v.setSoftmaxFactor(softmaxFactor));\n }\n this.alignRests(voices, opts.align_rests);\n this.createTickContexts(voices);\n this.preFormat(justifyWidth, opts.context, voices, opts.stave);\n // Only postFormat if a stave was supplied for y value formatting\n if (opts.stave)\n this.postFormat();\n return this;\n }\n // This method is just like `format` except that the `justifyWidth` is inferred from the `stave`.\n formatToStave(voices, stave, optionsParam) {\n const options = Object.assign({ context: stave.getContext() }, optionsParam);\n // eslint-disable-next-line\n const justifyWidth = stave.getNoteEndX() - stave.getNoteStartX() - Stave.defaultPadding;\n L('Formatting voices to width: ', justifyWidth);\n return this.format(voices, justifyWidth, options);\n }\n getTickContext(tick) {\n var _a;\n return (_a = this.tickContexts) === null || _a === void 0 ? void 0 : _a.map[tick];\n }\n}\n// To enable logging for this class. Set `Vex.Flow.Formatter.DEBUG` to `true`.\nFormatter.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n/**\n * ## Description\n *\n * Create a new tuplet from the specified notes. The notes must\n * be part of the same voice. If they are of different rhythmic\n * values, then options.num_notes must be set.\n *\n * @constructor\n * @param {Array.} A set of notes: staveNotes,\n * notes, etc... any class that inherits stemmableNote at some\n * point in its prototype chain.\n * @param options: object {\n *\n * num_notes: fit this many notes into...\n * notes_occupied: ...the space of this many notes\n *\n * Together, these two properties make up the tuplet ratio\n * in the form of num_notes : notes_occupied.\n * num_notes defaults to the number of notes passed in, so\n * it is important that if you omit this property, all of\n * the notes passed should be of the same note value.\n * notes_occupied defaults to 2 -- so you should almost\n * certainly pass this parameter for anything other than\n * a basic triplet.\n *\n * location:\n * default 1, which is above the notes: ┌─── 3 ───┐\n * -1 is below the notes └─── 3 ───┘\n *\n * bracketed: boolean, draw a bracket around the tuplet number\n * when true: ┌─── 3 ───┐ when false: 3\n * defaults to true if notes are not beamed, false otherwise\n *\n * ratioed: boolean\n * when true: ┌─── 7:8 ───┐, when false: ┌─── 7 ───┐\n * defaults to true if the difference between num_notes and\n * notes_occupied is greater than 1.\n *\n * y_offset: int, default 0\n * manually offset a tuplet, for instance to avoid collisions\n * with articulations, etc...\n * }\n */\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { Glyph } from './glyph';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var TupletLocation;\n(function (TupletLocation) {\n TupletLocation[TupletLocation[\"BOTTOM\"] = -1] = \"BOTTOM\";\n TupletLocation[TupletLocation[\"TOP\"] = 1] = \"TOP\";\n})(TupletLocation || (TupletLocation = {}));\nexport class Tuplet extends Element {\n constructor(notes, options = {}) {\n super();\n this.numerator_glyphs = [];\n this.denom_glyphs = [];\n if (!notes || !notes.length) {\n throw new RuntimeError('BadArguments', 'No notes provided for tuplet.');\n }\n this.options = options;\n this.notes = notes;\n this.num_notes = this.options.num_notes != undefined ? this.options.num_notes : notes.length;\n // We accept beats_occupied, but warn that it's deprecated:\n // the preferred property name is now notes_occupied.\n if (this.options.beats_occupied) {\n this.beatsOccupiedDeprecationWarning();\n }\n this.notes_occupied = this.options.notes_occupied || this.options.beats_occupied || 2;\n if (this.options.bracketed != undefined) {\n this.bracketed = this.options.bracketed;\n }\n else {\n this.bracketed = notes.some((note) => !note.hasBeam());\n }\n this.ratioed =\n this.options.ratioed != undefined ? this.options.ratioed : Math.abs(this.notes_occupied - this.num_notes) > 1;\n this.point = Tables.currentMusicFont().lookupMetric('digits.tupletPoint');\n this.y_pos = 16;\n this.x_pos = 100;\n this.width = 200;\n this.setTupletLocation(this.options.location || Tuplet.LOCATION_TOP);\n Formatter.AlignRestsToNotes(notes, true, true);\n this.resolveGlyphs();\n this.attach();\n }\n static get CATEGORY() {\n return Category.Tuplet;\n }\n static get LOCATION_TOP() {\n return TupletLocation.TOP;\n }\n static get LOCATION_BOTTOM() {\n return TupletLocation.BOTTOM;\n }\n static get NESTING_OFFSET() {\n return 15;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.tuplet;\n }\n attach() {\n for (let i = 0; i < this.notes.length; i++) {\n const note = this.notes[i];\n note.setTuplet(this);\n }\n }\n detach() {\n for (let i = 0; i < this.notes.length; i++) {\n const note = this.notes[i];\n note.resetTuplet(this);\n }\n }\n /**\n * Set whether or not the bracket is drawn.\n */\n setBracketed(bracketed) {\n this.bracketed = !!bracketed;\n return this;\n }\n /**\n * Set whether or not the ratio is shown.\n */\n setRatioed(ratioed) {\n this.ratioed = !!ratioed;\n return this;\n }\n /**\n * Set the tuplet indicator to be displayed either on the top or bottom of the stave.\n */\n setTupletLocation(location) {\n if (location !== Tuplet.LOCATION_TOP && location !== Tuplet.LOCATION_BOTTOM) {\n // eslint-disable-next-line\n console.warn(`Invalid tuplet location [${location}]. Using Tuplet.LOCATION_TOP.`);\n location = Tuplet.LOCATION_TOP;\n }\n this.location = location;\n return this;\n }\n getNotes() {\n return this.notes;\n }\n getNoteCount() {\n return this.num_notes;\n }\n beatsOccupiedDeprecationWarning() {\n // eslint-disable-next-line\n console.warn('beats_occupied has been deprecated as an option for tuplets. Please use notes_occupied instead.', 'Calls to getBeatsOccupied / setBeatsOccupied should now be routed to getNotesOccupied / setNotesOccupied.', 'The old methods will be removed in VexFlow 5.0.');\n }\n getBeatsOccupied() {\n this.beatsOccupiedDeprecationWarning();\n return this.getNotesOccupied();\n }\n setBeatsOccupied(beats) {\n this.beatsOccupiedDeprecationWarning();\n return this.setNotesOccupied(beats);\n }\n getNotesOccupied() {\n return this.notes_occupied;\n }\n setNotesOccupied(notes) {\n this.detach();\n this.notes_occupied = notes;\n this.resolveGlyphs();\n this.attach();\n }\n resolveGlyphs() {\n this.numerator_glyphs = [];\n let n = this.num_notes;\n while (n >= 1) {\n this.numerator_glyphs.unshift(new Glyph('timeSig' + (n % 10), this.point));\n n = parseInt((n / 10).toString(), 10);\n }\n this.denom_glyphs = [];\n n = this.notes_occupied;\n while (n >= 1) {\n this.denom_glyphs.unshift(new Glyph('timeSig' + (n % 10), this.point));\n n = parseInt((n / 10).toString(), 10);\n }\n }\n // determine how many tuplets are nested within this tuplet\n // on the same side (above/below), to calculate a y\n // offset for this tuplet:\n getNestedTupletCount() {\n const location = this.location;\n const first_note = this.notes[0];\n let maxTupletCount = countTuplets(first_note, location);\n let minTupletCount = countTuplets(first_note, location);\n // Count the tuplets that are on the same side (above/below)\n // as this tuplet:\n function countTuplets(note, location) {\n return note.getTupletStack().filter((tuplet) => tuplet.location === location).length;\n }\n this.notes.forEach((note) => {\n const tupletCount = countTuplets(note, location);\n maxTupletCount = tupletCount > maxTupletCount ? tupletCount : maxTupletCount;\n minTupletCount = tupletCount < minTupletCount ? tupletCount : minTupletCount;\n });\n return maxTupletCount - minTupletCount;\n }\n // determine the y position of the tuplet:\n getYPosition() {\n // offset the tuplet for any nested tuplets between\n // it and the notes:\n const nested_tuplet_y_offset = this.getNestedTupletCount() * Tuplet.NESTING_OFFSET * -this.location;\n // offset the tuplet for any manual y_offset:\n const y_offset = this.options.y_offset || 0;\n // now iterate through the notes and find our highest\n // or lowest locations, to form a base y_pos\n const first_note = this.notes[0];\n let y_pos;\n if (this.location === Tuplet.LOCATION_TOP) {\n y_pos = first_note.checkStave().getYForLine(0) - Tuplet.metrics.topModifierOffset;\n // check modifiers above note to see if they will collide with tuplet beam\n for (let i = 0; i < this.notes.length; ++i) {\n const note = this.notes[i];\n let modLines = 0;\n const mc = note.getModifierContext();\n if (mc) {\n modLines = Math.max(modLines, mc.getState().top_text_line);\n }\n const modY = note.getYForTopText(modLines) - Tuplet.metrics.noteHeadOffset;\n if (note.hasStem() || note.isRest()) {\n const top_y = note.getStemDirection() === Stem.UP\n ? note.getStemExtents().topY - Tuplet.metrics.stemOffset\n : note.getStemExtents().baseY - Tuplet.metrics.noteHeadOffset;\n y_pos = Math.min(top_y, y_pos);\n if (modLines > 0) {\n y_pos = Math.min(modY, y_pos);\n }\n }\n }\n }\n else {\n let lineCheck = Tuplet.metrics.bottomLine; // tuplet default on line 4\n // check modifiers below note to see if they will collide with tuplet beam\n this.notes.forEach((nn) => {\n const mc = nn.getModifierContext();\n if (mc) {\n lineCheck = Math.max(lineCheck, mc.getState().text_line + 1);\n }\n });\n y_pos = first_note.checkStave().getYForLine(lineCheck) + Tuplet.metrics.noteHeadOffset;\n for (let i = 0; i < this.notes.length; ++i) {\n if (this.notes[i].hasStem() || this.notes[i].isRest()) {\n const bottom_y = this.notes[i].getStemDirection() === Stem.UP\n ? this.notes[i].getStemExtents().baseY + Tuplet.metrics.noteHeadOffset\n : this.notes[i].getStemExtents().topY + Tuplet.metrics.stemOffset;\n if (bottom_y > y_pos) {\n y_pos = bottom_y;\n }\n }\n }\n }\n return y_pos + nested_tuplet_y_offset + y_offset;\n }\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n // determine x value of left bound of tuplet\n const first_note = this.notes[0];\n const last_note = this.notes[this.notes.length - 1];\n if (!this.bracketed) {\n this.x_pos = first_note.getStemX();\n this.width = last_note.getStemX() - this.x_pos;\n }\n else {\n this.x_pos = first_note.getTieLeftX() - 5;\n this.width = last_note.getTieRightX() - this.x_pos + 5;\n }\n // determine y value for tuplet\n this.y_pos = this.getYPosition();\n const addGlyphWidth = (width, glyph) => width + defined(glyph.getMetrics().width);\n // calculate total width of tuplet notation\n let width = this.numerator_glyphs.reduce(addGlyphWidth, 0);\n if (this.ratioed) {\n width = this.denom_glyphs.reduce(addGlyphWidth, width);\n width += this.point * 0.32;\n }\n const notation_center_x = this.x_pos + this.width / 2;\n const notation_start_x = notation_center_x - width / 2;\n // draw bracket if the tuplet is not beamed\n if (this.bracketed) {\n const line_width = this.width / 2 - width / 2 - 5;\n // only draw the bracket if it has positive length\n if (line_width > 0) {\n ctx.fillRect(this.x_pos, this.y_pos, line_width, 1);\n ctx.fillRect(this.x_pos + this.width / 2 + width / 2 + 5, this.y_pos, line_width, 1);\n ctx.fillRect(this.x_pos, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM ? 1 : 0), 1, this.location * 10);\n ctx.fillRect(this.x_pos + this.width, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM ? 1 : 0), 1, this.location * 10);\n }\n }\n // draw numerator glyphs\n const shiftY = Tables.currentMusicFont().lookupMetric('digits.shiftY', 0);\n let x_offset = 0;\n this.numerator_glyphs.forEach((glyph) => {\n glyph.render(ctx, notation_start_x + x_offset, this.y_pos + this.point / 3 - 2 + shiftY);\n x_offset += defined(glyph.getMetrics().width);\n });\n // display colon and denominator if the ratio is to be shown\n if (this.ratioed) {\n const colon_x = notation_start_x + x_offset + this.point * 0.16;\n const colon_radius = this.point * 0.06;\n ctx.beginPath();\n ctx.arc(colon_x, this.y_pos - this.point * 0.08, colon_radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n ctx.beginPath();\n ctx.arc(colon_x, this.y_pos + this.point * 0.12, colon_radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n x_offset += this.point * 0.32;\n this.denom_glyphs.forEach((glyph) => {\n glyph.render(ctx, notation_start_x + x_offset, this.y_pos + this.point / 3 - 2 + shiftY);\n x_offset += defined(glyph.getMetrics().width);\n });\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TupletLocation } from './tuplet';\nimport { Category, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nfunction calculateStemDirection(notes) {\n let lineSum = 0;\n notes.forEach((note) => {\n if (note.keyProps) {\n note.keyProps.forEach((keyProp) => {\n lineSum += keyProp.line - 3;\n });\n }\n });\n if (lineSum >= 0) {\n return Stem.DOWN;\n }\n return Stem.UP;\n}\nfunction getStemSlope(firstNote, lastNote) {\n const firstStemTipY = firstNote.getStemExtents().topY;\n const firstStemX = firstNote.getStemX();\n const lastStemTipY = lastNote.getStemExtents().topY;\n const lastStemX = lastNote.getStemX();\n return (lastStemTipY - firstStemTipY) / (lastStemX - firstStemX);\n}\nexport const BEAM_LEFT = 'L';\nexport const BEAM_RIGHT = 'R';\nexport const BEAM_BOTH = 'B';\n/** `Beams` span over a set of `StemmableNotes`. */\nexport class Beam extends Element {\n constructor(notes, auto_stem = false) {\n super();\n this.slope = 0;\n this.y_shift = 0;\n /**\n * Overrides to default beam directions for secondary-level beams that do not\n * connect to any other note. See further explanation at\n * `setPartialBeamSideAt`\n */\n this.forcedPartialDirections = {};\n if (!notes || notes.length === 0) {\n throw new RuntimeError('BadArguments', 'No notes provided for beam.');\n }\n if (notes.length === 1) {\n throw new RuntimeError('BadArguments', 'Too few notes for beam.');\n }\n // Validate beam line, direction and ticks.\n this.ticks = notes[0].getIntrinsicTicks();\n if (this.ticks >= Tables.durationToTicks('4')) {\n throw new RuntimeError('BadArguments', 'Beams can only be applied to notes shorter than a quarter note.');\n }\n let i; // shared iterator\n let note;\n this.stem_direction = Stem.UP;\n for (i = 0; i < notes.length; ++i) {\n note = notes[i];\n if (note.hasStem()) {\n this.stem_direction = note.getStemDirection();\n break;\n }\n }\n let stem_direction = this.stem_direction;\n // Figure out optimal stem direction based on given notes\n if (auto_stem && isStaveNote(notes[0])) {\n stem_direction = calculateStemDirection(notes);\n }\n else if (auto_stem && isTabNote(notes[0])) {\n // Auto Stem TabNotes\n const stem_weight = notes.reduce((memo, note) => memo + note.getStemDirection(), 0);\n stem_direction = stem_weight > -1 ? Stem.UP : Stem.DOWN;\n }\n // Apply stem directions and attach beam to notes\n for (i = 0; i < notes.length; ++i) {\n note = notes[i];\n if (auto_stem) {\n note.setStemDirection(stem_direction);\n this.stem_direction = stem_direction;\n }\n note.setBeam(this);\n }\n this.postFormatted = false;\n this.notes = notes;\n this.beam_count = this.getBeamCount();\n this.break_on_indices = [];\n this.render_options = {\n beam_width: 5,\n max_slope: 0.25,\n min_slope: -0.25,\n slope_iterations: 20,\n slope_cost: 100,\n show_stemlets: false,\n stemlet_extension: 7,\n partial_beam_length: 10,\n flat_beams: false,\n min_flat_beam_offset: 15,\n };\n }\n static get CATEGORY() {\n return Category.Beam;\n }\n /** Get the direction of the beam */\n getStemDirection() {\n return this.stem_direction;\n }\n /**\n * Get the default beam groups for a provided time signature.\n * Attempt to guess if the time signature is not found in table.\n * Currently this is fairly naive.\n */\n static getDefaultBeamGroups(time_sig) {\n if (!time_sig || time_sig === 'c') {\n time_sig = '4/4';\n }\n const defaults = {\n '1/2': ['1/2'],\n '2/2': ['1/2'],\n '3/2': ['1/2'],\n '4/2': ['1/2'],\n '1/4': ['1/4'],\n '2/4': ['1/4'],\n '3/4': ['1/4'],\n '4/4': ['1/4'],\n '1/8': ['1/8'],\n '2/8': ['2/8'],\n '3/8': ['3/8'],\n '4/8': ['2/8'],\n '1/16': ['1/16'],\n '2/16': ['2/16'],\n '3/16': ['3/16'],\n '4/16': ['2/16'],\n };\n const groups = defaults[time_sig];\n if (groups === undefined) {\n // If no beam groups found, naively determine\n // the beam groupings from the time signature\n const beatTotal = parseInt(time_sig.split('/')[0], 10);\n const beatValue = parseInt(time_sig.split('/')[1], 10);\n const tripleMeter = beatTotal % 3 === 0;\n if (tripleMeter) {\n return [new Fraction(3, beatValue)];\n }\n else if (beatValue > 4) {\n return [new Fraction(2, beatValue)];\n }\n else if (beatValue <= 4) {\n return [new Fraction(1, beatValue)];\n }\n }\n else {\n return groups.map((group) => new Fraction().parse(group));\n }\n return [new Fraction(1, 4)];\n }\n /**\n * A helper function to automatically build basic beams for a voice. For more\n * complex auto-beaming use `Beam.generateBeams()`.\n * @param voice the voice to generate the beams for\n * @param stem_direction a stem direction to apply to the entire voice\n * @param groups an array of `Fraction` representing beat groupings for the beam\n */\n static applyAndGetBeams(voice, stem_direction, groups) {\n return Beam.generateBeams(voice.getTickables(), { groups, stem_direction });\n }\n /**\n * A helper function to autimatically build beams for a voice with\n * configuration options.\n *\n * Example configuration object:\n *\n * ```\n * config = {\n * groups: [new Vex.Flow.Fraction(2, 8)],\n * stem_direction: -1,\n * beam_rests: true,\n * beam_middle_only: true,\n * show_stemlets: false\n * };\n * ```\n * @param notes an array of notes to create the beams for\n * @param config the configuration object\n * @param config.stem_direction set to apply the same direction to all notes\n * @param config.beam_rests set to `true` to include rests in the beams\n * @param config.beam_middle_only set to `true` to only beam rests in the middle of the beat\n * @param config.show_stemlets set to `true` to draw stemlets for rests\n * @param config.maintain_stem_directions set to `true` to not apply new stem directions\n * @param config.groups array of `Fractions` that represent the beat structure to beam the notes\n *\n */\n static generateBeams(notes, config = {}) {\n if (!config.groups || !config.groups.length) {\n config.groups = [new Fraction(2, 8)];\n }\n // Convert beam groups to tick amounts\n const tickGroups = config.groups.map((group) => {\n if (!group.multiply) {\n throw new RuntimeError('InvalidBeamGroups', 'The beam groups must be an array of Vex.Flow.Fractions');\n }\n return group.clone().multiply(Tables.RESOLUTION, 1);\n });\n const unprocessedNotes = notes;\n let currentTickGroup = 0;\n let noteGroups = [];\n let currentGroup = [];\n function getTotalTicks(vf_notes) {\n return vf_notes.reduce((memo, note) => note.getTicks().clone().add(memo), new Fraction(0, 1));\n }\n function nextTickGroup() {\n if (tickGroups.length - 1 > currentTickGroup) {\n currentTickGroup += 1;\n }\n else {\n currentTickGroup = 0;\n }\n }\n function createGroups() {\n let nextGroup = [];\n // number of ticks in current group\n let currentGroupTotalTicks = new Fraction(0, 1);\n unprocessedNotes.forEach((unprocessedNote) => {\n nextGroup = [];\n if (unprocessedNote.shouldIgnoreTicks()) {\n noteGroups.push(currentGroup);\n currentGroup = nextGroup;\n return; // Ignore untickables (like bar notes)\n }\n currentGroup.push(unprocessedNote);\n const ticksPerGroup = tickGroups[currentTickGroup].clone();\n const totalTicks = getTotalTicks(currentGroup).add(currentGroupTotalTicks);\n // Double the amount of ticks in a group, if it's an unbeamable tuplet\n const unbeamable = Tables.durationToNumber(unprocessedNote.getDuration()) < 8;\n if (unbeamable && unprocessedNote.getTuplet()) {\n ticksPerGroup.numerator *= 2;\n }\n // If the note that was just added overflows the group tick total\n if (totalTicks.greaterThan(ticksPerGroup)) {\n // If the overflow note can be beamed, start the next group\n // with it. Unbeamable notes leave the group overflowed.\n if (!unbeamable) {\n const note = currentGroup.pop();\n if (note)\n nextGroup.push(note);\n }\n noteGroups.push(currentGroup);\n // We have overflown, so we're going to next tick group. As we might have\n // overflown by more than 1 group, we need to go forward as many times as\n // needed, decreasing currentGroupTotalTicks by as many ticks as there are\n // in current groups as we go forward.\n do {\n currentGroupTotalTicks = totalTicks.subtract(tickGroups[currentTickGroup]);\n nextTickGroup();\n } while (currentGroupTotalTicks.greaterThanEquals(tickGroups[currentTickGroup]));\n currentGroup = nextGroup;\n }\n else if (totalTicks.equals(ticksPerGroup)) {\n noteGroups.push(currentGroup);\n currentGroupTotalTicks = new Fraction(0, 1);\n currentGroup = nextGroup;\n nextTickGroup();\n }\n });\n // Adds any remainder notes beam\n if (currentGroup.length > 0) {\n noteGroups.push(currentGroup);\n }\n }\n function getBeamGroups() {\n return noteGroups.filter((group) => {\n if (group.length > 1) {\n let beamable = true;\n group.forEach((note) => {\n if (note.getIntrinsicTicks() >= Tables.durationToTicks('4')) {\n beamable = false;\n }\n });\n return beamable;\n }\n return false;\n });\n }\n // Splits up groups by Rest\n function sanitizeGroups() {\n const sanitizedGroups = [];\n noteGroups.forEach((group) => {\n let tempGroup = [];\n group.forEach((note, index, group) => {\n const isFirstOrLast = index === 0 || index === group.length - 1;\n const prevNote = group[index - 1];\n const breaksOnEachRest = !config.beam_rests && note.isRest();\n const breaksOnFirstOrLastRest = config.beam_rests && config.beam_middle_only && note.isRest() && isFirstOrLast;\n let breakOnStemChange = false;\n if (config.maintain_stem_directions && prevNote && !note.isRest() && !prevNote.isRest()) {\n const prevDirection = prevNote.getStemDirection();\n const currentDirection = note.getStemDirection();\n breakOnStemChange = currentDirection !== prevDirection;\n }\n const isUnbeamableDuration = parseInt(note.getDuration(), 10) < 8;\n // Determine if the group should be broken at this note\n const shouldBreak = breaksOnEachRest || breaksOnFirstOrLastRest || breakOnStemChange || isUnbeamableDuration;\n if (shouldBreak) {\n // Add current group\n if (tempGroup.length > 0) {\n sanitizedGroups.push(tempGroup);\n }\n // Start a new group. Include the current note if the group\n // was broken up by stem direction, as that note needs to start\n // the next group of notes\n tempGroup = breakOnStemChange ? [note] : [];\n }\n else {\n // Add note to group\n tempGroup.push(note);\n }\n });\n // If there is a remaining group, add it as well\n if (tempGroup.length > 0) {\n sanitizedGroups.push(tempGroup);\n }\n });\n noteGroups = sanitizedGroups;\n }\n function formatStems() {\n noteGroups.forEach((group) => {\n let stemDirection;\n if (config.maintain_stem_directions) {\n const note = findFirstNote(group);\n stemDirection = note ? note.getStemDirection() : Stem.UP;\n }\n else {\n if (config.stem_direction) {\n stemDirection = config.stem_direction;\n }\n else {\n stemDirection = calculateStemDirection(group);\n }\n }\n applyStemDirection(group, stemDirection);\n });\n }\n function findFirstNote(group) {\n for (let i = 0; i < group.length; i++) {\n const note = group[i];\n if (!note.isRest()) {\n return note;\n }\n }\n return false;\n }\n function applyStemDirection(group, direction) {\n group.forEach((note) => {\n note.setStemDirection(direction);\n });\n }\n // Get all of the tuplets in all of the note groups\n function getTuplets() {\n const uniqueTuplets = [];\n // Go through all of the note groups and inspect for tuplets\n noteGroups.forEach((group) => {\n let tuplet;\n group.forEach((note) => {\n const noteTuplet = note.getTuplet();\n if (noteTuplet && tuplet !== noteTuplet) {\n tuplet = noteTuplet;\n uniqueTuplets.push(tuplet);\n }\n });\n });\n return uniqueTuplets;\n }\n // Using closures to store the variables throughout the various functions\n // IMO Keeps it this process lot cleaner - but not super consistent with\n // the rest of the API's style - Silverwolf90 (Cyril)\n createGroups();\n sanitizeGroups();\n formatStems();\n // Get the notes to be beamed\n const beamedNoteGroups = getBeamGroups();\n // Get the tuplets in order to format them accurately\n const allTuplets = getTuplets();\n // Create a Vex.Flow.Beam from each group of notes to be beamed\n const beams = [];\n beamedNoteGroups.forEach((group) => {\n const beam = new Beam(group);\n if (config.show_stemlets) {\n beam.render_options.show_stemlets = true;\n }\n if (config.secondary_breaks) {\n beam.render_options.secondary_break_ticks = Tables.durationToTicks(config.secondary_breaks);\n }\n if (config.flat_beams === true) {\n beam.render_options.flat_beams = true;\n beam.render_options.flat_beam_offset = config.flat_beam_offset;\n }\n beams.push(beam);\n });\n // Reformat tuplets\n allTuplets.forEach((tuplet) => {\n // Set the tuplet location based on the stem direction\n const direction = tuplet.notes[0].stem_direction === Stem.DOWN ? TupletLocation.BOTTOM : TupletLocation.TOP;\n tuplet.setTupletLocation(direction);\n // If any of the notes in the tuplet are not beamed, draw a bracket.\n let bracketed = false;\n for (let i = 0; i < tuplet.notes.length; i++) {\n const note = tuplet.notes[i];\n if (!note.hasBeam()) {\n bracketed = true;\n break;\n }\n }\n tuplet.setBracketed(bracketed);\n });\n return beams;\n }\n /** Get the notes in this beam. */\n getNotes() {\n return this.notes;\n }\n /** Get the max number of beams in the set of notes. */\n getBeamCount() {\n const beamCounts = this.notes.map((note) => note.getGlyph().beam_count);\n const maxBeamCount = beamCounts.reduce((max, beamCount) => (beamCount > max ? beamCount : max));\n return maxBeamCount;\n }\n /** Set which note `indices` to break the secondary beam at. */\n breakSecondaryAt(indices) {\n this.break_on_indices = indices;\n return this;\n }\n /**\n * Forces the direction of a partial beam (a secondary-level beam that exists\n * on one note only of the beam group). This is useful in rhythms such as 6/8\n * eighth-sixteenth-eighth-sixteenth, where the direction of the beam on the\n * first sixteenth note can help imply whether the rhythm is to be felt as\n * three groups of eighth notes (typical) or as two groups of three-sixteenths\n * (less common):\n * ```\n * ┌───┬──┬──┐ ┌──┬──┬──┐\n * │ ├─ │ ─┤ vs │ ─┤ │ ─┤\n * │ │ │ │ │ │ │ │\n * ```\n */\n setPartialBeamSideAt(noteIndex, side) {\n this.forcedPartialDirections[noteIndex] = side;\n return this;\n }\n /**\n * Restore the default direction of a partial beam (a secondary-level beam\n * that does not connect to any other notes).\n */\n unsetPartialBeamSideAt(noteIndex) {\n delete this.forcedPartialDirections[noteIndex];\n return this;\n }\n /** Return the y coordinate for linear function. */\n getSlopeY(x, first_x_px, first_y_px, slope) {\n return first_y_px + (x - first_x_px) * slope;\n }\n /** Calculate the best possible slope for the provided notes. */\n calculateSlope() {\n const { notes, stem_direction: stemDirection, render_options: { max_slope, min_slope, slope_iterations, slope_cost }, } = this;\n const firstNote = notes[0];\n const initialSlope = getStemSlope(firstNote, notes[notes.length - 1]);\n const increment = (max_slope - min_slope) / slope_iterations;\n let minCost = Number.MAX_VALUE;\n let bestSlope = 0;\n let yShift = 0;\n // iterate through slope values to find best weighted fit\n for (let slope = min_slope; slope <= max_slope; slope += increment) {\n let totalStemExtension = 0;\n let yShiftTemp = 0;\n // iterate through notes, calculating y shift and stem extension\n for (let i = 1; i < notes.length; ++i) {\n const note = notes[i];\n if (note.hasStem() || note.isRest()) {\n const adjustedStemTipY = this.getSlopeY(note.getStemX(), firstNote.getStemX(), firstNote.getStemExtents().topY, slope) + yShiftTemp;\n const stemTipY = note.getStemExtents().topY;\n // beam needs to be shifted up to accommodate note\n if (stemTipY * stemDirection < adjustedStemTipY * stemDirection) {\n const diff = Math.abs(stemTipY - adjustedStemTipY);\n yShiftTemp += diff * -stemDirection;\n totalStemExtension += diff * i;\n }\n else {\n // beam overshoots note, account for the difference\n totalStemExtension += (stemTipY - adjustedStemTipY) * stemDirection;\n }\n }\n }\n // most engraving books suggest aiming for a slope about half the angle of the\n // difference between the first and last notes' stem length;\n const idealSlope = initialSlope / 2;\n const distanceFromIdeal = Math.abs(idealSlope - slope);\n // This tries to align most beams to something closer to the idealSlope, but\n // doesn't go crazy. To disable, set this.render_options.slope_cost = 0\n const cost = slope_cost * distanceFromIdeal + Math.abs(totalStemExtension);\n // update state when a more ideal slope is found\n if (cost < minCost) {\n minCost = cost;\n bestSlope = slope;\n yShift = yShiftTemp;\n }\n }\n this.slope = bestSlope;\n this.y_shift = yShift;\n }\n /** Calculate a slope and y-shift for flat beams. */\n calculateFlatSlope() {\n const { notes, stem_direction, render_options: { beam_width, min_flat_beam_offset, flat_beam_offset }, } = this;\n // If a flat beam offset has not yet been supplied or calculated,\n // generate one based on the notes in this particular note group\n let total = 0;\n let extremeY = 0; // Store the highest or lowest note here\n let extremeBeamCount = 0; // The beam count of the extreme note\n let currentExtreme = 0;\n for (let i = 0; i < notes.length; i++) {\n // Total up all of the offsets so we can average them out later\n const note = notes[i];\n const stemTipY = note.getStemExtents().topY;\n total += stemTipY;\n // Store the highest (stems-up) or lowest (stems-down) note so the\n // offset can be adjusted in case the average isn't enough\n if (stem_direction === Stem.DOWN && currentExtreme < stemTipY) {\n currentExtreme = stemTipY;\n extremeY = Math.max(...note.getYs());\n extremeBeamCount = note.getBeamCount();\n }\n else if (stem_direction === Stem.UP && (currentExtreme === 0 || currentExtreme > stemTipY)) {\n currentExtreme = stemTipY;\n extremeY = Math.min(...note.getYs());\n extremeBeamCount = note.getBeamCount();\n }\n }\n // Average the offsets to try and come up with a reasonable one that\n // works for all of the notes in the beam group.\n let offset = total / notes.length;\n // In case the average isn't long enough, add or subtract some more\n // based on the highest or lowest note (again, based on the stem\n // direction). This also takes into account the added height due to\n // the width of the beams.\n const beamWidth = beam_width * 1.5;\n const extremeTest = min_flat_beam_offset + extremeBeamCount * beamWidth;\n const newOffset = extremeY + extremeTest * -stem_direction;\n if (stem_direction === Stem.DOWN && offset < newOffset) {\n offset = extremeY + extremeTest;\n }\n else if (stem_direction === Stem.UP && offset > newOffset) {\n offset = extremeY - extremeTest;\n }\n if (!flat_beam_offset) {\n // Set the offset for the group based on the calculations above.\n this.render_options.flat_beam_offset = offset;\n }\n else if (stem_direction === Stem.DOWN && offset > flat_beam_offset) {\n this.render_options.flat_beam_offset = offset;\n }\n else if (stem_direction === Stem.UP && offset < flat_beam_offset) {\n this.render_options.flat_beam_offset = offset;\n }\n // for flat beams, the slope and y_shift are simply 0\n this.slope = 0;\n this.y_shift = 0;\n }\n /** Return the Beam y offset. */\n getBeamYToDraw() {\n const firstNote = this.notes[0];\n const firstStemTipY = firstNote.getStemExtents().topY;\n let beamY = firstStemTipY;\n // For flat beams, set the first and last Y to the offset, rather than\n // using the note's stem extents.\n if (this.render_options.flat_beams && this.render_options.flat_beam_offset) {\n beamY = this.render_options.flat_beam_offset;\n }\n return beamY;\n }\n /**\n * Create new stems for the notes in the beam, so that each stem\n * extends into the beams.\n */\n applyStemExtensions() {\n const { notes, slope, y_shift, stem_direction, beam_count, render_options: { show_stemlets, stemlet_extension, beam_width }, } = this;\n const firstNote = notes[0];\n const firstStemTipY = this.getBeamYToDraw();\n const firstStemX = firstNote.getStemX();\n for (let i = 0; i < notes.length; ++i) {\n const note = notes[i];\n const stem = note.getStem();\n if (stem) {\n const stemX = note.getStemX();\n const { topY: stemTipY } = note.getStemExtents();\n const beamedStemTipY = this.getSlopeY(stemX, firstStemX, firstStemTipY, slope) + y_shift;\n const preBeamExtension = stem.getExtension();\n const beamExtension = stem_direction === Stem.UP ? stemTipY - beamedStemTipY : beamedStemTipY - stemTipY;\n stem.setExtension(preBeamExtension + beamExtension);\n stem.adjustHeightForBeam();\n if (note.isRest() && show_stemlets) {\n const beamWidth = beam_width;\n const totalBeamWidth = (beam_count - 1) * beamWidth * 1.5 + beamWidth;\n stem.setVisibility(true).setStemlet(true, totalBeamWidth + stemlet_extension);\n }\n }\n }\n }\n /** Return upper level beam direction. */\n lookupBeamDirection(duration, prev_tick, tick, next_tick, noteIndex) {\n if (duration === '4') {\n return BEAM_LEFT;\n }\n const forcedBeamDirection = this.forcedPartialDirections[noteIndex];\n if (forcedBeamDirection)\n return forcedBeamDirection;\n const lookup_duration = `${Tables.durationToNumber(duration) / 2}`;\n const prev_note_gets_beam = prev_tick < Tables.durationToTicks(lookup_duration);\n const next_note_gets_beam = next_tick < Tables.durationToTicks(lookup_duration);\n const note_gets_beam = tick < Tables.durationToTicks(lookup_duration);\n if (prev_note_gets_beam && next_note_gets_beam && note_gets_beam) {\n return BEAM_BOTH;\n }\n else if (prev_note_gets_beam && !next_note_gets_beam && note_gets_beam) {\n return BEAM_LEFT;\n }\n else if (!prev_note_gets_beam && next_note_gets_beam && note_gets_beam) {\n return BEAM_RIGHT;\n }\n return this.lookupBeamDirection(lookup_duration, prev_tick, tick, next_tick, noteIndex);\n }\n /** Get the x coordinates for the beam lines of specific `duration`. */\n getBeamLines(duration) {\n const tick_of_duration = Tables.durationToTicks(duration);\n let beam_started = false;\n const beam_lines = [];\n let current_beam = undefined;\n const partial_beam_length = this.render_options.partial_beam_length;\n let previous_should_break = false;\n let tick_tally = 0;\n for (let i = 0; i < this.notes.length; ++i) {\n const note = this.notes[i];\n // See if we need to break secondary beams on this note.\n const ticks = note.getTicks().value();\n tick_tally += ticks;\n let should_break = false;\n // 8th note beams are always drawn.\n if (parseInt(duration, 10) >= 8) {\n // First, check to see if any indices were set up through breakSecondaryAt()\n should_break = this.break_on_indices.indexOf(i) !== -1;\n // If the secondary breaks were auto-configured in the render options,\n // handle that as well.\n if (this.render_options.secondary_break_ticks && tick_tally >= this.render_options.secondary_break_ticks) {\n tick_tally = 0;\n should_break = true;\n }\n }\n const note_gets_beam = note.getIntrinsicTicks() < tick_of_duration;\n const stem_x = note.getStemX() - Stem.WIDTH / 2;\n // Check to see if the next note in the group will get a beam at this\n // level. This will help to inform the partial beam logic below.\n const prev_note = this.notes[i - 1];\n const next_note = this.notes[i + 1];\n const next_note_gets_beam = next_note && next_note.getIntrinsicTicks() < tick_of_duration;\n const prev_note_gets_beam = prev_note && prev_note.getIntrinsicTicks() < tick_of_duration;\n const beam_alone = prev_note && next_note && note_gets_beam && !prev_note_gets_beam && !next_note_gets_beam;\n // const beam_alone = note_gets_beam && !prev_note_gets_beam && !next_note_gets_beam;\n if (note_gets_beam) {\n // This note gets a beam at the current level\n if (beam_started) {\n // We're currently in the middle of a beam. Just continue it on to\n // the stem X of the current note.\n current_beam = beam_lines[beam_lines.length - 1];\n current_beam.end = stem_x;\n // If a secondary beam break is set up, end the beam right now.\n if (should_break) {\n beam_started = false;\n if (next_note && !next_note_gets_beam && current_beam.end === undefined) {\n // This note gets a beam,.but the next one does not. This means\n // we need a partial pointing right.\n current_beam.end = current_beam.start - partial_beam_length;\n }\n }\n }\n else {\n // No beam started yet. Start a new one.\n current_beam = { start: stem_x, end: undefined };\n beam_started = true;\n if (beam_alone) {\n // previous and next beam exists and does not get a beam but current gets it.\n const prev_tick = prev_note.getIntrinsicTicks();\n const next_tick = next_note.getIntrinsicTicks();\n const tick = note.getIntrinsicTicks();\n const beam_direction = this.lookupBeamDirection(duration, prev_tick, tick, next_tick, i);\n if ([BEAM_LEFT, BEAM_BOTH].includes(beam_direction)) {\n current_beam.end = current_beam.start - partial_beam_length;\n }\n else {\n current_beam.end = current_beam.start + partial_beam_length;\n }\n }\n else if (!next_note_gets_beam) {\n // The next note doesn't get a beam. Draw a partial.\n if ((previous_should_break || i === 0) && next_note) {\n // This is the first note (but not the last one), or it is\n // following a secondary break. Draw a partial to the right.\n current_beam.end = current_beam.start + partial_beam_length;\n }\n else {\n // By default, draw a partial to the left.\n current_beam.end = current_beam.start - partial_beam_length;\n }\n }\n else if (should_break) {\n // This note should have a secondary break after it. Even though\n // we just started a beam, it needs to end immediately.\n current_beam.end = current_beam.start - partial_beam_length;\n beam_started = false;\n }\n beam_lines.push(current_beam);\n }\n }\n else {\n // The current note does not get a beam.\n beam_started = false;\n }\n // Store the secondary break flag to inform the partial beam logic in\n // the next iteration of the loop.\n previous_should_break = should_break;\n }\n // Add a partial beam pointing left if this is the last note in the group\n const last_beam = beam_lines[beam_lines.length - 1];\n if (last_beam && last_beam.end === undefined) {\n last_beam.end = last_beam.start - partial_beam_length;\n }\n return beam_lines;\n }\n /** Render the stems for each note. */\n drawStems(ctx) {\n this.notes.forEach((note) => {\n const stem = note.getStem();\n if (stem) {\n const stem_x = note.getStemX();\n stem.setNoteHeadXBounds(stem_x, stem_x);\n stem.setContext(ctx).draw();\n }\n }, this);\n }\n // Render the beam lines\n drawBeamLines(ctx) {\n const valid_beam_durations = ['4', '8', '16', '32', '64'];\n const firstNote = this.notes[0];\n let beamY = this.getBeamYToDraw();\n const firstStemX = firstNote.getStemX();\n const beamThickness = this.render_options.beam_width * this.stem_direction;\n // Draw the beams.\n for (let i = 0; i < valid_beam_durations.length; ++i) {\n const duration = valid_beam_durations[i];\n const beamLines = this.getBeamLines(duration);\n for (let j = 0; j < beamLines.length; ++j) {\n const beam_line = beamLines[j];\n const startBeamX = beam_line.start;\n const startBeamY = this.getSlopeY(startBeamX, firstStemX, beamY, this.slope);\n const lastBeamX = beam_line.end;\n if (lastBeamX) {\n const lastBeamY = this.getSlopeY(lastBeamX, firstStemX, beamY, this.slope);\n ctx.openGroup('beam', this.getAttribute('id'));\n ctx.beginPath();\n ctx.moveTo(startBeamX, startBeamY);\n ctx.lineTo(startBeamX, startBeamY + beamThickness);\n ctx.lineTo(lastBeamX + 1, lastBeamY + beamThickness);\n ctx.lineTo(lastBeamX + 1, lastBeamY);\n ctx.closePath();\n ctx.fill();\n ctx.closeGroup();\n }\n else {\n throw new RuntimeError('NoLastBeamX', 'lastBeamX undefined.');\n }\n }\n beamY += beamThickness * 1.5;\n }\n }\n /** Pre-format the beam. */\n preFormat() {\n return this;\n }\n /**\n * Post-format the beam. This can only be called after\n * the notes in the beam have both `x` and `y` values. ie: they've\n * been formatted and have staves.\n */\n postFormat() {\n if (this.postFormatted)\n return;\n // Calculate a smart slope if we're not forcing the beams to be flat.\n if (isTabNote(this.notes[0]) || this.render_options.flat_beams) {\n this.calculateFlatSlope();\n }\n else {\n this.calculateSlope();\n }\n this.applyStemExtensions();\n this.postFormatted = true;\n }\n /** Render the beam to the canvas context */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n if (this.unbeamable)\n return;\n if (!this.postFormatted) {\n this.postFormat();\n }\n this.drawStems(ctx);\n this.applyStyle();\n this.drawBeamLines(ctx);\n this.restoreStyle();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\n// MIT License\nimport { Clef } from './clef';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\n/** ClefNote implements clef annotations in measures. */\nexport class ClefNote extends Note {\n constructor(type, size, annotation) {\n super({ duration: 'b' });\n this.type = type;\n this.clef_obj = new Clef(type, size, annotation);\n this.clef = this.clef_obj.clef;\n this.glyph = new Glyph(this.clef.code, this.clef.point);\n this.setWidth(this.glyph.getMetrics().width);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.ClefNote;\n }\n /** Set clef type, size and annotation. */\n setType(type, size, annotation) {\n this.type = type;\n this.clef_obj = new Clef(type, size, annotation);\n this.clef = this.clef_obj.clef;\n this.glyph = new Glyph(this.clef.code, this.clef.point);\n this.setWidth(this.glyph.getMetrics().width);\n return this;\n }\n /** Get associated clef. */\n getClef() {\n return this.clef;\n }\n /** Set associated context. */\n setContext(context) {\n super.setContext(context);\n this.glyph.setContext(this.getContext());\n return this;\n }\n /** Get bounding box. */\n getBoundingBox() {\n return super.getBoundingBox();\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n /** Render clef note. */\n draw() {\n var _a;\n const stave = this.checkStave();\n if (!this.glyph.getContext()) {\n this.glyph.setContext(this.getContext());\n }\n this.setRendered();\n const abs_x = this.getAbsoluteX();\n this.glyph.setStave(stave);\n this.glyph.setYShift(stave.getYForLine((_a = this.clef.line) !== null && _a !== void 0 ? _a : 0) - stave.getYForGlyphs());\n this.glyph.renderToStave(abs_x);\n // If the Vex.Flow.Clef has an annotation, such as 8va, draw it.\n if (this.clef_obj.annotation !== undefined) {\n const attachment = new Glyph(this.clef_obj.annotation.code, this.clef_obj.annotation.point);\n if (!attachment.getContext()) {\n attachment.setContext(this.getContext());\n }\n attachment.setStave(stave);\n attachment.setYShift(stave.getYForLine(this.clef_obj.annotation.line) - stave.getYForGlyphs());\n attachment.setXShift(this.clef_obj.annotation.x_shift);\n attachment.renderToStave(abs_x);\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This file implements the `Crescendo` object which draws crescendos and\n// decrescendo dynamics markings. A `Crescendo` is initialized with a\n// duration and formatted as part of a `Voice` like any other `Note`\n// type in VexFlow. This object would most likely be formatted in a Voice\n// with `TextNotes` - which are used to represent other dynamics markings.\nimport { Note } from './note';\nimport { TickContext } from './tickcontext';\nimport { Category } from './typeguard';\nimport { log } from './util';\n// To enable logging for this class. Set `Vex.Flow.Crescendo.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (Crescendo.DEBUG)\n log('Vex.Flow.Crescendo', args);\n}\n// Private helper to draw the hairpin\nfunction renderHairpin(ctx, params) {\n const begin_x = params.begin_x;\n const end_x = params.end_x;\n const y = params.y;\n const half_height = params.height / 2;\n ctx.beginPath();\n if (params.reverse) {\n ctx.moveTo(begin_x, y - half_height);\n ctx.lineTo(end_x, y);\n ctx.lineTo(begin_x, y + half_height);\n }\n else {\n ctx.moveTo(end_x, y - half_height);\n ctx.lineTo(begin_x, y);\n ctx.lineTo(end_x, y + half_height);\n }\n ctx.stroke();\n ctx.closePath();\n}\nexport class Crescendo extends Note {\n // Initialize the crescendo's properties\n constructor(noteStruct) {\n super(noteStruct);\n this.options = {\n // Extensions to the length of the crescendo on either side\n extend_left: 0,\n extend_right: 0,\n // Vertical shift\n y_shift: 0,\n };\n // Whether the object is a decrescendo\n this.decrescendo = false;\n // The staff line to be placed on\n this.line = noteStruct.line || 0;\n // The height at the open end of the cresc/decresc\n this.height = 15;\n }\n /** Crescendo category string. */\n static get CATEGORY() {\n return Category.Crescendo;\n }\n // Set the line to center the element on\n setLine(line) {\n this.line = line;\n return this;\n }\n // Set the full height at the open end\n setHeight(height) {\n this.height = height;\n return this;\n }\n // Set whether the sign should be a descresendo by passing a bool\n // to `decresc`\n setDecrescendo(decresc) {\n this.decrescendo = decresc;\n return this;\n }\n // Preformat the note\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n // Render the Crescendo object onto the canvas\n draw() {\n const ctx = this.checkContext();\n const stave = this.checkStave();\n this.setRendered();\n const tick_context = this.getTickContext();\n const next_context = TickContext.getNextContext(tick_context);\n const begin_x = this.getAbsoluteX();\n const end_x = next_context ? next_context.getX() : stave.getX() + stave.getWidth();\n const y = stave.getYForLine(this.line + -3) + 1;\n L('Drawing ', this.decrescendo ? 'decrescendo ' : 'crescendo ', this.height, 'x', begin_x - end_x);\n renderHairpin(ctx, {\n begin_x: begin_x - this.options.extend_left,\n end_x: end_x + this.options.extend_right,\n y: y + this.options.y_shift,\n height: this.height,\n reverse: this.decrescendo,\n });\n }\n}\nCrescendo.DEBUG = false;\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements curves (for slurs)\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport var CurvePosition;\n(function (CurvePosition) {\n CurvePosition[CurvePosition[\"NEAR_HEAD\"] = 1] = \"NEAR_HEAD\";\n CurvePosition[CurvePosition[\"NEAR_TOP\"] = 2] = \"NEAR_TOP\";\n})(CurvePosition || (CurvePosition = {}));\nexport class Curve extends Element {\n // from: Start note\n // to: End note\n // options:\n // cps: List of control points\n // x_shift: pixels to shift\n // y_shift: pixels to shift\n constructor(from, to, options) {\n super();\n this.render_options = Object.assign({ thickness: 2, x_shift: 0, y_shift: 10, position: CurvePosition.NEAR_HEAD, position_end: CurvePosition.NEAR_HEAD, invert: false, cps: [\n { x: 0, y: 10 },\n { x: 0, y: 10 },\n ] }, options);\n this.from = from;\n this.to = to;\n }\n static get CATEGORY() {\n return Category.Curve;\n }\n static get Position() {\n return CurvePosition;\n }\n static get PositionString() {\n return {\n nearHead: CurvePosition.NEAR_HEAD,\n nearTop: CurvePosition.NEAR_TOP,\n };\n }\n setNotes(from, to) {\n if (!from && !to) {\n throw new RuntimeError('BadArguments', 'Curve needs to have either `from` or `to` set.');\n }\n this.from = from;\n this.to = to;\n return this;\n }\n /**\n * @return {boolean} Returns true if this is a partial bar.\n */\n isPartial() {\n return !this.from || !this.to;\n }\n renderCurve(params) {\n const ctx = this.checkContext();\n const x_shift = this.render_options.x_shift;\n const y_shift = this.render_options.y_shift * params.direction;\n const first_x = params.first_x + x_shift;\n const first_y = params.first_y + y_shift;\n const last_x = params.last_x - x_shift;\n const last_y = params.last_y + y_shift;\n const thickness = this.render_options.thickness;\n const cps = this.render_options.cps;\n const { x: cp0x, y: cp0y } = cps[0];\n const { x: cp1x, y: cp1y } = cps[1];\n const cp_spacing = (last_x - first_x) / (cps.length + 2);\n ctx.beginPath();\n ctx.moveTo(first_x, first_y);\n ctx.bezierCurveTo(first_x + cp_spacing + cp0x, first_y + cp0y * params.direction, last_x - cp_spacing + cp1x, last_y + cp1y * params.direction, last_x, last_y);\n ctx.bezierCurveTo(last_x - cp_spacing + cp1x, last_y + (cp1y + thickness) * params.direction, first_x + cp_spacing + cp0x, first_y + (cp0y + thickness) * params.direction, first_x, first_y);\n ctx.stroke();\n ctx.closePath();\n ctx.fill();\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const first_note = this.from;\n const last_note = this.to;\n let first_x;\n let last_x;\n let first_y;\n let last_y;\n let stem_direction = 0;\n let metric = 'baseY';\n let end_metric = 'baseY';\n function getPosition(position) {\n return typeof position === 'string' ? Curve.PositionString[position] : position;\n }\n const position = getPosition(this.render_options.position);\n const position_end = getPosition(this.render_options.position_end);\n if (position === CurvePosition.NEAR_TOP) {\n metric = 'topY';\n end_metric = 'topY';\n }\n if (position_end === CurvePosition.NEAR_HEAD) {\n end_metric = 'baseY';\n }\n else if (position_end === CurvePosition.NEAR_TOP) {\n end_metric = 'topY';\n }\n if (first_note) {\n first_x = first_note.getTieRightX();\n stem_direction = first_note.getStemDirection();\n first_y = first_note.getStemExtents()[metric];\n }\n else {\n const stave = last_note.checkStave();\n first_x = stave.getTieStartX();\n first_y = last_note.getStemExtents()[metric];\n }\n if (last_note) {\n last_x = last_note.getTieLeftX();\n stem_direction = last_note.getStemDirection();\n last_y = last_note.getStemExtents()[end_metric];\n }\n else {\n const stave = first_note.checkStave();\n last_x = stave.getTieEndX();\n last_y = first_note.getStemExtents()[end_metric];\n }\n this.renderCurve({\n first_x,\n last_x,\n first_y,\n last_y,\n direction: stem_direction * (this.render_options.invert === true ? -1 : 1),\n });\n return true;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// A generic text parsing class for VexFlow.\nimport { log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.Parser.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (Parser.DEBUG)\n log('Vex.Flow.Parser', args);\n}\nconst NO_ERROR_POS = -1;\n// Converts parser results into an easy to reference list that can be\n// used in triggers. This function returns:\n// - nested array in which the leaf elements are string or null\n// - string (including empty strings)\n// - null\nfunction flattenMatches(r) {\n if ('matchedString' in r)\n return r.matchedString; // string\n if ('results' in r)\n return flattenMatches(r.results);\n const results = r;\n if (results.length === 1)\n return flattenMatches(results[0]);\n if (results.length === 0)\n return null;\n return results.map(flattenMatches); // nested array\n}\n// This is the base parser class. Given an arbitrary context-free grammar, it\n// can parse any line and execute code when specific rules are met (e.g.,\n// when a string is terminated.)\nexport class Parser {\n // For an example of a simple grammar, take a look at tests/parser_tests.ts or\n // the EasyScore grammar in easyscore.ts.\n constructor(grammar) {\n this.grammar = grammar;\n this.line = '';\n this.pos = 0;\n this.errorPos = NO_ERROR_POS;\n }\n // Parse `line` using current grammar. Returns `{success: true}` if the\n // line parsed correctly, otherwise returns `{success: false, errorPos: N}`\n // where `errorPos` is the location of the error in the string.\n parse(line) {\n this.line = line;\n this.pos = 0;\n this.errorPos = NO_ERROR_POS;\n const result = this.expect(this.grammar.begin());\n result.errorPos = this.errorPos;\n return result;\n }\n matchFail(returnPos) {\n if (this.errorPos === NO_ERROR_POS)\n this.errorPos = this.pos;\n this.pos = returnPos;\n }\n matchSuccess() {\n this.errorPos = NO_ERROR_POS;\n }\n // Look for `token` in this.line[this.pos], and return success\n // if one is found. `token` is specified as a regular expression.\n matchToken(token, noSpace = false) {\n const regexp = noSpace ? new RegExp('^((' + token + '))') : new RegExp('^((' + token + ')\\\\s*)');\n const workingLine = this.line.slice(this.pos);\n const result = workingLine.match(regexp);\n if (result !== null) {\n return {\n success: true,\n matchedString: result[2],\n incrementPos: result[1].length,\n pos: this.pos,\n };\n }\n else {\n return { success: false, pos: this.pos };\n }\n }\n // Execute rule to match a sequence of tokens (or rules). If `maybe` is\n // set, then return success even if the token is not found, but reset\n // the position before exiting.\n // TODO: expectOne(...) is never called with the `maybe` parameter.\n expectOne(rule, maybe = false) {\n const results = [];\n const pos = this.pos;\n let allMatches = true;\n let oneMatch = false;\n maybe = maybe === true || rule.maybe === true;\n // Execute all sub rules in sequence.\n if (rule.expect) {\n for (const next of rule.expect) {\n const localPos = this.pos;\n const result = this.expect(next);\n // If `rule.or` is set, then return success if any one\n // of the subrules match, else all subrules must match.\n if (result.success) {\n results.push(result);\n oneMatch = true;\n if (rule.or)\n break;\n }\n else {\n allMatches = false;\n if (!rule.or) {\n this.pos = localPos;\n break;\n }\n }\n }\n }\n const gotOne = (rule.or && oneMatch) || allMatches;\n const success = gotOne || maybe === true;\n const numMatches = gotOne ? 1 : 0;\n if (maybe && !gotOne)\n this.pos = pos;\n if (success) {\n this.matchSuccess();\n }\n else {\n this.matchFail(pos);\n }\n return { success, results, numMatches };\n }\n // Try to match multiple (one or more) instances of the rule. If `maybe` is set,\n // then a failed match is also a success (but the position is reset).\n expectOneOrMore(rule, maybe = false) {\n const results = [];\n const pos = this.pos;\n let numMatches = 0;\n let more = true;\n do {\n const result = this.expectOne(rule);\n if (result.success && result.results) {\n numMatches++;\n results.push(result.results);\n }\n else {\n more = false;\n }\n } while (more);\n const success = numMatches > 0 || maybe === true;\n if (maybe && !(numMatches > 0))\n this.pos = pos;\n if (success) {\n this.matchSuccess();\n }\n else {\n this.matchFail(pos);\n }\n return { success, results, numMatches };\n }\n // Match zero or more instances of `rule`. Offloads to `expectOneOrMore`.\n expectZeroOrMore(rule) {\n return this.expectOneOrMore(rule, true);\n }\n // Execute the rule produced by the provided `rules` function. This\n // offloads to one of the above matchers and consolidates the results. It is also\n // responsible for executing any code triggered by the rule (in `rule.run`.)\n expect(ruleFunc) {\n L('Evaluating rule function:', ruleFunc);\n if (!ruleFunc) {\n throw new RuntimeError('Invalid rule function');\n }\n let result;\n // Get rule from Grammar class.\n // expect(...) handles both lexing & parsing:\n // - lexer rules produce tokens.\n // - parser rules produce expressions which may trigger code via the\n // { run: () => ... } trigger functions in easyscore.ts.\n // These functions build the VexFlow objects that are displayed on screen.\n const rule = ruleFunc.bind(this.grammar)();\n if (rule.token) {\n // A lexer rule has a `token` property.\n // Base case: parse the regex and throw an error if the\n // line doesn't match.\n result = this.matchToken(rule.token, rule.noSpace === true);\n if (result.success) {\n // Token match! Update position and throw away parsed portion\n // of string.\n this.pos += result.incrementPos;\n }\n }\n else if (rule.expect) {\n // A parser rule has an `expect` property.\n if (rule.oneOrMore) {\n result = this.expectOneOrMore(rule);\n }\n else if (rule.zeroOrMore) {\n result = this.expectZeroOrMore(rule);\n }\n else {\n result = this.expectOne(rule);\n }\n }\n else {\n L(rule);\n throw new RuntimeError('Bad grammar! No `token` or `expect` property ' + rule);\n }\n // If there's a trigger attached to this rule, then run it.\n // Make the matches accessible through `state.matches` in the\n // `run: (state) => ...` trigger.\n const matches = [];\n result.matches = matches;\n if (result.results) {\n result.results.forEach((r) => matches.push(flattenMatches(r)));\n }\n if (rule.run && result.success) {\n rule.run({ matches });\n }\n return result;\n }\n}\nParser.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Articulation } from './articulation';\nimport { Dot } from './dot';\nimport { FretHandFinger } from './frethandfinger';\nimport { Music } from './music';\nimport { Parser } from './parser';\nimport { Stem } from './stem';\nimport { defined, log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.EasyScore.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (EasyScore.DEBUG)\n log('Vex.Flow.EasyScore', args);\n}\nexport class EasyScoreGrammar {\n constructor(builder) {\n this.builder = builder;\n }\n begin() {\n return this.LINE;\n }\n LINE() {\n return {\n expect: [this.PIECE, this.PIECES, this.EOL],\n };\n }\n PIECE() {\n return {\n expect: [this.CHORDORNOTE, this.PARAMS],\n run: () => this.builder.commitPiece(),\n };\n }\n PIECES() {\n return {\n expect: [this.COMMA, this.PIECE],\n zeroOrMore: true,\n };\n }\n PARAMS() {\n return {\n expect: [this.DURATION, this.TYPE, this.DOTS, this.OPTS],\n };\n }\n CHORDORNOTE() {\n return {\n expect: [this.CHORD, this.SINGLENOTE],\n or: true,\n };\n }\n CHORD() {\n return {\n expect: [this.LPAREN, this.NOTES, this.RPAREN],\n // eslint-disable-next-line\n run: (state) => this.builder.addChord(state.matches[1]),\n };\n }\n NOTES() {\n return {\n expect: [this.NOTE],\n oneOrMore: true,\n };\n }\n NOTE() {\n return {\n expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE],\n };\n }\n SINGLENOTE() {\n return {\n expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE],\n run: (state) => {\n // eslint-disable-next-line\n const s = state;\n this.builder.addSingleNote(s.matches[0], s.matches[1], s.matches[2]);\n },\n };\n }\n ACCIDENTAL() {\n return {\n expect: [this.MICROTONES, this.ACCIDENTALS],\n maybe: true,\n or: true,\n };\n }\n DOTS() {\n return {\n expect: [this.DOT],\n zeroOrMore: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteDots(state.matches),\n };\n }\n TYPE() {\n return {\n expect: [this.SLASH, this.MAYBESLASH, this.TYPES],\n maybe: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteType(state.matches[2]),\n };\n }\n DURATION() {\n return {\n expect: [this.SLASH, this.DURATIONS],\n maybe: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteDuration(state.matches[1]),\n };\n }\n OPTS() {\n return {\n expect: [this.LBRACKET, this.KEYVAL, this.KEYVALS, this.RBRACKET],\n maybe: true,\n };\n }\n KEYVALS() {\n return {\n expect: [this.COMMA, this.KEYVAL],\n zeroOrMore: true,\n };\n }\n KEYVAL() {\n const unquote = (str) => str.slice(1, -1);\n return {\n expect: [this.KEY, this.EQUALS, this.VAL],\n // eslint-disable-next-line\n run: (state) => this.builder.addNoteOption(state.matches[0], unquote(state.matches[2])),\n };\n }\n VAL() {\n return {\n expect: [this.SVAL, this.DVAL],\n or: true,\n };\n }\n KEY() {\n return { token: '[a-zA-Z][a-zA-Z0-9]*' };\n }\n DVAL() {\n return { token: '[\"][^\"]*[\"]' };\n }\n SVAL() {\n return { token: \"['][^']*[']\" };\n }\n NOTENAME() {\n return { token: '[a-gA-G]' };\n }\n OCTAVE() {\n return { token: '[0-9]+' };\n }\n ACCIDENTALS() {\n return { token: 'bb|b|##|#|n' };\n }\n MICROTONES() {\n return { token: 'bbs|bss|bs|db|d|\\\\+\\\\+-|\\\\+-|\\\\+\\\\+|\\\\+|k|o' };\n }\n DURATIONS() {\n return { token: '[0-9whq]+' };\n }\n TYPES() {\n return { token: '[rRsSmMhHgG]' };\n }\n LPAREN() {\n return { token: '[(]' };\n }\n RPAREN() {\n return { token: '[)]' };\n }\n COMMA() {\n return { token: '[,]' };\n }\n DOT() {\n return { token: '[.]' };\n }\n SLASH() {\n return { token: '[/]' };\n }\n MAYBESLASH() {\n return { token: '[/]?' };\n }\n EQUALS() {\n return { token: '[=]' };\n }\n LBRACKET() {\n return { token: '\\\\[' };\n }\n RBRACKET() {\n return { token: '\\\\]' };\n }\n EOL() {\n return { token: '$' };\n }\n}\nexport class Piece {\n constructor(duration) {\n this.chord = [];\n this.dots = 0;\n this.options = {};\n this.duration = duration;\n }\n}\nexport class Builder {\n constructor(factory) {\n this.commitHooks = [];\n this.factory = factory;\n this.reset();\n }\n reset(options) {\n this.options = Object.assign({ stem: 'auto', clef: 'treble' }, options);\n this.elements = { notes: [], accidentals: [] };\n this.rollingDuration = '8';\n this.resetPiece();\n }\n getFactory() {\n return this.factory;\n }\n getElements() {\n return this.elements;\n }\n addCommitHook(commitHook) {\n this.commitHooks.push(commitHook);\n }\n resetPiece() {\n L('resetPiece');\n this.piece = new Piece(this.rollingDuration);\n }\n setNoteDots(dots) {\n L('setNoteDots:', dots);\n if (dots)\n this.piece.dots = dots.length;\n }\n setNoteDuration(duration) {\n L('setNoteDuration:', duration);\n this.rollingDuration = this.piece.duration = duration || this.rollingDuration;\n }\n setNoteType(type) {\n L('setNoteType:', type);\n if (type)\n this.piece.type = type;\n }\n addNoteOption(key, value) {\n L('addNoteOption: key:', key, 'value:', value);\n this.piece.options[key] = value;\n }\n addNote(key, accid, octave) {\n L('addNote:', key, accid, octave);\n this.piece.chord.push({\n key: key,\n accid,\n octave,\n });\n }\n addSingleNote(key, accid, octave) {\n L('addSingleNote:', key, accid, octave);\n this.addNote(key, accid, octave);\n }\n // notes is an array with 3 entries\n addChord(notes) {\n L('startChord');\n if (typeof notes[0] !== 'object') {\n this.addSingleNote(notes[0]);\n }\n else {\n notes.forEach((n) => {\n if (n)\n this.addNote(...n); // n => [string, string | null, string]\n });\n }\n L('endChord');\n }\n commitPiece() {\n L('commitPiece');\n const { factory } = this;\n if (!factory)\n return;\n const options = Object.assign(Object.assign({}, this.options), this.piece.options);\n // reset() sets this.options.stem & this.options.clef but we check to make sure nothing has changed.\n // e.g., auto | up | down\n const stem = defined(options.stem, 'BadArguments', 'options.stem is not defined').toLowerCase();\n // e.g., treble | bass\n const clef = defined(options.clef, 'BadArguments', 'options.clef is not defined').toLowerCase();\n const { chord, duration, dots, type } = this.piece;\n // Create a string[] that will be assigned to the .keys property of the StaveNote.\n // Each string in the array represents a note pitch and is of the form: {NoteName}{Accidental}/{Octave}\n // Only standard accidentals are included in the .keys property. Microtonal accidentals are not included.\n const standardAccidentals = Music.accidentals;\n const keys = chord.map((notePiece) => {\n var _a;\n return notePiece.key +\n (standardAccidentals.includes((_a = notePiece.accid) !== null && _a !== void 0 ? _a : '') ? notePiece.accid : '') +\n '/' +\n notePiece.octave;\n });\n const auto_stem = stem === 'auto'; // StaveNoteStruct expects the underscore & lowercase.\n // Build a GhostNote or StaveNote using the information we gathered.\n const note = (type === null || type === void 0 ? void 0 : type.toLowerCase()) == 'g'\n ? factory.GhostNote({ duration, dots })\n : factory.StaveNote({ keys, duration, dots, type, clef, auto_stem });\n if (!auto_stem)\n note.setStemDirection(stem === 'up' ? Stem.UP : Stem.DOWN);\n // Attach accidentals.\n const accidentals = [];\n chord.forEach((notePiece, index) => {\n const accid = notePiece.accid;\n if (typeof accid === 'string') {\n const accidental = factory.Accidental({ type: accid });\n note.addModifier(accidental, index);\n accidentals.push(accidental);\n }\n else {\n accidentals.push(undefined);\n }\n });\n // Attach dots.\n for (let i = 0; i < dots; i++)\n Dot.buildAndAttach([note], { all: true });\n this.commitHooks.forEach((commitHook) => commitHook(options, note, this));\n this.elements.notes.push(note);\n this.elements.accidentals.push(accidentals);\n this.resetPiece();\n }\n}\n/**\n * Commit hook used by EasyScore.setOptions().\n */\nfunction setId(options, note) {\n if (options.id === undefined)\n return;\n note.setAttribute('id', options.id);\n}\n// Used by setClass() below.\nconst commaSeparatedRegex = /\\s*,\\s*/;\n/**\n * Commit hook used by EasyScore.setOptions().\n */\nfunction setClass(options, note) {\n if (options.class === undefined)\n return;\n options.class.split(commaSeparatedRegex).forEach((className) => note.addClass(className));\n}\n/**\n * EasyScore implements a parser for a simple language to generate VexFlow objects.\n */\nexport class EasyScore {\n constructor(options = {}) {\n this.defaults = {\n clef: 'treble',\n time: '4/4',\n stem: 'auto',\n };\n this.setOptions(options);\n }\n /**\n * Set the score defaults.\n * clef must be set appropriately to avoid errors when adding Staves.\n * @param defaults.clef default clef ( treble | bass ...) see {@link Clef.types}\n * @param defaults.time default time signature ( 4/4 | 9/8 ...)\n * @param defaults.stem default stem arrangement (auto | up | down)\n * @returns this\n */\n set(defaults) {\n this.defaults = Object.assign(Object.assign({}, this.defaults), defaults);\n return this;\n }\n /**\n * @param options.factory is required.\n * @returns this\n */\n setOptions(options) {\n var _a, _b;\n // eslint-disable-next-line\n const factory = options.factory; // ! operator, because options.factory was set in Factory.EasyScore().\n const builder = (_a = options.builder) !== null && _a !== void 0 ? _a : new Builder(factory);\n this.options = Object.assign(Object.assign({ commitHooks: [setId, setClass, Articulation.easyScoreHook, FretHandFinger.easyScoreHook], throwOnError: false }, options), { factory,\n builder });\n this.factory = factory;\n this.builder = builder;\n this.grammar = new EasyScoreGrammar(this.builder);\n this.parser = new Parser(this.grammar);\n (_b = this.options.commitHooks) === null || _b === void 0 ? void 0 : _b.forEach((commitHook) => this.addCommitHook(commitHook));\n return this;\n }\n setContext(context) {\n this.factory.setContext(context);\n return this;\n }\n parse(line, options = {}) {\n this.builder.reset(options);\n const result = this.parser.parse(line);\n if (!result.success && this.options.throwOnError) {\n L(result);\n throw new RuntimeError('Error parsing line: ' + line);\n }\n return result;\n }\n beam(notes, options) {\n this.factory.Beam({ notes, options });\n return notes;\n }\n tuplet(notes, options) {\n this.factory.Tuplet({ notes, options });\n return notes;\n }\n notes(line, options = {}) {\n options = Object.assign({ clef: this.defaults.clef, stem: this.defaults.stem }, options);\n this.parse(line, options);\n return this.builder.getElements().notes;\n }\n voice(notes, options = {}) {\n options = Object.assign({ time: this.defaults.time }, options);\n return this.factory.Voice(options).addTickables(notes);\n }\n addCommitHook(commitHook) {\n this.builder.addCommitHook(commitHook);\n }\n}\nEasyScore.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\nimport { StemmableNote } from './stemmablenote';\nimport { Category, isAnnotation } from './typeguard';\nimport { RuntimeError } from './util';\nconst ERROR_MSG = 'Ghost note must have valid initialization data to identify duration.';\nexport class GhostNote extends StemmableNote {\n static get CATEGORY() {\n return Category.GhostNote;\n }\n constructor(parameter) {\n if (!parameter) {\n throw new RuntimeError('BadArguments', ERROR_MSG);\n }\n let noteStruct;\n if (typeof parameter === 'string') {\n // Preserve backwards-compatibility\n noteStruct = { duration: parameter };\n }\n else if (typeof parameter === 'object') {\n noteStruct = parameter;\n }\n else {\n throw new RuntimeError('BadArguments', ERROR_MSG);\n }\n super(noteStruct);\n // Note properties\n this.setWidth(0);\n }\n /**\n * @returns true if this note is a type of rest. Rests don't have pitches, but take up space in the score.\n */\n isRest() {\n return true;\n }\n setStave(stave) {\n super.setStave(stave);\n return this;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n draw() {\n // Draw Annotations\n this.setRendered();\n for (let i = 0; i < this.modifiers.length; ++i) {\n const modifier = this.modifiers[i];\n if (isAnnotation(modifier)) {\n modifier.setContext(this.getContext());\n modifier.drawWithStyle();\n }\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Note } from './note';\nimport { Category } from './typeguard';\nexport class GlyphNote extends Note {\n constructor(glyph, noteStruct, options) {\n super(noteStruct);\n this.options = Object.assign({ ignoreTicks: false, line: 2 }, options);\n // Note properties\n this.ignore_ticks = this.options.ignoreTicks;\n if (glyph) {\n this.setGlyph(glyph);\n }\n }\n static get CATEGORY() {\n return Category.GlyphNote;\n }\n setGlyph(glyph) {\n this.glyph = glyph;\n this.setWidth(this.glyph.getMetrics().width);\n return this;\n }\n getBoundingBox() {\n return this.glyph.getBoundingBox();\n }\n preFormat() {\n if (!this.preFormatted && this.modifierContext) {\n this.modifierContext.preFormat();\n }\n this.preFormatted = true;\n return this;\n }\n drawModifiers() {\n const ctx = this.checkContext();\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n modifier.setContext(ctx);\n modifier.drawWithStyle();\n }\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('glyphNote', this.getAttribute('id'));\n // Context is set when setStave is called on Note\n const glyph = this.glyph;\n if (!glyph.getContext()) {\n glyph.setContext(ctx);\n }\n glyph.setStave(stave);\n glyph.setYShift(stave.getYForLine(this.options.line) - stave.getYForGlyphs());\n const x = this.isCenterAligned() ? this.getAbsoluteX() - this.getWidth() / 2 : this.getAbsoluteX();\n glyph.renderToStave(x);\n this.drawModifiers();\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { StaveNote } from './stavenote';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class GraceNote extends StaveNote {\n constructor(noteStruct) {\n super(Object.assign({ glyph_font_scale: Tables.NOTATION_FONT_SCALE * GraceNote.SCALE, stroke_px: GraceNote.LEDGER_LINE_OFFSET }, noteStruct));\n this.slash = noteStruct.slash || false;\n this.slur = true;\n this.buildNoteHeads();\n this.width = 3;\n }\n static get CATEGORY() {\n return Category.GraceNote;\n }\n static get LEDGER_LINE_OFFSET() {\n return 2;\n }\n static get SCALE() {\n return 0.66;\n }\n getStemExtension() {\n if (this.stem_extension_override) {\n return this.stem_extension_override;\n }\n const glyph = this.getGlyph();\n if (glyph) {\n let ret = super.getStemExtension();\n if (glyph.stem) {\n const staveNoteScale = this.getStaveNoteScale();\n ret = (Stem.HEIGHT + ret) * staveNoteScale - Stem.HEIGHT;\n }\n return ret;\n }\n return 0;\n }\n getStaveNoteScale() {\n return this.render_options.glyph_font_scale / Tables.NOTATION_FONT_SCALE;\n }\n draw() {\n super.draw();\n this.setRendered();\n const stem = this.stem;\n if (this.slash && stem) {\n const staveNoteScale = this.getStaveNoteScale();\n // some magic numbers are based on the staveNoteScale 0.66.\n const offsetScale = staveNoteScale / 0.66;\n let slashBBox = undefined;\n const beam = this.beam;\n if (beam) {\n // FIXME: should render slash after beam?\n if (!beam.postFormatted) {\n beam.postFormat();\n }\n slashBBox = this.calcBeamedNotesSlashBBox(8 * offsetScale, 8 * offsetScale, {\n stem: 6 * offsetScale,\n beam: 5 * offsetScale,\n });\n }\n else {\n const stem_direction = this.getStemDirection();\n const noteHeadBounds = this.getNoteHeadBounds();\n const noteStemHeight = stem.getHeight();\n let x = this.getAbsoluteX();\n let y = stem_direction === Stem.DOWN\n ? noteHeadBounds.y_top - noteStemHeight\n : noteHeadBounds.y_bottom - noteStemHeight;\n const defaultStemExtention = stem_direction === Stem.DOWN ? this.glyph.stem_down_extension : this.glyph.stem_up_extension;\n let defaultOffsetY = Tables.STEM_HEIGHT;\n defaultOffsetY -= defaultOffsetY / 2.8;\n defaultOffsetY += defaultStemExtention;\n y += defaultOffsetY * staveNoteScale * stem_direction;\n const offsets = stem_direction === Stem.UP\n ? {\n x1: 1,\n y1: 0,\n x2: 13,\n y2: -9,\n }\n : {\n x1: -4,\n y1: 1,\n x2: 13,\n y2: 9,\n };\n x += offsets.x1 * offsetScale;\n y += offsets.y1 * offsetScale;\n slashBBox = {\n x1: x,\n y1: y,\n x2: x + offsets.x2 * offsetScale,\n y2: y + offsets.y2 * offsetScale,\n };\n }\n // FIXME: avoid staff lines, ledger lines or others.\n const ctx = this.checkContext();\n ctx.save();\n ctx.setLineWidth(1 * offsetScale); // FIXME: use more appropriate value.\n ctx.beginPath();\n ctx.moveTo(slashBBox.x1, slashBBox.y1);\n ctx.lineTo(slashBBox.x2, slashBBox.y2);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n }\n }\n calcBeamedNotesSlashBBox(slashStemOffset, slashBeamOffset, protrusions) {\n const beam = this.beam;\n if (!beam)\n throw new RuntimeError('NoBeam', \"Can't calculate without a beam.\");\n const beam_slope = beam.slope;\n const isBeamEndNote = beam.notes[beam.notes.length - 1] === this;\n const scaleX = isBeamEndNote ? -1 : 1;\n const beam_angle = Math.atan(beam_slope * scaleX);\n // slash line intersecting point on beam.\n const iPointOnBeam = {\n dx: Math.cos(beam_angle) * slashBeamOffset,\n dy: Math.sin(beam_angle) * slashBeamOffset,\n };\n slashStemOffset *= this.getStemDirection();\n const slash_angle = Math.atan((iPointOnBeam.dy - slashStemOffset) / iPointOnBeam.dx);\n const protrusion_stem_dx = Math.cos(slash_angle) * protrusions.stem * scaleX;\n const protrusion_stem_dy = Math.sin(slash_angle) * protrusions.stem;\n const protrusion_beam_dx = Math.cos(slash_angle) * protrusions.beam * scaleX;\n const protrusion_beam_dy = Math.sin(slash_angle) * protrusions.beam;\n const stemX = this.getStemX();\n const stem0X = beam.notes[0].getStemX();\n const stemY = beam.getBeamYToDraw() + (stemX - stem0X) * beam_slope;\n const ret = {\n x1: stemX - protrusion_stem_dx,\n y1: stemY + slashStemOffset - protrusion_stem_dy,\n x2: stemX + iPointOnBeam.dx * scaleX + protrusion_beam_dx,\n y2: stemY + iPointOnBeam.dy + protrusion_beam_dy,\n };\n return ret;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Mark Meeus 2019\nimport { KeySignature } from './keysignature';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nexport class KeySigNote extends Note {\n constructor(keySpec, cancelKeySpec, alterKeySpec) {\n super({ duration: 'b' });\n this.keySignature = new KeySignature(keySpec, cancelKeySpec, alterKeySpec);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.KeySigNote;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n this.keySignature.setStave(this.checkStave());\n this.setWidth(this.keySignature.getWidth());\n return this;\n }\n draw() {\n const ctx = this.checkStave().checkContext();\n this.setRendered();\n this.keySignature.setX(this.getAbsoluteX());\n this.keySignature.setContext(ctx);\n this.keySignature.draw();\n }\n}\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements multiple measure rests.\nimport { Element } from './element';\nimport { Glyph } from './glyph';\nimport { NoteHead } from './notehead';\nimport { StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { TimeSignature } from './timesignature';\nimport { Category, isBarline } from './typeguard';\nimport { defined } from './util';\nlet semibreve_rest;\nfunction get_semibreve_rest() {\n if (!semibreve_rest) {\n const noteHead = new NoteHead({ duration: 'w', note_type: 'r' });\n semibreve_rest = {\n glyph_font_scale: noteHead.render_options.glyph_font_scale,\n glyph_code: noteHead.glyph_code,\n width: noteHead.getWidth(),\n };\n }\n return semibreve_rest;\n}\nexport class MultiMeasureRest extends Element {\n /**\n *\n * @param number_of_measures Number of measures.\n * @param options The options object.\n */\n constructor(number_of_measures, options) {\n super();\n this.xs = { left: NaN, right: NaN };\n this.hasPaddingLeft = false;\n this.hasPaddingRight = false;\n this.hasLineThickness = false;\n this.hasSymbolSpacing = false;\n this.number_of_measures = number_of_measures;\n // Keep track of whether these four options were provided.\n this.hasPaddingLeft = typeof options.padding_left === 'number';\n this.hasPaddingRight = typeof options.padding_right === 'number';\n this.hasLineThickness = typeof options.line_thickness === 'number';\n this.hasSymbolSpacing = typeof options.symbol_spacing === 'number';\n const musicFont = Tables.currentMusicFont();\n this.render_options = Object.assign({ use_symbols: false, show_number: true, number_line: -0.5, number_glyph_point: musicFont.lookupMetric('digits.point'), line: 2, spacing_between_lines_px: Tables.STAVE_LINE_DISTANCE, serif_thickness: 2, semibreve_rest_glyph_scale: Tables.NOTATION_FONT_SCALE, padding_left: 0, padding_right: 0, line_thickness: 5, symbol_spacing: 0 }, options);\n const fontLineShift = musicFont.lookupMetric('digits.shiftLine', 0);\n this.render_options.number_line += fontLineShift;\n }\n static get CATEGORY() {\n return Category.MultiMeasureRest;\n }\n getXs() {\n return this.xs;\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getStave() {\n return this.stave;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n drawLine(stave, ctx, left, right, spacingBetweenLines) {\n const options = this.render_options;\n const y = stave.getYForLine(options.line);\n const padding = (right - left) * 0.1;\n left += padding;\n right -= padding;\n let lineThicknessHalf;\n if (this.hasLineThickness) {\n lineThicknessHalf = options.line_thickness * 0.5;\n }\n else {\n lineThicknessHalf = spacingBetweenLines * 0.25;\n }\n const serifThickness = options.serif_thickness;\n const top = y - spacingBetweenLines;\n const bot = y + spacingBetweenLines;\n const leftIndented = left + serifThickness;\n const rightIndented = right - serifThickness;\n const lineTop = y - lineThicknessHalf;\n const lineBottom = y + lineThicknessHalf;\n ctx.save();\n ctx.beginPath();\n ctx.moveTo(left, top);\n ctx.lineTo(leftIndented, top);\n ctx.lineTo(leftIndented, lineTop);\n ctx.lineTo(rightIndented, lineTop);\n ctx.lineTo(rightIndented, top);\n ctx.lineTo(right, top);\n ctx.lineTo(right, bot);\n ctx.lineTo(rightIndented, bot);\n ctx.lineTo(rightIndented, lineBottom);\n ctx.lineTo(leftIndented, lineBottom);\n ctx.lineTo(leftIndented, bot);\n ctx.lineTo(left, bot);\n ctx.closePath();\n ctx.fill();\n }\n drawSymbols(stave, ctx, left, right, spacingBetweenLines) {\n const n4 = Math.floor(this.number_of_measures / 4);\n const n = this.number_of_measures % 4;\n const n2 = Math.floor(n / 2);\n const n1 = n % 2;\n const options = this.render_options;\n // FIXME: TODO: invalidate semibreve_rest at the appropriate time\n // (e.g., if the system font settings are changed).\n semibreve_rest = undefined;\n const rest = get_semibreve_rest();\n const rest_scale = options.semibreve_rest_glyph_scale;\n const rest_width = rest.width * (rest_scale / rest.glyph_font_scale);\n const glyphs = {\n 2: {\n width: rest_width * 0.5,\n height: spacingBetweenLines,\n },\n 1: {\n width: rest_width,\n },\n };\n /* 10: normal spacingBetweenLines */\n const spacing = this.hasSymbolSpacing ? options.symbol_spacing : 10;\n const width = n4 * glyphs[2].width + n2 * glyphs[2].width + n1 * glyphs[1].width + (n4 + n2 + n1 - 1) * spacing;\n let x = left + (right - left) * 0.5 - width * 0.5;\n const line = options.line;\n const yTop = stave.getYForLine(line - 1);\n const yMiddle = stave.getYForLine(line);\n const yBottom = stave.getYForLine(line + 1);\n ctx.save();\n ctx.setStrokeStyle('none');\n ctx.setLineWidth(0);\n for (let i = 0; i < n4; ++i) {\n ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n ctx.fillRect(x, yBottom - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n x += glyphs[2].width + spacing;\n }\n for (let i = 0; i < n2; ++i) {\n ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n x += glyphs[2].width + spacing;\n }\n for (let i = 0; i < n1; ++i) {\n Glyph.renderGlyph(ctx, x, yTop, rest_scale, rest.glyph_code);\n x += glyphs[1].width + spacing;\n }\n ctx.restore();\n }\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const stave = this.checkStave();\n let left = stave.getNoteStartX();\n let right = stave.getNoteEndX();\n // FIXME: getNoteStartX() returns x + 5(barline width)\n // getNoteEndX() returns x + width(no barline width)\n // See Stave constructor. How do we fix this?\n // Here, we subtract the barline width.\n const begModifiers = stave.getModifiers(StaveModifierPosition.BEGIN);\n if (begModifiers.length === 1 && isBarline(begModifiers[0])) {\n left -= begModifiers[0].getWidth();\n }\n const options = this.render_options;\n if (this.hasPaddingLeft) {\n left = stave.getX() + options.padding_left;\n }\n if (this.hasPaddingRight) {\n right = stave.getX() + stave.getWidth() - options.padding_right;\n }\n this.xs.left = left;\n this.xs.right = right;\n const spacingBetweenLines = options.spacing_between_lines_px;\n if (options.use_symbols) {\n this.drawSymbols(stave, ctx, left, right, spacingBetweenLines);\n }\n else {\n this.drawLine(stave, ctx, left, right, spacingBetweenLines);\n }\n if (options.show_number) {\n const timeSpec = '/' + this.number_of_measures;\n const timeSig = new TimeSignature(timeSpec, 0, false);\n timeSig.point = options.number_glyph_point;\n timeSig.setTimeSig(timeSpec);\n timeSig.setStave(stave);\n timeSig.setX(left + (right - left) * 0.5 - timeSig.getInfo().glyph.getMetrics().width * 0.5);\n timeSig.bottomLine = options.number_line;\n timeSig.setContext(ctx).draw();\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (PedalMarking.DEBUG)\n log('Vex.Flow.PedalMarking', args);\n}\n/**\n * Draws a pedal glyph with the provided `name` on a rendering `context`\n * at the coordinates `x` and `y. Takes into account the glyph data\n * coordinate shifts.\n */\nfunction drawPedalGlyph(name, context, x, y, point) {\n const glyph_data = PedalMarking.GLYPHS[name];\n const glyph = new Glyph(glyph_data.code, point, { category: 'pedalMarking' });\n glyph.render(context, x + glyph_data.x_shift, y + glyph_data.y_shift);\n}\n/**\n * PedalMarking implements different types of pedal markings. These notation\n * elements indicate to the performer when to depress and release the a pedal.\n *\n * In order to create \"Sostenuto\", and \"una corda\" markings, you must set\n * custom text for the release/depress pedal markings.\n */\nexport class PedalMarking extends Element {\n constructor(notes) {\n super();\n this.notes = notes;\n this.type = PedalMarking.type.TEXT;\n this.line = 0;\n // Custom text for the release/depress markings\n this.custom_depress_text = '';\n this.custom_release_text = '';\n this.resetFont();\n this.render_options = {\n bracket_height: 10,\n text_margin_right: 6,\n bracket_line_width: 1,\n color: 'black',\n };\n }\n static get CATEGORY() {\n return Category.PedalMarking;\n }\n /**\n * Create a sustain pedal marking. Returns the defaults PedalMarking.\n * Which uses the traditional \"Ped\" and \"*\"\" markings.\n */\n static createSustain(notes) {\n const pedal = new PedalMarking(notes);\n return pedal;\n }\n /** Create a sostenuto pedal marking */\n static createSostenuto(notes) {\n const pedal = new PedalMarking(notes);\n pedal.setType(PedalMarking.type.MIXED);\n pedal.setCustomText('Sost. Ped.');\n return pedal;\n }\n /** Create an una corda pedal marking */\n static createUnaCorda(notes) {\n const pedal = new PedalMarking(notes);\n pedal.setType(PedalMarking.type.TEXT);\n pedal.setCustomText('una corda', 'tre corda');\n return pedal;\n }\n /** Set pedal type. */\n setType(type) {\n type = typeof type === 'string' ? PedalMarking.typeString[type] : type;\n if (type >= PedalMarking.type.TEXT && type <= PedalMarking.type.MIXED) {\n this.type = type;\n }\n return this;\n }\n /**\n * Set custom text for the `depress`/`release` pedal markings. No text is\n * set if the parameter is falsy.\n */\n setCustomText(depress, release) {\n this.custom_depress_text = depress || '';\n this.custom_release_text = release || '';\n return this;\n }\n /** Set the staff line to render the markings on. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Draw the bracket based pedal markings. */\n drawBracketed() {\n const ctx = this.checkContext();\n let is_pedal_depressed = false;\n let prev_x;\n let prev_y;\n // Iterate through each note\n this.notes.forEach((note, index, notes) => {\n // Each note triggers the opposite pedal action\n is_pedal_depressed = !is_pedal_depressed;\n // Get the initial coordinates for the note\n const x = note.getAbsoluteX();\n const y = note.checkStave().getYForBottomText(this.line + 3);\n // Throw if current note is positioned before the previous note\n if (x < prev_x) {\n throw new RuntimeError('InvalidConfiguration', 'The notes provided must be in order of ascending x positions');\n }\n // Determine if the previous or next note are the same\n // as the current note. We need to keep track of this for\n // when adjustments are made for the release+depress action\n const next_is_same = notes[index + 1] === note;\n const prev_is_same = notes[index - 1] === note;\n let x_shift = 0;\n const point = Tables.currentMusicFont().lookupMetric(`pedalMarking.${is_pedal_depressed ? 'down' : 'up'}.point`);\n if (is_pedal_depressed) {\n // Adjustment for release+depress\n x_shift = prev_is_same ? 5 : 0;\n if (this.type === PedalMarking.type.MIXED && !prev_is_same) {\n // For MIXED style, start with text instead of bracket\n if (this.custom_depress_text) {\n // If we have custom text, use instead of the default \"Ped\" glyph\n const text_width = ctx.measureText(this.custom_depress_text).width;\n ctx.fillText(this.custom_depress_text, x - text_width / 2, y);\n x_shift = text_width / 2 + this.render_options.text_margin_right;\n }\n else {\n // Render the Ped glyph in position\n drawPedalGlyph('pedal_depress', ctx, x, y, point);\n x_shift = 20 + this.render_options.text_margin_right;\n }\n }\n else {\n // Draw start bracket\n ctx.beginPath();\n ctx.moveTo(x, y - this.render_options.bracket_height);\n ctx.lineTo(x + x_shift, y);\n ctx.stroke();\n ctx.closePath();\n }\n }\n else {\n // Adjustment for release+depress\n x_shift = next_is_same ? -5 : 0;\n // Draw end bracket\n ctx.beginPath();\n ctx.moveTo(prev_x, prev_y);\n ctx.lineTo(x + x_shift, y);\n ctx.lineTo(x, y - this.render_options.bracket_height);\n ctx.stroke();\n ctx.closePath();\n }\n // Store previous coordinates\n prev_x = x + x_shift;\n prev_y = y;\n });\n }\n /**\n * Draw the text based pedal markings. This defaults to the traditional\n * \"Ped\" and \"*\"\" symbols if no custom text has been provided.\n */\n drawText() {\n const ctx = this.checkContext();\n let is_pedal_depressed = false;\n // Iterate through each note, placing glyphs or custom text accordingly\n this.notes.forEach((note) => {\n is_pedal_depressed = !is_pedal_depressed;\n const stave = note.checkStave();\n const x = note.getAbsoluteX();\n const y = stave.getYForBottomText(this.line + 3);\n const point = Tables.currentMusicFont().lookupMetric(`pedalMarking.${is_pedal_depressed ? 'down' : 'up'}.point`);\n let text_width = 0;\n if (is_pedal_depressed) {\n if (this.custom_depress_text) {\n text_width = ctx.measureText(this.custom_depress_text).width;\n ctx.fillText(this.custom_depress_text, x - text_width / 2, y);\n }\n else {\n drawPedalGlyph('pedal_depress', ctx, x, y, point);\n }\n }\n else {\n if (this.custom_release_text) {\n text_width = ctx.measureText(this.custom_release_text).width;\n ctx.fillText(this.custom_release_text, x - text_width / 2, y);\n }\n else {\n drawPedalGlyph('pedal_release', ctx, x, y, point);\n }\n }\n });\n }\n /** Render the pedal marking in position on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setStrokeStyle(this.render_options.color);\n ctx.setFillStyle(this.render_options.color);\n ctx.setFont(this.textFont);\n L('Rendering Pedal Marking');\n if (this.type === PedalMarking.type.BRACKET || this.type === PedalMarking.type.MIXED) {\n ctx.setLineWidth(this.render_options.bracket_line_width);\n this.drawBracketed();\n }\n else if (this.type === PedalMarking.type.TEXT) {\n this.drawText();\n }\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.PedalMarking.DEBUG` to `true`. */\nPedalMarking.DEBUG = false;\nPedalMarking.TEXT_FONT = {\n family: Font.SERIF,\n size: 12,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n/** Glyph data */\nPedalMarking.GLYPHS = {\n pedal_depress: {\n code: 'keyboardPedalPed',\n x_shift: -10,\n y_shift: 0,\n },\n pedal_release: {\n code: 'keyboardPedalUp',\n x_shift: -2,\n y_shift: 3,\n },\n};\n/** Pedal type as number. */\nPedalMarking.type = {\n TEXT: 1,\n BRACKET: 2,\n MIXED: 3,\n};\n/** Pedal type as string. */\nPedalMarking.typeString = {\n text: PedalMarking.type.TEXT,\n bracket: PedalMarking.type.BRACKET,\n mixed: PedalMarking.type.MIXED,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Glyph } from './glyph';\nimport { GlyphNote } from './glyphnote';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\n// Map `type` to SMuFL glyph code.\nconst CODES = {\n '1': 'repeat1Bar',\n '2': 'repeat2Bars',\n '4': 'repeat4Bars',\n slash: 'repeatBarSlash',\n};\nexport class RepeatNote extends GlyphNote {\n static get CATEGORY() {\n return Category.RepeatNote;\n }\n constructor(type, noteStruct, options) {\n super(undefined, Object.assign({ duration: 'q', align_center: type !== 'slash' }, noteStruct), options);\n const glyphCode = CODES[type] || 'repeat1Bar';\n const glyph = new Glyph(glyphCode, Tables.currentMusicFont().lookupMetric('repeatNote.point', 40), {\n category: 'repeatNote',\n });\n this.setGlyph(glyph);\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This file implements `StaveLine` which are simply lines that connect\n// two notes. This object is highly configurable, see the `render_options`.\n// A simple line is often used for notating glissando articulations, but you\n// can format a `StaveLine` with arrows or colors for more pedagogical\n// purposes, such as diagrams.\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { TextJustification } from './textnote';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n// Attribution: Arrow rendering implementations based off of\n// Patrick Horgan's article, \"Drawing lines and arcs with\n// arrow heads on HTML5 Canvas\"\n//\n// Draw an arrow head that connects between 3 coordinates.\nfunction drawArrowHead(ctx, x0, y0, x1, y1, x2, y2) {\n // all cases do this.\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.lineTo(x0, y0);\n ctx.closePath();\n ctx.fill();\n}\nexport class StaveLine extends Element {\n // Initialize the StaveLine with the given `notes`.\n //\n // `notes` is a struct that has:\n //\n // ```\n // {\n // first_note: Note,\n // last_note: Note,\n // first_indices: [n1, n2, n3],\n // last_indices: [n1, n2, n3]\n // }\n // ```\n constructor(notes) {\n super();\n this.setNotes(notes);\n this.text = '';\n this.resetFont();\n this.render_options = {\n // Space to add to the left or the right\n padding_left: 4,\n padding_right: 3,\n // The width of the line in pixels\n line_width: 1,\n // An array of line/space lengths. (TODO/QUESTION: Is this supported in SVG?).\n line_dash: undefined,\n // Can draw rounded line end, instead of a square. (TODO/QUESTION: Is this supported in SVG?).\n rounded_end: true,\n // The color of the line and arrowheads\n color: undefined,\n // Flags to draw arrows on each end of the line\n draw_start_arrow: false,\n draw_end_arrow: false,\n // The length of the arrowhead sides\n arrowhead_length: 10,\n // The angle of the arrowhead\n arrowhead_angle: Math.PI / 8,\n // The position of the text\n text_position_vertical: StaveLine.TextVerticalPosition.TOP,\n text_justification: StaveLine.TextJustification.CENTER,\n };\n }\n static get CATEGORY() {\n return Category.StaveLine;\n }\n // The the annotation for the `StaveLine`\n setText(text) {\n this.text = text;\n return this;\n }\n // Set the notes for the `StaveLine`\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Notes needs to have either first_note or last_note set.');\n }\n if (!notes.first_indices)\n notes.first_indices = [0];\n if (!notes.last_indices)\n notes.last_indices = [0];\n if (notes.first_indices.length !== notes.last_indices.length) {\n throw new RuntimeError('BadArguments', 'Connected notes must have same number of indices.');\n }\n this.notes = notes;\n this.first_note = notes.first_note;\n this.first_indices = notes.first_indices;\n this.last_note = notes.last_note;\n this.last_indices = notes.last_indices;\n return this;\n }\n // Apply the style of the `StaveLine` to the context\n applyLineStyle() {\n const ctx = this.checkContext();\n const render_options = this.render_options;\n if (render_options.line_dash) {\n ctx.setLineDash(render_options.line_dash);\n }\n if (render_options.line_width) {\n ctx.setLineWidth(render_options.line_width);\n }\n if (render_options.rounded_end) {\n ctx.setLineCap('round');\n }\n else {\n ctx.setLineCap('square');\n }\n }\n // Apply the text styling to the context\n applyFontStyle() {\n const ctx = this.checkContext();\n ctx.setFont(this.textFont);\n const render_options = this.render_options;\n const color = render_options.color;\n if (color) {\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n }\n }\n // Helper function to draw a line with arrow heads\n drawArrowLine(ctx, pt1, pt2) {\n const both_arrows = this.render_options.draw_start_arrow && this.render_options.draw_end_arrow;\n const x1 = pt1.x;\n const y1 = pt1.y;\n const x2 = pt2.x;\n const y2 = pt2.y;\n // For ends with arrow we actually want to stop before we get to the arrow\n // so that wide lines won't put a flat end on the arrow.\n const distance = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n const ratio = (distance - this.render_options.arrowhead_length / 3) / distance;\n let end_x;\n let end_y;\n let start_x;\n let start_y;\n if (this.render_options.draw_end_arrow || both_arrows) {\n end_x = Math.round(x1 + (x2 - x1) * ratio);\n end_y = Math.round(y1 + (y2 - y1) * ratio);\n }\n else {\n end_x = x2;\n end_y = y2;\n }\n if (this.render_options.draw_start_arrow || both_arrows) {\n start_x = x1 + (x2 - x1) * (1 - ratio);\n start_y = y1 + (y2 - y1) * (1 - ratio);\n }\n else {\n start_x = x1;\n start_y = y1;\n }\n if (this.render_options.color) {\n ctx.setStrokeStyle(this.render_options.color);\n ctx.setFillStyle(this.render_options.color);\n }\n // Draw the shaft of the arrow\n ctx.beginPath();\n ctx.moveTo(start_x, start_y);\n ctx.lineTo(end_x, end_y);\n ctx.stroke();\n ctx.closePath();\n // calculate the angle of the line\n const line_angle = Math.atan2(y2 - y1, x2 - x1);\n // h is the line length of a side of the arrow head\n const h = Math.abs(this.render_options.arrowhead_length / Math.cos(this.render_options.arrowhead_angle));\n let angle1;\n let angle2;\n let top_x;\n let top_y;\n let bottom_x;\n let bottom_y;\n if (this.render_options.draw_end_arrow || both_arrows) {\n angle1 = line_angle + Math.PI + this.render_options.arrowhead_angle;\n top_x = x2 + Math.cos(angle1) * h;\n top_y = y2 + Math.sin(angle1) * h;\n angle2 = line_angle + Math.PI - this.render_options.arrowhead_angle;\n bottom_x = x2 + Math.cos(angle2) * h;\n bottom_y = y2 + Math.sin(angle2) * h;\n drawArrowHead(ctx, top_x, top_y, x2, y2, bottom_x, bottom_y);\n }\n if (this.render_options.draw_start_arrow || both_arrows) {\n angle1 = line_angle + this.render_options.arrowhead_angle;\n top_x = x1 + Math.cos(angle1) * h;\n top_y = y1 + Math.sin(angle1) * h;\n angle2 = line_angle - this.render_options.arrowhead_angle;\n bottom_x = x1 + Math.cos(angle2) * h;\n bottom_y = y1 + Math.sin(angle2) * h;\n drawArrowHead(ctx, top_x, top_y, x1, y1, bottom_x, bottom_y);\n }\n }\n // Renders the `StaveLine` on the context\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const first_note = this.first_note;\n const last_note = this.last_note;\n const render_options = this.render_options;\n ctx.save();\n this.applyLineStyle();\n // Cycle through each set of indices and draw lines\n let start_position = { x: 0, y: 0 };\n let end_position = { x: 0, y: 0 };\n this.first_indices.forEach((first_index, i) => {\n const last_index = this.last_indices[i];\n // Get initial coordinates for the start/end of the line\n start_position = first_note.getModifierStartXY(2, first_index);\n end_position = last_note.getModifierStartXY(1, last_index);\n const upwards_slope = start_position.y > end_position.y;\n // Adjust `x` coordinates for modifiers\n start_position.x += first_note.getMetrics().modRightPx + render_options.padding_left;\n end_position.x -= last_note.getMetrics().modLeftPx + render_options.padding_right;\n // Adjust first `x` coordinates for displacements\n const notehead_width = first_note.getGlyph().getWidth();\n const first_displaced = first_note.getKeyProps()[first_index].displaced;\n if (first_displaced && first_note.getStemDirection() === 1) {\n start_position.x += notehead_width + render_options.padding_left;\n }\n // Adjust last `x` coordinates for displacements\n const last_displaced = last_note.getKeyProps()[last_index].displaced;\n if (last_displaced && last_note.getStemDirection() === -1) {\n end_position.x -= notehead_width + render_options.padding_right;\n }\n // Adjust y position better if it's not coming from the center of the note\n start_position.y += upwards_slope ? -3 : 1;\n end_position.y += upwards_slope ? 2 : 0;\n this.drawArrowLine(ctx, start_position, end_position);\n });\n ctx.restore();\n // Determine the x coordinate where to start the text\n const text_width = ctx.measureText(this.text).width;\n const justification = render_options.text_justification;\n let x = 0;\n if (justification === StaveLine.TextJustification.LEFT) {\n x = start_position.x;\n }\n else if (justification === StaveLine.TextJustification.CENTER) {\n const delta_x = end_position.x - start_position.x;\n const center_x = delta_x / 2 + start_position.x;\n x = center_x - text_width / 2;\n }\n else if (justification === StaveLine.TextJustification.RIGHT) {\n x = end_position.x - text_width;\n }\n // Determine the y value to start the text\n let y = 0;\n const vertical_position = render_options.text_position_vertical;\n if (vertical_position === StaveLine.TextVerticalPosition.TOP) {\n y = first_note.checkStave().getYForTopText();\n }\n else if (vertical_position === StaveLine.TextVerticalPosition.BOTTOM) {\n y = first_note.checkStave().getYForBottomText(Tables.TEXT_HEIGHT_OFFSET_HACK);\n }\n // Draw the text\n ctx.save();\n this.applyFontStyle();\n ctx.fillText(this.text, x, y);\n ctx.restore();\n return this;\n }\n}\n/** Default text font. */\nStaveLine.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n// Text Positioning\nStaveLine.TextVerticalPosition = {\n TOP: 1,\n BOTTOM: 2,\n};\nStaveLine.TextJustification = TextJustification;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { Note } from './note';\nimport { Stave } from './stave';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n/**\n * System implements a musical system, which is a collection of staves,\n * each which can have one or more voices. All voices across all staves in\n * the system are formatted together.\n */\nexport class System extends Element {\n constructor(params = {}) {\n super();\n this.setOptions(params);\n this.parts = [];\n }\n static get CATEGORY() {\n return Category.System;\n }\n /** Set formatting options. */\n setOptions(options = {}) {\n if (!options.factory) {\n throw new RuntimeError('NoFactory', 'System.setOptions(options) requires a factory.');\n }\n this.factory = options.factory;\n this.options = Object.assign(Object.assign({ factory: this.factory, x: 10, y: 10, width: 500, spaceBetweenStaves: 12, autoWidth: false, noJustification: false, debugFormatter: false, formatIterations: 0, noPadding: false }, options), { details: Object.assign({ alpha: 0.5 }, options.details), formatOptions: Object.assign({}, options.formatOptions) });\n if (this.options.noJustification === false && typeof options.width === 'undefined') {\n this.options.autoWidth = true;\n }\n }\n /** Set associated context. */\n setContext(context) {\n super.setContext(context);\n this.factory.setContext(context);\n return this;\n }\n /**\n * Add connector between staves.\n * @param type see {@link StaveConnector.typeString}\n */\n addConnector(type = 'double') {\n this.connector = this.factory.StaveConnector({\n top_stave: this.parts[0].stave,\n bottom_stave: this.parts[this.parts.length - 1].stave,\n type,\n });\n return this.connector;\n }\n /**\n * Add a stave to the system.\n *\n * Example (one voice):\n *\n * `system.addStave({voices: [score.voice(score.notes('C#5/q, B4, A4, G#4'))]});`\n *\n * Example (two voices):\n *\n * `system.addStave({voices: [`\n * `score.voice(score.notes('C#5/q, B4, A4, G#4', {stem: 'up'})),`\n * `score.voice(score.notes('C#4/h, C#4', {stem: 'down'}))`\n * `]});`\n */\n addStave(params) {\n var _a;\n const staveOptions = Object.assign({ left_bar: false }, params.options);\n const stave = (_a = params.stave) !== null && _a !== void 0 ? _a : this.factory.Stave({ x: this.options.x, y: this.options.y, width: this.options.width, options: staveOptions });\n const p = Object.assign(Object.assign({ stave, \n /* voices: [], */\n spaceAbove: 0, spaceBelow: 0, debugNoteMetrics: false, noJustification: false }, params), { options: staveOptions });\n const ctx = this.getContext();\n p.voices.forEach((voice) => voice\n .setContext(ctx)\n .setStave(stave)\n .getTickables()\n .forEach((tickable) => tickable.setStave(stave)));\n this.parts.push(p);\n return stave;\n }\n /** Format the system. */\n format() {\n const options_details = this.options.details;\n let justifyWidth = 0;\n const formatter = new Formatter(options_details);\n this.formatter = formatter;\n let y = this.options.y;\n let startX = 0;\n let allVoices = [];\n let allStaves = [];\n const debugNoteMetricsYs = [];\n // Join the voices for each stave.\n this.parts.forEach((part) => {\n y = y + part.stave.space(part.spaceAbove);\n part.stave.setY(y);\n formatter.joinVoices(part.voices);\n y = y + part.stave.space(part.spaceBelow);\n y = y + part.stave.space(this.options.spaceBetweenStaves);\n if (part.debugNoteMetrics) {\n debugNoteMetricsYs.push({ y, voice: part.voices[0] });\n y += 15;\n }\n allVoices = allVoices.concat(part.voices);\n allStaves = allStaves.concat(part.stave);\n startX = Math.max(startX, part.stave.getNoteStartX());\n });\n // Update the start position of all staves.\n this.parts.forEach((part) => part.stave.setNoteStartX(startX));\n if (this.options.autoWidth) {\n justifyWidth = formatter.preCalculateMinTotalWidth(allVoices);\n this.parts.forEach((part) => {\n part.stave.setWidth(justifyWidth + Stave.rightPadding + (startX - this.options.x));\n });\n }\n else {\n justifyWidth = this.options.noPadding\n ? this.options.width - (startX - this.options.x)\n : this.options.width - (startX - this.options.x) - Stave.defaultPadding;\n }\n formatter.format(allVoices, this.options.noJustification ? 0 : justifyWidth, this.options.formatOptions);\n formatter.postFormat();\n for (let i = 0; i < this.options.formatIterations; i++) {\n formatter.tune(options_details);\n }\n this.startX = startX;\n this.debugNoteMetricsYs = debugNoteMetricsYs;\n this.lastY = y;\n this.boundingBox = new BoundingBox(this.options.x, this.options.y, this.options.width, this.lastY - this.options.y);\n Stave.formatBegModifiers(allStaves);\n }\n /** Render the system. */\n draw() {\n // Render debugging information, if requested.\n const ctx = this.checkContext();\n if (!this.formatter || !this.startX || !this.lastY || !this.debugNoteMetricsYs) {\n throw new RuntimeError('NoFormatter', 'format() must be called before draw()');\n }\n this.setRendered();\n if (this.options.debugFormatter) {\n Formatter.plotDebugging(ctx, this.formatter, this.startX, this.options.y, this.lastY);\n }\n this.debugNoteMetricsYs.forEach((d) => {\n d.voice.getTickables().forEach((tickable) => Note.plotMetrics(ctx, tickable, d.y));\n });\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// The file implements notes for Tablature notation. This consists of one or\n// more fret positions, and can either be drawn with or without stems.\n//\n// See `tests/tabnote_tests.ts` for usage examples.\nimport { Font } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { StemmableNote } from './stemmablenote';\nimport { Tables } from './tables';\nimport { Category, isDot } from './typeguard';\nimport { defined, RuntimeError } from './util';\n// Gets the unused strings grouped together if consecutive.\n//\n// Parameters:\n// * num_lines - The number of lines\n// * strings_used - An array of numbers representing which strings have fret positions\nfunction getUnusedStringGroups(num_lines, strings_used) {\n const stem_through = [];\n let group = [];\n for (let string = 1; string <= num_lines; string++) {\n const is_used = strings_used.indexOf(string) > -1;\n if (!is_used) {\n group.push(string);\n }\n else {\n stem_through.push(group);\n group = [];\n }\n }\n if (group.length > 0)\n stem_through.push(group);\n return stem_through;\n}\n// Gets groups of points that outline the partial stem lines\n// between fret positions\n//\n// Parameters:\n// * stem_Y - The `y` coordinate the stem is located on\n// * unused_strings - An array of groups of unused strings\n// * stave - The stave to use for reference\n// * stem_direction - The direction of the stem\nfunction getPartialStemLines(stem_y, unused_strings, stave, stem_direction) {\n const up_stem = stem_direction !== 1;\n const down_stem = stem_direction !== -1;\n const line_spacing = stave.getSpacingBetweenLines();\n const total_lines = stave.getNumLines();\n const stem_lines = [];\n unused_strings.forEach((strings) => {\n const containsLastString = strings.indexOf(total_lines) > -1;\n const containsFirstString = strings.indexOf(1) > -1;\n if ((up_stem && containsFirstString) || (down_stem && containsLastString)) {\n return;\n }\n // If there's only one string in the group, push a duplicate value.\n // We do this because we need 2 strings to convert into upper/lower y\n // values.\n if (strings.length === 1) {\n strings.push(strings[0]);\n }\n const line_ys = [];\n // Iterate through each group string and store it's y position\n strings.forEach((string, index, strings) => {\n const isTopBound = string === 1;\n const isBottomBound = string === total_lines;\n // Get the y value for the appropriate staff line,\n // we adjust for a 0 index array, since string numbers are index 1\n let y = stave.getYForLine(string - 1);\n // Unless the string is the first or last, add padding to each side\n // of the line\n if (index === 0 && !isTopBound) {\n y -= line_spacing / 2 - 1;\n }\n else if (index === strings.length - 1 && !isBottomBound) {\n y += line_spacing / 2 - 1;\n }\n // Store the y value\n line_ys.push(y);\n // Store a subsequent y value connecting this group to the main\n // stem above/below the stave if it's the top/bottom string\n if (stem_direction === 1 && isTopBound) {\n line_ys.push(stem_y - 2);\n }\n else if (stem_direction === -1 && isBottomBound) {\n line_ys.push(stem_y + 2);\n }\n });\n // Add the sorted y values to the\n stem_lines.push(line_ys.sort((a, b) => a - b));\n });\n return stem_lines;\n}\nexport class TabNote extends StemmableNote {\n // Initialize the TabNote with a `noteStruct` full of properties\n // and whether to `draw_stem` when rendering the note\n constructor(noteStruct, draw_stem = false) {\n super(noteStruct);\n this.glyphs = [];\n // Return the number of the greatest string, which is the string lowest on the display\n this.greatestString = () => {\n return this.positions.map((x) => x.str).reduce((a, b) => (a > b ? a : b));\n };\n // Return the number of the least string, which is the string highest on the display\n this.leastString = () => {\n return this.positions.map((x) => x.str).reduce((a, b) => (a < b ? a : b));\n };\n this.ghost = false; // Renders parenthesis around notes\n // Note properties\n // The fret positions in the note. An array of `{ str: X, fret: X }`\n this.positions = noteStruct.positions || [];\n // Render Options\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads and rests\n glyph_font_scale: Tables.TABLATURE_FONT_SCALE, \n // Flag to draw a stem\n draw_stem, \n // Flag to draw dot modifiers\n draw_dots: draw_stem, \n // Flag to extend the main stem through the stave and fret positions\n draw_stem_through_stave: false, \n // vertical shift from stave line\n y_shift: 0, \n // normal glyph scale\n scale: 1.0, \n // default tablature font\n font: `${Font.SIZE}pt ${Font.SANS_SERIF}` });\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n this.buildStem();\n if (noteStruct.stem_direction) {\n this.setStemDirection(noteStruct.stem_direction);\n }\n else {\n this.setStemDirection(Stem.UP);\n }\n // Renders parenthesis around notes\n this.ghost = false;\n this.updateWidth();\n }\n static get CATEGORY() {\n return Category.TabNote;\n }\n reset() {\n super.reset();\n if (this.stave)\n this.setStave(this.stave);\n return this;\n }\n // Set as ghost `TabNote`, surrounds the fret positions with parenthesis.\n // Often used for indicating frets that are being bent to\n setGhost(ghost) {\n this.ghost = ghost;\n this.updateWidth();\n return this;\n }\n // Determine if the note has a stem\n hasStem() {\n if (this.render_options.draw_stem)\n return true;\n return false;\n }\n // Get the default stem extension for the note\n getStemExtension() {\n const glyph = this.getGlyph();\n if (this.stem_extension_override != null) {\n return this.stem_extension_override;\n }\n if (glyph) {\n return this.getStemDirection() === Stem.UP ? glyph.tabnote_stem_up_extension : glyph.tabnote_stem_down_extension;\n }\n return 0;\n }\n // Calculate and store the width of the note\n updateWidth() {\n this.glyphs = [];\n this.width = 0;\n for (let i = 0; i < this.positions.length; ++i) {\n let fret = this.positions[i].fret;\n if (this.ghost)\n fret = '(' + fret + ')';\n const glyph = Tables.tabToGlyph(fret.toString(), this.render_options.scale);\n this.glyphs.push(glyph);\n this.width = Math.max(glyph.getWidth(), this.width);\n }\n // For some reason we associate a notehead glyph with a TabNote, and this\n // glyph is used for certain width calculations. Of course, this is totally\n // incorrect since a notehead is a poor approximation for the dimensions of\n // a fret number which can have multiple digits. As a result, we must\n // overwrite getWidth() to return the correct width\n this.glyph.getWidth = () => this.width;\n }\n // Set the `stave` to the note\n setStave(stave) {\n super.setStave(stave);\n const ctx = stave.getContext();\n this.setContext(ctx);\n // Calculate the fret number width based on font used\n if (ctx) {\n this.width = 0;\n for (let i = 0; i < this.glyphs.length; ++i) {\n const glyph = this.glyphs[i];\n const text = '' + glyph.text;\n if (text.toUpperCase() !== 'X') {\n ctx.save();\n ctx.setFont(this.render_options.font);\n glyph.width = ctx.measureText(text).width;\n ctx.restore();\n glyph.getWidth = () => glyph.width;\n }\n this.width = Math.max(glyph.getWidth(), this.width);\n }\n this.glyph.getWidth = () => this.width;\n }\n // we subtract 1 from `line` because getYForLine expects a 0-based index,\n // while the position.str is a 1-based index\n const ys = this.positions.map(({ str: line }) => stave.getYForLine(Number(line) - 1));\n this.setYs(ys);\n if (this.stem) {\n this.stem.setYBounds(this.getStemY(), this.getStemY());\n }\n return this;\n }\n // Get the fret positions for the note\n getPositions() {\n return this.positions;\n }\n // Get the default `x` and `y` coordinates for a modifier at a specific\n // `position` at a fret position `index`\n getModifierStartXY(position, index) {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-Values calculated for this note.');\n }\n let x = 0;\n if (position === Modifier.Position.LEFT) {\n x = -1 * 2; // FIXME: modifier padding, move to font file\n }\n else if (position === Modifier.Position.RIGHT) {\n x = this.width + 2; // FIXME: modifier padding, move to font file\n }\n else if (position === Modifier.Position.BELOW || position === Modifier.Position.ABOVE) {\n const note_glyph_width = this.glyph.getWidth();\n x = note_glyph_width / 2;\n }\n return {\n x: this.getAbsoluteX() + x,\n y: this.ys[index],\n };\n }\n // Get the default line for rest\n getLineForRest() {\n return Number(this.positions[0].str);\n }\n // Pre-render formatting\n preFormat() {\n if (this.preFormatted)\n return;\n if (this.modifierContext)\n this.modifierContext.preFormat();\n // width is already set during init()\n this.preFormatted = true;\n }\n // Get the x position for the stem\n getStemX() {\n return this.getCenterGlyphX();\n }\n // Get the y position for the stem\n getStemY() {\n const num_lines = this.checkStave().getNumLines();\n // The decimal staff line amounts provide optimal spacing between the\n // fret number and the stem\n const stemUpLine = -0.5;\n const stemDownLine = num_lines - 0.5;\n const stemStartLine = Stem.UP === this.stem_direction ? stemUpLine : stemDownLine;\n return this.checkStave().getYForLine(stemStartLine);\n }\n // Get the stem extents for the tabnote\n getStemExtents() {\n return this.checkStem().getExtents();\n }\n // Draw the fal onto the context\n drawFlag() {\n var _a;\n const { beam, glyph, render_options: { draw_stem }, } = this;\n const context = this.checkContext();\n const shouldDrawFlag = beam == undefined && draw_stem;\n // Now it's the flag's turn.\n if (glyph.flag && shouldDrawFlag) {\n const flag_x = this.getStemX();\n const flag_y = this.getStemDirection() === Stem.DOWN\n ? // Down stems are below the note head and have flags on the right.\n this.getStemY() - this.checkStem().getHeight() - (this.glyph ? this.glyph.stem_down_extension : 0)\n : // Up stems are above the note head and have flags on the right.\n this.getStemY() - this.checkStem().getHeight() + (this.glyph ? this.glyph.stem_up_extension : 0);\n // Draw the Flag\n //this.flag?.setOptions({ category: 'flag.tabStem' });\n (_a = this.flag) === null || _a === void 0 ? void 0 : _a.render(context, flag_x, flag_y);\n //Glyph.renderGlyph(context, flag_x, flag_y, glyph_font_scale, flag_code, { category: 'flag.tabStem' });\n }\n }\n // Render the modifiers onto the context.\n drawModifiers() {\n this.modifiers.forEach((modifier) => {\n // Only draw the dots if enabled.\n if (isDot(modifier) && !this.render_options.draw_dots) {\n return;\n }\n modifier.setContext(this.getContext());\n modifier.drawWithStyle();\n });\n }\n // Render the stem extension through the fret positions\n drawStemThrough() {\n const stemX = this.getStemX();\n const stemY = this.getStemY();\n const ctx = this.checkContext();\n const drawStem = this.render_options.draw_stem;\n const stemThrough = this.render_options.draw_stem_through_stave;\n if (drawStem && stemThrough) {\n const numLines = this.checkStave().getNumLines();\n const stringsUsed = this.positions.map((position) => Number(position.str));\n const unusedStrings = getUnusedStringGroups(numLines, stringsUsed);\n const stemLines = getPartialStemLines(stemY, unusedStrings, this.checkStave(), this.getStemDirection());\n ctx.save();\n ctx.setLineWidth(Stem.WIDTH);\n stemLines.forEach((bounds) => {\n if (bounds.length === 0)\n return;\n ctx.beginPath();\n ctx.moveTo(stemX, bounds[0]);\n ctx.lineTo(stemX, bounds[bounds.length - 1]);\n ctx.stroke();\n ctx.closePath();\n });\n ctx.restore();\n }\n }\n // Render the fret positions onto the context\n drawPositions() {\n const ctx = this.checkContext();\n const x = this.getAbsoluteX();\n const ys = this.ys;\n for (let i = 0; i < this.positions.length; ++i) {\n const y = ys[i] + this.render_options.y_shift;\n const glyph = this.glyphs[i];\n // Center the fret text beneath the notation note head\n const note_glyph_width = this.glyph.getWidth();\n const tab_x = x + note_glyph_width / 2 - glyph.getWidth() / 2;\n // FIXME: Magic numbers.\n ctx.clearRect(tab_x - 2, y - 3, glyph.getWidth() + 4, 6);\n if (glyph.code) {\n Glyph.renderGlyph(ctx, tab_x, y, this.render_options.glyph_font_scale * this.render_options.scale, glyph.code);\n }\n else {\n ctx.save();\n ctx.setFont(this.render_options.font);\n const text = glyph.text.toString();\n ctx.fillText(text, tab_x, y + 5 * this.render_options.scale);\n ctx.restore();\n }\n }\n }\n // The main rendering function for the entire note.\n draw() {\n const ctx = this.checkContext();\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', \"Can't draw note without Y values.\");\n }\n this.setRendered();\n const render_stem = this.beam == undefined && this.render_options.draw_stem;\n ctx.openGroup('tabnote', this.getAttribute('id'), { pointerBBox: true });\n this.drawPositions();\n this.drawStemThrough();\n if (this.stem && render_stem) {\n const stem_x = this.getStemX();\n this.stem.setNoteHeadXBounds(stem_x, stem_x);\n this.stem.setContext(ctx).draw();\n }\n this.drawFlag();\n this.drawModifiers();\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Stave } from './stave';\nimport { Category } from './typeguard';\nexport class TabStave extends Stave {\n static get CATEGORY() {\n return Category.TabStave;\n }\n constructor(x, y, width, options) {\n const tab_options = Object.assign({ spacing_between_lines_px: 13, num_lines: 6, top_text_position: 1 }, options);\n super(x, y, width, tab_options);\n }\n getYForGlyphs() {\n return this.getYForLine(2.5);\n }\n // Deprecated\n addTabGlyph() {\n this.addClef('tab');\n return this;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n//\n// This file implements `TextBrackets` which extend between two notes.\n// The octave transposition markings (8va, 8vb, 15va, 15vb) can be created\n// using this class.\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Renderer } from './renderer';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.TextBracket.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextBracket.DEBUG)\n log('Vex.Flow.TextBracket', args);\n}\nexport var TextBracketPosition;\n(function (TextBracketPosition) {\n TextBracketPosition[TextBracketPosition[\"TOP\"] = 1] = \"TOP\";\n TextBracketPosition[TextBracketPosition[\"BOTTOM\"] = -1] = \"BOTTOM\";\n})(TextBracketPosition || (TextBracketPosition = {}));\nexport class TextBracket extends Element {\n constructor({ start, stop, text = '', superscript = '', position = TextBracketPosition.TOP }) {\n super();\n this.start = start;\n this.stop = stop;\n this.text = text;\n this.superscript = superscript;\n this.position = typeof position === 'string' ? TextBracket.PositionString[position] : position;\n this.line = 1;\n this.resetFont();\n this.render_options = {\n dashed: true,\n dash: [5],\n color: 'black',\n line_width: 1,\n show_bracket: true,\n bracket_height: 8,\n // In the BOTTOM position, the bracket line can extend\n // under the superscript.\n underline_superscript: true,\n };\n }\n static get CATEGORY() {\n return Category.TextBracket;\n }\n static get Position() {\n return TextBracketPosition;\n }\n static get PositionString() {\n return {\n top: TextBracketPosition.TOP,\n bottom: TextBracketPosition.BOTTOM,\n };\n }\n /**\n * @deprecated Use `TextBracket.Position` instead.\n */\n static get Positions() {\n L('Positions is deprecated, use TextBracketPosition instead.');\n return TextBracketPosition;\n }\n /**\n * @deprecated Use `TextBracket.PositionString` instead.\n */\n static get PositionsString() {\n L('PositionsString is deprecated, use PositionString instead.');\n return TextBracket.PositionString;\n }\n /**\n * Apply the text backet styling to the provided context.\n * @param ctx\n * @returns this\n */\n applyStyle(ctx) {\n ctx.setFont(this.font);\n const options = this.render_options;\n ctx.setStrokeStyle(options.color);\n ctx.setFillStyle(options.color);\n ctx.setLineWidth(options.line_width);\n return this;\n }\n // Set whether the bracket line should be `dashed`. You can also\n // optionally set the `dash` pattern by passing in an array of numbers\n setDashed(dashed, dash) {\n this.render_options.dashed = dashed;\n if (dash)\n this.render_options.dash = dash;\n return this;\n }\n // Set the rendering `context` for the octave bracket\n setLine(line) {\n this.line = line;\n return this;\n }\n // Draw the octave bracket on the rendering context\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let y = 0;\n switch (this.position) {\n case TextBracketPosition.TOP:\n y = this.start.checkStave().getYForTopText(this.line);\n break;\n case TextBracketPosition.BOTTOM:\n y = this.start.checkStave().getYForBottomText(this.line + Tables.TEXT_HEIGHT_OFFSET_HACK);\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} is invalid.`);\n }\n // Get the preliminary start and stop coordintates for the bracket\n const start = { x: this.start.getAbsoluteX(), y };\n const stop = { x: this.stop.getAbsoluteX(), y };\n L('Rendering TextBracket: start:', start, 'stop:', stop, 'y:', y);\n const bracket_height = this.render_options.bracket_height * this.position;\n ctx.save();\n this.applyStyle(ctx);\n // Draw text\n ctx.fillText(this.text, start.x, start.y);\n // Get the width and height for the octave number\n const main_measure = ctx.measureText(this.text);\n const main_width = main_measure.width;\n const main_height = main_measure.height;\n // Calculate the y position for the super script\n const super_y = start.y - main_height / 2.5;\n // We called this.resetFont() in the constructor, so we know this.textFont is available.\n // eslint-disable-next-line\n const { family, size, weight, style } = this.textFont;\n // To draw the superscript, we scale the font size by 1/1.4.\n const smallerFontSize = Font.scaleSize(size, 0.714286);\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.superscript, start.x + main_width + 1, super_y);\n // Determine width and height of the superscript\n const super_measure = ctx.measureText(this.superscript);\n const super_width = super_measure.width;\n const super_height = super_measure.height;\n // Setup initial coordinates for the bracket line\n let start_x = start.x;\n let line_y = super_y;\n const end_x = stop.x + this.stop.getGlyph().getWidth();\n // Adjust x and y coordinates based on position\n if (this.position === TextBracketPosition.TOP) {\n start_x += main_width + super_width + 5;\n line_y -= super_height / 2.7;\n }\n else if (this.position === TextBracketPosition.BOTTOM) {\n line_y += super_height / 2.7;\n start_x += main_width + 2;\n if (!this.render_options.underline_superscript) {\n start_x += super_width;\n }\n }\n if (this.render_options.dashed) {\n // Main line\n Renderer.drawDashedLine(ctx, start_x, line_y, end_x, line_y, this.render_options.dash);\n // Ending Bracket\n if (this.render_options.show_bracket) {\n Renderer.drawDashedLine(ctx, end_x, line_y + 1 * this.position, end_x, line_y + bracket_height, this.render_options.dash);\n }\n }\n else {\n ctx.beginPath();\n ctx.moveTo(start_x, line_y);\n // Main line\n ctx.lineTo(end_x, line_y);\n if (this.render_options.show_bracket) {\n // Ending bracket\n ctx.lineTo(end_x, line_y + bracket_height);\n }\n ctx.stroke();\n ctx.closePath();\n }\n ctx.restore();\n }\n}\nTextBracket.DEBUG = false;\nTextBracket.TEXT_FONT = {\n family: Font.SERIF,\n size: 15,\n weight: FontWeight.NORMAL,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextDynamics.DEBUG)\n log('Vex.Flow.TextDynamics', args);\n}\n/**\n * `TextDynamics` renders traditional\n * text dynamics markings, **ie: p, f, sfz, rfz, ppp**\n *\n * You can render any dynamics string that contains a combination of\n * the following letters: P, M, F, Z, R, S\n */\nexport class TextDynamics extends Note {\n /**\n * Create the dynamics marking.\n *\n * A `TextDynamics` object inherits from `Note` so that it can be formatted\n * within a `Voice`.\n *\n * @param noteStruct an object that contains a `duration` property and a\n * `sequence` of letters that represents the letters to render.\n */\n constructor(noteStruct) {\n super(noteStruct);\n this.sequence = (noteStruct.text || '').toLowerCase();\n this.line = noteStruct.line || 0;\n this.glyphs = [];\n this.render_options = Object.assign(Object.assign({}, this.render_options), { glyph_font_size: 40 });\n L('New Dynamics Text: ', this.sequence);\n }\n static get CATEGORY() {\n return Category.TextDynamics;\n }\n /** The glyph data for each dynamics letter. */\n static get GLYPHS() {\n return {\n f: {\n code: 'dynamicForte',\n width: 12,\n },\n p: {\n code: 'dynamicPiano',\n width: 14,\n },\n m: {\n code: 'dynamicMezzo',\n width: 17,\n },\n s: {\n code: 'dynamicSforzando',\n width: 10,\n },\n z: {\n code: 'dynamicZ',\n width: 12,\n },\n r: {\n code: 'dynamicRinforzando',\n width: 12,\n },\n };\n }\n /** Set the Stave line on which the note should be placed. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Preformat the dynamics text. */\n preFormat() {\n let total_width = 0;\n // length of this.glyphs must be <=\n // length of this.sequence, so if we're formatted before\n // create new glyphs.\n this.glyphs = [];\n // Iterate through each letter\n this.sequence.split('').forEach((letter) => {\n // Get the glyph data for the letter\n const glyph_data = TextDynamics.GLYPHS[letter];\n if (!glyph_data)\n throw new RuntimeError('Invalid dynamics character: ' + letter);\n const size = defined(this.render_options.glyph_font_size);\n const glyph = new Glyph(glyph_data.code, size, { category: 'textNote' });\n // Add the glyph\n this.glyphs.push(glyph);\n total_width += glyph_data.width;\n });\n // Store the width of the text\n this.setWidth(total_width);\n this.preFormatted = true;\n return this;\n }\n /** Draw the dynamics text on the rendering context. */\n draw() {\n this.setRendered();\n const x = this.getAbsoluteX();\n const y = this.checkStave().getYForLine(this.line + -3);\n L('Rendering Dynamics: ', this.sequence);\n let letter_x = x;\n this.glyphs.forEach((glyph, index) => {\n const current_letter = this.sequence[index];\n glyph.render(this.checkContext(), letter_x, y);\n letter_x += TextDynamics.GLYPHS[current_letter].width;\n });\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.TextDynamics.DEBUG` to `true`. */\nTextDynamics.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\nimport { Note } from './note';\nimport { TimeSignature } from './timesignature';\nimport { Category } from './typeguard';\nexport class TimeSigNote extends Note {\n constructor(timeSpec, customPadding) {\n super({ duration: 'b' });\n const timeSignature = new TimeSignature(timeSpec, customPadding);\n this.timeSigInfo = timeSignature.getInfo();\n this.setWidth(this.timeSigInfo.glyph.getMetrics().width);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.TimeSigNote;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = this.checkContext();\n this.setRendered();\n if (!this.timeSigInfo.glyph.getContext()) {\n this.timeSigInfo.glyph.setContext(ctx);\n }\n this.timeSigInfo.glyph.setStave(stave);\n this.timeSigInfo.glyph.setYShift(stave.getYForLine(2) - stave.getYForGlyphs());\n this.timeSigInfo.glyph.renderToStave(this.getAbsoluteX());\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Balazs Forian-Szabo\n// MIT License\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { log } from './util';\nimport { Vibrato } from './vibrato';\n// eslint-disable-next-line\nfunction L(...args) {\n if (VibratoBracket.DEBUG)\n log('Vex.Flow.VibratoBracket', args);\n}\n/** `VibratoBracket` renders vibrato effect between two notes. */\nexport class VibratoBracket extends Element {\n /**\n * Either the stop or start note must be set, or both of them.\n * An undefined value for the start or stop note indicates that the vibrato\n * is drawn from the beginning or until the end of the stave accordingly.\n */\n constructor(bracket_data) {\n super();\n if (bracket_data.start)\n this.start = bracket_data.start;\n if (bracket_data.stop)\n this.stop = bracket_data.stop;\n this.line = 1;\n this.render_options = {\n harsh: false,\n wave_height: 6,\n wave_width: 4,\n wave_girth: 2,\n vibrato_width: 0,\n };\n }\n static get CATEGORY() {\n return Category.VibratoBracket;\n }\n /** Set line position of the vibrato bracket. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Set harsh vibrato bracket. */\n setHarsh(harsh) {\n this.render_options.harsh = harsh;\n return this;\n }\n /** Draw the vibrato bracket on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const y = (this.start && this.start.checkStave().getYForTopText(this.line)) ||\n (this.stop && this.stop.checkStave().getYForTopText(this.line)) ||\n 0;\n // If start note is not set then vibrato will be drawn\n // from the beginning of the stave\n const start_x = (this.start && this.start.getAbsoluteX()) || (this.stop && this.stop.checkStave().getTieStartX()) || 0;\n // If stop note is not set then vibrato will be drawn\n // until the end of the stave\n const stop_x = (this.stop && this.stop.getAbsoluteX() - this.stop.getWidth() - 5) ||\n (this.start && this.start.checkStave().getTieEndX() - 10) ||\n 0;\n this.render_options.vibrato_width = stop_x - start_x;\n L('Rendering VibratoBracket: start_x:', start_x, 'stop_x:', stop_x, 'y:', y);\n Vibrato.renderVibrato(ctx, start_x, y, this.render_options);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.VibratoBracket.DEBUG` to `true`. */\nVibratoBracket.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n// MIT License\nimport { Accidental } from './accidental';\nimport { Annotation, AnnotationHorizontalJustify, AnnotationVerticalJustify } from './annotation';\nimport { Articulation } from './articulation';\nimport { BarNote } from './barnote';\nimport { Beam } from './beam';\nimport { ChordSymbol } from './chordsymbol';\nimport { ClefNote } from './clefnote';\nimport { Curve } from './curve';\nimport { EasyScore } from './easyscore';\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { FretHandFinger } from './frethandfinger';\nimport { GhostNote } from './ghostnote';\nimport { GlyphNote } from './glyphnote';\nimport { GraceNote } from './gracenote';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { KeySigNote } from './keysignote';\nimport { ModifierContext } from './modifiercontext';\nimport { MultiMeasureRest } from './multimeasurerest';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { PedalMarking } from './pedalmarking';\nimport { Renderer } from './renderer';\nimport { RepeatNote } from './repeatnote';\nimport { Stave } from './stave';\nimport { StaveConnector } from './staveconnector';\nimport { StaveLine } from './staveline';\nimport { StaveNote } from './stavenote';\nimport { StaveTie } from './stavetie';\nimport { StringNumber } from './stringnumber';\nimport { System } from './system';\nimport { TabNote } from './tabnote';\nimport { TabStave } from './tabstave';\nimport { TextBracket } from './textbracket';\nimport { TextDynamics } from './textdynamics';\nimport { TextNote } from './textnote';\nimport { TickContext } from './tickcontext';\nimport { TimeSigNote } from './timesignote';\nimport { Tuplet } from './tuplet';\nimport { defined, log, RuntimeError } from './util';\nimport { VibratoBracket } from './vibratobracket';\nimport { Voice } from './voice';\nimport { isHTMLCanvas } from './web';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Factory.DEBUG)\n log('Vex.Flow.Factory', args);\n}\n/**\n * Factory implements a high level API around VexFlow.\n */\nexport class Factory {\n /**\n * Example:\n *\n * Create an SVG renderer and attach it to the DIV element named \"boo\" to render using 1200 and 600\n *\n * `const vf: Factory = new Vex.Flow.Factory({renderer: { elementId: 'boo', width: 1200, height: 600 }});`\n */\n constructor(options = {}) {\n L('New factory: ', options);\n this.options = {\n stave: {\n space: 10,\n },\n renderer: {\n elementId: '',\n width: 500,\n height: 200,\n background: '#FFF',\n },\n font: Factory.TEXT_FONT,\n };\n this.setOptions(options);\n }\n /**\n * Static simplified function to access constructor without providing FactoryOptions\n *\n * Example:\n *\n * Create an SVG renderer and attach it to the DIV element named \"boo\" to render using 1200 and 600\n *\n * `const vf: Factory = Vex.Flow.Factory.newFromElementId('boo', 1200, 600 );`\n */\n static newFromElementId(elementId, width = 500, height = 200) {\n return new Factory({ renderer: { elementId, width, height } });\n }\n reset() {\n this.renderQ = [];\n this.systems = [];\n this.staves = [];\n this.voices = [];\n this.stave = undefined; // current stave\n }\n setOptions(options) {\n this.options = Object.assign(Object.assign({}, this.options), options);\n this.initRenderer();\n this.reset();\n }\n initRenderer() {\n const { elementId, width, height, background } = this.options.renderer;\n if (elementId == null) {\n return;\n }\n if (elementId == '') {\n L(this);\n throw new RuntimeError('renderer.elementId not set in FactoryOptions');\n }\n let backend = this.options.renderer.backend;\n if (backend === undefined) {\n const elem = document.getElementById(elementId);\n // We use a custom type check here, because node-canvas mimics canvas,\n // but is not an instance of window.HTMLCanvasElement.\n // In fact, `window` might be undefined here.\n // See: https://www.npmjs.com/package/canvas\n if (isHTMLCanvas(elem)) {\n backend = Renderer.Backends.CANVAS;\n }\n else {\n backend = Renderer.Backends.SVG;\n }\n }\n this.context = Renderer.buildContext(elementId, backend, width, height, background);\n }\n getContext() {\n return this.context;\n }\n setContext(context) {\n this.context = context;\n return this;\n }\n getStave() {\n return this.stave;\n }\n getVoices() {\n return this.voices;\n }\n /** Return pixels from current stave spacing. */\n Stave(params) {\n const staveSpace = this.options.stave.space;\n const p = Object.assign({ x: 0, y: 0, width: this.options.renderer.width - staveSpace * 1.0, options: { spacing_between_lines_px: staveSpace * 1.0 } }, params);\n const stave = new Stave(p.x, p.y, p.width, p.options);\n this.staves.push(stave);\n stave.setContext(this.context);\n this.stave = stave;\n return stave;\n }\n TabStave(params) {\n const staveSpace = this.options.stave.space;\n const p = Object.assign({ x: 0, y: 0, width: this.options.renderer.width - staveSpace * 1.0, options: { spacing_between_lines_px: staveSpace * 1.3 } }, params);\n const stave = new TabStave(p.x, p.y, p.width, p.options);\n this.staves.push(stave);\n stave.setContext(this.context);\n this.stave = stave;\n return stave;\n }\n StaveNote(noteStruct) {\n const note = new StaveNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GlyphNote(glyph, noteStruct, options) {\n const note = new GlyphNote(glyph, noteStruct, options);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n RepeatNote(type, noteStruct, options) {\n const note = new RepeatNote(type, noteStruct, options);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GhostNote(noteStruct) {\n const ghostNote = new GhostNote(noteStruct);\n if (this.stave)\n ghostNote.setStave(this.stave);\n ghostNote.setContext(this.context);\n this.renderQ.push(ghostNote);\n return ghostNote;\n }\n TextNote(noteStruct) {\n const textNote = new TextNote(noteStruct);\n if (this.stave)\n textNote.setStave(this.stave);\n textNote.setContext(this.context);\n this.renderQ.push(textNote);\n return textNote;\n }\n BarNote(params = {}) {\n const barNote = new BarNote(params.type);\n if (this.stave)\n barNote.setStave(this.stave);\n barNote.setContext(this.context);\n this.renderQ.push(barNote);\n return barNote;\n }\n ClefNote(params) {\n const p = Object.assign({ type: 'treble', options: {\n size: 'default',\n annotation: undefined,\n } }, params);\n const clefNote = new ClefNote(p.type, p.options.size, p.options.annotation);\n if (this.stave)\n clefNote.setStave(this.stave);\n clefNote.setContext(this.context);\n this.renderQ.push(clefNote);\n return clefNote;\n }\n TimeSigNote(params) {\n const p = Object.assign({ time: '4/4' }, params);\n const timeSigNote = new TimeSigNote(p.time);\n if (this.stave)\n timeSigNote.setStave(this.stave);\n timeSigNote.setContext(this.context);\n this.renderQ.push(timeSigNote);\n return timeSigNote;\n }\n KeySigNote(params) {\n const keySigNote = new KeySigNote(params.key, params.cancelKey, params.alterKey);\n if (this.stave)\n keySigNote.setStave(this.stave);\n keySigNote.setContext(this.context);\n this.renderQ.push(keySigNote);\n return keySigNote;\n }\n TabNote(noteStruct) {\n const note = new TabNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GraceNote(noteStruct) {\n const note = new GraceNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n return note;\n }\n GraceNoteGroup(params) {\n const group = new GraceNoteGroup(params.notes, params.slur);\n group.setContext(this.context);\n return group;\n }\n Accidental(params) {\n const accid = new Accidental(params.type);\n accid.setContext(this.context);\n return accid;\n }\n Annotation(params) {\n const p = Object.assign({ text: 'p', hJustify: AnnotationHorizontalJustify.CENTER, vJustify: AnnotationVerticalJustify.BOTTOM }, params);\n const annotation = new Annotation(p.text);\n annotation.setJustification(p.hJustify);\n annotation.setVerticalJustification(p.vJustify);\n annotation.setFont(p.font);\n annotation.setContext(this.context);\n return annotation;\n }\n ChordSymbol(params) {\n const p = Object.assign({ vJustify: 'top', hJustify: 'center', kerning: true, reportWidth: true }, params);\n const chordSymbol = new ChordSymbol();\n chordSymbol.setHorizontal(p.hJustify);\n chordSymbol.setVertical(p.vJustify);\n chordSymbol.setEnableKerning(p.kerning);\n chordSymbol.setReportWidth(p.reportWidth);\n // There is a default font based on the engraving font. Only set then\n // font if it is specific, else use the default\n if (typeof p.fontFamily === 'string' && typeof p.fontSize === 'number') {\n if (typeof p.fontWeight === 'string')\n chordSymbol.setFont(p.fontFamily, p.fontSize, p.fontWeight);\n else\n chordSymbol.setFont(p.fontFamily, p.fontSize, '');\n }\n else if (typeof p.fontSize === 'number') {\n chordSymbol.setFontSize(p.fontSize);\n }\n chordSymbol.setContext(this.context);\n return chordSymbol;\n }\n Articulation(params) {\n const p = Object.assign({ type: 'a.', position: 'above' }, params);\n const articulation = new Articulation(p.type);\n articulation.setPosition(p.position);\n articulation.setContext(this.context);\n return articulation;\n }\n Ornament(type, params) {\n const options = Object.assign({ type, position: 0, accidental: '' }, params);\n const ornament = new Ornament(type);\n ornament.setPosition(options.position);\n if (options.upperAccidental) {\n ornament.setUpperAccidental(options.upperAccidental);\n }\n if (options.lowerAccidental) {\n ornament.setLowerAccidental(options.lowerAccidental);\n }\n if (typeof options.delayed !== 'undefined') {\n ornament.setDelayed(options.delayed);\n }\n ornament.setContext(this.context);\n return ornament;\n }\n TextDynamics(params) {\n const p = Object.assign({ text: 'p', duration: 'q', dots: 0, line: 0 }, params);\n const text = new TextDynamics({\n text: p.text,\n line: p.line,\n duration: p.duration,\n dots: p.dots,\n });\n if (this.stave)\n text.setStave(this.stave);\n text.setContext(this.context);\n this.renderQ.push(text);\n return text;\n }\n Fingering(params) {\n const p = Object.assign({ number: '0', position: 'left' }, params);\n const fingering = new FretHandFinger(p.number);\n fingering.setPosition(p.position);\n fingering.setContext(this.context);\n return fingering;\n }\n StringNumber(params, drawCircle = true) {\n const stringNumber = new StringNumber(params.number);\n stringNumber.setPosition(params.position);\n stringNumber.setContext(this.context);\n stringNumber.setDrawCircle(drawCircle);\n return stringNumber;\n }\n TickContext() {\n return new TickContext();\n }\n ModifierContext() {\n return new ModifierContext();\n }\n MultiMeasureRest(params) {\n const numMeasures = defined(params.number_of_measures, 'NoNumberOfMeasures');\n const multiMeasureRest = new MultiMeasureRest(numMeasures, params);\n multiMeasureRest.setContext(this.context);\n this.renderQ.push(multiMeasureRest);\n return multiMeasureRest;\n }\n Voice(params) {\n const p = Object.assign({ time: '4/4' }, params);\n const voice = new Voice(p.time);\n this.voices.push(voice);\n return voice;\n }\n StaveConnector(params) {\n const connector = new StaveConnector(params.top_stave, params.bottom_stave);\n connector.setType(params.type).setContext(this.context);\n this.renderQ.push(connector);\n return connector;\n }\n Formatter(options) {\n return new Formatter(options);\n }\n Tuplet(params) {\n const p = Object.assign({ notes: [], options: {} }, params);\n const tuplet = new Tuplet(p.notes, p.options).setContext(this.context);\n this.renderQ.push(tuplet);\n return tuplet;\n }\n Beam(params) {\n var _a, _b, _c, _d, _e;\n const beam = new Beam(params.notes, (_a = params.options) === null || _a === void 0 ? void 0 : _a.autoStem).setContext(this.context);\n beam.breakSecondaryAt((_c = (_b = params.options) === null || _b === void 0 ? void 0 : _b.secondaryBeamBreaks) !== null && _c !== void 0 ? _c : []);\n if ((_d = params.options) === null || _d === void 0 ? void 0 : _d.partialBeamDirections) {\n Object.entries((_e = params.options) === null || _e === void 0 ? void 0 : _e.partialBeamDirections).forEach(([noteIndex, direction]) => {\n beam.setPartialBeamSideAt(Number(noteIndex), direction);\n });\n }\n this.renderQ.push(beam);\n return beam;\n }\n Curve(params) {\n const curve = new Curve(params.from, params.to, params.options).setContext(this.context);\n this.renderQ.push(curve);\n return curve;\n }\n StaveTie(params) {\n var _a;\n const tie = new StaveTie({\n first_note: params.from,\n last_note: params.to,\n first_indices: params.first_indices,\n last_indices: params.last_indices,\n }, params.text);\n if ((_a = params.options) === null || _a === void 0 ? void 0 : _a.direction)\n tie.setDirection(params.options.direction);\n tie.setContext(this.context);\n this.renderQ.push(tie);\n return tie;\n }\n StaveLine(params) {\n var _a, _b;\n const line = new StaveLine({\n first_note: params.from,\n last_note: params.to,\n first_indices: params.first_indices,\n last_indices: params.last_indices,\n });\n if ((_a = params.options) === null || _a === void 0 ? void 0 : _a.text)\n line.setText(params.options.text);\n if ((_b = params.options) === null || _b === void 0 ? void 0 : _b.font)\n line.setFont(params.options.font);\n line.setContext(this.context);\n this.renderQ.push(line);\n return line;\n }\n VibratoBracket(params) {\n const vibratoBracket = new VibratoBracket({\n start: params.from,\n stop: params.to,\n });\n if (params.options.line)\n vibratoBracket.setLine(params.options.line);\n if (params.options.harsh)\n vibratoBracket.setHarsh(params.options.harsh);\n vibratoBracket.setContext(this.context);\n this.renderQ.push(vibratoBracket);\n return vibratoBracket;\n }\n TextBracket(params) {\n const textBracket = new TextBracket({\n start: params.from,\n stop: params.to,\n text: params.text,\n superscript: params.options.superscript,\n position: params.options.position,\n });\n if (params.options.line)\n textBracket.setLine(params.options.line);\n if (params.options.font)\n textBracket.setFont(params.options.font);\n textBracket.setContext(this.context);\n this.renderQ.push(textBracket);\n return textBracket;\n }\n System(params = {}) {\n params.factory = this;\n const system = new System(params).setContext(this.context);\n this.systems.push(system);\n return system;\n }\n /**\n * Creates EasyScore. Normally the first step after constructing a Factory. For example:\n * ```\n * const vf: Factory = new Vex.Flow.Factory({renderer: { elementId: 'boo', width: 1200, height: 600 }});\n * const score: EasyScore = vf.EasyScore();\n * ```\n * @param options.factory optional instance of Factory\n * @param options.builder instance of Builder\n * @param options.commitHooks function to call after a note element is created\n * @param options.throwOnError throw error in case of parsing error\n */\n EasyScore(options = {}) {\n options.factory = this;\n return new EasyScore(options);\n }\n PedalMarking(params) {\n const p = Object.assign({ notes: [], options: {\n style: 'mixed',\n } }, params);\n const pedal = new PedalMarking(p.notes);\n pedal.setType(PedalMarking.typeString[p.options.style]);\n pedal.setContext(this.context);\n this.renderQ.push(pedal);\n return pedal;\n }\n NoteSubGroup(params) {\n const p = Object.assign({ notes: [] }, params);\n const group = new NoteSubGroup(p.notes);\n group.setContext(this.context);\n return group;\n }\n /** Render the score. */\n draw() {\n const ctx = this.context;\n this.systems.forEach((s) => s.setContext(ctx).format());\n this.staves.forEach((s) => s.setContext(ctx).draw());\n this.voices.forEach((v) => v.setContext(ctx).draw());\n this.renderQ.forEach((e) => {\n if (!e.isRendered())\n e.setContext(ctx).draw();\n });\n this.systems.forEach((s) => s.setContext(ctx).draw());\n this.reset();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Factory.DEBUG` to `true`. */\nFactory.DEBUG = false;\n/** Default text font. */\nFactory.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Balazs Forian-Szabo\n//\n// ## Description\n//\n// A basic implementation of grace notes\n// to be rendered on a tab stave.\n//\n// See `tests/gracetabnote_tests.ts` for usage examples.\nimport { Font } from './font';\nimport { TabNote } from './tabnote';\nimport { Category } from './typeguard';\nexport class GraceTabNote extends TabNote {\n static get CATEGORY() {\n return Category.GraceTabNote;\n }\n constructor(noteStruct) {\n super(noteStruct, false);\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // vertical shift from stave line\n y_shift: 0.3, \n // grace glyph scale\n scale: 0.6, \n // grace tablature font\n font: `7.5pt ${Font.SANS_SERIF}` });\n this.updateWidth();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This class implements diatonic key management.\nimport { Music } from './music';\nimport { RuntimeError } from './util';\nexport class KeyManager {\n constructor(key) {\n this.music = new Music();\n this.setKey(key);\n }\n setKey(key) {\n this.key = key;\n this.reset();\n return this;\n }\n getKey() {\n return this.key;\n }\n reset() {\n this.keyParts = this.music.getKeyParts(this.key);\n this.keyString = this.keyParts.root;\n if (this.keyParts.accidental)\n this.keyString += this.keyParts.accidental;\n const is_supported_type = Music.scaleTypes[this.keyParts.type];\n if (!is_supported_type) {\n throw new RuntimeError('BadArguments', `Unsupported key type: ${this.key}`);\n }\n this.scale = this.music.getScaleTones(this.music.getNoteValue(this.keyString), Music.scaleTypes[this.keyParts.type]);\n this.scaleMap = {};\n this.scaleMapByValue = {};\n this.originalScaleMapByValue = {};\n const noteLocation = Music.root_indices[this.keyParts.root];\n for (let i = 0; i < Music.roots.length; ++i) {\n const index = (noteLocation + i) % Music.roots.length;\n const rootName = Music.roots[index];\n const noteName = this.music.getRelativeNoteName(rootName, this.scale[i]);\n this.scaleMap[rootName] = noteName;\n this.scaleMapByValue[this.scale[i]] = noteName;\n this.originalScaleMapByValue[this.scale[i]] = noteName;\n }\n return this;\n }\n getAccidental(key) {\n const root = this.music.getKeyParts(key).root;\n const parts = this.music.getNoteParts(this.scaleMap[root]);\n return {\n note: this.scaleMap[root],\n accidental: parts.accidental,\n };\n }\n selectNote(note) {\n note = note.toLowerCase();\n const parts = this.music.getNoteParts(note);\n // First look for matching note in our altered scale\n const scaleNote = this.scaleMap[parts.root];\n const modparts = this.music.getNoteParts(scaleNote);\n if (scaleNote === note) {\n return {\n note: scaleNote,\n accidental: parts.accidental,\n change: false,\n };\n }\n // Then search for a note of equivalent value in our altered scale\n const valueNote = this.scaleMapByValue[this.music.getNoteValue(note)];\n if (valueNote != null) {\n return {\n note: valueNote,\n accidental: this.music.getNoteParts(valueNote).accidental,\n change: false,\n };\n }\n // Then search for a note of equivalent value in the original scale\n const originalValueNote = this.originalScaleMapByValue[this.music.getNoteValue(note)];\n if (originalValueNote != null) {\n this.scaleMap[modparts.root] = originalValueNote;\n delete this.scaleMapByValue[this.music.getNoteValue(scaleNote)];\n this.scaleMapByValue[this.music.getNoteValue(note)] = originalValueNote;\n return {\n note: originalValueNote,\n accidental: this.music.getNoteParts(originalValueNote).accidental,\n change: true,\n };\n }\n // Then try to unmodify a currently modified note.\n if (modparts.root === note) {\n delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])];\n this.scaleMapByValue[this.music.getNoteValue(modparts.root)] = modparts.root;\n this.scaleMap[modparts.root] = modparts.root;\n return {\n note: modparts.root,\n accidental: undefined,\n change: true,\n };\n }\n // Last resort -- shitshoot\n delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])];\n this.scaleMapByValue[this.music.getNoteValue(note)] = note;\n delete this.scaleMap[modparts.root];\n this.scaleMap[modparts.root] = note;\n return {\n note,\n accidental: parts.accidental,\n change: true,\n };\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Author: Raffaele Viglianti, 2012 http://itisnotsound.wordpress.com/\n//\n// This class implements hairpins between notes.\n// Hairpins can be either crescendo or decrescendo.\nimport { Element } from './element';\nimport { Modifier } from './modifier';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveHairpin extends Element {\n /**\n * Create a new hairpin from the specified notes.\n *\n * @param {!Object} notes The notes to tie up.\n * Notes is a struct that has:\n *\n * {\n * first_note: Note,\n * last_note: Note,\n * }\n * @param {!Object} type The type of hairpin\n */\n constructor(notes, type) {\n super();\n this.setNotes(notes);\n this.hairpin = type;\n this.position = Modifier.Position.BELOW;\n this.render_options = {\n height: 10,\n y_shift: 0,\n left_shift_px: 0,\n right_shift_px: 0,\n right_shift_ticks: 0,\n left_shift_ticks: 0,\n };\n }\n static get CATEGORY() {\n return Category.StaveHairpin;\n }\n /* Helper function to convert ticks into pixels.\n * Requires a Formatter with voices joined and formatted (to\n * get pixels per tick)\n *\n * options is struct that has:\n *\n * {\n * height: px,\n * y_shift: px, // vertical offset\n * left_shift_ticks: 0, // left horizontal offset expressed in ticks\n * right_shift_ticks: 0 // right horizontal offset expressed in ticks\n * }\n *\n **/\n static FormatByTicksAndDraw(ctx, formatter, notes, type, position, options) {\n var _a, _b;\n const ppt = formatter.pixelsPerTick;\n if (ppt == null) {\n throw new RuntimeError('BadArguments', 'A valid Formatter must be provide to draw offsets by ticks.');\n }\n const l_shift_px = ppt * ((_a = options.left_shift_ticks) !== null && _a !== void 0 ? _a : 0);\n const r_shift_px = ppt * ((_b = options.right_shift_ticks) !== null && _b !== void 0 ? _b : 0);\n const hairpin_options = {\n height: options.height,\n y_shift: options.y_shift,\n left_shift_px: l_shift_px,\n right_shift_px: r_shift_px,\n right_shift_ticks: 0,\n left_shift_ticks: 0,\n };\n new StaveHairpin({\n first_note: notes.first_note,\n last_note: notes.last_note,\n }, type)\n .setContext(ctx)\n .setRenderOptions(hairpin_options)\n .setPosition(position)\n .draw();\n }\n setPosition(position) {\n if (position === Modifier.Position.ABOVE || position === Modifier.Position.BELOW) {\n this.position = position;\n }\n return this;\n }\n setRenderOptions(options) {\n if (options.height != null &&\n options.y_shift != null &&\n options.left_shift_px != null &&\n options.right_shift_px != null) {\n this.render_options = options;\n }\n return this;\n }\n /**\n * Set the notes to attach this hairpin to.\n *\n * @param {!Object} notes The start and end notes.\n */\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Hairpin needs to have either first_note or last_note set.');\n }\n this.notes = notes;\n this.first_note = notes.first_note;\n this.last_note = notes.last_note;\n return this;\n }\n renderHairpin(params) {\n const ctx = this.checkContext();\n let dis = this.render_options.y_shift + 20;\n let y_shift = params.first_y;\n if (this.position === Modifier.Position.ABOVE) {\n dis = -dis + 30;\n y_shift = params.first_y - params.staff_height;\n }\n const l_shift = this.render_options.left_shift_px;\n const r_shift = this.render_options.right_shift_px;\n ctx.beginPath();\n switch (this.hairpin) {\n case StaveHairpin.type.CRESC:\n ctx.moveTo(params.last_x + r_shift, y_shift + dis);\n ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height / 2 + dis);\n ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height + dis);\n break;\n case StaveHairpin.type.DECRESC:\n ctx.moveTo(params.first_x + l_shift, y_shift + dis);\n ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height / 2 + dis);\n ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height + dis);\n break;\n default:\n // Default is NONE, so nothing to draw\n break;\n }\n ctx.stroke();\n ctx.closePath();\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const firstNote = this.first_note;\n const lastNote = this.last_note;\n if (!firstNote || !lastNote)\n throw new RuntimeError('NoNote', 'Notes required to draw');\n const start = firstNote.getModifierStartXY(this.position, 0);\n const end = lastNote.getModifierStartXY(this.position, 0);\n this.renderHairpin({\n first_x: start.x,\n last_x: end.x,\n first_y: firstNote.checkStave().getY() + firstNote.checkStave().getHeight(),\n last_y: lastNote.checkStave().getY() + lastNote.checkStave().getHeight(),\n staff_height: firstNote.checkStave().getHeight(),\n });\n }\n}\nStaveHairpin.type = {\n CRESC: 1,\n DECRESC: 2,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { TabTie } from './tabtie';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class TabSlide extends TabTie {\n /**\n * @param notes is a struct of the form:\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n * @param notes.first_note the starting note of the slide\n * @param notes.last_note the ending note of the slide\n * @param notes.first_indices specifies which string + fret positions of the TabNote are used in this slide. zero indexed.\n * @param notes.last_indices currently unused. we assume it's the same as first_indices.\n *\n * @param direction TabSlide.SLIDE_UP or TabSlide.SLIDE_DOWN\n */\n constructor(notes, direction) {\n super(notes, 'sl.');\n // Determine the direction automatically if it is not provided.\n if (!direction) {\n let first_fret = notes.first_note.getPositions()[0].fret;\n if (typeof first_fret === 'string') {\n first_fret = parseInt(first_fret, 10);\n }\n let last_fret = notes.last_note.getPositions()[0].fret;\n if (typeof last_fret === 'string') {\n last_fret = parseInt(last_fret, 10);\n }\n // If either of the frets are 'X', parseInt() above will return NaN.\n // Choose TabSlide.SLIDE_UP by default.\n if (isNaN(first_fret) || isNaN(last_fret)) {\n direction = TabSlide.SLIDE_UP;\n }\n else {\n direction = first_fret > last_fret ? TabSlide.SLIDE_DOWN : TabSlide.SLIDE_UP;\n }\n }\n this.direction = direction;\n this.render_options.cp1 = 11;\n this.render_options.cp2 = 14;\n this.render_options.y_shift = 0.5;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.TabSlide;\n }\n static get SLIDE_UP() {\n return 1;\n }\n static get SLIDE_DOWN() {\n return -1;\n }\n static createSlideUp(notes) {\n return new TabSlide(notes, TabSlide.SLIDE_UP);\n }\n static createSlideDown(notes) {\n return new TabSlide(notes, TabSlide.SLIDE_DOWN);\n }\n renderTie(params) {\n if (params.first_ys.length === 0 || params.last_ys.length === 0) {\n throw new RuntimeError('BadArguments', 'No Y-values to render');\n }\n const ctx = this.checkContext();\n const first_x_px = params.first_x_px;\n const first_ys = params.first_ys;\n const last_x_px = params.last_x_px;\n const direction = params.direction;\n if (direction !== TabSlide.SLIDE_UP && direction !== TabSlide.SLIDE_DOWN) {\n throw new RuntimeError('BadSlide', 'Invalid slide direction');\n }\n // eslint-disable-next-line\n const first_indices = this.notes.first_indices;\n for (let i = 0; i < first_indices.length; ++i) {\n const slide_y = first_ys[first_indices[i]] + this.render_options.y_shift;\n if (isNaN(slide_y)) {\n throw new RuntimeError('BadArguments', 'Bad indices for slide rendering.');\n }\n ctx.beginPath();\n ctx.moveTo(first_x_px, slide_y + 3 * direction);\n ctx.lineTo(last_x_px, slide_y - 3 * direction);\n ctx.closePath();\n ctx.stroke();\n }\n this.setRendered();\n }\n}\nTabSlide.TEXT_FONT = {\n family: Font.SERIF,\n size: 10,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Mike Corrigan \n// MIT License\nimport { Glyph } from './glyph';\nimport { GraceNote } from './gracenote';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isGraceNote } from './typeguard';\n/** Tremolo implements tremolo notation. */\nexport class Tremolo extends Modifier {\n /**\n * @param num number of bars\n */\n constructor(num) {\n super();\n this.num = num;\n this.position = Modifier.Position.CENTER;\n this.code = 'tremolo1';\n // big strokes scales initialised to 1 (no scale)\n this.y_spacing_scale = 1;\n this.extra_stroke_scale = 1;\n }\n static get CATEGORY() {\n return Category.Tremolo;\n }\n /** Draw the tremolo on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stemDirection = note.getStemDirection();\n const start = note.getModifierStartXY(this.position, this.index);\n let x = start.x;\n const gn = isGraceNote(note);\n const scale = gn ? GraceNote.SCALE : 1;\n const category = `tremolo.${gn ? 'grace' : 'default'}`;\n const musicFont = Tables.currentMusicFont();\n let y_spacing = musicFont.lookupMetric(`${category}.spacing`) * stemDirection;\n // add y_spacing_scale for big strokes (#1258)\n y_spacing *= this.y_spacing_scale;\n const height = this.num * y_spacing;\n let y = note.getStemExtents().baseY - height;\n if (stemDirection < 0) {\n y += musicFont.lookupMetric(`${category}.offsetYStemDown`) * scale;\n }\n else {\n y += musicFont.lookupMetric(`${category}.offsetYStemUp`) * scale;\n }\n const fontScale = musicFont.lookupMetric(`${category}.point`);\n x += musicFont.lookupMetric(`${category}.offsetXStem${stemDirection === Stem.UP ? 'Up' : 'Down'}`);\n for (let i = 0; i < this.num; ++i) {\n Glyph.renderGlyph(ctx, x, y, fontScale, this.code, { category, scale: this.extra_stroke_scale });\n y += y_spacing;\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Tables } from './tables';\nimport { RuntimeError } from './util';\n/** `Tuning` implements varies types of tunings for tablature. */\nexport class Tuning {\n /**\n * Constructor.\n * @param tuningString tuning name (eg. 'dagdad') or comma separated note strings\n */\n constructor(tuningString = 'E/5,B/4,G/4,D/4,A/3,E/3,B/2,E/2') {\n this.tuningValues = [];\n // Default to standard tuning.\n this.setTuning(tuningString);\n }\n static get names() {\n return {\n standard: 'E/5,B/4,G/4,D/4,A/3,E/3',\n dagdad: 'D/5,A/4,G/4,D/4,A/3,D/3',\n dropd: 'E/5,B/4,G/4,D/4,A/3,D/3',\n eb: 'Eb/5,Bb/4,Gb/4,Db/4,Ab/3,Db/3',\n standardBanjo: 'D/5,B/4,G/4,D/4,G/5',\n };\n }\n /** Return the note number associated to the note string. */\n noteToInteger(noteString) {\n return Tables.keyProperties(noteString).int_value;\n }\n /**\n * Set tuning identified by tuning name (eg. 'dagdad')\n * @param tuningString tuning name (eg. 'dagdad') or comma separated note strings\n */\n setTuning(tuningString) {\n if (Tuning.names[tuningString]) {\n tuningString = Tuning.names[tuningString];\n }\n this.tuningValues = [];\n const keys = tuningString.split(/\\s*,\\s*/);\n if (keys.length === 0) {\n throw new RuntimeError('BadArguments', `Invalid tuning string: ${tuningString}`);\n }\n for (let i = 0; i < keys.length; ++i) {\n this.tuningValues[i] = this.noteToInteger(keys[i]);\n }\n }\n /** Return the note number associated with a tablature string. */\n getValueForString(stringNum) {\n const s = Number(stringNum);\n if (s < 1 || s > this.tuningValues.length) {\n throw new RuntimeError('BadArguments', `String number must be between 1 and ${this.tuningValues.length}:${stringNum}`);\n }\n return this.tuningValues[s - 1];\n }\n /** Return the note number associated with a tablature string and fret. */\n getValueForFret(fretNum, stringNum) {\n const stringValue = this.getValueForString(stringNum);\n const f = Number(fretNum);\n if (f < 0) {\n throw new RuntimeError('BadArguments', `Fret number must be 0 or higher: ${fretNum}`);\n }\n return stringValue + f;\n }\n /** Return the note string associated with tablature string and fret. */\n getNoteForFret(fretNum, stringNum) {\n const noteValue = this.getValueForFret(fretNum, stringNum);\n const octave = Math.floor(noteValue / 12);\n const value = noteValue % 12;\n return `${Tables.integerToNote(value)}/${octave}`;\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Accidental } from './accidental';\nimport { Annotation, AnnotationHorizontalJustify, AnnotationVerticalJustify } from './annotation';\nimport { Articulation } from './articulation';\nimport { BarNote } from './barnote';\nimport { Beam } from './beam';\nimport { Bend } from './bend';\nimport { BoundingBox } from './boundingbox';\nimport { BoundingBoxComputation } from './boundingboxcomputation';\nimport { CanvasContext } from './canvascontext';\nimport { ChordSymbol, ChordSymbolHorizontalJustify, ChordSymbolVerticalJustify, SymbolModifiers, SymbolTypes, } from './chordsymbol';\nimport { Clef } from './clef';\nimport { ClefNote } from './clefnote';\nimport { Crescendo } from './crescendo';\nimport { Curve, CurvePosition } from './curve';\nimport { Dot } from './dot';\nimport { EasyScore } from './easyscore';\nimport { Element } from './element';\nimport { Factory } from './factory';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Formatter } from './formatter';\nimport { Fraction } from './fraction';\nimport { FretHandFinger } from './frethandfinger';\nimport { GhostNote } from './ghostnote';\nimport { Glyph } from './glyph';\nimport { GlyphNote } from './glyphnote';\nimport { GraceNote } from './gracenote';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { GraceTabNote } from './gracetabnote';\nimport { KeyManager } from './keymanager';\nimport { KeySignature } from './keysignature';\nimport { KeySigNote } from './keysignote';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { ModifierContext } from './modifiercontext';\nimport { MultiMeasureRest } from './multimeasurerest';\nimport { Music } from './music';\nimport { Note } from './note';\nimport { NoteHead } from './notehead';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { Parenthesis } from './parenthesis';\nimport { Parser } from './parser';\nimport { PedalMarking } from './pedalmarking';\nimport { Registry } from './registry';\nimport { RenderContext } from './rendercontext';\nimport { Renderer, RendererBackends, RendererLineEndType } from './renderer';\nimport { RepeatNote } from './repeatnote';\nimport { Stave } from './stave';\nimport { Barline, BarlineType } from './stavebarline';\nimport { StaveConnector } from './staveconnector';\nimport { StaveHairpin } from './stavehairpin';\nimport { StaveLine } from './staveline';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { StaveNote } from './stavenote';\nimport { Repetition } from './staverepetition';\nimport { StaveTempo } from './stavetempo';\nimport { StaveText } from './stavetext';\nimport { StaveTie } from './stavetie';\nimport { Volta, VoltaType } from './stavevolta';\nimport { Stem } from './stem';\nimport { StringNumber } from './stringnumber';\nimport { Stroke } from './strokes';\nimport { SVGContext } from './svgcontext';\nimport { System } from './system';\nimport { Tables } from './tables';\nimport { TabNote } from './tabnote';\nimport { TabSlide } from './tabslide';\nimport { TabStave } from './tabstave';\nimport { TabTie } from './tabtie';\nimport { TextBracket, TextBracketPosition } from './textbracket';\nimport { TextDynamics } from './textdynamics';\nimport { TextFormatter } from './textformatter';\nimport { TextJustification, TextNote } from './textnote';\nimport { TickContext } from './tickcontext';\nimport { TimeSignature } from './timesignature';\nimport { TimeSigNote } from './timesignote';\nimport { Tremolo } from './tremolo';\nimport { Tuning } from './tuning';\nimport { Tuplet } from './tuplet';\nimport { DATE, ID, VERSION } from './version';\nimport { Vibrato } from './vibrato';\nimport { VibratoBracket } from './vibratobracket';\nimport { Voice, VoiceMode } from './voice';\nexport class Flow {\n static get BUILD() {\n return {\n /** version number. */\n VERSION: VERSION,\n /** git commit ID that this library was built from. */\n ID: ID,\n /** The date when this library was compiled. */\n DATE: DATE,\n };\n }\n /**\n * Examples:\n * ```\n * Vex.Flow.setMusicFont('Petaluma');\n * Vex.Flow.setMusicFont('Bravura', 'Gonville');\n * ```\n *\n * **CASE 1**: You are using `vexflow.js`, which includes all music fonts (Bravura, Gonville, Petaluma, Custom).\n * In this case, calling this method is optional, since VexFlow already defaults to a music font stack of:\n * 'Bravura', 'Gonville', 'Custom'.\n *\n * **CASE 2**: You are using `vexflow-bravura.js` or `vexflow-petaluma.js` or `vexflow-gonville.js`,\n * which includes a single music font. Calling this method is unnecessary.\n *\n * **CASE 3**: You are using the light weight `vexflow-core.js` to take advantage of lazy loading for fonts.\n * In this case, the default music font stack is empty.\n * Example:\n * ```\n * await Vex.Flow.fetchMusicFont('Petaluma');\n * Vex.Flow.setMusicFont('Petaluma');\n * ... (do VexFlow stuff) ...\n * ```\n * See `demos/fonts/` for more examples.\n *\n * @returns an array of Font objects corresponding to the provided `fontNames`.\n */\n static setMusicFont(...fontNames) {\n // Convert the array of font names into an array of Font objects.\n const fonts = fontNames.map((fontName) => Font.load(fontName));\n Tables.MUSIC_FONT_STACK = fonts;\n Glyph.MUSIC_FONT_STACK = fonts.slice();\n Glyph.CURRENT_CACHE_KEY = fontNames.join(',');\n return fonts;\n }\n /**\n * Used with vexflow-core which supports dynamic font loading.\n */\n // eslint-disable-next-line\n static fetchMusicFont(fontName, fontModuleOrPath) {\n return __awaiter(this, void 0, void 0, function* () {\n // The default implementation does nothing.\n // See vexflow-core.ts for the implementation that vexflow-core.js uses.\n });\n }\n static getMusicFont() {\n const fonts = Tables.MUSIC_FONT_STACK;\n return fonts.map((font) => font.getName());\n }\n static get RENDER_PRECISION_PLACES() {\n return Tables.RENDER_PRECISION_PLACES;\n }\n static set RENDER_PRECISION_PLACES(precision) {\n Tables.RENDER_PRECISION_PLACES = precision;\n }\n static get SOFTMAX_FACTOR() {\n return Tables.SOFTMAX_FACTOR;\n }\n static set SOFTMAX_FACTOR(factor) {\n Tables.SOFTMAX_FACTOR = factor;\n }\n static get NOTATION_FONT_SCALE() {\n return Tables.NOTATION_FONT_SCALE;\n }\n static set NOTATION_FONT_SCALE(value) {\n Tables.NOTATION_FONT_SCALE = value;\n }\n static get TABLATURE_FONT_SCALE() {\n return Tables.TABLATURE_FONT_SCALE;\n }\n static set TABLATURE_FONT_SCALE(value) {\n Tables.TABLATURE_FONT_SCALE = value;\n }\n static get RESOLUTION() {\n return Tables.RESOLUTION;\n }\n static set RESOLUTION(value) {\n Tables.RESOLUTION = value;\n }\n static get SLASH_NOTEHEAD_WIDTH() {\n return Tables.SLASH_NOTEHEAD_WIDTH;\n }\n static set SLASH_NOTEHEAD_WIDTH(value) {\n Tables.SLASH_NOTEHEAD_WIDTH = value;\n }\n static get STAVE_LINE_DISTANCE() {\n return Tables.STAVE_LINE_DISTANCE;\n }\n static set STAVE_LINE_DISTANCE(value) {\n Tables.STAVE_LINE_DISTANCE = value;\n }\n static get STAVE_LINE_THICKNESS() {\n return Tables.STAVE_LINE_THICKNESS;\n }\n static set STAVE_LINE_THICKNESS(value) {\n Tables.STAVE_LINE_THICKNESS = value;\n }\n static get STEM_HEIGHT() {\n return Tables.STEM_HEIGHT;\n }\n static set STEM_HEIGHT(value) {\n Tables.STEM_HEIGHT = value;\n }\n static get STEM_WIDTH() {\n return Tables.STEM_WIDTH;\n }\n static set STEM_WIDTH(value) {\n Tables.STEM_WIDTH = value;\n }\n static get TIME4_4() {\n return Tables.TIME4_4;\n }\n static get accidentalMap() {\n return Tables.accidentalMap;\n }\n static get unicode() {\n return Tables.unicode;\n }\n static keySignature(spec) {\n return Tables.keySignature(spec);\n }\n static hasKeySignature(spec) {\n return Tables.hasKeySignature(spec);\n }\n static getKeySignatures() {\n return Tables.getKeySignatures();\n }\n static clefProperties(clef) {\n return Tables.clefProperties(clef);\n }\n // eslint-disable-next-line\n static keyProperties(key, clef, params) {\n return Tables.keyProperties(key, clef, params);\n }\n static durationToTicks(duration) {\n return Tables.durationToTicks(duration);\n }\n}\nFlow.Accidental = Accidental;\nFlow.Annotation = Annotation;\nFlow.Articulation = Articulation;\nFlow.Barline = Barline;\nFlow.BarNote = BarNote;\nFlow.Beam = Beam;\nFlow.Bend = Bend;\nFlow.BoundingBox = BoundingBox;\nFlow.BoundingBoxComputation = BoundingBoxComputation;\nFlow.CanvasContext = CanvasContext;\nFlow.ChordSymbol = ChordSymbol;\nFlow.Clef = Clef;\nFlow.ClefNote = ClefNote;\nFlow.Crescendo = Crescendo;\nFlow.Curve = Curve;\nFlow.Dot = Dot;\nFlow.EasyScore = EasyScore;\nFlow.Element = Element;\nFlow.Factory = Factory;\nFlow.Font = Font;\nFlow.Formatter = Formatter;\nFlow.Fraction = Fraction;\nFlow.FretHandFinger = FretHandFinger;\nFlow.GhostNote = GhostNote;\nFlow.Glyph = Glyph;\nFlow.GlyphNote = GlyphNote;\nFlow.GraceNote = GraceNote;\nFlow.GraceNoteGroup = GraceNoteGroup;\nFlow.GraceTabNote = GraceTabNote;\nFlow.KeyManager = KeyManager;\nFlow.KeySignature = KeySignature;\nFlow.KeySigNote = KeySigNote;\nFlow.Modifier = Modifier;\nFlow.ModifierContext = ModifierContext;\nFlow.MultiMeasureRest = MultiMeasureRest;\nFlow.Music = Music;\nFlow.Note = Note;\nFlow.NoteHead = NoteHead;\nFlow.NoteSubGroup = NoteSubGroup;\nFlow.Ornament = Ornament;\nFlow.Parenthesis = Parenthesis;\nFlow.Parser = Parser;\nFlow.PedalMarking = PedalMarking;\nFlow.Registry = Registry;\nFlow.RenderContext = RenderContext;\nFlow.Renderer = Renderer;\nFlow.RepeatNote = RepeatNote;\nFlow.Repetition = Repetition;\nFlow.Stave = Stave;\nFlow.StaveConnector = StaveConnector;\nFlow.StaveHairpin = StaveHairpin;\nFlow.StaveLine = StaveLine;\nFlow.StaveModifier = StaveModifier;\nFlow.StaveNote = StaveNote;\nFlow.StaveTempo = StaveTempo;\nFlow.StaveText = StaveText;\nFlow.StaveTie = StaveTie;\nFlow.Stem = Stem;\nFlow.StringNumber = StringNumber;\nFlow.Stroke = Stroke;\nFlow.SVGContext = SVGContext;\nFlow.System = System;\nFlow.TabNote = TabNote;\nFlow.TabSlide = TabSlide;\nFlow.TabStave = TabStave;\nFlow.TabTie = TabTie;\nFlow.TextBracket = TextBracket;\nFlow.TextDynamics = TextDynamics;\nFlow.TextFormatter = TextFormatter;\nFlow.TextNote = TextNote;\nFlow.TickContext = TickContext;\nFlow.TimeSignature = TimeSignature;\nFlow.TimeSigNote = TimeSigNote;\nFlow.Tremolo = Tremolo;\nFlow.Tuning = Tuning;\nFlow.Tuplet = Tuplet;\nFlow.Vibrato = Vibrato;\nFlow.VibratoBracket = VibratoBracket;\nFlow.Voice = Voice;\nFlow.Volta = Volta;\n// Exported Enums.\n// Sorted by the module / file they are exported from.\nFlow.AnnotationHorizontalJustify = AnnotationHorizontalJustify;\nFlow.AnnotationVerticalJustify = AnnotationVerticalJustify;\nFlow.ChordSymbolHorizontalJustify = ChordSymbolHorizontalJustify;\nFlow.ChordSymbolVerticalJustify = ChordSymbolVerticalJustify;\nFlow.SymbolTypes = SymbolTypes;\nFlow.SymbolModifiers = SymbolModifiers;\nFlow.CurvePosition = CurvePosition;\nFlow.FontWeight = FontWeight;\nFlow.FontStyle = FontStyle;\nFlow.ModifierPosition = ModifierPosition;\nFlow.RendererBackends = RendererBackends;\nFlow.RendererLineEndType = RendererLineEndType;\nFlow.BarlineType = BarlineType;\nFlow.StaveModifierPosition = StaveModifierPosition;\nFlow.VoltaType = VoltaType;\nFlow.TextBracketPosition = TextBracketPosition;\nFlow.TextJustification = TextJustification;\nFlow.VoiceMode = VoiceMode;\n","export const VERSION = '4.1.0-alpha.0';\nexport const ID = '847bc9014672858aedc7f8460384f51f98d6bd84';\nexport const DATE = '2022-10-10T04:47:38.237Z';\n","export const PetalumaScriptFont = {\n spacing: 50,\n glyphs: {\n ' ': {\n x_min: 0,\n x_max: 250,\n y_min: 0,\n y_max: 500,\n ha: 500,\n leftSideBearing: 0,\n advanceWidth: 250,\n },\n '0': {\n x_min: 33,\n x_max: 534,\n y_min: -13,\n y_max: 751,\n ha: 764,\n leftSideBearing: 33,\n advanceWidth: 570,\n },\n '1': {\n x_min: 48,\n x_max: 235,\n y_min: -17,\n y_max: 734,\n ha: 751,\n leftSideBearing: 48,\n advanceWidth: 286,\n },\n '2': {\n x_min: 56,\n x_max: 571,\n y_min: -19,\n y_max: 741,\n ha: 760,\n leftSideBearing: 56,\n advanceWidth: 626,\n },\n '3': {\n x_min: 50,\n x_max: 528,\n y_min: -7,\n y_max: 731,\n ha: 738,\n leftSideBearing: 50,\n advanceWidth: 589,\n },\n '4': {\n x_min: 38,\n x_max: 564,\n y_min: -13,\n y_max: 743,\n ha: 756,\n leftSideBearing: 38,\n advanceWidth: 614,\n },\n '5': {\n x_min: 42,\n x_max: 601,\n y_min: -34,\n y_max: 743,\n ha: 777,\n leftSideBearing: 42,\n advanceWidth: 648,\n },\n '6': {\n x_min: 47,\n x_max: 606,\n y_min: -16,\n y_max: 743,\n ha: 759,\n leftSideBearing: 47,\n advanceWidth: 667,\n },\n '7': {\n x_min: 47,\n x_max: 567,\n y_min: 5,\n y_max: 739,\n ha: 734,\n leftSideBearing: 0,\n advanceWidth: 615,\n },\n '8': {\n x_min: 40,\n x_max: 541,\n y_min: -15,\n y_max: 752,\n ha: 767,\n leftSideBearing: 40,\n advanceWidth: 585,\n },\n '9': {\n x_min: 40,\n x_max: 537,\n y_min: -52,\n y_max: 736,\n ha: 788,\n leftSideBearing: 40,\n advanceWidth: 592,\n },\n '!': {\n x_min: 49,\n x_max: 180,\n y_min: -7,\n y_max: 761,\n ha: 768,\n leftSideBearing: 49,\n advanceWidth: 230,\n },\n '\"': {\n x_min: 39,\n x_max: 304,\n y_min: 596,\n y_max: 804,\n ha: 208,\n leftSideBearing: 39,\n advanceWidth: 353,\n },\n '#': {\n x_min: 33,\n x_max: 599,\n y_min: -8,\n y_max: 765,\n ha: 773,\n leftSideBearing: 33,\n advanceWidth: 648,\n },\n $: {\n x_min: 53,\n x_max: 495,\n y_min: -111,\n y_max: 823,\n ha: 934,\n leftSideBearing: 53,\n advanceWidth: 560,\n },\n '%': {\n x_min: 35,\n x_max: 656,\n y_min: -128,\n y_max: 808,\n ha: 936,\n leftSideBearing: 35,\n advanceWidth: 711,\n },\n '&': {\n x_min: 53,\n x_max: 441,\n y_min: -3,\n y_max: 753,\n ha: 756,\n leftSideBearing: 53,\n advanceWidth: 500,\n },\n \"'\": {\n x_min: 43,\n x_max: 161,\n y_min: 590,\n y_max: 811,\n ha: 221,\n leftSideBearing: 43,\n advanceWidth: 217,\n },\n '(': {\n x_min: 41,\n x_max: 311,\n y_min: -36,\n y_max: 845,\n ha: 881,\n leftSideBearing: 41,\n advanceWidth: 308,\n },\n ')': {\n x_min: -8,\n x_max: 257,\n y_min: -21,\n y_max: 852,\n ha: 873,\n leftSideBearing: -8,\n advanceWidth: 280,\n },\n '*': {\n x_min: 59,\n x_max: 539,\n y_min: 175,\n y_max: 589,\n ha: 414,\n leftSideBearing: 59,\n advanceWidth: 601,\n },\n '+': {\n x_min: 33,\n x_max: 361,\n y_min: 180,\n y_max: 587,\n ha: 407,\n leftSideBearing: 33,\n advanceWidth: 400,\n },\n ',': {\n x_min: 15,\n x_max: 176,\n y_min: -129,\n y_max: 92,\n ha: 221,\n leftSideBearing: 15,\n advanceWidth: 205,\n },\n '-': {\n x_min: 40,\n x_max: 380,\n y_min: 317,\n y_max: 452,\n ha: 135,\n leftSideBearing: 40,\n advanceWidth: 422,\n },\n '.': {\n x_min: 48,\n x_max: 185,\n y_min: -56,\n y_max: 84,\n ha: 140,\n leftSideBearing: 48,\n advanceWidth: 227,\n },\n '/': {\n x_min: -58,\n x_max: 654,\n y_min: -122,\n y_max: 844,\n ha: 966,\n leftSideBearing: -58,\n advanceWidth: 626,\n },\n ':': {\n x_min: 65,\n x_max: 225,\n y_min: 97,\n y_max: 536,\n ha: 439,\n leftSideBearing: 65,\n advanceWidth: 302,\n },\n ';': {\n x_min: 13,\n x_max: 295,\n y_min: -139,\n y_max: 536,\n ha: 675,\n leftSideBearing: 13,\n advanceWidth: 334,\n },\n '<': {\n x_min: 28,\n x_max: 438,\n y_min: -1,\n y_max: 607,\n ha: 608,\n leftSideBearing: 28,\n advanceWidth: 475,\n },\n '=': {\n x_min: 40,\n x_max: 383,\n y_min: 199.9598640852289,\n y_max: 541,\n ha: 341.0401359147711,\n leftSideBearing: 40,\n advanceWidth: 422,\n },\n '>': {\n x_min: 35,\n x_max: 421,\n y_min: 28,\n y_max: 632,\n ha: 604,\n leftSideBearing: 35,\n advanceWidth: 466,\n },\n '?': {\n x_min: 45,\n x_max: 548,\n y_min: -17,\n y_max: 767,\n ha: 784,\n leftSideBearing: 45,\n advanceWidth: 592,\n },\n '@': {\n x_min: 51,\n x_max: 730,\n y_min: -78,\n y_max: 753,\n ha: 831,\n leftSideBearing: 51,\n advanceWidth: 781,\n },\n A: {\n x_min: 37,\n x_max: 554,\n y_min: -4,\n y_max: 746,\n ha: 750,\n leftSideBearing: 37,\n advanceWidth: 617,\n },\n B: {\n x_min: 37,\n x_max: 532,\n y_min: 3,\n y_max: 783,\n ha: 780,\n leftSideBearing: 37,\n advanceWidth: 579,\n },\n C: {\n x_min: 37,\n x_max: 583,\n y_min: -3,\n y_max: 775,\n ha: 778,\n leftSideBearing: 37,\n advanceWidth: 623,\n },\n D: {\n x_min: 50,\n x_max: 530,\n y_min: -15,\n y_max: 749,\n ha: 764,\n leftSideBearing: 50,\n advanceWidth: 579,\n },\n E: {\n x_min: 45,\n x_max: 531,\n y_min: -1,\n y_max: 743,\n ha: 744,\n leftSideBearing: 45,\n advanceWidth: 585,\n },\n F: {\n x_min: 45,\n x_max: 459,\n y_min: 23,\n y_max: 727,\n ha: 704,\n leftSideBearing: 45,\n advanceWidth: 510,\n },\n G: {\n x_min: 31,\n x_max: 577,\n y_min: -8,\n y_max: 733,\n ha: 741,\n leftSideBearing: 31,\n advanceWidth: 611,\n },\n H: {\n x_min: 37,\n x_max: 493,\n y_min: -22,\n y_max: 758,\n ha: 780,\n leftSideBearing: 37,\n advanceWidth: 535,\n },\n I: {\n x_min: 47,\n x_max: 501,\n y_min: -3,\n y_max: 731,\n ha: 734,\n leftSideBearing: 47,\n advanceWidth: 541,\n },\n J: {\n x_min: 33,\n x_max: 531,\n y_min: -23,\n y_max: 725,\n ha: 748,\n leftSideBearing: 33,\n advanceWidth: 573,\n },\n K: {\n x_min: 43,\n x_max: 505,\n y_min: -10,\n y_max: 740,\n ha: 750,\n leftSideBearing: 43,\n advanceWidth: 560,\n },\n L: {\n x_min: 49,\n x_max: 457,\n y_min: -2,\n y_max: 746,\n ha: 748,\n leftSideBearing: 49,\n advanceWidth: 510,\n },\n M: {\n x_min: 35,\n x_max: 699,\n y_min: 1,\n y_max: 744,\n ha: 743,\n leftSideBearing: 35,\n advanceWidth: 743,\n },\n N: {\n x_min: 34,\n x_max: 533,\n y_min: -17,\n y_max: 761,\n ha: 778,\n leftSideBearing: 34,\n advanceWidth: 579,\n },\n O: {\n x_min: 41,\n x_max: 608,\n y_min: -5,\n y_max: 735,\n ha: 740,\n leftSideBearing: 41,\n advanceWidth: 667,\n },\n P: {\n x_min: 53,\n x_max: 451,\n y_min: -18,\n y_max: 735,\n ha: 753,\n leftSideBearing: 53,\n advanceWidth: 497,\n },\n Q: {\n x_min: 40,\n x_max: 599,\n y_min: -67,\n y_max: 744,\n ha: 811,\n leftSideBearing: 40,\n advanceWidth: 648,\n },\n R: {\n x_min: 39,\n x_max: 487,\n y_min: 16,\n y_max: 735,\n ha: 719,\n leftSideBearing: 39,\n advanceWidth: 535,\n },\n S: {\n x_min: 35,\n x_max: 552,\n y_min: -47,\n y_max: 708,\n ha: 755,\n leftSideBearing: 35,\n advanceWidth: 604,\n },\n T: {\n x_min: 26,\n x_max: 656,\n y_min: -13,\n y_max: 718,\n ha: 731,\n leftSideBearing: 26,\n advanceWidth: 705,\n },\n U: {\n x_min: 41,\n x_max: 518,\n y_min: -20,\n y_max: 748,\n ha: 768,\n leftSideBearing: 41,\n advanceWidth: 567,\n },\n V: {\n x_min: 47,\n x_max: 509,\n y_min: -26,\n y_max: 744,\n ha: 770,\n leftSideBearing: 47,\n advanceWidth: 567,\n },\n W: {\n x_min: 44,\n x_max: 789,\n y_min: -35,\n y_max: 720,\n ha: 755,\n leftSideBearing: 44,\n advanceWidth: 833,\n },\n X: {\n x_min: 63,\n x_max: 635,\n y_min: -10,\n y_max: 745,\n ha: 755,\n leftSideBearing: 63,\n advanceWidth: 680,\n },\n Y: {\n x_min: 43,\n x_max: 503,\n y_min: -21,\n y_max: 734,\n ha: 755,\n leftSideBearing: 43,\n advanceWidth: 541,\n },\n Z: {\n x_min: 42,\n x_max: 584,\n y_min: -10,\n y_max: 739,\n ha: 749,\n leftSideBearing: 42,\n advanceWidth: 629,\n },\n '[': {\n x_min: 46,\n x_max: 346,\n y_min: -150,\n y_max: 884,\n ha: 1034,\n leftSideBearing: 46,\n advanceWidth: 291,\n },\n '\\\\': {\n x_min: 20,\n x_max: 616,\n y_min: -100,\n y_max: 797,\n ha: 897,\n leftSideBearing: 20,\n advanceWidth: 645,\n },\n ']': {\n x_min: -76,\n x_max: 226,\n y_min: -150,\n y_max: 881,\n ha: 1031,\n leftSideBearing: -76,\n advanceWidth: 297,\n },\n '^': {\n x_min: 43,\n x_max: 437,\n y_min: 517,\n y_max: 812,\n ha: 295,\n leftSideBearing: 43,\n advanceWidth: 478,\n },\n _: {\n x_min: 29,\n x_max: 563,\n y_min: -110,\n y_max: -1,\n ha: 109,\n leftSideBearing: 29,\n advanceWidth: 598,\n },\n '`': {\n x_min: 54,\n x_max: 321,\n y_min: 540,\n y_max: 747,\n ha: 207,\n leftSideBearing: 54,\n advanceWidth: 368,\n },\n a: {\n x_min: 20,\n x_max: 447,\n y_min: -17,\n y_max: 495,\n ha: 512,\n leftSideBearing: 20,\n advanceWidth: 494,\n },\n b: {\n x_min: 37,\n x_max: 466,\n y_min: -27,\n y_max: 770,\n ha: 797,\n leftSideBearing: 37,\n advanceWidth: 510,\n },\n c: {\n x_min: 35,\n x_max: 456,\n y_min: -9,\n y_max: 507,\n ha: 516,\n leftSideBearing: 35,\n advanceWidth: 460,\n },\n d: {\n x_min: 45,\n x_max: 520,\n y_min: -15,\n y_max: 764,\n ha: 779,\n leftSideBearing: 45,\n advanceWidth: 560,\n },\n e: {\n x_min: 33,\n x_max: 370,\n y_min: -5,\n y_max: 501,\n ha: 506,\n leftSideBearing: 33,\n advanceWidth: 397,\n },\n f: {\n x_min: 35,\n x_max: 411,\n y_min: -13,\n y_max: 695,\n ha: 708,\n leftSideBearing: 35,\n advanceWidth: 453,\n },\n g: {\n x_min: 33,\n x_max: 551,\n y_min: -257,\n y_max: 505,\n ha: 762,\n leftSideBearing: 33,\n advanceWidth: 611,\n },\n h: {\n x_min: 32,\n x_max: 458,\n y_min: -29,\n y_max: 743,\n ha: 772,\n leftSideBearing: 32,\n advanceWidth: 491,\n },\n i: {\n x_min: 45,\n x_max: 167,\n y_min: -13,\n y_max: 631,\n ha: 644,\n leftSideBearing: 45,\n advanceWidth: 220,\n },\n j: {\n x_min: -127,\n x_max: 261,\n y_min: -231,\n y_max: 601,\n ha: 832,\n leftSideBearing: -127,\n advanceWidth: 308,\n },\n k: {\n x_min: 39,\n x_max: 443,\n y_min: -3,\n y_max: 700,\n ha: 703,\n leftSideBearing: 39,\n advanceWidth: 497,\n },\n l: {\n x_min: 58,\n x_max: 168,\n y_min: -8,\n y_max: 686,\n ha: 694,\n leftSideBearing: 58,\n advanceWidth: 227,\n },\n m: {\n x_min: 39,\n x_max: 688,\n y_min: -14,\n y_max: 501,\n ha: 515,\n leftSideBearing: 39,\n advanceWidth: 718,\n },\n n: {\n x_min: 45,\n x_max: 491,\n y_min: -32,\n y_max: 512,\n ha: 544,\n leftSideBearing: 45,\n advanceWidth: 541,\n },\n o: {\n x_min: 41,\n x_max: 424,\n y_min: -12,\n y_max: 493,\n ha: 505,\n leftSideBearing: 41,\n advanceWidth: 447,\n },\n p: {\n x_min: 25,\n x_max: 529,\n y_min: -260,\n y_max: 500,\n ha: 760,\n leftSideBearing: 25,\n advanceWidth: 573,\n },\n q: {\n x_min: 53,\n x_max: 603,\n y_min: -235,\n y_max: 514,\n ha: 749,\n leftSideBearing: 53,\n advanceWidth: 623,\n },\n r: {\n x_min: 32,\n x_max: 407,\n y_min: -7,\n y_max: 492,\n ha: 499,\n leftSideBearing: 32,\n advanceWidth: 460,\n },\n s: {\n x_min: 49,\n x_max: 416,\n y_min: -12,\n y_max: 519,\n ha: 531,\n leftSideBearing: 49,\n advanceWidth: 460,\n },\n t: {\n x_min: 32,\n x_max: 442,\n y_min: -5,\n y_max: 684,\n ha: 689,\n leftSideBearing: 32,\n advanceWidth: 469,\n },\n u: {\n x_min: 41,\n x_max: 487,\n y_min: -5,\n y_max: 507,\n ha: 512,\n leftSideBearing: 41,\n advanceWidth: 510,\n },\n v: {\n x_min: 16,\n x_max: 441,\n y_min: -20,\n y_max: 542,\n ha: 562,\n leftSideBearing: 16,\n advanceWidth: 456,\n },\n w: {\n x_min: 39,\n x_max: 639,\n y_min: -22,\n y_max: 505,\n ha: 527,\n leftSideBearing: 39,\n advanceWidth: 661,\n },\n x: {\n x_min: 15,\n x_max: 505,\n y_min: -39,\n y_max: 539,\n ha: 578,\n leftSideBearing: 15,\n advanceWidth: 541,\n },\n y: {\n x_min: -98,\n x_max: 501,\n y_min: -242,\n y_max: 511,\n ha: 753,\n leftSideBearing: -98,\n advanceWidth: 548,\n },\n z: {\n x_min: 27,\n x_max: 479,\n y_min: -3,\n y_max: 494,\n ha: 497,\n leftSideBearing: 27,\n advanceWidth: 494,\n },\n '{': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '|': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '}': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '~': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n },\n fontFamily: 'PetalumaScript',\n resolution: 1000,\n generatedOn: '2020-06-14T18:33:25.407Z',\n};\n","export const RobotoSlabFont = {\n spacing: 50,\n glyphs: {\n ' ': {\n x_min: 0,\n x_max: 509,\n y_min: 0,\n y_max: 2000,\n ha: 2000,\n leftSideBearing: 0,\n advanceWidth: 509,\n },\n '0': {\n x_min: 121,\n x_max: 1048,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 121,\n advanceWidth: 1168,\n },\n '1': {\n x_min: 117,\n x_max: 767,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 117,\n advanceWidth: 844,\n },\n '2': {\n x_min: 75.8474576645637,\n x_max: 1040,\n y_min: 0,\n y_max: 1477,\n ha: 1477,\n leftSideBearing: 75,\n advanceWidth: 1131,\n },\n '3': {\n x_min: 74.85365853658536,\n x_max: 994,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 74,\n advanceWidth: 1106,\n },\n '4': {\n x_min: 63,\n x_max: 1114,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 63,\n advanceWidth: 1187,\n },\n '5': {\n x_min: 96.8448275474953,\n x_max: 982,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 96,\n advanceWidth: 1081,\n },\n '6': {\n x_min: 121,\n x_max: 1067,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 121,\n advanceWidth: 1144,\n },\n '7': {\n x_min: 76,\n x_max: 1060,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: -30,\n advanceWidth: 1128,\n },\n '8': {\n x_min: 92,\n x_max: 1039,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 92,\n advanceWidth: 1131,\n },\n '9': {\n x_min: 84,\n x_max: 1026,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 84,\n advanceWidth: 1154,\n },\n '!': {\n x_min: 143,\n x_max: 340,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 143,\n advanceWidth: 483,\n },\n '\"': {\n x_min: 166,\n x_max: 634,\n y_min: 1055,\n y_max: 1560,\n ha: 505,\n leftSideBearing: 166,\n advanceWidth: 770,\n },\n '#': {\n x_min: 63,\n x_max: 1179,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 63,\n advanceWidth: 1246,\n },\n $: {\n x_min: 81.92156915727656,\n x_max: 1012,\n y_min: -208,\n y_max: 1693,\n ha: 1901,\n leftSideBearing: 81,\n advanceWidth: 1110,\n },\n '%': {\n x_min: 77,\n x_max: 1384,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 77,\n advanceWidth: 1460,\n },\n '&': {\n x_min: 74,\n x_max: 1242,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 74,\n advanceWidth: 1289,\n },\n \"'\": {\n x_min: 166,\n x_max: 324,\n y_min: 1055,\n y_max: 1560,\n ha: 505,\n leftSideBearing: 166,\n advanceWidth: 460,\n },\n '(': {\n x_min: 114,\n x_max: 650,\n y_min: -463,\n y_max: 1636,\n ha: 2099,\n leftSideBearing: 114,\n advanceWidth: 662,\n },\n ')': {\n x_min: 11,\n x_max: 547,\n y_min: -463,\n y_max: 1636,\n ha: 2099,\n leftSideBearing: 11,\n advanceWidth: 654,\n },\n '*': {\n x_min: 66,\n x_max: 893,\n y_min: 607,\n y_max: 1456,\n ha: 849,\n leftSideBearing: 66,\n advanceWidth: 958,\n },\n '+': {\n x_min: 73,\n x_max: 1071,\n y_min: 146,\n y_max: 1206,\n ha: 1060,\n leftSideBearing: 73,\n advanceWidth: 1145,\n },\n ',': {\n x_min: 23,\n x_max: 315,\n y_min: -311,\n y_max: 221,\n ha: 532,\n leftSideBearing: 23,\n advanceWidth: 404,\n },\n '-': {\n x_min: 154,\n x_max: 643,\n y_min: 538,\n y_max: 692,\n ha: 154,\n leftSideBearing: 154,\n advanceWidth: 797,\n },\n '.': {\n x_min: 145,\n x_max: 342,\n y_min: 0,\n y_max: 202,\n ha: 202,\n leftSideBearing: 145,\n advanceWidth: 493,\n },\n '/': {\n x_min: 0,\n x_max: 774,\n y_min: -125,\n y_max: 1456,\n ha: 1581,\n leftSideBearing: 0,\n advanceWidth: 824,\n },\n ':': {\n x_min: 145,\n x_max: 342,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 145,\n advanceWidth: 419,\n },\n ';': {\n x_min: 53,\n x_max: 345,\n y_min: -311,\n y_max: 1082,\n ha: 1393,\n leftSideBearing: 53,\n advanceWidth: 424,\n },\n '<': {\n x_min: 76,\n x_max: 892,\n y_min: 107,\n y_max: 1013,\n ha: 906,\n leftSideBearing: 76,\n advanceWidth: 1017,\n },\n '=': {\n x_min: 147,\n x_max: 981,\n y_min: 407,\n y_max: 987,\n ha: 580,\n leftSideBearing: 147,\n advanceWidth: 1127,\n },\n '>': {\n x_min: 125,\n x_max: 980,\n y_min: 87,\n y_max: 993,\n ha: 906,\n leftSideBearing: 125,\n advanceWidth: 1060,\n },\n '?': {\n x_min: 65.92660602419838,\n x_max: 890,\n y_min: 0,\n y_max: 1477,\n ha: 1477,\n leftSideBearing: 65,\n advanceWidth: 953,\n },\n '@': {\n x_min: 84.3592218305664,\n x_max: 1705.2346925277395,\n y_min: -453,\n y_max: 1431,\n ha: 1884,\n leftSideBearing: 84,\n advanceWidth: 1821,\n },\n A: {\n x_min: 70,\n x_max: 1463,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 70,\n advanceWidth: 1533,\n },\n B: {\n x_min: 81,\n x_max: 1253,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1322,\n },\n C: {\n x_min: 80,\n x_max: 1174,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 80,\n advanceWidth: 1290,\n },\n D: {\n x_min: 81,\n x_max: 1291,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1356,\n },\n E: {\n x_min: 81,\n x_max: 1190,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1306,\n },\n F: {\n x_min: 81,\n x_max: 1176,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1256,\n },\n G: {\n x_min: 80,\n x_max: 1226,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 80,\n advanceWidth: 1346,\n },\n H: {\n x_min: 81,\n x_max: 1497,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1578,\n },\n I: {\n x_min: 81,\n x_max: 604,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 685,\n },\n J: {\n x_min: 60,\n x_max: 1100,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 60,\n advanceWidth: 1169,\n },\n K: {\n x_min: 81,\n x_max: 1427,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1501,\n },\n L: {\n x_min: 81,\n x_max: 1130,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1210,\n },\n M: {\n x_min: 94,\n x_max: 1888,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 94,\n advanceWidth: 1982,\n },\n N: {\n x_min: 83,\n x_max: 1509,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 83,\n advanceWidth: 1592,\n },\n O: {\n x_min: 70,\n x_max: 1281,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 70,\n advanceWidth: 1351,\n },\n P: {\n x_min: 81,\n x_max: 1242,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1297,\n },\n Q: {\n x_min: 70,\n x_max: 1348,\n y_min: -245,\n y_max: 1477,\n ha: 1722,\n leftSideBearing: 70,\n advanceWidth: 1376,\n },\n R: {\n x_min: 81,\n x_max: 1285,\n y_min: 0,\n y_max: 1455,\n ha: 1455,\n leftSideBearing: 81,\n advanceWidth: 1385,\n },\n S: {\n x_min: 115,\n x_max: 1116,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 115,\n advanceWidth: 1206,\n },\n T: {\n x_min: 96,\n x_max: 1306,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 96,\n advanceWidth: 1406,\n },\n U: {\n x_min: 70,\n x_max: 1452,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 70,\n advanceWidth: 1522,\n },\n V: {\n x_min: 65,\n x_max: 1443,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 65,\n advanceWidth: 1508,\n },\n W: {\n x_min: 72,\n x_max: 2057,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 72,\n advanceWidth: 2129,\n },\n X: {\n x_min: 80,\n x_max: 1449,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 80,\n advanceWidth: 1529,\n },\n Y: {\n x_min: 65,\n x_max: 1396,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 65,\n advanceWidth: 1461,\n },\n Z: {\n x_min: 90,\n x_max: 1107,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 90,\n advanceWidth: 1197,\n },\n '[': {\n x_min: 157,\n x_max: 541,\n y_min: -312,\n y_max: 1664,\n ha: 1976,\n leftSideBearing: 157,\n advanceWidth: 573,\n },\n '\\\\': {\n x_min: 36,\n x_max: 830,\n y_min: -125,\n y_max: 1456,\n ha: 1581,\n leftSideBearing: 36,\n advanceWidth: 841,\n },\n ']': {\n x_min: 23,\n x_max: 408,\n y_min: -312,\n y_max: 1664,\n ha: 1976,\n leftSideBearing: 23,\n advanceWidth: 552,\n },\n '^': {\n x_min: 71,\n x_max: 802,\n y_min: 729,\n y_max: 1456,\n ha: 727,\n leftSideBearing: 71,\n advanceWidth: 864,\n },\n _: {\n x_min: 119,\n x_max: 1041,\n y_min: -154,\n y_max: 0,\n ha: 154,\n leftSideBearing: 119,\n advanceWidth: 1168,\n },\n '`': {\n x_min: 40,\n x_max: 456,\n y_min: 1288,\n y_max: 1560,\n ha: 272,\n leftSideBearing: 40,\n advanceWidth: 496,\n },\n a: {\n x_min: 79,\n x_max: 1053,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 79,\n advanceWidth: 1132,\n },\n b: {\n x_min: -16,\n x_max: 1071,\n y_min: -21,\n y_max: 1560,\n ha: 1581,\n leftSideBearing: -16,\n advanceWidth: 1145,\n },\n c: {\n x_min: 78,\n x_max: 988,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 78,\n advanceWidth: 1067,\n },\n d: {\n x_min: 78,\n x_max: 1156,\n y_min: -21,\n y_max: 1560,\n ha: 1581,\n leftSideBearing: 78,\n advanceWidth: 1218,\n },\n e: {\n x_min: 74,\n x_max: 980,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 74,\n advanceWidth: 1059,\n },\n f: {\n x_min: 64,\n x_max: 731,\n y_min: 0,\n y_max: 1581,\n ha: 1581,\n leftSideBearing: 64,\n advanceWidth: 725,\n },\n g: {\n x_min: 78,\n x_max: 1133,\n y_min: -437,\n y_max: 1102,\n ha: 1539,\n leftSideBearing: 78,\n advanceWidth: 1157,\n },\n h: {\n x_min: 49,\n x_max: 1255,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 49,\n advanceWidth: 1315,\n },\n i: {\n x_min: 67,\n x_max: 590,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 67,\n advanceWidth: 652,\n },\n j: {\n x_min: -56,\n x_max: 381,\n y_min: -437,\n y_max: 1560,\n ha: 1997,\n leftSideBearing: -56,\n advanceWidth: 525,\n },\n k: {\n x_min: 64,\n x_max: 1248,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 64,\n advanceWidth: 1287,\n },\n l: {\n x_min: 64,\n x_max: 587,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 64,\n advanceWidth: 653,\n },\n m: {\n x_min: 74,\n x_max: 1905,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 74,\n advanceWidth: 1977,\n },\n n: {\n x_min: 74,\n x_max: 1278,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 74,\n advanceWidth: 1343,\n },\n o: {\n x_min: 78,\n x_max: 1046,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 78,\n advanceWidth: 1124,\n },\n p: {\n x_min: 34,\n x_max: 1119,\n y_min: -416,\n y_max: 1102,\n ha: 1518,\n leftSideBearing: 34,\n advanceWidth: 1197,\n },\n q: {\n x_min: 78,\n x_max: 1135,\n y_min: -416,\n y_max: 1102,\n ha: 1518,\n leftSideBearing: 78,\n advanceWidth: 1139,\n },\n r: {\n x_min: 72,\n x_max: 808,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 72,\n advanceWidth: 854,\n },\n s: {\n x_min: 104,\n x_max: 933,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 104,\n advanceWidth: 1022,\n },\n t: {\n x_min: 24,\n x_max: 678,\n y_min: -17,\n y_max: 1343,\n ha: 1360,\n leftSideBearing: 24,\n advanceWidth: 730,\n },\n u: {\n x_min: 52,\n x_max: 1181,\n y_min: -21,\n y_max: 1082,\n ha: 1103,\n leftSideBearing: 52,\n advanceWidth: 1245,\n },\n v: {\n x_min: 26,\n x_max: 1176,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 26,\n advanceWidth: 1206,\n },\n w: {\n x_min: 52,\n x_max: 1777,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 52,\n advanceWidth: 1823,\n },\n x: {\n x_min: 42,\n x_max: 1163,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 42,\n advanceWidth: 1203,\n },\n y: {\n x_min: 24,\n x_max: 1172,\n y_min: -437,\n y_max: 1082,\n ha: 1519,\n leftSideBearing: 24,\n advanceWidth: 1192,\n },\n z: {\n x_min: 88,\n x_max: 960,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 88,\n advanceWidth: 1032,\n },\n '{': {\n x_min: 63,\n x_max: 671,\n y_min: -364,\n y_max: 1597,\n ha: 1961,\n leftSideBearing: 63,\n advanceWidth: 701,\n },\n '|': {\n x_min: 150,\n x_max: 307,\n y_min: -270,\n y_max: 1456,\n ha: 1726,\n leftSideBearing: 150,\n advanceWidth: 451,\n },\n '}': {\n x_min: 27,\n x_max: 635,\n y_min: -364,\n y_max: 1597,\n ha: 1961,\n leftSideBearing: 27,\n advanceWidth: 701,\n },\n '~': {\n x_min: 121,\n x_max: 1257,\n y_min: 401,\n y_max: 803,\n ha: 402,\n leftSideBearing: 121,\n advanceWidth: 1386,\n },\n },\n fontFamily: 'Roboto Slab',\n resolution: 2048,\n generatedOn: '2020-06-15T19:12:58.120Z',\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Utility methods used by the rest of the VexFlow codebase.\nimport { Flow } from './flow';\nimport { log, RuntimeError } from './util';\nexport class Vex {\n // Users of `Vex.forEach(a, fn)` should use `Array.prototype.forEach()` instead.\n // static forEach(arr: T[], callbackFn: (value: T, index: number, array: T[]) => void) {\n // arr.forEach(callbackFn);\n // }\n /**\n * Take `arr` and return a new list consisting of the sorted, unique,\n * contents of arr. Does not modify `arr`.\n */\n // eslint-disable-next-line\n static sortAndUnique(arr, cmp, eq) {\n if (arr.length > 1) {\n const newArr = [];\n let last;\n arr.sort(cmp);\n for (let i = 0; i < arr.length; ++i) {\n if (i === 0 || !eq(arr[i], last)) {\n newArr.push(arr[i]);\n }\n last = arr[i];\n }\n return newArr;\n }\n else {\n return arr;\n }\n }\n /** Check if array `arr` contains `obj`. */\n // eslint-disable-next-line\n static contains(arr, obj) {\n let i = arr.length;\n while (i--) {\n if (arr[i] === obj) {\n return true;\n }\n }\n return false;\n }\n // Get the 2D Canvas context from DOM element `canvas_sel`.\n static getCanvasContext(canvasSelector) {\n if (!canvasSelector) {\n throw new RuntimeError('BadArgument', 'Invalid canvas selector: ' + canvasSelector);\n }\n const canvas = document.getElementById(canvasSelector);\n if (!(canvas && canvas.getContext)) {\n throw new RuntimeError('UnsupportedBrowserError', 'This browser does not support HTML5 Canvas');\n }\n return canvas.getContext('2d');\n }\n /** Benchmark. Run function `f` once and report time elapsed shifted by `s` milliseconds. */\n // eslint-disable-next-line\n static benchmark(s, f) {\n const start_time = new Date().getTime();\n f();\n const elapsed = new Date().getTime() - start_time;\n log(s, elapsed + 'ms');\n }\n // Get stack trace.\n static stackTrace() {\n const err = new Error();\n return err.stack;\n }\n}\nVex.Flow = Flow;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// @author Ron B. Yeh\n//\n// A smaller initial bundle that supports dynamic importing of music engraving fonts.\n//\n// vexflow-core.ts is the entry point for output file vexflow-core.js.\n// It does not preload / bundle any music fonts by default.\n// All music fonts will be loaded dynamically via: `Flow.fetchMusicFont(fontName)`\n// Remember to call `Flow.setMusicFont(fontName)` after fetching the font module.\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Flow } from '../src/flow';\nimport { Font } from '../src/font';\nimport { loadTextFonts } from '../src/fonts/textfonts';\nimport { globalObject, RuntimeError } from '../src/util';\n// fontModules maps font names => font module paths, which can be loaded at runtime by vexflow-core.js.\n// ADD_MUSIC_FONT\nconst fontModules = {\n Bravura: './vexflow-font-bravura.js',\n Gonville: './vexflow-font-gonville.js',\n Petaluma: './vexflow-font-petaluma.js',\n Leland: './vexflow-font-leland.js',\n Custom: './vexflow-font-custom.js',\n};\n/**\n * @param fontName the name of the music font to load.\n * @param fontModuleOrPath Either a font module object (containing a .data and .metrics properties) or a path to a font module.\n * The font module is assumed to be in the same directory as the vexflow-core.js entry point.\n *\n * This replaces the default empty implementation in flow.ts.\n */\nFlow.fetchMusicFont = (fontName, fontModuleOrPath) => __awaiter(void 0, void 0, void 0, function* () {\n const font = Font.load(fontName);\n // If the font has already been loaded before we do nothing.\n if (font.hasData()) {\n return;\n }\n if (!fontModuleOrPath) {\n // Determine the font module path.\n if (fontName in fontModules) {\n fontModuleOrPath = fontModules[fontName];\n }\n else {\n throw new RuntimeError('UnknownFont', `Music font ${fontName} does not exist.`);\n }\n }\n let fontModule;\n if (typeof fontModuleOrPath === 'string') {\n const module = yield import(/* webpackIgnore: true */ fontModuleOrPath);\n const g = globalObject();\n const VexFlowFont = g['VexFlowFont'];\n if (typeof VexFlowFont !== 'undefined' && typeof VexFlowFont[fontName] !== 'undefined') {\n // CJS font modules will set a global variable named: VexFlowFont.Bravura | VexFlowFont.Gonville | VexFlowFont.Petaluma | etc.\n fontModule = VexFlowFont[fontName];\n }\n else {\n // ESM font modules will export an object named \"Font\" with properties named \"data\" and \"metrics\".\n // See vexflow-font-bravura.ts for an example.\n fontModule = module.Font;\n }\n }\n else {\n fontModule = fontModuleOrPath;\n }\n font.setData(fontModule.data);\n font.setMetrics(fontModule.metrics);\n});\n// Load the two text fonts that ChordSymbol & Annotation use.\nloadTextFonts();\n// Re-export all exports from index.ts.\nexport * from '../src/index';\n// Also collect all exports into a default export for CJS projects.\nexport * as default from '../src/index';\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { TextFormatter } from '../textformatter';\nimport { PetalumaScriptFont } from './petalumascript_glyphs';\nimport { RobotoSlabFont } from './robotoslab_glyphs';\nexport function loadTextFonts() {\n // Roboto Slab\n {\n const fontData = RobotoSlabFont;\n const { fontFamily, resolution, glyphs } = fontData;\n Font.load(fontFamily, fontData);\n // Previously we used 'H', but it isn't actually the tallest or the widest.\n // Interestingly, the lowercase 'b' is the tallest glyph.\n const maxSizeGlyph = 'b';\n TextFormatter.registerInfo({\n family: fontFamily,\n resolution,\n glyphs,\n maxSizeGlyph,\n monospaced: false,\n bold: false,\n italic: false,\n superscriptOffset: 0.66,\n subscriptOffset: 0.66,\n serifs: true,\n description: 'Text font to pair with the Bravura / Gonville music fonts.',\n });\n }\n // PetalumaScript\n {\n const fontData = PetalumaScriptFont;\n const { fontFamily, resolution, glyphs } = fontData;\n Font.load(fontFamily, fontData);\n // M is wider, but H is taller. :-)\n // Lowercase b is also taller in this font.\n const maxSizeGlyph = 'b';\n TextFormatter.registerInfo({\n family: fontFamily,\n resolution,\n glyphs,\n maxSizeGlyph,\n monospaced: false,\n bold: false,\n italic: false,\n superscriptOffset: 0.66,\n subscriptOffset: 0.66,\n serifs: false,\n description: 'Text font to pair with the Petaluma music font.',\n });\n }\n}\n"],"names":["root","factory","exports","module","define","amd","window","globalThis","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","g","Function","e","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","isCategory","category","checkAncestors","constructorFcn","constructor","CATEGORY","getPrototypeOf","isAccidental","Category","Accidental","isAnnotation","Annotation","isBarline","Barline","isDot","Dot","isGraceNote","GraceNote","isGraceNoteGroup","GraceNoteGroup","isNote","Note","isRenderContext","RenderContext","isStaveNote","StaveNote","isStemmableNote","StemmableNote","isTabNote","TabNote","RuntimeError","Error","code","message","super","globalObject","self","defined","x","undefined","log","block","args","line","Array","slice","join","console","warn","err","stack","midLine","a","b","mid_line","n","parseInt","prefix","text","normalizeAngle","Math","PI","Fraction","numerator","denominator","set","static","Number","isNaN","t","GCD","length","LCM","shift","LCMM","simplify","u","d","gcd","add","param1","param2","otherNumerator","otherDenominator","getNumeratorAndDenominator","lcm","subtract","multiply","divide","equals","compare","__staticFractionA","copy","__staticFractionB","greaterThan","greaterThanEquals","lessThan","lessThanEquals","clone","other","quotient","floor","remainder","makeAbs","abs","toString","toSimplifiedString","__staticFractionTmp","toMixedString","s","q","f","parse","str","i","split","BoundingBox","y","w","h","that","getX","getY","getW","getH","setX","setY","setW","setH","move","mergeWith","boundingBox","new_x","new_y","new_w","max","new_h","BoundingBoxComputation","x1","NaN","y1","x2","y2","getX1","getY1","width","height","addPoint","addX","addY","addQuadraticCurve","p0x","p0y","p1x","p1y","p2x","p2y","p01x","denom","it","p01y","addBezierCurve","p3x","p3y","p0","p1","p2","p3","pow","c","b2ac","t1","sqrt","t2","FontWeight","FontStyle","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","apply","fontParser","Fonts","Font","fontName","name","fontSize","SIZE","_a","scaleToPxFrom","pt","parseFloat","unit","replace","toLowerCase","size","weight","style","fromCSSString","family","SANS_SERIF","NORMAL","cssFontShorthand","document","createElement","font","fontFamily","fontWeight","fontStyle","fontInfo","st","trim","wt","sz","scaleFactor","parsedWeight","ITALIC","woffURL","includeWoff2","fontFace","FontFace","load","fonts","host","WEB_FONT_HOST","files","WEB_FONT_FILES","fontPath","loadWebFont","data","metrics","setData","setMetrics","getName","getData","getMetrics","hasData","getResolution","resolution","getGlyphs","glyphs","lookupMetric","defaultValue","keyParts","currObj","SERIF","px","em","in","mm","cm","PetalumaScript","Index","id","type","class","Registry","index","defaultRegistry","registry","clear","setIndexValue","elem","updateIndex","oldValue","getElementById","getAttribute","register","setAttribute","onRegister","_b","getElementsByAttribute","attribute","index_attr","index_attr_val","keys","map","k","getElementsByType","getElementsByClass","className","onUpdate","info","includes","Element","children","attrs","newID","el","getCategory","classes","rendered","getDefaultRegistry","ID","addChildElement","child","push","setStyle","setGroupStyle","forEach","getStyle","applyStyle","context","save","shadowColor","setShadowColor","shadowBlur","setShadowBlur","fillStyle","setFillStyle","strokeStyle","setStrokeStyle","lineWidth","setLineWidth","restoreStyle","restore","drawWithStyle","checkContext","draw","hasClass","addClass","removeClass","isRendered","setRendered","getAttributes","getSVGElement","suffix","element","oldID","getBoundingBox","getContext","setContext","setFont","toCSSString","textFont","defaultTextFont","TEXT_FONT","fontIsObject","fontIsString","fontIsUndefined","sizeWeightStyleAreUndefined","assign","validate","getFont","resetFont","setFontSize","getFontSize","fontSizeInPoints","convertSizeToPointValue","fontSizeInPixels","convertSizeToPixelValue","RESOLUTION","durations","durationAliases","keySignatures","C","num","Am","F","acc","Dm","Bb","Gm","Eb","Cm","Ab","Fm","Db","Bbm","Gb","Ebm","Cb","Abm","G","Em","D","Bm","A","E","B","clefs","treble","line_shift","bass","tenor","alto","soprano","percussion","subbass","french","notesInfo","int_val","CN","accidental","CB","CBB","DN","DB","DBB","EN","EB","EBB","FN","FB","FBB","GN","GB","GBB","AN","AB","ABB","BN","BB","BBB","R","rest","X","octave","shift_right","accidentals","parenRightPaddingAdjustment","bb","db","bs","bss","bbs","ashs","afhf","accSagittal5v7KleismaUp","accSagittal5v7KleismaDown","accSagittal5CommaUp","accSagittal5CommaDown","accSagittal7CommaUp","accSagittal7CommaDown","accSagittal25SmallDiesisUp","accSagittal25SmallDiesisDown","accSagittal35MediumDiesisUp","accSagittal35MediumDiesisDown","accSagittal11MediumDiesisUp","accSagittal11MediumDiesisDown","accSagittal11LargeDiesisUp","accSagittal11LargeDiesisDown","accSagittal35LargeDiesisUp","accSagittal35LargeDiesisDown","accSagittalSharp25SDown","accSagittalFlat25SUp","accSagittalSharp7CDown","accSagittalFlat7CUp","accSagittalSharp5CDown","accSagittalFlat5CUp","accSagittalSharp5v7kDown","accSagittalFlat5v7kUp","accSagittalSharp","accSagittalFlat","accSagittalSharp5v7kUp","accSagittalFlat5v7kDown","accSagittalSharp5CUp","accSagittalFlat5CDown","accSagittalSharp7CUp","accSagittalFlat7CDown","accSagittalSharp25SUp","accSagittalFlat25SDown","accSagittalSharp35MUp","accSagittalFlat35MDown","accSagittalSharp11MUp","accSagittalFlat11MDown","accSagittalSharp11LUp","accSagittalFlat11LDown","accSagittalSharp35LUp","accSagittalFlat35LDown","accSagittalDoubleSharp25SDown","accSagittalDoubleFlat25SUp","accSagittalDoubleSharp7CDown","accSagittalDoubleFlat7CUp","accSagittalDoubleSharp5CDown","accSagittalDoubleFlat5CUp","accSagittalDoubleSharp5v7kDown","accSagittalDoubleFlat5v7kUp","accSagittalDoubleSharp","accSagittalDoubleFlat","accSagittal7v11KleismaUp","accSagittal7v11KleismaDown","accSagittal17CommaUp","accSagittal17CommaDown","accSagittal55CommaUp","accSagittal55CommaDown","accSagittal7v11CommaUp","accSagittal7v11CommaDown","accSagittal5v11SmallDiesisUp","accSagittal5v11SmallDiesisDown","accSagittalSharp5v11SDown","accSagittalFlat5v11SUp","accSagittalSharp7v11CDown","accSagittalFlat7v11CUp","accSagittalSharp55CDown","accSagittalFlat55CUp","accSagittalSharp17CDown","accSagittalFlat17CUp","accSagittalSharp7v11kDown","accSagittalFlat7v11kUp","accSagittalSharp7v11kUp","accSagittalFlat7v11kDown","accSagittalSharp17CUp","accSagittalFlat17CDown","accSagittalSharp55CUp","accSagittalFlat55CDown","accSagittalSharp7v11CUp","accSagittalFlat7v11CDown","accSagittalSharp5v11SUp","accSagittalFlat5v11SDown","accSagittalDoubleSharp5v11SDown","accSagittalDoubleFlat5v11SUp","accSagittalDoubleSharp7v11CDown","accSagittalDoubleFlat7v11CUp","accSagittalDoubleSharp55CDown","accSagittalDoubleFlat55CUp","accSagittalDoubleSharp17CDown","accSagittalDoubleFlat17CUp","accSagittalDoubleSharp7v11kDown","accSagittalDoubleFlat7v11kUp","accSagittal23CommaUp","accSagittal23CommaDown","accSagittal5v19CommaUp","accSagittal5v19CommaDown","accSagittal5v23SmallDiesisUp","accSagittal5v23SmallDiesisDown","accSagittalSharp5v23SDown","accSagittalFlat5v23SUp","accSagittalSharp5v19CDown","accSagittalFlat5v19CUp","accSagittalSharp23CDown","accSagittalFlat23CUp","accSagittalSharp23CUp","accSagittalFlat23CDown","accSagittalSharp5v19CUp","accSagittalFlat5v19CDown","accSagittalSharp5v23SUp","accSagittalFlat5v23SDown","accSagittalDoubleSharp5v23SDown","accSagittalDoubleFlat5v23SUp","accSagittalDoubleSharp5v19CDown","accSagittalDoubleFlat5v19CUp","accSagittalDoubleSharp23CDown","accSagittalDoubleFlat23CUp","accSagittal19SchismaUp","accSagittal19SchismaDown","accSagittal17KleismaUp","accSagittal17KleismaDown","accSagittal143CommaUp","accSagittal143CommaDown","accSagittal11v49CommaUp","accSagittal11v49CommaDown","accSagittal19CommaUp","accSagittal19CommaDown","accSagittal7v19CommaUp","accSagittal7v19CommaDown","accSagittal49SmallDiesisUp","accSagittal49SmallDiesisDown","accSagittal23SmallDiesisUp","accSagittal23SmallDiesisDown","accSagittal5v13MediumDiesisUp","accSagittal5v13MediumDiesisDown","accSagittal11v19MediumDiesisUp","accSagittal11v19MediumDiesisDown","accSagittal49MediumDiesisUp","accSagittal49MediumDiesisDown","accSagittal5v49MediumDiesisUp","accSagittal5v49MediumDiesisDown","accSagittal49LargeDiesisUp","accSagittal49LargeDiesisDown","accSagittal11v19LargeDiesisUp","accSagittal11v19LargeDiesisDown","accSagittal5v13LargeDiesisUp","accSagittal5v13LargeDiesisDown","accSagittalSharp23SDown","accSagittalFlat23SUp","accSagittalSharp49SDown","accSagittalFlat49SUp","accSagittalSharp7v19CDown","accSagittalFlat7v19CUp","accSagittalSharp19CDown","accSagittalFlat19CUp","accSagittalSharp11v49CDown","accSagittalFlat11v49CUp","accSagittalSharp143CDown","accSagittalFlat143CUp","accSagittalSharp17kDown","accSagittalFlat17kUp","accSagittalSharp19sDown","accSagittalFlat19sUp","accSagittalSharp19sUp","accSagittalFlat19sDown","accSagittalSharp17kUp","accSagittalFlat17kDown","accSagittalSharp143CUp","accSagittalFlat143CDown","accSagittalSharp11v49CUp","accSagittalFlat11v49CDown","accSagittalSharp19CUp","accSagittalFlat19CDown","accSagittalSharp7v19CUp","accSagittalFlat7v19CDown","accSagittalSharp49SUp","accSagittalFlat49SDown","accSagittalSharp23SUp","accSagittalFlat23SDown","accSagittalSharp5v13MUp","accSagittalFlat5v13MDown","accSagittalSharp11v19MUp","accSagittalFlat11v19MDown","accSagittalSharp49MUp","accSagittalFlat49MDown","accSagittalSharp5v49MUp","accSagittalFlat5v49MDown","accSagittalSharp49LUp","accSagittalFlat49LDown","accSagittalSharp11v19LUp","accSagittalFlat11v19LDown","accSagittalSharp5v13LUp","accSagittalFlat5v13LDown","accSagittalDoubleSharp23SDown","accSagittalDoubleFlat23SUp","accSagittalDoubleSharp49SDown","accSagittalDoubleFlat49SUp","accSagittalDoubleSharp7v19CDown","accSagittalDoubleFlat7v19CUp","accSagittalDoubleSharp19CDown","accSagittalDoubleFlat19CUp","accSagittalDoubleSharp11v49CDown","accSagittalDoubleFlat11v49CUp","accSagittalDoubleSharp143CDown","accSagittalDoubleFlat143CUp","accSagittalDoubleSharp17kDown","accSagittalDoubleFlat17kUp","accSagittalDoubleSharp19sDown","accSagittalDoubleFlat19sUp","accSagittalShaftUp","accSagittalShaftDown","accSagittalAcute","accSagittalGrave","accSagittal1MinaUp","accSagittal1MinaDown","accSagittal2MinasUp","accSagittal2MinasDown","accSagittal1TinaUp","accSagittal1TinaDown","accSagittal2TinasUp","accSagittal2TinasDown","accSagittal3TinasUp","accSagittal3TinasDown","accSagittal4TinasUp","accSagittal4TinasDown","accSagittal5TinasUp","accSagittal5TinasDown","accSagittal6TinasUp","accSagittal6TinasDown","accSagittal7TinasUp","accSagittal7TinasDown","accSagittal8TinasUp","accSagittal8TinasDown","accSagittal9TinasUp","accSagittal9TinasDown","accSagittalFractionalTinaUp","accSagittalFractionalTinaDown","accidentalNarrowReversedFlat","accidentalNarrowReversedFlatAndFlat","accidentalWilsonPlus","accidentalWilsonMinus","articulations","between_lines","av","aboveCode","belowCode","ao","ah","am","ornaments","mordent","mordent_inverted","turn","turn_inverted","tr","upprall","downprall","prallup","pralldown","upmordent","downmordent","lineprall","prallprall","scoop","doit","fall","doitLong","fallLong","bend","plungerClosed","plungerOpen","flip","jazzTurn","smear","Tables","MUSIC_FONT_STACK","clef","keyOctaveGlyph","params","options","octave_shift","duration","sanitizeDuration","pieces","toUpperCase","clefProperties","stroke","int_value","customNoteHeadProps","glyphName","codeNoteHead","displaced","integer","noteValue","fret","scale","glyph","shift_y","glyphMetrics","Glyph","TABLATURE_FONT_SCALE","textWidth","getWidth","artic","spec","keySpec","notes","acc_list","durationNumber","durationToFraction","ticks","durationCodes","glyphTypeProperties","code_head","common","NOTATION_FONT_SCALE","SOFTMAX_FACTOR","STEM_WIDTH","STEM_HEIGHT","STAVE_LINE_THICKNESS","RENDER_PRECISION_PLACES","SLASH_NOTEHEAD_WIDTH","STAVE_LINE_DISTANCE","TEXT_HEIGHT_OFFSET_HACK","accidentalMap","accidentalColumnsTable","second_on_bottom","spaced_out_tetrachord","spaced_out_pentachord","very_spaced_out_pentachord","spaced_out_hexachord","very_spaced_out_hexachord","unicode","sharp","String","fromCharCode","flat","natural","triangle","degrees","circle","validTypes","m","ci","cx","sf","sb","sq","tu","td","TIME4_4","num_beats","beat_value","stem","stem_offset","flag","stem_up_extension","stem_down_extension","tabnote_stem_up_extension","tabnote_stem_down_extension","dot_shiftY","line_above","line_below","position","leger_code_head","beam_count","stem_beam_extension","code_flag_upstem","code_flag_downstem","OutlineCode","ModifierPosition","GlyphCacheEntry","fontStack","point","loadMetrics","bbox","getOutlineBoundingBox","outline","x_shift","y_shift","lookupFontMetric","GlyphOutline","originX","originY","precision","round","nextX","nextY","parts","MOVE","LINE","QUADRATIC","BEZIER","topGlyphs","botGlyphs","originShift","setOptions","reset","lookupGlyph","x_min","x_max","ha","cached_outline","ctx","x_pos","y_pos","cache","lookup","customScale","renderOutline","go","beginPath","moveTo","lineTo","quadraticCurveTo","bezierCurveTo","fill","bboxComp","penX","penY","getCode","setPoint","setStave","stave","getXShift","setXShift","getYshift","setYShift","checkMetrics","metricsScale","setOriginX","xShift","setOriginY","yShift","setOrigin","render","xPos","yPos","checkStave","renderToStave","getYForGlyphs","Map","entries","CURRENT_CACHE_KEY","entry","Modifier","text_line","Position","LEFT","spacingFromNextModifier","PositionString","center","CENTER","above","ABOVE","below","BELOW","left","right","RIGHT","setWidth","getNote","note","checkAttachedNote","setNote","getIndex","checkIndex","setIndex","getModifierContext","modifierContext","checkModifierContext","setModifierContext","getPosition","setPosition","setTextLine","setSpacingFromNextModifier","getSpacingFromNextModifier","alignSubNotesWithNote","subNotes","tickContext","getTickContext","getStave","subNoteXOffset","modLeftPx","modRightPx","subNote","subTickContext","setXOffset","Music","NUM_TONES","canonical_notes","roots","root_values","root_indices","diatonic_intervals","diatonic_accidentals","unison","m2","M2","m3","M3","p4","dim5","p5","m6","M6","b7","M7","intervals","b2","min2","S","H","maj2","T","W","b3","min3","maj3","b5","aug4","b6","aug5","maj6","m7","min7","dom7","maj7","scales","major","minor","ionian","dorian","phyrgian","lydian","mixolydian","aeolian","locrian","scaleTypes","M","noteValues","root_index","cn","cb","cbb","dn","dbb","en","eb","ebb","fn","fb","fbb","gn","gb","gbb","an","ab","abb","bn","bbb","isValidNoteValue","isValidIntervalValue","interval","getNoteParts","noteString","match","exec","getKeyParts","keyString","getNoteValue","getIntervalValue","intervalString","getCanonicalNoteName","getCanonicalIntervalName","intervalValue","getRelativeNoteValue","direction","sum","getRelativeNoteName","rootValue","multiplier","reverse_interval","relativeNoteName","getScaleTones","tones","nextNote","getIntervalBetween","note1","note2","difference","createScaleMap","keySignature","keySigParts","scaleName","keySigString","noteLocation","scaleMap","rootName","noteName","L","DEBUG","render_options","font_scale","parenLeftPadding","parenRightPadding","accidentalCodes","cautionary","state","musicFont","currentMusicFont","noteheadAccidentalPadding","leftShift","left_shift","accidentalSpacing","additionalPadding","accList","prevNote","shiftL","props","getKeyProps","getLeftDisplacedHeadPx","lineSpace","getSpacingBetweenLines","getYForLine","accLine","sort","lineList","previousLine","accShift","flatLine","dblSharpLine","numAcc","column","totalColumns","noFurtherConflicts","groupStart","groupEnd","checkCollision","getGroupLine","getGroupLines","indexes","lineDifference","indexA","indexB","item","notColliding","indexPairs","every","line1","line2","groupLength","groupMember","endCase","patternLength","collisionDetected","columnWidths","columnXOffsets","totalShift","accCount","lastAccOnLine","clearance","clearanceRequired","collision","voices","tickPositions","tickNoteMap","voice","tickPosition","getTickables","shouldIgnoreTicks","notesAtPosition","getTicks","music","scaleMapKey","tickPos","tickables","modifiedPitches","processNote","isRest","staveNote","keyIndex","accidentalString","pitch","sameAccidental","previouslyModified","indexOf","getModifiers","modifier","splice","addModifier","getGraceNotes","fontScale","parenLeft","parenRight","parenWidth","setAsCautionary","start","getModifierStartXY","accX","accY","Stem","stem_up_y_offset","stem_down_y_offset","stem_up_y_base_offset","stem_down_y_base_offset","x_begin","x_end","y_top","y_bottom","stem_extension","stem_direction","hide","isStemlet","stemletHeight","renderHeightAdjustment","UP","DOWN","WIDTH","HEIGHT","setNoteHeadXBounds","setDirection","setExtension","ext","getExtension","setYBounds","getHeight","y_offset","getExtents","isStemUp","ys","stemHeight","innerMostNoteheadY","min","outerMostNoteheadY","topY","baseY","setVisibility","isVisible","setStemlet","adjustHeightForFlag","adjustHeightForBeam","stem_x","stem_y","y_base_offset","stemletYOffset","openGroup","pointerBBox","closeGroup","TextFormatter","textWidthCache","formatterInfo","serifs","monospaced","italic","bold","superscriptOffset","subscriptOffset","maxSizeGlyph","cacheKey","updateParams","registeredFonts","requestedFont","candidates","requestedFamilies","requestedFamily","startsWith","formatter","values","isBold","isItalic","perfectMatch","find","partialMatch","fontSizeInPt","overwrite","updateCacheKey","BOLD","getGlyphMetrics","character","maxHeight","getWidthForCharacterInEm","advanceWidth","getWidthForTextInEm","cachedWidths","getWidthForTextInPx","AnnotationHorizontalJustify","AnnotationVerticalJustify","horizontalJustification","verticalJustification","TOP","minAnnotationPadding","annotations","leftWidth","rightWidth","maxLeftGlyphWidth","maxRightGlyphWidth","annotation","textFormatter","create","verticalSpaceNeeded","glyphWidth","getGlyph","stemDirection","hasStem","getStemDirection","lines","draw_stem","getStem","getNoteType","getNumLines","VerticalJustify","noteLine","getLineNumber","leastString","top_text_line","BOTTOM","greatestString","curBottom","rightOverlap","right_shift","leftOverlap","setVerticalJustification","just","VerticalJustifyString","getJustification","setJustification","HorizontalJustifyString","text_width","measureText","text_height","getStemX","stem_ext","spacing","has_stem","checkStem","getYs","reduce","yt","getYForTopText","getYForBottomText","getTopLineTopY","extents","getStemExtents","fillText","HorizontalJustify","centerStem","CENTER_STEM","top","bottom","roundToNearestHalf","mathFn","isWithinLines","getRoundingFunction","ceil","isStaveOrGraceNote","Articulation","maxGlyphWidth","getIncrement","articulation","increment","curTop","maxWidth","articWidth","overlap","builder","articNameToCode","staccato","tenuto","accent","articString","getFactory","articulationCodes","textLine","canSitBetweenLines","staffSpace","isTab","shouldSitOutsideStaff","initialOffset","isOnStemTip","getInitialOffset","padding","stemTipY","stemBaseY","getTopY","INITIAL_OFFSET","getBottomY","offsetDirection","articLine","snappedLine","snapLineToStaff","setRawFont","drawDot","color","arc","closePath","Tickable","_preFormatted","_postFormatted","intrinsicTicks","tickMultiplier","modifiers","tupletStack","align_center","center_x_shift","ignore_ticks","formatterMetrics","freedom","iterations","space","used","mean","deviation","setIgnoreTicks","checkTickContext","getFormatterMetrics","getCenterXShift","isCenterAligned","setCenterXShift","centerXShift","setCenterAlignment","getVoice","setVoice","getTuplet","tuplet","getTupletStack","resetTuplet","noteCount","notesOccupied","getNoteCount","getNotesOccupied","applyTickMultiplier","pop","setTuplet","addToModifierContext","mc","addMember","setTickContext","tc","preFormat","preFormatted","postFormat","postFormatted","getIntrinsicTicks","setIntrinsicTicks","getTickMultiplier","setDuration","getAbsoluteX","noteStruct","parsedNoteStruct","parseNoteStruct","JSON","stringify","keyProps","noteType","customTypes","duration_override","getGlyphProps","customGlyphs","playNote","leftDisplacedHeadPx","rightDisplacedHeadPx","annotation_spacing","glyph_font_scale","stroke_px","xStart","xPre1","xAbs","xPost1","notePx","xPost2","xEnd","xFreedomRight","xWidth","yy","spaceDeviation","durationString","dots","durationProps","parseDuration","durationToTicks","currentTicks","getPlayNote","setPlayNote","addStroke","setYs","getRightDisplacedHeadPx","setLeftDisplacedHeadPx","setRightDisplacedHeadPx","isTopNote","getLineForRest","getGlyphWidth","getDuration","isDotted","getModifiersByType","getBeam","beam","checkBeam","hasBeam","setBeam","signature","filter","getRightParenthesisPx","getLeftParenthesisPx","getFirstDotPx","getMembers","getState","glyphPx","getNoteStartX","getTieRightX","tieStartX","getTieLeftX","tieEndX","getKeys","StaveModifierPosition","BarlineType","ChordSymbolHorizontalJustify","ChordSymbolVerticalJustify","SymbolTypes","SymbolModifiers","StaveModifier","placeGlyphOnLine","customShift","getPadding","setPadding","setLayoutMetrics","layoutMetrics","getLayoutMetrics","thickness","TYPE","widths","SINGLE","DOUBLE","END","REPEAT_BEGIN","REPEAT_END","REPEAT_BOTH","NONE","paddings","layoutMetricsMap","xMin","xMax","paddingLeft","paddingRight","BEGIN","setType","typeString","single","double","end","repeatBegin","repeatEnd","repeatBoth","none","getType","drawVerticalBar","drawVerticalEndBar","drawRepeatBar","double_bar","staveCtx","botY","getBottomLineBottomY","fillRect","begin","dot_x","dot_radius","dot_y","BarNote","barline","Bend","release","phrase","tap","line_width","line_style","bend_width","release_width","updateWidth","bends","last_width","stringPos","setTap","getText","getTextHeight","totalWidth","additional_width","draw_width","lowestY","bend_height","annotation_y","renderBend","cp_x","cp_y","renderRelease","renderArrowHead","yBase","renderText","render_x","last_bend","last_bend_draw_width","last_drawn_width","ChordSymbol","symbolBlocks","horizontal","vertical","useKerning","reportWidth","superSubRatio","global","NO_TEXT_FORMAT","val","noFormat","glyphCode","engravingFontResolution","spacingBetweenBlocks","metric","getMetricForGlyph","yOffset","leftSideBearing","kerningOffset","chordSymbol","lowerKerningText","upperKerningText","symbolModifier","SUPERSCRIPT","SUBSCRIPT","minPadding","symbols","nonSuperWidth","symbol","fontAdj","scaleSize","glyphAdj","symbolWidth","lineSpaces","vAlign","j","sup","isSuperscript","sub","isSubscript","superSubScale","adj","symbolType","GLYPH","superSubFontSize","getWidthForGlyph","getYShiftForGlyph","getXShiftForGlyph","TEXT","getYOffsetForText","over","prev","setEnableKerning","updateKerningAdjustments","updateOverBarAdjustments","getVertical","getReportWidth","getHorizontal","setReportWidth","barIndex","findIndex","xoff","yoff","symIndex","accum","getKerningAdjustment","currSymbol","prevSymbol","adjustment","preKernUpper","preKernLower","some","xx","kerningOffsetPixels","getSymbolBlock","_c","symbolBlock","glyphArgs","glyphPoints","addSymbolBlock","parameters","addText","addTextSuperscript","addTextSubscript","addGlyphSuperscript","addGlyph","addGlyphOrText","char","addLine","setVertical","vj","setHorizontal","hj","yMax","y_max","stem_base","isSuper","isSub","curY","smallerFontSize","diminished","dim","halfDiminished","augmented","majorSeventh","leftParen","rightParen","leftBracket","rightBracket","leftParenTall","rightParenTall","symbolTypes","symbolModifiers","radius","all","dot","setDotShiftY","dot_list","max_shift_map","note_id","dot_shift","x_width","last_line","last_note","prev_dotted_space","half_shiftY","forceFlagRight","FretHandFinger","finger","x_offset","nums","nums_list","prev_note","shiftLeft","shiftRight","pos","textHeight","shiftR","numShiftL","numShiftR","xWidthL","xWidthR","lastLine","lastNote","num_shift","numWidth","fingerings","fingeringString","number","Fingering","fingering","setFretHandFinger","getFretHandFinger","setOffsetX","setOffsetY","NoteHead","custom_glyph","stem_up_x_offset","stem_down_x_offset","note_type","glyph_code","custom_glyph_code","slashed","isDisplaced","getLine","setLine","displacementStemAdjustment","fontShift","displacedFontShift","half_spacing","min_y","getYForNote","head_x","categorySuffix","staveSpace","durationToNumber","breve_lines","drawSlashNoteHead","renderGlyph","setStem","buildStem","buildFlag","hasFlag","flagCode","getBaseCustomNoteHeadGlyph","getStemLength","getStemExtension","getBeamCount","getStemMinimumLength","setStemDirection","offsets","offsetYBaseStemUp","offsetYTopStemUp","offsetYBaseStemDown","offsetYTopStemDown","getCenterGlyphX","stem_extension_override","setStemLength","drawStem","stemOptions","shiftRestVertical","dir","delta","maxLine","minLine","setKeyLine","getKeyLine","sortedKeyProps","ledgerLineStyle","use_default_head_x","_noteHeads","LEDGER_LINE_OFFSET","calculateKeyProps","auto_stem","autoStem","STEM_UP","STEM_DOWN","minNoteheadPadding","notesList","minL","stemMax","stemMin","maxL","isrest","voice_shift","getVoiceShiftWidth","is_displaced","noteU","noteM","noteL","voiceXShift","lineSpacing","lineDiff","whiteNoteHeadCount","blackNoteHeadCount","centerRest","noteHeadStyles","noteHead","buildNoteHeads","noteHeadStyle","head","calcNoteDisplacements","noteProps","notehead","calculateOptimalStemDirection","keyProperties","minY","maxY","halfLineSpacing","frac","resultLine","thisLine","isChord","getNoteHeadBounds","setNoteDisplaced","getRightShift","restLine","isInnerNoteIndex","setStemStyle","getStemStyle","setLedgerLineStyle","getLedgerLineStyle","setFlagStyle","getFlagStyle","setKeyStyle","noteHeadPadding","shouldDrawFlag","nonDisplacedX","displacedX","highestDisplacedLine","lowestDisplacedLine","yTop","Infinity","yBottom","highestLine","lowestLine","highestNonDisplacedLine","lowestNonDisplacedLine","displaced_x","non_displaced_x","highest_line","lowest_line","highest_displaced_line","lowest_displaced_line","highest_non_displaced_line","lowest_non_displaced_line","getNoteHeadBeginX","getNoteHeadEndX","noteHeads","note_heads","drawLedgerLines","doubleWidth","min_x","drawLedgerLine","normal","ledgerWidth","getDefaultLedgerLineStyle","drawModifiers","noteheadParam","noteheadStyle","hasNoBeam","drawFlag","_d","_e","noteStemHeight","flagX","flagY","getStaveNoteScale","drawNoteHeads","super_stem_extension","mid_line_distance","lines_over_octave_from_mid_line","spacing_between_lines","xBegin","shouldRenderStem","stemX","StaveTie","setNotes","cp1","cp2","text_shift_x","first_x_shift","last_x_shift","tie_spacing","first_note","first_indices","last_indices","isPartial","renderTie","first_ys","last_ys","last_x_px","first_x_px","first_y_px","last_y_px","top_cp_y","bottom_cp_y","center_x","getNotes","getTieStartX","getTieEndX","TabTie","VoiceMode","Voice","time","voiceTime","resolutionMultiplier","mode","STRICT","ticksUsed","largestTickWidth","softmaxFactor","totalTicks","smallestTickCount","Mode","getTotalTicks","getTicksUsed","getLargestTickWidth","getSmallestTickCount","getMode","setMode","getResolutionMultiplier","getActualResolution","tickable","setStrict","strict","SOFT","isComplete","FULL","setSoftmaxFactor","factor","reCalculateExpTicksUsed","expTicksUsed","softmax","tickValue","v","exp","addTickable","addTickables","grace_notes","show_slur","slur","slur_y_shift","beams","gracenote_groups","group_list","gracenote_group","is_stavenote","formatWidth","group_shift","Formatter","joinVoices","format","getMinTotalWidth","beamNotes","Beam","beam_width","partial_beam_length","graceNote","TieClass","NoteSubGroup","groups","group","TickContext","tickID","currentTick","maxTicks","maxTickable","minTicks","minTickable","xBase","xOffset","tickablesByVoice","totalLeftPx","totalRightPx","tContexts","tContext","contexts","getTickID","getXBase","setXBase","getXOffset","getMaxTicks","getMinTicks","getMaxTickable","getMinTickable","getTickableForVoice","voiceIndex","getTickablesByVoice","getCenterAlignedTickables","getCurrentTick","setCurrentTick","tick","Ornament","delayed","accidentalLowerPadding","accidentalUpperPadding","ornament","ornamentCodes","adjustForStemDirection","reportedWidth","stemUpYOffset","ornamentAlignWithNoteHead","ornamentNoteTransition","ornamentRelease","ornamentAttack","ornamentArticulation","jazzOrnaments","setDelayed","setUpperAccidental","accid","accidentalUpper","setLowerAccidental","accidentalLower","stemDir","stemExtents","isPlacedOnNoteheadSide","glyphYBetweenLines","glyphX","glyphY","delayXShift","startX","nextContext","getNextContext","Parenthesis","parentheses","x_widthL","x_widthR","parenthesis","isHTMLCanvas","HTMLCanvasElement","toDataURL","isHTMLDiv","HTMLDivElement","appendChild","CanvasContext","context2D","canvas","CANVAS_BROWSER_SIZE_LIMIT","limit","clearRect","cls","setBackgroundFillStyle","blur","getTransform","setLineCap","capType","lineCap","setLineDash","dash","resize","devicePixelRatio","sanitizeCanvasDims","rect","cp1x","cp1y","cp2x","cp2y","cpx","cpy","startAngle","endAngle","counterclockwise","fontBoundingBoxAscent","fontBoundingBoxDescent","actualBoundingBoxAscent","actualBoundingBoxDescent","ATTRIBUTES_TO_IGNORE","path","SVG_NS","TWO_PI","SVGContext","backgroundFillStyle","fontCSSString","svg","parent","pen","defaultFontAttributes","attributes","shadow_attributes","state_stack","svgElementType","createElementNS","lineDash","applyAttributes","visibleWidth","visibleHeight","setViewBox","viewBox_or_minX","viewBoxString","attrNamesToIgnore","nodeName","attrName","setAttributeNS","lastChild","removeChild","rectangle","x0","cos","y0","sin","tmpStartTest","tmpEndTest","large","sweep","getShadowStyle","sa","measureTextCache","txt","textContent","savedState","fontAttributes","RendererBackends","RendererLineEndType","TextJustification","VoltaType","measureImpl","getBBox","Renderer","arg0","arg1","backend","maybeElement","Backends","CANVAS","SVG","elementId","background","renderer","lastContext","buildContext","fromX","fromY","toX","toY","dashPattern","dx","dy","angle","atan2","idx","dashLength","nx","ny","LineEndType","StringNumber","string_number","dashed","leg","drawCircle","stringNumber","shift_left","glyphLine","num_shiftR","num_width","setLineEndType","setStringNumber","setLastNote","setDashed","setDrawCircle","stemPadding","verticalPadding","leftPadding","rightPadding","len","pattern","drawDashedLine","Stroke","all_voices","strokes","strokeList","string","getPositions","strokeShift","addEndNote","note_end","line_space","arrow","arrow_shift_x","arrow_y","text_y","Type","BRUSH_DOWN","BRUSH_UP","ROLL_DOWN","RASQUEDO_DOWN","ROLL_UP","RASQUEDO_UP","ARPEGGIO_DIRECTIONLESS","strokeLine","Vibrato","harsh","vibrato_width","wave_height","wave_width","wave_girth","setVibratoWidth","vibratos","vibrato","setHarsh","vx","vy","renderVibrato","opts","num_waves","ModifierContext","members","formatted","member","getLeftShift","Clef","types","tab","attachment","numLines","shiftY","KeySignature","cancelKeySpec","alterKeySpec","setKeySig","glyphFontScale","xPositions","paddingForced","convertToGlyph","nextAcc","accGlyphData","extraWidth","xPosition","cancelKey","convertToCancelAccList","cancel_accList","different_types","naturals","cancelled","concat","addToStave","convertAccLines","customLines","offset","alterKey","convertToAlterAccList","firstAccidentalType","cancelAccList","getEndClef","getClef","Repetition","symbol_type","setShiftX","setShiftY","CODA_RIGHT","drawCodaFixed","CODA_LEFT","drawSymbolText","SEGNO_LEFT","drawSignoFixed","SEGNO_RIGHT","DC","DC_AL_CODA","DC_AL_FINE","DS","DS_AL_CODA","DS_AL_FINE","FINE","TO_CODA","draw_coda","text_x","symbol_x","modifierWidth","getVerticalBarWidth","StaveSection","section","drawRect","shift_x","setStaveSection","textMeasurements","StaveTempo","tempo","setTempo","bpm","stem_height","TextNote","superscript","subscript","smooth","justification","struct","GLYPHS","segno","mordent_upper","mordent_lower","p","z","coda","pedal_open","pedal_close","caesura_straight","caesura_curved","breath","Justification","StaveText","setStaveText","setText","getBottomLineY","Volta","volta","top_y","vert_height","BEGIN_END","TimeSignatureGlyph","timeSignature","topDigits","botDigits","topWidth","timeSigType","topGlyph","botWidth","botGlyph","topStartX","botStartX","start_x","topLine","bottomLine","TimeSignature","timeSpec","customPadding","validate_args","fontLineShift","parseTimeSpec","numbers","test","assertIsValidTimeSig","makeTimeSignatureGlyph","getInfo","setTimeSig","SORT_ORDER_BEG_MODIFIERS","SORT_ORDER_END_MODIFIERS","Stave","end_x","measure","endClef","vertical_bar_width","num_lines","fill_style","left_bar","right_bar","spacing_between_lines_px","space_above_staff_ln","space_below_staff_ln","top_text_position","bottom_text_position","line_config","bounds","defaultLedgerLineStyle","resetLines","addEndModifier","defaultPadding","setDefaultLedgerLineStyle","visible","setNoteStartX","getNoteEndX","setNumLines","mod","setMeasure","getMeasure","getModifierXShift","begBarline","setRepetitionType","setVoltaType","number_t","setSection","staveSection","headroom","getLineForY","setBegBarType","setEndBarType","setClef","clefSpec","addClef","setEndClef","setKeySignature","addKeySignature","setEndKeySignature","setTimeSignature","timeSignatures","addTimeSignature","setEndTimeSignature","addEndClef","addEndTimeSignature","addTrebleGlyph","noPosition","noCategory","sortByCategory","items","order","temp","endBarline","begModifiers","endModifiers","lastBarlineIdx","getConfigForLines","setConfigForLine","line_number","setConfigForLines","lines_configuration","staves","maxX","drawBoldDoubleLine","topX","StaveConnector","BOLD_DOUBLE_LEFT","BOLD_DOUBLE_RIGHT","variableWidth","top_stave","bottom_stave","texts","newType","content","SINGLE_RIGHT","THIN_DOUBLE","attachment_height","SINGLE_LEFT","BRACE","x3","y3","cpx1","cpy1","cpx2","cpy2","cpx3","cpy3","cpx4","cpy4","cpx5","cpy5","cpx6","cpy6","cpx7","cpy7","cpx8","cpy8","BRACKET","singleRight","singleLeft","brace","bracket","boldDoubleLeft","boldDoubleRight","thinDouble","sumArray","arr","getRestLineForNextNoteGroup","currRestLine","currNoteIndex","nextRestLine","noteIndex","formatterOptions","globalSoftmax","maxIterations","justifyWidth","totalCost","durationStats","minTotalWidth","hasMinTotalWidth","tickContexts","array","list","modifierContexts","contextGaps","total","gaps","lossHistory","paddingBetween","accumulator","stavePadding","gap","toFixed","auto_beam","align_rests","applyAndGetBeams","formatToStave","tabstave","tabnotes","autobeam","notevoice","tabvoice","alignAllNotes","alignTuplets","currTickable","prevTickable","alignRests","AlignRestsToNotes","preCalculateMinTotalWidth","unalignedPadding","unalignedCtxCount","wsum","dsum","createTickContexts","contextList","contextMap","wavg","wvar","ll","wpads","davg","dvar","dpads","padmax","unalignedPad","createModifierContexts","tickToContextMap","integerTicks","staveTickToContextMap","newContext","makeContext","addToContext","tickList","createContexts","contextArray","getTickContexts","renderingContext","voicesParam","evaluate","firstContext","calculateIdealDistances","adjustedJustifyWidth","backTickable","prevContext","backVoices","matchingVoices","maxNegativeShiftPx","expectedDistance","thisTickable","insideLeftEdge","backMetrics","insideRightEdge","fromTickable","fromTickablePx","shiftToIdealDistances","idealDistances","centerX","spaceAccum","contextX","ideal","errorPx","negativeShiftPx","configMinPadding","configMaxPadding","targetWidth","distances","actualWidth","minDistance","mdCalc","di","calcMinDistance","paddingMaxCalc","curTargetWidth","lastTickablePadding","lastTickable","tickWidth","paddingMax","paddingMin","prevTick","prevMetrics","currMetrics","leftNoteEdge","rightNote","rightMetrics","stats","count","updateStats","totalDeviation","tune","alpha","current","cost","optionsParam","TupletLocation","Tuplet","numerator_glyphs","denom_glyphs","num_notes","beats_occupied","beatsOccupiedDeprecationWarning","notes_occupied","bracketed","ratioed","setTupletLocation","location","LOCATION_TOP","resolveGlyphs","attach","LOCATION_BOTTOM","NESTING_OFFSET","detach","setBracketed","setRatioed","getBeatsOccupied","setBeatsOccupied","beats","setNotesOccupied","unshift","getNestedTupletCount","maxTupletCount","countTuplets","minTupletCount","tupletCount","getYPosition","nested_tuplet_y_offset","topModifierOffset","modLines","modY","noteHeadOffset","stemOffset","lineCheck","nn","bottom_y","addGlyphWidth","notation_start_x","colon_x","colon_radius","calculateStemDirection","lineSum","keyProp","BEAM_LEFT","BEAM_RIGHT","BEAM_BOTH","slope","forcedPartialDirections","stem_weight","memo","break_on_indices","max_slope","min_slope","slope_iterations","slope_cost","show_stemlets","stemlet_extension","flat_beams","min_flat_beam_offset","time_sig","beatTotal","beatValue","generateBeams","config","tickGroups","unprocessedNotes","currentTickGroup","noteGroups","currentGroup","nextTickGroup","nextGroup","currentGroupTotalTicks","unprocessedNote","ticksPerGroup","vf_notes","unbeamable","createGroups","sanitizedGroups","tempGroup","isFirstOrLast","breaksOnEachRest","beam_rests","breaksOnFirstOrLastRest","beam_middle_only","breakOnStemChange","maintain_stem_directions","prevDirection","isUnbeamableDuration","sanitizeGroups","findFirstNote","applyStemDirection","beamedNoteGroups","beamable","allTuplets","uniqueTuplets","noteTuplet","getTuplets","secondary_breaks","secondary_break_ticks","flat_beam_offset","beamCount","breakSecondaryAt","indices","setPartialBeamSideAt","side","unsetPartialBeamSideAt","getSlopeY","calculateSlope","firstNote","initialSlope","firstStemTipY","firstStemX","getStemSlope","minCost","MAX_VALUE","bestSlope","totalStemExtension","yShiftTemp","adjustedStemTipY","diff","idealSlope","calculateFlatSlope","extremeY","extremeBeamCount","currentExtreme","extremeTest","newOffset","getBeamYToDraw","beamY","applyStemExtensions","beamedStemTipY","preBeamExtension","beamExtension","totalBeamWidth","lookupBeamDirection","prev_tick","next_tick","forcedBeamDirection","lookup_duration","prev_note_gets_beam","next_note_gets_beam","note_gets_beam","getBeamLines","tick_of_duration","beam_started","beam_lines","current_beam","previous_should_break","tick_tally","should_break","next_note","beam_alone","beam_direction","last_beam","drawStems","drawBeamLines","valid_beam_durations","beamThickness","beamLines","beam_line","startBeamX","startBeamY","lastBeamX","lastBeamY","ClefNote","clef_obj","abs_x","Crescendo","extend_left","extend_right","decrescendo","setHeight","setDecrescendo","decresc","tick_context","next_context","begin_x","half_height","reverse","renderHairpin","CurvePosition","Curve","from","to","NEAR_HEAD","position_end","invert","cps","nearHead","nearTop","NEAR_TOP","renderCurve","first_x","first_y","last_x","last_y","cp0x","cp0y","cp_spacing","end_metric","Parser","flattenMatches","matchedString","results","grammar","errorPos","expect","matchFail","returnPos","matchSuccess","matchToken","token","noSpace","regexp","RegExp","success","incrementPos","expectOne","rule","maybe","allMatches","oneMatch","localPos","or","gotOne","numMatches","expectOneOrMore","more","expectZeroOrMore","ruleFunc","bind","oneOrMore","zeroOrMore","matches","run","EasyScore","EasyScoreGrammar","PIECE","PIECES","EOL","CHORDORNOTE","PARAMS","commitPiece","COMMA","DURATION","DOTS","OPTS","CHORD","SINGLENOTE","LPAREN","NOTES","RPAREN","addChord","NOTE","NOTENAME","ACCIDENTAL","OCTAVE","addSingleNote","MICROTONES","ACCIDENTALS","DOT","setNoteDots","SLASH","MAYBESLASH","TYPES","setNoteType","DURATIONS","setNoteDuration","LBRACKET","KEYVAL","KEYVALS","RBRACKET","KEY","EQUALS","VAL","addNoteOption","SVAL","DVAL","Piece","chord","Builder","commitHooks","elements","rollingDuration","resetPiece","getElements","addCommitHook","commitHook","piece","addNote","standardAccidentals","notePiece","GhostNote","buildAndAttach","setId","commaSeparatedRegex","setClass","defaults","easyScoreHook","throwOnError","parser","ERROR_MSG","parameter","GlyphNote","ignoreTicks","setGlyph","SCALE","slash","ret","staveNoteScale","offsetScale","slashBBox","calcBeamedNotesSlashBBox","noteHeadBounds","defaultStemExtention","defaultOffsetY","slashStemOffset","slashBeamOffset","protrusions","beam_slope","scaleX","beam_angle","atan","iPointOnBeam","slash_angle","protrusion_stem_dx","protrusion_stem_dy","protrusion_beam_dx","protrusion_beam_dy","stem0X","stemY","KeySigNote","semibreve_rest","MultiMeasureRest","number_of_measures","xs","hasPaddingLeft","hasPaddingRight","hasLineThickness","hasSymbolSpacing","padding_left","padding_right","line_thickness","symbol_spacing","use_symbols","show_number","number_line","number_glyph_point","serif_thickness","semibreve_rest_glyph_scale","getXs","drawLine","spacingBetweenLines","lineThicknessHalf","serifThickness","bot","leftIndented","rightIndented","lineTop","lineBottom","drawSymbols","n4","n2","n1","get_semibreve_rest","rest_scale","rest_width","yMiddle","timeSig","drawPedalGlyph","glyph_data","PedalMarking","custom_depress_text","custom_release_text","bracket_height","text_margin_right","bracket_line_width","pedal","MIXED","setCustomText","depress","drawBracketed","prev_x","prev_y","is_pedal_depressed","next_is_same","prev_is_same","drawText","pedal_depress","pedal_release","mixed","CODES","RepeatNote","drawArrowHead","StaveLine","line_dash","rounded_end","draw_start_arrow","draw_end_arrow","arrowhead_length","arrowhead_angle","text_position_vertical","TextVerticalPosition","text_justification","applyLineStyle","applyFontStyle","drawArrowLine","pt1","pt2","both_arrows","distance","ratio","end_y","start_y","line_angle","angle1","angle2","top_x","bottom_x","start_position","end_position","first_index","last_index","upwards_slope","notehead_width","vertical_position","System","spaceBetweenStaves","autoWidth","noJustification","debugFormatter","formatIterations","noPadding","details","formatOptions","addConnector","connector","addStave","staveOptions","spaceAbove","spaceBelow","debugNoteMetrics","options_details","allVoices","allStaves","debugNoteMetricsYs","part","lastY","formatBegModifiers","plotDebugging","plotMetrics","positions","ghost","draw_dots","draw_stem_through_stave","setGhost","tabToGlyph","getStemY","stemDownLine","stemStartLine","flag_x","flag_y","drawStemThrough","stemThrough","stemLines","unused_strings","up_stem","down_stem","line_spacing","total_lines","stem_lines","strings","containsLastString","containsFirstString","line_ys","isTopBound","isBottomBound","getPartialStemLines","strings_used","stem_through","getUnusedStringGroups","drawPositions","tab_x","render_stem","TabStave","addTabGlyph","TextBracket","TextBracketPosition","stop","show_bracket","underline_superscript","Positions","PositionsString","main_measure","main_width","main_height","super_y","super_measure","super_width","super_height","line_y","TextDynamics","sequence","glyph_font_size","total_width","letter","letter_x","current_letter","TimeSigNote","timeSigInfo","VibratoBracket","bracket_data","stop_x","Factory","renderQ","systems","initRenderer","getVoices","ghostNote","textNote","barNote","clefNote","timeSigNote","keySigNote","hJustify","vJustify","kerning","upperAccidental","lowerAccidental","numMeasures","multiMeasureRest","secondaryBeamBreaks","partialBeamDirections","curve","tie","vibratoBracket","textBracket","system","GraceTabNote","KeyManager","setKey","getKey","scaleMapByValue","originalScaleMapByValue","getAccidental","selectNote","scaleNote","modparts","change","valueNote","originalValueNote","StaveHairpin","hairpin","left_shift_px","right_shift_px","right_shift_ticks","left_shift_ticks","ppt","pixelsPerTick","l_shift_px","r_shift_px","hairpin_options","setRenderOptions","dis","staff_height","l_shift","r_shift","CRESC","DECRESC","TabSlide","first_fret","last_fret","SLIDE_UP","SLIDE_DOWN","slide_y","Tremolo","y_spacing_scale","extra_stroke_scale","y_spacing","Tuning","tuningString","tuningValues","setTuning","names","standard","dagdad","dropd","standardBanjo","noteToInteger","getValueForString","stringNum","getValueForFret","fretNum","stringValue","getNoteForFret","integerToNote","Flow","BUILD","VERSION","DATE","fontNames","fontModuleOrPath","hasKeySignature","getKeySignatures","PetalumaScriptFont","y_min","$","I","J","K","N","O","Q","U","V","Y","Z","_","l","generatedOn","RobotoSlabFont","Vex","cmp","eq","newArr","last","canvasSelector","start_time","Date","getTime","fontModules","Bravura","Gonville","Petaluma","Leland","Custom","fetchMusicFont","fontModule","import","VexFlowFont","fontData","registerInfo","description","loadTextFonts"],"sourceRoot":""} \ No newline at end of file diff --git a/build/cjs/vexflow-debug-with-tests.js b/build/cjs/vexflow-debug-with-tests.js new file mode 100644 index 0000000000..3850e7c8e6 --- /dev/null +++ b/build/cjs/vexflow-debug-with-tests.js @@ -0,0 +1,52670 @@ +/*! + * VexFlow 4.1.0-alpha.0 2022-10-10T04:47:38.237Z 847bc9014672858aedc7f8460384f51f98d6bd84 + * Copyright (c) 2010 Mohit Muthanna Cheppudira + * https://www.vexflow.com https://github.com/0xfe/vexflow + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["Vex"] = factory(); + else + root["Vex"] = factory(); +})((typeof window !== 'undefined' ? window : typeof globalThis !== 'undefined' ? globalThis : this), function() { +return /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ "./src/version.ts": +/*!************************!*\ + !*** ./src/version.ts ***! + \************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "VERSION": () => (/* binding */ VERSION), +/* harmony export */ "ID": () => (/* binding */ ID), +/* harmony export */ "DATE": () => (/* binding */ DATE) +/* harmony export */ }); +const VERSION = '4.1.0-alpha.0'; +const ID = '847bc9014672858aedc7f8460384f51f98d6bd84'; +const DATE = '2022-10-10T04:47:38.237Z'; + + +/***/ }), + +/***/ "./src/accidental.ts": +/*!***************************!*\ + !*** ./src/accidental.ts ***! + \***************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Accidental": () => (/* binding */ Accidental) +/* harmony export */ }); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./fraction */ "./src/fraction.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _music__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./music */ "./src/music.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// @author Mohit Cheppudira +// @author Greg Ristow (modifications) + + + + + + + +// eslint-disable-next-line +function L(...args) { + if (Accidental.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_6__.log)('Vex.Flow.Accidental', args); +} +/** + * An `Accidental` inherits from `Modifier`, and is formatted within a + * `ModifierContext`. Accidentals are modifiers that can be attached to + * notes. Support is included for both western and microtonal accidentals. + * + * See `tests/accidental_tests.ts` for usage examples. + */ +class Accidental extends _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier { + /** + * Create accidental. + * @param type value from `Vex.Flow.accidentalCodes.accidentals` table in `tables.ts`. + * For example: `#`, `##`, `b`, `n`, etc. + */ + constructor(type) { + super(); + L('New accidental: ', type); + this.type = type; + this.position = _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier.Position.LEFT; + this.render_options = { + // Font size for glyphs + font_scale: 38, + // Padding between accidental and parentheses on each side + parenLeftPadding: 2, + parenRightPadding: 2, + }; + this.accidental = _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.accidentalCodes(this.type); + (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(this.accidental, 'ArgumentError', `Unknown accidental type: ${type}`); + // Cautionary accidentals have parentheses around them + this.cautionary = false; + this.reset(); + } + /** Accidentals category string. */ + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_5__.Category.Accidental; + } + /** Arrange accidentals inside a ModifierContext. */ + static format(accidentals, state) { + // If there are no accidentals, no need to format their positions. + if (!accidentals || accidentals.length === 0) + return; + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.currentMusicFont(); + const noteheadAccidentalPadding = musicFont.lookupMetric('accidental.noteheadAccidentalPadding'); + const leftShift = state.left_shift + noteheadAccidentalPadding; + const accidentalSpacing = musicFont.lookupMetric('accidental.accidentalSpacing'); + const additionalPadding = musicFont.lookupMetric('accidental.leftPadding'); // padding to the left of all accidentals + const accList = []; + let prevNote = undefined; + let shiftL = 0; + // First determine the accidentals' Y positions from the note.keys + for (let i = 0; i < accidentals.length; ++i) { + const acc = accidentals[i]; + const note = acc.getNote(); + const stave = note.getStave(); + const index = acc.checkIndex(); + const props = note.getKeyProps()[index]; + if (note !== prevNote) { + // Iterate through all notes to get the displaced pixels + for (let n = 0; n < note.keys.length; ++n) { + shiftL = Math.max(note.getLeftDisplacedHeadPx() - note.getXShift(), shiftL); + } + prevNote = note; + } + if (stave) { + const lineSpace = stave.getSpacingBetweenLines(); + const y = stave.getYForLine(props.line); + const accLine = Math.round((y / lineSpace) * 2) / 2; + accList.push({ y, line: accLine, shift: shiftL, acc, lineSpace }); + } + else { + accList.push({ line: props.line, shift: shiftL, acc }); + } + } + // Sort accidentals by line number. + accList.sort((a, b) => b.line - a.line); + // FIXME: Confusing name. Each object in this array has a property called `line`. + // So if this is a list of lines, you end up with: `line.line` which is very awkward. + const lineList = []; + // amount by which all accidentals must be shifted right or left for + // stem flipping, notehead shifting concerns. + let accShift = 0; + let previousLine = undefined; + // Create an array of unique line numbers (lineList) from accList + for (let i = 0; i < accList.length; i++) { + const acc = accList[i]; + // if this is the first line, or a new line, add a lineList + if (previousLine === undefined || previousLine !== acc.line) { + lineList.push({ + line: acc.line, + flatLine: true, + dblSharpLine: true, + numAcc: 0, + width: 0, + column: 0, + }); + } + // if this accidental is not a flat, the accidental needs 3.0 lines lower + // clearance instead of 2.5 lines for b or bb. + // FIXME: Naming could use work. acc.acc is very awkward + if (acc.acc.type !== 'b' && acc.acc.type !== 'bb') { + lineList[lineList.length - 1].flatLine = false; + } + // if this accidental is not a double sharp, the accidental needs 3.0 lines above + if (acc.acc.type !== '##') { + lineList[lineList.length - 1].dblSharpLine = false; + } + // Track how many accidentals are on this line: + lineList[lineList.length - 1].numAcc++; + // Track the total x_offset needed for this line which will be needed + // for formatting lines w/ multiple accidentals: + // width = accidental width + universal spacing between accidentals + lineList[lineList.length - 1].width += acc.acc.getWidth() + accidentalSpacing; + // if this accShift is larger, use it to keep first column accidentals in the same line + accShift = acc.shift > accShift ? acc.shift : accShift; + previousLine = acc.line; + } + // ### Place Accidentals in Columns + // + // Default to a classic triangular layout (middle accidental farthest left), + // but follow exceptions as outlined in G. Read's _Music Notation_ and + // Elaine Gould's _Behind Bars_. + // + // Additionally, this implements different vertical collision rules for + // flats (only need 2.5 lines clearance below) and double sharps (only + // need 2.5 lines of clearance above or below). + // + // Classic layouts and exception patterns are found in the 'tables.js' + // in 'Tables.accidentalColumnsTable' + // + // Beyond 6 vertical accidentals, default to the parallel ascending lines approach, + // using as few columns as possible for the verticle structure. + // + // TODO (?): Allow column to be specified for an accidental at run-time? + let totalColumns = 0; + // establish the boundaries for a group of notes with clashing accidentals: + for (let i = 0; i < lineList.length; i++) { + let noFurtherConflicts = false; + const groupStart = i; + let groupEnd = i; + while (groupEnd + 1 < lineList.length && !noFurtherConflicts) { + // if this note conflicts with the next: + if (this.checkCollision(lineList[groupEnd], lineList[groupEnd + 1])) { + // include the next note in the group: + groupEnd++; + } + else { + noFurtherConflicts = true; + } + } + // Gets an a line from the `lineList`, relative to the current group + const getGroupLine = (index) => lineList[groupStart + index]; + const getGroupLines = (indexes) => indexes.map(getGroupLine); + const lineDifference = (indexA, indexB) => { + const [a, b] = getGroupLines([indexA, indexB]).map((item) => item.line); + return a - b; + }; + const notColliding = (...indexPairs) => indexPairs.map(getGroupLines).every(([line1, line2]) => !this.checkCollision(line1, line2)); + // Set columns for the lines in this group: + const groupLength = groupEnd - groupStart + 1; + // Set the accidental column for each line of the group + let endCase = this.checkCollision(lineList[groupStart], lineList[groupEnd]) ? 'a' : 'b'; + switch (groupLength) { + case 3: + if (endCase === 'a' && lineDifference(1, 2) === 0.5 && lineDifference(0, 1) !== 0.5) { + endCase = 'second_on_bottom'; + } + break; + case 4: + if (notColliding([0, 2], [1, 3])) { + endCase = 'spaced_out_tetrachord'; + } + break; + case 5: + if (endCase === 'b' && notColliding([1, 3])) { + endCase = 'spaced_out_pentachord'; + if (notColliding([0, 2], [2, 4])) { + endCase = 'very_spaced_out_pentachord'; + } + } + break; + case 6: + if (notColliding([0, 3], [1, 4], [2, 5])) { + endCase = 'spaced_out_hexachord'; + } + if (notColliding([0, 2], [2, 4], [1, 3], [3, 5])) { + endCase = 'very_spaced_out_hexachord'; + } + break; + default: + break; + } + let groupMember; + let column; + // If the group contains seven members or more, use ascending parallel lines + // of accidentals, using as few columns as possible while avoiding collisions. + if (groupLength >= 7) { + // First, determine how many columns to use: + let patternLength = 2; + let collisionDetected = true; + while (collisionDetected === true) { + collisionDetected = false; + for (let line = 0; line + patternLength < lineList.length; line++) { + if (this.checkCollision(lineList[line], lineList[line + patternLength])) { + collisionDetected = true; + patternLength++; + break; + } + } + } + // Then, assign a column to each line of accidentals + for (groupMember = i; groupMember <= groupEnd; groupMember++) { + column = ((groupMember - i) % patternLength) + 1; + lineList[groupMember].column = column; + totalColumns = totalColumns > column ? totalColumns : column; + } + } + else { + // If the group contains fewer than seven members, use the layouts from + // the Tables.accidentalColumnsTable (See: tables.ts). + for (groupMember = i; groupMember <= groupEnd; groupMember++) { + column = _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.accidentalColumnsTable[groupLength][endCase][groupMember - i]; + lineList[groupMember].column = column; + totalColumns = totalColumns > column ? totalColumns : column; + } + } + // Increment i to the last note that was set, so that if a lower set of notes + // does not conflict at all with this group, it can have its own classic shape. + i = groupEnd; + } + // ### Convert Columns to x_offsets + // + // This keeps columns aligned, even if they have different accidentals within them + // which sometimes results in a larger x_offset than is an accidental might need + // to preserve the symmetry of the accidental shape. + // + // Neither A.C. Vinci nor G. Read address this, and it typically only happens in + // music with complex chord clusters. + // + // TODO (?): Optionally allow closer compression of accidentals, instead of forcing + // parallel columns. + // track each column's max width, which will be used as initial shift of later columns: + const columnWidths = []; + const columnXOffsets = []; + for (let i = 0; i <= totalColumns; i++) { + columnWidths[i] = 0; + columnXOffsets[i] = 0; + } + columnWidths[0] = accShift + leftShift; + columnXOffsets[0] = accShift + leftShift; + // Fill columnWidths with widest needed x-space; + // this is what keeps the columns parallel. + lineList.forEach((line) => { + if (line.width > columnWidths[line.column]) + columnWidths[line.column] = line.width; + }); + for (let i = 1; i < columnWidths.length; i++) { + // this column's offset = this column's width + previous column's offset + columnXOffsets[i] = columnWidths[i] + columnXOffsets[i - 1]; + } + const totalShift = columnXOffsets[columnXOffsets.length - 1]; + // Set the xShift for each accidental according to column offsets: + let accCount = 0; + lineList.forEach((line) => { + let lineWidth = 0; + const lastAccOnLine = accCount + line.numAcc; + // handle all of the accidentals on a given line: + for (accCount; accCount < lastAccOnLine; accCount++) { + const xShift = columnXOffsets[line.column - 1] + lineWidth; + accList[accCount].acc.setXShift(xShift); + // keep track of the width of accidentals we've added so far, so that when + // we loop, we add space for them. + lineWidth += accList[accCount].acc.getWidth() + accidentalSpacing; + L('Line, accCount, shift: ', line.line, accCount, xShift); + } + }); + // update the overall layout with the full width of the accidental shapes: + state.left_shift += totalShift + additionalPadding; + } + /** Helper function to determine whether two lines of accidentals collide vertically */ + static checkCollision(line1, line2) { + let clearance = line2.line - line1.line; + let clearanceRequired = 3; + // But less clearance is required for certain accidentals: b, bb and ##. + if (clearance > 0) { + // then line 2 is on top + clearanceRequired = line2.flatLine || line2.dblSharpLine ? 2.5 : 3.0; + if (line1.dblSharpLine) + clearance -= 0.5; + } + else { + // line 1 is on top + clearanceRequired = line1.flatLine || line1.dblSharpLine ? 2.5 : 3.0; + if (line2.dblSharpLine) + clearance -= 0.5; + } + const collision = Math.abs(clearance) < clearanceRequired; + L('Line_1, Line_2, Collision: ', line1.line, line2.line, collision); + return collision; + } + /** + * Use this method to automatically apply accidentals to a set of `voices`. + * The accidentals will be remembered between all the voices provided. + * Optionally, you can also provide an initial `keySignature`. + */ + static applyAccidentals(voices, keySignature) { + const tickPositions = []; + const tickNoteMap = {}; + // Sort the tickables in each voice by their tick position in the voice. + voices.forEach((voice) => { + const tickPosition = new _fraction__WEBPACK_IMPORTED_MODULE_0__.Fraction(0, 1); + const tickable = voice.getTickables(); + tickable.forEach((t) => { + if (t.shouldIgnoreTicks()) + return; + const notesAtPosition = tickNoteMap[tickPosition.value()]; + if (!notesAtPosition) { + tickPositions.push(tickPosition.value()); + tickNoteMap[tickPosition.value()] = [t]; + } + else { + notesAtPosition.push(t); + } + tickPosition.add(t.getTicks()); + }); + }); + const music = new _music__WEBPACK_IMPORTED_MODULE_3__.Music(); + // Default key signature is C major. + if (!keySignature) + keySignature = 'C'; + // Get the scale map, which represents the current state of each pitch. + const scaleMapKey = music.createScaleMap(keySignature); + const scaleMap = {}; + tickPositions.forEach((tickPos) => { + const tickables = tickNoteMap[tickPos]; + // Array to store all pitches that modified accidental states + // at this tick position + const modifiedPitches = []; + const processNote = (t) => { + // Only StaveNote implements .addModifier(), which is used below. + if (!(0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isStaveNote)(t) || t.isRest() || t.shouldIgnoreTicks()) { + return; + } + // Go through each key and determine if an accidental should be applied. + const staveNote = t; + staveNote.keys.forEach((keyString, keyIndex) => { + const key = music.getNoteParts(keyString.split('/')[0]); + const octave = keyString.split('/')[1]; + // Force a natural for every key without an accidental + const accidentalString = key.accidental || 'n'; + const pitch = key.root + accidentalString; + // Determine if the current pitch has the same accidental + // as the scale state + if (!scaleMap[key.root + octave]) + scaleMap[key.root + octave] = scaleMapKey[key.root]; + const sameAccidental = scaleMap[key.root + octave] === pitch; + // Determine if an identical pitch in the chord already + // modified the accidental state + const previouslyModified = modifiedPitches.indexOf(keyString) > -1; + // Remove accidentals + staveNote.getModifiers().forEach((modifier, index) => { + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isAccidental)(modifier) && modifier.type == accidentalString && modifier.getIndex() == keyIndex) { + staveNote.getModifiers().splice(index, 1); + } + }); + // Add the accidental to the StaveNote + if (!sameAccidental || (sameAccidental && previouslyModified)) { + // Modify the scale map so that the root pitch has an + // updated state + scaleMap[key.root + octave] = pitch; + // Create the accidental + const accidental = new Accidental(accidentalString); + // Attach the accidental to the StaveNote + staveNote.addModifier(accidental, keyIndex); + // Add the pitch to list of pitches that modified accidentals + modifiedPitches.push(keyString); + } + }); + // process grace notes + staveNote.getModifiers().forEach((modifier) => { + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isGraceNoteGroup)(modifier)) { + modifier.getGraceNotes().forEach(processNote); + } + }); + }; + tickables.forEach(processNote); + }); + } + reset() { + const fontScale = this.render_options.font_scale; + this.glyph = new _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph(this.accidental.code, fontScale); + this.glyph.setOriginX(1.0); + if (this.cautionary) { + this.parenLeft = new _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph(_tables__WEBPACK_IMPORTED_MODULE_4__.Tables.accidentalCodes('{').code, fontScale); + this.parenRight = new _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph(_tables__WEBPACK_IMPORTED_MODULE_4__.Tables.accidentalCodes('}').code, fontScale); + this.parenLeft.setOriginX(1.0); + this.parenRight.setOriginX(1.0); + } + } + /** Get width in pixels. */ + getWidth() { + if (this.cautionary) { + const parenLeft = (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(this.parenLeft); + const parenRight = (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(this.parenRight); + const parenWidth = parenLeft.getMetrics().width + + parenRight.getMetrics().width + + this.render_options.parenLeftPadding + + this.render_options.parenRightPadding; + return this.glyph.getMetrics().width + parenWidth; + } + else { + return this.glyph.getMetrics().width; + } + } + /** Attach this accidental to `note`, which must be a `StaveNote`. */ + setNote(note) { + (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(note, 'ArgumentError', `Bad note value: ${note}`); + this.note = note; + // Accidentals attached to grace notes are rendered smaller. + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isGraceNote)(note)) { + this.render_options.font_scale = 25; + this.reset(); + } + return this; + } + /** If called, draws parenthesis around accidental. */ + setAsCautionary() { + this.cautionary = true; + this.render_options.font_scale = 28; + this.reset(); + return this; + } + /** Render accidental onto canvas. */ + draw() { + const { type, position, index, cautionary, x_shift, y_shift, glyph, render_options: { parenLeftPadding, parenRightPadding }, } = this; + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + // Figure out the start `x` and `y` coordinates for note and index. + const start = note.getModifierStartXY(position, index); + let accX = start.x + x_shift; + const accY = start.y + y_shift; + L('Rendering: ', type, accX, accY); + if (!cautionary) { + glyph.render(ctx, accX, accY); + } + else { + const parenLeft = (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(this.parenLeft); + const parenRight = (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(this.parenRight); + // Render the accidental in parentheses. + parenRight.render(ctx, accX, accY); + accX -= parenRight.getMetrics().width; + accX -= parenRightPadding; + accX -= this.accidental.parenRightPaddingAdjustment; + glyph.render(ctx, accX, accY); + accX -= glyph.getMetrics().width; + accX -= parenLeftPadding; + parenLeft.render(ctx, accX, accY); + } + } +} +/** To enable logging for this class. Set `Vex.Flow.Accidental.DEBUG` to `true`. */ +Accidental.DEBUG = false; + + +/***/ }), + +/***/ "./src/annotation.ts": +/*!***************************!*\ + !*** ./src/annotation.ts ***! + \***************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "AnnotationHorizontalJustify": () => (/* binding */ AnnotationHorizontalJustify), +/* harmony export */ "AnnotationVerticalJustify": () => (/* binding */ AnnotationVerticalJustify), +/* harmony export */ "Annotation": () => (/* binding */ Annotation) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _textformatter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./textformatter */ "./src/textformatter.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + + +// eslint-disable-next-line +function L(...args) { + if (Annotation.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_6__.log)('Vex.Flow.Annotation', args); +} +var AnnotationHorizontalJustify; +(function (AnnotationHorizontalJustify) { + AnnotationHorizontalJustify[AnnotationHorizontalJustify["LEFT"] = 1] = "LEFT"; + AnnotationHorizontalJustify[AnnotationHorizontalJustify["CENTER"] = 2] = "CENTER"; + AnnotationHorizontalJustify[AnnotationHorizontalJustify["RIGHT"] = 3] = "RIGHT"; + AnnotationHorizontalJustify[AnnotationHorizontalJustify["CENTER_STEM"] = 4] = "CENTER_STEM"; +})(AnnotationHorizontalJustify || (AnnotationHorizontalJustify = {})); +var AnnotationVerticalJustify; +(function (AnnotationVerticalJustify) { + AnnotationVerticalJustify[AnnotationVerticalJustify["TOP"] = 1] = "TOP"; + AnnotationVerticalJustify[AnnotationVerticalJustify["CENTER"] = 2] = "CENTER"; + AnnotationVerticalJustify[AnnotationVerticalJustify["BOTTOM"] = 3] = "BOTTOM"; + AnnotationVerticalJustify[AnnotationVerticalJustify["CENTER_STEM"] = 4] = "CENTER_STEM"; +})(AnnotationVerticalJustify || (AnnotationVerticalJustify = {})); +/** + * Annotations are modifiers that can be attached to + * notes. + * + * See `tests/annotation_tests.ts` for usage examples. + */ +class Annotation extends _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier { + /** + * Annotations inherit from `Modifier` and is positioned correctly when + * in a `ModifierContext`. + * Create a new `Annotation` with the string `text`. + */ + constructor(text) { + super(); + this.text = text; + this.horizontalJustification = AnnotationHorizontalJustify.CENTER; + // warning: the default in the constructor is TOP, but in the factory the default is BOTTOM. + // this is to support legacy application that may expect this. + this.verticalJustification = AnnotationVerticalJustify.TOP; + this.resetFont(); + // The default width is calculated from the text. + this.setWidth(_tables__WEBPACK_IMPORTED_MODULE_3__.Tables.textWidth(text)); + } + /** Annotations category string. */ + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_5__.Category.Annotation; + } + // Use the same padding for annotations as note head so the + // words don't run into each other. + static get minAnnotationPadding() { + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont(); + return musicFont.lookupMetric('glyphs.noteHead.minPadding'); + } + /** Arrange annotations within a `ModifierContext` */ + static format(annotations, state) { + if (!annotations || annotations.length === 0) + return false; + let leftWidth = 0; + let rightWidth = 0; + let maxLeftGlyphWidth = 0; + let maxRightGlyphWidth = 0; + for (let i = 0; i < annotations.length; ++i) { + const annotation = annotations[i]; + const textFormatter = _textformatter__WEBPACK_IMPORTED_MODULE_4__.TextFormatter.create(annotation.textFont); + // Text height is expressed in fractional stave spaces. + const textLines = (5 + textFormatter.maxHeight) / _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.STAVE_LINE_DISTANCE; + let verticalSpaceNeeded = textLines; + const note = annotation.checkAttachedNote(); + const glyphWidth = note.getGlyph().getWidth(); + // Get the text width from the font metrics. + const textWidth = textFormatter.getWidthForTextInPx(annotation.text); + if (annotation.horizontalJustification === AnnotationHorizontalJustify.LEFT) { + maxLeftGlyphWidth = Math.max(glyphWidth, maxLeftGlyphWidth); + leftWidth = Math.max(leftWidth, textWidth) + Annotation.minAnnotationPadding; + } + else if (annotation.horizontalJustification === AnnotationHorizontalJustify.RIGHT) { + maxRightGlyphWidth = Math.max(glyphWidth, maxRightGlyphWidth); + rightWidth = Math.max(rightWidth, textWidth); + } + else { + leftWidth = Math.max(leftWidth, textWidth / 2) + Annotation.minAnnotationPadding; + rightWidth = Math.max(rightWidth, textWidth / 2); + maxLeftGlyphWidth = Math.max(glyphWidth / 2, maxLeftGlyphWidth); + maxRightGlyphWidth = Math.max(glyphWidth / 2, maxRightGlyphWidth); + } + const stave = note.getStave(); + const stemDirection = note.hasStem() ? note.getStemDirection() : _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP; + let stemHeight = 0; + let lines = 5; + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isTabNote)(note)) { + if (note.render_options.draw_stem) { + const stem = note.getStem(); + if (stem) { + stemHeight = Math.abs(stem.getHeight()) / _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.STAVE_LINE_DISTANCE; + } + } + else { + stemHeight = 0; + } + } + else if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isStemmableNote)(note)) { + const stem = note.getStem(); + if (stem && note.getNoteType() === 'n') { + stemHeight = Math.abs(stem.getHeight()) / _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.STAVE_LINE_DISTANCE; + } + } + if (stave) { + lines = stave.getNumLines(); + } + if (annotation.verticalJustification === this.VerticalJustify.TOP) { + let noteLine = note.getLineNumber(true); + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isTabNote)(note)) { + noteLine = lines - (note.leastString() - 0.5); + } + if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP) { + noteLine += stemHeight; + } + const curTop = noteLine + state.top_text_line + 0.5; + if (curTop < lines) { + annotation.setTextLine(lines - noteLine); + verticalSpaceNeeded += lines - noteLine; + state.top_text_line = verticalSpaceNeeded; + } + else { + annotation.setTextLine(state.top_text_line); + state.top_text_line += verticalSpaceNeeded; + } + } + else if (annotation.verticalJustification === this.VerticalJustify.BOTTOM) { + let noteLine = lines - note.getLineNumber(); + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isTabNote)(note)) { + noteLine = note.greatestString() - 1; + } + if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN) { + noteLine += stemHeight; + } + const curBottom = noteLine + state.text_line + 1; + if (curBottom < lines) { + annotation.setTextLine(lines - curBottom); + verticalSpaceNeeded += lines - curBottom; + state.text_line = verticalSpaceNeeded; + } + else { + annotation.setTextLine(state.text_line); + state.text_line += verticalSpaceNeeded; + } + } + else { + annotation.setTextLine(state.text_line); + } + } + const rightOverlap = Math.min(Math.max(rightWidth - maxRightGlyphWidth, 0), Math.max(rightWidth - state.right_shift, 0)); + const leftOverlap = Math.min(Math.max(leftWidth - maxLeftGlyphWidth, 0), Math.max(leftWidth - state.left_shift, 0)); + state.left_shift += leftOverlap; + state.right_shift += rightOverlap; + return true; + } + /** + * Set vertical position of text (above or below stave). + * @param just value in `AnnotationVerticalJustify`. + */ + setVerticalJustification(just) { + this.verticalJustification = typeof just === 'string' ? Annotation.VerticalJustifyString[just] : just; + return this; + } + /** + * Get horizontal justification. + */ + getJustification() { + return this.horizontalJustification; + } + /** + * Set horizontal justification. + * @param justification value in `Annotation.Justify`. + */ + setJustification(just) { + this.horizontalJustification = typeof just === 'string' ? Annotation.HorizontalJustifyString[just] : just; + return this; + } + /** Render text beside the note. */ + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + const stemDirection = note.hasStem() ? note.getStemDirection() : _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP; + const textFormatter = _textformatter__WEBPACK_IMPORTED_MODULE_4__.TextFormatter.create(this.textFont); + const start = note.getModifierStartXY(_modifier__WEBPACK_IMPORTED_MODULE_1__.ModifierPosition.ABOVE, this.index); + this.setRendered(); + // We're changing context parameters. Save current state. + ctx.save(); + // Apply style might not save context, if this.style is undefined, so we + // still need to save context state just before this, since we will be + // changing ctx parameters below. + this.applyStyle(); + ctx.openGroup('annotation', this.getAttribute('id')); + ctx.setFont(this.textFont); + const text_width = ctx.measureText(this.text).width; + const text_height = textFormatter.maxHeight + 2; + let x; + let y; + if (this.horizontalJustification === AnnotationHorizontalJustify.LEFT) { + x = start.x; + } + else if (this.horizontalJustification === AnnotationHorizontalJustify.RIGHT) { + x = start.x - text_width; + } + else if (this.horizontalJustification === AnnotationHorizontalJustify.CENTER) { + x = start.x - text_width / 2; + } /* CENTER_STEM */ + else { + x = note.getStemX() - text_width / 2; + } + let stem_ext = {}; + let spacing = 0; + const has_stem = note.hasStem(); + const stave = note.checkStave(); + // The position of the text varies based on whether or not the note + // has a stem. + if (has_stem) { + stem_ext = note.checkStem().getExtents(); + spacing = stave.getSpacingBetweenLines(); + } + if (this.verticalJustification === AnnotationVerticalJustify.BOTTOM) { + // Use the largest (lowest) Y value + const ys = note.getYs(); + y = ys.reduce((a, b) => (a > b ? a : b)); + y += (this.text_line + 1) * _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.STAVE_LINE_DISTANCE + text_height; + if (has_stem && stemDirection === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN) { + y = Math.max(y, stem_ext.topY + text_height + spacing * this.text_line); + } + } + else if (this.verticalJustification === AnnotationVerticalJustify.CENTER) { + const yt = note.getYForTopText(this.text_line) - 1; + const yb = stave.getYForBottomText(this.text_line); + y = yt + (yb - yt) / 2 + text_height / 2; + } + else if (this.verticalJustification === AnnotationVerticalJustify.TOP) { + y = note.getYs()[0] - (this.text_line + 1) * _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.STAVE_LINE_DISTANCE; + if (has_stem && stemDirection === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP) { + // If the stem is above the stave already, go with default line width vs. actual + // since the lines between don't really matter. + spacing = stem_ext.topY < stave.getTopLineTopY() ? _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.STAVE_LINE_DISTANCE : spacing; + y = Math.min(y, stem_ext.topY - spacing * (this.text_line + 1)); + } + } /* CENTER_STEM */ + else { + const extents = note.getStemExtents(); + y = extents.topY + (extents.baseY - extents.topY) / 2 + text_height / 2; + } + L('Rendering annotation: ', this.text, x, y); + ctx.fillText(this.text, x, y); + ctx.closeGroup(); + this.restoreStyle(); + ctx.restore(); + } +} +/** To enable logging for this class. Set `Vex.Flow.Annotation.DEBUG` to `true`. */ +Annotation.DEBUG = false; +Annotation.TEXT_FONT = Object.assign({}, _element__WEBPACK_IMPORTED_MODULE_0__.Element.TEXT_FONT); +/** Text annotations can be positioned and justified relative to the note. */ +Annotation.HorizontalJustify = AnnotationHorizontalJustify; +Annotation.HorizontalJustifyString = { + left: AnnotationHorizontalJustify.LEFT, + right: AnnotationHorizontalJustify.RIGHT, + center: AnnotationHorizontalJustify.CENTER, + centerStem: AnnotationHorizontalJustify.CENTER_STEM, +}; +Annotation.VerticalJustify = AnnotationVerticalJustify; +Annotation.VerticalJustifyString = { + above: AnnotationVerticalJustify.TOP, + top: AnnotationVerticalJustify.TOP, + below: AnnotationVerticalJustify.BOTTOM, + bottom: AnnotationVerticalJustify.BOTTOM, + center: AnnotationVerticalJustify.CENTER, + centerStem: AnnotationVerticalJustify.CENTER_STEM, +}; + + +/***/ }), + +/***/ "./src/articulation.ts": +/*!*****************************!*\ + !*** ./src/articulation.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Articulation": () => (/* binding */ Articulation) +/* harmony export */ }); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Larry Kuhns. +// MIT License + + + + + + +// eslint-disable-next-line +function L(...args) { + if (Articulation.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_5__.log)('Vex.Flow.Articulation', args); +} +const { ABOVE, BELOW } = _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position; +function roundToNearestHalf(mathFn, value) { + return mathFn(value / 0.5) * 0.5; +} +// This includes both staff and ledger lines +function isWithinLines(line, position) { + return position === ABOVE ? line <= 5 : line >= 1; +} +function getRoundingFunction(line, position) { + if (isWithinLines(line, position)) { + if (position === ABOVE) { + return Math.ceil; + } + else { + return Math.floor; + } + } + else { + return Math.round; + } +} +function snapLineToStaff(canSitBetweenLines, line, position, offsetDirection) { + // Initially, snap to nearest staff line or space + const snappedLine = roundToNearestHalf(getRoundingFunction(line, position), line); + const canSnapToStaffSpace = canSitBetweenLines && isWithinLines(snappedLine, position); + const onStaffLine = snappedLine % 1 === 0; + if (canSnapToStaffSpace && onStaffLine) { + const HALF_STAFF_SPACE = 0.5; + return snappedLine + HALF_STAFF_SPACE * -offsetDirection; + } + else { + return snappedLine; + } +} +// Helper function for checking if a Note object is either a StaveNote or a GraceNote. +const isStaveOrGraceNote = (note) => (0,_typeguard__WEBPACK_IMPORTED_MODULE_4__.isStaveNote)(note) || (0,_typeguard__WEBPACK_IMPORTED_MODULE_4__.isGraceNote)(note); +function getTopY(note, textLine) { + const stemDirection = note.getStemDirection(); + const { topY: stemTipY, baseY: stemBaseY } = note.getStemExtents(); + if (isStaveOrGraceNote(note)) { + if (note.hasStem()) { + if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP) { + return stemTipY; + } + else { + return stemBaseY; + } + } + else { + return Math.min(...note.getYs()); + } + } + else if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_4__.isTabNote)(note)) { + if (note.hasStem()) { + if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP) { + return stemTipY; + } + else { + return note.checkStave().getYForTopText(textLine); + } + } + else { + return note.checkStave().getYForTopText(textLine); + } + } + else { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes'); + } +} +function getBottomY(note, textLine) { + const stemDirection = note.getStemDirection(); + const { topY: stemTipY, baseY: stemBaseY } = note.getStemExtents(); + if (isStaveOrGraceNote(note)) { + if (note.hasStem()) { + if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP) { + return stemBaseY; + } + else { + return stemTipY; + } + } + else { + return Math.max(...note.getYs()); + } + } + else if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_4__.isTabNote)(note)) { + if (note.hasStem()) { + if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP) { + return note.checkStave().getYForBottomText(textLine); + } + else { + return stemTipY; + } + } + else { + return note.checkStave().getYForBottomText(textLine); + } + } + else { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes'); + } +} +/** + * Get the initial offset of the articulation from the y value of the starting position. + * This is required because the top/bottom text positions already have spacing applied to + * provide a "visually pleasant" default position. However the y values provided from + * the stavenote's top/bottom do *not* have any pre-applied spacing. This function + * normalizes this asymmetry. + * @param note + * @param position + * @returns + */ +function getInitialOffset(note, position) { + const isOnStemTip = (position === ABOVE && note.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP) || + (position === BELOW && note.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN); + if (isStaveOrGraceNote(note)) { + if (note.hasStem() && isOnStemTip) { + return 0.5; + } + else { + // this amount is larger than the stem-tip offset because we start from + // the center of the notehead + return 1; + } + } + else { + if (note.hasStem() && isOnStemTip) { + return 1; + } + else { + return 0; + } + } +} +/** + * Articulations and Accents are modifiers that can be + * attached to notes. The complete list of articulations is available in + * `tables.ts` under `Vex.Flow.articulationCodes`. + * + * See `tests/articulation_tests.ts` for usage examples. + */ +class Articulation extends _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier { + /** + * Create a new articulation. + * @param type entry in `Vex.Flow.articulationCodes` in `tables.ts` + */ + constructor(type) { + super(); + this.type = type; + this.position = BELOW; + this.render_options = { + font_scale: 38, + }; + this.reset(); + } + /** Articulations category string. */ + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_4__.Category.Articulation; + } + /** + * FIXME: + * Most of the complex formatting logic (ie: snapping to space) is + * actually done in .render(). But that logic belongs in this method. + * + * Unfortunately, this isn't possible because, by this point, stem lengths + * have not yet been finalized. Finalized stem lengths are required to determine the + * initial position of any stem-side articulation. + * + * This indicates that all objects should have their stave set before being + * formatted. It can't be an optional if you want accurate vertical positioning. + * Consistently positioned articulations that play nice with other modifiers + * won't be possible until we stop relying on render-time formatting. + * + * Ideally, when this function has completed, the vertical articulation positions + * should be ready to render without further adjustment. But the current state + * is far from this ideal. + */ + static format(articulations, state) { + if (!articulations || articulations.length === 0) + return false; + const margin = 0.5; + let maxGlyphWidth = 0; + const getIncrement = (articulation, line, position) => roundToNearestHalf(getRoundingFunction(line, position), (0,_util__WEBPACK_IMPORTED_MODULE_5__.defined)(articulation.glyph.getMetrics().height) / 10 + margin); + articulations.forEach((articulation) => { + const note = articulation.checkAttachedNote(); + maxGlyphWidth = Math.max(note.getGlyph().getWidth(), maxGlyphWidth); + let lines = 5; + const stemDirection = note.hasStem() ? note.getStemDirection() : _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP; + let stemHeight = 0; + // Decide if we need to consider beam direction in placement. + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_4__.isStemmableNote)(note)) { + const stem = note.getStem(); + if (stem) { + stemHeight = Math.abs(stem.getHeight()) / _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.STAVE_LINE_DISTANCE; + } + } + const stave = note.getStave(); + if (stave) { + lines = stave.getNumLines(); + } + if (articulation.getPosition() === ABOVE) { + let noteLine = note.getLineNumber(true); + if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP) { + noteLine += stemHeight; + } + let increment = getIncrement(articulation, state.top_text_line, ABOVE); + const curTop = noteLine + state.top_text_line + 0.5; + // If articulation must be above stave, add lines between note and stave top + if (!articulation.articulation.between_lines && curTop < lines) { + increment += lines - curTop; + } + articulation.setTextLine(state.top_text_line); + state.top_text_line += increment; + } + else if (articulation.getPosition() === BELOW) { + let noteLine = Math.max(lines - note.getLineNumber(), 0); + if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN) { + noteLine += stemHeight; + } + let increment = getIncrement(articulation, state.text_line, BELOW); + const curBottom = noteLine + state.text_line + 0.5; + // if articulation must be below stave, add lines from note to stave bottom + if (!articulation.articulation.between_lines && curBottom < lines) { + increment += lines - curBottom; + } + articulation.setTextLine(state.text_line); + state.text_line += increment; + } + }); + const width = articulations + .map((articulation) => articulation.getWidth()) + .reduce((maxWidth, articWidth) => Math.max(articWidth, maxWidth)); + const overlap = Math.min(Math.max(width - maxGlyphWidth, 0), Math.max(width - (state.left_shift + state.right_shift), 0)); + state.left_shift += overlap / 2; + state.right_shift += overlap / 2; + return true; + } + static easyScoreHook({ articulations }, note, builder) { + if (!articulations) + return; + const articNameToCode = { + staccato: 'a.', + tenuto: 'a-', + accent: 'a>', + }; + articulations + .split(',') + .map((articString) => articString.trim().split('.')) + .map(([name, position]) => { + const artic = { type: articNameToCode[name] }; + if (position) + artic.position = _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.PositionString[position]; + return builder.getFactory().Articulation(artic); + }) + .map((artic) => note.addModifier(artic, 0)); + } + reset() { + this.articulation = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.articulationCodes(this.type); + const articulation = (0,_util__WEBPACK_IMPORTED_MODULE_5__.defined)(this.articulation, 'ArgumentError', `Articulation not found: ${this.type}`); + const code = (this.position === ABOVE ? articulation.aboveCode : articulation.belowCode) || articulation.code; + this.glyph = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph(code !== null && code !== void 0 ? code : '', this.render_options.font_scale); + this.setWidth((0,_util__WEBPACK_IMPORTED_MODULE_5__.defined)(this.glyph.getMetrics().width)); + } + /** Render articulation in position next to note. */ + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const index = this.checkIndex(); + const { position, glyph, text_line: textLine } = this; + const canSitBetweenLines = this.articulation.between_lines; + const stave = note.checkStave(); + const staffSpace = stave.getSpacingBetweenLines(); + const isTab = (0,_typeguard__WEBPACK_IMPORTED_MODULE_4__.isTabNote)(note); + // Articulations are centered over/under the note head. + const { x } = note.getModifierStartXY(position, index); + const shouldSitOutsideStaff = !canSitBetweenLines || isTab; + const initialOffset = getInitialOffset(note, position); + const padding = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric(`articulation.${glyph.getCode()}.padding`, 0); + let y = { + [ABOVE]: () => { + glyph.setOrigin(0.5, 1); + const y = getTopY(note, textLine) - (textLine + initialOffset) * staffSpace; + return shouldSitOutsideStaff ? Math.min(stave.getYForTopText(Articulation.INITIAL_OFFSET), y) : y; + }, + [BELOW]: () => { + glyph.setOrigin(0.5, 0); + const y = getBottomY(note, textLine) + (textLine + initialOffset) * staffSpace; + return shouldSitOutsideStaff ? Math.max(stave.getYForBottomText(Articulation.INITIAL_OFFSET), y) : y; + }, + }[position](); + if (!isTab) { + const offsetDirection = position === ABOVE ? -1 : +1; + const noteLine = note.getKeyProps()[index].line; + const distanceFromNote = (note.getYs()[index] - y) / staffSpace; + const articLine = distanceFromNote + Number(noteLine); + const snappedLine = snapLineToStaff(canSitBetweenLines, articLine, position, offsetDirection); + if (isWithinLines(snappedLine, position)) + glyph.setOrigin(0.5, 0.5); + y += Math.abs(snappedLine - articLine) * staffSpace * offsetDirection + padding * offsetDirection; + } + L(`Rendering articulation at (x: ${x}, y: ${y})`); + glyph.render(ctx, x, y); + } +} +/** To enable logging for this class. Set `Vex.Flow.Articulation.DEBUG` to `true`. */ +Articulation.DEBUG = false; +Articulation.INITIAL_OFFSET = -0.5; + + +/***/ }), + +/***/ "./src/barnote.ts": +/*!************************!*\ + !*** ./src/barnote.ts ***! + \************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "BarNote": () => (/* binding */ BarNote) +/* harmony export */ }); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _stavebarline__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stavebarline */ "./src/stavebarline.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + +// eslint-disable-next-line +function L(...args) { + if (BarNote.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_3__.log)('Vex.Flow.BarNote', args); +} +/** + * A `BarNote` is used to render bar lines (from `barline.ts`). `BarNote`s can + * be added to a voice and rendered in the middle of a stave. Since it has no + * duration, it consumes no `tick`s, and is dealt with appropriately by the formatter. + * + * See `tests/barnote_tests.ts` for usage examples. + */ +class BarNote extends _note__WEBPACK_IMPORTED_MODULE_0__.Note { + constructor(type = _stavebarline__WEBPACK_IMPORTED_MODULE_1__.BarlineType.SINGLE) { + super({ duration: 'b' }); + this.metrics = { + widths: {}, + }; + const TYPE = _stavebarline__WEBPACK_IMPORTED_MODULE_1__.BarlineType; + this.metrics.widths = { + [TYPE.SINGLE]: 8, + [TYPE.DOUBLE]: 12, + [TYPE.END]: 15, + [TYPE.REPEAT_BEGIN]: 14, + [TYPE.REPEAT_END]: 14, + [TYPE.REPEAT_BOTH]: 18, + [TYPE.NONE]: 0, + }; + // Tell the formatter that bar notes have no duration. + this.ignore_ticks = true; + this.setType(type); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.BarNote; + } + /** Get the type of bar note.*/ + getType() { + return this.type; + } + /** Set the type of bar note. */ + setType(type) { + this.type = typeof type === 'string' ? _stavebarline__WEBPACK_IMPORTED_MODULE_1__.Barline.typeString[type] : type; + // Set width to width of relevant `Barline`. + this.setWidth(this.metrics.widths[this.type]); + return this; + } + /* Overridden to ignore */ + // eslint-disable-next-line + addToModifierContext(mc) { + // DO NOTHING. + return this; + } + /** Overridden to ignore. */ + preFormat() { + this.preFormatted = true; + return this; + } + /** Render note to stave. */ + draw() { + const ctx = this.checkContext(); + L('Rendering bar line at: ', this.getAbsoluteX()); + this.applyStyle(ctx); + const barline = new _stavebarline__WEBPACK_IMPORTED_MODULE_1__.Barline(this.type); + barline.setX(this.getAbsoluteX()); + barline.draw(this.checkStave()); + this.restoreStyle(ctx); + this.setRendered(); + } +} +/** To enable logging for this class. Set `Vex.Flow.BarNote.DEBUG` to `true`. */ +BarNote.DEBUG = false; + + +/***/ }), + +/***/ "./src/beam.ts": +/*!*********************!*\ + !*** ./src/beam.ts ***! + \*********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "BEAM_LEFT": () => (/* binding */ BEAM_LEFT), +/* harmony export */ "BEAM_RIGHT": () => (/* binding */ BEAM_RIGHT), +/* harmony export */ "BEAM_BOTH": () => (/* binding */ BEAM_BOTH), +/* harmony export */ "Beam": () => (/* binding */ Beam) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fraction */ "./src/fraction.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _tuplet__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tuplet */ "./src/tuplet.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + + +function calculateStemDirection(notes) { + let lineSum = 0; + notes.forEach((note) => { + if (note.keyProps) { + note.keyProps.forEach((keyProp) => { + lineSum += keyProp.line - 3; + }); + } + }); + if (lineSum >= 0) { + return _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN; + } + return _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP; +} +function getStemSlope(firstNote, lastNote) { + const firstStemTipY = firstNote.getStemExtents().topY; + const firstStemX = firstNote.getStemX(); + const lastStemTipY = lastNote.getStemExtents().topY; + const lastStemX = lastNote.getStemX(); + return (lastStemTipY - firstStemTipY) / (lastStemX - firstStemX); +} +const BEAM_LEFT = 'L'; +const BEAM_RIGHT = 'R'; +const BEAM_BOTH = 'B'; +/** `Beams` span over a set of `StemmableNotes`. */ +class Beam extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + constructor(notes, auto_stem = false) { + super(); + this.slope = 0; + this.y_shift = 0; + /** + * Overrides to default beam directions for secondary-level beams that do not + * connect to any other note. See further explanation at + * `setPartialBeamSideAt` + */ + this.forcedPartialDirections = {}; + if (!notes || notes.length === 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('BadArguments', 'No notes provided for beam.'); + } + if (notes.length === 1) { + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('BadArguments', 'Too few notes for beam.'); + } + // Validate beam line, direction and ticks. + this.ticks = notes[0].getIntrinsicTicks(); + if (this.ticks >= _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.durationToTicks('4')) { + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('BadArguments', 'Beams can only be applied to notes shorter than a quarter note.'); + } + let i; // shared iterator + let note; + this.stem_direction = _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP; + for (i = 0; i < notes.length; ++i) { + note = notes[i]; + if (note.hasStem()) { + this.stem_direction = note.getStemDirection(); + break; + } + } + let stem_direction = this.stem_direction; + // Figure out optimal stem direction based on given notes + if (auto_stem && (0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isStaveNote)(notes[0])) { + stem_direction = calculateStemDirection(notes); + } + else if (auto_stem && (0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isTabNote)(notes[0])) { + // Auto Stem TabNotes + const stem_weight = notes.reduce((memo, note) => memo + note.getStemDirection(), 0); + stem_direction = stem_weight > -1 ? _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP : _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN; + } + // Apply stem directions and attach beam to notes + for (i = 0; i < notes.length; ++i) { + note = notes[i]; + if (auto_stem) { + note.setStemDirection(stem_direction); + this.stem_direction = stem_direction; + } + note.setBeam(this); + } + this.postFormatted = false; + this.notes = notes; + this.beam_count = this.getBeamCount(); + this.break_on_indices = []; + this.render_options = { + beam_width: 5, + max_slope: 0.25, + min_slope: -0.25, + slope_iterations: 20, + slope_cost: 100, + show_stemlets: false, + stemlet_extension: 7, + partial_beam_length: 10, + flat_beams: false, + min_flat_beam_offset: 15, + }; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_5__.Category.Beam; + } + /** Get the direction of the beam */ + getStemDirection() { + return this.stem_direction; + } + /** + * Get the default beam groups for a provided time signature. + * Attempt to guess if the time signature is not found in table. + * Currently this is fairly naive. + */ + static getDefaultBeamGroups(time_sig) { + if (!time_sig || time_sig === 'c') { + time_sig = '4/4'; + } + const defaults = { + '1/2': ['1/2'], + '2/2': ['1/2'], + '3/2': ['1/2'], + '4/2': ['1/2'], + '1/4': ['1/4'], + '2/4': ['1/4'], + '3/4': ['1/4'], + '4/4': ['1/4'], + '1/8': ['1/8'], + '2/8': ['2/8'], + '3/8': ['3/8'], + '4/8': ['2/8'], + '1/16': ['1/16'], + '2/16': ['2/16'], + '3/16': ['3/16'], + '4/16': ['2/16'], + }; + const groups = defaults[time_sig]; + if (groups === undefined) { + // If no beam groups found, naively determine + // the beam groupings from the time signature + const beatTotal = parseInt(time_sig.split('/')[0], 10); + const beatValue = parseInt(time_sig.split('/')[1], 10); + const tripleMeter = beatTotal % 3 === 0; + if (tripleMeter) { + return [new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(3, beatValue)]; + } + else if (beatValue > 4) { + return [new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(2, beatValue)]; + } + else if (beatValue <= 4) { + return [new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(1, beatValue)]; + } + } + else { + return groups.map((group) => new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction().parse(group)); + } + return [new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(1, 4)]; + } + /** + * A helper function to automatically build basic beams for a voice. For more + * complex auto-beaming use `Beam.generateBeams()`. + * @param voice the voice to generate the beams for + * @param stem_direction a stem direction to apply to the entire voice + * @param groups an array of `Fraction` representing beat groupings for the beam + */ + static applyAndGetBeams(voice, stem_direction, groups) { + return Beam.generateBeams(voice.getTickables(), { groups, stem_direction }); + } + /** + * A helper function to autimatically build beams for a voice with + * configuration options. + * + * Example configuration object: + * + * ``` + * config = { + * groups: [new Vex.Flow.Fraction(2, 8)], + * stem_direction: -1, + * beam_rests: true, + * beam_middle_only: true, + * show_stemlets: false + * }; + * ``` + * @param notes an array of notes to create the beams for + * @param config the configuration object + * @param config.stem_direction set to apply the same direction to all notes + * @param config.beam_rests set to `true` to include rests in the beams + * @param config.beam_middle_only set to `true` to only beam rests in the middle of the beat + * @param config.show_stemlets set to `true` to draw stemlets for rests + * @param config.maintain_stem_directions set to `true` to not apply new stem directions + * @param config.groups array of `Fractions` that represent the beat structure to beam the notes + * + */ + static generateBeams(notes, config = {}) { + if (!config.groups || !config.groups.length) { + config.groups = [new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(2, 8)]; + } + // Convert beam groups to tick amounts + const tickGroups = config.groups.map((group) => { + if (!group.multiply) { + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('InvalidBeamGroups', 'The beam groups must be an array of Vex.Flow.Fractions'); + } + return group.clone().multiply(_tables__WEBPACK_IMPORTED_MODULE_3__.Tables.RESOLUTION, 1); + }); + const unprocessedNotes = notes; + let currentTickGroup = 0; + let noteGroups = []; + let currentGroup = []; + function getTotalTicks(vf_notes) { + return vf_notes.reduce((memo, note) => note.getTicks().clone().add(memo), new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(0, 1)); + } + function nextTickGroup() { + if (tickGroups.length - 1 > currentTickGroup) { + currentTickGroup += 1; + } + else { + currentTickGroup = 0; + } + } + function createGroups() { + let nextGroup = []; + // number of ticks in current group + let currentGroupTotalTicks = new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(0, 1); + unprocessedNotes.forEach((unprocessedNote) => { + nextGroup = []; + if (unprocessedNote.shouldIgnoreTicks()) { + noteGroups.push(currentGroup); + currentGroup = nextGroup; + return; // Ignore untickables (like bar notes) + } + currentGroup.push(unprocessedNote); + const ticksPerGroup = tickGroups[currentTickGroup].clone(); + const totalTicks = getTotalTicks(currentGroup).add(currentGroupTotalTicks); + // Double the amount of ticks in a group, if it's an unbeamable tuplet + const unbeamable = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.durationToNumber(unprocessedNote.getDuration()) < 8; + if (unbeamable && unprocessedNote.getTuplet()) { + ticksPerGroup.numerator *= 2; + } + // If the note that was just added overflows the group tick total + if (totalTicks.greaterThan(ticksPerGroup)) { + // If the overflow note can be beamed, start the next group + // with it. Unbeamable notes leave the group overflowed. + if (!unbeamable) { + const note = currentGroup.pop(); + if (note) + nextGroup.push(note); + } + noteGroups.push(currentGroup); + // We have overflown, so we're going to next tick group. As we might have + // overflown by more than 1 group, we need to go forward as many times as + // needed, decreasing currentGroupTotalTicks by as many ticks as there are + // in current groups as we go forward. + do { + currentGroupTotalTicks = totalTicks.subtract(tickGroups[currentTickGroup]); + nextTickGroup(); + } while (currentGroupTotalTicks.greaterThanEquals(tickGroups[currentTickGroup])); + currentGroup = nextGroup; + } + else if (totalTicks.equals(ticksPerGroup)) { + noteGroups.push(currentGroup); + currentGroupTotalTicks = new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(0, 1); + currentGroup = nextGroup; + nextTickGroup(); + } + }); + // Adds any remainder notes beam + if (currentGroup.length > 0) { + noteGroups.push(currentGroup); + } + } + function getBeamGroups() { + return noteGroups.filter((group) => { + if (group.length > 1) { + let beamable = true; + group.forEach((note) => { + if (note.getIntrinsicTicks() >= _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.durationToTicks('4')) { + beamable = false; + } + }); + return beamable; + } + return false; + }); + } + // Splits up groups by Rest + function sanitizeGroups() { + const sanitizedGroups = []; + noteGroups.forEach((group) => { + let tempGroup = []; + group.forEach((note, index, group) => { + const isFirstOrLast = index === 0 || index === group.length - 1; + const prevNote = group[index - 1]; + const breaksOnEachRest = !config.beam_rests && note.isRest(); + const breaksOnFirstOrLastRest = config.beam_rests && config.beam_middle_only && note.isRest() && isFirstOrLast; + let breakOnStemChange = false; + if (config.maintain_stem_directions && prevNote && !note.isRest() && !prevNote.isRest()) { + const prevDirection = prevNote.getStemDirection(); + const currentDirection = note.getStemDirection(); + breakOnStemChange = currentDirection !== prevDirection; + } + const isUnbeamableDuration = parseInt(note.getDuration(), 10) < 8; + // Determine if the group should be broken at this note + const shouldBreak = breaksOnEachRest || breaksOnFirstOrLastRest || breakOnStemChange || isUnbeamableDuration; + if (shouldBreak) { + // Add current group + if (tempGroup.length > 0) { + sanitizedGroups.push(tempGroup); + } + // Start a new group. Include the current note if the group + // was broken up by stem direction, as that note needs to start + // the next group of notes + tempGroup = breakOnStemChange ? [note] : []; + } + else { + // Add note to group + tempGroup.push(note); + } + }); + // If there is a remaining group, add it as well + if (tempGroup.length > 0) { + sanitizedGroups.push(tempGroup); + } + }); + noteGroups = sanitizedGroups; + } + function formatStems() { + noteGroups.forEach((group) => { + let stemDirection; + if (config.maintain_stem_directions) { + const note = findFirstNote(group); + stemDirection = note ? note.getStemDirection() : _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP; + } + else { + if (config.stem_direction) { + stemDirection = config.stem_direction; + } + else { + stemDirection = calculateStemDirection(group); + } + } + applyStemDirection(group, stemDirection); + }); + } + function findFirstNote(group) { + for (let i = 0; i < group.length; i++) { + const note = group[i]; + if (!note.isRest()) { + return note; + } + } + return false; + } + function applyStemDirection(group, direction) { + group.forEach((note) => { + note.setStemDirection(direction); + }); + } + // Get all of the tuplets in all of the note groups + function getTuplets() { + const uniqueTuplets = []; + // Go through all of the note groups and inspect for tuplets + noteGroups.forEach((group) => { + let tuplet; + group.forEach((note) => { + const noteTuplet = note.getTuplet(); + if (noteTuplet && tuplet !== noteTuplet) { + tuplet = noteTuplet; + uniqueTuplets.push(tuplet); + } + }); + }); + return uniqueTuplets; + } + // Using closures to store the variables throughout the various functions + // IMO Keeps it this process lot cleaner - but not super consistent with + // the rest of the API's style - Silverwolf90 (Cyril) + createGroups(); + sanitizeGroups(); + formatStems(); + // Get the notes to be beamed + const beamedNoteGroups = getBeamGroups(); + // Get the tuplets in order to format them accurately + const allTuplets = getTuplets(); + // Create a Vex.Flow.Beam from each group of notes to be beamed + const beams = []; + beamedNoteGroups.forEach((group) => { + const beam = new Beam(group); + if (config.show_stemlets) { + beam.render_options.show_stemlets = true; + } + if (config.secondary_breaks) { + beam.render_options.secondary_break_ticks = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.durationToTicks(config.secondary_breaks); + } + if (config.flat_beams === true) { + beam.render_options.flat_beams = true; + beam.render_options.flat_beam_offset = config.flat_beam_offset; + } + beams.push(beam); + }); + // Reformat tuplets + allTuplets.forEach((tuplet) => { + // Set the tuplet location based on the stem direction + const direction = tuplet.notes[0].stem_direction === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN ? _tuplet__WEBPACK_IMPORTED_MODULE_4__.TupletLocation.BOTTOM : _tuplet__WEBPACK_IMPORTED_MODULE_4__.TupletLocation.TOP; + tuplet.setTupletLocation(direction); + // If any of the notes in the tuplet are not beamed, draw a bracket. + let bracketed = false; + for (let i = 0; i < tuplet.notes.length; i++) { + const note = tuplet.notes[i]; + if (!note.hasBeam()) { + bracketed = true; + break; + } + } + tuplet.setBracketed(bracketed); + }); + return beams; + } + /** Get the notes in this beam. */ + getNotes() { + return this.notes; + } + /** Get the max number of beams in the set of notes. */ + getBeamCount() { + const beamCounts = this.notes.map((note) => note.getGlyph().beam_count); + const maxBeamCount = beamCounts.reduce((max, beamCount) => (beamCount > max ? beamCount : max)); + return maxBeamCount; + } + /** Set which note `indices` to break the secondary beam at. */ + breakSecondaryAt(indices) { + this.break_on_indices = indices; + return this; + } + /** + * Forces the direction of a partial beam (a secondary-level beam that exists + * on one note only of the beam group). This is useful in rhythms such as 6/8 + * eighth-sixteenth-eighth-sixteenth, where the direction of the beam on the + * first sixteenth note can help imply whether the rhythm is to be felt as + * three groups of eighth notes (typical) or as two groups of three-sixteenths + * (less common): + * ``` + * ┌───┬──┬──┐ ┌──┬──┬──┐ + * │ ├─ │ ─┤ vs │ ─┤ │ ─┤ + * │ │ │ │ │ │ │ │ + * ``` + */ + setPartialBeamSideAt(noteIndex, side) { + this.forcedPartialDirections[noteIndex] = side; + return this; + } + /** + * Restore the default direction of a partial beam (a secondary-level beam + * that does not connect to any other notes). + */ + unsetPartialBeamSideAt(noteIndex) { + delete this.forcedPartialDirections[noteIndex]; + return this; + } + /** Return the y coordinate for linear function. */ + getSlopeY(x, first_x_px, first_y_px, slope) { + return first_y_px + (x - first_x_px) * slope; + } + /** Calculate the best possible slope for the provided notes. */ + calculateSlope() { + const { notes, stem_direction: stemDirection, render_options: { max_slope, min_slope, slope_iterations, slope_cost }, } = this; + const firstNote = notes[0]; + const initialSlope = getStemSlope(firstNote, notes[notes.length - 1]); + const increment = (max_slope - min_slope) / slope_iterations; + let minCost = Number.MAX_VALUE; + let bestSlope = 0; + let yShift = 0; + // iterate through slope values to find best weighted fit + for (let slope = min_slope; slope <= max_slope; slope += increment) { + let totalStemExtension = 0; + let yShiftTemp = 0; + // iterate through notes, calculating y shift and stem extension + for (let i = 1; i < notes.length; ++i) { + const note = notes[i]; + if (note.hasStem() || note.isRest()) { + const adjustedStemTipY = this.getSlopeY(note.getStemX(), firstNote.getStemX(), firstNote.getStemExtents().topY, slope) + yShiftTemp; + const stemTipY = note.getStemExtents().topY; + // beam needs to be shifted up to accommodate note + if (stemTipY * stemDirection < adjustedStemTipY * stemDirection) { + const diff = Math.abs(stemTipY - adjustedStemTipY); + yShiftTemp += diff * -stemDirection; + totalStemExtension += diff * i; + } + else { + // beam overshoots note, account for the difference + totalStemExtension += (stemTipY - adjustedStemTipY) * stemDirection; + } + } + } + // most engraving books suggest aiming for a slope about half the angle of the + // difference between the first and last notes' stem length; + const idealSlope = initialSlope / 2; + const distanceFromIdeal = Math.abs(idealSlope - slope); + // This tries to align most beams to something closer to the idealSlope, but + // doesn't go crazy. To disable, set this.render_options.slope_cost = 0 + const cost = slope_cost * distanceFromIdeal + Math.abs(totalStemExtension); + // update state when a more ideal slope is found + if (cost < minCost) { + minCost = cost; + bestSlope = slope; + yShift = yShiftTemp; + } + } + this.slope = bestSlope; + this.y_shift = yShift; + } + /** Calculate a slope and y-shift for flat beams. */ + calculateFlatSlope() { + const { notes, stem_direction, render_options: { beam_width, min_flat_beam_offset, flat_beam_offset }, } = this; + // If a flat beam offset has not yet been supplied or calculated, + // generate one based on the notes in this particular note group + let total = 0; + let extremeY = 0; // Store the highest or lowest note here + let extremeBeamCount = 0; // The beam count of the extreme note + let currentExtreme = 0; + for (let i = 0; i < notes.length; i++) { + // Total up all of the offsets so we can average them out later + const note = notes[i]; + const stemTipY = note.getStemExtents().topY; + total += stemTipY; + // Store the highest (stems-up) or lowest (stems-down) note so the + // offset can be adjusted in case the average isn't enough + if (stem_direction === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN && currentExtreme < stemTipY) { + currentExtreme = stemTipY; + extremeY = Math.max(...note.getYs()); + extremeBeamCount = note.getBeamCount(); + } + else if (stem_direction === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP && (currentExtreme === 0 || currentExtreme > stemTipY)) { + currentExtreme = stemTipY; + extremeY = Math.min(...note.getYs()); + extremeBeamCount = note.getBeamCount(); + } + } + // Average the offsets to try and come up with a reasonable one that + // works for all of the notes in the beam group. + let offset = total / notes.length; + // In case the average isn't long enough, add or subtract some more + // based on the highest or lowest note (again, based on the stem + // direction). This also takes into account the added height due to + // the width of the beams. + const beamWidth = beam_width * 1.5; + const extremeTest = min_flat_beam_offset + extremeBeamCount * beamWidth; + const newOffset = extremeY + extremeTest * -stem_direction; + if (stem_direction === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN && offset < newOffset) { + offset = extremeY + extremeTest; + } + else if (stem_direction === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP && offset > newOffset) { + offset = extremeY - extremeTest; + } + if (!flat_beam_offset) { + // Set the offset for the group based on the calculations above. + this.render_options.flat_beam_offset = offset; + } + else if (stem_direction === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN && offset > flat_beam_offset) { + this.render_options.flat_beam_offset = offset; + } + else if (stem_direction === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP && offset < flat_beam_offset) { + this.render_options.flat_beam_offset = offset; + } + // for flat beams, the slope and y_shift are simply 0 + this.slope = 0; + this.y_shift = 0; + } + /** Return the Beam y offset. */ + getBeamYToDraw() { + const firstNote = this.notes[0]; + const firstStemTipY = firstNote.getStemExtents().topY; + let beamY = firstStemTipY; + // For flat beams, set the first and last Y to the offset, rather than + // using the note's stem extents. + if (this.render_options.flat_beams && this.render_options.flat_beam_offset) { + beamY = this.render_options.flat_beam_offset; + } + return beamY; + } + /** + * Create new stems for the notes in the beam, so that each stem + * extends into the beams. + */ + applyStemExtensions() { + const { notes, slope, y_shift, stem_direction, beam_count, render_options: { show_stemlets, stemlet_extension, beam_width }, } = this; + const firstNote = notes[0]; + const firstStemTipY = this.getBeamYToDraw(); + const firstStemX = firstNote.getStemX(); + for (let i = 0; i < notes.length; ++i) { + const note = notes[i]; + const stem = note.getStem(); + if (stem) { + const stemX = note.getStemX(); + const { topY: stemTipY } = note.getStemExtents(); + const beamedStemTipY = this.getSlopeY(stemX, firstStemX, firstStemTipY, slope) + y_shift; + const preBeamExtension = stem.getExtension(); + const beamExtension = stem_direction === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP ? stemTipY - beamedStemTipY : beamedStemTipY - stemTipY; + stem.setExtension(preBeamExtension + beamExtension); + stem.adjustHeightForBeam(); + if (note.isRest() && show_stemlets) { + const beamWidth = beam_width; + const totalBeamWidth = (beam_count - 1) * beamWidth * 1.5 + beamWidth; + stem.setVisibility(true).setStemlet(true, totalBeamWidth + stemlet_extension); + } + } + } + } + /** Return upper level beam direction. */ + lookupBeamDirection(duration, prev_tick, tick, next_tick, noteIndex) { + if (duration === '4') { + return BEAM_LEFT; + } + const forcedBeamDirection = this.forcedPartialDirections[noteIndex]; + if (forcedBeamDirection) + return forcedBeamDirection; + const lookup_duration = `${_tables__WEBPACK_IMPORTED_MODULE_3__.Tables.durationToNumber(duration) / 2}`; + const prev_note_gets_beam = prev_tick < _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.durationToTicks(lookup_duration); + const next_note_gets_beam = next_tick < _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.durationToTicks(lookup_duration); + const note_gets_beam = tick < _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.durationToTicks(lookup_duration); + if (prev_note_gets_beam && next_note_gets_beam && note_gets_beam) { + return BEAM_BOTH; + } + else if (prev_note_gets_beam && !next_note_gets_beam && note_gets_beam) { + return BEAM_LEFT; + } + else if (!prev_note_gets_beam && next_note_gets_beam && note_gets_beam) { + return BEAM_RIGHT; + } + return this.lookupBeamDirection(lookup_duration, prev_tick, tick, next_tick, noteIndex); + } + /** Get the x coordinates for the beam lines of specific `duration`. */ + getBeamLines(duration) { + const tick_of_duration = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.durationToTicks(duration); + let beam_started = false; + const beam_lines = []; + let current_beam = undefined; + const partial_beam_length = this.render_options.partial_beam_length; + let previous_should_break = false; + let tick_tally = 0; + for (let i = 0; i < this.notes.length; ++i) { + const note = this.notes[i]; + // See if we need to break secondary beams on this note. + const ticks = note.getTicks().value(); + tick_tally += ticks; + let should_break = false; + // 8th note beams are always drawn. + if (parseInt(duration, 10) >= 8) { + // First, check to see if any indices were set up through breakSecondaryAt() + should_break = this.break_on_indices.indexOf(i) !== -1; + // If the secondary breaks were auto-configured in the render options, + // handle that as well. + if (this.render_options.secondary_break_ticks && tick_tally >= this.render_options.secondary_break_ticks) { + tick_tally = 0; + should_break = true; + } + } + const note_gets_beam = note.getIntrinsicTicks() < tick_of_duration; + const stem_x = note.getStemX() - _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.WIDTH / 2; + // Check to see if the next note in the group will get a beam at this + // level. This will help to inform the partial beam logic below. + const prev_note = this.notes[i - 1]; + const next_note = this.notes[i + 1]; + const next_note_gets_beam = next_note && next_note.getIntrinsicTicks() < tick_of_duration; + const prev_note_gets_beam = prev_note && prev_note.getIntrinsicTicks() < tick_of_duration; + const beam_alone = prev_note && next_note && note_gets_beam && !prev_note_gets_beam && !next_note_gets_beam; + // const beam_alone = note_gets_beam && !prev_note_gets_beam && !next_note_gets_beam; + if (note_gets_beam) { + // This note gets a beam at the current level + if (beam_started) { + // We're currently in the middle of a beam. Just continue it on to + // the stem X of the current note. + current_beam = beam_lines[beam_lines.length - 1]; + current_beam.end = stem_x; + // If a secondary beam break is set up, end the beam right now. + if (should_break) { + beam_started = false; + if (next_note && !next_note_gets_beam && current_beam.end === undefined) { + // This note gets a beam,.but the next one does not. This means + // we need a partial pointing right. + current_beam.end = current_beam.start - partial_beam_length; + } + } + } + else { + // No beam started yet. Start a new one. + current_beam = { start: stem_x, end: undefined }; + beam_started = true; + if (beam_alone) { + // previous and next beam exists and does not get a beam but current gets it. + const prev_tick = prev_note.getIntrinsicTicks(); + const next_tick = next_note.getIntrinsicTicks(); + const tick = note.getIntrinsicTicks(); + const beam_direction = this.lookupBeamDirection(duration, prev_tick, tick, next_tick, i); + if ([BEAM_LEFT, BEAM_BOTH].includes(beam_direction)) { + current_beam.end = current_beam.start - partial_beam_length; + } + else { + current_beam.end = current_beam.start + partial_beam_length; + } + } + else if (!next_note_gets_beam) { + // The next note doesn't get a beam. Draw a partial. + if ((previous_should_break || i === 0) && next_note) { + // This is the first note (but not the last one), or it is + // following a secondary break. Draw a partial to the right. + current_beam.end = current_beam.start + partial_beam_length; + } + else { + // By default, draw a partial to the left. + current_beam.end = current_beam.start - partial_beam_length; + } + } + else if (should_break) { + // This note should have a secondary break after it. Even though + // we just started a beam, it needs to end immediately. + current_beam.end = current_beam.start - partial_beam_length; + beam_started = false; + } + beam_lines.push(current_beam); + } + } + else { + // The current note does not get a beam. + beam_started = false; + } + // Store the secondary break flag to inform the partial beam logic in + // the next iteration of the loop. + previous_should_break = should_break; + } + // Add a partial beam pointing left if this is the last note in the group + const last_beam = beam_lines[beam_lines.length - 1]; + if (last_beam && last_beam.end === undefined) { + last_beam.end = last_beam.start - partial_beam_length; + } + return beam_lines; + } + /** Render the stems for each note. */ + drawStems(ctx) { + this.notes.forEach((note) => { + const stem = note.getStem(); + if (stem) { + const stem_x = note.getStemX(); + stem.setNoteHeadXBounds(stem_x, stem_x); + stem.setContext(ctx).draw(); + } + }, this); + } + // Render the beam lines + drawBeamLines(ctx) { + const valid_beam_durations = ['4', '8', '16', '32', '64']; + const firstNote = this.notes[0]; + let beamY = this.getBeamYToDraw(); + const firstStemX = firstNote.getStemX(); + const beamThickness = this.render_options.beam_width * this.stem_direction; + // Draw the beams. + for (let i = 0; i < valid_beam_durations.length; ++i) { + const duration = valid_beam_durations[i]; + const beamLines = this.getBeamLines(duration); + for (let j = 0; j < beamLines.length; ++j) { + const beam_line = beamLines[j]; + const startBeamX = beam_line.start; + const startBeamY = this.getSlopeY(startBeamX, firstStemX, beamY, this.slope); + const lastBeamX = beam_line.end; + if (lastBeamX) { + const lastBeamY = this.getSlopeY(lastBeamX, firstStemX, beamY, this.slope); + ctx.openGroup('beam', this.getAttribute('id')); + ctx.beginPath(); + ctx.moveTo(startBeamX, startBeamY); + ctx.lineTo(startBeamX, startBeamY + beamThickness); + ctx.lineTo(lastBeamX + 1, lastBeamY + beamThickness); + ctx.lineTo(lastBeamX + 1, lastBeamY); + ctx.closePath(); + ctx.fill(); + ctx.closeGroup(); + } + else { + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('NoLastBeamX', 'lastBeamX undefined.'); + } + } + beamY += beamThickness * 1.5; + } + } + /** Pre-format the beam. */ + preFormat() { + return this; + } + /** + * Post-format the beam. This can only be called after + * the notes in the beam have both `x` and `y` values. ie: they've + * been formatted and have staves. + */ + postFormat() { + if (this.postFormatted) + return; + // Calculate a smart slope if we're not forcing the beams to be flat. + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isTabNote)(this.notes[0]) || this.render_options.flat_beams) { + this.calculateFlatSlope(); + } + else { + this.calculateSlope(); + } + this.applyStemExtensions(); + this.postFormatted = true; + } + /** Render the beam to the canvas context */ + draw() { + const ctx = this.checkContext(); + this.setRendered(); + if (this.unbeamable) + return; + if (!this.postFormatted) { + this.postFormat(); + } + this.drawStems(ctx); + this.applyStyle(); + this.drawBeamLines(ctx); + this.restoreStyle(); + } +} + + +/***/ }), + +/***/ "./src/bend.ts": +/*!*********************!*\ + !*** ./src/bend.ts ***! + \*********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Bend": () => (/* binding */ Bend) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _textformatter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./textformatter */ "./src/textformatter.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + +/** Bend implements tablature bends. */ +class Bend extends _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier { + /** + * Example of a phrase: + * ``` + * [{ + * type: UP, + * text: "whole" + * width: 8; + * }, + * { + * type: DOWN, + * text: "whole" + * width: 8; + * }, + * { + * type: UP, + * text: "half" + * width: 8; + * }, + * { + * type: UP, + * text: "whole" + * width: 8; + * }, + * { + * type: DOWN, + * text: "1 1/2" + * width: 8; + * }] + * ``` + * @param text text for bend ("Full", "Half", etc.) (DEPRECATED) + * @param release if true, render a release. (DEPRECATED) + * @param phrase if set, ignore "text" and "release", and use the more sophisticated phrase specified + */ + constructor(text, release = false, phrase) { + super(); + this.text = text; + this.x_shift = 0; + this.release = release; + this.tap = ''; + this.resetFont(); + this.render_options = { + line_width: 1.5, + line_style: '#777777', + bend_width: 8, + release_width: 8, + }; + if (phrase) { + this.phrase = phrase; + } + else { + // Backward compatibility + this.phrase = [{ type: Bend.UP, text: this.text }]; + if (this.release) + this.phrase.push({ type: Bend.DOWN, text: '' }); + } + this.updateWidth(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.Bend; + } + static get UP() { + return 0; + } + static get DOWN() { + return 1; + } + // Arrange bends in `ModifierContext` + static format(bends, state) { + if (!bends || bends.length === 0) + return false; + let last_width = 0; + // Format Bends + for (let i = 0; i < bends.length; ++i) { + const bend = bends[i]; + const note = bend.checkAttachedNote(); + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_3__.isTabNote)(note)) { + const stringPos = note.leastString() - 1; + if (state.top_text_line < stringPos) { + state.top_text_line = stringPos; + } + } + bend.setXShift(last_width); + last_width = bend.getWidth(); + bend.setTextLine(state.top_text_line); + } + state.right_shift += last_width; + state.top_text_line += 1; + return true; + } + /** Set horizontal shift in pixels. */ + setXShift(value) { + this.x_shift = value; + this.updateWidth(); + return this; + } + setTap(value) { + this.tap = value; + return this; + } + /** Get text provided in the constructor. */ + getText() { + return this.text; + } + getTextHeight() { + const textFormatter = _textformatter__WEBPACK_IMPORTED_MODULE_2__.TextFormatter.create(this.textFont); + return textFormatter.maxHeight; + } + /** Recalculate width. */ + updateWidth() { + const textFormatter = _textformatter__WEBPACK_IMPORTED_MODULE_2__.TextFormatter.create(this.textFont); + const measureText = (text) => { + return textFormatter.getWidthForTextInPx(text); + }; + let totalWidth = 0; + for (let i = 0; i < this.phrase.length; ++i) { + const bend = this.phrase[i]; + if (bend.width !== undefined) { + totalWidth += bend.width; + } + else { + const additional_width = bend.type === Bend.UP ? this.render_options.bend_width : this.render_options.release_width; + bend.width = Math.max(additional_width, measureText(bend.text)) + 3; + bend.draw_width = bend.width / 2; + totalWidth += bend.width; + } + } + this.setWidth(totalWidth + this.x_shift); + return this; + } + /** Draw the bend on the rendering context. */ + draw() { + var _a; + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const start = note.getModifierStartXY(_modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.RIGHT, this.index); + start.x += 3; + start.y += 0.5; + const x_shift = this.x_shift; + const stave = note.checkStave(); + const spacing = stave.getSpacingBetweenLines(); + const lowestY = note.getYs().reduce((a, b) => (a < b ? a : b)); + // this.text_line is relative to top string in the group. + const bend_height = start.y - ((this.text_line + 1) * spacing + start.y - lowestY) + 3; + const annotation_y = start.y - ((this.text_line + 1) * spacing + start.y - lowestY) - 1; + const renderBend = (x, y, width, height) => { + const cp_x = x + width; + const cp_y = y; + ctx.save(); + ctx.beginPath(); + ctx.setLineWidth(this.render_options.line_width); + ctx.setStrokeStyle(this.render_options.line_style); + ctx.setFillStyle(this.render_options.line_style); + ctx.moveTo(x, y); + ctx.quadraticCurveTo(cp_x, cp_y, x + width, height); + ctx.stroke(); + ctx.restore(); + }; + const renderRelease = (x, y, width, height) => { + ctx.save(); + ctx.beginPath(); + ctx.setLineWidth(this.render_options.line_width); + ctx.setStrokeStyle(this.render_options.line_style); + ctx.setFillStyle(this.render_options.line_style); + ctx.moveTo(x, height); + ctx.quadraticCurveTo(x + width, height, x + width, y); + ctx.stroke(); + ctx.restore(); + }; + const renderArrowHead = (x, y, direction) => { + const width = 4; + const yBase = y + width * direction; + ctx.beginPath(); + ctx.moveTo(x, y); // tip of the arrow + ctx.lineTo(x - width, yBase); + ctx.lineTo(x + width, yBase); + ctx.closePath(); + ctx.fill(); + }; + const renderText = (x, text) => { + ctx.save(); + ctx.setFont(this.textFont); + const render_x = x - ctx.measureText(text).width / 2; + ctx.fillText(text, render_x, annotation_y); + ctx.restore(); + }; + let last_bend = undefined; + let last_bend_draw_width = 0; + let last_drawn_width = 0; + if ((_a = this.tap) === null || _a === void 0 ? void 0 : _a.length) { + const tapStart = note.getModifierStartXY(_modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.CENTER, this.index); + renderText(tapStart.x, this.tap); + } + for (let i = 0; i < this.phrase.length; ++i) { + const bend = this.phrase[i]; + if (!bend.draw_width) + bend.draw_width = 0; + if (i === 0) + bend.draw_width += x_shift; + last_drawn_width = bend.draw_width + last_bend_draw_width - (i === 1 ? x_shift : 0); + if (bend.type === Bend.UP) { + if (last_bend && last_bend.type === Bend.UP) { + renderArrowHead(start.x, bend_height, +1); + } + renderBend(start.x, start.y, last_drawn_width, bend_height); + } + if (bend.type === Bend.DOWN) { + if (last_bend && last_bend.type === Bend.UP) { + renderRelease(start.x, start.y, last_drawn_width, bend_height); + } + if (last_bend && last_bend.type === Bend.DOWN) { + renderArrowHead(start.x, start.y, -1); + renderRelease(start.x, start.y, last_drawn_width, bend_height); + } + if (!last_bend) { + last_drawn_width = bend.draw_width; + renderRelease(start.x, start.y, last_drawn_width, bend_height); + } + } + renderText(start.x + last_drawn_width, bend.text); + last_bend = bend; + last_bend_draw_width = bend.draw_width; + last_bend.x = start.x; + start.x += last_drawn_width; + } + if (!last_bend || last_bend.x == undefined) { + throw new _util__WEBPACK_IMPORTED_MODULE_4__.RuntimeError('NoLastBendForBend', 'Internal error.'); + } + // Final arrowhead and text + if (last_bend.type === Bend.UP) { + renderArrowHead(last_bend.x + last_drawn_width, bend_height, +1); + } + else if (last_bend.type === Bend.DOWN) { + renderArrowHead(last_bend.x + last_drawn_width, start.y, -1); + } + } +} +/** Default text font. */ +Bend.TEXT_FONT = Object.assign({}, _element__WEBPACK_IMPORTED_MODULE_0__.Element.TEXT_FONT); + + +/***/ }), + +/***/ "./src/boundingbox.ts": +/*!****************************!*\ + !*** ./src/boundingbox.ts ***! + \****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "BoundingBox": () => (/* binding */ BoundingBox) +/* harmony export */ }); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +class BoundingBox { + constructor(x, y, w, h) { + this.x = x; + this.y = y; + this.w = w; + this.h = h; + } + /** + * Create a new copy. + */ + static copy(that) { + return new BoundingBox(that.x, that.y, that.w, that.h); + } + /** Get x position. */ + getX() { + return this.x; + } + /** Get y position. */ + getY() { + return this.y; + } + /** Get width. */ + getW() { + return this.w; + } + /** Get height. */ + getH() { + return this.h; + } + /** Set x position. */ + setX(x) { + this.x = x; + return this; + } + /** Set y position. */ + setY(y) { + this.y = y; + return this; + } + /** Set width. */ + setW(w) { + this.w = w; + return this; + } + /** Set height. */ + setH(h) { + this.h = h; + return this; + } + /** Move to position. */ + move(x, y) { + this.x += x; + this.y += y; + return this; + } + /** Clone. */ + clone() { + return BoundingBox.copy(this); + } + /** + * Merge my box with given box. Creates a bigger bounding box unless + * the given box is contained in this one. + */ + mergeWith(boundingBox) { + const that = boundingBox; + const new_x = this.x < that.x ? this.x : that.x; + const new_y = this.y < that.y ? this.y : that.y; + const new_w = Math.max(this.x + this.w, that.x + that.w) - new_x; + const new_h = Math.max(this.y + this.h, that.y + that.h) - new_y; + this.x = new_x; + this.y = new_y; + this.w = new_w; + this.h = new_h; + return this; + } +} + + +/***/ }), + +/***/ "./src/boundingboxcomputation.ts": +/*!***************************************!*\ + !*** ./src/boundingboxcomputation.ts ***! + \***************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "BoundingBoxComputation": () => (/* binding */ BoundingBoxComputation) +/* harmony export */ }); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +/** + * BoundingBoxComputation computes metrics for a bounding box by continuously + * taking canvas path commands. + * + * Warning: This class is merely a crutch to get bounding box information without + * explicit metadata. This is likely to get deprecated following SMuFL support. + * + * based on: https://github.com/canvg/canvg/blob/master/src/BoundingBox.ts (MIT License) + */ +class BoundingBoxComputation { + constructor() { + this.x1 = Number.NaN; + this.y1 = Number.NaN; + this.x2 = Number.NaN; + this.y2 = Number.NaN; + } + /** Get calculated X1. */ + getX1() { + return this.x1; + } + /** Get calculated Y1. */ + getY1() { + return this.y1; + } + /** Get calculated width. */ + width() { + return this.x2 - this.x1; + } + /** Get calculated height. */ + height() { + return this.y2 - this.y1; + } + /** Add point to BoundingBox. */ + addPoint(x, y) { + if (isNaN(this.x1) || x < this.x1) + this.x1 = x; + if (isNaN(this.x2) || x > this.x2) + this.x2 = x; + if (isNaN(this.y1) || y < this.y1) + this.y1 = y; + if (isNaN(this.y2) || y > this.y2) + this.y2 = y; + } + /** Add X to BoundingBox. */ + addX(x) { + this.addPoint(x, this.y1); + } + /** Add Y to BoundingBox. */ + addY(y) { + this.addPoint(this.x1, y); + } + /** Add quadratic curve to BoundingBox. */ + addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) { + this.addPoint(p0x, p0y); + this.addPoint(p2x, p2y); + const p01x = p1x - p0x; + const p12x = p2x - p1x; + let denom = p01x - p12x; + if (denom != 0) { + const t = p01x / denom; + if (t > 0 && t < 1) { + const it = 1 - t; + this.addX(it * it * p0x + 2 * it * t * p1x + t * t * p2x); + } + } + const p01y = p1y - p0y; + const p12y = p2y - p1y; + denom = p01y - p12y; + if (denom != 0) { + const t = p01y / denom; + if (t > 0 && t < 1) { + const it = 1 - t; + this.addY(it * it * p0y + 2 * it * t * p1y + t * t * p2y); + } + } + } + /** Add bezier curve to BoundingBox. */ + addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) { + // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html + const p0 = [p0x, p0y]; + const p1 = [p1x, p1y]; + const p2 = [p2x, p2y]; + const p3 = [p3x, p3y]; + let i; + this.addPoint(p0[0], p0[1]); + this.addPoint(p3[0], p3[1]); + const f = (t, i) => Math.pow(1 - t, 3) * p0[i] + + 3 * Math.pow(1 - t, 2) * t * p1[i] + + 3 * (1 - t) * Math.pow(t, 2) * p2[i] + + Math.pow(t, 3) * p3[i]; + for (i = 0; i <= 1; i++) { + const b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i]; + const a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i]; + const c = 3 * p1[i] - 3 * p0[i]; + if (a === 0) { + if (b === 0) + continue; + const t = -c / b; + if (0 < t && t < 1) { + if (i === 0) + this.addX(f(t, i)); + if (i === 1) + this.addY(f(t, i)); + } + continue; + } + const b2ac = Math.pow(b, 2) - 4 * c * a; + if (b2ac < 0) + continue; + const t1 = (-b + Math.sqrt(b2ac)) / (2 * a); + if (0 < t1 && t1 < 1) { + if (i === 0) + this.addX(f(t1, i)); + if (i === 1) + this.addY(f(t1, i)); + } + const t2 = (-b - Math.sqrt(b2ac)) / (2 * a); + if (0 < t2 && t2 < 1) { + if (i === 0) + this.addX(f(t2, i)); + if (i === 1) + this.addY(f(t2, i)); + } + } + } +} + + +/***/ }), + +/***/ "./src/canvascontext.ts": +/*!******************************!*\ + !*** ./src/canvascontext.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "CanvasContext": () => (/* binding */ CanvasContext) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _rendercontext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rendercontext */ "./src/rendercontext.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +/* harmony import */ var _web__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./web */ "./src/web.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + +/** + * A rendering context for the Canvas backend. This class serves as a proxy for the + * underlying CanvasRenderingContext2D object, part of the browser's API. + */ +class CanvasContext extends _rendercontext__WEBPACK_IMPORTED_MODULE_1__.RenderContext { + constructor(context) { + super(); + /** Height of one line of text (in pixels). */ + this.textHeight = 0; + this.context2D = context; + if (!context.canvas) { + this.canvas = { + width: CanvasContext.WIDTH, + height: CanvasContext.HEIGHT, + }; + } + else { + this.canvas = context.canvas; + } + } + static get WIDTH() { + return 600; + } + static get HEIGHT() { + return 400; + } + static get CANVAS_BROWSER_SIZE_LIMIT() { + return 32767; // Chrome/Firefox. Could be determined more precisely by npm module canvas-size. + } + /** + * Ensure that width and height do not exceed the browser limit. + * @returns array of [width, height] clamped to the browser limit. + */ + static sanitizeCanvasDims(width, height) { + const limit = this.CANVAS_BROWSER_SIZE_LIMIT; + if (Math.max(width, height) > limit) { + (0,_util__WEBPACK_IMPORTED_MODULE_2__.warn)('Canvas dimensions exceed browser limit. Cropping to ' + limit); + if (width > limit) { + width = limit; + } + if (height > limit) { + height = limit; + } + } + return [width, height]; + } + /** + * Set all pixels to transparent black rgba(0,0,0,0). + */ + clear() { + this.context2D.clearRect(0, 0, this.canvas.width, this.canvas.height); + } + // eslint-disable-next-line + openGroup(cls, id, attrs) { + // Containers not implemented. + } + closeGroup() { + // Containers not implemented. + } + // eslint-disable-next-line + add(child) { + // Containers not implemented. + } + setFillStyle(style) { + this.context2D.fillStyle = style; + return this; + } + /** CanvasContext ignores `setBackgroundFillStyle()`. */ + // eslint-disable-next-line + setBackgroundFillStyle(style) { + // DO NOTHING + return this; + } + setStrokeStyle(style) { + this.context2D.strokeStyle = style; + return this; + } + setShadowColor(color) { + this.context2D.shadowColor = color; + return this; + } + setShadowBlur(blur) { + // CanvasRenderingContext2D does not scale the shadow blur by the current + // transform, so we have to do it manually. We assume uniform scaling + // (though allow for rotation) because the blur can only be scaled + // uniformly anyway. + const t = this.context2D.getTransform(); + const scale = Math.sqrt(t.a * t.a + t.b * t.b + t.c * t.c + t.d * t.d); + this.context2D.shadowBlur = scale * blur; + return this; + } + setLineWidth(width) { + this.context2D.lineWidth = width; + return this; + } + setLineCap(capType) { + this.context2D.lineCap = capType; + return this; + } + setLineDash(dash) { + this.context2D.setLineDash(dash); + return this; + } + scale(x, y) { + this.context2D.scale(x, y); + return this; + } + resize(width, height) { + const canvas = this.context2D.canvas; + const devicePixelRatio = (0,_util__WEBPACK_IMPORTED_MODULE_2__.globalObject)().devicePixelRatio || 1; + // Scale the canvas size by the device pixel ratio clamping to the maximum supported size. + [width, height] = CanvasContext.sanitizeCanvasDims(width * devicePixelRatio, height * devicePixelRatio); + // Divide back down by the pixel ratio and convert to integers. + width = (width / devicePixelRatio) | 0; + height = (height / devicePixelRatio) | 0; + canvas.width = width * devicePixelRatio; + canvas.height = height * devicePixelRatio; + // The canvas could be an instance of either HTMLCanvasElement or an OffscreenCanvas. + // Only HTMLCanvasElement has a style attribute. + if ((0,_web__WEBPACK_IMPORTED_MODULE_3__.isHTMLCanvas)(canvas)) { + canvas.style.width = width + 'px'; + canvas.style.height = height + 'px'; + } + return this.scale(devicePixelRatio, devicePixelRatio); + } + rect(x, y, width, height) { + this.context2D.rect(x, y, width, height); + return this; + } + fillRect(x, y, width, height) { + this.context2D.fillRect(x, y, width, height); + return this; + } + /** + * Set the pixels in a rectangular area to transparent black rgba(0,0,0,0). + */ + clearRect(x, y, width, height) { + this.context2D.clearRect(x, y, width, height); + return this; + } + beginPath() { + this.context2D.beginPath(); + return this; + } + moveTo(x, y) { + this.context2D.moveTo(x, y); + return this; + } + lineTo(x, y) { + this.context2D.lineTo(x, y); + return this; + } + bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) { + this.context2D.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y); + return this; + } + quadraticCurveTo(cpx, cpy, x, y) { + this.context2D.quadraticCurveTo(cpx, cpy, x, y); + return this; + } + arc(x, y, radius, startAngle, endAngle, counterclockwise) { + this.context2D.arc(x, y, radius, startAngle, endAngle, counterclockwise); + return this; + } + fill() { + this.context2D.fill(); + return this; + } + stroke() { + this.context2D.stroke(); + return this; + } + closePath() { + this.context2D.closePath(); + return this; + } + measureText(text) { + const metrics = this.context2D.measureText(text); + let y = 0; + let height = 0; + if (metrics.fontBoundingBoxAscent) { + y = -metrics.fontBoundingBoxAscent; + height = metrics.fontBoundingBoxDescent + metrics.fontBoundingBoxAscent; + } + else { + y = -metrics.actualBoundingBoxAscent; + height = metrics.actualBoundingBoxDescent + metrics.actualBoundingBoxAscent; + } + // Return x, y, width & height in the same manner as svg getBBox + return { + x: 0, + y: y, + width: metrics.width, + height: height, + }; + } + fillText(text, x, y) { + this.context2D.fillText(text, x, y); + return this; + } + save() { + this.context2D.save(); + return this; + } + restore() { + this.context2D.restore(); + return this; + } + set fillStyle(style) { + this.context2D.fillStyle = style; + } + get fillStyle() { + return this.context2D.fillStyle; + } + set strokeStyle(style) { + this.context2D.strokeStyle = style; + } + get strokeStyle() { + return this.context2D.strokeStyle; + } + /** + * @param f is 1) a `FontInfo` object or + * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or + * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided). + * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt'). + * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900). + * @param style is a string (e.g., 'italic', 'normal'). + */ + setFont(f, size, weight, style) { + const fontInfo = _font__WEBPACK_IMPORTED_MODULE_0__.Font.validate(f, size, weight, style); + this.context2D.font = _font__WEBPACK_IMPORTED_MODULE_0__.Font.toCSSString(fontInfo); + this.textHeight = _font__WEBPACK_IMPORTED_MODULE_0__.Font.convertSizeToPixelValue(fontInfo.size); + return this; + } + /** Return a string of the form `'italic bold 15pt Arial'` */ + getFont() { + return this.context2D.font; + } +} + + +/***/ }), + +/***/ "./src/chordsymbol.ts": +/*!****************************!*\ + !*** ./src/chordsymbol.ts ***! + \****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "ChordSymbolHorizontalJustify": () => (/* binding */ ChordSymbolHorizontalJustify), +/* harmony export */ "ChordSymbolVerticalJustify": () => (/* binding */ ChordSymbolVerticalJustify), +/* harmony export */ "SymbolTypes": () => (/* binding */ SymbolTypes), +/* harmony export */ "SymbolModifiers": () => (/* binding */ SymbolModifiers), +/* harmony export */ "ChordSymbol": () => (/* binding */ ChordSymbol) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _textformatter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./textformatter */ "./src/textformatter.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// Author: Aaron (@AaronDavidNewman) +// +// This implements chord symbols above/below a chord. +// Chord symbols are modifiers that can be attached to notes. +// They can contain multiple 'blocks' which represent text or +// glyphs with various positioning options. +// +// See `tests/chordsymbol_tests.ts` for usage examples. + + + + + + + +// To enable logging for this class. Set `Vex.Flow.ChordSymbol.DEBUG` to `true`. +// eslint-disable-next-line +function L(...args) { + if (ChordSymbol.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_6__.log)('Vex.Flow.ChordSymbol', args); +} +var ChordSymbolHorizontalJustify; +(function (ChordSymbolHorizontalJustify) { + ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify["LEFT"] = 1] = "LEFT"; + ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify["CENTER"] = 2] = "CENTER"; + ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify["RIGHT"] = 3] = "RIGHT"; + ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify["CENTER_STEM"] = 4] = "CENTER_STEM"; +})(ChordSymbolHorizontalJustify || (ChordSymbolHorizontalJustify = {})); +var ChordSymbolVerticalJustify; +(function (ChordSymbolVerticalJustify) { + ChordSymbolVerticalJustify[ChordSymbolVerticalJustify["TOP"] = 1] = "TOP"; + ChordSymbolVerticalJustify[ChordSymbolVerticalJustify["BOTTOM"] = 2] = "BOTTOM"; +})(ChordSymbolVerticalJustify || (ChordSymbolVerticalJustify = {})); +var SymbolTypes; +(function (SymbolTypes) { + SymbolTypes[SymbolTypes["GLYPH"] = 1] = "GLYPH"; + SymbolTypes[SymbolTypes["TEXT"] = 2] = "TEXT"; + SymbolTypes[SymbolTypes["LINE"] = 3] = "LINE"; +})(SymbolTypes || (SymbolTypes = {})); +var SymbolModifiers; +(function (SymbolModifiers) { + SymbolModifiers[SymbolModifiers["NONE"] = 1] = "NONE"; + SymbolModifiers[SymbolModifiers["SUBSCRIPT"] = 2] = "SUBSCRIPT"; + SymbolModifiers[SymbolModifiers["SUPERSCRIPT"] = 3] = "SUPERSCRIPT"; +})(SymbolModifiers || (SymbolModifiers = {})); +/** + * ChordSymbol is a modifier that creates a chord symbol above/below a chord. + * As a modifier, it is attached to an existing note. + */ +class ChordSymbol extends _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier { + constructor() { + super(); + this.symbolBlocks = []; + this.horizontal = ChordSymbolHorizontalJustify.LEFT; + this.vertical = ChordSymbolVerticalJustify.TOP; + this.useKerning = true; + this.reportWidth = true; + this.resetFont(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_5__.Category.ChordSymbol; + } + static get superSubRatio() { + return ChordSymbol.metrics.global.superSubRatio; + } + /** Currently unused: Globally turn off text formatting, if the built-in formatting does not work for your font. */ + static set NO_TEXT_FORMAT(val) { + ChordSymbol.noFormat = val; + } + static get NO_TEXT_FORMAT() { + return ChordSymbol.noFormat; + } + // eslint-disable-next-line + static getMetricForGlyph(glyphCode) { + if (ChordSymbol.metrics[glyphCode]) { + return ChordSymbol.metrics[glyphCode]; + } + return undefined; + } + static get engravingFontResolution() { + return _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().getResolution(); + } + static get spacingBetweenBlocks() { + return ChordSymbol.metrics.global.spacing / ChordSymbol.engravingFontResolution; + } + static getWidthForGlyph(glyph) { + const metric = ChordSymbol.getMetricForGlyph(glyph.code); + if (!metric) { + return 0.65; // probably should do something here. + } + return metric.advanceWidth / ChordSymbol.engravingFontResolution; + } + static getYShiftForGlyph(glyph) { + const metric = ChordSymbol.getMetricForGlyph(glyph.code); + if (!metric) { + return 0; + } + return metric.yOffset / ChordSymbol.engravingFontResolution; + } + static getXShiftForGlyph(glyph) { + const metric = ChordSymbol.getMetricForGlyph(glyph.code); + if (!metric) { + return 0; + } + return (-1 * metric.leftSideBearing) / ChordSymbol.engravingFontResolution; + } + static get superscriptOffset() { + return ChordSymbol.metrics.global.superscriptOffset / ChordSymbol.engravingFontResolution; + } + static get subscriptOffset() { + return ChordSymbol.metrics.global.subscriptOffset / ChordSymbol.engravingFontResolution; + } + static get kerningOffset() { + return ChordSymbol.metrics.global.kerningOffset / ChordSymbol.engravingFontResolution; + } + // eslint-disable-next-line + static get metrics() { + return _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().getMetrics().glyphs.chordSymbol; + } + static get lowerKerningText() { + // For example, see: `bravura_metrics.ts` + // BravuraMetrics.glyphs.chordSymbol.global.lowerKerningText, which returns an array of letters. + // ['D', 'F', 'P', 'T', 'V', 'Y'] + return ChordSymbol.metrics.global.lowerKerningText; + } + static get upperKerningText() { + return ChordSymbol.metrics.global.upperKerningText; + } + static isSuperscript(block) { + return block.symbolModifier !== undefined && block.symbolModifier === SymbolModifiers.SUPERSCRIPT; + } + static isSubscript(block) { + return block.symbolModifier !== undefined && block.symbolModifier === SymbolModifiers.SUBSCRIPT; + } + static get minPadding() { + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont(); + return musicFont.lookupMetric('glyphs.noteHead.minPadding'); + } + /** + * Estimate the width of the whole chord symbol, based on the sum of the widths of the individual blocks. + * Estimate how many lines above/below the staff we need. + */ + static format(symbols, state) { + var _a; + if (!symbols || symbols.length === 0) + return false; + let width = 0; + let nonSuperWidth = 0; + let leftWidth = 0; + let rightWidth = 0; + let maxLeftGlyphWidth = 0; + let maxRightGlyphWidth = 0; + for (const symbol of symbols) { + const fontSize = _font__WEBPACK_IMPORTED_MODULE_0__.Font.convertSizeToPointValue((_a = symbol.textFont) === null || _a === void 0 ? void 0 : _a.size); + const fontAdj = _font__WEBPACK_IMPORTED_MODULE_0__.Font.scaleSize(fontSize, 0.05); + const glyphAdj = fontAdj * 2; + const note = symbol.checkAttachedNote(); + let symbolWidth = 0; + let lineSpaces = 1; + let vAlign = false; + for (let j = 0; j < symbol.symbolBlocks.length; ++j) { + const block = symbol.symbolBlocks[j]; + const sup = ChordSymbol.isSuperscript(block); + const sub = ChordSymbol.isSubscript(block); + const superSubScale = sup || sub ? ChordSymbol.superSubRatio : 1; + const adj = block.symbolType === SymbolTypes.GLYPH ? glyphAdj * superSubScale : fontAdj * superSubScale; + // If there are super/subscripts, they extend beyond the line so + // assume they take up 2 lines + if (sup || sub) { + lineSpaces = 2; + } + // If there is a symbol-specific offset, add it but consider font + // size since font and glyphs will be interspersed. + const fontSize = symbol.textFormatter.fontSizeInPixels; + const superSubFontSize = fontSize * superSubScale; + if (block.symbolType === SymbolTypes.GLYPH && block.glyph !== undefined) { + block.width = ChordSymbol.getWidthForGlyph(block.glyph) * superSubFontSize; + block.yShift += ChordSymbol.getYShiftForGlyph(block.glyph) * superSubFontSize; + block.xShift += ChordSymbol.getXShiftForGlyph(block.glyph) * superSubFontSize; + block.glyph.scale = block.glyph.scale * adj; + } + else if (block.symbolType === SymbolTypes.TEXT) { + block.width = block.width * superSubFontSize; + block.yShift += symbol.getYOffsetForText(block.text) * adj; + } + if (block.symbolType === SymbolTypes.GLYPH && + block.glyph !== undefined && + block.glyph.code === ChordSymbol.glyphs.over.code) { + lineSpaces = 2; + } + block.width += ChordSymbol.spacingBetweenBlocks * fontSize * superSubScale; + // If a subscript immediately follows a superscript block, try to + // overlay them. + if (sup && j > 0) { + const prev = symbol.symbolBlocks[j - 1]; + if (!ChordSymbol.isSuperscript(prev)) { + nonSuperWidth = width; + } + } + if (sub && nonSuperWidth > 0) { + vAlign = true; + // slide the symbol over so it lines up with superscript + block.xShift = block.xShift + (nonSuperWidth - width); + width = nonSuperWidth; + nonSuperWidth = 0; + // If we have vertically lined up, turn kerning off. + symbol.setEnableKerning(false); + } + if (!sup && !sub) { + nonSuperWidth = 0; + } + block.vAlign = vAlign; + width += block.width; + symbolWidth = width; + } + // make kerning adjustments after computing super/subscripts + symbol.updateKerningAdjustments(); + symbol.updateOverBarAdjustments(); + if (symbol.getVertical() === ChordSymbolVerticalJustify.TOP) { + symbol.setTextLine(state.top_text_line); + state.top_text_line += lineSpaces; + } + else { + symbol.setTextLine(state.text_line + 1); + state.text_line += lineSpaces + 1; + } + if (symbol.getReportWidth() && (0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isStemmableNote)(note)) { + const glyphWidth = note.getGlyph().getWidth(); + if (symbol.getHorizontal() === ChordSymbolHorizontalJustify.LEFT) { + maxLeftGlyphWidth = Math.max(glyphWidth, maxLeftGlyphWidth); + leftWidth = Math.max(leftWidth, symbolWidth) + ChordSymbol.minPadding; + } + else if (symbol.getHorizontal() === ChordSymbolHorizontalJustify.RIGHT) { + maxRightGlyphWidth = Math.max(glyphWidth, maxRightGlyphWidth); + rightWidth = Math.max(rightWidth, symbolWidth); + } + else { + leftWidth = Math.max(leftWidth, symbolWidth / 2) + ChordSymbol.minPadding; + rightWidth = Math.max(rightWidth, symbolWidth / 2); + maxLeftGlyphWidth = Math.max(glyphWidth / 2, maxLeftGlyphWidth); + maxRightGlyphWidth = Math.max(glyphWidth / 2, maxRightGlyphWidth); + } + } + width = 0; // reset symbol width + } + const rightOverlap = Math.min(Math.max(rightWidth - maxRightGlyphWidth, 0), Math.max(rightWidth - state.right_shift, 0)); + const leftOverlap = Math.min(Math.max(leftWidth - maxLeftGlyphWidth, 0), Math.max(leftWidth - state.left_shift, 0)); + state.left_shift += leftOverlap; + state.right_shift += rightOverlap; + return true; + } + /** + * Default text font. + * Choose a font family that works well with the current music engraving font. + * @override `Element.TEXT_FONT`. + */ + static get TEXT_FONT() { + let family = 'Roboto Slab, Times, serif'; + if (_tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().getName() === 'Petaluma') { + // Fixes Issue #1180 + family = 'PetalumaScript, Arial, sans-serif'; + } + return { + family, + size: 12, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.NORMAL, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL, + }; + } + /** + * The offset is specified in `em`. Scale this value by the font size in pixels. + */ + get superscriptOffset() { + return ChordSymbol.superscriptOffset * this.textFormatter.fontSizeInPixels; + } + get subscriptOffset() { + return ChordSymbol.subscriptOffset * this.textFormatter.fontSizeInPixels; + } + setReportWidth(value) { + this.reportWidth = value; + return this; + } + getReportWidth() { + return this.reportWidth; + } + updateOverBarAdjustments() { + const barIndex = this.symbolBlocks.findIndex(({ symbolType, glyph }) => symbolType === SymbolTypes.GLYPH && glyph !== undefined && glyph.code === 'csymDiagonalArrangementSlash'); + if (barIndex < 0) { + return; + } + const bar = this.symbolBlocks[barIndex]; + const xoff = bar.width / 4; + const yoff = 0.25 * this.textFormatter.fontSizeInPixels; + let symIndex = 0; + for (symIndex === 0; symIndex < barIndex; ++symIndex) { + const symbol = this.symbolBlocks[symIndex]; + symbol.xShift = symbol.xShift + xoff; + symbol.yShift = symbol.yShift - yoff; + } + for (symIndex = barIndex + 1; symIndex < this.symbolBlocks.length; ++symIndex) { + const symbol = this.symbolBlocks[symIndex]; + symbol.xShift = symbol.xShift - xoff; + symbol.yShift = symbol.yShift + yoff; + } + } + updateKerningAdjustments() { + let accum = 0; + for (let j = 0; j < this.symbolBlocks.length; ++j) { + const symbol = this.symbolBlocks[j]; + accum += this.getKerningAdjustment(j); + symbol.xShift += accum; + } + } + /** Do some basic kerning so that letter chords like 'A' don't have the extensions hanging off to the right. */ + getKerningAdjustment(j) { + if (!this.useKerning) { + return 0; + } + const currSymbol = this.symbolBlocks[j]; + const prevSymbol = j > 0 ? this.symbolBlocks[j - 1] : undefined; + let adjustment = 0; + // Move things into the '/' over bar + if (currSymbol.symbolType === SymbolTypes.GLYPH && + currSymbol.glyph !== undefined && + currSymbol.glyph.code === ChordSymbol.glyphs.over.code) { + adjustment += currSymbol.glyph.metrics.x_shift; + } + if (prevSymbol !== undefined && + prevSymbol.symbolType === SymbolTypes.GLYPH && + prevSymbol.glyph !== undefined && + prevSymbol.glyph.code === ChordSymbol.glyphs.over.code) { + adjustment += prevSymbol.glyph.metrics.x_shift; + } + // For superscripts that follow a letter without much top part, move it to the left slightly + let preKernUpper = false; + let preKernLower = false; + if (prevSymbol !== undefined && prevSymbol.symbolType === SymbolTypes.TEXT) { + preKernUpper = ChordSymbol.upperKerningText.some((xx) => xx === prevSymbol.text[prevSymbol.text.length - 1]); + preKernLower = ChordSymbol.lowerKerningText.some((xx) => xx === prevSymbol.text[prevSymbol.text.length - 1]); + } + const kerningOffsetPixels = ChordSymbol.kerningOffset * this.textFormatter.fontSizeInPixels; + // TODO: adjust kern for font size. + // Where should this constant live? + if (preKernUpper && currSymbol.symbolModifier === SymbolModifiers.SUPERSCRIPT) { + adjustment += kerningOffsetPixels; + } + if (preKernLower && currSymbol.symbolType === SymbolTypes.TEXT) { + if (currSymbol.text[0] >= 'a' && currSymbol.text[0] <= 'z') { + adjustment += kerningOffsetPixels / 2; + } + if (ChordSymbol.upperKerningText.some((xx) => xx === (prevSymbol === null || prevSymbol === void 0 ? void 0 : prevSymbol.text[prevSymbol.text.length - 1]))) { + adjustment += kerningOffsetPixels / 2; + } + } + return adjustment; + } + /** + * ChordSymbol allows multiple blocks so we can mix glyphs and font text. + * Each block can have its own vertical orientation. + */ + // eslint-disable-next-line + getSymbolBlock(params = {}) { + var _a, _b, _c; + const symbolType = (_a = params.symbolType) !== null && _a !== void 0 ? _a : SymbolTypes.TEXT; + const symbolBlock = { + text: (_b = params.text) !== null && _b !== void 0 ? _b : '', + symbolType, + symbolModifier: (_c = params.symbolModifier) !== null && _c !== void 0 ? _c : SymbolModifiers.NONE, + xShift: 0, + yShift: 0, + vAlign: false, + width: 0, + }; + // Note: symbol widths are resolution and font-independent. + // We convert to pixel values when we know what the font is. + if (symbolType === SymbolTypes.GLYPH && typeof params.glyph === 'string') { + const glyphArgs = ChordSymbol.glyphs[params.glyph]; + const glyphPoints = 20; + symbolBlock.glyph = new _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph(glyphArgs.code, glyphPoints, { category: 'chordSymbol' }); + // Beware: glyph.metrics is not the same as glyph.getMetrics() ! + // rv.glyph.point = rv.glyph.point * rv.glyph.metrics.scale; + // rv.width = rv.glyph.getMetrics().width; + // don't set yShift here, b/c we need to do it at formatting time after the font is set. + } + else if (symbolType === SymbolTypes.TEXT) { + symbolBlock.width = this.textFormatter.getWidthForTextInEm(symbolBlock.text); + } + else if (symbolType === SymbolTypes.LINE) { + symbolBlock.width = params.width; + } + return symbolBlock; + } + /** Add a symbol to this chord, could be text, glyph or line. */ + // eslint-disable-next-line + addSymbolBlock(parameters) { + this.symbolBlocks.push(this.getSymbolBlock(parameters)); + return this; + } + // ### Convenience functions for creating different types of chord symbol parts. + /** Add a text block. */ + // eslint-disable-next-line + addText(text, parameters = {}) { + const symbolType = SymbolTypes.TEXT; + return this.addSymbolBlock(Object.assign(Object.assign({}, parameters), { text, symbolType })); + } + /** Add a text block with superscript modifier. */ + addTextSuperscript(text) { + const symbolType = SymbolTypes.TEXT; + const symbolModifier = SymbolModifiers.SUPERSCRIPT; + return this.addSymbolBlock({ text, symbolType, symbolModifier }); + } + /** Add a text block with subscript modifier. */ + addTextSubscript(text) { + const symbolType = SymbolTypes.TEXT; + const symbolModifier = SymbolModifiers.SUBSCRIPT; + return this.addSymbolBlock({ text, symbolType, symbolModifier }); + } + /** Add a glyph block with superscript modifier. */ + addGlyphSuperscript(glyph) { + const symbolType = SymbolTypes.GLYPH; + const symbolModifier = SymbolModifiers.SUPERSCRIPT; + return this.addSymbolBlock({ glyph, symbolType, symbolModifier }); + } + /** Add a glyph block. */ + // eslint-disable-next-line + addGlyph(glyph, params = {}) { + const symbolType = SymbolTypes.GLYPH; + return this.addSymbolBlock(Object.assign(Object.assign({}, params), { glyph, symbolType })); + } + /** + * Add a glyph for each character in 'text'. If the glyph is not available, use text from the font. + * e.g. `addGlyphOrText('(+5#11)')` will use text for the '5' and '11', and glyphs for everything else. + */ + // eslint-disable-next-line + addGlyphOrText(text, params = {}) { + let str = ''; + for (let i = 0; i < text.length; ++i) { + const char = text[i]; + if (ChordSymbol.glyphs[char]) { + if (str.length > 0) { + this.addText(str, params); + str = ''; + } + this.addGlyph(char, params); + } + else { + // Collect consecutive characters with no glyphs. + str += char; + } + } + if (str.length > 0) { + this.addText(str, params); + } + return this; + } + /** Add a line of the given width, used as a continuation of the previous symbol in analysis, or lyrics, etc. */ + // eslint-disable-next-line + addLine(width, params = {}) { + const symbolType = SymbolTypes.LINE; + return this.addSymbolBlock(Object.assign(Object.assign({}, params), { symbolType, width })); + } + /** + * Set the chord symbol's font family, size, weight, style (e.g., `Arial`, `10pt`, `bold`, `italic`). + * + * @param f is 1) a `FontInfo` object or + * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or + * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided). + * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt'). + * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900). + * @param style is a string (e.g., 'italic', 'normal'). + * + * @override See: Element. + */ + setFont(f, size, weight, style) { + super.setFont(f, size, weight, style); + this.textFormatter = _textformatter__WEBPACK_IMPORTED_MODULE_4__.TextFormatter.create(this.textFont); + return this; + } + setEnableKerning(val) { + this.useKerning = val; + return this; + } + /** Set vertical position of text (above or below stave). */ + setVertical(vj) { + this.vertical = typeof vj === 'string' ? ChordSymbol.VerticalJustifyString[vj] : vj; + return this; + } + getVertical() { + return this.vertical; + } + /** Set horizontal justification. */ + setHorizontal(hj) { + this.horizontal = typeof hj === 'string' ? ChordSymbol.HorizontalJustifyString[hj] : hj; + return this; + } + getHorizontal() { + return this.horizontal; + } + getWidth() { + let width = 0; + this.symbolBlocks.forEach((symbol) => { + width += symbol.vAlign ? 0 : symbol.width; + }); + return width; + } + getYOffsetForText(text) { + var _a; + let acc = 0; + let i = 0; + for (i = 0; i < text.length; ++i) { + const metrics = this.textFormatter.getGlyphMetrics(text[i]); + if (metrics) { + const yMax = (_a = metrics.y_max) !== null && _a !== void 0 ? _a : 0; + acc = yMax < acc ? yMax : acc; + } + } + const resolution = this.textFormatter.getResolution(); + return i > 0 ? -1 * (acc / resolution) : 0; + } + /** Render text and glyphs above/below the note. */ + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + // We're changing context parameters. Save current state. + ctx.save(); + ctx.openGroup('chordsymbol', this.getAttribute('id')); + const start = note.getModifierStartXY(_modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier.Position.ABOVE, this.index); + ctx.setFont(this.textFont); + let y; + // The position of the text varies based on whether or not the note + // has a stem. + const hasStem = note.hasStem(); + const stave = note.checkStave(); + if (this.vertical === ChordSymbolVerticalJustify.BOTTOM) { + // HACK: We need to compensate for the text's height since its origin is bottom-right. + y = stave.getYForBottomText(this.text_line + _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.TEXT_HEIGHT_OFFSET_HACK); + if (hasStem) { + const stem_ext = note.checkStem().getExtents(); + const spacing = stave.getSpacingBetweenLines(); + const stem_base = note.getStemDirection() === 1 ? stem_ext.baseY : stem_ext.topY; + y = Math.max(y, stem_base + spacing * (this.text_line + 2)); + } + } + else { + // (this.vertical === VerticalJustify.TOP) + y = Math.min(stave.getYForTopText(this.text_line), note.getYs()[0] - 10); + if (hasStem) { + const stem_ext = note.checkStem().getExtents(); + const spacing = stave.getSpacingBetweenLines(); + y = Math.min(y, stem_ext.topY - 5 - spacing * this.text_line); + } + } + let x = start.x; + if (this.horizontal === ChordSymbolHorizontalJustify.LEFT) { + x = start.x; + } + else if (this.horizontal === ChordSymbolHorizontalJustify.RIGHT) { + x = start.x + this.getWidth(); + } + else if (this.horizontal === ChordSymbolHorizontalJustify.CENTER) { + x = start.x - this.getWidth() / 2; + } + else { + // HorizontalJustify.CENTER_STEM + x = note.getStemX() - this.getWidth() / 2; + } + L('Rendering ChordSymbol: ', this.textFormatter, x, y); + this.symbolBlocks.forEach((symbol) => { + const isSuper = ChordSymbol.isSuperscript(symbol); + const isSub = ChordSymbol.isSubscript(symbol); + let curY = y; + L('shift was ', symbol.xShift, symbol.yShift); + L('curY pre sub ', curY); + if (isSuper) { + curY += this.superscriptOffset; + } + if (isSub) { + curY += this.subscriptOffset; + } + L('curY sup/sub ', curY); + if (symbol.symbolType === SymbolTypes.TEXT) { + if (isSuper || isSub) { + ctx.save(); + if (this.textFont) { + const { family, size, weight, style } = this.textFont; + const smallerFontSize = _font__WEBPACK_IMPORTED_MODULE_0__.Font.scaleSize(size, ChordSymbol.superSubRatio); + ctx.setFont(family, smallerFontSize, weight, style); + } + } + // TODO??? + // We estimate the text width, fill it in with the empirical value so the formatting is even. + // const textDim = ctx.measureText(symbol.text); + // symbol.width = textDim.width; + L('Rendering Text: ', symbol.text, x + symbol.xShift, curY + symbol.yShift); + ctx.fillText(symbol.text, x + symbol.xShift, curY + symbol.yShift); + if (isSuper || isSub) { + ctx.restore(); + } + } + else if (symbol.symbolType === SymbolTypes.GLYPH && symbol.glyph) { + curY += symbol.yShift; + L('Rendering Glyph: ', symbol.glyph.code, x + symbol.xShift, curY); + symbol.glyph.render(ctx, x + symbol.xShift, curY); + } + else if (symbol.symbolType === SymbolTypes.LINE) { + L('Rendering Line : ', symbol.width, x, curY); + ctx.beginPath(); + ctx.setLineWidth(1); // ? + ctx.moveTo(x, y); + ctx.lineTo(x + symbol.width, curY); + ctx.stroke(); + } + x += symbol.width; + if (symbol.vAlign) { + x += symbol.xShift; + } + }); + ctx.closeGroup(); + ctx.restore(); + } +} +ChordSymbol.DEBUG = false; +// Chord symbols can be positioned and justified relative to the note. +ChordSymbol.HorizontalJustify = ChordSymbolHorizontalJustify; +ChordSymbol.HorizontalJustifyString = { + left: ChordSymbolHorizontalJustify.LEFT, + right: ChordSymbolHorizontalJustify.RIGHT, + center: ChordSymbolHorizontalJustify.CENTER, + centerStem: ChordSymbolHorizontalJustify.CENTER_STEM, +}; +ChordSymbol.VerticalJustify = ChordSymbolVerticalJustify; +ChordSymbol.VerticalJustifyString = { + top: ChordSymbolVerticalJustify.TOP, + above: ChordSymbolVerticalJustify.TOP, + below: ChordSymbolVerticalJustify.BOTTOM, + bottom: ChordSymbolVerticalJustify.BOTTOM, +}; +// Glyph data +ChordSymbol.glyphs = { + diminished: { + code: 'csymDiminished', + }, + dim: { + code: 'csymDiminished', + }, + halfDiminished: { + code: 'csymHalfDiminished', + }, + '+': { + code: 'csymAugmented', + }, + augmented: { + code: 'csymAugmented', + }, + majorSeventh: { + code: 'csymMajorSeventh', + }, + minor: { + code: 'csymMinor', + }, + '-': { + code: 'csymMinor', + }, + '(': { + code: 'csymParensLeftTall', + }, + leftParen: { + code: 'csymParensLeftTall', + }, + ')': { + code: 'csymParensRightTall', + }, + rightParen: { + code: 'csymParensRightTall', + }, + leftBracket: { + code: 'csymBracketLeftTall', + }, + rightBracket: { + code: 'csymBracketRightTall', + }, + leftParenTall: { + code: 'csymParensLeftVeryTall', + }, + rightParenTall: { + code: 'csymParensRightVeryTall', + }, + '/': { + code: 'csymDiagonalArrangementSlash', + }, + over: { + code: 'csymDiagonalArrangementSlash', + }, + '#': { + code: 'accidentalSharp', + }, + b: { + code: 'accidentalFlat', + }, +}; +ChordSymbol.symbolTypes = SymbolTypes; +ChordSymbol.symbolModifiers = SymbolModifiers; +/** Currently unused. */ +ChordSymbol.noFormat = false; + + +/***/ }), + +/***/ "./src/clef.ts": +/*!*********************!*\ + !*** ./src/clef.ts ***! + \*********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Clef": () => (/* binding */ Clef) +/* harmony export */ }); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna Cheppudira 2013. +// Co-author: Benjamin W. Bohl +// MIT License + + + + + +// eslint-disable-next-line +function L(...args) { + if (Clef.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_4__.log)('Vex.Flow.Clef', args); +} +/** + * Clef implements various types of clefs that can be rendered on a stave. + * + * See `tests/clef_tests.ts` for usage examples. + */ +class Clef extends _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifier { + /** Create a new clef. */ + constructor(type, size, annotation) { + super(); + /** + * The attribute `clef` must be a key from + * `Clef.types` + */ + this.clef = Clef.types['treble']; + this.setPosition(_stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifierPosition.BEGIN); + this.setType(type, size, annotation); + this.setWidth(_tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont().lookupMetric(`clef.${this.size}.width`)); + L('Creating clef:', type); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.Clef; + } + /** + * Every clef name is associated with a glyph code from the font file + * and a default stave line number. + */ + static get types() { + return { + treble: { + code: 'gClef', + line: 3, + point: 0, + }, + bass: { + code: 'fClef', + line: 1, + point: 0, + }, + alto: { + code: 'cClef', + line: 2, + point: 0, + }, + tenor: { + code: 'cClef', + line: 1, + point: 0, + }, + percussion: { + code: 'restMaxima', + line: 2, + point: 0, + }, + soprano: { + code: 'cClef', + line: 4, + point: 0, + }, + 'mezzo-soprano': { + code: 'cClef', + line: 3, + point: 0, + }, + 'baritone-c': { + code: 'cClef', + line: 0, + point: 0, + }, + 'baritone-f': { + code: 'fClef', + line: 2, + point: 0, + }, + subbass: { + code: 'fClef', + line: 0, + point: 0, + }, + french: { + code: 'gClef', + line: 4, + point: 0, + }, + tab: { + code: '6stringTabClef', + point: 0, + }, + }; + } + /** Set clef type, size and annotation. */ + setType(type, size, annotation) { + this.type = type; + this.clef = Clef.types[type]; + if (size === undefined) { + this.size = 'default'; + } + else { + this.size = size; + } + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont(); + this.clef.point = musicFont.lookupMetric(`clef.${this.size}.point`, 0); + this.glyph = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph(this.clef.code, this.clef.point, { + category: `clef.${this.clef.code}.${this.size}`, + }); + // If an annotation, such as 8va, is specified, add it to the Clef object. + if (annotation !== undefined) { + const code = musicFont.lookupMetric(`clef.annotations.${annotation}.smuflCode`); + const point = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.point`); + const line = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.${this.type}.line`); + const x_shift = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.${this.type}.shiftX`); + this.annotation = { code, point, line, x_shift }; + this.attachment = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph(this.annotation.code, this.annotation.point); + this.attachment.metrics.x_max = 0; + this.attachment.setXShift(this.annotation.x_shift); + } + else { + this.annotation = undefined; + } + return this; + } + /** Get clef width. */ + getWidth() { + if (this.type === 'tab') { + (0,_util__WEBPACK_IMPORTED_MODULE_4__.defined)(this.stave, 'ClefError', "Can't get width without stave."); + } + return this.width; + } + /** Set associated stave. */ + setStave(stave) { + this.stave = stave; + if (this.type === 'tab') { + const glyph = (0,_util__WEBPACK_IMPORTED_MODULE_4__.defined)(this.glyph, 'ClefError', "Can't set stave without glyph."); + const numLines = this.stave.getNumLines(); + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont(); + const point = musicFont.lookupMetric(`clef.lineCount.${numLines}.point`); + const shiftY = musicFont.lookupMetric(`clef.lineCount.${numLines}.shiftY`); + glyph.setPoint(point); + glyph.setYShift(shiftY); + } + return this; + } + /** Render clef. */ + draw() { + const glyph = (0,_util__WEBPACK_IMPORTED_MODULE_4__.defined)(this.glyph, 'ClefError', "Can't draw clef without glyph."); + const stave = this.checkStave(); + const ctx = stave.checkContext(); + this.setRendered(); + ctx.openGroup('clef', this.getAttribute('id')); + glyph.setStave(stave); + glyph.setContext(ctx); + if (this.clef.line !== undefined) { + this.placeGlyphOnLine(glyph, stave, this.clef.line); + } + glyph.renderToStave(this.x); + if (this.annotation !== undefined && this.attachment !== undefined) { + this.placeGlyphOnLine(this.attachment, stave, this.annotation.line); + this.attachment.setStave(stave); + this.attachment.setContext(ctx); + this.attachment.renderToStave(this.x); + } + ctx.closeGroup(); + } +} +/** To enable logging for this class, set `Vex.Flow.Clef.DEBUG` to `true`. */ +Clef.DEBUG = false; + + +/***/ }), + +/***/ "./src/clefnote.ts": +/*!*************************!*\ + !*** ./src/clefnote.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "ClefNote": () => (/* binding */ ClefNote) +/* harmony export */ }); +/* harmony import */ var _clef__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./clef */ "./src/clef.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Taehoon Moon 2014 +// MIT License + + + + +/** ClefNote implements clef annotations in measures. */ +class ClefNote extends _note__WEBPACK_IMPORTED_MODULE_2__.Note { + constructor(type, size, annotation) { + super({ duration: 'b' }); + this.type = type; + this.clef_obj = new _clef__WEBPACK_IMPORTED_MODULE_0__.Clef(type, size, annotation); + this.clef = this.clef_obj.clef; + this.glyph = new _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph(this.clef.code, this.clef.point); + this.setWidth(this.glyph.getMetrics().width); + // Note properties + this.ignore_ticks = true; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.ClefNote; + } + /** Set clef type, size and annotation. */ + setType(type, size, annotation) { + this.type = type; + this.clef_obj = new _clef__WEBPACK_IMPORTED_MODULE_0__.Clef(type, size, annotation); + this.clef = this.clef_obj.clef; + this.glyph = new _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph(this.clef.code, this.clef.point); + this.setWidth(this.glyph.getMetrics().width); + return this; + } + /** Get associated clef. */ + getClef() { + return this.clef; + } + /** Set associated context. */ + setContext(context) { + super.setContext(context); + this.glyph.setContext(this.getContext()); + return this; + } + /** Get bounding box. */ + getBoundingBox() { + return super.getBoundingBox(); + } + /* Overridden to ignore */ + // eslint-disable-next-line + addToModifierContext(mc) { + // DO NOTHING. + return this; + } + preFormat() { + this.preFormatted = true; + return this; + } + /** Render clef note. */ + draw() { + var _a; + const stave = this.checkStave(); + if (!this.glyph.getContext()) { + this.glyph.setContext(this.getContext()); + } + this.setRendered(); + const abs_x = this.getAbsoluteX(); + this.glyph.setStave(stave); + this.glyph.setYShift(stave.getYForLine((_a = this.clef.line) !== null && _a !== void 0 ? _a : 0) - stave.getYForGlyphs()); + this.glyph.renderToStave(abs_x); + // If the Vex.Flow.Clef has an annotation, such as 8va, draw it. + if (this.clef_obj.annotation !== undefined) { + const attachment = new _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph(this.clef_obj.annotation.code, this.clef_obj.annotation.point); + if (!attachment.getContext()) { + attachment.setContext(this.getContext()); + } + attachment.setStave(stave); + attachment.setYShift(stave.getYForLine(this.clef_obj.annotation.line) - stave.getYForGlyphs()); + attachment.setXShift(this.clef_obj.annotation.x_shift); + attachment.renderToStave(abs_x); + } + } +} + + +/***/ }), + +/***/ "./src/crescendo.ts": +/*!**************************!*\ + !*** ./src/crescendo.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Crescendo": () => (/* binding */ Crescendo) +/* harmony export */ }); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _tickcontext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tickcontext */ "./src/tickcontext.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// This file implements the `Crescendo` object which draws crescendos and +// decrescendo dynamics markings. A `Crescendo` is initialized with a +// duration and formatted as part of a `Voice` like any other `Note` +// type in VexFlow. This object would most likely be formatted in a Voice +// with `TextNotes` - which are used to represent other dynamics markings. + + + + +// To enable logging for this class. Set `Vex.Flow.Crescendo.DEBUG` to `true`. +// eslint-disable-next-line +function L(...args) { + if (Crescendo.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_3__.log)('Vex.Flow.Crescendo', args); +} +// Private helper to draw the hairpin +function renderHairpin(ctx, params) { + const begin_x = params.begin_x; + const end_x = params.end_x; + const y = params.y; + const half_height = params.height / 2; + ctx.beginPath(); + if (params.reverse) { + ctx.moveTo(begin_x, y - half_height); + ctx.lineTo(end_x, y); + ctx.lineTo(begin_x, y + half_height); + } + else { + ctx.moveTo(end_x, y - half_height); + ctx.lineTo(begin_x, y); + ctx.lineTo(end_x, y + half_height); + } + ctx.stroke(); + ctx.closePath(); +} +class Crescendo extends _note__WEBPACK_IMPORTED_MODULE_0__.Note { + // Initialize the crescendo's properties + constructor(noteStruct) { + super(noteStruct); + this.options = { + // Extensions to the length of the crescendo on either side + extend_left: 0, + extend_right: 0, + // Vertical shift + y_shift: 0, + }; + // Whether the object is a decrescendo + this.decrescendo = false; + // The staff line to be placed on + this.line = noteStruct.line || 0; + // The height at the open end of the cresc/decresc + this.height = 15; + } + /** Crescendo category string. */ + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.Crescendo; + } + // Set the line to center the element on + setLine(line) { + this.line = line; + return this; + } + // Set the full height at the open end + setHeight(height) { + this.height = height; + return this; + } + // Set whether the sign should be a descresendo by passing a bool + // to `decresc` + setDecrescendo(decresc) { + this.decrescendo = decresc; + return this; + } + // Preformat the note + preFormat() { + this.preFormatted = true; + return this; + } + // Render the Crescendo object onto the canvas + draw() { + const ctx = this.checkContext(); + const stave = this.checkStave(); + this.setRendered(); + const tick_context = this.getTickContext(); + const next_context = _tickcontext__WEBPACK_IMPORTED_MODULE_1__.TickContext.getNextContext(tick_context); + const begin_x = this.getAbsoluteX(); + const end_x = next_context ? next_context.getX() : stave.getX() + stave.getWidth(); + const y = stave.getYForLine(this.line + -3) + 1; + L('Drawing ', this.decrescendo ? 'decrescendo ' : 'crescendo ', this.height, 'x', begin_x - end_x); + renderHairpin(ctx, { + begin_x: begin_x - this.options.extend_left, + end_x: end_x + this.options.extend_right, + y: y + this.options.y_shift, + height: this.height, + reverse: this.decrescendo, + }); + } +} +Crescendo.DEBUG = false; + + +/***/ }), + +/***/ "./src/curve.ts": +/*!**********************!*\ + !*** ./src/curve.ts ***! + \**********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "CurvePosition": () => (/* binding */ CurvePosition), +/* harmony export */ "Curve": () => (/* binding */ Curve) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// VexFlow - Music Engraving for HTML5 +// Copyright Mohit Muthanna 2010 +// +// This class implements curves (for slurs) + + + +var CurvePosition; +(function (CurvePosition) { + CurvePosition[CurvePosition["NEAR_HEAD"] = 1] = "NEAR_HEAD"; + CurvePosition[CurvePosition["NEAR_TOP"] = 2] = "NEAR_TOP"; +})(CurvePosition || (CurvePosition = {})); +class Curve extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + // from: Start note + // to: End note + // options: + // cps: List of control points + // x_shift: pixels to shift + // y_shift: pixels to shift + constructor(from, to, options) { + super(); + this.render_options = Object.assign({ thickness: 2, x_shift: 0, y_shift: 10, position: CurvePosition.NEAR_HEAD, position_end: CurvePosition.NEAR_HEAD, invert: false, cps: [ + { x: 0, y: 10 }, + { x: 0, y: 10 }, + ] }, options); + this.from = from; + this.to = to; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_1__.Category.Curve; + } + static get Position() { + return CurvePosition; + } + static get PositionString() { + return { + nearHead: CurvePosition.NEAR_HEAD, + nearTop: CurvePosition.NEAR_TOP, + }; + } + setNotes(from, to) { + if (!from && !to) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', 'Curve needs to have either `from` or `to` set.'); + } + this.from = from; + this.to = to; + return this; + } + /** + * @return {boolean} Returns true if this is a partial bar. + */ + isPartial() { + return !this.from || !this.to; + } + renderCurve(params) { + const ctx = this.checkContext(); + const x_shift = this.render_options.x_shift; + const y_shift = this.render_options.y_shift * params.direction; + const first_x = params.first_x + x_shift; + const first_y = params.first_y + y_shift; + const last_x = params.last_x - x_shift; + const last_y = params.last_y + y_shift; + const thickness = this.render_options.thickness; + const cps = this.render_options.cps; + const { x: cp0x, y: cp0y } = cps[0]; + const { x: cp1x, y: cp1y } = cps[1]; + const cp_spacing = (last_x - first_x) / (cps.length + 2); + ctx.beginPath(); + ctx.moveTo(first_x, first_y); + ctx.bezierCurveTo(first_x + cp_spacing + cp0x, first_y + cp0y * params.direction, last_x - cp_spacing + cp1x, last_y + cp1y * params.direction, last_x, last_y); + ctx.bezierCurveTo(last_x - cp_spacing + cp1x, last_y + (cp1y + thickness) * params.direction, first_x + cp_spacing + cp0x, first_y + (cp0y + thickness) * params.direction, first_x, first_y); + ctx.stroke(); + ctx.closePath(); + ctx.fill(); + } + draw() { + this.checkContext(); + this.setRendered(); + const first_note = this.from; + const last_note = this.to; + let first_x; + let last_x; + let first_y; + let last_y; + let stem_direction = 0; + let metric = 'baseY'; + let end_metric = 'baseY'; + function getPosition(position) { + return typeof position === 'string' ? Curve.PositionString[position] : position; + } + const position = getPosition(this.render_options.position); + const position_end = getPosition(this.render_options.position_end); + if (position === CurvePosition.NEAR_TOP) { + metric = 'topY'; + end_metric = 'topY'; + } + if (position_end === CurvePosition.NEAR_HEAD) { + end_metric = 'baseY'; + } + else if (position_end === CurvePosition.NEAR_TOP) { + end_metric = 'topY'; + } + if (first_note) { + first_x = first_note.getTieRightX(); + stem_direction = first_note.getStemDirection(); + first_y = first_note.getStemExtents()[metric]; + } + else { + const stave = last_note.checkStave(); + first_x = stave.getTieStartX(); + first_y = last_note.getStemExtents()[metric]; + } + if (last_note) { + last_x = last_note.getTieLeftX(); + stem_direction = last_note.getStemDirection(); + last_y = last_note.getStemExtents()[end_metric]; + } + else { + const stave = first_note.checkStave(); + last_x = stave.getTieEndX(); + last_y = first_note.getStemExtents()[end_metric]; + } + this.renderCurve({ + first_x, + last_x, + first_y, + last_y, + direction: stem_direction * (this.render_options.invert === true ? -1 : 1), + }); + return true; + } +} + + +/***/ }), + +/***/ "./src/dot.ts": +/*!********************!*\ + !*** ./src/dot.ts ***! + \********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Dot": () => (/* binding */ Dot) +/* harmony export */ }); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// VexFlow - Music Engraving for HTML5 +// Copyright Mohit Muthanna 2010 +// +// This class implements dot modifiers for notes. + + + +class Dot extends _modifier__WEBPACK_IMPORTED_MODULE_0__.Modifier { + constructor() { + super(); + this.position = _modifier__WEBPACK_IMPORTED_MODULE_0__.Modifier.Position.RIGHT; + this.radius = 2; + this.setWidth(5); + this.dot_shiftY = 0; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_1__.Category.Dot; + } + /** Returns the dots associated to a Note. */ + static getDots(note) { + return note.getModifiersByType(Dot.CATEGORY); + } + /** Add a dot on the specified keys to the notes. */ + static buildAndAttach(notes, options) { + for (const note of notes) { + if (options === null || options === void 0 ? void 0 : options.all) { + for (let i = 0; i < note.keys.length; i++) { + const dot = new Dot(); + dot.setDotShiftY(note.glyph.dot_shiftY); + note.addModifier(dot, i); + } + } + else if ((options === null || options === void 0 ? void 0 : options.index) != undefined) { + const dot = new Dot(); + dot.setDotShiftY(note.glyph.dot_shiftY); + note.addModifier(dot, options === null || options === void 0 ? void 0 : options.index); + } + else { + const dot = new Dot(); + dot.setDotShiftY(note.glyph.dot_shiftY); + note.addModifier(dot, 0); + } + } + } + // Arrange dots inside a ModifierContext. + static format(dots, state) { + const right_shift = state.right_shift; + const dot_spacing = 1; + if (!dots || dots.length === 0) + return false; + const dot_list = []; + const max_shift_map = {}; + for (let i = 0; i < dots.length; ++i) { + const dot = dots[i]; + const note = dot.getNote(); + let props; + let shift; + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_1__.isStaveNote)(note)) { + const index = dot.checkIndex(); + props = note.getKeyProps()[index]; + // consider right displaced head with no previous modifier + shift = note.getFirstDotPx(); + } + else if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_1__.isTabNote)(note)) { + props = { line: 0.5 }; // Shim key props for dot placement + shift = right_shift; + } + else { + // note object is not StaveNote or TabNote. + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('Internal', 'Unexpected instance.'); + } + const note_id = note.getAttribute('id'); + dot_list.push({ line: props.line, note, note_id, dot }); + max_shift_map[note_id] = Math.max(max_shift_map[note_id] || shift, shift); + } + // Sort dots by line number. + dot_list.sort((a, b) => b.line - a.line); + let dot_shift = right_shift; + let x_width = 0; + let last_line = null; + let last_note = null; + let prev_dotted_space = null; + let half_shiftY = 0; + for (let i = 0; i < dot_list.length; ++i) { + const { dot, note, note_id, line } = dot_list[i]; + // Reset the position of the dot every line. + if (line !== last_line || note !== last_note) { + dot_shift = max_shift_map[note_id]; + } + if (!note.isRest() && line !== last_line) { + if (Math.abs(line % 1) === 0.5) { + // note is on a space, so no dot shift + half_shiftY = 0; + } + else { + // note is on a line, so shift dot to space above the line + half_shiftY = 0.5; + if (last_note != null && !last_note.isRest() && last_line != null && last_line - line === 0.5) { + // previous note on a space, so shift dot to space below the line + half_shiftY = -0.5; + } + else if (line + half_shiftY === prev_dotted_space) { + // previous space is dotted, so shift dot to space below the line + half_shiftY = -0.5; + } + } + } + // convert half_shiftY to a multiplier for dots.draw() + if (note.isRest()) { + dot.dot_shiftY += -half_shiftY; + } + else { + dot.dot_shiftY = -half_shiftY; + } + prev_dotted_space = line + half_shiftY; + dot.setXShift(dot_shift); + dot_shift += dot.getWidth() + dot_spacing; // spacing + x_width = dot_shift > x_width ? dot_shift : x_width; + last_line = line; + last_note = note; + } + // Update state. + state.right_shift += x_width; + return true; + } + setNote(note) { + this.note = note; + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_1__.isGraceNote)(note)) { + this.radius *= 0.5; + this.setWidth(3); + } + return this; + } + setDotShiftY(y) { + this.dot_shiftY = y; + return this; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const stave = note.checkStave(); + const lineSpace = stave.getSpacingBetweenLines(); + const start = note.getModifierStartXY(this.position, this.index, { forceFlagRight: true }); + // Set the starting y coordinate to the base of the stem for TabNotes. + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_1__.isTabNote)(note)) { + start.y = note.getStemExtents().baseY; + } + const x = start.x + this.x_shift + this.width - this.radius; + const y = start.y + this.y_shift + this.dot_shiftY * lineSpace; + ctx.beginPath(); + ctx.arc(x, y, this.radius, 0, Math.PI * 2, false); + ctx.fill(); + } +} + + +/***/ }), + +/***/ "./src/easyscore.ts": +/*!**************************!*\ + !*** ./src/easyscore.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "EasyScoreGrammar": () => (/* binding */ EasyScoreGrammar), +/* harmony export */ "Piece": () => (/* binding */ Piece), +/* harmony export */ "Builder": () => (/* binding */ Builder), +/* harmony export */ "EasyScore": () => (/* binding */ EasyScore) +/* harmony export */ }); +/* harmony import */ var _articulation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./articulation */ "./src/articulation.ts"); +/* harmony import */ var _dot__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dot */ "./src/dot.ts"); +/* harmony import */ var _frethandfinger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./frethandfinger */ "./src/frethandfinger.ts"); +/* harmony import */ var _music__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./music */ "./src/music.ts"); +/* harmony import */ var _parser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./parser */ "./src/parser.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + + +// To enable logging for this class. Set `Vex.Flow.EasyScore.DEBUG` to `true`. +// eslint-disable-next-line +function L(...args) { + if (EasyScore.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_6__.log)('Vex.Flow.EasyScore', args); +} +class EasyScoreGrammar { + constructor(builder) { + this.builder = builder; + } + begin() { + return this.LINE; + } + LINE() { + return { + expect: [this.PIECE, this.PIECES, this.EOL], + }; + } + PIECE() { + return { + expect: [this.CHORDORNOTE, this.PARAMS], + run: () => this.builder.commitPiece(), + }; + } + PIECES() { + return { + expect: [this.COMMA, this.PIECE], + zeroOrMore: true, + }; + } + PARAMS() { + return { + expect: [this.DURATION, this.TYPE, this.DOTS, this.OPTS], + }; + } + CHORDORNOTE() { + return { + expect: [this.CHORD, this.SINGLENOTE], + or: true, + }; + } + CHORD() { + return { + expect: [this.LPAREN, this.NOTES, this.RPAREN], + // eslint-disable-next-line + run: (state) => this.builder.addChord(state.matches[1]), + }; + } + NOTES() { + return { + expect: [this.NOTE], + oneOrMore: true, + }; + } + NOTE() { + return { + expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE], + }; + } + SINGLENOTE() { + return { + expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE], + run: (state) => { + // eslint-disable-next-line + const s = state; + this.builder.addSingleNote(s.matches[0], s.matches[1], s.matches[2]); + }, + }; + } + ACCIDENTAL() { + return { + expect: [this.MICROTONES, this.ACCIDENTALS], + maybe: true, + or: true, + }; + } + DOTS() { + return { + expect: [this.DOT], + zeroOrMore: true, + // eslint-disable-next-line + run: (state) => this.builder.setNoteDots(state.matches), + }; + } + TYPE() { + return { + expect: [this.SLASH, this.MAYBESLASH, this.TYPES], + maybe: true, + // eslint-disable-next-line + run: (state) => this.builder.setNoteType(state.matches[2]), + }; + } + DURATION() { + return { + expect: [this.SLASH, this.DURATIONS], + maybe: true, + // eslint-disable-next-line + run: (state) => this.builder.setNoteDuration(state.matches[1]), + }; + } + OPTS() { + return { + expect: [this.LBRACKET, this.KEYVAL, this.KEYVALS, this.RBRACKET], + maybe: true, + }; + } + KEYVALS() { + return { + expect: [this.COMMA, this.KEYVAL], + zeroOrMore: true, + }; + } + KEYVAL() { + const unquote = (str) => str.slice(1, -1); + return { + expect: [this.KEY, this.EQUALS, this.VAL], + // eslint-disable-next-line + run: (state) => this.builder.addNoteOption(state.matches[0], unquote(state.matches[2])), + }; + } + VAL() { + return { + expect: [this.SVAL, this.DVAL], + or: true, + }; + } + KEY() { + return { token: '[a-zA-Z][a-zA-Z0-9]*' }; + } + DVAL() { + return { token: '["][^"]*["]' }; + } + SVAL() { + return { token: "['][^']*[']" }; + } + NOTENAME() { + return { token: '[a-gA-G]' }; + } + OCTAVE() { + return { token: '[0-9]+' }; + } + ACCIDENTALS() { + return { token: 'bb|b|##|#|n' }; + } + MICROTONES() { + return { token: 'bbs|bss|bs|db|d|\\+\\+-|\\+-|\\+\\+|\\+|k|o' }; + } + DURATIONS() { + return { token: '[0-9whq]+' }; + } + TYPES() { + return { token: '[rRsSmMhHgG]' }; + } + LPAREN() { + return { token: '[(]' }; + } + RPAREN() { + return { token: '[)]' }; + } + COMMA() { + return { token: '[,]' }; + } + DOT() { + return { token: '[.]' }; + } + SLASH() { + return { token: '[/]' }; + } + MAYBESLASH() { + return { token: '[/]?' }; + } + EQUALS() { + return { token: '[=]' }; + } + LBRACKET() { + return { token: '\\[' }; + } + RBRACKET() { + return { token: '\\]' }; + } + EOL() { + return { token: '$' }; + } +} +class Piece { + constructor(duration) { + this.chord = []; + this.dots = 0; + this.options = {}; + this.duration = duration; + } +} +class Builder { + constructor(factory) { + this.commitHooks = []; + this.factory = factory; + this.reset(); + } + reset(options) { + this.options = Object.assign({ stem: 'auto', clef: 'treble' }, options); + this.elements = { notes: [], accidentals: [] }; + this.rollingDuration = '8'; + this.resetPiece(); + } + getFactory() { + return this.factory; + } + getElements() { + return this.elements; + } + addCommitHook(commitHook) { + this.commitHooks.push(commitHook); + } + resetPiece() { + L('resetPiece'); + this.piece = new Piece(this.rollingDuration); + } + setNoteDots(dots) { + L('setNoteDots:', dots); + if (dots) + this.piece.dots = dots.length; + } + setNoteDuration(duration) { + L('setNoteDuration:', duration); + this.rollingDuration = this.piece.duration = duration || this.rollingDuration; + } + setNoteType(type) { + L('setNoteType:', type); + if (type) + this.piece.type = type; + } + addNoteOption(key, value) { + L('addNoteOption: key:', key, 'value:', value); + this.piece.options[key] = value; + } + addNote(key, accid, octave) { + L('addNote:', key, accid, octave); + this.piece.chord.push({ + key: key, + accid, + octave, + }); + } + addSingleNote(key, accid, octave) { + L('addSingleNote:', key, accid, octave); + this.addNote(key, accid, octave); + } + // notes is an array with 3 entries + addChord(notes) { + L('startChord'); + if (typeof notes[0] !== 'object') { + this.addSingleNote(notes[0]); + } + else { + notes.forEach((n) => { + if (n) + this.addNote(...n); // n => [string, string | null, string] + }); + } + L('endChord'); + } + commitPiece() { + L('commitPiece'); + const { factory } = this; + if (!factory) + return; + const options = Object.assign(Object.assign({}, this.options), this.piece.options); + // reset() sets this.options.stem & this.options.clef but we check to make sure nothing has changed. + // e.g., auto | up | down + const stem = (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(options.stem, 'BadArguments', 'options.stem is not defined').toLowerCase(); + // e.g., treble | bass + const clef = (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(options.clef, 'BadArguments', 'options.clef is not defined').toLowerCase(); + const { chord, duration, dots, type } = this.piece; + // Create a string[] that will be assigned to the .keys property of the StaveNote. + // Each string in the array represents a note pitch and is of the form: {NoteName}{Accidental}/{Octave} + // Only standard accidentals are included in the .keys property. Microtonal accidentals are not included. + const standardAccidentals = _music__WEBPACK_IMPORTED_MODULE_3__.Music.accidentals; + const keys = chord.map((notePiece) => { + var _a; + return notePiece.key + + (standardAccidentals.includes((_a = notePiece.accid) !== null && _a !== void 0 ? _a : '') ? notePiece.accid : '') + + '/' + + notePiece.octave; + }); + const auto_stem = stem === 'auto'; // StaveNoteStruct expects the underscore & lowercase. + // Build a GhostNote or StaveNote using the information we gathered. + const note = (type === null || type === void 0 ? void 0 : type.toLowerCase()) == 'g' + ? factory.GhostNote({ duration, dots }) + : factory.StaveNote({ keys, duration, dots, type, clef, auto_stem }); + if (!auto_stem) + note.setStemDirection(stem === 'up' ? _stem__WEBPACK_IMPORTED_MODULE_5__.Stem.UP : _stem__WEBPACK_IMPORTED_MODULE_5__.Stem.DOWN); + // Attach accidentals. + const accidentals = []; + chord.forEach((notePiece, index) => { + const accid = notePiece.accid; + if (typeof accid === 'string') { + const accidental = factory.Accidental({ type: accid }); + note.addModifier(accidental, index); + accidentals.push(accidental); + } + else { + accidentals.push(undefined); + } + }); + // Attach dots. + for (let i = 0; i < dots; i++) + _dot__WEBPACK_IMPORTED_MODULE_1__.Dot.buildAndAttach([note], { all: true }); + this.commitHooks.forEach((commitHook) => commitHook(options, note, this)); + this.elements.notes.push(note); + this.elements.accidentals.push(accidentals); + this.resetPiece(); + } +} +/** + * Commit hook used by EasyScore.setOptions(). + */ +function setId(options, note) { + if (options.id === undefined) + return; + note.setAttribute('id', options.id); +} +// Used by setClass() below. +const commaSeparatedRegex = /\s*,\s*/; +/** + * Commit hook used by EasyScore.setOptions(). + */ +function setClass(options, note) { + if (options.class === undefined) + return; + options.class.split(commaSeparatedRegex).forEach((className) => note.addClass(className)); +} +/** + * EasyScore implements a parser for a simple language to generate VexFlow objects. + */ +class EasyScore { + constructor(options = {}) { + this.defaults = { + clef: 'treble', + time: '4/4', + stem: 'auto', + }; + this.setOptions(options); + } + /** + * Set the score defaults. + * clef must be set appropriately to avoid errors when adding Staves. + * @param defaults.clef default clef ( treble | bass ...) see {@link Clef.types} + * @param defaults.time default time signature ( 4/4 | 9/8 ...) + * @param defaults.stem default stem arrangement (auto | up | down) + * @returns this + */ + set(defaults) { + this.defaults = Object.assign(Object.assign({}, this.defaults), defaults); + return this; + } + /** + * @param options.factory is required. + * @returns this + */ + setOptions(options) { + var _a, _b; + // eslint-disable-next-line + const factory = options.factory; // ! operator, because options.factory was set in Factory.EasyScore(). + const builder = (_a = options.builder) !== null && _a !== void 0 ? _a : new Builder(factory); + this.options = Object.assign(Object.assign({ commitHooks: [setId, setClass, _articulation__WEBPACK_IMPORTED_MODULE_0__.Articulation.easyScoreHook, _frethandfinger__WEBPACK_IMPORTED_MODULE_2__.FretHandFinger.easyScoreHook], throwOnError: false }, options), { factory, + builder }); + this.factory = factory; + this.builder = builder; + this.grammar = new EasyScoreGrammar(this.builder); + this.parser = new _parser__WEBPACK_IMPORTED_MODULE_4__.Parser(this.grammar); + (_b = this.options.commitHooks) === null || _b === void 0 ? void 0 : _b.forEach((commitHook) => this.addCommitHook(commitHook)); + return this; + } + setContext(context) { + this.factory.setContext(context); + return this; + } + parse(line, options = {}) { + this.builder.reset(options); + const result = this.parser.parse(line); + if (!result.success && this.options.throwOnError) { + L(result); + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('Error parsing line: ' + line); + } + return result; + } + beam(notes, options) { + this.factory.Beam({ notes, options }); + return notes; + } + tuplet(notes, options) { + this.factory.Tuplet({ notes, options }); + return notes; + } + notes(line, options = {}) { + options = Object.assign({ clef: this.defaults.clef, stem: this.defaults.stem }, options); + this.parse(line, options); + return this.builder.getElements().notes; + } + voice(notes, options = {}) { + options = Object.assign({ time: this.defaults.time }, options); + return this.factory.Voice(options).addTickables(notes); + } + addCommitHook(commitHook) { + this.builder.addCommitHook(commitHook); + } +} +EasyScore.DEBUG = false; + + +/***/ }), + +/***/ "./src/element.ts": +/*!************************!*\ + !*** ./src/element.ts ***! + \************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Element": () => (/* binding */ Element) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _registry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./registry */ "./src/registry.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// @author Mohit Cheppudira +// MIT License + + + + +/** + * Element implements a generic base class for VexFlow, with implementations + * of general functions and properties that can be inherited by all VexFlow elements. + */ +class Element { + constructor() { + var _a; + this.children = []; + this.attrs = { + id: Element.newID(), + el: undefined, + type: this.getCategory(), + classes: {}, + }; + this.rendered = false; + // If a default registry exist, then register with it right away. + (_a = _registry__WEBPACK_IMPORTED_MODULE_1__.Registry.getDefaultRegistry()) === null || _a === void 0 ? void 0 : _a.register(this); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.Element; + } + static newID() { + return `auto${Element.ID++}`; + } + addChildElement(child) { + this.children.push(child); + return this; + } + getCategory() { + return this.constructor.CATEGORY; + } + /** + * Set the element style used to render. + * + * Example: + * ```typescript + * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' }); + * element.draw(); + * ``` + * Note: If the element draws additional sub-elements (ie.: Modifiers in a Stave), + * the style can be applied to all of them by means of the context: + * ```typescript + * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' }); + * element.getContext().setFillStyle('red'); + * element.getContext().setStrokeStyle('red'); + * element.draw(); + * ``` + * or using drawWithStyle: + * ```typescript + * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' }); + * element.drawWithStyle(); + * ``` + */ + setStyle(style) { + this.style = style; + return this; + } + /** Set the element & associated children style used for rendering. */ + setGroupStyle(style) { + this.style = style; + this.children.forEach((child) => child.setGroupStyle(style)); + return this; + } + /** Get the element style used for rendering. */ + getStyle() { + return this.style; + } + /** Apply the element style to `context`. */ + applyStyle(context = this.context, style = this.getStyle()) { + if (!style) + return this; + if (!context) + return this; + context.save(); + if (style.shadowColor) + context.setShadowColor(style.shadowColor); + if (style.shadowBlur) + context.setShadowBlur(style.shadowBlur); + if (style.fillStyle) + context.setFillStyle(style.fillStyle); + if (style.strokeStyle) + context.setStrokeStyle(style.strokeStyle); + if (style.lineWidth) + context.setLineWidth(style.lineWidth); + return this; + } + /** Restore the style of `context`. */ + restoreStyle(context = this.context, style = this.getStyle()) { + if (!style) + return this; + if (!context) + return this; + context.restore(); + return this; + } + /** + * Draw the element and all its sub-elements (ie.: Modifiers in a Stave) + * with the element style. + */ + drawWithStyle() { + this.checkContext(); + this.applyStyle(); + this.draw(); + this.restoreStyle(); + } + /** Check if it has a class label (An element can have multiple class labels). */ + hasClass(className) { + return this.attrs.classes[className] === true; + } + /** Add a class label (An element can have multiple class labels). */ + addClass(className) { + var _a; + this.attrs.classes[className] = true; + (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({ + id: this.attrs.id, + name: 'class', + value: className, + oldValue: undefined, + }); + return this; + } + /** Remove a class label (An element can have multiple class labels). */ + removeClass(className) { + var _a; + delete this.attrs.classes[className]; + (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({ + id: this.attrs.id, + name: 'class', + value: undefined, + oldValue: className, + }); + return this; + } + /** Call back from registry after the element is registered. */ + onRegister(registry) { + this.registry = registry; + return this; + } + /** Return the rendered status. */ + isRendered() { + return this.rendered; + } + /** Set the rendered status. */ + setRendered(rendered = true) { + this.rendered = rendered; + return this; + } + /** Return the element attributes. */ + getAttributes() { + return this.attrs; + } + /** Return an attribute. */ + // eslint-disable-next-line + getAttribute(name) { + return this.attrs[name]; + } + /** Return associated SVGElement. */ + getSVGElement(suffix = '') { + const id = (0,_util__WEBPACK_IMPORTED_MODULE_3__.prefix)(this.attrs.id + suffix); + const element = document.getElementById(id); + if (element) + return element; + } + /** Set an attribute. */ + // eslint-disable-next-line + setAttribute(name, value) { + var _a; + const oldID = this.attrs.id; + const oldValue = this.attrs[name]; + this.attrs[name] = value; + // Register with old id to support id changes. + (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({ id: oldID, name, value, oldValue }); + return this; + } + /** Get the boundingBox. */ + getBoundingBox() { + return this.boundingBox; + } + /** Return the context. */ + getContext() { + return this.context; + } + /** Set the context. */ + setContext(context) { + this.context = context; + return this; + } + /** Validate and return the context. */ + checkContext() { + return (0,_util__WEBPACK_IMPORTED_MODULE_3__.defined)(this.context, 'NoContext', 'No rendering context attached to instance.'); + } + ////////////////////////////////////////////////////////////////////////////////////////////////// + // Font Handling + /** + * Provide a CSS compatible font string (e.g., 'bold 16px Arial'). + */ + set font(f) { + this.setFont(f); + } + /** Returns the CSS compatible font string. */ + get font() { + return _font__WEBPACK_IMPORTED_MODULE_0__.Font.toCSSString(this.textFont); + } + /** + * Set the element's font family, size, weight, style (e.g., `Arial`, `10pt`, `bold`, `italic`). + * @param font is 1) a `FontInfo` object or + * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or + * 3) a string representing the font family (at least one of `size`, `weight`, or `style` must also be provided). + * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt'). + * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900). + * @param style is a string (e.g., 'italic', 'normal'). + * If no arguments are provided, then the font is set to the default font. + * Each Element subclass may specify its own default by overriding the static `TEXT_FONT` property. + */ + setFont(font, size, weight, style) { + // Allow subclasses to override `TEXT_FONT`. + const defaultTextFont = this.constructor.TEXT_FONT; + const fontIsObject = typeof font === 'object'; + const fontIsString = typeof font === 'string'; + const fontIsUndefined = font === undefined; + const sizeWeightStyleAreUndefined = size === undefined && weight === undefined && style === undefined; + if (fontIsObject) { + // `font` is case 1) a FontInfo object + this.textFont = Object.assign(Object.assign({}, defaultTextFont), font); + } + else if (fontIsString && sizeWeightStyleAreUndefined) { + // `font` is case 2) CSS font shorthand. + this.textFont = _font__WEBPACK_IMPORTED_MODULE_0__.Font.fromCSSString(font); + } + else if (fontIsUndefined && sizeWeightStyleAreUndefined) { + // All arguments are undefined. Do not check for `arguments.length === 0`, + // which fails on the edge case: `setFont(undefined)`. + // TODO: See if we can remove this case entirely without introducing a visual diff. + // The else case below seems like it should be equivalent to this case. + this.textFont = Object.assign({}, defaultTextFont); + } + else { + // `font` is case 3) a font family string (e.g., 'Times New Roman'). + // The other parameters represent the size, weight, and style. + // It is okay for `font` to be undefined while one or more of the other arguments is provided. + // Following CSS conventions, unspecified params are reset to the default. + this.textFont = _font__WEBPACK_IMPORTED_MODULE_0__.Font.validate(font !== null && font !== void 0 ? font : defaultTextFont.family, size !== null && size !== void 0 ? size : defaultTextFont.size, weight !== null && weight !== void 0 ? weight : defaultTextFont.weight, style !== null && style !== void 0 ? style : defaultTextFont.style); + } + return this; + } + getFont() { + if (!this.textFont) { + this.resetFont(); + } + return _font__WEBPACK_IMPORTED_MODULE_0__.Font.toCSSString(this.textFont); + } + /** + * Reset the text font to the style indicated by the static `TEXT_FONT` property. + * Subclasses can call this to initialize `textFont` for the first time. + */ + resetFont() { + this.setFont(); + } + /** Return a copy of the current FontInfo object. */ + get fontInfo() { + if (!this.textFont) { + this.resetFont(); + } + // We can cast to Required here, because + // we just called resetFont() above to ensure this.textFont is set. + return Object.assign({}, this.textFont); + } + set fontInfo(fontInfo) { + this.setFont(fontInfo); + } + /** Change the font size, while keeping everything else the same. */ + setFontSize(size) { + const fontInfo = this.fontInfo; + this.setFont(fontInfo.family, size, fontInfo.weight, fontInfo.style); + return this; + } + /** + * @returns a CSS font-size string (e.g., '18pt', '12px', '1em'). + * See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes. + */ + getFontSize() { + return this.fontSize; + } + /** + * The size is 1) a string of the form '10pt' or '16px', compatible with the CSS font-size property. + * or 2) a number, which is interpreted as a point size (i.e. 12 == '12pt'). + */ + set fontSize(size) { + this.setFontSize(size); + } + /** + * @returns a CSS font-size string (e.g., '18pt', '12px', '1em'). + */ + get fontSize() { + let size = this.fontInfo.size; + if (typeof size === 'number') { + size = `${size}pt`; + } + return size; + } + /** + * @returns the font size in `pt`. + */ + get fontSizeInPoints() { + return _font__WEBPACK_IMPORTED_MODULE_0__.Font.convertSizeToPointValue(this.fontSize); + } + /** + * @returns the font size in `px`. + */ + get fontSizeInPixels() { + return _font__WEBPACK_IMPORTED_MODULE_0__.Font.convertSizeToPixelValue(this.fontSize); + } + /** + * @returns a CSS font-style string (e.g., 'italic'). + */ + get fontStyle() { + return this.fontInfo.style; + } + set fontStyle(style) { + const fontInfo = this.fontInfo; + this.setFont(fontInfo.family, fontInfo.size, fontInfo.weight, style); + } + /** + * @returns a CSS font-weight string (e.g., 'bold'). + * As in CSS, font-weight is always returned as a string, even if it was set as a number. + */ + get fontWeight() { + return this.fontInfo.weight + ''; + } + set fontWeight(weight) { + const fontInfo = this.fontInfo; + this.setFont(fontInfo.family, fontInfo.size, weight, fontInfo.style); + } +} +Element.ID = 1000; +/** + * Default font for text. This is not related to music engraving. Instead, see `Flow.setMusicFont(...fontNames)` + * to customize the font for musical symbols placed on the score. + */ +Element.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SANS_SERIF, + size: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SIZE, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.NORMAL, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL, +}; + + +/***/ }), + +/***/ "./src/factory.ts": +/*!************************!*\ + !*** ./src/factory.ts ***! + \************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Factory": () => (/* binding */ Factory) +/* harmony export */ }); +/* harmony import */ var _accidental__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./accidental */ "./src/accidental.ts"); +/* harmony import */ var _annotation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./annotation */ "./src/annotation.ts"); +/* harmony import */ var _articulation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./articulation */ "./src/articulation.ts"); +/* harmony import */ var _barnote__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./barnote */ "./src/barnote.ts"); +/* harmony import */ var _beam__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./beam */ "./src/beam.ts"); +/* harmony import */ var _chordsymbol__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./chordsymbol */ "./src/chordsymbol.ts"); +/* harmony import */ var _clefnote__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./clefnote */ "./src/clefnote.ts"); +/* harmony import */ var _curve__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./curve */ "./src/curve.ts"); +/* harmony import */ var _easyscore__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./easyscore */ "./src/easyscore.ts"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _formatter__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./formatter */ "./src/formatter.ts"); +/* harmony import */ var _frethandfinger__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./frethandfinger */ "./src/frethandfinger.ts"); +/* harmony import */ var _ghostnote__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ghostnote */ "./src/ghostnote.ts"); +/* harmony import */ var _glyphnote__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./glyphnote */ "./src/glyphnote.ts"); +/* harmony import */ var _gracenote__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./gracenote */ "./src/gracenote.ts"); +/* harmony import */ var _gracenotegroup__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./gracenotegroup */ "./src/gracenotegroup.ts"); +/* harmony import */ var _keysignote__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./keysignote */ "./src/keysignote.ts"); +/* harmony import */ var _modifiercontext__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./modifiercontext */ "./src/modifiercontext.ts"); +/* harmony import */ var _multimeasurerest__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./multimeasurerest */ "./src/multimeasurerest.ts"); +/* harmony import */ var _notesubgroup__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./notesubgroup */ "./src/notesubgroup.ts"); +/* harmony import */ var _ornament__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./ornament */ "./src/ornament.ts"); +/* harmony import */ var _pedalmarking__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./pedalmarking */ "./src/pedalmarking.ts"); +/* harmony import */ var _renderer__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./renderer */ "./src/renderer.ts"); +/* harmony import */ var _repeatnote__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./repeatnote */ "./src/repeatnote.ts"); +/* harmony import */ var _stave__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./stave */ "./src/stave.ts"); +/* harmony import */ var _staveconnector__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./staveconnector */ "./src/staveconnector.ts"); +/* harmony import */ var _staveline__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./staveline */ "./src/staveline.ts"); +/* harmony import */ var _stavenote__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _stavetie__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./stavetie */ "./src/stavetie.ts"); +/* harmony import */ var _stringnumber__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./stringnumber */ "./src/stringnumber.ts"); +/* harmony import */ var _system__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./system */ "./src/system.ts"); +/* harmony import */ var _tabnote__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./tabnote */ "./src/tabnote.ts"); +/* harmony import */ var _tabstave__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./tabstave */ "./src/tabstave.ts"); +/* harmony import */ var _textbracket__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./textbracket */ "./src/textbracket.ts"); +/* harmony import */ var _textdynamics__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./textdynamics */ "./src/textdynamics.ts"); +/* harmony import */ var _textnote__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./textnote */ "./src/textnote.ts"); +/* harmony import */ var _tickcontext__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./tickcontext */ "./src/tickcontext.ts"); +/* harmony import */ var _timesignote__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./timesignote */ "./src/timesignote.ts"); +/* harmony import */ var _tuplet__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./tuplet */ "./src/tuplet.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +/* harmony import */ var _vibratobracket__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./vibratobracket */ "./src/vibratobracket.ts"); +/* harmony import */ var _voice__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./voice */ "./src/voice.ts"); +/* harmony import */ var _web__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./web */ "./src/web.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// @author Mohit Cheppudira +// MIT License + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// eslint-disable-next-line +function L(...args) { + if (Factory.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_39__.log)('Vex.Flow.Factory', args); +} +/** + * Factory implements a high level API around VexFlow. + */ +class Factory { + /** + * Example: + * + * Create an SVG renderer and attach it to the DIV element named "boo" to render using 1200 and 600 + * + * `const vf: Factory = new Vex.Flow.Factory({renderer: { elementId: 'boo', width: 1200, height: 600 }});` + */ + constructor(options = {}) { + L('New factory: ', options); + this.options = { + stave: { + space: 10, + }, + renderer: { + elementId: '', + width: 500, + height: 200, + background: '#FFF', + }, + font: Factory.TEXT_FONT, + }; + this.setOptions(options); + } + /** + * Static simplified function to access constructor without providing FactoryOptions + * + * Example: + * + * Create an SVG renderer and attach it to the DIV element named "boo" to render using 1200 and 600 + * + * `const vf: Factory = Vex.Flow.Factory.newFromElementId('boo', 1200, 600 );` + */ + static newFromElementId(elementId, width = 500, height = 200) { + return new Factory({ renderer: { elementId, width, height } }); + } + reset() { + this.renderQ = []; + this.systems = []; + this.staves = []; + this.voices = []; + this.stave = undefined; // current stave + } + setOptions(options) { + this.options = Object.assign(Object.assign({}, this.options), options); + this.initRenderer(); + this.reset(); + } + initRenderer() { + const { elementId, width, height, background } = this.options.renderer; + if (elementId == null) { + return; + } + if (elementId == '') { + L(this); + throw new _util__WEBPACK_IMPORTED_MODULE_39__.RuntimeError('renderer.elementId not set in FactoryOptions'); + } + let backend = this.options.renderer.backend; + if (backend === undefined) { + const elem = document.getElementById(elementId); + // We use a custom type check here, because node-canvas mimics canvas, + // but is not an instance of window.HTMLCanvasElement. + // In fact, `window` might be undefined here. + // See: https://www.npmjs.com/package/canvas + if ((0,_web__WEBPACK_IMPORTED_MODULE_42__.isHTMLCanvas)(elem)) { + backend = _renderer__WEBPACK_IMPORTED_MODULE_22__.Renderer.Backends.CANVAS; + } + else { + backend = _renderer__WEBPACK_IMPORTED_MODULE_22__.Renderer.Backends.SVG; + } + } + this.context = _renderer__WEBPACK_IMPORTED_MODULE_22__.Renderer.buildContext(elementId, backend, width, height, background); + } + getContext() { + return this.context; + } + setContext(context) { + this.context = context; + return this; + } + getStave() { + return this.stave; + } + getVoices() { + return this.voices; + } + /** Return pixels from current stave spacing. */ + Stave(params) { + const staveSpace = this.options.stave.space; + const p = Object.assign({ x: 0, y: 0, width: this.options.renderer.width - staveSpace * 1.0, options: { spacing_between_lines_px: staveSpace * 1.0 } }, params); + const stave = new _stave__WEBPACK_IMPORTED_MODULE_24__.Stave(p.x, p.y, p.width, p.options); + this.staves.push(stave); + stave.setContext(this.context); + this.stave = stave; + return stave; + } + TabStave(params) { + const staveSpace = this.options.stave.space; + const p = Object.assign({ x: 0, y: 0, width: this.options.renderer.width - staveSpace * 1.0, options: { spacing_between_lines_px: staveSpace * 1.3 } }, params); + const stave = new _tabstave__WEBPACK_IMPORTED_MODULE_32__.TabStave(p.x, p.y, p.width, p.options); + this.staves.push(stave); + stave.setContext(this.context); + this.stave = stave; + return stave; + } + StaveNote(noteStruct) { + const note = new _stavenote__WEBPACK_IMPORTED_MODULE_27__.StaveNote(noteStruct); + if (this.stave) + note.setStave(this.stave); + note.setContext(this.context); + this.renderQ.push(note); + return note; + } + GlyphNote(glyph, noteStruct, options) { + const note = new _glyphnote__WEBPACK_IMPORTED_MODULE_13__.GlyphNote(glyph, noteStruct, options); + if (this.stave) + note.setStave(this.stave); + note.setContext(this.context); + this.renderQ.push(note); + return note; + } + RepeatNote(type, noteStruct, options) { + const note = new _repeatnote__WEBPACK_IMPORTED_MODULE_23__.RepeatNote(type, noteStruct, options); + if (this.stave) + note.setStave(this.stave); + note.setContext(this.context); + this.renderQ.push(note); + return note; + } + GhostNote(noteStruct) { + const ghostNote = new _ghostnote__WEBPACK_IMPORTED_MODULE_12__.GhostNote(noteStruct); + if (this.stave) + ghostNote.setStave(this.stave); + ghostNote.setContext(this.context); + this.renderQ.push(ghostNote); + return ghostNote; + } + TextNote(noteStruct) { + const textNote = new _textnote__WEBPACK_IMPORTED_MODULE_35__.TextNote(noteStruct); + if (this.stave) + textNote.setStave(this.stave); + textNote.setContext(this.context); + this.renderQ.push(textNote); + return textNote; + } + BarNote(params = {}) { + const barNote = new _barnote__WEBPACK_IMPORTED_MODULE_3__.BarNote(params.type); + if (this.stave) + barNote.setStave(this.stave); + barNote.setContext(this.context); + this.renderQ.push(barNote); + return barNote; + } + ClefNote(params) { + const p = Object.assign({ type: 'treble', options: { + size: 'default', + annotation: undefined, + } }, params); + const clefNote = new _clefnote__WEBPACK_IMPORTED_MODULE_6__.ClefNote(p.type, p.options.size, p.options.annotation); + if (this.stave) + clefNote.setStave(this.stave); + clefNote.setContext(this.context); + this.renderQ.push(clefNote); + return clefNote; + } + TimeSigNote(params) { + const p = Object.assign({ time: '4/4' }, params); + const timeSigNote = new _timesignote__WEBPACK_IMPORTED_MODULE_37__.TimeSigNote(p.time); + if (this.stave) + timeSigNote.setStave(this.stave); + timeSigNote.setContext(this.context); + this.renderQ.push(timeSigNote); + return timeSigNote; + } + KeySigNote(params) { + const keySigNote = new _keysignote__WEBPACK_IMPORTED_MODULE_16__.KeySigNote(params.key, params.cancelKey, params.alterKey); + if (this.stave) + keySigNote.setStave(this.stave); + keySigNote.setContext(this.context); + this.renderQ.push(keySigNote); + return keySigNote; + } + TabNote(noteStruct) { + const note = new _tabnote__WEBPACK_IMPORTED_MODULE_31__.TabNote(noteStruct); + if (this.stave) + note.setStave(this.stave); + note.setContext(this.context); + this.renderQ.push(note); + return note; + } + GraceNote(noteStruct) { + const note = new _gracenote__WEBPACK_IMPORTED_MODULE_14__.GraceNote(noteStruct); + if (this.stave) + note.setStave(this.stave); + note.setContext(this.context); + return note; + } + GraceNoteGroup(params) { + const group = new _gracenotegroup__WEBPACK_IMPORTED_MODULE_15__.GraceNoteGroup(params.notes, params.slur); + group.setContext(this.context); + return group; + } + Accidental(params) { + const accid = new _accidental__WEBPACK_IMPORTED_MODULE_0__.Accidental(params.type); + accid.setContext(this.context); + return accid; + } + Annotation(params) { + const p = Object.assign({ text: 'p', hJustify: _annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationHorizontalJustify.CENTER, vJustify: _annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.BOTTOM }, params); + const annotation = new _annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation(p.text); + annotation.setJustification(p.hJustify); + annotation.setVerticalJustification(p.vJustify); + annotation.setFont(p.font); + annotation.setContext(this.context); + return annotation; + } + ChordSymbol(params) { + const p = Object.assign({ vJustify: 'top', hJustify: 'center', kerning: true, reportWidth: true }, params); + const chordSymbol = new _chordsymbol__WEBPACK_IMPORTED_MODULE_5__.ChordSymbol(); + chordSymbol.setHorizontal(p.hJustify); + chordSymbol.setVertical(p.vJustify); + chordSymbol.setEnableKerning(p.kerning); + chordSymbol.setReportWidth(p.reportWidth); + // There is a default font based on the engraving font. Only set then + // font if it is specific, else use the default + if (typeof p.fontFamily === 'string' && typeof p.fontSize === 'number') { + if (typeof p.fontWeight === 'string') + chordSymbol.setFont(p.fontFamily, p.fontSize, p.fontWeight); + else + chordSymbol.setFont(p.fontFamily, p.fontSize, ''); + } + else if (typeof p.fontSize === 'number') { + chordSymbol.setFontSize(p.fontSize); + } + chordSymbol.setContext(this.context); + return chordSymbol; + } + Articulation(params) { + const p = Object.assign({ type: 'a.', position: 'above' }, params); + const articulation = new _articulation__WEBPACK_IMPORTED_MODULE_2__.Articulation(p.type); + articulation.setPosition(p.position); + articulation.setContext(this.context); + return articulation; + } + Ornament(type, params) { + const options = Object.assign({ type, position: 0, accidental: '' }, params); + const ornament = new _ornament__WEBPACK_IMPORTED_MODULE_20__.Ornament(type); + ornament.setPosition(options.position); + if (options.upperAccidental) { + ornament.setUpperAccidental(options.upperAccidental); + } + if (options.lowerAccidental) { + ornament.setLowerAccidental(options.lowerAccidental); + } + if (typeof options.delayed !== 'undefined') { + ornament.setDelayed(options.delayed); + } + ornament.setContext(this.context); + return ornament; + } + TextDynamics(params) { + const p = Object.assign({ text: 'p', duration: 'q', dots: 0, line: 0 }, params); + const text = new _textdynamics__WEBPACK_IMPORTED_MODULE_34__.TextDynamics({ + text: p.text, + line: p.line, + duration: p.duration, + dots: p.dots, + }); + if (this.stave) + text.setStave(this.stave); + text.setContext(this.context); + this.renderQ.push(text); + return text; + } + Fingering(params) { + const p = Object.assign({ number: '0', position: 'left' }, params); + const fingering = new _frethandfinger__WEBPACK_IMPORTED_MODULE_11__.FretHandFinger(p.number); + fingering.setPosition(p.position); + fingering.setContext(this.context); + return fingering; + } + StringNumber(params, drawCircle = true) { + const stringNumber = new _stringnumber__WEBPACK_IMPORTED_MODULE_29__.StringNumber(params.number); + stringNumber.setPosition(params.position); + stringNumber.setContext(this.context); + stringNumber.setDrawCircle(drawCircle); + return stringNumber; + } + TickContext() { + return new _tickcontext__WEBPACK_IMPORTED_MODULE_36__.TickContext(); + } + ModifierContext() { + return new _modifiercontext__WEBPACK_IMPORTED_MODULE_17__.ModifierContext(); + } + MultiMeasureRest(params) { + const numMeasures = (0,_util__WEBPACK_IMPORTED_MODULE_39__.defined)(params.number_of_measures, 'NoNumberOfMeasures'); + const multiMeasureRest = new _multimeasurerest__WEBPACK_IMPORTED_MODULE_18__.MultiMeasureRest(numMeasures, params); + multiMeasureRest.setContext(this.context); + this.renderQ.push(multiMeasureRest); + return multiMeasureRest; + } + Voice(params) { + const p = Object.assign({ time: '4/4' }, params); + const voice = new _voice__WEBPACK_IMPORTED_MODULE_41__.Voice(p.time); + this.voices.push(voice); + return voice; + } + StaveConnector(params) { + const connector = new _staveconnector__WEBPACK_IMPORTED_MODULE_25__.StaveConnector(params.top_stave, params.bottom_stave); + connector.setType(params.type).setContext(this.context); + this.renderQ.push(connector); + return connector; + } + Formatter(options) { + return new _formatter__WEBPACK_IMPORTED_MODULE_10__.Formatter(options); + } + Tuplet(params) { + const p = Object.assign({ notes: [], options: {} }, params); + const tuplet = new _tuplet__WEBPACK_IMPORTED_MODULE_38__.Tuplet(p.notes, p.options).setContext(this.context); + this.renderQ.push(tuplet); + return tuplet; + } + Beam(params) { + var _a, _b, _c, _d, _e; + const beam = new _beam__WEBPACK_IMPORTED_MODULE_4__.Beam(params.notes, (_a = params.options) === null || _a === void 0 ? void 0 : _a.autoStem).setContext(this.context); + beam.breakSecondaryAt((_c = (_b = params.options) === null || _b === void 0 ? void 0 : _b.secondaryBeamBreaks) !== null && _c !== void 0 ? _c : []); + if ((_d = params.options) === null || _d === void 0 ? void 0 : _d.partialBeamDirections) { + Object.entries((_e = params.options) === null || _e === void 0 ? void 0 : _e.partialBeamDirections).forEach(([noteIndex, direction]) => { + beam.setPartialBeamSideAt(Number(noteIndex), direction); + }); + } + this.renderQ.push(beam); + return beam; + } + Curve(params) { + const curve = new _curve__WEBPACK_IMPORTED_MODULE_7__.Curve(params.from, params.to, params.options).setContext(this.context); + this.renderQ.push(curve); + return curve; + } + StaveTie(params) { + var _a; + const tie = new _stavetie__WEBPACK_IMPORTED_MODULE_28__.StaveTie({ + first_note: params.from, + last_note: params.to, + first_indices: params.first_indices, + last_indices: params.last_indices, + }, params.text); + if ((_a = params.options) === null || _a === void 0 ? void 0 : _a.direction) + tie.setDirection(params.options.direction); + tie.setContext(this.context); + this.renderQ.push(tie); + return tie; + } + StaveLine(params) { + var _a, _b; + const line = new _staveline__WEBPACK_IMPORTED_MODULE_26__.StaveLine({ + first_note: params.from, + last_note: params.to, + first_indices: params.first_indices, + last_indices: params.last_indices, + }); + if ((_a = params.options) === null || _a === void 0 ? void 0 : _a.text) + line.setText(params.options.text); + if ((_b = params.options) === null || _b === void 0 ? void 0 : _b.font) + line.setFont(params.options.font); + line.setContext(this.context); + this.renderQ.push(line); + return line; + } + VibratoBracket(params) { + const vibratoBracket = new _vibratobracket__WEBPACK_IMPORTED_MODULE_40__.VibratoBracket({ + start: params.from, + stop: params.to, + }); + if (params.options.line) + vibratoBracket.setLine(params.options.line); + if (params.options.harsh) + vibratoBracket.setHarsh(params.options.harsh); + vibratoBracket.setContext(this.context); + this.renderQ.push(vibratoBracket); + return vibratoBracket; + } + TextBracket(params) { + const textBracket = new _textbracket__WEBPACK_IMPORTED_MODULE_33__.TextBracket({ + start: params.from, + stop: params.to, + text: params.text, + superscript: params.options.superscript, + position: params.options.position, + }); + if (params.options.line) + textBracket.setLine(params.options.line); + if (params.options.font) + textBracket.setFont(params.options.font); + textBracket.setContext(this.context); + this.renderQ.push(textBracket); + return textBracket; + } + System(params = {}) { + params.factory = this; + const system = new _system__WEBPACK_IMPORTED_MODULE_30__.System(params).setContext(this.context); + this.systems.push(system); + return system; + } + /** + * Creates EasyScore. Normally the first step after constructing a Factory. For example: + * ``` + * const vf: Factory = new Vex.Flow.Factory({renderer: { elementId: 'boo', width: 1200, height: 600 }}); + * const score: EasyScore = vf.EasyScore(); + * ``` + * @param options.factory optional instance of Factory + * @param options.builder instance of Builder + * @param options.commitHooks function to call after a note element is created + * @param options.throwOnError throw error in case of parsing error + */ + EasyScore(options = {}) { + options.factory = this; + return new _easyscore__WEBPACK_IMPORTED_MODULE_8__.EasyScore(options); + } + PedalMarking(params) { + const p = Object.assign({ notes: [], options: { + style: 'mixed', + } }, params); + const pedal = new _pedalmarking__WEBPACK_IMPORTED_MODULE_21__.PedalMarking(p.notes); + pedal.setType(_pedalmarking__WEBPACK_IMPORTED_MODULE_21__.PedalMarking.typeString[p.options.style]); + pedal.setContext(this.context); + this.renderQ.push(pedal); + return pedal; + } + NoteSubGroup(params) { + const p = Object.assign({ notes: [] }, params); + const group = new _notesubgroup__WEBPACK_IMPORTED_MODULE_19__.NoteSubGroup(p.notes); + group.setContext(this.context); + return group; + } + /** Render the score. */ + draw() { + const ctx = this.context; + this.systems.forEach((s) => s.setContext(ctx).format()); + this.staves.forEach((s) => s.setContext(ctx).draw()); + this.voices.forEach((v) => v.setContext(ctx).draw()); + this.renderQ.forEach((e) => { + if (!e.isRendered()) + e.setContext(ctx).draw(); + }); + this.systems.forEach((s) => s.setContext(ctx).draw()); + this.reset(); + } +} +/** To enable logging for this class. Set `Vex.Flow.Factory.DEBUG` to `true`. */ +Factory.DEBUG = false; +/** Default text font. */ +Factory.TEXT_FONT = Object.assign({}, _element__WEBPACK_IMPORTED_MODULE_9__.Element.TEXT_FONT); + + +/***/ }), + +/***/ "./src/flow.ts": +/*!*********************!*\ + !*** ./src/flow.ts ***! + \*********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Flow": () => (/* binding */ Flow) +/* harmony export */ }); +/* harmony import */ var _accidental__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./accidental */ "./src/accidental.ts"); +/* harmony import */ var _annotation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./annotation */ "./src/annotation.ts"); +/* harmony import */ var _articulation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./articulation */ "./src/articulation.ts"); +/* harmony import */ var _barnote__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./barnote */ "./src/barnote.ts"); +/* harmony import */ var _beam__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./beam */ "./src/beam.ts"); +/* harmony import */ var _bend__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./bend */ "./src/bend.ts"); +/* harmony import */ var _boundingbox__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./boundingbox */ "./src/boundingbox.ts"); +/* harmony import */ var _boundingboxcomputation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./boundingboxcomputation */ "./src/boundingboxcomputation.ts"); +/* harmony import */ var _canvascontext__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./canvascontext */ "./src/canvascontext.ts"); +/* harmony import */ var _chordsymbol__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./chordsymbol */ "./src/chordsymbol.ts"); +/* harmony import */ var _clef__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./clef */ "./src/clef.ts"); +/* harmony import */ var _clefnote__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./clefnote */ "./src/clefnote.ts"); +/* harmony import */ var _crescendo__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./crescendo */ "./src/crescendo.ts"); +/* harmony import */ var _curve__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./curve */ "./src/curve.ts"); +/* harmony import */ var _dot__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./dot */ "./src/dot.ts"); +/* harmony import */ var _easyscore__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./easyscore */ "./src/easyscore.ts"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _factory__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./factory */ "./src/factory.ts"); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _formatter__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./formatter */ "./src/formatter.ts"); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./fraction */ "./src/fraction.ts"); +/* harmony import */ var _frethandfinger__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./frethandfinger */ "./src/frethandfinger.ts"); +/* harmony import */ var _ghostnote__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./ghostnote */ "./src/ghostnote.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _glyphnote__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./glyphnote */ "./src/glyphnote.ts"); +/* harmony import */ var _gracenote__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./gracenote */ "./src/gracenote.ts"); +/* harmony import */ var _gracenotegroup__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./gracenotegroup */ "./src/gracenotegroup.ts"); +/* harmony import */ var _gracetabnote__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./gracetabnote */ "./src/gracetabnote.ts"); +/* harmony import */ var _keymanager__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./keymanager */ "./src/keymanager.ts"); +/* harmony import */ var _keysignature__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./keysignature */ "./src/keysignature.ts"); +/* harmony import */ var _keysignote__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./keysignote */ "./src/keysignote.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _modifiercontext__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./modifiercontext */ "./src/modifiercontext.ts"); +/* harmony import */ var _multimeasurerest__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./multimeasurerest */ "./src/multimeasurerest.ts"); +/* harmony import */ var _music__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./music */ "./src/music.ts"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _notehead__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./notehead */ "./src/notehead.ts"); +/* harmony import */ var _notesubgroup__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./notesubgroup */ "./src/notesubgroup.ts"); +/* harmony import */ var _ornament__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./ornament */ "./src/ornament.ts"); +/* harmony import */ var _parenthesis__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./parenthesis */ "./src/parenthesis.ts"); +/* harmony import */ var _parser__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./parser */ "./src/parser.ts"); +/* harmony import */ var _pedalmarking__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./pedalmarking */ "./src/pedalmarking.ts"); +/* harmony import */ var _registry__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./registry */ "./src/registry.ts"); +/* harmony import */ var _rendercontext__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./rendercontext */ "./src/rendercontext.ts"); +/* harmony import */ var _renderer__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./renderer */ "./src/renderer.ts"); +/* harmony import */ var _repeatnote__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./repeatnote */ "./src/repeatnote.ts"); +/* harmony import */ var _stave__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./stave */ "./src/stave.ts"); +/* harmony import */ var _stavebarline__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./stavebarline */ "./src/stavebarline.ts"); +/* harmony import */ var _staveconnector__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./staveconnector */ "./src/staveconnector.ts"); +/* harmony import */ var _stavehairpin__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./stavehairpin */ "./src/stavehairpin.ts"); +/* harmony import */ var _staveline__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./staveline */ "./src/staveline.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _stavenote__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _staverepetition__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./staverepetition */ "./src/staverepetition.ts"); +/* harmony import */ var _stavetempo__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./stavetempo */ "./src/stavetempo.ts"); +/* harmony import */ var _stavetext__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./stavetext */ "./src/stavetext.ts"); +/* harmony import */ var _stavetie__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./stavetie */ "./src/stavetie.ts"); +/* harmony import */ var _stavevolta__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./stavevolta */ "./src/stavevolta.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _stringnumber__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./stringnumber */ "./src/stringnumber.ts"); +/* harmony import */ var _strokes__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./strokes */ "./src/strokes.ts"); +/* harmony import */ var _svgcontext__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./svgcontext */ "./src/svgcontext.ts"); +/* harmony import */ var _system__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ./system */ "./src/system.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _tabnote__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./tabnote */ "./src/tabnote.ts"); +/* harmony import */ var _tabslide__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./tabslide */ "./src/tabslide.ts"); +/* harmony import */ var _tabstave__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./tabstave */ "./src/tabstave.ts"); +/* harmony import */ var _tabtie__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./tabtie */ "./src/tabtie.ts"); +/* harmony import */ var _textbracket__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./textbracket */ "./src/textbracket.ts"); +/* harmony import */ var _textdynamics__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./textdynamics */ "./src/textdynamics.ts"); +/* harmony import */ var _textformatter__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ./textformatter */ "./src/textformatter.ts"); +/* harmony import */ var _textnote__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ./textnote */ "./src/textnote.ts"); +/* harmony import */ var _tickcontext__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ./tickcontext */ "./src/tickcontext.ts"); +/* harmony import */ var _timesignature__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ./timesignature */ "./src/timesignature.ts"); +/* harmony import */ var _timesignote__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ./timesignote */ "./src/timesignote.ts"); +/* harmony import */ var _tremolo__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ./tremolo */ "./src/tremolo.ts"); +/* harmony import */ var _tuning__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ./tuning */ "./src/tuning.ts"); +/* harmony import */ var _tuplet__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ./tuplet */ "./src/tuplet.ts"); +/* harmony import */ var _version__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ./version */ "./src/version.ts"); +/* harmony import */ var _vibrato__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ./vibrato */ "./src/vibrato.ts"); +/* harmony import */ var _vibratobracket__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ./vibratobracket */ "./src/vibratobracket.ts"); +/* harmony import */ var _voice__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ./voice */ "./src/voice.ts"); +var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +class Flow { + static get BUILD() { + return { + /** version number. */ + VERSION: _version__WEBPACK_IMPORTED_MODULE_78__.VERSION, + /** git commit ID that this library was built from. */ + ID: _version__WEBPACK_IMPORTED_MODULE_78__.ID, + /** The date when this library was compiled. */ + DATE: _version__WEBPACK_IMPORTED_MODULE_78__.DATE, + }; + } + /** + * Examples: + * ``` + * Vex.Flow.setMusicFont('Petaluma'); + * Vex.Flow.setMusicFont('Bravura', 'Gonville'); + * ``` + * + * **CASE 1**: You are using `vexflow.js`, which includes all music fonts (Bravura, Gonville, Petaluma, Custom). + * In this case, calling this method is optional, since VexFlow already defaults to a music font stack of: + * 'Bravura', 'Gonville', 'Custom'. + * + * **CASE 2**: You are using `vexflow-bravura.js` or `vexflow-petaluma.js` or `vexflow-gonville.js`, + * which includes a single music font. Calling this method is unnecessary. + * + * **CASE 3**: You are using the light weight `vexflow-core.js` to take advantage of lazy loading for fonts. + * In this case, the default music font stack is empty. + * Example: + * ``` + * await Vex.Flow.fetchMusicFont('Petaluma'); + * Vex.Flow.setMusicFont('Petaluma'); + * ... (do VexFlow stuff) ... + * ``` + * See `demos/fonts/` for more examples. + * + * @returns an array of Font objects corresponding to the provided `fontNames`. + */ + static setMusicFont(...fontNames) { + // Convert the array of font names into an array of Font objects. + const fonts = fontNames.map((fontName) => _font__WEBPACK_IMPORTED_MODULE_18__.Font.load(fontName)); + _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.MUSIC_FONT_STACK = fonts; + _glyph__WEBPACK_IMPORTED_MODULE_23__.Glyph.MUSIC_FONT_STACK = fonts.slice(); + _glyph__WEBPACK_IMPORTED_MODULE_23__.Glyph.CURRENT_CACHE_KEY = fontNames.join(','); + return fonts; + } + /** + * Used with vexflow-core which supports dynamic font loading. + */ + // eslint-disable-next-line + static fetchMusicFont(fontName, fontModuleOrPath) { + return __awaiter(this, void 0, void 0, function* () { + // The default implementation does nothing. + // See vexflow-core.ts for the implementation that vexflow-core.js uses. + }); + } + static getMusicFont() { + const fonts = _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.MUSIC_FONT_STACK; + return fonts.map((font) => font.getName()); + } + static get RENDER_PRECISION_PLACES() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.RENDER_PRECISION_PLACES; + } + static set RENDER_PRECISION_PLACES(precision) { + _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.RENDER_PRECISION_PLACES = precision; + } + static get SOFTMAX_FACTOR() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.SOFTMAX_FACTOR; + } + static set SOFTMAX_FACTOR(factor) { + _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.SOFTMAX_FACTOR = factor; + } + static get NOTATION_FONT_SCALE() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.NOTATION_FONT_SCALE; + } + static set NOTATION_FONT_SCALE(value) { + _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.NOTATION_FONT_SCALE = value; + } + static get TABLATURE_FONT_SCALE() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.TABLATURE_FONT_SCALE; + } + static set TABLATURE_FONT_SCALE(value) { + _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.TABLATURE_FONT_SCALE = value; + } + static get RESOLUTION() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.RESOLUTION; + } + static set RESOLUTION(value) { + _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.RESOLUTION = value; + } + static get SLASH_NOTEHEAD_WIDTH() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.SLASH_NOTEHEAD_WIDTH; + } + static set SLASH_NOTEHEAD_WIDTH(value) { + _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.SLASH_NOTEHEAD_WIDTH = value; + } + static get STAVE_LINE_DISTANCE() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.STAVE_LINE_DISTANCE; + } + static set STAVE_LINE_DISTANCE(value) { + _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.STAVE_LINE_DISTANCE = value; + } + static get STAVE_LINE_THICKNESS() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.STAVE_LINE_THICKNESS; + } + static set STAVE_LINE_THICKNESS(value) { + _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.STAVE_LINE_THICKNESS = value; + } + static get STEM_HEIGHT() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.STEM_HEIGHT; + } + static set STEM_HEIGHT(value) { + _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.STEM_HEIGHT = value; + } + static get STEM_WIDTH() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.STEM_WIDTH; + } + static set STEM_WIDTH(value) { + _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.STEM_WIDTH = value; + } + static get TIME4_4() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.TIME4_4; + } + static get accidentalMap() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.accidentalMap; + } + static get unicode() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.unicode; + } + static keySignature(spec) { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.keySignature(spec); + } + static hasKeySignature(spec) { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.hasKeySignature(spec); + } + static getKeySignatures() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.getKeySignatures(); + } + static clefProperties(clef) { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.clefProperties(clef); + } + // eslint-disable-next-line + static keyProperties(key, clef, params) { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.keyProperties(key, clef, params); + } + static durationToTicks(duration) { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.durationToTicks(duration); + } +} +Flow.Accidental = _accidental__WEBPACK_IMPORTED_MODULE_0__.Accidental; +Flow.Annotation = _annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation; +Flow.Articulation = _articulation__WEBPACK_IMPORTED_MODULE_2__.Articulation; +Flow.Barline = _stavebarline__WEBPACK_IMPORTED_MODULE_47__.Barline; +Flow.BarNote = _barnote__WEBPACK_IMPORTED_MODULE_3__.BarNote; +Flow.Beam = _beam__WEBPACK_IMPORTED_MODULE_4__.Beam; +Flow.Bend = _bend__WEBPACK_IMPORTED_MODULE_5__.Bend; +Flow.BoundingBox = _boundingbox__WEBPACK_IMPORTED_MODULE_6__.BoundingBox; +Flow.BoundingBoxComputation = _boundingboxcomputation__WEBPACK_IMPORTED_MODULE_7__.BoundingBoxComputation; +Flow.CanvasContext = _canvascontext__WEBPACK_IMPORTED_MODULE_8__.CanvasContext; +Flow.ChordSymbol = _chordsymbol__WEBPACK_IMPORTED_MODULE_9__.ChordSymbol; +Flow.Clef = _clef__WEBPACK_IMPORTED_MODULE_10__.Clef; +Flow.ClefNote = _clefnote__WEBPACK_IMPORTED_MODULE_11__.ClefNote; +Flow.Crescendo = _crescendo__WEBPACK_IMPORTED_MODULE_12__.Crescendo; +Flow.Curve = _curve__WEBPACK_IMPORTED_MODULE_13__.Curve; +Flow.Dot = _dot__WEBPACK_IMPORTED_MODULE_14__.Dot; +Flow.EasyScore = _easyscore__WEBPACK_IMPORTED_MODULE_15__.EasyScore; +Flow.Element = _element__WEBPACK_IMPORTED_MODULE_16__.Element; +Flow.Factory = _factory__WEBPACK_IMPORTED_MODULE_17__.Factory; +Flow.Font = _font__WEBPACK_IMPORTED_MODULE_18__.Font; +Flow.Formatter = _formatter__WEBPACK_IMPORTED_MODULE_19__.Formatter; +Flow.Fraction = _fraction__WEBPACK_IMPORTED_MODULE_20__.Fraction; +Flow.FretHandFinger = _frethandfinger__WEBPACK_IMPORTED_MODULE_21__.FretHandFinger; +Flow.GhostNote = _ghostnote__WEBPACK_IMPORTED_MODULE_22__.GhostNote; +Flow.Glyph = _glyph__WEBPACK_IMPORTED_MODULE_23__.Glyph; +Flow.GlyphNote = _glyphnote__WEBPACK_IMPORTED_MODULE_24__.GlyphNote; +Flow.GraceNote = _gracenote__WEBPACK_IMPORTED_MODULE_25__.GraceNote; +Flow.GraceNoteGroup = _gracenotegroup__WEBPACK_IMPORTED_MODULE_26__.GraceNoteGroup; +Flow.GraceTabNote = _gracetabnote__WEBPACK_IMPORTED_MODULE_27__.GraceTabNote; +Flow.KeyManager = _keymanager__WEBPACK_IMPORTED_MODULE_28__.KeyManager; +Flow.KeySignature = _keysignature__WEBPACK_IMPORTED_MODULE_29__.KeySignature; +Flow.KeySigNote = _keysignote__WEBPACK_IMPORTED_MODULE_30__.KeySigNote; +Flow.Modifier = _modifier__WEBPACK_IMPORTED_MODULE_31__.Modifier; +Flow.ModifierContext = _modifiercontext__WEBPACK_IMPORTED_MODULE_32__.ModifierContext; +Flow.MultiMeasureRest = _multimeasurerest__WEBPACK_IMPORTED_MODULE_33__.MultiMeasureRest; +Flow.Music = _music__WEBPACK_IMPORTED_MODULE_34__.Music; +Flow.Note = _note__WEBPACK_IMPORTED_MODULE_35__.Note; +Flow.NoteHead = _notehead__WEBPACK_IMPORTED_MODULE_36__.NoteHead; +Flow.NoteSubGroup = _notesubgroup__WEBPACK_IMPORTED_MODULE_37__.NoteSubGroup; +Flow.Ornament = _ornament__WEBPACK_IMPORTED_MODULE_38__.Ornament; +Flow.Parenthesis = _parenthesis__WEBPACK_IMPORTED_MODULE_39__.Parenthesis; +Flow.Parser = _parser__WEBPACK_IMPORTED_MODULE_40__.Parser; +Flow.PedalMarking = _pedalmarking__WEBPACK_IMPORTED_MODULE_41__.PedalMarking; +Flow.Registry = _registry__WEBPACK_IMPORTED_MODULE_42__.Registry; +Flow.RenderContext = _rendercontext__WEBPACK_IMPORTED_MODULE_43__.RenderContext; +Flow.Renderer = _renderer__WEBPACK_IMPORTED_MODULE_44__.Renderer; +Flow.RepeatNote = _repeatnote__WEBPACK_IMPORTED_MODULE_45__.RepeatNote; +Flow.Repetition = _staverepetition__WEBPACK_IMPORTED_MODULE_53__.Repetition; +Flow.Stave = _stave__WEBPACK_IMPORTED_MODULE_46__.Stave; +Flow.StaveConnector = _staveconnector__WEBPACK_IMPORTED_MODULE_48__.StaveConnector; +Flow.StaveHairpin = _stavehairpin__WEBPACK_IMPORTED_MODULE_49__.StaveHairpin; +Flow.StaveLine = _staveline__WEBPACK_IMPORTED_MODULE_50__.StaveLine; +Flow.StaveModifier = _stavemodifier__WEBPACK_IMPORTED_MODULE_51__.StaveModifier; +Flow.StaveNote = _stavenote__WEBPACK_IMPORTED_MODULE_52__.StaveNote; +Flow.StaveTempo = _stavetempo__WEBPACK_IMPORTED_MODULE_54__.StaveTempo; +Flow.StaveText = _stavetext__WEBPACK_IMPORTED_MODULE_55__.StaveText; +Flow.StaveTie = _stavetie__WEBPACK_IMPORTED_MODULE_56__.StaveTie; +Flow.Stem = _stem__WEBPACK_IMPORTED_MODULE_58__.Stem; +Flow.StringNumber = _stringnumber__WEBPACK_IMPORTED_MODULE_59__.StringNumber; +Flow.Stroke = _strokes__WEBPACK_IMPORTED_MODULE_60__.Stroke; +Flow.SVGContext = _svgcontext__WEBPACK_IMPORTED_MODULE_61__.SVGContext; +Flow.System = _system__WEBPACK_IMPORTED_MODULE_62__.System; +Flow.TabNote = _tabnote__WEBPACK_IMPORTED_MODULE_64__.TabNote; +Flow.TabSlide = _tabslide__WEBPACK_IMPORTED_MODULE_65__.TabSlide; +Flow.TabStave = _tabstave__WEBPACK_IMPORTED_MODULE_66__.TabStave; +Flow.TabTie = _tabtie__WEBPACK_IMPORTED_MODULE_67__.TabTie; +Flow.TextBracket = _textbracket__WEBPACK_IMPORTED_MODULE_68__.TextBracket; +Flow.TextDynamics = _textdynamics__WEBPACK_IMPORTED_MODULE_69__.TextDynamics; +Flow.TextFormatter = _textformatter__WEBPACK_IMPORTED_MODULE_70__.TextFormatter; +Flow.TextNote = _textnote__WEBPACK_IMPORTED_MODULE_71__.TextNote; +Flow.TickContext = _tickcontext__WEBPACK_IMPORTED_MODULE_72__.TickContext; +Flow.TimeSignature = _timesignature__WEBPACK_IMPORTED_MODULE_73__.TimeSignature; +Flow.TimeSigNote = _timesignote__WEBPACK_IMPORTED_MODULE_74__.TimeSigNote; +Flow.Tremolo = _tremolo__WEBPACK_IMPORTED_MODULE_75__.Tremolo; +Flow.Tuning = _tuning__WEBPACK_IMPORTED_MODULE_76__.Tuning; +Flow.Tuplet = _tuplet__WEBPACK_IMPORTED_MODULE_77__.Tuplet; +Flow.Vibrato = _vibrato__WEBPACK_IMPORTED_MODULE_79__.Vibrato; +Flow.VibratoBracket = _vibratobracket__WEBPACK_IMPORTED_MODULE_80__.VibratoBracket; +Flow.Voice = _voice__WEBPACK_IMPORTED_MODULE_81__.Voice; +Flow.Volta = _stavevolta__WEBPACK_IMPORTED_MODULE_57__.Volta; +// Exported Enums. +// Sorted by the module / file they are exported from. +Flow.AnnotationHorizontalJustify = _annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationHorizontalJustify; +Flow.AnnotationVerticalJustify = _annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify; +Flow.ChordSymbolHorizontalJustify = _chordsymbol__WEBPACK_IMPORTED_MODULE_9__.ChordSymbolHorizontalJustify; +Flow.ChordSymbolVerticalJustify = _chordsymbol__WEBPACK_IMPORTED_MODULE_9__.ChordSymbolVerticalJustify; +Flow.SymbolTypes = _chordsymbol__WEBPACK_IMPORTED_MODULE_9__.SymbolTypes; +Flow.SymbolModifiers = _chordsymbol__WEBPACK_IMPORTED_MODULE_9__.SymbolModifiers; +Flow.CurvePosition = _curve__WEBPACK_IMPORTED_MODULE_13__.CurvePosition; +Flow.FontWeight = _font__WEBPACK_IMPORTED_MODULE_18__.FontWeight; +Flow.FontStyle = _font__WEBPACK_IMPORTED_MODULE_18__.FontStyle; +Flow.ModifierPosition = _modifier__WEBPACK_IMPORTED_MODULE_31__.ModifierPosition; +Flow.RendererBackends = _renderer__WEBPACK_IMPORTED_MODULE_44__.RendererBackends; +Flow.RendererLineEndType = _renderer__WEBPACK_IMPORTED_MODULE_44__.RendererLineEndType; +Flow.BarlineType = _stavebarline__WEBPACK_IMPORTED_MODULE_47__.BarlineType; +Flow.StaveModifierPosition = _stavemodifier__WEBPACK_IMPORTED_MODULE_51__.StaveModifierPosition; +Flow.VoltaType = _stavevolta__WEBPACK_IMPORTED_MODULE_57__.VoltaType; +Flow.TextBracketPosition = _textbracket__WEBPACK_IMPORTED_MODULE_68__.TextBracketPosition; +Flow.TextJustification = _textnote__WEBPACK_IMPORTED_MODULE_71__.TextJustification; +Flow.VoiceMode = _voice__WEBPACK_IMPORTED_MODULE_81__.VoiceMode; + + +/***/ }), + +/***/ "./src/font.ts": +/*!*********************!*\ + !*** ./src/font.ts ***! + \*********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "FontWeight": () => (/* binding */ FontWeight), +/* harmony export */ "FontStyle": () => (/* binding */ FontStyle), +/* harmony export */ "Font": () => (/* binding */ Font) +/* harmony export */ }); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +var FontWeight; +(function (FontWeight) { + FontWeight["NORMAL"] = "normal"; + FontWeight["BOLD"] = "bold"; +})(FontWeight || (FontWeight = {})); +var FontStyle; +(function (FontStyle) { + FontStyle["NORMAL"] = "normal"; + FontStyle["ITALIC"] = "italic"; +})(FontStyle || (FontStyle = {})); +// Internal element for parsing CSS font shorthand strings. +let fontParser; +const Fonts = {}; +class Font { + /** + * Use `Font.load(fontName)` to get a Font object. + * Do not call this constructor directly. + */ + constructor(fontName) { + this.name = fontName; + } + /** + * @param fontSize a font size to convert. Can be specified as a CSS length string (e.g., '16pt', '1em') + * or as a number (the unit is assumed to be 'pt'). See `Font.scaleToPxFrom` for the supported + * units (e.g., pt, em, %). + * @returns the number of pixels that is equivalent to `fontSize` + */ + static convertSizeToPixelValue(fontSize = Font.SIZE) { + var _a; + if (typeof fontSize === 'number') { + // Assume the numeric fontSize is specified in pt. + return fontSize * Font.scaleToPxFrom.pt; + } + else { + const value = parseFloat(fontSize); + if (isNaN(value)) { + return 0; + } + const unit = fontSize.replace(/[\d.\s]/g, '').toLowerCase(); // Extract the unit by removing all numbers, dots, spaces. + const conversionFactor = (_a = Font.scaleToPxFrom[unit]) !== null && _a !== void 0 ? _a : 1; + return value * conversionFactor; + } + } + /** + * @param fontSize a font size to convert. Can be specified as a CSS length string (e.g., '16pt', '1em') + * or as a number (the unit is assumed to be 'pt'). See `Font.scaleToPxFrom` for the supported + * units (e.g., pt, em, %). + * @returns the number of points that is equivalent to `fontSize` + */ + static convertSizeToPointValue(fontSize = Font.SIZE) { + var _a; + if (typeof fontSize === 'number') { + // Assume the numeric fontSize is specified in pt. + return fontSize; + } + else { + const value = parseFloat(fontSize); + if (isNaN(value)) { + return 0; + } + const unit = fontSize.replace(/[\d.\s]/g, '').toLowerCase(); // Extract the unit by removing all numbers, dots, spaces. + const conversionFactor = ((_a = Font.scaleToPxFrom[unit]) !== null && _a !== void 0 ? _a : 1) / Font.scaleToPxFrom.pt; + return value * conversionFactor; + } + } + /** + * @param f + * @param size + * @param weight + * @param style + * @returns the `size` field will include the units (e.g., '12pt', '16px'). + */ + static validate(f, size, weight, style) { + // If f is a string but all other arguments are undefined, we assume that + // f is CSS font shorthand (e.g., 'italic bold 10pt Arial'). + if (typeof f === 'string' && size === undefined && weight === undefined && style === undefined) { + return Font.fromCSSString(f); + } + let family; + if (typeof f === 'object') { + // f is a FontInfo object, so we extract its fields. + family = f.family; + size = f.size; + weight = f.weight; + style = f.style; + } + else { + // f is a string representing the font family name or undefined. + family = f; + } + family = family !== null && family !== void 0 ? family : Font.SANS_SERIF; + size = size !== null && size !== void 0 ? size : Font.SIZE + 'pt'; + weight = weight !== null && weight !== void 0 ? weight : FontWeight.NORMAL; + style = style !== null && style !== void 0 ? style : FontStyle.NORMAL; + if (weight === '') { + weight = FontWeight.NORMAL; + } + if (style === '') { + style = FontStyle.NORMAL; + } + // If size is a number, we assume the unit is `pt`. + if (typeof size === 'number') { + size = `${size}pt`; + } + // If weight is a number (e.g., 900), turn it into a string representation of that number. + if (typeof weight === 'number') { + weight = weight.toString(); + } + // At this point, `family`, `size`, `weight`, and `style` are all strings. + return { family, size, weight, style }; + } + /** + * @param cssFontShorthand a string formatted as CSS font shorthand (e.g., 'italic bold 15pt Arial'). + */ + static fromCSSString(cssFontShorthand) { + // Let the browser parse this string for us. + // First, create a span element. + // Then, set its style.font and extract it back out. + if (!fontParser) { + fontParser = document.createElement('span'); + } + fontParser.style.font = cssFontShorthand; + const { fontFamily, fontSize, fontWeight, fontStyle } = fontParser.style; + return { family: fontFamily, size: fontSize, weight: fontWeight, style: fontStyle }; + } + /** + * @returns a CSS font shorthand string of the form `italic bold 16pt Arial`. + */ + static toCSSString(fontInfo) { + var _a; + if (!fontInfo) { + return ''; + } + let style; + const st = fontInfo.style; + if (st === FontStyle.NORMAL || st === '' || st === undefined) { + style = ''; // no space! Omit the style section. + } + else { + style = st.trim() + ' '; + } + let weight; + const wt = fontInfo.weight; + if (wt === FontWeight.NORMAL || wt === '' || wt === undefined) { + weight = ''; // no space! Omit the weight section. + } + else if (typeof wt === 'number') { + weight = wt + ' '; + } + else { + weight = wt.trim() + ' '; + } + let size; + const sz = fontInfo.size; + if (sz === undefined) { + size = Font.SIZE + 'pt '; + } + else if (typeof sz === 'number') { + size = sz + 'pt '; + } + else { + // size is already a string. + size = sz.trim() + ' '; + } + const family = (_a = fontInfo.family) !== null && _a !== void 0 ? _a : Font.SANS_SERIF; + return `${style}${weight}${size}${family}`; + } + /** + * @param fontSize a number representing a font size, or a string font size with units. + * @param scaleFactor multiply the size by this factor. + * @returns size * scaleFactor (e.g., 16pt * 3 = 48pt, 8px * 0.5 = 4px, 24 * 2 = 48). + * If the fontSize argument was a number, the return value will be a number. + * If the fontSize argument was a string, the return value will be a string. + */ + static scaleSize(fontSize, scaleFactor) { + if (typeof fontSize === 'number') { + return (fontSize * scaleFactor); + } + else { + const value = parseFloat(fontSize); + const unit = fontSize.replace(/[\d.\s]/g, ''); // Remove all numbers, dots, spaces. + return `${value * scaleFactor}${unit}`; + } + } + /** + * @param weight a string (e.g., 'bold') or a number (e.g., 600 / semi-bold in the OpenType spec). + * @returns true if the font weight indicates bold. + */ + static isBold(weight) { + if (!weight) { + return false; + } + else if (typeof weight === 'number') { + return weight >= 600; + } + else { + // a string can be 'bold' or '700' + const parsedWeight = parseInt(weight, 10); + if (isNaN(parsedWeight)) { + return weight.toLowerCase() === 'bold'; + } + else { + return parsedWeight >= 600; + } + } + } + /** + * @param style + * @returns true if the font style indicates 'italic'. + */ + static isItalic(style) { + if (!style) { + return false; + } + else { + return style.toLowerCase() === FontStyle.ITALIC; + } + } + /** + * @param fontName + * @param woffURL The absolute or relative URL to the woff file. + * @param includeWoff2 If true, we assume that a woff2 file is in + * the same folder as the woff file, and will append a `2` to the url. + */ + // Support distributions of the typescript compiler that do not yet include the FontFace API declarations. + // eslint-disable-next-line + // @ts-ignore + static loadWebFont(fontName, woffURL, includeWoff2 = true) { + return __awaiter(this, void 0, void 0, function* () { + const woff2URL = includeWoff2 ? `url(${woffURL}2) format('woff2'), ` : ''; + const woff1URL = `url(${woffURL}) format('woff')`; + const woffURLs = woff2URL + woff1URL; + // eslint-disable-next-line + // @ts-ignore + const fontFace = new FontFace(fontName, woffURLs); + yield fontFace.load(); + // eslint-disable-next-line + // @ts-ignore + document.fonts.add(fontFace); + return fontFace; + }); + } + /** + * Load the web fonts that are used by ChordSymbol. For example, `flow.html` calls: + * `await Vex.Flow.Font.loadWebFonts();` + * Alternatively, you may load web fonts with a stylesheet link (e.g., from Google Fonts), + * and a @font-face { font-family: ... } rule in your CSS. + * If you do not load either of these fonts, ChordSymbol will fall back to Times or Arial, + * depending on the current music engraving font. + * + * You can customize `Font.WEB_FONT_HOST` and `Font.WEB_FONT_FILES` to load different fonts + * for your app. + */ + static loadWebFonts() { + return __awaiter(this, void 0, void 0, function* () { + const host = Font.WEB_FONT_HOST; + const files = Font.WEB_FONT_FILES; + for (const fontName in files) { + const fontPath = files[fontName]; + Font.loadWebFont(fontName, host + fontPath); + } + }); + } + /** + * @param fontName + * @param data optionally set the Font object's `.data` property. + * This is usually done when setting up a font for the first time. + * @param metrics optionally set the Font object's `.metrics` property. + * This is usually done when setting up a font for the first time. + * @returns a Font object with the given `fontName`. + * Reuse an existing Font object if a matching one is found. + */ + static load(fontName, data, metrics) { + let font = Fonts[fontName]; + if (!font) { + font = new Font(fontName); + Fonts[fontName] = font; + } + if (data) { + font.setData(data); + } + if (metrics) { + font.setMetrics(metrics); + } + return font; + } + getName() { + return this.name; + } + getData() { + return (0,_util__WEBPACK_IMPORTED_MODULE_0__.defined)(this.data, 'FontError', 'Missing font data'); + } + getMetrics() { + return (0,_util__WEBPACK_IMPORTED_MODULE_0__.defined)(this.metrics, 'FontError', 'Missing metrics'); + } + setData(data) { + this.data = data; + } + setMetrics(metrics) { + this.metrics = metrics; + } + hasData() { + return this.data !== undefined; + } + getResolution() { + return this.getData().resolution; + } + getGlyphs() { + return this.getData().glyphs; + } + /** + * Use the provided key to look up a value in this font's metrics file (e.g., bravura_metrics.ts, petaluma_metrics.ts). + * @param key is a string separated by periods (e.g., stave.endPaddingMax, clef.lineCount.'5'.shiftY). + * @param defaultValue is returned if the lookup fails. + * @returns the retrieved value (or `defaultValue` if the lookup fails). + */ + // eslint-disable-next-line + lookupMetric(key, defaultValue) { + const keyParts = key.split('.'); + // Start with the top level font metrics object, and keep looking deeper into the object (via each part of the period-delimited key). + let currObj = this.getMetrics(); + for (let i = 0; i < keyParts.length; i++) { + const keyPart = keyParts[i]; + const value = currObj[keyPart]; + if (value === undefined) { + // If the key lookup fails, we fall back to the defaultValue. + return defaultValue; + } + // The most recent lookup succeeded, so we drill deeper into the object. + currObj = value; + } + // After checking every part of the key (i.e., the loop completed), return the most recently retrieved value. + return currObj; + } + /** For debugging. */ + toString() { + return '[' + this.name + ' Font]'; + } +} +////////////////////////////////////////////////////////////////////////////////////////////////// +// STATIC MEMBERS +/** Default sans-serif font family. */ +Font.SANS_SERIF = 'Arial, sans-serif'; +/** Default serif font family. */ +Font.SERIF = 'Times New Roman, serif'; +/** Default font size in `pt`. */ +Font.SIZE = 10; +// CSS Font Sizes: 36pt == 48px == 3em == 300% == 0.5in +/** Given a length (for units: pt, px, em, %, in, mm, cm) what is the scale factor to convert it to px? */ +Font.scaleToPxFrom = { + pt: 4 / 3, + px: 1, + em: 16, + '%': 4 / 25, + in: 96, + mm: 96 / 25.4, + cm: 96 / 2.54, +}; +/** + * Customize this field to specify a different CDN for delivering web fonts. + * Alternative: https://cdn.jsdelivr.net/npm/vexflow-fonts@1.0.3/ + * Or you can use your own host. + */ +Font.WEB_FONT_HOST = 'https://unpkg.com/vexflow-fonts@1.0.3/'; +/** + * These font files will be loaded from the CDN specified by `Font.WEB_FONT_HOST` when + * `await Font.loadWebFonts()` is called. Customize this field to specify a different + * set of fonts to load. See: `Font.loadWebFonts()`. + */ +Font.WEB_FONT_FILES = { + 'Roboto Slab': 'robotoslab/RobotoSlab-Medium_2.001.woff', + PetalumaScript: 'petaluma/PetalumaScript_1.10_FS.woff', +}; + + +/***/ }), + +/***/ "./src/fonts/bravura_glyphs.ts": +/*!*************************************!*\ + !*** ./src/fonts/bravura_glyphs.ts ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "BravuraFont": () => (/* binding */ BravuraFont) +/* harmony export */ }); +const BravuraFont = { + glyphs: { + bracketTop: { + x_min: 0, + x_max: 469, + y_min: 0, + y_max: 295, + ha: 295, + o: 'm 0 0 l 180 0 b 674 390 410 43 616 150 b 675 405 675 396 675 400 b 664 425 675 416 671 422 b 628 405 651 425 635 415 b 157 179 613 389 432 199 l 12 179 b 0 168 3 179 0 177 z', + }, + bracketBottom: { + x_min: 0, + x_max: 469, + y_min: -295, + y_max: 0, + ha: 295, + o: 'm 0 -168 b 12 -179 0 -177 3 -179 l 157 -179 b 628 -405 432 -199 613 -389 b 664 -425 635 -415 651 -425 b 675 -405 671 -422 675 -416 b 674 -390 675 -400 675 -396 b 180 0 616 -150 410 -43 l 0 0 z', + }, + barlineTick: { + x_min: 0, + x_max: 36, + y_min: 868, + y_max: 1120, + ha: 252, + o: 'm 52 1250 l 52 1613 l 0 1613 l 0 1250 z', + }, + breathMarkTick: { + x_min: 0, + x_max: 500, + y_min: 0, + y_max: 502, + ha: 502, + o: 'm 9 367 b 0 374 6 372 3 374 b 9 334 0 367 0 343 b 179 19 40 312 164 121 b 192 0 179 3 186 0 b 210 19 197 0 207 6 b 698 701 245 197 507 658 b 720 714 714 704 720 711 b 698 723 720 720 711 723 b 197 186 455 714 210 202 b 186 176 194 179 189 176 b 176 186 179 176 176 186 b 9 367 143 266 27 359 z', + }, + segno: { + x_min: 4, + x_max: 550, + y_min: -27, + y_max: 759, + ha: 786, + o: 'm 194 958 b 217 939 203 958 213 955 l 220 929 b 325 805 230 890 252 805 b 425 901 384 805 425 840 b 413 969 425 923 420 946 b 220 1060 390 1035 294 1060 b 6 793 120 1060 6 936 b 29 687 6 759 13 723 b 295 449 75 582 284 454 b 304 438 301 446 304 444 b 295 415 304 432 301 425 b 78 22 285 395 78 22 b 73 3 75 16 73 9 b 114 -39 73 -20 91 -39 b 150 -17 128 -39 143 -30 b 377 395 150 -17 373 386 b 395 402 377 393 389 402 b 704 176 416 397 704 312 b 621 75 704 120 670 82 l 616 73 b 562 138 586 73 562 94 l 562 154 b 485 249 562 209 526 249 b 468 246 480 249 474 248 b 366 153 415 233 366 210 b 540 -12 366 65 455 -12 b 600 -1 559 -12 579 -9 b 792 251 716 37 792 131 b 789 292 792 264 791 278 b 523 588 768 451 540 579 b 498 611 505 598 498 603 b 501 619 498 613 500 616 b 732 1032 508 631 732 1032 b 737 1053 736 1040 737 1045 b 697 1093 737 1076 719 1093 b 661 1073 683 1093 668 1086 b 423 647 661 1073 432 660 b 410 635 419 639 416 635 b 396 639 406 635 402 636 b 128 792 383 644 166 727 b 108 868 120 808 108 838 b 186 958 108 907 125 948 z m 598 671 b 680 589 598 626 635 589 b 762 671 726 589 762 626 b 680 753 762 717 726 753 b 598 671 635 753 598 717 z m 202 380 b 120 462 202 425 166 462 b 37 380 75 462 37 425 b 120 298 37 334 75 298 b 202 380 166 298 202 334 z', + }, + coda: { + x_min: -4, + x_max: 955, + y_min: -158, + y_max: 898, + ha: 1056, + o: 'm 1349 576 l 1178 576 b 729 1083 1164 847 962 1064 l 729 1269 b 694 1293 729 1287 713 1293 b 660 1269 675 1293 660 1287 l 660 1083 b 210 576 426 1064 226 848 l 20 576 b -6 541 0 576 -6 560 b 20 507 -6 523 0 507 l 210 507 b 660 0 226 238 426 19 l 660 -202 b 694 -228 660 -222 675 -228 b 729 -202 713 -228 729 -222 l 729 0 b 1178 507 962 19 1164 238 l 1349 507 b 1375 541 1369 507 1375 523 b 1349 576 1375 560 1369 576 z m 940 576 l 729 576 l 729 1002 b 940 576 930 985 940 809 z m 660 1002 l 660 576 l 455 576 b 660 1002 455 809 455 985 z m 455 507 l 660 507 l 660 69 b 455 507 474 91 456 285 z m 729 69 l 729 507 l 940 507 b 729 69 936 287 909 91 z', + }, + gClef: { + x_min: 0, + x_max: 671, + y_min: -658, + y_max: 1098, + ha: 1756, + o: 'm 541 598 b 550 625 539 615 541 616 b 824 1174 706 770 824 953 b 730 1509 824 1299 789 1423 b 655 1581 708 1541 671 1581 b 562 1512 635 1581 590 1544 b 420 1064 455 1394 420 1214 b 441 828 420 981 431 887 b 428 793 444 811 445 808 b 0 125 220 622 0 416 b 524 -363 0 -125 171 -363 b 624 -354 557 -363 595 -360 b 645 -367 639 -351 642 -350 b 684 -657 662 -464 684 -589 b 455 -896 684 -870 540 -896 b 340 -854 377 -896 340 -873 b 386 -829 340 -844 353 -840 b 482 -694 431 -816 482 -778 b 344 -547 482 -615 432 -547 b 190 -713 248 -547 190 -624 b 464 -948 190 -806 246 -948 b 747 -660 560 -948 747 -904 b 706 -351 747 -577 721 -441 b 724 -327 703 -334 704 -336 b 966 16 870 -269 966 -147 b 619 363 966 200 831 363 b 577 389 582 363 582 363 z m 677 1358 b 763 1240 724 1358 763 1319 b 513 851 763 1080 626 950 b 494 863 503 842 497 844 b 485 995 488 900 485 949 b 677 1358 485 1220 589 1358 z m 520 377 b 498 343 524 350 524 351 b 289 63 372 300 289 186 b 455 -192 289 -66 357 -158 b 494 -200 467 -196 484 -200 b 511 -184 505 -200 511 -193 b 490 -166 511 -174 500 -170 b 386 -12 429 -140 386 -78 b 530 157 386 71 442 132 b 559 145 553 163 556 161 l 631 -284 b 611 -304 634 -300 632 -300 b 530 -311 588 -308 559 -311 b 115 29 278 -311 115 -171 b 249 363 115 114 130 228 b 469 567 336 459 402 513 b 490 562 484 579 487 577 z m 619 148 b 635 168 616 166 618 170 b 848 -66 752 158 848 60 b 713 -271 848 -157 793 -230 b 690 -262 696 -279 693 -279 z', + }, + cClef: { + x_min: 0, + x_max: 699, + y_min: -506, + y_max: 506, + ha: 1012, + o: 'm 331 694 b 301 724 331 714 321 724 l 300 724 b 269 694 279 724 269 714 l 269 -694 b 300 -724 269 -714 279 -724 l 301 -724 b 331 -694 321 -724 331 -714 l 331 -63 b 344 -55 331 -52 338 -53 b 472 -265 382 -65 442 -102 b 500 -301 477 -288 485 -301 b 530 -262 516 -301 523 -287 b 684 -128 549 -199 582 -128 b 804 -409 778 -128 804 -220 b 651 -683 804 -598 770 -683 b 528 -644 631 -683 528 -674 b 567 -622 528 -636 552 -628 b 625 -528 596 -612 625 -583 b 527 -429 625 -465 583 -429 b 416 -547 465 -429 416 -471 b 667 -729 416 -638 495 -729 b 1007 -413 903 -729 1007 -563 b 706 -76 1007 -215 897 -76 b 618 -89 664 -76 636 -84 b 576 -88 603 -94 589 -96 b 524 0 556 -75 524 -29 b 576 88 524 29 556 75 b 618 89 589 96 603 94 b 706 76 636 84 664 76 b 1007 413 897 76 1007 215 b 667 729 1007 563 903 729 b 416 547 495 729 416 638 b 527 429 416 471 465 429 b 625 528 583 429 625 465 b 567 622 625 583 596 612 b 528 644 552 628 528 636 b 651 683 528 674 631 683 b 804 409 770 683 804 598 b 684 128 804 220 778 128 b 530 262 582 128 549 199 b 500 301 523 287 516 301 b 472 265 485 301 477 288 b 344 55 442 102 382 65 b 331 63 338 53 331 52 z m 30 724 b 0 694 10 724 0 714 l 0 -694 b 30 -724 0 -714 10 -724 l 154 -724 b 184 -694 174 -724 184 -714 l 184 694 b 154 724 184 714 174 724 z', + }, + fClef: { + x_min: -5, + x_max: 684, + y_min: -635, + y_max: 262, + ha: 897, + o: 'm 363 377 b 0 56 112 377 0 194 b 177 -158 0 -59 60 -158 b 330 -6 268 -158 330 -95 b 192 144 330 86 262 144 b 120 134 153 144 138 134 b 96 160 101 134 96 145 b 330 323 96 217 183 323 b 549 -53 482 323 549 173 b 14 -871 549 -455 350 -680 b -7 -897 1 -878 -7 -886 b 12 -914 -7 -906 -1 -914 b 36 -907 19 -914 27 -912 b 765 -40 390 -734 765 -478 b 363 377 765 210 612 377 z m 906 259 b 827 180 861 259 827 225 b 906 101 827 135 861 101 b 985 180 950 101 985 135 b 906 259 985 225 950 259 z m 907 -102 b 829 -180 863 -102 829 -135 b 907 -258 829 -225 863 -258 b 985 -180 952 -258 985 -225 b 907 -102 985 -135 952 -102 z', + }, + unpitchedPercussionClef1: { + x_min: 0, + x_max: 382, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 230 -338 l 230 338 b 210 360 230 350 222 360 l 20 360 b 0 338 9 360 0 350 l 0 -338 b 20 -360 0 -350 9 -360 l 210 -360 b 230 -338 222 -360 230 -350 z m 550 338 b 530 360 550 350 541 360 l 340 360 b 320 338 328 360 320 350 l 320 -338 b 340 -360 320 -350 328 -360 l 530 -360 b 550 -338 541 -360 550 -350 z', + }, + '6stringTabClef': { + x_min: -3, + x_max: 408, + y_min: -748, + y_max: 764, + ha: 1512, + o: 'm 557 1024 l 557 1100 l 26 1100 l 26 1024 l 249 1024 l 249 422 l 336 422 l 336 1024 z m 588 -328 l 350 348 l 238 348 l -4 -328 l 88 -328 l 160 -125 l 420 -125 l 491 -328 z m 397 -52 l 181 -52 l 292 256 z m 544 -883 b 420 -719 544 -802 507 -752 b 514 -572 482 -690 514 -639 b 314 -399 514 -472 442 -399 l 39 -399 l 39 -1077 l 344 -1077 b 544 -883 467 -1077 544 -995 z m 428 -583 b 292 -691 428 -652 389 -691 l 125 -691 l 125 -475 l 292 -475 b 428 -583 389 -475 428 -514 z m 458 -884 b 337 -1001 458 -949 418 -1001 l 125 -1001 l 125 -768 l 337 -768 b 458 -884 418 -768 458 -818 z', + }, + timeSig0: { + x_min: 20, + x_max: 450, + y_min: -250, + y_max: 251, + ha: 501, + o: 'm 648 0 b 338 361 648 200 510 361 b 29 0 167 361 29 200 b 338 -360 29 -199 167 -360 b 648 0 510 -360 648 -199 z m 338 317 b 446 10 397 317 446 180 b 338 -295 446 -158 397 -295 b 230 10 278 -295 230 -158 b 338 317 230 180 278 317 z', + }, + timeSig1: { + x_min: 20, + x_max: 314, + y_min: -250, + y_max: 251, + ha: 501, + o: 'm 35 19 b 29 0 35 19 29 10 b 45 -20 29 -7 33 -16 b 58 -23 50 -22 56 -23 b 78 -10 72 -23 78 -10 b 156 117 78 -10 140 89 b 170 131 161 127 167 131 b 179 111 176 131 179 120 l 179 -261 b 115 -315 179 -294 145 -315 b 91 -337 105 -315 91 -320 b 122 -360 91 -353 104 -360 l 429 -360 b 452 -337 452 -360 452 -337 b 431 -315 452 -337 452 -315 b 384 -265 410 -315 384 -289 l 384 328 b 356 361 384 351 376 360 b 281 356 336 361 300 356 b 206 360 253 356 228 357 b 199 361 203 360 200 361 b 173 334 184 361 179 347 z', + }, + timeSig2: { + x_min: 20, + x_max: 426, + y_min: -257, + y_max: 254, + ha: 511, + o: 'm 606 -131 b 589 -111 606 -114 599 -111 b 570 -127 577 -111 573 -117 l 569 -128 b 513 -192 554 -164 543 -192 b 488 -187 505 -192 498 -190 b 445 -171 469 -180 459 -179 b 289 -137 416 -160 348 -137 b 236 -145 271 -137 252 -140 b 422 -42 268 -94 390 -50 b 613 147 523 -14 613 27 b 330 366 613 300 464 366 b 69 275 229 366 140 357 b 29 170 45 245 29 209 b 42 108 29 150 33 130 b 160 29 63 63 108 29 b 261 156 248 29 261 120 b 161 275 261 242 161 246 b 275 330 164 295 190 330 b 405 192 403 330 405 233 b 193 -102 405 60 297 -39 b 33 -317 114 -153 58 -223 l 32 -321 b 69 -370 32 -340 48 -370 b 203 -282 101 -370 118 -282 b 410 -360 261 -282 282 -360 b 606 -131 472 -360 583 -354 z', + }, + timeSig3: { + x_min: 20, + x_max: 401, + y_min: -251, + y_max: 249, + ha: 500, + o: 'm 307 357 b 301 357 305 357 304 357 l 291 359 b 285 359 289 359 287 359 b 37 200 161 359 37 276 b 154 84 37 153 65 89 l 161 84 b 256 177 225 84 256 130 l 256 189 b 209 248 252 242 216 245 b 180 268 202 251 180 248 l 180 274 b 240 310 183 298 228 310 b 374 199 363 310 374 233 l 374 189 b 199 36 374 82 289 40 b 164 12 184 35 164 27 b 200 -6 164 -6 189 -6 b 379 -137 366 -6 379 -118 b 269 -307 379 -289 301 -307 b 256 -305 264 -307 258 -305 b 216 -282 245 -304 217 -304 l 216 -275 b 249 -180 216 -243 248 -222 b 145 -76 249 -120 207 -76 b 130 -78 140 -76 135 -76 b 60 -115 105 -82 78 -96 b 29 -203 36 -137 29 -171 b 275 -361 32 -315 134 -359 l 288 -361 b 577 -161 431 -361 577 -288 l 577 -151 b 537 -50 575 -109 564 -82 b 503 -20 528 -39 517 -29 l 472 -3 l 425 10 b 410 17 418 12 413 12 b 409 24 409 20 409 22 b 415 37 409 30 410 36 b 459 50 431 42 446 43 b 547 181 517 78 547 115 b 307 357 547 314 367 353 z', + }, + timeSig4: { + x_min: 20, + x_max: 450, + y_min: -250, + y_max: 251, + ha: 501, + o: 'm 521 -107 l 521 202 b 504 226 521 213 520 226 b 475 213 491 226 484 223 l 338 48 b 325 14 333 40 325 32 l 325 -107 l 131 -107 b 481 336 246 -9 477 318 l 482 340 b 461 361 482 353 472 361 b 363 359 448 361 389 359 b 261 361 337 359 272 361 b 228 334 248 361 228 357 b 43 -105 228 156 86 -45 l 35 -117 b 35 -118 35 -117 35 -118 l 33 -120 b 29 -137 30 -127 29 -132 b 58 -161 29 -151 40 -161 l 325 -161 l 325 -252 b 268 -302 325 -291 294 -302 b 235 -330 245 -302 235 -315 b 262 -360 235 -344 240 -360 l 569 -360 b 598 -330 583 -360 598 -350 b 566 -301 598 -310 580 -301 b 521 -246 552 -301 521 -292 l 521 -161 l 626 -161 b 648 -134 641 -161 648 -151 b 626 -107 648 -117 642 -107 z', + }, + timeSig5: { + x_min: 20, + x_max: 383, + y_min: -251, + y_max: 246, + ha: 497, + o: 'm 109 85 b 117 179 109 85 115 166 b 138 197 118 190 125 197 l 144 197 b 285 184 158 194 226 184 b 492 323 485 184 492 300 b 472 353 492 341 488 353 b 295 340 454 353 341 340 b 101 354 249 340 125 351 b 66 330 75 354 68 341 l 50 10 l 50 7 b 79 -14 50 -12 65 -14 b 111 14 94 -14 95 -1 b 209 62 125 29 160 62 b 357 -125 258 62 357 35 b 235 -304 357 -284 272 -304 b 202 -300 223 -304 212 -304 b 184 -279 194 -295 186 -289 b 202 -259 184 -269 194 -264 b 256 -163 235 -239 256 -203 b 144 -50 256 -99 206 -50 b 30 -157 66 -50 35 -107 b 29 -183 29 -166 29 -174 b 284 -361 29 -302 107 -361 b 552 -125 456 -361 552 -255 b 314 112 552 6 445 112 b 122 71 230 112 168 98 b 115 69 120 69 117 69 b 109 79 109 69 109 75 z', + }, + timeSig6: { + x_min: 20, + x_max: 414, + y_min: -249, + y_max: 251, + ha: 500, + o: 'm 439 120 b 554 229 500 120 554 167 b 553 245 554 235 554 239 b 348 361 539 337 426 361 b 85 209 239 360 137 307 b 29 4 53 148 29 72 l 29 -1 b 73 -200 30 -68 42 -143 b 324 -359 132 -307 203 -359 b 513 -307 389 -359 461 -348 b 596 -137 563 -266 596 -202 b 379 72 596 -24 490 72 b 248 22 333 72 285 55 b 239 19 245 19 242 19 b 226 53 230 19 226 30 b 346 327 230 320 315 327 b 393 305 374 327 393 320 b 357 251 393 285 366 268 b 347 209 350 238 347 223 b 369 150 347 187 354 166 b 439 120 379 131 420 120 z m 320 3 b 405 -158 366 3 405 -69 b 320 -320 405 -248 366 -320 b 236 -158 274 -320 236 -248 b 320 3 236 -69 274 3 z', + }, + timeSig7: { + x_min: 20, + x_max: 421, + y_min: -250, + y_max: 249, + ha: 499, + o: 'm 606 294 b 582 351 606 333 606 351 b 552 336 580 351 557 346 b 485 236 541 318 521 236 b 262 359 449 236 382 359 b 137 307 179 359 157 325 b 98 281 117 288 108 282 b 60 315 86 281 68 301 b 43 325 58 321 50 325 b 29 308 36 325 29 321 l 29 71 b 45 48 29 71 30 48 b 66 76 56 48 60 60 b 164 196 81 112 99 196 b 374 88 222 196 291 88 b 446 118 415 88 435 109 b 459 124 451 121 456 124 b 469 111 465 124 468 120 b 272 -112 469 71 359 -10 b 173 -315 217 -176 173 -259 b 200 -360 173 -346 173 -360 b 294 -347 226 -360 258 -347 b 412 -360 330 -347 397 -360 b 435 -307 426 -360 435 -348 b 606 288 435 -66 606 140 z', + }, + timeSig8: { + x_min: 20, + x_max: 416, + y_min: -259, + y_max: 259, + ha: 518, + o: 'm 481 52 b 567 204 533 85 567 132 b 317 373 567 351 356 373 b 36 176 150 373 36 297 b 161 -16 36 76 92 23 b 29 -190 86 -52 29 -99 b 301 -373 29 -315 158 -373 b 599 -117 445 -373 599 -311 b 481 52 599 -30 549 17 z m 406 85 b 168 240 291 125 168 150 b 314 331 168 301 251 331 b 482 207 360 331 482 308 b 406 85 482 150 454 112 z m 295 -325 b 111 -183 199 -325 111 -276 b 225 -48 111 -125 161 -72 b 436 -219 330 -94 436 -124 b 295 -325 436 -276 392 -325 z', + }, + timeSig9: { + x_min: 20, + x_max: 414, + y_min: -249, + y_max: 251, + ha: 500, + o: 'm 186 -117 b 71 -226 125 -117 71 -164 b 72 -242 71 -232 71 -236 b 276 -359 86 -334 199 -359 b 540 -206 386 -357 488 -304 b 596 -1 572 -145 596 -69 l 596 4 b 552 203 595 71 583 145 b 301 361 492 310 422 361 b 112 310 236 361 164 351 b 29 140 62 269 29 204 b 246 -69 29 27 135 -69 b 377 -19 292 -69 340 -52 b 386 -16 380 -16 383 -16 b 399 -50 395 -16 399 -27 b 279 -324 395 -317 310 -324 b 232 -302 251 -324 232 -317 b 268 -248 232 -282 259 -265 b 278 -206 275 -235 278 -220 b 256 -147 278 -184 271 -163 b 186 -117 246 -128 204 -117 z m 305 0 b 220 161 259 0 220 72 b 305 323 220 251 259 323 b 389 161 351 323 389 251 b 305 0 389 72 351 0 z', + }, + timeSigCommon: { + x_min: 5, + x_max: 424, + y_min: -249, + y_max: 251, + ha: 500, + o: 'm 336 361 b 7 -14 131 361 7 180 b 101 -262 7 -108 42 -190 b 321 -359 156 -328 235 -359 b 611 -88 573 -359 611 -130 b 589 -56 611 -56 595 -56 b 567 -82 577 -56 567 -58 b 363 -311 567 -268 409 -311 b 184 40 246 -311 184 -197 b 372 327 184 278 294 327 b 477 278 446 327 477 292 b 451 246 477 265 472 246 b 360 140 393 246 360 184 b 471 32 360 58 431 32 b 580 156 471 32 580 36 b 336 361 580 344 363 361 z', + }, + timeSigCutCommon: { + x_min: 0, + x_max: 418, + y_min: -359, + y_max: 361, + ha: 720, + o: 'm 573 -58 b 559 -82 567 -58 559 -60 b 354 -310 559 -266 400 -310 b 317 -305 340 -310 328 -308 b 302 -284 311 -304 302 -295 l 302 287 b 338 323 302 297 328 321 b 363 324 347 324 356 324 b 468 275 436 324 468 289 b 442 243 468 264 464 243 b 351 137 384 243 351 181 b 462 30 351 56 422 30 b 572 154 462 30 572 35 b 318 357 572 295 441 357 b 302 390 310 359 302 383 l 302 495 b 276 520 302 507 292 520 b 252 495 265 520 252 507 l 252 369 b 235 346 252 359 238 346 l 196 331 b 0 -14 66 275 0 122 b 225 -346 0 -150 86 -310 b 252 -382 235 -350 252 -369 l 252 -492 b 276 -517 252 -505 265 -517 b 302 -492 292 -517 302 -505 l 302 -379 b 318 -359 302 -370 308 -363 b 602 -85 563 -354 602 -130 b 579 -58 600 -58 586 -58 z m 252 -235 b 243 -252 252 -248 248 -252 b 236 -248 240 -252 238 -251 b 177 37 197 -193 177 -96 b 232 259 177 147 200 215 b 236 262 233 262 235 262 b 252 239 243 262 252 251 z', + }, + timeSigPlus: { + x_min: -1, + x_max: 499, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 432 53 b 413 79 420 53 413 65 l 413 340 b 392 360 413 350 405 360 l 325 360 b 305 340 312 360 305 350 l 305 79 b 284 53 305 66 292 53 l 19 53 b -1 33 9 53 -1 46 l -1 -33 b 19 -55 -1 -46 9 -55 l 284 -55 b 305 -75 298 -55 305 -68 l 305 -340 b 325 -360 305 -350 312 -360 l 392 -360 b 413 -340 405 -360 413 -350 l 413 -78 b 433 -55 413 -63 423 -55 l 698 -55 b 719 -33 708 -55 719 -46 l 719 33 b 698 53 719 46 708 53 z', + }, + timeSigPlusSmall: { + x_min: -1, + x_max: 255, + y_min: -133, + y_max: 123, + ha: 256, + o: 'm 220 20 b 210 33 215 20 210 26 l 210 166 b 200 177 210 171 206 177 l 166 177 b 156 166 160 177 156 171 l 156 33 b 145 20 156 27 150 20 l 10 20 b -1 10 4 20 -1 16 l -1 -24 b 10 -35 -1 -30 4 -35 l 145 -35 b 156 -46 153 -35 156 -42 l 156 -180 b 166 -192 156 -186 160 -192 l 200 -192 b 210 -180 206 -192 210 -186 l 210 -48 b 222 -35 210 -39 216 -35 l 356 -35 b 367 -24 361 -35 367 -30 l 367 10 b 356 20 367 16 361 20 z', + }, + timeSigMinus: { + x_min: 0, + x_max: 448, + y_min: -35, + y_max: 40, + ha: 75, + o: 'm 645 39 b 619 58 645 49 634 58 l 27 58 b 0 39 12 58 0 49 l 0 -32 b 27 -50 0 -42 12 -50 l 619 -50 b 645 -32 634 -50 645 -42 z', + }, + timeSigParensRight: { + x_min: 0, + x_max: 184, + y_min: -489, + y_max: 491, + ha: 980, + o: 'm 0 -696 b 3 -704 0 -698 1 -704 b 7 -703 4 -704 6 -704 b 265 1 187 -530 265 -282 b 12 701 265 289 187 531 b 4 707 12 701 6 707 b 0 696 1 707 0 703 l 0 665 b 4 644 0 665 0 651 b 167 1 112 503 167 315 b 6 -641 167 -311 109 -497 b 0 -658 3 -644 0 -651 z', + }, + timeSigParensRightSmall: { + x_min: 0, + x_max: 110, + y_min: -251, + y_max: 249, + ha: 500, + o: 'm 0 -356 b 3 -361 0 -357 1 -361 b 158 0 112 -272 158 -145 b 4 359 158 147 109 272 b 0 353 3 359 0 357 l 0 338 b 3 327 0 338 0 330 b 91 0 60 246 91 160 b 4 -328 91 -160 62 -249 b 0 -337 3 -330 0 -333 z', + }, + timeSigParensLeft: { + x_min: 0, + x_max: 184, + y_min: -489, + y_max: 491, + ha: 980, + o: 'm 265 -658 b 259 -641 265 -651 262 -644 b 98 1 156 -497 98 -311 b 261 644 98 315 153 503 b 265 665 265 651 265 665 l 265 696 b 261 707 265 703 264 707 b 253 701 259 707 253 701 b 0 1 78 531 0 289 b 258 -703 0 -282 78 -530 b 262 -704 259 -704 261 -704 b 265 -696 264 -704 265 -698 z', + }, + timeSigParensLeftSmall: { + x_min: 0, + x_max: 110, + y_min: -251, + y_max: 249, + ha: 500, + o: 'm 158 -337 b 154 -328 158 -333 156 -330 b 68 0 96 -249 68 -160 b 156 327 68 160 98 246 b 158 338 158 330 158 338 l 158 353 b 154 359 158 357 156 359 b 0 0 49 272 0 147 b 156 -361 0 -145 46 -272 b 158 -356 157 -361 158 -357 z', + }, + noteheadDoubleWhole: { + x_min: 0, + x_max: 599, + y_min: -155, + y_max: 155, + ha: 310, + o: 'm 13 223 b 0 212 4 223 0 217 l 0 -213 b 13 -223 0 -219 4 -223 l 32 -223 b 45 -213 39 -223 45 -219 l 45 212 b 32 223 45 217 39 223 z m 96 223 b 82 212 88 223 82 217 l 82 -213 b 96 -223 82 -219 88 -223 l 114 -223 b 128 -213 121 -223 128 -219 l 128 212 b 114 223 128 217 121 223 z m 747 223 b 733 212 740 223 733 217 l 733 -213 b 747 -223 733 -219 740 -223 l 766 -223 b 780 -213 773 -223 780 -219 l 780 212 b 766 223 780 217 773 223 z m 829 223 b 815 212 824 223 815 217 l 815 -213 b 829 -223 815 -219 824 -223 l 848 -223 b 863 -213 857 -223 863 -219 l 863 212 b 848 223 863 217 857 223 z m 438 180 b 130 1 248 180 130 101 b 423 -180 130 -92 210 -180 b 733 1 657 -180 733 -98 b 438 180 733 104 572 180 z m 469 -145 b 331 -71 409 -145 369 -112 b 284 58 305 -37 284 12 b 400 147 284 131 333 147 b 577 -45 498 147 577 42 b 469 -145 577 -115 533 -145 z', + }, + noteheadWhole: { + x_min: 0, + x_max: 422, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 311 180 b 0 3 120 180 0 101 b 297 -180 0 -94 82 -180 b 608 3 533 -180 608 -98 b 311 180 608 105 445 180 z m 160 91 b 274 148 176 141 229 148 b 452 -45 373 148 452 42 b 386 -141 452 -89 433 -130 b 341 -147 372 -145 356 -147 b 206 -72 289 -147 236 -112 b 156 56 177 -39 156 10 b 160 91 156 68 157 79 z', + }, + noteheadHalf: { + x_min: 0, + x_max: 295, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 140 -180 b 425 60 377 -180 425 13 b 282 180 425 134 366 180 b 0 -60 68 180 0 14 b 140 -180 0 -137 60 -180 z m 108 -125 b 50 -92 78 -125 60 -109 b 42 -63 46 -84 42 -73 b 318 121 42 7 251 121 b 372 91 346 121 361 108 b 380 63 376 82 380 73 b 108 -125 380 1 177 -125 z', + }, + noteheadBlack: { + x_min: 0, + x_max: 295, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 140 -180 b 425 60 268 -180 425 -62 b 285 180 425 134 367 180 b 0 -60 127 180 0 63 b 140 -180 0 -135 62 -180 z', + }, + noteheadXDoubleWhole: { + x_min: 0, + x_max: 546, + y_min: -155, + y_max: 155, + ha: 310, + o: 'm 43 213 b 30 223 43 217 39 223 l 13 223 b 0 213 6 223 0 217 l 0 -215 b 13 -223 0 -219 6 -223 l 30 -223 b 43 -215 39 -223 43 -219 z m 704 213 b 693 223 704 217 698 223 l 672 223 b 660 213 667 223 660 217 l 660 163 b 634 180 655 173 645 180 l 505 180 b 484 173 498 180 490 177 l 393 95 l 300 173 b 279 180 294 177 287 180 l 151 180 b 125 163 141 180 130 173 l 125 213 b 112 223 125 217 118 223 l 94 223 b 82 213 86 223 82 217 l 82 -215 b 94 -223 82 -219 86 -223 l 112 -223 b 125 -215 118 -223 125 -219 l 125 -163 b 151 -180 130 -173 140 -180 l 279 -180 b 300 -171 287 -180 294 -177 l 393 -95 l 485 -171 b 505 -180 491 -177 498 -180 l 632 -180 b 660 -163 645 -180 655 -173 l 660 -215 b 672 -223 660 -219 667 -223 l 693 -223 b 704 -215 698 -223 704 -219 z m 786 213 b 772 223 786 217 780 223 l 755 223 b 740 213 747 223 740 217 l 740 -215 b 755 -223 740 -219 747 -223 l 772 -223 b 786 -215 780 -223 786 -219 z m 507 -141 l 393 -45 l 276 -141 l 207 -141 l 364 0 l 207 141 l 276 141 l 393 45 l 507 141 l 577 141 l 420 0 l 577 -141 z m 660 -132 l 518 0 l 660 132 z m 125 131 l 266 0 l 125 -131 z', + }, + noteheadXWhole: { + x_min: 0, + x_max: 377, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 272 -95 l 364 -171 b 384 -180 370 -177 377 -180 l 511 -180 b 543 -148 528 -180 543 -164 b 531 -124 543 -140 539 -131 l 412 0 l 531 124 b 541 148 539 131 541 140 b 513 180 541 164 528 180 l 384 180 b 364 171 377 180 370 177 l 272 94 l 179 171 b 158 180 173 177 166 180 l 30 180 b 0 148 16 180 0 164 b 12 124 0 140 4 131 l 132 0 l 12 -124 b 1 -148 4 -131 1 -140 b 32 -180 1 -164 14 -180 l 158 -180 b 179 -171 166 -180 173 -177 z m 386 -141 l 272 -45 l 157 -141 l 88 -141 l 245 0 l 88 141 l 157 141 l 272 45 l 386 141 l 456 141 l 300 0 l 456 -141 z', + }, + noteheadXHalf: { + x_min: 0, + x_max: 334, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 295 180 b 271 170 287 180 278 177 l 209 98 l 115 171 b 95 180 109 177 104 180 l 36 180 b 4 148 19 180 4 164 b 14 124 4 140 7 132 l 140 22 l 7 -127 b 0 -148 3 -131 0 -138 b 32 -180 0 -166 14 -180 l 184 -180 b 209 -170 193 -180 203 -177 l 271 -99 l 363 -171 b 384 -180 370 -176 377 -180 l 445 -180 b 478 -147 461 -180 478 -163 b 465 -125 478 -138 474 -131 l 341 -22 l 474 127 b 481 148 480 131 481 138 b 448 180 481 166 468 180 z m 36 148 l 95 148 l 233 33 l 334 148 l 410 148 l 274 -6 l 445 -148 l 384 -148 l 248 -35 l 147 -148 l 71 -148 l 206 4 z', + }, + noteheadXBlack: { + x_min: 0, + x_max: 290, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 410 -143 l 239 0 l 410 144 b 418 160 415 147 418 154 b 399 180 418 171 408 180 b 389 177 396 180 392 179 l 207 26 l 29 177 b 17 180 26 179 22 180 b 0 161 7 180 0 170 b 7 144 0 156 3 148 l 179 0 l 7 -143 b 0 -158 1 -147 0 -153 b 19 -180 0 -170 7 -180 b 29 -176 23 -180 26 -179 l 207 -24 l 389 -176 b 399 -180 392 -179 396 -180 b 418 -160 410 -180 418 -168 b 410 -143 418 -153 415 -147 z', + }, + noteheadCircleXDoubleWhole: { + x_min: 0, + x_max: 422, + y_min: -155, + y_max: 155, + ha: 310, + o: 'm 576 223 b 563 213 570 223 563 219 l 563 -215 b 576 -223 563 -219 570 -223 l 595 -223 b 608 -215 602 -223 608 -219 l 608 213 b 595 223 608 219 602 223 z m 497 223 b 484 213 491 223 484 219 l 484 -215 b 497 -223 484 -219 491 -223 l 516 -223 b 528 -215 523 -223 528 -219 l 528 213 b 516 223 528 219 523 223 z m 94 223 b 81 213 86 223 81 219 l 81 -215 b 94 -223 81 -219 86 -223 l 111 -223 b 124 -215 118 -223 124 -219 l 124 213 b 111 223 124 219 118 223 z m 13 223 b 0 213 6 223 0 219 l 0 -215 b 13 -223 0 -219 6 -223 l 30 -223 b 45 -215 37 -223 45 -219 l 45 213 b 30 223 45 219 37 223 z m 304 180 b 127 0 206 180 127 101 b 304 -180 127 -99 206 -180 b 482 0 405 -180 482 -99 b 304 180 482 101 405 180 z m 305 32 l 225 112 b 304 140 248 130 275 140 b 387 112 336 140 364 130 z m 278 1 l 193 -82 b 216 0 199 -59 216 -30 b 194 85 216 33 203 50 z m 334 1 l 418 84 b 389 0 402 50 389 23 b 418 -81 389 -30 409 -60 z m 305 -27 l 389 -109 b 304 -138 364 -128 336 -138 b 222 -109 274 -138 246 -128 z', + }, + noteheadCircleXWhole: { + x_min: 0, + x_max: 249, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 179 180 b 0 0 81 180 0 101 b 179 -180 0 -99 81 -180 b 359 0 278 -180 359 -99 b 179 180 359 101 278 180 z m 180 32 l 99 112 b 179 140 121 130 150 140 b 262 112 210 140 238 130 z m 151 1 l 68 -82 b 86 0 73 -59 86 -30 b 68 85 86 33 78 50 z m 209 1 l 291 84 b 269 0 276 50 269 32 b 291 -79 269 -26 282 -58 z m 180 -27 l 264 -111 b 179 -138 239 -128 210 -138 b 96 -111 148 -138 120 -128 z', + }, + noteheadCircleXHalf: { + x_min: 0, + x_max: 250, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 179 180 b 0 0 81 180 0 101 b 179 -180 0 -99 81 -180 b 360 0 278 -180 360 -99 b 179 180 360 101 278 180 z m 186 37 l 131 92 b 220 124 153 109 189 124 b 262 112 236 124 249 121 z m 215 7 l 291 84 b 304 42 300 71 304 58 b 271 -49 304 10 288 -26 z m 145 -6 l 68 -82 b 56 -42 59 -71 56 -58 b 89 52 56 -9 72 27 z m 174 -33 l 230 -89 b 140 -124 206 -108 171 -124 b 96 -111 122 -124 109 -121 z', + }, + noteheadCircleX: { + x_min: 0, + x_max: 249, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 179 180 b 0 0 81 180 0 99 b 179 -180 0 -99 81 -180 b 359 0 278 -180 359 -99 b 179 180 359 99 278 180 z m 261 112 l 180 30 l 98 112 b 179 138 121 128 148 138 b 261 112 210 138 238 128 z m 317 0 b 292 -82 317 -30 308 -59 l 209 1 l 291 84 b 317 0 307 60 317 30 z m 40 0 b 69 84 40 32 50 60 l 151 1 l 68 -84 b 40 0 49 -60 40 -30 z m 95 -111 l 180 -27 l 262 -111 b 179 -138 239 -128 210 -138 b 95 -111 148 -138 120 -128 z', + }, + noteheadCircledDoubleWhole: { + x_min: 0, + x_max: 603, + y_min: -218, + y_max: 213, + ha: 431, + o: 'm 770 223 l 752 223 b 737 213 744 223 737 219 l 737 59 b 435 307 710 203 582 307 b 128 48 281 307 156 197 l 128 213 b 115 223 128 219 122 223 l 96 223 b 84 213 89 223 84 219 l 84 -215 b 96 -223 84 -220 89 -223 l 115 -223 b 128 -215 122 -223 128 -220 l 128 -56 b 435 -314 156 -206 282 -314 b 654 -223 517 -314 595 -282 b 737 -66 697 -180 726 -125 l 737 -215 b 752 -223 737 -220 744 -223 l 770 -223 b 785 -215 778 -223 785 -220 l 785 213 b 770 223 785 219 778 223 z m 435 274 b 698 85 556 274 661 194 b 439 180 641 143 534 180 b 176 99 320 180 228 148 b 435 274 217 203 318 274 z m 32 223 l 13 223 b 0 213 6 223 0 219 l 0 -215 b 13 -223 0 -220 6 -223 l 32 -223 b 45 -215 40 -223 45 -220 l 45 213 b 32 223 45 219 40 223 z m 852 223 l 835 223 b 819 213 828 223 819 219 l 819 -215 b 835 -223 819 -220 828 -223 l 852 -223 b 868 -215 861 -223 868 -220 l 868 213 b 852 223 868 219 861 223 z m 580 -46 b 514 -143 580 -91 562 -131 b 472 -148 501 -147 487 -148 b 364 -105 433 -148 395 -131 l 334 -73 b 285 58 307 -39 285 10 b 289 91 285 69 287 79 b 403 145 305 140 357 145 b 580 -46 501 145 580 42 z m 435 -282 b 176 -108 318 -282 217 -209 b 425 -180 222 -151 301 -180 b 691 -109 563 -180 647 -153 b 435 -282 651 -210 550 -282 z', + }, + noteheadCircledWhole: { + x_min: 0, + x_max: 437, + y_min: -225, + y_max: 211, + ha: 436, + o: 'm 314 304 b 0 -10 140 304 0 164 b 314 -324 0 -183 141 -324 b 629 -10 487 -324 629 -183 b 314 304 629 164 488 304 z m 314 275 b 588 73 441 275 549 193 b 321 180 536 137 420 180 b 48 88 190 180 95 143 b 314 275 85 199 199 275 z m 393 -141 b 350 -147 379 -145 364 -147 b 314 -141 337 -147 325 -145 b 167 55 235 -120 167 -26 b 173 91 167 66 168 79 b 284 145 187 138 239 145 b 459 -48 382 145 459 39 b 393 -141 459 -91 438 -131 z m 314 -294 b 40 -86 187 -294 75 -207 b 305 -180 81 -141 164 -180 b 588 -86 464 -180 550 -143 b 314 -294 554 -209 442 -294 z', + }, + noteheadCircledHalf: { + x_min: -18, + x_max: 311, + y_min: -162, + y_max: 167, + ha: 329, + o: 'm 212 240 b -26 3 81 240 -26 134 b 212 -233 -26 -127 81 -233 b 448 3 341 -233 448 -127 b 212 240 448 134 341 240 z m 212 220 b 363 160 271 220 324 197 b 281 180 341 173 312 180 b 0 -52 76 180 6 26 b -6 3 -4 -35 -6 -16 b 212 220 -6 122 92 220 z m 50 -92 b 42 -63 46 -84 42 -73 b 173 63 42 -33 73 7 b 317 120 243 105 288 120 b 369 89 344 120 359 107 b 377 62 374 81 377 72 b 248 -66 377 33 348 -1 b 108 -125 183 -109 138 -125 b 50 -92 78 -125 60 -109 z m 212 -215 b 84 -171 164 -215 120 -199 b 138 -180 101 -179 120 -180 b 422 56 372 -180 420 7 b 429 3 426 40 429 22 b 212 -215 429 -117 333 -215 z', + }, + noteheadCircledBlack: { + x_min: -21, + x_max: 321, + y_min: -171, + y_max: 167, + ha: 338, + o: 'm 216 240 b -30 -3 82 240 -30 131 b 216 -246 -30 -137 82 -246 b 462 -3 351 -246 462 -137 b 216 240 462 131 351 240 z m 216 220 b 372 160 276 220 331 197 b 284 180 348 174 317 180 b 0 -59 127 180 0 65 l 0 -66 b -10 -3 -6 -45 -10 -24 b 216 220 -10 120 92 220 z m 216 -226 b 56 -158 153 -226 96 -200 b 140 -180 79 -171 107 -180 b 425 60 268 -180 425 -60 b 422 88 425 71 425 79 b 442 -3 435 60 442 29 b 216 -226 442 -125 341 -226 z', + }, + noteheadDoubleWholeSquare: { + x_min: 0, + x_max: 416, + y_min: -190, + y_max: 198, + ha: 388, + o: 'm 563 217 b 528 180 563 192 544 180 l 62 180 b 36 215 52 180 36 192 l 36 268 b 17 285 36 278 27 285 b 0 268 7 285 0 278 l 0 -255 b 17 -274 0 -264 7 -274 b 36 -255 27 -274 36 -264 l 36 -213 b 66 -180 36 -197 53 -180 l 528 -180 b 563 -209 549 -180 563 -196 l 563 -255 b 580 -274 563 -264 570 -274 b 599 -255 590 -274 599 -264 l 599 268 b 580 285 599 278 590 285 b 563 268 570 285 563 278 z m 36 23 b 111 71 36 55 58 71 l 487 71 b 563 30 533 71 563 53 l 563 -22 b 487 -68 563 -53 533 -68 l 117 -68 b 36 -22 66 -68 36 -49 z', + }, + noteheadSquareWhite: { + x_min: 0, + x_max: 313, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 451 -180 l 451 180 l 0 180 l 0 -180 z m 40 -138 l 40 140 l 410 140 l 410 -138 z', + }, + noteheadSquareBlack: { + x_min: 0, + x_max: 313, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 451 -180 l 451 180 l 0 180 l 0 -180 z', + }, + noteheadTriangleDownDoubleWhole: { + x_min: 0, + x_max: 483, + y_min: -155, + y_max: 155, + ha: 310, + o: 'm 696 213 b 681 223 696 219 690 223 l 662 223 b 648 213 655 223 648 219 l 648 -213 b 662 -223 648 -217 655 -223 l 681 -223 b 696 -213 690 -223 696 -217 z m 619 213 b 605 223 619 219 613 223 l 588 223 b 573 213 580 223 573 219 l 573 174 b 562 180 570 177 566 180 l 134 180 b 122 174 130 180 125 177 l 122 213 b 108 223 122 219 117 223 l 91 223 b 76 213 84 223 76 219 l 76 -213 b 91 -223 76 -217 84 -223 l 108 -223 b 122 -213 117 -223 122 -217 l 122 154 l 334 -173 b 346 -180 337 -177 341 -180 b 357 -173 351 -180 354 -177 l 573 154 l 573 -213 b 588 -223 573 -217 580 -223 l 605 -223 b 619 -213 613 -223 619 -217 z m 32 -223 b 46 -213 40 -223 46 -217 l 46 213 b 32 223 46 219 40 223 l 14 223 b 0 213 7 223 0 219 l 0 -213 b 14 -223 0 -217 7 -223 z m 428 98 b 346 -107 428 17 377 -53 b 265 96 315 -55 265 17 b 289 137 265 109 275 137 l 406 137 b 428 98 419 137 428 111 z', + }, + noteheadTriangleDownWhole: { + x_min: 0, + x_max: 319, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 14 180 b 0 166 6 180 0 173 b 1 158 0 163 1 160 l 216 -173 b 228 -180 219 -177 225 -180 b 239 -173 233 -180 238 -177 l 458 158 b 459 166 458 160 459 163 b 445 180 459 173 454 180 z m 288 137 b 310 98 301 137 310 111 b 228 -108 310 17 259 -55 b 145 96 197 -56 145 17 b 170 137 145 109 157 137 z', + }, + noteheadTriangleDownHalf: { + x_min: 0, + x_max: 285, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 196 -180 b 209 -173 200 -180 206 -177 l 408 157 b 410 166 409 160 410 163 b 396 180 410 173 403 180 l 14 180 b 0 166 4 180 0 173 b 1 158 0 163 0 161 l 183 -173 b 196 -180 184 -174 190 -180 z m 164 138 l 295 138 l 179 -76 l 114 37 z', + }, + noteheadTriangleDownBlack: { + x_min: 0, + x_max: 292, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 207 -180 l 420 180 l 0 180 z', + }, + noteheadTriangleUpDoubleWhole: { + x_min: 0, + x_max: 483, + y_min: -155, + y_max: 155, + ha: 310, + o: 'm 696 213 b 681 223 696 217 690 223 l 662 223 b 648 213 655 223 648 217 l 648 -213 b 662 -223 648 -219 655 -223 l 681 -223 b 696 -213 690 -223 696 -219 z m 619 213 b 605 223 619 217 613 223 l 588 223 b 573 213 580 223 573 217 l 573 -154 l 357 173 b 346 180 354 177 351 180 b 334 173 341 180 337 177 l 122 -154 l 122 213 b 108 223 122 217 117 223 l 91 223 b 76 213 84 223 76 217 l 76 -213 b 91 -223 76 -219 84 -223 l 108 -223 b 122 -213 117 -223 122 -219 l 122 -174 b 134 -180 125 -177 130 -180 l 562 -180 b 573 -174 566 -180 570 -177 l 573 -213 b 588 -223 573 -219 580 -223 l 605 -223 b 619 -213 613 -223 619 -219 z m 32 223 l 14 223 b 0 213 7 223 0 217 l 0 -213 b 14 -223 0 -219 7 -223 l 32 -223 b 46 -213 40 -223 46 -219 l 46 213 b 32 223 46 217 40 223 z m 428 -98 b 406 -137 428 -111 419 -137 l 289 -137 b 265 -96 275 -137 265 -109 b 346 107 265 -17 315 55 b 428 -98 377 53 428 -17 z', + }, + noteheadTriangleUpWhole: { + x_min: 0, + x_max: 319, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 445 -180 b 459 -166 454 -180 459 -173 b 458 -158 459 -163 458 -160 l 239 173 b 228 180 238 177 233 180 b 216 173 225 180 219 177 l 1 -158 b 0 -166 1 -160 0 -163 b 14 -180 0 -173 6 -180 z m 170 -137 b 145 -96 157 -137 145 -109 b 228 108 145 -17 197 56 b 310 -98 259 55 310 -17 b 288 -137 310 -111 301 -137 z', + }, + noteheadTriangleUpHalf: { + x_min: 0, + x_max: 285, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 215 180 b 202 173 210 180 204 177 l 3 -157 b 0 -166 1 -160 0 -163 b 14 -180 0 -173 7 -180 l 396 -180 b 410 -166 406 -180 410 -173 b 409 -158 410 -163 410 -161 l 228 173 b 215 180 226 174 220 180 z m 246 -138 l 115 -138 l 232 76 l 297 -37 z', + }, + noteheadTriangleUpBlack: { + x_min: 0, + x_max: 293, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 422 -180 l 207 180 l 0 -180 z', + }, + noteheadSlashedDoubleWhole1: { + x_min: 0, + x_max: 596, + y_min: -179, + y_max: 168, + ha: 347, + o: 'm 618 135 l 697 206 b 704 222 703 210 704 216 b 698 236 704 226 703 232 b 683 242 694 239 688 242 b 670 238 677 242 674 240 l 575 153 b 435 180 531 168 481 180 b 128 0 246 180 128 98 b 236 -148 128 -58 160 -114 l 153 -222 b 145 -238 148 -226 145 -232 b 151 -252 145 -242 148 -248 b 167 -258 156 -256 161 -258 b 181 -253 171 -258 177 -256 l 282 -164 b 420 -180 320 -173 366 -180 b 729 0 654 -180 729 -98 b 618 135 729 55 681 104 z m 114 223 l 95 223 b 82 212 88 223 82 217 l 82 -215 b 95 -223 82 -219 88 -223 l 114 -223 b 127 -215 121 -223 127 -219 l 127 212 b 114 223 127 217 121 223 z m 32 223 l 13 223 b 0 212 6 223 0 217 l 0 -215 b 13 -223 0 -219 6 -223 l 32 -223 b 45 -215 39 -223 45 -219 l 45 212 b 32 223 45 217 39 223 z m 844 223 l 825 223 b 811 212 819 223 811 217 l 811 -215 b 825 -223 811 -219 819 -223 l 844 -223 b 858 -215 851 -223 858 -219 l 858 212 b 844 223 858 217 851 223 z m 763 223 l 743 223 b 730 212 736 223 730 217 l 730 -215 b 743 -223 730 -219 736 -223 l 763 -223 b 776 -215 769 -223 776 -219 l 776 212 b 763 223 776 217 769 223 z m 282 56 b 285 89 282 68 284 79 b 399 144 301 137 354 144 b 510 95 441 144 480 124 l 327 -68 b 282 56 301 -35 282 13 z m 572 -72 b 508 -141 564 -108 544 -132 b 467 -147 495 -145 481 -147 b 360 -104 428 -147 389 -128 l 356 -98 l 537 63 b 575 -46 560 30 575 -9 b 572 -72 575 -55 573 -65 z', + }, + noteheadSlashedWhole1: { + x_min: -22, + x_max: 433, + y_min: -157, + y_max: 148, + ha: 305, + o: 'm 484 140 b 308 180 431 166 367 180 b 0 1 118 180 0 99 b 73 -128 0 -48 22 -95 l -22 -190 b -32 -206 -27 -194 -32 -200 b -27 -217 -32 -210 -30 -215 b -12 -226 -23 -223 -17 -226 b 0 -223 -7 -226 -4 -225 l 112 -150 b 294 -180 157 -168 217 -180 b 602 1 526 -180 602 -98 b 523 118 602 48 570 86 l 613 177 b 624 193 619 181 624 187 b 619 204 624 197 622 200 b 603 213 615 209 609 213 b 592 209 599 213 596 212 z m 190 -52 b 154 56 170 -20 154 19 b 160 91 154 68 156 79 b 271 147 174 138 226 147 b 396 82 321 147 364 121 z m 419 50 b 446 -48 436 19 446 -14 b 337 -147 446 -120 402 -147 b 301 -141 327 -147 314 -144 b 235 -104 276 -134 253 -120 b 215 -84 226 -98 220 -91 z', + }, + noteheadSlashedHalf1: { + x_min: -67, + x_max: 386, + y_min: -142, + y_max: 160, + ha: 302, + o: 'm 552 222 b 536 230 549 228 543 230 b 524 228 533 230 528 230 l 389 140 b 281 180 364 164 327 180 b 0 -60 65 180 0 13 b 7 -105 0 -78 3 -92 l -88 -167 b -96 -184 -94 -171 -96 -177 b -94 -194 -96 -187 -95 -192 b -76 -204 -89 -202 -84 -204 b -66 -202 -73 -204 -69 -203 l 29 -140 b 137 -180 55 -167 92 -180 b 420 59 374 -180 420 13 b 412 107 420 76 419 92 l 546 194 b 556 210 552 197 556 204 b 552 222 556 213 554 217 z m 315 120 b 347 112 328 120 338 117 l 46 -82 b 42 -63 43 -76 42 -69 b 315 120 42 6 248 120 z m 108 -124 b 69 -114 91 -124 79 -120 l 372 81 b 376 63 374 75 376 69 b 108 -124 376 0 174 -124 z', + }, + noteheadSlashedBlack1: { + x_min: -80, + x_max: 375, + y_min: -165, + y_max: 167, + ha: 332, + o: 'm 518 240 b 507 236 514 240 510 239 l 384 148 b 284 180 359 168 324 180 b 0 -62 127 180 0 63 b 13 -115 0 -82 4 -99 l -107 -202 b -115 -217 -111 -204 -115 -212 b -111 -229 -115 -222 -114 -225 b -95 -238 -108 -235 -101 -238 b -84 -235 -91 -238 -86 -236 l 39 -148 b 140 -180 63 -170 99 -180 b 425 59 268 -180 425 -62 b 410 117 425 81 420 101 l 530 203 b 540 219 536 207 540 213 b 518 240 540 229 528 240 z', + }, + noteheadSlashedDoubleWhole2: { + x_min: 0, + x_max: 596, + y_min: -178, + y_max: 169, + ha: 347, + o: 'm 729 0 b 435 180 729 102 569 180 b 278 156 374 180 321 170 l 184 239 b 170 243 181 242 176 243 b 154 238 166 243 158 240 b 150 223 151 233 150 228 b 156 207 150 217 153 212 l 233 138 b 128 0 167 107 128 56 b 420 -180 128 -94 210 -180 b 575 -164 482 -180 533 -174 l 672 -252 b 687 -256 677 -255 681 -256 b 703 -251 691 -256 698 -255 b 707 -236 706 -246 707 -240 b 701 -220 707 -230 706 -225 l 619 -150 b 729 0 700 -117 729 -62 z m 114 223 l 95 223 b 82 213 88 223 82 217 l 82 -213 b 95 -223 82 -219 88 -223 l 114 -223 b 127 -213 121 -223 127 -219 l 127 213 b 114 223 127 217 121 223 z m 32 223 l 13 223 b 0 213 6 223 0 217 l 0 -213 b 13 -223 0 -219 6 -223 l 32 -223 b 45 -213 39 -223 45 -219 l 45 213 b 32 223 45 217 39 223 z m 844 223 l 825 223 b 811 213 819 223 811 217 l 811 -213 b 825 -223 811 -219 819 -223 l 844 -223 b 858 -213 851 -223 858 -219 l 858 213 b 844 223 858 217 851 223 z m 763 223 l 743 223 b 730 213 736 223 730 217 l 730 -213 b 743 -223 730 -219 736 -223 l 763 -223 b 776 -213 769 -223 776 -219 l 776 213 b 763 223 776 217 769 223 z m 312 124 b 399 144 336 141 369 144 b 575 -46 495 144 575 40 b 563 -98 575 -65 570 -81 z m 508 -141 b 467 -147 495 -145 481 -147 b 360 -104 428 -147 389 -128 b 330 -72 350 -95 340 -82 b 282 56 304 -37 282 10 b 285 89 282 68 284 79 b 536 -130 287 89 304 75 z', + }, + noteheadSlashedWhole2: { + x_min: -18, + x_max: 436, + y_min: -154, + y_max: 151, + ha: 305, + o: 'm 531 -128 b 602 1 582 -96 602 -49 b 308 180 602 104 441 180 b 114 144 230 180 164 166 l 4 215 b -6 217 1 217 -3 217 b -22 209 -13 217 -19 215 b -26 197 -24 204 -26 200 b -16 181 -26 192 -22 184 l 75 121 b 0 1 27 91 0 49 b 294 -180 0 -94 82 -180 b 491 -150 379 -180 444 -168 l 598 -219 b 608 -222 600 -222 605 -222 b 624 -213 615 -222 621 -219 b 628 -202 626 -209 628 -206 b 618 -186 628 -196 624 -189 z m 168 108 b 271 147 190 141 233 147 b 446 -48 369 147 446 40 b 445 -72 446 -56 446 -63 z m 154 69 l 429 -109 b 382 -141 419 -125 402 -135 b 337 -147 367 -144 351 -147 b 301 -141 327 -147 314 -144 b 235 -104 276 -134 253 -120 b 203 -72 223 -94 213 -82 b 154 58 177 -39 154 12 z', + }, + noteheadSlashedHalf2: { + x_min: -73, + x_max: 380, + y_min: -134, + y_max: 168, + ha: 302, + o: 'm 537 -156 l 383 -58 b 422 60 413 -9 422 39 b 281 180 422 134 364 180 b 101 127 203 180 144 157 l -75 239 b -85 242 -78 242 -82 242 b -102 233 -92 242 -98 239 b -105 222 -104 229 -105 225 b -95 206 -105 216 -102 209 l 69 99 b 0 -59 19 46 0 -20 b 138 -180 0 -135 60 -180 b 359 -88 248 -180 317 -138 l 516 -190 b 527 -193 520 -192 524 -193 b 543 -183 534 -193 540 -190 b 547 -173 546 -180 547 -176 b 537 -156 547 -166 543 -160 z m 367 92 b 377 63 374 82 377 73 b 318 -14 377 43 361 20 l 184 72 b 317 121 248 108 289 121 b 367 92 344 121 357 109 z m 248 -66 b 108 -124 181 -108 138 -124 b 50 -92 78 -124 60 -109 b 42 -63 46 -84 42 -73 b 145 49 42 -35 68 0 l 285 -40 b 248 -66 274 -49 261 -56 z', + }, + noteheadSlashedBlack2: { + x_min: -79, + x_max: 376, + y_min: -164, + y_max: 168, + ha: 332, + o: 'm 531 -200 l 363 -78 b 425 59 402 -37 425 10 b 285 180 425 132 367 180 b 92 114 210 180 144 154 l -81 238 b -94 242 -85 240 -89 242 b -111 232 -99 242 -107 238 b -114 220 -112 229 -114 225 b -105 204 -114 215 -111 207 l 62 85 b 0 -62 23 43 0 -9 b 140 -180 0 -137 62 -180 b 331 -108 204 -180 275 -153 l 507 -233 b 520 -236 511 -236 517 -236 b 537 -228 527 -236 533 -233 b 541 -216 540 -225 541 -220 b 531 -200 541 -210 537 -203 z', + }, + noteheadDiamondDoubleWhole: { + x_min: 0, + x_max: 432, + y_min: -155, + y_max: 155, + ha: 310, + o: 'm 592 223 b 580 215 585 223 580 219 l 580 -215 b 592 -223 580 -219 585 -223 l 608 -223 b 622 -215 615 -223 622 -219 l 622 215 b 608 223 622 219 615 223 z m 517 223 b 504 215 510 223 504 219 l 504 -215 b 517 -223 504 -219 510 -223 l 533 -223 b 544 -215 540 -223 544 -219 l 544 215 b 533 223 544 219 540 223 z m 246 179 b 240 180 243 179 242 180 b 232 176 236 180 233 179 l 118 22 b 117 17 117 20 117 19 l 117 215 b 104 223 117 219 111 223 l 88 223 b 75 215 81 223 75 219 l 75 -215 b 88 -223 75 -219 81 -223 l 104 -223 b 117 -215 111 -223 117 -219 l 117 14 l 118 14 b 122 7 118 12 120 10 l 374 -179 b 382 -180 376 -180 379 -180 b 390 -177 384 -180 387 -180 l 503 -23 l 503 -17 b 500 -9 503 -13 503 -10 z m 12 223 b 0 215 4 223 0 219 l 0 -215 b 12 -223 0 -219 4 -223 l 29 -223 b 40 -215 36 -223 40 -219 l 40 215 b 29 223 40 219 36 223 z m 183 39 b 179 46 181 39 179 43 b 229 112 226 112 228 112 b 236 109 229 112 233 111 l 436 -39 b 439 -46 438 -39 439 -42 b 390 -112 393 -111 392 -112 b 383 -109 389 -112 386 -111 z', + }, + noteheadDiamondWhole: { + x_min: 0, + x_max: 270, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 386 -23 b 389 -16 387 -20 389 -19 b 383 -7 389 -13 386 -9 l 130 179 b 122 180 128 180 125 180 b 115 177 120 180 117 180 l 3 23 b 0 17 1 20 0 19 b 4 7 0 16 3 10 l 258 -179 b 264 -180 261 -179 262 -180 b 272 -176 268 -180 271 -179 z m 66 40 b 62 48 65 42 62 45 l 109 111 b 112 112 109 112 111 112 b 118 111 115 112 117 111 l 320 -37 b 324 -46 323 -39 324 -42 b 275 -111 278 -111 276 -111 b 268 -108 272 -111 271 -109 z', + }, + noteheadDiamondHalf: { + x_min: 0, + x_max: 251, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 359 -7 b 361 0 360 -6 361 -3 b 359 7 361 3 360 4 l 189 177 b 180 180 186 179 183 180 b 174 177 179 180 176 179 l 4 7 b 0 0 1 4 0 3 b 4 -7 0 -3 1 -6 l 174 -177 b 180 -180 176 -180 179 -180 b 189 -177 183 -180 186 -180 z m 266 26 b 138 -71 266 -12 176 -71 b 96 -50 121 -71 108 -63 b 88 -24 89 -43 88 -32 b 215 73 88 13 177 73 b 266 26 238 73 266 50 z', + }, + noteheadDiamondBlack: { + x_min: 0, + x_max: 250, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 357 -6 b 360 1 359 -4 360 -1 b 357 9 360 4 359 7 l 189 177 b 180 180 187 179 184 180 b 171 177 177 180 173 179 l 3 9 b 0 1 0 6 0 4 b 4 -7 0 -1 1 -4 l 173 -177 b 180 -180 176 -180 177 -180 b 187 -177 181 -180 184 -180 z', + }, + noteheadParenthesis: { + x_min: -73, + x_max: 368, + y_min: -180, + y_max: 182, + ha: 362, + o: 'm 52 -249 b -30 -144 3 -212 -14 -190 b -52 4 -45 -102 -52 -56 b 52 252 -52 118 -36 179 l 46 262 b -105 3 -49 197 -105 124 b 45 -259 -105 -109 -48 -200 z m 382 -259 b 530 3 474 -202 530 -108 b 379 262 530 122 474 200 l 373 252 b 478 4 462 180 478 118 b 456 -144 478 -56 471 -102 b 373 -249 439 -190 422 -212 z', + }, + noteheadParenthesisRight: { + x_min: -36, + x_max: 73, + y_min: -181, + y_max: 181, + ha: 362, + o: 'm -43 -261 b 105 1 49 -203 105 -109 b -46 261 105 121 49 199 l -52 251 b 53 3 37 179 53 117 b 32 -145 53 -58 46 -104 b -52 -251 14 -192 -3 -213 z', + }, + noteheadParenthesisLeft: { + x_min: 0, + x_max: 109, + y_min: -181, + y_max: 181, + ha: 362, + o: 'm 157 -251 b 75 -145 108 -213 91 -192 b 53 3 60 -104 53 -58 b 157 251 53 117 69 177 l 151 261 b 0 1 56 196 0 122 b 150 -261 0 -111 58 -202 z', + }, + noteheadMoonBlack: { + x_min: 0, + x_max: 315, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 228 -180 b 454 0 343 -180 454 -130 l 454 180 l 0 180 l 0 0 b 228 -180 0 -131 112 -180 z', + }, + noteheadTriangleLeftBlack: { + x_min: 0, + x_max: 339, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 488 -180 l 0 180 l 0 -180 z', + }, + noteheadTriangleRightBlack: { + x_min: 0, + x_max: 339, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 488 180 l 0 -180 l 488 -180 z', + }, + noteheadTriangleRoundDownBlack: { + x_min: 0, + x_max: 278, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 200 -180 l 400 112 l 383 124 b 199 180 327 161 264 180 b 16 124 135 180 73 161 l 0 112 z', + }, + augmentationDot: { + x_min: 0, + x_max: 100, + y_min: -50, + y_max: 50, + ha: 100, + o: 'm 144 0 b 72 72 144 40 112 72 b 0 0 32 72 0 40 b 72 -72 0 -40 32 -72 b 144 0 112 -72 144 -40 z', + }, + tremolo1: { + x_min: -150, + x_max: 150, + y_min: -93, + y_max: 94, + ha: 187, + o: 'm 216 -45 l 216 135 l -216 46 l -216 -134 z', + }, + flag8thUp: { + x_min: 0, + x_max: 264, + y_min: -810.1921176545985, + y_max: 9, + ha: 819.1921176545985, + o: 'm 343 -1138 b 380 -888 343 -1138 380 -1001 b 215 -395 380 -708 305 -539 b 58 -19 141 -281 81 -157 b 27 13 53 4 42 13 b 0 -9 12 13 0 9 l 0 -353 b 284 -688 95 -370 232 -566 b 318 -904 305 -737 318 -819 b 284 -1102 318 -969 308 -1037 b 279 -1123 281 -1110 279 -1117 b 302 -1165 279 -1146 294 -1159 b 343 -1138 311 -1171 336 -1162 z', + }, + flag8thDown: { + x_min: 0, + x_max: 306, + y_min: -14, + y_max: 808, + ha: 822, + o: 'm 346 1094 b 376 897 366 1034 376 962 b 318 642 376 812 340 691 b 0 340 265 521 193 405 l 0 1 b 23 -20 0 -13 12 -20 b 58 12 36 -20 55 -12 b 262 387 82 148 189 274 b 441 881 353 530 441 701 b 400 1142 441 994 412 1096 b 377 1164 396 1158 387 1164 b 346 1094 356 1164 331 1136 z', + }, + flag16thUp: { + x_min: 0, + x_max: 279, + y_min: -813, + y_max: 2, + ha: 815, + o: 'm 392 -1146 b 402 -988 397 -1139 402 -1057 l 402 -956 b 360 -783 402 -896 386 -837 b 359 -770 360 -779 359 -776 b 360 -760 359 -768 359 -765 b 396 -577 364 -752 396 -665 b 392 -526 396 -559 395 -543 b 236 -275 377 -428 340 -387 b 53 -16 158 -192 78 -168 b 24 3 50 0 33 3 b 0 -12 16 3 0 -1 l 0 -570 l 7 -570 b 298 -778 96 -573 199 -576 b 344 -992 331 -847 344 -917 b 333 -1120 344 -1034 340 -1077 b 331 -1133 331 -1126 331 -1129 b 363 -1171 331 -1152 343 -1171 b 392 -1146 373 -1171 383 -1165 z m 301 -661 b 223 -562 278 -625 253 -596 b 59 -331 156 -484 89 -449 b 58 -327 58 -330 58 -328 b 78 -312 58 -321 66 -312 l 89 -312 b 302 -464 177 -312 255 -393 b 341 -592 328 -501 341 -546 b 340 -621 341 -602 341 -611 b 330 -658 337 -632 337 -647 b 311 -667 328 -662 318 -667 b 301 -661 307 -667 304 -665 z', + }, + flag16thDown: { + x_min: 0, + x_max: 290.8951581511223, + y_min: -9, + y_max: 812.0064, + ha: 821.0064, + o: 'm 346 1132 b 312 768 367 1011 367 880 b 7 559 213 566 96 562 l 0 559 l 0 1 b 24 -13 0 -6 10 -13 b 53 6 35 -13 50 -10 b 406 516 88 228 372 289 b 410 567 409 531 410 549 b 374 750 410 655 379 742 b 373 760 373 753 373 756 b 374 773 373 766 374 769 b 405 1138 426 881 428 1022 b 370 1169 397 1171 387 1169 b 346 1132 353 1168 341 1156 z m 325 657 b 344 647 333 657 343 652 b 354 611 351 636 351 622 b 356 582 356 600 356 590 b 317 454 356 534 343 491 b 89 302 269 383 177 302 l 78 302 b 58 317 66 302 58 310 b 59 321 58 318 58 320 b 238 552 89 439 170 472 b 315 651 268 585 292 613 b 325 657 318 655 321 657 z', + }, + flag32ndUp: { + x_min: 0, + x_max: 261, + y_min: -812, + y_max: 149, + ha: 961, + o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 366 -289 369 -315 369 -302 b 220 -58 350 -202 317 -163 b 46 187 148 20 71 43 b 20 215 45 200 35 215 b 0 197 12 215 0 207 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 56 -390 147 -527 88 -495 b 73 -367 53 -380 60 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z', + }, + flag32ndDown: { + x_min: 0, + x_max: 273, + y_min: -172, + y_max: 812, + ha: 984, + o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -229 b 20 -248 0 -242 9 -248 b 48 -219 35 -248 46 -232 b 229 36 72 -69 154 -46 b 380 278 330 145 364 186 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z', + }, + flag64thUp: { + x_min: 0, + x_max: 261, + y_min: -812, + y_max: 347, + ha: 1159, + o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 220 228 350 84 317 122 b 46 472 148 305 71 328 b 20 500 45 485 32 500 b 0 482 10 500 0 492 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 24 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 58 187 148 20 82 43 b 56 193 58 189 58 192 b 300 24 138 193 220 157 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 b 73 -367 52 -376 63 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z', + }, + flag64thDown: { + x_min: 0, + x_max: 273, + y_min: -376, + y_max: 812, + ha: 1188, + o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -523 b 20 -541 0 -534 9 -541 b 48 -513 35 -541 46 -526 b 229 -258 72 -363 154 -340 b 380 -16 330 -148 364 -108 b 384 27 383 -1 384 13 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z m 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 b 229 36 75 -86 145 -55 b 311 128 264 73 289 102 z', + }, + flag128thUp: { + x_min: 0, + x_max: 261, + y_min: -812, + y_max: 533, + ha: 1345, + o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 341 75 360 26 353 50 b 369 222 354 111 369 167 b 366 264 369 236 369 251 b 220 495 350 351 317 390 b 46 740 148 573 71 596 b 22 768 45 753 35 768 b 0 750 10 768 0 760 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 292 b 321 223 315 264 321 242 b 317 193 321 212 318 203 b 301 135 314 180 308 158 b 220 228 281 161 255 190 b 55 461 151 304 79 327 b 300 292 134 461 220 426 z m 300 24 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 56 187 148 20 81 43 b 55 193 56 189 56 192 b 300 24 137 193 220 157 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 b 73 -367 53 -376 62 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z', + }, + flag128thDown: { + x_min: 0, + x_max: 273, + y_min: -580, + y_max: 812, + ha: 1392, + o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -816 b 20 -835 0 -828 7 -835 b 48 -806 33 -835 46 -819 b 229 -552 72 -657 154 -634 b 380 -310 330 -442 364 -402 b 384 -266 383 -295 384 -281 b 351 -105 384 -206 366 -143 b 384 27 372 -66 384 -16 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z m 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 b 229 36 75 -86 145 -55 b 311 128 264 73 289 102 z m 330 -238 b 334 -268 331 -248 334 -256 b 311 -340 334 -287 328 -310 b 56 -516 229 -478 137 -516 b 229 -258 75 -380 145 -348 b 311 -166 264 -220 289 -192 z', + }, + accidentalFlat: { + x_min: 0, + x_max: 226, + y_min: -175, + y_max: 439, + ha: 614, + o: 'm 17 -245 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 82 -225 117 -186 b 325 82 281 -72 325 16 b 196 220 325 164 262 216 b 117 196 171 220 137 209 b 85 176 108 189 92 176 b 78 177 82 176 81 176 b 62 202 68 181 62 192 b 72 608 63 233 72 579 b 45 632 72 624 59 632 b 0 592 24 632 1 618 b 17 -245 0 592 6 -230 z m 68 -117 b 63 27 68 -117 63 -30 b 66 73 63 50 65 68 b 167 144 76 102 134 144 b 226 60 209 144 226 96 b 98 -134 226 -17 160 -95 b 84 -138 92 -137 88 -138 b 68 -117 71 -138 68 -124 z', + }, + accidentalNatural: { + x_min: 0, + x_max: 168, + y_min: -335, + y_max: 341, + ha: 676, + o: 'm 203 261 b 197 259 200 261 199 259 b 68 226 197 259 105 226 b 53 233 59 226 53 228 l 53 474 b 36 491 53 484 45 491 l 17 491 b 0 474 7 491 0 484 l 0 -268 b 13 -281 0 -276 4 -281 l 16 -279 b 22 -278 17 -279 20 -279 b 164 -235 42 -269 122 -235 b 189 -251 179 -235 189 -239 l 189 -465 b 206 -482 189 -475 196 -482 l 225 -482 b 242 -465 233 -482 242 -475 l 242 258 b 230 269 242 265 236 269 b 225 268 229 269 226 269 z m 53 56 b 176 114 53 76 141 114 b 189 107 184 114 189 112 l 189 -42 b 71 -101 189 -68 107 -101 b 53 -92 60 -101 53 -98 z', + }, + accidentalSharp: { + x_min: 0, + x_max: 249, + y_min: -348, + y_max: 350, + ha: 698, + o: 'm 341 170 b 359 194 351 174 359 186 l 359 297 b 348 308 359 304 354 308 b 341 307 346 308 344 308 b 305 294 341 307 312 295 b 285 312 295 294 285 301 l 285 488 b 265 504 285 497 276 504 b 242 488 251 504 242 497 l 242 301 b 223 259 240 287 236 268 b 132 223 206 249 157 229 b 115 252 120 223 115 240 l 115 425 b 95 441 115 433 105 441 b 72 425 81 441 72 433 l 72 230 b 55 192 72 210 63 196 b 17 176 46 187 17 176 b 0 153 7 173 0 161 l 0 50 b 13 37 0 42 4 37 l 16 39 b 50 53 17 39 39 48 l 52 55 b 72 29 63 55 72 40 l 72 -114 b 56 -147 72 -130 65 -143 b 17 -163 48 -150 17 -163 b 0 -186 7 -166 0 -177 l 0 -288 b 13 -301 0 -297 4 -301 l 16 -300 b 50 -287 17 -300 37 -291 b 55 -285 52 -285 53 -285 b 72 -308 65 -285 72 -301 l 72 -485 b 91 -501 72 -494 81 -501 b 115 -485 105 -501 115 -494 l 115 -285 b 130 -253 115 -266 122 -256 l 217 -217 b 219 -217 217 -217 219 -217 l 222 -216 b 242 -242 235 -216 242 -233 l 242 -422 b 261 -438 242 -431 251 -438 b 285 -422 276 -438 285 -431 l 285 -217 b 301 -184 285 -206 291 -189 b 341 -168 311 -180 341 -168 b 359 -144 351 -164 359 -153 l 359 -42 b 348 -30 359 -35 354 -30 b 341 -32 346 -30 344 -30 l 304 -46 b 285 -20 295 -46 285 -37 l 285 114 b 304 156 285 124 292 151 z m 242 -65 b 132 -122 233 -94 166 -122 b 115 -115 124 -122 117 -120 b 111 -43 112 -109 111 -78 b 115 63 111 1 112 52 b 220 118 118 88 184 118 b 242 109 230 118 239 115 b 248 27 245 102 248 66 b 242 -65 248 -12 245 -52 z', + }, + accidentalDoubleSharp: { + x_min: 0, + x_max: 247, + y_min: -125, + y_max: 127, + ha: 252, + o: 'm 274 -46 b 206 1 258 -37 206 -9 b 274 50 206 22 253 43 b 278 50 275 50 276 50 l 287 49 b 346 63 304 49 331 52 b 356 115 353 71 356 92 b 292 183 356 174 351 183 b 233 173 266 183 240 180 b 226 117 228 168 226 143 b 179 49 219 101 196 49 b 130 117 158 49 135 96 b 118 173 130 141 125 167 b 66 183 112 180 89 183 b 7 173 42 183 16 180 b 0 120 3 170 0 145 b 7 63 0 94 3 68 b 68 49 17 55 43 49 b 82 50 73 49 78 50 b 150 3 98 42 150 13 b 84 -46 150 -16 104 -39 l 69 -46 b 7 -56 43 -46 16 -49 b 0 -111 3 -60 0 -85 b 7 -166 0 -137 3 -163 b 65 -180 17 -174 40 -180 b 118 -166 86 -180 109 -176 b 130 -111 127 -158 130 -134 b 132 -105 130 -109 131 -107 b 177 -45 141 -85 158 -45 b 226 -111 196 -45 220 -91 b 233 -166 226 -137 228 -161 b 291 -180 243 -174 266 -180 b 356 -114 346 -180 356 -166 b 346 -56 356 -89 351 -63 b 288 -46 338 -49 312 -46 z', + }, + accidentalDoubleFlat: { + x_min: 0, + x_max: 411, + y_min: -175, + y_max: 437, + ha: 612, + o: 'm 452 217 b 384 194 426 217 408 207 b 350 176 374 189 363 176 b 343 177 347 176 344 176 b 328 202 333 180 328 190 b 337 606 328 232 337 579 b 310 629 337 622 324 629 b 265 592 291 629 268 616 b 269 194 265 592 266 395 b 196 217 248 209 223 217 l 187 217 b 120 194 160 217 143 207 b 85 176 108 189 98 176 b 78 177 82 176 81 176 b 62 202 68 180 62 190 b 72 606 62 232 72 579 b 45 629 72 622 59 629 b 0 592 24 629 1 616 b 17 -245 0 592 7 -232 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 84 -226 120 -186 b 274 -50 206 -124 246 -85 b 284 -245 276 -158 279 -240 b 295 -252 288 -251 292 -252 b 304 -249 300 -252 304 -249 b 416 -163 348 -226 383 -186 b 592 82 546 -72 592 16 b 461 217 592 163 528 216 z m 96 -134 b 84 -138 92 -137 86 -138 b 68 -115 72 -138 68 -124 b 63 26 68 -115 63 -30 b 66 72 63 49 65 66 b 168 144 75 101 134 144 b 226 59 212 144 226 95 b 96 -134 226 -22 161 -94 z m 361 -134 b 348 -138 356 -137 351 -138 b 333 -115 337 -138 333 -124 b 328 39 333 -115 328 -16 b 330 72 328 55 328 68 b 433 144 338 101 399 144 b 468 130 448 144 459 140 b 490 59 481 112 490 88 b 361 -134 490 -22 426 -94 z', + }, + accidentalParensLeft: { + x_min: 0, + x_max: 141, + y_min: -248, + y_max: 247, + ha: 495, + o: 'm 203 331 l 203 351 b 202 356 203 354 203 356 b 0 0 60 281 0 140 b 199 -357 0 -144 60 -269 b 203 -354 200 -357 203 -356 l 203 -333 b 200 -327 203 -330 202 -328 b 86 0 118 -253 86 -160 b 200 324 86 158 120 251 b 203 331 202 325 203 327 z', + }, + accidentalParensRight: { + x_min: 0, + x_max: 141, + y_min: -248, + y_max: 247, + ha: 495, + o: 'm 0 331 b 3 324 0 327 1 325 b 117 0 84 251 117 158 b 3 -327 117 -160 85 -253 b 0 -333 1 -328 0 -330 l 0 -354 b 4 -357 0 -356 3 -357 b 203 0 143 -269 203 -144 b 1 356 203 140 143 281 b 0 351 0 356 0 354 z', + }, + accidentalQuarterToneFlatStein: { + x_min: 1, + x_max: 227, + y_min: -175, + y_max: 439, + ha: 614, + o: 'm 310 -245 b 327 592 321 -230 327 592 b 282 632 325 618 302 632 b 255 608 268 632 255 624 b 265 202 255 579 264 233 b 249 177 265 192 259 181 b 242 176 246 176 245 176 b 210 196 235 176 219 189 b 131 220 190 209 156 220 b 1 85 65 216 1 164 b 174 -161 1 16 46 -72 b 288 -249 210 -186 245 -225 b 297 -252 288 -249 292 -252 b 310 -245 301 -252 305 -251 z m 259 -117 b 243 -138 259 -124 256 -138 b 229 -134 239 -138 235 -137 b 101 60 167 -95 101 -17 b 160 144 101 96 118 144 b 261 73 193 144 251 102 b 264 27 262 68 264 50 b 259 -117 264 -30 259 -117 z', + }, + accidentalThreeQuarterTonesFlatZimmermann: { + x_min: 1, + x_max: 466, + y_min: -175, + y_max: 439, + ha: 614, + o: 'm 363 -245 b 376 -252 367 -251 372 -252 b 384 -249 380 -252 384 -249 b 497 -161 428 -226 464 -186 b 671 84 625 -72 671 16 b 541 220 671 164 606 217 b 513 217 531 220 523 219 b 464 196 495 212 480 206 b 431 176 452 189 442 176 b 423 177 428 176 426 176 b 408 202 413 180 408 190 l 419 608 b 392 632 419 625 406 632 b 346 592 372 632 347 618 b 363 -245 346 592 351 -230 z m 289 -249 b 297 -252 289 -249 292 -252 b 310 -245 300 -252 305 -251 b 328 592 321 -230 328 592 b 282 631 327 618 302 631 b 255 608 268 631 255 624 l 266 202 b 251 177 266 190 261 180 b 243 176 248 176 246 176 b 210 196 232 176 222 189 b 164 216 196 204 180 210 l 163 217 b 132 220 151 219 143 220 b 1 84 65 217 1 163 b 177 -163 1 16 48 -72 b 289 -249 210 -186 245 -226 z m 262 72 b 265 26 264 66 265 49 b 261 -115 265 -30 261 -115 b 245 -138 261 -124 258 -138 b 230 -134 240 -138 236 -137 b 102 60 166 -92 102 -20 b 124 128 102 88 111 112 b 161 144 134 138 147 144 b 199 134 173 144 184 141 b 262 72 219 122 256 92 z m 413 -115 b 409 26 413 -115 409 -30 b 412 72 409 49 410 66 b 514 144 420 102 480 144 b 570 60 557 144 570 96 b 442 -134 570 -23 508 -91 b 429 -138 436 -137 433 -138 b 413 -115 418 -138 413 -124 z', + }, + accidentalQuarterToneSharpStein: { + x_min: 0, + x_max: 179, + y_min: -353, + y_max: 307, + ha: 660, + o: 'm 258 240 b 246 252 258 248 252 252 b 240 251 245 252 242 252 b 168 225 240 251 171 225 b 150 253 156 225 150 240 l 150 426 b 130 442 150 435 141 442 b 105 418 108 442 105 429 l 105 230 b 91 193 105 219 101 202 b 17 161 65 183 42 171 b 0 138 9 158 0 147 l 0 36 b 13 23 0 27 4 23 l 16 24 b 86 53 17 24 73 49 l 88 55 b 107 30 98 55 107 42 l 107 -114 b 92 -145 107 -130 101 -143 l 17 -177 b 0 -200 9 -180 0 -192 l 0 -302 b 13 -315 0 -311 4 -315 l 16 -314 b 85 -285 17 -314 72 -291 b 105 -312 92 -282 105 -301 l 105 -492 b 125 -508 105 -501 114 -508 b 150 -484 147 -508 150 -498 l 150 -285 b 151 -274 150 -281 150 -278 b 164 -253 153 -265 158 -256 b 240 -225 176 -251 240 -225 b 258 -202 249 -222 258 -210 l 258 -99 b 245 -86 258 -91 253 -86 l 242 -88 b 240 -88 242 -88 240 -88 l 240 -86 b 168 -115 240 -86 174 -114 b 148 -91 158 -115 148 -107 l 148 43 b 167 85 148 55 156 81 b 240 114 180 91 240 114 b 258 138 249 118 258 128 z', + }, + accidentalThreeQuarterTonesSharpStein: { + x_min: 3, + x_max: 317, + y_min: -347, + y_max: 369, + ha: 716, + o: 'm 456 324 b 448 336 456 330 454 336 b 393 317 445 336 400 320 b 389 315 392 315 390 315 b 383 325 386 315 383 318 l 383 508 b 360 531 383 528 379 531 b 337 508 341 531 337 527 l 337 318 b 325 291 337 300 334 294 b 268 268 320 288 287 276 b 253 281 256 268 253 274 l 253 464 b 230 487 253 484 249 487 b 207 464 212 487 207 482 l 207 264 b 194 240 207 253 204 245 l 132 217 b 131 217 132 217 132 217 l 130 216 b 118 229 122 216 118 220 l 118 420 b 95 444 118 439 114 444 b 72 420 76 444 72 439 l 72 212 b 60 190 72 197 68 193 l 16 173 b 4 161 9 170 4 167 l 4 50 b 13 39 4 45 9 39 b 58 55 16 39 46 49 b 63 56 60 56 62 56 b 72 42 71 56 72 50 l 72 -125 b 58 -150 72 -137 65 -147 l 16 -166 b 4 -177 9 -168 4 -171 l 4 -289 b 14 -301 4 -295 9 -301 b 53 -287 16 -301 40 -291 b 62 -285 56 -285 59 -285 b 72 -298 69 -285 72 -289 l 72 -477 b 95 -500 72 -495 76 -500 b 118 -477 114 -500 118 -495 l 118 -278 b 127 -259 118 -269 121 -261 l 196 -232 b 207 -243 204 -232 207 -235 l 207 -432 b 230 -455 207 -452 212 -455 b 253 -432 249 -455 253 -451 l 253 -228 b 268 -204 253 -216 259 -207 l 320 -186 b 328 -183 323 -184 325 -183 b 337 -194 334 -183 337 -187 l 337 -387 b 360 -410 337 -408 341 -410 b 383 -387 379 -410 383 -406 l 383 -174 b 395 -157 383 -166 390 -158 l 445 -138 b 456 -127 452 -135 456 -132 l 456 -14 b 448 -3 456 -10 454 -3 b 397 -22 445 -3 408 -17 l 396 -23 b 383 -6 387 -23 383 -16 l 383 163 b 392 181 383 173 384 179 b 445 202 397 183 445 202 b 456 213 452 203 456 207 z m 337 -45 b 266 -78 333 -56 287 -78 b 258 -75 262 -78 259 -76 b 253 19 255 -71 253 -27 b 258 130 253 69 255 122 b 333 163 264 141 315 163 b 337 161 334 163 337 161 b 341 78 340 157 341 120 b 337 -45 341 24 340 -37 z m 118 -127 b 114 -48 114 -121 114 -86 b 118 78 114 6 115 68 b 200 114 122 91 180 114 b 207 111 204 114 206 112 b 212 22 210 107 212 66 b 207 -94 212 -29 210 -85 b 127 -130 203 -108 148 -130 b 118 -127 122 -130 120 -128 z', + }, + accidentalBuyukMucennebFlat: { + x_min: 1, + x_max: 287, + y_min: -174, + y_max: 438, + ha: 612, + o: 'm 379 452 b 370 464 379 458 377 464 b 164 389 366 464 170 392 b 156 396 163 389 156 393 b 157 436 157 409 157 428 b 167 452 157 445 161 449 b 366 526 173 455 366 526 b 379 540 374 528 379 534 l 379 611 b 370 622 379 616 377 622 b 170 550 366 622 174 552 b 160 557 163 550 160 554 b 161 608 160 585 161 602 b 134 631 161 624 148 631 b 89 590 114 631 91 616 l 89 528 b 81 517 89 526 88 518 b 16 491 76 514 16 491 b 1 480 6 490 1 485 l 1 406 b 13 395 1 400 4 395 l 14 396 b 79 419 16 396 72 415 b 89 412 86 419 89 415 b 91 376 89 399 89 386 b 82 359 91 364 89 361 b 16 331 76 356 16 331 b 1 321 6 331 1 328 l 1 248 b 13 236 1 242 4 236 b 79 262 16 236 71 258 b 92 251 89 262 92 256 b 107 -242 95 23 101 -236 b 120 -251 111 -249 115 -251 b 128 -248 124 -251 128 -248 b 240 -160 171 -225 207 -184 b 413 84 367 -71 413 16 b 284 220 413 166 350 216 b 207 196 259 220 229 209 b 170 176 196 190 184 176 l 168 177 b 151 203 157 181 151 192 b 153 269 151 210 151 236 b 163 292 153 275 153 289 b 366 367 173 297 366 367 b 379 383 374 370 379 376 z m 186 -132 b 173 -137 180 -135 176 -137 b 157 -114 161 -137 157 -122 b 153 35 157 -114 153 -22 b 154 73 153 53 153 68 b 219 135 160 92 197 124 b 255 144 232 141 243 144 b 292 130 269 144 282 140 b 314 62 305 114 314 91 b 186 -132 314 -17 251 -94 z', + }, + accidentalBakiyeFlat: { + x_min: -1, + x_max: 286, + y_min: -175, + y_max: 439, + ha: 614, + o: 'm 377 454 b 369 467 377 458 376 467 b 363 465 367 467 364 467 b 161 390 363 465 167 393 b 153 399 154 390 153 395 b 157 608 154 494 157 593 b 130 632 157 624 144 632 b 86 592 111 632 88 618 b 88 377 86 592 86 501 b 76 356 88 373 88 360 l 12 331 b -1 320 3 330 -1 327 l -1 248 b 9 236 -1 242 1 236 b 81 264 12 236 78 261 b 89 258 86 264 89 261 b 104 -245 92 30 96 -236 b 115 -252 108 -251 112 -252 b 124 -249 120 -252 124 -249 b 239 -161 167 -226 203 -186 b 412 84 367 -72 412 17 b 282 220 412 166 348 216 b 255 216 274 220 264 219 b 203 196 238 212 222 206 b 171 177 193 189 177 177 b 163 179 168 177 166 177 b 147 202 153 181 147 192 b 147 216 147 204 147 209 l 150 262 b 150 276 150 269 150 275 b 158 291 150 287 154 289 b 363 370 163 292 363 370 b 377 384 373 373 377 379 z m 181 -134 b 167 -138 176 -137 171 -138 b 153 -117 156 -138 153 -125 b 148 27 153 -117 148 -30 b 151 73 148 50 150 68 b 255 144 161 105 219 144 b 312 62 298 144 312 99 b 181 -134 312 -19 249 -96 z', + }, + accidentalKomaSharp: { + x_min: 0, + x_max: 229, + y_min: -337, + y_max: 322, + ha: 659, + o: 'm 312 151 b 330 176 323 156 330 166 l 330 278 b 320 289 330 285 327 289 b 312 288 318 289 315 289 b 200 246 312 288 203 248 b 181 275 187 246 181 264 l 181 448 b 163 464 181 456 173 464 b 138 441 140 464 138 452 l 138 253 b 122 215 137 240 132 225 b 17 177 92 203 45 177 b 0 153 7 173 0 163 l 0 50 b 10 39 0 43 4 39 b 17 40 13 39 14 39 l 128 81 b 138 52 138 81 138 63 l 138 -91 b 124 -124 138 -107 132 -120 b 17 -167 115 -127 17 -167 b 0 -192 7 -171 0 -181 l 0 -294 b 10 -305 0 -301 4 -305 b 17 -304 13 -305 14 -305 b 128 -261 17 -304 117 -264 l 130 -259 b 138 -276 137 -259 138 -268 l 138 -469 b 157 -485 138 -478 147 -485 b 181 -462 179 -485 181 -475 l 181 -262 b 183 -252 181 -258 181 -255 b 197 -232 186 -243 190 -235 b 312 -187 207 -228 312 -187 b 330 -163 323 -183 330 -173 l 330 -60 b 320 -49 330 -53 327 -49 b 312 -50 318 -49 315 -49 l 200 -94 b 193 -95 197 -95 194 -95 b 181 -68 183 -95 181 -85 l 181 66 b 200 108 181 92 189 104 z', + }, + accidentalKucukMucennebSharp: { + x_min: -1, + x_max: 339, + y_min: -338, + y_max: 321, + ha: 659, + o: 'm 264 92 b 271 102 264 98 265 99 l 395 150 b 412 174 405 154 412 164 l 412 276 b 402 288 412 284 409 288 b 395 287 400 288 397 288 b 282 245 395 287 285 246 b 264 274 269 245 264 262 l 264 446 b 245 462 264 455 255 462 b 220 439 222 462 220 451 l 220 252 b 204 213 219 239 215 223 b 99 176 174 202 127 176 b 82 151 89 171 82 161 l 82 49 b 92 37 82 42 86 37 b 99 39 95 37 96 37 l 210 79 b 216 81 212 81 215 81 b 220 78 219 81 220 79 l 220 56 b 216 46 220 52 220 48 b 16 -29 210 45 16 -29 b -1 -45 4 -32 -1 -36 l -1 -138 b 12 -154 -1 -145 3 -154 l 215 -79 b 220 -84 219 -79 220 -81 l 220 -105 b 210 -122 220 -115 219 -120 b 99 -168 202 -127 99 -168 b 82 -193 89 -173 82 -183 l 82 -295 b 92 -307 82 -302 86 -307 b 99 -305 95 -307 96 -307 b 210 -262 99 -305 199 -265 l 212 -261 b 220 -278 219 -261 220 -269 l 220 -471 b 239 -487 220 -480 229 -487 b 264 -464 261 -487 264 -477 l 264 -264 b 265 -253 264 -259 264 -256 b 279 -233 268 -245 272 -236 b 395 -189 289 -229 395 -189 b 412 -164 405 -184 412 -174 l 412 -62 b 402 -50 412 -55 409 -50 b 395 -52 400 -50 397 -50 l 278 -96 b 264 -86 268 -96 264 -94 l 264 -68 b 269 -59 264 -62 265 -60 b 471 17 274 -58 471 17 b 488 36 484 22 488 27 l 488 127 b 475 144 488 134 487 144 l 472 141 b 471 141 472 141 471 141 l 471 143 b 272 68 471 143 282 71 l 269 66 b 264 71 264 66 264 69 z', + }, + accidentalKoron: { + x_min: 0, + x_max: 300, + y_min: -472, + y_max: 157, + ha: 629, + o: 'm 432 -4 b 415 10 432 1 418 9 l 4 226 b 0 223 1 226 0 225 l 0 -672 b 7 -680 0 -677 3 -680 l 45 -680 b 52 -672 49 -680 52 -677 l 52 -193 l 415 -22 b 432 -4 418 -20 432 -13 z m 52 -137 l 52 144 l 327 -7 z', + }, + accidentalSori: { + x_min: 0, + x_max: 421, + y_min: -318, + y_max: 328, + ha: 646, + o: 'm 606 10 b 589 23 606 16 592 22 l 382 109 l 382 465 b 374 472 382 469 379 472 l 337 472 b 330 465 333 472 330 469 l 330 132 l 183 194 l 183 425 b 176 432 183 429 180 432 l 138 432 b 131 425 134 432 131 429 l 131 216 l 3 269 b 0 265 0 269 0 266 l 0 223 b 3 213 0 216 0 215 l 131 160 l 131 -150 l 3 -203 b 0 -212 0 -204 0 -206 l 0 -255 b 3 -259 0 -258 1 -259 l 131 -204 l 131 -451 b 138 -458 131 -455 134 -458 l 176 -458 b 183 -451 180 -458 183 -455 l 183 -183 l 330 -120 l 330 -410 b 337 -418 330 -415 333 -418 l 374 -418 b 382 -410 379 -418 382 -415 l 382 -98 l 589 -9 b 606 10 592 -9 606 0 z m 183 -128 l 183 138 l 330 76 l 330 -66 z m 382 -45 l 382 55 l 501 6 z', + }, + articAccentAbove: { + x_min: 0, + x_max: 339, + y_min: 1, + y_max: 245, + ha: 244, + o: 'm 469 151 b 488 177 488 156 488 166 b 469 203 488 189 488 197 l 37 350 b 24 353 32 351 26 353 b 3 333 12 353 7 344 b 0 318 1 327 0 323 b 20 298 0 311 4 304 b 346 187 20 298 331 193 b 356 177 353 186 356 181 b 344 167 356 173 353 170 b 20 58 328 163 20 58 b 0 36 4 50 0 43 b 3 23 0 32 1 27 b 23 1 7 13 13 1 b 29 3 24 1 27 1 z', + }, + articAccentBelow: { + x_min: 0, + x_max: 339, + y_min: -244, + y_max: 0, + ha: 244, + o: 'm 469 -202 b 488 -176 488 -197 488 -187 b 469 -150 488 -164 488 -156 l 37 -3 b 24 0 32 -1 26 0 b 3 -20 12 0 7 -9 b 0 -35 1 -26 0 -30 b 20 -55 0 -42 4 -49 b 346 -166 20 -55 331 -160 b 356 -176 353 -167 356 -171 b 344 -186 356 -180 353 -183 b 20 -295 328 -190 20 -295 b 0 -317 4 -302 0 -310 b 3 -330 0 -321 1 -325 b 23 -351 7 -340 13 -351 b 29 -350 24 -351 27 -351 z', + }, + articTenutoAbove: { + x_min: -1, + x_max: 338, + y_min: 0, + y_max: 48, + ha: 48, + o: 'm 452 0 b 487 35 485 0 487 16 b 452 69 487 53 487 69 l 33 69 b -1 35 -1 69 -1 53 b 33 0 -1 16 -1 0 z', + }, + articTenutoBelow: { + x_min: -1, + x_max: 338, + y_min: -48, + y_max: 0, + ha: 48, + o: 'm 452 -69 b 487 -35 485 -69 487 -53 b 452 0 487 -16 487 0 l 33 0 b -1 -35 -1 0 -1 -16 b 33 -69 -1 -53 -1 -69 z', + }, + articStaccatoAbove: { + x_min: 0, + x_max: 84, + y_min: 0, + y_max: 84, + ha: 84, + o: 'm 121 60 b 60 121 121 94 94 121 b 0 60 27 121 0 94 b 60 0 0 27 27 0 b 121 60 94 0 121 27 z', + }, + articStaccatoBelow: { + x_min: 0, + x_max: 84, + y_min: -84, + y_max: 0, + ha: 84, + o: 'm 121 -60 b 60 0 121 -27 94 0 b 0 -60 27 0 0 -27 b 60 -121 0 -94 27 -121 b 121 -60 94 -121 121 -94 z', + }, + articStaccatissimoAbove: { + x_min: 1, + x_max: 100, + y_min: -2, + y_max: 293, + ha: 295, + o: 'm 72 422 b 1 390 35 422 3 409 b 72 -3 1 369 39 -3 b 144 389 108 -3 144 356 b 72 422 144 410 111 422 z', + }, + articStaccatissimoBelow: { + x_min: 1, + x_max: 100, + y_min: -295, + y_max: 0, + ha: 295, + o: 'm 72 -425 b 144 -392 111 -425 144 -413 b 72 0 144 -359 108 0 b 1 -393 39 0 1 -372 b 72 -425 3 -412 35 -425 z', + }, + articMarcatoAbove: { + x_min: -1, + x_max: 235, + y_min: -1, + y_max: 253, + ha: 254, + o: 'm 181 356 b 167 364 177 361 173 364 b 153 356 157 364 153 356 l 0 23 b -1 16 -1 20 -1 19 b 9 0 -1 9 1 1 b 16 -1 10 -1 14 -1 b 32 9 22 -1 29 1 b 112 186 32 9 109 180 b 118 190 114 189 115 190 b 127 186 121 190 124 189 b 209 9 128 180 209 9 b 225 0 213 3 219 0 l 323 0 b 338 16 333 1 338 7 b 337 23 338 19 338 22 z', + }, + articMarcatoBelow: { + x_min: -1, + x_max: 235, + y_min: -254, + y_max: 0, + ha: 254, + o: 'm 156 -357 b 170 -366 160 -363 164 -366 b 184 -357 180 -366 184 -357 l 337 -24 b 338 -17 338 -22 338 -20 b 328 -1 338 -10 336 -3 b 321 0 327 0 323 0 b 305 -10 315 0 308 -3 b 225 -187 305 -10 228 -181 b 219 -192 223 -190 222 -192 b 210 -187 216 -192 213 -190 b 128 -10 209 -181 128 -10 b 112 -1 124 -4 118 -1 l 14 -1 b -1 -17 4 -3 -1 -9 b 0 -24 -1 -20 -1 -23 z', + }, + fermataAbove: { + x_min: 3, + x_max: 605, + y_min: -3, + y_max: 329, + ha: 332, + o: 'm 435 318 b 818 36 742 318 804 91 b 821 26 819 32 819 27 b 851 -4 831 6 837 -4 b 871 16 864 -4 871 1 b 870 30 871 20 871 24 b 438 474 780 471 480 474 b 6 30 392 474 94 471 b 4 14 4 24 4 19 b 23 -4 4 0 12 -4 b 52 26 36 -4 43 6 b 56 39 53 27 55 33 b 435 318 73 98 138 318 z m 516 75 b 436 153 516 117 480 153 b 359 75 395 153 359 117 b 436 -4 359 32 395 -4 b 516 75 480 -4 516 32 z', + }, + fermataBelow: { + x_min: 3, + x_max: 605, + y_min: -332, + y_max: 0, + ha: 332, + o: 'm 435 -323 b 56 -43 138 -323 73 -102 b 52 -30 55 -37 53 -32 b 23 0 43 -10 36 0 b 4 -19 12 0 4 -4 b 6 -35 4 -23 4 -29 b 438 -478 94 -475 392 -478 b 870 -35 480 -478 780 -475 b 871 -20 871 -29 871 -24 b 851 0 871 -6 864 0 b 821 -30 837 0 831 -10 b 818 -40 819 -32 819 -36 b 435 -323 804 -95 742 -323 z m 516 -79 b 436 0 516 -36 480 0 b 359 -79 395 0 359 -36 b 436 -157 359 -121 395 -157 b 516 -79 480 -157 516 -121 z', + }, + fermataLongAbove: { + x_min: 0, + x_max: 603, + y_min: -1, + y_max: 333, + ha: 334, + o: 'm 72 480 b 0 441 32 480 0 462 l 0 19 b 35 0 0 9 16 0 b 71 19 55 0 71 9 l 71 289 b 433 315 71 307 252 315 b 798 289 615 315 798 307 l 798 19 b 832 0 798 9 814 0 b 868 19 852 0 868 9 l 868 441 b 796 480 868 462 837 480 z m 513 78 b 433 156 513 121 478 156 b 356 78 390 156 356 121 b 433 -1 356 35 390 -1 b 513 78 478 -1 513 35 z', + }, + fermataLongBelow: { + x_min: 0, + x_max: 603, + y_min: -333, + y_max: 1, + ha: 334, + o: 'm 513 -78 b 433 1 513 -35 478 1 b 356 -78 390 1 356 -35 b 433 -156 356 -121 390 -156 b 513 -78 478 -156 513 -121 z m 796 -480 b 868 -441 837 -480 868 -462 l 868 -19 b 832 0 868 -9 852 0 b 798 -19 814 0 798 -9 l 798 -289 b 433 -315 798 -307 615 -315 b 71 -289 252 -315 71 -307 l 71 -19 b 35 0 71 -9 55 0 b 0 -19 16 0 0 -9 l 0 -441 b 72 -480 0 -462 32 -480 z', + }, + fermataVeryLongAbove: { + x_min: 0, + x_max: 715, + y_min: 0, + y_max: 408, + ha: 408, + o: 'm 76 588 b 0 546 35 588 0 569 l 0 22 b 37 1 0 10 17 1 b 75 22 59 1 75 10 l 75 431 b 514 458 75 449 294 458 b 955 431 734 458 955 449 l 955 22 b 991 1 955 10 971 1 b 1030 22 1012 1 1030 10 l 1030 546 b 953 588 1030 569 995 588 z m 215 389 b 138 347 171 389 138 370 l 138 22 b 174 1 138 10 154 1 b 213 22 196 1 213 10 l 213 217 b 514 245 213 235 363 245 b 816 217 665 245 816 235 l 816 22 b 854 1 816 10 834 1 b 891 22 876 1 891 10 l 891 347 b 815 389 891 370 858 389 z m 606 84 b 521 167 606 130 569 167 b 439 84 475 167 439 130 b 521 0 439 39 475 0 b 606 84 569 0 606 39 z', + }, + fermataVeryLongBelow: { + x_min: 0, + x_max: 715, + y_min: -408, + y_max: 0, + ha: 408, + o: 'm 606 -84 b 521 0 606 -39 569 0 b 439 -84 475 0 439 -39 b 521 -167 439 -130 475 -167 b 606 -84 569 -167 606 -130 z m 815 -389 b 891 -347 858 -389 891 -370 l 891 -22 b 854 -1 891 -10 876 -1 b 816 -22 834 -1 816 -10 l 816 -217 b 514 -245 816 -235 665 -245 b 213 -217 363 -245 213 -235 l 213 -22 b 174 -1 213 -10 196 -1 b 138 -22 154 -1 138 -10 l 138 -347 b 215 -389 138 -370 171 -389 z m 953 -588 b 1030 -546 995 -588 1030 -569 l 1030 -22 b 991 -1 1030 -10 1012 -1 b 955 -22 971 -1 955 -10 l 955 -431 b 514 -458 955 -449 734 -458 b 75 -431 294 -458 75 -449 l 75 -22 b 37 -1 75 -10 59 -1 b 0 -22 17 -1 0 -10 l 0 -546 b 76 -588 0 -569 35 -588 z', + }, + fermataShortAbove: { + x_min: 0, + x_max: 604, + y_min: 0, + y_max: 341, + ha: 341, + o: 'm 78 0 b 88 6 81 0 82 3 b 435 328 134 45 412 328 b 783 3 458 328 742 39 b 793 0 786 1 793 0 l 865 0 b 870 4 865 0 870 1 b 867 10 870 6 868 9 b 435 491 805 69 474 491 b 3 10 397 491 69 75 b 0 4 1 9 0 6 b 4 0 0 1 4 0 z m 513 94 b 433 171 513 135 477 171 b 354 94 390 171 354 135 b 433 13 354 49 390 13 b 513 94 477 13 513 49 z', + }, + fermataShortBelow: { + x_min: 0, + x_max: 604, + y_min: -341, + y_max: 0, + ha: 341, + o: 'm 4 0 b 0 -4 4 0 0 -1 b 3 -10 0 -6 1 -9 b 435 -491 69 -75 397 -491 b 867 -10 474 -491 805 -69 b 870 -4 868 -9 870 -6 b 865 0 870 -1 865 0 l 793 0 b 783 -3 793 0 786 -1 b 435 -328 742 -39 458 -328 b 88 -6 412 -328 134 -45 b 78 0 82 -3 81 0 z m 513 -94 b 433 -13 513 -49 477 -13 b 354 -94 390 -13 354 -49 b 433 -171 354 -135 390 -171 b 513 -94 477 -171 513 -135 z', + }, + breathMarkComma: { + x_min: 1, + x_max: 152, + y_min: 2, + y_max: 251, + ha: 249, + o: 'm 104 361 b 1 271 42 361 1 321 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 17 32 29 26 26 l 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 z', + }, + breathMarkUpbow: { + x_min: 1, + x_max: 249, + y_min: 1, + y_max: 495, + ha: 494, + o: 'm 181 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 z', + }, + caesura: { + x_min: 0, + x_max: 384, + y_min: -1, + y_max: 532, + ha: 533, + o: 'm 40 -1 b 78 26 58 -1 72 9 l 321 713 b 323 726 323 717 323 721 b 282 766 323 747 304 766 b 245 739 265 766 251 756 l 3 52 b 0 37 1 48 0 42 b 27 1 0 22 10 7 b 40 -1 32 -1 36 -1 z m 308 26 l 552 713 b 553 726 553 717 553 721 b 513 766 553 747 534 766 b 475 739 495 766 481 756 l 232 52 b 230 39 230 48 230 43 b 258 1 230 23 240 7 b 271 -1 262 -1 266 -1 b 308 26 287 -1 302 9 z', + }, + caesuraCurved: { + x_min: 0, + x_max: 373, + y_min: 0, + y_max: 530, + ha: 530, + o: 'm 491 763 b 445 719 468 763 446 744 b 252 98 432 507 340 295 l 226 39 b 223 27 225 35 223 32 b 252 0 223 13 233 0 b 276 16 262 0 272 6 b 537 716 386 230 537 478 b 491 763 537 742 518 763 z m 29 0 b 53 16 39 0 48 6 l 82 69 b 314 716 187 264 314 498 b 268 763 314 742 295 763 b 222 719 245 763 223 744 b 29 98 209 507 117 295 l 3 39 b 0 29 1 36 0 33 b 29 0 0 14 12 0 z', + }, + restMaxima: { + x_min: 0, + x_max: 381, + y_min: -249, + y_max: 250, + ha: 499, + o: 'm 180 -330 l 180 331 b 156 360 180 356 170 360 l 23 360 b 0 331 10 360 0 356 l 0 -330 b 23 -359 0 -354 10 -359 l 156 -359 b 180 -330 170 -359 180 -354 z m 549 -330 l 549 331 b 524 360 549 356 539 360 l 392 360 b 369 331 379 360 369 356 l 369 -330 b 392 -359 369 -354 379 -359 l 524 -359 b 549 -330 539 -359 549 -354 z', + }, + restDoubleWhole: { + x_min: 0, + x_max: 125, + y_min: 0, + y_max: 250, + ha: 250, + o: 'm 180 22 l 180 338 b 156 360 180 350 170 360 l 23 360 b 0 338 10 360 0 350 l 0 22 b 23 0 0 10 10 0 l 156 0 b 180 22 170 0 180 10 z', + }, + restWhole: { + x_min: 0, + x_max: 282, + y_min: -135, + y_max: 9, + ha: 144, + o: 'm 406 -157 l 406 -24 b 369 13 406 -3 389 13 l 37 13 b 0 -24 16 13 0 -3 l 0 -157 b 37 -194 0 -177 16 -194 l 369 -194 b 406 -157 389 -194 406 -177 z', + }, + restWholeLegerLine: { + x_min: -117, + x_max: 399, + y_min: -135, + y_max: 20, + ha: 155, + o: 'm -143 29 b -168 3 -157 29 -168 17 b -143 -23 -168 -12 -157 -23 l 0 -23 l 0 -157 b 37 -194 0 -177 16 -194 l 369 -194 b 406 -157 389 -194 406 -177 l 406 -24 b 549 -23 406 -23 406 -23 b 575 3 563 -23 575 -12 b 549 29 575 17 563 29 z', + }, + restHalf: { + x_min: 0, + x_max: 282, + y_min: -2, + y_max: 142, + ha: 144, + o: 'm 406 35 l 406 167 b 369 204 406 189 389 204 l 37 204 b 0 167 16 204 0 189 l 0 35 b 37 -3 0 14 16 -3 l 369 -3 b 406 35 389 -3 406 14 z', + }, + restHalfLegerLine: { + x_min: -117, + x_max: 399, + y_min: -13, + y_max: 142, + ha: 155, + o: 'm 549 -19 b 575 7 563 -19 575 -7 b 549 33 575 22 563 33 b 406 35 406 33 406 33 l 406 167 b 369 204 406 187 389 204 l 37 204 b 0 167 16 204 0 187 l 0 33 l -143 33 b -168 7 -157 33 -168 22 b -143 -19 -168 -7 -157 -19 z', + }, + restQuarter: { + x_min: 1, + x_max: 270, + y_min: -375, + y_max: 373, + ha: 748, + o: 'm 112 -55 b 174 -141 135 -84 156 -111 b 183 -161 177 -147 183 -158 b 181 -167 183 -163 183 -166 b 166 -174 179 -173 173 -174 b 143 -170 160 -174 148 -171 b 137 -170 141 -170 138 -170 l 125 -166 b 1 -304 50 -166 1 -233 b 168 -527 1 -376 63 -446 b 206 -540 180 -536 194 -540 b 228 -531 216 -540 226 -537 b 230 -521 229 -527 230 -524 b 207 -487 230 -508 219 -497 b 170 -435 189 -487 173 -448 b 164 -397 166 -423 164 -410 b 255 -292 164 -338 194 -292 b 369 -317 297 -292 344 -308 l 370 -318 b 382 -320 376 -320 379 -320 b 389 -314 386 -320 389 -318 b 336 -232 389 -297 351 -249 b 236 -32 281 -166 236 -112 b 236 -27 236 -30 236 -29 l 238 -17 b 238 -13 238 -16 238 -14 b 333 199 243 71 295 140 b 338 220 337 206 338 213 b 333 248 338 235 333 248 b 95 526 333 248 120 501 b 69 537 88 533 78 537 b 40 507 55 537 40 527 b 46 484 40 500 42 492 b 134 291 52 468 134 395 b 48 108 134 238 112 176 b 27 66 33 94 27 78 b 42 32 27 46 42 32 z', + }, + rest8th: { + x_min: 0, + x_max: 247, + y_min: -251, + y_max: 174, + ha: 425, + o: 'm 193 154 b 96 251 193 207 150 251 b 0 154 43 251 0 207 b 39 81 0 124 17 98 b 117 56 62 65 89 56 b 173 66 137 56 157 60 b 225 88 193 72 206 78 b 232 89 228 89 230 89 b 239 76 238 89 239 84 b 238 60 239 72 239 66 b 104 -343 233 39 130 -248 b 145 -361 104 -360 137 -361 b 196 -347 161 -361 181 -359 b 341 161 200 -344 341 161 b 356 217 347 187 354 210 b 338 240 356 232 341 239 b 323 235 336 240 331 240 b 193 140 312 226 240 140 z', + }, + rest16th: { + x_min: 0, + x_max: 320, + y_min: -500, + y_max: 179, + ha: 679, + o: 'm 300 160 b 202 258 300 215 256 258 b 104 160 148 258 104 215 b 219 62 104 101 164 62 b 331 94 258 62 298 75 b 341 96 336 95 338 96 b 348 86 346 96 348 94 b 265 -173 348 63 275 -151 b 194 -217 253 -200 215 -217 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 151 -105 b 0 -203 43 -105 0 -148 b 115 -301 0 -262 60 -301 b 223 -271 153 -301 190 -288 b 229 -279 226 -271 229 -274 l 228 -281 b 228 -282 228 -282 228 -282 l 91 -690 b 91 -691 91 -690 91 -691 l 89 -693 b 134 -720 89 -706 102 -720 b 189 -687 176 -720 183 -703 l 356 -138 b 420 81 393 -16 420 81 b 459 226 420 81 456 207 b 461 232 459 229 461 230 b 446 248 461 240 449 246 b 431 242 439 248 435 245 b 300 145 420 233 348 147 z', + }, + rest32nd: { + x_min: 0, + x_max: 363, + y_min: -500, + y_max: 426, + ha: 926, + o: 'm 508 603 b 492 598 501 603 497 600 b 361 503 482 590 410 503 l 361 516 b 264 613 361 570 318 613 b 166 516 210 613 166 570 b 206 444 166 487 183 461 b 246 423 217 433 232 428 b 284 418 258 420 269 418 b 393 449 321 418 360 432 b 399 451 395 451 397 451 b 415 426 409 451 415 436 l 413 423 b 413 422 413 423 413 422 l 357 192 b 279 140 350 168 302 140 b 281 153 281 144 281 148 b 183 251 281 207 236 251 b 85 153 128 251 85 207 b 125 81 85 124 102 98 b 164 60 137 71 150 65 b 203 55 176 58 189 55 b 311 86 240 55 278 69 b 315 88 312 88 314 88 b 325 69 323 88 325 76 l 268 -167 b 194 -217 261 -197 216 -216 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 153 -105 b 0 -203 45 -105 0 -148 b 115 -301 0 -262 60 -301 b 228 -269 154 -301 194 -288 b 232 -268 229 -268 230 -268 b 240 -276 236 -268 240 -272 b 138 -688 240 -282 141 -678 b 137 -697 137 -691 137 -694 b 176 -720 137 -708 145 -720 b 232 -690 222 -720 226 -706 b 484 436 236 -672 484 436 b 521 582 484 436 518 564 b 523 588 521 585 523 586 b 508 603 523 600 511 603 z', + }, + rest64th: { + x_min: 0, + x_max: 423, + y_min: -753, + y_max: 430, + ha: 1183, + o: 'm 596 609 b 580 603 589 609 585 606 b 448 507 569 595 497 507 b 449 521 449 511 449 516 b 351 619 449 575 405 619 b 253 521 297 619 253 575 b 372 422 253 461 317 422 b 481 454 410 422 446 438 b 491 456 484 455 488 456 b 504 441 498 456 504 451 b 501 426 504 436 503 432 b 445 202 500 422 451 217 b 359 144 435 174 383 144 l 359 158 b 261 256 359 212 315 256 b 163 158 207 256 163 212 b 243 65 163 112 202 78 b 279 60 255 62 266 60 b 397 91 320 60 360 73 b 403 92 400 92 402 92 b 412 79 409 92 412 86 b 410 72 412 76 412 75 b 351 -161 408 59 356 -150 b 281 -212 340 -199 301 -212 l 281 -197 b 183 -99 281 -144 238 -99 b 85 -197 130 -99 85 -144 b 125 -271 85 -228 102 -253 b 166 -291 138 -279 151 -287 b 204 -297 177 -294 192 -297 b 262 -287 225 -297 245 -292 b 305 -265 282 -279 287 -274 b 310 -264 307 -264 308 -264 b 318 -284 317 -264 318 -275 b 317 -295 318 -288 317 -294 b 259 -524 315 -302 265 -508 b 194 -567 251 -554 213 -567 b 196 -554 196 -563 196 -559 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 b 40 -626 0 -583 17 -609 b 118 -652 60 -644 92 -652 b 210 -629 145 -652 186 -642 b 216 -628 213 -628 215 -628 b 228 -647 226 -628 228 -639 l 226 -651 b 226 -652 226 -651 226 -652 l 122 -1054 b 121 -1064 121 -1058 121 -1061 b 167 -1084 121 -1077 134 -1084 b 215 -1060 202 -1084 209 -1076 b 402 -278 217 -1047 229 -1021 b 436 -135 403 -278 431 -161 l 570 441 b 609 588 570 441 605 569 b 596 609 609 603 602 608 z', + }, + rest128th: { + x_min: 0, + x_max: 485, + y_min: -750, + y_max: 689, + ha: 1439, + o: 'm 537 894 b 439 992 537 949 494 992 b 341 894 386 992 341 949 b 382 822 341 865 359 840 b 459 796 402 805 433 796 b 518 806 480 796 501 801 l 520 808 b 569 828 539 814 552 819 b 580 831 572 829 577 831 b 598 812 589 831 598 825 b 596 801 598 809 598 805 b 540 575 590 773 546 595 b 448 510 534 553 475 510 l 448 524 b 350 622 448 577 405 622 b 252 524 297 622 252 577 b 292 451 252 494 269 468 b 369 426 318 433 337 426 b 429 435 389 426 412 429 b 494 464 449 442 475 455 b 498 465 495 465 497 465 b 505 446 504 465 505 456 b 503 426 505 439 504 432 l 446 202 b 366 144 439 173 389 144 l 366 158 b 268 256 366 212 323 256 b 170 158 215 256 170 212 b 289 59 170 98 235 59 b 347 69 310 59 330 63 b 397 91 367 76 379 82 b 406 94 400 92 403 94 b 415 79 412 94 415 88 b 412 63 415 75 413 69 b 357 -157 408 42 364 -134 b 281 -212 346 -196 302 -212 b 282 -197 281 -207 282 -203 b 184 -99 282 -144 238 -99 b 86 -197 130 -99 86 -144 b 204 -297 86 -258 150 -297 b 262 -287 225 -297 245 -292 b 312 -265 282 -279 294 -274 b 318 -264 314 -264 317 -264 b 327 -275 324 -264 327 -269 b 266 -517 324 -287 278 -490 b 200 -569 248 -566 220 -567 l 196 -554 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 b 118 -652 0 -615 63 -652 b 177 -642 138 -652 160 -648 l 179 -641 b 229 -621 197 -635 210 -629 l 230 -619 b 239 -626 236 -619 239 -622 b 238 -632 239 -628 239 -631 b 131 -1057 235 -642 134 -1050 b 173 -1080 131 -1071 140 -1080 b 230 -1057 219 -1080 225 -1074 l 658 815 b 697 960 658 815 694 942 b 698 966 697 963 698 965 b 684 982 698 975 687 981 b 668 976 677 982 672 979 b 537 880 658 969 586 881 z', + }, + dynamicPiano: { + x_min: -89, + x_max: 366, + y_min: -142, + y_max: 274, + ha: 416, + o: 'm 395 395 b 292 357 350 395 318 380 b 262 328 272 340 268 328 b 246 363 255 328 259 338 b 177 393 236 380 215 393 b 1 251 92 393 46 333 b -9 223 -6 238 -9 230 b 7 207 -9 213 -1 207 b 30 229 17 207 23 216 b 127 338 72 301 101 338 b 143 321 138 338 143 331 b 134 285 143 310 138 295 l -43 -154 b -65 -168 -48 -166 -50 -168 l -109 -168 b -128 -187 -122 -168 -128 -174 b -111 -204 -128 -199 -122 -204 l 167 -204 b 186 -186 180 -204 186 -199 b 168 -168 186 -174 180 -168 l 111 -168 b 98 -164 102 -168 98 -168 b 101 -154 98 -163 99 -158 l 166 7 b 179 24 168 14 171 24 b 213 -1 186 24 190 10 b 276 -14 233 -12 252 -14 b 527 266 415 -14 527 130 b 395 395 527 350 475 395 z m 356 341 b 389 288 380 341 389 320 b 243 35 389 217 312 35 b 207 81 219 35 207 50 b 235 180 207 111 219 140 l 264 251 b 356 341 284 300 321 341 z', + }, + dynamicMezzo: { + x_min: -20, + x_max: 446, + y_min: -10, + y_max: 274, + ha: 284, + o: 'm 528 395 b 431 350 487 395 454 374 b 409 330 416 336 415 330 b 397 360 402 330 406 341 b 334 395 389 379 370 395 b 236 350 292 395 259 374 b 215 330 222 336 220 330 b 203 360 207 330 212 340 b 147 393 194 379 174 393 b -19 251 71 393 26 331 b -29 223 -26 238 -29 230 b -13 207 -29 213 -22 207 b 9 226 -3 207 1 215 b 107 338 52 300 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 287 323 225 292 255 323 b 308 302 304 323 308 314 b 294 249 308 285 302 269 b 203 24 294 248 292 248 b 199 9 200 17 199 13 b 215 0 199 3 203 0 l 285 0 b 308 17 298 0 302 3 l 402 251 b 481 323 419 292 449 323 b 503 302 498 323 503 314 b 413 43 503 252 413 104 b 478 -14 413 6 436 -14 b 629 102 533 -14 583 26 b 642 132 638 117 642 125 b 629 145 642 141 636 145 b 608 127 619 145 615 138 b 534 49 580 84 553 49 b 523 62 526 49 523 53 b 606 317 523 112 606 238 b 528 395 606 353 588 395 z', + }, + dynamicForte: { + x_min: -141, + x_max: 364, + y_min: -152, + y_max: 444, + ha: 596, + o: 'm 23 380 b 0 357 7 380 0 373 b 22 336 0 343 7 336 l 105 336 b 117 330 114 336 117 336 b 114 315 117 327 115 323 l 23 0 b -101 -187 -17 -141 -43 -187 b -127 -174 -120 -187 -127 -181 b -92 -156 -127 -163 -114 -170 b -63 -102 -75 -144 -63 -125 b -128 -43 -63 -65 -89 -43 b -203 -122 -171 -43 -203 -78 b -95 -219 -203 -186 -156 -219 b 161 17 14 -219 82 -145 b 269 317 203 105 235 194 l 271 318 b 289 336 271 323 282 336 l 383 336 b 406 359 399 336 406 343 b 384 380 406 373 399 380 l 298 380 b 284 387 288 380 284 380 b 287 405 284 392 285 396 b 419 606 315 530 347 606 b 442 595 431 606 442 603 b 419 580 442 586 435 588 b 389 526 400 572 389 552 b 454 465 389 485 418 465 b 524 543 491 465 524 490 b 400 639 524 596 491 639 b 135 402 261 639 183 540 b 107 380 128 380 127 380 z', + }, + dynamicRinforzando: { + x_min: -20, + x_max: 277, + y_min: 0, + y_max: 274, + ha: 274, + o: 'm 324 395 b 235 350 287 395 256 374 b 215 330 222 336 220 330 b 203 360 207 330 213 337 b 145 393 194 379 174 393 b -19 251 75 393 27 337 b -29 223 -26 238 -29 230 b -13 207 -29 213 -22 207 b 9 226 -3 207 3 215 b 107 338 52 301 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 304 351 226 298 272 351 b 318 343 312 351 318 348 b 287 285 318 330 287 325 b 338 239 287 256 308 239 b 399 318 373 239 399 268 b 324 395 399 360 377 395 z', + }, + dynamicSforzando: { + x_min: 0, + x_max: 229, + y_min: -10, + y_max: 273, + ha: 283, + o: 'm 212 393 b 68 274 127 393 68 350 b 145 161 68 223 95 196 b 200 85 187 132 200 114 b 127 20 200 53 173 20 b 66 42 91 20 66 32 b 91 56 66 49 75 46 b 111 98 104 65 111 79 b 59 145 111 127 86 145 b 0 78 24 145 0 117 b 125 -14 0 30 49 -14 b 291 120 219 -14 291 36 b 220 232 291 160 276 190 b 151 314 168 271 151 287 b 213 361 151 337 168 361 b 258 346 238 361 258 356 b 240 333 258 340 251 340 b 226 298 232 325 226 314 b 276 252 226 269 248 252 b 330 307 311 252 330 279 b 212 393 330 360 285 393 z', + }, + dynamicZ: { + x_min: -30, + x_max: 244, + y_min: -10, + y_max: 268, + ha: 278, + o: 'm 333 386 b 298 377 321 386 314 382 b 239 370 282 373 259 370 b 94 383 153 370 111 383 b 68 364 79 383 72 377 l 33 264 b 29 242 30 255 29 248 b 45 228 29 232 36 228 b 66 249 55 228 60 236 l 81 279 b 96 297 85 288 88 297 b 168 292 102 297 127 292 b 223 302 194 292 215 302 b 196 269 229 302 197 271 l -26 45 b -43 16 -37 33 -43 27 b -24 -1 -43 6 -36 -1 b 4 16 -12 -1 -3 10 b 39 30 16 24 27 30 b 179 -14 79 30 108 -14 b 297 102 259 -14 297 43 b 245 166 297 147 271 166 b 197 115 219 166 197 145 b 236 72 197 88 216 72 b 259 79 251 72 255 79 b 264 75 262 79 264 78 b 258 60 264 72 261 66 b 229 45 252 50 242 45 b 117 95 186 45 173 95 b 85 86 98 95 89 86 b 102 111 85 86 95 104 l 333 338 b 351 370 344 350 351 359 b 333 386 351 380 343 386 z', + }, + ornamentTrill: { + x_min: 0, + x_max: 521, + y_min: -10, + y_max: 390, + ha: 400, + o: 'm 383 562 b 364 557 377 562 369 559 l 294 534 b 269 511 281 530 275 526 l 217 384 b 206 367 212 370 210 367 b 179 380 200 367 192 374 b 118 393 158 389 140 393 b 0 292 50 393 0 353 b 95 210 0 248 30 210 b 140 213 112 210 131 213 b 144 209 143 213 144 212 b 140 194 144 206 143 202 l 124 156 b 96 58 108 117 96 88 b 179 -14 96 17 124 -14 b 325 153 253 -14 325 46 b 307 251 325 187 320 219 b 302 265 304 258 302 261 b 334 294 302 274 311 281 l 343 298 b 455 348 393 328 428 348 b 474 327 468 348 474 344 b 465 285 474 312 469 295 l 360 24 b 356 9 357 17 356 13 b 372 0 356 3 360 0 l 442 0 b 465 17 455 0 459 3 l 559 251 b 655 351 577 298 624 351 b 670 343 664 351 670 348 b 638 285 670 330 638 325 b 690 239 638 256 660 239 b 750 318 724 239 750 268 b 675 395 750 360 729 395 b 586 350 638 395 608 374 b 566 330 573 336 572 330 b 553 361 559 330 564 340 b 490 393 543 380 521 393 b 347 348 432 393 377 364 b 312 333 328 338 320 333 b 308 337 310 333 308 334 b 315 359 308 343 312 351 l 387 537 b 392 553 390 544 392 549 b 383 562 392 559 389 562 z m 118 360 b 192 325 134 360 192 347 b 186 307 192 321 189 314 l 180 292 b 148 265 173 274 167 269 b 98 258 130 261 112 258 b 39 301 50 258 39 281 b 118 360 39 327 60 360 z m 272 240 b 292 151 285 240 292 164 b 212 30 292 88 253 30 b 196 48 200 30 196 37 b 207 92 196 59 202 78 b 264 230 207 94 209 94 b 272 240 266 238 268 240 z', + }, + ornamentTurn: { + x_min: 0, + x_max: 460, + y_min: 0, + y_max: 218, + ha: 218, + o: 'm 534 314 b 454 251 490 314 454 294 b 505 199 454 219 475 199 b 579 232 547 199 549 232 b 626 164 603 232 626 202 b 533 72 626 102 583 72 b 377 180 487 72 439 111 b 150 312 307 258 243 312 b 0 148 55 312 0 240 b 128 0 0 45 66 0 b 209 63 173 0 209 20 b 157 115 209 95 187 115 b 84 82 115 115 114 82 b 36 150 59 82 36 112 b 130 242 36 212 79 242 b 285 134 176 242 223 203 b 513 1 356 56 419 1 b 662 166 608 1 662 73 b 534 314 662 269 596 314 z', + }, + ornamentTurnSlash: { + x_min: 0, + x_max: 460, + y_min: -90, + y_max: 306, + ha: 396, + o: 'm 333 441 b 310 418 315 441 310 433 l 310 274 b 302 252 310 258 308 252 b 261 278 294 252 287 262 b 150 311 228 298 192 311 b 0 147 55 311 0 239 b 128 -1 0 43 66 -1 b 209 62 173 -1 209 19 b 157 114 209 94 187 114 b 84 81 115 114 114 81 b 36 148 59 81 36 111 b 130 240 36 210 79 240 b 285 128 176 240 222 197 b 307 79 304 108 307 105 l 307 -107 b 330 -130 307 -122 312 -130 b 353 -107 347 -130 353 -122 l 353 37 b 360 59 353 53 353 59 b 402 33 369 59 376 49 b 513 0 435 13 471 0 b 662 164 608 0 662 72 b 534 312 662 268 596 312 b 454 249 490 312 454 292 b 505 197 454 217 475 197 b 579 230 547 197 549 230 b 626 163 603 230 626 200 b 533 71 626 101 583 71 b 377 183 487 71 441 114 b 356 232 359 203 356 206 l 356 418 b 333 441 356 433 350 441 z', + }, + ornamentMordent: { + x_min: 1, + x_max: 729, + y_min: -73, + y_max: 319, + ha: 392, + o: 'm 546 265 l 546 459 l 501 459 l 501 216 l 459 167 b 439 167 454 160 445 160 b 302 327 387 228 310 317 b 258 353 291 338 282 351 b 226 340 245 353 238 348 l 20 107 b 1 73 12 98 1 84 b 30 59 1 65 9 59 b 88 94 53 59 73 79 b 144 143 107 109 124 127 b 176 161 158 154 168 161 b 197 144 183 161 189 156 l 323 10 b 351 0 328 3 340 0 b 377 9 361 0 372 3 b 498 114 392 17 475 94 l 498 -105 l 544 -105 l 544 153 b 562 160 550 157 556 160 b 585 144 569 160 576 156 b 710 10 590 135 697 24 b 737 0 716 3 727 0 b 765 9 749 0 759 3 b 1030 295 776 17 1011 274 l 1032 300 b 1050 328 1041 308 1050 318 b 1012 353 1050 343 1024 353 b 986 343 1002 353 994 348 b 854 190 971 330 871 206 b 828 176 842 180 835 176 b 802 190 818 176 809 183 b 681 333 791 202 696 320 b 645 353 668 344 657 353 b 613 340 634 353 626 350 b 580 304 600 330 590 315 z', + }, + ornamentShortTrill: { + x_min: 0, + x_max: 725, + y_min: 0, + y_max: 245, + ha: 245, + o: 'm 429 167 l 301 325 b 256 353 291 338 282 350 b 225 340 246 353 238 350 b 16 105 158 268 88 186 b 0 72 9 96 0 86 b 29 58 0 63 7 58 b 71 76 42 58 55 62 l 158 154 b 174 160 163 158 168 160 b 197 143 181 160 187 154 b 321 10 203 135 310 24 b 350 0 327 3 338 0 b 377 7 361 0 372 3 l 533 148 b 554 160 543 158 550 160 b 577 143 562 160 566 156 b 703 10 585 135 690 24 b 732 0 708 3 720 0 b 759 7 743 0 753 3 b 1024 294 769 16 1005 272 b 1044 327 1032 305 1044 321 b 1005 353 1044 341 1018 353 b 979 343 996 353 988 348 b 848 189 963 330 864 204 b 821 174 837 179 828 174 b 796 189 811 174 804 181 b 674 331 783 202 688 318 b 641 351 662 343 651 351 b 606 340 628 351 619 350 b 573 304 593 328 583 315 b 444 167 533 259 491 213 b 429 167 439 161 433 161 z', + }, + ornamentTremblement: { + x_min: 1, + x_max: 985, + y_min: 0, + y_max: 244, + ha: 244, + o: 'm 678 325 b 634 351 667 338 657 350 b 602 338 621 351 613 348 l 448 167 b 439 167 446 164 441 164 l 302 325 b 258 351 291 338 281 350 b 228 338 245 351 238 348 b 193 304 215 328 204 315 l 19 107 b 1 72 13 96 1 76 b 30 58 1 63 9 58 b 89 92 52 58 73 78 l 144 141 b 148 144 145 143 147 143 b 176 160 160 153 170 160 b 199 143 183 160 189 154 b 324 10 204 134 311 23 b 351 0 330 3 340 0 b 379 7 363 0 373 3 l 530 148 b 552 160 536 154 546 160 b 575 143 559 160 564 154 b 698 10 580 134 687 23 b 727 0 704 3 716 0 b 755 7 739 0 749 3 l 907 147 b 930 160 922 158 923 160 b 952 143 937 160 943 154 l 1077 10 b 1107 0 1084 3 1096 0 b 1133 7 1117 0 1128 3 b 1398 294 1143 16 1380 272 b 1418 327 1407 305 1418 321 b 1381 351 1418 343 1394 351 b 1354 341 1371 351 1362 348 b 1223 189 1338 328 1238 204 b 1195 174 1211 179 1202 174 b 1171 189 1185 174 1178 181 b 1048 331 1158 200 1063 318 b 1012 351 1035 343 1024 351 b 981 338 1002 351 994 350 b 948 304 968 328 958 315 b 827 166 907 258 865 212 b 815 166 824 163 818 163 b 678 325 760 226 732 264 z', + }, + ornamentPrecompAppoggTrill: { + x_min: 0, + x_max: 1119, + y_min: 0, + y_max: 481, + ha: 481, + o: 'm 1015 163 b 873 328 963 223 880 318 b 828 354 860 344 847 353 b 796 341 816 354 809 351 b 763 305 783 331 773 317 b 642 168 721 261 681 215 b 636 163 641 167 639 164 b 494 328 585 223 501 318 b 449 354 481 344 468 353 b 418 341 438 354 431 351 b 384 305 405 331 395 317 b 264 168 343 261 302 215 l 242 144 b 144 88 232 124 171 88 b 79 197 81 88 79 189 l 79 648 b 60 693 79 683 71 693 b 52 691 58 693 55 693 b 0 616 3 672 0 625 l 0 207 b 121 0 0 40 68 0 b 249 68 168 0 232 53 b 279 94 262 75 271 86 b 336 144 298 111 315 128 b 367 163 350 156 360 163 b 389 145 374 163 380 157 b 514 12 395 137 501 26 b 543 1 520 4 531 1 b 569 9 553 1 563 4 b 636 73 576 14 605 43 l 658 94 b 714 144 677 111 694 128 b 746 163 729 156 739 163 b 768 145 753 163 759 157 b 893 12 773 137 880 26 b 922 1 899 4 910 1 b 948 9 932 1 942 4 l 1012 71 b 1037 94 1022 78 1030 86 b 1092 144 1054 111 1073 128 b 1123 161 1106 156 1115 161 b 1146 145 1130 161 1136 157 b 1270 12 1152 137 1259 26 b 1299 1 1276 4 1287 1 b 1326 9 1310 1 1320 4 b 1591 297 1336 19 1572 275 b 1611 328 1600 307 1611 320 b 1574 354 1611 343 1585 354 b 1548 344 1565 354 1555 350 b 1416 192 1532 331 1431 206 b 1388 177 1404 181 1395 177 b 1365 190 1380 177 1371 184 b 1243 333 1352 203 1256 321 b 1205 354 1228 346 1217 354 b 1174 341 1195 354 1187 351 b 1140 305 1161 330 1152 317 z', + }, + ornamentPrecompSlideTrillDAnglebert: { + x_min: 2, + x_max: 1150, + y_min: -367, + y_max: 245, + ha: 612, + o: 'm 1058 160 b 916 327 1007 220 923 317 b 871 353 903 343 890 351 b 840 340 860 353 852 350 b 806 304 827 330 816 315 b 685 167 765 259 724 213 l 680 160 l 615 235 b 419 344 582 275 523 344 b 3 -144 258 344 3 26 b 4 -168 3 -153 3 -160 b 246 -482 24 -315 99 -422 b 458 -528 340 -521 410 -528 b 514 -526 485 -528 504 -526 b 552 -508 531 -526 552 -517 b 514 -497 552 -503 541 -498 l 503 -497 b 194 -390 432 -494 298 -488 b 69 -151 194 -390 69 -279 b 184 96 69 -60 128 27 b 328 183 202 118 258 183 b 477 96 413 183 454 118 b 559 10 510 62 552 19 b 588 0 566 3 576 0 b 613 7 598 0 609 3 b 723 112 622 14 681 73 b 789 161 733 122 776 161 b 811 144 796 161 802 156 b 936 10 816 135 923 24 b 965 0 942 3 953 0 b 991 7 975 0 985 3 b 1051 66 996 12 1022 37 b 1081 92 1063 73 1073 84 b 1136 143 1099 109 1117 127 b 1168 160 1151 154 1159 160 b 1191 144 1175 160 1181 156 b 1315 10 1197 135 1303 24 b 1344 0 1320 3 1332 0 b 1371 7 1355 0 1365 3 b 1636 295 1381 17 1617 274 b 1656 327 1644 305 1656 318 b 1619 353 1656 341 1630 353 b 1593 343 1610 353 1600 348 b 1460 190 1577 330 1476 204 b 1433 176 1449 180 1440 176 b 1410 189 1424 176 1416 183 b 1287 331 1397 202 1300 320 b 1250 353 1273 344 1261 353 b 1218 340 1240 353 1231 350 b 1185 304 1205 328 1197 315 z', + }, + ornamentPrecompSlideTrillBach: { + x_min: 0, + x_max: 1048, + y_min: -367, + y_max: 331, + ha: 698, + o: 'm 1038 477 l 979 477 l 979 238 l 912 160 b 769 327 858 220 775 317 b 724 353 756 343 743 351 b 693 340 713 353 706 350 b 660 304 680 330 670 315 b 539 167 618 259 577 213 b 533 161 536 166 534 163 b 390 327 480 220 396 317 b 346 353 377 343 364 351 l 340 353 b 308 340 330 353 321 350 b 275 304 295 330 285 315 b 117 122 220 243 168 186 b 0 -144 68 62 0 -48 b 1 -168 0 -153 0 -160 b 243 -482 22 -315 96 -422 b 455 -528 337 -521 408 -528 b 511 -526 482 -528 501 -526 b 549 -508 528 -526 549 -517 b 511 -497 549 -503 539 -498 l 500 -497 b 192 -390 429 -494 295 -488 b 68 -177 192 -390 84 -298 b 66 -151 66 -168 66 -160 b 189 105 66 -58 127 35 b 232 143 203 118 216 131 b 264 161 246 154 256 161 b 285 144 271 161 276 156 b 410 10 291 135 397 24 b 439 0 416 3 428 0 b 465 7 449 0 459 3 l 531 72 b 554 92 540 78 547 86 b 611 143 573 109 590 127 b 642 161 625 154 635 161 b 664 144 649 161 655 156 b 789 10 670 135 776 24 b 818 0 795 3 806 0 b 844 7 828 0 838 3 b 904 66 850 12 876 37 b 935 92 916 73 924 84 b 979 134 949 107 963 121 l 979 -88 l 1037 -88 l 1037 151 l 1044 144 b 1168 10 1050 135 1156 24 b 1197 0 1174 3 1185 0 b 1224 7 1208 0 1218 3 b 1489 295 1234 17 1470 274 b 1509 327 1498 305 1509 318 b 1472 353 1509 341 1483 353 b 1446 343 1463 353 1453 348 b 1313 190 1430 330 1329 204 b 1286 176 1302 180 1293 176 b 1263 189 1277 176 1269 183 b 1140 331 1250 202 1153 320 b 1103 353 1126 344 1115 353 b 1071 340 1093 353 1084 350 b 1038 304 1058 328 1050 315 z', + }, + ornamentPrecompTrillSuffixDandrieu: { + x_min: 0, + x_max: 949, + y_min: 0, + y_max: 381, + ha: 381, + o: 'm 1367 314 b 1250 521 1367 419 1318 482 b 1107 549 1211 537 1145 549 b 1083 546 1096 549 1087 549 b 1066 528 1071 540 1066 534 b 1079 520 1066 524 1070 520 b 1323 351 1187 517 1323 487 b 1201 171 1323 269 1260 219 b 1194 166 1201 171 1198 168 b 1056 327 1142 226 1063 317 b 1011 353 1043 343 1030 351 b 979 340 999 353 992 350 b 946 304 966 330 956 315 b 825 167 904 259 864 213 l 821 161 b 678 327 768 222 685 317 b 634 353 665 343 652 351 b 602 340 622 353 615 350 b 569 304 589 330 579 315 b 448 167 527 259 487 213 l 444 161 b 301 327 390 222 308 317 b 256 353 288 343 275 351 b 225 340 245 353 238 350 b 192 304 212 330 202 315 b 71 167 150 259 109 213 b 17 105 52 147 36 127 b 0 73 10 98 0 84 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 174 161 157 154 167 161 b 196 144 181 161 187 156 b 321 10 202 135 308 24 b 350 0 327 3 338 0 b 376 7 360 0 370 3 b 485 112 384 14 444 73 b 552 161 495 122 539 161 b 573 144 559 161 564 156 b 698 10 579 135 685 24 b 727 0 704 3 716 0 b 753 7 737 0 747 3 b 863 112 762 14 821 73 b 929 161 873 122 916 161 b 950 144 936 161 942 156 b 1076 10 956 135 1063 24 b 1104 0 1081 3 1093 0 b 1130 7 1115 0 1125 3 b 1236 108 1139 14 1195 69 b 1367 314 1297 160 1367 233 z', + }, + ornamentPrecompDoubleCadenceUpperPrefix: { + x_min: 0, + x_max: 1278, + y_min: 0, + y_max: 247, + ha: 247, + o: 'm 1801 356 b 1776 346 1793 356 1783 351 b 1642 192 1760 333 1659 206 b 1614 177 1630 181 1621 177 b 1591 190 1606 177 1597 184 b 1469 334 1578 203 1482 323 b 1430 356 1453 347 1441 356 b 1398 343 1420 356 1411 353 b 1365 307 1385 331 1377 318 l 1240 164 b 1097 330 1187 226 1104 320 b 1053 356 1084 346 1071 354 b 1021 343 1041 356 1034 353 b 988 307 1008 333 998 318 b 865 168 946 262 904 216 l 861 163 b 717 330 808 223 724 320 b 672 356 704 346 691 354 b 641 343 661 356 654 353 b 608 307 628 333 618 318 b 485 168 566 262 524 216 l 455 134 b 284 46 409 88 351 46 b 16 285 148 46 32 265 b 3 295 9 292 4 295 b 0 291 1 295 0 292 b 1 285 0 288 1 285 b 308 0 42 190 157 0 b 530 120 415 1 482 63 b 559 144 539 128 549 137 b 590 163 573 156 583 163 b 612 145 598 163 603 157 b 739 10 618 137 724 24 b 768 0 744 3 756 0 b 793 7 778 0 788 3 b 903 114 802 14 861 75 l 939 144 b 971 163 953 156 963 163 b 992 145 978 163 984 157 b 1119 10 998 137 1106 24 b 1148 0 1125 3 1136 0 b 1174 7 1158 0 1168 3 b 1284 114 1182 14 1241 75 b 1316 144 1282 115 1312 141 b 1348 161 1331 156 1339 161 b 1371 145 1355 161 1361 157 b 1496 10 1377 137 1485 24 b 1525 0 1502 3 1513 0 b 1552 7 1536 0 1547 3 b 1819 298 1562 17 1800 276 b 1840 330 1829 308 1840 320 b 1832 344 1840 334 1837 340 b 1801 356 1820 351 1810 356 z', + }, + ornamentPrecompDoubleCadenceUpperPrefixTurn: { + x_min: 0, + x_max: 1277, + y_min: -62, + y_max: 333, + ha: 395, + o: 'm 1273 202 l 1273 480 l 1230 480 l 1230 174 l 1097 328 b 1053 354 1084 344 1071 353 b 1021 341 1041 354 1034 351 b 988 305 1008 331 998 317 b 865 167 945 261 904 215 l 861 161 b 717 328 808 222 724 318 b 672 354 704 344 691 353 b 641 341 661 354 654 351 b 608 305 628 331 618 317 b 485 167 564 261 524 215 b 455 132 474 156 465 144 b 284 45 410 88 350 45 b 14 284 148 45 30 264 b 3 294 9 291 4 294 b 0 289 1 294 0 291 b 1 284 0 287 1 284 b 308 -1 42 189 157 -1 b 530 118 415 0 481 62 b 557 143 539 127 547 135 b 590 161 572 154 582 161 b 612 144 598 161 603 156 b 737 9 618 135 724 24 b 768 -1 743 1 755 -1 b 793 6 778 -1 788 1 b 903 112 802 13 861 73 l 937 143 b 971 161 953 154 963 161 b 992 144 978 161 984 156 b 1117 9 998 135 1104 24 b 1148 -1 1123 1 1136 -1 b 1174 6 1158 -1 1168 1 l 1230 60 l 1230 -89 l 1273 -89 l 1273 102 l 1283 112 b 1348 160 1295 125 1332 160 b 1371 144 1355 160 1361 156 b 1496 9 1377 135 1483 24 b 1525 -1 1502 1 1513 -1 b 1552 6 1536 -1 1547 1 b 1819 297 1562 16 1800 275 b 1839 328 1827 307 1839 320 b 1801 354 1839 343 1813 354 b 1776 344 1793 354 1783 350 b 1642 190 1760 331 1657 206 b 1614 176 1630 180 1621 176 b 1591 189 1606 176 1597 183 b 1467 333 1578 203 1480 321 b 1430 354 1453 346 1441 354 b 1398 341 1420 354 1411 351 b 1365 305 1385 330 1377 317 z', + }, + ornamentPrecompTrillLowerSuffix: { + x_min: 0, + x_max: 859, + y_min: -222, + y_max: 246, + ha: 468, + o: 'm 1164 217 b 1031 351 1138 259 1063 351 b 1011 337 1020 351 1024 347 b 828 167 952 291 886 217 l 824 164 b 683 328 772 225 690 318 b 638 354 670 344 657 353 b 606 341 626 354 619 351 b 573 305 593 331 583 317 b 451 167 530 261 490 215 l 446 161 b 302 328 393 222 310 318 b 258 354 289 344 276 353 b 226 341 246 354 239 351 b 193 305 213 331 203 317 b 71 167 150 261 109 215 b 17 105 52 147 36 127 b 0 73 10 98 0 84 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 176 161 157 154 168 161 b 197 144 183 161 189 156 b 323 9 203 135 310 23 b 353 -1 328 1 340 -1 b 379 6 363 -1 373 1 b 488 112 387 13 446 73 l 523 143 b 556 161 539 154 549 161 b 577 144 563 161 569 156 b 703 9 583 135 690 23 b 733 -1 708 1 721 -1 b 759 6 743 -1 753 1 b 868 112 768 13 827 73 b 955 183 878 122 943 183 b 1081 107 965 183 1031 153 b 1156 -89 1128 63 1156 6 l 1156 -102 b 948 -297 1156 -204 1048 -297 b 806 -271 904 -297 850 -282 l 792 -266 b 801 -288 792 -268 795 -282 b 948 -320 809 -297 880 -320 b 1237 -50 1092 -320 1237 -199 b 1164 217 1237 75 1218 122 z', + }, + brassScoop: { + x_min: 1, + x_max: 320, + y_min: -373, + y_max: 13, + ha: 386, + o: 'm 35 -537 b 461 -12 194 -518 461 -289 b 438 19 461 13 451 19 b 410 -9 425 19 413 9 b 35 -425 357 -366 92 -403 b 1 -482 13 -433 1 -438 l 1 -505 b 26 -537 1 -526 3 -537 z', + }, + brassDoitMedium: { + x_min: 0, + x_max: 489, + y_min: -40, + y_max: 346, + ha: 386, + o: 'm 33 -58 b 704 468 255 -58 683 186 b 681 498 704 494 693 498 b 654 471 668 498 658 488 b 33 55 550 118 91 76 b 0 -3 12 46 0 42 l 0 -26 b 24 -58 0 -46 1 -58 z', + }, + brassFallLipShort: { + x_min: 1, + x_max: 293, + y_min: -345, + y_max: 42, + ha: 387, + o: 'm 22 60 b 1 35 4 60 1 52 l 1 6 b 26 -50 3 -40 10 -43 b 32 -52 27 -50 30 -50 b 376 -469 85 -73 327 -111 b 400 -497 379 -487 387 -497 b 422 -467 412 -497 422 -491 b 32 60 422 -187 177 40 z', + }, + brassLiftMedium: { + x_min: 0, + x_max: 811, + y_min: 0, + y_max: 852, + ha: 852, + o: 'm 1138 1220 b 1135 1225 1135 1223 1135 1224 b 1129 1227 1133 1227 1130 1227 b 1117 1207 1122 1227 1117 1212 l 1117 1201 b 1109 1164 1117 1187 1117 1172 b 1100 1156 1107 1161 1104 1158 b 959 1104 1058 1128 995 1140 b 929 1032 936 1081 929 1056 b 932 1007 929 1024 930 1015 b 923 976 932 995 930 985 l 914 971 b 773 919 873 942 809 955 b 743 847 750 896 743 870 b 746 821 743 838 744 829 b 737 791 746 809 744 799 l 729 783 b 588 733 687 756 624 769 b 557 661 564 710 557 684 b 560 635 557 652 559 644 b 552 605 560 624 559 612 l 543 598 b 402 547 501 570 438 583 b 372 475 379 524 372 498 b 374 449 372 467 373 458 b 366 419 374 438 373 426 l 357 412 b 216 361 315 384 252 397 b 186 289 193 338 186 312 b 189 264 186 281 187 272 b 180 233 189 252 187 240 b 171 226 177 232 174 229 b 30 176 130 199 66 212 b 0 104 7 153 0 128 b 33 0 0 88 14 0 b 49 17 40 0 49 10 b 71 63 52 35 56 49 b 212 115 102 95 154 59 b 239 186 230 134 239 160 b 236 210 239 194 238 202 b 256 249 239 225 243 236 b 397 301 288 281 340 245 b 425 372 416 320 425 346 b 422 396 425 380 423 387 b 442 435 425 410 429 422 b 583 487 474 467 526 431 b 611 557 602 505 611 531 b 608 582 611 566 609 573 b 628 621 611 596 615 608 b 769 672 660 652 711 618 b 796 743 788 691 796 717 b 793 768 796 752 795 759 b 814 806 796 782 801 793 b 955 858 845 838 897 804 b 982 929 973 877 982 903 b 979 953 982 937 981 945 b 999 992 982 968 986 979 b 1140 1045 1031 1024 1083 989 b 1168 1116 1161 1066 1168 1090 b 1138 1220 1168 1162 1145 1207 z', + }, + brassFallRoughMedium: { + x_min: 0, + x_max: 811, + y_min: 0, + y_max: 852, + ha: 852, + o: 'm 30 1220 b 0 1116 23 1207 0 1162 b 27 1045 0 1090 7 1066 b 168 992 85 989 137 1024 b 189 953 181 979 186 968 b 186 929 187 945 186 937 b 213 858 186 903 194 877 b 354 806 271 804 323 838 b 374 768 367 793 372 782 b 372 743 373 759 372 752 b 399 672 372 717 380 691 b 540 621 456 618 508 652 b 560 582 553 608 557 596 b 557 557 559 573 557 566 b 585 487 557 531 566 505 b 726 435 642 431 694 467 b 746 396 739 422 743 410 b 743 372 744 387 743 380 b 770 301 743 346 752 320 b 912 249 828 245 880 281 b 932 210 924 236 929 225 b 929 186 930 202 929 194 b 956 115 929 160 937 134 b 1097 63 1014 59 1066 95 b 1119 17 1112 49 1116 35 b 1135 0 1119 10 1128 0 b 1168 104 1153 0 1168 91 b 1138 176 1168 128 1161 153 b 996 226 1102 212 1038 199 b 988 233 994 229 991 232 b 979 264 981 240 979 252 b 982 289 981 272 982 281 b 952 361 982 312 975 338 b 811 412 916 397 852 384 l 802 419 b 793 449 795 426 793 438 b 796 475 795 458 796 467 b 766 547 796 498 789 524 b 625 598 730 583 667 570 l 616 605 b 608 635 609 612 608 624 b 611 661 609 644 611 652 b 580 733 611 684 603 710 b 439 783 544 769 481 756 l 431 791 b 422 821 423 799 422 809 b 425 847 423 829 425 838 b 395 919 425 870 418 896 b 253 971 359 955 295 942 l 245 976 b 236 1007 238 985 236 995 b 239 1032 238 1015 239 1024 b 209 1104 239 1056 232 1081 b 68 1156 173 1140 109 1128 b 59 1164 63 1158 60 1161 b 50 1201 50 1172 50 1187 l 50 1207 b 39 1227 50 1212 46 1227 b 33 1225 37 1227 35 1227 b 30 1220 33 1224 33 1223 z', + }, + brassBend: { + x_min: 0, + x_max: 392, + y_min: 0, + y_max: 282, + ha: 282, + o: 'm 282 0 b 552 72 369 0 456 23 b 564 92 560 75 564 84 l 564 383 b 541 406 564 395 554 406 b 518 383 528 406 518 395 l 518 107 b 282 46 435 65 357 46 b 46 107 207 46 130 65 l 46 383 b 23 406 46 395 36 406 b 0 383 10 406 0 395 l 0 92 b 13 72 0 84 4 75 b 282 0 108 23 196 0 z', + }, + brassMuteClosed: { + x_min: 0, + x_max: 272, + y_min: 0, + y_max: 272, + ha: 272, + o: 'm 392 219 l 219 219 l 219 392 l 173 392 l 173 219 l 0 219 l 0 173 l 173 173 l 173 0 l 219 0 l 219 173 l 392 173 z', + }, + brassMuteOpen: { + x_min: 0, + x_max: 304, + y_min: 0, + y_max: 304, + ha: 304, + o: 'm 219 0 b 438 219 340 0 438 98 b 219 438 438 340 340 438 b 0 219 98 438 0 340 b 219 0 0 98 98 0 z m 219 392 b 392 219 314 392 392 314 b 219 46 392 124 314 46 b 46 219 124 46 46 124 b 219 392 46 314 124 392 z', + }, + brassFlip: { + x_min: 0, + x_max: 379, + y_min: 0, + y_max: 282, + ha: 282, + o: 'm 523 0 b 541 9 530 0 536 3 b 546 22 544 13 546 17 b 536 42 546 29 541 36 l 36 402 b 23 406 33 405 27 406 b 0 383 12 406 0 395 l 0 23 b 23 0 0 10 10 0 b 46 23 36 0 46 10 l 46 337 l 508 4 b 523 0 513 1 517 0 z', + }, + brassJazzTurn: { + x_min: 0, + x_max: 620, + y_min: 0, + y_max: 245, + ha: 245, + o: 'm 792 190 b 765 176 780 179 772 176 b 740 190 755 176 747 183 b 629 325 727 202 644 312 b 593 347 616 338 605 347 b 562 334 583 346 575 344 b 528 298 549 323 539 310 l 406 176 b 389 168 406 176 399 168 b 374 176 384 168 379 170 b 245 325 360 192 245 325 b 200 353 232 343 219 351 b 168 340 190 353 181 350 l 17 156 b 0 121 10 147 0 132 b 16 107 0 114 4 108 b 84 143 26 107 76 137 b 118 160 92 150 108 160 b 141 143 125 160 131 154 b 265 10 147 135 253 24 b 294 0 271 3 282 0 b 321 7 305 0 315 3 b 498 160 321 7 478 158 b 521 143 505 160 513 154 b 647 10 528 135 635 24 b 675 0 652 3 664 0 b 703 7 687 0 697 3 b 874 186 713 16 855 164 b 893 220 881 196 893 212 b 873 245 890 235 883 243 b 796 194 847 245 815 213 z', + }, + brassSmear: { + x_min: 1, + x_max: 306, + y_min: 0, + y_max: 170, + ha: 170, + o: 'm 193 79 b 308 0 219 50 264 0 b 439 117 396 0 438 102 b 439 120 439 118 439 118 l 441 125 b 441 128 441 127 441 127 b 433 141 441 135 439 141 b 416 130 429 141 423 137 b 343 94 390 107 370 94 b 269 153 315 94 294 121 l 265 158 b 144 245 239 190 180 245 b 6 134 62 245 10 143 b 1 114 3 125 1 118 b 7 107 1 108 4 107 b 36 122 13 107 22 112 b 92 151 55 137 65 151 b 183 89 125 151 161 112 b 189 84 184 88 187 86 z', + }, + stringsDownBow: { + x_min: 0, + x_max: 312, + y_min: 0, + y_max: 318, + ha: 318, + o: 'm 37 458 b 0 420 17 458 0 441 l 0 17 b 17 0 0 7 9 0 l 37 0 b 55 17 46 0 55 7 l 55 253 b 225 278 55 269 140 278 b 395 253 310 278 395 269 l 395 17 b 413 0 395 7 403 0 l 432 0 b 449 17 441 0 449 7 l 449 420 b 412 458 449 441 432 458 z', + }, + stringsUpBow: { + x_min: 1, + x_max: 249, + y_min: 1, + y_max: 495, + ha: 494, + o: 'm 181 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 z', + }, + stringsHarmonic: { + x_min: 0, + x_max: 200, + y_min: 0, + y_max: 200, + ha: 200, + o: 'm 288 144 b 144 288 288 225 223 288 b 0 144 65 288 0 225 b 144 0 0 65 65 0 b 288 144 223 0 288 65 z m 144 249 b 249 144 203 249 249 203 b 144 39 249 86 203 39 b 39 144 86 39 39 86 b 144 249 39 203 86 249 z', + }, + pluckedSnapPizzicatoAbove: { + x_min: 0, + x_max: 200, + y_min: 0, + y_max: 300, + ha: 300, + o: 'm 0 144 b 144 0 0 63 65 0 b 288 144 223 0 288 63 b 167 285 288 215 235 275 l 167 432 l 121 432 l 121 285 b 0 144 52 275 0 215 z m 121 246 l 121 144 l 167 144 l 167 246 b 249 144 213 236 249 193 b 144 39 249 85 202 39 b 39 144 85 39 39 85 b 121 246 39 193 73 236 z', + }, + pluckedSnapPizzicatoBelow: { + x_min: 0, + x_max: 200, + y_min: 0, + y_max: 300, + ha: 300, + o: 'm 288 288 b 144 432 288 369 223 432 b 0 288 65 432 0 369 b 121 145 0 216 52 157 l 121 0 l 167 0 l 167 145 b 288 288 235 157 288 216 z m 167 186 l 167 288 l 121 288 l 121 186 b 39 288 75 196 39 238 b 144 393 39 347 86 393 b 249 288 203 393 249 347 b 167 186 249 238 215 196 z', + }, + pluckedLeftHandPizzicato: { + x_min: 0, + x_max: 272, + y_min: 0, + y_max: 272, + ha: 272, + o: 'm 392 219 l 219 219 l 219 392 l 173 392 l 173 219 l 0 219 l 0 173 l 173 173 l 173 0 l 219 0 l 219 173 l 392 173 z', + }, + keyboardPedalPed: { + x_min: 0, + x_max: 1019, + y_min: -8, + y_max: 555, + ha: 563, + o: 'm 413 799 b 179 749 327 798 261 789 b 0 517 107 713 0 632 b 122 376 0 454 37 376 b 240 540 189 376 240 452 b 225 586 240 579 233 586 b 204 549 213 586 212 573 b 138 480 199 527 181 480 b 85 549 96 480 85 517 l 85 554 b 353 762 89 690 230 762 b 373 752 364 762 373 760 b 351 708 373 740 360 723 b 274 546 330 675 274 585 b 353 416 274 508 333 444 b 412 304 372 390 412 351 b 382 228 412 275 403 256 b 334 190 363 202 361 200 b 147 29 271 167 147 88 b 196 -12 147 4 171 -12 b 343 108 239 -12 279 33 l 363 132 b 387 150 370 141 376 150 b 543 -4 445 150 467 -4 b 631 42 567 -4 586 0 l 668 78 b 685 89 674 84 680 89 b 696 75 688 89 690 86 b 809 -9 717 29 753 -9 b 946 66 854 -9 894 13 b 988 107 971 92 981 107 b 1002 89 994 107 996 99 b 1152 -4 1030 36 1077 -4 b 1329 248 1238 -4 1329 82 b 792 717 1329 556 1047 665 b 766 720 785 719 775 720 b 747 703 752 720 747 711 b 780 680 747 693 756 685 b 1223 222 1028 621 1223 504 b 1152 39 1223 122 1205 39 b 1073 229 1104 39 1073 132 b 1132 423 1073 314 1086 377 b 1142 442 1140 432 1142 436 b 1126 458 1142 451 1136 458 b 1093 446 1119 458 1109 455 b 975 216 1022 408 975 337 l 975 190 b 943 121 975 160 972 150 b 852 69 899 76 877 69 b 776 148 816 69 786 117 b 773 163 775 154 773 158 b 786 177 773 167 776 170 l 801 187 b 937 366 867 235 937 284 b 844 454 937 422 900 454 b 665 217 711 454 665 331 b 671 153 665 197 667 176 l 671 147 b 662 134 671 143 670 140 b 605 111 639 118 625 111 b 521 160 572 111 546 135 b 451 203 497 184 474 197 b 426 212 435 207 426 206 b 436 230 426 216 429 220 b 510 389 464 269 510 340 b 429 521 510 435 480 462 b 369 629 387 570 369 599 b 402 720 369 648 384 691 b 462 763 425 759 446 763 b 611 624 540 763 611 704 b 564 575 611 592 590 575 b 501 602 540 575 520 582 b 474 622 492 611 487 622 b 459 603 465 622 459 615 b 603 471 459 570 510 471 b 711 588 670 471 711 524 b 422 799 711 742 554 799 z m 815 403 b 848 343 838 403 848 383 b 780 226 848 295 824 261 b 765 217 773 220 768 217 b 759 228 762 217 759 220 b 756 282 757 245 756 262 b 815 403 756 346 772 403 z m 1405 124 b 1344 62 1369 124 1344 98 b 1405 0 1344 26 1369 0 b 1467 62 1441 0 1467 26 b 1405 124 1467 98 1441 124 z', + }, + keyboardPedalUp: { + x_min: 0, + x_max: 450, + y_min: 0, + y_max: 450, + ha: 450, + o: 'm 582 396 b 516 367 554 396 533 384 b 465 340 495 347 487 340 l 458 340 b 412 377 432 340 412 348 b 432 409 412 387 419 396 l 438 415 b 490 429 451 428 464 429 b 575 501 534 429 575 452 b 501 575 575 541 541 575 b 429 490 452 575 429 534 b 415 438 429 464 428 451 l 409 432 b 377 412 396 419 387 412 b 340 458 348 412 340 432 l 340 465 b 367 516 340 487 347 495 b 396 582 384 533 396 554 b 324 648 396 625 363 648 b 252 582 285 648 252 625 b 281 516 252 554 264 533 b 308 465 301 495 308 487 l 308 458 b 271 412 308 432 300 412 b 239 432 261 412 252 419 l 233 438 b 219 490 220 451 219 464 b 147 575 219 534 196 575 b 73 501 107 575 73 541 b 158 429 73 452 114 429 b 210 415 184 429 197 428 l 216 409 b 236 377 229 396 236 387 b 190 340 236 348 216 340 l 183 340 b 132 367 161 340 153 347 b 66 396 115 384 94 396 b 0 324 23 396 0 363 b 66 252 0 285 23 252 b 132 281 94 252 115 264 b 183 308 153 301 161 308 l 190 308 b 236 271 216 308 236 300 b 216 239 236 261 229 252 l 210 233 b 158 219 197 220 184 219 b 73 147 114 219 73 196 b 147 73 73 107 107 73 b 219 158 196 73 219 114 b 233 210 219 184 220 197 l 239 216 b 271 236 252 229 261 236 b 308 190 300 236 308 216 l 308 183 b 281 132 308 161 301 153 b 252 66 264 115 252 94 b 324 0 252 23 285 0 b 396 66 363 0 396 23 b 367 132 396 94 384 115 b 340 183 347 153 340 161 l 340 190 b 377 236 340 216 348 236 b 409 216 387 236 396 229 l 415 210 b 429 158 428 197 429 184 b 501 73 429 114 452 73 b 575 147 541 73 575 107 b 490 219 575 196 534 219 b 438 233 464 219 451 220 l 432 239 b 412 271 419 252 412 261 b 458 308 412 300 432 308 l 465 308 b 516 281 487 308 495 301 b 582 252 533 264 554 252 b 648 324 625 252 648 285 b 582 396 648 363 625 396 z m 324 271 b 271 324 291 271 271 291 b 324 377 271 357 291 377 b 377 324 357 377 377 357 b 324 271 377 291 357 271 z', + }, + pictChokeCymbal: { + x_min: 1, + x_max: 152, + y_min: 2, + y_max: 251, + ha: 249, + o: 'm 104 361 b 1 271 42 361 1 321 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 17 32 29 26 26 l 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 z', + }, + wiggleArpeggiatoUp: { + x_min: -33, + x_max: 292, + y_min: 0, + y_max: 119, + ha: 119, + o: 'm 130 171 b -39 68 16 171 -14 91 b -48 53 -45 62 -48 58 b -29 42 -48 46 -39 42 b -10 46 -23 42 -16 43 b 56 63 12 56 29 63 b 248 0 121 63 135 0 b 419 127 361 0 410 104 b 420 132 420 130 420 131 b 412 140 420 137 416 140 b 386 130 403 140 392 134 b 334 107 367 117 353 107 b 318 108 330 107 324 107 b 240 138 289 112 265 128 b 130 171 209 153 168 171 z', + }, + arrowheadBlackUp: { + x_min: 0, + x_max: 228, + y_min: 0, + y_max: 299, + ha: 299, + o: 'm 166 431 b 0 20 111 274 0 30 b 16 0 0 12 6 0 l 17 1 b 166 50 43 16 160 50 b 310 1 171 50 289 13 l 311 0 b 328 20 321 0 328 12 b 166 431 328 30 220 274 z', + }, + arrowheadBlackDown: { + x_min: 0, + x_max: 228, + y_min: 0, + y_max: 299, + ha: 299, + o: 'm 166 0 b 328 410 220 157 328 400 b 311 431 328 419 321 431 l 310 429 b 166 380 289 418 171 380 b 17 429 160 380 43 415 l 16 431 b 0 410 6 431 0 419 b 166 0 0 400 111 157 z', + }, + arpeggiatoUp: { + x_min: 1, + x_max: 229, + y_min: 7, + y_max: 1511, + ha: 1504, + o: 'm 219 1848 l 330 1848 l 164 2176 l 1 1848 l 121 1848 b 92 1778 115 1822 101 1800 l 89 1773 b 59 1668 75 1741 59 1702 b 96 1555 59 1614 76 1580 b 99 1551 98 1554 99 1551 l 102 1547 b 124 1496 115 1531 124 1515 b 122 1482 124 1492 124 1488 b 92 1404 118 1453 102 1428 b 59 1293 78 1372 59 1332 b 105 1172 59 1234 81 1198 b 124 1120 118 1155 124 1143 l 122 1113 b 122 1110 122 1113 122 1112 b 92 1032 118 1081 102 1057 b 59 922 78 1001 59 960 b 115 792 59 855 86 816 b 124 760 121 782 124 773 b 122 744 124 756 124 750 b 92 667 118 716 102 693 b 59 556 78 635 59 595 b 108 433 59 495 82 458 b 124 389 117 420 124 408 b 122 374 124 384 124 379 b 92 298 118 346 102 323 l 89 292 b 59 186 75 261 59 222 b 163 19 59 73 140 42 b 177 10 168 13 173 10 b 189 29 184 10 189 19 b 184 48 189 35 187 42 b 167 114 174 69 167 85 b 230 305 167 179 229 193 b 181 423 230 357 209 396 b 167 484 173 442 167 458 b 230 675 167 547 229 563 b 179 796 230 729 206 769 b 167 850 171 812 167 827 b 230 1040 167 913 229 929 b 183 1158 230 1092 209 1130 b 167 1220 173 1178 167 1194 b 230 1411 167 1284 229 1300 b 186 1526 230 1462 210 1499 b 167 1594 176 1529 167 1584 b 230 1786 167 1659 229 1673 b 219 1848 230 1809 226 1829 z', + }, + arpeggiatoDown: { + x_min: 1, + x_max: 229, + y_min: -4, + y_max: 1500, + ha: 1504, + o: 'm 219 323 b 230 384 226 341 230 361 b 167 576 229 497 167 511 b 186 644 167 586 176 641 b 230 759 210 671 230 708 b 167 950 229 870 167 886 b 183 1012 167 976 173 992 b 230 1130 209 1040 230 1079 b 167 1320 229 1241 167 1257 b 179 1374 167 1344 171 1358 b 230 1495 206 1401 230 1441 b 167 1686 229 1607 167 1623 b 181 1747 167 1712 173 1728 b 230 1865 209 1774 230 1813 b 167 2056 229 1977 167 1992 b 184 2123 167 2085 174 2101 b 189 2141 187 2128 189 2136 b 177 2160 189 2151 184 2160 b 163 2151 173 2160 168 2157 b 59 1984 140 2128 59 2097 b 89 1878 59 1948 75 1909 l 92 1872 b 122 1796 102 1848 118 1824 b 124 1781 124 1791 124 1786 b 108 1737 124 1763 117 1750 b 59 1614 82 1712 59 1675 b 92 1503 59 1575 78 1535 b 122 1426 102 1477 118 1454 b 124 1410 124 1420 124 1414 b 115 1378 124 1397 121 1388 b 59 1248 86 1354 59 1315 b 92 1138 59 1210 78 1169 b 122 1060 102 1113 118 1089 b 122 1057 122 1058 122 1058 l 124 1050 b 105 998 124 1027 118 1015 b 59 877 81 972 59 936 b 92 766 59 838 78 798 b 122 688 102 742 118 717 b 124 674 124 683 124 678 b 102 624 124 655 115 639 l 99 619 b 96 615 99 619 98 616 b 59 503 76 590 59 556 b 89 397 59 468 75 429 l 92 392 b 121 323 101 370 115 348 l 1 323 l 164 -6 l 330 323 z', + }, + repeat1Bar: { + x_min: 0, + x_max: 532, + y_min: -250, + y_max: 279, + ha: 529, + o: 'm 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 675 -71 b 586 -161 626 -71 586 -111 b 675 -251 586 -210 626 -251 b 766 -161 726 -251 766 -210 b 675 -71 766 -111 726 -71 z', + }, + repeat2Bars: { + x_min: 0, + x_max: 762, + y_min: -250, + y_max: 279, + ha: 529, + o: 'm 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 b 343 -360 331 -356 336 -360 l 485 -360 b 516 -340 498 -360 508 -348 z m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 1007 -71 b 917 -161 958 -71 917 -111 b 1007 -251 917 -210 958 -251 b 1097 -161 1057 -251 1097 -210 b 1007 -71 1097 -111 1057 -71 z', + }, + repeat4Bars: { + x_min: 0, + x_max: 1232, + y_min: -250, + y_max: 279, + ha: 529, + o: 'm 1767 380 b 1774 395 1771 386 1774 390 b 1765 402 1774 399 1771 402 l 1613 402 b 1587 380 1604 402 1597 393 l 1012 -340 b 1008 -350 1009 -343 1008 -347 b 1020 -360 1008 -356 1012 -360 l 1162 -360 b 1192 -340 1175 -360 1185 -348 z m 1436 380 b 1443 395 1440 386 1443 390 b 1434 402 1443 399 1440 402 l 1282 402 b 1256 380 1273 402 1266 393 l 681 -340 b 677 -350 678 -343 677 -347 b 688 -360 677 -356 681 -360 l 831 -360 b 861 -340 844 -360 854 -348 z m 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 b 343 -360 331 -356 336 -360 l 485 -360 b 516 -340 498 -360 508 -348 z m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 1683 -71 b 1594 -161 1634 -71 1594 -111 b 1683 -251 1594 -210 1634 -251 b 1774 -161 1734 -251 1774 -210 b 1683 -71 1774 -111 1734 -71 z', + }, + repeatBarSlash: { + x_min: 0, + x_max: 532, + y_min: -250, + y_max: 279, + ha: 529, + o: 'm 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z', + }, + csymDiminished: { + x_min: 0, + x_max: 473, + y_min: 0, + y_max: 473, + ha: 473, + o: 'm 341 681 b 0 341 153 681 0 530 b 341 0 0 153 153 0 b 681 341 530 0 681 153 b 341 681 681 530 530 681 z m 341 618 b 618 341 495 618 618 495 b 341 63 618 189 494 63 b 63 341 187 63 63 187 b 341 618 63 494 189 618 z', + }, + csymHalfDiminished: { + x_min: -16, + x_max: 488, + y_min: -15, + y_max: 489, + ha: 504, + o: 'm 703 660 l 658 704 l 557 603 b 340 681 498 652 422 681 b -1 341 151 681 -1 530 b 78 124 -1 259 29 183 l -23 23 l 22 -22 l 122 79 b 340 0 181 30 258 0 b 680 341 528 0 680 153 b 602 559 680 423 651 500 z m 62 341 b 340 618 62 494 187 618 b 513 559 403 618 464 598 l 122 168 b 62 341 84 217 62 278 z m 616 341 b 340 63 616 189 492 63 b 167 124 276 63 216 85 l 557 514 b 616 341 596 465 616 405 z', + }, + csymAugmented: { + x_min: 0, + x_max: 395, + y_min: 1, + y_max: 396, + ha: 395, + o: 'm 569 318 l 317 318 l 317 570 l 253 570 l 253 318 l 0 318 l 0 255 l 253 255 l 253 1 l 317 1 l 317 255 l 569 255 z', + }, + csymMajorSeventh: { + x_min: 0, + x_max: 558, + y_min: 1, + y_max: 477, + ha: 476, + o: 'm 402 687 l 0 1 l 804 1 z m 402 562 l 693 65 l 111 65 z', + }, + csymMinor: { + x_min: 0, + x_max: 325, + y_min: 216, + y_max: 260, + ha: 44, + o: 'm 468 374 l 0 374 l 0 311 l 468 311 z', + }, + csymParensLeftTall: { + x_min: 1, + x_max: 185, + y_min: 0, + y_max: 997, + ha: 997, + o: 'm 266 48 b 261 65 266 55 264 62 b 92 719 157 212 92 400 b 262 1371 92 1037 154 1228 b 266 1394 266 1378 266 1394 l 266 1424 b 264 1436 266 1431 266 1436 b 259 1434 262 1436 259 1434 b 1 719 84 1261 1 1011 b 259 1 1 429 79 177 b 264 0 261 0 262 0 b 266 9 265 0 266 6 z', + }, + csymParensRightTall: { + x_min: -20, + x_max: 164, + y_min: 0, + y_max: 997, + ha: 997, + o: 'm -29 9 b -26 0 -29 6 -27 0 b -22 1 -24 0 -23 0 b 236 719 158 177 236 429 b -22 1434 236 1011 154 1261 b -26 1436 -22 1434 -24 1436 b -29 1424 -29 1436 -29 1431 l -29 1394 b -24 1371 -29 1394 -29 1378 b 145 719 84 1228 145 1037 b -23 65 145 400 81 212 b -29 48 -26 62 -29 55 z', + }, + csymBracketLeftTall: { + x_min: 0, + x_max: 155, + y_min: 0, + y_max: 1000, + ha: 1000, + o: 'm 217 0 b 223 9 220 0 223 4 l 223 37 b 217 46 223 42 220 46 l 92 46 l 92 1394 l 217 1394 b 223 1403 220 1394 223 1398 l 223 1431 b 217 1440 223 1436 220 1440 l 6 1440 b 0 1436 3 1440 0 1439 l 0 4 b 6 0 0 1 3 0 z', + }, + csymBracketRightTall: { + x_min: 1, + x_max: 156, + y_min: 0, + y_max: 1000, + ha: 1000, + o: 'm 219 0 b 225 4 222 0 225 1 l 225 1436 b 219 1440 225 1439 222 1440 l 7 1440 b 1 1431 4 1440 1 1436 l 1 1403 b 7 1394 1 1398 4 1394 l 132 1394 l 132 46 l 7 46 b 1 37 4 46 1 42 l 1 9 b 7 0 1 4 4 0 z', + }, + csymParensLeftVeryTall: { + x_min: 0, + x_max: 122, + y_min: 0, + y_max: 993, + ha: 993, + o: 'm 176 32 b 171 49 176 39 174 46 b 60 716 104 194 60 399 b 173 1382 60 1032 101 1241 b 176 1405 176 1390 176 1405 l 176 1427 b 173 1430 176 1428 174 1430 b 0 716 40 1297 0 978 b 170 3 0 428 50 179 b 171 0 170 1 170 0 b 176 6 173 0 176 4 z', + }, + csymParensRightVeryTall: { + x_min: -15, + x_max: 107, + y_min: 0, + y_max: 993, + ha: 993, + o: 'm -22 6 b -17 0 -22 4 -19 0 b -16 3 -16 0 -16 1 b 154 716 104 179 154 428 b -19 1430 154 978 114 1297 b -22 1427 -20 1430 -22 1428 l -22 1405 b -19 1382 -22 1405 -22 1390 b 94 716 53 1241 94 1032 b -17 49 94 399 50 194 b -22 32 -20 46 -22 39 z', + }, + csymDiagonalArrangementSlash: { + x_min: 0, + x_max: 999, + y_min: 0, + y_max: 1000, + ha: 1000, + o: 'm 1439 1380 l 1377 1440 l 0 60 l 62 0 z', + }, + accSagittal5v7KleismaUp: { + x_min: 0, + x_max: 156, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 -35 b 135 -112 68 -86 99 -112 b 225 68 194 -112 225 -53 l 180 68 b 144 -4 180 20 168 -4 b 122 0 138 -4 131 -3 b 23 248 86 14 52 96 l 0 248 z', + }, + accSagittal5v7KleismaDown: { + x_min: 0, + x_max: 156, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 23 -248 b 122 0 52 -96 86 -14 b 144 4 131 3 138 4 b 180 -68 168 4 180 -20 l 225 -68 b 135 112 225 53 194 112 b 45 35 99 112 68 86 l 45 517 l 0 517 z', + }, + accSagittal5CommaUp: { + x_min: 0, + x_max: 156, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 225 -517 l 225 248 l 203 248 l 0 -112 l 0 -284 l 180 33 l 180 -517 z', + }, + accSagittal5CommaDown: { + x_min: 0, + x_max: 156, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 180 517 l 180 -33 l 0 284 l 0 112 l 203 -248 l 225 -248 l 225 517 z', + }, + accSagittal7CommaUp: { + x_min: 0, + x_max: 156, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 248 l 0 -517 l 45 -517 l 45 112 l 89 112 b 180 -68 150 112 180 53 l 180 -248 l 225 -248 l 225 68 b 135 248 225 187 194 248 z', + }, + accSagittal7CommaDown: { + x_min: 0, + x_max: 156, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 135 -248 b 225 -68 194 -248 225 -187 l 225 248 l 180 248 l 180 68 b 89 -112 180 -53 150 -112 l 45 -112 l 45 517 l 0 517 l 0 -248 z', + }, + accSagittal25SmallDiesisUp: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -157 l 0 -259 l 315 -89 l 315 -517 l 360 -517 l 360 248 l 337 248 l 0 68 l 0 -33 l 315 135 l 315 10 z', + }, + accSagittal25SmallDiesisDown: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 315 -10 l 315 -135 l 0 33 l 0 -68 l 337 -248 l 360 -248 l 360 517 l 315 517 l 315 89 l 0 259 l 0 157 z', + }, + accSagittal35MediumDiesisUp: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -68 330 112 360 53 l 360 -248 l 405 -248 l 405 68 b 315 248 405 187 374 248 l 203 248 l 0 -112 z', + }, + accSagittal35MediumDiesisDown: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 112 l 203 -248 l 315 -248 b 405 -68 374 -248 405 -187 l 405 248 l 360 248 l 360 68 b 271 -112 360 -53 330 -112 l 225 -112 l 225 517 l 180 517 l 180 -33 l 0 284 z', + }, + accSagittal11MediumDiesisUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 225 53 l 225 -517 l 271 -517 l 271 53 l 495 -248 l 495 -89 l 248 248 l 0 -89 l 0 -248 z', + }, + accSagittal11MediumDiesisDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 248 l 0 89 l 248 -248 l 495 89 l 495 248 l 271 -53 l 271 517 l 225 517 l 225 -53 z', + }, + accSagittal11LargeDiesisUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 112 l 315 112 b 449 -68 405 112 449 53 l 449 -248 l 495 -248 l 495 68 b 360 248 495 187 449 248 l 135 248 b 0 68 45 248 0 187 z', + }, + accSagittal11LargeDiesisDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 360 -248 b 495 -68 449 -248 495 -187 l 495 248 l 449 248 l 449 68 b 315 -112 449 -53 405 -112 l 271 -112 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z', + }, + accSagittal35LargeDiesisUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 l 540 112 l 540 274 l 271 -58 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z', + }, + accSagittal35LargeDiesisDown: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 l 540 112 l 540 274 l 269 -58 l 269 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z', + }, + accSagittalSharp25SDown: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 b 112 -112 0 -53 36 -112 l 135 -112 l 135 -517 l 180 -517 l 180 -89 b 248 26 206 -65 229 -27 b 315 -89 264 -27 287 -65 l 315 -517 l 360 -517 l 360 -112 l 383 -112 b 495 68 458 -112 495 -53 l 449 68 b 399 -4 449 20 433 -4 b 248 248 297 -4 261 171 b 122 0 216 96 176 14 b 94 -4 112 -3 102 -4 b 45 68 60 -4 45 20 z', + }, + accSagittalFlat25SUp: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -68 b 94 4 45 -20 60 4 b 122 0 102 4 112 3 b 248 -248 176 -14 216 -96 b 399 4 261 -171 297 4 b 449 -68 433 4 449 -20 l 495 -68 b 383 112 495 53 458 112 l 360 112 l 360 517 l 315 517 l 315 89 b 248 -26 287 65 264 27 b 180 89 229 27 206 65 l 180 517 l 135 517 l 135 112 l 112 112 b 0 -68 36 112 0 53 z', + }, + accSagittalSharp7CDown: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 112 l 89 112 b 180 104 124 112 154 109 l 180 -517 l 225 -517 l 225 89 b 315 -68 285 60 315 9 l 315 -248 l 360 -248 l 360 68 b 135 248 360 187 285 248 l 0 248 z', + }, + accSagittalFlat7CUp: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 135 -248 b 360 -68 285 -248 360 -187 l 360 248 l 315 248 l 315 68 b 225 -89 315 -9 285 -60 l 225 517 l 180 517 l 180 -104 b 89 -112 154 -109 124 -112 l 45 -112 l 45 517 l 0 517 z', + }, + accSagittalSharp5CDown: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -517 l 45 71 l 180 -56 l 180 -517 l 225 -517 l 225 -98 l 405 -268 l 405 -112 l 23 248 l 0 248 l 0 -517 z', + }, + accSagittalFlat5CUp: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 517 l 0 -248 l 23 -248 l 405 112 l 405 268 l 225 98 l 225 517 l 180 517 l 180 56 l 45 -71 l 45 517 z', + }, + accSagittalSharp5v7kDown: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -112 l 0 -276 l 135 -82 l 135 -517 l 180 -517 l 180 -17 l 271 112 l 315 112 l 315 -517 l 360 -517 l 360 107 b 449 -68 420 89 449 30 l 449 -248 l 495 -248 l 495 68 b 360 248 495 189 449 248 l 248 248 z', + }, + accSagittalFlat5v7kUp: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 248 -248 l 360 -248 b 495 -68 449 -248 495 -189 l 495 248 l 449 248 l 449 68 b 360 -107 449 -30 420 -89 l 360 517 l 315 517 l 315 -112 l 271 -112 l 180 17 l 180 517 l 135 517 l 135 82 l 0 276 l 0 112 z', + }, + accSagittalSharp: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 180 -53 l 180 -517 l 225 -517 l 225 0 l 292 85 l 360 0 l 360 -517 l 405 -517 l 405 -53 l 585 -274 l 585 -112 l 292 248 l 0 -112 l 0 -274 z', + }, + accSagittalFlat: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 274 l 0 112 l 292 -248 l 585 112 l 585 274 l 405 53 l 405 517 l 360 517 l 360 0 l 292 -85 l 225 0 l 225 517 l 180 517 l 180 53 z', + }, + accSagittalSharp5v7kUp: { + x_min: 0, + x_max: 312, + y_min: -361, + y_max: 172, + ha: 533, + o: 'm 45 -517 l 45 -10 b 135 -92 68 -48 98 -75 l 135 -520 l 180 -520 l 180 -108 b 248 -115 203 -112 225 -115 b 271 -112 256 -115 264 -115 l 271 -517 l 315 -517 l 315 -107 b 449 68 405 -89 449 -30 l 405 68 b 297 -4 405 19 369 -4 b 23 248 131 -4 56 85 l 0 248 l 0 -517 z', + }, + accSagittalFlat5v7kDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 361, + ha: 533, + o: 'm 0 517 l 0 -248 l 23 -248 b 297 4 56 -85 131 4 b 405 -68 369 4 405 -19 l 449 -68 b 315 107 449 30 405 89 l 315 517 l 271 517 l 271 112 b 248 115 264 115 256 115 b 180 108 225 115 203 112 l 180 520 l 135 520 l 135 92 b 45 10 98 75 68 48 l 45 517 z', + }, + accSagittalSharp5CUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -266 l 135 -153 l 135 -517 l 180 -517 l 180 -115 l 271 -39 l 271 -517 l 315 -517 l 315 0 l 405 75 l 405 -517 l 449 -517 l 449 248 l 428 248 l 0 -112 z', + }, + accSagittalFlat5CDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 112 l 428 -248 l 449 -248 l 449 517 l 405 517 l 405 -75 l 315 0 l 315 517 l 271 517 l 271 39 l 180 115 l 180 517 l 135 517 l 135 153 l 0 266 z', + }, + accSagittalSharp7CUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 112 l 135 112 l 135 -517 l 180 -517 l 180 108 b 271 89 213 105 243 99 l 271 -517 l 315 -517 l 315 73 b 405 -68 374 45 405 -3 l 405 -248 l 449 -248 l 449 68 b 135 248 449 187 346 248 l 0 248 z', + }, + accSagittalFlat7CDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 135 -248 b 449 -68 346 -248 449 -187 l 449 248 l 405 248 l 405 68 b 315 -73 405 3 374 -45 l 315 517 l 271 517 l 271 -89 b 180 -108 243 -99 213 -105 l 180 517 l 135 517 l 135 -112 l 45 -112 l 45 517 l 0 517 z', + }, + accSagittalSharp25SUp: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -30 l 495 143 l 495 14 l 0 -157 l 0 -255 l 225 -177 l 225 -517 l 271 -517 l 271 -161 l 360 -130 l 360 -517 l 405 -517 l 405 -115 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 517 248 l 0 68 z', + }, + accSagittalFlat25SDown: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 l 517 -248 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 115 l 405 517 l 360 517 l 360 130 l 271 161 l 271 517 l 225 517 l 225 177 l 0 255 l 0 157 l 495 -14 l 495 -143 l 0 30 z', + }, + accSagittalSharp35MUp: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -112 l 0 -274 l 135 -108 l 135 -517 l 180 -517 l 180 -53 l 271 58 l 271 -517 l 315 -517 l 315 112 l 360 112 b 405 109 376 112 390 112 l 405 -517 l 449 -517 l 449 96 b 540 -68 510 72 540 17 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 z', + }, + accSagittalFlat35MDown: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 292 -248 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 449 -96 540 -17 510 -72 l 449 517 l 405 517 l 405 -109 b 360 -112 390 -112 376 -112 l 315 -112 l 315 517 l 271 517 l 271 -58 l 180 53 l 180 517 l 135 517 l 135 108 l 0 274 l 0 112 z', + }, + accSagittalSharp11MUp: { + x_min: 0, + x_max: 469, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -112 l 0 -271 l 180 -79 l 180 -517 l 225 -517 l 225 -30 l 315 65 l 315 -517 l 360 -517 l 360 65 l 449 -30 l 449 -517 l 495 -517 l 495 -79 l 675 -271 l 675 -112 l 337 248 z', + }, + accSagittalFlat11MDown: { + x_min: 0, + x_max: 469, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 337 -248 l 675 112 l 675 271 l 495 79 l 495 517 l 449 517 l 449 30 l 360 -65 l 360 517 l 315 517 l 315 -65 l 225 30 l 225 517 l 180 517 l 180 79 l 0 271 l 0 112 z', + }, + accSagittalSharp11LUp: { + x_min: 0, + x_max: 469, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 112 l 449 112 l 449 -517 l 495 -517 l 495 104 b 631 -68 585 82 631 26 l 631 -248 l 675 -248 l 675 68 b 449 248 675 187 600 248 l 225 248 b 0 68 75 248 0 187 z', + }, + accSagittalFlat11LDown: { + x_min: 0, + x_max: 469, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 449 -248 b 675 -68 600 -248 675 -187 l 675 248 l 631 248 l 631 68 b 495 -104 631 -26 585 -82 l 495 517 l 449 517 l 449 -112 l 360 -112 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z', + }, + accSagittalSharp35LUp: { + x_min: 0, + x_max: 500, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 71 l 452 -17 l 452 -517 l 495 -517 l 495 -56 l 720 -268 l 720 -112 l 337 248 l 225 248 b 0 68 75 248 0 187 z', + }, + accSagittalFlat35LDown: { + x_min: 0, + x_max: 500, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 l 720 112 l 720 268 l 495 56 l 495 517 l 452 517 l 452 17 l 360 -71 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z', + }, + accSagittalDoubleSharp25SDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 b 135 -112 0 -53 45 -112 b 243 -62 180 -112 215 -95 l 89 -503 l 143 -517 l 292 -82 l 445 -517 l 495 -503 l 343 -62 b 449 -112 372 -95 408 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 315 148 b 112 -4 274 148 236 -4 b 45 68 68 -4 45 20 z', + }, + accSagittalDoubleFlat25SUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -68 b 112 4 45 -20 68 4 b 292 -248 236 4 274 -148 b 475 4 315 -148 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 b 343 62 408 112 372 95 l 495 503 l 445 517 l 292 82 l 143 517 l 89 503 l 243 62 b 135 112 215 95 180 112 b 0 -68 45 112 0 53 z', + }, + accSagittalDoubleSharp7CDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -503 l 52 -517 l 203 -82 l 354 -517 l 405 -503 l 230 0 l 271 108 b 495 -68 420 92 495 35 l 495 -248 l 540 -248 l 540 68 b 225 248 540 187 435 248 l 89 248 l 89 112 l 135 112 l 174 0 z m 213 112 l 203 82 l 192 112 z', + }, + accSagittalDoubleFlat7CUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 174 0 l 135 -112 l 89 -112 l 89 -248 l 225 -248 b 540 -68 435 -248 540 -187 l 540 248 l 495 248 l 495 68 b 271 -108 495 -35 420 -92 l 230 0 l 405 503 l 354 517 l 203 82 l 52 517 l 0 503 z m 192 -112 l 203 -82 l 213 -112 z', + }, + accSagittalDoubleSharp5CDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 405 -503 l 230 0 l 232 4 l 585 -264 l 585 -112 l 112 248 l 89 248 l 89 112 l 151 68 l 174 0 l 0 -503 l 52 -517 l 203 -82 l 354 -517 z', + }, + accSagittalDoubleFlat5CUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 354 517 l 203 82 l 52 517 l 0 503 l 174 0 l 151 -68 l 89 -112 l 89 -248 l 112 -248 l 585 112 l 585 264 l 232 -4 l 230 0 l 405 503 z', + }, + accSagittalDoubleSharp5v7kDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -274 l 252 35 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 360 112 b 540 -68 480 112 540 53 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 l 0 -112 z', + }, + accSagittalDoubleFlat5v7kUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 112 l 292 -248 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 360 -112 540 -53 480 -112 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 252 -35 l 0 274 z', + }, + accSagittalDoubleSharp: { + x_min: 0, + x_max: 469, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 540 -503 l 366 0 l 380 45 l 675 -271 l 675 -112 l 337 248 l 0 -112 l 0 -271 l 295 45 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 z', + }, + accSagittalDoubleFlat: { + x_min: 0, + x_max: 469, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 295 -45 l 0 271 l 0 112 l 337 -248 l 675 112 l 675 271 l 380 -45 l 366 0 l 540 503 z', + }, + accSagittal7v11KleismaUp: { + x_min: 0, + x_max: 219, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 68 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 -45 b 248 -112 200 -89 225 -112 b 315 68 292 -112 315 -53 l 271 68 b 248 -4 271 20 264 -4 b 236 0 245 -4 240 -3 b 157 248 213 14 187 96 b 78 0 127 96 101 14 b 65 -4 73 -3 68 -4 b 45 68 50 -4 45 20 l 0 68 b 68 -112 0 -53 23 -112 z', + }, + accSagittal7v11KleismaDown: { + x_min: 0, + x_max: 219, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 68 112 b 0 -68 23 112 0 53 l 45 -68 b 65 4 45 -20 50 4 b 78 0 68 4 73 3 b 157 -248 101 -14 127 -96 b 236 0 187 -96 213 -14 b 248 4 240 3 245 4 b 271 -68 264 4 271 -20 l 315 -68 b 248 112 315 53 292 112 b 180 45 225 112 200 89 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 z', + }, + accSagittal17CommaUp: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 -40 b 315 -118 248 -92 279 -118 b 405 62 374 -118 405 -59 l 360 62 b 324 -10 360 14 348 -10 b 302 -6 318 -10 311 -9 b 206 217 268 9 235 84 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z', + }, + accSagittal17CommaDown: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 206 -217 b 302 6 235 -84 268 -9 b 324 10 311 9 318 10 b 360 -62 348 10 360 -14 l 405 -62 b 315 118 405 59 374 118 b 225 40 279 118 248 92 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z', + }, + accSagittal55CommaUp: { + x_min: 0, + x_max: 219, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 248 l 0 -517 l 45 -517 l 45 58 l 315 -274 l 315 -112 l 23 248 z', + }, + accSagittal55CommaDown: { + x_min: 0, + x_max: 219, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 23 -248 l 315 112 l 315 274 l 45 -58 l 45 517 l 0 517 l 0 -248 z', + }, + accSagittal7v11CommaUp: { + x_min: 0, + x_max: 188, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 248 l 135 248 b 0 68 45 248 0 187 z', + }, + accSagittal7v11CommaDown: { + x_min: 0, + x_max: 188, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 271 -248 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z', + }, + accSagittal5v11SmallDiesisUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 73 l 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 -40 b 360 -118 295 -92 325 -118 b 449 62 420 -118 449 -59 l 405 62 b 369 -10 405 14 393 -10 b 348 -6 363 -10 356 -9 b 251 217 312 9 279 84 l 248 248 l 135 248 b 0 73 45 248 0 189 z', + }, + accSagittal5v11SmallDiesisDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -73 b 135 -248 0 -189 45 -248 l 248 -248 l 251 -217 b 348 6 279 -84 312 -9 b 369 10 356 9 363 10 b 405 -62 393 10 405 -14 l 449 -62 b 360 118 449 59 420 118 b 271 40 325 118 295 92 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z', + }, + accSagittalSharp5v11SDown: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 242 37 203 -23 225 -3 b 315 -89 262 -23 285 -63 l 315 -517 l 360 -517 l 360 -112 l 383 -112 b 495 68 458 -112 495 -53 l 449 68 b 399 -4 449 20 433 -4 b 248 248 297 -4 261 171 b 157 68 222 127 192 68 l 89 68 b 0 -203 30 68 0 -23 z', + }, + accSagittalFlat5v11SUp: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -127 b 399 4 261 -171 297 4 b 449 -68 433 4 449 -20 l 495 -68 b 383 112 495 53 458 112 l 360 112 l 360 517 l 315 517 l 315 89 b 242 -37 285 63 262 23 b 180 23 225 3 203 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z', + }, + accSagittalSharp7v11CDown: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 89 -112 l 89 -517 l 135 -517 l 135 -95 b 206 37 163 -73 187 -30 b 271 -23 225 -3 248 -23 l 271 -517 l 315 -517 l 315 -23 l 383 -23 b 449 -203 428 -23 449 -84 l 495 -203 b 405 68 495 -23 465 68 l 292 68 b 203 248 258 68 228 127 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 20 l 0 68 b 89 -112 0 -52 30 -112 z', + }, + accSagittalFlat7v11CUp: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 89 112 b 0 -68 30 112 0 52 l 45 -68 b 81 3 45 -20 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 b 292 -68 228 -127 258 -68 l 405 -68 b 495 203 465 -68 495 23 l 449 203 b 383 23 449 84 428 23 l 315 23 l 315 517 l 271 517 l 271 23 b 206 -37 248 23 225 3 b 135 95 187 30 163 73 l 135 517 l 89 517 z', + }, + accSagittalSharp55CDown: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -271 l 135 -125 l 135 -517 l 180 -517 l 180 -78 l 315 65 l 315 -517 l 360 -517 l 360 248 l 337 248 l 0 -112 z', + }, + accSagittalFlat55CUp: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 112 l 337 -248 l 360 -248 l 360 517 l 315 517 l 315 -65 l 180 78 l 180 517 l 135 517 l 135 125 l 0 271 z', + }, + accSagittalSharp17CDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -248 l 45 -68 b 180 109 45 36 89 95 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -89 292 13 321 -55 l 360 -517 l 405 -517 l 405 -112 l 428 -112 b 540 68 504 -112 540 -53 l 495 68 b 445 -4 495 20 480 -4 b 292 248 343 -4 307 171 l 180 248 b 0 68 60 248 0 187 l 0 -248 z', + }, + accSagittalFlat17CUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 248 l 0 -68 b 180 -248 0 -187 60 -248 l 292 -248 b 445 4 307 -171 343 4 b 495 -68 480 4 495 -20 l 540 -68 b 428 112 540 53 504 112 l 405 112 l 405 517 l 360 517 l 360 89 b 271 -112 321 55 292 -13 l 225 -112 l 225 517 l 180 517 l 180 -109 b 45 68 89 -95 45 -36 l 45 248 z', + }, + accSagittalSharp7v11kDown: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -32 l 405 138 l 405 13 l 0 -157 l 0 -256 l 225 -161 l 225 -517 l 271 -517 l 271 -144 l 405 -86 l 405 -517 l 449 -517 l 449 248 l 428 248 l 0 68 z', + }, + accSagittalFlat7v11kUp: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 l 428 -248 l 449 -248 l 449 517 l 405 517 l 405 86 l 271 144 l 271 517 l 225 517 l 225 161 l 0 256 l 0 157 l 405 -13 l 405 -138 l 0 32 z', + }, + accSagittalSharp7v11kUp: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 135 -112 l 135 -517 l 180 -517 l 180 -105 b 271 -23 217 -94 248 -65 l 271 -517 l 315 -517 l 315 -23 b 405 -105 337 -65 369 -94 l 405 -517 l 449 -517 l 449 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 315 148 b 112 -4 274 148 236 -4 b 45 68 68 -4 45 20 l 0 68 b 135 -112 0 -53 45 -112 z', + }, + accSagittalFlat7v11kDown: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 135 112 b 0 -68 45 112 0 53 l 45 -68 b 112 4 45 -20 68 4 b 292 -248 236 4 274 -148 b 475 4 315 -148 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 l 449 517 l 405 517 l 405 105 b 315 23 369 94 337 65 l 315 517 l 271 517 l 271 23 b 180 105 248 65 217 94 l 180 517 l 135 517 z', + }, + accSagittalSharp17CUp: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 -23 b 405 -105 337 -65 369 -94 l 405 -517 l 449 -517 l 449 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 312 150 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z', + }, + accSagittalFlat17CDown: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 b 475 4 312 -150 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 l 449 517 l 405 517 l 405 105 b 315 23 369 94 337 65 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalSharp55CUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -517 l 45 78 l 135 10 l 135 -517 l 180 -517 l 180 -23 l 271 -92 l 271 -517 l 315 -517 l 315 -127 l 495 -264 l 495 -112 l 23 248 l 0 248 l 0 -517 z', + }, + accSagittalFlat55CDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 517 l 0 -248 l 23 -248 l 495 112 l 495 264 l 315 127 l 315 517 l 271 517 l 271 92 l 180 23 l 180 517 l 135 517 l 135 -10 l 45 -78 l 45 517 z', + }, + accSagittalSharp7v11CUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 86 45 6 89 58 l 180 -517 l 225 -517 l 225 98 b 315 109 252 104 282 108 l 315 -517 l 360 -517 l 360 112 l 449 112 l 449 -517 l 495 -517 l 495 248 l 360 248 b 0 68 121 248 0 189 z', + }, + accSagittalFlat7v11CDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 360 -248 0 -189 121 -248 l 495 -248 l 495 517 l 449 517 l 449 -112 l 360 -112 l 360 517 l 315 517 l 315 -109 b 225 -98 282 -108 252 -104 l 225 517 l 180 517 l 180 -86 b 45 68 89 -58 45 -6 l 45 248 l 0 248 z', + }, + accSagittalSharp5v11SUp: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 -23 b 449 -105 383 -65 415 -94 l 449 -517 l 495 -517 l 495 -112 b 631 68 585 -112 631 -53 l 585 68 b 520 -4 585 20 563 -4 b 337 248 396 -4 360 150 l 225 248 b 0 68 76 248 0 187 z', + }, + accSagittalFlat5v11SDown: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 225 -248 0 -187 76 -248 l 337 -248 b 520 4 360 -150 396 4 b 585 -68 563 4 585 -20 l 631 -68 b 495 112 631 53 585 112 l 495 517 l 449 517 l 449 105 b 360 23 415 94 383 65 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z', + }, + accSagittalDoubleSharp5v11SDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 341 -60 b 449 -112 370 -95 405 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 312 150 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z', + }, + accSagittalDoubleFlat5v11SUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 b 475 4 312 -150 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 b 341 60 405 112 370 95 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalDoubleSharp7v11CDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 112 -112 b 193 -73 143 -112 170 -99 l 45 -501 l 95 -517 l 248 -81 l 397 -517 l 449 -503 l 275 0 l 278 4 b 337 -23 295 -13 315 -23 l 405 -23 b 495 -203 465 -23 495 -84 l 540 -203 b 428 68 540 -23 503 68 l 360 68 b 248 248 310 68 271 127 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 112 -112 0 -52 36 -112 z', + }, + accSagittalDoubleFlat7v11CUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 112 112 b 0 -68 36 112 0 52 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 b 360 -68 271 -127 310 -68 l 428 -68 b 540 203 503 -68 540 23 l 495 203 b 405 23 495 84 465 23 l 337 23 b 278 -4 315 23 295 13 l 275 0 l 449 503 l 397 517 l 248 81 l 95 517 l 45 501 l 193 73 b 112 112 170 99 143 112 z', + }, + accSagittalDoubleSharp55CDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 428 248 l 0 -112 l 0 -266 l 307 -7 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 386 59 l 449 112 l 449 248 z', + }, + accSagittalDoubleFlat55CUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 449 -248 l 449 -112 l 386 -59 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 307 7 l 0 266 l 0 112 l 428 -248 z', + }, + accSagittalDoubleSharp17CDown: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -248 l 45 -68 b 271 112 45 53 120 112 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 387 -62 b 495 -112 416 -95 452 -112 b 631 68 585 -112 631 -53 l 585 68 b 520 -4 585 20 563 -4 b 337 248 396 -4 360 150 l 225 248 b 0 68 76 248 0 187 l 0 -248 z', + }, + accSagittalDoubleFlat17CUp: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 248 l 0 -68 b 225 -248 0 -187 76 -248 l 337 -248 b 520 4 360 -150 396 4 b 585 -68 563 4 585 -20 l 631 -68 b 495 112 631 53 585 112 b 387 62 452 112 416 95 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 271 -112 b 45 68 120 -112 45 -53 l 45 248 z', + }, + accSagittalDoubleSharp7v11kDown: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 l 0 -30 l 366 96 l 399 0 l 392 -23 l 0 -157 l 0 -255 l 353 -135 l 225 -503 l 276 -517 l 428 -82 l 579 -517 l 631 -503 l 455 0 l 507 145 l 540 157 l 540 248 l 517 248 z m 416 115 l 442 124 l 428 82 z', + }, + accSagittalDoubleFlat7v11kUp: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 517 -248 l 540 -248 l 540 -157 l 507 -145 l 455 0 l 631 503 l 579 517 l 428 82 l 276 517 l 225 503 l 353 135 l 0 255 l 0 157 l 392 23 l 399 0 l 366 -96 l 0 30 l 0 -68 z m 428 -82 l 442 -124 l 416 -115 z', + }, + accSagittal23CommaUp: { + x_min: 0, + x_max: 188, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 -4 b 68 -23 53 -17 60 -23 l 180 -23 b 225 -203 210 -23 225 -82 l 271 -203 b 206 68 271 -23 248 68 l 89 68 b 23 248 71 68 48 127 l 0 248 z', + }, + accSagittal23CommaDown: { + x_min: 0, + x_max: 188, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 23 -248 b 89 -68 48 -127 71 -68 l 206 -68 b 271 203 248 -68 271 23 l 225 203 b 180 23 225 82 210 23 l 68 23 b 45 4 60 23 53 17 l 45 517 l 0 517 z', + }, + accSagittal5v19CommaUp: { + x_min: 0, + x_max: 156, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 248 l 203 248 b 86 112 151 157 112 112 b 45 157 59 112 45 127 l 0 157 b 76 23 0 72 26 27 l 0 -112 z', + }, + accSagittal5v19CommaDown: { + x_min: 0, + x_max: 156, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 112 l 76 -23 b 0 -157 26 -27 0 -72 l 45 -157 b 86 -112 45 -127 59 -112 b 203 -248 112 -112 151 -157 l 225 -248 l 225 517 l 180 517 l 180 -33 l 0 284 z', + }, + accSagittal5v23SmallDiesisUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 -4 b 248 -23 233 -17 240 -23 l 360 -23 b 405 -203 390 -23 405 -82 l 449 -203 b 386 68 449 -23 428 68 l 271 68 b 203 248 251 68 228 127 l 0 -112 z', + }, + accSagittal5v23SmallDiesisDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 112 l 203 -248 b 271 -68 228 -127 251 -68 l 386 -68 b 449 203 428 -68 449 23 l 405 203 b 360 23 405 82 390 23 l 248 23 b 225 4 240 23 233 17 l 225 517 l 180 517 l 180 -33 l 0 284 z', + }, + accSagittalSharp5v23SDown: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 6 b 89 -23 59 -13 73 -23 l 180 -23 l 180 -517 l 225 -517 l 225 -23 l 292 -23 b 360 -203 337 -23 360 -84 l 405 -203 b 315 68 405 -23 374 68 l 112 68 b 23 248 78 68 48 127 l 0 248 z', + }, + accSagittalFlat5v23SUp: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 23 -248 b 112 -68 48 -127 78 -68 l 315 -68 b 405 203 374 -68 405 23 l 360 203 b 292 23 360 84 337 23 l 225 23 l 225 517 l 180 517 l 180 23 l 89 23 b 45 -6 73 23 59 13 l 45 517 l 0 517 z', + }, + accSagittalSharp5v19CDown: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 b 89 -112 0 -52 30 -112 l 89 -517 l 135 -517 l 135 -95 b 225 112 173 -65 203 4 l 271 112 l 271 -517 l 315 -517 l 315 107 b 405 -68 374 89 405 30 l 405 -248 l 449 -248 l 449 68 b 315 248 449 189 405 248 l 203 248 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 23 z', + }, + accSagittalFlat5v19CUp: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -68 b 81 3 45 -23 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 l 315 -248 b 449 -68 405 -248 449 -189 l 449 248 l 405 248 l 405 68 b 315 -107 405 -30 374 -89 l 315 517 l 271 517 l 271 -112 l 225 -112 b 135 95 203 -4 173 65 l 135 517 l 89 517 l 89 112 b 0 -68 30 112 0 52 z', + }, + accSagittalSharp23CDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 135 -82 l 135 -517 l 180 -517 l 180 -17 l 239 68 b 315 -23 261 7 287 -23 l 315 -517 l 360 -517 l 360 -23 l 428 -23 b 495 -203 472 -23 495 -84 l 540 -203 b 449 68 540 -23 510 68 l 337 68 b 248 248 302 68 271 127 l 0 -112 l 0 -276 z', + }, + accSagittalFlat23CUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 276 l 0 112 l 248 -248 b 337 -68 271 -127 302 -68 l 449 -68 b 540 203 510 -68 540 23 l 495 203 b 428 23 495 84 472 23 l 360 23 l 360 517 l 315 517 l 315 23 b 239 -68 287 23 261 -7 l 180 17 l 180 517 l 135 517 l 135 82 z', + }, + accSagittalSharp23CUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 14 b 112 -23 63 -10 86 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 360 -23 b 449 -203 420 -23 449 -84 l 495 -203 b 383 68 495 -23 458 68 l 135 68 b 23 248 85 68 48 127 l 0 248 z', + }, + accSagittalFlat23CDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 23 -248 b 135 -68 48 -127 85 -68 l 383 -68 b 495 203 458 -68 495 23 l 449 203 b 360 23 449 84 420 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 -14 86 23 63 10 l 45 517 l 0 517 z', + }, + accSagittalSharp5v19CUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -112 l 0 -266 l 135 -153 l 135 -517 l 180 -517 l 180 -115 l 271 -39 l 271 -517 l 315 -517 l 315 0 l 405 75 l 405 -517 l 449 -517 l 449 248 l 428 248 b 130 68 285 127 186 68 b 45 157 73 68 45 98 l 0 157 b 112 -20 0 53 37 -6 z', + }, + accSagittalFlat5v19CDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 112 20 b 0 -157 37 6 0 -53 l 45 -157 b 130 -68 45 -98 73 -68 b 428 -248 186 -68 285 -127 l 449 -248 l 449 517 l 405 517 l 405 -75 l 315 0 l 315 517 l 271 517 l 271 39 l 180 115 l 180 517 l 135 517 l 135 153 l 0 266 l 0 112 z', + }, + accSagittalSharp5v23SUp: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 135 -108 l 135 -517 l 180 -517 l 180 -53 l 271 58 l 271 -517 l 315 -517 l 315 14 b 383 -23 334 -10 357 -23 l 405 -23 l 405 -517 l 449 -517 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 405 68 b 292 248 356 68 318 127 l 0 -112 l 0 -274 z', + }, + accSagittalFlat5v23SDown: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 274 l 0 112 l 292 -248 b 405 -68 318 -127 356 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 449 517 l 405 517 l 405 23 l 383 23 b 315 -14 357 23 334 10 l 315 517 l 271 517 l 271 -58 l 180 53 l 180 517 l 135 517 l 135 108 z', + }, + accSagittalDoubleSharp5v23SDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 52 -517 l 203 -81 l 354 -517 l 405 -503 l 239 -23 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 225 68 b 112 248 176 68 138 127 l 89 248 l 89 112 b 170 -14 109 45 135 0 l 0 -501 z', + }, + accSagittalDoubleFlat5v23SUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 501 l 170 14 b 89 -112 135 0 109 -45 l 89 -248 l 112 -248 b 225 -68 138 -127 176 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 239 23 l 405 503 l 354 517 l 203 81 l 52 517 z', + }, + accSagittalDoubleSharp5v19CDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 b 112 -112 0 -52 36 -112 b 193 -73 143 -112 170 -99 l 45 -501 l 95 -517 l 248 -81 l 397 -517 l 449 -501 l 275 0 l 315 112 b 495 -68 435 112 495 53 l 495 -248 l 540 -248 l 540 68 b 360 248 540 189 480 248 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 z', + }, + accSagittalDoubleFlat5v19CUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 360 -248 b 540 -68 480 -248 540 -189 l 540 248 l 495 248 l 495 68 b 315 -112 495 -53 435 -112 l 275 0 l 449 501 l 397 517 l 248 81 l 95 517 l 45 501 l 193 73 b 112 112 170 99 143 112 b 0 -68 36 112 0 52 z', + }, + accSagittalDoubleSharp23CDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 252 35 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 323 4 b 383 -23 340 -13 360 -23 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 405 68 b 292 248 356 68 318 127 l 0 -112 l 0 -274 z', + }, + accSagittalDoubleFlat23CUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 274 l 0 112 l 292 -248 b 405 -68 318 -127 356 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 383 23 b 323 -4 360 23 340 13 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 252 -35 z', + }, + accSagittal19SchismaUp: { + x_min: 0, + x_max: 125, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 68 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 248 l 157 248 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 l 0 68 b 68 -112 0 -52 23 -112 z', + }, + accSagittal19SchismaDown: { + x_min: 0, + x_max: 125, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 68 112 b 0 -68 23 112 0 52 l 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 l 180 -248 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 z', + }, + accSagittal17KleismaUp: { + x_min: 0, + x_max: 156, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 248 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z', + }, + accSagittal17KleismaDown: { + x_min: 0, + x_max: 156, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 225 -248 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z', + }, + accSagittal143CommaUp: { + x_min: 0, + x_max: 156, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -203 l 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 248 l 203 248 b 135 68 177 127 154 68 l 105 68 b 45 157 65 68 45 98 l 0 157 b 23 20 0 95 7 50 b 0 -203 7 -23 0 -98 z', + }, + accSagittal143CommaDown: { + x_min: 0, + x_max: 156, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 23 -20 0 98 7 23 b 0 -157 7 -50 0 -95 l 45 -157 b 105 -68 45 -98 65 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 225 -248 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z', + }, + accSagittal11v49CommaUp: { + x_min: 0, + x_max: 188, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -292 b 89 -157 45 -203 60 -157 l 203 -157 b 225 -143 210 -157 217 -153 l 225 -517 l 271 -517 l 271 248 l 248 248 b 180 157 233 187 210 157 l 68 157 b 0 -68 23 157 0 82 l 45 -68 b 89 68 45 23 60 68 l 203 68 b 225 84 209 68 216 72 l 225 -36 b 180 -68 213 -58 199 -68 l 68 -68 b 0 -292 23 -68 0 -143 z', + }, + accSagittal11v49CommaDown: { + x_min: 0, + x_max: 188, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 292 b 68 68 0 143 23 68 l 180 68 b 225 36 199 68 213 58 l 225 -84 b 203 -68 216 -72 209 -68 l 89 -68 b 45 68 60 -68 45 -23 l 0 68 b 68 -157 0 -82 23 -157 l 180 -157 b 248 -248 210 -157 233 -187 l 271 -248 l 271 517 l 225 517 l 225 143 b 203 157 217 153 210 157 l 89 157 b 45 292 60 157 45 203 z', + }, + accSagittal19CommaUp: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 b 68 -112 0 -52 23 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 -4 b 203 -23 187 -17 196 -23 l 315 -23 b 360 -203 346 -23 360 -82 l 405 -203 b 341 68 405 -23 383 68 l 225 68 b 157 248 206 68 183 127 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 z', + }, + accSagittal19CommaDown: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 b 225 -68 183 -127 206 -68 l 341 -68 b 405 203 383 -68 405 23 l 360 203 b 315 23 360 82 346 23 l 203 23 b 180 4 196 23 187 17 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 b 0 -68 23 112 0 52 z', + }, + accSagittal7v19CommaUp: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 b 68 -112 0 -52 23 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 112 l 225 112 b 315 -68 285 112 315 53 l 315 -248 l 360 -248 l 360 68 b 271 248 360 187 330 248 l 157 248 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 z', + }, + accSagittal7v19CommaDown: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 l 271 -248 b 360 -68 330 -248 360 -187 l 360 248 l 315 248 l 315 68 b 225 -112 315 -53 285 -112 l 180 -112 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 b 0 -68 23 112 0 52 z', + }, + accSagittal49SmallDiesisUp: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -203 l 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -68 330 112 360 53 l 360 -248 l 405 -248 l 405 68 b 315 248 405 187 374 248 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z', + }, + accSagittal49SmallDiesisDown: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 315 -248 b 405 -68 374 -248 405 -187 l 405 248 l 360 248 l 360 68 b 271 -112 360 -53 330 -112 l 225 -112 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z', + }, + accSagittal23SmallDiesisUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 58 l 495 -274 l 495 -112 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z', + }, + accSagittal23SmallDiesisDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 495 112 l 495 274 l 225 -58 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z', + }, + accSagittal5v13MediumDiesisUp: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -259 l 315 -89 l 315 -517 l 360 -517 l 360 248 l 337 248 b 128 180 253 203 184 180 b 45 248 73 180 45 203 l 0 248 b 52 95 0 170 17 120 l 0 68 l 0 -33 l 315 135 l 315 10 l 0 -157 z', + }, + accSagittal5v13MediumDiesisDown: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 157 l 315 -10 l 315 -135 l 0 33 l 0 -68 l 52 -95 b 0 -248 17 -120 0 -170 l 45 -248 b 128 -180 45 -203 73 -180 b 337 -248 184 -180 253 -203 l 360 -248 l 360 517 l 315 517 l 315 89 l 0 259 z', + }, + accSagittal11v19MediumDiesisUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 -4 b 292 -23 278 -17 285 -23 l 405 -23 b 449 -203 435 -23 449 -82 l 495 -203 b 431 68 495 -23 472 68 l 315 68 b 248 248 295 68 271 127 l 135 248 b 0 68 45 248 0 187 l 0 -248 z', + }, + accSagittal11v19MediumDiesisDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 248 l 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 b 315 -68 271 -127 295 -68 l 431 -68 b 495 203 472 -68 495 23 l 449 203 b 405 23 449 82 435 23 l 292 23 b 271 4 285 23 278 17 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 z', + }, + accSagittal49MediumDiesisUp: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -68 l 0 -248 l 45 -248 l 315 -94 l 315 -517 l 360 -517 l 360 248 l 225 248 b 0 -68 75 248 0 143 z m 45 -68 b 225 112 45 53 105 112 l 315 112 l 315 10 l 45 -145 z', + }, + accSagittal49MediumDiesisDown: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 68 b 225 -248 0 -143 75 -248 l 360 -248 l 360 517 l 315 517 l 315 94 l 45 248 l 0 248 z m 45 145 l 315 -10 l 315 -112 l 225 -112 b 45 68 105 -112 45 -53 z', + }, + accSagittal5v49MediumDiesisUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -89 l 0 -248 l 225 53 l 225 -517 l 271 -517 l 271 53 l 495 -248 l 495 -89 l 248 248 b 89 89 170 143 118 89 b 45 157 60 89 45 112 l 0 157 b 68 3 0 68 23 16 z', + }, + accSagittal5v49MediumDiesisDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 68 -3 b 0 -157 23 -16 0 -68 l 45 -157 b 89 -89 45 -112 60 -89 b 248 -248 118 -89 170 -143 l 495 89 l 495 248 l 271 -53 l 271 517 l 225 517 l 225 -53 l 0 248 l 0 89 z', + }, + accSagittal49LargeDiesisUp: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 -89 l 360 -248 l 405 -248 l 405 -68 b 180 248 405 143 330 248 l 0 248 z m 45 12 l 45 112 l 180 112 b 360 -68 300 112 360 53 l 360 -147 z', + }, + accSagittal49LargeDiesisDown: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 180 -248 b 405 68 330 -248 405 -143 l 405 248 l 360 248 l 45 89 l 45 517 l 0 517 z m 360 147 l 360 68 b 180 -112 360 -53 300 -112 l 45 -112 l 45 -12 z', + }, + accSagittal11v19LargeDiesisUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 -86 l 449 -256 l 449 -157 l 45 13 l 45 138 l 449 -30 l 449 68 l 23 248 l 0 248 z', + }, + accSagittal11v19LargeDiesisDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 23 -248 l 449 -68 l 449 30 l 45 -138 l 45 -13 l 449 157 l 449 256 l 45 86 l 45 517 l 0 517 z', + }, + accSagittal5v13LargeDiesisUp: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 b 89 -112 0 -52 30 -112 b 180 -35 125 -112 157 -86 l 180 -517 l 225 -517 l 225 -86 l 631 -256 l 631 -157 l 225 13 l 225 138 l 631 -30 l 631 68 l 203 248 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 20 z', + }, + accSagittal5v13LargeDiesisDown: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -68 b 81 3 45 -20 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 l 631 -68 l 631 30 l 225 -138 l 225 -13 l 631 157 l 631 256 l 225 86 l 225 517 l 180 517 l 180 35 b 89 112 157 86 125 112 b 0 -68 30 112 0 52 z', + }, + accSagittalSharp23SDown: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -203 l 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 b 315 6 287 -23 301 -13 l 315 -517 l 360 -517 l 360 248 l 337 248 b 248 68 312 127 282 68 l 194 68 b 89 157 125 68 89 98 l 45 157 b 60 59 45 118 50 85 b 0 -203 20 30 0 -56 z', + }, + accSagittalFlat23SUp: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 60 -59 0 56 20 -30 b 45 -157 50 -85 45 -118 l 89 -157 b 194 -68 89 -98 125 -68 l 248 -68 b 337 -248 282 -68 312 -127 l 360 -248 l 360 517 l 315 517 l 315 -6 b 271 23 301 13 287 23 l 180 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z', + }, + accSagittalSharp49SDown: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -292 l 45 -292 b 112 -157 45 -203 68 -157 l 135 -157 l 135 -517 l 180 -517 l 180 -157 l 271 -157 b 315 -135 285 -157 300 -150 l 315 -517 l 360 -517 l 360 248 l 337 248 b 248 157 323 187 292 157 l 89 157 b 0 -68 30 157 0 82 l 45 -68 b 112 68 45 23 68 68 l 271 68 b 315 89 284 68 300 75 l 315 -32 b 248 -68 298 -56 275 -68 l 89 -68 b 0 -292 29 -68 0 -143 z', + }, + accSagittalFlat49SUp: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 292 b 89 68 0 143 29 68 l 248 68 b 315 32 275 68 298 56 l 315 -89 b 271 -68 300 -75 284 -68 l 112 -68 b 45 68 68 -68 45 -23 l 0 68 b 89 -157 0 -82 30 -157 l 248 -157 b 337 -248 292 -157 323 -187 l 360 -248 l 360 517 l 315 517 l 315 135 b 271 157 300 150 285 157 l 180 157 l 180 517 l 135 517 l 135 157 l 112 157 b 45 292 68 157 45 203 z', + }, + accSagittalSharp7v19CDown: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -112 l 0 -271 l 135 -125 l 135 -517 l 180 -517 l 180 -78 l 315 65 l 315 -517 l 360 -517 l 360 248 l 337 248 b 118 89 239 143 166 89 b 45 157 68 89 45 112 l 0 157 b 89 -20 0 53 29 -6 z', + }, + accSagittalFlat7v19CUp: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 89 20 b 0 -157 29 6 0 -53 l 45 -157 b 118 -89 45 -112 68 -89 b 337 -248 166 -89 239 -143 l 360 -248 l 360 517 l 315 517 l 315 -65 l 180 78 l 180 517 l 135 517 l 135 125 l 0 271 l 0 112 z', + }, + accSagittalSharp19CDown: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -248 l 45 -248 l 45 -68 b 180 96 45 17 89 72 l 180 -517 l 225 -517 l 225 107 b 315 112 252 112 282 112 l 360 112 l 360 -517 l 405 -517 l 405 248 l 271 248 b 0 68 89 248 0 187 z', + }, + accSagittalFlat19CUp: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 271 -248 0 -187 89 -248 l 405 -248 l 405 517 l 360 517 l 360 -112 l 315 -112 b 225 -107 282 -112 252 -112 l 225 517 l 180 517 l 180 -96 b 45 68 89 -72 45 -17 l 45 248 l 0 248 z', + }, + accSagittalSharp11v49CDown: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 112 -23 45 -82 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 271 112 215 -23 245 23 l 315 112 l 315 -517 l 360 -517 l 360 107 b 449 -68 420 89 449 30 l 449 -248 l 495 -248 l 495 68 b 360 248 495 189 449 248 l 248 248 b 157 68 222 128 192 68 l 89 68 b 0 -203 30 68 0 -23 z', + }, + accSagittalFlat11v49CUp: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -128 l 360 -248 b 495 -68 449 -248 495 -189 l 495 248 l 449 248 l 449 68 b 360 -107 449 -30 420 -89 l 360 517 l 315 517 l 315 -112 l 271 -112 b 180 23 245 -23 215 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 82 z', + }, + accSagittalSharp143CDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 259 76 210 -23 236 10 l 315 17 l 315 -517 l 360 -517 l 360 -30 l 585 -271 l 585 -112 l 248 248 b 157 68 222 127 192 68 l 89 68 b 0 -203 30 68 0 -23 z', + }, + accSagittalFlat143CUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -127 l 585 112 l 585 271 l 360 30 l 360 517 l 315 517 l 315 -17 l 259 -76 b 180 23 236 -10 210 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z', + }, + accSagittalSharp17kDown: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -157 l 0 -256 l 225 -161 l 225 -517 l 271 -517 l 271 -144 l 405 -86 l 405 -517 l 449 -517 l 449 248 l 428 248 b 145 171 305 196 210 171 b 45 248 78 171 45 196 l 0 248 b 79 101 0 170 26 121 l 0 68 l 0 -32 l 405 138 l 405 13 z', + }, + accSagittalFlat17kUp: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 405 -13 l 405 -138 l 0 32 l 0 -68 l 79 -101 b 0 -248 26 -121 0 -170 l 45 -248 b 145 -171 45 -196 78 -171 b 428 -248 210 -171 305 -196 l 449 -248 l 449 517 l 405 517 l 405 86 l 271 144 l 271 517 l 225 517 l 225 161 l 0 256 l 0 157 z', + }, + accSagittalSharp19sDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -248 l 45 -248 l 45 -68 b 180 109 45 36 89 95 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -23 295 23 325 -23 l 360 -517 l 405 -517 l 405 -23 l 472 -23 b 540 -203 517 -23 540 -84 l 585 -203 b 495 68 585 -23 554 68 l 383 68 b 292 248 348 68 318 127 l 180 248 b 0 68 60 248 0 187 z', + }, + accSagittalFlat19sUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 180 -248 0 -187 60 -248 l 292 -248 b 383 -68 318 -127 348 -68 l 495 -68 b 585 203 554 -68 585 23 l 540 203 b 472 23 540 84 517 23 l 405 23 l 405 517 l 360 517 l 360 23 b 271 -112 325 23 295 -23 l 225 -112 l 225 517 l 180 517 l 180 -109 b 45 68 89 -95 45 -36 l 45 248 l 0 248 z', + }, + accSagittalSharp19sUp: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 89 -96 l 89 -517 l 135 -517 l 135 -108 b 180 -112 148 -112 163 -112 b 225 -108 196 -112 210 -112 l 225 -517 l 271 -517 l 271 -94 b 360 -12 305 -78 337 -50 l 360 -517 l 405 -517 l 405 248 l 383 248 b 190 0 353 98 288 16 b 138 -3 171 0 153 -3 b 45 68 75 -3 45 20 l 0 68 b 89 -96 0 -17 30 -72 z', + }, + accSagittalFlat19sDown: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 89 96 b 0 -68 30 72 0 17 l 45 -68 b 138 3 45 -20 75 3 b 190 0 153 3 171 0 b 383 -248 288 -16 353 -98 l 405 -248 l 405 517 l 360 517 l 360 12 b 271 94 337 50 305 78 l 271 517 l 225 517 l 225 108 b 180 112 210 112 196 112 b 135 108 163 112 148 112 l 135 517 l 89 517 z', + }, + accSagittalSharp17kUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 337 -23 b 405 14 363 -23 386 -10 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 68 402 127 364 68 l 112 68 b 0 -203 37 68 0 -23 z', + }, + accSagittalFlat17kDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 112 -68 0 23 37 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 517 l 405 517 l 405 -14 b 337 23 386 10 363 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalSharp143CUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 337 -23 b 405 14 363 -23 386 -10 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 68 402 127 364 68 l 240 68 b 89 157 140 68 89 98 l 45 157 b 68 53 45 115 52 81 b 0 -203 23 23 0 -63 z', + }, + accSagittalFlat143CDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 68 -53 0 63 23 -23 b 45 -157 52 -81 45 -115 l 89 -157 b 240 -68 89 -98 140 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 517 l 405 517 l 405 -14 b 337 23 386 10 363 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalSharp11v49CUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -68 b 135 68 45 23 76 68 l 337 68 b 405 95 363 68 386 76 l 405 -27 b 315 -68 386 -55 356 -68 l 112 -68 b 0 -292 37 -68 0 -143 l 45 -292 b 135 -157 45 -203 75 -157 l 135 -517 l 180 -517 l 180 -157 l 271 -157 l 271 -517 l 315 -517 l 315 -157 l 337 -157 b 405 -130 360 -157 383 -148 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 157 413 187 376 157 l 112 157 b 0 -68 37 157 0 82 z', + }, + accSagittalFlat11v49CDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 68 b 112 -157 0 -82 37 -157 l 315 -157 b 428 -248 376 -157 413 -187 l 449 -248 l 449 517 l 405 517 l 405 130 b 337 157 383 148 360 157 l 315 157 l 315 517 l 271 517 l 271 157 l 180 157 l 180 517 l 135 517 l 135 157 b 45 292 75 157 45 203 l 0 292 b 112 68 0 143 37 68 l 315 68 b 405 27 356 68 386 55 l 405 -95 b 337 -68 386 -76 363 -68 l 135 -68 b 45 68 76 -68 45 -23 z', + }, + accSagittalSharp19CUp: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 14 b 337 -23 289 -10 311 -23 l 360 -23 l 360 -517 l 405 -517 l 405 -23 b 495 -203 465 -23 495 -82 l 540 -203 b 428 68 540 -23 503 68 l 360 68 b 248 248 310 68 271 128 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z', + }, + accSagittalFlat19CDown: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 b 360 -68 271 -128 310 -68 l 428 -68 b 540 203 503 -68 540 23 l 495 203 b 405 23 495 82 465 23 l 405 517 l 360 517 l 360 23 l 337 23 b 271 -14 311 23 289 10 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z', + }, + accSagittalSharp7v19CUp: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 112 l 315 112 b 360 109 331 112 346 112 l 360 -517 l 405 -517 l 405 98 b 495 -68 465 73 495 19 l 495 -248 l 540 -248 l 540 68 b 360 248 540 189 480 248 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z', + }, + accSagittalFlat7v19CDown: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 360 -248 b 540 -68 480 -248 540 -189 l 540 248 l 495 248 l 495 68 b 405 -98 495 -19 465 -73 l 405 517 l 360 517 l 360 -109 b 315 -112 346 -112 331 -112 l 271 -112 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z', + }, + accSagittalSharp49SUp: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 112 l 360 112 b 405 109 376 112 390 112 l 405 -517 l 449 -517 l 449 96 b 540 -68 510 72 540 17 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z', + }, + accSagittalFlat49SDown: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 449 -96 540 -17 510 -72 l 449 517 l 405 517 l 405 -109 b 360 -112 390 -112 376 -112 l 315 -112 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalSharp23SUp: { + x_min: 0, + x_max: 469, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 71 l 405 -14 l 405 -517 l 449 -517 l 449 -56 l 675 -268 l 675 -112 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z', + }, + accSagittalFlat23SDown: { + x_min: 0, + x_max: 469, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 675 112 l 675 268 l 449 56 l 449 517 l 405 517 l 405 14 l 315 -71 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalSharp5v13MUp: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 495 141 l 495 14 l 0 -157 l 0 -256 l 225 -180 l 225 -517 l 271 -517 l 271 -161 l 360 -130 l 360 -517 l 405 -517 l 405 -115 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 517 248 b 167 168 366 194 248 168 b 45 248 85 168 45 194 l 0 248 b 95 99 0 170 30 120 l 0 68 l 0 -30 z', + }, + accSagittalFlat5v13MDown: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 30 l 0 -68 l 95 -99 b 0 -248 30 -120 0 -170 l 45 -248 b 167 -168 45 -194 85 -168 b 517 -248 248 -168 366 -194 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 115 l 405 517 l 360 517 l 360 130 l 271 161 l 271 517 l 225 517 l 225 180 l 0 256 l 0 157 l 495 -14 l 495 -141 z', + }, + accSagittalSharp11v19MUp: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 14 b 428 -23 379 -10 402 -23 l 449 -23 l 449 -517 l 495 -517 l 495 -23 b 585 -203 554 -23 585 -84 l 631 -203 b 517 68 631 -23 593 68 l 449 68 b 337 248 400 68 363 127 l 225 248 b 0 68 75 248 0 187 z', + }, + accSagittalFlat11v19MDown: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 b 449 -68 363 -127 400 -68 l 517 -68 b 631 203 593 -68 631 23 l 585 203 b 495 23 585 84 554 23 l 495 517 l 449 517 l 449 23 l 428 23 b 360 -14 402 23 379 10 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z', + }, + accSagittalSharp49MUp: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -248 l 45 -248 l 225 -180 l 225 -517 l 271 -517 l 271 -166 l 360 -132 l 360 -517 l 405 -517 l 405 -117 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 360 248 b 0 -68 120 248 0 143 z m 45 -145 l 45 -68 b 360 112 45 53 150 112 l 495 112 l 495 14 z', + }, + accSagittalFlat49MDown: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 68 b 360 -248 0 -143 120 -248 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 117 l 405 517 l 360 517 l 360 132 l 271 166 l 271 517 l 225 517 l 225 180 l 45 248 l 0 248 z m 495 -14 l 495 -112 l 360 -112 b 45 68 150 -112 45 -53 l 45 145 z', + }, + accSagittalSharp5v49MUp: { + x_min: 0, + x_max: 469, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -271 l 180 -79 l 180 -517 l 225 -517 l 225 -30 l 315 65 l 315 -517 l 360 -517 l 360 65 l 449 -30 l 449 -517 l 495 -517 l 495 -79 l 675 -271 l 675 -112 l 337 248 b 118 89 239 143 166 89 b 45 157 68 89 45 112 l 0 157 b 107 0 0 62 36 10 l 0 -112 z', + }, + accSagittalFlat5v49MDown: { + x_min: 0, + x_max: 469, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 112 l 107 0 b 0 -157 36 -10 0 -62 l 45 -157 b 118 -89 45 -112 68 -89 b 337 -248 166 -89 239 -143 l 675 112 l 675 271 l 495 79 l 495 517 l 449 517 l 449 30 l 360 -65 l 360 517 l 315 517 l 315 -65 l 225 30 l 225 517 l 180 517 l 180 79 l 0 271 z', + }, + accSagittalSharp49LUp: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 -82 l 135 -112 l 135 -517 l 180 -517 l 180 -127 l 271 -157 l 271 -517 l 315 -517 l 315 -173 l 540 -248 l 585 -248 l 585 -68 b 180 248 585 143 449 248 l 0 248 z m 45 112 l 180 112 b 540 -68 420 112 540 53 l 540 -145 l 45 16 z', + }, + accSagittalFlat49LDown: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 180 -248 b 585 68 449 -248 585 -143 l 585 248 l 540 248 l 315 173 l 315 517 l 271 517 l 271 157 l 180 127 l 180 517 l 135 517 l 135 112 l 45 82 l 45 517 l 0 517 z m 45 -16 l 540 145 l 540 68 b 180 -112 540 -53 420 -112 l 45 -112 z', + }, + accSagittalSharp11v19LUp: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 -81 l 135 -108 l 135 -517 l 180 -517 l 180 -121 l 271 -148 l 271 -517 l 315 -517 l 315 -161 l 631 -255 l 631 -157 l 45 16 l 45 144 l 631 -30 l 631 68 l 23 248 l 0 248 z', + }, + accSagittalFlat11v19LDown: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 23 -248 l 631 -68 l 631 30 l 45 -144 l 45 -16 l 631 157 l 631 255 l 315 161 l 315 517 l 271 517 l 271 148 l 180 121 l 180 517 l 135 517 l 135 108 l 45 81 l 45 517 l 0 517 z', + }, + accSagittalSharp5v13LUp: { + x_min: 0, + x_max: 500, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 -85 l 360 -120 l 360 -517 l 405 -517 l 405 -135 l 720 -256 l 720 -157 l 271 14 l 271 141 l 720 -30 l 720 68 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z', + }, + accSagittalFlat5v13LDown: { + x_min: 0, + x_max: 500, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 720 -68 l 720 30 l 271 -141 l 271 -14 l 720 157 l 720 256 l 405 135 l 405 517 l 360 517 l 360 120 l 271 85 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z', + }, + accSagittalDoubleSharp23SDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -203 l 45 -203 b 135 -23 45 -82 76 -23 l 301 -23 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 370 -14 b 449 112 423 10 449 53 l 449 248 l 428 248 b 315 68 402 127 364 68 l 240 68 b 89 157 140 68 89 98 l 45 157 b 68 53 45 115 52 81 b 0 -203 23 23 0 -63 z', + }, + accSagittalDoubleFlat23SUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 68 -53 0 63 23 -23 b 45 -157 52 -81 45 -115 l 89 -157 b 240 -68 89 -98 140 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 -112 b 370 14 449 -53 423 -10 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 301 23 l 135 23 b 45 203 76 23 45 82 z', + }, + accSagittalDoubleSharp49SDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -292 l 45 -292 b 112 -157 45 -203 68 -157 l 256 -157 l 135 -503 l 187 -517 l 337 -82 l 490 -517 l 540 -503 l 366 0 l 396 89 b 449 157 416 102 435 125 l 449 248 l 428 248 b 315 157 413 187 376 157 l 112 157 b 0 -68 39 157 0 82 l 45 -68 b 135 68 45 23 76 68 l 287 68 l 311 0 l 288 -68 l 89 -68 b 0 -292 32 -68 0 -144 z', + }, + accSagittalDoubleFlat49SUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 292 b 89 68 0 144 32 68 l 288 68 l 311 0 l 287 -68 l 135 -68 b 45 68 76 -68 45 -23 l 0 68 b 112 -157 0 -82 39 -157 l 315 -157 b 428 -248 376 -157 413 -187 l 449 -248 l 449 -157 b 396 -89 435 -125 416 -102 l 366 0 l 540 503 l 490 517 l 337 82 l 187 517 l 135 503 l 256 157 l 112 157 b 45 292 68 157 45 203 z', + }, + accSagittalDoubleSharp7v19CDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -112 l 0 -266 l 307 -7 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 386 59 l 449 112 l 449 248 l 428 248 b 130 68 285 127 186 68 b 45 157 73 68 45 98 l 0 157 b 112 -20 0 53 37 -6 z', + }, + accSagittalDoubleFlat7v19CUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 112 20 b 0 -157 37 6 0 -53 l 45 -157 b 130 -68 45 -98 73 -68 b 428 -248 186 -68 285 -127 l 449 -248 l 449 -112 l 386 -59 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 307 7 l 0 266 l 0 112 z', + }, + accSagittalDoubleSharp19CDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 315 109 45 36 135 95 l 354 0 l 180 -503 l 232 -517 l 383 -82 l 534 -517 l 585 -503 l 410 0 l 449 112 l 495 112 l 495 248 l 360 248 b 0 68 120 248 0 187 z m 372 112 l 393 112 l 383 82 z', + }, + accSagittalDoubleFlat19CUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 360 -248 0 -187 120 -248 l 495 -248 l 495 -112 l 449 -112 l 410 0 l 585 503 l 534 517 l 383 82 l 232 517 l 180 503 l 354 0 l 315 -109 b 45 68 135 -95 45 -36 l 45 248 l 0 248 z m 383 -82 l 393 -112 l 372 -112 z', + }, + accSagittalDoubleSharp11v49CDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 360 112 b 540 -68 480 112 540 53 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z', + }, + accSagittalDoubleFlat11v49CUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 360 -112 540 -53 480 -112 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalDoubleSharp143CDown: { + x_min: 0, + x_max: 469, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 337 49 l 675 -268 l 675 -112 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z', + }, + accSagittalDoubleFlat143CUp: { + x_min: 0, + x_max: 469, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 675 112 l 675 268 l 337 -49 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalDoubleSharp17kDown: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 248 b 95 101 0 170 30 121 l 0 68 l 0 -30 l 364 96 l 399 0 l 390 -23 l 0 -157 l 0 -255 l 353 -135 l 225 -503 l 275 -517 l 428 -82 l 577 -517 l 631 -503 l 455 0 l 507 145 l 540 157 l 540 248 l 517 248 b 167 168 366 194 248 168 b 45 248 85 168 45 194 z m 416 115 l 442 124 l 428 82 z', + }, + accSagittalDoubleFlat17kUp: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -248 b 167 -168 45 -194 85 -168 b 517 -248 248 -168 366 -194 l 540 -248 l 540 -157 l 507 -145 l 455 0 l 631 503 l 577 517 l 428 82 l 275 517 l 225 503 l 353 135 l 0 255 l 0 157 l 390 23 l 399 0 l 364 -96 l 0 30 l 0 -68 l 95 -101 b 0 -248 30 -121 0 -170 z m 428 -82 l 442 -124 l 416 -115 z', + }, + accSagittalDoubleSharp19sDown: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -248 l 45 -248 l 45 -68 b 271 112 45 53 120 112 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 367 4 b 428 -23 386 -13 405 -23 l 495 -23 b 585 -203 554 -23 585 -84 l 631 -203 b 517 68 631 -23 593 68 l 449 68 b 337 248 400 68 363 127 l 225 248 b 0 68 75 248 0 187 z', + }, + accSagittalDoubleFlat19sUp: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 b 449 -68 363 -127 400 -68 l 517 -68 b 631 203 593 -68 631 23 l 585 203 b 495 23 585 84 554 23 l 428 23 b 367 -4 405 23 386 13 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 271 -112 b 45 68 120 -112 45 -53 l 45 248 l 0 248 z', + }, + accSagittalShaftUp: { + x_min: 0, + x_max: 31, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 112 l 0 -517 l 45 -517 l 45 112 l 23 248 z', + }, + accSagittalShaftDown: { + x_min: 0, + x_max: 31, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 23 -248 l 45 -112 l 45 517 l 0 517 l 0 -112 z', + }, + accSagittalAcute: { + x_min: 0, + x_max: 125, + y_min: -62, + y_max: 125, + ha: 187, + o: 'm 0 0 l 0 -89 l 180 89 l 180 180 z', + }, + accSagittalGrave: { + x_min: 0, + x_max: 125, + y_min: -125, + y_max: 62, + ha: 187, + o: 'm 180 -180 l 180 -89 l 0 89 l 0 0 z', + }, + accSagittal1MinaUp: { + x_min: -7, + x_max: 124, + y_min: 16, + y_max: 106.31676725154982, + ha: 90.31676725154982, + o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 134 150 179 112 163 135 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z', + }, + accSagittal1MinaDown: { + x_min: -7, + x_max: 124, + y_min: -106.31676725154983, + y_max: -16, + ha: 90.31676725154983, + o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 179 -23 163 -135 179 -112 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z', + }, + accSagittal2MinasUp: { + x_min: -7, + x_max: 218, + y_min: 16, + y_max: 106.31676725154982, + ha: 90.31676725154982, + o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 269 150 314 112 298 135 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z', + }, + accSagittal2MinasDown: { + x_min: -7, + x_max: 218, + y_min: -106.31676725154983, + y_max: -16, + ha: 90.31676725154983, + o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z', + }, + accSagittal1TinaUp: { + x_min: 0, + x_max: 93, + y_min: 16, + y_max: 107, + ha: 91, + o: 'm 134 154 l 91 154 b 81 76 91 101 91 86 b 0 68 73 69 48 68 l 0 23 b 134 154 122 23 134 36 z', + }, + accSagittal1TinaDown: { + x_min: 0, + x_max: 93, + y_min: -107, + y_max: -16, + ha: 91, + o: 'm 134 -154 b 0 -23 134 -36 122 -23 l 0 -68 b 81 -76 48 -68 73 -69 b 91 -154 91 -86 91 -101 z', + }, + accSagittal2TinasUp: { + x_min: 0, + x_max: 94, + y_min: 16, + y_max: 107, + ha: 91, + o: 'm 135 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z', + }, + accSagittal2TinasDown: { + x_min: 0, + x_max: 94, + y_min: -107, + y_max: -16, + ha: 91, + o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 z', + }, + accSagittal3TinasUp: { + x_min: -7, + x_max: 124, + y_min: 16, + y_max: 106.31676725154982, + ha: 90.31676725154982, + o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 134 150 179 112 163 135 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z', + }, + accSagittal3TinasDown: { + x_min: -7, + x_max: 124, + y_min: -106.31676725154983, + y_max: -16, + ha: 90.31676725154983, + o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 179 -23 163 -135 179 -112 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z', + }, + accSagittal4TinasUp: { + x_min: 0, + x_max: 187, + y_min: 16, + y_max: 106.69999999999997, + ha: 90.69999999999997, + o: 'm 0 68 l 0 23 b 143 45 105 23 124 26 b 203 107 153 55 183 107 b 226 23 216 107 226 86 l 269 23 b 225 150 269 112 253 135 b 160 132 207 158 181 153 b 115 81 138 112 124 88 b 0 68 104 71 94 68 z', + }, + accSagittal4TinasDown: { + x_min: 0, + x_max: 187, + y_min: -106.69999999999999, + y_max: -16, + ha: 90.69999999999999, + o: 'm 0 -68 b 115 -81 94 -68 104 -71 b 160 -132 124 -88 138 -112 b 225 -150 181 -153 207 -158 b 269 -23 253 -135 269 -112 l 226 -23 b 203 -107 226 -86 216 -107 b 143 -45 183 -107 153 -55 b 0 -23 124 -26 105 -23 z', + }, + accSagittal5TinasUp: { + x_min: 0, + x_max: 218, + y_min: 16, + y_max: 107, + ha: 91, + o: 'm 135 23 b 187 45 156 23 168 26 b 249 107 197 55 228 107 b 271 23 262 107 271 86 l 314 23 b 269 150 314 112 298 135 b 204 132 252 158 226 153 b 160 81 183 112 168 88 b 135 68 148 71 147 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z', + }, + accSagittal5TinasDown: { + x_min: 0, + x_max: 218, + y_min: -107, + y_max: -16, + ha: 91, + o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 b 160 -81 147 -68 148 -71 b 204 -132 168 -88 183 -112 b 269 -150 226 -153 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 249 -107 271 -86 262 -107 b 187 -45 228 -107 197 -55 b 135 -23 168 -26 156 -23 z', + }, + accSagittal6TinasUp: { + x_min: -7, + x_max: 218, + y_min: 16, + y_max: 106.31676725154982, + ha: 90.31676725154982, + o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 269 150 314 112 298 135 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z', + }, + accSagittal6TinasDown: { + x_min: -7, + x_max: 218, + y_min: -106.31676725154983, + y_max: -16, + ha: 90.31676725154983, + o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z', + }, + accSagittal7TinasUp: { + x_min: 0, + x_max: 281, + y_min: 16, + y_max: 106.69999999999997, + ha: 90.69999999999997, + o: 'm 0 68 l 0 23 b 143 45 105 23 124 26 b 203 107 153 55 183 107 b 226 23 216 107 226 86 l 269 23 b 298 65 269 23 291 55 b 343 107 314 86 331 107 b 361 23 354 107 363 86 l 405 23 b 360 150 405 112 389 135 b 294 130 343 158 311 150 b 264 92 281 115 272 104 b 225 150 258 127 245 140 b 160 132 207 158 181 153 b 115 81 138 112 124 88 b 0 68 104 71 94 68 z', + }, + accSagittal7TinasDown: { + x_min: 0, + x_max: 281, + y_min: -106.69999999999999, + y_max: -16, + ha: 90.69999999999999, + o: 'm 0 -68 b 115 -81 94 -68 104 -71 b 160 -132 124 -88 138 -112 b 225 -150 181 -153 207 -158 b 264 -92 245 -140 258 -127 b 294 -130 272 -104 281 -115 b 360 -150 311 -150 343 -158 b 405 -23 389 -135 405 -112 l 361 -23 b 343 -107 363 -86 354 -107 b 298 -65 331 -107 314 -86 b 269 -23 291 -55 269 -23 l 226 -23 b 203 -107 226 -86 216 -107 b 143 -45 183 -107 153 -55 b 0 -23 124 -26 105 -23 z', + }, + accSagittal8TinasUp: { + x_min: 0, + x_max: 312, + y_min: 16, + y_max: 107, + ha: 91, + o: 'm 135 23 b 187 45 156 23 168 26 b 249 107 197 55 228 107 b 271 23 262 107 271 86 l 314 23 b 343 65 314 23 336 55 b 387 107 359 86 376 107 b 406 23 399 107 408 86 l 449 23 b 405 150 449 112 433 135 b 338 130 387 158 356 150 b 308 92 325 115 317 104 b 269 150 302 127 289 140 b 204 132 252 158 226 153 b 160 81 183 112 168 88 b 135 68 148 71 147 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z', + }, + accSagittal8TinasDown: { + x_min: 0, + x_max: 312, + y_min: -107, + y_max: -16, + ha: 91, + o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 b 160 -81 147 -68 148 -71 b 204 -132 168 -88 183 -112 b 269 -150 226 -153 252 -158 b 308 -92 289 -140 302 -127 b 338 -130 317 -104 325 -115 b 405 -150 356 -150 387 -158 b 449 -23 433 -135 449 -112 l 406 -23 b 387 -107 408 -86 399 -107 b 343 -65 376 -107 359 -86 b 314 -23 336 -55 314 -23 l 271 -23 b 249 -107 271 -86 262 -107 b 187 -45 228 -107 197 -55 b 135 -23 168 -26 156 -23 z', + }, + accSagittal9TinasUp: { + x_min: -7, + x_max: 312, + y_min: 16, + y_max: 106.31676725154982, + ha: 90.31676725154982, + o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 343 65 314 23 336 55 b 387 107 359 86 376 107 b 406 23 399 107 408 86 l 449 23 b 405 150 449 112 433 135 b 338 130 387 158 356 150 b 308 92 325 115 317 104 b 269 150 302 127 289 140 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z', + }, + accSagittal9TinasDown: { + x_min: -7, + x_max: 312, + y_min: -106.31676725154983, + y_max: -16, + ha: 90.31676725154983, + o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 308 -92 289 -140 302 -127 b 338 -130 317 -104 325 -115 b 405 -150 356 -150 387 -158 b 449 -23 433 -135 449 -112 l 406 -23 b 387 -107 408 -86 399 -107 b 343 -65 376 -107 359 -86 b 314 -23 336 -55 314 -23 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z', + }, + accSagittalFractionalTinaUp: { + x_min: -3, + x_max: 35, + y_min: 73, + y_max: 111, + ha: 38, + o: 'm -4 132 b 23 105 -4 118 9 105 b 50 132 37 105 50 118 b 23 160 50 147 37 160 b -4 132 9 160 -4 147 z', + }, + accSagittalFractionalTinaDown: { + x_min: -3, + x_max: 35, + y_min: -111, + y_max: -73, + ha: 38, + o: 'm -4 -132 b 23 -160 -4 -147 9 -160 b 50 -132 37 -160 50 -147 b 23 -105 50 -118 37 -105 b -4 -132 9 -105 -4 -118 z', + }, + accidentalNarrowReversedFlat: { + x_min: 0, + x_max: 164, + y_min: -194, + y_max: 421, + ha: 615, + o: 'm 236 -279 l 236 606 l 192 606 l 192 179 b 85 243 150 222 114 243 b 0 84 23 243 0 134 b 112 -158 0 3 37 -78 z m 192 112 l 192 -163 l 135 -98 b 82 40 101 -50 82 -3 b 138 144 82 73 96 144 b 192 112 153 144 170 132 z', + }, + accidentalNarrowReversedFlatAndFlat: { + x_min: 0, + x_max: 414, + y_min: -194, + y_max: 421, + ha: 615, + o: 'm 281 606 l 281 -268 l 438 -158 b 596 84 547 -82 596 3 b 475 243 596 154 556 243 b 325 179 435 243 384 222 l 325 606 z m 235 -279 l 235 606 l 190 606 l 190 179 b 85 243 148 222 114 243 b 12 158 52 243 27 215 b 0 84 3 134 0 108 b 112 -158 0 3 37 -78 z m 325 111 b 410 144 359 132 386 144 b 498 36 462 144 498 84 b 413 -107 498 -9 469 -58 l 325 -173 z m 192 112 l 192 -163 l 135 -98 b 81 40 99 -50 81 -3 b 91 94 81 59 84 76 b 137 144 102 127 118 144 b 192 112 153 144 170 132 z', + }, + accidentalWilsonPlus: { + x_min: 0, + x_max: 281, + y_min: -203, + y_max: 203, + ha: 406, + o: 'm 405 268 l 225 98 l 225 292 l 180 292 l 180 56 l 0 -112 l 0 -268 l 180 -98 l 180 -292 l 225 -292 l 225 -56 l 405 112 z', + }, + accidentalWilsonMinus: { + x_min: 0, + x_max: 281, + y_min: -186, + y_max: 186, + ha: 372, + o: 'm 0 112 l 405 -268 l 405 -112 l 0 268 z', + }, + }, + fontFamily: 'Bravura', + resolution: 1000, + generatedOn: '2022-06-26T17:36:54.186Z', +}; + + +/***/ }), + +/***/ "./src/fonts/bravura_metrics.ts": +/*!**************************************!*\ + !*** ./src/fonts/bravura_metrics.ts ***! + \**************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "BravuraMetrics": () => (/* binding */ BravuraMetrics) +/* harmony export */ }); +/** + * The Bravura font was created by Daniel Spreadbury @ Steinberg. + * https://github.com/steinbergmedia/bravura/ + */ +const BravuraMetrics = { + name: 'Bravura', + smufl: true, + stave: { + padding: 12, + endPaddingMax: 10, + endPaddingMin: 5, + unalignedNotePadding: 10, + }, + accidental: { + noteheadAccidentalPadding: 1, + leftPadding: 2, + accidentalSpacing: 3, + }, + clef: { + default: { + point: 32, + width: 26, + }, + small: { + point: 26, + width: 20, + }, + annotations: { + '8va': { + smuflCode: 'timeSig8', + default: { + point: 18, + treble: { + line: -1.4, + shiftX: 12, + }, + }, + small: { + point: 16, + treble: { + line: -0.2, + shiftX: 8, + }, + }, + }, + '8vb': { + smuflCode: 'timeSig8', + default: { + point: 18, + treble: { + line: 6, + shiftX: 10, + }, + bass: { + line: 3.5, + shiftX: 1, + }, + }, + small: { + point: 16, + treble: { + line: 5.3, + shiftX: 6, + }, + bass: { + line: 3.1, + shiftX: 0.5, + }, + }, + }, + }, + // These may no longer be necessary + lineCount: { + '8': { point: 55, shiftY: 14 }, + '7': { point: 47, shiftY: 8 }, + '6': { point: 32, shiftY: 1 }, + '5': { point: 30, shiftY: -6 }, + '4': { point: 23, shiftY: -12 }, + }, + }, + parenthesis: { + default: { + point: 39, + width: 7, + }, + gracenote: { + point: (39 * 3) / 5, + width: 3, + }, + }, + pedalMarking: { + up: { + point: 40, + }, + down: { + point: 34, + }, + }, + // These are for numeric digits, such as in time signatures + digits: { + // used by timesig + shiftLine: -1, + point: 34, + // used by tuplets + tupletPoint: 22, + shiftY: -6, + }, + articulation: { + articStaccatissimoAbove: { + padding: 2, + }, + articStaccatissimoBelow: { + padding: 2, + }, + }, + tremolo: { + default: { + point: 25, + spacing: 5, + offsetYStemUp: -5, + offsetYStemDown: 5, + offsetXStemUp: 11, + offsetXStemDown: 1, + }, + grace: { + point: 18, + spacing: 4, + offsetYStemUp: -5, + offsetYStemDown: 5, + offsetXStemUp: 7, + offsetXStemDown: 1, + }, + }, + staveRepetition: { + symbolText: { + offsetX: 12, + offsetY: 25, + spacing: 5, + }, + coda: { + offsetY: 25, + }, + segno: { + offsetY: 10, + }, + }, + // noteHead: { + // }, + stem: { + heightAdjustmentForFlag: -3, + // These are stem (Y) offsets to the note heads. To shift the + // noteheads (x-position) themselves, see glyphs.notehead.custom. + noteHead: { + noteheadTriangleUpHalf: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpBlack: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpWhole: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadXHalf: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXBlack: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXWhole: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadHalf: { + offsetYBaseStemUp: -2.55, + offsetYBaseStemDown: 2.65, + }, + noteheadBlack: { + offsetYBaseStemUp: -2, + offsetYBaseStemDown: 2, + }, + noteheadSquareWhite: { + offsetYBaseStemDown: -5, + offsetYBaseStemUp: 5, + }, + }, + }, + // Values under here are used by the Glyph class to reposition and rescale + // glyphs based on their category. This should be the first stop for + // custom font glyph repositioning. + // + // The glyph loader first looks up a specific set of settings based on the + // glyph code, and if not found, uses the defaults from the category. See + // glyphs.textNote for an example of this. + // + // Details in Glyph.lookupFontMetrics. + glyphs: { + coda: { + point: 20, + shiftX: -7, + shiftY: 8, + }, + segno: { + shiftX: -7, + }, + flag: { + shiftX: -0.75, + staveTempo: { + shiftX: -1, + }, + }, + clef: { + gClef: { + default: { scale: 1.1, shiftY: 1 }, + small: { shiftY: 1.5 }, + }, + fClef: { + default: { shiftY: -0.5 }, + }, + }, + ornament: { + ornamentTurn: { + scale: 1.2, + }, + ornamentTurnSlash: { + scale: 1.2, + }, + }, + stringNumber: { + verticalPadding: 8, + stemPadding: 2, + leftPadding: 5, + rightPadding: 6, + }, + stroke: { + arrowheadBlackDown: { + straight: { + shiftX: -4.5, + }, + wiggly: { + shiftX: -1, + shiftY: 1, + }, + }, + arrowheadBlackUp: { + straight: { + shiftX: -0.85, + }, + wiggly: { + shiftX: -1, + shiftY: 1, + }, + }, + }, + textNote: { + point: 34, + breathMarkTick: { + point: 36, + shiftY: 9, + }, + breathMarkComma: { + point: 36, + }, + segno: { + point: 30, + shiftX: -7, + shiftY: 8, + }, + coda: { + point: 20, + shiftX: -7, + shiftY: 8, + }, + ornamentTrill: { + shiftX: -8, + shiftY: 8, + }, + ornamentTurn: { + point: 42, + }, + ornamentTurnSlash: { + point: 42, + }, + ornamentMordent: { + shiftX: -8, + }, + ornamentShortTrill: { + shiftX: -8, + }, + }, + noteHead: { + minPadding: 2, + standard: { + restQuarterStemUp: { + point: 35, + }, + restQuarterStemDown: { + point: 35, + }, + }, + custom: { + noteheadCircleXStemUp: { + shiftX: 1.5, + }, + noteheadCircleXStemDown: { + shiftX: 0.25, + }, + noteheadDiamondHalfStemUp: { + shiftX: 1.5, + }, + noteheadDiamondBlackStemUp: { + shiftX: 1.5, + }, + noteheadDiamondWholeStemUp: { + shiftX: 1, + }, + noteheadXHalfStemUp: { + shiftX: -2, + }, + noteheadXHalfStemDown: { + shiftX: 1, + }, + noteheadXWholeStemUp: { + shiftX: -4, + }, + noteheadXWholeStemDown: { + shiftX: 1, + }, + noteheadXDoubleWholeStemUp: { + shiftX: -4, + }, + noteheadXDoubleWholeStemDown: { + shiftX: 1, + }, + noteheadSquareWhiteStemDown: { + shiftX: 0.25, + }, + noteheadSquareWhiteStemUp: { + shiftX: -0.75, + }, + noteheadSquareBlackStemUp: { + shiftX: -0.75, + }, + noteheadTriangleUpWholeStemUp: { + shiftX: -0.75, + }, + }, + }, + chordSymbol: { + global: { + superscriptOffset: -400, + subscriptOffset: 300, + kerningOffset: -250, + lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'], + upperKerningText: ['A', 'L'], + spacing: 100, + superSubRatio: 0.66, + }, + csymDiminished: { + scale: 0.8, + leftSideBearing: -32, + advanceWidth: 506, + yOffset: 0, + }, + csymHalfDiminished: { + scale: 0.8, + leftSideBearing: -32, + advanceWidth: 506, + yOffset: 0, + }, + csymAugmented: { + scale: 1, + leftSideBearing: 0, + advanceWidth: 530, + yOffset: 0, + }, + csymParensLeftTall: { + scale: 0.8, + leftSideBearing: -20, + advanceWidth: 184, + yOffset: 250, + }, + csymParensRightTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 189, + yOffset: 250, + }, + csymBracketLeftTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 328, + yOffset: 0, + }, + csymBracketRightTall: { + scale: 0.8, + leftSideBearing: 1, + advanceWidth: 600, + yOffset: 0, + }, + csymParensLeftVeryTall: { + scale: 0.9, + leftSideBearing: 50, + advanceWidth: 121, + yOffset: 350, + }, + csymParensRightVeryTall: { + scale: 0.9, + leftSideBearing: 0, + advanceWidth: 111, + yOffset: 350, + }, + csymDiagonalArrangementSlash: { + scale: 0.6, + leftSideBearing: -1, + advanceWidth: 990, + yOffset: 0, + }, + csymMinor: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 482, + yOffset: 0, + }, + csymMajorSeventh: { + scale: 0.9, + leftSideBearing: 200, + yOffset: 0, + advanceWidth: 600, + }, + accidentalSharp: { + scale: 0.75, + leftSideBearing: 20, + advanceWidth: 250, + yOffset: -302, + }, + accidentalFlat: { + scale: 0.9, + leftSideBearing: -20, + advanceWidth: 226, + yOffset: -184, + }, + }, + jazzOrnaments: { + brassScoop: { + scale: 1.0, + xOffset: -12, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 20, + }, + brassDoitMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 22, + }, + brassFallLipShort: { + scale: 1.0, + xOffset: 16, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 15, + }, + brassLiftMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 5, + stemUpYOffset: 0, + reportedWidth: 5, + }, + brassFallRoughMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 28, + stemUpYOffset: 0, + reportedWidth: 5, + }, + brassBend: { + scale: 1.0, + xOffset: 2, + yOffset: -8, + stemUpYOffset: 25, + reportedWidth: 5, + }, + brassMuteClosed: { + scale: 1.0, + xOffset: 3, + yOffset: -8, + stemUpYOffset: 25, + reportedWidth: 5, + }, + brassMuteOpen: { + scale: 1.0, + xOffset: 3, + yOffset: -7, + stemUpYOffset: 25, + reportedWidth: 5, + }, + brassFlip: { + scale: 1.0, + xOffset: 10, + yOffset: 0, + stemUpYOffset: 7, + reportedWidth: 10, + }, + brassJazzTurn: { + scale: 1.0, + xOffset: 0, + yOffset: 0, + stemUpYOffset: 8, + reportedWidth: 31, + }, + brassSmear: { + scale: 1.0, + xOffset: 10, + yOffset: 0, + stemUpYOffset: 8, + reportedWidth: 5, + }, + }, + tuplet: { + noteHeadOffset: 20, + stemOffset: 10, + bottomLine: 4, + topModifierOffset: 15, + }, + }, +}; + + +/***/ }), + +/***/ "./src/fonts/custom_glyphs.ts": +/*!************************************!*\ + !*** ./src/fonts/custom_glyphs.ts ***! + \************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "CustomFont": () => (/* binding */ CustomFont) +/* harmony export */ }); +const CustomFont = { + resolution: 1000, + fontFamily: 'VexFlowCustom', + glyphs: { + noteheadSquareWhite: { + x_min: 0, + x_max: 430.75, + ha: 386, + o: 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 l 50 150 l 380 150 l 380 -150 l 50 -150 l 50 150 ', + }, + noteheadSquareBlack: { + x_min: 0, + x_max: 430.75, + ha: 386, + o: 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 ', + }, + accidentalBuyukMucennebFlat: { + x_min: -171.5, + x_max: 251.8125, + ha: 257, + o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ', + }, + accidentalBakiyeFlat: { + x_min: -176.9375, + x_max: 251.8125, + ha: 257, + o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ', + }, + accidentalKucukMucennebSharp: { + x_min: -1.359375, + x_max: 255.890625, + ha: 261, + o: 'm 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 ', + }, + accidentalKoron: { + x_min: -20, + x_max: 320, + ha: 257, + o: 'm -8 200 b -8 210 8 200 16 200 l 20 148 -199 l 23 -615 b 0 -629 9 -629 6 -629 l -21 -612 l -21 -201 l -21 216 l -20 200 m 16 200 l 310 0 l 240 0 l 16 140 l 16 -120 l 240 0 l 310 0 l 16 -200 ', + }, + accidentalSori: { + x_min: -10.890625, + x_max: 299.4375, + ha: 294, + o: 'm 44 174 b 51 174 47 174 49 174 b 68 173 55 174 61 174 l 287 112 l 551 40 b 615 20 617 22 609 23 b 626 0 622 16 626 8 b 615 -22 626 -9 622 -18 b 613 -23 613 -23 613 -23 b 613 -23 613 -23 613 -23 b 287 -113 613 -24 597 -29 l 68 -174 b 53 -176 61 -176 57 -176 b 39 -172 47 -176 43 -174 b 27 -151 31 -167 27 -159 b 39 -129 27 -141 31 -133 b 230 -74 43 -124 20 -131 l 370 -36 l 468 -9 b 498 0 484 -4 498 -1 b 468 8 498 0 484 2 l 370 34 l 230 73 b 40 126 28 129 43 124 b 27 149 31 131 27 140 b 44 174 27 161 34 170 m 205 110 l 205 300 b 205 330 245 330 245 300 l 245 300 l 245 -300 b 245 -330 205 -330 205 -300 l 205 -300 l 205 110 l 345 90 m 345 90 l 345 330 b 345 360 385 360 385 330 l 385 330 l 385 -270 b 385 -300 345 -300 345 -270 l 345 -270 l 345 90 ', + }, + vexAccidentalMicrotonal2: { + x_min: -1.359375, + x_max: 386.5625, + ha: 394, + o: 'm 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 ', + }, + vexAccidentalMicrotonal3: { + x_min: 0, + x_max: 430.75, + ha: 360, + o: 'm -146 537 b -138 538 -143 538 -141 538 b -118 525 -129 538 -121 533 b -117 390 -117 522 -117 521 b -115 259 -117 268 -117 259 b -115 259 -115 259 -115 259 b -59 272 -104 263 -62 272 b -39 259 -50 272 -42 267 b -37 209 -38 257 -37 233 b -39 159 -37 185 -38 162 b -85 138 -43 149 -44 149 l -117 131 l -117 21 b -115 -88 -117 -80 -117 -88 b -115 -88 -115 -88 -115 -88 b -59 -75 -104 -84 -62 -75 b -44 -81 -52 -75 -48 -77 b -38 -124 -38 -87 -38 -85 b -38 -138 -38 -124 -38 -138 b -38 -152 -38 -138 -38 -152 b -44 -195 -38 -191 -38 -190 b -85 -209 -48 -200 -48 -200 l -117 -217 l -117 -349 b -118 -486 -117 -481 -117 -482 b -138 -499 -121 -494 -129 -499 b -153 -493 -143 -499 -149 -497 b -159 -415 -158 -487 -159 -496 b -159 -355 -159 -398 -159 -379 b -159 -227 -159 -284 -159 -227 b -205 -238 -159 -227 -180 -232 b -250 -249 -230 -244 -250 -249 b -251 -386 -251 -249 -251 -311 b -252 -525 -251 -521 -251 -522 b -272 -538 -255 -534 -264 -538 b -287 -532 -277 -538 -283 -536 b -293 -452 -292 -527 -293 -536 b -293 -391 -293 -436 -293 -415 b -294 -260 -293 -269 -293 -260 b -294 -260 -294 -260 -294 -260 b -348 -272 -306 -264 -345 -272 b -368 -259 -357 -272 -365 -267 b -369 -209 -369 -257 -369 -233 b -368 -159 -369 -185 -369 -162 b -323 -139 -364 -149 -362 -148 l -293 -131 l -293 -22 b -294 87 -293 80 -293 87 b -294 87 -294 87 -294 87 b -348 75 -306 84 -345 75 b -368 88 -357 75 -365 80 b -369 138 -369 91 -369 114 b -368 188 -369 162 -369 186 b -323 209 -364 198 -362 199 l -293 216 l -293 349 b -292 486 -293 481 -293 482 b -272 499 -288 494 -280 499 b -257 493 -266 499 -261 497 b -251 414 -251 487 -251 496 b -251 354 -251 398 -251 378 b -251 226 -251 284 -251 226 b -205 238 -250 226 -230 231 b -159 249 -180 244 -159 249 b -159 385 -159 249 -159 310 b -157 525 -159 521 -159 522 b -146 537 -156 530 -151 535 z m -159 11 b -159 120 -159 98 -159 120 l -159 120 b -175 116 -160 120 -167 119 b -221 105 -184 114 -204 109 l -251 98 l -251 -12 b -251 -121 -251 -72 -251 -121 b -205 -110 -250 -121 -230 -116 b -159 -99 -180 -104 -159 -99 b -159 11 -159 -99 -159 -49 z m 89 517 b 97 519 92 518 94 519 b 117 505 106 519 114 513 b 119 376 119 502 119 501 l 119 249 l 145 258 b 176 267 169 266 172 267 b 177 267 176 267 177 267 b 196 255 186 267 192 263 l 197 252 l 197 205 b 197 181 197 195 197 187 b 193 149 197 153 197 153 b 152 131 190 144 187 143 l 119 120 l 119 10 b 119 -100 119 -62 119 -100 b 145 -91 120 -100 131 -96 b 173 -82 159 -86 171 -82 b 176 -81 174 -81 175 -81 b 196 -94 185 -81 193 -87 b 198 -151 197 -97 198 -125 b 197 -194 198 -172 197 -192 b 153 -218 193 -203 192 -204 l 119 -230 l 119 -367 l 118 -504 l 117 -507 b 97 -519 113 -514 105 -519 b 82 -512 92 -519 87 -517 b 76 -434 77 -507 76 -516 b 76 -374 76 -418 76 -398 b 76 -245 76 -303 76 -245 b 52 -254 76 -245 65 -249 b 19 -263 34 -260 25 -263 b 6 -257 13 -263 10 -261 b 0 -214 0 -251 0 -253 b 0 -200 0 -210 0 -205 b 0 -188 0 -196 0 -192 b 6 -143 0 -147 0 -149 b 46 -126 10 -139 10 -139 l 76 -115 l 76 -5 b 76 106 76 56 76 106 b 51 98 76 106 64 102 b 18 89 34 92 25 89 b 6 95 13 89 10 91 b 0 139 0 101 0 99 b 0 153 0 143 0 148 b 0 179 0 163 0 172 b 44 225 0 215 3 211 l 76 236 l 76 369 b 78 505 76 501 76 502 b 89 517 80 510 85 515 z ', + }, + vexAccidentalMicrotonal4: { + x_min: 0, + x_max: 430.75, + ha: 360, + o: 'm 283 633 b 291 634 286 634 289 634 b 311 621 300 634 308 629 b 313 505 313 618 313 617 b 313 393 313 443 313 393 b 378 425 313 393 343 407 l 443 458 l 448 458 b 449 458 449 458 449 458 b 471 437 462 458 471 448 b 469 429 471 434 470 432 b 387 382 466 421 469 423 l 313 344 l 313 247 l 313 150 l 315 152 b 433 201 353 184 394 201 b 479 193 448 201 464 198 b 549 86 524 177 549 135 b 526 1 549 59 541 29 b 395 -143 504 -39 475 -71 b 316 -214 351 -182 341 -191 b 292 -229 302 -228 300 -229 b 272 -216 283 -229 275 -224 b 271 55 271 -212 271 -212 b 270 323 271 203 270 323 b 205 291 270 323 241 308 l 140 258 l 135 258 b 134 258 135 258 134 258 b 112 279 121 258 112 267 b 114 287 112 281 113 284 b 196 334 117 295 114 293 l 271 371 l 271 495 b 272 621 271 617 271 618 b 283 633 274 626 279 631 z m 404 133 b 391 134 400 134 395 134 b 384 134 388 134 386 134 b 318 88 358 130 335 114 l 313 81 l 313 -37 l 313 -156 l 316 -152 b 439 83 391 -71 439 22 l 439 84 b 404 133 439 115 430 128 z m -8 633 l -8 633 b 0 634 -6 634 -3 634 b 20 621 8 634 17 629 b 21 384 21 618 21 617 l 21 150 l 24 152 b 141 201 62 184 102 201 b 187 193 157 201 172 198 b 257 86 232 177 257 135 b 234 1 257 59 250 29 b 103 -143 212 -39 183 -71 b 24 -214 60 -182 49 -191 b 0 -229 10 -228 8 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 203 l -21 618 l -20 621 b -8 633 -18 626 -13 631 z m 113 133 l 113 133 b 99 134 109 134 103 134 b 93 134 97 134 94 134 b 26 88 66 130 43 114 l 21 81 l 21 -37 l 21 -156 l 25 -152 b 148 83 99 -71 148 22 l 148 84 b 113 133 148 115 138 128 z ', + }, + vexNoteHeadRectBlack: { + x_min: 0, + x_max: 430.75, + ha: 360, + o: 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 ', + }, + vexNoteHeadRectWhite: { + x_min: 0, + x_max: 430.75, + ha: 360, + o: 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 l 50 100 l 380 100 l 380 -100 l 50 -100 l 50 100', + }, + }, +}; + + +/***/ }), + +/***/ "./src/fonts/custom_metrics.ts": +/*!*************************************!*\ + !*** ./src/fonts/custom_metrics.ts ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "CustomMetrics": () => (/* binding */ CustomMetrics) +/* harmony export */ }); +const CustomMetrics = { + name: 'VexFlowCustom', + smufl: false, + glyphs: {}, +}; + + +/***/ }), + +/***/ "./src/fonts/gonville_glyphs.ts": +/*!**************************************!*\ + !*** ./src/fonts/gonville_glyphs.ts ***! + \**************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "GonvilleFont": () => (/* binding */ GonvilleFont) +/* harmony export */ }); +const GonvilleFont = { + glyphs: { + bracketTop: { + x_min: 0, + x_max: 559.421875, + ha: 571, + o: 'm 544 204 b 548 204 545 204 547 204 b 559 194 555 204 559 199 b 559 190 559 192 559 191 b 530 156 559 188 556 184 b 462 86 510 134 481 104 b 453 76 458 81 454 77 l 446 70 l 441 65 b 434 59 439 63 436 61 l 427 54 b 409 37 426 51 416 44 b 392 23 398 29 394 26 b 387 19 389 22 387 20 b 379 13 386 19 383 16 l 371 8 l 367 5 l 359 -1 l 337 -16 b 285 -48 319 -29 298 -41 l 279 -52 b 186 -95 255 -66 210 -87 l 175 -99 b 23 -129 127 -117 68 -129 b 17 -129 20 -129 19 -129 b 1 -123 2 -129 2 -129 b 0 -49 0 -122 0 -83 b 0 4 0 -22 0 1 b 27 11 2 9 4 9 b 185 31 78 12 145 20 b 198 34 186 31 193 33 b 314 73 234 44 277 58 b 349 88 328 79 340 84 b 353 90 352 90 353 90 b 363 94 353 90 357 93 b 371 98 367 97 371 98 b 428 129 372 98 413 120 b 461 148 441 136 454 144 b 468 151 464 149 466 151 b 472 154 469 152 470 154 b 481 161 473 155 477 158 b 525 190 490 166 518 186 l 534 197 b 540 201 536 198 539 199 b 544 204 541 202 544 204 ', + }, + bracketBottom: { + x_min: 0, + x_max: 559.421875, + ha: 571, + o: 'm 5 127 b 14 127 6 127 9 127 b 51 126 25 127 43 127 b 175 98 93 122 138 112 l 186 94 b 279 51 210 86 255 65 b 285 47 280 51 283 48 b 319 27 291 44 311 31 l 326 22 b 359 0 332 19 352 4 l 367 -6 b 371 -9 368 -6 370 -8 l 379 -15 b 387 -22 383 -18 386 -20 l 398 -30 l 411 -40 l 417 -47 l 427 -55 l 434 -61 b 441 -66 436 -62 439 -65 l 446 -72 l 453 -77 l 462 -87 b 558 -188 490 -113 549 -176 b 559 -195 559 -191 559 -194 b 548 -205 559 -201 555 -205 b 541 -204 547 -205 544 -205 b 534 -198 539 -201 536 -199 l 525 -191 b 481 -162 518 -187 490 -167 b 472 -155 477 -159 472 -156 b 468 -152 470 -155 469 -154 b 461 -149 466 -152 464 -151 b 428 -130 454 -145 441 -137 b 371 -99 413 -122 372 -99 b 363 -95 371 -99 367 -98 b 353 -91 357 -94 353 -91 b 348 -90 353 -91 352 -91 b 332 -81 343 -87 341 -86 b 27 -12 230 -37 127 -13 b 0 -5 4 -11 2 -11 b 0 58 0 -2 0 27 b 0 122 0 88 0 120 b 5 127 1 124 4 126 ', + }, + barlineTick: { + x_min: -80.3125, + x_max: 78.9375, + ha: 81, + o: 'm 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 ', + }, + breathMarkTick: { + x_min: -80.3125, + x_max: 78.9375, + ha: 81, + o: 'm 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 ', + }, + segno: { + x_min: -330.75, + x_max: 329.390625, + ha: 336, + o: 'm -133 483 b -117 484 -127 484 -122 484 b 31 373 -51 484 9 440 b 35 348 34 365 35 356 b -25 285 35 313 10 285 b -87 331 -55 285 -76 302 b -167 402 -100 376 -133 402 b -191 398 -175 402 -183 401 b -227 341 -215 388 -227 369 b -225 320 -227 334 -227 327 b -13 74 -209 230 -125 133 b 6 65 -4 70 5 66 l 9 63 l 10 65 b 117 231 12 68 40 112 l 189 341 l 242 424 b 268 460 262 456 264 458 b 283 464 273 463 277 464 b 308 438 296 464 308 453 l 308 437 b 287 396 308 430 308 428 l 95 98 l 59 43 l 58 41 l 65 37 b 253 -156 151 -8 217 -77 b 281 -285 272 -199 281 -244 b 148 -481 281 -381 231 -463 b 115 -485 137 -484 126 -485 b -32 -376 51 -485 -9 -442 b -36 -349 -35 -366 -36 -358 b 25 -287 -36 -315 -12 -287 b 85 -333 54 -287 74 -302 b 166 -403 99 -377 133 -403 b 190 -399 174 -403 182 -402 b 225 -342 215 -390 225 -370 b 224 -322 225 -335 225 -328 b 12 -76 208 -231 125 -134 b -8 -66 2 -72 -6 -68 l -10 -65 l -12 -66 b -118 -231 -13 -68 -42 -113 l -190 -342 l -243 -426 b -269 -462 -264 -458 -265 -458 b -284 -466 -274 -464 -279 -466 b -310 -440 -298 -466 -310 -455 l -310 -438 b -288 -398 -310 -430 -308 -430 l -96 -99 l -59 -44 l -59 -43 l -66 -38 b -281 284 -198 33 -281 158 l -281 284 b -133 483 -281 392 -220 474 m 254 177 b 266 179 258 177 262 179 b 319 149 287 179 307 167 b 329 115 326 140 329 127 b 319 79 329 102 326 90 b 268 51 307 61 287 51 b 221 72 250 51 234 58 b 205 115 210 84 205 99 b 254 177 205 142 223 170 m -281 -54 b -269 -52 -277 -52 -273 -52 b -223 -73 -253 -52 -235 -59 b -206 -116 -212 -84 -206 -101 b -216 -151 -206 -129 -209 -141 b -269 -179 -228 -170 -249 -179 b -314 -159 -285 -179 -302 -173 b -330 -116 -325 -147 -330 -131 b -281 -54 -330 -88 -313 -61 ', + }, + coda: { + x_min: -311.6875, + x_max: 310.328125, + ha: 317, + o: 'm -9 388 b -2 390 -8 390 -5 390 b 5 388 1 390 4 390 b 19 378 10 387 16 383 b 23 333 23 371 23 371 b 24 298 23 299 24 298 b 81 276 34 298 65 285 b 213 91 145 240 190 177 b 224 24 217 76 224 36 b 257 24 224 24 235 24 b 299 19 292 24 292 24 b 310 -1 306 15 310 6 b 299 -23 310 -11 306 -19 b 257 -27 292 -27 292 -27 b 224 -29 235 -27 224 -29 b 213 -95 224 -40 217 -80 b 81 -280 190 -181 145 -244 b 24 -301 65 -290 34 -301 b 23 -335 24 -301 23 -303 l 23 -340 b 17 -381 23 -374 23 -374 b -1 -391 13 -388 5 -391 b -21 -381 -9 -391 -17 -388 b -27 -340 -27 -374 -27 -374 l -27 -335 b -28 -301 -27 -303 -27 -301 b -85 -280 -38 -301 -69 -290 b -217 -95 -149 -244 -194 -181 b -228 -29 -221 -80 -228 -40 b -259 -27 -228 -29 -238 -27 b -300 -23 -294 -27 -294 -27 b -311 -2 -307 -19 -311 -11 b -294 23 -311 8 -304 19 b -259 24 -291 23 -284 24 b -228 24 -239 24 -228 24 b -217 91 -228 36 -221 76 b -85 276 -194 177 -149 240 b -28 298 -69 285 -38 298 b -27 333 -27 298 -27 299 b -27 371 -27 362 -27 369 b -9 388 -24 378 -17 385 m -27 136 b -28 247 -27 197 -28 247 b -61 216 -31 247 -53 226 b -123 33 -95 172 -121 98 l -125 24 l -76 24 l -27 24 l -27 136 m 29 242 b 24 247 27 245 24 247 b 23 136 24 247 23 197 l 23 24 l 72 24 l 121 24 l 119 33 b 29 242 115 116 77 206 m -27 -140 l -27 -27 l -76 -27 l -125 -27 l -123 -36 b -61 -220 -121 -102 -95 -176 b -28 -251 -53 -230 -31 -251 b -27 -140 -28 -251 -27 -201 m 119 -36 l 121 -27 l 72 -27 l 23 -27 l 23 -140 b 24 -251 23 -201 24 -251 b 57 -220 27 -251 49 -230 b 119 -36 91 -176 117 -102 ', + }, + gClef: { + x_min: -1.359375, + x_max: 847.96875, + ha: 865, + o: 'm 488 1499 b 495 1500 490 1500 492 1500 b 541 1465 507 1500 521 1490 b 679 1078 622 1372 679 1210 b 677 1050 679 1068 677 1060 b 477 642 668 893 604 764 l 443 609 l 431 596 l 431 592 l 438 562 l 449 508 l 460 458 b 481 355 475 390 481 355 b 481 355 481 355 481 355 b 490 356 481 355 485 355 b 528 358 495 356 511 358 b 558 356 540 358 552 356 b 839 95 699 338 808 237 b 847 22 845 72 847 47 b 631 -303 847 -113 766 -242 b 620 -309 623 -308 620 -309 l 620 -310 b 631 -359 620 -310 626 -333 l 646 -435 l 660 -496 b 672 -588 668 -535 672 -563 b 664 -653 672 -610 669 -630 b 383 -875 630 -792 509 -875 b 201 -810 321 -875 257 -855 b 129 -680 151 -768 129 -730 b 274 -530 129 -592 200 -530 b 351 -553 300 -530 326 -538 b 412 -669 393 -582 412 -626 b 287 -805 412 -735 366 -800 l 279 -805 l 285 -809 b 383 -830 318 -823 351 -830 b 586 -718 464 -830 540 -789 b 626 -584 612 -678 626 -631 b 619 -528 626 -566 623 -548 b 612 -495 619 -526 616 -510 b 577 -324 590 -387 577 -324 b 577 -324 577 -324 577 -324 b 568 -326 575 -324 571 -324 b 528 -334 558 -328 537 -333 b 465 -338 506 -337 485 -338 b 24 -11 269 -338 87 -206 b -1 145 8 41 -1 93 b 96 442 -1 249 32 351 b 322 714 166 541 236 626 l 352 745 l 345 782 l 332 843 l 315 921 b 303 984 310 950 304 978 b 295 1082 298 1017 295 1049 b 413 1426 295 1208 336 1329 b 488 1499 436 1456 477 1496 m 549 1301 b 541 1301 547 1301 544 1301 b 411 1207 500 1301 447 1263 b 355 1004 374 1152 355 1079 b 359 942 355 984 356 963 b 371 881 362 927 363 917 l 385 818 b 392 782 389 799 392 784 l 392 782 b 434 828 393 782 424 816 b 607 1165 534 941 594 1060 b 608 1193 608 1175 608 1183 b 597 1270 608 1224 604 1254 b 549 1301 589 1286 571 1299 m 398 528 b 393 555 396 542 393 553 b 392 555 393 555 393 555 b 317 470 390 555 347 505 b 190 298 266 408 212 334 b 127 70 148 227 127 148 b 155 -77 127 19 137 -30 b 468 -303 209 -216 333 -303 b 519 -299 484 -303 502 -302 b 568 -284 541 -295 568 -287 l 568 -284 b 563 -263 568 -284 566 -274 l 534 -120 l 511 -13 l 496 61 l 480 133 b 469 187 472 176 469 187 b 468 188 469 187 469 188 b 416 162 462 188 430 172 b 337 13 364 126 337 69 b 413 -124 337 -40 363 -93 b 428 -144 424 -131 428 -137 b 428 -149 428 -145 428 -148 b 409 -166 426 -161 419 -166 b 394 -162 405 -166 400 -165 b 240 77 302 -122 240 -27 l 240 77 b 430 342 240 197 315 301 l 436 344 l 426 394 l 398 528 m 548 194 b 526 195 540 195 532 195 b 519 195 524 195 521 195 l 514 195 l 518 177 l 539 79 l 552 15 l 566 -48 l 594 -187 l 605 -240 b 612 -266 609 -254 611 -266 b 612 -266 612 -266 612 -266 b 641 -248 613 -266 630 -256 b 744 -98 692 -212 730 -156 b 751 -40 749 -79 751 -59 b 548 194 751 76 665 181 ', + }, + cClef: { + x_min: 0, + x_max: 873.828125, + ha: 892, + o: 'm 0 0 l 0 703 l 81 703 l 164 703 l 164 0 l 164 -705 l 81 -705 l 0 -705 l 0 0 m 225 0 l 225 703 l 246 703 l 268 703 l 268 366 l 268 30 l 274 36 b 314 79 284 44 302 63 b 413 302 357 137 392 213 b 432 327 419 324 421 327 b 449 306 443 327 447 322 b 611 115 457 195 529 115 b 651 122 624 115 638 117 b 728 316 705 140 724 188 b 729 388 728 342 729 366 b 671 635 729 533 711 602 b 581 662 649 652 616 662 b 477 637 545 662 510 653 l 475 635 l 477 634 b 503 627 488 632 495 631 b 545 556 532 612 545 584 b 491 480 545 524 526 491 b 465 474 481 476 473 474 b 379 563 417 474 379 516 b 389 602 379 576 382 588 b 541 691 409 641 479 681 b 582 694 555 692 568 694 b 865 462 714 694 834 598 b 873 392 871 440 873 416 b 865 317 873 367 871 341 b 639 84 839 194 748 101 b 612 83 630 83 620 83 b 511 116 577 83 543 94 b 504 120 509 119 506 120 b 504 120 504 120 504 120 b 469 59 504 120 488 93 l 432 -1 l 469 -61 b 504 -122 488 -94 504 -122 b 504 -122 504 -122 504 -122 b 511 -117 506 -122 509 -120 b 612 -84 543 -95 577 -84 b 665 -91 630 -84 647 -87 b 869 -338 771 -122 850 -216 b 873 -392 872 -356 873 -374 b 798 -595 873 -469 847 -539 b 581 -695 741 -662 660 -695 b 406 -626 517 -695 454 -671 b 381 -563 389 -607 381 -585 b 465 -477 381 -519 413 -477 b 545 -559 514 -477 545 -519 b 503 -628 545 -587 532 -613 b 477 -635 495 -632 488 -634 l 475 -637 l 477 -638 b 581 -663 510 -655 545 -663 b 671 -637 616 -663 649 -653 b 729 -391 711 -603 729 -534 b 728 -317 729 -367 728 -344 b 623 -117 722 -173 698 -124 b 611 -116 619 -116 615 -116 b 449 -308 528 -116 457 -198 b 432 -328 447 -323 443 -328 b 413 -303 421 -328 419 -326 b 314 -80 392 -215 357 -138 b 274 -37 302 -65 284 -45 l 268 -31 l 268 -367 l 268 -705 l 246 -705 l 225 -705 l 225 0 ', + }, + fClef: { + x_min: -1.359375, + x_max: 899.703125, + ha: 918, + o: 'm 307 349 b 332 351 315 351 323 351 b 443 340 367 351 408 347 b 741 47 607 306 720 195 b 744 0 743 31 744 16 b 660 -303 744 -90 713 -206 b 28 -755 534 -531 304 -695 b 14 -756 23 -755 19 -756 b -1 -741 4 -756 -1 -750 b 21 -720 -1 -731 1 -728 b 567 -56 337 -601 548 -344 b 568 -11 568 -41 568 -24 b 442 285 568 129 525 233 b 325 319 406 308 367 319 b 93 177 232 319 137 266 b 84 154 91 170 84 155 b 84 154 84 154 84 154 b 88 156 84 154 85 155 b 159 177 110 170 134 177 b 257 134 194 177 231 162 b 294 41 281 108 294 73 b 171 -97 294 -24 246 -90 b 156 -98 166 -97 161 -98 b 6 74 73 -98 6 -22 b 6 80 6 76 6 79 b 307 349 10 223 141 340 m 839 215 b 845 216 841 216 842 216 b 862 213 852 216 860 215 b 899 163 887 206 899 184 b 872 117 899 145 890 127 b 847 111 865 112 856 111 b 808 130 833 111 818 117 b 796 162 800 140 796 151 b 839 215 796 187 812 212 m 839 -112 b 845 -112 841 -112 842 -112 b 862 -115 852 -112 860 -113 b 899 -165 887 -122 899 -144 b 872 -210 899 -183 890 -201 b 847 -217 865 -215 856 -217 b 808 -198 833 -217 818 -210 b 796 -165 800 -188 796 -177 b 839 -112 796 -140 812 -116 ', + }, + unpitchedPercussionClef1: { + x_min: 0, + x_max: 464.140625, + ha: 474, + o: 'm 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 ', + }, + '6stringTabClef': { + x_min: -1.359375, + x_max: 680.5625, + ha: 694, + o: 'm 597 1042 b 604 1042 600 1042 602 1042 b 642 1002 627 1042 642 1022 b 619 966 642 988 635 974 b 439 927 574 942 503 927 l 426 927 l 426 921 b 430 838 428 893 430 866 b 345 480 430 696 398 560 b 179 391 307 423 249 391 b 156 392 171 391 164 392 b 138 394 149 394 142 394 b 103 434 115 396 103 416 b 129 471 103 451 111 466 b 141 474 133 473 137 474 b 172 459 153 474 164 469 b 181 455 175 456 176 455 b 187 456 182 455 185 455 b 253 520 212 460 234 483 b 315 836 294 605 315 714 b 311 928 315 867 314 898 b 302 945 310 943 311 942 b 245 953 283 950 262 953 b 130 891 193 953 149 931 b 84 860 119 870 102 860 b 36 905 61 860 39 877 b 36 910 36 907 36 909 b 80 970 36 931 50 949 b 249 1017 125 1000 187 1017 b 322 1009 273 1017 299 1014 l 341 1003 b 436 991 372 995 406 991 b 577 1031 495 991 545 1004 b 597 1042 583 1038 590 1041 m 416 360 b 424 360 419 360 421 360 b 481 309 454 360 479 338 b 503 145 484 280 495 199 b 585 -185 525 16 555 -106 b 630 -245 596 -213 613 -237 l 634 -247 l 638 -245 b 647 -244 641 -245 645 -244 b 680 -278 666 -244 680 -262 b 664 -308 680 -290 675 -301 b 638 -312 658 -310 650 -312 b 613 -309 631 -312 623 -310 b 477 -201 555 -303 502 -260 b 417 -2 460 -159 434 -72 b 416 5 417 1 416 5 b 416 5 416 5 416 5 b 411 -5 415 5 413 0 b 359 -97 397 -33 377 -70 b 353 -106 355 -102 353 -105 b 359 -112 353 -108 355 -109 b 409 -130 375 -123 390 -129 b 426 -134 420 -130 421 -131 b 431 -147 428 -137 431 -141 b 420 -162 431 -152 427 -159 b 382 -169 409 -166 396 -169 b 323 -155 363 -169 341 -165 l 317 -152 l 314 -155 b 62 -303 240 -240 148 -295 b 36 -305 55 -305 44 -305 b 23 -303 29 -305 24 -305 b -1 -273 6 -299 -1 -287 b 31 -240 -1 -256 10 -240 b 36 -240 32 -240 34 -240 b 42 -241 38 -241 39 -241 b 134 -204 63 -241 99 -226 b 367 288 265 -115 357 81 b 375 330 368 313 370 320 b 416 360 383 347 400 358 m 360 -359 b 379 -359 363 -359 371 -359 b 424 -360 396 -359 416 -359 b 646 -502 536 -373 624 -430 b 649 -527 649 -510 649 -519 b 530 -673 649 -578 604 -635 l 521 -677 l 529 -681 b 653 -811 592 -714 637 -762 b 660 -853 658 -827 660 -839 b 645 -911 660 -873 656 -892 b 426 -1021 608 -981 519 -1021 b 283 -989 377 -1021 328 -1011 b 235 -949 249 -972 239 -964 b 234 -936 234 -946 234 -941 b 234 -928 234 -934 234 -931 l 235 -925 l 234 -927 l 225 -934 b 87 -982 186 -966 138 -982 b 80 -982 85 -982 83 -982 b 55 -981 70 -981 58 -981 b 17 -943 32 -981 17 -964 b 54 -904 17 -921 35 -904 b 78 -914 62 -904 72 -909 l 83 -918 l 88 -918 b 190 -831 122 -918 166 -881 b 269 -506 242 -727 269 -612 b 268 -462 269 -492 269 -477 b 266 -449 266 -458 266 -452 b 265 -444 266 -445 266 -444 b 257 -446 264 -444 261 -445 b 132 -545 196 -470 152 -505 b 88 -573 122 -563 104 -573 b 39 -523 63 -573 39 -553 b 63 -476 39 -505 44 -494 b 360 -359 136 -408 235 -369 m 419 -424 b 393 -423 411 -423 406 -423 l 375 -423 l 377 -426 b 379 -439 377 -427 378 -434 b 383 -510 382 -463 383 -487 b 314 -811 383 -609 360 -710 b 266 -893 296 -850 285 -870 b 264 -898 265 -896 264 -898 l 264 -898 b 264 -898 264 -898 264 -898 b 268 -898 264 -898 266 -898 b 273 -898 270 -898 272 -898 b 300 -909 283 -898 291 -900 b 426 -957 340 -941 385 -957 b 476 -949 443 -957 460 -954 b 547 -853 522 -931 547 -893 b 485 -745 547 -816 526 -775 b 397 -707 460 -727 432 -714 b 366 -675 375 -703 366 -692 b 396 -642 366 -657 377 -645 b 530 -557 455 -637 511 -601 b 536 -527 534 -548 536 -537 b 419 -424 536 -480 490 -437 ', + }, + timeSig0: { + x_min: 0, + x_max: 514.5, + ha: 525, + o: 'm 236 648 b 246 648 238 648 242 648 b 288 646 261 648 283 648 b 472 513 364 634 428 587 b 514 347 502 464 514 413 b 462 163 514 272 499 217 b 257 44 409 83 333 44 b 50 163 181 44 103 83 b 0 347 14 217 0 272 b 40 513 0 413 12 464 b 236 648 87 591 155 638 m 277 614 b 253 616 273 616 261 616 b 242 616 247 616 243 616 b 170 499 193 609 181 589 b 159 348 163 446 159 398 b 166 222 159 308 161 266 b 201 91 174 138 183 106 b 257 76 215 81 235 76 b 311 91 277 76 299 81 b 347 222 330 106 338 138 b 353 348 352 266 353 308 b 344 499 353 398 351 446 b 277 614 333 587 322 606 m 257 -1 l 258 -1 l 255 -1 l 257 -1 m 257 673 l 258 673 l 255 673 l 257 673 ', + }, + timeSig1: { + x_min: -1.359375, + x_max: 344.359375, + ha: 351, + o: 'm 126 637 l 129 638 l 198 638 l 266 638 l 269 635 b 274 631 272 634 273 632 l 277 627 l 277 395 b 279 156 277 230 277 161 b 329 88 281 123 295 106 b 344 69 341 81 344 79 b 337 55 344 62 343 59 l 333 54 l 197 54 l 61 54 l 58 55 b 50 69 53 59 50 62 b 65 88 50 79 53 81 b 80 97 72 91 74 93 b 117 156 103 113 112 129 b 117 345 117 161 117 222 l 117 528 l 100 503 l 38 406 b 14 383 24 384 23 383 b -1 398 5 383 -1 390 b 4 415 -1 403 1 409 b 16 437 5 416 10 426 l 72 539 l 100 596 b 121 632 119 631 119 631 b 126 637 122 634 125 635 m 171 -1 l 172 -1 l 170 -1 l 171 -1 m 171 673 l 172 673 l 170 673 l 171 673 ', + }, + timeSig2: { + x_min: -1.359375, + x_max: 458.6875, + ha: 468, + o: 'm 197 648 b 216 648 201 648 208 648 b 258 646 232 648 253 648 b 419 546 333 637 393 599 b 432 489 428 528 432 509 b 356 342 432 440 405 384 b 235 278 322 313 288 295 b 69 170 166 256 107 217 b 69 169 69 170 69 169 b 69 169 69 169 69 169 b 74 173 69 169 72 170 b 209 222 112 204 163 222 b 310 195 247 222 274 215 b 371 179 332 184 352 179 b 396 181 379 179 387 179 b 428 202 409 184 423 194 b 442 212 431 209 436 212 b 458 197 450 212 458 206 b 441 148 458 190 449 165 b 299 44 409 84 353 44 b 288 45 295 44 292 44 b 250 61 274 45 268 49 b 122 99 212 86 164 99 b 73 91 104 99 88 97 b 28 63 53 84 34 72 b 14 54 25 56 20 54 b 1 62 9 54 4 56 l -1 65 l -1 79 b 0 99 -1 91 0 95 b 2 113 1 102 2 108 b 164 309 20 197 81 272 b 285 470 232 341 277 398 b 287 487 287 476 287 481 b 171 595 287 551 239 595 b 155 595 166 595 160 595 b 142 592 145 594 142 594 b 145 589 142 592 142 591 b 179 527 168 576 179 551 b 132 455 179 496 163 467 b 104 451 122 452 112 451 b 27 530 62 451 27 487 b 29 555 27 538 27 546 b 197 648 44 601 115 639 m 228 -1 l 230 -1 l 227 -1 l 228 -1 m 228 673 l 230 673 l 227 673 l 228 673 ', + }, + timeSig3: { + x_min: -1.359375, + x_max: 409.6875, + ha: 418, + o: 'm 174 648 b 191 648 176 648 183 648 b 225 648 204 648 220 648 b 402 523 317 638 389 588 b 404 503 404 517 404 510 b 402 484 404 495 404 488 b 264 373 389 437 334 394 b 257 370 259 371 257 371 b 257 370 257 370 257 370 b 264 369 258 370 261 369 b 409 202 359 334 409 267 b 318 72 409 152 381 104 b 200 43 281 52 240 43 b 23 113 134 43 69 68 b 0 169 6 129 0 149 b 77 249 0 210 29 249 l 77 249 b 152 174 125 249 152 212 b 103 102 152 145 137 116 b 103 102 103 102 103 102 b 147 94 103 101 132 95 b 153 94 149 94 151 94 b 265 206 219 94 265 141 b 264 226 265 213 265 219 b 147 355 253 299 204 353 b 126 371 133 356 126 362 b 147 388 126 383 132 388 b 254 474 196 391 238 424 b 259 502 258 484 259 494 b 182 592 259 544 228 582 b 156 595 175 595 166 595 b 115 592 142 595 129 594 l 111 591 l 115 588 b 152 524 141 574 152 549 b 92 449 152 491 130 458 b 76 448 87 448 81 448 b -1 530 32 448 -1 488 b 20 581 -1 548 5 566 b 174 648 55 619 108 641 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 ', + }, + timeSig4: { + x_min: 0, + x_max: 468.21875, + ha: 478, + o: 'm 174 637 b 232 638 175 638 189 638 b 277 638 245 638 259 638 l 378 638 l 381 635 b 389 623 386 632 389 627 b 382 609 389 617 386 613 b 366 589 381 606 372 598 l 313 528 l 245 451 l 209 410 l 155 348 l 84 267 b 59 240 72 252 59 240 b 59 240 59 240 59 240 b 151 238 59 238 68 238 l 242 238 l 242 303 b 243 371 242 369 242 370 b 289 426 245 374 254 385 l 303 441 l 317 456 l 338 483 l 360 506 l 371 520 b 386 527 375 526 381 527 b 400 519 392 527 397 524 b 401 440 401 516 401 514 b 401 377 401 423 401 402 l 401 238 l 426 238 b 453 237 449 238 450 238 b 465 217 461 234 465 226 b 460 202 465 212 464 206 b 426 197 454 197 453 197 l 401 197 l 401 180 b 451 88 402 129 412 109 b 468 69 465 81 468 79 b 461 55 468 62 466 59 l 458 54 l 321 54 l 185 54 l 182 55 b 175 69 176 59 175 62 b 191 88 175 79 176 81 b 240 180 230 109 240 129 l 240 197 l 125 197 b 73 195 104 195 87 195 b 8 197 10 195 9 197 b 0 212 2 199 0 205 b 0 212 0 212 0 212 b 20 242 0 219 0 219 b 163 610 104 344 163 492 b 174 637 163 628 166 634 m 234 -1 l 235 -1 l 232 -1 l 234 -1 m 234 673 l 235 673 l 232 673 l 234 673 ', + }, + timeSig5: { + x_min: 0, + x_max: 409.6875, + ha: 418, + o: 'm 47 637 b 53 638 49 638 50 638 b 69 634 55 638 61 637 b 210 610 114 619 161 610 b 363 634 259 610 311 619 b 382 638 372 637 378 638 b 392 634 386 638 389 637 b 397 623 396 630 397 627 b 393 610 397 620 396 616 b 298 505 368 552 338 520 b 212 494 277 498 246 494 b 65 517 163 494 106 502 b 61 517 62 517 61 517 b 61 517 61 517 61 517 b 51 408 61 517 51 412 b 51 408 51 408 51 408 b 51 408 51 408 51 408 b 61 412 53 408 55 409 b 125 434 80 421 103 430 b 185 441 145 440 166 441 b 409 244 310 441 409 353 b 401 191 409 227 406 209 b 197 43 375 105 287 43 b 159 47 183 43 171 44 b 23 123 112 56 61 86 b 0 180 6 140 0 159 b 76 260 0 220 31 260 b 92 259 81 260 87 259 b 152 183 132 251 152 216 b 100 112 152 152 134 122 b 95 111 98 112 95 111 b 95 111 95 111 95 111 b 129 98 95 109 119 101 b 148 97 136 97 141 97 b 264 235 206 97 261 158 b 265 248 265 240 265 244 b 210 398 265 312 243 373 b 179 408 201 406 194 408 b 174 408 178 408 176 408 b 53 369 130 408 88 394 b 34 359 39 359 38 359 b 17 374 24 359 17 365 b 39 628 17 384 38 625 b 47 637 40 631 43 635 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 ', + }, + timeSig6: { + x_min: 0, + x_max: 475.03125, + ha: 485, + o: 'm 255 648 b 274 648 259 648 266 648 b 314 646 288 648 307 648 b 450 555 374 637 438 594 b 454 530 453 546 454 538 b 375 451 454 485 416 451 b 328 467 359 451 343 455 b 300 526 310 483 300 503 b 352 598 300 557 319 589 b 356 599 355 598 356 599 b 352 602 356 599 355 601 b 288 616 330 612 308 616 b 210 584 257 616 230 605 b 164 433 189 559 174 508 b 160 374 163 415 160 381 b 160 374 160 374 160 374 b 160 374 160 374 160 374 b 168 377 160 374 164 376 b 258 395 200 390 228 395 b 366 367 294 395 328 387 b 475 223 436 333 475 283 b 472 197 475 215 473 206 b 349 65 462 141 419 95 b 259 43 317 51 288 43 b 167 69 230 43 200 52 b 4 290 80 113 20 195 b 0 349 1 309 0 328 b 20 467 0 391 6 433 b 255 648 58 563 155 637 m 269 363 b 257 363 265 363 261 363 b 210 345 236 363 220 356 b 186 226 196 324 186 272 b 187 198 186 216 186 206 b 213 95 191 151 202 112 b 257 76 221 83 238 76 b 270 77 261 76 266 76 b 321 156 299 81 310 99 b 329 229 326 183 329 206 b 321 301 329 252 326 274 b 269 363 311 342 298 359 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 ', + }, + timeSig7: { + x_min: 0, + x_max: 442.359375, + ha: 451, + o: 'm 147 648 b 166 649 153 649 160 649 b 313 598 217 649 273 630 b 340 587 323 588 328 587 l 341 587 b 412 628 367 587 390 601 b 427 638 416 635 421 638 b 439 632 431 638 435 637 b 442 623 441 630 442 628 b 430 569 442 616 439 603 b 352 369 408 492 377 410 b 300 259 325 324 313 298 b 273 84 283 205 273 140 b 265 55 273 65 272 59 l 261 54 l 181 54 l 99 54 l 96 55 b 91 61 95 56 92 59 l 89 63 l 89 77 b 147 263 89 133 111 202 b 261 401 176 313 212 355 b 378 541 315 449 349 489 l 382 548 l 375 544 b 240 495 333 512 285 495 b 129 535 198 495 160 509 b 84 560 108 552 95 560 b 76 559 81 560 78 560 b 31 487 59 555 43 530 b 14 470 27 473 24 470 b 1 477 8 470 4 471 l 0 480 l 0 553 l 0 627 l 1 630 b 16 638 4 635 9 638 b 23 635 17 638 20 637 b 49 626 36 626 39 626 b 96 638 59 626 80 630 b 104 639 99 638 102 639 b 117 644 107 641 112 642 b 147 648 125 645 137 648 m 220 -1 l 221 -1 l 219 -1 l 220 -1 m 220 673 l 221 673 l 219 673 l 220 673 ', + }, + timeSig8: { + x_min: 0, + x_max: 488.640625, + ha: 499, + o: 'm 217 648 b 245 649 225 648 235 649 b 453 516 343 649 430 595 b 458 478 455 503 458 491 b 412 370 458 440 441 398 b 411 369 412 369 411 369 b 415 365 411 367 412 367 b 488 231 462 331 488 281 b 472 165 488 208 483 186 b 243 43 434 86 338 43 b 63 104 178 43 112 62 b 0 233 20 140 0 186 b 73 365 0 283 24 331 l 77 369 l 72 374 b 29 476 42 406 29 441 b 217 648 29 557 103 635 m 258 605 b 242 606 253 605 247 606 b 157 552 198 606 157 580 b 160 541 157 548 159 544 b 319 413 176 503 242 452 l 337 403 l 338 406 b 359 476 352 428 359 452 b 258 605 359 537 318 595 m 138 326 b 130 330 134 328 130 330 b 130 330 130 330 130 330 b 107 305 127 330 112 313 b 84 231 91 281 84 256 b 243 86 84 156 151 86 b 249 87 245 86 246 87 b 347 156 303 88 347 120 b 344 172 347 162 345 167 b 156 319 325 227 257 281 b 138 326 151 322 144 324 m 243 -1 l 245 -1 l 242 -1 l 243 -1 m 243 673 l 245 673 l 242 673 l 243 673 ', + }, + timeSig9: { + x_min: 0, + x_max: 475.03125, + ha: 485, + o: 'm 191 646 b 212 649 198 648 205 649 b 255 644 227 649 243 646 b 458 448 348 616 428 539 b 475 342 469 415 475 378 b 460 244 475 308 469 274 b 193 44 421 124 303 44 b 91 69 157 44 122 51 b 19 161 43 97 19 126 b 21 181 19 167 20 174 b 98 241 32 220 65 241 b 170 186 129 241 160 223 b 172 166 171 179 172 173 b 121 94 172 134 152 102 b 117 93 118 94 117 93 b 121 90 117 93 118 91 b 185 76 142 80 164 76 b 270 119 220 76 251 91 b 308 259 287 145 300 194 b 313 317 310 277 313 310 b 313 317 313 317 313 317 b 313 317 313 317 313 317 b 304 315 313 317 308 316 b 216 295 273 302 245 295 b 145 308 193 295 170 299 b 19 398 88 327 42 360 b 0 469 5 420 0 444 b 24 551 0 496 8 526 b 191 646 54 596 125 637 m 227 614 b 215 616 224 616 220 616 b 202 614 210 616 206 616 b 152 535 174 610 163 592 b 144 463 147 509 144 485 b 152 391 144 440 147 417 b 216 328 163 344 179 328 b 280 391 253 328 269 344 b 288 463 285 417 288 440 b 280 535 288 485 285 509 b 227 614 269 594 258 610 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 ', + }, + timeSigCommon: { + x_min: -1.359375, + x_max: 556.6875, + ha: 568, + o: 'm 294 322 b 318 323 299 322 308 323 b 360 320 334 323 352 322 b 526 217 430 310 490 273 b 543 166 537 202 543 184 b 447 70 543 117 503 70 b 445 70 447 70 446 70 b 359 159 394 72 359 113 b 368 201 359 173 362 187 b 442 245 382 229 412 245 b 455 244 446 245 451 245 b 460 244 458 244 460 244 b 460 244 460 244 460 244 b 454 248 460 244 458 245 b 325 291 417 276 372 291 b 285 287 313 291 299 290 b 144 -2 183 269 144 190 b 281 -290 144 -208 179 -280 b 304 -291 289 -291 298 -291 b 524 -105 412 -291 506 -212 b 541 -84 526 -88 530 -84 b 556 -101 551 -84 556 -90 b 549 -138 556 -111 553 -122 b 334 -322 521 -237 435 -310 b 302 -324 323 -323 313 -324 b 13 -101 172 -324 54 -234 b -1 -1 4 -68 -1 -34 b 294 322 -1 161 121 303 ', + }, + timeSigCutCommon: { + x_min: 0, + x_max: 556.6875, + ha: 568, + o: 'm 289 545 b 298 546 292 545 295 546 b 318 533 306 546 315 541 b 319 428 319 530 319 528 l 319 327 l 334 327 b 526 223 412 326 485 285 b 543 172 537 206 543 190 b 447 76 543 122 503 76 b 445 76 446 76 446 76 b 359 165 394 77 359 119 b 368 205 359 179 362 192 b 441 251 382 233 412 251 b 455 249 446 251 451 251 b 460 248 458 249 460 248 b 460 248 460 248 460 248 b 454 254 460 249 458 251 b 334 295 419 280 378 294 l 319 295 l 319 4 l 319 -287 l 321 -285 b 328 -285 322 -285 325 -285 b 524 -99 424 -277 507 -198 b 541 -79 526 -84 530 -79 b 556 -97 551 -79 556 -84 b 548 -133 556 -105 553 -117 b 334 -317 521 -233 434 -306 b 322 -319 329 -317 323 -317 l 319 -319 l 319 -424 b 319 -471 319 -444 319 -459 b 313 -541 319 -544 318 -535 b 298 -548 308 -545 303 -548 b 279 -534 289 -548 281 -542 b 277 -424 277 -531 277 -530 l 277 -317 l 273 -317 b 13 -95 153 -305 51 -217 b 0 2 4 -62 0 -29 b 182 295 0 126 66 238 b 274 324 210 309 249 320 l 277 324 l 277 427 b 279 533 277 528 277 530 b 289 545 281 538 285 542 m 277 2 b 277 291 277 161 277 291 b 268 288 277 291 273 290 b 144 1 179 265 144 184 b 276 -284 144 -199 175 -267 l 277 -285 l 277 2 ', + }, + timeSigPlus: { + x_min: 0, + x_max: 319.859375, + ha: 326, + o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ', + }, + timeSigPlusSmall: { + x_min: 0, + x_max: 319.859375, + ha: 326, + o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ', + }, + timeSigMinus: { + x_min: 0, + x_max: 318.5, + ha: 325, + o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ', + }, + timeSigParensRight: { + x_min: 25.859375, + x_max: 164.6875, + ha: 168, + o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ', + }, + timeSigParensRightSmall: { + x_min: 25.859375, + x_max: 164.6875, + ha: 168, + o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ', + }, + timeSigParensLeft: { + x_min: -166.0625, + x_max: -25.859375, + ha: 0, + o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ', + }, + timeSigParensLeftSmall: { + x_min: -166.0625, + x_max: -25.859375, + ha: 0, + o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ', + }, + noteheadDoubleWhole: { + x_min: 0, + x_max: 902.421875, + ha: 921, + o: 'm 17 240 b 24 241 19 241 21 241 b 32 240 28 241 31 241 b 46 229 38 238 43 234 b 50 88 50 223 50 237 b 50 -1 50 63 50 34 b 50 -90 50 -36 50 -65 b 46 -231 50 -238 50 -224 b 25 -242 42 -238 34 -242 b 0 -224 14 -242 4 -235 b 0 2 0 -222 0 -108 b 0 223 0 112 0 220 b 17 240 2 230 9 237 m 110 240 b 118 241 111 241 114 241 b 126 240 121 241 123 241 b 142 223 133 237 140 230 b 144 123 144 220 144 205 b 144 29 144 45 144 29 b 144 29 144 29 144 29 b 393 183 166 106 264 167 b 450 186 412 184 431 186 b 756 29 600 186 732 120 b 756 29 756 29 756 29 b 758 123 758 29 758 45 b 760 227 758 226 758 223 b 784 241 766 237 774 241 b 804 229 792 241 800 237 b 809 88 808 223 809 237 l 809 -1 l 809 -90 b 804 -231 809 -238 808 -224 b 784 -242 800 -238 792 -242 b 762 -231 775 -242 766 -238 b 758 -124 756 -224 758 -231 b 756 -30 758 -47 758 -30 b 756 -30 756 -30 756 -30 b 509 -184 736 -108 637 -169 b 450 -187 488 -187 469 -187 b 144 -30 300 -187 168 -122 b 144 -30 144 -30 144 -30 b 144 -124 144 -30 144 -47 b 140 -231 144 -231 144 -224 b 118 -242 134 -238 126 -242 b 92 -224 107 -242 96 -235 b 92 2 92 -222 92 -108 b 92 223 92 112 92 220 b 110 240 95 230 102 237 m 432 161 b 413 162 426 162 420 162 b 313 41 351 162 313 109 b 347 -73 313 5 323 -34 b 487 -163 385 -133 439 -163 b 578 -97 526 -163 562 -142 b 588 -43 585 -80 588 -62 b 432 161 588 47 518 147 m 868 240 b 876 241 869 241 872 241 b 884 240 879 241 882 241 b 898 229 890 238 894 234 b 902 88 902 223 902 237 l 902 -1 l 902 -90 b 898 -231 902 -238 902 -224 b 876 -242 892 -238 884 -242 b 852 -224 865 -242 854 -235 b 850 2 850 -222 850 -108 b 852 223 850 112 850 220 b 868 240 853 230 860 237 ', + }, + noteheadWhole: { + x_min: 0, + x_max: 619.3125, + ha: 632, + o: 'm 274 184 b 307 186 285 186 296 186 b 616 22 465 186 597 116 b 619 -1 617 13 619 5 b 308 -187 619 -104 483 -187 b 0 -1 133 -187 0 -102 b 5 36 0 11 1 23 b 274 184 29 115 141 176 m 289 161 b 272 162 284 162 277 162 b 171 41 209 162 171 108 b 205 -73 171 5 182 -34 b 345 -163 243 -133 298 -163 b 436 -98 385 -163 420 -142 b 446 -43 443 -80 446 -62 b 289 161 446 47 377 147 ', + }, + noteheadHalf: { + x_min: 0, + x_max: 428.75, + ha: 438, + o: 'm 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 m 366 131 b 352 134 362 133 357 134 b 219 81 321 134 269 115 b 47 -111 126 23 50 -62 b 47 -112 47 -111 47 -112 b 77 -136 47 -129 58 -136 b 264 -45 118 -136 194 -101 b 382 109 336 12 382 76 b 366 131 382 120 377 129 ', + }, + noteheadBlack: { + x_min: 0, + x_max: 428.75, + ha: 438, + o: 'm 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 ', + }, + noteheadXWhole: { + x_min: 0, + x_max: 598.890625, + ha: 611, + o: 'm 62 181 b 77 183 66 183 72 183 b 91 181 83 183 88 183 b 202 131 100 180 106 177 l 299 87 l 394 131 b 517 183 499 181 502 183 b 519 183 517 183 518 183 b 598 104 567 183 598 144 b 577 49 598 84 592 65 b 518 15 567 38 563 37 b 484 0 499 6 484 0 b 518 -16 484 -1 499 -8 b 577 -51 563 -38 567 -40 b 598 -105 592 -66 598 -86 b 519 -184 598 -145 567 -184 b 517 -184 518 -184 517 -184 b 394 -133 502 -184 499 -183 l 299 -88 l 202 -133 b 81 -184 99 -183 95 -184 b 77 -184 80 -184 78 -184 b 0 -105 29 -184 0 -145 b 20 -51 0 -86 5 -66 b 80 -16 29 -40 34 -38 b 114 -1 98 -8 114 -1 b 80 15 114 0 98 6 b 20 49 34 37 29 38 b 0 104 6 65 0 84 b 62 181 0 140 23 174 m 88 134 b 74 136 85 134 80 136 b 68 134 72 136 69 136 b 46 104 54 130 46 117 b 55 81 46 95 49 88 b 149 34 59 76 53 80 b 224 -1 190 15 224 0 b 144 -38 224 -1 187 -18 b 54 -84 59 -79 58 -79 b 46 -105 49 -90 46 -98 b 76 -137 46 -122 58 -137 b 78 -137 77 -137 77 -137 b 194 -86 87 -137 76 -141 b 298 -36 250 -58 298 -36 b 298 -36 298 -36 298 -36 b 402 -84 299 -36 345 -58 b 518 -137 522 -141 510 -137 b 521 -137 519 -137 519 -137 b 551 -105 539 -137 551 -122 b 541 -83 551 -98 548 -90 b 447 -36 537 -77 544 -81 b 374 -1 406 -16 374 -1 b 447 34 374 0 406 15 b 541 81 544 80 537 76 b 551 104 548 88 551 97 b 521 136 551 120 539 136 b 518 136 519 136 519 136 b 517 136 518 136 517 136 l 517 136 b 402 83 511 136 511 136 b 298 34 345 56 299 34 b 298 34 298 34 298 34 b 194 84 298 34 250 56 b 88 134 137 111 89 133 ', + }, + noteheadXHalf: { + x_min: 0, + x_max: 406.96875, + ha: 415, + o: 'm 55 181 b 70 183 61 183 66 183 b 111 170 85 183 99 179 b 160 130 115 167 137 149 l 202 95 l 245 130 b 319 181 299 176 302 179 b 334 183 325 183 330 183 b 406 109 375 183 406 148 b 401 81 406 99 405 91 b 348 24 394 65 390 59 b 318 -1 332 11 318 0 b 348 -26 318 -1 332 -12 b 401 -83 390 -61 394 -66 b 406 -111 405 -93 406 -101 b 334 -184 406 -149 375 -184 b 319 -183 330 -184 325 -184 b 245 -131 302 -180 299 -177 l 202 -97 l 160 -131 b 85 -183 107 -177 103 -180 b 70 -184 80 -184 76 -184 b 0 -111 31 -184 0 -149 b 4 -83 0 -101 1 -93 b 58 -26 10 -66 16 -61 b 88 -1 74 -12 88 -1 b 58 24 88 0 74 11 b 10 69 23 54 17 59 b 0 109 2 81 0 95 b 55 181 0 142 21 173 m 83 133 b 72 136 78 136 76 136 b 57 131 66 136 61 134 b 46 109 49 126 46 117 b 50 93 46 104 47 98 b 107 45 51 91 77 70 b 160 0 137 20 160 0 b 107 -47 160 -1 137 -22 b 50 -94 77 -72 51 -93 b 46 -111 47 -99 46 -105 b 59 -134 46 -120 50 -130 b 72 -137 62 -136 68 -137 b 83 -136 76 -137 80 -136 b 144 -84 84 -134 107 -116 b 202 -36 176 -58 202 -36 b 261 -84 202 -36 230 -58 b 323 -136 299 -116 321 -134 b 334 -137 326 -136 330 -137 b 345 -134 338 -137 343 -136 b 360 -111 355 -130 360 -120 b 355 -94 360 -105 359 -99 b 299 -47 353 -93 329 -72 b 245 0 269 -22 245 -1 b 299 45 245 0 269 20 b 355 93 329 70 353 91 b 360 109 359 98 360 104 b 345 133 360 119 355 129 b 334 136 343 134 338 136 b 323 134 330 136 326 134 b 261 83 321 133 299 115 b 202 34 230 56 202 34 b 144 83 202 34 176 56 b 83 133 106 115 84 133 ', + }, + noteheadXBlack: { + x_min: 0, + x_max: 406.96875, + ha: 415, + o: 'm 21 183 b 28 183 24 183 25 183 b 42 181 34 183 39 183 b 127 108 47 179 47 179 b 202 41 168 72 202 41 b 279 108 204 41 238 72 b 357 177 321 145 356 176 b 375 183 363 181 370 183 b 406 151 392 183 406 169 b 404 137 406 147 405 141 b 322 62 401 131 398 129 b 251 0 284 27 251 0 b 322 -63 251 -1 284 -29 b 404 -138 398 -130 401 -133 b 406 -152 405 -142 406 -148 b 375 -184 406 -170 392 -184 b 357 -179 370 -184 363 -183 b 279 -109 356 -177 321 -147 b 202 -43 238 -73 204 -43 b 127 -109 202 -43 168 -73 b 49 -179 85 -147 50 -177 b 31 -184 43 -183 36 -184 b 0 -152 13 -184 0 -170 b 2 -138 0 -148 0 -142 b 83 -63 5 -133 8 -130 b 155 0 122 -29 155 -1 b 83 62 155 0 122 27 b 8 129 43 97 10 127 b 0 151 2 136 0 144 b 21 183 0 165 8 177 ', + }, + noteheadTriangleUpWhole: { + x_min: 0, + x_max: 630.203125, + ha: 643, + o: 'm 308 204 b 314 205 310 205 313 205 b 326 201 319 205 323 204 b 355 154 328 199 338 180 b 401 83 362 142 392 95 l 409 72 b 431 41 412 66 424 49 b 619 -174 498 -51 570 -134 b 630 -192 626 -180 630 -186 b 626 -202 630 -195 628 -199 b 616 -206 623 -205 620 -206 b 552 -188 608 -206 592 -202 b 310 -155 488 -169 392 -155 b 268 -156 295 -155 281 -155 b 77 -188 197 -161 126 -173 b 13 -206 35 -202 20 -206 b 9 -206 12 -206 10 -206 b 0 -191 2 -202 0 -197 b 8 -176 0 -186 2 -180 b 204 49 58 -136 138 -43 l 220 72 l 227 83 b 295 188 245 108 281 166 b 308 204 299 197 304 202 m 315 147 b 314 147 315 147 314 147 b 314 147 314 147 314 147 b 306 129 314 145 310 138 l 296 105 b 281 72 292 97 284 77 l 274 56 b 181 -123 247 -4 212 -72 l 174 -134 l 176 -133 b 314 -123 215 -127 272 -123 b 451 -133 356 -123 413 -127 l 454 -134 l 449 -123 b 353 56 417 -72 381 -4 l 347 72 b 332 105 344 77 336 97 l 322 129 b 315 147 318 138 315 145 ', + }, + noteheadTriangleUpHalf: { + x_min: 0, + x_max: 438.28125, + ha: 447, + o: 'm 212 205 b 219 205 213 205 216 205 b 239 183 228 205 231 204 b 421 -163 298 40 363 -83 b 438 -191 434 -180 438 -186 b 436 -197 438 -192 438 -195 b 424 -206 434 -204 431 -206 b 406 -201 420 -206 415 -205 b 216 -156 347 -172 281 -156 b 23 -205 148 -156 80 -173 b 14 -206 20 -206 17 -206 b 0 -191 6 -206 0 -201 b 6 -176 0 -187 1 -183 b 202 192 63 -104 142 45 b 212 205 205 199 208 202 m 264 48 l 249 81 l 243 94 l 242 91 b 89 -126 208 36 137 -66 b 81 -138 85 -133 81 -138 b 81 -138 81 -138 81 -138 b 81 -138 81 -138 81 -138 b 95 -133 81 -138 87 -136 b 280 -94 156 -108 221 -94 b 334 -98 299 -94 317 -95 b 343 -99 338 -99 343 -99 b 343 -99 343 -99 343 -99 b 338 -94 343 -99 341 -97 b 264 48 318 -58 287 1 ', + }, + noteheadTriangleUpBlack: { + x_min: -1.359375, + x_max: 436.921875, + ha: 446, + o: 'm 213 205 b 217 205 215 205 216 205 b 234 194 224 205 234 199 b 236 187 234 194 235 190 l 245 167 l 261 129 l 270 106 b 355 -61 294 54 329 -13 b 420 -163 381 -105 402 -138 b 436 -188 435 -184 436 -184 b 436 -191 436 -190 436 -190 b 421 -206 436 -201 431 -206 l 421 -206 l 416 -206 l 405 -201 b 217 -158 347 -172 283 -158 b 31 -201 153 -158 88 -172 l 20 -206 l 14 -206 l 14 -206 b 0 -191 5 -206 0 -201 b -1 -188 0 -190 -1 -190 b 14 -163 -1 -186 0 -184 b 95 -34 36 -136 72 -77 b 166 106 119 8 148 68 l 175 129 l 183 148 l 200 188 b 213 205 205 199 208 202 ', + }, + noteheadDiamondWhole: { + x_min: 0, + x_max: 432.828125, + ha: 442, + o: 'm 208 184 b 213 187 209 186 212 187 b 224 176 217 187 221 183 b 245 147 225 172 235 159 b 419 -1 288 90 347 38 b 431 -8 424 -4 431 -8 b 432 -12 432 -9 432 -11 b 430 -18 432 -13 432 -16 b 364 -61 424 -20 383 -47 b 225 -183 307 -102 250 -152 b 223 -187 224 -184 223 -187 b 220 -188 221 -188 220 -188 b 208 -176 216 -188 210 -184 b 187 -148 205 -173 197 -159 b 12 0 144 -90 84 -38 b 0 11 4 5 0 8 b 16 24 0 13 4 18 b 183 158 83 69 141 115 b 208 184 194 169 198 173 m 183 105 b 176 113 181 109 176 113 b 172 109 176 113 175 112 b 92 45 149 90 117 62 l 88 41 l 102 31 b 247 -105 160 -6 210 -55 l 254 -115 l 257 -112 l 269 -102 b 340 -45 287 -87 319 -61 l 344 -43 l 330 -33 b 183 105 272 6 221 54 ', + }, + noteheadDiamondHalf: { + x_min: 0, + x_max: 438.28125, + ha: 447, + o: 'm 212 190 b 219 191 213 191 216 191 b 236 176 225 191 228 190 b 419 18 277 105 341 49 b 436 5 431 13 434 11 b 438 -1 438 4 438 1 b 424 -16 438 -8 432 -13 b 356 -49 409 -20 379 -36 b 234 -180 306 -83 258 -133 b 219 -192 230 -188 224 -192 b 200 -176 213 -192 206 -187 b 9 -15 157 -102 89 -45 b 0 0 2 -12 0 -6 b 16 18 0 9 2 12 b 200 176 93 48 159 104 b 212 190 205 186 208 188 m 239 113 b 236 117 238 116 238 117 b 230 108 235 117 234 115 b 92 -15 196 58 140 8 b 88 -18 91 -16 88 -18 b 92 -20 88 -18 91 -19 b 198 -116 130 -43 166 -74 b 200 -117 200 -117 200 -117 b 201 -117 200 -117 201 -117 b 264 -43 212 -98 242 -62 b 345 15 288 -19 321 4 b 348 18 347 16 348 16 b 344 20 348 18 347 19 b 239 113 307 41 266 79 ', + }, + noteheadDiamondBlack: { + x_min: 0, + x_max: 432.828125, + ha: 442, + o: 'm 209 186 b 213 187 210 187 212 187 b 216 187 215 187 216 187 b 224 174 216 186 220 180 b 420 -1 269 105 338 43 b 432 -12 431 -8 432 -9 b 421 -23 432 -15 432 -16 b 228 -180 345 -70 264 -137 b 219 -188 221 -188 221 -188 l 219 -188 b 208 -177 215 -188 215 -188 b 10 1 163 -106 93 -44 b 0 11 0 6 0 8 b 10 22 0 13 0 15 b 202 179 87 69 167 136 b 209 186 206 183 209 186 ', + }, + augmentationDot: { + x_min: 0, + x_max: 133.390625, + ha: 136, + o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ', + }, + tremolo1: { + x_min: -206.890625, + x_max: 428.75, + ha: 438, + o: 'm 389 -351 b 394 -351 390 -351 393 -351 b 428 -385 413 -351 428 -367 b 428 -394 428 -388 428 -391 b 394 -428 426 -406 421 -410 l 332 -473 l 269 -516 l 205 -560 l 141 -603 l 77 -648 l 13 -692 l -50 -737 l -114 -780 l -145 -802 b -171 -813 -157 -810 -163 -813 b -175 -813 -172 -813 -174 -813 b -206 -777 -194 -811 -206 -795 b -202 -760 -206 -771 -205 -766 b -87 -675 -197 -752 -206 -757 l -34 -639 l 83 -557 l 145 -514 l 209 -470 l 272 -427 b 389 -351 375 -356 381 -352 ', + }, + flag8thUp: { + x_min: -24.5, + x_max: 317.140625, + ha: 324, + o: 'm -24 -161 l -24 -5 l -20 -5 b 0 -24 -9 -5 -2 -12 b 171 -315 21 -124 84 -233 b 317 -660 268 -406 317 -531 b 187 -1014 317 -782 274 -909 b 161 -1034 172 -1034 171 -1034 b 141 -1013 149 -1034 141 -1025 b 152 -991 141 -1004 142 -1002 b 266 -682 228 -899 266 -788 b 174 -430 266 -588 236 -498 b -23 -317 136 -388 66 -348 b -24 -161 -23 -316 -24 -285 ', + }, + flag8thDown: { + x_min: -21.78125, + x_max: 367.5, + ha: 375, + o: 'm 230 1031 b 238 1032 232 1032 235 1032 b 259 1014 245 1032 251 1027 b 367 662 330 906 367 782 b 364 602 367 641 367 621 b 232 317 352 488 304 384 b 57 120 155 245 103 187 b -1 18 31 84 6 40 b -19 4 -4 11 -12 4 l -21 4 l -21 159 l -21 315 l -16 315 b 96 335 10 315 62 324 b 315 695 227 380 315 527 b 313 738 315 709 314 724 b 224 991 304 825 273 916 b 216 1013 219 999 216 1007 b 230 1031 216 1021 220 1028 ', + }, + flag16thUp: { + x_min: -24.5, + x_max: 317.140625, + ha: 324, + o: 'm -24 -147 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 58 -123 6 -43 31 -86 b 196 -278 93 -173 134 -219 b 317 -570 274 -356 317 -460 b 294 -713 317 -617 308 -666 l 289 -724 l 294 -735 b 317 -873 308 -780 317 -827 b 235 -1132 317 -963 288 -1054 b 209 -1165 228 -1140 224 -1146 b 189 -1177 204 -1172 196 -1177 b 171 -1164 182 -1177 175 -1172 b 168 -1154 170 -1161 168 -1159 b 181 -1132 168 -1149 172 -1142 b 269 -891 238 -1064 269 -975 b 269 -881 269 -886 269 -884 b 262 -814 269 -857 265 -827 b 258 -800 261 -811 259 -806 b 142 -628 240 -731 198 -667 b -8 -589 112 -606 47 -589 b -20 -589 -13 -589 -19 -589 l -24 -589 l -24 -449 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 58 -424 6 -345 31 -388 b 194 -580 93 -476 136 -523 b 259 -660 221 -606 245 -635 b 261 -663 259 -662 261 -663 b 264 -656 262 -663 262 -660 b 269 -587 268 -632 269 -610 b 264 -521 269 -566 268 -544 b 262 -512 264 -517 262 -513 b 258 -498 261 -509 259 -503 b 142 -326 240 -428 198 -365 b -8 -287 112 -303 47 -288 b -20 -287 -13 -287 -19 -287 l -24 -287 l -24 -147 ', + }, + flag16thDown: { + x_min: -21.78125, + x_max: 362.0625, + ha: 369, + o: 'm 302 1031 b 308 1032 304 1032 307 1032 b 330 1016 318 1032 325 1027 b 362 867 351 970 362 920 b 340 738 362 824 353 780 l 336 727 l 340 717 b 362 591 355 677 362 634 b 257 323 362 496 325 401 b 204 272 243 306 227 290 b 20 56 129 206 66 133 b -1 18 12 44 0 22 b -19 4 -4 9 -12 4 l -21 4 l -21 140 l -21 276 l -12 277 b 167 333 61 288 127 309 b 319 598 262 388 319 491 b 311 664 319 620 317 642 l 310 673 l 304 664 b 204 548 279 620 250 587 b 20 333 129 483 66 409 b -1 292 12 320 0 298 b -19 280 -4 285 -12 280 l -21 280 l -21 416 l -21 552 l -12 553 b 167 609 61 564 127 585 b 319 874 264 666 319 770 b 294 992 319 914 311 954 b 288 1011 288 1004 288 1007 b 302 1031 288 1021 294 1028 ', + }, + flag32ndUp: { + x_min: -24.5, + x_max: 315.78125, + ha: 322, + o: 'm -24 -145 l -24 -5 l -20 -5 b 1 -26 -10 -5 -6 -9 b 175 -241 31 -86 96 -166 b 314 -548 259 -323 304 -420 b 315 -589 315 -555 315 -571 b 314 -630 315 -606 315 -623 b 298 -730 311 -664 306 -699 l 295 -742 l 296 -748 b 314 -850 304 -778 311 -813 b 315 -892 315 -857 315 -874 b 314 -932 315 -909 315 -925 b 298 -1032 311 -967 306 -1002 l 295 -1045 l 296 -1050 b 314 -1153 304 -1081 311 -1115 b 315 -1193 315 -1160 315 -1177 b 314 -1235 315 -1211 315 -1228 b 217 -1526 306 -1338 270 -1444 b 201 -1533 213 -1532 208 -1533 b 182 -1522 193 -1533 185 -1529 b 179 -1514 181 -1518 179 -1517 b 189 -1489 179 -1508 182 -1501 b 266 -1217 240 -1403 266 -1308 b 262 -1156 266 -1196 265 -1177 b 110 -907 247 -1043 190 -950 b 0 -889 87 -895 50 -889 l -1 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 1 -631 -10 -610 -6 -614 b 175 -846 31 -691 96 -771 b 259 -956 213 -884 236 -914 b 265 -966 262 -961 264 -966 b 265 -966 265 -966 265 -966 b 265 -953 265 -964 265 -959 b 266 -920 266 -943 266 -932 b 262 -853 266 -898 265 -873 b 110 -605 247 -741 190 -648 b 0 -587 87 -592 50 -587 l -1 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 1 -328 -10 -308 -6 -312 b 175 -544 31 -388 96 -469 b 259 -655 213 -581 236 -612 b 265 -663 262 -659 264 -663 b 265 -663 265 -663 265 -663 b 265 -650 265 -663 265 -657 b 266 -617 266 -641 266 -630 b 262 -551 266 -595 265 -570 b 110 -303 247 -438 190 -345 b 0 -284 87 -290 50 -284 l -1 -284 l -24 -284 l -24 -145 ', + }, + flag32ndDown: { + x_min: -21.78125, + x_max: 366.140625, + ha: 374, + o: 'm 276 1378 b 284 1379 279 1379 281 1379 b 306 1360 292 1379 298 1374 b 352 1247 326 1326 343 1286 b 366 1139 362 1213 366 1175 b 347 1009 366 1093 359 1049 l 344 1002 l 347 992 b 352 971 348 986 351 977 b 366 863 362 936 366 899 b 347 732 366 818 359 773 l 344 725 l 347 716 b 352 695 348 710 351 700 b 366 588 362 659 366 623 b 223 262 366 464 314 345 b 189 233 212 252 212 252 b 35 76 126 183 73 129 b -1 16 20 56 2 27 b -19 4 -4 9 -12 4 l -21 4 l -21 137 l -21 270 l -17 270 b 186 344 59 281 134 308 b 319 606 270 399 319 499 b 317 650 319 620 319 635 l 315 659 l 314 655 b 223 537 288 607 258 570 b 189 509 212 528 212 528 b 35 352 126 459 73 405 b -1 292 20 333 2 303 b -19 280 -4 285 -12 280 l -21 280 l -21 413 l -21 546 l -17 546 b 186 620 59 557 134 584 b 319 882 270 675 319 775 b 317 925 319 896 319 911 l 315 935 l 314 931 b 223 813 288 884 258 846 b 189 785 212 805 212 805 b 35 628 126 735 73 681 b -1 569 20 609 2 580 b -19 556 -4 562 -12 556 l -21 556 l -21 689 l -21 823 l -17 823 b 202 907 68 835 152 867 b 319 1157 280 968 319 1061 b 270 1338 319 1218 303 1281 b 262 1358 264 1349 262 1353 b 262 1364 262 1360 262 1363 b 276 1378 265 1371 269 1376 ', + }, + flag64thUp: { + x_min: -24.5, + x_max: 314.421875, + ha: 321, + o: 'm -24 -145 l -24 -5 l -20 -5 b 0 -23 -9 -5 -2 -12 b 27 -87 4 -38 14 -66 b 138 -220 53 -136 88 -177 b 235 -328 179 -255 208 -288 b 314 -592 287 -409 314 -501 b 292 -732 314 -639 307 -687 l 289 -742 l 294 -756 b 314 -896 307 -802 314 -849 b 292 -1035 314 -943 307 -991 l 289 -1045 l 294 -1057 b 314 -1197 307 -1104 314 -1152 b 292 -1338 314 -1246 307 -1292 l 289 -1347 l 294 -1360 b 314 -1500 307 -1407 314 -1454 b 273 -1689 314 -1565 300 -1628 b 250 -1712 265 -1710 261 -1712 b 228 -1691 236 -1712 228 -1704 l 228 -1685 l 234 -1675 b 270 -1507 258 -1621 270 -1564 b 98 -1193 270 -1381 209 -1261 b 40 -1174 76 -1179 58 -1174 b -10 -1189 24 -1174 8 -1178 b -20 -1192 -14 -1192 -16 -1192 l -24 -1192 l -24 -1052 l -24 -913 l -20 -913 b 0 -931 -9 -913 -2 -920 b 27 -995 4 -946 14 -974 b 138 -1128 53 -1043 88 -1085 b 257 -1275 190 -1172 228 -1220 b 262 -1283 259 -1279 262 -1283 l 262 -1283 b 269 -1249 264 -1282 268 -1260 b 270 -1206 270 -1233 270 -1220 b 98 -891 270 -1075 206 -957 b 40 -871 76 -877 58 -871 b -10 -886 24 -871 8 -875 b -20 -889 -14 -889 -16 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 0 -628 -9 -610 -2 -617 b 27 -692 4 -644 14 -671 b 138 -825 53 -741 88 -782 b 257 -973 190 -870 228 -917 b 262 -981 259 -977 262 -981 l 262 -981 b 269 -946 264 -979 268 -957 b 270 -903 270 -931 270 -917 b 98 -588 270 -774 206 -655 b 40 -569 76 -574 58 -569 b -10 -584 24 -569 8 -574 b -20 -587 -14 -587 -16 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 0 -326 -9 -308 -2 -315 b 27 -390 4 -341 14 -369 b 138 -523 53 -438 88 -480 b 257 -670 190 -567 228 -614 b 262 -678 259 -674 262 -678 b 262 -678 262 -678 262 -678 b 269 -644 264 -677 268 -656 b 270 -601 270 -628 270 -614 b 98 -285 270 -471 206 -352 b 40 -266 76 -273 58 -266 b -10 -281 24 -266 8 -272 b -20 -284 -14 -284 -16 -284 l -24 -284 l -24 -145 ', + }, + flag64thDown: { + x_min: -21.78125, + x_max: 367.5, + ha: 375, + o: 'm 259 1553 b 265 1553 261 1553 264 1553 b 288 1540 272 1553 277 1550 b 367 1351 340 1493 367 1424 b 336 1221 367 1308 357 1263 l 332 1211 l 333 1208 b 367 1077 356 1170 367 1124 b 336 945 367 1032 357 986 l 332 935 l 333 932 b 367 800 356 893 367 848 b 336 669 367 756 357 710 l 332 659 l 333 656 b 367 523 356 617 367 571 b 345 412 367 485 360 446 b 231 273 322 356 284 310 b -1 19 121 195 27 93 b -17 4 -4 11 -10 5 l -21 4 l -21 134 l -21 265 l -17 265 b 133 291 20 265 96 278 b 318 537 245 328 318 433 b 307 603 318 559 315 582 b 303 614 304 612 304 614 b 298 609 302 614 300 613 b 231 549 281 589 258 567 b -1 295 121 471 27 369 b -17 280 -4 287 -10 281 l -21 280 l -21 410 l -21 541 l -17 541 b 133 567 20 541 96 555 b 318 813 245 605 318 709 b 307 880 318 835 315 859 b 303 891 304 888 304 891 b 298 885 302 891 300 888 b 231 825 281 866 258 843 b -1 571 121 748 27 645 b -17 556 -4 563 -10 557 l -21 556 l -21 687 l -21 817 l -17 817 b 133 843 20 817 96 830 b 318 1089 245 881 318 985 b 307 1156 318 1111 315 1134 b 303 1167 304 1164 304 1167 b 298 1161 302 1167 300 1164 b 231 1102 281 1140 258 1120 b -1 848 121 1024 27 921 b -17 832 -4 839 -10 834 l -21 832 l -21 963 l -21 1093 l -17 1093 b 114 1113 12 1093 78 1103 b 313 1314 215 1142 289 1218 b 318 1364 317 1331 318 1347 b 255 1511 318 1422 295 1478 b 243 1532 247 1519 243 1525 b 259 1553 243 1540 250 1550 ', + }, + flag128thUp: { + x_min: -24.5, + x_max: 313.0625, + ha: 319, + o: 'm -24 -133 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 142 -213 13 -61 74 -144 b 258 -376 196 -269 230 -315 b 313 -605 295 -449 313 -528 b 292 -742 313 -652 306 -699 b 288 -752 289 -748 288 -752 b 288 -752 288 -752 288 -752 b 292 -764 289 -753 291 -757 b 313 -907 306 -811 313 -860 b 292 -1045 313 -954 306 -1002 b 288 -1054 289 -1050 288 -1054 b 288 -1054 288 -1054 288 -1054 b 292 -1067 289 -1054 291 -1060 b 313 -1210 306 -1113 313 -1161 b 292 -1346 313 -1257 306 -1304 b 288 -1357 289 -1353 288 -1357 b 288 -1357 288 -1357 288 -1357 b 292 -1368 289 -1357 291 -1363 b 313 -1512 306 -1415 313 -1464 b 292 -1648 313 -1560 306 -1605 b 288 -1660 289 -1654 288 -1660 b 288 -1660 288 -1660 288 -1660 b 292 -1671 289 -1660 291 -1665 b 313 -1814 306 -1719 313 -1766 b 250 -2040 313 -1897 291 -1977 b 232 -2062 238 -2057 236 -2059 b 221 -2065 230 -2063 225 -2065 b 200 -2045 210 -2065 201 -2057 b 200 -2043 200 -2044 200 -2044 b 208 -2026 200 -2037 202 -2034 b 269 -1826 249 -1966 269 -1897 b 153 -1544 269 -1726 230 -1625 b -9 -1472 115 -1506 58 -1481 b -21 -1471 -14 -1471 -19 -1471 l -24 -1471 l -24 -1343 l -24 -1215 l -20 -1215 b -1 -1229 -12 -1215 -4 -1221 b 142 -1424 13 -1270 74 -1353 b 257 -1582 196 -1478 228 -1524 b 264 -1594 261 -1589 264 -1594 l 264 -1594 b 265 -1582 264 -1594 264 -1589 b 270 -1525 268 -1562 270 -1544 b 153 -1243 270 -1424 228 -1321 b -9 -1170 115 -1203 58 -1178 b -21 -1168 -14 -1170 -19 -1168 l -24 -1168 l -24 -1041 l -24 -913 l -20 -913 b -1 -927 -12 -913 -4 -918 b 142 -1121 13 -967 74 -1050 b 257 -1281 196 -1175 228 -1221 b 264 -1292 261 -1286 264 -1292 l 264 -1292 b 265 -1279 264 -1292 264 -1286 b 270 -1222 268 -1261 270 -1242 b 153 -941 270 -1121 228 -1018 b -9 -867 115 -900 58 -875 b -21 -866 -14 -867 -19 -866 l -24 -866 l -24 -738 l -24 -610 l -20 -610 b -1 -624 -12 -610 -4 -616 b 142 -818 13 -664 74 -749 b 257 -978 196 -873 228 -918 b 264 -989 261 -984 264 -989 l 264 -989 b 265 -977 264 -989 264 -984 b 270 -920 268 -959 270 -939 b 153 -638 270 -818 228 -716 b -9 -564 115 -598 58 -573 b -21 -563 -14 -564 -19 -563 l -24 -563 l -24 -435 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 142 -516 13 -363 74 -446 b 257 -675 196 -571 228 -616 b 264 -687 261 -681 264 -687 l 264 -687 b 265 -674 264 -687 264 -681 b 270 -617 268 -656 270 -637 b 153 -335 270 -516 228 -413 b -9 -262 115 -295 58 -270 b -21 -260 -14 -262 -19 -260 l -24 -260 l -24 -133 ', + }, + flag128thDown: { + x_min: -21.78125, + x_max: 367.5, + ha: 375, + o: 'm 276 1900 b 284 1901 279 1900 281 1901 b 306 1883 291 1901 298 1896 b 367 1686 347 1825 367 1757 b 343 1558 367 1643 359 1600 l 338 1549 l 343 1537 b 367 1411 359 1497 367 1454 b 343 1282 367 1367 359 1324 l 338 1272 l 343 1261 b 367 1135 359 1221 367 1178 b 343 1007 367 1090 359 1047 l 338 996 l 343 985 b 367 859 359 945 367 902 b 343 731 367 814 359 771 l 338 720 l 343 709 b 367 582 359 667 367 626 b 289 362 367 503 340 426 b 239 312 276 345 259 330 b 29 77 152 237 76 152 b -1 18 14 54 2 30 b -19 4 -4 11 -12 4 l -21 4 l -21 133 l -20 260 l -13 262 b 98 299 17 269 62 284 b 111 305 103 302 110 305 b 167 334 123 310 156 327 b 319 595 264 391 319 491 b 313 659 319 616 318 638 b 310 667 311 664 311 667 b 307 663 310 667 308 666 b 240 588 289 637 269 614 b 16 331 141 505 62 413 b -1 294 8 316 1 302 b -19 280 -4 287 -12 280 l -21 280 l -21 408 l -20 537 l -13 538 b 98 576 17 545 62 560 b 111 581 103 578 110 581 b 167 610 123 587 156 603 b 319 871 264 667 319 767 b 313 935 319 892 318 913 b 310 942 311 941 311 942 b 307 939 310 942 308 941 b 240 864 289 913 269 889 b 16 607 141 781 62 689 b -1 570 8 592 1 578 b -19 556 -4 563 -12 556 l -21 556 l -21 684 l -20 813 l -13 814 b 98 852 17 821 62 836 b 111 857 103 855 110 857 b 167 886 123 863 156 880 b 319 1147 264 943 319 1043 b 313 1211 319 1168 318 1189 b 310 1218 311 1217 311 1218 b 307 1215 310 1218 308 1217 b 240 1140 289 1188 269 1165 b 16 884 141 1057 62 966 b -1 846 8 868 1 855 b -19 832 -4 839 -12 832 l -21 832 l -21 960 l -20 1089 l -13 1090 b 98 1128 17 1097 62 1111 b 111 1134 103 1131 110 1134 b 167 1163 123 1139 156 1156 b 319 1424 264 1220 319 1320 b 313 1486 319 1444 318 1465 b 310 1494 311 1493 311 1494 b 307 1492 310 1494 308 1493 b 240 1417 289 1464 269 1442 b 16 1160 141 1333 62 1242 b -1 1121 8 1145 1 1131 b -19 1109 -4 1115 -12 1109 l -21 1109 l -21 1236 l -20 1365 l -13 1367 b 98 1404 17 1374 62 1388 b 111 1410 103 1407 110 1410 b 250 1508 172 1437 215 1467 b 319 1701 296 1564 319 1633 b 270 1859 319 1757 303 1814 b 262 1882 265 1868 262 1875 b 276 1900 262 1890 266 1896 ', + }, + accidentalFlat: { + x_min: -21.78125, + x_max: 251.8125, + ha: 257, + o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ', + }, + accidentalNatural: { + x_min: 0, + x_max: 239.5625, + ha: 244, + o: 'm 10 460 b 20 462 13 462 14 462 b 39 449 28 462 35 458 l 40 446 l 40 326 b 40 205 40 259 40 205 b 127 227 40 205 80 215 b 220 249 196 244 213 249 b 227 247 224 249 225 248 b 238 237 231 245 235 241 l 239 233 l 239 -106 l 239 -448 l 238 -451 b 219 -463 234 -459 225 -463 b 198 -451 210 -463 202 -459 l 197 -448 l 197 -324 b 197 -201 197 -248 197 -201 b 110 -223 196 -201 157 -210 b 17 -245 42 -240 24 -245 b 10 -242 13 -245 13 -244 b 0 -233 6 -241 2 -237 l 0 -230 l 0 108 l 0 446 l 0 449 b 10 460 2 453 6 458 m 197 22 b 197 70 197 41 197 58 b 196 116 197 113 197 116 l 196 116 b 118 97 196 116 160 106 l 40 77 l 40 -18 b 40 -112 40 -69 40 -112 l 119 -93 l 197 -73 l 197 22 ', + }, + accidentalSharp: { + x_min: 0, + x_max: 323.9375, + ha: 331, + o: 'm 217 535 b 225 537 220 537 221 537 b 245 524 235 537 242 533 l 246 521 l 247 390 l 247 258 l 273 265 b 306 270 288 269 299 270 b 322 259 315 270 319 267 b 323 208 323 256 323 233 b 322 158 323 184 323 159 b 288 140 318 148 315 147 b 247 130 254 131 247 130 b 247 65 247 130 247 104 b 247 20 247 51 247 36 l 247 -88 l 273 -81 b 306 -76 289 -77 299 -76 b 318 -81 311 -76 315 -77 b 323 -123 323 -87 323 -86 l 323 -138 l 323 -154 b 318 -195 323 -191 323 -190 b 269 -210 314 -199 315 -199 b 249 -216 259 -213 250 -216 l 247 -216 l 247 -349 l 246 -483 l 245 -487 b 225 -499 242 -495 234 -499 b 206 -487 219 -499 210 -495 l 205 -483 l 205 -355 l 205 -227 l 204 -227 l 181 -233 l 138 -244 b 117 -249 127 -247 117 -249 b 115 -385 115 -249 115 -256 l 115 -523 l 114 -526 b 95 -538 110 -534 102 -538 b 74 -526 87 -538 78 -534 l 73 -523 l 73 -391 b 72 -260 73 -269 73 -260 b 72 -260 72 -260 72 -260 b 19 -273 61 -263 23 -273 b 0 -260 10 -273 4 -267 b 0 -209 0 -256 0 -256 l 0 -162 l 1 -158 b 61 -134 5 -148 5 -148 l 73 -131 l 73 -22 b 72 86 73 79 73 86 b 72 86 72 86 72 86 b 19 74 61 83 23 74 b 0 86 10 74 4 79 b 0 137 0 90 0 90 l 0 184 l 1 188 b 61 212 5 198 5 198 l 73 215 l 73 348 l 73 481 l 74 485 b 95 498 78 492 87 498 b 103 495 98 498 100 496 b 114 485 107 494 111 489 l 115 481 l 115 353 l 115 226 l 121 226 b 159 235 123 227 141 231 l 198 247 l 205 248 l 205 384 l 205 521 l 206 524 b 217 535 209 528 212 533 m 205 9 b 205 119 205 70 205 119 l 205 119 b 182 113 204 119 194 116 l 138 102 b 117 97 127 99 117 97 b 115 -12 115 97 115 91 l 115 -122 l 121 -120 b 159 -111 123 -119 141 -115 l 198 -101 l 205 -98 l 205 9 ', + }, + accidentalDoubleSharp: { + x_min: 0, + x_max: 367.5, + ha: 375, + o: 'm 0 124 l 0 187 l 61 187 l 122 187 l 122 138 l 122 91 l 153 61 l 183 30 l 213 61 l 243 91 l 243 138 l 243 187 l 306 187 l 367 187 l 367 124 l 367 61 l 321 61 l 274 61 l 243 30 l 213 0 l 243 -31 l 274 -62 l 321 -62 l 367 -62 l 367 -124 l 367 -188 l 306 -188 l 243 -188 l 243 -140 l 243 -93 l 213 -62 l 183 -31 l 153 -62 l 122 -93 l 122 -140 l 122 -188 l 61 -188 l 0 -188 l 0 -124 l 0 -62 l 46 -62 l 92 -62 l 123 -31 l 153 0 l 123 30 l 92 61 l 46 61 l 0 61 l 0 124 ', + }, + accidentalDoubleFlat: { + x_min: -21.78125, + x_max: 483.1875, + ha: 493, + o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 179 164 199 187 192 l 210 176 l 210 396 l 210 617 l 212 621 b 231 632 216 628 223 632 b 250 620 239 632 247 628 b 251 383 251 616 251 616 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 ', + }, + accidentalParensLeft: { + x_min: -166.0625, + x_max: -25.859375, + ha: 0, + o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ', + }, + accidentalParensRight: { + x_min: 25.859375, + x_max: 164.6875, + ha: 168, + o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ', + }, + accidentalQuarterToneFlatStein: { + x_min: 0, + x_max: 272.21875, + ha: 278, + o: 'm 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 ', + }, + accidentalThreeQuarterTonesFlatZimmermann: { + x_min: 0, + x_max: 607.0625, + ha: 619, + o: 'm 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 m 347 631 b 353 632 348 632 351 632 b 374 620 363 632 371 628 b 375 383 375 616 375 616 l 375 148 l 377 151 b 492 199 415 183 454 199 b 537 191 507 199 522 197 b 607 84 582 176 607 134 b 583 0 607 58 598 29 b 455 -142 562 -40 533 -72 l 378 -215 b 355 -229 364 -229 362 -229 b 334 -216 345 -229 337 -224 l 333 -212 l 333 201 l 333 616 l 334 620 b 347 631 337 624 341 630 m 465 131 b 451 133 461 133 455 133 b 445 133 449 133 446 133 b 379 87 419 129 396 113 l 375 80 l 375 -37 l 375 -156 l 378 -152 b 499 81 451 -72 499 20 l 499 83 b 465 131 499 113 490 126 ', + }, + accidentalQuarterToneSharpStein: { + x_min: 0, + x_max: 193.28125, + ha: 197, + o: 'm 85 514 b 95 517 88 517 89 517 b 114 505 103 517 110 513 l 115 502 l 115 376 b 115 249 115 306 115 249 b 141 258 117 249 127 252 l 167 266 l 172 266 b 190 254 181 265 187 262 l 193 251 l 193 202 l 193 188 b 187 147 193 149 191 152 b 147 130 183 142 182 141 l 115 119 l 115 9 b 115 -99 115 -51 115 -99 b 141 -91 115 -99 127 -95 b 171 -81 166 -81 167 -81 l 171 -81 b 191 -94 181 -81 189 -87 b 193 -142 191 -97 193 -120 b 191 -195 193 -167 191 -194 b 125 -227 187 -205 187 -204 l 115 -230 l 115 -366 l 115 -503 l 114 -506 b 95 -519 110 -514 102 -519 b 74 -506 87 -519 78 -514 l 73 -503 l 73 -374 b 73 -245 73 -260 73 -245 b 73 -245 73 -245 73 -245 b 55 -252 72 -245 63 -249 l 32 -260 b 19 -263 27 -262 23 -263 b 4 -256 13 -263 8 -260 b 0 -215 0 -251 0 -254 b 0 -199 0 -210 0 -206 l 0 -152 l 1 -149 b 8 -140 2 -145 5 -141 b 42 -127 9 -140 24 -133 l 73 -116 l 73 -5 b 73 23 73 4 73 15 b 73 105 73 70 73 105 b 49 97 73 105 61 101 b 17 88 32 91 23 88 b 4 95 10 88 8 91 b 0 137 0 101 0 98 b 0 151 0 141 0 145 l 0 199 l 1 202 b 43 224 5 212 5 212 l 73 234 l 73 367 l 73 502 l 74 505 b 85 514 77 509 81 513 ', + }, + accidentalThreeQuarterTonesSharpStein: { + x_min: -1.359375, + x_max: 455.96875, + ha: 465, + o: 'm 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 ', + }, + accidentalBuyukMucennebFlat: { + x_min: -171.5, + x_max: 251.8125, + ha: 257, + o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ', + }, + accidentalBakiyeFlat: { + x_min: -176.9375, + x_max: 251.8125, + ha: 257, + o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ', + }, + accidentalKomaSharp: { + x_min: -1.359375, + x_max: 455.96875, + ha: 465, + o: 'm 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 ', + }, + accidentalKucukMucennebSharp: { + x_min: -1.359375, + x_max: 255.890625, + ha: 261, + o: 'm 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 ', + }, + articAccentAbove: { + x_min: -348.4375, + x_max: 24.5, + ha: 25, + o: 'm -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 ', + }, + articAccentBelow: { + x_min: -348.4375, + x_max: 24.5, + ha: 25, + o: 'm -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 ', + }, + articTenutoAbove: { + x_min: 0, + x_max: 318.5, + ha: 325, + o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ', + }, + articTenutoBelow: { + x_min: 0, + x_max: 318.5, + ha: 325, + o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ', + }, + articStaccatoAbove: { + x_min: 0, + x_max: 133.390625, + ha: 136, + o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ', + }, + articStaccatoBelow: { + x_min: 0, + x_max: 133.390625, + ha: 136, + o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ', + }, + articStaccatissimoAbove: { + x_min: -73.5, + x_max: 72.140625, + ha: 74, + o: 'm -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 ', + }, + articStaccatissimoBelow: { + x_min: -73.5, + x_max: 72.140625, + ha: 74, + o: 'm -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 ', + }, + articMarcatoAbove: { + x_min: -149.71875, + x_max: 148.359375, + ha: 151, + o: 'm -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 ', + }, + articMarcatoBelow: { + x_min: -149.71875, + x_max: 148.359375, + ha: 151, + o: 'm -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 ', + }, + fermataAbove: { + x_min: -442.359375, + x_max: 441, + ha: 450, + o: 'm -31 487 b -1 488 -21 488 -10 488 b 434 104 216 488 397 330 b 441 27 438 79 441 47 b 439 12 441 20 439 15 b 419 0 435 4 427 0 b 404 5 413 0 408 1 b 398 30 400 11 398 13 b 0 351 390 213 213 351 b -59 348 -20 351 -39 349 b -400 30 -251 324 -393 191 b -405 5 -400 13 -401 11 b -420 0 -409 1 -415 0 b -441 12 -428 0 -436 4 b -442 27 -441 15 -442 20 b -435 104 -442 47 -439 79 b -31 487 -401 316 -235 474 m -13 131 b -1 133 -9 133 -5 133 b 51 105 19 133 39 123 b 61 70 58 95 61 83 b 51 34 61 58 58 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -57 38 -62 54 b -13 131 -62 98 -44 124 ', + }, + fermataBelow: { + x_min: -441, + x_max: 439.640625, + ha: 449, + o: 'm -428 -2 b -421 0 -427 -1 -424 0 b -406 -6 -416 0 -409 -2 b -400 -31 -401 -12 -400 -15 b -1 -352 -392 -215 -215 -352 b 58 -349 19 -352 38 -351 b 398 -31 250 -326 392 -192 b 404 -6 398 -15 400 -12 b 419 -1 408 -2 413 -1 b 439 -13 427 -1 435 -5 b 439 -29 439 -16 439 -22 b 434 -105 439 -48 438 -80 b 0 -489 397 -333 213 -489 b -68 -484 -23 -489 -44 -488 b -441 -36 -280 -452 -436 -263 b -441 -30 -441 -34 -441 -31 b -428 -2 -441 -11 -439 -5 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -57 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ', + }, + fermataLongAbove: { + x_min: -390.640625, + x_max: 389.28125, + ha: 397, + o: 'm -378 502 l -374 503 l 0 503 l 372 503 l 377 502 b 387 491 381 499 385 496 l 389 488 l 389 251 l 389 15 l 387 12 b 367 0 383 4 375 0 b 348 12 360 0 352 4 l 347 15 l 347 174 l 347 335 l 0 335 l -348 335 l -348 174 l -348 15 l -349 12 b -368 0 -353 4 -362 0 b -389 12 -377 0 -385 4 l -390 15 l -390 251 l -390 488 l -389 491 b -378 502 -386 496 -382 499 m -13 131 b -1 133 -9 133 -5 133 b 50 105 19 133 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -58 38 -62 55 b -13 131 -62 98 -44 124 ', + }, + fermataLongBelow: { + x_min: -390.640625, + x_max: 389.28125, + ha: 397, + o: 'm -378 -2 b -368 -1 -375 -1 -374 -1 b -349 -13 -360 -1 -353 -5 l -348 -16 l -348 -176 l -348 -337 l 0 -337 l 347 -337 l 347 -176 l 347 -16 l 348 -13 b 367 0 352 -5 360 0 b 387 -13 375 0 383 -5 l 389 -16 l 389 -252 l 389 -489 l 387 -492 b 377 -503 385 -498 381 -501 l 372 -505 l 0 -505 l -374 -505 l -378 -503 b -389 -492 -382 -501 -386 -498 l -390 -489 l -390 -252 l -390 -16 l -389 -13 b -378 -2 -386 -8 -382 -4 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -58 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ', + }, + fermataVeryLongAbove: { + x_min: -390.640625, + x_max: 389.28125, + ha: 397, + o: 'm -378 573 l -374 576 l 0 576 l 372 576 l 377 573 b 387 563 381 571 385 567 l 389 559 l 389 287 l 389 15 l 387 12 b 367 0 383 4 375 0 b 348 12 360 0 352 4 l 347 15 l 347 210 l 347 406 l 0 406 l -348 406 l -348 210 l -348 15 l -349 12 b -368 0 -353 4 -362 0 b -389 12 -377 0 -385 4 l -390 15 l -390 287 l -390 559 l -389 563 b -378 573 -386 567 -382 571 m -274 337 l -270 338 l 0 338 l 269 338 l 273 337 b 284 326 279 334 281 330 l 285 323 l 285 169 l 285 15 l 284 12 b 265 -1 280 4 272 -1 b 245 12 257 -1 249 4 l 245 15 l 243 108 l 243 201 l 0 201 l -245 201 l -245 108 l -245 15 l -246 12 b -266 -1 -250 4 -258 -1 b -285 12 -273 -1 -281 4 l -287 15 l -287 169 l -287 323 l -285 326 b -274 337 -283 330 -280 334 m -13 131 b -1 133 -9 133 -5 133 b 50 105 19 133 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -58 38 -62 55 b -13 131 -62 98 -44 124 ', + }, + fermataVeryLongBelow: { + x_min: -390.640625, + x_max: 389.28125, + ha: 397, + o: 'm -378 -2 b -368 -1 -375 -1 -374 -1 b -349 -13 -360 -1 -353 -5 l -348 -16 l -348 -212 l -348 -408 l 0 -408 l 347 -408 l 347 -212 l 347 -16 l 348 -13 b 367 0 352 -5 360 0 b 387 -13 375 0 383 -5 l 389 -16 l 389 -288 l 389 -560 l 387 -564 b 377 -574 385 -569 381 -573 l 372 -577 l 0 -577 l -374 -577 l -378 -574 b -389 -564 -382 -573 -386 -569 l -390 -560 l -390 -288 l -390 -16 l -389 -13 b -378 -2 -386 -8 -382 -4 m -274 -2 b -266 -1 -272 -1 -270 -1 b -246 -13 -257 -1 -250 -5 l -245 -16 l -245 -109 l -245 -202 l 0 -202 l 243 -202 l 243 -109 l 245 -16 l 245 -13 b 265 0 249 -5 257 0 b 284 -13 272 0 280 -5 l 285 -16 l 285 -170 l 285 -324 l 284 -327 b 273 -338 281 -331 279 -335 l 269 -340 l 0 -340 l -270 -340 l -274 -338 b -285 -327 -280 -335 -283 -331 l -287 -324 l -287 -170 l -287 -16 l -285 -13 b -274 -2 -283 -8 -280 -4 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -58 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ', + }, + fermataShortAbove: { + x_min: -390.640625, + x_max: 389.28125, + ha: 397, + o: 'm -9 650 b -1 652 -6 650 -4 652 b 19 639 6 652 13 648 l 23 631 b 28 623 24 628 27 626 l 34 614 l 39 606 l 43 598 l 49 588 l 54 580 l 59 571 l 65 563 l 69 555 l 74 546 l 80 537 l 85 528 b 89 520 87 526 89 523 l 95 512 l 100 503 l 106 494 l 111 487 l 115 478 l 121 470 l 126 462 l 130 453 l 136 445 l 141 437 l 147 427 l 151 419 l 156 410 l 161 402 l 167 394 l 172 385 l 176 376 b 182 367 179 374 181 370 l 187 359 l 193 351 l 198 342 l 202 334 l 208 326 l 212 317 l 217 309 l 223 301 l 228 292 l 234 284 l 238 274 l 243 266 l 249 258 l 254 249 l 259 241 l 264 233 l 269 224 b 274 216 270 222 273 217 l 280 206 l 285 198 l 295 180 l 299 174 l 304 165 l 310 156 l 315 148 l 321 140 l 325 131 l 330 123 l 336 113 l 341 105 l 347 97 l 351 88 l 356 80 l 360 72 b 364 66 362 70 363 68 b 370 58 366 65 368 61 l 379 41 b 389 19 386 31 389 24 b 382 4 389 13 386 8 b 347 0 377 0 378 0 b 337 0 344 0 340 0 b 336 0 336 0 336 0 b 287 11 294 0 294 0 l 281 19 l 276 27 l 272 37 l 266 45 l 261 54 l 255 62 l 250 70 l 246 79 l 240 87 l 235 97 l 230 105 l 224 113 l 220 122 l 215 130 l 209 140 l 204 148 l 200 155 l 194 163 b 189 172 193 165 191 169 l 185 180 l 179 188 l 174 198 l 168 206 l 163 215 l 159 223 l 153 231 l 148 240 l 142 249 l 138 258 l 133 266 l 127 274 l 122 283 l 117 292 l 111 301 l 107 308 l 102 316 b 98 324 102 317 99 322 l 92 333 l 87 341 l 81 349 l 77 359 l 72 367 l 66 376 l 61 384 l 55 392 l 51 401 l 46 410 l 40 419 l 35 427 l 31 435 l 24 444 l 20 453 l 14 460 l 10 469 b 5 477 9 470 6 474 l 0 485 l -5 494 l -9 502 l -14 512 b -20 519 -16 513 -19 517 l -24 526 l -28 534 b -31 537 -29 535 -31 537 b -35 533 -32 537 -32 535 l -88 444 l -187 280 l -285 117 l -343 23 b -362 1 -352 6 -356 2 b -368 0 -364 0 -367 0 b -390 20 -381 0 -390 8 l -390 20 b -359 77 -390 27 -390 27 l -80 539 l -25 631 b -9 650 -17 644 -13 648 m -13 133 b -1 134 -9 133 -5 134 b 50 105 19 134 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 70 -57 40 -62 55 b -13 133 -62 98 -44 126 ', + }, + fermataShortBelow: { + x_min: -390.640625, + x_max: 389.28125, + ha: 397, + o: 'm -377 -1 b -368 0 -375 -1 -372 0 b -362 -1 -366 0 -363 -1 b -343 -24 -356 -4 -352 -8 l -285 -119 l -187 -280 l -88 -444 l -35 -533 b -31 -538 -32 -537 -32 -538 b -28 -534 -31 -538 -29 -537 l -23 -526 l -19 -517 l -13 -509 l -8 -501 l -2 -492 l 2 -483 l 6 -476 l 17 -458 l 23 -449 l 32 -433 l 38 -424 l 42 -416 l 47 -408 l 53 -399 l 58 -391 l 63 -381 l 68 -373 l 73 -365 l 78 -356 l 84 -348 l 89 -340 l 93 -330 l 99 -322 l 104 -315 l 114 -297 l 125 -280 l 129 -272 l 134 -263 l 140 -255 l 145 -247 l 151 -238 l 155 -230 l 160 -220 l 166 -212 l 171 -204 l 176 -195 l 181 -187 l 186 -177 l 191 -169 l 196 -162 l 201 -154 l 206 -144 l 217 -127 l 221 -119 l 227 -111 l 232 -102 l 238 -94 l 242 -86 l 247 -77 l 253 -69 l 258 -59 l 262 -51 l 268 -43 l 273 -34 l 279 -26 l 283 -18 b 321 -1 292 -2 292 -1 b 338 -1 326 -1 332 -1 b 382 -6 378 -1 375 -1 b 389 -20 386 -9 389 -15 b 382 -38 389 -26 386 -31 l 378 -47 l 372 -55 l 367 -63 l 362 -72 l 356 -80 l 351 -90 l 347 -98 l 341 -106 l 336 -115 l 330 -123 l 325 -131 l 321 -141 l 315 -149 l 310 -158 l 304 -166 l 299 -174 b 295 -183 298 -177 296 -181 l 289 -191 l 285 -199 l 280 -208 l 274 -216 l 269 -224 l 264 -233 l 259 -242 l 254 -251 l 249 -259 l 243 -267 l 238 -276 l 234 -284 l 228 -292 l 223 -302 l 217 -310 l 213 -319 l 208 -327 b 202 -335 206 -330 204 -334 l 197 -344 l 193 -351 l 187 -360 l 182 -369 l 176 -377 l 172 -385 l 167 -394 l 161 -403 l 156 -412 l 152 -420 l 147 -428 l 141 -437 l 136 -445 l 130 -455 l 126 -463 l 121 -471 l 115 -480 b 110 -488 114 -483 111 -487 l 106 -496 l 100 -503 l 96 -512 l 89 -521 l 85 -530 l 80 -538 l 74 -546 l 69 -555 l 65 -564 l 59 -573 l 54 -581 l 49 -589 l 43 -598 l 39 -606 l 34 -616 l 28 -624 l 23 -632 b 19 -641 21 -635 20 -638 b 0 -653 14 -649 8 -653 b -25 -631 -10 -653 -14 -649 l -80 -541 l -359 -79 b -389 -29 -375 -52 -389 -30 b -390 -22 -389 -26 -390 -24 b -377 -1 -390 -13 -385 -5 m -13 -9 b -1 -8 -9 -8 -5 -8 b 51 -36 19 -8 39 -19 b 61 -72 58 -47 61 -59 b 51 -106 61 -84 58 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -127 b -62 -72 -57 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ', + }, + breathMarkComma: { + x_min: -1.359375, + x_max: 193.28125, + ha: 197, + o: 'm 78 233 b 87 233 81 233 84 233 b 187 140 132 233 174 195 b 193 102 190 127 193 115 b 43 -113 193 22 136 -62 b 27 -119 36 -116 31 -119 b 19 -108 21 -119 19 -115 b 29 -97 19 -102 20 -101 b 102 13 73 -72 102 -27 b 92 51 102 26 98 40 l 91 54 l 84 54 b 8 104 53 54 21 74 b -1 142 1 116 -1 130 b 78 233 -1 187 31 227 ', + }, + breathMarkUpbow: { + x_min: -170.140625, + x_max: 168.78125, + ha: 172, + o: 'm -160 567 b -122 567 -159 567 -149 567 l -87 567 l -84 566 b -74 553 -78 563 -77 560 b -20 366 -73 551 -49 466 b 31 186 8 267 31 186 b 85 371 31 186 55 269 b 140 559 114 473 138 557 b 153 567 141 564 148 567 b 168 559 159 567 166 564 b 168 555 168 557 168 557 b 92 281 168 548 159 513 b 14 13 50 134 14 13 b 0 0 14 6 6 0 b -17 15 -8 0 -17 8 b -93 283 -17 15 -51 136 b -170 552 -166 533 -170 548 b -170 553 -170 552 -170 552 b -160 567 -170 560 -167 564 ', + }, + caesura: { + x_min: 0, + x_max: 622.03125, + ha: 635, + o: 'm 398 417 b 406 419 401 419 404 419 b 427 398 417 419 427 409 b 427 391 427 395 427 392 b 34 -274 424 385 38 -272 b 20 -280 29 -278 25 -280 b 0 -259 9 -280 0 -270 b 0 -252 0 -256 0 -254 b 393 413 2 -247 389 410 b 398 417 394 415 397 416 m 592 417 b 600 419 594 419 597 419 b 622 398 611 419 622 409 b 620 391 622 395 620 392 b 227 -274 617 385 231 -272 b 213 -280 223 -278 219 -280 b 193 -259 202 -280 193 -270 b 194 -252 193 -256 193 -254 b 586 413 196 -247 582 410 b 592 417 588 415 590 416 ', + }, + caesuraCurved: { + x_min: 0, + x_max: 503.609375, + ha: 514, + o: 'm 274 430 b 277 430 276 430 277 430 b 310 394 296 430 310 415 b 308 383 310 391 308 387 b 306 367 307 381 307 374 b 236 120 298 305 272 210 b 40 -273 189 -5 125 -134 b 20 -287 35 -283 27 -287 b 5 -281 14 -287 9 -285 b 0 -267 1 -277 0 -273 b 9 -242 0 -262 2 -255 b 246 395 137 -12 232 242 b 274 430 249 416 257 427 m 468 430 b 472 430 469 430 470 430 b 503 394 490 430 503 415 b 502 383 503 391 503 387 b 499 367 502 381 500 374 b 431 120 491 305 465 210 b 234 -273 382 -5 318 -134 b 213 -287 228 -283 220 -287 b 198 -281 208 -287 202 -285 b 193 -267 194 -277 193 -273 b 202 -242 193 -262 196 -255 b 439 395 330 -12 426 242 b 468 430 442 416 451 427 ', + }, + restMaxima: { + x_min: 0, + x_max: 464.140625, + ha: 474, + o: 'm 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 ', + }, + restDoubleWhole: { + x_min: 0, + x_max: 386.5625, + ha: 394, + o: 'm 0 173 l 0 347 l 193 347 l 386 347 l 386 173 l 386 0 l 193 0 l 0 0 l 0 173 ', + }, + restWhole: { + x_min: 0, + x_max: 447.8125, + ha: 457, + o: 'm 0 -87 l 0 0 l 223 0 l 447 0 l 447 -87 l 447 -174 l 223 -174 l 0 -174 l 0 -87 ', + }, + restWholeLegerLine: { + x_min: 0, + x_max: 737.71875, + ha: 753, + o: 'm 9 13 b 208 15 10 15 51 15 b 368 15 251 15 304 15 l 726 15 l 729 12 b 737 -1 735 9 737 4 b 729 -15 737 -6 735 -11 l 726 -16 l 660 -16 l 592 -16 l 592 -95 l 592 -174 l 368 -174 l 144 -174 l 144 -95 l 144 -16 l 77 -16 l 9 -16 l 6 -15 b 0 -1 1 -11 0 -6 b 9 13 0 5 2 11 ', + }, + restHalf: { + x_min: 0, + x_max: 447.8125, + ha: 457, + o: 'm 0 86 l 0 173 l 223 173 l 447 173 l 447 86 l 447 0 l 223 0 l 0 0 l 0 86 ', + }, + restHalfLegerLine: { + x_min: 0, + x_max: 737.71875, + ha: 753, + o: 'm 144 94 l 144 173 l 368 173 l 592 173 l 592 94 l 592 15 l 660 15 l 726 15 l 729 12 b 737 -1 735 9 737 4 b 729 -15 737 -6 735 -11 l 726 -16 l 368 -16 l 9 -16 l 6 -15 b 0 -1 1 -11 0 -6 b 6 12 0 4 1 9 l 9 15 l 77 15 l 144 15 l 144 94 ', + }, + restQuarter: { + x_min: 0, + x_max: 300.8125, + ha: 307, + o: 'm 49 505 b 53 506 50 505 51 506 b 70 496 58 506 62 503 b 81 485 73 492 78 488 l 96 473 l 111 459 l 122 449 l 134 438 l 182 396 l 255 330 b 292 291 292 298 292 298 l 292 290 l 292 284 l 283 270 b 209 36 234 197 209 113 b 288 -170 209 -44 235 -119 b 299 -184 295 -179 299 -181 b 300 -191 300 -187 300 -188 b 285 -206 300 -199 294 -206 b 280 -206 283 -206 281 -206 b 247 -201 270 -202 259 -201 b 176 -222 223 -201 197 -208 b 114 -340 136 -249 114 -292 b 172 -471 114 -384 134 -433 b 185 -492 182 -481 185 -487 b 181 -502 185 -496 183 -499 b 171 -508 176 -505 174 -508 b 152 -498 166 -508 160 -503 b 0 -284 65 -428 12 -352 b 0 -260 0 -278 0 -270 b 1 -238 0 -252 0 -242 b 148 -140 16 -177 73 -140 b 209 -148 167 -140 189 -142 b 215 -149 212 -148 215 -149 b 215 -149 215 -149 215 -149 l 215 -149 b 201 -136 215 -148 209 -142 l 157 -97 l 96 -41 b 17 34 21 24 17 29 b 17 37 17 36 17 36 b 17 38 17 37 17 38 b 25 56 17 44 17 44 b 110 298 81 131 110 219 b 46 474 110 367 88 431 b 38 491 40 480 38 487 b 49 505 38 498 42 502 ', + }, + rest8th: { + x_min: 0, + x_max: 349.8125, + ha: 357, + o: 'm 88 302 b 103 303 93 302 98 303 b 202 224 149 303 191 270 b 205 199 204 216 205 208 b 178 129 205 173 196 147 l 175 126 l 182 127 b 307 249 236 142 284 190 b 313 259 308 254 311 258 b 329 267 317 265 323 267 b 349 247 340 267 349 259 b 201 -263 349 242 204 -258 b 182 -273 197 -270 190 -273 b 163 -260 174 -273 166 -269 b 161 -256 161 -259 161 -258 b 217 -59 161 -248 170 -220 b 272 129 247 43 272 127 b 272 129 272 129 272 129 b 264 122 272 129 268 126 b 140 80 227 94 183 80 b 36 115 102 80 65 91 b 0 194 10 136 0 165 b 88 302 0 244 32 292 ', + }, + rest16th: { + x_min: 0, + x_max: 450.53125, + ha: 460, + o: 'm 189 302 b 204 303 193 302 198 303 b 303 224 250 303 292 270 b 306 199 304 216 306 208 b 279 129 306 173 296 147 l 276 126 l 281 127 b 408 249 337 142 385 190 b 412 259 409 254 412 258 b 430 267 417 265 423 267 b 450 247 441 267 450 259 b 200 -605 450 242 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 194 111 136 99 165 b 189 302 99 244 133 292 ', + }, + rest32nd: { + x_min: 0, + x_max: 551.25, + ha: 563, + o: 'm 289 644 b 304 645 294 645 299 645 b 404 566 349 645 392 613 b 406 541 405 557 406 549 b 379 471 406 514 397 489 l 377 467 l 382 470 b 509 591 438 485 485 531 b 513 601 510 595 513 599 b 530 609 518 607 524 609 b 551 588 540 609 551 602 b 200 -605 551 584 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 195 112 136 99 165 b 118 256 99 217 106 238 b 204 303 138 287 171 303 b 292 249 238 303 273 285 b 306 199 302 234 306 217 b 279 129 306 173 296 148 l 276 126 l 281 127 b 408 248 336 142 385 190 b 473 470 409 254 473 469 b 473 470 473 470 473 470 b 465 464 473 470 469 467 b 341 421 428 435 383 421 b 236 458 303 421 266 433 b 200 537 212 478 200 508 b 289 644 200 585 234 635 ', + }, + rest64th: { + x_min: -1.359375, + x_max: 651.96875, + ha: 665, + o: 'm 389 644 b 405 645 394 645 400 645 b 504 566 450 645 492 613 b 507 541 506 557 507 549 b 480 471 507 514 498 489 l 477 467 l 483 470 b 609 591 539 485 586 531 b 613 601 611 595 613 599 b 631 609 619 607 624 609 b 651 588 641 609 651 602 b 200 -946 651 584 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 537 313 478 300 508 b 389 644 300 585 334 635 ', + }, + rest128th: { + x_min: -1.359375, + x_max: 752.703125, + ha: 768, + o: 'm 490 985 b 504 986 495 986 500 986 b 604 907 551 986 593 954 b 607 884 607 900 607 892 b 581 813 607 857 597 831 l 578 810 l 583 811 b 710 932 638 827 687 873 b 714 943 711 936 713 942 b 730 952 720 949 725 952 b 752 931 741 952 752 943 b 200 -946 752 927 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 538 314 477 300 508 b 318 598 300 559 306 580 b 404 645 340 630 372 645 b 494 592 439 645 475 627 b 507 541 502 577 507 559 b 480 471 507 516 498 489 l 477 467 l 483 470 b 608 589 537 485 586 531 b 675 811 611 595 675 810 b 675 811 675 811 675 811 b 666 806 675 811 671 809 b 543 763 628 777 585 763 b 438 799 504 763 468 775 b 401 878 412 820 401 849 b 490 985 401 928 434 977 ', + }, + dynamicPiano: { + x_min: -53.078125, + x_max: 513.140625, + ha: 485, + o: 'm 185 383 b 196 384 187 383 191 384 b 277 334 230 384 259 365 b 288 301 281 324 288 306 b 288 297 288 298 288 297 b 294 302 289 297 291 299 b 394 370 323 338 367 367 b 404 371 398 370 401 371 b 510 272 453 371 498 328 b 513 237 513 262 513 251 b 507 172 513 217 511 192 b 326 -34 487 59 412 -26 b 314 -36 322 -36 318 -36 b 274 -24 298 -36 283 -31 l 265 -16 b 224 44 246 -1 232 20 b 223 49 224 47 223 49 b 223 49 223 49 223 49 b 149 -197 221 48 149 -194 b 149 -198 149 -197 149 -198 b 170 -210 149 -202 155 -205 b 187 -215 174 -210 175 -212 b 204 -231 201 -219 204 -222 b 197 -245 204 -240 202 -242 l 194 -248 l 76 -248 l -42 -248 l -46 -245 b -53 -231 -51 -242 -53 -240 b -35 -215 -53 -222 -49 -217 b -13 -210 -21 -212 -20 -212 b -6 -208 -10 -209 -8 -208 b 0 -206 -6 -208 -2 -206 b 25 -188 13 -201 21 -195 b 163 280 28 -183 163 276 b 166 291 163 283 164 287 b 167 302 167 295 167 299 b 155 324 167 315 161 324 b 155 324 155 324 155 324 b 65 230 125 322 85 280 b 53 215 61 217 58 215 b 51 215 53 215 51 215 b 42 224 46 215 42 217 b 57 263 42 231 47 244 b 140 360 77 305 104 337 b 152 370 144 365 149 369 b 185 383 157 376 172 381 m 374 306 b 366 308 371 308 368 308 b 300 273 348 308 321 294 b 284 254 288 262 287 259 b 280 242 283 249 281 245 b 257 169 279 240 270 213 l 236 98 l 236 93 b 251 48 238 77 243 61 b 279 27 258 37 272 27 b 281 27 279 27 280 27 b 291 31 281 27 287 30 b 396 170 334 52 378 109 b 406 247 402 197 406 224 b 401 277 406 259 405 270 b 374 306 397 290 383 303 ', + }, + dynamicMezzo: { + x_min: 46.28125, + x_max: 669.671875, + ha: 563, + o: 'm 183 376 b 189 376 185 376 187 376 b 212 374 197 376 208 376 b 265 337 234 369 253 355 b 274 317 268 331 273 320 b 274 316 274 317 274 316 b 280 323 276 316 276 319 b 311 358 288 337 299 348 b 319 366 315 360 318 365 b 356 376 326 373 340 376 b 382 371 364 376 374 374 b 428 337 400 366 417 352 b 436 317 431 331 436 320 b 438 316 436 317 436 316 b 442 323 438 316 439 319 b 475 358 451 337 462 348 b 483 366 477 360 481 365 b 518 376 488 373 503 376 b 544 373 528 376 536 376 b 604 285 579 360 604 326 b 597 249 604 273 601 258 b 543 63 596 247 544 70 b 541 54 543 61 541 55 b 540 44 540 51 540 47 b 552 23 540 33 545 23 b 552 23 552 23 552 23 b 647 126 586 29 627 72 b 658 138 651 136 653 138 b 660 138 660 138 660 138 b 669 129 666 137 669 136 b 654 88 669 122 665 109 b 562 -12 631 43 602 9 l 549 -19 b 521 -27 540 -24 530 -27 b 447 30 490 -27 458 -4 b 443 58 445 38 443 48 b 450 93 443 72 446 84 b 504 278 453 97 504 272 b 507 288 506 283 506 287 b 509 298 507 292 509 295 b 491 326 509 310 502 320 b 487 327 490 327 488 327 b 479 324 484 327 483 326 b 441 270 462 316 443 288 b 435 249 441 265 436 254 b 398 127 434 248 419 195 b 362 4 379 61 362 5 b 328 -1 359 -1 362 -1 b 314 -1 323 -1 319 -1 b 302 -1 310 -1 306 -1 b 266 4 266 -1 269 -1 b 265 6 265 5 265 5 b 303 144 265 13 272 34 b 343 278 325 216 343 276 b 344 288 343 281 344 285 b 345 298 345 291 345 295 b 330 326 345 310 340 320 b 323 327 328 327 325 327 b 317 324 322 327 321 326 b 279 270 300 316 281 288 b 273 249 279 265 274 254 b 236 127 272 248 255 195 b 200 4 216 61 200 5 b 164 -1 197 -1 198 -1 b 151 -1 161 -1 156 -1 b 140 -1 147 -1 142 -1 b 103 4 104 -1 106 -1 b 103 6 103 5 103 5 b 141 144 103 13 108 34 b 181 278 161 216 179 276 b 182 288 181 281 181 285 b 183 298 182 291 183 295 b 168 324 183 310 178 320 b 160 327 166 326 163 327 b 141 320 156 327 151 324 b 69 230 112 305 85 272 b 57 215 65 217 62 215 b 55 215 57 215 55 215 b 46 224 49 215 46 217 b 59 260 46 231 50 242 b 151 363 81 306 112 341 b 161 369 155 365 160 367 b 183 376 166 371 174 374 ', + }, + dynamicForte: { + x_min: -118.421875, + x_max: 597.53125, + ha: 381, + o: 'm 460 574 b 464 574 461 574 462 574 b 488 574 470 574 481 574 b 500 573 491 574 498 574 b 594 503 543 570 588 538 b 597 488 596 498 597 494 b 528 417 597 449 564 417 b 502 423 519 417 510 419 b 465 481 477 434 465 458 b 488 528 465 499 472 516 b 490 530 490 530 490 530 b 490 530 490 530 490 530 b 468 517 488 530 475 523 b 349 340 419 485 377 420 b 347 330 348 334 347 330 b 383 328 347 328 363 328 b 428 326 423 328 424 328 b 442 302 438 320 442 312 b 430 281 442 294 438 285 b 385 276 424 277 426 276 l 377 276 l 332 276 l 330 269 b 178 -117 303 126 250 -9 b 1 -249 129 -194 69 -237 b -20 -251 -6 -251 -13 -251 b -114 -187 -65 -251 -100 -227 b -118 -156 -117 -177 -118 -166 b -51 -84 -118 -116 -91 -84 b -31 -87 -46 -84 -39 -86 b 16 -152 0 -95 16 -124 b -12 -205 16 -173 8 -194 b -16 -208 -14 -206 -16 -208 b -14 -208 -16 -208 -14 -208 b -9 -206 -14 -208 -12 -208 b 74 -124 23 -197 54 -166 b 172 224 98 -79 125 22 b 185 276 178 252 183 274 b 185 276 185 276 185 276 b 141 276 185 276 181 276 b 91 280 96 276 96 276 b 77 302 83 285 77 294 b 91 326 77 312 83 320 b 148 328 95 328 96 328 l 198 330 l 202 341 b 460 574 249 473 351 566 ', + }, + dynamicRinforzando: { + x_min: 78.9375, + x_max: 485.921875, + ha: 417, + o: 'm 362 378 b 378 380 367 380 372 380 b 472 348 415 380 453 367 b 485 315 481 338 485 327 b 462 273 485 298 477 281 b 439 267 454 269 446 267 b 398 290 424 267 409 274 b 344 319 385 309 364 319 b 281 269 315 319 289 301 b 279 262 280 266 279 262 b 276 256 279 260 277 258 b 274 249 276 254 274 251 b 238 127 273 248 257 192 b 201 4 217 61 201 5 b 166 -1 198 -1 200 -1 b 153 -1 163 -1 157 -1 b 141 -1 148 -1 144 -1 b 104 4 106 -1 107 -1 b 104 6 104 5 104 5 b 142 144 104 13 110 34 b 182 278 164 219 181 276 b 183 288 182 281 182 285 b 185 302 185 292 185 298 b 164 330 185 317 176 328 b 159 330 163 330 161 330 b 102 302 140 330 119 320 b 91 294 95 295 93 294 b 88 294 91 294 89 294 b 78 303 83 294 78 298 b 81 312 78 306 78 309 b 200 373 106 347 160 373 b 215 371 205 373 209 371 b 266 335 235 367 254 353 b 269 331 268 333 269 331 b 269 331 269 331 269 331 b 273 335 269 331 270 334 b 362 378 298 359 330 376 ', + }, + dynamicSforzando: { + x_min: 70.78125, + x_max: 378.390625, + ha: 315, + o: 'm 246 373 b 254 373 249 373 251 373 b 372 324 303 373 360 351 b 378 302 377 317 378 309 b 338 251 378 278 362 255 b 328 249 334 249 332 249 b 283 294 303 249 283 270 b 288 315 283 301 284 308 b 289 319 289 317 289 319 b 289 319 289 319 289 319 b 283 320 289 320 287 320 b 270 322 279 322 274 322 b 206 288 242 322 215 308 b 206 283 206 287 206 285 b 257 223 206 267 230 238 b 284 206 272 213 277 210 b 351 90 328 173 351 130 b 340 47 351 74 348 59 b 205 -30 314 -2 264 -30 b 182 -29 198 -30 190 -30 b 84 15 147 -24 103 -5 b 70 48 74 24 70 36 b 108 99 70 70 85 94 b 121 102 112 101 117 102 b 167 56 147 102 167 80 b 159 31 167 48 164 40 l 156 26 l 157 26 b 190 20 167 22 178 20 b 220 26 201 20 212 22 b 258 65 243 34 258 51 b 257 70 258 66 258 69 b 204 126 249 94 234 109 b 114 258 148 158 114 209 b 125 302 114 273 118 288 b 246 373 147 342 193 370 ', + }, + dynamicZ: { + x_min: 29.9375, + x_max: 420.578125, + ha: 371, + o: 'm 115 345 b 221 347 117 345 166 347 b 411 345 306 347 409 345 b 420 330 416 342 420 335 b 415 319 420 326 419 321 b 178 118 397 303 179 118 b 178 117 178 118 178 117 b 181 117 178 117 178 117 b 189 117 182 117 185 117 b 193 117 190 117 191 117 b 247 98 215 117 232 111 b 296 75 266 83 280 76 b 302 75 299 75 300 75 b 322 91 311 75 315 79 b 322 91 322 91 322 91 b 322 91 322 91 322 91 b 319 91 322 91 321 91 b 313 90 318 90 315 90 b 283 107 300 90 288 97 b 277 126 279 114 277 121 b 319 167 277 149 295 167 b 319 167 319 167 319 167 b 362 118 347 167 362 147 b 355 82 362 108 359 96 b 311 33 349 65 340 55 b 224 1 284 12 253 1 b 194 5 213 1 204 2 b 168 18 183 8 178 11 b 110 36 151 30 130 36 b 57 15 88 36 68 29 b 47 11 54 12 51 11 b 31 20 40 11 34 13 b 29 26 31 22 29 25 b 68 66 29 36 39 45 b 285 250 73 71 281 248 b 285 250 285 250 285 250 b 231 252 285 252 261 252 b 137 250 190 252 141 250 b 93 227 122 248 110 241 b 78 220 88 222 83 220 b 66 227 74 220 70 222 b 63 234 65 229 63 231 b 85 291 63 241 69 252 b 115 345 108 342 108 344 ', + }, + ornamentTrill: { + x_min: -340.28125, + x_max: 338.921875, + ha: 346, + o: 'm -32 520 b -29 521 -31 520 -31 521 b -23 519 -27 521 -24 520 b -20 513 -21 517 -20 516 b -21 506 -20 512 -20 509 b -31 474 -23 502 -27 488 l -53 402 l -66 352 l -68 349 l -57 349 b -32 351 -51 349 -40 351 b 123 370 19 352 74 359 b 137 371 127 370 133 371 b 170 356 152 371 164 366 b 171 355 170 355 170 355 b 216 366 174 355 183 358 b 280 378 268 377 266 377 b 287 378 283 378 284 378 b 332 349 307 378 322 369 b 338 319 336 341 338 330 b 332 301 338 310 336 302 b 242 280 329 299 246 280 b 242 280 242 280 242 280 b 235 288 236 280 235 283 b 235 292 235 290 235 291 b 236 302 236 297 236 299 b 220 337 236 316 230 330 l 216 340 l 210 335 b 159 276 189 322 172 301 b 118 149 152 265 156 274 b 81 34 84 36 85 36 b -8 13 78 33 -4 13 b -8 13 -8 13 -8 13 b -14 20 -12 15 -14 15 b -8 44 -14 24 -12 31 b -2 66 -5 55 -2 65 b -2 66 -2 66 -2 66 l -2 66 b -43 41 -2 66 -21 55 b -114 4 -98 8 -98 8 b -144 0 -123 0 -134 0 b -242 99 -197 0 -242 43 b -242 109 -242 102 -242 105 b -212 219 -240 122 -242 116 b -185 312 -197 270 -185 312 l -185 312 b -189 312 -185 312 -186 312 b -259 312 -200 312 -227 312 b -321 310 -291 312 -310 310 b -334 312 -330 310 -334 312 b -340 319 -338 313 -340 316 b -336 326 -340 322 -338 324 b -291 337 -334 326 -314 331 l -247 347 l -210 348 b -172 348 -190 348 -172 348 b -168 363 -172 348 -171 355 b -145 442 -151 424 -145 441 b -133 452 -144 444 -140 446 l -77 489 b -32 520 -53 506 -32 520 m 57 334 b 53 335 55 335 54 335 b 44 334 50 335 49 335 b -70 316 8 326 -28 320 b -78 309 -78 316 -78 316 b -108 202 -80 305 -88 274 b -141 81 -136 112 -141 93 b -140 74 -141 79 -141 77 b -117 49 -137 59 -127 49 b -107 52 -114 49 -110 51 b 16 127 -106 54 14 126 b 42 217 16 127 42 215 b 49 241 42 222 44 229 b 73 320 53 251 73 317 b 57 334 73 327 65 333 ', + }, + ornamentTurn: { + x_min: -423.3125, + x_max: 421.9375, + ha: 431, + o: 'm -262 197 b -247 197 -257 197 -253 197 b -118 162 -210 197 -163 184 b 40 45 -61 134 -13 98 b 277 -95 119 -33 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -55 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 201 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 136 b 421 22 421 37 421 29 b 245 -199 421 -93 338 -199 b 238 -198 243 -199 240 -199 b -44 -47 148 -194 50 -141 b -250 86 -114 22 -183 66 b -295 94 -270 91 -283 94 b -315 91 -302 94 -307 94 b -381 4 -356 81 -381 43 b -355 -56 -381 -18 -372 -40 b -298 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -178 -69 -200 -58 -189 -62 b -151 -122 -160 -81 -151 -101 b -171 -167 -151 -138 -157 -155 b -239 -195 -185 -181 -213 -192 b -257 -197 -245 -197 -250 -197 b -423 -5 -352 -197 -423 -109 b -412 65 -423 16 -419 40 b -262 197 -389 137 -329 188 ', + }, + ornamentTurnSlash: { + x_min: -423.3125, + x_max: 421.9375, + ha: 431, + o: 'm -10 276 b -2 277 -8 277 -5 277 b 17 265 5 277 13 273 b 19 163 19 260 19 260 l 19 68 l 39 45 b 277 -95 122 -34 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -54 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 200 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 137 b 421 22 421 37 421 29 b 257 -198 421 -86 347 -188 b 242 -198 251 -198 247 -198 b 20 -105 181 -198 95 -163 l 19 -104 l 19 -183 b 19 -216 19 -195 19 -206 b 12 -273 19 -272 17 -267 b -2 -278 8 -277 2 -278 b -21 -266 -10 -278 -19 -274 b -23 -165 -23 -263 -23 -262 l -23 -69 l -44 -47 b -250 86 -117 23 -183 66 b -295 94 -270 93 -284 94 b -315 91 -302 94 -308 94 b -381 5 -356 81 -381 43 b -355 -56 -381 -16 -372 -40 b -299 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -168 -77 -196 -58 -179 -65 b -151 -122 -156 -90 -151 -105 b -179 -174 -151 -141 -160 -162 b -239 -195 -194 -184 -217 -192 b -257 -197 -245 -195 -250 -197 b -423 -5 -349 -197 -423 -113 b -423 0 -423 -4 -423 -1 b -277 194 -420 97 -362 173 b -247 197 -268 197 -258 197 b -24 104 -185 197 -100 162 l -23 102 l -23 181 b -21 265 -23 260 -23 260 b -10 276 -20 269 -14 274 ', + }, + ornamentMordent: { + x_min: -402.890625, + x_max: 401.53125, + ha: 410, + o: 'm -10 273 b -4 274 -9 273 -6 274 b 16 262 4 274 12 269 b 17 158 17 259 17 259 l 17 56 l 62 112 b 117 174 110 172 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b 21 -6 27 0 24 -2 l 17 -12 l 17 -147 b 17 -210 17 -173 17 -194 b 10 -292 17 -297 16 -287 b -2 -299 6 -297 2 -299 b -21 -287 -10 -299 -19 -295 b -24 -174 -23 -284 -23 -284 l -24 -63 l -66 -117 b -121 -176 -110 -170 -114 -176 b -125 -176 -122 -176 -123 -176 b -296 -12 -134 -174 -125 -184 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 170 -398 -43 -231 165 b -212 174 -221 173 -216 174 b -202 173 -208 174 -205 174 b -39 11 -200 172 -151 122 l -28 -1 l -25 1 l -24 4 l -24 130 b -23 260 -24 256 -24 258 b -10 273 -20 266 -16 270 ', + }, + ornamentShortTrill: { + x_min: -402.890625, + x_max: 401.53125, + ha: 410, + o: 'm -219 173 b -213 174 -217 174 -215 174 b -202 173 -209 174 -205 173 b -114 86 -200 172 -179 151 b -28 0 -66 37 -28 0 b 40 84 -28 0 2 37 b 117 174 111 173 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b -42 -86 27 0 -4 -38 b -118 -174 -112 -174 -111 -173 b -123 -176 -119 -176 -121 -176 b -133 -174 -126 -176 -130 -174 b -296 -12 -136 -173 -172 -137 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 172 -398 -43 -228 167 b -219 173 -223 172 -220 173 ', + }, + ornamentTremblement: { + x_min: -571.671875, + x_max: 570.3125, + ha: 582, + o: 'm -386 173 b -381 174 -385 174 -383 174 b -370 173 -377 174 -372 173 b -281 86 -367 172 -347 151 b -196 0 -235 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 277 172 b 289 174 285 174 288 174 b 299 173 294 174 298 173 b 462 11 303 172 338 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 374 -176 371 -176 b 280 -87 367 -173 345 -152 b 194 0 234 -38 194 0 b 125 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 43 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -141 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -289 -176 b -300 -174 -295 -176 -299 -174 b -464 -12 -304 -173 -340 -137 l -476 0 l -504 -34 b -543 -77 -534 -73 -537 -76 b -549 -79 -545 -79 -547 -79 b -571 -58 -562 -79 -571 -69 b -568 -49 -571 -55 -570 -52 b -392 172 -566 -43 -396 167 b -386 173 -390 172 -387 173 ', + }, + ornamentPrecompAppoggTrill: { + x_min: -571.671875, + x_max: 570.3125, + ha: 582, + o: 'm -559 351 b -551 352 -556 352 -553 352 b -530 338 -543 352 -533 348 b -529 169 -530 337 -529 291 l -529 1 l -507 27 l -441 112 b -382 174 -394 169 -390 174 b -378 174 -381 174 -379 174 b -281 86 -370 174 -375 179 b -196 0 -234 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 279 172 b 289 174 285 174 288 174 b 300 173 294 174 298 173 b 462 11 303 172 340 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 375 -176 371 -176 b 280 -87 367 -173 347 -152 b 194 0 234 -38 194 0 b 126 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 44 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -140 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -288 -176 b -300 -174 -294 -176 -298 -174 b -464 -11 -303 -173 -374 -102 l -476 0 l -506 -37 b -539 -76 -528 -65 -537 -74 b -551 -80 -543 -79 -547 -80 b -570 -68 -558 -80 -566 -76 l -571 -65 l -571 136 b -570 340 -571 331 -571 337 b -559 351 -568 344 -564 348 ', + }, + ornamentPrecompSlideTrillDAnglebert: { + x_min: -590.71875, + x_max: 589.359375, + ha: 601, + o: 'm -367 173 b -362 174 -366 174 -364 174 b -351 173 -357 174 -353 173 b -262 86 -348 172 -328 151 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 72 86 -13 172 6 151 b 157 0 119 37 157 0 b 227 84 159 0 189 37 b 303 174 298 173 296 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 144 -86 213 0 182 -38 b 68 -174 73 -174 74 -173 b 62 -176 66 -176 65 -176 b 53 -174 59 -176 55 -174 b -35 -87 50 -173 29 -152 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -367 173 -375 169 -372 172 ', + }, + ornamentPrecompSlideTrillBach: { + x_min: -590.71875, + x_max: 589.359375, + ha: 601, + o: 'm 175 273 b 182 274 178 273 181 274 b 202 262 190 274 198 269 b 204 158 204 259 204 259 l 204 56 l 250 112 b 303 174 296 172 298 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 208 -6 213 0 210 -2 l 204 -12 l 204 -147 b 204 -210 204 -173 204 -194 b 198 -292 204 -297 204 -287 b 183 -299 194 -297 189 -299 b 164 -287 175 -299 167 -295 b 163 -174 163 -284 163 -284 l 161 -63 l 119 -117 b 65 -176 76 -170 73 -176 b 61 -176 63 -176 62 -176 b -35 -87 51 -174 57 -180 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -363 174 -374 170 -371 174 b -359 174 -362 174 -360 174 b -262 86 -351 174 -356 179 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 147 11 -13 172 35 123 l 157 -1 l 160 1 l 163 4 l 163 130 b 164 260 163 256 163 258 b 175 273 166 266 170 270 ', + }, + ornamentPrecompTrillSuffixDandrieu: { + x_min: -590.71875, + x_max: 589.359375, + ha: 601, + o: 'm 544 335 b 553 337 548 337 551 337 b 575 313 563 337 570 330 b 589 226 583 285 589 256 b 517 8 589 152 563 76 b 464 -58 507 -4 503 -9 l 401 -136 b 362 -176 372 -172 370 -176 b 357 -176 360 -176 359 -176 b 261 -87 349 -174 355 -180 b 175 0 215 -38 175 0 b 106 -86 175 0 144 -38 b 29 -174 35 -174 36 -173 b 24 -176 28 -176 27 -176 b 14 -174 21 -176 17 -174 b -73 -87 12 -173 -8 -152 b -159 0 -121 -38 -159 0 b -228 -86 -160 0 -190 -38 b -304 -174 -299 -174 -298 -173 b -310 -176 -306 -176 -308 -176 b -319 -174 -314 -176 -318 -174 b -483 -12 -323 -173 -359 -137 l -495 0 l -524 -34 b -562 -77 -553 -73 -556 -76 b -568 -79 -564 -79 -566 -79 b -590 -58 -581 -79 -590 -69 b -588 -49 -590 -55 -589 -52 b -412 170 -585 -43 -417 165 b -398 174 -408 173 -402 174 b -389 173 -394 174 -392 174 b -300 86 -387 172 -366 151 b -215 -1 -254 37 -215 -1 b -145 84 -215 -1 -183 37 b -69 173 -74 173 -76 172 b -63 174 -68 174 -66 174 b -54 173 -61 174 -57 173 b 34 86 -51 172 -31 151 b 119 -1 81 37 119 -1 b 189 84 121 -1 151 37 b 265 173 259 173 258 172 b 270 174 266 174 269 174 b 280 173 274 174 279 173 b 370 84 283 172 303 151 b 455 -1 416 37 455 -1 l 455 -1 b 476 24 455 -1 469 15 b 547 226 522 87 547 159 b 534 302 547 252 543 278 b 532 317 533 308 532 313 b 544 335 532 326 536 333 ', + }, + ornamentPrecompDoubleCadenceUpperPrefix: { + x_min: -597.53125, + x_max: 596.171875, + ha: 608, + o: 'm -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 80 86 -5 172 13 151 b 166 -1 127 37 166 -1 b 235 84 166 -1 197 37 b 311 173 306 173 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 152 -86 221 -1 190 -38 b 76 -176 81 -174 83 -173 b 70 -176 74 -176 73 -176 b 61 -174 66 -176 62 -174 b -27 -87 58 -173 38 -152 b -114 -1 -74 -38 -112 -1 b -182 -86 -114 -1 -145 -38 b -258 -176 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 ', + }, + ornamentPrecompDoubleCadenceUpperPrefixTurn: { + x_min: -597.53125, + x_max: 596.171875, + ha: 608, + o: 'm -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 155 11 -5 172 43 123 l 166 -1 l 168 1 l 170 4 l 170 130 b 171 260 170 256 170 258 b 191 274 175 269 183 274 b 205 267 196 274 201 272 b 212 158 212 262 210 273 l 212 56 l 257 112 b 311 173 304 172 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 216 -6 221 -1 219 -2 l 212 -12 l 212 -147 b 212 -210 212 -173 212 -194 b 205 -292 212 -297 210 -287 b 191 -299 201 -297 196 -299 b 172 -287 183 -299 175 -295 b 170 -174 171 -284 171 -284 l 170 -63 l 127 -117 b 73 -176 84 -170 80 -176 b 68 -176 72 -176 70 -176 b -27 -87 59 -174 65 -180 b -114 0 -74 -38 -112 0 b -182 -86 -114 0 -145 -38 b -258 -174 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 ', + }, + ornamentPrecompTrillLowerSuffix: { + x_min: -597.53125, + x_max: 596.171875, + ha: 608, + o: 'm -413 173 b -408 174 -412 174 -409 174 b -397 173 -404 174 -400 173 b -308 86 -394 172 -374 151 b -223 0 -261 37 -223 0 b -153 84 -223 0 -191 37 b -77 174 -83 173 -84 172 b -72 174 -76 174 -74 174 b -62 173 -68 174 -63 173 b 25 86 -59 172 -39 151 b 112 0 73 37 111 0 b 181 84 112 0 144 37 b 257 174 251 173 251 172 b 262 174 258 174 261 174 b 273 173 266 174 270 173 b 436 9 276 172 347 101 l 447 -1 l 477 36 b 522 79 511 79 513 79 l 522 79 b 552 51 533 79 539 73 b 596 -112 582 6 596 -51 b 567 -262 596 -161 586 -213 b 539 -322 558 -287 544 -316 b 524 -327 534 -326 529 -327 b 504 -315 515 -327 507 -323 b 503 -308 503 -312 503 -309 b 511 -285 503 -302 504 -297 b 555 -113 540 -227 555 -169 b 544 -34 555 -86 551 -59 b 522 19 540 -16 530 8 l 521 22 l 481 -26 l 405 -122 b 353 -176 366 -172 362 -176 b 349 -176 352 -176 351 -176 b 253 -87 341 -176 347 -180 b 167 0 206 -38 167 0 b 99 -86 167 0 136 -38 b 21 -174 27 -174 28 -173 b 17 -176 20 -176 19 -176 b 6 -174 13 -176 9 -174 b -81 -87 4 -173 -14 -152 b -167 0 -129 -38 -167 0 b -236 -86 -167 0 -198 -38 b -313 -174 -307 -174 -306 -173 b -318 -176 -314 -176 -315 -176 b -328 -174 -321 -176 -325 -174 b -491 -12 -330 -173 -367 -137 l -503 0 l -530 -34 b -570 -77 -562 -73 -564 -76 b -577 -79 -571 -79 -574 -79 b -597 -58 -588 -79 -597 -69 b -596 -49 -597 -55 -597 -52 b -417 172 -593 -43 -423 167 b -413 173 -417 172 -415 173 ', + }, + stringsDownBow: { + x_min: -228.671875, + x_max: 227.3125, + ha: 232, + o: 'm -217 487 l -213 488 l 0 488 l 212 488 l 216 487 b 225 476 220 484 224 480 l 227 473 l 227 244 l 227 15 l 225 12 b 206 0 223 4 215 0 b 197 1 204 0 200 0 b 187 12 193 4 189 6 l 186 15 l 186 138 l 186 262 l -1 262 l -187 262 l -187 138 l -187 15 l -189 12 b -208 0 -193 4 -200 0 b -227 12 -216 0 -223 4 l -228 15 l -228 244 l -228 473 l -227 476 b -217 487 -225 480 -221 484 ', + }, + stringsUpBow: { + x_min: -149.71875, + x_max: 148.359375, + ha: 151, + o: 'm -137 381 b -130 383 -134 383 -133 383 b -111 371 -122 383 -114 378 b -55 224 -110 370 -85 305 b 0 80 -25 145 -1 80 b 54 224 0 80 24 145 b 112 377 114 384 110 373 b 127 384 118 381 122 384 b 148 362 138 384 148 374 l 148 356 l 83 183 b 16 9 47 88 17 11 b -1 0 12 2 5 0 b -14 5 -5 0 -10 1 b -84 183 -19 9 -13 -6 l -149 356 l -149 362 b -137 381 -149 371 -145 378 ', + }, + stringsHarmonic: { + x_min: -122.5, + x_max: 121.140625, + ha: 124, + o: 'm -16 145 b 0 147 -10 147 -5 147 b 121 -1 66 147 121 77 b 114 -49 121 -16 118 -33 b -1 -148 95 -112 47 -148 b -85 -106 -31 -148 -61 -134 b -122 -1 -110 -76 -122 -38 b -16 145 -122 68 -81 134 m 12 111 b 0 113 8 113 4 113 b -68 22 -29 113 -61 73 b -70 0 -69 15 -70 6 b -13 -113 -70 -49 -47 -98 b -1 -115 -9 -115 -5 -115 b 63 -40 24 -115 53 -83 b 68 -1 66 -27 68 -15 b 12 111 68 48 46 97 ', + }, + pluckedSnapPizzicatoAbove: { + x_min: -149.71875, + x_max: 148.359375, + ha: 151, + o: 'm -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 ', + }, + pluckedSnapPizzicatoBelow: { + x_min: -149.71875, + x_max: 148.359375, + ha: 151, + o: 'm -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 ', + }, + pluckedLeftHandPizzicato: { + x_min: 0, + x_max: 319.859375, + ha: 326, + o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ', + }, + keyboardPedalPed: { + x_min: -1.359375, + x_max: 1064.390625, + ha: 1086, + o: 'm 296 692 b 314 694 302 694 307 694 b 386 685 337 694 366 689 b 548 498 480 660 548 580 b 548 481 548 492 548 487 b 455 395 541 426 499 395 b 370 462 420 395 383 417 b 362 496 364 477 362 488 b 377 514 362 509 367 514 b 393 501 386 514 390 510 b 432 474 397 484 413 474 b 470 487 445 474 458 478 b 491 530 484 496 491 510 b 490 544 491 534 491 539 b 333 660 479 606 411 657 l 323 662 l 315 646 b 269 524 285 591 269 556 b 321 431 269 492 287 466 b 349 395 338 413 343 408 b 363 342 359 378 363 362 b 359 312 363 333 362 322 b 285 158 348 266 318 206 b 281 152 283 155 281 152 b 281 152 281 152 281 152 b 287 154 283 152 284 152 b 318 155 298 154 308 155 b 461 98 371 155 419 136 l 464 97 l 483 112 b 503 129 494 120 503 127 b 504 130 503 129 504 129 b 503 138 504 131 503 134 b 500 180 500 152 500 166 b 553 326 500 238 518 288 b 604 366 560 331 592 358 b 649 381 617 376 632 381 b 696 362 665 381 681 374 b 724 302 714 347 724 324 b 695 238 724 278 714 255 b 660 210 691 234 662 212 b 579 148 658 209 582 151 b 579 148 579 148 579 148 b 596 106 579 144 589 119 b 622 77 604 88 609 83 b 657 69 632 72 645 69 b 748 112 688 69 721 84 b 755 123 754 117 755 120 b 755 127 755 124 755 126 b 751 165 752 137 751 151 b 758 219 751 183 754 202 b 894 387 774 290 820 347 b 896 390 896 388 896 388 b 891 398 896 391 895 392 b 622 560 827 477 730 535 b 600 580 605 564 600 569 b 617 596 600 591 607 596 b 628 595 622 596 624 596 b 1057 248 846 552 1020 412 b 1064 191 1061 229 1064 209 b 922 0 1064 94 1005 9 b 902 -1 916 -1 909 -1 b 774 76 847 -1 800 26 b 769 83 770 81 770 83 b 769 81 769 83 769 83 b 627 -1 733 29 677 -1 b 548 27 597 -1 570 8 b 515 88 537 37 525 61 l 513 95 l 510 93 l 453 45 b 390 0 396 0 396 0 b 390 0 390 0 390 0 b 374 15 381 0 377 4 b 268 105 359 69 314 105 b 250 104 262 105 257 105 l 243 102 l 234 90 b 155 1 201 49 159 2 b 147 -1 152 0 149 -1 b 130 15 138 -1 130 6 b 132 20 130 18 132 19 b 136 31 133 22 134 27 b 220 131 149 74 178 109 b 231 137 225 134 230 136 b 302 278 280 202 302 244 b 265 335 302 299 295 309 b 209 442 234 363 213 402 b 209 455 209 446 209 451 b 279 648 209 502 232 564 l 285 659 l 283 659 b 176 627 238 653 210 645 b 57 477 111 594 66 538 b 55 459 55 471 55 464 b 72 409 55 437 61 415 b 93 403 78 405 87 403 b 152 467 123 403 151 431 b 168 488 153 483 157 488 b 185 462 181 488 185 483 l 185 460 b 137 344 183 409 168 369 b 78 322 119 328 98 322 b 13 360 50 322 25 335 b -1 426 4 380 -1 402 b 89 610 -1 488 32 559 b 296 692 147 659 210 685 m 926 348 b 921 353 924 351 922 353 b 914 348 920 353 918 351 b 823 167 857 306 823 237 b 828 124 823 154 826 138 b 890 31 837 79 862 40 b 896 31 892 31 894 31 b 956 104 916 31 940 59 b 970 191 965 129 970 159 b 966 241 970 208 969 224 b 926 348 959 277 945 313 m 627 326 b 619 326 624 326 622 326 b 598 316 611 326 604 323 b 568 215 579 288 568 255 b 568 208 568 213 568 210 b 571 183 570 195 570 184 l 571 183 b 594 201 571 183 582 191 l 634 231 b 660 259 653 247 656 248 b 664 278 662 266 664 272 b 627 326 664 299 649 320 ', + }, + keyboardPedalUp: { + x_min: -1.359375, + x_max: 592.078125, + ha: 604, + o: 'm 280 692 b 295 694 283 692 289 694 b 310 692 300 694 307 692 b 357 630 340 684 357 657 b 336 580 357 612 351 594 b 311 538 321 566 311 549 b 352 492 311 512 330 492 b 366 495 357 492 362 492 b 397 553 390 503 397 517 b 415 603 397 576 402 591 b 460 623 427 617 443 623 b 509 599 479 623 498 614 b 522 559 518 587 522 573 b 494 506 522 538 513 519 b 451 495 481 498 473 496 b 415 488 432 495 426 494 b 394 449 404 483 394 464 b 394 448 394 448 394 448 l 394 440 l 397 433 b 428 409 404 420 413 413 b 438 408 431 408 435 408 b 479 431 450 408 462 415 b 528 455 495 448 510 455 b 548 452 534 455 541 453 b 592 391 577 442 592 416 b 549 331 592 365 577 340 b 528 327 541 328 534 327 b 479 351 510 327 495 335 b 438 374 464 367 450 374 b 417 369 431 374 424 373 b 394 333 402 360 394 348 b 400 312 394 326 396 319 b 451 287 408 294 420 288 b 513 258 484 285 499 278 b 522 223 519 247 522 234 b 461 159 522 190 496 159 b 449 161 457 159 453 159 b 397 229 416 167 397 191 b 366 288 397 265 390 278 b 352 290 362 290 357 290 b 315 262 336 290 321 280 b 311 245 313 256 311 251 b 334 204 311 233 318 220 b 355 170 348 190 351 184 b 357 152 356 166 357 159 b 355 136 357 147 356 140 b 295 88 345 104 321 88 b 232 152 264 88 232 112 b 255 204 232 174 238 186 b 279 244 273 222 279 231 l 279 245 b 238 290 279 270 259 290 b 224 288 234 290 228 290 b 193 229 200 278 193 265 b 141 161 193 191 174 167 b 129 159 137 159 133 159 b 68 223 93 159 68 190 b 77 258 68 234 70 247 b 138 287 91 278 106 285 b 185 302 166 287 175 291 b 196 333 193 312 196 323 b 174 369 196 347 187 360 b 152 374 166 373 159 374 b 111 351 140 374 126 367 b 62 327 95 335 80 327 b 51 328 58 327 54 327 b -1 391 16 334 -1 363 b 53 455 -1 420 17 449 b 62 455 57 455 59 455 b 111 431 80 455 95 448 b 152 408 127 415 140 408 b 161 409 155 408 159 408 b 193 433 176 413 186 420 l 196 440 l 196 448 b 196 451 196 449 196 449 b 190 471 196 459 194 463 b 137 495 182 489 167 495 l 134 495 l 134 495 b 68 560 95 495 68 521 b 129 623 68 596 95 623 b 144 621 134 623 138 623 b 193 553 175 614 193 589 b 224 495 193 517 200 503 b 238 492 228 492 234 492 b 279 538 259 492 279 512 b 254 580 279 549 269 566 b 232 630 239 594 232 612 b 280 692 232 657 250 684 m 307 456 b 295 458 303 458 299 458 b 230 391 258 458 230 426 b 236 360 230 381 231 371 b 295 324 249 337 272 324 b 353 360 318 324 341 337 b 360 391 357 370 360 381 b 307 456 360 421 340 451 ', + }, + pictChokeCymbal: { + x_min: 0, + x_max: 227.3125, + ha: 232, + o: 'm 91 213 b 100 215 93 215 96 215 b 227 58 167 215 224 144 b 227 52 227 56 227 54 b 61 -201 227 -43 164 -138 b 29 -216 44 -212 36 -216 b 23 -210 27 -216 24 -213 b 21 -205 21 -208 21 -206 b 34 -192 21 -201 25 -197 b 122 -55 89 -161 122 -106 b 104 6 122 -33 117 -12 l 103 9 l 96 9 b 4 79 57 9 17 38 b 0 112 1 90 0 101 b 91 213 0 163 36 209 ', + }, + wiggleArpeggiatoUp: { + x_min: 58.53125, + x_max: 228.671875, + ha: 294, + o: 'm 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 ', + }, + arrowheadBlackUp: { + x_min: -10.890625, + x_max: 299.4375, + ha: 294, + o: 'm 136 460 b 142 462 137 462 140 462 b 166 449 152 462 161 456 b 171 428 168 446 168 445 b 288 131 194 322 238 209 b 298 115 295 120 296 117 b 299 106 298 112 299 109 b 273 81 299 91 287 81 b 255 86 268 81 261 83 b 155 116 225 104 183 116 l 152 116 l 149 108 b 141 83 148 102 144 91 b 134 48 137 69 134 58 b 149 9 134 34 140 24 b 153 -1 152 5 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 147 -11 b 122 2 138 -11 133 -6 b 95 61 104 20 95 38 b 107 108 95 74 99 90 b 108 113 107 111 108 112 b 107 113 108 113 108 113 b 102 113 106 113 104 113 b 31 86 76 108 53 98 b 14 80 24 81 20 80 b -10 106 0 80 -10 91 b 0 131 -10 115 -9 116 b 115 430 49 209 91 317 b 136 460 119 451 123 456 ', + }, + arrowheadBlackDown: { + x_min: -10.890625, + x_max: 298.078125, + ha: 294, + o: 'm 138 473 b 142 474 140 473 141 474 b 164 459 148 474 153 470 b 191 402 183 442 191 423 b 181 353 191 388 187 371 b 178 349 179 352 178 349 b 179 348 178 348 179 348 b 185 349 181 348 182 348 b 255 376 210 355 234 363 b 272 381 264 381 266 381 b 298 355 287 381 298 370 b 288 330 298 348 298 345 b 171 34 238 254 194 141 b 166 13 168 16 168 16 b 144 1 161 5 152 1 b 121 15 134 1 125 5 b 115 33 119 18 117 24 b 0 330 91 145 49 252 b -10 355 -9 345 -10 348 b 13 381 -10 371 0 381 b 31 376 19 381 25 380 b 132 345 61 358 103 345 l 136 345 l 137 355 b 145 378 138 359 142 370 b 152 415 149 394 152 405 b 137 452 152 427 148 438 b 133 464 134 458 133 460 b 138 473 133 467 134 470 ', + }, + vexAccidentalMicrotonal1: { + x_min: -171.5, + x_max: 483.1875, + ha: 493, + o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 495 20 616 20 616 b 20 373 20 427 20 373 b 115 410 20 373 63 390 l 210 448 l 210 531 b 212 620 210 614 210 616 b 231 632 215 628 223 632 b 246 627 236 632 242 631 b 251 541 251 620 251 628 l 251 463 l 315 489 b 387 514 368 509 381 514 b 393 513 390 514 392 514 b 406 494 402 510 406 502 b 397 476 406 487 404 480 b 323 446 396 474 363 462 l 251 417 l 251 283 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -19 -217 -9 -229 -16 -224 l -20 -215 l -21 48 l -21 310 l -83 287 b -152 262 -133 266 -145 262 b -157 263 -153 262 -155 262 b -171 283 -166 266 -171 274 b -161 301 -171 290 -167 297 b -91 328 -160 302 -129 315 l -21 356 l -21 487 l -20 617 l -19 621 b -8 631 -17 626 -12 630 m 210 288 b 210 401 210 351 210 401 b 114 365 209 401 167 384 l 20 327 l 20 238 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 180 164 199 187 192 l 209 177 b 209 177 209 177 209 177 b 210 288 210 177 210 199 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 ', + }, + vexAccidentalMicrotonal2: { + x_min: -1.359375, + x_max: 386.5625, + ha: 394, + o: 'm 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 ', + }, + vexWiggleArpeggioUp: { + x_min: 58.53125, + x_max: 228.671875, + ha: 294, + o: 'm 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 ', + }, + vexNoteHeadMutedBreve: { + x_min: 0, + x_max: 370.21875, + ha: 378, + o: 'm 0 0 l 0 277 l 61 277 l 122 277 l 122 0 l 122 -278 l 61 -278 l 0 -278 l 0 0 m 246 -1 l 246 277 l 308 277 l 370 277 l 370 -1 l 370 -278 l 308 -278 l 246 -278 l 246 -1 ', + }, + }, + cssFontWeight: 'normal', + ascender: 1903, + underlinePosition: -125, + cssFontStyle: 'normal', + boundingBox: { + yMin: -2065.375, + xMin: -695.53125, + yMax: 1901.578125, + xMax: 1159.671875, + }, + resolution: 1000, + original_font_information: { + postscript_name: 'Gonville-18', + version_string: 'Version 0.1.8904 ', + vendor_url: '', + full_font_name: 'Gonville-18', + font_family_name: 'Gonville-18', + copyright: 'No copyright is claimed on this font file.', + description: '', + trademark: '', + designer: '', + designer_url: '', + unique_font_identifier: 'FontForge 2.0 : Gonville-18 : 17-3-2010', + license_url: '', + license_description: '', + manufacturer_name: '', + font_sub_family_name: '18', + }, + descender: -2066, + fontFamily: 'Gonville-18', + lineHeight: 4093, + underlineThickness: 50, +}; + + +/***/ }), + +/***/ "./src/fonts/gonville_metrics.ts": +/*!***************************************!*\ + !*** ./src/fonts/gonville_metrics.ts ***! + \***************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "GonvilleMetrics": () => (/* binding */ GonvilleMetrics) +/* harmony export */ }); +/** + * The Gonville font was created by Simon Tatham. + * https://www.chiark.greenend.org.uk/~sgtatham/gonville/ + */ +const GonvilleMetrics = { + name: 'Gonville', + smufl: false, + stave: { + padding: 12, + endPaddingMax: 10, + endPaddingMin: 5, + unalignedNotePadding: 10, + }, + accidental: { + noteheadAccidentalPadding: 1, + leftPadding: 2, + accidentalSpacing: 3, + }, + clef: { + default: { + point: 40, + width: 26, + }, + small: { + point: 32, + width: 20, + }, + annotations: { + '8va': { + smuflCode: 'timeSig8', + default: { + point: 20, + treble: { + line: -1.2, + shiftX: 11, + }, + }, + small: { + point: 18, + treble: { + line: -0.4, + shiftX: 8, + }, + }, + }, + '8vb': { + smuflCode: 'timeSig8', + default: { + point: 20, + treble: { + line: 6.3, + shiftX: 10, + }, + bass: { + line: 4, + shiftX: 1, + }, + }, + small: { + point: 18, + treble: { + line: 5.8, + shiftX: 6, + }, + bass: { + line: 3.5, + shiftX: 0.5, + }, + }, + }, + }, + // May not need these anymore + lineCount: { + '8': { point: 55, shiftY: 14 }, + '7': { point: 47, shiftY: 8 }, + '6': { point: 40, shiftY: 1 }, + '5': { point: 30, shiftY: -6 }, + '4': { point: 23, shiftY: -12 }, + }, + }, + parenthesis: { + default: { + point: 39, + width: 7, + }, + gracenote: { + point: (39 * 3) / 5, + width: 3, + }, + }, + pedalMarking: { + up: { + point: 40, + }, + down: { + point: 40, + }, + }, + // These are for numeric digits, such as in time signatures + digits: { + point: 40, + tupletPoint: 28, + }, + // articulation: { + // }, + tremolo: { + default: { + point: 25, + spacing: 4, + offsetYStemUp: -7, + offsetYStemDown: 7, + offsetXStemUp: 9, + offsetXStemDown: -0.5, + }, + grace: { + point: 15, + spacing: 4, + offsetYStemUp: -7, + offsetYStemDown: 7, + offsetXStemUp: 6.5, + offsetXStemDown: -0.5, + }, + }, + staveRepetition: { + symbolText: { + offsetX: 12, + offsetY: 25, + spacing: 5, + }, + coda: { + offsetY: 25, + }, + segno: { + offsetY: 0, + }, + }, + // noteHead: { + // }, + stem: { + heightAdjustmentForFlag: -3, + // These are stem (Y) offsets to the note heads. To shift the + // noteheads (x-position) themselves, see glyphs.notehead.custom. + noteHead: { + noteheadTriangleUpHalf: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpBlack: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpWhole: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadXHalf: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXBlack: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXWhole: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadHalf: { + offsetYBaseStemUp: -1.5, + offsetYBaseStemDown: 1.5, + }, + noteheadBlack: { + offsetYBaseStemUp: -1.5, + offsetYBaseStemDown: 1.5, + }, + noteheadSquareWhite: { + offsetYBaseStemDown: -5, + offsetYBaseStemUp: 5, + }, + }, + }, + glyphs: { + flag: { + shiftX: -0.08, + flag8thDown: { + shiftX: -0.16, + }, + flag16thDown: { + shiftX: -0.16, + }, + flag32ndDown: { + shiftX: -0.16, + shiftY: 9, + }, + flag64thDown: { + shiftX: -0.16, + shiftY: 13, + }, + flag128thDown: { + shiftX: -0.16, + shiftY: 22, + }, + flag32ndUp: { + shiftY: -9, + }, + flag64thUp: { + shiftY: -13, + }, + flag128thUp: { + shiftY: -22, + }, + }, + stringNumber: { + verticalPadding: 8, + stemPadding: 2, + leftPadding: 5, + rightPadding: 6, + }, + textNote: { + point: 40, + default: {}, + ornamentTrill: { + shiftX: -5, + shiftY: 4, + }, + }, + noteHead: { + minPadding: 2, + custom: { + noteheadCircleXStemUp: { + shiftX: -1.5, + }, + noteheadXWholeStemUp: { + shiftX: -5, + }, + noteheadTriangleUpWholeStemUp: { + shiftX: -6, + }, + }, + }, + chordSymbol: { + global: { + superscriptOffset: -400, + subscriptOffset: 300, + kerningOffset: -250, + lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'], + upperKerningText: ['A', 'L'], + spacing: 100, + superSubRatio: 0.66, + }, + csymDiminished: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 506, + yOffset: 0, + }, + csymHalfDiminished: { + scale: 0.8, + leftSideBearing: -32, + advanceWidth: 506, + yOffset: 0, + }, + csymAugmented: { + scale: 1, + leftSideBearing: 0, + advanceWidth: 530, + yOffset: 0, + }, + csymParensLeftTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 155, + yOffset: 250, + }, + csymParensRightTall: { + scale: 0.8, + leftSideBearing: -40, + advanceWidth: 189, + yOffset: 250, + }, + csymBracketLeftTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 328, + yOffset: 0, + }, + csymBracketRightTall: { + scale: 0.8, + leftSideBearing: 1, + advanceWidth: 600, + yOffset: 0, + }, + csymParensLeftVeryTall: { + scale: 0.9, + leftSideBearing: 0, + advanceWidth: 121, + yOffset: 350, + }, + csymParensRightVeryTall: { + scale: 0.9, + leftSideBearing: 50, + advanceWidth: 111, + yOffset: 350, + }, + csymDiagonalArrangementSlash: { + scale: 0.6, + leftSideBearing: -1, + advanceWidth: 990, + yOffset: 0, + }, + csymMinor: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 482, + yOffset: 0, + }, + csymMajorSeventh: { + scale: 0.9, + leftSideBearing: 200, + yOffset: 0, + advanceWidth: 600, + }, + accidentalSharp: { + scale: 0.75, + leftSideBearing: 40, + advanceWidth: 250, + yOffset: -402, + }, + accidentalFlat: { + scale: 0.95, + leftSideBearing: -50, + advanceWidth: 208, + yOffset: -184, + }, + }, + jazzOrnaments: { + brassScoop: { + scale: 1.0, + xOffset: -12, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 15, + }, + brassDoitMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 22, + }, + brassFallLipShort: { + scale: 1.0, + xOffset: 17, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 15, + }, + brassLiftMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 5, + stemUpYOffset: 0, + reportedWidth: 5, + }, + brassFallRoughMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 28, + stemUpYOffset: 0, + reportedWidth: 5, + }, + brassBend: { + scale: 1.0, + xOffset: 2, + yOffset: -8, + stemUpYOffset: 24, + reportedWidth: 5, + }, + brassMuteClosed: { + scale: 1.0, + xOffset: 3, + yOffset: -9, + stemUpYOffset: 24, + reportedWidth: 5, + }, + brassMuteOpen: { + scale: 1.0, + xOffset: 3, + yOffset: -7, + stemUpYOffset: 25, + reportedWidth: 5, + }, + brassFlip: { + scale: 1.0, + xOffset: 10, + yOffset: -4, + stemUpYOffset: 7, + reportedWidth: 5, + }, + brassJazzTurn: { + scale: 1.0, + xOffset: 3, + yOffset: -4, + stemUpYOffset: 10, + reportedWidth: 28, + }, + brassSmear: { + scale: 1.0, + xOffset: 10, + yOffset: -4, + stemUpYOffset: 9, + reportedWidth: 5, + }, + }, + tremolo: { + default: { + shiftY: -10, + }, + grace: { + shiftY: -5, + }, + }, + tuplet: { + noteHeadOffset: 20, + stemOffset: 10, + bottomLine: 4, + topModifierOffset: 15, + }, + }, +}; + + +/***/ }), + +/***/ "./src/fonts/leland_glyphs.ts": +/*!************************************!*\ + !*** ./src/fonts/leland_glyphs.ts ***! + \************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "LelandFont": () => (/* binding */ LelandFont) +/* harmony export */ }); +const LelandFont = { + glyphs: { + bracketTop: { + x_min: 0, + x_max: 491, + y_min: 0, + y_max: 279, + ha: 279, + o: 'm 697 399 b 687 402 694 400 690 402 b 671 395 681 402 674 400 b 249 168 668 390 524 168 l 20 168 b 0 150 9 168 0 161 l 0 20 l 0 0 l 176 0 b 706 374 619 0 704 370 b 707 382 706 376 707 379 b 697 399 707 389 703 395 z', + }, + bracketBottom: { + x_min: 0, + x_max: 491, + y_min: -279, + y_max: 0, + ha: 279, + o: 'm 697 -399 b 707 -382 703 -395 707 -389 b 706 -374 707 -379 706 -376 b 176 0 704 -370 619 0 l 0 0 l 0 -20 l 0 -150 b 20 -168 0 -161 9 -168 l 249 -168 b 671 -395 524 -168 668 -390 b 687 -402 674 -400 681 -402 b 697 -399 690 -402 694 -400 z', + }, + segno: { + x_min: 0, + x_max: 654, + y_min: 0, + y_max: 869, + ha: 869, + o: 'm 546 690 l 838 1207 b 841 1215 840 1210 841 1212 b 832 1233 841 1221 837 1230 l 809 1248 b 798 1251 806 1250 801 1251 b 780 1241 792 1251 783 1247 l 487 721 l 217 860 b 99 995 147 897 99 924 b 236 1165 99 1120 179 1165 b 343 1073 288 1165 325 1130 b 454 988 357 1022 405 988 b 477 991 461 988 469 989 b 541 1076 526 1002 541 1045 b 540 1089 541 1080 541 1084 b 294 1225 534 1116 514 1225 b 0 939 72 1225 0 1053 b 125 706 0 825 42 753 l 397 563 l 104 45 b 102 35 102 42 102 37 b 111 19 102 29 107 22 l 132 3 b 144 0 135 1 141 0 b 148 0 145 0 147 0 b 161 10 153 1 158 6 l 456 531 l 704 403 b 842 256 780 361 842 318 b 706 86 842 131 763 86 b 599 177 654 86 616 120 b 488 262 585 228 537 262 b 465 259 481 262 472 261 b 402 177 418 248 402 206 b 403 163 402 171 402 167 b 649 26 409 135 429 26 b 942 312 871 26 942 199 b 821 549 942 426 901 507 z m 52 444 b 118 416 69 426 95 416 b 183 444 141 416 166 426 b 210 508 200 461 210 485 b 183 573 210 531 200 556 b 118 600 166 590 141 600 b 52 573 95 600 69 590 b 24 508 35 556 24 531 b 52 444 24 485 35 461 z m 760 730 b 825 703 778 713 802 703 b 890 730 848 703 873 713 b 917 795 907 747 917 772 b 890 861 917 818 907 844 b 825 888 873 878 848 888 b 760 861 802 888 778 878 b 733 795 743 844 733 818 b 760 730 733 772 743 747 z', + }, + coda: { + x_min: 0, + x_max: 745, + y_min: -113, + y_max: 735, + ha: 848, + o: 'm 924 467 b 560 896 916 697 757 881 l 560 1038 b 540 1058 560 1050 552 1058 l 524 1058 b 505 1038 513 1058 505 1050 l 505 896 b 150 467 311 877 158 693 l 20 467 b 0 446 9 467 0 458 l 0 432 b 20 412 0 420 9 412 l 150 412 b 505 0 166 193 317 17 l 505 -143 b 524 -163 505 -154 513 -163 l 540 -163 b 560 -143 552 -163 560 -154 l 560 0 b 923 412 753 13 907 190 l 1054 412 b 1073 432 1066 412 1073 420 l 1073 446 b 1054 467 1073 458 1066 467 z m 560 467 l 560 852 b 773 467 716 837 773 671 z m 505 467 l 301 467 b 505 851 301 668 357 831 z m 505 412 l 505 45 b 301 412 366 65 301 219 z m 560 412 l 772 412 b 560 45 772 215 706 60 z', + }, + gClef: { + x_min: 0, + x_max: 640, + y_min: -666, + y_max: 1112, + ha: 1778, + o: 'm 809 -30 b 665 -279 809 -132 768 -238 b 586 186 635 -107 596 122 b 809 -30 716 186 809 98 z m 605 -297 b 521 -305 576 -302 549 -305 b 140 56 315 -305 140 -161 b 390 498 140 232 264 389 b 459 562 415 520 438 540 b 492 357 472 484 482 416 b 272 45 361 318 272 180 b 467 -194 272 -56 351 -194 b 491 -176 478 -194 491 -189 b 459 -144 491 -163 477 -156 b 372 -1 403 -109 372 -72 b 521 177 372 86 436 157 z m 478 1184 b 632 1392 491 1241 557 1392 b 688 1223 654 1392 688 1322 b 478 863 688 1073 577 960 b 462 1037 469 920 462 976 b 478 1184 462 1090 467 1139 z m 176 -739 b 444 -959 176 -834 249 -959 b 622 -910 511 -959 570 -942 b 720 -670 700 -855 720 -760 b 697 -467 720 -613 711 -549 b 675 -338 693 -438 684 -395 b 922 3 816 -292 922 -145 b 557 367 922 220 768 367 b 516 619 543 454 528 539 b 773 1188 668 779 773 959 b 710 1477 773 1319 733 1426 b 608 1601 675 1551 634 1601 b 505 1528 598 1601 553 1584 b 387 1113 413 1418 387 1234 b 419 804 387 1035 395 965 b 312 701 418 802 343 726 b 0 117 181 579 0 405 b 503 -364 0 -153 235 -364 b 616 -354 544 -364 583 -360 b 660 -670 644 -492 660 -593 b 438 -899 660 -819 583 -899 b 370 -891 403 -899 373 -891 b 366 -887 369 -890 366 -888 b 373 -881 366 -884 369 -883 b 508 -721 441 -871 508 -814 b 341 -562 508 -644 449 -562 b 176 -739 240 -562 176 -644 z', + }, + cClef: { + x_min: 0, + x_max: 627, + y_min: -480, + y_max: 482, + ha: 962, + o: 'm 19 675 b 0 657 9 675 0 667 l 0 -654 b 19 -672 0 -664 9 -672 l 122 -672 b 141 -654 132 -672 141 -664 l 141 657 b 122 675 141 667 132 675 z m 903 -376 b 619 -58 903 -197 808 -58 b 505 -95 586 -58 562 -60 b 426 1 503 -89 474 -32 b 505 98 474 35 503 92 b 641 60 560 65 579 60 b 903 379 816 60 903 223 b 580 694 903 580 755 694 b 318 517 472 694 318 649 b 438 400 318 446 367 400 b 546 510 501 400 546 446 b 425 615 546 589 494 615 b 547 651 458 638 503 651 b 723 400 698 651 723 530 b 593 128 723 289 720 128 b 438 279 467 128 441 265 b 418 300 438 281 438 300 b 396 279 397 300 396 281 b 264 29 383 200 344 62 l 264 657 b 246 675 264 667 256 675 b 228 657 236 675 228 667 l 228 -654 b 246 -672 228 -664 236 -672 b 264 -654 256 -672 264 -664 l 264 -26 b 396 -278 348 -60 380 -197 b 418 -297 396 -279 397 -297 b 438 -278 438 -297 438 -279 b 593 -125 441 -262 467 -125 b 723 -397 720 -125 723 -287 b 547 -648 723 -527 698 -648 b 425 -612 503 -648 458 -635 b 441 -613 426 -612 432 -613 b 546 -507 504 -613 546 -569 b 438 -397 546 -444 501 -397 b 318 -514 367 -397 318 -444 b 580 -691 318 -647 472 -691 b 903 -376 755 -691 903 -577 z', + }, + fClef: { + x_min: 0, + x_max: 664, + y_min: -617, + y_max: 251, + ha: 868, + o: 'm 366 361 b 167 298 256 361 168 298 b 37 112 84 236 50 163 b 27 36 30 86 27 60 b 46 -58 27 1 33 -30 b 140 -138 63 -96 96 -124 b 194 -147 157 -144 176 -147 b 287 -122 226 -147 259 -138 b 359 10 331 -98 359 -46 b 289 134 359 60 333 107 b 206 160 259 154 230 160 b 160 153 189 160 173 157 b 109 122 145 147 121 132 b 147 215 114 150 131 192 b 219 279 163 238 194 266 b 351 308 255 300 301 308 b 570 -52 498 308 570 190 b 477 -399 570 -186 520 -314 b 310 -635 429 -494 366 -585 b 17 -837 160 -772 19 -837 b 0 -864 17 -837 0 -847 b 1 -871 0 -867 1 -868 b 27 -888 6 -886 19 -888 b 35 -887 29 -888 33 -887 b 331 -717 36 -887 200 -819 b 528 -544 405 -664 471 -606 b 661 -367 580 -488 625 -428 b 760 -50 724 -259 760 -147 b 670 239 760 69 729 168 b 366 361 602 320 500 361 z m 818 179 b 887 107 818 138 850 107 b 956 179 924 107 956 138 b 887 252 956 219 924 252 b 818 179 850 252 818 219 z m 818 -177 b 887 -251 818 -217 850 -251 b 956 -177 924 -251 956 -217 b 887 -104 956 -137 924 -104 b 818 -177 850 -104 818 -137 z', + }, + unpitchedPercussionClef1: { + x_min: 0, + x_max: 352, + y_min: -252, + y_max: 252, + ha: 504, + o: 'm 19 363 b 0 344 9 363 0 354 l 0 -344 b 19 -363 0 -354 9 -363 l 177 -363 b 196 -344 187 -363 196 -354 l 196 344 b 177 363 196 354 187 363 z m 330 363 b 311 344 320 363 311 354 l 311 -344 b 330 -363 311 -354 320 -363 l 488 -363 b 507 -344 498 -363 507 -354 l 507 344 b 488 363 507 354 498 363 z', + }, + '6stringTabClef': { + x_min: 0, + x_max: 439, + y_min: -743, + y_max: 746, + ha: 1489, + o: 'm 52 1074 l 52 958 l 249 958 l 249 419 l 387 419 l 387 958 l 583 958 l 583 1074 z m 0 -333 l 145 -333 l 192 -196 l 436 -196 l 481 -333 l 632 -333 l 396 334 l 238 334 z m 315 181 l 400 -81 l 229 -81 z m 566 -474 b 393 -402 531 -428 475 -403 l 71 -402 l 71 -1070 l 372 -1070 b 374 -1070 373 -1070 373 -1070 b 465 -1061 405 -1070 435 -1067 b 541 -1027 494 -1056 520 -1043 b 588 -975 560 -1012 575 -995 b 618 -868 608 -943 618 -907 b 592 -770 618 -829 609 -798 b 514 -711 575 -743 549 -724 b 566 -674 537 -700 554 -688 b 596 -576 586 -649 596 -616 b 566 -474 596 -536 586 -503 z m 348 -518 b 428 -528 380 -518 408 -521 b 464 -590 452 -539 464 -559 b 436 -649 464 -619 455 -638 b 366 -665 418 -661 395 -665 l 203 -665 l 203 -518 z m 367 -776 b 435 -788 396 -776 419 -780 b 477 -858 464 -801 477 -824 b 433 -942 477 -900 462 -927 b 366 -953 418 -949 395 -953 l 203 -953 l 203 -776 z', + }, + timeSig0: { + x_min: 15, + x_max: 389, + y_min: -254, + y_max: 255, + ha: 509, + o: 'm 291 367 b 22 0 138 367 22 209 b 291 -366 22 -209 138 -366 b 560 0 444 -366 560 -209 b 291 367 560 209 444 367 z m 376 -200 b 291 -308 376 -252 353 -308 b 206 -200 229 -308 206 -252 l 206 200 b 291 308 206 252 229 308 b 376 200 353 308 376 252 z', + }, + timeSig1: { + x_min: 15, + x_max: 336, + y_min: -243, + y_max: 245, + ha: 488, + o: 'm 359 -284 l 359 336 b 341 353 359 346 351 353 l 199 353 b 190 350 196 353 193 351 b 184 344 189 348 186 346 l 23 65 b 22 56 22 62 22 59 b 30 42 22 50 26 45 l 58 26 b 66 23 60 24 63 23 b 81 32 72 23 78 27 l 183 207 l 183 -284 l 73 -284 b 56 -301 63 -284 56 -291 l 56 -333 b 73 -350 56 -343 63 -350 l 468 -350 b 484 -333 478 -350 484 -343 l 484 -301 b 468 -284 484 -291 478 -284 z', + }, + timeSig2: { + x_min: 15, + x_max: 377, + y_min: -243, + y_max: 245, + ha: 488, + o: 'm 492 -56 b 382 -192 481 -88 452 -192 b 190 -134 288 -192 268 -134 b 153 -138 179 -134 167 -135 b 341 -36 153 -138 189 -84 b 533 173 494 12 533 86 b 288 353 533 233 505 353 b 30 156 71 353 30 222 b 138 49 30 96 79 49 b 245 156 197 49 245 96 b 179 255 245 196 216 240 b 168 271 174 256 168 264 b 202 297 168 279 176 289 b 251 304 209 300 229 304 b 311 288 271 304 294 300 b 348 180 338 271 348 245 b 65 -150 348 12 148 -24 b 22 -278 65 -150 22 -210 b 73 -350 22 -346 56 -350 b 121 -305 96 -350 121 -331 b 117 -287 121 -300 120 -294 b 105 -239 108 -266 105 -251 b 107 -226 105 -235 105 -230 b 154 -203 108 -217 120 -203 b 238 -289 196 -203 212 -252 b 350 -350 264 -327 304 -350 b 484 -264 396 -350 458 -317 b 543 -63 510 -210 543 -102 b 518 -36 543 -45 531 -36 b 492 -56 508 -36 498 -42 z', + }, + timeSig3: { + x_min: 14.984905204685425, + x_max: 364, + y_min: -244, + y_max: 244, + ha: 488, + o: 'm 392 23 b 514 168 507 68 514 143 b 514 176 514 171 514 174 b 262 351 514 189 510 351 b 22 176 14 351 22 176 l 23 176 l 22 173 b 115 81 22 121 63 81 b 207 173 167 81 207 121 b 135 264 207 215 176 255 b 140 268 137 265 138 266 b 215 289 160 282 187 289 b 340 176 275 289 340 253 b 255 69 340 85 272 72 b 140 60 238 66 157 60 b 121 40 122 60 121 40 l 121 12 b 140 -6 121 12 124 -4 b 243 -14 164 -7 197 -7 b 340 -167 307 -23 340 -66 b 215 -289 340 -264 275 -289 b 121 -266 174 -289 137 -278 b 207 -174 168 -264 207 -222 b 115 -81 207 -122 167 -81 b 22 -174 63 -81 22 -122 b 22 -180 22 -174 22 -177 b 78 -298 22 -199 26 -251 b 236 -351 134 -350 204 -351 b 524 -147 374 -351 524 -304 b 389 23 524 -42 452 3 z', + }, + timeSig4: { + x_min: 14, + x_max: 442, + y_min: -248, + y_max: 249, + ha: 497, + o: 'm 300 -183 l 300 -289 l 180 -289 b 160 -310 170 -289 160 -298 l 160 -337 b 180 -357 160 -348 170 -357 l 616 -357 b 636 -337 628 -357 636 -348 l 636 -310 b 616 -289 636 -298 628 -289 l 487 -289 l 487 -183 l 616 -183 b 636 -161 628 -183 636 -173 l 636 -134 b 616 -114 636 -124 628 -114 l 487 -114 l 487 115 b 477 134 487 124 482 131 l 459 143 b 452 144 456 144 455 144 b 449 144 451 144 451 144 b 436 140 445 144 439 143 l 305 20 b 300 4 301 16 300 10 l 300 -114 l 132 -114 b 464 287 132 -114 294 59 b 471 307 469 294 471 301 b 467 321 471 314 468 320 l 435 353 b 420 359 431 356 426 359 b 206 359 412 359 217 359 b 187 341 196 359 189 350 b 143 118 187 341 180 235 b 24 -124 105 1 62 -71 b 20 -140 24 -124 20 -131 b 22 -148 20 -143 20 -145 b 36 -174 26 -158 36 -174 b 52 -183 36 -174 39 -183 z', + }, + timeSig5: { + x_min: 15, + x_max: 362, + y_min: -244, + y_max: 246, + ha: 490, + o: 'm 39 314 b 46 170 39 314 46 245 b 46 151 46 164 46 157 b 39 -24 45 71 39 -24 b 39 -29 39 -24 39 -26 b 49 -48 39 -35 40 -46 b 99 -59 62 -50 92 -58 b 107 -59 102 -59 104 -59 b 121 -49 112 -59 118 -58 b 235 45 128 -30 144 45 b 356 -112 337 45 356 -43 b 238 -292 356 -184 333 -288 b 226 -292 233 -292 230 -292 b 166 -282 193 -292 174 -288 b 158 -274 161 -281 158 -276 b 164 -264 158 -269 160 -266 b 222 -168 177 -255 222 -239 b 117 -71 222 -98 173 -71 b 22 -171 60 -71 22 -122 b 111 -318 22 -220 36 -275 b 252 -351 147 -338 199 -351 b 456 -275 325 -351 405 -328 b 521 -109 503 -228 521 -167 b 433 79 521 -32 487 43 b 271 124 397 104 336 124 b 131 84 223 124 173 112 b 125 82 130 82 127 82 b 115 92 120 82 115 86 l 115 183 b 131 199 115 192 122 199 l 132 199 b 252 192 154 197 202 192 b 372 209 295 192 340 196 b 474 320 439 236 462 289 b 477 334 475 324 477 330 b 451 354 477 346 469 354 b 431 351 445 354 439 353 b 252 328 360 334 305 328 b 88 343 200 328 150 334 b 71 344 88 343 81 344 b 39 320 56 344 39 340 b 39 314 39 317 39 315 z', + }, + timeSig6: { + x_min: 15, + x_max: 387, + y_min: -244, + y_max: 245, + ha: 489, + o: 'm 356 69 b 216 22 268 69 236 43 b 209 98 212 52 209 75 b 216 167 209 121 212 141 b 338 287 225 220 261 287 b 410 259 374 287 396 275 b 356 174 380 246 356 207 b 448 82 356 122 396 82 b 541 174 500 82 541 122 l 541 177 b 541 179 541 177 541 177 b 533 225 541 192 539 213 b 310 353 514 276 454 353 b 58 163 180 353 86 229 b 22 -23 43 128 22 58 b 131 -285 22 -111 46 -210 b 318 -351 215 -348 268 -351 b 557 -125 369 -351 557 -292 b 356 69 557 16 446 69 z m 302 -291 b 216 -145 255 -291 216 -226 b 302 1 216 -65 255 1 b 390 -145 350 1 390 -65 b 302 -291 390 -226 350 -291 z', + }, + timeSig7: { + x_min: 15, + x_max: 366, + y_min: -250, + y_max: 251, + ha: 501, + o: 'm 233 -177 b 160 -336 202 -225 160 -282 b 180 -360 160 -351 164 -360 b 264 -351 203 -360 217 -354 b 278 -350 268 -351 274 -350 b 369 -360 320 -350 359 -360 b 405 -331 382 -360 406 -344 b 405 -327 405 -330 405 -328 b 396 -226 405 -324 396 -279 b 408 -130 396 -196 399 -161 b 503 151 425 -62 471 60 b 527 308 518 196 527 275 b 526 341 527 321 527 327 b 510 361 524 356 518 361 b 484 361 503 361 491 361 b 467 341 477 361 467 356 b 406 228 467 327 464 228 b 235 351 346 228 328 351 b 86 252 145 351 91 261 l 86 321 b 71 337 86 330 79 337 l 37 337 b 22 321 29 337 22 330 l 22 55 b 37 39 22 46 29 39 l 71 39 b 86 55 79 39 86 46 l 86 101 b 158 179 86 134 108 179 b 328 124 209 179 213 124 b 425 143 357 124 410 128 b 233 -177 413 120 266 -130 z', + }, + timeSig8: { + x_min: 15, + x_max: 393, + y_min: -248, + y_max: 246, + ha: 494, + o: 'm 467 26 b 547 166 514 62 547 108 b 294 354 547 269 433 354 b 40 166 154 354 40 269 b 122 13 40 108 55 56 b 22 -147 58 -24 22 -78 b 294 -357 22 -264 144 -357 b 566 -147 444 -357 566 -264 b 467 26 566 -78 541 -13 z m 294 -276 b 122 -145 202 -276 122 -226 b 197 -26 122 -49 197 -26 b 435 -187 295 -59 435 -108 b 294 -276 435 -226 384 -276 z m 386 65 b 180 209 288 96 180 144 b 294 288 180 265 232 288 b 444 180 383 288 444 246 b 386 65 444 111 412 78 z', + }, + timeSig9: { + x_min: 15, + x_max: 387, + y_min: -244, + y_max: 245, + ha: 489, + o: 'm 223 -68 b 363 -20 311 -68 343 -42 b 370 -96 367 -50 370 -73 b 363 -166 370 -120 367 -140 b 240 -285 354 -219 318 -285 b 168 -258 204 -285 183 -274 b 223 -173 199 -245 223 -206 b 131 -81 223 -121 183 -81 b 37 -173 79 -81 37 -121 l 37 -176 b 37 -177 37 -176 37 -176 b 46 -223 37 -190 40 -212 b 269 -351 65 -275 125 -351 b 521 -161 399 -351 492 -228 b 557 24 536 -127 557 -56 b 448 287 557 112 533 212 b 261 353 364 350 311 353 b 22 127 210 353 22 294 b 223 -68 22 -14 132 -68 z m 276 294 b 363 147 324 294 363 228 b 276 1 363 66 324 1 b 189 147 229 1 189 66 b 276 294 189 228 229 294 z', + }, + timeSigCommon: { + x_min: 0, + x_max: 463, + y_min: -256, + y_max: 258, + ha: 514, + o: 'm 468 258 b 406 147 432 235 406 193 b 408 130 406 141 406 135 b 521 17 415 71 462 24 b 537 17 526 17 533 17 b 667 147 609 17 667 75 b 667 156 667 147 667 151 b 664 177 667 161 665 171 b 350 372 651 239 595 372 b 0 17 36 372 0 111 b 382 -369 0 -154 22 -369 b 641 -131 524 -369 635 -285 b 629 -120 641 -124 636 -120 l 611 -120 b 599 -131 605 -120 599 -125 b 382 -323 593 -251 508 -323 b 196 -128 256 -323 196 -255 l 196 147 b 356 320 196 228 228 320 b 469 271 423 320 454 295 b 471 264 471 268 471 266 b 468 258 471 262 471 259 z', + }, + timeSigCutCommon: { + x_min: 0, + x_max: 463, + y_min: -376, + y_max: 388, + ha: 764, + o: 'm 611 -120 b 599 -131 605 -120 599 -125 b 382 -323 593 -251 508 -323 b 369 -323 377 -323 373 -323 l 369 320 b 469 269 428 317 455 292 b 471 264 471 266 471 265 b 468 258 471 261 471 259 b 406 147 432 235 406 193 b 408 130 406 141 406 135 b 523 17 415 71 464 24 b 537 17 527 17 533 17 b 667 147 609 17 667 75 b 667 156 667 147 667 151 b 664 177 667 161 665 171 b 369 370 651 236 598 364 l 369 543 b 353 559 369 552 361 559 l 314 559 b 298 543 305 559 298 552 l 298 369 b 0 17 32 341 0 105 b 298 -364 0 -140 17 -334 l 298 -526 b 314 -541 298 -534 305 -541 l 353 -541 b 369 -526 361 -541 369 -534 l 369 -369 b 382 -369 373 -369 377 -369 b 641 -131 524 -369 635 -285 b 629 -120 641 -124 636 -120 z m 196 147 b 298 312 196 215 216 289 l 298 -310 b 196 -128 229 -285 196 -223 z', + }, + timeSigPlus: { + x_min: 0, + x_max: 408, + y_min: -204, + y_max: 204, + ha: 408, + o: 'm 327 33 l 327 275 b 308 294 327 285 318 294 l 279 294 b 261 275 269 294 261 285 l 261 33 l 19 33 b 0 14 9 33 0 24 l 0 -13 b 19 -33 0 -23 9 -33 l 261 -33 l 261 -274 b 279 -294 261 -284 269 -294 l 308 -294 b 327 -274 318 -294 327 -284 l 327 -33 l 567 -33 b 588 -13 577 -33 588 -23 l 588 14 b 567 33 588 24 577 33 z', + }, + noteheadDoubleWhole: { + x_min: 0, + x_max: 538, + y_min: -178, + y_max: 179, + ha: 357, + o: 'm 33 258 b 20 258 27 258 26 258 b 0 238 9 258 0 249 b 0 -236 0 226 0 -226 b 20 -256 0 -246 9 -256 b 33 -256 26 -256 27 -256 b 53 -236 43 -256 53 -245 b 53 238 53 -228 53 226 b 33 258 53 249 45 258 z m 649 258 b 636 258 644 258 642 258 b 616 238 625 258 616 249 b 616 125 616 235 616 187 b 389 196 573 167 500 196 b 160 125 276 196 203 167 b 160 238 160 187 160 235 b 140 258 160 249 151 258 b 127 258 134 258 132 258 b 107 238 115 258 107 249 b 107 -236 107 226 107 -226 b 127 -256 107 -246 115 -256 b 140 -256 132 -256 134 -256 b 160 -236 150 -256 160 -245 b 160 -122 160 -233 160 -186 b 389 -194 203 -166 276 -194 b 616 -122 500 -194 573 -166 b 616 -236 616 -186 616 -233 b 636 -256 616 -246 625 -256 b 649 -256 642 -256 644 -256 b 670 -236 660 -256 670 -245 b 670 238 670 -228 670 226 b 649 258 670 249 661 258 z m 462 -140 b 400 -148 445 -144 422 -148 b 314 -101 360 -148 333 -135 b 268 68 295 -65 269 29 b 268 76 268 71 268 73 b 314 141 268 109 282 130 b 377 150 331 145 354 150 b 462 102 416 150 442 140 b 510 -66 482 63 510 -29 b 462 -140 510 -104 497 -128 z m 755 258 b 742 258 749 258 747 258 b 721 238 730 258 721 249 b 721 -236 721 226 721 -226 b 742 -256 721 -246 730 -256 b 755 -256 747 -256 749 -256 b 775 -236 765 -256 775 -245 b 775 238 775 -228 775 226 b 755 258 775 249 766 258 z', + }, + noteheadWhole: { + x_min: 0, + x_max: 373, + y_min: -134, + y_max: 136, + ha: 270, + o: 'm 269 196 b 0 1 71 196 0 95 b 269 -193 0 -92 71 -193 b 537 1 468 -193 537 -92 b 269 196 537 95 468 196 z m 343 -138 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 148 68 176 -63 150 29 b 194 141 145 107 160 130 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 389 -65 363 63 389 -29 b 343 -138 389 -102 377 -128 z', + }, + noteheadHalf: { + x_min: 0, + x_max: 325, + y_min: -133, + y_max: 132, + ha: 265, + o: 'm 307 190 b 0 -60 167 190 0 73 b 161 -192 0 -122 45 -192 b 468 58 311 -192 468 -69 b 307 190 468 143 396 190 z m 268 -63 b 108 -124 264 -66 158 -124 b 50 -72 60 -124 50 -85 b 200 62 50 -12 194 59 b 360 122 206 65 308 122 b 418 71 395 122 418 102 b 268 -63 418 9 272 -60 z', + }, + noteheadBlack: { + x_min: 0, + x_max: 325, + y_min: -133, + y_max: 132, + ha: 265, + o: 'm 0 -60 b 161 -192 0 -122 45 -192 b 468 58 311 -192 468 -69 b 307 190 468 143 396 190 b 0 -60 167 190 0 72 z', + }, + noteheadXBlack: { + x_min: 0, + x_max: 325, + y_min: -132, + y_max: 132, + ha: 264, + o: 'm 461 138 b 468 153 465 141 468 147 l 468 154 b 462 167 468 160 465 164 l 445 184 b 431 190 441 187 436 190 b 418 186 426 190 420 189 l 235 40 l 50 186 b 37 190 48 189 42 190 b 24 184 32 190 29 187 l 6 167 b 0 153 3 164 0 158 b 7 138 0 147 3 141 l 183 0 l 7 -138 b 0 -153 3 -141 0 -147 b 6 -166 0 -157 3 -163 l 23 -184 b 37 -190 26 -189 32 -190 b 50 -186 42 -190 48 -189 l 235 -40 l 418 -186 b 431 -190 420 -189 426 -190 b 445 -184 436 -190 442 -189 l 462 -166 b 468 -153 465 -163 468 -157 b 461 -138 468 -147 465 -141 l 285 0 z', + }, + noteheadCircleX: { + x_min: 0, + x_max: 325, + y_min: -162, + y_max: 163, + ha: 325, + o: 'm 265 0 l 395 105 b 426 0 415 75 426 39 b 387 -115 426 -43 412 -84 z m 233 -27 l 360 -145 b 235 -192 327 -174 282 -192 b 99 -137 183 -192 134 -171 z m 202 1 l 73 -105 b 42 0 53 -75 42 -39 b 81 115 42 43 56 84 z m 235 29 l 108 145 b 233 193 141 174 186 193 b 369 138 285 193 334 173 z m 233 235 b 0 0 104 235 0 130 b 233 -233 0 -130 104 -233 b 468 0 363 -233 468 -130 b 233 235 468 130 363 235 z', + }, + noteheadDoubleWholeSquare: { + x_min: 0, + x_max: 432, + y_min: -179, + y_max: 177, + ha: 356, + o: 'm 590 255 b 570 235 579 255 570 246 l 570 203 l 53 203 l 53 235 b 33 255 53 246 45 255 l 20 255 b 0 235 9 255 0 246 l 0 -230 b 20 -251 0 -242 9 -251 l 33 -251 b 53 -230 45 -251 53 -242 l 53 -200 l 570 -200 l 570 -238 b 590 -258 570 -249 579 -258 l 603 -258 b 622 -238 615 -258 622 -249 l 622 235 b 603 255 622 246 615 255 z m 570 -101 l 53 -101 l 53 105 l 570 105 z', + }, + noteheadSquareWhite: { + x_min: 0, + x_max: 310, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 395 128 l 395 -128 l 52 -128 l 52 128 z m 446 180 l 0 180 l 0 -180 l 446 -180 z', + }, + noteheadSquareBlack: { + x_min: 0, + x_max: 310, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 446 180 l 0 180 l 0 -180 l 446 -180 z', + }, + noteheadTriangleUpBlack: { + x_min: 0, + x_max: 310, + y_min: -136, + y_max: 122, + ha: 258, + o: 'm 223 176 l 0 -196 l 446 -196 z', + }, + noteheadSlashedDoubleWhole1: { + x_min: -66, + x_max: 456, + y_min: -213, + y_max: 212, + ha: 425, + o: 'm 652 298 b 638 305 649 304 644 305 b 626 301 634 305 629 304 l 560 248 b 543 256 557 253 550 256 b 530 256 537 256 536 256 b 510 236 518 256 510 248 b 510 204 510 235 510 223 l 455 161 b 281 194 413 181 356 194 b 53 124 168 194 96 166 b 53 236 53 186 53 233 b 29 256 53 253 42 256 b 20 256 26 256 23 256 b 0 236 9 256 0 248 b 0 -204 0 228 0 -98 l -88 -272 b -95 -288 -92 -276 -95 -282 b -91 -300 -95 -291 -94 -295 b -76 -307 -86 -304 -82 -307 b -65 -302 -72 -307 -68 -305 l 3 -248 b 20 -258 6 -253 12 -258 b 53 -238 33 -258 52 -255 b 53 -206 53 -236 53 -225 l 107 -161 b 281 -196 148 -183 206 -196 b 510 -124 393 -196 465 -166 b 510 -238 510 -187 510 -235 b 530 -258 510 -248 518 -258 b 563 -238 543 -258 563 -255 b 563 204 563 -229 563 98 l 649 272 b 657 288 655 276 657 282 b 652 298 657 291 655 295 z m 160 75 b 269 148 160 138 219 148 b 356 101 310 148 334 140 b 363 85 357 96 360 91 l 189 -56 b 160 66 174 -14 161 40 b 160 75 160 69 160 72 z m 53 -163 b 53 -124 53 -151 53 -138 b 76 -144 60 -131 68 -138 z m 402 -68 b 292 -148 402 -138 351 -148 b 207 -101 252 -150 226 -137 b 199 -84 204 -96 202 -91 l 373 56 b 402 -68 389 13 402 -40 z m 510 124 b 485 144 503 131 494 137 l 510 163 b 510 124 510 151 510 137 z', + }, + noteheadSlashedWhole1: { + x_min: -75, + x_max: 448, + y_min: -211, + y_max: 214, + ha: 425, + o: 'm 641 301 b 625 308 636 305 631 308 b 613 304 621 307 618 307 l 439 160 b 269 196 399 181 343 196 b 0 1 71 196 0 95 b 69 -138 0 -49 20 -101 l -101 -271 b -108 -287 -105 -275 -108 -281 b -104 -298 -107 -291 -107 -294 b -88 -304 -99 -302 -94 -304 b -76 -301 -85 -304 -81 -304 l 98 -157 b 269 -193 138 -179 194 -193 b 537 1 468 -193 537 -92 b 468 141 537 52 517 104 l 638 274 b 645 289 642 278 645 284 b 641 301 644 292 644 297 z m 148 68 b 148 78 148 72 148 75 b 194 141 148 111 163 131 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 350 86 346 98 348 92 l 177 -55 b 148 68 163 -12 150 42 z m 389 -65 b 343 -138 389 -102 377 -128 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 187 -82 192 -95 190 -89 l 279 -6 l 361 58 b 389 -65 376 16 389 -39 z', + }, + noteheadSlashedHalf1: { + x_min: -98, + x_max: 424, + y_min: -213, + y_max: 212, + ha: 425, + o: 'm 606 298 b 592 305 602 302 598 305 b 580 301 588 305 583 304 l 412 163 b 307 190 383 180 347 190 b 153 148 258 190 204 176 b 0 -60 58 98 0 13 b 14 -120 0 -81 4 -101 b 32 -143 20 -128 26 -135 l -134 -274 b -141 -288 -138 -276 -141 -282 b -137 -300 -141 -292 -140 -297 b -122 -307 -134 -304 -128 -307 b -111 -302 -118 -307 -114 -305 l 56 -164 b 161 -192 85 -181 121 -192 b 315 -151 210 -192 264 -179 b 468 58 410 -101 468 -16 b 454 117 468 78 464 98 b 436 141 449 125 444 134 l 603 272 b 611 287 608 275 611 281 b 606 298 611 291 609 295 z m 56 -98 b 49 -73 52 -91 49 -82 b 75 -23 49 -58 59 -39 b 199 60 99 1 147 32 b 337 118 251 89 302 111 b 359 121 344 120 351 121 b 361 121 360 121 360 121 l 225 9 l 69 -114 b 56 -98 65 -109 60 -104 z m 410 94 b 416 69 415 86 416 78 b 392 19 416 53 408 36 b 266 -65 367 -6 318 -36 b 128 -122 215 -94 163 -115 b 107 -125 121 -124 114 -125 b 104 -125 107 -125 105 -125 l 245 -9 l 396 111 b 410 94 402 107 408 101 z', + }, + noteheadSlashedBlack1: { + x_min: -98, + x_max: 424, + y_min: -213, + y_max: 212, + ha: 425, + o: 'm 606 298 b 592 305 602 302 598 305 b 580 301 588 305 583 304 l 412 161 b 307 190 383 180 347 190 b 0 -60 167 190 0 72 b 32 -144 0 -89 10 -120 l -134 -274 b -141 -288 -138 -278 -141 -284 b -137 -301 -141 -292 -140 -297 b -122 -307 -134 -305 -128 -307 b -111 -304 -118 -307 -114 -307 l 56 -164 b 161 -192 82 -181 117 -192 b 468 58 311 -192 468 -71 b 436 141 468 91 456 120 l 603 271 b 611 285 608 275 611 281 b 606 298 611 289 609 294 z', + }, + noteheadSlashedDoubleWhole2: { + x_min: -66, + x_max: 456, + y_min: -213, + y_max: 212, + ha: 425, + o: 'm 563 -204 b 563 236 563 -98 563 228 b 543 256 563 249 554 256 b 530 256 537 256 536 256 b 510 236 518 256 510 248 b 510 124 510 233 510 187 b 281 194 467 166 393 194 b 107 161 207 194 150 181 l 53 204 b 53 236 53 223 53 235 b 33 256 53 249 45 256 b 20 256 27 256 26 256 b 3 246 12 256 6 253 l -63 301 b -76 305 -68 304 -72 305 b -91 298 -81 305 -86 304 b -95 287 -94 295 -95 291 b -88 272 -95 281 -92 276 l 0 204 b 0 -238 0 98 0 -229 b 20 -258 0 -248 9 -258 b 33 -258 26 -258 27 -258 b 53 -238 43 -258 53 -246 b 53 -124 53 -235 53 -187 b 281 -196 96 -166 170 -196 b 456 -161 356 -196 413 -183 l 510 -206 b 510 -238 510 -225 510 -236 b 530 -258 510 -248 518 -258 b 543 -258 536 -258 537 -258 b 560 -246 549 -258 556 -252 l 626 -302 b 638 -307 631 -305 634 -307 b 654 -300 645 -307 649 -304 b 657 -288 655 -295 657 -292 b 651 -272 657 -282 655 -276 z m 207 140 b 269 148 225 144 248 148 b 356 101 310 148 336 140 b 402 -68 376 62 402 -30 b 402 -78 402 -71 402 -75 l 292 9 l 168 109 b 207 140 176 124 189 134 z m 78 144 b 53 124 69 137 60 131 b 53 163 53 137 53 150 z m 356 -141 b 294 -148 338 -145 315 -148 b 207 -101 253 -148 226 -137 b 161 66 189 -66 163 27 b 160 72 161 69 160 71 b 161 78 160 75 160 76 l 271 -9 l 395 -109 b 356 -141 387 -124 374 -134 z m 485 -144 b 510 -124 494 -138 503 -131 b 510 -163 510 -138 510 -151 z', + }, + noteheadSlashedWhole2: { + x_min: -75, + x_max: 448, + y_min: -212, + y_max: 214, + ha: 426, + o: 'm 468 -138 b 537 1 517 -101 537 -49 b 269 196 537 95 468 196 b 98 160 196 196 140 181 l -76 304 b -88 308 -81 307 -84 307 b -104 301 -94 308 -99 305 b -108 289 -107 297 -107 292 b -101 274 -108 284 -105 278 l 69 141 b 0 1 20 104 0 52 b 269 -193 0 -92 71 -193 b 441 -157 343 -193 399 -179 l 613 -301 b 625 -305 618 -304 622 -305 b 641 -298 631 -305 636 -302 b 645 -287 644 -294 644 -291 b 638 -271 645 -281 642 -275 z m 194 141 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 389 -65 363 63 389 -29 b 389 -76 389 -69 389 -73 l 279 10 l 156 112 b 194 141 163 125 176 135 z m 343 -138 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 148 68 176 -63 150 29 b 148 76 148 71 148 73 b 148 81 148 78 148 79 l 258 -6 l 382 -108 b 343 -138 374 -122 361 -132 z', + }, + noteheadSlashedHalf2: { + x_min: -98, + x_max: 424, + y_min: -213, + y_max: 212, + ha: 425, + o: 'm 386 -102 b 468 58 438 -55 468 4 b 454 117 468 78 464 98 b 307 190 428 164 373 190 b 153 148 258 190 204 176 b 108 120 137 140 122 130 l -111 301 b -122 305 -114 304 -118 305 b -137 298 -128 305 -134 302 b -141 287 -140 295 -141 291 b -134 272 -141 281 -138 275 l 85 101 b 0 -60 32 53 0 -7 b 14 -120 0 -81 4 -101 b 161 -192 40 -167 95 -192 b 315 -151 210 -192 264 -179 b 361 -122 333 -143 347 -132 l 580 -302 b 592 -307 583 -305 588 -307 b 606 -300 598 -307 602 -304 b 611 -288 609 -297 611 -292 b 603 -274 611 -282 608 -276 z m 199 60 b 337 118 251 89 302 111 b 359 121 344 120 351 121 b 410 94 382 121 400 112 b 416 69 415 86 416 78 b 392 19 416 53 408 36 b 308 -42 374 0 343 -20 l 245 7 l 189 55 b 199 60 192 56 196 58 z m 266 -65 b 128 -122 215 -94 163 -115 b 107 -125 121 -124 114 -125 b 56 -98 84 -125 66 -117 b 49 -73 52 -91 49 -82 b 75 -23 49 -58 59 -39 b 163 39 94 -4 125 17 l 225 -9 l 282 -56 b 266 -65 276 -59 272 -62 z', + }, + noteheadSlashedBlack2: { + x_min: -98.44444444444443, + x_max: 424, + y_min: -213, + y_max: 212, + ha: 425, + o: 'm 384 -102 b 468 58 435 -58 468 0 b 307 190 468 143 396 190 b 108 121 239 190 167 163 l -111 301 b -124 305 -115 304 -120 305 b -138 298 -128 305 -134 302 b -141 289 -140 295 -141 292 b -141 287 -141 288 -143 288 b -135 272 -141 281 -140 275 l 84 101 b 0 -60 35 56 0 0 b 161 -192 0 -122 45 -192 b 361 -122 232 -192 304 -164 l 579 -302 b 590 -307 583 -305 588 -307 b 606 -300 596 -307 602 -304 b 611 -288 609 -297 611 -292 b 603 -274 609 -282 608 -276 z', + }, + noteheadDiamondDoubleWhole: { + x_min: 0, + x_max: 373, + y_min: -178, + y_max: 179, + ha: 357, + o: 'm 504 258 b 484 238 494 258 484 248 l 484 46 b 282 187 415 95 285 186 b 268 192 279 190 275 192 b 255 187 262 192 258 190 l 52 45 l 52 238 b 33 258 52 248 43 258 l 20 258 b 0 238 9 258 0 248 l 0 -236 b 20 -256 0 -248 9 -256 l 33 -256 b 52 -236 43 -256 52 -248 l 52 -45 l 249 -181 b 268 -190 258 -189 264 -190 b 282 -186 274 -190 279 -189 b 484 -43 285 -184 413 -94 l 484 -236 b 504 -256 484 -248 494 -256 l 517 -256 b 537 -236 528 -256 537 -248 l 537 238 b 517 258 537 248 528 258 z m 220 -115 l 102 -33 l 317 117 l 435 35 z', + }, + noteheadDiamondWhole: { + x_min: 0, + x_max: 373, + y_min: -133, + y_max: 132, + ha: 265, + o: 'm 282 -187 b 530 -13 285 -186 530 -13 b 537 0 534 -10 537 -6 b 530 13 537 4 534 10 b 282 186 530 13 287 183 b 268 190 279 189 275 190 b 255 186 262 190 258 189 l 7 12 b 0 -1 3 9 0 4 b 4 -13 0 -6 1 -10 l 249 -183 b 268 -192 258 -190 264 -192 b 282 -187 274 -192 279 -190 z m 220 -117 l 102 -35 l 317 115 l 435 33 z', + }, + noteheadDiamondHalf: { + x_min: 0, + x_max: 335, + y_min: -132, + y_max: 133, + ha: 265, + o: 'm 475 -13 b 482 0 480 -10 482 -6 b 475 13 482 4 480 10 l 253 187 b 240 192 251 190 246 192 b 229 187 236 192 232 190 l 7 13 b 0 0 3 10 0 6 b 7 -13 0 -4 3 -10 l 229 -186 b 240 -190 232 -189 236 -190 b 253 -186 246 -190 251 -189 z m 284 -115 l 92 33 l 199 117 l 390 -33 z', + }, + noteheadDiamondBlack: { + x_min: 0, + x_max: 335, + y_min: -132, + y_max: 133, + ha: 265, + o: 'm 475 -14 b 482 -1 480 -10 482 -6 b 475 13 482 4 480 10 l 253 187 b 240 192 251 190 246 192 b 229 187 236 192 232 190 l 7 13 b 0 0 3 10 0 4 b 7 -14 0 -6 3 -10 l 229 -186 b 240 -190 232 -189 236 -190 b 253 -186 246 -190 251 -189 z', + }, + noteheadParenthesisRight: { + x_min: 0, + x_max: 75, + y_min: -209.4142135623731, + y_max: 212, + ha: 421.4142135623731, + o: 'm 10 305 b 4 302 7 304 6 304 b 0 295 1 301 0 298 b 1 289 0 294 0 292 b 68 -10 1 288 68 160 b 1 -288 68 -95 50 -192 b 0 -292 0 -289 0 -291 b 4 -300 0 -295 1 -298 b 12 -301 7 -301 9 -302 b 17 -298 14 -301 16 -300 b 108 0 22 -292 108 -174 b 17 301 108 174 22 295 b 10 305 16 304 13 305 z', + }, + noteheadParenthesisLeft: { + x_min: 0, + x_max: 75, + y_min: -212, + y_max: 209.4142135623731, + ha: 421.4142135623731, + o: 'm 98 -305 b 104 -302 101 -304 102 -304 b 108 -295 107 -301 108 -298 b 107 -289 108 -294 108 -292 b 40 10 107 -288 40 -160 b 107 288 40 95 58 192 b 108 292 108 289 108 291 b 104 300 108 295 107 298 b 96 301 101 301 99 302 b 91 298 94 301 92 300 b 0 0 86 292 0 174 b 91 -301 0 -174 86 -295 b 98 -305 92 -304 95 -305 z', + }, + noteheadMoonBlack: { + x_min: 0, + x_max: 310, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 0 180 l 0 0 b 223 -180 0 -99 99 -180 b 446 0 347 -180 446 -99 l 446 180 z', + }, + noteheadTriangleLeftBlack: { + x_min: 0, + x_max: 339, + y_min: -136, + y_max: 122, + ha: 258, + o: 'm 0 176 l 0 -196 l 488 -196 z', + }, + noteheadTriangleRightBlack: { + x_min: 0, + x_max: 339, + y_min: -136, + y_max: 122, + ha: 258, + o: 'm 488 176 l 0 -196 l 488 -196 z', + }, + noteheadTriangleRoundDownBlack: { + x_min: 0, + x_max: 310, + y_min: -136, + y_max: 122, + ha: 258, + o: 'm 226 -196 l 446 63 b 226 176 446 63 384 176 b 0 63 68 176 0 63 z', + }, + augmentationDot: { + x_min: 0, + x_max: 100, + y_min: -50, + y_max: 50, + ha: 100, + o: 'm 0 0 b 72 -72 0 -40 32 -72 b 144 0 112 -72 144 -40 b 72 72 144 40 112 72 b 0 0 32 72 0 40 z', + }, + tremolo1: { + x_min: 0, + x_max: 290, + y_min: -93, + y_max: 96, + ha: 189, + o: 'm 0 48 l 0 -134 l 418 -43 l 418 138 z', + }, + flag8thUp: { + x_min: 0, + x_max: 289.04376776750354, + y_min: -817, + y_max: 12, + ha: 829, + o: 'm 0 -327 b 12 -343 0 -331 1 -338 b 291 -600 73 -363 197 -441 b 359 -827 317 -645 359 -707 b 294 -1140 359 -930 331 -1037 b 289 -1162 291 -1149 288 -1156 b 297 -1175 289 -1168 291 -1172 b 304 -1176 300 -1176 302 -1176 b 327 -1161 314 -1176 321 -1171 b 416 -798 395 -1041 418 -888 b 416 -780 416 -791 416 -786 b 302 -458 409 -595 302 -458 b 131 -220 307 -458 170 -281 b 50 -50 78 -138 53 -56 b 36 6 49 -46 36 6 b 19 17 35 12 27 17 b 0 -1 9 17 0 9 z', + }, + flag8thDown: { + x_min: 0, + x_max: 309, + y_min: -12, + y_max: 817, + ha: 829, + o: 'm 0 1 b 19 -17 0 -9 9 -17 b 36 -6 26 -17 35 -12 b 50 50 36 -4 49 46 b 117 196 52 56 65 111 b 331 458 173 289 259 357 b 445 780 402 559 445 654 b 338 1161 445 912 415 1021 b 317 1176 334 1171 325 1176 b 310 1175 314 1176 311 1176 b 300 1158 302 1172 300 1166 b 304 1140 300 1153 301 1146 b 384 827 361 1007 384 930 b 317 600 384 707 343 645 b 12 343 223 441 72 363 b 0 327 1 338 0 331 z', + }, + flag16thUp: { + x_min: 0, + x_max: 279, + y_min: -820, + y_max: 12, + ha: 832, + o: 'm 301 -681 b 148 -514 262 -631 219 -585 b 56 -372 92 -458 66 -409 b 52 -343 55 -364 53 -354 b 271 -510 125 -343 219 -442 b 340 -696 327 -583 340 -641 b 337 -739 340 -710 338 -724 b 301 -681 325 -716 312 -697 z m 0 -549 b 22 -563 0 -553 12 -559 b 258 -776 59 -576 171 -648 b 318 -950 307 -850 318 -901 b 317 -975 318 -959 318 -966 b 285 -1140 317 -1009 307 -1083 b 279 -1164 284 -1148 279 -1156 b 289 -1179 279 -1169 282 -1175 b 297 -1181 292 -1181 294 -1181 b 318 -1161 307 -1181 312 -1169 b 382 -962 344 -1120 382 -1043 b 374 -855 382 -920 379 -886 b 402 -678 389 -802 402 -749 b 333 -471 402 -603 382 -536 b 137 -228 265 -382 192 -307 b 42 0 82 -148 42 0 b 22 17 39 10 37 17 b 0 0 4 17 0 10 z', + }, + flag16thDown: { + x_min: 0, + x_max: 309, + y_min: -26, + y_max: 803, + ha: 829, + o: 'm 53 346 b 56 363 55 353 56 359 b 163 517 66 399 78 452 b 384 732 246 582 346 662 b 317 503 382 621 354 552 b 53 346 229 395 122 364 z m 0 -14 b 22 -37 0 -26 10 -37 b 43 -14 33 -37 40 -26 b 167 232 65 134 109 177 b 445 683 243 305 445 416 b 432 837 445 730 441 783 b 441 919 438 855 441 881 b 327 1149 441 1032 374 1112 b 304 1156 321 1153 312 1156 b 287 1152 298 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1135 b 382 930 344 1076 382 1027 b 374 876 382 912 380 893 l 373 871 b 373 871 373 871 373 871 b 327 789 366 842 350 815 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z', + }, + flag32ndUp: { + x_min: 0, + x_max: 279, + y_min: -821, + y_max: 186, + ha: 1007, + o: 'm 301 -683 b 148 -516 262 -632 219 -588 b 56 -373 92 -459 66 -410 b 50 -343 55 -366 53 -354 b 271 -500 125 -343 219 -432 b 340 -687 327 -575 340 -632 b 337 -739 340 -704 338 -721 b 301 -683 325 -716 312 -698 z m 271 -259 b 340 -446 327 -333 340 -392 b 338 -469 340 -455 338 -462 b 333 -461 337 -467 334 -464 b 91 -192 265 -372 145 -271 b 50 -92 69 -160 58 -124 b 271 -259 124 -92 219 -192 z m 0 -550 b 22 -564 0 -554 12 -560 b 258 -778 59 -577 171 -649 b 318 -952 307 -851 318 -903 b 317 -976 318 -960 318 -968 b 285 -1142 317 -1011 307 -1084 b 279 -1165 284 -1149 279 -1158 b 289 -1181 279 -1171 282 -1176 b 297 -1182 292 -1182 294 -1182 b 318 -1162 307 -1182 312 -1171 b 382 -963 344 -1122 382 -1044 b 374 -857 382 -922 379 -887 b 402 -668 389 -802 402 -740 b 386 -563 402 -632 396 -596 b 402 -441 395 -526 402 -487 b 402 -428 402 -436 402 -432 b 333 -220 402 -353 382 -285 b 137 23 265 -131 192 -56 b 42 251 82 102 42 251 b 22 268 39 261 37 268 b 0 251 4 268 0 261 z', + }, + flag32ndDown: { + x_min: 0, + x_max: 309, + y_min: -216, + y_max: 803, + ha: 1019, + o: 'm 50 73 b 91 171 58 105 71 141 b 347 402 145 251 272 317 b 384 454 361 418 374 435 b 324 239 384 347 361 287 b 50 73 235 130 122 94 z m 163 517 b 366 693 248 589 327 642 b 382 716 372 700 377 708 b 383 693 383 708 383 700 b 314 505 383 621 359 562 b 53 343 258 436 179 390 b 56 363 55 351 56 359 b 163 517 66 400 81 449 z m 0 -288 b 22 -311 0 -298 10 -311 b 43 -288 33 -311 40 -300 b 167 -40 65 -138 109 -95 b 445 409 243 32 445 143 b 431 577 445 462 439 520 b 441 651 435 602 439 626 b 441 675 441 658 441 667 b 441 687 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 305 1156 321 1153 314 1156 b 287 1152 300 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1136 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z', + }, + flag64thUp: { + x_min: 0, + x_max: 279, + y_min: -822, + y_max: 373, + ha: 1195, + o: 'm 333 -461 b 91 -192 265 -372 145 -271 b 50 -92 69 -161 58 -125 b 271 -251 125 -92 219 -183 b 340 -438 327 -324 340 -383 b 338 -469 340 -448 338 -459 b 333 -461 337 -467 334 -464 z m 301 -683 b 148 -517 262 -632 219 -588 b 56 -374 92 -461 66 -410 b 50 -343 55 -366 53 -356 b 271 -501 125 -343 219 -433 b 340 -688 327 -575 340 -634 b 337 -739 340 -706 338 -721 b 301 -683 325 -717 312 -698 z m 271 10 b 340 -176 327 -63 340 -121 b 337 -217 340 -190 338 -204 b 333 -212 336 -216 334 -213 b 91 65 265 -122 145 -16 b 48 177 66 101 53 143 l 50 177 b 271 10 124 177 217 78 z m 0 -552 b 22 -564 0 -554 12 -562 b 258 -778 59 -579 171 -649 b 318 -952 307 -851 317 -903 b 317 -976 318 -960 318 -968 b 285 -1142 317 -1012 307 -1084 b 279 -1165 284 -1149 279 -1158 b 289 -1181 279 -1172 282 -1178 b 297 -1184 292 -1182 295 -1184 b 318 -1164 307 -1182 312 -1172 b 382 -963 344 -1122 382 -1044 b 374 -857 382 -923 379 -887 b 402 -668 389 -804 402 -740 b 386 -563 402 -632 396 -596 b 402 -432 395 -523 402 -480 b 402 -418 402 -428 402 -423 b 383 -304 402 -379 396 -341 b 402 -170 393 -264 402 -222 b 402 -158 402 -166 402 -163 b 333 49 402 -84 382 -16 b 137 292 265 138 192 213 b 42 520 82 372 42 520 b 22 537 39 530 37 537 b 0 520 4 537 0 530 z', + }, + flag64thDown: { + x_min: 0, + x_max: 309, + y_min: -403, + y_max: 804, + ha: 1207, + o: 'm 52 -196 b 91 -102 59 -166 71 -131 b 347 128 145 -23 272 45 b 384 180 361 145 374 163 b 324 -30 384 76 361 16 b 52 -196 235 -140 124 -176 z m 163 517 b 366 693 248 589 327 644 b 382 717 372 701 377 708 b 383 693 383 708 383 701 b 314 505 383 621 359 562 b 53 343 258 438 179 390 b 56 363 55 351 56 359 b 163 517 66 400 81 449 z m 314 232 b 50 69 258 163 179 117 b 91 171 56 102 69 140 b 347 402 145 251 272 318 b 382 449 360 416 372 432 b 383 420 383 439 383 429 b 314 232 383 348 359 288 z m 0 -557 b 22 -580 0 -567 10 -580 b 43 -557 33 -580 40 -567 b 167 -310 65 -408 109 -364 b 445 140 243 -238 445 -125 b 431 307 445 192 439 249 b 441 377 436 331 439 354 b 441 406 441 387 441 397 b 441 418 441 410 441 413 b 423 546 441 464 432 507 b 441 651 432 582 438 618 b 441 675 441 660 441 667 b 441 688 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 305 1158 321 1153 314 1156 b 287 1152 300 1158 292 1156 b 279 1145 281 1151 279 1148 b 294 1129 279 1140 288 1136 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 563 z', + }, + flag128thUp: { + x_min: 0, + x_max: 279, + y_min: -821, + y_max: 573, + ha: 1394, + o: 'm 0 -550 b 22 -563 0 -553 12 -560 b 258 -776 59 -576 171 -648 b 318 -950 307 -850 318 -901 b 317 -975 318 -959 318 -966 b 285 -1140 317 -1011 307 -1083 b 279 -1164 284 -1148 279 -1156 b 289 -1179 279 -1171 282 -1176 b 297 -1182 292 -1181 294 -1181 b 318 -1162 307 -1182 312 -1169 b 382 -962 344 -1120 382 -1043 b 374 -857 382 -922 379 -887 b 402 -668 389 -802 402 -740 b 383 -554 402 -629 396 -590 b 402 -399 396 -503 402 -452 b 382 -284 402 -359 396 -321 b 402 -125 396 -230 402 -180 b 383 -14 402 -86 396 -49 b 402 130 396 35 402 81 b 333 348 402 204 382 284 b 137 592 265 438 192 513 b 42 808 82 671 46 793 b 22 825 39 818 37 825 b 0 808 4 825 0 818 z m 271 310 b 340 111 328 235 340 170 b 338 73 340 98 338 86 b 333 81 336 76 334 79 b 91 357 265 170 145 276 b 48 469 66 393 53 435 l 50 469 b 271 310 124 469 217 377 z m 301 -681 b 148 -523 262 -631 219 -593 b 56 -383 92 -465 66 -420 b 49 -343 55 -374 52 -359 l 50 -343 b 271 -500 124 -343 217 -432 b 340 -688 327 -575 340 -634 b 337 -737 340 -706 338 -721 b 301 -681 325 -716 312 -697 z m 333 -461 b 91 -192 265 -372 145 -271 b 48 -73 66 -154 53 -111 l 48 -73 l 50 -73 b 271 -232 124 -73 217 -163 b 340 -419 327 -305 340 -364 b 337 -468 340 -435 338 -452 b 333 -461 336 -465 334 -464 z m 333 -192 b 91 84 265 -102 145 4 b 48 200 65 121 53 164 l 48 200 l 50 200 b 271 42 124 200 217 109 b 340 -147 327 -32 340 -92 b 337 -197 340 -164 338 -181 b 333 -192 336 -196 334 -194 z', + }, + flag128thDown: { + x_min: 0, + x_max: 309, + y_min: -591, + y_max: 803, + ha: 1394, + o: 'm 0 -828 b 22 -851 0 -838 10 -851 b 43 -828 33 -851 40 -840 b 167 -580 65 -678 109 -635 b 445 -131 243 -508 445 -397 b 431 36 445 -79 439 -22 b 441 108 436 60 439 85 b 441 137 441 117 441 127 b 441 147 441 140 441 144 b 423 275 441 193 432 236 b 441 377 433 310 438 344 b 441 406 441 387 441 396 b 441 418 441 410 441 413 b 423 546 441 464 432 507 b 441 649 432 582 438 616 b 441 675 441 658 441 667 b 441 687 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 304 1156 321 1153 312 1156 b 287 1152 298 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1135 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z m 314 -37 b 50 -200 258 -107 179 -153 b 91 -102 58 -168 71 -132 b 347 128 145 -23 272 45 b 382 176 360 143 372 160 b 383 151 383 167 383 160 b 314 -37 383 79 359 19 z m 314 232 b 50 69 258 163 179 117 b 91 171 56 101 69 138 b 347 402 145 251 272 317 b 382 449 360 416 372 432 b 383 420 383 439 383 429 b 314 232 383 347 359 288 z m 163 517 b 366 693 248 589 327 642 b 382 716 372 700 377 708 b 383 693 383 708 383 700 b 314 505 382 621 359 560 b 53 343 258 436 179 390 b 56 363 55 350 56 357 b 163 517 66 399 81 449 z m 52 -467 b 91 -372 59 -435 71 -402 b 347 -141 145 -292 272 -225 b 384 -89 361 -125 374 -108 b 324 -301 382 -194 361 -255 b 52 -467 235 -410 122 -446 z', + }, + accidentalFlat: { + x_min: 0, + x_max: 203, + y_min: -176, + y_max: 453, + ha: 629, + o: 'm 289 114 b 173 223 281 170 246 223 b 52 170 101 223 59 179 l 58 632 b 37 652 58 644 49 652 l 20 652 b 0 632 9 652 0 644 l 7 -233 b 27 -253 7 -245 16 -253 b 39 -251 30 -253 36 -252 b 216 -114 45 -248 138 -202 b 292 78 271 -52 292 19 b 289 114 292 91 291 102 z m 190 58 b 148 -85 190 36 184 -30 b 48 -183 124 -122 75 -161 l 52 98 b 134 153 55 111 76 153 b 190 73 186 153 190 104 b 190 58 190 66 190 62 z', + }, + accidentalNatural: { + x_min: 0, + x_max: 171, + y_min: -323, + y_max: 325, + ha: 648, + o: 'm 239 264 b 228 268 236 266 232 268 b 222 266 226 268 223 266 l 40 216 l 40 468 l 0 468 l 0 -245 b 20 -264 0 -256 9 -264 b 26 -264 22 -264 24 -264 l 207 -213 l 207 -465 l 246 -465 b 246 248 246 -226 246 1 b 239 264 246 253 243 261 z m 40 -140 l 40 96 l 207 144 l 207 -94 z', + }, + accidentalSharp: { + x_min: 0, + x_max: 244, + y_min: -333, + y_max: 334, + ha: 667, + o: 'm 336 151 b 351 171 344 153 351 163 l 351 256 b 331 276 351 268 343 276 b 328 276 330 276 330 276 l 281 266 l 281 481 l 240 481 l 240 258 l 112 232 l 112 435 l 72 435 l 72 223 l 16 212 b 0 192 7 210 0 200 l 0 189 l 0 105 l 0 108 b 20 88 0 96 9 88 b 24 88 22 88 23 88 l 72 98 l 72 -140 l 16 -151 b 0 -171 7 -153 0 -163 l 0 -255 b 20 -275 0 -266 9 -275 b 24 -275 22 -275 23 -275 l 72 -265 l 72 -480 l 112 -480 l 112 -256 l 240 -230 l 240 -433 l 281 -433 l 281 -222 l 336 -212 b 351 -192 344 -210 351 -200 l 351 -107 b 331 -86 351 -95 343 -86 b 328 -86 330 -86 330 -86 l 281 -96 l 281 141 z m 112 107 l 240 132 l 240 -105 l 112 -132 z', + }, + accidentalDoubleSharp: { + x_min: 0, + x_max: 275, + y_min: -137, + y_max: 138, + ha: 275, + o: 'm 360 73 l 376 73 b 396 94 387 73 396 82 l 396 179 b 376 199 396 190 387 199 l 291 199 b 271 179 279 199 271 190 l 271 161 l 271 102 l 200 30 l 196 30 l 124 102 l 124 179 b 105 199 124 190 117 199 l 20 199 b 0 179 9 199 0 190 l 0 94 b 20 73 0 82 9 73 l 35 73 l 36 73 l 96 73 l 167 3 l 167 -1 l 96 -73 l 36 -73 l 35 -73 l 20 -73 b 0 -92 9 -73 0 -81 l 0 -177 b 20 -197 0 -189 9 -197 l 105 -197 b 124 -177 117 -197 124 -189 l 124 -101 l 196 -32 l 200 -32 l 271 -101 l 271 -161 l 271 -163 l 271 -177 b 291 -197 271 -189 279 -197 l 376 -197 b 396 -177 387 -197 396 -189 l 396 -92 b 376 -73 396 -81 387 -73 l 361 -73 l 360 -73 l 300 -73 l 228 -1 l 228 1 l 300 73 z', + }, + accidentalDoubleFlat: { + x_min: 0, + x_max: 371, + y_min: -176, + y_max: 453, + ha: 629, + o: 'm 531 115 b 415 223 523 171 488 223 b 294 171 343 223 301 180 l 300 632 b 279 652 300 644 291 652 l 262 652 b 242 632 251 652 242 644 l 246 199 b 173 223 228 213 204 223 b 52 170 101 223 59 179 l 58 632 b 37 652 58 644 49 652 l 20 652 b 0 632 9 652 0 644 l 7 -233 b 27 -253 7 -245 16 -253 b 39 -249 30 -253 36 -251 b 216 -114 45 -246 138 -202 b 248 -69 226 -102 239 -82 l 249 -233 b 269 -253 249 -245 258 -253 b 281 -249 272 -253 278 -251 b 458 -112 287 -246 380 -200 b 534 79 513 -50 534 20 b 531 115 534 92 533 104 z m 190 58 b 148 -85 190 36 184 -30 b 48 -183 124 -122 75 -161 l 52 98 b 134 153 55 111 76 153 b 190 73 186 153 190 104 b 190 58 190 66 190 62 z m 432 58 b 390 -85 432 36 426 -30 b 289 -183 366 -122 317 -161 l 294 98 b 376 153 297 111 318 153 b 432 73 428 153 432 104 b 432 58 432 66 432 62 z', + }, + accidentalParensLeft: { + x_min: 0, + x_max: 75, + y_min: -212, + y_max: 209.4142135623731, + ha: 421.4142135623731, + o: 'm 98 -305 b 104 -302 101 -304 102 -304 b 108 -295 107 -301 108 -298 b 107 -289 108 -294 108 -292 b 40 10 107 -288 40 -160 b 107 288 40 95 58 192 b 108 292 108 289 108 291 b 104 300 108 295 107 298 b 96 301 101 301 99 302 b 91 298 94 301 92 300 b 0 0 86 292 0 174 b 91 -301 0 -174 86 -295 b 98 -305 92 -304 95 -305 z', + }, + accidentalParensRight: { + x_min: 0, + x_max: 75, + y_min: -209.4142135623731, + y_max: 212, + ha: 421.4142135623731, + o: 'm 10 305 b 4 302 7 304 6 304 b 0 295 1 301 0 298 b 1 289 0 294 0 292 b 68 -10 1 288 68 160 b 1 -288 68 -95 50 -192 b 0 -292 0 -289 0 -291 b 4 -300 0 -295 1 -298 b 12 -301 7 -301 9 -302 b 17 -298 14 -301 16 -300 b 108 0 22 -292 108 -174 b 17 301 108 174 22 295 b 10 305 16 304 13 305 z', + }, + accidentalQuarterToneFlatStein: { + x_min: 0, + x_max: 193, + y_min: -176, + y_max: 452, + ha: 628, + o: 'm 0 84 b 107 -145 0 -26 65 -105 b 245 -249 166 -202 245 -249 b 253 -253 248 -251 249 -253 b 272 -235 264 -253 272 -245 l 278 632 b 259 651 278 642 269 651 l 248 651 b 229 632 238 651 229 642 l 232 174 b 125 217 223 186 192 217 b 0 84 53 217 0 173 z m 148 154 b 232 102 212 154 232 115 b 233 107 232 99 233 102 l 235 -179 b 134 -72 207 -156 160 -111 b 92 58 98 -17 92 36 b 92 75 92 62 92 68 b 148 154 92 105 96 154 z', + }, + accidentalThreeQuarterTonesFlatZimmermann: { + x_min: 0, + x_max: 422, + y_min: -176, + y_max: 452, + ha: 628, + o: 'm 608 84 b 482 217 608 173 554 217 b 376 174 416 217 384 186 l 379 632 b 360 651 379 642 370 651 l 348 651 b 330 632 338 651 330 642 l 336 -235 b 354 -253 336 -245 344 -253 b 363 -249 359 -253 360 -251 b 501 -145 363 -249 442 -202 b 608 84 543 -105 608 -26 z m 459 154 b 516 75 511 154 516 105 b 516 58 516 68 516 62 b 474 -72 516 36 510 -17 b 373 -179 448 -111 400 -156 l 374 107 b 376 102 374 102 376 99 b 459 154 376 115 396 154 z m 0 84 b 107 -145 0 -26 65 -105 b 245 -249 166 -202 245 -249 b 253 -253 248 -251 249 -253 b 272 -235 264 -253 272 -245 l 278 632 b 259 651 278 642 269 651 l 248 651 b 229 632 238 651 229 642 l 232 174 b 125 217 223 186 192 217 b 0 84 53 217 0 173 z m 148 154 b 232 102 212 154 232 115 b 233 107 232 99 233 102 l 235 -179 b 134 -72 207 -156 160 -111 b 92 58 98 -17 92 36 b 92 75 92 62 92 68 b 148 154 92 105 96 154 z', + }, + accidentalQuarterToneSharpStein: { + x_min: 0, + x_max: 180, + y_min: -316, + y_max: 320, + ha: 636, + o: 'm 243 144 b 259 164 252 145 259 156 l 259 249 b 239 269 259 261 251 269 b 235 268 238 269 236 268 l 150 251 l 150 461 l 109 461 l 109 242 l 16 222 b 0 203 7 220 0 212 l 0 120 b 20 99 0 108 9 99 b 24 99 22 99 23 99 l 109 117 l 109 -121 l 16 -141 b 0 -160 7 -143 0 -151 l 0 -243 b 20 -264 0 -255 9 -264 b 24 -264 22 -264 23 -264 l 109 -246 l 109 -455 l 150 -455 l 150 -238 l 243 -219 b 259 -199 252 -217 259 -207 l 259 -114 b 239 -95 259 -102 251 -95 b 235 -95 238 -95 236 -95 l 150 -112 l 150 125 z', + }, + accidentalThreeQuarterTonesSharpStein: { + x_min: 0, + x_max: 290, + y_min: -328, + y_max: 339, + ha: 667, + o: 'm 400 158 b 416 179 409 160 416 170 l 416 264 b 397 284 416 275 409 284 b 393 284 396 284 395 284 l 348 274 l 348 488 l 308 488 l 308 265 l 223 248 l 223 465 l 184 465 l 184 240 l 108 225 l 108 442 l 69 442 l 69 216 l 16 204 b 0 186 7 203 0 194 l 0 102 b 20 82 0 91 9 82 b 24 82 22 82 23 82 l 69 92 l 69 -147 l 16 -158 b 0 -177 7 -160 0 -168 l 0 -261 b 20 -281 0 -272 9 -281 b 24 -281 22 -281 23 -281 l 69 -272 l 69 -472 l 108 -472 l 108 -264 l 184 -248 l 184 -451 l 223 -451 l 223 -240 l 308 -223 l 308 -426 l 348 -426 l 348 -215 l 400 -204 b 418 -184 409 -203 418 -193 l 418 -99 b 397 -79 418 -88 409 -79 b 393 -79 396 -79 395 -79 l 348 -89 l 348 148 z m 184 -122 l 108 -138 l 108 99 l 184 115 z m 223 122 l 308 140 l 308 -98 l 223 -115 z', + }, + accidentalBuyukMucennebFlat: { + x_min: 0, + x_max: 277, + y_min: -176, + y_max: 454, + ha: 630, + o: 'm 396 115 b 279 225 387 173 354 225 b 158 171 204 225 164 179 l 160 317 l 336 419 l 336 482 l 161 380 l 161 488 l 336 590 l 336 654 l 163 552 l 164 634 b 144 654 164 645 156 654 l 127 654 b 107 634 115 654 107 645 l 108 520 l 0 456 l 0 393 l 108 456 l 109 350 l 0 285 l 0 222 l 109 287 l 114 -235 b 134 -253 114 -246 122 -253 b 145 -251 138 -253 141 -252 b 323 -114 145 -251 242 -204 b 399 79 377 -52 399 20 b 396 115 399 92 397 104 z m 297 58 b 255 -85 297 36 291 -30 b 154 -184 230 -122 181 -163 l 158 96 b 240 153 161 109 181 153 b 297 73 292 153 297 104 b 297 58 297 66 297 62 z', + }, + accidentalBakiyeFlat: { + x_min: 0, + x_max: 277, + y_min: -176, + y_max: 454, + ha: 630, + o: 'm 396 115 b 279 225 387 173 354 225 b 158 171 204 225 164 179 l 161 348 l 336 452 l 336 516 l 161 413 l 164 634 b 144 654 164 645 156 654 l 127 654 b 107 634 115 654 107 645 l 109 382 l 0 318 l 0 255 l 109 318 l 114 -235 b 134 -253 114 -246 122 -253 b 145 -251 138 -253 143 -252 b 323 -114 145 -251 242 -204 b 399 79 377 -52 399 20 b 396 115 399 92 397 104 z m 297 58 b 255 -85 297 36 291 -30 b 156 -184 230 -122 183 -163 l 158 96 b 240 153 161 109 181 153 b 297 73 292 153 297 104 b 297 58 297 66 297 62 z', + }, + accidentalKucukMucennebSharp: { + x_min: 0, + x_max: 348, + y_min: -316, + y_max: 318, + ha: 634, + o: 'm 494 121 b 482 125 491 124 487 125 b 478 124 481 125 480 124 l 269 68 l 269 127 l 412 164 b 425 181 420 167 425 173 l 425 266 b 418 282 425 272 422 279 b 406 285 415 285 410 285 b 402 285 405 285 403 285 l 269 249 l 269 458 l 232 458 l 232 239 l 89 200 b 76 181 81 197 76 190 l 76 98 b 84 84 76 92 79 86 b 95 79 86 81 91 79 b 99 81 96 79 98 81 l 232 115 l 232 58 l 14 -3 b 0 -20 6 -6 0 -12 l 0 -104 b 7 -118 0 -109 3 -115 b 19 -122 10 -121 14 -122 b 23 -122 20 -122 22 -122 l 232 -66 l 232 -124 l 89 -163 b 76 -180 81 -166 76 -171 l 76 -264 b 84 -279 76 -269 79 -276 b 95 -282 86 -282 91 -282 b 99 -282 96 -282 98 -282 l 232 -246 l 232 -455 l 269 -455 l 269 -236 l 412 -199 b 425 -180 420 -196 425 -189 l 425 -95 b 418 -81 425 -89 422 -84 b 406 -76 415 -78 410 -76 b 402 -78 405 -76 403 -78 l 269 -114 l 269 -55 l 487 4 b 501 22 495 7 501 13 l 501 107 b 494 121 501 112 498 118 z', + }, + articAccentAbove: { + x_min: 0, + x_max: 361, + y_min: 0, + y_max: 235, + ha: 235, + o: 'm 26 337 b 20 338 24 337 22 338 b 0 318 9 338 0 330 l 0 285 b 14 266 0 276 7 269 l 323 170 l 14 72 b 0 53 7 69 0 62 l 0 20 b 20 0 0 9 9 0 b 26 1 22 0 24 1 l 505 150 b 520 170 513 153 520 161 b 505 189 520 179 513 186 z', + }, + articAccentBelow: { + x_min: 0, + x_max: 361, + y_min: -235, + y_max: 0, + ha: 235, + o: 'm 26 -1 b 20 0 24 -1 22 0 b 0 -20 9 0 0 -9 l 0 -53 b 14 -72 0 -62 7 -69 l 323 -168 l 14 -266 b 0 -285 7 -269 0 -276 l 0 -318 b 20 -338 0 -330 9 -338 b 26 -337 22 -338 24 -337 l 505 -189 b 520 -168 513 -186 520 -177 b 505 -150 520 -160 513 -153 z', + }, + articTenutoAbove: { + x_min: 0, + x_max: 316, + y_min: 0, + y_max: 46, + ha: 46, + o: 'm 20 66 b 0 46 9 66 0 58 l 0 20 b 20 0 0 9 9 0 l 435 0 b 455 20 446 0 455 9 l 455 46 b 435 66 455 58 446 66 z', + }, + articTenutoBelow: { + x_min: 0, + x_max: 316, + y_min: -46, + y_max: 0, + ha: 46, + o: 'm 20 0 b 0 -20 9 0 0 -9 l 0 -46 b 20 -66 0 -58 9 -66 l 435 -66 b 455 -46 446 -66 455 -58 l 455 -20 b 435 0 455 -9 446 0 z', + }, + articStaccatoAbove: { + x_min: -0.25, + x_max: 78.25, + y_min: -0.25, + y_max: 78, + ha: 78.25, + o: 'm 16 16 b 96 16 39 -6 73 -6 b 96 95 118 39 118 73 b 16 95 73 118 39 118 b 16 16 -6 73 -6 39 z', + }, + articStaccatoBelow: { + x_min: -0.25, + x_max: 78.25, + y_min: -78.25, + y_max: 0, + ha: 78.25, + o: 'm 16 -96 b 96 -96 39 -118 73 -118 b 96 -17 118 -73 118 -39 b 16 -17 73 6 39 6 b 16 -96 -6 -39 -6 -73 z', + }, + articStaccatissimoAbove: { + x_min: 0, + x_max: 127, + y_min: 0, + y_max: 248, + ha: 248, + o: 'm 163 357 b 150 353 154 357 150 353 l 99 300 b 92 295 96 297 95 295 b 85 300 89 295 88 297 l 35 353 b 22 357 35 353 30 357 b 0 338 13 357 0 351 b 73 22 0 323 73 22 b 92 0 75 16 78 0 b 111 22 107 0 109 16 b 183 338 111 22 183 323 b 163 357 183 351 171 357 z', + }, + articStaccatissimoBelow: { + x_min: 0, + x_max: 127, + y_min: -248, + y_max: 0, + ha: 248, + o: 'm 20 -357 b 33 -353 29 -357 33 -353 l 84 -300 b 91 -295 86 -297 88 -295 b 98 -300 94 -295 95 -297 l 148 -353 b 161 -357 148 -353 153 -357 b 183 -338 170 -357 183 -351 b 109 -22 183 -323 109 -22 b 91 0 108 -16 105 0 b 72 -22 76 0 73 -16 b 0 -338 72 -22 0 -323 b 20 -357 0 -351 12 -357 z', + }, + articMarcatoAbove: { + x_min: 1, + x_max: 296, + y_min: 0, + y_max: 253, + ha: 253, + o: 'm 36 10 l 173 239 l 298 10 b 317 0 301 4 310 0 l 408 0 b 426 20 419 0 426 9 b 425 30 426 23 426 27 l 230 356 b 213 364 226 361 222 363 b 196 356 207 364 199 361 l 1 30 z', + }, + articMarcatoBelow: { + x_min: 0, + x_max: 295, + y_min: -253, + y_max: 0, + ha: 253, + o: 'm 390 -10 l 253 -239 l 128 -10 b 109 0 125 -4 117 0 l 19 0 b 0 -20 7 0 0 -9 b 1 -30 0 -23 0 -27 l 196 -356 b 213 -364 200 -361 204 -363 b 230 -356 219 -364 228 -361 l 425 -30 z', + }, + fermataAbove: { + x_min: 0, + x_max: 622, + y_min: 0, + y_max: 368, + ha: 368, + o: 'm 778 374 b 448 530 642 521 523 530 b 120 374 373 530 255 521 b 0 65 49 297 0 143 b 20 19 0 37 6 19 b 161 265 60 19 40 143 b 445 373 268 372 410 373 b 448 373 446 373 446 373 b 451 373 449 373 449 373 b 734 265 485 373 628 372 b 876 19 855 143 835 19 b 896 65 890 19 896 36 b 778 374 896 143 848 298 z m 348 99 b 448 0 348 45 393 0 b 547 99 503 0 547 45 b 448 199 547 154 503 199 b 348 99 393 199 348 154 z', + }, + fermataBelow: { + x_min: 0, + x_max: 622, + y_min: -368, + y_max: 0, + ha: 368, + o: 'm 778 -374 b 896 -65 848 -298 896 -143 b 876 -19 896 -36 890 -19 b 734 -265 835 -19 855 -143 b 451 -373 628 -372 485 -373 b 448 -373 449 -373 449 -373 b 445 -373 446 -373 446 -373 b 161 -265 410 -373 268 -372 b 20 -19 40 -143 60 -19 b 0 -65 6 -19 0 -37 b 120 -374 0 -143 49 -297 b 448 -530 255 -521 373 -530 b 778 -374 523 -530 642 -521 z m 348 -99 b 448 -199 348 -154 393 -199 b 547 -99 503 -199 547 -154 b 448 0 547 -45 503 0 b 348 -99 393 0 348 -45 z', + }, + fermataLongAbove: { + x_min: 0, + x_max: 623, + y_min: 0, + y_max: 368, + ha: 368, + o: 'm 40 0 l 40 399 l 858 399 l 858 0 l 897 0 l 897 510 b 877 530 897 521 888 530 l 20 530 b 0 510 9 530 0 521 l 0 0 z m 350 148 b 449 49 350 94 395 49 b 547 148 504 49 547 94 b 449 248 547 203 504 248 b 350 148 395 248 350 203 z', + }, + fermataLongBelow: { + x_min: 0, + x_max: 623, + y_min: -368, + y_max: 0, + ha: 368, + o: 'm 0 -510 b 20 -530 0 -521 9 -530 l 877 -530 b 897 -510 888 -530 897 -521 l 897 0 l 858 0 l 858 -399 l 40 -399 l 40 0 l 0 0 z m 350 -148 b 449 -248 350 -203 395 -248 b 547 -148 504 -248 547 -203 b 449 -49 547 -94 504 -49 b 350 -148 395 -49 350 -94 z', + }, + fermataVeryLongAbove: { + x_min: 0, + x_max: 842, + y_min: 0, + y_max: 549, + ha: 549, + o: 'm 276 0 l 276 399 l 936 399 l 936 0 l 976 0 l 976 510 b 956 530 976 521 968 530 l 256 530 b 236 510 245 530 236 521 l 236 0 z m 507 148 b 606 49 507 94 552 49 b 706 148 661 49 706 94 b 606 248 706 203 661 248 b 507 148 552 248 507 203 z m 40 0 l 40 661 l 1172 661 l 1172 0 l 1212 0 l 1212 772 b 1192 791 1212 783 1204 791 l 20 791 b 0 772 9 791 0 783 l 0 0 z', + }, + fermataVeryLongBelow: { + x_min: 0, + x_max: 842, + y_min: -549, + y_max: 0, + ha: 549, + o: 'm 236 -510 b 256 -530 236 -521 245 -530 l 956 -530 b 976 -510 968 -530 976 -521 l 976 0 l 936 0 l 936 -399 l 276 -399 l 276 0 l 236 0 z m 507 -148 b 606 -248 507 -203 552 -248 b 706 -148 661 -248 706 -203 b 606 -49 706 -94 661 -49 b 507 -148 552 -49 507 -94 z m 0 -772 b 20 -791 0 -783 9 -791 l 1192 -791 b 1212 -772 1204 -791 1212 -783 l 1212 0 l 1172 0 l 1172 -661 l 40 -661 l 40 0 l 0 0 z', + }, + fermataShortAbove: { + x_min: 0, + x_max: 642, + y_min: 0, + y_max: 454, + ha: 454, + o: 'm 363 148 b 462 49 363 94 408 49 b 562 148 517 49 562 94 b 462 248 562 203 517 248 b 363 148 408 248 363 203 z m 477 645 b 461 654 474 649 467 654 b 445 645 455 654 448 649 l 4 32 b 0 20 3 29 0 23 b 20 0 0 9 9 0 l 82 0 b 98 9 88 0 95 4 l 461 514 l 827 9 b 842 0 829 4 837 0 l 904 0 b 924 20 916 0 924 9 b 920 32 924 23 922 29 z', + }, + fermataShortBelow: { + x_min: 0, + x_max: 642, + y_min: -454, + y_max: 0, + ha: 454, + o: 'm 363 -148 b 462 -248 363 -203 408 -248 b 562 -148 517 -248 562 -203 b 462 -49 562 -94 517 -49 b 363 -148 408 -49 363 -94 z m 920 -32 b 924 -20 922 -29 924 -23 b 904 0 924 -9 916 0 l 842 0 b 827 -9 837 0 829 -4 l 461 -514 l 98 -9 b 82 0 95 -4 88 0 l 20 0 b 0 -20 9 0 0 -9 b 4 -32 0 -23 3 -29 l 445 -645 b 461 -654 448 -649 455 -654 b 477 -645 467 -654 474 -649 z', + }, + breathMarkComma: { + x_min: 0, + x_max: 191, + y_min: 0, + y_max: 321, + ha: 321, + o: 'm 82 0 b 275 285 215 92 275 183 b 115 462 275 396 212 462 b 0 356 46 462 0 413 b 115 246 0 294 53 246 b 181 258 157 246 177 256 b 192 261 184 259 189 261 b 199 259 194 261 196 261 b 203 245 202 258 203 253 b 48 43 203 183 147 112 z', + }, + caesura: { + x_min: 0, + x_max: 380, + y_min: 0, + y_max: 490, + ha: 490, + o: 'm 285 706 b 285 706 285 706 285 706 b 271 696 279 706 274 701 l 1 22 b 0 16 0 20 0 17 b 16 0 0 7 7 0 l 50 0 b 65 10 56 0 62 4 l 334 684 b 336 690 334 685 336 688 b 320 706 336 698 328 706 z m 213 22 b 212 16 213 20 212 17 b 228 0 212 7 219 0 l 262 0 b 276 10 268 0 274 4 l 546 684 b 547 690 547 685 547 688 b 531 706 547 698 540 706 l 497 706 b 482 696 491 706 485 701 z', + }, + caesuraCurved: { + x_min: 0, + x_max: 368, + y_min: 0, + y_max: 491, + ha: 491, + o: 'm 262 707 b 245 693 253 707 246 701 b 1 26 233 603 177 348 b 0 17 0 23 0 20 b 16 0 0 9 6 0 b 30 7 22 0 27 3 b 318 687 259 341 304 602 b 318 690 318 688 318 688 b 301 707 318 698 310 707 z m 474 707 b 458 693 465 707 459 701 b 213 26 446 603 389 348 b 212 19 212 23 212 20 b 229 0 212 9 219 0 b 243 7 235 0 240 3 b 530 687 472 341 516 602 b 530 690 530 688 530 688 b 514 707 530 698 523 707 z', + }, + restMaxima: { + x_min: 0, + x_max: 450, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 158 -360 b 180 -338 170 -360 180 -350 l 180 338 b 158 360 180 350 170 360 l 22 360 b 0 338 9 360 0 350 l 0 -338 b 22 -360 0 -350 9 -360 z m 626 -360 b 648 -338 638 -360 648 -350 l 648 338 b 626 360 648 350 638 360 l 490 360 b 468 338 477 360 468 350 l 468 -338 b 490 -360 468 -350 477 -360 z', + }, + restDoubleWhole: { + x_min: 0, + x_max: 125, + y_min: -11, + y_max: 262, + ha: 273, + o: 'm 158 -16 b 180 6 171 -16 180 -6 l 180 356 b 158 377 180 367 171 377 l 22 377 b 0 356 10 377 0 367 l 0 6 b 22 -16 0 -6 10 -16 z', + }, + restWhole: { + x_min: 0, + x_max: 325, + y_min: -131, + y_max: 5, + ha: 136, + o: 'm 20 7 b 0 -13 9 7 0 -1 l 0 -168 b 20 -189 0 -180 9 -189 l 448 -189 b 468 -168 459 -189 468 -180 l 468 -13 b 448 7 468 -1 459 7 z', + }, + restWholeLegerLine: { + x_min: -139, + x_max: 464, + y_min: -122, + y_max: 14, + ha: 136, + o: 'm 449 20 l 19 20 l -200 20 l -200 -20 l 0 -20 l 0 -156 b 19 -176 0 -167 7 -176 l 449 -176 b 468 -156 461 -176 468 -167 l 468 -20 l 668 -20 l 668 20 z', + }, + restHalf: { + x_min: 0, + x_max: 325, + y_min: -4, + y_max: 132, + ha: 136, + o: 'm 0 14 b 20 -6 0 -6 0 -6 l 448 -6 b 468 14 468 -6 468 -6 l 468 170 b 448 190 468 190 468 190 l 20 190 b 0 170 0 190 0 190 z', + }, + restHalfLegerLine: { + x_min: -139, + x_max: 464, + y_min: -14, + y_max: 122, + ha: 136, + o: 'm 668 20 l 468 20 l 468 156 b 449 176 468 167 461 176 l 19 176 b 0 156 7 176 0 167 l 0 20 l -200 20 l -200 -20 l 19 -20 l 449 -20 l 668 -20 z', + }, + restQuarter: { + x_min: 0, + x_max: 235, + y_min: -331, + y_max: 401, + ha: 732, + o: 'm 331 -239 b 323 -229 330 -238 327 -235 l 157 -24 b 154 -16 156 -23 154 -19 b 157 -3 154 -12 156 -6 l 304 219 b 307 229 305 222 307 226 l 307 242 b 302 253 307 246 305 251 l 69 569 b 55 577 69 569 63 577 b 43 573 50 577 48 576 b 36 559 37 569 36 563 b 40 543 36 550 40 543 l 150 393 b 154 376 153 389 154 383 b 150 359 154 370 153 363 l 4 137 b 1 125 3 134 1 128 l 1 112 b 6 101 1 108 3 104 l 167 -99 b 131 -95 161 -98 148 -95 b 49 -124 107 -95 75 -101 b 0 -229 17 -153 0 -193 b 16 -285 0 -249 4 -269 b 154 -468 46 -331 154 -468 b 171 -477 154 -468 161 -477 b 180 -474 174 -477 177 -477 b 190 -456 187 -468 190 -462 b 186 -444 190 -451 187 -446 b 135 -353 181 -436 135 -353 b 125 -307 135 -353 125 -333 b 150 -246 125 -288 131 -265 b 206 -223 167 -229 187 -223 b 252 -236 225 -223 240 -229 l 308 -272 b 320 -275 308 -272 314 -275 b 334 -268 325 -275 330 -274 b 338 -255 337 -262 338 -259 b 334 -243 338 -251 337 -248 z', + }, + rest8th: { + x_min: 0, + x_max: 276, + y_min: -255, + y_max: 204, + ha: 459, + o: 'm 384 292 b 379 294 383 292 380 294 b 360 282 370 294 363 289 b 245 141 354 274 310 189 b 180 112 226 127 203 117 b 206 181 196 131 206 154 b 104 284 206 238 160 284 b 0 181 46 284 0 238 b 65 85 0 137 27 101 b 144 68 86 75 115 68 b 269 109 186 68 230 81 b 320 157 287 122 304 140 l 156 -356 l 194 -367 l 396 268 b 397 275 397 269 397 272 b 384 292 397 282 393 288 z', + }, + rest16th: { + x_min: 1, + x_max: 344, + y_min: -507, + y_max: 204, + ha: 711, + o: 'm 494 268 b 495 275 495 271 495 272 b 482 292 495 282 491 289 b 475 294 480 294 477 294 b 456 282 467 294 461 289 b 285 115 422 213 364 135 b 310 184 302 135 310 158 b 203 284 310 240 259 284 b 104 177 145 281 104 233 b 171 84 105 134 134 98 b 252 69 197 72 225 69 b 423 164 324 72 380 108 l 423 164 l 359 -65 b 183 -245 338 -132 256 -226 b 207 -176 199 -225 207 -200 b 102 -76 207 -118 158 -76 b 1 -183 45 -76 1 -125 b 69 -275 1 -226 32 -262 b 150 -289 96 -287 121 -289 b 321 -194 222 -287 278 -251 l 174 -720 l 213 -730 z', + }, + rest32nd: { + x_min: 0, + x_max: 391, + y_min: -507, + y_max: 460, + ha: 967, + o: 'm 217 71 b 408 171 348 71 402 161 l 354 -46 b 184 -240 323 -121 268 -217 b 204 -171 200 -220 204 -197 b 102 -76 204 -114 158 -76 b 0 -177 46 -76 0 -120 b 140 -288 0 -252 63 -288 b 320 -186 216 -288 276 -246 l 189 -721 l 228 -730 l 562 638 b 563 644 563 639 563 642 b 549 661 563 652 557 658 b 543 662 547 662 544 662 b 524 649 534 662 528 657 b 361 487 497 589 431 504 b 383 556 379 508 383 530 b 282 652 383 611 338 652 b 179 549 226 652 179 609 b 249 451 179 505 210 464 b 311 439 268 444 288 441 b 330 441 317 439 323 439 b 498 541 400 445 458 485 l 442 310 b 271 117 413 238 351 137 b 292 186 288 138 292 160 b 189 282 292 243 245 282 b 88 180 132 282 88 238 b 217 71 88 112 153 71 z', + }, + rest64th: { + x_min: 0, + x_max: 423, + y_min: -758, + y_max: 464, + ha: 1222, + o: 'm 207 -1083 l 246 -1092 b 608 644 282 -919 605 634 b 609 649 608 647 609 648 b 595 667 609 658 603 665 b 589 668 593 668 592 668 b 569 654 577 668 575 664 b 474 521 563 644 530 573 b 412 487 456 505 435 494 b 432 546 425 503 432 526 b 328 649 432 606 382 649 b 226 546 275 649 226 608 b 360 438 226 465 300 438 b 501 492 419 438 474 465 b 546 546 527 518 533 526 l 547 547 l 500 323 b 399 161 491 300 452 209 b 337 125 382 144 360 132 b 357 184 350 143 357 134 b 253 288 357 235 317 288 b 151 187 190 288 151 236 b 285 76 151 138 183 76 b 471 184 412 76 465 173 l 423 -45 b 324 -204 413 -69 374 -158 b 262 -240 305 -222 284 -233 b 281 -180 274 -223 281 -212 b 177 -78 281 -147 258 -78 b 75 -180 98 -78 75 -153 b 209 -289 75 -207 88 -289 b 395 -181 330 -289 389 -193 l 350 -397 b 248 -564 337 -449 285 -530 b 186 -599 229 -580 207 -592 b 204 -540 197 -583 204 -563 b 102 -438 204 -501 174 -438 b 0 -540 29 -438 0 -501 b 132 -648 0 -579 24 -648 b 320 -540 266 -648 315 -552 z', + }, + rest128th: { + x_min: -1, + x_max: 475, + y_min: -759, + y_max: 717, + ha: 1476, + o: 'm 677 1028 b 664 1032 672 1031 667 1032 b 644 1018 654 1032 649 1028 b 549 886 638 1008 605 937 b 487 851 531 870 510 858 b 507 910 500 868 507 890 b 403 1014 507 971 456 1014 b 301 910 350 1014 301 972 b 435 802 301 829 374 802 b 576 857 494 802 549 829 b 621 910 602 883 608 890 l 622 912 l 575 687 b 474 526 566 664 527 573 b 412 490 456 508 435 497 b 432 549 425 507 432 498 b 328 652 432 599 392 652 b 226 552 265 652 226 600 b 360 441 226 503 258 441 b 546 549 487 441 540 537 l 498 320 b 399 160 488 295 449 207 b 337 125 380 143 359 131 b 356 184 348 141 356 153 b 252 287 356 217 333 287 b 150 184 173 287 150 212 b 284 76 150 157 163 76 b 469 183 405 76 464 171 l 425 -33 b 323 -200 412 -85 360 -166 b 261 -235 304 -216 282 -228 b 279 -176 272 -219 279 -199 b 177 -72 279 -137 249 -72 b 75 -176 104 -72 75 -137 b 207 -284 75 -215 99 -284 b 395 -176 341 -284 390 -187 l 347 -409 b 248 -566 330 -461 282 -533 b 186 -600 229 -582 207 -593 b 204 -541 197 -583 204 -564 b 102 -438 204 -501 174 -438 b -1 -541 29 -438 -1 -503 b 132 -649 -1 -580 24 -649 b 318 -546 256 -649 307 -567 l 206 -1084 l 245 -1093 b 683 1008 281 -920 680 996 b 684 1015 683 1009 684 1014 b 677 1028 684 1020 683 1024 z', + }, + dynamicPiano: { + x_min: -95, + x_max: 317, + y_min: -163, + y_max: 263, + ha: 426, + o: 'm 186 -235 l 186 -206 l 78 -206 l 161 26 l 166 16 b 229 -29 166 16 180 -16 b 256 -32 238 -32 248 -32 b 445 166 336 -32 415 49 b 456 246 454 197 456 223 b 374 373 456 343 396 367 b 356 376 369 374 361 376 b 242 314 311 376 266 338 l 238 310 l 235 315 b 154 377 235 315 204 370 b 138 379 148 377 144 379 b 0 226 91 379 42 346 l 26 213 b 63 301 32 232 46 278 b 102 328 72 314 89 325 b 108 328 104 328 107 328 b 120 325 112 328 117 327 b 127 304 125 321 127 314 b 94 192 127 269 101 206 l -49 -206 l -137 -206 l -137 -235 z m 226 17 b 215 19 223 17 217 17 b 187 81 193 27 187 53 b 204 180 187 125 203 177 b 297 317 217 235 259 295 b 324 325 307 323 315 325 b 336 324 328 325 333 325 b 350 311 341 323 347 317 b 356 278 354 302 356 291 b 333 161 356 239 341 187 b 242 20 314 105 278 37 b 226 17 238 17 230 17 z', + }, + dynamicMezzo: { + x_min: -7, + x_max: 374, + y_min: -2, + y_max: 251, + ha: 253, + o: 'm 488 63 b 467 48 481 50 474 48 b 459 49 464 48 462 48 b 449 65 452 52 449 58 b 461 112 449 76 455 94 b 474 157 464 121 471 150 b 492 281 482 183 492 242 b 491 301 492 288 492 295 b 436 359 484 340 467 359 b 340 307 399 359 359 331 l 337 301 l 334 308 b 272 359 334 308 311 359 b 177 310 232 359 202 343 l 173 304 l 171 311 b 117 360 171 311 153 353 b 96 361 109 361 102 361 b 29 328 60 361 39 340 b -10 252 20 318 0 284 l 12 240 b 68 318 12 240 36 318 b 75 317 71 318 72 318 b 86 295 84 314 86 307 b 59 194 86 275 75 240 b 1 20 59 193 6 33 b 0 13 1 17 0 16 b 3 4 0 10 1 7 b 14 -1 6 1 9 -1 l 36 -1 b 91 -1 58 -1 86 -1 b 107 22 94 -1 101 -1 b 127 99 114 53 121 79 b 235 310 132 121 186 310 b 243 305 238 310 242 308 b 248 289 246 302 248 297 b 216 160 248 265 233 219 b 173 22 194 89 173 22 b 173 16 173 20 173 19 b 176 3 173 12 173 6 b 187 -1 179 0 183 -1 l 266 -1 b 282 16 272 -1 279 0 b 284 26 282 17 284 22 b 392 302 312 228 359 288 b 396 304 393 302 395 304 l 397 304 b 400 302 399 304 399 302 b 408 289 403 301 408 297 b 369 140 408 275 399 217 b 356 75 360 117 356 95 b 370 23 356 55 360 37 b 428 -3 382 6 408 -3 b 536 99 492 -3 517 49 b 539 108 537 102 537 105 l 514 120 b 488 63 514 120 498 81 z', + }, + dynamicForte: { + x_min: -137, + x_max: 334, + y_min: -193, + y_max: 421, + ha: 614, + o: 'm -122 -86 b -197 -161 -161 -86 -197 -122 b -81 -278 -197 -236 -147 -278 b 35 -228 -35 -278 -1 -264 b 202 173 98 -164 167 50 b 238 297 215 219 228 264 l 238 300 l 341 300 b 356 314 350 300 356 305 l 356 346 b 341 360 356 354 350 360 l 256 360 l 256 364 b 330 554 297 511 308 537 b 359 566 341 563 351 566 b 366 564 361 566 364 564 b 380 553 373 563 377 559 b 382 546 382 550 382 549 b 373 528 382 539 379 531 b 351 478 359 517 351 498 b 354 458 351 471 353 465 b 384 426 359 445 370 432 b 410 420 390 423 400 420 b 445 431 420 420 432 423 b 478 472 459 438 474 456 b 481 497 481 480 481 488 b 467 550 481 514 477 533 b 376 605 455 572 422 598 b 351 606 369 606 360 606 b 225 553 317 606 272 595 b 122 363 187 520 154 456 l 122 360 l 13 360 b -1 346 4 360 -1 354 l -1 314 b 13 300 -1 305 4 300 l 102 300 l 102 294 b 66 140 88 236 76 187 b 24 -35 55 86 42 32 l 20 -52 b -53 -235 -10 -170 -19 -212 b -78 -242 -60 -239 -69 -242 b -98 -235 -85 -242 -92 -239 b -105 -222 -102 -232 -105 -228 b -105 -219 -105 -220 -105 -220 b -94 -204 -104 -213 -101 -207 b -58 -144 -66 -193 -58 -167 b -122 -86 -58 -124 -71 -86 z', + }, + dynamicRinforzando: { + x_min: -12, + x_max: 230, + y_min: 0, + y_max: 254, + ha: 254, + o: 'm 272 364 b 200 341 239 364 212 348 b 168 310 187 333 177 321 l 164 304 b 109 363 164 304 151 353 b 88 366 102 364 95 366 b 22 331 52 366 32 343 b -17 255 13 321 -7 287 l 4 243 b 60 321 4 243 29 321 b 68 320 63 321 65 321 b 78 297 75 317 78 308 b 49 180 78 272 65 230 l 0 23 b 0 17 0 22 0 20 b 3 4 0 13 0 7 b 14 0 6 1 10 0 l 94 0 b 109 17 99 0 107 1 b 111 27 109 19 111 23 b 209 302 140 230 186 279 b 225 311 215 308 220 311 b 229 310 226 311 228 311 b 233 304 233 307 233 305 b 233 301 233 302 233 301 b 216 268 220 291 216 279 b 225 243 216 259 219 249 b 262 229 235 232 249 229 b 304 242 279 229 295 235 b 331 308 320 255 331 275 b 272 364 331 341 304 364 z', + }, + dynamicSforzando: { + x_min: 0, + x_max: 208, + y_min: -5, + y_max: 263, + ha: 268, + o: 'm 242 328 b 217 289 222 317 217 300 b 258 249 217 274 230 249 b 298 284 285 249 295 269 b 300 295 300 287 300 291 b 189 379 300 328 272 379 b 49 259 92 379 49 315 b 99 173 49 229 59 196 b 164 137 117 163 140 151 b 194 88 189 122 194 102 b 124 24 194 73 177 24 b 72 46 82 24 72 39 b 73 49 72 48 72 49 b 96 96 78 52 96 62 b 50 150 96 134 72 150 b 0 91 29 150 0 134 b 124 -7 0 26 49 -7 b 282 111 199 -7 282 24 b 171 239 282 197 207 219 b 128 292 135 259 128 268 b 193 347 128 317 156 347 b 242 328 230 347 242 328 z', + }, + dynamicZ: { + x_min: -42, + x_max: 239, + y_min: -1, + y_max: 258, + ha: 259, + o: 'm 229 292 b 235 288 232 292 233 291 b 236 284 236 285 236 285 b 233 278 236 281 235 279 b -42 55 232 276 -4 85 b -60 24 -56 43 -60 33 b -50 4 -60 12 -50 4 b -35 0 -45 1 -40 0 b 9 29 -14 0 1 19 b 50 69 17 43 26 69 b 89 35 75 69 81 50 b 170 -1 104 10 137 -1 b 243 22 197 -1 223 6 b 304 147 288 56 304 118 b 264 196 304 176 294 196 b 226 156 239 196 226 174 b 251 117 226 128 249 122 b 251 108 251 114 251 111 b 243 79 251 98 249 88 b 212 56 236 68 223 56 b 202 59 209 56 204 56 b 163 92 194 63 186 75 b 108 122 140 109 114 120 b 105 125 105 124 105 124 b 107 128 105 127 107 128 b 312 304 107 128 302 294 b 341 340 324 315 336 327 b 344 347 343 341 344 346 l 344 356 b 333 369 343 367 336 369 l 331 369 l 262 363 b 217 361 245 361 230 361 b 156 366 193 361 174 363 b 114 372 147 367 125 372 b 107 370 111 372 108 370 b 86 344 98 367 89 360 b 37 222 72 265 42 232 b 37 219 37 220 37 220 b 50 207 37 213 43 207 l 66 207 b 81 225 75 207 76 215 b 108 291 85 235 105 285 b 118 297 111 297 112 297 b 167 289 125 295 144 291 b 181 289 171 289 177 289 b 229 292 202 289 222 291 z', + }, + ornamentTrill: { + x_min: -12, + x_max: 383, + y_min: 0, + y_max: 383, + ha: 383, + o: 'm 464 396 b 376 359 408 396 376 359 l 364 370 b 346 377 357 377 346 377 l 197 377 l 246 528 b 246 531 246 530 246 531 b 226 552 246 541 236 552 l 213 552 b 199 544 209 552 202 547 b 124 482 196 541 130 487 b 117 471 118 478 117 471 b 84 377 117 471 102 431 l 3 377 b -17 360 -14 377 -17 360 l -17 341 b 3 324 -17 325 3 324 l 66 324 b 0 85 35 229 0 117 b 92 0 0 16 48 0 b 186 35 137 0 186 35 b 194 13 186 35 190 24 b 212 0 199 1 212 0 l 276 0 b 298 16 295 0 298 16 l 298 43 b 321 147 298 75 321 147 l 382 284 b 412 325 382 284 396 311 b 446 341 425 336 438 341 b 452 340 448 341 451 341 b 428 288 432 327 428 305 b 485 233 428 271 446 233 b 552 308 534 233 552 264 b 464 396 552 353 520 396 z m 222 143 b 147 78 210 104 171 78 b 137 79 143 78 140 78 b 121 115 125 85 121 99 b 137 190 121 148 137 190 l 180 324 l 275 324 b 279 320 279 324 279 320 b 222 143 279 320 235 187 z', + }, + ornamentTurn: { + x_min: 0, + x_max: 456, + y_min: 0, + y_max: 232, + ha: 232, + o: 'm 527 334 b 442 269 488 334 442 312 b 501 204 442 228 468 204 b 570 226 533 204 540 226 b 613 164 598 226 613 204 l 613 163 b 550 98 613 127 586 98 b 448 143 508 98 485 109 l 328 255 l 298 284 b 174 334 262 317 223 334 b 0 170 92 334 0 278 b 131 0 0 68 58 0 b 215 65 170 0 215 22 b 156 130 215 107 189 130 b 86 108 124 130 117 108 b 43 170 59 108 43 130 l 43 171 b 108 236 43 207 72 236 b 209 192 150 236 171 225 l 328 79 l 360 50 b 482 0 396 17 433 0 b 657 164 564 0 657 56 b 527 334 657 266 600 334 z', + }, + ornamentTurnSlash: { + x_min: 0, + x_max: 456, + y_min: -80, + y_max: 313, + ha: 393, + o: 'm 527 334 b 442 269 488 334 442 312 b 501 204 442 228 468 204 b 570 226 533 204 540 226 b 613 164 598 226 613 204 l 613 163 b 550 98 613 127 586 98 b 448 143 508 98 485 109 l 354 230 l 354 431 b 336 451 354 442 347 451 l 323 451 b 302 431 311 451 302 442 l 302 279 l 298 284 b 174 334 262 317 223 334 b 0 170 92 334 0 278 b 131 0 0 68 58 0 b 215 65 170 0 215 22 b 156 130 215 107 189 130 b 86 108 124 130 117 108 b 43 170 59 108 43 130 l 43 171 b 108 236 43 207 72 236 b 209 192 150 236 171 225 l 302 104 l 302 -96 b 323 -115 302 -108 311 -115 l 336 -115 b 354 -96 347 -115 354 -108 l 354 55 l 360 50 b 482 0 396 17 433 0 b 657 164 564 0 657 56 b 527 334 657 266 600 334 z', + }, + ornamentMordent: { + x_min: 0, + x_max: 473, + y_min: -77, + y_max: 316, + ha: 393, + o: 'm 647 302 l 562 166 l 446 347 b 429 357 444 353 435 357 b 413 347 423 357 416 353 l 363 262 l 363 435 b 343 455 363 446 354 455 l 331 455 b 311 435 320 455 311 446 l 311 173 l 310 171 l 203 347 b 186 357 200 353 192 357 b 168 347 180 357 171 353 l 0 69 l 35 48 l 120 189 l 226 10 b 243 0 229 4 238 0 b 261 10 249 0 258 4 l 311 95 l 311 -91 b 331 -111 311 -102 320 -111 l 343 -111 b 363 -91 354 -111 363 -102 l 363 184 l 366 189 l 478 10 b 495 0 481 4 490 0 b 513 10 501 0 510 4 l 681 281 z', + }, + ornamentShortTrill: { + x_min: 0, + x_max: 473, + y_min: 0, + y_max: 248, + ha: 248, + o: 'm 647 302 l 562 166 l 446 347 b 431 357 444 353 436 357 b 413 347 425 357 416 353 l 310 171 l 203 347 b 186 357 200 353 192 357 b 168 347 180 357 173 353 l 0 69 l 35 48 l 120 189 l 226 10 b 243 0 229 4 238 0 b 261 10 249 0 258 4 l 366 189 l 478 9 b 495 0 481 3 490 0 b 513 10 501 0 510 4 l 681 281 z', + }, + ornamentTremblement: { + x_min: 0, + x_max: 654, + y_min: 0, + y_max: 248, + ha: 248, + o: 'm 907 302 l 822 166 l 708 348 b 691 357 704 354 701 357 b 674 347 685 357 677 353 l 648 302 l 563 166 l 449 348 b 432 357 446 354 438 357 b 415 347 426 357 418 353 l 415 346 l 311 171 l 203 348 b 186 357 200 354 192 357 b 168 348 177 357 171 354 l 168 347 l 0 69 l 35 48 l 120 190 l 226 10 b 243 0 229 4 238 0 l 245 0 b 261 10 251 0 258 4 l 367 189 l 480 10 b 497 0 482 4 491 0 b 513 10 503 0 510 4 l 625 192 l 739 10 b 756 0 742 4 750 0 b 772 10 762 0 769 4 l 942 282 z', + }, + ornamentPrecompAppoggTrill: { + x_min: 0, + x_max: 680, + y_min: 0, + y_max: 388, + ha: 388, + o: 'm 860 170 l 746 353 b 729 361 743 359 737 361 b 713 351 723 361 716 357 l 685 307 l 600 170 l 487 353 b 481 359 485 356 484 357 b 469 361 478 360 472 361 b 452 351 464 361 455 357 l 348 176 l 240 353 b 223 361 238 359 229 361 b 206 353 215 361 209 359 l 40 76 l 40 541 b 20 559 39 552 30 559 b 0 541 10 559 1 552 l 0 26 b 19 1 0 16 9 4 b 26 0 20 1 24 0 b 48 13 35 0 43 6 l 72 52 l 157 194 l 265 14 b 282 4 268 9 276 4 b 298 14 288 4 295 9 l 405 193 l 517 14 b 534 4 520 9 528 4 b 550 14 540 4 547 9 l 664 196 l 776 14 b 793 4 779 9 788 4 b 811 14 799 4 808 9 l 979 287 l 945 307 z', + }, + ornamentPrecompSlideTrillDAnglebert: { + x_min: 0, + x_max: 662, + y_min: -158, + y_max: 248, + ha: 406, + o: 'm 834 166 l 720 348 b 704 357 717 354 713 357 b 687 348 697 357 690 353 l 661 302 l 660 302 l 575 166 l 461 348 b 455 354 459 350 456 353 b 444 357 452 356 448 357 b 428 347 438 357 431 353 l 323 171 l 215 347 b 213 350 215 348 215 350 b 213 350 213 350 213 350 l 213 351 l 212 351 l 212 353 l 210 353 l 210 353 l 209 354 b 207 354 209 354 207 354 b 197 357 206 356 200 357 b 197 357 197 357 197 357 b 194 357 196 357 196 357 b 180 347 187 357 183 353 l 180 346 l 69 164 b 0 -50 23 88 0 17 b 49 -219 0 -108 16 -163 b 66 -228 52 -223 59 -228 b 76 -225 69 -228 73 -226 b 86 -207 82 -222 86 -215 b 84 -197 86 -204 85 -200 b 40 -52 55 -150 40 -102 b 104 143 40 10 62 73 l 131 190 l 239 10 b 256 0 242 4 249 0 l 256 0 b 272 10 262 0 269 4 l 379 189 l 491 10 b 508 0 494 4 503 0 b 508 0 508 0 508 0 l 508 0 b 526 10 514 0 521 4 l 638 192 l 750 10 b 768 0 755 4 762 0 l 768 0 b 785 10 773 0 782 4 l 785 10 l 953 282 l 919 302 z', + }, + ornamentPrecompSlideTrillBach: { + x_min: 0, + x_max: 662, + y_min: -158, + y_max: 321, + ha: 479, + o: 'm 834 166 l 720 348 b 704 357 716 354 713 357 b 687 348 698 357 690 354 l 660 304 l 660 302 l 632 259 l 632 442 b 612 462 632 454 624 462 l 599 462 b 579 442 588 462 579 454 l 579 173 l 575 166 l 461 348 b 455 356 459 351 458 354 b 445 359 452 357 448 359 b 428 348 439 359 431 354 l 323 171 l 215 347 b 213 350 215 348 213 350 l 213 351 l 212 353 l 210 353 l 210 354 l 207 354 b 197 357 204 356 200 357 b 180 348 189 357 183 354 l 179 346 l 69 164 b 0 -49 23 88 0 19 b 49 -217 0 -107 17 -163 b 66 -228 52 -223 60 -228 b 76 -225 69 -228 73 -226 b 86 -207 82 -222 86 -213 b 84 -197 86 -204 85 -200 b 42 -50 56 -148 42 -101 b 104 144 42 12 62 75 l 131 190 l 239 10 b 256 0 242 4 251 0 b 274 10 262 0 271 4 l 379 190 l 491 10 b 508 0 494 4 503 0 b 526 10 514 0 523 4 l 579 98 l 579 -84 b 599 -104 579 -95 588 -104 l 612 -104 b 632 -84 624 -104 632 -95 l 632 183 l 638 192 l 750 10 b 768 0 753 4 762 0 b 785 10 773 0 782 4 l 953 282 l 919 302 z', + }, + ornamentPrecompTrillSuffixDandrieu: { + x_min: 0, + x_max: 662, + y_min: 0, + y_max: 406, + ha: 406, + o: 'm 904 575 b 887 585 901 580 893 585 b 877 582 884 585 880 583 b 867 564 871 579 867 570 b 870 554 867 562 868 557 b 912 408 897 505 912 458 b 850 213 912 346 891 282 l 822 167 l 714 348 b 697 357 711 354 703 357 b 680 348 691 357 683 354 l 575 168 l 462 348 b 445 357 459 354 451 357 b 428 348 439 357 431 354 l 315 167 l 203 348 b 186 357 200 354 192 357 b 168 348 180 357 171 354 l 0 76 l 35 55 l 120 192 l 233 10 b 249 0 238 4 240 0 b 266 10 255 0 264 4 l 294 55 l 379 192 l 492 9 b 498 3 494 6 495 4 b 508 0 501 1 505 0 b 526 10 514 0 523 4 l 631 186 l 737 13 b 746 3 739 10 743 4 b 756 0 749 1 753 0 b 773 9 762 0 770 3 l 884 193 b 953 406 930 269 953 338 b 904 575 953 464 936 520 z', + }, + ornamentPrecompDoubleCadenceUpperPrefix: { + x_min: 0, + x_max: 857, + y_min: 0, + y_max: 248, + ha: 248, + o: 'm 383 140 b 413 189 399 166 412 187 b 520 10 423 171 516 16 b 537 0 523 4 530 0 b 554 10 543 0 550 4 b 660 189 557 16 649 171 b 772 10 671 173 766 19 b 791 0 778 1 785 0 b 806 10 796 0 802 4 b 919 192 809 16 907 174 l 1031 10 b 1048 0 1035 4 1043 0 l 1048 0 b 1066 10 1054 1 1063 4 l 1066 10 l 1234 282 l 1200 302 l 1115 166 l 1002 348 b 985 357 998 354 994 357 b 968 348 978 357 971 353 l 855 166 b 742 348 845 183 746 341 b 726 357 737 354 732 357 b 708 348 719 357 711 354 b 603 171 704 341 613 189 b 495 348 593 189 498 343 b 478 357 492 353 487 357 b 461 348 469 357 464 353 b 357 173 459 346 393 235 b 213 79 320 111 284 79 b 66 176 143 79 95 112 b 40 279 43 228 40 275 b 20 300 40 291 30 300 b 0 278 9 300 0 289 b 29 161 0 276 3 219 b 213 39 65 81 130 39 b 383 140 297 39 346 73 z', + }, + ornamentPrecompTrillLowerSuffix: { + x_min: 0, + x_max: 565, + y_min: -171, + y_max: 249, + ha: 420, + o: 'm 347 168 l 235 348 b 217 359 230 354 226 359 b 200 348 209 359 203 353 b 3 30 197 344 6 35 b 0 20 0 26 0 24 b 22 0 0 9 10 0 b 37 9 27 0 35 3 l 151 192 b 265 10 161 174 262 13 b 281 0 268 6 272 0 b 298 10 289 0 295 3 l 403 186 l 511 10 b 528 0 516 4 521 0 b 546 10 537 0 541 4 l 698 265 b 775 22 744 202 775 112 b 700 -215 775 -60 752 -144 b 696 -226 697 -219 696 -222 b 704 -243 696 -232 700 -239 b 717 -246 708 -246 713 -246 b 733 -239 723 -246 729 -243 b 814 20 789 -160 814 -69 b 711 312 814 132 773 242 b 696 320 707 317 700 320 b 680 310 691 320 684 318 b 595 168 671 297 602 181 l 488 348 b 471 359 484 354 478 359 b 454 348 464 359 456 353 b 347 168 449 343 357 186 z', + }, + brassMuteClosed: { + x_min: 0, + x_max: 312, + y_min: 0, + y_max: 312, + ha: 312, + o: 'm 22 256 b 0 225 7 256 0 240 b 22 193 0 209 7 193 l 193 193 l 193 22 b 225 0 193 7 209 0 b 256 22 240 0 256 7 l 256 193 l 428 193 b 449 225 442 193 449 209 b 428 256 449 240 442 256 l 256 256 l 256 428 b 225 449 256 442 240 449 b 193 428 209 449 193 442 l 193 256 z', + }, + brassMuteOpen: { + x_min: 0, + x_max: 280, + y_min: 0, + y_max: 280, + ha: 280, + o: 'm 202 403 b 0 202 91 403 0 312 b 202 0 0 91 91 0 b 403 202 312 0 403 91 b 202 403 403 312 312 403 z m 202 40 b 40 202 112 40 40 112 b 202 363 40 291 112 363 b 363 202 291 363 363 291 b 202 40 363 112 291 40 z', + }, + stringsDownBow: { + x_min: 0, + x_max: 315, + y_min: 0, + y_max: 293, + ha: 293, + o: 'm 40 0 l 40 291 l 413 291 l 413 0 l 454 0 l 454 402 b 433 422 454 413 445 422 l 20 422 b 0 402 9 422 0 402 l 0 0 z', + }, + stringsUpBow: { + x_min: 0, + x_max: 262, + y_min: 0, + y_max: 343, + ha: 343, + o: 'm 374 485 b 357 494 372 490 363 494 l 337 494 b 318 481 330 494 321 488 l 189 118 l 59 481 b 40 494 56 488 48 494 l 20 494 b 0 474 9 494 0 485 b 1 467 0 472 1 468 l 170 13 b 189 0 173 6 181 0 b 207 13 196 0 204 6 l 376 467 b 377 474 376 468 377 472 b 374 485 377 477 376 482 z', + }, + stringsHarmonic: { + x_min: 0, + x_max: 181, + y_min: 0, + y_max: 181, + ha: 181, + o: 'm 131 220 b 220 131 181 220 220 181 b 131 40 220 81 181 40 b 40 131 81 40 40 81 b 131 220 40 181 81 220 z m 131 261 b 0 131 59 261 0 203 b 131 0 0 59 59 0 b 261 131 203 0 261 59 b 131 261 261 203 203 261 z', + }, + pluckedSnapPizzicatoAbove: { + x_min: 0, + x_max: 269, + y_min: 0, + y_max: 389, + ha: 389, + o: 'm 213 540 b 194 560 213 552 204 560 b 174 540 183 560 174 552 l 174 386 b 0 193 76 376 0 294 b 194 0 0 86 86 0 b 387 193 301 0 387 86 b 213 386 387 294 311 376 z m 194 40 b 40 193 109 40 40 109 b 174 346 40 271 98 336 l 174 193 b 194 173 174 183 183 173 b 213 193 204 173 213 183 l 213 346 b 347 193 289 336 347 271 b 194 40 347 109 278 40 z', + }, + pluckedSnapPizzicatoBelow: { + x_min: 0, + x_max: 269, + y_min: 0, + y_max: 389, + ha: 389, + o: 'm 213 174 b 387 367 311 184 387 266 b 193 560 387 474 301 560 b 0 367 86 560 0 474 b 174 174 0 266 76 184 l 174 20 b 194 0 174 9 183 0 b 213 20 204 0 213 9 z m 194 520 b 347 367 278 520 347 452 b 213 215 347 289 289 225 l 213 367 b 194 387 213 377 204 387 b 174 367 183 387 174 377 l 174 215 b 40 367 98 225 40 289 b 194 520 40 452 109 520 z', + }, + keyboardPedalPed: { + x_min: 0, + x_max: 981, + y_min: -10, + y_max: 545, + ha: 555, + o: 'm 1354 12 b 1413 78 1385 12 1413 42 b 1354 145 1413 115 1385 145 b 1293 78 1320 145 1293 115 b 1354 12 1293 42 1320 12 z m 1092 88 b 1080 86 1089 86 1084 86 b 1004 203 1037 86 1004 137 b 1107 376 1004 360 1097 374 b 1149 209 1129 336 1149 287 b 1092 88 1149 117 1130 95 z m 752 393 b 795 344 779 393 795 372 b 770 285 795 325 788 304 b 693 203 737 249 697 207 b 688 264 690 225 688 245 b 752 393 688 347 714 393 z m 245 507 b 220 544 245 533 235 544 b 217 544 219 544 219 544 b 186 510 206 546 192 537 b 143 464 179 478 163 464 b 134 465 140 464 137 464 b 102 516 117 467 102 487 b 141 613 102 541 112 576 b 347 721 212 711 315 721 b 356 721 351 721 354 721 b 275 560 344 701 297 616 b 259 495 274 557 259 528 b 272 452 259 480 264 465 b 373 323 297 416 350 354 b 387 284 382 311 387 298 b 350 222 387 265 376 245 b 230 140 301 180 252 154 b 128 39 215 130 128 92 b 134 12 128 30 130 22 b 173 -14 144 -7 157 -14 b 264 40 204 -14 243 17 b 333 98 281 58 302 98 b 389 39 357 98 373 60 b 478 -10 416 1 435 -10 b 622 96 527 -10 559 43 b 740 -10 626 86 667 -10 b 929 95 827 -10 917 85 b 1086 -12 950 37 1018 -12 b 1120 -7 1097 -12 1109 -10 b 1264 213 1212 17 1264 111 b 1263 248 1264 225 1263 236 b 815 664 1228 544 907 647 b 785 668 805 665 795 668 b 779 668 783 668 782 668 b 757 654 769 668 760 665 b 757 649 757 652 757 651 b 786 618 759 629 783 619 b 818 606 796 613 808 611 b 1071 435 1007 534 1066 445 b 909 181 930 386 909 256 b 910 141 909 164 909 151 b 786 78 899 127 844 78 b 708 151 726 78 710 144 b 799 230 711 154 742 181 b 864 350 845 271 864 312 b 757 456 864 410 815 456 b 599 222 644 456 599 328 b 609 141 599 192 602 164 b 563 104 608 140 595 122 b 540 98 556 99 549 98 b 459 140 513 98 480 118 b 397 184 413 189 399 184 b 475 279 403 189 454 226 b 482 311 480 289 482 300 b 449 410 482 359 452 405 b 361 533 442 419 383 503 b 354 560 356 541 354 550 b 386 651 353 588 372 622 b 429 713 405 693 426 710 b 557 592 521 688 557 628 b 549 569 557 582 554 573 b 523 559 540 562 531 559 b 459 592 495 559 469 583 b 425 613 451 600 438 613 b 409 608 419 613 415 612 b 399 586 402 602 399 595 b 399 583 397 585 399 585 b 409 552 399 573 405 562 b 541 458 441 487 492 458 b 608 480 564 458 588 465 b 648 572 632 497 648 531 b 429 778 648 649 589 749 b 351 785 402 782 376 785 b 0 507 130 785 0 615 b 127 366 0 399 68 366 b 245 507 186 366 245 429 z', + }, + keyboardPedalUp: { + x_min: 0, + x_max: 473, + y_min: 0, + y_max: 473, + ha: 473, + o: 'm 99 99 b 164 69 120 79 143 69 b 199 82 177 69 190 73 b 210 114 206 89 210 102 b 206 137 210 122 209 130 b 200 160 203 145 200 154 b 210 179 200 166 203 171 l 245 215 b 285 213 255 225 272 219 l 287 213 l 288 212 b 318 183 301 206 318 196 l 318 134 b 291 102 318 112 308 112 b 258 58 274 92 258 76 b 340 0 258 26 294 0 b 423 58 386 0 423 26 b 390 102 423 76 408 92 b 361 134 373 112 361 112 l 361 183 b 392 212 361 196 379 206 b 395 213 393 212 393 213 b 436 215 408 219 426 225 l 471 179 b 480 161 478 171 480 167 b 474 137 480 154 477 147 b 471 115 472 130 471 122 b 482 82 471 102 474 91 b 517 69 491 73 504 69 b 582 99 539 69 562 79 b 612 164 602 120 612 143 b 599 199 612 177 608 190 b 567 210 592 206 579 210 b 544 206 559 210 552 209 b 521 200 536 203 528 200 b 501 210 514 200 508 203 l 467 245 b 468 285 456 255 462 272 l 468 287 b 469 288 468 287 469 287 b 498 318 475 301 485 318 l 547 318 b 579 291 569 318 569 308 b 624 258 589 274 605 258 b 681 340 655 258 681 294 b 624 423 681 386 655 423 b 579 390 605 423 589 408 b 547 361 569 373 569 361 l 498 361 b 469 392 485 361 475 379 b 468 395 469 393 468 393 b 467 436 462 408 456 426 l 501 471 b 520 480 508 478 514 480 b 544 474 527 480 534 477 b 566 471 552 472 559 471 b 599 482 579 471 590 474 b 612 516 608 491 612 503 b 582 580 612 536 602 560 b 516 612 562 600 537 612 b 482 599 503 612 491 608 b 471 566 474 590 471 579 b 474 544 471 559 472 552 b 480 520 477 534 480 527 b 471 501 480 514 478 508 l 436 467 b 395 468 426 456 408 462 b 392 469 393 468 393 469 b 361 498 379 475 361 485 l 361 547 b 390 579 361 569 373 569 b 423 624 408 589 423 605 b 340 681 423 655 386 681 b 258 624 294 681 258 655 b 291 579 258 605 274 589 b 318 547 308 569 318 569 l 318 498 b 288 469 318 485 301 475 l 287 468 l 285 468 b 245 467 272 462 255 456 l 210 501 b 200 521 203 508 200 514 b 206 544 200 528 203 536 b 210 567 209 552 210 559 b 199 599 210 579 206 592 b 164 612 190 608 177 612 b 99 582 143 612 120 602 b 69 517 79 562 69 539 b 82 482 69 504 73 491 b 115 471 91 474 102 471 b 137 474 122 471 130 472 b 161 480 147 477 154 480 b 180 471 167 480 173 478 l 215 436 b 213 395 225 426 219 408 b 212 392 213 393 212 393 b 183 361 206 379 196 361 l 134 361 b 102 390 112 361 112 373 b 58 423 92 408 76 423 b 0 340 26 423 0 386 b 58 258 0 294 26 258 b 102 291 76 258 92 274 b 134 318 112 308 112 318 l 183 318 b 212 288 196 318 206 301 b 213 287 212 287 213 288 l 213 285 b 215 245 219 272 225 255 l 179 210 b 160 200 171 203 166 200 b 137 206 154 200 145 203 b 114 210 130 209 122 210 b 82 199 102 210 89 206 b 69 164 73 190 69 177 b 99 99 69 143 79 120 z m 276 276 b 249 340 262 291 249 320 b 340 432 249 390 289 432 b 432 340 390 432 432 390 b 405 276 432 320 419 291 b 340 249 390 262 360 249 b 276 276 320 249 291 262 z', + }, + wiggleArpeggiatoUp: { + x_min: -22, + x_max: 242, + y_min: 0, + y_max: 164, + ha: 164, + o: 'm 343 122 b 323 143 343 122 334 132 b 308 148 318 147 312 148 b 298 144 304 148 301 147 b 282 128 295 141 291 137 b 274 124 279 125 276 124 b 265 128 268 124 265 128 b 158 220 265 128 173 207 b 112 236 143 232 127 236 b 43 206 82 236 55 219 l -26 137 b -32 125 -30 132 -32 130 b -26 112 -32 118 -26 112 b -6 92 -26 112 -17 102 b 7 86 -1 88 3 86 b 17 91 12 86 14 88 b 33 107 20 94 24 98 b 42 111 36 109 39 111 b 52 107 48 111 52 107 b 158 16 52 107 144 29 b 204 0 174 4 190 0 b 274 30 235 0 262 17 l 343 99 b 348 111 347 104 348 108 b 343 122 348 118 343 122 z', + }, + repeat1Bar: { + x_min: 0, + x_max: 481, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 693 -181 b 602 -91 693 -131 651 -91 b 511 -181 552 -91 511 -131 b 602 -272 511 -232 552 -272 b 693 -181 651 -272 693 -232 z', + }, + repeat2Bars: { + x_min: 0, + x_max: 735, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 1058 -181 b 968 -91 1058 -131 1017 -91 b 877 -181 917 -91 877 -131 b 968 -272 877 -232 917 -272 b 1058 -181 1017 -272 1058 -232 z m 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 1058 360 l 877 360 l 366 -360 l 547 -360 z', + }, + repeat4Bars: { + x_min: 0, + x_max: 1243, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 1058 360 l 877 360 l 366 -360 l 547 -360 z m 1424 360 l 1243 360 l 732 -360 l 913 -360 z m 1790 360 l 1608 360 l 1097 -360 l 1279 -360 z m 1790 -181 b 1699 -91 1790 -131 1748 -91 b 1608 -181 1649 -91 1608 -131 b 1699 -272 1608 -232 1649 -272 b 1790 -181 1748 -272 1790 -232 z', + }, + repeatBarSlash: { + x_min: 0, + x_max: 481, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 693 360 l 511 360 l 0 -360 l 181 -360 z', + }, + csymDiminished: { + x_min: 0, + x_max: 501, + y_min: 0, + y_max: 501, + ha: 501, + o: 'm 361 721 b 0 361 161 721 0 560 b 361 0 0 161 161 0 b 721 361 560 0 721 161 b 361 721 721 560 560 721 z m 557 164 b 361 82 505 111 435 82 b 164 164 287 82 216 111 b 82 361 111 216 82 287 b 164 557 82 436 111 505 b 361 639 216 611 287 639 b 557 557 436 639 505 611 b 639 361 611 505 639 436 b 557 164 639 287 609 216 z', + }, + csymHalfDiminished: { + x_min: -1, + x_max: 502, + y_min: -1, + y_max: 502, + ha: 503, + o: 'm 723 684 l 684 723 l 596 634 b 361 721 533 688 451 721 b 0 361 161 721 0 560 b 88 125 0 271 33 189 l -1 36 l 36 -1 l 125 88 b 361 0 189 33 271 0 b 721 361 560 0 721 161 b 634 596 721 451 688 533 z m 82 361 b 164 557 82 436 111 505 b 361 639 216 611 287 639 b 537 576 426 639 488 616 l 145 184 b 82 361 105 233 82 295 z m 639 361 b 557 164 639 287 609 216 b 361 82 505 111 435 82 b 184 145 295 82 233 105 l 576 537 b 639 361 616 488 639 426 z', + }, + csymAugmented: { + x_min: 1, + x_max: 321, + y_min: 90, + y_max: 410, + ha: 320, + o: 'm 462 400 l 272 400 l 272 590 l 192 590 l 192 400 l 1 400 l 1 320 l 192 320 l 192 130 l 272 130 l 272 320 l 462 320 z', + }, + csymMajorSeventh: { + x_min: 0, + x_max: 500, + y_min: 10, + y_max: 490, + ha: 480, + o: 'm 360 528 l 585 96 l 135 96 z m 360 706 l 0 14 l 720 14 z', + }, + accidentalNarrowReversedFlat: { + x_min: 0, + x_max: 160, + y_min: -176, + y_max: 452, + ha: 628, + o: 'm 0 84 b 101 -153 0 -26 65 -107 b 196 -249 153 -217 196 -249 b 206 -253 199 -251 202 -253 b 225 -235 216 -253 225 -245 l 230 632 b 212 651 230 642 222 651 l 199 651 b 180 632 189 651 180 642 l 184 204 b 125 217 184 204 171 217 b 0 84 53 217 0 173 z m 145 154 b 184 107 181 154 184 120 l 187 -179 b 114 -72 167 -158 132 -112 b 82 58 86 -13 82 36 b 145 154 82 79 82 154 z', + }, + accidentalNarrowReversedFlatAndFlat: { + x_min: 0, + x_max: 416, + y_min: -176, + y_max: 452, + ha: 628, + o: 'm 462 217 b 330 174 374 217 338 181 l 334 632 b 315 651 334 642 325 651 l 302 651 b 284 632 292 651 284 642 l 289 -235 b 308 -253 289 -245 298 -253 b 320 -249 312 -253 317 -251 b 492 -138 320 -249 433 -194 b 599 84 534 -98 599 -26 b 462 217 599 173 534 217 z m 501 58 b 459 -72 501 36 498 -19 b 327 -179 431 -111 359 -164 l 330 85 l 330 91 b 422 154 330 125 359 154 b 501 58 503 154 501 79 z m 0 84 b 101 -153 0 -26 65 -107 b 196 -249 153 -217 196 -249 b 206 -253 199 -251 202 -253 b 225 -235 216 -253 225 -245 l 230 632 b 212 651 230 642 222 651 l 199 651 b 180 632 189 651 180 642 l 184 204 b 125 217 184 204 171 217 b 0 84 53 217 0 173 z m 145 154 b 184 107 181 154 184 120 l 187 -179 b 114 -72 167 -158 132 -112 b 82 58 86 -13 82 36 b 145 154 82 79 82 154 z', + }, + }, + fontFamily: 'Leland', + resolution: 1000, + generatedOn: '2022-06-26T17:49:33.853Z', +}; + + +/***/ }), + +/***/ "./src/fonts/leland_metrics.ts": +/*!*************************************!*\ + !*** ./src/fonts/leland_metrics.ts ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "LelandMetrics": () => (/* binding */ LelandMetrics) +/* harmony export */ }); +const LelandMetrics = { + name: 'Leland', + smufl: true, + stave: { + padding: 12, + endPaddingMax: 10, + endPaddingMin: 5, + unalignedNotePadding: 10, + }, + accidental: { + noteheadAccidentalPadding: 1, + leftPadding: 2, + accidentalSpacing: 3, + }, + clef: { + default: { + point: 32, + width: 26, + }, + small: { + point: 26, + width: 20, + }, + annotations: { + '8va': { + smuflCode: 'timeSig8', + default: { + point: 18, + treble: { + line: -1.4, + shiftX: 12, + }, + }, + small: { + point: 16, + treble: { + line: -0.2, + shiftX: 8, + }, + }, + }, + '8vb': { + smuflCode: 'timeSig8', + default: { + point: 18, + treble: { + line: 6, + shiftX: 10, + }, + bass: { + line: 3.5, + shiftX: 1, + }, + }, + small: { + point: 16, + treble: { + line: 5.3, + shiftX: 6, + }, + bass: { + line: 3.1, + shiftX: 0.5, + }, + }, + }, + }, + // These may no longer be necessary + lineCount: { + '8': { point: 55, shiftY: 14 }, + '7': { point: 47, shiftY: 8 }, + '6': { point: 32, shiftY: 1 }, + '5': { point: 30, shiftY: -6 }, + '4': { point: 23, shiftY: -12 }, + }, + }, + parenthesis: { + default: { + point: 39, + width: 7, + }, + gracenote: { + point: (39 * 3) / 5, + width: 3, + }, + }, + pedalMarking: { + up: { + point: 40, + }, + down: { + point: 34, + }, + }, + // These are for numeric digits, such as in time signatures + digits: { + // used by timesig + shiftLine: -1, + point: 34, + // used by tuplets + tupletPoint: 22, + shiftY: -6, + }, + articulation: { + articStaccatissimoAbove: { + padding: 2, + }, + articStaccatissimoBelow: { + padding: 2, + }, + }, + tremolo: { + default: { + point: 25, + spacing: 5, + offsetYStemUp: -5, + offsetYStemDown: 5, + offsetXStemUp: 11, + offsetXStemDown: 1, + }, + grace: { + point: 18, + spacing: 4, + offsetYStemUp: -5, + offsetYStemDown: 5, + offsetXStemUp: 7, + offsetXStemDown: 1, + }, + }, + staveRepetition: { + symbolText: { + offsetX: 12, + offsetY: 25, + spacing: 5, + }, + coda: { + offsetY: 25, + }, + segno: { + offsetY: 10, + }, + }, + // noteHead: { + // }, + stem: { + heightAdjustmentForFlag: -3, + // These are stem (Y) offsets to the note heads. To shift the + // noteheads (x-position) themselves, see glyphs.notehead.custom. + noteHead: { + noteheadTriangleUpHalf: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpBlack: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpWhole: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadXHalf: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXBlack: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXWhole: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadHalf: { + offsetYBaseStemUp: -2.55, + offsetYBaseStemDown: 2.65, + }, + noteheadBlack: { + offsetYBaseStemUp: -2, + offsetYBaseStemDown: 2, + }, + noteheadSquareWhite: { + offsetYBaseStemDown: -5, + offsetYBaseStemUp: 5, + }, + }, + }, + // Values under here are used by the Glyph class to reposition and rescale + // glyphs based on their category. This should be the first stop for + // custom font glyph repositioning. + // + // The glyph loader first looks up a specific set of settings based on the + // glyph code, and if not found, uses the defaults from the category. See + // glyphs.textNote for an example of this. + // + // Details in Glyph.lookupFontMetrics. + glyphs: { + coda: { + point: 20, + shiftX: -7, + shiftY: 8, + }, + segno: { + shiftX: -7, + }, + flag: { + shiftX: -0.75, + staveTempo: { + shiftX: -1, + }, + }, + clef: { + gClef: { + default: { scale: 1.1, shiftY: 1 }, + small: { shiftY: 1.5 }, + }, + fClef: { + default: { shiftY: -0.5 }, + }, + }, + ornament: { + ornamentTurn: { + scale: 1.2, + }, + ornamentTurnSlash: { + scale: 1.2, + }, + }, + stringNumber: { + verticalPadding: 8, + stemPadding: 2, + leftPadding: 5, + rightPadding: 6, + }, + stroke: { + arrowheadBlackDown: { + straight: { + shiftX: -4.5, + }, + wiggly: { + shiftX: -1, + shiftY: 1, + }, + }, + arrowheadBlackUp: { + straight: { + shiftX: -0.85, + }, + wiggly: { + shiftX: -1, + shiftY: 1, + }, + }, + }, + textNote: { + point: 34, + breathMarkTick: { + point: 36, + shiftY: 9, + }, + breathMarkComma: { + point: 36, + }, + segno: { + point: 30, + shiftX: -7, + shiftY: 8, + }, + coda: { + point: 20, + shiftX: -7, + shiftY: 8, + }, + ornamentTrill: { + shiftX: -8, + shiftY: 8, + }, + ornamentTurn: { + point: 42, + }, + ornamentTurnSlash: { + point: 42, + }, + ornamentMordent: { + shiftX: -8, + }, + ornamentShortTrill: { + shiftX: -8, + }, + }, + noteHead: { + minPadding: 2, + standard: { + restQuarterStemUp: { + point: 35, + }, + restQuarterStemDown: { + point: 35, + }, + }, + custom: { + noteheadCircleXStemUp: { + shiftX: 1.5, + }, + noteheadCircleXStemDown: { + shiftX: 0.25, + }, + noteheadDiamondHalfStemUp: { + shiftX: 1.5, + }, + noteheadDiamondBlackStemUp: { + shiftX: 1.5, + }, + noteheadDiamondWholeStemUp: { + shiftX: 1, + }, + noteheadXHalfStemUp: { + shiftX: -2, + }, + noteheadXHalfStemDown: { + shiftX: 1, + }, + noteheadXWholeStemUp: { + shiftX: -4, + }, + noteheadXWholeStemDown: { + shiftX: 1, + }, + noteheadSquareWhiteStemDown: { + shiftX: 0.25, + }, + noteheadSquareWhiteStemUp: { + shiftX: -0.75, + }, + noteheadSquareBlackStemUp: { + shiftX: -0.75, + }, + noteheadTriangleUpWholeStemUp: { + shiftX: -0.75, + }, + }, + }, + chordSymbol: { + global: { + superscriptOffset: -400, + subscriptOffset: 300, + kerningOffset: -250, + lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'], + upperKerningText: ['A', 'L'], + spacing: 100, + superSubRatio: 0.66, + }, + csymDiminished: { + scale: 0.8, + leftSideBearing: -32, + advanceWidth: 506, + yOffset: 0, + }, + csymHalfDiminished: { + scale: 0.8, + leftSideBearing: -32, + advanceWidth: 506, + yOffset: 0, + }, + csymAugmented: { + scale: 1, + leftSideBearing: 0, + advanceWidth: 530, + yOffset: 0, + }, + csymParensLeftTall: { + scale: 0.8, + leftSideBearing: -20, + advanceWidth: 184, + yOffset: 250, + }, + csymParensRightTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 189, + yOffset: 250, + }, + csymBracketLeftTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 328, + yOffset: 0, + }, + csymBracketRightTall: { + scale: 0.8, + leftSideBearing: 1, + advanceWidth: 600, + yOffset: 0, + }, + csymParensLeftVeryTall: { + scale: 0.9, + leftSideBearing: 50, + advanceWidth: 121, + yOffset: 350, + }, + csymParensRightVeryTall: { + scale: 0.9, + leftSideBearing: 0, + advanceWidth: 111, + yOffset: 350, + }, + csymDiagonalArrangementSlash: { + scale: 0.6, + leftSideBearing: -1, + advanceWidth: 990, + yOffset: 0, + }, + csymMinor: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 482, + yOffset: 0, + }, + csymMajorSeventh: { + scale: 0.9, + leftSideBearing: 200, + yOffset: 0, + advanceWidth: 600, + }, + accidentalSharp: { + scale: 0.75, + leftSideBearing: 20, + advanceWidth: 250, + yOffset: -302, + }, + accidentalFlat: { + scale: 0.9, + leftSideBearing: -20, + advanceWidth: 226, + yOffset: -184, + }, + }, + jazzOrnaments: { + brassScoop: { + scale: 1.0, + xOffset: -12, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 20, + }, + brassDoitMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 22, + }, + brassFallLipShort: { + scale: 1.0, + xOffset: 16, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 15, + }, + brassLiftMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 5, + stemUpYOffset: 0, + reportedWidth: 5, + }, + brassFallRoughMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 28, + stemUpYOffset: 0, + reportedWidth: 5, + }, + brassBend: { + scale: 1.0, + xOffset: 2, + yOffset: -8, + stemUpYOffset: 25, + reportedWidth: 5, + }, + brassMuteClosed: { + scale: 1.0, + xOffset: 3, + yOffset: -8, + stemUpYOffset: 25, + reportedWidth: 5, + }, + brassMuteOpen: { + scale: 1.0, + xOffset: 3, + yOffset: -7, + stemUpYOffset: 25, + reportedWidth: 5, + }, + brassFlip: { + scale: 1.0, + xOffset: 10, + yOffset: 0, + stemUpYOffset: 7, + reportedWidth: 10, + }, + brassJazzTurn: { + scale: 1.0, + xOffset: 0, + yOffset: 0, + stemUpYOffset: 8, + reportedWidth: 31, + }, + brassSmear: { + scale: 1.0, + xOffset: 10, + yOffset: 0, + stemUpYOffset: 8, + reportedWidth: 5, + }, + }, + tuplet: { + noteHeadOffset: 20, + stemOffset: 10, + bottomLine: 4, + topModifierOffset: 15, + }, + }, +}; + + +/***/ }), + +/***/ "./src/fonts/load_all.ts": +/*!*******************************!*\ + !*** ./src/fonts/load_all.ts ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "loadAllMusicFonts": () => (/* binding */ loadAllMusicFonts) +/* harmony export */ }); +/* harmony import */ var _load_bravura__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./load_bravura */ "./src/fonts/load_bravura.ts"); +/* harmony import */ var _load_custom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./load_custom */ "./src/fonts/load_custom.ts"); +/* harmony import */ var _load_gonville__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./load_gonville */ "./src/fonts/load_gonville.ts"); +/* harmony import */ var _load_leland__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./load_leland */ "./src/fonts/load_leland.ts"); +/* harmony import */ var _load_petaluma__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./load_petaluma */ "./src/fonts/load_petaluma.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// vexflow.js statically bundles & preloads all of our music engraving fonts. + + + + + +// ADD_MUSIC_FONT +// import { loadXXX } from './load_xxx'; +// Populate our font "database" with all our music fonts. +function loadAllMusicFonts() { + (0,_load_bravura__WEBPACK_IMPORTED_MODULE_0__.loadBravura)(); + (0,_load_gonville__WEBPACK_IMPORTED_MODULE_2__.loadGonville)(); + (0,_load_petaluma__WEBPACK_IMPORTED_MODULE_4__.loadPetaluma)(); + (0,_load_custom__WEBPACK_IMPORTED_MODULE_1__.loadCustom)(); + (0,_load_leland__WEBPACK_IMPORTED_MODULE_3__.loadLeland)(); + // ADD_MUSIC_FONT + // loadXXX(); +} + + +/***/ }), + +/***/ "./src/fonts/load_bravura.ts": +/*!***********************************!*\ + !*** ./src/fonts/load_bravura.ts ***! + \***********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "loadBravura": () => (/* binding */ loadBravura) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../font */ "./src/font.ts"); +/* harmony import */ var _bravura_glyphs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bravura_glyphs */ "./src/fonts/bravura_glyphs.ts"); +/* harmony import */ var _bravura_metrics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bravura_metrics */ "./src/fonts/bravura_metrics.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// If you are adding a new music engraving font, search for instances of ADD_MUSIC_FONT throughout the code base. +// To compile your new font into vexflow.js, take a look at src/fonts/load_all.ts +// You can export a font module which can be dynamically loaded by vexflow-core.js (see: Gruntfile.js). +// ADD_MUSIC_FONT +// To add a new music engraving font XXX, make a copy of this file and name it load_xxx.ts. +// Then you will need to generate xxx_glyphs.ts and xxx_metrics.ts. +// xxx_glyphs.ts is created by tools/fonts/fontgen_smufl.js +// xxx_metrics.ts is created by hand. You could copy bravura_metrics.ts and modify/remove/add entries where necessary. + + + +function loadBravura() { + _font__WEBPACK_IMPORTED_MODULE_0__.Font.load('Bravura', _bravura_glyphs__WEBPACK_IMPORTED_MODULE_1__.BravuraFont, _bravura_metrics__WEBPACK_IMPORTED_MODULE_2__.BravuraMetrics); +} + + +/***/ }), + +/***/ "./src/fonts/load_custom.ts": +/*!**********************************!*\ + !*** ./src/fonts/load_custom.ts ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "loadCustom": () => (/* binding */ loadCustom) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../font */ "./src/font.ts"); +/* harmony import */ var _custom_glyphs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./custom_glyphs */ "./src/fonts/custom_glyphs.ts"); +/* harmony import */ var _custom_metrics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./custom_metrics */ "./src/fonts/custom_metrics.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + +function loadCustom() { + _font__WEBPACK_IMPORTED_MODULE_0__.Font.load('Custom', _custom_glyphs__WEBPACK_IMPORTED_MODULE_1__.CustomFont, _custom_metrics__WEBPACK_IMPORTED_MODULE_2__.CustomMetrics); +} + + +/***/ }), + +/***/ "./src/fonts/load_gonville.ts": +/*!************************************!*\ + !*** ./src/fonts/load_gonville.ts ***! + \************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "loadGonville": () => (/* binding */ loadGonville) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../font */ "./src/font.ts"); +/* harmony import */ var _gonville_glyphs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./gonville_glyphs */ "./src/fonts/gonville_glyphs.ts"); +/* harmony import */ var _gonville_metrics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./gonville_metrics */ "./src/fonts/gonville_metrics.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + +function loadGonville() { + _font__WEBPACK_IMPORTED_MODULE_0__.Font.load('Gonville', _gonville_glyphs__WEBPACK_IMPORTED_MODULE_1__.GonvilleFont, _gonville_metrics__WEBPACK_IMPORTED_MODULE_2__.GonvilleMetrics); +} + + +/***/ }), + +/***/ "./src/fonts/load_leland.ts": +/*!**********************************!*\ + !*** ./src/fonts/load_leland.ts ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "loadLeland": () => (/* binding */ loadLeland) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../font */ "./src/font.ts"); +/* harmony import */ var _leland_glyphs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./leland_glyphs */ "./src/fonts/leland_glyphs.ts"); +/* harmony import */ var _leland_metrics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./leland_metrics */ "./src/fonts/leland_metrics.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + +function loadLeland() { + _font__WEBPACK_IMPORTED_MODULE_0__.Font.load('Leland', _leland_glyphs__WEBPACK_IMPORTED_MODULE_1__.LelandFont, _leland_metrics__WEBPACK_IMPORTED_MODULE_2__.LelandMetrics); +} + + +/***/ }), + +/***/ "./src/fonts/load_petaluma.ts": +/*!************************************!*\ + !*** ./src/fonts/load_petaluma.ts ***! + \************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "loadPetaluma": () => (/* binding */ loadPetaluma) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../font */ "./src/font.ts"); +/* harmony import */ var _petaluma_glyphs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./petaluma_glyphs */ "./src/fonts/petaluma_glyphs.ts"); +/* harmony import */ var _petaluma_metrics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./petaluma_metrics */ "./src/fonts/petaluma_metrics.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + +function loadPetaluma() { + _font__WEBPACK_IMPORTED_MODULE_0__.Font.load('Petaluma', _petaluma_glyphs__WEBPACK_IMPORTED_MODULE_1__.PetalumaFont, _petaluma_metrics__WEBPACK_IMPORTED_MODULE_2__.PetalumaMetrics); +} + + +/***/ }), + +/***/ "./src/fonts/petaluma_glyphs.ts": +/*!**************************************!*\ + !*** ./src/fonts/petaluma_glyphs.ts ***! + \**************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "PetalumaFont": () => (/* binding */ PetalumaFont) +/* harmony export */ }); +const PetalumaFont = { + glyphs: { + bracketTop: { + x_min: 0, + x_max: 508, + y_min: 0, + y_max: 370, + ha: 370, + o: 'm 22 0 b 122 0 55 1 89 0 l 157 0 b 713 376 425 0 622 137 b 732 467 724 406 732 436 b 726 514 732 482 730 498 b 711 533 723 528 719 533 b 693 526 707 533 700 530 b 674 498 683 520 678 508 b 635 406 662 467 652 435 b 310 164 560 281 458 193 b 154 151 258 154 206 151 b 39 154 117 151 78 154 b 1 120 17 154 4 145 b 0 84 0 108 0 96 b 0 20 0 63 1 40 b 22 0 0 4 7 0 z', + }, + bracketBottom: { + x_min: 0, + x_max: 496, + y_min: -393, + y_max: 0, + ha: 393, + o: 'm 696 -566 b 711 -539 713 -566 708 -549 b 714 -521 713 -533 714 -527 b 713 -508 714 -517 713 -513 b 661 -327 706 -445 688 -384 b 392 -42 603 -203 513 -109 b 206 0 331 -7 266 0 b 160 -1 190 0 174 -1 b 26 -1 107 -1 66 -3 b 0 -19 12 -1 0 -4 l 0 -23 b 3 -50 1 -32 3 -42 b 1 -86 3 -62 1 -73 b 4 -118 1 -96 1 -108 b 45 -151 10 -145 23 -154 b 180 -143 89 -144 135 -145 b 621 -419 392 -135 523 -236 b 662 -539 641 -456 655 -497 b 696 -566 667 -557 680 -566 z', + }, + barlineTick: { + x_min: 0, + x_max: 56.036101509664164, + y_min: 876.905249806889, + y_max: 1121.5430338167066, + ha: 244.63778400981766, + o: 'm 42 1263 b 66 1287 62 1261 66 1272 b 81 1583 65 1387 72 1485 b 35 1614 82 1610 53 1610 b 14 1591 17 1619 16 1604 b 0 1408 7 1525 0 1459 l 0 1292 b 42 1263 1 1263 23 1266 z', + }, + breathMarkTick: { + x_min: 0, + x_max: 568, + y_min: 0, + y_max: 621, + ha: 621, + o: 'm 258 0 b 278 39 276 0 274 24 b 279 56 279 45 279 50 l 279 73 b 278 117 279 88 278 102 b 281 148 278 127 279 138 b 536 600 312 330 387 487 b 744 719 600 651 670 690 b 815 779 775 730 808 740 b 818 824 818 793 818 808 b 815 868 818 838 818 852 b 796 894 814 881 808 894 b 779 888 791 894 786 893 b 719 864 760 878 739 871 b 372 602 580 806 459 724 b 229 252 298 498 251 383 b 220 268 225 262 222 264 b 209 302 217 279 213 291 b 75 527 181 387 143 467 b 16 563 58 543 39 573 b 0 539 3 557 0 549 b 12 492 0 524 9 507 b 56 400 19 459 22 425 b 163 269 104 367 138 323 b 238 36 197 194 216 115 b 258 0 242 22 243 0 z', + }, + segno: { + x_min: 0, + x_max: 798, + y_min: -65, + y_max: 806, + ha: 871, + o: 'm 16 -94 b 66 -69 39 -92 53 -85 b 177 59 102 -26 138 17 b 543 456 298 192 420 324 b 726 300 615 420 680 373 b 753 217 744 271 753 243 b 655 112 753 170 719 131 b 599 104 636 107 618 104 b 461 173 544 104 495 128 b 432 190 454 183 444 190 b 409 179 425 190 418 187 b 359 118 390 160 373 141 b 341 72 347 101 341 86 b 373 24 341 56 351 40 b 409 6 384 17 396 10 b 550 -13 454 -12 501 -14 b 599 -6 566 -12 583 -10 b 864 213 720 27 806 104 b 886 300 878 242 886 271 b 857 395 886 331 877 363 b 799 467 840 420 821 445 b 648 572 755 513 704 546 b 1110 1083 802 743 955 914 b 1140 1129 1123 1097 1136 1110 b 1149 1148 1142 1135 1149 1142 b 1145 1153 1149 1149 1148 1152 b 1123 1161 1139 1158 1130 1161 b 1109 1156 1119 1161 1113 1159 b 1089 1138 1102 1151 1094 1145 b 946 988 1040 1089 989 1041 b 595 602 834 855 711 732 l 590 598 l 549 615 b 432 793 462 647 432 723 b 534 888 432 851 474 888 b 671 834 588 888 631 864 b 710 818 684 824 696 818 b 724 821 714 818 719 819 b 809 883 757 834 788 852 b 816 901 814 890 816 896 b 802 923 816 910 812 916 b 706 984 770 945 742 971 b 593 1011 668 998 631 1011 b 516 991 567 1011 541 1005 b 333 799 433 949 380 876 b 302 693 312 765 302 729 b 330 589 302 658 311 624 b 469 488 360 533 415 511 b 485 482 475 487 480 485 b 266 249 412 405 338 327 b 121 88 217 196 170 141 b 9 -65 78 40 37 -7 b 0 -85 4 -72 0 -79 b 16 -94 0 -91 4 -94 z m 861 536 b 927 575 890 539 909 557 b 965 628 952 598 965 613 b 926 680 965 644 952 658 b 865 713 900 701 883 713 b 805 667 845 713 828 698 b 768 611 791 649 770 631 b 812 564 766 589 798 582 b 861 536 824 550 840 537 z m 251 350 b 363 436 285 348 353 403 b 354 456 366 448 360 452 b 271 518 327 477 298 497 b 243 528 261 526 252 528 b 210 513 232 528 222 523 b 157 454 190 494 176 472 b 141 428 147 444 141 436 b 158 406 141 420 147 413 b 216 361 180 393 197 376 b 245 350 225 356 235 350 z', + }, + coda: { + x_min: 0, + x_max: 1380, + y_min: -196, + y_max: 1037, + ha: 1233, + o: 'm 1028 -282 b 1057 -245 1045 -282 1053 -261 b 1060 -203 1060 -232 1060 -217 b 1063 9 1060 -132 1061 -62 b 1390 194 1192 22 1303 81 b 1531 543 1467 298 1512 415 b 1532 556 1531 547 1532 552 b 1904 559 1656 557 1780 559 b 1950 582 1920 559 1941 569 b 1987 674 1970 609 1987 638 b 1984 698 1987 681 1986 690 b 1950 700 1973 698 1961 700 l 1941 700 l 1545 696 b 1535 776 1545 723 1541 749 b 1103 1113 1477 996 1326 1107 b 1080 1115 1096 1115 1087 1115 b 1081 1322 1080 1184 1080 1253 b 1079 1467 1083 1371 1081 1418 b 1061 1493 1079 1476 1080 1493 l 1060 1493 b 1028 1467 1044 1490 1031 1485 b 1020 1403 1025 1446 1020 1424 b 1017 1110 1020 1305 1018 1208 l 962 1106 b 569 914 808 1087 671 1035 b 451 683 510 844 472 766 l 161 678 b 118 680 148 678 132 680 b 79 670 101 680 86 678 b 0 544 48 636 29 592 l 37 544 l 429 549 b 428 518 428 539 428 528 b 488 285 428 435 458 360 b 681 81 526 192 593 124 b 946 9 763 40 854 19 b 1008 6 966 7 988 6 b 1005 -137 1008 -42 1005 -89 b 1012 -243 1005 -173 1005 -209 b 1028 -282 1015 -258 1011 -282 z m 1074 690 b 1079 935 1077 772 1077 852 b 1326 855 1166 932 1250 909 b 1446 694 1385 814 1426 759 b 1269 693 1387 694 1328 693 b 1074 690 1204 693 1139 691 z m 577 684 b 766 874 618 763 678 828 b 989 932 837 912 913 923 b 1015 933 998 932 1007 933 b 1014 822 1015 896 1014 860 b 1011 688 1012 791 1012 743 z m 1067 184 b 1071 553 1070 307 1068 429 b 1439 556 1194 553 1316 554 b 1437 554 1439 554 1437 554 b 1341 337 1413 478 1387 402 b 1119 192 1286 261 1211 212 b 1067 184 1102 189 1084 186 z m 1008 180 b 660 264 886 181 770 212 b 524 471 570 305 524 374 b 528 524 524 488 526 505 l 533 549 b 792 552 619 550 706 550 b 1009 553 865 553 937 552 b 1008 180 1009 428 1008 288 z', + }, + gClef: { + x_min: 0, + x_max: 664, + y_min: -559, + y_max: 1009, + ha: 1568, + o: 'm 343 -805 b 366 -801 350 -805 357 -804 b 409 -773 383 -795 397 -786 b 582 -328 528 -648 577 -497 b 583 -294 582 -315 583 -294 b 612 -279 583 -294 603 -282 b 747 -197 660 -256 706 -230 b 949 143 857 -109 920 10 b 956 206 955 164 956 186 b 791 384 956 297 906 363 b 704 393 762 390 733 393 b 498 336 632 393 563 374 b 481 325 490 331 481 325 l 444 465 b 442 485 442 472 442 485 b 609 880 442 485 589 746 b 619 996 616 919 619 958 b 613 1084 619 1027 618 1056 b 534 1387 599 1188 560 1286 b 482 1453 527 1417 517 1453 b 422 1407 456 1453 438 1428 b 305 1063 348 1305 312 1188 b 304 1002 304 1043 304 1022 b 338 654 304 886 323 769 b 343 629 338 645 341 636 b 144 356 278 537 206 451 b 23 144 101 288 53 220 b 0 20 7 107 0 63 b 82 -210 0 -69 30 -160 b 207 -288 112 -239 160 -271 b 410 -328 274 -312 340 -328 b 474 -324 431 -328 452 -327 l 491 -321 b 491 -341 491 -321 492 -334 b 402 -585 475 -428 454 -513 b 294 -668 374 -622 348 -664 b 271 -693 278 -670 271 -680 b 274 -708 271 -698 272 -703 b 302 -775 282 -730 292 -753 b 343 -805 311 -795 325 -805 z m 400 717 b 382 922 389 786 382 854 b 481 1286 382 1047 408 1169 b 507 1125 498 1233 507 1179 b 500 1040 507 1097 504 1068 b 400 717 481 927 455 818 z m 252 -135 b 196 -121 232 -134 215 -127 b 117 -69 158 -108 127 -94 b 111 -32 112 -58 111 -45 b 117 19 111 -16 114 1 b 130 56 118 27 127 52 b 324 337 186 156 253 246 l 384 416 l 395 384 b 416 291 406 348 416 291 b 350 213 416 291 376 239 b 243 -42 278 143 243 55 b 251 -117 243 -66 246 -91 b 252 -135 252 -122 252 -127 z m 563 -91 b 510 168 552 3 530 78 b 513 192 508 179 508 186 b 624 202 550 199 586 202 b 730 192 660 202 694 199 b 850 141 773 183 816 176 b 858 134 852 138 855 135 b 595 -121 801 19 716 -68 l 569 -131 z m 410 -160 b 311 -147 360 -160 311 -147 b 307 -98 311 -147 307 -127 b 314 -33 307 -79 308 -56 b 429 131 328 36 377 85 b 441 138 433 135 438 138 b 449 122 446 138 448 132 b 490 -131 462 37 484 -46 b 490 -153 491 -140 490 -153 b 410 -160 490 -153 452 -163 z', + }, + cClef: { + x_min: 0, + x_max: 731, + y_min: -543, + y_max: 543, + ha: 1086, + o: 'm 131 -782 b 141 -755 138 -782 140 -773 b 147 -490 143 -667 145 -577 b 160 207 150 -258 153 -24 b 168 618 164 344 158 481 b 81 768 173 690 132 732 b 45 782 66 778 55 782 b 3 740 26 782 13 768 b 0 724 1 736 0 730 l 1 710 b 4 596 4 672 4 634 l 4 382 b 9 102 4 288 4 196 b 17 -301 13 -32 10 -166 l 17 -672 b 50 -736 17 -701 27 -720 b 109 -772 69 -749 91 -759 b 131 -782 120 -778 127 -782 z m 615 -770 b 881 -684 710 -770 801 -739 b 1020 -395 986 -612 1020 -510 b 1017 -334 1020 -374 1018 -354 b 769 -62 1007 -209 896 -75 b 746 -60 762 -60 755 -60 b 639 -73 710 -60 675 -69 b 524 -109 598 -79 560 -92 b 528 -36 526 -85 528 -60 b 527 -4 528 -26 528 -14 b 528 39 527 10 528 24 b 526 99 528 59 527 79 b 592 94 549 95 570 94 b 648 99 611 94 629 95 b 912 157 744 94 844 117 b 1053 377 1009 215 1053 284 b 1050 425 1053 393 1053 409 b 914 665 1037 521 986 602 b 717 753 855 717 791 753 b 626 734 688 753 658 747 l 462 665 b 347 500 374 628 347 580 b 350 449 347 484 348 468 b 392 419 353 428 367 416 b 492 438 425 425 459 428 b 541 498 524 448 541 468 b 540 514 541 503 541 508 b 537 546 537 524 537 536 b 573 639 537 580 550 611 b 606 657 582 649 593 657 l 609 657 b 716 622 647 652 684 647 b 834 372 801 556 834 469 b 831 323 834 356 832 338 b 743 187 825 266 795 217 b 710 176 732 180 720 176 b 694 179 704 176 700 177 b 527 223 638 193 582 206 b 495 229 516 228 505 229 b 454 220 481 229 468 225 b 395 189 432 213 415 200 b 363 180 384 186 374 181 b 348 168 356 179 348 176 b 340 161 343 167 340 164 b 347 150 340 157 343 154 b 356 147 348 148 353 147 b 364 92 361 130 363 111 b 369 -37 367 49 369 6 b 363 -154 369 -76 367 -115 b 357 -236 360 -183 357 -210 b 376 -264 357 -253 361 -259 b 456 -289 402 -284 429 -289 b 521 -282 478 -289 500 -285 b 549 -255 537 -279 546 -271 b 598 -177 556 -225 577 -202 b 622 -164 605 -168 613 -164 b 636 -167 626 -164 631 -166 b 749 -225 678 -177 714 -199 b 848 -405 814 -276 848 -337 b 824 -507 848 -436 840 -471 b 657 -657 792 -582 730 -625 b 608 -668 638 -664 622 -668 b 534 -602 572 -668 547 -645 b 513 -575 530 -589 523 -575 b 507 -576 510 -575 508 -575 b 478 -582 497 -580 488 -582 b 405 -570 454 -582 428 -570 b 389 -572 399 -570 395 -570 l 363 -572 b 321 -575 348 -572 333 -569 l 321 631 b 323 662 323 641 323 652 b 315 716 323 681 321 698 b 304 736 314 723 317 736 l 302 736 b 281 716 294 734 285 729 b 275 665 276 700 275 683 l 275 382 b 276 99 275 288 275 193 b 279 -170 278 10 276 -81 b 284 -399 282 -246 284 -323 b 282 -629 284 -475 282 -553 b 289 -721 282 -660 289 -690 b 300 -736 289 -727 291 -736 b 312 -724 307 -736 310 -730 b 321 -667 323 -706 321 -687 l 321 -632 l 328 -644 l 340 -657 b 510 -757 386 -707 445 -740 b 615 -770 546 -766 580 -770 z', + }, + fClef: { + x_min: 0, + x_max: 776, + y_min: -496, + y_max: 216, + ha: 712, + o: 'm 402 -706 b 804 -405 592 -678 716 -566 b 876 -53 861 -298 874 -183 b 868 33 876 -32 873 1 b 560 311 845 217 723 311 b 524 310 549 311 536 311 b 131 134 373 297 239 242 b 17 -29 84 86 37 39 b 9 -89 12 -50 9 -71 b 112 -238 9 -154 43 -206 b 124 -243 117 -239 120 -242 b 186 -261 145 -255 166 -261 b 268 -228 215 -261 242 -249 b 351 -59 325 -181 351 -124 b 343 10 351 -36 348 -13 b 340 36 341 19 340 27 b 409 105 340 75 363 102 b 441 107 420 107 431 107 b 624 36 510 107 573 86 b 744 -200 688 -27 724 -109 b 747 -230 747 -210 747 -222 b 717 -323 747 -264 736 -292 b 608 -445 688 -370 654 -410 b 307 -541 518 -513 415 -541 l 213 -541 b 39 -521 154 -541 96 -539 b 0 -552 17 -514 0 -531 b 1 -564 0 -556 0 -560 b 17 -611 6 -580 10 -596 b 101 -694 35 -648 50 -684 b 288 -714 164 -707 225 -714 b 402 -706 325 -714 363 -711 z m 1018 92 b 1080 118 1041 91 1068 96 b 1117 219 1099 150 1117 180 b 1113 252 1117 229 1116 240 b 1045 288 1102 297 1068 276 b 1017 262 1028 297 1024 274 b 984 124 989 220 996 170 b 1008 91 979 108 986 91 z m 972 -281 b 1070 -148 1024 -279 1070 -210 b 1025 -105 1070 -105 1045 -112 b 989 -127 1004 -96 998 -114 b 949 -249 963 -164 963 -209 b 969 -281 943 -265 949 -281 z', + }, + unpitchedPercussionClef1: { + x_min: 0, + x_max: 379.13761966945304, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 481 -360 b 507 -357 491 -360 500 -360 b 546 -295 541 -346 547 -325 b 536 79 543 -170 540 -46 b 523 311 533 157 534 235 b 475 359 518 340 508 359 b 425 360 459 359 442 360 b 400 359 416 360 409 360 b 337 294 348 353 340 347 l 337 -73 b 336 -264 337 -137 337 -200 b 343 -294 336 -274 338 -284 b 481 -360 359 -330 431 -360 z m 144 -341 b 207 -320 167 -341 189 -331 b 217 -301 215 -315 217 -308 b 210 -262 217 -289 210 -275 b 228 187 212 -112 209 37 b 228 287 228 220 229 253 b 174 353 228 336 222 343 b 120 359 157 357 138 359 b 48 357 96 359 72 356 b 17 323 29 357 19 344 b 7 120 16 255 9 187 b 6 -109 6 43 6 -33 l 6 -204 b 0 -251 6 -220 0 -235 b 3 -269 0 -256 0 -262 b 127 -340 24 -330 79 -328 b 144 -341 132 -341 138 -341 z', + }, + '6stringTabClef': { + x_min: 0, + x_max: 438, + y_min: -768, + y_max: 767, + ha: 1535, + o: 'm 369 438 b 374 439 370 438 372 438 b 384 462 383 444 384 452 l 384 474 b 390 697 386 547 390 622 b 373 1002 390 799 390 901 l 533 1002 b 560 1001 541 1004 552 1001 b 573 1007 567 1001 572 1002 b 546 1050 579 1025 559 1038 b 536 1056 543 1053 539 1053 b 324 1104 472 1102 397 1104 b 72 1090 238 1104 154 1099 b 55 1093 66 1090 60 1092 b 37 1073 46 1093 37 1089 b 60 1045 37 1061 48 1051 b 203 1001 105 1022 151 1001 b 233 1004 213 1001 223 1002 b 246 1005 238 1004 243 1005 b 272 975 264 1005 272 996 l 272 965 b 258 596 264 842 265 719 b 315 474 253 540 272 504 l 343 455 b 369 438 351 448 357 438 z m 114 -320 b 127 -304 120 -320 124 -315 b 171 -174 141 -261 158 -219 b 222 -135 179 -147 196 -137 b 426 -122 289 -131 359 -128 b 498 -164 462 -120 482 -127 b 628 -301 521 -226 575 -264 b 631 -288 631 -295 631 -291 b 628 -269 631 -281 629 -276 b 569 -134 616 -220 589 -179 b 408 225 514 -14 462 107 b 314 357 384 274 351 318 b 278 380 298 372 288 379 b 251 351 268 380 261 372 b 4 -209 156 171 75 -17 b 0 -228 1 -215 0 -222 b 19 -258 0 -240 7 -249 b 102 -314 45 -279 75 -294 b 114 -320 107 -318 111 -320 z m 425 6 b 360 20 403 17 382 20 b 274 14 331 20 302 14 l 246 14 l 340 206 b 425 6 369 137 395 75 z m 245 -1106 b 281 -1104 256 -1106 269 -1106 b 511 -888 400 -1094 511 -1035 b 454 -688 511 -814 504 -744 b 448 -678 449 -685 448 -681 b 454 -667 448 -675 449 -671 b 504 -497 503 -619 507 -559 b 324 -288 500 -383 436 -308 b 295 -287 314 -287 304 -287 l 282 -287 b 115 -330 223 -287 168 -307 b 94 -366 102 -336 94 -348 l 94 -370 b 96 -435 96 -392 96 -413 b 73 -858 89 -576 71 -717 b 78 -919 73 -878 78 -899 b 72 -950 78 -930 76 -940 b 63 -992 66 -965 63 -978 b 66 -1015 63 -999 65 -1008 b 173 -1104 84 -1106 84 -1106 b 245 -1106 197 -1104 220 -1104 z m 161 -622 b 147 -618 156 -622 151 -621 b 140 -600 141 -612 140 -606 b 144 -564 140 -589 144 -575 b 143 -554 144 -560 144 -557 l 143 -546 b 220 -451 144 -467 143 -465 b 278 -445 239 -446 259 -444 b 418 -497 328 -445 376 -461 b 429 -516 426 -504 429 -510 b 415 -533 429 -521 423 -527 b 219 -608 357 -579 287 -590 b 215 -609 217 -608 216 -609 b 161 -622 197 -609 177 -622 z m 154 -953 b 130 -933 135 -953 130 -948 l 130 -865 l 128 -865 b 135 -788 130 -838 124 -808 b 203 -769 145 -769 180 -776 b 259 -762 223 -765 242 -762 b 441 -852 330 -762 386 -805 b 449 -867 446 -858 449 -863 b 436 -884 449 -874 444 -878 b 318 -942 402 -914 363 -935 b 154 -953 264 -950 209 -953 z', + }, + timeSig0: { + x_min: 20, + x_max: 513, + y_min: -358.159536277652, + y_max: 359, + ha: 717.159536277652, + o: 'm 341 -516 b 420 -510 367 -516 395 -514 b 675 -338 533 -494 622 -448 b 737 -92 716 -256 734 -171 b 739 -35 739 -73 739 -53 b 680 305 739 86 720 207 b 400 517 622 449 537 517 b 337 514 380 517 359 517 b 289 507 321 511 305 513 b 91 317 192 477 127 412 b 29 9 50 212 29 108 b 217 -458 29 -157 88 -312 b 341 -516 251 -494 291 -518 z m 412 -452 b 359 -425 393 -452 376 -444 b 187 14 242 -301 179 -158 b 268 334 193 127 212 235 b 387 448 295 383 330 428 b 406 452 395 451 400 452 b 428 444 413 452 420 449 b 517 324 471 413 497 372 b 586 -29 560 222 586 86 b 556 -271 586 -112 585 -193 b 468 -422 536 -327 508 -377 b 412 -452 449 -442 431 -452 z', + }, + timeSig1: { + x_min: 20, + x_max: 283, + y_min: -364, + y_max: 366, + ha: 730, + o: 'm 264 -524 b 357 -510 297 -524 325 -516 b 374 -490 369 -508 374 -501 b 380 -438 376 -472 380 -455 l 406 246 b 408 301 408 265 408 282 b 400 445 408 348 405 396 b 288 527 395 491 338 527 b 253 520 276 527 264 526 b 240 508 249 517 245 513 b 49 409 192 445 127 413 b 29 396 33 408 29 403 b 32 380 29 392 30 386 b 59 363 36 366 49 364 b 164 348 95 356 130 348 b 222 357 183 348 203 351 b 238 361 228 360 233 360 b 252 334 248 361 252 353 b 243 59 252 242 249 150 b 219 -490 229 -124 233 -307 b 264 -524 217 -516 232 -524 z', + }, + timeSig2: { + x_min: 20, + x_max: 660.4636303241031, + y_min: -378.7201231608281, + y_max: 382, + ha: 760.720123160828, + o: 'm 99 -543 b 130 -533 111 -550 121 -540 b 255 -448 168 -501 213 -475 b 338 -425 282 -431 310 -425 b 392 -431 356 -425 374 -426 b 485 -462 423 -438 454 -451 b 648 -497 540 -482 595 -497 b 834 -441 711 -497 773 -480 b 950 -242 906 -395 958 -334 b 942 -210 950 -230 950 -215 b 912 -220 932 -204 920 -213 b 861 -264 894 -235 877 -248 b 775 -317 835 -289 808 -305 b 675 -334 742 -328 708 -334 b 510 -295 619 -334 563 -318 b 372 -264 465 -278 420 -264 b 305 -272 350 -264 328 -266 b 331 -242 318 -256 324 -249 b 490 -73 386 -187 438 -131 b 675 340 595 43 664 180 b 677 369 677 350 677 360 b 556 536 677 461 638 508 b 468 550 526 546 497 550 b 297 508 409 550 353 533 b 111 354 220 475 168 412 b 29 197 65 308 29 261 b 32 164 29 187 29 176 b 29 140 33 157 29 147 b 43 125 29 132 32 125 b 73 147 55 125 65 138 b 86 163 79 153 82 158 b 238 320 134 219 183 272 b 425 389 292 367 360 389 b 575 341 480 389 531 373 b 606 298 590 330 606 317 b 600 278 606 292 603 285 b 501 107 576 217 544 158 b 304 -104 439 33 372 -35 b 111 -356 230 -180 167 -265 b 84 -446 92 -386 84 -415 b 86 -481 84 -458 85 -469 b 88 -514 88 -491 88 -503 b 99 -543 89 -526 91 -537 z', + }, + timeSig3: { + x_min: 19.824321427094187, + x_max: 540, + y_min: -392, + y_max: 392, + ha: 784, + o: 'm 216 -540 b 354 -564 264 -556 310 -564 b 605 -465 445 -564 530 -530 b 729 -161 697 -383 729 -275 b 724 -82 729 -135 727 -108 b 589 95 716 -1 670 62 b 523 114 567 102 546 108 b 750 418 606 213 677 315 b 778 503 769 444 778 472 b 773 540 778 514 776 527 b 750 564 769 557 762 564 b 736 562 746 564 742 563 b 641 552 704 553 672 552 b 402 554 562 552 481 554 l 346 554 b 84 546 258 554 170 554 b 36 501 55 543 40 531 b 29 412 30 472 32 442 b 52 384 27 393 32 384 l 56 384 b 210 392 107 389 158 392 l 602 392 b 354 108 523 285 445 192 b 246 -65 300 58 246 12 b 252 -108 246 -78 248 -92 l 252 -111 b 264 -141 251 -122 251 -135 b 291 -132 274 -145 284 -140 b 425 -72 328 -95 377 -84 b 475 -65 442 -68 459 -65 b 592 -108 517 -65 557 -79 b 645 -179 615 -125 645 -147 b 642 -194 645 -184 644 -189 b 485 -376 616 -278 569 -344 b 361 -399 444 -392 402 -399 b 151 -340 289 -399 219 -376 b 88 -275 122 -323 98 -310 b 71 -249 86 -268 85 -249 b 63 -251 68 -249 66 -249 b 36 -288 48 -255 36 -266 b 55 -423 33 -336 45 -377 b 101 -482 60 -448 78 -468 b 216 -540 138 -504 174 -526 z', + }, + timeSig4: { + x_min: 20, + x_max: 633.0785282750762, + y_min: -489.59088556716864, + y_max: 491.18559127100053, + ha: 980.7764768381692, + o: 'm 608 -704 b 641 -684 622 -708 634 -696 b 667 -602 660 -660 662 -631 b 685 -190 683 -465 680 -327 l 685 -176 b 831 -127 736 -166 783 -148 b 912 0 901 -94 913 -76 b 886 53 912 36 904 52 b 848 40 877 53 864 49 l 838 36 b 687 -13 789 14 739 -3 b 681 177 687 50 684 114 b 672 338 678 230 677 285 b 654 373 671 350 672 373 b 622 340 636 373 624 361 b 615 262 621 314 613 288 b 619 -22 616 167 619 72 b 569 -22 602 -23 585 -23 b 305 -3 481 -16 395 -1 b 210 -9 274 -3 242 -4 b 301 163 242 52 268 108 b 513 552 377 288 459 412 b 536 652 526 585 536 618 b 533 683 536 662 534 672 b 520 707 531 691 531 707 b 487 693 508 708 494 704 b 474 668 482 684 477 677 b 384 490 454 603 418 547 b 253 281 343 419 295 351 b 73 -13 194 181 145 78 b 29 -108 50 -42 29 -72 b 37 -147 29 -121 32 -134 b 50 -186 43 -160 50 -173 b 68 -216 52 -207 56 -215 b 92 -207 73 -216 82 -213 b 288 -166 156 -180 220 -166 b 556 -186 377 -166 467 -180 b 586 -189 566 -187 576 -187 b 616 -186 596 -189 606 -189 b 606 -432 613 -268 612 -350 b 596 -625 603 -495 596 -559 b 598 -670 596 -641 596 -655 b 608 -704 598 -683 596 -700 z', + }, + timeSig5: { + x_min: 19.663871085403297, + x_max: 583, + y_min: -389, + y_max: 389, + ha: 778, + o: 'm 132 -536 b 249 -560 168 -553 209 -559 b 507 -462 351 -560 454 -514 b 677 -183 588 -384 642 -289 b 694 -85 688 -150 694 -117 b 540 138 694 12 642 94 b 422 173 501 154 462 167 b 400 187 408 174 400 177 b 405 202 400 190 402 196 b 428 284 416 228 426 255 b 469 312 431 307 442 312 b 757 372 569 312 662 343 b 840 490 821 392 840 432 b 812 560 840 540 834 560 b 763 546 801 560 785 556 b 757 543 762 546 759 544 b 465 484 665 505 570 484 b 396 484 452 484 425 487 b 353 454 377 482 366 474 b 281 300 323 405 304 351 b 245 164 262 255 245 212 b 246 144 245 158 246 151 b 233 63 249 115 243 89 b 225 35 228 50 225 40 b 264 14 225 22 236 19 b 445 -26 325 7 387 0 b 569 -151 501 -52 547 -89 b 575 -180 573 -161 575 -170 b 527 -275 575 -217 547 -245 b 347 -367 484 -334 419 -367 b 261 -351 318 -367 289 -363 b 95 -300 206 -333 154 -307 b 55 -321 73 -297 65 -302 b 29 -468 29 -367 40 -419 b 56 -505 26 -482 36 -500 b 132 -536 82 -514 108 -524 z', + }, + timeSig6: { + x_min: 20, + x_max: 565, + y_min: -363, + y_max: 363, + ha: 726, + o: 'm 390 -518 b 621 -458 469 -507 549 -494 b 814 -134 753 -390 814 -281 b 652 59 814 -16 750 58 b 580 48 629 59 606 55 b 233 -334 392 -9 276 -138 b 115 -228 181 -314 143 -278 b 98 -160 104 -206 98 -183 b 107 -109 98 -144 101 -127 b 167 37 124 -59 145 -12 b 508 340 236 189 347 292 b 575 353 530 347 553 353 b 648 327 600 353 625 346 b 665 320 654 321 661 320 b 687 336 674 320 681 325 b 703 405 697 359 703 382 b 684 472 703 429 697 451 b 593 523 664 504 631 521 b 576 521 588 523 582 523 b 297 403 472 508 380 465 b 115 177 217 344 164 264 b 29 -121 60 82 29 -17 b 53 -278 29 -173 36 -225 b 226 -497 82 -374 131 -454 b 347 -523 265 -514 305 -523 b 390 -518 361 -523 376 -521 z m 351 -357 b 312 -351 337 -356 320 -363 b 325 -315 304 -340 320 -327 b 543 -120 373 -222 448 -158 b 622 -104 570 -108 596 -102 b 717 -132 655 -104 687 -112 b 740 -167 732 -143 740 -153 b 730 -196 740 -176 737 -184 b 563 -321 690 -258 634 -300 b 359 -357 497 -341 428 -354 z', + }, + timeSig7: { + x_min: 20.3617407597707, + x_max: 592, + y_min: -345, + y_max: 345, + ha: 690, + o: 'm 253 -497 b 318 -485 276 -497 297 -487 b 366 -441 348 -482 360 -468 b 487 -104 390 -323 433 -210 b 835 403 580 82 701 246 b 852 436 847 416 852 428 b 815 467 852 451 840 461 b 762 474 798 471 779 474 b 674 445 732 474 701 465 b 603 410 652 431 628 420 b 383 360 533 379 459 360 b 200 435 315 360 249 382 b 88 494 168 469 131 485 b 66 497 81 495 73 497 b 33 484 52 497 39 492 b 50 436 22 469 39 451 b 295 310 114 360 199 324 b 406 301 331 304 369 301 b 593 324 468 301 530 308 b 585 307 589 314 588 310 b 265 -249 451 137 338 -46 b 207 -442 242 -312 223 -377 b 204 -462 206 -449 204 -456 b 253 -497 204 -487 220 -497 z', + }, + timeSig8: { + x_min: 20, + x_max: 504.15101530718516, + y_min: -428, + y_max: 428, + ha: 856, + o: 'm 265 -616 b 289 -615 274 -616 281 -616 b 710 -271 492 -592 657 -485 b 726 -148 721 -229 727 -187 b 585 108 726 -48 687 42 b 572 127 576 114 573 120 b 576 144 572 132 575 138 b 598 301 590 196 598 249 b 586 413 598 338 593 376 b 356 616 559 531 467 616 b 233 582 317 616 275 606 b 29 233 101 505 29 384 b 104 9 29 153 46 72 b 189 -48 127 -16 160 -27 b 92 -158 141 -73 114 -114 b 37 -343 63 -217 50 -279 b 33 -390 35 -359 33 -374 b 265 -616 33 -524 148 -616 z m 258 105 b 124 148 215 105 167 117 b 96 196 105 163 96 177 b 99 217 96 202 96 209 b 197 384 120 281 151 337 b 350 451 242 429 297 451 b 516 364 412 451 472 422 b 530 331 523 354 530 343 l 530 327 l 530 320 b 468 151 520 261 507 200 b 419 122 455 135 442 125 b 258 105 370 117 320 105 z m 328 -438 b 158 -276 233 -436 160 -359 b 166 -239 158 -264 161 -252 b 230 -157 176 -203 202 -179 b 367 -72 274 -125 320 -98 b 448 -49 396 -56 423 -49 b 562 -118 491 -49 528 -72 b 611 -251 590 -157 611 -199 b 569 -341 611 -288 595 -318 b 328 -438 500 -402 416 -432 z', + }, + timeSig9: { + x_min: 20, + x_max: 494, + y_min: -421, + y_max: 421, + ha: 842, + o: 'm 235 -606 b 361 -564 275 -606 318 -593 b 619 -229 487 -482 566 -366 b 706 127 664 -114 694 4 b 711 233 708 163 711 197 b 700 346 711 271 708 308 b 389 606 658 517 530 606 b 351 605 376 606 364 606 b 56 272 171 586 56 441 b 96 98 56 216 69 156 b 334 -53 144 -3 238 -53 b 544 36 408 -53 484 -24 b 652 176 586 78 622 124 b 631 71 645 141 639 105 b 467 -302 599 -63 562 -196 b 271 -442 412 -364 354 -422 b 225 -448 255 -446 239 -448 b 95 -305 148 -448 98 -395 b 89 -255 95 -288 94 -271 b 73 -233 86 -246 85 -233 b 52 -248 65 -233 56 -239 b 29 -317 42 -271 30 -291 b 49 -448 29 -361 40 -405 b 235 -606 69 -541 144 -606 z m 340 104 b 144 209 264 108 194 141 b 127 258 132 225 127 240 b 137 297 127 271 130 284 b 366 449 184 396 269 449 b 517 408 415 449 467 436 b 595 348 546 392 572 372 b 616 305 608 336 616 321 b 609 281 616 298 613 289 b 340 104 557 184 477 104 z', + }, + timeSigCommon: { + x_min: 20, + x_max: 585, + y_min: -298, + y_max: 294.49658092772603, + ha: 592.496580927726, + o: 'm 444 -405 b 829 -45 626 -346 740 -207 b 842 26 842 -23 842 1 b 821 58 842 39 841 58 b 795 40 811 58 802 48 b 765 3 785 29 773 16 b 469 -223 690 -104 596 -183 b 354 -242 431 -235 392 -242 b 180 -177 292 -242 235 -223 b 135 -99 154 -157 140 -131 b 132 -59 134 -85 132 -72 b 141 7 132 -37 135 -16 b 449 274 189 160 297 243 b 477 278 459 276 468 276 b 546 203 517 278 539 253 b 517 157 550 177 533 166 b 485 143 507 153 497 143 l 482 143 b 467 148 478 143 472 144 b 374 183 438 170 406 181 b 264 118 333 183 292 161 b 238 48 246 92 238 69 b 261 -9 238 29 245 10 b 383 -73 287 -39 337 -73 b 412 -68 392 -73 402 -72 b 631 164 526 -27 586 59 b 649 252 644 193 649 222 b 636 328 649 278 645 304 b 504 423 615 400 579 429 b 242 318 408 415 317 387 b 29 -158 104 190 29 33 b 30 -176 29 -164 29 -170 b 115 -364 42 -246 52 -315 b 307 -429 177 -410 240 -429 b 444 -405 351 -429 397 -420 z', + }, + timeSigCutCommon: { + x_min: 20, + x_max: 695, + y_min: -687.0379164869064, + y_max: 687, + ha: 1374.0379164869064, + o: 'm 564 -989 b 595 -945 585 -991 589 -963 l 599 -922 b 605 -628 600 -824 603 -726 l 609 -399 b 878 -251 706 -363 798 -320 b 996 -85 932 -204 976 -153 b 1001 -63 998 -78 1001 -71 b 989 -46 1001 -56 998 -49 b 978 -43 985 -45 982 -43 b 950 -59 968 -43 959 -49 b 733 -216 894 -132 815 -177 b 611 -259 694 -235 652 -249 b 616 -20 612 -179 615 -99 b 680 29 642 -7 665 9 b 698 43 685 36 690 40 b 870 251 792 82 840 160 b 877 294 874 265 877 279 b 818 410 877 338 855 382 b 683 458 779 442 730 448 b 625 468 664 462 644 465 l 625 514 b 638 958 626 662 636 811 b 626 989 638 979 635 989 b 603 981 621 989 613 986 b 422 840 534 945 481 888 b 412 805 412 832 413 818 b 426 713 410 773 420 743 b 445 678 429 690 435 678 b 474 691 452 678 461 683 b 563 755 503 710 530 732 b 564 724 564 740 564 733 b 559 469 563 639 560 554 b 462 454 526 469 494 464 b 112 143 302 399 199 281 b 33 -94 66 71 45 -10 b 29 -148 30 -112 29 -131 b 105 -351 29 -223 52 -291 b 359 -455 171 -426 258 -451 b 517 -431 409 -451 464 -446 l 539 -422 l 539 -477 b 533 -739 536 -563 539 -651 b 530 -824 531 -768 530 -795 b 546 -948 530 -865 533 -907 b 564 -989 552 -962 543 -989 z m 410 -288 b 193 -197 328 -288 253 -264 b 141 -60 160 -161 141 -108 b 157 6 141 -35 147 -12 b 259 158 189 58 217 112 b 438 291 311 215 364 266 b 528 305 468 301 498 305 b 554 304 537 305 546 304 b 553 212 554 274 554 242 b 426 115 498 199 446 164 b 416 68 419 99 416 84 b 425 12 416 49 420 30 b 474 -39 432 -17 448 -32 b 513 -43 487 -42 498 -43 b 547 -40 524 -43 536 -42 l 543 -272 b 461 -285 516 -278 488 -281 b 410 -288 444 -287 426 -288 z m 694 197 b 668 203 685 197 677 199 b 621 216 654 210 638 215 b 622 294 622 242 622 268 b 706 268 651 287 678 278 b 746 235 721 261 734 249 b 752 222 749 230 752 226 b 743 213 752 219 749 215 b 694 197 727 206 711 197 z', + }, + timeSigPlus: { + x_min: 0, + x_max: 661, + y_min: -358, + y_max: 358, + ha: 716, + o: 'm 605 -516 b 629 -490 624 -516 629 -507 b 628 -475 629 -485 628 -481 b 613 -131 624 -405 616 -174 b 612 -96 612 -114 612 -96 l 647 -98 b 897 -115 730 -99 814 -109 b 940 -89 919 -117 935 -109 b 952 -24 946 -69 952 -46 b 948 9 952 -14 950 -3 b 912 39 942 26 933 37 b 609 60 822 48 609 60 b 616 392 609 60 608 291 b 567 488 619 436 605 467 b 511 516 550 498 531 514 b 498 511 507 516 503 514 b 478 446 475 501 480 469 b 467 150 474 348 469 249 b 465 59 465 121 465 59 l 372 49 b 73 14 272 36 173 24 b 49 13 65 13 56 13 b 0 -33 9 13 0 6 b 60 -141 0 -117 6 -140 b 112 -135 73 -141 91 -140 b 413 -102 213 -125 314 -112 b 464 -98 441 -99 464 -98 l 464 -145 b 477 -456 464 -249 468 -353 b 526 -510 478 -488 491 -507 b 589 -513 546 -511 569 -510 b 605 -516 595 -514 600 -516 z', + }, + timeSigPlusSmall: { + x_min: 0, + x_max: 418, + y_min: -197, + y_max: 199, + ha: 396, + o: 'm 301 -284 b 330 -238 320 -284 324 -255 b 348 -46 350 -176 341 -111 b 374 -20 351 -27 356 -23 b 481 -17 409 -16 445 -17 b 566 -9 510 -17 537 -16 b 602 3 579 -7 602 -16 b 566 29 602 19 582 24 b 526 33 553 32 539 33 b 384 39 478 36 432 39 b 356 62 363 39 356 42 l 356 68 b 359 177 359 104 359 141 l 359 251 b 341 287 359 264 361 285 b 311 255 324 287 314 272 b 310 228 311 246 310 236 l 301 69 b 275 39 301 49 295 39 l 271 39 b 210 40 251 40 230 40 b 167 39 196 40 181 40 b 89 40 141 37 115 40 b 24 30 68 40 46 37 b 0 17 17 27 0 30 l 0 13 b 27 -17 3 0 7 -13 b 91 -22 49 -22 71 -22 b 153 -22 115 -22 137 -20 l 275 -22 b 295 -40 289 -22 295 -27 l 295 -48 b 288 -235 288 -109 287 -171 b 287 -264 288 -243 287 -253 b 301 -284 287 -275 289 -284 z', + }, + timeSigMinus: { + x_min: 0, + x_max: 662, + y_min: -54, + y_max: 55, + ha: 109, + o: 'm 39 -78 b 49 -76 42 -78 45 -76 b 452 -75 94 -75 272 -75 b 861 -76 632 -75 814 -76 b 953 -20 927 -79 953 -66 b 948 27 953 -7 950 9 b 946 37 948 30 948 35 b 896 79 940 63 929 79 b 471 78 827 78 648 78 l 42 78 b 0 37 14 78 0 69 b 23 -66 0 0 17 -32 b 39 -78 24 -75 32 -76 z', + }, + timeSigParensRight: { + x_min: 0, + x_max: 274.26483738379414, + y_min: -722.6326530612245, + y_max: 725, + ha: 1447.6326530612246, + o: 'm 37 -1038 b 69 -1031 48 -1044 59 -1038 b 88 -1015 76 -1027 82 -1021 b 164 -886 120 -976 147 -933 b 333 -351 233 -711 292 -534 b 395 118 366 -204 399 -59 b 389 245 392 144 392 194 b 120 996 369 521 265 766 b 68 1044 99 1030 84 1044 b 19 988 50 1044 36 1024 b 0 922 7 965 0 945 b 20 858 0 901 6 881 b 259 215 141 660 236 449 b 271 -1 266 143 271 71 b 252 -239 271 -82 265 -161 b 148 -667 228 -384 183 -524 b 39 -1009 120 -785 66 -893 b 33 -1031 37 -1017 33 -1024 b 37 -1038 33 -1034 35 -1037 z', + }, + timeSigParensRightSmall: { + x_min: 0, + x_max: 154.4025307335204, + y_min: -422, + y_max: 422, + ha: 844, + o: 'm 43 -608 b 60 -598 48 -608 53 -605 b 117 -511 82 -572 102 -543 b 222 23 193 -350 219 -177 b 213 166 225 55 216 109 b 115 531 206 294 174 416 b 45 603 99 562 76 588 b 30 608 39 606 35 608 b 10 598 23 608 17 603 b 0 546 3 590 0 570 b 23 451 0 507 9 458 b 102 351 66 429 84 390 b 167 42 150 252 167 148 b 163 -49 167 12 166 -19 b 35 -449 151 -192 121 -330 b 14 -504 22 -467 14 -485 b 17 -527 14 -511 16 -520 l 30 -590 b 43 -608 33 -603 37 -608 z', + }, + timeSigParensLeft: { + x_min: 0.5555555555555556, + x_max: 399.6216117372966, + y_min: -728, + y_max: 728, + ha: 1456, + o: 'm 562 -1048 b 573 -1043 566 -1048 570 -1047 b 553 -988 582 -1025 564 -1004 b 472 -884 527 -952 497 -920 b 210 -354 366 -717 275 -541 b 148 -6 170 -240 148 -124 b 160 148 148 45 153 96 b 315 678 189 331 242 508 b 431 901 350 755 380 834 b 459 950 451 926 461 939 b 435 995 459 962 451 972 b 364 1048 405 1034 383 1048 b 305 996 343 1048 325 1028 b 127 624 226 881 174 753 b 1 30 56 432 9 235 b 1 -32 1 9 0 -12 b 180 -629 13 -245 92 -438 b 363 -936 230 -739 298 -835 b 526 -1041 402 -995 448 -1041 b 562 -1048 537 -1040 552 -1048 z', + }, + timeSigParensLeftSmall: { + x_min: 0, + x_max: 173.45497224367904, + y_min: -405, + y_max: 404, + ha: 809, + o: 'm 197 -583 b 222 -553 212 -582 219 -566 b 229 -497 226 -534 229 -516 b 213 -425 229 -472 225 -448 b 102 -177 173 -344 132 -262 b 62 30 78 -111 58 -42 b 91 183 66 82 75 134 b 215 426 118 271 156 356 b 249 552 246 465 252 505 b 230 582 249 563 246 582 b 197 563 219 582 206 576 b 71 356 144 500 105 429 b 0 50 26 259 3 158 b 13 -112 4 -3 7 -58 b 176 -559 29 -275 105 -416 b 196 -583 180 -569 186 -583 z', + }, + noteheadDoubleWhole: { + x_min: -0.4444444444444444, + x_max: 614.1875, + y_min: -223.03296670127517, + y_max: 223, + ha: 446.0329667012752, + o: 'm 35 -321 b 62 -266 58 -318 58 -288 l 62 -194 b 63 50 62 -114 63 -32 b 60 189 63 96 63 143 b 43 300 59 226 60 265 b 29 321 40 308 39 321 l 26 321 b 0 292 13 318 0 310 b 0 248 0 278 -1 262 b 6 147 4 215 6 181 b 4 48 6 114 4 81 b 6 0 4 32 6 16 b 7 -36 7 -12 7 -24 l 7 -52 b 6 -156 7 -86 6 -121 b 19 -275 6 -196 9 -236 b 35 -321 23 -291 16 -323 z m 847 -314 b 871 -288 860 -315 867 -300 b 884 -187 881 -255 886 -222 b 876 115 878 -86 876 14 b 877 255 876 161 876 209 b 868 291 877 268 873 279 b 855 304 867 301 863 304 b 844 301 852 304 848 304 b 822 265 825 292 822 278 b 824 251 822 259 822 255 b 822 170 822 225 822 197 l 822 -20 b 835 -284 827 -86 825 -186 b 847 -314 837 -295 835 -311 z m 757 -291 b 793 -171 796 -255 792 -212 b 795 -49 795 -131 795 -91 b 786 207 795 36 791 121 b 779 240 786 217 783 229 b 766 258 776 246 776 258 b 762 256 765 258 763 256 b 739 236 752 253 740 252 b 733 177 737 216 732 197 b 737 20 737 125 739 73 l 737 -107 b 740 -202 737 -138 739 -170 b 757 -291 740 -230 743 -261 z m 128 -261 b 144 -251 135 -264 141 -256 b 158 -203 156 -236 157 -220 b 161 -137 161 -181 161 -158 b 157 30 161 -81 157 -26 b 158 76 157 45 157 60 l 158 101 b 156 225 158 141 158 183 b 137 253 156 235 154 253 l 134 253 b 109 222 120 251 109 242 b 104 91 108 179 104 134 b 108 -58 104 42 109 -9 b 107 -105 108 -73 108 -89 b 105 -127 107 -112 107 -120 b 118 -245 105 -167 114 -204 b 128 -261 118 -252 121 -259 z m 488 -242 b 693 -79 595 -249 685 -166 l 693 -55 b 690 0 693 -36 691 -17 b 540 187 684 84 621 164 b 449 200 508 196 480 200 b 210 104 363 200 282 163 b 186 56 196 92 186 76 b 207 -82 186 9 192 -37 b 300 -204 225 -132 248 -181 b 488 -242 356 -229 415 -240 z m 490 -88 b 449 -86 477 -88 464 -88 b 287 -56 399 -85 341 -78 b 258 -33 275 -52 258 -48 b 282 -7 258 -20 272 -13 b 458 43 340 23 399 43 b 580 14 497 43 537 35 b 618 -20 606 1 619 -9 b 592 -58 618 -30 609 -42 b 490 -88 562 -82 528 -88 z', + }, + noteheadWhole: { + x_min: 0, + x_max: 380.16649762501584, + y_min: -186.17102907059297, + y_max: 165, + ha: 351.17102907059297, + o: 'm 547 40 b 223 -268 543 -151 367 -259 b 102 -233 180 -271 143 -248 l 62 -216 b 0 -127 22 -197 0 -166 b 6 -91 0 -115 1 -104 b 122 141 33 -9 69 71 b 327 238 170 204 249 238 b 514 158 397 238 467 212 b 547 40 544 125 549 84 z m 248 -107 b 384 -63 295 -102 341 -88 b 426 -23 402 -53 415 -40 b 435 3 432 -14 435 -6 b 413 32 435 14 428 24 b 301 73 376 49 343 73 b 272 69 291 73 282 72 b 121 -35 207 53 157 20 b 111 -58 117 -42 111 -50 b 125 -75 111 -65 115 -71 b 248 -107 164 -89 202 -107 z', + }, + noteheadHalf: { + x_min: 0, + x_max: 334, + y_min: -174, + y_max: 175, + ha: 349, + o: 'm 480 56 b 167 -251 478 -115 331 -251 b 94 -242 143 -251 118 -248 b 9 -141 43 -229 20 -192 b 0 -68 3 -115 0 -91 b 284 249 0 95 127 200 b 304 252 289 251 297 252 b 481 78 374 252 481 170 b 480 56 481 71 481 63 z m 213 -102 b 399 6 274 -81 341 -48 b 402 17 400 7 402 13 b 399 27 402 22 400 26 b 311 94 373 53 353 88 b 292 95 305 95 300 95 b 130 27 230 95 181 55 b 69 -62 98 9 62 -29 b 161 -98 76 -98 128 -91 b 213 -102 174 -101 186 -101 z', + }, + noteheadBlack: { + x_min: 0, + x_max: 334.04644433966797, + y_min: -164, + y_max: 164, + ha: 328, + o: 'm 112 -233 b 141 -236 122 -235 131 -236 b 481 104 279 -236 485 -48 b 403 222 477 141 478 192 b 334 236 382 232 359 236 b 1 -59 180 236 13 59 b 0 -85 1 -68 0 -76 b 112 -233 0 -157 32 -215 z', + }, + noteheadXDoubleWhole: { + x_min: 0, + x_max: 730, + y_min: -266, + y_max: 267, + ha: 533, + o: 'm 1018 -373 b 1032 -361 1025 -376 1028 -367 b 1051 -287 1047 -338 1051 -314 b 1050 -252 1051 -276 1051 -264 b 1030 186 1031 -107 1037 40 b 1031 266 1028 213 1031 239 b 1018 363 1031 300 1028 331 b 1005 384 1015 373 1017 384 l 1004 384 b 984 363 992 384 986 373 b 982 343 982 356 982 348 b 981 235 982 307 981 271 b 996 -285 981 60 986 -112 b 1009 -360 998 -311 1005 -336 b 1018 -373 1011 -364 1014 -373 z m 16 -383 b 49 -328 39 -367 48 -350 b 69 56 58 -202 62 -73 b 75 212 72 107 72 160 b 78 278 76 233 78 255 b 59 382 78 312 73 347 b 29 328 33 372 29 350 b 13 -29 29 209 23 88 b 3 -222 7 -95 10 -157 b 0 -265 1 -236 0 -252 b 16 -383 0 -304 6 -343 z m 923 -314 b 955 -240 948 -289 952 -265 b 965 -65 962 -181 965 -125 b 963 0 965 -45 965 -22 b 962 111 960 37 962 73 b 953 240 962 154 960 197 b 939 275 952 253 952 275 b 913 239 924 274 913 258 b 913 173 914 217 913 194 b 914 135 913 160 913 147 b 920 27 919 98 920 63 b 909 -128 920 -26 917 -78 b 906 -179 906 -147 906 -163 b 923 -314 906 -223 913 -266 z m 121 -301 b 143 -272 134 -301 138 -284 b 147 -255 145 -268 145 -261 b 173 160 161 -117 166 22 b 173 233 173 184 174 209 b 157 264 171 243 171 264 b 137 235 143 264 138 249 b 132 207 135 226 132 216 b 121 43 128 153 124 96 b 105 -186 117 -36 105 -111 b 111 -269 105 -215 107 -242 b 121 -301 114 -281 104 -300 z m 210 -238 b 376 -193 274 -239 327 -226 b 471 -134 406 -173 439 -154 b 534 -94 491 -120 513 -107 b 671 -192 579 -127 624 -161 b 733 -226 691 -204 708 -228 b 746 -225 737 -228 742 -226 b 845 -204 782 -226 814 -213 b 868 -194 854 -203 865 -203 b 852 -173 871 -183 860 -179 b 661 -40 789 -128 724 -84 b 642 -27 654 -36 648 -32 b 861 114 716 17 791 63 b 886 132 870 120 886 121 l 886 137 b 852 164 883 151 867 161 b 776 176 827 170 801 176 b 685 145 744 176 714 168 b 530 45 638 107 583 76 b 403 132 487 73 444 101 b 279 176 364 161 324 171 b 223 160 259 176 229 176 b 258 115 215 141 242 127 b 431 -17 314 71 372 26 b 173 -196 341 -73 253 -130 b 157 -209 168 -200 157 -203 b 158 -215 157 -212 157 -215 b 183 -236 166 -223 168 -235 b 210 -238 194 -236 206 -239 z m 768 -207 b 533 -40 687 -150 609 -94 b 321 -173 462 -85 392 -130 b 261 -194 304 -184 287 -196 b 239 -193 253 -196 246 -194 b 387 -95 294 -157 340 -125 b 505 -20 426 -71 465 -45 l 484 -4 b 353 89 441 27 396 56 b 320 115 341 96 330 107 b 297 141 311 124 297 132 b 300 148 297 144 298 145 b 336 135 311 164 324 143 b 528 -4 400 89 464 42 l 723 121 b 770 140 737 131 753 138 b 792 132 779 140 789 141 b 778 115 795 122 783 120 b 586 -6 714 75 651 35 b 557 -24 576 -13 567 -19 b 726 -147 613 -66 670 -109 b 768 -207 744 -161 765 -173 z', + }, + noteheadXWhole: { + x_min: 0, + x_max: 506, + y_min: -143.0823320899293, + y_max: 144, + ha: 287.0823320899293, + o: 'm 53 -206 b 219 -163 117 -207 170 -196 b 314 -102 249 -141 282 -122 b 377 -63 334 -89 356 -76 b 514 -161 422 -96 468 -128 b 576 -196 534 -174 552 -196 b 589 -193 580 -196 585 -196 b 688 -174 625 -194 657 -181 b 711 -158 698 -171 711 -173 b 696 -143 711 -151 701 -147 b 503 -9 632 -98 567 -52 l 485 4 b 704 145 559 49 634 95 b 729 164 711 150 729 151 l 729 168 b 696 196 726 183 710 193 b 621 207 671 202 645 207 b 528 177 589 207 557 200 b 373 76 480 140 426 108 b 246 164 330 104 287 132 b 122 206 207 193 167 203 b 66 192 102 207 72 207 b 99 147 58 173 85 158 b 274 14 157 102 215 58 b 16 -164 184 -42 96 -98 b 0 -179 12 -168 0 -170 b 1 -183 0 -180 0 -183 b 26 -204 6 -193 12 -204 b 53 -206 37 -206 49 -206 z m 611 -177 b 376 -9 530 -118 452 -63 l 164 -143 b 104 -164 147 -154 130 -164 b 82 -161 96 -164 89 -164 b 230 -65 137 -125 183 -95 l 347 12 b 327 26 341 16 334 22 l 196 121 b 163 147 184 128 173 137 b 140 173 154 154 140 163 b 143 180 140 176 141 177 b 179 166 154 194 167 174 l 372 27 l 566 153 b 613 171 580 161 596 170 b 635 160 624 171 635 174 b 621 147 635 153 626 150 l 429 24 b 400 6 419 19 409 13 b 569 -117 456 -35 513 -75 b 611 -177 588 -130 608 -143 z', + }, + noteheadXHalf: { + x_min: 0, + x_max: 421, + y_min: -145.51844828189743, + y_max: 151, + ha: 296.51844828189746, + o: 'm 490 -209 b 539 -207 505 -207 521 -207 b 606 -209 560 -207 583 -209 b 598 -196 602 -203 600 -199 l 406 -19 l 540 130 b 547 144 546 135 547 140 b 536 156 547 148 543 153 b 488 192 518 166 503 176 b 416 217 471 209 444 217 b 323 180 380 217 344 204 l 264 115 b 239 138 256 122 248 131 b 33 197 180 196 108 200 b 3 186 23 197 6 193 b 19 154 -1 174 10 163 b 171 12 69 107 120 59 b 19 -157 120 -45 69 -101 b 0 -177 14 -163 0 -166 b 1 -181 0 -179 0 -180 b 39 -203 9 -197 22 -203 l 186 -203 b 197 -202 190 -202 193 -200 l 213 -202 b 262 -180 228 -202 246 -199 l 314 -122 b 490 -209 363 -170 412 -216 z m 435 -148 b 291 -30 379 -112 337 -69 l 213 -118 b 190 -137 207 -125 202 -137 b 145 -111 173 -130 154 -127 b 160 -79 137 -98 151 -88 b 238 16 184 -48 212 -16 b 141 99 204 43 173 72 l 124 117 b 115 132 121 121 115 127 b 118 137 115 134 117 137 b 141 132 127 147 135 138 l 253 36 b 347 150 285 75 315 112 b 370 164 354 160 363 163 b 403 145 382 164 393 156 b 416 127 412 140 416 132 b 405 102 416 118 412 111 l 307 -10 b 413 -105 343 -42 379 -73 b 435 -148 425 -115 436 -125 z', + }, + noteheadXBlack: { + x_min: 0, + x_max: 289, + y_min: -156, + y_max: 157, + ha: 313, + o: 'm 23 -225 b 69 -204 40 -223 56 -219 b 137 -131 92 -180 115 -157 l 209 -50 b 377 -197 264 -101 321 -148 b 403 -210 384 -203 393 -210 l 408 -210 b 416 -192 416 -207 416 -199 l 416 -186 b 403 -148 416 -171 413 -158 b 344 -81 384 -125 367 -101 b 252 -1 312 -55 282 -29 b 377 157 297 49 340 101 b 402 202 387 170 402 187 b 395 217 402 207 400 213 b 376 226 389 223 382 226 b 334 192 360 226 346 204 b 206 42 289 143 248 94 b 96 161 167 81 131 120 b 60 193 86 174 76 189 b 33 206 52 196 42 206 b 22 199 29 206 26 204 b 10 173 14 190 10 181 b 22 147 10 166 14 157 b 148 7 62 98 104 52 b 164 -7 154 1 158 -3 b 10 -189 111 -66 55 -122 b 0 -212 6 -197 0 -203 b 1 -217 0 -213 0 -216 b 23 -225 4 -226 14 -222 z', + }, + noteheadCircleXDoubleWhole: { + x_min: 0, + x_max: 437, + y_min: -220, + y_max: 219.03988406941295, + ha: 439.03988406941295, + o: 'm 10 -304 b 40 -206 43 -275 37 -239 b 55 168 48 -81 50 45 b 53 269 56 202 55 236 b 33 315 52 287 46 314 b 3 269 9 317 4 291 b 0 239 1 259 0 249 l 0 -196 b 10 -304 1 -232 7 -268 z m 592 -317 b 621 -220 619 -287 621 -253 b 622 -121 622 -187 622 -154 b 625 -20 622 -88 622 -55 b 629 101 628 20 629 60 b 628 220 629 141 628 181 b 618 253 628 232 625 243 b 608 275 613 259 616 274 b 602 272 606 275 603 275 b 575 249 590 269 575 266 l 575 246 b 573 222 575 239 573 230 l 573 -50 b 592 -317 575 -137 570 -225 z m 79 -285 b 114 -6 96 -261 109 -131 b 117 -63 114 -24 114 -45 b 249 -242 124 -151 166 -212 b 324 -256 275 -252 300 -256 b 504 -137 406 -256 478 -209 b 505 -265 504 -180 505 -222 b 513 -282 505 -269 510 -275 b 533 -248 526 -272 528 -261 b 540 -174 539 -223 540 -199 l 540 -127 b 553 207 546 -16 549 95 b 543 232 553 216 554 232 b 518 207 530 233 518 222 b 511 118 520 177 510 148 l 511 92 b 330 216 488 174 420 223 b 301 215 320 216 311 216 b 122 65 202 204 151 163 b 114 9 117 46 114 27 b 115 75 114 32 115 53 b 101 248 115 157 109 228 b 76 206 78 242 76 225 l 76 91 b 75 -26 76 52 76 13 b 69 -189 72 -81 66 -134 b 79 -285 71 -219 76 -249 z m 317 4 b 219 109 285 40 252 75 l 209 120 b 331 153 248 141 289 151 b 420 137 360 153 390 147 b 446 120 435 131 442 127 l 436 108 l 328 -7 z m 215 -131 b 216 -101 215 -122 215 -114 b 219 -45 217 -82 219 -63 b 197 94 219 3 213 49 l 197 95 b 199 94 199 95 199 94 l 310 -27 b 233 -108 285 -55 259 -81 z m 442 -141 b 432 -122 441 -134 436 -128 l 344 -26 l 426 58 l 445 81 b 444 75 445 78 444 76 b 428 -13 433 46 428 16 b 446 -104 428 -45 433 -75 b 452 -122 449 -111 452 -117 b 442 -141 452 -131 448 -137 z m 323 -190 b 272 -180 305 -187 288 -184 b 217 -158 239 -173 225 -168 l 327 -45 b 330 -48 328 -46 328 -48 b 432 -150 363 -82 393 -121 b 323 -190 400 -174 364 -189 z', + }, + noteheadCircleXWhole: { + x_min: 0, + x_max: 323, + y_min: -190, + y_max: 184.44625787787314, + ha: 374.4462578778731, + o: 'm 156 -258 b 240 -274 184 -268 213 -274 b 455 -101 347 -274 441 -202 b 465 19 462 -60 465 -22 b 464 71 465 36 465 52 b 246 265 455 194 370 274 b 216 264 236 265 226 264 b 12 94 102 251 45 203 b 0 13 3 66 1 40 b 4 -55 0 -10 3 -32 b 156 -258 14 -154 60 -222 z m 245 10 b 233 23 242 14 238 19 b 121 144 196 65 158 104 l 109 154 b 249 192 156 179 202 192 b 351 174 284 192 317 186 b 380 154 366 168 376 163 b 379 153 380 154 380 153 b 369 141 376 148 372 145 b 245 10 327 98 287 53 z m 115 -131 b 118 -96 117 -121 117 -111 b 121 -27 120 -73 121 -50 b 98 124 121 24 115 75 b 96 127 96 125 98 125 b 99 125 98 127 98 125 b 225 -12 140 79 181 33 l 138 -105 b 115 -131 131 -114 122 -121 z m 376 -143 b 363 -121 374 -134 369 -128 b 265 -12 331 -85 298 -48 l 357 85 b 379 111 364 94 372 101 b 377 102 379 108 377 105 b 359 4 364 71 359 37 b 382 -99 359 -32 366 -66 b 387 -121 384 -108 386 -115 b 376 -143 387 -130 382 -135 z m 239 -197 b 181 -187 220 -194 200 -192 b 121 -161 145 -177 128 -173 b 243 -33 161 -118 203 -75 l 248 -36 b 364 -153 285 -75 320 -118 b 239 -197 327 -180 287 -197 z', + }, + noteheadCircleXHalf: { + x_min: 0, + x_max: 309, + y_min: -179, + y_max: 179, + ha: 358, + o: 'm 232 -258 b 435 -94 328 -258 412 -196 b 445 6 444 -60 445 -27 b 444 69 445 27 445 48 b 258 258 439 170 374 258 l 230 258 l 207 256 b 14 107 111 248 45 202 b 0 12 4 75 0 43 b 12 -82 0 -20 4 -50 b 144 -242 27 -160 69 -212 b 232 -258 174 -252 203 -258 z m 192 60 b 115 141 166 88 141 115 l 108 150 b 226 189 141 173 186 189 b 253 186 236 189 245 187 b 305 180 271 183 288 183 b 192 60 268 140 229 101 z m 56 -78 b 45 6 43 -56 45 -23 b 65 84 49 39 50 45 b 85 121 72 96 78 107 b 95 124 88 124 92 127 b 171 39 120 95 145 68 z m 360 -132 b 348 -112 359 -124 353 -118 l 300 -58 l 387 37 b 410 63 397 48 405 56 b 413 26 412 52 413 40 b 360 -132 413 -42 393 -95 z m 232 -183 b 184 -177 217 -183 202 -181 l 281 -78 b 348 -143 301 -101 323 -122 b 232 -183 318 -168 279 -183 z', + }, + noteheadCircleX: { + x_min: 0, + x_max: 344, + y_min: -179, + y_max: 175.12551922594866, + ha: 354.12551922594866, + o: 'm 99 -210 b 236 -258 137 -242 186 -258 b 418 -183 305 -258 374 -230 b 495 33 475 -120 495 -48 b 494 66 495 45 494 55 b 302 252 487 183 405 256 b 181 243 262 249 222 248 b 46 171 128 236 79 219 b 0 19 14 127 0 73 b 99 -210 0 -68 35 -156 z m 245 42 l 124 156 b 200 176 145 166 170 173 b 337 183 245 181 291 184 b 377 176 351 183 364 180 b 245 42 333 131 288 86 z m 392 -99 l 285 3 l 400 121 b 418 154 409 131 418 140 b 465 50 448 130 465 94 b 405 -112 462 -17 439 -73 z m 89 -120 b 48 0 56 -82 48 -42 b 89 112 48 35 59 76 b 109 101 96 111 102 108 l 210 7 l 187 -17 b 89 -120 151 -53 125 -82 z m 176 -183 b 127 -163 158 -179 141 -171 l 252 -32 l 372 -144 b 233 -189 334 -173 285 -189 b 176 -183 215 -189 196 -187 z', + }, + noteheadCircledDoubleWhole: { + x_min: 0, + x_max: 672, + y_min: -291, + y_max: 291, + ha: 582, + o: 'm 27 -419 b 43 -369 37 -403 43 -387 b 49 -82 45 -272 49 -177 b 50 370 50 69 50 219 b 30 419 50 389 50 419 b 7 369 7 419 7 389 b 0 -284 4 151 1 -66 b 16 -418 0 -328 10 -373 z m 945 -374 b 968 -282 963 -343 968 -312 b 966 -245 968 -269 968 -258 b 958 -45 959 -179 962 -111 b 948 262 949 56 952 160 b 936 377 946 301 946 340 b 922 399 933 386 933 399 l 919 397 b 897 374 909 396 899 389 b 894 308 897 353 893 331 b 904 120 899 246 903 183 b 913 -111 907 43 909 -35 b 927 -297 916 -173 919 -235 b 945 -374 930 -320 927 -347 z m 95 -347 b 120 -292 115 -325 117 -310 b 124 -223 122 -269 124 -246 b 122 -141 124 -196 122 -168 b 121 -85 121 -122 121 -104 b 462 -297 170 -209 300 -297 b 727 -219 543 -294 639 -271 b 828 -118 773 -190 808 -157 b 842 -268 831 -168 834 -219 b 851 -288 844 -275 840 -287 b 865 -272 861 -289 863 -279 b 873 -225 871 -256 873 -240 b 873 -171 873 -207 871 -190 b 858 196 868 -48 863 75 b 848 295 857 229 854 262 b 840 315 848 301 850 315 l 837 315 b 816 295 827 314 816 307 b 809 216 815 268 808 243 b 815 102 812 179 814 140 b 672 295 780 176 733 240 b 500 370 621 340 566 370 b 436 361 480 370 459 367 b 120 95 288 321 183 233 l 120 256 b 115 287 120 266 118 276 b 104 305 112 292 115 305 l 101 305 b 82 284 91 304 82 297 b 76 216 81 262 76 239 b 84 -253 78 59 79 -96 b 95 -347 84 -282 89 -311 z m 780 -33 b 779 -24 780 -30 779 -27 b 704 92 766 22 743 62 b 544 173 655 128 599 147 b 400 206 497 194 448 204 b 307 193 369 206 338 202 b 202 118 264 181 226 153 b 235 168 212 135 222 151 b 505 337 302 262 396 312 b 523 338 511 337 517 338 b 611 288 559 338 586 312 b 763 62 678 225 733 151 b 780 -33 776 26 782 -4 z m 435 -88 b 337 -23 387 -88 354 -65 b 333 6 334 -14 333 -6 b 366 86 333 35 344 66 b 456 122 390 111 423 121 b 602 27 517 122 582 88 b 606 1 605 19 606 10 b 575 -49 606 -20 596 -36 b 435 -88 530 -76 481 -82 z m 441 -269 b 194 -96 327 -262 249 -194 b 167 1 176 -62 167 -30 b 177 59 167 22 171 42 b 174 39 176 52 174 46 b 266 -104 174 -27 210 -73 b 511 -151 346 -148 435 -144 l 552 -151 b 740 -104 616 -145 683 -141 b 776 -66 756 -94 769 -81 b 700 -174 766 -105 740 -140 b 441 -269 632 -232 533 -268 z', + }, + noteheadCircledWhole: { + x_min: -50, + x_max: 472, + y_min: -231.00750990437078, + y_max: 232, + ha: 463.00750990437075, + o: 'm 289 -333 b 553 -255 370 -330 465 -307 b 680 -62 635 -206 680 -138 b 662 22 680 -36 674 -7 b 500 259 626 112 573 193 b 327 334 448 304 393 334 b 264 325 307 334 287 331 b -59 49 111 284 4 193 b -72 -19 -68 26 -72 4 b 289 -333 -72 -192 84 -334 z m 608 -69 b 605 -60 606 -66 606 -63 b 530 56 592 -14 570 26 b 372 137 482 92 425 111 b 228 170 324 158 275 168 b 134 157 196 170 166 166 b 29 82 91 145 53 117 b 60 132 37 99 49 115 b 333 301 128 226 223 276 b 350 302 338 301 344 302 b 438 252 386 302 413 276 b 590 26 505 189 560 115 b 608 -69 603 -10 608 -40 z m 262 -124 b 164 -59 215 -124 180 -101 b 160 -32 161 -50 160 -42 b 193 50 160 -3 171 30 b 284 86 217 75 251 85 b 429 -9 344 86 409 52 b 433 -36 432 -17 433 -26 b 402 -85 433 -56 423 -72 b 262 -124 357 -112 307 -118 z m 268 -305 b 22 -132 154 -298 76 -230 b -6 -33 3 -98 -6 -65 b 3 23 -6 -14 -3 6 b 1 3 1 16 1 10 b 94 -140 1 -63 37 -109 b 338 -187 173 -184 261 -180 l 379 -187 b 566 -140 444 -181 510 -177 b 602 -102 582 -130 595 -117 b 526 -210 592 -141 567 -176 b 268 -305 459 -268 360 -304 z', + }, + noteheadCircledHalf: { + x_min: -50, + x_max: 393, + y_min: -175, + y_max: 175, + ha: 350, + o: 'm 540 39 b 408 187 503 94 464 148 b 259 252 356 223 301 252 b 35 192 160 252 95 229 b -68 50 -17 160 -53 112 b -72 13 -71 37 -72 24 b 69 -204 -72 -79 -1 -161 b 246 -252 125 -238 186 -252 b 500 -164 336 -252 426 -219 b 566 -42 543 -132 566 -88 b 540 39 566 -14 557 14 z m 9 -42 b 12 -68 10 -50 10 -59 b -7 6 3 -46 -4 -22 b 131 189 1 98 55 153 b 243 220 167 206 204 215 b 261 222 249 222 255 222 b 377 161 308 222 341 189 b 435 89 402 141 420 117 b 431 92 433 89 432 91 b 346 120 402 102 372 107 b 253 143 314 135 282 143 b 85 79 193 143 138 115 b 9 -42 45 52 10 13 z m 356 39 b 343 1 356 24 351 12 b 206 -111 304 -46 259 -84 b 181 -118 196 -115 189 -118 b 156 -71 163 -118 154 -102 b 238 35 164 -22 199 9 b 324 66 264 52 294 59 b 356 39 348 71 356 62 z m 488 -78 b 392 -176 471 -125 433 -154 b 246 -225 346 -200 297 -217 b 230 -226 240 -226 235 -226 b 157 -204 203 -226 180 -215 b 78 -154 128 -190 101 -174 b 232 -184 128 -171 180 -184 b 344 -161 269 -184 307 -179 b 491 -39 405 -135 455 -94 b 500 -23 495 -33 497 -29 b 488 -78 500 -40 494 -59 z', + }, + noteheadCircledBlack: { + x_min: -70, + x_max: 326, + y_min: -168, + y_max: 192, + ha: 360, + o: 'm 176 -239 b 190 -242 180 -240 186 -240 b 262 -232 213 -242 238 -235 b 469 -19 384 -225 469 -131 b 467 22 469 -6 468 9 b 383 194 455 86 436 151 b 183 276 315 249 251 275 b 32 236 134 276 85 264 b -94 88 -30 207 -75 160 b -101 30 -98 69 -101 49 b 176 -239 -101 -107 9 -251 z m 177 -212 b -30 -27 81 -213 -13 -131 b -33 17 -33 -13 -33 3 b 127 226 -33 111 14 187 b 194 239 151 233 173 238 b 301 203 232 239 266 226 b 364 134 330 184 350 160 b 233 181 341 160 279 180 b 192 171 216 181 202 179 b 13 1 117 131 46 86 b 3 -48 6 -17 3 -33 b 60 -115 3 -79 20 -101 b 203 -135 105 -131 151 -138 b 229 -138 212 -137 220 -137 b 295 -122 251 -138 274 -135 b 400 -33 337 -99 373 -71 b 228 -206 393 -125 330 -192 b 177 -212 209 -209 192 -213 z', + }, + noteheadDoubleWholeSquare: { + x_min: 0, + x_max: 474, + y_min: -209.39230484541326, + y_max: 211, + ha: 420.39230484541326, + o: 'm 648 -301 b 668 -287 658 -304 665 -295 b 683 -209 678 -262 683 -235 b 677 258 681 -55 678 102 b 672 284 677 266 677 276 b 661 304 670 291 672 304 l 658 304 b 635 279 647 301 635 297 b 629 240 635 266 629 252 l 629 236 b 631 225 629 232 631 228 b 583 194 631 197 611 194 l 528 194 b 125 207 393 194 259 202 b 89 207 114 209 101 206 b 63 210 79 207 71 207 b 52 229 55 213 52 220 b 55 258 52 238 55 248 b 53 266 55 261 55 264 b 36 298 48 276 53 298 l 35 298 b 4 264 14 298 7 284 b 0 187 0 238 0 213 b 4 50 0 143 3 96 b 6 -10 6 30 6 10 b 4 -130 6 -50 4 -91 b 12 -268 4 -176 6 -222 b 19 -287 13 -275 10 -284 b 35 -275 26 -288 30 -281 b 52 -220 50 -261 48 -239 b 75 -199 55 -206 58 -199 l 141 -197 l 274 -197 l 634 -197 b 639 -281 635 -219 636 -251 b 648 -301 641 -288 638 -300 z m 72 -66 b 55 -56 59 -69 55 -65 l 55 -50 b 53 53 55 -16 55 20 b 69 73 53 69 60 72 l 79 72 b 330 65 163 66 246 63 l 592 65 b 634 81 606 65 618 71 b 635 -30 634 39 635 6 b 605 -58 635 -49 628 -58 b 451 -60 553 -60 503 -60 b 219 -59 373 -60 295 -59 l 166 -59 b 72 -66 134 -59 104 -60 z', + }, + noteheadSquareWhite: { + x_min: 0, + x_max: 350, + y_min: -131, + y_max: 131, + ha: 262, + o: 'm 468 -189 b 485 -187 474 -189 480 -189 b 500 -176 495 -187 500 -183 b 498 -168 500 -174 498 -171 b 497 -166 498 -167 497 -167 l 498 -164 b 504 -154 503 -163 504 -158 b 503 -138 504 -150 503 -144 l 503 -135 l 503 -94 b 492 66 500 -45 494 10 b 488 135 492 89 488 112 b 484 150 488 141 485 145 b 482 154 482 151 482 153 b 429 189 472 177 456 189 b 53 184 304 186 179 186 l 39 184 b 33 181 36 183 35 183 b 12 160 20 181 12 177 b 0 -109 9 71 4 -19 b 19 -137 0 -125 7 -134 b 23 -151 19 -141 20 -145 b 85 -187 37 -173 55 -187 b 468 -189 212 -187 340 -187 z m 246 -125 l 63 -125 b 66 -111 65 -122 66 -117 b 73 72 69 -50 71 10 l 73 130 b 88 128 78 128 82 128 b 148 130 108 130 128 130 b 271 128 190 130 230 128 l 271 130 l 420 130 b 428 20 425 92 425 56 l 436 -127 l 246 -127 z', + }, + noteheadSquareBlack: { + x_min: 0, + x_max: 342, + y_min: -129.98961937716263, + y_max: 132.44444444444446, + ha: 262.4340638216071, + o: 'm 217 190 b 439 186 304 190 372 190 b 467 180 448 184 458 183 b 492 145 484 176 492 167 b 490 -124 490 56 490 -33 b 488 -141 490 -130 488 -135 b 456 -170 488 -163 478 -168 b 118 -183 344 -176 230 -181 b 29 -184 89 -183 60 -192 b 0 -148 4 -180 0 -168 b 1 29 1 -89 1 -30 l 1 156 b 36 190 3 187 4 190 b 217 190 102 192 168 190 z', + }, + noteheadTriangleDownDoubleWhole: { + x_min: 0, + x_max: 510, + y_min: -213, + y_max: 213, + ha: 426, + o: 'm 16 -307 b 30 -289 26 -307 29 -297 b 43 -236 36 -272 42 -253 l 65 219 b 59 285 62 240 69 264 b 46 307 55 294 58 307 l 43 307 b 19 279 30 304 20 295 b 13 184 17 248 14 216 b 1 -125 9 81 7 -23 b 0 -163 0 -138 0 -150 b 6 -287 0 -204 4 -245 b 16 -307 6 -295 7 -305 z m 707 -294 b 734 -213 733 -271 734 -242 b 729 245 733 -60 730 92 b 719 285 729 259 724 272 b 707 298 716 291 714 298 l 703 298 b 685 284 696 297 687 292 b 683 253 683 274 683 264 b 691 -181 685 108 685 -36 b 707 -294 693 -217 690 -256 z m 108 -238 b 125 -203 125 -238 121 -216 b 127 -190 127 -199 127 -194 b 120 -138 127 -173 120 -156 l 120 -66 b 114 167 120 12 118 89 l 118 161 b 314 -153 184 58 248 -48 b 350 -184 327 -173 338 -184 b 387 -154 361 -184 374 -174 b 567 108 449 -68 508 20 b 626 193 588 137 608 164 b 615 -132 622 85 619 -24 l 615 -166 b 619 -207 615 -180 615 -194 b 638 -226 622 -217 629 -225 b 651 -209 648 -226 649 -216 b 658 -177 655 -199 658 -187 l 658 -171 b 667 49 655 -98 667 -23 b 665 88 667 62 667 75 b 665 220 665 135 667 179 b 641 265 664 238 660 265 b 626 243 629 265 626 255 b 628 222 626 236 628 228 b 612 225 624 223 619 225 b 384 223 537 223 461 223 l 384 225 l 170 225 b 131 215 157 225 144 222 b 112 200 122 210 117 206 b 88 266 111 225 108 249 b 75 239 76 259 75 249 b 73 147 75 207 73 179 b 82 -189 73 35 79 -78 b 84 -203 82 -194 82 -199 b 108 -238 86 -219 91 -238 z m 361 -79 b 295 78 336 -26 314 26 b 284 151 287 101 284 125 b 310 177 284 171 291 177 b 419 176 346 176 383 174 l 423 176 b 445 153 441 176 445 168 l 445 147 b 361 -79 442 65 415 -10 z', + }, + noteheadTriangleDownWhole: { + x_min: 0, + x_max: 366, + y_min: -145, + y_max: 138, + ha: 283, + o: 'm 242 -209 b 279 -180 253 -209 266 -200 b 459 84 341 -92 400 -4 b 520 170 480 112 501 141 b 527 189 524 177 527 183 b 504 199 527 196 520 199 l 55 199 b 23 190 45 199 33 196 b 0 161 9 181 0 173 b 10 135 0 154 3 145 b 206 -177 76 32 140 -73 b 242 -209 219 -199 230 -209 z m 253 -105 b 187 52 228 -52 206 0 b 176 127 179 76 176 101 b 197 151 176 144 181 151 l 202 151 b 256 150 220 151 238 150 b 311 151 275 150 294 151 b 337 128 331 151 337 144 l 337 122 b 253 -105 334 39 307 -35 z', + }, + noteheadTriangleDownHalf: { + x_min: -0.0833130378007211, + x_max: 341, + y_min: -159, + y_max: 159, + ha: 318, + o: 'm 266 -229 b 282 -215 274 -229 278 -225 b 487 153 350 -92 418 30 b 491 170 490 158 491 164 b 480 189 491 177 487 183 b 425 215 464 202 448 213 b 33 226 297 217 168 222 b 13 229 29 223 22 229 b 1 222 9 229 4 228 b 14 184 -4 207 7 196 b 210 -176 81 65 145 -56 b 253 -225 222 -194 230 -213 b 266 -229 259 -226 264 -228 z m 134 22 b 147 43 138 27 141 37 b 206 163 174 79 179 127 b 213 170 209 166 212 167 l 340 167 b 193 -75 287 89 251 1 b 190 -82 192 -76 190 -79 z', + }, + noteheadTriangleDownBlack: { + x_min: 0, + x_max: 346, + y_min: -149, + y_max: 149, + ha: 298, + o: 'm 229 -215 b 259 -202 238 -215 248 -210 b 284 -173 269 -194 278 -184 l 482 173 b 498 209 488 184 498 194 b 481 215 492 215 487 215 b 63 213 343 215 203 213 b 12 197 45 213 29 206 b 0 180 4 193 0 187 b 3 168 0 177 1 173 b 13 150 6 163 9 156 l 196 -189 b 229 -215 206 -206 216 -215 z', + }, + noteheadTriangleUpDoubleWhole: { + x_min: 0, + x_max: 510, + y_min: -213, + y_max: 213, + ha: 426, + o: 'm 16 -307 b 30 -289 26 -307 29 -297 b 43 -236 36 -272 42 -253 l 65 219 b 59 285 62 240 69 264 b 46 307 55 294 58 307 l 43 307 b 19 279 30 304 20 295 b 13 184 17 248 14 216 b 1 -125 9 81 7 -23 b 0 -163 0 -138 0 -150 b 6 -287 0 -204 4 -245 b 16 -307 6 -295 7 -305 z m 707 -298 b 734 -217 733 -275 734 -246 b 729 240 733 -65 730 88 b 719 281 729 255 724 268 b 707 294 716 287 714 294 l 703 294 b 685 279 696 292 687 288 b 683 249 683 269 683 259 b 691 -186 685 104 685 -40 b 707 -298 693 -222 690 -261 z m 88 -266 b 112 -200 108 -249 111 -225 b 131 -215 117 -206 122 -210 b 170 -225 144 -222 157 -225 l 384 -225 l 384 -223 b 612 -225 461 -223 537 -223 b 628 -222 619 -225 624 -223 b 641 -265 628 -238 622 -265 b 665 -220 660 -265 664 -238 b 665 -88 667 -179 665 -135 b 667 -49 667 -75 667 -62 b 658 171 667 23 655 98 b 651 209 660 184 655 197 b 638 226 649 216 648 226 b 619 207 629 225 622 217 b 615 166 615 194 615 180 l 615 132 b 626 -193 619 24 622 -85 b 567 -108 608 -164 588 -137 b 387 154 508 -20 449 68 b 350 184 374 174 361 184 b 314 153 338 184 327 173 b 118 -161 248 48 184 -58 l 114 -167 b 120 66 118 -89 120 -12 l 120 138 b 127 190 120 156 127 173 b 125 203 127 194 127 199 b 108 238 121 216 125 238 b 84 203 91 238 86 219 b 82 189 82 199 82 194 b 73 -147 79 78 73 -35 b 75 -239 73 -179 75 -207 b 88 -266 75 -249 76 -259 z m 310 -177 b 284 -151 291 -177 284 -171 b 295 -78 284 -125 287 -101 b 361 79 314 -26 336 26 b 445 -147 415 10 442 -65 b 423 -176 446 -166 442 -176 l 419 -176 b 310 -177 383 -174 346 -176 z', + }, + noteheadTriangleUpWhole: { + x_min: 0, + x_max: 366, + y_min: -145, + y_max: 138, + ha: 283, + o: 'm 504 -209 b 527 -199 520 -209 527 -206 b 520 -180 527 -193 524 -187 b 459 -94 501 -151 480 -122 b 279 170 400 -6 341 82 b 242 199 266 190 253 199 b 206 167 230 199 219 189 b 10 -145 140 63 76 -42 b 0 -171 3 -156 0 -164 b 23 -200 0 -183 9 -192 b 55 -209 33 -206 45 -209 z m 202 -161 b 176 -137 183 -163 176 -156 b 187 -62 176 -111 179 -86 b 253 95 206 -10 228 42 b 337 -132 307 24 334 -49 b 311 -161 338 -153 334 -161 b 256 -160 294 -161 275 -160 b 202 -161 238 -160 220 -161 z', + }, + noteheadTriangleUpHalf: { + x_min: 0, + x_max: 341.0833130378007, + y_min: -159, + y_max: 159, + ha: 318, + o: 'm 458 -226 b 478 -229 462 -223 469 -229 b 490 -222 482 -229 487 -228 b 477 -184 495 -207 484 -196 b 281 176 410 -65 346 56 b 238 225 269 194 261 213 b 225 229 232 226 228 228 b 209 215 217 229 213 225 b 4 -153 141 92 73 -30 b 0 -170 1 -158 0 -164 b 12 -189 0 -177 4 -183 b 66 -215 27 -202 43 -213 b 458 -226 194 -217 323 -222 z m 151 -167 b 298 75 204 -89 240 -1 b 301 82 300 76 301 79 l 357 -22 b 344 -43 353 -27 350 -37 b 285 -163 317 -79 312 -127 b 278 -170 282 -166 279 -167 z', + }, + noteheadTriangleUpBlack: { + x_min: 0, + x_max: 346, + y_min: -149, + y_max: 149, + ha: 298, + o: 'm 481 -215 b 498 -209 487 -215 492 -215 b 482 -173 498 -194 488 -184 l 284 173 b 259 202 278 184 269 194 b 229 215 248 210 238 215 b 196 189 216 215 206 206 l 13 -150 b 3 -168 9 -156 6 -163 b 0 -180 1 -173 0 -177 b 12 -197 0 -187 4 -193 b 63 -213 29 -206 45 -213 b 481 -215 203 -213 343 -215 z', + }, + noteheadSlashedDoubleWhole1: { + x_min: 0, + x_max: 697, + y_min: -290, + y_max: 290, + ha: 580, + o: 'm 20 -418 b 42 -376 40 -418 37 -392 b 43 -356 45 -370 43 -363 l 43 -348 b 50 -197 43 -298 49 -248 b 78 317 58 -24 69 147 b 72 387 75 343 82 366 b 52 418 68 397 69 418 l 49 416 b 24 380 33 413 24 399 b 19 235 23 333 20 284 b 7 -82 14 130 10 24 b 0 -264 6 -143 0 -203 b 10 -382 0 -302 1 -343 b 20 -418 13 -393 6 -418 z m 976 -344 b 991 -331 985 -346 988 -337 b 1004 -271 999 -312 1004 -292 l 1004 -194 b 996 184 1004 -68 1001 59 b 996 281 996 216 998 249 b 984 379 995 314 991 347 b 971 397 981 392 976 396 b 952 386 965 397 959 392 b 943 361 943 380 945 370 b 937 288 939 337 937 312 b 945 158 937 245 942 203 b 959 -248 950 23 953 -112 b 966 -325 960 -274 963 -300 b 976 -344 966 -334 968 -344 z m 102 -331 b 124 -272 120 -314 122 -294 b 135 -278 127 -276 131 -278 l 141 -278 b 320 -199 206 -262 272 -252 b 348 -171 328 -189 338 -180 b 482 -199 392 -190 436 -199 b 704 -173 576 -199 641 -187 b 847 -82 760 -158 809 -130 l 855 -69 l 855 -73 b 863 -229 857 -125 860 -177 b 876 -255 863 -239 863 -255 b 893 -233 886 -255 888 -242 b 900 -189 899 -219 900 -203 l 900 66 b 900 192 899 108 900 150 b 893 301 900 228 899 265 b 877 325 890 310 893 325 l 876 325 b 855 301 865 324 855 315 b 850 202 852 268 847 235 b 854 50 854 151 854 101 b 821 99 847 68 835 85 b 733 167 795 127 765 148 b 831 253 766 196 799 225 b 851 265 837 258 844 261 b 829 282 840 275 835 279 b 772 295 815 291 795 295 b 685 271 739 295 704 287 b 624 215 665 252 645 233 l 566 232 b 527 239 553 236 540 239 b 490 228 514 239 501 236 b 451 219 475 217 467 219 b 275 176 389 219 331 200 b 184 53 216 150 184 105 b 199 -14 184 32 189 10 b 262 -108 215 -52 236 -82 l 125 -230 b 134 225 130 -78 132 73 b 135 269 134 239 135 255 b 121 330 135 291 132 311 b 95 287 99 323 95 307 b 92 124 94 233 95 179 b 85 -143 88 36 85 -53 b 89 -300 85 -196 86 -248 b 102 -331 89 -311 89 -323 z m 367 -14 b 350 43 359 3 351 22 b 392 122 350 82 363 107 b 544 171 439 150 492 160 b 572 168 554 174 563 171 z m 564 -132 b 467 -105 528 -138 497 -121 b 442 -89 458 -101 449 -95 l 658 101 b 690 30 677 82 690 59 b 688 10 690 24 690 17 b 564 -132 678 -45 611 -127 z', + }, + noteheadSlashedWhole1: { + x_min: -76, + x_max: 498, + y_min: -168, + y_max: 168, + ha: 336, + o: 'm -79 -242 b 55 -202 -32 -236 14 -228 l 145 -143 b 333 -171 203 -166 265 -171 b 429 -164 361 -174 395 -168 b 582 -130 481 -158 534 -154 b 657 -20 631 -105 657 -65 b 619 68 657 9 644 40 b 552 120 599 89 577 107 b 582 138 562 127 572 132 b 717 226 625 167 668 194 b 638 242 688 236 662 242 b 543 213 603 242 573 232 b 455 154 514 194 484 174 b 325 199 412 167 367 179 b 233 215 298 210 265 215 b 75 156 173 215 124 186 b 0 27 24 122 0 76 b 66 -98 0 -17 22 -63 b 72 -102 69 -99 71 -101 b -89 -209 17 -137 -36 -173 b -109 -225 -95 -213 -109 -216 b -108 -229 -109 -226 -108 -228 b -85 -242 -104 -239 -95 -242 z m 181 -29 b 167 14 171 -13 167 1 b 187 62 167 30 173 46 b 301 137 217 99 258 118 b 312 138 304 138 308 138 l 317 138 b 389 109 340 125 364 118 l 383 105 z m 337 -109 b 239 -82 301 -107 268 -99 l 468 65 b 482 24 477 53 482 40 b 480 4 482 19 481 12 b 337 -109 467 -56 399 -111 z', + }, + noteheadSlashedHalf1: { + x_min: -79.3435119522494, + x_max: 471, + y_min: -184, + y_max: 184, + ha: 368, + o: 'm -112 -251 b -94 -265 -107 -261 -101 -264 b -52 -242 -79 -265 -63 -249 l 89 -148 b 212 -180 125 -170 167 -179 b 238 -177 220 -180 229 -179 l 262 -180 b 346 -171 289 -180 318 -176 b 576 -91 431 -166 507 -140 b 641 4 619 -60 641 -29 b 592 96 641 35 625 65 l 583 104 b 533 147 567 121 550 134 l 613 200 b 678 261 636 216 664 232 b 658 265 671 264 664 265 b 611 248 641 265 625 258 l 491 171 b 337 204 444 194 392 204 b 281 200 318 204 300 204 b 27 62 180 187 92 145 b -1 -19 9 37 -1 10 b 36 -107 -1 -50 12 -82 b 52 -121 42 -112 46 -117 l -72 -203 b -112 -251 -91 -216 -122 -233 z m 161 -49 b 158 -29 160 -42 158 -35 b 183 33 158 -7 167 16 b 395 137 239 95 311 122 b 420 125 405 134 413 130 z m 276 -128 b 261 -131 271 -130 266 -131 b 181 -86 233 -131 203 -114 l 454 94 l 468 72 b 481 36 477 60 481 49 b 469 1 481 26 477 14 b 276 -128 422 -66 354 -105 z', + }, + noteheadSlashedBlack1: { + x_min: -110, + x_max: 452, + y_min: -190, + y_max: 190, + ha: 380, + o: 'm -131 -274 b -102 -262 -121 -272 -111 -266 b 7 -186 -65 -239 -29 -212 b 50 -157 22 -176 36 -166 b 105 -176 65 -166 84 -173 b 207 -183 140 -181 173 -183 b 239 -184 219 -184 229 -184 b 428 -91 327 -184 377 -150 b 487 43 461 -52 487 -7 b 482 76 487 53 485 65 b 459 128 478 95 469 112 b 507 161 475 138 491 150 l 651 262 b 622 274 641 271 632 274 b 605 271 616 274 611 272 b 514 233 573 262 541 252 l 422 167 b 317 203 392 190 354 203 b 271 196 301 203 285 200 b 168 157 236 186 200 173 b 6 -16 94 120 33 68 b -1 -62 1 -32 -1 -48 b 17 -125 -1 -86 4 -108 b -81 -196 -16 -148 -48 -173 b -145 -242 -102 -212 -128 -219 b -158 -256 -150 -246 -158 -251 b -157 -261 -158 -258 -157 -259 b -131 -274 -153 -269 -141 -274 z', + }, + noteheadSlashedDoubleWhole2: { + x_min: -0.12386605641055257, + x_max: 697.4733477320805, + y_min: -295, + y_max: 295, + ha: 590, + o: 'm 870 -338 b 891 -315 884 -341 887 -325 b 906 -183 907 -274 903 -228 b 914 186 912 -60 904 62 b 914 240 914 203 916 222 b 916 276 913 251 916 265 b 899 300 916 289 913 300 b 871 253 874 300 871 274 b 858 -168 871 111 858 -27 b 860 -235 858 -190 860 -213 l 736 -131 b 834 -20 799 -111 834 -69 b 789 85 834 13 819 49 b 683 160 760 118 723 140 b 383 216 589 209 487 215 b 330 213 364 217 347 216 b 228 300 295 242 261 271 b 86 347 184 337 138 348 b 58 343 76 347 63 350 l 58 360 b 35 425 58 384 53 423 b 6 382 9 425 6 403 l 6 131 b 0 -164 6 33 4 -66 b 24 -327 -1 -216 6 -271 b 50 -262 46 -305 50 -284 l 50 -154 b 52 -45 50 -118 50 -81 b 58 325 55 79 58 202 b 73 310 60 320 68 315 b 94 294 79 304 86 298 b 89 271 89 287 89 278 l 89 94 b 104 -194 101 -20 88 -108 b 118 -245 107 -213 104 -248 b 140 -190 140 -243 140 -212 l 140 -62 b 132 258 140 46 138 153 l 132 259 l 235 173 b 193 132 219 161 204 148 b 153 26 167 101 153 63 b 164 -35 153 7 157 -16 b 341 -170 196 -114 261 -158 b 433 -177 372 -174 403 -177 b 619 -157 497 -177 559 -170 l 706 -230 b 799 -276 736 -258 765 -276 b 818 -274 806 -276 812 -276 l 861 -274 b 863 -312 861 -287 863 -300 b 870 -338 864 -321 858 -337 z m 966 -425 b 986 -397 979 -425 982 -408 b 991 -373 989 -390 989 -382 b 995 -239 991 -328 995 -284 b 1004 334 1001 -49 1002 143 b 995 380 1005 350 1005 367 b 982 402 989 386 992 402 l 978 400 b 949 374 965 396 950 390 b 948 333 948 360 948 346 l 948 -37 b 949 -84 949 -52 949 -68 b 946 -248 949 -132 946 -189 b 953 -396 946 -297 948 -346 b 966 -425 955 -408 950 -425 z m 624 -36 b 416 140 554 22 485 81 b 482 156 439 150 461 154 b 625 81 537 156 588 124 b 647 27 639 63 647 46 b 624 -36 647 7 638 -14 z m 469 -117 b 320 14 386 -118 320 -60 b 343 81 320 37 327 60 l 547 -95 b 469 -117 521 -105 494 -111 z', + }, + noteheadSlashedWhole2: { + x_min: -83, + x_max: 510, + y_min: -201, + y_max: 198, + ha: 399, + o: 'm 734 -289 b 696 -245 726 -266 710 -256 b 586 -164 660 -217 622 -192 l 589 -161 b 654 -50 631 -135 654 -94 b 616 40 654 -19 641 13 b 305 174 536 127 420 174 b 171 151 261 174 215 167 b 166 150 170 151 168 150 b 86 209 140 170 112 189 b -94 284 32 249 -22 289 l -108 285 b -120 274 -114 285 -120 284 b -104 251 -120 266 -112 258 b 71 124 -46 209 12 166 l 85 114 b 36 72 66 102 50 89 b 0 -30 12 40 0 4 b 122 -186 0 -96 45 -160 b 343 -222 194 -210 268 -222 b 514 -197 410 -220 467 -213 l 554 -228 b 734 -289 609 -268 668 -275 z m 477 -82 b 268 73 408 -30 338 22 l 301 91 b 336 101 314 96 324 101 b 370 88 347 101 359 96 b 459 9 405 66 436 43 b 481 -56 474 -13 481 -35 b 477 -82 481 -65 480 -73 z m 310 -161 b 216 -143 276 -161 246 -156 b 166 -72 181 -128 166 -105 b 168 -46 166 -65 167 -55 b 206 26 176 -16 189 7 b 436 -140 282 -29 360 -84 b 382 -158 420 -150 402 -157 b 310 -161 357 -161 333 -161 z', + }, + noteheadSlashedHalf2: { + x_min: -73, + x_max: 454, + y_min: -188, + y_max: 188, + ha: 376, + o: 'm 654 -271 b 603 -202 649 -233 625 -217 b 481 -115 563 -173 523 -144 b 564 -60 510 -101 539 -82 b 615 40 596 -33 615 4 b 609 69 615 50 613 60 b 505 167 590 120 554 151 b 336 190 451 184 392 190 b 124 134 259 190 189 171 l -42 248 b -88 271 -56 256 -75 271 b -101 265 -94 271 -98 269 b -105 252 -104 259 -105 255 b -66 210 -105 235 -82 222 l 85 107 b 0 -24 42 73 0 35 b 183 -183 0 -118 75 -184 b 262 -176 206 -180 233 -177 b 438 -135 324 -171 383 -158 b 570 -228 482 -166 527 -197 b 654 -271 595 -243 621 -259 z m 393 -53 l 311 4 l 225 65 b 392 134 274 102 331 122 b 455 50 425 141 455 101 b 439 -3 455 35 451 14 b 393 -53 425 -22 409 -37 z m 287 -121 b 246 -130 272 -127 259 -130 b 171 -89 215 -130 189 -115 b 156 -40 161 -73 156 -58 b 186 29 156 -17 166 7 l 192 35 l 359 -82 b 287 -121 337 -98 312 -111 z', + }, + noteheadSlashedBlack2: { + x_min: -84, + x_max: 405, + y_min: -189, + y_max: 189, + ha: 378, + o: 'm 557 -265 b 573 -272 562 -268 567 -272 b 583 -261 577 -272 580 -269 b 575 -242 580 -253 579 -248 b 524 -190 563 -220 544 -204 b 405 -99 485 -160 445 -130 b 497 50 449 -60 482 -9 b 500 72 498 58 500 65 b 478 122 500 91 492 107 b 331 186 438 167 387 186 b 120 131 258 186 186 167 l 107 124 b -52 242 53 163 1 203 b -89 265 -63 251 -76 259 b -107 272 -95 268 -101 272 b -117 266 -109 272 -114 271 b -121 251 -120 262 -121 256 b -114 235 -121 245 -120 239 b -60 186 -96 217 -81 199 b 63 95 -20 156 22 125 b -1 -35 26 66 -1 27 b 137 -183 -1 -130 46 -183 b 174 -180 148 -183 161 -181 l 245 -171 b 366 -128 289 -166 331 -150 l 426 -171 b 557 -265 469 -203 514 -233 z', + }, + noteheadDiamondDoubleWhole: { + x_min: 0, + x_max: 429, + y_min: -221, + y_max: 221, + ha: 442, + o: 'm 22 -318 b 42 -294 33 -318 37 -302 b 46 -266 45 -285 45 -275 b 50 -219 49 -249 50 -233 b 48 -153 50 -197 49 -176 b 43 120 43 -62 43 29 l 43 253 b 37 298 43 269 45 284 b 26 318 35 305 35 318 l 24 318 b 1 295 13 317 3 308 b 0 268 0 285 0 276 l 0 -121 b 10 -291 0 -177 1 -235 b 22 -318 12 -301 10 -318 z m 593 -312 b 618 -256 611 -294 616 -276 l 618 -186 b 611 253 618 -40 612 108 b 605 276 611 261 608 268 b 589 295 600 284 600 297 b 567 272 577 294 569 285 l 567 251 b 575 -197 573 102 575 -48 b 593 -312 575 -233 579 -271 z m 99 -268 b 114 -256 107 -269 111 -262 b 127 -196 124 -238 125 -217 b 128 -144 128 -179 128 -161 b 122 -9 128 -99 125 -55 l 135 -19 b 344 -179 206 -71 276 -122 b 370 -190 354 -186 363 -190 b 395 -173 379 -190 386 -184 b 492 -33 426 -127 459 -79 b 491 -86 491 -50 491 -68 b 507 -251 491 -138 495 -193 b 534 -184 530 -228 533 -206 b 541 144 537 -75 539 35 b 530 204 541 164 539 186 b 520 220 528 210 528 220 b 500 203 511 219 503 213 b 498 192 498 200 498 194 l 498 176 b 494 7 497 120 497 63 l 490 12 l 287 176 b 258 190 279 181 274 190 b 212 153 239 186 225 168 l 127 40 b 121 32 124 37 122 35 b 118 114 120 59 118 86 b 102 249 117 158 122 206 b 75 219 85 246 79 236 b 72 187 72 209 72 197 b 76 117 72 164 75 141 b 85 -151 79 27 79 -62 b 91 -251 86 -184 91 -217 b 99 -268 91 -258 92 -266 z m 392 -128 b 374 -122 387 -134 380 -127 l 180 29 b 170 45 173 35 170 39 b 176 56 170 48 173 52 b 236 122 204 101 219 122 b 308 76 252 122 272 107 l 433 -26 b 449 -50 439 -32 449 -36 b 392 -128 432 -75 413 -102 z', + }, + noteheadDiamondWhole: { + x_min: 0, + x_max: 271, + y_min: -132, + y_max: 132, + ha: 264, + o: 'm 230 -177 b 256 -190 240 -186 249 -190 b 281 -173 265 -190 272 -184 b 382 -29 314 -124 347 -76 b 390 -10 387 -22 390 -14 b 376 12 390 -3 386 4 b 173 177 308 66 240 121 b 144 190 166 183 160 190 b 98 153 127 186 112 170 b 13 40 69 115 42 76 b 0 13 4 29 0 20 b 22 -19 0 3 7 -9 b 230 -177 92 -69 163 -122 z m 279 -128 b 261 -122 274 -134 266 -127 l 66 30 b 56 45 59 35 56 39 b 62 56 56 48 59 52 b 122 122 91 101 105 122 b 194 76 138 122 158 107 l 320 -26 b 336 -50 325 -32 336 -35 b 279 -128 318 -75 300 -102 z', + }, + noteheadDiamondHalf: { + x_min: 0, + x_max: 295, + y_min: -148, + y_max: 148, + ha: 296, + o: 'm 228 -207 b 245 -213 235 -210 240 -213 b 264 -203 252 -213 258 -210 b 415 -46 314 -150 364 -98 b 425 -27 420 -40 425 -35 b 416 -10 425 -22 422 -16 b 217 200 350 60 284 131 b 194 213 212 207 204 213 b 170 196 181 213 177 203 b 14 33 118 143 68 86 b 0 7 4 23 0 16 b 17 -20 0 -1 6 -10 b 118 -114 52 -50 82 -85 b 228 -207 156 -144 184 -184 z m 209 -157 b 134 -69 177 -138 141 -115 b 130 -26 131 -55 130 -40 b 215 148 130 42 160 99 b 225 156 217 151 220 156 b 230 153 226 156 228 156 b 323 -26 276 104 321 55 b 298 -75 324 -42 315 -59 b 265 -109 287 -86 276 -99 b 209 -157 245 -125 228 -167 z', + }, + noteheadDiamondBlack: { + x_min: 0, + x_max: 310, + y_min: -146, + y_max: 146, + ha: 292, + o: 'm 266 -210 b 289 -194 278 -209 284 -200 b 406 -76 330 -156 367 -115 b 446 -23 433 -49 446 -36 b 412 29 446 -10 435 3 b 405 36 409 30 408 33 b 252 196 354 89 304 143 b 225 210 243 204 235 210 b 204 202 219 210 212 209 b 10 24 141 141 75 82 b 0 9 4 19 0 14 b 9 -6 0 4 3 0 l 232 -192 b 266 -210 242 -200 256 -204 z', + }, + noteheadParenthesis: { + x_min: -70.190112022022, + x_max: 329, + y_min: -196, + y_max: 201, + ha: 397, + o: 'm 344 -279 b 382 -262 361 -288 370 -272 b 405 -233 390 -255 399 -245 b 474 9 455 -158 468 -73 b 416 228 474 78 448 174 b 364 282 403 249 387 271 b 344 289 359 285 350 288 b 331 279 338 289 333 287 b 325 248 328 269 325 258 b 338 225 325 238 328 229 b 412 138 379 207 396 174 b 445 1 433 92 445 45 b 346 -217 445 -81 410 -154 b 336 -252 340 -223 336 -238 b 344 -279 336 -265 338 -276 z m 19 -274 b 35 -282 24 -279 30 -281 b 49 -265 42 -282 46 -275 b 52 -243 50 -256 52 -249 b 36 -210 52 -230 49 -220 b -60 -59 -16 -173 -35 -114 b -73 9 -69 -39 -73 -16 b 33 223 -73 92 -24 189 b 50 265 43 229 50 249 b 33 288 50 278 46 289 b 4 272 23 288 14 275 b -9 261 0 269 -4 265 b -101 23 -58 193 -105 124 b -37 -206 -104 -52 -75 -130 b 19 -274 -23 -232 -6 -255 z', + }, + noteheadParenthesisRight: { + x_min: -30, + x_max: 82, + y_min: -199.08429092881173, + y_max: 206, + ha: 405.0842909288117, + o: 'm -17 -282 b 24 -264 -6 -297 12 -272 b 60 -219 40 -253 52 -236 b 117 1 96 -150 112 -75 b 118 16 118 6 118 12 b 109 73 118 36 112 55 b 4 279 99 154 68 226 b -23 297 -4 287 -13 297 b -37 289 -27 297 -32 294 b -43 266 -42 285 -43 276 b -32 225 -43 251 -37 229 b 84 -7 48 170 84 82 b 32 -184 84 -69 65 -132 b -10 -222 22 -200 4 -209 b -24 -258 -20 -232 -24 -245 b -17 -282 -24 -266 -22 -276 z', + }, + noteheadParenthesisLeft: { + x_min: 0, + x_max: 106, + y_min: -197, + y_max: 197, + ha: 394, + o: 'm 134 -284 b 138 -281 135 -284 137 -284 b 145 -268 144 -278 145 -274 l 144 -253 b 107 -180 138 -225 121 -204 b 42 13 71 -120 42 -56 b 49 73 42 32 43 52 b 137 210 62 128 95 171 b 153 255 147 219 153 239 b 145 278 153 265 151 274 b 130 284 140 281 135 284 b 98 259 117 284 108 268 b 0 37 35 203 1 131 b 118 -268 9 -69 53 -173 b 134 -284 121 -274 127 -284 z', + }, + noteheadMoonBlack: { + x_min: 0, + x_max: 328, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 353 -160 b 465 -40 412 -140 451 -102 b 472 30 471 -17 472 6 b 469 124 472 60 469 92 b 406 179 469 170 459 177 l 128 179 b 37 180 98 179 68 179 b 0 141 7 180 0 170 b 3 -20 3 88 3 33 b 69 -134 3 -72 26 -109 b 240 -180 125 -164 181 -180 b 353 -160 278 -180 315 -174 z', + }, + noteheadTriangleLeftBlack: { + x_min: 0, + x_max: 391.1554175279994, + y_min: -142, + y_max: 142, + ha: 284, + o: 'm 138 -204 b 318 -197 197 -199 258 -197 l 431 -197 b 544 -192 469 -196 507 -193 b 563 -184 552 -190 560 -193 b 553 -167 564 -177 559 -171 l 540 -157 b 232 60 436 -85 334 -12 l 50 190 b 20 204 42 197 32 204 b 10 202 17 204 14 204 b 0 184 1 197 0 192 b 1 164 0 177 1 170 b 6 -150 3 59 6 -45 b 39 -193 7 -176 17 -186 b 138 -204 72 -204 105 -204 z', + }, + noteheadTriangleRightBlack: { + x_min: -0.3332953162522517, + x_max: 398, + y_min: -139, + y_max: 140, + ha: 279, + o: 'm 543 -200 b 573 -176 566 -200 573 -194 l 573 -168 b 554 141 566 -66 560 37 b 520 197 553 167 546 187 b 495 202 511 200 504 202 b 454 184 481 202 467 196 l 35 -137 b 0 -171 22 -147 -4 -154 b 52 -199 6 -193 33 -193 b 69 -199 58 -200 63 -199 z', + }, + noteheadTriangleRoundDownBlack: { + x_min: 0, + x_max: 334, + y_min: -133.78604087938328, + y_max: 136, + ha: 269.7860408793833, + o: 'm 252 -192 b 285 -176 269 -196 276 -187 b 468 52 346 -99 406 -23 b 481 79 477 62 481 71 b 465 104 481 88 475 95 b 441 124 456 109 449 117 b 249 196 380 174 314 194 b 13 104 157 196 69 154 b 0 86 6 98 0 92 b 7 69 0 82 3 76 b 202 -164 73 -7 137 -85 b 252 -192 216 -181 235 -186 z', + }, + augmentationDot: { + x_min: 0, + x_max: 96, + y_min: -57, + y_max: 57, + ha: 114, + o: 'm 13 -82 b 16 -81 14 -82 14 -82 b 105 -73 46 -76 75 -76 b 131 -48 121 -72 131 -60 b 138 26 134 -24 138 0 b 137 48 138 33 138 40 b 108 82 134 71 125 82 b 95 81 104 82 99 82 b 33 71 75 78 53 75 b 4 46 20 68 6 62 b 0 -66 1 9 0 -29 b 13 -82 0 -73 1 -82 z', + }, + tremolo1: { + x_min: -158, + x_max: 156.19381479578487, + y_min: -88, + y_max: 88, + ha: 176, + o: 'm -206 -127 b -194 -125 -203 -127 -199 -127 b 173 -36 -72 -94 50 -65 b 220 16 202 -29 215 -12 b 225 50 223 30 225 45 b 216 107 226 76 222 91 b 194 127 210 120 204 127 b 183 124 192 127 189 127 l -192 33 b -226 -9 -213 27 -222 14 b -228 -32 -226 -16 -228 -23 b -222 -108 -228 -58 -222 -82 b -206 -127 -222 -120 -217 -127 z', + }, + flag8thUp: { + x_min: 0, + x_max: 261, + y_min: -819, + y_max: 0, + ha: 819, + o: 'm 265 -1171 b 351 -1035 301 -1130 336 -1087 b 376 -867 369 -979 376 -923 b 367 -755 376 -829 373 -792 b 233 -422 350 -632 311 -520 b 131 -291 199 -379 166 -334 b 65 -125 91 -239 66 -192 b 62 -75 65 -112 62 -91 b 42 0 62 -49 52 -24 l 35 0 b 0 -63 6 -13 0 -36 l 0 -144 b 96 -445 0 -255 29 -356 b 177 -547 124 -478 150 -514 b 308 -831 246 -629 298 -721 b 317 -890 310 -851 317 -871 b 311 -919 317 -900 315 -910 b 256 -1005 297 -950 282 -984 b 228 -1068 233 -1024 228 -1045 b 230 -1106 228 -1080 229 -1093 b 240 -1162 232 -1125 239 -1143 b 251 -1179 242 -1174 246 -1179 b 265 -1171 255 -1179 259 -1176 z', + }, + flag8thDown: { + x_min: 0, + x_max: 261, + y_min: 0, + y_max: 819, + ha: 819, + o: 'm 265 1171 b 251 1179 259 1176 255 1179 b 240 1162 246 1179 242 1174 b 230 1106 239 1143 232 1125 b 228 1068 229 1093 228 1080 b 256 1005 228 1045 233 1024 b 311 919 282 984 297 950 b 317 890 315 910 317 900 b 308 831 317 871 310 851 b 177 547 298 721 246 629 b 96 445 150 514 124 478 b 0 144 29 356 0 255 l 0 63 b 35 0 0 36 6 13 l 42 0 b 62 75 52 24 62 49 b 59 117 62 91 59 104 b 131 291 60 183 91 239 b 233 422 166 334 199 379 b 367 755 311 520 350 632 b 376 867 373 792 376 829 b 351 1035 376 923 369 979 b 265 1171 336 1087 301 1130 z', + }, + flag16thUp: { + x_min: 0, + x_max: 327.1591498636094, + y_min: -819.3972596310256, + y_max: 0, + ha: 819.3972596310256, + o: 'm 415 -1179 b 435 -1168 423 -1182 429 -1174 b 451 -1138 442 -1159 446 -1149 b 465 -1020 464 -1102 467 -1064 b 461 -962 464 -1004 464 -984 b 471 -821 467 -916 472 -870 b 465 -721 472 -791 467 -756 b 415 -520 459 -651 441 -585 b 200 -245 370 -408 284 -327 b 96 -114 160 -206 118 -168 b 75 -24 84 -85 85 -53 b 59 0 72 -16 72 0 b 53 -1 58 0 56 -1 b 27 -32 40 -6 27 -10 b 29 -68 27 -43 29 -55 b 10 -79 20 -69 13 -72 b 1 -109 6 -89 1 -99 b 0 -170 0 -130 0 -148 b 35 -410 0 -252 12 -333 b 258 -793 76 -557 156 -681 b 409 -1158 350 -896 410 -1014 b 415 -1179 409 -1165 405 -1175 z m 413 -816 b 331 -681 392 -769 364 -723 b 145 -420 266 -596 189 -521 b 86 -281 125 -374 102 -330 b 156 -370 105 -312 128 -343 b 318 -539 210 -425 269 -478 b 413 -816 383 -621 420 -713 z', + }, + flag16thDown: { + x_min: 0, + x_max: 327.1591498636094, + y_min: 0, + y_max: 819, + ha: 819, + o: 'm 59 0 b 75 24 72 0 72 16 b 96 114 85 53 84 85 b 200 245 118 168 160 206 b 415 520 284 327 370 408 b 465 721 441 585 459 651 b 471 821 467 756 472 791 b 461 962 472 870 467 916 b 465 1020 464 984 464 1004 b 451 1138 467 1064 464 1102 b 435 1168 446 1149 442 1159 b 418 1179 431 1172 425 1179 l 415 1179 b 408 1169 409 1176 408 1174 b 409 1158 408 1165 409 1161 b 258 793 410 1014 350 896 b 35 410 156 681 76 557 b 0 170 12 333 0 252 l 0 88 b 29 7 0 71 6 23 b 59 0 33 4 58 0 z m 86 281 b 145 420 102 330 125 374 b 331 681 189 521 266 596 b 413 816 364 723 392 769 b 415 791 413 808 415 799 b 318 539 415 698 377 613 b 156 370 269 478 210 425 b 86 281 128 343 105 312 z', + }, + flag32ndUp: { + x_min: -0.19862981551275186, + x_max: 268.0942440943661, + y_min: -849.4710740978672, + y_max: 149.0769891455102, + ha: 998.5480632433774, + o: 'm 323 -1223 b 351 -1198 337 -1227 344 -1210 b 359 -1184 354 -1194 356 -1188 b 386 -999 377 -1122 387 -1060 b 341 -783 386 -927 372 -855 b 330 -736 334 -769 330 -753 b 333 -708 330 -727 330 -717 b 344 -621 340 -678 344 -649 b 341 -579 344 -608 343 -593 b 328 -500 338 -553 328 -526 b 331 -475 328 -491 328 -484 b 347 -370 343 -438 348 -402 b 151 27 348 -212 288 -56 b 53 176 98 59 50 102 b 45 197 53 183 48 192 b 33 215 40 203 40 216 l 30 215 b 6 194 22 212 9 209 b 0 120 3 170 -1 145 b 0 -43 4 65 0 13 b 0 -98 0 -60 1 -79 b 4 -276 0 -157 6 -216 b 7 -456 4 -337 7 -397 b 66 -638 7 -523 22 -585 b 158 -724 94 -671 127 -697 b 318 -1011 246 -801 295 -899 b 321 -1044 321 -1021 321 -1032 b 312 -1152 321 -1080 312 -1116 b 317 -1192 312 -1165 314 -1179 b 323 -1223 320 -1202 311 -1220 z m 285 -376 b 121 -180 249 -289 173 -245 b 91 -105 104 -158 92 -135 b 288 -354 181 -144 288 -269 b 285 -376 288 -363 287 -370 z m 275 -657 b 111 -492 226 -589 163 -547 b 65 -376 78 -456 66 -418 b 71 -323 65 -360 68 -341 b 275 -657 164 -418 265 -504 z', + }, + flag32ndDown: { + x_min: -2.800802874905624, + x_max: 268.09424409436605, + y_min: -169.07698914551014, + y_max: 829.4710740978672, + ha: 998.5480632433773, + o: 'm 323 1194 b 317 1164 311 1191 320 1174 b 312 1123 314 1151 312 1136 b 321 1015 312 1087 321 1051 b 318 982 321 1004 321 992 b 158 696 295 870 246 772 b 66 609 127 668 94 642 b 7 428 22 556 7 494 b 4 248 7 369 4 308 b -1 78 6 187 -10 137 b 0 14 0 59 0 32 l 0 -148 b 6 -223 0 -174 3 -199 b 30 -243 9 -238 22 -240 l 33 -243 b 45 -226 40 -245 40 -232 b 53 -204 48 -220 53 -212 b 151 -56 50 -131 98 -88 b 347 341 288 27 348 183 b 331 446 348 373 343 409 b 328 471 328 455 328 462 b 341 550 328 497 338 524 b 344 592 343 564 344 579 b 333 680 344 621 340 649 b 330 707 330 688 330 698 b 341 755 330 724 334 740 b 386 971 372 827 386 899 b 359 1155 387 1031 377 1093 b 351 1169 356 1159 354 1165 b 323 1194 344 1181 337 1198 z m 275 628 b 71 294 265 475 164 389 b 65 347 68 312 65 331 b 111 464 66 389 78 428 b 275 628 163 518 226 560 z m 285 347 b 288 325 287 341 288 334 b 91 76 288 240 181 115 b 121 151 92 107 104 130 b 285 347 173 216 249 261 z', + }, + flag64thUp: { + x_min: -4, + x_max: 282, + y_min: -823.5430338167067, + y_max: 347, + ha: 1170.5430338167066, + o: 'm 350 -1185 b 380 -1162 364 -1189 374 -1175 b 406 -1022 399 -1119 406 -1071 b 359 -798 406 -945 384 -871 b 348 -756 353 -785 348 -772 b 350 -744 348 -753 350 -749 b 363 -621 356 -704 363 -664 b 360 -580 363 -608 363 -593 b 359 -560 359 -573 359 -567 b 373 -490 359 -536 366 -513 b 393 -346 386 -444 393 -395 b 387 -269 393 -320 390 -294 b 348 -127 382 -219 348 -173 b 351 -104 348 -120 348 -111 b 353 -65 351 -91 353 -78 b 341 37 353 -26 348 6 b 226 215 323 108 278 164 b 86 336 181 258 127 288 b 62 395 72 353 62 370 b 42 481 62 423 55 454 b 27 500 37 488 36 500 b 24 498 26 500 26 500 b -1 480 14 497 1 492 b -6 444 -4 467 -6 455 l -6 435 b -1 341 -1 403 -1 372 l -1 266 b 6 156 -1 230 0 193 b 13 35 12 117 13 75 l 13 -35 b 14 -85 13 -52 14 -68 b 29 -276 19 -150 33 -213 b 20 -448 24 -334 20 -392 b 24 -534 20 -477 22 -505 b 114 -708 30 -605 59 -664 b 197 -780 143 -732 171 -755 b 344 -1153 301 -884 341 -1011 b 343 -1172 344 -1159 343 -1166 b 350 -1185 343 -1176 344 -1182 z m 287 -88 b 62 193 186 -17 79 48 b 229 52 121 144 174 98 b 289 -33 256 29 274 -3 b 295 -56 294 -42 295 -49 b 287 -88 295 -66 292 -76 z m 298 -410 b 118 -235 238 -351 176 -295 b 76 -88 82 -197 78 -147 b 268 -252 137 -153 203 -202 b 330 -360 304 -279 330 -315 b 323 -402 330 -373 327 -387 b 311 -418 318 -413 315 -418 b 298 -410 307 -418 302 -415 z m 300 -691 b 117 -508 243 -616 168 -575 b 82 -408 94 -480 82 -448 b 84 -379 82 -397 82 -387 b 259 -553 135 -451 206 -492 b 301 -667 287 -583 301 -619 b 300 -691 301 -674 301 -683 z', + }, + flag64thDown: { + x_min: -5, + x_max: 281, + y_min: -375, + y_max: 795.5430338167066, + ha: 1170.5430338167066, + o: 'm 348 1145 b 341 1132 343 1142 341 1136 b 343 1113 341 1126 343 1119 b 196 740 340 971 300 844 b 112 668 170 714 141 691 b 23 494 58 624 29 564 b 19 408 20 465 19 436 b 27 236 19 351 23 294 b 13 45 32 173 17 109 b 12 -6 13 27 12 12 l 12 -75 b 4 -196 12 -115 10 -157 b -3 -307 -1 -233 -3 -271 l -3 -382 b -7 -475 -3 -412 -3 -444 l -7 -484 b -3 -520 -7 -495 -6 -507 b 23 -539 0 -533 13 -537 b 26 -540 24 -540 24 -540 b 40 -521 35 -540 36 -528 b 60 -435 53 -494 60 -464 b 85 -376 60 -410 71 -393 b 225 -255 125 -328 180 -298 b 340 -78 276 -204 321 -148 b 351 24 347 -46 351 -14 b 350 63 351 37 350 50 b 347 86 347 71 347 79 b 386 229 347 132 380 179 b 392 305 389 253 392 279 b 372 449 392 354 384 403 b 357 520 364 472 357 495 b 359 540 357 527 357 533 b 361 580 361 553 361 567 b 348 704 361 624 354 664 b 347 716 348 708 347 713 b 357 757 347 732 351 744 b 405 982 383 831 405 904 b 379 1122 405 1031 397 1079 b 348 1145 373 1135 363 1149 z m 298 651 b 300 626 300 642 300 634 b 258 513 300 579 285 543 b 82 338 204 452 134 410 b 81 367 81 347 81 357 b 115 468 81 408 92 439 b 298 651 167 534 242 576 z m 297 370 b 310 377 301 374 305 377 b 321 361 314 377 317 373 b 328 320 325 347 328 333 b 266 212 328 275 302 239 b 75 48 202 161 135 112 b 117 194 76 107 81 157 b 297 370 174 255 236 311 z m 285 48 b 294 16 291 36 294 26 b 288 -7 294 9 292 1 b 228 -92 272 -37 255 -69 b 60 -233 173 -138 120 -184 b 285 48 78 -88 184 -23 z', + }, + flag128thUp: { + x_min: 0, + x_max: 252, + y_min: -804, + y_max: 530, + ha: 1334, + o: 'm 298 -1158 b 328 -1126 312 -1158 320 -1139 b 330 -1116 330 -1123 330 -1119 b 347 -996 343 -1076 347 -1037 b 328 -837 347 -943 338 -890 b 320 -778 324 -816 320 -798 b 330 -733 320 -763 323 -749 b 340 -665 338 -714 337 -688 b 341 -645 340 -660 341 -652 b 333 -534 341 -609 333 -572 b 343 -471 333 -513 334 -492 b 361 -366 356 -436 361 -402 b 331 -202 361 -311 348 -256 b 328 -187 330 -197 328 -193 b 331 -179 328 -184 328 -181 b 363 -55 353 -137 363 -96 b 337 79 363 -12 351 33 b 327 114 333 92 327 104 b 344 144 327 124 331 132 b 359 174 353 150 357 163 b 361 228 360 193 361 210 b 243 517 361 337 325 435 b 147 596 213 546 179 569 b 75 708 111 626 75 655 b 62 744 75 723 68 733 b 50 763 58 752 58 763 b 46 762 49 763 48 762 b 17 742 36 757 22 757 b 0 697 14 726 0 711 b 1 595 0 662 3 631 b 0 469 0 552 0 511 b 1 429 0 456 0 442 b 22 289 6 382 22 337 b 24 128 22 238 24 184 b 22 66 24 108 23 86 b 19 -19 20 37 19 10 b 20 -132 19 -56 20 -95 b 13 -276 20 -180 19 -229 b 9 -359 10 -304 9 -330 b 12 -487 9 -402 12 -445 b 56 -582 12 -526 29 -554 b 197 -742 107 -632 160 -681 b 288 -1100 265 -851 276 -976 b 288 -1122 288 -1107 287 -1115 b 287 -1145 289 -1129 287 -1138 b 298 -1158 287 -1153 288 -1158 z m 304 150 b 75 475 229 256 112 334 b 304 150 233 357 305 287 z m 271 -73 b 127 72 233 -14 179 26 b 81 167 96 98 81 127 b 84 194 81 176 82 184 b 271 -73 148 102 242 39 z m 279 -396 b 132 -223 233 -330 180 -279 b 81 -112 104 -192 81 -156 b 82 -91 81 -105 81 -98 b 279 -396 167 -125 269 -281 z m 249 -609 b 69 -357 197 -520 88 -471 b 249 -609 131 -441 229 -498 z', + }, + flag128thDown: { + x_min: -0.8888888888888888, + x_max: 252, + y_min: -580, + y_max: 754, + ha: 1334, + o: 'm 298 1086 b 287 1073 288 1086 287 1081 b 288 1050 287 1066 289 1057 b 288 1028 287 1043 288 1035 b 197 670 276 904 265 779 b 56 510 160 609 107 560 b 12 415 29 482 12 454 b 9 287 12 373 9 330 b 13 204 9 258 10 232 b 20 60 19 157 20 108 b 19 -53 20 23 19 -16 b 22 -138 19 -82 20 -109 b 24 -200 23 -158 24 -180 b 22 -361 24 -256 22 -310 b 1 -501 22 -409 6 -454 b 0 -541 0 -514 0 -528 b 0 -667 0 -583 -3 -624 b 0 -809 0 -675 -3 -791 b 46 -834 4 -825 36 -829 b 50 -835 48 -834 49 -835 b 62 -816 58 -835 58 -824 b 75 -780 68 -805 75 -795 b 147 -668 75 -727 111 -698 b 243 -589 179 -641 213 -618 b 361 -300 325 -507 361 -409 b 359 -246 361 -282 360 -265 b 344 -216 357 -235 353 -222 b 327 -186 331 -204 327 -196 b 337 -151 327 -176 333 -164 b 363 -17 351 -105 363 -60 b 331 107 363 24 353 65 b 328 115 328 109 328 112 b 331 130 328 121 330 125 b 361 294 348 184 361 239 b 343 399 361 330 356 364 b 333 462 334 420 333 441 b 341 573 333 500 341 537 b 340 593 341 580 340 588 b 330 661 337 616 338 642 b 320 706 323 677 320 691 b 328 765 320 726 324 744 b 347 924 338 818 347 871 b 330 1044 347 965 343 1004 b 328 1054 330 1047 330 1051 b 298 1086 320 1067 312 1086 z m 249 537 b 69 285 229 426 131 369 b 249 537 88 399 197 448 z m 279 324 b 82 19 269 209 167 53 b 81 40 81 26 81 33 b 132 151 81 84 104 120 b 279 324 180 207 233 258 z m 271 1 b 84 -266 242 -111 148 -174 b 81 -239 82 -256 81 -248 b 127 -144 81 -199 96 -170 b 271 1 179 -98 233 -58 z m 304 -222 b 75 -547 305 -359 233 -429 b 304 -222 112 -406 229 -328 z', + }, + accidentalFlat: { + x_min: 1, + x_max: 209, + y_min: -208, + y_max: 472, + ha: 680, + o: 'm 29 -300 b 46 -289 33 -300 39 -297 b 107 -243 65 -274 86 -258 b 301 127 233 -153 301 -30 b 298 186 301 147 301 166 b 190 297 291 256 251 297 b 147 289 177 297 163 294 b 86 265 127 284 107 274 l 85 264 l 85 301 b 91 465 85 356 88 410 b 94 559 91 497 94 527 b 84 651 94 589 91 621 b 66 680 81 661 81 680 l 65 680 b 37 645 49 678 37 665 b 33 523 36 605 32 563 l 33 478 b 26 223 33 393 29 308 b 1 -141 22 101 1 -19 b 17 -287 1 -189 4 -239 b 29 -300 20 -295 23 -300 z m 68 -105 b 76 12 71 -68 72 -29 b 81 107 79 43 81 75 l 86 109 b 171 135 114 121 141 135 b 204 128 181 135 193 132 b 238 92 228 120 239 108 b 230 63 238 84 236 75 b 68 -105 193 -10 132 -59 z', + }, + accidentalNatural: { + x_min: 0, + x_max: 213.5, + y_min: -456, + y_max: 462, + ha: 918, + o: 'm 255 -657 b 281 -624 271 -657 275 -636 b 285 -599 282 -615 285 -608 b 292 -300 288 -500 289 -400 b 289 -161 292 -253 289 -207 b 300 128 292 -65 297 32 b 304 168 300 128 302 150 l 304 173 l 305 190 l 305 199 l 307 225 b 304 259 307 229 310 246 b 272 298 297 274 302 305 b 63 266 204 279 134 272 b 72 514 68 348 72 432 b 71 595 72 541 72 567 b 56 665 71 619 66 642 b 17 579 9 651 17 608 b 3 144 19 433 7 289 b 0 -7 1 94 0 43 b 3 -134 0 -50 1 -92 b 7 -219 3 -163 7 -192 b 35 -251 7 -243 17 -251 b 49 -249 39 -251 43 -251 l 223 -223 l 230 -222 l 230 -359 b 223 -516 230 -410 223 -464 b 236 -619 223 -550 226 -585 b 255 -657 240 -634 236 -657 z m 58 -63 b 55 81 56 -14 53 33 l 56 99 b 85 99 65 99 75 98 b 232 108 134 104 183 107 l 240 109 l 236 66 b 232 -48 235 29 232 -10 b 58 -81 174 -63 115 -73 z', + }, + accidentalSharp: { + x_min: -22, + x_max: 390, + y_min: -384, + y_max: 383, + ha: 767, + o: 'm 202 -553 b 219 -526 213 -552 216 -536 b 226 -471 225 -507 226 -488 b 225 -425 226 -455 225 -441 b 226 -392 225 -415 225 -402 b 233 -305 229 -363 232 -334 l 297 -292 b 331 -469 300 -353 311 -412 b 347 -485 333 -477 338 -485 b 363 -469 356 -487 359 -477 b 374 -418 373 -454 374 -435 b 376 -382 376 -405 376 -393 b 372 -276 376 -347 373 -311 l 455 -259 b 550 -156 534 -243 544 -232 b 550 -109 550 -137 552 -124 b 526 -78 549 -91 541 -78 l 523 -78 b 507 -79 517 -78 513 -78 b 403 -101 474 -88 438 -95 l 379 -105 b 382 -42 380 -85 380 -63 b 384 96 383 4 384 50 b 503 131 425 107 464 118 b 549 173 524 138 543 150 b 562 249 554 199 562 223 b 554 294 562 264 560 279 b 536 315 549 308 544 315 l 533 315 b 517 312 528 315 523 315 b 382 266 472 294 428 279 l 377 344 b 359 531 374 406 372 469 b 348 552 356 539 357 552 l 347 552 l 343 552 b 315 528 331 549 317 544 l 315 501 b 320 249 315 416 318 333 l 243 232 b 239 361 243 275 242 318 b 226 425 238 383 238 403 b 199 359 194 409 199 382 b 193 223 196 312 194 268 b 72 202 153 215 112 209 b 4 118 13 192 4 183 b 10 66 0 102 12 84 b 33 29 7 39 14 30 b 48 32 37 29 42 30 b 187 55 95 39 141 46 l 183 -75 b 176 -145 181 -99 179 -122 b 16 -179 122 -156 69 -166 b -32 -232 -14 -186 -32 -197 b -17 -331 -32 -266 -19 -298 b -1 -356 -17 -347 -13 -354 b 12 -353 1 -356 6 -354 b 167 -320 63 -341 115 -331 b 166 -377 166 -338 166 -357 b 189 -526 166 -428 171 -477 b 202 -553 192 -536 189 -553 z m 240 -132 b 243 -37 242 -101 242 -69 b 245 65 245 -3 245 30 b 315 79 269 69 292 73 b 301 -120 308 13 305 -53 z', + }, + accidentalDoubleSharp: { + x_min: 0, + x_max: 287, + y_min: -159, + y_max: 159, + ha: 318, + o: 'm 84 -229 b 107 -216 91 -229 98 -225 b 200 -125 138 -186 167 -154 b 232 -95 212 -115 222 -105 b 347 -189 271 -125 310 -157 b 370 -200 356 -196 363 -200 b 396 -179 380 -200 389 -192 b 412 -102 410 -154 406 -125 b 377 -27 410 -69 400 -46 l 325 14 b 402 91 350 42 374 68 b 413 127 410 96 413 107 b 382 200 409 148 397 176 b 350 229 370 220 360 229 b 314 210 340 229 328 223 b 274 174 300 199 285 187 b 212 104 252 151 232 128 b 92 187 173 132 132 161 b 78 193 86 192 82 193 b 68 190 75 193 72 193 b 48 179 62 186 53 187 b 40 137 43 168 40 154 b 81 16 40 92 56 32 b 107 -3 89 10 98 4 b 14 -94 76 -32 45 -62 b 0 -124 6 -102 0 -114 b 12 -154 0 -134 3 -144 b 62 -215 26 -176 48 -193 b 84 -229 69 -225 76 -229 z', + }, + accidentalDoubleFlat: { + x_min: 0, + x_max: 359, + y_min: -220, + y_max: 446, + ha: 666, + o: 'm 43 -317 b 72 -301 55 -317 63 -310 b 160 -186 108 -268 134 -226 b 236 -60 186 -145 212 -102 b 233 -131 235 -85 233 -108 b 239 -220 233 -161 235 -190 b 259 -246 240 -233 239 -240 b 301 -228 284 -252 291 -238 b 465 -7 369 -163 416 -85 b 517 173 500 48 517 108 b 451 307 517 229 505 284 b 409 315 436 312 422 315 b 331 287 382 315 356 305 b 311 274 324 282 320 274 l 310 274 l 310 566 b 305 621 310 585 312 603 b 294 642 301 628 305 642 l 292 642 b 264 622 282 641 266 636 b 253 575 259 606 256 590 b 246 418 248 523 246 471 b 248 243 246 360 248 302 l 248 187 b 164 238 220 225 193 238 b 85 213 140 238 112 226 b 84 229 85 220 84 225 b 86 315 85 258 86 287 b 81 528 86 386 82 458 b 71 582 81 547 78 566 b 56 603 66 590 68 603 l 53 603 b 23 580 40 600 26 598 b 19 537 20 566 19 552 b 20 514 19 530 19 521 b 26 390 24 472 26 432 b 14 66 26 282 16 174 b 0 -168 13 -12 0 -91 b 12 -279 0 -206 3 -242 b 30 -314 16 -294 14 -308 b 43 -317 35 -317 39 -317 z m 301 -72 b 302 7 302 -45 302 -19 l 302 86 b 351 158 304 121 321 145 b 383 166 361 163 373 166 b 435 143 402 166 419 157 b 445 127 441 138 445 132 b 441 114 445 122 444 118 b 301 -72 397 49 354 -14 z m 75 -147 b 73 30 75 -86 75 -29 b 118 82 73 62 92 76 b 132 84 124 84 128 84 b 190 52 156 84 174 69 b 193 40 192 49 193 45 b 192 33 193 37 193 35 b 75 -147 157 -30 125 -95 z', + }, + accidentalParensLeft: { + x_min: 0, + x_max: 130.18934911242604, + y_min: -270, + y_max: 267.6082500723851, + ha: 537.6082500723851, + o: 'm 107 -389 b 127 -374 114 -389 120 -384 b 141 -347 132 -367 137 -357 b 151 -294 148 -330 151 -311 b 122 -207 151 -265 141 -236 b 63 -65 94 -164 72 -117 b 59 -10 60 -46 59 -27 b 145 223 59 78 94 153 b 187 354 176 262 189 305 b 177 384 187 364 190 380 b 143 373 166 387 153 383 b 124 354 137 367 130 361 b 0 -35 33 240 0 108 l 0 -92 b 85 -372 4 -193 27 -287 b 107 -389 92 -383 99 -389 z', + }, + accidentalParensRight: { + x_min: -0.4444444444444445, + x_max: 139, + y_min: -275, + y_max: 277, + ha: 552, + o: 'm 58 -396 b 96 -354 75 -396 85 -370 b 200 13 168 -238 200 -111 b 153 268 200 109 184 190 b 49 392 131 320 101 364 b 26 399 40 397 33 399 b 0 366 10 399 0 387 b 0 318 -1 350 0 334 l 0 291 b 27 238 -3 266 7 253 b 143 9 105 180 143 98 b 141 -20 143 -1 143 -10 b 63 -225 135 -92 108 -164 b 36 -307 45 -251 36 -278 b 40 -344 36 -320 37 -331 b 42 -356 42 -347 42 -351 b 58 -396 42 -374 37 -396 z', + }, + accidentalQuarterToneFlatStein: { + x_min: 0, + x_max: 208, + y_min: -240, + y_max: 440, + ha: 680, + o: 'm 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z', + }, + accidentalThreeQuarterTonesFlatZimmermann: { + x_min: 0, + x_max: 422, + y_min: -240, + y_max: 440, + ha: 680, + o: 'm 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 336 -346 b 353 -336 340 -346 346 -343 b 413 -289 372 -320 393 -304 b 608 81 540 -199 608 -76 b 605 140 608 101 608 120 b 497 251 598 210 557 251 b 454 243 484 251 469 248 b 393 219 433 238 413 228 l 392 217 l 392 255 b 397 419 392 310 395 364 b 400 513 397 451 400 481 b 390 605 400 543 397 575 b 373 634 387 615 387 634 l 372 634 b 344 599 356 632 344 619 b 340 477 343 559 338 517 l 340 432 b 333 177 340 347 336 262 b 308 -187 328 55 308 -65 b 324 -333 308 -235 311 -285 b 336 -346 327 -341 330 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z m 374 -151 b 383 -35 377 -114 379 -75 b 387 60 386 -3 387 29 l 393 63 b 478 89 420 75 448 89 b 511 82 488 89 500 86 b 544 46 534 73 546 62 b 537 17 544 37 543 29 b 374 -151 500 -56 439 -105 z', + }, + accidentalQuarterToneSharpStein: { + x_min: 0, + x_max: 300, + y_min: -338, + y_max: 351, + ha: 689, + o: 'm 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 l 35 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z', + }, + accidentalThreeQuarterTonesSharpStein: { + x_min: -23, + x_max: 388, + y_min: -373, + y_max: 445, + ha: 818, + o: 'm 114 -537 b 138 -475 137 -518 138 -495 b 147 -292 138 -413 144 -353 b 212 -278 168 -287 190 -282 b 243 -444 215 -333 225 -389 b 261 -467 248 -454 251 -465 b 281 -446 272 -469 276 -455 b 292 -347 292 -416 288 -384 b 288 -262 289 -320 288 -291 l 374 -245 b 376 -311 374 -266 374 -288 b 390 -456 379 -357 379 -405 b 416 -396 412 -436 415 -418 b 423 -287 420 -360 423 -323 b 422 -235 423 -269 423 -252 b 451 -229 432 -233 441 -232 b 547 -98 524 -215 547 -199 l 547 -89 b 521 -49 546 -59 540 -49 b 497 -52 516 -49 507 -49 b 418 -68 469 -56 444 -63 b 423 52 419 -29 422 12 b 426 140 425 81 425 109 b 495 160 449 145 472 153 b 552 219 526 170 546 189 b 559 279 557 240 553 262 b 530 341 559 324 552 341 b 490 331 520 341 507 338 b 432 311 471 324 452 318 b 449 552 436 392 442 471 b 452 588 451 563 452 575 b 446 622 452 599 451 611 b 436 641 444 629 448 641 b 418 628 428 641 420 636 b 409 602 413 621 410 611 b 386 297 396 501 390 399 b 297 274 356 288 327 281 b 291 403 295 317 294 360 b 274 550 288 452 284 501 b 259 569 271 564 265 569 b 240 559 253 569 248 563 b 230 537 232 554 230 546 l 230 488 b 233 369 230 448 232 409 b 236 261 236 333 238 297 b 156 245 210 255 183 251 b 154 396 154 295 154 346 b 150 416 154 403 153 410 b 140 438 145 423 150 438 l 138 438 b 118 413 128 436 118 428 b 112 354 118 393 114 374 b 109 238 109 315 109 276 b 49 226 89 233 69 230 b 3 163 16 222 3 202 b 7 91 3 138 9 114 b 29 62 7 69 13 62 b 39 63 32 62 35 63 b 104 73 60 66 82 71 b 101 -10 104 46 102 17 l 92 -132 l 10 -150 b -33 -204 -19 -157 -33 -170 b -19 -310 -32 -240 -19 -274 b -6 -324 -19 -321 -13 -324 b 6 -323 -1 -324 1 -324 b 82 -307 32 -317 58 -311 b 81 -376 82 -330 81 -353 b 114 -537 81 -431 94 -484 z m 294 -92 b 297 -37 295 -73 295 -56 b 300 49 300 -9 300 20 l 300 108 b 379 127 325 114 353 120 b 374 -76 376 59 374 -9 b 294 -92 347 -82 320 -86 z m 154 -120 b 157 20 154 -73 156 -26 b 158 82 158 40 158 62 b 230 95 183 86 206 89 b 225 0 229 63 226 32 b 217 -107 223 -35 220 -71 z', + }, + accidentalBuyukMucennebFlat: { + x_min: 1.8692317181955784, + x_max: 287, + y_min: -248, + y_max: 432.4720949426819, + ha: 680.4720949426819, + o: 'm 410 128 b 302 239 403 199 363 239 b 259 232 289 239 275 236 b 199 207 239 226 219 216 l 197 206 l 197 243 l 197 251 b 347 317 248 272 298 295 b 376 347 360 324 372 334 b 389 435 387 376 393 405 b 348 454 384 462 377 465 b 202 387 300 432 251 409 b 203 408 203 395 203 402 l 203 431 b 347 490 252 451 300 469 b 376 517 360 495 372 505 b 389 599 387 546 393 572 b 348 616 384 625 377 628 l 203 556 b 196 593 202 569 199 582 b 179 622 193 603 193 622 l 177 622 b 150 588 161 621 150 608 b 147 533 150 570 148 552 b 29 488 108 517 69 503 b 3 455 12 482 3 472 b 12 353 1 422 9 389 b 145 408 56 372 101 389 b 145 363 145 392 145 377 l 29 315 b 3 281 12 310 3 298 b 12 170 1 245 9 209 l 141 226 b 138 166 140 206 138 186 b 114 -199 134 43 115 -76 b 130 -344 114 -246 117 -297 b 141 -357 132 -353 135 -357 b 158 -347 145 -357 151 -354 b 219 -301 177 -331 199 -315 b 413 69 346 -210 413 -88 b 410 128 413 89 413 108 z m 350 35 b 343 6 350 26 348 17 b 180 -163 308 -69 245 -117 b 189 -46 183 -125 184 -86 b 193 49 192 -14 193 17 l 199 52 b 284 78 226 63 253 78 b 317 71 294 78 305 75 b 350 35 340 62 351 50 z', + }, + accidentalBakiyeFlat: { + x_min: 1.8692317181955784, + x_max: 287, + y_min: -236, + y_max: 444, + ha: 680, + o: 'm 141 -340 b 158 -330 145 -340 151 -337 b 219 -284 177 -314 199 -298 b 413 86 346 -193 413 -71 b 410 145 413 107 413 125 b 302 256 403 216 363 256 b 259 249 289 256 275 253 b 199 225 239 243 219 233 l 197 223 l 197 261 b 199 334 197 285 199 310 b 347 406 249 357 298 382 b 376 439 360 413 372 425 b 390 516 384 465 390 490 b 389 537 390 523 390 530 b 372 564 384 556 382 564 b 348 557 367 564 359 562 b 204 487 300 537 253 510 b 206 518 206 497 206 507 b 196 611 206 549 203 580 b 179 639 193 621 193 639 l 177 639 b 150 605 161 638 150 625 b 145 482 148 564 144 523 l 145 458 b 29 405 107 439 68 420 b 3 366 12 397 3 386 b 12 243 1 325 9 287 b 143 307 56 265 99 285 l 138 183 b 114 -181 134 60 114 -59 b 130 -327 114 -229 117 -279 b 141 -340 132 -336 135 -340 z m 180 -145 b 189 -29 183 -108 184 -69 b 193 66 192 3 193 35 l 199 69 b 284 95 226 81 253 95 b 317 88 294 95 305 92 b 350 52 340 79 351 68 b 343 23 350 43 348 35 b 180 -145 305 -50 245 -99 z', + }, + accidentalKomaSharp: { + x_min: 0, + x_max: 300, + y_min: -338, + y_max: 351, + ha: 689, + o: 'm 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 l 35 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z', + }, + accidentalKucukMucennebSharp: { + x_min: -0.15206251809627475, + x_max: 359, + y_min: -420, + y_max: 343, + ha: 763, + o: 'm 236 -605 b 262 -543 256 -583 261 -564 b 269 -423 268 -503 269 -464 b 266 -340 269 -396 268 -367 l 361 -318 b 405 -276 384 -312 399 -298 b 413 -189 412 -248 416 -219 b 395 -164 412 -171 409 -164 b 382 -166 392 -164 387 -164 b 264 -193 343 -176 304 -184 b 269 -102 265 -163 268 -132 b 454 -62 331 -89 392 -78 b 501 -23 477 -58 494 -45 b 517 62 511 6 517 33 b 487 112 517 95 513 112 b 471 111 482 112 477 112 b 274 66 406 95 340 81 b 276 138 275 91 276 114 b 350 154 301 144 325 148 b 402 203 377 160 396 176 b 412 284 408 230 412 258 b 392 311 412 302 406 311 b 372 308 386 311 379 310 b 287 291 343 301 314 297 l 295 405 b 298 441 297 416 298 428 b 292 475 298 452 297 464 b 282 494 289 482 294 494 b 264 481 274 494 266 490 b 255 455 259 474 256 464 b 239 282 248 397 243 340 b 148 268 209 278 179 274 b 62 164 62 252 62 253 l 62 132 b 79 108 60 117 65 108 l 86 108 l 230 130 b 229 92 230 118 229 105 b 228 56 228 79 228 68 b 66 20 173 43 120 32 b 0 -59 6 7 3 1 l 0 -138 b 14 -160 -1 -156 4 -160 b 27 -158 19 -160 23 -160 b 222 -112 92 -141 157 -127 b 220 -203 220 -143 220 -173 b 147 -217 196 -207 171 -213 b 89 -288 92 -228 89 -229 b 95 -347 85 -305 96 -325 b 112 -374 92 -366 98 -374 b 125 -373 117 -374 121 -374 l 220 -351 b 222 -458 220 -386 220 -422 b 236 -605 223 -504 225 -552 z', + }, + accidentalKoron: { + x_min: 0, + x_max: 303, + y_min: -462.4598053473055, + y_max: 180, + ha: 642.4598053473055, + o: 'm 59 -665 b 72 -649 69 -662 72 -657 b 69 -626 72 -642 69 -634 b 69 -622 69 -625 69 -624 l 69 -600 b 55 -156 60 -456 68 -311 b 86 -170 66 -166 76 -170 b 112 -163 95 -170 104 -166 b 390 -35 204 -120 298 -78 b 436 -1 409 -27 436 -27 b 396 46 436 22 413 33 l 382 55 b 46 243 271 121 157 179 b 12 259 29 253 17 259 b 0 219 1 259 0 248 b 3 -372 0 22 3 -176 b 6 -616 3 -454 6 -536 b 59 -665 6 -638 40 -671 z m 55 199 b 363 24 156 141 258 84 b 55 -118 259 -24 160 -69 z', + }, + accidentalSori: { + x_min: 0, + x_max: 434, + y_min: -295, + y_max: 325, + ha: 620, + o: 'm 194 -425 b 196 -409 194 -418 196 -413 b 194 -194 196 -337 196 -266 b 364 -127 251 -171 308 -150 b 361 -321 363 -192 364 -256 b 410 -387 360 -357 373 -377 b 413 -373 412 -382 413 -377 b 418 -114 418 -287 418 -200 l 418 -105 b 595 -35 477 -82 536 -59 b 625 0 612 -27 625 -22 b 593 48 624 23 618 39 l 419 117 b 423 370 419 202 423 285 b 426 403 423 382 426 393 b 418 436 426 415 425 426 b 384 468 409 449 399 468 b 369 448 370 468 369 459 b 369 436 369 444 369 441 l 369 428 l 369 423 b 367 138 369 328 367 233 l 353 143 l 192 207 l 192 367 b 173 406 192 383 184 396 b 151 422 167 413 160 422 b 144 420 148 422 147 422 b 137 403 138 416 137 410 l 137 392 l 137 229 b 33 271 102 243 68 256 b 13 276 26 274 19 276 b 0 262 6 276 0 272 b 35 199 1 239 0 212 l 138 160 b 140 -148 138 58 138 -45 b 56 -181 111 -158 84 -170 b 24 -215 35 -189 24 -199 b 29 -235 24 -220 26 -228 b 49 -253 35 -249 42 -253 b 78 -240 59 -253 69 -243 b 140 -216 98 -233 120 -225 l 140 -356 b 194 -425 140 -406 141 -406 z m 194 -125 b 193 138 194 -37 193 50 b 315 89 233 122 275 107 b 366 71 333 84 350 76 b 364 -58 366 27 366 -16 b 194 -125 308 -81 251 -104 z m 419 49 l 526 7 l 485 -10 l 419 -36 z', + }, + articAccentAbove: { + x_min: 0, + x_max: 425, + y_min: 0, + y_max: 326, + ha: 326, + o: 'm 27 1 b 78 12 46 0 62 6 b 347 112 168 45 253 91 b 521 184 409 128 459 167 b 608 259 557 194 589 220 b 612 274 611 265 612 271 b 598 292 612 281 608 287 b 477 347 559 312 518 331 b 176 465 374 384 275 425 b 156 469 168 468 161 469 b 125 456 145 469 137 465 b 53 370 96 432 78 399 b 45 353 48 363 45 357 b 68 333 45 344 52 337 b 360 225 166 298 262 261 b 192 154 302 203 249 171 b 13 36 120 132 53 105 b 0 13 9 29 0 22 l 0 9 b 16 0 3 1 10 0 l 26 0 b 27 1 27 0 27 0 z', + }, + articAccentBelow: { + x_min: 0, + x_max: 425, + y_min: -326, + y_max: 0, + ha: 326, + o: 'm 26 -469 l 27 -469 b 78 -458 46 -469 62 -464 b 347 -357 168 -426 253 -380 b 521 -285 409 -341 459 -302 b 608 -210 557 -276 589 -249 b 612 -196 611 -204 612 -200 b 598 -179 612 -189 608 -183 b 477 -122 559 -157 518 -138 b 176 -4 374 -85 275 -45 b 156 0 168 -1 161 0 b 125 -13 145 0 137 -4 b 53 -99 96 -37 78 -71 b 45 -117 48 -107 45 -112 b 68 -137 45 -125 52 -132 b 360 -245 166 -171 262 -209 b 192 -315 302 -266 249 -300 b 13 -433 120 -337 53 -366 b 0 -456 9 -442 0 -448 l 0 -461 b 16 -469 3 -468 10 -469 z', + }, + articTenutoAbove: { + x_min: 0.35192668236256364, + x_max: 471.1238660564107, + y_min: 0, + y_max: 56, + ha: 56, + o: 'm 137 0 b 197 1 156 0 179 1 b 409 6 268 1 338 6 b 482 4 432 6 459 6 b 556 0 508 3 534 0 b 651 10 588 0 621 3 b 678 27 662 12 678 10 b 654 59 680 45 672 53 b 511 75 606 73 560 73 b 255 81 426 78 341 81 b 160 79 222 81 193 79 l 36 79 b 1 71 24 78 7 85 b 19 32 -3 56 9 43 b 45 16 26 24 36 20 b 137 0 76 3 108 0 z', + }, + articTenutoBelow: { + x_min: 0.35192668236256364, + x_max: 471.1238660564107, + y_min: -59, + y_max: -3, + ha: 56, + o: 'm 137 -85 b 197 -84 156 -85 179 -84 b 409 -79 268 -84 338 -79 b 482 -81 432 -79 459 -79 b 556 -85 508 -82 534 -85 b 651 -75 588 -85 621 -82 b 678 -58 662 -73 678 -75 b 654 -26 680 -40 672 -32 b 511 -10 606 -12 560 -12 b 255 -4 426 -7 341 -4 b 160 -6 222 -4 193 -6 l 36 -6 b 1 -14 24 -7 7 0 b 19 -53 -3 -29 9 -42 b 45 -69 26 -60 36 -65 b 137 -85 76 -82 108 -85 z', + }, + articStaccatoAbove: { + x_min: 1.4151102965496913, + x_max: 112, + y_min: 0, + y_max: 156, + ha: 156, + o: 'm 98 0 b 132 23 109 0 122 7 b 161 112 150 50 161 79 b 158 148 161 124 161 137 b 125 186 154 167 131 167 b 63 225 117 215 85 216 b 23 197 45 222 30 219 b 3 91 12 163 12 127 b 19 66 0 79 4 69 b 65 27 40 62 53 46 b 98 0 76 9 88 0 z', + }, + articStaccatoBelow: { + x_min: 1.4151102965496913, + x_max: 112.08403222864916, + y_min: -156, + y_max: 0, + ha: 156, + o: 'm 132 -202 b 161 -112 151 -174 163 -145 b 158 -76 161 -101 161 -88 b 125 -39 153 -58 131 -58 b 63 0 115 -10 85 -9 b 23 -27 45 -3 30 -6 b 3 -134 12 -62 10 -98 b 19 -158 0 -145 4 -156 b 65 -197 40 -164 53 -179 b 98 -225 75 -216 88 -225 b 132 -202 109 -225 122 -217 z', + }, + articStaccatissimoAbove: { + x_min: 0, + x_max: 139, + y_min: 0, + y_max: 411, + ha: 411, + o: 'm 104 0 b 144 115 143 29 138 75 b 197 423 158 217 180 320 b 200 454 199 433 200 444 b 181 540 200 482 193 513 b 112 592 167 573 141 592 b 55 567 92 592 72 585 b 0 490 32 546 3 527 l 0 484 b 27 279 14 416 14 347 b 84 20 43 193 52 104 b 96 0 86 13 92 6 z', + }, + articStaccatissimoBelow: { + x_min: 0, + x_max: 139, + y_min: -411, + y_max: 0, + ha: 411, + o: 'm 88 -592 b 145 -567 108 -592 128 -585 b 200 -490 168 -546 197 -527 l 200 -484 b 173 -279 186 -416 186 -347 b 117 -20 157 -193 148 -104 b 104 0 114 -13 108 -6 l 96 0 b 56 -115 58 -29 62 -75 b 3 -423 42 -217 20 -320 b 0 -454 1 -433 0 -444 b 19 -540 0 -482 7 -513 b 88 -592 33 -573 59 -592 z', + }, + articMarcatoAbove: { + x_min: 0.04121419527862119, + x_max: 396, + y_min: 0, + y_max: 328.0000000000001, + ha: 328.0000000000001, + o: 'm 477 0 b 510 13 488 0 500 6 b 570 124 546 40 563 81 b 547 183 570 147 560 166 b 356 422 487 265 405 330 b 346 442 354 429 350 436 l 346 444 b 318 465 340 456 330 464 l 312 469 b 274 449 294 480 284 461 b 242 413 262 438 253 425 b 56 196 177 343 112 274 b 1 56 26 154 13 105 b 27 20 -4 35 9 20 b 42 23 32 20 37 20 b 84 53 59 29 72 39 b 255 269 141 125 193 200 b 275 229 262 255 266 242 b 448 14 324 151 390 86 b 477 0 456 4 467 0 z', + }, + articMarcatoBelow: { + x_min: 0, + x_max: 395.9587858047214, + y_min: -328.0000000000001, + y_max: 0, + ha: 328.0000000000001, + o: 'm 258 -469 b 297 -449 276 -480 287 -461 b 328 -413 308 -438 317 -425 b 514 -196 393 -343 458 -274 b 569 -56 544 -154 557 -105 b 543 -20 575 -35 562 -20 b 528 -23 539 -20 533 -20 b 487 -53 511 -29 498 -39 b 315 -269 429 -125 377 -200 b 295 -229 308 -255 304 -242 b 122 -14 246 -151 180 -86 b 94 0 114 -4 104 0 b 60 -13 82 0 71 -6 b 0 -124 24 -40 7 -81 b 23 -183 0 -147 10 -166 b 215 -422 84 -265 166 -330 b 225 -442 216 -429 220 -436 l 225 -444 b 252 -465 230 -456 240 -464 z', + }, + fermataAbove: { + x_min: -0.04550444040404433, + x_max: 472, + y_min: 2.015071727506986, + y_max: 454, + ha: 451.984928272493, + o: 'm 39 10 b 78 108 66 37 71 73 b 163 311 92 181 111 252 b 284 423 199 353 239 392 b 373 458 312 444 340 454 b 433 431 395 458 410 446 b 603 153 530 361 596 276 b 595 121 603 144 595 131 l 595 88 b 602 50 596 75 589 55 b 639 73 619 43 631 60 b 651 102 645 82 648 92 b 667 194 660 132 662 163 b 680 278 671 222 672 248 b 560 567 680 386 638 481 b 396 654 508 625 452 649 b 291 632 364 654 325 644 b 161 526 235 613 200 566 b 4 249 85 446 26 357 b 4 174 0 222 -3 196 b 10 19 4 124 4 69 b 29 4 12 6 16 0 b 39 10 35 4 33 4 z m 338 37 b 370 40 350 36 357 36 b 380 75 387 40 380 43 b 389 94 382 79 382 85 b 356 132 389 111 374 122 b 269 154 328 147 300 156 b 225 125 252 154 228 157 b 261 48 222 81 232 56 b 338 37 287 40 312 40 z', + }, + fermataBelow: { + x_min: -0.310835055998654, + x_max: 518.570567335755, + y_min: -430, + y_max: -0.9161449836506543, + ha: 429.08385501634933, + o: 'm 344 -615 b 500 -543 402 -602 452 -576 b 713 -253 605 -471 661 -364 b 746 -98 737 -204 750 -153 b 727 -59 744 -82 744 -59 b 688 -88 711 -59 694 -68 b 678 -109 687 -96 683 -102 b 562 -314 648 -183 611 -252 b 387 -439 516 -373 458 -416 b 328 -449 367 -446 347 -449 b 180 -386 274 -449 225 -423 b 69 -179 111 -330 69 -262 b 75 -121 69 -160 71 -141 b 84 -58 78 -101 84 -79 b 82 -39 84 -52 84 -45 b 68 -1 79 -26 82 -4 b 26 -32 49 0 33 -12 b 20 -52 24 -39 22 -45 b 0 -223 9 -107 -3 -161 b 141 -553 1 -348 27 -468 b 304 -619 192 -590 243 -619 b 344 -615 317 -619 330 -618 z m 415 -190 b 435 -157 429 -192 435 -184 b 308 -27 435 -86 379 -27 b 271 -46 287 -27 272 -35 b 269 -69 269 -55 269 -62 b 364 -183 269 -128 302 -170 z', + }, + fermataLongAbove: { + x_min: 0, + x_max: 591.4911182523068, + y_min: -6, + y_max: 337.10134960318186, + ha: 343.10134960318186, + o: 'm 20 -9 b 36 14 29 -9 35 3 b 49 109 45 45 49 78 b 48 143 49 121 49 131 b 42 312 40 200 45 256 b 63 338 42 331 46 338 b 68 340 65 338 66 338 b 279 333 138 336 209 334 b 760 317 439 330 599 323 b 783 298 775 317 782 315 l 796 161 b 814 17 801 115 802 68 b 851 144 840 45 855 102 b 824 396 842 228 834 312 b 760 468 816 459 812 467 l 55 485 b 1 433 12 487 1 478 l 1 387 b 0 203 1 325 0 264 b 9 17 0 141 3 79 b 20 -9 9 7 6 -9 z m 403 3 b 439 6 413 3 425 4 b 477 42 464 9 474 22 b 478 62 478 49 478 55 l 478 84 b 465 160 478 109 478 135 b 449 173 461 167 459 173 b 354 105 386 179 354 156 b 359 71 354 95 356 84 b 360 65 360 69 360 66 b 403 3 372 14 373 3 z', + }, + fermataLongBelow: { + x_min: 0, + x_max: 602, + y_min: -335, + y_max: 7, + ha: 342, + o: 'm 793 -482 b 851 -444 822 -482 842 -471 b 867 -357 860 -416 867 -387 b 865 -336 867 -350 867 -343 b 851 -189 858 -287 855 -238 b 832 -32 847 -135 840 -84 b 824 -17 832 -26 832 -17 l 822 -17 b 805 -30 816 -19 806 -20 b 798 -88 802 -50 798 -69 b 805 -292 798 -157 801 -225 b 772 -327 806 -318 801 -327 b 360 -324 635 -327 497 -325 b 78 -327 265 -323 171 -327 b 50 -304 59 -327 50 -320 l 50 -297 b 62 -187 55 -261 60 -225 b 71 -60 62 -144 71 -102 b 68 -20 71 -48 71 -33 b 53 10 66 -10 69 10 l 52 10 b 22 -22 37 9 24 -1 b 14 -121 17 -55 16 -89 b 0 -359 10 -200 0 -279 b 6 -452 0 -390 3 -420 b 42 -481 9 -478 20 -481 l 415 -481 l 415 -482 z m 409 -183 b 454 -179 420 -183 435 -181 b 505 -124 487 -176 504 -158 b 505 -89 507 -112 505 -101 b 507 -58 505 -79 507 -68 b 505 -42 507 -52 507 -48 b 485 -10 503 -29 501 -10 b 448 -9 472 -9 461 -9 b 380 -22 425 -9 402 -12 b 363 -46 372 -27 363 -35 l 363 -49 b 364 -114 363 -71 361 -94 b 409 -183 374 -168 377 -183 z', + }, + fermataVeryLongAbove: { + x_min: 0, + x_max: 715, + y_min: -14.096346766617495, + y_max: 437, + ha: 451.0963467666175, + o: 'm 26 -20 b 42 -4 36 -22 39 -12 b 49 53 49 14 49 33 l 49 448 b 69 478 49 467 52 478 l 72 478 b 81 480 75 478 78 478 b 144 477 102 477 122 477 l 207 477 b 943 471 452 477 698 471 b 978 442 966 471 976 467 b 989 99 985 327 985 213 b 999 -19 991 60 995 22 b 1030 62 1028 6 1030 35 b 1021 507 1028 210 1025 359 b 1012 596 1021 537 1017 567 b 976 624 1009 618 998 624 b 507 626 819 624 662 625 b 46 629 353 628 200 629 b 7 590 19 629 7 618 b 0 101 7 428 0 264 b 16 -4 0 65 13 32 b 26 -20 17 -10 22 -19 z m 187 -9 b 207 30 206 -7 204 14 b 207 55 209 37 207 46 b 200 240 210 117 197 179 b 219 262 200 256 203 262 l 223 262 b 456 252 301 258 379 255 l 772 239 b 804 209 792 238 802 235 b 818 69 806 163 809 115 b 834 -4 821 46 816 19 b 857 56 852 13 857 35 b 851 183 857 99 858 141 b 827 360 841 242 841 301 b 786 390 821 383 809 389 b 189 409 588 403 387 402 b 153 377 163 409 153 400 b 173 27 153 259 150 143 b 187 -9 176 13 177 -9 z m 478 3 b 536 10 491 3 510 6 b 582 60 569 14 580 32 l 582 89 l 580 89 b 580 117 580 98 582 107 b 540 171 577 158 572 171 b 521 171 534 171 528 170 b 459 166 500 170 480 168 b 423 132 436 164 423 154 b 428 88 423 118 425 102 b 478 3 438 22 439 4 z', + }, + fermataVeryLongBelow: { + x_min: -0.012345679012345682, + x_max: 686.4443937550029, + y_min: -427, + y_max: 30, + ha: 457, + o: 'm 56 -615 b 282 -612 132 -612 207 -613 b 924 -606 497 -608 710 -606 b 973 -570 953 -606 968 -593 b 988 -455 984 -533 991 -494 b 982 -262 984 -390 982 -327 b 976 -69 982 -197 981 -134 b 976 -14 975 -50 976 -33 b 966 43 976 4 975 23 b 940 20 953 37 943 35 b 933 -76 936 -12 933 -45 b 935 -121 933 -91 933 -107 b 940 -307 940 -183 940 -245 l 940 -435 b 919 -458 940 -451 935 -458 b 894 -459 910 -458 903 -458 b 206 -467 665 -461 435 -467 b 88 -467 167 -467 127 -468 b 45 -425 45 -467 42 -465 b 46 -400 46 -416 46 -408 b 43 -325 46 -376 43 -350 b 42 -59 42 -236 42 -148 b 22 17 42 -32 36 -6 b 0 -27 -1 7 0 -10 b 7 -420 0 -158 7 -289 l 7 -474 b 16 -579 7 -510 7 -544 b 56 -615 22 -603 27 -615 z m 789 -390 b 835 -357 816 -392 829 -380 b 850 -256 844 -324 850 -291 b 848 -230 850 -248 850 -239 b 845 -135 845 -199 845 -167 l 845 -72 b 837 23 845 -40 848 -9 b 809 -27 809 14 809 -7 l 809 -222 b 788 -242 809 -238 805 -242 l 203 -229 b 180 -209 186 -229 180 -223 l 180 -160 b 179 -115 180 -145 180 -131 b 179 -50 177 -94 179 -72 b 163 24 179 -26 176 0 b 137 -6 145 19 140 10 b 134 -39 134 -17 134 -27 b 138 -105 134 -60 137 -82 l 138 -197 b 145 -343 138 -246 138 -294 b 179 -377 148 -364 151 -377 b 789 -390 383 -377 586 -380 z m 480 -164 b 566 -65 549 -164 566 -140 b 527 1 566 -10 564 1 b 436 -71 426 1 436 -9 l 436 -88 l 436 -143 b 454 -163 436 -153 439 -161 b 480 -164 464 -163 472 -164 z', + }, + fermataShortAbove: { + x_min: 0, + x_max: 545, + y_min: -18.08551453529649, + y_max: 348, + ha: 366.0855145352965, + o: 'm 16 -26 b 36 -9 26 -27 30 -16 b 354 340 143 107 249 223 b 369 348 360 346 364 348 b 382 341 373 348 377 346 l 530 199 b 743 0 599 131 672 68 b 753 -7 747 -3 750 -7 b 762 -1 756 -7 759 -6 b 785 84 776 10 785 48 b 768 150 785 112 779 138 l 399 491 b 379 501 392 498 384 501 b 357 488 372 501 364 495 b 27 137 248 370 141 251 b 1 84 12 121 1 105 b 3 69 1 79 1 75 b 0 55 1 65 0 59 b 9 1 0 36 9 20 b 16 -26 10 -7 3 -22 z m 357 24 b 367 27 360 24 363 24 b 431 118 422 42 431 49 b 429 151 431 130 431 141 b 400 193 428 171 429 193 b 333 147 359 193 333 176 b 341 42 333 111 337 78 b 357 24 343 30 346 24 z', + }, + fermataShortBelow: { + x_min: 0, + x_max: 565, + y_min: -335, + y_max: 10, + ha: 345, + o: 'm 386 -482 b 422 -455 395 -482 405 -474 b 732 -117 526 -343 631 -232 b 814 12 765 -79 799 -42 b 752 -22 780 14 768 -7 b 436 -320 645 -120 540 -219 b 419 -328 429 -325 425 -328 b 400 -318 413 -328 408 -325 b 35 0 279 -212 157 -105 b 16 14 29 4 23 14 b 7 12 13 14 10 14 b 0 -3 1 7 0 1 b 7 -23 0 -10 3 -17 b 20 -48 12 -30 14 -39 b 167 -238 60 -117 115 -177 b 351 -455 229 -310 289 -383 b 386 -482 367 -474 377 -482 z m 382 -213 b 406 -207 389 -213 396 -210 b 452 -156 431 -199 446 -180 b 461 -85 456 -132 458 -108 b 448 -32 461 -66 454 -49 b 418 -6 442 -12 431 -6 b 397 -9 410 -6 405 -7 b 348 -50 376 -14 350 -14 b 356 -170 348 -91 354 -130 b 382 -213 357 -199 363 -213 z', + }, + breathMarkComma: { + x_min: 0, + x_max: 148, + y_min: 0, + y_max: 275, + ha: 275, + o: 'm 120 0 b 187 78 156 20 174 48 b 213 209 206 121 213 164 b 206 294 213 238 210 265 b 140 390 200 337 171 367 b 122 396 134 395 128 396 b 68 382 105 396 85 384 b 46 379 60 382 53 382 b 0 328 12 369 0 357 b 1 311 0 323 1 317 b 30 210 4 275 22 243 b 66 167 39 179 46 167 b 94 171 73 167 82 168 b 143 180 109 174 124 180 b 160 179 148 180 154 180 b 120 66 124 145 120 107 b 120 0 120 45 121 23 z', + }, + breathMarkUpbow: { + x_min: 0, + x_max: 254, + y_min: 0, + y_max: 595, + ha: 595, + o: 'm 233 0 b 256 48 251 14 253 30 b 272 183 264 92 265 138 b 311 455 289 274 295 364 b 350 716 327 541 341 628 b 366 815 354 749 366 782 b 359 857 366 829 363 842 b 327 815 334 852 330 832 b 302 674 315 769 310 721 b 248 357 288 567 269 462 b 225 226 240 314 242 268 b 210 251 212 232 213 243 b 69 721 163 408 117 564 b 32 835 58 760 53 801 b 20 851 29 841 27 851 b 14 850 19 851 16 851 b 0 828 6 847 0 838 l 0 825 b 12 765 1 804 7 785 b 194 125 73 552 132 338 b 233 0 206 84 213 42 z', + }, + caesura: { + x_min: 0, + x_max: 565.5831864753837, + y_min: -0.09016994374947417, + y_max: 562.4481112129314, + ha: 562.5382811566809, + o: 'm 0 76 b 49 122 24 92 37 107 b 444 613 180 287 305 455 b 528 770 484 660 518 708 b 531 792 530 778 531 785 b 524 808 531 799 530 805 b 490 792 513 815 498 802 b 390 683 456 756 420 721 b 48 262 275 543 164 400 b 0 76 0 207 7 145 z m 226 1 b 248 13 238 -4 243 7 l 353 137 b 759 638 490 302 632 464 b 814 805 795 688 819 740 b 779 786 796 805 788 796 b 628 609 724 732 678 668 b 310 242 523 485 416 363 b 217 69 265 190 217 140 b 222 30 217 58 219 45 b 222 23 222 29 220 26 b 220 12 222 20 220 16 b 226 1 220 7 222 3 z', + }, + caesuraCurved: { + x_min: 0, + x_max: 386, + y_min: -10, + y_max: 584, + ha: 594, + o: 'm 180 -14 b 246 14 213 -13 230 0 b 347 144 288 52 315 99 b 526 471 420 246 488 350 b 556 671 546 537 556 603 b 543 798 556 713 553 756 b 504 837 537 822 521 828 b 490 841 500 840 494 841 b 472 832 482 841 477 838 b 406 678 436 785 406 737 b 410 638 406 665 408 652 b 425 511 419 595 425 553 b 315 186 425 395 387 287 b 180 -14 271 122 228 58 z m 14 24 b 49 39 29 24 40 32 b 120 114 76 60 99 85 b 216 276 156 166 184 223 b 317 626 281 384 317 501 b 315 664 317 639 317 651 b 301 773 314 701 311 737 b 262 808 295 795 278 808 b 245 799 256 808 249 805 b 170 641 209 750 170 706 b 171 621 170 634 170 628 b 177 511 176 585 177 549 b 114 229 177 415 160 320 b 0 26 79 161 42 95 b 14 24 6 24 10 24 z', + }, + restMaxima: { + x_min: 0, + x_max: 366, + y_min: -255, + y_max: 255, + ha: 510, + o: 'm 397 -367 b 504 -343 436 -367 468 -347 b 518 -318 516 -341 518 -330 b 527 -30 518 -217 527 -117 b 526 33 527 -7 527 13 l 526 301 b 501 350 526 323 520 341 b 428 367 477 361 452 367 b 374 359 410 367 393 364 b 357 333 361 354 357 347 b 356 91 357 252 356 171 l 356 30 b 340 -307 357 -82 346 -194 b 397 -367 337 -354 350 -367 z m 46 -357 b 58 -356 49 -357 53 -357 b 154 -333 91 -351 121 -338 b 173 -305 168 -330 173 -320 l 173 302 b 132 356 173 330 157 348 b 68 364 112 363 89 364 b 3 304 19 363 1 348 l 3 4 l 0 4 b 1 -302 0 -98 0 -200 b 46 -357 1 -331 16 -357 z', + }, + restDoubleWhole: { + x_min: 0, + x_max: 122, + y_min: 0, + y_max: 249, + ha: 249, + o: 'm 43 0 b 58 1 48 0 52 0 b 124 20 81 6 102 17 b 176 96 173 27 176 58 b 173 220 174 138 173 179 b 176 304 173 248 176 276 b 140 353 176 331 163 346 b 95 359 125 356 111 359 b 32 346 73 359 52 354 b 0 315 20 340 0 337 b 1 243 0 291 1 268 l 1 174 l 4 174 l 4 48 b 43 0 4 16 17 0 z', + }, + restWhole: { + x_min: 0.8908513171538642, + x_max: 500, + y_min: -120, + y_max: 14, + ha: 134, + o: 'm 356 -173 l 356 -171 l 642 -171 b 719 -115 680 -171 717 -145 b 720 -82 719 -104 720 -92 b 711 -20 720 -60 719 -40 b 672 17 704 0 694 10 b 649 20 664 20 657 20 b 605 17 634 20 621 17 b 92 19 433 17 262 17 b 29 7 69 20 49 12 b 9 -17 12 4 9 -6 b 10 -43 9 -26 10 -35 b 1 -84 10 -58 3 -72 b 76 -173 0 -147 7 -173 z', + }, + restWholeLegerLine: { + x_min: -196.7269258015421, + x_max: 685, + y_min: -157, + y_max: 29, + ha: 186, + o: 'm 96 -226 b 167 -223 121 -226 144 -225 b 300 -222 207 -222 252 -222 l 444 -222 b 660 -217 520 -222 595 -222 b 746 -131 703 -216 746 -200 b 744 -62 746 -108 747 -85 b 743 -39 743 -53 743 -46 b 789 -14 743 -16 752 -17 b 883 -16 821 -13 851 -16 b 965 -9 910 -16 937 -14 b 986 3 972 -7 986 -10 l 986 6 b 963 35 984 17 982 32 b 887 42 937 39 913 42 b 39 27 605 42 321 33 l -76 27 b -261 20 -138 27 -200 26 b -282 14 -269 20 -279 23 b -271 -7 -287 4 -276 -1 b -209 -27 -253 -23 -230 -24 b -153 -30 -190 -30 -173 -30 b -48 -29 -118 -30 -82 -27 b 6 -32 -22 -29 -6 -27 b 1 -72 3 -43 1 -58 b 4 -167 1 -105 7 -140 b 53 -223 3 -207 14 -217 b 96 -226 68 -226 82 -226 z', + }, + restHalf: { + x_min: 0, + x_max: 518.3998530468286, + y_min: 0, + y_max: 162, + ha: 162, + o: 'm 98 0 l 556 0 b 665 1 592 0 629 0 b 746 82 720 3 743 29 b 736 174 749 114 740 144 b 670 232 729 215 708 232 b 570 229 636 232 603 229 b 356 233 498 229 426 233 l 73 233 b 0 179 19 233 0 220 b 1 154 0 171 0 164 b 6 95 4 135 6 115 b 98 0 3 27 29 0 z', + }, + restHalfLegerLine: { + x_min: -120, + x_max: 448.2056815990121, + y_min: -20, + y_max: 143, + ha: 163, + o: 'm 397 -29 b 482 -23 426 -29 455 -27 b 526 -24 497 -24 511 -24 b 608 -17 554 -24 582 -23 b 645 -1 622 -14 644 -17 b 615 26 648 13 629 20 b 595 32 608 29 602 30 b 526 37 572 35 549 37 b 498 36 517 37 507 37 b 471 35 487 35 478 35 b 445 53 451 35 445 39 b 449 89 445 60 446 73 l 454 117 b 373 206 456 173 428 206 b 324 204 356 206 340 206 b 209 203 287 203 248 203 b 46 193 156 203 101 202 b 16 170 32 190 19 187 b 9 112 13 151 9 131 b 14 78 9 101 10 89 b 19 59 17 71 19 63 b -4 45 19 49 12 45 l -10 45 b -150 33 -58 45 -104 46 b -173 22 -158 32 -173 33 l -173 19 b -151 -13 -170 6 -168 -10 b -117 -17 -140 -16 -128 -17 b 118 -13 -37 -17 39 -13 b 397 -29 213 -13 308 -29 z', + }, + restQuarter: { + x_min: -0.3784452492533808, + x_max: 263, + y_min: -415, + y_max: 415, + ha: 830, + o: 'm 151 -596 b 164 -563 163 -589 161 -575 b 160 -546 164 -557 161 -552 b 124 -396 148 -495 135 -446 b 122 -380 122 -390 122 -384 b 199 -255 122 -331 158 -272 b 228 -256 209 -249 217 -253 b 324 -346 274 -271 298 -310 b 353 -369 331 -356 341 -369 b 360 -367 356 -369 357 -369 b 379 -336 373 -361 379 -348 l 377 -325 b 344 -232 372 -292 366 -258 b 249 -58 301 -180 278 -117 b 242 -36 245 -49 242 -42 b 258 -7 242 -26 248 -17 b 328 78 284 20 311 45 b 354 158 344 104 354 131 b 337 216 354 177 350 196 b 213 435 294 288 249 359 b 115 575 189 487 158 536 b 78 598 105 585 92 598 b 59 592 72 598 66 596 b 39 562 45 583 39 572 b 53 527 39 550 45 539 b 168 344 98 469 125 402 b 187 307 181 328 187 317 b 153 269 187 294 176 284 b 62 213 122 252 91 235 b 40 180 48 203 40 192 b 46 158 40 173 43 166 b 99 65 60 125 79 95 b 183 -79 131 20 160 -29 b 156 -86 173 -88 164 -85 b 0 -261 58 -99 -7 -173 b 96 -557 10 -366 49 -464 b 124 -585 102 -569 109 -580 b 145 -598 132 -588 138 -598 b 151 -596 147 -598 150 -598 z', + }, + rest8th: { + x_min: 0, + x_max: 289, + y_min: -260, + y_max: 261, + ha: 521, + o: 'm 164 -374 b 212 -340 190 -373 203 -357 b 276 -190 238 -292 258 -242 b 410 285 333 -36 359 128 b 416 314 413 294 416 304 l 416 321 b 393 354 415 341 410 354 b 382 353 389 354 386 354 b 292 311 347 347 315 333 b 174 225 256 276 216 251 b 157 219 168 222 163 219 b 140 228 151 219 145 222 b 131 246 134 233 131 240 b 135 262 131 252 132 256 b 147 298 141 272 147 285 b 127 367 147 323 154 354 b 94 376 114 373 102 376 b 48 336 75 376 63 363 b 3 181 20 288 12 235 b 0 150 1 170 0 160 b 109 24 0 84 35 24 b 171 36 127 24 148 27 b 289 101 213 52 248 75 b 164 -374 256 -62 193 -213 z', + }, + rest16th: { + x_min: 0, + x_max: 333, + y_min: -328.283950617284, + y_max: 244, + ha: 572.2839506172841, + o: 'm 209 -471 b 246 -458 222 -477 236 -468 b 307 -338 279 -425 300 -384 b 324 -226 312 -301 317 -262 b 428 161 350 -94 386 35 b 480 318 445 215 480 259 b 467 347 480 331 477 341 b 445 351 461 350 454 351 b 408 337 432 351 419 347 b 402 333 405 336 403 334 b 223 215 344 294 294 245 b 236 259 229 233 235 246 b 238 276 238 265 238 271 b 212 338 238 302 226 334 b 193 341 206 340 199 341 b 86 289 156 341 104 317 b 59 180 66 255 59 217 b 156 27 59 76 92 27 b 236 46 179 27 204 35 b 338 101 271 59 298 82 b 289 -49 312 49 302 0 b 196 -122 276 -99 235 -107 b 176 -114 187 -127 176 -127 l 176 -111 b 157 -53 177 -88 164 -72 b 69 -9 141 -7 101 -16 b 17 -48 43 -3 29 -27 b 0 -127 4 -73 0 -99 b 6 -186 0 -147 1 -167 b 82 -294 17 -262 37 -294 b 160 -276 102 -294 128 -289 b 219 -242 181 -268 203 -259 b 236 -230 223 -236 229 -230 b 243 -232 239 -230 240 -230 b 235 -275 248 -246 239 -261 b 202 -456 220 -334 202 -395 b 209 -471 202 -462 203 -468 z', + }, + rest32nd: { + x_min: 0, + x_max: 347, + y_min: -497.5023916875033, + y_max: 483, + ha: 980.5023916875033, + o: 'm 177 -716 b 217 -690 194 -720 209 -704 b 233 -655 225 -680 230 -668 b 292 -390 253 -567 275 -480 b 361 -48 312 -275 336 -161 b 452 400 393 102 422 252 b 497 629 467 477 482 553 b 500 647 498 635 500 641 b 480 691 500 665 492 684 b 464 696 475 694 469 696 b 418 674 448 696 431 685 l 361 626 b 333 611 353 618 343 612 b 308 629 325 611 317 616 b 239 667 292 651 265 661 b 204 670 228 668 216 670 b 86 559 141 670 95 628 b 85 537 86 552 85 544 b 107 416 85 495 95 455 b 161 372 114 389 134 372 b 174 373 166 372 170 372 b 226 383 192 374 209 377 b 387 478 285 402 330 444 b 364 386 379 444 364 415 b 276 271 364 323 320 298 b 265 266 272 268 268 266 b 252 276 261 266 256 269 b 143 333 229 311 186 333 b 107 327 130 333 118 330 b 43 243 62 314 46 291 b 58 145 43 210 52 179 b 150 63 68 92 99 63 b 315 132 213 63 259 98 b 266 -58 297 63 281 4 b 207 -101 259 -91 230 -96 b 186 -66 186 -107 199 -75 b 180 -50 181 -63 183 -55 b 101 -3 160 -23 135 -3 b 9 -66 59 -3 20 -32 b 0 -118 3 -84 0 -101 b 10 -196 0 -144 6 -170 b 104 -287 20 -256 52 -287 b 137 -282 114 -287 125 -287 b 184 -269 151 -281 171 -269 b 196 -275 190 -269 193 -271 b 199 -287 197 -278 199 -282 b 184 -343 199 -304 189 -325 b 181 -348 184 -346 183 -347 b 134 -595 158 -429 131 -508 b 156 -677 134 -624 150 -648 b 177 -716 158 -693 160 -713 z', + }, + rest64th: { + x_min: 0, + x_max: 428, + y_min: -720, + y_max: 473.6797408388932, + ha: 1193.6797408388932, + o: 'm 200 -1037 b 229 -1012 215 -1037 222 -1025 b 238 -984 233 -1004 236 -994 b 282 -780 248 -914 265 -848 b 386 -369 317 -644 354 -507 b 491 104 422 -212 451 -53 b 600 541 528 249 550 399 b 616 629 611 570 616 599 b 600 680 616 648 615 671 b 550 665 586 687 566 677 b 480 618 527 649 501 635 b 464 611 474 613 468 611 b 448 622 458 611 454 615 b 366 662 425 651 397 662 b 331 658 354 662 343 661 b 242 572 285 647 253 619 b 236 528 239 557 236 543 b 266 400 236 484 251 442 b 325 373 274 377 301 373 b 436 409 366 373 403 383 l 494 452 b 474 360 485 416 474 389 b 383 248 474 297 435 269 b 320 328 377 288 351 310 b 276 341 305 337 291 341 b 186 269 235 341 194 311 b 181 230 183 256 181 243 b 187 153 181 204 186 179 b 279 63 192 86 233 63 b 304 65 288 63 295 63 b 416 115 344 72 379 92 b 387 -14 406 69 397 27 b 320 -95 380 -52 369 -86 b 318 -79 320 -89 320 -84 b 223 0 305 -29 271 0 b 122 -81 171 0 135 -30 b 118 -127 120 -96 118 -112 l 118 -196 b 137 -242 118 -215 125 -229 b 209 -275 157 -266 181 -275 b 249 -269 222 -275 235 -274 b 318 -248 272 -264 294 -255 b 281 -390 315 -301 292 -344 b 276 -400 279 -393 279 -397 b 259 -420 272 -408 266 -416 b 246 -429 255 -425 251 -429 b 233 -415 242 -429 238 -426 b 176 -359 225 -389 200 -372 b 121 -346 158 -348 140 -346 b 14 -408 73 -346 27 -370 b 0 -498 4 -438 0 -468 b 6 -564 0 -520 3 -543 b 91 -635 12 -611 45 -635 b 131 -629 104 -635 117 -634 b 223 -590 163 -622 190 -603 b 166 -824 203 -671 189 -747 b 148 -912 157 -852 148 -881 b 156 -955 148 -926 150 -940 b 177 -1008 161 -972 170 -991 b 200 -1037 181 -1020 183 -1037 z', + }, + rest128th: { + x_min: 0.6717818579024267, + x_max: 491, + y_min: -711, + y_max: 719, + ha: 1430, + o: 'm 233 -1015 b 271 -956 256 -1002 266 -981 l 314 -723 b 393 -350 337 -598 366 -474 b 543 312 442 -128 492 91 b 687 841 583 490 635 665 b 707 958 698 880 707 919 b 706 986 707 968 707 976 b 688 1025 704 999 704 1024 b 670 1027 683 1025 677 1027 b 629 1007 655 1027 639 1022 b 559 945 613 981 586 968 b 541 1004 553 968 559 991 b 456 1035 516 1024 488 1035 b 419 1030 444 1035 431 1034 b 344 953 379 1018 353 995 b 340 900 341 936 340 917 b 341 847 340 881 341 864 b 380 779 340 815 354 793 b 464 763 406 765 435 762 b 592 814 510 763 549 786 b 546 660 575 757 556 710 b 480 585 537 619 517 598 b 478 599 480 590 478 595 b 386 678 472 641 428 678 b 294 612 343 678 304 651 b 279 477 282 567 278 521 b 363 395 281 428 317 395 b 380 396 369 395 374 395 b 488 436 416 403 449 419 b 384 233 469 357 468 275 b 359 291 373 252 377 276 b 282 318 337 310 310 318 b 181 264 243 318 203 298 b 154 107 153 216 154 161 b 242 6 154 42 187 6 b 278 10 253 6 265 7 b 408 88 330 22 366 55 b 387 -1 400 56 393 27 b 301 -112 379 -55 354 -94 b 289 -65 297 -95 302 -79 b 219 -32 269 -42 245 -32 b 183 -37 207 -32 196 -35 b 112 -109 144 -46 121 -71 b 105 -219 104 -145 108 -183 b 186 -315 101 -276 134 -315 b 230 -307 199 -315 215 -312 b 324 -256 264 -295 292 -275 b 180 -491 323 -383 266 -471 b 183 -459 180 -480 180 -469 b 184 -442 184 -454 184 -448 l 184 -436 b 135 -369 184 -403 170 -383 b 102 -363 125 -364 114 -363 b 29 -399 73 -363 45 -376 b 1 -556 -4 -448 6 -503 b 109 -670 -4 -625 43 -670 b 140 -667 118 -670 130 -668 b 253 -616 180 -658 213 -638 b 238 -688 248 -644 242 -665 b 192 -959 220 -779 192 -867 b 193 -992 192 -971 192 -981 b 210 -1024 194 -1014 199 -1024 b 233 -1015 216 -1024 223 -1021 z', + }, + dynamicPiano: { + x_min: -49, + x_max: 326.5019318364244, + y_min: -142, + y_max: 515, + ha: 657, + o: 'm -56 -204 b -42 -202 -52 -204 -46 -203 b -19 -194 -35 -202 -26 -197 b 147 -138 35 -170 91 -151 b 249 -58 194 -127 223 -95 b 262 -29 255 -50 262 -39 b 258 -17 262 -24 261 -20 b 232 -7 252 -10 242 -7 b 210 -12 225 -7 217 -9 b 125 -40 184 -23 157 -30 b 183 140 153 19 171 79 b 251 167 207 144 230 153 b 469 518 383 262 480 382 b 357 687 472 626 420 687 b 315 678 344 687 330 684 b 204 600 279 664 240 634 b 210 704 206 635 209 670 b 215 721 212 710 215 716 b 206 733 215 727 212 730 b 180 742 197 736 189 742 b 164 734 176 742 170 740 b 1 575 108 684 36 645 b -7 557 -1 569 -7 563 b -6 553 -7 556 -7 554 b 7 547 -3 547 3 547 l 17 547 b 82 575 43 547 59 567 l 82 452 b 56 46 82 317 81 180 b 17 -66 49 7 46 -36 b -62 -173 -13 -99 -37 -135 b -71 -192 -66 -179 -71 -184 b -68 -199 -71 -193 -69 -196 b -56 -204 -65 -203 -60 -204 z m 196 258 b 197 266 197 261 197 264 b 200 510 200 347 199 429 b 233 543 210 521 222 533 b 281 560 249 554 266 560 b 340 503 310 560 333 540 b 344 461 343 488 344 474 b 321 323 344 413 333 369 b 268 272 315 300 295 281 b 196 258 245 265 220 261 z', + }, + dynamicMezzo: { + x_min: -18, + x_max: 559, + y_min: -50, + y_max: 365, + ha: 415, + o: 'm 43 -71 b 160 19 86 -71 143 -26 b 230 264 189 99 200 184 b 282 363 243 297 259 327 b 287 320 285 347 287 333 b 284 279 287 305 285 292 l 249 -12 b 275 -43 248 -29 245 -43 b 395 45 321 -43 389 3 b 462 271 406 124 436 197 b 523 387 475 310 490 348 l 523 346 b 504 130 521 274 513 202 b 501 81 501 114 501 98 b 510 3 501 55 504 29 b 580 -72 521 -48 543 -72 b 625 -63 593 -72 608 -69 b 789 50 690 -43 744 -3 b 805 72 795 56 805 63 b 798 85 805 76 802 81 b 778 94 792 91 785 94 b 755 85 770 94 763 91 l 693 40 b 675 33 685 36 680 33 b 658 52 668 33 662 39 b 645 144 651 82 645 112 b 658 448 641 246 660 346 b 606 507 658 485 638 507 b 583 504 599 507 592 505 b 495 446 547 497 521 471 b 420 373 471 423 448 399 b 413 458 418 406 418 432 b 361 507 408 490 386 507 b 320 491 347 507 333 501 b 160 307 256 444 207 382 l 160 337 b 174 488 160 387 174 438 b 156 521 174 501 173 513 b 137 526 148 524 143 526 b 109 513 127 526 118 520 b -16 399 66 477 23 439 b -26 383 -20 395 -26 389 l -26 379 b -14 370 -24 372 -20 370 b -6 372 -12 370 -9 372 b 19 376 4 374 12 376 b 36 359 32 376 36 370 b 30 330 36 350 35 341 l 30 323 b 9 -35 23 203 17 85 b 43 -71 6 -65 19 -71 z', + }, + dynamicForte: { + x_min: -144, + x_max: 311.30112136775, + y_min: -115.3876295915697, + y_max: 504, + ha: 619.3876295915697, + o: 'm -101 -166 b 173 76 7 -153 150 -30 b 206 344 192 164 202 253 b 268 338 226 343 246 341 b 384 395 317 333 353 361 b 397 419 393 405 397 412 b 367 442 397 429 387 436 b 350 444 361 444 356 444 b 206 455 302 449 255 454 l 206 474 b 202 540 204 495 202 518 b 209 593 202 557 203 576 b 236 624 215 613 225 624 b 265 612 245 624 253 619 b 308 552 287 596 302 577 b 336 533 312 534 323 533 b 448 611 366 533 444 583 b 399 696 452 648 423 671 b 382 706 395 700 387 703 b 308 726 357 720 333 726 b 207 684 272 726 239 711 b 60 455 135 622 60 560 l 10 455 b -23 448 -1 455 -13 454 b -102 372 -55 426 -76 397 b -109 357 -108 367 -109 361 b -95 347 -109 353 -105 348 b -63 346 -84 346 -73 346 b 0 344 -43 344 -22 344 l 63 344 b 53 186 63 291 59 239 b 23 0 46 124 42 60 b -35 -60 10 -42 -6 -60 b -73 -52 -45 -60 -58 -58 b -91 -48 -79 -49 -85 -48 b -109 -53 -96 -48 -102 -49 b -199 -124 -143 -72 -168 -99 b -207 -137 -203 -128 -207 -132 b -194 -148 -207 -141 -203 -145 b -101 -166 -164 -160 -132 -168 z', + }, + dynamicRinforzando: { + x_min: -75, + x_max: 322.0960720195126, + y_min: -90, + y_max: 325, + ha: 415, + o: 'm 23 -130 b 40 -125 27 -130 33 -128 b 128 -9 81 -114 125 -53 b 145 200 132 62 141 130 b 148 238 147 212 148 225 b 308 321 184 291 245 321 b 363 314 325 321 344 318 b 377 310 369 312 373 310 b 384 311 380 310 382 310 b 464 415 410 317 464 389 b 446 433 465 429 455 429 b 390 445 428 441 409 445 b 305 429 361 445 334 438 b 167 346 252 413 202 393 b 153 325 163 338 158 333 b 148 438 154 363 151 399 b 121 468 147 456 134 468 b 101 458 115 468 108 465 b -63 310 46 409 -16 367 b -108 240 -78 289 -98 271 b 32 330 -50 256 -13 297 b 37 304 37 320 37 312 l 37 292 b 10 -101 27 161 20 30 b 23 -130 9 -120 12 -130 z', + }, + dynamicSforzando: { + x_min: 0, + x_max: 296, + y_min: 0, + y_max: 379, + ha: 379, + o: 'm 151 0 b 174 1 160 0 166 0 b 392 158 272 14 346 71 b 405 207 400 174 405 190 b 359 287 405 236 389 265 b 261 325 328 308 294 315 b 168 413 216 340 181 366 b 166 426 167 418 166 423 b 176 438 166 432 167 436 b 199 441 183 441 190 441 b 310 393 238 441 295 422 b 334 370 317 376 325 370 b 363 386 343 370 353 379 b 422 445 386 402 408 420 b 426 458 425 449 426 454 b 422 469 426 462 425 465 b 274 546 395 518 333 546 b 161 503 232 546 190 531 b 86 405 132 472 108 439 b 71 347 75 387 71 367 b 112 256 71 312 85 279 b 209 215 141 232 176 226 b 284 168 238 206 266 197 b 300 131 291 157 300 144 b 298 120 300 127 298 122 b 278 107 294 109 285 108 b 262 108 271 107 266 108 l 259 108 b 114 157 200 107 156 125 b 96 181 104 163 96 170 l 96 184 b 102 202 96 190 102 196 b 96 209 102 204 101 207 b 63 194 82 215 72 204 b 7 109 42 168 26 138 b 0 86 3 101 0 94 b 13 60 0 78 4 68 b 151 0 53 23 101 0 z', + }, + dynamicZ: { + x_min: -42.73880183193087, + x_max: 331, + y_min: 0, + y_max: 328, + ha: 328, + o: 'm -45 0 b -6 16 -32 0 -17 10 b 3 20 -3 16 0 19 b 144 60 49 48 96 60 b 284 22 190 60 238 46 b 348 4 305 10 327 4 b 461 75 393 4 435 30 b 468 91 464 81 467 86 b 456 104 468 95 465 99 b 287 173 402 131 348 167 b 239 176 271 174 255 176 b 168 174 217 176 194 174 b 367 340 236 236 298 294 b 459 423 402 363 432 392 b 477 454 467 431 475 442 b 474 462 477 456 475 459 b 454 472 469 469 462 472 b 432 468 446 472 439 469 b 356 448 406 461 380 455 b 210 422 307 433 258 422 b 109 442 177 422 144 428 b 94 445 104 444 99 445 b 69 433 85 445 76 442 b 27 390 56 419 39 406 b -9 343 16 373 -17 357 b 63 311 3 320 36 314 l 78 311 b 132 307 95 308 114 307 b 240 314 168 307 203 311 l 193 271 b -37 50 117 196 19 145 b -59 7 -46 36 -69 20 b -45 0 -55 3 -50 0 z', + }, + ornamentTrill: { + x_min: 1, + x_max: 551, + y_min: -18, + y_max: 539, + ha: 557, + o: 'm 321 612 b 190 602 278 605 235 605 l 190 638 b 187 693 190 652 190 667 b 161 776 184 717 193 776 b 137 747 150 776 137 766 b 130 654 135 716 131 685 l 130 596 l 52 588 b 4 539 23 585 7 570 b 1 477 3 530 1 500 b 3 448 1 461 3 448 l 3 452 b 53 432 6 436 23 432 b 134 435 75 432 102 433 b 151 117 138 328 147 223 b 170 13 153 82 157 46 b 209 -26 179 -10 193 -26 b 222 -22 213 -26 217 -24 b 269 -17 233 -16 253 -27 b 343 135 325 19 346 66 b 343 158 343 147 344 147 b 323 192 341 171 337 187 b 291 176 311 194 300 184 l 264 148 b 229 131 261 145 238 131 b 212 170 209 131 213 154 b 194 438 203 259 199 348 l 272 442 b 284 452 276 441 279 441 b 305 462 287 461 295 462 l 312 462 b 346 477 325 462 340 464 b 366 560 357 503 366 531 b 321 612 366 598 356 618 z m 759 588 b 711 560 749 592 733 570 b 588 500 671 541 631 521 b 583 533 586 514 586 524 b 560 576 577 549 577 572 b 517 550 541 582 528 564 b 416 423 482 508 452 462 b 382 353 392 397 384 370 b 387 305 380 341 386 318 b 392 275 389 295 392 285 b 409 243 393 262 393 243 b 431 262 419 243 425 255 b 521 373 459 298 488 333 b 523 354 521 366 523 360 b 520 337 523 346 521 340 b 508 295 513 323 508 310 b 530 102 508 279 524 122 b 549 66 533 88 530 66 b 577 99 563 66 572 84 b 580 131 580 109 580 121 l 580 302 b 600 347 580 318 582 337 b 701 392 632 364 665 384 b 793 518 785 409 793 435 b 759 588 793 559 785 576 z', + }, + ornamentTurn: { + x_min: 0, + x_max: 574, + y_min: 0, + y_max: 312, + ha: 312, + o: 'm 651 0 b 816 132 727 0 796 46 b 827 223 822 163 827 193 b 808 340 827 262 821 301 b 665 449 785 408 729 449 b 636 446 655 449 647 448 b 589 384 600 441 586 422 l 602 300 b 611 285 603 291 605 285 b 621 288 613 285 616 287 b 655 295 632 294 644 295 b 711 284 674 295 693 289 b 773 209 740 275 773 232 b 697 156 773 184 734 160 b 664 154 685 154 675 154 b 579 168 635 154 608 158 b 455 242 533 186 495 213 b 261 400 387 291 331 354 b 160 432 225 422 190 432 b 20 328 98 432 49 392 b 0 229 6 295 0 262 b 30 71 0 176 14 122 b 144 3 43 29 96 3 b 168 6 153 3 160 4 b 248 122 233 20 248 39 b 246 147 248 124 248 135 b 226 177 243 164 239 177 b 206 170 220 177 215 174 b 144 154 186 158 166 154 b 79 170 122 154 101 160 b 53 202 62 179 53 189 b 60 228 53 209 55 217 b 161 281 81 261 120 281 b 183 279 168 281 176 281 b 325 190 243 269 284 229 b 572 16 402 124 475 53 b 651 0 598 6 625 0 z', + }, + ornamentTurnSlash: { + x_min: 0, + x_max: 574, + y_min: -106, + y_max: 405, + ha: 511, + o: 'm 441 -153 b 456 -60 455 -118 456 -89 b 455 81 455 -14 455 33 b 572 14 491 55 530 30 b 651 -1 598 4 625 -1 b 816 131 727 -1 796 45 b 827 222 822 161 827 192 b 808 338 827 261 821 300 b 665 448 785 406 729 448 b 636 445 655 448 647 446 b 589 383 600 439 586 420 l 602 298 b 611 284 603 289 605 284 b 621 287 613 284 616 285 b 655 294 632 292 644 294 b 711 282 674 294 693 288 b 773 207 740 274 773 230 b 697 154 773 183 734 158 b 664 153 685 153 675 153 b 579 167 635 153 608 157 b 455 240 533 183 495 212 b 454 242 455 240 455 242 l 454 337 b 452 488 454 386 452 439 b 433 570 452 517 451 546 b 425 583 431 575 431 583 l 422 583 b 403 566 415 582 408 573 b 402 546 400 560 402 553 l 397 287 b 261 399 353 325 310 366 b 160 431 225 420 190 431 b 20 327 98 431 48 390 b 0 228 6 294 0 261 b 30 69 0 174 14 121 b 144 1 43 27 96 1 b 168 4 153 1 160 3 b 248 121 233 19 248 37 b 246 145 248 122 248 134 b 226 176 243 163 239 176 b 206 168 220 176 215 173 b 144 153 186 157 166 153 b 79 168 122 153 101 158 b 53 200 62 177 53 187 b 60 226 53 207 55 216 b 161 279 79 259 120 279 b 183 278 168 279 176 279 b 325 189 243 266 282 226 b 395 130 348 168 372 148 b 393 71 393 109 393 89 b 441 -153 390 -6 402 -78 z', + }, + ornamentMordent: { + x_min: 0, + x_max: 700, + y_min: 0, + y_max: 497, + ha: 497, + o: 'm 513 0 b 528 39 526 14 527 27 b 531 72 531 50 531 60 b 528 138 531 94 528 117 l 528 347 b 552 359 537 354 544 359 b 579 338 560 359 569 353 b 674 217 609 297 639 255 b 719 190 690 200 704 190 b 759 215 732 190 744 197 b 940 395 815 279 877 337 b 1001 490 968 422 986 455 b 1008 513 1004 495 1008 505 b 1002 524 1008 517 1007 521 b 968 516 994 530 978 524 b 960 508 965 513 963 510 b 798 356 900 464 848 410 b 778 341 791 347 783 341 b 757 354 772 341 765 346 b 661 475 720 392 690 432 b 611 517 644 504 629 517 b 563 498 598 517 583 511 b 527 471 550 490 539 481 l 527 570 b 492 716 526 619 523 671 b 472 677 480 704 472 694 b 465 399 474 585 468 491 b 439 366 456 387 448 376 b 384 320 415 336 399 320 b 330 367 369 320 354 336 b 325 376 328 369 327 373 b 226 490 291 413 265 456 b 189 505 213 500 202 505 b 157 491 177 505 167 500 b 0 229 75 420 0 346 b 1 202 0 220 0 212 b 22 215 12 203 16 209 b 124 327 55 252 89 289 b 147 343 132 337 140 343 b 171 323 156 343 164 336 b 266 197 196 276 232 236 b 337 157 291 170 314 157 b 410 207 361 157 386 174 b 461 274 428 229 444 252 b 462 166 461 238 461 202 b 513 0 465 108 487 55 z', + }, + ornamentShortTrill: { + x_min: 0, + x_max: 747, + y_min: 0, + y_max: 243, + ha: 243, + o: 'm 379 0 b 428 14 395 0 410 4 b 474 56 445 26 461 39 b 552 157 500 89 526 122 b 566 168 556 163 560 168 b 575 157 569 168 572 166 b 664 36 592 107 628 72 b 733 1 685 13 710 1 b 802 35 757 1 780 13 b 1007 249 871 105 940 177 b 1067 324 1028 272 1054 295 b 1076 340 1068 330 1076 334 b 1073 346 1076 341 1076 343 b 1057 350 1068 348 1063 350 b 1047 347 1053 350 1050 350 b 1001 310 1031 336 1015 324 l 857 157 b 844 143 852 153 848 143 b 835 150 841 143 838 144 b 757 242 815 186 780 209 b 685 298 739 268 713 284 b 641 310 670 305 655 310 b 590 288 625 310 608 304 b 497 179 554 256 527 215 b 480 164 490 170 485 164 b 462 179 474 164 469 168 b 372 295 436 220 405 258 b 278 344 346 324 312 344 b 199 310 252 344 226 334 b 92 196 161 274 128 233 b 0 24 46 148 23 89 b 42 48 22 27 32 37 b 156 168 84 85 114 132 b 196 192 174 184 186 192 b 228 158 206 192 215 181 b 312 36 252 114 282 75 b 379 0 331 12 354 0 z', + }, + ornamentTremblement: { + x_min: 0, + x_max: 982.17691453624, + y_min: 0, + y_max: 224, + ha: 224, + o: 'm 0 0 b 63 36 30 12 48 23 b 157 124 94 66 125 94 b 177 135 164 131 170 135 b 196 122 183 135 189 131 b 268 40 217 94 245 68 b 323 6 288 16 304 6 b 369 20 336 6 350 10 b 412 53 384 29 399 40 b 501 145 442 84 472 114 b 523 158 508 154 516 158 b 543 145 528 158 536 154 b 641 45 576 112 608 78 b 698 17 658 27 677 17 b 729 23 708 17 719 20 b 804 65 756 32 780 46 b 904 154 837 95 871 124 b 920 163 910 160 916 163 b 936 153 924 163 930 160 b 1024 60 965 121 996 92 b 1112 13 1053 29 1080 13 b 1184 39 1135 13 1158 22 b 1359 194 1248 84 1305 138 b 1413 301 1388 223 1403 261 b 1404 323 1417 315 1413 323 b 1391 320 1400 323 1395 321 b 1344 294 1375 314 1358 307 b 1224 186 1305 258 1269 216 b 1194 173 1212 179 1202 173 b 1165 193 1184 173 1175 179 b 1096 271 1145 222 1122 248 b 1001 318 1061 302 1031 318 b 903 268 969 318 937 301 b 806 186 871 239 841 210 b 782 174 796 179 789 174 b 756 193 773 174 765 180 b 652 291 729 232 693 266 b 596 308 634 302 615 308 b 530 278 573 308 552 298 l 415 168 b 393 157 408 161 400 157 b 373 171 387 157 380 161 b 305 245 353 197 330 222 b 248 276 285 266 266 278 b 189 245 229 276 210 266 b 81 144 156 209 120 174 b 0 0 33 109 26 56 z', + }, + ornamentPrecompAppoggTrill: { + x_min: -0.11067192132025548, + x_max: 1066, + y_min: -50, + y_max: 533.1706452421108, + ha: 583.1706452421108, + o: 'm 187 -46 b 213 -14 197 -37 204 -26 b 285 151 251 36 266 94 b 304 189 294 177 297 189 b 337 168 311 189 320 181 b 458 33 386 131 415 76 b 495 12 472 19 484 12 b 531 40 508 12 518 22 b 580 168 557 79 569 124 b 622 235 592 213 603 235 b 683 194 636 235 655 222 b 838 26 737 140 791 86 b 919 -33 860 -1 881 -39 b 984 53 960 -27 971 19 b 1022 156 998 86 1008 122 b 1054 190 1032 179 1041 190 b 1089 167 1063 190 1074 183 b 1208 32 1129 122 1171 78 b 1244 10 1221 17 1231 10 b 1273 22 1253 10 1263 14 b 1496 206 1352 78 1427 137 b 1535 310 1526 236 1535 272 b 1531 359 1535 325 1534 343 b 1496 343 1515 360 1506 351 l 1309 192 b 1269 167 1289 176 1279 167 b 1234 199 1260 167 1251 177 b 1122 324 1200 243 1168 289 b 1074 344 1106 337 1089 344 b 1014 301 1051 344 1030 328 b 952 144 985 252 971 197 b 933 121 946 128 940 121 b 910 137 927 121 920 125 b 850 210 888 161 870 186 b 687 369 799 266 750 325 b 631 390 665 383 647 390 b 567 327 602 390 580 369 b 527 199 554 284 543 242 b 508 168 520 179 514 168 b 482 192 503 168 495 177 b 353 328 444 240 405 292 b 312 343 338 338 324 343 b 266 297 292 343 276 327 b 204 125 248 239 232 180 b 143 79 193 102 173 79 b 92 122 117 79 105 102 b 81 154 86 131 84 143 b 48 423 59 242 50 333 b 45 544 46 464 45 504 b 53 730 45 606 48 668 b 40 768 55 744 52 766 b 13 730 19 770 14 747 b 0 514 7 658 -1 586 b 26 122 3 383 6 252 b 75 -36 35 66 40 10 b 134 -72 92 -59 112 -72 b 187 -46 151 -72 170 -63 z', + }, + ornamentPrecompSlideTrillDAnglebert: { + x_min: 0, + x_max: 1088, + y_min: -380, + y_max: 252, + ha: 632, + o: 'm 560 -539 b 439 -481 527 -497 484 -485 b 354 -461 409 -478 380 -477 b 131 -154 236 -389 161 -285 b 124 -98 127 -135 124 -117 b 196 55 124 -40 148 10 b 308 99 230 86 268 99 b 399 81 337 99 367 92 b 514 22 441 66 477 43 b 619 -30 567 -9 590 -30 b 719 17 642 -30 670 -16 b 861 131 769 52 818 88 b 899 150 874 144 887 150 b 936 117 913 150 926 138 b 965 43 948 94 956 68 b 1007 -1 973 24 978 -1 b 1048 30 1025 -1 1037 16 b 1070 65 1057 40 1064 52 b 1110 148 1084 92 1096 121 b 1145 190 1120 164 1120 190 b 1191 153 1169 192 1179 168 b 1256 29 1218 115 1231 68 b 1292 1 1267 10 1277 1 b 1320 10 1300 1 1309 4 b 1369 48 1339 19 1355 33 b 1515 196 1418 96 1464 148 b 1567 343 1558 238 1567 287 b 1555 363 1565 357 1562 363 b 1539 356 1551 363 1547 360 b 1433 268 1502 330 1466 301 b 1335 171 1401 236 1374 199 b 1310 163 1325 166 1318 163 b 1286 183 1302 163 1293 168 b 1218 311 1264 226 1247 272 b 1164 351 1200 337 1182 351 b 1110 308 1146 351 1128 337 b 1031 176 1084 265 1058 219 b 1015 161 1025 166 1021 161 b 999 179 1009 161 1005 167 b 955 279 985 213 973 248 b 913 307 943 300 930 307 b 887 302 904 307 896 305 b 852 281 874 298 863 291 b 693 167 804 236 747 204 b 612 140 667 150 639 140 b 549 157 592 140 570 145 b 403 220 503 181 452 202 b 271 248 360 236 315 248 b 179 229 239 248 209 242 b 0 -29 65 180 0 85 b 9 -104 0 -53 3 -78 b 397 -526 56 -317 183 -464 b 505 -547 432 -536 468 -547 b 560 -539 524 -547 541 -544 z', + }, + ornamentPrecompSlideTrillBach: { + x_min: 0, + x_max: 1185, + y_min: -380, + y_max: 465, + ha: 845, + o: 'm 624 -544 b 642 -528 638 -543 642 -537 b 639 -514 642 -524 642 -520 b 590 -444 629 -487 609 -467 b 523 -413 573 -422 553 -410 b 498 -415 514 -415 507 -415 b 399 -389 464 -415 431 -405 b 89 -157 281 -330 176 -255 b 72 -117 78 -144 72 -131 b 73 -101 72 -111 72 -107 b 187 186 91 3 147 91 b 246 230 200 216 222 230 b 300 209 262 230 281 223 b 456 48 359 163 403 101 b 540 -10 494 10 518 -10 b 625 59 566 -10 589 13 b 690 148 648 88 668 118 b 711 167 697 160 704 167 b 733 153 719 167 724 163 b 844 14 769 105 808 60 b 903 -42 873 -23 886 -42 b 973 -1 919 -42 937 -27 b 1008 33 986 7 996 20 b 1048 81 1021 48 1035 65 b 1050 37 1048 66 1050 52 b 1047 -24 1050 17 1048 -3 b 1038 -275 1038 -108 1040 -192 l 1037 -289 b 1045 -302 1037 -295 1038 -301 b 1068 -284 1056 -304 1064 -292 b 1084 -242 1076 -271 1081 -256 b 1099 -109 1096 -199 1099 -154 b 1106 158 1099 -19 1106 71 b 1128 187 1113 167 1120 177 b 1168 223 1143 212 1155 223 b 1210 193 1179 223 1191 213 b 1220 183 1214 190 1215 186 b 1329 36 1261 138 1292 84 b 1374 7 1345 16 1358 7 b 1411 20 1384 7 1395 12 b 1479 84 1437 37 1459 59 b 1610 235 1521 135 1564 186 b 1706 403 1655 282 1695 334 b 1614 346 1663 400 1637 373 b 1464 170 1564 287 1515 228 b 1440 150 1453 156 1447 150 b 1414 173 1433 150 1426 158 b 1283 336 1371 228 1333 288 b 1220 366 1261 356 1240 366 b 1148 318 1194 366 1169 350 b 1103 255 1133 297 1119 275 b 1097 301 1102 271 1100 285 b 1099 334 1099 312 1099 324 b 1092 428 1099 367 1094 397 b 1071 647 1087 501 1079 575 b 1058 670 1071 657 1071 670 b 1035 648 1047 670 1038 661 b 1018 516 1024 605 1015 560 b 1041 203 1025 412 1037 307 b 1043 180 1041 196 1043 187 b 992 127 1027 161 1009 143 b 965 111 981 117 972 111 b 936 132 955 111 946 120 b 829 268 900 179 867 225 b 760 317 801 301 780 317 b 691 258 739 317 719 297 b 605 147 664 219 641 177 b 589 138 599 141 593 138 b 572 148 583 138 579 141 b 415 317 520 206 467 261 b 327 372 390 343 366 366 b 300 373 317 373 308 373 b 154 295 239 373 190 348 b 55 138 120 243 85 192 b 0 -53 22 79 0 13 b 160 -317 0 -156 49 -252 b 209 -354 177 -327 192 -343 b 510 -531 305 -419 397 -495 b 593 -547 537 -540 564 -547 b 624 -544 603 -547 613 -546 z', + }, + ornamentPrecompTrillSuffixDandrieu: { + x_min: 0, + x_max: 1003, + y_min: -20, + y_max: 521, + ha: 541, + o: 'm 791 -16 b 844 33 812 -3 829 14 b 981 271 900 107 937 190 b 994 288 984 278 985 288 b 1009 269 1004 288 1007 278 b 1077 112 1034 217 1051 163 b 1158 43 1103 62 1129 43 b 1231 69 1179 43 1204 55 b 1348 189 1280 98 1315 143 b 1444 451 1407 271 1444 357 b 1431 547 1444 482 1440 514 b 1188 750 1401 665 1299 750 b 1158 747 1178 750 1168 749 b 1079 684 1119 742 1089 727 b 1063 632 1076 665 1071 648 b 1056 609 1058 622 1056 615 b 1071 599 1056 602 1060 599 b 1086 600 1076 599 1080 600 b 1130 605 1102 603 1116 605 b 1244 569 1171 605 1210 595 b 1349 346 1322 511 1349 433 b 1348 312 1349 334 1349 324 b 1289 197 1345 266 1325 228 b 1238 174 1270 181 1253 174 b 1188 215 1220 174 1202 187 b 1145 308 1172 245 1159 276 b 1096 413 1129 343 1120 382 b 1053 438 1084 431 1068 438 b 1011 413 1038 438 1022 431 b 955 324 989 384 971 354 b 850 127 920 258 886 192 b 838 112 847 121 842 112 b 824 128 828 109 825 121 b 802 193 815 150 809 171 b 730 400 779 264 766 337 b 688 431 719 420 703 431 b 647 403 674 431 660 422 b 606 338 632 383 619 361 b 513 167 575 282 546 223 b 480 122 503 150 498 122 b 452 171 459 122 459 153 b 420 255 442 199 432 228 b 337 408 399 308 380 364 b 276 436 317 428 297 436 b 215 397 253 436 230 423 b 23 72 148 289 81 184 b 0 29 17 59 0 40 b 7 17 0 23 1 20 b 59 58 26 7 46 39 b 190 276 111 127 143 206 b 216 301 202 292 207 301 b 245 279 223 301 232 294 b 311 166 278 248 292 206 b 367 16 331 117 346 65 b 402 -19 377 -7 387 -19 b 438 -4 412 -19 423 -13 b 518 88 474 17 495 55 b 628 284 562 150 592 216 b 657 223 648 266 651 243 b 717 13 677 154 696 84 b 755 -29 726 -16 737 -29 b 791 -16 765 -29 776 -24 z', + }, + ornamentPrecompDoubleCadenceUpperPrefix: { + x_min: 0, + x_max: 1246, + y_min: -30, + y_max: 296.0302860502196, + ha: 326.0302860502196, + o: 'm 360 -43 b 559 59 445 -43 503 7 b 698 236 615 111 652 179 b 714 248 704 243 710 248 b 727 235 719 248 721 243 l 848 42 b 883 12 860 22 870 12 b 917 32 891 12 903 19 b 946 62 927 42 939 50 b 1037 192 972 108 1009 147 b 1057 210 1044 204 1051 210 b 1076 190 1063 210 1068 203 l 1176 12 b 1215 -19 1188 -9 1201 -19 b 1250 -6 1225 -19 1237 -14 b 1284 27 1264 3 1274 16 b 1380 190 1323 78 1351 135 b 1395 210 1384 197 1385 210 b 1413 190 1405 210 1410 197 b 1508 40 1436 134 1467 85 b 1564 3 1529 14 1547 3 b 1617 32 1580 3 1597 12 b 1767 238 1678 92 1719 167 b 1794 310 1781 259 1791 282 b 1752 294 1776 317 1764 304 b 1656 164 1711 258 1689 206 b 1629 144 1646 151 1637 144 b 1603 161 1620 144 1613 150 b 1502 315 1562 207 1525 258 b 1452 357 1490 344 1470 357 b 1397 320 1431 357 1411 344 b 1316 170 1368 271 1345 219 b 1280 127 1306 154 1303 127 b 1244 171 1256 127 1254 154 b 1145 337 1210 226 1179 282 b 1110 363 1135 354 1122 363 b 1070 338 1097 363 1084 354 b 1050 311 1063 330 1057 320 b 959 181 1017 271 992 223 b 939 167 950 173 945 167 b 920 184 933 167 927 173 b 818 343 887 238 852 291 b 759 395 795 377 778 395 b 701 344 742 395 724 377 b 698 338 700 341 700 340 b 544 154 652 272 605 207 b 412 98 501 117 458 98 b 304 130 377 98 341 108 b 95 373 204 187 144 275 b 58 426 85 393 82 428 b 19 366 26 426 26 389 b 0 307 13 346 0 327 b 4 287 0 300 1 294 b 174 36 49 194 91 102 b 360 -43 230 -9 289 -43 z', + }, + ornamentPrecompDoubleCadenceUpperPrefixTurn: { + x_min: 0, + x_max: 1226, + y_min: -237, + y_max: 436, + ha: 673, + o: 'm 1279 -341 b 1293 -252 1293 -307 1295 -278 b 1277 36 1287 -156 1282 -59 l 1273 118 b 1318 176 1289 137 1303 157 b 1349 203 1332 193 1342 203 b 1378 168 1359 203 1367 192 b 1456 35 1401 122 1428 78 b 1511 -12 1476 3 1493 -12 b 1568 23 1526 -12 1544 0 b 1597 53 1578 32 1588 42 b 1705 186 1629 101 1669 143 b 1761 284 1728 216 1751 246 b 1765 300 1763 288 1765 295 b 1763 307 1765 302 1765 305 b 1737 302 1754 311 1744 308 b 1718 287 1729 298 1725 292 b 1598 145 1673 245 1637 194 b 1578 130 1590 135 1584 130 b 1557 147 1571 130 1565 135 b 1447 321 1516 202 1488 265 b 1403 351 1433 341 1417 351 b 1358 323 1388 351 1372 341 b 1269 209 1329 285 1299 248 b 1254 521 1264 314 1259 418 b 1228 616 1253 554 1247 588 b 1218 628 1224 621 1223 628 l 1215 628 b 1201 613 1210 626 1202 619 b 1200 600 1200 609 1200 605 l 1200 586 b 1211 348 1204 507 1207 428 b 1217 166 1214 288 1215 226 b 1202 181 1212 168 1208 174 b 1094 334 1168 233 1130 284 b 1048 366 1079 356 1064 366 b 1004 331 1034 366 1018 354 b 904 154 969 275 930 220 b 873 202 887 171 880 187 b 778 356 845 256 819 311 b 737 379 763 372 750 379 b 698 353 724 379 711 370 l 621 232 b 415 114 570 154 495 114 b 302 138 377 114 340 121 b 73 400 187 192 117 284 b 55 420 69 415 62 420 b 42 410 50 420 45 416 b 0 292 23 373 0 334 b 4 262 0 282 1 272 b 168 39 32 168 92 99 b 359 -26 225 -6 292 -26 b 585 76 446 -26 530 10 b 668 202 616 115 641 160 b 693 228 680 219 687 228 b 720 203 700 228 707 219 b 801 63 752 160 775 111 b 844 7 812 42 818 7 b 910 66 877 6 894 39 b 923 94 916 75 919 85 b 995 219 945 137 968 179 b 1025 184 1009 210 1017 197 b 1119 56 1054 141 1087 98 b 1166 20 1138 32 1152 20 b 1215 50 1181 20 1195 30 b 1221 56 1217 52 1218 55 b 1228 -163 1223 -17 1225 -89 b 1279 -341 1231 -223 1251 -278 z', + }, + ornamentPrecompTrillLowerSuffix: { + x_min: 0, + x_max: 833, + y_min: -309, + y_max: 319, + ha: 628, + o: 'm 778 -444 b 801 -445 785 -444 793 -445 b 1037 -338 894 -445 969 -397 b 1200 37 1149 -240 1200 -109 b 1084 406 1200 171 1172 300 b 1024 444 1064 431 1043 444 b 960 390 999 444 978 426 b 841 163 923 314 886 236 b 812 128 832 150 827 128 b 786 167 796 130 793 153 b 660 418 744 251 716 341 b 599 459 639 445 619 459 b 541 410 577 459 557 444 b 439 197 507 340 474 269 b 422 179 435 190 435 179 b 338 393 392 251 379 328 b 275 439 320 423 298 439 b 212 396 253 439 230 425 b 71 219 170 333 128 268 b 0 45 17 173 16 112 b 68 98 32 62 50 78 b 194 264 112 150 153 209 b 230 292 209 282 219 292 b 264 261 240 292 251 282 b 274 242 268 255 269 248 b 346 46 304 179 325 112 b 376 10 351 32 354 10 b 412 35 392 10 403 22 b 452 107 429 56 441 82 b 541 291 481 168 511 230 b 556 307 547 302 552 307 b 573 295 562 307 567 302 b 624 217 595 272 611 246 b 721 1 657 145 685 72 b 755 -27 732 -19 742 -27 b 786 -16 765 -27 775 -24 b 857 73 819 7 840 39 b 952 256 887 134 920 194 b 978 289 963 279 969 289 b 1009 262 985 289 994 281 b 1030 235 1017 253 1024 245 b 1110 -4 1071 161 1099 81 b 1116 -68 1113 -26 1116 -48 b 1009 -243 1116 -140 1090 -200 b 848 -291 956 -272 901 -291 b 730 -261 809 -291 770 -282 b 696 -248 714 -252 703 -248 b 671 -284 684 -248 678 -258 l 662 -312 b 657 -357 658 -330 657 -344 b 744 -439 657 -403 683 -425 z', + }, + brassScoop: { + x_min: -0.4444444444444445, + x_max: 312, + y_min: -390, + y_max: 28, + ha: 418, + o: 'm 0 -562 b 393 -256 171 -504 307 -412 b 449 -39 431 -189 449 -115 b 448 -1 449 -26 449 -14 b 433 40 446 14 448 40 b 408 -3 410 40 412 14 b 396 -66 403 -23 402 -46 b 45 -397 346 -243 209 -337 b 0 -451 13 -409 1 -423 b 0 -562 -1 -485 0 -520 z', + }, + brassDoitMedium: { + x_min: -0.32815253965710617, + x_max: 476.21251177608565, + y_min: -50, + y_max: 333.1535583875376, + ha: 383.1535583875376, + o: 'm 16 -72 b 27 -71 19 -72 23 -72 b 215 -33 89 -56 153 -48 b 521 114 327 -7 435 35 b 685 432 615 199 691 295 b 670 480 684 449 688 475 b 642 441 654 482 648 456 b 403 183 599 321 513 240 b 79 89 301 130 192 105 b 0 -1 -12 76 0 76 b 0 -50 0 -17 1 -33 b 16 -72 0 -65 3 -72 z', + }, + brassFallLipShort: { + x_min: 0, + x_max: 298, + y_min: -344, + y_max: 65, + ha: 409, + o: 'm 396 -495 b 420 -461 412 -487 418 -474 b 429 -382 428 -435 429 -409 b 426 -330 429 -364 428 -347 b 285 -6 410 -209 356 -104 b 98 94 239 59 173 94 b 39 86 79 94 58 92 b 0 49 20 81 0 73 l 0 -52 b 10 -69 0 -62 1 -69 b 20 -68 13 -69 16 -69 b 88 -56 45 -59 66 -56 b 261 -160 156 -56 213 -95 b 396 -495 333 -259 382 -369 z', + }, + brassLiftMedium: { + x_min: 0, + x_max: 807, + y_min: 0, + y_max: 838, + ha: 838, + o: 'm 50 0 b 55 1 52 0 53 0 b 58 23 65 7 59 16 b 55 58 56 36 55 48 b 130 117 55 99 75 112 b 220 213 202 121 220 141 b 315 308 220 289 238 308 l 336 308 b 408 380 393 310 406 321 b 461 452 409 438 416 452 b 485 451 468 452 477 451 b 569 510 531 448 556 464 b 573 543 572 520 572 531 b 657 619 580 605 595 618 b 698 621 670 619 684 619 b 788 700 749 625 778 649 b 798 778 792 726 793 752 b 873 857 806 841 809 845 b 985 950 927 867 973 887 b 1084 1047 1002 1035 1004 1034 b 1162 1128 1133 1056 1162 1087 b 1146 1182 1162 1145 1158 1164 b 1125 1207 1140 1191 1136 1207 l 1122 1207 b 1110 1191 1113 1205 1110 1198 b 1112 1174 1110 1185 1112 1178 b 1048 1110 1109 1126 1096 1113 b 1028 1109 1043 1110 1035 1109 b 939 1022 969 1102 948 1081 b 845 922 929 949 917 936 b 746 812 773 909 753 886 b 744 780 744 802 744 791 b 635 681 737 700 717 683 b 524 583 553 680 536 665 b 439 510 514 520 503 510 b 357 431 377 510 360 492 l 357 406 b 314 364 356 379 343 364 b 238 361 288 364 264 364 b 173 300 202 357 180 334 b 167 245 168 281 167 262 b 105 174 166 192 157 180 b 75 171 95 173 85 171 b 6 112 30 166 14 153 b 0 73 1 98 0 85 b 37 10 0 45 13 26 b 50 0 42 7 46 0 z', + }, + brassFallRoughMedium: { + x_min: 0, + x_max: 791, + y_min: 0, + y_max: 819, + ha: 819, + o: 'm 1117 0 b 1139 101 1129 26 1139 71 b 1138 121 1139 109 1139 115 b 1084 193 1125 171 1110 193 b 1044 183 1073 193 1060 189 b 1022 177 1035 179 1028 177 b 1007 209 1012 177 1008 186 b 876 324 1004 292 959 330 b 799 317 850 321 825 320 b 759 354 772 314 755 320 b 760 373 760 360 760 366 b 759 392 760 379 760 384 b 681 477 753 451 730 477 b 654 474 672 477 664 475 b 606 467 638 471 622 468 b 586 465 599 465 592 465 b 564 481 570 465 564 469 b 569 505 564 487 566 495 b 575 553 572 521 575 537 b 572 585 575 564 573 575 b 481 665 560 657 539 668 b 412 665 458 664 435 665 b 382 690 392 667 382 672 b 383 700 382 693 383 696 b 386 773 387 724 387 749 b 297 858 382 828 351 857 b 229 861 274 858 251 858 b 190 897 207 863 193 871 b 163 1012 186 936 180 976 b 79 1084 145 1050 124 1084 b 66 1083 75 1084 71 1083 b 43 1096 49 1081 43 1087 b 48 1112 43 1100 45 1106 b 53 1130 52 1119 53 1125 b 39 1169 53 1145 45 1158 b 26 1179 36 1175 30 1179 b 16 1171 22 1179 17 1176 b 0 1103 10 1149 0 1126 b 9 1067 0 1092 1 1079 b 91 1021 26 1031 52 1018 b 145 978 122 1024 141 1011 b 156 913 147 956 151 935 b 291 795 170 831 210 795 b 346 768 337 795 346 796 b 344 743 346 760 344 753 b 343 716 344 733 343 724 b 455 600 343 651 390 602 b 505 605 471 599 490 605 b 528 598 514 605 523 603 b 536 579 534 592 536 586 b 524 523 536 562 526 541 b 523 505 524 517 523 511 b 621 405 523 442 560 405 b 639 406 626 405 634 406 b 677 413 652 408 664 410 b 701 416 687 415 696 416 b 721 392 716 416 721 410 b 720 373 721 386 720 380 b 831 255 714 301 759 252 b 897 261 854 255 876 261 b 926 262 909 261 919 262 b 969 197 963 262 965 252 b 971 184 969 193 971 189 b 1031 115 979 137 998 115 b 1071 122 1043 115 1056 118 b 1096 130 1079 125 1086 127 b 1087 59 1094 107 1087 82 b 1117 0 1087 37 1094 17 z', + }, + brassBend: { + x_min: 0, + x_max: 381, + y_min: 0, + y_max: 367, + ha: 367, + o: 'm 298 0 b 472 50 359 0 418 14 b 537 135 501 71 530 92 b 543 216 543 163 543 190 l 543 266 b 544 308 543 281 543 295 b 549 433 546 354 549 395 b 543 507 549 459 547 482 b 533 528 541 516 544 528 b 511 508 524 528 514 520 b 508 478 510 498 508 488 b 504 318 507 425 504 372 b 505 264 504 300 505 282 b 446 181 505 220 484 199 b 294 150 396 160 344 150 b 92 194 226 150 158 167 b 45 269 62 207 45 230 b 46 359 46 300 46 328 b 37 497 46 405 45 451 b 27 523 36 507 37 523 b 4 498 14 524 6 513 b 3 481 3 492 3 487 b 0 409 1 456 0 433 b 4 228 0 348 4 288 b 3 177 4 210 4 194 b 68 53 1 125 20 84 b 200 10 108 27 154 17 b 298 0 233 4 266 0 z', + }, + brassMuteClosed: { + x_min: 0, + x_max: 274, + y_min: 0, + y_max: 260, + ha: 260, + o: 'm 203 0 b 209 1 206 0 207 0 b 216 13 215 4 216 9 l 215 27 l 215 153 b 216 161 216 156 216 158 b 372 164 268 163 318 164 b 395 184 383 164 395 166 l 395 189 b 357 229 392 209 386 229 b 219 228 311 229 265 228 l 223 310 b 209 357 225 328 219 344 b 189 374 203 364 197 374 b 184 373 187 374 186 373 b 177 359 179 372 177 366 l 177 348 l 173 222 l 39 222 b 0 206 12 222 0 219 b 10 174 0 199 3 189 b 46 157 19 157 30 157 b 108 160 68 158 88 160 b 171 161 130 161 150 161 l 167 58 b 184 16 167 40 171 26 b 203 0 192 12 196 0 z', + }, + brassMuteOpen: { + x_min: 1, + x_max: 313.01193341111656, + y_min: 0, + y_max: 309, + ha: 309, + o: 'm 265 0 b 451 189 363 7 452 88 l 451 215 b 348 383 441 285 405 343 b 209 445 288 426 248 445 b 84 379 168 445 132 420 b 69 364 79 373 73 369 b 1 213 30 323 1 275 b 230 0 1 88 94 0 z m 210 62 b 128 73 181 62 154 66 b 40 171 71 91 42 125 b 52 226 40 187 45 206 b 197 374 79 295 130 344 b 228 382 207 380 217 382 b 300 361 252 382 276 370 b 374 308 328 350 353 331 b 410 223 397 284 410 253 b 393 163 410 202 405 181 b 210 62 354 91 288 63 z', + }, + brassFlip: { + x_min: 0, + x_max: 402, + y_min: 0, + y_max: 361, + ha: 361, + o: 'm 579 0 b 511 153 579 68 557 117 b 52 504 359 271 206 387 b 29 520 45 510 39 520 b 20 517 26 520 23 518 b 0 477 3 510 0 494 l 0 125 b 17 20 1 92 1 56 b 40 84 37 40 40 60 b 42 287 40 151 42 219 l 42 363 z', + }, + brassJazzTurn: { + x_min: 0, + x_max: 646, + y_min: 0, + y_max: 212, + ha: 212, + o: 'm 310 0 b 367 33 327 0 344 10 b 389 55 374 40 382 49 b 490 145 423 85 456 114 b 507 154 495 151 501 154 b 524 144 513 154 517 151 b 598 72 547 120 575 98 b 700 24 625 42 662 24 b 765 43 721 24 744 30 b 893 147 812 72 855 105 b 930 212 910 166 923 186 b 912 215 923 213 917 215 b 871 199 896 215 883 209 b 812 153 852 183 832 167 b 789 144 805 148 796 144 b 773 156 782 144 776 147 b 691 251 757 199 720 222 b 603 301 658 282 631 301 b 527 258 580 301 556 288 b 420 156 494 222 455 190 b 399 143 412 147 405 143 b 377 157 392 143 386 147 b 259 282 340 200 300 242 b 219 305 245 298 232 305 b 177 279 204 305 192 297 b 55 127 137 228 95 177 b 0 52 36 104 20 79 b 14 50 6 50 10 50 b 53 66 32 50 45 58 b 115 131 75 88 98 108 b 135 148 124 143 130 148 b 157 132 141 148 148 143 b 252 33 186 96 219 65 b 310 0 275 12 292 0 z', + }, + brassSmear: { + x_min: 0, + x_max: 334, + y_min: 0, + y_max: 151, + ha: 151, + o: 'm 321 0 b 475 125 390 0 436 43 b 481 143 478 131 481 137 b 475 154 481 147 480 151 b 449 148 468 158 458 154 b 395 132 432 137 413 132 b 343 140 377 132 360 137 b 229 194 301 148 266 173 b 168 217 206 209 186 217 b 109 192 148 217 130 209 b 0 26 59 148 32 89 b 59 63 32 29 45 48 b 98 84 72 78 84 84 b 130 73 108 84 118 81 b 213 26 157 58 183 37 b 321 0 255 9 289 0 z', + }, + stringsDownBow: { + x_min: 0, + x_max: 306, + y_min: -0.09607201951262866, + y_max: 366, + ha: 366.09607201951263, + o: 'm 405 0 b 425 17 413 -1 420 9 b 439 66 435 32 439 48 b 441 268 439 137 441 202 b 436 412 441 314 439 361 l 435 413 b 423 469 435 436 431 456 b 344 508 406 501 373 501 b 204 527 298 520 251 527 b 60 498 156 527 108 518 b 7 438 32 485 10 468 l 7 426 b 4 337 7 396 7 367 b 0 140 0 272 0 206 b 1 42 0 107 0 73 b 13 3 1 27 -3 4 b 40 39 29 3 35 24 b 42 53 42 43 40 49 b 49 141 48 84 49 112 b 48 215 49 167 48 192 b 49 252 48 228 48 240 l 49 312 b 130 343 72 331 99 340 b 206 347 156 346 180 347 b 372 314 262 347 318 338 l 390 307 l 390 245 b 390 138 392 212 390 176 b 397 23 390 101 392 62 b 405 0 399 14 393 1 z', + }, + stringsUpBow: { + x_min: 0, + x_max: 219.2842808242076, + y_min: 0, + y_max: 489, + ha: 489, + o: 'm 151 0 b 184 42 170 12 180 26 b 297 554 223 212 261 382 b 315 690 305 598 318 645 b 304 704 315 697 311 704 b 276 670 288 704 282 697 b 157 131 236 490 196 311 l 157 144 b 73 526 134 276 104 396 b 30 677 60 576 52 638 b 13 694 26 684 22 694 b 0 674 9 694 0 691 l 0 671 b 10 603 3 649 6 626 b 105 174 42 461 72 317 b 150 0 117 117 128 58 z', + }, + stringsHarmonic: { + x_min: 0, + x_max: 191, + y_min: 0, + y_max: 202, + ha: 202, + o: 'm 143 0 b 275 122 217 0 275 53 b 127 291 275 206 202 291 b 0 154 63 291 0 222 b 143 0 0 76 71 0 z m 122 68 b 43 105 89 66 59 75 b 39 124 40 111 39 117 b 79 199 39 148 56 180 b 145 226 101 216 122 226 b 199 210 163 226 180 220 b 235 150 223 196 235 173 b 203 92 235 128 225 107 b 122 68 181 76 150 68 z', + }, + pluckedSnapPizzicatoAbove: { + x_min: 0, + x_max: 201, + y_min: 0, + y_max: 325, + ha: 325, + o: 'm 171 0 b 289 99 240 0 289 45 b 258 183 289 130 274 156 b 174 269 236 217 203 240 l 174 408 b 174 429 174 415 176 422 b 131 468 168 451 153 468 b 117 451 120 468 117 461 b 118 429 117 444 118 435 b 115 307 117 389 115 347 b 0 166 59 295 0 223 b 171 0 0 85 89 0 z m 134 55 b 52 131 84 55 52 85 b 115 233 52 179 81 209 b 114 192 114 220 114 206 b 174 120 114 137 114 137 l 174 228 b 233 148 200 207 223 183 b 236 130 235 143 236 135 b 197 72 236 105 223 85 b 134 55 177 60 157 55 z', + }, + pluckedSnapPizzicatoBelow: { + x_min: 0, + x_max: 211, + y_min: 0, + y_max: 307, + ha: 307, + o: 'm 145 7 b 163 0 153 3 158 0 b 173 23 170 0 173 7 l 173 140 l 170 140 l 170 163 l 171 163 b 206 170 179 164 193 166 b 304 287 264 186 304 233 b 281 354 304 308 297 333 b 118 442 240 412 186 439 b 0 324 69 442 0 370 b 115 176 0 266 55 202 l 115 56 b 145 7 114 33 125 19 z m 115 220 b 62 256 92 223 73 230 b 53 292 56 269 53 281 b 78 344 53 311 60 328 b 168 384 105 372 135 384 b 213 376 183 384 199 382 b 253 321 239 366 253 346 b 246 291 253 311 251 301 b 170 226 230 256 203 236 l 170 258 b 148 305 171 278 163 292 b 128 315 143 310 135 315 l 124 315 b 115 301 117 314 115 308 z', + }, + pluckedLeftHandPizzicato: { + x_min: 0, + x_max: 271, + y_min: 0, + y_max: 284, + ha: 284, + o: 'm 213 0 b 223 14 222 0 223 7 b 222 35 223 22 222 29 l 222 176 b 373 170 272 174 323 170 b 390 180 382 170 390 171 l 390 184 b 347 232 386 207 382 232 b 219 238 307 233 266 235 l 219 364 b 171 409 219 395 193 409 b 156 393 160 409 156 402 b 158 370 156 384 158 376 l 158 240 b 16 239 115 240 66 239 b 0 226 7 239 0 238 l 0 223 b 50 179 1 203 29 179 b 158 177 86 179 122 179 l 158 63 b 161 29 158 52 158 40 b 213 0 166 -1 194 1 z', + }, + keyboardPedalPed: { + x_min: 0, + x_max: 944, + y_min: -13, + y_max: 550, + ha: 563, + o: 'm 22 0 b 109 78 53 0 105 46 l 144 333 b 163 376 147 347 140 372 b 364 465 238 390 301 426 b 454 599 416 497 454 540 b 452 618 454 605 454 612 b 320 770 442 694 396 747 b 248 779 295 778 272 779 b 193 778 229 779 212 779 b 160 780 181 778 167 775 b 137 792 153 789 144 791 b 109 789 128 792 118 789 b 7 719 59 789 48 737 b 23 708 16 714 20 708 b 36 710 29 710 33 710 b 53 684 52 710 53 698 l 53 674 b 43 386 53 577 53 482 b 20 164 36 312 30 238 b 1 30 14 120 7 75 b 0 19 0 26 0 22 b 22 0 0 9 4 0 z m 171 425 b 156 442 160 425 156 429 b 157 475 157 452 157 464 b 164 602 161 517 164 560 b 161 698 164 635 163 667 b 184 729 161 720 167 729 l 193 729 b 348 563 278 719 348 641 b 346 539 348 554 347 547 b 171 425 328 459 229 422 z m 979 6 b 1008 13 986 6 995 9 b 1081 101 1047 29 1079 46 b 1116 449 1087 217 1104 333 b 1143 654 1123 518 1133 586 b 1148 685 1145 664 1148 675 b 1140 704 1148 693 1146 700 b 1107 716 1130 713 1119 716 b 1056 706 1092 716 1073 710 b 1037 671 1035 703 1038 685 b 1004 439 1025 595 1014 517 b 986 419 1001 428 999 419 b 979 419 985 419 982 420 b 935 426 965 423 949 425 b 795 376 884 426 838 405 b 664 153 714 323 664 249 b 665 130 664 145 665 138 b 753 29 671 65 704 29 b 815 40 773 29 792 33 b 975 147 873 65 923 101 b 965 45 971 108 968 76 b 979 6 963 17 966 6 z m 393 -17 b 634 145 494 16 579 52 b 638 160 636 151 638 156 b 625 168 638 166 634 168 b 621 167 624 168 622 168 b 524 118 582 164 544 160 b 495 79 517 104 505 92 b 435 33 471 49 452 33 b 380 96 416 33 397 55 b 369 145 373 114 369 131 b 442 225 369 186 395 213 b 468 232 451 228 459 229 b 654 344 539 255 606 285 b 677 395 667 360 677 376 b 672 415 677 402 675 408 b 612 459 661 442 639 455 b 589 461 602 461 592 461 b 348 328 500 461 409 408 b 269 120 302 268 269 199 b 379 -19 269 45 318 -19 b 393 -17 383 -19 389 -19 z m 395 240 b 494 383 418 300 452 344 l 521 405 b 544 419 528 409 536 418 b 554 415 547 419 550 418 b 570 383 564 406 570 396 l 570 379 b 552 331 570 360 562 344 b 395 240 511 285 462 253 z m 827 89 b 792 111 815 89 804 96 b 766 204 775 131 766 158 b 845 360 772 256 799 314 b 871 372 854 369 863 372 b 897 366 880 372 888 369 b 978 279 942 353 963 320 b 976 259 981 272 981 265 b 858 104 942 203 909 147 b 827 89 847 94 837 89 z m 1282 12 b 1336 35 1303 14 1320 23 b 1359 71 1351 45 1359 58 b 1338 102 1359 82 1352 95 b 1254 130 1312 118 1284 130 b 1187 88 1223 130 1202 109 b 1178 65 1182 81 1178 72 b 1195 37 1178 55 1182 45 b 1282 12 1223 23 1253 19 z', + }, + keyboardPedalUp: { + x_min: 0, + x_max: 436.6015132318337, + y_min: 0, + y_max: 461, + ha: 461, + o: 'm 330 0 b 334 1 331 0 333 0 b 340 12 338 4 340 7 l 338 26 b 340 264 338 105 338 184 b 526 95 400 206 461 148 b 559 71 536 88 547 71 b 564 72 560 71 563 71 b 580 121 580 79 580 102 l 580 127 b 543 203 585 158 573 184 b 472 259 518 219 495 238 l 445 285 b 590 292 494 288 541 291 b 622 318 609 294 618 302 b 628 359 625 331 626 346 b 586 402 632 393 621 405 b 464 395 546 399 504 396 l 559 491 b 567 524 567 500 567 510 b 564 543 567 527 567 536 b 539 596 559 563 560 590 b 494 564 521 600 508 577 b 340 413 442 514 390 464 l 340 560 b 287 664 340 600 321 632 b 271 518 274 612 272 566 b 268 445 269 494 269 469 b 117 569 219 488 168 530 b 96 579 109 575 102 579 b 85 560 89 579 85 573 b 124 446 85 518 82 477 b 209 380 153 426 181 403 b 45 374 154 377 99 376 b 0 324 9 374 0 359 b 63 266 0 265 1 265 b 144 272 89 269 117 272 l 196 272 b 108 193 167 246 138 219 b 60 135 76 164 60 151 b 99 73 60 121 73 105 b 104 68 101 72 102 71 b 114 58 107 60 111 58 b 130 66 120 58 124 62 b 259 186 173 107 217 145 b 256 117 259 163 256 140 b 311 13 256 72 271 37 b 330 0 317 10 323 0 z', + }, + pictChokeCymbal: { + x_min: 1, + x_max: 147, + y_min: 0, + y_max: 242, + ha: 242, + o: 'm 79 4 b 207 158 153 32 192 88 b 212 200 210 173 212 187 b 143 336 212 253 187 298 b 98 348 131 344 115 348 b 4 295 60 348 16 327 b 1 276 1 289 1 282 b 9 249 1 266 3 258 b 121 183 35 206 72 183 b 156 186 132 183 144 183 b 26 53 134 115 91 73 b 7 39 13 49 7 45 b 19 20 7 33 12 27 b 59 0 30 9 43 0 b 79 4 65 0 72 1 z', + }, + wiggleArpeggiatoUp: { + x_min: -22, + x_max: 300, + y_min: 0, + y_max: 176, + ha: 176, + o: 'm 173 4 b 196 0 180 1 189 0 b 246 26 215 0 230 9 b 301 117 271 53 285 85 b 312 131 305 125 307 131 b 327 124 315 131 321 128 b 373 86 341 112 353 101 b 412 69 389 75 402 69 b 432 94 425 69 432 79 b 373 181 432 117 413 154 b 235 252 323 216 285 245 b 220 253 229 253 225 253 b 168 215 196 253 181 240 b 111 112 151 180 140 141 b 94 102 105 105 99 102 b 78 111 89 102 84 105 b 0 181 55 135 35 160 b -32 153 -20 194 -32 168 b 0 86 -32 124 -32 109 b 94 36 22 71 73 46 b 173 4 134 16 131 17 z', + }, + arpeggiatoUp: { + x_min: 0, + x_max: 262, + y_min: 0, + y_max: 1459, + ha: 1459, + o: 'm 190 0 b 160 63 187 29 170 45 b 145 108 150 81 145 95 b 183 163 145 128 157 145 b 300 246 222 190 262 216 b 347 318 333 272 347 295 b 301 393 347 341 331 364 b 258 413 289 403 272 408 b 145 449 220 425 183 436 b 117 464 135 452 120 452 b 140 491 115 477 128 484 b 294 593 192 526 243 557 b 330 647 318 611 330 626 b 314 693 330 660 324 675 b 262 736 302 714 285 729 b 170 763 230 744 200 753 b 122 783 153 768 125 768 b 160 831 120 804 143 818 b 288 922 202 861 246 890 b 333 999 318 945 333 972 b 266 1083 333 1032 310 1064 b 189 1115 240 1094 215 1103 b 122 1178 145 1133 122 1153 b 168 1250 122 1200 138 1223 l 180 1257 b 269 1333 210 1283 240 1306 b 305 1405 294 1356 305 1381 b 284 1469 305 1426 298 1447 b 228 1525 269 1492 251 1511 b 183 1600 197 1545 183 1571 b 190 1640 183 1613 184 1626 b 197 1670 193 1650 194 1660 b 272 1735 213 1719 230 1735 b 295 1734 279 1735 287 1735 b 323 1732 305 1732 314 1732 b 350 1731 333 1732 341 1732 b 377 1742 369 1729 377 1732 b 370 1761 377 1747 374 1754 l 301 1898 b 217 2066 274 1954 248 2012 b 186 2101 204 2089 196 2101 b 154 2069 177 2101 167 2091 b 12 1824 105 1987 59 1907 b 0 1787 4 1810 0 1797 b 59 1744 0 1761 20 1745 b 160 1738 92 1744 125 1740 b 145 1692 156 1721 151 1706 b 135 1633 138 1672 135 1652 b 184 1518 135 1591 151 1552 b 229 1475 199 1503 213 1488 b 259 1431 249 1456 259 1444 b 229 1388 259 1420 249 1407 b 151 1325 203 1365 177 1345 b 105 1279 134 1310 118 1296 b 73 1202 84 1251 73 1227 b 108 1123 73 1176 85 1152 b 255 1031 148 1077 199 1051 b 282 1014 274 1025 282 1021 b 262 991 282 1008 275 1001 b 151 914 226 963 189 939 b 79 851 125 896 99 877 b 63 809 69 837 63 824 b 79 769 63 796 68 783 b 202 697 111 729 154 710 b 266 670 225 690 266 688 b 210 622 266 648 232 635 b 82 534 167 593 120 570 b 55 491 63 518 55 505 b 79 448 55 478 63 465 b 255 361 127 395 192 380 b 288 343 269 359 288 357 b 266 312 288 331 275 320 b 144 223 229 278 184 253 b 85 134 104 193 85 166 b 118 53 85 111 96 85 b 190 0 135 29 160 14 z', + }, + arpeggiatoDown: { + x_min: 0, + x_max: 218, + y_min: 0, + y_max: 1440, + ha: 1440, + o: 'm 161 16 b 310 261 210 98 259 180 b 314 275 312 266 314 271 b 302 295 314 282 310 289 b 252 311 287 308 269 311 b 217 310 240 311 229 310 b 190 333 202 310 194 315 b 151 412 186 363 171 389 b 102 501 120 452 102 477 b 150 588 102 524 118 547 b 161 603 154 592 158 598 b 181 661 176 622 181 641 b 173 704 181 675 179 690 b 86 795 156 746 121 770 b 53 829 63 811 53 819 b 78 868 53 840 62 851 b 102 888 85 876 94 883 b 180 956 128 912 156 933 b 216 1028 204 979 216 1002 b 203 1081 216 1044 212 1061 b 115 1171 186 1123 148 1145 b 75 1221 88 1191 75 1207 b 114 1272 75 1237 88 1251 b 173 1308 132 1284 154 1296 b 226 1339 190 1318 209 1328 b 265 1405 253 1359 265 1380 b 258 1447 265 1418 264 1431 b 154 1541 242 1499 199 1521 b 109 1581 124 1555 109 1567 b 141 1627 109 1594 121 1608 b 204 1680 163 1646 184 1662 b 233 1742 223 1699 233 1719 b 226 1777 233 1752 230 1764 b 135 1862 210 1822 173 1840 b 104 1895 114 1875 104 1884 b 118 1930 104 1904 109 1914 b 192 2006 135 1961 161 1986 b 206 2029 203 2013 206 2022 b 192 2064 206 2040 197 2052 b 180 2074 187 2071 184 2074 b 156 2061 171 2074 163 2065 b 84 1983 125 2040 102 2013 b 65 1921 71 1961 65 1941 b 88 1853 65 1899 72 1876 b 171 1784 108 1820 138 1801 b 190 1764 184 1777 190 1770 b 174 1741 190 1757 184 1750 b 107 1683 153 1722 128 1704 b 68 1610 81 1659 68 1636 b 88 1548 68 1591 75 1571 b 177 1470 109 1512 141 1489 b 223 1431 209 1453 223 1443 b 179 1390 223 1420 209 1408 b 128 1361 163 1380 145 1371 b 71 1322 108 1348 88 1338 b 32 1253 45 1300 32 1277 b 48 1198 32 1236 37 1218 b 147 1090 71 1152 108 1120 b 174 1057 166 1076 174 1067 b 153 1022 174 1047 167 1037 b 109 982 140 1008 124 995 b 37 919 85 962 59 942 b 9 860 17 899 9 880 b 26 806 9 844 14 827 b 120 717 50 769 84 740 b 138 691 132 708 138 700 b 130 668 138 684 135 677 b 92 618 118 651 105 635 b 59 531 71 589 59 560 b 84 455 59 507 68 481 b 132 386 98 431 115 408 b 148 341 144 372 148 357 b 144 317 148 333 147 324 b 121 305 140 307 131 305 l 98 305 b 82 304 94 304 88 304 l 32 304 b 0 292 10 304 0 302 b 12 266 0 287 4 279 b 60 164 32 233 46 199 b 127 20 84 117 105 68 b 144 0 132 9 137 0 b 161 16 150 0 154 4 z', + }, + repeat1Bar: { + x_min: 0, + x_max: 599.1057280164835, + y_min: -250, + y_max: 175, + ha: 425, + o: 'm 216 98 b 255 75 236 84 246 75 b 291 104 265 75 274 85 b 323 147 304 117 327 125 b 289 215 323 168 314 184 b 238 252 269 239 253 252 b 187 222 222 252 207 242 b 173 206 183 216 177 212 b 157 170 163 194 157 183 b 174 138 157 160 161 150 b 216 98 189 127 200 109 z m 76 -334 b 181 -285 111 -315 148 -302 b 831 52 396 -168 613 -58 b 863 114 855 63 864 82 b 828 202 855 140 855 176 b 808 213 821 209 815 213 b 793 209 804 213 799 212 l 422 19 b 26 -179 291 -48 164 -124 b 0 -213 10 -186 0 -196 b 3 -232 0 -219 0 -225 b 52 -325 14 -265 37 -294 b 66 -337 55 -331 59 -337 b 76 -334 69 -337 72 -336 z m 769 -360 b 829 -264 779 -360 829 -284 b 769 -176 822 -232 799 -200 b 742 -163 760 -167 750 -163 b 716 -184 733 -163 723 -168 b 683 -228 708 -202 693 -213 b 672 -253 675 -236 672 -245 b 683 -281 672 -262 675 -271 b 752 -353 703 -308 732 -327 b 769 -360 756 -357 763 -360 z', + }, + repeat2Bars: { + x_min: 0.008571918423331715, + x_max: 775, + y_min: -246.92374029115243, + y_max: 362.82068246705313, + ha: 609.7444227582056, + o: 'm 909 412 b 873 351 906 384 893 367 b 436 50 729 249 585 147 l 91 -179 b 62 -174 76 -189 68 -183 b 12 -96 48 -147 24 -125 b 36 -16 -7 -53 -6 -43 b 220 104 96 24 158 65 b 819 507 425 232 624 369 b 881 495 852 530 861 528 b 909 412 899 469 900 439 z m 333 338 b 302 240 330 307 317 274 b 276 235 297 225 287 228 l 233 269 b 203 376 186 307 183 318 b 225 441 212 397 217 419 b 246 454 228 452 232 458 b 333 338 284 441 333 380 z m 1116 228 b 1067 158 1115 192 1092 174 b 910 59 1015 125 963 92 b 478 -240 762 -33 622 -140 b 311 -350 423 -279 366 -314 b 285 -344 298 -360 289 -356 b 239 -258 272 -314 251 -288 b 261 -196 228 -228 235 -210 b 517 -29 348 -144 436 -91 b 1030 321 681 98 861 202 b 1093 307 1060 343 1076 340 b 1116 228 1107 281 1109 252 z m 1070 -105 b 1020 -210 1057 -143 1038 -176 b 998 -210 1014 -219 1004 -215 l 924 -153 b 913 -88 899 -135 897 -112 b 949 -22 926 -66 939 -45 b 998 -7 960 6 976 9 b 1070 -105 1032 -32 1058 -63 z', + }, + repeat4Bars: { + x_min: 0, + x_max: 1374, + y_min: -304, + y_max: 304, + ha: 608, + o: 'm 78 -266 b 92 -258 82 -266 88 -264 b 114 -240 98 -251 107 -246 b 638 107 289 -125 467 -14 b 873 271 716 161 793 216 b 907 337 894 285 906 305 b 887 400 901 354 897 379 b 852 438 877 426 867 438 b 814 420 842 438 829 432 b 135 -33 592 262 366 111 b 12 -121 92 -60 48 -84 b 0 -144 4 -128 0 -135 b 4 -160 0 -148 1 -154 b 63 -255 17 -196 45 -223 b 78 -266 68 -262 72 -266 z m 291 148 b 325 223 302 148 308 170 b 333 256 328 235 330 246 b 264 363 330 305 298 336 b 242 373 255 369 248 373 b 220 347 232 373 225 364 b 202 288 216 327 213 305 b 190 252 193 275 190 262 b 222 200 190 232 202 215 b 291 148 264 170 279 148 z m 815 -367 b 829 -359 819 -367 824 -364 b 851 -343 835 -353 844 -347 b 1375 6 1027 -228 1205 -117 l 1610 170 b 1644 235 1632 184 1643 203 b 1626 300 1639 253 1634 276 b 1590 337 1614 325 1604 337 b 1551 320 1580 337 1567 330 b 873 -135 1329 161 1103 10 b 749 -222 829 -161 785 -184 b 737 -245 742 -230 737 -238 b 742 -261 737 -249 739 -255 b 802 -357 755 -297 782 -325 b 815 -367 805 -363 809 -367 z m 396 -360 b 408 -356 400 -360 403 -359 b 609 -223 471 -307 543 -269 b 896 -19 706 -156 795 -81 b 1164 154 985 37 1074 96 b 1214 223 1189 170 1211 187 b 1176 321 1204 253 1205 292 b 1159 330 1169 327 1165 330 b 1145 324 1155 330 1151 328 b 1048 258 1113 302 1081 278 b 357 -202 809 117 598 -65 b 333 -238 341 -212 333 -223 b 338 -262 333 -245 334 -253 b 384 -350 350 -294 372 -318 b 396 -360 386 -354 390 -360 z m 1162 -438 b 1174 -433 1166 -438 1169 -436 b 1374 -300 1237 -384 1309 -346 b 1660 -96 1470 -233 1561 -158 b 1930 76 1751 -39 1840 19 b 1979 147 1954 92 1977 109 b 1943 243 1968 177 1971 216 b 1924 253 1935 251 1930 253 b 1911 248 1920 253 1915 252 b 1814 181 1878 225 1848 202 b 1123 -279 1575 40 1364 -141 b 1099 -315 1106 -289 1099 -300 b 1103 -338 1099 -321 1100 -330 b 1149 -426 1115 -370 1138 -396 b 1162 -438 1151 -432 1156 -438 z m 1875 -295 b 1882 -291 1878 -295 1879 -294 b 1934 -189 1904 -258 1921 -223 b 1872 -96 1925 -147 1901 -120 b 1840 -78 1858 -84 1848 -78 b 1812 -109 1830 -78 1823 -88 l 1777 -173 b 1770 -199 1773 -181 1770 -190 b 1786 -230 1770 -210 1774 -220 b 1862 -289 1809 -253 1837 -269 b 1875 -295 1865 -292 1871 -295 z', + }, + repeatBarSlash: { + x_min: 0, + x_max: 630, + y_min: -225.19160170741762, + y_max: 265.12618221237005, + ha: 490.31778391978764, + o: 'm 78 -324 b 92 -314 82 -325 88 -321 b 114 -298 96 -307 107 -302 b 638 49 289 -183 467 -72 b 873 215 716 104 792 161 b 907 279 894 229 906 248 b 887 344 901 298 897 321 b 852 382 877 369 867 380 b 814 363 842 383 829 376 b 135 -91 603 192 364 55 b 12 -177 92 -118 45 -137 b 0 -202 4 -186 0 -192 b 4 -217 0 -206 1 -212 b 63 -312 17 -253 42 -284 b 78 -324 68 -318 72 -323 z', + }, + csymDiminished: { + x_min: 0, + x_max: 506, + y_min: -0.011036179317259481, + y_max: 500, + ha: 500.0110361793173, + o: 'm 397 0 b 729 265 576 -1 729 95 b 711 367 729 297 723 331 b 472 670 668 498 586 595 b 315 720 423 701 372 720 b 253 713 295 720 275 719 b 32 514 144 687 75 615 b 0 374 12 468 0 420 b 27 251 0 333 9 292 b 140 117 52 196 92 153 b 397 0 223 52 317 4 z m 340 95 b 132 314 233 84 122 216 b 324 589 145 438 200 539 b 415 611 360 603 389 611 b 544 505 469 611 505 576 b 590 392 564 471 583 432 b 596 343 593 374 596 359 b 340 95 596 210 485 96 z', + }, + csymHalfDiminished: { + x_min: -32, + x_max: 496, + y_min: -33, + y_max: 492, + ha: 525, + o: 'm -29 -48 b 0 -36 -19 -48 -9 -40 b 17 -20 7 -32 12 -24 b 134 94 56 19 95 56 b 372 0 207 43 282 0 b 455 13 397 0 426 4 b 677 258 556 45 671 141 b 678 289 677 268 678 278 b 593 539 678 380 654 467 b 592 541 593 540 592 540 l 684 632 b 713 678 700 647 711 665 b 714 691 714 684 714 688 b 707 704 714 698 711 701 b 691 708 701 707 696 708 b 660 691 680 708 670 701 l 552 585 b 478 634 530 606 507 624 b 361 684 438 648 397 661 b 301 703 341 697 320 703 b 226 677 275 703 251 693 b 27 449 140 618 72 543 b 0 324 9 410 -4 370 b 88 128 -1 243 30 177 b -30 -7 43 86 0 46 b -46 -33 -35 -16 -46 -24 b -42 -42 -46 -36 -45 -39 b -29 -48 -37 -46 -33 -48 z m 141 179 b 121 251 128 200 121 225 b 128 297 121 265 124 281 b 351 575 163 420 248 505 b 377 582 359 579 369 580 b 501 536 422 586 468 567 b 141 179 382 416 261 298 z m 281 105 b 179 137 240 105 206 117 b 210 168 189 147 200 157 l 537 487 b 547 455 541 477 544 467 b 556 370 552 426 556 397 b 429 154 556 274 503 207 b 281 105 384 122 336 105 z', + }, + csymAugmented: { + x_min: 0, + x_max: 530, + y_min: 0, + y_max: 539, + ha: 539, + o: 'm 380 0 b 393 14 384 4 390 9 b 397 46 397 24 397 36 l 397 333 b 736 327 511 331 624 330 b 763 343 755 327 763 333 b 755 361 763 348 760 354 b 635 431 726 402 688 431 l 390 431 l 390 485 b 386 606 392 526 386 566 b 392 664 386 625 387 645 b 395 690 393 672 395 681 b 376 753 395 711 389 734 b 357 776 372 762 369 776 b 350 775 354 776 353 776 b 327 740 337 769 327 759 b 327 621 328 700 327 661 b 330 438 328 559 328 498 l 29 438 b 4 431 20 438 7 442 b 0 413 3 425 0 419 b 7 399 0 408 1 403 b 131 338 45 369 85 340 b 331 334 199 336 265 334 b 333 163 333 276 333 220 b 366 13 333 109 348 63 b 380 0 367 7 374 4 z', + }, + csymMajorSeventh: { + x_min: 0, + x_max: 593.1050509327923, + y_min: 0, + y_max: 569, + ha: 569, + o: 'm 124 1 l 497 27 b 819 50 605 35 711 43 b 854 98 847 52 855 63 b 812 200 845 128 835 166 b 564 585 730 328 648 456 b 435 786 521 652 480 720 b 397 819 419 809 408 819 b 369 792 387 819 379 811 b 7 173 248 585 128 379 b 0 150 3 166 0 158 b 7 128 0 143 3 135 b 89 10 30 86 65 50 b 109 0 95 1 102 0 z m 163 147 b 153 153 158 147 156 148 b 164 179 147 163 158 170 b 426 644 251 334 338 488 b 442 660 432 655 436 660 b 458 645 446 660 452 655 b 727 220 547 503 636 361 b 736 202 732 213 736 206 b 714 190 736 196 730 192 b 179 148 537 177 359 163 b 163 147 174 150 168 147 z', + }, + csymMinor: { + x_min: 0, + x_max: 481.64484584675915, + y_min: 193, + y_max: 265.20435472429375, + ha: 72.20435472429375, + o: 'm 168 278 b 197 279 177 278 187 278 b 431 292 275 287 353 288 l 431 291 b 661 302 508 295 585 300 b 693 311 672 304 688 300 b 674 346 697 324 685 338 b 564 382 641 366 606 384 l 27 360 b 0 347 17 360 1 366 b 19 314 0 333 3 321 b 168 278 66 291 115 278 z', + }, + csymParensLeftTall: { + x_min: 0, + x_max: 185, + y_min: 0, + y_max: 1034, + ha: 1034, + o: 'm 215 0 b 226 17 223 1 223 10 b 229 37 229 24 229 32 b 220 81 229 52 225 66 b 167 203 206 124 181 160 b 86 616 124 338 89 474 b 82 765 85 665 82 716 b 91 886 82 805 84 845 b 245 1319 120 1038 171 1184 b 266 1397 259 1346 266 1371 b 259 1443 266 1411 264 1427 b 226 1489 253 1463 248 1489 b 193 1454 212 1489 203 1467 b 114 1292 158 1404 140 1346 b 0 806 40 1138 0 978 b 3 721 0 779 0 750 b 1 677 1 707 1 693 b 36 418 1 593 16 504 b 144 96 62 307 95 199 b 196 12 158 66 179 39 b 212 0 200 7 204 0 z', + }, + csymParensRightTall: { + x_min: -40, + x_max: 188.5411603861406, + y_min: 0.20204102886728756, + y_max: 1058, + ha: 1057.7979589711326, + o: 'm 30 1 b 63 14 42 -3 55 6 b 122 99 86 40 108 68 b 189 258 145 153 166 204 b 271 667 239 379 268 503 b 246 852 275 708 261 780 b 10 1495 197 1077 128 1295 b -14 1524 4 1505 1 1524 b -16 1522 -14 1524 -16 1524 b -46 1489 -33 1521 -43 1503 b -58 1417 -53 1464 -58 1440 b -36 1335 -58 1390 -52 1364 b 68 1138 0 1270 35 1204 b 163 883 108 1056 137 969 b 206 668 184 814 200 742 b 207 631 207 655 207 642 b 166 426 207 560 192 492 b 46 143 130 330 111 228 b 19 29 19 109 17 69 b 30 1 20 19 24 3 z', + }, + csymBracketLeftTall: { + x_min: 0, + x_max: 328, + y_min: 2, + y_max: 807, + ha: 805, + o: 'm 68 3 b 76 4 71 3 73 3 b 186 13 112 12 150 13 b 240 13 204 13 222 13 l 287 13 b 379 17 317 13 348 13 b 472 121 435 24 472 69 b 467 156 472 132 469 144 b 446 174 462 168 456 174 l 439 174 b 327 166 402 167 364 166 b 265 167 307 166 285 167 l 209 167 b 187 475 199 269 189 372 b 166 985 186 645 187 815 l 377 1002 b 415 1001 389 1002 402 1001 b 456 1027 432 1001 448 1005 b 472 1096 467 1048 472 1073 b 464 1146 472 1113 469 1130 b 439 1162 459 1161 452 1162 b 40 1129 305 1151 173 1139 b 1 1093 17 1128 1 1120 b 0 1009 0 1064 0 1037 b 13 975 0 991 3 981 b 30 670 23 873 30 772 b 29 608 30 649 29 628 l 29 563 b 56 88 29 405 49 246 b 53 22 55 66 55 43 b 68 3 53 12 56 3 z', + }, + csymBracketRightTall: { + x_min: 0.8519422934604696, + x_max: 306, + y_min: -0.17180889215212544, + y_max: 829.1037519824849, + ha: 829.2755608746371, + o: 'm 117 0 b 372 29 203 -3 287 20 l 373 29 b 406 32 383 30 395 30 b 436 60 428 33 432 43 b 441 109 439 76 441 92 b 433 200 441 140 436 170 b 409 696 422 366 409 530 b 416 887 409 763 416 831 b 415 920 416 899 415 910 l 415 1106 b 412 1135 415 1116 415 1126 l 412 1145 b 373 1189 413 1171 408 1192 b 321 1189 356 1189 338 1189 l 215 1189 l 215 1194 l 56 1194 b 6 1153 27 1195 10 1187 b 1 1064 3 1123 4 1093 b 22 1043 0 1050 6 1043 b 84 1044 42 1044 63 1044 b 264 1038 144 1044 203 1040 b 265 958 264 1011 265 985 b 262 845 265 920 264 883 b 259 710 259 801 259 755 b 279 243 259 554 271 399 b 285 170 281 219 284 194 b 95 151 222 161 158 156 b 29 81 27 147 27 147 l 29 73 b 105 0 33 0 33 0 z', + }, + csymParensLeftVeryTall: { + x_min: 0, + x_max: 116, + y_min: 0, + y_max: 934.1531437146923, + ha: 934.1531437146923, + o: 'm 128 0 b 147 17 137 0 144 9 b 167 102 160 45 167 73 b 158 154 167 120 164 137 b 117 307 141 204 130 256 b 63 698 84 435 71 567 b 62 788 62 729 62 757 b 69 916 62 829 63 873 b 109 1172 81 1001 94 1087 b 132 1320 118 1221 137 1269 b 124 1345 131 1329 134 1342 b 96 1332 114 1346 102 1341 b 71 1269 82 1313 75 1292 b 39 1104 59 1214 48 1159 b 0 742 19 988 0 871 b 10 559 3 688 6 624 b 58 226 16 446 33 336 b 112 20 73 157 94 89 b 128 0 115 13 118 0 z', + }, + csymParensRightVeryTall: { + x_min: -20, + x_max: 111.4332498248095, + y_min: -0.07657185734616112, + y_max: 1009, + ha: 1009.0765718573462, + o: 'm -3 0 b 20 22 9 -1 14 12 b 36 56 26 33 32 45 b 99 274 58 128 84 199 b 160 788 135 439 163 605 b 122 1181 164 912 145 1047 b 50 1431 108 1267 86 1351 b 36 1453 48 1439 46 1453 l 35 1453 l 30 1453 b 7 1423 17 1449 7 1440 b 27 1287 9 1377 10 1331 b 96 963 71 1184 85 1074 b 105 818 102 914 105 867 b 91 624 105 753 99 688 b -4 213 72 484 48 344 b -29 101 -19 174 -29 138 b -16 27 -29 76 -24 52 b -3 0 -13 17 -14 3 z', + }, + csymDiagonalArrangementSlash: { + x_min: -0.19862981551275186, + x_max: 990, + y_min: -26.946823529189132, + y_max: 1027.5514326488437, + ha: 1054.4982561780328, + o: 'm 14 -37 b 58 -9 35 -45 46 -22 b 392 333 170 105 279 217 l 765 711 b 1372 1329 968 916 1168 1125 b 1424 1439 1403 1359 1417 1397 b 1426 1457 1424 1444 1426 1450 b 1416 1477 1426 1466 1423 1475 b 1374 1462 1400 1485 1385 1473 b 1181 1269 1309 1397 1246 1331 b 736 831 1031 1122 884 979 b 356 452 609 704 485 576 b 32 132 246 347 143 236 b 0 50 7 109 1 84 b 6 9 -1 37 3 23 b 14 -37 10 -9 0 -32 z', + }, + accidentalNarrowReversedFlat: { + x_min: 0, + x_max: 208, + y_min: -231, + y_max: 449, + ha: 680, + o: 'm 272 -333 b 284 -320 278 -333 281 -328 b 300 -174 297 -272 300 -222 b 275 190 298 -52 279 68 b 268 445 272 275 268 360 l 268 490 b 264 612 269 530 265 572 b 236 647 264 632 252 645 l 235 647 b 217 618 220 647 220 628 b 207 526 210 588 207 556 b 210 432 207 494 210 464 b 216 268 213 377 215 323 l 216 230 l 215 232 b 154 256 194 240 174 251 b 111 264 138 261 124 264 b 3 153 50 264 10 223 b 0 94 0 132 0 114 b 194 -276 0 -63 68 -186 b 255 -323 215 -291 236 -307 b 272 -333 262 -330 268 -333 z m 233 -138 b 71 30 168 -92 105 -45 b 63 59 65 42 63 50 b 96 95 62 75 73 86 b 130 102 108 99 120 102 b 215 76 160 102 187 88 l 220 73 b 225 -22 220 42 222 10 b 233 -138 229 -62 230 -101 z', + }, + accidentalNarrowReversedFlatAndFlat: { + x_min: 0, + x_max: 335, + y_min: -231, + y_max: 449, + ha: 680, + o: 'm 151 490 b 148 612 151 530 150 572 b 132 647 148 632 141 645 b 122 618 124 647 124 628 b 117 526 118 588 117 556 b 118 432 117 494 118 464 b 121 268 120 377 121 323 l 121 232 b 86 256 109 240 98 251 b 62 264 78 261 69 264 b 1 153 29 264 6 223 b 0 94 0 132 0 114 b 109 -276 0 -63 37 -186 b 144 -323 121 -291 132 -307 b 153 -333 147 -330 151 -333 b 160 -320 157 -333 158 -328 b 168 -174 167 -272 168 -222 b 154 190 168 -52 157 68 b 151 445 153 275 151 360 z m 480 153 b 372 264 472 223 432 264 b 328 256 359 264 344 261 b 268 232 308 251 288 240 l 266 230 l 266 268 b 272 432 266 323 269 377 b 275 526 272 464 275 494 b 265 618 275 556 272 588 b 248 647 262 628 262 647 l 246 647 b 219 612 230 645 219 632 b 215 490 217 572 213 530 l 215 445 b 207 190 215 360 210 275 b 183 -174 203 68 183 -52 b 199 -320 183 -222 186 -272 b 210 -333 202 -328 204 -333 b 228 -323 215 -333 220 -330 b 288 -276 246 -307 268 -291 b 482 94 415 -186 482 -63 b 480 153 482 114 482 132 z m 40 30 b 36 59 36 42 36 50 b 55 95 35 75 42 86 b 73 102 60 99 68 102 b 121 76 89 102 105 88 l 124 73 b 127 -22 124 42 125 10 l 131 -138 b 40 30 95 -92 60 -43 z m 419 59 b 412 30 419 50 418 42 b 249 -138 374 -43 314 -92 b 258 -22 252 -101 253 -62 b 262 73 261 10 262 42 l 268 76 b 353 102 295 88 323 102 b 386 95 363 102 374 99 b 419 59 409 86 420 75 z', + }, + accidentalWilsonPlus: { + x_min: 0, + x_max: 298, + y_min: -218, + y_max: 218, + ha: 436, + o: 'm 232 -314 b 236 -301 236 -310 236 -305 l 236 -295 b 243 -52 239 -213 242 -132 l 369 62 b 429 200 413 101 425 147 b 416 243 429 216 428 236 b 383 225 406 251 393 232 l 377 220 b 246 98 336 177 291 138 b 249 242 248 145 246 193 b 225 304 251 265 242 287 b 209 314 220 308 215 314 b 204 312 207 314 206 312 b 196 292 196 310 196 300 b 193 184 194 256 194 220 b 187 48 192 140 190 94 b 46 -72 141 7 94 -32 b 0 -163 13 -98 0 -127 b 1 -187 0 -170 0 -179 b 10 -235 4 -203 6 -219 b 20 -255 12 -242 14 -251 b 36 -245 26 -259 30 -249 b 181 -109 85 -200 132 -154 b 176 -258 180 -158 176 -209 b 232 -314 176 -298 186 -307 z', + }, + accidentalWilsonMinus: { + x_min: 0, + x_max: 284.2093390143919, + y_min: -163, + y_max: 163, + ha: 326, + o: 'm 386 -232 b 409 -163 415 -222 408 -180 b 382 -69 410 -120 408 -89 b 32 228 264 30 141 118 b 17 235 26 233 22 235 b 3 219 9 235 3 228 b 0 157 3 199 0 179 b 29 69 0 125 6 95 b 323 -194 115 -29 222 -111 b 374 -235 338 -206 353 -235 b 386 -232 377 -235 382 -233 z', + }, + }, + fontFamily: 'Petaluma', + resolution: 1000, + generatedOn: '2022-06-26T17:47:23.560Z', +}; + + +/***/ }), + +/***/ "./src/fonts/petaluma_metrics.ts": +/*!***************************************!*\ + !*** ./src/fonts/petaluma_metrics.ts ***! + \***************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "PetalumaMetrics": () => (/* binding */ PetalumaMetrics) +/* harmony export */ }); +/** + * The Petaluma font was created by Steinberg Media. + * https://github.com/steinbergmedia/petaluma + */ +const PetalumaMetrics = { + name: 'Petaluma', + smufl: true, + stave: { + padding: 15, + endPaddingMax: 15, + endPaddingMin: 7, + unalignedNotePadding: 12, + }, + accidental: { + noteheadAccidentalPadding: 1, + leftPadding: 2, + accidentalSpacing: 3, + }, + clef: { + default: { + point: 32, + width: 26, + }, + small: { + point: 26, + width: 20, + }, + annotations: { + '8va': { + smuflCode: 'timeSig8', + default: { + point: 18, + treble: { + line: -1.4, + shiftX: 12, + }, + }, + small: { + point: 16, + treble: { + line: -0.2, + shiftX: 8, + }, + }, + }, + '8vb': { + smuflCode: 'timeSig8', + default: { + point: 18, + treble: { + line: 6, + shiftX: 10, + }, + bass: { + line: 3.5, + shiftX: 1, + }, + }, + small: { + point: 16, + treble: { + line: 5.3, + shiftX: 6, + }, + bass: { + line: 3.1, + shiftX: 0.5, + }, + }, + }, + }, + // These may no longer be necessary + lineCount: { + '8': { point: 55, shiftY: 14 }, + '7': { point: 47, shiftY: 8 }, + '6': { point: 32, shiftY: 1 }, + '5': { point: 30, shiftY: -6 }, + '4': { point: 23, shiftY: -12 }, + }, + }, + parenthesis: { + default: { + point: 39, + width: 7, + }, + gracenote: { + point: (39 * 3) / 5, + width: 3, + }, + }, + pedalMarking: { + up: { + point: 40, + }, + down: { + point: 34, + }, + }, + // These are for numeric digits, such as in time signatures + digits: { + // used by timesig + shiftLine: -1, + point: 22, + // used by tuplets + tupletPoint: 16, + shiftY: -2, + }, + articulation: { + articStaccatissimoAbove: { + padding: 2, + }, + articStaccatissimoBelow: { + padding: 2, + }, + }, + tremolo: { + default: { + point: 25, + spacing: 5, + offsetYStemUp: -5, + offsetYStemDown: 5, + offsetXStemUp: 13, + offsetXStemDown: 1, + }, + grace: { + point: 18, + spacing: 4, + offsetYStemUp: -5, + offsetYStemDown: 5, + offsetXStemUp: 8, + offsetXStemDown: 1, + }, + }, + staveRepetition: { + symbolText: { + offsetX: 12, + offsetY: 25, + spacing: 5, + }, + coda: { + offsetY: 25, + }, + segno: { + offsetY: 10, + }, + }, + noteHead: { + displaced: { + shiftX: -2, + }, + }, + stem: { + heightAdjustmentForFlag: -3, + // These are stem (Y) offsets to the note heads. To shift the + // noteheads (x-position) themselves, see glyphs.notehead.custom. + noteHead: { + noteheadTriangleUpHalf: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpBlack: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpWhole: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadXHalf: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXBlack: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXWhole: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadHalf: { + offsetYBaseStemDown: 1.8, + offsetYBaseStemUp: -1.8, + }, + noteheadBlack: { + offsetYBaseStemDown: 2, + offsetYBaseStemUp: -2, + }, + noteheadSquareWhite: { + offsetYBaseStemDown: -5, + offsetYBaseStemUp: 5, + }, + }, + }, + // Values under here are used by the Glyph class to reposition and rescale + // glyphs based on their category. This should be the first stop for + // custom font glyph repositioning. + // + // The glyph loader first looks up a specific set of settings based on the + // glyph code, and if not found, uses the defaults from the category. See + // glyphs.textNote for an example of this. + // + // Details in Glyph.lookupFontMetrics. + glyphs: { + coda: { + point: 20, + shiftX: -7, + shiftY: 8, + }, + segno: { + shiftX: -7, + }, + flag: { + shiftX: -0.77, + flag16thUp: { + shiftX: -0.75, + }, + flag32ndUp: { + shiftX: -0.85, + }, + flag64thUp: { + shiftX: -1.55, + }, + flag128thUp: { + shiftX: -1.3, + }, + flag16thDown: { + shiftX: -0.75, + }, + flag32ndDown: { + shiftX: -0.76, + }, + flag64thDown: { + shiftX: -1.5, + }, + flag128thDown: { + shiftX: -1.2, + }, + staveTempo: { + shiftX: -1, + }, + }, + clef: { + gClef: { + default: { scale: 1.1, shiftY: 1 }, + small: { shiftY: 1.5 }, + }, + fClef: { + default: { shiftY: -0.5 }, + }, + }, + ornament: { + ornamentTurn: { + scale: 1.2, + }, + ornamentTurnSlash: { + scale: 1.2, + }, + }, + stringNumber: { + verticalPadding: 8, + stemPadding: 2, + leftPadding: 5, + rightPadding: 6, + }, + stroke: { + arrowheadBlackDown: { + straight: { + shiftX: -4.5, + }, + wiggly: { + shiftX: -1, + shiftY: 1, + }, + }, + arrowheadBlackUp: { + straight: { + shiftX: -0.85, + }, + wiggly: { + shiftX: -1, + shiftY: 1, + }, + }, + }, + textNote: { + point: 34, + breathMarkTick: { + point: 36, + shiftY: 9, + }, + breathMarkComma: { + point: 36, + }, + segno: { + point: 30, + shiftX: -7, + shiftY: 8, + }, + coda: { + point: 20, + shiftX: -7, + shiftY: 8, + }, + ornamentTrill: { + shiftX: -10, + shiftY: 8, + }, + ornamentMordent: { + shiftX: -8, + }, + ornamentShortTrill: { + shiftX: -8, + }, + }, + noteHead: { + minPadding: 2, + standard: { + noteheadBlackStemUp: { + shiftX: 0.5, + }, + noteheadHalfStemUp: { + shiftX: 0.725, + }, + noteheadWholeStemUp: { + shiftX: 1, + }, + }, + custom: { + noteheadCircleXStemUp: { + shiftX: -1, + }, + noteheadCircleXStemDown: { + shiftX: 0.25, + }, + noteheadDiamondHalfStemUp: { + shiftX: 1.5, + }, + noteheadDiamondBlackStemUp: { + shiftX: 1.5, + }, + noteheadDiamondWholeStemUp: { + shiftX: 1, + }, + noteheadXBlackStemUp: { + shiftX: 1, + }, + noteheadXHalfStemUp: { + shiftX: -3, + }, + noteheadXHalfStemDown: { + shiftX: 1, + }, + noteheadXWholeStemUp: { + shiftX: -7, + }, + noteheadXWholeStemDown: { + shiftX: 1, + }, + noteheadXDoubleWholeStemUp: { + shiftX: -12, + }, + noteheadXDoubleWholeStemDown: { + shiftX: -4, + }, + noteheadSquareWhiteStemDown: { + shiftX: 0.25, + }, + noteheadSquareWhiteStemUp: { + shiftX: -0.75, + }, + noteheadSquareBlackStemUp: { + shiftX: -0.75, + }, + noteheadTriangleUpWholeStemUp: { + shiftX: -0.75, + }, + }, + }, + chordSymbol: { + global: { + superscriptOffset: -400, + subscriptOffset: 300, + kerningOffset: -150, + lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'], + upperKerningText: ['L'], + spacing: 20, + superSubRatio: 0.73, + }, + csymDiminished: { + scale: 0.8, + leftSideBearing: -95, + advanceWidth: 506, + yOffset: 0, + }, + csymHalfDiminished: { + scale: 0.8, + leftSideBearing: -32, + advanceWidth: 506, + yOffset: 0, + }, + csymAugmented: { + scale: 1, + leftSideBearing: -25, + advanceWidth: 530, + yOffset: 0, + }, + csymParensLeftTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 155, + yOffset: 150, + }, + csymParensRightTall: { + scale: 0.8, + leftSideBearing: 40, + advanceWidth: 189, + yOffset: 150, + }, + csymBracketLeftTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 328, + yOffset: 0, + }, + csymBracketRightTall: { + scale: 0.8, + leftSideBearing: 1, + advanceWidth: 600, + yOffset: 0, + }, + csymParensLeftVeryTall: { + scale: 0.95, + leftSideBearing: 0, + advanceWidth: 210, + yOffset: 250, + }, + csymParensRightVeryTall: { + scale: 0.9, + leftSideBearing: -100, + advanceWidth: 111, + yOffset: 250, + }, + csymDiagonalArrangementSlash: { + scale: 0.6, + leftSideBearing: -1, + advanceWidth: 990, + yOffset: 0, + }, + csymMinor: { + scale: 0.7, + leftSideBearing: 0, + advanceWidth: 482, + yOffset: 0, + }, + csymMajorSeventh: { + scale: 0.8, + leftSideBearing: 100, + yOffset: 0, + advanceWidth: 600, + }, + accidentalSharp: { + scale: 0.7, + leftSideBearing: 0, + advanceWidth: 425, + yOffset: -422, + }, + accidentalFlat: { + scale: 0.8, + leftSideBearing: -10, + advanceWidth: 228, + yOffset: -284, + }, + }, + jazzOrnaments: { + brassScoop: { + scale: 1.0, + xOffset: -12, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 15, + }, + brassDoitMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 19, + }, + brassFallLipShort: { + scale: 1.0, + xOffset: 16, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 19, + }, + brassLiftMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 5, + stemUpYOffset: 0, + reportedWidth: 15, + }, + brassFallRoughMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 26, + stemUpYOffset: 0, + reportedWidth: 5, + }, + brassBend: { + scale: 1.0, + xOffset: 3, + yOffset: -8, + stemUpYOffset: 28, + reportedWidth: 5, + }, + brassMuteClosed: { + scale: 1.0, + xOffset: 3, + yOffset: -8, + stemUpYOffset: 26, + reportedWidth: 5, + }, + brassMuteOpen: { + scale: 1.0, + xOffset: 4, + yOffset: -8, + stemUpYOffset: 27, + reportedWidth: 5, + }, + brassFlip: { + scale: 1.0, + xOffset: 10, + yOffset: -4, + stemUpYOffset: 7, + reportedWidth: 5, + }, + brassJazzTurn: { + scale: 1.0, + xOffset: 6, + yOffset: -4, + stemUpYOffset: 5, + reportedWidth: 30, + }, + brassSmear: { + scale: 1.0, + xOffset: 10, + yOffset: -4, + stemUpYOffset: 5, + reportedWidth: 5, + }, + }, + tuplet: { + noteHeadOffset: 20, + stemOffset: 10, + bottomLine: 4, + topModifierOffset: 20, + }, + }, +}; + + +/***/ }), + +/***/ "./src/fonts/petalumascript_glyphs.ts": +/*!********************************************!*\ + !*** ./src/fonts/petalumascript_glyphs.ts ***! + \********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "PetalumaScriptFont": () => (/* binding */ PetalumaScriptFont) +/* harmony export */ }); +const PetalumaScriptFont = { + spacing: 50, + glyphs: { + ' ': { + x_min: 0, + x_max: 250, + y_min: 0, + y_max: 500, + ha: 500, + leftSideBearing: 0, + advanceWidth: 250, + }, + '0': { + x_min: 33, + x_max: 534, + y_min: -13, + y_max: 751, + ha: 764, + leftSideBearing: 33, + advanceWidth: 570, + }, + '1': { + x_min: 48, + x_max: 235, + y_min: -17, + y_max: 734, + ha: 751, + leftSideBearing: 48, + advanceWidth: 286, + }, + '2': { + x_min: 56, + x_max: 571, + y_min: -19, + y_max: 741, + ha: 760, + leftSideBearing: 56, + advanceWidth: 626, + }, + '3': { + x_min: 50, + x_max: 528, + y_min: -7, + y_max: 731, + ha: 738, + leftSideBearing: 50, + advanceWidth: 589, + }, + '4': { + x_min: 38, + x_max: 564, + y_min: -13, + y_max: 743, + ha: 756, + leftSideBearing: 38, + advanceWidth: 614, + }, + '5': { + x_min: 42, + x_max: 601, + y_min: -34, + y_max: 743, + ha: 777, + leftSideBearing: 42, + advanceWidth: 648, + }, + '6': { + x_min: 47, + x_max: 606, + y_min: -16, + y_max: 743, + ha: 759, + leftSideBearing: 47, + advanceWidth: 667, + }, + '7': { + x_min: 47, + x_max: 567, + y_min: 5, + y_max: 739, + ha: 734, + leftSideBearing: 0, + advanceWidth: 615, + }, + '8': { + x_min: 40, + x_max: 541, + y_min: -15, + y_max: 752, + ha: 767, + leftSideBearing: 40, + advanceWidth: 585, + }, + '9': { + x_min: 40, + x_max: 537, + y_min: -52, + y_max: 736, + ha: 788, + leftSideBearing: 40, + advanceWidth: 592, + }, + '!': { + x_min: 49, + x_max: 180, + y_min: -7, + y_max: 761, + ha: 768, + leftSideBearing: 49, + advanceWidth: 230, + }, + '"': { + x_min: 39, + x_max: 304, + y_min: 596, + y_max: 804, + ha: 208, + leftSideBearing: 39, + advanceWidth: 353, + }, + '#': { + x_min: 33, + x_max: 599, + y_min: -8, + y_max: 765, + ha: 773, + leftSideBearing: 33, + advanceWidth: 648, + }, + $: { + x_min: 53, + x_max: 495, + y_min: -111, + y_max: 823, + ha: 934, + leftSideBearing: 53, + advanceWidth: 560, + }, + '%': { + x_min: 35, + x_max: 656, + y_min: -128, + y_max: 808, + ha: 936, + leftSideBearing: 35, + advanceWidth: 711, + }, + '&': { + x_min: 53, + x_max: 441, + y_min: -3, + y_max: 753, + ha: 756, + leftSideBearing: 53, + advanceWidth: 500, + }, + "'": { + x_min: 43, + x_max: 161, + y_min: 590, + y_max: 811, + ha: 221, + leftSideBearing: 43, + advanceWidth: 217, + }, + '(': { + x_min: 41, + x_max: 311, + y_min: -36, + y_max: 845, + ha: 881, + leftSideBearing: 41, + advanceWidth: 308, + }, + ')': { + x_min: -8, + x_max: 257, + y_min: -21, + y_max: 852, + ha: 873, + leftSideBearing: -8, + advanceWidth: 280, + }, + '*': { + x_min: 59, + x_max: 539, + y_min: 175, + y_max: 589, + ha: 414, + leftSideBearing: 59, + advanceWidth: 601, + }, + '+': { + x_min: 33, + x_max: 361, + y_min: 180, + y_max: 587, + ha: 407, + leftSideBearing: 33, + advanceWidth: 400, + }, + ',': { + x_min: 15, + x_max: 176, + y_min: -129, + y_max: 92, + ha: 221, + leftSideBearing: 15, + advanceWidth: 205, + }, + '-': { + x_min: 40, + x_max: 380, + y_min: 317, + y_max: 452, + ha: 135, + leftSideBearing: 40, + advanceWidth: 422, + }, + '.': { + x_min: 48, + x_max: 185, + y_min: -56, + y_max: 84, + ha: 140, + leftSideBearing: 48, + advanceWidth: 227, + }, + '/': { + x_min: -58, + x_max: 654, + y_min: -122, + y_max: 844, + ha: 966, + leftSideBearing: -58, + advanceWidth: 626, + }, + ':': { + x_min: 65, + x_max: 225, + y_min: 97, + y_max: 536, + ha: 439, + leftSideBearing: 65, + advanceWidth: 302, + }, + ';': { + x_min: 13, + x_max: 295, + y_min: -139, + y_max: 536, + ha: 675, + leftSideBearing: 13, + advanceWidth: 334, + }, + '<': { + x_min: 28, + x_max: 438, + y_min: -1, + y_max: 607, + ha: 608, + leftSideBearing: 28, + advanceWidth: 475, + }, + '=': { + x_min: 40, + x_max: 383, + y_min: 199.9598640852289, + y_max: 541, + ha: 341.0401359147711, + leftSideBearing: 40, + advanceWidth: 422, + }, + '>': { + x_min: 35, + x_max: 421, + y_min: 28, + y_max: 632, + ha: 604, + leftSideBearing: 35, + advanceWidth: 466, + }, + '?': { + x_min: 45, + x_max: 548, + y_min: -17, + y_max: 767, + ha: 784, + leftSideBearing: 45, + advanceWidth: 592, + }, + '@': { + x_min: 51, + x_max: 730, + y_min: -78, + y_max: 753, + ha: 831, + leftSideBearing: 51, + advanceWidth: 781, + }, + A: { + x_min: 37, + x_max: 554, + y_min: -4, + y_max: 746, + ha: 750, + leftSideBearing: 37, + advanceWidth: 617, + }, + B: { + x_min: 37, + x_max: 532, + y_min: 3, + y_max: 783, + ha: 780, + leftSideBearing: 37, + advanceWidth: 579, + }, + C: { + x_min: 37, + x_max: 583, + y_min: -3, + y_max: 775, + ha: 778, + leftSideBearing: 37, + advanceWidth: 623, + }, + D: { + x_min: 50, + x_max: 530, + y_min: -15, + y_max: 749, + ha: 764, + leftSideBearing: 50, + advanceWidth: 579, + }, + E: { + x_min: 45, + x_max: 531, + y_min: -1, + y_max: 743, + ha: 744, + leftSideBearing: 45, + advanceWidth: 585, + }, + F: { + x_min: 45, + x_max: 459, + y_min: 23, + y_max: 727, + ha: 704, + leftSideBearing: 45, + advanceWidth: 510, + }, + G: { + x_min: 31, + x_max: 577, + y_min: -8, + y_max: 733, + ha: 741, + leftSideBearing: 31, + advanceWidth: 611, + }, + H: { + x_min: 37, + x_max: 493, + y_min: -22, + y_max: 758, + ha: 780, + leftSideBearing: 37, + advanceWidth: 535, + }, + I: { + x_min: 47, + x_max: 501, + y_min: -3, + y_max: 731, + ha: 734, + leftSideBearing: 47, + advanceWidth: 541, + }, + J: { + x_min: 33, + x_max: 531, + y_min: -23, + y_max: 725, + ha: 748, + leftSideBearing: 33, + advanceWidth: 573, + }, + K: { + x_min: 43, + x_max: 505, + y_min: -10, + y_max: 740, + ha: 750, + leftSideBearing: 43, + advanceWidth: 560, + }, + L: { + x_min: 49, + x_max: 457, + y_min: -2, + y_max: 746, + ha: 748, + leftSideBearing: 49, + advanceWidth: 510, + }, + M: { + x_min: 35, + x_max: 699, + y_min: 1, + y_max: 744, + ha: 743, + leftSideBearing: 35, + advanceWidth: 743, + }, + N: { + x_min: 34, + x_max: 533, + y_min: -17, + y_max: 761, + ha: 778, + leftSideBearing: 34, + advanceWidth: 579, + }, + O: { + x_min: 41, + x_max: 608, + y_min: -5, + y_max: 735, + ha: 740, + leftSideBearing: 41, + advanceWidth: 667, + }, + P: { + x_min: 53, + x_max: 451, + y_min: -18, + y_max: 735, + ha: 753, + leftSideBearing: 53, + advanceWidth: 497, + }, + Q: { + x_min: 40, + x_max: 599, + y_min: -67, + y_max: 744, + ha: 811, + leftSideBearing: 40, + advanceWidth: 648, + }, + R: { + x_min: 39, + x_max: 487, + y_min: 16, + y_max: 735, + ha: 719, + leftSideBearing: 39, + advanceWidth: 535, + }, + S: { + x_min: 35, + x_max: 552, + y_min: -47, + y_max: 708, + ha: 755, + leftSideBearing: 35, + advanceWidth: 604, + }, + T: { + x_min: 26, + x_max: 656, + y_min: -13, + y_max: 718, + ha: 731, + leftSideBearing: 26, + advanceWidth: 705, + }, + U: { + x_min: 41, + x_max: 518, + y_min: -20, + y_max: 748, + ha: 768, + leftSideBearing: 41, + advanceWidth: 567, + }, + V: { + x_min: 47, + x_max: 509, + y_min: -26, + y_max: 744, + ha: 770, + leftSideBearing: 47, + advanceWidth: 567, + }, + W: { + x_min: 44, + x_max: 789, + y_min: -35, + y_max: 720, + ha: 755, + leftSideBearing: 44, + advanceWidth: 833, + }, + X: { + x_min: 63, + x_max: 635, + y_min: -10, + y_max: 745, + ha: 755, + leftSideBearing: 63, + advanceWidth: 680, + }, + Y: { + x_min: 43, + x_max: 503, + y_min: -21, + y_max: 734, + ha: 755, + leftSideBearing: 43, + advanceWidth: 541, + }, + Z: { + x_min: 42, + x_max: 584, + y_min: -10, + y_max: 739, + ha: 749, + leftSideBearing: 42, + advanceWidth: 629, + }, + '[': { + x_min: 46, + x_max: 346, + y_min: -150, + y_max: 884, + ha: 1034, + leftSideBearing: 46, + advanceWidth: 291, + }, + '\\': { + x_min: 20, + x_max: 616, + y_min: -100, + y_max: 797, + ha: 897, + leftSideBearing: 20, + advanceWidth: 645, + }, + ']': { + x_min: -76, + x_max: 226, + y_min: -150, + y_max: 881, + ha: 1031, + leftSideBearing: -76, + advanceWidth: 297, + }, + '^': { + x_min: 43, + x_max: 437, + y_min: 517, + y_max: 812, + ha: 295, + leftSideBearing: 43, + advanceWidth: 478, + }, + _: { + x_min: 29, + x_max: 563, + y_min: -110, + y_max: -1, + ha: 109, + leftSideBearing: 29, + advanceWidth: 598, + }, + '`': { + x_min: 54, + x_max: 321, + y_min: 540, + y_max: 747, + ha: 207, + leftSideBearing: 54, + advanceWidth: 368, + }, + a: { + x_min: 20, + x_max: 447, + y_min: -17, + y_max: 495, + ha: 512, + leftSideBearing: 20, + advanceWidth: 494, + }, + b: { + x_min: 37, + x_max: 466, + y_min: -27, + y_max: 770, + ha: 797, + leftSideBearing: 37, + advanceWidth: 510, + }, + c: { + x_min: 35, + x_max: 456, + y_min: -9, + y_max: 507, + ha: 516, + leftSideBearing: 35, + advanceWidth: 460, + }, + d: { + x_min: 45, + x_max: 520, + y_min: -15, + y_max: 764, + ha: 779, + leftSideBearing: 45, + advanceWidth: 560, + }, + e: { + x_min: 33, + x_max: 370, + y_min: -5, + y_max: 501, + ha: 506, + leftSideBearing: 33, + advanceWidth: 397, + }, + f: { + x_min: 35, + x_max: 411, + y_min: -13, + y_max: 695, + ha: 708, + leftSideBearing: 35, + advanceWidth: 453, + }, + g: { + x_min: 33, + x_max: 551, + y_min: -257, + y_max: 505, + ha: 762, + leftSideBearing: 33, + advanceWidth: 611, + }, + h: { + x_min: 32, + x_max: 458, + y_min: -29, + y_max: 743, + ha: 772, + leftSideBearing: 32, + advanceWidth: 491, + }, + i: { + x_min: 45, + x_max: 167, + y_min: -13, + y_max: 631, + ha: 644, + leftSideBearing: 45, + advanceWidth: 220, + }, + j: { + x_min: -127, + x_max: 261, + y_min: -231, + y_max: 601, + ha: 832, + leftSideBearing: -127, + advanceWidth: 308, + }, + k: { + x_min: 39, + x_max: 443, + y_min: -3, + y_max: 700, + ha: 703, + leftSideBearing: 39, + advanceWidth: 497, + }, + l: { + x_min: 58, + x_max: 168, + y_min: -8, + y_max: 686, + ha: 694, + leftSideBearing: 58, + advanceWidth: 227, + }, + m: { + x_min: 39, + x_max: 688, + y_min: -14, + y_max: 501, + ha: 515, + leftSideBearing: 39, + advanceWidth: 718, + }, + n: { + x_min: 45, + x_max: 491, + y_min: -32, + y_max: 512, + ha: 544, + leftSideBearing: 45, + advanceWidth: 541, + }, + o: { + x_min: 41, + x_max: 424, + y_min: -12, + y_max: 493, + ha: 505, + leftSideBearing: 41, + advanceWidth: 447, + }, + p: { + x_min: 25, + x_max: 529, + y_min: -260, + y_max: 500, + ha: 760, + leftSideBearing: 25, + advanceWidth: 573, + }, + q: { + x_min: 53, + x_max: 603, + y_min: -235, + y_max: 514, + ha: 749, + leftSideBearing: 53, + advanceWidth: 623, + }, + r: { + x_min: 32, + x_max: 407, + y_min: -7, + y_max: 492, + ha: 499, + leftSideBearing: 32, + advanceWidth: 460, + }, + s: { + x_min: 49, + x_max: 416, + y_min: -12, + y_max: 519, + ha: 531, + leftSideBearing: 49, + advanceWidth: 460, + }, + t: { + x_min: 32, + x_max: 442, + y_min: -5, + y_max: 684, + ha: 689, + leftSideBearing: 32, + advanceWidth: 469, + }, + u: { + x_min: 41, + x_max: 487, + y_min: -5, + y_max: 507, + ha: 512, + leftSideBearing: 41, + advanceWidth: 510, + }, + v: { + x_min: 16, + x_max: 441, + y_min: -20, + y_max: 542, + ha: 562, + leftSideBearing: 16, + advanceWidth: 456, + }, + w: { + x_min: 39, + x_max: 639, + y_min: -22, + y_max: 505, + ha: 527, + leftSideBearing: 39, + advanceWidth: 661, + }, + x: { + x_min: 15, + x_max: 505, + y_min: -39, + y_max: 539, + ha: 578, + leftSideBearing: 15, + advanceWidth: 541, + }, + y: { + x_min: -98, + x_max: 501, + y_min: -242, + y_max: 511, + ha: 753, + leftSideBearing: -98, + advanceWidth: 548, + }, + z: { + x_min: 27, + x_max: 479, + y_min: -3, + y_max: 494, + ha: 497, + leftSideBearing: 27, + advanceWidth: 494, + }, + '{': { + x_min: 0, + x_max: 0, + y_min: 0, + y_max: 0, + ha: 0, + leftSideBearing: 0, + advanceWidth: 308, + }, + '|': { + x_min: 0, + x_max: 0, + y_min: 0, + y_max: 0, + ha: 0, + leftSideBearing: 0, + advanceWidth: 308, + }, + '}': { + x_min: 0, + x_max: 0, + y_min: 0, + y_max: 0, + ha: 0, + leftSideBearing: 0, + advanceWidth: 308, + }, + '~': { + x_min: 0, + x_max: 0, + y_min: 0, + y_max: 0, + ha: 0, + leftSideBearing: 0, + advanceWidth: 308, + }, + }, + fontFamily: 'PetalumaScript', + resolution: 1000, + generatedOn: '2020-06-14T18:33:25.407Z', +}; + + +/***/ }), + +/***/ "./src/fonts/robotoslab_glyphs.ts": +/*!****************************************!*\ + !*** ./src/fonts/robotoslab_glyphs.ts ***! + \****************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "RobotoSlabFont": () => (/* binding */ RobotoSlabFont) +/* harmony export */ }); +const RobotoSlabFont = { + spacing: 50, + glyphs: { + ' ': { + x_min: 0, + x_max: 509, + y_min: 0, + y_max: 2000, + ha: 2000, + leftSideBearing: 0, + advanceWidth: 509, + }, + '0': { + x_min: 121, + x_max: 1048, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 121, + advanceWidth: 1168, + }, + '1': { + x_min: 117, + x_max: 767, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 117, + advanceWidth: 844, + }, + '2': { + x_min: 75.8474576645637, + x_max: 1040, + y_min: 0, + y_max: 1477, + ha: 1477, + leftSideBearing: 75, + advanceWidth: 1131, + }, + '3': { + x_min: 74.85365853658536, + x_max: 994, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 74, + advanceWidth: 1106, + }, + '4': { + x_min: 63, + x_max: 1114, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 63, + advanceWidth: 1187, + }, + '5': { + x_min: 96.8448275474953, + x_max: 982, + y_min: -21, + y_max: 1456, + ha: 1477, + leftSideBearing: 96, + advanceWidth: 1081, + }, + '6': { + x_min: 121, + x_max: 1067, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 121, + advanceWidth: 1144, + }, + '7': { + x_min: 76, + x_max: 1060, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: -30, + advanceWidth: 1128, + }, + '8': { + x_min: 92, + x_max: 1039, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 92, + advanceWidth: 1131, + }, + '9': { + x_min: 84, + x_max: 1026, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 84, + advanceWidth: 1154, + }, + '!': { + x_min: 143, + x_max: 340, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 143, + advanceWidth: 483, + }, + '"': { + x_min: 166, + x_max: 634, + y_min: 1055, + y_max: 1560, + ha: 505, + leftSideBearing: 166, + advanceWidth: 770, + }, + '#': { + x_min: 63, + x_max: 1179, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 63, + advanceWidth: 1246, + }, + $: { + x_min: 81.92156915727656, + x_max: 1012, + y_min: -208, + y_max: 1693, + ha: 1901, + leftSideBearing: 81, + advanceWidth: 1110, + }, + '%': { + x_min: 77, + x_max: 1384, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 77, + advanceWidth: 1460, + }, + '&': { + x_min: 74, + x_max: 1242, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 74, + advanceWidth: 1289, + }, + "'": { + x_min: 166, + x_max: 324, + y_min: 1055, + y_max: 1560, + ha: 505, + leftSideBearing: 166, + advanceWidth: 460, + }, + '(': { + x_min: 114, + x_max: 650, + y_min: -463, + y_max: 1636, + ha: 2099, + leftSideBearing: 114, + advanceWidth: 662, + }, + ')': { + x_min: 11, + x_max: 547, + y_min: -463, + y_max: 1636, + ha: 2099, + leftSideBearing: 11, + advanceWidth: 654, + }, + '*': { + x_min: 66, + x_max: 893, + y_min: 607, + y_max: 1456, + ha: 849, + leftSideBearing: 66, + advanceWidth: 958, + }, + '+': { + x_min: 73, + x_max: 1071, + y_min: 146, + y_max: 1206, + ha: 1060, + leftSideBearing: 73, + advanceWidth: 1145, + }, + ',': { + x_min: 23, + x_max: 315, + y_min: -311, + y_max: 221, + ha: 532, + leftSideBearing: 23, + advanceWidth: 404, + }, + '-': { + x_min: 154, + x_max: 643, + y_min: 538, + y_max: 692, + ha: 154, + leftSideBearing: 154, + advanceWidth: 797, + }, + '.': { + x_min: 145, + x_max: 342, + y_min: 0, + y_max: 202, + ha: 202, + leftSideBearing: 145, + advanceWidth: 493, + }, + '/': { + x_min: 0, + x_max: 774, + y_min: -125, + y_max: 1456, + ha: 1581, + leftSideBearing: 0, + advanceWidth: 824, + }, + ':': { + x_min: 145, + x_max: 342, + y_min: 0, + y_max: 1082, + ha: 1082, + leftSideBearing: 145, + advanceWidth: 419, + }, + ';': { + x_min: 53, + x_max: 345, + y_min: -311, + y_max: 1082, + ha: 1393, + leftSideBearing: 53, + advanceWidth: 424, + }, + '<': { + x_min: 76, + x_max: 892, + y_min: 107, + y_max: 1013, + ha: 906, + leftSideBearing: 76, + advanceWidth: 1017, + }, + '=': { + x_min: 147, + x_max: 981, + y_min: 407, + y_max: 987, + ha: 580, + leftSideBearing: 147, + advanceWidth: 1127, + }, + '>': { + x_min: 125, + x_max: 980, + y_min: 87, + y_max: 993, + ha: 906, + leftSideBearing: 125, + advanceWidth: 1060, + }, + '?': { + x_min: 65.92660602419838, + x_max: 890, + y_min: 0, + y_max: 1477, + ha: 1477, + leftSideBearing: 65, + advanceWidth: 953, + }, + '@': { + x_min: 84.3592218305664, + x_max: 1705.2346925277395, + y_min: -453, + y_max: 1431, + ha: 1884, + leftSideBearing: 84, + advanceWidth: 1821, + }, + A: { + x_min: 70, + x_max: 1463, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 70, + advanceWidth: 1533, + }, + B: { + x_min: 81, + x_max: 1253, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1322, + }, + C: { + x_min: 80, + x_max: 1174, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 80, + advanceWidth: 1290, + }, + D: { + x_min: 81, + x_max: 1291, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1356, + }, + E: { + x_min: 81, + x_max: 1190, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1306, + }, + F: { + x_min: 81, + x_max: 1176, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1256, + }, + G: { + x_min: 80, + x_max: 1226, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 80, + advanceWidth: 1346, + }, + H: { + x_min: 81, + x_max: 1497, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1578, + }, + I: { + x_min: 81, + x_max: 604, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 685, + }, + J: { + x_min: 60, + x_max: 1100, + y_min: -21, + y_max: 1456, + ha: 1477, + leftSideBearing: 60, + advanceWidth: 1169, + }, + K: { + x_min: 81, + x_max: 1427, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1501, + }, + L: { + x_min: 81, + x_max: 1130, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1210, + }, + M: { + x_min: 94, + x_max: 1888, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 94, + advanceWidth: 1982, + }, + N: { + x_min: 83, + x_max: 1509, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 83, + advanceWidth: 1592, + }, + O: { + x_min: 70, + x_max: 1281, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 70, + advanceWidth: 1351, + }, + P: { + x_min: 81, + x_max: 1242, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1297, + }, + Q: { + x_min: 70, + x_max: 1348, + y_min: -245, + y_max: 1477, + ha: 1722, + leftSideBearing: 70, + advanceWidth: 1376, + }, + R: { + x_min: 81, + x_max: 1285, + y_min: 0, + y_max: 1455, + ha: 1455, + leftSideBearing: 81, + advanceWidth: 1385, + }, + S: { + x_min: 115, + x_max: 1116, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 115, + advanceWidth: 1206, + }, + T: { + x_min: 96, + x_max: 1306, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 96, + advanceWidth: 1406, + }, + U: { + x_min: 70, + x_max: 1452, + y_min: -21, + y_max: 1456, + ha: 1477, + leftSideBearing: 70, + advanceWidth: 1522, + }, + V: { + x_min: 65, + x_max: 1443, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 65, + advanceWidth: 1508, + }, + W: { + x_min: 72, + x_max: 2057, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 72, + advanceWidth: 2129, + }, + X: { + x_min: 80, + x_max: 1449, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 80, + advanceWidth: 1529, + }, + Y: { + x_min: 65, + x_max: 1396, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 65, + advanceWidth: 1461, + }, + Z: { + x_min: 90, + x_max: 1107, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 90, + advanceWidth: 1197, + }, + '[': { + x_min: 157, + x_max: 541, + y_min: -312, + y_max: 1664, + ha: 1976, + leftSideBearing: 157, + advanceWidth: 573, + }, + '\\': { + x_min: 36, + x_max: 830, + y_min: -125, + y_max: 1456, + ha: 1581, + leftSideBearing: 36, + advanceWidth: 841, + }, + ']': { + x_min: 23, + x_max: 408, + y_min: -312, + y_max: 1664, + ha: 1976, + leftSideBearing: 23, + advanceWidth: 552, + }, + '^': { + x_min: 71, + x_max: 802, + y_min: 729, + y_max: 1456, + ha: 727, + leftSideBearing: 71, + advanceWidth: 864, + }, + _: { + x_min: 119, + x_max: 1041, + y_min: -154, + y_max: 0, + ha: 154, + leftSideBearing: 119, + advanceWidth: 1168, + }, + '`': { + x_min: 40, + x_max: 456, + y_min: 1288, + y_max: 1560, + ha: 272, + leftSideBearing: 40, + advanceWidth: 496, + }, + a: { + x_min: 79, + x_max: 1053, + y_min: -21, + y_max: 1102, + ha: 1123, + leftSideBearing: 79, + advanceWidth: 1132, + }, + b: { + x_min: -16, + x_max: 1071, + y_min: -21, + y_max: 1560, + ha: 1581, + leftSideBearing: -16, + advanceWidth: 1145, + }, + c: { + x_min: 78, + x_max: 988, + y_min: -21, + y_max: 1102, + ha: 1123, + leftSideBearing: 78, + advanceWidth: 1067, + }, + d: { + x_min: 78, + x_max: 1156, + y_min: -21, + y_max: 1560, + ha: 1581, + leftSideBearing: 78, + advanceWidth: 1218, + }, + e: { + x_min: 74, + x_max: 980, + y_min: -21, + y_max: 1102, + ha: 1123, + leftSideBearing: 74, + advanceWidth: 1059, + }, + f: { + x_min: 64, + x_max: 731, + y_min: 0, + y_max: 1581, + ha: 1581, + leftSideBearing: 64, + advanceWidth: 725, + }, + g: { + x_min: 78, + x_max: 1133, + y_min: -437, + y_max: 1102, + ha: 1539, + leftSideBearing: 78, + advanceWidth: 1157, + }, + h: { + x_min: 49, + x_max: 1255, + y_min: 0, + y_max: 1560, + ha: 1560, + leftSideBearing: 49, + advanceWidth: 1315, + }, + i: { + x_min: 67, + x_max: 590, + y_min: 0, + y_max: 1560, + ha: 1560, + leftSideBearing: 67, + advanceWidth: 652, + }, + j: { + x_min: -56, + x_max: 381, + y_min: -437, + y_max: 1560, + ha: 1997, + leftSideBearing: -56, + advanceWidth: 525, + }, + k: { + x_min: 64, + x_max: 1248, + y_min: 0, + y_max: 1560, + ha: 1560, + leftSideBearing: 64, + advanceWidth: 1287, + }, + l: { + x_min: 64, + x_max: 587, + y_min: 0, + y_max: 1560, + ha: 1560, + leftSideBearing: 64, + advanceWidth: 653, + }, + m: { + x_min: 74, + x_max: 1905, + y_min: 0, + y_max: 1102, + ha: 1102, + leftSideBearing: 74, + advanceWidth: 1977, + }, + n: { + x_min: 74, + x_max: 1278, + y_min: 0, + y_max: 1102, + ha: 1102, + leftSideBearing: 74, + advanceWidth: 1343, + }, + o: { + x_min: 78, + x_max: 1046, + y_min: -21, + y_max: 1102, + ha: 1123, + leftSideBearing: 78, + advanceWidth: 1124, + }, + p: { + x_min: 34, + x_max: 1119, + y_min: -416, + y_max: 1102, + ha: 1518, + leftSideBearing: 34, + advanceWidth: 1197, + }, + q: { + x_min: 78, + x_max: 1135, + y_min: -416, + y_max: 1102, + ha: 1518, + leftSideBearing: 78, + advanceWidth: 1139, + }, + r: { + x_min: 72, + x_max: 808, + y_min: 0, + y_max: 1102, + ha: 1102, + leftSideBearing: 72, + advanceWidth: 854, + }, + s: { + x_min: 104, + x_max: 933, + y_min: -21, + y_max: 1102, + ha: 1123, + leftSideBearing: 104, + advanceWidth: 1022, + }, + t: { + x_min: 24, + x_max: 678, + y_min: -17, + y_max: 1343, + ha: 1360, + leftSideBearing: 24, + advanceWidth: 730, + }, + u: { + x_min: 52, + x_max: 1181, + y_min: -21, + y_max: 1082, + ha: 1103, + leftSideBearing: 52, + advanceWidth: 1245, + }, + v: { + x_min: 26, + x_max: 1176, + y_min: 0, + y_max: 1082, + ha: 1082, + leftSideBearing: 26, + advanceWidth: 1206, + }, + w: { + x_min: 52, + x_max: 1777, + y_min: 0, + y_max: 1082, + ha: 1082, + leftSideBearing: 52, + advanceWidth: 1823, + }, + x: { + x_min: 42, + x_max: 1163, + y_min: 0, + y_max: 1082, + ha: 1082, + leftSideBearing: 42, + advanceWidth: 1203, + }, + y: { + x_min: 24, + x_max: 1172, + y_min: -437, + y_max: 1082, + ha: 1519, + leftSideBearing: 24, + advanceWidth: 1192, + }, + z: { + x_min: 88, + x_max: 960, + y_min: 0, + y_max: 1082, + ha: 1082, + leftSideBearing: 88, + advanceWidth: 1032, + }, + '{': { + x_min: 63, + x_max: 671, + y_min: -364, + y_max: 1597, + ha: 1961, + leftSideBearing: 63, + advanceWidth: 701, + }, + '|': { + x_min: 150, + x_max: 307, + y_min: -270, + y_max: 1456, + ha: 1726, + leftSideBearing: 150, + advanceWidth: 451, + }, + '}': { + x_min: 27, + x_max: 635, + y_min: -364, + y_max: 1597, + ha: 1961, + leftSideBearing: 27, + advanceWidth: 701, + }, + '~': { + x_min: 121, + x_max: 1257, + y_min: 401, + y_max: 803, + ha: 402, + leftSideBearing: 121, + advanceWidth: 1386, + }, + }, + fontFamily: 'Roboto Slab', + resolution: 2048, + generatedOn: '2020-06-15T19:12:58.120Z', +}; + + +/***/ }), + +/***/ "./src/fonts/textfonts.ts": +/*!********************************!*\ + !*** ./src/fonts/textfonts.ts ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "loadTextFonts": () => (/* binding */ loadTextFonts) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../font */ "./src/font.ts"); +/* harmony import */ var _textformatter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../textformatter */ "./src/textformatter.ts"); +/* harmony import */ var _petalumascript_glyphs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./petalumascript_glyphs */ "./src/fonts/petalumascript_glyphs.ts"); +/* harmony import */ var _robotoslab_glyphs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./robotoslab_glyphs */ "./src/fonts/robotoslab_glyphs.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + +function loadTextFonts() { + // Roboto Slab + { + const fontData = _robotoslab_glyphs__WEBPACK_IMPORTED_MODULE_3__.RobotoSlabFont; + const { fontFamily, resolution, glyphs } = fontData; + _font__WEBPACK_IMPORTED_MODULE_0__.Font.load(fontFamily, fontData); + // Previously we used 'H', but it isn't actually the tallest or the widest. + // Interestingly, the lowercase 'b' is the tallest glyph. + const maxSizeGlyph = 'b'; + _textformatter__WEBPACK_IMPORTED_MODULE_1__.TextFormatter.registerInfo({ + family: fontFamily, + resolution, + glyphs, + maxSizeGlyph, + monospaced: false, + bold: false, + italic: false, + superscriptOffset: 0.66, + subscriptOffset: 0.66, + serifs: true, + description: 'Text font to pair with the Bravura / Gonville music fonts.', + }); + } + // PetalumaScript + { + const fontData = _petalumascript_glyphs__WEBPACK_IMPORTED_MODULE_2__.PetalumaScriptFont; + const { fontFamily, resolution, glyphs } = fontData; + _font__WEBPACK_IMPORTED_MODULE_0__.Font.load(fontFamily, fontData); + // M is wider, but H is taller. :-) + // Lowercase b is also taller in this font. + const maxSizeGlyph = 'b'; + _textformatter__WEBPACK_IMPORTED_MODULE_1__.TextFormatter.registerInfo({ + family: fontFamily, + resolution, + glyphs, + maxSizeGlyph, + monospaced: false, + bold: false, + italic: false, + superscriptOffset: 0.66, + subscriptOffset: 0.66, + serifs: false, + description: 'Text font to pair with the Petaluma music font.', + }); + } +} + + +/***/ }), + +/***/ "./src/formatter.ts": +/*!**************************!*\ + !*** ./src/formatter.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Formatter": () => (/* binding */ Formatter) +/* harmony export */ }); +/* harmony import */ var _beam__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./beam */ "./src/beam.ts"); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fraction */ "./src/fraction.ts"); +/* harmony import */ var _modifiercontext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiercontext */ "./src/modifiercontext.ts"); +/* harmony import */ var _stave__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stave */ "./src/stave.ts"); +/* harmony import */ var _staveconnector__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./staveconnector */ "./src/staveconnector.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _tickcontext__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./tickcontext */ "./src/tickcontext.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +/* harmony import */ var _voice__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./voice */ "./src/voice.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + + + + + + +// Helper function +const sumArray = (arr) => arr.reduce((a, b) => a + b, 0); +/** + * Create `Alignment`s for each tick in `voices`. Also calculate the + * total number of ticks in voices. + */ +function createContexts(voices, makeContext, addToContext) { + if (voices.length == 0) + return { + map: {}, + array: [], + list: [], + resolutionMultiplier: 0, + }; + // Initialize tick maps. + const tickToContextMap = {}; + const tickList = []; + const contexts = []; + const resolutionMultiplier = Formatter.getResolutionMultiplier(voices); + // For each voice, extract notes and create a context for every + // new tick that hasn't been seen before. + voices.forEach((voice, voiceIndex) => { + // Use resolution multiplier as denominator so that no additional expansion + // of fractional tick values is needed. + const ticksUsed = new _fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(0, resolutionMultiplier); + voice.getTickables().forEach((tickable) => { + const integerTicks = ticksUsed.numerator; + // If we have no tick context for this tick, create one. + if (!tickToContextMap[integerTicks]) { + const newContext = makeContext({ tickID: integerTicks }); + contexts.push(newContext); + tickToContextMap[integerTicks] = newContext; + // Maintain a list of unique integerTicks. + tickList.push(integerTicks); + } + // Add this tickable to the TickContext. + addToContext(tickable, tickToContextMap[integerTicks], voiceIndex); + ticksUsed.add(tickable.getTicks()); + }); + }); + return { + map: tickToContextMap, + array: contexts, + list: tickList.sort((a, b) => a - b), + resolutionMultiplier, + }; +} +// eslint-disable-next-line +function L(...args) { + if (Formatter.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_9__.log)('Vex.Flow.Formatter', args); +} +/** + * Get the rest line number of the next non-rest note(s). + * @param notes array of Notes + * @param currRestLine + * @param currNoteIndex current note index + * @param compare if true, return the midpoint between the current rest line and the next rest line + * @returns a line number, which determines the vertical position of a rest. + */ +function getRestLineForNextNoteGroup(notes, currRestLine, currNoteIndex, compare) { + // If no valid next note group, nextRestLine is same as current. + let nextRestLine = currRestLine; + // Start with the next note and keep going until we find a valid non-rest note group. + for (let noteIndex = currNoteIndex + 1; noteIndex < notes.length; noteIndex++) { + const note = notes[noteIndex]; + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_8__.isNote)(note) && !note.isRest() && !note.shouldIgnoreTicks()) { + nextRestLine = note.getLineForRest(); + break; + } + } + // Locate the mid point between two lines. + if (compare && currRestLine !== nextRestLine) { + const top = Math.max(currRestLine, nextRestLine); + const bot = Math.min(currRestLine, nextRestLine); + nextRestLine = (0,_util__WEBPACK_IMPORTED_MODULE_9__.midLine)(top, bot); + } + return nextRestLine; +} +/** + * Format implements the formatting and layout algorithms that are used + * to position notes in a voice. The algorithm can align multiple voices both + * within a stave, and across multiple staves. + * + * To do this, the formatter breaks up voices into a grid of rational-valued + * `ticks`, to which each note is assigned. Then, minimum widths are assigned + * to each tick based on the widths of the notes and modifiers in that tick. This + * establishes the smallest amount of space required for each tick. + * + * Finally, the formatter distributes the left over space proportionally to + * all the ticks, setting the `x` values of the notes in each tick. + * + * See `tests/formatter_tests.ts` for usage examples. The helper functions included + * here (`FormatAndDraw`, `FormatAndDrawTab`) also serve as useful usage examples. + */ +class Formatter { + constructor(options) { + this.formatterOptions = Object.assign({ globalSoftmax: false, softmaxFactor: _tables__WEBPACK_IMPORTED_MODULE_6__.Tables.SOFTMAX_FACTOR, maxIterations: 5 }, options); + this.justifyWidth = 0; + this.totalCost = 0; + this.totalShift = 0; + this.durationStats = {}; + // Minimum width required to render all the notes in the voices. + this.minTotalWidth = 0; + // This is set to `true` after `minTotalWidth` is calculated. + this.hasMinTotalWidth = false; + // Arrays of tick and modifier contexts. + this.tickContexts = { + map: {}, + array: [], + list: [], + resolutionMultiplier: 0, + }; + this.modifierContexts = []; + // Gaps between contexts, for free movement of notes post + // formatting. + this.contextGaps = { + total: 0, + gaps: [], + }; + this.voices = []; + this.lossHistory = []; + } + /** + * Helper function to layout "notes" one after the other without + * regard for proportions. Useful for tests and debugging. + */ + static SimpleFormat(notes, x = 0, { paddingBetween = 10 } = {}) { + notes.reduce((accumulator, note) => { + note.addToModifierContext(new _modifiercontext__WEBPACK_IMPORTED_MODULE_3__.ModifierContext()); + const tick = new _tickcontext__WEBPACK_IMPORTED_MODULE_7__.TickContext().addTickable(note).preFormat(); + const metrics = tick.getMetrics(); + tick.setX(accumulator + metrics.totalLeftPx); + return accumulator + tick.getWidth() + metrics.totalRightPx + paddingBetween; + }, x); + } + /** Helper function to plot formatter debug info. */ + static plotDebugging(ctx, formatter, xPos, y1, y2, options) { + options = Object.assign({ stavePadding: _tables__WEBPACK_IMPORTED_MODULE_6__.Tables.currentMusicFont().lookupMetric('stave.padding') }, options); + const x = xPos + options.stavePadding; + const contextGaps = formatter.contextGaps; + function stroke(x1, x2, color) { + ctx.beginPath(); + ctx.setStrokeStyle(color); + ctx.setFillStyle(color); + ctx.setLineWidth(1); + ctx.fillRect(x1, y1, Math.max(x2 - x1, 0), y2 - y1); + } + ctx.save(); + ctx.setFont(_font__WEBPACK_IMPORTED_MODULE_1__.Font.SANS_SERIF, 8); + contextGaps.gaps.forEach((gap) => { + stroke(x + gap.x1, x + gap.x2, 'rgba(100,200,100,0.4)'); + ctx.setFillStyle('green'); + ctx.fillText(Math.round(gap.x2 - gap.x1).toString(), x + gap.x1, y2 + 12); + }); + ctx.setFillStyle('red'); + ctx.fillText(`Loss: ${(formatter.totalCost || 0).toFixed(2)} Shift: ${(formatter.totalShift || 0).toFixed(2)} Gap: ${contextGaps.total.toFixed(2)}`, x - 20, y2 + 27); + ctx.restore(); + } + /** + * Helper function to format and draw a single voice. Returns a bounding + * box for the notation. + * @param ctx the rendering context + * @param stave the stave to which to draw (`Stave` or `TabStave`) + * @param notes array of `Note` instances (`Note`, `TextNote`, `TabNote`, etc.) + * @param params one of below: + * * Setting `autobeam` only `(context, stave, notes, true)` or + * `(ctx, stave, notes, {autobeam: true})` + * * Setting `align_rests` a struct is needed `(context, stave, notes, {align_rests: true})` + * * Setting both a struct is needed `(context, stave, notes, { + * autobeam: true, align_rests: true})` + * * `autobeam` automatically generates beams for the notes. + * * `align_rests` aligns rests with nearby notes. + */ + static FormatAndDraw(ctx, stave, notes, params) { + let options = { + auto_beam: false, + align_rests: false, + }; + if (typeof params === 'object') { + options = Object.assign(Object.assign({}, options), params); + } + else if (typeof params === 'boolean') { + options.auto_beam = params; + } + // Start by creating a voice and adding all the notes to it. + const voice = new _voice__WEBPACK_IMPORTED_MODULE_10__.Voice(_tables__WEBPACK_IMPORTED_MODULE_6__.Tables.TIME4_4).setMode(_voice__WEBPACK_IMPORTED_MODULE_10__.Voice.Mode.SOFT).addTickables(notes); + // Then create beams, if requested. + const beams = options.auto_beam ? _beam__WEBPACK_IMPORTED_MODULE_0__.Beam.applyAndGetBeams(voice) : []; + // Instantiate a `Formatter` and format the notes. + new Formatter() + .joinVoices([voice]) // , { align_rests: options.align_rests }) + .formatToStave([voice], stave, { align_rests: options.align_rests, stave }); + // Render the voice and beams to the stave. + voice.setStave(stave).draw(ctx, stave); + beams.forEach((beam) => beam.setContext(ctx).draw()); + // Return the bounding box of the voice. + return voice.getBoundingBox(); + } + /** + * Helper function to format and draw aligned tab and stave notes in two + * separate staves. + * @param ctx the rendering context + * @param tabstave a `TabStave` instance on which to render `TabNote`s. + * @param stave a `Stave` instance on which to render `Note`s. + * @param notes array of `Note` instances for the stave (`Note`, `BarNote`, etc.) + * @param tabnotes array of `Note` instances for the tab stave (`TabNote`, `BarNote`, etc.) + * @param autobeam automatically generate beams. + * @param params a configuration object: + * * `autobeam` automatically generates beams for the notes. + * * `align_rests` aligns rests with nearby notes. + */ + static FormatAndDrawTab(ctx, tabstave, stave, tabnotes, notes, autobeam, params) { + let opts = { + auto_beam: autobeam, + align_rests: false, + }; + if (typeof params === 'object') { + opts = Object.assign(Object.assign({}, opts), params); + } + else if (typeof params === 'boolean') { + opts.auto_beam = params; + } + // Create a `4/4` voice for `notes`. + const notevoice = new _voice__WEBPACK_IMPORTED_MODULE_10__.Voice(_tables__WEBPACK_IMPORTED_MODULE_6__.Tables.TIME4_4).setMode(_voice__WEBPACK_IMPORTED_MODULE_10__.Voice.Mode.SOFT).addTickables(notes); + // Create a `4/4` voice for `tabnotes`. + const tabvoice = new _voice__WEBPACK_IMPORTED_MODULE_10__.Voice(_tables__WEBPACK_IMPORTED_MODULE_6__.Tables.TIME4_4).setMode(_voice__WEBPACK_IMPORTED_MODULE_10__.Voice.Mode.SOFT).addTickables(tabnotes); + // Then create beams, if requested. + const beams = opts.auto_beam ? _beam__WEBPACK_IMPORTED_MODULE_0__.Beam.applyAndGetBeams(notevoice) : []; + // Instantiate a `Formatter` and align tab and stave notes. + new Formatter() + .joinVoices([notevoice]) // , { align_rests: opts.align_rests }) + .joinVoices([tabvoice]) + .formatToStave([notevoice, tabvoice], stave, { align_rests: opts.align_rests }); + // Render voices and beams to staves. + notevoice.draw(ctx, stave); + tabvoice.draw(ctx, tabstave); + beams.forEach((beam) => beam.setContext(ctx).draw()); + // Draw a connector between tab and note staves. + new _staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave, tabstave).setContext(ctx).draw(); + } + /** + * Automatically set the vertical position of rests based on previous/next note positions. + * @param tickables an array of Tickables. + * @param alignAllNotes If `false`, only align rests that are within a group of beamed notes. + * @param alignTuplets If `false`, ignores tuplets. + */ + static AlignRestsToNotes(tickables, alignAllNotes, alignTuplets) { + tickables.forEach((currTickable, index) => { + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_8__.isStaveNote)(currTickable) && currTickable.isRest()) { + if (currTickable.getTuplet() && !alignTuplets) { + return; + } + // If activated rests not on default can be rendered as specified. + const position = currTickable.getGlyph().position.toUpperCase(); + if (position !== 'R/4' && position !== 'B/4') { + return; + } + if (alignAllNotes || currTickable.getBeam()) { + // Align rests with previous/next notes. + const props = currTickable.getKeyProps()[0]; + if (index === 0) { + props.line = getRestLineForNextNoteGroup(tickables, props.line, index, false); + } + else if (index > 0 && index < tickables.length) { + // If previous tickable is a rest, use its line number. + const prevTickable = tickables[index - 1]; + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_8__.isStaveNote)(prevTickable)) { + if (prevTickable.isRest()) { + props.line = prevTickable.getKeyProps()[0].line; + } + else { + const restLine = prevTickable.getLineForRest(); + // Get the rest line for next valid non-rest note group. + props.line = getRestLineForNextNoteGroup(tickables, restLine, index, true); + } + } + } + currTickable.setKeyLine(0, props.line); + } + } + }); + } + /** + * Find all the rests in each of the `voices` and align them to neighboring notes. + * + * @param voices + * @param alignAllNotes If `false`, only align rests within beamed groups of notes. If `true`, align all rests. + */ + alignRests(voices, alignAllNotes) { + if (!voices || !voices.length) { + throw new _util__WEBPACK_IMPORTED_MODULE_9__.RuntimeError('BadArgument', 'No voices to format rests'); + } + voices.forEach((voice) => Formatter.AlignRestsToNotes(voice.getTickables(), alignAllNotes)); + } + /** + * Estimate the width required to render 'voices'. This is done by: + * 1. Sum the widths of all the tick contexts + * 2. Estimate the padding. + * The latter is done by calculating the padding 3 different ways, and taking the + * greatest value: + * 1. the padding required for unaligned notes in different voices + * 2. the padding based on the stddev of the tickable widths + * 3. the padding based on the stddev of the tickable durations. + * + * The last 2 quantities estimate a 'width entropy', where notes might need more + * room than the proportional formatting gives them. A measure of all same duration + * and width will need no extra padding, and all these quantities will be + * zero in that case. + * + * Note: joinVoices has to be called before calling preCalculateMinTotalWidth. + * + * @param voices the voices that contain the notes + * @returns the estimated width in pixels + */ + preCalculateMinTotalWidth(voices) { + const unalignedPadding = _tables__WEBPACK_IMPORTED_MODULE_6__.Tables.currentMusicFont().lookupMetric('stave.unalignedNotePadding'); + // Calculate additional padding based on 3 methods: + // 1) unaligned beats in voices, 2) variance of width, 3) variance of durations + let unalignedCtxCount = 0; + let wsum = 0; + let dsum = 0; + const widths = []; + const durations = []; + // Cache results. + if (this.hasMinTotalWidth) + return this.minTotalWidth; + // Create tick contexts. + if (!voices) { + throw new _util__WEBPACK_IMPORTED_MODULE_9__.RuntimeError('BadArgument', "'voices' required to run preCalculateMinTotalWidth"); + } + this.createTickContexts(voices); + // eslint-disable-next-line + const { list: contextList, map: contextMap } = this.tickContexts; + this.minTotalWidth = 0; + // Go through each tick context and calculate total width, + // and also accumulate values used in padding hints + contextList.forEach((tick) => { + const context = contextMap[tick]; + context.preFormat(); + // If this TC doesn't have all the voices on it, it's unaligned. + // so increment the unaligned padding accumulator + if (context.getTickables().length < voices.length) { + unalignedCtxCount += 1; + } + // Calculate the 'width entropy' over all the Tickables. + context.getTickables().forEach((t) => { + wsum += t.getMetrics().width; + dsum += t.getTicks().value(); + widths.push(t.getMetrics().width); + durations.push(t.getTicks().value()); + }); + const width = context.getWidth(); + this.minTotalWidth += width; + }); + this.hasMinTotalWidth = true; + // normalized (0-1) STDDEV of widths/durations gives us padding hints. + const wavg = wsum > 0 ? wsum / widths.length : 1 / widths.length; + const wvar = sumArray(widths.map((ll) => Math.pow(ll - wavg, 2))); + const wpads = Math.pow(wvar / widths.length, 0.5) / wavg; + const davg = dsum / durations.length; + const dvar = sumArray(durations.map((ll) => Math.pow(ll - davg, 2))); + const dpads = Math.pow(dvar / durations.length, 0.5) / davg; + // Find max of 3 methods pad the width with that + const padmax = Math.max(dpads, wpads) * contextList.length * unalignedPadding; + const unalignedPad = unalignedPadding * unalignedCtxCount; + return this.minTotalWidth + Math.max(unalignedPad, padmax); + } + /** + * Get minimum width required to render all voices. Either `format` or + * `preCalculateMinTotalWidth` must be called before this method. + */ + getMinTotalWidth() { + if (!this.hasMinTotalWidth) { + throw new _util__WEBPACK_IMPORTED_MODULE_9__.RuntimeError('NoMinTotalWidth', "Call 'preCalculateMinTotalWidth' or 'preFormat' before calling 'getMinTotalWidth'"); + } + return this.minTotalWidth; + } + /** Calculate the resolution multiplier for `voices`. */ + static getResolutionMultiplier(voices) { + if (!voices || !voices.length) { + throw new _util__WEBPACK_IMPORTED_MODULE_9__.RuntimeError('BadArgument', 'No voices to format'); + } + const totalTicks = voices[0].getTotalTicks(); + const resolutionMultiplier = voices.reduce((accumulator, voice) => { + if (!voice.getTotalTicks().equals(totalTicks)) { + throw new _util__WEBPACK_IMPORTED_MODULE_9__.RuntimeError('TickMismatch', 'Voices should have same total note duration in ticks.'); + } + if (voice.getMode() === _voice__WEBPACK_IMPORTED_MODULE_10__.Voice.Mode.STRICT && !voice.isComplete()) { + throw new _util__WEBPACK_IMPORTED_MODULE_9__.RuntimeError('IncompleteVoice', 'Voice does not have enough notes.'); + } + return Math.max(accumulator, _fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction.LCM(accumulator, voice.getResolutionMultiplier())); + }, 1); + return resolutionMultiplier; + } + /** Create a `ModifierContext` for each tick in `voices`. */ + createModifierContexts(voices) { + if (voices.length == 0) + return; + const resolutionMultiplier = Formatter.getResolutionMultiplier(voices); + // Initialize tick maps. + const tickToContextMap = new Map(); + const contexts = []; + // For each voice, extract notes and create a context for every + // new tick that hasn't been seen before. + voices.forEach((voice) => { + // Use resolution multiplier as denominator so that no additional expansion + // of fractional tick values is needed. + const ticksUsed = new _fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(0, resolutionMultiplier); + voice.getTickables().forEach((tickable) => { + const integerTicks = ticksUsed.numerator; + let staveTickToContextMap = tickToContextMap.get(tickable.getStave()); + // If we have no tick context for this tick, create one. + if (!staveTickToContextMap) { + tickToContextMap.set(tickable.getStave(), {}); + staveTickToContextMap = tickToContextMap.get(tickable.getStave()); + } + if (!(staveTickToContextMap ? staveTickToContextMap[integerTicks] : undefined)) { + const newContext = new _modifiercontext__WEBPACK_IMPORTED_MODULE_3__.ModifierContext(); + contexts.push(newContext); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + staveTickToContextMap[integerTicks] = newContext; + } + // Add this tickable to the TickContext. + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + tickable.addToModifierContext(staveTickToContextMap[integerTicks]); + ticksUsed.add(tickable.getTicks()); + }); + }); + this.modifierContexts.push({ + map: tickToContextMap, + array: contexts, + resolutionMultiplier, + }); + } + /** + * Create a `TickContext` for each tick in `voices`. Also calculate the + * total number of ticks in voices. + */ + createTickContexts(voices) { + const fn = (tickable, context, voiceIndex) => context.addTickable(tickable, voiceIndex); + const contexts = createContexts(voices, (tick) => new _tickcontext__WEBPACK_IMPORTED_MODULE_7__.TickContext(tick), fn); + this.tickContexts = contexts; + const contextArray = this.tickContexts.array; + contextArray.forEach((context) => { + context.tContexts = contextArray; + }); + return contexts; + } + /** + * Get the AlignmentContexts of TickContexts that were created by createTickContexts. + * Returns undefined if createTickContexts has not yet been run. + */ + getTickContexts() { + return this.tickContexts; + } + /** + * This is the core formatter logic. Format voices and justify them + * to `justifyWidth` pixels. `renderingContext` is required to justify elements + * that can't retrieve widths without a canvas. This method sets the `x` positions + * of all the tickables/notes in the formatter. + */ + preFormat(justifyWidth = 0, renderingContext, voicesParam, stave) { + // Initialize context maps. + const contexts = this.tickContexts; + if (!contexts) { + throw new _util__WEBPACK_IMPORTED_MODULE_9__.RuntimeError('NoTickContexts', 'preFormat requires TickContexts'); + } + const { list: contextList, map: contextMap } = contexts; + // Reset loss history for evaluator. + this.lossHistory = []; + // If voices and a stave were provided, set the Stave for each voice + // and preFormat to apply Y values to the notes; + if (voicesParam && stave) { + voicesParam.forEach((voice) => voice.setStave(stave).preFormat()); + } + // Now distribute the ticks to each tick context, and assign them their + // own X positions. + let x = 0; + let shift = 0; + this.minTotalWidth = 0; + let totalTicks = 0; + // Pass 1: Give each note maximum width requested by context. + contextList.forEach((tick) => { + const context = contextMap[tick]; + // Make sure that all tickables in this context have calculated their + // space requirements. + context.preFormat(); + const width = context.getWidth(); + this.minTotalWidth += width; + const maxTicks = context.getMaxTicks().value(); + totalTicks += maxTicks; + const metrics = context.getMetrics(); + x = x + shift + metrics.totalLeftPx; + context.setX(x); + // Calculate shift for the next tick. + shift = width - metrics.totalLeftPx; + }); + // Use softmax based on all notes across all staves. (options.globalSoftmax) + const { globalSoftmax, softmaxFactor, maxIterations } = this.formatterOptions; + const exp = (tick) => Math.pow(softmaxFactor, (contextMap[tick].getMaxTicks().value() / totalTicks)); + const expTicksUsed = sumArray(contextList.map(exp)); + this.minTotalWidth = x + shift; + this.hasMinTotalWidth = true; + // No justification needed. End formatting. + if (justifyWidth <= 0) + return this.evaluate(); + // Start justification. Subtract the right extra pixels of the final context because the formatter + // justifies based on the context's X position, which is the left-most part of the note head. + const firstContext = contextMap[contextList[0]]; + const lastContext = contextMap[contextList[contextList.length - 1]]; + // Calculate the "distance error" between the tick contexts. The expected distance is the spacing proportional to + // the softmax of the ticks. + function calculateIdealDistances(adjustedJustifyWidth) { + const distances = contextList.map((tick, i) => { + const context = contextMap[tick]; + const voices = context.getTickablesByVoice(); + let backTickable; + if (i > 0) { + const prevContext = contextMap[contextList[i - 1]]; + // Go through each tickable and search backwards for another tickable + // in the same voice. If found, use that duration (ticks) to calculate + // the expected distance. + for (let j = i - 1; j >= 0; j--) { + const backTick = contextMap[contextList[j]]; + const backVoices = backTick.getTickablesByVoice(); + // Look for matching voices between tick contexts. + const matchingVoices = []; + Object.keys(voices).forEach((v) => { + if (backVoices[v]) { + matchingVoices.push(v); + } + }); + if (matchingVoices.length > 0) { + // Found matching voices, get largest duration + let maxTicks = 0; + let maxNegativeShiftPx = Infinity; + let expectedDistance = 0; + matchingVoices.forEach((v) => { + const ticks = backVoices[v].getTicks().value(); + if (ticks > maxTicks) { + backTickable = backVoices[v]; + maxTicks = ticks; + } + // Calculate the limits of the shift based on modifiers, etc. + const thisTickable = voices[v]; + const insideLeftEdge = thisTickable.getX() - + (thisTickable.getMetrics().modLeftPx + thisTickable.getMetrics().leftDisplacedHeadPx); + const backMetrics = backVoices[v].getMetrics(); + const insideRightEdge = backVoices[v].getX() + backMetrics.notePx + backMetrics.modRightPx + backMetrics.rightDisplacedHeadPx; + // Don't allow shifting if notes in the same voice can collide + maxNegativeShiftPx = Math.min(maxNegativeShiftPx, insideLeftEdge - insideRightEdge); + }); + // Don't shift further left than the notehead of the last context. Actually, stay at most 5% to the right + // so that two different tick contexts don't align across staves. + maxNegativeShiftPx = Math.min(maxNegativeShiftPx, context.getX() - (prevContext.getX() + adjustedJustifyWidth * 0.05)); + // Calculate the expected distance of the current context from the last matching tickable. The + // distance is scaled down by the softmax for the voice. + if (globalSoftmax) { + const t = totalTicks; + expectedDistance = (Math.pow(softmaxFactor, (maxTicks / t)) / expTicksUsed) * adjustedJustifyWidth; + } + else if (typeof backTickable !== 'undefined') { + expectedDistance = backTickable.getVoice().softmax(maxTicks) * adjustedJustifyWidth; + } + return { + expectedDistance, + maxNegativeShiftPx, + fromTickable: backTickable, + }; + } + } + } + return { expectedDistance: 0, fromTickablePx: 0, maxNegativeShiftPx: 0 }; + }); + return distances; + } + function shiftToIdealDistances(idealDistances) { + // Distribute ticks to the contexts based on the calculated distance error. + const centerX = adjustedJustifyWidth / 2; + let spaceAccum = 0; + contextList.forEach((tick, index) => { + const context = contextMap[tick]; + if (index > 0) { + const contextX = context.getX(); + const ideal = idealDistances[index]; + const errorPx = (0,_util__WEBPACK_IMPORTED_MODULE_9__.defined)(ideal.fromTickable).getX() + ideal.expectedDistance - (contextX + spaceAccum); + let negativeShiftPx = 0; + if (errorPx > 0) { + spaceAccum += errorPx; + } + else if (errorPx < 0) { + negativeShiftPx = Math.min(ideal.maxNegativeShiftPx, Math.abs(errorPx)); + spaceAccum += -negativeShiftPx; + } + context.setX(contextX + spaceAccum); + } + // Move center aligned tickables to middle + context.getCenterAlignedTickables().forEach((tickable) => { + tickable.setCenterXShift(centerX - context.getX()); + }); + }); + return lastContext.getX() - firstContext.getX(); + } + const adjustedJustifyWidth = justifyWidth - + lastContext.getMetrics().notePx - + lastContext.getMetrics().totalRightPx - + firstContext.getMetrics().totalLeftPx; + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_6__.Tables.currentMusicFont(); + const configMinPadding = musicFont.lookupMetric('stave.endPaddingMin'); + const configMaxPadding = musicFont.lookupMetric('stave.endPaddingMax'); + const leftPadding = musicFont.lookupMetric('stave.padding'); + let targetWidth = adjustedJustifyWidth; + const distances = calculateIdealDistances(targetWidth); + let actualWidth = shiftToIdealDistances(distances); + // Just one context. Done formatting. + if (contextList.length === 1) + return 0; + const calcMinDistance = (targetWidth, distances) => { + let mdCalc = targetWidth / 2; + if (distances.length > 1) { + for (let di = 1; di < distances.length; ++di) { + mdCalc = Math.min(distances[di].expectedDistance / 2, mdCalc); + } + } + return mdCalc; + }; + const minDistance = calcMinDistance(targetWidth, distances); + // right justify to either the configured padding, or the min distance between notes, whichever is greatest. + // This * 2 keeps the existing formatting unless there is 'a lot' of extra whitespace, which won't break + // existing visual regression tests. + const paddingMaxCalc = (curTargetWidth) => { + let lastTickablePadding = 0; + const lastTickable = lastContext && lastContext.getMaxTickable(); + if (lastTickable) { + const voice = lastTickable.getVoice(); + // If the number of actual ticks in the measure <> configured ticks, right-justify + // because the softmax won't yield the correct value + if (voice.getTicksUsed().value() > voice.getTotalTicks().value()) { + return configMaxPadding * 2 < minDistance ? minDistance : configMaxPadding; + } + const tickWidth = lastTickable.getWidth(); + lastTickablePadding = + voice.softmax(lastContext.getMaxTicks().value()) * curTargetWidth - (tickWidth + leftPadding); + } + return configMaxPadding * 2 < lastTickablePadding ? lastTickablePadding : configMaxPadding; + }; + let paddingMax = paddingMaxCalc(targetWidth); + let paddingMin = paddingMax - (configMaxPadding - configMinPadding); + const maxX = adjustedJustifyWidth - paddingMin; + let iterations = maxIterations; + // Adjust justification width until the right margin is as close as possible to the calculated padding, + // without going over + while ((actualWidth > maxX && iterations > 0) || (actualWidth + paddingMax < maxX && iterations > 1)) { + targetWidth -= actualWidth - maxX; + paddingMax = paddingMaxCalc(targetWidth); + paddingMin = paddingMax - (configMaxPadding - configMinPadding); + actualWidth = shiftToIdealDistances(calculateIdealDistances(targetWidth)); + iterations--; + } + this.justifyWidth = justifyWidth; + return this.evaluate(); + } + /** Calculate the total cost of this formatting decision. */ + evaluate() { + const contexts = this.tickContexts; + const justifyWidth = this.justifyWidth; + // Calculate available slack per tick context. This works out how much freedom + // to move a context has in either direction, without affecting other notes. + this.contextGaps = { total: 0, gaps: [] }; + contexts.list.forEach((tick, index) => { + if (index === 0) + return; + const prevTick = contexts.list[index - 1]; + const prevContext = contexts.map[prevTick]; + const context = contexts.map[tick]; + const prevMetrics = prevContext.getMetrics(); + const currMetrics = context.getMetrics(); + // Calculate X position of right edge of previous note + const insideRightEdge = prevContext.getX() + prevMetrics.notePx + prevMetrics.totalRightPx; + // Calculate X position of left edge of current note + const insideLeftEdge = context.getX() - currMetrics.totalLeftPx; + const gap = insideLeftEdge - insideRightEdge; + this.contextGaps.total += gap; + this.contextGaps.gaps.push({ x1: insideRightEdge, x2: insideLeftEdge }); + // Tell the tick contexts how much they can reposition themselves. + context.getFormatterMetrics().freedom.left = gap; + prevContext.getFormatterMetrics().freedom.right = gap; + }); + // Calculate mean distance in each voice for each duration type, then calculate + // how far each note is from the mean. + this.durationStats = {}; + const durationStats = this.durationStats; + function updateStats(duration, space) { + const stats = durationStats[duration]; + if (stats === undefined) { + durationStats[duration] = { mean: space, count: 1 }; + } + else { + stats.count += 1; + stats.mean = (stats.mean + space) / 2; + } + } + this.voices.forEach((voice) => { + voice.getTickables().forEach((note, i, notes) => { + const duration = note.getTicks().clone().simplify().toString(); + const metrics = note.getMetrics(); + const formatterMetrics = note.getFormatterMetrics(); + const leftNoteEdge = note.getX() + metrics.notePx + metrics.modRightPx + metrics.rightDisplacedHeadPx; + let space = 0; + if (i < notes.length - 1) { + const rightNote = notes[i + 1]; + const rightMetrics = rightNote.getMetrics(); + const rightNoteEdge = rightNote.getX() - rightMetrics.modLeftPx - rightMetrics.leftDisplacedHeadPx; + space = rightNoteEdge - leftNoteEdge; + formatterMetrics.space.used = rightNote.getX() - note.getX(); + rightNote.getFormatterMetrics().freedom.left = space; + } + else { + space = justifyWidth - leftNoteEdge; + formatterMetrics.space.used = justifyWidth - note.getX(); + } + formatterMetrics.freedom.right = space; + updateStats(duration, formatterMetrics.space.used); + }); + }); + // Calculate how much each note deviates from the mean. Loss function is square + // root of the sum of squared deviations. + let totalDeviation = 0; + this.voices.forEach((voice) => { + voice.getTickables().forEach((note) => { + const duration = note.getTicks().clone().simplify().toString(); + const metrics = note.getFormatterMetrics(); + metrics.space.mean = durationStats[duration].mean; + metrics.duration = duration; + metrics.iterations += 1; + metrics.space.deviation = metrics.space.used - metrics.space.mean; + totalDeviation += Math.pow(metrics.space.deviation, 2); + }); + }); + this.totalCost = Math.sqrt(totalDeviation); + this.lossHistory.push(this.totalCost); + return this.totalCost; + } + /** + * Run a single iteration of rejustification. At a high level, this method calculates + * the overall "loss" (or cost) of this layout, and repositions tickcontexts in an + * attempt to reduce the cost. You can call this method multiple times until it finds + * and oscillates around a global minimum. + * @param options[alpha] the "learning rate" for the formatter. It determines how much of a shift + * the formatter should make based on its cost function. + */ + tune(options) { + var _a; + const contexts = this.tickContexts; + if (!contexts) { + return 0; + } + const alpha = (_a = options === null || options === void 0 ? void 0 : options.alpha) !== null && _a !== void 0 ? _a : 0.5; + // Move `current` tickcontext by `shift` pixels, and adjust the freedom + // on adjacent tickcontexts. + function move(current, shift, prev, next) { + current.setX(current.getX() + shift); + current.getFormatterMetrics().freedom.left += shift; + current.getFormatterMetrics().freedom.right -= shift; + if (prev) + prev.getFormatterMetrics().freedom.right += shift; + if (next) + next.getFormatterMetrics().freedom.left -= shift; + } + let shift = 0; + this.totalShift = 0; + contexts.list.forEach((tick, index, list) => { + const context = contexts.map[tick]; + const prevContext = index > 0 ? contexts.map[list[index - 1]] : undefined; + const nextContext = index < list.length - 1 ? contexts.map[list[index + 1]] : undefined; + move(context, shift, prevContext, nextContext); + const cost = -sumArray(context.getTickables().map((t) => t.getFormatterMetrics().space.deviation)); + if (cost > 0) { + shift = -Math.min(context.getFormatterMetrics().freedom.right, Math.abs(cost)); + } + else if (cost < 0) { + if (nextContext) { + shift = Math.min(nextContext.getFormatterMetrics().freedom.right, Math.abs(cost)); + } + else { + shift = 0; + } + } + shift *= alpha; + this.totalShift += shift; + }); + return this.evaluate(); + } + /** + * This is the top-level call for all formatting logic completed + * after `x` *and* `y` values have been computed for the notes + * in the voices. + */ + postFormat() { + this.modifierContexts.forEach((modifierContexts) => { + modifierContexts.array.forEach((mc) => mc.postFormat()); + }); + this.tickContexts.list.forEach((tick) => { + this.tickContexts.map[tick].postFormat(); + }); + return this; + } + /** + * Take all `voices` and create `ModifierContext`s out of them. This tells + * the formatters that the voices belong on a single stave. + */ + joinVoices(voices) { + this.createModifierContexts(voices); + this.hasMinTotalWidth = false; + return this; + } + /** + * Align rests in voices, justify the contexts, and position the notes + * so voices are aligned and ready to render onto the stave. This method + * mutates the `x` positions of all tickables in `voices`. + * + * Voices are full justified to fit in `justifyWidth` pixels. + * + * Set `options.context` to the rendering context. Set `options.align_rests` + * to true to enable rest alignment. + */ + format(voices, justifyWidth, options) { + const opts = Object.assign({ align_rests: false }, options); + this.voices = voices; + const softmaxFactor = this.formatterOptions.softmaxFactor; + if (softmaxFactor) { + this.voices.forEach((v) => v.setSoftmaxFactor(softmaxFactor)); + } + this.alignRests(voices, opts.align_rests); + this.createTickContexts(voices); + this.preFormat(justifyWidth, opts.context, voices, opts.stave); + // Only postFormat if a stave was supplied for y value formatting + if (opts.stave) + this.postFormat(); + return this; + } + // This method is just like `format` except that the `justifyWidth` is inferred from the `stave`. + formatToStave(voices, stave, optionsParam) { + const options = Object.assign({ context: stave.getContext() }, optionsParam); + // eslint-disable-next-line + const justifyWidth = stave.getNoteEndX() - stave.getNoteStartX() - _stave__WEBPACK_IMPORTED_MODULE_4__.Stave.defaultPadding; + L('Formatting voices to width: ', justifyWidth); + return this.format(voices, justifyWidth, options); + } + getTickContext(tick) { + var _a; + return (_a = this.tickContexts) === null || _a === void 0 ? void 0 : _a.map[tick]; + } +} +// To enable logging for this class. Set `Vex.Flow.Formatter.DEBUG` to `true`. +Formatter.DEBUG = false; + + +/***/ }), + +/***/ "./src/fraction.ts": +/*!*************************!*\ + !*** ./src/fraction.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Fraction": () => (/* binding */ Fraction) +/* harmony export */ }); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Author: Joshua Koo / @zz85 +// Author: @incompleteopus + + +/** Fraction represents a rational number. */ +class Fraction { + /** Set the numerator and denominator. */ + constructor(numerator, denominator) { + this.numerator = 1; + this.denominator = 1; + this.set(numerator, denominator); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_0__.Category.Fraction; + } + /** + * GCD: Greatest common divisor using the Euclidean algorithm. + * Note: GCD(0, 0) => 0 and GCD(0, n) => n. + */ + static GCD(a, b) { + if (typeof a !== 'number' || Number.isNaN(a) || typeof b !== 'number' || Number.isNaN(b)) { + throw new _util__WEBPACK_IMPORTED_MODULE_1__.RuntimeError('BadArgument', `Invalid numbers: ${a}, ${b}`); + } + let t; + while (b !== 0) { + t = b; + b = a % b; + a = t; + } + return a; + } + /** LCM: Lowest common multiple. */ + static LCM(a, b) { + return (a * b) / Fraction.GCD(a, b); + } + /** Lowest common multiple for more than two numbers. */ + static LCMM(args) { + if (args.length === 0) { + return 0; + } + else if (args.length === 1) { + return args[0]; + } + else if (args.length === 2) { + return Fraction.LCM(args[0], args[1]); + } + else { + // args.shift() removes the first number. + // LCM the first number with the rest of the numbers. + return Fraction.LCM(args.shift(), Fraction.LCMM(args)); + } + } + /** Set the numerator and denominator. */ + set(numerator = 1, denominator = 1) { + this.numerator = numerator; + this.denominator = denominator; + return this; + } + /** Return the value of the fraction. */ + value() { + return this.numerator / this.denominator; + } + /** Simplify numerator and denominator using GCD. */ + simplify() { + let u = this.numerator; + let d = this.denominator; + const gcd = Fraction.GCD(u, d); + u /= gcd; + d /= gcd; + if (d < 0) { + d = -d; + u = -u; + } + return this.set(u, d); + } + /** Add value of another fraction. */ + add(param1 = 0, param2 = 1) { + const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2); + const lcm = Fraction.LCM(this.denominator, otherDenominator); + const a = lcm / this.denominator; + const b = lcm / otherDenominator; + const u = this.numerator * a + otherNumerator * b; + return this.set(u, lcm); + } + /** Substract value of another fraction. */ + subtract(param1 = 0, param2 = 1) { + const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2); + const lcm = Fraction.LCM(this.denominator, otherDenominator); + const a = lcm / this.denominator; + const b = lcm / otherDenominator; + const u = this.numerator * a - otherNumerator * b; + return this.set(u, lcm); + } + /** Multiply by value of another fraction. */ + multiply(param1 = 1, param2 = 1) { + const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2); + return this.set(this.numerator * otherNumerator, this.denominator * otherDenominator); + } + /** Divide by value of another Fraction. */ + divide(param1 = 1, param2 = 1) { + const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2); + return this.set(this.numerator * otherDenominator, this.denominator * otherNumerator); + } + /** Simplify both sides and check if they are equal. */ + equals(compare) { + const a = Fraction.__staticFractionA.copy(compare).simplify(); + const b = Fraction.__staticFractionB.copy(this).simplify(); + return a.numerator === b.numerator && a.denominator === b.denominator; + } + /** Greater than operator. */ + greaterThan(compare) { + const a = Fraction.__staticFractionB.copy(this); + a.subtract(compare); + return a.numerator > 0; + } + /** Greater than or equals operator. */ + greaterThanEquals(compare) { + const a = Fraction.__staticFractionB.copy(this); + a.subtract(compare); + return a.numerator >= 0; + } + /** Less than operator. */ + lessThan(compare) { + return !this.greaterThanEquals(compare); + } + /** Less than or equals operator. */ + lessThanEquals(compare) { + return !this.greaterThan(compare); + } + /** Return a new copy with current values. */ + clone() { + return new Fraction(this.numerator, this.denominator); + } + /** Copy value of another fraction. */ + copy(other) { + if (typeof other === 'number') { + return this.set(other, 1); + } + else { + return this.set(other.numerator, other.denominator); + } + } + /** Return the integer component (eg. 5/2 => 2). */ + quotient() { + return Math.floor(this.numerator / this.denominator); + } + /** Return the remainder component (eg. 5/2 => 1). */ + remainder() { + return this.numerator % this.denominator; + } + /** Calculate absolute value. */ + makeAbs() { + this.denominator = Math.abs(this.denominator); + this.numerator = Math.abs(this.numerator); + return this; + } + /** Return a raw string representation (eg. "5/2"). */ + toString() { + return `${this.numerator}/${this.denominator}`; + } + /** Return a simplified string respresentation. */ + toSimplifiedString() { + return Fraction.__staticFractionTmp.copy(this).simplify().toString(); + } + /** Return string representation in mixed form. */ + toMixedString() { + let s = ''; + const q = this.quotient(); + const f = Fraction.__staticFractionTmp.copy(this); + if (q < 0) { + f.makeAbs(); + } + if (q !== 0) { + s += q; + if (f.numerator !== 0) { + s += ` ${f.toSimplifiedString()}`; + } + } + else if (f.numerator === 0) { + s = '0'; + } + else { + s = f.toSimplifiedString(); + } + return s; + } + /** Parse a fraction string. */ + parse(str) { + const i = str.split('/'); + const n = parseInt(i[0], 10); + const d = i[1] ? parseInt(i[1], 10) : 1; + return this.set(n, d); + } +} +// Cached objects for comparisons. +Fraction.__staticFractionA = new Fraction(); +Fraction.__staticFractionB = new Fraction(); +Fraction.__staticFractionTmp = new Fraction(); +/** Helper function to extract the numerator and denominator from another fraction. */ +function getNumeratorAndDenominator(n, d = 1) { + if (typeof n === 'number') { + // Both params are numbers, so we return them as [numerator, denominator]. + return [n, d]; + } + else { + // First param is a Fraction object. We ignore the second param. + return [n.numerator, n.denominator]; + } +} + + +/***/ }), + +/***/ "./src/frethandfinger.ts": +/*!*******************************!*\ + !*** ./src/frethandfinger.ts ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "FretHandFinger": () => (/* binding */ FretHandFinger) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _textformatter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./textformatter */ "./src/textformatter.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// VexFlow - Music Engraving for HTML5 +// Copyright Mohit Muthanna 2010 +// Author Larry Kuhns 2013 +// Class to draws string numbers into the notation. + + + + + + +class FretHandFinger extends _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier { + constructor(finger) { + super(); + this.finger = finger; + this.width = 7; + this.position = _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.LEFT; // Default position above stem or note head + this.x_shift = 0; + this.y_shift = 0; + this.x_offset = 0; // Horizontal offset from default + this.y_offset = 0; // Vertical offset from default + this.resetFont(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_4__.Category.FretHandFinger; + } + // Arrange fingerings inside a ModifierContext. + static format(nums, state) { + const { left_shift, right_shift } = state; + const num_spacing = 1; + if (!nums || nums.length === 0) + return false; + const nums_list = []; + let prev_note = null; + let shiftLeft = 0; + let shiftRight = 0; + for (let i = 0; i < nums.length; ++i) { + const num = nums[i]; + const note = num.getNote(); + const pos = num.getPosition(); + const index = num.checkIndex(); + const props = note.getKeyProps()[index]; + const textFormatter = _textformatter__WEBPACK_IMPORTED_MODULE_3__.TextFormatter.create(num.textFont); + const textHeight = textFormatter.maxHeight; + if (num.position === _modifier__WEBPACK_IMPORTED_MODULE_1__.ModifierPosition.ABOVE) { + state.top_text_line += textHeight / _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.STAVE_LINE_DISTANCE + 0.5; + } + if (num.position === _modifier__WEBPACK_IMPORTED_MODULE_1__.ModifierPosition.BELOW) { + state.text_line += textHeight / _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.STAVE_LINE_DISTANCE + 0.5; + } + if (note !== prev_note) { + for (let n = 0; n < note.keys.length; ++n) { + if (left_shift === 0) { + shiftLeft = Math.max(note.getLeftDisplacedHeadPx(), shiftLeft); + } + if (right_shift === 0) { + shiftRight = Math.max(note.getRightDisplacedHeadPx(), shiftRight); + } + } + prev_note = note; + } + nums_list.push({ + note, + num, + pos, + line: props.line, + shiftL: shiftLeft, + shiftR: shiftRight, + }); + } + // Sort fingernumbers by line number. + nums_list.sort((a, b) => b.line - a.line); + let numShiftL = 0; + let numShiftR = 0; + let xWidthL = 0; + let xWidthR = 0; + let lastLine = null; + let lastNote = null; + for (let i = 0; i < nums_list.length; ++i) { + let num_shift = 0; + const { note, pos, num, line, shiftL, shiftR } = nums_list[i]; + // Reset the position of the string number every line. + if (line !== lastLine || note !== lastNote) { + numShiftL = left_shift + shiftL; + numShiftR = right_shift + shiftR; + } + const numWidth = num.getWidth() + num_spacing; + if (pos === _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.LEFT) { + num.setXShift(left_shift + numShiftL); + num_shift = left_shift + numWidth; // spacing + xWidthL = num_shift > xWidthL ? num_shift : xWidthL; + } + else if (pos === _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.RIGHT) { + num.setXShift(numShiftR); + num_shift = shiftRight + numWidth; // spacing + xWidthR = num_shift > xWidthR ? num_shift : xWidthR; + } + lastLine = line; + lastNote = note; + } + state.left_shift += xWidthL; + state.right_shift += xWidthR; + return true; + } + static easyScoreHook({ fingerings } = {}, note, builder) { + fingerings === null || fingerings === void 0 ? void 0 : fingerings.split(',').map((fingeringString) => { + const split = fingeringString.trim().split('.'); + const params = { number: split[0] }; + if (split[1]) + params.position = split[1]; + return builder.getFactory().Fingering(params); + }).map((fingering, index) => note.addModifier(fingering, index)); + } + setFretHandFinger(finger) { + this.finger = finger; + return this; + } + getFretHandFinger() { + return this.finger; + } + setOffsetX(x) { + this.x_offset = x; + return this; + } + setOffsetY(y) { + this.y_offset = y; + return this; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const start = note.getModifierStartXY(this.position, this.index); + let dot_x = start.x + this.x_shift + this.x_offset; + let dot_y = start.y + this.y_shift + this.y_offset + 5; + switch (this.position) { + case _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.ABOVE: + dot_x -= 4; + dot_y -= 12; + break; + case _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.BELOW: + dot_x -= 2; + dot_y += 10; + break; + case _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.LEFT: + dot_x -= this.width; + break; + case _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.RIGHT: + dot_x += 1; + break; + default: + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('InvalidPosition', `The position ${this.position} does not exist`); + } + ctx.save(); + ctx.setFont(this.textFont); + ctx.fillText('' + this.finger, dot_x, dot_y); + ctx.restore(); + } +} +FretHandFinger.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SANS_SERIF, + size: 9, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.BOLD, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL, +}; + + +/***/ }), + +/***/ "./src/ghostnote.ts": +/*!**************************!*\ + !*** ./src/ghostnote.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "GhostNote": () => (/* binding */ GhostNote) +/* harmony export */ }); +/* harmony import */ var _stemmablenote__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./stemmablenote */ "./src/stemmablenote.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description + + + +const ERROR_MSG = 'Ghost note must have valid initialization data to identify duration.'; +class GhostNote extends _stemmablenote__WEBPACK_IMPORTED_MODULE_0__.StemmableNote { + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_1__.Category.GhostNote; + } + constructor(parameter) { + if (!parameter) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', ERROR_MSG); + } + let noteStruct; + if (typeof parameter === 'string') { + // Preserve backwards-compatibility + noteStruct = { duration: parameter }; + } + else if (typeof parameter === 'object') { + noteStruct = parameter; + } + else { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', ERROR_MSG); + } + super(noteStruct); + // Note properties + this.setWidth(0); + } + /** + * @returns true if this note is a type of rest. Rests don't have pitches, but take up space in the score. + */ + isRest() { + return true; + } + setStave(stave) { + super.setStave(stave); + return this; + } + /* Overridden to ignore */ + // eslint-disable-next-line + addToModifierContext(mc) { + // DO NOTHING. + return this; + } + preFormat() { + this.preFormatted = true; + return this; + } + draw() { + // Draw Annotations + this.setRendered(); + for (let i = 0; i < this.modifiers.length; ++i) { + const modifier = this.modifiers[i]; + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_1__.isAnnotation)(modifier)) { + modifier.setContext(this.getContext()); + modifier.drawWithStyle(); + } + } + } +} + + +/***/ }), + +/***/ "./src/glyph.ts": +/*!**********************!*\ + !*** ./src/glyph.ts ***! + \**********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "OutlineCode": () => (/* binding */ OutlineCode), +/* harmony export */ "Glyph": () => (/* binding */ Glyph) +/* harmony export */ }); +/* harmony import */ var _boundingbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./boundingbox */ "./src/boundingbox.ts"); +/* harmony import */ var _boundingboxcomputation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./boundingboxcomputation */ "./src/boundingboxcomputation.ts"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + +var OutlineCode; +(function (OutlineCode) { + OutlineCode[OutlineCode["MOVE"] = 0] = "MOVE"; + OutlineCode[OutlineCode["LINE"] = 1] = "LINE"; + OutlineCode[OutlineCode["QUADRATIC"] = 2] = "QUADRATIC"; + OutlineCode[OutlineCode["BEZIER"] = 3] = "BEZIER"; +})(OutlineCode || (OutlineCode = {})); +class GlyphCacheEntry { + constructor(fontStack, code, category) { + this.point = -1; + this.metrics = Glyph.loadMetrics(fontStack, code, category); + this.bbox = Glyph.getOutlineBoundingBox(this.metrics.outline, this.metrics.scale, this.metrics.x_shift, this.metrics.y_shift); + if (category) { + this.point = Glyph.lookupFontMetric(this.metrics.font, category, code, 'point', -1); + } + } +} +class GlyphCache { + constructor() { + this.cache = new Map(); + } + lookup(code, category) { + let entries = this.cache.get(Glyph.CURRENT_CACHE_KEY); + if (entries === undefined) { + entries = {}; + this.cache.set(Glyph.CURRENT_CACHE_KEY, entries); + } + const key = category ? `${code}%${category}` : code; + let entry = entries[key]; + if (entry === undefined) { + entry = new GlyphCacheEntry(Glyph.MUSIC_FONT_STACK, code, category); + entries[key] = entry; + } + return entry; + } +} +class GlyphOutline { + constructor(outline, originX, originY, scale) { + this.outline = outline; + this.originX = originX; + this.originY = originY; + this.scale = scale; + this.i = 0; + this.precision = 1; + // Automatically assign private properties: this.outline, this.originX, this.originY, and this.scale. + this.precision = Math.pow(10, _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.RENDER_PRECISION_PLACES); + } + done() { + return this.i >= this.outline.length; + } + next() { + return Math.round((this.outline[this.i++] * this.precision) / this.precision); + } + nextX() { + return Math.round((this.originX + this.outline[this.i++] * this.scale) * this.precision) / this.precision; + } + nextY() { + return Math.round((this.originY - this.outline[this.i++] * this.scale) * this.precision) / this.precision; + } + static parse(str) { + const result = []; + const parts = str.split(' '); + let i = 0; + while (i < parts.length) { + switch (parts[i++]) { + case 'm': + result.push(OutlineCode.MOVE, parseInt(parts[i++]), parseInt(parts[i++])); + break; + case 'l': + result.push(OutlineCode.LINE, parseInt(parts[i++]), parseInt(parts[i++])); + break; + case 'q': + result.push(OutlineCode.QUADRATIC, parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++])); + break; + case 'b': + result.push(OutlineCode.BEZIER, parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++])); + break; + } + } + return result; + } +} +class Glyph extends _element__WEBPACK_IMPORTED_MODULE_2__.Element { + /** + * @param code + * @param point + * @param options + */ + constructor(code, point, options) { + super(); + ////////////////////////////////////////////////////////////////////////////////////////////////// + // INSTANCE MEMBERS + this.bbox = new _boundingbox__WEBPACK_IMPORTED_MODULE_0__.BoundingBox(0, 0, 0, 0); + this.topGlyphs = []; + this.botGlyphs = []; + this.options = {}; + this.scale = 1; + this.code = code; + this.point = point; + this.originShift = { x: 0, y: 0 }; + this.x_shift = 0; + this.y_shift = 0; + if (options) { + this.setOptions(options); + } + else { + this.reset(); + } + } + ////////////////////////////////////////////////////////////////////////////////////////////////// + // STATIC MEMBERS + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_4__.Category.Glyph; + } + /** + * Pass a key of the form `glyphs.{category}.{code}.{key}` to Font.lookupMetric(). If the initial lookup fails, + * try again with the path `glyphs.{category}.{key}`. If the second lookup fails, return the defaultValue. + * + * @param font + * @param category any metric path under 'glyphs', so 'stem.up' could resolve to glyphs.stem.up.shiftX, glyphs.stem.up.shiftY, etc. + * @param code + * @param key + * @param defaultValue + */ + static lookupFontMetric(font, category, code, key, defaultValue) { + let value = font.lookupMetric(`glyphs.${category}.${code}.${key}`, undefined); + if (value === undefined) { + // The first lookup failed, so we omit .${code} and try again (with a defaultValue this time). + value = font.lookupMetric(`glyphs.${category}.${key}`, defaultValue); + } + return value; + } + static lookupGlyph(fontStack, code) { + (0,_util__WEBPACK_IMPORTED_MODULE_5__.defined)(fontStack, 'BadFontStack', 'Font stack is misconfigured'); + let glyph; + let font; + for (let i = 0; i < fontStack.length; i++) { + font = fontStack[i]; + glyph = font.getGlyphs()[code]; + if (glyph) + return { glyph, font }; + } + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('BadGlyph', `Glyph ${code} does not exist in font.`); + } + static loadMetrics(fontStack, code, category) { + const { glyph, font } = Glyph.lookupGlyph(fontStack, code); + if (!glyph.o) + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('BadGlyph', `Glyph ${code} has no outline defined.`); + let x_shift = 0; + let y_shift = 0; + let scale = 1; + if (category && font) { + x_shift = Glyph.lookupFontMetric(font, category, code, 'shiftX', 0); + y_shift = Glyph.lookupFontMetric(font, category, code, 'shiftY', 0); + scale = Glyph.lookupFontMetric(font, category, code, 'scale', 1); + } + const x_min = glyph.x_min; + const x_max = glyph.x_max; + const ha = glyph.ha; + if (!glyph.cached_outline) { + glyph.cached_outline = GlyphOutline.parse(glyph.o); + } + return { + x_min, + x_max, + x_shift, + y_shift, + scale, + ha, + outline: glyph.cached_outline, + font, + width: x_max - x_min, + height: ha, + }; + } + /** + * Renders glyphs from the default font stack. + * + * @param ctx Canvas or SVG context + * @param x_pos x coordinate + * @param y_pos y coordinate + * @param point the point size of the font + * @param code the glyph code in font.getGlyphs() + * @param options + * @returns + */ + static renderGlyph(ctx, x_pos, y_pos, point, code, options) { + var _a; + const data = Glyph.cache.lookup(code, options === null || options === void 0 ? void 0 : options.category); + const metrics = data.metrics; + if (data.point != -1) { + point = data.point; + } + const customScale = (_a = options === null || options === void 0 ? void 0 : options.scale) !== null && _a !== void 0 ? _a : 1; + const scale = ((point * 72.0) / (metrics.font.getResolution() * 100.0)) * metrics.scale * customScale; + Glyph.renderOutline(ctx, metrics.outline, scale, x_pos + metrics.x_shift * customScale, y_pos + metrics.y_shift * customScale); + return metrics; + } + static renderOutline(ctx, outline, scale, x_pos, y_pos) { + const go = new GlyphOutline(outline, x_pos, y_pos, scale); + ctx.beginPath(); + let x, y; + while (!go.done()) { + switch (go.next()) { + case OutlineCode.MOVE: + ctx.moveTo(go.nextX(), go.nextY()); + break; + case OutlineCode.LINE: + ctx.lineTo(go.nextX(), go.nextY()); + break; + case OutlineCode.QUADRATIC: + x = go.nextX(); + y = go.nextY(); + ctx.quadraticCurveTo(go.nextX(), go.nextY(), x, y); + break; + case OutlineCode.BEZIER: + x = go.nextX(); + y = go.nextY(); + ctx.bezierCurveTo(go.nextX(), go.nextY(), go.nextX(), go.nextY(), x, y); + break; + } + } + ctx.fill(); + } + static getOutlineBoundingBox(outline, scale, x_pos, y_pos) { + const go = new GlyphOutline(outline, x_pos, y_pos, scale); + const bboxComp = new _boundingboxcomputation__WEBPACK_IMPORTED_MODULE_1__.BoundingBoxComputation(); + // (penX, penY) hold the pen position: the start of each stroke. + let penX = x_pos; + let penY = y_pos; + let x, y; + while (!go.done()) { + switch (go.next()) { + case OutlineCode.MOVE: + // Note that we don't add any points to the bounding box until a srroke is actually drawn. + penX = go.nextX(); + penY = go.nextY(); + break; + case OutlineCode.LINE: + bboxComp.addPoint(penX, penY); + penX = go.nextX(); + penY = go.nextY(); + bboxComp.addPoint(penX, penY); + break; + case OutlineCode.QUADRATIC: + x = go.nextX(); + y = go.nextY(); + bboxComp.addQuadraticCurve(penX, penY, go.nextX(), go.nextY(), x, y); + penX = x; + penY = y; + break; + case OutlineCode.BEZIER: + x = go.nextX(); + y = go.nextY(); + bboxComp.addBezierCurve(penX, penY, go.nextX(), go.nextY(), go.nextX(), go.nextY(), x, y); + penX = x; + penY = y; + break; + } + } + return new _boundingbox__WEBPACK_IMPORTED_MODULE_0__.BoundingBox(bboxComp.getX1(), bboxComp.getY1(), bboxComp.width(), bboxComp.height()); + } + static getWidth(code, point, category) { + const data = Glyph.cache.lookup(code, category); + if (data.point != -1) { + point = data.point; + } + const scale = (point * 72) / (data.metrics.font.getResolution() * 100); + return data.bbox.getW() * scale; + } + // eslint-disable-next-line + draw(...args) { + // DO NOTHING. + } + getCode() { + return this.code; + } + // eslint-disable-next-line + setOptions(options) { + this.options = Object.assign(Object.assign({}, this.options), options); + this.reset(); + } + setPoint(point) { + this.point = point; + return this; + } + setStave(stave) { + this.stave = stave; + return this; + } + getXShift() { + return this.x_shift; + } + setXShift(x_shift) { + this.x_shift = x_shift; + return this; + } + getYshift() { + return this.y_shift; + } + setYShift(y_shift) { + this.y_shift = y_shift; + return this; + } + reset() { + const data = Glyph.cache.lookup(this.code, this.options.category); + this.metrics = data.metrics; + // Override point from metrics file + if (data.point != -1) { + this.point = data.point; + } + this.scale = (this.point * 72) / (this.metrics.font.getResolution() * 100); + this.bbox = new _boundingbox__WEBPACK_IMPORTED_MODULE_0__.BoundingBox(data.bbox.getX() * this.scale, data.bbox.getY() * this.scale, data.bbox.getW() * this.scale, data.bbox.getH() * this.scale); + } + checkMetrics() { + return (0,_util__WEBPACK_IMPORTED_MODULE_5__.defined)(this.metrics, 'BadGlyph', `Glyph ${this.code} is not initialized.`); + } + getMetrics() { + const metrics = this.checkMetrics(); + const metricsScale = metrics.scale; + return { + x_min: metrics.x_min * this.scale * metricsScale, + x_max: metrics.x_max * this.scale * metricsScale, + width: this.bbox.getW(), + height: this.bbox.getH(), + scale: this.scale * metricsScale, + x_shift: metrics.x_shift, + y_shift: metrics.y_shift, + outline: metrics.outline, + font: metrics.font, + ha: metrics.ha, + }; + } + setOriginX(x) { + const { bbox } = this; + const originX = Math.abs(bbox.getX() / bbox.getW()); + const xShift = (x - originX) * bbox.getW(); + this.originShift.x = -xShift; + } + setOriginY(y) { + const { bbox } = this; + const originY = Math.abs(bbox.getY() / bbox.getH()); + const yShift = (y - originY) * bbox.getH(); + this.originShift.y = -yShift; + } + setOrigin(x, y) { + this.setOriginX(x); + this.setOriginY(y); + } + render(ctx, x, y) { + const metrics = this.checkMetrics(); + const outline = metrics.outline; + const scale = this.scale * metrics.scale; + this.setRendered(); + this.applyStyle(ctx); + const xPos = x + this.originShift.x + metrics.x_shift; + const yPos = y + this.originShift.y + metrics.y_shift; + Glyph.renderOutline(ctx, outline, scale, xPos, yPos); + this.restoreStyle(ctx); + } + checkStave() { + return (0,_util__WEBPACK_IMPORTED_MODULE_5__.defined)(this.stave, 'NoStave', 'No stave attached to instance.'); + } + renderToStave(x) { + const context = this.checkContext(); + const metrics = this.checkMetrics(); + const stave = this.checkStave(); + const outline = metrics.outline; + const scale = this.scale * metrics.scale; + this.setRendered(); + this.applyStyle(); + const xPos = x + this.x_shift + metrics.x_shift; + const yPos = stave.getYForGlyphs() + this.y_shift + metrics.y_shift; + Glyph.renderOutline(context, outline, scale, xPos, yPos); + this.restoreStyle(); + } +} +Glyph.cache = new GlyphCache(); +// The current cache key for GlyphCache above. +// Computed when Flow.setMusicFont(...) is called. +// It is set to a comma separated list of font names. +Glyph.CURRENT_CACHE_KEY = ''; +// Used by the GlyphCache above. +// Set when Flow.setMusicFont(...) is called. +Glyph.MUSIC_FONT_STACK = []; + + +/***/ }), + +/***/ "./src/glyphnote.ts": +/*!**************************!*\ + !*** ./src/glyphnote.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "GlyphNote": () => (/* binding */ GlyphNote) +/* harmony export */ }); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. + + +class GlyphNote extends _note__WEBPACK_IMPORTED_MODULE_0__.Note { + constructor(glyph, noteStruct, options) { + super(noteStruct); + this.options = Object.assign({ ignoreTicks: false, line: 2 }, options); + // Note properties + this.ignore_ticks = this.options.ignoreTicks; + if (glyph) { + this.setGlyph(glyph); + } + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_1__.Category.GlyphNote; + } + setGlyph(glyph) { + this.glyph = glyph; + this.setWidth(this.glyph.getMetrics().width); + return this; + } + getBoundingBox() { + return this.glyph.getBoundingBox(); + } + preFormat() { + if (!this.preFormatted && this.modifierContext) { + this.modifierContext.preFormat(); + } + this.preFormatted = true; + return this; + } + drawModifiers() { + const ctx = this.checkContext(); + for (let i = 0; i < this.modifiers.length; i++) { + const modifier = this.modifiers[i]; + modifier.setContext(ctx); + modifier.drawWithStyle(); + } + } + draw() { + const stave = this.checkStave(); + const ctx = stave.checkContext(); + this.setRendered(); + ctx.openGroup('glyphNote', this.getAttribute('id')); + // Context is set when setStave is called on Note + const glyph = this.glyph; + if (!glyph.getContext()) { + glyph.setContext(ctx); + } + glyph.setStave(stave); + glyph.setYShift(stave.getYForLine(this.options.line) - stave.getYForGlyphs()); + const x = this.isCenterAligned() ? this.getAbsoluteX() - this.getWidth() / 2 : this.getAbsoluteX(); + glyph.renderToStave(x); + this.drawModifiers(); + ctx.closeGroup(); + } +} + + +/***/ }), + +/***/ "./src/gracenote.ts": +/*!**************************!*\ + !*** ./src/gracenote.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "GraceNote": () => (/* binding */ GraceNote) +/* harmony export */ }); +/* harmony import */ var _stavenote__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. + + + + + +class GraceNote extends _stavenote__WEBPACK_IMPORTED_MODULE_0__.StaveNote { + constructor(noteStruct) { + super(Object.assign({ glyph_font_scale: _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.NOTATION_FONT_SCALE * GraceNote.SCALE, stroke_px: GraceNote.LEDGER_LINE_OFFSET }, noteStruct)); + this.slash = noteStruct.slash || false; + this.slur = true; + this.buildNoteHeads(); + this.width = 3; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.GraceNote; + } + static get LEDGER_LINE_OFFSET() { + return 2; + } + static get SCALE() { + return 0.66; + } + getStemExtension() { + if (this.stem_extension_override) { + return this.stem_extension_override; + } + const glyph = this.getGlyph(); + if (glyph) { + let ret = super.getStemExtension(); + if (glyph.stem) { + const staveNoteScale = this.getStaveNoteScale(); + ret = (_stem__WEBPACK_IMPORTED_MODULE_1__.Stem.HEIGHT + ret) * staveNoteScale - _stem__WEBPACK_IMPORTED_MODULE_1__.Stem.HEIGHT; + } + return ret; + } + return 0; + } + getStaveNoteScale() { + return this.render_options.glyph_font_scale / _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.NOTATION_FONT_SCALE; + } + draw() { + super.draw(); + this.setRendered(); + const stem = this.stem; + if (this.slash && stem) { + const staveNoteScale = this.getStaveNoteScale(); + // some magic numbers are based on the staveNoteScale 0.66. + const offsetScale = staveNoteScale / 0.66; + let slashBBox = undefined; + const beam = this.beam; + if (beam) { + // FIXME: should render slash after beam? + if (!beam.postFormatted) { + beam.postFormat(); + } + slashBBox = this.calcBeamedNotesSlashBBox(8 * offsetScale, 8 * offsetScale, { + stem: 6 * offsetScale, + beam: 5 * offsetScale, + }); + } + else { + const stem_direction = this.getStemDirection(); + const noteHeadBounds = this.getNoteHeadBounds(); + const noteStemHeight = stem.getHeight(); + let x = this.getAbsoluteX(); + let y = stem_direction === _stem__WEBPACK_IMPORTED_MODULE_1__.Stem.DOWN + ? noteHeadBounds.y_top - noteStemHeight + : noteHeadBounds.y_bottom - noteStemHeight; + const defaultStemExtention = stem_direction === _stem__WEBPACK_IMPORTED_MODULE_1__.Stem.DOWN ? this.glyph.stem_down_extension : this.glyph.stem_up_extension; + let defaultOffsetY = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.STEM_HEIGHT; + defaultOffsetY -= defaultOffsetY / 2.8; + defaultOffsetY += defaultStemExtention; + y += defaultOffsetY * staveNoteScale * stem_direction; + const offsets = stem_direction === _stem__WEBPACK_IMPORTED_MODULE_1__.Stem.UP + ? { + x1: 1, + y1: 0, + x2: 13, + y2: -9, + } + : { + x1: -4, + y1: 1, + x2: 13, + y2: 9, + }; + x += offsets.x1 * offsetScale; + y += offsets.y1 * offsetScale; + slashBBox = { + x1: x, + y1: y, + x2: x + offsets.x2 * offsetScale, + y2: y + offsets.y2 * offsetScale, + }; + } + // FIXME: avoid staff lines, ledger lines or others. + const ctx = this.checkContext(); + ctx.save(); + ctx.setLineWidth(1 * offsetScale); // FIXME: use more appropriate value. + ctx.beginPath(); + ctx.moveTo(slashBBox.x1, slashBBox.y1); + ctx.lineTo(slashBBox.x2, slashBBox.y2); + ctx.closePath(); + ctx.stroke(); + ctx.restore(); + } + } + calcBeamedNotesSlashBBox(slashStemOffset, slashBeamOffset, protrusions) { + const beam = this.beam; + if (!beam) + throw new _util__WEBPACK_IMPORTED_MODULE_4__.RuntimeError('NoBeam', "Can't calculate without a beam."); + const beam_slope = beam.slope; + const isBeamEndNote = beam.notes[beam.notes.length - 1] === this; + const scaleX = isBeamEndNote ? -1 : 1; + const beam_angle = Math.atan(beam_slope * scaleX); + // slash line intersecting point on beam. + const iPointOnBeam = { + dx: Math.cos(beam_angle) * slashBeamOffset, + dy: Math.sin(beam_angle) * slashBeamOffset, + }; + slashStemOffset *= this.getStemDirection(); + const slash_angle = Math.atan((iPointOnBeam.dy - slashStemOffset) / iPointOnBeam.dx); + const protrusion_stem_dx = Math.cos(slash_angle) * protrusions.stem * scaleX; + const protrusion_stem_dy = Math.sin(slash_angle) * protrusions.stem; + const protrusion_beam_dx = Math.cos(slash_angle) * protrusions.beam * scaleX; + const protrusion_beam_dy = Math.sin(slash_angle) * protrusions.beam; + const stemX = this.getStemX(); + const stem0X = beam.notes[0].getStemX(); + const stemY = beam.getBeamYToDraw() + (stemX - stem0X) * beam_slope; + const ret = { + x1: stemX - protrusion_stem_dx, + y1: stemY + slashStemOffset - protrusion_stem_dy, + x2: stemX + iPointOnBeam.dx * scaleX + protrusion_beam_dx, + y2: stemY + iPointOnBeam.dy + protrusion_beam_dy, + }; + return ret; + } +} + + +/***/ }), + +/***/ "./src/gracenotegroup.ts": +/*!*******************************!*\ + !*** ./src/gracenotegroup.ts ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "GraceNoteGroup": () => (/* binding */ GraceNoteGroup) +/* harmony export */ }); +/* harmony import */ var _beam__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./beam */ "./src/beam.ts"); +/* harmony import */ var _formatter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formatter */ "./src/formatter.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _stavenote__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _stavetie__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stavetie */ "./src/stavetie.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _tabtie__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./tabtie */ "./src/tabtie.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +/* harmony import */ var _voice__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./voice */ "./src/voice.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// This file implements `GraceNoteGroup` which is used to format and +// render grace notes. + + + + + + + + + + +// To enable logging for this class. Set `GraceNoteGroup.DEBUG` to `true`. +// eslint-disable-next-line +function L(...args) { + if (GraceNoteGroup.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_8__.log)('Vex.Flow.GraceNoteGroup', args); +} +/** GraceNoteGroup is used to format and render grace notes. */ +class GraceNoteGroup extends _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier { + //** `GraceNoteGroup` inherits from `Modifier` and is placed inside a `ModifierContext`. */ + constructor(grace_notes, show_slur) { + super(); + this.preFormatted = false; + this.position = _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier.Position.LEFT; + this.grace_notes = grace_notes; + this.width = 0; + this.show_slur = show_slur; + this.slur = undefined; + this.voice = new _voice__WEBPACK_IMPORTED_MODULE_9__.Voice({ + num_beats: 4, + beat_value: 4, + resolution: _tables__WEBPACK_IMPORTED_MODULE_5__.Tables.RESOLUTION, + }).setStrict(false); + this.render_options = { + slur_y_shift: 0, + }; + this.beams = []; + this.voice.addTickables(this.grace_notes); + return this; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_7__.Category.GraceNoteGroup; + } + /** Arranges groups inside a `ModifierContext`. */ + static format(gracenote_groups, state) { + const group_spacing_stave = 4; + const group_spacing_tab = 0; + if (!gracenote_groups || gracenote_groups.length === 0) + return false; + const group_list = []; + let prev_note = null; + let shiftL = 0; + for (let i = 0; i < gracenote_groups.length; ++i) { + const gracenote_group = gracenote_groups[i]; + const note = gracenote_group.getNote(); + const is_stavenote = (0,_typeguard__WEBPACK_IMPORTED_MODULE_7__.isStaveNote)(note); + const spacing = is_stavenote ? group_spacing_stave : group_spacing_tab; + if (is_stavenote && note !== prev_note) { + // Iterate through all notes to get the displaced pixels + for (let n = 0; n < note.keys.length; ++n) { + shiftL = Math.max(note.getLeftDisplacedHeadPx(), shiftL); + } + prev_note = note; + } + group_list.push({ shift: shiftL, gracenote_group, spacing }); + } + // If first note left shift in case it is displaced + let group_shift = group_list[0].shift; + let formatWidth; + for (let i = 0; i < group_list.length; ++i) { + const gracenote_group = group_list[i].gracenote_group; + gracenote_group.preFormat(); + formatWidth = gracenote_group.getWidth() + group_list[i].spacing; + group_shift = Math.max(formatWidth, group_shift); + } + for (let i = 0; i < group_list.length; ++i) { + const gracenote_group = group_list[i].gracenote_group; + formatWidth = gracenote_group.getWidth() + group_list[i].spacing; + gracenote_group.setSpacingFromNextModifier(group_shift - Math.min(formatWidth, group_shift) + _stavenote__WEBPACK_IMPORTED_MODULE_3__.StaveNote.minNoteheadPadding); + } + state.left_shift += group_shift; + return true; + } + preFormat() { + if (this.preFormatted) + return; + if (!this.formatter) { + this.formatter = new _formatter__WEBPACK_IMPORTED_MODULE_1__.Formatter(); + } + this.formatter.joinVoices([this.voice]).format([this.voice], 0, {}); + this.setWidth(this.formatter.getMinTotalWidth()); + this.preFormatted = true; + } + beamNotes(grace_notes) { + grace_notes = grace_notes || this.grace_notes; + if (grace_notes.length > 1) { + const beam = new _beam__WEBPACK_IMPORTED_MODULE_0__.Beam(grace_notes); + beam.render_options.beam_width = 3; + beam.render_options.partial_beam_length = 4; + this.beams.push(beam); + } + return this; + } + setWidth(width) { + this.width = width; + return this; + } + getWidth() { + return this.width + _stavenote__WEBPACK_IMPORTED_MODULE_3__.StaveNote.minNoteheadPadding; + } + getGraceNotes() { + return this.grace_notes; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + L('Drawing grace note group for:', note); + this.alignSubNotesWithNote(this.getGraceNotes(), note); // Modifier function + // Draw grace notes. + this.grace_notes.forEach((graceNote) => graceNote.setContext(ctx).draw()); + // Draw beams. + this.beams.forEach((beam) => beam.setContext(ctx).draw()); + if (this.show_slur) { + // Create and draw slur. + const is_stavenote = (0,_typeguard__WEBPACK_IMPORTED_MODULE_7__.isStaveNote)(note); + const TieClass = is_stavenote ? _stavetie__WEBPACK_IMPORTED_MODULE_4__.StaveTie : _tabtie__WEBPACK_IMPORTED_MODULE_6__.TabTie; + this.slur = new TieClass({ + last_note: this.grace_notes[0], + first_note: note, + first_indices: [0], + last_indices: [0], + }); + this.slur.render_options.cp2 = 12; + this.slur.render_options.y_shift = (is_stavenote ? 7 : 5) + this.render_options.slur_y_shift; + this.slur.setContext(ctx).draw(); + } + } +} +GraceNoteGroup.DEBUG = false; + + +/***/ }), + +/***/ "./src/gracetabnote.ts": +/*!*****************************!*\ + !*** ./src/gracetabnote.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "GraceTabNote": () => (/* binding */ GraceTabNote) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _tabnote__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tabnote */ "./src/tabnote.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// @author Balazs Forian-Szabo +// +// ## Description +// +// A basic implementation of grace notes +// to be rendered on a tab stave. +// +// See `tests/gracetabnote_tests.ts` for usage examples. + + + +class GraceTabNote extends _tabnote__WEBPACK_IMPORTED_MODULE_1__.TabNote { + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.GraceTabNote; + } + constructor(noteStruct) { + super(noteStruct, false); + this.render_options = Object.assign(Object.assign({}, this.render_options), { + // vertical shift from stave line + y_shift: 0.3, + // grace glyph scale + scale: 0.6, + // grace tablature font + font: `7.5pt ${_font__WEBPACK_IMPORTED_MODULE_0__.Font.SANS_SERIF}` }); + this.updateWidth(); + } +} + + +/***/ }), + +/***/ "./src/index.ts": +/*!**********************!*\ + !*** ./src/index.ts ***! + \**********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Accidental": () => (/* reexport safe */ _accidental__WEBPACK_IMPORTED_MODULE_0__.Accidental), +/* harmony export */ "Annotation": () => (/* reexport safe */ _annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation), +/* harmony export */ "AnnotationHorizontalJustify": () => (/* reexport safe */ _annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationHorizontalJustify), +/* harmony export */ "AnnotationVerticalJustify": () => (/* reexport safe */ _annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify), +/* harmony export */ "Articulation": () => (/* reexport safe */ _articulation__WEBPACK_IMPORTED_MODULE_2__.Articulation), +/* harmony export */ "BarNote": () => (/* reexport safe */ _barnote__WEBPACK_IMPORTED_MODULE_3__.BarNote), +/* harmony export */ "BEAM_BOTH": () => (/* reexport safe */ _beam__WEBPACK_IMPORTED_MODULE_4__.BEAM_BOTH), +/* harmony export */ "BEAM_LEFT": () => (/* reexport safe */ _beam__WEBPACK_IMPORTED_MODULE_4__.BEAM_LEFT), +/* harmony export */ "BEAM_RIGHT": () => (/* reexport safe */ _beam__WEBPACK_IMPORTED_MODULE_4__.BEAM_RIGHT), +/* harmony export */ "Beam": () => (/* reexport safe */ _beam__WEBPACK_IMPORTED_MODULE_4__.Beam), +/* harmony export */ "Bend": () => (/* reexport safe */ _bend__WEBPACK_IMPORTED_MODULE_5__.Bend), +/* harmony export */ "BoundingBox": () => (/* reexport safe */ _boundingbox__WEBPACK_IMPORTED_MODULE_6__.BoundingBox), +/* harmony export */ "BoundingBoxComputation": () => (/* reexport safe */ _boundingboxcomputation__WEBPACK_IMPORTED_MODULE_7__.BoundingBoxComputation), +/* harmony export */ "CanvasContext": () => (/* reexport safe */ _canvascontext__WEBPACK_IMPORTED_MODULE_8__.CanvasContext), +/* harmony export */ "ChordSymbol": () => (/* reexport safe */ _chordsymbol__WEBPACK_IMPORTED_MODULE_9__.ChordSymbol), +/* harmony export */ "ChordSymbolHorizontalJustify": () => (/* reexport safe */ _chordsymbol__WEBPACK_IMPORTED_MODULE_9__.ChordSymbolHorizontalJustify), +/* harmony export */ "ChordSymbolVerticalJustify": () => (/* reexport safe */ _chordsymbol__WEBPACK_IMPORTED_MODULE_9__.ChordSymbolVerticalJustify), +/* harmony export */ "SymbolModifiers": () => (/* reexport safe */ _chordsymbol__WEBPACK_IMPORTED_MODULE_9__.SymbolModifiers), +/* harmony export */ "SymbolTypes": () => (/* reexport safe */ _chordsymbol__WEBPACK_IMPORTED_MODULE_9__.SymbolTypes), +/* harmony export */ "Clef": () => (/* reexport safe */ _clef__WEBPACK_IMPORTED_MODULE_10__.Clef), +/* harmony export */ "ClefNote": () => (/* reexport safe */ _clefnote__WEBPACK_IMPORTED_MODULE_11__.ClefNote), +/* harmony export */ "Crescendo": () => (/* reexport safe */ _crescendo__WEBPACK_IMPORTED_MODULE_12__.Crescendo), +/* harmony export */ "Curve": () => (/* reexport safe */ _curve__WEBPACK_IMPORTED_MODULE_13__.Curve), +/* harmony export */ "CurvePosition": () => (/* reexport safe */ _curve__WEBPACK_IMPORTED_MODULE_13__.CurvePosition), +/* harmony export */ "Dot": () => (/* reexport safe */ _dot__WEBPACK_IMPORTED_MODULE_14__.Dot), +/* harmony export */ "Builder": () => (/* reexport safe */ _easyscore__WEBPACK_IMPORTED_MODULE_15__.Builder), +/* harmony export */ "EasyScore": () => (/* reexport safe */ _easyscore__WEBPACK_IMPORTED_MODULE_15__.EasyScore), +/* harmony export */ "EasyScoreGrammar": () => (/* reexport safe */ _easyscore__WEBPACK_IMPORTED_MODULE_15__.EasyScoreGrammar), +/* harmony export */ "Piece": () => (/* reexport safe */ _easyscore__WEBPACK_IMPORTED_MODULE_15__.Piece), +/* harmony export */ "Element": () => (/* reexport safe */ _element__WEBPACK_IMPORTED_MODULE_16__.Element), +/* harmony export */ "Factory": () => (/* reexport safe */ _factory__WEBPACK_IMPORTED_MODULE_17__.Factory), +/* harmony export */ "Flow": () => (/* reexport safe */ _flow__WEBPACK_IMPORTED_MODULE_18__.Flow), +/* harmony export */ "Font": () => (/* reexport safe */ _font__WEBPACK_IMPORTED_MODULE_19__.Font), +/* harmony export */ "FontStyle": () => (/* reexport safe */ _font__WEBPACK_IMPORTED_MODULE_19__.FontStyle), +/* harmony export */ "FontWeight": () => (/* reexport safe */ _font__WEBPACK_IMPORTED_MODULE_19__.FontWeight), +/* harmony export */ "Formatter": () => (/* reexport safe */ _formatter__WEBPACK_IMPORTED_MODULE_20__.Formatter), +/* harmony export */ "Fraction": () => (/* reexport safe */ _fraction__WEBPACK_IMPORTED_MODULE_21__.Fraction), +/* harmony export */ "FretHandFinger": () => (/* reexport safe */ _frethandfinger__WEBPACK_IMPORTED_MODULE_22__.FretHandFinger), +/* harmony export */ "GhostNote": () => (/* reexport safe */ _ghostnote__WEBPACK_IMPORTED_MODULE_23__.GhostNote), +/* harmony export */ "Glyph": () => (/* reexport safe */ _glyph__WEBPACK_IMPORTED_MODULE_24__.Glyph), +/* harmony export */ "OutlineCode": () => (/* reexport safe */ _glyph__WEBPACK_IMPORTED_MODULE_24__.OutlineCode), +/* harmony export */ "GlyphNote": () => (/* reexport safe */ _glyphnote__WEBPACK_IMPORTED_MODULE_25__.GlyphNote), +/* harmony export */ "GraceNote": () => (/* reexport safe */ _gracenote__WEBPACK_IMPORTED_MODULE_26__.GraceNote), +/* harmony export */ "GraceNoteGroup": () => (/* reexport safe */ _gracenotegroup__WEBPACK_IMPORTED_MODULE_27__.GraceNoteGroup), +/* harmony export */ "GraceTabNote": () => (/* reexport safe */ _gracetabnote__WEBPACK_IMPORTED_MODULE_28__.GraceTabNote), +/* harmony export */ "KeyManager": () => (/* reexport safe */ _keymanager__WEBPACK_IMPORTED_MODULE_29__.KeyManager), +/* harmony export */ "KeySignature": () => (/* reexport safe */ _keysignature__WEBPACK_IMPORTED_MODULE_30__.KeySignature), +/* harmony export */ "KeySigNote": () => (/* reexport safe */ _keysignote__WEBPACK_IMPORTED_MODULE_31__.KeySigNote), +/* harmony export */ "Modifier": () => (/* reexport safe */ _modifier__WEBPACK_IMPORTED_MODULE_32__.Modifier), +/* harmony export */ "ModifierPosition": () => (/* reexport safe */ _modifier__WEBPACK_IMPORTED_MODULE_32__.ModifierPosition), +/* harmony export */ "ModifierContext": () => (/* reexport safe */ _modifiercontext__WEBPACK_IMPORTED_MODULE_33__.ModifierContext), +/* harmony export */ "MultiMeasureRest": () => (/* reexport safe */ _multimeasurerest__WEBPACK_IMPORTED_MODULE_34__.MultiMeasureRest), +/* harmony export */ "Music": () => (/* reexport safe */ _music__WEBPACK_IMPORTED_MODULE_35__.Music), +/* harmony export */ "Note": () => (/* reexport safe */ _note__WEBPACK_IMPORTED_MODULE_36__.Note), +/* harmony export */ "NoteHead": () => (/* reexport safe */ _notehead__WEBPACK_IMPORTED_MODULE_37__.NoteHead), +/* harmony export */ "NoteSubGroup": () => (/* reexport safe */ _notesubgroup__WEBPACK_IMPORTED_MODULE_38__.NoteSubGroup), +/* harmony export */ "Ornament": () => (/* reexport safe */ _ornament__WEBPACK_IMPORTED_MODULE_39__.Ornament), +/* harmony export */ "Parenthesis": () => (/* reexport safe */ _parenthesis__WEBPACK_IMPORTED_MODULE_40__.Parenthesis), +/* harmony export */ "Parser": () => (/* reexport safe */ _parser__WEBPACK_IMPORTED_MODULE_41__.Parser), +/* harmony export */ "PedalMarking": () => (/* reexport safe */ _pedalmarking__WEBPACK_IMPORTED_MODULE_42__.PedalMarking), +/* harmony export */ "Registry": () => (/* reexport safe */ _registry__WEBPACK_IMPORTED_MODULE_43__.Registry), +/* harmony export */ "RenderContext": () => (/* reexport safe */ _rendercontext__WEBPACK_IMPORTED_MODULE_44__.RenderContext), +/* harmony export */ "drawDot": () => (/* reexport safe */ _rendercontext__WEBPACK_IMPORTED_MODULE_44__.drawDot), +/* harmony export */ "Renderer": () => (/* reexport safe */ _renderer__WEBPACK_IMPORTED_MODULE_45__.Renderer), +/* harmony export */ "RendererBackends": () => (/* reexport safe */ _renderer__WEBPACK_IMPORTED_MODULE_45__.RendererBackends), +/* harmony export */ "RendererLineEndType": () => (/* reexport safe */ _renderer__WEBPACK_IMPORTED_MODULE_45__.RendererLineEndType), +/* harmony export */ "RepeatNote": () => (/* reexport safe */ _repeatnote__WEBPACK_IMPORTED_MODULE_46__.RepeatNote), +/* harmony export */ "Stave": () => (/* reexport safe */ _stave__WEBPACK_IMPORTED_MODULE_47__.Stave), +/* harmony export */ "Barline": () => (/* reexport safe */ _stavebarline__WEBPACK_IMPORTED_MODULE_48__.Barline), +/* harmony export */ "BarlineType": () => (/* reexport safe */ _stavebarline__WEBPACK_IMPORTED_MODULE_48__.BarlineType), +/* harmony export */ "StaveConnector": () => (/* reexport safe */ _staveconnector__WEBPACK_IMPORTED_MODULE_49__.StaveConnector), +/* harmony export */ "StaveHairpin": () => (/* reexport safe */ _stavehairpin__WEBPACK_IMPORTED_MODULE_50__.StaveHairpin), +/* harmony export */ "StaveLine": () => (/* reexport safe */ _staveline__WEBPACK_IMPORTED_MODULE_51__.StaveLine), +/* harmony export */ "StaveModifier": () => (/* reexport safe */ _stavemodifier__WEBPACK_IMPORTED_MODULE_52__.StaveModifier), +/* harmony export */ "StaveModifierPosition": () => (/* reexport safe */ _stavemodifier__WEBPACK_IMPORTED_MODULE_52__.StaveModifierPosition), +/* harmony export */ "StaveNote": () => (/* reexport safe */ _stavenote__WEBPACK_IMPORTED_MODULE_53__.StaveNote), +/* harmony export */ "Repetition": () => (/* reexport safe */ _staverepetition__WEBPACK_IMPORTED_MODULE_54__.Repetition), +/* harmony export */ "StaveSection": () => (/* reexport safe */ _stavesection__WEBPACK_IMPORTED_MODULE_55__.StaveSection), +/* harmony export */ "StaveTempo": () => (/* reexport safe */ _stavetempo__WEBPACK_IMPORTED_MODULE_56__.StaveTempo), +/* harmony export */ "StaveText": () => (/* reexport safe */ _stavetext__WEBPACK_IMPORTED_MODULE_57__.StaveText), +/* harmony export */ "StaveTie": () => (/* reexport safe */ _stavetie__WEBPACK_IMPORTED_MODULE_58__.StaveTie), +/* harmony export */ "Volta": () => (/* reexport safe */ _stavevolta__WEBPACK_IMPORTED_MODULE_59__.Volta), +/* harmony export */ "VoltaType": () => (/* reexport safe */ _stavevolta__WEBPACK_IMPORTED_MODULE_59__.VoltaType), +/* harmony export */ "Stem": () => (/* reexport safe */ _stem__WEBPACK_IMPORTED_MODULE_60__.Stem), +/* harmony export */ "StemmableNote": () => (/* reexport safe */ _stemmablenote__WEBPACK_IMPORTED_MODULE_61__.StemmableNote), +/* harmony export */ "StringNumber": () => (/* reexport safe */ _stringnumber__WEBPACK_IMPORTED_MODULE_62__.StringNumber), +/* harmony export */ "Stroke": () => (/* reexport safe */ _strokes__WEBPACK_IMPORTED_MODULE_63__.Stroke), +/* harmony export */ "SVGContext": () => (/* reexport safe */ _svgcontext__WEBPACK_IMPORTED_MODULE_64__.SVGContext), +/* harmony export */ "System": () => (/* reexport safe */ _system__WEBPACK_IMPORTED_MODULE_65__.System), +/* harmony export */ "TabNote": () => (/* reexport safe */ _tabnote__WEBPACK_IMPORTED_MODULE_66__.TabNote), +/* harmony export */ "TabSlide": () => (/* reexport safe */ _tabslide__WEBPACK_IMPORTED_MODULE_67__.TabSlide), +/* harmony export */ "TabStave": () => (/* reexport safe */ _tabstave__WEBPACK_IMPORTED_MODULE_68__.TabStave), +/* harmony export */ "TabTie": () => (/* reexport safe */ _tabtie__WEBPACK_IMPORTED_MODULE_69__.TabTie), +/* harmony export */ "TextBracket": () => (/* reexport safe */ _textbracket__WEBPACK_IMPORTED_MODULE_70__.TextBracket), +/* harmony export */ "TextBracketPosition": () => (/* reexport safe */ _textbracket__WEBPACK_IMPORTED_MODULE_70__.TextBracketPosition), +/* harmony export */ "TextDynamics": () => (/* reexport safe */ _textdynamics__WEBPACK_IMPORTED_MODULE_71__.TextDynamics), +/* harmony export */ "TextFormatter": () => (/* reexport safe */ _textformatter__WEBPACK_IMPORTED_MODULE_72__.TextFormatter), +/* harmony export */ "TextJustification": () => (/* reexport safe */ _textnote__WEBPACK_IMPORTED_MODULE_73__.TextJustification), +/* harmony export */ "TextNote": () => (/* reexport safe */ _textnote__WEBPACK_IMPORTED_MODULE_73__.TextNote), +/* harmony export */ "Tickable": () => (/* reexport safe */ _tickable__WEBPACK_IMPORTED_MODULE_74__.Tickable), +/* harmony export */ "TickContext": () => (/* reexport safe */ _tickcontext__WEBPACK_IMPORTED_MODULE_75__.TickContext), +/* harmony export */ "TimeSignatureGlyph": () => (/* reexport safe */ _timesigglyph__WEBPACK_IMPORTED_MODULE_76__.TimeSignatureGlyph), +/* harmony export */ "TimeSignature": () => (/* reexport safe */ _timesignature__WEBPACK_IMPORTED_MODULE_77__.TimeSignature), +/* harmony export */ "TimeSigNote": () => (/* reexport safe */ _timesignote__WEBPACK_IMPORTED_MODULE_78__.TimeSigNote), +/* harmony export */ "Tremolo": () => (/* reexport safe */ _tremolo__WEBPACK_IMPORTED_MODULE_79__.Tremolo), +/* harmony export */ "Tuning": () => (/* reexport safe */ _tuning__WEBPACK_IMPORTED_MODULE_80__.Tuning), +/* harmony export */ "Tuplet": () => (/* reexport safe */ _tuplet__WEBPACK_IMPORTED_MODULE_81__.Tuplet), +/* harmony export */ "TupletLocation": () => (/* reexport safe */ _tuplet__WEBPACK_IMPORTED_MODULE_81__.TupletLocation), +/* harmony export */ "Category": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.Category), +/* harmony export */ "isAccidental": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isAccidental), +/* harmony export */ "isAnnotation": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isAnnotation), +/* harmony export */ "isBarline": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isBarline), +/* harmony export */ "isCategory": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isCategory), +/* harmony export */ "isDot": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isDot), +/* harmony export */ "isGraceNote": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isGraceNote), +/* harmony export */ "isGraceNoteGroup": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isGraceNoteGroup), +/* harmony export */ "isNote": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isNote), +/* harmony export */ "isRenderContext": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isRenderContext), +/* harmony export */ "isStaveNote": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isStaveNote), +/* harmony export */ "isStemmableNote": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isStemmableNote), +/* harmony export */ "isTabNote": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isTabNote), +/* harmony export */ "RuntimeError": () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_83__.RuntimeError), +/* harmony export */ "defined": () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_83__.defined), +/* harmony export */ "globalObject": () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_83__.globalObject), +/* harmony export */ "log": () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_83__.log), +/* harmony export */ "midLine": () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_83__.midLine), +/* harmony export */ "normalizeAngle": () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_83__.normalizeAngle), +/* harmony export */ "prefix": () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_83__.prefix), +/* harmony export */ "warn": () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_83__.warn), +/* harmony export */ "Vex": () => (/* reexport safe */ _vex__WEBPACK_IMPORTED_MODULE_84__.Vex), +/* harmony export */ "Vibrato": () => (/* reexport safe */ _vibrato__WEBPACK_IMPORTED_MODULE_85__.Vibrato), +/* harmony export */ "VibratoBracket": () => (/* reexport safe */ _vibratobracket__WEBPACK_IMPORTED_MODULE_86__.VibratoBracket), +/* harmony export */ "Voice": () => (/* reexport safe */ _voice__WEBPACK_IMPORTED_MODULE_87__.Voice), +/* harmony export */ "VoiceMode": () => (/* reexport safe */ _voice__WEBPACK_IMPORTED_MODULE_87__.VoiceMode), +/* harmony export */ "isHTMLCanvas": () => (/* reexport safe */ _web__WEBPACK_IMPORTED_MODULE_88__.isHTMLCanvas), +/* harmony export */ "isHTMLDiv": () => (/* reexport safe */ _web__WEBPACK_IMPORTED_MODULE_88__.isHTMLDiv) +/* harmony export */ }); +/* harmony import */ var _accidental__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./accidental */ "./src/accidental.ts"); +/* harmony import */ var _annotation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./annotation */ "./src/annotation.ts"); +/* harmony import */ var _articulation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./articulation */ "./src/articulation.ts"); +/* harmony import */ var _barnote__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./barnote */ "./src/barnote.ts"); +/* harmony import */ var _beam__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./beam */ "./src/beam.ts"); +/* harmony import */ var _bend__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./bend */ "./src/bend.ts"); +/* harmony import */ var _boundingbox__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./boundingbox */ "./src/boundingbox.ts"); +/* harmony import */ var _boundingboxcomputation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./boundingboxcomputation */ "./src/boundingboxcomputation.ts"); +/* harmony import */ var _canvascontext__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./canvascontext */ "./src/canvascontext.ts"); +/* harmony import */ var _chordsymbol__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./chordsymbol */ "./src/chordsymbol.ts"); +/* harmony import */ var _clef__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./clef */ "./src/clef.ts"); +/* harmony import */ var _clefnote__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./clefnote */ "./src/clefnote.ts"); +/* harmony import */ var _crescendo__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./crescendo */ "./src/crescendo.ts"); +/* harmony import */ var _curve__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./curve */ "./src/curve.ts"); +/* harmony import */ var _dot__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./dot */ "./src/dot.ts"); +/* harmony import */ var _easyscore__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./easyscore */ "./src/easyscore.ts"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _factory__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./factory */ "./src/factory.ts"); +/* harmony import */ var _flow__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./flow */ "./src/flow.ts"); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _formatter__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./formatter */ "./src/formatter.ts"); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./fraction */ "./src/fraction.ts"); +/* harmony import */ var _frethandfinger__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./frethandfinger */ "./src/frethandfinger.ts"); +/* harmony import */ var _ghostnote__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./ghostnote */ "./src/ghostnote.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _glyphnote__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./glyphnote */ "./src/glyphnote.ts"); +/* harmony import */ var _gracenote__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./gracenote */ "./src/gracenote.ts"); +/* harmony import */ var _gracenotegroup__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./gracenotegroup */ "./src/gracenotegroup.ts"); +/* harmony import */ var _gracetabnote__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./gracetabnote */ "./src/gracetabnote.ts"); +/* harmony import */ var _keymanager__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./keymanager */ "./src/keymanager.ts"); +/* harmony import */ var _keysignature__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./keysignature */ "./src/keysignature.ts"); +/* harmony import */ var _keysignote__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./keysignote */ "./src/keysignote.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _modifiercontext__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./modifiercontext */ "./src/modifiercontext.ts"); +/* harmony import */ var _multimeasurerest__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./multimeasurerest */ "./src/multimeasurerest.ts"); +/* harmony import */ var _music__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./music */ "./src/music.ts"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _notehead__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./notehead */ "./src/notehead.ts"); +/* harmony import */ var _notesubgroup__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./notesubgroup */ "./src/notesubgroup.ts"); +/* harmony import */ var _ornament__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./ornament */ "./src/ornament.ts"); +/* harmony import */ var _parenthesis__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./parenthesis */ "./src/parenthesis.ts"); +/* harmony import */ var _parser__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./parser */ "./src/parser.ts"); +/* harmony import */ var _pedalmarking__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./pedalmarking */ "./src/pedalmarking.ts"); +/* harmony import */ var _registry__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./registry */ "./src/registry.ts"); +/* harmony import */ var _rendercontext__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./rendercontext */ "./src/rendercontext.ts"); +/* harmony import */ var _renderer__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./renderer */ "./src/renderer.ts"); +/* harmony import */ var _repeatnote__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./repeatnote */ "./src/repeatnote.ts"); +/* harmony import */ var _stave__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./stave */ "./src/stave.ts"); +/* harmony import */ var _stavebarline__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./stavebarline */ "./src/stavebarline.ts"); +/* harmony import */ var _staveconnector__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./staveconnector */ "./src/staveconnector.ts"); +/* harmony import */ var _stavehairpin__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./stavehairpin */ "./src/stavehairpin.ts"); +/* harmony import */ var _staveline__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./staveline */ "./src/staveline.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _stavenote__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _staverepetition__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./staverepetition */ "./src/staverepetition.ts"); +/* harmony import */ var _stavesection__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./stavesection */ "./src/stavesection.ts"); +/* harmony import */ var _stavetempo__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./stavetempo */ "./src/stavetempo.ts"); +/* harmony import */ var _stavetext__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./stavetext */ "./src/stavetext.ts"); +/* harmony import */ var _stavetie__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./stavetie */ "./src/stavetie.ts"); +/* harmony import */ var _stavevolta__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./stavevolta */ "./src/stavevolta.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _stemmablenote__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./stemmablenote */ "./src/stemmablenote.ts"); +/* harmony import */ var _stringnumber__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ./stringnumber */ "./src/stringnumber.ts"); +/* harmony import */ var _strokes__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./strokes */ "./src/strokes.ts"); +/* harmony import */ var _svgcontext__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./svgcontext */ "./src/svgcontext.ts"); +/* harmony import */ var _system__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./system */ "./src/system.ts"); +/* harmony import */ var _tabnote__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./tabnote */ "./src/tabnote.ts"); +/* harmony import */ var _tabslide__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./tabslide */ "./src/tabslide.ts"); +/* harmony import */ var _tabstave__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./tabstave */ "./src/tabstave.ts"); +/* harmony import */ var _tabtie__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./tabtie */ "./src/tabtie.ts"); +/* harmony import */ var _textbracket__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ./textbracket */ "./src/textbracket.ts"); +/* harmony import */ var _textdynamics__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ./textdynamics */ "./src/textdynamics.ts"); +/* harmony import */ var _textformatter__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ./textformatter */ "./src/textformatter.ts"); +/* harmony import */ var _textnote__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ./textnote */ "./src/textnote.ts"); +/* harmony import */ var _tickable__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ./tickable */ "./src/tickable.ts"); +/* harmony import */ var _tickcontext__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ./tickcontext */ "./src/tickcontext.ts"); +/* harmony import */ var _timesigglyph__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ./timesigglyph */ "./src/timesigglyph.ts"); +/* harmony import */ var _timesignature__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ./timesignature */ "./src/timesignature.ts"); +/* harmony import */ var _timesignote__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ./timesignote */ "./src/timesignote.ts"); +/* harmony import */ var _tremolo__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ./tremolo */ "./src/tremolo.ts"); +/* harmony import */ var _tuning__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ./tuning */ "./src/tuning.ts"); +/* harmony import */ var _tuplet__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ./tuplet */ "./src/tuplet.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ./vex */ "./src/vex.ts"); +/* harmony import */ var _vibrato__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(/*! ./vibrato */ "./src/vibrato.ts"); +/* harmony import */ var _vibratobracket__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(/*! ./vibratobracket */ "./src/vibratobracket.ts"); +/* harmony import */ var _voice__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(/*! ./voice */ "./src/voice.ts"); +/* harmony import */ var _web__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(/*! ./web */ "./src/web.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + + + + + + + + + + + + + + + +// Do not export './fonts/*' because they are used by the entry/* files. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Do not export './tables' because it is internal. Its public API is accessible via Vex.Flow.*. + + + + + + + + + + + + + + + + + + +// Do not export './version'. It is accessible via Vex.Flow.BUILD. + + + + + + + +/***/ }), + +/***/ "./src/keymanager.ts": +/*!***************************!*\ + !*** ./src/keymanager.ts ***! + \***************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "KeyManager": () => (/* binding */ KeyManager) +/* harmony export */ }); +/* harmony import */ var _music__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./music */ "./src/music.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// This class implements diatonic key management. + + +class KeyManager { + constructor(key) { + this.music = new _music__WEBPACK_IMPORTED_MODULE_0__.Music(); + this.setKey(key); + } + setKey(key) { + this.key = key; + this.reset(); + return this; + } + getKey() { + return this.key; + } + reset() { + this.keyParts = this.music.getKeyParts(this.key); + this.keyString = this.keyParts.root; + if (this.keyParts.accidental) + this.keyString += this.keyParts.accidental; + const is_supported_type = _music__WEBPACK_IMPORTED_MODULE_0__.Music.scaleTypes[this.keyParts.type]; + if (!is_supported_type) { + throw new _util__WEBPACK_IMPORTED_MODULE_1__.RuntimeError('BadArguments', `Unsupported key type: ${this.key}`); + } + this.scale = this.music.getScaleTones(this.music.getNoteValue(this.keyString), _music__WEBPACK_IMPORTED_MODULE_0__.Music.scaleTypes[this.keyParts.type]); + this.scaleMap = {}; + this.scaleMapByValue = {}; + this.originalScaleMapByValue = {}; + const noteLocation = _music__WEBPACK_IMPORTED_MODULE_0__.Music.root_indices[this.keyParts.root]; + for (let i = 0; i < _music__WEBPACK_IMPORTED_MODULE_0__.Music.roots.length; ++i) { + const index = (noteLocation + i) % _music__WEBPACK_IMPORTED_MODULE_0__.Music.roots.length; + const rootName = _music__WEBPACK_IMPORTED_MODULE_0__.Music.roots[index]; + const noteName = this.music.getRelativeNoteName(rootName, this.scale[i]); + this.scaleMap[rootName] = noteName; + this.scaleMapByValue[this.scale[i]] = noteName; + this.originalScaleMapByValue[this.scale[i]] = noteName; + } + return this; + } + getAccidental(key) { + const root = this.music.getKeyParts(key).root; + const parts = this.music.getNoteParts(this.scaleMap[root]); + return { + note: this.scaleMap[root], + accidental: parts.accidental, + }; + } + selectNote(note) { + note = note.toLowerCase(); + const parts = this.music.getNoteParts(note); + // First look for matching note in our altered scale + const scaleNote = this.scaleMap[parts.root]; + const modparts = this.music.getNoteParts(scaleNote); + if (scaleNote === note) { + return { + note: scaleNote, + accidental: parts.accidental, + change: false, + }; + } + // Then search for a note of equivalent value in our altered scale + const valueNote = this.scaleMapByValue[this.music.getNoteValue(note)]; + if (valueNote != null) { + return { + note: valueNote, + accidental: this.music.getNoteParts(valueNote).accidental, + change: false, + }; + } + // Then search for a note of equivalent value in the original scale + const originalValueNote = this.originalScaleMapByValue[this.music.getNoteValue(note)]; + if (originalValueNote != null) { + this.scaleMap[modparts.root] = originalValueNote; + delete this.scaleMapByValue[this.music.getNoteValue(scaleNote)]; + this.scaleMapByValue[this.music.getNoteValue(note)] = originalValueNote; + return { + note: originalValueNote, + accidental: this.music.getNoteParts(originalValueNote).accidental, + change: true, + }; + } + // Then try to unmodify a currently modified note. + if (modparts.root === note) { + delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])]; + this.scaleMapByValue[this.music.getNoteValue(modparts.root)] = modparts.root; + this.scaleMap[modparts.root] = modparts.root; + return { + note: modparts.root, + accidental: undefined, + change: true, + }; + } + // Last resort -- shitshoot + delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])]; + this.scaleMapByValue[this.music.getNoteValue(note)] = note; + delete this.scaleMap[modparts.root]; + this.scaleMap[modparts.root] = note; + return { + note, + accidental: parts.accidental, + change: true, + }; + } +} + + +/***/ }), + +/***/ "./src/keysignature.ts": +/*!*****************************!*\ + !*** ./src/keysignature.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "KeySignature": () => (/* binding */ KeySignature) +/* harmony export */ }); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Cyril Silverman +// +// ## Description +// +// This file implements key signatures. A key signature sits on a stave +// and indicates the notes with implicit accidentals. + + + + + +class KeySignature extends _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifier { + // Create a new Key Signature based on a `key_spec` + constructor(keySpec, cancelKeySpec, alterKeySpec) { + super(); + this.accList = []; + this.setKeySig(keySpec, cancelKeySpec, alterKeySpec); + this.setPosition(_stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifierPosition.BEGIN); + this.glyphFontScale = 38; // TODO(0xFE): Should this match StaveNote? + this.glyphs = []; + this.xPositions = []; // relative to this.x + this.paddingForced = false; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.KeySignature; + } + // Add an accidental glyph to the `KeySignature` instance which represents + // the provided `acc`. If `nextAcc` is also provided, the appropriate + // spacing will be included in the glyph's position + convertToGlyph(acc, nextAcc) { + const accGlyphData = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.accidentalCodes(acc.type); + const glyph = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph(accGlyphData.code, this.glyphFontScale); + // Determine spacing between current accidental and the next accidental + let extraWidth = 1; + if (acc.type === 'n' && nextAcc) { + const spacing = KeySignature.accidentalSpacing[nextAcc.type]; + if (spacing) { + const isAbove = nextAcc.line >= acc.line; + extraWidth = isAbove ? spacing.above : spacing.below; + } + } + // Place the glyph on the stave + this.placeGlyphOnLine(glyph, this.checkStave(), acc.line); + this.glyphs.push(glyph); + const xPosition = this.xPositions[this.xPositions.length - 1]; + const glyphWidth = glyph.getMetrics().width + extraWidth; + // Store the next accidental's x position + this.xPositions.push(xPosition + glyphWidth); + // Expand size of key signature + this.width += glyphWidth; + } + // Cancel out a key signature provided in the `spec` parameter. This will + // place appropriate natural accidentals before the key signature. + cancelKey(spec) { + this.formatted = false; + this.cancelKeySpec = spec; + return this; + } + convertToCancelAccList(spec) { + // Get the accidental list for the cancelled key signature + const cancel_accList = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.keySignature(spec); + // If the cancelled key has a different accidental type, ie: # vs b + const different_types = this.accList.length > 0 && cancel_accList.length > 0 && cancel_accList[0].type !== this.accList[0].type; + // Determine how many naturals needed to add + const naturals = different_types ? cancel_accList.length : cancel_accList.length - this.accList.length; + // Return if no naturals needed + if (naturals < 1) + return undefined; + // Get the line position for each natural + const cancelled = []; + for (let i = 0; i < naturals; i++) { + let index = i; + if (!different_types) { + index = cancel_accList.length - naturals + i; + } + const acc = cancel_accList[index]; + cancelled.push({ type: 'n', line: acc.line }); + } + // Combine naturals with main accidental list for the key signature + this.accList = cancelled.concat(this.accList); + return { + accList: cancelled, + type: cancel_accList[0].type, + }; + } + // Deprecated + addToStave(stave) { + this.paddingForced = true; + stave.addModifier(this); + return this; + } + // Apply the accidental staff line placement based on the `clef` and + // the accidental `type` for the key signature ('# or 'b'). + convertAccLines(clef, type, accList = this.accList) { + let offset = 0.0; // if clef === "treble" + let customLines; // when clef doesn't follow treble key sig shape + switch (clef) { + // Treble & Subbass both have offsets of 0, so are not included. + case 'soprano': + if (type === '#') + customLines = [2.5, 0.5, 2, 0, 1.5, -0.5, 1]; + else + offset = -1; + break; + case 'mezzo-soprano': + if (type === 'b') + customLines = [0, 2, 0.5, 2.5, 1, 3, 1.5]; + else + offset = 1.5; + break; + case 'alto': + offset = 0.5; + break; + case 'tenor': + if (type === '#') + customLines = [3, 1, 2.5, 0.5, 2, 0, 1.5]; + else + offset = -0.5; + break; + case 'baritone-f': + case 'baritone-c': + if (type === 'b') + customLines = [0.5, 2.5, 1, 3, 1.5, 3.5, 2]; + else + offset = 2; + break; + case 'bass': + case 'french': + offset = 1; + break; + default: + break; + } + // If there's a special case, assign those lines/spaces: + let i; + if (typeof customLines !== 'undefined') { + for (i = 0; i < accList.length; ++i) { + accList[i].line = customLines[i]; + } + } + else if (offset !== 0) { + for (i = 0; i < accList.length; ++i) { + accList[i].line += offset; + } + } + } + getPadding(index) { + if (!this.formatted) + this.format(); + return this.glyphs.length === 0 || (!this.paddingForced && index < 2) ? 0 : this.padding; + } + getWidth() { + if (!this.formatted) + this.format(); + return this.width; + } + setKeySig(keySpec, cancelKeySpec, alterKeySpec) { + this.formatted = false; + this.keySpec = keySpec; + this.cancelKeySpec = cancelKeySpec; + this.alterKeySpec = alterKeySpec; + return this; + } + // Alter the accidentals of a key spec one by one. + // Each alteration is a new accidental that replaces the + // original accidental (or the canceled one). + alterKey(alterKeySpec) { + this.formatted = false; + this.alterKeySpec = alterKeySpec; + return this; + } + convertToAlterAccList(alterKeySpec) { + const max = Math.min(alterKeySpec.length, this.accList.length); + for (let i = 0; i < max; ++i) { + if (alterKeySpec[i]) { + this.accList[i].type = alterKeySpec[i]; + } + } + } + format() { + const stave = this.checkStave(); + this.width = 0; + this.glyphs = []; + this.xPositions = [0]; // initialize with initial x position + this.accList = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.keySignature((0,_util__WEBPACK_IMPORTED_MODULE_4__.defined)(this.keySpec)); + const accList = this.accList; + const firstAccidentalType = accList.length > 0 ? accList[0].type : undefined; + let cancelAccList; + if (this.cancelKeySpec) { + cancelAccList = this.convertToCancelAccList(this.cancelKeySpec); + } + if (this.alterKeySpec) { + this.convertToAlterAccList(this.alterKeySpec); + } + if (this.accList.length > 0) { + const clef = (this.position === _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifierPosition.END ? stave.getEndClef() : stave.getClef()) || stave.getClef(); + if (cancelAccList) { + this.convertAccLines(clef, cancelAccList.type, cancelAccList.accList); + } + this.convertAccLines(clef, firstAccidentalType, accList); + for (let i = 0; i < this.accList.length; ++i) { + this.convertToGlyph(this.accList[i], this.accList[i + 1]); + } + } + this.formatted = true; + } + /** + * Return the Glyph objects making up this KeySignature. + */ + getGlyphs() { + if (!this.formatted) + this.format(); + return this.glyphs; + } + draw() { + const stave = this.checkStave(); + const ctx = stave.checkContext(); + if (!this.formatted) + this.format(); + this.setRendered(); + ctx.openGroup('keysignature', this.getAttribute('id')); + for (let i = 0; i < this.glyphs.length; i++) { + const glyph = this.glyphs[i]; + const x = this.x + this.xPositions[i]; + glyph.setStave(stave); + glyph.setContext(ctx); + glyph.renderToStave(x); + } + ctx.closeGroup(); + } +} +// Space between natural and following accidental depending +// on vertical position +KeySignature.accidentalSpacing = { + '#': { + above: 6, + below: 4, + }, + b: { + above: 4, + below: 7, + }, + n: { + above: 4, + below: 1, + }, + '##': { + above: 6, + below: 4, + }, + bb: { + above: 4, + below: 7, + }, + db: { + above: 4, + below: 7, + }, + d: { + above: 4, + below: 7, + }, + bbs: { + above: 4, + below: 7, + }, + '++': { + above: 6, + below: 4, + }, + '+': { + above: 6, + below: 4, + }, + '+-': { + above: 6, + below: 4, + }, + '++-': { + above: 6, + below: 4, + }, + bs: { + above: 4, + below: 10, + }, + bss: { + above: 4, + below: 10, + }, +}; + + +/***/ }), + +/***/ "./src/keysignote.ts": +/*!***************************!*\ + !*** ./src/keysignote.ts ***! + \***************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "KeySigNote": () => (/* binding */ KeySigNote) +/* harmony export */ }); +/* harmony import */ var _keysignature__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./keysignature */ "./src/keysignature.ts"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Mark Meeus 2019 + + + +class KeySigNote extends _note__WEBPACK_IMPORTED_MODULE_1__.Note { + constructor(keySpec, cancelKeySpec, alterKeySpec) { + super({ duration: 'b' }); + this.keySignature = new _keysignature__WEBPACK_IMPORTED_MODULE_0__.KeySignature(keySpec, cancelKeySpec, alterKeySpec); + // Note properties + this.ignore_ticks = true; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.KeySigNote; + } + /* Overridden to ignore */ + // eslint-disable-next-line + addToModifierContext(mc) { + // DO NOTHING. + return this; + } + preFormat() { + this.preFormatted = true; + this.keySignature.setStave(this.checkStave()); + this.setWidth(this.keySignature.getWidth()); + return this; + } + draw() { + const ctx = this.checkStave().checkContext(); + this.setRendered(); + this.keySignature.setX(this.getAbsoluteX()); + this.keySignature.setContext(ctx); + this.keySignature.draw(); + } +} + + +/***/ }), + +/***/ "./src/modifier.ts": +/*!*************************!*\ + !*** ./src/modifier.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "ModifierPosition": () => (/* binding */ ModifierPosition), +/* harmony export */ "Modifier": () => (/* binding */ Modifier) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + +var ModifierPosition; +(function (ModifierPosition) { + ModifierPosition[ModifierPosition["CENTER"] = 0] = "CENTER"; + ModifierPosition[ModifierPosition["LEFT"] = 1] = "LEFT"; + ModifierPosition[ModifierPosition["RIGHT"] = 2] = "RIGHT"; + ModifierPosition[ModifierPosition["ABOVE"] = 3] = "ABOVE"; + ModifierPosition[ModifierPosition["BELOW"] = 4] = "BELOW"; +})(ModifierPosition || (ModifierPosition = {})); +// To enable logging for this class. Set `Vex.Flow.Modifier.DEBUG` to `true`. +// function L(...args) { if (Modifier.DEBUG) log('Vex.Flow.Modifier', args); } +/** + * `Modifier` is an abstract interface for notational elements that modify + * a `Note`. Examples of modifiers are `Accidental`, `Annotation`, `Stroke`, etc. + * + * For a `Modifier` instance to be positioned correctly, it must be part of + * a `ModifierContext`. All modifiers in the same context are rendered relative to + * one another. + * + * Typically, all modifiers to a note are part of the same `ModifierContext` instance. Also, + * in multi-voice staves, all modifiers to notes on the same `tick` are part of the same + * `ModifierContext`. This ensures that multiple voices don't trample all over each other. + */ +class Modifier extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + constructor() { + super(); + this.width = 0; + // The `text_line` is reserved space above or below a stave. + this.text_line = 0; + this.position = Modifier.Position.LEFT; + this.x_shift = 0; + this.y_shift = 0; + this.spacingFromNextModifier = 0; + } + /** + * Modifiers category string. Every modifier has a different category. + * The `ModifierContext` uses this to determine the type and order of the modifiers. + */ + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_1__.Category.Modifier; + } + /** Modifiers can be positioned almost anywhere, relative to a note. */ + static get Position() { + return ModifierPosition; + } + static get PositionString() { + return { + center: ModifierPosition.CENTER, + above: ModifierPosition.ABOVE, + below: ModifierPosition.BELOW, + left: ModifierPosition.LEFT, + right: ModifierPosition.RIGHT, + }; + } + /** Called when position changes. */ + reset() { + // DO NOTHING. + } + /** Get modifier widths. */ + getWidth() { + return this.width; + } + /** Set modifier widths. */ + setWidth(width) { + this.width = width; + return this; + } + /** Get attached note (`StaveNote`, `TabNote`, etc.) */ + getNote() { + return (0,_util__WEBPACK_IMPORTED_MODULE_2__.defined)(this.note, 'NoNote', 'Modifier has no note.'); + } + /** + * Used in draw() to check and get the attached note (`StaveNote`, `TabNote`, etc.). + * Also verifies that the index is valid. + */ + checkAttachedNote() { + const category = this.getCategory(); + (0,_util__WEBPACK_IMPORTED_MODULE_2__.defined)(this.index, 'NoIndex', `Can't draw ${category} without an index.`); + return (0,_util__WEBPACK_IMPORTED_MODULE_2__.defined)(this.note, 'NoNote', `Can't draw ${category} without a note.`); + } + /** + * Set attached note. + * @param note (`StaveNote`, `TabNote`, etc.) + */ + setNote(note) { + this.note = note; + return this; + } + /** Get note index, which is a specific note in a chord. */ + getIndex() { + return this.index; + } + /** Check and get note index, which is a specific note in a chord. */ + checkIndex() { + return (0,_util__WEBPACK_IMPORTED_MODULE_2__.defined)(this.index, 'NoIndex', 'Modifier has an invalid index.'); + } + /** Set note index, which is a specific note in a chord. */ + setIndex(index) { + this.index = index; + return this; + } + /** Get `ModifierContext`. */ + getModifierContext() { + return this.modifierContext; + } + /** Check and get `ModifierContext`. */ + checkModifierContext() { + return (0,_util__WEBPACK_IMPORTED_MODULE_2__.defined)(this.modifierContext, 'NoModifierContext', 'Modifier Context Required'); + } + /** Every modifier must be part of a `ModifierContext`. */ + setModifierContext(c) { + this.modifierContext = c; + return this; + } + /** Get position. */ + getPosition() { + return this.position; + } + /** + * Set position. + * @param position CENTER | LEFT | RIGHT | ABOVE | BELOW + */ + setPosition(position) { + this.position = typeof position === 'string' ? Modifier.PositionString[position] : position; + this.reset(); + return this; + } + /** Set the `text_line` for the modifier. */ + setTextLine(line) { + this.text_line = line; + return this; + } + /** Shift modifier down `y` pixels. Negative values shift up. */ + setYShift(y) { + this.y_shift = y; + return this; + } + /** Set spacing from next modifier. */ + setSpacingFromNextModifier(x) { + this.spacingFromNextModifier = x; + } + /** Get spacing from next modifier. */ + getSpacingFromNextModifier() { + return this.spacingFromNextModifier; + } + /** + * Shift modifier `x` pixels in the direction of the modifier. Negative values + * shift reverse. + */ + setXShift(x) { + this.x_shift = 0; + if (this.position === Modifier.Position.LEFT) { + this.x_shift -= x; + } + else { + this.x_shift += x; + } + return this; + } + /** Get shift modifier `x` */ + getXShift() { + return this.x_shift; + } + /** Render the modifier onto the canvas. */ + draw() { + this.checkContext(); + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('NotImplemented', 'draw() not implemented for this modifier.'); + } + // aligns sub notes of NoteSubGroup (or GraceNoteGroup) to the main note with correct x-offset + alignSubNotesWithNote(subNotes, note) { + // Shift over the tick contexts of each note + const tickContext = note.getTickContext(); + const metrics = tickContext.getMetrics(); + const stave = note.getStave(); + const subNoteXOffset = tickContext.getX() - metrics.modLeftPx - metrics.modRightPx + this.getSpacingFromNextModifier(); + subNotes.forEach((subNote) => { + const subTickContext = subNote.getTickContext(); + if (stave) + subNote.setStave(stave); + subTickContext.setXOffset(subNoteXOffset); // don't touch baseX to avoid shift each render + }); + } +} + + +/***/ }), + +/***/ "./src/modifiercontext.ts": +/*!********************************!*\ + !*** ./src/modifiercontext.ts ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "ModifierContext": () => (/* binding */ ModifierContext) +/* harmony export */ }); +/* harmony import */ var _accidental__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./accidental */ "./src/accidental.ts"); +/* harmony import */ var _annotation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./annotation */ "./src/annotation.ts"); +/* harmony import */ var _articulation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./articulation */ "./src/articulation.ts"); +/* harmony import */ var _bend__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bend */ "./src/bend.ts"); +/* harmony import */ var _chordsymbol__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./chordsymbol */ "./src/chordsymbol.ts"); +/* harmony import */ var _dot__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dot */ "./src/dot.ts"); +/* harmony import */ var _frethandfinger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./frethandfinger */ "./src/frethandfinger.ts"); +/* harmony import */ var _gracenotegroup__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./gracenotegroup */ "./src/gracenotegroup.ts"); +/* harmony import */ var _notesubgroup__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./notesubgroup */ "./src/notesubgroup.ts"); +/* harmony import */ var _ornament__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ornament */ "./src/ornament.ts"); +/* harmony import */ var _parenthesis__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./parenthesis */ "./src/parenthesis.ts"); +/* harmony import */ var _stavenote__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _stringnumber__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./stringnumber */ "./src/stringnumber.ts"); +/* harmony import */ var _strokes__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./strokes */ "./src/strokes.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +/* harmony import */ var _vibrato__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./vibrato */ "./src/vibrato.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// This class implements various types of members to notes (e.g. bends, +// fingering positions etc.) + + + + + + + + + + + + + + + + + +// To enable logging for this class. Set `Vex.Flow.ModifierContext.DEBUG` to `true`. +// eslint-disable-next-line +function L(...args) { + if (ModifierContext.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_15__.log)('Vex.Flow.ModifierContext', args); +} +class ModifierContext { + constructor() { + // Formatting data. + this.state = { + left_shift: 0, + right_shift: 0, + text_line: 0, + top_text_line: 0, + }; + // Current members + this.members = {}; + this.preFormatted = false; + this.postFormatted = false; + this.formatted = false; + this.width = 0; + this.spacing = 0; + } + addModifier(member) { + L('addModifier is deprecated, use addMember instead.'); + return this.addMember(member); + } + /** + * this.members maps CATEGORY strings to arrays of Tickable | Modifier | StaveNote | TabNote. + * Here we add a new member to this.members, and create a new array if needed. + * @param member + * @returns this + */ + addMember(member) { + const category = member.getCategory(); + if (!this.members[category]) { + this.members[category] = []; + } + this.members[category].push(member); + member.setModifierContext(this); + this.preFormatted = false; + return this; + } + /** + * @deprecated + */ + getModifiers(category) { + L('getModifiers is deprecated, use getMembers instead.'); + return this.getMembers(category); + } + getMembers(category) { + var _a; + return (_a = this.members[category]) !== null && _a !== void 0 ? _a : []; + } + getWidth() { + return this.width; + } + getLeftShift() { + return this.state.left_shift; + } + getRightShift() { + return this.state.right_shift; + } + getState() { + return this.state; + } + getMetrics() { + if (!this.formatted) { + throw new _util__WEBPACK_IMPORTED_MODULE_15__.RuntimeError('UnformattedMember', 'Unformatted member has no metrics.'); + } + return { + width: this.state.left_shift + this.state.right_shift + this.spacing, + spacing: this.spacing, + }; + } + preFormat() { + if (this.preFormatted) + return; + L('Preformatting ModifierContext'); + const state = this.state; + const members = this.members; + // The ordering below determines when different members are formatted and rendered. + _stavenote__WEBPACK_IMPORTED_MODULE_11__.StaveNote.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.StaveNote], state); + _parenthesis__WEBPACK_IMPORTED_MODULE_10__.Parenthesis.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Parenthesis], state); + _dot__WEBPACK_IMPORTED_MODULE_5__.Dot.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Dot], state); + _frethandfinger__WEBPACK_IMPORTED_MODULE_6__.FretHandFinger.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.FretHandFinger], state); + _accidental__WEBPACK_IMPORTED_MODULE_0__.Accidental.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Accidental], state); + _strokes__WEBPACK_IMPORTED_MODULE_13__.Stroke.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Stroke], state); + _gracenotegroup__WEBPACK_IMPORTED_MODULE_7__.GraceNoteGroup.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.GraceNoteGroup], state); + _notesubgroup__WEBPACK_IMPORTED_MODULE_8__.NoteSubGroup.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.NoteSubGroup], state); + _stringnumber__WEBPACK_IMPORTED_MODULE_12__.StringNumber.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.StringNumber], state); + _articulation__WEBPACK_IMPORTED_MODULE_2__.Articulation.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Articulation], state); + _ornament__WEBPACK_IMPORTED_MODULE_9__.Ornament.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Ornament], state); + _annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Annotation], state); + _chordsymbol__WEBPACK_IMPORTED_MODULE_4__.ChordSymbol.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.ChordSymbol], state); + _bend__WEBPACK_IMPORTED_MODULE_3__.Bend.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Bend], state); + _vibrato__WEBPACK_IMPORTED_MODULE_16__.Vibrato.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Vibrato], state, this); + // Update width of this member context + this.width = state.left_shift + state.right_shift; + this.preFormatted = true; + } + postFormat() { + if (this.postFormatted) + return; + L('Postformatting ModifierContext'); + // If post-formatting is required for an element, add more lines below. + _stavenote__WEBPACK_IMPORTED_MODULE_11__.StaveNote.postFormat(this.getMembers(_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.StaveNote)); + } +} +ModifierContext.DEBUG = false; + + +/***/ }), + +/***/ "./src/multimeasurerest.ts": +/*!*********************************!*\ + !*** ./src/multimeasurerest.ts ***! + \*********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "MultiMeasureRest": () => (/* binding */ MultiMeasureRest) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _notehead__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./notehead */ "./src/notehead.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _timesignature__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./timesignature */ "./src/timesignature.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// VexFlow - Music Engraving for HTML5 +// Copyright Mohit Muthanna 2010 +// +// This class implements multiple measure rests. + + + + + + + + +let semibreve_rest; +function get_semibreve_rest() { + if (!semibreve_rest) { + const noteHead = new _notehead__WEBPACK_IMPORTED_MODULE_2__.NoteHead({ duration: 'w', note_type: 'r' }); + semibreve_rest = { + glyph_font_scale: noteHead.render_options.glyph_font_scale, + glyph_code: noteHead.glyph_code, + width: noteHead.getWidth(), + }; + } + return semibreve_rest; +} +class MultiMeasureRest extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + /** + * + * @param number_of_measures Number of measures. + * @param options The options object. + */ + constructor(number_of_measures, options) { + super(); + this.xs = { left: NaN, right: NaN }; + this.hasPaddingLeft = false; + this.hasPaddingRight = false; + this.hasLineThickness = false; + this.hasSymbolSpacing = false; + this.number_of_measures = number_of_measures; + // Keep track of whether these four options were provided. + this.hasPaddingLeft = typeof options.padding_left === 'number'; + this.hasPaddingRight = typeof options.padding_right === 'number'; + this.hasLineThickness = typeof options.line_thickness === 'number'; + this.hasSymbolSpacing = typeof options.symbol_spacing === 'number'; + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.currentMusicFont(); + this.render_options = Object.assign({ use_symbols: false, show_number: true, number_line: -0.5, number_glyph_point: musicFont.lookupMetric('digits.point'), line: 2, spacing_between_lines_px: _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.STAVE_LINE_DISTANCE, serif_thickness: 2, semibreve_rest_glyph_scale: _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.NOTATION_FONT_SCALE, padding_left: 0, padding_right: 0, line_thickness: 5, symbol_spacing: 0 }, options); + const fontLineShift = musicFont.lookupMetric('digits.shiftLine', 0); + this.render_options.number_line += fontLineShift; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_6__.Category.MultiMeasureRest; + } + getXs() { + return this.xs; + } + setStave(stave) { + this.stave = stave; + return this; + } + getStave() { + return this.stave; + } + checkStave() { + return (0,_util__WEBPACK_IMPORTED_MODULE_7__.defined)(this.stave, 'NoStave', 'No stave attached to instance.'); + } + drawLine(stave, ctx, left, right, spacingBetweenLines) { + const options = this.render_options; + const y = stave.getYForLine(options.line); + const padding = (right - left) * 0.1; + left += padding; + right -= padding; + let lineThicknessHalf; + if (this.hasLineThickness) { + lineThicknessHalf = options.line_thickness * 0.5; + } + else { + lineThicknessHalf = spacingBetweenLines * 0.25; + } + const serifThickness = options.serif_thickness; + const top = y - spacingBetweenLines; + const bot = y + spacingBetweenLines; + const leftIndented = left + serifThickness; + const rightIndented = right - serifThickness; + const lineTop = y - lineThicknessHalf; + const lineBottom = y + lineThicknessHalf; + ctx.save(); + ctx.beginPath(); + ctx.moveTo(left, top); + ctx.lineTo(leftIndented, top); + ctx.lineTo(leftIndented, lineTop); + ctx.lineTo(rightIndented, lineTop); + ctx.lineTo(rightIndented, top); + ctx.lineTo(right, top); + ctx.lineTo(right, bot); + ctx.lineTo(rightIndented, bot); + ctx.lineTo(rightIndented, lineBottom); + ctx.lineTo(leftIndented, lineBottom); + ctx.lineTo(leftIndented, bot); + ctx.lineTo(left, bot); + ctx.closePath(); + ctx.fill(); + } + drawSymbols(stave, ctx, left, right, spacingBetweenLines) { + const n4 = Math.floor(this.number_of_measures / 4); + const n = this.number_of_measures % 4; + const n2 = Math.floor(n / 2); + const n1 = n % 2; + const options = this.render_options; + // FIXME: TODO: invalidate semibreve_rest at the appropriate time + // (e.g., if the system font settings are changed). + semibreve_rest = undefined; + const rest = get_semibreve_rest(); + const rest_scale = options.semibreve_rest_glyph_scale; + const rest_width = rest.width * (rest_scale / rest.glyph_font_scale); + const glyphs = { + 2: { + width: rest_width * 0.5, + height: spacingBetweenLines, + }, + 1: { + width: rest_width, + }, + }; + /* 10: normal spacingBetweenLines */ + const spacing = this.hasSymbolSpacing ? options.symbol_spacing : 10; + const width = n4 * glyphs[2].width + n2 * glyphs[2].width + n1 * glyphs[1].width + (n4 + n2 + n1 - 1) * spacing; + let x = left + (right - left) * 0.5 - width * 0.5; + const line = options.line; + const yTop = stave.getYForLine(line - 1); + const yMiddle = stave.getYForLine(line); + const yBottom = stave.getYForLine(line + 1); + ctx.save(); + ctx.setStrokeStyle('none'); + ctx.setLineWidth(0); + for (let i = 0; i < n4; ++i) { + ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height); + ctx.fillRect(x, yBottom - glyphs[2].height, glyphs[2].width, glyphs[2].height); + x += glyphs[2].width + spacing; + } + for (let i = 0; i < n2; ++i) { + ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height); + x += glyphs[2].width + spacing; + } + for (let i = 0; i < n1; ++i) { + _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderGlyph(ctx, x, yTop, rest_scale, rest.glyph_code); + x += glyphs[1].width + spacing; + } + ctx.restore(); + } + draw() { + const ctx = this.checkContext(); + this.setRendered(); + const stave = this.checkStave(); + let left = stave.getNoteStartX(); + let right = stave.getNoteEndX(); + // FIXME: getNoteStartX() returns x + 5(barline width) + // getNoteEndX() returns x + width(no barline width) + // See Stave constructor. How do we fix this? + // Here, we subtract the barline width. + const begModifiers = stave.getModifiers(_stavemodifier__WEBPACK_IMPORTED_MODULE_3__.StaveModifierPosition.BEGIN); + if (begModifiers.length === 1 && (0,_typeguard__WEBPACK_IMPORTED_MODULE_6__.isBarline)(begModifiers[0])) { + left -= begModifiers[0].getWidth(); + } + const options = this.render_options; + if (this.hasPaddingLeft) { + left = stave.getX() + options.padding_left; + } + if (this.hasPaddingRight) { + right = stave.getX() + stave.getWidth() - options.padding_right; + } + this.xs.left = left; + this.xs.right = right; + const spacingBetweenLines = options.spacing_between_lines_px; + if (options.use_symbols) { + this.drawSymbols(stave, ctx, left, right, spacingBetweenLines); + } + else { + this.drawLine(stave, ctx, left, right, spacingBetweenLines); + } + if (options.show_number) { + const timeSpec = '/' + this.number_of_measures; + const timeSig = new _timesignature__WEBPACK_IMPORTED_MODULE_5__.TimeSignature(timeSpec, 0, false); + timeSig.point = options.number_glyph_point; + timeSig.setTimeSig(timeSpec); + timeSig.setStave(stave); + timeSig.setX(left + (right - left) * 0.5 - timeSig.getInfo().glyph.getMetrics().width * 0.5); + timeSig.bottomLine = options.number_line; + timeSig.setContext(ctx).draw(); + } + } +} + + +/***/ }), + +/***/ "./src/music.ts": +/*!**********************!*\ + !*** ./src/music.ts ***! + \**********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Music": () => (/* binding */ Music) +/* harmony export */ }); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + +/** Music implements some standard music theory routines. */ +class Music { + /** Number of an canonical notes (12). */ + static get NUM_TONES() { + return this.canonical_notes.length; + } + /** Names of root notes ('c', 'd',...) */ + static get roots() { + return ['c', 'd', 'e', 'f', 'g', 'a', 'b']; + } + /** Values of the root notes.*/ + static get root_values() { + return [0, 2, 4, 5, 7, 9, 11]; + } + /** Indices of the root notes.*/ + static get root_indices() { + return { + c: 0, + d: 1, + e: 2, + f: 3, + g: 4, + a: 5, + b: 6, + }; + } + /** Names of canonical notes ('c', 'c#', 'd',...). */ + static get canonical_notes() { + return ['c', 'c#', 'd', 'd#', 'e', 'f', 'f#', 'g', 'g#', 'a', 'a#', 'b']; + } + /** Names of diatonic intervals ('unison', 'm2', 'M2',...). */ + static get diatonic_intervals() { + return ['unison', 'm2', 'M2', 'm3', 'M3', 'p4', 'dim5', 'p5', 'm6', 'M6', 'b7', 'M7', 'octave']; + } + /** NoteAccidental associated to diatonic intervals. */ + static get diatonic_accidentals() { + return { + unison: { note: 0, accidental: 0 }, + m2: { note: 1, accidental: -1 }, + M2: { note: 1, accidental: 0 }, + m3: { note: 2, accidental: -1 }, + M3: { note: 2, accidental: 0 }, + p4: { note: 3, accidental: 0 }, + dim5: { note: 4, accidental: -1 }, + p5: { note: 4, accidental: 0 }, + m6: { note: 5, accidental: -1 }, + M6: { note: 5, accidental: 0 }, + b7: { note: 6, accidental: -1 }, + M7: { note: 6, accidental: 0 }, + octave: { note: 7, accidental: 0 }, + }; + } + /** Semitones shift associated to intervals .*/ + static get intervals() { + return { + u: 0, + unison: 0, + m2: 1, + b2: 1, + min2: 1, + S: 1, + H: 1, + 2: 2, + M2: 2, + maj2: 2, + T: 2, + W: 2, + m3: 3, + b3: 3, + min3: 3, + M3: 4, + 3: 4, + maj3: 4, + 4: 5, + p4: 5, + '#4': 6, + b5: 6, + aug4: 6, + dim5: 6, + 5: 7, + p5: 7, + '#5': 8, + b6: 8, + aug5: 8, + 6: 9, + M6: 9, + maj6: 9, + b7: 10, + m7: 10, + min7: 10, + dom7: 10, + M7: 11, + maj7: 11, + 8: 12, + octave: 12, + }; + } + /** Semitones shifts associated with scales. */ + static get scales() { + return { + major: [2, 2, 1, 2, 2, 2, 1], + minor: [2, 1, 2, 2, 1, 2, 2], + ionian: [2, 2, 1, 2, 2, 2, 1], + dorian: [2, 1, 2, 2, 2, 1, 2], + phyrgian: [1, 2, 2, 2, 1, 2, 2], + lydian: [2, 2, 2, 1, 2, 2, 1], + mixolydian: [2, 2, 1, 2, 2, 1, 2], + aeolian: [2, 1, 2, 2, 1, 2, 2], + locrian: [1, 2, 2, 1, 2, 2, 2], + }; + } + /** Scales associated with m (minor) and M (major). */ + static get scaleTypes() { + return { + M: Music.scales.major, + m: Music.scales.minor, + }; + } + /** Accidentals abbreviations. */ + static get accidentals() { + return ['bb', 'b', 'n', '#', '##']; + } + /** Note values. */ + static get noteValues() { + return { + c: { root_index: 0, int_val: 0 }, + cn: { root_index: 0, int_val: 0 }, + 'c#': { root_index: 0, int_val: 1 }, + 'c##': { root_index: 0, int_val: 2 }, + cb: { root_index: 0, int_val: 11 }, + cbb: { root_index: 0, int_val: 10 }, + d: { root_index: 1, int_val: 2 }, + dn: { root_index: 1, int_val: 2 }, + 'd#': { root_index: 1, int_val: 3 }, + 'd##': { root_index: 1, int_val: 4 }, + db: { root_index: 1, int_val: 1 }, + dbb: { root_index: 1, int_val: 0 }, + e: { root_index: 2, int_val: 4 }, + en: { root_index: 2, int_val: 4 }, + 'e#': { root_index: 2, int_val: 5 }, + 'e##': { root_index: 2, int_val: 6 }, + eb: { root_index: 2, int_val: 3 }, + ebb: { root_index: 2, int_val: 2 }, + f: { root_index: 3, int_val: 5 }, + fn: { root_index: 3, int_val: 5 }, + 'f#': { root_index: 3, int_val: 6 }, + 'f##': { root_index: 3, int_val: 7 }, + fb: { root_index: 3, int_val: 4 }, + fbb: { root_index: 3, int_val: 3 }, + g: { root_index: 4, int_val: 7 }, + gn: { root_index: 4, int_val: 7 }, + 'g#': { root_index: 4, int_val: 8 }, + 'g##': { root_index: 4, int_val: 9 }, + gb: { root_index: 4, int_val: 6 }, + gbb: { root_index: 4, int_val: 5 }, + a: { root_index: 5, int_val: 9 }, + an: { root_index: 5, int_val: 9 }, + 'a#': { root_index: 5, int_val: 10 }, + 'a##': { root_index: 5, int_val: 11 }, + ab: { root_index: 5, int_val: 8 }, + abb: { root_index: 5, int_val: 7 }, + b: { root_index: 6, int_val: 11 }, + bn: { root_index: 6, int_val: 11 }, + 'b#': { root_index: 6, int_val: 0 }, + 'b##': { root_index: 6, int_val: 1 }, + bb: { root_index: 6, int_val: 10 }, + bbb: { root_index: 6, int_val: 9 }, + }; + } + isValidNoteValue(note) { + return note >= 0 && note < Music.canonical_notes.length; + } + isValidIntervalValue(interval) { + return interval >= 0 && interval < Music.diatonic_intervals.length; + } + /** Return root and accidental associated to a note. */ + getNoteParts(noteString) { + if (!noteString || noteString.length < 1) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', 'Invalid note name: ' + noteString); + } + if (noteString.length > 3) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', 'Invalid note name: ' + noteString); + } + const note = noteString.toLowerCase(); + const regex = /^([cdefgab])(b|bb|n|#|##)?$/; + const match = regex.exec(note); + if (match !== null) { + const root = match[1]; + const accidental = match[2]; + return { + root, + accidental, + }; + } + else { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', 'Invalid note name: ' + noteString); + } + } + /** Return root, accidental and type associated to a key. */ + getKeyParts(keyString) { + if (!keyString || keyString.length < 1) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', 'Invalid key: ' + keyString); + } + const key = keyString.toLowerCase(); + // Support Major, Minor, Melodic Minor, and Harmonic Minor key types. + const regex = /^([cdefgab])(b|#)?(mel|harm|m|M)?$/; + const match = regex.exec(key); + if (match !== null) { + const root = match[1]; + const accidental = match[2]; + let type = match[3]; + // Unspecified type implies major + if (!type) + type = 'M'; + return { + root, + accidental, + type, + }; + } + else { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', `Invalid key: ${keyString}`); + } + } + /** Note value associated to a note name. */ + getNoteValue(noteString) { + const value = Music.noteValues[noteString]; + if (value === undefined) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', `Invalid note name: ${noteString}`); + } + return value.int_val; + } + /** Interval value associated to an interval name. */ + getIntervalValue(intervalString) { + const value = Music.intervals[intervalString]; + if (value === undefined) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', `Invalid interval name: ${intervalString}`); + } + return value; + } + /** Canonical note name associated to a value. */ + getCanonicalNoteName(noteValue) { + if (!this.isValidNoteValue(noteValue)) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', `Invalid note value: ${noteValue}`); + } + return Music.canonical_notes[noteValue]; + } + /** Interval name associated to a value. */ + getCanonicalIntervalName(intervalValue) { + if (!this.isValidIntervalValue(intervalValue)) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', `Invalid interval value: ${intervalValue}`); + } + return Music.diatonic_intervals[intervalValue]; + } + /** + * Given a note, interval, and interval direction, produce the relative note. + */ + getRelativeNoteValue(noteValue, intervalValue, direction = 1) { + if (direction !== 1 && direction !== -1) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', `Invalid direction: ${direction}`); + } + let sum = (noteValue + direction * intervalValue) % Music.NUM_TONES; + if (sum < 0) + sum += Music.NUM_TONES; + return sum; + } + /** + * Given a root and note value, produce the relative note name. + */ + getRelativeNoteName(root, noteValue) { + const parts = this.getNoteParts(root); + const rootValue = this.getNoteValue(parts.root); + let interval = noteValue - rootValue; + if (Math.abs(interval) > Music.NUM_TONES - 3) { + let multiplier = 1; + if (interval > 0) + multiplier = -1; + // Possibly wrap around. (Add +1 for modulo operator) + const reverse_interval = ((noteValue + 1 + (rootValue + 1)) % Music.NUM_TONES) * multiplier; + if (Math.abs(reverse_interval) > 2) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', `Notes not related: ${root}, ${noteValue})`); + } + else { + interval = reverse_interval; + } + } + if (Math.abs(interval) > 2) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', `Notes not related: ${root}, ${noteValue})`); + } + let relativeNoteName = parts.root; + if (interval > 0) { + for (let i = 1; i <= interval; ++i) { + relativeNoteName += '#'; + } + } + else if (interval < 0) { + for (let i = -1; i >= interval; --i) { + relativeNoteName += 'b'; + } + } + return relativeNoteName; + } + /** + * Return scale tones, given intervals. Each successive interval is + * relative to the previous one, e.g., Major Scale: + * + * TTSTTTS = [2,2,1,2,2,2,1] + * + * When used with key = 0, returns C scale (which is isomorphic to + * interval list). + */ + getScaleTones(key, intervals) { + const tones = [key]; + let nextNote = key; + for (let i = 0; i < intervals.length; i++) { + nextNote = this.getRelativeNoteValue(nextNote, intervals[i]); + if (nextNote !== key) + tones.push(nextNote); + } + return tones; + } + /** + * Return the interval of a note, given a diatonic scale. + * e.g., given the scale C, and the note E, returns M3. + */ + getIntervalBetween(note1, note2, direction = 1) { + if (direction !== 1 && direction !== -1) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', `Invalid direction: ${direction}`); + } + if (!this.isValidNoteValue(note1) || !this.isValidNoteValue(note2)) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', `Invalid notes: ${note1}, ${note2}`); + } + let difference = direction === 1 ? note2 - note1 : note1 - note2; + if (difference < 0) + difference += Music.NUM_TONES; + return difference; + } + /** + * Create a scale map that represents the pitch state for a + * `keySignature`. For example, passing a `G` to `keySignature` would + * return a scale map with every note naturalized except for `F` which + * has an `F#` state. + */ + createScaleMap(keySignature) { + const keySigParts = this.getKeyParts(keySignature); + if (!keySigParts.type) + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', 'Unsupported key type: undefined'); + const scaleName = Music.scaleTypes[keySigParts.type]; + let keySigString = keySigParts.root; + if (keySigParts.accidental) + keySigString += keySigParts.accidental; + if (!scaleName) + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', 'Unsupported key type: ' + keySignature); + const scale = this.getScaleTones(this.getNoteValue(keySigString), scaleName); + const noteLocation = Music.root_indices[keySigParts.root]; + const scaleMap = {}; + for (let i = 0; i < Music.roots.length; ++i) { + const index = (noteLocation + i) % Music.roots.length; + const rootName = Music.roots[index]; + let noteName = this.getRelativeNoteName(rootName, scale[i]); + if (noteName.length === 1) { + noteName += 'n'; + } + scaleMap[rootName] = noteName; + } + return scaleMap; + } +} + + +/***/ }), + +/***/ "./src/note.ts": +/*!*********************!*\ + !*** ./src/note.ts ***! + \*********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Note": () => (/* binding */ Note) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _rendercontext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rendercontext */ "./src/rendercontext.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _tickable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tickable */ "./src/tickable.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + +/** + * Note implements an abstract interface for notes and chords that + * are rendered on a stave. Notes have some common properties: All of them + * have a value (e.g., pitch, fret, etc.) and a duration (quarter, half, etc.) + * + * Some notes have stems, heads, dots, etc. Most notational elements that + * surround a note are called *modifiers*, and every note has an associated + * array of them. All notes also have a rendering context and belong to a stave. + */ +class Note extends _tickable__WEBPACK_IMPORTED_MODULE_3__.Tickable { + /** + * Every note is a tickable, i.e., it can be mutated by the `Formatter` class for + * positioning and layout. + * + * @param noteStruct To create a new note you need to provide a `noteStruct`. + */ + constructor(noteStruct) { + super(); + if (!noteStruct) { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('BadArguments', 'Note must have valid initialization data to identify duration and type.'); + } + /** Parses `noteStruct` and get note properties. */ + const parsedNoteStruct = Note.parseNoteStruct(noteStruct); + if (!parsedNoteStruct) { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('BadArguments', `Invalid note initialization object: ${JSON.stringify(noteStruct)}`); + } + // Set note properties from parameters. + this.keys = noteStruct.keys || []; + // per-pitch properties + this.keyProps = []; + this.duration = parsedNoteStruct.duration; + this.noteType = parsedNoteStruct.type; + this.customTypes = parsedNoteStruct.customTypes; + if (noteStruct.duration_override) { + // Custom duration + this.setDuration(noteStruct.duration_override); + } + else { + // Default duration + this.setIntrinsicTicks(parsedNoteStruct.ticks); + } + this.modifiers = []; + // Get the glyph code for this note from the font. + this.glyph = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.getGlyphProps(this.duration, this.noteType); + this.customGlyphs = this.customTypes.map((t) => _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.getGlyphProps(this.duration, t)); + // Note to play for audio players. + this.playNote = undefined; + // Positioning contexts used by the Formatter. + this.ignore_ticks = false; + // Positioning variables + this.width = 0; // Width in pixels calculated after preFormat + this.leftDisplacedHeadPx = 0; // Extra room on left for displaced note head + this.rightDisplacedHeadPx = 0; // Extra room on right for displaced note head + this.x_shift = 0; // X shift from tick context X + this.ys = []; // list of y coordinates for each note + // we need to hold on to these for ties and beams. + if (noteStruct.align_center) { + this.setCenterAlignment(noteStruct.align_center); + } + // The render surface. + this.render_options = { + annotation_spacing: 5, + glyph_font_scale: 1, + stroke_px: 1, + scale: 1, + font: '', + y_shift: 0, + }; + } + ////////////////////////////////////////////////////////////////////////////////////////////////// + // STATIC MEMBERS + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_4__.Category.Note; + } + /** Debug helper. Displays various note metrics for the given note. */ + static plotMetrics(ctx, note, yPos) { + const metrics = note.getMetrics(); + const xStart = note.getAbsoluteX() - metrics.modLeftPx - metrics.leftDisplacedHeadPx; + const xPre1 = note.getAbsoluteX() - metrics.leftDisplacedHeadPx; + const xAbs = note.getAbsoluteX(); + const xPost1 = note.getAbsoluteX() + metrics.notePx; + const xPost2 = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx; + const xEnd = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx + metrics.modRightPx; + const xFreedomRight = xEnd + (note.getFormatterMetrics().freedom.right || 0); + const xWidth = xEnd - xStart; + ctx.save(); + ctx.setFont(_font__WEBPACK_IMPORTED_MODULE_0__.Font.SANS_SERIF, 8); + ctx.fillText(Math.round(xWidth) + 'px', xStart + note.getXShift(), yPos); + const y = yPos + 7; + function stroke(x1, x2, color, yy = y) { + ctx.beginPath(); + ctx.setStrokeStyle(color); + ctx.setFillStyle(color); + ctx.setLineWidth(3); + ctx.moveTo(x1 + note.getXShift(), yy); + ctx.lineTo(x2 + note.getXShift(), yy); + ctx.stroke(); + } + stroke(xStart, xPre1, 'red'); + stroke(xPre1, xAbs, '#999'); + stroke(xAbs, xPost1, 'green'); + stroke(xPost1, xPost2, '#999'); + stroke(xPost2, xEnd, 'red'); + stroke(xEnd, xFreedomRight, '#DD0'); + stroke(xStart - note.getXShift(), xStart, '#BBB'); // Shift + (0,_rendercontext__WEBPACK_IMPORTED_MODULE_1__.drawDot)(ctx, xAbs + note.getXShift(), y, 'blue'); + const formatterMetrics = note.getFormatterMetrics(); + if (formatterMetrics.iterations > 0) { + const spaceDeviation = formatterMetrics.space.deviation; + const prefix = spaceDeviation >= 0 ? '+' : ''; + ctx.setFillStyle('red'); + ctx.fillText(prefix + Math.round(spaceDeviation), xAbs + note.getXShift(), yPos - 10); + } + ctx.restore(); + } + static parseDuration(durationString) { + if (!durationString) { + return undefined; + } + const regexp = /(\d*\/?\d+|[a-z])(d*)([nrhms]|$)/; + const result = regexp.exec(durationString); + if (!result) { + return undefined; + } + const duration = result[1]; + const dots = result[2].length; + const type = result[3] || 'n'; + return { duration, dots, type }; + } + static parseNoteStruct(noteStruct) { + // Preserve backwards-compatibility + const durationProps = Note.parseDuration(noteStruct.duration); + if (!durationProps) { + return undefined; + } + // If specified type is invalid, return undefined. + let type = noteStruct.type; + if (type && !_tables__WEBPACK_IMPORTED_MODULE_2__.Tables.validTypes[type]) { + return undefined; + } + // If no type specified, check duration or custom types + const customTypes = []; + if (!type) { + type = durationProps.type || 'n'; + // If we have keys, try and check if we've got a custom glyph + if (noteStruct.keys !== undefined) { + noteStruct.keys.forEach((k, i) => { + const result = k.split('/'); + // We have a custom glyph specified after the note eg. /X2 + customTypes[i] = (result && result.length === 3 ? result[2] : type); + }); + } + } + // Calculate the tick duration of the note + let ticks = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.durationToTicks(durationProps.duration); + if (!ticks) { + return undefined; + } + // Are there any dots? + const dots = noteStruct.dots ? noteStruct.dots : durationProps.dots; + if (typeof dots !== 'number') { + return undefined; + } + // Add ticks as necessary depending on the numbr of dots + let currentTicks = ticks; + for (let i = 0; i < dots; i++) { + if (currentTicks <= 1) + return undefined; + currentTicks = currentTicks / 2; + ticks += currentTicks; + } + return { + duration: durationProps.duration, + type, + customTypes, + dots, + ticks, + }; + } + /** + * Get the play note, which is arbitrary data that can be used by an + * audio player. + */ + getPlayNote() { + return this.playNote; + } + /** + * Set the play note, which is arbitrary data that can be used by an + * audio player. + */ + setPlayNote(note) { + this.playNote = note; + return this; + } + /** + * @returns true if this note is a type of rest. + * + * Rests don't have pitches, but take up space in the score. + * Subclasses should override this default implementation. + */ + isRest() { + return false; + } + /** Add stroke. */ + addStroke(index, stroke) { + stroke.setNote(this); + stroke.setIndex(index); + this.modifiers.push(stroke); + this.preFormatted = false; + return this; + } + /** Get the target stave. */ + getStave() { + return this.stave; + } + /** Check and get the target stave. */ + checkStave() { + return (0,_util__WEBPACK_IMPORTED_MODULE_5__.defined)(this.stave, 'NoStave', 'No stave attached to instance.'); + } + /** Set the target stave. */ + setStave(stave) { + this.stave = stave; + this.setYs([stave.getYForLine(0)]); // Update Y values if the stave is changed. + this.setContext(this.stave.getContext()); + return this; + } + /** Get spacing to the left of the notes. */ + getLeftDisplacedHeadPx() { + return this.leftDisplacedHeadPx; + } + /** Get spacing to the right of the notes. */ + getRightDisplacedHeadPx() { + return this.rightDisplacedHeadPx; + } + /** Set spacing to the left of the notes. */ + setLeftDisplacedHeadPx(x) { + this.leftDisplacedHeadPx = x; + return this; + } + /** Set spacing to the right of the notes. */ + setRightDisplacedHeadPx(x) { + this.rightDisplacedHeadPx = x; + return this; + } + /** True if this note has no duration (e.g., bar notes, spacers, etc.). */ + shouldIgnoreTicks() { + return this.ignore_ticks; + } + /** Get the stave line number for the note. */ + // eslint-disable-next-line + getLineNumber(isTopNote) { + return 0; + } + /** Get the stave line number for rest. */ + getLineForRest() { + return 0; + } + /** Get the glyph associated with this note. */ + // eslint-disable-next-line + getGlyph() { + return this.glyph; + } + /** Get the glyph width. */ + getGlyphWidth() { + // TODO: FIXME (multiple potential values for this.glyph) + if (this.glyph) { + if (this.glyph.getMetrics) { + return this.glyph.getMetrics().width; + } + else if (this.glyph.getWidth) { + return this.glyph.getWidth(this.render_options.glyph_font_scale); + } + } + return 0; + } + /** + * Set Y positions for this note. Each Y value is associated with + * an individual pitch/key within the note/chord. + */ + setYs(ys) { + this.ys = ys; + return this; + } + /** + * Get Y positions for this note. Each Y value is associated with + * an individual pitch/key within the note/chord. + */ + getYs() { + if (this.ys.length === 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('NoYValues', 'No Y-values calculated for this note.'); + } + return this.ys; + } + /** + * Get the Y position of the space above the stave onto which text can + * be rendered. + */ + getYForTopText(text_line) { + return this.checkStave().getYForTopText(text_line); + } + /** Return the voice that this note belongs in. */ + getVoice() { + if (!this.voice) + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('NoVoice', 'Note has no voice.'); + return this.voice; + } + /** Attach this note to `voice`. */ + setVoice(voice) { + this.voice = voice; + this.preFormatted = false; + return this; + } + /** Get the `TickContext` for this note. */ + getTickContext() { + return this.checkTickContext(); + } + /** Set the `TickContext` for this note. */ + setTickContext(tc) { + this.tickContext = tc; + this.preFormatted = false; + return this; + } + /** Accessor to duration. */ + getDuration() { + return this.duration; + } + /** Accessor to isDotted. */ + isDotted() { + return this.getModifiersByType('Dot').length > 0; + } + /** Accessor to hasStem. */ + hasStem() { + return false; + } + /** Accessor to note type. */ + getNoteType() { + return this.noteType; + } + /** Get the beam. */ + getBeam() { + return this.beam; + } + /** Check and get the beam. */ + checkBeam() { + return (0,_util__WEBPACK_IMPORTED_MODULE_5__.defined)(this.beam, 'NoBeam', 'No beam attached to instance'); + } + /** Check it has a beam. */ + hasBeam() { + return this.beam != undefined; + } + /** Set the beam. */ + setBeam(beam) { + this.beam = beam; + return this; + } + /** + * Attach a modifier to this note. + * @param modifier the Modifier to add. + * @param index of the key to modify. + * @returns this + */ + addModifier(modifier, index = 0) { + const signature = 'Note.addModifier(modifier: Modifier, index: number=0)'; + // Backwards compatibility with 3.0.9. + if (typeof index === 'string') { + index = parseInt(index); + // eslint-disable-next-line + console.warn(signature + ' expected a number for `index`, but received a string.'); + } + // Some versions of VexFlow had the two parameters reversed. + // Check here and throw an error if the argument types are not correct. + if (typeof modifier !== 'object' || typeof index !== 'number') { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('WrongParams', 'Incorrect call signature. Use ' + signature + ' instead.'); + } + modifier.setNote(this); + modifier.setIndex(index); + super.addModifier(modifier); + return this; + } + /** Get all modifiers of a specific type in `this.modifiers`. */ + getModifiersByType(type) { + return this.modifiers.filter((modifier) => modifier.getCategory() === type); + } + /** Get the coordinates for where modifiers begin. */ + // eslint-disable-next-line + getModifierStartXY(position, index, options) { + if (!this.preFormatted) { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('UnformattedNote', "Can't call GetModifierStartXY on an unformatted note"); + } + return { + x: this.getAbsoluteX(), + y: this.ys[0], + }; + } + getRightParenthesisPx(index) { + const props = this.getKeyProps()[index]; + return props.displaced ? this.getRightDisplacedHeadPx() : 0; + } + getLeftParenthesisPx(index) { + const props = this.getKeyProps()[index]; + return props.displaced ? this.getLeftDisplacedHeadPx() - this.x_shift : -this.x_shift; + } + getFirstDotPx() { + let px = this.getRightDisplacedHeadPx(); + if (this.checkModifierContext().getMembers('Parenthesis').length !== 0) + px += _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont().lookupMetric('parenthesis.default.width'); + return px; + } + /** Get the metrics for this note. */ + getMetrics() { + if (!this.preFormatted) { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('UnformattedNote', "Can't call getMetrics on an unformatted note."); + } + const modLeftPx = this.modifierContext ? this.modifierContext.getState().left_shift : 0; + const modRightPx = this.modifierContext ? this.modifierContext.getState().right_shift : 0; + const width = this.getWidth(); + const glyphWidth = this.getGlyphWidth(); + const notePx = width - + modLeftPx - // subtract left modifiers + modRightPx - // subtract right modifiers + this.leftDisplacedHeadPx - // subtract left displaced head + this.rightDisplacedHeadPx; // subtract right displaced head + // NOTE: If you change this, remember to update MockTickable.getMetrics() in the tests/ directory. + return { + width, + glyphWidth, + notePx, + // Modifier spacing. + modLeftPx, + modRightPx, + // Displaced note head on left or right. + leftDisplacedHeadPx: this.leftDisplacedHeadPx, + rightDisplacedHeadPx: this.rightDisplacedHeadPx, + glyphPx: 0, + }; + } + /** + * Get the absolute `X` position of this note's tick context. This + * excludes x_shift, so you'll need to factor it in if you're + * looking for the post-formatted x-position. + */ + getAbsoluteX() { + const tickContext = this.checkTickContext(`Can't getAbsoluteX() without a TickContext.`); + // Position note to left edge of tick context. + let x = tickContext.getX(); + if (this.stave) { + x += this.stave.getNoteStartX() + _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont().lookupMetric('stave.padding'); + } + if (this.isCenterAligned()) { + x += this.getCenterXShift(); + } + return x; + } + /** Get the direction of the stem. */ + getStemDirection() { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('NoStem', 'No stem attached to this note.'); + } + /** Get the top and bottom `y` values of the stem. */ + getStemExtents() { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('NoStem', 'No stem attached to this note.'); + } + /** Get the `x` coordinate to the right of the note. */ + getTieRightX() { + let tieStartX = this.getAbsoluteX(); + const note_glyph_width = this.glyph.getWidth(); + tieStartX += note_glyph_width / 2; + tieStartX += -this.width / 2 + this.width + 2; + return tieStartX; + } + /** Get the `x` coordinate to the left of the note. */ + getTieLeftX() { + let tieEndX = this.getAbsoluteX(); + const note_glyph_width = this.glyph.getWidth(); + tieEndX += note_glyph_width / 2; + tieEndX -= this.width / 2 + 2; + return tieEndX; + } + // Get the pitches in the note + getKeys() { + return this.keys; + } + // Get the properties for all the keys in the note + getKeyProps() { + return this.keyProps; + } +} + + +/***/ }), + +/***/ "./src/notehead.ts": +/*!*************************!*\ + !*** ./src/notehead.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "NoteHead": () => (/* binding */ NoteHead) +/* harmony export */ }); +/* harmony import */ var _boundingbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./boundingbox */ "./src/boundingbox.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + + +// eslint-disable-next-line +function L(...args) { + if (NoteHead.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_6__.log)('Vex.Flow.NoteHead', args); +} +/** + * Draw slashnote head manually. No glyph exists for this. + * @param ctx the Canvas context + * @param duration the duration of the note. ex: "4" + * @param x the x coordinate to draw at + * @param y the y coordinate to draw at + * @param stem_direction the direction of the stem + */ +function drawSlashNoteHead(ctx, duration, x, y, stem_direction, staveSpace) { + const width = _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.SLASH_NOTEHEAD_WIDTH; + ctx.save(); + ctx.setLineWidth(_tables__WEBPACK_IMPORTED_MODULE_4__.Tables.STEM_WIDTH); + let fill = false; + if (_tables__WEBPACK_IMPORTED_MODULE_4__.Tables.durationToNumber(duration) > 2) { + fill = true; + } + if (!fill) + x -= (_tables__WEBPACK_IMPORTED_MODULE_4__.Tables.STEM_WIDTH / 2) * stem_direction; + ctx.beginPath(); + ctx.moveTo(x, y + staveSpace); + ctx.lineTo(x, y + 1); + ctx.lineTo(x + width, y - staveSpace); + ctx.lineTo(x + width, y); + ctx.lineTo(x, y + staveSpace); + ctx.closePath(); + if (fill) { + ctx.fill(); + } + else { + ctx.stroke(); + } + if (_tables__WEBPACK_IMPORTED_MODULE_4__.Tables.durationToFraction(duration).equals(0.5)) { + const breve_lines = [-3, -1, width + 1, width + 3]; + for (let i = 0; i < breve_lines.length; i++) { + ctx.beginPath(); + ctx.moveTo(x + breve_lines[i], y - 10); + ctx.lineTo(x + breve_lines[i], y + 11); + ctx.stroke(); + } + } + ctx.restore(); +} +/** + * `NoteHeads` are typically not manipulated + * directly, but used internally in `StaveNote`. + * + * See `tests/notehead_tests.ts` for usage examples. + */ +class NoteHead extends _note__WEBPACK_IMPORTED_MODULE_2__.Note { + constructor(noteStruct) { + super(noteStruct); + this.custom_glyph = false; + this.stem_up_x_offset = 0; + this.stem_down_x_offset = 0; + this.index = noteStruct.index; + this.x = noteStruct.x || 0; + this.y = noteStruct.y || 0; + if (noteStruct.note_type) + this.noteType = noteStruct.note_type; + this.displaced = noteStruct.displaced || false; + this.stem_direction = noteStruct.stem_direction || _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP; + this.line = noteStruct.line || 0; + // Get glyph code based on duration and note type. This could be + // regular notes, rests, or other custom codes. + this.glyph = _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.getGlyphProps(this.duration, this.noteType); + (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`); + // Swap out the glyph with leger lines + if ((this.line > 5 || this.line < 0) && this.glyph.leger_code_head) { + this.glyph.code_head = this.glyph.leger_code_head; + } + this.glyph_code = this.glyph.code_head; + this.x_shift = noteStruct.x_shift || 0; + if (noteStruct.custom_glyph_code) { + this.custom_glyph = true; + this.glyph_code = noteStruct.custom_glyph_code; + this.stem_up_x_offset = noteStruct.stem_up_x_offset || 0; + this.stem_down_x_offset = noteStruct.stem_down_x_offset || 0; + } + this.setStyle(noteStruct.style); + this.slashed = noteStruct.slashed || false; + this.render_options = Object.assign(Object.assign({}, this.render_options), { + // font size for note heads + glyph_font_scale: noteStruct.glyph_font_scale || _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.NOTATION_FONT_SCALE }); + this.setWidth(this.glyph.getWidth(this.render_options.glyph_font_scale)); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_5__.Category.NoteHead; + } + /** Get the width of the notehead. */ + getWidth() { + return this.width; + } + /** Determine if the notehead is displaced. */ + isDisplaced() { + return this.displaced === true; + } + /** Get the glyph data. */ + getGlyph() { + return this.glyph; + } + /** Set the X coordinate. */ + setX(x) { + this.x = x; + return this; + } + /** Get the Y coordinate. */ + getY() { + return this.y; + } + /** Set the Y coordinate. */ + setY(y) { + this.y = y; + return this; + } + /** Get the stave line the notehead is placed on. */ + getLine() { + return this.line; + } + /** Set the stave line the notehead is placed on. */ + setLine(line) { + this.line = line; + return this; + } + /** Get the canvas `x` coordinate position of the notehead. */ + getAbsoluteX() { + // If the note has not been preformatted, then get the static x value + // Otherwise, it's been formatted and we should use it's x value relative + // to its tick context + const x = !this.preFormatted ? this.x : super.getAbsoluteX(); + // For a more natural displaced notehead, we adjust the displacement amount + // by half the stem width in order to maintain a slight overlap with the stem + const displacementStemAdjustment = _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.WIDTH / 2; + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.currentMusicFont(); + const fontShift = musicFont.lookupMetric('notehead.shiftX', 0) * this.stem_direction; + const displacedFontShift = musicFont.lookupMetric('noteHead.displaced.shiftX', 0) * this.stem_direction; + return (x + + fontShift + + (this.displaced ? (this.width - displacementStemAdjustment) * this.stem_direction + displacedFontShift : 0)); + } + /** Get the `BoundingBox` for the `NoteHead`. */ + getBoundingBox() { + if (!this.preFormatted) { + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('UnformattedNote', "Can't call getBoundingBox on an unformatted note."); + } + const spacing = this.checkStave().getSpacingBetweenLines(); + const half_spacing = spacing / 2; + const min_y = this.y - half_spacing; + return new _boundingbox__WEBPACK_IMPORTED_MODULE_0__.BoundingBox(this.getAbsoluteX(), min_y, this.width, spacing); + } + /** Set notehead to a provided `stave`. */ + setStave(stave) { + const line = this.getLine(); + this.stave = stave; + if (this.stave) { + this.setY(this.stave.getYForNote(line)); + this.setContext(this.stave.getContext()); + } + return this; + } + /** Pre-render formatting. */ + preFormat() { + if (this.preFormatted) + return this; + const width = this.getWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx; + this.setWidth(width); + this.preFormatted = true; + return this; + } + /** Draw the notehead. */ + draw() { + const ctx = this.checkContext(); + this.setRendered(); + let head_x = this.getAbsoluteX(); + if (this.custom_glyph) { + // head_x += this.x_shift; + head_x += this.stem_direction === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP ? this.stem_up_x_offset : this.stem_down_x_offset; + } + const y = this.y; + L("Drawing note head '", this.noteType, this.duration, "' at", head_x, y); + // Begin and end positions for head. + const stem_direction = this.stem_direction; + const glyph_font_scale = this.render_options.glyph_font_scale; + this.applyStyle(ctx); + const categorySuffix = `${this.glyph_code}Stem${stem_direction === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP ? 'Up' : 'Down'}`; + if (this.noteType === 's') { + const staveSpace = this.checkStave().getSpacingBetweenLines(); + drawSlashNoteHead(ctx, this.duration, head_x, y, stem_direction, staveSpace); + } + else { + _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderGlyph(ctx, head_x, y, glyph_font_scale, this.glyph_code, { + category: this.custom_glyph ? `noteHead.custom.${categorySuffix}` : `noteHead.standard.${categorySuffix}`, + }); + } + this.restoreStyle(ctx); + } +} +/** To enable logging for this class. Set `Vex.Flow.NoteHead.DEBUG` to `true`. */ +NoteHead.DEBUG = false; + + +/***/ }), + +/***/ "./src/notesubgroup.ts": +/*!*****************************!*\ + !*** ./src/notesubgroup.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "NoteSubGroup": () => (/* binding */ NoteSubGroup) +/* harmony export */ }); +/* harmony import */ var _formatter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatter */ "./src/formatter.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _voice__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./voice */ "./src/voice.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Taehoon Moon 2016 +// +// ## Description +// +// This file implements `NoteSubGroup` which is used to format and +// render notes as a `Modifier` +// ex) ClefNote, TimeSigNote and BarNote. + + + + + +class NoteSubGroup extends _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier { + constructor(subNotes) { + super(); + this.preFormatted = false; + this.position = _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.LEFT; + this.subNotes = subNotes; + this.subNotes.forEach((subNote) => { + subNote.setIgnoreTicks(false); + }); + this.width = 0; + this.formatter = new _formatter__WEBPACK_IMPORTED_MODULE_0__.Formatter(); + this.voice = new _voice__WEBPACK_IMPORTED_MODULE_4__.Voice({ + num_beats: 4, + beat_value: 4, + resolution: _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.RESOLUTION, + }).setStrict(false); + this.voice.addTickables(this.subNotes); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.NoteSubGroup; + } + // Arrange groups inside a `ModifierContext` + static format(groups, state) { + if (!groups || groups.length === 0) + return false; + let width = 0; + for (let i = 0; i < groups.length; ++i) { + const group = groups[i]; + group.preFormat(); + width += group.getWidth(); + } + state.left_shift += width; + return true; + } + preFormat() { + if (this.preFormatted) + return; + this.formatter.joinVoices([this.voice]).format([this.voice], 0); + this.setWidth(this.formatter.getMinTotalWidth()); + this.preFormatted = true; + } + setWidth(width) { + this.width = width; + return this; + } + getWidth() { + return this.width; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + this.alignSubNotesWithNote(this.subNotes, note); // Modifier function + this.subNotes.forEach((subNote) => subNote.setContext(ctx).drawWithStyle()); + } +} + + +/***/ }), + +/***/ "./src/ornament.ts": +/*!*************************!*\ + !*** ./src/ornament.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Ornament": () => (/* binding */ Ornament) +/* harmony export */ }); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _tickcontext__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tickcontext */ "./src/tickcontext.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Cyril Silverman +// MIT License + + + + + + + +// eslint-disable-next-line +function L(...args) { + if (Ornament.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_6__.log)('Vex.Flow.Ornament', args); +} +/** + * Ornament implements ornaments as modifiers that can be + * attached to notes. The complete list of ornaments is available in + * `tables.ts` under `Vex.Flow.ornamentCodes`. + * + * See `tests/ornament_tests.ts` for usage examples. + */ +class Ornament extends _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier { + /** + * Create a new ornament of type `type`, which is an entry in + * `Vex.Flow.ornamentCodes` in `tables.ts`. + */ + constructor(type) { + super(); + this.type = type; + this.delayed = false; + this.render_options = { + font_scale: 38, + accidentalLowerPadding: 3, + accidentalUpperPadding: 3, + }; + this.ornament = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.ornamentCodes(this.type); + // new ornaments have their origin at the origin, and have more specific + // metrics. Legacy ornaments do some + // x scaling, and have hard-coded metrics + const metrics = this.getMetrics(); + // some jazz ornaments are above or below depending on stem direction. + this.adjustForStemDirection = false; + // some jazz ornaments like falls are supposed to overlap with future bars + // and so we report a different width than they actually take up. + this.reportedWidth = metrics && metrics.reportedWidth ? metrics.reportedWidth : 0; + this.stemUpYOffset = metrics && metrics.stemUpYOffset ? metrics.stemUpYOffset : 0; + this.ornamentAlignWithNoteHead = Ornament.ornamentAlignWithNoteHead.indexOf(this.type) >= 0; + if (!this.ornament) { + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('ArgumentError', `Ornament not found: '${this.type}'`); + } + this.x_shift = metrics ? metrics.xOffset : 0; + this.y_shift = metrics ? metrics.yOffset : 0; + this.glyph = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph(this.ornament.code, this.render_options.font_scale, { + category: `ornament.${this.ornament.code}`, + }); + // Is this a jazz ornament that goes between this note and the next note. + if (Ornament.ornamentNoteTransition.indexOf(this.type) >= 0) { + this.delayed = true; + } + // Legacy ornaments need this. I don't know why, but horizontal spacing issues + // happen if I don't set it. + if (!metrics) { + this.glyph.setOrigin(0.5, 1.0); // FIXME: SMuFL won't require a vertical origin shift + } + } + /** Ornaments category string. */ + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_5__.Category.Ornament; + } + static get minPadding() { + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont(); + return musicFont.lookupMetric('glyphs.noteHead.minPadding'); + } + /** Arrange ornaments inside `ModifierContext` */ + static format(ornaments, state) { + if (!ornaments || ornaments.length === 0) + return false; + let width = 0; // width is used by ornaments, which are always centered on the note head + let right_shift = state.right_shift; // jazz ornaments calculate r/l shift separately + let left_shift = state.left_shift; + let yOffset = 0; + for (let i = 0; i < ornaments.length; ++i) { + const ornament = ornaments[i]; + const increment = 2; + if (Ornament.ornamentRelease.indexOf(ornament.type) >= 0) { + ornament.x_shift += right_shift + 2; + } + if (Ornament.ornamentAttack.indexOf(ornament.type) >= 0) { + ornament.x_shift -= left_shift + 2; + } + if (ornament.reportedWidth && ornament.x_shift < 0) { + left_shift += ornament.reportedWidth; + } + else if (ornament.reportedWidth && ornament.x_shift >= 0) { + right_shift += ornament.reportedWidth + Ornament.minPadding; + } + else { + width = Math.max(ornament.getWidth(), width); + } + // articulations above/below the line can be stacked. + if (Ornament.ornamentArticulation.indexOf(ornament.type) >= 0) { + // Unfortunately we don't know the stem direction. So we base it + // on the line number, but also allow it to be overridden. + const ornamentNote = (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(ornament.note, 'NoAttachedNote'); + if (ornamentNote.getLineNumber() >= 3 || ornament.getPosition() === _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.ABOVE) { + state.top_text_line += increment; + ornament.y_shift += yOffset; + yOffset -= ornament.glyph.bbox.getH(); + } + else { + state.text_line += increment; + ornament.y_shift += yOffset; + yOffset += ornament.glyph.bbox.getH(); + } + } + else { + if (ornament.getPosition() === _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.ABOVE) { + ornament.setTextLine(state.top_text_line); + state.top_text_line += increment; + } + else { + ornament.setTextLine(state.text_line); + state.text_line += increment; + } + } + } + // Note: 'legit' ornaments don't consider other modifiers when calculating their + // X position, but jazz ornaments sometimes need to. + state.left_shift = left_shift + width / 2; + state.right_shift = right_shift + width / 2; + return true; + } + /** + * ornamentNoteTransition means the jazz ornament represents an effect from one note to another, + * these are generally on the top of the staff. + */ + static get ornamentNoteTransition() { + return ['flip', 'jazzTurn', 'smear']; + } + /** + * ornamentAttack indicates something that happens in the attach, placed before the note and + * any accidentals + */ + static get ornamentAttack() { + return ['scoop']; + } + /** + * The ornament is aligned based on the note head, but without regard to whether the + * stem goes up or down. + */ + static get ornamentAlignWithNoteHead() { + return ['doit', 'fall', 'fallLong', 'doitLong', 'bend', 'plungerClosed', 'plungerOpen', 'scoop']; + } + /** + * An ornament that happens on the release of the note, generally placed after the + * note and overlapping the next beat/measure.. + */ + static get ornamentRelease() { + return ['doit', 'fall', 'fallLong', 'doitLong', 'jazzTurn', 'smear', 'flip']; + } + /** ornamentArticulation goes above/below the note based on space availablity */ + static get ornamentArticulation() { + return ['bend', 'plungerClosed', 'plungerOpen']; + } + /** + * Legacy ornaments have hard-coded metrics. If additional ornament types are + * added, get their metrics here. + */ + // eslint-disable-next-line + getMetrics() { + return _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().getMetrics().glyphs.jazzOrnaments[this.ornament.code]; + } + /** Set whether the ornament is to be delayed. */ + setDelayed(delayed) { + this.delayed = delayed; + return this; + } + /** Set the upper accidental for the ornament. */ + setUpperAccidental(accid) { + const scale = this.render_options.font_scale / 1.3; + this.accidentalUpper = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph(_tables__WEBPACK_IMPORTED_MODULE_3__.Tables.accidentalCodes(accid).code, scale); + this.accidentalUpper.setOrigin(0.5, 1.0); + return this; + } + /** Set the lower accidental for the ornament. */ + setLowerAccidental(accid) { + const scale = this.render_options.font_scale / 1.3; + this.accidentalLower = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph(_tables__WEBPACK_IMPORTED_MODULE_3__.Tables.accidentalCodes(accid).code, scale); + this.accidentalLower.setOrigin(0.5, 1.0); + return this; + } + /** Render ornament in position next to note. */ + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const stemDir = note.getStemDirection(); + const stave = note.checkStave(); + ctx.openGroup('ornament', this.getAttribute('id')); + // Get stem extents + const stemExtents = note.checkStem().getExtents(); + let y = stemDir === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN ? stemExtents.baseY : stemExtents.topY; + // TabNotes don't have stems attached to them. Tab stems are rendered outside the stave. + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isTabNote)(note)) { + if (note.hasStem()) { + if (stemDir === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN) { + y = stave.getYForTopText(this.text_line); + } + } + else { + // Without a stem + y = stave.getYForTopText(this.text_line); + } + } + const isPlacedOnNoteheadSide = stemDir === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN; + const spacing = stave.getSpacingBetweenLines(); + let lineSpacing = 1; + // Beamed stems are longer than quarter note stems, adjust accordingly + if (!isPlacedOnNoteheadSide && note.hasBeam()) { + lineSpacing += 0.5; + } + const totalSpacing = spacing * (this.text_line + lineSpacing); + const glyphYBetweenLines = y - totalSpacing; + // Get initial coordinates for the modifier position + const start = note.getModifierStartXY(this.position, this.index); + let glyphX = start.x; + // If the ornament is aligned with the note head, don't consider the stave y + // but use the 'natural' modifier y + let glyphY = this.ornamentAlignWithNoteHead + ? start.y + : Math.min(stave.getYForTopText(this.text_line), glyphYBetweenLines); + glyphY += this.y_shift; + // Ajdust x position if ornament is delayed + if (this.delayed) { + let delayXShift = 0; + const startX = glyphX - (stave.getX() - 10); + if (this.delayXShift !== undefined) { + delayXShift = this.delayXShift; + } + else { + delayXShift += this.glyph.getMetrics().width / 2; + const nextContext = _tickcontext__WEBPACK_IMPORTED_MODULE_4__.TickContext.getNextContext(note.getTickContext()); + if (nextContext) { + delayXShift += (nextContext.getX() - startX) * 0.5; + } + else { + delayXShift += (stave.getX() + stave.getWidth() - startX) * 0.5; + } + this.delayXShift = delayXShift; + } + glyphX += delayXShift; + } + L('Rendering ornament: ', this.ornament, glyphX, glyphY); + if (this.accidentalLower) { + this.accidentalLower.render(ctx, glyphX, glyphY); + glyphY -= this.accidentalLower.getMetrics().height; + glyphY -= this.render_options.accidentalLowerPadding; + } + if (this.stemUpYOffset && note.hasStem() && note.getStemDirection() === 1) { + glyphY += this.stemUpYOffset; + } + if (note.getLineNumber() < 5 && Ornament.ornamentNoteTransition.indexOf(this.type) >= 0) { + glyphY = note.checkStave().getBoundingBox().getY() + 40; + } + this.glyph.render(ctx, glyphX + this.x_shift, glyphY); + if (this.accidentalUpper) { + glyphY -= this.glyph.getMetrics().height + this.render_options.accidentalUpperPadding; + this.accidentalUpper.render(ctx, glyphX, glyphY); + } + ctx.closeGroup(); + } +} +/** To enable logging for this class. Set `Vex.Flow.Ornament.DEBUG` to `true`. */ +Ornament.DEBUG = false; + + +/***/ }), + +/***/ "./src/parenthesis.ts": +/*!****************************!*\ + !*** ./src/parenthesis.ts ***! + \****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Parenthesis": () => (/* binding */ Parenthesis) +/* harmony export */ }); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Rodrigo Vilar +// MIT License + + + + +/** Parenthesis implements parenthesis modifiers for notes. */ +class Parenthesis extends _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier { + /** + * Constructor + * + * @param position Modifier.Position.LEFT (default) or Modifier.Position.RIGHT + */ + constructor(position) { + super(); + this.position = position !== null && position !== void 0 ? position : _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.LEFT; + this.point = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont().lookupMetric('parenthesis.default.point'); + this.setWidth(_tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont().lookupMetric('parenthesis.default.width')); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.Parenthesis; + } + /** Add parentheses to the notes. */ + static buildAndAttach(notes) { + for (const note of notes) { + for (let i = 0; i < note.keys.length; i++) { + note.addModifier(new Parenthesis(_modifier__WEBPACK_IMPORTED_MODULE_1__.ModifierPosition.LEFT), i); + note.addModifier(new Parenthesis(_modifier__WEBPACK_IMPORTED_MODULE_1__.ModifierPosition.RIGHT), i); + } + } + } + /** Arrange parentheses inside a ModifierContext. */ + static format(parentheses, state) { + if (!parentheses || parentheses.length === 0) + return false; + let x_widthL = 0; + let x_widthR = 0; + for (let i = 0; i < parentheses.length; ++i) { + const parenthesis = parentheses[i]; + const note = parenthesis.getNote(); + const pos = parenthesis.getPosition(); + const index = parenthesis.checkIndex(); + let shift = 0; + if (pos === _modifier__WEBPACK_IMPORTED_MODULE_1__.ModifierPosition.RIGHT) { + shift = note.getRightParenthesisPx(index); + x_widthR = x_widthR > shift + parenthesis.width ? x_widthR : shift + parenthesis.width; + } + if (pos === _modifier__WEBPACK_IMPORTED_MODULE_1__.ModifierPosition.LEFT) { + shift = note.getLeftParenthesisPx(index); + x_widthL = x_widthL > shift + parenthesis.width ? x_widthL : shift + parenthesis.width; + } + parenthesis.setXShift(shift); + } + state.left_shift += x_widthL; + state.right_shift += x_widthR; + return true; + } + /** Set the associated note. */ + setNote(note) { + this.note = note; + this.point = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont().lookupMetric('parenthesis.default.point'); + this.setWidth(_tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont().lookupMetric('parenthesis.default.width')); + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_3__.isGraceNote)(note)) { + this.point = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont().lookupMetric('parenthesis.gracenote.point'); + this.setWidth(_tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont().lookupMetric('parenthesis.gracenote.width')); + } + return this; + } + /** Render the parenthesis. */ + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const start = note.getModifierStartXY(this.position, this.index, { forceFlagRight: true }); + const x = start.x + this.x_shift; + const y = start.y + this.y_shift; + if (this.position == _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.RIGHT) { + _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph.renderGlyph(ctx, x + 1, y, this.point, 'noteheadParenthesisRight', { + category: `noteHead.standard.noteheadParenthesisRight`, + }); + } + else if (this.position == _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.LEFT) { + _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph.renderGlyph(ctx, x - 2, y, this.point, 'noteheadParenthesisLeft', { + category: `noteHead.standard.noteheadParenthesisLeft`, + }); + } + } +} + + +/***/ }), + +/***/ "./src/parser.ts": +/*!***********************!*\ + !*** ./src/parser.ts ***! + \***********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Parser": () => (/* binding */ Parser) +/* harmony export */ }); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// A generic text parsing class for VexFlow. + +// To enable logging for this class. Set `Vex.Flow.Parser.DEBUG` to `true`. +// eslint-disable-next-line +function L(...args) { + if (Parser.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_0__.log)('Vex.Flow.Parser', args); +} +const NO_ERROR_POS = -1; +// Converts parser results into an easy to reference list that can be +// used in triggers. This function returns: +// - nested array in which the leaf elements are string or null +// - string (including empty strings) +// - null +function flattenMatches(r) { + if ('matchedString' in r) + return r.matchedString; // string + if ('results' in r) + return flattenMatches(r.results); + const results = r; + if (results.length === 1) + return flattenMatches(results[0]); + if (results.length === 0) + return null; + return results.map(flattenMatches); // nested array +} +// This is the base parser class. Given an arbitrary context-free grammar, it +// can parse any line and execute code when specific rules are met (e.g., +// when a string is terminated.) +class Parser { + // For an example of a simple grammar, take a look at tests/parser_tests.ts or + // the EasyScore grammar in easyscore.ts. + constructor(grammar) { + this.grammar = grammar; + this.line = ''; + this.pos = 0; + this.errorPos = NO_ERROR_POS; + } + // Parse `line` using current grammar. Returns `{success: true}` if the + // line parsed correctly, otherwise returns `{success: false, errorPos: N}` + // where `errorPos` is the location of the error in the string. + parse(line) { + this.line = line; + this.pos = 0; + this.errorPos = NO_ERROR_POS; + const result = this.expect(this.grammar.begin()); + result.errorPos = this.errorPos; + return result; + } + matchFail(returnPos) { + if (this.errorPos === NO_ERROR_POS) + this.errorPos = this.pos; + this.pos = returnPos; + } + matchSuccess() { + this.errorPos = NO_ERROR_POS; + } + // Look for `token` in this.line[this.pos], and return success + // if one is found. `token` is specified as a regular expression. + matchToken(token, noSpace = false) { + const regexp = noSpace ? new RegExp('^((' + token + '))') : new RegExp('^((' + token + ')\\s*)'); + const workingLine = this.line.slice(this.pos); + const result = workingLine.match(regexp); + if (result !== null) { + return { + success: true, + matchedString: result[2], + incrementPos: result[1].length, + pos: this.pos, + }; + } + else { + return { success: false, pos: this.pos }; + } + } + // Execute rule to match a sequence of tokens (or rules). If `maybe` is + // set, then return success even if the token is not found, but reset + // the position before exiting. + // TODO: expectOne(...) is never called with the `maybe` parameter. + expectOne(rule, maybe = false) { + const results = []; + const pos = this.pos; + let allMatches = true; + let oneMatch = false; + maybe = maybe === true || rule.maybe === true; + // Execute all sub rules in sequence. + if (rule.expect) { + for (const next of rule.expect) { + const localPos = this.pos; + const result = this.expect(next); + // If `rule.or` is set, then return success if any one + // of the subrules match, else all subrules must match. + if (result.success) { + results.push(result); + oneMatch = true; + if (rule.or) + break; + } + else { + allMatches = false; + if (!rule.or) { + this.pos = localPos; + break; + } + } + } + } + const gotOne = (rule.or && oneMatch) || allMatches; + const success = gotOne || maybe === true; + const numMatches = gotOne ? 1 : 0; + if (maybe && !gotOne) + this.pos = pos; + if (success) { + this.matchSuccess(); + } + else { + this.matchFail(pos); + } + return { success, results, numMatches }; + } + // Try to match multiple (one or more) instances of the rule. If `maybe` is set, + // then a failed match is also a success (but the position is reset). + expectOneOrMore(rule, maybe = false) { + const results = []; + const pos = this.pos; + let numMatches = 0; + let more = true; + do { + const result = this.expectOne(rule); + if (result.success && result.results) { + numMatches++; + results.push(result.results); + } + else { + more = false; + } + } while (more); + const success = numMatches > 0 || maybe === true; + if (maybe && !(numMatches > 0)) + this.pos = pos; + if (success) { + this.matchSuccess(); + } + else { + this.matchFail(pos); + } + return { success, results, numMatches }; + } + // Match zero or more instances of `rule`. Offloads to `expectOneOrMore`. + expectZeroOrMore(rule) { + return this.expectOneOrMore(rule, true); + } + // Execute the rule produced by the provided `rules` function. This + // offloads to one of the above matchers and consolidates the results. It is also + // responsible for executing any code triggered by the rule (in `rule.run`.) + expect(ruleFunc) { + L('Evaluating rule function:', ruleFunc); + if (!ruleFunc) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('Invalid rule function'); + } + let result; + // Get rule from Grammar class. + // expect(...) handles both lexing & parsing: + // - lexer rules produce tokens. + // - parser rules produce expressions which may trigger code via the + // { run: () => ... } trigger functions in easyscore.ts. + // These functions build the VexFlow objects that are displayed on screen. + const rule = ruleFunc.bind(this.grammar)(); + if (rule.token) { + // A lexer rule has a `token` property. + // Base case: parse the regex and throw an error if the + // line doesn't match. + result = this.matchToken(rule.token, rule.noSpace === true); + if (result.success) { + // Token match! Update position and throw away parsed portion + // of string. + this.pos += result.incrementPos; + } + } + else if (rule.expect) { + // A parser rule has an `expect` property. + if (rule.oneOrMore) { + result = this.expectOneOrMore(rule); + } + else if (rule.zeroOrMore) { + result = this.expectZeroOrMore(rule); + } + else { + result = this.expectOne(rule); + } + } + else { + L(rule); + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('Bad grammar! No `token` or `expect` property ' + rule); + } + // If there's a trigger attached to this rule, then run it. + // Make the matches accessible through `state.matches` in the + // `run: (state) => ...` trigger. + const matches = []; + result.matches = matches; + if (result.results) { + result.results.forEach((r) => matches.push(flattenMatches(r))); + } + if (rule.run && result.success) { + rule.run({ matches }); + } + return result; + } +} +Parser.DEBUG = false; + + +/***/ }), + +/***/ "./src/pedalmarking.ts": +/*!*****************************!*\ + !*** ./src/pedalmarking.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "PedalMarking": () => (/* binding */ PedalMarking) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + +// eslint-disable-next-line +function L(...args) { + if (PedalMarking.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_5__.log)('Vex.Flow.PedalMarking', args); +} +/** + * Draws a pedal glyph with the provided `name` on a rendering `context` + * at the coordinates `x` and `y. Takes into account the glyph data + * coordinate shifts. + */ +function drawPedalGlyph(name, context, x, y, point) { + const glyph_data = PedalMarking.GLYPHS[name]; + const glyph = new _glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph(glyph_data.code, point, { category: 'pedalMarking' }); + glyph.render(context, x + glyph_data.x_shift, y + glyph_data.y_shift); +} +/** + * PedalMarking implements different types of pedal markings. These notation + * elements indicate to the performer when to depress and release the a pedal. + * + * In order to create "Sostenuto", and "una corda" markings, you must set + * custom text for the release/depress pedal markings. + */ +class PedalMarking extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + constructor(notes) { + super(); + this.notes = notes; + this.type = PedalMarking.type.TEXT; + this.line = 0; + // Custom text for the release/depress markings + this.custom_depress_text = ''; + this.custom_release_text = ''; + this.resetFont(); + this.render_options = { + bracket_height: 10, + text_margin_right: 6, + bracket_line_width: 1, + color: 'black', + }; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_4__.Category.PedalMarking; + } + /** + * Create a sustain pedal marking. Returns the defaults PedalMarking. + * Which uses the traditional "Ped" and "*"" markings. + */ + static createSustain(notes) { + const pedal = new PedalMarking(notes); + return pedal; + } + /** Create a sostenuto pedal marking */ + static createSostenuto(notes) { + const pedal = new PedalMarking(notes); + pedal.setType(PedalMarking.type.MIXED); + pedal.setCustomText('Sost. Ped.'); + return pedal; + } + /** Create an una corda pedal marking */ + static createUnaCorda(notes) { + const pedal = new PedalMarking(notes); + pedal.setType(PedalMarking.type.TEXT); + pedal.setCustomText('una corda', 'tre corda'); + return pedal; + } + /** Set pedal type. */ + setType(type) { + type = typeof type === 'string' ? PedalMarking.typeString[type] : type; + if (type >= PedalMarking.type.TEXT && type <= PedalMarking.type.MIXED) { + this.type = type; + } + return this; + } + /** + * Set custom text for the `depress`/`release` pedal markings. No text is + * set if the parameter is falsy. + */ + setCustomText(depress, release) { + this.custom_depress_text = depress || ''; + this.custom_release_text = release || ''; + return this; + } + /** Set the staff line to render the markings on. */ + setLine(line) { + this.line = line; + return this; + } + /** Draw the bracket based pedal markings. */ + drawBracketed() { + const ctx = this.checkContext(); + let is_pedal_depressed = false; + let prev_x; + let prev_y; + // Iterate through each note + this.notes.forEach((note, index, notes) => { + // Each note triggers the opposite pedal action + is_pedal_depressed = !is_pedal_depressed; + // Get the initial coordinates for the note + const x = note.getAbsoluteX(); + const y = note.checkStave().getYForBottomText(this.line + 3); + // Throw if current note is positioned before the previous note + if (x < prev_x) { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('InvalidConfiguration', 'The notes provided must be in order of ascending x positions'); + } + // Determine if the previous or next note are the same + // as the current note. We need to keep track of this for + // when adjustments are made for the release+depress action + const next_is_same = notes[index + 1] === note; + const prev_is_same = notes[index - 1] === note; + let x_shift = 0; + const point = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric(`pedalMarking.${is_pedal_depressed ? 'down' : 'up'}.point`); + if (is_pedal_depressed) { + // Adjustment for release+depress + x_shift = prev_is_same ? 5 : 0; + if (this.type === PedalMarking.type.MIXED && !prev_is_same) { + // For MIXED style, start with text instead of bracket + if (this.custom_depress_text) { + // If we have custom text, use instead of the default "Ped" glyph + const text_width = ctx.measureText(this.custom_depress_text).width; + ctx.fillText(this.custom_depress_text, x - text_width / 2, y); + x_shift = text_width / 2 + this.render_options.text_margin_right; + } + else { + // Render the Ped glyph in position + drawPedalGlyph('pedal_depress', ctx, x, y, point); + x_shift = 20 + this.render_options.text_margin_right; + } + } + else { + // Draw start bracket + ctx.beginPath(); + ctx.moveTo(x, y - this.render_options.bracket_height); + ctx.lineTo(x + x_shift, y); + ctx.stroke(); + ctx.closePath(); + } + } + else { + // Adjustment for release+depress + x_shift = next_is_same ? -5 : 0; + // Draw end bracket + ctx.beginPath(); + ctx.moveTo(prev_x, prev_y); + ctx.lineTo(x + x_shift, y); + ctx.lineTo(x, y - this.render_options.bracket_height); + ctx.stroke(); + ctx.closePath(); + } + // Store previous coordinates + prev_x = x + x_shift; + prev_y = y; + }); + } + /** + * Draw the text based pedal markings. This defaults to the traditional + * "Ped" and "*"" symbols if no custom text has been provided. + */ + drawText() { + const ctx = this.checkContext(); + let is_pedal_depressed = false; + // Iterate through each note, placing glyphs or custom text accordingly + this.notes.forEach((note) => { + is_pedal_depressed = !is_pedal_depressed; + const stave = note.checkStave(); + const x = note.getAbsoluteX(); + const y = stave.getYForBottomText(this.line + 3); + const point = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric(`pedalMarking.${is_pedal_depressed ? 'down' : 'up'}.point`); + let text_width = 0; + if (is_pedal_depressed) { + if (this.custom_depress_text) { + text_width = ctx.measureText(this.custom_depress_text).width; + ctx.fillText(this.custom_depress_text, x - text_width / 2, y); + } + else { + drawPedalGlyph('pedal_depress', ctx, x, y, point); + } + } + else { + if (this.custom_release_text) { + text_width = ctx.measureText(this.custom_release_text).width; + ctx.fillText(this.custom_release_text, x - text_width / 2, y); + } + else { + drawPedalGlyph('pedal_release', ctx, x, y, point); + } + } + }); + } + /** Render the pedal marking in position on the rendering context. */ + draw() { + const ctx = this.checkContext(); + this.setRendered(); + ctx.save(); + ctx.setStrokeStyle(this.render_options.color); + ctx.setFillStyle(this.render_options.color); + ctx.setFont(this.textFont); + L('Rendering Pedal Marking'); + if (this.type === PedalMarking.type.BRACKET || this.type === PedalMarking.type.MIXED) { + ctx.setLineWidth(this.render_options.bracket_line_width); + this.drawBracketed(); + } + else if (this.type === PedalMarking.type.TEXT) { + this.drawText(); + } + ctx.restore(); + } +} +/** To enable logging for this class. Set `Vex.Flow.PedalMarking.DEBUG` to `true`. */ +PedalMarking.DEBUG = false; +PedalMarking.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_1__.Font.SERIF, + size: 12, + weight: _font__WEBPACK_IMPORTED_MODULE_1__.FontWeight.BOLD, + style: _font__WEBPACK_IMPORTED_MODULE_1__.FontStyle.ITALIC, +}; +/** Glyph data */ +PedalMarking.GLYPHS = { + pedal_depress: { + code: 'keyboardPedalPed', + x_shift: -10, + y_shift: 0, + }, + pedal_release: { + code: 'keyboardPedalUp', + x_shift: -2, + y_shift: 3, + }, +}; +/** Pedal type as number. */ +PedalMarking.type = { + TEXT: 1, + BRACKET: 2, + MIXED: 3, +}; +/** Pedal type as string. */ +PedalMarking.typeString = { + text: PedalMarking.type.TEXT, + bracket: PedalMarking.type.BRACKET, + mixed: PedalMarking.type.MIXED, +}; + + +/***/ }), + +/***/ "./src/registry.ts": +/*!*************************!*\ + !*** ./src/registry.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Registry": () => (/* binding */ Registry) +/* harmony export */ }); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// @author Mohit Cheppudira +// +// ## Description +// +// This file implements a registry for VexFlow elements. It allows users +// to track, query, and manage some subset of generated elements, and +// dynamically get and set attributes. +// +// There are two ways to register with a registry: +// +// 1) Explicitly call `registry.register(elem:Element, id?:string)`, or, +// 2) Call `Registry.enableDefaultRegistry(registry)` when ready, and all future +// elements will automatically register with it. +// +// Once an element is registered, selected attributes are tracked and indexed by +// the registry. This allows fast look up of elements by attributes like id, type, +// and class. + +// Indexes are represented as maps of maps of maps. This allows +// for both multi-labeling (e.g., an element can have multiple classes) +// and efficient lookup. +class Index { + constructor() { + this.id = {}; + this.type = {}; + this.class = {}; + } +} +class Registry { + constructor() { + this.index = new Index(); + } + static getDefaultRegistry() { + return Registry.defaultRegistry; + } + // If you call `enableDefaultRegistry`, any new elements will auto-register with + // the provided registry as soon as they're constructed. + static enableDefaultRegistry(registry) { + Registry.defaultRegistry = registry; + } + static disableDefaultRegistry() { + Registry.defaultRegistry = undefined; + } + clear() { + this.index = new Index(); + return this; + } + setIndexValue(name, value, id, elem) { + const index = this.index; + if (!index[name][value]) { + index[name][value] = {}; + } + index[name][value][id] = elem; + } + // Updates the indexes for element 'id'. If an element's attribute changes + // from A -> B, make sure to remove the element from A. + updateIndex({ id, name, value, oldValue }) { + const elem = this.getElementById(id); + if (oldValue !== undefined && this.index[name][oldValue]) { + delete this.index[name][oldValue][id]; + } + if (value && elem) { + this.setIndexValue(name, value, elem.getAttribute('id'), elem); + } + } + /** + * Register element `elem` with this registry. + * This adds the element to its index and watches it for attribute changes. + * @param elem + * @param id + * @returns this + */ + register(elem, id) { + id = id || elem.getAttribute('id'); + if (!id) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError("Can't add element without `id` attribute to registry"); + } + // Manually add id to index, then update other indexes. + elem.setAttribute('id', id); + this.setIndexValue('id', id, id, elem); + this.updateIndex({ id, name: 'type', value: elem.getAttribute('type'), oldValue: undefined }); + elem.onRegister(this); + return this; + } + getElementById(id) { + var _a, _b; + return (_b = (_a = this.index.id) === null || _a === void 0 ? void 0 : _a[id]) === null || _b === void 0 ? void 0 : _b[id]; // return undefined if the id is not found. + } + getElementsByAttribute(attribute, value) { + const index_attr = this.index[attribute]; + if (index_attr) { + const index_attr_val = index_attr[value]; + if (index_attr_val) { + const keys = Object.keys(index_attr_val); + return keys.map((k) => index_attr_val[k]); + } + } + return []; + } + getElementsByType(type) { + return this.getElementsByAttribute('type', type); + } + getElementsByClass(className) { + return this.getElementsByAttribute('class', className); + } + // This is called by the element when an attribute value changes. If an indexed + // attribute changes, then update the local index. + onUpdate(info) { + const allowedNames = ['id', 'type', 'class']; + if (allowedNames.includes(info.name)) { + this.updateIndex(info); + } + return this; + } +} + + +/***/ }), + +/***/ "./src/rendercontext.ts": +/*!******************************!*\ + !*** ./src/rendercontext.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "RenderContext": () => (/* binding */ RenderContext), +/* harmony export */ "drawDot": () => (/* binding */ drawDot) +/* harmony export */ }); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2021. +// MIT License + +class RenderContext { + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_0__.Category.RenderContext; + } + set font(f) { + this.setFont(f); + } + get font() { + return this.getFont(); + } + /** + * This is kept for backwards compatibility with 3.0.9. + * @deprecated use `setFont(...)` instead since it now supports CSS font shorthand. + */ + setRawFont(f) { + this.setFont(f); + return this; + } +} +/** + * Draw a tiny dot marker on the specified context. A great debugging aid. + * @param ctx context + * @param x dot x coordinate + * @param y dot y coordinate + * @param color + */ +function drawDot(ctx, x, y, color = '#F55') { + ctx.save(); + ctx.setFillStyle(color); + // draw a circle + ctx.beginPath(); + ctx.arc(x, y, 3, 0, Math.PI * 2, false); + ctx.closePath(); + ctx.fill(); + ctx.restore(); +} + + +/***/ }), + +/***/ "./src/renderer.ts": +/*!*************************!*\ + !*** ./src/renderer.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "RendererBackends": () => (/* binding */ RendererBackends), +/* harmony export */ "RendererLineEndType": () => (/* binding */ RendererLineEndType), +/* harmony export */ "Renderer": () => (/* binding */ Renderer) +/* harmony export */ }); +/* harmony import */ var _canvascontext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./canvascontext */ "./src/canvascontext.ts"); +/* harmony import */ var _svgcontext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./svgcontext */ "./src/svgcontext.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +/* harmony import */ var _web__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./web */ "./src/web.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + +var RendererBackends; +(function (RendererBackends) { + RendererBackends[RendererBackends["CANVAS"] = 1] = "CANVAS"; + RendererBackends[RendererBackends["SVG"] = 2] = "SVG"; +})(RendererBackends || (RendererBackends = {})); +// End of line types +var RendererLineEndType; +(function (RendererLineEndType) { + RendererLineEndType[RendererLineEndType["NONE"] = 1] = "NONE"; + RendererLineEndType[RendererLineEndType["UP"] = 2] = "UP"; + RendererLineEndType[RendererLineEndType["DOWN"] = 3] = "DOWN"; +})(RendererLineEndType || (RendererLineEndType = {})); +/** + * Support Canvas & SVG rendering contexts. + */ +class Renderer { + constructor(arg0, arg1) { + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_2__.isRenderContext)(arg0)) { + // The user has provided what looks like a RenderContext, let's just use it. + this.ctx = arg0; + } + else { + if (arg1 === undefined) { + // The backend must be specified if the render context isn't directly provided. + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('InvalidArgument', 'Missing backend argument'); + } + const backend = arg1; + let element; + if (typeof arg0 == 'string') { + const maybeElement = document.getElementById(arg0); + if (!maybeElement) { + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('BadElementId', `Can't find element with ID "${maybeElement}"`); + } + element = maybeElement; + } + else { + element = arg0; + } + // Verify backend and create context + if (backend === Renderer.Backends.CANVAS) { + if (!(0,_web__WEBPACK_IMPORTED_MODULE_4__.isHTMLCanvas)(element)) { + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('BadElement', 'CANVAS context requires an HTMLCanvasElement.'); + } + const context = element.getContext('2d'); + if (!context) { + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('BadElement', "Can't get canvas context"); + } + this.ctx = new _canvascontext__WEBPACK_IMPORTED_MODULE_0__.CanvasContext(context); + } + else if (backend === Renderer.Backends.SVG) { + if (!(0,_web__WEBPACK_IMPORTED_MODULE_4__.isHTMLDiv)(element)) { + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('BadElement', 'SVG context requires an HTMLDivElement.'); + } + this.ctx = new _svgcontext__WEBPACK_IMPORTED_MODULE_1__.SVGContext(element); + } + else { + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('InvalidBackend', `No support for backend: ${backend}`); + } + } + } + static buildContext(elementId, backend, width, height, background = '#FFF') { + const renderer = new Renderer(elementId, backend); + if (width && height) { + renderer.resize(width, height); + } + const ctx = renderer.getContext(); + ctx.setBackgroundFillStyle(background); + Renderer.lastContext = ctx; + return ctx; + } + static getCanvasContext(elementId, width, height, background) { + return Renderer.buildContext(elementId, Renderer.Backends.CANVAS, width, height, background); + } + static getSVGContext(elementId, width, height, background) { + return Renderer.buildContext(elementId, Renderer.Backends.SVG, width, height, background); + } + // Draw a dashed line (horizontal, vertical or diagonal + // dashPattern = [3,3] draws a 3 pixel dash followed by a three pixel space. + // setting the second number to 0 draws a solid line. + static drawDashedLine(context, fromX, fromY, toX, toY, dashPattern) { + context.beginPath(); + const dx = toX - fromX; + const dy = toY - fromY; + const angle = Math.atan2(dy, dx); + let x = fromX; + let y = fromY; + context.moveTo(fromX, fromY); + let idx = 0; + let draw = true; + while (!((dx < 0 ? x <= toX : x >= toX) && (dy < 0 ? y <= toY : y >= toY))) { + const dashLength = dashPattern[idx++ % dashPattern.length]; + const nx = x + Math.cos(angle) * dashLength; + x = dx < 0 ? Math.max(toX, nx) : Math.min(toX, nx); + const ny = y + Math.sin(angle) * dashLength; + y = dy < 0 ? Math.max(toY, ny) : Math.min(toY, ny); + if (draw) { + context.lineTo(x, y); + } + else { + context.moveTo(x, y); + } + draw = !draw; + } + context.closePath(); + context.stroke(); + } + resize(width, height) { + this.ctx.resize(width, height); + return this; + } + getContext() { + return this.ctx; + } +} +Renderer.Backends = RendererBackends; +Renderer.LineEndType = RendererLineEndType; +// Used by vexflow_test_helpers.ts +// Should this be private? +// Can we do this in a cleaner way? +Renderer.lastContext = undefined; + + +/***/ }), + +/***/ "./src/repeatnote.ts": +/*!***************************!*\ + !*** ./src/repeatnote.ts ***! + \***************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "RepeatNote": () => (/* binding */ RepeatNote) +/* harmony export */ }); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _glyphnote__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyphnote */ "./src/glyphnote.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. + + + + +// Map `type` to SMuFL glyph code. +const CODES = { + '1': 'repeat1Bar', + '2': 'repeat2Bars', + '4': 'repeat4Bars', + slash: 'repeatBarSlash', +}; +class RepeatNote extends _glyphnote__WEBPACK_IMPORTED_MODULE_1__.GlyphNote { + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.RepeatNote; + } + constructor(type, noteStruct, options) { + super(undefined, Object.assign({ duration: 'q', align_center: type !== 'slash' }, noteStruct), options); + const glyphCode = CODES[type] || 'repeat1Bar'; + const glyph = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph(glyphCode, _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont().lookupMetric('repeatNote.point', 40), { + category: 'repeatNote', + }); + this.setGlyph(glyph); + } +} + + +/***/ }), + +/***/ "./src/stave.ts": +/*!**********************!*\ + !*** ./src/stave.ts ***! + \**********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Stave": () => (/* binding */ Stave) +/* harmony export */ }); +/* harmony import */ var _boundingbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./boundingbox */ "./src/boundingbox.ts"); +/* harmony import */ var _clef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./clef */ "./src/clef.ts"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _keysignature__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./keysignature */ "./src/keysignature.ts"); +/* harmony import */ var _stavebarline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./stavebarline */ "./src/stavebarline.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _staverepetition__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./staverepetition */ "./src/staverepetition.ts"); +/* harmony import */ var _stavesection__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./stavesection */ "./src/stavesection.ts"); +/* harmony import */ var _stavetempo__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./stavetempo */ "./src/stavetempo.ts"); +/* harmony import */ var _stavetext__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./stavetext */ "./src/stavetext.ts"); +/* harmony import */ var _stavevolta__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./stavevolta */ "./src/stavevolta.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _timesignature__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./timesignature */ "./src/timesignature.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + + + + + + + + + + + +// Used by Stave.format() to sort the modifiers at the beginning and end of a stave. +// The keys (computed property names) match the CATEGORY property in the +// Barline, Clef, KeySignature, TimeSignature classes. +const SORT_ORDER_BEG_MODIFIERS = { + [_stavebarline__WEBPACK_IMPORTED_MODULE_5__.Barline.CATEGORY]: 0, + [_clef__WEBPACK_IMPORTED_MODULE_1__.Clef.CATEGORY]: 1, + [_keysignature__WEBPACK_IMPORTED_MODULE_4__.KeySignature.CATEGORY]: 2, + [_timesignature__WEBPACK_IMPORTED_MODULE_13__.TimeSignature.CATEGORY]: 3, +}; +const SORT_ORDER_END_MODIFIERS = { + [_timesignature__WEBPACK_IMPORTED_MODULE_13__.TimeSignature.CATEGORY]: 0, + [_keysignature__WEBPACK_IMPORTED_MODULE_4__.KeySignature.CATEGORY]: 1, + [_stavebarline__WEBPACK_IMPORTED_MODULE_5__.Barline.CATEGORY]: 2, + [_clef__WEBPACK_IMPORTED_MODULE_1__.Clef.CATEGORY]: 3, +}; +class Stave extends _element__WEBPACK_IMPORTED_MODULE_2__.Element { + constructor(x, y, width, options) { + super(); + // Initialized by the constructor via this.resetLines(). + this.height = 0; + this.x = x; + this.y = y; + this.width = width; + this.formatted = false; + this.start_x = x + 5; + this.end_x = x + width; + this.modifiers = []; // stave modifiers (clef, key, time, barlines, coda, segno, etc.) + this.measure = 0; + this.clef = 'treble'; + this.endClef = undefined; + this.resetFont(); + this.options = Object.assign({ vertical_bar_width: 10, num_lines: 5, fill_style: '#999999', left_bar: true, right_bar: true, spacing_between_lines_px: _tables__WEBPACK_IMPORTED_MODULE_12__.Tables.STAVE_LINE_DISTANCE, space_above_staff_ln: 4, space_below_staff_ln: 4, top_text_position: 1, bottom_text_position: 4, line_config: [] }, options); + this.bounds = { x: this.x, y: this.y, w: this.width, h: 0 }; + this.defaultLedgerLineStyle = { strokeStyle: '#444', lineWidth: 1.4 }; + this.resetLines(); + // beg bar + this.addModifier(new _stavebarline__WEBPACK_IMPORTED_MODULE_5__.Barline(this.options.left_bar ? _stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.SINGLE : _stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.NONE)); + // end bar + this.addEndModifier(new _stavebarline__WEBPACK_IMPORTED_MODULE_5__.Barline(this.options.right_bar ? _stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.SINGLE : _stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.NONE)); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Stave; + } + // This is the sum of the padding that normally goes on left + right of a stave during + // drawing. Used to size staves correctly with content width. + static get defaultPadding() { + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_12__.Tables.currentMusicFont(); + return musicFont.lookupMetric('stave.padding') + musicFont.lookupMetric('stave.endPaddingMax'); + } + // Right padding, used by system if startX is already determined. + static get rightPadding() { + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_12__.Tables.currentMusicFont(); + return musicFont.lookupMetric('stave.endPaddingMax'); + } + /** Set default style for ledger lines. */ + setDefaultLedgerLineStyle(style) { + this.defaultLedgerLineStyle = style; + } + /** Get default style for ledger lines. */ + getDefaultLedgerLineStyle() { + return Object.assign(Object.assign({}, this.getStyle()), this.defaultLedgerLineStyle); + } + space(spacing) { + return this.options.spacing_between_lines_px * spacing; + } + resetLines() { + this.options.line_config = []; + for (let i = 0; i < this.options.num_lines; i++) { + this.options.line_config.push({ visible: true }); + } + this.height = (this.options.num_lines + this.options.space_above_staff_ln) * this.options.spacing_between_lines_px; + this.options.bottom_text_position = this.options.num_lines; + } + setNoteStartX(x) { + if (!this.formatted) + this.format(); + this.start_x = x; + return this; + } + getNoteStartX() { + if (!this.formatted) + this.format(); + return this.start_x; + } + getNoteEndX() { + if (!this.formatted) + this.format(); + return this.end_x; + } + getTieStartX() { + return this.start_x; + } + getTieEndX() { + return this.end_x; + } + getX() { + return this.x; + } + getNumLines() { + return this.options.num_lines; + } + setNumLines(n) { + this.options.num_lines = n; + this.resetLines(); + return this; + } + setY(y) { + this.y = y; + return this; + } + getY() { + return this.y; + } + getTopLineTopY() { + return this.getYForLine(0) - _tables__WEBPACK_IMPORTED_MODULE_12__.Tables.STAVE_LINE_THICKNESS / 2; + } + getBottomLineBottomY() { + return this.getYForLine(this.getNumLines() - 1) + _tables__WEBPACK_IMPORTED_MODULE_12__.Tables.STAVE_LINE_THICKNESS / 2; + } + setX(x) { + const shift = x - this.x; + this.formatted = false; + this.x = x; + this.start_x += shift; + this.end_x += shift; + for (let i = 0; i < this.modifiers.length; i++) { + const mod = this.modifiers[i]; + mod.setX(mod.getX() + shift); + } + return this; + } + setWidth(width) { + this.formatted = false; + this.width = width; + this.end_x = this.x + width; + // reset the x position of the end barline (TODO(0xfe): This makes no sense) + // this.modifiers[1].setX(this.end_x); + return this; + } + getWidth() { + return this.width; + } + getStyle() { + return Object.assign({ fillStyle: this.options.fill_style, strokeStyle: this.options.fill_style, lineWidth: _tables__WEBPACK_IMPORTED_MODULE_12__.Tables.STAVE_LINE_THICKNESS }, super.getStyle()); + } + /** + * Set the measure number of this Stave. + */ + setMeasure(measure) { + this.measure = measure; + return this; + } + /** + * Return the measure number of this Stave. + */ + getMeasure() { + return this.measure; + } + /** + * Gets the pixels to shift from the beginning of the stave + * following the modifier at the provided index + * @param {Number} index The index from which to determine the shift + * @return {Number} The amount of pixels shifted + */ + getModifierXShift(index = 0) { + if (typeof index !== 'number') { + throw new _util__WEBPACK_IMPORTED_MODULE_15__.RuntimeError('InvalidIndex', 'Must be of number type'); + } + if (!this.formatted) + this.format(); + if (this.getModifiers(_stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.BEGIN).length === 1) { + return 0; + } + // for right position modifiers zero shift seems correct, see 'Volta + Modifier Measure Test' + if (this.modifiers[index].getPosition() === _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.RIGHT) { + return 0; + } + let start_x = this.start_x - this.x; + const begBarline = this.modifiers[0]; + if (begBarline.getType() === _stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.REPEAT_BEGIN && start_x > begBarline.getWidth()) { + start_x -= begBarline.getWidth(); + } + return start_x; + } + /** Coda & Segno Symbol functions */ + setRepetitionType(type, yShift = 0) { + this.modifiers.push(new _staverepetition__WEBPACK_IMPORTED_MODULE_7__.Repetition(type, this.x, yShift)); + return this; + } + // Volta functions + setVoltaType(type, number_t, y) { + this.modifiers.push(new _stavevolta__WEBPACK_IMPORTED_MODULE_11__.Volta(type, number_t, this.x, y)); + return this; + } + // Section functions + setSection(section, y, xOffset = 0, fontSize, drawRect = true) { + const staveSection = new _stavesection__WEBPACK_IMPORTED_MODULE_8__.StaveSection(section, this.x + xOffset, y, drawRect); + if (fontSize) + staveSection.setFontSize(fontSize); + this.modifiers.push(staveSection); + return this; + } + // Tempo functions + setTempo(tempo, y) { + this.modifiers.push(new _stavetempo__WEBPACK_IMPORTED_MODULE_9__.StaveTempo(tempo, this.x, y)); + return this; + } + // Text functions + setText(text, position, options = {}) { + this.modifiers.push(new _stavetext__WEBPACK_IMPORTED_MODULE_10__.StaveText(text, position, options)); + return this; + } + getHeight() { + return this.height; + } + getSpacingBetweenLines() { + return this.options.spacing_between_lines_px; + } + getBoundingBox() { + return new _boundingbox__WEBPACK_IMPORTED_MODULE_0__.BoundingBox(this.x, this.y, this.width, this.getBottomY() - this.y); + } + getBottomY() { + const options = this.options; + const spacing = options.spacing_between_lines_px; + const score_bottom = this.getYForLine(options.num_lines) + options.space_below_staff_ln * spacing; + return score_bottom; + } + getBottomLineY() { + return this.getYForLine(this.options.num_lines); + } + // This returns + /** @returns the y for the *center* of a staff line */ + getYForLine(line) { + const options = this.options; + const spacing = options.spacing_between_lines_px; + const headroom = options.space_above_staff_ln; + const y = this.y + line * spacing + headroom * spacing; + return y; + } + getLineForY(y) { + // Does the reverse of getYForLine - somewhat dumb and just calls + // getYForLine until the right value is reaches + const options = this.options; + const spacing = options.spacing_between_lines_px; + const headroom = options.space_above_staff_ln; + return (y - this.y) / spacing - headroom; + } + getYForTopText(line = 0) { + return this.getYForLine(-line - this.options.top_text_position); + } + getYForBottomText(line = 0) { + return this.getYForLine(this.options.bottom_text_position + line); + } + getYForNote(line) { + const options = this.options; + const spacing = options.spacing_between_lines_px; + const headroom = options.space_above_staff_ln; + return this.y + headroom * spacing + 5 * spacing - line * spacing; + } + getYForGlyphs() { + return this.getYForLine(3); + } + // This method adds a stave modifier to the stave. Note that the first two + // modifiers (BarLines) are automatically added upon construction. + addModifier(modifier, position) { + if (position !== undefined) { + modifier.setPosition(position); + } + modifier.setStave(this); + this.formatted = false; + this.modifiers.push(modifier); + return this; + } + addEndModifier(modifier) { + this.addModifier(modifier, _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.END); + return this; + } + // Bar Line functions + setBegBarType(type) { + // Only valid bar types at beginning of stave is none, single or begin repeat + const { SINGLE, REPEAT_BEGIN, NONE } = _stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType; + if (type === SINGLE || type === REPEAT_BEGIN || type === NONE) { + this.modifiers[0].setType(type); + this.formatted = false; + } + return this; + } + setEndBarType(type) { + // Repeat end not valid at end of stave + if (type !== _stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.REPEAT_BEGIN) { + this.modifiers[1].setType(type); + this.formatted = false; + } + return this; + } + setClef(clefSpec, size, annotation, position) { + if (position === undefined) { + position = _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.BEGIN; + } + if (position === _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.END) { + this.endClef = clefSpec; + } + else { + this.clef = clefSpec; + } + const clefs = this.getModifiers(position, _clef__WEBPACK_IMPORTED_MODULE_1__.Clef.CATEGORY); + if (clefs.length === 0) { + this.addClef(clefSpec, size, annotation, position); + } + else { + clefs[0].setType(clefSpec, size, annotation); + } + return this; + } + getClef() { + return this.clef; + } + setEndClef(clefSpec, size, annotation) { + this.setClef(clefSpec, size, annotation, _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.END); + return this; + } + getEndClef() { + return this.endClef; + } + setKeySignature(keySpec, cancelKeySpec, position) { + if (position === undefined) { + position = _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.BEGIN; + } + const keySignatures = this.getModifiers(position, _keysignature__WEBPACK_IMPORTED_MODULE_4__.KeySignature.CATEGORY); + if (keySignatures.length === 0) { + this.addKeySignature(keySpec, cancelKeySpec, position); + } + else { + keySignatures[0].setKeySig(keySpec, cancelKeySpec); + } + return this; + } + setEndKeySignature(keySpec, cancelKeySpec) { + this.setKeySignature(keySpec, cancelKeySpec, _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.END); + return this; + } + setTimeSignature(timeSpec, customPadding, position) { + if (position === undefined) { + position = _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.BEGIN; + } + const timeSignatures = this.getModifiers(position, _timesignature__WEBPACK_IMPORTED_MODULE_13__.TimeSignature.CATEGORY); + if (timeSignatures.length === 0) { + this.addTimeSignature(timeSpec, customPadding, position); + } + else { + timeSignatures[0].setTimeSig(timeSpec); + } + return this; + } + setEndTimeSignature(timeSpec, customPadding) { + this.setTimeSignature(timeSpec, customPadding, _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.END); + return this; + } + /** + * Add a key signature to the stave. + * + * Example: + * `stave.addKeySignature('Db');` + * @param keySpec new key specification `[A-G][b|#]?` + * @param cancelKeySpec + * @param position + * @returns + */ + addKeySignature(keySpec, cancelKeySpec, position) { + if (position === undefined) { + position = _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.BEGIN; + } + this.addModifier(new _keysignature__WEBPACK_IMPORTED_MODULE_4__.KeySignature(keySpec, cancelKeySpec).setPosition(position), position); + return this; + } + /** + * Add a clef to the stave. + * + * Example: + * + * stave.addClef('treble') + * @param clef clef (treble|bass|...) see {@link Clef.types} + * @param size + * @param annotation + * @param position + * @returns + */ + addClef(clef, size, annotation, position) { + if (position === undefined || position === _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.BEGIN) { + this.clef = clef; + } + else if (position === _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.END) { + this.endClef = clef; + } + this.addModifier(new _clef__WEBPACK_IMPORTED_MODULE_1__.Clef(clef, size, annotation), position); + return this; + } + addEndClef(clef, size, annotation) { + this.addClef(clef, size, annotation, _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.END); + return this; + } + /** + * Add a time signature to the stave + * + * Example: + * + * `stave.addTimeSignature('4/4');` + * @param timeSpec time signature specification `(C\||C|\d\/\d)` + * @param customPadding + * @param position + * @returns + */ + addTimeSignature(timeSpec, customPadding, position) { + this.addModifier(new _timesignature__WEBPACK_IMPORTED_MODULE_13__.TimeSignature(timeSpec, customPadding), position); + return this; + } + addEndTimeSignature(timeSpec, customPadding) { + this.addTimeSignature(timeSpec, customPadding, _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.END); + return this; + } + // Deprecated + addTrebleGlyph() { + this.addClef('treble'); + return this; + } + /** + * @param position + * @param category + * @returns array of StaveModifiers that match the provided position and category. + */ + getModifiers(position, category) { + const noPosition = position === undefined; + const noCategory = category === undefined; + if (noPosition && noCategory) { + return this.modifiers; + } + else if (noPosition) { + // A category was provided. + return this.modifiers.filter((m) => category === m.getCategory()); + } + else if (noCategory) { + // A position was provided. + return this.modifiers.filter((m) => position === m.getPosition()); + } + else { + // Both position and category were provided! + return this.modifiers.filter((m) => position === m.getPosition() && category === m.getCategory()); + } + } + /** + * Use the modifier's `getCategory()` as a key for the `order` array. + * The retrieved value is used to sort modifiers from left to right (0 to to 3). + */ + sortByCategory(items, order) { + for (let i = items.length - 1; i >= 0; i--) { + for (let j = 0; j < i; j++) { + if (order[items[j].getCategory()] > order[items[j + 1].getCategory()]) { + const temp = items[j]; + items[j] = items[j + 1]; + items[j + 1] = temp; + } + } + } + } + format() { + const begBarline = this.modifiers[0]; + const endBarline = this.modifiers[1]; + const begModifiers = this.getModifiers(_stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.BEGIN); + const endModifiers = this.getModifiers(_stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.END); + this.sortByCategory(begModifiers, SORT_ORDER_BEG_MODIFIERS); + this.sortByCategory(endModifiers, SORT_ORDER_END_MODIFIERS); + if (begModifiers.length > 1 && begBarline.getType() === _stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.REPEAT_BEGIN) { + begModifiers.push(begModifiers.splice(0, 1)[0]); + begModifiers.splice(0, 0, new _stavebarline__WEBPACK_IMPORTED_MODULE_5__.Barline(_stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.SINGLE)); + } + if (endModifiers.indexOf(endBarline) > 0) { + endModifiers.splice(0, 0, new _stavebarline__WEBPACK_IMPORTED_MODULE_5__.Barline(_stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.NONE)); + } + let width; + let padding; + let modifier; + let offset = 0; + let x = this.x; + for (let i = 0; i < begModifiers.length; i++) { + modifier = begModifiers[i]; + padding = modifier.getPadding(i + offset); + width = modifier.getWidth(); + x += padding; + modifier.setX(x); + x += width; + if (padding + width === 0) + offset--; + } + this.start_x = x; + x = this.x + this.width; + const widths = { + left: 0, + right: 0, + paddingRight: 0, + paddingLeft: 0, + }; + let lastBarlineIdx = 0; + for (let i = 0; i < endModifiers.length; i++) { + modifier = endModifiers[i]; + lastBarlineIdx = (0,_typeguard__WEBPACK_IMPORTED_MODULE_14__.isBarline)(modifier) ? i : lastBarlineIdx; + widths.right = 0; + widths.left = 0; + widths.paddingRight = 0; + widths.paddingLeft = 0; + const layoutMetrics = modifier.getLayoutMetrics(); + if (layoutMetrics) { + if (i !== 0) { + widths.right = layoutMetrics.xMax || 0; + widths.paddingRight = layoutMetrics.paddingRight || 0; + } + widths.left = -layoutMetrics.xMin || 0; + widths.paddingLeft = layoutMetrics.paddingLeft || 0; + if (i === endModifiers.length - 1) { + widths.paddingLeft = 0; + } + } + else { + widths.paddingRight = modifier.getPadding(i - lastBarlineIdx); + if (i !== 0) { + widths.right = modifier.getWidth(); + } + if (i === 0) { + widths.left = modifier.getWidth(); + } + } + x -= widths.paddingRight; + x -= widths.right; + modifier.setX(x); + x -= widths.left; + x -= widths.paddingLeft; + } + this.end_x = endModifiers.length === 1 ? this.x + this.width : x; + this.formatted = true; + } + /** + * All drawing functions below need the context to be set. + */ + draw() { + const ctx = this.checkContext(); + this.setRendered(); + ctx.openGroup('stave', this.getAttribute('id')); + if (!this.formatted) + this.format(); + const num_lines = this.options.num_lines; + const width = this.width; + const x = this.x; + let y; + // Render lines + for (let line = 0; line < num_lines; line++) { + y = this.getYForLine(line); + this.applyStyle(); + if (this.options.line_config[line].visible) { + ctx.beginPath(); + ctx.moveTo(x, y); + ctx.lineTo(x + width, y); + ctx.stroke(); + } + this.restoreStyle(); + } + // Draw the modifiers (bar lines, coda, segno, repeat brackets, etc.) + for (let i = 0; i < this.modifiers.length; i++) { + const modifier = this.modifiers[i]; + // Only draw modifier if it has a draw function + if (typeof modifier.draw === 'function') { + modifier.applyStyle(ctx); + modifier.draw(this, this.getModifierXShift(i)); + modifier.restoreStyle(ctx); + } + } + // Render measure numbers + if (this.measure > 0) { + ctx.save(); + ctx.setFont(this.textFont); + const textWidth = ctx.measureText('' + this.measure).width; + y = this.getYForTopText(0) + 3; + ctx.fillText('' + this.measure, this.x - textWidth / 2, y); + ctx.restore(); + } + ctx.closeGroup(); + return this; + } + getVerticalBarWidth() { + return this.options.vertical_bar_width; + } + /** + * Get the current configuration for the Stave. + * @return {Array} An array of configuration objects. + */ + getConfigForLines() { + return this.options.line_config; + } + /** + * Configure properties of the lines in the Stave + * @param line_number The index of the line to configure. + * @param line_config An configuration object for the specified line. + * @throws RuntimeError "StaveConfigError" When the specified line number is out of + * range of the number of lines specified in the constructor. + */ + setConfigForLine(line_number, line_config) { + if (line_number >= this.options.num_lines || line_number < 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_15__.RuntimeError('StaveConfigError', 'The line number must be within the range of the number of lines in the Stave.'); + } + if (line_config.visible === undefined) { + throw new _util__WEBPACK_IMPORTED_MODULE_15__.RuntimeError('StaveConfigError', "The line configuration object is missing the 'visible' property."); + } + if (typeof line_config.visible !== 'boolean') { + throw new _util__WEBPACK_IMPORTED_MODULE_15__.RuntimeError('StaveConfigError', "The line configuration objects 'visible' property must be true or false."); + } + this.options.line_config[line_number] = line_config; + return this; + } + /** + * Set the staff line configuration array for all of the lines at once. + * @param lines_configuration An array of line configuration objects. These objects + * are of the same format as the single one passed in to setLineConfiguration(). + * The caller can set null for any line config entry if it is desired that the default be used + * @throws RuntimeError "StaveConfigError" When the lines_configuration array does not have + * exactly the same number of elements as the num_lines configuration object set in + * the constructor. + */ + setConfigForLines(lines_configuration) { + if (lines_configuration.length !== this.options.num_lines) { + throw new _util__WEBPACK_IMPORTED_MODULE_15__.RuntimeError('StaveConfigError', 'The length of the lines configuration array must match the number of lines in the Stave'); + } + // Make sure the defaults are present in case an incomplete set of + // configuration options were supplied. + // eslint-disable-next-line + for (const line_config in lines_configuration) { + // Allow '{}' to be used if the caller just wants the default for a particular node. + if (lines_configuration[line_config].visible == undefined) { + lines_configuration[line_config] = this.options.line_config[line_config]; + } + this.options.line_config[line_config] = Object.assign(Object.assign({}, this.options.line_config[line_config]), lines_configuration[line_config]); + } + this.options.line_config = lines_configuration; + return this; + } + static formatBegModifiers(staves) { + let maxX = 0; + // align note start + staves.forEach((stave) => { + if (stave.getNoteStartX() > maxX) + maxX = stave.getNoteStartX(); + }); + staves.forEach((stave) => { + stave.setNoteStartX(maxX); + }); + maxX = 0; + // align REPEAT_BEGIN + staves.forEach((stave) => { + const modifiers = stave.getModifiers(_stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.BEGIN, _typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Barline); + modifiers.forEach((modifier) => { + if (modifier.getType() == _stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.REPEAT_BEGIN) + if (modifier.getX() > maxX) + maxX = modifier.getX(); + }); + }); + staves.forEach((stave) => { + const modifiers = stave.getModifiers(_stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.BEGIN, _typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Barline); + modifiers.forEach((modifier) => { + if (modifier.getType() == _stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.REPEAT_BEGIN) + modifier.setX(maxX); + }); + }); + maxX = 0; + // Align time signatures + staves.forEach((stave) => { + const modifiers = stave.getModifiers(_stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.BEGIN, _typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.TimeSignature); + modifiers.forEach((modifier) => { + if (modifier.getX() > maxX) + maxX = modifier.getX(); + }); + }); + staves.forEach((stave) => { + const modifiers = stave.getModifiers(_stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.BEGIN, _typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.TimeSignature); + modifiers.forEach((modifier) => { + modifier.setX(maxX); + }); + }); + } +} +Stave.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_3__.Font.SANS_SERIF, + size: 8, + weight: _font__WEBPACK_IMPORTED_MODULE_3__.FontWeight.NORMAL, + style: _font__WEBPACK_IMPORTED_MODULE_3__.FontStyle.NORMAL, +}; + + +/***/ }), + +/***/ "./src/stavebarline.ts": +/*!*****************************!*\ + !*** ./src/stavebarline.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "BarlineType": () => (/* binding */ BarlineType), +/* harmony export */ "Barline": () => (/* binding */ Barline) +/* harmony export */ }); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// Author Larry Kuhns 2011 + + + +var BarlineType; +(function (BarlineType) { + BarlineType[BarlineType["SINGLE"] = 1] = "SINGLE"; + BarlineType[BarlineType["DOUBLE"] = 2] = "DOUBLE"; + BarlineType[BarlineType["END"] = 3] = "END"; + BarlineType[BarlineType["REPEAT_BEGIN"] = 4] = "REPEAT_BEGIN"; + BarlineType[BarlineType["REPEAT_END"] = 5] = "REPEAT_END"; + BarlineType[BarlineType["REPEAT_BOTH"] = 6] = "REPEAT_BOTH"; + BarlineType[BarlineType["NONE"] = 7] = "NONE"; +})(BarlineType || (BarlineType = {})); +class Barline extends _stavemodifier__WEBPACK_IMPORTED_MODULE_0__.StaveModifier { + constructor(type) { + super(); + this.thickness = _tables__WEBPACK_IMPORTED_MODULE_1__.Tables.STAVE_LINE_THICKNESS; + const TYPE = BarlineType; + this.widths = {}; + this.widths[TYPE.SINGLE] = 5; + this.widths[TYPE.DOUBLE] = 5; + this.widths[TYPE.END] = 5; + this.widths[TYPE.REPEAT_BEGIN] = 5; + this.widths[TYPE.REPEAT_END] = 5; + this.widths[TYPE.REPEAT_BOTH] = 5; + this.widths[TYPE.NONE] = 5; + this.paddings = {}; + this.paddings[TYPE.SINGLE] = 0; + this.paddings[TYPE.DOUBLE] = 0; + this.paddings[TYPE.END] = 0; + this.paddings[TYPE.REPEAT_BEGIN] = 15; + this.paddings[TYPE.REPEAT_END] = 15; + this.paddings[TYPE.REPEAT_BOTH] = 15; + this.paddings[TYPE.NONE] = 0; + this.layoutMetricsMap = {}; + this.layoutMetricsMap[TYPE.SINGLE] = { + xMin: 0, + xMax: 1, + paddingLeft: 5, + paddingRight: 5, + }; + this.layoutMetricsMap[TYPE.DOUBLE] = { + xMin: -3, + xMax: 1, + paddingLeft: 5, + paddingRight: 5, + }; + this.layoutMetricsMap[TYPE.END] = { + xMin: -5, + xMax: 1, + paddingLeft: 5, + paddingRight: 5, + }; + this.layoutMetricsMap[TYPE.REPEAT_END] = { + xMin: -10, + xMax: 1, + paddingLeft: 5, + paddingRight: 5, + }; + this.layoutMetricsMap[TYPE.REPEAT_BEGIN] = { + xMin: -2, + xMax: 10, + paddingLeft: 5, + paddingRight: 5, + }; + this.layoutMetricsMap[TYPE.REPEAT_BOTH] = { + xMin: -10, + xMax: 10, + paddingLeft: 5, + paddingRight: 5, + }; + this.layoutMetricsMap[TYPE.NONE] = { + xMin: 0, + xMax: 0, + paddingLeft: 5, + paddingRight: 5, + }; + this.setPosition(_stavemodifier__WEBPACK_IMPORTED_MODULE_0__.StaveModifierPosition.BEGIN); + this.setType(type); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.Barline; + } + static get type() { + return BarlineType; + } + static get typeString() { + return { + single: BarlineType.SINGLE, + double: BarlineType.DOUBLE, + end: BarlineType.END, + repeatBegin: BarlineType.REPEAT_BEGIN, + repeatEnd: BarlineType.REPEAT_END, + repeatBoth: BarlineType.REPEAT_BOTH, + none: BarlineType.NONE, + }; + } + getType() { + return this.type; + } + setType(type) { + this.type = typeof type === 'string' ? Barline.typeString[type] : type; + this.setWidth(this.widths[this.type]); + this.setPadding(this.paddings[this.type]); + this.setLayoutMetrics(this.layoutMetricsMap[this.type]); + return this; + } + // Draw barlines + draw(stave) { + stave.checkContext(); + this.setRendered(); + switch (this.type) { + case BarlineType.SINGLE: + this.drawVerticalBar(stave, this.x, false); + break; + case BarlineType.DOUBLE: + this.drawVerticalBar(stave, this.x, true); + break; + case BarlineType.END: + this.drawVerticalEndBar(stave, this.x); + break; + case BarlineType.REPEAT_BEGIN: + // If the barline is shifted over (in front of clef/time/key) + // Draw vertical bar at the beginning. + this.drawRepeatBar(stave, this.x, true); + if (stave.getX() !== this.x) { + this.drawVerticalBar(stave, stave.getX()); + } + break; + case BarlineType.REPEAT_END: + this.drawRepeatBar(stave, this.x, false); + break; + case BarlineType.REPEAT_BOTH: + this.drawRepeatBar(stave, this.x, false); + this.drawRepeatBar(stave, this.x, true); + break; + default: + // Default is NONE, so nothing to draw + break; + } + } + drawVerticalBar(stave, x, double_bar) { + const staveCtx = stave.checkContext(); + const topY = stave.getTopLineTopY(); + const botY = stave.getBottomLineBottomY(); + if (double_bar) { + staveCtx.fillRect(x - 3, topY, 1, botY - topY); + } + staveCtx.fillRect(x, topY, 1, botY - topY); + } + drawVerticalEndBar(stave, x) { + const staveCtx = stave.checkContext(); + const topY = stave.getTopLineTopY(); + const botY = stave.getBottomLineBottomY(); + staveCtx.fillRect(x - 5, topY, 1, botY - topY); + staveCtx.fillRect(x - 2, topY, 3, botY - topY); + } + drawRepeatBar(stave, x, begin) { + const staveCtx = stave.checkContext(); + const topY = stave.getTopLineTopY(); + const botY = stave.getBottomLineBottomY(); + let x_shift = 3; + if (!begin) { + x_shift = -5; + } + staveCtx.fillRect(x + x_shift, topY, 1, botY - topY); + staveCtx.fillRect(x - 2, topY, 3, botY - topY); + const dot_radius = 2; + // Shift dots left or right + if (begin) { + x_shift += 4; + } + else { + x_shift -= 4; + } + const dot_x = x + x_shift + dot_radius / 2; + // calculate the y offset based on number of stave lines + let y_offset = (stave.getNumLines() - 1) * stave.getSpacingBetweenLines(); + y_offset = y_offset / 2 - stave.getSpacingBetweenLines() / 2; + let dot_y = topY + y_offset + dot_radius / 2; + // draw the top repeat dot + staveCtx.beginPath(); + staveCtx.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false); + staveCtx.fill(); + // draw the bottom repeat dot + dot_y += stave.getSpacingBetweenLines(); + staveCtx.beginPath(); + staveCtx.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false); + staveCtx.fill(); + } +} + + +/***/ }), + +/***/ "./src/staveconnector.ts": +/*!*******************************!*\ + !*** ./src/staveconnector.ts ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveConnector": () => (/* binding */ StaveConnector) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + +function drawBoldDoubleLine(ctx, type, topX, topY, botY) { + if (type !== StaveConnector.type.BOLD_DOUBLE_LEFT && type !== StaveConnector.type.BOLD_DOUBLE_RIGHT) { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('InvalidConnector', 'A REPEAT_BEGIN or REPEAT_END type must be provided.'); + } + let x_shift = 3; + let variableWidth = 3.5; // Width for avoiding anti-aliasing width issues + const thickLineOffset = 2; // For aesthetics + if (type === StaveConnector.type.BOLD_DOUBLE_RIGHT) { + x_shift = -5; // Flips the side of the thin line + variableWidth = 3; + } + // Thin line + ctx.fillRect(topX + x_shift, topY, 1, botY - topY); + // Thick line + ctx.fillRect(topX - thickLineOffset, topY, variableWidth, botY - topY); +} +/** StaveConnector implements the connector lines between staves of a system. */ +class StaveConnector extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + constructor(top_stave, bottom_stave) { + super(); + this.thickness = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.STAVE_LINE_THICKNESS; + this.width = 3; + this.top_stave = top_stave; + this.bottom_stave = bottom_stave; + this.type = StaveConnector.type.DOUBLE; + this.resetFont(); + // 1. Offset Bold Double Left to align with offset Repeat Begin bars + // 2. Offset BRACE type not to overlap with another StaveConnector + this.x_shift = 0; + this.texts = []; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_4__.Category.StaveConnector; + } + /** + * Set type. + * @param type see {@link StaveConnector.type} & {@link StaveConnector.typeString} + */ + setType(type) { + const newType = typeof type === 'string' ? StaveConnector.typeString[type] : type; + // Be certain that the type is a valid type: + if (Object.values(StaveConnector.type).includes(newType)) { + this.type = newType; + } + return this; + } + /** + * Get type. + * @returns number {@link StaveConnector.type} + */ + getType() { + return this.type; + } + /** Set optional associated Text. */ + setText(text, options = {}) { + this.texts.push({ + content: text, + options: Object.assign({ shift_x: 0, shift_y: 0 }, options), + }); + return this; + } + setXShift(x_shift) { + if (typeof x_shift !== 'number') { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('InvalidType', 'x_shift must be a Number'); + } + this.x_shift = x_shift; + return this; + } + getXShift() { + return this.x_shift; + } + /** Render connector and associated text. */ + draw() { + const ctx = this.checkContext(); + this.setRendered(); + let topY = this.top_stave.getYForLine(0); + let botY = this.bottom_stave.getYForLine(this.bottom_stave.getNumLines() - 1) + this.thickness; + let width = this.width; + let topX = this.top_stave.getX(); + const isRightSidedConnector = this.type === StaveConnector.type.SINGLE_RIGHT || + this.type === StaveConnector.type.BOLD_DOUBLE_RIGHT || + this.type === StaveConnector.type.THIN_DOUBLE; + if (isRightSidedConnector) { + topX = this.top_stave.getX() + this.top_stave.getWidth(); + } + let attachment_height = botY - topY; + switch (this.type) { + case StaveConnector.type.SINGLE: + width = 1; + break; + case StaveConnector.type.SINGLE_LEFT: + width = 1; + break; + case StaveConnector.type.SINGLE_RIGHT: + width = 1; + break; + case StaveConnector.type.DOUBLE: + topX -= this.width + 2; + topY -= this.thickness; + attachment_height += 0.5; + break; + case StaveConnector.type.BRACE: { + width = 12; + // May need additional code to draw brace + const x1 = this.top_stave.getX() - 2 + this.x_shift; + const y1 = topY; + const x3 = x1; + const y3 = botY; + const x2 = x1 - width; + const y2 = y1 + attachment_height / 2.0; + const cpx1 = x2 - 0.9 * width; + const cpy1 = y1 + 0.2 * attachment_height; + const cpx2 = x1 + 1.1 * width; + const cpy2 = y2 - 0.135 * attachment_height; + const cpx3 = cpx2; + const cpy3 = y2 + 0.135 * attachment_height; + const cpx4 = cpx1; + const cpy4 = y3 - 0.2 * attachment_height; + const cpx5 = x2 - width; + const cpy5 = cpy4; + const cpx6 = x1 + 0.4 * width; + const cpy6 = y2 + 0.135 * attachment_height; + const cpx7 = cpx6; + const cpy7 = y2 - 0.135 * attachment_height; + const cpx8 = cpx5; + const cpy8 = cpy1; + ctx.beginPath(); + ctx.moveTo(x1, y1); + ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2); + ctx.bezierCurveTo(cpx3, cpy3, cpx4, cpy4, x3, y3); + ctx.bezierCurveTo(cpx5, cpy5, cpx6, cpy6, x2, y2); + ctx.bezierCurveTo(cpx7, cpy7, cpx8, cpy8, x1, y1); + ctx.fill(); + ctx.stroke(); + break; + } + case StaveConnector.type.BRACKET: + topY -= 6; + botY += 6; + attachment_height = botY - topY; + _glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph.renderGlyph(ctx, topX - 5, topY, 40, 'bracketTop'); + _glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph.renderGlyph(ctx, topX - 5, botY, 40, 'bracketBottom'); + topX -= this.width + 2; + break; + case StaveConnector.type.BOLD_DOUBLE_LEFT: + drawBoldDoubleLine(ctx, this.type, topX + this.x_shift, topY, botY - this.thickness); + break; + case StaveConnector.type.BOLD_DOUBLE_RIGHT: + drawBoldDoubleLine(ctx, this.type, topX, topY, botY - this.thickness); + break; + case StaveConnector.type.THIN_DOUBLE: + width = 1; + attachment_height -= this.thickness; + break; + case StaveConnector.type.NONE: + break; + default: + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('InvalidType', `The provided StaveConnector.type (${this.type}) is invalid.`); + } + if (this.type !== StaveConnector.type.BRACE && + this.type !== StaveConnector.type.BOLD_DOUBLE_LEFT && + this.type !== StaveConnector.type.BOLD_DOUBLE_RIGHT && + this.type !== StaveConnector.type.NONE) { + ctx.fillRect(topX, topY, width, attachment_height); + } + // If the connector is a thin double barline, draw the paralell line + if (this.type === StaveConnector.type.THIN_DOUBLE) { + ctx.fillRect(topX - 3, topY, width, attachment_height); + } + ctx.save(); + ctx.setLineWidth(2); + ctx.setFont(this.textFont); + // Add stave connector text + for (let i = 0; i < this.texts.length; i++) { + const text = this.texts[i]; + const text_width = ctx.measureText('' + text.content).width; + const x = this.top_stave.getX() - text_width - 24 + text.options.shift_x; + const y = (this.top_stave.getYForLine(0) + this.bottom_stave.getBottomLineY()) / 2 + text.options.shift_y; + ctx.fillText('' + text.content, x, y + 4); + } + ctx.restore(); + } +} +StaveConnector.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_1__.Font.SERIF, + size: 16, + weight: _font__WEBPACK_IMPORTED_MODULE_1__.FontWeight.NORMAL, + style: _font__WEBPACK_IMPORTED_MODULE_1__.FontStyle.NORMAL, +}; +/** + * SINGLE_LEFT and SINGLE are the same value for compatibility + * with older versions of vexflow which didn't have right sided + * stave connectors. + */ +StaveConnector.type = { + SINGLE_RIGHT: 0, + SINGLE_LEFT: 1, + SINGLE: 1, + DOUBLE: 2, + BRACE: 3, + BRACKET: 4, + BOLD_DOUBLE_LEFT: 5, + BOLD_DOUBLE_RIGHT: 6, + THIN_DOUBLE: 7, + NONE: 8, +}; +/** + * Connector type: + * * "singleRight" + * * "singleLeft" + * * "single" + * * "double" + * * "brace" + * * "bracket" + * * "boldDoubleLeft" + * * "boldDoubleRight" + * * "thinDouble" + * * "none" + */ +StaveConnector.typeString = { + singleRight: StaveConnector.type.SINGLE_RIGHT, + singleLeft: StaveConnector.type.SINGLE_LEFT, + single: StaveConnector.type.SINGLE, + double: StaveConnector.type.DOUBLE, + brace: StaveConnector.type.BRACE, + bracket: StaveConnector.type.BRACKET, + boldDoubleLeft: StaveConnector.type.BOLD_DOUBLE_LEFT, + boldDoubleRight: StaveConnector.type.BOLD_DOUBLE_RIGHT, + thinDouble: StaveConnector.type.THIN_DOUBLE, + none: StaveConnector.type.NONE, +}; + + +/***/ }), + +/***/ "./src/stavehairpin.ts": +/*!*****************************!*\ + !*** ./src/stavehairpin.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveHairpin": () => (/* binding */ StaveHairpin) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// Author: Raffaele Viglianti, 2012 http://itisnotsound.wordpress.com/ +// +// This class implements hairpins between notes. +// Hairpins can be either crescendo or decrescendo. + + + + +class StaveHairpin extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + /** + * Create a new hairpin from the specified notes. + * + * @param {!Object} notes The notes to tie up. + * Notes is a struct that has: + * + * { + * first_note: Note, + * last_note: Note, + * } + * @param {!Object} type The type of hairpin + */ + constructor(notes, type) { + super(); + this.setNotes(notes); + this.hairpin = type; + this.position = _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.BELOW; + this.render_options = { + height: 10, + y_shift: 0, + left_shift_px: 0, + right_shift_px: 0, + right_shift_ticks: 0, + left_shift_ticks: 0, + }; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.StaveHairpin; + } + /* Helper function to convert ticks into pixels. + * Requires a Formatter with voices joined and formatted (to + * get pixels per tick) + * + * options is struct that has: + * + * { + * height: px, + * y_shift: px, // vertical offset + * left_shift_ticks: 0, // left horizontal offset expressed in ticks + * right_shift_ticks: 0 // right horizontal offset expressed in ticks + * } + * + **/ + static FormatByTicksAndDraw(ctx, formatter, notes, type, position, options) { + var _a, _b; + const ppt = formatter.pixelsPerTick; + if (ppt == null) { + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('BadArguments', 'A valid Formatter must be provide to draw offsets by ticks.'); + } + const l_shift_px = ppt * ((_a = options.left_shift_ticks) !== null && _a !== void 0 ? _a : 0); + const r_shift_px = ppt * ((_b = options.right_shift_ticks) !== null && _b !== void 0 ? _b : 0); + const hairpin_options = { + height: options.height, + y_shift: options.y_shift, + left_shift_px: l_shift_px, + right_shift_px: r_shift_px, + right_shift_ticks: 0, + left_shift_ticks: 0, + }; + new StaveHairpin({ + first_note: notes.first_note, + last_note: notes.last_note, + }, type) + .setContext(ctx) + .setRenderOptions(hairpin_options) + .setPosition(position) + .draw(); + } + setPosition(position) { + if (position === _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.ABOVE || position === _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.BELOW) { + this.position = position; + } + return this; + } + setRenderOptions(options) { + if (options.height != null && + options.y_shift != null && + options.left_shift_px != null && + options.right_shift_px != null) { + this.render_options = options; + } + return this; + } + /** + * Set the notes to attach this hairpin to. + * + * @param {!Object} notes The start and end notes. + */ + setNotes(notes) { + if (!notes.first_note && !notes.last_note) { + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('BadArguments', 'Hairpin needs to have either first_note or last_note set.'); + } + this.notes = notes; + this.first_note = notes.first_note; + this.last_note = notes.last_note; + return this; + } + renderHairpin(params) { + const ctx = this.checkContext(); + let dis = this.render_options.y_shift + 20; + let y_shift = params.first_y; + if (this.position === _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.ABOVE) { + dis = -dis + 30; + y_shift = params.first_y - params.staff_height; + } + const l_shift = this.render_options.left_shift_px; + const r_shift = this.render_options.right_shift_px; + ctx.beginPath(); + switch (this.hairpin) { + case StaveHairpin.type.CRESC: + ctx.moveTo(params.last_x + r_shift, y_shift + dis); + ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height / 2 + dis); + ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height + dis); + break; + case StaveHairpin.type.DECRESC: + ctx.moveTo(params.first_x + l_shift, y_shift + dis); + ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height / 2 + dis); + ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height + dis); + break; + default: + // Default is NONE, so nothing to draw + break; + } + ctx.stroke(); + ctx.closePath(); + } + draw() { + this.checkContext(); + this.setRendered(); + const firstNote = this.first_note; + const lastNote = this.last_note; + if (!firstNote || !lastNote) + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('NoNote', 'Notes required to draw'); + const start = firstNote.getModifierStartXY(this.position, 0); + const end = lastNote.getModifierStartXY(this.position, 0); + this.renderHairpin({ + first_x: start.x, + last_x: end.x, + first_y: firstNote.checkStave().getY() + firstNote.checkStave().getHeight(), + last_y: lastNote.checkStave().getY() + lastNote.checkStave().getHeight(), + staff_height: firstNote.checkStave().getHeight(), + }); + } +} +StaveHairpin.type = { + CRESC: 1, + DECRESC: 2, +}; + + +/***/ }), + +/***/ "./src/staveline.ts": +/*!**************************!*\ + !*** ./src/staveline.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveLine": () => (/* binding */ StaveLine) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _textnote__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./textnote */ "./src/textnote.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// This file implements `StaveLine` which are simply lines that connect +// two notes. This object is highly configurable, see the `render_options`. +// A simple line is often used for notating glissando articulations, but you +// can format a `StaveLine` with arrows or colors for more pedagogical +// purposes, such as diagrams. + + + + + +// Attribution: Arrow rendering implementations based off of +// Patrick Horgan's article, "Drawing lines and arcs with +// arrow heads on HTML5 Canvas" +// +// Draw an arrow head that connects between 3 coordinates. +function drawArrowHead(ctx, x0, y0, x1, y1, x2, y2) { + // all cases do this. + ctx.beginPath(); + ctx.moveTo(x0, y0); + ctx.lineTo(x1, y1); + ctx.lineTo(x2, y2); + ctx.lineTo(x0, y0); + ctx.closePath(); + ctx.fill(); +} +class StaveLine extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + // Initialize the StaveLine with the given `notes`. + // + // `notes` is a struct that has: + // + // ``` + // { + // first_note: Note, + // last_note: Note, + // first_indices: [n1, n2, n3], + // last_indices: [n1, n2, n3] + // } + // ``` + constructor(notes) { + super(); + this.setNotes(notes); + this.text = ''; + this.resetFont(); + this.render_options = { + // Space to add to the left or the right + padding_left: 4, + padding_right: 3, + // The width of the line in pixels + line_width: 1, + // An array of line/space lengths. (TODO/QUESTION: Is this supported in SVG?). + line_dash: undefined, + // Can draw rounded line end, instead of a square. (TODO/QUESTION: Is this supported in SVG?). + rounded_end: true, + // The color of the line and arrowheads + color: undefined, + // Flags to draw arrows on each end of the line + draw_start_arrow: false, + draw_end_arrow: false, + // The length of the arrowhead sides + arrowhead_length: 10, + // The angle of the arrowhead + arrowhead_angle: Math.PI / 8, + // The position of the text + text_position_vertical: StaveLine.TextVerticalPosition.TOP, + text_justification: StaveLine.TextJustification.CENTER, + }; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.StaveLine; + } + // The the annotation for the `StaveLine` + setText(text) { + this.text = text; + return this; + } + // Set the notes for the `StaveLine` + setNotes(notes) { + if (!notes.first_note && !notes.last_note) { + throw new _util__WEBPACK_IMPORTED_MODULE_4__.RuntimeError('BadArguments', 'Notes needs to have either first_note or last_note set.'); + } + if (!notes.first_indices) + notes.first_indices = [0]; + if (!notes.last_indices) + notes.last_indices = [0]; + if (notes.first_indices.length !== notes.last_indices.length) { + throw new _util__WEBPACK_IMPORTED_MODULE_4__.RuntimeError('BadArguments', 'Connected notes must have same number of indices.'); + } + this.notes = notes; + this.first_note = notes.first_note; + this.first_indices = notes.first_indices; + this.last_note = notes.last_note; + this.last_indices = notes.last_indices; + return this; + } + // Apply the style of the `StaveLine` to the context + applyLineStyle() { + const ctx = this.checkContext(); + const render_options = this.render_options; + if (render_options.line_dash) { + ctx.setLineDash(render_options.line_dash); + } + if (render_options.line_width) { + ctx.setLineWidth(render_options.line_width); + } + if (render_options.rounded_end) { + ctx.setLineCap('round'); + } + else { + ctx.setLineCap('square'); + } + } + // Apply the text styling to the context + applyFontStyle() { + const ctx = this.checkContext(); + ctx.setFont(this.textFont); + const render_options = this.render_options; + const color = render_options.color; + if (color) { + ctx.setStrokeStyle(color); + ctx.setFillStyle(color); + } + } + // Helper function to draw a line with arrow heads + drawArrowLine(ctx, pt1, pt2) { + const both_arrows = this.render_options.draw_start_arrow && this.render_options.draw_end_arrow; + const x1 = pt1.x; + const y1 = pt1.y; + const x2 = pt2.x; + const y2 = pt2.y; + // For ends with arrow we actually want to stop before we get to the arrow + // so that wide lines won't put a flat end on the arrow. + const distance = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)); + const ratio = (distance - this.render_options.arrowhead_length / 3) / distance; + let end_x; + let end_y; + let start_x; + let start_y; + if (this.render_options.draw_end_arrow || both_arrows) { + end_x = Math.round(x1 + (x2 - x1) * ratio); + end_y = Math.round(y1 + (y2 - y1) * ratio); + } + else { + end_x = x2; + end_y = y2; + } + if (this.render_options.draw_start_arrow || both_arrows) { + start_x = x1 + (x2 - x1) * (1 - ratio); + start_y = y1 + (y2 - y1) * (1 - ratio); + } + else { + start_x = x1; + start_y = y1; + } + if (this.render_options.color) { + ctx.setStrokeStyle(this.render_options.color); + ctx.setFillStyle(this.render_options.color); + } + // Draw the shaft of the arrow + ctx.beginPath(); + ctx.moveTo(start_x, start_y); + ctx.lineTo(end_x, end_y); + ctx.stroke(); + ctx.closePath(); + // calculate the angle of the line + const line_angle = Math.atan2(y2 - y1, x2 - x1); + // h is the line length of a side of the arrow head + const h = Math.abs(this.render_options.arrowhead_length / Math.cos(this.render_options.arrowhead_angle)); + let angle1; + let angle2; + let top_x; + let top_y; + let bottom_x; + let bottom_y; + if (this.render_options.draw_end_arrow || both_arrows) { + angle1 = line_angle + Math.PI + this.render_options.arrowhead_angle; + top_x = x2 + Math.cos(angle1) * h; + top_y = y2 + Math.sin(angle1) * h; + angle2 = line_angle + Math.PI - this.render_options.arrowhead_angle; + bottom_x = x2 + Math.cos(angle2) * h; + bottom_y = y2 + Math.sin(angle2) * h; + drawArrowHead(ctx, top_x, top_y, x2, y2, bottom_x, bottom_y); + } + if (this.render_options.draw_start_arrow || both_arrows) { + angle1 = line_angle + this.render_options.arrowhead_angle; + top_x = x1 + Math.cos(angle1) * h; + top_y = y1 + Math.sin(angle1) * h; + angle2 = line_angle - this.render_options.arrowhead_angle; + bottom_x = x1 + Math.cos(angle2) * h; + bottom_y = y1 + Math.sin(angle2) * h; + drawArrowHead(ctx, top_x, top_y, x1, y1, bottom_x, bottom_y); + } + } + // Renders the `StaveLine` on the context + draw() { + const ctx = this.checkContext(); + this.setRendered(); + const first_note = this.first_note; + const last_note = this.last_note; + const render_options = this.render_options; + ctx.save(); + this.applyLineStyle(); + // Cycle through each set of indices and draw lines + let start_position = { x: 0, y: 0 }; + let end_position = { x: 0, y: 0 }; + this.first_indices.forEach((first_index, i) => { + const last_index = this.last_indices[i]; + // Get initial coordinates for the start/end of the line + start_position = first_note.getModifierStartXY(2, first_index); + end_position = last_note.getModifierStartXY(1, last_index); + const upwards_slope = start_position.y > end_position.y; + // Adjust `x` coordinates for modifiers + start_position.x += first_note.getMetrics().modRightPx + render_options.padding_left; + end_position.x -= last_note.getMetrics().modLeftPx + render_options.padding_right; + // Adjust first `x` coordinates for displacements + const notehead_width = first_note.getGlyph().getWidth(); + const first_displaced = first_note.getKeyProps()[first_index].displaced; + if (first_displaced && first_note.getStemDirection() === 1) { + start_position.x += notehead_width + render_options.padding_left; + } + // Adjust last `x` coordinates for displacements + const last_displaced = last_note.getKeyProps()[last_index].displaced; + if (last_displaced && last_note.getStemDirection() === -1) { + end_position.x -= notehead_width + render_options.padding_right; + } + // Adjust y position better if it's not coming from the center of the note + start_position.y += upwards_slope ? -3 : 1; + end_position.y += upwards_slope ? 2 : 0; + this.drawArrowLine(ctx, start_position, end_position); + }); + ctx.restore(); + // Determine the x coordinate where to start the text + const text_width = ctx.measureText(this.text).width; + const justification = render_options.text_justification; + let x = 0; + if (justification === StaveLine.TextJustification.LEFT) { + x = start_position.x; + } + else if (justification === StaveLine.TextJustification.CENTER) { + const delta_x = end_position.x - start_position.x; + const center_x = delta_x / 2 + start_position.x; + x = center_x - text_width / 2; + } + else if (justification === StaveLine.TextJustification.RIGHT) { + x = end_position.x - text_width; + } + // Determine the y value to start the text + let y = 0; + const vertical_position = render_options.text_position_vertical; + if (vertical_position === StaveLine.TextVerticalPosition.TOP) { + y = first_note.checkStave().getYForTopText(); + } + else if (vertical_position === StaveLine.TextVerticalPosition.BOTTOM) { + y = first_note.checkStave().getYForBottomText(_tables__WEBPACK_IMPORTED_MODULE_1__.Tables.TEXT_HEIGHT_OFFSET_HACK); + } + // Draw the text + ctx.save(); + this.applyFontStyle(); + ctx.fillText(this.text, x, y); + ctx.restore(); + return this; + } +} +/** Default text font. */ +StaveLine.TEXT_FONT = Object.assign({}, _element__WEBPACK_IMPORTED_MODULE_0__.Element.TEXT_FONT); +// Text Positioning +StaveLine.TextVerticalPosition = { + TOP: 1, + BOTTOM: 2, +}; +StaveLine.TextJustification = _textnote__WEBPACK_IMPORTED_MODULE_2__.TextJustification; + + +/***/ }), + +/***/ "./src/stavemodifier.ts": +/*!******************************!*\ + !*** ./src/stavemodifier.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveModifierPosition": () => (/* binding */ StaveModifierPosition), +/* harmony export */ "StaveModifier": () => (/* binding */ StaveModifier) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// A base class for stave modifiers (e.g. clefs, key signatures) + + + +var StaveModifierPosition; +(function (StaveModifierPosition) { + StaveModifierPosition[StaveModifierPosition["CENTER"] = 0] = "CENTER"; + StaveModifierPosition[StaveModifierPosition["LEFT"] = 1] = "LEFT"; + StaveModifierPosition[StaveModifierPosition["RIGHT"] = 2] = "RIGHT"; + StaveModifierPosition[StaveModifierPosition["ABOVE"] = 3] = "ABOVE"; + StaveModifierPosition[StaveModifierPosition["BELOW"] = 4] = "BELOW"; + StaveModifierPosition[StaveModifierPosition["BEGIN"] = 5] = "BEGIN"; + StaveModifierPosition[StaveModifierPosition["END"] = 6] = "END"; +})(StaveModifierPosition || (StaveModifierPosition = {})); +class StaveModifier extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + constructor() { + super(); + this.width = 0; + this.x = 0; + this.padding = 10; + this.position = StaveModifierPosition.ABOVE; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_1__.Category.StaveModifier; + } + static get Position() { + return StaveModifierPosition; + } + getPosition() { + return this.position; + } + setPosition(position) { + this.position = position; + return this; + } + getStave() { + return this.stave; + } + checkStave() { + return (0,_util__WEBPACK_IMPORTED_MODULE_2__.defined)(this.stave, 'NoStave', 'No stave attached to instance.'); + } + setStave(stave) { + this.stave = stave; + return this; + } + getWidth() { + return this.width; + } + setWidth(width) { + this.width = width; + return this; + } + getX() { + return this.x; + } + setX(x) { + this.x = x; + return this; + } + placeGlyphOnLine(glyph, stave, line, customShift = 0) { + glyph.setYShift(stave.getYForLine(line !== null && line !== void 0 ? line : 0) - stave.getYForGlyphs() + customShift); + } + getPadding(index) { + return index !== undefined && index < 2 ? 0 : this.padding; + } + setPadding(padding) { + this.padding = padding; + return this; + } + setLayoutMetrics(layoutMetrics) { + this.layoutMetrics = layoutMetrics; + return this; + } + getLayoutMetrics() { + return this.layoutMetrics; + } + // eslint-disable-next-line + draw(...args) { + // DO NOTHING. + } +} + + +/***/ }), + +/***/ "./src/stavenote.ts": +/*!**************************!*\ + !*** ./src/stavenote.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveNote": () => (/* binding */ StaveNote) +/* harmony export */ }); +/* harmony import */ var _boundingbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./boundingbox */ "./src/boundingbox.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _notehead__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./notehead */ "./src/notehead.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _stemmablenote__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stemmablenote */ "./src/stemmablenote.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// This file implements notes for standard notation. This consists of one or +// more `NoteHeads`, an optional stem, and an optional flag. +// +// Throughout these comments, a "note" refers to the entire `StaveNote`, +// and a "key" refers to a specific pitch/notehead within a note. +// +// See `tests/stavenote_tests.ts` for usage examples. + + + + + + + + +function showDeprecationWarningForNoteHeads() { + // eslint-disable-next-line + console.warn('StaveNote.note_heads is deprecated. Use StaveNote.noteHeads instead.', 'This accessor will be removed in VexFlow 5.0.'); +} +// To enable logging for this class. Set `Vex.Flow.StaveNote.DEBUG` to `true`. +// eslint-disable-next-line +function L(...args) { + if (StaveNote.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_7__.log)('Vex.Flow.StaveNote', args); +} +const isInnerNoteIndex = (note, index) => index === (note.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP ? note.keyProps.length - 1 : 0); +// Helper methods for rest positioning in ModifierContext. +function shiftRestVertical(rest, note, dir) { + const delta = dir; + rest.line += delta; + rest.maxLine += delta; + rest.minLine += delta; + rest.note.setKeyLine(0, rest.note.getKeyLine(0) + delta); +} +// Called from formatNotes :: center a rest between two notes +function centerRest(rest, noteU, noteL) { + const delta = rest.line - (0,_util__WEBPACK_IMPORTED_MODULE_7__.midLine)(noteU.minLine, noteL.maxLine); + rest.note.setKeyLine(0, rest.note.getKeyLine(0) - delta); + rest.line -= delta; + rest.maxLine -= delta; + rest.minLine -= delta; +} +class StaveNote extends _stemmablenote__WEBPACK_IMPORTED_MODULE_4__.StemmableNote { + constructor(noteStruct) { + var _a, _b, _c; + super(noteStruct); + ////////////////////////////////////////////////////////////////////////////////////////////////// + // INSTANCE MEMBERS + this.minLine = 0; + this.maxLine = 0; + // Sorted variant of keyProps used internally + this.sortedKeyProps = []; + this.ledgerLineStyle = {}; + this.clef = (_a = noteStruct.clef) !== null && _a !== void 0 ? _a : 'treble'; + this.octave_shift = (_b = noteStruct.octave_shift) !== null && _b !== void 0 ? _b : 0; + // Pull note rendering properties. + this.glyph = _tables__WEBPACK_IMPORTED_MODULE_5__.Tables.getGlyphProps(this.duration, this.noteType); + (0,_util__WEBPACK_IMPORTED_MODULE_7__.defined)(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`); + // if true, displace note to right + this.displaced = false; + this.dot_shiftY = 0; + // for displaced ledger lines + this.use_default_head_x = false; + // Drawing + this._noteHeads = []; + this.modifiers = []; + this.render_options = Object.assign(Object.assign({}, this.render_options), { + // font size for note heads and rests + glyph_font_scale: noteStruct.glyph_font_scale || _tables__WEBPACK_IMPORTED_MODULE_5__.Tables.NOTATION_FONT_SCALE, + // number of stroke px to the left and right of head + stroke_px: noteStruct.stroke_px || StaveNote.LEDGER_LINE_OFFSET }); + this.calculateKeyProps(); + this.buildStem(); + // Set the stem direction + if (noteStruct.auto_stem) { + this.autoStem(); + } + else { + this.setStemDirection((_c = noteStruct.stem_direction) !== null && _c !== void 0 ? _c : _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP); + } + this.reset(); + this.buildFlag(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_6__.Category.StaveNote; + } + /** + * @deprecated Use Stem.UP. + */ + static get STEM_UP() { + return _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP; + } + /** + * @deprecated Use Stem.DOWN. + */ + static get STEM_DOWN() { + return _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.DOWN; + } + static get LEDGER_LINE_OFFSET() { + return 3; + } + static get minNoteheadPadding() { + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_5__.Tables.currentMusicFont(); + return musicFont.lookupMetric('glyphs.noteHead.minPadding'); + } + /** Format notes inside a ModifierContext. */ + static format(notes, state) { + if (!notes || notes.length < 2) + return false; + const notesList = []; + for (let i = 0; i < notes.length; i++) { + // Formatting uses sortedKeyProps to calculate line and minL. + const props = notes[i].sortedKeyProps; + const line = props[0].keyProps.line; + let minL = props[props.length - 1].keyProps.line; + const stemDirection = notes[i].getStemDirection(); + const stemMax = notes[i].getStemLength() / 10; + const stemMin = notes[i].getStemMinimumLength() / 10; + let maxL; + if (notes[i].isRest()) { + maxL = line + notes[i].glyph.line_above; + minL = line - notes[i].glyph.line_below; + } + else { + maxL = + stemDirection === 1 ? props[props.length - 1].keyProps.line + stemMax : props[props.length - 1].keyProps.line; + minL = stemDirection === 1 ? props[0].keyProps.line : props[0].keyProps.line - stemMax; + } + notesList.push({ + line: props[0].keyProps.line, + maxLine: maxL, + minLine: minL, + isrest: notes[i].isRest(), + stemDirection: stemDirection, + stemMax, + stemMin, + voice_shift: notes[i].getVoiceShiftWidth(), + is_displaced: notes[i].isDisplaced(), + note: notes[i], + }); + } + let voices = 0; + let noteU = undefined; + let noteM = undefined; + let noteL = undefined; + const draw = [false, false, false]; + for (let i = 0; i < notesList.length; i++) { + draw[i] = notesList[i].note.render_options.draw == false ? false : true; + } + if (draw[0] && draw[1] && draw[2]) { + // Three visible notes + voices = 3; + noteU = notesList[0]; + noteM = notesList[1]; + noteL = notesList[2]; + } + else if (draw[0] && draw[1]) { + // Two visible notes, 0 & 1 + voices = 2; + noteU = notesList[0]; + noteL = notesList[1]; + } + else if (draw[0] && draw[2]) { + // Two visible notes, 0 & 2 + voices = 2; + noteU = notesList[0]; + noteL = notesList[2]; + } + else if (draw[1] && draw[2]) { + // Two visible notes, 1 & 2 + voices = 2; + noteU = notesList[1]; + noteL = notesList[2]; + } + else { + // No shift required for less than 2 visible notes + return true; + } + // for two voice backward compatibility, ensure upper voice is stems up + // for three voices, the voices must be in order (upper, middle, lower) + if (voices === 2 && noteU.stemDirection === -1 && noteL.stemDirection === 1) { + noteU = notesList[1]; + noteL = notesList[0]; + } + const voiceXShift = Math.max(noteU.voice_shift, noteL.voice_shift); + let xShift = 0; + // Test for two voice note intersection + if (voices === 2) { + const lineSpacing = noteU.note.hasStem() && noteL.note.hasStem() && noteU.stemDirection === noteL.stemDirection ? 0.0 : 0.5; + if (noteL.isrest && noteU.isrest && noteU.note.duration === noteL.note.duration) { + noteL.note.render_options.draw = false; + } + else if (noteU.minLine <= noteL.maxLine + lineSpacing) { + if (noteU.isrest) { + // shift rest up + shiftRestVertical(noteU, noteL, 1); + } + else if (noteL.isrest) { + // shift rest down + shiftRestVertical(noteL, noteU, -1); + } + else { + //Instead of shifting notes, remove the appropriate flag + //If we are sharing a line, switch one notes stem direction. + //If we are sharing a line and in the same voice, only then offset one note + const lineDiff = Math.abs(noteU.line - noteL.line); + if (noteU.note.hasStem() && noteL.note.hasStem()) { + //If we have different dot values, must offset + //Or If we have a white mixed with a black notehead, must offset + let whiteNoteHeadCount = 0; + let blackNoteHeadCount = 0; + if (_tables__WEBPACK_IMPORTED_MODULE_5__.Tables.durationToNumber(noteU.note.duration) === 2) { + whiteNoteHeadCount++; + } + else if (_tables__WEBPACK_IMPORTED_MODULE_5__.Tables.durationToNumber(noteU.note.duration) > 2) { + blackNoteHeadCount++; + } + if (_tables__WEBPACK_IMPORTED_MODULE_5__.Tables.durationToNumber(noteL.note.duration) === 2) { + whiteNoteHeadCount++; + } + else if (_tables__WEBPACK_IMPORTED_MODULE_5__.Tables.durationToNumber(noteL.note.duration) > 2) { + blackNoteHeadCount++; + } + if ((whiteNoteHeadCount !== 2 && blackNoteHeadCount !== 2) || + noteU.note.getModifiersByType(_typeguard__WEBPACK_IMPORTED_MODULE_6__.Category.Dot).length !== noteL.note.getModifiersByType(_typeguard__WEBPACK_IMPORTED_MODULE_6__.Category.Dot).length) { + xShift = voiceXShift + 2; + if (noteU.stemDirection === noteL.stemDirection) { + // upper voice is middle voice, so shift it right + noteU.note.setXShift(xShift); + } + else { + // shift lower voice right + noteL.note.setXShift(xShift); + } + } + else if (lineDiff < 1 && lineDiff > 0) { + //if the notes are quite close but not on the same line, shift + xShift = voiceXShift + 2; + if (noteU.stemDirection === noteL.stemDirection) { + // upper voice is middle voice, so shift it right + noteU.note.setXShift(xShift); + } + else { + // shift lower voice right + noteL.note.setXShift(xShift); + } + } + else if (noteU.note.voice !== noteL.note.voice) { + //If we are not in the same voice + if (noteU.stemDirection === noteL.stemDirection) { + if (noteU.line != noteL.line) { + xShift = voiceXShift + 2; + noteU.note.setXShift(xShift); + } + else { + //same line, swap stem direction for one note + if (noteL.stemDirection === 1) { + noteL.stemDirection = -1; + noteL.note.setStemDirection(-1); + } + } + } + } //Very close whole notes + } + else if (lineDiff < 1) { + xShift = voiceXShift + 2; + if (noteU.stemDirection === noteL.stemDirection) { + // upper voice is middle voice, so shift it right + noteU.note.setXShift(xShift); + } + else { + // shift lower voice right + noteL.note.setXShift(xShift); + } + } + else if (noteU.note.hasStem()) { + noteU.stemDirection = -noteU.note.getStemDirection(); + noteU.note.setStemDirection(noteU.stemDirection); + } + else if (noteL.note.hasStem()) { + noteL.stemDirection = -noteL.note.getStemDirection(); + noteL.note.setStemDirection(noteL.stemDirection); + } + } + } + // format complete + state.right_shift += xShift; + return true; + } + if (!noteM) + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('InvalidState', 'noteM not defined.'); + // For three voices, test if rests can be repositioned + // + // Special case 1 :: middle voice rest between two notes + // + if (noteM.isrest && !noteU.isrest && !noteL.isrest) { + if (noteU.minLine <= noteM.maxLine || noteM.minLine <= noteL.maxLine) { + const restHeight = noteM.maxLine - noteM.minLine; + const space = noteU.minLine - noteL.maxLine; + if (restHeight < space) { + // center middle voice rest between the upper and lower voices + centerRest(noteM, noteU, noteL); + } + else { + xShift = voiceXShift + 2; // shift middle rest right + noteM.note.setXShift(xShift); + if (noteL.note.hasBeam() === false) { + noteL.stemDirection = -1; + noteL.note.setStemDirection(-1); + } + if (noteU.minLine <= noteL.maxLine && noteU.note.hasBeam() === false) { + noteU.stemDirection = 1; + noteU.note.setStemDirection(1); + } + } + // format complete + state.right_shift += xShift; + return true; + } + } + // Special case 2 :: all voices are rests + if (noteU.isrest && noteM.isrest && noteL.isrest) { + // Hide upper voice rest + noteU.note.render_options.draw = false; + // Hide lower voice rest + noteL.note.render_options.draw = false; + // format complete + state.right_shift += xShift; + return true; + } + // Test if any other rests can be repositioned + if (noteM.isrest && noteU.isrest && noteM.minLine <= noteL.maxLine) { + // Hide middle voice rest + noteM.note.render_options.draw = false; + } + if (noteM.isrest && noteL.isrest && noteU.minLine <= noteM.maxLine) { + // Hide middle voice rest + noteM.note.render_options.draw = false; + } + if (noteU.isrest && noteU.minLine <= noteM.maxLine) { + // shift upper voice rest up; + shiftRestVertical(noteU, noteM, 1); + } + if (noteL.isrest && noteM.minLine <= noteL.maxLine) { + // shift lower voice rest down + shiftRestVertical(noteL, noteM, -1); + } + // If middle voice intersects upper or lower voice + if (noteU.minLine <= noteM.maxLine + 0.5 || noteM.minLine <= noteL.maxLine) { + // shift middle note right + xShift = voiceXShift + 2; + noteM.note.setXShift(xShift); + if (noteL.note.hasBeam() === false) { + noteL.stemDirection = -1; + noteL.note.setStemDirection(-1); + } + if (noteU.minLine <= noteL.maxLine && noteU.note.hasBeam() === false) { + noteU.stemDirection = 1; + noteU.note.setStemDirection(1); + } + } + state.right_shift += xShift; + return true; + } + static postFormat(notes) { + if (!notes) + return false; + notes.forEach((note) => note.postFormat()); + return true; + } + reset() { + super.reset(); + // Save prior noteHead styles & reapply them after making new noteheads. + const noteHeadStyles = this._noteHeads.map((noteHead) => noteHead.getStyle()); + this.buildNoteHeads(); + this._noteHeads.forEach((noteHead, index) => { + const noteHeadStyle = noteHeadStyles[index]; + if (noteHeadStyle) + noteHead.setStyle(noteHeadStyle); + }); + const stave = this.stave; + if (stave) { + this._noteHeads.forEach((head) => head.setStave(stave)); + } + this.calcNoteDisplacements(); + return this; + } + setBeam(beam) { + this.beam = beam; + this.calcNoteDisplacements(); + // Update stem extension if a beam is assigned. + if (this.stem) { + this.stem.setExtension(this.getStemExtension()); + } + return this; + } + // Builds a `Stem` for the note + buildStem() { + this.setStem(new _stem__WEBPACK_IMPORTED_MODULE_3__.Stem({ hide: !!this.isRest() })); + return this; + } + // Builds a `NoteHead` for each key in the note + buildNoteHeads() { + this._noteHeads = []; + const stemDirection = this.getStemDirection(); + const keys = this.getKeys(); + let lastLine = undefined; + let lineDiff = undefined; + let displaced = false; + // Draw notes from bottom to top. + // For down-stem notes, we draw from top to bottom. + let start; + let end; + let step; + if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP) { + start = 0; + end = keys.length; + step = 1; + } + else { + start = keys.length - 1; + end = -1; + step = -1; + } + for (let i = start; i !== end; i += step) { + // Building noteheads rely on sortedKeNotes in order to calculate the displacements + const noteProps = this.sortedKeyProps[i].keyProps; + const line = noteProps.line; + // Keep track of last line with a note head, so that consecutive heads + // are correctly displaced. + if (lastLine === undefined) { + lastLine = line; + } + else { + lineDiff = Math.abs(lastLine - line); + if (lineDiff === 0 || lineDiff === 0.5) { + displaced = !displaced; + } + else { + displaced = false; + this.use_default_head_x = true; + } + } + lastLine = line; + const notehead = new _notehead__WEBPACK_IMPORTED_MODULE_2__.NoteHead({ + duration: this.duration, + note_type: this.noteType, + displaced, + stem_direction: stemDirection, + custom_glyph_code: noteProps.code, + glyph_font_scale: this.render_options.glyph_font_scale, + x_shift: noteProps.shift_right, + stem_up_x_offset: noteProps.stem_up_x_offset, + stem_down_x_offset: noteProps.stem_down_x_offset, + line: noteProps.line, + }); + this.addChildElement(notehead); + this._noteHeads[this.sortedKeyProps[i].index] = notehead; + } + } + // Automatically sets the stem direction based on the keys in the note + autoStem() { + this.setStemDirection(this.calculateOptimalStemDirection()); + } + calculateOptimalStemDirection() { + // Figure out optimal stem direction based on given notes + // minLine & maxLine rely on sortedKeyProps + this.minLine = this.sortedKeyProps[0].keyProps.line; + this.maxLine = this.sortedKeyProps[this.keyProps.length - 1].keyProps.line; + const MIDDLE_LINE = 3; + const decider = (this.minLine + this.maxLine) / 2; + const stemDirection = decider < MIDDLE_LINE ? _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP : _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.DOWN; + return stemDirection; + } + // Calculates and stores the properties for each key in the note + calculateKeyProps() { + let lastLine; + for (let i = 0; i < this.keys.length; ++i) { + const key = this.keys[i]; + // All rests use the same position on the line. + // if (this.glyph.rest) key = this.glyph.position; + if (this.glyph.rest) + this.glyph.position = key; + const options = { octave_shift: this.octave_shift || 0, duration: this.duration }; + const props = _tables__WEBPACK_IMPORTED_MODULE_5__.Tables.keyProperties(key, this.clef, options); + if (!props) { + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('BadArguments', `Invalid key for note properties: ${key}`); + } + // Override line placement for default rests + if (props.key === 'R') { + if (this.duration === '1' || this.duration === 'w') { + props.line = 4; + } + else { + props.line = 3; + } + } + // Calculate displacement of this note + const line = props.line; + if (lastLine == undefined) { + lastLine = line; + } + else { + if (Math.abs(lastLine - line) === 0.5) { + this.displaced = true; + props.displaced = true; + // Have to mark the previous note as + // displaced as well, for modifier placement + if (this.keyProps.length > 0) { + this.keyProps[i - 1].displaced = true; + } + } + } + lastLine = line; + this.keyProps.push(props); + } + // Sort the notes from lowest line to highest line in sortedKeyProps + // Warn no longer required as keyProps remains unsorted + this.keyProps.forEach((keyProps, index) => { + this.sortedKeyProps.push({ keyProps, index }); + }); + this.sortedKeyProps.sort((a, b) => a.keyProps.line - b.keyProps.line); + } + // Get the `BoundingBox` for the entire note + getBoundingBox() { + var _a, _b; + if (!this.preFormatted) { + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('UnformattedNote', "Can't call getBoundingBox on an unformatted note."); + } + const { width: w, modLeftPx, leftDisplacedHeadPx } = this.getMetrics(); + const x = this.getAbsoluteX() - modLeftPx - leftDisplacedHeadPx; + let minY = 0; + let maxY = 0; + const halfLineSpacing = ((_b = (_a = this.getStave()) === null || _a === void 0 ? void 0 : _a.getSpacingBetweenLines()) !== null && _b !== void 0 ? _b : 0) / 2; + const lineSpacing = halfLineSpacing * 2; + if (this.isRest()) { + const y = this.ys[0]; + const frac = _tables__WEBPACK_IMPORTED_MODULE_5__.Tables.durationToFraction(this.duration); + if (frac.equals(1) || frac.equals(2)) { + minY = y - halfLineSpacing; + maxY = y + halfLineSpacing; + } + else { + minY = y - this.glyph.line_above * lineSpacing; + maxY = y + this.glyph.line_below * lineSpacing; + } + } + else if (this.glyph.stem) { + const ys = this.getStemExtents(); + ys.baseY += halfLineSpacing * this.getStemDirection(); + minY = Math.min(ys.topY, ys.baseY); + maxY = Math.max(ys.topY, ys.baseY); + } + else { + minY = 0; + maxY = 0; + for (let i = 0; i < this.ys.length; ++i) { + const yy = this.ys[i]; + if (i === 0) { + minY = yy; + maxY = yy; + } + else { + minY = Math.min(yy, minY); + maxY = Math.max(yy, maxY); + } + } + minY -= halfLineSpacing; + maxY += halfLineSpacing; + } + return new _boundingbox__WEBPACK_IMPORTED_MODULE_0__.BoundingBox(x, minY, w, maxY - minY); + } + // Gets the line number of the bottom note in the chord. + // If `isTopNote` is `true` then get the top note's line number instead + getLineNumber(isTopNote) { + if (!this.keyProps.length) { + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('NoKeyProps', "Can't get bottom note line, because note is not initialized properly."); + } + let resultLine = this.keyProps[0].line; + // No precondition assumed for sortedness of keyProps array + for (let i = 0; i < this.keyProps.length; i++) { + const thisLine = this.keyProps[i].line; + if (isTopNote) { + if (thisLine > resultLine) + resultLine = thisLine; + } + else { + if (thisLine < resultLine) + resultLine = thisLine; + } + } + return resultLine; + } + /** + * @returns true if this note is a type of rest. Rests don't have pitches, but take up space in the score. + */ + isRest() { + return this.glyph.rest; + } + // Determine if the current note is a chord + isChord() { + return !this.isRest() && this.keys.length > 1; + } + // Determine if the `StaveNote` has a stem + hasStem() { + return this.glyph.stem; + } + hasFlag() { + return super.hasFlag() && !this.isRest(); + } + getStemX() { + if (this.noteType === 'r') { + return this.getCenterGlyphX(); + } + else { + // We adjust the origin of the stem because we want the stem left-aligned + // with the notehead if stemmed-down, and right-aligned if stemmed-up + return super.getStemX() + (this.stem_direction ? _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.WIDTH / (2 * -this.stem_direction) : 0); + } + } + // Get the `y` coordinate for text placed on the top/bottom of a + // note at a desired `text_line` + getYForTopText(textLine) { + const extents = this.getStemExtents(); + return Math.min(this.checkStave().getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1)); + } + getYForBottomText(textLine) { + const extents = this.getStemExtents(); + return Math.max(this.checkStave().getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine); + } + // Sets the current note to the provided `stave`. This applies + // `y` values to the `NoteHeads`. + setStave(stave) { + super.setStave(stave); + const ys = this._noteHeads.map((notehead) => { + notehead.setStave(stave); + return notehead.getY(); + }); + this.setYs(ys); + if (this.stem) { + const { y_top, y_bottom } = this.getNoteHeadBounds(); + this.stem.setYBounds(y_top, y_bottom); + } + return this; + } + // Check if note is shifted to the right + isDisplaced() { + return this.displaced; + } + // Sets whether shift note to the right. `displaced` is a `boolean` + setNoteDisplaced(displaced) { + this.displaced = displaced; + return this; + } + // Get the starting `x` coordinate for a `StaveTie` + getTieRightX() { + let tieStartX = this.getAbsoluteX(); + tieStartX += this.getGlyphWidth() + this.x_shift + this.rightDisplacedHeadPx; + if (this.modifierContext) + tieStartX += this.modifierContext.getRightShift(); + return tieStartX; + } + // Get the ending `x` coordinate for a `StaveTie` + getTieLeftX() { + let tieEndX = this.getAbsoluteX(); + tieEndX += this.x_shift - this.leftDisplacedHeadPx; + return tieEndX; + } + // Get the stave line on which to place a rest + getLineForRest() { + let restLine = this.keyProps[0].line; + if (this.keyProps.length > 1) { + const lastLine = this.keyProps[this.keyProps.length - 1].line; + const top = Math.max(restLine, lastLine); + const bot = Math.min(restLine, lastLine); + restLine = (0,_util__WEBPACK_IMPORTED_MODULE_7__.midLine)(top, bot); + } + return restLine; + } + // Get the default `x` and `y` coordinates for the provided `position` + // and key `index` + getModifierStartXY(position, index, options = {}) { + var _a, _b; + if (!this.preFormatted) { + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('UnformattedNote', "Can't call GetModifierStartXY on an unformatted note"); + } + if (this.ys.length === 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('NoYValues', 'No Y-Values calculated for this note.'); + } + const { ABOVE, BELOW, LEFT, RIGHT } = _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position; + let x = 0; + if (position === LEFT) { + // FIXME: Left modifier padding, move to font file + x = -1 * 2; + } + else if (position === RIGHT) { + // FIXME: Right modifier padding, move to font file + x = this.getGlyphWidth() + this.x_shift + 2; + if (this.stem_direction === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP && + this.hasFlag() && + (options.forceFlagRight || isInnerNoteIndex(this, index))) { + x += (_b = (_a = this === null || this === void 0 ? void 0 : this.flag) === null || _a === void 0 ? void 0 : _a.getMetrics().width) !== null && _b !== void 0 ? _b : 0; + } + } + else if (position === BELOW || position === ABOVE) { + x = this.getGlyphWidth() / 2; + } + return { + x: this.getAbsoluteX() + x, + y: this.ys[index], + }; + } + // Sets the style of the complete StaveNote, including all keys + // and the stem. + setStyle(style) { + return super.setGroupStyle(style); + } + setStemStyle(style) { + const stem = this.getStem(); + if (stem) + stem.setStyle(style); + return this; + } + getStemStyle() { + var _a; + return (_a = this.stem) === null || _a === void 0 ? void 0 : _a.getStyle(); + } + setLedgerLineStyle(style) { + this.ledgerLineStyle = style; + } + getLedgerLineStyle() { + return this.ledgerLineStyle; + } + setFlagStyle(style) { + var _a; + (_a = this.flag) === null || _a === void 0 ? void 0 : _a.setStyle(style); + } + getFlagStyle() { + var _a; + return (_a = this.flag) === null || _a === void 0 ? void 0 : _a.getStyle(); + } + // Sets the notehead at `index` to the provided coloring `style`. + // + // `style` is an `object` with the following properties: `shadowColor`, + // `shadowBlur`, `fillStyle`, `strokeStyle` + setKeyStyle(index, style) { + this._noteHeads[index].setStyle(style); + return this; + } + setKeyLine(index, line) { + this.keyProps[index].line = line; + this.reset(); + return this; + } + getKeyLine(index) { + return this.keyProps[index].line; + } + // Get the width of the note if it is displaced. Used for `Voice` + // formatting + getVoiceShiftWidth() { + // TODO: may need to accommodate for dot here. + return this.getGlyphWidth() * (this.displaced ? 2 : 1); + } + // Calculates and sets the extra pixels to the left or right + // if the note is displaced. + calcNoteDisplacements() { + this.setLeftDisplacedHeadPx(this.displaced && this.stem_direction === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.DOWN ? this.getGlyphWidth() : 0); + // For upstems with flags, the extra space is unnecessary, since it's taken + // up by the flag. + this.setRightDisplacedHeadPx(!this.hasFlag() && this.displaced && this.stem_direction === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP ? this.getGlyphWidth() : 0); + } + // Pre-render formatting + preFormat() { + if (this.preFormatted) + return; + let noteHeadPadding = 0; + if (this.modifierContext) { + this.modifierContext.preFormat(); + // If there are no modifiers on this note, make sure there is adequate padding + // between the notes. + if (this.modifierContext.getWidth() === 0) { + noteHeadPadding = StaveNote.minNoteheadPadding; + } + } + let width = this.getGlyphWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx + noteHeadPadding; + // For upward flagged notes, the width of the flag needs to be added + if (this.shouldDrawFlag() && this.stem_direction === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP) { + width += this.getGlyphWidth(); + // TODO: Add flag width as a separate metric + } + this.setWidth(width); + this.preFormatted = true; + } + /** + * @typedef {Object} noteHeadBounds + * @property {number} y_top the highest notehead bound + * @property {number} y_bottom the lowest notehead bound + * @property {number|Null} displaced_x the starting x for displaced noteheads + * @property {number|Null} non_displaced_x the starting x for non-displaced noteheads + * @property {number} highest_line the highest notehead line in traditional music line + * numbering (bottom line = 1, top line = 5) + * @property {number} lowest_line the lowest notehead line + * @property {number|false} highest_displaced_line the highest staff line number + * for a displaced notehead + * @property {number|false} lowest_displaced_line + * @property {number} highest_non_displaced_line + * @property {number} lowest_non_displaced_line + */ + /** + * Get the staff line and y value for the highest & lowest noteheads + * @returns {noteHeadBounds} + */ + getNoteHeadBounds() { + // Top and bottom Y values for stem. + let yTop = +Infinity; + let yBottom = -Infinity; + let nonDisplacedX; + let displacedX; + let highestLine = this.checkStave().getNumLines(); + let lowestLine = 1; + let highestDisplacedLine; + let lowestDisplacedLine; + let highestNonDisplacedLine = highestLine; + let lowestNonDisplacedLine = lowestLine; + this._noteHeads.forEach((notehead) => { + const line = notehead.getLine(); + const y = notehead.getY(); + yTop = Math.min(y, yTop); + yBottom = Math.max(y, yBottom); + if (displacedX === undefined && notehead.isDisplaced()) { + displacedX = notehead.getAbsoluteX(); + } + if (nonDisplacedX === undefined && !notehead.isDisplaced()) { + nonDisplacedX = notehead.getAbsoluteX(); + } + highestLine = Math.max(line, highestLine); + lowestLine = Math.min(line, lowestLine); + if (notehead.isDisplaced()) { + highestDisplacedLine = highestDisplacedLine === undefined ? line : Math.max(line, highestDisplacedLine); + lowestDisplacedLine = lowestDisplacedLine === undefined ? line : Math.min(line, lowestDisplacedLine); + } + else { + highestNonDisplacedLine = Math.max(line, highestNonDisplacedLine); + lowestNonDisplacedLine = Math.min(line, lowestNonDisplacedLine); + } + }, this); + return { + y_top: yTop, + y_bottom: yBottom, + displaced_x: displacedX, + non_displaced_x: nonDisplacedX, + highest_line: highestLine, + lowest_line: lowestLine, + highest_displaced_line: highestDisplacedLine, + lowest_displaced_line: lowestDisplacedLine, + highest_non_displaced_line: highestNonDisplacedLine, + lowest_non_displaced_line: lowestNonDisplacedLine, + }; + } + // Get the starting `x` coordinate for the noteheads + getNoteHeadBeginX() { + return this.getAbsoluteX() + this.x_shift; + } + // Get the ending `x` coordinate for the noteheads + getNoteHeadEndX() { + const xBegin = this.getNoteHeadBeginX(); + return xBegin + this.getGlyphWidth(); + } + get noteHeads() { + return this._noteHeads.slice(); + } + /** @deprecated use StaveNote.noteHeads instead. */ + get note_heads() { + showDeprecationWarningForNoteHeads(); + return this.noteHeads; + } + // Draw the ledger lines between the stave and the highest/lowest keys + drawLedgerLines() { + const stave = this.checkStave(); + const { glyph, render_options: { stroke_px }, } = this; + const ctx = this.checkContext(); + const width = glyph.getWidth() + stroke_px * 2; + const doubleWidth = 2 * (glyph.getWidth() + stroke_px) - _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.WIDTH / 2; + if (this.isRest()) + return; + if (!ctx) { + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('NoCanvasContext', "Can't draw without a canvas context."); + } + const { highest_line, lowest_line, highest_displaced_line, highest_non_displaced_line, lowest_displaced_line, lowest_non_displaced_line, displaced_x, non_displaced_x, } = this.getNoteHeadBounds(); + // Early out if there are no ledger lines to draw. + if (highest_line < 6 && lowest_line > 0) + return; + const min_x = Math.min(displaced_x !== null && displaced_x !== void 0 ? displaced_x : 0, non_displaced_x !== null && non_displaced_x !== void 0 ? non_displaced_x : 0); + const drawLedgerLine = (y, normal, displaced) => { + let x; + if (displaced && normal) + x = min_x - stroke_px; + else if (normal) + x = (non_displaced_x !== null && non_displaced_x !== void 0 ? non_displaced_x : 0) - stroke_px; + else + x = (displaced_x !== null && displaced_x !== void 0 ? displaced_x : 0) - stroke_px; + const ledgerWidth = normal && displaced ? doubleWidth : width; + ctx.beginPath(); + ctx.moveTo(x, y); + ctx.lineTo(x + ledgerWidth, y); + ctx.stroke(); + }; + const style = Object.assign(Object.assign({}, stave.getDefaultLedgerLineStyle()), this.getLedgerLineStyle()); + this.applyStyle(ctx, style); + // Draw ledger lines below the staff: + for (let line = 6; line <= highest_line; ++line) { + const normal = non_displaced_x !== undefined && line <= highest_non_displaced_line; + const displaced = highest_displaced_line !== undefined && line <= highest_displaced_line; + drawLedgerLine(stave.getYForNote(line), normal, displaced); + } + // Draw ledger lines above the staff: + for (let line = 0; line >= lowest_line; --line) { + const normal = non_displaced_x !== undefined && line >= lowest_non_displaced_line; + const displaced = lowest_displaced_line !== undefined && line >= lowest_displaced_line; + drawLedgerLine(stave.getYForNote(line), normal, displaced); + } + this.restoreStyle(ctx, style); + } + // Draw all key modifiers + drawModifiers(noteheadParam) { + const ctx = this.checkContext(); + for (let i = 0; i < this.modifiers.length; i++) { + const modifier = this.modifiers[i]; + const index = modifier.checkIndex(); + const notehead = this._noteHeads[index]; + if (notehead == noteheadParam) { + const noteheadStyle = notehead.getStyle(); + notehead.applyStyle(ctx, noteheadStyle); + modifier.setContext(ctx); + modifier.drawWithStyle(); + notehead.restoreStyle(ctx, noteheadStyle); + } + } + } + shouldDrawFlag() { + const hasStem = this.stem !== undefined; + const hasFlag = this.glyph.flag; // specified in tables.js + const hasNoBeam = this.beam === undefined; + return hasStem && hasFlag && hasNoBeam; + } + // Draw the flag for the note + drawFlag() { + var _a, _b, _c, _d, _e; + const ctx = this.checkContext(); + if (!ctx) { + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('NoCanvasContext', "Can't draw without a canvas context."); + } + if (this.shouldDrawFlag()) { + const { y_top, y_bottom } = this.getNoteHeadBounds(); + // eslint-disable-next-line + const noteStemHeight = this.stem.getHeight(); + const flagX = this.getStemX(); + // What's with the magic +/- 2 + // ANSWER: a corner of the note stem pokes out beyond the tip of the flag. + // The extra +/- 2 pushes the flag glyph outward so it covers the stem entirely. + // Alternatively, we could shorten the stem. + const flagY = this.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.DOWN + ? // Down stems are below the note head and have flags on the right. + y_top - + noteStemHeight + + 2 - + (this.glyph ? this.glyph.stem_down_extension : 0) * this.getStaveNoteScale() - + ((_b = (_a = this.flag) === null || _a === void 0 ? void 0 : _a.getMetrics().y_shift) !== null && _b !== void 0 ? _b : 0) * (1 - this.getStaveNoteScale()) + : // Up stems are above the note head and have flags on the right. + y_bottom - + noteStemHeight - + 2 + + (this.glyph ? this.glyph.stem_up_extension : 0) * this.getStaveNoteScale() - + ((_d = (_c = this.flag) === null || _c === void 0 ? void 0 : _c.getMetrics().y_shift) !== null && _d !== void 0 ? _d : 0) * (1 - this.getStaveNoteScale()); + // Draw the Flag + (_e = this.flag) === null || _e === void 0 ? void 0 : _e.render(ctx, flagX, flagY); + } + } + // Draw the NoteHeads + drawNoteHeads() { + const ctx = this.checkContext(); + this._noteHeads.forEach((notehead) => { + ctx.openGroup('notehead', notehead.getAttribute('id'), { pointerBBox: true }); + notehead.setContext(ctx).draw(); + this.drawModifiers(notehead); + ctx.closeGroup(); + }); + } + drawStem(stemOptions) { + // GCR TODO: I can't find any context in which this is called with the stemStruct + // argument in the codebase or tests. Nor can I find a case where super.drawStem + // is called at all. Perhaps these should be removed? + const ctx = this.checkContext(); + if (stemOptions) { + this.setStem(new _stem__WEBPACK_IMPORTED_MODULE_3__.Stem(stemOptions)); + } + // If we will render a flag, we shorten the stem so that the tip + // does not poke through the flag. + if (this.shouldDrawFlag() && this.stem) { + this.stem.adjustHeightForFlag(); + } + if (this.stem) { + this.stem.setContext(ctx).draw(); + } + } + /** Primarily used as the scaling factor for grace notes, GraceNote will return the required scale. */ + getStaveNoteScale() { + return 1.0; + } + /** + * Override stemmablenote stem extension to adjust for distance from middle line. + */ + getStemExtension() { + const super_stem_extension = super.getStemExtension(); + if (!this.glyph.stem) { + return super_stem_extension; + } + const stem_direction = this.getStemDirection(); + if (stem_direction !== this.calculateOptimalStemDirection()) { + return super_stem_extension; // no adjustment for manually set stem direction. + } + let mid_line_distance; + const MIDDLE_LINE = 3; + if (stem_direction === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP) { + // Note that the use of maxLine here instead of minLine might + // seem counterintuitive, but in the case of (say) treble clef + // chord(F2, E4) stem up, we do not want to extend the stem because + // of F2, when a normal octave-length stem above E4 is fine. + // + // maxLine and minLine are set in calculateOptimalStemDirection() so + // will be known. + mid_line_distance = MIDDLE_LINE - this.maxLine; + } + else { + mid_line_distance = this.minLine - MIDDLE_LINE; + } + // how many lines more than an octave is the relevant notehead? + const lines_over_octave_from_mid_line = mid_line_distance - 3.5; + if (lines_over_octave_from_mid_line <= 0) { + return super_stem_extension; + } + const stave = this.getStave(); + let spacing_between_lines = 10; + if (stave != undefined) { + spacing_between_lines = stave.getSpacingBetweenLines(); + } + return super_stem_extension + lines_over_octave_from_mid_line * spacing_between_lines; + } + // Draws all the `StaveNote` parts. This is the main drawing method. + draw() { + if (this.render_options.draw === false) + return; + if (this.ys.length === 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('NoYValues', "Can't draw note without Y values."); + } + const ctx = this.checkContext(); + const xBegin = this.getNoteHeadBeginX(); + const shouldRenderStem = this.hasStem() && !this.beam; + // Format note head x positions + this._noteHeads.forEach((notehead) => notehead.setX(xBegin)); + if (this.stem) { + // Format stem x positions + const stemX = this.getStemX(); + this.stem.setNoteHeadXBounds(stemX, stemX); + } + L('Rendering ', this.isChord() ? 'chord :' : 'note :', this.keys); + // Apply the overall style -- may be contradicted by local settings: + this.applyStyle(); + ctx.openGroup('stavenote', this.getAttribute('id')); + this.drawLedgerLines(); + if (shouldRenderStem) + this.drawStem(); + this.drawNoteHeads(); + this.drawFlag(); + ctx.closeGroup(); + this.restoreStyle(); + this.setRendered(); + } +} +StaveNote.DEBUG = false; + + +/***/ }), + +/***/ "./src/staverepetition.ts": +/*!********************************!*\ + !*** ./src/staverepetition.ts ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Repetition": () => (/* binding */ Repetition) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Larry Kuhns 2011 + + + + + +class Repetition extends _stavemodifier__WEBPACK_IMPORTED_MODULE_2__.StaveModifier { + constructor(type, x, y_shift) { + super(); + this.symbol_type = type; + this.x = x; + this.x_shift = 0; + this.y_shift = y_shift; + this.resetFont(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_4__.Category.Repetition; + } + setShiftX(x) { + this.x_shift = x; + return this; + } + setShiftY(y) { + this.y_shift = y; + return this; + } + draw(stave, x) { + this.setRendered(); + switch (this.symbol_type) { + case Repetition.type.CODA_RIGHT: + this.drawCodaFixed(stave, x + stave.getWidth()); + break; + case Repetition.type.CODA_LEFT: + this.drawSymbolText(stave, x, 'Coda', true); + break; + case Repetition.type.SEGNO_LEFT: + this.drawSignoFixed(stave, x); + break; + case Repetition.type.SEGNO_RIGHT: + this.drawSignoFixed(stave, x + stave.getWidth()); + break; + case Repetition.type.DC: + this.drawSymbolText(stave, x, 'D.C.', false); + break; + case Repetition.type.DC_AL_CODA: + this.drawSymbolText(stave, x, 'D.C. al', true); + break; + case Repetition.type.DC_AL_FINE: + this.drawSymbolText(stave, x, 'D.C. al Fine', false); + break; + case Repetition.type.DS: + this.drawSymbolText(stave, x, 'D.S.', false); + break; + case Repetition.type.DS_AL_CODA: + this.drawSymbolText(stave, x, 'D.S. al', true); + break; + case Repetition.type.DS_AL_FINE: + this.drawSymbolText(stave, x, 'D.S. al Fine', false); + break; + case Repetition.type.FINE: + this.drawSymbolText(stave, x, 'Fine', false); + break; + case Repetition.type.TO_CODA: + this.drawSymbolText(stave, x, 'To', true); + break; + default: + break; + } + return this; + } + drawCodaFixed(stave, x) { + const y = stave.getYForTopText(stave.getNumLines()) + this.y_shift; + _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderGlyph(stave.checkContext(), this.x + x + this.x_shift, y + _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric('staveRepetition.coda.offsetY'), 40, 'coda', { category: 'coda' }); + return this; + } + drawSignoFixed(stave, x) { + const y = stave.getYForTopText(stave.getNumLines()) + this.y_shift; + _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderGlyph(stave.checkContext(), this.x + x + this.x_shift, y + _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric('staveRepetition.segno.offsetY'), 30, 'segno', { category: 'segno' }); + return this; + } + drawSymbolText(stave, x, text, draw_coda) { + const ctx = stave.checkContext(); + ctx.save(); + ctx.setFont(this.textFont); + let text_x = 0; + let symbol_x = 0; + const modifierWidth = stave.getNoteStartX() - this.x; + switch (this.symbol_type) { + // To the left with symbol + case Repetition.type.CODA_LEFT: + // Offset Coda text to right of stave beginning + text_x = this.x + stave.getVerticalBarWidth(); + symbol_x = + text_x + + ctx.measureText(text).width + + _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX'); + break; + // To the right without symbol + case Repetition.type.DC: + case Repetition.type.DC_AL_FINE: + case Repetition.type.DS: + case Repetition.type.DS_AL_FINE: + case Repetition.type.FINE: + text_x = + this.x + + x + + this.x_shift + + stave.getWidth() - + _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.spacing') - + modifierWidth - + ctx.measureText(text).width; + break; + // To the right with symbol + default: + text_x = + this.x + + x + + this.x_shift + + stave.getWidth() - + _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.spacing') - + modifierWidth - + ctx.measureText(text).width - + _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX'); + symbol_x = + text_x + + ctx.measureText(text).width + + _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX'); + break; + } + const y = stave.getYForTopText(stave.getNumLines()) + + this.y_shift + + _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetY'); + if (draw_coda) { + _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderGlyph(ctx, symbol_x, y, 40, 'coda', { category: 'coda' }); + } + ctx.fillText(text, text_x, y + 5); + ctx.restore(); + return this; + } +} +Repetition.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SERIF, + size: 12, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.BOLD, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL, +}; +Repetition.type = { + NONE: 1, + CODA_LEFT: 2, + CODA_RIGHT: 3, + SEGNO_LEFT: 4, + SEGNO_RIGHT: 5, + DC: 6, + DC_AL_CODA: 7, + DC_AL_FINE: 8, + DS: 9, + DS_AL_CODA: 10, + DS_AL_FINE: 11, + FINE: 12, + TO_CODA: 13, // To Coda at end of stave +}; + + +/***/ }), + +/***/ "./src/stavesection.ts": +/*!*****************************!*\ + !*** ./src/stavesection.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveSection": () => (/* binding */ StaveSection) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Larry Kuhns 2011 + + + +class StaveSection extends _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifier { + constructor(section, x, shift_y, drawRect = true) { + super(); + this.setWidth(16); + this.section = section; + this.x = x; + this.shift_x = 0; + this.shift_y = shift_y; + this.drawRect = drawRect; + this.resetFont(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.StaveSection; + } + setStaveSection(section) { + this.section = section; + return this; + } + setShiftX(x) { + this.shift_x = x; + return this; + } + setShiftY(y) { + this.shift_y = y; + return this; + } + draw(stave, shift_x) { + const ctx = stave.checkContext(); + this.setRendered(); + ctx.save(); + ctx.setLineWidth(2); + ctx.setFont(this.textFont); + const paddingX = 2; + const paddingY = 2; + const rectWidth = 2; + const textMeasurements = ctx.measureText(this.section); + const textWidth = textMeasurements.width; + const textHeight = textMeasurements.height; + const width = textWidth + 2 * paddingX; // add left & right padding + const height = textHeight + 2 * paddingY; // add top & bottom padding + // Seems to be a good default y + const y = stave.getYForTopText(1.5) + this.shift_y; + const x = this.x + shift_x; + if (this.drawRect) { + ctx.beginPath(); + ctx.setLineWidth(rectWidth); + ctx.rect(x, y + textMeasurements.y - paddingY, width, height); + ctx.stroke(); + } + ctx.fillText(this.section, x + paddingX, y); + ctx.restore(); + return this; + } +} +StaveSection.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SANS_SERIF, + size: 10, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.BOLD, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL, +}; + + +/***/ }), + +/***/ "./src/stavetempo.ts": +/*!***************************!*\ + !*** ./src/stavetempo.ts ***! + \***************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveTempo": () => (/* binding */ StaveTempo) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Radosaw Eichler 2012 + + + + + +class StaveTempo extends _stavemodifier__WEBPACK_IMPORTED_MODULE_2__.StaveModifier { + constructor(tempo, x, shift_y) { + super(); + /** Font size for note. */ + this.render_options = { glyph_font_scale: 30 }; + this.tempo = tempo; + this.position = _stavemodifier__WEBPACK_IMPORTED_MODULE_2__.StaveModifierPosition.ABOVE; + this.x = x; + this.shift_x = 10; + this.shift_y = shift_y; + this.resetFont(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_4__.Category.StaveTempo; + } + setTempo(tempo) { + this.tempo = tempo; + return this; + } + setShiftX(x) { + this.shift_x = x; + return this; + } + setShiftY(y) { + this.shift_y = y; + return this; + } + draw(stave, shift_x) { + const ctx = stave.checkContext(); + this.setRendered(); + const options = this.render_options; + // FIXME: What does the '38' mean? Why 38? Is that supposed to + // be the default font size for standard notation? + const scale = options.glyph_font_scale / 38; + const name = this.tempo.name; + const duration = this.tempo.duration; + const dots = this.tempo.dots || 0; + const bpm = this.tempo.bpm; + let x = this.x + this.shift_x + shift_x; + const y = stave.getYForTopText(1) + this.shift_y; + ctx.save(); + if (name) { + ctx.setFont(this.textFont); + ctx.fillText(name, x, y); + x += ctx.measureText(name).width; + } + if (duration && bpm) { + // Override the weight and style. + ctx.setFont(Object.assign(Object.assign({}, this.textFont), { weight: 'normal', style: 'normal' })); + if (name) { + x += ctx.measureText(' ').width; + ctx.fillText('(', x, y); + x += ctx.measureText('(').width; + } + const code = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.getGlyphProps(duration); + x += 3 * scale; + _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderGlyph(ctx, x, y, options.glyph_font_scale, code.code_head); + x += code.getWidth() * scale; + // Draw stem and flags + if (code.stem) { + let stem_height = 30; + if (code.beam_count) + stem_height += 3 * (code.beam_count - 1); + stem_height *= scale; + const y_top = y - stem_height; + ctx.fillRect(x - scale, y_top, scale, stem_height); + if (code.flag) { + _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderGlyph(ctx, x, y_top, options.glyph_font_scale, code.code_flag_upstem, { + category: 'flag.staveTempo', + }); + if (!dots) + x += 6 * scale; + } + } + // Draw dot + for (let i = 0; i < dots; i++) { + x += 6 * scale; + ctx.beginPath(); + ctx.arc(x, y + 2 * scale, 2 * scale, 0, Math.PI * 2, false); + ctx.fill(); + } + ctx.fillText(' = ' + bpm + (name ? ')' : ''), x + 3 * scale, y); + } + ctx.restore(); + return this; + } +} +StaveTempo.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SERIF, + size: 14, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.BOLD, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL, +}; + + +/***/ }), + +/***/ "./src/stavetext.ts": +/*!**************************!*\ + !*** ./src/stavetext.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveText": () => (/* binding */ StaveText) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _textnote__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./textnote */ "./src/textnote.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Taehoon Moon 2014 + + + + + +class StaveText extends _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifier { + constructor(text, position, options = {}) { + super(); + this.setWidth(16); + this.text = text; + this.position = position; + this.options = Object.assign({ shift_x: 0, shift_y: 0, justification: _textnote__WEBPACK_IMPORTED_MODULE_2__.TextNote.Justification.CENTER }, options); + this.resetFont(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.StaveText; + } + setStaveText(text) { + this.text = text; + return this; + } + setShiftX(x) { + this.shift_x = x; + return this; + } + setShiftY(y) { + this.shift_y = y; + return this; + } + setText(text) { + this.text = text; + return this; + } + draw(stave) { + const ctx = stave.checkContext(); + this.setRendered(); + ctx.save(); + ctx.setLineWidth(2); + ctx.setFont(this.textFont); + const text_width = ctx.measureText('' + this.text).width; + let x; + let y; + switch (this.position) { + case _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifierPosition.LEFT: + case _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifierPosition.RIGHT: + y = (stave.getYForLine(0) + stave.getBottomLineY()) / 2 + this.options.shift_y; + if (this.position === _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifierPosition.LEFT) { + x = stave.getX() - text_width - 24 + this.options.shift_x; + } + else { + x = stave.getX() + stave.getWidth() + 24 + this.options.shift_x; + } + break; + case _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifierPosition.ABOVE: + case _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifierPosition.BELOW: + x = stave.getX() + this.options.shift_x; + if (this.options.justification === _textnote__WEBPACK_IMPORTED_MODULE_2__.TextJustification.CENTER) { + x += stave.getWidth() / 2 - text_width / 2; + } + else if (this.options.justification === _textnote__WEBPACK_IMPORTED_MODULE_2__.TextJustification.RIGHT) { + x += stave.getWidth() - text_width; + } + if (this.position === _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifierPosition.ABOVE) { + y = stave.getYForTopText(2) + this.options.shift_y; + } + else { + y = stave.getYForBottomText(2) + this.options.shift_y; + } + break; + default: + throw new _util__WEBPACK_IMPORTED_MODULE_4__.RuntimeError('InvalidPosition', 'Value Must be in Modifier.Position.'); + } + ctx.fillText('' + this.text, x, y + 4); + ctx.restore(); + return this; + } +} +StaveText.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SERIF, + size: 16, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.NORMAL, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL, +}; + + +/***/ }), + +/***/ "./src/stavetie.ts": +/*!*************************!*\ + !*** ./src/stavetie.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveTie": () => (/* binding */ StaveTie) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// This class implements varies types of ties between contiguous notes. The +// ties include: regular ties, hammer ons, pull offs, and slides. + + + +class StaveTie extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + /** + * @param notes is a struct that has: + * + * { + * first_note: Note, + * last_note: Note, + * first_indices: [n1, n2, n3], + * last_indices: [n1, n2, n3] + * } + * + * @param text + */ + constructor(notes, text) { + super(); + this.setNotes(notes); + this.text = text; + this.render_options = { + cp1: 8, + cp2: 12, + text_shift_x: 0, + first_x_shift: 0, + last_x_shift: 0, + y_shift: 7, + tie_spacing: 0, + }; + this.resetFont(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_1__.Category.StaveTie; + } + setDirection(direction) { + this.direction = direction; + return this; + } + /** + * Set the notes to attach this tie to. + * + * @param {!Object} notes The notes to tie up. + */ + setNotes(notes) { + if (!notes.first_note && !notes.last_note) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', 'Tie needs to have either first_note or last_note set.'); + } + if (!notes.first_indices) { + notes.first_indices = [0]; + } + if (!notes.last_indices) { + notes.last_indices = [0]; + } + if (notes.first_indices.length !== notes.last_indices.length) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', 'Tied notes must have same number of indices.'); + } + this.notes = notes; + return this; + } + /** + * @return {boolean} Returns true if this is a partial bar. + */ + isPartial() { + return !this.notes.first_note || !this.notes.last_note; + } + renderTie(params) { + if (params.first_ys.length === 0 || params.last_ys.length === 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', 'No Y-values to render'); + } + const ctx = this.checkContext(); + let cp1 = this.render_options.cp1; + let cp2 = this.render_options.cp2; + if (Math.abs(params.last_x_px - params.first_x_px) < 10) { + cp1 = 2; + cp2 = 8; + } + const first_x_shift = this.render_options.first_x_shift; + const last_x_shift = this.render_options.last_x_shift; + const y_shift = this.render_options.y_shift * params.direction; + // setNotes(...) verified that first_indices and last_indices are not undefined. + // As a result, we use the ! non-null assertion operator here. + // eslint-disable-next-line + const first_indices = this.notes.first_indices; + // eslint-disable-next-line + const last_indices = this.notes.last_indices; + for (let i = 0; i < first_indices.length; ++i) { + const cp_x = (params.last_x_px + last_x_shift + (params.first_x_px + first_x_shift)) / 2; + const first_y_px = params.first_ys[first_indices[i]] + y_shift; + const last_y_px = params.last_ys[last_indices[i]] + y_shift; + if (isNaN(first_y_px) || isNaN(last_y_px)) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', 'Bad indices for tie rendering.'); + } + const top_cp_y = (first_y_px + last_y_px) / 2 + cp1 * params.direction; + const bottom_cp_y = (first_y_px + last_y_px) / 2 + cp2 * params.direction; + ctx.openGroup('stavetie', this.getAttribute('id')); + ctx.beginPath(); + ctx.moveTo(params.first_x_px + first_x_shift, first_y_px); + ctx.quadraticCurveTo(cp_x, top_cp_y, params.last_x_px + last_x_shift, last_y_px); + ctx.quadraticCurveTo(cp_x, bottom_cp_y, params.first_x_px + first_x_shift, first_y_px); + ctx.closePath(); + ctx.fill(); + ctx.closeGroup(); + } + } + renderText(first_x_px, last_x_px) { + var _a, _b, _c; + if (!this.text) + return; + const ctx = this.checkContext(); + let center_x = (first_x_px + last_x_px) / 2; + center_x -= ctx.measureText(this.text).width / 2; + const stave = (_b = (_a = this.notes.first_note) === null || _a === void 0 ? void 0 : _a.checkStave()) !== null && _b !== void 0 ? _b : (_c = this.notes.last_note) === null || _c === void 0 ? void 0 : _c.checkStave(); + if (stave) { + ctx.save(); + ctx.setFont(this.textFont); + ctx.fillText(this.text, center_x + this.render_options.text_shift_x, stave.getYForTopText() - 1); + ctx.restore(); + } + } + /** + * Returns the TieNotes structure of the first and last note this tie connects. + */ + getNotes() { + return this.notes; + } + draw() { + this.checkContext(); + this.setRendered(); + const first_note = this.notes.first_note; + const last_note = this.notes.last_note; + // Provide some default values so the compiler doesn't complain. + let first_x_px = 0; + let last_x_px = 0; + let first_ys = [0]; + let last_ys = [0]; + let stem_direction = 0; + if (first_note) { + first_x_px = first_note.getTieRightX() + this.render_options.tie_spacing; + stem_direction = first_note.getStemDirection(); + first_ys = first_note.getYs(); + } + else if (last_note) { + const stave = last_note.checkStave(); + first_x_px = stave.getTieStartX(); + first_ys = last_note.getYs(); + this.notes.first_indices = this.notes.last_indices; + } + if (last_note) { + last_x_px = last_note.getTieLeftX() + this.render_options.tie_spacing; + stem_direction = last_note.getStemDirection(); + last_ys = last_note.getYs(); + } + else if (first_note) { + const stave = first_note.checkStave(); + last_x_px = stave.getTieEndX(); + last_ys = first_note.getYs(); + this.notes.last_indices = this.notes.first_indices; + } + if (this.direction) { + stem_direction = this.direction; + } + this.renderTie({ + first_x_px, + last_x_px, + first_ys, + last_ys, + direction: stem_direction, + }); + this.renderText(first_x_px, last_x_px); + return true; + } +} +/** Default text font. */ +StaveTie.TEXT_FONT = Object.assign({}, _element__WEBPACK_IMPORTED_MODULE_0__.Element.TEXT_FONT); + + +/***/ }), + +/***/ "./src/stavevolta.ts": +/*!***************************!*\ + !*** ./src/stavevolta.ts ***! + \***************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "VoltaType": () => (/* binding */ VoltaType), +/* harmony export */ "Volta": () => (/* binding */ Volta) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Larry Kuhns 2011 + + + +var VoltaType; +(function (VoltaType) { + VoltaType[VoltaType["NONE"] = 1] = "NONE"; + VoltaType[VoltaType["BEGIN"] = 2] = "BEGIN"; + VoltaType[VoltaType["MID"] = 3] = "MID"; + VoltaType[VoltaType["END"] = 4] = "END"; + VoltaType[VoltaType["BEGIN_END"] = 5] = "BEGIN_END"; +})(VoltaType || (VoltaType = {})); +class Volta extends _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifier { + constructor(type, number, x, y_shift) { + super(); + this.volta = type; + this.x = x; + this.y_shift = y_shift; + this.number = number; + this.resetFont(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.Volta; + } + static get type() { + return VoltaType; + } + setShiftY(y) { + this.y_shift = y; + return this; + } + draw(stave, x) { + const ctx = stave.checkContext(); + this.setRendered(); + let width = stave.getWidth() - x; // don't include x (offset) for width + const top_y = stave.getYForTopText(stave.getNumLines()) + this.y_shift; + const vert_height = 1.5 * stave.getSpacingBetweenLines(); + switch (this.volta) { + case VoltaType.BEGIN: + ctx.fillRect(this.x + x, top_y, 1, vert_height); + break; + case VoltaType.END: + width -= 5; + ctx.fillRect(this.x + x + width, top_y, 1, vert_height); + break; + case VoltaType.BEGIN_END: + width -= 3; + ctx.fillRect(this.x + x, top_y, 1, vert_height); + ctx.fillRect(this.x + x + width, top_y, 1, vert_height); + break; + default: + break; + } + // If the beginning of a volta, draw measure number + if (this.volta === VoltaType.BEGIN || this.volta === VoltaType.BEGIN_END) { + ctx.save(); + ctx.setFont(this.textFont); + ctx.fillText(this.number, this.x + x + 5, top_y + 15); + ctx.restore(); + } + ctx.fillRect(this.x + x, top_y, width, 1); + return this; + } +} +Volta.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SANS_SERIF, + size: 9, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.BOLD, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL, +}; + + +/***/ }), + +/***/ "./src/stem.ts": +/*!*********************!*\ + !*** ./src/stem.ts ***! + \*********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Stem": () => (/* binding */ Stem) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// This file implements the `Stem` object. Generally this object is handled +// by its parent `StemmableNote`. + + + + +// eslint-disable-next-line +function L(...args) { + if (Stem.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_3__.log)('Vex.Flow.Stem', args); +} +class Stem extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + constructor(options) { + super(); + this.stem_up_y_offset = 0; + this.stem_down_y_offset = 0; + this.stem_up_y_base_offset = 0; + this.stem_down_y_base_offset = 0; + // Default notehead x bounds + this.x_begin = (options === null || options === void 0 ? void 0 : options.x_begin) || 0; + this.x_end = (options === null || options === void 0 ? void 0 : options.x_end) || 0; + // Y bounds for top/bottom most notehead + this.y_top = (options === null || options === void 0 ? void 0 : options.y_top) || 0; + this.y_bottom = (options === null || options === void 0 ? void 0 : options.y_bottom) || 0; + // Stem top extension + this.stem_extension = (options === null || options === void 0 ? void 0 : options.stem_extension) || 0; + // Direction of the stem + this.stem_direction = (options === null || options === void 0 ? void 0 : options.stem_direction) || 0; + // Flag to override all draw calls + this.hide = (options === null || options === void 0 ? void 0 : options.hide) || false; + this.isStemlet = (options === null || options === void 0 ? void 0 : options.isStemlet) || false; + this.stemletHeight = (options === null || options === void 0 ? void 0 : options.stemletHeight) || 0; + // Use to adjust the rendered height without affecting + // the results of `.getExtents()` + this.renderHeightAdjustment = 0; + this.setOptions(options); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.Stem; + } + // Stem directions + static get UP() { + return 1; + } + static get DOWN() { + return -1; + } + // Theme + static get WIDTH() { + return _tables__WEBPACK_IMPORTED_MODULE_1__.Tables.STEM_WIDTH; + } + static get HEIGHT() { + return _tables__WEBPACK_IMPORTED_MODULE_1__.Tables.STEM_HEIGHT; + } + setOptions(options) { + // Changing where the stem meets the head + this.stem_up_y_offset = (options === null || options === void 0 ? void 0 : options.stem_up_y_offset) || 0; + this.stem_down_y_offset = (options === null || options === void 0 ? void 0 : options.stem_down_y_offset) || 0; + this.stem_up_y_base_offset = (options === null || options === void 0 ? void 0 : options.stem_up_y_base_offset) || 0; + this.stem_down_y_base_offset = (options === null || options === void 0 ? void 0 : options.stem_down_y_base_offset) || 0; + } + // Set the x bounds for the default notehead + setNoteHeadXBounds(x_begin, x_end) { + this.x_begin = x_begin; + this.x_end = x_end; + return this; + } + // Set the direction of the stem in relation to the noteheads + setDirection(direction) { + this.stem_direction = direction; + } + // Set the extension for the stem, generally for flags or beams + setExtension(ext) { + this.stem_extension = ext; + } + getExtension() { + return this.stem_extension; + } + // The the y bounds for the top and bottom noteheads + setYBounds(y_top, y_bottom) { + this.y_top = y_top; + this.y_bottom = y_bottom; + } + // Gets the entire height for the stem + getHeight() { + const y_offset = this.stem_direction === Stem.UP ? this.stem_up_y_offset : this.stem_down_y_offset; + const unsigned_height = this.y_bottom - this.y_top + (Stem.HEIGHT - y_offset + this.stem_extension); // parentheses just for grouping. + return unsigned_height * this.stem_direction; + } + getBoundingBox() { + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('NotImplemented', 'getBoundingBox() not implemented.'); + } + // Get the y coordinates for the very base of the stem to the top of + // the extension + getExtents() { + const isStemUp = this.stem_direction === Stem.UP; + const ys = [this.y_top, this.y_bottom]; + const stemHeight = Stem.HEIGHT + this.stem_extension; + const innerMostNoteheadY = (isStemUp ? Math.min : Math.max)(...ys); + const outerMostNoteheadY = (isStemUp ? Math.max : Math.min)(...ys); + const stemTipY = innerMostNoteheadY + stemHeight * -this.stem_direction; + return { topY: stemTipY, baseY: outerMostNoteheadY }; + } + setVisibility(isVisible) { + this.hide = !isVisible; + return this; + } + setStemlet(isStemlet, stemletHeight) { + this.isStemlet = isStemlet; + this.stemletHeight = stemletHeight; + return this; + } + adjustHeightForFlag() { + this.renderHeightAdjustment = _tables__WEBPACK_IMPORTED_MODULE_1__.Tables.currentMusicFont().lookupMetric('stem.heightAdjustmentForFlag', -3); + } + adjustHeightForBeam() { + this.renderHeightAdjustment = -Stem.WIDTH / 2; + } + // Render the stem onto the canvas + draw() { + this.setRendered(); + if (this.hide) + return; + const ctx = this.checkContext(); + let stem_x; + let stem_y; + const stem_direction = this.stem_direction; + let y_base_offset = 0; + if (stem_direction === Stem.DOWN) { + // Down stems are rendered to the left of the head. + stem_x = this.x_begin; + stem_y = this.y_top + this.stem_down_y_offset; + y_base_offset = this.stem_down_y_base_offset; + } + else { + // Up stems are rendered to the right of the head. + stem_x = this.x_end; + stem_y = this.y_bottom - this.stem_up_y_offset; + y_base_offset = this.stem_up_y_base_offset; + } + const stemHeight = this.getHeight(); + L('Rendering stem - ', 'Top Y: ', this.y_top, 'Bottom Y: ', this.y_bottom); + // The offset from the stem's base which is required fo satisfy the stemlet height + const stemletYOffset = this.isStemlet ? stemHeight - this.stemletHeight * this.stem_direction : 0; + // Draw the stem + ctx.save(); + ctx.openGroup('stem', this.getAttribute('id'), { pointerBBox: true }); + this.applyStyle(ctx); + ctx.beginPath(); + ctx.setLineWidth(Stem.WIDTH); + ctx.moveTo(stem_x, stem_y - stemletYOffset + y_base_offset); + ctx.lineTo(stem_x, stem_y - stemHeight - this.renderHeightAdjustment * stem_direction); + ctx.stroke(); + this.restoreStyle(ctx); + ctx.closeGroup(); + ctx.restore(); + } +} +/** To enable logging for this class. Set `Vex.Flow.Stem.DEBUG` to `true`. */ +Stem.DEBUG = false; + + +/***/ }), + +/***/ "./src/stemmablenote.ts": +/*!******************************!*\ + !*** ./src/stemmablenote.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StemmableNote": () => (/* binding */ StemmableNote) +/* harmony export */ }); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// `StemmableNote` is an abstract interface for notes with optional stems. +// Examples of stemmable notes are `StaveNote` and `TabNote` + + + + + + +class StemmableNote extends _note__WEBPACK_IMPORTED_MODULE_1__.Note { + constructor(noteStruct) { + super(noteStruct); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_4__.Category.StemmableNote; + } + // Get and set the note's `Stem` + getStem() { + return this.stem; + } + checkStem() { + if (!this.stem) { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('NoStem', 'No stem attached to instance'); + } + return this.stem; + } + setStem(stem) { + this.stem = stem; + this.addChildElement(stem); + return this; + } + // Builds and sets a new stem + buildStem() { + const stem = new _stem__WEBPACK_IMPORTED_MODULE_2__.Stem(); + this.setStem(stem); + return this; + } + buildFlag(category = 'flag') { + const { glyph } = this; + if (this.hasFlag()) { + const flagCode = this.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN ? glyph.code_flag_downstem : glyph.code_flag_upstem; + this.flag = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph(flagCode, this.render_options.glyph_font_scale, { category }); + } + } + // Get the custom glyph associated with the outer note head on the base of the stem. + getBaseCustomNoteHeadGlyph() { + if (this.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN) { + return this.customGlyphs[this.customGlyphs.length - 1]; + } + else { + return this.customGlyphs[0]; + } + } + // Get the full length of stem + getStemLength() { + return _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.HEIGHT + this.getStemExtension(); + } + // Get the number of beams for this duration + getBeamCount() { + const glyph = this.getGlyph(); + if (glyph) { + return glyph.beam_count; + } + else { + return 0; + } + } + // Get the minimum length of stem + getStemMinimumLength() { + const frac = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.durationToFraction(this.duration); + let length = frac.value() <= 1 ? 0 : 20; + // if note is flagged, cannot shorten beam + switch (this.duration) { + case '8': + if (this.beam == undefined) + length = 35; + break; + case '16': + length = this.beam == undefined ? 35 : 25; + break; + case '32': + length = this.beam == undefined ? 45 : 35; + break; + case '64': + length = this.beam == undefined ? 50 : 40; + break; + case '128': + length = this.beam == undefined ? 55 : 45; + break; + default: + break; + } + return length; + } + // Get/set the direction of the stem + getStemDirection() { + if (!this.stem_direction) + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('NoStem', 'No stem attached to this note.'); + return this.stem_direction; + } + setStemDirection(direction) { + if (!direction) + direction = _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP; + if (direction !== _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP && direction !== _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN) { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('BadArgument', `Invalid stem direction: ${direction}`); + } + this.stem_direction = direction; + // Reset and reformat everything. Flag has to be built before calling getStemExtension. + this.reset(); + if (this.hasFlag()) { + this.buildFlag(); + } + this.beam = undefined; + if (this.stem) { + this.stem.setDirection(direction); + this.stem.setExtension(this.getStemExtension()); + // Lookup the base custom notehead (closest to the base of the stem) to extend or shorten + // the stem appropriately. If there's no custom note head, lookup the standard notehead. + const glyph = this.getBaseCustomNoteHeadGlyph() || this.getGlyph(); + // Get the font-specific customizations for the note heads. + const offsets = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric(`stem.noteHead.${glyph.code_head}`, { + offsetYBaseStemUp: 0, + offsetYTopStemUp: 0, + offsetYBaseStemDown: 0, + offsetYTopStemDown: 0, + }); + // Configure the stem to use these offsets. + this.stem.setOptions({ + stem_up_y_offset: offsets.offsetYTopStemUp, + stem_down_y_offset: offsets.offsetYTopStemDown, + stem_up_y_base_offset: offsets.offsetYBaseStemUp, + stem_down_y_base_offset: offsets.offsetYBaseStemDown, // glyph.stem_down_y_base_offset, + }); + } + if (this.preFormatted) { + this.preFormat(); + } + return this; + } + // Get the `x` coordinate of the stem + getStemX() { + const x_begin = this.getAbsoluteX() + this.x_shift; + const x_end = this.getAbsoluteX() + this.x_shift + this.getGlyphWidth(); + const stem_x = this.stem_direction === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN ? x_begin : x_end; + return stem_x; + } + // Get the `x` coordinate for the center of the glyph. + // Used for `TabNote` stems and stemlets over rests + getCenterGlyphX() { + return this.getAbsoluteX() + this.x_shift + this.getGlyphWidth() / 2; + } + // Get the stem extension for the current duration + getStemExtension() { + const glyph = this.getGlyph(); + if (this.stem_extension_override != undefined) { + return this.stem_extension_override; + } + // Use stem_beam_extension with beams + if (this.beam) { + return glyph.stem_beam_extension; + } + if (glyph) { + return this.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP ? glyph.stem_up_extension : glyph.stem_down_extension; + } + return 0; + } + // Set the stem length to a specific. Will override the default length. + setStemLength(height) { + this.stem_extension_override = height - _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.HEIGHT; + return this; + } + // Get the top and bottom `y` values of the stem. + getStemExtents() { + if (!this.stem) + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('NoStem', 'No stem attached to this note.'); + return this.stem.getExtents(); + } + /** Gets the `y` value for the top modifiers at a specific `textLine`. */ + getYForTopText(textLine) { + const stave = this.checkStave(); + if (this.hasStem()) { + const extents = this.getStemExtents(); + if (!extents) + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('InvalidState', 'Stem does not have extents.'); + return Math.min(stave.getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1)); + } + else { + return stave.getYForTopText(textLine); + } + } + /** Gets the `y` value for the bottom modifiers at a specific `textLine`. */ + getYForBottomText(textLine) { + const stave = this.checkStave(); + if (this.hasStem()) { + const extents = this.getStemExtents(); + if (!extents) + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('InvalidState', 'Stem does not have extents.'); + return Math.max(stave.getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine); + } + else { + return stave.getYForBottomText(textLine); + } + } + hasFlag() { + return _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.getGlyphProps(this.duration).flag && !this.beam; + } + /** Post formats the note. */ + postFormat() { + var _a; + (_a = this.beam) === null || _a === void 0 ? void 0 : _a.postFormat(); + this.postFormatted = true; + return this; + } + /** Renders the stem onto the canvas. */ + drawStem(stemOptions) { + var _a; + this.checkContext(); + this.setRendered(); + this.setStem(new _stem__WEBPACK_IMPORTED_MODULE_2__.Stem(stemOptions)); + (_a = this.stem) === null || _a === void 0 ? void 0 : _a.setContext(this.getContext()).draw(); + } +} + + +/***/ }), + +/***/ "./src/stringnumber.ts": +/*!*****************************!*\ + !*** ./src/stringnumber.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StringNumber": () => (/* binding */ StringNumber) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _renderer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./renderer */ "./src/renderer.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Larry Kuhns +// +// This file implements the `StringNumber` class which renders string +// number annotations beside notes. + + + + + + + +class StringNumber extends _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier { + constructor(number) { + super(); + this.string_number = number; + this.position = _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.ABOVE; // Default position above stem or note head + this.x_shift = 0; + this.y_shift = 0; + this.text_line = 0; + this.stem_offset = 0; + this.x_offset = 0; // Horizontal offset from default + this.y_offset = 0; // Vertical offset from default + this.dashed = true; // true - draw dashed extension false - no extension + this.leg = _renderer__WEBPACK_IMPORTED_MODULE_2__.Renderer.LineEndType.NONE; // draw upward/downward leg at the of extension line + this.radius = 8; + this.drawCircle = true; + this.setWidth(this.radius * 2 + 4); + this.resetFont(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_5__.Category.StringNumber; + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + static get metrics() { + return _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.currentMusicFont().getMetrics().glyphs.stringNumber; + } + // ## Static Methods + // Arrange string numbers inside a `ModifierContext` + static format(nums, state) { + const left_shift = state.left_shift; + const right_shift = state.right_shift; + const num_spacing = 1; + if (!nums || nums.length === 0) + return false; + const nums_list = []; + let prev_note = null; + let shift_left = 0; + let shift_right = 0; + const modLines = 0; + for (let i = 0; i < nums.length; ++i) { + const num = nums[i]; + const note = num.getNote(); + const pos = num.getPosition(); + if (!(0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isStaveNote)(note)) { + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('NoStaveNote'); + } + const index = num.checkIndex(); + const props = note.getKeyProps()[index]; + const mc = note.getModifierContext(); + const verticalSpaceNeeded = (num.radius * 2) / _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.STAVE_LINE_DISTANCE + 0.5; + if (mc) { + if (pos === _modifier__WEBPACK_IMPORTED_MODULE_1__.ModifierPosition.ABOVE) { + num.text_line = mc.getState().top_text_line; + state.top_text_line += verticalSpaceNeeded; + } + else if (pos === _modifier__WEBPACK_IMPORTED_MODULE_1__.ModifierPosition.BELOW) { + num.text_line = mc.getState().text_line; + state.text_line += verticalSpaceNeeded; + } + } + if (note !== prev_note) { + for (let n = 0; n < note.keys.length; ++n) { + if (left_shift === 0) { + shift_left = Math.max(note.getLeftDisplacedHeadPx(), shift_left); + } + if (right_shift === 0) { + shift_right = Math.max(note.getRightDisplacedHeadPx(), shift_right); + } + } + prev_note = note; + } + const glyphLine = modLines === 0 ? props.line : modLines; + nums_list.push({ + pos, + note, + num, + line: glyphLine, + shiftL: shift_left, + shiftR: shift_right, + }); + } + // Sort string numbers by line number. + nums_list.sort((a, b) => b.line - a.line); + let num_shiftR = 0; + let x_widthL = 0; + let x_widthR = 0; + let last_line = null; + let last_note = null; + for (let i = 0; i < nums_list.length; ++i) { + let num_shift = 0; + const note = nums_list[i].note; + const pos = nums_list[i].pos; + const num = nums_list[i].num; + const line = nums_list[i].line; + const shiftR = nums_list[i].shiftR; + // Reset the position of the string number every line. + if (line !== last_line || note !== last_note) { + num_shiftR = right_shift + shiftR; + } + const num_width = num.getWidth() + num_spacing; + if (pos === _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.LEFT) { + num.setXShift(left_shift); + num_shift = shift_left + num_width; // spacing + x_widthL = num_shift > x_widthL ? num_shift : x_widthL; + } + else if (pos === _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.RIGHT) { + num.setXShift(num_shiftR); + num_shift += num_width; // spacing + x_widthR = num_shift > x_widthR ? num_shift : x_widthR; + } + last_line = line; + last_note = note; + } + state.left_shift += x_widthL; + state.right_shift += x_widthR; + return true; + } + setLineEndType(leg) { + if (leg >= _renderer__WEBPACK_IMPORTED_MODULE_2__.Renderer.LineEndType.NONE && leg <= _renderer__WEBPACK_IMPORTED_MODULE_2__.Renderer.LineEndType.DOWN) { + this.leg = leg; + } + return this; + } + setStringNumber(number) { + this.string_number = number; + return this; + } + setOffsetX(x) { + this.x_offset = x; + return this; + } + setOffsetY(y) { + this.y_offset = y; + return this; + } + setLastNote(note) { + this.last_note = note; + return this; + } + setDashed(dashed) { + this.dashed = dashed; + return this; + } + setDrawCircle(drawCircle) { + this.drawCircle = drawCircle; + return this; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const start = note.getModifierStartXY(this.position, this.index); + const stemDirection = note.hasStem() ? note.getStemDirection() : _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP; + let dot_x = start.x + this.x_shift + this.x_offset; + let stem_ext = {}; + if (note.hasStem()) { + stem_ext = note.checkStem().getExtents(); + } + let dot_y = start.y + this.y_shift + this.y_offset; + switch (this.position) { + case _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.ABOVE: + { + const ys = note.getYs(); + dot_y = ys.reduce((a, b) => (a < b ? a : b)); + if (note.hasStem() && stemDirection == _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP) { + dot_y = stem_ext.topY + StringNumber.metrics.stemPadding; + } + dot_y -= this.radius + StringNumber.metrics.verticalPadding + this.text_line * _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.STAVE_LINE_DISTANCE; + } + break; + case _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.BELOW: + { + const ys = note.getYs(); + dot_y = ys.reduce((a, b) => (a > b ? a : b)); + if (note.hasStem() && stemDirection == _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.DOWN) { + dot_y = stem_ext.topY - StringNumber.metrics.stemPadding; + } + dot_y += this.radius + StringNumber.metrics.verticalPadding + this.text_line * _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.STAVE_LINE_DISTANCE; + } + break; + case _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.LEFT: + dot_x -= this.radius / 2 + StringNumber.metrics.leftPadding; + break; + case _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.RIGHT: + dot_x += this.radius / 2 + StringNumber.metrics.rightPadding; + break; + default: + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('InvalidPosition', `The position ${this.position} is invalid`); + } + ctx.save(); + if (this.drawCircle) { + ctx.beginPath(); + ctx.arc(dot_x, dot_y, this.radius, 0, Math.PI * 2, false); + ctx.setLineWidth(1.5); + ctx.stroke(); + } + ctx.setFont(this.textFont); + const x = dot_x - ctx.measureText(this.string_number).width / 2; + ctx.fillText('' + this.string_number, x, dot_y + 4.5); + const lastNote = this.last_note; + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isStemmableNote)(lastNote)) { + // Only StemmableNote objects have getStemX(). + const end = lastNote.getStemX() - note.getX() + 5; + ctx.setStrokeStyle('#000000'); + ctx.setLineCap('round'); + ctx.setLineWidth(0.6); + if (this.dashed) { + _renderer__WEBPACK_IMPORTED_MODULE_2__.Renderer.drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 3]); + } + else { + _renderer__WEBPACK_IMPORTED_MODULE_2__.Renderer.drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 0]); + } + let len; + let pattern; + switch (this.leg) { + case _renderer__WEBPACK_IMPORTED_MODULE_2__.Renderer.LineEndType.UP: + len = -10; + pattern = this.dashed ? [3, 3] : [3, 0]; + _renderer__WEBPACK_IMPORTED_MODULE_2__.Renderer.drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern); + break; + case _renderer__WEBPACK_IMPORTED_MODULE_2__.Renderer.LineEndType.DOWN: + len = 10; + pattern = this.dashed ? [3, 3] : [3, 0]; + _renderer__WEBPACK_IMPORTED_MODULE_2__.Renderer.drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern); + break; + default: + break; + } + } + ctx.restore(); + } +} +StringNumber.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SANS_SERIF, + size: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SIZE, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.BOLD, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL, +}; + + +/***/ }), + +/***/ "./src/strokes.ts": +/*!************************!*\ + !*** ./src/strokes.ts ***! + \************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Stroke": () => (/* binding */ Stroke) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Larry Kuhns +// +// This file implements the `Stroke` class which renders chord strokes +// that can be arpeggiated, brushed, rasquedo, etc. + + + + + +class Stroke extends _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier { + constructor(type, options) { + super(); + this.options = Object.assign({ all_voices: true }, options); + // multi voice - span stroke across all voices if true + this.all_voices = this.options.all_voices; + // multi voice - end note of stroke, set in draw() + this.type = type; + this.position = _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier.Position.LEFT; + this.render_options = { + font_scale: 38, + }; + this.resetFont(); + this.setXShift(0); + this.setWidth(10); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.Stroke; + } + // Arrange strokes inside `ModifierContext` + static format(strokes, state) { + const left_shift = state.left_shift; + const stroke_spacing = 0; + if (!strokes || strokes.length === 0) + return false; + const strokeList = strokes.map((stroke) => { + const note = stroke.getNote(); + const index = stroke.checkIndex(); + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_3__.isStaveNote)(note)) { + // Only StaveNote objects have getKeyProps(). + const { line } = note.getKeyProps()[index]; + const shift = note.getLeftDisplacedHeadPx(); + return { line, shift, stroke }; + } + else if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_3__.isTabNote)(note)) { + // Only TabNote objects have getPositions(). + const { str: string } = note.getPositions()[index]; + return { line: string, shift: 0, stroke }; + } + else { + throw new _util__WEBPACK_IMPORTED_MODULE_4__.RuntimeError('Internal', 'Unexpected instance.'); + } + }); + const strokeShift = left_shift; + // There can only be one stroke .. if more than one, they overlay each other + const xShift = strokeList.reduce((xShift, { stroke, shift }) => { + stroke.setXShift(strokeShift + shift); + return Math.max(stroke.getWidth() + stroke_spacing, xShift); + }, 0); + state.left_shift += xShift; + return true; + } + getPosition() { + return this.position; + } + addEndNote(note) { + this.note_end = note; + return this; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const start = note.getModifierStartXY(this.position, this.index); + let ys = note.getYs(); + let topY = start.y; + let botY = start.y; + const x = start.x - 5; + const line_space = note.checkStave().getSpacingBetweenLines(); + const notes = this.checkModifierContext().getMembers(note.getCategory()); + for (let i = 0; i < notes.length; i++) { + const note = notes[i]; + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_3__.isNote)(note)) { + // Only Note objects have getYs(). + // note is an instance of either StaveNote or TabNote. + ys = note.getYs(); + for (let n = 0; n < ys.length; n++) { + if (this.note === notes[i] || this.all_voices) { + topY = Math.min(topY, ys[n]); + botY = Math.max(botY, ys[n]); + } + } + } + } + let arrow = ''; + let arrow_shift_x = 0; + let arrow_y = 0; + let text_shift_x = 0; + let text_y = 0; + switch (this.type) { + case Stroke.Type.BRUSH_DOWN: + arrow = 'arrowheadBlackUp'; + arrow_shift_x = -3; + arrow_y = topY - line_space / 2 + 10; + botY += line_space / 2; + break; + case Stroke.Type.BRUSH_UP: + arrow = 'arrowheadBlackDown'; + arrow_shift_x = 0.5; + arrow_y = botY + line_space / 2; + topY -= line_space / 2; + break; + case Stroke.Type.ROLL_DOWN: + case Stroke.Type.RASQUEDO_DOWN: + arrow = 'arrowheadBlackUp'; + arrow_shift_x = -3; + text_shift_x = this.x_shift + arrow_shift_x - 2; + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_3__.isStaveNote)(note)) { + topY += 1.5 * line_space; + if ((botY - topY) % 2 !== 0) { + botY += 0.5 * line_space; + } + else { + botY += line_space; + } + arrow_y = topY - line_space; + text_y = botY + line_space + 2; + } + else { + topY += 1.5 * line_space; + botY += line_space; + arrow_y = topY - 0.75 * line_space; + text_y = botY + 0.25 * line_space; + } + break; + case Stroke.Type.ROLL_UP: + case Stroke.Type.RASQUEDO_UP: + arrow = 'arrowheadBlackDown'; + arrow_shift_x = -4; + text_shift_x = this.x_shift + arrow_shift_x - 1; + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_3__.isStaveNote)(note)) { + arrow_y = line_space / 2; + topY += 0.5 * line_space; + if ((botY - topY) % 2 === 0) { + botY += line_space / 2; + } + arrow_y = botY + 0.5 * line_space; + text_y = topY - 1.25 * line_space; + } + else { + topY += 0.25 * line_space; + botY += 0.5 * line_space; + arrow_y = botY + 0.25 * line_space; + text_y = topY - line_space; + } + break; + case Stroke.Type.ARPEGGIO_DIRECTIONLESS: + topY += 0.5 * line_space; + botY += line_space; // * 0.5 can lead to slight underlap instead of overlap sometimes + break; + default: + throw new _util__WEBPACK_IMPORTED_MODULE_4__.RuntimeError('InvalidType', `The stroke type ${this.type} does not exist`); + } + let strokeLine = 'straight'; + // Draw the stroke + if (this.type === Stroke.Type.BRUSH_DOWN || this.type === Stroke.Type.BRUSH_UP) { + ctx.fillRect(x + this.x_shift, topY, 1, botY - topY); + } + else { + strokeLine = 'wiggly'; + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_3__.isStaveNote)(note)) { + for (let i = topY; i <= botY; i += line_space) { + _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderGlyph(ctx, x + this.x_shift - 4, i, this.render_options.font_scale, 'vexWiggleArpeggioUp'); + } + } + else { + let i; + for (i = topY; i <= botY; i += 10) { + _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderGlyph(ctx, x + this.x_shift - 4, i, this.render_options.font_scale, 'vexWiggleArpeggioUp'); + } + if (this.type === Stroke.Type.RASQUEDO_DOWN) { + text_y = i + 0.25 * line_space; + } + } + } + if (this.type === Stroke.Type.ARPEGGIO_DIRECTIONLESS) { + return; // skip drawing arrow heads or text + } + // Draw the arrow head + _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderGlyph(ctx, x + this.x_shift + arrow_shift_x, arrow_y, this.render_options.font_scale, arrow, { + category: `stroke.${arrow}.${strokeLine}`, + }); + // Draw the rasquedo "R" + if (this.type === Stroke.Type.RASQUEDO_DOWN || this.type === Stroke.Type.RASQUEDO_UP) { + ctx.save(); + ctx.setFont(this.textFont); + ctx.fillText('R', x + text_shift_x, text_y); + ctx.restore(); + } + } +} +Stroke.Type = { + BRUSH_DOWN: 1, + BRUSH_UP: 2, + ROLL_DOWN: 3, + ROLL_UP: 4, + RASQUEDO_DOWN: 5, + RASQUEDO_UP: 6, + ARPEGGIO_DIRECTIONLESS: 7, // Arpeggiated chord without upwards or downwards arrow +}; +Stroke.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SERIF, + size: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SIZE, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.BOLD, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.ITALIC, +}; + + +/***/ }), + +/***/ "./src/svgcontext.ts": +/*!***************************!*\ + !*** ./src/svgcontext.ts ***! + \***************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "SVGContext": () => (/* binding */ SVGContext) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _rendercontext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rendercontext */ "./src/rendercontext.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// @author Gregory Ristow (2015) + + + +/** For a particular element type (e.g., rect), we will not apply certain presentation attributes. */ +const ATTRIBUTES_TO_IGNORE = { + path: { + x: true, + y: true, + width: true, + height: true, + 'font-family': true, + 'font-weight': true, + 'font-style': true, + 'font-size': true, + }, + rect: { + 'font-family': true, + 'font-weight': true, + 'font-style': true, + 'font-size': true, + }, + text: { + width: true, + height: true, + }, +}; +/** Create the SVG in the SVG namespace. */ +const SVG_NS = 'http://www.w3.org/2000/svg'; +const TWO_PI = 2 * Math.PI; +class MeasureTextCache { + constructor() { + // The cache is keyed first by the text string, then by the font attributes + // joined together. + this.cache = {}; + } + lookup(text, svg, attributes) { + let entries = this.cache[text]; + if (entries === undefined) { + entries = {}; + this.cache[text] = entries; + } + const family = attributes['font-family']; + const size = attributes['font-size']; + const weight = attributes['font-weight']; + const style = attributes['font-style']; + const key = `${family}%${size}%${weight}%${style}`; + let entry = entries[key]; + if (entry === undefined) { + entry = this.measureImpl(text, svg, attributes); + entries[key] = entry; + } + return entry; + } + measureImpl(text, svg, attributes) { + let txt = this.txt; + if (!txt) { + // Create the SVG text element that will be used to measure text in the event + // of a cache miss. + txt = document.createElementNS(SVG_NS, 'text'); + this.txt = txt; + } + txt.textContent = text; + txt.setAttributeNS(null, 'font-family', attributes['font-family']); + txt.setAttributeNS(null, 'font-size', attributes['font-size']); + txt.setAttributeNS(null, 'font-style', attributes['font-style']); + txt.setAttributeNS(null, 'font-weight', attributes['font-weight']); + svg.appendChild(txt); + const bbox = txt.getBBox(); + svg.removeChild(txt); + return { x: bbox.x, y: bbox.y, width: bbox.width, height: bbox.height }; + } +} +/** + * SVG rendering context with an API similar to CanvasRenderingContext2D. + */ +class SVGContext extends _rendercontext__WEBPACK_IMPORTED_MODULE_1__.RenderContext { + constructor(element) { + super(); + this.width = 0; + this.height = 0; + this.backgroundFillStyle = 'white'; + /** Formatted as CSS font shorthand (e.g., 'italic bold 12pt Arial') */ + this.fontCSSString = ''; + this.element = element; + // Create a SVG element and add it to the container element. + const svg = this.create('svg'); + this.element.appendChild(svg); + this.svg = svg; + this.parent = this.svg; + this.groups = [this.svg]; + this.path = ''; + this.pen = { x: NaN, y: NaN }; + this.lineWidth = 1.0; + const defaultFontAttributes = { + 'font-family': _font__WEBPACK_IMPORTED_MODULE_0__.Font.SANS_SERIF, + 'font-size': _font__WEBPACK_IMPORTED_MODULE_0__.Font.SIZE + 'pt', + 'font-weight': _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.NORMAL, + 'font-style': _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL, + }; + this.state = Object.assign({ scale: { x: 1, y: 1 } }, defaultFontAttributes); + this.attributes = Object.assign({ 'stroke-width': 0.3, 'stroke-dasharray': 'none', fill: 'black', stroke: 'black' }, defaultFontAttributes); + this.shadow_attributes = { + width: 0, + color: 'black', + }; + this.state_stack = []; + } + create(svgElementType) { + return document.createElementNS(SVG_NS, svgElementType); + } + // Allow grouping elements in containers for interactivity. + openGroup(cls, id, attrs) { + const group = this.create('g'); + this.groups.push(group); + this.parent.appendChild(group); + this.parent = group; + if (cls) + group.setAttribute('class', (0,_util__WEBPACK_IMPORTED_MODULE_2__.prefix)(cls)); + if (id) + group.setAttribute('id', (0,_util__WEBPACK_IMPORTED_MODULE_2__.prefix)(id)); + if (attrs && attrs.pointerBBox) { + group.setAttribute('pointer-events', 'bounding-box'); + } + return group; + } + closeGroup() { + this.groups.pop(); + this.parent = this.groups[this.groups.length - 1]; + } + add(elem) { + this.parent.appendChild(elem); + } + setFillStyle(style) { + this.attributes.fill = style; + return this; + } + /** + * Used to set the fill color for `clearRect()`. This allows us to simulate + * cutting a "hole" into the SVG drawing. + */ + setBackgroundFillStyle(style) { + this.backgroundFillStyle = style; + return this; + } + setStrokeStyle(style) { + this.attributes.stroke = style; + return this; + } + setShadowColor(color) { + this.shadow_attributes.color = color; + return this; + } + /** + * @param blur A non-negative float specifying the level of shadow blur, where 0 + * represents no blur and larger numbers represent increasingly more blur. + * @returns this + */ + setShadowBlur(blur) { + this.shadow_attributes.width = blur; + return this; + } + /** + * @param width + * @returns this + */ + setLineWidth(width) { + this.attributes['stroke-width'] = width; + this.lineWidth = width; + return this; + } + /** + * @param lineDash an array of integers in the form of [dash, space, dash, space, etc...] + * @returns this + * + * See: [SVG `stroke-dasharray` attribute](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray) + */ + setLineDash(lineDash) { + if (Object.prototype.toString.call(lineDash) === '[object Array]') { + this.attributes['stroke-dasharray'] = lineDash.join(','); + return this; + } + else { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('ArgumentError', 'lineDash must be an array of integers.'); + } + } + /** + * @param capType + * @returns this + */ + setLineCap(capType) { + this.attributes['stroke-linecap'] = capType; + return this; + } + // ### Sizing & Scaling Methods: + // TODO (GCR): See note at scale() -- separate our internal + // conception of pixel-based width/height from the style.width + // and style.height properties eventually to allow users to + // apply responsive sizing attributes to the SVG. + resize(width, height) { + this.width = width; + this.height = height; + this.element.style.width = width.toString(); + this.svg.style.width = width.toString(); + this.svg.style.height = height.toString(); + const attributes = { + width, + height, + }; + this.applyAttributes(this.svg, attributes); + this.scale(this.state.scale.x, this.state.scale.y); + return this; + } + scale(x, y) { + // uses viewBox to scale + // TODO (GCR): we may at some point want to distinguish the + // style.width / style.height properties that are applied to + // the SVG object from our internal conception of the SVG + // width/height. This would allow us to create automatically + // scaling SVG's that filled their containers, for instance. + // + // As this isn't implemented in Canvas contexts, + // I've left as is for now, but in using the viewBox to + // handle internal scaling, am trying to make it possible + // for us to eventually move in that direction. + this.state.scale = { x, y }; + const visibleWidth = this.width / x; + const visibleHeight = this.height / y; + this.setViewBox(0, 0, visibleWidth, visibleHeight); + return this; + } + /** + * 1 arg: string in the "x y w h" format + * 4 args: x:number, y:number, w:number, h:number + */ + setViewBox(viewBox_or_minX, minY, width, height) { + if (typeof viewBox_or_minX === 'string') { + this.svg.setAttribute('viewBox', viewBox_or_minX); + } + else { + const viewBoxString = viewBox_or_minX + ' ' + minY + ' ' + width + ' ' + height; + this.svg.setAttribute('viewBox', viewBoxString); + } + } + // ### Drawing helper methods: + applyAttributes(element, attributes) { + const attrNamesToIgnore = ATTRIBUTES_TO_IGNORE[element.nodeName]; + for (const attrName in attributes) { + if (attrNamesToIgnore && attrNamesToIgnore[attrName]) { + continue; + } + element.setAttributeNS(null, attrName, attributes[attrName]); + } + return element; + } + // ### Shape & Path Methods: + clear() { + // Clear the SVG by removing all inner children. + // (This approach is usually slightly more efficient + // than removing the old SVG & adding a new one to + // the container element, since it does not cause the + // container to resize twice. Also, the resize + // triggered by removing the entire SVG can trigger + // a touchcancel event when the element resizes away + // from a touch point.) + while (this.svg.lastChild) { + this.svg.removeChild(this.svg.lastChild); + } + // Replace the viewbox attribute we just removed. + this.scale(this.state.scale.x, this.state.scale.y); + } + // ## Rectangles: + rect(x, y, width, height, attributes) { + // Avoid invalid negative height attributes by flipping the rectangle on its head: + if (height < 0) { + y += height; + height *= -1; + } + const rectangle = this.create('rect'); + attributes = attributes !== null && attributes !== void 0 ? attributes : { fill: 'none', 'stroke-width': this.lineWidth, stroke: 'black' }; + this.applyAttributes(rectangle, Object.assign({ x, y, width, height }, attributes)); + this.add(rectangle); + return this; + } + fillRect(x, y, width, height) { + const attributes = { fill: this.attributes.fill }; + this.rect(x, y, width, height, attributes); + return this; + } + clearRect(x, y, width, height) { + // Currently this fills a rect with the backgroundFillStyle, rather + // than "cut a hole" into the existing shapes. + // + // Since tabNote seems to be the only module that makes use of this + // it may be worth creating a separate tabStave that would + // draw lines around locations of tablature fingering. + this.rect(x, y, width, height, { 'stroke-width': 0, fill: this.backgroundFillStyle }); + return this; + } + // ## Paths: + beginPath() { + this.path = ''; + this.pen.x = NaN; + this.pen.y = NaN; + return this; + } + moveTo(x, y) { + this.path += 'M' + x + ' ' + y; + this.pen.x = x; + this.pen.y = y; + return this; + } + lineTo(x, y) { + this.path += 'L' + x + ' ' + y; + this.pen.x = x; + this.pen.y = y; + return this; + } + bezierCurveTo(x1, y1, x2, y2, x, y) { + this.path += 'C' + x1 + ' ' + y1 + ',' + x2 + ' ' + y2 + ',' + x + ' ' + y; + this.pen.x = x; + this.pen.y = y; + return this; + } + quadraticCurveTo(x1, y1, x, y) { + this.path += 'Q' + x1 + ' ' + y1 + ',' + x + ' ' + y; + this.pen.x = x; + this.pen.y = y; + return this; + } + arc(x, y, radius, startAngle, endAngle, counterclockwise) { + const x0 = x + radius * Math.cos(startAngle); + const y0 = y + radius * Math.sin(startAngle); + // svg behavior different from canvas. Don't normalize angles if + // we are drawing a circle because they both normalize to 0 + const tmpStartTest = (0,_util__WEBPACK_IMPORTED_MODULE_2__.normalizeAngle)(startAngle); + const tmpEndTest = (0,_util__WEBPACK_IMPORTED_MODULE_2__.normalizeAngle)(endAngle); + if ((!counterclockwise && endAngle - startAngle >= TWO_PI) || + (counterclockwise && startAngle - endAngle >= TWO_PI) || + tmpStartTest === tmpEndTest) { + const x1 = x + radius * Math.cos(startAngle + Math.PI); + const y1 = y + radius * Math.sin(startAngle + Math.PI); + // There's no way to specify a completely circular arc in SVG so we have to + // use two semi-circular arcs. + this.path += `M${x0} ${y0} A${radius} ${radius} 0 0 0 ${x1} ${y1} `; + this.path += `A${radius} ${radius} 0 0 0 ${x0} ${y0}`; + this.pen.x = x0; + this.pen.y = y0; + } + else { + const x1 = x + radius * Math.cos(endAngle); + const y1 = y + radius * Math.sin(endAngle); + startAngle = tmpStartTest; + endAngle = tmpEndTest; + let large; + if (Math.abs(endAngle - startAngle) < Math.PI) { + large = counterclockwise; + } + else { + large = !counterclockwise; + } + if (startAngle > endAngle) { + large = !large; + } + const sweep = !counterclockwise; + this.path += `M${x0} ${y0} A${radius} ${radius} 0 ${+large} ${+sweep} ${x1} ${y1}`; + this.pen.x = x1; + this.pen.y = y1; + } + return this; + } + closePath() { + this.path += 'Z'; + return this; + } + getShadowStyle() { + const sa = this.shadow_attributes; + // A CSS drop-shadow filter blur looks different than a canvas shadowBlur + // of the same radius, so we scale the drop-shadow radius here to make it + // look close to the canvas shadow. + return `filter: drop-shadow(0 0 ${sa.width / 1.5}px ${sa.color})`; + } + fill(attributes) { + const path = this.create('path'); + if (typeof attributes === 'undefined') { + attributes = Object.assign(Object.assign({}, this.attributes), { stroke: 'none' }); + } + attributes.d = this.path; + if (this.shadow_attributes.width > 0) { + attributes.style = this.getShadowStyle(); + } + this.applyAttributes(path, attributes); + this.add(path); + return this; + } + stroke() { + const path = this.create('path'); + const attributes = Object.assign(Object.assign({}, this.attributes), { fill: 'none', 'stroke-width': this.lineWidth, d: this.path }); + if (this.shadow_attributes.width > 0) { + attributes.style = this.getShadowStyle(); + } + this.applyAttributes(path, attributes); + this.add(path); + return this; + } + // ## Text Methods: + measureText(text) { + return SVGContext.measureTextCache.lookup(text, this.svg, this.attributes); + } + fillText(text, x, y) { + if (!text || text.length <= 0) { + return this; + } + const attributes = Object.assign(Object.assign({}, this.attributes), { stroke: 'none', x, + y }); + const txt = this.create('text'); + txt.textContent = text; + this.applyAttributes(txt, attributes); + this.add(txt); + return this; + } + // TODO: State should be deep-copied. + save() { + this.state_stack.push({ + state: { + 'font-family': this.state['font-family'], + 'font-weight': this.state['font-weight'], + 'font-style': this.state['font-style'], + 'font-size': this.state['font-size'], + scale: this.state.scale, + }, + attributes: { + 'font-family': this.attributes['font-family'], + 'font-weight': this.attributes['font-weight'], + 'font-style': this.attributes['font-style'], + 'font-size': this.attributes['font-size'], + fill: this.attributes.fill, + stroke: this.attributes.stroke, + 'stroke-width': this.attributes['stroke-width'], + 'stroke-dasharray': this.attributes['stroke-dasharray'], + }, + shadow_attributes: { + width: this.shadow_attributes.width, + color: this.shadow_attributes.color, + }, + lineWidth: this.lineWidth, + }); + return this; + } + // TODO: State should be deep-restored. + restore() { + const savedState = this.state_stack.pop(); + if (savedState) { + const state = savedState; + this.state['font-family'] = state.state['font-family']; + this.state['font-weight'] = state.state['font-weight']; + this.state['font-style'] = state.state['font-style']; + this.state['font-size'] = state.state['font-size']; + this.state.scale = state.state.scale; + this.attributes['font-family'] = state.attributes['font-family']; + this.attributes['font-weight'] = state.attributes['font-weight']; + this.attributes['font-style'] = state.attributes['font-style']; + this.attributes['font-size'] = state.attributes['font-size']; + this.attributes.fill = state.attributes.fill; + this.attributes.stroke = state.attributes.stroke; + this.attributes['stroke-width'] = state.attributes['stroke-width']; + this.attributes['stroke-dasharray'] = state.attributes['stroke-dasharray']; + this.shadow_attributes.width = state.shadow_attributes.width; + this.shadow_attributes.color = state.shadow_attributes.color; + this.lineWidth = state.lineWidth; + } + return this; + } + set fillStyle(style) { + this.setFillStyle(style); + } + get fillStyle() { + return this.attributes.fill; + } + set strokeStyle(style) { + this.setStrokeStyle(style); + } + get strokeStyle() { + return this.attributes.stroke; + } + /** + * @param f is 1) a `FontInfo` object or + * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or + * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided). + * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt'). + * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900). It is inserted + * into the font-weight attribute (e.g., font-weight="bold") + * @param style is a string (e.g., 'italic', 'normal') that is inserted into the + * font-style attribute (e.g., font-style="italic") + */ + setFont(f, size, weight, style) { + const fontInfo = _font__WEBPACK_IMPORTED_MODULE_0__.Font.validate(f, size, weight, style); + this.fontCSSString = _font__WEBPACK_IMPORTED_MODULE_0__.Font.toCSSString(fontInfo); + const fontAttributes = { + 'font-family': fontInfo.family, + 'font-size': fontInfo.size, + 'font-weight': fontInfo.weight, + 'font-style': fontInfo.style, + }; + this.attributes = Object.assign(Object.assign({}, this.attributes), fontAttributes); + this.state = Object.assign(Object.assign({}, this.state), fontAttributes); + return this; + } + /** Return a string of the form `'italic bold 15pt Arial'` */ + getFont() { + return this.fontCSSString; + } +} +SVGContext.measureTextCache = new MeasureTextCache(); + + +/***/ }), + +/***/ "./src/system.ts": +/*!***********************!*\ + !*** ./src/system.ts ***! + \***********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "System": () => (/* binding */ System) +/* harmony export */ }); +/* harmony import */ var _boundingbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./boundingbox */ "./src/boundingbox.ts"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _formatter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatter */ "./src/formatter.ts"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _stave__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stave */ "./src/stave.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + + +/** + * System implements a musical system, which is a collection of staves, + * each which can have one or more voices. All voices across all staves in + * the system are formatted together. + */ +class System extends _element__WEBPACK_IMPORTED_MODULE_1__.Element { + constructor(params = {}) { + super(); + this.setOptions(params); + this.parts = []; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_5__.Category.System; + } + /** Set formatting options. */ + setOptions(options = {}) { + if (!options.factory) { + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('NoFactory', 'System.setOptions(options) requires a factory.'); + } + this.factory = options.factory; + this.options = Object.assign(Object.assign({ factory: this.factory, x: 10, y: 10, width: 500, spaceBetweenStaves: 12, autoWidth: false, noJustification: false, debugFormatter: false, formatIterations: 0, noPadding: false }, options), { details: Object.assign({ alpha: 0.5 }, options.details), formatOptions: Object.assign({}, options.formatOptions) }); + if (this.options.noJustification === false && typeof options.width === 'undefined') { + this.options.autoWidth = true; + } + } + /** Set associated context. */ + setContext(context) { + super.setContext(context); + this.factory.setContext(context); + return this; + } + /** + * Add connector between staves. + * @param type see {@link StaveConnector.typeString} + */ + addConnector(type = 'double') { + this.connector = this.factory.StaveConnector({ + top_stave: this.parts[0].stave, + bottom_stave: this.parts[this.parts.length - 1].stave, + type, + }); + return this.connector; + } + /** + * Add a stave to the system. + * + * Example (one voice): + * + * `system.addStave({voices: [score.voice(score.notes('C#5/q, B4, A4, G#4'))]});` + * + * Example (two voices): + * + * `system.addStave({voices: [` + * `score.voice(score.notes('C#5/q, B4, A4, G#4', {stem: 'up'})),` + * `score.voice(score.notes('C#4/h, C#4', {stem: 'down'}))` + * `]});` + */ + addStave(params) { + var _a; + const staveOptions = Object.assign({ left_bar: false }, params.options); + const stave = (_a = params.stave) !== null && _a !== void 0 ? _a : this.factory.Stave({ x: this.options.x, y: this.options.y, width: this.options.width, options: staveOptions }); + const p = Object.assign(Object.assign({ stave, + /* voices: [], */ + spaceAbove: 0, spaceBelow: 0, debugNoteMetrics: false, noJustification: false }, params), { options: staveOptions }); + const ctx = this.getContext(); + p.voices.forEach((voice) => voice + .setContext(ctx) + .setStave(stave) + .getTickables() + .forEach((tickable) => tickable.setStave(stave))); + this.parts.push(p); + return stave; + } + /** Format the system. */ + format() { + const options_details = this.options.details; + let justifyWidth = 0; + const formatter = new _formatter__WEBPACK_IMPORTED_MODULE_2__.Formatter(options_details); + this.formatter = formatter; + let y = this.options.y; + let startX = 0; + let allVoices = []; + let allStaves = []; + const debugNoteMetricsYs = []; + // Join the voices for each stave. + this.parts.forEach((part) => { + y = y + part.stave.space(part.spaceAbove); + part.stave.setY(y); + formatter.joinVoices(part.voices); + y = y + part.stave.space(part.spaceBelow); + y = y + part.stave.space(this.options.spaceBetweenStaves); + if (part.debugNoteMetrics) { + debugNoteMetricsYs.push({ y, voice: part.voices[0] }); + y += 15; + } + allVoices = allVoices.concat(part.voices); + allStaves = allStaves.concat(part.stave); + startX = Math.max(startX, part.stave.getNoteStartX()); + }); + // Update the start position of all staves. + this.parts.forEach((part) => part.stave.setNoteStartX(startX)); + if (this.options.autoWidth) { + justifyWidth = formatter.preCalculateMinTotalWidth(allVoices); + this.parts.forEach((part) => { + part.stave.setWidth(justifyWidth + _stave__WEBPACK_IMPORTED_MODULE_4__.Stave.rightPadding + (startX - this.options.x)); + }); + } + else { + justifyWidth = this.options.noPadding + ? this.options.width - (startX - this.options.x) + : this.options.width - (startX - this.options.x) - _stave__WEBPACK_IMPORTED_MODULE_4__.Stave.defaultPadding; + } + formatter.format(allVoices, this.options.noJustification ? 0 : justifyWidth, this.options.formatOptions); + formatter.postFormat(); + for (let i = 0; i < this.options.formatIterations; i++) { + formatter.tune(options_details); + } + this.startX = startX; + this.debugNoteMetricsYs = debugNoteMetricsYs; + this.lastY = y; + this.boundingBox = new _boundingbox__WEBPACK_IMPORTED_MODULE_0__.BoundingBox(this.options.x, this.options.y, this.options.width, this.lastY - this.options.y); + _stave__WEBPACK_IMPORTED_MODULE_4__.Stave.formatBegModifiers(allStaves); + } + /** Render the system. */ + draw() { + // Render debugging information, if requested. + const ctx = this.checkContext(); + if (!this.formatter || !this.startX || !this.lastY || !this.debugNoteMetricsYs) { + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('NoFormatter', 'format() must be called before draw()'); + } + this.setRendered(); + if (this.options.debugFormatter) { + _formatter__WEBPACK_IMPORTED_MODULE_2__.Formatter.plotDebugging(ctx, this.formatter, this.startX, this.options.y, this.lastY); + } + this.debugNoteMetricsYs.forEach((d) => { + d.voice.getTickables().forEach((tickable) => _note__WEBPACK_IMPORTED_MODULE_3__.Note.plotMetrics(ctx, tickable, d.y)); + }); + } +} + + +/***/ }), + +/***/ "./src/tables.ts": +/*!***********************!*\ + !*** ./src/tables.ts ***! + \***********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Tables": () => (/* binding */ Tables) +/* harmony export */ }); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./fraction */ "./src/fraction.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. + + + +const RESOLUTION = 16384; +/** + * Map duration numbers to 'ticks', the unit of duration used throughout VexFlow. + * For example, a quarter note is 4, so it maps to RESOLUTION / 4 = 4096 ticks. + */ +const durations = { + '1/2': RESOLUTION * 2, + 1: RESOLUTION / 1, + 2: RESOLUTION / 2, + 4: RESOLUTION / 4, + 8: RESOLUTION / 8, + 16: RESOLUTION / 16, + 32: RESOLUTION / 32, + 64: RESOLUTION / 64, + 128: RESOLUTION / 128, + 256: RESOLUTION / 256, +}; +const durationAliases = { + w: '1', + h: '2', + q: '4', + // This is the default duration used to render bars (BarNote). Bars no longer + // consume ticks, so this should be a no-op. + // TODO(0xfe): This needs to be cleaned up. + b: '256', +}; +const keySignatures = { + C: { num: 0 }, + Am: { num: 0 }, + F: { acc: 'b', num: 1 }, + Dm: { acc: 'b', num: 1 }, + Bb: { acc: 'b', num: 2 }, + Gm: { acc: 'b', num: 2 }, + Eb: { acc: 'b', num: 3 }, + Cm: { acc: 'b', num: 3 }, + Ab: { acc: 'b', num: 4 }, + Fm: { acc: 'b', num: 4 }, + Db: { acc: 'b', num: 5 }, + Bbm: { acc: 'b', num: 5 }, + Gb: { acc: 'b', num: 6 }, + Ebm: { acc: 'b', num: 6 }, + Cb: { acc: 'b', num: 7 }, + Abm: { acc: 'b', num: 7 }, + G: { acc: '#', num: 1 }, + Em: { acc: '#', num: 1 }, + D: { acc: '#', num: 2 }, + Bm: { acc: '#', num: 2 }, + A: { acc: '#', num: 3 }, + 'F#m': { acc: '#', num: 3 }, + E: { acc: '#', num: 4 }, + 'C#m': { acc: '#', num: 4 }, + B: { acc: '#', num: 5 }, + 'G#m': { acc: '#', num: 5 }, + 'F#': { acc: '#', num: 6 }, + 'D#m': { acc: '#', num: 6 }, + 'C#': { acc: '#', num: 7 }, + 'A#m': { acc: '#', num: 7 }, +}; +const clefs = { + treble: { line_shift: 0 }, + bass: { line_shift: 6 }, + tenor: { line_shift: 4 }, + alto: { line_shift: 3 }, + soprano: { line_shift: 1 }, + percussion: { line_shift: 0 }, + 'mezzo-soprano': { line_shift: 2 }, + 'baritone-c': { line_shift: 5 }, + 'baritone-f': { line_shift: 5 }, + subbass: { line_shift: 7 }, + french: { line_shift: -1 }, +}; +const notesInfo = { + C: { index: 0, int_val: 0 }, + CN: { index: 0, int_val: 0, accidental: 'n' }, + 'C#': { index: 0, int_val: 1, accidental: '#' }, + 'C##': { index: 0, int_val: 2, accidental: '##' }, + CB: { index: 0, int_val: 11, accidental: 'b' }, + CBB: { index: 0, int_val: 10, accidental: 'bb' }, + D: { index: 1, int_val: 2 }, + DN: { index: 1, int_val: 2, accidental: 'n' }, + 'D#': { index: 1, int_val: 3, accidental: '#' }, + 'D##': { index: 1, int_val: 4, accidental: '##' }, + DB: { index: 1, int_val: 1, accidental: 'b' }, + DBB: { index: 1, int_val: 0, accidental: 'bb' }, + E: { index: 2, int_val: 4 }, + EN: { index: 2, int_val: 4, accidental: 'n' }, + 'E#': { index: 2, int_val: 5, accidental: '#' }, + 'E##': { index: 2, int_val: 6, accidental: '##' }, + EB: { index: 2, int_val: 3, accidental: 'b' }, + EBB: { index: 2, int_val: 2, accidental: 'bb' }, + F: { index: 3, int_val: 5 }, + FN: { index: 3, int_val: 5, accidental: 'n' }, + 'F#': { index: 3, int_val: 6, accidental: '#' }, + 'F##': { index: 3, int_val: 7, accidental: '##' }, + FB: { index: 3, int_val: 4, accidental: 'b' }, + FBB: { index: 3, int_val: 3, accidental: 'bb' }, + G: { index: 4, int_val: 7 }, + GN: { index: 4, int_val: 7, accidental: 'n' }, + 'G#': { index: 4, int_val: 8, accidental: '#' }, + 'G##': { index: 4, int_val: 9, accidental: '##' }, + GB: { index: 4, int_val: 6, accidental: 'b' }, + GBB: { index: 4, int_val: 5, accidental: 'bb' }, + A: { index: 5, int_val: 9 }, + AN: { index: 5, int_val: 9, accidental: 'n' }, + 'A#': { index: 5, int_val: 10, accidental: '#' }, + 'A##': { index: 5, int_val: 11, accidental: '##' }, + AB: { index: 5, int_val: 8, accidental: 'b' }, + ABB: { index: 5, int_val: 7, accidental: 'bb' }, + B: { index: 6, int_val: 11 }, + BN: { index: 6, int_val: 11, accidental: 'n' }, + 'B#': { index: 6, int_val: 12, accidental: '#' }, + 'B##': { index: 6, int_val: 13, accidental: '##' }, + BB: { index: 6, int_val: 10, accidental: 'b' }, + BBB: { index: 6, int_val: 9, accidental: 'bb' }, + R: { index: 6, rest: true }, + X: { + index: 6, + accidental: '', + octave: 4, + code: 'noteheadXBlack', + shift_right: 5.5, + }, +}; +const validNoteTypes = { + n: { name: 'note' }, + r: { name: 'rest' }, + h: { name: 'harmonic' }, + m: { name: 'muted' }, + s: { name: 'slash' }, + g: { name: 'ghost' }, + d: { name: 'diamond' }, + x: { name: 'x' }, + ci: { name: 'circled' }, + cx: { name: 'circle x' }, + sf: { name: 'slashed' }, + sb: { name: 'slashed backward' }, + sq: { name: 'square' }, + tu: { name: 'triangle up' }, + td: { name: 'triangle down' }, +}; +const accidentals = { + '#': { code: 'accidentalSharp', parenRightPaddingAdjustment: -1 }, + '##': { code: 'accidentalDoubleSharp', parenRightPaddingAdjustment: -1 }, + b: { code: 'accidentalFlat', parenRightPaddingAdjustment: -2 }, + bb: { code: 'accidentalDoubleFlat', parenRightPaddingAdjustment: -2 }, + n: { code: 'accidentalNatural', parenRightPaddingAdjustment: -1 }, + '{': { code: 'accidentalParensLeft', parenRightPaddingAdjustment: -1 }, + '}': { code: 'accidentalParensRight', parenRightPaddingAdjustment: -1 }, + db: { code: 'accidentalThreeQuarterTonesFlatZimmermann', parenRightPaddingAdjustment: -1 }, + d: { code: 'accidentalQuarterToneFlatStein', parenRightPaddingAdjustment: 0 }, + '++': { code: 'accidentalThreeQuarterTonesSharpStein', parenRightPaddingAdjustment: -1 }, + '+': { code: 'accidentalQuarterToneSharpStein', parenRightPaddingAdjustment: -1 }, + '+-': { code: 'accidentalKucukMucennebSharp', parenRightPaddingAdjustment: -1 }, + bs: { code: 'accidentalBakiyeFlat', parenRightPaddingAdjustment: -1 }, + bss: { code: 'accidentalBuyukMucennebFlat', parenRightPaddingAdjustment: -1 }, + o: { code: 'accidentalSori', parenRightPaddingAdjustment: -1 }, + k: { code: 'accidentalKoron', parenRightPaddingAdjustment: -1 }, + bbs: { code: 'vexAccidentalMicrotonal1', parenRightPaddingAdjustment: -1 }, + '++-': { code: 'vexAccidentalMicrotonal2', parenRightPaddingAdjustment: -1 }, + ashs: { code: 'vexAccidentalMicrotonal3', parenRightPaddingAdjustment: -1 }, + afhf: { code: 'vexAccidentalMicrotonal4', parenRightPaddingAdjustment: -1 }, + accSagittal5v7KleismaUp: { code: 'accSagittal5v7KleismaUp', parenRightPaddingAdjustment: -1 }, + accSagittal5v7KleismaDown: { code: 'accSagittal5v7KleismaDown', parenRightPaddingAdjustment: -1 }, + accSagittal5CommaUp: { code: 'accSagittal5CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal5CommaDown: { code: 'accSagittal5CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal7CommaUp: { code: 'accSagittal7CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal7CommaDown: { code: 'accSagittal7CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal25SmallDiesisUp: { code: 'accSagittal25SmallDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal25SmallDiesisDown: { code: 'accSagittal25SmallDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal35MediumDiesisUp: { code: 'accSagittal35MediumDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal35MediumDiesisDown: { code: 'accSagittal35MediumDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal11MediumDiesisUp: { code: 'accSagittal11MediumDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal11MediumDiesisDown: { code: 'accSagittal11MediumDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal11LargeDiesisUp: { code: 'accSagittal11LargeDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal11LargeDiesisDown: { code: 'accSagittal11LargeDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal35LargeDiesisUp: { code: 'accSagittal35LargeDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal35LargeDiesisDown: { code: 'accSagittal35LargeDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp25SDown: { code: 'accSagittalSharp25SDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat25SUp: { code: 'accSagittalFlat25SUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7CDown: { code: 'accSagittalSharp7CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7CUp: { code: 'accSagittalFlat7CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5CDown: { code: 'accSagittalSharp5CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5CUp: { code: 'accSagittalFlat5CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v7kDown: { code: 'accSagittalSharp5v7kDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v7kUp: { code: 'accSagittalFlat5v7kUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp: { code: 'accSagittalSharp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat: { code: 'accSagittalFlat', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v7kUp: { code: 'accSagittalSharp5v7kUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v7kDown: { code: 'accSagittalFlat5v7kDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5CUp: { code: 'accSagittalSharp5CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5CDown: { code: 'accSagittalFlat5CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7CUp: { code: 'accSagittalSharp7CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7CDown: { code: 'accSagittalFlat7CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp25SUp: { code: 'accSagittalSharp25SUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat25SDown: { code: 'accSagittalFlat25SDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp35MUp: { code: 'accSagittalSharp35MUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat35MDown: { code: 'accSagittalFlat35MDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp11MUp: { code: 'accSagittalSharp11MUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat11MDown: { code: 'accSagittalFlat11MDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp11LUp: { code: 'accSagittalSharp11LUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat11LDown: { code: 'accSagittalFlat11LDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp35LUp: { code: 'accSagittalSharp35LUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat35LDown: { code: 'accSagittalFlat35LDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp25SDown: { code: 'accSagittalDoubleSharp25SDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat25SUp: { code: 'accSagittalDoubleFlat25SUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp7CDown: { code: 'accSagittalDoubleSharp7CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat7CUp: { code: 'accSagittalDoubleFlat7CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp5CDown: { code: 'accSagittalDoubleSharp5CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat5CUp: { code: 'accSagittalDoubleFlat5CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp5v7kDown: { code: 'accSagittalDoubleSharp5v7kDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat5v7kUp: { code: 'accSagittalDoubleFlat5v7kUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp: { code: 'accSagittalDoubleSharp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat: { code: 'accSagittalDoubleFlat', parenRightPaddingAdjustment: -1 }, + accSagittal7v11KleismaUp: { code: 'accSagittal7v11KleismaUp', parenRightPaddingAdjustment: -1 }, + accSagittal7v11KleismaDown: { code: 'accSagittal7v11KleismaDown', parenRightPaddingAdjustment: -1 }, + accSagittal17CommaUp: { code: 'accSagittal17CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal17CommaDown: { code: 'accSagittal17CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal55CommaUp: { code: 'accSagittal55CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal55CommaDown: { code: 'accSagittal55CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal7v11CommaUp: { code: 'accSagittal7v11CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal7v11CommaDown: { code: 'accSagittal7v11CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal5v11SmallDiesisUp: { code: 'accSagittal5v11SmallDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal5v11SmallDiesisDown: { code: 'accSagittal5v11SmallDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v11SDown: { code: 'accSagittalSharp5v11SDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v11SUp: { code: 'accSagittalFlat5v11SUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7v11CDown: { code: 'accSagittalSharp7v11CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7v11CUp: { code: 'accSagittalFlat7v11CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp55CDown: { code: 'accSagittalSharp55CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat55CUp: { code: 'accSagittalFlat55CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp17CDown: { code: 'accSagittalSharp17CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat17CUp: { code: 'accSagittalFlat17CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7v11kDown: { code: 'accSagittalSharp7v11kDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7v11kUp: { code: 'accSagittalFlat7v11kUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7v11kUp: { code: 'accSagittalSharp7v11kUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7v11kDown: { code: 'accSagittalFlat7v11kDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp17CUp: { code: 'accSagittalSharp17CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat17CDown: { code: 'accSagittalFlat17CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp55CUp: { code: 'accSagittalSharp55CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat55CDown: { code: 'accSagittalFlat55CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7v11CUp: { code: 'accSagittalSharp7v11CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7v11CDown: { code: 'accSagittalFlat7v11CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v11SUp: { code: 'accSagittalSharp5v11SUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v11SDown: { code: 'accSagittalFlat5v11SDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp5v11SDown: { code: 'accSagittalDoubleSharp5v11SDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat5v11SUp: { code: 'accSagittalDoubleFlat5v11SUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp7v11CDown: { code: 'accSagittalDoubleSharp7v11CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat7v11CUp: { code: 'accSagittalDoubleFlat7v11CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp55CDown: { code: 'accSagittalDoubleSharp55CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat55CUp: { code: 'accSagittalDoubleFlat55CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp17CDown: { code: 'accSagittalDoubleSharp17CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat17CUp: { code: 'accSagittalDoubleFlat17CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp7v11kDown: { code: 'accSagittalDoubleSharp7v11kDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat7v11kUp: { code: 'accSagittalDoubleFlat7v11kUp', parenRightPaddingAdjustment: -1 }, + accSagittal23CommaUp: { code: 'accSagittal23CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal23CommaDown: { code: 'accSagittal23CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal5v19CommaUp: { code: 'accSagittal5v19CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal5v19CommaDown: { code: 'accSagittal5v19CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal5v23SmallDiesisUp: { code: 'accSagittal5v23SmallDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal5v23SmallDiesisDown: { code: 'accSagittal5v23SmallDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v23SDown: { code: 'accSagittalSharp5v23SDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v23SUp: { code: 'accSagittalFlat5v23SUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v19CDown: { code: 'accSagittalSharp5v19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v19CUp: { code: 'accSagittalFlat5v19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp23CDown: { code: 'accSagittalSharp23CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat23CUp: { code: 'accSagittalFlat23CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp23CUp: { code: 'accSagittalSharp23CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat23CDown: { code: 'accSagittalFlat23CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v19CUp: { code: 'accSagittalSharp5v19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v19CDown: { code: 'accSagittalFlat5v19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v23SUp: { code: 'accSagittalSharp5v23SUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v23SDown: { code: 'accSagittalFlat5v23SDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp5v23SDown: { code: 'accSagittalDoubleSharp5v23SDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat5v23SUp: { code: 'accSagittalDoubleFlat5v23SUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp5v19CDown: { code: 'accSagittalDoubleSharp5v19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat5v19CUp: { code: 'accSagittalDoubleFlat5v19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp23CDown: { code: 'accSagittalDoubleSharp23CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat23CUp: { code: 'accSagittalDoubleFlat23CUp', parenRightPaddingAdjustment: -1 }, + accSagittal19SchismaUp: { code: 'accSagittal19SchismaUp', parenRightPaddingAdjustment: -1 }, + accSagittal19SchismaDown: { code: 'accSagittal19SchismaDown', parenRightPaddingAdjustment: -1 }, + accSagittal17KleismaUp: { code: 'accSagittal17KleismaUp', parenRightPaddingAdjustment: -1 }, + accSagittal17KleismaDown: { code: 'accSagittal17KleismaDown', parenRightPaddingAdjustment: -1 }, + accSagittal143CommaUp: { code: 'accSagittal143CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal143CommaDown: { code: 'accSagittal143CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal11v49CommaUp: { code: 'accSagittal11v49CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal11v49CommaDown: { code: 'accSagittal11v49CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal19CommaUp: { code: 'accSagittal19CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal19CommaDown: { code: 'accSagittal19CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal7v19CommaUp: { code: 'accSagittal7v19CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal7v19CommaDown: { code: 'accSagittal7v19CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal49SmallDiesisUp: { code: 'accSagittal49SmallDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal49SmallDiesisDown: { code: 'accSagittal49SmallDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal23SmallDiesisUp: { code: 'accSagittal23SmallDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal23SmallDiesisDown: { code: 'accSagittal23SmallDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal5v13MediumDiesisUp: { code: 'accSagittal5v13MediumDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal5v13MediumDiesisDown: { code: 'accSagittal5v13MediumDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal11v19MediumDiesisUp: { code: 'accSagittal11v19MediumDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal11v19MediumDiesisDown: { code: 'accSagittal11v19MediumDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal49MediumDiesisUp: { code: 'accSagittal49MediumDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal49MediumDiesisDown: { code: 'accSagittal49MediumDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal5v49MediumDiesisUp: { code: 'accSagittal5v49MediumDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal5v49MediumDiesisDown: { code: 'accSagittal5v49MediumDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal49LargeDiesisUp: { code: 'accSagittal49LargeDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal49LargeDiesisDown: { code: 'accSagittal49LargeDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal11v19LargeDiesisUp: { code: 'accSagittal11v19LargeDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal11v19LargeDiesisDown: { code: 'accSagittal11v19LargeDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal5v13LargeDiesisUp: { code: 'accSagittal5v13LargeDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal5v13LargeDiesisDown: { code: 'accSagittal5v13LargeDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp23SDown: { code: 'accSagittalSharp23SDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat23SUp: { code: 'accSagittalFlat23SUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp49SDown: { code: 'accSagittalSharp49SDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat49SUp: { code: 'accSagittalFlat49SUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7v19CDown: { code: 'accSagittalSharp7v19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7v19CUp: { code: 'accSagittalFlat7v19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp19CDown: { code: 'accSagittalSharp19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat19CUp: { code: 'accSagittalFlat19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp11v49CDown: { code: 'accSagittalSharp11v49CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat11v49CUp: { code: 'accSagittalFlat11v49CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp143CDown: { code: 'accSagittalSharp143CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat143CUp: { code: 'accSagittalFlat143CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp17kDown: { code: 'accSagittalSharp17kDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat17kUp: { code: 'accSagittalFlat17kUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp19sDown: { code: 'accSagittalSharp19sDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat19sUp: { code: 'accSagittalFlat19sUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp19sUp: { code: 'accSagittalSharp19sUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat19sDown: { code: 'accSagittalFlat19sDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp17kUp: { code: 'accSagittalSharp17kUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat17kDown: { code: 'accSagittalFlat17kDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp143CUp: { code: 'accSagittalSharp143CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat143CDown: { code: 'accSagittalFlat143CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp11v49CUp: { code: 'accSagittalSharp11v49CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat11v49CDown: { code: 'accSagittalFlat11v49CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp19CUp: { code: 'accSagittalSharp19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat19CDown: { code: 'accSagittalFlat19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7v19CUp: { code: 'accSagittalSharp7v19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7v19CDown: { code: 'accSagittalFlat7v19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp49SUp: { code: 'accSagittalSharp49SUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat49SDown: { code: 'accSagittalFlat49SDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp23SUp: { code: 'accSagittalSharp23SUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat23SDown: { code: 'accSagittalFlat23SDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v13MUp: { code: 'accSagittalSharp5v13MUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v13MDown: { code: 'accSagittalFlat5v13MDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp11v19MUp: { code: 'accSagittalSharp11v19MUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat11v19MDown: { code: 'accSagittalFlat11v19MDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp49MUp: { code: 'accSagittalSharp49MUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat49MDown: { code: 'accSagittalFlat49MDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v49MUp: { code: 'accSagittalSharp5v49MUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v49MDown: { code: 'accSagittalFlat5v49MDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp49LUp: { code: 'accSagittalSharp49LUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat49LDown: { code: 'accSagittalFlat49LDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp11v19LUp: { code: 'accSagittalSharp11v19LUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat11v19LDown: { code: 'accSagittalFlat11v19LDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v13LUp: { code: 'accSagittalSharp5v13LUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v13LDown: { code: 'accSagittalFlat5v13LDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp23SDown: { code: 'accSagittalDoubleSharp23SDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat23SUp: { code: 'accSagittalDoubleFlat23SUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp49SDown: { code: 'accSagittalDoubleSharp49SDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat49SUp: { code: 'accSagittalDoubleFlat49SUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp7v19CDown: { code: 'accSagittalDoubleSharp7v19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat7v19CUp: { code: 'accSagittalDoubleFlat7v19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp19CDown: { code: 'accSagittalDoubleSharp19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat19CUp: { code: 'accSagittalDoubleFlat19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp11v49CDown: { code: 'accSagittalDoubleSharp11v49CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat11v49CUp: { code: 'accSagittalDoubleFlat11v49CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp143CDown: { code: 'accSagittalDoubleSharp143CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat143CUp: { code: 'accSagittalDoubleFlat143CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp17kDown: { code: 'accSagittalDoubleSharp17kDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat17kUp: { code: 'accSagittalDoubleFlat17kUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp19sDown: { code: 'accSagittalDoubleSharp19sDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat19sUp: { code: 'accSagittalDoubleFlat19sUp', parenRightPaddingAdjustment: -1 }, + accSagittalShaftUp: { code: 'accSagittalShaftUp', parenRightPaddingAdjustment: -1 }, + accSagittalShaftDown: { code: 'accSagittalShaftDown', parenRightPaddingAdjustment: -1 }, + accSagittalAcute: { code: 'accSagittalAcute', parenRightPaddingAdjustment: -1 }, + accSagittalGrave: { code: 'accSagittalGrave', parenRightPaddingAdjustment: -1 }, + accSagittal1MinaUp: { code: 'accSagittal1MinaUp', parenRightPaddingAdjustment: -1 }, + accSagittal1MinaDown: { code: 'accSagittal1MinaDown', parenRightPaddingAdjustment: -1 }, + accSagittal2MinasUp: { code: 'accSagittal2MinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal2MinasDown: { code: 'accSagittal2MinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal1TinaUp: { code: 'accSagittal1TinaUp', parenRightPaddingAdjustment: -1 }, + accSagittal1TinaDown: { code: 'accSagittal1TinaDown', parenRightPaddingAdjustment: -1 }, + accSagittal2TinasUp: { code: 'accSagittal2TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal2TinasDown: { code: 'accSagittal2TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal3TinasUp: { code: 'accSagittal3TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal3TinasDown: { code: 'accSagittal3TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal4TinasUp: { code: 'accSagittal4TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal4TinasDown: { code: 'accSagittal4TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal5TinasUp: { code: 'accSagittal5TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal5TinasDown: { code: 'accSagittal5TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal6TinasUp: { code: 'accSagittal6TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal6TinasDown: { code: 'accSagittal6TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal7TinasUp: { code: 'accSagittal7TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal7TinasDown: { code: 'accSagittal7TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal8TinasUp: { code: 'accSagittal8TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal8TinasDown: { code: 'accSagittal8TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal9TinasUp: { code: 'accSagittal9TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal9TinasDown: { code: 'accSagittal9TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittalFractionalTinaUp: { code: 'accSagittalFractionalTinaUp', parenRightPaddingAdjustment: -1 }, + accSagittalFractionalTinaDown: { code: 'accSagittalFractionalTinaDown', parenRightPaddingAdjustment: -1 }, + accidentalNarrowReversedFlat: { code: 'accidentalNarrowReversedFlat', parenRightPaddingAdjustment: -1 }, + accidentalNarrowReversedFlatAndFlat: { + code: 'accidentalNarrowReversedFlatAndFlat', + parenRightPaddingAdjustment: -1, + }, + accidentalWilsonPlus: { code: 'accidentalWilsonPlus', parenRightPaddingAdjustment: -1 }, + accidentalWilsonMinus: { code: 'accidentalWilsonMinus', parenRightPaddingAdjustment: -1 }, +}; +// Helps determine the layout of accidentals. +const accidentalColumns = { + 1: { + a: [1], + b: [1], + }, + 2: { + a: [1, 2], + }, + 3: { + a: [1, 3, 2], + b: [1, 2, 1], + second_on_bottom: [1, 2, 3], + }, + 4: { + a: [1, 3, 4, 2], + b: [1, 2, 3, 1], + spaced_out_tetrachord: [1, 2, 1, 2], + }, + 5: { + a: [1, 3, 5, 4, 2], + b: [1, 2, 4, 3, 1], + spaced_out_pentachord: [1, 2, 3, 2, 1], + very_spaced_out_pentachord: [1, 2, 1, 2, 1], + }, + 6: { + a: [1, 3, 5, 6, 4, 2], + b: [1, 2, 4, 5, 3, 1], + spaced_out_hexachord: [1, 3, 2, 1, 3, 2], + very_spaced_out_hexachord: [1, 2, 1, 2, 1, 2], + }, +}; +const articulations = { + 'a.': { code: 'augmentationDot', between_lines: true }, + av: { + aboveCode: 'articStaccatissimoAbove', + belowCode: 'articStaccatissimoBelow', + between_lines: true, + }, + 'a>': { + aboveCode: 'articAccentAbove', + belowCode: 'articAccentBelow', + between_lines: true, + }, + 'a-': { + aboveCode: 'articTenutoAbove', + belowCode: 'articTenutoBelow', + between_lines: true, + }, + 'a^': { + aboveCode: 'articMarcatoAbove', + belowCode: 'articMarcatoBelow', + between_lines: false, + }, + 'a+': { code: 'pluckedLeftHandPizzicato', between_lines: false }, + ao: { + aboveCode: 'pluckedSnapPizzicatoAbove', + belowCode: 'pluckedSnapPizzicatoBelow', + between_lines: false, + }, + ah: { code: 'stringsHarmonic', between_lines: false }, + 'a@': { aboveCode: 'fermataAbove', belowCode: 'fermataBelow', between_lines: false }, + 'a@a': { code: 'fermataAbove', between_lines: false }, + 'a@u': { code: 'fermataBelow', between_lines: false }, + 'a@s': { aboveCode: 'fermataShortAbove', belowCode: 'fermataShortBelow', between_lines: false }, + 'a@as': { code: 'fermataShortAbove', between_lines: false }, + 'a@us': { code: 'fermataShortBelow', between_lines: false }, + 'a@l': { aboveCode: 'fermataLongAbove', belowCode: 'fermataLongBelow', between_lines: false }, + 'a@al': { code: 'fermataLongAbove', between_lines: false }, + 'a@ul': { code: 'fermataLongBelow', between_lines: false }, + 'a@vl': { aboveCode: 'fermataVeryLongAbove', belowCode: 'fermataVeryLongBelow', between_lines: false }, + 'a@avl': { code: 'fermataVeryLongAbove', between_lines: false }, + 'a@uvl': { code: 'fermataVeryLongBelow', between_lines: false }, + 'a|': { code: 'stringsUpBow', between_lines: false }, + am: { code: 'stringsDownBow', between_lines: false }, + 'a,': { code: 'pictChokeCymbal', between_lines: false }, // Choked +}; +const ornaments = { + mordent: { code: 'ornamentShortTrill' }, + mordent_inverted: { code: 'ornamentMordent' }, + turn: { code: 'ornamentTurn' }, + turn_inverted: { code: 'ornamentTurnSlash' }, + tr: { code: 'ornamentTrill' }, + upprall: { code: 'ornamentPrecompSlideTrillDAnglebert' }, + downprall: { code: 'ornamentPrecompDoubleCadenceUpperPrefix' }, + prallup: { code: 'ornamentPrecompTrillSuffixDandrieu' }, + pralldown: { code: 'ornamentPrecompTrillLowerSuffix' }, + upmordent: { code: 'ornamentPrecompSlideTrillBach' }, + downmordent: { code: 'ornamentPrecompDoubleCadenceUpperPrefixTurn' }, + lineprall: { code: 'ornamentPrecompAppoggTrill' }, + prallprall: { code: 'ornamentTremblement' }, + scoop: { code: 'brassScoop' }, + doit: { code: 'brassDoitMedium' }, + fall: { code: 'brassFallLipShort' }, + doitLong: { code: 'brassLiftMedium' }, + fallLong: { code: 'brassFallRoughMedium' }, + bend: { code: 'brassBend' }, + plungerClosed: { code: 'brassMuteClosed' }, + plungerOpen: { code: 'brassMuteOpen' }, + flip: { code: 'brassFlip' }, + jazzTurn: { code: 'brassJazzTurn' }, + smear: { code: 'brassSmear' }, +}; +class Tables { + /** + * @returns the `Font` object at the head of the music font stack. + */ + static currentMusicFont() { + if (Tables.MUSIC_FONT_STACK.length === 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('NoFonts', 'The font stack is empty. See: await Flow.fetchMusicFont(...); Flow.setMusicFont(...).'); + } + else { + return Tables.MUSIC_FONT_STACK[0]; + } + } + static clefProperties(clef) { + if (!clef || !(clef in clefs)) + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArgument', 'Invalid clef: ' + clef); + return clefs[clef]; + } + /** + * @param keyOctaveGlyph a string in the format "key/octave" (e.g., "c/5") or "key/octave/custom-note-head-code" (e.g., "g/5/t3"). + * @param clef + * @param params a struct with one option, `octave_shift` for clef ottavation (0 = default; 1 = 8va; -1 = 8vb, etc.). + * @returns properties for the specified note. + */ + // eslint-disable-next-line + static keyProperties(keyOctaveGlyph, clef = 'treble', params) { + let options = { octave_shift: 0, duration: '4' }; + if (typeof params === 'object') { + options = Object.assign(Object.assign({}, options), params); + } + const duration = Tables.sanitizeDuration(options.duration); + const pieces = keyOctaveGlyph.split('/'); + if (pieces.length < 2) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', `First argument must be note/octave or note/octave/glyph-code: ${keyOctaveGlyph}`); + } + const key = pieces[0].toUpperCase(); + const value = notesInfo[key]; + if (!value) + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', 'Invalid key name: ' + key); + if (value.octave) + pieces[1] = value.octave.toString(); + let octave = parseInt(pieces[1], 10); + // Octave_shift is the shift to compensate for clef 8va/8vb. + octave += -1 * options.octave_shift; + const baseIndex = octave * 7 - 4 * 7; + let line = (baseIndex + value.index) / 2; + line += Tables.clefProperties(clef).line_shift; + let stroke = 0; + if (line <= 0 && (line * 2) % 2 === 0) + stroke = 1; // stroke up + if (line >= 6 && (line * 2) % 2 === 0) + stroke = -1; // stroke down + // Integer value for note arithmetic. + const int_value = typeof value.int_val !== 'undefined' ? octave * 12 + value.int_val : undefined; + // If the user specified a glyph, overwrite the glyph code. + const code = value.code; + const shift_right = value.shift_right; + let customNoteHeadProps = {}; + if (pieces.length > 2 && pieces[2]) { + const glyphName = pieces[2].toUpperCase(); + customNoteHeadProps = { code: this.codeNoteHead(glyphName, duration) } || {}; + } + return Object.assign({ key, + octave, + line, + int_value, accidental: value.accidental, code, + stroke, + shift_right, displaced: false }, customNoteHeadProps); + } + static integerToNote(integer) { + if (typeof integer === 'undefined' || integer < 0 || integer > 11) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', `integerToNote() requires an integer in the range [0, 11]: ${integer}`); + } + const table = { + 0: 'C', + 1: 'C#', + 2: 'D', + 3: 'D#', + 4: 'E', + 5: 'F', + 6: 'F#', + 7: 'G', + 8: 'G#', + 9: 'A', + 10: 'A#', + 11: 'B', + }; + const noteValue = table[integer]; + if (!noteValue) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', `Unknown note value for integer: ${integer}`); + } + return noteValue; + } + static tabToGlyph(fret, scale = 1.0) { + let glyph = undefined; + let width = 0; + let shift_y = 0; + if (fret.toUpperCase() === 'X') { + const glyphMetrics = new _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph('accidentalDoubleSharp', Tables.TABLATURE_FONT_SCALE).getMetrics(); + glyph = 'accidentalDoubleSharp'; + if (glyphMetrics.width == undefined || glyphMetrics.height == undefined) + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('InvalidMetrics', 'Width and height required'); + width = glyphMetrics.width; + shift_y = -glyphMetrics.height / 2; + } + else { + width = Tables.textWidth(fret); + } + return { + text: fret, + code: glyph, + getWidth: () => width * scale, + shift_y, + }; + } + // Used by annotation.ts and bend.ts. Clearly this implementation only works for the default font size. + // TODO: The actual width depends on the font family, size, weight, style. + static textWidth(text) { + return 7 * text.toString().length; + } + static articulationCodes(artic) { + return articulations[artic]; + } + static accidentalCodes(acc) { + return accidentals[acc]; + } + static ornamentCodes(acc) { + return ornaments[acc]; + } + static keySignature(spec) { + const keySpec = keySignatures[spec]; + if (!keySpec) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadKeySignature', `Bad key signature spec: '${spec}'`); + } + if (!keySpec.acc) { + return []; + } + const accidentalList = { + b: [2, 0.5, 2.5, 1, 3, 1.5, 3.5], + '#': [0, 1.5, -0.5, 1, 2.5, 0.5, 2], + }; + const notes = accidentalList[keySpec.acc]; + const acc_list = []; + for (let i = 0; i < keySpec.num; ++i) { + const line = notes[i]; + acc_list.push({ type: keySpec.acc, line }); + } + return acc_list; + } + static getKeySignatures() { + return keySignatures; + } + static hasKeySignature(spec) { + return spec in keySignatures; + } + /** + * Convert duration aliases to the number based duration. + * If the input isn't an alias, simply return the input. + * @param duration + * @returns Example: 'q' -> '4', '8' -> '8' + */ + static sanitizeDuration(duration) { + const durationNumber = durationAliases[duration]; + if (durationNumber !== undefined) { + duration = durationNumber; + } + if (durations[duration] === undefined) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', `The provided duration is not valid: ${duration}`); + } + return duration; + } + /** Convert the `duration` to a fraction. */ + static durationToFraction(duration) { + return new _fraction__WEBPACK_IMPORTED_MODULE_0__.Fraction().parse(Tables.sanitizeDuration(duration)); + } + /** Convert the `duration` to a number. */ + static durationToNumber(duration) { + return Tables.durationToFraction(duration).value(); + } + /* Convert the `duration` to total ticks. */ + static durationToTicks(duration) { + duration = Tables.sanitizeDuration(duration); + const ticks = durations[duration]; + if (ticks === undefined) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('InvalidDuration'); + } + return ticks; + } + static codeNoteHead(type, duration) { + let code = ''; + switch (type) { + /* Diamond */ + case 'D0': + code = 'noteheadDiamondWhole'; + break; + case 'D1': + code = 'noteheadDiamondHalf'; + break; + case 'D2': + code = 'noteheadDiamondBlack'; + break; + case 'D3': + code = 'noteheadDiamondBlack'; + break; + /* Triangle */ + case 'T0': + code = 'noteheadTriangleUpWhole'; + break; + case 'T1': + code = 'noteheadTriangleUpHalf'; + break; + case 'T2': + code = 'noteheadTriangleUpBlack'; + break; + case 'T3': + code = 'noteheadTriangleUpBlack'; + break; + /* Cross */ + case 'X0': + code = 'noteheadXWhole'; + break; + case 'X1': + code = 'noteheadXHalf'; + break; + case 'X2': + code = 'noteheadXBlack'; + break; + case 'X3': + code = 'noteheadCircleX'; + break; + /* Square */ + case 'S1': + code = 'noteheadSquareWhite'; + break; + case 'S2': + code = 'noteheadSquareBlack'; + break; + /* Rectangle */ + case 'R1': + code = 'vexNoteHeadRectWhite'; // no smufl code + break; + case 'R2': + code = 'vexNoteHeadRectBlack'; // no smufl code + break; + case 'DO': + code = 'noteheadTriangleUpBlack'; + break; + case 'RE': + code = 'noteheadMoonBlack'; + break; + case 'MI': + code = 'noteheadDiamondBlack'; + break; + case 'FA': + code = 'noteheadTriangleLeftBlack'; + break; + case 'FAUP': + code = 'noteheadTriangleRightBlack'; + break; + case 'SO': + code = 'noteheadBlack'; + break; + case 'LA': + code = 'noteheadSquareBlack'; + break; + case 'TI': + code = 'noteheadTriangleRoundDownBlack'; + break; + case 'D': + case 'H': // left for backwards compatibility + switch (duration) { + case '1/2': + code = 'noteheadDiamondDoubleWhole'; + break; + case '1': + code = 'noteheadDiamondWhole'; + break; + case '2': + code = 'noteheadDiamondHalf'; + break; + default: + code = 'noteheadDiamondBlack'; + break; + } + break; + case 'N': + case 'G': + switch (duration) { + case '1/2': + code = 'noteheadDoubleWhole'; + break; + case '1': + code = 'noteheadWhole'; + break; + case '2': + code = 'noteheadHalf'; + break; + default: + code = 'noteheadBlack'; + break; + } + break; + case 'M': // left for backwards compatibility + case 'X': + switch (duration) { + case '1/2': + code = 'noteheadXDoubleWhole'; + break; + case '1': + code = 'noteheadXWhole'; + break; + case '2': + code = 'noteheadXHalf'; + break; + default: + code = 'noteheadXBlack'; + break; + } + break; + case 'CX': + switch (duration) { + case '1/2': + code = 'noteheadCircleXDoubleWhole'; + break; + case '1': + code = 'noteheadCircleXWhole'; + break; + case '2': + code = 'noteheadCircleXHalf'; + break; + default: + code = 'noteheadCircleX'; + break; + } + break; + case 'CI': + switch (duration) { + case '1/2': + code = 'noteheadCircledDoubleWhole'; + break; + case '1': + code = 'noteheadCircledWhole'; + break; + case '2': + code = 'noteheadCircledHalf'; + break; + default: + code = 'noteheadCircledBlack'; + break; + } + break; + case 'SQ': + switch (duration) { + case '1/2': + code = 'noteheadDoubleWholeSquare'; + break; + case '1': + code = 'noteheadSquareWhite'; + break; + case '2': + code = 'noteheadSquareWhite'; + break; + default: + code = 'noteheadSquareBlack'; + break; + } + break; + case 'TU': + switch (duration) { + case '1/2': + code = 'noteheadTriangleUpDoubleWhole'; + break; + case '1': + code = 'noteheadTriangleUpWhole'; + break; + case '2': + code = 'noteheadTriangleUpHalf'; + break; + default: + code = 'noteheadTriangleUpBlack'; + break; + } + break; + case 'TD': + switch (duration) { + case '1/2': + code = 'noteheadTriangleDownDoubleWhole'; + break; + case '1': + code = 'noteheadTriangleDownWhole'; + break; + case '2': + code = 'noteheadTriangleDownHalf'; + break; + default: + code = 'noteheadTriangleDownBlack'; + break; + } + break; + case 'SF': + switch (duration) { + case '1/2': + code = 'noteheadSlashedDoubleWhole1'; + break; + case '1': + code = 'noteheadSlashedWhole1'; + break; + case '2': + code = 'noteheadSlashedHalf1'; + break; + default: + code = 'noteheadSlashedBlack1'; + } + break; + case 'SB': + switch (duration) { + case '1/2': + code = 'noteheadSlashedDoubleWhole2'; + break; + case '1': + code = 'noteheadSlashedWhole2'; + break; + case '2': + code = 'noteheadSlashedHalf2'; + break; + default: + code = 'noteheadSlashedBlack2'; + } + break; + } + return code; + } + // Return a glyph given duration and type. The type can be a custom glyph code from customNoteHeads. + // The default type is a regular note ('n'). + // eslint-disable-next-line + static getGlyphProps(duration, type = 'n') { + duration = Tables.sanitizeDuration(duration); + // Lookup duration for default glyph head code + const code = durationCodes[duration]; + if (code === undefined) { + return undefined; + } + // Get glyph properties for 'type' from duration string (note, rest, harmonic, muted, slash) + let glyphTypeProperties = code.type[type]; + // Try and get it from the custom list of note heads + const codeNoteHead = Tables.codeNoteHead(type.toUpperCase(), duration); + if (codeNoteHead != '') + glyphTypeProperties = Object.assign(Object.assign({}, glyphTypeProperties), { code_head: codeNoteHead, code: codeNoteHead }); + const code_head = glyphTypeProperties.code_head; + // The default implementation of getWidth() calls Glyph.getWidth(code_head, scale). + // This can be overridden by an individual glyph type (see slash noteheads below: Tables.SLASH_NOTEHEAD_WIDTH). + const getWidth = (scale = Tables.NOTATION_FONT_SCALE) => _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.getWidth(code_head, scale); + // Merge duration props for 'duration' with the note head properties. + return Object.assign(Object.assign(Object.assign({}, code.common), { getWidth: getWidth }), glyphTypeProperties); + } +} +Tables.SOFTMAX_FACTOR = 100; +Tables.STEM_WIDTH = 1.5; +Tables.STEM_HEIGHT = 35; +Tables.STAVE_LINE_THICKNESS = 1; +Tables.RENDER_PRECISION_PLACES = 3; +Tables.RESOLUTION = RESOLUTION; +/** + * Customize this by calling Flow.setMusicFont(...fontNames); + */ +Tables.MUSIC_FONT_STACK = []; +Tables.NOTATION_FONT_SCALE = 39; +Tables.TABLATURE_FONT_SCALE = 39; +Tables.SLASH_NOTEHEAD_WIDTH = 15; +Tables.STAVE_LINE_DISTANCE = 10; +// HACK: +// Since text origins are positioned at the baseline, we must +// compensate for the ascender of the text. Of course, 1 staff space is +// a very poor approximation. +// +// This will be deprecated in the future. This is a temporary solution until +// we have more robust text metrics. +Tables.TEXT_HEIGHT_OFFSET_HACK = 1; +Tables.accidentalMap = accidentals; +Tables.accidentalColumnsTable = accidentalColumns; +Tables.unicode = { + // ♯ accidental sharp + sharp: String.fromCharCode(0x266f), + // ♭ accidental flat + flat: String.fromCharCode(0x266d), + // ♮ accidental natural + natural: String.fromCharCode(0x266e), + // △ major seventh + triangle: String.fromCharCode(0x25b3), + // ø half-diminished + 'o-with-slash': String.fromCharCode(0x00f8), + // ° diminished + degrees: String.fromCharCode(0x00b0), + // ○ diminished + circle: String.fromCharCode(0x25cb), +}; +/* The list of valid note types. Used by note.ts during parseNoteStruct(). */ +Tables.validTypes = validNoteTypes; +// Default time signature. +Tables.TIME4_4 = { + num_beats: 4, + beat_value: 4, + resolution: RESOLUTION, +}; +// 1/2, 1, 2, 4, 8, 16, 32, 64, 128 +// NOTE: There is no 256 here! However, there are other mentions of 256 in this file. +// For example, in durations has a 256 key, and sanitizeDuration() can return 256. +// The sanitizeDuration() bit may need to be removed by 0xfe. +// eslint-disable-next-line +const durationCodes = { + '1/2': { + common: { + stem: false, + stem_offset: 0, + flag: false, + stem_up_extension: -Tables.STEM_HEIGHT, + stem_down_extension: -Tables.STEM_HEIGHT, + tabnote_stem_up_extension: -Tables.STEM_HEIGHT, + tabnote_stem_down_extension: -Tables.STEM_HEIGHT, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + // Breve rest + code_head: 'restDoubleWhole', + rest: true, + position: 'B/5', + dot_shiftY: 0.5, + // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined { + // return Glyph.getWidth('restDoubleWhole', scale); + // }, + }, + s: { + // Breve note slash - + // Drawn with canvas primitives + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 1: { + common: { + stem: false, + stem_offset: 0, + flag: false, + stem_up_extension: -Tables.STEM_HEIGHT, + stem_down_extension: -Tables.STEM_HEIGHT, + tabnote_stem_up_extension: -Tables.STEM_HEIGHT, + tabnote_stem_down_extension: -Tables.STEM_HEIGHT, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + // Whole rest + code_head: 'restWhole', + leger_code_head: 'restWholeLegerLine', + rest: true, + position: 'D/5', + dot_shiftY: 0.5, + // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined { + // return Glyph.getWidth('restWhole', scale); + // }, + }, + s: { + // Whole note slash + // Drawn with canvas primitives + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 2: { + common: { + stem: true, + stem_offset: 0, + flag: false, + stem_up_extension: 0, + stem_down_extension: 0, + tabnote_stem_up_extension: 0, + tabnote_stem_down_extension: 0, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + // Half rest + code_head: 'restHalf', + leger_code_head: 'restHalfLegerLine', + stem: false, + rest: true, + position: 'B/4', + dot_shiftY: -0.5, + // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined { + // return Glyph.getWidth('restHalf', scale); + // }, + }, + s: { + // Half note slash + // Drawn with canvas primitives + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 4: { + common: { + stem: true, + stem_offset: 0, + flag: false, + stem_up_extension: 0, + stem_down_extension: 0, + tabnote_stem_up_extension: 0, + tabnote_stem_down_extension: 0, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + // Quarter rest + code_head: 'restQuarter', + stem: false, + rest: true, + position: 'B/4', + dot_shiftY: -0.5, + line_above: 1.5, + line_below: 1.5, + // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined { + // return Glyph.getWidth('restQuarter', scale); + // }, + }, + s: { + // Quarter slash + // Drawn with canvas primitives + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 8: { + common: { + stem: true, + stem_offset: 0, + flag: true, + beam_count: 1, + stem_beam_extension: 0, + code_flag_upstem: 'flag8thUp', + code_flag_downstem: 'flag8thDown', + stem_up_extension: 0, + stem_down_extension: 0, + tabnote_stem_up_extension: 0, + tabnote_stem_down_extension: 0, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + // Eighth rest + code_head: 'rest8th', + stem: false, + flag: false, + rest: true, + position: 'B/4', + dot_shiftY: -0.5, + line_above: 1.0, + line_below: 1.0, + // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined { + // return Glyph.getWidth('rest8th', scale); + // }, + }, + s: { + // Eighth slash + // Drawn with canvas primitives + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 16: { + common: { + beam_count: 2, + stem_beam_extension: 0, + stem: true, + stem_offset: 0, + flag: true, + code_flag_upstem: 'flag16thUp', + code_flag_downstem: 'flag16thDown', + stem_up_extension: 0, + stem_down_extension: 0, + tabnote_stem_up_extension: 0, + tabnote_stem_down_extension: 0, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + // Sixteenth rest + code_head: 'rest16th', + stem: false, + flag: false, + rest: true, + position: 'B/4', + dot_shiftY: -0.5, + line_above: 1.0, + line_below: 2.0, + // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined { + // return Glyph.getWidth('rest16th', scale); + // }, + }, + s: { + // Sixteenth slash + // Drawn with canvas primitives + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 32: { + common: { + beam_count: 3, + stem_beam_extension: 7.5, + stem: true, + stem_offset: 0, + flag: true, + code_flag_upstem: 'flag32ndUp', + code_flag_downstem: 'flag32ndDown', + stem_up_extension: 9, + stem_down_extension: 9, + tabnote_stem_up_extension: 9, + tabnote_stem_down_extension: 9, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + // Thirty-second rest + code_head: 'rest32nd', + stem: false, + flag: false, + rest: true, + position: 'B/4', + dot_shiftY: -1.5, + line_above: 2.0, + line_below: 2.0, + // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined { + // return Glyph.getWidth('rest32nd', scale); + // }, + }, + s: { + // Thirty-second slash + // Drawn with canvas primitives + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 64: { + common: { + beam_count: 4, + stem_beam_extension: 15, + stem: true, + stem_offset: 0, + flag: true, + code_flag_upstem: 'flag64thUp', + code_flag_downstem: 'flag64thDown', + stem_up_extension: 13, + stem_down_extension: 13, + tabnote_stem_up_extension: 13, + tabnote_stem_down_extension: 13, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + // Sixty-fourth rest + code_head: 'rest64th', + stem: false, + flag: false, + rest: true, + position: 'B/4', + dot_shiftY: -1.5, + line_above: 2.0, + line_below: 3.0, + // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined { + // return Glyph.getWidth('rest64th', scale); + // }, + }, + s: { + // Sixty-fourth slash + // Drawn with canvas primitives + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 128: { + common: { + beam_count: 5, + stem_beam_extension: 22.5, + stem: true, + stem_offset: 0, + flag: true, + code_flag_upstem: 'flag128thUp', + code_flag_downstem: 'flag128thDown', + stem_up_extension: 22, + stem_down_extension: 22, + tabnote_stem_up_extension: 22, + tabnote_stem_down_extension: 22, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + // Hundred-twenty-eight rest + code_head: 'rest128th', + stem: false, + flag: false, + rest: true, + position: 'B/4', + dot_shiftY: -2.5, + line_above: 3.0, + line_below: 3.0, + // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined { + // return Glyph.getWidth('rest128th', scale); + // }, + }, + s: { + // Hundred-twenty-eight slash + // Drawn with canvas primitives + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, +}; + + +/***/ }), + +/***/ "./src/tabnote.ts": +/*!************************!*\ + !*** ./src/tabnote.ts ***! + \************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TabNote": () => (/* binding */ TabNote) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _stemmablenote__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stemmablenote */ "./src/stemmablenote.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// The file implements notes for Tablature notation. This consists of one or +// more fret positions, and can either be drawn with or without stems. +// +// See `tests/tabnote_tests.ts` for usage examples. + + + + + + + + +// Gets the unused strings grouped together if consecutive. +// +// Parameters: +// * num_lines - The number of lines +// * strings_used - An array of numbers representing which strings have fret positions +function getUnusedStringGroups(num_lines, strings_used) { + const stem_through = []; + let group = []; + for (let string = 1; string <= num_lines; string++) { + const is_used = strings_used.indexOf(string) > -1; + if (!is_used) { + group.push(string); + } + else { + stem_through.push(group); + group = []; + } + } + if (group.length > 0) + stem_through.push(group); + return stem_through; +} +// Gets groups of points that outline the partial stem lines +// between fret positions +// +// Parameters: +// * stem_Y - The `y` coordinate the stem is located on +// * unused_strings - An array of groups of unused strings +// * stave - The stave to use for reference +// * stem_direction - The direction of the stem +function getPartialStemLines(stem_y, unused_strings, stave, stem_direction) { + const up_stem = stem_direction !== 1; + const down_stem = stem_direction !== -1; + const line_spacing = stave.getSpacingBetweenLines(); + const total_lines = stave.getNumLines(); + const stem_lines = []; + unused_strings.forEach((strings) => { + const containsLastString = strings.indexOf(total_lines) > -1; + const containsFirstString = strings.indexOf(1) > -1; + if ((up_stem && containsFirstString) || (down_stem && containsLastString)) { + return; + } + // If there's only one string in the group, push a duplicate value. + // We do this because we need 2 strings to convert into upper/lower y + // values. + if (strings.length === 1) { + strings.push(strings[0]); + } + const line_ys = []; + // Iterate through each group string and store it's y position + strings.forEach((string, index, strings) => { + const isTopBound = string === 1; + const isBottomBound = string === total_lines; + // Get the y value for the appropriate staff line, + // we adjust for a 0 index array, since string numbers are index 1 + let y = stave.getYForLine(string - 1); + // Unless the string is the first or last, add padding to each side + // of the line + if (index === 0 && !isTopBound) { + y -= line_spacing / 2 - 1; + } + else if (index === strings.length - 1 && !isBottomBound) { + y += line_spacing / 2 - 1; + } + // Store the y value + line_ys.push(y); + // Store a subsequent y value connecting this group to the main + // stem above/below the stave if it's the top/bottom string + if (stem_direction === 1 && isTopBound) { + line_ys.push(stem_y - 2); + } + else if (stem_direction === -1 && isBottomBound) { + line_ys.push(stem_y + 2); + } + }); + // Add the sorted y values to the + stem_lines.push(line_ys.sort((a, b) => a - b)); + }); + return stem_lines; +} +class TabNote extends _stemmablenote__WEBPACK_IMPORTED_MODULE_4__.StemmableNote { + // Initialize the TabNote with a `noteStruct` full of properties + // and whether to `draw_stem` when rendering the note + constructor(noteStruct, draw_stem = false) { + super(noteStruct); + this.glyphs = []; + // Return the number of the greatest string, which is the string lowest on the display + this.greatestString = () => { + return this.positions.map((x) => x.str).reduce((a, b) => (a > b ? a : b)); + }; + // Return the number of the least string, which is the string highest on the display + this.leastString = () => { + return this.positions.map((x) => x.str).reduce((a, b) => (a < b ? a : b)); + }; + this.ghost = false; // Renders parenthesis around notes + // Note properties + // The fret positions in the note. An array of `{ str: X, fret: X }` + this.positions = noteStruct.positions || []; + // Render Options + this.render_options = Object.assign(Object.assign({}, this.render_options), { + // font size for note heads and rests + glyph_font_scale: _tables__WEBPACK_IMPORTED_MODULE_5__.Tables.TABLATURE_FONT_SCALE, + // Flag to draw a stem + draw_stem, + // Flag to draw dot modifiers + draw_dots: draw_stem, + // Flag to extend the main stem through the stave and fret positions + draw_stem_through_stave: false, + // vertical shift from stave line + y_shift: 0, + // normal glyph scale + scale: 1.0, + // default tablature font + font: `${_font__WEBPACK_IMPORTED_MODULE_0__.Font.SIZE}pt ${_font__WEBPACK_IMPORTED_MODULE_0__.Font.SANS_SERIF}` }); + this.glyph = _tables__WEBPACK_IMPORTED_MODULE_5__.Tables.getGlyphProps(this.duration, this.noteType); + (0,_util__WEBPACK_IMPORTED_MODULE_7__.defined)(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`); + this.buildStem(); + if (noteStruct.stem_direction) { + this.setStemDirection(noteStruct.stem_direction); + } + else { + this.setStemDirection(_stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP); + } + // Renders parenthesis around notes + this.ghost = false; + this.updateWidth(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_6__.Category.TabNote; + } + reset() { + super.reset(); + if (this.stave) + this.setStave(this.stave); + return this; + } + // Set as ghost `TabNote`, surrounds the fret positions with parenthesis. + // Often used for indicating frets that are being bent to + setGhost(ghost) { + this.ghost = ghost; + this.updateWidth(); + return this; + } + // Determine if the note has a stem + hasStem() { + if (this.render_options.draw_stem) + return true; + return false; + } + // Get the default stem extension for the note + getStemExtension() { + const glyph = this.getGlyph(); + if (this.stem_extension_override != null) { + return this.stem_extension_override; + } + if (glyph) { + return this.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP ? glyph.tabnote_stem_up_extension : glyph.tabnote_stem_down_extension; + } + return 0; + } + // Calculate and store the width of the note + updateWidth() { + this.glyphs = []; + this.width = 0; + for (let i = 0; i < this.positions.length; ++i) { + let fret = this.positions[i].fret; + if (this.ghost) + fret = '(' + fret + ')'; + const glyph = _tables__WEBPACK_IMPORTED_MODULE_5__.Tables.tabToGlyph(fret.toString(), this.render_options.scale); + this.glyphs.push(glyph); + this.width = Math.max(glyph.getWidth(), this.width); + } + // For some reason we associate a notehead glyph with a TabNote, and this + // glyph is used for certain width calculations. Of course, this is totally + // incorrect since a notehead is a poor approximation for the dimensions of + // a fret number which can have multiple digits. As a result, we must + // overwrite getWidth() to return the correct width + this.glyph.getWidth = () => this.width; + } + // Set the `stave` to the note + setStave(stave) { + super.setStave(stave); + const ctx = stave.getContext(); + this.setContext(ctx); + // Calculate the fret number width based on font used + if (ctx) { + this.width = 0; + for (let i = 0; i < this.glyphs.length; ++i) { + const glyph = this.glyphs[i]; + const text = '' + glyph.text; + if (text.toUpperCase() !== 'X') { + ctx.save(); + ctx.setFont(this.render_options.font); + glyph.width = ctx.measureText(text).width; + ctx.restore(); + glyph.getWidth = () => glyph.width; + } + this.width = Math.max(glyph.getWidth(), this.width); + } + this.glyph.getWidth = () => this.width; + } + // we subtract 1 from `line` because getYForLine expects a 0-based index, + // while the position.str is a 1-based index + const ys = this.positions.map(({ str: line }) => stave.getYForLine(Number(line) - 1)); + this.setYs(ys); + if (this.stem) { + this.stem.setYBounds(this.getStemY(), this.getStemY()); + } + return this; + } + // Get the fret positions for the note + getPositions() { + return this.positions; + } + // Get the default `x` and `y` coordinates for a modifier at a specific + // `position` at a fret position `index` + getModifierStartXY(position, index) { + if (!this.preFormatted) { + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('UnformattedNote', "Can't call GetModifierStartXY on an unformatted note"); + } + if (this.ys.length === 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('NoYValues', 'No Y-Values calculated for this note.'); + } + let x = 0; + if (position === _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier.Position.LEFT) { + x = -1 * 2; // FIXME: modifier padding, move to font file + } + else if (position === _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier.Position.RIGHT) { + x = this.width + 2; // FIXME: modifier padding, move to font file + } + else if (position === _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier.Position.BELOW || position === _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier.Position.ABOVE) { + const note_glyph_width = this.glyph.getWidth(); + x = note_glyph_width / 2; + } + return { + x: this.getAbsoluteX() + x, + y: this.ys[index], + }; + } + // Get the default line for rest + getLineForRest() { + return Number(this.positions[0].str); + } + // Pre-render formatting + preFormat() { + if (this.preFormatted) + return; + if (this.modifierContext) + this.modifierContext.preFormat(); + // width is already set during init() + this.preFormatted = true; + } + // Get the x position for the stem + getStemX() { + return this.getCenterGlyphX(); + } + // Get the y position for the stem + getStemY() { + const num_lines = this.checkStave().getNumLines(); + // The decimal staff line amounts provide optimal spacing between the + // fret number and the stem + const stemUpLine = -0.5; + const stemDownLine = num_lines - 0.5; + const stemStartLine = _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP === this.stem_direction ? stemUpLine : stemDownLine; + return this.checkStave().getYForLine(stemStartLine); + } + // Get the stem extents for the tabnote + getStemExtents() { + return this.checkStem().getExtents(); + } + // Draw the fal onto the context + drawFlag() { + var _a; + const { beam, glyph, render_options: { draw_stem }, } = this; + const context = this.checkContext(); + const shouldDrawFlag = beam == undefined && draw_stem; + // Now it's the flag's turn. + if (glyph.flag && shouldDrawFlag) { + const flag_x = this.getStemX(); + const flag_y = this.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.DOWN + ? // Down stems are below the note head and have flags on the right. + this.getStemY() - this.checkStem().getHeight() - (this.glyph ? this.glyph.stem_down_extension : 0) + : // Up stems are above the note head and have flags on the right. + this.getStemY() - this.checkStem().getHeight() + (this.glyph ? this.glyph.stem_up_extension : 0); + // Draw the Flag + //this.flag?.setOptions({ category: 'flag.tabStem' }); + (_a = this.flag) === null || _a === void 0 ? void 0 : _a.render(context, flag_x, flag_y); + //Glyph.renderGlyph(context, flag_x, flag_y, glyph_font_scale, flag_code, { category: 'flag.tabStem' }); + } + } + // Render the modifiers onto the context. + drawModifiers() { + this.modifiers.forEach((modifier) => { + // Only draw the dots if enabled. + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_6__.isDot)(modifier) && !this.render_options.draw_dots) { + return; + } + modifier.setContext(this.getContext()); + modifier.drawWithStyle(); + }); + } + // Render the stem extension through the fret positions + drawStemThrough() { + const stemX = this.getStemX(); + const stemY = this.getStemY(); + const ctx = this.checkContext(); + const drawStem = this.render_options.draw_stem; + const stemThrough = this.render_options.draw_stem_through_stave; + if (drawStem && stemThrough) { + const numLines = this.checkStave().getNumLines(); + const stringsUsed = this.positions.map((position) => Number(position.str)); + const unusedStrings = getUnusedStringGroups(numLines, stringsUsed); + const stemLines = getPartialStemLines(stemY, unusedStrings, this.checkStave(), this.getStemDirection()); + ctx.save(); + ctx.setLineWidth(_stem__WEBPACK_IMPORTED_MODULE_3__.Stem.WIDTH); + stemLines.forEach((bounds) => { + if (bounds.length === 0) + return; + ctx.beginPath(); + ctx.moveTo(stemX, bounds[0]); + ctx.lineTo(stemX, bounds[bounds.length - 1]); + ctx.stroke(); + ctx.closePath(); + }); + ctx.restore(); + } + } + // Render the fret positions onto the context + drawPositions() { + const ctx = this.checkContext(); + const x = this.getAbsoluteX(); + const ys = this.ys; + for (let i = 0; i < this.positions.length; ++i) { + const y = ys[i] + this.render_options.y_shift; + const glyph = this.glyphs[i]; + // Center the fret text beneath the notation note head + const note_glyph_width = this.glyph.getWidth(); + const tab_x = x + note_glyph_width / 2 - glyph.getWidth() / 2; + // FIXME: Magic numbers. + ctx.clearRect(tab_x - 2, y - 3, glyph.getWidth() + 4, 6); + if (glyph.code) { + _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderGlyph(ctx, tab_x, y, this.render_options.glyph_font_scale * this.render_options.scale, glyph.code); + } + else { + ctx.save(); + ctx.setFont(this.render_options.font); + const text = glyph.text.toString(); + ctx.fillText(text, tab_x, y + 5 * this.render_options.scale); + ctx.restore(); + } + } + } + // The main rendering function for the entire note. + draw() { + const ctx = this.checkContext(); + if (this.ys.length === 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('NoYValues', "Can't draw note without Y values."); + } + this.setRendered(); + const render_stem = this.beam == undefined && this.render_options.draw_stem; + ctx.openGroup('tabnote', this.getAttribute('id'), { pointerBBox: true }); + this.drawPositions(); + this.drawStemThrough(); + if (this.stem && render_stem) { + const stem_x = this.getStemX(); + this.stem.setNoteHeadXBounds(stem_x, stem_x); + this.stem.setContext(ctx).draw(); + } + this.drawFlag(); + this.drawModifiers(); + ctx.closeGroup(); + } +} + + +/***/ }), + +/***/ "./src/tabslide.ts": +/*!*************************!*\ + !*** ./src/tabslide.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TabSlide": () => (/* binding */ TabSlide) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _tabtie__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tabtie */ "./src/tabtie.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// This class implements varies types of ties between contiguous notes. The +// ties include: regular ties, hammer ons, pull offs, and slides. + + + + +class TabSlide extends _tabtie__WEBPACK_IMPORTED_MODULE_1__.TabTie { + /** + * @param notes is a struct of the form: + * { + * first_note: Note, + * last_note: Note, + * first_indices: [n1, n2, n3], + * last_indices: [n1, n2, n3] + * } + * @param notes.first_note the starting note of the slide + * @param notes.last_note the ending note of the slide + * @param notes.first_indices specifies which string + fret positions of the TabNote are used in this slide. zero indexed. + * @param notes.last_indices currently unused. we assume it's the same as first_indices. + * + * @param direction TabSlide.SLIDE_UP or TabSlide.SLIDE_DOWN + */ + constructor(notes, direction) { + super(notes, 'sl.'); + // Determine the direction automatically if it is not provided. + if (!direction) { + let first_fret = notes.first_note.getPositions()[0].fret; + if (typeof first_fret === 'string') { + first_fret = parseInt(first_fret, 10); + } + let last_fret = notes.last_note.getPositions()[0].fret; + if (typeof last_fret === 'string') { + last_fret = parseInt(last_fret, 10); + } + // If either of the frets are 'X', parseInt() above will return NaN. + // Choose TabSlide.SLIDE_UP by default. + if (isNaN(first_fret) || isNaN(last_fret)) { + direction = TabSlide.SLIDE_UP; + } + else { + direction = first_fret > last_fret ? TabSlide.SLIDE_DOWN : TabSlide.SLIDE_UP; + } + } + this.direction = direction; + this.render_options.cp1 = 11; + this.render_options.cp2 = 14; + this.render_options.y_shift = 0.5; + this.resetFont(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.TabSlide; + } + static get SLIDE_UP() { + return 1; + } + static get SLIDE_DOWN() { + return -1; + } + static createSlideUp(notes) { + return new TabSlide(notes, TabSlide.SLIDE_UP); + } + static createSlideDown(notes) { + return new TabSlide(notes, TabSlide.SLIDE_DOWN); + } + renderTie(params) { + if (params.first_ys.length === 0 || params.last_ys.length === 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('BadArguments', 'No Y-values to render'); + } + const ctx = this.checkContext(); + const first_x_px = params.first_x_px; + const first_ys = params.first_ys; + const last_x_px = params.last_x_px; + const direction = params.direction; + if (direction !== TabSlide.SLIDE_UP && direction !== TabSlide.SLIDE_DOWN) { + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('BadSlide', 'Invalid slide direction'); + } + // eslint-disable-next-line + const first_indices = this.notes.first_indices; + for (let i = 0; i < first_indices.length; ++i) { + const slide_y = first_ys[first_indices[i]] + this.render_options.y_shift; + if (isNaN(slide_y)) { + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('BadArguments', 'Bad indices for slide rendering.'); + } + ctx.beginPath(); + ctx.moveTo(first_x_px, slide_y + 3 * direction); + ctx.lineTo(last_x_px, slide_y - 3 * direction); + ctx.closePath(); + ctx.stroke(); + } + this.setRendered(); + } +} +TabSlide.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SERIF, + size: 10, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.BOLD, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.ITALIC, +}; + + +/***/ }), + +/***/ "./src/tabstave.ts": +/*!*************************!*\ + !*** ./src/tabstave.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TabStave": () => (/* binding */ TabStave) +/* harmony export */ }); +/* harmony import */ var _stave__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./stave */ "./src/stave.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. + + +class TabStave extends _stave__WEBPACK_IMPORTED_MODULE_0__.Stave { + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_1__.Category.TabStave; + } + constructor(x, y, width, options) { + const tab_options = Object.assign({ spacing_between_lines_px: 13, num_lines: 6, top_text_position: 1 }, options); + super(x, y, width, tab_options); + } + getYForGlyphs() { + return this.getYForLine(2.5); + } + // Deprecated + addTabGlyph() { + this.addClef('tab'); + return this; + } +} + + +/***/ }), + +/***/ "./src/tabtie.ts": +/*!***********************!*\ + !*** ./src/tabtie.ts ***! + \***********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TabTie": () => (/* binding */ TabTie) +/* harmony export */ }); +/* harmony import */ var _stavetie__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./stavetie */ "./src/stavetie.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// / [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// This class implements varies types of ties between contiguous notes. The +// ties include: regular ties, hammer ons, pull offs, and slides. + + +class TabTie extends _stavetie__WEBPACK_IMPORTED_MODULE_0__.StaveTie { + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_1__.Category.TabTie; + } + static createHammeron(notes) { + return new TabTie(notes, 'H'); + } + static createPulloff(notes) { + return new TabTie(notes, 'P'); + } + /** + * @param notes is a struct that has: + * { + * first_note: Note, + * last_note: Note, + * first_indices: [n1, n2, n3], + * last_indices: [n1, n2, n3] + * } + * + * @param text + */ + constructor(notes, text) { + super(notes, text); + this.render_options.cp1 = 9; + this.render_options.cp2 = 11; + this.render_options.y_shift = 3; + this.direction = -1; // Tab tie's are always face up. + } +} + + +/***/ }), + +/***/ "./src/textbracket.ts": +/*!****************************!*\ + !*** ./src/textbracket.ts ***! + \****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TextBracketPosition": () => (/* binding */ TextBracketPosition), +/* harmony export */ "TextBracket": () => (/* binding */ TextBracket) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _renderer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./renderer */ "./src/renderer.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Cyril Silverman +// +// This file implements `TextBrackets` which extend between two notes. +// The octave transposition markings (8va, 8vb, 15va, 15vb) can be created +// using this class. + + + + + + +// To enable logging for this class. Set `Vex.Flow.TextBracket.DEBUG` to `true`. +// eslint-disable-next-line +function L(...args) { + if (TextBracket.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_5__.log)('Vex.Flow.TextBracket', args); +} +var TextBracketPosition; +(function (TextBracketPosition) { + TextBracketPosition[TextBracketPosition["TOP"] = 1] = "TOP"; + TextBracketPosition[TextBracketPosition["BOTTOM"] = -1] = "BOTTOM"; +})(TextBracketPosition || (TextBracketPosition = {})); +class TextBracket extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + constructor({ start, stop, text = '', superscript = '', position = TextBracketPosition.TOP }) { + super(); + this.start = start; + this.stop = stop; + this.text = text; + this.superscript = superscript; + this.position = typeof position === 'string' ? TextBracket.PositionString[position] : position; + this.line = 1; + this.resetFont(); + this.render_options = { + dashed: true, + dash: [5], + color: 'black', + line_width: 1, + show_bracket: true, + bracket_height: 8, + // In the BOTTOM position, the bracket line can extend + // under the superscript. + underline_superscript: true, + }; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_4__.Category.TextBracket; + } + static get Position() { + return TextBracketPosition; + } + static get PositionString() { + return { + top: TextBracketPosition.TOP, + bottom: TextBracketPosition.BOTTOM, + }; + } + /** + * @deprecated Use `TextBracket.Position` instead. + */ + static get Positions() { + L('Positions is deprecated, use TextBracketPosition instead.'); + return TextBracketPosition; + } + /** + * @deprecated Use `TextBracket.PositionString` instead. + */ + static get PositionsString() { + L('PositionsString is deprecated, use PositionString instead.'); + return TextBracket.PositionString; + } + /** + * Apply the text backet styling to the provided context. + * @param ctx + * @returns this + */ + applyStyle(ctx) { + ctx.setFont(this.font); + const options = this.render_options; + ctx.setStrokeStyle(options.color); + ctx.setFillStyle(options.color); + ctx.setLineWidth(options.line_width); + return this; + } + // Set whether the bracket line should be `dashed`. You can also + // optionally set the `dash` pattern by passing in an array of numbers + setDashed(dashed, dash) { + this.render_options.dashed = dashed; + if (dash) + this.render_options.dash = dash; + return this; + } + // Set the rendering `context` for the octave bracket + setLine(line) { + this.line = line; + return this; + } + // Draw the octave bracket on the rendering context + draw() { + const ctx = this.checkContext(); + this.setRendered(); + let y = 0; + switch (this.position) { + case TextBracketPosition.TOP: + y = this.start.checkStave().getYForTopText(this.line); + break; + case TextBracketPosition.BOTTOM: + y = this.start.checkStave().getYForBottomText(this.line + _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.TEXT_HEIGHT_OFFSET_HACK); + break; + default: + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('InvalidPosition', `The position ${this.position} is invalid.`); + } + // Get the preliminary start and stop coordintates for the bracket + const start = { x: this.start.getAbsoluteX(), y }; + const stop = { x: this.stop.getAbsoluteX(), y }; + L('Rendering TextBracket: start:', start, 'stop:', stop, 'y:', y); + const bracket_height = this.render_options.bracket_height * this.position; + ctx.save(); + this.applyStyle(ctx); + // Draw text + ctx.fillText(this.text, start.x, start.y); + // Get the width and height for the octave number + const main_measure = ctx.measureText(this.text); + const main_width = main_measure.width; + const main_height = main_measure.height; + // Calculate the y position for the super script + const super_y = start.y - main_height / 2.5; + // We called this.resetFont() in the constructor, so we know this.textFont is available. + // eslint-disable-next-line + const { family, size, weight, style } = this.textFont; + // To draw the superscript, we scale the font size by 1/1.4. + const smallerFontSize = _font__WEBPACK_IMPORTED_MODULE_1__.Font.scaleSize(size, 0.714286); + ctx.setFont(family, smallerFontSize, weight, style); + ctx.fillText(this.superscript, start.x + main_width + 1, super_y); + // Determine width and height of the superscript + const super_measure = ctx.measureText(this.superscript); + const super_width = super_measure.width; + const super_height = super_measure.height; + // Setup initial coordinates for the bracket line + let start_x = start.x; + let line_y = super_y; + const end_x = stop.x + this.stop.getGlyph().getWidth(); + // Adjust x and y coordinates based on position + if (this.position === TextBracketPosition.TOP) { + start_x += main_width + super_width + 5; + line_y -= super_height / 2.7; + } + else if (this.position === TextBracketPosition.BOTTOM) { + line_y += super_height / 2.7; + start_x += main_width + 2; + if (!this.render_options.underline_superscript) { + start_x += super_width; + } + } + if (this.render_options.dashed) { + // Main line + _renderer__WEBPACK_IMPORTED_MODULE_2__.Renderer.drawDashedLine(ctx, start_x, line_y, end_x, line_y, this.render_options.dash); + // Ending Bracket + if (this.render_options.show_bracket) { + _renderer__WEBPACK_IMPORTED_MODULE_2__.Renderer.drawDashedLine(ctx, end_x, line_y + 1 * this.position, end_x, line_y + bracket_height, this.render_options.dash); + } + } + else { + ctx.beginPath(); + ctx.moveTo(start_x, line_y); + // Main line + ctx.lineTo(end_x, line_y); + if (this.render_options.show_bracket) { + // Ending bracket + ctx.lineTo(end_x, line_y + bracket_height); + } + ctx.stroke(); + ctx.closePath(); + } + ctx.restore(); + } +} +TextBracket.DEBUG = false; +TextBracket.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_1__.Font.SERIF, + size: 15, + weight: _font__WEBPACK_IMPORTED_MODULE_1__.FontWeight.NORMAL, + style: _font__WEBPACK_IMPORTED_MODULE_1__.FontStyle.ITALIC, +}; + + +/***/ }), + +/***/ "./src/textdynamics.ts": +/*!*****************************!*\ + !*** ./src/textdynamics.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TextDynamics": () => (/* binding */ TextDynamics) +/* harmony export */ }); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + +// eslint-disable-next-line +function L(...args) { + if (TextDynamics.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_3__.log)('Vex.Flow.TextDynamics', args); +} +/** + * `TextDynamics` renders traditional + * text dynamics markings, **ie: p, f, sfz, rfz, ppp** + * + * You can render any dynamics string that contains a combination of + * the following letters: P, M, F, Z, R, S + */ +class TextDynamics extends _note__WEBPACK_IMPORTED_MODULE_1__.Note { + /** + * Create the dynamics marking. + * + * A `TextDynamics` object inherits from `Note` so that it can be formatted + * within a `Voice`. + * + * @param noteStruct an object that contains a `duration` property and a + * `sequence` of letters that represents the letters to render. + */ + constructor(noteStruct) { + super(noteStruct); + this.sequence = (noteStruct.text || '').toLowerCase(); + this.line = noteStruct.line || 0; + this.glyphs = []; + this.render_options = Object.assign(Object.assign({}, this.render_options), { glyph_font_size: 40 }); + L('New Dynamics Text: ', this.sequence); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.TextDynamics; + } + /** The glyph data for each dynamics letter. */ + static get GLYPHS() { + return { + f: { + code: 'dynamicForte', + width: 12, + }, + p: { + code: 'dynamicPiano', + width: 14, + }, + m: { + code: 'dynamicMezzo', + width: 17, + }, + s: { + code: 'dynamicSforzando', + width: 10, + }, + z: { + code: 'dynamicZ', + width: 12, + }, + r: { + code: 'dynamicRinforzando', + width: 12, + }, + }; + } + /** Set the Stave line on which the note should be placed. */ + setLine(line) { + this.line = line; + return this; + } + /** Preformat the dynamics text. */ + preFormat() { + let total_width = 0; + // length of this.glyphs must be <= + // length of this.sequence, so if we're formatted before + // create new glyphs. + this.glyphs = []; + // Iterate through each letter + this.sequence.split('').forEach((letter) => { + // Get the glyph data for the letter + const glyph_data = TextDynamics.GLYPHS[letter]; + if (!glyph_data) + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('Invalid dynamics character: ' + letter); + const size = (0,_util__WEBPACK_IMPORTED_MODULE_3__.defined)(this.render_options.glyph_font_size); + const glyph = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph(glyph_data.code, size, { category: 'textNote' }); + // Add the glyph + this.glyphs.push(glyph); + total_width += glyph_data.width; + }); + // Store the width of the text + this.setWidth(total_width); + this.preFormatted = true; + return this; + } + /** Draw the dynamics text on the rendering context. */ + draw() { + this.setRendered(); + const x = this.getAbsoluteX(); + const y = this.checkStave().getYForLine(this.line + -3); + L('Rendering Dynamics: ', this.sequence); + let letter_x = x; + this.glyphs.forEach((glyph, index) => { + const current_letter = this.sequence[index]; + glyph.render(this.checkContext(), letter_x, y); + letter_x += TextDynamics.GLYPHS[current_letter].width; + }); + } +} +/** To enable logging for this class. Set `Vex.Flow.TextDynamics.DEBUG` to `true`. */ +TextDynamics.DEBUG = false; + + +/***/ }), + +/***/ "./src/textformatter.ts": +/*!******************************!*\ + !*** ./src/textformatter.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TextFormatter": () => (/* binding */ TextFormatter) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + +// eslint-disable-next-line +function L(...args) { + if (TextFormatter.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_1__.log)('Vex.Flow.TextFormatter', args); +} +/** + * Text widths are stored in a cache, so we don't have to recompute widths + * for the same font + string combination. + * + * The cache is first keyed by the font information. The key is of the form: + * `${family}-${size}-${weight}-${style}` + * The second level key is the specific text to be measured. + * + * The stored value is the measured width in `em` units. + * textWidth == textWidthCache[cacheKey][textToMeasure] + */ +const textWidthCache = {}; +/** + * Applications may register additional fonts via `TextFormatter.registerInfo(info)`. + * The metrics for those fonts will be made available to the application. + */ +const registry = {}; +class TextFormatter { + /** + * Use `TextFormatter.create(...)` to build an instance from information previously + * registered via `TextFormatter.registerInfo(info)`. + */ + constructor(formatterInfo) { + /** Font family. */ + this.family = ''; + /** Specified in `pt` units. */ + this.size = 14; + /** Font metrics are extracted at 1000 upem (units per em). */ + this.resolution = 1000; + /** + * For text formatting, we do not require glyph outlines, but instead rely on glyph + * bounding box metrics such as: + * ``` + * { + * x_min: 48, + * x_max: 235, + * y_min: -17, + * y_max: 734, + * ha: 751, + * leftSideBearing: 48, + * advanceWidth: 286, + * } + * ``` + */ + this.glyphs = {}; + this.serifs = false; + this.monospaced = false; + this.italic = false; + this.bold = false; + this.superscriptOffset = 0; + this.subscriptOffset = 0; + this.maxSizeGlyph = 'H'; + // This is an internal key used to index the `textWidthCache`. + this.cacheKey = ''; + this.updateParams(formatterInfo); + } + /** + * Return all registered font families. + */ + static getFontFamilies() { + const registeredFonts = []; + for (const fontFamily in registry) { + const formatterInfo = registry[fontFamily]; + registeredFonts.push(Object.assign({}, formatterInfo)); + } + return registeredFonts; + } + /** + * Call `TextFormatter.registerInfo(info)` to register font information before using this method. + * + * This method creates a formatter for the font that most closely matches the requested font. + * We compare font family, bold, and italic attributes. + * This method will return a fallback formatter if there are no matches. + */ + static create(requestedFont = {}) { + L('create: ', requestedFont); + if (!requestedFont.family) { + requestedFont.family = _font__WEBPACK_IMPORTED_MODULE_0__.Font.SANS_SERIF; + } + // TODO: One potential (small) optimization is to cache the TextFormatter object + // returned for each font info. We would probably want to clear the cache if + // the registry is ever updated. + const candidates = []; + // The incoming font family is a string of comma-separated font family names. + // (e.g., `PetalumaScript, Arial, sans-serif`). + const requestedFamilies = requestedFont.family.split(/\s*,\s*/); + for (const requestedFamily of requestedFamilies) { + for (const fontFamily in registry) { + // Support cases where the registry contains 'Roboto Slab Medium', + // but the requestedFont.family is 'Roboto Slab'. + if (fontFamily.startsWith(requestedFamily)) { + candidates.push(registry[fontFamily]); + } + } + if (candidates.length > 0) { + break; + } + } + let formatter; + if (candidates.length === 0) { + // No match, so return a fallback text formatter. + formatter = new TextFormatter(Object.values(registry)[0]); + } + else if (candidates.length === 1) { + formatter = new TextFormatter(candidates[0]); + } + else { + const bold = _font__WEBPACK_IMPORTED_MODULE_0__.Font.isBold(requestedFont.weight); + const italic = _font__WEBPACK_IMPORTED_MODULE_0__.Font.isItalic(requestedFont.style); + const perfectMatch = candidates.find((f) => f.bold === bold && f.italic === italic); + if (perfectMatch) { + formatter = new TextFormatter(perfectMatch); + } + else { + const partialMatch = candidates.find((f) => f.italic === italic || f.bold === bold); + if (partialMatch) { + formatter = new TextFormatter(partialMatch); + } + else { + formatter = new TextFormatter(candidates[0]); + } + } + } + const fontSize = requestedFont.size; + if (typeof fontSize !== 'undefined') { + const fontSizeInPt = _font__WEBPACK_IMPORTED_MODULE_0__.Font.convertSizeToPointValue(fontSize); + formatter.setFontSize(fontSizeInPt); + } + return formatter; + } + /** + * @param fontFamily used as a key to the font registry. + * @returns the same info object that was passed in via `TextFormatter.registerInfo(info)` + */ + static getInfo(fontFamily) { + return registry[fontFamily]; + } + /** + * Apps may register their own fonts and metrics, and those metrics + * will be available to the app for formatting. + * + * Metrics can be generated from a font file using fontgen_text.js in the tools/fonts directory. + * @param info + * @param overwrite + */ + static registerInfo(info, overwrite = false) { + L('registerInfo: ', info, overwrite); + const fontFamily = info.family; + const currFontInfo = registry[fontFamily]; + if (currFontInfo === undefined || overwrite) { + registry[fontFamily] = info; + } + } + updateParams(params) { + if (params.family) + this.family = params.family; + if (params.resolution) + this.resolution = params.resolution; + if (params.glyphs) + this.glyphs = params.glyphs; + if (params.serifs) + this.serifs = params.serifs; + if (params.monospaced) + this.monospaced = params.monospaced; + if (params.italic) + this.italic = params.italic; + if (params.bold) + this.bold = params.bold; + if (params.maxSizeGlyph) + this.maxSizeGlyph = params.maxSizeGlyph; + if (params.superscriptOffset) + this.superscriptOffset = params.superscriptOffset; + if (params.subscriptOffset) + this.subscriptOffset = params.subscriptOffset; + this.updateCacheKey(); + } + /** Create a hash with the current font data, so we can cache computed widths. */ + updateCacheKey() { + const family = this.family.replace(/\s+/g, '_'); + const size = this.size; + const weight = this.bold ? _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.BOLD : _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.NORMAL; + const style = this.italic ? _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.ITALIC : _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL; + // Use the same key format as SVGContext. + this.cacheKey = `${family}%${size}%${weight}%${style}`; + } + /** + * The glyphs table is indexed by the character (e.g., 'C', '@'). + * See: robotoslab_glyphs.ts & petalumascript_glyphs.ts. + */ + getGlyphMetrics(character) { + if (this.glyphs[character]) { + return this.glyphs[character]; + } + else { + return this.glyphs[this.maxSizeGlyph]; + } + } + get maxHeight() { + const metrics = this.getGlyphMetrics(this.maxSizeGlyph); + return (metrics.ha / this.resolution) * this.fontSizeInPixels; + } + /** + * Retrieve the character's advanceWidth as a fraction of an `em` unit. + * For the space character ' ' as defined in the: + * petalumascript_glyphs.ts: 250 advanceWidth in the 1000 unitsPerEm font returns 0.25. + * robotoslab_glyphs.ts: 509 advanceWidth in the 2048 unitsPerEm font returns 0.2485. + */ + getWidthForCharacterInEm(c) { + var _a; + const metrics = this.getGlyphMetrics(c); + if (!metrics) { + // An arbitrary number, close to the `em` width of the '#' and '5' characters in PetalumaScript. + return 0.65; + } + else { + const advanceWidth = (_a = metrics.advanceWidth) !== null && _a !== void 0 ? _a : 0; + return advanceWidth / this.resolution; + } + } + /** + * Retrieve the total width of `text` in `em` units. + */ + getWidthForTextInEm(text) { + const key = this.cacheKey; + // Get the cache for this specific font family, size, weight, style combination. + // The cache contains previously computed widths for different `text` strings. + let cachedWidths = textWidthCache[key]; + if (cachedWidths === undefined) { + cachedWidths = {}; + textWidthCache[key] = cachedWidths; + } + let width = cachedWidths[text]; + if (width === undefined) { + width = 0; + for (let i = 0; i < text.length; ++i) { + width += this.getWidthForCharacterInEm(text[i]); + } + cachedWidths[text] = width; + } + return width; + } + /** The width of the text (in `em`) is scaled by the font size (in `px`). */ + getWidthForTextInPx(text) { + return this.getWidthForTextInEm(text) * this.fontSizeInPixels; + } + /** + * @param size in pt. + */ + setFontSize(size) { + this.size = size; + // The width cache key depends on the current font size. + this.updateCacheKey(); + return this; + } + /** `this.size` is specified in points. Convert to pixels. */ + get fontSizeInPixels() { + return this.size * _font__WEBPACK_IMPORTED_MODULE_0__.Font.scaleToPxFrom.pt; + } + getResolution() { + return this.resolution; + } +} +/** To enable logging for this class. Set `Vex.Flow.TextFormatter.DEBUG` to `true`. */ +TextFormatter.DEBUG = false; + + +/***/ }), + +/***/ "./src/textnote.ts": +/*!*************************!*\ + !*** ./src/textnote.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TextJustification": () => (/* binding */ TextJustification), +/* harmony export */ "TextNote": () => (/* binding */ TextNote) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + +var TextJustification; +(function (TextJustification) { + TextJustification[TextJustification["LEFT"] = 1] = "LEFT"; + TextJustification[TextJustification["CENTER"] = 2] = "CENTER"; + TextJustification[TextJustification["RIGHT"] = 3] = "RIGHT"; +})(TextJustification || (TextJustification = {})); +/** + * `TextNote` is a notation element that is positioned in time. Generally + * meant for objects that sit above/below the staff and inline with each other. + * `TextNote` has to be assigned to a `Stave` before rendering by means of `setStave`. + * Examples of this would be such as dynamics, lyrics, chord changes, etc. + */ +class TextNote extends _note__WEBPACK_IMPORTED_MODULE_2__.Note { + constructor(noteStruct) { + super(noteStruct); + this.text = noteStruct.text || ''; + this.superscript = noteStruct.superscript; + this.subscript = noteStruct.subscript; + this.setFont(noteStruct.font); + this.line = noteStruct.line || 0; + this.smooth = noteStruct.smooth || false; + this.ignore_ticks = noteStruct.ignore_ticks || false; + this.justification = TextJustification.LEFT; + // Determine and set initial note width. Note that the text width is + // an approximation and isn't very accurate. The only way to accurately + // measure the length of text is with `CanvasRenderingContext2D.measureText()`. + if (noteStruct.glyph) { + const struct = TextNote.GLYPHS[noteStruct.glyph]; + if (!struct) + throw new _util__WEBPACK_IMPORTED_MODULE_4__.RuntimeError('Invalid glyph type: ' + noteStruct.glyph); + this.glyph = new _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph(struct.code, 40, { category: 'textNote' }); + this.setWidth(this.glyph.getMetrics().width); + } + else { + this.glyph = undefined; + } + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.TextNote; + } + /** Glyph data. */ + static get GLYPHS() { + return { + segno: { + code: 'segno', + }, + tr: { + code: 'ornamentTrill', + }, + mordent: { + code: 'ornamentMordent', + }, + mordent_upper: { + code: 'ornamentShortTrill', + }, + mordent_lower: { + code: 'ornamentMordent', + }, + f: { + code: 'dynamicForte', + }, + p: { + code: 'dynamicPiano', + }, + m: { + code: 'dynamicMezzo', + }, + s: { + code: 'dynamicSforzando', + }, + z: { + code: 'dynamicZ', + }, + coda: { + code: 'coda', + }, + pedal_open: { + code: 'keyboardPedalPed', + }, + pedal_close: { + code: 'keyboardPedalUp', + }, + caesura_straight: { + code: 'caesura', + }, + caesura_curved: { + code: 'caesuraCurved', + }, + breath: { + code: 'breathMarkComma', + }, + tick: { + code: 'breathMarkTick', + }, + turn: { + code: 'ornamentTurn', + }, + turn_inverted: { + code: 'ornamentTurnSlash', + }, + }; + } + /** Set the horizontal justification of the TextNote. */ + setJustification(just) { + this.justification = just; + return this; + } + /** Set the Stave line on which the note should be placed. */ + setLine(line) { + this.line = line; + return this; + } + /** Return the Stave line on which the TextNote is placed. */ + getLine() { + return this.line; + } + /** Return the unformatted text of this TextNote. */ + getText() { + return this.text; + } + /** Pre-render formatting. */ + preFormat() { + if (this.preFormatted) + return; + const tickContext = this.checkTickContext(`Can't preformat without a TickContext.`); + if (this.smooth) { + this.setWidth(0); + } + else { + if (this.glyph) { + // Width already set. + } + else { + const ctx = this.checkContext(); + ctx.setFont(this.textFont); + this.setWidth(ctx.measureText(this.text).width); + } + } + if (this.justification === TextJustification.CENTER) { + this.leftDisplacedHeadPx = this.width / 2; + } + else if (this.justification === TextJustification.RIGHT) { + this.leftDisplacedHeadPx = this.width; + } + // We reposition to the center of the note head + this.rightDisplacedHeadPx = tickContext.getMetrics().glyphPx / 2; + this.preFormatted = true; + } + /** + * Renders the TextNote. + * `TextNote` has to be assigned to a `Stave` before rendering by means of `setStave`. + */ + draw() { + const ctx = this.checkContext(); + const stave = this.checkStave(); + const tickContext = this.checkTickContext(`Can't draw without a TickContext.`); + this.setRendered(); + // Reposition to center of note head + let x = this.getAbsoluteX() + tickContext.getMetrics().glyphPx / 2; + // Align based on tick-context width. + const width = this.getWidth(); + if (this.justification === TextJustification.CENTER) { + x -= width / 2; + } + else if (this.justification === TextJustification.RIGHT) { + x -= width; + } + let y; + if (this.glyph) { + y = stave.getYForLine(this.line + -3); + this.glyph.render(ctx, x, y); + } + else { + y = stave.getYForLine(this.line + -3); + this.applyStyle(ctx); + ctx.setFont(this.textFont); + ctx.fillText(this.text, x, y); + const height = ctx.measureText(this.text).height; + // We called this.setFont(...) in the constructor, so we know this.textFont is available. + // eslint-disable-next-line + const { family, size, weight, style } = this.textFont; + // Scale the font size by 1/1.3. + const smallerFontSize = _font__WEBPACK_IMPORTED_MODULE_0__.Font.scaleSize(size, 0.769231); + if (this.superscript) { + ctx.setFont(family, smallerFontSize, weight, style); + ctx.fillText(this.superscript, x + this.width + 2, y - height / 2.2); + } + if (this.subscript) { + ctx.setFont(family, smallerFontSize, weight, style); + ctx.fillText(this.subscript, x + this.width + 2, y + height / 2.2 - 1); + } + this.restoreStyle(ctx); + } + } +} +TextNote.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SANS_SERIF, + size: 12, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.NORMAL, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL, +}; +TextNote.Justification = TextJustification; + + +/***/ }), + +/***/ "./src/tickable.ts": +/*!*************************!*\ + !*** ./src/tickable.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Tickable": () => (/* binding */ Tickable) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fraction */ "./src/fraction.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + +/** + * Tickable represents a element that sit on a score and + * has a duration, i.e., Tickables occupy space in the musical rendering dimension. + */ +class Tickable extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + constructor() { + super(); + this._preFormatted = false; + this._postFormatted = false; + // These properties represent the duration of + // this tickable element. + this.ticks = new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(0, 1); // Fractional value of ticks + this.intrinsicTicks = 0; // Floating point value of ticks + this.tickMultiplier = new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(1, 1); + // Formatter metrics + this.width = 0; + this.x_shift = 0; // Shift from tick context + this.modifiers = []; + this.tupletStack = []; + this.align_center = false; + this.center_x_shift = 0; // Shift from tick context if center aligned + // This flag tells the formatter to ignore this tickable during + // formatting and justification. It is set by tickables such as BarNote. + this.ignore_ticks = false; + // This is a space for an external formatting class or function to maintain + // metrics. + this.formatterMetrics = { + // The freedom of a tickable is the distance it can move without colliding + // with neighboring elements. A formatter can set these values during its + // formatting pass, which a different formatter can then use to fine tune. + freedom: { left: 0, right: 0 }, + // The simplified rational duration of this tick as a string. It can be + // used as an index to a map or hashtable. + duration: '', + // The number of formatting iterations undergone. + iterations: 0, + // The space in pixels allocated by this formatter, along with the mean space + // for tickables of this duration, and the deviation from the mean. + space: { + used: 0, + mean: 0, + deviation: 0, + }, + }; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.Tickable; + } + /** Reset the Tickable, this function will be overloaded. */ + reset() { + return this; + } + /** Return the ticks. */ + getTicks() { + return this.ticks; + } + /** Check if it ignores the ticks. */ + shouldIgnoreTicks() { + return this.ignore_ticks; + } + /** Ignore the ticks. */ + setIgnoreTicks(flag) { + this.ignore_ticks = flag; + return this; + } + /** Set width of note. Used by the formatter for positioning. */ + setWidth(width) { + this.width = width; + } + /** Get width of note. Used by the formatter for positioning. */ + getWidth() { + if (!this._preFormatted) { + throw new _util__WEBPACK_IMPORTED_MODULE_4__.RuntimeError('UnformattedNote', "Can't call GetWidth on an unformatted note."); + } + return this.width + (this.modifierContext ? this.modifierContext.getWidth() : 0); + } + /** Displace note by `x` pixels. Used by the formatter. */ + setXShift(x) { + this.x_shift = x; + return this; + } + /** Get the `x` displaced pixels of the note. */ + getXShift() { + return this.x_shift; + } + /** Get `x` position of this tick context. */ + getX() { + const tickContext = this.checkTickContext(`Can't getX() without a TickContext.`); + return tickContext.getX() + this.x_shift; + } + /** Return the formatterMetrics. */ + getFormatterMetrics() { + return this.formatterMetrics; + } + /** Return the center `x` shift. */ + getCenterXShift() { + if (this.isCenterAligned()) { + return this.center_x_shift; + } + return 0; + } + /** Set the center `x` shift. */ + setCenterXShift(centerXShift) { + this.center_x_shift = centerXShift; + return this; + } + // Check if tickable is center aligned. */ + isCenterAligned() { + return this.align_center; + } + // Set/unset center alignment. */ + setCenterAlignment(align_center) { + this.align_center = align_center; + return this; + } + /** + * Return the associated voice. Every tickable must be associated with a voice. + * This allows formatters and preFormatter to associate them with the right modifierContexts. + */ + getVoice() { + return (0,_util__WEBPACK_IMPORTED_MODULE_4__.defined)(this.voice, 'NoVoice', 'Tickable has no voice.'); + } + /** Set the associated voice. */ + setVoice(voice) { + this.voice = voice; + } + /** Get the tuplet. */ + getTuplet() { + return this.tuplet; + } + /** Return the intrinsic ticks. */ + getTupletStack() { + return this.tupletStack; + } + /** + * Reset the specific Tuplet if this is not provided, all tuplets are reset. + * Remove any prior tuplets from the tick calculation and + * reset the intrinsic tick value. + */ + resetTuplet(tuplet) { + let noteCount; + let notesOccupied; + if (tuplet) { + const i = this.tupletStack.indexOf(tuplet); + if (i !== -1) { + this.tupletStack.splice(i, 1); + noteCount = tuplet.getNoteCount(); + notesOccupied = tuplet.getNotesOccupied(); + // Revert old multiplier by inverting numerator & denom.: + this.applyTickMultiplier(noteCount, notesOccupied); + } + return this; + } + while (this.tupletStack.length) { + tuplet = this.tupletStack.pop(); + noteCount = tuplet.getNoteCount(); + notesOccupied = tuplet.getNotesOccupied(); + // Revert old multiplier by inverting numerator & denom.: + this.applyTickMultiplier(noteCount, notesOccupied); + } + return this; + } + /** Attach to new tuplet. */ + setTuplet(tuplet) { + if (tuplet) { + this.tupletStack.push(tuplet); + const noteCount = tuplet.getNoteCount(); + const notesOccupied = tuplet.getNotesOccupied(); + this.applyTickMultiplier(notesOccupied, noteCount); + } + this.tuplet = tuplet; + return this; + } + /** + * Add self to the provided ModifierContext `mc`. + * If this tickable has modifiers, set modifierContext. + * @returns this + */ + addToModifierContext(mc) { + this.modifierContext = mc; + for (let i = 0; i < this.modifiers.length; ++i) { + this.modifierContext.addMember(this.modifiers[i]); + } + this.modifierContext.addMember(this); + this._preFormatted = false; + return this; + } + /** + * Optional, if tickable has modifiers, associate a Modifier. + * @param mod the modifier + */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + addModifier(modifier, index = 0) { + this.modifiers.push(modifier); + this._preFormatted = false; + return this; + } + /** Get the list of associated modifiers. */ + getModifiers() { + return this.modifiers; + } + /** Set the Tick Context. */ + setTickContext(tc) { + this.tickContext = tc; + this._preFormatted = false; + } + checkTickContext(message = 'Tickable has no tick context.') { + return (0,_util__WEBPACK_IMPORTED_MODULE_4__.defined)(this.tickContext, 'NoTickContext', message); + } + /** Preformat the Tickable. */ + preFormat() { + if (this._preFormatted) + return; + this.width = 0; + if (this.modifierContext) { + this.modifierContext.preFormat(); + this.width += this.modifierContext.getWidth(); + } + } + /** Set preformatted status. */ + set preFormatted(value) { + this._preFormatted = value; + } + get preFormatted() { + return this._preFormatted; + } + /** Postformat the Tickable. */ + postFormat() { + if (this._postFormatted) + return this; + this._postFormatted = true; + return this; + } + /** Set postformatted status. */ + set postFormatted(value) { + this._postFormatted = value; + } + get postFormatted() { + return this._postFormatted; + } + /** Return the intrinsic ticks. */ + getIntrinsicTicks() { + return this.intrinsicTicks; + } + /** Set the intrinsic ticks. */ + setIntrinsicTicks(intrinsicTicks) { + this.intrinsicTicks = intrinsicTicks; + this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks); + } + /** Get the tick multiplier. */ + getTickMultiplier() { + return this.tickMultiplier; + } + /** Apply a tick multiplier. */ + applyTickMultiplier(numerator, denominator) { + this.tickMultiplier.multiply(numerator, denominator); + this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks); + } + /** Set the duration. */ + setDuration(duration) { + const ticks = duration.numerator * (_tables__WEBPACK_IMPORTED_MODULE_2__.Tables.RESOLUTION / duration.denominator); + this.ticks = this.tickMultiplier.clone().multiply(ticks); + this.intrinsicTicks = this.ticks.value(); + } + getAbsoluteX() { + const tickContext = this.checkTickContext(`Can't getAbsoluteX() without a TickContext.`); + return tickContext.getX(); + } + /** Attach this note to a modifier context. */ + setModifierContext(mc) { + this.modifierContext = mc; + return this; + } + /** Get `ModifierContext`. */ + getModifierContext() { + return this.modifierContext; + } + /** Check and get `ModifierContext`. */ + checkModifierContext() { + return (0,_util__WEBPACK_IMPORTED_MODULE_4__.defined)(this.modifierContext, 'NoModifierContext', 'No modifier context attached to this tickable.'); + } +} + + +/***/ }), + +/***/ "./src/tickcontext.ts": +/*!****************************!*\ + !*** ./src/tickcontext.ts ***! + \****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TickContext": () => (/* binding */ TickContext) +/* harmony export */ }); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./fraction */ "./src/fraction.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// A formatter for abstract tickable objects, such as notes, chords, +// tabs, etc. + + +/** + * TickContext formats abstract tickable objects, such as notes, chords, tabs, etc. + */ +class TickContext { + constructor(options) { + this.preFormatted = false; + this.postFormatted = false; + this.tickID = options && options.tickID ? options.tickID : 0; + this.currentTick = new _fraction__WEBPACK_IMPORTED_MODULE_0__.Fraction(0, 1); + this.maxTicks = new _fraction__WEBPACK_IMPORTED_MODULE_0__.Fraction(0, 1); + this.maxTickable = undefined; // Biggest tickable + this.minTicks = undefined; // this can remian null if all tickables have ignore_ticks + this.minTickable = undefined; + this.padding = 1; // padding on each side (width += padding * 2) + this.x = 0; + this.xBase = 0; // base x position without xOffset + this.xOffset = 0; // xBase and xOffset are an alternative way to describe x (x = xB + xO) + this.tickables = []; // Notes, tabs, chords, lyrics. + this.tickablesByVoice = {}; // Tickables indexed by voice number + // Formatting metrics + this.notePx = 0; // width of widest note in this context + this.glyphPx = 0; // width of glyph (note head) + this.leftDisplacedHeadPx = 0; // Extra left pixels for displaced notes + this.rightDisplacedHeadPx = 0; // Extra right pixels for displaced notes + this.modLeftPx = 0; // Left modifier pixels + this.modRightPx = 0; // Right modifier pixels + this.totalLeftPx = 0; // Total left pixels + this.totalRightPx = 0; // Total right pixels + this.tContexts = []; // Parent array of tick contexts + this.width = 0; + this.formatterMetrics = { + // The freedom of a tickcontext is the distance it can move without colliding + // with neighboring elements. A formatter can set these values during its + // formatting pass, which a different formatter can then use to fine tune. + freedom: { left: 0, right: 0 }, + }; + } + static getNextContext(tContext) { + const contexts = tContext.tContexts; + const index = contexts.indexOf(tContext); + if (index + 1 < contexts.length) + return contexts[index + 1]; + } + getTickID() { + return this.tickID; + } + getX() { + return this.x; + } + setX(x) { + this.x = x; + this.xBase = x; + this.xOffset = 0; + return this; + } + getXBase() { + return this.xBase; + } // use of xBase and xOffset is optional, avoids offset creep + setXBase(xBase) { + this.xBase = xBase; + this.x = xBase + this.xOffset; + } + getXOffset() { + return this.xOffset; + } + setXOffset(xOffset) { + this.xOffset = xOffset; + this.x = this.xBase + xOffset; + } + getWidth() { + return this.width + this.padding * 2; + } + setPadding(padding) { + this.padding = padding; + return this; + } + getMaxTicks() { + return this.maxTicks; + } + getMinTicks() { + return this.minTicks; + } + getMaxTickable() { + return this.maxTickable; + } + getMinTickable() { + return this.minTickable; + } + getTickables() { + return this.tickables; + } + /** + * Introduced on 2020-04-17 as getTickablesForVoice(voiceIndex). + * https://github.com/0xfe/vexflow/blame/dc97b0cc5bb93171c0038638c34362dc958222ca/src/tickcontext.js#L63 + * Renamed on 2021-08-05 to getTickableForVoice(voiceIndex). Method renamed to singular, since it returns one Tickable. + */ + getTickableForVoice(voiceIndex) { + return this.tickablesByVoice[voiceIndex]; + } + getTickablesByVoice() { + return this.tickablesByVoice; + } + getCenterAlignedTickables() { + return this.tickables.filter((tickable) => tickable.isCenterAligned()); + } + /** Gets widths context, note and left/right modifiers for formatting. */ + getMetrics() { + const { width, glyphPx, notePx, leftDisplacedHeadPx, rightDisplacedHeadPx, modLeftPx, modRightPx, totalLeftPx, totalRightPx, } = this; + return { + width, + glyphPx, + notePx, + leftDisplacedHeadPx, + rightDisplacedHeadPx, + modLeftPx, + modRightPx, + totalLeftPx, + totalRightPx, + }; + } + getCurrentTick() { + return this.currentTick; + } + setCurrentTick(tick) { + this.currentTick = tick; + this.preFormatted = false; + } + addTickable(tickable, voiceIndex) { + if (!tickable) { + throw new _util__WEBPACK_IMPORTED_MODULE_1__.RuntimeError('BadArgument', 'Invalid tickable added.'); + } + if (!tickable.shouldIgnoreTicks()) { + const ticks = tickable.getTicks(); + if (ticks.greaterThan(this.maxTicks)) { + this.maxTicks = ticks.clone(); + this.maxTickable = tickable; + } + if (this.minTicks == null) { + this.minTicks = ticks.clone(); + this.minTickable = tickable; + } + else if (ticks.lessThan(this.minTicks)) { + this.minTicks = ticks.clone(); + this.minTickable = tickable; + } + } + tickable.setTickContext(this); + this.tickables.push(tickable); + this.tickablesByVoice[voiceIndex || 0] = tickable; + this.preFormatted = false; + return this; + } + preFormat() { + if (this.preFormatted) + return this; + for (let i = 0; i < this.tickables.length; ++i) { + const tickable = this.tickables[i]; + tickable.preFormat(); + const metrics = tickable.getMetrics(); + // Maintain max displaced head pixels from all tickables in the context + this.leftDisplacedHeadPx = Math.max(this.leftDisplacedHeadPx, metrics.leftDisplacedHeadPx); + this.rightDisplacedHeadPx = Math.max(this.rightDisplacedHeadPx, metrics.rightDisplacedHeadPx); + // Maintain the widest note for all tickables in the context + this.notePx = Math.max(this.notePx, metrics.notePx); + // Maintain the widest note head + this.glyphPx = Math.max(this.glyphPx, metrics.glyphWidth || 0); + // Total modifier shift + this.modLeftPx = Math.max(this.modLeftPx, metrics.modLeftPx); + this.modRightPx = Math.max(this.modRightPx, metrics.modRightPx); + // Total shift + this.totalLeftPx = Math.max(this.totalLeftPx, metrics.modLeftPx + metrics.leftDisplacedHeadPx); + this.totalRightPx = Math.max(this.totalRightPx, metrics.modRightPx + metrics.rightDisplacedHeadPx); + // Recalculate the tick context total width + this.width = this.notePx + this.totalLeftPx + this.totalRightPx; + } + return this; + } + postFormat() { + if (this.postFormatted) + return this; + this.postFormatted = true; + return this; + } + getFormatterMetrics() { + return this.formatterMetrics; + } +} + + +/***/ }), + +/***/ "./src/timesigglyph.ts": +/*!*****************************!*\ + !*** ./src/timesigglyph.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TimeSignatureGlyph": () => (/* binding */ TimeSignatureGlyph) +/* harmony export */ }); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// Renders time signatures glyphs for staffs +// This class is used by TimeSignature to render the associated glyphs + + +class TimeSignatureGlyph extends _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph { + constructor(timeSignature, topDigits, botDigits, code, point, options) { + var _a; + super(code, point, options); + this.timeSignature = timeSignature; + this.topGlyphs = []; + this.botGlyphs = []; + let topWidth = 0; + for (let i = 0; i < topDigits.length; ++i) { + let timeSigType = topDigits[i]; + switch (topDigits[i]) { + case '-': + timeSigType = 'Minus'; + break; + case '+': + timeSigType = botDigits.length > 0 ? 'PlusSmall' : 'Plus'; + break; + case '(': + timeSigType = botDigits.length > 0 ? 'ParensLeftSmall' : 'ParensLeft'; + break; + case ')': + timeSigType = botDigits.length > 0 ? 'ParensRightSmall' : 'ParensRight'; + break; + } + const topGlyph = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph('timeSig' + timeSigType, this.timeSignature.point); + this.topGlyphs.push(topGlyph); + topWidth += (_a = topGlyph.getMetrics().width) !== null && _a !== void 0 ? _a : 0; + } + let botWidth = 0; + for (let i = 0; i < botDigits.length; ++i) { + let timeSigType = botDigits[i]; + switch (botDigits[i]) { + case '+': + timeSigType = 'PlusSmall'; + break; + case '(': + timeSigType = 'ParensLeftSmall'; + break; + case ')': + timeSigType = 'ParensRightSmall'; + break; + } + const botGlyph = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph('timeSig' + timeSigType, this.timeSignature.point); + this.botGlyphs.push(botGlyph); + botWidth += (0,_util__WEBPACK_IMPORTED_MODULE_1__.defined)(botGlyph.getMetrics().width); + } + this.width = Math.max(topWidth, botWidth); + this.xMin = this.getMetrics().x_min; + this.topStartX = (this.width - topWidth) / 2.0; + this.botStartX = (this.width - botWidth) / 2.0; + this.reset(); + } + getMetrics() { + return { + x_min: this.xMin, + x_max: this.xMin + this.width, + width: this.width, + }; + } + renderToStave(x) { + const stave = this.checkStave(); + const ctx = this.checkContext(); + let start_x = x + this.topStartX; + let y = 0; + if (this.botGlyphs.length > 0) + y = stave.getYForLine(this.timeSignature.topLine); + else + y = (stave.getYForLine(this.timeSignature.topLine) + stave.getYForLine(this.timeSignature.bottomLine)) / 2; + for (let i = 0; i < this.topGlyphs.length; ++i) { + const glyph = this.topGlyphs[i]; + _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph.renderOutline(ctx, glyph.getMetrics().outline, this.scale, start_x + this.x_shift, y); + start_x += (0,_util__WEBPACK_IMPORTED_MODULE_1__.defined)(glyph.getMetrics().width); + } + start_x = x + this.botStartX; + y = stave.getYForLine(this.timeSignature.bottomLine); + for (let i = 0; i < this.botGlyphs.length; ++i) { + const glyph = this.botGlyphs[i]; + this.timeSignature.placeGlyphOnLine(glyph, stave, 0); + _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph.renderOutline(ctx, glyph.getMetrics().outline, this.scale, start_x + glyph.getMetrics().x_shift, y); + start_x += (0,_util__WEBPACK_IMPORTED_MODULE_1__.defined)(glyph.getMetrics().width); + } + } +} + + +/***/ }), + +/***/ "./src/timesignature.ts": +/*!******************************!*\ + !*** ./src/timesignature.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TimeSignature": () => (/* binding */ TimeSignature) +/* harmony export */ }); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _timesigglyph__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./timesigglyph */ "./src/timesigglyph.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// Implements time signatures glyphs for staffs +// See tables.js for the internal time signatures +// representation + + + + + + +const assertIsValidTimeSig = (timeSpec) => { + const numbers = timeSpec.split('/'); + if (numbers.length !== 2 && numbers[0] !== '+' && numbers[0] !== '-') { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('BadTimeSignature', `Invalid time spec: ${timeSpec}. Must be in the form "/"`); + } + numbers.forEach((number) => { + // Characters consisting in number 0..9, '+', '-', '(' or ')' + if (/^[0-9+\-()]+$/.test(number) == false) { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('BadTimeSignature', `Invalid time spec: ${timeSpec}. Must contain valid signatures.`); + } + }); +}; +class TimeSignature extends _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifier { + constructor(timeSpec = '4/4', customPadding = 15, validate_args = true) { + super(); + this.validate_args = validate_args; + const padding = customPadding; + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont(); + this.point = musicFont.lookupMetric('digits.point'); + const fontLineShift = musicFont.lookupMetric('digits.shiftLine', 0); + this.topLine = 2 + fontLineShift; + this.bottomLine = 4 + fontLineShift; + this.setPosition(_stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifierPosition.BEGIN); + this.info = this.parseTimeSpec(timeSpec); + this.setWidth((0,_util__WEBPACK_IMPORTED_MODULE_5__.defined)(this.info.glyph.getMetrics().width)); + this.setPadding(padding); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_4__.Category.TimeSignature; + } + static get glyphs() { + return { + C: { + code: 'timeSigCommon', + point: 40, + line: 2, + }, + 'C|': { + code: 'timeSigCutCommon', + point: 40, + line: 2, + }, + }; + } + parseTimeSpec(timeSpec) { + var _a, _b; + if (timeSpec === 'C' || timeSpec === 'C|') { + const { line, code, point } = TimeSignature.glyphs[timeSpec]; + return { + line, + num: false, + glyph: new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph(code, point), + }; + } + if (this.validate_args) { + assertIsValidTimeSig(timeSpec); + } + const parts = timeSpec.split('/'); + return { + num: true, + glyph: this.makeTimeSignatureGlyph((_a = parts[0]) !== null && _a !== void 0 ? _a : '', (_b = parts[1]) !== null && _b !== void 0 ? _b : ''), + }; + } + makeTimeSignatureGlyph(topDigits, botDigits) { + return new _timesigglyph__WEBPACK_IMPORTED_MODULE_3__.TimeSignatureGlyph(this, topDigits, botDigits, 'timeSig0', this.point); + } + getInfo() { + return this.info; + } + setTimeSig(timeSpec) { + this.info = this.parseTimeSpec(timeSpec); + return this; + } + draw() { + const stave = this.checkStave(); + const ctx = stave.checkContext(); + this.setRendered(); + ctx.openGroup('timesignature', this.getAttribute('id')); + this.info.glyph.setStave(stave); + this.info.glyph.setContext(ctx); + this.placeGlyphOnLine(this.info.glyph, stave, this.info.line); + this.info.glyph.renderToStave(this.x); + ctx.closeGroup(); + } +} + + +/***/ }), + +/***/ "./src/timesignote.ts": +/*!****************************!*\ + !*** ./src/timesignote.ts ***! + \****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TimeSigNote": () => (/* binding */ TimeSigNote) +/* harmony export */ }); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _timesignature__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./timesignature */ "./src/timesignature.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Taehoon Moon 2014 + + + +class TimeSigNote extends _note__WEBPACK_IMPORTED_MODULE_0__.Note { + constructor(timeSpec, customPadding) { + super({ duration: 'b' }); + const timeSignature = new _timesignature__WEBPACK_IMPORTED_MODULE_1__.TimeSignature(timeSpec, customPadding); + this.timeSigInfo = timeSignature.getInfo(); + this.setWidth(this.timeSigInfo.glyph.getMetrics().width); + // Note properties + this.ignore_ticks = true; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.TimeSigNote; + } + /* Overridden to ignore */ + // eslint-disable-next-line + addToModifierContext(mc) { + // DO NOTHING. + return this; + } + preFormat() { + this.preFormatted = true; + return this; + } + draw() { + const stave = this.checkStave(); + const ctx = this.checkContext(); + this.setRendered(); + if (!this.timeSigInfo.glyph.getContext()) { + this.timeSigInfo.glyph.setContext(ctx); + } + this.timeSigInfo.glyph.setStave(stave); + this.timeSigInfo.glyph.setYShift(stave.getYForLine(2) - stave.getYForGlyphs()); + this.timeSigInfo.glyph.renderToStave(this.getAbsoluteX()); + } +} + + +/***/ }), + +/***/ "./src/tremolo.ts": +/*!************************!*\ + !*** ./src/tremolo.ts ***! + \************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Tremolo": () => (/* binding */ Tremolo) +/* harmony export */ }); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _gracenote__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./gracenote */ "./src/gracenote.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Mike Corrigan +// MIT License + + + + + + +/** Tremolo implements tremolo notation. */ +class Tremolo extends _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier { + /** + * @param num number of bars + */ + constructor(num) { + super(); + this.num = num; + this.position = _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier.Position.CENTER; + this.code = 'tremolo1'; + // big strokes scales initialised to 1 (no scale) + this.y_spacing_scale = 1; + this.extra_stroke_scale = 1; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_5__.Category.Tremolo; + } + /** Draw the tremolo on the rendering context. */ + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const stemDirection = note.getStemDirection(); + const start = note.getModifierStartXY(this.position, this.index); + let x = start.x; + const gn = (0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isGraceNote)(note); + const scale = gn ? _gracenote__WEBPACK_IMPORTED_MODULE_1__.GraceNote.SCALE : 1; + const category = `tremolo.${gn ? 'grace' : 'default'}`; + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.currentMusicFont(); + let y_spacing = musicFont.lookupMetric(`${category}.spacing`) * stemDirection; + // add y_spacing_scale for big strokes (#1258) + y_spacing *= this.y_spacing_scale; + const height = this.num * y_spacing; + let y = note.getStemExtents().baseY - height; + if (stemDirection < 0) { + y += musicFont.lookupMetric(`${category}.offsetYStemDown`) * scale; + } + else { + y += musicFont.lookupMetric(`${category}.offsetYStemUp`) * scale; + } + const fontScale = musicFont.lookupMetric(`${category}.point`); + x += musicFont.lookupMetric(`${category}.offsetXStem${stemDirection === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP ? 'Up' : 'Down'}`); + for (let i = 0; i < this.num; ++i) { + _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph.renderGlyph(ctx, x, y, fontScale, this.code, { category, scale: this.extra_stroke_scale }); + y += y_spacing; + } + } +} + + +/***/ }), + +/***/ "./src/tuning.ts": +/*!***********************!*\ + !*** ./src/tuning.ts ***! + \***********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Tuning": () => (/* binding */ Tuning) +/* harmony export */ }); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + +/** `Tuning` implements varies types of tunings for tablature. */ +class Tuning { + /** + * Constructor. + * @param tuningString tuning name (eg. 'dagdad') or comma separated note strings + */ + constructor(tuningString = 'E/5,B/4,G/4,D/4,A/3,E/3,B/2,E/2') { + this.tuningValues = []; + // Default to standard tuning. + this.setTuning(tuningString); + } + static get names() { + return { + standard: 'E/5,B/4,G/4,D/4,A/3,E/3', + dagdad: 'D/5,A/4,G/4,D/4,A/3,D/3', + dropd: 'E/5,B/4,G/4,D/4,A/3,D/3', + eb: 'Eb/5,Bb/4,Gb/4,Db/4,Ab/3,Db/3', + standardBanjo: 'D/5,B/4,G/4,D/4,G/5', + }; + } + /** Return the note number associated to the note string. */ + noteToInteger(noteString) { + return _tables__WEBPACK_IMPORTED_MODULE_0__.Tables.keyProperties(noteString).int_value; + } + /** + * Set tuning identified by tuning name (eg. 'dagdad') + * @param tuningString tuning name (eg. 'dagdad') or comma separated note strings + */ + setTuning(tuningString) { + if (Tuning.names[tuningString]) { + tuningString = Tuning.names[tuningString]; + } + this.tuningValues = []; + const keys = tuningString.split(/\s*,\s*/); + if (keys.length === 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_1__.RuntimeError('BadArguments', `Invalid tuning string: ${tuningString}`); + } + for (let i = 0; i < keys.length; ++i) { + this.tuningValues[i] = this.noteToInteger(keys[i]); + } + } + /** Return the note number associated with a tablature string. */ + getValueForString(stringNum) { + const s = Number(stringNum); + if (s < 1 || s > this.tuningValues.length) { + throw new _util__WEBPACK_IMPORTED_MODULE_1__.RuntimeError('BadArguments', `String number must be between 1 and ${this.tuningValues.length}:${stringNum}`); + } + return this.tuningValues[s - 1]; + } + /** Return the note number associated with a tablature string and fret. */ + getValueForFret(fretNum, stringNum) { + const stringValue = this.getValueForString(stringNum); + const f = Number(fretNum); + if (f < 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_1__.RuntimeError('BadArguments', `Fret number must be 0 or higher: ${fretNum}`); + } + return stringValue + f; + } + /** Return the note string associated with tablature string and fret. */ + getNoteForFret(fretNum, stringNum) { + const noteValue = this.getValueForFret(fretNum, stringNum); + const octave = Math.floor(noteValue / 12); + const value = noteValue % 12; + return `${_tables__WEBPACK_IMPORTED_MODULE_0__.Tables.integerToNote(value)}/${octave}`; + } +} + + +/***/ }), + +/***/ "./src/tuplet.ts": +/*!***********************!*\ + !*** ./src/tuplet.ts ***! + \***********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TupletLocation": () => (/* binding */ TupletLocation), +/* harmony export */ "Tuplet": () => (/* binding */ Tuplet) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _formatter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formatter */ "./src/formatter.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +/** + * ## Description + * + * Create a new tuplet from the specified notes. The notes must + * be part of the same voice. If they are of different rhythmic + * values, then options.num_notes must be set. + * + * @constructor + * @param {Array.} A set of notes: staveNotes, + * notes, etc... any class that inherits stemmableNote at some + * point in its prototype chain. + * @param options: object { + * + * num_notes: fit this many notes into... + * notes_occupied: ...the space of this many notes + * + * Together, these two properties make up the tuplet ratio + * in the form of num_notes : notes_occupied. + * num_notes defaults to the number of notes passed in, so + * it is important that if you omit this property, all of + * the notes passed should be of the same note value. + * notes_occupied defaults to 2 -- so you should almost + * certainly pass this parameter for anything other than + * a basic triplet. + * + * location: + * default 1, which is above the notes: ┌─── 3 ───┐ + * -1 is below the notes └─── 3 ───┘ + * + * bracketed: boolean, draw a bracket around the tuplet number + * when true: ┌─── 3 ───┐ when false: 3 + * defaults to true if notes are not beamed, false otherwise + * + * ratioed: boolean + * when true: ┌─── 7:8 ───┐, when false: ┌─── 7 ───┐ + * defaults to true if the difference between num_notes and + * notes_occupied is greater than 1. + * + * y_offset: int, default 0 + * manually offset a tuplet, for instance to avoid collisions + * with articulations, etc... + * } + */ + + + + + + + +var TupletLocation; +(function (TupletLocation) { + TupletLocation[TupletLocation["BOTTOM"] = -1] = "BOTTOM"; + TupletLocation[TupletLocation["TOP"] = 1] = "TOP"; +})(TupletLocation || (TupletLocation = {})); +class Tuplet extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + constructor(notes, options = {}) { + super(); + this.numerator_glyphs = []; + this.denom_glyphs = []; + if (!notes || !notes.length) { + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('BadArguments', 'No notes provided for tuplet.'); + } + this.options = options; + this.notes = notes; + this.num_notes = this.options.num_notes != undefined ? this.options.num_notes : notes.length; + // We accept beats_occupied, but warn that it's deprecated: + // the preferred property name is now notes_occupied. + if (this.options.beats_occupied) { + this.beatsOccupiedDeprecationWarning(); + } + this.notes_occupied = this.options.notes_occupied || this.options.beats_occupied || 2; + if (this.options.bracketed != undefined) { + this.bracketed = this.options.bracketed; + } + else { + this.bracketed = notes.some((note) => !note.hasBeam()); + } + this.ratioed = + this.options.ratioed != undefined ? this.options.ratioed : Math.abs(this.notes_occupied - this.num_notes) > 1; + this.point = _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.currentMusicFont().lookupMetric('digits.tupletPoint'); + this.y_pos = 16; + this.x_pos = 100; + this.width = 200; + this.setTupletLocation(this.options.location || Tuplet.LOCATION_TOP); + _formatter__WEBPACK_IMPORTED_MODULE_1__.Formatter.AlignRestsToNotes(notes, true, true); + this.resolveGlyphs(); + this.attach(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_5__.Category.Tuplet; + } + static get LOCATION_TOP() { + return TupletLocation.TOP; + } + static get LOCATION_BOTTOM() { + return TupletLocation.BOTTOM; + } + static get NESTING_OFFSET() { + return 15; + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + static get metrics() { + return _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.currentMusicFont().getMetrics().glyphs.tuplet; + } + attach() { + for (let i = 0; i < this.notes.length; i++) { + const note = this.notes[i]; + note.setTuplet(this); + } + } + detach() { + for (let i = 0; i < this.notes.length; i++) { + const note = this.notes[i]; + note.resetTuplet(this); + } + } + /** + * Set whether or not the bracket is drawn. + */ + setBracketed(bracketed) { + this.bracketed = !!bracketed; + return this; + } + /** + * Set whether or not the ratio is shown. + */ + setRatioed(ratioed) { + this.ratioed = !!ratioed; + return this; + } + /** + * Set the tuplet indicator to be displayed either on the top or bottom of the stave. + */ + setTupletLocation(location) { + if (location !== Tuplet.LOCATION_TOP && location !== Tuplet.LOCATION_BOTTOM) { + // eslint-disable-next-line + console.warn(`Invalid tuplet location [${location}]. Using Tuplet.LOCATION_TOP.`); + location = Tuplet.LOCATION_TOP; + } + this.location = location; + return this; + } + getNotes() { + return this.notes; + } + getNoteCount() { + return this.num_notes; + } + beatsOccupiedDeprecationWarning() { + // eslint-disable-next-line + console.warn('beats_occupied has been deprecated as an option for tuplets. Please use notes_occupied instead.', 'Calls to getBeatsOccupied / setBeatsOccupied should now be routed to getNotesOccupied / setNotesOccupied.', 'The old methods will be removed in VexFlow 5.0.'); + } + getBeatsOccupied() { + this.beatsOccupiedDeprecationWarning(); + return this.getNotesOccupied(); + } + setBeatsOccupied(beats) { + this.beatsOccupiedDeprecationWarning(); + return this.setNotesOccupied(beats); + } + getNotesOccupied() { + return this.notes_occupied; + } + setNotesOccupied(notes) { + this.detach(); + this.notes_occupied = notes; + this.resolveGlyphs(); + this.attach(); + } + resolveGlyphs() { + this.numerator_glyphs = []; + let n = this.num_notes; + while (n >= 1) { + this.numerator_glyphs.unshift(new _glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph('timeSig' + (n % 10), this.point)); + n = parseInt((n / 10).toString(), 10); + } + this.denom_glyphs = []; + n = this.notes_occupied; + while (n >= 1) { + this.denom_glyphs.unshift(new _glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph('timeSig' + (n % 10), this.point)); + n = parseInt((n / 10).toString(), 10); + } + } + // determine how many tuplets are nested within this tuplet + // on the same side (above/below), to calculate a y + // offset for this tuplet: + getNestedTupletCount() { + const location = this.location; + const first_note = this.notes[0]; + let maxTupletCount = countTuplets(first_note, location); + let minTupletCount = countTuplets(first_note, location); + // Count the tuplets that are on the same side (above/below) + // as this tuplet: + function countTuplets(note, location) { + return note.getTupletStack().filter((tuplet) => tuplet.location === location).length; + } + this.notes.forEach((note) => { + const tupletCount = countTuplets(note, location); + maxTupletCount = tupletCount > maxTupletCount ? tupletCount : maxTupletCount; + minTupletCount = tupletCount < minTupletCount ? tupletCount : minTupletCount; + }); + return maxTupletCount - minTupletCount; + } + // determine the y position of the tuplet: + getYPosition() { + // offset the tuplet for any nested tuplets between + // it and the notes: + const nested_tuplet_y_offset = this.getNestedTupletCount() * Tuplet.NESTING_OFFSET * -this.location; + // offset the tuplet for any manual y_offset: + const y_offset = this.options.y_offset || 0; + // now iterate through the notes and find our highest + // or lowest locations, to form a base y_pos + const first_note = this.notes[0]; + let y_pos; + if (this.location === Tuplet.LOCATION_TOP) { + y_pos = first_note.checkStave().getYForLine(0) - Tuplet.metrics.topModifierOffset; + // check modifiers above note to see if they will collide with tuplet beam + for (let i = 0; i < this.notes.length; ++i) { + const note = this.notes[i]; + let modLines = 0; + const mc = note.getModifierContext(); + if (mc) { + modLines = Math.max(modLines, mc.getState().top_text_line); + } + const modY = note.getYForTopText(modLines) - Tuplet.metrics.noteHeadOffset; + if (note.hasStem() || note.isRest()) { + const top_y = note.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP + ? note.getStemExtents().topY - Tuplet.metrics.stemOffset + : note.getStemExtents().baseY - Tuplet.metrics.noteHeadOffset; + y_pos = Math.min(top_y, y_pos); + if (modLines > 0) { + y_pos = Math.min(modY, y_pos); + } + } + } + } + else { + let lineCheck = Tuplet.metrics.bottomLine; // tuplet default on line 4 + // check modifiers below note to see if they will collide with tuplet beam + this.notes.forEach((nn) => { + const mc = nn.getModifierContext(); + if (mc) { + lineCheck = Math.max(lineCheck, mc.getState().text_line + 1); + } + }); + y_pos = first_note.checkStave().getYForLine(lineCheck) + Tuplet.metrics.noteHeadOffset; + for (let i = 0; i < this.notes.length; ++i) { + if (this.notes[i].hasStem() || this.notes[i].isRest()) { + const bottom_y = this.notes[i].getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP + ? this.notes[i].getStemExtents().baseY + Tuplet.metrics.noteHeadOffset + : this.notes[i].getStemExtents().topY + Tuplet.metrics.stemOffset; + if (bottom_y > y_pos) { + y_pos = bottom_y; + } + } + } + } + return y_pos + nested_tuplet_y_offset + y_offset; + } + draw() { + const ctx = this.checkContext(); + this.setRendered(); + // determine x value of left bound of tuplet + const first_note = this.notes[0]; + const last_note = this.notes[this.notes.length - 1]; + if (!this.bracketed) { + this.x_pos = first_note.getStemX(); + this.width = last_note.getStemX() - this.x_pos; + } + else { + this.x_pos = first_note.getTieLeftX() - 5; + this.width = last_note.getTieRightX() - this.x_pos + 5; + } + // determine y value for tuplet + this.y_pos = this.getYPosition(); + const addGlyphWidth = (width, glyph) => width + (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(glyph.getMetrics().width); + // calculate total width of tuplet notation + let width = this.numerator_glyphs.reduce(addGlyphWidth, 0); + if (this.ratioed) { + width = this.denom_glyphs.reduce(addGlyphWidth, width); + width += this.point * 0.32; + } + const notation_center_x = this.x_pos + this.width / 2; + const notation_start_x = notation_center_x - width / 2; + // draw bracket if the tuplet is not beamed + if (this.bracketed) { + const line_width = this.width / 2 - width / 2 - 5; + // only draw the bracket if it has positive length + if (line_width > 0) { + ctx.fillRect(this.x_pos, this.y_pos, line_width, 1); + ctx.fillRect(this.x_pos + this.width / 2 + width / 2 + 5, this.y_pos, line_width, 1); + ctx.fillRect(this.x_pos, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM ? 1 : 0), 1, this.location * 10); + ctx.fillRect(this.x_pos + this.width, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM ? 1 : 0), 1, this.location * 10); + } + } + // draw numerator glyphs + const shiftY = _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.currentMusicFont().lookupMetric('digits.shiftY', 0); + let x_offset = 0; + this.numerator_glyphs.forEach((glyph) => { + glyph.render(ctx, notation_start_x + x_offset, this.y_pos + this.point / 3 - 2 + shiftY); + x_offset += (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(glyph.getMetrics().width); + }); + // display colon and denominator if the ratio is to be shown + if (this.ratioed) { + const colon_x = notation_start_x + x_offset + this.point * 0.16; + const colon_radius = this.point * 0.06; + ctx.beginPath(); + ctx.arc(colon_x, this.y_pos - this.point * 0.08, colon_radius, 0, Math.PI * 2, false); + ctx.closePath(); + ctx.fill(); + ctx.beginPath(); + ctx.arc(colon_x, this.y_pos + this.point * 0.12, colon_radius, 0, Math.PI * 2, false); + ctx.closePath(); + ctx.fill(); + x_offset += this.point * 0.32; + this.denom_glyphs.forEach((glyph) => { + glyph.render(ctx, notation_start_x + x_offset, this.y_pos + this.point / 3 - 2 + shiftY); + x_offset += (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(glyph.getMetrics().width); + }); + } + } +} + + +/***/ }), + +/***/ "./src/typeguard.ts": +/*!**************************!*\ + !*** ./src/typeguard.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "isCategory": () => (/* binding */ isCategory), +/* harmony export */ "isAccidental": () => (/* binding */ isAccidental), +/* harmony export */ "isAnnotation": () => (/* binding */ isAnnotation), +/* harmony export */ "isBarline": () => (/* binding */ isBarline), +/* harmony export */ "isDot": () => (/* binding */ isDot), +/* harmony export */ "isGraceNote": () => (/* binding */ isGraceNote), +/* harmony export */ "isGraceNoteGroup": () => (/* binding */ isGraceNoteGroup), +/* harmony export */ "isNote": () => (/* binding */ isNote), +/* harmony export */ "isRenderContext": () => (/* binding */ isRenderContext), +/* harmony export */ "isStaveNote": () => (/* binding */ isStaveNote), +/* harmony export */ "isStemmableNote": () => (/* binding */ isStemmableNote), +/* harmony export */ "isTabNote": () => (/* binding */ isTabNote), +/* harmony export */ "Category": () => (/* binding */ Category) +/* harmony export */ }); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Ron B. Yeh +// MIT License +/* eslint-disable @typescript-eslint/no-explicit-any */ +/** + * Use instead of `instanceof` as a more flexible type guard. + * @param obj check if this object's CATEGORY matches the provided category. + * @param category a string representing a category of VexFlow objects. + * @param checkAncestors defaults to `true`, so we walk up the prototype chain to look for a matching `CATEGORY`. + * If `false`, we do not check the superclass or other ancestors. + * @returns true if `obj` has a static `CATEGORY` property that matches `category`. + */ +function isCategory(obj, category, checkAncestors = true) { + // obj is undefined, a number, a primitive string, or null. + if (typeof obj !== 'object' || obj === null) { + return false; + } + // `obj.constructor` is a reference to the constructor function that created the `obj` instance. + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor + let constructorFcn = obj.constructor; + // Check if the object's static .CATEGORY matches the provided category. + if (checkAncestors) { + // Walk up the prototype chain to look for a matching obj.constructor.CATEGORY. + while (obj !== null) { + constructorFcn = obj.constructor; + if ('CATEGORY' in constructorFcn && constructorFcn.CATEGORY === category) { + return true; + } + obj = Object.getPrototypeOf(obj); + } + return false; + } + else { + // Do not walk up the prototype chain. Just check this particular object's static .CATEGORY string. + return 'CATEGORY' in constructorFcn && constructorFcn.CATEGORY === category; + } +} +const isAccidental = (obj) => isCategory(obj, Category.Accidental); +const isAnnotation = (obj) => isCategory(obj, Category.Annotation); +const isBarline = (obj) => isCategory(obj, Category.Barline); +const isDot = (obj) => isCategory(obj, Category.Dot); +const isGraceNote = (obj) => isCategory(obj, Category.GraceNote); +const isGraceNoteGroup = (obj) => isCategory(obj, Category.GraceNoteGroup); +const isNote = (obj) => isCategory(obj, Category.Note); +const isRenderContext = (obj) => isCategory(obj, Category.RenderContext); +const isStaveNote = (obj) => isCategory(obj, Category.StaveNote); +const isStemmableNote = (obj) => isCategory(obj, Category.StemmableNote); +const isTabNote = (obj) => isCategory(obj, Category.TabNote); +// 'const' enums are erased by the TypeScript compiler. The string values are inlined at all the use sites. +// See: https://www.typescriptlang.org/docs/handbook/enums.html#const-enums +var Category; +(function (Category) { + Category["Accidental"] = "Accidental"; + Category["Annotation"] = "Annotation"; + Category["Articulation"] = "Articulation"; + Category["Barline"] = "Barline"; + Category["BarNote"] = "BarNote"; + Category["Beam"] = "Beam"; + Category["Bend"] = "Bend"; + Category["ChordSymbol"] = "ChordSymbol"; + Category["Clef"] = "Clef"; + Category["ClefNote"] = "ClefNote"; + Category["Crescendo"] = "Crescendo"; + Category["Curve"] = "Curve"; + Category["Dot"] = "Dot"; + Category["Element"] = "Element"; + Category["Fraction"] = "Fraction"; + Category["FretHandFinger"] = "FretHandFinger"; + Category["GhostNote"] = "GhostNote"; + Category["Glyph"] = "Glyph"; + Category["GlyphNote"] = "GlyphNote"; + Category["GraceNote"] = "GraceNote"; + Category["GraceNoteGroup"] = "GraceNoteGroup"; + Category["GraceTabNote"] = "GraceTabNote"; + Category["KeySignature"] = "KeySignature"; + Category["KeySigNote"] = "KeySigNote"; + Category["Modifier"] = "Modifier"; + Category["MultiMeasureRest"] = "MultiMeasureRest"; + Category["Note"] = "Note"; + Category["NoteHead"] = "NoteHead"; + Category["NoteSubGroup"] = "NoteSubGroup"; + Category["Ornament"] = "Ornament"; + Category["Parenthesis"] = "Parenthesis"; + Category["PedalMarking"] = "PedalMarking"; + Category["RenderContext"] = "RenderContext"; + Category["RepeatNote"] = "RepeatNote"; + Category["Repetition"] = "Repetition"; + Category["Stave"] = "Stave"; + Category["StaveConnector"] = "StaveConnector"; + Category["StaveHairpin"] = "StaveHairpin"; + Category["StaveLine"] = "StaveLine"; + Category["StaveModifier"] = "StaveModifier"; + Category["StaveNote"] = "StaveNote"; + Category["StaveSection"] = "StaveSection"; + Category["StaveTempo"] = "StaveTempo"; + Category["StaveText"] = "StaveText"; + Category["StaveTie"] = "StaveTie"; + Category["Stem"] = "Stem"; + Category["StemmableNote"] = "StemmableNote"; + Category["StringNumber"] = "StringNumber"; + Category["Stroke"] = "Stroke"; + Category["System"] = "System"; + Category["TabNote"] = "TabNote"; + Category["TabSlide"] = "TabSlide"; + Category["TabStave"] = "TabStave"; + Category["TabTie"] = "TabTie"; + Category["TextBracket"] = "TextBracket"; + Category["TextDynamics"] = "TextDynamics"; + Category["TextNote"] = "TextNote"; + Category["Tickable"] = "Tickable"; + Category["TimeSignature"] = "TimeSignature"; + Category["TimeSigNote"] = "TimeSigNote"; + Category["Tremolo"] = "Tremolo"; + Category["Tuplet"] = "Tuplet"; + Category["Vibrato"] = "Vibrato"; + Category["VibratoBracket"] = "VibratoBracket"; + Category["Voice"] = "Voice"; + Category["Volta"] = "Volta"; +})(Category || (Category = {})); + + +/***/ }), + +/***/ "./src/util.ts": +/*!*********************!*\ + !*** ./src/util.ts ***! + \*********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "RuntimeError": () => (/* binding */ RuntimeError), +/* harmony export */ "globalObject": () => (/* binding */ globalObject), +/* harmony export */ "defined": () => (/* binding */ defined), +/* harmony export */ "log": () => (/* binding */ log), +/* harmony export */ "warn": () => (/* binding */ warn), +/* harmony export */ "midLine": () => (/* binding */ midLine), +/* harmony export */ "prefix": () => (/* binding */ prefix), +/* harmony export */ "normalizeAngle": () => (/* binding */ normalizeAngle) +/* harmony export */ }); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// Note: Keep this module free of imports to reduce the chance of circular dependencies. +/** `RuntimeError` will be thrown by VexFlow classes in case of error. */ +class RuntimeError extends Error { + constructor(code, message = '') { + super('[RuntimeError] ' + code + ': ' + message); + this.code = code; + } +} +/** VexFlow can be used outside of the browser (e.g., Node) where `window` may not be defined. */ +// eslint-disable-next-line +function globalObject() { + if (typeof globalThis !== 'undefined') { + return globalThis; + } + if (typeof self !== 'undefined') { + return self; + } + if (typeof window !== 'undefined') { + return window; + } + if (typeof __webpack_require__.g !== 'undefined') { + return __webpack_require__.g; + } + return Function('return this')(); +} +/** + * Check that `x` is of type `T` and not `undefined`. + * If `x` is `undefined`, throw a RuntimeError with the optionally provided error code and message. + */ +function defined(x, code = 'undefined', message = '') { + if (x === undefined) { + throw new RuntimeError(code, message); + } + return x; +} +/** Default log function sends all arguments to console. */ +// eslint-disable-next-line +function log(block, ...args) { + if (!args) + return; + const line = Array.prototype.slice.call(args).join(' '); + globalObject().console.log(block + ': ' + line); +} +/** Dump warning to console. */ +// eslint-disable-next-line +function warn(...args) { + const line = args.join(' '); + const err = new Error(); + globalObject().console.log('Warning: ', line, err.stack); +} +/** Round number to nearest fractional value (`.5`, `.25`, etc.) */ +function roundN(x, n) { + return x % n >= n / 2 ? parseInt(`${x / n}`, 10) * n + n : parseInt(`${x / n}`, 10) * n; +} +/** Locate the mid point between stave lines. Returns a fractional line if a space. */ +function midLine(a, b) { + let mid_line = b + (a - b) / 2; + if (mid_line % 2 > 0) { + mid_line = roundN(mid_line * 10, 5) / 10; + } + return mid_line; +} +/** + * Used by various classes (e.g., SVGContext) to provide a + * unique prefix to element names (or other keys in shared namespaces). + */ +function prefix(text) { + return `vf-${text}`; +} +/** + * Convert an arbitrary angle in radians to the equivalent one in the range [0, pi). + */ +function normalizeAngle(a) { + a = a % (2 * Math.PI); + if (a < 0) { + a += 2 * Math.PI; + } + return a; +} + + +/***/ }), + +/***/ "./src/vex.ts": +/*!********************!*\ + !*** ./src/vex.ts ***! + \********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Vex": () => (/* binding */ Vex) +/* harmony export */ }); +/* harmony import */ var _flow__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./flow */ "./src/flow.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// Utility methods used by the rest of the VexFlow codebase. + + +class Vex { + // Users of `Vex.forEach(a, fn)` should use `Array.prototype.forEach()` instead. + // static forEach(arr: T[], callbackFn: (value: T, index: number, array: T[]) => void) { + // arr.forEach(callbackFn); + // } + /** + * Take `arr` and return a new list consisting of the sorted, unique, + * contents of arr. Does not modify `arr`. + */ + // eslint-disable-next-line + static sortAndUnique(arr, cmp, eq) { + if (arr.length > 1) { + const newArr = []; + let last; + arr.sort(cmp); + for (let i = 0; i < arr.length; ++i) { + if (i === 0 || !eq(arr[i], last)) { + newArr.push(arr[i]); + } + last = arr[i]; + } + return newArr; + } + else { + return arr; + } + } + /** Check if array `arr` contains `obj`. */ + // eslint-disable-next-line + static contains(arr, obj) { + let i = arr.length; + while (i--) { + if (arr[i] === obj) { + return true; + } + } + return false; + } + // Get the 2D Canvas context from DOM element `canvas_sel`. + static getCanvasContext(canvasSelector) { + if (!canvasSelector) { + throw new _util__WEBPACK_IMPORTED_MODULE_1__.RuntimeError('BadArgument', 'Invalid canvas selector: ' + canvasSelector); + } + const canvas = document.getElementById(canvasSelector); + if (!(canvas && canvas.getContext)) { + throw new _util__WEBPACK_IMPORTED_MODULE_1__.RuntimeError('UnsupportedBrowserError', 'This browser does not support HTML5 Canvas'); + } + return canvas.getContext('2d'); + } + /** Benchmark. Run function `f` once and report time elapsed shifted by `s` milliseconds. */ + // eslint-disable-next-line + static benchmark(s, f) { + const start_time = new Date().getTime(); + f(); + const elapsed = new Date().getTime() - start_time; + (0,_util__WEBPACK_IMPORTED_MODULE_1__.log)(s, elapsed + 'ms'); + } + // Get stack trace. + static stackTrace() { + const err = new Error(); + return err.stack; + } +} +Vex.Flow = _flow__WEBPACK_IMPORTED_MODULE_0__.Flow; + + +/***/ }), + +/***/ "./src/vibrato.ts": +/*!************************!*\ + !*** ./src/vibrato.ts ***! + \************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Vibrato": () => (/* binding */ Vibrato) +/* harmony export */ }); +/* harmony import */ var _bend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bend */ "./src/bend.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + +/** `Vibrato` implements diverse vibratos. */ +class Vibrato extends _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier { + constructor() { + super(); + this.position = _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.RIGHT; + this.render_options = { + harsh: false, + vibrato_width: 20, + wave_height: 6, + wave_width: 4, + wave_girth: 2, + }; + this.setVibratoWidth(this.render_options.vibrato_width); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.Vibrato; + } + /** Arrange vibratos inside a `ModifierContext`. */ + static format(vibratos, state, context) { + if (!vibratos || vibratos.length === 0) + return false; + // Vibratos are always on top. + let text_line = state.top_text_line; + let width = 0; + let shift = state.right_shift - 7; + // If there's a bend, drop the text line + const bends = context.getMembers(_bend__WEBPACK_IMPORTED_MODULE_0__.Bend.CATEGORY); + if (bends && bends.length > 0) { + const bendHeight = bends.map((bb) => bb.getTextHeight()).reduce((a, b) => (a > b ? a : b)) / _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.STAVE_LINE_DISTANCE; + text_line = text_line - (bendHeight + 1); + } + else { + state.top_text_line += 1; + } + // Format Vibratos + for (let i = 0; i < vibratos.length; ++i) { + const vibrato = vibratos[i]; + vibrato.setXShift(shift); + vibrato.setTextLine(text_line); + width += vibrato.getWidth(); + shift += width; + } + state.right_shift += width; + return true; + } + /** Set harsh vibrato. */ + setHarsh(harsh) { + this.render_options.harsh = harsh; + return this; + } + /** Set vibrato width in pixels. */ + setVibratoWidth(width) { + this.render_options.vibrato_width = width; + this.setWidth(width); + return this; + } + /** Draw the vibrato on the rendering context. */ + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const start = note.getModifierStartXY(_modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.RIGHT, this.index); + const vx = start.x + this.x_shift; + const vy = note.getYForTopText(this.text_line) + 2; + Vibrato.renderVibrato(ctx, vx, vy, this.render_options); + } + /** + * Static rendering method that can be called from + * other classes (e.g. VibratoBracket). + */ + static renderVibrato(ctx, x, y, opts) { + const { harsh, vibrato_width, wave_width, wave_girth, wave_height } = opts; + const num_waves = vibrato_width / wave_width; + ctx.beginPath(); + let i; + if (harsh) { + ctx.moveTo(x, y + wave_girth + 1); + for (i = 0; i < num_waves / 2; ++i) { + ctx.lineTo(x + wave_width, y - wave_height / 2); + x += wave_width; + ctx.lineTo(x + wave_width, y + wave_height / 2); + x += wave_width; + } + for (i = 0; i < num_waves / 2; ++i) { + ctx.lineTo(x - wave_width, y - wave_height / 2 + wave_girth + 1); + x -= wave_width; + ctx.lineTo(x - wave_width, y + wave_height / 2 + wave_girth + 1); + x -= wave_width; + } + ctx.fill(); + } + else { + ctx.moveTo(x, y + wave_girth); + for (i = 0; i < num_waves / 2; ++i) { + ctx.quadraticCurveTo(x + wave_width / 2, y - wave_height / 2, x + wave_width, y); + x += wave_width; + ctx.quadraticCurveTo(x + wave_width / 2, y + wave_height / 2, x + wave_width, y); + x += wave_width; + } + for (i = 0; i < num_waves / 2; ++i) { + ctx.quadraticCurveTo(x - wave_width / 2, y + wave_height / 2 + wave_girth, x - wave_width, y + wave_girth); + x -= wave_width; + ctx.quadraticCurveTo(x - wave_width / 2, y - wave_height / 2 + wave_girth, x - wave_width, y + wave_girth); + x -= wave_width; + } + ctx.fill(); + } + } +} + + +/***/ }), + +/***/ "./src/vibratobracket.ts": +/*!*******************************!*\ + !*** ./src/vibratobracket.ts ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "VibratoBracket": () => (/* binding */ VibratoBracket) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +/* harmony import */ var _vibrato__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./vibrato */ "./src/vibrato.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Balazs Forian-Szabo +// MIT License + + + + +// eslint-disable-next-line +function L(...args) { + if (VibratoBracket.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_2__.log)('Vex.Flow.VibratoBracket', args); +} +/** `VibratoBracket` renders vibrato effect between two notes. */ +class VibratoBracket extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + /** + * Either the stop or start note must be set, or both of them. + * An undefined value for the start or stop note indicates that the vibrato + * is drawn from the beginning or until the end of the stave accordingly. + */ + constructor(bracket_data) { + super(); + if (bracket_data.start) + this.start = bracket_data.start; + if (bracket_data.stop) + this.stop = bracket_data.stop; + this.line = 1; + this.render_options = { + harsh: false, + wave_height: 6, + wave_width: 4, + wave_girth: 2, + vibrato_width: 0, + }; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_1__.Category.VibratoBracket; + } + /** Set line position of the vibrato bracket. */ + setLine(line) { + this.line = line; + return this; + } + /** Set harsh vibrato bracket. */ + setHarsh(harsh) { + this.render_options.harsh = harsh; + return this; + } + /** Draw the vibrato bracket on the rendering context. */ + draw() { + const ctx = this.checkContext(); + this.setRendered(); + const y = (this.start && this.start.checkStave().getYForTopText(this.line)) || + (this.stop && this.stop.checkStave().getYForTopText(this.line)) || + 0; + // If start note is not set then vibrato will be drawn + // from the beginning of the stave + const start_x = (this.start && this.start.getAbsoluteX()) || (this.stop && this.stop.checkStave().getTieStartX()) || 0; + // If stop note is not set then vibrato will be drawn + // until the end of the stave + const stop_x = (this.stop && this.stop.getAbsoluteX() - this.stop.getWidth() - 5) || + (this.start && this.start.checkStave().getTieEndX() - 10) || + 0; + this.render_options.vibrato_width = stop_x - start_x; + L('Rendering VibratoBracket: start_x:', start_x, 'stop_x:', stop_x, 'y:', y); + _vibrato__WEBPACK_IMPORTED_MODULE_3__.Vibrato.renderVibrato(ctx, start_x, y, this.render_options); + } +} +/** To enable logging for this class. Set `Vex.Flow.VibratoBracket.DEBUG` to `true`. */ +VibratoBracket.DEBUG = false; + + +/***/ }), + +/***/ "./src/voice.ts": +/*!**********************!*\ + !*** ./src/voice.ts ***! + \**********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "VoiceMode": () => (/* binding */ VoiceMode), +/* harmony export */ "Voice": () => (/* binding */ Voice) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fraction */ "./src/fraction.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + +var VoiceMode; +(function (VoiceMode) { + VoiceMode[VoiceMode["STRICT"] = 1] = "STRICT"; + VoiceMode[VoiceMode["SOFT"] = 2] = "SOFT"; + VoiceMode[VoiceMode["FULL"] = 3] = "FULL"; +})(VoiceMode || (VoiceMode = {})); +/** + * `Voice` is mainly a container object to group `Tickables` for formatting. + */ +class Voice extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + constructor(time) { + super(); + this.resolutionMultiplier = 1; + this.mode = VoiceMode.STRICT; + this.preFormatted = false; + this.ticksUsed = new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(0, 1); + this.largestTickWidth = 0; + this.tickables = []; + this.options = { + softmaxFactor: _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.SOFTMAX_FACTOR, + }; + // Convert the `time` string into a VoiceTime object if necessary. + let voiceTime; + if (typeof time === 'string') { + // Time signature shortcut: "4/4", "3/8", etc. + const match = time.match(/(\d+)\/(\d+)/); + if (match) { + voiceTime = { + num_beats: parseInt(match[1]), + beat_value: parseInt(match[2]), + }; + } + } + else { + voiceTime = time; + } + // Default time signature is 4/4. + this.time = Object.assign({ num_beats: 4, beat_value: 4, resolution: _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.RESOLUTION }, voiceTime); + // Recalculate total ticks. + this.totalTicks = new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(this.time.num_beats * (this.time.resolution / this.time.beat_value), 1); + this.smallestTickCount = this.totalTicks.clone(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.Voice; + } + /** + * Modes allow the addition of ticks in three different ways: + * - STRICT: This is the default. Ticks must fill the voice. + * - SOFT: Ticks can be added without restrictions. + * - FULL: Ticks do not need to fill the voice, but can't exceed the maximum tick length. + */ + static get Mode() { + return VoiceMode; + } + /** Get the total ticks in the voice. */ + getTotalTicks() { + return this.totalTicks; + } + /** Get the total ticks used in the voice by all the tickables. */ + getTicksUsed() { + return this.ticksUsed; + } + /** Get the largest width of all the tickables. */ + getLargestTickWidth() { + return this.largestTickWidth; + } + /** Get the tick count for the shortest tickable */ + getSmallestTickCount() { + return this.smallestTickCount; + } + /** Get the tickables in the voice. */ + getTickables() { + return this.tickables; + } + /** Get the voice mode. */ + getMode() { + return this.mode; + } + /** + * Set the voice mode. + * @param mode value from `VoiceMode` + */ + setMode(mode) { + this.mode = mode; + return this; + } + /** Get the resolution multiplier for the voice. */ + getResolutionMultiplier() { + return this.resolutionMultiplier; + } + /** Get the actual tick resolution for the voice. */ + getActualResolution() { + return this.resolutionMultiplier * this.time.resolution; + } + /** Set the voice's stave. */ + setStave(stave) { + this.stave = stave; + // Reset the bounding box so we can reformat. + this.boundingBox = undefined; + return this; + } + getStave() { + return this.stave; + } + /** Get the bounding box for the voice. */ + getBoundingBox() { + if (!this.boundingBox) { + const stave = this.checkStave(); + let boundingBox = undefined; + for (let i = 0; i < this.tickables.length; ++i) { + const tickable = this.tickables[i]; + tickable.setStave(stave); + const bb = tickable.getBoundingBox(); + if (bb) { + boundingBox = boundingBox ? boundingBox.mergeWith(bb) : bb; + } + } + this.boundingBox = boundingBox; + } + return this.boundingBox; + } + /** Set the voice mode to strict or soft. */ + setStrict(strict) { + this.mode = strict ? VoiceMode.STRICT : VoiceMode.SOFT; + return this; + } + /** Determine if the voice is complete according to the voice mode. */ + isComplete() { + if (this.mode === VoiceMode.STRICT || this.mode === VoiceMode.FULL) { + return this.ticksUsed.equals(this.totalTicks); + } + else { + return true; + } + } + /** + * We use softmax to layout the tickables proportional to the exponent of + * their duration. The softmax factor is used to determine the 'linearness' of + * the layout. + * + * The softmax of all the tickables in this voice should sum to 1. + */ + setSoftmaxFactor(factor) { + this.options.softmaxFactor = factor; + return this; + } + /** + * Calculate the sum of the exponents of all the ticks in this voice to use + * as the denominator of softmax. + */ + reCalculateExpTicksUsed() { + const totalTicks = this.ticksUsed.value(); + const exp = (tickable) => Math.pow(this.options.softmaxFactor, tickable.getTicks().value() / totalTicks); + this.expTicksUsed = this.tickables.map(exp).reduce((a, b) => a + b, 0); + return this.expTicksUsed; + } + /** Get the softmax-scaled value of a tick duration. 'tickValue' is a number. */ + softmax(tickValue) { + if (!this.expTicksUsed) { + this.expTicksUsed = this.reCalculateExpTicksUsed(); + } + const totalTicks = this.ticksUsed.value(); + const exp = (v) => Math.pow(this.options.softmaxFactor, v / totalTicks); + const sm = exp(tickValue) / this.expTicksUsed; + return sm; + } + /** Add a tickable to the voice. */ + addTickable(tickable) { + if (!tickable.shouldIgnoreTicks()) { + const ticks = tickable.getTicks(); + // Update the total ticks for this line. + this.ticksUsed.add(ticks); + this.expTicksUsed = 0; // reset + if ((this.mode === VoiceMode.STRICT || this.mode === VoiceMode.FULL) && + this.ticksUsed.greaterThan(this.totalTicks)) { + this.ticksUsed.subtract(ticks); + throw new _util__WEBPACK_IMPORTED_MODULE_4__.RuntimeError('BadArgument', 'Too many ticks.'); + } + // Track the smallest tickable for formatting. + if (ticks.lessThan(this.smallestTickCount)) { + this.smallestTickCount = ticks.clone(); + } + this.resolutionMultiplier = this.ticksUsed.denominator; + // Expand total ticks using denominator from ticks used. + this.totalTicks.add(0, this.ticksUsed.denominator); + } + // Add the tickable to the line. + this.tickables.push(tickable); + tickable.setVoice(this); + return this; + } + /** Add an array of tickables to the voice. */ + addTickables(tickables) { + for (let i = 0; i < tickables.length; ++i) { + this.addTickable(tickables[i]); + } + return this; + } + /** Preformat the voice by applying the voice's stave to each note. */ + preFormat() { + if (this.preFormatted) + return this; + const stave = this.checkStave(); + this.tickables.forEach((tickable) => { + if (!tickable.getStave()) { + tickable.setStave(stave); + } + }); + this.preFormatted = true; + return this; + } + checkStave() { + return (0,_util__WEBPACK_IMPORTED_MODULE_4__.defined)(this.stave, 'NoStave', 'No stave attached to instance.'); + } + /** + * Render the voice onto the canvas `context` and an optional `stave`. + * If `stave` is omitted, it is expected that the notes have staves + * already set. + * + * This method also calculates the voice's boundingBox while drawing + * the notes. Note the similarities with this.getBoundingBox(). + */ + draw(context = this.checkContext(), stave) { + stave = stave !== null && stave !== void 0 ? stave : this.stave; + this.setRendered(); + let boundingBox = undefined; + for (let i = 0; i < this.tickables.length; ++i) { + const tickable = this.tickables[i]; + // Set the stave if provided. + if (stave) { + tickable.setStave(stave); + } + (0,_util__WEBPACK_IMPORTED_MODULE_4__.defined)(tickable.getStave(), 'MissingStave', 'The voice cannot draw tickables without staves.'); + const bb = tickable.getBoundingBox(); + if (bb) { + boundingBox = boundingBox ? boundingBox.mergeWith(bb) : bb; + } + tickable.setContext(context); + tickable.drawWithStyle(); + } + this.boundingBox = boundingBox; + } +} + + +/***/ }), + +/***/ "./src/web.ts": +/*!********************!*\ + !*** ./src/web.ts ***! + \********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "isHTMLCanvas": () => (/* binding */ isHTMLCanvas), +/* harmony export */ "isHTMLDiv": () => (/* binding */ isHTMLDiv) +/* harmony export */ }); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Ron B. Yeh +// MIT License +// +// Utilities for working with Web APIs. +// See: https://developer.mozilla.org/en-US/docs/Web/API + +// eslint-disable-next-line +function isHTMLCanvas(element) { + if (!element) + return false; + const global = (0,_util__WEBPACK_IMPORTED_MODULE_0__.globalObject)(); + return ( + // It's either an instance of the HTMLCanvasElement class, + (typeof global.HTMLCanvasElement === 'function' && element instanceof global.HTMLCanvasElement) || + // OR it's pretending to be a element. Good enough! + // Do not rely on .tagName, because node-canvas doesn't provide a tagName. + (typeof element.getContext === 'function' && typeof element.toDataURL === 'function')); +} +// eslint-disable-next-line +function isHTMLDiv(element) { + if (!element) + return false; + const global = (0,_util__WEBPACK_IMPORTED_MODULE_0__.globalObject)(); + return ( + // It's either an instance of the HTMLDivElement class. + (typeof global.HTMLDivElement === 'function' && element instanceof global.HTMLDivElement) || + // OR it's pretending to be a
. See: svgcontext.ts. + (typeof element.appendChild === 'function' && typeof element.style === 'object')); +} + + +/***/ }), + +/***/ "./tests/accidental_tests.ts": +/*!***********************************!*\ + !*** ./tests/accidental_tests.ts ***! + \***********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "AccidentalTests": () => (/* binding */ AccidentalTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_accidental__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/accidental */ "./src/accidental.ts"); +/* harmony import */ var _src_beam__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/beam */ "./src/beam.ts"); +/* harmony import */ var _src_dot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/dot */ "./src/dot.ts"); +/* harmony import */ var _src_flow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/flow */ "./src/flow.ts"); +/* harmony import */ var _src_formatter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/formatter */ "./src/formatter.ts"); +/* harmony import */ var _src_modifiercontext__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../src/modifiercontext */ "./src/modifiercontext.ts"); +/* harmony import */ var _src_note__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../src/note */ "./src/note.ts"); +/* harmony import */ var _src_stave__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../src/stave */ "./src/stave.ts"); +/* harmony import */ var _src_stavenote__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../src/stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _src_stem__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../src/stem */ "./src/stem.ts"); +/* harmony import */ var _src_tickcontext__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../src/tickcontext */ "./src/tickcontext.ts"); +/* harmony import */ var _src_timesignote__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../src/timesignote */ "./src/timesignote.ts"); +/* harmony import */ var _src_typeguard__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../src/typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _src_voice__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../src/voice */ "./src/voice.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Accidental Tests + + + + + + + + + + + + + + + +const AccidentalTests = { + Start() { + QUnit.module('Accidental'); + test('Automatic Accidentals - Simple Tests', autoAccidentalWorking); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Accidental Padding', formatAccidentalSpaces); + run('Basic', basic); + run('Stem Down', basicStemDown); + run('Cautionary Accidental', cautionary); + run('Accidental Arrangement Special Cases', specialCases); + run('Multi Voice', multiVoice); + run('Microtonal', microtonal); + run('Microtonal (Iranian)', microtonal_iranian); + run('Sagittal', sagittal); + run('Automatic Accidentals', automaticAccidentals0); + run('Automatic Accidentals - C major scale in Ab', automaticAccidentals1); + run('Automatic Accidentals - No Accidentals Necessary', automaticAccidentals2); + run('Automatic Accidentals - No Accidentals Necessary (EasyScore)', automaticAccidentals3); + run('Automatic Accidentals - Multi Voice Inline', automaticAccidentalsMultiVoiceInline); + run('Automatic Accidentals - Multi Voice Offset', automaticAccidentalsMultiVoiceOffset); + run('Automatic Accidentals - Key C, Single Octave', automaticAccidentalsCornerCases1); + run('Automatic Accidentals - Key C, Two Octaves', automaticAccidentalsCornerCases2); + run('Automatic Accidentals - Key C#, Single Octave', automaticAccidentalsCornerCases3); + run('Automatic Accidentals - Key C#, Two Octaves', automaticAccidentalsCornerCases4); + run('Factory API', factoryAPI); + }, +}; +// Check that at least one of the note's modifiers is an Accidental. +function hasAccidental(note) { + return note.getModifiers().some((modifier) => (0,_src_typeguard__WEBPACK_IMPORTED_MODULE_13__.isAccidental)(modifier)); +} +// Return a convenience function for building accidentals from a string. +function makeNewAccid(factory) { + return (type) => factory.Accidental({ type }); +} +/** + * + */ +function autoAccidentalWorking() { + const createStaveNote = (noteStruct) => new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote(noteStruct); + let notes = [ + { keys: ['bb/4'], duration: '4' }, + { keys: ['bb/4'], duration: '4' }, + { keys: ['g#/4'], duration: '4' }, + { keys: ['g/4'], duration: '4' }, + { keys: ['b/4'], duration: '4' }, + { keys: ['b/4'], duration: '4' }, + { keys: ['a#/4'], duration: '4' }, + { keys: ['g#/4'], duration: '4' }, + ].map(createStaveNote); + let voice = new _src_voice__WEBPACK_IMPORTED_MODULE_14__.Voice().setMode(_src_voice__WEBPACK_IMPORTED_MODULE_14__.Voice.Mode.SOFT).addTickables(notes); + // F Major (Bb) + _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental.applyAccidentals([voice], 'F'); + equal(hasAccidental(notes[0]), false, 'No flat because of key signature'); + equal(hasAccidental(notes[1]), false, 'No flat because of key signature'); + equal(hasAccidental(notes[2]), true, 'Added a sharp'); + equal(hasAccidental(notes[3]), true, 'Back to natural'); + equal(hasAccidental(notes[4]), true, 'Back to natural'); + equal(hasAccidental(notes[5]), false, 'Natural remembered'); + equal(hasAccidental(notes[6]), true, 'Added sharp'); + equal(hasAccidental(notes[7]), true, 'Added sharp'); + notes = [ + { keys: ['e#/4'], duration: '4' }, + { keys: ['cb/4'], duration: '4' }, + { keys: ['fb/4'], duration: '4' }, + { keys: ['b#/4'], duration: '4' }, + { keys: ['b#/4'], duration: '4' }, + { keys: ['cb/5'], duration: '4' }, + { keys: ['fb/5'], duration: '4' }, + { keys: ['e#/4'], duration: '4' }, + ].map(createStaveNote); + voice = new _src_voice__WEBPACK_IMPORTED_MODULE_14__.Voice().setMode(_src_voice__WEBPACK_IMPORTED_MODULE_14__.Voice.Mode.SOFT).addTickables(notes); + // A Major (F#,G#,C#) + _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental.applyAccidentals([voice], 'A'); + equal(hasAccidental(notes[0]), true, 'Added sharp'); + equal(hasAccidental(notes[1]), true, 'Added flat'); + equal(hasAccidental(notes[2]), true, 'Added flat'); + equal(hasAccidental(notes[3]), true, 'Added sharp'); + equal(hasAccidental(notes[4]), false, 'Sharp remembered'); + equal(hasAccidental(notes[5]), true, 'Added flat(different octave)'); + equal(hasAccidental(notes[6]), true, 'Added flat(different octave)'); + equal(hasAccidental(notes[7]), false, 'sharp remembered'); + notes = [ + { keys: ['c/4'], duration: '4' }, + { keys: ['cb/4'], duration: '4' }, + { keys: ['cb/4'], duration: '4' }, + { keys: ['c#/4'], duration: '4' }, + { keys: ['c#/4'], duration: '4' }, + { keys: ['cbb/4'], duration: '4' }, + { keys: ['cbb/4'], duration: '4' }, + { keys: ['c##/4'], duration: '4' }, + { keys: ['c##/4'], duration: '4' }, + { keys: ['c/4'], duration: '4' }, + { keys: ['c/4'], duration: '4' }, + ].map(createStaveNote); + voice = new _src_voice__WEBPACK_IMPORTED_MODULE_14__.Voice().setMode(_src_voice__WEBPACK_IMPORTED_MODULE_14__.Voice.Mode.SOFT).addTickables(notes); + // C Major (no sharps/flats) + _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental.applyAccidentals([voice], 'C'); + equal(hasAccidental(notes[0]), false, 'No accidental'); + equal(hasAccidental(notes[1]), true, 'Added flat'); + equal(hasAccidental(notes[2]), false, 'Flat remembered'); + equal(hasAccidental(notes[3]), true, 'Sharp added'); + equal(hasAccidental(notes[4]), false, 'Sharp remembered'); + equal(hasAccidental(notes[5]), true, 'Added doubled flat'); + equal(hasAccidental(notes[6]), false, 'Double flat remembered'); + equal(hasAccidental(notes[7]), true, 'Added double sharp'); + equal(hasAccidental(notes[8]), false, 'Double sharp rememberd'); + equal(hasAccidental(notes[9]), true, 'Added natural'); + equal(hasAccidental(notes[10]), false, 'Natural remembered'); +} +/** + * + */ +function formatAccidentalSpaces(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 750, 280); + const context = f.getContext(); + const softmaxFactor = 100; + // Create the notes + const notes = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ + keys: ['e##/5'], + duration: '8d', + }).addModifier(new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('##'), 0), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ + keys: ['b/4'], + duration: '16', + }).addModifier(new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('b'), 0), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ + keys: ['f/3'], + duration: '8', + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ + keys: ['a/3'], + duration: '16', + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ + keys: ['e/4', 'g/4'], + duration: '16', + }) + .addModifier(new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('bb'), 0) + .addModifier(new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('bb'), 1), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ + keys: ['d/4'], + duration: '16', + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ + keys: ['e/4', 'g/4'], + duration: '16', + }) + .addModifier(new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('#'), 0) + .addModifier(new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('#'), 1), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ + keys: ['g/4'], + duration: '32', + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ + keys: ['a/4'], + duration: '32', + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ + keys: ['g/4'], + duration: '16', + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ + keys: ['d/4'], + duration: 'q', + }), + ]; + _src_dot__WEBPACK_IMPORTED_MODULE_3__.Dot.buildAndAttach([notes[0]], { all: true }); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_2__.Beam.generateBeams(notes); + const voice = new _src_voice__WEBPACK_IMPORTED_MODULE_14__.Voice({ + num_beats: 4, + beat_value: 4, + }); + voice.addTickables(notes); + const formatter = new _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter({ softmaxFactor }).joinVoices([voice]); + const width = formatter.preCalculateMinTotalWidth([voice]); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_8__.Stave(10, 40, width + 20); + stave.setContext(context).draw(); + formatter.format([voice], width); + voice.draw(context, stave); + beams.forEach((b) => b.setContext(context).draw()); + notes.forEach((note) => _src_note__WEBPACK_IMPORTED_MODULE_7__.Note.plotMetrics(context, note, 30)); + _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.plotLegendForNoteWidth(context, 300, 150); + ok(true); +} +function basic(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 240); + const accid = makeNewAccid(f); + f.Stave({ x: 10, y: 10, width: 550 }); + const notes = [ + f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: '1' }) + .addModifier(accid('b'), 0) + .addModifier(accid('#'), 1), + // Notes keys out of alphabetic order + f + .StaveNote({ keys: ['e/4', 'f/4', 'a/4', 'c/5', 'e/5', 'g/5', 'd/4'], duration: '2' }) + .addModifier(accid('##'), 6) + .addModifier(accid('n'), 0) + .addModifier(accid('bb'), 1) + .addModifier(accid('b'), 2) + .addModifier(accid('#'), 3) + .addModifier(accid('n'), 4) + .addModifier(accid('bb'), 5), + // Notes keys out of alphabetic order + f + .StaveNote({ keys: ['g/5', 'f/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5'], duration: '16' }) + .addModifier(accid('n'), 1) + .addModifier(accid('#'), 2) + .addModifier(accid('#'), 3) + .addModifier(accid('b'), 4) + .addModifier(accid('bb'), 5) + .addModifier(accid('##'), 6) + .addModifier(accid('#'), 0), + f + .StaveNote({ keys: ['a/3', 'c/4', 'e/4', 'b/4', 'd/5', 'g/5'], duration: '1' }) + .addModifier(accid('#'), 0) + .addModifier(accid('##').setAsCautionary(), 1) + .addModifier(accid('#').setAsCautionary(), 2) + .addModifier(accid('b'), 3) + .addModifier(accid('bb').setAsCautionary(), 4) + .addModifier(accid('b').setAsCautionary(), 5), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter.SimpleFormat(notes, 10, { paddingBetween: 45 }); + notes.forEach((note, index) => { + _src_note__WEBPACK_IMPORTED_MODULE_7__.Note.plotMetrics(f.getContext(), note, 140); + ok(note.getModifiersByType('Accidental').length > 0, 'Note ' + index + ' has accidentals'); + note.getModifiersByType('Accidental').forEach((accid, index) => { + ok(accid.getWidth() > 0, 'Accidental ' + index + ' has set width'); + }); + }); + f.draw(); + _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.plotLegendForNoteWidth(f.getContext(), 480, 140); + ok(true, 'Full Accidental'); +} +function cautionary(options) { + const staveCount = 12; + const scale = 0.85; + const staveWidth = 840; + let i = 0; + let j = 0; + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, staveWidth + 10, 175 * staveCount + 10); + f.getContext().scale(scale, scale); + const accids = Object.keys(_src_flow__WEBPACK_IMPORTED_MODULE_4__.Flow.accidentalMap).filter((accid) => accid !== '{' && accid !== '}'); + const mod = Math.round(accids.length / staveCount); + for (i = 0; i < staveCount; ++i) { + const stave = f.Stave({ x: 0, y: 10 + 200 * i, width: staveWidth / scale }); + const score = f.EasyScore(); + const rowMap = []; + for (j = 0; j < mod && j + i * staveCount < accids.length; ++j) { + rowMap.push(accids[j + i * staveCount]); + } + const notes = rowMap.map((accidType) => f + .StaveNote({ keys: ['a/4'], duration: '4', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_10__.Stem.UP }) + .addModifier(f.Accidental({ type: accidType }), 0)); + const voice = score.voice(notes, { time: rowMap.length + '/4' }); + voice.getTickables().forEach((tickable) => { + tickable + .getModifiers() + .filter((modifier) => modifier.getAttribute('type') === _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental.CATEGORY) + .forEach((accid) => accid.setAsCautionary()); + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + } + ok(true, 'Must successfully render cautionary accidentals'); +} +function specialCases(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 240); + const accid = makeNewAccid(f); + f.Stave({ x: 10, y: 10, width: 550 }); + const notes = [ + f + .StaveNote({ keys: ['f/4', 'd/5'], duration: '1' }) + .addModifier(accid('#'), 0) + .addModifier(accid('b'), 1), + f + .StaveNote({ keys: ['c/4', 'g/4'], duration: '2' }) + .addModifier(accid('##'), 0) + .addModifier(accid('##'), 1), + f + .StaveNote({ keys: ['b/3', 'd/4', 'f/4'], duration: '16' }) + .addModifier(accid('#'), 0) + .addModifier(accid('#'), 1) + .addModifier(accid('##'), 2), + f + .StaveNote({ keys: ['g/4', 'a/4', 'c/5', 'e/5'], duration: '16' }) + .addModifier(accid('b'), 0) + .addModifier(accid('b'), 1) + .addModifier(accid('n'), 3), + f + .StaveNote({ keys: ['e/4', 'g/4', 'b/4', 'c/5'], duration: '4' }) + .addModifier(accid('b').setAsCautionary(), 0) + .addModifier(accid('b').setAsCautionary(), 1) + .addModifier(accid('bb'), 2) + .addModifier(accid('b'), 3), + f + .StaveNote({ keys: ['b/3', 'e/4', 'a/4', 'd/5', 'g/5'], duration: '8' }) + .addModifier(accid('bb'), 0) + .addModifier(accid('b').setAsCautionary(), 1) + .addModifier(accid('n').setAsCautionary(), 2) + .addModifier(accid('#'), 3) + .addModifier(accid('n').setAsCautionary(), 4), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter.SimpleFormat(notes, 0, { paddingBetween: 20 }); + notes.forEach((note, index) => { + _src_note__WEBPACK_IMPORTED_MODULE_7__.Note.plotMetrics(f.getContext(), note, 140); + ok(note.getModifiersByType('Accidental').length > 0, 'Note ' + index + ' has accidentals'); + note.getModifiersByType('Accidental').forEach((accid, index) => { + ok(accid.getWidth() > 0, 'Accidental ' + index + ' has set width'); + }); + }); + f.draw(); + _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.plotLegendForNoteWidth(f.getContext(), 480, 140); + ok(true, 'Full Accidental'); +} +function basicStemDown(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 240); + const accid = makeNewAccid(f); + f.Stave({ x: 10, y: 10, width: 550 }); + const notes = [ + f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: 'w', stem_direction: -1 }) + .addModifier(accid('b'), 0) + .addModifier(accid('#'), 1), + f + .StaveNote({ keys: ['d/4', 'e/4', 'f/4', 'a/4', 'c/5', 'e/5', 'g/5'], duration: '2', stem_direction: -1 }) + .addModifier(accid('##'), 0) + .addModifier(accid('n'), 1) + .addModifier(accid('bb'), 2) + .addModifier(accid('b'), 3) + .addModifier(accid('#'), 4) + .addModifier(accid('n'), 5) + .addModifier(accid('bb'), 6), + f + .StaveNote({ keys: ['f/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5', 'g/5'], duration: '16', stem_direction: -1 }) + .addModifier(accid('n'), 0) + .addModifier(accid('#'), 1) + .addModifier(accid('#'), 2) + .addModifier(accid('b'), 3) + .addModifier(accid('bb'), 4) + .addModifier(accid('##'), 5) + .addModifier(accid('#'), 6), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter.SimpleFormat(notes, 0, { paddingBetween: 30 }); + notes.forEach((note, noteIndex) => { + _src_note__WEBPACK_IMPORTED_MODULE_7__.Note.plotMetrics(f.getContext(), note, 140); + ok(note.getModifiersByType('Accidental').length > 0, 'Note ' + noteIndex + ' has accidentals'); + note.getModifiersByType('Accidental').forEach((accid, accidIndex) => { + ok(accid.getWidth() > 0, 'Accidental ' + accidIndex + ' has set width'); + }); + }); + f.draw(); + _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.plotLegendForNoteWidth(f.getContext(), 480, 140); + ok(true, 'Full Accidental'); +} +function multiVoice(options) { + // Helper function for visualizing + function showNotes(note1, note2, stave, ctx, x) { + const modifierContext = new _src_modifiercontext__WEBPACK_IMPORTED_MODULE_6__.ModifierContext(); + note1.addToModifierContext(modifierContext); + note2.addToModifierContext(modifierContext); + new _src_tickcontext__WEBPACK_IMPORTED_MODULE_11__.TickContext().addTickable(note1).addTickable(note2).preFormat().setX(x); + note1.setContext(ctx).draw(); + note2.setContext(ctx).draw(); + _src_note__WEBPACK_IMPORTED_MODULE_7__.Note.plotMetrics(ctx, note1, 180); + _src_note__WEBPACK_IMPORTED_MODULE_7__.Note.plotMetrics(ctx, note2, 15); + } + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 460, 250); + const accid = makeNewAccid(f); + const stave = f.Stave({ x: 10, y: 45, width: 420 }); + const ctx = f.getContext(); + stave.draw(); + let note1 = f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: '2', stem_direction: -1 }) + .addModifier(accid('b'), 0) + .addModifier(accid('n'), 1) + .addModifier(accid('#'), 2) + .setStave(stave); + let note2 = f + .StaveNote({ keys: ['d/5', 'a/5', 'b/5'], duration: '2', stem_direction: 1 }) + .addModifier(accid('b'), 0) + .addModifier(accid('bb'), 1) + .addModifier(accid('##'), 2) + .setStave(stave); + showNotes(note1, note2, stave, ctx, 60); + note1 = f + .StaveNote({ keys: ['c/4', 'e/4', 'c/5'], duration: '2', stem_direction: -1 }) + .addModifier(accid('b'), 0) + .addModifier(accid('n'), 1) + .addModifier(accid('#'), 2) + .setStave(stave); + note2 = f + .StaveNote({ keys: ['d/5', 'a/5', 'b/5'], duration: '4', stem_direction: 1 }) + .addModifier(accid('b'), 0) + .setStave(stave); + showNotes(note1, note2, stave, ctx, 150); + note1 = f + .StaveNote({ keys: ['d/4', 'c/5', 'd/5'], duration: '2', stem_direction: -1 }) + .addModifier(accid('b'), 0) + .addModifier(accid('n'), 1) + .addModifier(accid('#'), 2) + .setStave(stave); + note2 = f + .StaveNote({ keys: ['d/5', 'a/5', 'b/5'], duration: '4', stem_direction: 1 }) + .addModifier(accid('b'), 0) + .setStave(stave); + showNotes(note1, note2, stave, ctx, 250); + _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.plotLegendForNoteWidth(ctx, 350, 150); + ok(true, 'Full Accidental'); +} +function microtonal(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 240); + const accid = makeNewAccid(f); + const ctx = f.getContext(); + f.Stave({ x: 10, y: 10, width: 650 }); + const notes = [ + f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: '1' }) + .addModifier(accid('db'), 0) + .addModifier(accid('d'), 1), + f + .StaveNote({ keys: ['d/4', 'e/4', 'f/4', 'a/4', 'c/5', 'e/5', 'g/5'], duration: '2' }) + .addModifier(accid('bbs'), 0) + .addModifier(accid('++'), 1) + .addModifier(accid('+'), 2) + .addModifier(accid('d'), 3) + .addModifier(accid('db'), 4) + .addModifier(accid('+'), 5) + .addModifier(accid('##'), 6), + f + .StaveNote({ keys: ['f/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5', 'g/5'], duration: '16' }) + .addModifier(accid('++'), 0) + .addModifier(accid('bbs'), 1) + .addModifier(accid('+'), 2) + .addModifier(accid('b'), 3) + .addModifier(accid('db'), 4) + .addModifier(accid('##'), 5) + .addModifier(accid('#'), 6), + f + .StaveNote({ keys: ['a/3', 'c/4', 'e/4', 'b/4', 'd/5', 'g/5'], duration: '1' }) + .addModifier(accid('#'), 0) + .addModifier(accid('db').setAsCautionary(), 1) + .addModifier(accid('bbs').setAsCautionary(), 2) + .addModifier(accid('b'), 3) + .addModifier(accid('++').setAsCautionary(), 4) + .addModifier(accid('d').setAsCautionary(), 5), + f + .StaveNote({ keys: ['f/4', 'g/4', 'a/4', 'b/4', 'd/5', 'g/5'], duration: '16' }) + .addModifier(accid('++-'), 0) + .addModifier(accid('+-'), 1) + .addModifier(accid('bs'), 2) + .addModifier(accid('bss'), 3) + .addModifier(accid('afhf'), 4) + .addModifier(accid('ashs'), 5), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter.SimpleFormat(notes, 0, { paddingBetween: 35 }); + notes.forEach((note, index) => { + _src_note__WEBPACK_IMPORTED_MODULE_7__.Note.plotMetrics(f.getContext(), note, 140); + ok(note.getModifiersByType('Accidental').length > 0, 'Note ' + index + ' has accidentals'); + note.getModifiersByType('Accidental').forEach((accid, index) => { + ok(accid.getWidth() > 0, 'Accidental ' + index + ' has set width'); + }); + }); + f.draw(); + _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.plotLegendForNoteWidth(ctx, 580, 140); + ok(true, 'Microtonal Accidental'); +} +function microtonal_iranian(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 240); + const accid = makeNewAccid(f); + const ctx = f.getContext(); + f.Stave({ x: 10, y: 10, width: 650 }); + const notes = [ + f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: '1' }) + .addModifier(accid('k'), 0) + .addModifier(accid('o'), 1), + f + .StaveNote({ keys: ['d/4', 'e/4', 'f/4', 'a/4', 'c/5', 'e/5', 'g/5'], duration: '2' }) + .addModifier(accid('b'), 0) + .addModifier(accid('k'), 1) + .addModifier(accid('n'), 2) + .addModifier(accid('o'), 3) + .addModifier(accid('#'), 4) + .addModifier(accid('bb'), 5) + .addModifier(accid('##'), 6), + f + .StaveNote({ keys: ['f/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5', 'g/5'], duration: '16' }) + .addModifier(accid('o'), 0) + .addModifier(accid('k'), 1) + .addModifier(accid('n'), 2) + .addModifier(accid('b'), 3) + .addModifier(accid('bb'), 4) + .addModifier(accid('##'), 5) + .addModifier(accid('#'), 6), + f + .StaveNote({ keys: ['a/3', 'c/4', 'e/4', 'b/4', 'd/5', 'g/5'], duration: '1' }) + .addModifier(accid('#'), 0) + .addModifier(accid('o').setAsCautionary(), 1) + .addModifier(accid('n').setAsCautionary(), 2) + .addModifier(accid('b'), 3) + .addModifier(accid('k').setAsCautionary(), 4), + f + .StaveNote({ keys: ['f/4', 'g/4', 'a/4', 'b/4'], duration: '16' }) + .addModifier(accid('k'), 0) + .addModifier(accid('k'), 1) + .addModifier(accid('k'), 2) + .addModifier(accid('k'), 3), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter.SimpleFormat(notes, 0, { paddingBetween: 35 }); + notes.forEach((note, index) => { + _src_note__WEBPACK_IMPORTED_MODULE_7__.Note.plotMetrics(f.getContext(), note, 140); + ok(note.getModifiersByType('Accidental').length > 0, 'Note ' + index + ' has accidentals'); + note.getModifiersByType('Accidental').forEach((accid, index) => { + ok(accid.getWidth() > 0, 'Accidental ' + index + ' has set width'); + }); + }); + f.draw(); + _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.plotLegendForNoteWidth(ctx, 580, 140); + ok(true, 'Microtonal Accidental (Iranian)'); +} +function sagittal(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 240); + const accid = makeNewAccid(f); + const ctx = f.getContext(); + f.Stave({ x: 10, y: 10, width: 650 }); + const notes = [ + f + .StaveNote({ keys: ['d/4', 'f/4', 'b/4', 'b/4'], duration: '4' }) + .addModifier(accid('accSagittal11MediumDiesisUp'), 1) + .addModifier(accid('accSagittal5CommaDown'), 2) + .addModifier(accid('b'), 3) + .addModifier(accid('accSagittal7CommaDown'), 3), + f + .StaveNote({ keys: ['d/4', 'f/4', 'a/4', 'b/4'], duration: '4' }) + .addModifier(accid('accSagittal35LargeDiesisDown'), 2), + f.StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'c/5'], duration: '8' }).addModifier(accid('accSagittal5CommaDown'), 1), + f + .StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'b/4'], duration: '8' }) + .addModifier(accid('b'), 1) + .addModifier(accid('accSagittal7CommaDown'), 1) + .addModifier(accid('accSagittal11LargeDiesisDown'), 3), + f + .StaveNote({ keys: ['d/4', 'f/4', 'b/4', 'b/4'], duration: '4' }) + .addModifier(accid('accSagittal11MediumDiesisUp'), 1) + .addModifier(accid('accSagittal5CommaDown'), 2) + .addModifier(accid('accSagittalFlat7CDown'), 3), + f + .StaveNote({ keys: ['d/4', 'f/4', 'a/4', 'b/4'], duration: '4' }) + .addModifier(accid('accSagittal35LargeDiesisDown'), 2), + f.StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'c/5'], duration: '8' }).addModifier(accid('accSagittal5CommaDown'), 1), + f + .StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'b/4'], duration: '8' }) + .addModifier(accid('accSagittalFlat7CDown'), 1) + .addModifier(accid('accSagittal11LargeDiesisDown'), 3), + ]; + f.StaveTie({ + from: notes[0], + to: notes[1], + first_indices: [0, 1], + last_indices: [0, 1], + }); + f.StaveTie({ + from: notes[0], + to: notes[1], + first_indices: [3], + last_indices: [3], + options: { + direction: _src_stem__WEBPACK_IMPORTED_MODULE_10__.Stem.DOWN, + }, + }); + f.StaveTie({ + from: notes[4], + to: notes[5], + first_indices: [0, 1], + last_indices: [0, 1], + }); + f.StaveTie({ + from: notes[4], + to: notes[5], + first_indices: [3], + last_indices: [3], + options: { + direction: _src_stem__WEBPACK_IMPORTED_MODULE_10__.Stem.DOWN, + }, + }); + f.Beam({ notes: notes.slice(2, 4) }); + f.Beam({ notes: notes.slice(6, 8) }); + _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter.SimpleFormat(notes); + notes.forEach((note, index) => { + _src_note__WEBPACK_IMPORTED_MODULE_7__.Note.plotMetrics(f.getContext(), note, 140); + ok(note.getModifiersByType('Accidental').length > 0, 'Note ' + index + ' has accidentals'); + note.getModifiersByType('Accidental').forEach((accid, index) => { + ok(accid.getWidth() > 0, 'Accidental ' + index + ' has set width'); + }); + }); + f.draw(); + _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.plotLegendForNoteWidth(ctx, 580, 140); + ok(true, 'Sagittal'); +} +function automaticAccidentals0(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 200); + const stave = f.Stave(); + const notes = [ + { keys: ['c/4', 'c/5'], duration: '4' }, + { keys: ['c#/4', 'c#/5'], duration: '4' }, + { keys: ['c#/4', 'c#/5'], duration: '4' }, + { keys: ['c##/4', 'c##/5'], duration: '4' }, + { keys: ['c##/4', 'c##/5'], duration: '4' }, + { keys: ['c/4', 'c/5'], duration: '4' }, + { keys: ['cn/4', 'cn/5'], duration: '4' }, + { keys: ['cbb/4', 'cbb/5'], duration: '4' }, + { keys: ['cbb/4', 'cbb/5'], duration: '4' }, + { keys: ['cb/4', 'cb/5'], duration: '4' }, + { keys: ['cb/4', 'cb/5'], duration: '4' }, + { keys: ['c/4', 'c/5'], duration: '4' }, + ].map(f.StaveNote.bind(f)); + const gracenotes = [{ keys: ['d#/4'], duration: '16', slash: true }].map(f.GraceNote.bind(f)); + notes[0].addModifier(f.GraceNoteGroup({ notes: gracenotes }).beamNotes(), 0); + const voice = f + .Voice() + .setMode(_src_voice__WEBPACK_IMPORTED_MODULE_14__.Voice.Mode.SOFT) + .addTickable(new _src_timesignote__WEBPACK_IMPORTED_MODULE_12__.TimeSigNote('12/4').setStave(stave)) + .addTickables(notes); + _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental.applyAccidentals([voice], 'C'); + new _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +function automaticAccidentals1(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 150); + const stave = f.Stave().addKeySignature('Ab'); + const notes = [ + { keys: ['c/4'], duration: '4' }, + { keys: ['d/4'], duration: '4' }, + { keys: ['e/4'], duration: '4' }, + { keys: ['f/4'], duration: '4' }, + { keys: ['g/4'], duration: '4' }, + { keys: ['a/4'], duration: '4' }, + { keys: ['b/4'], duration: '4' }, + { keys: ['c/5'], duration: '4' }, + ].map(f.StaveNote.bind(f)); + const voice = f.Voice().setMode(_src_voice__WEBPACK_IMPORTED_MODULE_14__.Voice.Mode.SOFT).addTickables(notes); + _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental.applyAccidentals([voice], 'Ab'); + new _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +function automaticAccidentals2(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 150); + const stave = f.Stave().addKeySignature('A'); + const notes = [ + { keys: ['a/4'], duration: '4' }, + { keys: ['b/4'], duration: '4' }, + { keys: ['c#/5'], duration: '4' }, + { keys: ['d/5'], duration: '4' }, + { keys: ['e/5'], duration: '4' }, + { keys: ['f#/5'], duration: '4' }, + { keys: ['g#/5'], duration: '4' }, + { keys: ['a/5'], duration: '4' }, + ].map(f.StaveNote.bind(f)); + const voice = f.Voice().setMode(_src_voice__WEBPACK_IMPORTED_MODULE_14__.Voice.Mode.SOFT).addTickables(notes); + _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental.applyAccidentals([voice], 'A'); + new _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +function automaticAccidentals3(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 150); + const stave = f.Stave().addKeySignature('A'); + const score = f.EasyScore(); + score.set({ time: '8/4' }); + const notes = score.notes('A4/q, B4/q, C#5/q, D5/q, E5/q,F#5/q, G#5/q, A5/q', { stem: 'UP' }); + const voice = f.Voice().setMode(_src_voice__WEBPACK_IMPORTED_MODULE_14__.Voice.Mode.SOFT).addTickables(notes); + _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental.applyAccidentals([voice], 'A'); + new _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +function automaticAccidentalsMultiVoiceInline(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 150); + const stave = f.Stave().addKeySignature('Ab'); + const notes0 = [ + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['d/4'], duration: '4', stem_direction: -1 }, + { keys: ['e/4'], duration: '4', stem_direction: -1 }, + { keys: ['f/4'], duration: '4', stem_direction: -1 }, + { keys: ['g/4'], duration: '4', stem_direction: -1 }, + { keys: ['a/4'], duration: '4', stem_direction: -1 }, + { keys: ['b/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + ].map(f.StaveNote.bind(f)); + const notes1 = [ + { keys: ['c/5'], duration: '4' }, + { keys: ['d/5'], duration: '4' }, + { keys: ['e/5'], duration: '4' }, + { keys: ['f/5'], duration: '4' }, + { keys: ['g/5'], duration: '4' }, + { keys: ['a/5'], duration: '4' }, + { keys: ['b/5'], duration: '4' }, + { keys: ['c/6'], duration: '4' }, + ].map(f.StaveNote.bind(f)); + const voice0 = f.Voice().setMode(_src_voice__WEBPACK_IMPORTED_MODULE_14__.Voice.Mode.SOFT).addTickables(notes0); + const voice1 = f.Voice().setMode(_src_voice__WEBPACK_IMPORTED_MODULE_14__.Voice.Mode.SOFT).addTickables(notes1); + // Ab Major + _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental.applyAccidentals([voice0, voice1], 'Ab'); + equal(hasAccidental(notes0[0]), false); + equal(hasAccidental(notes0[1]), true); + equal(hasAccidental(notes0[2]), true); + equal(hasAccidental(notes0[3]), false); + equal(hasAccidental(notes0[4]), false); + equal(hasAccidental(notes0[5]), true); + equal(hasAccidental(notes0[6]), true); + equal(hasAccidental(notes0[7]), false); + equal(hasAccidental(notes1[0]), false); + equal(hasAccidental(notes1[1]), true); + equal(hasAccidental(notes1[2]), true); + equal(hasAccidental(notes1[3]), false); + equal(hasAccidental(notes1[4]), false); + equal(hasAccidental(notes1[5]), true); + equal(hasAccidental(notes1[6]), true); + equal(hasAccidental(notes1[7]), false); + new _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter().joinVoices([voice0, voice1]).formatToStave([voice0, voice1], stave); + f.draw(); + ok(true); +} +function automaticAccidentalsMultiVoiceOffset(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 150); + const stave = f.Stave().addKeySignature('Cb'); + const notes0 = [ + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['d/4'], duration: '4', stem_direction: -1 }, + { keys: ['e/4'], duration: '4', stem_direction: -1 }, + { keys: ['f/4'], duration: '4', stem_direction: -1 }, + { keys: ['g/4'], duration: '4', stem_direction: -1 }, + { keys: ['a/4'], duration: '4', stem_direction: -1 }, + { keys: ['b/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + ].map(f.StaveNote.bind(f)); + const notes1 = [ + { keys: ['c/5'], duration: '8' }, + { keys: ['c/5'], duration: '4' }, + { keys: ['d/5'], duration: '4' }, + { keys: ['e/5'], duration: '4' }, + { keys: ['f/5'], duration: '4' }, + { keys: ['g/5'], duration: '4' }, + { keys: ['a/5'], duration: '4' }, + { keys: ['b/5'], duration: '4' }, + { keys: ['c/6'], duration: '4' }, + ].map(f.StaveNote.bind(f)); + const voice0 = f.Voice().setMode(_src_voice__WEBPACK_IMPORTED_MODULE_14__.Voice.Mode.SOFT).addTickables(notes0); + const voice1 = f.Voice().setMode(_src_voice__WEBPACK_IMPORTED_MODULE_14__.Voice.Mode.SOFT).addTickables(notes1); + // Cb Major (All flats) + _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental.applyAccidentals([voice0, voice1], 'Cb'); + equal(hasAccidental(notes0[0]), true); + equal(hasAccidental(notes0[1]), true); + equal(hasAccidental(notes0[2]), true); + equal(hasAccidental(notes0[3]), true); + equal(hasAccidental(notes0[4]), true); + equal(hasAccidental(notes0[5]), true); + equal(hasAccidental(notes0[6]), true); + equal(hasAccidental(notes0[7]), false, 'Natural Remembered'); + equal(hasAccidental(notes1[0]), true); + equal(hasAccidental(notes1[1]), false); + equal(hasAccidental(notes1[2]), true); + equal(hasAccidental(notes1[3]), true); + equal(hasAccidental(notes1[4]), true); + equal(hasAccidental(notes1[5]), true); + equal(hasAccidental(notes1[6]), true); + equal(hasAccidental(notes1[7]), true); + new _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter().joinVoices([voice0, voice1]).formatToStave([voice0, voice1], stave); + f.draw(); + ok(true); +} +function automaticAccidentalsCornerCases1(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 150); + const stave = f.Stave().addKeySignature('C'); + const notes0 = [ + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c#/4'], duration: '4', stem_direction: -1 }, + { keys: ['c#/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['cb/4'], duration: '4', stem_direction: -1 }, + { keys: ['cb/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + ].map(f.StaveNote.bind(f)); + const voice0 = f.Voice().setMode(_src_voice__WEBPACK_IMPORTED_MODULE_14__.Voice.Mode.SOFT).addTickables(notes0); + _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental.applyAccidentals([voice0], 'C'); + equal(hasAccidental(notes0[0]), false); + equal(hasAccidental(notes0[1]), true); + equal(hasAccidental(notes0[2]), false); + equal(hasAccidental(notes0[3]), true); + equal(hasAccidental(notes0[4]), false); + equal(hasAccidental(notes0[5]), true); + equal(hasAccidental(notes0[6]), false); + equal(hasAccidental(notes0[7]), true); + equal(hasAccidental(notes0[8]), false); + new _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter().joinVoices([voice0]).formatToStave([voice0], stave); + f.draw(); + ok(true); +} +function automaticAccidentalsCornerCases2(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 150); + const stave = f.Stave().addKeySignature('C'); + const notes0 = [ + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + { keys: ['c#/4'], duration: '4', stem_direction: -1 }, + { keys: ['c#/5'], duration: '4', stem_direction: -1 }, + { keys: ['c#/4'], duration: '4', stem_direction: -1 }, + { keys: ['c#/5'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + { keys: ['cb/4'], duration: '4', stem_direction: -1 }, + { keys: ['cb/5'], duration: '4', stem_direction: -1 }, + { keys: ['cb/4'], duration: '4', stem_direction: -1 }, + { keys: ['cb/5'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + ].map(f.StaveNote.bind(f)); + const voice0 = f.Voice().setMode(_src_voice__WEBPACK_IMPORTED_MODULE_14__.Voice.Mode.SOFT).addTickables(notes0); + _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental.applyAccidentals([voice0], 'C'); + equal(hasAccidental(notes0[0]), false); + equal(hasAccidental(notes0[2]), true); + equal(hasAccidental(notes0[4]), false); + equal(hasAccidental(notes0[6]), true); + equal(hasAccidental(notes0[8]), false); + equal(hasAccidental(notes0[10]), true); + equal(hasAccidental(notes0[12]), false); + equal(hasAccidental(notes0[14]), true); + equal(hasAccidental(notes0[16]), false); + equal(hasAccidental(notes0[1]), false); + equal(hasAccidental(notes0[3]), true); + equal(hasAccidental(notes0[5]), false); + equal(hasAccidental(notes0[7]), true); + equal(hasAccidental(notes0[9]), false); + equal(hasAccidental(notes0[11]), true); + equal(hasAccidental(notes0[13]), false); + equal(hasAccidental(notes0[15]), true); + equal(hasAccidental(notes0[17]), false); + new _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter().joinVoices([voice0]).formatToStave([voice0], stave); + f.draw(); + ok(true); +} +function automaticAccidentalsCornerCases3(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 150); + const stave = f.Stave().addKeySignature('C#'); + const notes0 = [ + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c#/4'], duration: '4', stem_direction: -1 }, + { keys: ['c#/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['cb/4'], duration: '4', stem_direction: -1 }, + { keys: ['cb/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + ].map(f.StaveNote.bind(f)); + const voice0 = f.Voice().setMode(_src_voice__WEBPACK_IMPORTED_MODULE_14__.Voice.Mode.SOFT).addTickables(notes0); + _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental.applyAccidentals([voice0], 'C#'); + equal(hasAccidental(notes0[0]), true); + equal(hasAccidental(notes0[1]), true); + equal(hasAccidental(notes0[2]), false); + equal(hasAccidental(notes0[3]), true); + equal(hasAccidental(notes0[4]), false); + equal(hasAccidental(notes0[5]), true); + equal(hasAccidental(notes0[6]), false); + equal(hasAccidental(notes0[7]), true); + equal(hasAccidental(notes0[8]), false); + new _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter().joinVoices([voice0]).formatToStave([voice0], stave); + f.draw(); + ok(true); +} +function automaticAccidentalsCornerCases4(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 150); + const stave = f.Stave().addKeySignature('C#'); + const notes0 = [ + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + { keys: ['c#/4'], duration: '4', stem_direction: -1 }, + { keys: ['c#/5'], duration: '4', stem_direction: -1 }, + { keys: ['c#/4'], duration: '4', stem_direction: -1 }, + { keys: ['c#/5'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + { keys: ['cb/4'], duration: '4', stem_direction: -1 }, + { keys: ['cb/5'], duration: '4', stem_direction: -1 }, + { keys: ['cb/4'], duration: '4', stem_direction: -1 }, + { keys: ['cb/5'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + ].map(f.StaveNote.bind(f)); + const voice0 = f.Voice().setMode(_src_voice__WEBPACK_IMPORTED_MODULE_14__.Voice.Mode.SOFT).addTickables(notes0); + _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental.applyAccidentals([voice0], 'C#'); + equal(hasAccidental(notes0[0]), true); + equal(hasAccidental(notes0[2]), true); + equal(hasAccidental(notes0[4]), false); + equal(hasAccidental(notes0[6]), true); + equal(hasAccidental(notes0[8]), false); + equal(hasAccidental(notes0[10]), true); + equal(hasAccidental(notes0[12]), false); + equal(hasAccidental(notes0[14]), true); + equal(hasAccidental(notes0[16]), false); + equal(hasAccidental(notes0[1]), true); + equal(hasAccidental(notes0[3]), true); + equal(hasAccidental(notes0[5]), false); + equal(hasAccidental(notes0[7]), true); + equal(hasAccidental(notes0[9]), false); + equal(hasAccidental(notes0[11]), true); + equal(hasAccidental(notes0[13]), false); + equal(hasAccidental(notes0[15]), true); + equal(hasAccidental(notes0[17]), false); + new _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter().joinVoices([voice0]).formatToStave([voice0], stave); + f.draw(); + ok(true); +} +function factoryAPI(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 240); + f.Stave({ x: 10, y: 10, width: 550 }); + const accid = makeNewAccid(f); + const notes = [ + f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: 'w' }) + .addModifier(accid('b'), 0) + .addModifier(accid('#'), 1), + f + .StaveNote({ keys: ['d/4', 'e/4', 'f/4', 'a/4', 'c/5', 'e/5', 'g/5'], duration: 'h' }) + .addModifier(accid('##'), 0) + .addModifier(accid('n'), 1) + .addModifier(accid('bb'), 2) + .addModifier(accid('b'), 3) + .addModifier(accid('#'), 4) + .addModifier(accid('n'), 5) + .addModifier(accid('bb'), 6), + f + .StaveNote({ keys: ['f/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5', 'g/5'], duration: '16' }) + .addModifier(accid('n'), 0) + .addModifier(accid('#'), 1) + .addModifier(accid('#'), 2) + .addModifier(accid('b'), 3) + .addModifier(accid('bb'), 4) + .addModifier(accid('##'), 5) + .addModifier(accid('#'), 6), + f + .StaveNote({ keys: ['a/3', 'c/4', 'e/4', 'b/4', 'd/5', 'g/5'], duration: 'w' }) + .addModifier(accid('#'), 0) + .addModifier(accid('##').setAsCautionary(), 1) + .addModifier(accid('#').setAsCautionary(), 2) + .addModifier(accid('b'), 3) + .addModifier(accid('bb').setAsCautionary(), 4) + .addModifier(accid('b').setAsCautionary(), 5), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter.SimpleFormat(notes); + notes.forEach((n, i) => { + ok(n.getModifiersByType('Accidental').length > 0, 'Note ' + i + ' has accidentals'); + n.getModifiersByType('Accidental').forEach((accid, i) => { + ok(accid.getWidth() > 0, 'Accidental ' + i + ' has set width'); + }); + }); + f.draw(); + ok(true, 'Factory API'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(AccidentalTests); + + + +/***/ }), + +/***/ "./tests/annotation_tests.ts": +/*!***********************************!*\ + !*** ./tests/annotation_tests.ts ***! + \***********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "AnnotationTests": () => (/* binding */ AnnotationTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_annotation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/annotation */ "./src/annotation.ts"); +/* harmony import */ var _src_articulation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/articulation */ "./src/articulation.ts"); +/* harmony import */ var _src_beam__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/beam */ "./src/beam.ts"); +/* harmony import */ var _src_bend__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/bend */ "./src/bend.ts"); +/* harmony import */ var _src_flow__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/flow */ "./src/flow.ts"); +/* harmony import */ var _src_font__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../src/font */ "./src/font.ts"); +/* harmony import */ var _src_formatter__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../src/formatter */ "./src/formatter.ts"); +/* harmony import */ var _src_modifier__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../src/modifier */ "./src/modifier.ts"); +/* harmony import */ var _src_registry__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../src/registry */ "./src/registry.ts"); +/* harmony import */ var _src_stave__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../src/stave */ "./src/stave.ts"); +/* harmony import */ var _src_stavenote__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../src/stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _src_stem__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../src/stem */ "./src/stem.ts"); +/* harmony import */ var _src_tabnote__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../src/tabnote */ "./src/tabnote.ts"); +/* harmony import */ var _src_tabstave__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../src/tabstave */ "./src/tabstave.ts"); +/* harmony import */ var _src_vibrato__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../src/vibrato */ "./src/vibrato.ts"); +/* harmony import */ var _src_voice__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../src/voice */ "./src/voice.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Annotation Tests +// TODO: Formatter.FormatAndDraw(ctx, stave, notes, ???number???); +// Did a previous version of the API accept a number as the fourth argument? +// We removed the fourth argument from all of our test cases. + + + + + + + + + + + + + + + + + +const AnnotationTests = { + Start() { + QUnit.module('Annotation'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Placement', placement); + run('Lyrics', lyrics); + run('Simple Annotation', simple); + run('Styled Annotation', styling); + run('Standard Notation Annotation', standard); + run('Harmonics', harmonic); + run('Fingerpicking', picking); + run('Bottom Annotation', bottom); + run('Bottom Annotations with Beams', bottomWithBeam); + run('Test Justification Annotation Stem Up', justificationStemUp); + run('Test Justification Annotation Stem Down', justificationStemDown); + run('TabNote Annotations', tabNotes); + }, +}; +const FONT_SIZE = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.Font.size; +// Helper functions to create TabNote and StaveNote objects. +const tabNote = (noteStruct) => new _src_tabnote__WEBPACK_IMPORTED_MODULE_13__.TabNote(noteStruct); +const staveNote = (noteStruct) => new _src_stavenote__WEBPACK_IMPORTED_MODULE_11__.StaveNote(noteStruct); +/** + * Show lyrics using Annotation objects. + */ +function lyrics(options) { + let fontSize = FONT_SIZE; + let x = 10; + let width = 170; + let ratio = 1; + const registry = new _src_registry__WEBPACK_IMPORTED_MODULE_9__.Registry(); + _src_registry__WEBPACK_IMPORTED_MODULE_9__.Registry.enableDefaultRegistry(registry); + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 750, 260); + // Add three groups of staves. Each time we increase the fontSize by 2. + for (let i = 0; i < 3; ++i) { + const score = f.EasyScore(); + score.set({ time: '3/4' }); + const system = f.System({ width, x }); + system.addStave({ + voices: [ + score.voice(score.notes('(C4 F4)/2[id="n0"]').concat(score.beam(score.notes('(C4 A4)/8[id="n1"], (C4 A4)/8[id="n2"]')))), + ], + }); + // Add lyrics under the first row. + ['hand,', 'and', 'me', 'pears', 'lead', 'the'].forEach((text, ix) => { + const verse = Math.floor(ix / 3); + const noteGroupID = 'n' + (ix % 3); + const noteGroup = registry.getElementById(noteGroupID); + const lyricsAnnotation = f.Annotation({ text }).setFont('Roboto Slab', fontSize); + lyricsAnnotation.setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_8__.ModifierPosition.BELOW); + noteGroup.addModifier(lyricsAnnotation, verse); + }); + // Second row doesn't have any lyrics. + system.addStave({ + voices: [score.voice(score.notes('(F4 D5)/2').concat(score.beam(score.notes('(F4 F5)/8, (F4 F5)/8'))))], + }); + f.draw(); + ratio = (fontSize + 2) / fontSize; + width = width * ratio; + x = x + width; + fontSize = fontSize + 2; + } + ok(true); +} +function simple(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + ctx.font = '10pt Arial, sans-serif'; + const stave = new _src_tabstave__WEBPACK_IMPORTED_MODULE_14__.TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw(); + const notes = [ + tabNote({ + positions: [ + { str: 2, fret: 10 }, + { str: 4, fret: 9 }, + ], + duration: 'h', + }).addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('T'), 0), + tabNote({ + positions: [{ str: 2, fret: 10 }], + duration: 'h', + }).addModifier(new _src_bend__WEBPACK_IMPORTED_MODULE_4__.Bend('Full').setTap('T'), 0), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_7__.Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, 'Simple Annotation'); +} +function standard(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_10__.Stave(10, 10, 450).addClef('treble').setContext(ctx).draw(); + const annotation = (text) => new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation(text).setFont(_src_font__WEBPACK_IMPORTED_MODULE_6__.Font.SERIF, FONT_SIZE, 'normal', 'italic'); + const notes = [ + staveNote({ keys: ['c/4', 'e/4'], duration: 'h' }).addModifier(annotation('quiet'), 0), + staveNote({ keys: ['c/4', 'e/4', 'c/5'], duration: 'h' }).addModifier(annotation('Allegro'), 2), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_7__.Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, 'Standard Notation Annotation'); +} +function styling(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.5, 1.5); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_10__.Stave(10, 10, 450).addClef('treble').setContext(ctx).draw(); + const annotation = (text, style) => new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation(text).setFont(_src_font__WEBPACK_IMPORTED_MODULE_6__.Font.SERIF, FONT_SIZE, 'normal', 'italic').setStyle(style); + const notes = [ + staveNote({ keys: ['c/4', 'e/4'], duration: 'h' }).addModifier(annotation('quiet', { fillStyle: '#0F0' }), 0), + staveNote({ keys: ['c/4', 'e/4', 'c/5'], duration: 'h' }).addModifier(annotation('Allegro', { fillStyle: '#00F' }), 2), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_7__.Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, 'Standard Notation Annotation'); +} +function harmonic(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + ctx.font = '10pt Arial'; + const stave = new _src_tabstave__WEBPACK_IMPORTED_MODULE_14__.TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw(); + const notes = [ + tabNote({ + positions: [ + { str: 2, fret: 12 }, + { str: 3, fret: 12 }, + ], + duration: 'h', + }).addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('Harm.'), 0), + tabNote({ + positions: [{ str: 2, fret: 9 }], + duration: 'h', + }) + .addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('(8va)').setFont(_src_font__WEBPACK_IMPORTED_MODULE_6__.Font.SERIF, FONT_SIZE, _src_font__WEBPACK_IMPORTED_MODULE_6__.FontWeight.NORMAL, _src_font__WEBPACK_IMPORTED_MODULE_6__.FontStyle.ITALIC), 0) + .addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('A.H.'), 0), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_7__.Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, 'Simple Annotation'); +} +function picking(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.setFillStyle('#221'); + ctx.setStrokeStyle('#221'); + ctx.setFont(_src_font__WEBPACK_IMPORTED_MODULE_6__.Font.SANS_SERIF, FONT_SIZE); + const stave = new _src_tabstave__WEBPACK_IMPORTED_MODULE_14__.TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw(); + const annotation = (text) => new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation(text).setFont(_src_font__WEBPACK_IMPORTED_MODULE_6__.Font.SERIF, FONT_SIZE, _src_font__WEBPACK_IMPORTED_MODULE_6__.FontWeight.NORMAL, _src_font__WEBPACK_IMPORTED_MODULE_6__.FontStyle.ITALIC); + const notes = [ + tabNote({ + positions: [ + { str: 1, fret: 0 }, + { str: 2, fret: 1 }, + { str: 3, fret: 2 }, + { str: 4, fret: 2 }, + { str: 5, fret: 0 }, + ], + duration: 'h', + }).addModifier(new _src_vibrato__WEBPACK_IMPORTED_MODULE_15__.Vibrato().setVibratoWidth(40), 0), + tabNote({ + positions: [{ str: 6, fret: 9 }], + duration: '8', + }).addModifier(annotation('p').setVerticalJustification(_src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.TOP), 0), + tabNote({ + positions: [{ str: 3, fret: 9 }], + duration: '8', + }).addModifier(annotation('i').setVerticalJustification(_src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.TOP), 0), + tabNote({ + positions: [{ str: 2, fret: 9 }], + duration: '8', + }).addModifier(annotation('m').setVerticalJustification(_src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.TOP), 0), + tabNote({ + positions: [{ str: 1, fret: 9 }], + duration: '8', + }).addModifier(annotation('a').setVerticalJustification(_src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.TOP), 0), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_7__.Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, 'Fingerpicking'); +} +function placement(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 750, 300); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_10__.Stave(10, 50, 750).addClef('treble').setContext(ctx).draw(); + const annotation = (text, fontSize, vj) => new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation(text).setFont(_src_font__WEBPACK_IMPORTED_MODULE_6__.Font.SERIF, fontSize).setVerticalJustification(vj); + const notes = [ + staveNote({ keys: ['e/4'], duration: 'q', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_12__.Stem.DOWN }) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_2__.Articulation('a.').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_8__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_2__.Articulation('a-').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_8__.ModifierPosition.ABOVE), 0) + .addModifier(annotation('v1', 10, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.TOP), 0) + .addModifier(annotation('v2', 10, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.TOP), 0), + staveNote({ keys: ['b/4'], duration: 'q', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_12__.Stem.DOWN }) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_2__.Articulation('a.').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_8__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_2__.Articulation('a-').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_8__.ModifierPosition.ABOVE), 0) + .addModifier(annotation('v1', 10, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.TOP), 0) + .addModifier(annotation('v2', 10, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.TOP), 0), + staveNote({ keys: ['c/5'], duration: 'q', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_12__.Stem.DOWN }) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_2__.Articulation('a.').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_8__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_2__.Articulation('a-').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_8__.ModifierPosition.ABOVE), 0) + .addModifier(annotation('v1', 10, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.TOP), 0) + .addModifier(annotation('v2', 10, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.TOP), 0), + staveNote({ keys: ['f/4'], duration: 'q' }) + .addModifier(annotation('v1', 14, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.TOP), 0) + .addModifier(annotation('v2', 14, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.TOP), 0), + staveNote({ keys: ['f/4'], duration: 'q', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_12__.Stem.DOWN }) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_2__.Articulation('am').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_8__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_2__.Articulation('a.').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_8__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_2__.Articulation('a-').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_8__.ModifierPosition.ABOVE), 0) + .addModifier(annotation('v1', 10, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.TOP), 0) + .addModifier(annotation('v2', 20, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.TOP), 0), + staveNote({ keys: ['f/5'], duration: 'q' }) + .addModifier(annotation('v1', 11, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.TOP), 0) + .addModifier(annotation('v2', 11, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.TOP), 0), + staveNote({ keys: ['f/5'], duration: 'q' }) + .addModifier(annotation('v1', 11, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.TOP), 0) + .addModifier(annotation('v2', 20, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.TOP), 0), + staveNote({ keys: ['f/4'], duration: 'q' }) + .addModifier(annotation('v1', 12, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.BOTTOM), 0) + .addModifier(annotation('v2', 12, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.BOTTOM), 0), + staveNote({ keys: ['f/5'], duration: 'q' }) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_2__.Articulation('a.').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_8__.ModifierPosition.BELOW), 0) + .addModifier(annotation('v1', 11, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.BOTTOM), 0) + .addModifier(annotation('v2', 20, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.BOTTOM), 0), + staveNote({ keys: ['f/5'], duration: 'q', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_12__.Stem.DOWN }) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_2__.Articulation('am').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_8__.ModifierPosition.BELOW), 0) + .addModifier(annotation('v1', 10, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.BOTTOM), 0) + .addModifier(annotation('v2', 20, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.BOTTOM), 0), + staveNote({ keys: ['f/4'], duration: 'q', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_12__.Stem.DOWN }) + .addModifier(annotation('v1', 10, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.BOTTOM), 0) + .addModifier(annotation('v2', 20, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.BOTTOM), 0), + staveNote({ keys: ['f/5'], duration: 'w' }) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_2__.Articulation('a@u').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_8__.ModifierPosition.BELOW), 0) + .addModifier(annotation('v1', 11, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.BOTTOM), 0) + .addModifier(annotation('v2', 16, _src_annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.BOTTOM), 0), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_7__.Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, ' Annotation Placement'); +} +function bottom(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_10__.Stave(10, 10, 300).addClef('treble').setContext(ctx).draw(); + const annotation = (text) => new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation(text).setFont(_src_font__WEBPACK_IMPORTED_MODULE_6__.Font.SERIF, FONT_SIZE).setVerticalJustification(_src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation.VerticalJustify.BOTTOM); + const notes = [ + staveNote({ keys: ['f/4'], duration: 'w' }).addModifier(annotation('F'), 0), + staveNote({ keys: ['a/4'], duration: 'w' }).addModifier(annotation('A'), 0), + staveNote({ keys: ['c/5'], duration: 'w' }).addModifier(annotation('C'), 0), + staveNote({ keys: ['e/5'], duration: 'w' }).addModifier(annotation('E'), 0), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_7__.Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, 'Bottom Annotation'); +} +function bottomWithBeam(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_10__.Stave(10, 10, 300).addClef('treble').setContext(ctx).draw(); + const notes = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_11__.StaveNote({ keys: ['a/3'], duration: '8' }).addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('good').setVerticalJustification(_src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation.VerticalJustify.BOTTOM)), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_11__.StaveNote({ keys: ['g/3'], duration: '8' }).addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('even').setVerticalJustification(_src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation.VerticalJustify.BOTTOM)), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_11__.StaveNote({ keys: ['c/4'], duration: '8' }).addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('under').setVerticalJustification(_src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation.VerticalJustify.BOTTOM)), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_11__.StaveNote({ keys: ['d/4'], duration: '8' }).addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('beam').setVerticalJustification(_src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation.VerticalJustify.BOTTOM)), + ]; + const beam = new _src_beam__WEBPACK_IMPORTED_MODULE_3__.Beam(notes.slice(1)); + _src_formatter__WEBPACK_IMPORTED_MODULE_7__.Formatter.FormatAndDraw(ctx, stave, notes); + beam.setContext(ctx).draw(); + ok(true, 'Bottom Annotation with Beams'); +} +function justificationStemUp(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 650, 950); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + const annotation = (text, hJustification, vJustification) => new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation(text) + .setFont(_src_font__WEBPACK_IMPORTED_MODULE_6__.Font.SANS_SERIF, FONT_SIZE) + .setJustification(hJustification) + .setVerticalJustification(vJustification); + for (let v = 1; v <= 4; ++v) { + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_10__.Stave(10, (v - 1) * 150 + 40, 400).addClef('treble').setContext(ctx).draw(); + const notes = [ + staveNote({ keys: ['c/3'], duration: 'q' }).addModifier(annotation('Text', 1, v), 0), + staveNote({ keys: ['c/4'], duration: 'q' }).addModifier(annotation('Text', 2, v), 0), + staveNote({ keys: ['c/5'], duration: 'q' }).addModifier(annotation('Text', 3, v), 0), + staveNote({ keys: ['c/6'], duration: 'q' }).addModifier(annotation('Text', 4, v), 0), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_7__.Formatter.FormatAndDraw(ctx, stave, notes); + } + ok(true, 'Test Justification Annotation'); +} +function justificationStemDown(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 650, 1000); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + const annotation = (text, hJustification, vJustification) => new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation(text) + .setFont(_src_font__WEBPACK_IMPORTED_MODULE_6__.Font.SANS_SERIF, FONT_SIZE) + .setJustification(hJustification) + .setVerticalJustification(vJustification); + for (let v = 1; v <= 4; ++v) { + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_10__.Stave(10, (v - 1) * 150 + 40, 400).addClef('treble').setContext(ctx).draw(); + const notes = [ + staveNote({ keys: ['c/3'], duration: 'q', stem_direction: -1 }).addModifier(annotation('Text', 1, v), 0), + staveNote({ keys: ['c/4'], duration: 'q', stem_direction: -1 }).addModifier(annotation('Text', 2, v), 0), + staveNote({ keys: ['c/5'], duration: 'q', stem_direction: -1 }).addModifier(annotation('Text', 3, v), 0), + staveNote({ keys: ['c/6'], duration: 'q', stem_direction: -1 }).addModifier(annotation('Text', 4, v), 0), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_7__.Formatter.FormatAndDraw(ctx, stave, notes); + } + ok(true, 'Test Justification Annotation'); +} +function tabNotes(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 600, 200); + ctx.font = '10pt Arial, sans-serif'; + const stave = new _src_tabstave__WEBPACK_IMPORTED_MODULE_14__.TabStave(10, 10, 550); + stave.setContext(ctx); + stave.draw(); + const specs = [ + { + positions: [ + { str: 3, fret: 6 }, + { str: 4, fret: 25 }, + ], + duration: '8', + }, + { + positions: [ + { str: 2, fret: 10 }, + { str: 5, fret: 12 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 3, fret: 5 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 3, fret: 5 }, + ], + duration: '8', + }, + ]; + const notes1 = specs.map((noteSpec) => { + const note = new _src_tabnote__WEBPACK_IMPORTED_MODULE_13__.TabNote(noteSpec); + note.render_options.draw_stem = true; + return note; + }); + const notes2 = specs.map((noteSpec) => { + const note = new _src_tabnote__WEBPACK_IMPORTED_MODULE_13__.TabNote(noteSpec); + note.render_options.draw_stem = true; + note.setStemDirection(-1); + return note; + }); + const notes3 = specs.map((noteSpec) => new _src_tabnote__WEBPACK_IMPORTED_MODULE_13__.TabNote(noteSpec)); + notes1[0].addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('Text').setJustification(1).setVerticalJustification(1)); // U + notes1[1].addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('Text').setJustification(2).setVerticalJustification(2)); // D + notes1[2].addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('Text').setJustification(3).setVerticalJustification(3)); // U + notes1[3].addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('Text').setJustification(4).setVerticalJustification(4)); // D + notes2[0].addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('Text').setJustification(3).setVerticalJustification(1)); // U + notes2[1].addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('Text').setJustification(3).setVerticalJustification(2)); // D + notes2[2].addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('Text').setJustification(3).setVerticalJustification(3)); // U + notes2[3].addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('Text').setJustification(3).setVerticalJustification(4)); // D + notes3[0].addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('Text').setVerticalJustification(1)); // U + notes3[1].addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('Text').setVerticalJustification(2)); // D + notes3[2].addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('Text').setVerticalJustification(3)); // U + notes3[3].addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('Text').setVerticalJustification(4)); // D + const voice = new _src_voice__WEBPACK_IMPORTED_MODULE_16__.Voice(_src_flow__WEBPACK_IMPORTED_MODULE_5__.Flow.TIME4_4).setMode(_src_voice__WEBPACK_IMPORTED_MODULE_16__.Voice.Mode.SOFT); + voice.addTickables(notes1); + voice.addTickables(notes2); + voice.addTickables(notes3); + // Alternatively, you could add all the notes in one big array with spread syntax. + // voice.addTickables([...notes1, ...notes2, ...notes3]); + new _src_formatter__WEBPACK_IMPORTED_MODULE_7__.Formatter().joinVoices([voice]).formatToStave([voice], stave, { stave }); + voice.draw(ctx, stave); + ok(true, 'TabNotes successfully drawn'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(AnnotationTests); + + + +/***/ }), + +/***/ "./tests/articulation_tests.ts": +/*!*************************************!*\ + !*** ./tests/articulation_tests.ts ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "ArticulationTests": () => (/* binding */ ArticulationTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_articulation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/articulation */ "./src/articulation.ts"); +/* harmony import */ var _src_beam__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/beam */ "./src/beam.ts"); +/* harmony import */ var _src_flow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/flow */ "./src/flow.ts"); +/* harmony import */ var _src_font__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/font */ "./src/font.ts"); +/* harmony import */ var _src_formatter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/formatter */ "./src/formatter.ts"); +/* harmony import */ var _src_modifier__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../src/modifier */ "./src/modifier.ts"); +/* harmony import */ var _src_stave__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../src/stave */ "./src/stave.ts"); +/* harmony import */ var _src_stavebarline__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../src/stavebarline */ "./src/stavebarline.ts"); +/* harmony import */ var _src_stavenote__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../src/stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _src_stem__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../src/stem */ "./src/stem.ts"); +/* harmony import */ var _src_tabnote__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../src/tabnote */ "./src/tabnote.ts"); +/* harmony import */ var _src_tabstave__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../src/tabstave */ "./src/tabstave.ts"); +/* harmony import */ var _src_voice__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../src/voice */ "./src/voice.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Articulation Tests + + + + + + + + + + + + + + +const ArticulationTests = { + Start() { + QUnit.module('Articulation'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Articulation - Vertical Placement', verticalPlacement); + run('Articulation - Staccato/Staccatissimo', drawArticulations, { sym1: 'a.', sym2: 'av' }); + run('Articulation - Accent/Tenuto', drawArticulations, { sym1: 'a>', sym2: 'a-' }); + run('Articulation - Marcato/L.H. Pizzicato', drawArticulations, { sym1: 'a^', sym2: 'a+' }); + run('Articulation - Snap Pizzicato/Fermata', drawArticulations, { sym1: 'ao', sym2: 'ao' }); + run('Articulation - Up-stroke/Down-Stroke', drawArticulations, { sym1: 'a|', sym2: 'am' }); + run('Articulation - Fermata Above/Below', drawFermata, { sym1: 'a@a', sym2: 'a@u' }); + run('Articulation - Fermata Short Above/Below', drawFermata, { sym1: 'a@as', sym2: 'a@us' }); + run('Articulation - Fermata Long Above/Below', drawFermata, { sym1: 'a@al', sym2: 'a@ul' }); + run('Articulation - Fermata Very Long Above/Below', drawFermata, { sym1: 'a@avl', sym2: 'a@uvl' }); + run('Articulation - Inline/Multiple', drawArticulations2, { sym1: 'a.', sym2: 'a.' }); + run('TabNote Articulation', tabNotes, { sym1: 'a.', sym2: 'a.' }); + }, +}; +// Helper function for creating StaveNotes. +function drawArticulations(options) { + const sym1 = options.params.sym1; + const sym2 = options.params.sym2; + const width = 125 - _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave.defaultPadding; + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 675, 195); + const ctx = f.getContext(); + expect(0); + let x = 10; + const y = 30; + const score = f.EasyScore(); + const formatAndDrawToWidth = (x, y, width, notes, barline) => { + const voices = [score.voice(notes, { time: '4/4' })]; + const formatter = f.Formatter(); + voices.forEach((v) => formatter.joinVoices([v])); + const nwidth = Math.max(formatter.preCalculateMinTotalWidth(voices), width); + formatter.format(voices, nwidth); + const stave = f + .Stave({ x, y, width: nwidth + _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave.defaultPadding }) + .setEndBarType(barline) + .setContext(ctx) + .draw(); + voices.forEach((voice) => voice.draw(ctx, stave)); + return stave.getWidth(); + }; + // bar 1 + const notesBar1 = [ + f.StaveNote({ keys: ['a/3'], duration: 'q', stem_direction: 1 }), + f.StaveNote({ keys: ['a/4'], duration: 'q', stem_direction: 1 }), + f.StaveNote({ keys: ['c/4'], duration: 'q', stem_direction: 1 }), + f.StaveNote({ keys: ['a/4'], duration: 'q', stem_direction: 1 }), + ]; + notesBar1[0].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym1).setPosition(4), 0); + notesBar1[1].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym1).setPosition(4), 0); + notesBar1[2].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym1).setPosition(3), 0); + notesBar1[3].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym1).setPosition(3), 0); + // Helper function to justify and draw a 4/4 voice + x += formatAndDrawToWidth(x, y, width, notesBar1, _src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.Barline.type.NONE); + // bar 2 - juxtaposing second bar next to first bar + const notesBar2 = [ + f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: -1 }), + f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: -1 }), + f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: -1 }), + f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: -1 }), + ]; + notesBar2[0].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym1).setPosition(3), 0); + notesBar2[1].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym1).setPosition(3), 0); + notesBar2[2].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym1).setPosition(4), 0); + notesBar2[3].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym1).setPosition(4), 0); + // Helper function to justify and draw a 4/4 voice + x += formatAndDrawToWidth(x, y, width, notesBar2, _src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.Barline.type.DOUBLE); + // bar 3 - juxtaposing second bar next to first bar + const notesBar3 = [ + f.StaveNote({ keys: ['c/4'], duration: 'q', stem_direction: 1 }), + f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: 1 }), + f.StaveNote({ keys: ['c/4'], duration: 'q', stem_direction: 1 }), + f.StaveNote({ keys: ['a/4'], duration: 'q', stem_direction: 1 }), + ]; + notesBar3[0].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym2).setPosition(4), 0); + notesBar3[1].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym2).setPosition(4), 0); + notesBar3[2].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym2).setPosition(3), 0); + notesBar3[3].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym2).setPosition(3), 0); + // Helper function to justify and draw a 4/4 voice + x += formatAndDrawToWidth(x, y, width, notesBar3, _src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.Barline.type.NONE); + // bar 4 - juxtaposing second bar next to first bar + const notesBar4 = [ + f.StaveNote({ keys: ['a/4'], duration: 'q', stem_direction: -1 }), + f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: -1 }), + f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: -1 }), + f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: -1 }), + ]; + notesBar4[0].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym2).setPosition(3), 0); + notesBar4[1].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym2).setPosition(3), 0); + notesBar4[2].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym2).setPosition(4), 0); + notesBar4[3].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym2).setPosition(4), 0); + // Helper function to justify and draw a 4/4 voice + formatAndDrawToWidth(x, y, width, notesBar4, _src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.Barline.type.END); +} +function drawFermata(options) { + const sym1 = options.params.sym1; + const sym2 = options.params.sym2; + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 400, 195); + const ctx = f.getContext(); + const score = f.EasyScore(); + const width = 150 - _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave.defaultPadding; + let x = 50; + const y = 30; + const formatAndDrawToWidth = (x, y, width, notes, barline) => { + const voices = [score.voice(notes, { time: '4/4' })]; + const formatter = f.Formatter(); + voices.forEach((v) => formatter.joinVoices([v])); + const nwidth = Math.max(formatter.preCalculateMinTotalWidth(voices), width); + formatter.format(voices, nwidth); + const stave = f + .Stave({ x, y, width: nwidth + _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave.defaultPadding }) + .setEndBarType(barline) + .setContext(ctx) + .draw(); + voices.forEach((voice) => voice.draw(ctx, stave)); + return stave.getWidth(); + }; + expect(0); + const notesBar1 = [ + f.StaveNote({ keys: ['c/4'], duration: 'q', stem_direction: 1 }), + f.StaveNote({ keys: ['a/4'], duration: 'q', stem_direction: 1 }), + f.StaveNote({ keys: ['c/4'], duration: 'q', stem_direction: -1 }), + f.StaveNote({ keys: ['a/4'], duration: 'q', stem_direction: -1 }), + ]; + notesBar1[0].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym1).setPosition(3), 0); + notesBar1[1].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym1).setPosition(3), 0); + notesBar1[2].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym2).setPosition(4), 0); + notesBar1[3].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym2).setPosition(4), 0); + x += formatAndDrawToWidth(x, y, width, notesBar1, _src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.Barline.type.NONE); + // bar 2 - juxtaposing second bar next to first bar + const notesBar2 = [ + f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: 1 }), + f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: 1 }), + f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: -1 }), + f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: -1 }), + ]; + notesBar2[0].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym1).setPosition(3), 0); + notesBar2[1].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym1).setPosition(3), 0); + notesBar2[2].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym2).setPosition(4), 0); + notesBar2[3].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation(sym2).setPosition(4), 0); + // Helper function to justify and draw a 4/4 voice + formatAndDrawToWidth(x, y, width, notesBar2, _src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.Barline.type.DOUBLE); +} +function verticalPlacement(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 750, 300); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + const staveNote = (noteStruct) => new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote(noteStruct); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(10, 50, 750).addClef('treble').setContext(ctx).draw(); + const notes = [ + staveNote({ keys: ['f/4'], duration: 'q' }) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a@u').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.BELOW), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a.').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.BELOW), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a-').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.BELOW), 0), + staveNote({ keys: ['g/4'], duration: 'q', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_10__.Stem.DOWN }) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a@u').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.BELOW), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a.').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.BELOW), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a-').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.BELOW), 0), + staveNote({ keys: ['c/5'], duration: 'q' }) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a@u').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.BELOW), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a.').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.BELOW), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a-').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.BELOW), 0), + staveNote({ keys: ['f/4'], duration: 'q' }) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a.').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.BELOW), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a-').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.BELOW), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a@u').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.BELOW), 0), + staveNote({ keys: ['g/4'], duration: 'q', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_10__.Stem.DOWN }) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a.').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.BELOW), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a-').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.BELOW), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a@u').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.BELOW), 0), + staveNote({ keys: ['c/5'], duration: 'q' }) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a.').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.BELOW), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a-').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.BELOW), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a@u').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.BELOW), 0), + staveNote({ keys: ['a/5'], duration: 'q', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_10__.Stem.DOWN }) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a@a').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a.').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a-').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.ABOVE), 0), + staveNote({ keys: ['f/5'], duration: 'q' }) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a@a').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a.').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a-').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.ABOVE), 0), + staveNote({ keys: ['b/4'], duration: 'q', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_10__.Stem.DOWN }) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a@a').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a.').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a-').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.ABOVE), 0), + staveNote({ keys: ['a/5'], duration: 'q', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_10__.Stem.DOWN }) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a.').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a-').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a@a').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.ABOVE), 0), + staveNote({ keys: ['f/5'], duration: 'q' }) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a.').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a-').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a@a').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.ABOVE), 0), + staveNote({ keys: ['b/4'], duration: 'q', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_10__.Stem.DOWN }) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a.').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a-').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a@a').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_6__.ModifierPosition.ABOVE), 0), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, ' Annotation Placement'); +} +function drawArticulations2(options) { + expect(0); + const scale = 0.8; + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 1500, 195); + // Get the rendering context + const ctx = f.getContext(); + ctx.scale(scale, scale); + // bar 1 + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(10, 50, 500).setContext(ctx).draw(); + const notesBar1 = [ + f.StaveNote({ keys: ['c/4'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['d/4'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['e/4'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['g/4'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['a/4'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['b/4'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['c/5'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['d/5'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['e/5'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['f/5'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['g/5'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['a/5'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['b/5'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['c/6'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['d/6'], duration: '16', stem_direction: -1 }), + ]; + let i; + for (i = 0; i < 16; i++) { + notesBar1[i].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a.').setPosition(4), 0); + notesBar1[i].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a>').setPosition(4), 0); + if (i === 15) { + notesBar1[i].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a@u').setPosition(4), 0); + } + } + const beam1 = new _src_beam__WEBPACK_IMPORTED_MODULE_2__.Beam(notesBar1.slice(0, 8)); + const beam2 = new _src_beam__WEBPACK_IMPORTED_MODULE_2__.Beam(notesBar1.slice(8, 16)); + _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter.FormatAndDraw(ctx, stave1, notesBar1); + beam1.setContext(ctx).draw(); + beam2.setContext(ctx).draw(); + // bar 2 - juxtaposing second bar next to first bar + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(510, 50, 500).setContext(ctx).draw(); + const notesBar2 = [ + f.StaveNote({ keys: ['f/3'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['g/3'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['a/3'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['b/3'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['c/4'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['d/4'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['e/4'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['g/4'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['a/4'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['b/4'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['c/5'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['d/5'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['e/5'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['f/5'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['g/5'], duration: '16', stem_direction: -1 }), + ]; + for (i = 0; i < 16; i++) { + notesBar2[i].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a-').setPosition(3), 0); + notesBar2[i].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a^').setPosition(3), 0); + if (i === 15) { + notesBar2[i].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a@u').setPosition(4), 0); + } + } + const beam3 = new _src_beam__WEBPACK_IMPORTED_MODULE_2__.Beam(notesBar2.slice(0, 8)); + const beam4 = new _src_beam__WEBPACK_IMPORTED_MODULE_2__.Beam(notesBar2.slice(8, 16)); + _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter.FormatAndDraw(ctx, stave2, notesBar2); + beam3.setContext(ctx).draw(); + beam4.setContext(ctx).draw(); + // bar 3 - juxtaposing second bar next to first bar + const stave3 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(1010, 50, 100).setContext(ctx).draw(); + const notesBar3 = [f.StaveNote({ keys: ['c/4'], duration: 'w', stem_direction: 1 })]; + notesBar3[0].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a-').setPosition(3), 0); + notesBar3[0].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a>').setPosition(3), 0); + notesBar3[0].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a@a').setPosition(3), 0); + _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter.FormatAndDraw(ctx, stave3, notesBar3); + // bar 4 - juxtaposing second bar next to first bar + const stave4 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(1110, 50, 250).setContext(ctx).draw(); + const notesBar4 = [ + f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: -1 }), + f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: -1 }), + f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: -1 }), + f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: -1 }), + ]; + for (i = 0; i < 4; i++) { + let position1 = 3; + if (i > 1) { + position1 = 4; + } + notesBar4[i].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a-').setPosition(position1), 0); + } + _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter.FormatAndDraw(ctx, stave4, notesBar4); +} +function tabNotes(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 600, 200); + ctx.font = '10pt ' + _src_font__WEBPACK_IMPORTED_MODULE_4__.Font.SANS_SERIF; + const stave = new _src_tabstave__WEBPACK_IMPORTED_MODULE_12__.TabStave(10, 10, 550); + stave.setContext(ctx); + stave.draw(); + const specs = [ + { + positions: [ + { str: 3, fret: 6 }, + { str: 4, fret: 25 }, + ], + duration: '8', + }, + { + positions: [ + { str: 2, fret: 10 }, + { str: 5, fret: 12 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 3, fret: 5 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 3, fret: 5 }, + ], + duration: '8', + }, + ]; + const notes1 = specs.map((noteSpec) => { + const tabNote = new _src_tabnote__WEBPACK_IMPORTED_MODULE_11__.TabNote(noteSpec); + tabNote.render_options.draw_stem = true; + return tabNote; + }); + const notes2 = specs.map((noteSpec) => { + const tabNote = new _src_tabnote__WEBPACK_IMPORTED_MODULE_11__.TabNote(noteSpec); + tabNote.render_options.draw_stem = true; + tabNote.setStemDirection(-1); + return tabNote; + }); + const notes3 = specs.map((noteSpec) => new _src_tabnote__WEBPACK_IMPORTED_MODULE_11__.TabNote(noteSpec)); + notes1[0].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a>').setPosition(3), 0); // U + notes1[1].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a>').setPosition(4), 0); // D + notes1[2].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a.').setPosition(3), 0); // U + notes1[3].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a.').setPosition(4), 0); // D + notes2[0].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a>').setPosition(3), 0); + notes2[1].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a>').setPosition(4), 0); + notes2[2].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a.').setPosition(3), 0); + notes2[3].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a.').setPosition(4), 0); + notes3[0].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a>').setPosition(3), 0); + notes3[1].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a>').setPosition(4), 0); + notes3[2].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a.').setPosition(3), 0); + notes3[3].addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation('a.').setPosition(4), 0); + const voice = new _src_voice__WEBPACK_IMPORTED_MODULE_13__.Voice(_src_flow__WEBPACK_IMPORTED_MODULE_3__.Flow.TIME4_4).setMode(_src_voice__WEBPACK_IMPORTED_MODULE_13__.Voice.Mode.SOFT); + voice.addTickables(notes1); + voice.addTickables(notes2); + voice.addTickables(notes3); + new _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + voice.draw(ctx, stave); + ok(true, 'TabNotes successfully drawn'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(ArticulationTests); + + + +/***/ }), + +/***/ "./tests/auto_beam_formatting_tests.ts": +/*!*********************************************!*\ + !*** ./tests/auto_beam_formatting_tests.ts ***! + \*********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "AutoBeamFormattingTests": () => (/* binding */ AutoBeamFormattingTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_beam__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/beam */ "./src/beam.ts"); +/* harmony import */ var _src_fraction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/fraction */ "./src/fraction.ts"); +/* harmony import */ var _src_stave__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/stave */ "./src/stave.ts"); +/* harmony import */ var _src_stem__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/stem */ "./src/stem.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Auto Beaming Tests +// TODO: Beam.generateBeams(voice.getTickables() as StemmableNote[], ...) requires a cast to StemmableNote[]. +// Is there a cleaner way to handle this? + + + + + +const AutoBeamFormattingTests = { + Start() { + QUnit.module('Auto-Beaming'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Simple Auto Beaming', simpleAuto); + run('Auto Beaming With Overflow Group', simpleAutoWithOverflowGroup); + run('Even Group Stem Directions', evenGroupStemDirections); + run('Odd Group Stem Directions', oddGroupStemDirections); + run('Odd Beam Groups Auto Beaming', oddBeamGroups); + run('More Simple Auto Beaming 0', moreSimple0); + run('More Simple Auto Beaming 1', moreSimple1); + run('Beam Across All Rests', beamAcrossAllRests); + run('Beam Across All Rests with Stemlets', beamAcrossAllRestsWithStemlets); + run('Break Beams on Middle Rests Only', beamAcrossMiddleRests); + run('Break Beams on Rest', breakBeamsOnRests); + run('Maintain Stem Directions', maintainStemDirections); + run('Maintain Stem Directions - Beam Over Rests', maintainStemDirectionsBeamAcrossRests); + run('Beat group with unbeamable note - 2/2', groupWithUnbeamableNote); + run('Offset beat grouping - 6/8 ', groupWithUnbeamableNote1); + run('Odd Time - Guessing Default Beam Groups', autoOddBeamGroups); + run('Custom Beam Groups', customBeamGroups); + run('Simple Tuplet Auto Beaming', simpleTuplets); + run('More Simple Tuplet Auto Beaming', moreSimpleTuplets); + run('More Automatic Beaming', moreBeaming); + run('Automatic Beaming 4/4 with 3, 3, 2 Pattern', beamingWithSeveralGroups1); + run('Automatic Beaming 4/4 with 3, 3, 2 Pattern and Overflow', beamingWithSeveralGroupsOverflow); + run('Automatic Beaming 8/4 with 3, 2, 3 Pattern and 2 Overflows', beamingWithSeveralGroupsOverflow2); + run('Automatic Beaming 8/4 with 3, 2, 3 Pattern and 3 Overflows', beamingWithSeveralGroupsOverflow3); + run('Duration-Based Secondary Beam Breaks', secondaryBreaks1); + run('Duration-Based Secondary Beam Breaks 2', secondaryBreaks2); + run('Flat Beams Up', flatBeamsUp); + run('Flat Beams Down', flatBeamsDown); + run('Flat Beams Mixed Direction', flatBeamsMixed); + run('Flat Beams Up (uniform)', flatBeamsUpUniform); + run('Flat Beams Down (uniform)', flatBeamsDownUniform); + run('Flat Beams Up Bounds', flatBeamsUpBounds); + run('Flat Beams Down Bounds', flatBeamsDownBounds); + }, +}; +function simpleAuto(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('f5/8, e5, d5, c5/16, c5, d5/8, e5, f5, f5/32, f5, f5, f5'), { time: '4/4' }); + // Takes a voice and returns its auto beams. + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voice); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beaming Applicator Test'); +} +function simpleAutoWithOverflowGroup(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + // Add a . after a note (e.g., f5/4.) to make it a dotted note. + const voice = score.voice(score.notes('f5/4., e5/8, d5/8, d5/16, c5/16, c5/16, c5/16, f5/16, f5/32, f5/32'), { + time: '4/4', + }); + // Takes a voice and returns its auto beams. + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voice); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beaming Applicator Test'); +} +function evenGroupStemDirections(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('a4/8, b4, g4, c5, f4, d5, e4, e5, b4, b4, g4, d5'), { time: '6/4' }); + // Takes a voice and returns its auto beams. + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voice); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + equal(beams[0].getStemDirection(), _src_stem__WEBPACK_IMPORTED_MODULE_4__.Stem.UP); + equal(beams[1].getStemDirection(), _src_stem__WEBPACK_IMPORTED_MODULE_4__.Stem.UP); + equal(beams[2].getStemDirection(), _src_stem__WEBPACK_IMPORTED_MODULE_4__.Stem.UP); + equal(beams[3].getStemDirection(), _src_stem__WEBPACK_IMPORTED_MODULE_4__.Stem.UP); + equal(beams[4].getStemDirection(), _src_stem__WEBPACK_IMPORTED_MODULE_4__.Stem.DOWN); + equal(beams[5].getStemDirection(), _src_stem__WEBPACK_IMPORTED_MODULE_4__.Stem.DOWN); + ok(true, 'Auto Beaming Applicator Test'); +} +function oddGroupStemDirections(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('g4/8, b4, d5, c5, f4, d5, e4, g5, g4, b4, g4, d5, a4, c5, a4'), { + time: '15/8', + }); + const groups = [new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(3, 8)]; + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voice, undefined, groups); + equal(beams[0].getStemDirection(), _src_stem__WEBPACK_IMPORTED_MODULE_4__.Stem.DOWN, 'Notes are equidistant from middle line'); + equal(beams[1].getStemDirection(), _src_stem__WEBPACK_IMPORTED_MODULE_4__.Stem.DOWN); + equal(beams[2].getStemDirection(), _src_stem__WEBPACK_IMPORTED_MODULE_4__.Stem.UP); + equal(beams[3].getStemDirection(), _src_stem__WEBPACK_IMPORTED_MODULE_4__.Stem.DOWN, 'Notes are equidistant from middle line'); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beaming Applicator Test'); +} +function oddBeamGroups(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('f5, e5, d5, c5, c5, d5, e5, f5, f5, f4, f3, f5/16, f5'), { time: '6/4' }); + const groups = [new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(2, 8), new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(3, 8), new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(1, 8)]; + // Takes a voice and returns its auto beams. + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voice, undefined, groups); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function moreSimple0(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c4/8, g4, c5, g5, a5, c4, d4, a5'), { time: '4/4' }); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voice); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function moreSimple1(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c5/16, g5, c5, c5/r, c5/r, (c4 e4 g4), d4, a5, c4, g4, c5, b4/r, (c4 e4), b4/r, b4/r, a4'), { time: '4/4' }); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voice); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function breakBeamsOnRests(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c5/16, g5, c5, c5/r, c5/r, (c4 e4 g4), d4, a5, c4, g4, c5, b4/r, (c4 e4), b4/r, b4/r, a4'), { time: '4/4' }); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.generateBeams(voice.getTickables(), { + beam_rests: false, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function beamAcrossAllRestsWithStemlets(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c5/16, g5, c5, c5/r, c5/r, (c4 e4 g4), d4, a5, c4, g4, c5, b4/r, (c4 e4), b4/r, b4/r, a4'), { time: '4/4' }); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.generateBeams(voice.getTickables(), { + beam_rests: true, + show_stemlets: true, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function beamAcrossAllRests(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c5/16, g5, c5, c5/r, c5/r, (c4 e4 g4), d4, a5, c4, g4, c5, b4/r, (c4 e4), b4/r, b4/r, a4'), { time: '4/4' }); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.generateBeams(voice.getTickables(), { + beam_rests: true, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function beamAcrossMiddleRests(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c5/16, g5, c5, c5/r, c5/r, (c4 e4 g4), d4, a5, c4, g4, c5, b4/r, (c4 e4), b4/r, b4/r, a4'), { time: '4/4' }); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.generateBeams(voice.getTickables(), { + beam_rests: true, + beam_middle_only: true, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function maintainStemDirections(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 450, 200); + const stave = f.Stave(); + const score = f.EasyScore(); + // EasyScore.notes(line, ...) ignores whitespace in the line string. + const voice = score.voice(score.notes([ + 'b4/16, b4, b4[stem="down"], b4/r', + 'b4/r, b4[stem="down"], b4, b4', + 'b4[stem="down"], b4[stem="down"], b4, b4/r', + 'b4/32, b4[stem="down"], b4[stem="down"], b4, b4/16/r, b4', + ].join(', '), { stem: 'up' }), { time: '4/4' }); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.generateBeams(voice.getTickables(), { + beam_rests: false, + maintain_stem_directions: true, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function maintainStemDirectionsBeamAcrossRests(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 450, 200); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes([ + 'b4/16, b4, b4[stem="down"], b4/r', + 'b4/r, b4[stem="down"], b4, b4', + 'b4[stem="down"], b4[stem="down"], b4, b4/r', + 'b4/32, b4[stem="down"], b4[stem="down"], b4, b4/16/r, b4', + ].join(', '), { stem: 'up' }), { time: '4/4' }); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.generateBeams(voice.getTickables(), { + beam_rests: true, + maintain_stem_directions: true, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function groupWithUnbeamableNote(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 450, 200); + const stave = f.Stave().addTimeSignature('2/4'); + const score = f.EasyScore(); + const voice = score.voice(score.notes('b4/16, b4, b4/4, b4/16, b4'), { time: '2/4' }); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.generateBeams(voice.getTickables(), { + groups: [new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(2, 2)], + beam_rests: false, + maintain_stem_directions: true, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function groupWithUnbeamableNote1(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 450, 200); + const stave = f.Stave().addTimeSignature('6/8'); + const score = f.EasyScore(); + const voice = score.voice(score.notes('b4/4, b4/4, b4/8, b4/8'), { time: '6/8' }); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.generateBeams(voice.getTickables(), { + groups: [new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(3, 8)], + beam_rests: false, + maintain_stem_directions: true, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function autoOddBeamGroups(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 450, 400); + const score = f.EasyScore(); + const stave1 = f.Stave({ y: 10 }).addTimeSignature('5/4'); + const voice1 = score.voice(score.notes('c5/8, g5, c5, b4, b4, c4, d4, a5, c4, g4'), { time: '5/4' }); + const stave2 = f.Stave({ y: 150 }).addTimeSignature('5/8'); + const voice2 = score.voice(score.notes('c5/8, g5, c5, b4, b4'), { time: '5/8' }); + const stave3 = f.Stave({ y: 290 }).addTimeSignature('13/16'); + const voice3 = score.voice(score.notes('c5/16, g5, c5, b4, b4, c5, g5, c5, b4, b4, c5, b4, b4'), { + time: '13/16', + }); + // Flatten the arrays into a single Beam[]. + const beams = [ + ..._src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voice1, undefined, _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.getDefaultBeamGroups('5/4')), + ..._src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voice2, undefined, _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.getDefaultBeamGroups('5/8')), + ..._src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voice3, undefined, _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.getDefaultBeamGroups('13/16')), + ]; + f.Formatter().formatToStave([voice1], stave1).formatToStave([voice2], stave2).formatToStave([voice3], stave3); + _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave.formatBegModifiers([stave1, stave2, stave3]); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function customBeamGroups(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 450, 400); + const score = f.EasyScore(); + const stave1 = f.Stave({ y: 10 }).addTimeSignature('5/4'); + const voice1 = score.voice(score.notes('c5/8, g5, c5, b4, b4, c4, d4, a5, c4, g4'), { time: '5/4' }); + const stave2 = f.Stave({ y: 150 }).addTimeSignature('5/8'); + const voice2 = score.voice(score.notes('c5/8, g5, c5, b4, b4'), { time: '5/8' }); + const stave3 = f.Stave({ y: 290 }).addTimeSignature('13/16'); + const voice3 = score.voice(score.notes('c5/16, g5, c5, b4, b4, c5, g5, c5, b4, b4, c5, b4, b4'), { time: '13/16' }); + const group1 = [new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(5, 8)]; + const group2 = [new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(3, 8), new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(2, 8)]; + const group3 = [new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(7, 16), new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(2, 16), new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(4, 16)]; + // Flatten the three Beam[] into a single Beam[]. + // Alternatively, you can use .reduce(concat) flatten arrays, where concat is defined as (a, b) => a.concat(b). + const beams = [ + ..._src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voice1, undefined, group1), + ..._src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voice2, undefined, group2), + ..._src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voice3, undefined, group3), + ]; + f.Formatter().formatToStave([voice1], stave1).formatToStave([voice2], stave2).formatToStave([voice3], stave3); + _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave.formatBegModifiers([stave1, stave2, stave3]); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +/** + * Helper function which uses Function.prototype.bind() to create shortcut methods. + * This can improve the readability of large blocks of EasyScore code. + */ +function createShortcuts(score) { + return { + notes: score.notes.bind(score), + tuplet: score.tuplet.bind(score), + }; +} +function simpleTuplets(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const { notes, tuplet } = createShortcuts(score); + const voice = score.voice([ + ...tuplet(notes('c4/8, g4, c5')), + ...notes('g5/8, a5'), + ...tuplet(notes('a5/16, (c5 e5), a5, d5, a5'), { ratioed: false, notes_occupied: 4 }), + ], { time: '3/4' }); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voice); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function moreSimpleTuplets(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const { notes, tuplet } = createShortcuts(score); + const voice = score.voice([...tuplet(notes('d4/4, g4, c5')), ...notes('g5/16, a5, a5, (c5 e5)')], { time: '3/4' }); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voice); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function moreBeaming(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c4/8, g4/4, c5/8., g5/16, a5/4, a5/16, (c5 e5)/16, a5/8'), { time: '9/8' }); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voice, undefined, _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.getDefaultBeamGroups('9/8')); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function beamingWithSeveralGroups1(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c4/8, g4/4, c5/8, g5, a5, a5, f5'), { time: '4/4' }); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voice, undefined, [new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(3, 8), new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(3, 8), new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(2, 8)]); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function beamingWithSeveralGroupsOverflow(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c4/8, g4/4., c5/8, g5, a5, a5'), { time: '4/4' }); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voice, undefined, [new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(3, 8), new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(3, 8), new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(2, 8)]); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function beamingWithSeveralGroupsOverflow2(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c4/16, g4/2, f4/16, c5/8, a4/16, c4/16, g4/8, b4, c5, g5, f5, e5, c5, a4/4'), { + time: '8/4', + }); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voice, undefined, [new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(3, 8), new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(2, 8), new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(3, 8)]); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function beamingWithSeveralGroupsOverflow3(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c4/16, g4/1, f4/16, c5/8, g5, f5, e5, c5, a4/4'), { time: '8/4' }); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voice, undefined, [new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(3, 8), new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(2, 8), new _src_fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(3, 8)]); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function secondaryBreaks1(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes([ + 'f5/32, f5, f5, f5, f5/16., f5/32', + 'f5/16, f5/8, f5/16', + 'f5/32, f5/16., f5., f5/32', + 'f5/16., f5/32, f5, f5/16.', + ].join(','))); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.generateBeams(voice.getTickables(), { secondary_breaks: '8' }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Duration-Based Secondary Breaks Test'); +} +function secondaryBreaks2(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const { notes, tuplet } = createShortcuts(score); + const voice = score.voice([ + tuplet(notes('e5/16, f5, f5')), + tuplet(notes('f5/16, f5, c5')), + notes('a4/16., f4/32'), + tuplet(notes('d4/16, d4, d4')), + tuplet(notes('a5/8, (e5 g5), a5')), + tuplet(notes('f5/16, f5, f5')), + tuplet(notes('f5/16, f5, a4')), + ].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat)); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.generateBeams(voice.getTickables(), { secondary_breaks: '8' }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Duration-Based Secondary Breaks Test'); +} +function flatBeamsUp(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const { notes, tuplet } = createShortcuts(score); + const voice = score.voice([ + tuplet(notes('c4/8, g4, f5')), + notes('d5/8'), + tuplet(notes('c5/16, (c4 e4 g4), f4')), + notes('d5/8, e5, c4, f5/32, f5, f5, f5'), + ].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat)); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.generateBeams(voice.getTickables(), { + flat_beams: true, + stem_direction: 1, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Flat Beams Up Test'); +} +function flatBeamsDown(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 450, 200); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c5/64, c5, c5, c5, c5, c5, c5, c5, a5/8, g5, (d4 f4 a4)/16, d4, d5/8, e5, g5, a6/32, a6, a6, g4/64, g4')); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.generateBeams(voice.getTickables(), { + flat_beams: true, + stem_direction: -1, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Flat Beams Down Test'); +} +function flatBeamsMixed(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 450, 200); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c5/64, d5, e5, c5, f5, c5, a5, c5, a5/8, g5, (d4 f4 a4)/16, d4, d5/8, e5, c4, a4/32, a4, a4, g4/64, g4')); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.generateBeams(voice.getTickables(), { flat_beams: true }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Flat Beams Mixed Direction Test'); +} +function flatBeamsUpUniform(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const { notes, tuplet } = createShortcuts(score); + const voice = score.voice([ + ...tuplet(notes('c4/8, g4, g5')), + ...notes('d5/8, c5/16, (c4 e4 g4), d5/8, e5, c4, f5/32, f5, f5, f5'), + ]); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.generateBeams(voice.getTickables(), { + flat_beams: true, + flat_beam_offset: 50, + stem_direction: 1, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Flat Beams Up (uniform) Test'); +} +function flatBeamsDownUniform(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 450, 200); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c5/64, c5, c5, c5, c5, c5, c5, c5, a5/8, g5, (e4 g4 b4)/16, e5, d5/8, e5/8, g5/8, a6/32, a6, a6, g4/64, g4')); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.generateBeams(voice.getTickables(), { + flat_beams: true, + flat_beam_offset: 155, + stem_direction: -1, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Flat Beams Down (uniform) Test'); +} +function flatBeamsUpBounds(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const { notes, tuplet } = createShortcuts(score); + const voice = score.voice([ + ...tuplet(notes('c4/8, g4/8, g5/8')), + ...notes('d5/8, c5/16, (c4 e4 g4)/16, d5/8, e5/8, c4/8, f5/32, f5/32, f5/32, f5/32'), + ]); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.generateBeams(voice.getTickables(), { + flat_beams: true, + flat_beam_offset: 60, + stem_direction: 1, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Flat Beams Up (uniform) Test'); +} +function flatBeamsDownBounds(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 450, 200); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const voice = score.voice(score.notes([ + 'g5/8, a6/32, a6/32, a6/32, g4/64, g4/64', + 'c5/64, c5/64, c5/64, c5/64, c5/64, c5/64, c5/64, c5/64, a5/8', + 'g5/8, (e4 g4 b4)/16, e5/16', + 'd5/8, e5/8', + ].join(','), { stem: 'down' })); + const beams = _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.generateBeams(voice.getTickables(), { + flat_beams: true, + flat_beam_offset: 145, + stem_direction: -1, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Flat Beams Down (uniform) Test'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(AutoBeamFormattingTests); + + + +/***/ }), + +/***/ "./tests/bach_tests.ts": +/*!*****************************!*\ + !*** ./tests/bach_tests.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "BachDemoTests": () => (/* binding */ BachDemoTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/index */ "./src/index.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Bach Demo + + +const BachDemoTests = { + Start() { + QUnit.module('Bach Demo'); + _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests('Minuet 1', minuet1); + }, +}; +function minuet1(options) { + const registry = new _src_index__WEBPACK_IMPORTED_MODULE_1__.Registry(); + _src_index__WEBPACK_IMPORTED_MODULE_1__.Registry.enableDefaultRegistry(registry); + // Retrieve the element from the registry and cast to StaveNote, so we can call .addModifier( ) later. + const id = (id) => registry.getElementById(id); + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 1100, 900); + const score = f.EasyScore({ throwOnError: true }); + // Bind these three functions so the code looks cleaner. + // Instead of score.voice(...), just call voice(...). + const voice = score.voice.bind(score); + const notes = score.notes.bind(score); + const beam = score.beam.bind(score); + let x = 120; + let y = 80; + function appendSystem(width) { + const system = f.System({ x, y, width, spaceBetweenStaves: 10 }); + x += width; + return system; + } + score.set({ time: '3/4' }); + /* Measure 1 */ + let system = appendSystem(220); + system + .addStave({ + voices: [ + voice([notes('D5/q[id="m1a"]'), beam(notes('G4/8, A4, B4, C5', { stem: 'up' }))].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat)), + voice([f.TextDynamics({ text: 'p', duration: 'h', dots: 1, line: 9 })]), + ], + }) + .addClef('treble') + .addKeySignature('G') + .addTimeSignature('3/4') + .setTempo({ name: 'Allegretto', duration: 'h', dots: 1, bpm: 66 }, -30); + system + .addStave({ voices: [voice(notes('(G3 B3 D4)/h, A3/q', { clef: 'bass' }))] }) + .addClef('bass') + .addKeySignature('G') + .addTimeSignature('3/4'); + system.addConnector('brace'); + system.addConnector('singleRight'); + system.addConnector('singleLeft'); + id('m1a').addModifier(f.Fingering({ number: '5' }), 0); + /* Measure 2 */ + system = appendSystem(150); + system.addStave({ voices: [voice(notes('D5/q[id="m2a"], G4[id="m2b"], G4[id="m2c"]'))] }); + system.addStave({ voices: [voice(notes('B3/h.', { clef: 'bass' }))] }); + system.addConnector('singleRight'); + id('m2a').addModifier(f.Articulation({ type: 'a.', position: 'above' }), 0); + id('m2b').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0); + id('m2c').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0); + f.Curve({ + from: id('m1a'), + to: id('m2a'), + options: { + cps: [ + { x: 0, y: 40 }, + { x: 0, y: 40 }, + ], + }, + }); + /* Measure 3 */ + system = appendSystem(150); + system.addStave({ + voices: [voice([notes('E5/q[id="m3a"]'), beam(notes('C5/8, D5, E5, F5', { stem: 'down' }))].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat))], + }); + id('m3a').addModifier(f.Fingering({ number: '3', position: 'above' }), 0); + system.addStave({ voices: [voice(notes('C4/h.', { clef: 'bass' }))] }); + system.addConnector('singleRight'); + /* Measure 4 */ + system = appendSystem(150); + system.addStave({ voices: [voice(notes('G5/q[id="m4a"], G4[id="m4b"], G4[id="m4c"]'))] }); + system.addStave({ voices: [voice(notes('B3/h.', { clef: 'bass' }))] }); + system.addConnector('singleRight'); + id('m4a').addModifier(f.Articulation({ type: 'a.', position: 'above' }), 0); + id('m4b').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0); + id('m4c').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0); + f.Curve({ + from: id('m3a'), + to: id('m4a'), + options: { + cps: [ + { x: 0, y: 20 }, + { x: 0, y: 20 }, + ], + }, + }); + /* Measure 5 */ + system = appendSystem(150); + system.addStave({ + voices: [voice([notes('C5/q[id="m5a"]'), beam(notes('D5/8, C5, B4, A4', { stem: 'down' }))].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat))], + }); + id('m5a').addModifier(f.Fingering({ number: '4', position: 'above' }), 0); + system.addStave({ voices: [voice(notes('A3/h.', { clef: 'bass' }))] }); + system.addConnector('singleRight'); + /* Measure 6 */ + system = appendSystem(150); + system.addStave({ + voices: [voice([notes('B4/q'), beam(notes('C5/8, B4, A4, G4[id="m6a"]', { stem: 'up' }))].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat))], + }); + system.addStave({ voices: [voice(notes('G3/h.', { clef: 'bass' }))] }); + system.addConnector('singleRight'); + f.Curve({ + from: id('m5a'), + to: id('m6a'), + options: { + cps: [ + { x: 0, y: 20 }, + { x: 0, y: 20 }, + ], + invert: true, + position_end: 'nearTop', + y_shift: 20, + }, + }); + /* Measure 7 (New system) */ + x = 20; + y += 230; + system = appendSystem(220); + system + .addStave({ + voices: [ + voice([notes('F4/q[id="m7a"]'), beam(notes('G4/8[id="m7b"], A4, B4, G4', { stem: 'up' }))].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat)), + ], + }) + .addClef('treble') + .addKeySignature('G'); + system + .addStave({ voices: [voice(notes('D4/q, B3[id="m7c"], G3', { clef: 'bass' }))] }) + .addClef('bass') + .addKeySignature('G'); + system.addConnector('brace'); + system.addConnector('singleRight'); + system.addConnector('singleLeft'); + id('m7a').addModifier(f.Fingering({ number: '2', position: 'below' }), 0); + id('m7b').addModifier(f.Fingering({ number: '1' }), 0); + id('m7c').addModifier(f.Fingering({ number: '3', position: 'above' }), 0); + /* Measure 8 */ + system = appendSystem(180); + const grace = f.GraceNote({ keys: ['d/3'], clef: 'bass', duration: '8', slash: true }); + system.addStave({ voices: [voice(notes('A4/h.[id="m8c"]'))] }); + system.addStave({ + voices: [ + score + .set({ clef: 'bass' }) + .voice([notes('D4/q[id="m8a"]'), beam(notes('D3/8, C4, B3[id="m8b"], A3', { stem: 'down' }))].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat)), + ], + }); + system.addConnector('singleRight'); + id('m8b').addModifier(f.Fingering({ number: '1', position: 'above' }), 0); + id('m8c').addModifier(f.GraceNoteGroup({ notes: [grace] }), 0); + f.Curve({ + from: id('m7a'), + to: id('m8c'), + options: { + cps: [ + { x: 0, y: 20 }, + { x: 0, y: 20 }, + ], + invert: true, + position: 'nearTop', + position_end: 'nearTop', + }, + }); + f.StaveTie({ from: grace, to: id('m8c') }); + /* Measure 9 */ + system = appendSystem(180); + system.addStave({ + voices: [ + score + .set({ clef: 'treble' }) + .voice([notes('D5/q[id="m9a"]'), beam(notes('G4/8, A4, B4, C5', { stem: 'up' }))].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat)), + ], + }); + system.addStave({ voices: [voice(notes('B3/h, A3/q', { clef: 'bass' }))] }); + system.addConnector('singleRight'); + id('m9a').addModifier(f.Fingering({ number: '5' }), 0); + /* Measure 10 */ + system = appendSystem(170); + system.addStave({ voices: [voice(notes('D5/q[id="m10a"], G4[id="m10b"], G4[id="m10c"]'))] }); + system.addStave({ voices: [voice(notes('G3/q[id="m10d"], B3, G3', { clef: 'bass' }))] }); + system.addConnector('singleRight'); + id('m10a').addModifier(f.Articulation({ type: 'a.', position: 'above' }), 0); + id('m10b').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0); + id('m10c').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0); + id('m10d').addModifier(f.Fingering({ number: '4' }), 0); + f.Curve({ + from: id('m9a'), + to: id('m10a'), + options: { + cps: [ + { x: 0, y: 40 }, + { x: 0, y: 40 }, + ], + }, + }); + /* Measure 11 */ + system = appendSystem(150); + system.addStave({ + voices: [voice([notes('E5/q[id="m11a"]'), beam(notes('C5/8, D5, E5, F5', { stem: 'down' }))].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat))], + }); + id('m11a').addModifier(f.Fingering({ number: '3', position: 'above' }), 0); + system.addStave({ voices: [voice(notes('C4/h.', { clef: 'bass' }))] }); + system.addConnector('singleRight'); + /* Measure 12 */ + system = appendSystem(170); + system.addStave({ voices: [voice(notes('G5/q[id="m12a"], G4[id="m12b"], G4[id="m12c"]'))] }); + system.addStave({ + voices: [ + score + .set({ clef: 'bass' }) + .voice([notes('B3/q[id="m12d"]'), beam(notes('C4/8, B3, A3, G3[id="m12e"]', { stem: 'down' }))].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat)), + ], + }); + system.addConnector('singleRight'); + id('m12a').addModifier(f.Articulation({ type: 'a.', position: 'above' }), 0); + id('m12b').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0); + id('m12c').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0); + id('m12d').addModifier(f.Fingering({ number: '2', position: 'above' }), 0); + id('m12e').addModifier(f.Fingering({ number: '4', position: 'above' }), 0); + f.Curve({ + from: id('m11a'), + to: id('m12a'), + options: { + cps: [ + { x: 0, y: 20 }, + { x: 0, y: 20 }, + ], + }, + }); + /* Measure 13 (New system) */ + x = 20; + y += 230; + system = appendSystem(220); + system + .addStave({ + voices: [ + score + .set({ clef: 'treble' }) + .voice([notes('c5/q[id="m13a"]'), beam(notes('d5/8, c5, b4, a4', { stem: 'down' }))].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat)), + ], + }) + .addClef('treble') + .addKeySignature('G'); + system + .addStave({ voices: [voice(notes('a3/h[id="m13b"], f3/q[id="m13c"]', { clef: 'bass' }))] }) + .addClef('bass') + .addKeySignature('G'); + system.addConnector('brace'); + system.addConnector('singleRight'); + system.addConnector('singleLeft'); + id('m13a').addModifier(f.Fingering({ number: '4', position: 'above' }), 0); + id('m13b').addModifier(f.Fingering({ number: '1' }), 0); + id('m13c').addModifier(f.Fingering({ number: '3', position: 'above' }), 0); + /* Measure 14 */ + system = appendSystem(180); + system.addStave({ + voices: [ + score + .set({ clef: 'treble' }) + .voice([notes('B4/q'), beam(notes('C5/8, b4, a4, g4', { stem: 'up' }))].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat)), + ], + }); + system.addStave({ voices: [voice(notes('g3/h[id="m14a"], b3/q[id="m14b"]', { clef: 'bass' }))] }); + system.addConnector('singleRight'); + id('m14a').addModifier(f.Fingering({ number: '2' }), 0); + id('m14b').addModifier(f.Fingering({ number: '1' }), 0); + /* Measure 15 */ + system = appendSystem(180); + system.addStave({ + voices: [ + score + .set({ clef: 'treble' }) + .voice([notes('a4/q'), beam(notes('b4/8, a4, g4, f4[id="m15a"]', { stem: 'up' }))].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat)), + ], + }); + system.addStave({ voices: [voice(notes('c4/q[id="m15b"], d4, d3', { clef: 'bass' }))] }); + system.addConnector('singleRight'); + id('m15a').addModifier(f.Fingering({ number: '2' }), 0); + id('m15b').addModifier(f.Fingering({ number: '2' }), 0); + /* Measure 16 */ + system = appendSystem(130); + system + .addStave({ + voices: [score.set({ clef: 'treble' }).voice([notes('g4/h.[id="m16a"]')].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat))], + }) + .setEndBarType(_src_index__WEBPACK_IMPORTED_MODULE_1__.BarlineType.REPEAT_END); + system + .addStave({ voices: [voice(notes('g3/h[id="m16b"], g2/q', { clef: 'bass' }))] }) + .setEndBarType(_src_index__WEBPACK_IMPORTED_MODULE_1__.BarlineType.REPEAT_END); + system.addConnector('boldDoubleRight'); + id('m16a').addModifier(f.Fingering({ number: '1' }), 0); + id('m16b').addModifier(f.Fingering({ number: '1' }), 0); + f.Curve({ + from: id('m13a'), + to: id('m16a'), + options: { + cps: [ + { x: 0, y: 50 }, + { x: 0, y: 20 }, + ], + invert: true, + position_end: 'nearTop', + }, + }); + /* Measure 17 */ + system = appendSystem(180); + system + .addStave({ + voices: [ + score + .set({ clef: 'treble' }) + .voice([notes('b5/q[id="m17a"]'), beam(notes('g5/8, a5, b5, g5', { stem: 'down' }))].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat)), + voice([f.TextDynamics({ text: 'mf', duration: 'h', dots: 1, line: 10 })]), + ], + }) + .setBegBarType(_src_index__WEBPACK_IMPORTED_MODULE_1__.BarlineType.REPEAT_BEGIN); + system.addStave({ voices: [voice(notes('g3/h.', { clef: 'bass' }))] }).setBegBarType(_src_index__WEBPACK_IMPORTED_MODULE_1__.BarlineType.REPEAT_BEGIN); + system.addConnector('boldDoubleLeft'); + system.addConnector('singleRight'); + id('m17a').addModifier(f.Fingering({ number: '5', position: 'above' }), 0); + /* Measure 18 */ + system = appendSystem(180); + system.addStave({ + voices: [ + score + .set({ clef: 'treble' }) + .voice([notes('a5/q[id="m18a"]'), beam(notes('d5/8, e5, f5, d5[id="m18b"]', { stem: 'down' }))].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat)), + ], + }); + system.addStave({ voices: [voice(notes('f3/h.', { clef: 'bass' }))] }); + system.addConnector('singleRight'); + id('m18a').addModifier(f.Fingering({ number: '4', position: 'above' }), 0); + f.Curve({ + from: id('m17a'), + to: id('m18b'), + options: { + cps: [ + { x: 0, y: 20 }, + { x: 0, y: 30 }, + ], + }, + }); + /* Done */ + f.draw(); + _src_index__WEBPACK_IMPORTED_MODULE_1__.Registry.disableDefaultRegistry(); + ok(true, 'Bach Minuet 1'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(BachDemoTests); + + + +/***/ }), + +/***/ "./tests/barline_tests.ts": +/*!********************************!*\ + !*** ./tests/barline_tests.ts ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "BarlineTests": () => (/* binding */ BarlineTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_stavebarline__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/stavebarline */ "./src/stavebarline.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Barline Tests + + +const BarlineTests = { + Start() { + QUnit.module('Barline'); + test('Enums', enums); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Simple BarNotes', simple); + run('Style BarNotes', style); + }, +}; +function enums() { + // VexFlow 4.0 renamed Barline.type => BarlineType. + // The old way still works, for backwards compatibility. + equal(_src_stavebarline__WEBPACK_IMPORTED_MODULE_1__.Barline.type, _src_stavebarline__WEBPACK_IMPORTED_MODULE_1__.BarlineType); + const a = _src_stavebarline__WEBPACK_IMPORTED_MODULE_1__.BarlineType.DOUBLE; + const b = _src_stavebarline__WEBPACK_IMPORTED_MODULE_1__.BarlineType.DOUBLE; + equal(a, b); +} +function simple(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 380, 160); + const stave = f.Stave(); + const notes = [ + f.StaveNote({ keys: ['d/4', 'e/4', 'f/4'], stem_direction: -1, duration: '2' }), + f.BarNote({ type: 'single' }), + f + .StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '2' }) + .addModifier(f.Accidental({ type: 'n' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1), + ]; + const voice = f.Voice().addTickables(notes); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Simple Test'); +} +function style(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 380, 160); + const stave = f.Stave(); + const notes = [ + f.StaveNote({ keys: ['d/4', 'e/4', 'f/4'], stem_direction: -1, duration: '2' }), + f.BarNote({ type: 'single' }), + f + .StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '2' }) + .addModifier(f.Accidental({ type: 'n' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1), + ]; + notes[1].setStyle({ shadowBlur: 15, shadowColor: 'blue', fillStyle: 'blue', strokeStyle: 'blue' }); + const voice = f.Voice().addTickables(notes); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Style'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(BarlineTests); + + + +/***/ }), + +/***/ "./tests/beam_tests.ts": +/*!*****************************!*\ + !*** ./tests/beam_tests.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "BeamTests": () => (/* binding */ BeamTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/index */ "./src/index.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Beam Tests +// TODO: Factory.Beam()'s 'notes' argument is a StemmableNote[], but we only have access to Tickable[]. + + +const BeamTests = { + Start() { + QUnit.module('Beam'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Simple Beam', simple); + run('Multi Beam', multi); + run('Sixteenth Beam', sixteenth); + run('Slopey Beam', slopey); + run('Auto-stemmed Beam', autoStem); + run('Mixed Beam 1', mixed); + run('Mixed Beam 2', mixed2); + run('Dotted Beam', dotted); + run('Partial Beam', partial); + run('Close Trade-offs Beam', tradeoffs); + run('Insane Beam', insane); + run('Lengthy Beam', lenghty); + run('Outlier Beam', outlier); + run('Break Secondary Beams', breakSecondaryBeams); + run('Partial Beam Direction', partialBeamDirection); + run('TabNote Beams Up', tabBeamsUp); + run('TabNote Beams Down', tabBeamsDown); + run('TabNote Auto Create Beams', autoTabBeams); + run('TabNote Beams Auto Stem', tabBeamsAutoStem); + run('Complex Beams with Annotations', complexWithAnnotation); + run('Complex Beams with Articulations', complexWithArticulation); + run('Complex Beams with Articulations two Staves', complexWithArticulation2); + }, +}; +function simple(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const beam = score.beam.bind(score); + const notes = score.notes.bind(score); + const voice = score.voice([ + notes('(cb4 e#4 a4)/2'), + beam(notes('(cb4 e#4 a4)/8, (d4 f4 a4), (ebb4 g##4 b4), (f4 a4 c5)', { stem: 'up' })), + ].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat), { time: '2/2' }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Simple Test'); +} +function multi(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice.bind(score); + const beam = score.beam.bind(score); + const notes = score.notes.bind(score); + const voices = [ + voice([beam(notes('f5/8, e5, d5, c5', { stem: 'up' })), beam(notes('c5, d5, e5, f5', { stem: 'up' }))].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat)), + voice([beam(notes('f4/8, e4, d4, c4', { stem: 'down' })), beam(notes('c4/8, d4, e4, f4', { stem: 'down' }))].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat)), + ]; + f.Formatter().joinVoices(voices).formatToStave(voices, stave); + f.draw(); + ok(true, 'Multi Test'); +} +function sixteenth(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice.bind(score); + const beam = score.beam.bind(score); + const notes = score.notes.bind(score); + const voices = [ + voice([ + beam(notes('f5/16, f5, d5, c5', { stem: 'up' })), + beam(notes('c5/16, d5, f5, e5', { stem: 'up' })), + notes('f5/2', { stem: 'up' }), + ].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat)), + voice([ + beam(notes('f4/16, e4/16, d4/16, c4/16', { stem: 'down' })), + beam(notes('c4/16, d4/16, f4/16, e4/16', { stem: 'down' })), + notes('f4/2', { stem: 'down' }), + ].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat)), + ]; + f.Formatter().joinVoices(voices).formatToStave(voices, stave); + f.draw(); + ok(true, 'Sixteenth Test'); +} +function breakSecondaryBeams(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 200); + const stave = f.Stave({ y: 20 }); + const score = f.EasyScore(); + const voice = score.voice.bind(score); + const beam = score.beam.bind(score); + const notes = score.notes.bind(score); + const voices = [ + voice([ + beam(notes('f5/16., f5/32, c5/16., d5/32, c5/16., d5/32', { stem: 'up' }), { secondaryBeamBreaks: [1, 3] }), + beam(notes('f5/16, e5, e5, e5, e5, e5', { stem: 'up' }), { secondaryBeamBreaks: [2] }), + ].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat), { time: '3/4' }), + voice([ + beam(notes('f4/32, d4, e4, c4, d4, c4, f4, d4, e4, c4, c4, d4', { stem: 'down' }), { + secondaryBeamBreaks: [3, 7], + }), + beam(notes('d4/16, f4, d4, e4, e4, e4', { stem: 'down' }), { secondaryBeamBreaks: [3] }), + ].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat), { time: '3/4' }), + ]; + f.Formatter().joinVoices(voices).formatToStave(voices, stave); + f.draw(); + ok(true, 'Breaking Secondary Beams Test'); +} +function partialBeamDirection(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 200); + const stave = f.Stave({ y: 20 }); + const score = f.EasyScore(); + const voice = score.voice.bind(score); + const beam = score.beam.bind(score); + const notes = score.notes.bind(score); + const voices = [ + voice([ + // Default beaming: + beam(notes('f4/8, f4/16, f4/8, f4/16', { stem: 'up' })), + // Force first 16th beam right + beam(notes('f4/8, f4/16, f4/8, f4/16', { stem: 'up' }), { partialBeamDirections: { '1': 'R' } }), + // Force first 16th beam left + beam(notes('f4/8, f4/16, f4/8, f4/16', { stem: 'up' }), { partialBeamDirections: { '1': 'L' } }), + ].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat), { time: '9/8' }), + ]; + f.Formatter().joinVoices(voices).formatToStave(voices, stave); + f.draw(); + ok(true, 'Partial beam direction test'); +} +function slopey(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 350, 140); + const stave = f.Stave({ y: 20 }); + const score = f.EasyScore(); + const beam = score.beam.bind(score); + const notes = score.notes.bind(score); + const voice = score.voice([ + beam(notes('c4/8, f4/8, d5/8, g5/8', { stem: 'up' })), + beam(notes('d6/8, f5/8, d4/8, g3/8', { stem: 'up' })), + ].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat)); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Slopey Test'); +} +function autoStem(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 350, 140); + const stave = f.Stave({ y: 20 }); + const score = f.EasyScore(); + const voice = score.voice(score.notes('a4/8, b4/8, g4/8, c5/8, f4/8, d5/8, e4/8, e5/8, b4/8, b4/8, g4/8, d5/8'), { + time: '6/4', + }); + const notes = voice.getTickables(); + const beams = [ + f.Beam({ notes: notes.slice(0, 2), options: { autoStem: true } }), + f.Beam({ notes: notes.slice(2, 4), options: { autoStem: true } }), + f.Beam({ notes: notes.slice(4, 6), options: { autoStem: true } }), + f.Beam({ notes: notes.slice(6, 8), options: { autoStem: true } }), + f.Beam({ notes: notes.slice(8, 10), options: { autoStem: true } }), + f.Beam({ notes: notes.slice(10, 12), options: { autoStem: true } }), + ]; + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + const UP = _src_index__WEBPACK_IMPORTED_MODULE_1__.Stem.UP; + const DOWN = _src_index__WEBPACK_IMPORTED_MODULE_1__.Stem.DOWN; + equal(beams[0].getStemDirection(), UP); + equal(beams[1].getStemDirection(), UP); + equal(beams[2].getStemDirection(), UP); + equal(beams[3].getStemDirection(), UP); + equal(beams[4].getStemDirection(), DOWN); + equal(beams[5].getStemDirection(), DOWN); + f.draw(); + ok(true, 'AutoStem Beam Test'); +} +function mixed(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 350, 140); + const stave = f.Stave({ y: 20 }); + const score = f.EasyScore(); + const voice1 = score.voice(score.notes('f5/8, d5/16, c5/16, c5/16, d5/16, e5/8, f5/8, d5/16, c5/16, c5/16, d5/16, e5/8', { stem: 'up' })); + const voice2 = score.voice(score.notes('f4/16, e4/8, d4/16, c4/16, d4/8, f4/16, f4/16, e4/8, d4/16, c4/16, d4/8, f4/16', { stem: 'down' })); + [ + [0, 4], + [4, 8], + [8, 12], + ].forEach((range) => f.Beam({ notes: voice1.getTickables().slice(range[0], range[1]) })); + [ + [0, 4], + [4, 8], + [8, 12], + ].forEach((range) => f.Beam({ notes: voice2.getTickables().slice(range[0], range[1]) })); + f.Formatter().joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave); + f.draw(); + ok(true, 'Multi Test'); +} +function mixed2(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 450, 180); + const stave = f.Stave({ y: 20 }); + const score = f.EasyScore(); + const voice = score.voice(score.notes('f5/32, d5/16, c5/32, c5/64, d5/128, e5/8, f5/16, d5/32, c5/64, c5/32, d5/16, e5/128', { + stem: 'up', + }), { time: '31/64' }); + const voice2 = score.voice(score.notes('f4/32, d4/16, c4/32, c4/64, d4/128, e4/8, f4/16, d4/32, c4/64, c4/32, d4/16, e4/128', { + stem: 'down', + }), { time: '31/64' }); + f.Beam({ notes: voice.getTickables().slice(0, 12) }); + f.Beam({ notes: voice2.getTickables().slice(0, 12) }); + f.Formatter().joinVoices([voice, voice2]).formatToStave([voice, voice2], stave); + f.draw(); + ok(true, 'Multi Test'); +} +function dotted(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('d4/8, b3/8., a3/16, a3/8, b3/8., c4/16, d4/8, b3/8, a3/8., a3/16, b3/8., c4/16', { stem: 'up' }), { time: '6/4' }); + const notes = voice.getTickables(); + f.Beam({ notes: notes.slice(0, 4) }); + f.Beam({ notes: notes.slice(4, 8) }); + f.Beam({ notes: notes.slice(8, 12) }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Dotted Test'); +} +function partial(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('d4/8, b3/32, c4/16., d4/16., e4/8, c4/64, c4/32, a3/8., b3/32., c4/8, e4/64, b3/16., b3/64, f4/8, e4/8, g4/64, e4/8'), { time: '89/64' }); + const notes = voice.getTickables(); + f.Beam({ notes: notes.slice(0, 3) }); + f.Beam({ notes: notes.slice(3, 9) }); + f.Beam({ notes: notes.slice(9, 13) }); + f.Beam({ notes: notes.slice(13, 17) }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Partial Test'); +} +function tradeoffs(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('a4/8, b4/8, c4/8, d4/8, g4/8, a4/8, b4/8, c4/8', { stem: 'up' })); + const notes = voice.getTickables(); + f.Beam({ notes: notes.slice(0, 4) }); + f.Beam({ notes: notes.slice(4, 8) }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Close Trade-offs Test'); +} +function insane(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 450, 180); + const stave = f.Stave({ y: 20 }); + const score = f.EasyScore(); + const voice = score.voice(score.notes('g4/8, g5/8, c4/8, b5/8, g4/8[stem="down"], a5[stem="down"], b4[stem="down"], c4/8', { stem: 'up' })); + const notes = voice.getTickables(); + f.Beam({ notes: notes.slice(0, 4) }); + f.Beam({ notes: notes.slice(4, 7) }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Insane Test'); +} +function lenghty(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 450, 180); + const stave = f.Stave({ y: 20 }); + const score = f.EasyScore(); + const voice = score.voice(score.beam(score.notes('g4/8, g4, g4, a4', { stem: 'up' })), { time: '2/4' }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Lengthy Test'); +} +function outlier(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 450, 180); + const stave = f.Stave({ y: 20 }); + const score = f.EasyScore(); + const voice = score.voice(score.notes([ + 'g4/8[stem="up"], f4[stem="up"], d5[stem="up"], e4[stem="up"]', + 'd5/8[stem="down"], d5[stem="down"], c5[stem="down"], d5[stem="down"]', + ].join())); + const notes = voice.getTickables(); + f.Beam({ notes: notes.slice(0, 4) }); + f.Beam({ notes: notes.slice(4, 8) }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave, { stave: stave }); + f.draw(); + ok(true, 'Outlier Test'); +} +function tabBeamsUp(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 200); + const stave = f.TabStave({ y: 20 }); + const specs = [ + { + positions: [ + { str: 3, fret: 6 }, + { str: 4, fret: 25 }, + ], + duration: '4', + }, + { + positions: [ + { str: 2, fret: 10 }, + { str: 5, fret: 12 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '16', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '32', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '64', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '128', + }, + { positions: [{ str: 3, fret: 6 }], duration: '8' }, + { positions: [{ str: 3, fret: 6 }], duration: '8' }, + { positions: [{ str: 3, fret: 6 }], duration: '8' }, + { positions: [{ str: 3, fret: 6 }], duration: '8' }, + ]; + const notes = specs.map((struct) => { + const tabNote = f.TabNote(struct); + tabNote.render_options.draw_stem = true; + return tabNote; + }); + f.Beam({ notes: notes.slice(1, 7) }); + f.Beam({ notes: notes.slice(8, 11) }); + f.Tuplet({ notes: notes.slice(8, 11), options: { ratioed: true } }); + const voice = f.Voice().setMode(_src_index__WEBPACK_IMPORTED_MODULE_1__.Voice.Mode.SOFT).addTickables(notes); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'All objects have been drawn'); +} +function tabBeamsDown(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 250); + const stave = f.TabStave({ options: { num_lines: 10 } }); + const specs = [ + { + stem_direction: -1, + positions: [ + { str: 3, fret: 6 }, + { str: 4, fret: 25 }, + ], + duration: '4', + }, + { + stem_direction: -1, + positions: [ + { str: 2, fret: 10 }, + { str: 5, fret: 12 }, + ], + duration: '8dd', + }, + { + stem_direction: -1, + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '8', + }, + { + stem_direction: -1, + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '16', + }, + { + stem_direction: -1, + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '32', + }, + { + stem_direction: -1, + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '64', + }, + { + stem_direction: -1, + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '128', + }, + { stem_direction: -1, positions: [{ str: 1, fret: 6 }], duration: '8' }, + { stem_direction: -1, positions: [{ str: 1, fret: 6 }], duration: '8' }, + { stem_direction: -1, positions: [{ str: 1, fret: 6 }], duration: '8' }, + { stem_direction: -1, positions: [{ str: 7, fret: 6 }], duration: '8' }, + { stem_direction: -1, positions: [{ str: 7, fret: 6 }], duration: '8' }, + { stem_direction: -1, positions: [{ str: 10, fret: 6 }], duration: '8' }, + { stem_direction: -1, positions: [{ str: 10, fret: 6 }], duration: '8' }, + ]; + const notes = specs.map((struct) => { + const tabNote = f.TabNote(struct); + tabNote.render_options.draw_stem = true; + tabNote.render_options.draw_dots = true; + return tabNote; + }); + _src_index__WEBPACK_IMPORTED_MODULE_1__.Dot.buildAndAttach([notes[1], notes[1]]); + f.Beam({ notes: notes.slice(1, 7) }); + f.Beam({ notes: notes.slice(8, 11) }); + f.Tuplet({ notes: notes.slice(8, 11), options: { location: -1 } }); + f.Tuplet({ notes: notes.slice(11, 14), options: { location: -1 } }); + const voice = f.Voice().setMode(_src_index__WEBPACK_IMPORTED_MODULE_1__.Voice.Mode.SOFT).addTickables(notes); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'All objects have been drawn'); +} +function autoTabBeams(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 200); + const stave = f.TabStave(); + const specs = [ + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '16', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '16', + }, + { positions: [{ str: 1, fret: 6 }], duration: '32' }, + { positions: [{ str: 1, fret: 6 }], duration: '32' }, + { positions: [{ str: 1, fret: 6 }], duration: '32' }, + { positions: [{ str: 6, fret: 6 }], duration: '32' }, + { positions: [{ str: 6, fret: 6 }], duration: '16' }, + { positions: [{ str: 6, fret: 6 }], duration: '16' }, + { positions: [{ str: 6, fret: 6 }], duration: '16' }, + { positions: [{ str: 6, fret: 6 }], duration: '16' }, + ]; + const notes = specs.map((struct) => { + const tabNote = f.TabNote(struct); + tabNote.render_options.draw_stem = true; + tabNote.render_options.draw_dots = true; + return tabNote; + }); + const voice = f.Voice().setMode(_src_index__WEBPACK_IMPORTED_MODULE_1__.Voice.Mode.SOFT).addTickables(notes); + const beams = _src_index__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voice, -1); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'All objects have been drawn'); +} +// This tests makes sure the auto_stem functionality is works. +// TabNote stems within a beam group should end up normalized +function tabBeamsAutoStem(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 300); + const stave = f.TabStave(); + const specs = [ + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '8', + stem_direction: -1, + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '8', + stem_direction: 1, + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '16', + stem_direction: -1, + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '16', + stem_direction: 1, + }, + { positions: [{ str: 1, fret: 6 }], duration: '32', stem_direction: 1 }, + { positions: [{ str: 1, fret: 6 }], duration: '32', stem_direction: -1 }, + { positions: [{ str: 1, fret: 6 }], duration: '32', stem_direction: -1 }, + { positions: [{ str: 6, fret: 6 }], duration: '32', stem_direction: -1 }, + { positions: [{ str: 6, fret: 6 }], duration: '16', stem_direction: 1 }, + { positions: [{ str: 6, fret: 6 }], duration: '16', stem_direction: 1 }, + { positions: [{ str: 6, fret: 6 }], duration: '16', stem_direction: 1 }, + { positions: [{ str: 6, fret: 6 }], duration: '16', stem_direction: -1 }, + ]; + const notes = specs.map((struct) => { + const tabNote = f.TabNote(struct); + tabNote.render_options.draw_stem = true; + tabNote.render_options.draw_dots = true; + return tabNote; + }); + // Stems should format down + f.Beam({ notes: notes.slice(0, 8), options: { autoStem: true } }); + // Stems should format up + f.Beam({ notes: notes.slice(8, 12), options: { autoStem: true } }); + const voice = f.Voice().setMode(_src_index__WEBPACK_IMPORTED_MODULE_1__.Voice.Mode.SOFT).addTickables(notes); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'All objects have been drawn'); +} +function complexWithAnnotation(options) { + const factory = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 500, 200); + const stave = factory.Stave({ y: 40 }); + const s1 = [ + { keys: ['e/4'], duration: '128', stem_direction: 1 }, + { keys: ['d/4'], duration: '16', stem_direction: 1 }, + { keys: ['e/4'], duration: '8', stem_direction: 1 }, + { keys: ['c/4', 'g/4'], duration: '32', stem_direction: 1 }, + { keys: ['c/4'], duration: '32', stem_direction: 1 }, + { keys: ['c/4'], duration: '32', stem_direction: 1 }, + { keys: ['c/4'], duration: '32', stem_direction: 1 }, + ]; + const s2 = [ + { keys: ['e/5'], duration: '128', stem_direction: -1 }, + { keys: ['d/5'], duration: '16', stem_direction: -1 }, + { keys: ['e/5'], duration: '8', stem_direction: -1 }, + { keys: ['c/5', 'g/5'], duration: '32', stem_direction: -1 }, + { keys: ['c/5'], duration: '32', stem_direction: -1 }, + { keys: ['c/5'], duration: '32', stem_direction: -1 }, + { keys: ['c/5'], duration: '32', stem_direction: -1 }, + ]; + const font = { + family: _src_index__WEBPACK_IMPORTED_MODULE_1__.Font.SERIF, + size: 14, + weight: _src_index__WEBPACK_IMPORTED_MODULE_1__.FontWeight.BOLD, + style: _src_index__WEBPACK_IMPORTED_MODULE_1__.FontStyle.ITALIC, + }; + const notes1 = s1.map((struct) => factory + .StaveNote(struct) // + .addModifier(factory.Annotation({ text: '1', vJustify: _src_index__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.TOP, font }), 0)); + const notes2 = s2.map((struct) => factory + .StaveNote(struct) // + .addModifier(factory.Annotation({ text: '3', vJustify: _src_index__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.BOTTOM, font }), 0)); + factory.Beam({ notes: notes1 }); + factory.Beam({ notes: notes2 }); + const voice = factory.Voice().setMode(_src_index__WEBPACK_IMPORTED_MODULE_1__.Voice.Mode.SOFT).addTickables(notes1).addTickables(notes2); + factory.Formatter().joinVoices([voice]).formatToStave([voice], stave, { stave: stave }); + factory.draw(); + ok(true, 'Complex beam annotations'); +} +function complexWithArticulation(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 500, 200); + const stave = f.Stave({ y: 40 }); + const s1 = [ + { keys: ['e/4'], duration: '128', stem_direction: 1 }, + { keys: ['d/4'], duration: '16', stem_direction: 1 }, + { keys: ['e/4'], duration: '8', stem_direction: 1 }, + { keys: ['c/4', 'g/4'], duration: '32', stem_direction: 1 }, + { keys: ['c/4'], duration: '32', stem_direction: 1 }, + { keys: ['c/4'], duration: '32', stem_direction: 1 }, + { keys: ['c/4'], duration: '32', stem_direction: 1 }, + ]; + const s2 = [ + { keys: ['e/5'], duration: '128', stem_direction: -1 }, + { keys: ['d/5'], duration: '16', stem_direction: -1 }, + { keys: ['e/5'], duration: '8', stem_direction: -1 }, + { keys: ['c/5', 'g/5'], duration: '32', stem_direction: -1 }, + { keys: ['c/5'], duration: '32', stem_direction: -1 }, + { keys: ['c/5'], duration: '32', stem_direction: -1 }, + { keys: ['c/5'], duration: '32', stem_direction: -1 }, + ]; + const notes1 = s1.map((struct) => f.StaveNote(struct).addModifier(f.Articulation({ type: 'am', position: 'above' }), 0)); + const notes2 = s2.map((struct) => f.StaveNote(struct).addModifier(f.Articulation({ type: 'a>', position: 'below' }), 0)); + f.Beam({ notes: notes1 }); + f.Beam({ notes: notes2 }); + const voice = f.Voice().setMode(_src_index__WEBPACK_IMPORTED_MODULE_1__.Voice.Mode.SOFT).addTickables(notes1).addTickables(notes2); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave, { stave: stave }); + f.draw(); + ok(true, 'Complex beam articulations'); +} +function complexWithArticulation2(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 500, 300); + const system = f.System(); + const s1 = [ + { keys: ['e/4'], duration: '128', stem_direction: 1 }, + { keys: ['d/4'], duration: '16', stem_direction: 1 }, + { keys: ['e/4'], duration: '8', stem_direction: 1 }, + { keys: ['c/4', 'g/4'], duration: '32', stem_direction: 1 }, + { keys: ['c/4'], duration: '32', stem_direction: 1 }, + { keys: ['c/4'], duration: '32', stem_direction: 1 }, + { keys: ['c/4'], duration: '32', stem_direction: 1 }, + ]; + const s2 = [ + { keys: ['e/5'], duration: '128', stem_direction: -1 }, + { keys: ['d/5'], duration: '16', stem_direction: -1 }, + { keys: ['e/5'], duration: '8', stem_direction: -1 }, + { keys: ['c/5', 'g/5'], duration: '32', stem_direction: -1 }, + { keys: ['c/5'], duration: '32', stem_direction: -1 }, + { keys: ['c/5'], duration: '32', stem_direction: -1 }, + { keys: ['c/5'], duration: '32', stem_direction: -1 }, + ]; + const notes1 = s1.map((struct) => f.StaveNote(struct).addModifier(f.Articulation({ type: 'am', position: 'above' }), 0)); + const notes2 = s2.map((struct) => f.StaveNote(struct).addModifier(f.Articulation({ type: 'a>', position: 'below' }), 0)); + const notes3 = s1.map((struct) => f.StaveNote(struct).addModifier(f.Articulation({ type: 'am', position: 'above' }), 0)); + const notes4 = s2.map((struct) => f.StaveNote(struct).addModifier(f.Articulation({ type: 'a>', position: 'below' }), 0)); + f.Beam({ notes: notes1 }); + f.Beam({ notes: notes2 }); + f.Beam({ notes: notes3 }); + f.Beam({ notes: notes4 }); + const voice1 = f.Voice().setMode(_src_index__WEBPACK_IMPORTED_MODULE_1__.Voice.Mode.SOFT).addTickables(notes1).addTickables(notes2); + const voice2 = f.Voice().setMode(_src_index__WEBPACK_IMPORTED_MODULE_1__.Voice.Mode.SOFT).addTickables(notes3).addTickables(notes4); + system.addStave({ voices: [voice1] }); + system.addStave({ voices: [voice2] }); + f.draw(); + ok(true, 'Complex beam articulations two staves'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(BeamTests); + + + +/***/ }), + +/***/ "./tests/bend_tests.ts": +/*!*****************************!*\ + !*** ./tests/bend_tests.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "BendTests": () => (/* binding */ BendTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_bend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/bend */ "./src/bend.ts"); +/* harmony import */ var _src_font__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/font */ "./src/font.ts"); +/* harmony import */ var _src_formatter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/formatter */ "./src/formatter.ts"); +/* harmony import */ var _src_modifiercontext__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/modifiercontext */ "./src/modifiercontext.ts"); +/* harmony import */ var _src_note__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/note */ "./src/note.ts"); +/* harmony import */ var _src_tabnote__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../src/tabnote */ "./src/tabnote.ts"); +/* harmony import */ var _src_tabstave__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../src/tabstave */ "./src/tabstave.ts"); +/* harmony import */ var _src_tickcontext__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../src/tickcontext */ "./src/tickcontext.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Bend Tests + + + + + + + + + +const BendTests = { + Start() { + QUnit.module('Bend'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Double Bends', doubleBends); + run('Reverse Bends', reverseBends); + run('Bend Phrase', bendPhrase); + run('Double Bends With Release', doubleBendsWithRelease); + run('Whako Bend', whackoBends); + // TODO: Rename 'Whako Bend' => 'Whacko' + }, +}; +// Helper functions for creating TabNote and Bend objects. +const note = (noteStruct) => new _src_tabnote__WEBPACK_IMPORTED_MODULE_6__.TabNote(noteStruct); +const bendWithText = (text, release = false) => new _src_bend__WEBPACK_IMPORTED_MODULE_1__.Bend(text, release); +const bendWithPhrase = (phrase) => new _src_bend__WEBPACK_IMPORTED_MODULE_1__.Bend('', false, phrase); +/** + * Bend two strings at a time. + */ +function doubleBends(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + ctx.font = '10pt Arial'; + const stave = new _src_tabstave__WEBPACK_IMPORTED_MODULE_7__.TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw(); + const notes = [ + note({ + positions: [ + { str: 2, fret: 10 }, + { str: 4, fret: 9 }, + ], + duration: 'q', + }) + .addModifier(bendWithText('Full'), 0) + .addModifier(bendWithText('1/2'), 1), + note({ + positions: [ + { str: 2, fret: 5 }, + { str: 3, fret: 5 }, + ], + duration: 'q', + }) + .addModifier(bendWithText('1/4'), 0) + .addModifier(bendWithText('1/4'), 1), + // This note is not visible because it is pushed off to the right by the ctx.scale(1.5, 1.5) at the top. + note({ + positions: [{ str: 4, fret: 7 }], + duration: 'h', + }), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_3__.Formatter.FormatAndDraw(ctx, stave, notes); + notes.forEach((note) => _src_note__WEBPACK_IMPORTED_MODULE_5__.Note.plotMetrics(ctx, note, 140)); + ok(true, 'Double Bends'); +} +function doubleBendsWithRelease(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 550, 240); + ctx.scale(1.0, 1.0); + ctx.setBackgroundFillStyle('#FFF'); + ctx.setFont('Arial', _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.Font.size); + const stave = new _src_tabstave__WEBPACK_IMPORTED_MODULE_7__.TabStave(10, 10, 550).addTabGlyph().setContext(ctx).draw(); + const notes = [ + note({ + positions: [ + { str: 1, fret: 10 }, + { str: 4, fret: 9 }, + ], + duration: 'q', + }) + .addModifier(bendWithText('1/2', true), 0) + .addModifier(bendWithText('Full', true), 1), + note({ + positions: [ + { str: 2, fret: 5 }, + { str: 3, fret: 5 }, + { str: 4, fret: 5 }, + ], + duration: 'q', + }) + .addModifier(bendWithText('1/4', true), 0) + .addModifier(bendWithText('Monstrous', true), 1) + .addModifier(bendWithText('1/4', true), 2), + note({ + positions: [{ str: 4, fret: 7 }], + duration: 'q', + }), + note({ + positions: [{ str: 4, fret: 7 }], + duration: 'q', + }), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_3__.Formatter.FormatAndDraw(ctx, stave, notes); + notes.forEach((note) => _src_note__WEBPACK_IMPORTED_MODULE_5__.Note.plotMetrics(ctx, note, 140)); + ok(true, 'Bend Release'); +} +/** + * Add the bend for note 1 before adding the bend for note 0, + * by swapping the two indexes in .addModifier(modifier, index). + * As a result, the bend curves intersect. + */ +function reverseBends(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + ctx.setFont('10pt Arial'); + const stave = new _src_tabstave__WEBPACK_IMPORTED_MODULE_7__.TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw(); + const notes = [ + note({ + positions: [ + { str: 2, fret: 10 }, + { str: 4, fret: 9 }, + ], + duration: 'w', + }) + .addModifier(bendWithText('Full'), 1) + .addModifier(bendWithText('1/2'), 0), + note({ + positions: [ + { str: 2, fret: 5 }, + { str: 3, fret: 5 }, + ], + duration: 'w', + }) + .addModifier(bendWithText('1/4'), 1) + .addModifier(bendWithText('1/4'), 0), + note({ + positions: [{ str: 4, fret: 7 }], + duration: 'w', + }), + ]; + for (let i = 0; i < notes.length; ++i) { + const note = notes[i]; + const mc = new _src_modifiercontext__WEBPACK_IMPORTED_MODULE_4__.ModifierContext(); + note.addToModifierContext(mc); + const tickContext = new _src_tickcontext__WEBPACK_IMPORTED_MODULE_8__.TickContext(); + tickContext + .addTickable(note) + .preFormat() + .setX(75 * i); + note.setStave(stave).setContext(ctx).draw(); + _src_note__WEBPACK_IMPORTED_MODULE_5__.Note.plotMetrics(ctx, note, 140); + ok(true, 'Bend ' + i); + } +} +function bendPhrase(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + ctx.font = _src_font__WEBPACK_IMPORTED_MODULE_2__.Font.SIZE + 'pt ' + _src_font__WEBPACK_IMPORTED_MODULE_2__.Font.SANS_SERIF; // Optionally use constants defined in Font. + const stave = new _src_tabstave__WEBPACK_IMPORTED_MODULE_7__.TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw(); + const phrase1 = [ + { type: _src_bend__WEBPACK_IMPORTED_MODULE_1__.Bend.UP, text: 'Full' }, + { type: _src_bend__WEBPACK_IMPORTED_MODULE_1__.Bend.DOWN, text: 'Monstrous' }, + { type: _src_bend__WEBPACK_IMPORTED_MODULE_1__.Bend.UP, text: '1/2' }, + { type: _src_bend__WEBPACK_IMPORTED_MODULE_1__.Bend.DOWN, text: '' }, + ]; + const bend1 = bendWithPhrase(phrase1).setContext(ctx); + const notes = [ + note({ + positions: [{ str: 2, fret: 10 }], + duration: 'w', + }).addModifier(bend1, 0), + ]; + for (let i = 0; i < notes.length; ++i) { + const note = notes[i]; + note.addToModifierContext(new _src_modifiercontext__WEBPACK_IMPORTED_MODULE_4__.ModifierContext()); + const tickContext = new _src_tickcontext__WEBPACK_IMPORTED_MODULE_8__.TickContext(); + tickContext + .addTickable(note) + .preFormat() + .setX(75 * i); + note.setStave(stave).setContext(ctx).draw(); + _src_note__WEBPACK_IMPORTED_MODULE_5__.Note.plotMetrics(ctx, note, 140); + ok(true, 'Bend ' + i); + } +} +function whackoBends(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 240); + ctx.scale(1.0, 1.0); + ctx.setBackgroundFillStyle('#FFF'); + ctx.setFont('Arial', _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.Font.size); + const stave = new _src_tabstave__WEBPACK_IMPORTED_MODULE_7__.TabStave(10, 10, 350).addTabGlyph().setContext(ctx).draw(); + const phrase1 = [ + { type: _src_bend__WEBPACK_IMPORTED_MODULE_1__.Bend.UP, text: 'Full' }, + { type: _src_bend__WEBPACK_IMPORTED_MODULE_1__.Bend.DOWN, text: '' }, + { type: _src_bend__WEBPACK_IMPORTED_MODULE_1__.Bend.UP, text: '1/2' }, + { type: _src_bend__WEBPACK_IMPORTED_MODULE_1__.Bend.DOWN, text: '' }, + ]; + const phrase2 = [ + { type: _src_bend__WEBPACK_IMPORTED_MODULE_1__.Bend.UP, text: 'Full' }, + { type: _src_bend__WEBPACK_IMPORTED_MODULE_1__.Bend.UP, text: 'Full' }, + { type: _src_bend__WEBPACK_IMPORTED_MODULE_1__.Bend.UP, text: '1/2' }, + { type: _src_bend__WEBPACK_IMPORTED_MODULE_1__.Bend.DOWN, text: '' }, + { type: _src_bend__WEBPACK_IMPORTED_MODULE_1__.Bend.DOWN, text: 'Full' }, + { type: _src_bend__WEBPACK_IMPORTED_MODULE_1__.Bend.DOWN, text: 'Full' }, + { type: _src_bend__WEBPACK_IMPORTED_MODULE_1__.Bend.UP, text: '1/2' }, + { type: _src_bend__WEBPACK_IMPORTED_MODULE_1__.Bend.DOWN, text: '' }, + ]; + const notes = [ + note({ + positions: [ + { str: 2, fret: 10 }, + { str: 3, fret: 9 }, + ], + duration: 'q', + }) + .addModifier(bendWithPhrase(phrase1), 0) + .addModifier(bendWithPhrase(phrase2), 1), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_3__.Formatter.FormatAndDraw(ctx, stave, notes); + _src_note__WEBPACK_IMPORTED_MODULE_5__.Note.plotMetrics(ctx, notes[0], 140); + ok(true, 'Whacko Bend & Release'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(BendTests); + + + +/***/ }), + +/***/ "./tests/boundingbox_tests.ts": +/*!************************************!*\ + !*** ./tests/boundingbox_tests.ts ***! + \************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "BoundingBoxTests": () => (/* binding */ BoundingBoxTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/index */ "./src/index.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Bounding Box Tests + + +const BoundingBoxTests = { + Start() { + QUnit.module('BoundingBox'); + test('Initialization Test', initialization); + test('Merging Text', merging); + }, +}; +function initialization() { + const bb = new _src_index__WEBPACK_IMPORTED_MODULE_1__.BoundingBox(4, 5, 6, 7); + equal(bb.getX(), 4, 'Bad X'); + equal(bb.getY(), 5, 'Bad Y'); + equal(bb.getW(), 6, 'Bad W'); + equal(bb.getH(), 7, 'Bad H'); + bb.setX(5); + equal(bb.getX(), 5, 'Bad X'); +} +function merging() { + const tests = [ + { + type: 'Intersection', + bb1: new _src_index__WEBPACK_IMPORTED_MODULE_1__.BoundingBox(10, 10, 10, 10), + bb2: new _src_index__WEBPACK_IMPORTED_MODULE_1__.BoundingBox(15, 20, 10, 10), + merged: new _src_index__WEBPACK_IMPORTED_MODULE_1__.BoundingBox(10, 10, 15, 20), + }, + { + type: '1 contains 2', + bb1: new _src_index__WEBPACK_IMPORTED_MODULE_1__.BoundingBox(10, 10, 30, 30), + bb2: new _src_index__WEBPACK_IMPORTED_MODULE_1__.BoundingBox(15, 15, 10, 10), + merged: new _src_index__WEBPACK_IMPORTED_MODULE_1__.BoundingBox(10, 10, 30, 30), + }, + { + type: '2 contains 1', + bb1: new _src_index__WEBPACK_IMPORTED_MODULE_1__.BoundingBox(15, 15, 10, 10), + bb2: new _src_index__WEBPACK_IMPORTED_MODULE_1__.BoundingBox(10, 10, 30, 30), + merged: new _src_index__WEBPACK_IMPORTED_MODULE_1__.BoundingBox(10, 10, 30, 30), + }, + ]; + tests.forEach((test) => { + const type = test.type; + const bb1 = test.bb1; + const bb2 = test.bb2; + const merged = test.merged; + bb1.mergeWith(bb2); + equal(bb1.getX(), merged.getX(), type + ' - Bad X'); + equal(bb1.getY(), merged.getY(), type + ' - Bad Y'); + equal(bb1.getW(), merged.getW(), type + ' - Bad W'); + equal(bb1.getH(), merged.getH(), type + ' - Bad H'); + }); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(BoundingBoxTests); + + + +/***/ }), + +/***/ "./tests/boundingboxcomputation_tests.ts": +/*!***********************************************!*\ + !*** ./tests/boundingboxcomputation_tests.ts ***! + \***********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "BoundingBoxComputationTests": () => (/* binding */ BoundingBoxComputationTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/index */ "./src/index.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// BoundingBoxComputation Tests + + +const BoundingBoxComputationTests = { + Start() { + QUnit.module('BoundingBoxComputation'); + test('Point Test', point); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + quadraticParams.forEach((params, index) => { + run(`Quadratic Test ${index}`, quadratic, params); + }); + cubicParams.forEach((params, index) => { + run(`Cubic Test ${index}`, cubic, params); + }); + }, +}; +function point() { + const bboxComp = new _src_index__WEBPACK_IMPORTED_MODULE_1__.BoundingBoxComputation(); + bboxComp.addPoint(2, 3); + equal(bboxComp.getX1(), 2, 'Bad X1'); + equal(bboxComp.getY1(), 3, 'Bad Y1'); + equal(bboxComp.width(), 0, 'Bad width'); + equal(bboxComp.height(), 0, 'Bad height'); + bboxComp.addPoint(-5, 7); + equal(bboxComp.getX1(), -5, 'Bad X1'); + equal(bboxComp.getY1(), 3, 'Bad Y1'); + equal(bboxComp.width(), 7, 'Bad width'); + equal(bboxComp.height(), 4, 'Bad height'); +} +/** + * Size the context to fit all the points and a small margin. + */ +function createContext(options) { + const points = options.params.points; + let w = points[0]; + let h = points[1]; + for (let i = 2; i < points.length; i += 2) { + w = Math.max(w, points[i]); + h = Math.max(h, points[i + 1]); + } + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, w + 20, h + 20); + const ctx = f.getContext(); + ctx.setLineCap('square'); + return ctx; +} +/** + * Draw a rectangle on the RenderContext. + */ +function rect(ctx, style, lineWidth, x, y, w, h) { + ctx.strokeStyle = style; + ctx.setLineWidth(lineWidth); + ctx.beginPath(); + ctx.moveTo(x, y); + ctx.lineTo(x + w, y); + ctx.lineTo(x + w, y + h); + ctx.lineTo(x, y + h); + ctx.lineTo(x, y); + ctx.stroke(); +} +// Each test consists of the control points for a single curve and its expected bounding box. +const quadraticParams = [ + { + points: [10, 10, 100, 20, 110, 110], + box: [10, 10, 100, 100], + }, + { + points: [110, 10, 60, 110, 10, 20], + box: [10, 10, 100, 52.63], + }, + { + points: [10, 10, 30, 20, 50, 30], + box: [10, 10, 40, 20], + }, + { + points: [100, 30, 30, 110, 20, 30], + box: [20, 30, 80, 40], + }, +]; +/** + * + */ +function quadratic(options) { + const points = options.params.points; + const box = options.params.box; + const ctx = createContext(options); + const [x0, y0, x1, y1, x2, y2] = points; + // Draw expected bounding box. + let [bx, by, bw, bh] = box; + rect(ctx, '#0f0', 5, bx, by, bw, bh); + // Compute the bounding box. + const bboxComp = new _src_index__WEBPACK_IMPORTED_MODULE_1__.BoundingBoxComputation(); + bboxComp.addQuadraticCurve(x0, y0, x1, y1, x2, y2); + // Draw computed bounding box. + [bx, by, bw, bh] = [bboxComp.getX1(), bboxComp.getY1(), bboxComp.width(), bboxComp.height()]; + rect(ctx, '#00f', 3, bx, by, bw, bh); + // Regression test for a prior bug: compute the bounding box again, + // this time using the Glyph.getOutlineBoundingBox code path. + const o = [_src_index__WEBPACK_IMPORTED_MODULE_1__.OutlineCode.MOVE, x0, -y0, _src_index__WEBPACK_IMPORTED_MODULE_1__.OutlineCode.QUADRATIC, x2, -y2, x1, -y1]; + const bbox = _src_index__WEBPACK_IMPORTED_MODULE_1__.Glyph.getOutlineBoundingBox(o, 1, 0, 0); + rect(ctx, '#fa0', 1, bbox.getX(), bbox.getY(), bbox.getW(), bbox.getH()); + // Draw curve. + ctx.setLineWidth(1); + ctx.fillStyle = '#000'; + _src_index__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderOutline(ctx, o, 1, 0, 0); + // Draw control points. + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(x0, y0); + ctx.lineTo(x1, y1); + ctx.lineTo(x2, y2); + ctx.stroke(); + // Check the expected and computed bounding boxes are close enough. + ok(Math.abs(bboxComp.getX1() - box[0]) < 0.01, `Bad X1: ${bboxComp.getX1()}`); + ok(Math.abs(bboxComp.getY1() - box[1]) < 0.01, `Bad Y1: ${bboxComp.getY1()}`); + ok(Math.abs(bboxComp.width() - box[2]) < 0.01, `Bad width: ${bboxComp.width()}`); + ok(Math.abs(bboxComp.height() - box[3]) < 0.01, `Bad height: ${bboxComp.height()}`); + ok(Math.abs(bbox.getX() - box[0]) < 0.01, `Bad X: ${bbox.getX()}`); + ok(Math.abs(bbox.getY() - box[1]) < 0.01, `Bad Y: ${bbox.getY()}`); + ok(Math.abs(bbox.getW() - box[2]) < 0.01, `Bad W: ${bbox.getW()}`); + ok(Math.abs(bbox.getH() - box[3]) < 0.01, `Bad H: ${bbox.getH()}`); +} +// Each test consists of the control points for a single curve and its expected bounding box. +const cubicParams = [ + { + points: [10, 10, 60, 20, 100, 60, 110, 110], + box: [10, 10, 100, 100], + }, + { + points: [10, 10, 35, 110, 85, 110, 110, 10], + box: [10, 10, 100, 75], + }, + { + points: [10, 110, 90, 10, 30, 10, 110, 110], + box: [10, 35, 100, 75], + }, + { + points: [10, 10, 110, 110, 110, 10, 10, 110], + box: [10, 10, 75, 100], + }, + { + points: [10, 10, 130, 110, -10, 110, 110, 10], + box: [10, 10, 100, 75], + }, + { + points: [50, 10, 10, 110, 110, 110, 74, 10], + box: [40.38, 10, 41.59, 75], + }, + { + points: [10, 30, 35, 60, 110, 110, 60, 10], + box: [10, 10, 66.82, 59.37], + }, + { + points: [210, 70, 10, 10, 190, 10, 120, 90], + box: [112.02, 27.23, 97.98, 62.77], + }, + { + points: [20, 10, 210, 90, 10, 90, 100, 38], + box: [20, 10, 85.33, 64.06], + }, + { + points: [60, 14, 10, 14, 90, 14, 70, 14], + box: [43.28, 14, 30.01, 0], + }, + { + points: [10, 60, 20, 100, 100, 20, 110, 60], + box: [10, 48.45, 100, 23.1], + }, +]; +function cubic(options) { + const points = options.params.points; + const box = options.params.box; + const ctx = createContext(options); + const [x0, y0, x1, y1, x2, y2, x3, y3] = points; + // Draw expected bounding box. + let [bx, by, bw, bh] = box; + rect(ctx, '#0f0', 5, bx, by, bw, bh); + // Compute the bounding box. + const bboxComp = new _src_index__WEBPACK_IMPORTED_MODULE_1__.BoundingBoxComputation(); + bboxComp.addBezierCurve(x0, y0, x1, y1, x2, y2, x3, y3); + // Draw computed bounding box. + [bx, by, bw, bh] = [bboxComp.getX1(), bboxComp.getY1(), bboxComp.width(), bboxComp.height()]; + rect(ctx, '#00f', 3, bx, by, bw, bh); + // Regression test for a prior bug: compute the bounding box again, + // this time using the Glyph.getOutlineBoundingBox code path. + const o = [_src_index__WEBPACK_IMPORTED_MODULE_1__.OutlineCode.MOVE, x0, -y0, _src_index__WEBPACK_IMPORTED_MODULE_1__.OutlineCode.BEZIER, x3, -y3, x1, -y1, x2, -y2]; + const bbox = _src_index__WEBPACK_IMPORTED_MODULE_1__.Glyph.getOutlineBoundingBox(o, 1, 0, 0); + rect(ctx, '#fa0', 1, bbox.getX(), bbox.getY(), bbox.getW(), bbox.getH()); + // Draw curve. + ctx.setLineWidth(1); + ctx.fillStyle = '#000'; + _src_index__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderOutline(ctx, o, 1, 0, 0); + // Draw control points. + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(x0, y0); + ctx.lineTo(x1, y1); + ctx.lineTo(x2, y2); + ctx.lineTo(x3, y3); + ctx.stroke(); + // Check the expected and computed bounding boxes are close enough. + ok(Math.abs(bboxComp.getX1() - box[0]) < 0.01, `Bad X1: ${bboxComp.getX1()}`); + ok(Math.abs(bboxComp.getY1() - box[1]) < 0.01, `Bad Y1: ${bboxComp.getY1()}`); + ok(Math.abs(bboxComp.width() - box[2]) < 0.01, `Bad width: ${bboxComp.width()}`); + ok(Math.abs(bboxComp.height() - box[3]) < 0.01, `Bad height: ${bboxComp.height()}`); + ok(Math.abs(bbox.getX() - box[0]) < 0.01, `Bad X: ${bbox.getX()}`); + ok(Math.abs(bbox.getY() - box[1]) < 0.01, `Bad Y: ${bbox.getY()}`); + ok(Math.abs(bbox.getW() - box[2]) < 0.01, `Bad W: ${bbox.getW()}`); + ok(Math.abs(bbox.getH() - box[3]) < 0.01, `Bad H: ${bbox.getH()}`); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(BoundingBoxComputationTests); + + + +/***/ }), + +/***/ "./tests/chordsymbol_tests.ts": +/*!************************************!*\ + !*** ./tests/chordsymbol_tests.ts ***! + \************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "ChordSymbolTests": () => (/* binding */ ChordSymbolTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_accidental__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/accidental */ "./src/accidental.ts"); +/* harmony import */ var _src_chordsymbol__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/chordsymbol */ "./src/chordsymbol.ts"); +/* harmony import */ var _src_font__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/font */ "./src/font.ts"); +/* harmony import */ var _src_formatter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/formatter */ "./src/formatter.ts"); +/* harmony import */ var _src_ornament__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/ornament */ "./src/ornament.ts"); +/* harmony import */ var _src_stave__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../src/stave */ "./src/stave.ts"); +/* harmony import */ var _src_stavenote__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../src/stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _src_tables__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../src/tables */ "./src/tables.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// ChordSymbol Tests + + + + + + + + + +const ChordSymbolTests = { + Start() { + QUnit.module('ChordSymbol'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Chord Symbol With Modifiers', withModifiers); + run('Chord Symbol Font Size Tests', fontSize); + run('Chord Symbol Kerning Tests', kern); + run('Top Chord Symbols', top); + run('Top Chord Symbols Justified', topJustify); + run('Bottom Chord Symbols', bottom); + run('Bottom Stem Down Chord Symbols', bottomStemDown); + run('Double Bottom Chord Symbols', doubleBottom); + }, +}; +// Options for customizing addGlyphOrText() or addGlyph(). +const superscript = { symbolModifier: _src_chordsymbol__WEBPACK_IMPORTED_MODULE_2__.ChordSymbol.symbolModifiers.SUPERSCRIPT }; +const subscript = { symbolModifier: _src_chordsymbol__WEBPACK_IMPORTED_MODULE_2__.ChordSymbol.symbolModifiers.SUBSCRIPT }; +// Helper function for creating StaveNotes. +const note = (factory, keys, duration, chordSymbol) => factory.StaveNote({ keys, duration }).addModifier(chordSymbol, 0); +/** Calculate the glyph's width in the current music font. */ +// How is this different from Glyph.getWidth()? The numbers don't match up. +function getGlyphWidth(glyphName) { + // `38` seems to be the `font_scale` specified in many classes, such as + // Accidental, Articulation, Ornament, Strokes. Does this mean `38pt`??? + // + // However, tables.ts specifies: + // NOTATION_FONT_SCALE: 39, + // TABLATURE_FONT_SCALE: 39, + const musicFont = _src_tables__WEBPACK_IMPORTED_MODULE_8__.Tables.currentMusicFont(); + const glyph = musicFont.getGlyphs()[glyphName]; + const widthInEm = (glyph.x_max - glyph.x_min) / musicFont.getResolution(); + return widthInEm * 38 * _src_font__WEBPACK_IMPORTED_MODULE_3__.Font.scaleToPxFrom.pt; +} +function withModifiers(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 750, 580); + const ctx = f.getContext(); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + function draw(chords, y) { + const notes = [ + note(f, ['c/4'], 'q', chords[0]).addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_5__.Ornament('doit')), + note(f, ['c/4'], 'q', chords[1]), + note(f, ['c/4'], 'q', chords[2]).addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_5__.Ornament('fall')), + note(f, ['c/4'], 'q', chords[3]), + ]; + const score = f.EasyScore(); + const voice = score.voice(notes, { time: '4/4' }); + const formatter = f.Formatter(); + formatter.joinVoices([voice]); + const voiceW = formatter.preCalculateMinTotalWidth([voice]); + const staffW = voiceW + _src_stave__WEBPACK_IMPORTED_MODULE_6__.Stave.defaultPadding + getGlyphWidth('gClef'); + formatter.format([voice], voiceW); + const staff = f.Stave({ x: 10, y, width: staffW }).addClef('treble').draw(); + voice.draw(ctx, staff); + } + let chords = []; + chords.push(f + .ChordSymbol({ fontSize: 10 }) + .addText('F7') + .addGlyph('leftParenTall') + .addGlyphOrText('b9', superscript) + .addGlyphOrText('#11', subscript) + .addGlyph('rightParenTall')); + chords.push(f.ChordSymbol({ fontSize: 12 }).addText('F7').addGlyphOrText('b9', superscript).addGlyphOrText('#11', subscript)); + chords.push(f + .ChordSymbol({ fontSize: 14 }) + .addText('F7') + .addGlyph('leftParenTall') + .addGlyphOrText('add 3', superscript) + .addGlyphOrText('omit 9', subscript) + .addGlyph('rightParenTall')); + chords.push(f + .ChordSymbol({ fontSize: 16 }) + .addText('F7') + .addGlyph('leftParenTall') + .addGlyphOrText('b9', superscript) + .addGlyphOrText('#11', subscript) + .addGlyph('rightParenTall')); + draw(chords, 40); + chords = []; + chords.push(f + .ChordSymbol({ fontSize: 10 }) + .setFontSize(10) + .addText('F7') + .addGlyphOrText('#11', superscript) + .addGlyphOrText('b9', subscript)); + chords.push(f.ChordSymbol({ fontSize: 12 }).addText('F7').addGlyphOrText('#11', superscript).addGlyphOrText('b9', subscript)); + chords.push(f.ChordSymbol({ fontSize: 14 }).addText('F7').addGlyphOrText('#11', superscript).addGlyphOrText('b9', subscript)); + chords.push(f + .ChordSymbol({ fontSize: 16 }) + .setFontSize(16) + .addText('F7') + .addGlyphOrText('#11', superscript) + .addGlyphOrText('b9', subscript)); + draw(chords, 140); + chords = [ + f.ChordSymbol({ fontSize: 10 }).addGlyphOrText('Ab').addGlyphOrText('7(#11b9)', superscript), + f.ChordSymbol({ fontSize: 14 }).addGlyphOrText('C#').addGlyphOrText('7(#11b9)', superscript), + f.ChordSymbol({ fontSize: 16 }).addGlyphOrText('Ab').addGlyphOrText('7(#11b9)', superscript), + f.ChordSymbol({ fontSize: 18 }).addGlyphOrText('C#').addGlyphOrText('7(#11b9)', superscript), + ]; + draw(chords, 240); + ok(true, 'Font Size Chord Symbol'); +} +function fontSize(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 750, 580); + const ctx = f.getContext(); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + function draw(chords, y) { + const stave = f.Stave({ x: 10, y, width: 450 }).addClef('treble'); + const notes = [ + note(f, ['c/4'], 'q', chords[0]), + note(f, ['c/4'], 'q', chords[1]), + note(f, ['c/4'], 'q', chords[2]), + note(f, ['c/4'], 'q', chords[3]), + ]; + const score = f.EasyScore(); + const voice = score.voice(notes, { time: '4/4' }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + } + let chords = []; + chords.push(f + .ChordSymbol({ fontSize: 10 }) + .addText('F7') + .addGlyph('leftParenTall') + .addGlyphOrText('b9', superscript) + .addGlyphOrText('#11', subscript) + .addGlyph('rightParenTall') + .setReportWidth(false)); + chords.push(f + .ChordSymbol({ fontSize: 12 }) + .addText('F7') + .addGlyphOrText('b9', superscript) + .addGlyphOrText('#11', subscript) + .setReportWidth(false)); + chords.push(f + .ChordSymbol({ fontSize: 14 }) + .addText('F7') + .addGlyph('leftParenTall') + .addGlyphOrText('add 3', superscript) + .addGlyphOrText('omit 9', subscript) + .addGlyph('rightParenTall') + .setReportWidth(false)); + chords.push(f + .ChordSymbol({ fontSize: 16 }) + .addText('F7') + .addGlyph('leftParenTall') + .addGlyphOrText('b9', superscript) + .addGlyphOrText('#11', subscript) + .addGlyph('rightParenTall') + .setReportWidth(false)); + draw(chords, 40); + chords = []; + chords.push(f + .ChordSymbol({ fontSize: 10 }) + .setFontSize(10) + .addText('F7') + .addGlyphOrText('#11', superscript) + .addGlyphOrText('b9', subscript)); + chords.push(f.ChordSymbol({ fontSize: 12 }).addText('F7').addGlyphOrText('#11', superscript).addGlyphOrText('b9', subscript)); + chords.push(f.ChordSymbol({ fontSize: 14 }).addText('F7').addGlyphOrText('#11', superscript).addGlyphOrText('b9', subscript)); + chords.push(f + .ChordSymbol({ fontSize: 16 }) + .setFontSize(16) + .addText('F7') + .addGlyphOrText('#11', superscript) + .addGlyphOrText('b9', subscript)); + draw(chords, 140); + chords = [ + f.ChordSymbol({ fontSize: 10 }).addGlyphOrText('Ab').addGlyphOrText('7(#11b9)', superscript), + f.ChordSymbol({ fontSize: 14 }).addGlyphOrText('C#').addGlyphOrText('7(#11b9)', superscript), + f.ChordSymbol({ fontSize: 16 }).addGlyphOrText('Ab').addGlyphOrText('7(#11b9)', superscript), + f.ChordSymbol({ fontSize: 18 }).addGlyphOrText('C#').addGlyphOrText('7(#11b9)', superscript), + ]; + draw(chords, 240); + ok(true, 'Font Size Chord Symbol'); +} +function kern(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 650 * 1.5, 650); + const ctx = f.getContext(); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + function draw(chords, y) { + const stave = f.Stave({ x: 10, y, width: 450 }).addClef('treble').setContext(ctx).draw(); + const notes = [ + note(f, ['C/4'], 'q', chords[0]), + note(f, ['C/4'], 'q', chords[1]), + note(f, ['C/4'], 'q', chords[2]), + note(f, ['C/4'], 'q', chords[3]), + ]; + const score = f.EasyScore(); + const voice = score.voice(notes, { time: '4/4' }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + } + let chords = [ + f.ChordSymbol().addText('A').addGlyphSuperscript('dim').setReportWidth(false), + f.ChordSymbol({ kerning: false, reportWidth: false }).addText('A').addGlyphSuperscript('dim'), + f.ChordSymbol({ hJustify: 'left', reportWidth: false }).addText('C').addGlyph('halfDiminished', superscript), + f.ChordSymbol({ reportWidth: false }).addText('D').addGlyph('halfDiminished', superscript), + ]; + draw(chords, 10); + chords = [ + f.ChordSymbol().addText('A').addGlyphSuperscript('dim'), + f.ChordSymbol({ kerning: false }).addText('A').addGlyphSuperscript('dim'), + f.ChordSymbol().addText('A').addGlyphSuperscript('+').addTextSuperscript('5'), + f.ChordSymbol().addText('G').addGlyphSuperscript('+').addTextSuperscript('5'), + ]; + draw(chords, 110); + chords = [ + f.ChordSymbol().addText('A').addGlyph('-'), + f.ChordSymbol().addText('E').addGlyph('-'), + f.ChordSymbol().addText('A').addGlyphOrText('(#11)', superscript), + f.ChordSymbol().addText('E').addGlyphOrText('(#9)', superscript), + ]; + draw(chords, 210); + chords = [ + f.ChordSymbol().addGlyphOrText('F/B').addGlyphOrText('b', superscript), + f.ChordSymbol().addText('E').addGlyphOrText('V/V'), + f.ChordSymbol().addText('A').addGlyphOrText('(#11)', superscript), + f.ChordSymbol().addText('E').addGlyphOrText('(#9)', superscript), + ]; + draw(chords, 310); + ok(true, 'Chord Symbol Kerning Tests'); +} +function top(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 650 * 1.5, 650); + const ctx = f.getContext(); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + function draw(c1, c2, y) { + const stave = f.Stave({ x: 10, y, width: 450 }).addClef('treble').setContext(ctx).draw(); + const notes = [ + note(f, ['e/4', 'a/4', 'd/5'], 'h', c1).addModifier(new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('b'), 0), + note(f, ['c/4', 'e/4', 'b/4'], 'h', c2), + ]; + const score = f.EasyScore(); + const voice = score.voice(notes, { time: '4/4' }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + } + let chord1 = f + .ChordSymbol({ reportWidth: false }) + .addText('F7') + .setHorizontal('left') + .addGlyphOrText('(#11b9)', superscript); + let chord2 = f + .ChordSymbol({ reportWidth: false }) + .addText('C') + .setHorizontal('left') + .addGlyphSuperscript('majorSeventh'); + draw(chord1, chord2, 40); + chord1 = f + .ChordSymbol() + .addText('F7') + .addTextSuperscript('(') + .addGlyphOrText('#11b9', superscript) + .addTextSuperscript(')'); + chord2 = f.ChordSymbol().addText('C').setHorizontal('left').addTextSuperscript('Maj.'); + draw(chord1, chord2, 140); + chord1 = f + .ChordSymbol() + .addText('F7') + .setHorizontal('left') + .addGlyphOrText('#11', superscript) + .addGlyphOrText('b9', subscript); + chord2 = f.ChordSymbol().addText('C').addTextSuperscript('sus4'); + draw(chord1, chord2, 240); + ok(true, 'Top Chord Symbol'); +} +function topJustify(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 500 * 1.5, 680); + const ctx = f.getContext(); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + function draw(chord1, chord2, y) { + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_6__.Stave(10, y, 450).addClef('treble').setContext(ctx).draw(); + const notes = [ + note(f, ['e/4', 'a/4', 'd/5'], 'h', chord1).addModifier(new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('b'), 0), + note(f, ['c/4', 'e/4', 'B/4'], 'h', chord2), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, stave, notes); + } + let chord1 = f.ChordSymbol().addText('F7').setHorizontal('left').addGlyphOrText('(#11b9)', superscript); + let chord2 = f.ChordSymbol({ hJustify: 'left' }).addText('C').addGlyphSuperscript('majorSeventh'); + draw(chord1, chord2, 40); + chord1 = f + .ChordSymbol({ hJustify: 'center' }) + .addText('F7') + .setHorizontal('left') + .addGlyphOrText('(#11b9)', superscript); + chord2 = f.ChordSymbol({ hJustify: 'center' }).addText('C').addTextSuperscript('Maj.'); + draw(chord1, chord2, 140); + chord1 = f + .ChordSymbol({ hJustify: 'right' }) + .addText('F7') + .setHorizontal('left') + .addGlyphOrText('#11', superscript) + .addGlyphOrText('b9', subscript); + chord2 = f.ChordSymbol({ hJustify: 'right' }).addText('C').addTextSuperscript('Maj.'); + draw(chord1, chord2, 240); + chord1 = f + .ChordSymbol({ hJustify: 'left' }) + .addText('F7') + .setHorizontal('left') + .addGlyphOrText('#11', superscript) + .addGlyphOrText('b9', subscript); + chord2 = f.ChordSymbol({ hJustify: 'centerStem' }).addText('C').addTextSuperscript('Maj.'); + draw(chord1, chord2, 340); + ok(true, 'Top Chord Justified'); +} +function bottom(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600 * 1.5, 230); + const ctx = f.getContext(); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + function draw(chords, y) { + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_6__.Stave(10, y, 400).addClef('treble').setContext(ctx).draw(); + const notes = [ + note(f, ['c/4', 'f/4', 'a/4'], 'q', chords[0]), + note(f, ['c/4', 'e/4', 'b/4'], 'q', chords[1]).addModifier(new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('b'), 2), + note(f, ['c/4', 'e/4', 'g/4'], 'q', chords[2]), + note(f, ['c/4', 'f/4', 'a/4'], 'q', chords[3]).addModifier(new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('#'), 1), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, stave, notes); + } + const chords = [ + f.ChordSymbol({ vJustify: 'bottom' }).addText('I').addTextSuperscript('6').addTextSubscript('4'), + f.ChordSymbol({ vJustify: 'bottom' }).addGlyphOrText('V'), + f.ChordSymbol({ vJustify: 'bottom' }).addLine(12), + f.ChordSymbol({ vJustify: 'bottom' }).addGlyphOrText('V/V'), + ]; + draw(chords, 10); + ok(true, 'Bottom Chord Symbol'); +} +function bottomStemDown(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600 * 1.5, 330); + const ctx = f.getContext(); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + function draw(chords, y) { + // Helper function to create a StaveNote with a ChordSymbol and the stem pointing down. + const note = (keys, duration, chordSymbol) => new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ keys, duration, stem_direction: -1 }).addModifier(chordSymbol, 0); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_6__.Stave(10, y, 400).addClef('treble').setContext(ctx).draw(); + const notes = [ + note(['c/4', 'f/4', 'a/4'], 'q', chords[0]), + note(['c/4', 'e/4', 'b/4'], 'q', chords[1]).addModifier(new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('b'), 2), + note(['c/4', 'e/4', 'g/4'], 'q', chords[2]), + note(['c/4', 'f/4', 'a/4'], 'q', chords[3]).addModifier(new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('#'), 1), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, stave, notes); + } + const chords = [ + f.ChordSymbol({ vJustify: 'bottom' }).addGlyphOrText('F'), + f.ChordSymbol({ vJustify: 'bottom' }).addGlyphOrText('C7'), + f.ChordSymbol({ vJustify: 'bottom' }).addLine(12), + f.ChordSymbol({ vJustify: 'bottom' }).addText('A').addGlyphSuperscript('dim'), + ]; + draw(chords, 10); + ok(true, 'Bottom Stem Down Chord Symbol'); +} +function doubleBottom(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600 * 1.5, 260); + const ctx = f.getContext(); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + function draw(chords, chords2, y) { + // Helper function to create a StaveNote with two ChordSymbols attached. + const note = (keys, duration, chordSymbol1, chordSymbol2) => new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ keys, duration }).addModifier(chordSymbol1, 0).addModifier(chordSymbol2, 0); + const stave = f.Stave({ x: 10, y, width: 450 }).addClef('treble').setContext(ctx).draw(); + const notes = [ + note(['c/4', 'f/4', 'a/4'], 'q', chords[0], chords2[0]), + note(['c/4', 'e/4', 'b/4'], 'q', chords[1], chords2[1]).addModifier(f.Accidental({ type: 'b' }), 2), + note(['c/4', 'e/4', 'g/4'], 'q', chords[2], chords2[2]), + note(['c/4', 'f/4', 'a/4'], 'q', chords[3], chords2[3]).addModifier(f.Accidental({ type: '#' }), 1), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, stave, notes); + } + const chords1 = [ + f.ChordSymbol({ vJustify: 'bottom' }).addText('I').addTextSuperscript('6').addTextSubscript('4'), + f.ChordSymbol({ vJustify: 'bottom' }).addGlyphOrText('V'), + f.ChordSymbol({ vJustify: 'bottom' }).addLine(12), + f.ChordSymbol({ vJustify: 'bottom' }).addGlyphOrText('V/V'), + ]; + const chords2 = [ + f.ChordSymbol({ vJustify: 'bottom' }).addText('T'), + f.ChordSymbol({ vJustify: 'bottom' }).addText('D'), + f.ChordSymbol({ vJustify: 'bottom' }).addText('D'), + f.ChordSymbol({ vJustify: 'bottom' }).addText('SD'), + ]; + draw(chords1, chords2, 10); + ok(true, '2 Bottom Chord Symbol'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(ChordSymbolTests); + + + +/***/ }), + +/***/ "./tests/clef_tests.ts": +/*!*****************************!*\ + !*** ./tests/clef_tests.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "ClefTests": () => (/* binding */ ClefTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Clef Tests + +const ClefTests = { + Start() { + QUnit.module('Clef'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Clef Test', draw); + run('Clef End Test', drawEnd); + run('Small Clef Test', drawSmall); + run('Small Clef End Test', drawSmallEnd); + run('Clef Change Test', drawClefChange); + }, +}; +function draw(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 800, 120); + f.Stave() + .addClef('treble') + .addClef('treble', 'default', '8va') + .addClef('treble', 'default', '8vb') + .addClef('alto') + .addClef('tenor') + .addClef('soprano') + .addClef('bass') + .addClef('bass', 'default', '8vb') + .addClef('mezzo-soprano') + .addClef('baritone-c') + .addClef('baritone-f') + .addClef('subbass') + .addClef('percussion') + .addClef('french') + .addEndClef('treble'); + f.draw(); + ok(true, 'all pass'); +} +function drawEnd(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 800, 120); + f.Stave() + .addClef('bass') + .addEndClef('treble') + .addEndClef('treble', 'default', '8va') + .addEndClef('treble', 'default', '8vb') + .addEndClef('alto') + .addEndClef('tenor') + .addEndClef('soprano') + .addEndClef('bass') + .addEndClef('bass', 'default', '8vb') + .addEndClef('mezzo-soprano') + .addEndClef('baritone-c') + .addEndClef('baritone-f') + .addEndClef('subbass') + .addEndClef('percussion') + .addEndClef('french'); + f.draw(); + ok(true, 'all pass'); +} +function drawSmall(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 800, 120); + f.Stave() + .addClef('treble', 'small') + .addClef('treble', 'small', '8va') + .addClef('treble', 'small', '8vb') + .addClef('alto', 'small') + .addClef('tenor', 'small') + .addClef('soprano', 'small') + .addClef('bass', 'small') + .addClef('bass', 'small', '8vb') + .addClef('mezzo-soprano', 'small') + .addClef('baritone-c', 'small') + .addClef('baritone-f', 'small') + .addClef('subbass', 'small') + .addClef('percussion', 'small') + .addClef('french', 'small') + .addEndClef('treble', 'small'); + f.draw(); + ok(true, 'all pass'); +} +function drawSmallEnd(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 800, 120); + f.Stave() + .addClef('bass', 'small') + .addEndClef('treble', 'small') + .addEndClef('treble', 'small', '8va') + .addEndClef('treble', 'small', '8vb') + .addEndClef('alto', 'small') + .addEndClef('tenor', 'small') + .addEndClef('soprano', 'small') + .addEndClef('bass', 'small') + .addEndClef('bass', 'small', '8vb') + .addEndClef('mezzo-soprano', 'small') + .addEndClef('baritone-c', 'small') + .addEndClef('baritone-f', 'small') + .addEndClef('subbass', 'small') + .addEndClef('percussion', 'small') + .addEndClef('french', 'small'); + f.draw(); + ok(true, 'all pass'); +} +function drawClefChange(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 800, 180); + const stave = f.Stave().addClef('treble'); + const notes = [ + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble' }), + f.ClefNote({ type: 'alto', options: { size: 'small' } }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'alto' }), + f.ClefNote({ type: 'tenor', options: { size: 'small' } }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'tenor' }), + f.ClefNote({ type: 'soprano', options: { size: 'small' } }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'soprano' }), + f.ClefNote({ type: 'bass', options: { size: 'small' } }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'bass' }), + f.ClefNote({ type: 'mezzo-soprano', options: { size: 'small' } }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'mezzo-soprano' }), + f.ClefNote({ type: 'baritone-c', options: { size: 'small' } }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'baritone-c' }), + f.ClefNote({ type: 'baritone-f', options: { size: 'small' } }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'baritone-f' }), + f.ClefNote({ type: 'subbass', options: { size: 'small' } }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'subbass' }), + f.ClefNote({ type: 'french', options: { size: 'small' } }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'french' }), + f.ClefNote({ type: 'treble', options: { size: 'small', annotation: '8vb' } }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble', octave_shift: -1 }), + f.ClefNote({ type: 'treble', options: { size: 'small', annotation: '8va' } }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble', octave_shift: 1 }), + ]; + const voice = f.Voice({ time: '12/4' }).addTickables(notes); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'all pass'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(ClefTests); + + + +/***/ }), + +/***/ "./tests/curve_tests.ts": +/*!******************************!*\ + !*** ./tests/curve_tests.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "CurveTests": () => (/* binding */ CurveTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_curve__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/curve */ "./src/curve.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Curve Tests + + +const CurveTests = { + Start() { + QUnit.module('Curve'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Simple Curve', simple); + run('Rounded Curve', rounded); + run('Thick Thin Curves', thickThin); + run('Top Curve', top); + }, +}; +/** + * Helper function. Each test case passes in a set of notes and + * a setupCurves() callback which uses Factory.Curve(...) to build the curves. + * Curves can be used to indicate slurs (legato articulation). + */ +function createTest(noteGroup1, noteGroup2, setupCurves) { + return (options) => { + const factory = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 350, 200); + const stave = factory.Stave({ y: 50 }); + const score = factory.EasyScore(); + // Use .reduce(concat) to flatten the two StaveNote[] into a single StaveNote[]. + const staveNotes = [ + score.beam(score.notes(...noteGroup1)), + score.beam(score.notes(...noteGroup2)), // group 2 + ].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat); + setupCurves(factory, staveNotes); + const voices = [score.voice(staveNotes, { time: '4/4' })]; + factory.Formatter().joinVoices(voices).formatToStave(voices, stave); + factory.draw(); + ok('Simple Curve'); + }; +} +const simple = createTest(['c4/8, f5, d5, g5', { stem: 'up' }], // beamGroup1 +['d6/8, f5, d5, g5', { stem: 'down' }], // beamGroup2 +(f, notes) => { + f.Curve({ + from: notes[0], + to: notes[3], + options: { + cps: [ + { x: 0, y: 10 }, + { x: 0, y: 50 }, + ], + }, + }); + f.Curve({ + from: notes[4], + to: notes[7], + options: { + cps: [ + { x: 0, y: 10 }, + { x: 0, y: 20 }, + ], + }, + }); +}); +const rounded = createTest(['c5/8, f4, d4, g5', { stem: 'up' }], // beamGroup1 +['d5/8, d6, d6, g5', { stem: 'down' }], // beamGroup2 +(f, notes) => { + f.Curve({ + from: notes[0], + to: notes[3], + options: { + x_shift: -10, + y_shift: 30, + cps: [ + { x: 0, y: 20 }, + { x: 0, y: 50 }, + ], + }, + }); + f.Curve({ + from: notes[4], + to: notes[7], + options: { + cps: [ + { x: 0, y: 50 }, + { x: 0, y: 50 }, + ], + }, + }); +}); +const thickThin = createTest(['c5/8, f4, d4, g5', { stem: 'up' }], // beamGroup1 +['d5/8, d6, d6, g5', { stem: 'down' }], // beamGroup2 +(f, notes) => { + f.Curve({ + from: notes[0], + to: notes[3], + options: { + thickness: 10, + x_shift: -10, + y_shift: 30, + cps: [ + { x: 0, y: 20 }, + { x: 0, y: 50 }, + ], + }, + }); + f.Curve({ + from: notes[4], + to: notes[7], + options: { + thickness: 0, + cps: [ + { x: 0, y: 50 }, + { x: 0, y: 50 }, + ], + }, + }); +}); +const top = createTest(['c5/8, f4, d4, g5', { stem: 'up' }], // beamGroup1 +['d5/8, d6, d6, g5', { stem: 'down' }], // beamGroup2 +(f, notes) => { + f.Curve({ + from: notes[0], + to: notes[7], + options: { + x_shift: -3, + y_shift: 10, + position: _src_curve__WEBPACK_IMPORTED_MODULE_1__.CurvePosition.NEAR_TOP, + position_end: _src_curve__WEBPACK_IMPORTED_MODULE_1__.CurvePosition.NEAR_HEAD, + cps: [ + { x: 0, y: 20 }, + { x: 40, y: 80 }, + ], + }, + }); +}); +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(CurveTests); + + + +/***/ }), + +/***/ "./tests/dot_tests.ts": +/*!****************************!*\ + !*** ./tests/dot_tests.ts ***! + \****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "DotTests": () => (/* binding */ DotTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_beam__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/beam */ "./src/beam.ts"); +/* harmony import */ var _src_dot__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/dot */ "./src/dot.ts"); +/* harmony import */ var _src_formatter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/formatter */ "./src/formatter.ts"); +/* harmony import */ var _src_modifiercontext__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/modifiercontext */ "./src/modifiercontext.ts"); +/* harmony import */ var _src_note__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/note */ "./src/note.ts"); +/* harmony import */ var _src_stave__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../src/stave */ "./src/stave.ts"); +/* harmony import */ var _src_stavenote__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../src/stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _src_tickcontext__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../src/tickcontext */ "./src/tickcontext.ts"); +/* harmony import */ var _src_voice__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../src/voice */ "./src/voice.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Dot Tests + + + + + + + + + + +const DotTests = { + Start() { + QUnit.module('Dot'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Basic', basic); + run('Multi Voice', multiVoice); + }, +}; +/** + * Helper function for the basic test case below. + */ +function showOneNote(note1, stave, ctx, x) { + const modifierContext = new _src_modifiercontext__WEBPACK_IMPORTED_MODULE_4__.ModifierContext(); + note1.setStave(stave).addToModifierContext(modifierContext); + new _src_tickcontext__WEBPACK_IMPORTED_MODULE_8__.TickContext().addTickable(note1).preFormat().setX(x); + note1.setContext(ctx).draw(); + _src_note__WEBPACK_IMPORTED_MODULE_5__.Note.plotMetrics(ctx, note1, 140); +} +function basic(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 1000, 240); + ctx.setFillStyle('#221'); + ctx.setStrokeStyle('#221'); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_6__.Stave(10, 10, 975); + stave.setContext(ctx); + stave.draw(); + const notes = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ keys: ['c/4', 'e/4', 'a/4', 'b/4'], duration: 'w' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ keys: ['a/4', 'b/4', 'c/5'], duration: '4', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ keys: ['g/4', 'a/4', 'b/4'], duration: '4', stem_direction: -1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ keys: ['e/4', 'f/4', 'b/4', 'c/5'], duration: '4' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ + keys: ['g/4', 'a/4', 'd/5', 'e/5', 'g/5'], + duration: '4', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ keys: ['g/4', 'b/4', 'd/5', 'e/5'], duration: '4', stem_direction: -1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ keys: ['e/4', 'g/4', 'b/4', 'c/5'], duration: '4', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ keys: ['d/4', 'e/4', 'f/4', 'a/4', 'c/5', 'e/5', 'g/5'], duration: '2' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ + keys: ['f/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5', 'g/5'], + duration: '16', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ keys: ['f/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5', 'g/5'], duration: '16', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ + keys: ['e/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5', 'f/5'], + duration: '16', + stem_direction: 1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ + keys: ['e/4', 'g/4', 'a/4', 'b/4', 'c/5'], + duration: '16', + stem_direction: 1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ keys: ['e/4', 'a/4', 'b/4', 'c/5'], duration: '16', stem_direction: 1 }), + ]; + _src_dot__WEBPACK_IMPORTED_MODULE_2__.Dot.buildAndAttach(notes, { all: true }); + _src_dot__WEBPACK_IMPORTED_MODULE_2__.Dot.buildAndAttach([notes[7], notes[8], notes[9]], { all: true }); + _src_dot__WEBPACK_IMPORTED_MODULE_2__.Dot.buildAndAttach([notes[8], notes[9]], { all: true }); + const beam = new _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam(notes.slice(notes.length - 2)); + for (let i = 0; i < notes.length; i++) { + showOneNote(notes[i], stave, ctx, 30 + i * 65); + const dots = notes[i].getModifiersByType('Dot'); + ok(dots.length > 0, 'Note ' + i + ' has dots'); + for (let j = 0; j < dots.length; ++j) { + ok(dots[j].getWidth() > 0, 'Dot ' + j + ' has width set'); + } + } + beam.setContext(ctx).draw(); + _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.plotLegendForNoteWidth(ctx, 890, 140); + ok(true, 'Full Dot'); +} +function multiVoice(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 750, 300); + ctx.setFillStyle('#221'); + ctx.setStrokeStyle('#221'); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_6__.Stave(30, 45, 700).setContext(ctx).draw(); + const notes1 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: '2', stem_direction: -1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ keys: ['c/4', 'e/4', 'c/5'], duration: '2', stem_direction: -1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ keys: ['d/4', 'c/5', 'd/5'], duration: '2', stem_direction: -1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ keys: ['d/4', 'c/5', 'd/5'], duration: '8', stem_direction: -1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ keys: ['d/4', 'c/5', 'd/5'], duration: '8', stem_direction: -1 }), + ]; + _src_dot__WEBPACK_IMPORTED_MODULE_2__.Dot.buildAndAttach([notes1[0], notes1[2], notes1[3], notes1[4]], { all: true }); + _src_dot__WEBPACK_IMPORTED_MODULE_2__.Dot.buildAndAttach([notes1[0], notes1[2], notes1[3], notes1[4]], { all: true }); + _src_dot__WEBPACK_IMPORTED_MODULE_2__.Dot.buildAndAttach([notes1[1]], { index: 0 }); + _src_dot__WEBPACK_IMPORTED_MODULE_2__.Dot.buildAndAttach([notes1[1]], { index: 0 }); + _src_dot__WEBPACK_IMPORTED_MODULE_2__.Dot.buildAndAttach([notes1[1]], { index: 1 }); + _src_dot__WEBPACK_IMPORTED_MODULE_2__.Dot.buildAndAttach([notes1[1]], { index: 1 }); + _src_dot__WEBPACK_IMPORTED_MODULE_2__.Dot.buildAndAttach([notes1[1]], { index: 2 }); + _src_dot__WEBPACK_IMPORTED_MODULE_2__.Dot.buildAndAttach([notes1[1]], { index: 2 }); + _src_dot__WEBPACK_IMPORTED_MODULE_2__.Dot.buildAndAttach([notes1[1]], { index: 2 }); + _src_dot__WEBPACK_IMPORTED_MODULE_2__.Dot.buildAndAttach([notes1[2], notes1[3], notes1[4]]); + const notes2 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ keys: ['d/5', 'a/5', 'b/5'], duration: '2', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ keys: ['d/5', 'a/5', 'b/5'], duration: '4', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ keys: ['d/5', 'a/5', 'b/5'], duration: '4', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ keys: ['d/5', 'g/5', 'a/5', 'b/5'], duration: '8', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_7__.StaveNote({ keys: ['d/5', 'a/5', 'b/5'], duration: '8', stem_direction: 1 }), + ]; + _src_dot__WEBPACK_IMPORTED_MODULE_2__.Dot.buildAndAttach(notes2, { all: true }); + _src_dot__WEBPACK_IMPORTED_MODULE_2__.Dot.buildAndAttach([notes2[1]], { all: true }); + const voice1 = new _src_voice__WEBPACK_IMPORTED_MODULE_9__.Voice().setMode(_src_voice__WEBPACK_IMPORTED_MODULE_9__.Voice.Mode.SOFT).addTickables(notes1); + const voice2 = new _src_voice__WEBPACK_IMPORTED_MODULE_9__.Voice().setMode(_src_voice__WEBPACK_IMPORTED_MODULE_9__.Voice.Mode.SOFT).addTickables(notes2); + const formatter = new _src_formatter__WEBPACK_IMPORTED_MODULE_3__.Formatter().joinVoices([voice1, voice2]); + formatter.format([voice1, voice2], 700); + voice1.draw(ctx, stave); + voice2.draw(ctx, stave); + notes1.forEach((note) => _src_note__WEBPACK_IMPORTED_MODULE_5__.Note.plotMetrics(ctx, note, 190)); + notes2.forEach((note) => _src_note__WEBPACK_IMPORTED_MODULE_5__.Note.plotMetrics(ctx, note, 20)); + _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.plotLegendForNoteWidth(ctx, 620, 220); + ok(true, 'Full Dot'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(DotTests); + + + +/***/ }), + +/***/ "./tests/easyscore_tests.ts": +/*!**********************************!*\ + !*** ./tests/easyscore_tests.ts ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "EasyScoreTests": () => (/* binding */ EasyScoreTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_articulation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/articulation */ "./src/articulation.ts"); +/* harmony import */ var _src_easyscore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/easyscore */ "./src/easyscore.ts"); +/* harmony import */ var _src_frethandfinger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/frethandfinger */ "./src/frethandfinger.ts"); +/* harmony import */ var _src_modifier__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/modifier */ "./src/modifier.ts"); +/* harmony import */ var _src_parenthesis__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/parenthesis */ "./src/parenthesis.ts"); +/* harmony import */ var _src_staveconnector__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../src/staveconnector */ "./src/staveconnector.ts"); +/* harmony import */ var _src_stem__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../src/stem */ "./src/stem.ts"); +/* harmony import */ var _src_tuplet__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../src/tuplet */ "./src/tuplet.ts"); +// [VexFlow](https://vexflow.com/) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// EasyScore Tests + + + + + + + + + +const EasyScoreTests = { + Start() { + QUnit.module('EasyScore'); + test('Basic', basic); + test('Accidentals', accidentals); + test('Durations', durations); + test('Chords', chords); + test('Dots', dots); + test('Types', types); + test('Options', options); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Draw Basic', drawBasicTest); + run('Draw Different KeySignature', drawDiffKeysig); + run('Draw Basic Muted', drawBasicMutedTest); + run('Draw Basic Harmonic', drawBasicHarmonicTest); + run('Draw Basic Slash', drawBasicSlashTest); + run('Draw Ghostnote Basic', drawGhostBasicTest); + run('Draw Ghostnote Dotted', drawGhostDottedTest); + run('Draw Parenthesised', drawParenthesisedTest); + run('Draw Accidentals', drawAccidentalsTest); + run('Draw Beams', drawBeamsTest); + run('Draw Tuplets', drawTupletsTest); + run('Draw Dots', drawDotsTest); + run('Draw Options', drawOptionsTest); + run('Draw Fingerings', drawFingeringsTest); + run('Keys', keys); + }, +}; +/** + * Use Function.prototype.bind() to create shortcut methods. + * This can improve the readability of your EasyScore code. + */ +function createShortcuts(score) { + return { + voice: score.voice.bind(score), + notes: score.notes.bind(score), + beam: score.beam.bind(score), + tuplet: score.tuplet.bind(score), + }; +} +/** + * Test case verifies: + * - all strings in `mustPass` parse correctly + * - all strings in `mustFail` fail to parse (i.e., Result.success is `false`). + */ +function basic() { + const score = new _src_easyscore__WEBPACK_IMPORTED_MODULE_2__.EasyScore(); + const mustPass = ['c4', 'c#4', 'c4/r', 'c#5', 'c3/m', 'c3//m', 'c3//h', 'c3/s', 'c3//s', 'c3/g', 'c3//g']; + const mustFail = ['', '()', '7', '(c#4 e5 g6']; + mustPass.forEach((line) => equal(score.parse(line).success, true, line)); + mustFail.forEach((line) => equal(score.parse(line).success, false, line)); +} +function accidentals() { + const score = new _src_easyscore__WEBPACK_IMPORTED_MODULE_2__.EasyScore(); + const mustPass = [ + 'c3', + 'c##3, cb3', + 'Cn3', + 'f3//m', + '(c##3 cbb3 cn3), cb3', + 'cbbs7', + 'cbb7', + 'cbss7', + 'cbs7', + 'cb7', + 'cdb7', + 'cd7', + 'c##7', + 'c#7', + 'cn7', + 'c++-7', + 'c++7', + 'c+-7', + 'c+7', + '(cbs3 bbs3 dbs3), ebs3', + '(cd7 cbb3 cn3), cb3', + 'co7', + 'ck7', + ]; + const mustFail = [ + 'ct3', + 'cdbb7', + '(cq cbb3 cn3), cb3', + '(cdd7 cbb3 cn3), cb3', + 'cbbbs7', + 'cbbss7', + 'cbsss7', + 'csbs7', + 'cddb7', + 'cddbb7', + 'cdd7', + 'c##b7', + 'c#bs7', + 'cnb#7', + 'c+#+b-d7', + 'c+--7', + 'c++--7', + 'c+++7', + 'cbk7', + 'cok7', + 'cko7', + 'c#s7', + ]; + mustPass.forEach((line) => equal(score.parse(line).success, true, line)); + mustFail.forEach((line) => equal(score.parse(line).success, false, line)); +} +function durations() { + const score = new _src_easyscore__WEBPACK_IMPORTED_MODULE_2__.EasyScore(); + const mustPass = ['c3/4', 'c##3/w, cb3', 'c##3/w, cb3/q', 'c##3/q, cb3/32', '(c##3 cbb3 cn3), cb3']; + const mustFail = ['Cn3/]', '/', '(cq cbb3 cn3), cb3', '(cdd7 cbb3 cn3), cb3']; + mustPass.forEach((line) => equal(score.parse(line).success, true, line)); + mustFail.forEach((line) => equal(score.parse(line).success, false, line)); +} +function chords() { + const score = new _src_easyscore__WEBPACK_IMPORTED_MODULE_2__.EasyScore(); + const mustPass = [ + '(c5)', + '(c3 e0 g9)', + '(c##4 cbb4 cn4)/w, (c#5 cb2 a3)/32', + '(d##4 cbb4 cn4)/w/r, (c#5 cb2 a3)', + '(c##4 cbb4 cn4)/4, (c#5 cb2 a3)', + '(c##4 cbb4 cn4)/m, (c#5 cb2 a3)', + ]; + const mustFail = ['(c)']; + mustPass.forEach((line) => equal(score.parse(line).success, true, line)); + mustFail.forEach((line) => equal(score.parse(line).success, false, line)); +} +function dots() { + const score = new _src_easyscore__WEBPACK_IMPORTED_MODULE_2__.EasyScore(); + const mustPass = [ + 'c3/4.', + 'c##3/w.., cb3', + 'f##3/s, cb3/q...', + 'c##3/q, cb3/32', + '(c##3 cbb3 cn3)., cb3', + '(c5).', + '(c##4 cbb4 cn4)/w.., (c#5 cb2 a3)/32', + ]; + const mustFail = ['.', 'c.#', 'c#4./4']; + mustPass.forEach((line) => equal(score.parse(line).success, true, line)); + mustFail.forEach((line) => equal(score.parse(line).success, false, line)); +} +function types() { + const score = new _src_easyscore__WEBPACK_IMPORTED_MODULE_2__.EasyScore(); + const mustPass = ['c3/4/m.', 'c##3//r.., cb3', 'c##3/m.., cb3', 'c##3/r.., cb3', 'd##3/w/s, cb3/q...', 'Fb4']; + const mustFail = ['c4/q/U', '(c##4, cbb4 cn4)/w.., (c#5 cb2 a3)/32', 'z#3']; + mustPass.forEach((line) => equal(score.parse(line).success, true, line)); + mustFail.forEach((line) => equal(score.parse(line).success, false, line)); +} +function options() { + const score = new _src_easyscore__WEBPACK_IMPORTED_MODULE_2__.EasyScore(); + const mustPass = [ + 'c3/4.[foo="bar"]', + 'c##3/w.., cb3[id="blah"]', + 'c##3/q, cb3/32', + '(c##3 cbb3 cn3).[blah="bod4o"], cb3', + '(c5)[fooooo="booo"]', + 'c#5[id="foobar"]', + ]; + const mustFail = ['.[', 'f##3/w[], cb3/q...']; + mustPass.forEach((line) => equal(score.parse(line).success, true, line)); + mustFail.forEach((line) => equal(score.parse(line).success, false, line)); +} +function drawBasicTest(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 350); + const score = f.EasyScore(); + const system = f.System(); + const { voice, notes } = createShortcuts(score); + system + .addStave({ + voices: [ + voice(notes('(d4 e4 g4)/q, c4/q, c4/q/r, c4/q', { stem: 'down' })), + voice(notes('c#5/h., c5/q', { stem: 'up' })), + ], + }) + .addClef('treble'); + system + .addStave({ + voices: [voice(notes('c#3/q, cn3/q, bb3/q, d##3/q', { clef: 'bass' }))], + }) + .addClef('bass'); + system.addConnector().setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_6__.StaveConnector.type.BRACKET); + f.draw(); + expect(0); +} +function drawDiffKeysig(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 350); + const score = f.EasyScore(); + const system = f.System(); + const { voice, notes } = createShortcuts(score); + system + .addStave({ + voices: [ + voice(notes('(d4 e4 g4)/q, c4/q, c4/q/r, c4/q', { stem: 'down' })), + voice(notes('c5/h., c5/q', { stem: 'up' })), + ], + }) + .addClef('treble') + .addTimeSignature('4/4') + .addKeySignature('D'); + system + .addStave({ + voices: [voice(notes('c#3/q, cn3/q, bb3/q, d##3/q', { clef: 'bass' }))], + }) + .addClef('bass') + .addTimeSignature('4/4'); + system.addConnector().setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_6__.StaveConnector.type.BRACKET); + f.draw(); + expect(0); +} +function drawBasicMutedTest(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 350); + const score = f.EasyScore(); + const system = f.System(); + const { voice, notes } = createShortcuts(score); + system + .addStave({ + voices: [ + voice(notes('(d4 e4 g4)/q/m, c4/q/m, c4/q/r, c4/q/m', { stem: 'down' })), + voice(notes('c#5/h/m., c5/q/m', { stem: 'up' })), + ], + }) + .addClef('treble'); + system + .addStave({ + voices: [voice(notes('c#3/q/m, cn3/q/m, bb3/q/m, d##3/q/m', { clef: 'bass' }))], + }) + .addClef('bass'); + system.addConnector().setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_6__.StaveConnector.type.BRACKET); + f.draw(); + expect(0); +} +function drawBasicHarmonicTest(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 350); + const score = f.EasyScore(); + const system = f.System(); + const { voice, notes } = createShortcuts(score); + system + .addStave({ + voices: [ + voice(notes('(d4 e4 g4)/q/h, c4/q/h, c4/q/r, c4/q/h', { stem: 'down' })), + voice(notes('c#5/h/h., c5/q/h', { stem: 'up' })), + ], + }) + .addClef('treble'); + system + .addStave({ + voices: [voice(notes('c#3/q/h, cn3/q/h, bb3/q/h, d##3/q/h', { clef: 'bass' }))], + }) + .addClef('bass'); + system.addConnector().setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_6__.StaveConnector.type.BRACKET); + f.draw(); + expect(0); +} +function drawBasicSlashTest(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 350); + const score = f.EasyScore(); + const system = f.System(); + const { voice, notes } = createShortcuts(score); + system + .addStave({ + voices: [ + voice(notes('(d4 e4 g4)/q/s, c4/q/s, c4/q/r, c4/q/s', { stem: 'down' })), + voice(notes('c#5/h/s., c5/q/s', { stem: 'up' })), + ], + }) + .addClef('treble'); + system + .addStave({ + voices: [voice(notes('c#3/q/s, cn3/q/s, bb3/q/s, d##3/q/s', { clef: 'bass' }))], + }) + .addClef('bass'); + system.addConnector().setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_6__.StaveConnector.type.BRACKET); + f.draw(); + expect(0); +} +function drawGhostBasicTest(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 550); + const score = f.EasyScore(); + const system = f.System(); + system.addStave({ + voices: [ + score.voice([ + ...score.notes('f#5/4, f5, db5, c5', { stem: 'up' }), + ...score.beam(score.notes('c5/8, d5, fn5, e5', { stem: 'up' })), + ...score.beam(score.notes('d5, c5', { stem: 'up' })), + ], { time: '7/4' }), + score.voice(score.notes('c4/h/g, f4/4, c4/4/g, e4/4, c4/8/g, d##4/8, c4/8, c4/8', { stem: 'down' }), { + time: '7/4', + }), + ], + }); + f.draw(); + expect(0); +} +function drawGhostDottedTest(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 550); + const score = f.EasyScore(); + const system = f.System(); + system.addStave({ + voices: [ + score.voice([ + ...score.notes('c4/4/g., fbb5/8, d5/4', { stem: 'up' }), + ...score.beam(score.notes('c5/8, c#5/16, d5/16', { stem: 'up' })), + ...score.notes('c4/2/g.., fn5/8', { stem: 'up' }), + ], { time: '8/4' }), + score.voice([ + ...score.notes('f#4/4', { stem: 'down' }), + ...score.beam(score.notes('e4/8, d4/8', { stem: 'down' })), + ...score.notes('c4/4/g.., cb4/16, c#4/h, d4/4', { stem: 'down' }), + ...score.beam(score.notes('fn4/8, e4/8', { stem: 'down' })), + ], { time: '8/4' }), + ], + }); + f.draw(); + expect(0); +} +function drawParenthesisedTest(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 350); + const score = f.EasyScore(); + const system = f.System(); + const { voice, notes } = createShortcuts(score); + const notes1 = notes('(d4 e4 g4)/q, c4/q, c4/q/r, c4/q', { stem: 'down' }); + _src_parenthesis__WEBPACK_IMPORTED_MODULE_5__.Parenthesis.buildAndAttach([notes1[0], notes1[3]]); + const notes2 = notes('c#5/h., c5/q', { stem: 'down' }); + _src_parenthesis__WEBPACK_IMPORTED_MODULE_5__.Parenthesis.buildAndAttach([notes2[0], notes2[1]]); + system + .addStave({ + voices: [voice(notes1), voice(notes2)], + }) + .addClef('treble'); + const notes3 = notes('c#3/q, cn3/q, bb3/q, d##3/q', { stem: 'down' }); + _src_parenthesis__WEBPACK_IMPORTED_MODULE_5__.Parenthesis.buildAndAttach(notes3); + system + .addStave({ + voices: [voice(notes3)], + }) + .addClef('bass'); + system.addConnector().setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_6__.StaveConnector.type.BRACKET); + f.draw(); + expect(0); +} +function drawAccidentalsTest(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 350); + const score = f.EasyScore(); + const system = f.System(); + const { voice, notes } = createShortcuts(score); + system + .addStave({ + voices: [ + voice(notes('(cbbs4 ebb4 gbss4)/q, cbs4/q, cdb4/q/r, cd4/q', { stem: 'down' })), + voice(notes('c++-5/h., c++5/q', { stem: 'up' })), + ], + }) + .addClef('treble'); + system + .addStave({ + voices: [voice(notes('c+-3/q, c+3/q, bb3/q, d##3/q', { clef: 'bass' }))], + }) + .addClef('bass'); + system.addConnector().setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_6__.StaveConnector.type.BRACKET); + f.draw(); + expect(0); +} +function drawBeamsTest(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 250); + const score = f.EasyScore(); + const system = f.System(); + const { voice, notes, beam } = createShortcuts(score); + system + .addStave({ + voices: [ + voice(notes('(c4 e4 g4)/q, c4/q, c4/q/r, c4/q', { stem: 'down' })), + voice([...notes('c#5/h.', { stem: 'up' }), ...beam(notes('c5/8, c5/8', { stem: 'up' }))]), + ], + }) + .addClef('treble'); + f.draw(); + expect(0); +} +function drawTupletsTest(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 250); + const score = f.EasyScore(); + const system = f.System(); + const { voice, notes, tuplet, beam } = createShortcuts(score); + // Voice 1, with stems pointed down. + const v1_tuplet = tuplet(notes('(c4 e4 g4)/q, cbb4/q, c4/q', { stem: 'down' }), { + location: _src_tuplet__WEBPACK_IMPORTED_MODULE_8__.Tuplet.LOCATION_BOTTOM, + }); + const v1_halfNote = notes('c4/h', { stem: 'down' }); + const v1 = voice([...v1_tuplet, ...v1_halfNote]); + // Voice 2, with stems pointed up. + const v2_halfNote = notes('c#5/h.', { stem: 'up' }); + const v2_tuplet = tuplet(beam(notes('cb5/8, cn5/8, c5/8', { stem: 'up' }))); + const v2 = voice([...v2_halfNote, ...v2_tuplet]); + system.addStave({ voices: [v1, v2] }).addClef('treble'); + f.draw(); + expect(0); +} +function drawDotsTest(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 250); + const score = f.EasyScore(); + const system = f.System(); + const { voice, notes } = createShortcuts(score); + system + .addStave({ + voices: [voice(notes('(c4 e4 g4)/8., (c4 e4 g4)/8.., (c4 e4 g4)/8..., (c4 e4 g4)/8...., (c4 e4 g4)/16...'))], + }) + .addClef('treble'); + f.draw(); + expect(0); +} +function drawOptionsTest(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 500, 200); + const score = f.EasyScore(); + const system = f.System(); + const notes = score.notes('B4/h[id="foobar", class="red,bold", stem="up", articulations="staccato.below,tenuto"], B4/q[articulations="accent.above"], B4/q[stem="down"]'); + system.addStave({ voices: [score.voice(notes)] }); + f.draw(); + const note0 = notes[0]; + const note1 = notes[1]; + const note0_modifier0 = note0.getModifiers()[0]; + const note0_modifier1 = note0.getModifiers()[1]; + const note1_modifier0 = note1.getModifiers()[0]; + equal(note0.getAttribute('id'), 'foobar'); + ok(note0.hasClass('red')); + ok(note0.hasClass('bold')); + equal(note0_modifier0.getCategory(), _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation.CATEGORY); + equal(note0_modifier0.type, 'a.'); + equal(note0_modifier0.getPosition(), _src_modifier__WEBPACK_IMPORTED_MODULE_4__.Modifier.Position.BELOW); + equal(note0_modifier1.getCategory(), _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation.CATEGORY); + equal(note0_modifier1.type, 'a-'); + equal(note0_modifier1.getPosition(), _src_modifier__WEBPACK_IMPORTED_MODULE_4__.Modifier.Position.ABOVE); + equal(note0.getStemDirection(), _src_stem__WEBPACK_IMPORTED_MODULE_7__.Stem.UP); + equal(note1_modifier0.getCategory(), _src_articulation__WEBPACK_IMPORTED_MODULE_1__.Articulation.CATEGORY); + equal(note1_modifier0.type, 'a>'); + equal(note1_modifier0.getPosition(), _src_modifier__WEBPACK_IMPORTED_MODULE_4__.Modifier.Position.ABOVE); + equal(notes[2].getStemDirection(), _src_stem__WEBPACK_IMPORTED_MODULE_7__.Stem.DOWN); +} +function drawFingeringsTest(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 500, 200); + const score = f.EasyScore(); + const system = f.System(); + const notes = score.notes('C4/q[fingerings="1"], E4[fingerings="3.above"], G4[fingerings="5.below"], (C4 E4 G4)[fingerings="1,3,5"]'); + system.addStave({ voices: [score.voice(notes)] }); + f.draw(); + const note0_modifier0 = notes[0].getModifiers()[0]; + equal(note0_modifier0.getCategory(), _src_frethandfinger__WEBPACK_IMPORTED_MODULE_3__.FretHandFinger.CATEGORY); + equal(note0_modifier0.getFretHandFinger(), '1'); + equal(note0_modifier0.getPosition(), _src_modifier__WEBPACK_IMPORTED_MODULE_4__.Modifier.Position.LEFT); + const note1_modifier0 = notes[1].getModifiers()[0]; + equal(note1_modifier0.getCategory(), _src_frethandfinger__WEBPACK_IMPORTED_MODULE_3__.FretHandFinger.CATEGORY); + equal(note1_modifier0.getFretHandFinger(), '3'); + equal(note1_modifier0.getPosition(), _src_modifier__WEBPACK_IMPORTED_MODULE_4__.Modifier.Position.ABOVE); + const note2_modifier0 = notes[2].getModifiers()[0]; + equal(note2_modifier0.getCategory(), _src_frethandfinger__WEBPACK_IMPORTED_MODULE_3__.FretHandFinger.CATEGORY); + equal(note2_modifier0.getFretHandFinger(), '5'); + equal(note2_modifier0.getPosition(), _src_modifier__WEBPACK_IMPORTED_MODULE_4__.Modifier.Position.BELOW); + const note3_modifiers = notes[3].getModifiers(); + const note3_modifier0 = note3_modifiers[0]; + const note3_modifier1 = note3_modifiers[1]; + const note3_modifier2 = note3_modifiers[2]; + equal(note3_modifier0.getCategory(), _src_frethandfinger__WEBPACK_IMPORTED_MODULE_3__.FretHandFinger.CATEGORY); + equal(note3_modifier0.getFretHandFinger(), '1'); + equal(note3_modifier0.getPosition(), _src_modifier__WEBPACK_IMPORTED_MODULE_4__.Modifier.Position.LEFT); + equal(note3_modifier1.getCategory(), _src_frethandfinger__WEBPACK_IMPORTED_MODULE_3__.FretHandFinger.CATEGORY); + equal(note3_modifier1.getFretHandFinger(), '3'); + equal(note3_modifier1.getPosition(), _src_modifier__WEBPACK_IMPORTED_MODULE_4__.Modifier.Position.LEFT); + equal(note3_modifier2.getCategory(), _src_frethandfinger__WEBPACK_IMPORTED_MODULE_3__.FretHandFinger.CATEGORY); + equal(note3_modifier2.getFretHandFinger(), '5'); + equal(note3_modifier2.getPosition(), _src_modifier__WEBPACK_IMPORTED_MODULE_4__.Modifier.Position.LEFT); +} +function keys(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 200); + const score = f.EasyScore(); + const system = f.System(); + const notes = score.notes('c#3/q, c##3, cb3, cbb3, cn3, c3, cbbs3, cbss3, cbs3, cdb3, cd3, c++-3, c++3, c+-3, c+3, co3, ck3', { clef: 'bass' }); + system.addStave({ voices: [f.Voice().setStrict(false).addTickables(notes)] }).addClef('bass'); + f.draw(); + equal(notes[0].keys, 'c#/3'); + equal(notes[1].keys, 'c##/3'); + equal(notes[2].keys, 'cb/3'); + equal(notes[3].keys, 'cbb/3'); + equal(notes[4].keys, 'cn/3'); + for (let i = 5; i < notes.length; i++) { + equal(notes[i].keys, 'c/3'); + } +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(EasyScoreTests); + + + +/***/ }), + +/***/ "./tests/factory_tests.ts": +/*!********************************!*\ + !*** ./tests/factory_tests.ts ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "FactoryTests": () => (/* binding */ FactoryTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_factory__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/factory */ "./src/factory.ts"); +/* harmony import */ var _src_stavebarline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/stavebarline */ "./src/stavebarline.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Factory Tests + + + +const FactoryTests = { + Start() { + QUnit.module('Factory'); + test('Defaults', defaults); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Draw', draw); + run('Draw Tab (repeat barlines must be aligned)', drawTab); + }, +}; +function defaults() { + // Throws RuntimeError: 'HTML DOM element not set in Factory' + throws(() => new _src_factory__WEBPACK_IMPORTED_MODULE_1__.Factory({ renderer: { elementId: '', width: 700, height: 500 } }), 'Empty string for elementId throws an exception.'); + const factory = new _src_factory__WEBPACK_IMPORTED_MODULE_1__.Factory({ + renderer: { elementId: null, width: 700, height: 500 }, + }); + // eslint-disable-next-line + // @ts-ignore access a protected member for testing purposes. + const options = factory.options; + equal(options.renderer.width, 700); + equal(options.renderer.height, 500); + equal(options.renderer.elementId, null); + equal(options.stave.space, 10); +} +function draw(options) { + const f = _src_factory__WEBPACK_IMPORTED_MODULE_1__.Factory.newFromElementId(options.elementId); + f.Stave().setClef('treble'); + f.draw(); + expect(0); +} +function drawTab(options) { + const factory = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 500, 400); + const system = factory.System({ width: 500 }); + const stave = factory.Stave().setClef('treble').setKeySignature('C#').setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_2__.Barline.type.REPEAT_BEGIN); + const voices = [factory.Voice().addTickables([factory.GhostNote({ duration: 'w' })])]; + system.addStave({ stave, voices }); + const tabStave = factory.TabStave().setClef('tab').setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_2__.Barline.type.REPEAT_BEGIN); + const tabVoices = [factory.Voice().addTickables([factory.GhostNote({ duration: 'w' })])]; + system.addStave({ stave: tabStave, voices: tabVoices }); + factory.draw(); + equal(stave.getModifiers()[0].getX(), tabStave.getModifiers()[0].getX()); + expect(1); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(FactoryTests); + + + +/***/ }), + +/***/ "./tests/font_tests.ts": +/*!*****************************!*\ + !*** ./tests/font_tests.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "FontTests": () => (/* binding */ FontTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_accidental__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/accidental */ "./src/accidental.ts"); +/* harmony import */ var _src_bend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/bend */ "./src/bend.ts"); +/* harmony import */ var _src_canvascontext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/canvascontext */ "./src/canvascontext.ts"); +/* harmony import */ var _src_element__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/element */ "./src/element.ts"); +/* harmony import */ var _src_flow__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/flow */ "./src/flow.ts"); +/* harmony import */ var _src_font__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../src/font */ "./src/font.ts"); +/* harmony import */ var _src_pedalmarking__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../src/pedalmarking */ "./src/pedalmarking.ts"); +/* harmony import */ var _src_stavenote__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../src/stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _src_textbracket__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../src/textbracket */ "./src/textbracket.ts"); +/* harmony import */ var _src_textnote__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../src/textnote */ "./src/textnote.ts"); +/* harmony import */ var _src_voice__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../src/voice */ "./src/voice.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Font Tests + + + + + + + + + + + + +const FontTests = { + Start() { + QUnit.module('Font'); + test('setFont', setFont); + test('Parsing', fontParsing); + test('Sizes', fontSizes); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Set Text Font to Georgia', setTextFontToGeorgia); + run('Set Music Font to Petaluma', setMusicFontToPetaluma); + }, +}; +/** + * Test out the setFont method in various classes. + */ +function setFont() { + // Create a CanvasCntext and call setFont on it. + const canvas = document.createElement('canvas'); + canvas.width = 800; + canvas.height = 400; + // Set the font and get the font to verify that it matches. + // NOTE: Safari has a bug where it does not return the font-weight! + // https://github.com/0xfe/vexflow/issues/1240#issuecomment-986504088 + const ctx = new _src_canvascontext__WEBPACK_IMPORTED_MODULE_3__.CanvasContext(canvas.getContext('2d')); + ctx.setFont('PetalumaScript', '100px', 'normal', 'italic'); + equal(ctx.font, 'italic 100px PetalumaScript'); + const voice = new _src_voice__WEBPACK_IMPORTED_MODULE_11__.Voice(); + // Many elements do not override the default Element.TEXT_FONT. + propEqual(voice.fontInfo, _src_element__WEBPACK_IMPORTED_MODULE_4__.Element.TEXT_FONT); + voice.setFont('bold 32pt Arial'); + const fontInfo = voice.fontInfo; + equal(fontInfo === null || fontInfo === void 0 ? void 0 : fontInfo.size, '32pt'); + const flat = new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('b'); + // eslint-disable-next-line + // @ts-ignore access a protected member for testing purposes. + equal(flat.textFont, undefined); // The internal instance variable .textFont is undefined by default. + // Add italic to the default font as defined in Element.TEXT_FONT (since Accidental does not override TEXT_FONT). + flat.setFont(undefined, undefined, undefined, _src_font__WEBPACK_IMPORTED_MODULE_6__.FontStyle.ITALIC); + equal(flat.getFont(), 'italic 10pt Arial, sans-serif'); + // Anything that is not set will be reset to the defaults. + flat.setFont(undefined, undefined, _src_font__WEBPACK_IMPORTED_MODULE_6__.FontWeight.BOLD, undefined); + equal(flat.getFont(), 'bold 10pt Arial, sans-serif'); + flat.setFont(undefined, undefined, _src_font__WEBPACK_IMPORTED_MODULE_6__.FontWeight.BOLD, _src_font__WEBPACK_IMPORTED_MODULE_6__.FontStyle.ITALIC); + equal(flat.getFont(), 'italic bold 10pt Arial, sans-serif'); + flat.setFont(undefined, undefined, _src_font__WEBPACK_IMPORTED_MODULE_6__.FontWeight.BOLD, 'oblique'); + equal(flat.getFont(), 'oblique bold 10pt Arial, sans-serif'); + // '' is equivalent to 'normal'. Neither will be included in the CSS font string. + flat.setFont(undefined, undefined, 'normal', ''); + equal(flat.getFont(), '10pt Arial, sans-serif'); +} +function fontParsing() { + const b = new _src_bend__WEBPACK_IMPORTED_MODULE_2__.Bend('1/2', true); + const bFont = b.fontInfo; + // Check the default font. + equal(bFont === null || bFont === void 0 ? void 0 : bFont.family, _src_font__WEBPACK_IMPORTED_MODULE_6__.Font.SANS_SERIF); + equal(bFont === null || bFont === void 0 ? void 0 : bFont.size, _src_font__WEBPACK_IMPORTED_MODULE_6__.Font.SIZE); + equal(bFont === null || bFont === void 0 ? void 0 : bFont.weight, _src_font__WEBPACK_IMPORTED_MODULE_6__.FontWeight.NORMAL); + equal(bFont === null || bFont === void 0 ? void 0 : bFont.style, _src_font__WEBPACK_IMPORTED_MODULE_6__.FontStyle.NORMAL); + const f1 = 'Roboto Slab, serif'; + const t = new _src_textnote__WEBPACK_IMPORTED_MODULE_10__.TextNote({ duration: '4', font: { family: f1 } }); + equal(f1, t.fontInfo.family); + const n1 = new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['e/5'], duration: '4' }); + const n2 = new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['c/5'], duration: '4' }); + const tb = new _src_textbracket__WEBPACK_IMPORTED_MODULE_9__.TextBracket({ start: n1, stop: n2 }); + const f2 = tb.fontInfo; + equal(f2 === null || f2 === void 0 ? void 0 : f2.size, 15); + equal(f2 === null || f2 === void 0 ? void 0 : f2.style, _src_font__WEBPACK_IMPORTED_MODULE_6__.FontStyle.ITALIC); + // The line-height /3 is currently ignored. + const f3 = _src_font__WEBPACK_IMPORTED_MODULE_6__.Font.fromCSSString(`bold 1.5em/3 "Lucida Sans Typewriter", "Lucida Console", Consolas, monospace`); + const f3SizeInPx = _src_font__WEBPACK_IMPORTED_MODULE_6__.Font.convertSizeToPixelValue(f3.size); + equal(f3SizeInPx, 24); +} +function fontSizes() { + { + const size = '17px'; + const sizeInEm = _src_font__WEBPACK_IMPORTED_MODULE_6__.Font.convertSizeToPixelValue(size) / _src_font__WEBPACK_IMPORTED_MODULE_6__.Font.scaleToPxFrom.em; + equal(sizeInEm, 1.0625); + } + { + const size = '2em'; + const sizeInPx = _src_font__WEBPACK_IMPORTED_MODULE_6__.Font.convertSizeToPixelValue(size); + equal(sizeInPx, 32); + } + { + const pedal = new _src_pedalmarking__WEBPACK_IMPORTED_MODULE_7__.PedalMarking([]); + equal(pedal.getFont(), 'italic bold 12pt Times New Roman, serif'); + equal(pedal.fontSizeInPoints, 12); + equal(pedal.fontSizeInPixels, 16); + const doubledSizePx = pedal.fontSizeInPixels * 2; // Double the font size. + equal(doubledSizePx, 32); + const doubledSizePt = _src_font__WEBPACK_IMPORTED_MODULE_6__.Font.scaleSize(pedal.fontSizeInPoints, 2); // Double the font size. + equal(doubledSizePt, 24); + equal(_src_font__WEBPACK_IMPORTED_MODULE_6__.Font.scaleSize('1.5em', 3), '4.5em'); + } +} +function setTextFontToGeorgia(options) { + const factory = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 400, 200); + const stave = factory.Stave({ y: 40 }); + const score = factory.EasyScore(); + const voice1 = score.voice([ + factory.StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: -1, duration: 'h' }), + factory.StaveNote({ keys: ['d/4', 'f/4'], stem_direction: -1, duration: 'q' }), + factory.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: 'q' }), + ]); + const defaultFont = _src_textnote__WEBPACK_IMPORTED_MODULE_10__.TextNote.TEXT_FONT; + // Set the default before we instantiate TextNote objects with the factory. + _src_textnote__WEBPACK_IMPORTED_MODULE_10__.TextNote.TEXT_FONT = { + family: 'Georgia, Courier New, serif', + size: 14, + weight: 'bold', + style: 'italic', + }; + const voice2 = score.voice([ + factory + .TextNote({ text: 'Here are some fun lyrics...', duration: 'w' }) + .setJustification(_src_textnote__WEBPACK_IMPORTED_MODULE_10__.TextNote.Justification.LEFT), + ]); + const formatter = factory.Formatter(); + formatter.joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave); + factory.draw(); + // Restore the previous default, or else it will affect the rest of the tests. + _src_textnote__WEBPACK_IMPORTED_MODULE_10__.TextNote.TEXT_FONT = defaultFont; + ok(true); +} +function setMusicFontToPetaluma(options) { + _src_flow__WEBPACK_IMPORTED_MODULE_5__.Flow.setMusicFont('Petaluma'); + const factory = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 400, 200); + const stave = factory.Stave({ y: 40 }); + const score = factory.EasyScore(); + const voice = score.voice([ + factory.StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: -1, duration: 'h' }), + factory.StaveNote({ keys: ['d/4', 'f/4'], stem_direction: -1, duration: 'q' }), + factory.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: 'q' }), + ]); + const formatter = factory.Formatter(); + formatter.joinVoices([voice]).formatToStave([voice], stave); + factory.draw(); + ok(true); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(FontTests); + + + +/***/ }), + +/***/ "./tests/formatter_tests.ts": +/*!**********************************!*\ + !*** ./tests/formatter_tests.ts ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "FormatterTests": () => (/* binding */ FormatterTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_accidental__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/accidental */ "./src/accidental.ts"); +/* harmony import */ var _src_annotation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/annotation */ "./src/annotation.ts"); +/* harmony import */ var _src_articulation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/articulation */ "./src/articulation.ts"); +/* harmony import */ var _src_beam__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/beam */ "./src/beam.ts"); +/* harmony import */ var _src_bend__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/bend */ "./src/bend.ts"); +/* harmony import */ var _src_dot__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../src/dot */ "./src/dot.ts"); +/* harmony import */ var _src_flow__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../src/flow */ "./src/flow.ts"); +/* harmony import */ var _src_font__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../src/font */ "./src/font.ts"); +/* harmony import */ var _src_formatter__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../src/formatter */ "./src/formatter.ts"); +/* harmony import */ var _src_frethandfinger__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../src/frethandfinger */ "./src/frethandfinger.ts"); +/* harmony import */ var _src_modifier__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../src/modifier */ "./src/modifier.ts"); +/* harmony import */ var _src_note__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../src/note */ "./src/note.ts"); +/* harmony import */ var _src_registry__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../src/registry */ "./src/registry.ts"); +/* harmony import */ var _src_stave__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../src/stave */ "./src/stave.ts"); +/* harmony import */ var _src_staveconnector__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../src/staveconnector */ "./src/staveconnector.ts"); +/* harmony import */ var _src_stavenote__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../src/stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _src_stem__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../src/stem */ "./src/stem.ts"); +/* harmony import */ var _src_stringnumber__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../src/stringnumber */ "./src/stringnumber.ts"); +/* harmony import */ var _src_tables__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../src/tables */ "./src/tables.ts"); +/* harmony import */ var _src_tuplet__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../src/tuplet */ "./src/tuplet.ts"); +/* harmony import */ var _src_voice__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../src/voice */ "./src/voice.ts"); +/* harmony import */ var _mocks__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./mocks */ "./tests/mocks.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Formatter Tests + + + + + + + + + + + + + + + + + + + + + + + +const FormatterTests = { + Start() { + QUnit.module('Formatter'); + test('TickContext Building', buildTickContexts); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Penultimate Note Padding', penultimateNote); + run('Whitespace and justify', rightJustify); + run('Notehead padding', noteHeadPadding); + run('Justification and alignment with accidentals', accidentalJustification); + run('Long measure taking full space', longMeasureProblems); + run('Vertical alignment - few unaligned beats', unalignedNoteDurations1); + run('Vertical alignment - many unaligned beats', unalignedNoteDurations2, { globalSoftmax: false }); + run('Vertical alignment - many unaligned beats (global softmax)', unalignedNoteDurations2, { globalSoftmax: true }); + run('Vertical alignment - many mixed elements', alignedMixedElements, { globalSoftmax: true }); + run('StaveNote - Justification', justifyStaveNotes); + run('Notes with Tab', notesWithTab); + run('Multiple Staves - Justified', multiStaves, { debug: true }); + run('Softmax', softMax); + run('Mixtime', mixTime); + run('Tight', tightNotes1); + run('Tight 2', tightNotes2); + run('Annotations', annotations); + run('Proportional Formatting - No Tuning', proportional, { debug: true, iterations: 0 }); + run('Proportional Formatting - No Justification', proportional, { justify: false, debug: true, iterations: 0 }); + run('Proportional Formatting (20 iterations)', proportional, { debug: true, iterations: 20, alpha: 0.5 }); + }, +}; +/** Calculate the glyph's width in the current music font. */ +// How is this different from Glyph.getWidth()? The numbers don't match up. +function getGlyphWidth(glyphName) { + // `38` seems to be the `font_scale` specified in many classes, such as + // Accidental, Articulation, Ornament, Strokes. Does this mean `38pt`??? + // + // However, tables.ts specifies: + // NOTATION_FONT_SCALE: 39, + // TABLATURE_FONT_SCALE: 39, + const musicFont = _src_tables__WEBPACK_IMPORTED_MODULE_19__.Tables.currentMusicFont(); + const glyph = musicFont.getGlyphs()[glyphName]; + const widthInEm = (glyph.x_max - glyph.x_min) / musicFont.getResolution(); + return widthInEm * 38 * _src_font__WEBPACK_IMPORTED_MODULE_8__.Font.scaleToPxFrom.pt; +} +function buildTickContexts() { + function createTickable(beat) { + return new _mocks__WEBPACK_IMPORTED_MODULE_22__.MockTickable().setTicks(beat); + } + const BEAT = (1 * _src_flow__WEBPACK_IMPORTED_MODULE_7__.Flow.RESOLUTION) / 4; + const tickables1 = [ + createTickable(BEAT).setWidth(10), + createTickable(BEAT * 2).setWidth(20), + createTickable(BEAT).setWidth(30), + ]; + const tickables2 = [ + createTickable(BEAT * 2).setWidth(10), + createTickable(BEAT).setWidth(20), + createTickable(BEAT).setWidth(30), + ]; + const voice1 = new _src_voice__WEBPACK_IMPORTED_MODULE_21__.Voice(_src_flow__WEBPACK_IMPORTED_MODULE_7__.Flow.TIME4_4); + const voice2 = new _src_voice__WEBPACK_IMPORTED_MODULE_21__.Voice(_src_flow__WEBPACK_IMPORTED_MODULE_7__.Flow.TIME4_4); + voice1.addTickables(tickables1); + voice2.addTickables(tickables2); + const formatter = new _src_formatter__WEBPACK_IMPORTED_MODULE_9__.Formatter(); + const tContexts = formatter.createTickContexts([voice1, voice2]); + equal(tContexts.list.length, 4, 'Voices should have four tick contexts'); + throws(() => formatter.getMinTotalWidth(), /NoMinTotalWidth/, 'Expected to throw exception'); + ok(formatter.preCalculateMinTotalWidth([voice1, voice2]), 'Successfully runs preCalculateMinTotalWidth'); + equal(formatter.getMinTotalWidth(), 88, 'Get minimum total width without passing voices'); + formatter.preFormat(); + equal(formatter.getMinTotalWidth(), 88, 'Minimum total width'); + equal(tickables1[0].getX(), tickables2[0].getX(), 'First notes of both voices have the same X'); + equal(tickables1[2].getX(), tickables2[2].getX(), 'Last notes of both voices have the same X'); + ok(tickables1[1].getX() < tickables2[1].getX(), 'Second note of voice 2 is to the right of the second note of voice 1'); +} +function rightJustify(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 1200, 150); + const getTickables = (time, n, duration, duration2) => { + const tickar = []; + let i = 0; + for (i = 0; i < n; ++i) { + const dd = i === n - 1 ? duration2 : duration; + tickar.push(new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['f/4'], duration: dd })); + } + return new _src_voice__WEBPACK_IMPORTED_MODULE_21__.Voice(time).addTickables(tickar); + }; + const renderTest = (time, n, duration, duration2, x, width) => { + const formatter = f.Formatter(); + const stave = f.Stave({ x, y: 20, width }); + // stave.addClef('treble').addTimeSignature('4/4'); + const voice = getTickables(time, n, duration, duration2); + formatter.joinVoices([voice]).formatToStave([voice], stave); + stave.draw(); + voice.draw(f.getContext(), stave); + }; + renderTest({ num_beats: 4, beat_value: 4, resolution: 4 * 4096 }, 3, '4', '2', 10, 300); + renderTest({ num_beats: 4, beat_value: 4, resolution: 4 * 4096 }, 1, 'w', 'w', 310, 300); + renderTest({ num_beats: 3, beat_value: 4, resolution: 4 * 4096 }, 3, '4', '4', 610, 300); + renderTest({ num_beats: 3, beat_value: 4, resolution: 4 * 4096 }, 6, '8', '8', 910, 300); + ok(true); +} +function penultimateNote(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 500, 550); + const score = f.EasyScore(); + const staffWidth = 310; + let system = undefined; + let voices = []; + let notes = []; + let note = undefined; + let stave = undefined; + let y = 10; + const draw = (softmax) => { + system = f.System({ + width: staffWidth, + y, + formatOptions: { align_rests: true }, + details: { softmaxFactor: softmax }, + }); + notes = []; + voices = []; + note = score.notes('C4/8/r', { clef: 'bass' })[0]; + notes.push(note); + note = score.notes('A3/8', { stem: 'up', clef: 'bass' })[0]; + notes.push(note); + note = score.notes('C4/4', { stem: 'up', clef: 'bass' })[0]; + notes.push(note); + voices.push(score.voice(notes).setMode(2)); + notes = []; + note = score.notes('( F3 A3 )/4', { stem: 'down', clef: 'bass' })[0]; + notes.push(note); + note = score.notes('B4/4/r', {})[0]; + notes.push(note); + voices.push(score.voice(notes).setMode(2)); + notes = []; + stave = system.addStave({ voices: voices }); + stave.addClef('bass'); + stave.addTimeSignature('2/4'); + voices = []; + f.draw(); + f.getContext().fillText(`softmax: ${softmax.toString()}`, staffWidth + 20, y + 50); + y += 100; + }; + draw(100); + draw(10); + draw(5); + draw(2); + draw(1.5); + ok(true); +} +function noteHeadPadding(options) { + const registry = new _src_registry__WEBPACK_IMPORTED_MODULE_13__.Registry(); + _src_registry__WEBPACK_IMPORTED_MODULE_13__.Registry.enableDefaultRegistry(registry); + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 300); + const score = f.EasyScore(); + score.set({ time: '9/8' }); + const notes1 = score.notes('(d5 f5)/8,(c5 e5)/8,(d5 f5)/8,(c5 e5)/2.'); + const beams = [new _src_beam__WEBPACK_IMPORTED_MODULE_4__.Beam(notes1.slice(0, 3), true)]; + const voice1 = new _src_voice__WEBPACK_IMPORTED_MODULE_21__.Voice().setMode(_src_voice__WEBPACK_IMPORTED_MODULE_21__.Voice.Mode.SOFT); + const notes2 = score.notes('(g4 an4)/2.,(g4 a4)/4.', { clef: 'treble' }); + const voice2 = new _src_voice__WEBPACK_IMPORTED_MODULE_21__.Voice().setMode(_src_voice__WEBPACK_IMPORTED_MODULE_21__.Voice.Mode.SOFT); + voice2.addTickables(notes2); + voice1.addTickables(notes1); + const formatter = f.Formatter().joinVoices([voice1]).joinVoices([voice2]); + const width = formatter.preCalculateMinTotalWidth([voice1, voice2]); + formatter.format([voice1, voice2], width); + const staveWidth = width + _src_stave__WEBPACK_IMPORTED_MODULE_14__.Stave.defaultPadding; + const stave1 = f.Stave({ y: 50, width: staveWidth }); + const stave2 = f.Stave({ y: 150, width: staveWidth }); + stave1.draw(); + stave2.draw(); + voice1.draw(f.getContext(), stave1); + voice2.draw(f.getContext(), stave2); + beams.forEach((b) => b.setContext(f.getContext()).draw()); + ok(true); +} +function longMeasureProblems(options) { + const registry = new _src_registry__WEBPACK_IMPORTED_MODULE_13__.Registry(); + _src_registry__WEBPACK_IMPORTED_MODULE_13__.Registry.enableDefaultRegistry(registry); + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 1500, 300); + const score = f.EasyScore(); + score.set({ time: '4/4' }); + const notes1 = score.notes('b4/4,b4/8,b4/8,b4/4,b4/4,b4/2,b4/2,b4/4,b4/8,b4/8,b4/4,b4/4,b4/2,b4/2,b4/4,b4/8,b4/8,b4/4,b4/4,b4/2,b4/2,b4/4,b4/2,b4/8,b4/8'); + const voice1 = new _src_voice__WEBPACK_IMPORTED_MODULE_21__.Voice().setMode(_src_voice__WEBPACK_IMPORTED_MODULE_21__.Voice.Mode.SOFT); + const notes2 = score.notes('d3/4,(ab3 f4)/2,d3/4,ab3/4,d3/2,ab3/4,d3/4,ab3/2,d3/4,ab3/4,d3/2,ab3/4,d3/4,ab3/2,d3/4,ab3/4,d3/2,ab3/4,d4/4,d4/2,d4/4', { clef: 'bass' }); + const voice2 = new _src_voice__WEBPACK_IMPORTED_MODULE_21__.Voice().setMode(_src_voice__WEBPACK_IMPORTED_MODULE_21__.Voice.Mode.SOFT); + voice2.addTickables(notes2); + voice1.addTickables(notes1); + const formatter = f.Formatter().joinVoices([voice1]).joinVoices([voice2]); + const width = formatter.preCalculateMinTotalWidth([voice1, voice2]); + formatter.format([voice1, voice2], width); + const stave1 = f.Stave({ y: 50, width: width + _src_stave__WEBPACK_IMPORTED_MODULE_14__.Stave.defaultPadding }); + const stave2 = f.Stave({ y: 200, width: width + _src_stave__WEBPACK_IMPORTED_MODULE_14__.Stave.defaultPadding }); + stave1.draw(); + stave2.draw(); + voice1.draw(f.getContext(), stave1); + voice2.draw(f.getContext(), stave2); + ok(true); +} +function accidentalJustification(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 300); + const score = f.EasyScore(); + const notes11 = score.notes('a4/2, a4/4, a4/8, ab4/16, an4/16'); + const voice11 = score.voice(notes11, { time: '4/4' }); + const notes21 = score.notes('c4/2, d4/8, d4/8, e4/8, e4/8'); + const voice21 = score.voice(notes21, { time: '4/4' }); + let beams = _src_beam__WEBPACK_IMPORTED_MODULE_4__.Beam.generateBeams(notes11.slice(2)); + beams = beams.concat(beams, _src_beam__WEBPACK_IMPORTED_MODULE_4__.Beam.generateBeams(notes21.slice(1, 3))); + beams = beams.concat(_src_beam__WEBPACK_IMPORTED_MODULE_4__.Beam.generateBeams(notes21.slice(3))); + const formatter = f.Formatter({ softmaxFactor: 100 }).joinVoices([voice11]).joinVoices([voice21]); + const width = formatter.preCalculateMinTotalWidth([voice11, voice21]); + const stave11 = f.Stave({ y: 20, width: width + _src_stave__WEBPACK_IMPORTED_MODULE_14__.Stave.defaultPadding }); + const stave21 = f.Stave({ y: 130, width: width + _src_stave__WEBPACK_IMPORTED_MODULE_14__.Stave.defaultPadding }); + formatter.format([voice11, voice21], width); + const ctx = f.getContext(); + stave11.setContext(ctx).draw(); + stave21.setContext(ctx).draw(); + voice11.draw(ctx, stave11); + voice21.draw(ctx, stave21); + beams.forEach((b) => b.setContext(ctx).draw()); + ok(true); +} +function unalignedNoteDurations1(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 250); + const score = f.EasyScore(); + const notes11 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['a/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['b/4'], duration: '4' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['b/4'], duration: '8' }), + ]; + const notes21 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['a/4'], duration: '16' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['b/4.'], duration: '4' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['a/4'], duration: '8d' }), + ]; + _src_dot__WEBPACK_IMPORTED_MODULE_6__.Dot.buildAndAttach([notes21[2]], { all: true }); + const ctx = f.getContext(); + const voice11 = score.voice(notes11, { time: '2/4' }).setMode(_src_voice__WEBPACK_IMPORTED_MODULE_21__.Voice.Mode.SOFT); + const voice21 = score.voice(notes21, { time: '2/4' }).setMode(_src_voice__WEBPACK_IMPORTED_MODULE_21__.Voice.Mode.SOFT); + const beams21 = _src_beam__WEBPACK_IMPORTED_MODULE_4__.Beam.generateBeams(notes21); + const beams11 = _src_beam__WEBPACK_IMPORTED_MODULE_4__.Beam.generateBeams(notes11); + const formatter = new _src_formatter__WEBPACK_IMPORTED_MODULE_9__.Formatter(); + formatter.joinVoices([voice11]); + formatter.joinVoices([voice21]); + const width = formatter.preCalculateMinTotalWidth([voice11, voice21]); + const stave11 = f.Stave({ y: 20, width: width + _src_stave__WEBPACK_IMPORTED_MODULE_14__.Stave.defaultPadding }); + const stave21 = f.Stave({ y: 130, width: width + _src_stave__WEBPACK_IMPORTED_MODULE_14__.Stave.defaultPadding }); + formatter.format([voice11, voice21], width); + stave11.setContext(ctx).draw(); + stave21.setContext(ctx).draw(); + voice11.draw(ctx, stave11); + voice21.draw(ctx, stave21); + beams21.forEach((b) => b.setContext(ctx).draw()); + beams11.forEach((b) => b.setContext(ctx).draw()); + ok(voice11.getTickables()[1].getX() > voice21.getTickables()[1].getX()); +} +function unalignedNoteDurations2(options) { + const notes1 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['b/4'], duration: '8r' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['g/4'], duration: '16' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['c/5'], duration: '16' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['e/5'], duration: '16' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['g/4'], duration: '16' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['c/5'], duration: '16' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['e/5'], duration: '16' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['b/4'], duration: '8r' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['g/4'], duration: '16' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['c/5'], duration: '16' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['e/5'], duration: '16' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['g/4'], duration: '16' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['c/5'], duration: '16' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['e/5'], duration: '16' }), + ]; + const notes2 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['a/4'], duration: '16r' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['e/4.'], duration: '8d' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['e/4'], duration: '4' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['a/4'], duration: '16r' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['e/4.'], duration: '8d' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['e/4'], duration: '4' }), + ]; + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 750, 280); + const context = f.getContext(); + const voice1 = new _src_voice__WEBPACK_IMPORTED_MODULE_21__.Voice({ num_beats: 4, beat_value: 4 }); + voice1.addTickables(notes1); + const voice2 = new _src_voice__WEBPACK_IMPORTED_MODULE_21__.Voice({ num_beats: 4, beat_value: 4 }); + voice2.addTickables(notes2); + const formatter = new _src_formatter__WEBPACK_IMPORTED_MODULE_9__.Formatter({ softmaxFactor: 100, globalSoftmax: options.params.globalSoftmax }); + formatter.joinVoices([voice1]); + formatter.joinVoices([voice2]); + const width = formatter.preCalculateMinTotalWidth([voice1, voice2]); + formatter.format([voice1, voice2], width); + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_14__.Stave(10, 40, width + _src_stave__WEBPACK_IMPORTED_MODULE_14__.Stave.defaultPadding); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_14__.Stave(10, 100, width + _src_stave__WEBPACK_IMPORTED_MODULE_14__.Stave.defaultPadding); + stave1.setContext(context).draw(); + stave2.setContext(context).draw(); + voice1.draw(context, stave1); + voice2.draw(context, stave2); + ok(voice1.getTickables()[1].getX() > voice2.getTickables()[1].getX()); +} +function alignedMixedElements(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 800, 500); + const context = f.getContext(); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_14__.Stave(10, 200, 400); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_14__.Stave(410, 200, 400); + const notes = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['c/5'], duration: '8' }) + .addModifier(new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('##'), 0) + .addModifier(new _src_frethandfinger__WEBPACK_IMPORTED_MODULE_10__.FretHandFinger('4').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_11__.ModifierPosition.BELOW), 0) + .addModifier(new _src_stringnumber__WEBPACK_IMPORTED_MODULE_18__.StringNumber('3').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_11__.ModifierPosition.BELOW), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_3__.Articulation('a.').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_11__.ModifierPosition.BELOW), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_3__.Articulation('a>').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_11__.ModifierPosition.BELOW), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_3__.Articulation('a^').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_11__.ModifierPosition.BELOW), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_3__.Articulation('am').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_11__.ModifierPosition.BELOW), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_3__.Articulation('a@u').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_11__.ModifierPosition.BELOW), 0) + .addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_2__.Annotation('yyyy').setVerticalJustification(_src_annotation__WEBPACK_IMPORTED_MODULE_2__.AnnotationVerticalJustify.BOTTOM), 0) + .addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_2__.Annotation('xxxx').setVerticalJustification(_src_annotation__WEBPACK_IMPORTED_MODULE_2__.AnnotationVerticalJustify.BOTTOM).setFont('sans-serif', 20), 0) + .addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_2__.Annotation('ttt').setVerticalJustification(_src_annotation__WEBPACK_IMPORTED_MODULE_2__.AnnotationVerticalJustify.BOTTOM).setFont('sans-serif', 20), 0), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['c/5'], duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_17__.Stem.DOWN }) + .addModifier(new _src_stringnumber__WEBPACK_IMPORTED_MODULE_18__.StringNumber('3').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_11__.ModifierPosition.BELOW), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_3__.Articulation('a.').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_11__.ModifierPosition.BELOW), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_3__.Articulation('a>').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_11__.ModifierPosition.BELOW), 0), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['c/5'], duration: '8' }), + ]; + const notes2 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['c/5'], duration: '8' }) + .addModifier(new _src_stringnumber__WEBPACK_IMPORTED_MODULE_18__.StringNumber('3').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_11__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_3__.Articulation('a.').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_11__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_2__.Annotation('yyyy').setVerticalJustification(_src_annotation__WEBPACK_IMPORTED_MODULE_2__.AnnotationVerticalJustify.TOP), 0), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['c/5'], duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_17__.Stem.DOWN }) + .addModifier(new _src_frethandfinger__WEBPACK_IMPORTED_MODULE_10__.FretHandFinger('4').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_11__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_stringnumber__WEBPACK_IMPORTED_MODULE_18__.StringNumber('3').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_11__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_3__.Articulation('a.').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_11__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_3__.Articulation('a>').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_11__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_3__.Articulation('a^').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_11__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_3__.Articulation('am').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_11__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_3__.Articulation('a@u').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_11__.ModifierPosition.ABOVE), 0) + .addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_2__.Annotation('yyyy').setVerticalJustification(_src_annotation__WEBPACK_IMPORTED_MODULE_2__.AnnotationVerticalJustify.TOP), 0) + .addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_2__.Annotation('xxxx').setVerticalJustification(_src_annotation__WEBPACK_IMPORTED_MODULE_2__.AnnotationVerticalJustify.TOP).setFont('sans-serif', 20), 0) + .addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_2__.Annotation('ttt').setVerticalJustification(_src_annotation__WEBPACK_IMPORTED_MODULE_2__.AnnotationVerticalJustify.TOP).setFont('sans-serif', 20), 0), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['c/5'], duration: '8' }), + ]; + const tuplet = new _src_tuplet__WEBPACK_IMPORTED_MODULE_20__.Tuplet(notes).setTupletLocation(-1); + const tuplet2 = new _src_tuplet__WEBPACK_IMPORTED_MODULE_20__.Tuplet(notes2).setTupletLocation(1); + _src_formatter__WEBPACK_IMPORTED_MODULE_9__.Formatter.FormatAndDraw(context, stave, notes); + _src_formatter__WEBPACK_IMPORTED_MODULE_9__.Formatter.FormatAndDraw(context, stave2, notes2); + stave.setContext(context).draw(); + stave2.setContext(context).draw(); + tuplet.setContext(context).draw(); + tuplet2.setContext(context).draw(); + ok(true); +} +function justifyStaveNotes(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 520, 280); + const ctx = f.getContext(); + const score = f.EasyScore(); + let y = 30; + function justifyToWidth(width) { + f.Stave({ y: y }).addClef('treble'); + const voices = [ + score.voice(score.notes('(cbb4 en4 a4)/2, (d4 e4 f4)/8, (d4 f4 a4)/8, (cn4 f#4 a4)/4', { stem: 'down' })), + score.voice(score.notes('(bb4 e#5 a5)/4, (d5 e5 f5)/2, (c##5 fb5 a5)/4', { stem: 'up' })), + ]; + f.Formatter() + .joinVoices(voices) + .format(voices, width - (_src_stave__WEBPACK_IMPORTED_MODULE_14__.Stave.defaultPadding + getGlyphWidth('gClef'))); + // Show the the width of notes via a horizontal line with red, green, yellow, blue, gray indicators. + voices[0].getTickables().forEach((note) => _src_note__WEBPACK_IMPORTED_MODULE_12__.Note.plotMetrics(ctx, note, y + 140)); // Bottom line. + voices[1].getTickables().forEach((note) => _src_note__WEBPACK_IMPORTED_MODULE_12__.Note.plotMetrics(ctx, note, y - 20)); // Top Line + y += 210; + } + justifyToWidth(520); + f.draw(); + ok(true); +} +function notesWithTab(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 420, 580); + const score = f.EasyScore(); + let y = 10; + function justifyToWidth(width) { + const stave = f.Stave({ y: y }).addClef('treble'); + const voice = score.voice(score.notes('d#4/2, (c4 d4)/8, d4/8, (c#4 e4 a4)/4', { stem: 'up' })); + y += 100; + f.TabStave({ y: y }).addTabGlyph().setNoteStartX(stave.getNoteStartX()); + const tabVoice = score.voice([ + f.TabNote({ positions: [{ str: 3, fret: 6 }], duration: '2' }).addModifier(new _src_bend__WEBPACK_IMPORTED_MODULE_5__.Bend('Full'), 0), + f + .TabNote({ + positions: [ + { str: 2, fret: 3 }, + { str: 3, fret: 5 }, + ], + duration: '8', + }) + .addModifier(new _src_bend__WEBPACK_IMPORTED_MODULE_5__.Bend('Unison'), 1), + f.TabNote({ positions: [{ str: 3, fret: 7 }], duration: '8' }), + f.TabNote({ + positions: [ + { str: 3, fret: 6 }, + { str: 4, fret: 7 }, + { str: 2, fret: 5 }, + ], + duration: '4', + }), + ]); + f.Formatter().joinVoices([voice]).joinVoices([tabVoice]).format([voice, tabVoice], width); + y += 150; + } + justifyToWidth(0); + justifyToWidth(300); + f.draw(); + ok(true); +} +function multiStaves(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 400); + const ctx = f.getContext(); + const score = f.EasyScore(); + ////////////////////////////////////////////////////////////////////////////////////////////////// + // Draw 3 Staves (one measure each). + const notes11 = score.notes('f4/4, d4/8, g4/4, eb4/8'); + const notes21 = score.notes('d4/8, d4, d4, d4, e4, eb4'); + const notes31 = score.notes('a5/8, a5, a5, a5, a5, a5', { stem: 'down' }); + let voices = [ + score.voice(notes11, { time: '6/8' }), + score.voice(notes21, { time: '6/8' }), + score.voice(notes31, { time: '6/8' }), + ]; + let formatter = f.Formatter(); + voices.forEach((v) => formatter.joinVoices([v])); + let width = formatter.preCalculateMinTotalWidth(voices); + formatter.format(voices, width); + let beams = [ + new _src_beam__WEBPACK_IMPORTED_MODULE_4__.Beam(notes21.slice(0, 3), true), + new _src_beam__WEBPACK_IMPORTED_MODULE_4__.Beam(notes21.slice(3, 6), true), + new _src_beam__WEBPACK_IMPORTED_MODULE_4__.Beam(notes31.slice(0, 3), true), + new _src_beam__WEBPACK_IMPORTED_MODULE_4__.Beam(notes31.slice(3, 6), true), + ]; + const staveYs = [20, 130, 250]; + let staveWidth = width + getGlyphWidth('gClef') + getGlyphWidth('timeSig8') + _src_stave__WEBPACK_IMPORTED_MODULE_14__.Stave.defaultPadding; + let staves = [ + f.Stave({ y: staveYs[0], width: staveWidth }).addClef('treble').addTimeSignature('6/8'), + f.Stave({ y: staveYs[1], width: staveWidth }).addClef('treble').addTimeSignature('6/8'), + f.Stave({ y: staveYs[2], width: staveWidth }).addClef('bass').addTimeSignature('6/8'), + ]; + f.StaveConnector({ + top_stave: staves[1], + bottom_stave: staves[2], + type: 'brace', + }); + for (let i = 0; i < staves.length; ++i) { + staves[i].setContext(ctx).draw(); + voices[i].draw(ctx, staves[i]); + } + beams.forEach((beam) => beam.setContext(ctx).draw()); + ////////////////////////////////////////////////////////////////////////////////////////////////// + // Draw 3 more staves (one measure each). + // These are adjacent to the first set of staves, representing the second measure of each stave. + const notes12 = score.notes('ab4/4, bb4/8, (cb5 eb5)/4[stem="down"], d5/8[stem="down"]'); + const notes22 = score.notes('(eb4 ab4)/4., (c4 eb4 ab4)/4, db5/8', { stem: 'up' }); + const notes32 = score.notes('a5/8, a5, a5, a5, a5, a5', { stem: 'down' }); + voices = [ + score.voice(notes12, { time: '6/8' }), + score.voice(notes22, { time: '6/8' }), + score.voice(notes32, { time: '6/8' }), + ]; + formatter = f.Formatter(); + voices.forEach((v) => formatter.joinVoices([v])); + width = formatter.preCalculateMinTotalWidth(voices); + const staveX = staves[0].getX() + staves[0].getWidth(); + staveWidth = width + _src_stave__WEBPACK_IMPORTED_MODULE_14__.Stave.defaultPadding; + staves = [ + f.Stave({ x: staveX, y: staveYs[0], width: staveWidth }), + f.Stave({ x: staveX, y: staveYs[1], width: staveWidth }), + f.Stave({ x: staveX, y: staveYs[2], width: staveWidth }), + ]; + formatter.format(voices, width); + beams = [ + // Add beams to each group of 3 notes. + new _src_beam__WEBPACK_IMPORTED_MODULE_4__.Beam(notes32.slice(0, 3), true), + new _src_beam__WEBPACK_IMPORTED_MODULE_4__.Beam(notes32.slice(3, 6), true), + ]; + for (let i = 0; i < staves.length; ++i) { + staves[i].setContext(ctx).draw(); + voices[i].draw(ctx, staves[i]); + voices[i].getTickables().forEach((note) => _src_note__WEBPACK_IMPORTED_MODULE_12__.Note.plotMetrics(ctx, note, staveYs[i] - 20)); + } + beams.forEach((beam) => beam.setContext(ctx).draw()); + ok(true); +} +function proportional(options) { + const debug = options.params.debug; + _src_registry__WEBPACK_IMPORTED_MODULE_13__.Registry.enableDefaultRegistry(new _src_registry__WEBPACK_IMPORTED_MODULE_13__.Registry()); + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 775, 750); + const system = f.System({ + x: 50, + autoWidth: true, + debugFormatter: debug, + noJustification: !(options.params.justify === undefined && true), + formatIterations: options.params.iterations, + details: { alpha: options.params.alpha }, + }); + const score = f.EasyScore(); + const voices = [ + score.notes('c5/8, c5'), + score.tuplet(score.notes('a4/8, a4, a4'), { notes_occupied: 2 }), + score.notes('c5/16, c5, c5, c5'), + score.tuplet(score.notes('a4/16, a4, a4, a4, a4'), { notes_occupied: 4 }), + score.tuplet(score.notes('a4/32, a4, a4, a4, a4, a4, a4'), { notes_occupied: 8 }), + ]; + const createVoice = (notes) => score.voice(notes, { time: '1/4' }); + const createStave = (voice) => system + .addStave({ voices: [voice], debugNoteMetrics: debug }) + .addClef('treble') + .addTimeSignature('1/4'); + voices.map(createVoice).forEach(createStave); + system.addConnector().setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_15__.StaveConnector.type.BRACKET); + f.draw(); + // Debugging: Show how many elements of each type we have added. + // const typeMap = Registry.getDefaultRegistry().index.type; + // const table = Object.keys(typeMap).map((typeName) => typeName + ': ' + Object.keys(typeMap[typeName]).length); + // console.log(table); + _src_registry__WEBPACK_IMPORTED_MODULE_13__.Registry.disableDefaultRegistry(); + ok(true); +} +function softMax(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 550, 500); + const textX = 450 / 0.8; + f.getContext().scale(0.8, 0.8); + function draw(y, factor) { + const score = f.EasyScore(); + const system = f.System({ + x: 100, + y, + details: { softmaxFactor: factor }, + autoWidth: true, + }); + system + .addStave({ + voices: [ + score.voice(score + .notes('C#5/h, a4/q') + .concat(score.beam(score.notes('Abb4/8, A4/8'))) + .concat(score.beam(score.notes('A4/16, A#4, A4, Ab4/32, A4'))), { time: '5/4' }), + ], + }) + .addClef('treble') + .addTimeSignature('5/4'); + f.draw(); + f.getContext().fillText(`softmax: ${factor.toString()}`, textX, y + 50); + ok(true); + } + draw(50, 1); + draw(150, 2); + draw(250, 10); + draw(350, 20); + draw(450, 200); +} +function mixTime(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 400 + _src_stave__WEBPACK_IMPORTED_MODULE_14__.Stave.defaultPadding, 250); + f.getContext().scale(0.8, 0.8); + const score = f.EasyScore(); + const system = f.System({ + details: { softmaxFactor: 100 }, + autoWidth: true, + debugFormatter: true, + }); + system + .addStave({ + voices: [score.voice(score.notes('C#5/q, B4').concat(score.beam(score.notes('A4/8, E4, C4, D4'))))], + }) + .addClef('treble') + .addTimeSignature('4/4'); + system + .addStave({ + voices: [score.voice(score.notes('C#5/q, B4, B4').concat(score.tuplet(score.beam(score.notes('A4/8, E4, C4')))))], + }) + .addClef('treble') + .addTimeSignature('4/4'); + f.draw(); + ok(true); +} +function tightNotes1(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 440, 250); + f.getContext().scale(0.8, 0.8); + const score = f.EasyScore(); + const system = f.System({ + autoWidth: true, + debugFormatter: true, + details: { maxIterations: 10 }, + }); + system + .addStave({ + voices: [ + score.voice(score.beam(score.notes('B4/16, B4, B4, B4, B4, B4, B4, B4')).concat(score.notes('B4/q, B4'))), + ], + }) + .addClef('treble') + .addTimeSignature('4/4'); + system + .addStave({ + voices: [ + score.voice(score.notes('B4/q, B4').concat(score.beam(score.notes('B4/16, B4, B4, B4, B4, B4, B4, B4')))), + ], + }) + .addClef('treble') + .addTimeSignature('4/4'); + f.draw(); + ok(true); +} +function tightNotes2(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 440, 250); + f.getContext().scale(0.8, 0.8); + const score = f.EasyScore(); + const system = f.System({ + autoWidth: true, + debugFormatter: true, + }); + system + .addStave({ + voices: [ + score.voice(score.beam(score.notes('B4/16, B4, B4, B4, B4, B4, B4, B4')).concat(score.notes('B4/q, B4'))), + ], + }) + .addClef('treble') + .addTimeSignature('4/4'); + system + .addStave({ + voices: [score.voice(score.notes('B4/w'))], + }) + .addClef('treble') + .addTimeSignature('4/4'); + f.draw(); + ok(true); +} +function annotations(options) { + const pageWidth = 916; + const pageHeight = 600; + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, pageWidth, pageHeight); + const context = f.getContext(); + const lyrics1 = ['ipso', 'ipso-', 'ipso', 'ipso', 'ipsoz', 'ipso-', 'ipso', 'ipso', 'ipso', 'ip', 'ipso']; + const lyrics2 = ['ipso', 'ipso-', 'ipsoz', 'ipso', 'ipso', 'ipso-', 'ipso', 'ipso', 'ipso', 'ip', 'ipso']; + const smar = [ + { + sm: 5, + width: 550, + lyrics: lyrics1, + title: '550px,softMax:5', + }, + { + sm: 10, + width: 550, + lyrics: lyrics2, + title: '550px,softmax:10,different word order', + }, + { + sm: 5, + width: 550, + lyrics: lyrics2, + title: '550px,softmax:5', + }, + { + sm: 100, + width: 550, + lyrics: lyrics2, + title: '550px,softmax:100', + }, + ]; + const rowSize = 140; + const beats = 12; + const beatsPer = 8; + const beamGroup = 3; + const durations = ['8d', '16', '8', '8d', '16', '8', '8d', '16', '8', '4', '8']; + const beams = []; + let y = 40; + smar.forEach((sm) => { + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_14__.Stave(10, y, sm.width); + const notes = []; + let iii = 0; + context.fillText(sm.title, 100, y); + y += rowSize; + durations.forEach((dd) => { + const note = new _src_stavenote__WEBPACK_IMPORTED_MODULE_16__.StaveNote({ keys: ['b/4'], duration: dd }); + if (dd.indexOf('d') >= 0) { + _src_dot__WEBPACK_IMPORTED_MODULE_6__.Dot.buildAndAttach([note], { all: true }); + } + if (sm.lyrics.length > iii) { + note.addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_2__.Annotation(sm.lyrics[iii]) + .setVerticalJustification(_src_annotation__WEBPACK_IMPORTED_MODULE_2__.Annotation.VerticalJustify.BOTTOM) + .setFont(_src_font__WEBPACK_IMPORTED_MODULE_8__.Font.SERIF, 12, _src_font__WEBPACK_IMPORTED_MODULE_8__.FontWeight.NORMAL)); + } + notes.push(note); + iii += 1; + }); + notes.forEach((note) => { + if (note.getDuration().indexOf('d') >= 0) { + _src_dot__WEBPACK_IMPORTED_MODULE_6__.Dot.buildAndAttach([note], { all: true }); + } + }); + // Don't beam the last group + let notesToBeam = []; + notes.forEach((note) => { + if (note.getIntrinsicTicks() < 4096) { + notesToBeam.push(note); + if (notesToBeam.length >= beamGroup) { + beams.push(new _src_beam__WEBPACK_IMPORTED_MODULE_4__.Beam(notesToBeam)); + notesToBeam = []; + } + } + else { + notesToBeam = []; + } + }); + const voice1 = new _src_voice__WEBPACK_IMPORTED_MODULE_21__.Voice({ num_beats: beats, beat_value: beatsPer }).setMode(_src_voice__WEBPACK_IMPORTED_MODULE_21__.Voice.Mode.SOFT).addTickables(notes); + const fmt = new _src_formatter__WEBPACK_IMPORTED_MODULE_9__.Formatter({ softmaxFactor: sm.sm, maxIterations: 2 }).joinVoices([voice1]); + fmt.format([voice1], sm.width - 11); + stave.setContext(context).draw(); + voice1.draw(context, stave); + beams.forEach((b) => b.setContext(context).draw()); + }); + ok(true); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(FormatterTests); + + + +/***/ }), + +/***/ "./tests/fraction_tests.ts": +/*!*********************************!*\ + !*** ./tests/fraction_tests.ts ***! + \*********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "FractionTests": () => (/* binding */ FractionTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_fraction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/fraction */ "./src/fraction.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Fraction Tests + + +const FractionTests = { + Start() { + QUnit.module('Fraction'); + test('Basic', basic); + test('With Other Fractions', withOtherFractions); + }, +}; +function basic() { + const f_1_2 = new _src_fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(1, 2); + ok(f_1_2.equals(0.5), 'Fraction: 1/2 equals 0.5'); + ok(f_1_2.equals(new _src_fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(1, 2)), 'Fraction: 1/2 equals 1/2'); + ok(f_1_2.equals(new _src_fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(2, 4)), 'Fraction: 1/2 equals 2/4'); + notOk(f_1_2.greaterThan(1), 'Fraction: ! 1/2 > 1'); + ok(f_1_2.greaterThan(0.2), 'Fraction: 1/2 > 0.2'); + ok(f_1_2.greaterThanEquals(0.2), 'Fraction: 1/2 >= 0.2'); + ok(f_1_2.greaterThanEquals(0.5), 'Fraction: 1/2 >= 0.5'); + notOk(f_1_2.greaterThanEquals(1), 'Fraction: ! 1/2 >= 1'); + notOk(f_1_2.lessThan(0.5), 'Fraction: ! 1/2 < 0.5'); + ok(f_1_2.lessThan(1), 'Fraction: 1/2 < 1'); + ok(f_1_2.lessThanEquals(0.6), 'Fraction: 1/2 <= 0.6'); + ok(f_1_2.lessThanEquals(0.5), 'Fraction: 1/2 <= 0.5'); + notOk(f_1_2.lessThanEquals(0.4), 'Fraction: ! 1/2 <= 0.4'); + const f_05 = f_1_2.copy(0.5); + strictEqual(f_05, f_1_2, 'Fraction: f_05 === f_1_2'); + strictEqual(f_05.toString(), '0.5/1', 'Fraction: f_05.toString() === "0.5/1"'); + strictEqual(f_05.toSimplifiedString(), '1/2', 'Fraction: f_05.toSimplifiedString() === "1/2"'); + const tF_n = f_05.clone(); + notStrictEqual(tF_n, f_05, 'Fraction: tF_n !== f_05'); + notEqual(tF_n, f_05, 'Fraction: tF_n != f_05'); + deepEqual(tF_n, f_05, 'tF_n deepEqual f_05'); + notDeepEqual(tF_n, {}, 'tF_n notDeepEqual {}'); + tF_n.subtract(-0.5); + ok(tF_n.equals(1), 'Fraction: 0.5 -(-0.5) equals 1'); + tF_n.add(1); + ok(tF_n.equals(2), 'Fraction: 1 + 1 equals 2'); + tF_n.multiply(2); + ok(tF_n.equals(4), 'Fraction: 2 * 2 equals 4'); + tF_n.divide(2); + ok(tF_n.equals(2), 'Fraction: 4 / 2 equals 2'); + // Lowest common multiple. + equal(_src_fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction.LCMM([]), 0); + equal(_src_fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction.LCMM([17]), 17); + equal(_src_fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction.LCMM([2, 5]), 10); + equal(_src_fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction.LCMM([15, 3, 5]), 15); + equal(_src_fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction.LCMM([2, 4, 6]), 12); + equal(_src_fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction.LCMM([2, 3, 4, 5]), 60); + equal(_src_fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction.LCMM([12, 15, 10, 75]), 300); + // Greatest common divisor. + equal(_src_fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction.GCD(0, 0), 0); + equal(_src_fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction.GCD(0, 99), 99); + equal(_src_fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction.GCD(77, 0), 77); + equal(_src_fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction.GCD(42, 14), 14); + equal(_src_fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction.GCD(15, 10), 5); +} +function withOtherFractions() { + const f_1_2 = new _src_fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(1, 2); + const f_1_4 = new _src_fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(1, 4); + const f_1_8 = new _src_fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(1, 8); + const f_2 = new _src_fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(2, 1); + // IMPORTANT NOTE: Fraction methods modify the existing Fraction object. + // They do not return new objects. + // Use clone() if you don't want to modify the original object. + const a = f_1_2.clone().multiply(f_1_2); + ok(a.equals(f_1_4), '1/2 x 1/2 == 1/4'); + const b = f_1_2.clone().divide(f_1_4); + ok(b.equals(f_2), '1/2 / 1/4 == 2'); + const c = f_2.clone().subtract(f_1_2).subtract(f_1_2).subtract(f_1_4); // 3/4 + const d = f_1_8.clone().add(f_1_8).add(f_1_8).multiply(f_2); + ok(c.equals(d), '2-1/2-1/2-1/4 == (1/8+1/8+1/8)*(2/1)'); + equal(c.value(), 0.75, '3/4 == 0.75'); + const e = f_1_8.clone().add(f_1_4).add(f_1_8); + ok(e.equals(f_1_2), '1/8 + 1/4 + 1/8 == 1/2'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(FractionTests); + + + +/***/ }), + +/***/ "./tests/ghostnote_tests.ts": +/*!**********************************!*\ + !*** ./tests/ghostnote_tests.ts ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "GhostNoteTests": () => (/* binding */ GhostNoteTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// GhostNote Tests + +const GhostNoteTests = { + Start() { + QUnit.module('GhostNote'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('GhostNote Basic', basic); + run('GhostNote Dotted', dotted); + }, +}; +/** + * Helper function to set up the stave, easyscore, voice, and to format & draw. + */ +function createTest(addItems) { + return (options) => { + const factory = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 550); + const stave = factory.Stave(); + const score = factory.EasyScore(); + addItems(factory, score); + const voices = factory.getVoices(); + factory.Formatter().joinVoices(voices).formatToStave(voices, stave); + factory.draw(); + ok(true, 'all pass'); + }; +} +const basic = createTest((f, score) => { + // Top Voice + const voiceTop = score.voice(score.notes('f#5/4, f5, db5, c5, c5/8, d5, fn5, e5, d5, c5', { stem: 'up' }), { + time: '7/4', + }); + const notesTop = voiceTop.getTickables(); + f.Beam({ notes: notesTop.slice(4, 8) }); + f.Beam({ notes: notesTop.slice(8, 10) }); + // Bottom Voice + score.voice([ + f.GhostNote({ duration: '2' }), + f.StaveNote({ keys: ['f/4'], stem_direction: -1, duration: '4' }), + f.GhostNote({ duration: '4' }), + f.StaveNote({ keys: ['e/4'], stem_direction: -1, duration: '4' }), + f.GhostNote({ duration: '8' }), + f.StaveNote({ keys: ['d/4'], stem_direction: -1, duration: '8' }).addModifier(f.Accidental({ type: '##' }), 0), + f.StaveNote({ keys: ['c/4'], stem_direction: -1, duration: '8' }), + f.StaveNote({ keys: ['c/4'], stem_direction: -1, duration: '8' }), + ], { time: '7/4' }); +}); +/** + * A ghost note is invisible, but takes up space on the stave corresponding to its duration. + * '4d' is a dotted quarter note, equivalent to a quarter + eighth note. + */ +const dotted = createTest((f, score) => { + const voice1 = score.voice([ + f.GhostNote({ duration: '4d' }), + f.StaveNote({ duration: '8', keys: ['f/5'], stem_direction: 1 }), + f.StaveNote({ duration: '4', keys: ['d/5'], stem_direction: 1 }), + f.StaveNote({ duration: '8', keys: ['c/5'], stem_direction: 1 }), + f.StaveNote({ duration: '16', keys: ['c/5'], stem_direction: 1 }), + f.StaveNote({ duration: '16', keys: ['d/5'], stem_direction: 1 }), + f.GhostNote({ duration: '2dd' }), + f.StaveNote({ duration: '8', keys: ['f/5'], stem_direction: 1 }), + ], { time: '8/4' }); + const voice2 = score.voice([ + f.StaveNote({ duration: '4', keys: ['f/4'], stem_direction: -1 }), + f.StaveNote({ duration: '8', keys: ['e/4'], stem_direction: -1 }), + f.StaveNote({ duration: '8', keys: ['d/4'], stem_direction: -1 }), + f.GhostNote({ duration: '4dd' }), + f.StaveNote({ duration: '16', keys: ['c/4'], stem_direction: -1 }), + f.StaveNote({ duration: '2', keys: ['c/4'], stem_direction: -1 }), + f.StaveNote({ duration: '4', keys: ['d/4'], stem_direction: -1 }), + f.StaveNote({ duration: '8', keys: ['f/4'], stem_direction: -1 }), + f.StaveNote({ duration: '8', keys: ['e/4'], stem_direction: -1 }), + ], { time: '8/4' }); + const notes1 = voice1.getTickables(); + const notes2 = voice2.getTickables(); + const addAccidental = (note, type) => note.addModifier(f.Accidental({ type }), 0); + addAccidental(notes1[1], 'bb'); + addAccidental(notes1[4], '#'); + addAccidental(notes1[7], 'n'); + addAccidental(notes2[0], '#'); + addAccidental(notes2[4], 'b'); + addAccidental(notes2[5], '#'); + addAccidental(notes2[7], 'n'); + f.Beam({ notes: notes1.slice(3, 6) }); + f.Beam({ notes: notes2.slice(1, 3) }); + f.Beam({ notes: notes2.slice(7, 9) }); +}); +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(GhostNoteTests); + + + +/***/ }), + +/***/ "./tests/glyphnote_tests.ts": +/*!**********************************!*\ + !*** ./tests/glyphnote_tests.ts ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "GlyphNoteTests": () => (/* binding */ GlyphNoteTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_chordsymbol__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/chordsymbol */ "./src/chordsymbol.ts"); +/* harmony import */ var _src_glyph__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/glyph */ "./src/glyph.ts"); +/* harmony import */ var _src_registry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/registry */ "./src/registry.ts"); +/* harmony import */ var _src_staveconnector__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/staveconnector */ "./src/staveconnector.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// GlyphNote Tests + + + + + +const GlyphNoteTests = { + Start() { + QUnit.module('GlyphNote'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('GlyphNote with ChordSymbols', chordChanges, { debug: false, noPadding: false }); + run('GlyphNote Positioning', basic, { debug: false, noPadding: false }); + run('GlyphNote No Stave Padding', basic, { debug: true, noPadding: true }); + run('GlyphNote RepeatNote', repeatNote, { debug: false, noPadding: true }); + }, +}; +function chordChanges(options) { + _src_registry__WEBPACK_IMPORTED_MODULE_3__.Registry.enableDefaultRegistry(new _src_registry__WEBPACK_IMPORTED_MODULE_3__.Registry()); + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 300, 200); + const system = f.System({ + x: 50, + width: 250, + debugFormatter: options.params.debug, + noPadding: options.params.noPadding, + details: { alpha: options.params.alpha }, + }); + const score = f.EasyScore(); + const notes = [ + f.GlyphNote(new _src_glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph('repeatBarSlash', 40), { duration: 'q' }), + f.GlyphNote(new _src_glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph('repeatBarSlash', 40), { duration: 'q' }), + f.GlyphNote(new _src_glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph('repeatBarSlash', 40), { duration: 'q' }), + f.GlyphNote(new _src_glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph('repeatBarSlash', 40), { duration: 'q' }), + ]; + const chord1 = f + .ChordSymbol({ reportWidth: false }) + .addText('F7') + .setHorizontal('left') + .addGlyphOrText('(#11b9)', { symbolModifier: _src_chordsymbol__WEBPACK_IMPORTED_MODULE_1__.ChordSymbol.symbolModifiers.SUPERSCRIPT }); + const chord2 = f + .ChordSymbol() + .addText('F7') + .setHorizontal('left') + .addGlyphOrText('#11', { symbolModifier: _src_chordsymbol__WEBPACK_IMPORTED_MODULE_1__.ChordSymbol.symbolModifiers.SUPERSCRIPT }) + .addGlyphOrText('b9', { symbolModifier: _src_chordsymbol__WEBPACK_IMPORTED_MODULE_1__.ChordSymbol.symbolModifiers.SUBSCRIPT }); + notes[0].addModifier(chord1, 0); + notes[2].addModifier(chord2, 0); + const voice = score.voice(notes); + system.addStave({ voices: [voice], debugNoteMetrics: options.params.debug }); + system.addConnector().setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_4__.StaveConnector.type.BRACKET); + f.draw(); + _src_registry__WEBPACK_IMPORTED_MODULE_3__.Registry.disableDefaultRegistry(); + ok(true); +} +function basic(options) { + _src_registry__WEBPACK_IMPORTED_MODULE_3__.Registry.enableDefaultRegistry(new _src_registry__WEBPACK_IMPORTED_MODULE_3__.Registry()); + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 300, 400); + const system = f.System({ + x: 50, + width: 250, + debugFormatter: options.params.debug, + noPadding: options.params.noPadding, + details: { alpha: options.params.alpha }, + }); + const score = f.EasyScore(); + const newVoice = (notes) => score.voice(notes, { time: '1/4' }); + const newStave = (voice) => system.addStave({ voices: [voice], debugNoteMetrics: options.params.debug }); + const voices = [ + [f.GlyphNote(new _src_glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph('repeat1Bar', 40), { duration: 'q' }, { line: 4 })], + [f.GlyphNote(new _src_glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph('repeat2Bars', 40), { duration: 'q', align_center: true })], + [ + f.GlyphNote(new _src_glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph('repeatBarSlash', 40), { duration: '16' }), + f.GlyphNote(new _src_glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph('repeatBarSlash', 40), { duration: '16' }), + f.GlyphNote(new _src_glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph('repeat4Bars', 40), { duration: '16' }), + f.GlyphNote(new _src_glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph('repeatBarSlash', 40), { duration: '16' }), + ], + ]; + voices.map(newVoice).forEach(newStave); + system.addConnector().setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_4__.StaveConnector.type.BRACKET); + f.draw(); + _src_registry__WEBPACK_IMPORTED_MODULE_3__.Registry.disableDefaultRegistry(); + ok(true); +} +function repeatNote(options) { + _src_registry__WEBPACK_IMPORTED_MODULE_3__.Registry.enableDefaultRegistry(new _src_registry__WEBPACK_IMPORTED_MODULE_3__.Registry()); + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 300, 500); + const system = f.System({ + x: 50, + width: 250, + debugFormatter: options.params.debug, + noPadding: options.params.noPadding, + details: { alpha: options.params.alpha }, + }); + const score = f.EasyScore(); + const createVoice = (notes) => score.voice(notes, { time: '1/4' }); + const addStaveWithVoice = (voice) => system.addStave({ voices: [voice], debugNoteMetrics: options.params.debug }); + const voices = [ + [f.RepeatNote('1')], + [f.RepeatNote('2')], + [f.RepeatNote('4')], + [ + f.RepeatNote('slash', { duration: '16' }), + f.RepeatNote('slash', { duration: '16' }), + f.RepeatNote('slash', { duration: '16' }), + f.RepeatNote('slash', { duration: '16' }), + ], + ]; + voices.map(createVoice).forEach(addStaveWithVoice); + system.addConnector().setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_4__.StaveConnector.type.BRACKET); + f.draw(); + _src_registry__WEBPACK_IMPORTED_MODULE_3__.Registry.disableDefaultRegistry(); + ok(true); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(GlyphNoteTests); + + + +/***/ }), + +/***/ "./tests/gracenote_tests.ts": +/*!**********************************!*\ + !*** ./tests/gracenote_tests.ts ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "GraceNoteTests": () => (/* binding */ GraceNoteTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_accidental__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/accidental */ "./src/accidental.ts"); +/* harmony import */ var _src_annotation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/annotation */ "./src/annotation.ts"); +/* harmony import */ var _src_articulation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/articulation */ "./src/articulation.ts"); +/* harmony import */ var _src_dot__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/dot */ "./src/dot.ts"); +/* harmony import */ var _src_formatter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/formatter */ "./src/formatter.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// GraceNote Tests +// TODO: In the 'stem' test (aka Grace Note Stem › SVG + Petaluma in flow.html), the Petaluma note heads are not scaled down properly. + + + + + + +const GraceNoteTests = { + Start() { + QUnit.module('Grace Notes'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Grace Note Basic', basic); + run('With Articulation and Annotation on Parent Note', graceNoteModifiers); + run('Grace Note Basic with Slurs', basicSlurred); + run('Grace Note Stem', stem); + run('Grace Note Stem with Beams 1', stemWithBeamed, { + keys1: ['g/4'], + stemDirection1: 1, + keys2: ['d/5'], + stemDirection2: -1, + }); + run('Grace Note Stem with Beams 2', stemWithBeamed, { + keys1: ['a/3'], + stemDirection1: 1, + keys2: ['a/5'], + stemDirection2: -1, + }); + run('Grace Note Stem with Beams 3', stemWithBeamed, { + keys1: ['c/4'], + stemDirection1: 1, + keys2: ['c/6'], + stemDirection2: -1, + }); + run('Grace Note Slash', slash); + run('Grace Note Slash with Beams', slashWithBeams); + run('Grace Notes Multiple Voices', multipleVoices); + run('Grace Notes Multiple Voices Multiple Draws', multipleVoicesMultipleDraws); + }, +}; +function basic(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 130); + const stave = f.Stave({ x: 10, y: 10, width: 650 }); + const gracenotes = [ + { keys: ['e/4'], duration: '32' }, + { keys: ['f/4'], duration: '32' }, + { keys: ['g/4'], duration: '32' }, + { keys: ['a/4'], duration: '32' }, + ].map(f.GraceNote.bind(f)); + const gracenotes1 = [{ keys: ['b/4'], duration: '8', slash: false }].map(f.GraceNote.bind(f)); + const gracenotes2 = [{ keys: ['b/4'], duration: '8', slash: true }].map(f.GraceNote.bind(f)); + const gracenotes3 = [ + { keys: ['e/4'], duration: '8' }, + { keys: ['f/4'], duration: '16' }, + { keys: ['e/4', 'g/4'], duration: '8' }, + { keys: ['a/4'], duration: '32' }, + { keys: ['b/4'], duration: '32' }, + ].map(f.GraceNote.bind(f)); + const gracenotes4 = [ + { keys: ['g/4'], duration: '8' }, + { keys: ['g/4'], duration: '16' }, + { keys: ['g/4'], duration: '16' }, + ].map(f.GraceNote.bind(f)); + gracenotes[1].addModifier(f.Accidental({ type: '##' }), 0); + gracenotes3[3].addModifier(f.Accidental({ type: 'bb' }), 0); + _src_dot__WEBPACK_IMPORTED_MODULE_4__.Dot.buildAndAttach([gracenotes4[0]], { all: true }); + const notes = [ + f + .StaveNote({ keys: ['b/4'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes }).beamNotes(), 0), + f + .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true }) + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.GraceNoteGroup({ notes: gracenotes1 }).beamNotes(), 0), + f + .StaveNote({ keys: ['c/5', 'd/5'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes2 }).beamNotes(), 0), + f + .StaveNote({ keys: ['a/4'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes3 }).beamNotes(), 0), + f + .StaveNote({ keys: ['a/4'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes4 }).beamNotes(), 0), + ]; + const voice = f.Voice().setStrict(false).addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'GraceNoteBasic'); +} +function graceNoteModifiers(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 130); + const stave = f.Stave({ x: 10, y: 10, width: 650 }); + const gracenotes = [{ keys: ['b/4'], duration: '8', slash: false }].map(f.GraceNote.bind(f)); + const notes = [ + f + .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes }), 0), + f + .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes }), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_3__.Articulation('a-').setPosition(3), 0), + f + .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes }), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_3__.Articulation('a-').setPosition(3), 0) + .addModifier(new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('#')), + f + .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes }), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_3__.Articulation('a-').setPosition(3), 0) + .addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_2__.Annotation('words')), + f + .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes }), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_3__.Articulation('a-').setPosition(3), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_3__.Articulation('a>').setPosition(3), 0), + f + .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes }), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_3__.Articulation('a-').setPosition(3), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_3__.Articulation('a>').setPosition(3), 0) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_3__.Articulation('a@a').setPosition(3), 0), + ]; + const voice = f.Voice().setStrict(false).addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'GraceNoteModifiers'); +} +function basicSlurred(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 130); + const stave = f.Stave({ x: 10, y: 10, width: 650 }); + const gracenotes0 = [ + { keys: ['e/4'], duration: '32' }, + { keys: ['f/4'], duration: '32' }, + { keys: ['g/4'], duration: '32' }, + { keys: ['a/4'], duration: '32' }, + ].map(f.GraceNote.bind(f)); + const gracenotes1 = [{ keys: ['b/4'], duration: '8', slash: false }].map(f.GraceNote.bind(f)); + const gracenotes2 = [{ keys: ['b/4'], duration: '8', slash: true }].map(f.GraceNote.bind(f)); + const gracenotes3 = [ + { keys: ['e/4'], duration: '8' }, + { keys: ['f/4'], duration: '16' }, + { keys: ['e/4', 'g/4'], duration: '8' }, + { keys: ['a/4'], duration: '32' }, + { keys: ['b/4'], duration: '32' }, + ].map(f.GraceNote.bind(f)); + const gracenotes4 = [ + { keys: ['a/4'], duration: '8' }, + { keys: ['a/4'], duration: '16' }, + { keys: ['a/4'], duration: '16' }, + ].map(f.GraceNote.bind(f)); + gracenotes0[1].addModifier(f.Accidental({ type: '#' }), 0); + gracenotes3[3].addModifier(f.Accidental({ type: 'b' }), 0); + gracenotes3[2].addModifier(f.Accidental({ type: 'n' }), 0); + _src_dot__WEBPACK_IMPORTED_MODULE_4__.Dot.buildAndAttach([gracenotes4[0]], { all: true }); + const notes = [ + f + .StaveNote({ keys: ['b/4'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes0, slur: true }).beamNotes(), 0), + f + .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true }) + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.GraceNoteGroup({ notes: gracenotes1, slur: true }).beamNotes(), 0), + f + .StaveNote({ keys: ['c/5', 'd/5'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes2, slur: true }).beamNotes(), 0), + f + .StaveNote({ keys: ['a/4'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes3, slur: true }).beamNotes(), 0), + f + .StaveNote({ keys: ['a/4'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes4, slur: true }).beamNotes(), 0), + f.StaveNote({ keys: ['a/4'], duration: '4', auto_stem: true }), + ]; + const voice = f.Voice().setStrict(false).addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_5__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'GraceNoteBasic'); +} +/** + * Helper function for three tests below: stem, stemWithBeamed, slash. + */ +const createNoteForStemTest = (duration, noteBuilder, keys, stem_direction, slash = false) => { + const struct = { duration, slash }; + struct.stem_direction = stem_direction; + struct.keys = keys; + return noteBuilder(struct); +}; +// Used in three tests below. +const durationsForStemTest = ['8', '16', '32', '64', '128']; +function stem(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 130); + const stave = f.Stave({ x: 10, y: 10, width: 650 }); + function createNotes(noteBuilder, keys, stem_direction) { + return durationsForStemTest.map((duration) => createNoteForStemTest(duration, noteBuilder, keys, stem_direction)); + } + function createNoteBlock(keys, stem_direction) { + const staveNotes = createNotes(f.StaveNote.bind(f), keys, stem_direction); + const gracenotes = createNotes(f.GraceNote.bind(f), keys, stem_direction); + // Add a bunch of GraceNotes in front of the first StaveNote. + staveNotes[0].addModifier(f.GraceNoteGroup({ notes: gracenotes }), 0); + return staveNotes; + } + const voice = f.Voice().setStrict(false); + voice.addTickables(createNoteBlock(['g/4'], 1)); + voice.addTickables(createNoteBlock(['d/5'], -1)); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'GraceNoteStem'); +} +function stemWithBeamed(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 130); + const stave = f.Stave({ x: 10, y: 10, width: 650 }); + function createBeamedNotes(noteBuilder, keys, stem_direction, beams, isGrace = false, notesToBeam) { + const ret = []; + durationsForStemTest.map((duration) => { + const n0 = createNoteForStemTest(duration, noteBuilder, keys, stem_direction); + const n1 = createNoteForStemTest(duration, noteBuilder, keys, stem_direction); + ret.push(n0); + ret.push(n1); + if (notesToBeam) { + notesToBeam.push([n0, n1]); + } + if (!isGrace) { + beams.push(f.Beam({ notes: [n0, n1] })); + } + }); + return ret; + } + function createBeamedNoteBlock(keys, stem_direction, beams) { + const bnotes = createBeamedNotes(f.StaveNote.bind(f), keys, stem_direction, beams); + const notesToBeam = []; + const gracenotes = createBeamedNotes(f.GraceNote.bind(f), keys, stem_direction, beams, true, notesToBeam); + const graceNoteGroup = f.GraceNoteGroup({ notes: gracenotes }); + notesToBeam.map(graceNoteGroup.beamNotes.bind(graceNoteGroup)); + bnotes[0].addModifier(graceNoteGroup, 0); + return bnotes; + } + const beams = []; + const voice = f.Voice().setStrict(false); + voice.addTickables(createBeamedNoteBlock(options.params.keys1, options.params.stemDirection1, beams)); + voice.addTickables(createBeamedNoteBlock(options.params.keys2, options.params.stemDirection2, beams)); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'GraceNoteStem'); +} +function slash(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 130); + const stave = f.Stave({ x: 10, y: 10, width: 650 }); + function createNotes(noteT, keys, stem_direction, slash) { + return durationsForStemTest.map((d) => createNoteForStemTest(d, noteT, keys, stem_direction, slash)); + } + function createNoteBlock(keys, stem_direction) { + const notes = [f.StaveNote({ keys: ['f/4'], stem_direction, duration: '16' })]; + let graceNotes = createNotes(f.GraceNote.bind(f), keys, stem_direction, true); + const duration = '8'; + const gns = [ + { keys: ['d/4', 'a/4'], stem_direction, duration, slash: true }, + { keys: ['d/4', 'a/4'], stem_direction, duration, slash: true }, + { keys: ['d/4', 'a/4'], stem_direction, duration, slash: true }, + { keys: ['e/4', 'a/4'], stem_direction, duration, slash: true }, + { keys: ['e/4', 'a/4'], stem_direction, duration, slash: true }, + { keys: ['b/4', 'f/5'], stem_direction, duration, slash: true }, + { keys: ['b/4', 'f/5'], stem_direction, duration, slash: true }, + { keys: ['b/4', 'f/5'], stem_direction, duration, slash: true }, + { keys: ['e/4', 'a/4'], stem_direction, duration, slash: true }, + ].map(f.GraceNote.bind(f)); + const notesToBeam = []; + notesToBeam.push([gns[0], gns[1], gns[2]]); + notesToBeam.push([gns[3], gns[4], gns[5]]); + notesToBeam.push([gns[6], gns[7], gns[8]]); + // Merge the two GraceNote[]. + graceNotes = graceNotes.concat(gns); + const graceNoteGroup = f.GraceNoteGroup({ notes: graceNotes }); + notesToBeam.forEach((notes) => graceNoteGroup.beamNotes(notes)); + notes[0].addModifier(graceNoteGroup, 0); + return notes; + } + const voice = f.Voice().setStrict(false); + voice.addTickables(createNoteBlock(['d/4', 'a/4'], 1)); + voice.addTickables(createNoteBlock(['d/4', 'a/4'], -1)); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'GraceNoteSlash'); +} +function slashWithBeams(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 800, 130); + const stave = f.Stave({ x: 10, y: 10, width: 750 }); + function createNoteBlock(keys, stem_direction) { + const notes = [f.StaveNote({ keys: ['f/4'], stem_direction, duration: '16' })]; + let allGraceNotes = []; + const graceNotesToBeam = []; + ['8', '16', '32', '64'].forEach(function (duration) { + const graceNotes = [ + { keys: ['d/4', 'a/4'], stem_direction, duration, slash: true }, + { keys: ['d/4', 'a/4'], stem_direction, duration, slash: false }, + { keys: ['e/4', 'a/4'], stem_direction, duration, slash: true }, + { keys: ['b/4', 'f/5'], stem_direction, duration, slash: false }, + { keys: ['b/4', 'f/5'], stem_direction, duration, slash: true }, + { keys: ['e/4', 'a/4'], stem_direction, duration, slash: false }, + ].map(f.GraceNote.bind(f)); + graceNotesToBeam.push([graceNotes[0], graceNotes[1]]); + graceNotesToBeam.push([graceNotes[2], graceNotes[3]]); + graceNotesToBeam.push([graceNotes[4], graceNotes[5]]); + allGraceNotes = allGraceNotes.concat(graceNotes); + }); + const graceNoteGroup = f.GraceNoteGroup({ notes: allGraceNotes }); + graceNotesToBeam.forEach((g) => graceNoteGroup.beamNotes(g)); + notes[0].addModifier(graceNoteGroup, 0); + return notes; + } + const voice = f.Voice().setStrict(false); + voice.addTickables(createNoteBlock(['d/4', 'a/4'], 1)); + voice.addTickables(createNoteBlock(['d/4', 'a/4'], -1)); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'GraceNoteSlashWithBeams'); +} +function multipleVoices(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 450, 140); + const stave = f.Stave({ x: 10, y: 10, width: 450 }); + const notes = [ + { keys: ['f/5'], stem_direction: 1, duration: '16' }, + { keys: ['f/5'], stem_direction: 1, duration: '16' }, + { keys: ['d/5'], stem_direction: 1, duration: '16' }, + { keys: ['c/5'], stem_direction: 1, duration: '16' }, + { keys: ['c/5'], stem_direction: 1, duration: '16' }, + { keys: ['d/5'], stem_direction: 1, duration: '16' }, + { keys: ['f/5'], stem_direction: 1, duration: '16' }, + { keys: ['e/5'], stem_direction: 1, duration: '16' }, + ].map(f.StaveNote.bind(f)); + const notes2 = [ + { keys: ['f/4'], stem_direction: -1, duration: '16' }, + { keys: ['e/4'], stem_direction: -1, duration: '16' }, + { keys: ['d/4'], stem_direction: -1, duration: '16' }, + { keys: ['c/4'], stem_direction: -1, duration: '16' }, + { keys: ['c/4'], stem_direction: -1, duration: '16' }, + { keys: ['d/4'], stem_direction: -1, duration: '16' }, + { keys: ['f/4'], stem_direction: -1, duration: '16' }, + { keys: ['e/4'], stem_direction: -1, duration: '16' }, + ].map(f.StaveNote.bind(f)); + const gracenotes1 = [{ keys: ['b/4'], stem_direction: 1, duration: '8', slash: true }].map(f.GraceNote.bind(f)); + const gracenotes2 = [{ keys: ['f/4'], stem_direction: -1, duration: '8', slash: true }].map(f.GraceNote.bind(f)); + const gracenotes3 = [ + { keys: ['f/4'], duration: '32', stem_direction: -1 }, + { keys: ['e/4'], duration: '32', stem_direction: -1 }, + ].map(f.GraceNote.bind(f)); + const gracenotes4 = [ + { keys: ['f/5'], duration: '32', stem_direction: 1 }, + { keys: ['e/5'], duration: '32', stem_direction: 1 }, + { keys: ['e/5'], duration: '8', stem_direction: 1 }, + ].map(f.GraceNote.bind(f)); + gracenotes2[0].setStemDirection(-1); + gracenotes2[0].addModifier(f.Accidental({ type: '#' }), 0); + notes[1].addModifier(f.GraceNoteGroup({ notes: gracenotes4 }).beamNotes(), 0); + notes[3].addModifier(f.GraceNoteGroup({ notes: gracenotes1 }), 0); + notes2[1].addModifier(f.GraceNoteGroup({ notes: gracenotes2 }).beamNotes(), 0); + notes2[5].addModifier(f.GraceNoteGroup({ notes: gracenotes3 }).beamNotes(), 0); + const voice = f.Voice().setStrict(false).addTickables(notes); + const voice2 = f.Voice().setStrict(false).addTickables(notes2); + f.Beam({ notes: notes.slice(0, 4) }); + f.Beam({ notes: notes.slice(4, 8) }); + f.Beam({ notes: notes2.slice(0, 4) }); + f.Beam({ notes: notes2.slice(4, 8) }); + f.Formatter().joinVoices([voice, voice2]).formatToStave([voice, voice2], stave); + f.draw(); + ok(true, 'Sixteenth Test'); +} +function multipleVoicesMultipleDraws(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 450, 140); + const stave = f.Stave({ x: 10, y: 10, width: 450 }); + const notes = [ + { keys: ['f/5'], stem_direction: 1, duration: '16' }, + { keys: ['f/5'], stem_direction: 1, duration: '16' }, + { keys: ['d/5'], stem_direction: 1, duration: '16' }, + { keys: ['c/5'], stem_direction: 1, duration: '16' }, + { keys: ['c/5'], stem_direction: 1, duration: '16' }, + { keys: ['d/5'], stem_direction: 1, duration: '16' }, + { keys: ['f/5'], stem_direction: 1, duration: '16' }, + { keys: ['e/5'], stem_direction: 1, duration: '16' }, + ].map(f.StaveNote.bind(f)); + const notes2 = [ + { keys: ['f/4'], stem_direction: -1, duration: '16' }, + { keys: ['e/4'], stem_direction: -1, duration: '16' }, + { keys: ['d/4'], stem_direction: -1, duration: '16' }, + { keys: ['c/4'], stem_direction: -1, duration: '16' }, + { keys: ['c/4'], stem_direction: -1, duration: '16' }, + { keys: ['d/4'], stem_direction: -1, duration: '16' }, + { keys: ['f/4'], stem_direction: -1, duration: '16' }, + { keys: ['e/4'], stem_direction: -1, duration: '16' }, + ].map(f.StaveNote.bind(f)); + const gracenotes1 = [{ keys: ['b/4'], stem_direction: 1, duration: '8', slash: true }].map(f.GraceNote.bind(f)); + const gracenotes2 = [{ keys: ['f/4'], stem_direction: -1, duration: '8', slash: true }].map(f.GraceNote.bind(f)); + const gracenotes3 = [ + { keys: ['f/4'], duration: '32', stem_direction: -1 }, + { keys: ['e/4'], duration: '32', stem_direction: -1 }, + ].map(f.GraceNote.bind(f)); + const gracenotes4 = [ + { keys: ['f/5'], duration: '32', stem_direction: 1 }, + { keys: ['e/5'], duration: '32', stem_direction: 1 }, + { keys: ['e/5'], duration: '8', stem_direction: 1 }, + ].map(f.GraceNote.bind(f)); + gracenotes2[0].setStemDirection(-1); + gracenotes2[0].addModifier(f.Accidental({ type: '#' }), 0); + notes[1].addModifier(f.GraceNoteGroup({ notes: gracenotes4 }).beamNotes(), 0); + notes[3].addModifier(f.GraceNoteGroup({ notes: gracenotes1 }), 0); + notes2[1].addModifier(f.GraceNoteGroup({ notes: gracenotes2 }).beamNotes(), 0); + notes2[5].addModifier(f.GraceNoteGroup({ notes: gracenotes3 }).beamNotes(), 0); + const voice = f.Voice().setStrict(false).addTickables(notes); + const voice2 = f.Voice().setStrict(false).addTickables(notes2); + f.Beam({ notes: notes.slice(0, 4) }); + f.Beam({ notes: notes.slice(4, 8) }); + f.Beam({ notes: notes2.slice(0, 4) }); + f.Beam({ notes: notes2.slice(4, 8) }); + f.Formatter().joinVoices([voice, voice2]).formatToStave([voice, voice2], stave); + f.draw(); + f.draw(); + ok(true, 'Seventeenth Test'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(GraceNoteTests); + + + +/***/ }), + +/***/ "./tests/gracetabnote_tests.ts": +/*!*************************************!*\ + !*** ./tests/gracetabnote_tests.ts ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "GraceTabNoteTests": () => (/* binding */ GraceTabNoteTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_flow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/flow */ "./src/flow.ts"); +/* harmony import */ var _src_formatter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/formatter */ "./src/formatter.ts"); +/* harmony import */ var _src_gracenotegroup__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/gracenotegroup */ "./src/gracenotegroup.ts"); +/* harmony import */ var _src_gracetabnote__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/gracetabnote */ "./src/gracetabnote.ts"); +/* harmony import */ var _src_tabnote__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/tabnote */ "./src/tabnote.ts"); +/* harmony import */ var _src_tabstave__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../src/tabstave */ "./src/tabstave.ts"); +/* harmony import */ var _src_voice__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../src/voice */ "./src/voice.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// GraceTabNote Tests + + + + + + + + +const GraceTabNoteTests = { + Start() { + QUnit.module('Grace Tab Notes'); + // TODO: Rename tests below since it is redundant with the module name. + // Remove "Grace Tab Note " + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Grace Tab Note Simple', simple); + run('Grace Tab Note Slurred', slurred); + }, +}; +// Helper functions to create TabNote and GraceTabNote objects. +const tabNote = (noteStruct) => new _src_tabnote__WEBPACK_IMPORTED_MODULE_5__.TabNote(noteStruct); +const graceTabNote = (noteStruct) => new _src_gracetabnote__WEBPACK_IMPORTED_MODULE_4__.GraceTabNote(noteStruct); +/** + * Helper function to build a RenderContext and TabStave. + */ +function setupContext(opts, ctxBuilder) { + const context = ctxBuilder(opts.elementId, 350, 140); + const stave = new _src_tabstave__WEBPACK_IMPORTED_MODULE_6__.TabStave(10, 10, 350).addTabGlyph().setContext(context).draw(); + return { context, stave }; +} +function simple(options, contextBuilder) { + const { context, stave } = setupContext(options, contextBuilder); + const note0 = tabNote({ positions: [{ str: 4, fret: 6 }], duration: '4' }); + const note1 = tabNote({ positions: [{ str: 4, fret: 12 }], duration: '4' }); + const note2 = tabNote({ positions: [{ str: 4, fret: 10 }], duration: '4' }); + const note3 = tabNote({ positions: [{ str: 4, fret: 10 }], duration: '4' }); + const gracenote_group0 = [{ positions: [{ str: 4, fret: 'x' }], duration: '8' }]; + const gracenote_group1 = [ + { positions: [{ str: 4, fret: 9 }], duration: '16' }, + { positions: [{ str: 4, fret: 10 }], duration: '16' }, + ]; + const gracenote_group2 = [{ positions: [{ str: 4, fret: 9 }], duration: '8' }]; + const gracenote_group3 = [ + { positions: [{ str: 5, fret: 10 }], duration: '8' }, + { positions: [{ str: 4, fret: 9 }], duration: '8' }, + ]; + const gracenotes0 = gracenote_group0.map(graceTabNote); + const gracenotes1 = gracenote_group1.map(graceTabNote); + const gracenotes2 = gracenote_group2.map(graceTabNote); + gracenotes2[0].setGhost(true); + const gracenotes3 = gracenote_group3.map(graceTabNote); + note0.addModifier(new _src_gracenotegroup__WEBPACK_IMPORTED_MODULE_3__.GraceNoteGroup(gracenotes0), 0); + note1.addModifier(new _src_gracenotegroup__WEBPACK_IMPORTED_MODULE_3__.GraceNoteGroup(gracenotes1), 0); + note2.addModifier(new _src_gracenotegroup__WEBPACK_IMPORTED_MODULE_3__.GraceNoteGroup(gracenotes2), 0); + note3.addModifier(new _src_gracenotegroup__WEBPACK_IMPORTED_MODULE_3__.GraceNoteGroup(gracenotes3), 0); + const voice = new _src_voice__WEBPACK_IMPORTED_MODULE_7__.Voice(_src_flow__WEBPACK_IMPORTED_MODULE_1__.Flow.TIME4_4); + voice.addTickables([note0, note1, note2, note3]); + new _src_formatter__WEBPACK_IMPORTED_MODULE_2__.Formatter().joinVoices([voice]).format([voice], 250); + voice.draw(context, stave); + ok(true, 'Simple Test'); +} +function slurred(options, contextBuilder) { + const { context, stave } = setupContext(options, contextBuilder); + const note0 = tabNote({ positions: [{ str: 4, fret: 12 }], duration: 'h' }); + const note1 = tabNote({ positions: [{ str: 4, fret: 10 }], duration: 'h' }); + const gracenote_group0 = [ + { positions: [{ str: 4, fret: 9 }], duration: '8' }, + { positions: [{ str: 4, fret: 10 }], duration: '8' }, + ]; + const gracenote_group1 = [ + { positions: [{ str: 4, fret: 7 }], duration: '16' }, + { positions: [{ str: 4, fret: 8 }], duration: '16' }, + { positions: [{ str: 4, fret: 9 }], duration: '16' }, + ]; + const gracenotes0 = gracenote_group0.map(graceTabNote); + const gracenotes1 = gracenote_group1.map(graceTabNote); + note0.addModifier(new _src_gracenotegroup__WEBPACK_IMPORTED_MODULE_3__.GraceNoteGroup(gracenotes0, true), 0); + note1.addModifier(new _src_gracenotegroup__WEBPACK_IMPORTED_MODULE_3__.GraceNoteGroup(gracenotes1, true), 0); + const voice = new _src_voice__WEBPACK_IMPORTED_MODULE_7__.Voice(_src_flow__WEBPACK_IMPORTED_MODULE_1__.Flow.TIME4_4); + voice.addTickables([note0, note1]); + new _src_formatter__WEBPACK_IMPORTED_MODULE_2__.Formatter().joinVoices([voice]).format([voice], 200); + voice.draw(context, stave); + ok(true, 'Slurred Test'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(GraceTabNoteTests); + + + +/***/ }), + +/***/ "./tests/index.ts": +/*!************************!*\ + !*** ./tests/index.ts ***! + \************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "AccidentalTests": () => (/* reexport safe */ _accidental_tests__WEBPACK_IMPORTED_MODULE_0__.AccidentalTests), +/* harmony export */ "AnnotationTests": () => (/* reexport safe */ _annotation_tests__WEBPACK_IMPORTED_MODULE_1__.AnnotationTests), +/* harmony export */ "ArticulationTests": () => (/* reexport safe */ _articulation_tests__WEBPACK_IMPORTED_MODULE_2__.ArticulationTests), +/* harmony export */ "AutoBeamFormattingTests": () => (/* reexport safe */ _auto_beam_formatting_tests__WEBPACK_IMPORTED_MODULE_3__.AutoBeamFormattingTests), +/* harmony export */ "BachDemoTests": () => (/* reexport safe */ _bach_tests__WEBPACK_IMPORTED_MODULE_4__.BachDemoTests), +/* harmony export */ "BarlineTests": () => (/* reexport safe */ _barline_tests__WEBPACK_IMPORTED_MODULE_5__.BarlineTests), +/* harmony export */ "BeamTests": () => (/* reexport safe */ _beam_tests__WEBPACK_IMPORTED_MODULE_6__.BeamTests), +/* harmony export */ "BendTests": () => (/* reexport safe */ _bend_tests__WEBPACK_IMPORTED_MODULE_7__.BendTests), +/* harmony export */ "BoundingBoxTests": () => (/* reexport safe */ _boundingbox_tests__WEBPACK_IMPORTED_MODULE_8__.BoundingBoxTests), +/* harmony export */ "BoundingBoxComputationTests": () => (/* reexport safe */ _boundingboxcomputation_tests__WEBPACK_IMPORTED_MODULE_9__.BoundingBoxComputationTests), +/* harmony export */ "ChordSymbolTests": () => (/* reexport safe */ _chordsymbol_tests__WEBPACK_IMPORTED_MODULE_10__.ChordSymbolTests), +/* harmony export */ "ClefTests": () => (/* reexport safe */ _clef_tests__WEBPACK_IMPORTED_MODULE_11__.ClefTests), +/* harmony export */ "CurveTests": () => (/* reexport safe */ _curve_tests__WEBPACK_IMPORTED_MODULE_12__.CurveTests), +/* harmony export */ "DotTests": () => (/* reexport safe */ _dot_tests__WEBPACK_IMPORTED_MODULE_13__.DotTests), +/* harmony export */ "EasyScoreTests": () => (/* reexport safe */ _easyscore_tests__WEBPACK_IMPORTED_MODULE_14__.EasyScoreTests), +/* harmony export */ "FactoryTests": () => (/* reexport safe */ _factory_tests__WEBPACK_IMPORTED_MODULE_15__.FactoryTests), +/* harmony export */ "FontTests": () => (/* reexport safe */ _font_tests__WEBPACK_IMPORTED_MODULE_16__.FontTests), +/* harmony export */ "FormatterTests": () => (/* reexport safe */ _formatter_tests__WEBPACK_IMPORTED_MODULE_17__.FormatterTests), +/* harmony export */ "FractionTests": () => (/* reexport safe */ _fraction_tests__WEBPACK_IMPORTED_MODULE_18__.FractionTests), +/* harmony export */ "GhostNoteTests": () => (/* reexport safe */ _ghostnote_tests__WEBPACK_IMPORTED_MODULE_19__.GhostNoteTests), +/* harmony export */ "GlyphNoteTests": () => (/* reexport safe */ _glyphnote_tests__WEBPACK_IMPORTED_MODULE_20__.GlyphNoteTests), +/* harmony export */ "GraceNoteTests": () => (/* reexport safe */ _gracenote_tests__WEBPACK_IMPORTED_MODULE_21__.GraceNoteTests), +/* harmony export */ "GraceTabNoteTests": () => (/* reexport safe */ _gracetabnote_tests__WEBPACK_IMPORTED_MODULE_22__.GraceTabNoteTests), +/* harmony export */ "ClefKeySignatureTests": () => (/* reexport safe */ _key_clef_tests__WEBPACK_IMPORTED_MODULE_23__.ClefKeySignatureTests), +/* harmony export */ "KeyManagerTests": () => (/* reexport safe */ _keymanager_tests__WEBPACK_IMPORTED_MODULE_24__.KeyManagerTests), +/* harmony export */ "KeySignatureTests": () => (/* reexport safe */ _keysignature_tests__WEBPACK_IMPORTED_MODULE_25__.KeySignatureTests), +/* harmony export */ "ModifierContextTests": () => (/* reexport safe */ _modifier_tests__WEBPACK_IMPORTED_MODULE_26__.ModifierContextTests), +/* harmony export */ "MultiMeasureRestTests": () => (/* reexport safe */ _multimeasurerest_tests__WEBPACK_IMPORTED_MODULE_27__.MultiMeasureRestTests), +/* harmony export */ "MusicTests": () => (/* reexport safe */ _music_tests__WEBPACK_IMPORTED_MODULE_28__.MusicTests), +/* harmony export */ "NoteHeadTests": () => (/* reexport safe */ _notehead_tests__WEBPACK_IMPORTED_MODULE_29__.NoteHeadTests), +/* harmony export */ "NoteSubGroupTests": () => (/* reexport safe */ _notesubgroup_tests__WEBPACK_IMPORTED_MODULE_30__.NoteSubGroupTests), +/* harmony export */ "OffscreenCanvasTests": () => (/* reexport safe */ _offscreencanvas_tests__WEBPACK_IMPORTED_MODULE_31__.OffscreenCanvasTests), +/* harmony export */ "OrnamentTests": () => (/* reexport safe */ _ornament_tests__WEBPACK_IMPORTED_MODULE_32__.OrnamentTests), +/* harmony export */ "ParserTests": () => (/* reexport safe */ _parser_tests__WEBPACK_IMPORTED_MODULE_33__.ParserTests), +/* harmony export */ "PedalMarkingTests": () => (/* reexport safe */ _pedalmarking_tests__WEBPACK_IMPORTED_MODULE_34__.PedalMarkingTests), +/* harmony export */ "PercussionTests": () => (/* reexport safe */ _percussion_tests__WEBPACK_IMPORTED_MODULE_35__.PercussionTests), +/* harmony export */ "RegistryTests": () => (/* reexport safe */ _registry_tests__WEBPACK_IMPORTED_MODULE_36__.RegistryTests), +/* harmony export */ "RendererTests": () => (/* reexport safe */ _renderer_tests__WEBPACK_IMPORTED_MODULE_37__.RendererTests), +/* harmony export */ "RestsTests": () => (/* reexport safe */ _rests_tests__WEBPACK_IMPORTED_MODULE_38__.RestsTests), +/* harmony export */ "RhythmTests": () => (/* reexport safe */ _rhythm_tests__WEBPACK_IMPORTED_MODULE_39__.RhythmTests), +/* harmony export */ "StaveTests": () => (/* reexport safe */ _stave_tests__WEBPACK_IMPORTED_MODULE_40__.StaveTests), +/* harmony export */ "StaveConnectorTests": () => (/* reexport safe */ _staveconnector_tests__WEBPACK_IMPORTED_MODULE_41__.StaveConnectorTests), +/* harmony export */ "StaveHairpinTests": () => (/* reexport safe */ _stavehairpin_tests__WEBPACK_IMPORTED_MODULE_42__.StaveHairpinTests), +/* harmony export */ "StaveLineTests": () => (/* reexport safe */ _staveline_tests__WEBPACK_IMPORTED_MODULE_43__.StaveLineTests), +/* harmony export */ "StaveModifierTests": () => (/* reexport safe */ _stavemodifier_tests__WEBPACK_IMPORTED_MODULE_44__.StaveModifierTests), +/* harmony export */ "StaveNoteTests": () => (/* reexport safe */ _stavenote_tests__WEBPACK_IMPORTED_MODULE_45__.StaveNoteTests), +/* harmony export */ "StaveTieTests": () => (/* reexport safe */ _stavetie_tests__WEBPACK_IMPORTED_MODULE_46__.StaveTieTests), +/* harmony export */ "StringNumberTests": () => (/* reexport safe */ _stringnumber_tests__WEBPACK_IMPORTED_MODULE_47__.StringNumberTests), +/* harmony export */ "StrokesTests": () => (/* reexport safe */ _strokes_tests__WEBPACK_IMPORTED_MODULE_48__.StrokesTests), +/* harmony export */ "StyleTests": () => (/* reexport safe */ _style_tests__WEBPACK_IMPORTED_MODULE_49__.StyleTests), +/* harmony export */ "TabNoteTests": () => (/* reexport safe */ _tabnote_tests__WEBPACK_IMPORTED_MODULE_50__.TabNoteTests), +/* harmony export */ "TabSlideTests": () => (/* reexport safe */ _tabslide_tests__WEBPACK_IMPORTED_MODULE_51__.TabSlideTests), +/* harmony export */ "TabStaveTests": () => (/* reexport safe */ _tabstave_tests__WEBPACK_IMPORTED_MODULE_52__.TabStaveTests), +/* harmony export */ "TabTieTests": () => (/* reexport safe */ _tabtie_tests__WEBPACK_IMPORTED_MODULE_53__.TabTieTests), +/* harmony export */ "TextBracketTests": () => (/* reexport safe */ _textbracket_tests__WEBPACK_IMPORTED_MODULE_54__.TextBracketTests), +/* harmony export */ "TextFormatterTests": () => (/* reexport safe */ _textformatter_tests__WEBPACK_IMPORTED_MODULE_55__.TextFormatterTests), +/* harmony export */ "TextNoteTests": () => (/* reexport safe */ _textnote_tests__WEBPACK_IMPORTED_MODULE_56__.TextNoteTests), +/* harmony export */ "ThreeVoicesTests": () => (/* reexport safe */ _threevoice_tests__WEBPACK_IMPORTED_MODULE_57__.ThreeVoicesTests), +/* harmony export */ "TickContextTests": () => (/* reexport safe */ _tickcontext_tests__WEBPACK_IMPORTED_MODULE_58__.TickContextTests), +/* harmony export */ "TimeSignatureTests": () => (/* reexport safe */ _timesignature_tests__WEBPACK_IMPORTED_MODULE_59__.TimeSignatureTests), +/* harmony export */ "TremoloTests": () => (/* reexport safe */ _tremolo_tests__WEBPACK_IMPORTED_MODULE_60__.TremoloTests), +/* harmony export */ "TuningTests": () => (/* reexport safe */ _tuning_tests__WEBPACK_IMPORTED_MODULE_61__.TuningTests), +/* harmony export */ "TupletTests": () => (/* reexport safe */ _tuplet_tests__WEBPACK_IMPORTED_MODULE_62__.TupletTests), +/* harmony export */ "TypeGuardTests": () => (/* reexport safe */ _typeguard_tests__WEBPACK_IMPORTED_MODULE_63__.TypeGuardTests), +/* harmony export */ "VFPrefixTests": () => (/* reexport safe */ _vf_prefix_tests__WEBPACK_IMPORTED_MODULE_64__.VFPrefixTests), +/* harmony export */ "VibratoTests": () => (/* reexport safe */ _vibrato_tests__WEBPACK_IMPORTED_MODULE_65__.VibratoTests), +/* harmony export */ "VibratoBracketTests": () => (/* reexport safe */ _vibratobracket_tests__WEBPACK_IMPORTED_MODULE_66__.VibratoBracketTests), +/* harmony export */ "VoiceTests": () => (/* reexport safe */ _voice_tests__WEBPACK_IMPORTED_MODULE_67__.VoiceTests) +/* harmony export */ }); +/* harmony import */ var _accidental_tests__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./accidental_tests */ "./tests/accidental_tests.ts"); +/* harmony import */ var _annotation_tests__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./annotation_tests */ "./tests/annotation_tests.ts"); +/* harmony import */ var _articulation_tests__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./articulation_tests */ "./tests/articulation_tests.ts"); +/* harmony import */ var _auto_beam_formatting_tests__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./auto_beam_formatting_tests */ "./tests/auto_beam_formatting_tests.ts"); +/* harmony import */ var _bach_tests__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bach_tests */ "./tests/bach_tests.ts"); +/* harmony import */ var _barline_tests__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./barline_tests */ "./tests/barline_tests.ts"); +/* harmony import */ var _beam_tests__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./beam_tests */ "./tests/beam_tests.ts"); +/* harmony import */ var _bend_tests__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./bend_tests */ "./tests/bend_tests.ts"); +/* harmony import */ var _boundingbox_tests__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./boundingbox_tests */ "./tests/boundingbox_tests.ts"); +/* harmony import */ var _boundingboxcomputation_tests__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./boundingboxcomputation_tests */ "./tests/boundingboxcomputation_tests.ts"); +/* harmony import */ var _chordsymbol_tests__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./chordsymbol_tests */ "./tests/chordsymbol_tests.ts"); +/* harmony import */ var _clef_tests__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./clef_tests */ "./tests/clef_tests.ts"); +/* harmony import */ var _curve_tests__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./curve_tests */ "./tests/curve_tests.ts"); +/* harmony import */ var _dot_tests__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./dot_tests */ "./tests/dot_tests.ts"); +/* harmony import */ var _easyscore_tests__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./easyscore_tests */ "./tests/easyscore_tests.ts"); +/* harmony import */ var _factory_tests__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./factory_tests */ "./tests/factory_tests.ts"); +/* harmony import */ var _font_tests__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./font_tests */ "./tests/font_tests.ts"); +/* harmony import */ var _formatter_tests__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./formatter_tests */ "./tests/formatter_tests.ts"); +/* harmony import */ var _fraction_tests__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./fraction_tests */ "./tests/fraction_tests.ts"); +/* harmony import */ var _ghostnote_tests__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./ghostnote_tests */ "./tests/ghostnote_tests.ts"); +/* harmony import */ var _glyphnote_tests__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./glyphnote_tests */ "./tests/glyphnote_tests.ts"); +/* harmony import */ var _gracenote_tests__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./gracenote_tests */ "./tests/gracenote_tests.ts"); +/* harmony import */ var _gracetabnote_tests__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./gracetabnote_tests */ "./tests/gracetabnote_tests.ts"); +/* harmony import */ var _key_clef_tests__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./key_clef_tests */ "./tests/key_clef_tests.ts"); +/* harmony import */ var _keymanager_tests__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./keymanager_tests */ "./tests/keymanager_tests.ts"); +/* harmony import */ var _keysignature_tests__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./keysignature_tests */ "./tests/keysignature_tests.ts"); +/* harmony import */ var _modifier_tests__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./modifier_tests */ "./tests/modifier_tests.ts"); +/* harmony import */ var _multimeasurerest_tests__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./multimeasurerest_tests */ "./tests/multimeasurerest_tests.ts"); +/* harmony import */ var _music_tests__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./music_tests */ "./tests/music_tests.ts"); +/* harmony import */ var _notehead_tests__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./notehead_tests */ "./tests/notehead_tests.ts"); +/* harmony import */ var _notesubgroup_tests__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./notesubgroup_tests */ "./tests/notesubgroup_tests.ts"); +/* harmony import */ var _offscreencanvas_tests__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./offscreencanvas_tests */ "./tests/offscreencanvas_tests.ts"); +/* harmony import */ var _ornament_tests__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./ornament_tests */ "./tests/ornament_tests.ts"); +/* harmony import */ var _parser_tests__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./parser_tests */ "./tests/parser_tests.ts"); +/* harmony import */ var _pedalmarking_tests__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./pedalmarking_tests */ "./tests/pedalmarking_tests.ts"); +/* harmony import */ var _percussion_tests__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./percussion_tests */ "./tests/percussion_tests.ts"); +/* harmony import */ var _registry_tests__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./registry_tests */ "./tests/registry_tests.ts"); +/* harmony import */ var _renderer_tests__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./renderer_tests */ "./tests/renderer_tests.ts"); +/* harmony import */ var _rests_tests__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./rests_tests */ "./tests/rests_tests.ts"); +/* harmony import */ var _rhythm_tests__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./rhythm_tests */ "./tests/rhythm_tests.ts"); +/* harmony import */ var _stave_tests__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./stave_tests */ "./tests/stave_tests.ts"); +/* harmony import */ var _staveconnector_tests__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./staveconnector_tests */ "./tests/staveconnector_tests.ts"); +/* harmony import */ var _stavehairpin_tests__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./stavehairpin_tests */ "./tests/stavehairpin_tests.ts"); +/* harmony import */ var _staveline_tests__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./staveline_tests */ "./tests/staveline_tests.ts"); +/* harmony import */ var _stavemodifier_tests__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./stavemodifier_tests */ "./tests/stavemodifier_tests.ts"); +/* harmony import */ var _stavenote_tests__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./stavenote_tests */ "./tests/stavenote_tests.ts"); +/* harmony import */ var _stavetie_tests__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./stavetie_tests */ "./tests/stavetie_tests.ts"); +/* harmony import */ var _stringnumber_tests__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./stringnumber_tests */ "./tests/stringnumber_tests.ts"); +/* harmony import */ var _strokes_tests__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./strokes_tests */ "./tests/strokes_tests.ts"); +/* harmony import */ var _style_tests__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./style_tests */ "./tests/style_tests.ts"); +/* harmony import */ var _tabnote_tests__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./tabnote_tests */ "./tests/tabnote_tests.ts"); +/* harmony import */ var _tabslide_tests__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./tabslide_tests */ "./tests/tabslide_tests.ts"); +/* harmony import */ var _tabstave_tests__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./tabstave_tests */ "./tests/tabstave_tests.ts"); +/* harmony import */ var _tabtie_tests__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./tabtie_tests */ "./tests/tabtie_tests.ts"); +/* harmony import */ var _textbracket_tests__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./textbracket_tests */ "./tests/textbracket_tests.ts"); +/* harmony import */ var _textformatter_tests__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./textformatter_tests */ "./tests/textformatter_tests.ts"); +/* harmony import */ var _textnote_tests__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./textnote_tests */ "./tests/textnote_tests.ts"); +/* harmony import */ var _threevoice_tests__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./threevoice_tests */ "./tests/threevoice_tests.ts"); +/* harmony import */ var _tickcontext_tests__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./tickcontext_tests */ "./tests/tickcontext_tests.ts"); +/* harmony import */ var _timesignature_tests__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./timesignature_tests */ "./tests/timesignature_tests.ts"); +/* harmony import */ var _tremolo_tests__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./tremolo_tests */ "./tests/tremolo_tests.ts"); +/* harmony import */ var _tuning_tests__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./tuning_tests */ "./tests/tuning_tests.ts"); +/* harmony import */ var _tuplet_tests__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ./tuplet_tests */ "./tests/tuplet_tests.ts"); +/* harmony import */ var _typeguard_tests__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./typeguard_tests */ "./tests/typeguard_tests.ts"); +/* harmony import */ var _vf_prefix_tests__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./vf_prefix_tests */ "./tests/vf_prefix_tests.ts"); +/* harmony import */ var _vibrato_tests__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./vibrato_tests */ "./tests/vibrato_tests.ts"); +/* harmony import */ var _vibratobracket_tests__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./vibratobracket_tests */ "./tests/vibratobracket_tests.ts"); +/* harmony import */ var _voice_tests__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./voice_tests */ "./tests/voice_tests.ts"); +// vexflow-debug-with-tests.ts includes this module via: +// export * from '../../tests'; +// +// To add a new test module, add a new line: +// `export * from './xxxx_tests';` +// to this file that points to the new file `xxxx_tests.ts`. +// +// The test module needs to call VexFlowTests.register(...). +// For example, in annotation_tests.ts, the last two lines are: +// VexFlowTests.register(AnnotationTests); +// export { AnnotationTests }; +// +// In vexflow_test_helpers.ts: VexFlowTests.run() will run all registered tests. +// +// To iterate faster during development, you can comment out most of this file +// and focus on just testing the module(s) you are currently working on. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +/***/ }), + +/***/ "./tests/key_clef_tests.ts": +/*!*********************************!*\ + !*** ./tests/key_clef_tests.ts ***! + \*********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "ClefKeySignatureTests": () => (/* binding */ ClefKeySignatureTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/glyph */ "./src/glyph.ts"); +/* harmony import */ var _src_keysignature__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/keysignature */ "./src/keysignature.ts"); +/* harmony import */ var _src_stave__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/stave */ "./src/stave.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Clef Key Signature Tests +// + + + + +const ClefKeySignatureTests = { + Start() { + QUnit.module('Clef Keys'); + // Removed an identical 'Key Parser Test'. See keysignature_tests.ts. + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Major Key Clef Test', keys, { majorKeys: true }); + run('Minor Key Clef Test', keys, { majorKeys: false }); + run('Stave Helper', staveHelper); + }, +}; +const fontWidths = () => { + const glyphScale = 39; // default font scale + const sharpWidth = _src_glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.getWidth('accidentalSharp', glyphScale) + 1; + const flatWidth = _src_glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.getWidth('accidentalFlat', glyphScale) + 1; + const ksPadding = 10; // hard-coded in keysignature.ts + const naturalWidth = _src_glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.getWidth('accidentalNatural', glyphScale) + 2; + const clefWidth = _src_glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.getWidth('gClef', glyphScale); // widest clef + return { sharpWidth, flatWidth, naturalWidth, clefWidth, ksPadding }; +}; +function keys(options, contextBuilder) { + const w = fontWidths(); + const accidentalCount = 28; // total number in all the keys + const sharpTestWidth = accidentalCount * w.sharpWidth + w.clefWidth + _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave.defaultPadding + 6 * w.ksPadding; + const flatTestWidth = accidentalCount * w.flatWidth + w.clefWidth + _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave.defaultPadding + 6 * w.ksPadding; + const clefs = [ + 'treble', + 'soprano', + 'mezzo-soprano', + 'alto', + 'tenor', + 'baritone-f', + 'baritone-c', + 'bass', + 'french', + 'subbass', + 'percussion', + ]; + const ctx = contextBuilder(options.elementId, Math.max(sharpTestWidth, flatTestWidth) + 100, 20 + 80 * 2 * clefs.length); + const staves = []; + const keys = options.params.majorKeys ? _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.MAJOR_KEYS : _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.MINOR_KEYS; + let i; + let flat; + let sharp; + let keySig; + const yOffsetForFlatStaves = 10 + 80 * clefs.length; + for (i = 0; i < clefs.length; i++) { + // Render all the sharps first, then all the flats: + staves[i] = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(10, 10 + 80 * i, flatTestWidth); + staves[i].addClef(clefs[i]); + staves[i + clefs.length] = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(10, yOffsetForFlatStaves + 10 + 80 * i, sharpTestWidth); + staves[i + clefs.length].addClef(clefs[i]); + for (flat = 0; flat < 8; flat++) { + keySig = new _src_keysignature__WEBPACK_IMPORTED_MODULE_2__.KeySignature(keys[flat]); + keySig.addToStave(staves[i]); + } + for (sharp = 8; sharp < keys.length; sharp++) { + keySig = new _src_keysignature__WEBPACK_IMPORTED_MODULE_2__.KeySignature(keys[sharp]); + keySig.addToStave(staves[i + clefs.length]); + } + staves[i].setContext(ctx); + staves[i].draw(); + staves[i + clefs.length].setContext(ctx); + staves[i + clefs.length].draw(); + } + ok(true, 'all pass'); +} +function staveHelper(options, contextBuilder) { + const w = fontWidths(); + const accidentalCount = 28; // total number in all the keys + const sharpTestWidth = accidentalCount * w.sharpWidth + w.clefWidth + _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave.defaultPadding + 7 * w.ksPadding; + const flatTestWidth = accidentalCount * w.flatWidth + w.clefWidth + _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave.defaultPadding + 7 * w.ksPadding; + const ctx = contextBuilder(options.elementId, Math.max(sharpTestWidth, flatTestWidth) + 100, 400); + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(10, 10, flatTestWidth); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(10, 90, flatTestWidth); + const stave3 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(10, 170, sharpTestWidth); + const stave4 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(10, 260, sharpTestWidth); + const keys = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.MAJOR_KEYS; + stave1.addClef('treble'); + stave2.addClef('bass'); + stave3.addClef('alto'); + stave4.addClef('tenor'); + for (let n = 0; n < 8; ++n) { + stave1.addKeySignature(keys[n]); + stave2.addKeySignature(keys[n]); + } + for (let i = 8; i < keys.length; ++i) { + stave3.addKeySignature(keys[i]); + stave4.addKeySignature(keys[i]); + } + stave1.setContext(ctx); + stave1.draw(); + stave2.setContext(ctx); + stave2.draw(); + stave3.setContext(ctx); + stave3.draw(); + stave4.setContext(ctx); + stave4.draw(); + ok(true, 'all pass'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(ClefKeySignatureTests); + + + +/***/ }), + +/***/ "./tests/keymanager_tests.ts": +/*!***********************************!*\ + !*** ./tests/keymanager_tests.ts ***! + \***********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "KeyManagerTests": () => (/* binding */ KeyManagerTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/index */ "./src/index.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Music Key Management Tests +// +// TODO: KeyManager.getAccidental(key) specifies that the return value's .accidental property is string | undefined. +// However, we check it against null. + + +const KeyManagerTests = { + Start() { + QUnit.module('KeyManager'); + test('Valid Notes', works); + test('Select Notes', selectNotes); + }, +}; +function works() { + const manager = new _src_index__WEBPACK_IMPORTED_MODULE_1__.KeyManager('g'); + equal(manager.getAccidental('f').accidental, '#'); + manager.setKey('a'); + equal(manager.getAccidental('c').accidental, '#'); + equal(manager.getAccidental('a').accidental, null); + equal(manager.getAccidental('f').accidental, '#'); + manager.setKey('A'); + equal(manager.getAccidental('c').accidental, '#'); + equal(manager.getAccidental('a').accidental, null); + equal(manager.getAccidental('f').accidental, '#'); +} +function selectNotes() { + const manager = new _src_index__WEBPACK_IMPORTED_MODULE_1__.KeyManager('f'); + equal(manager.selectNote('bb').note, 'bb'); + equal(manager.selectNote('bb').accidental, 'b'); + equal(manager.selectNote('g').note, 'g'); + equal(manager.selectNote('g').accidental, null); + equal(manager.selectNote('b').note, 'b'); + equal(manager.selectNote('b').accidental, null); + equal(manager.selectNote('a#').note, 'bb'); + equal(manager.selectNote('g#').note, 'g#'); + // Changes have no effect? + equal(manager.selectNote('g#').note, 'g#'); + equal(manager.selectNote('bb').note, 'bb'); + equal(manager.selectNote('bb').accidental, 'b'); + equal(manager.selectNote('g').note, 'g'); + equal(manager.selectNote('g').accidental, null); + equal(manager.selectNote('b').note, 'b'); + equal(manager.selectNote('b').accidental, null); + equal(manager.selectNote('a#').note, 'bb'); + equal(manager.selectNote('g#').note, 'g#'); + // Changes should propagate + manager.reset(); + equal(manager.selectNote('g#').change, true); + equal(manager.selectNote('g#').change, false); + equal(manager.selectNote('g').change, true); + equal(manager.selectNote('g').change, false); + equal(manager.selectNote('g#').change, true); + manager.reset(); + let note = manager.selectNote('bb'); + equal(note.change, false); + equal(note.accidental, 'b'); + note = manager.selectNote('g'); + equal(note.change, false); + equal(note.accidental, null); + note = manager.selectNote('g#'); + equal(note.change, true); + equal(note.accidental, '#'); + note = manager.selectNote('g'); + equal(note.change, true); + equal(note.accidental, null); + note = manager.selectNote('g'); + equal(note.change, false); + equal(note.accidental, null); + note = manager.selectNote('g#'); + equal(note.change, true); + equal(note.accidental, '#'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(KeyManagerTests); + + + +/***/ }), + +/***/ "./tests/keysignature_tests.ts": +/*!*************************************!*\ + !*** ./tests/keysignature_tests.ts ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "KeySignatureTests": () => (/* binding */ KeySignatureTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_flow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/flow */ "./src/flow.ts"); +/* harmony import */ var _src_glyph__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/glyph */ "./src/glyph.ts"); +/* harmony import */ var _src_keysignature__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/keysignature */ "./src/keysignature.ts"); +/* harmony import */ var _src_stave__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/stave */ "./src/stave.ts"); +/* harmony import */ var _src_stavebarline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/stavebarline */ "./src/stavebarline.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Key Signature Tests +// + + + + + + +const KeySignatureTests = { + Start() { + QUnit.module('KeySignature'); + test('Key Parser Test', parser); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Major Key Test', majorKeys); + run('Minor Key Test', minorKeys); + run('Stave Helper', staveHelper); + run('Cancelled key test', majorKeysCanceled); + run('Cancelled key (for each clef) test', keysCanceledForEachClef); + run('Altered key test', majorKeysAltered); + run('End key with clef test', endKeyWithClef); + run('Key Signature Change test', changeKey); + }, +}; +const fontWidths = () => { + const glyphScale = 39; // default font scale + const sharpWidth = _src_glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph.getWidth('accidentalSharp', glyphScale) + 1; + const flatWidth = _src_glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph.getWidth('accidentalFlat', glyphScale) + 1; + const naturalWidth = _src_glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph.getWidth('accidentalNatural', glyphScale) + 2; + const clefWidth = _src_glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph.getWidth('gClef', glyphScale) * 2; // widest clef + return { sharpWidth, flatWidth, naturalWidth, clefWidth }; +}; +function parser() { + expect(11); + function catchError(spec) { + throws(() => _src_flow__WEBPACK_IMPORTED_MODULE_1__.Flow.keySignature(spec), /BadKeySignature/); + } + catchError('asdf'); + catchError('D!'); + catchError('E#'); + catchError('D#'); + catchError('#'); + catchError('b'); + catchError('Kb'); + catchError('Fb'); + catchError('Dbm'); + catchError('B#m'); + _src_flow__WEBPACK_IMPORTED_MODULE_1__.Flow.keySignature('B'); + _src_flow__WEBPACK_IMPORTED_MODULE_1__.Flow.keySignature('C'); + _src_flow__WEBPACK_IMPORTED_MODULE_1__.Flow.keySignature('Fm'); + _src_flow__WEBPACK_IMPORTED_MODULE_1__.Flow.keySignature('Ab'); + _src_flow__WEBPACK_IMPORTED_MODULE_1__.Flow.keySignature('Abm'); + _src_flow__WEBPACK_IMPORTED_MODULE_1__.Flow.keySignature('F#'); + _src_flow__WEBPACK_IMPORTED_MODULE_1__.Flow.keySignature('G#m'); + ok(true, 'all pass'); +} +function majorKeys(options, contextBuilder) { + const w = fontWidths(); + const accidentalCount = 28; // total number in all the keys + const casePadding = 10; // hard-coded in staveModifier + const testCases = 7; // all keys, but includes key of C + const sharpTestWidth = accidentalCount * w.sharpWidth + casePadding * testCases + _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave.defaultPadding; + const flatTestWidth = accidentalCount * w.flatWidth + casePadding * testCases + _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave.defaultPadding; + const ctx = contextBuilder(options.elementId, Math.max(sharpTestWidth, flatTestWidth) + 100, 240); + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 10, flatTestWidth); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 90, sharpTestWidth); + const keys = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.MAJOR_KEYS; + let keySig = null; + for (let i = 0; i < 8; ++i) { + keySig = new _src_keysignature__WEBPACK_IMPORTED_MODULE_3__.KeySignature(keys[i]); + keySig.addToStave(stave1); + } + for (let n = 8; n < keys.length; ++n) { + keySig = new _src_keysignature__WEBPACK_IMPORTED_MODULE_3__.KeySignature(keys[n]); + keySig.addToStave(stave2); + } + stave1.setContext(ctx); + stave1.draw(); + stave2.setContext(ctx); + stave2.draw(); + ok(true, 'all pass'); +} +function majorKeysCanceled(options, contextBuilder) { + const scale = 0.9; + const w = fontWidths(); + const flatPadding = 18; + const sharpPadding = 20; + const flatTestCases = 8; + const sharpTestCases = 7; + // magic numbers are the numbers of that symbol that appear in the test case + const sharpTestWidth = 28 * w.sharpWidth + 21 * w.naturalWidth + sharpPadding * sharpTestCases + _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave.defaultPadding + w.clefWidth; + const flatTestWidth = 28 * w.flatWidth + 28 * w.naturalWidth + flatPadding * flatTestCases + _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave.defaultPadding + w.clefWidth; + const eFlatTestWidth = 28 * w.flatWidth + 32 * w.naturalWidth + flatPadding * flatTestCases + _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave.defaultPadding + w.clefWidth; + const eSharpTestWidth = 28 * w.sharpWidth + 28 * w.naturalWidth + sharpPadding * sharpTestCases + _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave.defaultPadding + w.clefWidth; + const maxWidth = Math.max(Math.max(sharpTestWidth, flatTestWidth, Math.max(eSharpTestWidth, eFlatTestWidth))); + const ctx = contextBuilder(options.elementId, maxWidth + 100, 500); + ctx.scale(scale, scale); + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 10, flatTestWidth).addClef('treble'); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 90, sharpTestWidth).addClef('treble'); + const stave3 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 170, eFlatTestWidth).addClef('treble'); + const stave4 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 250, eSharpTestWidth).addClef('treble'); + const keys = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.MAJOR_KEYS; + let keySig = null; + let i; + let n; + for (i = 0; i < 8; ++i) { + keySig = new _src_keysignature__WEBPACK_IMPORTED_MODULE_3__.KeySignature(keys[i]); + keySig.cancelKey('Cb'); + keySig.setPadding(flatPadding); + keySig.addToStave(stave1); + } + for (n = 8; n < keys.length; ++n) { + keySig = new _src_keysignature__WEBPACK_IMPORTED_MODULE_3__.KeySignature(keys[n]); + keySig.cancelKey('C#'); + keySig.setPadding(sharpPadding); + keySig.addToStave(stave2); + } + for (i = 0; i < 8; ++i) { + keySig = new _src_keysignature__WEBPACK_IMPORTED_MODULE_3__.KeySignature(keys[i]); + keySig.cancelKey('E'); + keySig.setPadding(flatPadding); + keySig.addToStave(stave3); + } + for (n = 8; n < keys.length; ++n) { + keySig = new _src_keysignature__WEBPACK_IMPORTED_MODULE_3__.KeySignature(keys[n]); + keySig.cancelKey('Ab'); + keySig.setPadding(sharpPadding); + keySig.addToStave(stave4); + } + stave1.setContext(ctx); + stave1.draw(); + stave2.setContext(ctx); + stave2.draw(); + stave3.setContext(ctx); + stave3.draw(); + stave4.setContext(ctx); + stave4.draw(); + ok(true, 'all pass'); +} +function keysCanceledForEachClef(options, contextBuilder) { + const scale = 0.8; + const w = fontWidths(); + const keyPadding = 10; + const keys = ['C#', 'Cb']; + const flatsKey = [7, 14]; + const sharpsKey = [14, 7]; + const natsKey = [7, 7]; + const max = 21 * Math.max(w.sharpWidth, w.flatWidth) * 2 + keyPadding * 6 + _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave.defaultPadding + w.clefWidth; + const ctx = contextBuilder(options.elementId, max + 100, 380); + ctx.scale(scale, scale); + const x = 20; + let y = 20; + let tx = x; + ['bass', 'tenor', 'soprano', 'mezzo-soprano', 'baritone-f'].forEach(function (clef) { + keys.forEach((key, keyIx) => { + const cancelKey = keys[(keyIx + 1) % 2]; + const width = flatsKey[keyIx] * w.flatWidth + + natsKey[keyIx] * w.naturalWidth + + sharpsKey[keyIx] * w.sharpWidth + + keyPadding * 3 + + w.clefWidth + + _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave.defaultPadding; + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(tx, y, width); + stave.setClef(clef); + stave.addKeySignature(cancelKey); + stave.addKeySignature(key, cancelKey); + stave.addKeySignature(key); + stave.setContext(ctx).draw(); + tx += width; + }); + tx = x; + y += 80; + }); + ok(true, 'all pass'); +} +function majorKeysAltered(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 780, 500); + ctx.scale(0.9, 0.9); + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 10, 750).addClef('treble'); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 90, 750).addClef('treble'); + const stave3 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 170, 750).addClef('treble'); + const stave4 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 250, 750).addClef('treble'); + const keys = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.MAJOR_KEYS; + let keySig = null; + let i; + let n; + for (i = 0; i < 8; ++i) { + keySig = new _src_keysignature__WEBPACK_IMPORTED_MODULE_3__.KeySignature(keys[i]); + keySig.alterKey(['bs', 'bs']); + keySig.setPadding(18); + keySig.addToStave(stave1); + } + for (n = 8; n < keys.length; ++n) { + keySig = new _src_keysignature__WEBPACK_IMPORTED_MODULE_3__.KeySignature(keys[n]); + keySig.alterKey(['+', '+', '+']); + keySig.setPadding(20); + keySig.addToStave(stave2); + } + for (i = 0; i < 8; ++i) { + keySig = new _src_keysignature__WEBPACK_IMPORTED_MODULE_3__.KeySignature(keys[i]); + keySig.alterKey(['n', 'bs', 'bb']); + keySig.setPadding(18); + keySig.addToStave(stave3); + } + for (n = 8; n < keys.length; ++n) { + keySig = new _src_keysignature__WEBPACK_IMPORTED_MODULE_3__.KeySignature(keys[n]); + keySig.alterKey(['++', '+', 'n', '+']); + keySig.setPadding(20); + keySig.addToStave(stave4); + } + stave1.setContext(ctx); + stave1.draw(); + stave2.setContext(ctx); + stave2.draw(); + stave3.setContext(ctx); + stave3.draw(); + stave4.setContext(ctx); + stave4.draw(); + ok(true, 'all pass'); +} +function minorKeys(options, contextBuilder) { + const accidentalCount = 28; // total number in all the keys + const w = fontWidths(); + const casePadding = 10; // hard-coded in staveModifier + const testCases = 7; // all keys, but includes key of C + const sharpTestWidth = accidentalCount * w.sharpWidth + casePadding * testCases + _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave.defaultPadding; + const flatTestWidth = accidentalCount * w.flatWidth + casePadding * testCases + _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave.defaultPadding; + const ctx = contextBuilder(options.elementId, Math.max(sharpTestWidth, flatTestWidth) + 100, 240); + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 10, flatTestWidth); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 90, sharpTestWidth); + const keys = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.MINOR_KEYS; + let keySig = null; + for (let i = 0; i < 8; ++i) { + keySig = new _src_keysignature__WEBPACK_IMPORTED_MODULE_3__.KeySignature(keys[i]); + keySig.addToStave(stave1); + } + for (let n = 8; n < keys.length; ++n) { + keySig = new _src_keysignature__WEBPACK_IMPORTED_MODULE_3__.KeySignature(keys[n]); + keySig.addToStave(stave2); + } + stave1.setContext(ctx); + stave1.draw(); + stave2.setContext(ctx); + stave2.draw(); + ok(true, 'all pass'); +} +function endKeyWithClef(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 200); + ctx.scale(0.9, 0.9); + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 10, 350); + stave1 + .setKeySignature('G') + .setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.REPEAT_BEGIN) + .setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.REPEAT_END) + .setClef('treble') + .addTimeSignature('4/4') + .setEndClef('bass') + .setEndKeySignature('Cb'); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 90, 350); + stave2.setKeySignature('Cb').setClef('bass').setEndClef('treble').setEndKeySignature('G'); + stave1.setContext(ctx).draw(); + stave2.setContext(ctx).draw(); + ok(true, 'all pass'); +} +function staveHelper(options, contextBuilder) { + const w = fontWidths(); + const accidentalCount = 28; // total number in all the keys + const casePadding = 10; // hard-coded in staveModifier + const testCases = 7; // all keys, but includes key of C + const sharpTestWidth = accidentalCount * w.sharpWidth + casePadding * testCases + _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave.defaultPadding; + const flatTestWidth = accidentalCount * w.flatWidth + casePadding * testCases + _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave.defaultPadding; + const ctx = contextBuilder(options.elementId, Math.max(sharpTestWidth, flatTestWidth) + 100, 240); + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 10, flatTestWidth); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 90, sharpTestWidth); + const keys = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.MAJOR_KEYS; + for (let i = 0; i < 8; ++i) { + stave1.addKeySignature(keys[i]); + } + for (let n = 8; n < keys.length; ++n) { + stave2.addKeySignature(keys[n]); + } + stave1.setContext(ctx); + stave1.draw(); + stave2.setContext(ctx); + stave2.draw(); + ok(true, 'all pass'); +} +function changeKey(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 900); + // The previous code was buggy: f.Stave(10, 10, 800), even though Factory.Stave() only accepts 1 argument. + const stave = f.Stave({ x: 10, y: 10, width: 800 }).addClef('treble').addTimeSignature('C|'); + const voice = f + .Voice() + .setStrict(false) + .addTickables([ + f.KeySigNote({ key: 'Bb' }), + f.StaveNote({ keys: ['c/4'], duration: '1' }), + f.BarNote(), + f.KeySigNote({ key: 'D', cancelKey: 'Bb' }), + f.StaveNote({ keys: ['c/4'], duration: '1' }), + f.BarNote(), + f.KeySigNote({ key: 'Bb' }), + f.StaveNote({ keys: ['c/4'], duration: '1' }), + f.BarNote(), + f.KeySigNote({ key: 'D', alterKey: ['b', 'n'] }), + f.StaveNote({ keys: ['c/4'], duration: '1' }), + ]); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'all pass'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(KeySignatureTests); + + + +/***/ }), + +/***/ "./tests/mocks.ts": +/*!************************!*\ + !*** ./tests/mocks.ts ***! + \************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "MockTickable": () => (/* binding */ MockTickable) +/* harmony export */ }); +/* harmony import */ var _src_fraction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../src/fraction */ "./src/fraction.ts"); +/* harmony import */ var _src_tickable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/tickable */ "./src/tickable.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// TickContext Mocks + + +class MockTickable extends _src_tickable__WEBPACK_IMPORTED_MODULE_1__.Tickable { + constructor() { + super(...arguments); + this.ticks = new _src_fraction__WEBPACK_IMPORTED_MODULE_0__.Fraction(1, 1); + this.width = 0; + this.ignore_ticks = false; + } + init() { + // DO NOTHING. + } + getX() { + // eslint-disable-next-line + return this.tickContext.getX(); + } + getIntrinsicTicks() { + return this.ticks.value(); + } + getTicks() { + return this.ticks; + } + setTicks(t) { + this.ticks = new _src_fraction__WEBPACK_IMPORTED_MODULE_0__.Fraction(t, 1); + return this; + } + // Called by TickContext.preFormat(). + getMetrics() { + return { + width: 0, + glyphWidth: 0, + notePx: this.width, + modLeftPx: 0, + modRightPx: 0, + leftDisplacedHeadPx: 0, + rightDisplacedHeadPx: 0, + glyphPx: 0, + }; + } + getWidth() { + return this.width; + } + setWidth(w) { + this.width = w; + return this; + } + setVoice(v) { + this.voice = v; + return this; + } + setStave(stave) { + this.stave = stave; + return this; + } + getStave() { + return this.stave; + } + setTickContext(tc) { + this.tickContext = tc; + return this; + } + setIgnoreTicks(flag) { + this.ignore_ticks = flag; + return this; + } + shouldIgnoreTicks() { + return this.ignore_ticks; + } + preFormat() { + // DO NOTHING. + } + // eslint-disable-next-line + draw(...args) { + // DO NOTHING. + } +} + + + +/***/ }), + +/***/ "./tests/modifier_tests.ts": +/*!*********************************!*\ + !*** ./tests/modifier_tests.ts ***! + \*********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "ModifierContextTests": () => (/* binding */ ModifierContextTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/index */ "./src/index.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// ModifierContext Tests + + +const ModifierContextTests = { + Start() { + QUnit.module('ModifierContext'); + test('Modifier Width Test', width); + test('Modifier Management', management); + }, +}; +function width() { + const mc = new _src_index__WEBPACK_IMPORTED_MODULE_1__.ModifierContext(); + equal(mc.getWidth(), 0, 'New modifier context has no width'); +} +function management() { + const mc = new _src_index__WEBPACK_IMPORTED_MODULE_1__.ModifierContext(); + const modifier1 = new _src_index__WEBPACK_IMPORTED_MODULE_1__.Modifier(); + const modifier2 = new _src_index__WEBPACK_IMPORTED_MODULE_1__.Modifier(); + mc.addMember(modifier1); + mc.addMember(modifier2); + const modifiers = mc.getMembers(_src_index__WEBPACK_IMPORTED_MODULE_1__.Modifier.CATEGORY); + equal(modifiers.length, 2, 'Added two modifiers'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(ModifierContextTests); + + + +/***/ }), + +/***/ "./tests/multimeasurerest_tests.ts": +/*!*****************************************!*\ + !*** ./tests/multimeasurerest_tests.ts ***! + \*****************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "MultiMeasureRestTests": () => (/* binding */ MultiMeasureRestTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_flow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/flow */ "./src/flow.ts"); +/* harmony import */ var _src_font__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/font */ "./src/font.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// MultiMeasureRest Tests + + + +const MultiMeasureRestTests = { + Start() { + QUnit.module('MultiMeasureRest'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Simple Test', simple); + run('Stave with modifiers Test', staveWithModifiers); + }, +}; +function simple(options) { + const width = 910; + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, width, 300); + const line_spacing_15px = { options: { spacing_between_lines_px: 15 } }; + // Each item below is an array that contains: + // item[0] => staveParams to adjust vertical spacing between lines + // item[1] => multiMeasureRestParams + // eslint-disable-next-line + const params = [ + [{}, { number_of_measures: 2, show_number: false }], + [{}, { number_of_measures: 2 }], + [{}, { number_of_measures: 2, line_thickness: 8, serif_thickness: 3 }], + [{}, { number_of_measures: 1, use_symbols: true }], + [{}, { number_of_measures: 2, use_symbols: true }], + [{}, { number_of_measures: 3, use_symbols: true }], + [{}, { number_of_measures: 4, use_symbols: true }], + [{}, { number_of_measures: 5, use_symbols: true }], + [{}, { number_of_measures: 6, use_symbols: true }], + [{}, { number_of_measures: 7, use_symbols: true }], + [{}, { number_of_measures: 8, use_symbols: true }], + [{}, { number_of_measures: 9, use_symbols: true }], + [{}, { number_of_measures: 10, use_symbols: true }], + [{}, { number_of_measures: 11, use_symbols: true }], + [{}, { number_of_measures: 11, use_symbols: false, padding_left: 20, padding_right: 20 }], + [{}, { number_of_measures: 11, use_symbols: true, symbol_spacing: 5 }], + [{}, { number_of_measures: 11, use_symbols: false, line: 3, number_line: 2 }], + [{}, { number_of_measures: 11, use_symbols: true, line: 3, number_line: 2 }], + [line_spacing_15px, { number_of_measures: 12 }], + [line_spacing_15px, { number_of_measures: 9, use_symbols: true }], + [line_spacing_15px, { number_of_measures: 12, spacing_between_lines_px: 15, number_glyph_point: 40 * 1.5 }], + [ + line_spacing_15px, + { + number_of_measures: 9, + spacing_between_lines_px: 15, + use_symbols: true, + number_glyph_point: 40 * 1.5, + }, + ], + [ + line_spacing_15px, + { + number_of_measures: 9, + spacing_between_lines_px: 15, + use_symbols: true, + number_glyph_point: 40 * 1.5, + semibreve_rest_glyph_scale: _src_flow__WEBPACK_IMPORTED_MODULE_1__.Flow.NOTATION_FONT_SCALE * 1.5, + }, + ], + ]; + const staveWidth = 100; + let x = 0; + let y = 0; + const mmRests = params.map((param) => { + if (x + staveWidth * 2 > width) { + x = 0; + y += 80; + } + const staveParams = param[0]; + const mmRestParams = param[1]; + staveParams.x = x; + staveParams.y = y; + staveParams.width = staveWidth; + x += staveWidth; + const stave = f.Stave(staveParams); + return f.MultiMeasureRest(mmRestParams).setStave(stave); + }); + f.draw(); + const xs = mmRests[0].getXs(); + // eslint-disable-next-line + const strY = mmRests[0].getStave().getYForLine(-0.5); + const str = 'TACET'; + const context = f.getContext(); + context.save(); + context.setFont(_src_font__WEBPACK_IMPORTED_MODULE_2__.Font.SERIF, 16, 'bold'); + const metrics = context.measureText(str); + context.fillText(str, xs.left + (xs.right - xs.left) * 0.5 - metrics.width * 0.5, strY); + context.restore(); + ok(true, 'Simple Test'); +} +function staveWithModifiers(options) { + const width = 910; + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, width, 200); + let x = 0; + let y = 0; + // eslint-disable-next-line + const params = [ + [{ clef: 'treble', params: { width: 150 } }, { number_of_measures: 5 }], + [{ clef: 'treble', keySig: 'G', params: { width: 150 } }, { number_of_measures: 5 }], + [{ clef: 'treble', timeSig: '4/4', keySig: 'G', params: { width: 150 } }, { number_of_measures: 5 }], + [{ clef: 'treble', endClef: 'bass', params: { width: 150 } }, { number_of_measures: 5 }], + [{ clef: 'treble', endKeySig: 'F', params: { width: 150 } }, { number_of_measures: 5 }], + [{ clef: 'treble', endTimeSig: '2/4', params: { width: 150 } }, { number_of_measures: 5 }], + [{ clef: 'treble', endClef: 'bass', endTimeSig: '2/4', params: { width: 150 } }, { number_of_measures: 5 }], + [ + { clef: 'treble', endClef: 'bass', endTimeSig: '2/4', params: { width: 150 } }, + { number_of_measures: 5, use_symbols: true }, + ], + ]; + params.forEach((param) => { + const staveOptions = param[0]; + // eslint-disable-next-line + const staveParams = staveOptions.params; + const mmrestParams = param[1]; + if (x + staveParams.width > width) { + x = 0; + y += 80; + } + staveParams.x = x; + x += staveParams.width; + staveParams.y = y; + const stave = f.Stave(staveParams); + if (staveOptions.clef) { + stave.addClef(staveOptions.clef); + } + if (staveOptions.timeSig) { + stave.addTimeSignature(staveOptions.timeSig); + } + if (staveOptions.keySig) { + stave.addKeySignature(staveOptions.keySig); + } + if (staveOptions.endClef) { + stave.addEndClef(staveOptions.endClef); + } + if (staveOptions.endKeySig) { + stave.setEndKeySignature(staveOptions.endKeySig); + } + if (staveOptions.endTimeSig) { + stave.setEndTimeSignature(staveOptions.endTimeSig); + } + return f.MultiMeasureRest(mmrestParams).setStave(stave); + }); + f.draw(); + ok(true, 'Stave with modifiers Test'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(MultiMeasureRestTests); + + + +/***/ }), + +/***/ "./tests/music_tests.ts": +/*!******************************!*\ + !*** ./tests/music_tests.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "MusicTests": () => (/* binding */ MusicTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_keymanager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/keymanager */ "./src/keymanager.ts"); +/* harmony import */ var _src_music__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/music */ "./src/music.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Music Tests + + + +const MusicTests = { + Start() { + QUnit.module('MusicTests'); + test('Valid Notes', validNotes); + test('Valid Keys', validKeys); + test('Note Values', noteValue); + test('Interval Values', intervalValue); + test('Relative Notes', relativeNotes); + test('Relative Note Names', relativeNoteNames); + test('Canonical Notes', canonicalNotes); + test('Canonical Intervals', canonicalIntervals); + test('Scale Tones', scaleTones); + test('Scale Intervals', scaleIntervals); + }, +}; +function validNotes() { + expect(10); + const music = new _src_music__WEBPACK_IMPORTED_MODULE_2__.Music(); + let parts = music.getNoteParts('c'); + equal(parts.root, 'c'); + equal(parts.accidental, null); + // getNoteParts() converts its argument to lowercase. + parts = music.getNoteParts('C'); + equal(parts.root, 'c'); + equal(parts.accidental, null); + parts = music.getNoteParts('c#'); + equal(parts.root, 'c'); + equal(parts.accidental, '#'); + parts = music.getNoteParts('c##'); + equal(parts.root, 'c'); + equal(parts.accidental, '##'); + throws(() => music.getNoteParts('r'), /BadArguments/, 'Invalid note: r'); + throws(() => music.getNoteParts(''), /BadArguments/, "Invalid note: ''"); +} +function validKeys() { + expect(18); + const music = new _src_music__WEBPACK_IMPORTED_MODULE_2__.Music(); + let parts = music.getKeyParts('c'); + equal(parts.root, 'c'); + equal(parts.accidental, null); + equal(parts.type, 'M'); + parts = music.getKeyParts('d#'); + equal(parts.root, 'd'); + equal(parts.accidental, '#'); + equal(parts.type, 'M'); + parts = music.getKeyParts('fbm'); + equal(parts.root, 'f'); + equal(parts.accidental, 'b'); + equal(parts.type, 'm'); + parts = music.getKeyParts('c#mel'); + equal(parts.root, 'c'); + equal(parts.accidental, '#'); + equal(parts.type, 'mel'); + parts = music.getKeyParts('g#harm'); + equal(parts.root, 'g'); + equal(parts.accidental, '#'); + equal(parts.type, 'harm'); + throws(() => music.getKeyParts('r'), /BadArguments/, 'Invalid key: r'); + throws(() => music.getKeyParts(''), /BadArguments/, `Invalid key: ''`); + throws(() => music.getKeyParts('#m'), /BadArguments/, 'Invalid key: #m'); +} +function noteValue() { + expect(3); + const music = new _src_music__WEBPACK_IMPORTED_MODULE_2__.Music(); + let note = music.getNoteValue('c'); + equal(note, 0); + throws(() => music.getNoteValue('r'), /BadArguments/, 'Invalid note name'); + note = music.getNoteValue('f#'); + equal(note, 6); +} +function intervalValue() { + expect(2); + const music = new _src_music__WEBPACK_IMPORTED_MODULE_2__.Music(); + const value = music.getIntervalValue('b2'); + equal(value, 1); + throws(() => music.getIntervalValue('7'), /BadArguments/, 'Invalid interval name'); +} +function relativeNotes() { + expect(8); + const music = new _src_music__WEBPACK_IMPORTED_MODULE_2__.Music(); + let value = music.getRelativeNoteValue(music.getNoteValue('c'), music.getIntervalValue('b5')); + equal(value, 6); + throws(() => music.getRelativeNoteValue(music.getNoteValue('bc'), music.getIntervalValue('b2')), /BadArguments/, 'Invalid note'); + throws(() => music.getRelativeNoteValue(music.getNoteValue('b'), music.getIntervalValue('p3')), /BadArguments/, 'Invalid interval'); + // Direction + value = music.getRelativeNoteValue(music.getNoteValue('d'), music.getIntervalValue('2'), -1); + equal(value, 0); + throws(() => music.getRelativeNoteValue(music.getNoteValue('b'), music.getIntervalValue('p4'), 0), /BadArguments/, 'Invalid direction: 0'); + // Rollover + value = music.getRelativeNoteValue(music.getNoteValue('b'), music.getIntervalValue('b5')); + equal(value, 5); + // Reverse rollover + value = music.getRelativeNoteValue(music.getNoteValue('c'), music.getIntervalValue('b2'), -1); + equal(value, 11); + // Practical tests + value = music.getRelativeNoteValue(music.getNoteValue('g'), music.getIntervalValue('p5')); + equal(value, 2); +} +function relativeNoteNames() { + expect(9); + const music = new _src_music__WEBPACK_IMPORTED_MODULE_2__.Music(); + equal(music.getRelativeNoteName('b', music.getNoteValue('c#')), 'b##'); + equal(music.getRelativeNoteName('c', music.getNoteValue('c')), 'c'); + equal(music.getRelativeNoteName('c', music.getNoteValue('db')), 'c#'); + equal(music.getRelativeNoteName('c', music.getNoteValue('b')), 'cb'); + equal(music.getRelativeNoteName('c#', music.getNoteValue('db')), 'c#'); + equal(music.getRelativeNoteName('e', music.getNoteValue('f#')), 'e##'); + equal(music.getRelativeNoteName('e', music.getNoteValue('d#')), 'eb'); + equal(music.getRelativeNoteName('e', music.getNoteValue('fb')), 'e'); + throws(() => music.getRelativeNoteName('e', music.getNoteValue('g#')), /BadArguments/, 'Too far away. Notes not related.'); +} +function canonicalNotes() { + expect(3); + const music = new _src_music__WEBPACK_IMPORTED_MODULE_2__.Music(); + equal(music.getCanonicalNoteName(0), 'c'); + equal(music.getCanonicalNoteName(2), 'd'); + throws(() => music.getCanonicalNoteName(-1), /BadArguments/, 'Invalid note value'); +} +function canonicalIntervals() { + expect(3); + const music = new _src_music__WEBPACK_IMPORTED_MODULE_2__.Music(); + equal(music.getCanonicalIntervalName(0), 'unison'); + equal(music.getCanonicalIntervalName(2), 'M2'); + throws(() => music.getCanonicalIntervalName(-1), /BadArguments/, 'Invalid interval value'); +} +function scaleTones() { + expect(24); + // C Major + const music = new _src_music__WEBPACK_IMPORTED_MODULE_2__.Music(); + const manager = new _src_keymanager__WEBPACK_IMPORTED_MODULE_1__.KeyManager('CM'); + const c_major = music.getScaleTones(music.getNoteValue('c'), _src_music__WEBPACK_IMPORTED_MODULE_2__.Music.scales.major); + let values = ['c', 'd', 'e', 'f', 'g', 'a', 'b']; + equal(c_major.length, 7); + for (let i = 0; i < c_major.length; ++i) { + equal(music.getCanonicalNoteName(c_major[i]), values[i]); + } + // Dorian + const c_dorian = music.getScaleTones(music.getNoteValue('c'), _src_music__WEBPACK_IMPORTED_MODULE_2__.Music.scales.dorian); + values = ['c', 'd', 'eb', 'f', 'g', 'a', 'bb']; + let note = null; + equal(c_dorian.length, 7); + for (let i = 0; i < c_dorian.length; ++i) { + note = music.getCanonicalNoteName(c_dorian[i]); + equal(manager.selectNote(note).note, values[i]); + } + // Mixolydian + const c_mixolydian = music.getScaleTones(music.getNoteValue('c'), _src_music__WEBPACK_IMPORTED_MODULE_2__.Music.scales.mixolydian); + values = ['c', 'd', 'e', 'f', 'g', 'a', 'bb']; + equal(c_mixolydian.length, 7); + for (let i = 0; i < c_mixolydian.length; ++i) { + note = music.getCanonicalNoteName(c_mixolydian[i]); + equal(manager.selectNote(note).note, values[i]); + } +} +function scaleIntervals() { + expect(6); + const m = new _src_music__WEBPACK_IMPORTED_MODULE_2__.Music(); + equal(m.getCanonicalIntervalName(m.getIntervalBetween(m.getNoteValue('c'), m.getNoteValue('d'))), 'M2'); + equal(m.getCanonicalIntervalName(m.getIntervalBetween(m.getNoteValue('g'), m.getNoteValue('c'))), 'p4'); + equal(m.getCanonicalIntervalName(m.getIntervalBetween(m.getNoteValue('c'), m.getNoteValue('c'))), 'unison'); + equal(m.getCanonicalIntervalName(m.getIntervalBetween(m.getNoteValue('f'), m.getNoteValue('cb'))), 'dim5'); + // Forwards and backwards + equal(m.getCanonicalIntervalName(m.getIntervalBetween(m.getNoteValue('d'), m.getNoteValue('c'), 1)), 'b7'); + equal(m.getCanonicalIntervalName(m.getIntervalBetween(m.getNoteValue('d'), m.getNoteValue('c'), -1)), 'M2'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(MusicTests); + + + +/***/ }), + +/***/ "./tests/notehead_tests.ts": +/*!*********************************!*\ + !*** ./tests/notehead_tests.ts ***! + \*********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "NoteHeadTests": () => (/* binding */ NoteHeadTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_flow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/flow */ "./src/flow.ts"); +/* harmony import */ var _src_formatter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/formatter */ "./src/formatter.ts"); +/* harmony import */ var _src_notehead__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/notehead */ "./src/notehead.ts"); +/* harmony import */ var _src_stave__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/stave */ "./src/stave.ts"); +/* harmony import */ var _src_stavenote__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _src_tickcontext__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../src/tickcontext */ "./src/tickcontext.ts"); +/* harmony import */ var _src_voice__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../src/voice */ "./src/voice.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// NoteHead Tests +// TODO: There is a bug in RenderContext.scale(). The CanvasContext works as expected. +// Each time you call scale(sx, sy), it multiplies the sx and sy by the currently stored scale. +// The SVGContext operates differently. It just sets the sx and sy as the new scale, instead of multiplying it. +// See: https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/scale + + + + + + + + +const NoteHeadTests = { + Start() { + QUnit.module('NoteHead'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Basic', basic); + run('Various Note Heads 1', variousNoteHeads); + run('Various Note Heads 2', variousNoteHeads2); + run('Various Heads', variousHeads); + run('Drum Chord Heads', drumChordHeads); + run('Bounding Boxes', basicBoundingBoxes); + }, +}; +function setContextStyle(ctx) { + // TODO: scale() method in SVGContext and CanvasContext should work similarly! + // The final scale should be 1.8. + // ctx.scale(0.9, 0.9); + // ctx.scale(2.0, 2.0); + ctx.scale(1.8, 1.8); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + ctx.font = '10pt Arial'; +} +function basic(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 450, 250); + setContextStyle(ctx); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 0, 250).addClef('treble'); + stave.setContext(ctx).draw(); + const formatter = new _src_formatter__WEBPACK_IMPORTED_MODULE_2__.Formatter(); + const voice = new _src_voice__WEBPACK_IMPORTED_MODULE_7__.Voice(_src_flow__WEBPACK_IMPORTED_MODULE_1__.Flow.TIME4_4).setStrict(false); + const note_head1 = new _src_notehead__WEBPACK_IMPORTED_MODULE_3__.NoteHead({ duration: '4', line: 3 }); + const note_head2 = new _src_notehead__WEBPACK_IMPORTED_MODULE_3__.NoteHead({ duration: '1', line: 2.5 }); + const note_head3 = new _src_notehead__WEBPACK_IMPORTED_MODULE_3__.NoteHead({ duration: '2', line: 0 }); + voice.addTickables([note_head1, note_head2, note_head3]); + formatter.joinVoices([voice]).formatToStave([voice], stave); + voice.draw(ctx, stave); + ok('Basic NoteHead test'); +} +/** + * Used by the next two test cases to draw a note. + */ +function showNote(noteStruct, stave, ctx, x) { + const note = new _src_stavenote__WEBPACK_IMPORTED_MODULE_5__.StaveNote(noteStruct).setStave(stave); + new _src_tickcontext__WEBPACK_IMPORTED_MODULE_6__.TickContext().addTickable(note).preFormat().setX(x); + note.setContext(ctx).draw(); + return note; +} +function variousHeads(options, contextBuilder) { + const notes = [ + { keys: ['g/5/d0'], duration: '4' }, + { keys: ['g/5/d1'], duration: '4' }, + { keys: ['g/5/d2'], duration: '4' }, + { keys: ['g/5/d3'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/t0'], duration: '1' }, + { keys: ['g/5/t1'], duration: '4' }, + { keys: ['g/5/t2'], duration: '4' }, + { keys: ['g/5/t3'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/x0'], duration: '1' }, + { keys: ['g/5/x1'], duration: '4' }, + { keys: ['g/5/x2'], duration: '4' }, + { keys: ['g/5/x3'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/s1'], duration: '4' }, + { keys: ['g/5/s2'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/r1'], duration: '4' }, + { keys: ['g/5/r2'], duration: '4' }, + ]; + const ctx = contextBuilder(options.elementId, notes.length * 25 + 100, 240); + // Draw two staves, one with up-stems and one with down-stems. + for (let staveNum = 0; staveNum < 2; ++staveNum) { + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 10 + staveNum * 120, notes.length * 25 + 75) + .addClef('percussion') + .setContext(ctx) + .draw(); + for (let i = 0; i < notes.length; ++i) { + const note = notes[i]; + note.stem_direction = staveNum === 0 ? -1 : 1; + const staveNote = showNote(note, stave, ctx, (i + 1) * 25); + ok(staveNote.getX() > 0, 'Note ' + i + ' has X value'); + ok(staveNote.getYs().length > 0, 'Note ' + i + ' has Y values'); + } + } +} +function variousNoteHeads(options, contextBuilder) { + const notes = [ + { keys: ['g/5/d'], duration: '1/2' }, + { keys: ['g/5/d'], duration: '1' }, + { keys: ['g/5/d'], duration: '2' }, + { keys: ['g/5/d'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/x'], duration: '1/2' }, + { keys: ['g/5/x'], duration: '1' }, + { keys: ['g/5/x'], duration: '2' }, + { keys: ['g/5/x'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/cx'], duration: '1/2' }, + { keys: ['g/5/cx'], duration: '1' }, + { keys: ['g/5/cx'], duration: '2' }, + { keys: ['g/5/cx'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/tu'], duration: '1/2' }, + { keys: ['g/5/tu'], duration: '1' }, + { keys: ['g/5/tu'], duration: '2' }, + { keys: ['g/5/tu'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/td'], duration: '1/2' }, + { keys: ['g/5/td'], duration: '1' }, + { keys: ['g/5/td'], duration: '2' }, + { keys: ['g/5/td'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/sf'], duration: '1/2' }, + { keys: ['g/5/sf'], duration: '1' }, + { keys: ['g/5/sf'], duration: '2' }, + { keys: ['g/5/sf'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/sb'], duration: '1/2' }, + { keys: ['g/5/sb'], duration: '1' }, + { keys: ['g/5/sb'], duration: '2' }, + { keys: ['g/5/sb'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/ci'], duration: '1/2' }, + { keys: ['g/5/ci'], duration: '1' }, + { keys: ['g/5/ci'], duration: '2' }, + { keys: ['g/5/ci'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/sq'], duration: '1/2' }, + { keys: ['g/5/sq'], duration: '1' }, + { keys: ['g/5/sq'], duration: '2' }, + { keys: ['g/5/sq'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + ]; + const ctx = contextBuilder(options.elementId, notes.length * 25 + 100, 240); + // Draw two staves, one with up-stems and one with down-stems. + for (let staveNum = 0; staveNum < 2; ++staveNum) { + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 10 + staveNum * 120, notes.length * 25 + 75) + .addClef('percussion') + .setContext(ctx) + .draw(); + for (let i = 0; i < notes.length; ++i) { + const note = notes[i]; + note.stem_direction = staveNum === 0 ? -1 : 1; + const staveNote = showNote(note, stave, ctx, (i + 1) * 25); + ok(staveNote.getX() > 0, 'Note ' + i + ' has X value'); + ok(staveNote.getYs().length > 0, 'Note ' + i + ' has Y values'); + } + } +} +function variousNoteHeads2(options, contextBuilder) { + const notes = [ + { keys: ['g/5/do'], duration: '4', auto_stem: true }, + { keys: ['g/5/re'], duration: '4', auto_stem: true }, + { keys: ['g/5/mi'], duration: '4', auto_stem: true }, + { keys: ['g/5/fa'], duration: '4', auto_stem: true }, + { keys: ['e/4/faup'], duration: '4', auto_stem: true }, + { keys: ['g/5/so'], duration: '4', auto_stem: true }, + { keys: ['g/5/la'], duration: '4', auto_stem: true }, + { keys: ['g/5/ti'], duration: '4', auto_stem: true }, + ]; + const ctx = contextBuilder(options.elementId, notes.length * 25 + 100, 240); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 10, notes.length * 25 + 75).addClef('percussion').setContext(ctx).draw(); + for (let i = 0; i < notes.length; ++i) { + const note = notes[i]; + const staveNote = showNote(note, stave, ctx, (i + 1) * 25); + ok(staveNote.getX() > 0, 'Note ' + i + ' has X value'); + ok(staveNote.getYs().length > 0, 'Note ' + i + ' has Y values'); + } +} +function drumChordHeads(options, contextBuilder) { + const notes = [ + { keys: ['a/4/d0', 'g/5/x3'], duration: '4' }, + { keys: ['a/4/x3', 'g/5/d0'], duration: '4' }, + { keys: ['a/4/d1', 'g/5/x2'], duration: '4' }, + { keys: ['a/4/x2', 'g/5/d1'], duration: '4' }, + { keys: ['a/4/d2', 'g/5/x1'], duration: '4' }, + { keys: ['a/4/x1', 'g/5/d2'], duration: '4' }, + { keys: ['a/4/d3', 'g/5/x0'], duration: '4' }, + { keys: ['a/4/x0', 'g/5/d3'], duration: '4' }, + { keys: ['a/4', 'g/5/d0'], duration: '4' }, + { keys: ['a/4/x3', 'g/5'], duration: '4' }, + { keys: ['a/4/t0', 'g/5/s1'], duration: '4' }, + { keys: ['a/4/s1', 'g/5/t0'], duration: '4' }, + { keys: ['a/4/t1', 'g/5/s2'], duration: '4' }, + { keys: ['a/4/s2', 'g/5/t1'], duration: '4' }, + { keys: ['a/4/t2', 'g/5/r1'], duration: '4' }, + { keys: ['a/4/r1', 'g/5/t2'], duration: '4' }, + { keys: ['a/4/t3', 'g/5/r2'], duration: '4' }, + { keys: ['a/4/r2', 'g/5/t3'], duration: '4' }, + ]; + const ctx = contextBuilder(options.elementId, notes.length * 25 + 100, 240); + // Draw two staves, one with up-stems and one with down-stems. + for (let h = 0; h < 2; ++h) { + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 10 + h * 120, notes.length * 25 + 75).addClef('percussion').setContext(ctx).draw(); + for (let i = 0; i < notes.length; ++i) { + const note = notes[i]; + note.stem_direction = h === 0 ? -1 : 1; + const staveNote = showNote(note, stave, ctx, (i + 1) * 25); + ok(staveNote.getX() > 0, 'Note ' + i + ' has X value'); + ok(staveNote.getYs().length > 0, 'Note ' + i + ' has Y values'); + } + } +} +function basicBoundingBoxes(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 450, 250); + setContextStyle(ctx); + // 250 is 450/1.8 + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 0, 250).addClef('treble'); + stave.setContext(ctx).draw(); + const formatter = new _src_formatter__WEBPACK_IMPORTED_MODULE_2__.Formatter(); + const voice = new _src_voice__WEBPACK_IMPORTED_MODULE_7__.Voice(_src_flow__WEBPACK_IMPORTED_MODULE_1__.Flow.TIME4_4).setStrict(false); + const nh1 = new _src_notehead__WEBPACK_IMPORTED_MODULE_3__.NoteHead({ duration: '4', line: 3 }); + const nh2 = new _src_notehead__WEBPACK_IMPORTED_MODULE_3__.NoteHead({ duration: '2', line: 2.5 }); + const nh3 = new _src_notehead__WEBPACK_IMPORTED_MODULE_3__.NoteHead({ duration: '1', line: 0 }); + voice.addTickables([nh1, nh2, nh3]); + formatter.joinVoices([voice]).formatToStave([voice], stave); + voice.draw(ctx, stave); + for (const bb of [nh1.getBoundingBox(), nh2.getBoundingBox(), nh3.getBoundingBox()]) { + ctx.rect(bb.getX(), bb.getY(), bb.getW(), bb.getH()); + } + ctx.stroke(); + ok('NoteHead Bounding Boxes'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(NoteHeadTests); + + + +/***/ }), + +/***/ "./tests/notesubgroup_tests.ts": +/*!*************************************!*\ + !*** ./tests/notesubgroup_tests.ts ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "NoteSubGroupTests": () => (/* binding */ NoteSubGroupTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_barnote__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/barnote */ "./src/barnote.ts"); +/* harmony import */ var _src_note__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/note */ "./src/note.ts"); +/* harmony import */ var _src_stavebarline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/stavebarline */ "./src/stavebarline.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// Author: Taehoon Moon 2016 +// +// NoteSubGroup Tests + + + + +const NoteSubGroupTests = { + Start() { + QUnit.module('NoteSubGroup'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Basic - ClefNote, TimeSigNote and BarNote', basic); + run('Multi Voice', multiVoiceSingleDraw); + run('Multi Voice Multiple Draws', multiVoiceDoubleDraw); + run('Multi Staff', multiStaff); + }, +}; +// Return three helper functions for creating StaveNotes, and adding Accidental & NoteSubGroup to those StaveNotes. +function createShortcuts(f) { + return { + createStaveNote: (noteStruct) => f.StaveNote(noteStruct), + addAccidental: (note, accid) => note.addModifier(f.Accidental({ type: accid }), 0), + addSubGroup: (note, subNotes) => note.addModifier(f.NoteSubGroup({ notes: subNotes }), 0), + }; +} +function basic(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 750, 200); + const ctx = f.getContext(); + const stave = f.Stave({ width: 600 }).addClef('treble'); + const { createStaveNote, addAccidental, addSubGroup } = createShortcuts(f); + const notes = [ + { keys: ['f/5'], stem_direction: -1, duration: '4' }, + { keys: ['d/4'], stem_direction: -1, duration: '4', clef: 'bass' }, + { keys: ['g/4'], stem_direction: -1, duration: '4', clef: 'alto' }, + { keys: ['a/4'], stem_direction: -1, duration: '4', clef: 'alto' }, + { keys: ['c/4'], stem_direction: -1, duration: '4', clef: 'tenor' }, + { keys: ['c/3'], stem_direction: +1, duration: '4', clef: 'tenor' }, + { keys: ['d/4'], stem_direction: -1, duration: '4', clef: 'tenor' }, + { keys: ['f/4'], stem_direction: -1, duration: '4', clef: 'tenor' }, + ].map(createStaveNote); + addAccidental(notes[1], '#'); + addAccidental(notes[2], 'n'); + addSubGroup(notes[1], [f.ClefNote({ type: 'bass', options: { size: 'small' } })]); + addSubGroup(notes[2], [f.ClefNote({ type: 'alto', options: { size: 'small' } })]); + addSubGroup(notes[4], [f.ClefNote({ type: 'tenor', options: { size: 'small' } }), new _src_barnote__WEBPACK_IMPORTED_MODULE_1__.BarNote()]); + addSubGroup(notes[5], [f.TimeSigNote({ time: '6/8' })]); + addSubGroup(notes[6], [new _src_barnote__WEBPACK_IMPORTED_MODULE_1__.BarNote(_src_stavebarline__WEBPACK_IMPORTED_MODULE_3__.BarlineType.REPEAT_BEGIN)]); + addAccidental(notes[4], 'b'); + addAccidental(notes[6], 'bb'); + const voice = f.Voice().setStrict(false).addTickables(notes); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + notes.forEach((note) => _src_note__WEBPACK_IMPORTED_MODULE_2__.Note.plotMetrics(ctx, note, 150)); + _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.plotLegendForNoteWidth(ctx, 620, 120); + ok(true, 'all pass'); +} +function multiVoiceSingleDraw(options) { + multiVoiceHelper(options, 1); +} +/** + * Call Factory.draw() twice. It should look identical to the multiVoice test case above. + */ +function multiVoiceDoubleDraw(options) { + multiVoiceHelper(options, 2); +} +/** + * Used by multiVoiceSingleDraw and multiVoiceDoubleDraw above. + */ +function multiVoiceHelper(options, numDraws) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 550, 200); + const ctx = f.getContext(); + const stave = f.Stave().addClef('treble'); + const { createStaveNote, addAccidental, addSubGroup } = createShortcuts(f); + const notes1 = [ + { keys: ['f/5'], stem_direction: 1, duration: '4' }, + { keys: ['d/4'], stem_direction: 1, duration: '4', clef: 'bass' }, + { keys: ['c/5'], stem_direction: 1, duration: '4', clef: 'alto' }, + { keys: ['c/5'], stem_direction: 1, duration: '4', clef: 'soprano' }, + ].map(createStaveNote); + const notes2 = [ + { keys: ['c/4'], stem_direction: -1, duration: '4' }, + { keys: ['c/3'], stem_direction: -1, duration: '4', clef: 'bass' }, + { keys: ['d/4'], stem_direction: -1, duration: '4', clef: 'alto' }, + { keys: ['f/4'], stem_direction: -1, duration: '4', clef: 'soprano' }, + ].map(createStaveNote); + addAccidental(notes1[1], '#'); + addSubGroup(notes1[1], [ + f.ClefNote({ type: 'bass', options: { size: 'small' } }), + new _src_barnote__WEBPACK_IMPORTED_MODULE_1__.BarNote(_src_stavebarline__WEBPACK_IMPORTED_MODULE_3__.BarlineType.REPEAT_BEGIN), + f.TimeSigNote({ time: '3/4' }), + ]); + addSubGroup(notes2[2], [ + f.ClefNote({ type: 'alto', options: { size: 'small' } }), + f.TimeSigNote({ time: '9/8' }), + new _src_barnote__WEBPACK_IMPORTED_MODULE_1__.BarNote(_src_stavebarline__WEBPACK_IMPORTED_MODULE_3__.BarlineType.DOUBLE), + ]); + addSubGroup(notes1[3], [f.ClefNote({ type: 'soprano', options: { size: 'small' } })]); + addAccidental(notes1[2], 'b'); + addAccidental(notes2[3], '#'); + const voices = [f.Voice().addTickables(notes1), f.Voice().addTickables(notes2)]; + f.Formatter().joinVoices(voices).formatToStave(voices, stave); + for (let i = 0; i < numDraws; i++) { + f.draw(); + } + notes1.forEach((note) => _src_note__WEBPACK_IMPORTED_MODULE_2__.Note.plotMetrics(ctx, note, 150)); + ok(true, 'all pass'); +} +function multiStaff(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 550, 400); + const { createStaveNote, addAccidental, addSubGroup } = createShortcuts(f); + const stave1 = f.Stave({ x: 15, y: 30, width: 500 }).setClef('treble'); + const notes1 = [ + { keys: ['f/5'], stem_direction: 1, duration: '4' }, + { keys: ['d/4'], stem_direction: 1, duration: '4', clef: 'bass' }, + { keys: ['c/5'], stem_direction: 1, duration: '4', clef: 'alto' }, + { keys: ['c/5'], stem_direction: 1, duration: '4', clef: 'soprano' }, + ].map(createStaveNote); + const notes2 = [ + { keys: ['c/4'], stem_direction: -1, duration: '4' }, + { keys: ['c/3'], stem_direction: -1, duration: '4', clef: 'bass' }, + { keys: ['d/4'], stem_direction: -1, duration: '4', clef: 'alto' }, + { keys: ['f/4'], stem_direction: -1, duration: '4', clef: 'soprano' }, + ].map(createStaveNote); + const stave2 = f.Stave({ x: 15, y: 150, width: 500 }).setClef('bass'); + const notes3 = [ + { keys: ['e/3'], duration: '8', stem_direction: -1, clef: 'bass' }, + { keys: ['g/4'], duration: '8', stem_direction: 1, clef: 'treble' }, + { keys: ['d/4'], duration: '8', stem_direction: 1, clef: 'treble' }, + { keys: ['f/4'], duration: '8', stem_direction: 1, clef: 'treble' }, + { keys: ['c/4'], duration: '8', stem_direction: 1, clef: 'treble' }, + { keys: ['g/3'], duration: '8', stem_direction: -1, clef: 'bass' }, + { keys: ['d/3'], duration: '8', stem_direction: -1, clef: 'bass' }, + { keys: ['f/3'], duration: '8', stem_direction: -1, clef: 'bass' }, + ].map(createStaveNote); + f.StaveConnector({ top_stave: stave1, bottom_stave: stave2, type: 'brace' }); + f.StaveConnector({ top_stave: stave1, bottom_stave: stave2, type: 'singleLeft' }); + f.StaveConnector({ top_stave: stave1, bottom_stave: stave2, type: 'singleRight' }); + f.Beam({ notes: notes3.slice(1, 4) }); + f.Beam({ notes: notes3.slice(5) }); + addAccidental(notes1[1], '#'); + addSubGroup(notes1[1], [f.ClefNote({ type: 'bass', options: { size: 'small' } }), f.TimeSigNote({ time: '3/4' })]); + addSubGroup(notes2[2], [f.ClefNote({ type: 'alto', options: { size: 'small' } }), f.TimeSigNote({ time: '9/8' })]); + addSubGroup(notes1[3], [f.ClefNote({ type: 'soprano', options: { size: 'small' } })]); + addSubGroup(notes3[1], [f.ClefNote({ type: 'treble', options: { size: 'small' } })]); + addSubGroup(notes3[5], [f.ClefNote({ type: 'bass', options: { size: 'small' } })]); + addAccidental(notes3[0], '#'); + addAccidental(notes3[3], 'b'); + addAccidental(notes3[5], '#'); + addAccidental(notes1[2], 'b'); + addAccidental(notes2[3], '#'); + const voice1 = f.Voice().addTickables(notes1); + const voice2 = f.Voice().addTickables(notes2); + const voice3 = f.Voice().addTickables(notes3); + f.Formatter().joinVoices([voice1, voice2]).joinVoices([voice3]).formatToStave([voice1, voice2, voice3], stave1); + f.draw(); + ok(true, 'all pass'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(NoteSubGroupTests); + + + +/***/ }), + +/***/ "./tests/offscreencanvas_tests.ts": +/*!****************************************!*\ + !*** ./tests/offscreencanvas_tests.ts ***! + \****************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "OffscreenCanvasTests": () => (/* binding */ OffscreenCanvasTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_canvascontext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/canvascontext */ "./src/canvascontext.ts"); +/* harmony import */ var _src_formatter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/formatter */ "./src/formatter.ts"); +/* harmony import */ var _src_stave__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/stave */ "./src/stave.ts"); +/* harmony import */ var _src_stavebarline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/stavebarline */ "./src/stavebarline.ts"); +/* harmony import */ var _src_stavenote__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _src_util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../src/util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2021. +// MIT License +// +// OffscreenCanvas Tests + + + + + + + +const OffscreenCanvasTests = { + Start() { + // At the time of writing, OffscreenCanvas is still an experimental technology. + if ((0,_src_util__WEBPACK_IMPORTED_MODULE_6__.globalObject)().OffscreenCanvas === undefined) { + return; + } + QUnit.module('OffscreenCanvas'); + test('Simple Test', simpleTest); + }, +}; +function simpleTest() { + // Create a CanvasContext from an OffscreenCanvas. + // eslint-disable-next-line + // @ts-ignore + const offscreenCanvas = new OffscreenCanvas(550, 200); + const offscreenCtx = offscreenCanvas.getContext('2d'); + if (offscreenCtx == null) { + throw new Error("Couldn't create offscreen context"); + } + const ctx = new _src_canvascontext__WEBPACK_IMPORTED_MODULE_1__.CanvasContext(offscreenCtx); + // Render to the OffscreenCavans. + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(10, 50, 200); + stave.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.END); + stave.addClef('treble').setContext(ctx).draw(); + const notes = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_5__.StaveNote({ keys: ['c/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_5__.StaveNote({ keys: ['d/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_5__.StaveNote({ keys: ['b/4'], duration: 'qr' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_5__.StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: 'q' }), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_2__.Formatter.FormatAndDraw(ctx, stave, notes); + // Copy the contents of the OffscreenCanvas to an HTMLCanvasElement. + const imgBmp = offscreenCanvas.transferToImageBitmap(); + const canvas = document.createElement('canvas'); + canvas.width = offscreenCanvas.width; + canvas.height = offscreenCanvas.height; + const canvasCtx = canvas.getContext('2d'); + if (canvasCtx == null) { + throw new Error("Couldn't create canvas context"); + } + canvasCtx.drawImage(imgBmp, 0, 0); + document.body.appendChild(canvas); + ok(true, 'all pass'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(OffscreenCanvasTests); + + + +/***/ }), + +/***/ "./tests/ornament_tests.ts": +/*!*********************************!*\ + !*** ./tests/ornament_tests.ts ***! + \*********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "OrnamentTests": () => (/* binding */ OrnamentTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_accidental__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/accidental */ "./src/accidental.ts"); +/* harmony import */ var _src_beam__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/beam */ "./src/beam.ts"); +/* harmony import */ var _src_dot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/dot */ "./src/dot.ts"); +/* harmony import */ var _src_formatter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/formatter */ "./src/formatter.ts"); +/* harmony import */ var _src_glyph__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/glyph */ "./src/glyph.ts"); +/* harmony import */ var _src_ornament__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../src/ornament */ "./src/ornament.ts"); +/* harmony import */ var _src_stave__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../src/stave */ "./src/stave.ts"); +/* harmony import */ var _src_stavenote__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../src/stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _src_voice__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../src/voice */ "./src/voice.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// Author: Cyril Silverman +// +// Ornament Tests +// TODO: Formatting for Jazz Ornaments is incorrect. The last note + ornament bleeds into the next measure. + + + + + + + + + + +const OrnamentTests = { + Start() { + QUnit.module('Ornament'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Ornaments', drawOrnaments); + run('Ornaments Vertically Shifted', drawOrnamentsDisplaced); + run('Ornaments - Delayed turns', drawOrnamentsDelayed); + run('Ornaments - Delayed turns, Multiple Draws', drawOrnamentsDelayedMultipleDraws); + run('Stacked', drawOrnamentsStacked); + run('With Upper/Lower Accidentals', drawOrnamentsWithAccidentals); + run('Jazz Ornaments', jazzOrnaments); + }, +}; +function drawOrnaments(options, contextBuilder) { + expect(0); + // Get the rendering context + const ctx = contextBuilder(options.elementId, 750, 195); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(10, 30, 700); + stave.setContext(ctx).draw(); + const notes = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + ]; + notes[0].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('mordent'), 0); + notes[1].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('mordent_inverted'), 0); + notes[2].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('turn'), 0); + notes[3].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('turn_inverted'), 0); + notes[4].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('tr'), 0); + notes[5].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('upprall'), 0); + notes[6].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('downprall'), 0); + notes[7].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('prallup'), 0); + notes[8].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('pralldown'), 0); + notes[9].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('upmordent'), 0); + notes[10].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('downmordent'), 0); + notes[11].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('lineprall'), 0); + notes[12].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('prallprall'), 0); + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, stave, notes); +} +function drawOrnamentsDisplaced(options, contextBuilder) { + expect(0); + // Get the rendering context + const ctx = contextBuilder(options.elementId, 750, 195); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(10, 30, 700); + stave.setContext(ctx).draw(); + const notes = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['a/5'], duration: '4', stem_direction: -1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['a/5'], duration: '4', stem_direction: -1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['a/5'], duration: '4', stem_direction: -1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['a/5'], duration: '4', stem_direction: -1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['a/5'], duration: '4', stem_direction: -1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['a/5'], duration: '4', stem_direction: -1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['a/5'], duration: '4', stem_direction: -1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + ]; + notes[0].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('mordent'), 0); + notes[1].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('mordent_inverted'), 0); + notes[1].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('mordent_inverted'), 0); + notes[2].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('turn'), 0); + notes[3].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('turn_inverted'), 0); + notes[4].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('tr'), 0); + notes[5].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('upprall'), 0); + notes[6].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('downprall'), 0); + notes[7].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('prallup'), 0); + notes[8].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('pralldown'), 0); + notes[9].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('upmordent'), 0); + notes[10].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('downmordent'), 0); + notes[11].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('lineprall'), 0); + notes[12].addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_6__.Ornament('prallprall'), 0); + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, stave, notes); +} +/** + * Helper function for the next two tests: drawOrnamentsDelayed and drawOrnamentsDelayedMultipleDraws. + * setDelayed(true) shifts the turn symbol to the right (after its note). + */ +const addDelayedTurns = (f) => { + // Get the rendering context + const context = f.getContext(); + const stave = f.Stave({ x: 10, y: 30, width: 500 }); + stave.setContext(context).draw(); + const notes = [ + f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + ]; + notes[0].addModifier(f.Ornament('turn', { delayed: true }), 0); + notes[1].addModifier(f.Ornament('turn_inverted', { delayed: true }), 0); + notes[2].addModifier(f.Ornament('turn_inverted', { delayed: true }), 0); + notes[3].addModifier(f.Ornament('turn', { delayed: true }), 0); + return { context, stave, notes }; +}; +function drawOrnamentsDelayed(options) { + expect(0); + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 550, 195); + const { context, stave, notes } = addDelayedTurns(f); + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(context, stave, notes); +} +function drawOrnamentsDelayedMultipleDraws(options) { + expect(0); + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 550, 195); + const { context, stave, notes } = addDelayedTurns(f); + // We can FormatAndDraw() two times, and it looks fine. + // However, if you inspect the SVG element, you will see duplicate paths. + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(context, stave, notes); + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(context, stave, notes); +} +function drawOrnamentsStacked(options) { + expect(0); + // Get the rendering context + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 550, 195); + const ctx = f.getContext(); + const stave = f.Stave({ x: 10, y: 30, width: 500 }); + stave.setContext(ctx).draw(); + const notes = [ + f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + ]; + notes[0].addModifier(f.Ornament('mordent'), 0); + notes[1].addModifier(f.Ornament('turn_inverted'), 0); + notes[2].addModifier(f.Ornament('turn'), 0); + notes[3].addModifier(f.Ornament('turn_inverted'), 0); + notes[0].addModifier(f.Ornament('turn'), 0); + notes[1].addModifier(f.Ornament('prallup'), 0); + notes[2].addModifier(f.Ornament('upmordent'), 0); + notes[3].addModifier(f.Ornament('lineprall'), 0); + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, stave, notes); +} +function drawOrnamentsWithAccidentals(options) { + expect(0); + // Get the rendering context + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 650, 250); + const ctx = f.getContext(); + const stave = f.Stave({ x: 10, y: 60, width: 600 }); + stave.setContext(ctx).draw(); + const notes = [ + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + ]; + notes[0].addModifier(f.Ornament('mordent', { lowerAccidental: '#', upperAccidental: '#' }), 0); + notes[1].addModifier(f.Ornament('turn_inverted', { lowerAccidental: 'b', upperAccidental: 'b' }), 0); + notes[2].addModifier(f.Ornament('turn', { upperAccidental: '##', lowerAccidental: '##' }), 0); + notes[3].addModifier(f.Ornament('mordent_inverted', { lowerAccidental: 'db', upperAccidental: 'db' }), 0); + notes[4].addModifier(f.Ornament('turn_inverted', { upperAccidental: '++', lowerAccidental: '++' }), 0); + notes[5].addModifier(f.Ornament('tr', { upperAccidental: 'n', lowerAccidental: 'n' }), 0); + notes[6].addModifier(f.Ornament('prallup', { upperAccidental: 'd', lowerAccidental: 'd' }), 0); + notes[7].addModifier(f.Ornament('lineprall', { upperAccidental: 'db', lowerAccidental: 'db' }), 0); + notes[8].addModifier(f.Ornament('upmordent', { upperAccidental: 'bbs', lowerAccidental: 'bbs' }), 0); + notes[9].addModifier(f.Ornament('prallprall', { upperAccidental: 'bb', lowerAccidental: 'bb' }), 0); + notes[10].addModifier(f.Ornament('turn_inverted', { upperAccidental: '+', lowerAccidental: '+' }), 0); + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, stave, notes); +} +function jazzOrnaments(options) { + const clefWidth = _src_glyph__WEBPACK_IMPORTED_MODULE_5__.Glyph.getWidth('gClef', 38); // widest clef + // Helper function. + function draw(modifiers, keys, x, width, y, stemDirection) { + // Helper function to create a StaveNote. + const note = (keys, duration, modifier, stemDirection) => { + const n = new _src_stavenote__WEBPACK_IMPORTED_MODULE_8__.StaveNote({ keys, duration, stem_direction: stemDirection }) + .addModifier(modifier, 0) + .addModifier(new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('b'), 0); + const dot = duration.indexOf('d') >= 0; + if (dot) { + _src_dot__WEBPACK_IMPORTED_MODULE_3__.Dot.buildAndAttach([n], { all: true }); + } + return n; + }; + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(x, y, width).addClef('treble').setContext(ctx).draw(); + const notes = [ + note(keys, '4d', modifiers[0], stemDirection), + note(keys, '8', modifiers[1], stemDirection), + note(keys, '4d', modifiers[2], stemDirection), + note(keys, '8', modifiers[3], stemDirection), + ]; + if (modifiers.length > 4) { + notes[3].addModifier(modifiers[4], 0); + } + _src_beam__WEBPACK_IMPORTED_MODULE_2__.Beam.generateBeams(notes); + const voice = new _src_voice__WEBPACK_IMPORTED_MODULE_9__.Voice({ + num_beats: 4, + beat_value: 4, + }).setMode(_src_voice__WEBPACK_IMPORTED_MODULE_9__.VoiceMode.SOFT); + voice.addTickables(notes); + const formatter = new _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter().joinVoices([voice]); + formatter.format([voice], width - _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave.defaultPadding - clefWidth); + stave.setContext(ctx).draw(); + voice.draw(ctx, stave); + } + expect(0); + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 950, 400); + const ctx = f.getContext(); + ctx.scale(1, 1); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + const xStart = 10; + const width = 300; + const yStart = 50; + const staffHeight = 70; + let curX = xStart; + let curY = yStart; + let mods = [ + // measure 1 + f.Ornament('scoop'), + f.Ornament('doit'), + f.Ornament('fall'), + f.Ornament('doitLong'), + ]; + draw(mods, ['a/5'], curX, width, curY, -1); + curX += width; + mods = [ + // measure 2 + f.Ornament('fallLong'), + f.Ornament('bend'), + f.Ornament('plungerClosed'), + f.Ornament('plungerOpen'), + f.Ornament('bend'), + ]; + draw(mods, ['a/5'], curX, width, curY, -1); + curX += width; + mods = [ + // measure 3 + f.Ornament('flip'), + f.Ornament('jazzTurn'), + f.Ornament('smear'), + f.Ornament('doit'), + ]; + draw(mods, ['a/5'], curX, width, curY, 1); + // second line + curX = xStart; + curY += staffHeight; + mods = [ + // measure 4 + f.Ornament('scoop'), + f.Ornament('doit'), + f.Ornament('fall'), + f.Ornament('doitLong'), + ]; + draw(mods, ['e/5'], curX, width, curY); + curX += width; + mods = [ + // measure 5 + f.Ornament('fallLong'), + f.Ornament('bend'), + f.Ornament('plungerClosed'), + f.Ornament('plungerOpen'), + f.Ornament('bend'), + ]; + draw(mods, ['e/5'], curX, width, curY); + curX += width; + mods = [ + // measure 6 + f.Ornament('flip'), + f.Ornament('jazzTurn'), + f.Ornament('smear'), + f.Ornament('doit'), + ]; + draw(mods, ['e/5'], curX, width, curY); + // third line + curX = xStart; + curY += staffHeight; + mods = [ + // measure 7 + f.Ornament('scoop'), + f.Ornament('doit'), + f.Ornament('fall'), + f.Ornament('doitLong'), + ]; + draw(mods, ['e/4'], curX, width, curY); + curX += width; + mods = [ + // measure 8 + f.Ornament('fallLong'), + f.Ornament('bend'), + f.Ornament('plungerClosed'), + f.Ornament('plungerOpen'), + f.Ornament('bend'), + ]; + draw(mods, ['e/4'], curX, width, curY); + curX += width; + mods = [ + // measure 9 + f.Ornament('flip'), + f.Ornament('jazzTurn'), + f.Ornament('smear'), + f.Ornament('doit'), + ]; + draw(mods, ['e/4'], curX, width, curY); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(OrnamentTests); + + + +/***/ }), + +/***/ "./tests/parser_tests.ts": +/*!*******************************!*\ + !*** ./tests/parser_tests.ts ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "ParserTests": () => (/* binding */ ParserTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_parser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/parser */ "./src/parser.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Parser Tests + + +const ParserTests = { + Start() { + QUnit.module('Parser'); + test('Basic', basic); + test('Advanced', advanced); + test('Mixed', mixed); + test('Micro Score', microscore); + }, +}; +/** + * Grammar used in the first three test cases: basic, advanced, mixed. + */ +class TestGrammar { + // The begin() function is the only requirement when implementing the Grammar interface. + begin() { + return () => ({ expect: this.expect }); + } + BIGORLITTLE() { + return { expect: [this.BIGLINE, this.LITTLELINE], or: true }; + } + BIGLINE() { + return { expect: [this.LBRACE, this.WORD, this.WORDS, this.MAYBEEXCLAIM, this.RBRACE] }; + } + LITTLELINE() { + return { expect: [this.WORD, this.WORDS] }; + } + WORDS() { + return { expect: [this.COMMA, this.WORD], zeroOrMore: true }; + } + MAYBEEXCLAIM() { + return { expect: [this.EXCLAIM], maybe: true }; + } + LBRACE() { + return { token: '[{]' }; + } + RBRACE() { + return { token: '[}]' }; + } + WORD() { + return { token: '[a-zA-Z]+' }; + } + COMMA() { + return { token: '[,]' }; + } + EXCLAIM() { + return { token: '[!]' }; + } + EOL() { + return { token: '$' }; + } +} +/** + * Grammar used in the microscore test case. + * It represents a series of piano key numbers (Middle C == 40) separated by whitespace. + * C Major Scale => 40 42 44 45 47 49 51 52 + * A chord is 2 or more piano key numbers surrounded by BRACKETS and separated by PERIODS + * C Major == [40.44.47] + * C-major F-major G-major A-minor chord progression => [40.44.47] [45.49.52] [47.51.54] [49.52.56] + */ +class MicroScoreGrammar { + constructor() { + this.ITEM = () => ({ expect: [this.PIANO_KEY_NUMBER, this.CHORD], or: true }); + this.MAYBE_MORE_ITEMS = () => ({ expect: [this.ITEM], zeroOrMore: true }); + this.PIANO_KEY_NUMBER = () => ({ expect: [this.NUM], oneOrMore: true }); + this.CHORD = () => ({ expect: [this.LEFT_BRACKET, this.PIANO_KEY_NUMBER, this.MORE_CHORD_PARTS, this.RIGHT_BRACKET] }); + this.MORE_CHORD_PARTS = () => ({ expect: [this.PERIOD, this.PIANO_KEY_NUMBER], oneOrMore: true }); + this.NUM = () => ({ token: '\\d+' }); + this.WHITESPACE = () => ({ token: '\\s+' }); + this.PERIOD = () => ({ token: '\\.' }); + this.LEFT_BRACKET = () => ({ token: '\\[' }); + this.RIGHT_BRACKET = () => ({ token: '\\]' }); + this.EOL = () => ({ token: '$' }); + } + begin() { + return () => ({ expect: [this.ITEM, this.MAYBE_MORE_ITEMS, this.EOL] }); + } +} +/** + * Check that the result is a parse failure, and verify the error position. + */ +function fails(result, expectedErrorPos, msg) { + notOk(result.success, msg); + equal(result.errorPos, expectedErrorPos, msg); +} +function basic() { + const grammar = new TestGrammar(); + grammar.expect = [grammar.LITTLELINE, grammar.EOL]; + const parser = new _src_parser__WEBPACK_IMPORTED_MODULE_1__.Parser(grammar); + // Each of these strings will parse correctly. + const mustPass = ['first, second', 'first,second', 'first', 'first,second, third']; + mustPass.forEach((line) => equal(parser.parse(line).success, true, line)); + fails(parser.parse(''), 0); + fails(parser.parse('first second'), 6); + fails(parser.parse('first,,'), 5); + fails(parser.parse('first,'), 5); + fails(parser.parse(',,'), 0); +} +function advanced() { + const grammar = new TestGrammar(); + grammar.expect = [grammar.BIGLINE, grammar.EOL]; + const parser = new _src_parser__WEBPACK_IMPORTED_MODULE_1__.Parser(grammar); + const mustPass = ['{first}', '{first!}', '{first,second}', '{first,second!}', '{first,second,third!}']; + mustPass.forEach((line) => equal(parser.parse(line).success, true, line)); + fails(parser.parse('{first,second,third,}'), 19); + fails(parser.parse('first,second,third'), 0); + fails(parser.parse('{first,second,third'), 19); + fails(parser.parse('{!}'), 1); +} +function mixed() { + const grammar = new TestGrammar(); + grammar.expect = [grammar.BIGORLITTLE, grammar.EOL]; + const parser = new _src_parser__WEBPACK_IMPORTED_MODULE_1__.Parser(grammar); + const mustPass = ['{first,second,third!}', 'first, second']; + mustPass.forEach((line) => equal(parser.parse(line).success, true, line)); + fails(parser.parse('first second'), 6); +} +function microscore() { + const grammar = new MicroScoreGrammar(); + const parser = new _src_parser__WEBPACK_IMPORTED_MODULE_1__.Parser(grammar); + const mustPass = [ + '40 42 44 45 47 49 51 52', + '[40.44.47] [45.49.52] [47.51.54] [49.52.56]', + '40 [40.44.47] 45 47 [44.47.51]', // Mixed Notes and Chords: C4 [Cmajor] F4 G4 [Eminor] + ]; + mustPass.forEach((line) => { + var _a; + const result = parser.parse(line); + equal(result.success, true, line); + equal((_a = result.matches) === null || _a === void 0 ? void 0 : _a.length, 3, line); + }); + fails(parser.parse('40 42 44 45 47 49 5A 52'), 19); + fails(parser.parse('40.44.47] [45.49.52] [47.51.54] [49.52.56]'), 2); + fails(parser.parse('40 [40] 45 47 [44.47.51]'), 3); // A chord with a single note is not allowed. +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(ParserTests); + + + +/***/ }), + +/***/ "./tests/pedalmarking_tests.ts": +/*!*************************************!*\ + !*** ./tests/pedalmarking_tests.ts ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "PedalMarkingTests": () => (/* binding */ PedalMarkingTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// PedalMarking Tests +// TODO: Fix Error => Type 'Tickable' is not assignable to type 'StaveNote'. + +const PedalMarkingTests = { + Start() { + QUnit.module('PedalMarking'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Simple Pedal 1', simple1); + run('Simple Pedal 2', simple2); + run('Simple Pedal 3', simple3); + run('Release and Depress on Same Note 1', releaseDepress1); + run('Release and Depress on Same Note 2', releaseDepress2); + run('Custom Text 1', customTest1); + run('Custom Text 2', customTest2); + }, +}; +/** + * Every test below uses this to set up the score and two staves/voices. + */ +function createTest(makePedal) { + return (options) => { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 550, 200); + const score = f.EasyScore(); + const stave0 = f.Stave({ width: 250 }).addClef('treble'); + const voice0 = score.voice(score.notes('b4/4, b4, b4, b4[stem="down"]', { stem: 'up' })); + f.Formatter().joinVoices([voice0]).formatToStave([voice0], stave0); + const stave1 = f.Stave({ width: 260, x: 250 }); + const voice1 = score.voice(score.notes('c4/4, c4, c4, c4', { stem: 'up' })); + f.Formatter().joinVoices([voice1]).formatToStave([voice1], stave1); + makePedal(f, voice0.getTickables(), voice1.getTickables()); + f.draw(); + ok(true, 'Must render'); + }; +} +function withSimplePedal(style) { + return (factory, notes0, notes1) => factory.PedalMarking({ + notes: [notes0[0], notes0[2], notes0[3], notes1[3]], + options: { style }, + }); +} +function withReleaseAndDepressedPedal(style) { + return (factory, notes0, notes1) => factory.PedalMarking({ + notes: [notes0[0], notes0[3], notes0[3], notes1[1], notes1[1], notes1[3]], + options: { style }, + }); +} +const simple1 = createTest(withSimplePedal('text')); +const simple2 = createTest(withSimplePedal('bracket')); +const simple3 = createTest(withSimplePedal('mixed')); +const releaseDepress1 = createTest(withReleaseAndDepressedPedal('bracket')); +const releaseDepress2 = createTest(withReleaseAndDepressedPedal('mixed')); +const customTest1 = createTest((factory, notes0, notes1) => { + const pedal = factory.PedalMarking({ + notes: [notes0[0], notes1[3]], + options: { style: 'text' }, + }); + pedal.setCustomText('una corda', 'tre corda'); + return pedal; +}); +const customTest2 = createTest((factory, notes0, notes1) => { + const pedal = factory.PedalMarking({ + notes: [notes0[0], notes1[3]], + options: { style: 'mixed' }, + }); + pedal.setCustomText('Sost. Ped.'); + return pedal; +}); +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(PedalMarkingTests); + + + +/***/ }), + +/***/ "./tests/percussion_tests.ts": +/*!***********************************!*\ + !*** ./tests/percussion_tests.ts ***! + \***********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "PercussionTests": () => (/* binding */ PercussionTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/index */ "./src/index.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// Author: Mike Corrigan 2012 +// +// Percussion Tests +// TODO: Type 'Tickable[]' is not assignable to type 'StemmableNote[]'. + + +const PercussionTests = { + Start() { + QUnit.module('Percussion'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Percussion Clef', draw); + run('Percussion Notes', drawNotes); + run('Percussion Basic0', basic0); + run('Percussion Basic1', basic1); + run('Percussion Basic2', basic2); + run('Percussion Snare0', snare0); + run('Percussion Snare1', snare1); + run('Percussion Snare2', snare2); + run('Percussion Snare3', snare3); + }, +}; +function draw(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 120); + new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stave(10, 10, 300).addClef('percussion').setContext(ctx).draw(); + ok(true); +} +/** + * Helper function used by the drawNotes() test case below. + */ +function showNote(struct, stave, ctx, x) { + const staveNote = new _src_index__WEBPACK_IMPORTED_MODULE_1__.StaveNote(struct).setStave(stave); + new _src_index__WEBPACK_IMPORTED_MODULE_1__.TickContext().addTickable(staveNote).preFormat().setX(x); + staveNote.setContext(ctx).draw(); + return staveNote; +} +function drawNotes(options, contextBuilder) { + const notes = [ + { keys: ['g/5/d0'], duration: '4' }, + { keys: ['g/5/d1'], duration: '4' }, + { keys: ['g/5/d2'], duration: '4' }, + { keys: ['g/5/d3'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/t0'], duration: '1' }, + { keys: ['g/5/t1'], duration: '4' }, + { keys: ['g/5/t2'], duration: '4' }, + { keys: ['g/5/t3'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/x0'], duration: '1' }, + { keys: ['g/5/x1'], duration: '4' }, + { keys: ['g/5/x2'], duration: '4' }, + { keys: ['g/5/x3'], duration: '4' }, + ]; + const ctx = contextBuilder(options.elementId, notes.length * 25 + 100, 240); + // Draw two staves, one with up-stems and one with down-stems. + for (let h = 0; h < 2; ++h) { + const stave = new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stave(10, 10 + h * 120, notes.length * 25 + 75).addClef('percussion').setContext(ctx).draw(); + for (let i = 0; i < notes.length; ++i) { + const note = notes[i]; + note.stem_direction = h === 0 ? -1 : 1; + const staveNote = showNote(note, stave, ctx, (i + 1) * 25); + ok(staveNote.getX() > 0, 'Note ' + i + ' has X value'); + ok(staveNote.getYs().length > 0, 'Note ' + i + ' has Y values'); + } + } +} +/** + * Helper function for the seven test cases below. + * Adds a percussion clef (two short vertical bars, like a pause sign) to the stave. + */ +function createSingleMeasureTest(setup) { + return (options) => { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 500); + const stave = f.Stave().addClef('percussion'); + setup(f); + f.Formatter().joinVoices(f.getVoices()).formatToStave(f.getVoices(), stave); + f.draw(); + ok(true); + }; +} +const basic0 = createSingleMeasureTest((f) => { + const voice0 = f + .Voice() + .addTickables([ + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + ]); + const voice1 = f + .Voice() + .addTickables([ + f.StaveNote({ keys: ['f/4'], duration: '8', stem_direction: -1 }), + f.StaveNote({ keys: ['f/4'], duration: '8', stem_direction: -1 }), + f.StaveNote({ keys: ['d/4/x2', 'c/5'], duration: '4', stem_direction: -1 }), + f.StaveNote({ keys: ['f/4'], duration: '8', stem_direction: -1 }), + f.StaveNote({ keys: ['f/4'], duration: '8', stem_direction: -1 }), + f.StaveNote({ keys: ['d/4/x2', 'c/5'], duration: '4', stem_direction: -1 }), + ]); + f.Beam({ notes: voice0.getTickables() }); + f.Beam({ notes: voice1.getTickables().slice(0, 2) }); + f.Beam({ notes: voice1.getTickables().slice(3, 5) }); +}); +const basic1 = createSingleMeasureTest((f) => { + f.Voice().addTickables([ + f.StaveNote({ keys: ['f/5/x2'], duration: '4' }), + f.StaveNote({ keys: ['f/5/x2'], duration: '4' }), + f.StaveNote({ keys: ['f/5/x2'], duration: '4' }), + f.StaveNote({ keys: ['f/5/x2'], duration: '4' }), + ]); + f.Voice().addTickables([ + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: -1 }), + f.StaveNote({ keys: ['d/4/x2', 'c/5'], duration: '4', stem_direction: -1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: -1 }), + f.StaveNote({ keys: ['d/4/x2', 'c/5'], duration: '4', stem_direction: -1 }), + ]); +}); +const basic2 = createSingleMeasureTest((f) => { + const voice0 = f + .Voice() + .addTickables([ + f.StaveNote({ keys: ['a/5/x3'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5'], duration: '8' }), + f.StaveNote({ keys: ['g/4/n', 'g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + ]); + f.Beam({ notes: voice0.getTickables().slice(1, 8) }); + const notes1 = [ + f.StaveNote({ keys: ['f/4'], duration: '8', stem_direction: -1 }), + f.StaveNote({ keys: ['f/4'], duration: '8', stem_direction: -1 }), + f.StaveNote({ keys: ['d/4/x2', 'c/5'], duration: '4', stem_direction: -1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: -1 }), + f.StaveNote({ keys: ['d/4/x2', 'c/5'], duration: '8d', stem_direction: -1 }), + f.StaveNote({ keys: ['c/5'], duration: '16', stem_direction: -1 }), + ]; + _src_index__WEBPACK_IMPORTED_MODULE_1__.Dot.buildAndAttach([notes1[4]], { all: true }); + const voice1 = f.Voice().addTickables(notes1); + f.Beam({ notes: voice1.getTickables().slice(0, 2) }); + f.Beam({ notes: voice1.getTickables().slice(4, 6) }); +}); +const snare0 = createSingleMeasureTest((f) => { + const font = { + family: _src_index__WEBPACK_IMPORTED_MODULE_1__.Font.SERIF, + size: 14, + weight: _src_index__WEBPACK_IMPORTED_MODULE_1__.FontWeight.BOLD, + style: _src_index__WEBPACK_IMPORTED_MODULE_1__.FontStyle.ITALIC, + }; + f.Voice().addTickables([ + f + .StaveNote({ keys: ['c/5'], duration: '4', stem_direction: -1 }) + .addModifier(f.Articulation({ type: 'a>' }), 0) + .addModifier(f.Annotation({ text: 'L', font }), 0), + f.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: -1 }).addModifier(f.Annotation({ text: 'R', font }), 0), + f.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: -1 }).addModifier(f.Annotation({ text: 'L', font }), 0), + f.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: -1 }).addModifier(f.Annotation({ text: 'L', font }), 0), + ]); +}); +const snare1 = createSingleMeasureTest((f) => { + f.Voice().addTickables([ + f.StaveNote({ keys: ['g/5/x2'], duration: '4', stem_direction: -1 }).addModifier(f.Articulation({ type: 'ah' }), 0), + f.StaveNote({ keys: ['g/5/x2'], duration: '4', stem_direction: -1 }), + f.StaveNote({ keys: ['g/5/x2'], duration: '4', stem_direction: -1 }).addModifier(f.Articulation({ type: 'ah' }), 0), + f.StaveNote({ keys: ['a/5/x3'], duration: '4', stem_direction: -1 }).addModifier(f.Articulation({ type: 'a,' }), 0), + ]); +}); +const snare2 = createSingleMeasureTest((f) => { + f.Voice().addTickables([ + f.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: -1 }).addModifier(new _src_index__WEBPACK_IMPORTED_MODULE_1__.Tremolo(1), 0), + f.GraceNote({ keys: ['c/5'], duration: '4', stem_direction: -1 }).addModifier(new _src_index__WEBPACK_IMPORTED_MODULE_1__.Tremolo(1), 0), + f.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: -1 }).addModifier(new _src_index__WEBPACK_IMPORTED_MODULE_1__.Tremolo(3), 0), + f.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: -1 }).addModifier(new _src_index__WEBPACK_IMPORTED_MODULE_1__.Tremolo(5), 0), + ]); +}); +const snare3 = createSingleMeasureTest((factory) => { + factory + .Voice() + .addTickables([ + factory.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: 1 }).addModifier(new _src_index__WEBPACK_IMPORTED_MODULE_1__.Tremolo(2), 0), + factory.GraceNote({ keys: ['c/5'], duration: '4', stem_direction: 1 }).addModifier(new _src_index__WEBPACK_IMPORTED_MODULE_1__.Tremolo(2), 0), + factory.GraceNote({ keys: ['c/5'], duration: '4', stem_direction: 1 }).addModifier(new _src_index__WEBPACK_IMPORTED_MODULE_1__.Tremolo(3), 0), + factory.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: 1 }).addModifier(new _src_index__WEBPACK_IMPORTED_MODULE_1__.Tremolo(5), 0), + ]); +}); +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(PercussionTests); + + + +/***/ }), + +/***/ "./tests/registry_tests.ts": +/*!*********************************!*\ + !*** ./tests/registry_tests.ts ***! + \*********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "RegistryTests": () => (/* binding */ RegistryTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/index */ "./src/index.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Registry Tests + + +const RegistryTests = { + Start() { + QUnit.module('Registry'); + test('Register and Clear', registerAndClear); + test('Default Registry', defaultRegistry); + test('Multiple Classes', classes); + }, +}; +function registerAndClear() { + const registry = new _src_index__WEBPACK_IMPORTED_MODULE_1__.Registry(); + const score = new _src_index__WEBPACK_IMPORTED_MODULE_1__.EasyScore({ factory: _src_index__WEBPACK_IMPORTED_MODULE_1__.Factory.newFromElementId(null) }); + registry.register(score.notes('C4')[0], 'foobar'); + const foobar = registry.getElementById('foobar'); + ok(foobar); + equal(foobar.getAttribute('id'), 'foobar'); + registry.clear(); + notOk(registry.getElementById('foobar')); + // eslint-disable-next-line + // @ts-ignore: intentional type mismatch to trigger an error. + throws(() => registry.register(score.notes('C4'))); + registry.clear(); + ok(registry.register(score.notes('C4[id="boobar"]')[0]).getElementById('boobar')); +} +function defaultRegistry() { + const registry = new _src_index__WEBPACK_IMPORTED_MODULE_1__.Registry(); + const score = new _src_index__WEBPACK_IMPORTED_MODULE_1__.EasyScore({ factory: _src_index__WEBPACK_IMPORTED_MODULE_1__.Factory.newFromElementId(null) }); + _src_index__WEBPACK_IMPORTED_MODULE_1__.Registry.enableDefaultRegistry(registry); + score.notes('C4[id="foobar"]'); + const note = registry.getElementById('foobar'); + ok(note); + note.setAttribute('id', 'boobar'); + ok(registry.getElementById('boobar')); + notOk(registry.getElementById('foobar')); + registry.clear(); + equal(registry.getElementsByType(_src_index__WEBPACK_IMPORTED_MODULE_1__.StaveNote.CATEGORY).length, 0); + score.notes('C5'); + const elements = registry.getElementsByType(_src_index__WEBPACK_IMPORTED_MODULE_1__.StaveNote.CATEGORY); + equal(elements.length, 1); +} +function classes() { + const registry = new _src_index__WEBPACK_IMPORTED_MODULE_1__.Registry(); + const score = new _src_index__WEBPACK_IMPORTED_MODULE_1__.EasyScore({ factory: _src_index__WEBPACK_IMPORTED_MODULE_1__.Factory.newFromElementId(null) }); + _src_index__WEBPACK_IMPORTED_MODULE_1__.Registry.enableDefaultRegistry(registry); + score.notes('C4[id="foobar"]'); + const note = registry.getElementById('foobar'); + note.addClass('foo'); + ok(note.hasClass('foo')); + notOk(note.hasClass('boo')); + equal(registry.getElementsByClass('foo').length, 1); + equal(registry.getElementsByClass('boo').length, 0); + note.addClass('boo'); + ok(note.hasClass('foo')); + ok(note.hasClass('boo')); + equal(registry.getElementsByClass('foo').length, 1); + equal(registry.getElementsByClass('boo').length, 1); + note.removeClass('boo'); + note.removeClass('foo'); + notOk(note.hasClass('foo')); + notOk(note.hasClass('boo')); + equal(registry.getElementsByClass('foo').length, 0); + equal(registry.getElementsByClass('boo').length, 0); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(RegistryTests); + + + +/***/ }), + +/***/ "./tests/renderer_tests.ts": +/*!*********************************!*\ + !*** ./tests/renderer_tests.ts ***! + \*********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "RendererTests": () => (/* binding */ RendererTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/index */ "./src/index.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Ron B. Yeh +// MIT License +// +// Renderer Tests + + +// TODO: Should FactoryOptions.renderer.elementId also accept a canvas | div? +const STAVE_WIDTH = 700; +const STAVE_HEIGHT = 100; +// FactoryOptions.stave.space defaults to 10. +// We subtract 10 to make the useRendererAPI() output look identical to useFactoryAPI(). +const STAVE_RIGHT_MARGIN = 10; +const USE_RENDERER = { useRendererAPI: true }; +const USE_FACTORY = { useRendererAPI: false }; +const RendererTests = { + Start() { + QUnit.module('Renderer'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + // Randomly choose one of four setup paths. See below for a description. + // Refresh `flow.html` to see the test change each time. + // We can manually check that they look identical + // by opening `flow.html` in multiple tabs & quickly switching between tabs. + run('Random', random); + // These are the four setup paths. They should all produce the same output. + // Use the: Renderer API OR Factory API + // Pass in: element ID string OR canvas/div element. + run('Renderer API with element ID string', stringElementId, USE_RENDERER); + run('Renderer API with canvas or div', canvasOrDivElement, USE_RENDERER); + run('Renderer API with context', passRenderContext); + run('Factory API with element ID string', stringElementId, USE_FACTORY); + run('Factory API with canvas or div', canvasOrDivElement, USE_FACTORY); + }, +}; +/** + * Helper function to add three notes to a stave. + */ +function drawStave(stave, context) { + stave.addClef('bass').addTimeSignature('3/4').draw(); + _src_index__WEBPACK_IMPORTED_MODULE_1__.Formatter.FormatAndDraw(context, stave, [ + new _src_index__WEBPACK_IMPORTED_MODULE_1__.StaveNote({ keys: ['C/4'], duration: '4' }), + new _src_index__WEBPACK_IMPORTED_MODULE_1__.StaveNote({ keys: ['E/4'], duration: '4' }), + new _src_index__WEBPACK_IMPORTED_MODULE_1__.StaveNote({ keys: ['G/4'], duration: '4' }), + ]); +} +/** + * Randomize the test upon each refresh (for verifying that the output is identical). + * Draw a colored outline to indicate which of the four options is shown. + * - blue = element is a SVG or Canvas element + * - gray = element ID is a string + * - solid outline = use the Renderer API directly + * - dashed outline = use the Factory API + */ +function random(options) { + const useElementIDString = Math.random() > 0.5; + const useRendererAPI = Math.random() > 0.5; + options.params = { useRendererAPI }; + if (useElementIDString) { + stringElementId(options); + } + else { + canvasOrDivElement(options); + } + // eslint-disable-next-line + const element = document.getElementById(options.elementId); + const colorForElementType = useElementIDString ? '#CCCCCC' /* light gray */ : '#0074d9'; /* blue */ + const lineStyleForWhichAPI = useRendererAPI ? 'solid' : 'dashed'; + const borderStyle = `3px ${lineStyleForWhichAPI} ${colorForElementType}`; + let elementType; + if (options.backend === _src_index__WEBPACK_IMPORTED_MODULE_1__.Renderer.Backends.CANVAS) { + // If the backend is canvas, we draw a border around the canvas directly. + element.style.border = borderStyle; + elementType = '<canvas> element object'; + } + else { + // If the backend is SVG, we draw a border around the SVG child of the DIV. + element.children[0].style.border = borderStyle; + elementType = '<svg> element object'; + } + if (useElementIDString) { + elementType = 'elementID string'; + } + const whichAPI = useRendererAPI ? 'Renderer API' : 'Factory API'; + element.parentElement.insertAdjacentHTML('beforeend', `
` + + `${whichAPI}` + + ` with ` + + `${elementType}` + + `

`); +} +function useRendererAPI(e, backend) { + const renderer = new _src_index__WEBPACK_IMPORTED_MODULE_1__.Renderer(e, backend); + renderer.resize(STAVE_WIDTH, STAVE_HEIGHT); + const context = renderer.getContext(); + drawStave(new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stave(0, 0, STAVE_WIDTH - STAVE_RIGHT_MARGIN).setContext(context), context); +} +/** + * Alternatively, use the Factory API! + * The Factory API declares elementId to be string | null. + * However, if we pass in a canvas or div element, it will still work. + * This is because Factory calls new Renderer(elementId, ...) via Renderer.buildContext(). + */ +function useFactoryAPI(e, backend) { + const opts = { + renderer: { elementId: e, width: STAVE_WIDTH, height: STAVE_HEIGHT, backend }, + }; + const factory = new _src_index__WEBPACK_IMPORTED_MODULE_1__.Factory(opts); + drawStave(factory.Stave(), factory.getContext()); +} +/** + * Pass in a elementId string. Renderer will call document.getElementById(). + */ +function stringElementId(options) { + const elementId = options.elementId; + if (options.params.useRendererAPI) { + useRendererAPI(elementId, options.backend); + } + else { + useFactoryAPI(elementId, options.backend); + } + ok(true); +} +/** + * Pass a canvas or div element directly to the Renderer constructor. + */ +function canvasOrDivElement(options) { + const element = document.getElementById(options.elementId); + if (options.params.useRendererAPI) { + useRendererAPI(element, options.backend); + } + else { + useFactoryAPI(element, options.backend); + } + ok(true); +} +/** + * Pass the render context directly to the Renderer constructor. + */ +function passRenderContext(options) { + let context; + const element = document.getElementById(options.elementId); + if ((0,_src_index__WEBPACK_IMPORTED_MODULE_1__.isHTMLCanvas)(element)) { + const ctx = element.getContext('2d'); + if (!ctx) { + throw new _src_index__WEBPACK_IMPORTED_MODULE_1__.RuntimeError(`Couldn't get context from element "${options.elementId}"`); + } + context = new _src_index__WEBPACK_IMPORTED_MODULE_1__.CanvasContext(ctx); + } + else { + context = new _src_index__WEBPACK_IMPORTED_MODULE_1__.SVGContext(element); + } + const renderer = new _src_index__WEBPACK_IMPORTED_MODULE_1__.Renderer(context); + renderer.resize(STAVE_WIDTH, STAVE_HEIGHT); + drawStave(new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stave(0, 0, STAVE_WIDTH - STAVE_RIGHT_MARGIN).setContext(context), context); + ok(true); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(RendererTests); + + + +/***/ }), + +/***/ "./tests/rests_tests.ts": +/*!******************************!*\ + !*** ./tests/rests_tests.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "RestsTests": () => (/* binding */ RestsTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_beam__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/beam */ "./src/beam.ts"); +/* harmony import */ var _src_dot__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/dot */ "./src/dot.ts"); +/* harmony import */ var _src_flow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/flow */ "./src/flow.ts"); +/* harmony import */ var _src_formatter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/formatter */ "./src/formatter.ts"); +/* harmony import */ var _src_stave__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/stave */ "./src/stave.ts"); +/* harmony import */ var _src_stavenote__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../src/stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _src_tuplet__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../src/tuplet */ "./src/tuplet.ts"); +/* harmony import */ var _src_voice__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../src/voice */ "./src/voice.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Rests Tests + + + + + + + + + +const RestsTests = { + Start() { + QUnit.module('Rests'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Outside Stave', legerRest); + run('Dotted', basic); + run('Auto Align - Beamed Notes Stems Up', beamsUp); + run('Auto Align - Beamed Notes Stems Down', beamsDown); + run('Auto Align - Tuplets Stems Up', tupletsUp); + run('Auto Align - Tuplets Stems Down', tupletsDown); + run('Auto Align - Single Voice (Default)', singleVoiceDefaultAlignment); + run('Auto Align - Single Voice (Align All)', singleVoiceAlignAll); + run('Auto Align - Multi Voice', multiVoice); + }, +}; +/** + * Helper function to create a context and stave. + * + * @param options + * @param contextBuilder static function in renderer.ts (Renderer.getSVGContext or Renderer.getCanvasContext). + * @param width + * @param height + * @returns object with .context and .stave properties + */ +function setupContext(options, contextBuilder, width = 350, height = 150) { + // context is SVGContext or CanvasRenderingContext2D (native) or CanvasContext (only if Renderer.USE_CANVAS_PROXY is true). + const context = contextBuilder(options.elementId, width, height); + context.scale(0.9, 0.9); + context.fillStyle = '#221'; + context.strokeStyle = '#221'; + context.font = '10pt Arial'; + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_5__.Stave(10, 30, width).addClef('treble').addTimeSignature('4/4').setContext(context).draw(); + return { context, stave }; +} +/** + * Dotted rests (whole to 128th). + * The rest duration is specified as 'wr', 'hr', ..., '128r'. + */ +function basic(options, contextBuilder) { + const { context, stave } = setupContext(options, contextBuilder, 700); + const notes = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ keys: ['b/4'], stem_direction: 1, duration: 'wr' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ keys: ['b/4'], stem_direction: 1, duration: 'hr' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ keys: ['b/4'], stem_direction: 1, duration: '4r' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ keys: ['b/4'], stem_direction: 1, duration: '8r' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ keys: ['b/4'], stem_direction: 1, duration: '16r' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ keys: ['b/4'], stem_direction: 1, duration: '32r' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ keys: ['b/4'], stem_direction: 1, duration: '64r' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ keys: ['b/4'], stem_direction: 1, duration: '128r' }), + ]; + _src_dot__WEBPACK_IMPORTED_MODULE_2__.Dot.buildAndAttach(notes, { all: true }); + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(context, stave, notes); + ok(true, 'Dotted Rest Test'); +} +/** + * Use the leger glyph if the whole or half rest is above/below the staff + */ +function legerRest(options, contextBuilder) { + const { context, stave } = setupContext(options, contextBuilder, 700); + const notes = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ keys: ['a/5'], stem_direction: 1, duration: 'wr' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ keys: ['c/6'], stem_direction: 1, duration: 'hr' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ keys: ['b/4'], stem_direction: 1, duration: 'hr' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ keys: ['a/3'], stem_direction: 1, duration: 'wr' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ keys: ['f/3'], stem_direction: 1, duration: 'hr' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ keys: ['b/4'], stem_direction: 1, duration: 'wr' }), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(context, stave, notes); + ok(true, 'Leger/Ledger Rest Test'); +} +// Optional: Use a helper function to make your code more concise. +const note = (noteStruct) => new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote(noteStruct); +/** + * Rests are intermixed within beamed notes (with the stems and beams at the top). + */ +function beamsUp(options, contextBuilder) { + const { context, stave } = setupContext(options, contextBuilder, 600, 160); + const notes = [ + note({ keys: ['e/5'], stem_direction: 1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: 1, duration: '8r' }), + note({ keys: ['b/5'], stem_direction: 1, duration: '8' }), + note({ keys: ['c/5'], stem_direction: 1, duration: '8' }), + note({ keys: ['b/4', 'd/5', 'a/5'], stem_direction: 1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: 1, duration: '8r' }), + note({ keys: ['b/4'], stem_direction: 1, duration: '8r' }), + note({ keys: ['c/4'], stem_direction: 1, duration: '8' }), + note({ keys: ['b/4', 'd/5', 'a/5'], stem_direction: 1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: 1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: 1, duration: '8r' }), + note({ keys: ['c/4'], stem_direction: 1, duration: '8' }), + ]; + const beam1 = new _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam(notes.slice(0, 4)); + const beam2 = new _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam(notes.slice(4, 8)); + const beam3 = new _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam(notes.slice(8, 12)); + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(context, stave, notes); + beam1.setContext(context).draw(); + beam2.setContext(context).draw(); + beam3.setContext(context).draw(); + ok(true, 'Auto Align Rests - Beams Up Test'); +} +/** + * Rests are intermixed within beamed notes (with the stems and beams at the bottom). + */ +function beamsDown(options, contextBuilder) { + const { context, stave } = setupContext(options, contextBuilder, 600, 160); + const notes = [ + note({ keys: ['a/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + note({ keys: ['b/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['c/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['b/4', 'd/5', 'a/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + note({ keys: ['e/4'], stem_direction: -1, duration: '8' }), + note({ keys: ['b/4', 'd/5', 'a/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + note({ keys: ['e/4'], stem_direction: -1, duration: '8' }), + ]; + const beam1 = new _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam(notes.slice(0, 4)); + const beam2 = new _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam(notes.slice(4, 8)); + const beam3 = new _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam(notes.slice(8, 12)); + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(context, stave, notes); + beam1.setContext(context).draw(); + beam2.setContext(context).draw(); + beam3.setContext(context).draw(); + ok(true, 'Auto Align Rests - Beams Down Test'); +} +/** + * Call setTupletLocation(Tuplet.LOCATION_TOP) to place the tuplet indicator (bracket and number) at the + * top of the group of notes. Tuplet.LOCATION_TOP is the default, so this is optional. + */ +function tupletsUp(options, contextBuilder) { + const { context, stave } = setupContext(options, contextBuilder, 600, 160); + const notes = [ + note({ keys: ['b/4'], stem_direction: 1, duration: '4' }), + note({ keys: ['b/4'], stem_direction: 1, duration: '4' }), + note({ keys: ['a/5'], stem_direction: 1, duration: '4r' }), + note({ keys: ['a/5'], stem_direction: 1, duration: '4r' }), + note({ keys: ['g/5'], stem_direction: 1, duration: '4r' }), + note({ keys: ['b/5'], stem_direction: 1, duration: '4' }), + note({ keys: ['a/5'], stem_direction: 1, duration: '4' }), + note({ keys: ['g/5'], stem_direction: 1, duration: '4r' }), + note({ keys: ['b/4'], stem_direction: 1, duration: '4' }), + note({ keys: ['a/5'], stem_direction: 1, duration: '4' }), + note({ keys: ['b/4'], stem_direction: 1, duration: '4r' }), + note({ keys: ['b/4'], stem_direction: 1, duration: '4r' }), + ]; + const tuplet1 = new _src_tuplet__WEBPACK_IMPORTED_MODULE_7__.Tuplet(notes.slice(0, 3)).setTupletLocation(_src_tuplet__WEBPACK_IMPORTED_MODULE_7__.Tuplet.LOCATION_TOP); + const tuplet2 = new _src_tuplet__WEBPACK_IMPORTED_MODULE_7__.Tuplet(notes.slice(3, 6)).setTupletLocation(_src_tuplet__WEBPACK_IMPORTED_MODULE_7__.Tuplet.LOCATION_TOP); + const tuplet3 = new _src_tuplet__WEBPACK_IMPORTED_MODULE_7__.Tuplet(notes.slice(6, 9)).setTupletLocation(_src_tuplet__WEBPACK_IMPORTED_MODULE_7__.Tuplet.LOCATION_TOP); + const tuplet4 = new _src_tuplet__WEBPACK_IMPORTED_MODULE_7__.Tuplet(notes.slice(9, 12)).setTupletLocation(_src_tuplet__WEBPACK_IMPORTED_MODULE_7__.Tuplet.LOCATION_TOP); + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(context, stave, notes); + tuplet1.setContext(context).draw(); + tuplet2.setContext(context).draw(); + tuplet3.setContext(context).draw(); + tuplet4.setContext(context).draw(); + ok(true, 'Auto Align Rests - Tuplets Stem Up Test'); +} +/** + * Call setTupletLocation(Tuplet.LOCATION_BOTTOM) to place the tuplet indicator (bracket and number) at the + * bottom of the group of notes. + */ +function tupletsDown(options, contextBuilder) { + const { context, stave } = setupContext(options, contextBuilder, 600, 160); + const notes = [ + note({ keys: ['a/5'], stem_direction: -1, duration: '8r' }), + note({ keys: ['g/5'], stem_direction: -1, duration: '8r' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8' }), + note({ keys: ['a/5'], stem_direction: -1, duration: '8r' }), + note({ keys: ['g/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['b/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['a/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['g/5'], stem_direction: -1, duration: '8r' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8' }), + note({ keys: ['a/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['g/5'], stem_direction: -1, duration: '8r' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + ]; + const beam1 = new _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam(notes.slice(0, 3)); + const beam2 = new _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam(notes.slice(3, 6)); + const beam3 = new _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam(notes.slice(6, 9)); + const beam4 = new _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam(notes.slice(9, 12)); + const tuplet1 = new _src_tuplet__WEBPACK_IMPORTED_MODULE_7__.Tuplet(notes.slice(0, 3)).setTupletLocation(_src_tuplet__WEBPACK_IMPORTED_MODULE_7__.Tuplet.LOCATION_BOTTOM); + const tuplet2 = new _src_tuplet__WEBPACK_IMPORTED_MODULE_7__.Tuplet(notes.slice(3, 6)).setTupletLocation(_src_tuplet__WEBPACK_IMPORTED_MODULE_7__.Tuplet.LOCATION_BOTTOM); + const tuplet3 = new _src_tuplet__WEBPACK_IMPORTED_MODULE_7__.Tuplet(notes.slice(6, 9)).setTupletLocation(_src_tuplet__WEBPACK_IMPORTED_MODULE_7__.Tuplet.LOCATION_BOTTOM); + const tuplet4 = new _src_tuplet__WEBPACK_IMPORTED_MODULE_7__.Tuplet(notes.slice(9, 12)).setTupletLocation(_src_tuplet__WEBPACK_IMPORTED_MODULE_7__.Tuplet.LOCATION_BOTTOM); + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(context, stave, notes); + tuplet1.setContext(context).draw(); + tuplet2.setContext(context).draw(); + tuplet3.setContext(context).draw(); + tuplet4.setContext(context).draw(); + beam1.setContext(context).draw(); + beam2.setContext(context).draw(); + beam3.setContext(context).draw(); + beam4.setContext(context).draw(); + ok(true, 'Auto Align Rests - Tuplets Stem Down Test'); +} +/** + * By default rests are centered vertically within the stave, except + * when they are inside a group of beamed notes (in which case they are + * centered vertically within that group). + */ +function singleVoiceDefaultAlignment(options, contextBuilder) { + const { context, stave } = setupContext(options, contextBuilder, 600, 160); + const notes = [ + note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }), + note({ keys: ['f/4'], stem_direction: -1, duration: '4' }), + note({ keys: ['e/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + note({ keys: ['a/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8' }), + note({ keys: ['e/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['a/5'], stem_direction: 1, duration: '4' }), + note({ keys: ['b/4'], stem_direction: 1, duration: '4r' }), + note({ keys: ['b/5'], stem_direction: 1, duration: '4' }), + note({ keys: ['d/5'], stem_direction: -1, duration: '4' }), + note({ keys: ['g/5'], stem_direction: -1, duration: '4' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }), + ]; + const beam = new _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam(notes.slice(5, 9)); + const tuplet = new _src_tuplet__WEBPACK_IMPORTED_MODULE_7__.Tuplet(notes.slice(9, 12)).setTupletLocation(_src_tuplet__WEBPACK_IMPORTED_MODULE_7__.Tuplet.LOCATION_TOP); + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(context, stave, notes); + tuplet.setContext(context).draw(); + beam.setContext(context).draw(); + ok(true, 'Auto Align Rests - Default Test'); +} +/** + * The only difference between staveRestsAll() and staveRests() is that this test case + * passes { align_rests: true } to Formatter.FormatAndDraw(...). + */ +function singleVoiceAlignAll(options, contextBuilder) { + const { context, stave } = setupContext(options, contextBuilder, 600, 160); + const notes = [ + note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }), + note({ keys: ['f/4'], stem_direction: -1, duration: '4' }), + note({ keys: ['e/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + note({ keys: ['a/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8' }), + note({ keys: ['e/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['a/5'], stem_direction: 1, duration: '4' }), + note({ keys: ['b/4'], stem_direction: 1, duration: '4r' }), + note({ keys: ['b/5'], stem_direction: 1, duration: '4' }), + note({ keys: ['d/5'], stem_direction: -1, duration: '4' }), + note({ keys: ['g/5'], stem_direction: -1, duration: '4' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }), + ]; + const beam = new _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam(notes.slice(5, 9)); + const tuplet = new _src_tuplet__WEBPACK_IMPORTED_MODULE_7__.Tuplet(notes.slice(9, 12)).setTupletLocation(_src_tuplet__WEBPACK_IMPORTED_MODULE_7__.Tuplet.LOCATION_TOP); + // Set { align_rests: true } to align rests (vertically) with nearby notes in each voice. + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(context, stave, notes, { align_rests: true }); + tuplet.setContext(context).draw(); + beam.setContext(context).draw(); + ok(true, 'Auto Align Rests - Align All Test'); +} +/** + * Multi Voice + * The top voice shows quarter-note chords alternating with quarter rests. + * The bottom voice shows two groups of beamed eighth notes, with eighth rests. + */ +function multiVoice(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 600, 200); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_5__.Stave(50, 10, 500).addClef('treble').setContext(ctx).addTimeSignature('4/4').draw(); + const noteOnStave = (noteStruct) => new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote(noteStruct).setStave(stave); + const notes1 = [ + noteOnStave({ keys: ['c/4', 'e/4', 'g/4'], duration: '4' }), + noteOnStave({ keys: ['b/4'], duration: '4r' }), + noteOnStave({ keys: ['c/4', 'd/4', 'a/4'], duration: '4' }), + noteOnStave({ keys: ['b/4'], duration: '4r' }), + ]; + const notes2 = [ + noteOnStave({ keys: ['e/3'], stem_direction: -1, duration: '8' }), + noteOnStave({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + noteOnStave({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + noteOnStave({ keys: ['e/3'], stem_direction: -1, duration: '8' }), + noteOnStave({ keys: ['e/3'], stem_direction: -1, duration: '8' }), + noteOnStave({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + noteOnStave({ keys: ['e/3'], stem_direction: -1, duration: '8' }), + noteOnStave({ keys: ['e/3'], stem_direction: -1, duration: '8' }), + ]; + const voice1 = new _src_voice__WEBPACK_IMPORTED_MODULE_8__.Voice(_src_flow__WEBPACK_IMPORTED_MODULE_3__.Flow.TIME4_4).addTickables(notes1); + const voice2 = new _src_voice__WEBPACK_IMPORTED_MODULE_8__.Voice(_src_flow__WEBPACK_IMPORTED_MODULE_3__.Flow.TIME4_4).addTickables(notes2); + // Set { align_rests: true } to align rests (vertically) with nearby notes in each voice. + new _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter().joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave, { align_rests: true }); + const beam2_1 = new _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam(notes2.slice(0, 4)); + const beam2_2 = new _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam(notes2.slice(4, 8)); + // Important Note: we need to draw voice2 first, since voice2 generates ledger lines. + // Otherwise, the ledger lines will be drawn on top of middle C notes in voice1. + voice2.draw(ctx); + voice1.draw(ctx); + beam2_1.setContext(ctx).draw(); + beam2_2.setContext(ctx).draw(); + ok(true, 'Strokes Test Multi Voice'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(RestsTests); + + + +/***/ }), + +/***/ "./tests/rhythm_tests.ts": +/*!*******************************!*\ + !*** ./tests/rhythm_tests.ts ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "RhythmTests": () => (/* binding */ RhythmTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_annotation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/annotation */ "./src/annotation.ts"); +/* harmony import */ var _src_beam__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/beam */ "./src/beam.ts"); +/* harmony import */ var _src_formatter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/formatter */ "./src/formatter.ts"); +/* harmony import */ var _src_stave__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/stave */ "./src/stave.ts"); +/* harmony import */ var _src_stavebarline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/stavebarline */ "./src/stavebarline.ts"); +/* harmony import */ var _src_stavenote__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../src/stavenote */ "./src/stavenote.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Rhythm Tests + + + + + + + +const RhythmTests = { + Start() { + QUnit.module('Rhythm'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + // TODO: Simplify test names by removing 'Rhythm Draw - '. + run('Rhythm Draw - slash notes', drawBasic); + run('Rhythm Draw - beamed slash notes', drawBeamedSlashNotes); + run('Rhythm Draw - beamed slash notes, some rests', drawSlashAndBeamAndRests); + run('Rhythm Draw - 16th note rhythm with scratches', drawSixtenthWithScratches); + run('Rhythm Draw - 32nd note rhythm with scratches', drawThirtySecondWithScratches); + }, +}; +// CURRENTLY UNUSED. Draws 7 different slash notes without beams. +/* +function drawSlash(options: TestOptions, contextBuilder: ContextBuilder): void { + const ctx = contextBuilder(options.elementId, 350, 180); + const stave = new Stave(10, 10, 350); + stave.setContext(ctx); + stave.draw(); + + const notes: StaveNoteStruct[] = [ + { keys: ['b/4'], duration: 'ws', stem_direction: -1 }, + { keys: ['b/4'], duration: 'hs', stem_direction: -1 }, + { keys: ['b/4'], duration: 'qs', stem_direction: -1 }, + { keys: ['b/4'], duration: '8s', stem_direction: -1 }, + { keys: ['b/4'], duration: '16s', stem_direction: -1 }, + { keys: ['b/4'], duration: '32s', stem_direction: -1 }, + { keys: ['b/4'], duration: '64s', stem_direction: -1 }, + ]; + expect(notes.length * 2); + + for (let i = 0; i < notes.length; ++i) { + const staveNote = new StaveNote(notes[i]).setStave(stave); + new TickContext() + .addTickable(staveNote) + .preFormat() + .setX((i + 1) * 25); + staveNote.setContext(ctx).draw(); + + ok(staveNote.getX() > 0, 'Note ' + i + ' has X value'); + ok(staveNote.getYs().length > 0, 'Note ' + i + ' has Y values'); + } +} +*/ +function drawBasic(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 800, 150); + // bar 1 + const staveBar1 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 30, 150); + staveBar1.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.DOUBLE); + staveBar1.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.SINGLE); + staveBar1.addClef('treble'); + staveBar1.addTimeSignature('4/4'); + staveBar1.addKeySignature('C'); + staveBar1.setContext(ctx).draw(); + const notesBar1 = [new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ keys: ['b/4'], duration: '1s', stem_direction: -1 })]; + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_3__.Formatter.FormatAndDraw(ctx, staveBar1, notesBar1); + // bar 2 - juxtaposing second bar next to first bar + const staveBar2 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(staveBar1.getWidth() + staveBar1.getX(), staveBar1.getY(), 120); + staveBar2.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.SINGLE); + staveBar2.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.SINGLE); + staveBar2.setContext(ctx).draw(); + // bar 2 + const notesBar2 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ keys: ['b/4'], duration: '2s', stem_direction: -1 }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ keys: ['b/4'], duration: '2s', stem_direction: -1 }), + ]; + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_3__.Formatter.FormatAndDraw(ctx, staveBar2, notesBar2); + // bar 3 - juxtaposing second bar next to first bar + const staveBar3 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(staveBar2.getWidth() + staveBar2.getX(), staveBar2.getY(), 170); + staveBar3.setContext(ctx).draw(); + // bar 3 + const notesBar3 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '4s', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '4s', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '4s', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '4s', + stem_direction: -1, + }), + ]; + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_3__.Formatter.FormatAndDraw(ctx, staveBar3, notesBar3); + // bar 4 - juxtaposing second bar next to first bar + const staveBar4 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(staveBar3.getWidth() + staveBar3.getX(), staveBar3.getY(), 200); + staveBar4.setContext(ctx).draw(); + // bar 4 + const notesBar4 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + ]; + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_3__.Formatter.FormatAndDraw(ctx, staveBar4, notesBar4); + expect(0); +} +function drawBeamedSlashNotes(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 800, 150); + // bar 1 + const staveBar1 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 30, 300); + staveBar1.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.DOUBLE); + staveBar1.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.SINGLE); + staveBar1.addClef('treble'); + staveBar1.addTimeSignature('4/4'); + staveBar1.addKeySignature('C'); + staveBar1.setContext(ctx).draw(); + // bar 4 + const notesBar1_part1 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + ]; + const notesBar1_part2 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + ]; + // create the beams for 8th notes in 2nd measure + const beam1 = new _src_beam__WEBPACK_IMPORTED_MODULE_2__.Beam(notesBar1_part1); + const beam2 = new _src_beam__WEBPACK_IMPORTED_MODULE_2__.Beam(notesBar1_part2); + const notesBar1 = notesBar1_part1.concat(notesBar1_part2); + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_3__.Formatter.FormatAndDraw(ctx, staveBar1, notesBar1); + // Render beams + beam1.setContext(ctx).draw(); + beam2.setContext(ctx).draw(); + expect(0); +} +function drawSlashAndBeamAndRests(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 800, 150); + // bar 1 + const staveBar1 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 30, 300); + staveBar1.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.DOUBLE); + staveBar1.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.SINGLE); + staveBar1.addClef('treble'); + staveBar1.addTimeSignature('4/4'); + staveBar1.addKeySignature('F'); + staveBar1.setContext(ctx).draw(); + // bar 1 + const notesBar1_part1 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ keys: ['b/4'], duration: '8s', stem_direction: -1 }), + ]; + notesBar1_part1[0].addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('C7').setFont('Times', _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.Font.size + 2), 0); + const notesBar1_part2 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '8r', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '8r', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '8r', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + ]; + // create the beams for 8th notes in 2nd measure + const beam1 = new _src_beam__WEBPACK_IMPORTED_MODULE_2__.Beam(notesBar1_part1); + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_3__.Formatter.FormatAndDraw(ctx, staveBar1, notesBar1_part1.concat(notesBar1_part2)); + // Render beams + beam1.setContext(ctx).draw(); + // bar 2 - juxtaposing second bar next to first bar + const staveBar2 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(staveBar1.getWidth() + staveBar1.getX(), staveBar1.getY(), 220); + staveBar2.setContext(ctx).draw(); + const notesBar2 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '1s', + stem_direction: -1, + }), + ]; + notesBar2[0].addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('F').setFont('Times', _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.Font.size + 2), 0); + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_3__.Formatter.FormatAndDraw(ctx, staveBar2, notesBar2); + expect(0); +} +function drawSixtenthWithScratches(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 800, 150); + // bar 1 + const staveBar1 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 30, 300); + staveBar1.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.DOUBLE); + staveBar1.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.SINGLE); + staveBar1.addClef('treble'); + staveBar1.addTimeSignature('4/4'); + staveBar1.addKeySignature('F'); + staveBar1.setContext(ctx).draw(); + // bar 1 + const notesBar1_part1 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '16s', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '16s', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '16m', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '16s', + stem_direction: -1, + }), + ]; + const notesBar1_part2 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '16m', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '16s', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '16r', + stem_direction: -1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '16s', + stem_direction: -1, + }), + ]; + notesBar1_part1[0].addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('C7').setFont('Times', _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.Font.size + 3), 0); + // create the beams for 8th notes in 2nd measure + const beam1 = new _src_beam__WEBPACK_IMPORTED_MODULE_2__.Beam(notesBar1_part1); + const beam2 = new _src_beam__WEBPACK_IMPORTED_MODULE_2__.Beam(notesBar1_part2); + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_3__.Formatter.FormatAndDraw(ctx, staveBar1, notesBar1_part1.concat(notesBar1_part2)); + // Render beams + beam1.setContext(ctx).draw(); + beam2.setContext(ctx).draw(); + expect(0); +} +function drawThirtySecondWithScratches(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 800, 150); + // bar 1 + const staveBar1 = new _src_stave__WEBPACK_IMPORTED_MODULE_4__.Stave(10, 30, 300); + staveBar1.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.DOUBLE); + staveBar1.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.SINGLE); + staveBar1.addClef('treble'); + staveBar1.addTimeSignature('4/4'); + staveBar1.addKeySignature('F'); + staveBar1.setContext(ctx).draw(); + // bar 1 + const notesBar1_part1 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '32s', + stem_direction: 1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '32s', + stem_direction: 1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '32m', + stem_direction: 1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '32s', + stem_direction: 1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '32m', + stem_direction: 1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '32s', + stem_direction: 1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '32r', + stem_direction: 1, + }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_6__.StaveNote({ + keys: ['b/4'], + duration: '32s', + stem_direction: 1, + }), + ]; + notesBar1_part1[0].addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('C7').setFont('Times', _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.Font.size + 3), 0); + // Create the beams for 8th notes in 2nd measure. + const beam1 = new _src_beam__WEBPACK_IMPORTED_MODULE_2__.Beam(notesBar1_part1); + // Helper function to justify and draw a 4/4 voice. + _src_formatter__WEBPACK_IMPORTED_MODULE_3__.Formatter.FormatAndDraw(ctx, staveBar1, notesBar1_part1); + // Render beams + beam1.setContext(ctx).draw(); + expect(0); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(RhythmTests); + + + +/***/ }), + +/***/ "./tests/stave_tests.ts": +/*!******************************!*\ + !*** ./tests/stave_tests.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveTests": () => (/* binding */ StaveTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_accidental__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/accidental */ "./src/accidental.ts"); +/* harmony import */ var _src_beam__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/beam */ "./src/beam.ts"); +/* harmony import */ var _src_clef__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/clef */ "./src/clef.ts"); +/* harmony import */ var _src_formatter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/formatter */ "./src/formatter.ts"); +/* harmony import */ var _src_keysignature__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/keysignature */ "./src/keysignature.ts"); +/* harmony import */ var _src_modifier__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../src/modifier */ "./src/modifier.ts"); +/* harmony import */ var _src_stave__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../src/stave */ "./src/stave.ts"); +/* harmony import */ var _src_stavebarline__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../src/stavebarline */ "./src/stavebarline.ts"); +/* harmony import */ var _src_stavenote__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../src/stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _src_staverepetition__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../src/staverepetition */ "./src/staverepetition.ts"); +/* harmony import */ var _src_stavevolta__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../src/stavevolta */ "./src/stavevolta.ts"); +/* harmony import */ var _src_textnote__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../src/textnote */ "./src/textnote.ts"); +/* harmony import */ var _src_timesignature__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../src/timesignature */ "./src/timesignature.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Basic Stave Tests +// TODO: Like Stave.setTempo(t: StaveTempoOptions, ...), Stave.setText(...) could declare an interface called StaveTextOptions. +// This helps developers because they can use the named type in their code for type checking. + + + + + + + + + + + + + + +const StaveTests = { + Start() { + QUnit.module('Stave'); + test('StaveModifiers SortByCategory', sortByCategory); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Stave Draw Test', draw); + run('Open Stave Draw Test', drawOpenStave); + run('Multiple Stave Barline Test', drawMultipleMeasures); + run('Multiple Stave Barline Test (14pt Section)', drawMultipleMeasures, { fontSize: 14 }); + run('Multiple Stave Repeats Test', drawRepeats); + run('Stave End Modifiers Test', drawEndModifiers); + run('Stave Repetition (CODA) Positioning', drawStaveRepetition, { yShift: 0 }); + run('Stave Repetition (CODA) Positioning (-20)', drawStaveRepetition, { yShift: -20 }); + run('Stave Repetition (CODA) Positioning (+10)', drawStaveRepetition, { yShift: +10 }); + run('Multiple Staves Volta Test', drawVolta); + run('Volta + Modifier Measure Test', drawVoltaModifier); + run('Tempo Test', drawTempo); + run('Single Line Configuration Test', configureSingleLine); + run('Batch Line Configuration Test', configureAllLines); + run('Stave Text Test', drawStaveText); + run('Multiple Line Stave Text Test', drawStaveTextMultiLine); + run('Factory API', factoryAPI); + }, +}; +function sortByCategory() { + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(0, 0, 300); + const clef0 = new _src_clef__WEBPACK_IMPORTED_MODULE_3__.Clef('treble'); + const clef1 = new _src_clef__WEBPACK_IMPORTED_MODULE_3__.Clef('alto'); + const clef2 = new _src_clef__WEBPACK_IMPORTED_MODULE_3__.Clef('bass'); + const time0 = new _src_timesignature__WEBPACK_IMPORTED_MODULE_13__.TimeSignature('C'); + const time1 = new _src_timesignature__WEBPACK_IMPORTED_MODULE_13__.TimeSignature('C|'); + const time2 = new _src_timesignature__WEBPACK_IMPORTED_MODULE_13__.TimeSignature('9/8'); + const key0 = new _src_keysignature__WEBPACK_IMPORTED_MODULE_5__.KeySignature('G'); + const key1 = new _src_keysignature__WEBPACK_IMPORTED_MODULE_5__.KeySignature('F'); + const key2 = new _src_keysignature__WEBPACK_IMPORTED_MODULE_5__.KeySignature('D'); + const bar0 = new _src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.Barline(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.SINGLE); + const bar1 = new _src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.Barline(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.DOUBLE); + const bar2 = new _src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.Barline(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.NONE); + // const order0 = { barlines: 0, clefs: 1, keysignatures: 2, timesignatures: 3 }; + // const order1 = { timesignatures: 0, keysignatures: 1, barlines: 2, clefs: 3 }; + const order0 = { Barline: 0, Clef: 1, KeySignature: 2, TimeSignature: 3 }; + const order1 = { TimeSignature: 0, KeySignature: 1, Barline: 2, Clef: 3 }; + const sortAndCompare = (title, a, b, order) => { + stave.sortByCategory(a, order); + // Verify that the two arrays are identical. + let isSame = true; + if (a.length !== b.length) + isSame = false; + for (let i = 0; i < a.length; ++i) { + if (a[i] !== b[i]) + isSame = false; + } + ok(isSame, title); + }; + sortAndCompare('Keep the original order 1', [bar0, bar1, clef0, clef1, key0, key1, time0, time1], [bar0, bar1, clef0, clef1, key0, key1, time0, time1], order0); + sortAndCompare('Keep the original order 2', [time0, time1, key0, key1, bar0, bar1, clef0, clef1], [time0, time1, key0, key1, bar0, bar1, clef0, clef1], order1); + sortAndCompare('Sort and keep 1', [bar0, bar1, clef0, clef1, key0, key1, time0, time1], [time0, time1, key0, key1, bar0, bar1, clef0, clef1], order1); + sortAndCompare('Sort and keep 2', [bar0, clef0, key0, time0, key1, time1, clef1, bar1, time2, clef2, bar2, key2], [bar0, bar1, bar2, clef0, clef1, clef2, key0, key1, key2, time0, time1, time2], order0); + sortAndCompare('Sort and keep 3', [bar2, clef2, key2, time0, key0, time2, clef1, bar1, time1, clef0, bar0, key1], [time0, time2, time1, key2, key0, key1, bar2, bar1, bar0, clef2, clef1, clef0], order1); +} +function draw(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 150); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(10, 10, 300); + stave.setContext(ctx); + stave.draw(); + equal(stave.getYForNote(0), 100, 'getYForNote(0)'); + equal(stave.getYForLine(5), 100, 'getYForLine(5)'); + equal(stave.getYForLine(0), 50, 'getYForLine(0) - Top Line'); + equal(stave.getYForLine(4), 90, 'getYForLine(4) - Bottom Line'); + ok(true, 'all pass'); +} +function drawOpenStave(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 350); + let stave = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(10, 10, 300, { left_bar: false }); + stave.setContext(ctx); + stave.draw(); + stave = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(10, 150, 300, { right_bar: false }); + stave.setContext(ctx); + stave.draw(); + ok(true, 'all pass'); +} +function drawMultipleMeasures(options, contextBuilder) { + var _a, _b; + expect(0); + // Get the rendering context + const ctx = contextBuilder(options.elementId, 550, 200); + // bar 1 + const staveBar1 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(10, 50, 200); + staveBar1.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.REPEAT_BEGIN); + staveBar1.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.DOUBLE); + staveBar1.setSection('A', 0, 0, (_a = options.params) === null || _a === void 0 ? void 0 : _a.fontSize, false); + staveBar1.addClef('treble').setContext(ctx).draw(); + const notesBar1 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['d/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['b/4'], duration: 'qr' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: 'q' }), + ]; + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, staveBar1, notesBar1); + // bar 2 - juxtaposing second bar next to first bar + const staveBar2 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(staveBar1.getWidth() + staveBar1.getX(), staveBar1.getY(), 300); + staveBar2.setSection('B', 0, 0, (_b = options.params) === null || _b === void 0 ? void 0 : _b.fontSize); + staveBar2.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.END); + staveBar2.setContext(ctx).draw(); + const notesBar2_part1 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['d/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['g/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['e/4'], duration: '8' }), + ]; + const notesBar2_part2 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['d/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['g/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['e/4'], duration: '8' }), + ]; + // create the beams for 8th notes in 2nd measure + const beam1 = new _src_beam__WEBPACK_IMPORTED_MODULE_2__.Beam(notesBar2_part1); + const beam2 = new _src_beam__WEBPACK_IMPORTED_MODULE_2__.Beam(notesBar2_part2); + const notesBar2 = notesBar2_part1.concat(notesBar2_part2); + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, staveBar2, notesBar2); + // Render beams + beam1.setContext(ctx).draw(); + beam2.setContext(ctx).draw(); +} +function drawRepeats(options, contextBuilder) { + expect(0); + // Get the rendering context + const ctx = contextBuilder(options.elementId, 750, 120); + // bar 1 + const staveBar1 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(10, 0, 250); + staveBar1.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.REPEAT_BEGIN); + staveBar1.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.REPEAT_END); + staveBar1.addClef('treble'); + staveBar1.addKeySignature('A'); + staveBar1.setContext(ctx).draw(); + const notesBar1 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['d/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['b/4'], duration: 'qr' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: 'q' }), + ]; + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, staveBar1, notesBar1); + // bar 2 - juxtaposing second bar next to first bar + const staveBar2 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(staveBar1.getWidth() + staveBar1.getX(), staveBar1.getY(), 250); + staveBar2.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.REPEAT_BEGIN); + staveBar2.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.REPEAT_END); + staveBar2.setContext(ctx).draw(); + const notesBar2_part1 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['d/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['g/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['e/4'], duration: '8' }), + ]; + const notesBar2_part2 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['d/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['g/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['e/4'], duration: '8' }), + ]; + notesBar2_part2[0].addModifier(new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('#'), 0); + notesBar2_part2[1].addModifier(new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('#'), 0); + notesBar2_part2[3].addModifier(new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('b'), 0); + // create the beams for 8th notes in 2nd measure + const beam1 = new _src_beam__WEBPACK_IMPORTED_MODULE_2__.Beam(notesBar2_part1); + const beam2 = new _src_beam__WEBPACK_IMPORTED_MODULE_2__.Beam(notesBar2_part2); + const notesBar2 = notesBar2_part1.concat(notesBar2_part2); + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, staveBar2, notesBar2); + // Render beams + beam1.setContext(ctx).draw(); + beam2.setContext(ctx).draw(); + // bar 3 - juxtaposing third bar next to second bar + const staveBar3 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(staveBar2.getWidth() + staveBar2.getX(), staveBar2.getY(), 50); + staveBar3.setContext(ctx).draw(); + const notesBar3 = [new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['d/5'], duration: 'wr' })]; + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, staveBar3, notesBar3); + // bar 4 - juxtaposing third bar next to third bar + const staveBar4 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(staveBar3.getWidth() + staveBar3.getX(), staveBar3.getY(), 250 - staveBar1.getModifierXShift()); + staveBar4.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.REPEAT_BEGIN); + staveBar4.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.REPEAT_END); + staveBar4.setContext(ctx).draw(); + const notesBar4 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['d/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['b/4'], duration: 'qr' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: 'q' }), + ]; + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, staveBar4, notesBar4); +} +function drawEndModifiers(options, contextBuilder) { + expect(0); + const staveWidth = 230; + const blockHeight = 80; + let x = 10; + let y = 0; + const ctx = contextBuilder(options.elementId, 800, 700); + function drawStavesInTwoLines(endBarLine) { + // Draw a stave with one measure. Change the ending modifiers. + // eslint-disable-next-line + function drawStave(x, y, width, begMods, endMods) { + const staveBar = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(x, y, width - 10); + if (begMods) { + if (begMods.barLine !== undefined) { + staveBar.setBegBarType(begMods.barLine); + } + if (begMods.clef !== undefined) { + staveBar.addClef(begMods.clef); + } + if (begMods.keySig !== undefined) { + staveBar.addKeySignature(begMods.keySig); + } + if (begMods.timeSig !== undefined) { + staveBar.setTimeSignature(begMods.timeSig); + } + } + if (endMods) { + if (endMods.barLine !== undefined) { + staveBar.setEndBarType(endMods.barLine); + } + if (endMods.clef !== undefined) { + staveBar.addEndClef(endMods.clef); + } + if (endMods.keySig !== undefined) { + staveBar.setEndKeySignature(endMods.keySig); + } + if (endMods.timeSig !== undefined) { + staveBar.setEndTimeSignature(endMods.timeSig); + } + } + staveBar.setContext(ctx).draw(); + const notesBar = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['d/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['b/4'], duration: 'qr' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: 'q' }), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, staveBar, notesBar); + } + drawStave(x, y, staveWidth + 50, { barLine: _src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.REPEAT_BEGIN, clef: 'treble', keySig: 'A' }, { barLine: endBarLine, clef: 'bass' }); + x += staveWidth + 50; + drawStave(x, y, staveWidth, { barLine: _src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.REPEAT_BEGIN }, { barLine: endBarLine, keySig: 'E' }); + x += staveWidth; + drawStave(x, y, staveWidth, { barLine: _src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.REPEAT_BEGIN }, { barLine: endBarLine, timeSig: '2/4' }); + x += staveWidth; + x = 10; + y += blockHeight; + drawStave(x, y, staveWidth, { barLine: _src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.REPEAT_BEGIN }, { barLine: endBarLine, clef: 'bass', timeSig: '2/4' }); + x += staveWidth; + drawStave(x, y, staveWidth, { barLine: _src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.REPEAT_BEGIN }, { barLine: endBarLine, clef: 'treble', keySig: 'Ab' }); + x += staveWidth; + drawStave(x, y, staveWidth, { barLine: _src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.REPEAT_BEGIN }, { barLine: endBarLine, clef: 'bass', keySig: 'Ab', timeSig: '2/4' }); + x += staveWidth; + } + y = 0; + x = 10; + // First pair of staves. + drawStavesInTwoLines(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.SINGLE); + y += blockHeight + 10; + x = 10; + // Second pair of staves, with double barlines. + drawStavesInTwoLines(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.DOUBLE); + y += blockHeight + 10; + x = 10; + // Third pair of staves, with "two dot" repeat barlines. + drawStavesInTwoLines(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.REPEAT_END); + y += blockHeight + 10; + x = 10; + // Fourth pair of staves, with "two dots" on each side of the barlines. + drawStavesInTwoLines(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.REPEAT_BOTH); +} +function drawStaveRepetition(options, contextBuilder) { + expect(0); + // Get the rendering context + const ctx = contextBuilder(options.elementId, 725, 200); + // bar 1 + const mm1 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(10, 50, 150); + mm1.addClef('treble'); + mm1.setRepetitionType(_src_staverepetition__WEBPACK_IMPORTED_MODULE_10__.Repetition.type.DS_AL_FINE, options.params.yShift); + mm1.setMeasure(1); + mm1.setContext(ctx).draw(); + const notesmm1 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['a/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['f/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['f/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['a/4'], duration: 'q' }), + ]; + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, mm1, notesmm1); + // bar 2 - juxtapose second measure + const mm2 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(mm1.getWidth() + mm1.getX(), mm1.getY(), 150); + mm2.setRepetitionType(_src_staverepetition__WEBPACK_IMPORTED_MODULE_10__.Repetition.type.TO_CODA, options.params.yShift); + mm2.setMeasure(2); + mm2.setContext(ctx).draw(); + const notesmm2 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['a/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['f/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['f/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['a/4'], duration: 'q' }), + ]; + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, mm2, notesmm2); + // bar 3 - juxtapose third measure + const mm3 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(mm2.getWidth() + mm2.getX(), mm1.getY(), 150); + mm3.setRepetitionType(_src_staverepetition__WEBPACK_IMPORTED_MODULE_10__.Repetition.type.DS_AL_CODA, options.params.yShift); + mm3.setMeasure(3); + mm3.setContext(ctx).draw(); + const notesmm3 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['a/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['f/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['f/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['a/4'], duration: 'q' }), + ]; + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, mm3, notesmm3); + // bar 4 - juxtapose fourth measure + const mm4 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(mm3.getWidth() + mm3.getX(), mm1.getY(), 150); + mm4.setRepetitionType(_src_staverepetition__WEBPACK_IMPORTED_MODULE_10__.Repetition.type.CODA_LEFT, options.params.yShift); + mm4.setMeasure(4); + mm4.setContext(ctx).draw(); + const notesmm4 = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['a/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['f/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['f/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['a/4'], duration: 'q' }), + ]; + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, mm4, notesmm4); +} +function drawVolta(options, contextBuilder) { + expect(0); + // Get the rendering context + const ctx = contextBuilder(options.elementId, 725, 200); + // bar 1 + const mm1 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(10, 50, 125); + mm1.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.REPEAT_BEGIN); + mm1.setRepetitionType(_src_staverepetition__WEBPACK_IMPORTED_MODULE_10__.Repetition.type.SEGNO_LEFT); + mm1.addClef('treble'); + mm1.addKeySignature('A'); + mm1.setMeasure(1); + mm1.setSection('A', 0); + mm1.setContext(ctx).draw(); + const notesmm1 = [new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4'], duration: 'w' })]; + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, mm1, notesmm1); + // bar 2 - juxtapose second measure + const mm2 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(mm1.getWidth() + mm1.getX(), mm1.getY(), 60); + mm2.setRepetitionType(_src_staverepetition__WEBPACK_IMPORTED_MODULE_10__.Repetition.type.CODA_RIGHT); + mm2.setMeasure(2); + mm2.setContext(ctx).draw(); + const notesmm2 = [new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['d/4'], duration: 'w' })]; + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, mm2, notesmm2); + // bar 3 - juxtapose third measure + const mm3 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(mm2.getWidth() + mm2.getX(), mm1.getY(), 60); + mm3.setVoltaType(_src_stavevolta__WEBPACK_IMPORTED_MODULE_11__.VoltaType.BEGIN, '1.', -5); + mm3.setMeasure(3); + mm3.setContext(ctx).draw(); + const notesmm3 = [new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['e/4'], duration: 'w' })]; + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, mm3, notesmm3); + // bar 4 - juxtapose fourth measure + const mm4 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(mm3.getWidth() + mm3.getX(), mm1.getY(), 60); + mm4.setVoltaType(_src_stavevolta__WEBPACK_IMPORTED_MODULE_11__.VoltaType.MID, '', -5); + mm4.setMeasure(4); + mm4.setContext(ctx).draw(); + const notesmm4 = [new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['f/4'], duration: 'w' })]; + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, mm4, notesmm4); + // bar 5 - juxtapose fifth measure + const mm5 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(mm4.getWidth() + mm4.getX(), mm1.getY(), 60); + mm5.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.REPEAT_END); + mm5.setVoltaType(_src_stavevolta__WEBPACK_IMPORTED_MODULE_11__.VoltaType.END, '', -5); + mm5.setMeasure(5); + mm5.setContext(ctx).draw(); + const notesmm5 = [new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['g/4'], duration: 'w' })]; + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, mm5, notesmm5); + // bar 6 - juxtapose sixth measure + const mm6 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(mm5.getWidth() + mm5.getX(), mm1.getY(), 60); + mm6.setVoltaType(_src_stavevolta__WEBPACK_IMPORTED_MODULE_11__.VoltaType.BEGIN_END, '2.', -5); + mm6.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.DOUBLE); + mm6.setMeasure(6); + mm6.setContext(ctx).draw(); + const notesmm6 = [new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['a/4'], duration: 'w' })]; + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, mm6, notesmm6); + // bar 7 - juxtapose seventh measure + const mm7 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(mm6.getWidth() + mm6.getX(), mm1.getY(), 60); + mm7.setMeasure(7); + mm7.setSection('B', 0); + mm7.setContext(ctx).draw(); + const notesmm7 = [new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['b/4'], duration: 'w' })]; + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, mm7, notesmm7); + // bar 8 - juxtapose eighth measure + const mm8 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(mm7.getWidth() + mm7.getX(), mm1.getY(), 60); + mm8.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.DOUBLE); + mm8.setRepetitionType(_src_staverepetition__WEBPACK_IMPORTED_MODULE_10__.Repetition.type.DS_AL_CODA); + mm8.setMeasure(8); + mm8.setContext(ctx).draw(); + const notesmm8 = [new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/5'], duration: 'w' })]; + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, mm8, notesmm8); + // bar 9 - juxtapose ninth measure + const mm9 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(mm8.getWidth() + mm8.getX() + 20, mm1.getY(), 125); + mm9.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.END); + mm9.setRepetitionType(_src_staverepetition__WEBPACK_IMPORTED_MODULE_10__.Repetition.type.CODA_LEFT); + mm9.addClef('treble'); + mm9.addKeySignature('A'); + mm9.setMeasure(9); + mm9.setContext(ctx).draw(); + const notesmm9 = [new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['d/5'], duration: 'w' })]; + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, mm9, notesmm9); +} +function drawVoltaModifier(options, contextBuilder) { + expect(0); + // Get the rendering context + const ctx = contextBuilder(options.elementId, 1100, 200); + // bar 1: volta begin, with modifiers (clef, keysignature) + const mm1 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(10, 50, 175); + mm1.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.REPEAT_BEGIN); + mm1.setVoltaType(_src_stavevolta__WEBPACK_IMPORTED_MODULE_11__.VoltaType.BEGIN_END, '1.', -5); + mm1.addClef('treble'); + mm1.addKeySignature('A'); + mm1.setMeasure(1); + mm1.setSection('A', 0); + mm1.setContext(ctx).draw(); + const notesmm1 = [new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4'], duration: 'w' })]; + // Helper function to justify and draw a 4/4 voice + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, mm1, notesmm1); + // bar 2: volta begin_mid, with modifiers (clef, keysignature) + const mm2 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(mm1.getX() + mm1.getWidth(), mm1.getY(), 175); + mm2.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.REPEAT_BEGIN); + mm2.setRepetitionType(_src_staverepetition__WEBPACK_IMPORTED_MODULE_10__.Repetition.type.DS); + mm2.setVoltaType(_src_stavevolta__WEBPACK_IMPORTED_MODULE_11__.VoltaType.BEGIN, '2.', -5); + mm2.addClef('treble'); + mm2.addKeySignature('A'); + mm2.setMeasure(2); + mm2.setContext(ctx).draw(); + const notesmm2 = [new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4'], duration: 'w' })]; + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, mm2, notesmm2); + // bar 3: volta mid, with modifiers (clef, keysignature) + const mm3 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(mm2.getX() + mm2.getWidth(), mm2.getY(), 175); + mm3.setVoltaType(_src_stavevolta__WEBPACK_IMPORTED_MODULE_11__.VoltaType.MID, '', -5); + mm3.setRepetitionType(_src_staverepetition__WEBPACK_IMPORTED_MODULE_10__.Repetition.type.DS); + mm3.addClef('treble'); + mm3.addKeySignature('B'); + mm3.setMeasure(3); + mm3.setSection('B', 0); + mm3.setContext(ctx).draw(); + const notesmm3 = [new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4'], duration: 'w' })]; + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, mm3, notesmm3); + // bar 4: volta end, with modifiers (clef, keysignature) + const mm4 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(mm3.getX() + mm3.getWidth(), mm3.getY(), 175); + mm4.setVoltaType(_src_stavevolta__WEBPACK_IMPORTED_MODULE_11__.VoltaType.END, '1.', -5); + mm4.setRepetitionType(_src_staverepetition__WEBPACK_IMPORTED_MODULE_10__.Repetition.type.DS); + mm4.addClef('treble'); + mm4.addKeySignature('A'); + mm4.setMeasure(4); + mm4.setSection('C', 0); + mm4.setContext(ctx).draw(); + const notesmm4 = [new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4'], duration: 'w' })]; + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, mm4, notesmm4); + // bar 5: d.s. shift (similar potential x-shift concern) + const mm5 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(mm4.getX() + mm4.getWidth(), mm4.getY(), 175); + // mm5.addModifier(new Repetition(Repetition.type.DS, mm4.getX() + mm4.getWidth(), 50), StaveModifierPosition.RIGHT); + mm5.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_8__.BarlineType.DOUBLE); + mm5.setRepetitionType(_src_staverepetition__WEBPACK_IMPORTED_MODULE_10__.Repetition.type.DS); + mm5.addClef('treble'); + mm5.addKeySignature('A'); + mm5.setMeasure(5); + mm5.setSection('D', 0); + mm5.setContext(ctx).draw(); + const notesmm5 = [new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4'], duration: 'w' })]; + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, mm5, notesmm5); + // bar 6: d.s. without modifiers + const mm6 = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(mm5.getX() + mm5.getWidth(), mm5.getY(), 175); + // mm5.addModifier(new Repetition(Repetition.type.DS, mm4.getX() + mm4.getWidth(), 50), StaveModifierPosition.RIGHT); + mm6.setRepetitionType(_src_staverepetition__WEBPACK_IMPORTED_MODULE_10__.Repetition.type.DS); + mm6.setMeasure(6); + mm6.setSection('E', 0); + mm6.setContext(ctx).draw(); + const notesmm6 = [new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4'], duration: 'w' })]; + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, mm6, notesmm6); +} +function drawTempo(options, contextBuilder) { + expect(0); + const ctx = contextBuilder(options.elementId, 725, 350); + const padding = 10; + let x = 0; + let y = 50; + function drawTempoStaveBar(width, tempo, tempo_y, notes) { + const staveBar = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(padding + x, y, width); + if (x === 0) + staveBar.addClef('treble'); + staveBar.setTempo(tempo, tempo_y); + staveBar.setContext(ctx).draw(); + const notesBar = notes || [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['d/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['b/4'], duration: 'q' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4'], duration: 'q' }), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, staveBar, notesBar); + x += width; + } + drawTempoStaveBar(120, { duration: 'q', dots: 1, bpm: 80 }, 0); + drawTempoStaveBar(100, { duration: '8', dots: 2, bpm: 90 }, 0); + drawTempoStaveBar(100, { duration: '16', dots: 1, bpm: 96 }, 0); + drawTempoStaveBar(100, { duration: '32', bpm: 70 }, 0); + drawTempoStaveBar(250, { name: 'Andante', bpm: 120 }, -20, [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['d/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['g/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['e/5'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['d/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['g/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['e/4'], duration: '8' }), + ]); + x = 0; + y += 150; + drawTempoStaveBar(120, { duration: 'w', bpm: 80 }, 0); + drawTempoStaveBar(100, { duration: 'h', bpm: 90 }, 0); + drawTempoStaveBar(100, { duration: 'q', bpm: 96 }, 0); + drawTempoStaveBar(100, { duration: '8', bpm: 70 }, 0); + drawTempoStaveBar(250, { name: 'Andante grazioso' }, 0, [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['d/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['g/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['e/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['c/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['d/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['g/4'], duration: '8' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_9__.StaveNote({ keys: ['e/4'], duration: '8' }), + ]); +} +function configureSingleLine(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 120); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(10, 10, 300); + stave + .setConfigForLine(0, { visible: true }) + .setConfigForLine(1, { visible: false }) + .setConfigForLine(2, { visible: true }) + .setConfigForLine(3, { visible: false }) + .setConfigForLine(4, { visible: true }); + stave.setContext(ctx).draw(); + const config = stave.getConfigForLines(); + equal(config[0].visible, true, 'getLinesConfiguration() - Line 0'); + equal(config[1].visible, false, 'getLinesConfiguration() - Line 1'); + equal(config[2].visible, true, 'getLinesConfiguration() - Line 2'); + equal(config[3].visible, false, 'getLinesConfiguration() - Line 3'); + equal(config[4].visible, true, 'getLinesConfiguration() - Line 4'); + ok(true, 'all pass'); +} +function configureAllLines(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 120); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(10, 10, 300); + stave + .setConfigForLines([{ visible: false }, {}, { visible: false }, { visible: true }, { visible: false }]) + .setContext(ctx) + .draw(); + const config = stave.getConfigForLines(); + equal(config[0].visible, false, 'getLinesConfiguration() - Line 0'); + equal(config[1].visible, true, 'getLinesConfiguration() - Line 1'); + equal(config[2].visible, false, 'getLinesConfiguration() - Line 2'); + equal(config[3].visible, true, 'getLinesConfiguration() - Line 3'); + equal(config[4].visible, false, 'getLinesConfiguration() - Line 4'); + ok(true, 'all pass'); +} +function drawStaveText(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 900, 140); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(300, 10, 300); + stave.setText('Violin', _src_modifier__WEBPACK_IMPORTED_MODULE_6__.Modifier.Position.LEFT); + stave.setText('Right Text', _src_modifier__WEBPACK_IMPORTED_MODULE_6__.Modifier.Position.RIGHT); + stave.setText('Above Text', _src_modifier__WEBPACK_IMPORTED_MODULE_6__.Modifier.Position.ABOVE); + stave.setText('Below Text', _src_modifier__WEBPACK_IMPORTED_MODULE_6__.Modifier.Position.BELOW); + stave.setContext(ctx).draw(); + ok(true, 'all pass'); +} +function drawStaveTextMultiLine(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 900, 200); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_7__.Stave(300, 40, 300); + stave.setText('Violin', _src_modifier__WEBPACK_IMPORTED_MODULE_6__.Modifier.Position.LEFT, { shift_y: -10 }); + stave.setText('2nd line', _src_modifier__WEBPACK_IMPORTED_MODULE_6__.Modifier.Position.LEFT, { shift_y: 10 }); + stave.setText('Right Text', _src_modifier__WEBPACK_IMPORTED_MODULE_6__.Modifier.Position.RIGHT, { shift_y: -10 }); + stave.setText('2nd line', _src_modifier__WEBPACK_IMPORTED_MODULE_6__.Modifier.Position.RIGHT, { shift_y: 10 }); + stave.setText('Above Text', _src_modifier__WEBPACK_IMPORTED_MODULE_6__.Modifier.Position.ABOVE, { shift_y: -10 }); + stave.setText('2nd line', _src_modifier__WEBPACK_IMPORTED_MODULE_6__.Modifier.Position.ABOVE, { shift_y: 10 }); + stave.setText('Left Below Text', _src_modifier__WEBPACK_IMPORTED_MODULE_6__.Modifier.Position.BELOW, { shift_y: -10, justification: _src_textnote__WEBPACK_IMPORTED_MODULE_12__.TextJustification.LEFT }); + stave.setText('Right Below Text', _src_modifier__WEBPACK_IMPORTED_MODULE_6__.Modifier.Position.BELOW, { shift_y: 10, justification: _src_textnote__WEBPACK_IMPORTED_MODULE_12__.TextJustification.RIGHT }); + stave.setContext(ctx).draw(); + ok(true, 'all pass'); +} +function factoryAPI(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 900, 200); + const stave = f.Stave({ x: 300, y: 40, width: 300 }); + stave.setText('Violin', _src_modifier__WEBPACK_IMPORTED_MODULE_6__.Modifier.Position.LEFT, { shift_y: -10 }); + stave.setText('2nd line', _src_modifier__WEBPACK_IMPORTED_MODULE_6__.Modifier.Position.LEFT, { shift_y: 10 }); + f.draw(); + ok(true, 'all pass'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(StaveTests); + + + +/***/ }), + +/***/ "./tests/staveconnector_tests.ts": +/*!***************************************!*\ + !*** ./tests/staveconnector_tests.ts ***! + \***************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveConnectorTests": () => (/* binding */ StaveConnectorTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_flow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/flow */ "./src/flow.ts"); +/* harmony import */ var _src_modifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/modifier */ "./src/modifier.ts"); +/* harmony import */ var _src_stave__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/stave */ "./src/stave.ts"); +/* harmony import */ var _src_stavebarline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/stavebarline */ "./src/stavebarline.ts"); +/* harmony import */ var _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/staveconnector */ "./src/staveconnector.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// StaveConnector Tests +// TODO: Should we change StaveConnector.type => StaveConnectorType? We are inconsistent with this. + + + + + + +const StaveConnectorTests = { + Start() { + QUnit.module('StaveConnector'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Single Draw Test', drawSingle); + run('Single Draw Test, 4px Stave Line Thickness', drawSingle4pxStaveLines); + run('Single Both Sides Test', drawSingleBoth); + run('Double Draw Test', drawDouble); + run('Bold Double Line Left Draw Test', drawRepeatBegin); + run('Bold Double Line Right Draw Test', drawRepeatEnd); + run('Thin Double Line Right Draw Test', drawThinDouble); + run('Bold Double Lines Overlapping Draw Test', drawRepeatAdjacent); + run('Bold Double Lines Offset Draw Test', drawRepeatOffset); + run('Bold Double Lines Offset Draw Test 2', drawRepeatOffset2); + run('Brace Draw Test', drawBrace); + run('Brace Wide Draw Test', drawBraceWide); + run('Bracket Draw Test', drawBracket); + run('Combined Draw Test', drawCombined); + }, +}; +function drawSingle(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, 10, 300); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, 120, 300); + stave1.setContext(ctx); + stave2.setContext(ctx); + const connector = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave1, stave2); + connector.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.SINGLE); + connector.setContext(ctx); + stave1.draw(); + stave2.draw(); + connector.draw(); + ok(true, 'all pass'); +} +function drawSingle4pxStaveLines(options, contextBuilder) { + const oldThickness = _src_flow__WEBPACK_IMPORTED_MODULE_1__.Flow.STAVE_LINE_THICKNESS; + _src_flow__WEBPACK_IMPORTED_MODULE_1__.Flow.STAVE_LINE_THICKNESS = 4; + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, 10, 300); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, 120, 300); + stave1.setContext(ctx); + stave2.setContext(ctx); + const connector = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave1, stave2); + connector.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.SINGLE); + connector.setContext(ctx); + stave1.draw(); + stave2.draw(); + connector.draw(); + _src_flow__WEBPACK_IMPORTED_MODULE_1__.Flow.STAVE_LINE_THICKNESS = oldThickness; + ok(true, 'all pass'); +} +function drawSingleBoth(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, 10, 300); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, 120, 300); + stave1.setContext(ctx); + stave2.setContext(ctx); + const connector1 = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave1, stave2); + connector1.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.SINGLE_LEFT); + connector1.setContext(ctx); + const connector2 = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave1, stave2); + connector2.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.SINGLE_RIGHT); + connector2.setContext(ctx); + stave1.draw(); + stave2.draw(); + connector1.draw(); + connector2.draw(); + ok(true, 'all pass'); +} +function drawDouble(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, 10, 300); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, 120, 300); + stave1.setContext(ctx); + stave2.setContext(ctx); + const connector = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave1, stave2); + const line = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave1, stave2); + connector.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.DOUBLE); + connector.setContext(ctx); + line.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.SINGLE); + connector.setContext(ctx); + line.setContext(ctx); + stave1.draw(); + stave2.draw(); + connector.draw(); + line.draw(); + ok(true, 'all pass'); +} +function drawBrace(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 450, 300); + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(100, 10, 300); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(100, 120, 300); + stave1.setContext(ctx); + stave2.setContext(ctx); + const connector = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave1, stave2); + const line = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave1, stave2); + connector.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.BRACE); + connector.setContext(ctx); + connector.setText('Piano'); + line.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.SINGLE); + connector.setContext(ctx); + line.setContext(ctx); + stave1.draw(); + stave2.draw(); + connector.draw(); + line.draw(); + ok(true, 'all pass'); +} +function drawBraceWide(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, -20, 300); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, 200, 300); + stave1.setContext(ctx); + stave2.setContext(ctx); + const connector = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave1, stave2); + const line = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave1, stave2); + connector.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.BRACE); + connector.setContext(ctx); + line.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.SINGLE); + connector.setContext(ctx); + line.setContext(ctx); + stave1.draw(); + stave2.draw(); + connector.draw(); + line.draw(); + ok(true, 'all pass'); +} +function drawBracket(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, 10, 300); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, 120, 300); + stave1.setContext(ctx); + stave2.setContext(ctx); + const connector = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave1, stave2); + const line = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave1, stave2); + connector.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.BRACKET); + connector.setContext(ctx); + line.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.SINGLE); + connector.setContext(ctx); + line.setContext(ctx); + stave1.draw(); + stave2.draw(); + connector.draw(); + line.draw(); + ok(true, 'all pass'); +} +function drawRepeatBegin(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, 10, 300); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, 120, 300); + stave1.setContext(ctx); + stave2.setContext(ctx); + stave1.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.REPEAT_BEGIN); + stave2.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.REPEAT_BEGIN); + const line = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave1, stave2); + line.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.BOLD_DOUBLE_LEFT); + line.setContext(ctx); + stave1.draw(); + stave2.draw(); + line.draw(); + ok(true, 'all pass'); +} +function drawRepeatEnd(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, 10, 300); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, 120, 300); + stave1.setContext(ctx); + stave2.setContext(ctx); + stave1.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.REPEAT_END); + stave2.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.REPEAT_END); + const line = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave1, stave2); + line.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.BOLD_DOUBLE_RIGHT); + line.setContext(ctx); + stave1.draw(); + stave2.draw(); + line.draw(); + ok(true, 'all pass'); +} +function drawThinDouble(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, 10, 300); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, 120, 300); + stave1.setContext(ctx); + stave2.setContext(ctx); + stave1.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.DOUBLE); + stave2.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.DOUBLE); + const line = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave1, stave2); + line.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.THIN_DOUBLE); + line.setContext(ctx); + stave1.draw(); + stave2.draw(); + line.draw(); + ok(true, 'all pass'); +} +function drawRepeatAdjacent(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, 10, 150); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, 120, 150); + const stave3 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(175, 10, 150); + const stave4 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(175, 120, 150); + stave1.setContext(ctx); + stave2.setContext(ctx); + stave3.setContext(ctx); + stave4.setContext(ctx); + stave1.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.REPEAT_END); + stave2.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.REPEAT_END); + stave3.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.END); + stave4.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.END); + stave1.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.REPEAT_BEGIN); + stave2.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.REPEAT_BEGIN); + stave3.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.REPEAT_BEGIN); + stave4.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.REPEAT_BEGIN); + const connector1 = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave1, stave2); + const connector2 = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave1, stave2); + const connector3 = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave3, stave4); + const connector4 = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave3, stave4); + connector1.setContext(ctx); + connector2.setContext(ctx); + connector3.setContext(ctx); + connector4.setContext(ctx); + connector1.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.BOLD_DOUBLE_LEFT); + connector2.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.BOLD_DOUBLE_RIGHT); + connector3.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.BOLD_DOUBLE_LEFT); + connector4.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.BOLD_DOUBLE_RIGHT); + stave1.draw(); + stave2.draw(); + stave3.draw(); + stave4.draw(); + connector1.draw(); + connector2.draw(); + connector3.draw(); + connector4.draw(); + ok(true, 'all pass'); +} +function drawRepeatOffset2(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, 10, 150); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, 120, 150); + const stave3 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(175, 10, 150); + const stave4 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(175, 120, 150); + stave1.setContext(ctx); + stave2.setContext(ctx); + stave3.setContext(ctx); + stave4.setContext(ctx); + stave1.addClef('treble'); + stave2.addClef('bass'); + stave3.addClef('alto'); + stave4.addClef('treble'); + stave1.addTimeSignature('4/4'); + stave2.addTimeSignature('4/4'); + stave3.addTimeSignature('6/8'); + stave4.addTimeSignature('6/8'); + stave1.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.REPEAT_END); + stave2.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.REPEAT_END); + stave3.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.END); + stave4.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.END); + stave1.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.REPEAT_BEGIN); + stave2.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.REPEAT_BEGIN); + stave3.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.REPEAT_BEGIN); + stave4.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.REPEAT_BEGIN); + const connector1 = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave1, stave2); + const connector2 = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave1, stave2); + const connector3 = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave3, stave4); + const connector4 = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave3, stave4); + const connector5 = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave3, stave4); + connector1.setContext(ctx); + connector2.setContext(ctx); + connector3.setContext(ctx); + connector4.setContext(ctx); + connector5.setContext(ctx); + connector1.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.BOLD_DOUBLE_LEFT); + connector2.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.BOLD_DOUBLE_RIGHT); + connector3.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.BOLD_DOUBLE_LEFT); + connector4.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.BOLD_DOUBLE_RIGHT); + connector5.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.SINGLE_LEFT); + connector1.setXShift(stave1.getModifierXShift()); + connector3.setXShift(stave3.getModifierXShift()); + stave1.draw(); + stave2.draw(); + stave3.draw(); + stave4.draw(); + connector1.draw(); + connector2.draw(); + connector3.draw(); + connector4.draw(); + connector5.draw(); + ok(true, 'all pass'); +} +function drawRepeatOffset(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, 10, 150); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(25, 120, 150); + const stave3 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(185, 10, 150); + const stave4 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(185, 120, 150); + stave1.setContext(ctx); + stave2.setContext(ctx); + stave3.setContext(ctx); + stave4.setContext(ctx); + stave1.addClef('bass'); + stave2.addClef('alto'); + stave3.addClef('treble'); + stave4.addClef('tenor'); + stave3.addKeySignature('Ab'); + stave4.addKeySignature('Ab'); + stave1.addTimeSignature('4/4'); + stave2.addTimeSignature('4/4'); + stave3.addTimeSignature('6/8'); + stave4.addTimeSignature('6/8'); + stave1.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.REPEAT_END); + stave2.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.REPEAT_END); + stave3.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.END); + stave4.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.END); + stave1.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.REPEAT_BEGIN); + stave2.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.REPEAT_BEGIN); + stave3.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.REPEAT_BEGIN); + stave4.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.REPEAT_BEGIN); + const connector1 = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave1, stave2); + const connector2 = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave1, stave2); + const connector3 = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave3, stave4); + const connector4 = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave3, stave4); + const connector5 = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave3, stave4); + connector1.setContext(ctx); + connector2.setContext(ctx); + connector3.setContext(ctx); + connector4.setContext(ctx); + connector5.setContext(ctx); + connector1.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.BOLD_DOUBLE_LEFT); + connector2.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.BOLD_DOUBLE_RIGHT); + connector3.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.BOLD_DOUBLE_LEFT); + connector4.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.BOLD_DOUBLE_RIGHT); + connector5.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.SINGLE_LEFT); + connector1.setXShift(stave1.getModifierXShift()); + connector3.setXShift(stave3.getModifierXShift()); + stave1.draw(); + stave2.draw(); + stave3.draw(); + stave4.draw(); + connector1.draw(); + connector2.draw(); + connector3.draw(); + connector4.draw(); + connector5.draw(); + ok(true, 'all pass'); +} +function drawCombined(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 550, 700); + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(150, 10, 300); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(150, 100, 300); + const stave3 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(150, 190, 300); + const stave4 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(150, 280, 300); + const stave5 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(150, 370, 300); + const stave6 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(150, 460, 300); + const stave7 = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(150, 560, 300); + stave1.setText('Violin', _src_modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier.Position.LEFT); + stave1.setContext(ctx); + stave2.setContext(ctx); + stave3.setContext(ctx); + stave4.setContext(ctx); + stave5.setContext(ctx); + stave6.setContext(ctx); + stave7.setContext(ctx); + const conn_single = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave1, stave7); + const conn_double = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave2, stave3); + const conn_bracket = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave4, stave7); + const conn_none = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave4, stave5); + const conn_brace = new _src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave6, stave7); + conn_single.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.SINGLE); + conn_double.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.DOUBLE); + conn_bracket.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.BRACKET); + conn_brace.setType(_src_staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector.type.BRACE); + conn_brace.setXShift(-5); + conn_double.setText('Piano'); + conn_none.setText('Multiple', { shift_y: -15 }); + conn_none.setText('Line Text', { shift_y: 15 }); + conn_brace.setText('Harpsichord'); + conn_single.setContext(ctx); + conn_double.setContext(ctx); + conn_bracket.setContext(ctx); + conn_none.setContext(ctx); + conn_brace.setContext(ctx); + stave1.draw(); + stave2.draw(); + stave3.draw(); + stave4.draw(); + stave5.draw(); + stave6.draw(); + stave7.draw(); + conn_single.draw(); + conn_double.draw(); + conn_bracket.draw(); + conn_none.draw(); + conn_brace.draw(); + ok(true, 'all pass'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(StaveConnectorTests); + + + +/***/ }), + +/***/ "./tests/stavehairpin_tests.ts": +/*!*************************************!*\ + !*** ./tests/stavehairpin_tests.ts ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveHairpinTests": () => (/* binding */ StaveHairpinTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_stavehairpin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/stavehairpin */ "./src/stavehairpin.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// Author: Raffaele Viglianti, 2012 +// +// StaveHairpin Tests +// TODO: Incorrect property names in the options object: vo, left_ho, right_ho. + + +const StaveHairpinTests = { + Start() { + QUnit.module('StaveHairpin'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Simple StaveHairpin', simple); + run('Horizontal Offset StaveHairpin', horizontal); + run('Vertical Offset StaveHairpin', vertical); + run('Height StaveHairpin', height); + }, +}; +/** + * Helper function to draw a single hairpin (either crescendo or decrescendo). + * @param type is StaveHairpin.type.CRESC or StaveHairpin.type.DECRESC. + * @param position is Modifier.Position.ABOVE or Modifier.Position.BELOW. + */ +function drawHairpin(first_note, last_note, ctx, type, position, options) { + const hairpin = new _src_stavehairpin__WEBPACK_IMPORTED_MODULE_1__.StaveHairpin({ first_note, last_note }, type); + hairpin.setContext(ctx); + hairpin.setPosition(position); + if (options) { + hairpin.setRenderOptions(options); + } + hairpin.draw(); +} +/** + * Helper function + */ +function createTest(drawTwoHairpins) { + return (options) => { + const factory = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const ctx = factory.getContext(); + const stave = factory.Stave(); + const notes = [ + factory + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: 1, duration: '4' }) + .addModifier(factory.Accidental({ type: 'b' }), 0) + .addModifier(factory.Accidental({ type: '#' }), 1), + factory.StaveNote({ keys: ['d/4'], stem_direction: 1, duration: '4' }), + factory.StaveNote({ keys: ['e/4'], stem_direction: 1, duration: '4' }), + factory.StaveNote({ keys: ['f/4'], stem_direction: 1, duration: '4' }), + ]; + const voice = factory.Voice().addTickables(notes); + factory.Formatter().joinVoices([voice]).formatToStave([voice], stave); + factory.draw(); + drawTwoHairpins(ctx, notes); + ok(true, 'Simple Test'); + }; +} +const simple = createTest((ctx, notes) => { + drawHairpin(notes[0], notes[2], ctx, 1, 4); + drawHairpin(notes[1], notes[3], ctx, 2, 3); +}); +const horizontal = createTest((ctx, notes) => { + drawHairpin(notes[0], notes[2], ctx, 1, 3, { + height: 10, + // TODO: these three property names seem to be incorrect. + // vo => should it be 'y_shift'? + // left_ho => should it be 'left_shift_px'? + // right_ho => should it be 'right_shift_px'? + vo: 20, + left_ho: 20, + right_ho: -20, // right horizontal offset + }); + drawHairpin(notes[3], notes[3], ctx, 2, 4, { + height: 10, + y_shift: 0, + left_shift_px: 0, + right_shift_px: 120, // right horizontal offset + }); +}); +const vertical = createTest((ctx, notes) => { + drawHairpin(notes[0], notes[2], ctx, 1, 4, { + height: 10, + y_shift: 0, + left_shift_px: 0, + right_shift_px: 0, // right horizontal offset + }); + drawHairpin(notes[2], notes[3], ctx, 2, 4, { + height: 10, + y_shift: -15, + left_shift_px: 2, + right_shift_px: 0, // right horizontal offset + }); +}); +const height = createTest((ctx, notes) => { + drawHairpin(notes[0], notes[2], ctx, 1, 4, { + height: 10, + y_shift: 0, + left_shift_px: 0, + right_shift_px: 0, // right horizontal offset + }); + drawHairpin(notes[2], notes[3], ctx, 2, 4, { + height: 15, + y_shift: 0, + left_shift_px: 2, + right_shift_px: 0, // right horizontal offset + }); +}); +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(StaveHairpinTests); + + + +/***/ }), + +/***/ "./tests/staveline_tests.ts": +/*!**********************************!*\ + !*** ./tests/staveline_tests.ts ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveLineTests": () => (/* binding */ StaveLineTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_dot__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/dot */ "./src/dot.ts"); +/* harmony import */ var _src_font__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/font */ "./src/font.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// StaveLine Tests + + + +const StaveLineTests = { + Start() { + QUnit.module('StaveLine'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Simple StaveLine', simple0); + run('StaveLine Arrow Options', simple1); + }, +}; +function simple0(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave().addClef('treble'); + const notes = [ + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble' }), + f.StaveNote({ keys: ['c/5'], duration: '4', clef: 'treble' }), + f.StaveNote({ keys: ['c/4', 'g/4', 'b/4'], duration: '4', clef: 'treble' }), + f.StaveNote({ keys: ['f/4', 'a/4', 'f/5'], duration: '4', clef: 'treble' }), + ]; + const voice = f.Voice().addTickables(notes); + f.StaveLine({ + from: notes[0], + to: notes[1], + first_indices: [0], + last_indices: [0], + options: { + font: { family: _src_font__WEBPACK_IMPORTED_MODULE_2__.Font.SERIF, size: 12, style: _src_font__WEBPACK_IMPORTED_MODULE_2__.FontStyle.ITALIC }, + text: 'gliss.', + }, + }); + const staveLine2 = f.StaveLine({ + from: notes[2], + to: notes[3], + first_indices: [2, 1, 0], + last_indices: [0, 1, 2], + }); + staveLine2.render_options.line_dash = [10, 10]; + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +function simple1(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 770); + const stave = f.Stave().addClef('treble'); + const notes = [ + f.StaveNote({ keys: ['c#/5', 'd/5'], duration: '4', clef: 'treble', stem_direction: -1 }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble' }).addModifier(f.Accidental({ type: '#' }), 0), + f.StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '4', clef: 'treble' }), + f + .StaveNote({ keys: ['f/4', 'a/4', 'c/5'], duration: '4', clef: 'treble' }) + .addModifier(f.Accidental({ type: '#' }), 2), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble' }).addModifier(f.Accidental({ type: '#' }), 0), + f.StaveNote({ keys: ['c#/5', 'd/5'], duration: '4', clef: 'treble', stem_direction: -1 }), + f.StaveNote({ keys: ['c/4', 'd/4', 'g/4'], duration: '4', clef: 'treble' }), + f + .StaveNote({ keys: ['f/4', 'a/4', 'c/5'], duration: '4', clef: 'treble' }) + .addModifier(f.Accidental({ type: '#' }), 2), + ]; + _src_dot__WEBPACK_IMPORTED_MODULE_1__.Dot.buildAndAttach([notes[0]], { all: true }); + const voice = f.Voice().setStrict(false).addTickables(notes); + const staveLine0 = f.StaveLine({ + from: notes[0], + to: notes[1], + first_indices: [0], + last_indices: [0], + options: { text: 'Left' }, + }); + const staveLine4 = f.StaveLine({ + from: notes[2], + to: notes[3], + first_indices: [1], + last_indices: [1], + options: { text: 'Right' }, + }); + const staveLine1 = f.StaveLine({ + from: notes[4], + to: notes[5], + first_indices: [0], + last_indices: [0], + options: { text: 'Center' }, + }); + const staveLine2 = f.StaveLine({ + from: notes[6], + to: notes[7], + first_indices: [1], + last_indices: [0], + }); + const staveLine3 = f.StaveLine({ + from: notes[6], + to: notes[7], + first_indices: [2], + last_indices: [2], + options: { text: 'Top' }, + }); + staveLine0.render_options.draw_end_arrow = true; + staveLine0.render_options.text_justification = 1; + staveLine0.render_options.text_position_vertical = 2; + staveLine1.render_options.draw_end_arrow = true; + staveLine1.render_options.arrowhead_length = 30; + staveLine1.render_options.line_width = 5; + staveLine1.render_options.text_justification = 2; + staveLine1.render_options.text_position_vertical = 2; + staveLine4.render_options.line_width = 2; + staveLine4.render_options.draw_end_arrow = true; + staveLine4.render_options.draw_start_arrow = true; + staveLine4.render_options.arrowhead_angle = 0.5; + staveLine4.render_options.arrowhead_length = 20; + staveLine4.render_options.text_justification = 3; + staveLine4.render_options.text_position_vertical = 2; + staveLine2.render_options.draw_start_arrow = true; + staveLine2.render_options.line_dash = [5, 4]; + staveLine3.render_options.draw_end_arrow = true; + staveLine3.render_options.draw_start_arrow = true; + staveLine3.render_options.color = 'red'; + staveLine3.render_options.text_position_vertical = 1; + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(StaveLineTests); + + + +/***/ }), + +/***/ "./tests/stavemodifier_tests.ts": +/*!**************************************!*\ + !*** ./tests/stavemodifier_tests.ts ***! + \**************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveModifierTests": () => (/* binding */ StaveModifierTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_stave__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/stave */ "./src/stave.ts"); +/* harmony import */ var _src_stavebarline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/stavebarline */ "./src/stavebarline.ts"); +/* harmony import */ var _src_stavemodifier__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/stavemodifier */ "./src/stavemodifier.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// StaveModifier Tests + + + + +const StaveModifierTests = { + Start() { + QUnit.module('StaveModifier'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Stave Draw Test', draw); + run('Begin & End StaveModifier Test', drawBeginAndEnd); + }, +}; +function draw(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 120); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_1__.Stave(10, 10, 300); + stave.setContext(ctx); + stave.draw(); + equal(stave.getYForNote(0), 100, 'getYForNote(0)'); + equal(stave.getYForLine(5), 100, 'getYForLine(5)'); + equal(stave.getYForLine(0), 50, 'getYForLine(0) - Top Line'); + equal(stave.getYForLine(4), 90, 'getYForLine(4) - Bottom Line'); + ok(true, 'all pass'); +} +function drawBeginAndEnd(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_1__.Stave(10, 10, 400); + stave.setContext(ctx); + stave.setTimeSignature('C|'); + stave.setKeySignature('Db'); + stave.setClef('treble'); + stave.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_2__.BarlineType.REPEAT_BEGIN); + stave.setEndClef('alto'); + stave.setEndTimeSignature('9/8'); + stave.setEndKeySignature('G', 'C#'); + stave.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_2__.BarlineType.DOUBLE); + stave.draw(); + // change + const END = _src_stavemodifier__WEBPACK_IMPORTED_MODULE_3__.StaveModifierPosition.END; + stave.setY(100); + stave.setTimeSignature('3/4'); + stave.setKeySignature('G', 'C#'); + stave.setClef('bass'); + stave.setBegBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_2__.BarlineType.SINGLE); + stave.setClef('treble', undefined, undefined, END); + stave.setTimeSignature('C', undefined, END); + stave.setKeySignature('F', undefined, END); + stave.setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_2__.BarlineType.SINGLE); + stave.draw(); + ok(true, 'all pass'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(StaveModifierTests); + + + +/***/ }), + +/***/ "./tests/stavenote_tests.ts": +/*!**********************************!*\ + !*** ./tests/stavenote_tests.ts ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveNoteTests": () => (/* binding */ StaveNoteTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_accidental__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/accidental */ "./src/accidental.ts"); +/* harmony import */ var _src_annotation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/annotation */ "./src/annotation.ts"); +/* harmony import */ var _src_articulation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/articulation */ "./src/articulation.ts"); +/* harmony import */ var _src_beam__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/beam */ "./src/beam.ts"); +/* harmony import */ var _src_dot__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/dot */ "./src/dot.ts"); +/* harmony import */ var _src_flow__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../src/flow */ "./src/flow.ts"); +/* harmony import */ var _src_formatter__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../src/formatter */ "./src/formatter.ts"); +/* harmony import */ var _src_fraction__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../src/fraction */ "./src/fraction.ts"); +/* harmony import */ var _src_frethandfinger__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../src/frethandfinger */ "./src/frethandfinger.ts"); +/* harmony import */ var _src_modifier__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../src/modifier */ "./src/modifier.ts"); +/* harmony import */ var _src_modifiercontext__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../src/modifiercontext */ "./src/modifiercontext.ts"); +/* harmony import */ var _src_stave__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../src/stave */ "./src/stave.ts"); +/* harmony import */ var _src_stavenote__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../src/stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _src_stem__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../src/stem */ "./src/stem.ts"); +/* harmony import */ var _src_stringnumber__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../src/stringnumber */ "./src/stringnumber.ts"); +/* harmony import */ var _src_strokes__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../src/strokes */ "./src/strokes.ts"); +/* harmony import */ var _src_tickcontext__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../src/tickcontext */ "./src/tickcontext.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// StaveNote Tests +// TODO: In StaveNote.preFormat() line 929, should noteHeadPadding default to StaveNote.minNoteheadPadding? +// The bounding box of a note changes slightly when we add a ModifierContext (even if we add zero modifiers). + + + + + + + + + + + + + + + + + + +const StaveNoteTests = { + Start() { + QUnit.module('StaveNote'); + test('Tick', ticks); + test('Tick - New API', ticksNewAPI); + test('Stem', stem); + test('Automatic Stem Direction', autoStem); + test('Stem Extension Pitch', stemExtensionPitch); + test('Displacement after calling setStemDirection', setStemDirectionDisplacement); + test('StaveLine', staveLine); + test('Width', width); + test('TickContext', tickContext); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('StaveNote Draw - Treble', drawBasic, { clef: 'treble', octaveShift: 0, restKey: 'r/4' }); + run('StaveNote BoundingBoxes - Treble', drawBoundingBoxes, { clef: 'treble', octaveShift: 0, restKey: 'r/4' }); + run('StaveNote Draw - Alto', drawBasic, { clef: 'alto', octaveShift: -1, restKey: 'r/4' }); + run('StaveNote Draw - Tenor', drawBasic, { clef: 'tenor', octaveShift: -1, restKey: 'r/3' }); + run('StaveNote Draw - Bass', drawBasic, { clef: 'bass', octaveShift: -2, restKey: 'r/3' }); + run('StaveNote Draw - Harmonic And Muted', drawHarmonicAndMuted); + run('StaveNote Draw - Slash', drawSlash); + run('Displacements', displacements); + run('StaveNote Draw - Bass 2', drawBass); + run('StaveNote Draw - Key Styles', drawKeyStyles); + run('StaveNote Draw - StaveNote Stem Styles', drawNoteStemStyles); + run('StaveNote Draw - StaveNote Stem Lengths', drawNoteStemLengths); + run('StaveNote Draw - StaveNote Flag Styles', drawNoteStylesWithFlag); + run('StaveNote Draw - StaveNote Styles', drawNoteStyles); + run('Stave, Ledger Line, Beam, Stem and Flag Styles', drawBeamStyles); + run('Flag and Dot Placement - Stem Up', dotsAndFlagsStemUp); + run('Flag and Dots Placement - Stem Down', dotsAndFlagsStemDown); + run('Beam and Dot Placement - Stem Up', dotsAndBeamsUp); + run('Beam and Dot Placement - Stem Down', dotsAndBeamsDown); + run('No Padding', noPadding); + run('Note Heads Placement - Simple', noteHeadsSimple); + run('Note Heads Placement - Hidden Notes', noteHeadsHidden); + run('Center Aligned Note', centerAlignedRest); + run('Center Aligned Note with Articulation', centerAlignedRestFermata); + run('Center Aligned Note with Annotation', centerAlignedRestAnnotation); + run('Center Aligned Note - Multi Voice', centerAlignedMultiVoice); + run('Center Aligned Note with Multiple Modifiers', centerAlignedNoteMultiModifiers); + // This interactivity test currently only works with the SVG backend. + _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runSVGTest('Interactive Mouseover StaveNote', drawBasic, { + clef: 'treble', + octaveShift: 0, + restKey: 'r/4', + ui: true, + }); + }, +}; +// Helper function to create StaveNotes. +const staveNote = (struct) => new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote(struct); +/** + * Helper function to draw a note with an optional bounding box. + */ +function draw(note, stave, context, x, drawBoundingBox = false, addModifierContext = true) { + // Associate the note with the stave. + note.setStave(stave); + // A ModifierContext is required for dots and other modifiers to be drawn properly. + // If added, it changes the bounding box of a note, even if there are no modifiers to draw. + // See StaveNote.minNoteheadPadding in stavenote.ts. + if (addModifierContext) { + note.addToModifierContext(new _src_modifiercontext__WEBPACK_IMPORTED_MODULE_11__.ModifierContext()); + } + new _src_tickcontext__WEBPACK_IMPORTED_MODULE_17__.TickContext().addTickable(note).preFormat().setX(x); + note.setContext(context).draw(); + if (drawBoundingBox) { + const bb = note.getBoundingBox(); + context.rect(bb.getX(), bb.getY(), bb.getW(), bb.getH()); + context.stroke(); + } + return note; +} +function ticks() { + const BEAT = (1 * _src_flow__WEBPACK_IMPORTED_MODULE_6__.Flow.RESOLUTION) / 4; + // Key value pairs of `testName: [durationString, expectedBeats, expectedNoteType]` + const tickTests = { + 'Breve note': ['1/2', 8.0, 'n'], + 'Whole note': ['w', 4.0, 'n'], + 'Quarter note': ['q', 1.0, 'n'], + 'Dotted half note': ['hd', 3.0, 'n'], + 'Doubled-dotted half note': ['hdd', 3.5, 'n'], + 'Triple-dotted half note': ['hddd', 3.75, 'n'], + 'Dotted half rest': ['hdr', 3.0, 'r'], + 'Double-dotted half rest': ['hddr', 3.5, 'r'], + 'Triple-dotted half rest': ['hdddr', 3.75, 'r'], + 'Dotted harmonic quarter note': ['qdh', 1.5, 'h'], + 'Double-dotted harmonic quarter note': ['qddh', 1.75, 'h'], + 'Triple-dotted harmonic quarter note': ['qdddh', 1.875, 'h'], + 'Dotted muted 8th note': ['8dm', 0.75, 'm'], + 'Double-dotted muted 8th note': ['8ddm', 0.875, 'm'], + 'Triple-dotted muted 8th note': ['8dddm', 0.9375, 'm'], + }; + Object.keys(tickTests).forEach((testName) => { + const testData = tickTests[testName]; + const durationString = testData[0]; + const expectedBeats = testData[1]; + const expectedNoteType = testData[2]; + const note = new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: durationString }); + equal(note.getTicks().value(), BEAT * expectedBeats, testName + ' must have ' + expectedBeats + ' beats'); + equal(note.getNoteType(), expectedNoteType, 'Note type must be ' + expectedNoteType); + }); + throws(() => new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '8.7dddm' }), /BadArguments/, "Invalid note duration '8.7' throws BadArguments exception"); + throws(() => new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '2Z' }), /BadArguments/, "Invalid note type 'Z' throws BadArguments exception"); + throws(() => new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '2dddZ' }), /BadArguments/, "Invalid note type 'Z' throws BadArguments exception"); +} +function ticksNewAPI() { + const BEAT = (1 * _src_flow__WEBPACK_IMPORTED_MODULE_6__.Flow.RESOLUTION) / 4; + // Key value pairs of `testName: [noteData, expectedBeats, expectedNoteType]` + const tickTests = { + 'Breve note': [{ duration: '1/2' }, 8.0, 'n'], + 'Whole note': [{ duration: 'w' }, 4.0, 'n'], + 'Quarter note': [{ duration: 'q' }, 1.0, 'n'], + 'Dotted half note': [{ duration: 'h', dots: 1 }, 3.0, 'n'], + 'Doubled-dotted half note': [{ duration: 'h', dots: 2 }, 3.5, 'n'], + 'Triple-dotted half note': [{ duration: 'h', dots: 3 }, 3.75, 'n'], + 'Dotted half rest': [{ duration: 'h', dots: 1, type: 'r' }, 3.0, 'r'], + 'Double-dotted half rest': [{ duration: 'h', dots: 2, type: 'r' }, 3.5, 'r'], + 'Triple-dotted half rest': [{ duration: 'h', dots: 3, type: 'r' }, 3.75, 'r'], + 'Dotted harmonic quarter note': [{ duration: 'q', dots: 1, type: 'h' }, 1.5, 'h'], + 'Double-dotted harmonic quarter note': [{ duration: 'q', dots: 2, type: 'h' }, 1.75, 'h'], + 'Triple-dotted harmonic quarter note': [{ duration: 'q', dots: 3, type: 'h' }, 1.875, 'h'], + 'Dotted muted 8th note': [{ duration: '8', dots: 1, type: 'm' }, 0.75, 'm'], + 'Double-dotted muted 8th note': [{ duration: '8', dots: 2, type: 'm' }, 0.875, 'm'], + 'Triple-dotted muted 8th note': [{ duration: '8', dots: 3, type: 'm' }, 0.9375, 'm'], + }; + Object.keys(tickTests).forEach(function (testName) { + const testData = tickTests[testName]; + const noteData = testData[0]; + const expectedBeats = testData[1]; + const expectedNoteType = testData[2]; + noteData.keys = ['c/4', 'e/4', 'g/4']; + const note = new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote(noteData); + equal(note.getTicks().value(), BEAT * expectedBeats, testName + ' must have ' + expectedBeats + ' beats'); + equal(note.getNoteType(), expectedNoteType, 'Note type must be ' + expectedNoteType); + }); + throws(() => new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '8.7dddm' }), /BadArguments/, "Invalid note duration '8.7' throws BadArguments exception"); + throws(() => new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '2Z' }), /BadArguments/, "Invalid note type 'Z' throws BadArguments exception"); + throws(() => new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '2dddZ' }), /BadArguments/, "Invalid note type 'Z' throws BadArguments exception"); +} +function stem() { + const note = new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: 'w' }); + equal(note.getStemDirection(), _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP, 'Default note has UP stem'); +} +function autoStem() { + const testData = [ + [['c/5', 'e/5', 'g/5'], _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN], + [['e/4', 'g/4', 'c/5'], _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP], + [['c/5'], _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN], + [['a/4', 'e/5', 'g/5'], _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN], + [['b/4'], _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN], + ]; + testData.forEach((td) => { + const keys = td[0]; + const expectedStemDirection = td[1]; + const note = new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote({ keys: keys, auto_stem: true, duration: '8' }); + equal(note.getStemDirection(), expectedStemDirection, 'Stem must be ' + (expectedStemDirection === _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP ? 'up' : 'down')); + }); +} +function stemExtensionPitch() { + // [keys, expectedStemExtension, override stem direction] + const testData = [ + [['c/5', 'e/5', 'g/5'], 0, 0], + [['e/4', 'g/4', 'c/5'], 0, 0], + [['c/5'], 0, 0], + [['f/3'], 15, 0], + [['f/3'], 15, _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP], + [['f/3'], 0, _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN], + [['f/3', 'e/5'], 0, 0], + [['g/6'], 25, 0], + [['g/6'], 25, _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN], + [['g/6'], 0, _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP], + ]; + testData.forEach((td) => { + const keys = td[0]; + const expectedStemExtension = td[1]; + const overrideStemDirection = td[2]; + let note; + if (overrideStemDirection === 0) { + note = new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote({ keys: keys, auto_stem: true, duration: '4' }); + } + else { + note = new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote({ keys: keys, duration: '4', stem_direction: overrideStemDirection }); + } + equal(note.getStemExtension(), expectedStemExtension, 'For ' + keys.toString() + ' StemExtension must be ' + expectedStemExtension); + // set to weird Stave + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_12__.Stave(10, 10, 300, { spacing_between_lines_px: 20 }); + note.setStave(stave); + equal(note.getStemExtension(), expectedStemExtension * 2, 'For wide staff ' + keys.toString() + ' StemExtension must be ' + expectedStemExtension * 2); + // const whole_note = new StaveNote({ keys: keys, duration: 'w' }); + // equal( + // whole_note.getStemExtension(), + // -1 * Flow.STEM_HEIGHT, + // 'For ' + keys.toString() + ' whole_note StemExtension must always be -1 * Flow.STEM_HEIGHT' + // ); + }); +} +function setStemDirectionDisplacement() { + function getDisplacements(note) { + return note.noteHeads.map((noteHead) => noteHead.isDisplaced()); + } + const stemUpDisplacements = [false, true, false]; + const stemDownDisplacements = [true, false, false]; + const note = new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote({ keys: ['c/5', 'd/5', 'g/5'], stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP, duration: '4' }); + deepEqual(getDisplacements(note), stemUpDisplacements); + note.setStemDirection(_src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN); + deepEqual(getDisplacements(note), stemDownDisplacements); + note.setStemDirection(_src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP); + deepEqual(getDisplacements(note), stemUpDisplacements); +} +function staveLine() { + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_12__.Stave(10, 10, 300); + const note = new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: 'w' }); + note.setStave(stave); + const props = note.getKeyProps(); + equal(props[0].line, 0, 'C/4 on line 0'); + equal(props[1].line, 1, 'E/4 on line 1'); + equal(props[2].line, 2.5, 'A/4 on line 2.5'); + const ys = note.getYs(); + equal(ys.length, 3, 'Chord should be rendered on three lines'); + equal(ys[0], 100, 'Line for C/4'); + equal(ys[1], 90, 'Line for E/4'); + equal(ys[2], 75, 'Line for A/4'); +} +function width() { + const note = new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: 'w' }); + throws(() => note.getWidth(), /UnformattedNote/, 'Unformatted note should have no width'); +} +function tickContext() { + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_12__.Stave(10, 10, 400); + const note = new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: 'w' }).setStave(stave); + new _src_tickcontext__WEBPACK_IMPORTED_MODULE_17__.TickContext().addTickable(note).preFormat().setX(10).setPadding(0); + expect(0); +} +function drawBasic(options, contextBuilder) { + const clef = options.params.clef; + const octaveShift = options.params.octaveShift; + const restKey = options.params.restKey; + const ctx = contextBuilder(options.elementId, 700, 180); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_12__.Stave(10, 30, 750); + stave.setContext(ctx); + stave.addClef(clef); + stave.draw(); + const lowerKeys = ['c/', 'e/', 'a/']; + const higherKeys = ['c/', 'e/', 'a/']; + for (let k = 0; k < lowerKeys.length; k++) { + lowerKeys[k] = lowerKeys[k] + (4 + octaveShift); + higherKeys[k] = higherKeys[k] + (5 + octaveShift); + } + const restKeys = [restKey]; + const noteStructs = [ + { clef: clef, keys: higherKeys, duration: '1/2' }, + { clef: clef, keys: lowerKeys, duration: 'w' }, + { clef: clef, keys: higherKeys, duration: 'h' }, + { clef: clef, keys: lowerKeys, duration: 'q' }, + { clef: clef, keys: higherKeys, duration: '8' }, + { clef: clef, keys: lowerKeys, duration: '16' }, + { clef: clef, keys: higherKeys, duration: '32' }, + { clef: clef, keys: higherKeys, duration: '64' }, + { clef: clef, keys: higherKeys, duration: '128' }, + { clef: clef, keys: lowerKeys, duration: '1/2', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: 'w', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: 'h', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: 'q', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: '16', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: '32', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: '64', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: '128', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { clef: clef, keys: restKeys, duration: '1/2r' }, + { clef: clef, keys: restKeys, duration: 'wr' }, + { clef: clef, keys: restKeys, duration: 'hr' }, + { clef: clef, keys: restKeys, duration: 'qr' }, + { clef: clef, keys: restKeys, duration: '8r' }, + { clef: clef, keys: restKeys, duration: '16r' }, + { clef: clef, keys: restKeys, duration: '32r' }, + { clef: clef, keys: restKeys, duration: '64r' }, + { clef: clef, keys: restKeys, duration: '128r' }, + { keys: ['x/4'], duration: 'h' }, + ]; + expect(noteStructs.length * 2); + const colorDescendants = (parentItem, color) => () => parentItem.querySelectorAll('*').forEach((child) => { + child.setAttribute('fill', color); + child.setAttribute('stroke', color); + }); + for (let i = 0; i < noteStructs.length; ++i) { + const note = draw(staveNote(noteStructs[i]), stave, ctx, (i + 1) * 25); + // If this is an interactivity test (ui: true), then attach mouseover & mouseout handlers to the notes. + if (options.params.ui) { + const item = note.getSVGElement(); + if (item) { + item.addEventListener('mouseover', colorDescendants(item, 'green'), false); + item.addEventListener('mouseout', colorDescendants(item, 'black'), false); + } + } + ok(note.getX() > 0, 'Note ' + i + ' has X value'); + ok(note.getYs().length > 0, 'Note ' + i + ' has Y values'); + } +} +function drawBoundingBoxes(options, contextBuilder) { + const clef = options.params.clef; + const octaveShift = options.params.octaveShift; + const restKey = options.params.restKey; + const ctx = contextBuilder(options.elementId, 700, 180); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_12__.Stave(10, 30, 750); + stave.setContext(ctx); + stave.addClef(clef); + stave.draw(); + const lowerKeys = ['c/', 'e/', 'a/']; + const higherKeys = ['c/', 'e/', 'a/']; + for (let k = 0; k < lowerKeys.length; k++) { + lowerKeys[k] = lowerKeys[k] + (4 + octaveShift); + higherKeys[k] = higherKeys[k] + (5 + octaveShift); + } + const restKeys = [restKey]; + const noteStructs = [ + { clef: clef, keys: higherKeys, duration: '1/2' }, + { clef: clef, keys: lowerKeys, duration: 'w' }, + { clef: clef, keys: higherKeys, duration: 'h' }, + { clef: clef, keys: lowerKeys, duration: 'q' }, + { clef: clef, keys: higherKeys, duration: '8' }, + { clef: clef, keys: lowerKeys, duration: '16' }, + { clef: clef, keys: higherKeys, duration: '32' }, + { clef: clef, keys: higherKeys, duration: '64' }, + { clef: clef, keys: higherKeys, duration: '128' }, + { clef: clef, keys: lowerKeys, duration: '1/2', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: 'w', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: 'h', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: 'q', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: '16', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: '32', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: '64', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: '128' }, + { clef: clef, keys: restKeys, duration: '1/2r' }, + { clef: clef, keys: restKeys, duration: 'wr' }, + { clef: clef, keys: restKeys, duration: 'hr' }, + { clef: clef, keys: restKeys, duration: 'qr' }, + { clef: clef, keys: restKeys, duration: '8r' }, + { clef: clef, keys: restKeys, duration: '16r' }, + { clef: clef, keys: restKeys, duration: '32r' }, + { clef: clef, keys: restKeys, duration: '64r' }, + { clef: clef, keys: restKeys, duration: '128r' }, + { keys: ['x/4'], duration: 'h' }, + ]; + expect(noteStructs.length * 2); + for (let i = 0; i < noteStructs.length; ++i) { + const note = draw(staveNote(noteStructs[i]), stave, ctx, (i + 1) * 25, true /* drawBoundingBox */, false /* addModifierContext */); + ok(note.getX() > 0, 'Note ' + i + ' has X value'); + ok(note.getYs().length > 0, 'Note ' + i + ' has Y values'); + } +} +function drawBass(options, contextBuilder) { + expect(40); + const ctx = contextBuilder(options.elementId, 600, 280); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_12__.Stave(10, 10, 650); + stave.setContext(ctx); + stave.addClef('bass'); + stave.draw(); + const noteStructs = [ + { clef: 'bass', keys: ['c/3', 'e/3', 'a/3'], duration: '1/2' }, + { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: 'w' }, + { clef: 'bass', keys: ['c/3', 'e/3', 'a/3'], duration: 'h' }, + { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: 'q' }, + { clef: 'bass', keys: ['c/3', 'e/3', 'a/3'], duration: '8' }, + { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: '16' }, + { clef: 'bass', keys: ['c/3', 'e/3', 'a/3'], duration: '32' }, + { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: 'h', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: 'q', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: '16', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: '32', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['r/4'], duration: '1/2r' }, + { keys: ['r/4'], duration: 'wr' }, + { keys: ['r/4'], duration: 'hr' }, + { keys: ['r/4'], duration: 'qr' }, + { keys: ['r/4'], duration: '8r' }, + { keys: ['r/4'], duration: '16r' }, + { keys: ['r/4'], duration: '32r' }, + { keys: ['x/4'], duration: 'h' }, + ]; + for (let i = 0; i < noteStructs.length; ++i) { + const note = draw(staveNote(noteStructs[i]), stave, ctx, (i + 1) * 25); + ok(note.getX() > 0, 'Note ' + i + ' has X value'); + ok(note.getYs().length > 0, 'Note ' + i + ' has Y values'); + } +} +function displacements(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 700, 155); + ctx.scale(0.9, 0.9); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_12__.Stave(10, 10, 675); + stave.setContext(ctx); + stave.draw(); + const noteStructs = [ + { keys: ['g/3', 'a/3', 'c/4', 'd/4', 'e/4'], duration: '1/2' }, + { keys: ['g/3', 'a/3', 'c/4', 'd/4', 'e/4'], duration: 'w' }, + { keys: ['d/4', 'e/4', 'f/4'], duration: 'h' }, + { keys: ['f/4', 'g/4', 'a/4', 'b/4'], duration: 'q' }, + { keys: ['e/3', 'b/3', 'c/4', 'e/4', 'f/4', 'g/5', 'a/5'], duration: '8' }, + { keys: ['a/3', 'c/4', 'e/4', 'g/4', 'a/4', 'b/4'], duration: '16' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '32' }, + { keys: ['c/4', 'e/4', 'a/4', 'a/4'], duration: '64' }, + { keys: ['g/3', 'c/4', 'd/4', 'e/4'], duration: 'h', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['d/4', 'e/4', 'f/4'], duration: 'q', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['f/4', 'g/4', 'a/4', 'b/4'], duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['c/4', 'd/4', 'e/4', 'f/4', 'g/4', 'a/4'], duration: '16', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['b/3', 'c/4', 'e/4', 'a/4', 'b/5', 'c/6', 'e/6'], duration: '32', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { + keys: ['b/3', 'c/4', 'e/4', 'a/4', 'b/5', 'c/6', 'e/6', 'e/6'], + duration: '64', + stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN, + }, + ]; + expect(noteStructs.length * 2); + for (let i = 0; i < noteStructs.length; ++i) { + const note = draw(staveNote(noteStructs[i]), stave, ctx, (i + 1) * 45); + ok(note.getX() > 0, 'Note ' + i + ' has X value'); + ok(note.getYs().length > 0, 'Note ' + i + ' has Y values'); + } +} +function drawHarmonicAndMuted(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 1000, 180); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_12__.Stave(10, 10, 950); + stave.setContext(ctx); + stave.draw(); + const noteStructs = [ + { keys: ['c/4', 'e/4', 'a/4'], duration: '1/2h' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'wh' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'hh' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'qh' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '8h' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '16h' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '32h' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '64h' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '128h' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '1/2h', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'wh', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'hh', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'qh', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '8h', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '16h', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '32h', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '64h', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '128h', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '1/2m' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'wm' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'hm' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'qm' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '8m' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '16m' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '32m' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '64m' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '128m' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '1/2m', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'wm', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'hm', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'qm', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '8m', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '16m', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '32m', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '64m', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '128m', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + ]; + expect(noteStructs.length * 2); + for (let i = 0; i < noteStructs.length; ++i) { + const note = draw(staveNote(noteStructs[i]), stave, ctx, i * 25 + 5); + ok(note.getX() > 0, 'Note ' + i + ' has X value'); + ok(note.getYs().length > 0, 'Note ' + i + ' has Y values'); + } +} +function drawSlash(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 700, 180); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_12__.Stave(10, 10, 650); + stave.setContext(ctx); + stave.draw(); + const notes = [ + { keys: ['b/4'], duration: '1/2s', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['b/4'], duration: 'ws', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['b/4'], duration: 'hs', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['b/4'], duration: 'qs', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['b/4'], duration: '8s', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['b/4'], duration: '16s', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['b/4'], duration: '32s', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['b/4'], duration: '64s', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['b/4'], duration: '128s', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['b/4'], duration: '1/2s', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }, + { keys: ['b/4'], duration: 'ws', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }, + { keys: ['b/4'], duration: 'hs', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }, + { keys: ['b/4'], duration: 'qs', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }, + { keys: ['b/4'], duration: '8s', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }, + { keys: ['b/4'], duration: '16s', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }, + { keys: ['b/4'], duration: '32s', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }, + { keys: ['b/4'], duration: '64s', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }, + { keys: ['b/4'], duration: '128s', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }, + // Beam + { keys: ['b/4'], duration: '8s', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['b/4'], duration: '8s', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['b/4'], duration: '8s', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }, + { keys: ['b/4'], duration: '8s', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }, + ]; + const stave_notes = notes.map((struct) => new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote(struct)); + const beam1 = new _src_beam__WEBPACK_IMPORTED_MODULE_4__.Beam([stave_notes[16], stave_notes[17]]); + const beam2 = new _src_beam__WEBPACK_IMPORTED_MODULE_4__.Beam([stave_notes[18], stave_notes[19]]); + _src_formatter__WEBPACK_IMPORTED_MODULE_7__.Formatter.FormatAndDraw(ctx, stave, stave_notes, false); + beam1.setContext(ctx).draw(); + beam2.setContext(ctx).draw(); + ok('Slash Note Heads'); +} +function drawKeyStyles(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 300, 280); + ctx.scale(3, 3); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_12__.Stave(10, 0, 100); + const note = new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote({ keys: ['g/4', 'bb/4', 'd/5'], duration: 'q' }) + .setStave(stave) + .addModifier(new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('b'), 1) + .setKeyStyle(1, { shadowBlur: 2, shadowColor: 'blue', fillStyle: 'blue' }); + new _src_tickcontext__WEBPACK_IMPORTED_MODULE_17__.TickContext().addTickable(note).preFormat().setX(25); + stave.setContext(ctx).draw(); + note.setContext(ctx).draw(); + ok(note.getX() > 0, 'Note has X value'); + ok(note.getYs().length > 0, 'Note has Y values'); +} +function drawNoteStyles(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 300, 280); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_12__.Stave(10, 0, 100); + ctx.scale(3, 3); + const note = new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote({ keys: ['g/4', 'bb/4', 'd/5'], duration: '8' }) + .setStave(stave) + .addModifier(new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('b'), 1); + note.setStyle({ shadowBlur: 2, shadowColor: 'blue', fillStyle: 'blue', strokeStyle: 'blue' }); + new _src_tickcontext__WEBPACK_IMPORTED_MODULE_17__.TickContext().addTickable(note).preFormat().setX(25); + stave.setContext(ctx).draw(); + note.setContext(ctx).draw(); + ok(note.getX() > 0, 'Note has X value'); + ok(note.getYs().length > 0, 'Note has Y values'); +} +function drawNoteStemStyles(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 300, 280); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_12__.Stave(10, 0, 100); + ctx.scale(3, 3); + const note = new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote({ keys: ['g/4', 'bb/4', 'd/5'], duration: 'q' }) + .setStave(stave) + .addModifier(new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('b'), 1); + note.setStemStyle({ shadowBlur: 2, shadowColor: 'blue', fillStyle: 'blue', strokeStyle: 'blue' }); + new _src_tickcontext__WEBPACK_IMPORTED_MODULE_17__.TickContext().addTickable(note).preFormat().setX(25); + stave.setContext(ctx).draw(); + note.setContext(ctx).draw(); + ok('Note Stem Style'); +} +function drawNoteStemLengths(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 975, 150); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_12__.Stave(10, 10, 975); + stave.setContext(ctx).draw(); + const keys = [ + 'e/3', + 'f/3', + 'g/3', + 'a/3', + 'b/3', + 'c/4', + 'd/4', + 'e/4', + 'f/4', + 'g/4', + 'f/5', + 'g/5', + 'a/5', + 'b/5', + 'c/6', + 'd/6', + 'e/6', + 'f/6', + 'g/6', + 'a/6', + ]; + const notes = []; + let note; + let i; + for (i = 0; i < keys.length; i++) { + let duration = 'q'; + if (i % 2 === 1) { + duration = '8'; + } + note = new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote({ keys: [keys[i]], duration, auto_stem: true }).setStave(stave); + new _src_tickcontext__WEBPACK_IMPORTED_MODULE_17__.TickContext().addTickable(note); + note.setContext(ctx); + notes.push(note); + } + const whole_keys = ['e/3', 'a/3', 'f/5', 'a/5', 'd/6', 'a/6']; + for (i = 0; i < whole_keys.length; i++) { + note = new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote({ keys: [whole_keys[i]], duration: 'w' }).setStave(stave); + new _src_tickcontext__WEBPACK_IMPORTED_MODULE_17__.TickContext().addTickable(note); + note.setContext(ctx); + notes.push(note); + } + _src_formatter__WEBPACK_IMPORTED_MODULE_7__.Formatter.FormatAndDraw(ctx, stave, notes); + ok('Note Stem Length'); +} +function drawNoteStylesWithFlag(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 300, 280); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_12__.Stave(10, 0, 100); + ctx.scale(3, 3); + const note = new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote({ keys: ['g/4', 'bb/4', 'd/5'], duration: '8' }) + .setStave(stave) + .addModifier(new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('b'), 1); + note.setFlagStyle({ shadowBlur: 2, shadowColor: 'blue', fillStyle: 'blue', strokeStyle: 'blue' }); + new _src_tickcontext__WEBPACK_IMPORTED_MODULE_17__.TickContext().addTickable(note).preFormat().setX(25); + stave.setContext(ctx).draw(); + note.setContext(ctx).draw(); + ok(note.getX() > 0, 'Note has X value'); + ok(note.getYs().length > 0, 'Note has Y values'); +} +function drawBeamStyles(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 160); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_12__.Stave(10, 10, 380); + stave.setStyle({ strokeStyle: '#EEAAEE', lineWidth: 3 }); + stave.setContext(ctx); + stave.draw(); + const notes = [ + // beam1 + { keys: ['b/4'], duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['b/4'], duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + // should be unstyled... + { keys: ['b/4'], duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + // beam2 should also be unstyled + { keys: ['b/4'], duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['b/4'], duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + // beam3 + { keys: ['b/4'], duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }, + { keys: ['b/4'], duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }, + // beam4 + { keys: ['d/6'], duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + { keys: ['c/6', 'd/6'], duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + // unbeamed + { keys: ['d/6', 'e/6'], duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + // unbeamed, unstyled + { keys: ['e/6', 'f/6'], duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }, + ]; + const staveNotes = notes.map((note) => new _src_stavenote__WEBPACK_IMPORTED_MODULE_13__.StaveNote(note)); + const beam1 = new _src_beam__WEBPACK_IMPORTED_MODULE_4__.Beam(staveNotes.slice(0, 2)); + const beam2 = new _src_beam__WEBPACK_IMPORTED_MODULE_4__.Beam(staveNotes.slice(3, 5)); + const beam3 = new _src_beam__WEBPACK_IMPORTED_MODULE_4__.Beam(staveNotes.slice(5, 7)); + const beam4 = new _src_beam__WEBPACK_IMPORTED_MODULE_4__.Beam(staveNotes.slice(7, 9)); + // stem, key, ledger, flag; beam.setStyle + beam1.setStyle({ fillStyle: 'blue', strokeStyle: 'blue' }); + staveNotes[0].setKeyStyle(0, { fillStyle: 'purple' }); + staveNotes[0].setStemStyle({ strokeStyle: 'green' }); + staveNotes[1].setStemStyle({ strokeStyle: 'orange' }); + staveNotes[1].setKeyStyle(0, { fillStyle: 'darkturquoise' }); + staveNotes[5].setStyle({ fillStyle: 'tomato', strokeStyle: 'tomato' }); + beam3.setStyle({ shadowBlur: 4, shadowColor: 'blue' }); + staveNotes[9].setLedgerLineStyle({ fillStyle: 'lawngreen', strokeStyle: 'lawngreen', lineWidth: 1 }); + staveNotes[9].setFlagStyle({ fillStyle: 'orange', strokeStyle: 'orange' }); + _src_formatter__WEBPACK_IMPORTED_MODULE_7__.Formatter.FormatAndDraw(ctx, stave, staveNotes, false); + beam1.setContext(ctx).draw(); + beam2.setContext(ctx).draw(); + beam3.setContext(ctx).draw(); + beam4.setContext(ctx).draw(); + ok('draw beam styles'); +} +function dotsAndFlagsStemUp(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 800, 150); + ctx.scale(1.0, 1.0); + ctx.setFillStyle('#221'); + ctx.setStrokeStyle('#221'); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_12__.Stave(10, 10, 975); + const notes = [ + staveNote({ keys: ['f/4'], duration: '4', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }), + staveNote({ keys: ['f/4'], duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }), + staveNote({ keys: ['f/4'], duration: '16', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }), + staveNote({ keys: ['f/4'], duration: '32', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }), + staveNote({ keys: ['f/4'], duration: '64', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }), + staveNote({ keys: ['f/4'], duration: '128', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }), + staveNote({ keys: ['g/4'], duration: '4', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }), + staveNote({ keys: ['g/4'], duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }), + staveNote({ keys: ['g/4'], duration: '16', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }), + staveNote({ keys: ['g/4'], duration: '32' }), + staveNote({ keys: ['g/4'], duration: '64', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }), + staveNote({ keys: ['g/4'], duration: '128', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }), + ]; + _src_dot__WEBPACK_IMPORTED_MODULE_5__.Dot.buildAndAttach(notes, { all: true }); + _src_dot__WEBPACK_IMPORTED_MODULE_5__.Dot.buildAndAttach([notes[5], notes[11]], { all: true }); + stave.setContext(ctx).draw(); + for (let i = 0; i < notes.length; ++i) { + draw(notes[i], stave, ctx, i * 65); + } + ok(true, 'Full Dot'); +} +function dotsAndFlagsStemDown(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 800, 160); + ctx.scale(1.0, 1.0); + ctx.setFillStyle('#221'); + ctx.setStrokeStyle('#221'); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_12__.Stave(10, 10, 975); + const staveNotes = [ + staveNote({ keys: ['e/5'], duration: '4', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }), + staveNote({ keys: ['e/5'], duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }), + staveNote({ keys: ['e/5'], duration: '16', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }), + staveNote({ keys: ['e/5'], duration: '32', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }), + staveNote({ keys: ['e/5'], duration: '64', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }), + staveNote({ keys: ['e/5'], duration: '128', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }), + staveNote({ keys: ['d/5'], duration: '4', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }), + staveNote({ keys: ['d/5'], duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }), + staveNote({ keys: ['d/5'], duration: '16', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }), + staveNote({ keys: ['d/5'], duration: '32', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }), + staveNote({ keys: ['d/5'], duration: '64', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }), + staveNote({ keys: ['d/5'], duration: '128', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }), + ]; + _src_dot__WEBPACK_IMPORTED_MODULE_5__.Dot.buildAndAttach(staveNotes, { all: true }); + stave.setContext(ctx).draw(); + for (let i = 0; i < staveNotes.length; ++i) { + draw(staveNotes[i], stave, ctx, i * 65); + } + ok(true, 'Full Dot'); +} +function dotsAndBeamsUp(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 800, 150); + ctx.scale(1.0, 1.0); + ctx.setFillStyle('#221'); + ctx.setStrokeStyle('#221'); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_12__.Stave(10, 10, 975); + const staveNotes = [ + staveNote({ keys: ['f/4'], duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }), + staveNote({ keys: ['f/4'], duration: '16', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }), + staveNote({ keys: ['f/4'], duration: '32', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }), + staveNote({ keys: ['f/4'], duration: '64', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }), + staveNote({ keys: ['f/4'], duration: '128', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }), + staveNote({ keys: ['g/4'], duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }), + staveNote({ keys: ['g/4'], duration: '16', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }), + staveNote({ keys: ['g/4'], duration: '32' }), + staveNote({ keys: ['g/4'], duration: '64', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }), + staveNote({ keys: ['g/4'], duration: '128', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.UP }), + ]; + _src_dot__WEBPACK_IMPORTED_MODULE_5__.Dot.buildAndAttach(staveNotes, { all: true }); + _src_dot__WEBPACK_IMPORTED_MODULE_5__.Dot.buildAndAttach([staveNotes[4], staveNotes[9]], { all: true }); + const beam = new _src_beam__WEBPACK_IMPORTED_MODULE_4__.Beam(staveNotes); + stave.setContext(ctx).draw(); + for (let i = 0; i < staveNotes.length; ++i) { + draw(staveNotes[i], stave, ctx, i * 65); + } + beam.setContext(ctx).draw(); + ok(true, 'Full Dot'); +} +function dotsAndBeamsDown(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 800, 160); + ctx.scale(1.0, 1.0); + ctx.setFillStyle('#221'); + ctx.setStrokeStyle('#221'); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_12__.Stave(10, 10, 975); + const staveNotes = [ + staveNote({ keys: ['e/5'], duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }), + staveNote({ keys: ['e/5'], duration: '16', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }), + staveNote({ keys: ['e/5'], duration: '32', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }), + staveNote({ keys: ['e/5'], duration: '64', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }), + staveNote({ keys: ['e/5'], duration: '128', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }), + staveNote({ keys: ['d/5'], duration: '8', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }), + staveNote({ keys: ['d/5'], duration: '16', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }), + staveNote({ keys: ['d/5'], duration: '32', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }), + staveNote({ keys: ['d/5'], duration: '64', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }), + staveNote({ keys: ['d/5'], duration: '128', stem_direction: _src_stem__WEBPACK_IMPORTED_MODULE_14__.Stem.DOWN }), + ]; + _src_dot__WEBPACK_IMPORTED_MODULE_5__.Dot.buildAndAttach(staveNotes, { all: true }); + const beam = new _src_beam__WEBPACK_IMPORTED_MODULE_4__.Beam(staveNotes); + stave.setContext(ctx).draw(); + for (let i = 0; i < staveNotes.length; ++i) { + draw(staveNotes[i], stave, ctx, i * 65); + } + beam.setContext(ctx).draw(); + ok(true, 'Full Dot'); +} +function noteHeadsSimple(options) { + const vf = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 800, 250); + const score = vf.EasyScore(); + const system1 = vf.System({ y: 100, x: 50, width: 200 }); + system1 + .addStave({ + voices: [ + score.voice([...score.beam(score.notes('a4/8, b4/8', { stem: 'up' })), ...score.notes('a4/q/r, a4/h/r')]), + score.voice(score.notes('g4/w')), + ], + }) + .addClef('treble') + .addTimeSignature('4/4'); + const system2 = vf.System({ y: 100, x: 250, width: 150 }); + system2.addStave({ + voices: [score.voice(score.notes('b4/h, b4/h/r')), score.voice(score.notes('b4/w'))], + }); + const system3 = vf.System({ y: 100, x: 400, width: 150 }); + system3.addStave({ + voices: [score.voice(score.notes('d5/h, d5/h/r')), score.voice(score.notes('e4/w'))], + }); + const system4 = vf.System({ y: 100, x: 550, width: 150 }); + system4.addStave({ + voices: [ + score.voice(score.notes('e4/q, e4/q/r, e4/h/r')), + score.voice(score.notes('e4/8, e4/8/r, e4/q/r, e4/h/r')), + ], + }); + vf.draw(); + expect(0); +} +function noPadding(options) { + const vf = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 800, 500); + const score = vf.EasyScore(); + function newStave(y, noPadding) { + let system = vf.System({ y, x: 50, width: 200, noPadding }); + system + .addStave({ + voices: [ + score.voice([...score.beam(score.notes('a4/8, b4/8', { stem: 'up' })), ...score.notes('a4/q, a4/h')]), + score.voice(score.notes('g4/w')), + ], + }) + .addClef('treble') + .addTimeSignature('4/4'); + system = vf.System({ y, x: 250, width: 150, noPadding }); + system.addStave({ + voices: [score.voice(score.notes('b4/h, b4/h')), score.voice(score.notes('b4/w'))], + }); + system = vf.System({ y, x: 400, width: 150, noPadding }); + system.addStave({ + voices: [score.voice(score.notes('d5/h, d5/h')), score.voice(score.notes('e4/w'))], + }); + system = vf.System({ y, x: 550, width: 150, noPadding }); + system.addStave({ + voices: [score.voice(score.notes('e4/q, e4/q, e4/h')), score.voice(score.notes('e4/8, e4/8, e4/q, e4/h'))], + }); + } + newStave(100, true); + newStave(200, false); + vf.draw(); + expect(0); +} +function noteHeadsHidden(options) { + const vf = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 800, 250); + const score = vf.EasyScore(); + const system1 = vf.System({ y: 100, x: 50, width: 200 }); + const notes1 = score.notes('g4/w'); + notes1[0].render_options.draw = false; + system1 + .addStave({ + voices: [ + score.voice([...score.beam(score.notes('a4/8, b4/8', { stem: 'up' })), ...score.notes('a4/q/r, a4/h/r')]), + score.voice(notes1), + ], + }) + .addClef('treble') + .addTimeSignature('4/4'); + const system2 = vf.System({ y: 100, x: 250, width: 150 }); + const notes2 = score.notes('b4/w'); + notes2[0].render_options.draw = false; + system2.addStave({ + voices: [score.voice(score.notes('b4/h, b4/h/r')), score.voice(notes2)], + }); + const system3 = vf.System({ y: 100, x: 400, width: 150 }); + system3.addStave({ + voices: [score.voice(score.notes('d5/h, d5/h/r')), score.voice(score.notes('e4/w'))], + }); + const system4 = vf.System({ y: 100, x: 550, width: 150 }); + const notes4 = score.notes('e4/q, e4/q/r, e4/h/r'); + notes4[0].render_options.draw = false; + notes4[2].render_options.draw = false; + system4.addStave({ + voices: [score.voice(notes4), score.voice(score.notes('e4/8, e4/8/r, e4/q/r, e4/h/r'))], + }); + vf.draw(); + expect(0); +} +function centerAlignedRest(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 400, 160); + const stave = f.Stave({ x: 10, y: 10, width: 350 }).addClef('treble').addTimeSignature('4/4'); + const note = f.StaveNote({ keys: ['b/4'], duration: '1r', align_center: true }); + const voice = f.Voice().setStrict(false).addTickables([note]); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +function centerAlignedRestFermata(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 400, 160); + const stave = f.Stave({ x: 10, y: 10, width: 350 }).addClef('treble').addTimeSignature('4/4'); + const note = f + .StaveNote({ keys: ['b/4'], duration: '1r', align_center: true }) + .addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_3__.Articulation('a@a').setPosition(3), 0); + const voice = f.Voice().setStrict(false).addTickables([note]); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +function centerAlignedRestAnnotation(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 400, 160); + const stave = f.Stave({ x: 10, y: 10, width: 350 }).addClef('treble').addTimeSignature('4/4'); + const note = f + .StaveNote({ keys: ['b/4'], duration: '1r', align_center: true }) + .addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_2__.Annotation('Whole measure rest').setVerticalJustification(_src_annotation__WEBPACK_IMPORTED_MODULE_2__.AnnotationVerticalJustify.TOP), 0); + const voice = f.Voice().setStrict(false).addTickables([note]); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +function centerAlignedNoteMultiModifiers(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 400, 160); + const stave = f.Stave({ x: 10, y: 10, width: 350 }).addClef('treble').addTimeSignature('4/4'); + function newFinger(num, pos) { + return new _src_frethandfinger__WEBPACK_IMPORTED_MODULE_9__.FretHandFinger(num).setPosition(pos); + } + const note = f + .StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '4', align_center: true }) + .addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_2__.Annotation('Test').setPosition(3), 0) + .addStroke(0, new _src_strokes__WEBPACK_IMPORTED_MODULE_16__.Stroke(2)) + .addModifier(new _src_accidental__WEBPACK_IMPORTED_MODULE_1__.Accidental('#'), 1) + .addModifier(newFinger('3', _src_modifier__WEBPACK_IMPORTED_MODULE_10__.Modifier.Position.LEFT), 0) + .addModifier(newFinger('2', _src_modifier__WEBPACK_IMPORTED_MODULE_10__.Modifier.Position.LEFT), 2) + .addModifier(newFinger('1', _src_modifier__WEBPACK_IMPORTED_MODULE_10__.Modifier.Position.RIGHT), 1) + .addModifier(new _src_stringnumber__WEBPACK_IMPORTED_MODULE_15__.StringNumber('4').setPosition(_src_modifier__WEBPACK_IMPORTED_MODULE_10__.Modifier.Position.BELOW), 2); + _src_dot__WEBPACK_IMPORTED_MODULE_5__.Dot.buildAndAttach([note], { all: true }); + const voice = f.Voice().setStrict(false).addTickables([note]); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +function centerAlignedMultiVoice(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 400, 160); + const stave = f.Stave({ x: 10, y: 10, width: 350 }).addClef('treble').addTimeSignature('3/8'); + // Set a custom duration of 3 / 8. + const custom_duration = new _src_fraction__WEBPACK_IMPORTED_MODULE_8__.Fraction(3, 8); + // TODO: Should the whole rest draw a ledger line that is visible to the left/right of the rest? + const notes0 = [ + f.StaveNote({ + keys: ['c/4'], + duration: '1r', + align_center: true, + duration_override: custom_duration, + }), + ]; + const createStaveNote = (struct) => f.StaveNote(struct); + const notes1 = [ + { keys: ['b/4'], duration: '8' }, + { keys: ['b/4'], duration: '8' }, + { keys: ['b/4'], duration: '8' }, + ].map(createStaveNote); + notes1[1].addModifier(f.Accidental({ type: '#' }), 0); + f.Beam({ notes: notes1 }); + const voice0 = f.Voice({ time: '3/8' }).setStrict(false).addTickables(notes0); + const voice1 = f.Voice({ time: '3/8' }).setStrict(false).addTickables(notes1); + f.Formatter().joinVoices([voice0, voice1]).formatToStave([voice0, voice1], stave); + f.draw(); + ok(true); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(StaveNoteTests); + + + +/***/ }), + +/***/ "./tests/stavetie_tests.ts": +/*!*********************************!*\ + !*** ./tests/stavetie_tests.ts ***! + \*********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveTieTests": () => (/* binding */ StaveTieTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_stem__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/stem */ "./src/stem.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// StaveTie Tests + + +const StaveTieTests = { + Start() { + QUnit.module('StaveTie'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Simple StaveTie', simple); + run('Chord StaveTie', chord); + run('Stem Up StaveTie', stemUp); + run('No End Note With Clef', noEndNote1); + run('No End Note', noEndNote2); + run('No Start Note With Clef', noStartNote1); + run('No Start Note', noStartNote2); + run('Set Direction Down', setDirectionDown); + run('Set Direction Up', setDirectionUp); + }, +}; +/** + * Used by the 7 tests below to set up the stave, easyscore, notes, voice, and to format & draw. + */ +function createTest(notesData, setupTies) { + return (options) => { + const factory = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 300); + const stave = factory.Stave(); + const score = factory.EasyScore(); + const notes = score.notes(notesData[0], notesData[1]); + const voice = score.voice(notes); + // const tickables = voice.getTickables(); // same as the notes that we passed in. + setupTies(factory, notes, stave); + factory.Formatter().joinVoices([voice]).formatToStave([voice], stave); + factory.draw(); + ok(true); + }; +} +const simple = createTest(['(cb4 e#4 a4)/2, (d4 e4 f4)', { stem: 'down' }], (f, notes) => { + f.StaveTie({ + from: notes[0], + to: notes[1], + first_indices: [0, 1], + last_indices: [0, 1], + }); +}); +const chord = createTest(['(d4 e4 f4)/2, (cn4 f#4 a4)', { stem: 'down' }], (f, notes) => { + f.StaveTie({ + from: notes[0], + to: notes[1], + first_indices: [0, 1, 2], + last_indices: [0, 1, 2], + }); +}); +const stemUp = createTest(['(d4 e4 f4)/2, (cn4 f#4 a4)', { stem: 'up' }], (f, notes) => { + f.StaveTie({ + from: notes[0], + to: notes[1], + first_indices: [0, 1, 2], + last_indices: [0, 1, 2], + }); +}); +const noEndNote1 = createTest(['(cb4 e#4 a4)/2, (d4 e4 f4)', { stem: 'down' }], (f, notes, stave) => { + stave.addEndClef('treble'); + f.StaveTie({ + from: notes[1], + first_indices: [2], + last_indices: [2], + text: 'slow.', + }); +}); +const noEndNote2 = createTest(['(cb4 e#4 a4)/2, (d4 e4 f4)', { stem: 'down' }], (f, notes) => { + f.StaveTie({ + from: notes[1], + first_indices: [2], + last_indices: [2], + text: 'slow.', + }); +}); +const noStartNote1 = createTest(['(cb4 e#4 a4)/2, (d4 e4 f4)', { stem: 'down' }], (f, notes, stave) => { + stave.addClef('treble'); + f.StaveTie({ + to: notes[0], + first_indices: [2], + last_indices: [2], + text: 'H', + }); +}); +const noStartNote2 = createTest(['(cb4 e#4 a4)/2, (d4 e4 f4)', { stem: 'down' }], (f, notes) => { + f.StaveTie({ + to: notes[0], + first_indices: [2], + last_indices: [2], + text: 'H', + }); +}); +const setDirectionDown = createTest(['(cb4 e#4 a4)/2, (d4 e4 f4)', { stem: 'down' }], (f, notes) => { + f.StaveTie({ + from: notes[0], + to: notes[1], + first_indices: [0, 1], + last_indices: [0, 1], + options: { direction: _src_stem__WEBPACK_IMPORTED_MODULE_1__.Stem.DOWN }, + }); +}); +const setDirectionUp = createTest(['(cb4 e#4 a4)/2, (d4 e4 f4)', { stem: 'down' }], (f, notes) => { + f.StaveTie({ + from: notes[0], + to: notes[1], + first_indices: [0, 1], + last_indices: [0, 1], + options: { direction: _src_stem__WEBPACK_IMPORTED_MODULE_1__.Stem.UP }, + }); +}); +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(StaveTieTests); + + + +/***/ }), + +/***/ "./tests/stringnumber_tests.ts": +/*!*************************************!*\ + !*** ./tests/stringnumber_tests.ts ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StringNumberTests": () => (/* binding */ StringNumberTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/glyph */ "./src/glyph.ts"); +/* harmony import */ var _src_renderer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/renderer */ "./src/renderer.ts"); +/* harmony import */ var _src_stave__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/stave */ "./src/stave.ts"); +/* harmony import */ var _src_stavebarline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/stavebarline */ "./src/stavebarline.ts"); +/* harmony import */ var _src_strokes__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/strokes */ "./src/strokes.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// StringNumber Tests + + + + + + +const StringNumberTests = { + Start() { + QUnit.module('StringNumber'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('String Number In Notation', drawMultipleMeasures); + run('String Number In Notation - no circle', drawMultipleMeasures, { drawCircle: false }); + run('Fret Hand Finger In Notation', drawFretHandFingers); + run('Multi Voice With Strokes, String & Finger Numbers', multi); + run('Complex Measure With String & Finger Numbers', drawAccidentals); + }, +}; +function drawMultipleMeasures(options) { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y; + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 775, 200); + const score = f.EasyScore(); + // bar 1 + const stave1 = f.Stave({ width: 300 }).setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.DOUBLE).addClef('treble'); + const notes1 = score.notes('(c4 e4 g4)/4., (c5 e5 g5)/8, (c4 f4 g4)/4, (c4 f4 g4)/4', { stem: 'down' }); + notes1[0] + .addModifier(f.StringNumber({ number: '5', position: 'right' }, (_a = options.params) === null || _a === void 0 ? void 0 : _a.drawCircle), 0) + .addModifier(f.StringNumber({ number: '4', position: 'left' }, (_b = options.params) === null || _b === void 0 ? void 0 : _b.drawCircle), 1) + .addModifier(f.StringNumber({ number: '3', position: 'right' }, (_c = options.params) === null || _c === void 0 ? void 0 : _c.drawCircle), 2); + notes1[1] + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.StringNumber({ number: '5', position: 'below' }, (_d = options.params) === null || _d === void 0 ? void 0 : _d.drawCircle), 0) + .addModifier(f.Accidental({ type: '#' }).setAsCautionary(), 1) + .addModifier(f + .StringNumber({ number: '3', position: 'above' }, (_e = options.params) === null || _e === void 0 ? void 0 : _e.drawCircle) + .setLastNote(notes1[3]) + .setLineEndType(_src_renderer__WEBPACK_IMPORTED_MODULE_2__.Renderer.LineEndType.DOWN), 2); + notes1[2] + .addModifier(f.StringNumber({ number: '5', position: 'left' }, (_f = options.params) === null || _f === void 0 ? void 0 : _f.drawCircle), 0) + .addModifier(f.StringNumber({ number: '3', position: 'left' }, (_g = options.params) === null || _g === void 0 ? void 0 : _g.drawCircle), 2) + .addModifier(f.Accidental({ type: '#' }), 1); + notes1[3] + .addModifier(f.StringNumber({ number: '5', position: 'right' }, (_h = options.params) === null || _h === void 0 ? void 0 : _h.drawCircle).setOffsetY(7), 0) + .addModifier(f.StringNumber({ number: '4', position: 'right' }, (_j = options.params) === null || _j === void 0 ? void 0 : _j.drawCircle).setOffsetY(6), 1) + .addModifier(f.StringNumber({ number: '3', position: 'right' }, (_k = options.params) === null || _k === void 0 ? void 0 : _k.drawCircle).setOffsetY(-6), 2); + const voice1 = score.voice(notes1); + f.Formatter().joinVoices([voice1]).formatToStave([voice1], stave1); + // bar 2 - juxtaposing second bar next to first bar + const stave2 = f + .Stave({ x: stave1.getWidth() + stave1.getX(), y: stave1.getY(), width: 300 }) + .setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.DOUBLE); + const notes2 = score.notes('(c4 e4 g4)/4, (c5 e5 g5), (c4 f4 g4), (c4 f4 g4)', { stem: 'up' }); + notes2[0] + .addModifier(f.StringNumber({ number: '5', position: 'right' }, (_l = options.params) === null || _l === void 0 ? void 0 : _l.drawCircle), 0) + .addModifier(f.StringNumber({ number: '4', position: 'left' }, (_m = options.params) === null || _m === void 0 ? void 0 : _m.drawCircle), 1) + .addModifier(f.StringNumber({ number: '3', position: 'right' }, (_o = options.params) === null || _o === void 0 ? void 0 : _o.drawCircle), 2); + notes2[1] + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.StringNumber({ number: '5', position: 'below' }, (_p = options.params) === null || _p === void 0 ? void 0 : _p.drawCircle), 0) + .addModifier(f.Accidental({ type: '#' }), 1) + .addModifier(f + .StringNumber({ number: '3', position: 'above' }, (_q = options.params) === null || _q === void 0 ? void 0 : _q.drawCircle) + .setLastNote(notes2[3]) + .setDashed(false), 2); + notes2[2] + .addModifier(f.StringNumber({ number: '3', position: 'left' }, (_r = options.params) === null || _r === void 0 ? void 0 : _r.drawCircle), 2) + .addModifier(f.Accidental({ type: '#' }), 1); + notes2[3] + .addModifier(f.StringNumber({ number: '5', position: 'right' }, (_s = options.params) === null || _s === void 0 ? void 0 : _s.drawCircle).setOffsetY(7), 0) + .addModifier(f.StringNumber({ number: '4', position: 'right' }, (_t = options.params) === null || _t === void 0 ? void 0 : _t.drawCircle).setOffsetY(6), 1) + .addModifier(f.StringNumber({ number: '3', position: 'right' }, (_u = options.params) === null || _u === void 0 ? void 0 : _u.drawCircle).setOffsetY(-6), 2); + const voice2 = score.voice(notes2); + f.Formatter().joinVoices([voice2]).formatToStave([voice2], stave2); + // bar 3 - juxtaposing third bar next to second bar + const stave3 = f + .Stave({ x: stave2.getWidth() + stave2.getX(), y: stave2.getY(), width: 150 }) + .setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.END); + const notesBar3 = score.notes('(c4 e4 g4 a4)/1.'); + notesBar3[0] + .addModifier(f.StringNumber({ number: '5', position: 'below' }, (_v = options.params) === null || _v === void 0 ? void 0 : _v.drawCircle), 0) + .addModifier(f.StringNumber({ number: '4', position: 'right' }, (_w = options.params) === null || _w === void 0 ? void 0 : _w.drawCircle), 1) + .addModifier(f.StringNumber({ number: '3', position: 'left' }, (_x = options.params) === null || _x === void 0 ? void 0 : _x.drawCircle), 2) + .addModifier(f.StringNumber({ number: '2', position: 'above' }, (_y = options.params) === null || _y === void 0 ? void 0 : _y.drawCircle), 3); + const voice3 = score.voice(notesBar3, { time: '6/4' }); + f.Formatter().joinVoices([voice3]).formatToStave([voice3], stave3); + f.draw(); + ok(true, 'String Number'); +} +function drawFretHandFingers(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 725, 200); + const score = f.EasyScore(); + // bar 1 + const stave1 = f.Stave({ width: 350 }).setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.DOUBLE).addClef('treble'); + const notes1 = score.notes('(c4 e4 g4)/4, (c5 e5 g5), (c4 f4 g4), (c4 f4 g4)', { stem: 'down' }); + notes1[0] + .addModifier(f.Fingering({ number: '3', position: 'left' }), 0) + .addModifier(f.Fingering({ number: '2', position: 'left' }), 1) + .addModifier(f.Fingering({ number: '0', position: 'left' }), 2); + notes1[1] + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.Fingering({ number: '3', position: 'left' }), 0) + .addModifier(f.Fingering({ number: '2', position: 'left' }), 1) + .addModifier(f.Accidental({ type: '#' }), 1) + .addModifier(f.Fingering({ number: '0', position: 'left' }), 2); + notes1[2] + .addModifier(f.Fingering({ number: '3', position: 'below' }), 0) + .addModifier(f.Fingering({ number: '4', position: 'left' }), 1) + .addModifier(f.StringNumber({ number: '4', position: 'left' }), 1) + .addModifier(f.Fingering({ number: '0', position: 'above' }), 2) + .addModifier(f.Accidental({ type: '#' }), 1); + notes1[3] + .addModifier(f.Fingering({ number: '3', position: 'right' }), 0) + .addModifier(f.StringNumber({ number: '5', position: 'right' }).setOffsetY(7), 0) + .addModifier(f.Fingering({ number: '4', position: 'right' }), 1) + .addModifier(f.StringNumber({ number: '4', position: 'right' }).setOffsetY(6), 1) + .addModifier(f.Fingering({ number: '0', position: 'right' }).setOffsetY(-5), 2) + .addModifier(f.StringNumber({ number: '3', position: 'right' }).setOffsetY(-6), 2); + const voice1 = score.voice(notes1); + f.Formatter().joinVoices([voice1]).formatToStave([voice1], stave1); + // bar 2 - juxtaposing second bar next to first bar + const stave2 = f + .Stave({ x: stave1.getWidth() + stave1.getX(), y: stave1.getY(), width: 350 }) + .setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.END); + const notes2 = score.notes('(c4 e4 g4)/4., (c5 e5 g5)/8, (c4 f4 g4)/8, (c4 f4 g4)/4.[stem="down"]', { + stem: 'up', + }); + notes2[0] + .addModifier(f.Fingering({ number: '3', position: 'right' }), 0) + .addModifier(f.Fingering({ number: '2', position: 'left' }), 1) + .addModifier(f.StringNumber({ number: '4', position: 'right' }), 1) + .addModifier(f.Fingering({ number: '0', position: 'above' }), 2); + notes2[1] + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.Fingering({ number: '3', position: 'right' }), 0) + .addModifier(f.Fingering({ number: '2', position: 'left' }), 1) + .addModifier(f.Accidental({ type: '#' }), 1) + .addModifier(f.Fingering({ number: '0', position: 'left' }), 2); + notes2[2] + .addModifier(f.Fingering({ number: '3', position: 'below' }), 0) + .addModifier(f.Fingering({ number: '2', position: 'left' }), 1) + .addModifier(f.StringNumber({ number: '4', position: 'left' }), 1) + .addModifier(f.Fingering({ number: '1', position: 'right' }), 2) + .addModifier(f.Accidental({ type: '#' }), 2); + notes2[3] + .addModifier(f.Fingering({ number: '3', position: 'right' }), 0) + .addModifier(f.StringNumber({ number: '5', position: 'right' }).setOffsetY(7), 0) + .addModifier(f.Fingering({ number: '4', position: 'right' }), 1) + .addModifier(f.StringNumber({ number: '4', position: 'right' }).setOffsetY(6), 1) + .addModifier(f.Fingering({ number: '1', position: 'right' }).setOffsetY(-6), 2) + .addModifier(f.StringNumber({ number: '3', position: 'right' }).setOffsetY(-6), 2); + const voice2 = score.voice(notes2); + f.Formatter().joinVoices([voice2]).formatToStave([voice2], stave2); + f.draw(); + ok(true, 'String Number'); +} +function multi(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 200); + const score = f.EasyScore(); + const stave = f.Stave(); + const notes1 = score.notes('(c4 e4 g4)/4, (a3 e4 g4), (c4 d4 a4), (c4 d4 a4)', { stem: 'up' }); + notes1[0] + .addStroke(0, new _src_strokes__WEBPACK_IMPORTED_MODULE_5__.Stroke(5)) + .addModifier(f.Fingering({ number: '3', position: 'left' }), 0) + .addModifier(f.Fingering({ number: '2', position: 'left' }), 1) + .addModifier(f.Fingering({ number: '0', position: 'left' }), 2) + .addModifier(f.StringNumber({ number: '4', position: 'left' }), 1) + .addModifier(f.StringNumber({ number: '3', position: 'above' }), 2); + notes1[1] + .addStroke(0, new _src_strokes__WEBPACK_IMPORTED_MODULE_5__.Stroke(6)) + .addModifier(f.StringNumber({ number: '4', position: 'right' }), 1) + .addModifier(f.StringNumber({ number: '3', position: 'above' }), 2) + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1) + .addModifier(f.Accidental({ type: '#' }), 2); + notes1[2] + .addStroke(0, new _src_strokes__WEBPACK_IMPORTED_MODULE_5__.Stroke(2)) + .addModifier(f.Fingering({ number: '3', position: 'left' }), 0) + .addModifier(f.Fingering({ number: '0', position: 'right' }), 1) + .addModifier(f.StringNumber({ number: '4', position: 'right' }), 1) + .addModifier(f.Fingering({ number: '1', position: 'left' }), 2) + .addModifier(f.StringNumber({ number: '3', position: 'right' }), 2); + notes1[3] + .addStroke(0, new _src_strokes__WEBPACK_IMPORTED_MODULE_5__.Stroke(1)) + .addModifier(f.StringNumber({ number: '3', position: 'left' }), 2) + .addModifier(f.StringNumber({ number: '4', position: 'right' }), 1); + const notes2 = score.notes('e3/8, e3, e3, e3, e3, e3, e3, e3', { stem: 'down' }); + notes2[0] + .addModifier(f.Fingering({ number: '0', position: 'left' }), 0) + .addModifier(f.StringNumber({ number: '6', position: 'below' }), 0); + notes2[2].addModifier(f.Accidental({ type: '#' }), 0); + notes2[4].addModifier(f.Fingering({ number: '0', position: 'left' }), 0); + // Position string number 6 beneath the strum arrow: left (15) and down (18) + notes2[4].addModifier(f.StringNumber({ number: '6', position: 'left' }).setOffsetX(15).setOffsetY(18), 0); + // Important Note: notes2 must come first, otherwise ledger lines from notes2 will be drawn on top of notes from notes1! + // BUG: VexFlow draws TWO ledger lines for middle C, because both notes1 and notes2 require the middle C ledger line. + const voices = [score.voice(notes2), score.voice(notes1)]; + f.Formatter().joinVoices(voices).formatToStave(voices, stave); + f.Beam({ notes: notes2.slice(0, 4) }); + f.Beam({ notes: notes2.slice(4, 8) }); + f.draw(); + ok(true, 'Strokes Test Multi Voice'); +} +function drawAccidentals(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 750); + const glyphScale = 39; // default font scale + const clefWidth = _src_glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.getWidth('gClef', glyphScale); // widest clef + const notes = [ + f.StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'c/5', 'e/5', 'g/5'], stem_direction: 1, duration: '4' }), + f.StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'd/5', 'e/5', 'g/5'], stem_direction: 1, duration: '4' }), + f.StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'd/5', 'e/5', 'g/5'], stem_direction: -1, duration: '4' }), + f.StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'd/5', 'e/5', 'g/5'], stem_direction: -1, duration: '4' }), + ]; + notes[0] + .addModifier(f.Fingering({ number: '3', position: 'left' }), 0) + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.Fingering({ number: '2', position: 'left' }), 1) + .addModifier(f.StringNumber({ number: '2', position: 'left' }), 1) + .addModifier(f.Accidental({ type: '#' }), 1) + .addModifier(f.Fingering({ number: '0', position: 'left' }), 2) + .addModifier(f.Accidental({ type: '#' }), 2) + .addModifier(f.Fingering({ number: '3', position: 'left' }), 3) + .addModifier(f.Accidental({ type: '#' }), 3) + .addModifier(f.Fingering({ number: '2', position: 'right' }), 4) + .addModifier(f.StringNumber({ number: '3', position: 'right' }), 4) + .addModifier(f.Accidental({ type: '#' }), 4) + .addModifier(f.Fingering({ number: '0', position: 'left' }), 5) + .addModifier(f.Accidental({ type: '#' }), 5); + notes[1] + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1) + .addModifier(f.Accidental({ type: '#' }), 2) + .addModifier(f.Accidental({ type: '#' }), 3) + .addModifier(f.Accidental({ type: '#' }), 4) + .addModifier(f.Accidental({ type: '#' }), 5); + notes[2] + .addModifier(f.Fingering({ number: '3', position: 'left' }), 0) + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.Fingering({ number: '2', position: 'left' }), 1) + .addModifier(f.StringNumber({ number: '2', position: 'left' }), 1) + .addModifier(f.Accidental({ type: '#' }), 1) + .addModifier(f.Fingering({ number: '0', position: 'left' }), 2) + .addModifier(f.Accidental({ type: '#' }), 2) + .addModifier(f.Fingering({ number: '3', position: 'left' }), 3) + .addModifier(f.Accidental({ type: '#' }), 3) + .addModifier(f.Fingering({ number: '2', position: 'right' }), 4) + .addModifier(f.StringNumber({ number: '3', position: 'right' }), 4) + .addModifier(f.Accidental({ type: '#' }), 4) + .addModifier(f.Fingering({ number: '0', position: 'left' }), 5) + .addModifier(f.Accidental({ type: '#' }), 5); + notes[3] + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1) + .addModifier(f.Accidental({ type: '#' }), 2) + .addModifier(f.Accidental({ type: '#' }), 3) + .addModifier(f.Accidental({ type: '#' }), 4) + .addModifier(f.Accidental({ type: '#' }), 5); + const voice = f.Voice().addTickables(notes); + const ctx = f.getContext(); + const formatter = f.Formatter().joinVoices([voice]); + const stavePadding = clefWidth + _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave.defaultPadding + 10; + const nwidth = Math.max(formatter.preCalculateMinTotalWidth([voice]), 490 - stavePadding); + formatter.format([voice], nwidth); + const stave = f + .Stave({ x: 0, y: 0, width: nwidth + stavePadding }) + .setContext(ctx) + .setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.BarlineType.DOUBLE) + .addClef('treble') + .draw(); + voice.draw(ctx, stave); + ok(true, 'String Number'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(StringNumberTests); + + + +/***/ }), + +/***/ "./tests/strokes_tests.ts": +/*!********************************!*\ + !*** ./tests/strokes_tests.ts ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StrokesTests": () => (/* binding */ StrokesTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/index */ "./src/index.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Strokes Tests + + +const StrokesTests = { + Start() { + QUnit.module('Strokes'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + // TODO: Rename tests by removing 'Strokes - ' since it is redundant with the module name. + // This will make flow.html easier to read. + run('Strokes - Brush/Roll/Rasquedo', brushRollRasquedo); + run('Strokes - Arpeggio directionless (without arrows)', arpeggioDirectionless); + run('Strokes - Multi Voice', multiVoice); + run('Strokes - Notation and Tab', notesWithTab); + run('Strokes - Multi-Voice Notation and Tab', multiNotationAndTab); + }, +}; +function brushRollRasquedo(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 200); + const score = f.EasyScore(); + // bar 1 + const stave1 = f.Stave({ width: 250 }).setEndBarType(_src_index__WEBPACK_IMPORTED_MODULE_1__.Barline.type.DOUBLE); + const notes1 = score.notes('(a3 e4 a4)/4, (c4 e4 g4), (c4 e4 g4), (c4 e4 g4)', { stem: 'up' }); + notes1[0].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(1)); + notes1[1] + .addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(2)) + .addModifier(f.Accidental({ type: '#' }), 1) + .addModifier(f.Accidental({ type: '#' }), 2) + .addModifier(f.Accidental({ type: '#' }), 0); + notes1[2].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(1)); + notes1[3].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(2)); + const voice1 = score.voice(notes1); + f.Formatter().joinVoices([voice1]).formatToStave([voice1], stave1); + // bar 2 + const stave2 = f + .Stave({ x: stave1.getWidth() + stave1.getX(), y: stave1.getY(), width: 300 }) + .setEndBarType(_src_index__WEBPACK_IMPORTED_MODULE_1__.Barline.type.DOUBLE); + const notes2 = score.notes('(c4 d4 g4)/4, (c4 d4 g4), (c4 d4 g4), (c4 d4 a4)', { stem: 'up' }); + notes2[0].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(3)); + notes2[1].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(4)); + notes2[2].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(5)); + notes2[3] + .addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(6)) + .addModifier(f.Accidental({ type: 'bb' }), 0) + .addModifier(f.Accidental({ type: 'bb' }), 1) + .addModifier(f.Accidental({ type: 'bb' }), 2); + const voice2 = score.voice(notes2); + f.Formatter().joinVoices([voice2]).formatToStave([voice2], stave2); + f.draw(); + ok(true, 'Brush/Roll/Rasquedo'); +} +function arpeggioDirectionless(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 700, 200); + const score = f.EasyScore(); + // bar 1 + const stave1 = f.Stave({ x: 100, width: 500 }).setEndBarType(_src_index__WEBPACK_IMPORTED_MODULE_1__.Barline.type.DOUBLE); + const notes1 = score.notes('(g4 b4 d5)/4, (g4 b4 d5 g5), (g4 b4 d5 g5), (g4 b4 d5)', { stem: 'up' }); + const graceNoteStructs = [ + { keys: ['e/4'], duration: '32' }, + { keys: ['f/4'], duration: '32' }, + { keys: ['g/4'], duration: '32' }, + ]; + const graceNotes = graceNoteStructs.map((graceNoteStruct) => f.GraceNote(graceNoteStruct)); + const graceNoteGroup = f.GraceNoteGroup({ notes: graceNotes, slur: false }); + graceNoteGroup.beamNotes(); + notes1[0].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(7)); + notes1[1] + .addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(7)) + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1) + .addModifier(f.Accidental({ type: '#' }), 2) + .addModifier(f.Accidental({ type: '#' }), 3); + notes1[2] + .addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(7)) + .addModifier(f.Accidental({ type: 'b' }), 1) + .addModifier(graceNoteGroup, 0); + notes1[3].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(7)).addModifier(f.NoteSubGroup({ + notes: [f.ClefNote({ type: 'treble', options: { size: 'default', annotation: '8va' } })], + }), 0); + const voice1 = score.voice(notes1); + f.Formatter().joinVoices([voice1]).formatToStave([voice1], stave1); + f.draw(); + ok(true, 'Arpeggio directionless (without arrows)'); +} +function multiVoice(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 500, 200); + const score = f.EasyScore(); + const stave = f.Stave(); + const notes1 = score.notes('(c4 e4 g4)/4, (c4 e4 g4), (c4 d4 a4), (c4 d4 a4)', { stem: 'up' }); + notes1[0].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(5)); + notes1[1] + .addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(6)) + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.Accidental({ type: '#' }), 2); + notes1[2].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(2)); + notes1[3].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(1)); + const notes2 = score.notes('e3/8, e3, e3, e3, e3, e3, e3, e3', { stem: 'down' }); + f.Beam({ notes: notes2.slice(0, 4) }); + f.Beam({ notes: notes2.slice(4, 8) }); + const voices = [notes1, notes2].map((notes) => score.voice(notes)); + f.Formatter().joinVoices(voices).formatToStave(voices, stave); + f.draw(); + ok(true, 'Strokes Test Multi Voice'); +} +function multiNotationAndTab(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 400, 275); + const score = f.EasyScore(); + const stave = f.Stave().addClef('treble'); + // notation upper voice notes + const notes1 = score.notes('(g4 b4 e5)/4, (g4 b4 e5), (g4 b4 e5), (g4 b4 e5)', { stem: 'up' }); + notes1[0].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(3, { all_voices: false })); + notes1[1].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(6)); + notes1[2].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(2, { all_voices: false })); + notes1[3].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(1)); + const notes2 = score.notes('g3/4, g3, g3, g3', { stem: 'down' }); + f.TabStave({ y: 100 }).addClef('tab').setNoteStartX(stave.getNoteStartX()); + // tablature upper voice notes + const tabNotes1 = [ + f.TabNote({ + positions: [ + { str: 3, fret: 0 }, + { str: 2, fret: 0 }, + { str: 1, fret: 1 }, + ], + duration: '4', + }), + f.TabNote({ + positions: [ + { str: 3, fret: 0 }, + { str: 2, fret: 0 }, + { str: 1, fret: 1 }, + ], + duration: '4', + }), + f.TabNote({ + positions: [ + { str: 3, fret: 0 }, + { str: 2, fret: 0 }, + { str: 1, fret: 1 }, + ], + duration: '4', + }), + f.TabNote({ + positions: [ + { str: 3, fret: 0 }, + { str: 2, fret: 0 }, + { str: 1, fret: 1 }, + ], + duration: '4', + }), + ]; + tabNotes1[0].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(3, { all_voices: false })); + tabNotes1[1].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(6)); + tabNotes1[2].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(2, { all_voices: false })); + tabNotes1[3].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(1)); + const tabNotes2 = [ + f.TabNote({ positions: [{ str: 6, fret: 3 }], duration: '4' }), + f.TabNote({ positions: [{ str: 6, fret: 3 }], duration: '4' }), + f.TabNote({ positions: [{ str: 6, fret: 3 }], duration: '4' }), + f.TabNote({ positions: [{ str: 6, fret: 3 }], duration: '4' }), + ]; + const voices = [notes1, notes2, tabNotes1, tabNotes2].map((notes) => score.voice(notes)); + f.Formatter().joinVoices(voices).formatToStave(voices, stave); + f.draw(); + ok(true, 'Strokes Test Notation & Tab Multi Voice'); +} +/* +function drawTabStrokes(options: TestOptions): void { + const f = VexFlowTests.makeFactory(options, 600, 200); + const stave1 = f.TabStave({ width: 250 }).setEndBarType(Barline.type.DOUBLE); + + const tabNotes1 = [ + f.TabNote({ + positions: [ + { str: 2, fret: 8 }, + { str: 3, fret: 9 }, + { str: 4, fret: 10 }, + ], + duration: '4', + }), + f.TabNote({ + positions: [ + { str: 3, fret: 7 }, + { str: 4, fret: 8 }, + { str: 5, fret: 9 }, + ], + duration: '4', + }), + f.TabNote({ + positions: [ + { str: 1, fret: 5 }, + { str: 2, fret: 6 }, + { str: 3, fret: 7 }, + { str: 4, fret: 7 }, + { str: 5, fret: 5 }, + { str: 6, fret: 5 }, + ], + duration: '4', + }), + f.TabNote({ + positions: [ + { str: 4, fret: 3 }, + { str: 5, fret: 4 }, + { str: 6, fret: 5 }, + ], + duration: '4', + }), + ]; + + tabNotes1[0].addStroke(0, new Stroke(1)); + tabNotes1[1].addStroke(0, new Stroke(2)); + tabNotes1[2].addStroke(0, new Stroke(3)); + tabNotes1[3].addStroke(0, new Stroke(4)); + + const tabVoice1 = f.Voice().addTickables(tabNotes1); + + f.Formatter().joinVoices([tabVoice1]).formatToStave([tabVoice1], stave1); + + // bar 2 + const stave2 = f.TabStave({ x: stave1.getWidth() + stave1.getX(), width: 300 }).setEndBarType(Barline.type.DOUBLE); + + const tabNotes2 = [ + f.TabNote({ + positions: [ + { str: 2, fret: 7 }, + { str: 3, fret: 8 }, + { str: 4, fret: 9 }, + ], + duration: '2', + }), + f.TabNote({ + positions: [ + { str: 1, fret: 5 }, + { str: 2, fret: 6 }, + { str: 3, fret: 7 }, + { str: 4, fret: 7 }, + { str: 5, fret: 5 }, + { str: 6, fret: 5 }, + ], + duration: '2', + }), + ]; + + tabNotes2[0].addStroke(0, new Stroke(6)); + tabNotes2[1].addStroke(0, new Stroke(5)); + + const tabVoice2 = f.Voice().addTickables(tabNotes2); + + f.Formatter().joinVoices([tabVoice2]).formatToStave([tabVoice2], stave2); + + f.draw(); + + ok(true, 'Strokes Tab test'); +} +*/ +function notesWithTab(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 500, 300); + const stave = f.Stave({ x: 15, y: 40, width: 450 }).addClef('treble'); + const notes = [ + f + .StaveNote({ keys: ['b/4', 'd/5', 'g/5'], stem_direction: -1, duration: '4' }) + .addModifier(f.Accidental({ type: 'b' }), 1) + .addModifier(f.Accidental({ type: 'b' }), 0), + f.StaveNote({ keys: ['c/5', 'd/5'], stem_direction: -1, duration: '4' }), + f.StaveNote({ keys: ['b/3', 'e/4', 'a/4', 'd/5'], stem_direction: 1, duration: '8' }), + f + .StaveNote({ keys: ['a/3', 'e/4', 'a/4', 'c/5', 'e/5', 'a/5'], stem_direction: 1, duration: '8' }) + .addModifier(f.Accidental({ type: '#' }), 3), + f.StaveNote({ keys: ['b/3', 'e/4', 'a/4', 'd/5'], stem_direction: 1, duration: '8' }), + f + .StaveNote({ keys: ['a/3', 'e/4', 'a/4', 'c/5', 'f/5', 'a/5'], stem_direction: 1, duration: '8' }) + .addModifier(f.Accidental({ type: '#' }), 3) + .addModifier(f.Accidental({ type: '#' }), 4), + ]; + const tabstave = f + .TabStave({ x: stave.getX(), y: 140, width: 450 }) + .addClef('tab') + .setNoteStartX(stave.getNoteStartX()); + const tabNotes = [ + f + .TabNote({ + positions: [ + { str: 1, fret: 3 }, + { str: 2, fret: 2 }, + { str: 3, fret: 3 }, + ], + duration: '4', + }) + .addModifier(new _src_index__WEBPACK_IMPORTED_MODULE_1__.Bend('Full'), 0), + f + .TabNote({ + positions: [ + { str: 2, fret: 3 }, + { str: 3, fret: 5 }, + ], + duration: '4', + }) + .addModifier(new _src_index__WEBPACK_IMPORTED_MODULE_1__.Bend('Unison'), 1), + f.TabNote({ + positions: [ + { str: 3, fret: 7 }, + { str: 4, fret: 7 }, + { str: 5, fret: 7 }, + { str: 6, fret: 7 }, + ], + duration: '8', + }), + f.TabNote({ + positions: [ + { str: 1, fret: 5 }, + { str: 2, fret: 5 }, + { str: 3, fret: 6 }, + { str: 4, fret: 7 }, + { str: 5, fret: 7 }, + { str: 6, fret: 5 }, + ], + duration: '8', + }), + f.TabNote({ + positions: [ + { str: 3, fret: 7 }, + { str: 4, fret: 7 }, + { str: 5, fret: 7 }, + { str: 6, fret: 7 }, + ], + duration: '8', + }), + f.TabNote({ + positions: [ + { str: 1, fret: 5 }, + { str: 2, fret: 5 }, + { str: 3, fret: 6 }, + { str: 4, fret: 7 }, + { str: 5, fret: 7 }, + { str: 6, fret: 5 }, + ], + duration: '8', + }), + ]; + notes[0].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(1)); + notes[1].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(2)); + notes[2].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(3)); + notes[3].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(4)); + notes[4].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(5)); + notes[5].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(6)); + tabNotes[0].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(1)); + tabNotes[1].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(2)); + tabNotes[2].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(3)); + tabNotes[3].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(4)); + tabNotes[4].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(5)); + tabNotes[5].addStroke(0, new _src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke(6)); + f.StaveConnector({ + top_stave: stave, + bottom_stave: tabstave, + type: 'bracket', + }); + f.StaveConnector({ + top_stave: stave, + bottom_stave: tabstave, + type: 'single', + }); + const voice = f.Voice().addTickables(notes); + const tabVoice = f.Voice().addTickables(tabNotes); + const beams = _src_index__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voice); + f.Formatter().joinVoices([voice]).joinVoices([tabVoice]).formatToStave([voice, tabVoice], stave); + f.draw(); + beams.forEach(function (beam) { + beam.setContext(f.getContext()).draw(); + }); + ok(true); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(StrokesTests); + + + +/***/ }), + +/***/ "./tests/style_tests.ts": +/*!******************************!*\ + !*** ./tests/style_tests.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StyleTests": () => (/* binding */ StyleTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_annotation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/annotation */ "./src/annotation.ts"); +/* harmony import */ var _src_articulation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/articulation */ "./src/articulation.ts"); +/* harmony import */ var _src_bend__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/bend */ "./src/bend.ts"); +/* harmony import */ var _src_formatter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/formatter */ "./src/formatter.ts"); +/* harmony import */ var _src_keysignature__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/keysignature */ "./src/keysignature.ts"); +/* harmony import */ var _src_notesubgroup__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../src/notesubgroup */ "./src/notesubgroup.ts"); +/* harmony import */ var _src_ornament__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../src/ornament */ "./src/ornament.ts"); +/* harmony import */ var _src_stavemodifier__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../src/stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _src_strokes__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../src/strokes */ "./src/strokes.ts"); +/* harmony import */ var _src_tabnote__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../src/tabnote */ "./src/tabnote.ts"); +/* harmony import */ var _src_tabstave__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../src/tabstave */ "./src/tabstave.ts"); +/* harmony import */ var _src_timesignature__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../src/timesignature */ "./src/timesignature.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Style Tests +// TODO: The .addStroke(0, new Stroke(...)) in the tab test case shows a NO GLYPH for the Petaluma font. +// TODO: Changing ctx.font seems to have no effect in the tab test case. Should it? +// Annotation sets its own font. +// TabNote sets its own font. +// Is there a way to set all the text fonts in one go? + + + + + + + + + + + + + +const StyleTests = { + Start() { + QUnit.module('Style'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Basic Style', stave); + run('TabNote modifiers Style', tab); + }, +}; +/** + * Helper function to create a ElementStyle options object of the form { fillStyle: XXX, strokeStyle: YYY }. + * Used for updating the fillStyle and optionally the strokeStyle. + */ +function FS(fillStyle, strokeStyle) { + const ret = { fillStyle }; + if (strokeStyle) { + ret.strokeStyle = strokeStyle; + } + return ret; +} +/** + * Color elements on a stave. + */ +function stave(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 150); + const stave = f.Stave({ x: 25, y: 20, width: 500 }); + // Stave modifiers test. + const keySig = new _src_keysignature__WEBPACK_IMPORTED_MODULE_5__.KeySignature('D'); + keySig.addToStave(stave); + keySig.setStyle(FS('blue')); + stave.addTimeSignature('4/4'); + const timeSig = stave.getModifiers(_src_stavemodifier__WEBPACK_IMPORTED_MODULE_8__.StaveModifierPosition.BEGIN, _src_timesignature__WEBPACK_IMPORTED_MODULE_12__.TimeSignature.CATEGORY); + timeSig[0].setStyle(FS('brown')); + const notes = [ + f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: 1, duration: '4' }) + .addModifier(f.Accidental({ type: 'b' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1), + f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: 1, duration: '4' }) + .addModifier(f.Accidental({ type: 'b' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1), + f.StaveNote({ keys: ['e/4'], stem_direction: 1, duration: '4' }), + f.StaveNote({ keys: ['f/4'], stem_direction: 1, duration: '8' }), + // voice.draw() test. + f.TextDynamics({ text: 'sfz', duration: '16' }).setStyle(FS('blue')), + // GhostNote modifiers test. + f.GhostNote({ duration: '16' }).addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('GhostNote green text').setStyle(FS('green')), 0), + ]; + const notes0 = notes[0]; + const notes1 = notes[1]; + notes0.setKeyStyle(0, FS('red')); + notes1.setKeyStyle(0, FS('red')); + // StaveNote modifiers test. + const mods1 = notes1.getModifiers(); + mods1[0].setStyle(FS('green')); + notes0.addModifier(new _src_articulation__WEBPACK_IMPORTED_MODULE_2__.Articulation('a.').setPosition(4).setStyle(FS('green')), 0); + notes0.addModifier(new _src_ornament__WEBPACK_IMPORTED_MODULE_7__.Ornament('mordent').setStyle(FS('lightgreen')), 0); + notes1.addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('blue').setStyle(FS('blue')), 0); + notes1.addModifier(new _src_notesubgroup__WEBPACK_IMPORTED_MODULE_6__.NoteSubGroup([f.ClefNote({ options: { size: 'small' } }).setStyle(FS('blue'))]), 0); + const voice = f.Voice().addTickables(notes); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Basic Style'); +} +/** + * Color elements on a guitar tab. + */ +function tab(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 140); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + ctx.font = '10pt Arial'; + const stave = new _src_tabstave__WEBPACK_IMPORTED_MODULE_11__.TabStave(10, 10, 450).addTabGlyph(); + stave.getModifiers()[2].setStyle(FS('blue')); + stave.setContext(ctx).draw(); + const tabNote = (noteStruct) => new _src_tabnote__WEBPACK_IMPORTED_MODULE_10__.TabNote(noteStruct); + const notes = [ + tabNote({ + positions: [ + { str: 2, fret: 10 }, + { str: 4, fret: 9 }, + ], + duration: 'h', + }).addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('green text').setStyle(FS('green')), 0), + tabNote({ + positions: [ + { str: 2, fret: 10 }, + { str: 4, fret: 9 }, + ], + duration: 'h', + }) + .addModifier(new _src_bend__WEBPACK_IMPORTED_MODULE_3__.Bend('Full').setStyle(FS('brown')), 0) + .addStroke(0, new _src_strokes__WEBPACK_IMPORTED_MODULE_9__.Stroke(1, { all_voices: false }).setStyle(FS('blue'))), + ]; + _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, 'TabNote Modifiers Style'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(StyleTests); + + + +/***/ }), + +/***/ "./tests/tabnote_tests.ts": +/*!********************************!*\ + !*** ./tests/tabnote_tests.ts ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TabNoteTests": () => (/* binding */ TabNoteTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_dot__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/dot */ "./src/dot.ts"); +/* harmony import */ var _src_flow__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/flow */ "./src/flow.ts"); +/* harmony import */ var _src_font__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/font */ "./src/font.ts"); +/* harmony import */ var _src_formatter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/formatter */ "./src/formatter.ts"); +/* harmony import */ var _src_stave__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/stave */ "./src/stave.ts"); +/* harmony import */ var _src_tabnote__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../src/tabnote */ "./src/tabnote.ts"); +/* harmony import */ var _src_tabstave__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../src/tabstave */ "./src/tabstave.ts"); +/* harmony import */ var _src_tickcontext__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../src/tickcontext */ "./src/tickcontext.ts"); +/* harmony import */ var _src_voice__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../src/voice */ "./src/voice.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// TabNote Tests + + + + + + + + + + +const TabNoteTests = { + Start() { + QUnit.module('TabNote'); + test('Tick', ticks); + test('TabStave Line', tabStaveLine); + test('Width', width); + test('TickContext', tickContext); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('TabNote Draw', draw); + run('TabNote Stems Up', drawStemsUp); + run('TabNote Stems Down', drawStemsDown); + run('TabNote Stems Up Through Stave', drawStemsUpThrough); + run('TabNote Stems Down Through Stave', drawStemsDownThrough); + run('TabNote Stems with Dots', drawStemsDotted); + }, +}; +function ticks() { + const BEAT = (1 * _src_flow__WEBPACK_IMPORTED_MODULE_2__.Flow.RESOLUTION) / 4; + let note = new _src_tabnote__WEBPACK_IMPORTED_MODULE_6__.TabNote({ positions: [{ str: 6, fret: 6 }], duration: '1' }); + equal(note.getTicks().value(), BEAT * 4, 'Whole note has 4 beats'); + note = new _src_tabnote__WEBPACK_IMPORTED_MODULE_6__.TabNote({ positions: [{ str: 3, fret: 4 }], duration: '4' }); + equal(note.getTicks().value(), BEAT, 'Quarter note has 1 beat'); +} +function tabStaveLine() { + const note = new _src_tabnote__WEBPACK_IMPORTED_MODULE_6__.TabNote({ + positions: [ + { str: 6, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '1', + }); + const positions = note.getPositions(); + equal(positions[0].str, 6, 'String 6, Fret 6'); + equal(positions[0].fret, 6, 'String 6, Fret 6'); + equal(positions[1].str, 4, 'String 4, Fret 5'); + equal(positions[1].fret, 5, 'String 4, Fret 5'); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_5__.Stave(10, 10, 300); + note.setStave(stave); + const ys = note.getYs(); + equal(ys.length, 2, 'Chord should be rendered on two lines'); + equal(ys[0], 100, 'Line for String 6, Fret 6'); + equal(ys[1], 80, 'Line for String 4, Fret 5'); +} +function width() { + expect(1); + const note = new _src_tabnote__WEBPACK_IMPORTED_MODULE_6__.TabNote({ + positions: [ + { str: 6, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '1', + }); + throws(() => note.getWidth(), /UnformattedNote/, 'Unformatted note should have no width'); +} +function tickContext() { + const note = new _src_tabnote__WEBPACK_IMPORTED_MODULE_6__.TabNote({ + positions: [ + { str: 6, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '1', + }); + const tickContext = new _src_tickcontext__WEBPACK_IMPORTED_MODULE_8__.TickContext().addTickable(note).preFormat().setX(10).setPadding(0); + equal(tickContext.getWidth(), 7); +} +function draw(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 600, 140); + ctx.font = '10pt Arial'; + const stave = new _src_tabstave__WEBPACK_IMPORTED_MODULE_7__.TabStave(10, 10, 550); + stave.setContext(ctx); + stave.draw(); + const notes = [ + { positions: [{ str: 6, fret: 6 }], duration: '4' }, + { + positions: [ + { str: 3, fret: 6 }, + { str: 4, fret: 25 }, + ], + duration: '4', + }, + { + positions: [ + { str: 2, fret: 'x' }, + { str: 5, fret: 15 }, + ], + duration: '4', + }, + { + positions: [ + { str: 2, fret: 'x' }, + { str: 5, fret: 5 }, + ], + duration: '4', + }, + { + positions: [ + { str: 2, fret: 10 }, + { str: 5, fret: 12 }, + ], + duration: '4', + }, + { + positions: [ + { str: 6, fret: 0 }, + { str: 5, fret: 5 }, + { str: 4, fret: 5 }, + { str: 3, fret: 4 }, + { str: 2, fret: 3 }, + { str: 1, fret: 0 }, + ], + duration: '4', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '4', + }, + ]; + // Helper function + function showNote(noteStruct, stave, ctx, x) { + const tabNote = new _src_tabnote__WEBPACK_IMPORTED_MODULE_6__.TabNote(noteStruct); + const tickContext = new _src_tickcontext__WEBPACK_IMPORTED_MODULE_8__.TickContext(); + tickContext.addTickable(tabNote).preFormat().setX(x); + tabNote.setContext(ctx).setStave(stave); + tabNote.draw(); + return tabNote; + } + for (let i = 0; i < notes.length; ++i) { + const note = notes[i]; + const tabNote = showNote(note, stave, ctx, (i + 1) * 25); + ok(tabNote.getX() > 0, 'Note ' + i + ' has X value'); + ok(tabNote.getYs().length > 0, 'Note ' + i + ' has Y values'); + } +} +function drawStemsUp(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 600, 200); + ctx.font = '10pt Arial'; + const stave = new _src_tabstave__WEBPACK_IMPORTED_MODULE_7__.TabStave(10, 30, 550); + stave.setContext(ctx); + stave.draw(); + const specs = [ + { + positions: [ + { str: 3, fret: 6 }, + { str: 4, fret: 25 }, + ], + duration: '4', + }, + { + positions: [ + { str: 2, fret: 10 }, + { str: 5, fret: 12 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '16', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '32', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '64', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '128', + }, + ]; + const notes = specs.map((struct) => { + const tabNote = new _src_tabnote__WEBPACK_IMPORTED_MODULE_6__.TabNote(struct); + tabNote.render_options.draw_stem = true; + return tabNote; + }); + const voice = new _src_voice__WEBPACK_IMPORTED_MODULE_9__.Voice(_src_flow__WEBPACK_IMPORTED_MODULE_2__.Flow.TIME4_4).setMode(_src_voice__WEBPACK_IMPORTED_MODULE_9__.VoiceMode.SOFT); + voice.addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + voice.draw(ctx, stave); + ok(true, 'TabNotes successfully drawn'); +} +function drawStemsDown(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 600, 200); + ctx.font = '10pt Arial'; + const stave = new _src_tabstave__WEBPACK_IMPORTED_MODULE_7__.TabStave(10, 10, 550); + stave.setContext(ctx); + stave.draw(); + const specs = [ + { + positions: [ + { str: 3, fret: 6 }, + { str: 4, fret: 25 }, + ], + duration: '4', + }, + { + positions: [ + { str: 2, fret: 10 }, + { str: 5, fret: 12 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '16', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '32', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '64', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '128', + }, + ]; + const notes = specs.map((struct) => { + const tabNote = new _src_tabnote__WEBPACK_IMPORTED_MODULE_6__.TabNote(struct); + tabNote.render_options.draw_stem = true; + tabNote.setStemDirection(-1); + return tabNote; + }); + const voice = new _src_voice__WEBPACK_IMPORTED_MODULE_9__.Voice(_src_flow__WEBPACK_IMPORTED_MODULE_2__.Flow.TIME4_4).setMode(_src_voice__WEBPACK_IMPORTED_MODULE_9__.VoiceMode.SOFT); + voice.addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + voice.draw(ctx, stave); + ok(true, 'All objects have been drawn'); +} +function drawStemsUpThrough(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 600, 200); + ctx.font = '10pt Arial'; + const stave = new _src_tabstave__WEBPACK_IMPORTED_MODULE_7__.TabStave(10, 30, 550); + stave.setContext(ctx); + stave.draw(); + const specs = [ + { + positions: [ + { str: 3, fret: 6 }, + { str: 4, fret: 25 }, + ], + duration: '4', + }, + { + positions: [ + { str: 2, fret: 10 }, + { str: 5, fret: 12 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '16', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '32', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '64', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '128', + }, + ]; + const notes = specs.map((struct) => { + const tabNote = new _src_tabnote__WEBPACK_IMPORTED_MODULE_6__.TabNote(struct); + tabNote.render_options.draw_stem = true; + tabNote.render_options.draw_stem_through_stave = true; + return tabNote; + }); + ctx.setFont(_src_font__WEBPACK_IMPORTED_MODULE_3__.Font.SANS_SERIF, 10, _src_font__WEBPACK_IMPORTED_MODULE_3__.FontWeight.BOLD); + const voice = new _src_voice__WEBPACK_IMPORTED_MODULE_9__.Voice(_src_flow__WEBPACK_IMPORTED_MODULE_2__.Flow.TIME4_4).setMode(_src_voice__WEBPACK_IMPORTED_MODULE_9__.VoiceMode.SOFT); + voice.addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + voice.draw(ctx, stave); + ok(true, 'TabNotes successfully drawn'); +} +function drawStemsDownThrough(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 600, 250); + ctx.font = '10pt Arial'; + const stave = new _src_tabstave__WEBPACK_IMPORTED_MODULE_7__.TabStave(10, 10, 550, { num_lines: 8 }); + stave.setContext(ctx); + stave.draw(); + const specs = [ + { + positions: [ + { str: 3, fret: 6 }, + { str: 4, fret: 25 }, + ], + duration: '4', + }, + { + positions: [ + { str: 2, fret: 10 }, + { str: 5, fret: 12 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '16', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + { str: 6, fret: 10 }, + ], + duration: '32', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '64', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 3, fret: 5 }, + { str: 5, fret: 5 }, + { str: 7, fret: 5 }, + ], + duration: '128', + }, + ]; + const notes = specs.map((struct) => { + const tabNote = new _src_tabnote__WEBPACK_IMPORTED_MODULE_6__.TabNote(struct); + tabNote.render_options.draw_stem = true; + tabNote.render_options.draw_stem_through_stave = true; + tabNote.setStemDirection(-1); + return tabNote; + }); + ctx.setFont('Arial', 10, 'bold'); + const voice = new _src_voice__WEBPACK_IMPORTED_MODULE_9__.Voice(_src_flow__WEBPACK_IMPORTED_MODULE_2__.Flow.TIME4_4).setMode(_src_voice__WEBPACK_IMPORTED_MODULE_9__.VoiceMode.SOFT); + voice.addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + voice.draw(ctx, stave); + ok(true, 'All objects have been drawn'); +} +function drawStemsDotted(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 600, 200); + ctx.font = '10pt Arial'; + const stave = new _src_tabstave__WEBPACK_IMPORTED_MODULE_7__.TabStave(10, 10, 550); + stave.setContext(ctx); + stave.draw(); + const specs = [ + { + positions: [ + { str: 3, fret: 6 }, + { str: 4, fret: 25 }, + ], + duration: '4d', + }, + { + positions: [ + { str: 2, fret: 10 }, + { str: 5, fret: 12 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '4dd', + stem_direction: -1, + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '16', + stem_direction: -1, + }, + ]; + const notes = specs.map((struct) => new _src_tabnote__WEBPACK_IMPORTED_MODULE_6__.TabNote(struct, true /* draw_stem */)); + _src_dot__WEBPACK_IMPORTED_MODULE_1__.Dot.buildAndAttach([notes[0], notes[2], notes[2]]); + const voice = new _src_voice__WEBPACK_IMPORTED_MODULE_9__.Voice(_src_flow__WEBPACK_IMPORTED_MODULE_2__.Flow.TIME4_4).setMode(_src_voice__WEBPACK_IMPORTED_MODULE_9__.VoiceMode.SOFT); + voice.addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_4__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + voice.draw(ctx, stave); + ok(true, 'TabNotes successfully drawn'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(TabNoteTests); + + + +/***/ }), + +/***/ "./tests/tabslide_tests.ts": +/*!*********************************!*\ + !*** ./tests/tabslide_tests.ts ***! + \*********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TabSlideTests": () => (/* binding */ TabSlideTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_flow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/flow */ "./src/flow.ts"); +/* harmony import */ var _src_formatter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/formatter */ "./src/formatter.ts"); +/* harmony import */ var _src_tabnote__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/tabnote */ "./src/tabnote.ts"); +/* harmony import */ var _src_tabslide__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/tabslide */ "./src/tabslide.ts"); +/* harmony import */ var _src_tabstave__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/tabstave */ "./src/tabstave.ts"); +/* harmony import */ var _src_voice__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../src/voice */ "./src/voice.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// TabSlide Tests + + + + + + + +const TabSlideTests = { + Start() { + QUnit.module('TabSlide'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Simple TabSlide', simple); + run('Slide Up', slideUp); + run('Slide Down', slideDown); + }, +}; +function tieNotes(notes, indices, stave, ctx) { + const voice = new _src_voice__WEBPACK_IMPORTED_MODULE_6__.Voice(_src_flow__WEBPACK_IMPORTED_MODULE_1__.Flow.TIME4_4); + voice.addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_2__.Formatter().joinVoices([voice]).format([voice], 100); + voice.draw(ctx, stave); + const tie = new _src_tabslide__WEBPACK_IMPORTED_MODULE_4__.TabSlide({ + first_note: notes[0], + last_note: notes[1], + first_indices: indices, + last_indices: indices, + }, _src_tabslide__WEBPACK_IMPORTED_MODULE_4__.TabSlide.SLIDE_UP); + tie.setContext(ctx); + tie.draw(); +} +function setupContext(options, width) { + // eslint-disable-next-line + const context = options.contextBuilder(options.elementId, 350, 140); + context.scale(0.9, 0.9); + context.fillStyle = '#221'; + context.strokeStyle = '#221'; + context.font = '10pt Arial'; + const stave = new _src_tabstave__WEBPACK_IMPORTED_MODULE_5__.TabStave(10, 10, width || 350).addTabGlyph().setContext(context).draw(); + return { context, stave }; +} +// Helper function to create TabNote objects. +const tabNote = (noteStruct) => new _src_tabnote__WEBPACK_IMPORTED_MODULE_3__.TabNote(noteStruct); +/** + * Test Case + */ +function simple(options, contextBuilder) { + options.contextBuilder = contextBuilder; + const { stave, context } = setupContext(options); + tieNotes([ + tabNote({ positions: [{ str: 4, fret: 4 }], duration: 'h' }), + tabNote({ positions: [{ str: 4, fret: 6 }], duration: 'h' }), + ], [0], stave, context); + ok(true, 'Simple Test'); +} +/** + * The slideUp and slideDown tests pass in a builder function: TabSlide.createSlideUp | TabSlide.createSlideDown. + */ +function multiTest(options, buildTabSlide) { + const { context, stave } = setupContext(options, 440); + const notes = [ + tabNote({ positions: [{ str: 4, fret: 4 }], duration: '8' }), + tabNote({ positions: [{ str: 4, fret: 4 }], duration: '8' }), + tabNote({ + positions: [ + { str: 4, fret: 4 }, + { str: 5, fret: 4 }, + ], + duration: '8', + }), + tabNote({ + positions: [ + { str: 4, fret: 6 }, + { str: 5, fret: 6 }, + ], + duration: '8', + }), + tabNote({ positions: [{ str: 2, fret: 14 }], duration: '8' }), + tabNote({ positions: [{ str: 2, fret: 16 }], duration: '8' }), + tabNote({ + positions: [ + { str: 2, fret: 14 }, + { str: 3, fret: 14 }, + ], + duration: '8', + }), + tabNote({ + positions: [ + { str: 2, fret: 16 }, + { str: 3, fret: 16 }, + ], + duration: '8', + }), + ]; + const voice = new _src_voice__WEBPACK_IMPORTED_MODULE_6__.Voice(_src_flow__WEBPACK_IMPORTED_MODULE_1__.Flow.TIME4_4).addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_2__.Formatter().joinVoices([voice]).format([voice], 300); + voice.draw(context, stave); + buildTabSlide({ + first_note: notes[0], + last_note: notes[1], + first_indices: [0], + last_indices: [0], + }) + .setContext(context) + .draw(); + ok(true, 'Single note'); + buildTabSlide({ + first_note: notes[2], + last_note: notes[3], + first_indices: [0, 1], + last_indices: [0, 1], + }) + .setContext(context) + .draw(); + ok(true, 'Chord'); + buildTabSlide({ + first_note: notes[4], + last_note: notes[5], + first_indices: [0], + last_indices: [0], + }) + .setContext(context) + .draw(); + ok(true, 'Single note high-fret'); + buildTabSlide({ + first_note: notes[6], + last_note: notes[7], + first_indices: [0, 1], + last_indices: [0, 1], + }) + .setContext(context) + .draw(); + ok(true, 'Chord high-fret'); +} +function slideUp(options, contextBuilder) { + options.contextBuilder = contextBuilder; + multiTest(options, _src_tabslide__WEBPACK_IMPORTED_MODULE_4__.TabSlide.createSlideUp); +} +function slideDown(options, contextBuilder) { + options.contextBuilder = contextBuilder; + multiTest(options, _src_tabslide__WEBPACK_IMPORTED_MODULE_4__.TabSlide.createSlideDown); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(TabSlideTests); + + + +/***/ }), + +/***/ "./tests/tabstave_tests.ts": +/*!*********************************!*\ + !*** ./tests/tabstave_tests.ts ***! + \*********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TabStaveTests": () => (/* binding */ TabStaveTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_tabstave__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/tabstave */ "./src/tabstave.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// TabStave Tests + + +const TabStaveTests = { + Start() { + QUnit.module('TabStave'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('TabStave Draw Test', draw); + }, +}; +function draw(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 160); + const stave = new _src_tabstave__WEBPACK_IMPORTED_MODULE_1__.TabStave(10, 10, 300); + stave.setNumLines(6); + stave.setContext(ctx); + stave.draw(); + equal(stave.getYForNote(0), 127, 'getYForNote(0)'); + equal(stave.getYForLine(5), 127, 'getYForLine(5)'); + equal(stave.getYForLine(0), 62, 'getYForLine(0) - Top Line'); + equal(stave.getYForLine(4), 114, 'getYForLine(4) - Bottom Line'); + ok(true, 'all pass'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(TabStaveTests); + + + +/***/ }), + +/***/ "./tests/tabtie_tests.ts": +/*!*******************************!*\ + !*** ./tests/tabtie_tests.ts ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TabTieTests": () => (/* binding */ TabTieTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_annotation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/annotation */ "./src/annotation.ts"); +/* harmony import */ var _src_flow__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/flow */ "./src/flow.ts"); +/* harmony import */ var _src_formatter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/formatter */ "./src/formatter.ts"); +/* harmony import */ var _src_tabnote__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/tabnote */ "./src/tabnote.ts"); +/* harmony import */ var _src_tabstave__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/tabstave */ "./src/tabstave.ts"); +/* harmony import */ var _src_tabtie__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../src/tabtie */ "./src/tabtie.ts"); +/* harmony import */ var _src_voice__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../src/voice */ "./src/voice.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// TabTie Tests + + + + + + + + +const TabTieTests = { + Start() { + QUnit.module('TabTie'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Simple TabTie', simple); + run('Hammerons', simpleHammerOn); + run('Pulloffs', simplePullOff); + run('Tapping', tap); + run('Continuous', continuous); + }, +}; +/** + * Helper function to create TabNote objects. + */ +const tabNote = (noteStruct) => new _src_tabnote__WEBPACK_IMPORTED_MODULE_4__.TabNote(noteStruct); +/** + * Helper function to create a RenderContext and TabStave. + */ +function setupContext(options, w = 0, h = 0) { + // eslint-disable-next-line + const context = options.contextBuilder(options.elementId, w || 350, h || 160); + context.fillStyle = '#221'; + context.strokeStyle = '#221'; + context.setFont('Arial', _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.Font.size); + const stave = new _src_tabstave__WEBPACK_IMPORTED_MODULE_5__.TabStave(10, 10, w || 350).addTabGlyph().setContext(context).draw(); + return { context, stave }; +} +/** + * Helper function to create the TabTie between two Note objects. + */ +function tieNotes(notes, indices, stave, ctx, text) { + const voice = new _src_voice__WEBPACK_IMPORTED_MODULE_7__.Voice(_src_flow__WEBPACK_IMPORTED_MODULE_2__.Flow.TIME4_4); + voice.addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_3__.Formatter().joinVoices([voice]).format([voice], 100); + voice.draw(ctx, stave); + const tie = new _src_tabtie__WEBPACK_IMPORTED_MODULE_6__.TabTie({ + first_note: notes[0], + last_note: notes[1], + first_indices: indices, + last_indices: indices, + }, text !== null && text !== void 0 ? text : 'Annotation'); + tie.setContext(ctx); + tie.draw(); +} +/** + * Two notes on string 4 with a tie drawn between them. + */ +function simple(options, contextBuilder) { + options.contextBuilder = contextBuilder; + const { context, stave } = setupContext(options); + const note1 = tabNote({ positions: [{ str: 4, fret: 4 }], duration: 'h' }); + const note2 = tabNote({ positions: [{ str: 4, fret: 6 }], duration: 'h' }); + tieNotes([note1, note2], [0], stave, context); + ok(true, 'Simple Test'); +} +function simpleHammerOn(options, contextBuilder) { + options.contextBuilder = contextBuilder; + multiTest(options, _src_tabtie__WEBPACK_IMPORTED_MODULE_6__.TabTie.createHammeron); +} +function simplePullOff(options, contextBuilder) { + options.contextBuilder = contextBuilder; + multiTest(options, _src_tabtie__WEBPACK_IMPORTED_MODULE_6__.TabTie.createPulloff); +} +/** + * Helper function for the two test cases above (simpleHammerOn and simplePullOff). + */ +function multiTest(options, createTabTie) { + const { context, stave } = setupContext(options, 440, 140); + const notes = [ + tabNote({ positions: [{ str: 4, fret: 4 }], duration: '8' }), + tabNote({ positions: [{ str: 4, fret: 4 }], duration: '8' }), + tabNote({ + positions: [ + { str: 4, fret: 4 }, + { str: 5, fret: 4 }, + ], + duration: '8', + }), + tabNote({ + positions: [ + { str: 4, fret: 6 }, + { str: 5, fret: 6 }, + ], + duration: '8', + }), + tabNote({ positions: [{ str: 2, fret: 14 }], duration: '8' }), + tabNote({ positions: [{ str: 2, fret: 16 }], duration: '8' }), + tabNote({ + positions: [ + { str: 2, fret: 14 }, + { str: 3, fret: 14 }, + ], + duration: '8', + }), + tabNote({ + positions: [ + { str: 2, fret: 16 }, + { str: 3, fret: 16 }, + ], + duration: '8', + }), + ]; + const voice = new _src_voice__WEBPACK_IMPORTED_MODULE_7__.Voice(_src_flow__WEBPACK_IMPORTED_MODULE_2__.Flow.TIME4_4).addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_3__.Formatter().joinVoices([voice]).format([voice], 300); + voice.draw(context, stave); + createTabTie({ + first_note: notes[0], + last_note: notes[1], + first_indices: [0], + last_indices: [0], + }) + .setContext(context) + .draw(); + ok(true, 'Single note'); + createTabTie({ + first_note: notes[2], + last_note: notes[3], + first_indices: [0, 1], + last_indices: [0, 1], + }) + .setContext(context) + .draw(); + ok(true, 'Chord'); + createTabTie({ + first_note: notes[4], + last_note: notes[5], + first_indices: [0], + last_indices: [0], + }) + .setContext(context) + .draw(); + ok(true, 'Single note high-fret'); + createTabTie({ + first_note: notes[6], + last_note: notes[7], + first_indices: [0, 1], + last_indices: [0, 1], + }) + .setContext(context) + .draw(); + ok(true, 'Chord high-fret'); +} +function tap(options, contextBuilder) { + options.contextBuilder = contextBuilder; + const { context, stave } = setupContext(options); + const note1 = tabNote({ positions: [{ str: 4, fret: 12 }], duration: 'h' }).addModifier(new _src_annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation('T'), 0); + const note2 = tabNote({ positions: [{ str: 4, fret: 10 }], duration: 'h' }); + tieNotes([note1, note2], [0], stave, context, 'P'); + ok(true, 'Tapping Test'); +} +function continuous(options, contextBuilder) { + options.contextBuilder = contextBuilder; + const { context, stave } = setupContext(options, 440, 140); + const notes = [ + tabNote({ positions: [{ str: 4, fret: 4 }], duration: 'q' }), + tabNote({ positions: [{ str: 4, fret: 5 }], duration: 'q' }), + tabNote({ positions: [{ str: 4, fret: 6 }], duration: 'h' }), + ]; + const voice = new _src_voice__WEBPACK_IMPORTED_MODULE_7__.Voice(_src_flow__WEBPACK_IMPORTED_MODULE_2__.Flow.TIME4_4).addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_3__.Formatter().joinVoices([voice]).format([voice], 300); + voice.draw(context, stave); + _src_tabtie__WEBPACK_IMPORTED_MODULE_6__.TabTie.createHammeron({ + first_note: notes[0], + last_note: notes[1], + first_indices: [0], + last_indices: [0], + }) + .setContext(context) + .draw(); + _src_tabtie__WEBPACK_IMPORTED_MODULE_6__.TabTie.createPulloff({ + first_note: notes[1], + last_note: notes[2], + first_indices: [0], + last_indices: [0], + }) + .setContext(context) + .draw(); + ok(true, 'Continuous Hammeron'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(TabTieTests); + + + +/***/ }), + +/***/ "./tests/textbracket_tests.ts": +/*!************************************!*\ + !*** ./tests/textbracket_tests.ts ***! + \************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TextBracketTests": () => (/* binding */ TextBracketTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// TextBracket Tests + +const TextBracketTests = { + Start() { + QUnit.module('TextBracket'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Simple TextBracket', simple0); + run('TextBracket Styles', simple1); + }, +}; +function simple0(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 550); + const stave = f.Stave(); + const score = f.EasyScore(); + const notes = score.notes('c4/4, c4, c4, c4, c4', { stem: 'up' }); + const voice = score.voice(notes, { time: '5/4' }); + f.TextBracket({ + from: notes[0], + to: notes[4], + text: '15', + options: { + superscript: 'va', + position: 'top', + }, + }); + f.TextBracket({ + from: notes[0], + to: notes[4], + text: '8', + options: { + superscript: 'vb', + position: 'bottom', + line: 3, + }, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +function simple1(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 550); + const stave = f.Stave(); + const score = f.EasyScore(); + const notes = score.notes('c4/4, c4, c4, c4, c4', { stem: 'up' }); + const voice = score.voice(notes, { time: '5/4' }); + const topOctaves = [ + f.TextBracket({ + from: notes[0], + to: notes[1], + text: 'Cool notes', + options: { + superscript: '', + position: 'top', + }, + }), + f.TextBracket({ + from: notes[2], + to: notes[4], + text: 'Testing', + options: { + position: 'top', + superscript: 'superscript', + // weight & style below can be left undefined. They will fall back to the default defined in textbracket.ts. + font: { family: 'Arial', size: 15, weight: 'normal', style: 'normal' }, + }, + }), + ]; + const bottomOctaves = [ + f.TextBracket({ + from: notes[0], + to: notes[1], + text: '8', + options: { + superscript: 'vb', + position: 'bottom', + line: 3, + font: { size: 30 }, + }, + }), + f.TextBracket({ + from: notes[2], + to: notes[4], + text: 'Not cool notes', + options: { + superscript: ' super uncool', + position: 'bottom', + line: 4, + }, + }), + ]; + topOctaves[1].render_options.line_width = 2; + topOctaves[1].render_options.show_bracket = false; + bottomOctaves[0].render_options.underline_superscript = false; + bottomOctaves[0].setDashed(false); + bottomOctaves[1].render_options.bracket_height = 40; + bottomOctaves[1].setDashed(true, [2, 2]); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(TextBracketTests); + + + +/***/ }), + +/***/ "./tests/textformatter_tests.ts": +/*!**************************************!*\ + !*** ./tests/textformatter_tests.ts ***! + \**************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TextFormatterTests": () => (/* binding */ TextFormatterTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_textformatter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/textformatter */ "./src/textformatter.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// TextFormatter Tests + + +const TextFormatterTests = { + Start() { + QUnit.module('TextFormatter'); + test('Basic', basic); + }, +}; +function basic() { + var _a; + // See: src/fonts/textfonts.ts > loadTextFonts() + const registeredFamilies = _src_textformatter__WEBPACK_IMPORTED_MODULE_1__.TextFormatter.getFontFamilies(); + equal(registeredFamilies.length, 2, `There are two registered font families: 'Roboto Slab' & 'PetalumaScript'`); + // Verify the advanceWidth and other metrics by opening the font file with a glyph inspector: + // https://fontdrop.info/ + // https://opentype.js.org/glyph-inspector.html + const petalumaFormatterInfo = _src_textformatter__WEBPACK_IMPORTED_MODULE_1__.TextFormatter.getInfo('PetalumaScript'); + equal((_a = petalumaFormatterInfo === null || petalumaFormatterInfo === void 0 ? void 0 : petalumaFormatterInfo.glyphs) === null || _a === void 0 ? void 0 : _a.C.advanceWidth, 623, 'PetalumaScript advanceWidth of C character is 623.'); + const formatterForPetalumaScript = _src_textformatter__WEBPACK_IMPORTED_MODULE_1__.TextFormatter.create({ family: 'PetalumaScript', size: '100px' }); + const metricsPetalumaScriptH = formatterForPetalumaScript.getGlyphMetrics('H'); + equal(metricsPetalumaScriptH.leftSideBearing, 37); + const formatterForRobotoSlab = _src_textformatter__WEBPACK_IMPORTED_MODULE_1__.TextFormatter.create({ family: 'Roboto Slab', size: '100px', style: 'italic' }); + const metricsRobotoSlabH = formatterForRobotoSlab.getGlyphMetrics('H'); + equal(metricsRobotoSlabH.advanceWidth, 1578); + // eslint-disable-next-line + // @ts-ignore direct access to protected variable .cacheKey + equal(formatterForRobotoSlab.cacheKey, 'Roboto_Slab%75%normal%normal'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(TextFormatterTests); + + + +/***/ }), + +/***/ "./tests/textnote_tests.ts": +/*!*********************************!*\ + !*** ./tests/textnote_tests.ts ***! + \*********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TextNoteTests": () => (/* binding */ TextNoteTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_crescendo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/crescendo */ "./src/crescendo.ts"); +/* harmony import */ var _src_flow__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/flow */ "./src/flow.ts"); +/* harmony import */ var _src_font__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/font */ "./src/font.ts"); +/* harmony import */ var _src_note__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/note */ "./src/note.ts"); +/* harmony import */ var _src_stave__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/stave */ "./src/stave.ts"); +/* harmony import */ var _src_textnote__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../src/textnote */ "./src/textnote.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Text Note Tests + + + + + + + +const TextNoteTests = { + Start() { + QUnit.module('TextNote'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('TextNote Formatting', formatTextNotes); + run('TextNote Formatting 2', formatTextNotes2); + run('TextNote Superscript and Subscript', superscriptAndSubscript); + run('TextNote Formatting With Glyphs 0', formatTextGlyphs0); + run('TextNote Formatting With Glyphs 1', formatTextGlyphs1); + run('Crescendo', crescendo); + run('Text Dynamics', textDynamics); + }, +}; +function formatTextNotes(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 400, 200); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const voice1 = score.voice([ + f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: -1, duration: 'h' }) + .addModifier(f.Accidental({ type: 'b' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1), + f.StaveNote({ keys: ['d/4', 'e/4', 'f/4'], stem_direction: -1, duration: 'q' }), + f + .StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: 'q' }) + .addModifier(f.Accidental({ type: 'n' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1), + ]); + const voice2 = score.voice([ + f.TextNote({ text: 'Center Justification', duration: 'h' }).setJustification(_src_textnote__WEBPACK_IMPORTED_MODULE_6__.TextNote.Justification.CENTER), + f.TextNote({ text: 'Left Line 1', duration: 'q' }).setLine(1), + f.TextNote({ text: 'Right', duration: 'q' }).setJustification(_src_textnote__WEBPACK_IMPORTED_MODULE_6__.TextNote.Justification.RIGHT), + ]); + const formatter = f.Formatter(); + formatter.joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave); + f.draw(); + ok(true); +} +function formatTextNotes2(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 200); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const voice1 = score.voice([ + f.StaveNote({ keys: ['g/4'], stem_direction: 1, duration: '16' }), + f.StaveNote({ keys: ['g/4'], stem_direction: 1, duration: '16' }), + f.StaveNote({ keys: ['g/4'], stem_direction: 1, duration: '16' }), + f.StaveNote({ keys: ['g/5'], stem_direction: -1, duration: '16' }), + f.StaveNote({ keys: ['g/5'], stem_direction: -1, duration: '16' }), + f.StaveNote({ keys: ['g/5'], stem_direction: -1, duration: '16' }), + f.StaveNote({ keys: ['g/5', 'a/5'], stem_direction: -1, duration: '16' }), + f.StaveNote({ keys: ['g/5', 'a/5'], stem_direction: -1, duration: '16' }), + f.StaveNote({ keys: ['g/5', 'a/5'], stem_direction: -1, duration: '16' }), + f.StaveNote({ keys: ['g/4', 'a/4'], stem_direction: 1, duration: '16' }), + f.StaveNote({ keys: ['g/4', 'a/4'], stem_direction: 1, duration: '16' }), + f.StaveNote({ keys: ['g/4', 'a/4'], stem_direction: 1, duration: '16' }), + f.StaveNote({ keys: ['g/4', 'a/4'], stem_direction: 1, duration: 'q' }), + ]); + const voice2 = score.voice([ + f.TextNote({ text: 'C', duration: '16' }).setJustification(_src_textnote__WEBPACK_IMPORTED_MODULE_6__.TextNote.Justification.CENTER), + f.TextNote({ text: 'L', duration: '16' }), + f.TextNote({ text: 'R', duration: '16' }).setJustification(_src_textnote__WEBPACK_IMPORTED_MODULE_6__.TextNote.Justification.RIGHT), + f.TextNote({ text: 'C', duration: '16' }).setJustification(_src_textnote__WEBPACK_IMPORTED_MODULE_6__.TextNote.Justification.CENTER), + f.TextNote({ text: 'L', duration: '16' }), + f.TextNote({ text: 'R', duration: '16' }).setJustification(_src_textnote__WEBPACK_IMPORTED_MODULE_6__.TextNote.Justification.RIGHT), + f.TextNote({ text: 'C', duration: '16' }).setJustification(_src_textnote__WEBPACK_IMPORTED_MODULE_6__.TextNote.Justification.CENTER), + f.TextNote({ text: 'L', duration: '16' }), + f.TextNote({ text: 'R', duration: '16' }).setJustification(_src_textnote__WEBPACK_IMPORTED_MODULE_6__.TextNote.Justification.RIGHT), + f.TextNote({ text: 'C', duration: '16' }).setJustification(_src_textnote__WEBPACK_IMPORTED_MODULE_6__.TextNote.Justification.CENTER), + f.TextNote({ text: 'L', duration: '16' }), + f.TextNote({ text: 'R', duration: '16' }).setJustification(_src_textnote__WEBPACK_IMPORTED_MODULE_6__.TextNote.Justification.RIGHT), + f.TextNote({ text: 'R', duration: 'q' }).setJustification(_src_textnote__WEBPACK_IMPORTED_MODULE_6__.TextNote.Justification.RIGHT), + ]); + f.Formatter().joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave); + voice2.getTickables().forEach((note) => _src_note__WEBPACK_IMPORTED_MODULE_4__.Note.plotMetrics(f.getContext(), note, 170)); + f.draw(); + ok(true); +} +function superscriptAndSubscript(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 230); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const voice1 = score.voice([ + f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: 1, duration: 'h' }) + .addModifier(f.Accidental({ type: 'b' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1), + f.StaveNote({ keys: ['d/4', 'e/4', 'f/4'], stem_direction: 1, duration: 'q' }), + f + .StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: 1, duration: 'q' }) + .addModifier(f.Accidental({ type: 'n' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1), + ]); + const notes2 = [ + f.TextNote({ text: _src_flow__WEBPACK_IMPORTED_MODULE_2__.Flow.unicode.flat + 'I', superscript: '+5', duration: '8' }), + f.TextNote({ text: 'D' + _src_flow__WEBPACK_IMPORTED_MODULE_2__.Flow.unicode.sharp + '/F', duration: '4d', superscript: 'sus2' }), + f.TextNote({ text: 'ii', superscript: '6', subscript: '4', duration: '8' }), + f.TextNote({ text: 'C', superscript: _src_flow__WEBPACK_IMPORTED_MODULE_2__.Flow.unicode.triangle + '7', subscript: '', duration: '8' }), + f.TextNote({ text: 'vii', superscript: _src_flow__WEBPACK_IMPORTED_MODULE_2__.Flow.unicode["o-with-slash"] + '7', duration: '8' }), + f.TextNote({ text: 'V', superscript: '7', duration: '8' }), + ]; + equal(notes2[0].getText(), _src_flow__WEBPACK_IMPORTED_MODULE_2__.Flow.unicode.flat + 'I', 'TextNote.getText() return .text'); + const voice2 = score.voice(notes2); + voice2.getTickables().forEach((note) => { + const textNote = note; + textNote.setFont({ family: _src_font__WEBPACK_IMPORTED_MODULE_3__.Font.SERIF, size: 15 }); + textNote.setLine(13); + textNote.setJustification(_src_textnote__WEBPACK_IMPORTED_MODULE_6__.TextNote.Justification.LEFT); + }); + f.Formatter().joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave); + f.draw(); + ok(true); +} +function formatTextGlyphs0(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 230); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const voice1 = score.voice([ + f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: -1, duration: 'h' }) + .addModifier(f.Accidental({ type: 'b' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1), + f.StaveNote({ keys: ['d/4', 'e/4', 'f/4'], stem_direction: -1, duration: '8' }), + f.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '8' }), + f.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '8' }), + f.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '8' }), + ]); + const voice2 = score.voice([ + f.TextNote({ text: 'Center', duration: '8' }).setJustification(_src_textnote__WEBPACK_IMPORTED_MODULE_6__.TextNote.Justification.CENTER), + f.TextNote({ glyph: 'f', duration: '8' }), + f.TextNote({ glyph: 'p', duration: '8' }), + f.TextNote({ glyph: 'm', duration: '8' }), + f.TextNote({ glyph: 'z', duration: '8' }), + f.TextNote({ glyph: 'mordent_upper', duration: '16' }), + f.TextNote({ glyph: 'mordent_lower', duration: '16' }), + f.TextNote({ glyph: 'segno', duration: '8' }), + f.TextNote({ glyph: 'coda', duration: '8' }), + ]); + voice2.getTickables().forEach((n) => n.setJustification(_src_textnote__WEBPACK_IMPORTED_MODULE_6__.TextNote.Justification.CENTER)); + f.Formatter().joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave); + f.draw(); + ok(true); +} +function formatTextGlyphs1(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 230); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const voice1 = score.voice([ + f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: -1, duration: 'h' }) + .addModifier(f.Accidental({ type: 'b' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1), + f.StaveNote({ keys: ['d/4', 'e/4', 'f/4'], stem_direction: -1, duration: '8' }), + f.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '8' }), + f.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '8' }), + f.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '8' }), + ]); + const voice2 = score.voice([ + f.TextNote({ glyph: 'turn', duration: '16' }), + f.TextNote({ glyph: 'turn_inverted', duration: '16' }), + f.TextNote({ glyph: 'pedal_open', duration: '8' }).setLine(10), + f.TextNote({ glyph: 'pedal_close', duration: '8' }).setLine(10), + f.TextNote({ glyph: 'caesura_curved', duration: '8' }).setLine(3), + f.TextNote({ glyph: 'caesura_straight', duration: '8' }).setLine(3), + f.TextNote({ glyph: 'breath', duration: '8' }).setLine(2), + f.TextNote({ glyph: 'tick', duration: '8' }).setLine(3), + f.TextNote({ glyph: 'tr', duration: '8', smooth: true }).setJustification(_src_textnote__WEBPACK_IMPORTED_MODULE_6__.TextNote.Justification.CENTER), + ]); + voice2.getTickables().forEach((n) => n.setJustification(_src_textnote__WEBPACK_IMPORTED_MODULE_6__.TextNote.Justification.CENTER)); + f.Formatter().joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave); + f.draw(); + ok(true); +} +function crescendo(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 230); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const voice = score.voice([ + f.TextNote({ glyph: 'p', duration: '16' }), + new _src_crescendo__WEBPACK_IMPORTED_MODULE_1__.Crescendo({ duration: '4d' }).setLine(0).setHeight(25).setStave(stave), + f.TextNote({ glyph: 'f', duration: '16' }), + new _src_crescendo__WEBPACK_IMPORTED_MODULE_1__.Crescendo({ duration: '4' }).setLine(5).setStave(stave), + new _src_crescendo__WEBPACK_IMPORTED_MODULE_1__.Crescendo({ duration: '4' }).setLine(10).setDecrescendo(true).setHeight(5).setStave(stave), + ]); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +function textDynamics(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 230); + const score = f.EasyScore(); + const voice = score.voice([ + f.TextDynamics({ text: 'sfz', duration: '4' }), + f.TextDynamics({ text: 'rfz', duration: '4' }), + f.TextDynamics({ text: 'mp', duration: '4' }), + f.TextDynamics({ text: 'ppp', duration: '4' }), + f.TextDynamics({ text: 'fff', duration: '4' }), + f.TextDynamics({ text: 'mf', duration: '4' }), + f.TextDynamics({ text: 'sff', duration: '4' }), + ], { time: '7/4' }); + // This is refactored to use preCalculateMinWidth... to exercise + // a bug fix when textDynamic got formatted more than once. + const formatter = f.Formatter(); + formatter.joinVoices([voice]); + // const width = 250; //formatter.preCalculateMinTotalWidth([voice]); + const width = formatter.preCalculateMinTotalWidth([voice]); + formatter.format([voice]); + const stave = f.Stave({ y: 40, width: width + _src_stave__WEBPACK_IMPORTED_MODULE_5__.Stave.defaultPadding }); + stave.draw(); + voice.draw(f.getContext(), stave); + ok(true); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(TextNoteTests); + + + +/***/ }), + +/***/ "./tests/threevoice_tests.ts": +/*!***********************************!*\ + !*** ./tests/threevoice_tests.ts ***! + \***********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "ThreeVoicesTests": () => (/* binding */ ThreeVoicesTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_beam__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/beam */ "./src/beam.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Three Voices Tests - Three voices in single staff. + + +const ThreeVoicesTests = { + Start() { + // TODO: Rename the module to 'Three Voices', because we aren't really testing rests. + QUnit.module('Three Voice Rests'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Three Voices - #1', threeVoices1); + run('Three Voices - #2 Complex', threeVoices2); + run('Three Voices - #3', threeVoices3); + run('Auto Adjust Rest Positions - Two Voices', autoRestTwoVoices); + run('Auto Adjust Rest Positions - Three Voices #1', autoRestThreeVoices1); + run('Auto Adjust Rest Positions - Three Voices #2', autoRestThreeVoices2); + }, +}; +/** + * Helper for setting up the first three test cases: threeVoices1, threeVoices2, threeVoices3. + */ +function createThreeVoicesTest(noteGroup1, noteGroup2, noteGroup3, setup) { + return (options) => { + const factory = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 200); + const stave = factory.Stave().addClef('treble').addTimeSignature('4/4'); + const score = factory.EasyScore(); + // Convert each noteGroup array to StaveNote[]. + const noteGroups = [noteGroup1, noteGroup2, noteGroup3].map((args) => score.notes(...args)); + const voices = noteGroups.map((notes) => score.voice(notes)); + setup(factory, voices); + const beams = [ + _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voices[0], +1), + _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voices[1], -1), + _src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voices[2], -1), + ].reduce(_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.concat); + // Set option to position rests near the notes in each voice. + factory.Formatter().joinVoices(voices).formatToStave(voices, stave); + factory.draw(); + for (let i = 0; i < beams.length; i++) { + beams[i].setContext(factory.getContext()).draw(); + } + ok(true); + }; +} +/** + * + */ +const threeVoices1 = createThreeVoicesTest(['e5/2, e5', { stem: 'up' }], ['(d4 a4 d#5)/8, b4, (d4 a4 c5), b4, (d4 a4 c5), b4, (d4 a4 c5), b4', { stem: 'down' }], ['b3/4, e3, f3, a3', { stem: 'down' }], (f, voices) => { + voices[0].getTickables()[0].addModifier(f.Fingering({ number: '0', position: 'left' }), 0); + voices[1] + .getTickables()[0] + .addModifier(f.Fingering({ number: '0', position: 'left' }), 0) + .addModifier(f.Fingering({ number: '4', position: 'left' }), 1); +}); +/** + * Lots of beamed notes. A beam and notehead overlap. + */ +const threeVoices2 = createThreeVoicesTest(['(a4 e5)/16, e5, e5, e5, e5/8, e5, e5/2', { stem: 'up' }], ['(d4 d#5)/16, (b4 c5), d5, e5, (d4 a4 c5)/8, b4, (d4 a4 c5), b4, (d4 a4 c5), b4', { stem: 'down' }], ['b3/8, b3, e3/4, f3, a3', { stem: 'down' }], (f, voices) => { + voices[0] + .getTickables()[0] + .addModifier(f.Fingering({ number: '2', position: 'left' }), 0) + .addModifier(f.Fingering({ number: '0', position: 'above' }), 1); + voices[1] + .getTickables()[0] + .addModifier(f.Fingering({ number: '0', position: 'left' }), 0) + .addModifier(f.Fingering({ number: '4', position: 'left' }), 1); +}); +/** + * + */ +const threeVoices3 = createThreeVoicesTest(['(g4 e5)/4, e5, (g4 e5)/2', { stem: 'up' }], ['c#5/4, b4/8, b4/8/r, a4/4., g4/8', { stem: 'down' }], ['c4/4, b3, a3, g3', { stem: 'down' }], (f, voices) => { + voices[0] + .getTickables()[0] + .addModifier(f.Fingering({ number: '0', position: 'left' }), 0) + .addModifier(f.Fingering({ number: '0', position: 'left' }), 1); + voices[1].getTickables()[0].addModifier(f.Fingering({ number: '1', position: 'left' }), 0); + voices[2].getTickables()[0].addModifier(f.Fingering({ number: '3', position: 'left' }), 0); +}); +function autoRestTwoVoices(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 900, 200); + const score = f.EasyScore(); + let x = 10; + let beams = []; + function createMeasure(measureTitle, width, align_rests) { + const stave = f.Stave({ x: x, y: 50, width: width }).setBegBarType(1); + x += width; + const noteArrays = [ + score.notes('b4/8/r, e5/16, b4/r, b4/8/r, e5/16, b4/r, b4/8/r, d5/16, b4/r, e5/4', { stem: 'up' }), + score.notes('c5/16, c4, b4/r, d4, e4, f4, b4/r, g4, g4[stem="up"], a4[stem="up"], b4/r, b4[stem="up"], e4/4', { + stem: 'down', + }), + [f.TextNote({ text: measureTitle, line: -1, duration: '1', smooth: true })], + ]; + const voices = noteArrays.map((notes) => score.voice(notes)); + beams = beams.concat(_src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voices[0], 1)).concat(_src_beam__WEBPACK_IMPORTED_MODULE_1__.Beam.applyAndGetBeams(voices[1], -1)); + f.Formatter().joinVoices(voices).formatToStave(voices, stave, { align_rests }); + } + createMeasure('Default Rest Positions', 400, false); + createMeasure('Rests Repositioned To Avoid Collisions', 400, true); + f.draw(); + for (let i = 0; i < beams.length; i++) { + beams[i].setContext(f.getContext()).draw(); + } + ok(true, 'Auto Adjust Rests - Two Voices'); +} +function autoRestThreeVoices1(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 850, 200); + const score = f.EasyScore(); + let x = 10; + function createMeasure(measureTitle, width, align_rests) { + const stave = f.Stave({ x: x, y: 50, width: width }).setBegBarType(1); + const voices = [ + score.voice(score.notes('b4/4/r, e5, e5/r, e5/r, e5, e5, e5, e5/r', { stem: 'up' }), { time: '8/4' }), + score.voice(score.notes('b4/4/r, b4/r, b4/r, b4, b4/r, b4/r, b4, b4', { stem: 'down' }), { time: '8/4' }), + score.voice(score.notes('e4/4/r, e4/r, f4, b4/r, g4, c4, e4/r, c4', { stem: 'down' }), { time: '8/4' }), + score.voice([ + f.TextNote({ text: measureTitle, duration: '1', line: -1, smooth: true }), + f.TextNote({ text: '', duration: '1', line: -1, smooth: true }), + ], { time: '8/4' }), + ]; + f.Formatter().joinVoices(voices).formatToStave(voices, stave, { align_rests }); + x += width; + } + createMeasure('Default Rest Positions', 400, false); + createMeasure('Rests Repositioned To Avoid Collisions', 400, true); + f.draw(); + ok(true); +} +function autoRestThreeVoices2(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 850, 200); + const score = f.EasyScore(); + let x = 10; + function createMeasure(measureTitle, width, align_rests) { + const stave = f.Stave({ x: x, y: 50, width: width }).setBegBarType(1); + const voices = [ + score.voice(score.notes('b4/16/r, e5, e5/r, e5/r, e5, e5, e5, e5/r'), { time: '2/4' }), + score.voice(score.notes('b4/16/r, b4/r, b4/r, b4, b4/r, b4/r, b4, b4'), { time: '2/4' }), + score.voice(score.notes('e4/16/r, e4/r, f4, b4/r, g4, c4, e4/r, c4'), { time: '2/4' }), + score.voice([f.TextNote({ text: measureTitle, duration: 'h', line: -1, smooth: true })], { time: '2/4' }), + ]; + f.Formatter().joinVoices(voices).formatToStave(voices, stave, { align_rests }); + x += width; + } + createMeasure('Default Rest Positions', 400, false); + createMeasure('Rests Repositioned To Avoid Collisions', 400, true); + f.draw(); + ok(true); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(ThreeVoicesTests); + + + +/***/ }), + +/***/ "./tests/tickcontext_tests.ts": +/*!************************************!*\ + !*** ./tests/tickcontext_tests.ts ***! + \************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TickContextTests": () => (/* binding */ TickContextTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_flow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/flow */ "./src/flow.ts"); +/* harmony import */ var _src_tickcontext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/tickcontext */ "./src/tickcontext.ts"); +/* harmony import */ var _mocks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mocks */ "./tests/mocks.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// TickContext Tests + + + + +const TickContextTests = { + Start() { + QUnit.module('TickContext'); + test('Current Tick Test', currentTick); + test('Tracking Test', tracking); + }, +}; +function currentTick() { + const tc = new _src_tickcontext__WEBPACK_IMPORTED_MODULE_2__.TickContext(); + equal(tc.getCurrentTick().value(), 0, 'New tick context has no ticks'); +} +function tracking() { + const BEAT = (1 * _src_flow__WEBPACK_IMPORTED_MODULE_1__.Flow.RESOLUTION) / 4; + const tickables = [ + new _mocks__WEBPACK_IMPORTED_MODULE_3__.MockTickable().setTicks(BEAT).setWidth(10), + new _mocks__WEBPACK_IMPORTED_MODULE_3__.MockTickable().setTicks(BEAT * 2).setWidth(20), + new _mocks__WEBPACK_IMPORTED_MODULE_3__.MockTickable().setTicks(BEAT).setWidth(30), + ]; + const tc = new _src_tickcontext__WEBPACK_IMPORTED_MODULE_2__.TickContext(); + tc.setPadding(0); + tc.addTickable(tickables[0]); + equal(tc.getMaxTicks().value(), BEAT); + tc.addTickable(tickables[1]); + equal(tc.getMaxTicks().value(), BEAT * 2); + tc.addTickable(tickables[2]); + equal(tc.getMaxTicks().value(), BEAT * 2); + equal(tc.getWidth(), 0); + tc.preFormat(); + equal(tc.getWidth(), 30); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(TickContextTests); + + + +/***/ }), + +/***/ "./tests/timesignature_tests.ts": +/*!**************************************!*\ + !*** ./tests/timesignature_tests.ts ***! + \**************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TimeSignatureTests": () => (/* binding */ TimeSignatureTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_stave__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/stave */ "./src/stave.ts"); +/* harmony import */ var _src_staveconnector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/staveconnector */ "./src/staveconnector.ts"); +/* harmony import */ var _src_timesignature__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/timesignature */ "./src/timesignature.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// TimeSignature Tests + + + + +const TimeSignatureTests = { + Start() { + QUnit.module('TimeSignature'); + test('Time Signature Parser', parser); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Basic Time Signatures', basic); + run('Big Signature Test', big); + run('Additive Signature Test', additive); + run('Alternating Signature Test', alternating); + run('Interchangeable Signature Test', interchangeable); + run('Aggregate Signature Test', agregate); + run('Complex Signature Test', complex); + run('Time Signature multiple staves alignment test', multiple); + run('Time Signature Change Test', change); + }, +}; +function parser() { + const timeSig = new _src_timesignature__WEBPACK_IMPORTED_MODULE_3__.TimeSignature(); + const mustFail = ['asdf', '123/', '/10', '/', '4567', 'C+', '1+', '+1', '(3+', '+3)', '()', '(+)']; + mustFail.forEach((invalidString) => { + throws(() => timeSig.parseTimeSpec(invalidString), /BadTimeSignature/); + }); + const mustPass = ['4/4', '10/12', '1/8', '1234567890/1234567890', 'C', 'C|', '+']; + mustPass.forEach((validString) => timeSig.parseTimeSpec(validString)); + ok(true, 'all pass'); +} +function basic(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 600, 120); + new _src_stave__WEBPACK_IMPORTED_MODULE_1__.Stave(10, 10, 500) + .addTimeSignature('2/2') + .addTimeSignature('3/4') + .addTimeSignature('4/4') + .addTimeSignature('6/8') + .addTimeSignature('C') + .addTimeSignature('C|') + .addEndTimeSignature('2/2') + .addEndTimeSignature('3/4') + .addEndTimeSignature('4/4') + .addEndClef('treble') + .addEndTimeSignature('6/8') + .addEndTimeSignature('C') + .addEndTimeSignature('C|') + .setContext(ctx) + .draw(); + ok(true, 'all pass'); +} +function big(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 120); + new _src_stave__WEBPACK_IMPORTED_MODULE_1__.Stave(10, 10, 300) + .addTimeSignature('12/8') + .addTimeSignature('7/16') + .addTimeSignature('1234567/890') + .addTimeSignature('987/654321') + .setContext(ctx) + .draw(); + ok(true, 'all pass'); +} +function additive(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 120); + new _src_stave__WEBPACK_IMPORTED_MODULE_1__.Stave(10, 10, 300).addTimeSignature('2+3+2/8').setContext(ctx).draw(); + ok(true, 'all pass'); +} +function alternating(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 120); + new _src_stave__WEBPACK_IMPORTED_MODULE_1__.Stave(10, 10, 300).addTimeSignature('6/8').addTimeSignature('+').addTimeSignature('3/4').setContext(ctx).draw(); + ok(true, 'all pass'); +} +function interchangeable(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 120); + new _src_stave__WEBPACK_IMPORTED_MODULE_1__.Stave(10, 10, 300).addTimeSignature('3/4').addTimeSignature('-').addTimeSignature('2/4').setContext(ctx).draw(); + ok(true, 'all pass'); +} +function agregate(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 120); + new _src_stave__WEBPACK_IMPORTED_MODULE_1__.Stave(10, 10, 300) + .addTimeSignature('2/4') + .addTimeSignature('+') + .addTimeSignature('3/8') + .addTimeSignature('+') + .addTimeSignature('5/4') + .setContext(ctx) + .draw(); + ok(true, 'all pass'); +} +function complex(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 120); + new _src_stave__WEBPACK_IMPORTED_MODULE_1__.Stave(10, 10, 300) + .addTimeSignature('(2+3)/16') + .addTimeSignature('+') + .addTimeSignature('3/8') + .setContext(ctx) + .draw(); + ok(true, 'all pass'); +} +function multiple(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 350); + // Each StaveLineConfig object is of the form { visible: boolean }. + const stave1LineConfig = [false, false, true, false, false].map((visible) => ({ visible })); + const stave1 = new _src_stave__WEBPACK_IMPORTED_MODULE_1__.Stave(15, 0, 300) + .setConfigForLines(stave1LineConfig) + .addClef('percussion') + .addTimeSignature('4/4', 25) // passing the custom padding in pixels + .setContext(ctx) + .draw(); + const stave2 = new _src_stave__WEBPACK_IMPORTED_MODULE_1__.Stave(15, 110, 300).addClef('treble').addTimeSignature('4/4').setContext(ctx).draw(); + const stave3 = new _src_stave__WEBPACK_IMPORTED_MODULE_1__.Stave(15, 220, 300).addClef('bass').addTimeSignature('4/4').setContext(ctx).draw(); + new _src_staveconnector__WEBPACK_IMPORTED_MODULE_2__.StaveConnector(stave1, stave2).setType('single').setContext(ctx).draw(); + new _src_staveconnector__WEBPACK_IMPORTED_MODULE_2__.StaveConnector(stave2, stave3).setType('single').setContext(ctx).draw(); + new _src_staveconnector__WEBPACK_IMPORTED_MODULE_2__.StaveConnector(stave2, stave3).setType('brace').setContext(ctx).draw(); + ok(true, 'all pass'); +} +function change(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 900); + const stave = f.Stave({ x: 0, y: 0 }).addClef('treble').addTimeSignature('C|'); + const tickables = [ + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble' }), + f.TimeSigNote({ time: '3/4' }), + f.StaveNote({ keys: ['d/4'], duration: '4', clef: 'alto' }), + f.StaveNote({ keys: ['b/3'], duration: '4r', clef: 'alto' }), + f.TimeSigNote({ time: 'C' }), + f.StaveNote({ keys: ['c/3', 'e/3', 'g/3'], duration: '4', clef: 'bass' }), + f.TimeSigNote({ time: '9/8' }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble' }), + ]; + const voice = f.Voice().setStrict(false).addTickables(tickables); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'all pass'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(TimeSignatureTests); + + + +/***/ }), + +/***/ "./tests/tremolo_tests.ts": +/*!********************************!*\ + !*** ./tests/tremolo_tests.ts ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TremoloTests": () => (/* binding */ TremoloTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_stavebarline__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/stavebarline */ "./src/stavebarline.ts"); +/* harmony import */ var _src_tremolo__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/tremolo */ "./src/tremolo.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Tremolo Tests + + + +const TremoloTests = { + Start() { + QUnit.module('Tremolo'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Tremolo - Basic', tremoloBasic); + run('Tremolo - Big', tremoloBig); + }, +}; +function tremoloBasic(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 200); + const score = f.EasyScore(); + // bar 1 + const stave1 = f.Stave({ width: 250 }).setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_1__.Barline.type.DOUBLE); + const notes1 = score.notes('e4/4, e4, e4, e4', { stem: 'up' }); + notes1[0].addModifier(new _src_tremolo__WEBPACK_IMPORTED_MODULE_2__.Tremolo(3), 0); + notes1[1].addModifier(new _src_tremolo__WEBPACK_IMPORTED_MODULE_2__.Tremolo(2), 0); + notes1[2].addModifier(new _src_tremolo__WEBPACK_IMPORTED_MODULE_2__.Tremolo(1), 0); + const voice1 = score.voice(notes1); + f.Formatter().joinVoices([voice1]).formatToStave([voice1], stave1); + // bar 2 + const stave2 = f + .Stave({ x: stave1.getWidth() + stave1.getX(), y: stave1.getY(), width: 300 }) + .setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_1__.Barline.type.DOUBLE); + const notes2 = score.notes('e5/4, e5, e5, e5', { stem: 'down' }); + notes2[1].addModifier(new _src_tremolo__WEBPACK_IMPORTED_MODULE_2__.Tremolo(1), 0); + notes2[2].addModifier(new _src_tremolo__WEBPACK_IMPORTED_MODULE_2__.Tremolo(2), 0); + notes2[3].addModifier(new _src_tremolo__WEBPACK_IMPORTED_MODULE_2__.Tremolo(3), 0); + const voice2 = score.voice(notes2); + f.Formatter().joinVoices([voice2]).formatToStave([voice2], stave2); + f.draw(); + ok(true, 'Tremolo - Basic'); +} +function tremoloBig(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600, 200); + const score = f.EasyScore(); + // bar 1 + const stave1 = f.Stave({ width: 250 }).setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_1__.Barline.type.DOUBLE); + const notes1 = score.notes('e4/4, e4, e4, e4', { stem: 'up' }); + const tremolo1 = new _src_tremolo__WEBPACK_IMPORTED_MODULE_2__.Tremolo(3); + tremolo1.extra_stroke_scale = 1.7; + tremolo1.y_spacing_scale = 1.5; + const tremolo2 = new _src_tremolo__WEBPACK_IMPORTED_MODULE_2__.Tremolo(2); + tremolo2.extra_stroke_scale = 1.7; + tremolo2.y_spacing_scale = 1.5; + const tremolo3 = new _src_tremolo__WEBPACK_IMPORTED_MODULE_2__.Tremolo(1); + tremolo3.extra_stroke_scale = 1.7; + tremolo3.y_spacing_scale = 1.5; + notes1[0].addModifier(tremolo1, 0); + notes1[1].addModifier(tremolo2, 0); + notes1[2].addModifier(tremolo3, 0); + const voice1 = score.voice(notes1); + f.Formatter().joinVoices([voice1]).formatToStave([voice1], stave1); + // bar 2 + const stave2 = f + .Stave({ x: stave1.getWidth() + stave1.getX(), y: stave1.getY(), width: 300 }) + .setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_1__.Barline.type.DOUBLE); + const notes2 = score.notes('e5/4, e5, e5, e5', { stem: 'down' }); + const tremolo4 = new _src_tremolo__WEBPACK_IMPORTED_MODULE_2__.Tremolo(1); + tremolo4.extra_stroke_scale = 1.7; + tremolo4.y_spacing_scale = 1.5; + const tremolo5 = new _src_tremolo__WEBPACK_IMPORTED_MODULE_2__.Tremolo(2); + tremolo5.extra_stroke_scale = 1.7; + tremolo5.y_spacing_scale = 1.5; + const tremolo6 = new _src_tremolo__WEBPACK_IMPORTED_MODULE_2__.Tremolo(3); + tremolo6.extra_stroke_scale = 1.7; + tremolo6.y_spacing_scale = 1.5; + notes2[1].addModifier(tremolo4, 0); + notes2[2].addModifier(tremolo5, 0); + notes2[3].addModifier(tremolo6, 0); + const voice2 = score.voice(notes2); + f.Formatter().joinVoices([voice2]).formatToStave([voice2], stave2); + f.draw(); + ok(true, 'Tremolo - Big'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(TremoloTests); + + + +/***/ }), + +/***/ "./tests/tuning_tests.ts": +/*!*******************************!*\ + !*** ./tests/tuning_tests.ts ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TuningTests": () => (/* binding */ TuningTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_tuning__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/tuning */ "./src/tuning.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Tuning Tests + + +const TuningTests = { + Start() { + QUnit.module('Tuning'); + test('Standard Tuning', standard); + test('Standard Banjo Tuning', banjo); + test('Return note for fret', noteForFret); + }, +}; +/** + * Helper function to verify that the provided tuning matches a standard 6-string guitar. + */ +function checkStandard(tuning) { + throws(() => tuning.getValueForString(0), /BadArguments/, 'String 0'); + throws(() => tuning.getValueForString(9), /BadArguments/, 'String 9'); + // TODO: Tuning constructor has a bug in that the default tuning has 8 strings. + // See: 'E/5,B/4,G/4,D/4,A/3,E/3,B/2,E/2' in tuning.ts constructor. + // throws(() => tuning.getValueForString(7), /BadArguments/, 'String 7'); + // Tuning.getValueForString() returns a note number where the value 60 corresponds to middle C. + equal(tuning.getValueForString(6), 40, 'Low E string'); + equal(tuning.getValueForString(5), 45, 'A string'); + equal(tuning.getValueForString(4), 50, 'D string'); + equal(tuning.getValueForString(3), 55, 'G string'); + equal(tuning.getValueForString(2), 59, 'B string'); + equal(tuning.getValueForString(1), 64, 'High E string'); +} +/** + * Helper function to verify that the provided tuning matches a standard 5-string banjo. + */ +function checkStandardBanjo(tuning) { + throws(() => tuning.getValueForString(0), /BadArguments/, 'String 0'); + throws(() => tuning.getValueForString(6), /BadArguments/, 'String 6'); + equal(tuning.getValueForString(5), 67, 'High G string'); + equal(tuning.getValueForString(4), 50, 'D string'); + equal(tuning.getValueForString(3), 55, 'G string'); + equal(tuning.getValueForString(2), 59, 'B string'); + equal(tuning.getValueForString(1), 62, 'High D string'); +} +function standard() { + expect(16); + const tuning = new _src_tuning__WEBPACK_IMPORTED_MODULE_1__.Tuning(); + checkStandard(tuning); + // Set the tuning by specifying a name: 'standard'. + tuning.setTuning('standard'); + checkStandard(tuning); +} +function banjo() { + expect(7); + const tuning = new _src_tuning__WEBPACK_IMPORTED_MODULE_1__.Tuning(); + tuning.setTuning('standardBanjo'); + checkStandardBanjo(tuning); +} +function noteForFret() { + expect(8); + const tuning = new _src_tuning__WEBPACK_IMPORTED_MODULE_1__.Tuning('E/5,B/4,G/4,D/4,A/3,E/3'); + throws(() => tuning.getNoteForFret(-1, 1), /BadArguments/, 'Fret = -1'); + throws(() => tuning.getNoteForFret(1, -1), /BadArguments/, 'String = -1'); + equal(tuning.getNoteForFret(0, 1), 'E/5', 'High E string'); + equal(tuning.getNoteForFret(5, 1), 'A/5', 'High E string, fret 5'); + equal(tuning.getNoteForFret(0, 2), 'B/4', 'B string'); + equal(tuning.getNoteForFret(0, 3), 'G/4', 'G string'); + equal(tuning.getNoteForFret(12, 2), 'B/5', 'B string, fret 12'); + equal(tuning.getNoteForFret(0, 6), 'E/3', 'Low E string'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(TuningTests); + + + +/***/ }), + +/***/ "./tests/tuplet_tests.ts": +/*!*******************************!*\ + !*** ./tests/tuplet_tests.ts ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TupletTests": () => (/* binding */ TupletTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_dot__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/dot */ "./src/dot.ts"); +/* harmony import */ var _src_formatter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/formatter */ "./src/formatter.ts"); +/* harmony import */ var _src_stem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/stem */ "./src/stem.ts"); +/* harmony import */ var _src_tuplet__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/tuplet */ "./src/tuplet.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Tuplet Tests + + + + + +const TupletTests = { + Start() { + QUnit.module('Tuplet'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Simple Tuplet', simple); + run('Beamed Tuplet', beamed); + run('Ratioed Tuplet', ratio); + run('Bottom Tuplet', bottom); + run('Bottom Ratioed Tuplet', bottomRatio); + run('Awkward Tuplet', awkward); + run('Complex Tuplet', complex); + run('Mixed Stem Direction Tuplet', mixedTop); + run('Mixed Stem Direction Bottom Tuplet', mixedBottom); + run('Nested Tuplets', nested); + run('Single Tuplets', single); + }, +}; +// Helper Functions to set the stem direction and duration of the options objects (i.e., StaveNoteStruct) +// that are ultimately passed into Factory.StaveNote(). +// eslint-disable-next-line +const set = (key) => (value) => (object) => { + object[key] = value; + return object; +}; +const setStemDirection = set('stem_direction'); +const setStemUp = setStemDirection(_src_stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP); +const setStemDown = setStemDirection(_src_stem__WEBPACK_IMPORTED_MODULE_3__.Stem.DOWN); +const setDurationToQuarterNote = set('duration')('4'); +/** + * Simple test case with one ascending triplet and one descending triplet. + */ +function simple(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave({ x: 10, y: 10, width: 350 }).addTimeSignature('3/4'); + const notes = [ + { keys: ['g/4'], duration: '4' }, + { keys: ['a/4'], duration: '4' }, + { keys: ['b/4'], duration: '4' }, + { keys: ['b/4'], duration: '8' }, + { keys: ['a/4'], duration: '8' }, + { keys: ['g/4'], duration: '8' }, + ] + .map(setStemUp) + .map(f.StaveNote.bind(f)); + f.Tuplet({ notes: notes.slice(0, 3) }); + f.Tuplet({ notes: notes.slice(3, 6) }); + // 3/4 time + const voice = f + .Voice({ time: { num_beats: 3, beat_value: 4 } }) + .setStrict(true) + .addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_2__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Simple Test'); +} +function beamed(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave({ x: 10, y: 10, width: 350 }).addTimeSignature('3/8'); + const notes = [ + { keys: ['b/4'], duration: '16' }, + { keys: ['a/4'], duration: '16' }, + { keys: ['g/4'], duration: '16' }, + { keys: ['a/4'], duration: '8' }, + { keys: ['f/4'], duration: '8' }, + { keys: ['a/4'], duration: '8' }, + { keys: ['f/4'], duration: '8' }, + { keys: ['a/4'], duration: '8' }, + { keys: ['f/4'], duration: '8' }, + { keys: ['g/4'], duration: '8' }, + ] + .map(setStemUp) + .map(f.StaveNote.bind(f)); + f.Beam({ notes: notes.slice(0, 3) }); + f.Beam({ notes: notes.slice(3, 10) }); + f.Tuplet({ notes: notes.slice(0, 3) }); + f.Tuplet({ notes: notes.slice(3, 10) }); + // 3/8 time + const voice = f + .Voice({ time: { num_beats: 3, beat_value: 8 } }) + .setStrict(true) + .addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_2__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Beamed Test'); +} +function ratio(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave({ x: 10, y: 10, width: 350 }).addTimeSignature('4/4'); + const notes = [ + { keys: ['f/4'], duration: '4' }, + { keys: ['a/4'], duration: '4' }, + { keys: ['b/4'], duration: '4' }, + { keys: ['g/4'], duration: '8' }, + { keys: ['e/4'], duration: '8' }, + { keys: ['g/4'], duration: '8' }, + ] + .map(setStemUp) + .map(f.StaveNote.bind(f)); + f.Beam({ + notes: notes.slice(3, 6), + }); + f.Tuplet({ + notes: notes.slice(0, 3), + options: { + ratioed: true, + }, + }); + f.Tuplet({ + notes: notes.slice(3, 6), + options: { + ratioed: true, + notes_occupied: 4, + }, + }); + const voice = f.Voice().setStrict(true).addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_2__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Ratioed Test'); +} +function bottom(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 350, 160); + const stave = f.Stave({ x: 10, y: 10 }).addTimeSignature('3/4'); + const notes = [ + { keys: ['f/4'], duration: '4' }, + { keys: ['c/4'], duration: '4' }, + { keys: ['g/4'], duration: '4' }, + { keys: ['d/5'], duration: '8' }, + { keys: ['g/3'], duration: '8' }, + { keys: ['b/4'], duration: '8' }, + ] + .map(setStemDown) + .map(f.StaveNote.bind(f)); + f.Beam({ + notes: notes.slice(3, 6), + }); + f.Tuplet({ + notes: notes.slice(0, 3), + options: { location: _src_tuplet__WEBPACK_IMPORTED_MODULE_4__.Tuplet.LOCATION_BOTTOM }, + }); + f.Tuplet({ + notes: notes.slice(3, 6), + options: { location: _src_tuplet__WEBPACK_IMPORTED_MODULE_4__.Tuplet.LOCATION_BOTTOM }, + }); + const voice = f + .Voice({ time: { num_beats: 3, beat_value: 4 } }) + .setStrict(true) + .addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_2__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Bottom Test'); +} +function bottomRatio(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 350, 160); + const stave = f.Stave({ x: 10, y: 10 }).addTimeSignature('5/8'); + const notes = [ + { keys: ['f/4'], duration: '4' }, + { keys: ['c/4'], duration: '4' }, + { keys: ['d/4'], duration: '4' }, + { keys: ['d/5'], duration: '8' }, + { keys: ['g/5'], duration: '8' }, + { keys: ['b/4'], duration: '8' }, + ] + .map(setStemDown) + .map(f.StaveNote.bind(f)); + f.Beam({ + notes: notes.slice(3, 6), + }); + f.Tuplet({ + notes: notes.slice(0, 3), + options: { + location: _src_tuplet__WEBPACK_IMPORTED_MODULE_4__.Tuplet.LOCATION_BOTTOM, + ratioed: true, + }, + }); + f.Tuplet({ + notes: notes.slice(3, 6), + options: { + location: _src_tuplet__WEBPACK_IMPORTED_MODULE_4__.Tuplet.LOCATION_BOTTOM, + notes_occupied: 1, + }, + }); + const voice = f + .Voice({ time: { num_beats: 5, beat_value: 8 } }) + .setStrict(true) + .addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_2__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Bottom Ratioed Test'); +} +function awkward(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 370, 160); + const stave = f.Stave({ x: 10, y: 10 }); + const notes = [ + { keys: ['g/4'], duration: '16' }, + { keys: ['b/4'], duration: '16' }, + { keys: ['a/4'], duration: '16' }, + { keys: ['a/4'], duration: '16' }, + { keys: ['g/4'], duration: '16' }, + { keys: ['f/4'], duration: '16' }, + { keys: ['e/4'], duration: '16' }, + { keys: ['c/4'], duration: '16' }, + { keys: ['g/4'], duration: '16' }, + { keys: ['a/4'], duration: '16' }, + { keys: ['f/4'], duration: '16' }, + { keys: ['e/4'], duration: '16' }, + { keys: ['c/4'], duration: '8' }, + { keys: ['d/4'], duration: '8' }, + { keys: ['e/4'], duration: '8' }, + ] + .map(setStemUp) + .map(f.StaveNote.bind(f)); + f.Beam({ notes: notes.slice(0, 12) }); + f.Tuplet({ + notes: notes.slice(0, 12), + options: { + notes_occupied: 142, + ratioed: true, + }, + }); + f.Tuplet({ + notes: notes.slice(12, 15), + options: { + ratioed: true, + }, + }).setBracketed(true); + const voice = f.Voice().setStrict(false).addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_2__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Awkward Test'); +} +function complex(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 600); + const stave = f.Stave({ x: 10, y: 10 }).addTimeSignature('4/4'); + const notes1 = [ + { keys: ['b/4'], duration: '8d' }, + { keys: ['a/4'], duration: '16' }, + { keys: ['g/4'], duration: '8' }, + { keys: ['a/4'], duration: '16' }, + { keys: ['b/4'], duration: '16r' }, + { keys: ['g/4'], duration: '32' }, + { keys: ['f/4'], duration: '32' }, + { keys: ['g/4'], duration: '32' }, + { keys: ['f/4'], duration: '32' }, + { keys: ['a/4'], duration: '16' }, + { keys: ['f/4'], duration: '8' }, + { keys: ['b/4'], duration: '8' }, + { keys: ['a/4'], duration: '8' }, + { keys: ['g/4'], duration: '8' }, + { keys: ['b/4'], duration: '8' }, + { keys: ['a/4'], duration: '8' }, + ] + .map(setStemUp) + .map(f.StaveNote.bind(f)); + _src_dot__WEBPACK_IMPORTED_MODULE_1__.Dot.buildAndAttach([notes1[0]], { all: true }); + const notes2 = [{ keys: ['c/4'] }, { keys: ['c/4'] }, { keys: ['c/4'] }, { keys: ['c/4'] }] + .map(setDurationToQuarterNote) + .map(setStemDown) + .map(f.StaveNote.bind(f)); + f.Beam({ notes: notes1.slice(0, 3) }); + f.Beam({ notes: notes1.slice(5, 9) }); + f.Beam({ notes: notes1.slice(11, 16) }); + f.Tuplet({ + notes: notes1.slice(0, 3), + }); + f.Tuplet({ + notes: notes1.slice(3, 11), + options: { + num_notes: 7, + notes_occupied: 4, + ratioed: false, + }, + }); + f.Tuplet({ + notes: notes1.slice(11, 16), + options: { + notes_occupied: 4, + }, + }); + const voice1 = f.Voice().setStrict(true).addTickables(notes1); + const voice2 = f.Voice().setStrict(true).addTickables(notes2); + new _src_formatter__WEBPACK_IMPORTED_MODULE_2__.Formatter().joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave); + f.draw(); + ok(true, 'Complex Test'); +} +function mixedTop(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave({ x: 10, y: 10 }); + const notes = [ + { keys: ['a/4'], stem_direction: 1 }, + { keys: ['c/6'], stem_direction: -1 }, + { keys: ['a/4'], stem_direction: 1 }, + { keys: ['f/5'], stem_direction: 1 }, + { keys: ['a/4'], stem_direction: -1 }, + { keys: ['c/6'], stem_direction: -1 }, + ] + .map(setDurationToQuarterNote) + .map(f.StaveNote.bind(f)); + f.Tuplet({ + notes: notes.slice(0, 2), + options: { + notes_occupied: 3, + }, + }); + f.Tuplet({ + notes: notes.slice(2, 4), + options: { + notes_occupied: 3, + }, + }); + f.Tuplet({ + notes: notes.slice(4, 6), + options: { + notes_occupied: 3, + }, + }); + const voice = f.Voice().setStrict(false).addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_2__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Mixed Stem Direction Tuplet'); +} +function mixedBottom(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave({ x: 10, y: 10 }); + const notes = [ + { keys: ['f/3'], stem_direction: 1 }, + { keys: ['a/5'], stem_direction: -1 }, + { keys: ['a/4'], stem_direction: 1 }, + { keys: ['f/3'], stem_direction: 1 }, + { keys: ['a/4'], stem_direction: -1 }, + { keys: ['c/4'], stem_direction: -1 }, + ] + .map(setDurationToQuarterNote) + .map(f.StaveNote.bind(f)); + f.Tuplet({ + notes: notes.slice(0, 2), + options: { + notes_occupied: 3, + }, + }); + f.Tuplet({ + notes: notes.slice(2, 4), + options: { + notes_occupied: 3, + }, + }); + f.Tuplet({ + notes: notes.slice(4, 6), + options: { + notes_occupied: 3, + }, + }); + const voice = f.Voice().setStrict(false).addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_2__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Mixed Stem Direction Bottom Tuplet'); +} +function nested(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave({ x: 10, y: 10 }).addTimeSignature('4/4'); + const notes = [ + // Big triplet 1: + { keys: ['b/4'], duration: '4' }, + { keys: ['a/4'], duration: '4' }, + { keys: ['g/4'], duration: '16' }, + { keys: ['a/4'], duration: '16' }, + { keys: ['f/4'], duration: '16' }, + { keys: ['a/4'], duration: '16' }, + { keys: ['g/4'], duration: '16' }, + { keys: ['b/4'], duration: '2' }, + ] + .map(setStemUp) + .map(f.StaveNote.bind(f)); + f.Beam({ + notes: notes.slice(2, 7), + }); + f.Tuplet({ + notes: notes.slice(0, 7), + options: { + notes_occupied: 2, + num_notes: 3, + }, + }); + f.Tuplet({ + notes: notes.slice(2, 7), + options: { + notes_occupied: 4, + num_notes: 5, + }, + }); + // 4/4 time + const voice = f.Voice().setStrict(true).addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_2__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Nested Tuplets'); +} +function single(options) { + const f = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options); + const stave = f.Stave({ x: 10, y: 10 }).addTimeSignature('4/4'); + const notes = [ + // Big triplet 1: + { keys: ['c/4'], duration: '4' }, + { keys: ['d/4'], duration: '8' }, + { keys: ['e/4'], duration: '8' }, + { keys: ['f/4'], duration: '8' }, + { keys: ['g/4'], duration: '8' }, + { keys: ['a/4'], duration: '2' }, + { keys: ['b/4'], duration: '4' }, + ] + .map(setStemUp) + .map(f.StaveNote.bind(f)); + f.Beam({ + notes: notes.slice(1, 4), + }); + // big quartuplet + f.Tuplet({ + notes: notes.slice(0, -1), + options: { + num_notes: 4, + notes_occupied: 3, + ratioed: true, + bracketed: true, + }, + }); + // first singleton + f.Tuplet({ + notes: notes.slice(0, 1), + options: { + num_notes: 3, + notes_occupied: 2, + ratioed: true, + }, + }); + // eighth note triplet + f.Tuplet({ + notes: notes.slice(1, 4), + options: { + num_notes: 3, + notes_occupied: 2, + }, + }); + // second singleton + f.Tuplet({ + notes: notes.slice(4, 5), + options: { + num_notes: 3, + notes_occupied: 2, + ratioed: true, + bracketed: true, + }, + }); + // 4/4 time + const voice = f + .Voice({ time: { num_beats: 4, beat_value: 4 } }) + .setStrict(true) + .addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_2__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Nested Tuplets'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(TupletTests); + + + +/***/ }), + +/***/ "./tests/typeguard_tests.ts": +/*!**********************************!*\ + !*** ./tests/typeguard_tests.ts ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TypeGuardTests": () => (/* binding */ TypeGuardTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_canvascontext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/canvascontext */ "./src/canvascontext.ts"); +/* harmony import */ var _src_stavenote__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _src_stemmablenote__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/stemmablenote */ "./src/stemmablenote.ts"); +/* harmony import */ var _src_tabnote__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/tabnote */ "./src/tabnote.ts"); +/* harmony import */ var _src_typeguard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Ron B. Yeh +// MIT License +// +// TypeGuard Tests +// eslint-disable-next-line +// @ts-nocheck to support ES5 style class declaration in the fakeES5() test case. + + + + + + +const TypeGuardTests = { + Start() { + QUnit.module('TypeGuard'); + test('Real VexFlow Types', real); + test('Fake VexFlow Types in ES5', fakeES5); + test('Fake VexFlow Types in ES6', fakeES6); + test('Edge Case ES5/ES6', edgeCaseES5vsES6); + }, +}; +function real() { + const s = new _src_stavenote__WEBPACK_IMPORTED_MODULE_2__.StaveNote({ keys: ['c/4'], duration: 'w' }); + ok((0,_src_typeguard__WEBPACK_IMPORTED_MODULE_5__.isStaveNote)(s), 'isStaveNote helper function'); + ok((0,_src_typeguard__WEBPACK_IMPORTED_MODULE_5__.isCategory)(s, 'StaveNote'), 'Use isCategory(s, "StaveNote") directly'); + notOk((0,_src_typeguard__WEBPACK_IMPORTED_MODULE_5__.isTabNote)(s), 'isTabNote helper function. s is NOT a TabNote.'); + const t = new _src_tabnote__WEBPACK_IMPORTED_MODULE_4__.TabNote({ positions: [{ str: 2, fret: 1 }], duration: '1' }); + ok((0,_src_typeguard__WEBPACK_IMPORTED_MODULE_5__.isTabNote)(t), 'isTabNote helper function'); + notOk((0,_src_typeguard__WEBPACK_IMPORTED_MODULE_5__.isStaveNote)(t), 't is NOT a StaveNote'); + ok((0,_src_typeguard__WEBPACK_IMPORTED_MODULE_5__.isNote)(s), 'StaveNote extends StemmableNote which extends Note, so s is a Note'); + ok((0,_src_typeguard__WEBPACK_IMPORTED_MODULE_5__.isStemmableNote)(t), 'TabNote extends StemmableNote'); + ok((0,_src_typeguard__WEBPACK_IMPORTED_MODULE_5__.isNote)(t), 'TabNote extends StemmableNote which extends Note, so t is a Note'); + const canvas = document.createElement('canvas'); + canvas.width = 800; + canvas.height = 400; + const ctx = new _src_canvascontext__WEBPACK_IMPORTED_MODULE_1__.CanvasContext(canvas.getContext('2d')); + ok((0,_src_typeguard__WEBPACK_IMPORTED_MODULE_5__.isRenderContext)(ctx), 'ctx is a RenderContext'); +} +/** + * Helper function to test the fake VexFlow objects we create in fakeES5() and fakeES6(). + */ +function checkFakeObjects(fakeStemmableNote, fakeStaveNote) { + ok((0,_src_typeguard__WEBPACK_IMPORTED_MODULE_5__.isStemmableNote)(fakeStemmableNote), 'Fake StemmableNote is a StemmableNote.'); + notOk((0,_src_typeguard__WEBPACK_IMPORTED_MODULE_5__.isNote)(fakeStemmableNote), 'Fake StemmableNote is not a Note (no ancestors with the correct CATEGORY).'); + ok((0,_src_typeguard__WEBPACK_IMPORTED_MODULE_5__.isCategory)(fakeStaveNote, 'StaveNote'), 'Fake StaveNote is a StaveNote.'); + ok((0,_src_typeguard__WEBPACK_IMPORTED_MODULE_5__.isStaveNote)(fakeStaveNote), 'Fake StaveNote is a StaveNote (via helper function).'); + ok((0,_src_typeguard__WEBPACK_IMPORTED_MODULE_5__.isCategory)(fakeStaveNote, 'StemmableNote'), 'Fake StaveNote is also a StemmableNote (via inheritance).'); + notOk((0,_src_typeguard__WEBPACK_IMPORTED_MODULE_5__.isNote)(fakeStaveNote), 'Fake StaveNote is not a Note. CATEGORY does not match.'); +} +/** + * Demonstrate that an object (ES5-style) can pass the isCategory(...) test if it + * has the correct static .CATEGORY property. + */ +function fakeES5() { + function FakeStemmableNote() { + this.isFake = true; + } + FakeStemmableNote.CATEGORY = _src_stemmablenote__WEBPACK_IMPORTED_MODULE_3__.StemmableNote.CATEGORY; + function FakeStaveNote() { + FakeStemmableNote.call(this); + } + FakeStaveNote.CATEGORY = _src_stavenote__WEBPACK_IMPORTED_MODULE_2__.StaveNote.CATEGORY; + FakeStaveNote.prototype = Object.create(FakeStemmableNote.prototype); + FakeStaveNote.prototype.constructor = FakeStaveNote; + const fakeStemmableNote = new FakeStemmableNote(); + const fakeStaveNote = new FakeStaveNote(); + checkFakeObjects(fakeStemmableNote, fakeStaveNote); +} +/** + * Demonstrate that an object (ES6-style) can pass the isCategory(...) test if it + * or its ancestor has the correct static .CATEGORY property. + */ +function fakeES6() { + class FakeStemmableNote { + } + FakeStemmableNote.CATEGORY = _src_stemmablenote__WEBPACK_IMPORTED_MODULE_3__.StemmableNote.CATEGORY; + class FakeStaveNote extends FakeStemmableNote { + } + FakeStaveNote.CATEGORY = _src_stavenote__WEBPACK_IMPORTED_MODULE_2__.StaveNote.CATEGORY; + const fakeStemmableNote = new FakeStemmableNote(); + const fakeStaveNote = new FakeStaveNote(); + checkFakeObjects(fakeStemmableNote, fakeStaveNote); +} +/** + * The tsconfig.json target is ES6 (as of August 18, 2021), so isCategory() works even when the root class "extends Object". + */ +function edgeCaseES5vsES6() { + class Z extends Object { + } + class Y extends Z { + } + class X extends Y { + } + const zInstance = new Z(); + const xInstance = new X(); + ok(xInstance instanceof Object, 'es5 & es6: x IS an instanceof Object'); + // If targeting es5, these three assertions only pass if we remove "extends Object" from the class Z definition. + ok(zInstance instanceof Z, 'es6: z IS an instanceof Z'); + ok(xInstance instanceof Y, 'es6: x IS an instanceof Y'); + ok(xInstance instanceof Z, 'es6: x IS an instanceof Z'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(TypeGuardTests); + + + +/***/ }), + +/***/ "./tests/vexflow_test_helpers.ts": +/*!***************************************!*\ + !*** ./tests/vexflow_test_helpers.ts ***! + \***************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "VexFlowTests": () => (/* binding */ VexFlowTests), +/* harmony export */ "concat": () => (/* binding */ concat), +/* harmony export */ "MAJOR_KEYS": () => (/* binding */ MAJOR_KEYS), +/* harmony export */ "MINOR_KEYS": () => (/* binding */ MINOR_KEYS) +/* harmony export */ }); +/* harmony import */ var _src_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../src/index */ "./src/index.ts"); +/* harmony import */ var _src_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com/) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// VexFlow Test Support Library + + +const global = (0,_src_util__WEBPACK_IMPORTED_MODULE_1__.globalObject)(); +// Each test case will switch through the available fonts, and then restore the original font when done. +let originalFontNames; +function useTempFontStack(fontName) { + originalFontNames = _src_index__WEBPACK_IMPORTED_MODULE_0__.Flow.getMusicFont(); + _src_index__WEBPACK_IMPORTED_MODULE_0__.Flow.setMusicFont(...VexFlowTests.FONT_STACKS[fontName]); +} +function restoreOriginalFontStack() { + _src_index__WEBPACK_IMPORTED_MODULE_0__.Flow.setMusicFont(...originalFontNames); +} +// A micro util inspired by jQuery. +if (!global.$) { + // generate_png_images.js uses jsdom and does not include jQuery. + global.$ = (param) => { + let element; + if (typeof param !== 'string') { + element = param; + } + else if (param.startsWith('<')) { + // Extract the tag name: e.g.,
=> div + // Assume param.match returns something (! operator). + // eslint-disable-next-line + const tagName = param.match(/[A-Za-z]+/g)[0]; + element = document.createElement(tagName); + } + else { + element = document.querySelector(param); + } + const $element = { + // eslint-disable-next-line + get(index) { + return element; + }, + addClass(c) { + element.classList.add(c); + return $element; + }, + text(t) { + element.textContent = t; + return $element; + }, + html(h) { + if (!h) { + return element.innerHTML; + } + else { + element.innerHTML = h; + return $element; + } + }, + append(...elementsToAppend) { + elementsToAppend.forEach((e) => { + element.appendChild(e); + }); + return $element; + }, + attr(attrName, val) { + element.setAttribute(attrName, val); + return $element; + }, + }; + return $element; + }; +} +/** Allow `name` to be used inside file names. */ +function sanitizeName(name) { + return name.replace(/[^a-zA-Z0-9]/g, '_'); +} +const CANVAS_TEST_CONFIG = { + backend: _src_index__WEBPACK_IMPORTED_MODULE_0__.Renderer.Backends.CANVAS, + tagName: 'canvas', + testType: 'Canvas', + fontStacks: ['Bravura'], +}; +const SVG_TEST_CONFIG = { + backend: _src_index__WEBPACK_IMPORTED_MODULE_0__.Renderer.Backends.SVG, + tagName: 'div', + testType: 'SVG', + fontStacks: ['Bravura', 'Gonville', 'Petaluma', 'Leland'], +}; +const NODE_TEST_CONFIG = { + backend: _src_index__WEBPACK_IMPORTED_MODULE_0__.Renderer.Backends.CANVAS, + tagName: 'canvas', + testType: 'NodeCanvas', + fontStacks: ['Bravura', 'Gonville', 'Petaluma', 'Leland'], +}; +class VexFlowTests { + // Call this at the end of a `tests/xxxx_tests.ts` file to register the module. + static register(test) { + VexFlowTests.tests.push(test); + } + static parseJobOptions(runOptions) { + let { jobs, job } = runOptions || { jobs: 1, job: 0 }; + if (window) { + const { location } = window; + if (location) { + const sps = new URLSearchParams(location.search); + const jobsParam = sps.get('jobs'); + const jobParam = sps.get('job'); + if (jobsParam) { + jobs = parseInt(jobsParam, 10); + } + if (jobParam) { + job = parseInt(jobParam, 10); + } + } + } + return { + jobs, + job, + }; + } + // flow.html calls this to invoke all the tests. + static run(runOptions) { + const { jobs, job } = VexFlowTests.parseJobOptions(runOptions); + VexFlowTests.tests.forEach((test, idx) => { + if (jobs === 1 || idx % jobs === job) { + test.Start(); + } + }); + } + static set NODE_FONT_STACKS(fontStacks) { + NODE_TEST_CONFIG.fontStacks = fontStacks; + } + /** Return a unique ID for a test. */ + static generateTestID(prefix) { + return prefix + '_' + VexFlowTests.NEXT_TEST_ID++; + } + /** + * Run `func` inside a QUnit test for each of the enabled rendering backends. + * @param name + * @param testFunc + * @param params + */ + // eslint-disable-next-line + static runTests(name, testFunc, params) { + VexFlowTests.runCanvasTest(name, testFunc, params); + VexFlowTests.runSVGTest(name, testFunc, params); + VexFlowTests.runNodeTest(name, testFunc, params); + } + /** + * Append a
which contains the test case title and rendered output. + * See flow.html and flow.css. + * @param elementId + * @param testTitle + * @param tagName + */ + static createTest(elementId, testTitle, tagName, titleId = '') { + const anchorTestTitle = `${testTitle}`; + const title = $('
').addClass('name').attr('id', titleId).html(anchorTestTitle).get(0); + const vexOutput = $(`<${tagName}/>`).addClass('vex-tabdiv').attr('id', elementId).get(0); + const container = $('
').addClass('testcanvas').append(title, vexOutput).get(0); + $('#vexflow_testoutput').append(container); + return vexOutput; + } + static makeFactory(options, width = 450, height = 140) { + const { elementId, backend } = options; + return new _src_index__WEBPACK_IMPORTED_MODULE_0__.Factory({ renderer: { elementId, backend, width, height } }); + } + // eslint-disable-next-line + static runCanvasTest(name, testFunc, params) { + if (VexFlowTests.RUN_CANVAS_TESTS) { + const helper = null; + VexFlowTests.runWithParams(Object.assign(Object.assign({}, CANVAS_TEST_CONFIG), { name, testFunc, params, helper })); + } + } + // eslint-disable-next-line + static runSVGTest(name, testFunc, params) { + if (VexFlowTests.RUN_SVG_TESTS) { + const helper = null; + VexFlowTests.runWithParams(Object.assign(Object.assign({}, SVG_TEST_CONFIG), { name, testFunc, params, helper })); + } + } + // eslint-disable-next-line + static runNodeTest(name, testFunc, params) { + if (VexFlowTests.RUN_NODE_TESTS) { + const helper = VexFlowTests.runNodeTestHelper; + VexFlowTests.runWithParams(Object.assign(Object.assign({}, NODE_TEST_CONFIG), { name, testFunc, params, helper })); + } + } + /** + * Save the PNG file. + * @param fontName + * @param element + */ + static runNodeTestHelper(fontName, element) { + if (_src_index__WEBPACK_IMPORTED_MODULE_0__.Renderer.lastContext !== undefined) { + const moduleName = sanitizeName(QUnit.current_module); + const testName = sanitizeName(QUnit.current_test); + // If we are only testing Bravura, we OMIT the font name from the + // output image file name, which allows visual diffs against + // the previous release: version 3.0.9. In the future, if we decide + // to test all fonts by default, we can remove this check. + const onlyBravura = NODE_TEST_CONFIG.fontStacks.length === 1 && fontName === 'Bravura'; + const fontInfo = onlyBravura ? '' : `.${fontName}`; + const fileName = `${VexFlowTests.NODE_IMAGEDIR}/${moduleName}.${testName}${fontInfo}.png`; + const imageData = element.toDataURL().split(';base64,').pop(); + const imageBuffer = Buffer.from(imageData, 'base64'); + VexFlowTests.shims.fs.writeFileSync(fileName, imageBuffer, { encoding: 'base64' }); + } + } + /** Run QUnit.test(...) for each font. */ + // eslint-disable-next-line + static runWithParams({ fontStacks, testFunc, name, params, backend, tagName, testType, helper }) { + if (name === undefined) { + throw new Error('Test name is undefined.'); + } + const testTypeLowerCase = testType.toLowerCase(); + fontStacks.forEach((fontStackName) => { + QUnit.test(name, (assert) => { + useTempFontStack(fontStackName); + const elementId = VexFlowTests.generateTestID(`${testTypeLowerCase}_` + fontStackName); + const moduleName = assert.test.module.name; + const title = moduleName + ' › ' + name + ` › ${testType} + ${fontStackName}`; + // Add an element id for the title div, so that we can scroll directly to a test case. + // Add a fragment identifier to the url (e.g., #Stave.Multiple_Stave_Barline_Test.Bravura) + // This titleId will match the name of the PNGs generated by visual regression tests + // (without the _Current.png or _Reference.png). + let prefix = ''; + if (testTypeLowerCase === 'canvas') { + prefix = testTypeLowerCase + '_'; + } + else { + // DO NOT ADD A PREFIX TO SVG TESTS + // The canvas prefix above is for making sure our element ids are unique, + // since we have a canvas+bravura test case and a svg+bravura test case + // that would otherwise have the same titleId. + } + const titleId = `${prefix}${sanitizeName(moduleName)}.${sanitizeName(name)}.${fontStackName}`; + const element = VexFlowTests.createTest(elementId, title, tagName, titleId); + const options = { elementId, params, assert, backend }; + const isSVG = backend === _src_index__WEBPACK_IMPORTED_MODULE_0__.Renderer.Backends.SVG; + const contextBuilder = isSVG ? _src_index__WEBPACK_IMPORTED_MODULE_0__.Renderer.getSVGContext : _src_index__WEBPACK_IMPORTED_MODULE_0__.Renderer.getCanvasContext; + testFunc(options, contextBuilder); + restoreOriginalFontStack(); + if (helper) + helper(fontStackName, element); + }); + }); + } + /** + * @param ctx + * @param x + * @param y + */ + static plotLegendForNoteWidth(ctx, x, y) { + ctx.save(); + ctx.setFont(_src_index__WEBPACK_IMPORTED_MODULE_0__.Font.SANS_SERIF, 8); + const spacing = 12; + let lastY = y; + function legend(color, text) { + ctx.beginPath(); + ctx.setStrokeStyle(color); + ctx.setFillStyle(color); + ctx.setLineWidth(10); + ctx.moveTo(x, lastY - 4); + ctx.lineTo(x + 10, lastY - 4); + ctx.stroke(); + ctx.setFillStyle('black'); + ctx.fillText(text, x + 15, lastY); + lastY += spacing; + } + legend('green', 'Note + Flag'); + legend('red', 'Modifiers'); + legend('#999', 'Displaced Head'); + legend('#DDD', 'Formatter Shift'); + ctx.restore(); + } +} +VexFlowTests.tests = []; +VexFlowTests.RUN_CANVAS_TESTS = true; +VexFlowTests.RUN_SVG_TESTS = true; +VexFlowTests.RUN_NODE_TESTS = false; +// Default font properties for tests. +VexFlowTests.Font = { size: 10 }; +/** + * Each font stack is a prioritized list of font names. + */ +VexFlowTests.FONT_STACKS = { + Bravura: ['Bravura', 'Gonville', 'Custom'], + Gonville: ['Gonville', 'Bravura', 'Custom'], + Petaluma: ['Petaluma', 'Gonville', 'Bravura', 'Custom'], + Leland: ['Leland', 'Bravura', 'Gonville', 'Custom'], +}; +VexFlowTests.NEXT_TEST_ID = 0; +/** + * Used with array.reduce(...) to flatten arrays of arrays in the tests. + */ +// eslint-disable-next-line +const concat = (a, b) => a.concat(b); +/** Used in KeySignature and ClefKeySignature Tests. */ +const MAJOR_KEYS = [ + // + 'C', + 'F', + 'Bb', + 'Eb', + 'Ab', + 'Db', + 'Gb', + 'Cb', + 'G', + 'D', + 'A', + 'E', + 'B', + 'F#', + 'C#', +]; +const MINOR_KEYS = [ + 'Am', + 'Dm', + 'Gm', + 'Cm', + 'Fm', + 'Bbm', + 'Ebm', + 'Abm', + 'Em', + 'Bm', + 'F#m', + 'C#m', + 'G#m', + 'D#m', + 'A#m', +]; +// VexFlow classes can be accessed via Vex.Flow.* or by directly importing a library class. +// Tests can be accessed via Vex.Flow.Test.* or by directly importing a test class. +// Here we set Vex.Flow.Test = VexFlowTests. +// eslint-disable-next-line +// @ts-ignore +_src_index__WEBPACK_IMPORTED_MODULE_0__.Flow.Test = VexFlowTests; + + +/***/ }), + +/***/ "./tests/vf_prefix_tests.ts": +/*!**********************************!*\ + !*** ./tests/vf_prefix_tests.ts ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "VFPrefixTests": () => (/* binding */ VFPrefixTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/index */ "./src/index.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// VF.* Prefix Tests +// +// VexFlow classes are available under the global Vex.Flow.* namespace. + + +const VFPrefixTests = { + Start() { + QUnit.module('VF.* API'); + test('VF.* API', VF_Prefix); + test('VF Alias', VF_Alias); + }, +}; +function VF_Prefix() { + // Intentionally use Vex.Flow here so we can verify that the Vex.Flow.* API + // is equivalent to using the individual classes in TypeScript. + const VF = Vex.Flow; + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Accidental, VF.Accidental); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Annotation, VF.Annotation); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Articulation, VF.Articulation); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Barline, VF.Barline); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.BarNote, VF.BarNote); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Beam, VF.Beam); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Bend, VF.Bend); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.BoundingBox, VF.BoundingBox); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.BoundingBoxComputation, VF.BoundingBoxComputation); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.ChordSymbol, VF.ChordSymbol); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Clef, VF.Clef); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.ClefNote, VF.ClefNote); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Crescendo, VF.Crescendo); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Curve, VF.Curve); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Dot, VF.Dot); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.EasyScore, VF.EasyScore); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Element, VF.Element); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Factory, VF.Factory); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Flow.RESOLUTION, VF.RESOLUTION); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Font, VF.Font); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Formatter, VF.Formatter); + propEqual(new _src_index__WEBPACK_IMPORTED_MODULE_1__.Formatter(), new VF.Formatter(), 'new Formatter()'); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Fraction, VF.Fraction); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.FretHandFinger, VF.FretHandFinger); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.GhostNote, VF.GhostNote); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Glyph, VF.Glyph); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.GlyphNote, VF.GlyphNote); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.GraceNote, VF.GraceNote); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.GraceNoteGroup, VF.GraceNoteGroup); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.GraceTabNote, VF.GraceTabNote); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.KeyManager, VF.KeyManager); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.KeySignature, VF.KeySignature); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.KeySigNote, VF.KeySigNote); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Modifier, VF.Modifier); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.ModifierContext, VF.ModifierContext); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.MultiMeasureRest, VF.MultiMeasureRest); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Music, VF.Music); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Note, VF.Note); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.NoteHead, VF.NoteHead); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.NoteSubGroup, VF.NoteSubGroup); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Ornament, VF.Ornament); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Parser, VF.Parser); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.PedalMarking, VF.PedalMarking); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Registry, VF.Registry); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Renderer, VF.Renderer); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.RepeatNote, VF.RepeatNote); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Repetition, VF.Repetition); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Stave, VF.Stave); + notEqual(_src_index__WEBPACK_IMPORTED_MODULE_1__.Stave, VF.StaveNote); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.StaveConnector, VF.StaveConnector); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.StaveHairpin, VF.StaveHairpin); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.StaveLine, VF.StaveLine); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.StaveModifier, VF.StaveModifier); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.StaveNote, VF.StaveNote); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.StaveTempo, VF.StaveTempo); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.StaveText, VF.StaveText); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.StaveTie, VF.StaveTie); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Stem, VF.Stem); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.StringNumber, VF.StringNumber); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Stroke, VF.Stroke); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.System, VF.System); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.TabNote, VF.TabNote); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.TabSlide, VF.TabSlide); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.TabStave, VF.TabStave); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.TabTie, VF.TabTie); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.TextBracket, VF.TextBracket); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.TextDynamics, VF.TextDynamics); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.TextFormatter, VF.TextFormatter); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.TextNote, VF.TextNote); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.TickContext, VF.TickContext); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.TimeSignature, VF.TimeSignature); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.TimeSigNote, VF.TimeSigNote); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Tremolo, VF.Tremolo); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Tuning, VF.Tuning); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Tuplet, VF.Tuplet); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Vibrato, VF.Vibrato); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.VibratoBracket, VF.VibratoBracket); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Voice, VF.Voice); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Volta, VF.Volta); +} +/** + * If you have name collisions with VexFlow classes, consider extracting classes from Vex.Flow + * and renaming them with a VF prefix. + */ +function VF_Alias() { + const Flow = Vex.Flow; + const VFAliases = { + get VFAccidental() { + return Flow.Accidental; + }, + get VFAnnotation() { + return Flow.Annotation; + }, + get VFVibrato() { + return Flow.Vibrato; + }, + }; + const { VFVibrato, VFAccidental, VFAnnotation } = VFAliases; + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Accidental, VFAccidental); + equal(_src_index__WEBPACK_IMPORTED_MODULE_1__.Annotation, VFAnnotation); + const vibrato = new VFVibrato(); + ok(vibrato); + const acc1 = new VFAccidental('##'); + const acc2 = new _src_index__WEBPACK_IMPORTED_MODULE_1__.Accidental('##'); + equal(acc1.type, acc2.type); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(VFPrefixTests); + + + +/***/ }), + +/***/ "./tests/vibrato_tests.ts": +/*!********************************!*\ + !*** ./tests/vibrato_tests.ts ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "VibratoTests": () => (/* binding */ VibratoTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/index */ "./src/index.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Vibrato Tests + + +const VibratoTests = { + Start() { + QUnit.module('Vibrato'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Simple Vibrato', simple); + run('Harsh Vibrato', harsh); + run('Vibrato with Bend', withBend); + }, +}; +// Helper function to create TabNote objects. +const tabNote = (noteStruct) => new _src_index__WEBPACK_IMPORTED_MODULE_1__.TabNote(noteStruct); +/** + * Default vibrato symbol (wavy line) on top of a tab with two notes fretted. + */ +function simple(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + ctx.font = '10pt Arial'; + const stave = new _src_index__WEBPACK_IMPORTED_MODULE_1__.TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw(); + const notes = [ + tabNote({ + positions: [ + { str: 2, fret: 10 }, + { str: 4, fret: 9 }, + ], + duration: 'h', + }).addModifier(new _src_index__WEBPACK_IMPORTED_MODULE_1__.Vibrato(), 0), + tabNote({ + positions: [{ str: 2, fret: 10 }], + duration: 'h', + }).addModifier(new _src_index__WEBPACK_IMPORTED_MODULE_1__.Vibrato(), 0), + ]; + _src_index__WEBPACK_IMPORTED_MODULE_1__.Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, 'Simple Vibrato'); +} +/** + * The harsh vibrato symbol is a zig zag line with sharp points. + * This test is nearly identical to the 'simple' test above. + * The only difference is that we call .setHarsh(true) on each Vibrato object. + */ +function harsh(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + ctx.font = '10pt Arial'; + const stave = new _src_index__WEBPACK_IMPORTED_MODULE_1__.TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw(); + const notes = [ + tabNote({ + positions: [ + { str: 2, fret: 10 }, + { str: 4, fret: 9 }, + ], + duration: 'h', + }).addModifier(new _src_index__WEBPACK_IMPORTED_MODULE_1__.Vibrato().setHarsh(true), 0), + tabNote({ + positions: [{ str: 2, fret: 10 }], + duration: 'h', + }).addModifier(new _src_index__WEBPACK_IMPORTED_MODULE_1__.Vibrato().setHarsh(true), 0), + ]; + _src_index__WEBPACK_IMPORTED_MODULE_1__.Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, 'Harsh Vibrato'); +} +function withBend(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.3, 1.3); + ctx.setFillStyle('#221'); + ctx.setStrokeStyle('#221'); + ctx.setFont(_src_index__WEBPACK_IMPORTED_MODULE_1__.Font.SANS_SERIF, _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.Font.size); + const stave = new _src_index__WEBPACK_IMPORTED_MODULE_1__.TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw(); + const notes = [ + tabNote({ + positions: [ + { str: 2, fret: 9 }, + { str: 3, fret: 9 }, + ], + duration: 'q', + }) + .addModifier(new _src_index__WEBPACK_IMPORTED_MODULE_1__.Bend('1/2', true), 0) + .addModifier(new _src_index__WEBPACK_IMPORTED_MODULE_1__.Bend('1/2', true), 1) + .addModifier(new _src_index__WEBPACK_IMPORTED_MODULE_1__.Vibrato(), 0), + tabNote({ + positions: [{ str: 2, fret: 10 }], + duration: 'q', + }) + .addModifier(new _src_index__WEBPACK_IMPORTED_MODULE_1__.Bend('Full', false), 0) + .addModifier(new _src_index__WEBPACK_IMPORTED_MODULE_1__.Vibrato().setVibratoWidth(60), 0), + tabNote({ + positions: [{ str: 2, fret: 10 }], + duration: 'h', + }).addModifier(new _src_index__WEBPACK_IMPORTED_MODULE_1__.Vibrato().setVibratoWidth(120).setHarsh(true), 0), + ]; + _src_index__WEBPACK_IMPORTED_MODULE_1__.Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, 'Vibrato with Bend'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(VibratoTests); + + + +/***/ }), + +/***/ "./tests/vibratobracket_tests.ts": +/*!***************************************!*\ + !*** ./tests/vibratobracket_tests.ts ***! + \***************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "VibratoBracketTests": () => (/* binding */ VibratoBracketTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// Author: Balazs Forian-Szabo +// +// VibratoBracket Tests +// TODO: It's annoying to have to cast "as Note" or "as Note[]". Could we add a method to Voice to get the tickables as Note[]? Voice.getTickables() vs Voice.getNotes()? + +const VibratoBracketTests = { + Start() { + QUnit.module('VibratoBracket'); + const run = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests; + run('Simple VibratoBracket', simple); + run('Harsh VibratoBracket Without End Note', withoutEndNote); + run('Harsh VibratoBracket Without Start Note', withoutStartNote); + }, +}; +// Helper function to set up the stave, easyscore, voice, and to format & draw. +function createTest(noteGroup, setupVibratoBracket) { + return (options) => { + const factory = _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.makeFactory(options, 650, 200); + const stave = factory.Stave(); + const score = factory.EasyScore(); + const voice = score.voice(score.notes(noteGroup)); + setupVibratoBracket(factory, voice.getTickables()); + factory.Formatter().joinVoices([voice]).formatToStave([voice], stave); + factory.draw(); + ok(true); + }; +} +const simple = createTest('c4/4, c4, c4, c4', (factory, notes) => { + factory.VibratoBracket({ + from: notes[0], + to: notes[3], + options: { line: 2 }, + }); +}); +const withoutEndNote = createTest('c4/4, c4, c4, c4', (factory, notes) => { + factory.VibratoBracket({ + from: notes[2], + to: null, + options: { line: 2, harsh: true }, + }); +}); +const withoutStartNote = createTest('c4/4, c4, c4, c4', (factory, notes) => { + factory.VibratoBracket({ + from: null, + to: notes[2], + options: { line: 2, harsh: true }, + }); +}); +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(VibratoBracketTests); + + + +/***/ }), + +/***/ "./tests/voice_tests.ts": +/*!******************************!*\ + !*** ./tests/voice_tests.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "VoiceTests": () => (/* binding */ VoiceTests) +/* harmony export */ }); +/* harmony import */ var _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vexflow_test_helpers */ "./tests/vexflow_test_helpers.ts"); +/* harmony import */ var _src_flow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/flow */ "./src/flow.ts"); +/* harmony import */ var _src_formatter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/formatter */ "./src/formatter.ts"); +/* harmony import */ var _src_stave__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/stave */ "./src/stave.ts"); +/* harmony import */ var _src_stavebarline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/stavebarline */ "./src/stavebarline.ts"); +/* harmony import */ var _src_stavenote__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../src/stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _src_voice__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../src/voice */ "./src/voice.ts"); +/* harmony import */ var _mocks__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./mocks */ "./tests/mocks.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Voice Tests + + + + + + + + +const VoiceTests = { + Start() { + QUnit.module('Voice'); + test('Strict Test', strict); + test('Ignore Test', ignore); + _vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.runTests('Full Voice Mode Test', full); + }, +}; +const BEAT = (1 * _src_flow__WEBPACK_IMPORTED_MODULE_1__.Flow.RESOLUTION) / 4; +// Helper function to create a tickable with a preset number of ticks. +const createTickable = () => new _mocks__WEBPACK_IMPORTED_MODULE_7__.MockTickable().setTicks(BEAT); +function strict() { + expect(8); + const tickables = [createTickable(), createTickable(), createTickable()]; + const voice = new _src_voice__WEBPACK_IMPORTED_MODULE_6__.Voice(_src_flow__WEBPACK_IMPORTED_MODULE_1__.Flow.TIME4_4); + equal(voice.getTotalTicks().value(), BEAT * 4, '4/4 Voice has 4 beats'); + equal(voice.getTicksUsed().value(), BEAT * 0, 'No beats in voice'); + voice.addTickables(tickables); + equal(voice.getTicksUsed().value(), BEAT * 3, 'Three beats in voice'); + voice.addTickable(createTickable()); + equal(voice.getTicksUsed().value(), BEAT * 4, 'Four beats in voice'); + equal(voice.isComplete(), true, 'Voice is complete'); + const numeratorBeforeException = voice.getTicksUsed().numerator; + throws(() => voice.addTickable(createTickable()), /BadArgument/, '"Too many ticks" exception'); + // Verify that adding too many ticks does not affect the `ticksUsed` property of the voice. + // See voice.ts: this.ticksUsed.subtract(ticks); + equal(voice.getTicksUsed().numerator, numeratorBeforeException, 'Revert `ticksUsed` after a "Too many ticks" exception'); + equal(voice.getSmallestTickCount().value(), BEAT, 'Smallest tick count is BEAT'); +} +function ignore() { + const tickables = [ + createTickable(), + createTickable(), + createTickable().setIgnoreTicks(true), + createTickable(), + createTickable().setIgnoreTicks(true), + createTickable(), + ]; + const voice = new _src_voice__WEBPACK_IMPORTED_MODULE_6__.Voice(_src_flow__WEBPACK_IMPORTED_MODULE_1__.Flow.TIME4_4); + voice.addTickables(tickables); + ok(true, 'all pass'); +} +function full(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 550, 200); + const stave = new _src_stave__WEBPACK_IMPORTED_MODULE_3__.Stave(10, 50, 500).addClef('treble').addTimeSignature('4/4').setEndBarType(_src_stavebarline__WEBPACK_IMPORTED_MODULE_4__.Barline.type.END); + const notes = [ + new _src_stavenote__WEBPACK_IMPORTED_MODULE_5__.StaveNote({ keys: ['c/4'], duration: '4' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_5__.StaveNote({ keys: ['d/4'], duration: '4' }), + new _src_stavenote__WEBPACK_IMPORTED_MODULE_5__.StaveNote({ keys: ['r/4'], duration: '4r' }), + ]; + notes.forEach((note) => note.setStave(stave)); + const voice = new _src_voice__WEBPACK_IMPORTED_MODULE_6__.Voice(_src_flow__WEBPACK_IMPORTED_MODULE_1__.Flow.TIME4_4).setMode(_src_voice__WEBPACK_IMPORTED_MODULE_6__.Voice.Mode.FULL).addTickables(notes); + new _src_formatter__WEBPACK_IMPORTED_MODULE_2__.Formatter().joinVoices([voice]).formatToStave([voice], stave); + stave.setContext(ctx).draw(); + voice.draw(ctx); + const bb = voice.getBoundingBox(); + if (bb) { + ctx.rect(bb.getX(), bb.getY(), bb.getW(), bb.getH()); + } + ctx.stroke(); + throws(() => voice.addTickable(new _src_stavenote__WEBPACK_IMPORTED_MODULE_5__.StaveNote({ keys: ['c/4'], duration: '2' })), /BadArgument/, 'Voice cannot exceed full amount of ticks'); +} +_vexflow_test_helpers__WEBPACK_IMPORTED_MODULE_0__.VexFlowTests.register(VoiceTests); + + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/global */ +/******/ (() => { +/******/ __webpack_require__.g = (function() { +/******/ if (typeof globalThis === 'object') return globalThis; +/******/ try { +/******/ return this || new Function('return this')(); +/******/ } catch (e) { +/******/ if (typeof window === 'object') return window; +/******/ } +/******/ })(); +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. +(() => { +/*!*******************************************!*\ + !*** ./entry/vexflow-debug-with-tests.ts ***! + \*******************************************/ +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Accidental": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Accidental), +/* harmony export */ "Annotation": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Annotation), +/* harmony export */ "AnnotationHorizontalJustify": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.AnnotationHorizontalJustify), +/* harmony export */ "AnnotationVerticalJustify": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.AnnotationVerticalJustify), +/* harmony export */ "Articulation": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Articulation), +/* harmony export */ "BEAM_BOTH": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.BEAM_BOTH), +/* harmony export */ "BEAM_LEFT": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.BEAM_LEFT), +/* harmony export */ "BEAM_RIGHT": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.BEAM_RIGHT), +/* harmony export */ "BarNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.BarNote), +/* harmony export */ "Barline": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Barline), +/* harmony export */ "BarlineType": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.BarlineType), +/* harmony export */ "Beam": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Beam), +/* harmony export */ "Bend": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Bend), +/* harmony export */ "BoundingBox": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.BoundingBox), +/* harmony export */ "BoundingBoxComputation": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.BoundingBoxComputation), +/* harmony export */ "Builder": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Builder), +/* harmony export */ "CanvasContext": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.CanvasContext), +/* harmony export */ "Category": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Category), +/* harmony export */ "ChordSymbol": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.ChordSymbol), +/* harmony export */ "ChordSymbolHorizontalJustify": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.ChordSymbolHorizontalJustify), +/* harmony export */ "ChordSymbolVerticalJustify": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.ChordSymbolVerticalJustify), +/* harmony export */ "Clef": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Clef), +/* harmony export */ "ClefNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.ClefNote), +/* harmony export */ "Crescendo": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Crescendo), +/* harmony export */ "Curve": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Curve), +/* harmony export */ "CurvePosition": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.CurvePosition), +/* harmony export */ "Dot": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Dot), +/* harmony export */ "EasyScore": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.EasyScore), +/* harmony export */ "EasyScoreGrammar": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.EasyScoreGrammar), +/* harmony export */ "Element": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Element), +/* harmony export */ "Factory": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Factory), +/* harmony export */ "Flow": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Flow), +/* harmony export */ "Font": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Font), +/* harmony export */ "FontStyle": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.FontStyle), +/* harmony export */ "FontWeight": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.FontWeight), +/* harmony export */ "Formatter": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Formatter), +/* harmony export */ "Fraction": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Fraction), +/* harmony export */ "FretHandFinger": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.FretHandFinger), +/* harmony export */ "GhostNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.GhostNote), +/* harmony export */ "Glyph": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Glyph), +/* harmony export */ "GlyphNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.GlyphNote), +/* harmony export */ "GraceNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.GraceNote), +/* harmony export */ "GraceNoteGroup": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.GraceNoteGroup), +/* harmony export */ "GraceTabNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.GraceTabNote), +/* harmony export */ "KeyManager": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.KeyManager), +/* harmony export */ "KeySigNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.KeySigNote), +/* harmony export */ "KeySignature": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.KeySignature), +/* harmony export */ "Modifier": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Modifier), +/* harmony export */ "ModifierContext": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.ModifierContext), +/* harmony export */ "ModifierPosition": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.ModifierPosition), +/* harmony export */ "MultiMeasureRest": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.MultiMeasureRest), +/* harmony export */ "Music": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Music), +/* harmony export */ "Note": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Note), +/* harmony export */ "NoteHead": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.NoteHead), +/* harmony export */ "NoteSubGroup": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.NoteSubGroup), +/* harmony export */ "Ornament": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Ornament), +/* harmony export */ "OutlineCode": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.OutlineCode), +/* harmony export */ "Parenthesis": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Parenthesis), +/* harmony export */ "Parser": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Parser), +/* harmony export */ "PedalMarking": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.PedalMarking), +/* harmony export */ "Piece": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Piece), +/* harmony export */ "Registry": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Registry), +/* harmony export */ "RenderContext": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.RenderContext), +/* harmony export */ "Renderer": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Renderer), +/* harmony export */ "RendererBackends": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.RendererBackends), +/* harmony export */ "RendererLineEndType": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.RendererLineEndType), +/* harmony export */ "RepeatNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.RepeatNote), +/* harmony export */ "Repetition": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Repetition), +/* harmony export */ "RuntimeError": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.RuntimeError), +/* harmony export */ "SVGContext": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.SVGContext), +/* harmony export */ "Stave": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Stave), +/* harmony export */ "StaveConnector": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.StaveConnector), +/* harmony export */ "StaveHairpin": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.StaveHairpin), +/* harmony export */ "StaveLine": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.StaveLine), +/* harmony export */ "StaveModifier": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.StaveModifier), +/* harmony export */ "StaveModifierPosition": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.StaveModifierPosition), +/* harmony export */ "StaveNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.StaveNote), +/* harmony export */ "StaveSection": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.StaveSection), +/* harmony export */ "StaveTempo": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.StaveTempo), +/* harmony export */ "StaveText": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.StaveText), +/* harmony export */ "StaveTie": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.StaveTie), +/* harmony export */ "Stem": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Stem), +/* harmony export */ "StemmableNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.StemmableNote), +/* harmony export */ "StringNumber": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.StringNumber), +/* harmony export */ "Stroke": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Stroke), +/* harmony export */ "SymbolModifiers": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.SymbolModifiers), +/* harmony export */ "SymbolTypes": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.SymbolTypes), +/* harmony export */ "System": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.System), +/* harmony export */ "TabNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.TabNote), +/* harmony export */ "TabSlide": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.TabSlide), +/* harmony export */ "TabStave": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.TabStave), +/* harmony export */ "TabTie": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.TabTie), +/* harmony export */ "TextBracket": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.TextBracket), +/* harmony export */ "TextBracketPosition": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.TextBracketPosition), +/* harmony export */ "TextDynamics": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.TextDynamics), +/* harmony export */ "TextFormatter": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.TextFormatter), +/* harmony export */ "TextJustification": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.TextJustification), +/* harmony export */ "TextNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.TextNote), +/* harmony export */ "TickContext": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.TickContext), +/* harmony export */ "Tickable": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Tickable), +/* harmony export */ "TimeSigNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.TimeSigNote), +/* harmony export */ "TimeSignature": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.TimeSignature), +/* harmony export */ "TimeSignatureGlyph": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.TimeSignatureGlyph), +/* harmony export */ "Tremolo": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Tremolo), +/* harmony export */ "Tuning": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Tuning), +/* harmony export */ "Tuplet": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Tuplet), +/* harmony export */ "TupletLocation": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.TupletLocation), +/* harmony export */ "Vex": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Vex), +/* harmony export */ "Vibrato": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Vibrato), +/* harmony export */ "VibratoBracket": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.VibratoBracket), +/* harmony export */ "Voice": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Voice), +/* harmony export */ "VoiceMode": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.VoiceMode), +/* harmony export */ "Volta": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.Volta), +/* harmony export */ "VoltaType": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.VoltaType), +/* harmony export */ "defined": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.defined), +/* harmony export */ "drawDot": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.drawDot), +/* harmony export */ "globalObject": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.globalObject), +/* harmony export */ "isAccidental": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.isAccidental), +/* harmony export */ "isAnnotation": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.isAnnotation), +/* harmony export */ "isBarline": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.isBarline), +/* harmony export */ "isCategory": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.isCategory), +/* harmony export */ "isDot": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.isDot), +/* harmony export */ "isGraceNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.isGraceNote), +/* harmony export */ "isGraceNoteGroup": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.isGraceNoteGroup), +/* harmony export */ "isHTMLCanvas": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.isHTMLCanvas), +/* harmony export */ "isHTMLDiv": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.isHTMLDiv), +/* harmony export */ "isNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.isNote), +/* harmony export */ "isRenderContext": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.isRenderContext), +/* harmony export */ "isStaveNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.isStaveNote), +/* harmony export */ "isStemmableNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.isStemmableNote), +/* harmony export */ "isTabNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.isTabNote), +/* harmony export */ "log": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.log), +/* harmony export */ "midLine": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.midLine), +/* harmony export */ "normalizeAngle": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.normalizeAngle), +/* harmony export */ "prefix": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.prefix), +/* harmony export */ "warn": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_0__.warn), +/* harmony export */ "AccidentalTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.AccidentalTests), +/* harmony export */ "AnnotationTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.AnnotationTests), +/* harmony export */ "ArticulationTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.ArticulationTests), +/* harmony export */ "AutoBeamFormattingTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.AutoBeamFormattingTests), +/* harmony export */ "BachDemoTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.BachDemoTests), +/* harmony export */ "BarlineTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.BarlineTests), +/* harmony export */ "BeamTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.BeamTests), +/* harmony export */ "BendTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.BendTests), +/* harmony export */ "BoundingBoxComputationTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.BoundingBoxComputationTests), +/* harmony export */ "BoundingBoxTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.BoundingBoxTests), +/* harmony export */ "ChordSymbolTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.ChordSymbolTests), +/* harmony export */ "ClefKeySignatureTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.ClefKeySignatureTests), +/* harmony export */ "ClefTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.ClefTests), +/* harmony export */ "CurveTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.CurveTests), +/* harmony export */ "DotTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.DotTests), +/* harmony export */ "EasyScoreTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.EasyScoreTests), +/* harmony export */ "FactoryTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.FactoryTests), +/* harmony export */ "FontTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.FontTests), +/* harmony export */ "FormatterTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.FormatterTests), +/* harmony export */ "FractionTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.FractionTests), +/* harmony export */ "GhostNoteTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.GhostNoteTests), +/* harmony export */ "GlyphNoteTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.GlyphNoteTests), +/* harmony export */ "GraceNoteTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.GraceNoteTests), +/* harmony export */ "GraceTabNoteTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.GraceTabNoteTests), +/* harmony export */ "KeyManagerTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.KeyManagerTests), +/* harmony export */ "KeySignatureTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.KeySignatureTests), +/* harmony export */ "ModifierContextTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.ModifierContextTests), +/* harmony export */ "MultiMeasureRestTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.MultiMeasureRestTests), +/* harmony export */ "MusicTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.MusicTests), +/* harmony export */ "NoteHeadTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.NoteHeadTests), +/* harmony export */ "NoteSubGroupTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.NoteSubGroupTests), +/* harmony export */ "OffscreenCanvasTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.OffscreenCanvasTests), +/* harmony export */ "OrnamentTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.OrnamentTests), +/* harmony export */ "ParserTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.ParserTests), +/* harmony export */ "PedalMarkingTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.PedalMarkingTests), +/* harmony export */ "PercussionTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.PercussionTests), +/* harmony export */ "RegistryTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.RegistryTests), +/* harmony export */ "RendererTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.RendererTests), +/* harmony export */ "RestsTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.RestsTests), +/* harmony export */ "RhythmTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.RhythmTests), +/* harmony export */ "StaveConnectorTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.StaveConnectorTests), +/* harmony export */ "StaveHairpinTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.StaveHairpinTests), +/* harmony export */ "StaveLineTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.StaveLineTests), +/* harmony export */ "StaveModifierTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.StaveModifierTests), +/* harmony export */ "StaveNoteTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.StaveNoteTests), +/* harmony export */ "StaveTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.StaveTests), +/* harmony export */ "StaveTieTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.StaveTieTests), +/* harmony export */ "StringNumberTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.StringNumberTests), +/* harmony export */ "StrokesTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.StrokesTests), +/* harmony export */ "StyleTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.StyleTests), +/* harmony export */ "TabNoteTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.TabNoteTests), +/* harmony export */ "TabSlideTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.TabSlideTests), +/* harmony export */ "TabStaveTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.TabStaveTests), +/* harmony export */ "TabTieTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.TabTieTests), +/* harmony export */ "TextBracketTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.TextBracketTests), +/* harmony export */ "TextFormatterTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.TextFormatterTests), +/* harmony export */ "TextNoteTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.TextNoteTests), +/* harmony export */ "ThreeVoicesTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.ThreeVoicesTests), +/* harmony export */ "TickContextTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.TickContextTests), +/* harmony export */ "TimeSignatureTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.TimeSignatureTests), +/* harmony export */ "TremoloTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.TremoloTests), +/* harmony export */ "TuningTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.TuningTests), +/* harmony export */ "TupletTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.TupletTests), +/* harmony export */ "TypeGuardTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.TypeGuardTests), +/* harmony export */ "VFPrefixTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.VFPrefixTests), +/* harmony export */ "VibratoBracketTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.VibratoBracketTests), +/* harmony export */ "VibratoTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.VibratoTests), +/* harmony export */ "VoiceTests": () => (/* reexport safe */ _tests_index__WEBPACK_IMPORTED_MODULE_1__.VoiceTests), +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _src_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../src/index */ "./src/index.ts"); +/* harmony import */ var _tests_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../tests/index */ "./tests/index.ts"); +/* harmony import */ var _src_flow__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/flow */ "./src/flow.ts"); +/* harmony import */ var _src_fonts_load_all__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/fonts/load_all */ "./src/fonts/load_all.ts"); +/* harmony import */ var _src_fonts_textfonts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../src/fonts/textfonts */ "./src/fonts/textfonts.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// vexflow-debug-with-tests.ts is the entry point for the build output file vexflow-debug-with-tests.js. +// It statically bundles all the music engraving fonts, and also includes the tests from vexflow/tests/. +// The output file is used by flow.html & flow-headless-browser.html to run the tests. + + + + + +(0,_src_fonts_load_all__WEBPACK_IMPORTED_MODULE_3__.loadAllMusicFonts)(); +_src_flow__WEBPACK_IMPORTED_MODULE_2__.Flow.setMusicFont('Bravura', 'Gonville', 'Custom'); +(0,_src_fonts_textfonts__WEBPACK_IMPORTED_MODULE_4__.loadTextFonts)(); +// Re-export all exports from src/index.ts and tests/index.ts. + + +// Also collect all exports into a default export for CJS projects. +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Object.assign(Object.assign({}, _src_index__WEBPACK_IMPORTED_MODULE_0__), _tests_index__WEBPACK_IMPORTED_MODULE_1__)); + +})(); + +__webpack_exports__ = __webpack_exports__["default"]; +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=vexflow-debug-with-tests.js.map \ No newline at end of file diff --git a/build/cjs/vexflow-debug-with-tests.js.map b/build/cjs/vexflow-debug-with-tests.js.map new file mode 100644 index 0000000000..eef2fe3763 --- /dev/null +++ b/build/cjs/vexflow-debug-with-tests.js.map @@ -0,0 +1 @@ +{"version":3,"file":"vexflow-debug-with-tests.js","mappings":";;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;;;;;;;;;ACVO;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACFP;AACA;AACA;AACA;AACsC;AACN;AACM;AACN;AACE;AAC+D;AAC3D;AACtC;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,yBAAyB,+CAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6DAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,2DAAsB;AAChD,QAAQ,8CAAO,+DAA+D,KAAK;AACnF;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2DAAmB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAuB;AACjD;AACA;AACA;AACA,oFAAoF;AACpF;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iDAAiD;AAChF;AACA;AACA,+BAA+B,sCAAsC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wCAAwC;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D,6BAA6B,kEAA6B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,0BAA0B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,+CAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,0BAA0B,yCAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uDAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wDAAY;AACxC;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,wBAAwB,4DAAgB;AACxC;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,yBAAyB,yCAAK;AAC9B;AACA;AACA,iCAAiC,yCAAK,CAAC,2DAAsB,GAAG;AAChE,kCAAkC,yCAAK,CAAC,2DAAsB,GAAG;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,8CAAO;AACrC,+BAA+B,8CAAO;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8CAAO,2CAA2C,KAAK;AAC/D;AACA;AACA,YAAY,uDAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8EAA8E,qCAAqC,IAAI;AACvI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,8CAAO;AACrC,+BAA+B,8CAAO;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AC5dA;AACA;AACoC;AACoB;AAC1B;AACI;AACc;AACmB;AACtC;AAC7B;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,kEAAkE;AAC5D;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,8DAA8D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACO,yBAAyB,+CAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qDAAgB;AACtC;AACA;AACA;AACA,eAAe,2DAAmB;AAClC;AACA;AACA;AACA;AACA,0BAA0B,4DAAuB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA,kCAAkC,gEAAoB;AACtD;AACA,8DAA8D,+DAA0B;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,0CAAO;AACpF;AACA;AACA,gBAAgB,qDAAS;AACzB;AACA;AACA;AACA,kEAAkE,+DAA0B;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,2DAAe;AACpC;AACA;AACA,8DAA8D,+DAA0B;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qDAAS;AAC7B;AACA;AACA,sCAAsC,0CAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qDAAS;AAC7B;AACA;AACA,sCAAsC,4CAAS;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,0CAAO;AAChF,8BAA8B,gEAAoB;AAClD,8CAA8C,6DAAsB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,+DAA0B;AAClE,8CAA8C,4CAAS;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,+DAA0B;AACnF,8CAA8C,0CAAO;AACrD;AACA;AACA,mEAAmE,+DAA0B;AAC7F;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,EAAE,uDAAiB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AC1RA;AACA;AACA;AACgC;AACM;AACR;AACI;AAC2D;AACzC;AACpD;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA,QAAQ,eAAe,EAAE,wDAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,uDAAW,UAAU,uDAAW;AACrE;AACA;AACA,YAAY,mCAAmC;AAC/C;AACA;AACA,kCAAkC,0CAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,qDAAS;AACtB;AACA,kCAAkC,0CAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,+CAAY;AAC9B;AACA;AACA;AACA;AACA,YAAY,mCAAmC;AAC/C;AACA;AACA,kCAAkC,0CAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,qDAAS;AACtB;AACA,kCAAkC,0CAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,+CAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,0CAAO;AAClF,2DAA2D,4CAAS;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,2BAA2B,+CAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,6DAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uHAAuH,8CAAO;AAC9H;AACA;AACA;AACA;AACA,6EAA6E,0CAAO;AACpF;AACA;AACA,gBAAgB,2DAAe;AAC/B;AACA;AACA,8DAA8D,+DAA0B;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,0CAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,4CAAS;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,eAAe;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA,iCAAiC,8DAAuB;AACxD;AACA,SAAS;AACT;AACA;AACA;AACA,4BAA4B,6DAAwB;AACpD,6BAA6B,8CAAO,gEAAgE,UAAU;AAC9G;AACA,yBAAyB,yCAAK;AAC9B,sBAAsB,8CAAO;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uCAAuC;AACvD;AACA;AACA;AACA,sBAAsB,qDAAS;AAC/B;AACA,gBAAgB,IAAI;AACpB;AACA;AACA,wBAAwB,4DAAuB,gCAAgC,gBAAgB;AAC/F;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,EAAE,OAAO,EAAE;AACtD;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACjUA;AACA;AAC8B;AACwB;AACf;AACV;AAC7B;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,sBAAsB,uCAAI;AACjC,uBAAuB,6DAAkB;AACzC,gBAAgB,eAAe;AAC/B;AACA,sBAAsB;AACtB;AACA,qBAAqB,sDAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wDAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,6DAAkB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kDAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;AC5EA;AACA;AACoC;AACE;AACR;AACI;AACQ;AACqB;AACzB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL;AACA,eAAe,4CAAS;AACxB;AACA,WAAW,0CAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACP;AACO,mBAAmB,6CAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA,0BAA0B,2DAAsB;AAChD,sBAAsB,+CAAY;AAClC;AACA,eAAe;AACf;AACA,8BAA8B,0CAAO;AACrC,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uDAAW;AACpC;AACA;AACA,8BAA8B,qDAAS;AACvC;AACA;AACA,gDAAgD,0CAAO,GAAG,4CAAS;AACnE;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qDAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+CAAQ;AACpC;AACA;AACA,4BAA4B,+CAAQ;AACpC;AACA;AACA,4BAA4B,+CAAQ;AACpC;AACA;AACA;AACA,6CAA6C,+CAAQ;AACrD;AACA,oBAAoB,+CAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,wBAAwB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA,iCAAiC,+CAAQ;AACzC;AACA;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA,0CAA0C,sDAAiB;AAC3D,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,0FAA0F,+CAAQ;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,+CAAQ;AACrD;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA,mCAAmC,4DAAuB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,iDAAiD,+CAAQ;AACzD;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,2DAAsB;AAC9E;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,0CAAO;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,2DAAsB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,iEAAiE,4CAAS,GAAG,0DAAqB,GAAG,uDAAkB;AACvH;AACA;AACA;AACA,4BAA4B,yBAAyB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wDAAwD,oDAAoD,IAAI;AAChI;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,oBAAoB;AACxD;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yCAAyC,oDAAoD,IAAI;AACjH;AACA;AACA;AACA,0BAA0B;AAC1B,kCAAkC;AAClC;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,4CAAS;AAC5C;AACA;AACA;AACA;AACA,wCAAwC,0CAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,4CAAS;AACxC;AACA;AACA,oCAAoC,0CAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,4CAAS;AAC7C;AACA;AACA,oCAAoC,0CAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qEAAqE,8CAA8C,IAAI;AACvI;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA,yDAAyD,0CAAO;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,4DAAuB,eAAe;AACzE,gDAAgD,2DAAsB;AACtE,gDAAgD,2DAAsB;AACtE,sCAAsC,2DAAsB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,2DAAsB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,6CAAU;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iCAAiC;AACzD;AACA;AACA,4BAA4B,sBAAsB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+CAAY;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,qDAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACjzBA;AACA;AACoC;AACE;AACU;AACE;AACZ;AACtC;AACO,mBAAmB,+CAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gCAAgC;AAC7D;AACA,mCAAmC,2BAA2B;AAC9D;AACA;AACA;AACA;AACA,eAAe,qDAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA,gBAAgB,qDAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,gEAAoB;AAClD;AACA;AACA;AACA;AACA,8BAA8B,gEAAoB;AAClD;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,8DAAuB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,+DAAwB;AAC7E;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,EAAE,uDAAiB;;;;;;;;;;;;;;;ACvPpD;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC/HA;AACA;AAC8B;AACkB;AACJ;AACP;AACrC;AACA;AACA;AACA;AACO,4BAA4B,yDAAa;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2CAAI;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,mDAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kDAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,gDAAa;AACtC,8BAA8B,mDAAgB;AAC9C,0BAA0B,+DAA4B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACpPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACqD;AACrB;AACM;AACJ;AACc;AACQ;AAC3B;AAC7B;AACA;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,oEAAoE;AAC9D;AACP;AACA;AACA;AACA,CAAC,gEAAgE;AAC1D;AACP;AACA;AACA;AACA;AACA,CAAC,kCAAkC;AAC5B;AACP;AACA;AACA;AACA;AACA,CAAC,0CAA0C;AAC3C;AACA;AACA;AACA;AACO,0BAA0B,+CAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAuB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAuB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAuB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,+DAA4B;AACzD,4BAA4B,iDAAc;AAC1C;AACA;AACA;AACA;AACA;AACA,4BAA4B,gCAAgC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,2DAAe;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAuB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oDAAiB;AACrC,mBAAmB,mDAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,mBAAmB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,qBAAqB;AAClD;AACA;AACA;AACA;AACA,sCAAsC,qCAAqC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,8BAA8B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,yCAAK,gCAAgC,yBAAyB;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iEAAiE,iBAAiB,kBAAkB;AACpG;AACA;AACA;AACA;AACA;AACA,qCAAqC,kCAAkC;AACvE;AACA;AACA;AACA;AACA;AACA,qCAAqC,kCAAkC;AACvE;AACA;AACA;AACA;AACA;AACA,qCAAqC,mCAAmC;AACxE;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,iEAAiE,aAAa,mBAAmB;AACjG;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,iEAAiE,aAAa,mBAAmB;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gEAAoB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,8DAAuB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,mEAA8B;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,8BAA8B;AAC9D,gDAAgD,iDAAc;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AClsBA;AACA;AACA;AACgC;AACuC;AACrC;AACK;AACD;AACtC;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACO,mBAAmB,yDAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAA2B;AACpD;AACA,sBAAsB,4DAAuB,wBAAwB,UAAU;AAC/E;AACA;AACA;AACA,eAAe,qDAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAuB;AACjD,yDAAyD,UAAU;AACnE,yBAAyB,yCAAK;AAC9B,8BAA8B,eAAe,GAAG,UAAU;AAC1D,SAAS;AACT;AACA;AACA,oEAAoE,WAAW;AAC/E,qEAAqE,WAAW,GAAG,UAAU;AAC7F,oEAAoE,WAAW,GAAG,UAAU,GAAG,UAAU;AACzG,uEAAuE,WAAW,GAAG,UAAU,GAAG,UAAU;AAC5G,gCAAgC;AAChC,kCAAkC,yCAAK;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8CAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,8CAAO;AACjC;AACA,8BAA8B,4DAAuB;AACrD,mEAAmE,SAAS;AAC5E,oEAAoE,SAAS;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAAO;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACjLA;AACA;AACA;AAC8B;AACE;AACF;AACS;AACvC;AACO,uBAAuB,uCAAI;AAClC;AACA,gBAAgB,eAAe;AAC/B;AACA,4BAA4B,uCAAI;AAChC;AACA,yBAAyB,yCAAK;AAC9B;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAiB;AAChC;AACA;AACA;AACA;AACA,4BAA4B,uCAAI;AAChC;AACA,yBAAyB,yCAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,yCAAK;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AAC8B;AACc;AACL;AACV;AAC7B;AACA;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,wBAAwB,uCAAI;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0DAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,oEAA0B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;;;;;;;;;;;;;;;;;;ACpGA;AACA;AACA;AACA;AACoC;AACG;AACD;AAC/B;AACP;AACA;AACA;AACA,CAAC,sCAAsC;AAChC,oBAAoB,6CAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,kBAAkB,aAAa;AAC/B,kBAAkB,aAAa;AAC/B,eAAe;AACf;AACA;AACA;AACA;AACA,eAAe,sDAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAmB;AACnC,gBAAgB,mBAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;;;;;;;;;;;;;;;;;ACnIA;AACA;AACA;AACA;AACsC;AACsC;AACtC;AAC/B,kBAAkB,+CAAQ;AACjC;AACA;AACA,wBAAwB,8DAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA,eAAe,oDAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA,gBAAgB,uDAAW;AAC3B;AACA;AACA;AACA;AACA;AACA,qBAAqB,qDAAS;AAC9B,0BAA0B,aAAa;AACvC;AACA;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA;AACA,4BAA4B,sCAAsC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C,oBAAoB,2BAA2B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uDAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,sBAAsB;AACjG;AACA,YAAY,qDAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;AC1JA;AACA;AAC8C;AAClB;AACsB;AAClB;AACE;AACJ;AACsB;AACpD;AACA;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,8BAA8B;AACrE,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,gBAAgB,UAAU;AAC1B;AACA;AACA,sDAAsD;AACtD;AACA;AACA,qBAAqB,8CAAO;AAC5B;AACA,qBAAqB,8CAAO;AAC5B,gBAAgB,8BAA8B;AAC9C;AACA,iFAAiF,UAAU,WAAW,EAAE;AACxG;AACA,oCAAoC,qDAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,2CAA2C;AAC3C;AACA;AACA,kCAAkC,gBAAgB;AAClD,kCAAkC,6CAA6C;AAC/E;AACA,kDAAkD,0CAAO,GAAG,4CAAS;AACrE;AACA;AACA;AACA;AACA;AACA,wDAAwD,aAAa;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,wBAAwB,UAAU;AAClC,YAAY,oDAAkB,WAAW,WAAW;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE;AACnE;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA,qDAAqD,+BAA+B,qEAA0B,EAAE,yEAA4B,wBAAwB,cAAc;AAClL,qBAAqB;AACrB;AACA;AACA;AACA,0BAA0B,2CAAM;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA,4BAA4B,gBAAgB;AAC5C;AACA;AACA;AACA,8BAA8B,gBAAgB;AAC9C;AACA;AACA,4BAA4B;AAC5B,kCAAkC,oDAAoD;AACtF;AACA;AACA;AACA,6BAA6B;AAC7B,kCAAkC,0BAA0B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AChaA;AACA;AACA;AACqD;AACf;AACC;AACE;AACzC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA,cAAc,kEAA2B;AACzC;AACA;AACA,eAAe,wDAAgB;AAC/B;AACA;AACA,sBAAsB,aAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,sCAAsC;AAChE;AACA;AACA;AACA;AACA;AACA,0BAA0B,sCAAsC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,sCAAsC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,kCAAkC;AAClH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mDAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA,4BAA4B,qDAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,gDAAa;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mDAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,KAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA,eAAe,+DAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kDAAe;AAC3B,UAAU,4CAAS;AACnB,YAAY,oDAAiB;AAC7B,WAAW,mDAAgB;AAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/VA;AACA;AACA;AAC0C;AACwD;AACpD;AACV;AACN;AACc;AACN;AACN;AACQ;AACJ;AACI;AACU;AACV;AACA;AACA;AACU;AACR;AACU;AACE;AACR;AACR;AACQ;AACR;AACI;AACV;AACkB;AACV;AACA;AACF;AACQ;AACZ;AACE;AACE;AACM;AACE;AACR;AACM;AACA;AACV;AACkB;AACF;AAClB;AACK;AACrC;AACA;AACA;AACA,QAAQ,2CAAG;AACX;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,kDAAkD,YAAY,6CAA6C,EAAE;AAC7G;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF;AACjF;AACA;AACA,6BAA6B,YAAY,4BAA4B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA,gBAAgB,uCAAuC;AACvD;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mDAAY;AAC5B,0BAA0B,gEAAwB;AAClD;AACA;AACA,0BAA0B,6DAAqB;AAC/C;AACA;AACA,uBAAuB,6DAAqB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,8EAA8E,8CAA8C;AAC9J,0BAA0B,0CAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,8EAA8E,8CAA8C;AAC9J,0BAA0B,gDAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,kDAAS;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,kDAAS;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oDAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,kDAAS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gDAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,4BAA4B,6CAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA,eAAe;AACf,6BAA6B,+CAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,aAAa;AAC/C,gCAAgC,sDAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,oDAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,8CAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,kDAAS;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAc;AACxC;AACA;AACA;AACA;AACA,0BAA0B,mDAAU;AACpC;AACA;AACA;AACA;AACA,kCAAkC,qBAAqB,2EAAkC,YAAY,yEAAgC,EAAE;AACvI,+BAA+B,mDAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uEAAuE;AACzG,gCAAgC,qDAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,+BAA+B;AACjE,iCAAiC,uDAAY;AAC7C;AACA;AACA;AACA;AACA;AACA,wCAAwC,mCAAmC;AAC3E,6BAA6B,gDAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,4CAA4C;AAC9E,yBAAyB,wDAAY;AACrC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,+BAA+B;AACjE,8BAA8B,4DAAc;AAC5C;AACA;AACA;AACA;AACA;AACA,iCAAiC,wDAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sDAAW;AAC9B;AACA;AACA,mBAAmB,8DAAe;AAClC;AACA;AACA,4BAA4B,+CAAO;AACnC,qCAAqC,gEAAgB;AACrD;AACA;AACA;AACA;AACA;AACA,kCAAkC,aAAa;AAC/C,0BAA0B,0CAAK;AAC/B;AACA;AACA;AACA;AACA,8BAA8B,4DAAc;AAC5C;AACA;AACA;AACA;AACA;AACA,mBAAmB,kDAAS;AAC5B;AACA;AACA,kCAAkC,wBAAwB;AAC1D,2BAA2B,4CAAM;AACjC;AACA;AACA;AACA;AACA;AACA,yBAAyB,uCAAI;AAC7B;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,0BAA0B,yCAAK;AAC/B;AACA;AACA;AACA;AACA;AACA,wBAAwB,gDAAQ;AAChC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,kDAAS;AAClC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,4DAAc;AACjD;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sDAAW;AAC3C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,2BAA2B,4CAAM;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,YAAY,6CAA6C;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,mBAAmB,iDAAS;AAC5B;AACA;AACA,kCAAkC;AAClC;AACA,eAAe;AACf,0BAA0B,wDAAY;AACtC,sBAAsB,mEAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA,kCAAkC,WAAW;AAC7C,0BAA0B,wDAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,EAAE,uDAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1fvD,iBAAiB,SAAI,IAAI,SAAI;AAC7B,4BAA4B,+DAA+D,iBAAiB;AAC5G;AACA,oCAAoC,MAAM,+BAA+B,YAAY;AACrF,mCAAmC,MAAM,mCAAmC,YAAY;AACxF,gCAAgC;AAChC;AACA,KAAK;AACL;AAC0C;AACwD;AACpD;AACV;AACN;AACA;AACc;AACsB;AAClB;AACqF;AACvG;AACQ;AACE;AACO;AACnB;AACY;AACJ;AACA;AACiB;AACb;AACF;AACY;AACV;AACR;AACQ;AACA;AACU;AACJ;AACJ;AACI;AACJ;AACc;AACJ;AACE;AACtB;AACF;AACQ;AACQ;AACR;AACM;AACV;AACY;AACR;AACU;AAC6B;AACnC;AACV;AACsB;AACJ;AACJ;AACN;AAC+B;AAC/B;AACO;AACL;AACF;AACF;AACU;AAClB;AACgB;AACX;AACO;AACR;AACA;AACE;AACE;AACA;AACJ;AAC+B;AACnB;AACE;AACS;AACb;AACI;AACJ;AACR;AACF;AACA;AACY;AACV;AACc;AACP;AACpC;AACP;AACA;AACA;AACA,qBAAqB,8CAAO;AAC5B;AACA,gBAAgB,yCAAE;AAClB;AACA,kBAAkB,2CAAI;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,6CAAS;AAC3D,QAAQ,6DAAuB;AAC/B,QAAQ,2DAAsB;AAC9B,QAAQ,4DAAuB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,sBAAsB,6DAAuB;AAC7C;AACA;AACA;AACA,eAAe,oEAA8B;AAC7C;AACA;AACA,QAAQ,oEAA8B;AACtC;AACA;AACA,eAAe,2DAAqB;AACpC;AACA;AACA,QAAQ,2DAAqB;AAC7B;AACA;AACA,eAAe,gEAA0B;AACzC;AACA;AACA,QAAQ,gEAA0B;AAClC;AACA;AACA,eAAe,iEAA2B;AAC1C;AACA;AACA,QAAQ,iEAA2B;AACnC;AACA;AACA,eAAe,uDAAiB;AAChC;AACA;AACA,QAAQ,uDAAiB;AACzB;AACA;AACA,eAAe,iEAA2B;AAC1C;AACA;AACA,QAAQ,iEAA2B;AACnC;AACA;AACA,eAAe,gEAA0B;AACzC;AACA;AACA,QAAQ,gEAA0B;AAClC;AACA;AACA,eAAe,iEAA2B;AAC1C;AACA;AACA,QAAQ,iEAA2B;AACnC;AACA;AACA,eAAe,wDAAkB;AACjC;AACA;AACA,QAAQ,wDAAkB;AAC1B;AACA;AACA,eAAe,uDAAiB;AAChC;AACA;AACA,QAAQ,uDAAiB;AACzB;AACA;AACA,eAAe,oDAAc;AAC7B;AACA;AACA,eAAe,0DAAoB;AACnC;AACA;AACA,eAAe,oDAAc;AAC7B;AACA;AACA,eAAe,yDAAmB;AAClC;AACA;AACA,eAAe,4DAAsB;AACrC;AACA;AACA,eAAe,6DAAuB;AACtC;AACA;AACA,eAAe,2DAAqB;AACpC;AACA;AACA;AACA,eAAe,0DAAoB;AACnC;AACA;AACA,eAAe,4DAAsB;AACrC;AACA;AACA,kBAAkB,mDAAU;AAC5B,kBAAkB,mDAAU;AAC5B,oBAAoB,uDAAY;AAChC,eAAe,mDAAO;AACtB,eAAe,6CAAO;AACtB,YAAY,uCAAI;AAChB,YAAY,uCAAI;AAChB,mBAAmB,qDAAW;AAC9B,8BAA8B,2EAAsB;AACpD,qBAAqB,yDAAa;AAClC,mBAAmB,qDAAW;AAC9B,YAAY,wCAAI;AAChB,gBAAgB,gDAAQ;AACxB,iBAAiB,kDAAS;AAC1B,aAAa,0CAAK;AAClB,WAAW,sCAAG;AACd,iBAAiB,kDAAS;AAC1B,eAAe,8CAAO;AACtB,eAAe,8CAAO;AACtB,YAAY,wCAAI;AAChB,iBAAiB,kDAAS;AAC1B,gBAAgB,gDAAQ;AACxB,sBAAsB,4DAAc;AACpC,iBAAiB,kDAAS;AAC1B,aAAa,0CAAK;AAClB,iBAAiB,kDAAS;AAC1B,iBAAiB,kDAAS;AAC1B,sBAAsB,4DAAc;AACpC,oBAAoB,wDAAY;AAChC,kBAAkB,oDAAU;AAC5B,oBAAoB,wDAAY;AAChC,kBAAkB,oDAAU;AAC5B,gBAAgB,gDAAQ;AACxB,uBAAuB,8DAAe;AACtC,wBAAwB,gEAAgB;AACxC,aAAa,0CAAK;AAClB,YAAY,wCAAI;AAChB,gBAAgB,gDAAQ;AACxB,oBAAoB,wDAAY;AAChC,gBAAgB,gDAAQ;AACxB,mBAAmB,sDAAW;AAC9B,cAAc,4CAAM;AACpB,oBAAoB,wDAAY;AAChC,gBAAgB,gDAAQ;AACxB,qBAAqB,0DAAa;AAClC,gBAAgB,gDAAQ;AACxB,kBAAkB,oDAAU;AAC5B,kBAAkB,yDAAU;AAC5B,aAAa,0CAAK;AAClB,sBAAsB,4DAAc;AACpC,oBAAoB,wDAAY;AAChC,iBAAiB,kDAAS;AAC1B,qBAAqB,0DAAa;AAClC,iBAAiB,kDAAS;AAC1B,kBAAkB,oDAAU;AAC5B,iBAAiB,kDAAS;AAC1B,gBAAgB,gDAAQ;AACxB,YAAY,wCAAI;AAChB,oBAAoB,wDAAY;AAChC,cAAc,6CAAM;AACpB,kBAAkB,oDAAU;AAC5B,cAAc,4CAAM;AACpB,eAAe,8CAAO;AACtB,gBAAgB,gDAAQ;AACxB,gBAAgB,gDAAQ;AACxB,cAAc,4CAAM;AACpB,mBAAmB,sDAAW;AAC9B,oBAAoB,wDAAY;AAChC,qBAAqB,0DAAa;AAClC,gBAAgB,gDAAQ;AACxB,mBAAmB,sDAAW;AAC9B,qBAAqB,0DAAa;AAClC,mBAAmB,sDAAW;AAC9B,eAAe,8CAAO;AACtB,cAAc,4CAAM;AACpB,cAAc,4CAAM;AACpB,eAAe,8CAAO;AACtB,sBAAsB,4DAAc;AACpC,aAAa,0CAAK;AAClB,aAAa,+CAAK;AAClB;AACA;AACA,mCAAmC,oEAA2B;AAC9D,iCAAiC,kEAAyB;AAC1D,oCAAoC,sEAA4B;AAChE,kCAAkC,oEAA0B;AAC5D,mBAAmB,qDAAW;AAC9B,uBAAuB,yDAAe;AACtC,qBAAqB,kDAAa;AAClC,kBAAkB,8CAAU;AAC5B,iBAAiB,6CAAS;AAC1B,wBAAwB,wDAAgB;AACxC,wBAAwB,wDAAgB;AACxC,2BAA2B,2DAAmB;AAC9C,mBAAmB,uDAAW;AAC9B,6BAA6B,kEAAqB;AAClD,iBAAiB,mDAAS;AAC1B,2BAA2B,8DAAmB;AAC9C,yBAAyB,yDAAiB;AAC1C,iBAAiB,8CAAS;;;;;;;;;;;;;;;;;;AClV1B,iBAAiB,SAAI,IAAI,SAAI;AAC7B,4BAA4B,+DAA+D,iBAAiB;AAC5G;AACA,oCAAoC,MAAM,+BAA+B,YAAY;AACrF,mCAAmC,MAAM,mCAAmC,YAAY;AACxF,gCAAgC;AAChC;AACA,KAAK;AACL;AACiC;AAC1B;AACP;AACA;AACA;AACA,CAAC,gCAAgC;AAC1B;AACP;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,KAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8CAA8C;AAC9D,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D,sBAAsB,oBAAoB,EAAE,KAAK;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,QAAQ;AAC3D,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,0BAA0B,mBAAmB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC9XO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;;;;;;;;;;;;;;;AC97GA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA,mBAAmB,uBAAuB;AAC1C,mBAAmB,sBAAsB;AACzC,mBAAmB,sBAAsB;AACzC,mBAAmB,uBAAuB;AAC1C,mBAAmB,wBAAwB;AAC3C,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,2BAA2B,uBAAuB;AAClD,yBAAyB,aAAa;AACtC,aAAa;AACb;AACA,2BAA2B,cAAc;AACzC,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;;;;;;;;;;;;;;;ACrhBO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;;;;;;;;;;;;;;;AC7EO;AACP;AACA;AACA,cAAc;AACd;;;;;;;;;;;;;;;ACJO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACr2BA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA,mBAAmB,uBAAuB;AAC1C,mBAAmB,sBAAsB;AACzC,mBAAmB,sBAAsB;AACzC,mBAAmB,uBAAuB;AAC1C,mBAAmB,wBAAwB;AAC3C,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;;;;;;;;;;;;;;;AC7aO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;;;;;;;;;;;;;;;AC9pCO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA,mBAAmB,uBAAuB;AAC1C,mBAAmB,sBAAsB;AACzC,mBAAmB,sBAAsB;AACzC,mBAAmB,uBAAuB;AAC1C,mBAAmB,wBAAwB;AAC3C,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,2BAA2B,uBAAuB;AAClD,yBAAyB,aAAa;AACtC,aAAa;AACb;AACA,2BAA2B,cAAc;AACzC,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;;;;;;;;;;;;;;;;;;;;AC3gBA;AACA;AACA;AACA;AAC6C;AACF;AACI;AACJ;AACI;AAC/C;AACA,YAAY,UAAU;AACtB;AACO;AACP,IAAI,0DAAW;AACf,IAAI,4DAAY;AAChB,IAAI,4DAAY;AAChB,IAAI,wDAAU;AACd,IAAI,wDAAU;AACd;AACA;AACA;;;;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC+B;AACgB;AACI;AAC5C;AACP,IAAI,4CAAS,YAAY,wDAAW,EAAE,4DAAc;AACpD;;;;;;;;;;;;;;;;;;ACfA;AACA;AAC+B;AACc;AACI;AAC1C;AACP,IAAI,4CAAS,WAAW,sDAAU,EAAE,0DAAa;AACjD;;;;;;;;;;;;;;;;;;ACPA;AACA;AAC+B;AACkB;AACI;AAC9C;AACP,IAAI,4CAAS,aAAa,0DAAY,EAAE,8DAAe;AACvD;;;;;;;;;;;;;;;;;;ACPA;AACA;AAC+B;AACc;AACI;AAC1C;AACP,IAAI,4CAAS,WAAW,sDAAU,EAAE,0DAAa;AACjD;;;;;;;;;;;;;;;;;;ACPA;AACA;AAC+B;AACkB;AACI;AAC9C;AACP,IAAI,4CAAS,aAAa,0DAAY,EAAE,8DAAe;AACvD;;;;;;;;;;;;;;;ACPO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;;;;;;;;;;;;;;;AC9kDA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA,mBAAmB,uBAAuB;AAC1C,mBAAmB,sBAAsB;AACzC,mBAAmB,sBAAsB;AACzC,mBAAmB,uBAAuB;AAC1C,mBAAmB,wBAAwB;AAC3C,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,2BAA2B,uBAAuB;AAClD,yBAAyB,aAAa;AACtC,aAAa;AACb;AACA,2BAA2B,cAAc;AACzC,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;;;;;;;;;;;;;;;AChjBO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;;;;;;;;;;;;;;;AC91BO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC91BA;AACA;AAC+B;AACkB;AACY;AACR;AAC9C;AACP;AACA;AACA,yBAAyB,8DAAc;AACvC,gBAAgB,iCAAiC;AACjD,QAAQ,4CAAS;AACjB;AACA;AACA;AACA,QAAQ,sEAA0B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,yBAAyB,sEAAkB;AAC3C,gBAAgB,iCAAiC;AACjD,QAAQ,4CAAS;AACjB;AACA;AACA;AACA,QAAQ,sEAA0B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACnDA;AACA;AAC8B;AACA;AACQ;AACc;AACpB;AACkB;AAChB;AACU;AACM;AACW;AAC7B;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+CAAQ;AACtC;AACA;AACA;AACA;AACA,iDAAiD,sBAAsB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,0BAA0B;AACtE;AACA,YAAY,kDAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,8CAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,gDAAgD,qCAAqC,0DAAqB,oBAAoB;AAC9H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,sBAAsB,IAAI;AAClE;AACA,0CAA0C,6DAAe;AACzD,6BAA6B,qDAAW;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,kCAAkC,cAAc,4DAAuB,kCAAkC;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kDAAe;AACnC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,8BAA8B,uCAAuC,SAAS,wCAAwC,OAAO,6BAA6B;AAC1J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,eAAe;AACjD,+EAA+E,kBAAkB;AACjG;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA,0BAA0B,0CAAK,CAAC,mDAAc,UAAU,oDAAe;AACvE;AACA,0CAA0C,wDAAqB;AAC/D;AACA;AACA,wCAAwC,kCAAkC;AAC1E,6CAA6C,yCAAyC;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA,8BAA8B,0CAAK,CAAC,mDAAc,UAAU,oDAAe;AAC3E;AACA,6BAA6B,0CAAK,CAAC,mDAAc,UAAU,oDAAe;AAC1E;AACA,uCAAuC,wDAAqB;AAC5D;AACA;AACA,4CAA4C,+BAA+B;AAC3E;AACA,2DAA2D,+BAA+B;AAC1F;AACA;AACA;AACA;AACA;AACA,YAAY,2DAAc;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uDAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uDAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,4DAAuB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA,gBAAgB,qCAAqC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA,oCAAoC,sDAAiB;AACrD,0BAA0B,+CAAY;AACtC;AACA,yCAAyC,mDAAY;AACrD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,+CAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA,2CAA2C,6DAAe;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,qDAAW;AACzE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA,gBAAgB,qCAAqC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,gBAAgB,8CAA8C;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,8CAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAuB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uBAAuB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,yCAAyC;AAClF;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,oBAAoB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,6BAA6B;AACrE;AACA,2EAA2E,wDAAoB;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACr2BA;AACA;AACA;AACA;AACA;AACuC;AACD;AACtC;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,oCAAoC,EAAE,IAAI,EAAE;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,eAAe,GAAG,iBAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACnNA;AACA;AACA;AACA;AACqD;AACG;AACtB;AACc;AACT;AACD;AAC/B,6BAA6B,+CAAQ;AAC5C;AACA;AACA;AACA;AACA,wBAAwB,6DAAsB,EAAE;AAChD;AACA;AACA,2BAA2B;AAC3B,2BAA2B;AAC3B;AACA;AACA;AACA,eAAe,+DAAuB;AACtC;AACA;AACA;AACA,gBAAgB,0BAA0B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA,kCAAkC,gEAAoB;AACtD;AACA,iCAAiC,6DAAsB;AACvD,oDAAoD,+DAA0B;AAC9E;AACA,iCAAiC,6DAAsB;AACvD,gDAAgD,+DAA0B;AAC1E;AACA;AACA,gCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA,oBAAoB,uCAAuC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6DAAsB;AAC9C;AACA,mDAAmD;AACnD;AACA;AACA,6BAA6B,8DAAuB;AACpD;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,aAAa,IAAI;AAC5C;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,8DAAuB;AACxC;AACA;AACA;AACA,iBAAiB,8DAAuB;AACxC;AACA;AACA;AACA,iBAAiB,6DAAsB;AACvC;AACA;AACA,iBAAiB,8DAAuB;AACxC;AACA;AACA;AACA,0BAA0B,+CAAY,oCAAoC,eAAe;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kDAAe;AAC3B;AACA,YAAY,kDAAe;AAC3B,WAAW,mDAAgB;AAC3B;;;;;;;;;;;;;;;;;;ACnKA;AACA;AACA;AACgD;AACK;AACf;AACtC;AACO,wBAAwB,yDAAa;AAC5C;AACA,eAAe,0DAAkB;AACjC;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA,gBAAgB,wDAAY;AAC5B;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AC7DA;AACA;AAC4C;AACsB;AAC9B;AACF;AACK;AACQ;AACxC;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,kCAAkC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,KAAK,GAAG,SAAS;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,mEAA8B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,oBAAoB,6CAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qDAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sDAAc;AAC7B;AACA;AACA,uCAAuC,SAAS,EAAE,KAAK,EAAE,IAAI;AAC7D,wCAAwC,SAAS,EAAE,IAAI;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS,GAAG,KAAK,GAAG,IAAI;AACxE;AACA,sDAAsD,MAAM;AAC5D,gDAAgD,SAAS,GAAG,IAAI;AAChE;AACA;AACA;AACA;AACA,QAAQ,8CAAO;AACf;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA,yBAAyB;AACzB;AACA,kBAAkB,+CAAY,sBAAsB,MAAM;AAC1D;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA,sBAAsB,+CAAY,sBAAsB,MAAM;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,2EAAsB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qDAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qDAAW;AACnC;AACA;AACA,eAAe,8CAAO,oCAAoC,WAAW;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACxYA;AAC8B;AACS;AAChC,wBAAwB,uCAAI;AACnC;AACA;AACA,uCAAuC,6BAA6B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0DAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACxDA;AACwC;AACV;AACI;AACK;AACD;AAC/B,wBAAwB,iDAAS;AACxC;AACA,8BAA8B,kBAAkB,+DAA0B,6DAA6D;AACvI;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0DAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,8CAAW,2BAA2B,8CAAW;AACxE;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,+DAA0B;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,4CAAS;AACpD;AACA;AACA,gEAAgE,4CAAS;AACzE,qCAAqC,uDAAkB;AACvD;AACA;AACA;AACA,mDAAmD,0CAAO;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;AC1IA;AACA;AACA;AACA;AACA;AACA;AAC8B;AACU;AACF;AACE;AACF;AACJ;AACA;AACkB;AACvB;AACG;AAChC;AACA;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACO,6BAA6B,+CAAQ;AAC5C;AACA;AACA;AACA;AACA,wBAAwB,6DAAsB;AAC9C;AACA;AACA;AACA;AACA,yBAAyB,yCAAK;AAC9B;AACA;AACA,wBAAwB,sDAAiB;AACzC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAuB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6BAA6B;AACrD;AACA;AACA,iCAAiC,uDAAW;AAC5C;AACA;AACA;AACA,gCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;AACA,8BAA8B,yCAAyC;AACvE;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA,0GAA0G,oEAA4B;AACtI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iDAAS;AAC1C;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uCAAI;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,oEAA4B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uDAAW;AAC5C,4CAA4C,+CAAQ,GAAG,2CAAM;AAC7D;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AChJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC8B;AACM;AACG;AAChC,2BAA2B,6CAAO;AACzC;AACA,eAAe,6DAAqB;AACpC;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA,2BAA2B,kDAAe,CAAC,GAAG;AAC9C;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3BA;AACA;AAC6B;AACA;AACE;AACL;AACH;AACA;AACO;AACW;AACT;AACF;AACP;AACI;AACC;AACJ;AACF;AACM;AACF;AACA;AACH;AACA;AACvB;AAC4B;AACD;AACM;AACL;AACJ;AACI;AACA;AACK;AACF;AACF;AACE;AACF;AACF;AACO;AACC;AACX;AACD;AACI;AACI;AACJ;AACG;AACL;AACM;AACJ;AACK;AACL;AACE;AACL;AACO;AACE;AACF;AACH;AACI;AACJ;AACM;AACH;AACF;AACD;AACD;AACE;AACN;AACS;AACD;AACL;AACG;AACJ;AACzB;AAC0B;AACC;AACA;AACF;AACK;AACC;AACC;AACL;AACA;AACG;AACC;AACC;AACF;AACJ;AACD;AACA;AACG;AACL;AACvB;AACsB;AACI;AACO;AACT;AACF;;;;;;;;;;;;;;;;;AC7FtB;AACA;AACA;AACA;AACA;AACgC;AACM;AAC/B;AACP;AACA,yBAAyB,yCAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,oDAAgB;AAClD;AACA,sBAAsB,+CAAY,0CAA0C,SAAS;AACrF;AACA,uFAAuF,oDAAgB;AACvG;AACA;AACA;AACA,6BAA6B,sDAAkB;AAC/C,wBAAwB,IAAI,sDAAkB,EAAE;AAChD,+CAA+C,sDAAkB;AACjE,6BAA6B,+CAAW;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACgC;AACuC;AACrC;AACK;AACN;AAC1B,2BAA2B,yDAAa;AAC/C;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAA2B;AACpD,kCAAkC;AAClC;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,eAAe,6DAAqB;AACpC;AACA;AACA;AACA;AACA;AACA,6BAA6B,2DAAsB;AACnD,0BAA0B,yCAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,wDAAmB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,cAAc;AACtC;AACA;AACA;AACA;AACA;AACA,6BAA6B,2BAA2B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,uBAAuB,wDAAmB,CAAC,8CAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,qEAAyB;AACrE;AACA;AACA;AACA;AACA,4BAA4B,yBAAyB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;;;;;;;;;;;;;;;;;;ACnSA;AACA;AAC8C;AAChB;AACS;AAChC,yBAAyB,uCAAI;AACpC;AACA,gBAAgB,eAAe;AAC/B,gCAAgC,uDAAY;AAC5C;AACA;AACA;AACA;AACA,eAAe,2DAAmB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AClCA;AACA;AACoC;AACG;AACQ;AACxC;AACP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,uBAAuB,6CAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8CAAO,sCAAsC,UAAU;AAC/D,eAAe,8CAAO,oCAAoC,UAAU;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,+CAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD,SAAS;AACT;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1LA;AACA;AACA;AACA;AACA;AACA;AAC0C;AACA;AACI;AAChB;AACc;AAChB;AACsB;AACA;AACJ;AACR;AACM;AACJ;AACM;AACX;AACI;AACI;AACP;AACpC;AACA;AACA;AACA;AACA,QAAQ,2CAAG;AACX;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,yDAAgB,SAAS,2DAAkB;AACnD,QAAQ,6DAAkB,SAAS,6DAAoB;AACvD,QAAQ,4CAAU,SAAS,qDAAY;AACvC,QAAQ,kEAAqB,SAAS,gEAAuB;AAC7D,QAAQ,0DAAiB,SAAS,4DAAmB;AACrD,QAAQ,oDAAa,SAAS,wDAAe;AAC7C,QAAQ,kEAAqB,SAAS,gEAAuB;AAC7D,QAAQ,8DAAmB,SAAS,8DAAqB;AACzD,QAAQ,+DAAmB,SAAS,8DAAqB;AACzD,QAAQ,8DAAmB,SAAS,8DAAqB;AACzD,QAAQ,sDAAe,SAAS,0DAAiB;AACjD,QAAQ,0DAAiB,SAAS,4DAAmB;AACrD,QAAQ,4DAAkB,SAAS,6DAAoB;AACvD,QAAQ,8CAAW,SAAS,sDAAa;AACzC,QAAQ,qDAAc,SAAS,yDAAgB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAoB,iBAAiB,2DAAkB;AAC/D;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACpIA;AACA;AACA;AACA;AACoC;AACJ;AACM;AACkB;AACtB;AACc;AACE;AACjB;AACjC;AACA;AACA;AACA,6BAA6B,+CAAQ,GAAG,+BAA+B;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,+BAA+B,6CAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAuB;AACjD,8CAA8C,yJAAyJ,+DAA0B,kDAAkD,+DAA0B,2EAA2E;AACxX;AACA;AACA;AACA;AACA,eAAe,iEAAyB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC,YAAY,qDAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,uEAA2B;AAC3E,yCAAyC,qDAAS;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yDAAa;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC7LA;AACA;AACsC;AACtC;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,wBAAwB;AAC9C,kBAAkB,yBAAyB;AAC3C,kBAAkB,wBAAwB;AAC1C,kBAAkB,yBAAyB;AAC3C,kBAAkB,wBAAwB;AAC1C,kBAAkB,wBAAwB;AAC1C,oBAAoB,yBAAyB;AAC7C,kBAAkB,wBAAwB;AAC1C,kBAAkB,yBAAyB;AAC3C,kBAAkB,wBAAwB;AAC1C,kBAAkB,yBAAyB;AAC3C,kBAAkB,wBAAwB;AAC1C,sBAAsB,wBAAwB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,2BAA2B;AAC5C,kBAAkB,2BAA2B;AAC7C,oBAAoB,2BAA2B;AAC/C,qBAAqB,2BAA2B;AAChD,kBAAkB,4BAA4B;AAC9C,mBAAmB,4BAA4B;AAC/C,iBAAiB,2BAA2B;AAC5C,kBAAkB,2BAA2B;AAC7C,oBAAoB,2BAA2B;AAC/C,qBAAqB,2BAA2B;AAChD,kBAAkB,2BAA2B;AAC7C,mBAAmB,2BAA2B;AAC9C,iBAAiB,2BAA2B;AAC5C,kBAAkB,2BAA2B;AAC7C,oBAAoB,2BAA2B;AAC/C,qBAAqB,2BAA2B;AAChD,kBAAkB,2BAA2B;AAC7C,mBAAmB,2BAA2B;AAC9C,iBAAiB,2BAA2B;AAC5C,kBAAkB,2BAA2B;AAC7C,oBAAoB,2BAA2B;AAC/C,qBAAqB,2BAA2B;AAChD,kBAAkB,2BAA2B;AAC7C,mBAAmB,2BAA2B;AAC9C,iBAAiB,2BAA2B;AAC5C,kBAAkB,2BAA2B;AAC7C,oBAAoB,2BAA2B;AAC/C,qBAAqB,2BAA2B;AAChD,kBAAkB,2BAA2B;AAC7C,mBAAmB,2BAA2B;AAC9C,iBAAiB,2BAA2B;AAC5C,kBAAkB,2BAA2B;AAC7C,oBAAoB,4BAA4B;AAChD,qBAAqB,4BAA4B;AACjD,kBAAkB,2BAA2B;AAC7C,mBAAmB,2BAA2B;AAC9C,iBAAiB,4BAA4B;AAC7C,kBAAkB,4BAA4B;AAC9C,oBAAoB,2BAA2B;AAC/C,qBAAqB,2BAA2B;AAChD,kBAAkB,4BAA4B;AAC9C,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,iCAAiC,UAAU;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,uCAAuC,WAAW;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,2CAA2C,eAAe;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,wCAAwC,UAAU;AACpF;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,4CAA4C,cAAc;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,uCAAuC,UAAU;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+CAAY,uCAAuC,KAAK,IAAI,UAAU;AAChG;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,uCAAuC,KAAK,IAAI,UAAU;AAC5F;AACA;AACA;AACA,4BAA4B,eAAe;AAC3C;AACA;AACA;AACA;AACA,6BAA6B,eAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,uCAAuC,UAAU;AACnF;AACA;AACA,sBAAsB,+CAAY,mCAAmC,MAAM,IAAI,MAAM;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AClXA;AACA;AAC8B;AACY;AACR;AACI;AACC;AACQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,mBAAmB,+CAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,wDAAwD,2BAA2B;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,yDAAoB;AACzC,wDAAwD,yDAAoB;AAC5E;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,sCAAsC;AACtC,uCAAuC;AACvC,0BAA0B;AAC1B,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qDAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kDAAe;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D,QAAQ,uDAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,sDAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,oBAAoB,2DAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,UAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,4DAAuB;AACzC;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,4DAAuB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,+CAAY;AAC9B;AACA;AACA;AACA,kBAAkB,+CAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AC7eA;AACA;AAC4C;AACZ;AACF;AACA;AACI;AACK;AACa;AACpD;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,gEAA2B;AAC7C;AACA,qBAAqB,sDAAiB;AACtC;AACA,QAAQ,4DAAuB;AAC/B;AACA;AACA;AACA,cAAc,sDAAiB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAyB;AACjC;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,uBAAuB,uCAAI;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,0CAAO;AAClE;AACA;AACA;AACA,qBAAqB,yDAAoB;AACzC,QAAQ,8CAAO,6DAA6D,cAAc,cAAc,cAAc;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,6DAA6D,+DAA0B,EAAE;AACzF;AACA;AACA;AACA,eAAe,yDAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,6CAAU;AACrD,0BAA0B,4DAAuB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA,mBAAmB,qDAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,0CAAO;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gBAAgB,MAAM,mBAAmB,0CAAO,iBAAiB;AACnG;AACA;AACA;AACA;AACA;AACA,YAAY,qDAAiB;AAC7B,iEAAiE,eAAe,yBAAyB,eAAe;AACxH,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACnNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACwC;AACF;AACJ;AACK;AACP;AACzB,2BAA2B,+CAAQ;AAC1C;AACA;AACA;AACA,wBAAwB,6DAAsB;AAC9C;AACA;AACA;AACA,SAAS;AACT;AACA,6BAA6B,iDAAS;AACtC,yBAAyB,yCAAK;AAC9B;AACA;AACA,wBAAwB,sDAAiB;AACzC,SAAS;AACT;AACA;AACA;AACA,eAAe,6DAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACpEA;AACA;AACA;AACgC;AACM;AACR;AACI;AACU;AACM;AACE;AACpD;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,uBAAuB,+CAAQ;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yDAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,0CAA0C,UAAU;AACtF;AACA;AACA;AACA,yBAAyB,yCAAK;AAC9B,kCAAkC,mBAAmB;AACrD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA,eAAe,yDAAiB;AAChC;AACA;AACA,0BAA0B,4DAAuB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,6CAA6C;AAC7C;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,8CAAO;AAC5C,oFAAoF,8DAAuB;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,8DAAuB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAuB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,yCAAK,CAAC,2DAAsB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,yCAAK,CAAC,2DAAsB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,4CAAS;AACrC;AACA,YAAY,qDAAS;AACrB;AACA,gCAAgC,4CAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,4CAAS;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,oEAA0B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AClRA;AACA;AACA;AACgC;AACwB;AACtB;AACkB;AACpD;AACO,0BAA0B,+CAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,6DAAsB;AACpG,qBAAqB,4DAAuB;AAC5C,sBAAsB,4DAAuB;AAC7C;AACA;AACA,eAAe,4DAAoB;AACnC;AACA;AACA;AACA;AACA,4BAA4B,sBAAsB;AAClD,iDAAiD,4DAAqB;AACtE,iDAAiD,6DAAsB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA,wBAAwB,6DAAsB;AAC9C;AACA;AACA;AACA,wBAAwB,4DAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,4DAAuB;AAC5C,sBAAsB,4DAAuB;AAC7C,YAAY,uDAAW;AACvB,yBAAyB,4DAAuB;AAChD,0BAA0B,4DAAuB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,sBAAsB;AACjG;AACA;AACA,6BAA6B,8DAAuB;AACpD,YAAY,qDAAiB;AAC7B;AACA,aAAa;AACb;AACA,kCAAkC,6DAAsB;AACxD,YAAY,qDAAiB;AAC7B;AACA,aAAa;AACb;AACA;AACA;;;;;;;;;;;;;;;;ACxFA;AACA;AACA;AAC2C;AAC3C;AACA;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,cAAc;AACnE,kDAAkD,4BAA4B;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACnNA;AACA;AACoC;AACiB;AACrB;AACE;AACK;AACI;AAC3C;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yCAAK,2BAA2B,0BAA0B;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,2BAA2B,6CAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,6DAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAuB,gCAAgC,mCAAmC;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAuB,gCAAgC,mCAAmC;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAU;AACtB;AACA,YAAY,kDAAe;AAC3B,WAAW,mDAAgB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACtPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,2BAA2B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA,2BAA2B,yEAAyE;AACpG;AACA;AACA;AACA;AACA;AACA,oIAAoI;AACpI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACnHA;AACA;AACuC;AAChC;AACP;AACA,eAAe,8DAAsB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACtCA;AACA;AACgD;AACN;AACI;AACR;AACU;AACzC;AACP;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACO;AACP;AACA;AACA;AACA;AACA,CAAC,kDAAkD;AACnD;AACA;AACA;AACO;AACP;AACA,YAAY,2DAAe;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+CAAY,gDAAgD,aAAa;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,kDAAY;AACjC,8BAA8B,+CAAY;AAC1C;AACA;AACA;AACA,8BAA8B,+CAAY;AAC1C;AACA,+BAA+B,yDAAa;AAC5C;AACA;AACA,qBAAqB,+CAAS;AAC9B,8BAA8B,+CAAY;AAC1C;AACA,+BAA+B,mDAAU;AACzC;AACA;AACA,0BAA0B,+CAAY,8CAA8C,QAAQ;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC9HA;AACgC;AACQ;AACN;AACK;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,yBAAyB,iDAAS;AACzC;AACA,eAAe,2DAAmB;AAClC;AACA;AACA,yCAAyC,+CAA+C;AACxF;AACA,0BAA0B,yCAAK,YAAY,4DAAuB;AAClE;AACA,SAAS;AACT;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxBA;AACA;AAC4C;AACd;AACM;AACiB;AACP;AACQ;AACE;AACT;AACD;AACJ;AACF;AACH;AACH;AACc;AACE;AACZ;AACtC;AACA;AACA;AACA;AACA,KAAK,2DAAgB;AACrB,KAAK,gDAAa;AAClB,KAAK,gEAAqB;AAC1B,KAAK,mEAAsB;AAC3B;AACA;AACA,KAAK,mEAAsB;AAC3B,KAAK,gEAAqB;AAC1B,KAAK,2DAAgB;AACrB,KAAK,gDAAa;AAClB;AACO,oBAAoB,6CAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,uCAAuC,wHAAwH,gEAA0B,oHAAoH;AAC7S,wBAAwB;AACxB,wCAAwC;AACxC;AACA;AACA,6BAA6B,kDAAO,yBAAyB,6DAAkB,GAAG,2DAAgB;AAClG;AACA,gCAAgC,kDAAO,0BAA0B,6DAAkB,GAAG,2DAAgB;AACtG;AACA;AACA,eAAe,uDAAc;AAC7B;AACA;AACA;AACA;AACA,0BAA0B,6DAAuB;AACjD;AACA;AACA;AACA;AACA,0BAA0B,6DAAuB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4BAA4B;AACpD,4CAA4C,eAAe;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,iEAA2B;AAChE;AACA;AACA,0DAA0D,iEAA2B;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,qFAAqF,iEAA2B,EAAE;AACjJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA,sBAAsB,gDAAY;AAClC;AACA;AACA;AACA,8BAA8B,uEAA2B;AACzD;AACA;AACA;AACA,oDAAoD,uEAA2B;AAC/E;AACA;AACA;AACA;AACA,qCAAqC,mEAAwB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,wDAAU;AAC1C;AACA;AACA;AACA;AACA,gCAAgC,+CAAK;AACrC;AACA;AACA;AACA;AACA,iCAAiC,uDAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mDAAU;AAC1C;AACA;AACA;AACA,wCAAwC;AACxC,gCAAgC,kDAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qDAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,qEAAyB;AAC5D;AACA;AACA;AACA;AACA;AACA,gBAAgB,6BAA6B,EAAE,sDAAW;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mEAAwB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uEAA2B;AAClD;AACA,yBAAyB,qEAAyB;AAClD;AACA;AACA;AACA;AACA;AACA,kDAAkD,gDAAa;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,qEAAyB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uEAA2B;AAClD;AACA,0DAA0D,gEAAqB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,qEAAyB;AAC9E;AACA;AACA;AACA;AACA,uBAAuB,uEAA2B;AAClD;AACA,2DAA2D,mEAAsB;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,qEAAyB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uEAA2B;AAClD;AACA,6BAA6B,uDAAY;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,uEAA2B;AAC9E;AACA;AACA,8BAA8B,qEAAyB;AACvD;AACA;AACA,6BAA6B,uCAAI;AACjC;AACA;AACA;AACA,6CAA6C,qEAAyB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,0DAAa;AAC1C;AACA;AACA;AACA,uDAAuD,qEAAyB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,uEAA2B;AAC1E,+CAA+C,qEAAyB;AACxE;AACA;AACA,gEAAgE,mEAAwB;AACxF;AACA,0CAA0C,kDAAO,CAAC,6DAAkB;AACpE;AACA;AACA,0CAA0C,kDAAO,CAAC,2DAAgB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA,6BAA6B,sDAAS;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAY;AAClC;AACA;AACA,sBAAsB,gDAAY;AAClC;AACA;AACA,sBAAsB,gDAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAY;AAClC;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,kFAAkF;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,iDAAiD,uEAA2B,EAAE,yDAAgB;AAC9F;AACA,0CAA0C,mEAAwB;AAClE;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA,iDAAiD,uEAA2B,EAAE,yDAAgB;AAC9F;AACA,0CAA0C,mEAAwB;AAClE;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,iDAAiD,uEAA2B,EAAE,+DAAsB;AACpG;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA,iDAAiD,uEAA2B,EAAE,+DAAsB;AACpG;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,YAAY,kDAAe;AAC3B;AACA,YAAY,oDAAiB;AAC7B,WAAW,mDAAgB;AAC3B;;;;;;;;;;;;;;;;;;;ACrsBA;AACA;AACA;AACuE;AACrC;AACK;AAChC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kCAAkC;AAC5B,sBAAsB,yDAAa;AAC1C;AACA;AACA,yBAAyB,gEAA2B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAA2B;AACpD;AACA;AACA;AACA,eAAe,wDAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACjMA;AACA;AACoC;AACiB;AACrB;AACE;AACK;AACD;AACtC;AACA;AACA,kBAAkB,+CAAY;AAC9B;AACA;AACA,6BAA6B;AAC7B,+BAA+B;AAC/B;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,6BAA6B,6CAAO;AAC3C;AACA;AACA,yBAAyB,gEAA2B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAuB;AACtC;AACA;AACA;AACA,wBAAwB,2BAA2B,GAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,qCAAqC,wBAAwB;AAC7D,SAAS;AACT;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qDAAiB;AACjC,gBAAgB,qDAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+CAAY,qDAAqD,UAAU;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAU;AACtB;AACA,YAAY,oDAAiB;AAC7B,WAAW,mDAAgB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC9OA;AACA;AACA;AACA;AACA;AACA;AACA;AACoC;AACE;AACC;AACD;AAC/B,2BAA2B,6CAAO;AACzC;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA,wBAAwB,8DAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,6DAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,8DAAuB,iBAAiB,8DAAuB;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,8DAAuB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC/JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACoC;AACF;AACa;AACR;AACD;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,wBAAwB,6CAAO;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0DAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,mEAA8B;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,EAAE,uDAAiB;AACzD;AACA;AACA;AACA;AACA;AACA,8BAA8B,wDAAiB;;;;;;;;;;;;;;;;;;;ACjR/C;AACA;AACA;AACA;AACoC;AACG;AACN;AAC1B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AAChD,4BAA4B,6CAAO;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8DAAsB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC4C;AACN;AACA;AACR;AACkB;AACd;AACK;AACsB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA,iFAAiF,0CAAO;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,8CAAO;AACrC;AACA;AACA;AACA;AACA;AACO,wBAAwB,yDAAa;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,yDAAoB;AACzC,QAAQ,8CAAO,6DAA6D,cAAc,cAAc,cAAc;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,6DAA6D,+DAA0B;AACvF;AACA,6EAA6E;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oGAAoG,0CAAO;AAC3G;AACA;AACA;AACA;AACA;AACA,eAAe,0DAAkB;AACjC;AACA;AACA;AACA;AACA;AACA,eAAe,0CAAO;AACtB;AACA;AACA;AACA;AACA;AACA,eAAe,4CAAS;AACxB;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAuB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,4DAAuB;AACnD;AACA;AACA,iCAAiC,4DAAuB;AACxD;AACA;AACA,4BAA4B,4DAAuB;AACnD;AACA;AACA,iCAAiC,4DAAuB;AACxD;AACA;AACA;AACA,0DAA0D,oDAAY,2CAA2C,oDAAY;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uCAAI,GAAG,uBAAuB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,0CAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,WAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,+CAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,0CAAO,GAAG,4CAAS;AACzE;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,0BAA0B,yDAAoB;AAC9C;AACA,0BAA0B,+CAAY,qDAAqD,IAAI;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA,gBAAgB,2CAA2C;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,8DAAyB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,oBAAoB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qDAAW;AAC9B;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,6CAAU;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,8CAAO;AAC9B;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA,gBAAgB,4BAA4B,EAAE,wDAAiB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,0CAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,4CAAS;AACvF;AACA;AACA,kGAAkG,0CAAO;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,0CAAO;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB,kBAAkB,QAAQ;AAC1B,kBAAkB,QAAQ;AAC1B,kBAAkB,aAAa;AAC/B,kBAAkB,aAAa;AAC/B,kBAAkB,QAAQ;AAC1B;AACA,kBAAkB,QAAQ;AAC1B,kBAAkB,cAAc;AAChC;AACA,kBAAkB,cAAc;AAChC,kBAAkB,QAAQ;AAC1B,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yBAAyB,WAAW,IAAI;AACxD;AACA;AACA,iEAAiE,6CAAU;AAC3E;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA,gBAAgB,iKAAiK;AACjL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,4CAAS;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,mBAAmB;AACxF;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uCAAI;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA,+BAA+B,0CAAO;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACzjCA;AACA;AACqD;AACrB;AACgB;AACd;AACK;AAChC,yBAAyB,yDAAa;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2DAAmB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qDAAiB,sDAAsD,4DAAuB,+DAA+D,kBAAkB;AACvL;AACA;AACA;AACA;AACA,QAAQ,qDAAiB,sDAAsD,4DAAuB,iEAAiE,mBAAmB;AAC1L;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4DAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4DAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4DAAuB;AAC/C;AACA;AACA,wBAAwB,4DAAuB;AAC/C;AACA;AACA;AACA,wBAAwB,4DAAuB;AAC/C;AACA;AACA;AACA;AACA,YAAY,4DAAuB;AACnC;AACA,YAAY,qDAAiB,iCAAiC,kBAAkB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAU;AACtB;AACA,YAAY,kDAAe;AAC3B,WAAW,mDAAgB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACjKA;AACA;AACqD;AACL;AACT;AAChC,2BAA2B,yDAAa;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,6DAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kDAAe;AAC3B;AACA,YAAY,kDAAe;AAC3B,WAAW,mDAAgB;AAC3B;;;;;;;;;;;;;;;;;;;;AChEA;AACA;AACqD;AACrB;AACuC;AACrC;AACK;AAChC,yBAAyB,yDAAa;AAC7C;AACA;AACA;AACA,gCAAgC;AAChC;AACA,wBAAwB,uEAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2DAAmB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,oBAAoB,mCAAmC;AAC7G;AACA;AACA;AACA;AACA;AACA,yBAAyB,yDAAoB;AAC7C;AACA,YAAY,qDAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qDAAiB;AACrC;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,4BAA4B,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAU;AACtB;AACA,YAAY,kDAAe;AAC3B,WAAW,mDAAgB;AAC3B;;;;;;;;;;;;;;;;;;;;ACnGA;AACA;AACqD;AACkB;AACd;AAClB;AACD;AAC/B,wBAAwB,yDAAa;AAC5C,4CAA4C;AAC5C;AACA;AACA;AACA;AACA,uCAAuC,uCAAuC,oEAA6B,EAAE;AAC7G;AACA;AACA;AACA,eAAe,0DAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,sEAA0B;AAC3C,iBAAiB,uEAA2B;AAC5C;AACA,sCAAsC,sEAA0B;AAChE;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAA2B;AAC5C,iBAAiB,uEAA2B;AAC5C;AACA,mDAAmD,+DAAwB;AAC3E;AACA;AACA,wDAAwD,8DAAuB;AAC/E;AACA;AACA,sCAAsC,uEAA2B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAU;AACtB;AACA,YAAY,oDAAiB;AAC7B,WAAW,mDAAgB;AAC3B;;;;;;;;;;;;;;;;;;ACpFA;AACA;AACA;AACA;AACoC;AACG;AACD;AAC/B,uBAAuB,6CAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD;AACA;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,qCAAqC,EAAE,uDAAiB;;;;;;;;;;;;;;;;;;;ACjLxD;AACA;AACqD;AACL;AACT;AAChC;AACP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8BAA8B;AACxB,oBAAoB,yDAAa;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sDAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kDAAe;AAC3B;AACA,YAAY,kDAAe;AAC3B,WAAW,mDAAgB;AAC3B;;;;;;;;;;;;;;;;;;;ACtEA;AACA;AACA;AACA;AACA;AACoC;AACF;AACK;AACI;AAC3C;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACO,mBAAmB,6CAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qDAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sDAAiB;AAChC;AACA;AACA,eAAe,uDAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6GAA6G;AAC7G;AACA;AACA;AACA,kBAAkB,+CAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,4DAAuB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,mBAAmB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AClKA;AACA;AACA;AACA;AACA;AACgC;AACF;AACA;AACI;AACK;AACD;AAC/B,4BAA4B,uCAAI;AACvC;AACA;AACA;AACA;AACA,eAAe,8DAAsB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uCAAI;AAC7B;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA,yDAAyD,4CAAS;AAClE,4BAA4B,yCAAK,mDAAmD,UAAU;AAC9F;AACA;AACA;AACA;AACA,wCAAwC,4CAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,8DAAyB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA,wBAAwB,0CAAO;AAC/B,0BAA0B,0CAAO,kBAAkB,4CAAS;AAC5D,sBAAsB,+CAAY,2CAA2C,UAAU;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,4DAAuB,iCAAiC,gBAAgB;AACpG;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,4CAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,0CAAO;AACtD;AACA;AACA;AACA;AACA;AACA,gDAAgD,8CAAW;AAC3D;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uCAAI;AAC7B;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AC/NA;AACA;AACA;AACA;AACA;AACqD;AACG;AAClB;AACR;AACI;AACmC;AAC/B;AAC/B,2BAA2B,+CAAQ;AAC1C;AACA;AACA;AACA,wBAAwB,8DAAuB,EAAE;AACjD;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,2BAA2B;AAC3B,4BAA4B;AAC5B,mBAAmB,gEAAyB,EAAE;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,6DAAqB;AACpC;AACA;AACA;AACA,eAAe,4DAAuB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA,iBAAiB,uDAAW;AAC5B,0BAA0B,+CAAY;AACtC;AACA;AACA;AACA;AACA,2DAA2D,+DAA0B;AACrF;AACA,4BAA4B,6DAAsB;AAClD;AACA;AACA;AACA,iCAAiC,6DAAsB;AACvD;AACA;AACA;AACA;AACA;AACA,gCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6DAAsB;AAC9C;AACA,oDAAoD;AACpD;AACA;AACA,6BAA6B,8DAAuB;AACpD;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gEAAyB,WAAW,gEAAyB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,0CAAO;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,8DAAuB;AACxC;AACA;AACA;AACA,2DAA2D,0CAAO;AAClE;AACA;AACA,mGAAmG,+DAA0B;AAC7H;AACA;AACA,iBAAiB,8DAAuB;AACxC;AACA;AACA;AACA,2DAA2D,4CAAS;AACpE;AACA;AACA,mGAAmG,+DAA0B;AAC7H;AACA;AACA,iBAAiB,6DAAsB;AACvC;AACA;AACA,iBAAiB,8DAAuB;AACxC;AACA;AACA;AACA,0BAA0B,+CAAY,oCAAoC,eAAe;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2DAAe;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAuB;AACvC;AACA;AACA,gBAAgB,8DAAuB;AACvC;AACA;AACA;AACA;AACA,qBAAqB,8DAAuB;AAC5C;AACA;AACA,oBAAoB,8DAAuB;AAC3C;AACA,qBAAqB,gEAAyB;AAC9C;AACA;AACA,oBAAoB,8DAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kDAAe;AAC3B,UAAU,4CAAS;AACnB,YAAY,kDAAe;AAC3B,WAAW,mDAAgB;AAC3B;;;;;;;;;;;;;;;;;;;;ACxPA;AACA;AACA;AACA;AACA;AACqD;AACrB;AACM;AACiC;AACjC;AAC/B,qBAAqB,+CAAQ;AACpC;AACA;AACA,uCAAuC,kBAAkB;AACzD;AACA;AACA;AACA;AACA,wBAAwB,6DAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uDAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uDAAW;AAC3B;AACA,wBAAwB,OAAO;AAC/B;AACA,yBAAyB;AACzB;AACA,qBAAqB,qDAAS;AAC9B;AACA,wBAAwB,cAAc;AACtC,yBAAyB;AACzB;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA,SAAS;AACT;AACA;AACA,oDAAoD,eAAe;AACnE;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA,gBAAgB,kDAAM;AACtB;AACA;AACA;AACA,gCAAgC,eAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uDAAW;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uDAAW;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,0BAA0B,+CAAY,mCAAmC,WAAW;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uDAAW;AAC3B,mCAAmC,WAAW;AAC9C,oBAAoB,qDAAiB;AACrC;AACA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C,oBAAoB,qDAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA,QAAQ,qDAAiB;AACzB,gCAAgC,MAAM,GAAG,WAAW;AACpD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAU;AACtB,UAAU,4CAAS;AACnB,YAAY,kDAAe;AAC3B,WAAW,mDAAgB;AAC3B;;;;;;;;;;;;;;;;;;ACvNA;AACA;AACA;AACqD;AACL;AACc;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACO,yBAAyB,yDAAa;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,2BAA2B,kDAAe;AAC1C,yBAAyB,4CAAS;AAClC,2BAA2B,oDAAiB;AAC5C,0BAA0B,mDAAgB;AAC1C;AACA,qCAAqC,SAAS,cAAc;AAC5D,0CAA0C,iFAAiF;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,6CAAM;AAC9C;AACA,qCAAqC,6CAAM;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF;AACnF,wDAAwD,qBAAqB;AAC7E;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,mDAAmD;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,qDAAc;AAC3C,2BAA2B,qDAAc;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,IAAI,EAAE,IAAI,GAAG,QAAQ,EAAE,QAAQ,QAAQ,IAAI,EAAE,IAAI;AAC9E,6BAA6B,QAAQ,EAAE,QAAQ,QAAQ,IAAI,EAAE,GAAG;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,IAAI,EAAE,IAAI,GAAG,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,eAAe,KAAK,SAAS;AACvE;AACA;AACA;AACA;AACA,uDAAuD,sBAAsB,gBAAgB;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,sBAAsB,4DAA4D;AAC3I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,sBAAsB;AAC/E,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,gDAAa;AACtC,6BAA6B,mDAAgB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACngBA;AACA;AAC4C;AACR;AACI;AACV;AACE;AACO;AACD;AACtC;AACA;AACA;AACA;AACA;AACO,qBAAqB,6CAAO;AACnC,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA,eAAe,uDAAe;AAC9B;AACA;AACA,2BAA2B;AAC3B;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA,qDAAqD,iLAAiL,cAAc,yBAAyB,YAAY,mDAAmD,0BAA0B;AACtW;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,yDAAyD,EAAE;AACpF;AACA;AACA;AACA,yBAAyB;AACzB,yDAAyD,WAAW;AACpE,iDAAiD,aAAa;AAC9D,UAAU,EAAE;AACZ;AACA;AACA;AACA,6CAA6C,iBAAiB;AAC9D,gGAAgG,wFAAwF;AACxL,gDAAgD;AAChD;AACA,2FAA2F,aAAa,uBAAuB;AAC/H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iDAAS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,0BAA0B;AACpE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,mDAAmD,sDAAkB;AACrE,aAAa;AACb;AACA;AACA;AACA;AACA,mEAAmE,wDAAoB;AACvF;AACA;AACA;AACA,wBAAwB,mCAAmC;AAC3D;AACA;AACA;AACA;AACA;AACA,+BAA+B,qDAAW;AAC1C,QAAQ,4DAAwB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA,YAAY,+DAAuB;AACnC;AACA;AACA,yDAAyD,mDAAgB;AACzE,SAAS;AACT;AACA;;;;;;;;;;;;;;;;;;ACnJA;AACsC;AACN;AACM;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ;AACjB,UAAU,QAAQ;AAClB,SAAS,kBAAkB;AAC3B,UAAU,kBAAkB;AAC5B,UAAU,kBAAkB;AAC5B,UAAU,kBAAkB;AAC5B,UAAU,kBAAkB;AAC5B,UAAU,kBAAkB;AAC5B,UAAU,kBAAkB;AAC5B,UAAU,kBAAkB;AAC5B,UAAU,kBAAkB;AAC5B,WAAW,kBAAkB;AAC7B,UAAU,kBAAkB;AAC5B,WAAW,kBAAkB;AAC7B,UAAU,kBAAkB;AAC5B,WAAW,kBAAkB;AAC7B,SAAS,kBAAkB;AAC3B,UAAU,kBAAkB;AAC5B,SAAS,kBAAkB;AAC3B,UAAU,kBAAkB;AAC5B,SAAS,kBAAkB;AAC3B,aAAa,kBAAkB;AAC/B,SAAS,kBAAkB;AAC3B,aAAa,kBAAkB;AAC/B,SAAS,kBAAkB;AAC3B,aAAa,kBAAkB;AAC/B,YAAY,kBAAkB;AAC9B,aAAa,kBAAkB;AAC/B,YAAY,kBAAkB;AAC9B,aAAa,kBAAkB;AAC/B;AACA;AACA,cAAc,eAAe;AAC7B,YAAY,eAAe;AAC3B,aAAa,eAAe;AAC5B,YAAY,eAAe;AAC3B,eAAe,eAAe;AAC9B,kBAAkB,eAAe;AACjC,uBAAuB,eAAe;AACtC,oBAAoB,eAAe;AACnC,oBAAoB,eAAe;AACnC,eAAe,eAAe;AAC9B,cAAc,gBAAgB;AAC9B;AACA;AACA,SAAS,sBAAsB;AAC/B,UAAU,uCAAuC;AACjD,YAAY,uCAAuC;AACnD,aAAa,wCAAwC;AACrD,UAAU,wCAAwC;AAClD,WAAW,yCAAyC;AACpD,SAAS,sBAAsB;AAC/B,UAAU,uCAAuC;AACjD,YAAY,uCAAuC;AACnD,aAAa,wCAAwC;AACrD,UAAU,uCAAuC;AACjD,WAAW,wCAAwC;AACnD,SAAS,sBAAsB;AAC/B,UAAU,uCAAuC;AACjD,YAAY,uCAAuC;AACnD,aAAa,wCAAwC;AACrD,UAAU,uCAAuC;AACjD,WAAW,wCAAwC;AACnD,SAAS,sBAAsB;AAC/B,UAAU,uCAAuC;AACjD,YAAY,uCAAuC;AACnD,aAAa,wCAAwC;AACrD,UAAU,uCAAuC;AACjD,WAAW,wCAAwC;AACnD,SAAS,sBAAsB;AAC/B,UAAU,uCAAuC;AACjD,YAAY,uCAAuC;AACnD,aAAa,wCAAwC;AACrD,UAAU,uCAAuC;AACjD,WAAW,wCAAwC;AACnD,SAAS,sBAAsB;AAC/B,UAAU,uCAAuC;AACjD,YAAY,wCAAwC;AACpD,aAAa,yCAAyC;AACtD,UAAU,uCAAuC;AACjD,WAAW,wCAAwC;AACnD,SAAS,uBAAuB;AAChC,UAAU,wCAAwC;AAClD,YAAY,wCAAwC;AACpD,aAAa,yCAAyC;AACtD,UAAU,wCAAwC;AAClD,WAAW,wCAAwC;AACnD,SAAS,sBAAsB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,SAAS,cAAc;AACvB,SAAS,cAAc;AACvB,SAAS,kBAAkB;AAC3B,SAAS,eAAe;AACxB,SAAS,eAAe;AACxB,SAAS,eAAe;AACxB,SAAS,iBAAiB;AAC1B,SAAS,WAAW;AACpB,UAAU,iBAAiB;AAC3B,UAAU,kBAAkB;AAC5B,UAAU,iBAAiB;AAC3B,UAAU,0BAA0B;AACpC,UAAU,gBAAgB;AAC1B,UAAU,qBAAqB;AAC/B,UAAU,uBAAuB;AACjC;AACA;AACA,WAAW,0DAA0D;AACrE,YAAY,gEAAgE;AAC5E,SAAS,yDAAyD;AAClE,UAAU,+DAA+D;AACzE,SAAS,4DAA4D;AACrE,MAAM,KAAK,+DAA+D;AAC1E,MAAM,KAAK,gEAAgE;AAC3E,UAAU,oFAAoF;AAC9F,SAAS,wEAAwE;AACjF,YAAY,gFAAgF;AAC5F,WAAW,0EAA0E;AACrF,YAAY,uEAAuE;AACnF,UAAU,+DAA+D;AACzE,WAAW,sEAAsE;AACjF,SAAS,yDAAyD;AAClE,SAAS,0DAA0D;AACnE,WAAW,mEAAmE;AAC9E,aAAa,mEAAmE;AAChF,YAAY,mEAAmE;AAC/E,YAAY,mEAAmE;AAC/E,+BAA+B,kEAAkE;AACjG,iCAAiC,oEAAoE;AACrG,2BAA2B,8DAA8D;AACzF,6BAA6B,gEAAgE;AAC7F,2BAA2B,8DAA8D;AACzF,6BAA6B,gEAAgE;AAC7F,kCAAkC,qEAAqE;AACvG,oCAAoC,uEAAuE;AAC3G,mCAAmC,sEAAsE;AACzG,qCAAqC,wEAAwE;AAC7G,mCAAmC,sEAAsE;AACzG,qCAAqC,wEAAwE;AAC7G,kCAAkC,qEAAqE;AACvG,oCAAoC,uEAAuE;AAC3G,kCAAkC,qEAAqE;AACvG,oCAAoC,uEAAuE;AAC3G,+BAA+B,kEAAkE;AACjG,4BAA4B,+DAA+D;AAC3F,8BAA8B,iEAAiE;AAC/F,2BAA2B,8DAA8D;AACzF,8BAA8B,iEAAiE;AAC/F,2BAA2B,8DAA8D;AACzF,gCAAgC,mEAAmE;AACnG,6BAA6B,gEAAgE;AAC7F,wBAAwB,2DAA2D;AACnF,uBAAuB,0DAA0D;AACjF,8BAA8B,iEAAiE;AAC/F,+BAA+B,kEAAkE;AACjG,4BAA4B,+DAA+D;AAC3F,6BAA6B,gEAAgE;AAC7F,4BAA4B,+DAA+D;AAC3F,6BAA6B,gEAAgE;AAC7F,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,qCAAqC,wEAAwE;AAC7G,kCAAkC,qEAAqE;AACvG,oCAAoC,uEAAuE;AAC3G,iCAAiC,oEAAoE;AACrG,oCAAoC,uEAAuE;AAC3G,iCAAiC,oEAAoE;AACrG,sCAAsC,yEAAyE;AAC/G,mCAAmC,sEAAsE;AACzG,8BAA8B,iEAAiE;AAC/F,6BAA6B,gEAAgE;AAC7F,gCAAgC,mEAAmE;AACnG,kCAAkC,qEAAqE;AACvG,4BAA4B,+DAA+D;AAC3F,8BAA8B,iEAAiE;AAC/F,4BAA4B,+DAA+D;AAC3F,8BAA8B,iEAAiE;AAC/F,8BAA8B,iEAAiE;AAC/F,gCAAgC,mEAAmE;AACnG,oCAAoC,uEAAuE;AAC3G,sCAAsC,yEAAyE;AAC/G,iCAAiC,oEAAoE;AACrG,8BAA8B,iEAAiE;AAC/F,iCAAiC,oEAAoE;AACrG,8BAA8B,iEAAiE;AAC/F,+BAA+B,kEAAkE;AACjG,4BAA4B,+DAA+D;AAC3F,+BAA+B,kEAAkE;AACjG,4BAA4B,+DAA+D;AAC3F,iCAAiC,oEAAoE;AACrG,8BAA8B,iEAAiE;AAC/F,+BAA+B,kEAAkE;AACjG,gCAAgC,mEAAmE;AACnG,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,+BAA+B,kEAAkE;AACjG,gCAAgC,mEAAmE;AACnG,+BAA+B,kEAAkE;AACjG,gCAAgC,mEAAmE;AACnG,uCAAuC,0EAA0E;AACjH,oCAAoC,uEAAuE;AAC3G,uCAAuC,0EAA0E;AACjH,oCAAoC,uEAAuE;AAC3G,qCAAqC,wEAAwE;AAC7G,kCAAkC,qEAAqE;AACvG,qCAAqC,wEAAwE;AAC7G,kCAAkC,qEAAqE;AACvG,uCAAuC,0EAA0E;AACjH,oCAAoC,uEAAuE;AAC3G,4BAA4B,+DAA+D;AAC3F,8BAA8B,iEAAiE;AAC/F,8BAA8B,iEAAiE;AAC/F,gCAAgC,mEAAmE;AACnG,oCAAoC,uEAAuE;AAC3G,sCAAsC,yEAAyE;AAC/G,iCAAiC,oEAAoE;AACrG,8BAA8B,iEAAiE;AAC/F,iCAAiC,oEAAoE;AACrG,8BAA8B,iEAAiE;AAC/F,+BAA+B,kEAAkE;AACjG,4BAA4B,+DAA+D;AAC3F,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,+BAA+B,kEAAkE;AACjG,gCAAgC,mEAAmE;AACnG,+BAA+B,kEAAkE;AACjG,gCAAgC,mEAAmE;AACnG,uCAAuC,0EAA0E;AACjH,oCAAoC,uEAAuE;AAC3G,uCAAuC,0EAA0E;AACjH,oCAAoC,uEAAuE;AAC3G,qCAAqC,wEAAwE;AAC7G,kCAAkC,qEAAqE;AACvG,8BAA8B,iEAAiE;AAC/F,gCAAgC,mEAAmE;AACnG,8BAA8B,iEAAiE;AAC/F,gCAAgC,mEAAmE;AACnG,6BAA6B,gEAAgE;AAC7F,+BAA+B,kEAAkE;AACjG,+BAA+B,kEAAkE;AACjG,iCAAiC,oEAAoE;AACrG,4BAA4B,+DAA+D;AAC3F,8BAA8B,iEAAiE;AAC/F,8BAA8B,iEAAiE;AAC/F,gCAAgC,mEAAmE;AACnG,kCAAkC,qEAAqE;AACvG,oCAAoC,uEAAuE;AAC3G,kCAAkC,qEAAqE;AACvG,oCAAoC,uEAAuE;AAC3G,qCAAqC,wEAAwE;AAC7G,uCAAuC,0EAA0E;AACjH,sCAAsC,yEAAyE;AAC/G,wCAAwC,2EAA2E;AACnH,mCAAmC,sEAAsE;AACzG,qCAAqC,wEAAwE;AAC7G,qCAAqC,wEAAwE;AAC7G,uCAAuC,0EAA0E;AACjH,kCAAkC,qEAAqE;AACvG,oCAAoC,uEAAuE;AAC3G,qCAAqC,wEAAwE;AAC7G,uCAAuC,0EAA0E;AACjH,oCAAoC,uEAAuE;AAC3G,sCAAsC,yEAAyE;AAC/G,+BAA+B,kEAAkE;AACjG,4BAA4B,+DAA+D;AAC3F,+BAA+B,kEAAkE;AACjG,4BAA4B,+DAA+D;AAC3F,iCAAiC,oEAAoE;AACrG,8BAA8B,iEAAiE;AAC/F,+BAA+B,kEAAkE;AACjG,4BAA4B,+DAA+D;AAC3F,kCAAkC,qEAAqE;AACvG,+BAA+B,kEAAkE;AACjG,gCAAgC,mEAAmE;AACnG,6BAA6B,gEAAgE;AAC7F,+BAA+B,kEAAkE;AACjG,4BAA4B,+DAA+D;AAC3F,+BAA+B,kEAAkE;AACjG,4BAA4B,+DAA+D;AAC3F,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,8BAA8B,iEAAiE;AAC/F,+BAA+B,kEAAkE;AACjG,gCAAgC,mEAAmE;AACnG,iCAAiC,oEAAoE;AACrG,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,+BAA+B,kEAAkE;AACjG,gCAAgC,mEAAmE;AACnG,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,+BAA+B,kEAAkE;AACjG,gCAAgC,mEAAmE;AACnG,gCAAgC,mEAAmE;AACnG,iCAAiC,oEAAoE;AACrG,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,+BAA+B,kEAAkE;AACjG,gCAAgC,mEAAmE;AACnG,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,gCAAgC,mEAAmE;AACnG,iCAAiC,oEAAoE;AACrG,+BAA+B,kEAAkE;AACjG,gCAAgC,mEAAmE;AACnG,qCAAqC,wEAAwE;AAC7G,kCAAkC,qEAAqE;AACvG,qCAAqC,wEAAwE;AAC7G,kCAAkC,qEAAqE;AACvG,uCAAuC,0EAA0E;AACjH,oCAAoC,uEAAuE;AAC3G,qCAAqC,wEAAwE;AAC7G,kCAAkC,qEAAqE;AACvG,wCAAwC,2EAA2E;AACnH,qCAAqC,wEAAwE;AAC7G,sCAAsC,yEAAyE;AAC/G,mCAAmC,sEAAsE;AACzG,qCAAqC,wEAAwE;AAC7G,kCAAkC,qEAAqE;AACvG,qCAAqC,wEAAwE;AAC7G,kCAAkC,qEAAqE;AACvG,0BAA0B,6DAA6D;AACvF,4BAA4B,+DAA+D;AAC3F,wBAAwB,2DAA2D;AACnF,wBAAwB,2DAA2D;AACnF,0BAA0B,6DAA6D;AACvF,4BAA4B,+DAA+D;AAC3F,2BAA2B,8DAA8D;AACzF,6BAA6B,gEAAgE;AAC7F,0BAA0B,6DAA6D;AACvF,4BAA4B,+DAA+D;AAC3F,2BAA2B,8DAA8D;AACzF,6BAA6B,gEAAgE;AAC7F,2BAA2B,8DAA8D;AACzF,6BAA6B,gEAAgE;AAC7F,2BAA2B,8DAA8D;AACzF,6BAA6B,gEAAgE;AAC7F,2BAA2B,8DAA8D;AACzF,6BAA6B,gEAAgE;AAC7F,2BAA2B,8DAA8D;AACzF,6BAA6B,gEAAgE;AAC7F,2BAA2B,8DAA8D;AACzF,6BAA6B,gEAAgE;AAC7F,2BAA2B,8DAA8D;AACzF,6BAA6B,gEAAgE;AAC7F,2BAA2B,8DAA8D;AACzF,6BAA6B,gEAAgE;AAC7F,mCAAmC,sEAAsE;AACzG,qCAAqC,wEAAwE;AAC7G,oCAAoC,uEAAuE;AAC3G;AACA;AACA;AACA,KAAK;AACL,4BAA4B,+DAA+D;AAC3F,6BAA6B,gEAAgE;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,YAAY,8CAA8C;AAC1D;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,YAAY,wDAAwD;AACpE;AACA;AACA;AACA;AACA,KAAK;AACL,UAAU,+CAA+C;AACzD,YAAY,4EAA4E;AACxF,aAAa,4CAA4C;AACzD,aAAa,4CAA4C;AACzD,aAAa,sFAAsF;AACnG,cAAc,iDAAiD;AAC/D,cAAc,iDAAiD;AAC/D,aAAa,oFAAoF;AACjG,cAAc,gDAAgD;AAC9D,cAAc,gDAAgD;AAC9D,cAAc,4FAA4F;AAC1G,eAAe,oDAAoD;AACnE,eAAe,oDAAoD;AACnE,YAAY,4CAA4C;AACxD,UAAU,8CAA8C;AACxD,YAAY,+CAA+C;AAC3D;AACA;AACA,eAAe,4BAA4B;AAC3C,wBAAwB,yBAAyB;AACjD,YAAY,sBAAsB;AAClC,qBAAqB,2BAA2B;AAChD,UAAU,uBAAuB;AACjC,eAAe,6CAA6C;AAC5D,iBAAiB,iDAAiD;AAClE,eAAe,4CAA4C;AAC3D,iBAAiB,yCAAyC;AAC1D,iBAAiB,uCAAuC;AACxD,mBAAmB,qDAAqD;AACxE,iBAAiB,oCAAoC;AACrD,kBAAkB,6BAA6B;AAC/C,aAAa,oBAAoB;AACjC,YAAY,yBAAyB;AACrC,YAAY,2BAA2B;AACvC,gBAAgB,yBAAyB;AACzC,gBAAgB,8BAA8B;AAC9C,YAAY,mBAAmB;AAC/B,qBAAqB,yBAAyB;AAC9C,mBAAmB,uBAAuB;AAC1C,YAAY,mBAAmB;AAC/B,gBAAgB,uBAAuB;AACvC,aAAa,oBAAoB;AACjC;AACO;AACP;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,2EAA2E;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA,gGAAgG,SAAS;AACzG;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,kFAAkF,eAAe;AACnI;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,+CAA+C;AACnF;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA,sBAAsB,+CAAY,8EAA8E,QAAQ;AACxH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,oDAAoD,QAAQ;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,yCAAK;AAC1C;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,gDAAgD,KAAK;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA,4BAA4B,yBAAyB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,wDAAwD,SAAS;AACnG;AACA;AACA;AACA;AACA;AACA,mBAAmB,+CAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,0BAA0B,6CAA6C;AACvI;AACA;AACA;AACA,iEAAiE,kDAAc;AAC/E;AACA,2DAA2D,kBAAkB,oBAAoB;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;;;;;;;;;;;;;;;;;;;;;;;AC30CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC8B;AACE;AACM;AACR;AACkB;AACd;AACY;AACC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,qBAAqB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACO,sBAAsB,yDAAa;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA,0DAA0D,iBAAiB;AAC3E;AACA;AACA,4DAA4D;AAC5D;AACA,8BAA8B,gEAA2B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,4CAAS,CAAC,KAAK,kDAAe,CAAC,GAAG;AACvD,qBAAqB,yDAAoB;AACzC,QAAQ,8CAAO,6DAA6D,cAAc,cAAc,cAAc;AACtH;AACA;AACA;AACA;AACA;AACA,kCAAkC,0CAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wDAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,0CAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA,0BAA0B,sDAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wBAAwB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,WAAW;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA,yBAAyB,6DAAsB;AAC/C,wBAAwB;AACxB;AACA,8BAA8B,8DAAuB;AACrD,gCAAgC;AAChC;AACA,8BAA8B,8DAAuB,iBAAiB,8DAAuB;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,0CAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,+BAA+B,WAAW,IAAI;AAC9D;AACA;AACA;AACA;AACA;AACA,uDAAuD,4CAAS;AAChE;AACA;AACA;AACA;AACA;AACA,sCAAsC,0BAA0B;AAChE;AACA,wFAAwF,0BAA0B;AAClH;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iDAAK;AACrB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAU;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qDAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA,4DAA4D,mBAAmB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACpYA;AACA;AACA;AACA;AACA;AACqD;AACnB;AACK;AACD;AAC/B,uBAAuB,2CAAM;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAU;AACtB;AACA,YAAY,kDAAe;AAC3B,WAAW,mDAAgB;AAC3B;;;;;;;;;;;;;;;;;ACpGA;AACgC;AACO;AAChC,uBAAuB,yCAAK;AACnC;AACA,eAAe,yDAAiB;AAChC;AACA;AACA,4CAA4C,kEAAkE;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACsC;AACC;AAChC,qBAAqB,+CAAQ;AACpC;AACA,eAAe,uDAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;;;;;;;;;;;;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACoC;AACiB;AACf;AACJ;AACK;AACI;AAC3C;AACA;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACO;AACP;AACA;AACA;AACA,CAAC,kDAAkD;AAC5C,0BAA0B,6CAAO;AACxC,kBAAkB,8EAA8E;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,mEAA8B;AACxG;AACA;AACA,0BAA0B,+CAAY,oCAAoC,eAAe;AACzF;AACA;AACA,wBAAwB;AACxB,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8BAA8B;AAC9C;AACA,gCAAgC,iDAAc;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAuB;AACnC;AACA;AACA,gBAAgB,8DAAuB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAU;AACtB;AACA,YAAY,oDAAiB;AAC7B,WAAW,mDAAgB;AAC3B;;;;;;;;;;;;;;;;;;;ACvLA;AACA;AACgC;AACF;AACS;AACa;AACpD;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,2BAA2B,uCAAI;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,0BAA0B,qBAAqB;AAC3G;AACA;AACA;AACA,eAAe,6DAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC,yBAAyB,8CAAO;AAChC,8BAA8B,yCAAK,0BAA0B,sBAAsB;AACnF;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AChHA;AACA;AACqD;AACxB;AAC7B;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,mCAAmC,kDAAe;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,8CAAW;AACpC,2BAA2B,gDAAa;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,+DAA4B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,kDAAe,GAAG,oDAAiB;AACtE,oCAAoC,mDAAgB,GAAG,mDAAgB;AACvE;AACA,2BAA2B,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,wDAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AChRA;AACA;AACqD;AACrB;AACF;AACS;AACD;AAC/B;AACP;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACO,uBAAuB,uCAAI;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC,6BAA6B,yCAAK,oBAAoB,sBAAsB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8BAA8B;AAClD;AACA,oCAAoC,iDAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kDAAe;AAC3B;AACA,YAAY,oDAAiB;AAC7B,WAAW,mDAAgB;AAC3B;AACA;;;;;;;;;;;;;;;;;;;;AChNA;AACA;AACoC;AACE;AACJ;AACK;AACQ;AAC/C;AACA;AACA;AACA;AACO,uBAAuB,6CAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+CAAQ,QAAQ;AACzC,iCAAiC;AACjC,kCAAkC,+CAAQ;AAC1C;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,eAAe,yDAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,sDAAiB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;;;;;;;;;;;;;;;;;AChSA;AACA;AACA;AACA;AACA;AACsC;AACA;AACtC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,+BAA+B,+CAAQ;AACvC,4BAA4B,+CAAQ;AACpC,sCAAsC;AACtC,mCAAmC;AACnC;AACA,0BAA0B;AAC1B;AACA,wBAAwB;AACxB,0BAA0B;AAC1B,6BAA6B;AAC7B,oCAAoC;AACpC;AACA,yBAAyB;AACzB,0BAA0B;AAC1B,sCAAsC;AACtC,uCAAuC;AACvC,4BAA4B;AAC5B,6BAA6B;AAC7B,8BAA8B;AAC9B,+BAA+B;AAC/B,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uHAAuH;AACvI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACjMA;AACA;AACA;AACA;AACA;AACgC;AACC;AAC1B,iCAAiC,yCAAK;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yCAAK;AACtC;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yCAAK;AACtC;AACA,wBAAwB,8CAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA,YAAY,uDAAmB;AAC/B,uBAAuB,8CAAO;AAC9B;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA,YAAY,uDAAmB;AAC/B,uBAAuB,8CAAO;AAC9B;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACgC;AACuC;AACrC;AACkB;AACb;AACQ;AAC/C;AACA;AACA;AACA,kBAAkB,+CAAY,2CAA2C,SAAS;AAClF;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,2CAA2C,SAAS;AACtF;AACA,KAAK;AACL;AACO,4BAA4B,yDAAa;AAChD;AACA;AACA;AACA;AACA,0BAA0B,4DAAuB;AACjD;AACA;AACA;AACA;AACA,yBAAyB,uEAA2B;AACpD;AACA,sBAAsB,8CAAO;AAC7B;AACA;AACA;AACA,eAAe,8DAAsB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA,2BAA2B,yCAAK;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6DAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AChGA;AACA;AAC8B;AACkB;AACT;AAChC,0BAA0B,uCAAI;AACrC;AACA,gBAAgB,eAAe;AAC/B,kCAAkC,yDAAa;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACtCA;AACA;AACA;AACgC;AACQ;AACF;AACR;AACI;AACkB;AACpD;AACO,sBAAsB,+CAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+DAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wDAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uDAAW;AAC9B,2BAA2B,uDAAe;AAC1C,oCAAoC,yBAAyB;AAC7D,0BAA0B,4DAAuB;AACjD,kDAAkD,SAAS;AAC3D;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA,2CAA2C,SAAS;AACpD;AACA,oDAAoD,SAAS;AAC7D,uCAAuC,SAAS,cAAc,kBAAkB,0CAAO,iBAAiB;AACxG,wBAAwB,cAAc;AACtC,YAAY,qDAAiB,oCAAoC,0CAA0C;AAC3G;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACxDA;AACA;AACkC;AACI;AACtC;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,2CAA2C,aAAa;AAC1F;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,wDAAwD,yBAAyB,GAAG,UAAU;AAChI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,qDAAqD,QAAQ;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,yDAAoB,QAAQ,GAAG,OAAO;AACxD;AACA;;;;;;;;;;;;;;;;;;;;;;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,4BAA4B;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACoC;AACI;AACR;AACF;AACI;AACK;AACQ;AACxC;AACP;AACA;AACA;AACA,CAAC,wCAAwC;AAClC,qBAAqB,6CAAO;AACnC,mCAAmC;AACnC;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,4DAAuB;AAC5C;AACA;AACA;AACA;AACA,QAAQ,mEAA2B;AACnC;AACA;AACA;AACA;AACA,eAAe,uDAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAuB;AACtC;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,yCAAK;AACnD;AACA;AACA;AACA;AACA;AACA,0CAA0C,yCAAK;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,0CAAO;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,4BAA4B,uBAAuB;AACnD;AACA,0EAA0E,0CAAO;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,8CAAO;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4DAAuB;AAC9C;AACA;AACA;AACA,wBAAwB,8CAAO;AAC/B,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8CAAO;AACnC,aAAa;AACb;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;;;;;;;;;;;;;;;;;;;;;;ACtH7B;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qBAAM;AACrB,eAAe,qBAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,MAAM,6BAA6B,MAAM;AACjF;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AChFA;AACA;AACA;AAC8B;AACa;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,gBAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,uCAAI;;;;;;;;;;;;;;;;;;;ACpEf;AACA;AAC8B;AACQ;AACJ;AACK;AACvC;AACO,sBAAsB,+CAAQ;AACrC;AACA;AACA,wBAAwB,8DAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wDAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gDAAa;AACtD;AACA,yGAAyG,+DAA0B;AACnI;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,8DAAuB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAA4D;AAC5E;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AClHA;AACA;AACA;AACoC;AACG;AACV;AACO;AACpC;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACO,6BAA6B,6CAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAuB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,2DAAqB;AAC7B;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACpEA;AACA;AACoC;AACE;AACJ;AACK;AACQ;AACxC;AACP;AACA;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA;AACA;AACO,oBAAoB,6CAAO;AAClC;AACA;AACA;AACA;AACA;AACA,6BAA6B,+CAAQ;AACrC;AACA;AACA;AACA,2BAA2B,0DAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,yCAAyC,sDAAiB,EAAE;AAChG;AACA,8BAA8B,+CAAQ;AACtC;AACA;AACA;AACA,eAAe,sDAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2BAA2B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA,YAAY,8CAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACzPA;AACA;AACA;AACA;AACA;AACA;AACsC;AACtC;AACO;AACP;AACA;AACA,mBAAmB,mDAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,mBAAmB,mDAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACsD;AACP;AACZ;AACF;AACE;AACU;AACY;AACtB;AACE;AACQ;AACV;AACc;AACA;AACD;AACX;AACrC;AACA;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kDAAkD,6DAAY;AAC9D;AACA;AACA;AACA,0CAA0C,MAAM;AAChD;AACA;AACA;AACA;AACA;AACA,gDAAgD,qDAAS;AACzD;AACA,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC;AACA,oBAAoB,8CAAK,WAAW,wDAAe;AACnD;AACA,IAAI,wEAA2B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC;AACA,gBAAgB,8CAAK,WAAW,wDAAe;AAC/C;AACA,IAAI,wEAA2B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8BAA8B;AACxC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,gCAAgC;AAC1C,UAAU,gCAAgC;AAC1C,UAAU,gCAAgC;AAC1C,UAAU,gCAAgC;AAC1C,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC;AACA,gBAAgB,8CAAK,WAAW,wDAAe;AAC/C;AACA,IAAI,wEAA2B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA,YAAY,qDAAS;AACrB;AACA;AACA,SAAS,kBAAkB,uDAAU;AACrC,YAAY,qDAAS;AACrB;AACA;AACA,SAAS,kBAAkB,uDAAU;AACrC,YAAY,qDAAS;AACrB;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA,SAAS;AACT,6BAA6B,uDAAU;AACvC,6BAA6B,uDAAU;AACvC,YAAY,qDAAS;AACrB;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA,SAAS;AACT,6BAA6B,uDAAU;AACvC,6BAA6B,uDAAU;AACvC,YAAY,qDAAS;AACrB;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA,SAAS;AACT;AACA,IAAI,wDAAkB,eAAe,WAAW;AAChD,kBAAkB,yDAAkB;AACpC,sBAAsB,8CAAK;AAC3B;AACA;AACA,KAAK;AACL;AACA,0BAA0B,qDAAS,GAAG,eAAe;AACrD;AACA,sBAAsB,6CAAK;AAC3B;AACA;AACA;AACA;AACA,4BAA4B,uDAAgB;AAC5C,IAAI,sFAAmC;AACvC;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA,cAAc,0BAA0B;AACxC;AACA;AACA,yBAAyB,4CAA4C;AACrE;AACA;AACA;AACA;AACA,yBAAyB,wEAAwE;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,yEAAyE;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,iEAAiE;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,kEAAsB,cAAc,oBAAoB;AAC5D;AACA,QAAQ,uDAAgB;AACxB;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,IAAI,sFAAmC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA,+BAA+B,yDAAkB,gCAAgC,iBAAiB;AAClG;AACA,gBAAgB,gBAAgB;AAChC,gCAAgC,kDAAkD;AAClF;AACA;AACA,oBAAoB,+CAA+C;AACnE;AACA;AACA;AACA,yBAAyB,8CAA8C,+CAAO,EAAE;AAChF,wCAAwC,iBAAiB;AACzD,2CAA2C,4BAA4B;AACvE;AACA;AACA;AACA,wEAAwE,gEAAmB;AAC3F;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA,cAAc,0BAA0B;AACxC;AACA;AACA,yBAAyB,qCAAqC;AAC9D;AACA;AACA;AACA,yBAAyB,qCAAqC;AAC9D;AACA;AACA;AACA,yBAAyB,6CAA6C;AACtE;AACA;AACA;AACA;AACA,yBAAyB,oDAAoD;AAC7E;AACA;AACA;AACA;AACA,yBAAyB,mDAAmD;AAC5E;AACA;AACA;AACA;AACA;AACA,yBAAyB,0DAA0D;AACnF;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,kEAAsB,aAAa,oBAAoB;AAC3D;AACA,QAAQ,uDAAgB;AACxB;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,IAAI,sFAAmC;AACvC;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA,cAAc,0BAA0B;AACxC;AACA;AACA,yBAAyB,gEAAgE;AACzF;AACA;AACA;AACA,yBAAyB,4FAA4F;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6FAA6F;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,kEAAsB,aAAa,oBAAoB;AAC3D;AACA,QAAQ,uDAAgB;AACxB;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,IAAI,sFAAmC;AACvC;AACA;AACA;AACA;AACA;AACA,oCAAoC,iEAAe;AACnD;AACA;AACA,YAAY,0DAAW;AACvB;AACA;AACA,QAAQ,uDAAgB;AACxB,QAAQ,uDAAgB;AACxB;AACA,cAAc,2EAAwB;AACtC;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA,qBAAqB,gEAAgE;AACrF;AACA;AACA;AACA;AACA;AACA,qBAAqB,+DAA+D;AACpF;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gEAAgE;AACrF;AACA;AACA;AACA;AACA;AACA,qBAAqB,+DAA+D;AACpF;AACA;AACA;AACA;AACA,qBAAqB,gEAAgE;AACrF;AACA;AACA;AACA;AACA;AACA,qBAAqB,+DAA+D;AACpF;AACA;AACA;AACA,IAAI,sFAAmC;AACvC;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,cAAc,0BAA0B;AACxC;AACA;AACA,yBAAyB,4CAA4C;AACrE;AACA;AACA;AACA,yBAAyB,wEAAwE;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,yEAAyE;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,iEAAiE;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,kEAAkE;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,kEAAsB,aAAa,oBAAoB;AAC3D;AACA,QAAQ,uDAAgB;AACxB;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,IAAI,sFAAmC;AACvC;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,cAAc,0BAA0B;AACxC;AACA;AACA,yBAAyB,4CAA4C;AACrE;AACA;AACA;AACA,yBAAyB,wEAAwE;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,yEAAyE;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,iEAAiE;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oDAAoD;AAC7E;AACA;AACA;AACA;AACA;AACA,IAAI,kEAAsB,aAAa,oBAAoB;AAC3D;AACA,QAAQ,uDAAgB;AACxB;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,IAAI,sFAAmC;AACvC;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,cAAc,0BAA0B;AACxC;AACA;AACA,yBAAyB,mDAAmD;AAC5E;AACA;AACA;AACA;AACA;AACA,yBAAyB,mDAAmD;AAC5E;AACA,sBAAsB,mDAAmD;AACzE;AACA,yBAAyB,mDAAmD;AAC5E;AACA;AACA;AACA;AACA,yBAAyB,mDAAmD;AAC5E;AACA;AACA;AACA;AACA,yBAAyB,mDAAmD;AAC5E;AACA,sBAAsB,mDAAmD;AACzE;AACA,yBAAyB,mDAAmD;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iDAAS;AAChC,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iDAAS;AAChC,SAAS;AACT,KAAK;AACL,aAAa,0BAA0B;AACvC,aAAa,0BAA0B;AACvC,IAAI,kEAAsB;AAC1B;AACA,QAAQ,uDAAgB;AACxB;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,IAAI,sFAAmC;AACvC;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,UAAU,qCAAqC;AAC/C,UAAU,uCAAuC;AACjD,UAAU,uCAAuC;AACjD,UAAU,yCAAyC;AACnD,UAAU,yCAAyC;AACnD,UAAU,qCAAqC;AAC/C,UAAU,uCAAuC;AACjD,UAAU,yCAAyC;AACnD,UAAU,yCAAyC;AACnD,UAAU,uCAAuC;AACjD,UAAU,uCAAuC;AACjD,UAAU,qCAAqC;AAC/C;AACA,0BAA0B,6CAA6C;AACvE,4CAA4C,mBAAmB;AAC/D;AACA;AACA,iBAAiB,wDAAe;AAChC,yBAAyB,0DAAW;AACpC;AACA,IAAI,wEAA2B;AAC/B,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC;AACA,oCAAoC,wDAAe;AACnD,IAAI,wEAA2B;AAC/B,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,+BAA+B;AACzC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,8BAA8B;AACxC;AACA,oCAAoC,wDAAe;AACnD,IAAI,wEAA2B;AAC/B,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,gBAAgB,aAAa;AAC7B,oFAAoF,YAAY;AAChG,oCAAoC,wDAAe;AACnD,IAAI,wEAA2B;AAC/B,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D;AACA;AACA,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC;AACA,qCAAqC,wDAAe;AACpD,qCAAqC,wDAAe;AACpD;AACA,IAAI,wEAA2B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D;AACA;AACA,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC;AACA,qCAAqC,wDAAe;AACpD,qCAAqC,wDAAe;AACpD;AACA,IAAI,wEAA2B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,UAAU,kDAAkD;AAC5D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D;AACA,qCAAqC,wDAAe;AACpD,IAAI,wEAA2B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D;AACA,qCAAqC,wDAAe;AACpD,IAAI,wEAA2B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,UAAU,kDAAkD;AAC5D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D;AACA,qCAAqC,wDAAe;AACpD,IAAI,wEAA2B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D;AACA,qCAAqC,wDAAe;AACpD,IAAI,wEAA2B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,cAAc,0BAA0B;AACxC;AACA;AACA;AACA,yBAAyB,4CAA4C;AACrE;AACA;AACA;AACA,yBAAyB,wEAAwE;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,yEAAyE;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,iEAAiE;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,kEAAsB;AAC1B;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,wEAAqB;AACM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACl+B3B;AACA;AACA;AACA;AACA;AACA;AACA;AACsD;AACoB;AACvB;AAChB;AACA;AACA;AACuB;AACb;AACM;AACR;AACN;AACQ;AACV;AACM;AACE;AACF;AACJ;AACrC;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,kBAAkB,yEAAsB;AACxC;AACA,oCAAoC,kDAAO;AAC3C,sCAAsC,sDAAS;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mDAAQ;AACjC,IAAI,yEAA8B;AAClC,cAAc,2EAAwB;AACtC;AACA,oBAAoB,OAAO;AAC3B;AACA,oBAAoB,aAAa;AACjC,kCAAkC,UAAU;AAC5C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,oDAAoD,MAAM;AAC1D,yCAAyC,iEAAsB;AAC/D;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,oDAAQ;AAC9B;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS,kBAAkB,uDAAU;AACrC;AACA,0BAA0B,kBAAkB;AAC5C;AACA,SAAS,kBAAkB,2CAAI;AAC/B;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAAK;AAC3B,qCAAqC,uDAAU,eAAe,iDAAU;AACxE;AACA,oBAAoB,qCAAqC;AACzD,oBAAoB,4CAA4C;AAChE;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAAK;AAC3B,4CAA4C,uDAAU,eAAe,iDAAU;AAC/E;AACA,oBAAoB,qCAAqC,oCAAoC,mBAAmB;AAChH,oBAAoB,4CAA4C,sCAAsC,mBAAmB;AACzH;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,oDAAQ;AAC9B;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS,kBAAkB,uDAAU;AACrC;AACA,0BAA0B,iBAAiB;AAC3C;AACA,SAAS;AACT,6BAA6B,uDAAU,kBAAkB,iDAAU,aAAa,wDAAiB,EAAE,uDAAgB;AACnH,6BAA6B,uDAAU;AACvC;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sDAAe;AAC/B,sBAAsB,oDAAQ;AAC9B,qCAAqC,uDAAU,eAAe,iDAAU,aAAa,wDAAiB,EAAE,uDAAgB;AACxH;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS,kBAAkB,kDAAO;AAClC;AACA,0BAA0B,iBAAiB;AAC3C;AACA,SAAS,uDAAuD,0EAA6B;AAC7F;AACA,0BAA0B,iBAAiB;AAC3C;AACA,SAAS,uDAAuD,0EAA6B;AAC7F;AACA,0BAA0B,iBAAiB;AAC3C;AACA,SAAS,uDAAuD,0EAA6B;AAC7F;AACA,0BAA0B,iBAAiB;AAC3C;AACA,SAAS,uDAAuD,0EAA6B;AAC7F;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAAK;AAC3B,mDAAmD,uDAAU,eAAe,iDAAU;AACtF;AACA,oBAAoB,8CAA8C,iDAAS,EAAE;AAC7E,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,8CAA8C,0EAA6B;AAC3E,8CAA8C,0EAA6B;AAC3E,oBAAoB,8CAA8C,iDAAS,EAAE;AAC7E,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,8CAA8C,0EAA6B;AAC3E,8CAA8C,0EAA6B;AAC3E,oBAAoB,8CAA8C,iDAAS,EAAE;AAC7E,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,8CAA8C,0EAA6B;AAC3E,8CAA8C,0EAA6B;AAC3E,oBAAoB,8BAA8B;AAClD,8CAA8C,0EAA6B;AAC3E,8CAA8C,0EAA6B;AAC3E,oBAAoB,8CAA8C,iDAAS,EAAE;AAC7E,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,8CAA8C,0EAA6B;AAC3E,8CAA8C,0EAA6B;AAC3E,oBAAoB,8BAA8B;AAClD,8CAA8C,0EAA6B;AAC3E,8CAA8C,0EAA6B;AAC3E,oBAAoB,8BAA8B;AAClD,8CAA8C,0EAA6B;AAC3E,8CAA8C,0EAA6B;AAC3E,oBAAoB,8BAA8B;AAClD,8CAA8C,6EAAgC;AAC9E,8CAA8C,6EAAgC;AAC9E,oBAAoB,8BAA8B;AAClD,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,8CAA8C,6EAAgC;AAC9E,8CAA8C,6EAAgC;AAC9E,oBAAoB,8CAA8C,iDAAS,EAAE;AAC7E,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,8CAA8C,6EAAgC;AAC9E,8CAA8C,6EAAgC;AAC9E,oBAAoB,8CAA8C,iDAAS,EAAE;AAC7E,8CAA8C,6EAAgC;AAC9E,8CAA8C,6EAAgC;AAC9E,oBAAoB,8BAA8B;AAClD,6BAA6B,2DAAY,oBAAoB,iEAAsB;AACnF,8CAA8C,6EAAgC;AAC9E,8CAA8C,6EAAgC;AAC9E;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAAK;AAC3B,qCAAqC,uDAAU,eAAe,iDAAU,sCAAsC,8EAAiC;AAC/I;AACA,oBAAoB,8BAA8B;AAClD,oBAAoB,8BAA8B;AAClD,oBAAoB,8BAA8B;AAClD,oBAAoB,8BAA8B;AAClD;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAAK;AAC3B;AACA,YAAY,sDAAS,GAAG,8BAA8B,kBAAkB,uDAAU,kCAAkC,8EAAiC;AACrJ,YAAY,sDAAS,GAAG,8BAA8B,kBAAkB,uDAAU,kCAAkC,8EAAiC;AACrJ,YAAY,sDAAS,GAAG,8BAA8B,kBAAkB,uDAAU,mCAAmC,8EAAiC;AACtJ,YAAY,sDAAS,GAAG,8BAA8B,kBAAkB,uDAAU,kCAAkC,8EAAiC;AACrJ;AACA,qBAAqB,2CAAI;AACzB,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,uDAAU;AAC/E,iBAAiB,sDAAe;AAChC;AACA;AACA,oBAAoB,QAAQ;AAC5B,0BAA0B,8CAAK;AAC/B;AACA,wBAAwB,8BAA8B;AACtD,wBAAwB,8BAA8B;AACtD,wBAAwB,8BAA8B;AACtD,wBAAwB,8BAA8B;AACtD;AACA,QAAQ,mEAAuB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,uDAAU;AAC/E,iBAAiB,sDAAe;AAChC;AACA;AACA,oBAAoB,QAAQ;AAC5B,0BAA0B,8CAAK;AAC/B;AACA,wBAAwB,kDAAkD;AAC1E,wBAAwB,kDAAkD;AAC1E,wBAAwB,kDAAkD;AAC1E,wBAAwB,kDAAkD;AAC1E;AACA,QAAQ,mEAAuB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,oDAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,yBAAyB,kDAAO;AAChC;AACA;AACA,KAAK;AACL;AACA,yBAAyB,kDAAO;AAChC;AACA;AACA;AACA,KAAK;AACL,+CAA+C,kDAAO;AACtD,8BAA8B,uDAAU,2DAA2D;AACnG,8BAA8B,uDAAU,2DAA2D;AACnG,8BAA8B,uDAAU,2DAA2D;AACnG,8BAA8B,uDAAU,2DAA2D;AACnG,8BAA8B,uDAAU,2DAA2D;AACnG,8BAA8B,uDAAU,2DAA2D;AACnG,8BAA8B,uDAAU,2DAA2D;AACnG,8BAA8B,uDAAU,2DAA2D;AACnG,8BAA8B,uDAAU,uCAAuC;AAC/E,8BAA8B,uDAAU,uCAAuC;AAC/E,8BAA8B,uDAAU,uCAAuC;AAC/E,8BAA8B,uDAAU,uCAAuC;AAC/E,sBAAsB,8CAAK,CAAC,mDAAY,UAAU,wDAAe;AACjE;AACA;AACA;AACA;AACA;AACA,QAAQ,qDAAS,uDAAuD,OAAO;AAC/E;AACA;AACA;AACA,wEAAqB;AACM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrZ3B;AACA;AACA;AACA;AACsD;AACH;AAChB;AACA;AACA;AACU;AACM;AACd;AACS;AACD;AACV;AACM;AACE;AACN;AACrC;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA,0EAA0E,wBAAwB;AAClG,iEAAiE,wBAAwB;AACzF,0EAA0E,wBAAwB;AAClG,0EAA0E,wBAAwB;AAClG,yEAAyE,wBAAwB;AACjG,iEAAiE,0BAA0B;AAC3F,uEAAuE,4BAA4B;AACnG,sEAAsE,4BAA4B;AAClG,2EAA2E,8BAA8B;AACzG,oEAAoE,wBAAwB;AAC5F,gDAAgD,wBAAwB;AACxE,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,wBAAwB,4DAAoB;AAC5C,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,aAAa;AAC1D;AACA;AACA;AACA;AACA;AACA,qBAAqB,sBAAsB,4DAAoB,EAAE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE;AACA,iCAAiC,2DAAY;AAC7C,iCAAiC,2DAAY;AAC7C,iCAAiC,2DAAY;AAC7C,iCAAiC,2DAAY;AAC7C;AACA,sDAAsD,gEAAiB;AACvE;AACA;AACA,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE;AACA,iCAAiC,2DAAY;AAC7C,iCAAiC,2DAAY;AAC7C,iCAAiC,2DAAY;AAC7C,iCAAiC,2DAAY;AAC7C;AACA,sDAAsD,kEAAmB;AACzE;AACA;AACA,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE;AACA,iCAAiC,2DAAY;AAC7C,iCAAiC,2DAAY;AAC7C,iCAAiC,2DAAY;AAC7C,iCAAiC,2DAAY;AAC7C;AACA,sDAAsD,gEAAiB;AACvE;AACA;AACA,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE;AACA,iCAAiC,2DAAY;AAC7C,iCAAiC,2DAAY;AAC7C,iCAAiC,2DAAY;AAC7C,iCAAiC,2DAAY;AAC7C;AACA,iDAAiD,+DAAgB;AACjE;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,wBAAwB,4DAAoB;AAC5C;AACA;AACA;AACA,6CAA6C,aAAa;AAC1D;AACA;AACA;AACA;AACA;AACA,qBAAqB,sBAAsB,4DAAoB,EAAE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE;AACA,iCAAiC,2DAAY;AAC7C,iCAAiC,2DAAY;AAC7C,iCAAiC,2DAAY;AAC7C,iCAAiC,2DAAY;AAC7C,sDAAsD,gEAAiB;AACvE;AACA;AACA,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE;AACA,iCAAiC,2DAAY;AAC7C,iCAAiC,2DAAY;AAC7C,iCAAiC,2DAAY;AAC7C,iCAAiC,2DAAY;AAC7C;AACA,iDAAiD,kEAAmB;AACpE;AACA;AACA;AACA;AACA;AACA,0CAA0C,qDAAS;AACnD,sBAAsB,6CAAK;AAC3B;AACA,oBAAoB,8BAA8B;AAClD,6BAA6B,2DAAY,oBAAoB,iEAAsB;AACnF,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,oBAAoB,8CAA8C,iDAAS,EAAE;AAC7E,6BAA6B,2DAAY,oBAAoB,iEAAsB;AACnF,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,oBAAoB,8BAA8B;AAClD,6BAA6B,2DAAY,oBAAoB,iEAAsB;AACnF,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,oBAAoB,8BAA8B;AAClD,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,6BAA6B,2DAAY,oBAAoB,iEAAsB;AACnF,oBAAoB,8CAA8C,iDAAS,EAAE;AAC7E,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,6BAA6B,2DAAY,oBAAoB,iEAAsB;AACnF,oBAAoB,8BAA8B;AAClD,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,6BAA6B,2DAAY,oBAAoB,iEAAsB;AACnF,oBAAoB,8CAA8C,iDAAS,EAAE;AAC7E,6BAA6B,2DAAY,oBAAoB,iEAAsB;AACnF,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,oBAAoB,8BAA8B;AAClD,6BAA6B,2DAAY,oBAAoB,iEAAsB;AACnF,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,oBAAoB,8CAA8C,iDAAS,EAAE;AAC7E,6BAA6B,2DAAY,oBAAoB,iEAAsB;AACnF,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,oBAAoB,8CAA8C,iDAAS,EAAE;AAC7E,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,6BAA6B,2DAAY,oBAAoB,iEAAsB;AACnF,oBAAoB,8BAA8B;AAClD,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,6BAA6B,2DAAY,oBAAoB,iEAAsB;AACnF,oBAAoB,8CAA8C,iDAAS,EAAE;AAC7E,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,iEAAsB;AAClF,6BAA6B,2DAAY,oBAAoB,iEAAsB;AACnF;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA,uBAAuB,6CAAK;AAC5B;AACA,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,mDAAmD;AACzE,sBAAsB,mDAAmD;AACzE,sBAAsB,mDAAmD;AACzE,sBAAsB,mDAAmD;AACzE,sBAAsB,mDAAmD;AACzE,sBAAsB,mDAAmD;AACzE,sBAAsB,mDAAmD;AACzE,sBAAsB,mDAAmD;AACzE;AACA;AACA,gBAAgB,QAAQ;AACxB,qCAAqC,2DAAY;AACjD,qCAAqC,2DAAY;AACjD;AACA,yCAAyC,2DAAY;AACrD;AACA;AACA,sBAAsB,2CAAI;AAC1B,sBAAsB,2CAAI;AAC1B,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA,uBAAuB,6CAAK;AAC5B;AACA,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,mDAAmD;AACzE,sBAAsB,mDAAmD;AACzE,sBAAsB,mDAAmD;AACzE,sBAAsB,mDAAmD;AACzE,sBAAsB,mDAAmD;AACzE,sBAAsB,mDAAmD;AACzE,sBAAsB,mDAAmD;AACzE,sBAAsB,mDAAmD;AACzE;AACA,gBAAgB,QAAQ;AACxB,qCAAqC,2DAAY;AACjD,qCAAqC,2DAAY;AACjD;AACA,yCAAyC,2DAAY;AACrD;AACA;AACA,sBAAsB,2CAAI;AAC1B,sBAAsB,2CAAI;AAC1B,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA,uBAAuB,6CAAK;AAC5B,qCAAqC,iDAAiD;AACtF,iCAAiC,2DAAY;AAC7C,iCAAiC,2DAAY;AAC7C,iCAAiC,2DAAY;AAC7C,IAAI,mEAAuB;AAC3B;AACA,uBAAuB,6CAAK;AAC5B;AACA,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA,qCAAqC,2DAAY;AACjD;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA,yBAAyB,sDAAe;AACxC,sBAAsB,oDAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,4BAA4B,kDAAO;AACnC;AACA;AACA,KAAK;AACL;AACA,4BAA4B,kDAAO;AACnC;AACA;AACA;AACA,KAAK;AACL,+CAA+C,kDAAO;AACtD,8BAA8B,2DAAY,2BAA2B;AACrE,8BAA8B,2DAAY,2BAA2B;AACrE,8BAA8B,2DAAY,2BAA2B;AACrE,8BAA8B,2DAAY,2BAA2B;AACrE,8BAA8B,2DAAY;AAC1C,8BAA8B,2DAAY;AAC1C,8BAA8B,2DAAY;AAC1C,8BAA8B,2DAAY;AAC1C,8BAA8B,2DAAY;AAC1C,8BAA8B,2DAAY;AAC1C,8BAA8B,2DAAY;AAC1C,8BAA8B,2DAAY;AAC1C,sBAAsB,8CAAK,CAAC,mDAAY,UAAU,wDAAe;AACjE;AACA;AACA;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA,wEAAqB;AACQ;;;;;;;;;;;;;;;;;;;;ACnY7B;AACA;AACA;AACA;AACA;AACA;AAC8D;AAC3B;AACQ;AACN;AACF;AACnC;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,yGAAyG,aAAa;AACtH;AACA,kBAAkB,4DAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,kBAAkB,4DAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,iGAAiG,aAAa;AAC9G;AACA,kBAAkB,4DAAqB;AACvC;AACA;AACA;AACA,uCAAuC,8CAAO;AAC9C,uCAAuC,8CAAO;AAC9C,uCAAuC,8CAAO;AAC9C,uCAAuC,8CAAO;AAC9C,uCAAuC,gDAAS;AAChD,uCAAuC,gDAAS;AAChD;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA,KAAK;AACL,wBAAwB,mDAAQ;AAChC,kBAAkB,4DAAqB;AACvC,uCAAuC,gDAAS;AAChD,uCAAuC,gDAAS;AAChD,uCAAuC,8CAAO;AAC9C,uCAAuC,gDAAS;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,sGAAsG,aAAa;AACnH,wBAAwB,mDAAQ,YAAY,mDAAQ,YAAY,mDAAQ;AACxE;AACA,kBAAkB,4DAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,iFAAiF,aAAa;AAC9F,kBAAkB,4DAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,yIAAyI,aAAa;AACtJ,kBAAkB,4DAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,yIAAyI,aAAa;AACtJ,kBAAkB,yDAAkB;AACpC;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,yIAAyI,aAAa;AACtJ,kBAAkB,yDAAkB;AACpC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,yIAAyI,aAAa;AACtJ,kBAAkB,yDAAkB;AACpC;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,yIAAyI,aAAa;AACtJ,kBAAkB,yDAAkB;AACpC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,YAAY,KAAK,aAAa;AAClD,kBAAkB,yDAAkB;AACpC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,YAAY,KAAK,aAAa;AAClD,kBAAkB,yDAAkB;AACpC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,2EAA2E,aAAa;AACxF,kBAAkB,yDAAkB;AACpC,qBAAqB,mDAAQ;AAC7B;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,uEAAuE,aAAa;AACpF,kBAAkB,yDAAkB;AACpC,qBAAqB,mDAAQ;AAC7B;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA,6BAA6B,OAAO;AACpC,0FAA0F,aAAa;AACvG,6BAA6B,QAAQ;AACrC,sEAAsE,aAAa;AACnF,6BAA6B,QAAQ;AACrC;AACA;AACA,KAAK;AACL;AACA;AACA,WAAW,4DAAqB,oBAAoB,gEAAyB;AAC7E,WAAW,4DAAqB,oBAAoB,gEAAyB;AAC7E,WAAW,4DAAqB,oBAAoB,gEAAyB;AAC7E;AACA;AACA,IAAI,gEAAwB;AAC5B;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA,6BAA6B,OAAO;AACpC,0FAA0F,aAAa;AACvG,6BAA6B,QAAQ;AACrC,sEAAsE,aAAa;AACnF,6BAA6B,QAAQ;AACrC,uGAAuG,eAAe;AACtH,wBAAwB,mDAAQ;AAChC,wBAAwB,mDAAQ,YAAY,mDAAQ;AACpD,wBAAwB,mDAAQ,aAAa,mDAAQ,aAAa,mDAAQ;AAC1E;AACA;AACA;AACA,WAAW,4DAAqB;AAChC,WAAW,4DAAqB;AAChC,WAAW,4DAAqB;AAChC;AACA;AACA,IAAI,gEAAwB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,YAAY,gBAAgB;AAC5B;AACA;AACA;AACA,yDAAyD,mCAAmC;AAC5F,SAAS,aAAa;AACtB,kBAAkB,4DAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,YAAY,gBAAgB;AAC5B,wGAAwG,aAAa;AACrH,kBAAkB,4DAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,wGAAwG,aAAa;AACrH,kBAAkB,4DAAqB,mBAAmB,gEAAyB;AACnF;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,iFAAiF,aAAa;AAC9F,kBAAkB,4DAAqB,wBAAwB,mDAAQ,YAAY,mDAAQ,YAAY,mDAAQ;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,8EAA8E,aAAa;AAC3F,kBAAkB,4DAAqB,wBAAwB,mDAAQ,YAAY,mDAAQ,YAAY,mDAAQ;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA,KAAK;AACL,kBAAkB,4DAAqB,wBAAwB,mDAAQ,YAAY,mDAAQ,YAAY,mDAAQ;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,+FAA+F,aAAa;AAC5G,kBAAkB,4DAAqB,wBAAwB,mDAAQ,YAAY,mDAAQ,YAAY,mDAAQ;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,yDAAkB,yBAAyB,uBAAuB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,YAAY,gBAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,yDAAM;AACnB,kBAAkB,yDAAkB,yBAAyB,uBAAuB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,OAAO;AACnC;AACA,YAAY,gBAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA,aAAa,yDAAM;AACnB,kBAAkB,yDAAkB;AACpC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,OAAO;AACnC;AACA;AACA,kBAAkB,yDAAkB;AACpC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,OAAO;AACnC;AACA;AACA,kBAAkB,yDAAkB,yBAAyB,kBAAkB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,OAAO;AACnC;AACA,YAAY,gBAAgB;AAC5B;AACA;AACA;AACA;AACA,kBAAkB,yDAAkB;AACpC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,OAAO;AACnC;AACA;AACA,kBAAkB,yDAAkB;AACpC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,OAAO;AACnC;AACA,YAAY,gBAAgB;AAC5B;AACA;AACA;AACA;AACA,kBAAkB,yDAAkB;AACpC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,cAAc;AACjC,kBAAkB,yDAAkB;AACpC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACc;;;;;;;;;;;;;;;;;ACzjBnC;AACA;AACA;AACA;AAC8D;AACT;AACrD;AACA;AACA;AACA,QAAQ,wEAAqB;AAC7B,KAAK;AACL;AACA;AACA,yBAAyB,gDAAQ;AACjC,IAAI,sEAA8B;AAClC;AACA;AACA,cAAc,2EAAwB;AACtC,gCAAgC,oBAAoB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,qCAAqC;AACvE;AACA;AACA;AACA,gBAAgB,aAAa;AAC7B;AACA;AACA;AACA;AACA;AACA,6EAA6E,YAAY,WAAW,yDAAM;AAC1G,oCAAoC,4CAA4C;AAChF;AACA,KAAK;AACL;AACA;AACA;AACA,oBAAoB,qDAAqD;AACzE;AACA,oBAAoB,6CAA6C,cAAc,KAAK;AACpF;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,aAAa;AACrD;AACA;AACA,sBAAsB,sEAAsE;AAC5F,sBAAsB,gCAAgC,cAAc,KAAK;AACzE;AACA,2CAA2C,+BAA+B;AAC1E,2CAA2C,+BAA+B;AAC1E,2CAA2C,+BAA+B;AAC1E;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAa;AAC/B,kBAAkB,aAAa;AAC/B;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,kFAAkF,cAAc,WAAW,yDAAM;AACjH,KAAK;AACL,wCAAwC,gCAAgC;AACxE,sBAAsB,gCAAgC,cAAc,KAAK;AACzE;AACA;AACA;AACA,sBAAsB,sEAAsE;AAC5F,sBAAsB,gCAAgC,cAAc,KAAK;AACzE;AACA,2CAA2C,+BAA+B;AAC1E,2CAA2C,+BAA+B;AAC1E,2CAA2C,+BAA+B;AAC1E;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAa;AAC/B,kBAAkB,aAAa;AAC/B;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,kFAAkF,cAAc,WAAW,yDAAM;AACjH,KAAK;AACL,wCAAwC,gCAAgC;AACxE,sBAAsB,gCAAgC,cAAc,KAAK;AACzE;AACA;AACA;AACA;AACA,kFAAkF,YAAY,WAAW,yDAAM;AAC/G,KAAK;AACL,sBAAsB,gCAAgC,cAAc,KAAK;AACzE;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAa;AAC/B,kBAAkB,aAAa;AAC/B;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF,YAAY,WAAW,yDAAM;AACpH;AACA,KAAK;AACL;AACA;AACA;AACA,oBAAoB,iDAAiD,cAAc,KAAK;AACxF;AACA;AACA;AACA;AACA;AACA,wCAAwC,gCAAgC;AACxE,wCAAwC,aAAa;AACrD,wCAAwC,gCAAgC;AACxE;AACA;AACA,gCAAgC,yDAAyD;AACzF,sBAAsB,2CAA2C;AACjE;AACA;AACA;AACA,uBAAuB,cAAc;AACrC,4FAA4F,cAAc,WAAW,yDAAM;AAC3H;AACA,KAAK;AACL;AACA,wCAAwC,gCAAgC;AACxE,6CAA6C,gBAAgB;AAC7D;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAa;AAC/B,kBAAkB,aAAa;AAC/B;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,iBAAiB,4BAA4B;AAC7C;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC,kFAAkF,YAAY,WAAW,yDAAM;AAC/G;AACA,KAAK;AACL,sBAAsB,qCAAqC,cAAc,KAAK;AAC9E;AACA,wCAAwC,aAAa;AACrD;AACA;AACA,sBAAsB,yEAAyE;AAC/F,sBAAsB,kDAAkD,cAAc,KAAK;AAC3F;AACA,4CAA4C,+BAA+B;AAC3E,4CAA4C,+BAA+B;AAC3E,4CAA4C,+BAA+B;AAC3E,yCAAyC,aAAa;AACtD;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAa;AAC/B,kBAAkB,aAAa;AAC/B;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,mFAAmF,cAAc,WAAW,yDAAM;AAClH,KAAK;AACL,yCAAyC,gCAAgC;AACzE,sBAAsB,gCAAgC,cAAc,KAAK;AACzE;AACA;AACA;AACA,sBAAsB,yEAAyE;AAC/F;AACA;AACA;AACA,uBAAuB,cAAc;AACrC,8FAA8F,cAAc,WAAW,yDAAM;AAC7H;AACA,KAAK;AACL;AACA,4CAA4C,+BAA+B;AAC3E,4CAA4C,+BAA+B;AAC3E,4CAA4C,+BAA+B;AAC3E,yCAAyC,gCAAgC;AACzE,yCAAyC,gCAAgC;AACzE;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAa;AAC/B,kBAAkB,aAAa;AAC/B;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC,mFAAmF,cAAc,WAAW,yDAAM;AAClH;AACA,KAAK;AACL;AACA;AACA;AACA,oBAAoB,2DAA2D,cAAc,KAAK;AAClG;AACA;AACA;AACA;AACA;AACA,yCAAyC,gCAAgC;AACzE,yCAAyC,aAAa;AACtD,yCAAyC,gCAAgC;AACzE;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC,wEAAwE,YAAY,WAAW,yDAAM;AACrG;AACA,KAAK;AACL,sBAAsB,2DAA2D,cAAc,KAAK;AACpG;AACA,yCAAyC,aAAa;AACtD,yCAAyC,aAAa;AACtD;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC,mFAAmF,YAAY,WAAW,yDAAM;AAChH;AACA,KAAK;AACL,sBAAsB,kDAAkD,cAAc,KAAK;AAC3F;AACA,yCAAyC,aAAa;AACtD,yCAAyC,aAAa;AACtD;AACA;AACA;AACA;AACA,6BAA6B,gBAAgB,2CAA2C,yDAAM;AAC9F,KAAK;AACL,uBAAuB,8DAAsB;AAC7C;AACA,oBAAoB,gDAAgD,cAAc,KAAK;AACvF,uBAAuB,8DAAsB;AAC7C;AACA,yCAAyC,aAAa;AACtD,yCAAyC,aAAa;AACtD;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAa;AAC/B,kBAAkB,aAAa;AAC/B;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC,mFAAmF,cAAc,WAAW,yDAAM;AAClH,oCAAoC,8CAA8C;AAClF;AACA,KAAK;AACL,uBAAuB,gEAAwB;AAC/C,sBAAsB,gCAAgC,cAAc,KAAK,gBAAgB,gEAAwB;AACjH;AACA;AACA,yCAAyC,gCAAgC;AACzE;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC,8FAA8F,cAAc,WAAW,yDAAM;AAC7H;AACA,KAAK;AACL,sBAAsB,gCAAgC,cAAc,KAAK;AACzE;AACA,yCAAyC,gCAAgC;AACzE;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAa;AAC/B,kBAAkB,aAAa;AAC/B;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,IAAI,uEAA+B;AACnC;AACA;AACA,wEAAqB;AACI;;;;;;;;;;;;;;;;;ACxWzB;AACA;AACA;AACA;AACsD;AACK;AAC3D;AACA;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,UAAU,2DAAY,EAAE,0DAAW;AACnC,cAAc,iEAAqB;AACnC,cAAc,iEAAkB;AAChC;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,sBAAsB,gEAAgE;AACtF,oBAAoB,gBAAgB;AACpC;AACA,yBAAyB,gEAAgE;AACzF,wCAAwC,WAAW;AACnD,wCAAwC,WAAW;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,sBAAsB,gEAAgE;AACtF,oBAAoB,gBAAgB;AACpC;AACA,yBAAyB,gEAAgE;AACzF,wCAAwC,WAAW;AACnD,wCAAwC,WAAW;AACnD;AACA,wBAAwB,6EAA6E;AACrG;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACG;;;;;;;;;;;;;;;;;ACzDxB;AACA;AACA;AACA;AACA;AAC8D;AACiD;AAC/G;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,YAAY;AAC3F,aAAa,yDAAM,KAAK,aAAa;AACrC;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,YAAY,mCAAmC,YAAY,WAAW,yDAAM;AAC5H,gDAAgD,cAAc,qCAAqC,cAAc,WAAW,yDAAM;AAClI;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D,8CAA8C,YAAY;AAC1D,4BAA4B,YAAY;AACxC,iBAAiB,yDAAM;AACvB;AACA,uDAAuD,cAAc;AACrE,uDAAuD,cAAc;AACrE,4BAA4B,cAAc;AAC1C,iBAAiB,yDAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,YAAY,KAAK,6BAA6B;AACtH,sDAAsD,YAAY,KAAK,0BAA0B;AACjG,iBAAiB,yDAAM,KAAK,aAAa;AACzC;AACA,8EAA8E,cAAc;AAC5F;AACA,aAAa;AACb,sDAAsD,cAAc,KAAK,0BAA0B;AACnG,iBAAiB,yDAAM,KAAK,aAAa;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,YAAY;AACjE;AACA,qDAAqD,YAAY,KAAK,yBAAyB,YAAY;AAC3G;AACA,qDAAqD,YAAY,KAAK,yBAAyB,YAAY;AAC3G,iBAAiB,yDAAM,KAAK,aAAa;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA,+CAA+C,YAAY;AAC3D,+CAA+C,YAAY;AAC3D,aAAa,yDAAM;AACnB;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,OAAO;AACnC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,iBAAiB,qCAAqC,kBAAkB;AACxE,iBAAiB,qCAAqC,kBAAkB;AACxE,iBAAiB,qCAAqC,kBAAkB;AACxE,iBAAiB,qCAAqC,kBAAkB;AACxE,iBAAiB,sCAAsC,kBAAkB;AACzE,iBAAiB,uCAAuC,kBAAkB;AAC1E;AACA;AACA,eAAe,+CAAO;AACtB,iBAAiB,iDAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,OAAO;AACnC;AACA,+HAA+H,YAAY;AAC3I,+HAA+H,cAAc;AAC7I;AACA;AACA;AACA;AACA,kCAAkC,wDAAwD;AAC1F;AACA;AACA;AACA;AACA,kCAAkC,wDAAwD;AAC1F;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,OAAO;AACnC;AACA;AACA;AACA,KAAK,KAAK,eAAe;AACzB;AACA;AACA,KAAK,KAAK,eAAe;AACzB,aAAa,0CAA0C;AACvD,aAAa,2CAA2C;AACxD;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,8HAA8H,YAAY,KAAK,aAAa;AAC5J;AACA,aAAa,0BAA0B;AACvC,aAAa,0BAA0B;AACvC,aAAa,2BAA2B;AACxC;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,oKAAoK,eAAe;AACnL;AACA,aAAa,0BAA0B;AACvC,aAAa,0BAA0B;AACvC,aAAa,2BAA2B;AACxC,aAAa,4BAA4B;AACzC;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,8FAA8F,YAAY;AAC1G;AACA,aAAa,0BAA0B;AACvC,aAAa,0BAA0B;AACvC;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,OAAO;AACnC;AACA,iIAAiI,YAAY;AAC7I;AACA,aAAa,0BAA0B;AACvC,aAAa,0BAA0B;AACvC;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,OAAO;AACnC;AACA,2EAA2E,YAAY,MAAM,aAAa;AAC1G;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,0BAA0B;AACvC,aAAa,0BAA0B;AACvC,sEAAsE,cAAc;AACpF;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,+BAA+B,OAAO;AACtC;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT,UAAU,cAAc,iBAAiB,kBAAkB;AAC3D,UAAU,cAAc,iBAAiB,kBAAkB;AAC3D,UAAU,cAAc,iBAAiB,kBAAkB;AAC3D,UAAU,cAAc,iBAAiB,kBAAkB;AAC3D;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,aAAa,0BAA0B;AACvC,aAAa,2BAA2B;AACxC,eAAe,sCAAsC,iBAAiB;AACtE,oCAAoC,uDAAe;AACnD;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,+BAA+B,WAAW,iBAAiB;AAC3D;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT,UAAU,kCAAkC,iBAAiB,kBAAkB;AAC/E,UAAU,kCAAkC,iBAAiB,kBAAkB;AAC/E,UAAU,kCAAkC,iBAAiB,kBAAkB;AAC/E,UAAU,kCAAkC,iBAAiB,kBAAkB;AAC/E,UAAU,kCAAkC,iBAAiB,kBAAkB;AAC/E,UAAU,kCAAkC,kBAAkB,kBAAkB;AAChF,UAAU,kCAAkC,kBAAkB,kBAAkB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI,0DAAkB;AACtB,aAAa,0BAA0B;AACvC,aAAa,2BAA2B;AACxC,eAAe,sCAAsC,gBAAgB;AACrE,eAAe,uCAAuC,gBAAgB;AACtE,oCAAoC,uDAAe;AACnD;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT,UAAU,cAAc,iBAAiB,mBAAmB;AAC5D,UAAU,cAAc,iBAAiB,mBAAmB;AAC5D,UAAU,cAAc,iBAAiB,mBAAmB;AAC5D,UAAU,cAAc,iBAAiB,mBAAmB;AAC5D,UAAU,cAAc,iBAAiB,mBAAmB;AAC5D,UAAU,cAAc,iBAAiB,mBAAmB;AAC5D,UAAU,cAAc,iBAAiB,mBAAmB;AAC5D,UAAU,cAAc,iBAAiB,mBAAmB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,oCAAoC,uDAAe;AACnD,kBAAkB,6DAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA,SAAS;AACT,UAAU,cAAc,iBAAiB,sCAAsC;AAC/E,UAAU,cAAc,iBAAiB,uCAAuC;AAChF,UAAU,cAAc,iBAAiB,uCAAuC;AAChF,UAAU,cAAc,iBAAiB,uCAAuC;AAChF,UAAU,cAAc,iBAAiB,sCAAsC;AAC/E,UAAU,cAAc,iBAAiB,sCAAsC;AAC/E,UAAU,cAAc,iBAAiB,sCAAsC;AAC/E,UAAU,cAAc,iBAAiB,uCAAuC;AAChF;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,aAAa,qCAAqC,kBAAkB;AACpE;AACA,aAAa,sCAAsC,kBAAkB;AACrE,oCAAoC,uDAAe;AACnD;AACA;AACA;AACA;AACA;AACA,oBAAoB,2EAAwB;AAC5C,kCAAkC,OAAO;AACzC;AACA,UAAU,mDAAmD;AAC7D,UAAU,kDAAkD;AAC5D,UAAU,iDAAiD;AAC3D,UAAU,yDAAyD;AACnE,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D;AACA;AACA,UAAU,oDAAoD;AAC9D,UAAU,mDAAmD;AAC7D,UAAU,kDAAkD;AAC5D,UAAU,0DAA0D;AACpE,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D;AACA;AACA,gBAAgB,kDAAU;AAC1B;AACA,gBAAgB,uDAAe;AAC/B,eAAe,wDAAgB;AAC/B;AACA;AACA;AACA,0CAA0C,qBAAqB,qEAA6B,QAAQ;AACpG;AACA;AACA,0CAA0C,qBAAqB,wEAAgC,QAAQ;AACvG,mBAAmB,eAAe;AAClC,mBAAmB,eAAe;AAClC,0CAA0C,uDAAe;AACzD,4EAA4E,cAAc;AAC1F;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,OAAO;AACnC;AACA,UAAU,mDAAmD;AAC7D,UAAU,kDAAkD;AAC5D,UAAU,iDAAiD;AAC3D,UAAU,yDAAyD;AACnE,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D;AACA;AACA,UAAU,oDAAoD;AAC9D,UAAU,mDAAmD;AAC7D,UAAU,kDAAkD;AAC5D,UAAU,0DAA0D;AACpE,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D;AACA,uFAAuF,+BAA+B;AACtH,uFAAuF,+BAA+B;AACtH,aAAa,eAAe;AAC5B,aAAa,eAAe;AAC5B,oCAAoC,uDAAe;AACnD,sEAAsE,cAAc;AACpF;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,UAAU,mDAAmD;AAC7D,UAAU,kDAAkD;AAC5D,UAAU,iDAAiD;AAC3D,UAAU,yDAAyD;AACnE,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D;AACA;AACA,UAAU,oDAAoD;AAC9D,UAAU,mDAAmD;AAC7D,UAAU,kDAAkD;AAC5D,UAAU,0DAA0D;AACpE,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D;AACA,uFAAuF,+BAA+B;AACtH,uFAAuF,+BAA+B;AACtH,uFAAuF,+BAA+B;AACtH,uFAAuF,+BAA+B;AACtH,aAAa,eAAe;AAC5B,aAAa,eAAe;AAC5B,aAAa,eAAe;AAC5B,aAAa,eAAe;AAC5B,qCAAqC,uDAAe;AACpD,qCAAqC,uDAAe;AACpD,sBAAsB,kBAAkB;AACxC,sBAAsB,kBAAkB;AACxC;AACA;AACA;AACA,wEAAqB;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACtpBrB;AACA;AACA;AACA;AACsD;AACnB;AACA;AACU;AACY;AACtB;AACM;AACE;AACM;AACjD;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,iCAAiC,iDAAO;AACxC,oDAAoD,2CAAI;AACxD,uCAAuC,2CAAI;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mDAAQ;AAC9B;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,0BAA0B,iBAAiB;AAC3C;AACA,SAAS;AACT;AACA,IAAI,mEAAuB;AAC3B,4BAA4B,uDAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,yEAAsB;AAC/C,sBAAsB,mDAAQ;AAC9B;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,0BAA0B,iBAAiB;AAC3C;AACA,SAAS;AACT;AACA,0BAA0B,iBAAiB;AAC3C;AACA,SAAS;AACT;AACA,IAAI,mEAAuB;AAC3B,4BAA4B,uDAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mDAAQ;AAC9B;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,0BAA0B,iBAAiB;AAC3C;AACA,SAAS;AACT;AACA,oBAAoB,kBAAkB;AACtC;AACA,uBAAuB,iEAAe;AACtC;AACA,gCAAgC,yDAAW;AAC3C;AACA;AACA;AACA;AACA;AACA,QAAQ,uDAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gDAAS,WAAW,sDAAe,EAAE;AACpD,sBAAsB,mDAAQ;AAC9B;AACA,UAAU,MAAM,8CAAO,gBAAgB;AACvC,UAAU,MAAM,gDAAS,qBAAqB;AAC9C,UAAU,MAAM,8CAAO,eAAe;AACtC,UAAU,MAAM,gDAAS,YAAY;AACrC;AACA;AACA;AACA;AACA,0BAA0B,kBAAkB;AAC5C;AACA,SAAS;AACT;AACA,oBAAoB,kBAAkB;AACtC;AACA,sCAAsC,iEAAe;AACrD,gCAAgC,yDAAW;AAC3C;AACA;AACA;AACA;AACA;AACA,QAAQ,uDAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,yEAAsB;AAC/C,sBAAsB,mDAAQ;AAC9B;AACA,UAAU,MAAM,8CAAO,gBAAgB;AACvC,UAAU,MAAM,gDAAS,YAAY;AACrC,UAAU,MAAM,8CAAO,eAAe;AACtC,UAAU,MAAM,gDAAS,YAAY;AACrC;AACA;AACA,UAAU,MAAM,8CAAO,gBAAgB;AACvC,UAAU,MAAM,8CAAO,gBAAgB;AACvC,UAAU,MAAM,8CAAO,eAAe;AACtC,UAAU,MAAM,gDAAS,YAAY;AACrC,UAAU,MAAM,gDAAS,gBAAgB;AACzC,UAAU,MAAM,gDAAS,gBAAgB;AACzC,UAAU,MAAM,8CAAO,eAAe;AACtC,UAAU,MAAM,gDAAS,YAAY;AACrC;AACA;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,IAAI,mEAAuB;AAC3B,IAAI,uDAAgB;AACpB;AACA;AACA,wEAAqB;AACA;;;;;;;;;;;;;;;;;ACrOrB;AACA;AACA;AACA;AACsD;AACX;AAC3C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,mBAAmB,mDAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mDAAW;AAChC,qBAAqB,mDAAW;AAChC,wBAAwB,mDAAW;AACnC,SAAS;AACT;AACA;AACA,qBAAqB,mDAAW;AAChC,qBAAqB,mDAAW;AAChC,wBAAwB,mDAAW;AACnC,SAAS;AACT;AACA;AACA,qBAAqB,mDAAW;AAChC,qBAAqB,mDAAW;AAChC,wBAAwB,mDAAW;AACnC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,wEAAqB;AACO;;;;;;;;;;;;;;;;;ACxD5B;AACA;AACA;AACA;AACsD;AACoB;AAC1E;AACA;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA,kCAAkC,MAAM;AACxC,SAAS;AACT;AACA,8BAA8B,MAAM;AACpC,SAAS;AACT,KAAK;AACL;AACA;AACA,yBAAyB,8DAAsB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,8DAAsB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wDAAgB,WAAW,6DAAqB;AAC/D,iBAAiB,mEAA2B;AAC5C;AACA;AACA;AACA;AACA,IAAI,2DAAmB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,iBAAiB;AAC/E,8DAA8D,iBAAiB;AAC/E,iEAAiE,iBAAiB;AAClF,mEAAmE,kBAAkB;AACrF,wDAAwD,YAAY;AACpE,wDAAwD,YAAY;AACpE,wDAAwD,YAAY;AACpE,wDAAwD,YAAY;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,8DAAsB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wDAAgB,WAAW,0DAAkB;AAC5D,iBAAiB,mEAA2B;AAC5C;AACA;AACA;AACA;AACA,IAAI,2DAAmB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,iBAAiB;AAC/E,8DAA8D,iBAAiB;AAC/E,iEAAiE,iBAAiB;AAClF,mEAAmE,kBAAkB;AACrF,wDAAwD,YAAY;AACpE,wDAAwD,YAAY;AACpE,wDAAwD,YAAY;AACpE,wDAAwD,YAAY;AACpE;AACA,wEAAqB;AACkB;;;;;;;;;;;;;;;;;;;;;;;;ACrNvC;AACA;AACA;AACA;AACsD;AACP;AACE;AACd;AACU;AACF;AACN;AACQ;AACN;AACvC;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,sBAAsB,gBAAgB,qFAAuC;AAC7E,oBAAoB,gBAAgB,mFAAqC;AACzE;AACA,2EAA2E,gBAAgB;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gEAAuB;AAC7C;AACA;AACA,4BAA4B,4DAAqB;AACjD;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,mDAAQ;AACrE;AACA,6DAA6D,mDAAQ;AACrE;AACA;AACA;AACA,2CAA2C,aAAa;AACxD;AACA;AACA;AACA,gCAAgC,4DAAoB;AACpD;AACA,gCAAgC,yBAAyB;AACzD;AACA;AACA;AACA;AACA,uBAAuB,cAAc;AACrC;AACA;AACA;AACA;AACA;AACA,gCAAgC,cAAc;AAC9C;AACA,uBAAuB,cAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,cAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,cAAc;AACrC;AACA;AACA;AACA;AACA,gCAAgC,cAAc;AAC9C,gCAAgC,cAAc;AAC9C;AACA,uBAAuB,cAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,cAAc;AACtC,wBAAwB,cAAc;AACtC,wBAAwB,cAAc;AACtC,wBAAwB,cAAc;AACtC;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA,gCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,aAAa;AACxD;AACA;AACA;AACA;AACA;AACA,uBAAuB,cAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,cAAc;AACrC;AACA;AACA;AACA;AACA;AACA,uBAAuB,cAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,cAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,cAAc;AACrC;AACA;AACA;AACA;AACA,gCAAgC,cAAc;AAC9C,gCAAgC,cAAc;AAC9C;AACA,uBAAuB,cAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,cAAc;AACtC,wBAAwB,cAAc;AACtC,wBAAwB,cAAc;AACtC,wBAAwB,cAAc;AACtC;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA,gCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,aAAa;AACxD;AACA;AACA;AACA;AACA;AACA,wBAAwB,oCAAoC;AAC5D,wBAAwB,sCAAsC;AAC9D,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA,gCAAgC,sBAAsB;AACtD;AACA,oEAAoE,uDAAU;AAC9E;AACA;AACA;AACA,2CAA2C,aAAa;AACxD;AACA;AACA;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA,0BAA0B,6CAAK;AAC/B;AACA,wEAAwE,uDAAU;AAClF;AACA;AACA,QAAQ,mEAAuB;AAC/B;AACA;AACA,iCAAiC,kBAAkB;AACnD;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA,6BAA6B,oBAAoB;AACjD;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA,6BAA6B,mBAAmB;AAChD;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA,6BAA6B,wBAAwB;AACrD;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA,0BAA0B,6CAAK;AAC/B;AACA;AACA,2EAA2E,uDAAU;AACrF;AACA,2EAA2E,uDAAU;AACrF;AACA,QAAQ,mEAAuB;AAC/B;AACA;AACA,wBAAwB,oBAAoB;AAC5C,wBAAwB,oBAAoB;AAC5C,wBAAwB,oBAAoB;AAC5C,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,qDAAS,GAAG,oCAAoC;AAC1G,0BAA0B,6CAAK;AAC/B;AACA;AACA,wEAAwE,uDAAU;AAClF;AACA,wEAAwE,uDAAU;AAClF;AACA,QAAQ,mEAAuB;AAC/B;AACA;AACA,wBAAwB,oBAAoB;AAC5C,wBAAwB,oBAAoB;AAC5C,wBAAwB,oBAAoB;AAC5C,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,qDAAS,GAAG,gBAAgB;AACrG,gCAAgC,sBAAsB;AACtD;AACA;AACA,+FAA+F,WAAW;AAC1G;AACA,+FAA+F,WAAW;AAC1G;AACA,QAAQ,mEAAuB;AAC/B;AACA;AACA,wBAAwB,oBAAoB;AAC5C,wBAAwB,oBAAoB;AAC5C,wBAAwB,oBAAoB;AAC5C,wBAAwB,oBAAoB;AAC5C;AACA;AACA,wBAAwB,oBAAoB;AAC5C,wBAAwB,oBAAoB;AAC5C,wBAAwB,oBAAoB;AAC5C,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA,wEAAqB;AACO;;;;;;;;;;;;;;;;ACja5B;AACA;AACA;AACA;AACsD;AACtD;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,sBAAsB,8CAA8C;AACpE,qBAAqB,yBAAyB,iBAAiB;AAC/D,sBAAsB,4CAA4C;AAClE,qBAAqB,0BAA0B,iBAAiB;AAChE,sBAAsB,6CAA6C;AACnE,qBAAqB,4BAA4B,iBAAiB;AAClE,sBAAsB,+CAA+C;AACrE,qBAAqB,yBAAyB,iBAAiB;AAC/D,sBAAsB,4CAA4C;AAClE,qBAAqB,kCAAkC,iBAAiB;AACxE,sBAAsB,qDAAqD;AAC3E,qBAAqB,+BAA+B,iBAAiB;AACrE,sBAAsB,kDAAkD;AACxE,qBAAqB,+BAA+B,iBAAiB;AACrE,sBAAsB,kDAAkD;AACxE,qBAAqB,4BAA4B,iBAAiB;AAClE,sBAAsB,+CAA+C;AACrE,qBAAqB,2BAA2B,iBAAiB;AACjE,sBAAsB,8CAA8C;AACpE,qBAAqB,2BAA2B,oCAAoC;AACpF,sBAAsB,gEAAgE;AACtF,qBAAqB,2BAA2B,oCAAoC;AACpF,sBAAsB,+DAA+D;AACrF;AACA,4BAA4B,cAAc;AAC1C;AACA;AACA;AACA;AACA,wEAAqB;AACA;;;;;;;;;;;;;;;;;ACtIrB;AACA;AACA;AACA;AAC8D;AACjB;AAC7C;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2EAAwB;AAChD,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA;AACA;AACA,iBAAiB,yDAAM;AACvB;AACA,kDAAkD,aAAa;AAC/D;AACA;AACA;AACA;AACA;AACA,iDAAiD,YAAY;AAC7D,uBAAuB,cAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAa;AAC/B,kBAAkB,aAAa;AAC/B;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAa;AAC/B,kBAAkB,aAAa;AAC/B;AACA,SAAS;AACT,KAAK;AACL,CAAC;AACD,kDAAkD,YAAY;AAC9D,uBAAuB,cAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAa;AAC/B,kBAAkB,aAAa;AAC/B;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAa;AAC/B,kBAAkB,aAAa;AAC/B;AACA,SAAS;AACT,KAAK;AACL,CAAC;AACD,oDAAoD,YAAY;AAChE,uBAAuB,cAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAa;AAC/B,kBAAkB,aAAa;AAC/B;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAa;AAC/B,kBAAkB,aAAa;AAC/B;AACA,SAAS;AACT,KAAK;AACL,CAAC;AACD,8CAA8C,YAAY;AAC1D,uBAAuB,cAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8DAAsB;AAC5C,0BAA0B,+DAAuB;AACjD;AACA,kBAAkB,aAAa;AAC/B,kBAAkB,cAAc;AAChC;AACA,SAAS;AACT,KAAK;AACL,CAAC;AACD,wEAAqB;AACC;;;;;;;;;;;;;;;;;;;;;;;;;ACvItB;AACA;AACA;AACA;AACsD;AACnB;AACF;AACY;AACY;AACtB;AACE;AACQ;AACI;AACZ;AACrC;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,gCAAgC,iEAAe;AAC/C;AACA,QAAQ,yDAAW;AACnB;AACA,IAAI,uDAAgB;AACpB;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B;AACA;AACA;AACA,YAAY,qDAAS,GAAG,mDAAmD;AAC3E,YAAY,qDAAS,GAAG,+DAA+D;AACvF,YAAY,qDAAS,GAAG,gEAAgE;AACxF,YAAY,qDAAS,GAAG,mDAAmD;AAC3E,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS,GAAG,uEAAuE;AAC/F,YAAY,qDAAS,GAAG,sEAAsE;AAC9F,YAAY,qDAAS,GAAG,wEAAwE;AAChG,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS,GAAG,4FAA4F;AACpH,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS,GAAG,uEAAuE;AAC/F;AACA,IAAI,wDAAkB,UAAU,WAAW;AAC3C,IAAI,wDAAkB,mCAAmC,WAAW;AACpE,IAAI,wDAAkB,yBAAyB,WAAW;AAC1D,qBAAqB,2CAAI;AACzB,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA,IAAI,sFAAmC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B;AACA,YAAY,qDAAS,GAAG,gEAAgE;AACxF,YAAY,qDAAS,GAAG,gEAAgE;AACxF,YAAY,qDAAS,GAAG,gEAAgE;AACxF,YAAY,qDAAS,GAAG,gEAAgE;AACxF,YAAY,qDAAS,GAAG,gEAAgE;AACxF;AACA,IAAI,wDAAkB,iDAAiD,WAAW;AAClF,IAAI,wDAAkB,iDAAiD,WAAW;AAClF,IAAI,wDAAkB,gBAAgB,UAAU;AAChD,IAAI,wDAAkB,gBAAgB,UAAU;AAChD,IAAI,wDAAkB,gBAAgB,UAAU;AAChD,IAAI,wDAAkB,gBAAgB,UAAU;AAChD,IAAI,wDAAkB,gBAAgB,UAAU;AAChD,IAAI,wDAAkB,gBAAgB,UAAU;AAChD,IAAI,wDAAkB,gBAAgB,UAAU;AAChD,IAAI,wDAAkB;AACtB;AACA,YAAY,qDAAS,GAAG,+DAA+D;AACvF,YAAY,qDAAS,GAAG,+DAA+D;AACvF,YAAY,qDAAS,GAAG,+DAA+D;AACvF,YAAY,qDAAS,GAAG,sEAAsE;AAC9F,YAAY,qDAAS,GAAG,+DAA+D;AACvF;AACA,IAAI,wDAAkB,WAAW,WAAW;AAC5C,IAAI,wDAAkB,gBAAgB,WAAW;AACjD,uBAAuB,6CAAK,WAAW,uDAAe;AACtD,uBAAuB,6CAAK,WAAW,uDAAe;AACtD,0BAA0B,qDAAS;AACnC;AACA;AACA;AACA,6BAA6B,uDAAgB;AAC7C,6BAA6B,uDAAgB;AAC7C,IAAI,sFAAmC;AACvC;AACA;AACA,wEAAqB;AACD;;;;;;;;;;;;;;;;;;;;;;;;ACjIpB;AACA;AACA;AACA;AACsD;AACH;AACN;AACU;AACZ;AACM;AACM;AACpB;AACI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qDAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qDAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qDAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qDAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qDAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qDAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qDAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,YAAY,eAAe;AAC3B;AACA;AACA;AACA,8DAA8D,cAAc;AAC5E,0CAA0C,YAAY;AACtD;AACA,KAAK;AACL;AACA;AACA;AACA,8DAA8D,cAAc;AAC5E,KAAK;AACL;AACA,kCAAkC,4EAA2B;AAC7D;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,YAAY,eAAe;AAC3B;AACA;AACA;AACA,8DAA8D,cAAc;AAC5E,yCAAyC,YAAY;AACrD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,8DAA8D,cAAc;AAC5E,KAAK;AACL;AACA;AACA,kCAAkC,4EAA2B;AAC7D;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,YAAY,eAAe;AAC3B;AACA;AACA;AACA,oEAAoE,cAAc;AAClF,8CAA8C,YAAY;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,sEAAsE,cAAc;AACpF,KAAK;AACL;AACA,kCAAkC,4EAA2B;AAC7D;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,YAAY,eAAe;AAC3B;AACA;AACA;AACA,oEAAoE,cAAc;AAClF,8CAA8C,YAAY;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,sEAAsE,cAAc;AACpF,KAAK;AACL;AACA,kCAAkC,4EAA2B;AAC7D;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,YAAY,eAAe;AAC3B;AACA;AACA;AACA,oEAAoE,cAAc;AAClF,8CAA8C,YAAY;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,sEAAsE,cAAc;AACpF,KAAK;AACL;AACA,kCAAkC,4EAA2B;AAC7D;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA,uDAAuD,YAAY;AACnE,iEAAiE,YAAY;AAC7E,sDAAsD,YAAY;AAClE,iBAAiB,aAAa;AAC9B,gGAAgG,cAAc;AAC9G;AACA,aAAa;AACb;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA,0DAA0D,YAAY;AACtE,mEAAmE,YAAY;AAC/E,oDAAoD,YAAY;AAChE,iBAAiB,aAAa;AAC9B;AACA,0CAA0C,cAAc;AACxD,0DAA0D,cAAc;AACxE,kEAAkE,cAAc;AAChF,2DAA2D,cAAc;AACzE,iBAAiB,aAAa;AAC9B;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,YAAY,eAAe;AAC3B,+DAA+D,cAAc;AAC7E,IAAI,wEAA0B;AAC9B,2CAA2C,cAAc;AACzD,IAAI,wEAA0B;AAC9B;AACA;AACA;AACA,KAAK;AACL;AACA,0DAA0D,cAAc;AACxE,IAAI,wEAA0B;AAC9B;AACA;AACA;AACA,KAAK;AACL;AACA,kCAAkC,4EAA2B;AAC7D;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,YAAY,eAAe;AAC3B;AACA;AACA;AACA,2EAA2E,cAAc;AACzF,8CAA8C,YAAY;AAC1D;AACA,KAAK;AACL;AACA;AACA;AACA,+DAA+D,cAAc;AAC7E,KAAK;AACL;AACA,kCAAkC,4EAA2B;AAC7D;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,YAAY,qBAAqB;AACjC;AACA;AACA;AACA,8DAA8D,cAAc;AAC5E,wCAAwC,YAAY,iCAAiC,YAAY;AACjG;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,YAAY,6BAA6B;AACzC;AACA,mEAAmE,cAAc;AACjF,kBAAkB,+DAAsB;AACxC,KAAK;AACL,wCAAwC,cAAc;AACtD;AACA;AACA,0CAA0C,YAAY;AACtD,gEAAgE,YAAY;AAC5E;AACA,sBAAsB,kBAAkB;AACxC;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,YAAY,eAAe;AAC3B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA,sBAAsB,8BAA8B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,oEAAqB;AAC9D;AACA,yCAAyC,kEAAuB;AAChE,yCAAyC,oEAAqB;AAC9D;AACA,yCAAyC,kEAAuB;AAChE,oCAAoC,8CAAO;AAC3C,yCAAyC,oEAAqB;AAC9D;AACA,yCAAyC,kEAAuB;AAChE,uCAAuC,gDAAS;AAChD;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA,sBAAsB,8BAA8B;AACpD;AACA;AACA,yCAAyC,wEAAuB;AAChE;AACA,yCAAyC,iEAAsB;AAC/D;AACA,yCAAyC,wEAAuB;AAChE;AACA,yCAAyC,kEAAuB;AAChE;AACA,yCAAyC,wEAAuB;AAChE;AACA,yCAAyC,kEAAuB;AAChE;AACA;AACA;AACA;AACA,yCAAyC,wEAAuB;AAChE;AACA,yCAAyC,iEAAsB;AAC/D,yCAAyC,wEAAuB;AAChE;AACA,yCAAyC,iEAAsB;AAC/D,yCAAyC,wEAAuB;AAChE;AACA,yCAAyC,iEAAsB;AAC/D;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,oIAAoI,cAAc;AAClJ,sBAAsB,0DAA0D;AAChF;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA,wEAAqB;AACK;;;;;;;;;;;;;;;;;;ACtf1B;AACA;AACA;AACA;AACsD;AACb;AACK;AAC9C;AACA;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,qBAAqB,iDAAO,GAAG,YAAY,0CAA0C;AACrF,wBAAwB,iDAAO;AAC/B,oBAAoB,0CAA0C;AAC9D,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,kEAAwB;AACtC;AACA;AACA;AACA;AACA;AACA,oBAAoB,2EAAwB;AAC5C,oCAAoC,YAAY;AAChD,wFAAwF,wEAAyB;AACjH,sEAAsE,eAAe;AACrF,sBAAsB,eAAe;AACrC,qEAAqE,wEAAyB;AAC9F,yEAAyE,eAAe;AACxF,sBAAsB,oCAAoC;AAC1D;AACA;AACA;AACA;AACA,wEAAqB;AACG;;;;;;;;;;;;;;;;;;;;;;;;;;;AClDxB;AACA;AACA;AACA;AACsD;AACP;AACZ;AACkB;AACZ;AACN;AACuB;AACP;AACN;AACI;AACN;AACN;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6DAAa;AACjC;AACA;AACA,sBAAsB,8CAAK;AAC3B;AACA,8BAA8B,2DAAiB;AAC/C;AACA;AACA;AACA,qBAAqB,uDAAU;AAC/B;AACA;AACA,qCAAqC;AACrC;AACA,kDAAkD,uDAAgB;AAClE;AACA;AACA,uCAAuC,sDAAe;AACtD;AACA,uCAAuC,sDAAe,EAAE,uDAAgB;AACxE;AACA,uCAAuC,sDAAe;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,2CAAI;AACtB;AACA;AACA,sEAAsE,sDAAe;AACrF,oEAAoE,gDAAS;AAC7E,sEAAsE,wDAAiB;AACvF,qEAAqE,uDAAgB;AACrF;AACA,kBAAkB,oDAAQ,GAAG,uBAAuB,cAAc;AAClE;AACA,mBAAmB,qDAAS,GAAG,8BAA8B;AAC7D,mBAAmB,qDAAS,GAAG,8BAA8B;AAC7D,mBAAmB,yDAAW,GAAG,qBAAqB;AACtD;AACA;AACA,4DAA4D,uDAAgB;AAC5E;AACA,eAAe,yDAAkB;AACjC,uBAAuB,mEAA4B;AACnD;AACA;AACA;AACA;AACA;AACA,yBAAyB,mEAA4B,SAAS,4DAAqB;AACnF;AACA;AACA;AACA;AACA,yBAAyB,mEAA4B;AACrD;AACA;AACA;AACA,0BAA0B,2DAAY;AACtC;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,8BAA8B,qDAAc,6BAA6B;AACzE;AACA,cAAc,qDAAc;AAC5B;AACA;AACA;AACA,oBAAoB,2EAAwB;AAC5C,kCAAkC,OAAO;AACzC;AACA;AACA,4BAA4B,gEAAgE;AAC5F,4BAA4B,yDAAyD;AACrF,4BAA4B,gEAAgE;AAC5F;AACA,wBAAwB,8DAAkB;AAC1C;AACA,IAAI,8DAAkB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oDAAoD;AAC5E,8BAA8B,uEAA2B;AACzD;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAkB;AACtB;AACA;AACA;AACA,IAAI,wDAAiB;AACrB,oBAAoB,2EAAwB;AAC5C,kCAAkC,OAAO;AACzC;AACA;AACA,4BAA4B,gEAAgE;AAC5F,4BAA4B,yDAAyD;AACrF,4BAA4B,gEAAgE;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3JrB;AACA;AACA;AACA;AACsD;AACP;AAC2B;AACvB;AAChB;AACA;AACF;AACE;AACY;AACF;AACU;AACJ;AAChB;AACQ;AACN;AACkB;AACV;AACV;AACgB;AACZ;AACA;AACF;AACE;AACvC;AACA;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF,sBAAsB;AAC1G,qGAAqG,qBAAqB;AAC1H,gFAAgF,qBAAqB;AACrG;AACA;AACA,0DAA0D,aAAa;AACvE;AACA;AACA;AACA;AACA;AACA,mEAAmE,4BAA4B;AAC/F,0EAA0E,4CAA4C;AACtH,uEAAuE,yCAAyC;AAChH,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,iEAAuB;AAC7C;AACA;AACA,4BAA4B,4DAAqB;AACjD;AACA;AACA;AACA,mBAAmB,iDAAY;AAC/B;AACA,sBAAsB,sDAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,8CAAK,CAAC,mDAAY;AACzC,uBAAuB,8CAAK,CAAC,mDAAY;AACzC;AACA;AACA,0BAA0B,qDAAS;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA,4BAA4B,sDAAS,GAAG,6BAA6B;AACrE;AACA,mBAAmB,8CAAK;AACxB;AACA;AACA;AACA,gCAAgC,iBAAiB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,mDAAmD;AACpE,iBAAiB,mDAAmD;AACpE,iBAAiB,mDAAmD;AACpE,iBAAiB,mDAAmD;AACpE;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mBAAmB;AAChD,uBAAuB,wBAAwB;AAC/C,SAAS;AACT;AACA;AACA,uCAAuC,cAAc;AACrD;AACA,qCAAqC,0BAA0B;AAC/D;AACA,qCAAqC,0BAA0B;AAC/D;AACA;AACA;AACA,4CAA4C,4BAA4B;AACxE;AACA,uCAAuC;AACvC;AACA;AACA;AACA,kCAAkC,gBAAgB;AAClD;AACA;AACA;AACA;AACA,4CAA4C,mBAAmB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oDAAQ;AACjC,IAAI,0EAA8B;AAClC,cAAc,2EAAwB;AACtC;AACA,gBAAgB,aAAa;AAC7B;AACA,uBAAuB,2CAAI;AAC3B,uBAAuB,8CAAK,WAAW,wDAAe;AACtD,2DAA2D,gBAAgB;AAC3E,uBAAuB,8CAAK,WAAW,wDAAe;AACtD;AACA;AACA;AACA;AACA;AACA,+BAA+B,6DAAoB;AACnD,6BAA6B,0BAA0B;AACvD,6BAA6B,2BAA2B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oDAAQ;AACjC,IAAI,0EAA8B;AAClC,cAAc,2EAAwB;AACtC;AACA,gBAAgB,aAAa;AAC7B;AACA,uBAAuB,8CAAK,WAAW,wDAAe;AACtD,2JAA2J,cAAc;AACzK,uBAAuB,8CAAK,WAAW,wDAAe;AACtD;AACA;AACA;AACA;AACA;AACA,6BAA6B,sBAAsB,6DAAoB,EAAE;AACzE,6BAA6B,uBAAuB,6DAAoB,EAAE;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,2CAA2C,aAAa;AACxD;AACA,2CAA2C,aAAa;AACxD,gBAAgB,yDAAkB;AAClC,gCAAgC,yDAAkB;AAClD,yBAAyB,yDAAkB;AAC3C,oCAAoC,oBAAoB;AACxD;AACA,8BAA8B,sBAAsB,6DAAoB,EAAE;AAC1E,8BAA8B,uBAAuB,6DAAoB,EAAE;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,YAAY,sDAAS,GAAG,8BAA8B;AACtD,YAAY,sDAAS,GAAG,8BAA8B;AACtD,YAAY,sDAAS,GAAG,8BAA8B;AACtD;AACA;AACA,YAAY,sDAAS,GAAG,+BAA+B;AACvD,YAAY,sDAAS,GAAG,+BAA+B;AACvD,YAAY,sDAAS,GAAG,+BAA+B;AACvD;AACA,IAAI,wDAAkB,iBAAiB,WAAW;AAClD;AACA,2CAA2C,aAAa,UAAU,wDAAe;AACjF,2CAA2C,aAAa,UAAU,wDAAe;AACjF,oBAAoB,yDAAkB;AACtC,oBAAoB,yDAAkB;AACtC,0BAA0B,qDAAS;AACnC;AACA;AACA;AACA,8BAA8B,sBAAsB,6DAAoB,EAAE;AAC1E,8BAA8B,uBAAuB,6DAAoB,EAAE;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,sDAAS,GAAG,+BAA+B;AACvD,YAAY,sDAAS,GAAG,+BAA+B;AACvD,YAAY,sDAAS,GAAG,+BAA+B;AACvD,YAAY,sDAAS,GAAG,+BAA+B;AACvD,YAAY,sDAAS,GAAG,+BAA+B;AACvD,YAAY,sDAAS,GAAG,+BAA+B;AACvD,YAAY,sDAAS,GAAG,+BAA+B;AACvD,YAAY,sDAAS,GAAG,+BAA+B;AACvD,YAAY,sDAAS,GAAG,+BAA+B;AACvD,YAAY,sDAAS,GAAG,+BAA+B;AACvD,YAAY,sDAAS,GAAG,+BAA+B;AACvD,YAAY,sDAAS,GAAG,+BAA+B;AACvD,YAAY,sDAAS,GAAG,+BAA+B;AACvD,YAAY,sDAAS,GAAG,+BAA+B;AACvD;AACA;AACA,YAAY,sDAAS,GAAG,gCAAgC;AACxD,YAAY,sDAAS,GAAG,gCAAgC;AACxD,YAAY,sDAAS,GAAG,8BAA8B;AACtD,YAAY,sDAAS,GAAG,gCAAgC;AACxD,YAAY,sDAAS,GAAG,gCAAgC;AACxD,YAAY,sDAAS,GAAG,8BAA8B;AACtD;AACA,cAAc,2EAAwB;AACtC;AACA,uBAAuB,8CAAK,GAAG,6BAA6B;AAC5D;AACA,uBAAuB,8CAAK,GAAG,6BAA6B;AAC5D;AACA,0BAA0B,qDAAS,GAAG,iEAAiE;AACvG;AACA;AACA;AACA;AACA,uBAAuB,8CAAK,iBAAiB,6DAAoB;AACjE,uBAAuB,8CAAK,kBAAkB,6DAAoB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA,sBAAsB,8CAAK;AAC3B,uBAAuB,8CAAK;AAC5B;AACA,YAAY,sDAAS,GAAG,8BAA8B;AACtD,6BAA6B,uDAAU;AACvC,6BAA6B,gEAAc,kBAAkB,kEAAsB;AACnF,6BAA6B,4DAAY,kBAAkB,kEAAsB;AACjF,6BAA6B,2DAAY,mBAAmB,kEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,kEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,kEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,kEAAsB;AAClF,6BAA6B,2DAAY,oBAAoB,kEAAsB;AACnF,6BAA6B,uDAAU,kCAAkC,6EAAgC;AACzG,6BAA6B,uDAAU,kCAAkC,6EAAgC;AACzG,6BAA6B,uDAAU,iCAAiC,6EAAgC;AACxG,YAAY,sDAAS,GAAG,8CAA8C,iDAAS,EAAE;AACjF,6BAA6B,4DAAY,kBAAkB,kEAAsB;AACjF,6BAA6B,2DAAY,mBAAmB,kEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,kEAAsB;AAClF,YAAY,sDAAS,GAAG,8BAA8B;AACtD;AACA;AACA,YAAY,sDAAS,GAAG,8BAA8B;AACtD,6BAA6B,4DAAY,kBAAkB,kEAAsB;AACjF,6BAA6B,2DAAY,mBAAmB,kEAAsB;AAClF,6BAA6B,uDAAU,kCAAkC,0EAA6B;AACtG,YAAY,sDAAS,GAAG,8CAA8C,iDAAS,EAAE;AACjF,6BAA6B,gEAAc,kBAAkB,kEAAsB;AACnF,6BAA6B,4DAAY,kBAAkB,kEAAsB;AACjF,6BAA6B,2DAAY,mBAAmB,kEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,kEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,kEAAsB;AAClF,6BAA6B,2DAAY,mBAAmB,kEAAsB;AAClF,6BAA6B,2DAAY,oBAAoB,kEAAsB;AACnF,6BAA6B,uDAAU,kCAAkC,0EAA6B;AACtG,6BAA6B,uDAAU,kCAAkC,0EAA6B;AACtG,6BAA6B,uDAAU,iCAAiC,0EAA6B;AACrG,YAAY,sDAAS,GAAG,8BAA8B;AACtD;AACA,uBAAuB,gDAAM;AAC7B,wBAAwB,gDAAM;AAC9B,IAAI,mEAAuB;AAC3B,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA,kBAAkB,MAAM;AACxB;AACA,qGAAqG,cAAc;AACnH,uFAAuF,YAAY;AACnG;AACA;AACA;AACA,qCAAqC,6DAAoB;AACzD;AACA,mDAAmD,wDAAgB,uBAAuB;AAC1F,mDAAmD,wDAAgB,sBAAsB;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA,gCAAgC,MAAM;AACtC,yFAAyF,YAAY;AACrG;AACA,qBAAqB,MAAM;AAC3B;AACA,wBAAwB,cAAc,iBAAiB,kBAAkB,kBAAkB,2CAAI;AAC/F;AACA;AACA;AACA,sBAAsB,iBAAiB;AACvC,sBAAsB,iBAAiB;AACvC;AACA;AACA,aAAa;AACb,iCAAiC,2CAAI;AACrC,wBAAwB,cAAc,iBAAiB,kBAAkB;AACzE;AACA;AACA,sBAAsB,iBAAiB;AACvC,sBAAsB,iBAAiB;AACvC,sBAAsB,iBAAiB;AACvC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,cAAc;AAC5E;AACA,+BAA+B,aAAa;AAC5C,+BAA+B,aAAa;AAC5C,+BAA+B,aAAa;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2CAAI;AAChB,YAAY,2CAAI;AAChB,YAAY,2CAAI;AAChB,YAAY,2CAAI;AAChB;AACA;AACA,kFAAkF,6DAAoB;AACtG;AACA,kBAAkB,kCAAkC;AACpD,kBAAkB,kCAAkC;AACpD,kBAAkB,kCAAkC;AACpD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,YAAY;AACrF,8DAA8D,cAAc;AAC5E;AACA,+BAA+B,aAAa;AAC5C,+BAA+B,aAAa;AAC5C,+BAA+B,aAAa;AAC5C;AACA;AACA;AACA;AACA;AACA,yBAAyB,6DAAoB;AAC7C;AACA,kBAAkB,6CAA6C;AAC/D,kBAAkB,6CAA6C;AAC/D,kBAAkB,6CAA6C;AAC/D;AACA;AACA;AACA;AACA,YAAY,2CAAI;AAChB,YAAY,2CAAI;AAChB;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA,mDAAmD,wDAAgB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,0EAA8B,KAAK,oDAAQ;AAC/C,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6BAA6B;AAChD,KAAK;AACL;AACA;AACA;AACA,oDAAoD,mBAAmB;AACvE;AACA,6DAA6D,mBAAmB;AAChF,qEAAqE,mBAAmB;AACxF;AACA,wDAAwD,aAAa;AACrE;AACA,oBAAoB,0CAA0C;AAC9D;AACA;AACA;AACA,kCAAkC,6EAA2B;AAC7D;AACA;AACA;AACA;AACA;AACA,IAAI,2EAA+B;AACnC;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,sFAAsF,aAAa;AACnG;AACA,SAAS;AACT;AACA;AACA;AACA,4CAA4C,kBAAkB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB,gBAAgB,6DAAoB;AAC1E;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,8CAAK;AAC/B;AACA;AACA;AACA;AACA;AACA,6BAA6B,sDAAS,GAAG,6BAA6B;AACtE;AACA,gBAAgB,wDAAkB,WAAW,WAAW;AACxD;AACA;AACA,qCAAqC,uDAAU;AAC/C,8CAA8C,8EAAiC;AAC/E,6BAA6B,iDAAU,MAAM,wDAAiB;AAC9D;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,gBAAgB,wDAAkB,WAAW,WAAW;AACxD;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,2CAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,2BAA2B,8CAAK,GAAG,wCAAwC,UAAU,wDAAe;AACpG,wBAAwB,qDAAS,GAAG,wCAAwC;AAC5E;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,wEAAqB;AACK;;;;;;;;;;;;;;;;;ACzuB1B;AACA;AACA;AACA;AACsD;AACX;AAC3C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,sBAAsB,mDAAQ;AAC9B;AACA,wBAAwB,mDAAQ;AAChC,wBAAwB,mDAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,wDAAa;AACvB,UAAU,wDAAa;AACvB,UAAU,wDAAa;AACvB,UAAU,wDAAa;AACvB,UAAU,wDAAa;AACvB,UAAU,wDAAa;AACvB,UAAU,wDAAa;AACvB;AACA,UAAU,uDAAY;AACtB,UAAU,uDAAY;AACtB,UAAU,uDAAY;AACtB,UAAU,uDAAY;AACtB,UAAU,uDAAY;AACtB;AACA;AACA,sBAAsB,mDAAQ;AAC9B,sBAAsB,mDAAQ;AAC9B,sBAAsB,mDAAQ;AAC9B,oBAAoB,mDAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACI;;;;;;;;;;;;;;;;AChFzB;AACA;AACA;AACA;AACsD;AACtD;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2EAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gGAAgG,YAAY;AAC5G;AACA,KAAK;AACL;AACA,aAAa,6BAA6B;AAC1C,aAAa,8BAA8B;AAC3C;AACA;AACA,sBAAsB,eAAe;AACrC,sBAAsB,kDAAkD;AACxE,sBAAsB,eAAe;AACrC,sBAAsB,kDAAkD;AACxE,sBAAsB,eAAe;AACrC,sBAAsB,kDAAkD,6BAA6B,YAAY;AACjH,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,SAAS,aAAa;AACtB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gBAAgB;AACtC,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,iBAAiB;AACvC,sBAAsB,iDAAiD;AACvE,SAAS,aAAa;AACtB;AACA,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,iBAAiB;AACvC,sBAAsB,mDAAmD;AACzE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,SAAS,aAAa;AACtB;AACA;AACA,0EAA0E,MAAM;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,2BAA2B;AACxC,aAAa,2BAA2B;AACxC,aAAa,2BAA2B;AACxC,CAAC;AACD,wEAAqB;AACK;;;;;;;;;;;;;;;;;;;;ACzF1B;AACA;AACA;AACA;AACsD;AACL;AACZ;AACM;AACY;AACvD;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC,2DAA2D,gCAAgC;AAC3F,8CAA8C,gCAAgC;AAC9E,mDAAmD,8BAA8B;AACjF,kDAAkD,+BAA+B;AACjF,KAAK;AACL;AACA;AACA,IAAI,yEAA8B,KAAK,mDAAQ;AAC/C,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA,mBAAmB,6BAA6B;AAChD,KAAK;AACL;AACA;AACA,wBAAwB,6CAAK,0BAA0B,eAAe;AACtE,wBAAwB,6CAAK,0BAA0B,eAAe;AACtE,wBAAwB,6CAAK,0BAA0B,eAAe;AACtE,wBAAwB,6CAAK,0BAA0B,eAAe;AACtE;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA,qCAAqC,gBAAgB,qFAAuC,EAAE;AAC9F;AACA;AACA;AACA;AACA,iCAAiC,gBAAgB,qFAAuC,EAAE;AAC1F,gCAAgC,gBAAgB,mFAAqC,EAAE;AACvF;AACA;AACA;AACA,sBAAsB,yDAAyD;AAC/E,kCAAkC,4EAA2B;AAC7D;AACA,IAAI,0EAA+B;AACnC;AACA;AACA;AACA,IAAI,yEAA8B,KAAK,mDAAQ;AAC/C,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA,mBAAmB,6BAA6B;AAChD,KAAK;AACL;AACA,qDAAqD,aAAa;AAClE,kDAAkD,yDAAyD;AAC3G;AACA,yBAAyB,6CAAK,sBAAsB,eAAe,IAAI,SAAS;AAChF,yBAAyB,6CAAK,uBAAuB,mCAAmC;AACxF;AACA,4BAA4B,6CAAK,0BAA0B,gBAAgB;AAC3E,4BAA4B,6CAAK,0BAA0B,gBAAgB;AAC3E,4BAA4B,6CAAK,uBAAuB,gBAAgB;AACxE,4BAA4B,6CAAK,0BAA0B,gBAAgB;AAC3E;AACA;AACA;AACA,kCAAkC,4EAA2B;AAC7D;AACA,IAAI,0EAA+B;AACnC;AACA;AACA;AACA,IAAI,yEAA8B,KAAK,mDAAQ;AAC/C,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA,mBAAmB,6BAA6B;AAChD,KAAK;AACL;AACA,wDAAwD,aAAa;AACrE,2DAA2D,yDAAyD;AACpH;AACA;AACA;AACA;AACA;AACA,oCAAoC,gBAAgB;AACpD,oCAAoC,gBAAgB;AACpD,oCAAoC,gBAAgB;AACpD,oCAAoC,gBAAgB;AACpD;AACA;AACA;AACA,kCAAkC,4EAA2B;AAC7D;AACA,IAAI,0EAA+B;AACnC;AACA;AACA,wEAAqB;AACK;;;;;;;;;;;;;;;;;;;;;ACpH1B;AACA;AACA;AACA;AACA;AACsD;AACP;AACA;AACI;AAClB;AACY;AAC7C;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,0BAA0B;AACtD;AACA,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC;AACA,2BAA2B,4CAA4C;AACvE,2BAA2B,2CAA2C;AACtE;AACA,UAAU,8BAA8B;AACxC,UAAU,+BAA+B;AACzC,UAAU,qCAAqC;AAC/C,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC;AACA;AACA,UAAU,8BAA8B;AACxC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC;AACA,6CAA6C,YAAY;AACzD,8CAA8C,YAAY;AAC1D,IAAI,wDAAkB,qBAAqB,WAAW;AACtD;AACA;AACA,yBAAyB,+CAA+C;AACxE,4CAA4C,mBAAmB;AAC/D;AACA,yBAAyB,+CAA+C;AACxE,wCAAwC,WAAW;AACnD,4CAA4C,oBAAoB;AAChE;AACA,yBAAyB,sDAAsD;AAC/E,4CAA4C,oBAAoB;AAChE;AACA,yBAAyB,+CAA+C;AACxE,4CAA4C,oBAAoB;AAChE;AACA,yBAAyB,+CAA+C;AACxE,4CAA4C,oBAAoB;AAChE;AACA;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,0BAA0B;AACtD,0BAA0B,4CAA4C;AACtE;AACA;AACA,yBAAyB,+CAA+C;AACxE,4CAA4C,mBAAmB;AAC/D;AACA,yBAAyB,+CAA+C;AACxE,4CAA4C,mBAAmB;AAC/D,6BAA6B,2DAAY;AACzC;AACA,yBAAyB,+CAA+C;AACxE,4CAA4C,mBAAmB;AAC/D,6BAA6B,2DAAY;AACzC,6BAA6B,uDAAU;AACvC;AACA,yBAAyB,+CAA+C;AACxE,4CAA4C,mBAAmB;AAC/D,6BAA6B,2DAAY;AACzC,6BAA6B,uDAAU;AACvC;AACA,yBAAyB,+CAA+C;AACxE,4CAA4C,mBAAmB;AAC/D,6BAA6B,2DAAY;AACzC,6BAA6B,2DAAY;AACzC;AACA,yBAAyB,+CAA+C;AACxE,4CAA4C,mBAAmB;AAC/D,6BAA6B,2DAAY;AACzC,6BAA6B,2DAAY;AACzC,6BAA6B,2DAAY;AACzC;AACA;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,0BAA0B;AACtD;AACA,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC;AACA,2BAA2B,4CAA4C;AACvE,2BAA2B,2CAA2C;AACtE;AACA,UAAU,8BAA8B;AACxC,UAAU,+BAA+B;AACzC,UAAU,qCAAqC;AAC/C,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC;AACA;AACA,UAAU,8BAA8B;AACxC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC;AACA,8CAA8C,WAAW;AACzD,8CAA8C,WAAW;AACzD,8CAA8C,WAAW;AACzD,IAAI,wDAAkB,qBAAqB,WAAW;AACtD;AACA;AACA,yBAAyB,+CAA+C;AACxE,4CAA4C,gCAAgC;AAC5E;AACA,yBAAyB,+CAA+C;AACxE,wCAAwC,WAAW;AACnD,4CAA4C,gCAAgC;AAC5E;AACA,yBAAyB,sDAAsD;AAC/E,4CAA4C,gCAAgC;AAC5E;AACA,yBAAyB,+CAA+C;AACxE,4CAA4C,gCAAgC;AAC5E;AACA,yBAAyB,+CAA+C;AACxE,4CAA4C,gCAAgC;AAC5E,sBAAsB,+CAA+C;AACrE;AACA;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,mBAAmB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,iBAAiB;AACrD;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,mBAAmB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA,qCAAqC,+CAA+C;AACpF;AACA;AACA;AACA,cAAc,6DAA6D;AAC3E,cAAc,6DAA6D;AAC3E,cAAc,6DAA6D;AAC3E,cAAc,6DAA6D;AAC3E,cAAc,6DAA6D;AAC3E,cAAc,6DAA6D;AAC3E,cAAc,6DAA6D;AAC3E,cAAc,6DAA6D;AAC3E,cAAc,6DAA6D;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,mBAAmB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,0BAA0B;AACtD;AACA,qCAAqC,+CAA+C;AACpF;AACA;AACA;AACA;AACA,kBAAkB,6DAA6D;AAC/E,kBAAkB,8DAA8D;AAChF,kBAAkB,6DAA6D;AAC/E,kBAAkB,8DAA8D;AAChF,kBAAkB,6DAA6D;AAC/E,kBAAkB,8DAA8D;AAChF;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,kDAAkD,sBAAsB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,0BAA0B;AACtD;AACA,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D;AACA;AACA,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D;AACA,2BAA2B,8DAA8D;AACzF,2BAA2B,+DAA+D;AAC1F;AACA,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D;AACA;AACA,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,iDAAiD;AAC3D;AACA;AACA,8CAA8C,WAAW;AACzD,4CAA4C,oBAAoB;AAChE,4CAA4C,oBAAoB;AAChE,6CAA6C,oBAAoB;AACjE,6CAA6C,oBAAoB;AACjE;AACA;AACA,aAAa,0BAA0B;AACvC,aAAa,0BAA0B;AACvC,aAAa,2BAA2B;AACxC,aAAa,2BAA2B;AACxC;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,0BAA0B;AACtD;AACA,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D;AACA;AACA,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D;AACA,2BAA2B,8DAA8D;AACzF,2BAA2B,+DAA+D;AAC1F;AACA,UAAU,mDAAmD;AAC7D,UAAU,mDAAmD;AAC7D;AACA;AACA,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,iDAAiD;AAC3D;AACA;AACA,8CAA8C,WAAW;AACzD,4CAA4C,oBAAoB;AAChE,4CAA4C,oBAAoB;AAChE,6CAA6C,oBAAoB;AACjE,6CAA6C,oBAAoB;AACjE;AACA;AACA,aAAa,0BAA0B;AACvC,aAAa,0BAA0B;AACvC,aAAa,2BAA2B;AACxC,aAAa,2BAA2B;AACxC;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACK;;;;;;;;;;;;;;;;;;;;;;;ACva1B;AACA;AACA;AACA;AACsD;AACnB;AACU;AACU;AACJ;AACV;AACE;AACN;AACrC;AACA;AACA;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA,KAAK;AACL;AACA;AACA,oCAAoC,iDAAO;AAC3C,yCAAyC,2DAAY;AACrD;AACA;AACA;AACA;AACA;AACA,sBAAsB,mDAAQ;AAC9B,aAAa;AACb;AACA;AACA,YAAY,iBAAiB;AAC7B,4BAA4B,cAAc,iBAAiB,kBAAkB;AAC7E,4BAA4B,cAAc,kBAAkB,kBAAkB;AAC9E,4BAA4B,cAAc,kBAAkB,kBAAkB;AAC9E,4BAA4B,cAAc,kBAAkB,kBAAkB;AAC9E,gCAAgC,cAAc,mBAAmB,kBAAkB;AACnF;AACA,UAAU,cAAc,iBAAiB,mBAAmB;AAC5D,UAAU,cAAc,kBAAkB,mBAAmB;AAC7D;AACA,gCAAgC,cAAc,iBAAiB,kBAAkB;AACjF;AACA,UAAU,cAAc,kBAAkB,kBAAkB;AAC5D,UAAU,cAAc,iBAAiB,kBAAkB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+DAAc;AACxC,0BAA0B,+DAAc;AACxC,0BAA0B,+DAAc;AACxC,0BAA0B,+DAAc;AACxC,sBAAsB,6CAAK,CAAC,mDAAY;AACxC;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA,YAAY,iBAAiB;AAC7B,4BAA4B,cAAc,kBAAkB,kBAAkB;AAC9E,4BAA4B,cAAc,kBAAkB,kBAAkB;AAC9E;AACA,UAAU,cAAc,iBAAiB,kBAAkB;AAC3D,UAAU,cAAc,kBAAkB,kBAAkB;AAC5D;AACA;AACA,UAAU,cAAc,iBAAiB,mBAAmB;AAC5D,UAAU,cAAc,iBAAiB,mBAAmB;AAC5D,UAAU,cAAc,iBAAiB,mBAAmB;AAC5D;AACA;AACA;AACA,0BAA0B,+DAAc;AACxC,0BAA0B,+DAAc;AACxC,sBAAsB,6CAAK,CAAC,mDAAY;AACxC;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA,wEAAqB;AACQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxF7B;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACmC;AACA;AACE;AACQ;AAChB;AACG;AACH;AACA;AACO;AACW;AACX;AACP;AACC;AACF;AACM;AACF;AACH;AACK;AACD;AACC;AACA;AACA;AACG;AACJ;AACE;AACE;AACJ;AACQ;AACX;AACG;AACI;AACG;AACP;AACF;AACM;AACF;AACF;AACA;AACH;AACC;AACD;AACS;AACF;AACH;AACI;AACJ;AACD;AACI;AACL;AACF;AACE;AACC;AACA;AACF;AACK;AACE;AACL;AACE;AACC;AACE;AACN;AACD;AACA;AACG;AACA;AACF;AACO;AACT;;;;;;;;;;;;;;;;;;;ACnF9B;AACA;AACA;AACA;AACA;AAC8E;AACzC;AACc;AACd;AACrC;AACA;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC,2CAA2C,iBAAiB;AAC5D,2CAA2C,kBAAkB;AAC7D;AACA,KAAK;AACL;AACA;AACA,2BAA2B;AAC3B,uBAAuB,sDAAc;AACrC,sBAAsB,sDAAc;AACpC,0BAA0B;AAC1B,yBAAyB,sDAAc;AACvC,sBAAsB,sDAAc,uBAAuB;AAC3D,aAAa;AACb;AACA;AACA;AACA,gCAAgC;AAChC,0EAA0E,4DAAoB;AAC9F,wEAAwE,4DAAoB;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,6DAAU,GAAG,6DAAU;AACnE;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA,wBAAwB,6CAAK;AAC7B;AACA,uCAAuC,6CAAK;AAC5C;AACA,uBAAuB,UAAU;AACjC,yBAAyB,2DAAY;AACrC;AACA;AACA,wBAAwB,qBAAqB;AAC7C,yBAAyB,2DAAY;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,0EAA0E,4DAAoB;AAC9F,wEAAwE,4DAAoB;AAC5F;AACA,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,iBAAiB,6DAAU;AAC3B;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACY;;;;;;;;;;;;;;;;;AC7GjC;AACA;AACA;AACA;AACA;AACA;AACA;AACsD;AACZ;AAC1C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,wBAAwB,kDAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kDAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACM;;;;;;;;;;;;;;;;;;;;;AC5E3B;AACA;AACA;AACA;AACA;AAC8E;AAC3C;AACE;AACc;AACd;AACa;AAClD;AACA;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,2BAA2B;AAC3B,uBAAuB,sDAAc;AACrC,sBAAsB,sDAAc;AACpC,yBAAyB,sDAAc;AACvC,sBAAsB,sDAAc,2BAA2B;AAC/D,aAAa;AACb;AACA;AACA;AACA;AACA,qBAAqB,wDAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,wDAAiB;AACrB,IAAI,wDAAiB;AACrB,IAAI,wDAAiB;AACrB,IAAI,wDAAiB;AACrB,IAAI,wDAAiB;AACrB,IAAI,wDAAiB;AACrB,IAAI,wDAAiB;AACrB;AACA;AACA;AACA;AACA,gCAAgC;AAChC,4BAA4B;AAC5B,yBAAyB;AACzB,sFAAsF,4DAAoB;AAC1G,oFAAoF,4DAAoB;AACxG;AACA,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,iBAAiB,6DAAU;AAC3B;AACA,oBAAoB,OAAO;AAC3B,qBAAqB,2DAAY;AACjC;AACA;AACA,oBAAoB,iBAAiB;AACrC,qBAAqB,2DAAY;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qGAAqG,4DAAoB;AACzH,iGAAiG,4DAAoB;AACrH,kGAAkG,4DAAoB;AACtH,sGAAsG,4DAAoB;AAC1H;AACA;AACA;AACA,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,iBAAiB,6DAAU;AAC3B;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,qBAAqB,2DAAY;AACjC;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC,qBAAqB,2DAAY;AACjC;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,qBAAqB,2DAAY;AACjC;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC,qBAAqB,2DAAY;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,4DAAoB;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAoB;AACpC,8BAA8B,6CAAK;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,iBAAiB,6DAAU;AAC3B;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,qBAAqB,2DAAY;AACjC;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC,qBAAqB,2DAAY;AACjC;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,qBAAqB,2DAAY;AACjC;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC,qBAAqB,2DAAY;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,4BAA4B;AAC5B,yBAAyB;AACzB,sFAAsF,4DAAoB;AAC1G,oFAAoF,4DAAoB;AACxG;AACA,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,iBAAiB,6DAAU;AAC3B;AACA,oBAAoB,OAAO;AAC3B,qBAAqB,2DAAY;AACjC;AACA;AACA,oBAAoB,iBAAiB;AACrC,qBAAqB,2DAAY;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAK;AAC5B;AACA;AACA,uBAAuB,uEAAwB;AAC/C,uBAAuB,qEAAsB;AAC7C;AACA;AACA;AACA;AACA,uBAAuB,6CAAK;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,4BAA4B;AAC5B,yBAAyB;AACzB,sFAAsF,4DAAoB;AAC1G,oFAAoF,4DAAoB;AACxG;AACA,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,iBAAiB,6DAAU;AAC3B,oBAAoB,OAAO;AAC3B;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA,uBAAuB,WAAW;AAClC,sBAAsB,8BAA8B;AACpD;AACA,uBAAuB,2BAA2B;AAClD,sBAAsB,8BAA8B;AACpD;AACA,uBAAuB,WAAW;AAClC,sBAAsB,8BAA8B;AACpD;AACA,uBAAuB,gCAAgC;AACvD,sBAAsB,8BAA8B;AACpD;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACQ;;;;;;;;;;;;;;;;;AC1T7B;AACA;AACA;AACA;AAC2C;AACA;AAC3C,2BAA2B,mDAAQ;AACnC;AACA;AACA,yBAAyB,mDAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mDAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACwB;;;;;;;;;;;;;;;;;AChFxB;AACA;AACA;AACA;AACsD;AACG;AACzD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,mBAAmB,uDAAe;AAClC;AACA;AACA;AACA,mBAAmB,uDAAe;AAClC,0BAA0B,gDAAQ;AAClC,0BAA0B,gDAAQ;AAClC;AACA;AACA,oCAAoC,yDAAiB;AACrD;AACA;AACA,wEAAqB;AACW;;;;;;;;;;;;;;;;;;AC3BhC;AACA;AACA;AACA;AACsD;AACnB;AACA;AACnC;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,gCAAgC,WAAW;AAC3C;AACA;AACA;AACA;AACA;AACA,WAAW,IAAI,2CAA2C;AAC1D,WAAW,IAAI,uBAAuB;AACtC,WAAW,IAAI,8DAA8D;AAC7E,WAAW,IAAI,0CAA0C;AACzD,WAAW,IAAI,0CAA0C;AACzD,WAAW,IAAI,0CAA0C;AACzD,WAAW,IAAI,0CAA0C;AACzD,WAAW,IAAI,0CAA0C;AACzD,WAAW,IAAI,0CAA0C;AACzD,WAAW,IAAI,0CAA0C;AACzD,WAAW,IAAI,0CAA0C;AACzD,WAAW,IAAI,0CAA0C;AACzD,WAAW,IAAI,2CAA2C;AAC1D,WAAW,IAAI,2CAA2C;AAC1D,WAAW,IAAI,iFAAiF;AAChG,WAAW,IAAI,8DAA8D;AAC7E,WAAW,IAAI,qEAAqE;AACpF,WAAW,IAAI,oEAAoE;AACnF,8BAA8B,wBAAwB;AACtD,8BAA8B,0CAA0C;AACxE,8BAA8B,oFAAoF;AAClH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,+DAAwB;AACpE,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iDAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA,WAAW,0BAA0B,cAAc,IAAI,uBAAuB;AAC9E,WAAW,uCAAuC,cAAc,IAAI,uBAAuB;AAC3F,WAAW,uDAAuD,cAAc,IAAI,uBAAuB;AAC3G,WAAW,2CAA2C,cAAc,IAAI,uBAAuB;AAC/F,WAAW,0CAA0C,cAAc,IAAI,uBAAuB;AAC9F,WAAW,6CAA6C,cAAc,IAAI,uBAAuB;AACjG,WAAW,8DAA8D,cAAc,IAAI,uBAAuB;AAClH;AACA,cAAc,8DAA8D,cAAc;AAC1F,cAAc,0CAA0C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,wEAAqB;AACY;;;;;;;;;;;;;;;;;;ACvJjC;AACA;AACA;AACA;AACsD;AACP;AACV;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B,wBAAwB,uDAAU;AAClC,iEAAiE,0DAAkB;AACnF;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA,kEAAkE,2DAAmB;AACrF;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA,sEAAsE,+DAAuB;AAC7F;AACA;AACA,oBAAoB,yBAAyB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,6CAAK;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACC;;;;;;;;;;;;;;;;;;;;;;;AC7KtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACsD;AACnB;AACU;AACF;AACN;AACQ;AACI;AACZ;AACrC;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B;AACA,0BAA0B,qDAAS;AACnC,sBAAsB,6CAAK,CAAC,mDAAY;AACxC,2BAA2B,mDAAQ,GAAG,wBAAwB;AAC9D,2BAA2B,mDAAQ,GAAG,0BAA0B;AAChE,2BAA2B,mDAAQ,GAAG,wBAAwB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,qDAAS;AAC9B,QAAQ,yDAAW;AACnB;AACA;AACA;AACA;AACA;AACA,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,6BAA6B;AACvC,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,6BAA6B;AACvC,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,6BAA6B;AACvC,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,6BAA6B;AACvC,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C;AACA;AACA;AACA,2BAA2B,cAAc;AACzC,0BAA0B,6CAAK;AAC/B;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,kCAAkC;AAC5C,UAAU,gCAAgC;AAC1C,UAAU,gCAAgC;AAC1C,UAAU,gCAAgC;AAC1C,UAAU,6BAA6B;AACvC,UAAU,kCAAkC;AAC5C,UAAU,gCAAgC;AAC1C,UAAU,gCAAgC;AAC1C,UAAU,gCAAgC;AAC1C,UAAU,6BAA6B;AACvC,UAAU,mCAAmC;AAC7C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,6BAA6B;AACvC,UAAU,mCAAmC;AAC7C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,6BAA6B;AACvC,UAAU,mCAAmC;AAC7C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,6BAA6B;AACvC,UAAU,mCAAmC;AAC7C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,6BAA6B;AACvC,UAAU,mCAAmC;AAC7C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,6BAA6B;AACvC,UAAU,mCAAmC;AAC7C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,6BAA6B;AACvC,UAAU,mCAAmC;AAC7C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,6BAA6B;AACvC;AACA;AACA;AACA,2BAA2B,cAAc;AACzC,0BAA0B,6CAAK;AAC/B;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,oDAAoD;AAC9D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D,UAAU,kDAAkD;AAC5D;AACA;AACA,sBAAsB,6CAAK;AAC3B,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2CAA2C;AACrD,UAAU,2CAA2C;AACrD,UAAU,2CAA2C;AACrD,UAAU,2CAA2C;AACrD,UAAU,2CAA2C;AACrD,UAAU,2CAA2C;AACrD,UAAU,2CAA2C;AACrD,UAAU,2CAA2C;AACrD,UAAU,wCAAwC;AAClD,UAAU,wCAAwC;AAClD,UAAU,2CAA2C;AACrD,UAAU,2CAA2C;AACrD,UAAU,2CAA2C;AACrD,UAAU,2CAA2C;AACrD,UAAU,2CAA2C;AACrD,UAAU,2CAA2C;AACrD,UAAU,2CAA2C;AACrD,UAAU,2CAA2C;AACrD;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B,0BAA0B,6CAAK;AAC/B,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B;AACA,0BAA0B,qDAAS;AACnC,sBAAsB,6CAAK,CAAC,mDAAY;AACxC,oBAAoB,mDAAQ,GAAG,wBAAwB;AACvD,oBAAoB,mDAAQ,GAAG,0BAA0B;AACzD,oBAAoB,mDAAQ,GAAG,wBAAwB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACI;;;;;;;;;;;;;;;;;;;AChPzB;AACA;AACA;AACA;AACA;AACsD;AACb;AACN;AACe;AAClD;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,wEAAwE,aAAa;AACrF,2EAA2E,iBAAiB;AAC5F;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA,4BAA4B,YAAY;AACxC,YAAY,8CAA8C;AAC1D;AACA,UAAU,kDAAkD;AAC5D,UAAU,gEAAgE;AAC1E,UAAU,gEAAgE;AAC1E,UAAU,gEAAgE;AAC1E,UAAU,iEAAiE;AAC3E,UAAU,iEAAiE;AAC3E,UAAU,iEAAiE;AAC3E,UAAU,iEAAiE;AAC3E;AACA;AACA;AACA,wCAAwC,yBAAyB,iBAAiB;AAClF,wCAAwC,yBAAyB,iBAAiB;AAClF,wCAAwC,0BAA0B,iBAAiB,OAAO,iDAAO;AACjG,2CAA2C,aAAa;AACxD,+BAA+B,iDAAO,CAAC,uEAAwB;AAC/D;AACA;AACA;AACA;AACA;AACA,4BAA4B,uDAAgB;AAC5C,IAAI,sFAAmC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,YAAY,8CAA8C;AAC1D;AACA,UAAU,iDAAiD;AAC3D,UAAU,+DAA+D;AACzE,UAAU,+DAA+D;AACzE,UAAU,kEAAkE;AAC5E;AACA;AACA,UAAU,kDAAkD;AAC5D,UAAU,gEAAgE;AAC1E,UAAU,gEAAgE;AAC1E,UAAU,mEAAmE;AAC7E;AACA;AACA;AACA,qBAAqB,yBAAyB,iBAAiB;AAC/D,YAAY,iDAAO,CAAC,uEAAwB;AAC5C,wBAAwB,aAAa;AACrC;AACA;AACA,qBAAqB,yBAAyB,iBAAiB;AAC/D,wBAAwB,aAAa;AACrC,YAAY,iDAAO,CAAC,iEAAkB;AACtC;AACA,yCAAyC,4BAA4B,iBAAiB;AACtF;AACA;AACA;AACA;AACA,oBAAoB,cAAc;AAClC;AACA;AACA,6BAA6B,uDAAgB;AAC7C;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,YAAY,8CAA8C;AAC1D,6BAA6B,0BAA0B;AACvD;AACA,UAAU,iDAAiD;AAC3D,UAAU,+DAA+D;AACzE,UAAU,+DAA+D;AACzE,UAAU,kEAAkE;AAC5E;AACA;AACA,UAAU,kDAAkD;AAC5D,UAAU,gEAAgE;AAC1E,UAAU,gEAAgE;AAC1E,UAAU,mEAAmE;AAC7E;AACA,6BAA6B,2BAA2B;AACxD;AACA,UAAU,gEAAgE;AAC1E,UAAU,iEAAiE;AAC3E,UAAU,iEAAiE;AAC3E,UAAU,iEAAiE;AAC3E,UAAU,iEAAiE;AAC3E,UAAU,gEAAgE;AAC1E,UAAU,gEAAgE;AAC1E,UAAU,gEAAgE;AAC1E;AACA,uBAAuB,wDAAwD;AAC/E,uBAAuB,6DAA6D;AACpF,uBAAuB,8DAA8D;AACrF,aAAa,2BAA2B;AACxC,aAAa,wBAAwB;AACrC;AACA,yCAAyC,yBAAyB,iBAAiB,mBAAmB,aAAa;AACnH,yCAAyC,yBAAyB,iBAAiB,mBAAmB,aAAa;AACnH,yCAAyC,4BAA4B,iBAAiB;AACtF,yCAAyC,2BAA2B,iBAAiB;AACrF,yCAAyC,yBAAyB,iBAAiB;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACQ;;;;;;;;;;;;;;;;;;;;;;AChK7B;AACA;AACA;AACA;AACsD;AACD;AACR;AACR;AACa;AACL;AACF;AAC3C;AACA;AACA;AACA,YAAY,uDAAY;AACxB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6DAAa;AACjC;AACA,sBAAsB,6CAAK;AAC3B,wBAAwB,8DAAe;AACvC;AACA;AACA,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,+BAA+B;AACvD,YAAY,qDAAS,GAAG,4CAA4C;AACpE;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACW;;;;;;;;;;;;;;;;;;;;;;;;;ACxDhC;AACA;AACA;AACA;AACA;AACA;AACsD;AACP;AACZ;AACF;AACY;AACR;AACM;AACN;AACQ;AACG;AAChD;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B;AACA;AACA,YAAY,qDAAS,GAAG,iDAAiD;AACzE,YAAY,qDAAS,GAAG,iDAAiD;AACzE,YAAY,qDAAS,GAAG,iDAAiD;AACzE,YAAY,qDAAS,GAAG,iDAAiD;AACzE,YAAY,qDAAS,GAAG,iDAAiD;AACzE,YAAY,qDAAS,GAAG,iDAAiD;AACzE,YAAY,qDAAS,GAAG,iDAAiD;AACzE,YAAY,qDAAS,GAAG,iDAAiD;AACzE,YAAY,qDAAS,GAAG,iDAAiD;AACzE,YAAY,qDAAS,GAAG,iDAAiD;AACzE,YAAY,qDAAS,GAAG,iDAAiD;AACzE,YAAY,qDAAS,GAAG,iDAAiD;AACzE,YAAY,qDAAS,GAAG,iDAAiD;AACzE;AACA,6BAA6B,mDAAQ;AACrC,6BAA6B,mDAAQ;AACrC,6BAA6B,mDAAQ;AACrC,6BAA6B,mDAAQ;AACrC,6BAA6B,mDAAQ;AACrC,6BAA6B,mDAAQ;AACrC,6BAA6B,mDAAQ;AACrC,6BAA6B,mDAAQ;AACrC,6BAA6B,mDAAQ;AACrC,6BAA6B,mDAAQ;AACrC,8BAA8B,mDAAQ;AACtC,8BAA8B,mDAAQ;AACtC,8BAA8B,mDAAQ;AACtC;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B;AACA;AACA,YAAY,qDAAS,GAAG,kDAAkD;AAC1E,YAAY,qDAAS,GAAG,kDAAkD;AAC1E,YAAY,qDAAS,GAAG,kDAAkD;AAC1E,YAAY,qDAAS,GAAG,kDAAkD;AAC1E,YAAY,qDAAS,GAAG,kDAAkD;AAC1E,YAAY,qDAAS,GAAG,kDAAkD;AAC1E,YAAY,qDAAS,GAAG,kDAAkD;AAC1E,YAAY,qDAAS,GAAG,iDAAiD;AACzE,YAAY,qDAAS,GAAG,iDAAiD;AACzE,YAAY,qDAAS,GAAG,iDAAiD;AACzE,YAAY,qDAAS,GAAG,iDAAiD;AACzE,YAAY,qDAAS,GAAG,iDAAiD;AACzE,YAAY,qDAAS,GAAG,iDAAiD;AACzE;AACA,6BAA6B,mDAAQ;AACrC,6BAA6B,mDAAQ;AACrC,6BAA6B,mDAAQ;AACrC,6BAA6B,mDAAQ;AACrC,6BAA6B,mDAAQ;AACrC,6BAA6B,mDAAQ;AACrC,6BAA6B,mDAAQ;AACrC,6BAA6B,mDAAQ;AACrC,6BAA6B,mDAAQ;AACrC,6BAA6B,mDAAQ;AACrC,6BAA6B,mDAAQ;AACrC,8BAA8B,mDAAQ;AACtC,8BAA8B,mDAAQ;AACtC,8BAA8B,mDAAQ;AACtC;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE;AACA,8CAA8C,eAAe;AAC7D,uDAAuD,eAAe;AACtE,uDAAuD,eAAe;AACtE,8CAA8C,eAAe;AAC7D,aAAa;AACb;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,YAAY,wBAAwB;AACpC;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,YAAY,wBAAwB;AACpC;AACA;AACA,IAAI,mEAAuB;AAC3B,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE;AACA,iDAAiD,4CAA4C;AAC7F,uDAAuD,4CAA4C;AACnG,8CAA8C,8CAA8C;AAC5F,0DAA0D,8CAA8C;AACxG,uDAAuD,8CAA8C;AACrG,4CAA4C,4CAA4C;AACxF,iDAAiD,4CAA4C;AAC7F,mDAAmD,8CAA8C;AACjG,mDAAmD,gDAAgD;AACnG,oDAAoD,8CAA8C;AAClG,wDAAwD,4CAA4C;AACpG;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA,sBAAsB,sDAAc,eAAe;AACnD;AACA;AACA;AACA;AACA,0BAA0B,qDAAS,GAAG,+CAA+C;AACrF;AACA,iCAAiC,uDAAU;AAC3C;AACA;AACA,gBAAgB,wDAAkB,QAAQ,WAAW;AACrD;AACA;AACA;AACA,0BAA0B,6CAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,yDAAkB;AAC1B,0BAA0B,6CAAK;AAC/B;AACA;AACA,SAAS,UAAU,sDAAc;AACjC;AACA,8BAA8B,qDAAS;AACvC,0CAA0C,4DAAoB;AAC9D;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACI;;;;;;;;;;;;;;;;;AChVzB;AACA;AACA;AACA;AACsD;AACf;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB,UAAU;AAC3B;AACA;AACA,iBAAiB,UAAU;AAC3B;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAuD;AACpF,yCAAyC,uCAAuC;AAChF,yCAAyC,qCAAqC;AAC9E,8BAA8B,+FAA+F;AAC7H,yCAAyC,+DAA+D;AACxG,4BAA4B,eAAe;AAC3C,mCAAmC,eAAe;AAClD,+BAA+B,cAAc;AAC7C,qCAAqC,cAAc;AACnD,sCAAsC,cAAc;AACpD,4BAA4B,YAAY;AACxC;AACA;AACA,wBAAwB,sDAAsD;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,+CAAM;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,+CAAM;AAC7B,wBAAwB,MAAM,KAAK,OAAO,KAAK,aAAa,KAAK,cAAc,KAAK,oBAAoB;AACxG;AACA,yBAAyB,oBAAoB;AAC7C;AACA,yBAAyB;AACzB,yBAAyB,EAAE;AAC3B;AACA;AACA;AACA;AACA,uBAAuB,+CAAM;AAC7B,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA,uBAAuB,+CAAM;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,wDAAwD;AACxD;AACA,wEAAqB;AACE;;;;;;;;;;;;;;;;AC7IvB;AACA;AACA;AACA;AACA;AACsD;AACtD;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,2EAAwB;AAC1C;AACA,iCAAiC,YAAY;AAC7C,kFAAkF,YAAY;AAC9F;AACA,iCAAiC,oBAAoB;AACrD,qEAAqE,YAAY;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,KAAK;AACL;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC,KAAK;AACL;AACA;AACA,CAAC;AACD,wEAAqB;AACQ;;;;;;;;;;;;;;;;;ACvE7B;AACA;AACA;AACA;AACA;AACA;AACsD;AACmD;AACzG;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,QAAQ,6CAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iDAAS;AACnC,QAAQ,mDAAW;AACnB;AACA;AACA;AACA;AACA;AACA,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,6BAA6B;AACvC,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,6BAA6B;AACvC,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C,UAAU,iCAAiC;AAC3C;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B,0BAA0B,6CAAK;AAC/B,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,2EAAwB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,iCAAiC;AACvD,sBAAsB,iCAAiC;AACvD,sBAAsB,iCAAiC;AACvD,sBAAsB,iCAAiC;AACvD,sBAAsB,iCAAiC;AACvD,sBAAsB,iCAAiC;AACvD,sBAAsB,iCAAiC;AACvD,sBAAsB,iCAAiC;AACvD;AACA;AACA;AACA;AACA,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,4DAA4D;AAClF,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,4DAA4D;AAClF;AACA,aAAa,8BAA8B;AAC3C,aAAa,0CAA0C;AACvD,aAAa,0CAA0C;AACvD,CAAC;AACD;AACA;AACA,sBAAsB,iCAAiC;AACvD,sBAAsB,iCAAiC;AACvD,sBAAsB,iCAAiC;AACvD,sBAAsB,iCAAiC;AACvD;AACA;AACA,sBAAsB,kDAAkD;AACxE,sBAAsB,4DAA4D;AAClF,sBAAsB,kDAAkD;AACxE,sBAAsB,4DAA4D;AAClF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,sBAAsB,iCAAiC;AACvD,sBAAsB,iCAAiC;AACvD,sBAAsB,8BAA8B;AACpD,sBAAsB,0CAA0C;AAChE,sBAAsB,iCAAiC;AACvD,sBAAsB,iCAAiC;AACvD,sBAAsB,iCAAiC;AACvD,sBAAsB,iCAAiC;AACvD;AACA,aAAa,0CAA0C;AACvD;AACA,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,4DAA4D;AAClF,sBAAsB,kDAAkD;AACxE,sBAAsB,6DAA6D;AACnF,sBAAsB,mDAAmD;AACzE;AACA,IAAI,0DAAkB,gBAAgB,WAAW;AACjD;AACA,aAAa,0CAA0C;AACvD,aAAa,0CAA0C;AACvD,CAAC;AACD;AACA;AACA,gBAAgB,kDAAU;AAC1B;AACA,gBAAgB,uDAAe;AAC/B,eAAe,wDAAgB;AAC/B;AACA;AACA;AACA,yBAAyB,kDAAkD;AAC3E,0CAA0C,YAAY;AACtD,wCAAwC,iBAAiB;AACzD,sBAAsB,kDAAkD,6BAA6B,iBAAiB;AACtH,sBAAsB,kDAAkD,6BAA6B,iBAAiB;AACtH,sBAAsB,kDAAkD,6BAA6B,iBAAiB;AACtH;AACA,CAAC;AACD;AACA;AACA,sBAAsB,qDAAqD,+BAA+B,YAAY;AACtH,sBAAsB,qDAAqD;AAC3E,sBAAsB,qDAAqD,+BAA+B,YAAY;AACtH,sBAAsB,qDAAqD,+BAA+B,YAAY;AACtH;AACA,CAAC;AACD;AACA;AACA,sBAAsB,kDAAkD,kBAAkB,+CAAO;AACjG,sBAAsB,kDAAkD,kBAAkB,+CAAO;AACjG,sBAAsB,kDAAkD,kBAAkB,+CAAO;AACjG,sBAAsB,kDAAkD,kBAAkB,+CAAO;AACjG;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,4BAA4B,iDAAiD,kBAAkB,+CAAO;AACtG,4BAA4B,iDAAiD,kBAAkB,+CAAO;AACtG,4BAA4B,iDAAiD,kBAAkB,+CAAO;AACtG,4BAA4B,iDAAiD,kBAAkB,+CAAO;AACtG;AACA,CAAC;AACD,wEAAqB;AACM;;;;;;;;;;;;;;;;;ACjM3B;AACA;AACA;AACA;AACsD;AACiB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,yBAAyB,gDAAQ;AACjC,sBAAsB,iDAAS,GAAG,SAAS,gEAAwB,QAAQ;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,gDAAQ;AACjC,sBAAsB,iDAAS,GAAG,SAAS,gEAAwB,QAAQ;AAC3E,IAAI,sEAA8B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,0DAAkB;AACvD;AACA,gDAAgD,0DAAkB;AAClE;AACA;AACA;AACA,yBAAyB,gDAAQ;AACjC,sBAAsB,iDAAS,GAAG,SAAS,gEAAwB,QAAQ;AAC3E,IAAI,sEAA8B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACI;;;;;;;;;;;;;;;;;ACrEzB;AACA;AACA;AACA;AACA;AACsD;AACgF;AACtI;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,sBAAsB;AACtB;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,+DAAuB;AAC3B,YAAY,iDAAS,GAAG,8BAA8B;AACtD,YAAY,iDAAS,GAAG,8BAA8B;AACtD,YAAY,iDAAS,GAAG,8BAA8B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6FAA6F;AAC7F;AACA,+BAA+B,sBAAsB,EAAE,oBAAoB;AAC3E;AACA,4BAA4B,gEAAwB;AACpD;AACA;AACA,2BAA2B,WAAW;AACtC;AACA;AACA;AACA;AACA,2BAA2B,QAAQ;AACnC;AACA;AACA;AACA;AACA;AACA,0FAA0F,eAAe,gBAAgB;AACzH,uCAAuC,cAAc,qBAAqB,EAAE,qBAAqB,IAAI,SAAS;AAC9G;AACA,yCAAyC,sBAAsB,cAAc,YAAY,IAAI,YAAY;AACzG;AACA;AACA;AACA,yBAAyB,gDAAQ;AACjC;AACA;AACA,kBAAkB,6CAAK;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iEAAiE;AACrF;AACA,wBAAwB,+CAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,wDAAY;AACpB;AACA;AACA,sBAAsB,oDAAY,uCAAuC,kBAAkB;AAC3F;AACA,sBAAsB,qDAAa;AACnC;AACA;AACA,sBAAsB,kDAAU;AAChC;AACA,yBAAyB,gDAAQ;AACjC;AACA,kBAAkB,6CAAK;AACvB;AACA;AACA,wEAAqB;AACI;;;;;;;;;;;;;;;;;;;;;;;;AC5JzB;AACA;AACA;AACA;AACsD;AACnB;AACF;AACE;AACU;AACR;AACQ;AACN;AACF;AACrC;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iBAAiB;AAC7B;AACA,YAAY,qDAAS,GAAG,kDAAkD;AAC1E,YAAY,qDAAS,GAAG,kDAAkD;AAC1E,YAAY,qDAAS,GAAG,kDAAkD;AAC1E,YAAY,qDAAS,GAAG,kDAAkD;AAC1E,YAAY,qDAAS,GAAG,mDAAmD;AAC3E,YAAY,qDAAS,GAAG,mDAAmD;AAC3E,YAAY,qDAAS,GAAG,mDAAmD;AAC3E,YAAY,qDAAS,GAAG,oDAAoD;AAC5E;AACA,IAAI,wDAAkB,UAAU,WAAW;AAC3C,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iBAAiB;AAC7B;AACA,YAAY,qDAAS,GAAG,kDAAkD;AAC1E,YAAY,qDAAS,GAAG,kDAAkD;AAC1E,YAAY,qDAAS,GAAG,kDAAkD;AAC1E,YAAY,qDAAS,GAAG,kDAAkD;AAC1E,YAAY,qDAAS,GAAG,kDAAkD;AAC1E,YAAY,qDAAS,GAAG,kDAAkD;AAC1E;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA,iCAAiC,qDAAS;AAC1C;AACA;AACA;AACA;AACA,YAAY,iBAAiB;AAC7B;AACA,eAAe,iDAAiD;AAChE,eAAe,kDAAkD;AACjE,eAAe,iDAAiD;AAChE,eAAe,iDAAiD;AAChE,eAAe,+DAA+D;AAC9E,eAAe,kDAAkD;AACjE,eAAe,kDAAkD;AACjE,eAAe,iDAAiD;AAChE,eAAe,+DAA+D;AAC9E,eAAe,iDAAiD;AAChE,eAAe,kDAAkD;AACjE,eAAe,iDAAiD;AAChE;AACA,sBAAsB,2CAAI;AAC1B,sBAAsB,2CAAI;AAC1B,sBAAsB,2CAAI;AAC1B,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iBAAiB;AAC7B;AACA,eAAe,kDAAkD;AACjE,eAAe,mDAAmD;AAClE,eAAe,kDAAkD;AACjE,eAAe,kDAAkD;AACjE,eAAe,gEAAgE;AAC/E,eAAe,mDAAmD;AAClE,eAAe,mDAAmD;AAClE,eAAe,kDAAkD;AACjE,eAAe,gEAAgE;AAC/E,eAAe,kDAAkD;AACjE,eAAe,mDAAmD;AAClE,eAAe,kDAAkD;AACjE;AACA,sBAAsB,2CAAI;AAC1B,sBAAsB,2CAAI;AAC1B,sBAAsB,2CAAI;AAC1B,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iBAAiB;AAC7B;AACA,eAAe,iDAAiD;AAChE,eAAe,iDAAiD;AAChE,eAAe,kDAAkD;AACjE,eAAe,kDAAkD;AACjE,eAAe,kDAAkD;AACjE,eAAe,iDAAiD;AAChE,eAAe,iDAAiD;AAChE,eAAe,kDAAkD;AACjE,eAAe,iDAAiD;AAChE,eAAe,iDAAiD;AAChE,eAAe,kDAAkD;AACjE,eAAe,kDAAkD;AACjE;AACA,wBAAwB,+CAAM,sCAAsC,4DAAmB;AACvF,wBAAwB,+CAAM,sCAAsC,4DAAmB;AACvF,wBAAwB,+CAAM,sCAAsC,4DAAmB;AACvF,wBAAwB,+CAAM,uCAAuC,4DAAmB;AACxF,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iBAAiB;AAC7B;AACA,eAAe,mDAAmD;AAClE,eAAe,mDAAmD;AAClE,eAAe,kDAAkD;AACjE,eAAe,mDAAmD;AAClE,eAAe,kDAAkD;AACjE,eAAe,kDAAkD;AACjE,eAAe,kDAAkD;AACjE,eAAe,mDAAmD;AAClE,eAAe,kDAAkD;AACjE,eAAe,kDAAkD;AACjE,eAAe,mDAAmD;AAClE,eAAe,mDAAmD;AAClE;AACA,sBAAsB,2CAAI;AAC1B,sBAAsB,2CAAI;AAC1B,sBAAsB,2CAAI;AAC1B,sBAAsB,2CAAI;AAC1B,wBAAwB,+CAAM,sCAAsC,+DAAsB;AAC1F,wBAAwB,+CAAM,sCAAsC,+DAAsB;AAC1F,wBAAwB,+CAAM,sCAAsC,+DAAsB;AAC1F,wBAAwB,+CAAM,uCAAuC,+DAAsB;AAC3F,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iBAAiB;AAC7B;AACA,eAAe,mDAAmD;AAClE,eAAe,mDAAmD;AAClE,eAAe,kDAAkD;AACjE,eAAe,kDAAkD;AACjE,eAAe,mDAAmD;AAClE,eAAe,kDAAkD;AACjE,eAAe,mDAAmD;AAClE,eAAe,kDAAkD;AACjE,eAAe,kDAAkD;AACjE,eAAe,iDAAiD;AAChE,eAAe,kDAAkD;AACjE,eAAe,iDAAiD;AAChE,eAAe,kDAAkD;AACjE,eAAe,kDAAkD;AACjE,eAAe,mDAAmD;AAClE,eAAe,mDAAmD;AAClE;AACA,qBAAqB,2CAAI;AACzB,uBAAuB,+CAAM,uCAAuC,4DAAmB;AACvF,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,oBAAoB;AAChC;AACA;AACA,YAAY,iBAAiB;AAC7B;AACA,eAAe,mDAAmD;AAClE,eAAe,mDAAmD;AAClE,eAAe,kDAAkD;AACjE,eAAe,kDAAkD;AACjE,eAAe,mDAAmD;AAClE,eAAe,kDAAkD;AACjE,eAAe,mDAAmD;AAClE,eAAe,kDAAkD;AACjE,eAAe,kDAAkD;AACjE,eAAe,iDAAiD;AAChE,eAAe,kDAAkD;AACjE,eAAe,iDAAiD;AAChE,eAAe,kDAAkD;AACjE,eAAe,kDAAkD;AACjE,eAAe,mDAAmD;AAClE,eAAe,mDAAmD;AAClE;AACA,qBAAqB,2CAAI;AACzB,uBAAuB,+CAAM,uCAAuC,4DAAmB;AACvF,aAAa,oBAAoB;AACjC,IAAI,mEAAuB,0BAA0B,mBAAmB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B,4CAA4C,qDAAS;AACrD;AACA,sBAAsB,4CAA4C;AAClE,sBAAsB,+BAA+B;AACrD,sBAAsB,4CAA4C;AAClE,sBAAsB,+BAA+B;AACrD;AACA;AACA,sBAAsB,kDAAkD;AACxE,sBAAsB,mDAAmD;AACzE,sBAAsB,mDAAmD;AACzE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,mDAAmD;AACzE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE;AACA,uBAAuB,6CAAK,CAAC,mDAAY;AACzC,uBAAuB,6CAAK,CAAC,mDAAY;AACzC,aAAa,oBAAoB;AACjC,QAAQ,qDAAS,yEAAyE,mBAAmB;AAC7G,wBAAwB,2CAAI;AAC5B,wBAAwB,2CAAI;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACC;;;;;;;;;;;;;;;;;;;;;;AC3TtB;AACA;AACA;AACA;AACsD;AACP;AACZ;AACU;AACR;AACa;AACL;AAC7C;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,mDAAmD;AACzD,MAAM,mDAAmD;AACzD,MAAM,mDAAmD;AACzD,MAAM,mDAAmD;AACzD,MAAM,oDAAoD;AAC1D,MAAM,oDAAoD;AAC1D,MAAM,oDAAoD;AAC1D;AACA;;AAEA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6CAAK;AAC/B,4BAA4B,iEAAkB;AAC9C,4BAA4B,iEAAkB;AAC9C;AACA;AACA;AACA;AACA,2BAA2B,qDAAS,GAAG,mDAAmD;AAC1F;AACA,IAAI,mEAAuB;AAC3B;AACA,0BAA0B,6CAAK;AAC/B,4BAA4B,iEAAkB;AAC9C,4BAA4B,iEAAkB;AAC9C;AACA;AACA;AACA,YAAY,qDAAS,GAAG,mDAAmD;AAC3E,YAAY,qDAAS,GAAG,mDAAmD;AAC3E;AACA;AACA,IAAI,mEAAuB;AAC3B;AACA,0BAA0B,6CAAK;AAC/B;AACA;AACA;AACA,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,IAAI,mEAAuB;AAC3B;AACA,0BAA0B,6CAAK;AAC/B;AACA;AACA;AACA,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA,0BAA0B,6CAAK;AAC/B,4BAA4B,iEAAkB;AAC9C,4BAA4B,iEAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,sBAAsB,2CAAI;AAC1B,sBAAsB,2CAAI;AAC1B;AACA;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6CAAK;AAC/B,4BAA4B,iEAAkB;AAC9C,4BAA4B,iEAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS,GAAG,mDAAmD;AAC3E;AACA,uCAAuC,uDAAU,wBAAwB,yEAAsB;AAC/F;AACA,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,sBAAsB,2CAAI;AAC1B;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA,0BAA0B,6CAAK;AAC/B;AACA;AACA,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA,iCAAiC,uDAAU,uBAAuB,yEAAsB;AACxF;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA,0BAA0B,6CAAK;AAC/B,4BAA4B,iEAAkB;AAC9C,4BAA4B,iEAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA,uCAAuC,uDAAU,wBAAwB,yEAAsB;AAC/F;AACA,sBAAsB,2CAAI;AAC1B,sBAAsB,2CAAI;AAC1B;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6CAAK;AAC/B,4BAA4B,iEAAkB;AAC9C,4BAA4B,iEAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT,YAAY,qDAAS;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA,uCAAuC,uDAAU,wBAAwB,yEAAsB;AAC/F;AACA,sBAAsB,2CAAI;AAC1B;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA,wEAAqB;AACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1avB;AACA;AACA;AACA;AACA;AACA;AACsD;AACP;AACZ;AACA;AACU;AACM;AACR;AACN;AACsB;AACd;AACO;AACN;AACM;AACC;AACrD;AACA;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA,kFAAkF,cAAc;AAChG;AACA;AACA,0EAA0E,WAAW;AACrF,gFAAgF,aAAa;AAC7F,gFAAgF,aAAa;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,sBAAsB,6CAAK;AAC3B,sBAAsB,2CAAI;AAC1B,sBAAsB,2CAAI;AAC1B,sBAAsB,2CAAI;AAC1B,sBAAsB,8DAAa;AACnC,sBAAsB,8DAAa;AACnC,sBAAsB,8DAAa;AACnC,qBAAqB,2DAAY;AACjC,qBAAqB,2DAAY;AACjC,qBAAqB,2DAAY;AACjC,qBAAqB,sDAAO,CAAC,iEAAkB;AAC/C,qBAAqB,sDAAO,CAAC,iEAAkB;AAC/C,qBAAqB,sDAAO,CAAC,+DAAgB;AAC7C,wBAAwB;AACxB,wBAAwB;AACxB,qBAAqB;AACrB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,cAAc;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6CAAK,gBAAgB,iBAAiB;AAC1D;AACA;AACA,gBAAgB,6CAAK,iBAAiB,kBAAkB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6CAAK;AAC/B,4BAA4B,uEAAwB;AACpD,4BAA4B,iEAAkB;AAC9C;AACA;AACA;AACA,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,+BAA+B;AACvD,YAAY,qDAAS,GAAG,4CAA4C;AACpE;AACA;AACA,IAAI,mEAAuB;AAC3B;AACA,0BAA0B,6CAAK;AAC/B;AACA,4BAA4B,8DAAe;AAC3C;AACA;AACA,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD;AACA;AACA,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD;AACA;AACA,sBAAsB,2CAAI;AAC1B,sBAAsB,2CAAI;AAC1B;AACA;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6CAAK;AAC/B,4BAA4B,uEAAwB;AACpD,4BAA4B,qEAAsB;AAClD;AACA;AACA;AACA;AACA,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,+BAA+B;AACvD,YAAY,qDAAS,GAAG,4CAA4C;AACpE;AACA;AACA,IAAI,mEAAuB;AAC3B;AACA,0BAA0B,6CAAK;AAC/B,4BAA4B,uEAAwB;AACpD,4BAA4B,qEAAsB;AAClD;AACA;AACA,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD;AACA;AACA,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD;AACA,uCAAuC,uDAAU;AACjD,uCAAuC,uDAAU;AACjD,uCAAuC,uDAAU;AACjD;AACA,sBAAsB,2CAAI;AAC1B,sBAAsB,2CAAI;AAC1B;AACA;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA,0BAA0B,6CAAK;AAC/B;AACA,2BAA2B,qDAAS,GAAG,+BAA+B;AACtE;AACA,IAAI,mEAAuB;AAC3B;AACA,0BAA0B,6CAAK;AAC/B,4BAA4B,uEAAwB;AACpD,4BAA4B,qEAAsB;AAClD;AACA;AACA,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,+BAA+B;AACvD,YAAY,qDAAS,GAAG,4CAA4C;AACpE;AACA;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,6CAAK;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qDAAS,GAAG,8BAA8B;AAC9D,oBAAoB,qDAAS,GAAG,8BAA8B;AAC9D,oBAAoB,qDAAS,GAAG,+BAA+B;AAC/D,oBAAoB,qDAAS,GAAG,4CAA4C;AAC5E;AACA,YAAY,mEAAuB;AACnC;AACA,2CAA2C,SAAS,uEAAwB,+BAA+B,IAAI,mCAAmC;AAClJ;AACA,sCAAsC,SAAS,uEAAwB,EAAE,IAAI,kCAAkC;AAC/G;AACA,sCAAsC,SAAS,uEAAwB,EAAE,IAAI,qCAAqC;AAClH;AACA;AACA;AACA,sCAAsC,SAAS,uEAAwB,EAAE,IAAI,mDAAmD;AAChI;AACA,sCAAsC,SAAS,uEAAwB,EAAE,IAAI,mDAAmD;AAChI;AACA,sCAAsC,SAAS,uEAAwB,EAAE,IAAI,iEAAiE;AAC9I;AACA;AACA;AACA;AACA;AACA,yBAAyB,iEAAkB;AAC3C;AACA;AACA;AACA,yBAAyB,iEAAkB;AAC3C;AACA;AACA;AACA,yBAAyB,qEAAsB;AAC/C;AACA;AACA;AACA,yBAAyB,sEAAuB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6CAAK;AACzB;AACA,0BAA0B,6EAA0B;AACpD;AACA;AACA;AACA,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD;AACA;AACA,IAAI,mEAAuB;AAC3B;AACA,oBAAoB,6CAAK;AACzB,0BAA0B,0EAAuB;AACjD;AACA;AACA;AACA,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD;AACA;AACA,IAAI,mEAAuB;AAC3B;AACA,oBAAoB,6CAAK;AACzB,0BAA0B,6EAA0B;AACpD;AACA;AACA;AACA,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD;AACA;AACA,IAAI,mEAAuB;AAC3B;AACA,oBAAoB,6CAAK;AACzB,0BAA0B,4EAAyB;AACnD;AACA;AACA;AACA,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD;AACA;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6CAAK;AACzB,sBAAsB,uEAAwB;AAC9C,0BAA0B,6EAA0B;AACpD;AACA;AACA;AACA;AACA;AACA,0BAA0B,qDAAS,GAAG,8BAA8B;AACpE;AACA,IAAI,mEAAuB;AAC3B;AACA,oBAAoB,6CAAK;AACzB,0BAA0B,6EAA0B;AACpD;AACA;AACA,0BAA0B,qDAAS,GAAG,8BAA8B;AACpE;AACA,IAAI,mEAAuB;AAC3B;AACA,oBAAoB,6CAAK;AACzB,qBAAqB,6DAAe;AACpC;AACA;AACA,0BAA0B,qDAAS,GAAG,8BAA8B;AACpE;AACA,IAAI,mEAAuB;AAC3B;AACA,oBAAoB,6CAAK;AACzB,qBAAqB,2DAAa;AAClC;AACA;AACA,0BAA0B,qDAAS,GAAG,8BAA8B;AACpE;AACA,IAAI,mEAAuB;AAC3B;AACA,oBAAoB,6CAAK;AACzB,sBAAsB,qEAAsB;AAC5C,qBAAqB,2DAAa;AAClC;AACA;AACA,0BAA0B,qDAAS,GAAG,8BAA8B;AACpE;AACA,IAAI,mEAAuB;AAC3B;AACA,oBAAoB,6CAAK;AACzB,qBAAqB,iEAAmB;AACxC,sBAAsB,iEAAkB;AACxC;AACA;AACA,0BAA0B,qDAAS,GAAG,8BAA8B;AACpE;AACA,IAAI,mEAAuB;AAC3B;AACA,oBAAoB,6CAAK;AACzB;AACA;AACA;AACA,0BAA0B,qDAAS,GAAG,8BAA8B;AACpE;AACA,IAAI,mEAAuB;AAC3B;AACA,oBAAoB,6CAAK;AACzB,sBAAsB,iEAAkB;AACxC,0BAA0B,6EAA0B;AACpD;AACA;AACA,0BAA0B,qDAAS,GAAG,8BAA8B;AACpE;AACA,IAAI,mEAAuB;AAC3B;AACA,oBAAoB,6CAAK;AACzB,sBAAsB,8DAAe;AACrC,0BAA0B,4EAAyB;AACnD;AACA;AACA;AACA;AACA,0BAA0B,qDAAS,GAAG,8BAA8B;AACpE;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6CAAK;AACzB,sBAAsB,uEAAwB;AAC9C,qBAAqB,iEAAmB;AACxC;AACA;AACA;AACA;AACA;AACA,0BAA0B,qDAAS,GAAG,8BAA8B;AACpE;AACA,IAAI,mEAAuB;AAC3B;AACA,oBAAoB,6CAAK;AACzB,sBAAsB,uEAAwB;AAC9C,0BAA0B,qEAAkB;AAC5C,qBAAqB,6DAAe;AACpC;AACA;AACA;AACA;AACA,0BAA0B,qDAAS,GAAG,8BAA8B;AACpE,IAAI,mEAAuB;AAC3B;AACA,oBAAoB,6CAAK;AACzB,qBAAqB,2DAAa;AAClC,0BAA0B,qEAAkB;AAC5C;AACA;AACA;AACA;AACA;AACA,0BAA0B,qDAAS,GAAG,8BAA8B;AACpE,IAAI,mEAAuB;AAC3B;AACA,oBAAoB,6CAAK;AACzB,qBAAqB,2DAAa;AAClC,0BAA0B,qEAAkB;AAC5C;AACA;AACA;AACA;AACA;AACA,0BAA0B,qDAAS,GAAG,8BAA8B;AACpE,IAAI,mEAAuB;AAC3B;AACA,oBAAoB,6CAAK;AACzB;AACA,sBAAsB,iEAAkB;AACxC,0BAA0B,qEAAkB;AAC5C;AACA;AACA;AACA;AACA;AACA,0BAA0B,qDAAS,GAAG,8BAA8B;AACpE,IAAI,mEAAuB;AAC3B;AACA,oBAAoB,6CAAK;AACzB;AACA,0BAA0B,qEAAkB;AAC5C;AACA;AACA;AACA,0BAA0B,qDAAS,GAAG,8BAA8B;AACpE,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAK;AAClC;AACA;AACA;AACA;AACA;AACA,gBAAgB,qDAAS,GAAG,8BAA8B;AAC1D,gBAAgB,qDAAS,GAAG,8BAA8B;AAC1D,gBAAgB,qDAAS,GAAG,8BAA8B;AAC1D,gBAAgB,qDAAS,GAAG,8BAA8B;AAC1D;AACA,QAAQ,mEAAuB;AAC/B;AACA;AACA,6BAA6B,iCAAiC;AAC9D,6BAA6B,iCAAiC;AAC9D,6BAA6B,kCAAkC;AAC/D,6BAA6B,yBAAyB;AACtD,6BAA6B,2BAA2B;AACxD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD;AACA;AACA;AACA,6BAA6B,wBAAwB;AACrD,6BAA6B,wBAAwB;AACrD,6BAA6B,wBAAwB;AACrD,6BAA6B,wBAAwB;AACrD,6BAA6B,0BAA0B;AACvD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD;AACA;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B;AACA,+BAA+B,eAAe;AAC9C,+BAA+B,gBAAgB;AAC/C,+BAA+B,eAAe;AAC9C,+BAA+B,gBAAgB;AAC/C,+BAA+B,eAAe;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B;AACA,8BAA8B,gBAAgB,IAAI,IAAI,gBAAgB,IAAI,eAAe,IAAI,gBAAgB;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B,4BAA4B,iEAAsB;AAClD,gCAAgC,kEAAuB;AACvD,gCAAgC,kEAAuB;AACvD,gCAAgC,kEAAuB;AACvD;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B,4BAA4B,iEAAsB,IAAI,cAAc;AACpE,8BAA8B,iEAAsB,IAAI,aAAa;AACrE,gCAAgC,kEAAuB,IAAI,cAAc;AACzE,8BAA8B,kEAAuB,IAAI,aAAa;AACtE,gCAAgC,kEAAuB,IAAI,cAAc;AACzE,8BAA8B,kEAAuB,IAAI,aAAa;AACtE,qCAAqC,kEAAuB,IAAI,6BAA6B,kEAAsB,EAAE;AACrH,sCAAsC,kEAAuB,IAAI,4BAA4B,mEAAuB,EAAE;AACtH;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,2BAA2B;AACvD,4BAA4B,iEAAsB,IAAI,cAAc;AACpE,8BAA8B,iEAAsB,IAAI,aAAa;AACrE;AACA;AACA;AACA,wEAAqB;AACC;;;;;;;;;;;;;;;;;;;;;ACtnBtB;AACA;AACA;AACA;AACA;AACsD;AACnB;AACQ;AACN;AACa;AACK;AACvD;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B;AACA;AACA,0BAA0B,+DAAc;AACxC,sBAAsB,2EAA0B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,gEAAyB;AAClD,IAAI,gEAAyB;AAC7B;AACA,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B;AACA;AACA,0BAA0B,+DAAc;AACxC,sBAAsB,2EAA0B;AAChD;AACA;AACA;AACA;AACA,IAAI,gEAAyB;AAC7B;AACA;AACA;AACA;AACA,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B;AACA;AACA,2BAA2B,+DAAc;AACzC,uBAAuB,gFAA+B;AACtD;AACA,2BAA2B,+DAAc;AACzC,uBAAuB,iFAAgC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B;AACA;AACA,0BAA0B,+DAAc;AACxC,qBAAqB,+DAAc;AACnC,sBAAsB,2EAA0B;AAChD;AACA,iBAAiB,2EAA0B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B;AACA;AACA,0BAA0B,+DAAc;AACxC,qBAAqB,+DAAc;AACnC,sBAAsB,0EAAyB;AAC/C;AACA;AACA,iBAAiB,2EAA0B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B;AACA;AACA,0BAA0B,+DAAc;AACxC,qBAAqB,+DAAc;AACnC,sBAAsB,0EAAyB;AAC/C;AACA,iBAAiB,2EAA0B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B;AACA;AACA,0BAA0B,+DAAc;AACxC,qBAAqB,+DAAc;AACnC,sBAAsB,4EAA2B;AACjD;AACA,iBAAiB,2EAA0B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B;AACA;AACA,yBAAyB,uEAAwB;AACjD,yBAAyB,uEAAwB;AACjD,qBAAqB,+DAAc;AACnC,iBAAiB,qFAAoC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B;AACA;AACA,yBAAyB,qEAAsB;AAC/C,yBAAyB,qEAAsB;AAC/C,qBAAqB,+DAAc;AACnC,iBAAiB,sFAAqC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B;AACA;AACA,yBAAyB,iEAAkB;AAC3C,yBAAyB,iEAAkB;AAC3C,qBAAqB,+DAAc;AACnC,iBAAiB,gFAA+B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B;AACA;AACA;AACA;AACA,yBAAyB,qEAAsB;AAC/C,yBAAyB,qEAAsB;AAC/C,yBAAyB,8DAAe;AACxC,yBAAyB,8DAAe;AACxC,yBAAyB,uEAAwB;AACjD,yBAAyB,uEAAwB;AACjD,yBAAyB,uEAAwB;AACjD,yBAAyB,uEAAwB;AACjD,2BAA2B,+DAAc;AACzC,2BAA2B,+DAAc;AACzC,2BAA2B,+DAAc;AACzC,2BAA2B,+DAAc;AACzC;AACA;AACA;AACA;AACA,uBAAuB,qFAAoC;AAC3D,uBAAuB,sFAAqC;AAC5D,uBAAuB,qFAAoC;AAC3D,uBAAuB,sFAAqC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,qEAAsB;AAC/C,yBAAyB,qEAAsB;AAC/C,yBAAyB,8DAAe;AACxC,yBAAyB,8DAAe;AACxC,yBAAyB,uEAAwB;AACjD,yBAAyB,uEAAwB;AACjD,yBAAyB,uEAAwB;AACjD,yBAAyB,uEAAwB;AACjD,2BAA2B,+DAAc;AACzC,2BAA2B,+DAAc;AACzC,2BAA2B,+DAAc;AACzC,2BAA2B,+DAAc;AACzC,2BAA2B,+DAAc;AACzC;AACA;AACA;AACA;AACA;AACA,uBAAuB,qFAAoC;AAC3D,uBAAuB,sFAAqC;AAC5D,uBAAuB,qFAAoC;AAC3D,uBAAuB,sFAAqC;AAC5D,uBAAuB,gFAA+B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,qEAAsB;AAC/C,yBAAyB,qEAAsB;AAC/C,yBAAyB,8DAAe;AACxC,yBAAyB,8DAAe;AACxC,yBAAyB,uEAAwB;AACjD,yBAAyB,uEAAwB;AACjD,yBAAyB,uEAAwB;AACjD,yBAAyB,uEAAwB;AACjD,2BAA2B,+DAAc;AACzC,2BAA2B,+DAAc;AACzC,2BAA2B,+DAAc;AACzC,2BAA2B,+DAAc;AACzC,2BAA2B,+DAAc;AACzC;AACA;AACA;AACA;AACA;AACA,uBAAuB,qFAAoC;AAC3D,uBAAuB,sFAAqC;AAC5D,uBAAuB,qFAAoC;AAC3D,uBAAuB,sFAAqC;AAC5D,uBAAuB,gFAA+B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,6BAA6B,iEAAsB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+DAAc;AAC1C,4BAA4B,+DAAc;AAC1C,6BAA6B,+DAAc;AAC3C,0BAA0B,+DAAc;AACxC,2BAA2B,+DAAc;AACzC,wBAAwB,2EAA0B;AAClD,wBAAwB,2EAA0B;AAClD,yBAAyB,4EAA2B;AACpD,uBAAuB,0EAAyB;AAChD;AACA;AACA,oCAAoC,cAAc;AAClD,qCAAqC,aAAa;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACU;;;;;;;;;;;;;;;;;ACtZ/B;AACA;AACA;AACA;AACA;AACA;AACsD;AACH;AACnD;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2DAAY,GAAG,uBAAuB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2EAAwB;AAChD;AACA;AACA;AACA;AACA,6BAA6B,+DAA+D;AAC5F,kDAAkD,WAAW;AAC7D,kDAAkD,WAAW;AAC7D,gCAAgC,iDAAiD;AACjF,gCAAgC,iDAAiD;AACjF,gCAAgC,iDAAiD;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;AACD,wEAAqB;AACQ;;;;;;;;;;;;;;;;;;AC3G7B;AACA;AACA;AACA;AACsD;AACrB;AACa;AAC9C;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA,KAAK;AACL;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,sBAAsB,8CAA8C;AACpE,sBAAsB,8CAA8C;AACpE,sBAAsB,4DAA4D;AAClF,sBAAsB,4DAA4D;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ,iDAAU,mBAAmB,uDAAgB,EAAE;AAC3E;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,sBAAsB,0EAA0E;AAChG,sBAAsB,8CAA8C,6BAA6B,WAAW;AAC5G,sBAAsB,4DAA4D;AAClF;AACA,yBAAyB,4DAA4D;AACrF,wCAAwC,WAAW;AACnD,sBAAsB,8CAA8C,6BAA6B,WAAW;AAC5G,sBAAsB,0EAA0E;AAChG,sBAAsB,4DAA4D;AAClF;AACA,yBAAyB,4DAA4D;AACrF,wCAAwC,WAAW;AACnD;AACA,IAAI,wDAAkB,eAAe,WAAW;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,cAAc;AACjC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,mBAAmB,aAAa;AAChC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACK;;;;;;;;;;;;;;;;;;;AC7H1B;AACA;AACA;AACA;AACsD;AACjB;AACa;AACW;AAC7D;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B;AACA;AACA;AACA;AACA,wBAAwB,uEAAwB;AAChD;AACA;AACA;AACA,wBAAwB,iEAAkB;AAC1C;AACA;AACA,gBAAgB,yEAAyB;AACzC;AACA;AACA;AACA;AACA,wBAAwB,iEAAkB;AAC1C;AACA;AACA;AACA,wBAAwB,iEAAkB;AAC1C;AACA;AACA;AACA,wEAAqB;AACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvD9B;AACA;AACA;AACA;AACA;AACA;AACsD;AACP;AAC2B;AACvB;AAChB;AACF;AACE;AACU;AACF;AACY;AACZ;AACc;AACpB;AACQ;AACV;AACgB;AACX;AACS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC,oDAAoD,gDAAgD;AACpG,qEAAqE,gDAAgD;AACrH,kDAAkD,+CAA+C;AACjG,mDAAmD,gDAAgD;AACnG,kDAAkD,+CAA+C;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0EAAuB;AAC/B;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,kCAAkC,sDAAS;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,kEAAe;AACrD;AACA,QAAQ,0DAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,sDAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,sDAAS,GAAG,uDAAuD;AAC5F;AACA;AACA,KAAK;AACL,qBAAqB,sDAAS,GAAG,kDAAkD;AACnF,qBAAqB,sDAAS,GAAG,6CAA6C;AAC9E,qBAAqB,sDAAS,GAAG,gDAAgD;AACjF;AACA;AACA,sBAAsB,sDAAe;AACrC;AACA;AACA,yBAAyB,iBAAiB;AAC1C,yBAAyB,eAAe;AACxC,2BAA2B,eAAe;AAC1C,+BAA+B,wBAAwB;AACvD,uCAAuC,wBAAwB;AAC/D,sCAAsC,wBAAwB;AAC9D,+BAA+B,mCAAmC;AAClE,sCAAsC,mCAAmC;AACzE,sCAAsC,mCAAmC;AACzE,2CAA2C,mCAAmC;AAC9E,kDAAkD,mCAAmC;AACrF,kDAAkD,mCAAmC;AACrF,oCAAoC,mCAAmC;AACvE,2CAA2C,mCAAmC;AAC9E,2CAA2C,mCAAmC;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,sDAAS;AAClC;AACA;AACA,KAAK;AACL,qBAAqB,sDAAS,GAAG,kDAAkD;AACnF,qBAAqB,sDAAS,GAAG,6CAA6C;AAC9E,qBAAqB,sDAAS,GAAG,gDAAgD;AACjF;AACA;AACA,qBAAqB,sDAAS,GAAG,4CAA4C;AAC7E,mCAAmC,+CAAO;AAC1C;AACA;AACA;AACA,gCAAgC,iDAAS;AACzC,gCAAgC,+CAAO;AACvC,kBAAkB,iDAAS;AAC3B,gCAAgC,iDAAS;AACzC,kBAAkB,iDAAS;AAC3B;AACA;AACA;AACA;AACA,yBAAyB,sDAAS,GAAG,4CAA4C;AACjF,2GAA2G,+CAAO;AAClH,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAO;AAC7B,qBAAqB,iDAAS;AAC9B;AACA;AACA,sBAAsB,iDAAS;AAC/B,qBAAqB,+CAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sDAAS,GAAG,4CAA4C;AAC/E;AACA;AACA,uBAAuB,sDAAS,GAAG,kEAAkE;AACrG;AACA;AACA;AACA,0BAA0B,8CAAK,gBAAgB,8BAA8B;AAC7E;AACA;AACA,iDAAiD,2BAA2B;AAC5E;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,sDAAS,GAAG,6CAA6C,+CAAO,iBAAiB;AACtG;AACA,0BAA0B,iDAAS;AACnC;AACA,0BAA0B,+CAAO;AACjC;AACA;AACA;AACA,sBAAsB,8CAAK;AAC3B,qBAAqB,sDAAS,GAAG,4CAA4C;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,sDAAS,GAAG,4CAA4C;AAC7E;AACA;AACA;AACA,sBAAsB,8CAAK;AAC3B,qBAAqB,sDAAS,GAAG,4CAA4C;AAC7E,QAAQ,0DAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAAK;AAC3B;AACA;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA,UAAU,+CAA+C;AACzD,UAAU,4CAA4C;AACtD,UAAU,6CAA6C;AACvD,UAAU,4CAA4C;AACtD,UAAU,6CAA6C;AACvD,UAAU,6CAA6C;AACvD,UAAU,8CAA8C;AACxD,UAAU,8CAA8C;AACxD,UAAU,+CAA+C;AACzD,UAAU,8DAA8D,iDAAS,EAAE;AACnF,UAAU,4DAA4D,iDAAS,EAAE;AACjF,UAAU,4DAA4D,iDAAS,EAAE;AACjF,UAAU,4DAA4D,iDAAS,EAAE;AACjF,UAAU,4DAA4D,iDAAS,EAAE;AACjF,UAAU,6DAA6D,iDAAS,EAAE;AAClF,UAAU,6DAA6D,iDAAS,EAAE;AAClF,UAAU,6DAA6D,iDAAS,EAAE;AAClF,UAAU,8DAA8D,iDAAS,EAAE;AACnF,UAAU,8CAA8C;AACxD,UAAU,4CAA4C;AACtD,UAAU,4CAA4C;AACtD,UAAU,4CAA4C;AACtD,UAAU,4CAA4C;AACtD,UAAU,6CAA6C;AACvD,UAAU,6CAA6C;AACvD,UAAU,6CAA6C;AACvD,UAAU,8CAA8C;AACxD,UAAU,8BAA8B;AACxC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,oBAAoB,wBAAwB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAAK;AAC3B;AACA;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA,UAAU,+CAA+C;AACzD,UAAU,4CAA4C;AACtD,UAAU,6CAA6C;AACvD,UAAU,4CAA4C;AACtD,UAAU,6CAA6C;AACvD,UAAU,6CAA6C;AACvD,UAAU,8CAA8C;AACxD,UAAU,8CAA8C;AACxD,UAAU,+CAA+C;AACzD,UAAU,8DAA8D,iDAAS,EAAE;AACnF,UAAU,4DAA4D,iDAAS,EAAE;AACjF,UAAU,4DAA4D,iDAAS,EAAE;AACjF,UAAU,4DAA4D,iDAAS,EAAE;AACjF,UAAU,4DAA4D,iDAAS,EAAE;AACjF,UAAU,6DAA6D,iDAAS,EAAE;AAClF,UAAU,6DAA6D,iDAAS,EAAE;AAClF,UAAU,6DAA6D,iDAAS,EAAE;AAClF,UAAU,8CAA8C;AACxD,UAAU,8CAA8C;AACxD,UAAU,4CAA4C;AACtD,UAAU,4CAA4C;AACtD,UAAU,4CAA4C;AACtD,UAAU,4CAA4C;AACtD,UAAU,6CAA6C;AACvD,UAAU,6CAA6C;AACvD,UAAU,6CAA6C;AACvD,UAAU,8CAA8C;AACxD,UAAU,8BAA8B;AACxC;AACA;AACA,oBAAoB,wBAAwB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAAK;AAC3B;AACA;AACA;AACA;AACA,UAAU,4DAA4D;AACtE,UAAU,0DAA0D;AACpE,UAAU,0DAA0D;AACpE,UAAU,0DAA0D;AACpE,UAAU,0DAA0D;AACpE,UAAU,2DAA2D;AACrE,UAAU,2DAA2D;AACrE,UAAU,0EAA0E,iDAAS,EAAE;AAC/F,UAAU,0EAA0E,iDAAS,EAAE;AAC/F,UAAU,0EAA0E,iDAAS,EAAE;AAC/F,UAAU,2EAA2E,iDAAS,EAAE;AAChG,UAAU,2EAA2E,iDAAS,EAAE;AAChG,UAAU,iCAAiC;AAC3C,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,gCAAgC;AAC1C,UAAU,gCAAgC;AAC1C,UAAU,8BAA8B;AACxC;AACA,oBAAoB,wBAAwB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAAK;AAC3B;AACA;AACA;AACA,UAAU,4DAA4D;AACtE,UAAU,0DAA0D;AACpE,UAAU,4CAA4C;AACtD,UAAU,mDAAmD;AAC7D,UAAU,wEAAwE;AAClF,UAAU,kEAAkE;AAC5E,UAAU,6CAA6C;AACvD,UAAU,oDAAoD;AAC9D,UAAU,mEAAmE,iDAAS,EAAE;AACxF,UAAU,4DAA4D,iDAAS,EAAE;AACjF,UAAU,mEAAmE,iDAAS,EAAE;AACxF,UAAU,kFAAkF,iDAAS,EAAE;AACvG,UAAU,yFAAyF,iDAAS,EAAE;AAC9G;AACA;AACA;AACA,4BAA4B,iDAAS;AACrC,SAAS;AACT;AACA;AACA,oBAAoB,wBAAwB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAAK;AAC3B;AACA;AACA;AACA,UAAU,+CAA+C;AACzD,UAAU,6CAA6C;AACvD,UAAU,6CAA6C;AACvD,UAAU,6CAA6C;AACvD,UAAU,6CAA6C;AACvD,UAAU,8CAA8C;AACxD,UAAU,8CAA8C;AACxD,UAAU,8CAA8C;AACxD,UAAU,+CAA+C;AACzD,UAAU,+DAA+D,iDAAS,EAAE;AACpF,UAAU,6DAA6D,iDAAS,EAAE;AAClF,UAAU,6DAA6D,iDAAS,EAAE;AAClF,UAAU,6DAA6D,iDAAS,EAAE;AAClF,UAAU,6DAA6D,iDAAS,EAAE;AAClF,UAAU,8DAA8D,iDAAS,EAAE;AACnF,UAAU,8DAA8D,iDAAS,EAAE;AACnF,UAAU,8DAA8D,iDAAS,EAAE;AACnF,UAAU,+DAA+D,iDAAS,EAAE;AACpF,UAAU,+CAA+C;AACzD,UAAU,6CAA6C;AACvD,UAAU,6CAA6C;AACvD,UAAU,6CAA6C;AACvD,UAAU,6CAA6C;AACvD,UAAU,8CAA8C;AACxD,UAAU,8CAA8C;AACxD,UAAU,8CAA8C;AACxD,UAAU,+CAA+C;AACzD,UAAU,+DAA+D,iDAAS,EAAE;AACpF,UAAU,6DAA6D,iDAAS,EAAE;AAClF,UAAU,6DAA6D,iDAAS,EAAE;AAClF,UAAU,6DAA6D,iDAAS,EAAE;AAClF,UAAU,6DAA6D,iDAAS,EAAE;AAClF,UAAU,8DAA8D,iDAAS,EAAE;AACnF,UAAU,8DAA8D,iDAAS,EAAE;AACnF,UAAU,8DAA8D,iDAAS,EAAE;AACnF,UAAU,+DAA+D,iDAAS,EAAE;AACpF;AACA;AACA,oBAAoB,wBAAwB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAAK;AAC3B;AACA;AACA;AACA,UAAU,iDAAiD,iDAAS,EAAE;AACtE,UAAU,+CAA+C,iDAAS,EAAE;AACpE,UAAU,+CAA+C,iDAAS,EAAE;AACpE,UAAU,+CAA+C,iDAAS,EAAE;AACpE,UAAU,+CAA+C,iDAAS,EAAE;AACpE,UAAU,gDAAgD,iDAAS,EAAE;AACrE,UAAU,gDAAgD,iDAAS,EAAE;AACrE,UAAU,gDAAgD,iDAAS,EAAE;AACrE,UAAU,iDAAiD,iDAAS,EAAE;AACtE,UAAU,iDAAiD,+CAAO,EAAE;AACpE,UAAU,+CAA+C,+CAAO,EAAE;AAClE,UAAU,+CAA+C,+CAAO,EAAE;AAClE,UAAU,+CAA+C,+CAAO,EAAE;AAClE,UAAU,+CAA+C,+CAAO,EAAE;AAClE,UAAU,gDAAgD,+CAAO,EAAE;AACnE,UAAU,gDAAgD,+CAAO,EAAE;AACnE,UAAU,gDAAgD,+CAAO,EAAE;AACnE,UAAU,iDAAiD,+CAAO,EAAE;AACpE;AACA,UAAU,+CAA+C,iDAAS,EAAE;AACpE,UAAU,+CAA+C,iDAAS,EAAE;AACpE,UAAU,+CAA+C,+CAAO,EAAE;AAClE,UAAU,+CAA+C,+CAAO,EAAE;AAClE;AACA,kDAAkD,sDAAS;AAC3D,sBAAsB,2CAAI;AAC1B,sBAAsB,2CAAI;AAC1B,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAAK;AAC3B,qBAAqB,sDAAS,GAAG,6CAA6C;AAC9E;AACA,yBAAyB,uDAAU;AACnC,0BAA0B,uDAAuD;AACjF,QAAQ,0DAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAAK;AAC3B;AACA,qBAAqB,sDAAS,GAAG,6CAA6C;AAC9E;AACA,yBAAyB,uDAAU;AACnC,oBAAoB,4EAA4E;AAChG,QAAQ,0DAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAAK;AAC3B;AACA,qBAAqB,sDAAS,GAAG,6CAA6C;AAC9E;AACA,yBAAyB,uDAAU;AACnC,wBAAwB,4EAA4E;AACpG,QAAQ,0DAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA,mBAAmB,sDAAS,GAAG,4CAA4C;AAC3E,YAAY,0DAAW;AACvB;AACA;AACA;AACA;AACA,gBAAgB,uBAAuB;AACvC,mBAAmB,sDAAS,GAAG,sCAAsC;AACrE,YAAY,0DAAW;AACvB;AACA;AACA;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA,sBAAsB,8CAAK;AAC3B;AACA,qBAAqB,sDAAS,GAAG,6CAA6C;AAC9E;AACA,yBAAyB,uDAAU;AACnC,wBAAwB,4EAA4E;AACpG,QAAQ,0DAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAAK;AAC3B,qBAAqB,sCAAsC;AAC3D;AACA;AACA;AACA;AACA,UAAU,8CAA8C,iDAAS,EAAE;AACnE,UAAU,8CAA8C,iDAAS,EAAE;AACnE;AACA,UAAU,8CAA8C,iDAAS,EAAE;AACnE;AACA,UAAU,8CAA8C,iDAAS,EAAE;AACnE,UAAU,8CAA8C,iDAAS,EAAE;AACnE;AACA,UAAU,8CAA8C,+CAAO,EAAE;AACjE,UAAU,8CAA8C,+CAAO,EAAE;AACjE;AACA,UAAU,8CAA8C,iDAAS,EAAE;AACnE,UAAU,qDAAqD,iDAAS,EAAE;AAC1E;AACA,UAAU,qDAAqD,iDAAS,EAAE;AAC1E;AACA,UAAU,qDAAqD,iDAAS,EAAE;AAC1E;AACA,+CAA+C,sDAAS;AACxD,sBAAsB,2CAAI;AAC1B,sBAAsB,2CAAI;AAC1B,sBAAsB,2CAAI;AAC1B,sBAAsB,2CAAI;AAC1B,gCAAgC;AAChC,qBAAqB,wCAAwC;AAC7D,mCAAmC,qBAAqB;AACxD,iCAAiC,sBAAsB;AACvD,iCAAiC,uBAAuB;AACxD,mCAAmC,4BAA4B;AAC/D,6BAA6B,4CAA4C;AACzE,qBAAqB,oCAAoC;AACzD,uCAAuC,gEAAgE;AACvG,iCAAiC,4CAA4C;AAC7E,IAAI,mEAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAAK;AAC3B;AACA,oBAAoB,8CAA8C,+CAAO,EAAE;AAC3E,oBAAoB,8CAA8C,+CAAO,EAAE;AAC3E,oBAAoB,+CAA+C,+CAAO,EAAE;AAC5E,oBAAoB,+CAA+C,+CAAO,EAAE;AAC5E,oBAAoB,+CAA+C,+CAAO,EAAE;AAC5E,oBAAoB,gDAAgD,+CAAO,EAAE;AAC7E,oBAAoB,8CAA8C,+CAAO,EAAE;AAC3E,oBAAoB,8CAA8C,+CAAO,EAAE;AAC3E,oBAAoB,+CAA+C,+CAAO,EAAE;AAC5E,oBAAoB,+BAA+B;AACnD,oBAAoB,+CAA+C,+CAAO,EAAE;AAC5E,oBAAoB,gDAAgD,+CAAO,EAAE;AAC7E;AACA,IAAI,wDAAkB,UAAU,WAAW;AAC3C,IAAI,wDAAkB,0BAA0B,WAAW;AAC3D;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAAK;AAC3B;AACA,oBAAoB,8CAA8C,iDAAS,EAAE;AAC7E,oBAAoB,8CAA8C,iDAAS,EAAE;AAC7E,oBAAoB,+CAA+C,iDAAS,EAAE;AAC9E,oBAAoB,+CAA+C,iDAAS,EAAE;AAC9E,oBAAoB,+CAA+C,iDAAS,EAAE;AAC9E,oBAAoB,gDAAgD,iDAAS,EAAE;AAC/E,oBAAoB,8CAA8C,iDAAS,EAAE;AAC7E,oBAAoB,8CAA8C,iDAAS,EAAE;AAC7E,oBAAoB,+CAA+C,iDAAS,EAAE;AAC9E,oBAAoB,+CAA+C,iDAAS,EAAE;AAC9E,oBAAoB,+CAA+C,iDAAS,EAAE;AAC9E,oBAAoB,gDAAgD,iDAAS,EAAE;AAC/E;AACA,IAAI,wDAAkB,eAAe,WAAW;AAChD;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAAK;AAC3B;AACA,oBAAoB,8CAA8C,+CAAO,EAAE;AAC3E,oBAAoB,+CAA+C,+CAAO,EAAE;AAC5E,oBAAoB,+CAA+C,+CAAO,EAAE;AAC5E,oBAAoB,+CAA+C,+CAAO,EAAE;AAC5E,oBAAoB,gDAAgD,+CAAO,EAAE;AAC7E,oBAAoB,8CAA8C,+CAAO,EAAE;AAC3E,oBAAoB,+CAA+C,+CAAO,EAAE;AAC5E,oBAAoB,+BAA+B;AACnD,oBAAoB,+CAA+C,+CAAO,EAAE;AAC5E,oBAAoB,gDAAgD,+CAAO,EAAE;AAC7E;AACA,IAAI,wDAAkB,eAAe,WAAW;AAChD,IAAI,wDAAkB,mCAAmC,WAAW;AACpE,qBAAqB,2CAAI;AACzB;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAAK;AAC3B;AACA,oBAAoB,8CAA8C,iDAAS,EAAE;AAC7E,oBAAoB,+CAA+C,iDAAS,EAAE;AAC9E,oBAAoB,+CAA+C,iDAAS,EAAE;AAC9E,oBAAoB,+CAA+C,iDAAS,EAAE;AAC9E,oBAAoB,gDAAgD,iDAAS,EAAE;AAC/E,oBAAoB,8CAA8C,iDAAS,EAAE;AAC7E,oBAAoB,+CAA+C,iDAAS,EAAE;AAC9E,oBAAoB,+CAA+C,iDAAS,EAAE;AAC9E,oBAAoB,+CAA+C,iDAAS,EAAE;AAC9E,oBAAoB,gDAAgD,iDAAS,EAAE;AAC/E;AACA,IAAI,wDAAkB,eAAe,WAAW;AAChD,qBAAqB,2CAAI;AACzB;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2EAAwB;AACvC;AACA,gCAAgC,2BAA2B;AAC3D;AACA;AACA;AACA,mEAAmE,YAAY;AAC/E;AACA;AACA,KAAK;AACL;AACA;AACA,gCAAgC,4BAA4B;AAC5D;AACA;AACA,KAAK;AACL,gCAAgC,4BAA4B;AAC5D;AACA;AACA,KAAK;AACL,gCAAgC,4BAA4B;AAC5D;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,eAAe,2EAAwB;AACvC;AACA;AACA,iCAAiC,iCAAiC;AAClE;AACA;AACA;AACA,uEAAuE,YAAY;AACnF;AACA;AACA,SAAS;AACT;AACA;AACA,6BAA6B,kCAAkC;AAC/D;AACA;AACA,SAAS;AACT,6BAA6B,kCAAkC;AAC/D;AACA;AACA,SAAS;AACT,6BAA6B,kCAAkC;AAC/D;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2EAAwB;AACvC;AACA,gCAAgC,2BAA2B;AAC3D;AACA;AACA;AACA;AACA;AACA,mEAAmE,YAAY;AAC/E;AACA;AACA,KAAK;AACL;AACA;AACA,gCAAgC,4BAA4B;AAC5D;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,4BAA4B;AAC5D;AACA;AACA,KAAK;AACL,gCAAgC,4BAA4B;AAC5D;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,0BAA0B;AACtD,+BAA+B,mDAAmD;AAClF;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,0BAA0B;AACtD;AACA,qBAAqB,mDAAmD;AACxE,yBAAyB,2DAAY;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,0BAA0B;AACtD;AACA,qBAAqB,mDAAmD;AACxE,yBAAyB,uDAAU,gDAAgD,0EAA6B;AAChH;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,0BAA0B;AACtD;AACA,mBAAmB,+DAAc;AACjC;AACA;AACA,qBAAqB,gEAAgE;AACrF,yBAAyB,uDAAU;AACnC,0BAA0B,iDAAM;AAChC,yBAAyB,uDAAU;AACnC,oCAAoC,kEAAsB;AAC1D,oCAAoC,kEAAsB;AAC1D,oCAAoC,mEAAuB;AAC3D,yBAAyB,4DAAY,kBAAkB,mEAAuB;AAC9E,IAAI,wDAAkB,WAAW,WAAW;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,0BAA0B;AACtD;AACA,gCAAgC,mDAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC;AACA,yCAAyC,WAAW;AACpD,aAAa,eAAe;AAC5B,6BAA6B,aAAa;AAC1C,6BAA6B,aAAa;AAC1C;AACA;AACA;AACA;AACA,wEAAqB;AACK;;;;;;;;;;;;;;;;;AC98B1B;AACA;AACA;AACA;AACsD;AACnB;AACnC;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2EAAwB;AAChD;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,cAAc;AACzE;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;AACD,0DAA0D,cAAc;AACxE;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;AACD,2DAA2D,YAAY;AACvE;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;AACD,+DAA+D,cAAc;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;AACD,+DAA+D,cAAc;AAC7E;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;AACD,iEAAiE,cAAc;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;AACD,iEAAiE,cAAc;AAC/E;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;AACD,qEAAqE,cAAc;AACnF;AACA;AACA;AACA;AACA;AACA,mBAAmB,WAAW,gDAAS,EAAE;AACzC,KAAK;AACL,CAAC;AACD,mEAAmE,cAAc;AACjF;AACA;AACA;AACA;AACA;AACA,mBAAmB,WAAW,8CAAO,EAAE;AACvC,KAAK;AACL,CAAC;AACD,wEAAqB;AACI;;;;;;;;;;;;;;;;;;;;;ACnHzB;AACA;AACA;AACA;AACsD;AACjB;AACM;AACN;AACa;AACV;AACxC;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA,6EAA6E,mBAAmB;AAChG;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,6BAA6B,YAAY,gBAAgB,iEAAkB;AAC3E,4FAA4F,cAAc;AAC1G;AACA,sCAAsC,gCAAgC;AACtE,sCAAsC,+BAA+B;AACrE,sCAAsC,gCAAgC;AACtE;AACA,oCAAoC,WAAW;AAC/C,sCAAsC,gCAAgC;AACtE,oCAAoC,WAAW;AAC/C;AACA,wBAAwB,gCAAgC;AACxD;AACA,wBAAwB,oEAAyB;AACjD;AACA,sCAAsC,+BAA+B;AACrE,sCAAsC,+BAA+B;AACrE,oCAAoC,WAAW;AAC/C;AACA,sCAAsC,gCAAgC;AACtE,sCAAsC,gCAAgC;AACtE,sCAAsC,gCAAgC;AACtE;AACA;AACA;AACA;AACA,iBAAiB,oEAAoE;AACrF,uBAAuB,iEAAkB;AACzC,qFAAqF,YAAY;AACjG;AACA,sCAAsC,gCAAgC;AACtE,sCAAsC,+BAA+B;AACrE,sCAAsC,gCAAgC;AACtE;AACA,oCAAoC,WAAW;AAC/C,sCAAsC,gCAAgC;AACtE,oCAAoC,WAAW;AAC/C;AACA,wBAAwB,gCAAgC;AACxD;AACA;AACA;AACA,sCAAsC,+BAA+B;AACrE,oCAAoC,WAAW;AAC/C;AACA,sCAAsC,gCAAgC;AACtE,sCAAsC,gCAAgC;AACtE,sCAAsC,gCAAgC;AACtE;AACA;AACA;AACA;AACA,iBAAiB,oEAAoE;AACrF,uBAAuB,8DAAe;AACtC;AACA;AACA,sCAAsC,gCAAgC;AACtE,sCAAsC,gCAAgC;AACtE,sCAAsC,+BAA+B;AACrE,sCAAsC,gCAAgC;AACtE,4CAA4C,aAAa;AACzD;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,6BAA6B,YAAY,gBAAgB,iEAAkB;AAC3E,qFAAqF,cAAc;AACnG;AACA,mCAAmC,+BAA+B;AAClE,mCAAmC,+BAA+B;AAClE,mCAAmC,+BAA+B;AAClE;AACA,oCAAoC,WAAW;AAC/C,mCAAmC,+BAA+B;AAClE,mCAAmC,+BAA+B;AAClE,oCAAoC,WAAW;AAC/C,mCAAmC,+BAA+B;AAClE;AACA,mCAAmC,gCAAgC;AACnE,mCAAmC,+BAA+B;AAClE,sCAAsC,+BAA+B;AACrE,mCAAmC,gCAAgC;AACnE,oCAAoC,WAAW;AAC/C;AACA,mCAAmC,gCAAgC;AACnE,sCAAsC,gCAAgC;AACtE,mCAAmC,gCAAgC;AACnE,sCAAsC,gCAAgC;AACtE,mCAAmC,gCAAgC;AACnE,sCAAsC,gCAAgC;AACtE;AACA;AACA;AACA;AACA,iBAAiB,oEAAoE;AACrF,uBAAuB,8DAAe;AACtC;AACA;AACA,KAAK;AACL;AACA,mCAAmC,gCAAgC;AACnE,mCAAmC,+BAA+B;AAClE,sCAAsC,gCAAgC;AACtE,mCAAmC,gCAAgC;AACnE;AACA,oCAAoC,WAAW;AAC/C,mCAAmC,gCAAgC;AACnE,mCAAmC,+BAA+B;AAClE,oCAAoC,WAAW;AAC/C,mCAAmC,+BAA+B;AAClE;AACA,mCAAmC,gCAAgC;AACnE,mCAAmC,+BAA+B;AAClE,sCAAsC,+BAA+B;AACrE,mCAAmC,gCAAgC;AACnE,oCAAoC,WAAW;AAC/C;AACA,mCAAmC,gCAAgC;AACnE,sCAAsC,gCAAgC;AACtE,mCAAmC,gCAAgC;AACnE,sCAAsC,gCAAgC;AACtE,mCAAmC,gCAAgC;AACnE,sCAAsC,gCAAgC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,qFAAqF,YAAY;AACjG;AACA,0BAA0B,gDAAM;AAChC,mCAAmC,+BAA+B;AAClE,mCAAmC,+BAA+B;AAClE,mCAAmC,+BAA+B;AAClE,sCAAsC,+BAA+B;AACrE,sCAAsC,gCAAgC;AACtE;AACA,0BAA0B,gDAAM;AAChC,sCAAsC,gCAAgC;AACtE,sCAAsC,gCAAgC;AACtE,oCAAoC,WAAW;AAC/C,oCAAoC,WAAW;AAC/C,oCAAoC,WAAW;AAC/C;AACA,0BAA0B,gDAAM;AAChC,mCAAmC,+BAA+B;AAClE,mCAAmC,gCAAgC;AACnE,sCAAsC,gCAAgC;AACtE,mCAAmC,+BAA+B;AAClE,sCAAsC,gCAAgC;AACtE;AACA,0BAA0B,gDAAM;AAChC,sCAAsC,+BAA+B;AACrE,sCAAsC,gCAAgC;AACtE,qEAAqE,cAAc;AACnF;AACA,mCAAmC,+BAA+B;AAClE,sCAAsC,gCAAgC;AACtE,yCAAyC,WAAW;AACpD,wCAAwC,+BAA+B;AACvE;AACA,2CAA2C,+BAA+B;AAC1E;AACA;AACA;AACA;AACA,aAAa,2BAA2B;AACxC,aAAa,2BAA2B;AACxC;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,2BAA2B;AAC3B,sBAAsB,sDAAc,uBAAuB;AAC3D;AACA,sBAAsB,oFAAoF;AAC1G,sBAAsB,oFAAoF;AAC1G,sBAAsB,qFAAqF;AAC3G,sBAAsB,qFAAqF;AAC3G;AACA;AACA,mCAAmC,+BAA+B;AAClE,oCAAoC,WAAW;AAC/C,mCAAmC,+BAA+B;AAClE,sCAAsC,+BAA+B;AACrE,oCAAoC,WAAW;AAC/C,mCAAmC,+BAA+B;AAClE,oCAAoC,WAAW;AAC/C,mCAAmC,+BAA+B;AAClE,oCAAoC,WAAW;AAC/C,mCAAmC,gCAAgC;AACnE,sCAAsC,gCAAgC;AACtE,oCAAoC,WAAW;AAC/C,mCAAmC,+BAA+B;AAClE,oCAAoC,WAAW;AAC/C;AACA,oCAAoC,WAAW;AAC/C,oCAAoC,WAAW;AAC/C,oCAAoC,WAAW;AAC/C,oCAAoC,WAAW;AAC/C,oCAAoC,WAAW;AAC/C,oCAAoC,WAAW;AAC/C;AACA,mCAAmC,+BAA+B;AAClE,oCAAoC,WAAW;AAC/C,mCAAmC,+BAA+B;AAClE,sCAAsC,+BAA+B;AACrE,oCAAoC,WAAW;AAC/C,mCAAmC,+BAA+B;AAClE,oCAAoC,WAAW;AAC/C,mCAAmC,+BAA+B;AAClE,oCAAoC,WAAW;AAC/C,mCAAmC,gCAAgC;AACnE,sCAAsC,gCAAgC;AACtE,oCAAoC,WAAW;AAC/C,mCAAmC,+BAA+B;AAClE,oCAAoC,WAAW;AAC/C;AACA,oCAAoC,WAAW;AAC/C,oCAAoC,WAAW;AAC/C,oCAAoC,WAAW;AAC/C,oCAAoC,WAAW;AAC/C,oCAAoC,WAAW;AAC/C,oCAAoC,WAAW;AAC/C;AACA;AACA;AACA,qCAAqC,4DAAoB;AACzD;AACA;AACA;AACA,iBAAiB,0CAA0C;AAC3D;AACA,uBAAuB,iEAAkB;AACzC;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACQ;;;;;;;;;;;;;;;;;ACnR7B;AACA;AACA;AACA;AACsD;AACK;AAC3D;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,6BAA6B,YAAY,gBAAgB,2DAAmB;AAC5E,qFAAqF,YAAY;AACjG,+BAA+B,8CAAM;AACrC;AACA,0BAA0B,8CAAM;AAChC,oCAAoC,WAAW;AAC/C,oCAAoC,WAAW;AAC/C,oCAAoC,WAAW;AAC/C,+BAA+B,8CAAM;AACrC,+BAA+B,8CAAM;AACrC;AACA;AACA;AACA;AACA,iBAAiB,oEAAoE;AACrF,uBAAuB,2DAAmB;AAC1C,qFAAqF,YAAY;AACjG,+BAA+B,8CAAM;AACrC,+BAA+B,8CAAM;AACrC,+BAA+B,8CAAM;AACrC;AACA,0BAA0B,8CAAM;AAChC,oCAAoC,YAAY;AAChD,oCAAoC,YAAY;AAChD,oCAAoC,YAAY;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,6BAA6B,oBAAoB,gBAAgB,2DAAmB;AACpF,2FAA2F,YAAY;AACvG;AACA,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC;AACA;AACA,8CAA8C,gCAAgC;AAC9E;AACA,+BAA+B,8CAAM;AACrC;AACA,0BAA0B,8CAAM;AAChC,oCAAoC,WAAW;AAC/C,oCAAoC,WAAW;AAC/C,oCAAoC,WAAW;AAC/C,oCAAoC,WAAW;AAC/C;AACA,0BAA0B,8CAAM;AAChC,oCAAoC,WAAW;AAC/C;AACA,+BAA+B,8CAAM;AACrC,6BAA6B,2BAA2B,sCAAsC;AAC9F,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,qFAAqF,YAAY;AACjG,+BAA+B,8CAAM;AACrC;AACA,0BAA0B,8CAAM;AAChC,oCAAoC,WAAW;AAC/C,oCAAoC,WAAW;AAC/C,+BAA+B,8CAAM;AACrC,+BAA+B,8CAAM;AACrC,qEAAqE,cAAc;AACnF,aAAa,2BAA2B;AACxC,aAAa,2BAA2B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA,qFAAqF,YAAY;AACjG,+BAA+B,8CAAM,MAAM,mBAAmB;AAC9D,+BAA+B,8CAAM;AACrC,+BAA+B,8CAAM,MAAM,mBAAmB;AAC9D,+BAA+B,8CAAM;AACrC,qDAAqD,cAAc;AACnE,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA,kCAAkC,8CAAM,MAAM,mBAAmB;AACjE,kCAAkC,8CAAM;AACxC,kCAAkC,8CAAM,MAAM,mBAAmB;AACjE,kCAAkC,8CAAM;AACxC;AACA,oBAAoB,cAAc,iBAAiB,kBAAkB;AACrE,oBAAoB,cAAc,iBAAiB,kBAAkB;AACrE,oBAAoB,cAAc,iBAAiB,kBAAkB;AACrE,oBAAoB,cAAc,iBAAiB,kBAAkB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,YAAY;;AAE1C;AACA;AACA;AACA,UAAU,iBAAiB;AAC3B,UAAU,iBAAiB;AAC3B,UAAU,kBAAkB;AAC5B;AACA;AACA,KAAK;AACL;AACA;AACA,UAAU,iBAAiB;AAC3B,UAAU,iBAAiB;AAC3B,UAAU,iBAAiB;AAC3B;AACA;AACA,KAAK;AACL;AACA;AACA,UAAU,iBAAiB;AAC3B,UAAU,iBAAiB;AAC3B,UAAU,iBAAiB;AAC3B,UAAU,iBAAiB;AAC3B,UAAU,iBAAiB;AAC3B,UAAU,iBAAiB;AAC3B;AACA;AACA,KAAK;AACL;AACA;AACA,UAAU,iBAAiB;AAC3B,UAAU,iBAAiB;AAC3B,UAAU,iBAAiB;AAC3B;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,8BAA8B,kDAAkD;;AAEhF;AACA;AACA;AACA,UAAU,iBAAiB;AAC3B,UAAU,iBAAiB;AAC3B,UAAU,iBAAiB;AAC3B;AACA;AACA,KAAK;AACL;AACA;AACA,UAAU,iBAAiB;AAC3B,UAAU,iBAAiB;AAC3B,UAAU,iBAAiB;AAC3B,UAAU,iBAAiB;AAC3B,UAAU,iBAAiB;AAC3B,UAAU,iBAAiB;AAC3B;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,0BAA0B;AACtD;AACA;AACA,yBAAyB,gEAAgE;AACzF,wCAAwC,WAAW;AACnD,wCAAwC,WAAW;AACnD,sBAAsB,yDAAyD;AAC/E,sBAAsB,sEAAsE;AAC5F;AACA,yBAAyB,oFAAoF;AAC7G,wCAAwC,WAAW;AACnD,sBAAsB,sEAAsE;AAC5F;AACA,yBAAyB,oFAAoF;AAC7G,wCAAwC,WAAW;AACnD,wCAAwC,WAAW;AACnD;AACA;AACA,oBAAoB,qCAAqC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT,6BAA6B,4CAAI;AACjC;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT,6BAA6B,4CAAI;AACjC;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA,8BAA8B,8CAAM;AACpC,8BAA8B,8CAAM;AACpC,8BAA8B,8CAAM;AACpC,8BAA8B,8CAAM;AACpC,8BAA8B,8CAAM;AACpC,8BAA8B,8CAAM;AACpC,iCAAiC,8CAAM;AACvC,iCAAiC,8CAAM;AACvC,iCAAiC,8CAAM;AACvC,iCAAiC,8CAAM;AACvC,iCAAiC,8CAAM;AACvC,iCAAiC,8CAAM;AACvC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kBAAkB,6DAAqB;AACvC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,wEAAqB;AACG;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtXxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACsD;AACP;AACI;AAChB;AACU;AACM;AACA;AACR;AACkB;AACrB;AACC;AACE;AACU;AACrD;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA,KAAK;AACL;AACA;AACA,yEAAyE,kCAAkC;AAC3G;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,0BAA0B;AACtD;AACA,uBAAuB,2DAAY;AACnC;AACA;AACA;AACA,uCAAuC,2EAA2B,EAAE,uEAAsB;AAC1F;AACA;AACA;AACA,yBAAyB,+DAA+D;AACxF,wCAAwC,WAAW;AACnD,wCAAwC,WAAW;AACnD;AACA,yBAAyB,+DAA+D;AACxF,wCAAwC,WAAW;AACnD,wCAAwC,WAAW;AACnD,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE;AACA,yBAAyB,6BAA6B;AACtD;AACA,sBAAsB,gBAAgB,kBAAkB,uDAAU;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,2DAAY;AACvC,2BAA2B,mDAAQ;AACnC,2BAA2B,uDAAU;AACrC,2BAA2B,2DAAY,eAAe,WAAW,iBAAiB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,oDAAQ;AAC9B;AACA;AACA,wCAAwC,kDAAO;AAC/C;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS,kBAAkB,uDAAU;AACrC;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT,6BAA6B,2CAAI;AACjC,8BAA8B,gDAAM,MAAM,mBAAmB;AAC7D;AACA,IAAI,mEAAuB;AAC3B;AACA;AACA,wEAAqB;AACC;;;;;;;;;;;;;;;;;;;;;;;;;ACxHtB;AACA;AACA;AACA;AACsD;AACrB;AACE;AACY;AACF;AACR;AACI;AACE;AACM;AACD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,sBAAsB,sDAAe;AACrC,mBAAmB,iDAAO,GAAG,cAAc,iBAAiB,kBAAkB;AAC9E;AACA,eAAe,iDAAO,GAAG,cAAc,iBAAiB,kBAAkB;AAC1E;AACA;AACA;AACA,qBAAqB,iDAAO;AAC5B;AACA,cAAc,iBAAiB;AAC/B,cAAc,iBAAiB;AAC/B;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iDAAO;AAC5B;AACA,cAAc,iBAAiB;AAC/B,cAAc,iBAAiB;AAC/B;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,qBAAqB,iDAAO;AAC5B;AACA,cAAc,iBAAiB;AAC/B,cAAc,iBAAiB;AAC/B;AACA;AACA,KAAK;AACL,4BAA4B,yDAAW;AACvC;AACA;AACA;AACA;AACA;AACA,sBAAsB,mDAAQ;AAC9B;AACA;AACA;AACA,UAAU,cAAc,iBAAiB,kBAAkB;AAC3D;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,mBAAmB;AACrC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,mBAAmB;AACrC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,4BAA4B,iDAAO;AACnC,gCAAgC,yDAAW;AAC3C;AACA;AACA;AACA;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mDAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,4BAA4B,iDAAO;AACnC;AACA;AACA,KAAK;AACL,sBAAsB,6CAAK,CAAC,mDAAY,UAAU,sDAAc;AAChE;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mDAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,4BAA4B,iDAAO;AACnC;AACA;AACA;AACA,KAAK;AACL,sBAAsB,6CAAK,CAAC,mDAAY,UAAU,sDAAc;AAChE;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mDAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,4BAA4B,iDAAO;AACnC;AACA;AACA;AACA,KAAK;AACL,gBAAgB,sDAAe,MAAM,sDAAe;AACpD,sBAAsB,6CAAK,CAAC,mDAAY,UAAU,sDAAc;AAChE;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mDAAQ,gBAAgB,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,4BAA4B,iDAAO;AACnC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,sBAAsB,6CAAK,CAAC,mDAAY,UAAU,sDAAc;AAChE;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mDAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA,SAAS;AACT;AACA,4CAA4C,iDAAO;AACnD,IAAI,wDAAkB;AACtB,sBAAsB,6CAAK,CAAC,mDAAY,UAAU,sDAAc;AAChE;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA,wEAAqB;AACG;;;;;;;;;;;;;;;;;;;;;;AC9dxB;AACA;AACA;AACA;AACsD;AACnB;AACU;AACJ;AACE;AACA;AACN;AACrC;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,sBAAsB,6CAAK,CAAC,mDAAY;AACxC;AACA,QAAQ,qDAAS;AACjB;AACA,oBAAoB,mDAAQ;AAC5B;AACA;AACA;AACA;AACA,KAAK,EAAE,4DAAiB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mDAAQ;AAC9B,aAAa;AACb;AACA;AACA,oCAAoC,iDAAO;AAC3C;AACA;AACA;AACA;AACA;AACA,YAAY,iBAAiB;AAC7B;AACA,kBAAkB,cAAc,iBAAiB,kBAAkB;AACnE,kBAAkB,cAAc,iBAAiB,kBAAkB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iBAAiB;AAC7B;AACA,kBAAkB,cAAc,iBAAiB,kBAAkB;AACnE,kBAAkB,cAAc,iBAAiB,kBAAkB;AACnE;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT,kBAAkB,cAAc,kBAAkB,kBAAkB;AACpE,kBAAkB,cAAc,kBAAkB,kBAAkB;AACpE;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA,sBAAsB,6CAAK,CAAC,mDAAY;AACxC,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iEAAsB;AAC7C;AACA;AACA;AACA,uBAAuB,mEAAwB;AAC/C;AACA,wEAAqB;AACI;;;;;;;;;;;;;;;;;AClJzB;AACA;AACA;AACA;AACsD;AACX;AAC3C;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA,KAAK;AACL;AACA;AACA;AACA,sBAAsB,mDAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACI;;;;;;;;;;;;;;;;;;;;;;;AC1BzB;AACA;AACA;AACA;AACsD;AACP;AACZ;AACU;AACJ;AACE;AACJ;AACF;AACrC;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,oCAAoC,iDAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,yEAAsB;AACnD,sBAAsB,mDAAQ;AAC9B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK,CAAC,mDAAY;AACxC;AACA,QAAQ,qDAAS;AACjB;AACA,oBAAoB,+CAAM;AAC1B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iBAAiB;AAC7B,4BAA4B,cAAc,iBAAiB,kBAAkB;AAC7E,4BAA4B,cAAc,iBAAiB,kBAAkB;AAC7E;AACA;AACA;AACA;AACA;AACA,uBAAuB,8DAAqB;AAC5C;AACA;AACA;AACA,uBAAuB,6DAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA,YAAY,iBAAiB;AAC7B;AACA,kBAAkB,cAAc,iBAAiB,kBAAkB;AACnE,kBAAkB,cAAc,iBAAiB,kBAAkB;AACnE;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT,kBAAkB,cAAc,kBAAkB,kBAAkB;AACpE,kBAAkB,cAAc,kBAAkB,kBAAkB;AACpE;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,kBAAkB;AACpC;AACA;AACA,SAAS;AACT;AACA,sBAAsB,6CAAK,CAAC,mDAAY;AACxC,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iBAAiB;AAC7B,4BAA4B,cAAc,kBAAkB,kBAAkB,kBAAkB,uDAAU;AAC1G,4BAA4B,cAAc,kBAAkB,kBAAkB;AAC9E;AACA;AACA;AACA;AACA;AACA,YAAY,iBAAiB;AAC7B;AACA,kBAAkB,cAAc,iBAAiB,kBAAkB;AACnE,kBAAkB,cAAc,iBAAiB,kBAAkB;AACnE,kBAAkB,cAAc,iBAAiB,kBAAkB;AACnE;AACA,sBAAsB,6CAAK,CAAC,mDAAY;AACxC,QAAQ,qDAAS;AACjB;AACA,IAAI,8DAAqB;AACzB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI,6DAAoB;AACxB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,wEAAqB;AACE;;;;;;;;;;;;;;;;AChMvB;AACA;AACA;AACA;AACsD;AACtD;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA,KAAK;AACL;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,wDAAwD,YAAY;AACpE,uCAAuC,aAAa;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,wDAAwD,YAAY;AACpE,uCAAuC,aAAa;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,8DAA8D;AACtF,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,UAAU;AAClC,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACO;;;;;;;;;;;;;;;;;ACxG5B;AACA;AACA;AACA;AACsD;AACD;AACrD;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,+BAA+B,6EAA6B;AAC5D;AACA;AACA;AACA;AACA,kCAAkC,qEAAqB;AACvD;AACA,uCAAuC,oEAAoB,GAAG,yCAAyC;AACvG;AACA;AACA,mCAAmC,oEAAoB,GAAG,uDAAuD;AACjH;AACA;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACS;;;;;;;;;;;;;;;;;;;;;;ACjC9B;AACA;AACA;AACA;AACsD;AACT;AACV;AACA;AACA;AACE;AACM;AAC3C;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,OAAO;AACnC;AACA;AACA;AACA,yBAAyB,gEAAgE;AACzF,wCAAwC,WAAW;AACnD,wCAAwC,WAAW;AACnD,sBAAsB,gEAAgE;AACtF;AACA,yBAAyB,gEAAgE;AACzF,wCAAwC,WAAW;AACnD,wCAAwC,WAAW;AACnD;AACA;AACA,qBAAqB,6CAA6C,mBAAmB,wEAA6B;AAClH,qBAAqB,oCAAoC;AACzD,qBAAqB,8BAA8B,mBAAmB,uEAA4B;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,OAAO;AACnC;AACA;AACA,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,kDAAkD;AACxE,sBAAsB,mDAAmD;AACzE,sBAAsB,mDAAmD;AACzE,sBAAsB,mDAAmD;AACzE,sBAAsB,0DAA0D;AAChF,sBAAsB,0DAA0D;AAChF,sBAAsB,0DAA0D;AAChF,sBAAsB,yDAAyD;AAC/E,sBAAsB,yDAAyD;AAC/E,sBAAsB,yDAAyD;AAC/E,sBAAsB,wDAAwD;AAC9E;AACA;AACA,qBAAqB,2BAA2B,mBAAmB,wEAA6B;AAChG,qBAAqB,2BAA2B;AAChD,qBAAqB,2BAA2B,mBAAmB,uEAA4B;AAC/F,qBAAqB,2BAA2B,mBAAmB,wEAA6B;AAChG,qBAAqB,2BAA2B;AAChD,qBAAqB,2BAA2B,mBAAmB,uEAA4B;AAC/F,qBAAqB,2BAA2B,mBAAmB,wEAA6B;AAChG,qBAAqB,2BAA2B;AAChD,qBAAqB,2BAA2B,mBAAmB,uEAA4B;AAC/F,qBAAqB,2BAA2B,mBAAmB,wEAA6B;AAChG,qBAAqB,2BAA2B;AAChD,qBAAqB,2BAA2B,mBAAmB,uEAA4B;AAC/F,qBAAqB,0BAA0B,mBAAmB,uEAA4B;AAC9F;AACA;AACA,4CAA4C,uDAAgB;AAC5D;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,OAAO;AACnC;AACA;AACA;AACA,yBAAyB,+DAA+D;AACxF,wCAAwC,WAAW;AACnD,wCAAwC,WAAW;AACnD,sBAAsB,+DAA+D;AACrF;AACA,yBAAyB,+DAA+D;AACxF,wCAAwC,WAAW;AACnD,wCAAwC,WAAW;AACnD;AACA;AACA,qBAAqB,MAAM,wDAAiB,0CAA0C;AACtF,qBAAqB,YAAY,yDAAkB,8CAA8C;AACjG,qBAAqB,6DAA6D;AAClF,qBAAqB,wBAAwB,4DAAqB,sCAAsC;AACxG,qBAAqB,0BAA0B,mEAA4B,uBAAuB;AAClG,qBAAqB,4CAA4C;AACjE;AACA,+BAA+B,wDAAiB;AAChD;AACA;AACA;AACA,2BAA2B,QAAQ,iDAAU,YAAY;AACzD;AACA,kCAAkC,sEAA2B;AAC7D,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,OAAO;AACnC;AACA;AACA;AACA,yBAAyB,gEAAgE;AACzF,wCAAwC,WAAW;AACnD,wCAAwC,WAAW;AACnD,sBAAsB,gEAAgE;AACtF,sBAAsB,gEAAgE;AACtF,sBAAsB,gEAAgE;AACtF,sBAAsB,gEAAgE;AACtF;AACA;AACA,qBAAqB,+BAA+B,mBAAmB,wEAA6B;AACpG,qBAAqB,2BAA2B;AAChD,qBAAqB,2BAA2B;AAChD,qBAAqB,2BAA2B;AAChD,qBAAqB,2BAA2B;AAChD,qBAAqB,wCAAwC;AAC7D,qBAAqB,wCAAwC;AAC7D,qBAAqB,+BAA+B;AACpD,qBAAqB,8BAA8B;AACnD;AACA,4DAA4D,wEAA6B;AACzF;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,OAAO;AACnC;AACA;AACA;AACA,yBAAyB,gEAAgE;AACzF,wCAAwC,WAAW;AACnD,wCAAwC,WAAW;AACnD,sBAAsB,gEAAgE;AACtF,sBAAsB,gEAAgE;AACtF,sBAAsB,gEAAgE;AACtF,sBAAsB,gEAAgE;AACtF;AACA;AACA,qBAAqB,+BAA+B;AACpD,qBAAqB,wCAAwC;AAC7D,qBAAqB,oCAAoC;AACzD,qBAAqB,qCAAqC;AAC1D,qBAAqB,wCAAwC;AAC7D,qBAAqB,0CAA0C;AAC/D,qBAAqB,gCAAgC;AACrD,qBAAqB,8BAA8B;AACnD,qBAAqB,0CAA0C,mBAAmB,wEAA6B;AAC/G;AACA,4DAA4D,wEAA6B;AACzF;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,OAAO;AACnC;AACA;AACA,qBAAqB,4BAA4B;AACjD,YAAY,qDAAS,GAAG,gBAAgB;AACxC,qBAAqB,4BAA4B;AACjD,YAAY,qDAAS,GAAG,eAAe;AACvC,YAAY,qDAAS,GAAG,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,yBAAyB,4BAA4B;AACrD,yBAAyB,4BAA4B;AACrD,yBAAyB,2BAA2B;AACpD,yBAAyB,4BAA4B;AACrD,yBAAyB,4BAA4B;AACrD,yBAAyB,2BAA2B;AACpD,yBAAyB,4BAA4B;AACrD,SAAS,aAAa;AACtB;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,4BAA4B,sBAAsB,4DAAoB,EAAE;AACxE;AACA;AACA;AACA;AACA,wEAAqB;AACI;;;;;;;;;;;;;;;;;AC/NzB;AACA;AACA;AACA;AAC8D;AAC3B;AACnC;AACA;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2EAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAqB;AACjC,YAAY,4DAAqB;AACjC,YAAY,4DAAqB;AACjC,iBAAiB,yDAAM;AACvB;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,YAAY,2EAA2E,cAAc,0BAA0B,cAAc;AACvM,0DAA0D,+BAA+B;AACzF;AACA;AACA,mCAAmC,+BAA+B;AAClE,mCAAmC,+BAA+B;AAClE,CAAC;AACD;AACA;AACA;AACA,wFAAwF,YAAY,wFAAwF,cAAc,gCAAgC,cAAc;AACxP;AACA;AACA,mCAAmC,+BAA+B;AAClE,mCAAmC,gCAAgC;AACnE;AACA;AACA,mCAAmC,+BAA+B;AAClE,mCAAmC,+BAA+B;AAClE,CAAC;AACD;AACA;AACA;AACA,0EAA0E,YAAY,0CAA0C,cAAc,0BAA0B,cAAc;AACtL;AACA;AACA,mCAAmC,+BAA+B;AAClE,mCAAmC,+BAA+B;AAClE,0DAA0D,+BAA+B;AACzF,0DAA0D,+BAA+B;AACzF,CAAC;AACD;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA;AACA,gCAAgC,2BAA2B;AAC3D;AACA;AACA,iGAAiG,YAAY;AAC7G;AACA;AACA,aAAa;AACb,0BAA0B,2DAA2D;AACrF;AACA;AACA,6BAA6B,4DAAqB,uBAAuB,4DAAqB;AAC9F,wEAAwE,aAAa;AACrF;AACA;AACA;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA,gCAAgC,2BAA2B;AAC3D;AACA,kFAAkF,YAAY,KAAK,aAAa;AAChH,oFAAoF,cAAc,KAAK,aAAa;AACpH,kFAAkF,cAAc,KAAK,aAAa;AAClH;AACA,6BAA6B,2DAA2D;AACxF,6BAA6B,iDAAiD;AAC9E,iBAAiB,aAAa;AAC9B;AACA,wEAAwE,aAAa;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA;AACA,gCAAgC,2BAA2B;AAC3D;AACA,oFAAoF,aAAa;AACjG,sFAAsF,aAAa;AACnG,oFAAoF,aAAa;AACjG,sCAAsC,2DAA2D,MAAM,aAAa;AACpH;AACA,wEAAwE,aAAa;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACO;;;;;;;;;;;;;;;;;;;ACtJ5B;AACA;AACA;AACA;AACsD;AACnB;AACc;AACV;AACvC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,mBAAmB,yDAAW;AAC9B;AACA;AACA;AACA,sBAAsB,sDAAe;AACrC;AACA,YAAY,gDAAY;AACxB,YAAY,gDAAY;AACxB,YAAY,gDAAY;AACxB;AACA,mBAAmB,yDAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACO;;;;;;;;;;;;;;;;;;;ACvC5B;AACA;AACA;AACA;AACsD;AACjB;AACkB;AACF;AACrD;AACA;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,wBAAwB,6DAAa;AACrC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6CAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6CAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6CAAK;AACb;AACA;AACA;AACA;AACA,QAAQ,6CAAK;AACb;AACA;AACA;AACA;AACA,QAAQ,6CAAK;AACb;AACA;AACA;AACA;AACA,QAAQ,6CAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6CAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,kBAAkB;AACtE,oFAAoF,SAAS;AAC7F,uBAAuB,6CAAK;AAC5B;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAK;AAC5B,uBAAuB,6CAAK;AAC5B,QAAQ,+DAAc;AACtB,QAAQ,+DAAc;AACtB,QAAQ,+DAAc;AACtB;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,YAAY;AACxC;AACA,sBAAsB,8CAA8C;AACpE,wBAAwB,aAAa;AACrC,sBAAsB,4CAA4C;AAClE,sBAAsB,6CAA6C;AACnE,wBAAwB,WAAW;AACnC,sBAAsB,0DAA0D;AAChF,wBAAwB,aAAa;AACrC,sBAAsB,8CAA8C;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACS;;;;;;;;;;;;;;;;;;AC1I9B;AACA;AACA;AACA;AACsD;AACR;AACL;AACzC;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA,KAAK;AACL;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,6BAA6B,YAAY,gBAAgB,kEAAmB;AAC5E,qDAAqD,YAAY;AACjE,8BAA8B,iDAAO;AACrC,8BAA8B,iDAAO;AACrC,8BAA8B,iDAAO;AACrC;AACA;AACA;AACA;AACA,iBAAiB,oEAAoE;AACrF,uBAAuB,kEAAmB;AAC1C,qDAAqD,cAAc;AACnE,8BAA8B,iDAAO;AACrC,8BAA8B,iDAAO;AACrC,8BAA8B,iDAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC;AACA;AACA,6BAA6B,YAAY,gBAAgB,kEAAmB;AAC5E,qDAAqD,YAAY;AACjE,yBAAyB,iDAAO;AAChC;AACA;AACA,yBAAyB,iDAAO;AAChC;AACA;AACA,yBAAyB,iDAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,oEAAoE;AACrF,uBAAuB,kEAAmB;AAC1C,qDAAqD,cAAc;AACnE,yBAAyB,iDAAO;AAChC;AACA;AACA,yBAAyB,iDAAO;AAChC;AACA;AACA,yBAAyB,iDAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACG;;;;;;;;;;;;;;;;;AClFxB;AACA;AACA;AACA;AACsD;AACf;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,+CAAM;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,+CAAM;AAC7B;AACA;AACA;AACA;AACA;AACA,uBAAuB,+CAAM;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACE;;;;;;;;;;;;;;;;;;;;ACtEvB;AACA;AACA;AACA;AACsD;AACrB;AACY;AACV;AACI;AACvC;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,8CAAO;AAC1C,qCAAqC,gDAAS;AAC9C;AACA;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,0BAA0B;AACtD;AACA,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC;AACA;AACA;AACA,eAAe,0BAA0B;AACzC,eAAe,0BAA0B;AACzC;AACA;AACA,iBAAiB,QAAQ,+BAA+B;AACxD;AACA;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,0BAA0B;AACtD;AACA,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC;AACA;AACA;AACA,aAAa,0BAA0B;AACvC,aAAa,2BAA2B;AACxC,eAAe,0BAA0B;AACzC,eAAe,2BAA2B;AAC1C;AACA;AACA,iBAAiB,QAAQ,+BAA+B;AACxD;AACA;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,0BAA0B;AACtD;AACA,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,cAAc;AAC1C;AACA,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,mBAAmB,UAAU,+DAAsB,EAAE;AACrD,KAAK;AACL;AACA;AACA,mBAAmB,UAAU,+DAAsB,EAAE;AACrD,KAAK;AACL;AACA,iBAAiB,QAAQ,+BAA+B;AACxD;AACA;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,cAAc;AAC1C;AACA,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,sBAAsB,+DAAsB;AAC5C;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,sBAAsB,+DAAsB;AAC5C;AACA,SAAS;AACT,KAAK;AACL;AACA,iBAAiB,QAAQ,+BAA+B;AACxD;AACA;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,cAAc;AAC1C;AACA,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC;AACA;AACA;AACA,aAAa,2BAA2B;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,cAAc;AAC1C;AACA,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,8BAA8B;AACxC,UAAU,+BAA+B;AACzC,UAAU,gCAAgC;AAC1C,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC;AACA;AACA;AACA,IAAI,wDAAkB,gBAAgB,WAAW;AACjD,sBAAsB,eAAe,IAAI,eAAe,IAAI,eAAe,IAAI,eAAe;AAC9F;AACA;AACA;AACA,aAAa,2BAA2B;AACxC,aAAa,2BAA2B;AACxC,aAAa,6BAA6B;AAC1C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,cAAc;AAC1C;AACA,UAAU,kCAAkC;AAC5C,UAAU,mCAAmC;AAC7C,UAAU,kCAAkC;AAC5C,UAAU,kCAAkC;AAC5C,UAAU,mCAAmC;AAC7C,UAAU,mCAAmC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,cAAc;AAC1C;AACA,UAAU,kCAAkC;AAC5C,UAAU,mCAAmC;AAC7C,UAAU,kCAAkC;AAC5C,UAAU,kCAAkC;AAC5C,UAAU,mCAAmC;AAC7C,UAAU,mCAAmC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,cAAc;AAC1C;AACA;AACA,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,+BAA+B;AACzC,UAAU,8BAA8B;AACxC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA,cAAc,2EAAwB;AACtC,4BAA4B,cAAc;AAC1C;AACA;AACA,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC,UAAU,8BAA8B;AACxC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,iBAAiB,QAAQ,+BAA+B;AACxD;AACA;AACA,QAAQ,qDAAS;AACjB;AACA;AACA;AACA,wEAAqB;AACE;;;;;;;;;;;;;;;;;;;;;ACrdvB;AACA;AACA;AACA;AACA;AACA;AACA;AACsD;AACD;AACR;AACQ;AACZ;AACuE;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kBAAkB,qDAAS,GAAG,8BAA8B;AAC5D,OAAO,2DAAW;AAClB,OAAO,0DAAU;AACjB,UAAU,yDAAS;AACnB,kBAAkB,iDAAO,GAAG,cAAc,iBAAiB,kBAAkB;AAC7E,OAAO,yDAAS;AAChB,UAAU,2DAAW;AACrB,OAAO,sDAAM;AACb,OAAO,+DAAe;AACtB,OAAO,sDAAM;AACb;AACA;AACA;AACA,oBAAoB,6DAAa;AACjC,OAAO,+DAAe;AACtB;AACA;AACA;AACA;AACA;AACA,OAAO,+DAAe;AACtB,UAAU,sDAAM;AAChB,OAAO,0DAAU;AACjB,OAAO,2DAAW;AAClB,OAAO,0DAAU;AACjB,UAAU,sDAAM;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,sEAAsB;AACvD;AACA;AACA;AACA,6BAA6B,8DAAkB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,sEAAsB;AACvD;AACA;AACA,6BAA6B,8DAAkB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAqB;AACK;;;;;;;;;;;;;;;;;;;;ACvG1B;AACA;AACA;AACA;AAC6D;AAClB;AAC3C,eAAe,uDAAY;AAC3B;AACA;AACA;AACA,wBAAwB,yDAAiB;AACzC,IAAI,yDAAiB;AACrB;AACA;AACA,IAAI,yDAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gEAAwB;AACrC;AACA;AACA;AACA;AACA;AACA,aAAa,6DAAqB;AAClC;AACA;AACA;AACA;AACA;AACA,aAAa,gEAAwB;AACrC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,cAAc,YAAY,kBAAkB;AAC5C;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,QAAQ,IAAI,UAAU;AACnE;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA;AACA,gBAAgB,qBAAqB;AACrC,mBAAmB,+CAAO,GAAG,YAAY,qCAAqC;AAC9E;AACA;AACA;AACA;AACA;AACA,qEAAqE,yBAAyB,gCAAgC;AAC9H;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,sBAAsB,gCAAgC;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,uBAAuB,gCAAgC;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAoB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,SAAS;AAC7D,gCAAgC,2BAA2B,GAAG,WAAW,GAAG,SAAS,EAAE,SAAS;AAChG,0DAA0D;AAC1D;AACA,yEAAyE,oBAAoB;AAC7F;AACA;AACA;AACA;AACA,2BAA2B,wEAAwE;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,kBAAkB;AACnF;AACA,gEAAgE,UAAU,IAAI,cAAc;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,OAAO,EAAE,yBAAyB,GAAG,mBAAmB,GAAG,cAAc;AAC5G;AACA,kCAAkC;AAClC,0CAA0C,6DAAqB;AAC/D,+CAA+C,8DAAsB,GAAG,iEAAyB;AACjG;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uDAAe;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAS;;;;;;;;;;;;;;;;;ACjVT;AACA;AACA;AACA;AACA;AACA;AACsD;AAC+yB;AACr2B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,UAAU,kDAAU;AACpB,UAAU,kDAAU;AACpB,UAAU,oDAAY;AACtB,UAAU,+CAAO;AACjB,UAAU,+CAAO;AACjB,UAAU,4CAAI;AACd,UAAU,4CAAI;AACd,UAAU,mDAAW;AACrB,UAAU,8DAAsB;AAChC,UAAU,mDAAW;AACrB,UAAU,4CAAI;AACd,UAAU,gDAAQ;AAClB,UAAU,iDAAS;AACnB,UAAU,6CAAK;AACf,UAAU,2CAAG;AACb,UAAU,iDAAS;AACnB,UAAU,+CAAO;AACjB,UAAU,+CAAO;AACjB,UAAU,uDAAe;AACzB,UAAU,4CAAI;AACd,UAAU,iDAAS;AACnB,kBAAkB,iDAAS;AAC3B,UAAU,gDAAQ;AAClB,UAAU,sDAAc;AACxB,UAAU,iDAAS;AACnB,UAAU,6CAAK;AACf,UAAU,iDAAS;AACnB,UAAU,iDAAS;AACnB,UAAU,sDAAc;AACxB,UAAU,oDAAY;AACtB,UAAU,kDAAU;AACpB,UAAU,oDAAY;AACtB,UAAU,kDAAU;AACpB,UAAU,gDAAQ;AAClB,UAAU,uDAAe;AACzB,UAAU,wDAAgB;AAC1B,UAAU,6CAAK;AACf,UAAU,4CAAI;AACd,UAAU,gDAAQ;AAClB,UAAU,oDAAY;AACtB,UAAU,gDAAQ;AAClB,UAAU,8CAAM;AAChB,UAAU,oDAAY;AACtB,UAAU,gDAAQ;AAClB,UAAU,gDAAQ;AAClB,UAAU,kDAAU;AACpB,UAAU,kDAAU;AACpB,UAAU,6CAAK;AACf,aAAa,6CAAK;AAClB,UAAU,sDAAc;AACxB,UAAU,oDAAY;AACtB,UAAU,iDAAS;AACnB,UAAU,qDAAa;AACvB,UAAU,iDAAS;AACnB,UAAU,kDAAU;AACpB,UAAU,iDAAS;AACnB,UAAU,gDAAQ;AAClB,UAAU,4CAAI;AACd,UAAU,oDAAY;AACtB,UAAU,8CAAM;AAChB,UAAU,8CAAM;AAChB,UAAU,+CAAO;AACjB,UAAU,gDAAQ;AAClB,UAAU,gDAAQ;AAClB,UAAU,8CAAM;AAChB,UAAU,mDAAW;AACrB,UAAU,oDAAY;AACtB,UAAU,qDAAa;AACvB,UAAU,gDAAQ;AAClB,UAAU,mDAAW;AACrB,UAAU,qDAAa;AACvB,UAAU,mDAAW;AACrB,UAAU,+CAAO;AACjB,UAAU,8CAAM;AAChB,UAAU,8CAAM;AAChB,UAAU,+CAAO;AACjB,UAAU,sDAAc;AACxB,UAAU,6CAAK;AACf,UAAU,6CAAK;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,YAAY,wCAAwC;AACpD,UAAU,kDAAU;AACpB,UAAU,kDAAU;AACpB;AACA;AACA;AACA,qBAAqB,kDAAU;AAC/B;AACA;AACA,wEAAqB;AACI;;;;;;;;;;;;;;;;;AC9HzB;AACA;AACA;AACA;AACsD;AAC2B;AACjF;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,oCAAoC,+CAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAQ;AAC9B;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS,kBAAkB,+CAAO;AAClC;AACA,0BAA0B,kBAAkB;AAC5C;AACA,SAAS,kBAAkB,+CAAO;AAClC;AACA,IAAI,+DAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAQ;AAC9B;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS,kBAAkB,+CAAO;AAClC;AACA,0BAA0B,kBAAkB;AAC5C;AACA,SAAS,kBAAkB,+CAAO;AAClC;AACA,IAAI,+DAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uDAAe,EAAE,yEAAsB;AACvD,sBAAsB,gDAAQ;AAC9B;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,kBAAkB,iBAAiB;AACnC;AACA;AACA,SAAS;AACT,6BAA6B,4CAAI;AACjC,6BAA6B,4CAAI;AACjC,6BAA6B,+CAAO;AACpC;AACA,0BAA0B,kBAAkB;AAC5C;AACA,SAAS;AACT,6BAA6B,4CAAI;AACjC,6BAA6B,+CAAO;AACpC;AACA,0BAA0B,kBAAkB;AAC5C;AACA,SAAS,kBAAkB,+CAAO;AAClC;AACA,IAAI,+DAAuB;AAC3B;AACA;AACA,wEAAqB;AACG;;;;;;;;;;;;;;;;ACxGxB;AACA;AACA;AACA;AACA;AACA;AACsD;AACtD;AACA;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,wBAAwB,2EAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC,KAAK;AACL,CAAC;AACD,wEAAqB;AACU;;;;;;;;;;;;;;;;;;;;;;;ACnD/B;AACA;AACA;AACA;AACsD;AACnB;AACU;AACR;AACS;AACD;AACR;AACE;AACvC;AACA;AACA;AACA;AACA;AACA,QAAQ,wEAAqB;AAC7B,KAAK;AACL;AACA,kBAAkB,sDAAe;AACjC;AACA,iCAAiC,gDAAY;AAC7C;AACA;AACA;AACA,sBAAsB,6CAAK,CAAC,mDAAY;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK,CAAC,mDAAY;AACxC;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAK,sEAAsE,+DAAgB;AACjH;AACA,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,8BAA8B;AACtD,YAAY,qDAAS,GAAG,+BAA+B;AACvD;AACA;AACA,sBAAsB,6CAAK,CAAC,mDAAY,UAAU,uDAAe;AACjE,QAAQ,qDAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,qDAAS,GAAG,8BAA8B;AACjF;AACA,wEAAqB;AACC;;;;;;;UC3EtB;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACuC;AACI;AACR;AACuB;AACH;AACvD,sEAAiB;AACjB,wDAAiB;AACjB,mEAAa;AACb;AAC6B;AACE;AAC/B;AACA,iEAAe,8BAA8B,EAAE,uCAAM,GAAG,yCAAQ,CAAC,EAAC","sources":["webpack://Vex/webpack/universalModuleDefinition","webpack://Vex/./src/version.ts","webpack://Vex/./src/accidental.ts","webpack://Vex/./src/annotation.ts","webpack://Vex/./src/articulation.ts","webpack://Vex/./src/barnote.ts","webpack://Vex/./src/beam.ts","webpack://Vex/./src/bend.ts","webpack://Vex/./src/boundingbox.ts","webpack://Vex/./src/boundingboxcomputation.ts","webpack://Vex/./src/canvascontext.ts","webpack://Vex/./src/chordsymbol.ts","webpack://Vex/./src/clef.ts","webpack://Vex/./src/clefnote.ts","webpack://Vex/./src/crescendo.ts","webpack://Vex/./src/curve.ts","webpack://Vex/./src/dot.ts","webpack://Vex/./src/easyscore.ts","webpack://Vex/./src/element.ts","webpack://Vex/./src/factory.ts","webpack://Vex/./src/flow.ts","webpack://Vex/./src/font.ts","webpack://Vex/./src/fonts/bravura_glyphs.ts","webpack://Vex/./src/fonts/bravura_metrics.ts","webpack://Vex/./src/fonts/custom_glyphs.ts","webpack://Vex/./src/fonts/custom_metrics.ts","webpack://Vex/./src/fonts/gonville_glyphs.ts","webpack://Vex/./src/fonts/gonville_metrics.ts","webpack://Vex/./src/fonts/leland_glyphs.ts","webpack://Vex/./src/fonts/leland_metrics.ts","webpack://Vex/./src/fonts/load_all.ts","webpack://Vex/./src/fonts/load_bravura.ts","webpack://Vex/./src/fonts/load_custom.ts","webpack://Vex/./src/fonts/load_gonville.ts","webpack://Vex/./src/fonts/load_leland.ts","webpack://Vex/./src/fonts/load_petaluma.ts","webpack://Vex/./src/fonts/petaluma_glyphs.ts","webpack://Vex/./src/fonts/petaluma_metrics.ts","webpack://Vex/./src/fonts/petalumascript_glyphs.ts","webpack://Vex/./src/fonts/robotoslab_glyphs.ts","webpack://Vex/./src/fonts/textfonts.ts","webpack://Vex/./src/formatter.ts","webpack://Vex/./src/fraction.ts","webpack://Vex/./src/frethandfinger.ts","webpack://Vex/./src/ghostnote.ts","webpack://Vex/./src/glyph.ts","webpack://Vex/./src/glyphnote.ts","webpack://Vex/./src/gracenote.ts","webpack://Vex/./src/gracenotegroup.ts","webpack://Vex/./src/gracetabnote.ts","webpack://Vex/./src/index.ts","webpack://Vex/./src/keymanager.ts","webpack://Vex/./src/keysignature.ts","webpack://Vex/./src/keysignote.ts","webpack://Vex/./src/modifier.ts","webpack://Vex/./src/modifiercontext.ts","webpack://Vex/./src/multimeasurerest.ts","webpack://Vex/./src/music.ts","webpack://Vex/./src/note.ts","webpack://Vex/./src/notehead.ts","webpack://Vex/./src/notesubgroup.ts","webpack://Vex/./src/ornament.ts","webpack://Vex/./src/parenthesis.ts","webpack://Vex/./src/parser.ts","webpack://Vex/./src/pedalmarking.ts","webpack://Vex/./src/registry.ts","webpack://Vex/./src/rendercontext.ts","webpack://Vex/./src/renderer.ts","webpack://Vex/./src/repeatnote.ts","webpack://Vex/./src/stave.ts","webpack://Vex/./src/stavebarline.ts","webpack://Vex/./src/staveconnector.ts","webpack://Vex/./src/stavehairpin.ts","webpack://Vex/./src/staveline.ts","webpack://Vex/./src/stavemodifier.ts","webpack://Vex/./src/stavenote.ts","webpack://Vex/./src/staverepetition.ts","webpack://Vex/./src/stavesection.ts","webpack://Vex/./src/stavetempo.ts","webpack://Vex/./src/stavetext.ts","webpack://Vex/./src/stavetie.ts","webpack://Vex/./src/stavevolta.ts","webpack://Vex/./src/stem.ts","webpack://Vex/./src/stemmablenote.ts","webpack://Vex/./src/stringnumber.ts","webpack://Vex/./src/strokes.ts","webpack://Vex/./src/svgcontext.ts","webpack://Vex/./src/system.ts","webpack://Vex/./src/tables.ts","webpack://Vex/./src/tabnote.ts","webpack://Vex/./src/tabslide.ts","webpack://Vex/./src/tabstave.ts","webpack://Vex/./src/tabtie.ts","webpack://Vex/./src/textbracket.ts","webpack://Vex/./src/textdynamics.ts","webpack://Vex/./src/textformatter.ts","webpack://Vex/./src/textnote.ts","webpack://Vex/./src/tickable.ts","webpack://Vex/./src/tickcontext.ts","webpack://Vex/./src/timesigglyph.ts","webpack://Vex/./src/timesignature.ts","webpack://Vex/./src/timesignote.ts","webpack://Vex/./src/tremolo.ts","webpack://Vex/./src/tuning.ts","webpack://Vex/./src/tuplet.ts","webpack://Vex/./src/typeguard.ts","webpack://Vex/./src/util.ts","webpack://Vex/./src/vex.ts","webpack://Vex/./src/vibrato.ts","webpack://Vex/./src/vibratobracket.ts","webpack://Vex/./src/voice.ts","webpack://Vex/./src/web.ts","webpack://Vex/./tests/accidental_tests.ts","webpack://Vex/./tests/annotation_tests.ts","webpack://Vex/./tests/articulation_tests.ts","webpack://Vex/./tests/auto_beam_formatting_tests.ts","webpack://Vex/./tests/bach_tests.ts","webpack://Vex/./tests/barline_tests.ts","webpack://Vex/./tests/beam_tests.ts","webpack://Vex/./tests/bend_tests.ts","webpack://Vex/./tests/boundingbox_tests.ts","webpack://Vex/./tests/boundingboxcomputation_tests.ts","webpack://Vex/./tests/chordsymbol_tests.ts","webpack://Vex/./tests/clef_tests.ts","webpack://Vex/./tests/curve_tests.ts","webpack://Vex/./tests/dot_tests.ts","webpack://Vex/./tests/easyscore_tests.ts","webpack://Vex/./tests/factory_tests.ts","webpack://Vex/./tests/font_tests.ts","webpack://Vex/./tests/formatter_tests.ts","webpack://Vex/./tests/fraction_tests.ts","webpack://Vex/./tests/ghostnote_tests.ts","webpack://Vex/./tests/glyphnote_tests.ts","webpack://Vex/./tests/gracenote_tests.ts","webpack://Vex/./tests/gracetabnote_tests.ts","webpack://Vex/./tests/index.ts","webpack://Vex/./tests/key_clef_tests.ts","webpack://Vex/./tests/keymanager_tests.ts","webpack://Vex/./tests/keysignature_tests.ts","webpack://Vex/./tests/mocks.ts","webpack://Vex/./tests/modifier_tests.ts","webpack://Vex/./tests/multimeasurerest_tests.ts","webpack://Vex/./tests/music_tests.ts","webpack://Vex/./tests/notehead_tests.ts","webpack://Vex/./tests/notesubgroup_tests.ts","webpack://Vex/./tests/offscreencanvas_tests.ts","webpack://Vex/./tests/ornament_tests.ts","webpack://Vex/./tests/parser_tests.ts","webpack://Vex/./tests/pedalmarking_tests.ts","webpack://Vex/./tests/percussion_tests.ts","webpack://Vex/./tests/registry_tests.ts","webpack://Vex/./tests/renderer_tests.ts","webpack://Vex/./tests/rests_tests.ts","webpack://Vex/./tests/rhythm_tests.ts","webpack://Vex/./tests/stave_tests.ts","webpack://Vex/./tests/staveconnector_tests.ts","webpack://Vex/./tests/stavehairpin_tests.ts","webpack://Vex/./tests/staveline_tests.ts","webpack://Vex/./tests/stavemodifier_tests.ts","webpack://Vex/./tests/stavenote_tests.ts","webpack://Vex/./tests/stavetie_tests.ts","webpack://Vex/./tests/stringnumber_tests.ts","webpack://Vex/./tests/strokes_tests.ts","webpack://Vex/./tests/style_tests.ts","webpack://Vex/./tests/tabnote_tests.ts","webpack://Vex/./tests/tabslide_tests.ts","webpack://Vex/./tests/tabstave_tests.ts","webpack://Vex/./tests/tabtie_tests.ts","webpack://Vex/./tests/textbracket_tests.ts","webpack://Vex/./tests/textformatter_tests.ts","webpack://Vex/./tests/textnote_tests.ts","webpack://Vex/./tests/threevoice_tests.ts","webpack://Vex/./tests/tickcontext_tests.ts","webpack://Vex/./tests/timesignature_tests.ts","webpack://Vex/./tests/tremolo_tests.ts","webpack://Vex/./tests/tuning_tests.ts","webpack://Vex/./tests/tuplet_tests.ts","webpack://Vex/./tests/typeguard_tests.ts","webpack://Vex/./tests/vexflow_test_helpers.ts","webpack://Vex/./tests/vf_prefix_tests.ts","webpack://Vex/./tests/vibrato_tests.ts","webpack://Vex/./tests/vibratobracket_tests.ts","webpack://Vex/./tests/voice_tests.ts","webpack://Vex/webpack/bootstrap","webpack://Vex/webpack/runtime/define property getters","webpack://Vex/webpack/runtime/global","webpack://Vex/webpack/runtime/hasOwnProperty shorthand","webpack://Vex/webpack/runtime/make namespace object","webpack://Vex/./entry/vexflow-debug-with-tests.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Vex\"] = factory();\n\telse\n\t\troot[\"Vex\"] = factory();\n})((typeof window !== 'undefined' ? window : typeof globalThis !== 'undefined' ? globalThis : this), function() {\nreturn ","export const VERSION = '4.1.0-alpha.0';\nexport const ID = '847bc9014672858aedc7f8460384f51f98d6bd84';\nexport const DATE = '2022-10-10T04:47:38.237Z';\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// @author Mohit Cheppudira\n// @author Greg Ristow (modifications)\nimport { Fraction } from './fraction';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Music } from './music';\nimport { Tables } from './tables';\nimport { Category, isAccidental, isGraceNote, isGraceNoteGroup, isStaveNote } from './typeguard';\nimport { defined, log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Accidental.DEBUG)\n log('Vex.Flow.Accidental', args);\n}\n/**\n * An `Accidental` inherits from `Modifier`, and is formatted within a\n * `ModifierContext`. Accidentals are modifiers that can be attached to\n * notes. Support is included for both western and microtonal accidentals.\n *\n * See `tests/accidental_tests.ts` for usage examples.\n */\nexport class Accidental extends Modifier {\n /**\n * Create accidental.\n * @param type value from `Vex.Flow.accidentalCodes.accidentals` table in `tables.ts`.\n * For example: `#`, `##`, `b`, `n`, etc.\n */\n constructor(type) {\n super();\n L('New accidental: ', type);\n this.type = type;\n this.position = Modifier.Position.LEFT;\n this.render_options = {\n // Font size for glyphs\n font_scale: 38,\n // Padding between accidental and parentheses on each side\n parenLeftPadding: 2,\n parenRightPadding: 2,\n };\n this.accidental = Tables.accidentalCodes(this.type);\n defined(this.accidental, 'ArgumentError', `Unknown accidental type: ${type}`);\n // Cautionary accidentals have parentheses around them\n this.cautionary = false;\n this.reset();\n }\n /** Accidentals category string. */\n static get CATEGORY() {\n return Category.Accidental;\n }\n /** Arrange accidentals inside a ModifierContext. */\n static format(accidentals, state) {\n // If there are no accidentals, no need to format their positions.\n if (!accidentals || accidentals.length === 0)\n return;\n const musicFont = Tables.currentMusicFont();\n const noteheadAccidentalPadding = musicFont.lookupMetric('accidental.noteheadAccidentalPadding');\n const leftShift = state.left_shift + noteheadAccidentalPadding;\n const accidentalSpacing = musicFont.lookupMetric('accidental.accidentalSpacing');\n const additionalPadding = musicFont.lookupMetric('accidental.leftPadding'); // padding to the left of all accidentals\n const accList = [];\n let prevNote = undefined;\n let shiftL = 0;\n // First determine the accidentals' Y positions from the note.keys\n for (let i = 0; i < accidentals.length; ++i) {\n const acc = accidentals[i];\n const note = acc.getNote();\n const stave = note.getStave();\n const index = acc.checkIndex();\n const props = note.getKeyProps()[index];\n if (note !== prevNote) {\n // Iterate through all notes to get the displaced pixels\n for (let n = 0; n < note.keys.length; ++n) {\n shiftL = Math.max(note.getLeftDisplacedHeadPx() - note.getXShift(), shiftL);\n }\n prevNote = note;\n }\n if (stave) {\n const lineSpace = stave.getSpacingBetweenLines();\n const y = stave.getYForLine(props.line);\n const accLine = Math.round((y / lineSpace) * 2) / 2;\n accList.push({ y, line: accLine, shift: shiftL, acc, lineSpace });\n }\n else {\n accList.push({ line: props.line, shift: shiftL, acc });\n }\n }\n // Sort accidentals by line number.\n accList.sort((a, b) => b.line - a.line);\n // FIXME: Confusing name. Each object in this array has a property called `line`.\n // So if this is a list of lines, you end up with: `line.line` which is very awkward.\n const lineList = [];\n // amount by which all accidentals must be shifted right or left for\n // stem flipping, notehead shifting concerns.\n let accShift = 0;\n let previousLine = undefined;\n // Create an array of unique line numbers (lineList) from accList\n for (let i = 0; i < accList.length; i++) {\n const acc = accList[i];\n // if this is the first line, or a new line, add a lineList\n if (previousLine === undefined || previousLine !== acc.line) {\n lineList.push({\n line: acc.line,\n flatLine: true,\n dblSharpLine: true,\n numAcc: 0,\n width: 0,\n column: 0,\n });\n }\n // if this accidental is not a flat, the accidental needs 3.0 lines lower\n // clearance instead of 2.5 lines for b or bb.\n // FIXME: Naming could use work. acc.acc is very awkward\n if (acc.acc.type !== 'b' && acc.acc.type !== 'bb') {\n lineList[lineList.length - 1].flatLine = false;\n }\n // if this accidental is not a double sharp, the accidental needs 3.0 lines above\n if (acc.acc.type !== '##') {\n lineList[lineList.length - 1].dblSharpLine = false;\n }\n // Track how many accidentals are on this line:\n lineList[lineList.length - 1].numAcc++;\n // Track the total x_offset needed for this line which will be needed\n // for formatting lines w/ multiple accidentals:\n // width = accidental width + universal spacing between accidentals\n lineList[lineList.length - 1].width += acc.acc.getWidth() + accidentalSpacing;\n // if this accShift is larger, use it to keep first column accidentals in the same line\n accShift = acc.shift > accShift ? acc.shift : accShift;\n previousLine = acc.line;\n }\n // ### Place Accidentals in Columns\n //\n // Default to a classic triangular layout (middle accidental farthest left),\n // but follow exceptions as outlined in G. Read's _Music Notation_ and\n // Elaine Gould's _Behind Bars_.\n //\n // Additionally, this implements different vertical collision rules for\n // flats (only need 2.5 lines clearance below) and double sharps (only\n // need 2.5 lines of clearance above or below).\n //\n // Classic layouts and exception patterns are found in the 'tables.js'\n // in 'Tables.accidentalColumnsTable'\n //\n // Beyond 6 vertical accidentals, default to the parallel ascending lines approach,\n // using as few columns as possible for the verticle structure.\n //\n // TODO (?): Allow column to be specified for an accidental at run-time?\n let totalColumns = 0;\n // establish the boundaries for a group of notes with clashing accidentals:\n for (let i = 0; i < lineList.length; i++) {\n let noFurtherConflicts = false;\n const groupStart = i;\n let groupEnd = i;\n while (groupEnd + 1 < lineList.length && !noFurtherConflicts) {\n // if this note conflicts with the next:\n if (this.checkCollision(lineList[groupEnd], lineList[groupEnd + 1])) {\n // include the next note in the group:\n groupEnd++;\n }\n else {\n noFurtherConflicts = true;\n }\n }\n // Gets an a line from the `lineList`, relative to the current group\n const getGroupLine = (index) => lineList[groupStart + index];\n const getGroupLines = (indexes) => indexes.map(getGroupLine);\n const lineDifference = (indexA, indexB) => {\n const [a, b] = getGroupLines([indexA, indexB]).map((item) => item.line);\n return a - b;\n };\n const notColliding = (...indexPairs) => indexPairs.map(getGroupLines).every(([line1, line2]) => !this.checkCollision(line1, line2));\n // Set columns for the lines in this group:\n const groupLength = groupEnd - groupStart + 1;\n // Set the accidental column for each line of the group\n let endCase = this.checkCollision(lineList[groupStart], lineList[groupEnd]) ? 'a' : 'b';\n switch (groupLength) {\n case 3:\n if (endCase === 'a' && lineDifference(1, 2) === 0.5 && lineDifference(0, 1) !== 0.5) {\n endCase = 'second_on_bottom';\n }\n break;\n case 4:\n if (notColliding([0, 2], [1, 3])) {\n endCase = 'spaced_out_tetrachord';\n }\n break;\n case 5:\n if (endCase === 'b' && notColliding([1, 3])) {\n endCase = 'spaced_out_pentachord';\n if (notColliding([0, 2], [2, 4])) {\n endCase = 'very_spaced_out_pentachord';\n }\n }\n break;\n case 6:\n if (notColliding([0, 3], [1, 4], [2, 5])) {\n endCase = 'spaced_out_hexachord';\n }\n if (notColliding([0, 2], [2, 4], [1, 3], [3, 5])) {\n endCase = 'very_spaced_out_hexachord';\n }\n break;\n default:\n break;\n }\n let groupMember;\n let column;\n // If the group contains seven members or more, use ascending parallel lines\n // of accidentals, using as few columns as possible while avoiding collisions.\n if (groupLength >= 7) {\n // First, determine how many columns to use:\n let patternLength = 2;\n let collisionDetected = true;\n while (collisionDetected === true) {\n collisionDetected = false;\n for (let line = 0; line + patternLength < lineList.length; line++) {\n if (this.checkCollision(lineList[line], lineList[line + patternLength])) {\n collisionDetected = true;\n patternLength++;\n break;\n }\n }\n }\n // Then, assign a column to each line of accidentals\n for (groupMember = i; groupMember <= groupEnd; groupMember++) {\n column = ((groupMember - i) % patternLength) + 1;\n lineList[groupMember].column = column;\n totalColumns = totalColumns > column ? totalColumns : column;\n }\n }\n else {\n // If the group contains fewer than seven members, use the layouts from\n // the Tables.accidentalColumnsTable (See: tables.ts).\n for (groupMember = i; groupMember <= groupEnd; groupMember++) {\n column = Tables.accidentalColumnsTable[groupLength][endCase][groupMember - i];\n lineList[groupMember].column = column;\n totalColumns = totalColumns > column ? totalColumns : column;\n }\n }\n // Increment i to the last note that was set, so that if a lower set of notes\n // does not conflict at all with this group, it can have its own classic shape.\n i = groupEnd;\n }\n // ### Convert Columns to x_offsets\n //\n // This keeps columns aligned, even if they have different accidentals within them\n // which sometimes results in a larger x_offset than is an accidental might need\n // to preserve the symmetry of the accidental shape.\n //\n // Neither A.C. Vinci nor G. Read address this, and it typically only happens in\n // music with complex chord clusters.\n //\n // TODO (?): Optionally allow closer compression of accidentals, instead of forcing\n // parallel columns.\n // track each column's max width, which will be used as initial shift of later columns:\n const columnWidths = [];\n const columnXOffsets = [];\n for (let i = 0; i <= totalColumns; i++) {\n columnWidths[i] = 0;\n columnXOffsets[i] = 0;\n }\n columnWidths[0] = accShift + leftShift;\n columnXOffsets[0] = accShift + leftShift;\n // Fill columnWidths with widest needed x-space;\n // this is what keeps the columns parallel.\n lineList.forEach((line) => {\n if (line.width > columnWidths[line.column])\n columnWidths[line.column] = line.width;\n });\n for (let i = 1; i < columnWidths.length; i++) {\n // this column's offset = this column's width + previous column's offset\n columnXOffsets[i] = columnWidths[i] + columnXOffsets[i - 1];\n }\n const totalShift = columnXOffsets[columnXOffsets.length - 1];\n // Set the xShift for each accidental according to column offsets:\n let accCount = 0;\n lineList.forEach((line) => {\n let lineWidth = 0;\n const lastAccOnLine = accCount + line.numAcc;\n // handle all of the accidentals on a given line:\n for (accCount; accCount < lastAccOnLine; accCount++) {\n const xShift = columnXOffsets[line.column - 1] + lineWidth;\n accList[accCount].acc.setXShift(xShift);\n // keep track of the width of accidentals we've added so far, so that when\n // we loop, we add space for them.\n lineWidth += accList[accCount].acc.getWidth() + accidentalSpacing;\n L('Line, accCount, shift: ', line.line, accCount, xShift);\n }\n });\n // update the overall layout with the full width of the accidental shapes:\n state.left_shift += totalShift + additionalPadding;\n }\n /** Helper function to determine whether two lines of accidentals collide vertically */\n static checkCollision(line1, line2) {\n let clearance = line2.line - line1.line;\n let clearanceRequired = 3;\n // But less clearance is required for certain accidentals: b, bb and ##.\n if (clearance > 0) {\n // then line 2 is on top\n clearanceRequired = line2.flatLine || line2.dblSharpLine ? 2.5 : 3.0;\n if (line1.dblSharpLine)\n clearance -= 0.5;\n }\n else {\n // line 1 is on top\n clearanceRequired = line1.flatLine || line1.dblSharpLine ? 2.5 : 3.0;\n if (line2.dblSharpLine)\n clearance -= 0.5;\n }\n const collision = Math.abs(clearance) < clearanceRequired;\n L('Line_1, Line_2, Collision: ', line1.line, line2.line, collision);\n return collision;\n }\n /**\n * Use this method to automatically apply accidentals to a set of `voices`.\n * The accidentals will be remembered between all the voices provided.\n * Optionally, you can also provide an initial `keySignature`.\n */\n static applyAccidentals(voices, keySignature) {\n const tickPositions = [];\n const tickNoteMap = {};\n // Sort the tickables in each voice by their tick position in the voice.\n voices.forEach((voice) => {\n const tickPosition = new Fraction(0, 1);\n const tickable = voice.getTickables();\n tickable.forEach((t) => {\n if (t.shouldIgnoreTicks())\n return;\n const notesAtPosition = tickNoteMap[tickPosition.value()];\n if (!notesAtPosition) {\n tickPositions.push(tickPosition.value());\n tickNoteMap[tickPosition.value()] = [t];\n }\n else {\n notesAtPosition.push(t);\n }\n tickPosition.add(t.getTicks());\n });\n });\n const music = new Music();\n // Default key signature is C major.\n if (!keySignature)\n keySignature = 'C';\n // Get the scale map, which represents the current state of each pitch.\n const scaleMapKey = music.createScaleMap(keySignature);\n const scaleMap = {};\n tickPositions.forEach((tickPos) => {\n const tickables = tickNoteMap[tickPos];\n // Array to store all pitches that modified accidental states\n // at this tick position\n const modifiedPitches = [];\n const processNote = (t) => {\n // Only StaveNote implements .addModifier(), which is used below.\n if (!isStaveNote(t) || t.isRest() || t.shouldIgnoreTicks()) {\n return;\n }\n // Go through each key and determine if an accidental should be applied.\n const staveNote = t;\n staveNote.keys.forEach((keyString, keyIndex) => {\n const key = music.getNoteParts(keyString.split('/')[0]);\n const octave = keyString.split('/')[1];\n // Force a natural for every key without an accidental\n const accidentalString = key.accidental || 'n';\n const pitch = key.root + accidentalString;\n // Determine if the current pitch has the same accidental\n // as the scale state\n if (!scaleMap[key.root + octave])\n scaleMap[key.root + octave] = scaleMapKey[key.root];\n const sameAccidental = scaleMap[key.root + octave] === pitch;\n // Determine if an identical pitch in the chord already\n // modified the accidental state\n const previouslyModified = modifiedPitches.indexOf(keyString) > -1;\n // Remove accidentals\n staveNote.getModifiers().forEach((modifier, index) => {\n if (isAccidental(modifier) && modifier.type == accidentalString && modifier.getIndex() == keyIndex) {\n staveNote.getModifiers().splice(index, 1);\n }\n });\n // Add the accidental to the StaveNote\n if (!sameAccidental || (sameAccidental && previouslyModified)) {\n // Modify the scale map so that the root pitch has an\n // updated state\n scaleMap[key.root + octave] = pitch;\n // Create the accidental\n const accidental = new Accidental(accidentalString);\n // Attach the accidental to the StaveNote\n staveNote.addModifier(accidental, keyIndex);\n // Add the pitch to list of pitches that modified accidentals\n modifiedPitches.push(keyString);\n }\n });\n // process grace notes\n staveNote.getModifiers().forEach((modifier) => {\n if (isGraceNoteGroup(modifier)) {\n modifier.getGraceNotes().forEach(processNote);\n }\n });\n };\n tickables.forEach(processNote);\n });\n }\n reset() {\n const fontScale = this.render_options.font_scale;\n this.glyph = new Glyph(this.accidental.code, fontScale);\n this.glyph.setOriginX(1.0);\n if (this.cautionary) {\n this.parenLeft = new Glyph(Tables.accidentalCodes('{').code, fontScale);\n this.parenRight = new Glyph(Tables.accidentalCodes('}').code, fontScale);\n this.parenLeft.setOriginX(1.0);\n this.parenRight.setOriginX(1.0);\n }\n }\n /** Get width in pixels. */\n getWidth() {\n if (this.cautionary) {\n const parenLeft = defined(this.parenLeft);\n const parenRight = defined(this.parenRight);\n const parenWidth = parenLeft.getMetrics().width +\n parenRight.getMetrics().width +\n this.render_options.parenLeftPadding +\n this.render_options.parenRightPadding;\n return this.glyph.getMetrics().width + parenWidth;\n }\n else {\n return this.glyph.getMetrics().width;\n }\n }\n /** Attach this accidental to `note`, which must be a `StaveNote`. */\n setNote(note) {\n defined(note, 'ArgumentError', `Bad note value: ${note}`);\n this.note = note;\n // Accidentals attached to grace notes are rendered smaller.\n if (isGraceNote(note)) {\n this.render_options.font_scale = 25;\n this.reset();\n }\n return this;\n }\n /** If called, draws parenthesis around accidental. */\n setAsCautionary() {\n this.cautionary = true;\n this.render_options.font_scale = 28;\n this.reset();\n return this;\n }\n /** Render accidental onto canvas. */\n draw() {\n const { type, position, index, cautionary, x_shift, y_shift, glyph, render_options: { parenLeftPadding, parenRightPadding }, } = this;\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n // Figure out the start `x` and `y` coordinates for note and index.\n const start = note.getModifierStartXY(position, index);\n let accX = start.x + x_shift;\n const accY = start.y + y_shift;\n L('Rendering: ', type, accX, accY);\n if (!cautionary) {\n glyph.render(ctx, accX, accY);\n }\n else {\n const parenLeft = defined(this.parenLeft);\n const parenRight = defined(this.parenRight);\n // Render the accidental in parentheses.\n parenRight.render(ctx, accX, accY);\n accX -= parenRight.getMetrics().width;\n accX -= parenRightPadding;\n accX -= this.accidental.parenRightPaddingAdjustment;\n glyph.render(ctx, accX, accY);\n accX -= glyph.getMetrics().width;\n accX -= parenLeftPadding;\n parenLeft.render(ctx, accX, accY);\n }\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Accidental.DEBUG` to `true`. */\nAccidental.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category, isStemmableNote, isTabNote } from './typeguard';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Annotation.DEBUG)\n log('Vex.Flow.Annotation', args);\n}\nexport var AnnotationHorizontalJustify;\n(function (AnnotationHorizontalJustify) {\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"LEFT\"] = 1] = \"LEFT\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"CENTER\"] = 2] = \"CENTER\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"RIGHT\"] = 3] = \"RIGHT\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(AnnotationHorizontalJustify || (AnnotationHorizontalJustify = {}));\nexport var AnnotationVerticalJustify;\n(function (AnnotationVerticalJustify) {\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"TOP\"] = 1] = \"TOP\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"CENTER\"] = 2] = \"CENTER\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"BOTTOM\"] = 3] = \"BOTTOM\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(AnnotationVerticalJustify || (AnnotationVerticalJustify = {}));\n/**\n * Annotations are modifiers that can be attached to\n * notes.\n *\n * See `tests/annotation_tests.ts` for usage examples.\n */\nexport class Annotation extends Modifier {\n /**\n * Annotations inherit from `Modifier` and is positioned correctly when\n * in a `ModifierContext`.\n * Create a new `Annotation` with the string `text`.\n */\n constructor(text) {\n super();\n this.text = text;\n this.horizontalJustification = AnnotationHorizontalJustify.CENTER;\n // warning: the default in the constructor is TOP, but in the factory the default is BOTTOM.\n // this is to support legacy application that may expect this.\n this.verticalJustification = AnnotationVerticalJustify.TOP;\n this.resetFont();\n // The default width is calculated from the text.\n this.setWidth(Tables.textWidth(text));\n }\n /** Annotations category string. */\n static get CATEGORY() {\n return Category.Annotation;\n }\n // Use the same padding for annotations as note head so the\n // words don't run into each other.\n static get minAnnotationPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Arrange annotations within a `ModifierContext` */\n static format(annotations, state) {\n if (!annotations || annotations.length === 0)\n return false;\n let leftWidth = 0;\n let rightWidth = 0;\n let maxLeftGlyphWidth = 0;\n let maxRightGlyphWidth = 0;\n for (let i = 0; i < annotations.length; ++i) {\n const annotation = annotations[i];\n const textFormatter = TextFormatter.create(annotation.textFont);\n // Text height is expressed in fractional stave spaces.\n const textLines = (5 + textFormatter.maxHeight) / Tables.STAVE_LINE_DISTANCE;\n let verticalSpaceNeeded = textLines;\n const note = annotation.checkAttachedNote();\n const glyphWidth = note.getGlyph().getWidth();\n // Get the text width from the font metrics.\n const textWidth = textFormatter.getWidthForTextInPx(annotation.text);\n if (annotation.horizontalJustification === AnnotationHorizontalJustify.LEFT) {\n maxLeftGlyphWidth = Math.max(glyphWidth, maxLeftGlyphWidth);\n leftWidth = Math.max(leftWidth, textWidth) + Annotation.minAnnotationPadding;\n }\n else if (annotation.horizontalJustification === AnnotationHorizontalJustify.RIGHT) {\n maxRightGlyphWidth = Math.max(glyphWidth, maxRightGlyphWidth);\n rightWidth = Math.max(rightWidth, textWidth);\n }\n else {\n leftWidth = Math.max(leftWidth, textWidth / 2) + Annotation.minAnnotationPadding;\n rightWidth = Math.max(rightWidth, textWidth / 2);\n maxLeftGlyphWidth = Math.max(glyphWidth / 2, maxLeftGlyphWidth);\n maxRightGlyphWidth = Math.max(glyphWidth / 2, maxRightGlyphWidth);\n }\n const stave = note.getStave();\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let stemHeight = 0;\n let lines = 5;\n if (isTabNote(note)) {\n if (note.render_options.draw_stem) {\n const stem = note.getStem();\n if (stem) {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n else {\n stemHeight = 0;\n }\n }\n else if (isStemmableNote(note)) {\n const stem = note.getStem();\n if (stem && note.getNoteType() === 'n') {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n if (stave) {\n lines = stave.getNumLines();\n }\n if (annotation.verticalJustification === this.VerticalJustify.TOP) {\n let noteLine = note.getLineNumber(true);\n if (isTabNote(note)) {\n noteLine = lines - (note.leastString() - 0.5);\n }\n if (stemDirection === Stem.UP) {\n noteLine += stemHeight;\n }\n const curTop = noteLine + state.top_text_line + 0.5;\n if (curTop < lines) {\n annotation.setTextLine(lines - noteLine);\n verticalSpaceNeeded += lines - noteLine;\n state.top_text_line = verticalSpaceNeeded;\n }\n else {\n annotation.setTextLine(state.top_text_line);\n state.top_text_line += verticalSpaceNeeded;\n }\n }\n else if (annotation.verticalJustification === this.VerticalJustify.BOTTOM) {\n let noteLine = lines - note.getLineNumber();\n if (isTabNote(note)) {\n noteLine = note.greatestString() - 1;\n }\n if (stemDirection === Stem.DOWN) {\n noteLine += stemHeight;\n }\n const curBottom = noteLine + state.text_line + 1;\n if (curBottom < lines) {\n annotation.setTextLine(lines - curBottom);\n verticalSpaceNeeded += lines - curBottom;\n state.text_line = verticalSpaceNeeded;\n }\n else {\n annotation.setTextLine(state.text_line);\n state.text_line += verticalSpaceNeeded;\n }\n }\n else {\n annotation.setTextLine(state.text_line);\n }\n }\n const rightOverlap = Math.min(Math.max(rightWidth - maxRightGlyphWidth, 0), Math.max(rightWidth - state.right_shift, 0));\n const leftOverlap = Math.min(Math.max(leftWidth - maxLeftGlyphWidth, 0), Math.max(leftWidth - state.left_shift, 0));\n state.left_shift += leftOverlap;\n state.right_shift += rightOverlap;\n return true;\n }\n /**\n * Set vertical position of text (above or below stave).\n * @param just value in `AnnotationVerticalJustify`.\n */\n setVerticalJustification(just) {\n this.verticalJustification = typeof just === 'string' ? Annotation.VerticalJustifyString[just] : just;\n return this;\n }\n /**\n * Get horizontal justification.\n */\n getJustification() {\n return this.horizontalJustification;\n }\n /**\n * Set horizontal justification.\n * @param justification value in `Annotation.Justify`.\n */\n setJustification(just) {\n this.horizontalJustification = typeof just === 'string' ? Annotation.HorizontalJustifyString[just] : just;\n return this;\n }\n /** Render text beside the note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n const textFormatter = TextFormatter.create(this.textFont);\n const start = note.getModifierStartXY(ModifierPosition.ABOVE, this.index);\n this.setRendered();\n // We're changing context parameters. Save current state.\n ctx.save();\n // Apply style might not save context, if this.style is undefined, so we\n // still need to save context state just before this, since we will be\n // changing ctx parameters below.\n this.applyStyle();\n ctx.openGroup('annotation', this.getAttribute('id'));\n ctx.setFont(this.textFont);\n const text_width = ctx.measureText(this.text).width;\n const text_height = textFormatter.maxHeight + 2;\n let x;\n let y;\n if (this.horizontalJustification === AnnotationHorizontalJustify.LEFT) {\n x = start.x;\n }\n else if (this.horizontalJustification === AnnotationHorizontalJustify.RIGHT) {\n x = start.x - text_width;\n }\n else if (this.horizontalJustification === AnnotationHorizontalJustify.CENTER) {\n x = start.x - text_width / 2;\n } /* CENTER_STEM */\n else {\n x = note.getStemX() - text_width / 2;\n }\n let stem_ext = {};\n let spacing = 0;\n const has_stem = note.hasStem();\n const stave = note.checkStave();\n // The position of the text varies based on whether or not the note\n // has a stem.\n if (has_stem) {\n stem_ext = note.checkStem().getExtents();\n spacing = stave.getSpacingBetweenLines();\n }\n if (this.verticalJustification === AnnotationVerticalJustify.BOTTOM) {\n // Use the largest (lowest) Y value\n const ys = note.getYs();\n y = ys.reduce((a, b) => (a > b ? a : b));\n y += (this.text_line + 1) * Tables.STAVE_LINE_DISTANCE + text_height;\n if (has_stem && stemDirection === Stem.DOWN) {\n y = Math.max(y, stem_ext.topY + text_height + spacing * this.text_line);\n }\n }\n else if (this.verticalJustification === AnnotationVerticalJustify.CENTER) {\n const yt = note.getYForTopText(this.text_line) - 1;\n const yb = stave.getYForBottomText(this.text_line);\n y = yt + (yb - yt) / 2 + text_height / 2;\n }\n else if (this.verticalJustification === AnnotationVerticalJustify.TOP) {\n y = note.getYs()[0] - (this.text_line + 1) * Tables.STAVE_LINE_DISTANCE;\n if (has_stem && stemDirection === Stem.UP) {\n // If the stem is above the stave already, go with default line width vs. actual\n // since the lines between don't really matter.\n spacing = stem_ext.topY < stave.getTopLineTopY() ? Tables.STAVE_LINE_DISTANCE : spacing;\n y = Math.min(y, stem_ext.topY - spacing * (this.text_line + 1));\n }\n } /* CENTER_STEM */\n else {\n const extents = note.getStemExtents();\n y = extents.topY + (extents.baseY - extents.topY) / 2 + text_height / 2;\n }\n L('Rendering annotation: ', this.text, x, y);\n ctx.fillText(this.text, x, y);\n ctx.closeGroup();\n this.restoreStyle();\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Annotation.DEBUG` to `true`. */\nAnnotation.DEBUG = false;\nAnnotation.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n/** Text annotations can be positioned and justified relative to the note. */\nAnnotation.HorizontalJustify = AnnotationHorizontalJustify;\nAnnotation.HorizontalJustifyString = {\n left: AnnotationHorizontalJustify.LEFT,\n right: AnnotationHorizontalJustify.RIGHT,\n center: AnnotationHorizontalJustify.CENTER,\n centerStem: AnnotationHorizontalJustify.CENTER_STEM,\n};\nAnnotation.VerticalJustify = AnnotationVerticalJustify;\nAnnotation.VerticalJustifyString = {\n above: AnnotationVerticalJustify.TOP,\n top: AnnotationVerticalJustify.TOP,\n below: AnnotationVerticalJustify.BOTTOM,\n bottom: AnnotationVerticalJustify.BOTTOM,\n center: AnnotationVerticalJustify.CENTER,\n centerStem: AnnotationVerticalJustify.CENTER_STEM,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns.\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isGraceNote, isStaveNote, isStemmableNote, isTabNote } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Articulation.DEBUG)\n log('Vex.Flow.Articulation', args);\n}\nconst { ABOVE, BELOW } = Modifier.Position;\nfunction roundToNearestHalf(mathFn, value) {\n return mathFn(value / 0.5) * 0.5;\n}\n// This includes both staff and ledger lines\nfunction isWithinLines(line, position) {\n return position === ABOVE ? line <= 5 : line >= 1;\n}\nfunction getRoundingFunction(line, position) {\n if (isWithinLines(line, position)) {\n if (position === ABOVE) {\n return Math.ceil;\n }\n else {\n return Math.floor;\n }\n }\n else {\n return Math.round;\n }\n}\nfunction snapLineToStaff(canSitBetweenLines, line, position, offsetDirection) {\n // Initially, snap to nearest staff line or space\n const snappedLine = roundToNearestHalf(getRoundingFunction(line, position), line);\n const canSnapToStaffSpace = canSitBetweenLines && isWithinLines(snappedLine, position);\n const onStaffLine = snappedLine % 1 === 0;\n if (canSnapToStaffSpace && onStaffLine) {\n const HALF_STAFF_SPACE = 0.5;\n return snappedLine + HALF_STAFF_SPACE * -offsetDirection;\n }\n else {\n return snappedLine;\n }\n}\n// Helper function for checking if a Note object is either a StaveNote or a GraceNote.\nconst isStaveOrGraceNote = (note) => isStaveNote(note) || isGraceNote(note);\nfunction getTopY(note, textLine) {\n const stemDirection = note.getStemDirection();\n const { topY: stemTipY, baseY: stemBaseY } = note.getStemExtents();\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemTipY;\n }\n else {\n return stemBaseY;\n }\n }\n else {\n return Math.min(...note.getYs());\n }\n }\n else if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemTipY;\n }\n else {\n return note.checkStave().getYForTopText(textLine);\n }\n }\n else {\n return note.checkStave().getYForTopText(textLine);\n }\n }\n else {\n throw new RuntimeError('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes');\n }\n}\nfunction getBottomY(note, textLine) {\n const stemDirection = note.getStemDirection();\n const { topY: stemTipY, baseY: stemBaseY } = note.getStemExtents();\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemBaseY;\n }\n else {\n return stemTipY;\n }\n }\n else {\n return Math.max(...note.getYs());\n }\n }\n else if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return note.checkStave().getYForBottomText(textLine);\n }\n else {\n return stemTipY;\n }\n }\n else {\n return note.checkStave().getYForBottomText(textLine);\n }\n }\n else {\n throw new RuntimeError('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes');\n }\n}\n/**\n * Get the initial offset of the articulation from the y value of the starting position.\n * This is required because the top/bottom text positions already have spacing applied to\n * provide a \"visually pleasant\" default position. However the y values provided from\n * the stavenote's top/bottom do *not* have any pre-applied spacing. This function\n * normalizes this asymmetry.\n * @param note\n * @param position\n * @returns\n */\nfunction getInitialOffset(note, position) {\n const isOnStemTip = (position === ABOVE && note.getStemDirection() === Stem.UP) ||\n (position === BELOW && note.getStemDirection() === Stem.DOWN);\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem() && isOnStemTip) {\n return 0.5;\n }\n else {\n // this amount is larger than the stem-tip offset because we start from\n // the center of the notehead\n return 1;\n }\n }\n else {\n if (note.hasStem() && isOnStemTip) {\n return 1;\n }\n else {\n return 0;\n }\n }\n}\n/**\n * Articulations and Accents are modifiers that can be\n * attached to notes. The complete list of articulations is available in\n * `tables.ts` under `Vex.Flow.articulationCodes`.\n *\n * See `tests/articulation_tests.ts` for usage examples.\n */\nexport class Articulation extends Modifier {\n /**\n * Create a new articulation.\n * @param type entry in `Vex.Flow.articulationCodes` in `tables.ts`\n */\n constructor(type) {\n super();\n this.type = type;\n this.position = BELOW;\n this.render_options = {\n font_scale: 38,\n };\n this.reset();\n }\n /** Articulations category string. */\n static get CATEGORY() {\n return Category.Articulation;\n }\n /**\n * FIXME:\n * Most of the complex formatting logic (ie: snapping to space) is\n * actually done in .render(). But that logic belongs in this method.\n *\n * Unfortunately, this isn't possible because, by this point, stem lengths\n * have not yet been finalized. Finalized stem lengths are required to determine the\n * initial position of any stem-side articulation.\n *\n * This indicates that all objects should have their stave set before being\n * formatted. It can't be an optional if you want accurate vertical positioning.\n * Consistently positioned articulations that play nice with other modifiers\n * won't be possible until we stop relying on render-time formatting.\n *\n * Ideally, when this function has completed, the vertical articulation positions\n * should be ready to render without further adjustment. But the current state\n * is far from this ideal.\n */\n static format(articulations, state) {\n if (!articulations || articulations.length === 0)\n return false;\n const margin = 0.5;\n let maxGlyphWidth = 0;\n const getIncrement = (articulation, line, position) => roundToNearestHalf(getRoundingFunction(line, position), defined(articulation.glyph.getMetrics().height) / 10 + margin);\n articulations.forEach((articulation) => {\n const note = articulation.checkAttachedNote();\n maxGlyphWidth = Math.max(note.getGlyph().getWidth(), maxGlyphWidth);\n let lines = 5;\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let stemHeight = 0;\n // Decide if we need to consider beam direction in placement.\n if (isStemmableNote(note)) {\n const stem = note.getStem();\n if (stem) {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n const stave = note.getStave();\n if (stave) {\n lines = stave.getNumLines();\n }\n if (articulation.getPosition() === ABOVE) {\n let noteLine = note.getLineNumber(true);\n if (stemDirection === Stem.UP) {\n noteLine += stemHeight;\n }\n let increment = getIncrement(articulation, state.top_text_line, ABOVE);\n const curTop = noteLine + state.top_text_line + 0.5;\n // If articulation must be above stave, add lines between note and stave top\n if (!articulation.articulation.between_lines && curTop < lines) {\n increment += lines - curTop;\n }\n articulation.setTextLine(state.top_text_line);\n state.top_text_line += increment;\n }\n else if (articulation.getPosition() === BELOW) {\n let noteLine = Math.max(lines - note.getLineNumber(), 0);\n if (stemDirection === Stem.DOWN) {\n noteLine += stemHeight;\n }\n let increment = getIncrement(articulation, state.text_line, BELOW);\n const curBottom = noteLine + state.text_line + 0.5;\n // if articulation must be below stave, add lines from note to stave bottom\n if (!articulation.articulation.between_lines && curBottom < lines) {\n increment += lines - curBottom;\n }\n articulation.setTextLine(state.text_line);\n state.text_line += increment;\n }\n });\n const width = articulations\n .map((articulation) => articulation.getWidth())\n .reduce((maxWidth, articWidth) => Math.max(articWidth, maxWidth));\n const overlap = Math.min(Math.max(width - maxGlyphWidth, 0), Math.max(width - (state.left_shift + state.right_shift), 0));\n state.left_shift += overlap / 2;\n state.right_shift += overlap / 2;\n return true;\n }\n static easyScoreHook({ articulations }, note, builder) {\n if (!articulations)\n return;\n const articNameToCode = {\n staccato: 'a.',\n tenuto: 'a-',\n accent: 'a>',\n };\n articulations\n .split(',')\n .map((articString) => articString.trim().split('.'))\n .map(([name, position]) => {\n const artic = { type: articNameToCode[name] };\n if (position)\n artic.position = Modifier.PositionString[position];\n return builder.getFactory().Articulation(artic);\n })\n .map((artic) => note.addModifier(artic, 0));\n }\n reset() {\n this.articulation = Tables.articulationCodes(this.type);\n const articulation = defined(this.articulation, 'ArgumentError', `Articulation not found: ${this.type}`);\n const code = (this.position === ABOVE ? articulation.aboveCode : articulation.belowCode) || articulation.code;\n this.glyph = new Glyph(code !== null && code !== void 0 ? code : '', this.render_options.font_scale);\n this.setWidth(defined(this.glyph.getMetrics().width));\n }\n /** Render articulation in position next to note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const index = this.checkIndex();\n const { position, glyph, text_line: textLine } = this;\n const canSitBetweenLines = this.articulation.between_lines;\n const stave = note.checkStave();\n const staffSpace = stave.getSpacingBetweenLines();\n const isTab = isTabNote(note);\n // Articulations are centered over/under the note head.\n const { x } = note.getModifierStartXY(position, index);\n const shouldSitOutsideStaff = !canSitBetweenLines || isTab;\n const initialOffset = getInitialOffset(note, position);\n const padding = Tables.currentMusicFont().lookupMetric(`articulation.${glyph.getCode()}.padding`, 0);\n let y = {\n [ABOVE]: () => {\n glyph.setOrigin(0.5, 1);\n const y = getTopY(note, textLine) - (textLine + initialOffset) * staffSpace;\n return shouldSitOutsideStaff ? Math.min(stave.getYForTopText(Articulation.INITIAL_OFFSET), y) : y;\n },\n [BELOW]: () => {\n glyph.setOrigin(0.5, 0);\n const y = getBottomY(note, textLine) + (textLine + initialOffset) * staffSpace;\n return shouldSitOutsideStaff ? Math.max(stave.getYForBottomText(Articulation.INITIAL_OFFSET), y) : y;\n },\n }[position]();\n if (!isTab) {\n const offsetDirection = position === ABOVE ? -1 : +1;\n const noteLine = note.getKeyProps()[index].line;\n const distanceFromNote = (note.getYs()[index] - y) / staffSpace;\n const articLine = distanceFromNote + Number(noteLine);\n const snappedLine = snapLineToStaff(canSitBetweenLines, articLine, position, offsetDirection);\n if (isWithinLines(snappedLine, position))\n glyph.setOrigin(0.5, 0.5);\n y += Math.abs(snappedLine - articLine) * staffSpace * offsetDirection + padding * offsetDirection;\n }\n L(`Rendering articulation at (x: ${x}, y: ${y})`);\n glyph.render(ctx, x, y);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Articulation.DEBUG` to `true`. */\nArticulation.DEBUG = false;\nArticulation.INITIAL_OFFSET = -0.5;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Note } from './note';\nimport { Barline, BarlineType } from './stavebarline';\nimport { Category } from './typeguard';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (BarNote.DEBUG)\n log('Vex.Flow.BarNote', args);\n}\n/**\n * A `BarNote` is used to render bar lines (from `barline.ts`). `BarNote`s can\n * be added to a voice and rendered in the middle of a stave. Since it has no\n * duration, it consumes no `tick`s, and is dealt with appropriately by the formatter.\n *\n * See `tests/barnote_tests.ts` for usage examples.\n */\nexport class BarNote extends Note {\n constructor(type = BarlineType.SINGLE) {\n super({ duration: 'b' });\n this.metrics = {\n widths: {},\n };\n const TYPE = BarlineType;\n this.metrics.widths = {\n [TYPE.SINGLE]: 8,\n [TYPE.DOUBLE]: 12,\n [TYPE.END]: 15,\n [TYPE.REPEAT_BEGIN]: 14,\n [TYPE.REPEAT_END]: 14,\n [TYPE.REPEAT_BOTH]: 18,\n [TYPE.NONE]: 0,\n };\n // Tell the formatter that bar notes have no duration.\n this.ignore_ticks = true;\n this.setType(type);\n }\n static get CATEGORY() {\n return Category.BarNote;\n }\n /** Get the type of bar note.*/\n getType() {\n return this.type;\n }\n /** Set the type of bar note. */\n setType(type) {\n this.type = typeof type === 'string' ? Barline.typeString[type] : type;\n // Set width to width of relevant `Barline`.\n this.setWidth(this.metrics.widths[this.type]);\n return this;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n /** Overridden to ignore. */\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n /** Render note to stave. */\n draw() {\n const ctx = this.checkContext();\n L('Rendering bar line at: ', this.getAbsoluteX());\n this.applyStyle(ctx);\n const barline = new Barline(this.type);\n barline.setX(this.getAbsoluteX());\n barline.draw(this.checkStave());\n this.restoreStyle(ctx);\n this.setRendered();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.BarNote.DEBUG` to `true`. */\nBarNote.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TupletLocation } from './tuplet';\nimport { Category, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nfunction calculateStemDirection(notes) {\n let lineSum = 0;\n notes.forEach((note) => {\n if (note.keyProps) {\n note.keyProps.forEach((keyProp) => {\n lineSum += keyProp.line - 3;\n });\n }\n });\n if (lineSum >= 0) {\n return Stem.DOWN;\n }\n return Stem.UP;\n}\nfunction getStemSlope(firstNote, lastNote) {\n const firstStemTipY = firstNote.getStemExtents().topY;\n const firstStemX = firstNote.getStemX();\n const lastStemTipY = lastNote.getStemExtents().topY;\n const lastStemX = lastNote.getStemX();\n return (lastStemTipY - firstStemTipY) / (lastStemX - firstStemX);\n}\nexport const BEAM_LEFT = 'L';\nexport const BEAM_RIGHT = 'R';\nexport const BEAM_BOTH = 'B';\n/** `Beams` span over a set of `StemmableNotes`. */\nexport class Beam extends Element {\n constructor(notes, auto_stem = false) {\n super();\n this.slope = 0;\n this.y_shift = 0;\n /**\n * Overrides to default beam directions for secondary-level beams that do not\n * connect to any other note. See further explanation at\n * `setPartialBeamSideAt`\n */\n this.forcedPartialDirections = {};\n if (!notes || notes.length === 0) {\n throw new RuntimeError('BadArguments', 'No notes provided for beam.');\n }\n if (notes.length === 1) {\n throw new RuntimeError('BadArguments', 'Too few notes for beam.');\n }\n // Validate beam line, direction and ticks.\n this.ticks = notes[0].getIntrinsicTicks();\n if (this.ticks >= Tables.durationToTicks('4')) {\n throw new RuntimeError('BadArguments', 'Beams can only be applied to notes shorter than a quarter note.');\n }\n let i; // shared iterator\n let note;\n this.stem_direction = Stem.UP;\n for (i = 0; i < notes.length; ++i) {\n note = notes[i];\n if (note.hasStem()) {\n this.stem_direction = note.getStemDirection();\n break;\n }\n }\n let stem_direction = this.stem_direction;\n // Figure out optimal stem direction based on given notes\n if (auto_stem && isStaveNote(notes[0])) {\n stem_direction = calculateStemDirection(notes);\n }\n else if (auto_stem && isTabNote(notes[0])) {\n // Auto Stem TabNotes\n const stem_weight = notes.reduce((memo, note) => memo + note.getStemDirection(), 0);\n stem_direction = stem_weight > -1 ? Stem.UP : Stem.DOWN;\n }\n // Apply stem directions and attach beam to notes\n for (i = 0; i < notes.length; ++i) {\n note = notes[i];\n if (auto_stem) {\n note.setStemDirection(stem_direction);\n this.stem_direction = stem_direction;\n }\n note.setBeam(this);\n }\n this.postFormatted = false;\n this.notes = notes;\n this.beam_count = this.getBeamCount();\n this.break_on_indices = [];\n this.render_options = {\n beam_width: 5,\n max_slope: 0.25,\n min_slope: -0.25,\n slope_iterations: 20,\n slope_cost: 100,\n show_stemlets: false,\n stemlet_extension: 7,\n partial_beam_length: 10,\n flat_beams: false,\n min_flat_beam_offset: 15,\n };\n }\n static get CATEGORY() {\n return Category.Beam;\n }\n /** Get the direction of the beam */\n getStemDirection() {\n return this.stem_direction;\n }\n /**\n * Get the default beam groups for a provided time signature.\n * Attempt to guess if the time signature is not found in table.\n * Currently this is fairly naive.\n */\n static getDefaultBeamGroups(time_sig) {\n if (!time_sig || time_sig === 'c') {\n time_sig = '4/4';\n }\n const defaults = {\n '1/2': ['1/2'],\n '2/2': ['1/2'],\n '3/2': ['1/2'],\n '4/2': ['1/2'],\n '1/4': ['1/4'],\n '2/4': ['1/4'],\n '3/4': ['1/4'],\n '4/4': ['1/4'],\n '1/8': ['1/8'],\n '2/8': ['2/8'],\n '3/8': ['3/8'],\n '4/8': ['2/8'],\n '1/16': ['1/16'],\n '2/16': ['2/16'],\n '3/16': ['3/16'],\n '4/16': ['2/16'],\n };\n const groups = defaults[time_sig];\n if (groups === undefined) {\n // If no beam groups found, naively determine\n // the beam groupings from the time signature\n const beatTotal = parseInt(time_sig.split('/')[0], 10);\n const beatValue = parseInt(time_sig.split('/')[1], 10);\n const tripleMeter = beatTotal % 3 === 0;\n if (tripleMeter) {\n return [new Fraction(3, beatValue)];\n }\n else if (beatValue > 4) {\n return [new Fraction(2, beatValue)];\n }\n else if (beatValue <= 4) {\n return [new Fraction(1, beatValue)];\n }\n }\n else {\n return groups.map((group) => new Fraction().parse(group));\n }\n return [new Fraction(1, 4)];\n }\n /**\n * A helper function to automatically build basic beams for a voice. For more\n * complex auto-beaming use `Beam.generateBeams()`.\n * @param voice the voice to generate the beams for\n * @param stem_direction a stem direction to apply to the entire voice\n * @param groups an array of `Fraction` representing beat groupings for the beam\n */\n static applyAndGetBeams(voice, stem_direction, groups) {\n return Beam.generateBeams(voice.getTickables(), { groups, stem_direction });\n }\n /**\n * A helper function to autimatically build beams for a voice with\n * configuration options.\n *\n * Example configuration object:\n *\n * ```\n * config = {\n * groups: [new Vex.Flow.Fraction(2, 8)],\n * stem_direction: -1,\n * beam_rests: true,\n * beam_middle_only: true,\n * show_stemlets: false\n * };\n * ```\n * @param notes an array of notes to create the beams for\n * @param config the configuration object\n * @param config.stem_direction set to apply the same direction to all notes\n * @param config.beam_rests set to `true` to include rests in the beams\n * @param config.beam_middle_only set to `true` to only beam rests in the middle of the beat\n * @param config.show_stemlets set to `true` to draw stemlets for rests\n * @param config.maintain_stem_directions set to `true` to not apply new stem directions\n * @param config.groups array of `Fractions` that represent the beat structure to beam the notes\n *\n */\n static generateBeams(notes, config = {}) {\n if (!config.groups || !config.groups.length) {\n config.groups = [new Fraction(2, 8)];\n }\n // Convert beam groups to tick amounts\n const tickGroups = config.groups.map((group) => {\n if (!group.multiply) {\n throw new RuntimeError('InvalidBeamGroups', 'The beam groups must be an array of Vex.Flow.Fractions');\n }\n return group.clone().multiply(Tables.RESOLUTION, 1);\n });\n const unprocessedNotes = notes;\n let currentTickGroup = 0;\n let noteGroups = [];\n let currentGroup = [];\n function getTotalTicks(vf_notes) {\n return vf_notes.reduce((memo, note) => note.getTicks().clone().add(memo), new Fraction(0, 1));\n }\n function nextTickGroup() {\n if (tickGroups.length - 1 > currentTickGroup) {\n currentTickGroup += 1;\n }\n else {\n currentTickGroup = 0;\n }\n }\n function createGroups() {\n let nextGroup = [];\n // number of ticks in current group\n let currentGroupTotalTicks = new Fraction(0, 1);\n unprocessedNotes.forEach((unprocessedNote) => {\n nextGroup = [];\n if (unprocessedNote.shouldIgnoreTicks()) {\n noteGroups.push(currentGroup);\n currentGroup = nextGroup;\n return; // Ignore untickables (like bar notes)\n }\n currentGroup.push(unprocessedNote);\n const ticksPerGroup = tickGroups[currentTickGroup].clone();\n const totalTicks = getTotalTicks(currentGroup).add(currentGroupTotalTicks);\n // Double the amount of ticks in a group, if it's an unbeamable tuplet\n const unbeamable = Tables.durationToNumber(unprocessedNote.getDuration()) < 8;\n if (unbeamable && unprocessedNote.getTuplet()) {\n ticksPerGroup.numerator *= 2;\n }\n // If the note that was just added overflows the group tick total\n if (totalTicks.greaterThan(ticksPerGroup)) {\n // If the overflow note can be beamed, start the next group\n // with it. Unbeamable notes leave the group overflowed.\n if (!unbeamable) {\n const note = currentGroup.pop();\n if (note)\n nextGroup.push(note);\n }\n noteGroups.push(currentGroup);\n // We have overflown, so we're going to next tick group. As we might have\n // overflown by more than 1 group, we need to go forward as many times as\n // needed, decreasing currentGroupTotalTicks by as many ticks as there are\n // in current groups as we go forward.\n do {\n currentGroupTotalTicks = totalTicks.subtract(tickGroups[currentTickGroup]);\n nextTickGroup();\n } while (currentGroupTotalTicks.greaterThanEquals(tickGroups[currentTickGroup]));\n currentGroup = nextGroup;\n }\n else if (totalTicks.equals(ticksPerGroup)) {\n noteGroups.push(currentGroup);\n currentGroupTotalTicks = new Fraction(0, 1);\n currentGroup = nextGroup;\n nextTickGroup();\n }\n });\n // Adds any remainder notes beam\n if (currentGroup.length > 0) {\n noteGroups.push(currentGroup);\n }\n }\n function getBeamGroups() {\n return noteGroups.filter((group) => {\n if (group.length > 1) {\n let beamable = true;\n group.forEach((note) => {\n if (note.getIntrinsicTicks() >= Tables.durationToTicks('4')) {\n beamable = false;\n }\n });\n return beamable;\n }\n return false;\n });\n }\n // Splits up groups by Rest\n function sanitizeGroups() {\n const sanitizedGroups = [];\n noteGroups.forEach((group) => {\n let tempGroup = [];\n group.forEach((note, index, group) => {\n const isFirstOrLast = index === 0 || index === group.length - 1;\n const prevNote = group[index - 1];\n const breaksOnEachRest = !config.beam_rests && note.isRest();\n const breaksOnFirstOrLastRest = config.beam_rests && config.beam_middle_only && note.isRest() && isFirstOrLast;\n let breakOnStemChange = false;\n if (config.maintain_stem_directions && prevNote && !note.isRest() && !prevNote.isRest()) {\n const prevDirection = prevNote.getStemDirection();\n const currentDirection = note.getStemDirection();\n breakOnStemChange = currentDirection !== prevDirection;\n }\n const isUnbeamableDuration = parseInt(note.getDuration(), 10) < 8;\n // Determine if the group should be broken at this note\n const shouldBreak = breaksOnEachRest || breaksOnFirstOrLastRest || breakOnStemChange || isUnbeamableDuration;\n if (shouldBreak) {\n // Add current group\n if (tempGroup.length > 0) {\n sanitizedGroups.push(tempGroup);\n }\n // Start a new group. Include the current note if the group\n // was broken up by stem direction, as that note needs to start\n // the next group of notes\n tempGroup = breakOnStemChange ? [note] : [];\n }\n else {\n // Add note to group\n tempGroup.push(note);\n }\n });\n // If there is a remaining group, add it as well\n if (tempGroup.length > 0) {\n sanitizedGroups.push(tempGroup);\n }\n });\n noteGroups = sanitizedGroups;\n }\n function formatStems() {\n noteGroups.forEach((group) => {\n let stemDirection;\n if (config.maintain_stem_directions) {\n const note = findFirstNote(group);\n stemDirection = note ? note.getStemDirection() : Stem.UP;\n }\n else {\n if (config.stem_direction) {\n stemDirection = config.stem_direction;\n }\n else {\n stemDirection = calculateStemDirection(group);\n }\n }\n applyStemDirection(group, stemDirection);\n });\n }\n function findFirstNote(group) {\n for (let i = 0; i < group.length; i++) {\n const note = group[i];\n if (!note.isRest()) {\n return note;\n }\n }\n return false;\n }\n function applyStemDirection(group, direction) {\n group.forEach((note) => {\n note.setStemDirection(direction);\n });\n }\n // Get all of the tuplets in all of the note groups\n function getTuplets() {\n const uniqueTuplets = [];\n // Go through all of the note groups and inspect for tuplets\n noteGroups.forEach((group) => {\n let tuplet;\n group.forEach((note) => {\n const noteTuplet = note.getTuplet();\n if (noteTuplet && tuplet !== noteTuplet) {\n tuplet = noteTuplet;\n uniqueTuplets.push(tuplet);\n }\n });\n });\n return uniqueTuplets;\n }\n // Using closures to store the variables throughout the various functions\n // IMO Keeps it this process lot cleaner - but not super consistent with\n // the rest of the API's style - Silverwolf90 (Cyril)\n createGroups();\n sanitizeGroups();\n formatStems();\n // Get the notes to be beamed\n const beamedNoteGroups = getBeamGroups();\n // Get the tuplets in order to format them accurately\n const allTuplets = getTuplets();\n // Create a Vex.Flow.Beam from each group of notes to be beamed\n const beams = [];\n beamedNoteGroups.forEach((group) => {\n const beam = new Beam(group);\n if (config.show_stemlets) {\n beam.render_options.show_stemlets = true;\n }\n if (config.secondary_breaks) {\n beam.render_options.secondary_break_ticks = Tables.durationToTicks(config.secondary_breaks);\n }\n if (config.flat_beams === true) {\n beam.render_options.flat_beams = true;\n beam.render_options.flat_beam_offset = config.flat_beam_offset;\n }\n beams.push(beam);\n });\n // Reformat tuplets\n allTuplets.forEach((tuplet) => {\n // Set the tuplet location based on the stem direction\n const direction = tuplet.notes[0].stem_direction === Stem.DOWN ? TupletLocation.BOTTOM : TupletLocation.TOP;\n tuplet.setTupletLocation(direction);\n // If any of the notes in the tuplet are not beamed, draw a bracket.\n let bracketed = false;\n for (let i = 0; i < tuplet.notes.length; i++) {\n const note = tuplet.notes[i];\n if (!note.hasBeam()) {\n bracketed = true;\n break;\n }\n }\n tuplet.setBracketed(bracketed);\n });\n return beams;\n }\n /** Get the notes in this beam. */\n getNotes() {\n return this.notes;\n }\n /** Get the max number of beams in the set of notes. */\n getBeamCount() {\n const beamCounts = this.notes.map((note) => note.getGlyph().beam_count);\n const maxBeamCount = beamCounts.reduce((max, beamCount) => (beamCount > max ? beamCount : max));\n return maxBeamCount;\n }\n /** Set which note `indices` to break the secondary beam at. */\n breakSecondaryAt(indices) {\n this.break_on_indices = indices;\n return this;\n }\n /**\n * Forces the direction of a partial beam (a secondary-level beam that exists\n * on one note only of the beam group). This is useful in rhythms such as 6/8\n * eighth-sixteenth-eighth-sixteenth, where the direction of the beam on the\n * first sixteenth note can help imply whether the rhythm is to be felt as\n * three groups of eighth notes (typical) or as two groups of three-sixteenths\n * (less common):\n * ```\n * ┌───┬──┬──┐ ┌──┬──┬──┐\n * │ ├─ │ ─┤ vs │ ─┤ │ ─┤\n * │ │ │ │ │ │ │ │\n * ```\n */\n setPartialBeamSideAt(noteIndex, side) {\n this.forcedPartialDirections[noteIndex] = side;\n return this;\n }\n /**\n * Restore the default direction of a partial beam (a secondary-level beam\n * that does not connect to any other notes).\n */\n unsetPartialBeamSideAt(noteIndex) {\n delete this.forcedPartialDirections[noteIndex];\n return this;\n }\n /** Return the y coordinate for linear function. */\n getSlopeY(x, first_x_px, first_y_px, slope) {\n return first_y_px + (x - first_x_px) * slope;\n }\n /** Calculate the best possible slope for the provided notes. */\n calculateSlope() {\n const { notes, stem_direction: stemDirection, render_options: { max_slope, min_slope, slope_iterations, slope_cost }, } = this;\n const firstNote = notes[0];\n const initialSlope = getStemSlope(firstNote, notes[notes.length - 1]);\n const increment = (max_slope - min_slope) / slope_iterations;\n let minCost = Number.MAX_VALUE;\n let bestSlope = 0;\n let yShift = 0;\n // iterate through slope values to find best weighted fit\n for (let slope = min_slope; slope <= max_slope; slope += increment) {\n let totalStemExtension = 0;\n let yShiftTemp = 0;\n // iterate through notes, calculating y shift and stem extension\n for (let i = 1; i < notes.length; ++i) {\n const note = notes[i];\n if (note.hasStem() || note.isRest()) {\n const adjustedStemTipY = this.getSlopeY(note.getStemX(), firstNote.getStemX(), firstNote.getStemExtents().topY, slope) + yShiftTemp;\n const stemTipY = note.getStemExtents().topY;\n // beam needs to be shifted up to accommodate note\n if (stemTipY * stemDirection < adjustedStemTipY * stemDirection) {\n const diff = Math.abs(stemTipY - adjustedStemTipY);\n yShiftTemp += diff * -stemDirection;\n totalStemExtension += diff * i;\n }\n else {\n // beam overshoots note, account for the difference\n totalStemExtension += (stemTipY - adjustedStemTipY) * stemDirection;\n }\n }\n }\n // most engraving books suggest aiming for a slope about half the angle of the\n // difference between the first and last notes' stem length;\n const idealSlope = initialSlope / 2;\n const distanceFromIdeal = Math.abs(idealSlope - slope);\n // This tries to align most beams to something closer to the idealSlope, but\n // doesn't go crazy. To disable, set this.render_options.slope_cost = 0\n const cost = slope_cost * distanceFromIdeal + Math.abs(totalStemExtension);\n // update state when a more ideal slope is found\n if (cost < minCost) {\n minCost = cost;\n bestSlope = slope;\n yShift = yShiftTemp;\n }\n }\n this.slope = bestSlope;\n this.y_shift = yShift;\n }\n /** Calculate a slope and y-shift for flat beams. */\n calculateFlatSlope() {\n const { notes, stem_direction, render_options: { beam_width, min_flat_beam_offset, flat_beam_offset }, } = this;\n // If a flat beam offset has not yet been supplied or calculated,\n // generate one based on the notes in this particular note group\n let total = 0;\n let extremeY = 0; // Store the highest or lowest note here\n let extremeBeamCount = 0; // The beam count of the extreme note\n let currentExtreme = 0;\n for (let i = 0; i < notes.length; i++) {\n // Total up all of the offsets so we can average them out later\n const note = notes[i];\n const stemTipY = note.getStemExtents().topY;\n total += stemTipY;\n // Store the highest (stems-up) or lowest (stems-down) note so the\n // offset can be adjusted in case the average isn't enough\n if (stem_direction === Stem.DOWN && currentExtreme < stemTipY) {\n currentExtreme = stemTipY;\n extremeY = Math.max(...note.getYs());\n extremeBeamCount = note.getBeamCount();\n }\n else if (stem_direction === Stem.UP && (currentExtreme === 0 || currentExtreme > stemTipY)) {\n currentExtreme = stemTipY;\n extremeY = Math.min(...note.getYs());\n extremeBeamCount = note.getBeamCount();\n }\n }\n // Average the offsets to try and come up with a reasonable one that\n // works for all of the notes in the beam group.\n let offset = total / notes.length;\n // In case the average isn't long enough, add or subtract some more\n // based on the highest or lowest note (again, based on the stem\n // direction). This also takes into account the added height due to\n // the width of the beams.\n const beamWidth = beam_width * 1.5;\n const extremeTest = min_flat_beam_offset + extremeBeamCount * beamWidth;\n const newOffset = extremeY + extremeTest * -stem_direction;\n if (stem_direction === Stem.DOWN && offset < newOffset) {\n offset = extremeY + extremeTest;\n }\n else if (stem_direction === Stem.UP && offset > newOffset) {\n offset = extremeY - extremeTest;\n }\n if (!flat_beam_offset) {\n // Set the offset for the group based on the calculations above.\n this.render_options.flat_beam_offset = offset;\n }\n else if (stem_direction === Stem.DOWN && offset > flat_beam_offset) {\n this.render_options.flat_beam_offset = offset;\n }\n else if (stem_direction === Stem.UP && offset < flat_beam_offset) {\n this.render_options.flat_beam_offset = offset;\n }\n // for flat beams, the slope and y_shift are simply 0\n this.slope = 0;\n this.y_shift = 0;\n }\n /** Return the Beam y offset. */\n getBeamYToDraw() {\n const firstNote = this.notes[0];\n const firstStemTipY = firstNote.getStemExtents().topY;\n let beamY = firstStemTipY;\n // For flat beams, set the first and last Y to the offset, rather than\n // using the note's stem extents.\n if (this.render_options.flat_beams && this.render_options.flat_beam_offset) {\n beamY = this.render_options.flat_beam_offset;\n }\n return beamY;\n }\n /**\n * Create new stems for the notes in the beam, so that each stem\n * extends into the beams.\n */\n applyStemExtensions() {\n const { notes, slope, y_shift, stem_direction, beam_count, render_options: { show_stemlets, stemlet_extension, beam_width }, } = this;\n const firstNote = notes[0];\n const firstStemTipY = this.getBeamYToDraw();\n const firstStemX = firstNote.getStemX();\n for (let i = 0; i < notes.length; ++i) {\n const note = notes[i];\n const stem = note.getStem();\n if (stem) {\n const stemX = note.getStemX();\n const { topY: stemTipY } = note.getStemExtents();\n const beamedStemTipY = this.getSlopeY(stemX, firstStemX, firstStemTipY, slope) + y_shift;\n const preBeamExtension = stem.getExtension();\n const beamExtension = stem_direction === Stem.UP ? stemTipY - beamedStemTipY : beamedStemTipY - stemTipY;\n stem.setExtension(preBeamExtension + beamExtension);\n stem.adjustHeightForBeam();\n if (note.isRest() && show_stemlets) {\n const beamWidth = beam_width;\n const totalBeamWidth = (beam_count - 1) * beamWidth * 1.5 + beamWidth;\n stem.setVisibility(true).setStemlet(true, totalBeamWidth + stemlet_extension);\n }\n }\n }\n }\n /** Return upper level beam direction. */\n lookupBeamDirection(duration, prev_tick, tick, next_tick, noteIndex) {\n if (duration === '4') {\n return BEAM_LEFT;\n }\n const forcedBeamDirection = this.forcedPartialDirections[noteIndex];\n if (forcedBeamDirection)\n return forcedBeamDirection;\n const lookup_duration = `${Tables.durationToNumber(duration) / 2}`;\n const prev_note_gets_beam = prev_tick < Tables.durationToTicks(lookup_duration);\n const next_note_gets_beam = next_tick < Tables.durationToTicks(lookup_duration);\n const note_gets_beam = tick < Tables.durationToTicks(lookup_duration);\n if (prev_note_gets_beam && next_note_gets_beam && note_gets_beam) {\n return BEAM_BOTH;\n }\n else if (prev_note_gets_beam && !next_note_gets_beam && note_gets_beam) {\n return BEAM_LEFT;\n }\n else if (!prev_note_gets_beam && next_note_gets_beam && note_gets_beam) {\n return BEAM_RIGHT;\n }\n return this.lookupBeamDirection(lookup_duration, prev_tick, tick, next_tick, noteIndex);\n }\n /** Get the x coordinates for the beam lines of specific `duration`. */\n getBeamLines(duration) {\n const tick_of_duration = Tables.durationToTicks(duration);\n let beam_started = false;\n const beam_lines = [];\n let current_beam = undefined;\n const partial_beam_length = this.render_options.partial_beam_length;\n let previous_should_break = false;\n let tick_tally = 0;\n for (let i = 0; i < this.notes.length; ++i) {\n const note = this.notes[i];\n // See if we need to break secondary beams on this note.\n const ticks = note.getTicks().value();\n tick_tally += ticks;\n let should_break = false;\n // 8th note beams are always drawn.\n if (parseInt(duration, 10) >= 8) {\n // First, check to see if any indices were set up through breakSecondaryAt()\n should_break = this.break_on_indices.indexOf(i) !== -1;\n // If the secondary breaks were auto-configured in the render options,\n // handle that as well.\n if (this.render_options.secondary_break_ticks && tick_tally >= this.render_options.secondary_break_ticks) {\n tick_tally = 0;\n should_break = true;\n }\n }\n const note_gets_beam = note.getIntrinsicTicks() < tick_of_duration;\n const stem_x = note.getStemX() - Stem.WIDTH / 2;\n // Check to see if the next note in the group will get a beam at this\n // level. This will help to inform the partial beam logic below.\n const prev_note = this.notes[i - 1];\n const next_note = this.notes[i + 1];\n const next_note_gets_beam = next_note && next_note.getIntrinsicTicks() < tick_of_duration;\n const prev_note_gets_beam = prev_note && prev_note.getIntrinsicTicks() < tick_of_duration;\n const beam_alone = prev_note && next_note && note_gets_beam && !prev_note_gets_beam && !next_note_gets_beam;\n // const beam_alone = note_gets_beam && !prev_note_gets_beam && !next_note_gets_beam;\n if (note_gets_beam) {\n // This note gets a beam at the current level\n if (beam_started) {\n // We're currently in the middle of a beam. Just continue it on to\n // the stem X of the current note.\n current_beam = beam_lines[beam_lines.length - 1];\n current_beam.end = stem_x;\n // If a secondary beam break is set up, end the beam right now.\n if (should_break) {\n beam_started = false;\n if (next_note && !next_note_gets_beam && current_beam.end === undefined) {\n // This note gets a beam,.but the next one does not. This means\n // we need a partial pointing right.\n current_beam.end = current_beam.start - partial_beam_length;\n }\n }\n }\n else {\n // No beam started yet. Start a new one.\n current_beam = { start: stem_x, end: undefined };\n beam_started = true;\n if (beam_alone) {\n // previous and next beam exists and does not get a beam but current gets it.\n const prev_tick = prev_note.getIntrinsicTicks();\n const next_tick = next_note.getIntrinsicTicks();\n const tick = note.getIntrinsicTicks();\n const beam_direction = this.lookupBeamDirection(duration, prev_tick, tick, next_tick, i);\n if ([BEAM_LEFT, BEAM_BOTH].includes(beam_direction)) {\n current_beam.end = current_beam.start - partial_beam_length;\n }\n else {\n current_beam.end = current_beam.start + partial_beam_length;\n }\n }\n else if (!next_note_gets_beam) {\n // The next note doesn't get a beam. Draw a partial.\n if ((previous_should_break || i === 0) && next_note) {\n // This is the first note (but not the last one), or it is\n // following a secondary break. Draw a partial to the right.\n current_beam.end = current_beam.start + partial_beam_length;\n }\n else {\n // By default, draw a partial to the left.\n current_beam.end = current_beam.start - partial_beam_length;\n }\n }\n else if (should_break) {\n // This note should have a secondary break after it. Even though\n // we just started a beam, it needs to end immediately.\n current_beam.end = current_beam.start - partial_beam_length;\n beam_started = false;\n }\n beam_lines.push(current_beam);\n }\n }\n else {\n // The current note does not get a beam.\n beam_started = false;\n }\n // Store the secondary break flag to inform the partial beam logic in\n // the next iteration of the loop.\n previous_should_break = should_break;\n }\n // Add a partial beam pointing left if this is the last note in the group\n const last_beam = beam_lines[beam_lines.length - 1];\n if (last_beam && last_beam.end === undefined) {\n last_beam.end = last_beam.start - partial_beam_length;\n }\n return beam_lines;\n }\n /** Render the stems for each note. */\n drawStems(ctx) {\n this.notes.forEach((note) => {\n const stem = note.getStem();\n if (stem) {\n const stem_x = note.getStemX();\n stem.setNoteHeadXBounds(stem_x, stem_x);\n stem.setContext(ctx).draw();\n }\n }, this);\n }\n // Render the beam lines\n drawBeamLines(ctx) {\n const valid_beam_durations = ['4', '8', '16', '32', '64'];\n const firstNote = this.notes[0];\n let beamY = this.getBeamYToDraw();\n const firstStemX = firstNote.getStemX();\n const beamThickness = this.render_options.beam_width * this.stem_direction;\n // Draw the beams.\n for (let i = 0; i < valid_beam_durations.length; ++i) {\n const duration = valid_beam_durations[i];\n const beamLines = this.getBeamLines(duration);\n for (let j = 0; j < beamLines.length; ++j) {\n const beam_line = beamLines[j];\n const startBeamX = beam_line.start;\n const startBeamY = this.getSlopeY(startBeamX, firstStemX, beamY, this.slope);\n const lastBeamX = beam_line.end;\n if (lastBeamX) {\n const lastBeamY = this.getSlopeY(lastBeamX, firstStemX, beamY, this.slope);\n ctx.openGroup('beam', this.getAttribute('id'));\n ctx.beginPath();\n ctx.moveTo(startBeamX, startBeamY);\n ctx.lineTo(startBeamX, startBeamY + beamThickness);\n ctx.lineTo(lastBeamX + 1, lastBeamY + beamThickness);\n ctx.lineTo(lastBeamX + 1, lastBeamY);\n ctx.closePath();\n ctx.fill();\n ctx.closeGroup();\n }\n else {\n throw new RuntimeError('NoLastBeamX', 'lastBeamX undefined.');\n }\n }\n beamY += beamThickness * 1.5;\n }\n }\n /** Pre-format the beam. */\n preFormat() {\n return this;\n }\n /**\n * Post-format the beam. This can only be called after\n * the notes in the beam have both `x` and `y` values. ie: they've\n * been formatted and have staves.\n */\n postFormat() {\n if (this.postFormatted)\n return;\n // Calculate a smart slope if we're not forcing the beams to be flat.\n if (isTabNote(this.notes[0]) || this.render_options.flat_beams) {\n this.calculateFlatSlope();\n }\n else {\n this.calculateSlope();\n }\n this.applyStemExtensions();\n this.postFormatted = true;\n }\n /** Render the beam to the canvas context */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n if (this.unbeamable)\n return;\n if (!this.postFormatted) {\n this.postFormat();\n }\n this.drawStems(ctx);\n this.applyStyle();\n this.drawBeamLines(ctx);\n this.restoreStyle();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Modifier } from './modifier';\nimport { TextFormatter } from './textformatter';\nimport { Category, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\n/** Bend implements tablature bends. */\nexport class Bend extends Modifier {\n /**\n * Example of a phrase:\n * ```\n * [{\n * type: UP,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: DOWN,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: UP,\n * text: \"half\"\n * width: 8;\n * },\n * {\n * type: UP,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: DOWN,\n * text: \"1 1/2\"\n * width: 8;\n * }]\n * ```\n * @param text text for bend (\"Full\", \"Half\", etc.) (DEPRECATED)\n * @param release if true, render a release. (DEPRECATED)\n * @param phrase if set, ignore \"text\" and \"release\", and use the more sophisticated phrase specified\n */\n constructor(text, release = false, phrase) {\n super();\n this.text = text;\n this.x_shift = 0;\n this.release = release;\n this.tap = '';\n this.resetFont();\n this.render_options = {\n line_width: 1.5,\n line_style: '#777777',\n bend_width: 8,\n release_width: 8,\n };\n if (phrase) {\n this.phrase = phrase;\n }\n else {\n // Backward compatibility\n this.phrase = [{ type: Bend.UP, text: this.text }];\n if (this.release)\n this.phrase.push({ type: Bend.DOWN, text: '' });\n }\n this.updateWidth();\n }\n static get CATEGORY() {\n return Category.Bend;\n }\n static get UP() {\n return 0;\n }\n static get DOWN() {\n return 1;\n }\n // Arrange bends in `ModifierContext`\n static format(bends, state) {\n if (!bends || bends.length === 0)\n return false;\n let last_width = 0;\n // Format Bends\n for (let i = 0; i < bends.length; ++i) {\n const bend = bends[i];\n const note = bend.checkAttachedNote();\n if (isTabNote(note)) {\n const stringPos = note.leastString() - 1;\n if (state.top_text_line < stringPos) {\n state.top_text_line = stringPos;\n }\n }\n bend.setXShift(last_width);\n last_width = bend.getWidth();\n bend.setTextLine(state.top_text_line);\n }\n state.right_shift += last_width;\n state.top_text_line += 1;\n return true;\n }\n /** Set horizontal shift in pixels. */\n setXShift(value) {\n this.x_shift = value;\n this.updateWidth();\n return this;\n }\n setTap(value) {\n this.tap = value;\n return this;\n }\n /** Get text provided in the constructor. */\n getText() {\n return this.text;\n }\n getTextHeight() {\n const textFormatter = TextFormatter.create(this.textFont);\n return textFormatter.maxHeight;\n }\n /** Recalculate width. */\n updateWidth() {\n const textFormatter = TextFormatter.create(this.textFont);\n const measureText = (text) => {\n return textFormatter.getWidthForTextInPx(text);\n };\n let totalWidth = 0;\n for (let i = 0; i < this.phrase.length; ++i) {\n const bend = this.phrase[i];\n if (bend.width !== undefined) {\n totalWidth += bend.width;\n }\n else {\n const additional_width = bend.type === Bend.UP ? this.render_options.bend_width : this.render_options.release_width;\n bend.width = Math.max(additional_width, measureText(bend.text)) + 3;\n bend.draw_width = bend.width / 2;\n totalWidth += bend.width;\n }\n }\n this.setWidth(totalWidth + this.x_shift);\n return this;\n }\n /** Draw the bend on the rendering context. */\n draw() {\n var _a;\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(Modifier.Position.RIGHT, this.index);\n start.x += 3;\n start.y += 0.5;\n const x_shift = this.x_shift;\n const stave = note.checkStave();\n const spacing = stave.getSpacingBetweenLines();\n const lowestY = note.getYs().reduce((a, b) => (a < b ? a : b));\n // this.text_line is relative to top string in the group.\n const bend_height = start.y - ((this.text_line + 1) * spacing + start.y - lowestY) + 3;\n const annotation_y = start.y - ((this.text_line + 1) * spacing + start.y - lowestY) - 1;\n const renderBend = (x, y, width, height) => {\n const cp_x = x + width;\n const cp_y = y;\n ctx.save();\n ctx.beginPath();\n ctx.setLineWidth(this.render_options.line_width);\n ctx.setStrokeStyle(this.render_options.line_style);\n ctx.setFillStyle(this.render_options.line_style);\n ctx.moveTo(x, y);\n ctx.quadraticCurveTo(cp_x, cp_y, x + width, height);\n ctx.stroke();\n ctx.restore();\n };\n const renderRelease = (x, y, width, height) => {\n ctx.save();\n ctx.beginPath();\n ctx.setLineWidth(this.render_options.line_width);\n ctx.setStrokeStyle(this.render_options.line_style);\n ctx.setFillStyle(this.render_options.line_style);\n ctx.moveTo(x, height);\n ctx.quadraticCurveTo(x + width, height, x + width, y);\n ctx.stroke();\n ctx.restore();\n };\n const renderArrowHead = (x, y, direction) => {\n const width = 4;\n const yBase = y + width * direction;\n ctx.beginPath();\n ctx.moveTo(x, y); // tip of the arrow\n ctx.lineTo(x - width, yBase);\n ctx.lineTo(x + width, yBase);\n ctx.closePath();\n ctx.fill();\n };\n const renderText = (x, text) => {\n ctx.save();\n ctx.setFont(this.textFont);\n const render_x = x - ctx.measureText(text).width / 2;\n ctx.fillText(text, render_x, annotation_y);\n ctx.restore();\n };\n let last_bend = undefined;\n let last_bend_draw_width = 0;\n let last_drawn_width = 0;\n if ((_a = this.tap) === null || _a === void 0 ? void 0 : _a.length) {\n const tapStart = note.getModifierStartXY(Modifier.Position.CENTER, this.index);\n renderText(tapStart.x, this.tap);\n }\n for (let i = 0; i < this.phrase.length; ++i) {\n const bend = this.phrase[i];\n if (!bend.draw_width)\n bend.draw_width = 0;\n if (i === 0)\n bend.draw_width += x_shift;\n last_drawn_width = bend.draw_width + last_bend_draw_width - (i === 1 ? x_shift : 0);\n if (bend.type === Bend.UP) {\n if (last_bend && last_bend.type === Bend.UP) {\n renderArrowHead(start.x, bend_height, +1);\n }\n renderBend(start.x, start.y, last_drawn_width, bend_height);\n }\n if (bend.type === Bend.DOWN) {\n if (last_bend && last_bend.type === Bend.UP) {\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n if (last_bend && last_bend.type === Bend.DOWN) {\n renderArrowHead(start.x, start.y, -1);\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n if (!last_bend) {\n last_drawn_width = bend.draw_width;\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n }\n renderText(start.x + last_drawn_width, bend.text);\n last_bend = bend;\n last_bend_draw_width = bend.draw_width;\n last_bend.x = start.x;\n start.x += last_drawn_width;\n }\n if (!last_bend || last_bend.x == undefined) {\n throw new RuntimeError('NoLastBendForBend', 'Internal error.');\n }\n // Final arrowhead and text\n if (last_bend.type === Bend.UP) {\n renderArrowHead(last_bend.x + last_drawn_width, bend_height, +1);\n }\n else if (last_bend.type === Bend.DOWN) {\n renderArrowHead(last_bend.x + last_drawn_width, start.y, -1);\n }\n }\n}\n/** Default text font. */\nBend.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nexport class BoundingBox {\n constructor(x, y, w, h) {\n this.x = x;\n this.y = y;\n this.w = w;\n this.h = h;\n }\n /**\n * Create a new copy.\n */\n static copy(that) {\n return new BoundingBox(that.x, that.y, that.w, that.h);\n }\n /** Get x position. */\n getX() {\n return this.x;\n }\n /** Get y position. */\n getY() {\n return this.y;\n }\n /** Get width. */\n getW() {\n return this.w;\n }\n /** Get height. */\n getH() {\n return this.h;\n }\n /** Set x position. */\n setX(x) {\n this.x = x;\n return this;\n }\n /** Set y position. */\n setY(y) {\n this.y = y;\n return this;\n }\n /** Set width. */\n setW(w) {\n this.w = w;\n return this;\n }\n /** Set height. */\n setH(h) {\n this.h = h;\n return this;\n }\n /** Move to position. */\n move(x, y) {\n this.x += x;\n this.y += y;\n return this;\n }\n /** Clone. */\n clone() {\n return BoundingBox.copy(this);\n }\n /**\n * Merge my box with given box. Creates a bigger bounding box unless\n * the given box is contained in this one.\n */\n mergeWith(boundingBox) {\n const that = boundingBox;\n const new_x = this.x < that.x ? this.x : that.x;\n const new_y = this.y < that.y ? this.y : that.y;\n const new_w = Math.max(this.x + this.w, that.x + that.w) - new_x;\n const new_h = Math.max(this.y + this.h, that.y + that.h) - new_y;\n this.x = new_x;\n this.y = new_y;\n this.w = new_w;\n this.h = new_h;\n return this;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n/**\n * BoundingBoxComputation computes metrics for a bounding box by continuously\n * taking canvas path commands.\n *\n * Warning: This class is merely a crutch to get bounding box information without\n * explicit metadata. This is likely to get deprecated following SMuFL support.\n *\n * based on: https://github.com/canvg/canvg/blob/master/src/BoundingBox.ts (MIT License)\n */\nexport class BoundingBoxComputation {\n constructor() {\n this.x1 = Number.NaN;\n this.y1 = Number.NaN;\n this.x2 = Number.NaN;\n this.y2 = Number.NaN;\n }\n /** Get calculated X1. */\n getX1() {\n return this.x1;\n }\n /** Get calculated Y1. */\n getY1() {\n return this.y1;\n }\n /** Get calculated width. */\n width() {\n return this.x2 - this.x1;\n }\n /** Get calculated height. */\n height() {\n return this.y2 - this.y1;\n }\n /** Add point to BoundingBox. */\n addPoint(x, y) {\n if (isNaN(this.x1) || x < this.x1)\n this.x1 = x;\n if (isNaN(this.x2) || x > this.x2)\n this.x2 = x;\n if (isNaN(this.y1) || y < this.y1)\n this.y1 = y;\n if (isNaN(this.y2) || y > this.y2)\n this.y2 = y;\n }\n /** Add X to BoundingBox. */\n addX(x) {\n this.addPoint(x, this.y1);\n }\n /** Add Y to BoundingBox. */\n addY(y) {\n this.addPoint(this.x1, y);\n }\n /** Add quadratic curve to BoundingBox. */\n addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {\n this.addPoint(p0x, p0y);\n this.addPoint(p2x, p2y);\n const p01x = p1x - p0x;\n const p12x = p2x - p1x;\n let denom = p01x - p12x;\n if (denom != 0) {\n const t = p01x / denom;\n if (t > 0 && t < 1) {\n const it = 1 - t;\n this.addX(it * it * p0x + 2 * it * t * p1x + t * t * p2x);\n }\n }\n const p01y = p1y - p0y;\n const p12y = p2y - p1y;\n denom = p01y - p12y;\n if (denom != 0) {\n const t = p01y / denom;\n if (t > 0 && t < 1) {\n const it = 1 - t;\n this.addY(it * it * p0y + 2 * it * t * p1y + t * t * p2y);\n }\n }\n }\n /** Add bezier curve to BoundingBox. */\n addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\n // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n const p0 = [p0x, p0y];\n const p1 = [p1x, p1y];\n const p2 = [p2x, p2y];\n const p3 = [p3x, p3y];\n let i;\n this.addPoint(p0[0], p0[1]);\n this.addPoint(p3[0], p3[1]);\n const f = (t, i) => Math.pow(1 - t, 3) * p0[i] +\n 3 * Math.pow(1 - t, 2) * t * p1[i] +\n 3 * (1 - t) * Math.pow(t, 2) * p2[i] +\n Math.pow(t, 3) * p3[i];\n for (i = 0; i <= 1; i++) {\n const b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n const a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n const c = 3 * p1[i] - 3 * p0[i];\n if (a === 0) {\n if (b === 0)\n continue;\n const t = -c / b;\n if (0 < t && t < 1) {\n if (i === 0)\n this.addX(f(t, i));\n if (i === 1)\n this.addY(f(t, i));\n }\n continue;\n }\n const b2ac = Math.pow(b, 2) - 4 * c * a;\n if (b2ac < 0)\n continue;\n const t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n if (0 < t1 && t1 < 1) {\n if (i === 0)\n this.addX(f(t1, i));\n if (i === 1)\n this.addY(f(t1, i));\n }\n const t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n if (0 < t2 && t2 < 1) {\n if (i === 0)\n this.addX(f(t2, i));\n if (i === 1)\n this.addY(f(t2, i));\n }\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from './font';\nimport { RenderContext } from './rendercontext';\nimport { globalObject, warn } from './util';\nimport { isHTMLCanvas } from './web';\n/**\n * A rendering context for the Canvas backend. This class serves as a proxy for the\n * underlying CanvasRenderingContext2D object, part of the browser's API.\n */\nexport class CanvasContext extends RenderContext {\n constructor(context) {\n super();\n /** Height of one line of text (in pixels). */\n this.textHeight = 0;\n this.context2D = context;\n if (!context.canvas) {\n this.canvas = {\n width: CanvasContext.WIDTH,\n height: CanvasContext.HEIGHT,\n };\n }\n else {\n this.canvas = context.canvas;\n }\n }\n static get WIDTH() {\n return 600;\n }\n static get HEIGHT() {\n return 400;\n }\n static get CANVAS_BROWSER_SIZE_LIMIT() {\n return 32767; // Chrome/Firefox. Could be determined more precisely by npm module canvas-size.\n }\n /**\n * Ensure that width and height do not exceed the browser limit.\n * @returns array of [width, height] clamped to the browser limit.\n */\n static sanitizeCanvasDims(width, height) {\n const limit = this.CANVAS_BROWSER_SIZE_LIMIT;\n if (Math.max(width, height) > limit) {\n warn('Canvas dimensions exceed browser limit. Cropping to ' + limit);\n if (width > limit) {\n width = limit;\n }\n if (height > limit) {\n height = limit;\n }\n }\n return [width, height];\n }\n /**\n * Set all pixels to transparent black rgba(0,0,0,0).\n */\n clear() {\n this.context2D.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n // eslint-disable-next-line\n openGroup(cls, id, attrs) {\n // Containers not implemented.\n }\n closeGroup() {\n // Containers not implemented.\n }\n // eslint-disable-next-line\n add(child) {\n // Containers not implemented.\n }\n setFillStyle(style) {\n this.context2D.fillStyle = style;\n return this;\n }\n /** CanvasContext ignores `setBackgroundFillStyle()`. */\n // eslint-disable-next-line\n setBackgroundFillStyle(style) {\n // DO NOTHING\n return this;\n }\n setStrokeStyle(style) {\n this.context2D.strokeStyle = style;\n return this;\n }\n setShadowColor(color) {\n this.context2D.shadowColor = color;\n return this;\n }\n setShadowBlur(blur) {\n // CanvasRenderingContext2D does not scale the shadow blur by the current\n // transform, so we have to do it manually. We assume uniform scaling\n // (though allow for rotation) because the blur can only be scaled\n // uniformly anyway.\n const t = this.context2D.getTransform();\n const scale = Math.sqrt(t.a * t.a + t.b * t.b + t.c * t.c + t.d * t.d);\n this.context2D.shadowBlur = scale * blur;\n return this;\n }\n setLineWidth(width) {\n this.context2D.lineWidth = width;\n return this;\n }\n setLineCap(capType) {\n this.context2D.lineCap = capType;\n return this;\n }\n setLineDash(dash) {\n this.context2D.setLineDash(dash);\n return this;\n }\n scale(x, y) {\n this.context2D.scale(x, y);\n return this;\n }\n resize(width, height) {\n const canvas = this.context2D.canvas;\n const devicePixelRatio = globalObject().devicePixelRatio || 1;\n // Scale the canvas size by the device pixel ratio clamping to the maximum supported size.\n [width, height] = CanvasContext.sanitizeCanvasDims(width * devicePixelRatio, height * devicePixelRatio);\n // Divide back down by the pixel ratio and convert to integers.\n width = (width / devicePixelRatio) | 0;\n height = (height / devicePixelRatio) | 0;\n canvas.width = width * devicePixelRatio;\n canvas.height = height * devicePixelRatio;\n // The canvas could be an instance of either HTMLCanvasElement or an OffscreenCanvas.\n // Only HTMLCanvasElement has a style attribute.\n if (isHTMLCanvas(canvas)) {\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n }\n return this.scale(devicePixelRatio, devicePixelRatio);\n }\n rect(x, y, width, height) {\n this.context2D.rect(x, y, width, height);\n return this;\n }\n fillRect(x, y, width, height) {\n this.context2D.fillRect(x, y, width, height);\n return this;\n }\n /**\n * Set the pixels in a rectangular area to transparent black rgba(0,0,0,0).\n */\n clearRect(x, y, width, height) {\n this.context2D.clearRect(x, y, width, height);\n return this;\n }\n beginPath() {\n this.context2D.beginPath();\n return this;\n }\n moveTo(x, y) {\n this.context2D.moveTo(x, y);\n return this;\n }\n lineTo(x, y) {\n this.context2D.lineTo(x, y);\n return this;\n }\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\n this.context2D.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n return this;\n }\n quadraticCurveTo(cpx, cpy, x, y) {\n this.context2D.quadraticCurveTo(cpx, cpy, x, y);\n return this;\n }\n arc(x, y, radius, startAngle, endAngle, counterclockwise) {\n this.context2D.arc(x, y, radius, startAngle, endAngle, counterclockwise);\n return this;\n }\n fill() {\n this.context2D.fill();\n return this;\n }\n stroke() {\n this.context2D.stroke();\n return this;\n }\n closePath() {\n this.context2D.closePath();\n return this;\n }\n measureText(text) {\n const metrics = this.context2D.measureText(text);\n let y = 0;\n let height = 0;\n if (metrics.fontBoundingBoxAscent) {\n y = -metrics.fontBoundingBoxAscent;\n height = metrics.fontBoundingBoxDescent + metrics.fontBoundingBoxAscent;\n }\n else {\n y = -metrics.actualBoundingBoxAscent;\n height = metrics.actualBoundingBoxDescent + metrics.actualBoundingBoxAscent;\n }\n // Return x, y, width & height in the same manner as svg getBBox\n return {\n x: 0,\n y: y,\n width: metrics.width,\n height: height,\n };\n }\n fillText(text, x, y) {\n this.context2D.fillText(text, x, y);\n return this;\n }\n save() {\n this.context2D.save();\n return this;\n }\n restore() {\n this.context2D.restore();\n return this;\n }\n set fillStyle(style) {\n this.context2D.fillStyle = style;\n }\n get fillStyle() {\n return this.context2D.fillStyle;\n }\n set strokeStyle(style) {\n this.context2D.strokeStyle = style;\n }\n get strokeStyle() {\n return this.context2D.strokeStyle;\n }\n /**\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n */\n setFont(f, size, weight, style) {\n const fontInfo = Font.validate(f, size, weight, style);\n this.context2D.font = Font.toCSSString(fontInfo);\n this.textHeight = Font.convertSizeToPixelValue(fontInfo.size);\n return this;\n }\n /** Return a string of the form `'italic bold 15pt Arial'` */\n getFont() {\n return this.context2D.font;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Author: Aaron (@AaronDavidNewman)\n//\n// This implements chord symbols above/below a chord.\n// Chord symbols are modifiers that can be attached to notes.\n// They can contain multiple 'blocks' which represent text or\n// glyphs with various positioning options.\n//\n// See `tests/chordsymbol_tests.ts` for usage examples.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category, isStemmableNote } from './typeguard';\nimport { log } from './util';\n// To enable logging for this class. Set `Vex.Flow.ChordSymbol.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (ChordSymbol.DEBUG)\n log('Vex.Flow.ChordSymbol', args);\n}\nexport var ChordSymbolHorizontalJustify;\n(function (ChordSymbolHorizontalJustify) {\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"LEFT\"] = 1] = \"LEFT\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"CENTER\"] = 2] = \"CENTER\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"RIGHT\"] = 3] = \"RIGHT\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(ChordSymbolHorizontalJustify || (ChordSymbolHorizontalJustify = {}));\nexport var ChordSymbolVerticalJustify;\n(function (ChordSymbolVerticalJustify) {\n ChordSymbolVerticalJustify[ChordSymbolVerticalJustify[\"TOP\"] = 1] = \"TOP\";\n ChordSymbolVerticalJustify[ChordSymbolVerticalJustify[\"BOTTOM\"] = 2] = \"BOTTOM\";\n})(ChordSymbolVerticalJustify || (ChordSymbolVerticalJustify = {}));\nexport var SymbolTypes;\n(function (SymbolTypes) {\n SymbolTypes[SymbolTypes[\"GLYPH\"] = 1] = \"GLYPH\";\n SymbolTypes[SymbolTypes[\"TEXT\"] = 2] = \"TEXT\";\n SymbolTypes[SymbolTypes[\"LINE\"] = 3] = \"LINE\";\n})(SymbolTypes || (SymbolTypes = {}));\nexport var SymbolModifiers;\n(function (SymbolModifiers) {\n SymbolModifiers[SymbolModifiers[\"NONE\"] = 1] = \"NONE\";\n SymbolModifiers[SymbolModifiers[\"SUBSCRIPT\"] = 2] = \"SUBSCRIPT\";\n SymbolModifiers[SymbolModifiers[\"SUPERSCRIPT\"] = 3] = \"SUPERSCRIPT\";\n})(SymbolModifiers || (SymbolModifiers = {}));\n/**\n * ChordSymbol is a modifier that creates a chord symbol above/below a chord.\n * As a modifier, it is attached to an existing note.\n */\nexport class ChordSymbol extends Modifier {\n constructor() {\n super();\n this.symbolBlocks = [];\n this.horizontal = ChordSymbolHorizontalJustify.LEFT;\n this.vertical = ChordSymbolVerticalJustify.TOP;\n this.useKerning = true;\n this.reportWidth = true;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.ChordSymbol;\n }\n static get superSubRatio() {\n return ChordSymbol.metrics.global.superSubRatio;\n }\n /** Currently unused: Globally turn off text formatting, if the built-in formatting does not work for your font. */\n static set NO_TEXT_FORMAT(val) {\n ChordSymbol.noFormat = val;\n }\n static get NO_TEXT_FORMAT() {\n return ChordSymbol.noFormat;\n }\n // eslint-disable-next-line\n static getMetricForGlyph(glyphCode) {\n if (ChordSymbol.metrics[glyphCode]) {\n return ChordSymbol.metrics[glyphCode];\n }\n return undefined;\n }\n static get engravingFontResolution() {\n return Tables.currentMusicFont().getResolution();\n }\n static get spacingBetweenBlocks() {\n return ChordSymbol.metrics.global.spacing / ChordSymbol.engravingFontResolution;\n }\n static getWidthForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0.65; // probably should do something here.\n }\n return metric.advanceWidth / ChordSymbol.engravingFontResolution;\n }\n static getYShiftForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0;\n }\n return metric.yOffset / ChordSymbol.engravingFontResolution;\n }\n static getXShiftForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0;\n }\n return (-1 * metric.leftSideBearing) / ChordSymbol.engravingFontResolution;\n }\n static get superscriptOffset() {\n return ChordSymbol.metrics.global.superscriptOffset / ChordSymbol.engravingFontResolution;\n }\n static get subscriptOffset() {\n return ChordSymbol.metrics.global.subscriptOffset / ChordSymbol.engravingFontResolution;\n }\n static get kerningOffset() {\n return ChordSymbol.metrics.global.kerningOffset / ChordSymbol.engravingFontResolution;\n }\n // eslint-disable-next-line\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.chordSymbol;\n }\n static get lowerKerningText() {\n // For example, see: `bravura_metrics.ts`\n // BravuraMetrics.glyphs.chordSymbol.global.lowerKerningText, which returns an array of letters.\n // ['D', 'F', 'P', 'T', 'V', 'Y']\n return ChordSymbol.metrics.global.lowerKerningText;\n }\n static get upperKerningText() {\n return ChordSymbol.metrics.global.upperKerningText;\n }\n static isSuperscript(block) {\n return block.symbolModifier !== undefined && block.symbolModifier === SymbolModifiers.SUPERSCRIPT;\n }\n static isSubscript(block) {\n return block.symbolModifier !== undefined && block.symbolModifier === SymbolModifiers.SUBSCRIPT;\n }\n static get minPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /**\n * Estimate the width of the whole chord symbol, based on the sum of the widths of the individual blocks.\n * Estimate how many lines above/below the staff we need.\n */\n static format(symbols, state) {\n var _a;\n if (!symbols || symbols.length === 0)\n return false;\n let width = 0;\n let nonSuperWidth = 0;\n let leftWidth = 0;\n let rightWidth = 0;\n let maxLeftGlyphWidth = 0;\n let maxRightGlyphWidth = 0;\n for (const symbol of symbols) {\n const fontSize = Font.convertSizeToPointValue((_a = symbol.textFont) === null || _a === void 0 ? void 0 : _a.size);\n const fontAdj = Font.scaleSize(fontSize, 0.05);\n const glyphAdj = fontAdj * 2;\n const note = symbol.checkAttachedNote();\n let symbolWidth = 0;\n let lineSpaces = 1;\n let vAlign = false;\n for (let j = 0; j < symbol.symbolBlocks.length; ++j) {\n const block = symbol.symbolBlocks[j];\n const sup = ChordSymbol.isSuperscript(block);\n const sub = ChordSymbol.isSubscript(block);\n const superSubScale = sup || sub ? ChordSymbol.superSubRatio : 1;\n const adj = block.symbolType === SymbolTypes.GLYPH ? glyphAdj * superSubScale : fontAdj * superSubScale;\n // If there are super/subscripts, they extend beyond the line so\n // assume they take up 2 lines\n if (sup || sub) {\n lineSpaces = 2;\n }\n // If there is a symbol-specific offset, add it but consider font\n // size since font and glyphs will be interspersed.\n const fontSize = symbol.textFormatter.fontSizeInPixels;\n const superSubFontSize = fontSize * superSubScale;\n if (block.symbolType === SymbolTypes.GLYPH && block.glyph !== undefined) {\n block.width = ChordSymbol.getWidthForGlyph(block.glyph) * superSubFontSize;\n block.yShift += ChordSymbol.getYShiftForGlyph(block.glyph) * superSubFontSize;\n block.xShift += ChordSymbol.getXShiftForGlyph(block.glyph) * superSubFontSize;\n block.glyph.scale = block.glyph.scale * adj;\n }\n else if (block.symbolType === SymbolTypes.TEXT) {\n block.width = block.width * superSubFontSize;\n block.yShift += symbol.getYOffsetForText(block.text) * adj;\n }\n if (block.symbolType === SymbolTypes.GLYPH &&\n block.glyph !== undefined &&\n block.glyph.code === ChordSymbol.glyphs.over.code) {\n lineSpaces = 2;\n }\n block.width += ChordSymbol.spacingBetweenBlocks * fontSize * superSubScale;\n // If a subscript immediately follows a superscript block, try to\n // overlay them.\n if (sup && j > 0) {\n const prev = symbol.symbolBlocks[j - 1];\n if (!ChordSymbol.isSuperscript(prev)) {\n nonSuperWidth = width;\n }\n }\n if (sub && nonSuperWidth > 0) {\n vAlign = true;\n // slide the symbol over so it lines up with superscript\n block.xShift = block.xShift + (nonSuperWidth - width);\n width = nonSuperWidth;\n nonSuperWidth = 0;\n // If we have vertically lined up, turn kerning off.\n symbol.setEnableKerning(false);\n }\n if (!sup && !sub) {\n nonSuperWidth = 0;\n }\n block.vAlign = vAlign;\n width += block.width;\n symbolWidth = width;\n }\n // make kerning adjustments after computing super/subscripts\n symbol.updateKerningAdjustments();\n symbol.updateOverBarAdjustments();\n if (symbol.getVertical() === ChordSymbolVerticalJustify.TOP) {\n symbol.setTextLine(state.top_text_line);\n state.top_text_line += lineSpaces;\n }\n else {\n symbol.setTextLine(state.text_line + 1);\n state.text_line += lineSpaces + 1;\n }\n if (symbol.getReportWidth() && isStemmableNote(note)) {\n const glyphWidth = note.getGlyph().getWidth();\n if (symbol.getHorizontal() === ChordSymbolHorizontalJustify.LEFT) {\n maxLeftGlyphWidth = Math.max(glyphWidth, maxLeftGlyphWidth);\n leftWidth = Math.max(leftWidth, symbolWidth) + ChordSymbol.minPadding;\n }\n else if (symbol.getHorizontal() === ChordSymbolHorizontalJustify.RIGHT) {\n maxRightGlyphWidth = Math.max(glyphWidth, maxRightGlyphWidth);\n rightWidth = Math.max(rightWidth, symbolWidth);\n }\n else {\n leftWidth = Math.max(leftWidth, symbolWidth / 2) + ChordSymbol.minPadding;\n rightWidth = Math.max(rightWidth, symbolWidth / 2);\n maxLeftGlyphWidth = Math.max(glyphWidth / 2, maxLeftGlyphWidth);\n maxRightGlyphWidth = Math.max(glyphWidth / 2, maxRightGlyphWidth);\n }\n }\n width = 0; // reset symbol width\n }\n const rightOverlap = Math.min(Math.max(rightWidth - maxRightGlyphWidth, 0), Math.max(rightWidth - state.right_shift, 0));\n const leftOverlap = Math.min(Math.max(leftWidth - maxLeftGlyphWidth, 0), Math.max(leftWidth - state.left_shift, 0));\n state.left_shift += leftOverlap;\n state.right_shift += rightOverlap;\n return true;\n }\n /**\n * Default text font.\n * Choose a font family that works well with the current music engraving font.\n * @override `Element.TEXT_FONT`.\n */\n static get TEXT_FONT() {\n let family = 'Roboto Slab, Times, serif';\n if (Tables.currentMusicFont().getName() === 'Petaluma') {\n // Fixes Issue #1180\n family = 'PetalumaScript, Arial, sans-serif';\n }\n return {\n family,\n size: 12,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n };\n }\n /**\n * The offset is specified in `em`. Scale this value by the font size in pixels.\n */\n get superscriptOffset() {\n return ChordSymbol.superscriptOffset * this.textFormatter.fontSizeInPixels;\n }\n get subscriptOffset() {\n return ChordSymbol.subscriptOffset * this.textFormatter.fontSizeInPixels;\n }\n setReportWidth(value) {\n this.reportWidth = value;\n return this;\n }\n getReportWidth() {\n return this.reportWidth;\n }\n updateOverBarAdjustments() {\n const barIndex = this.symbolBlocks.findIndex(({ symbolType, glyph }) => symbolType === SymbolTypes.GLYPH && glyph !== undefined && glyph.code === 'csymDiagonalArrangementSlash');\n if (barIndex < 0) {\n return;\n }\n const bar = this.symbolBlocks[barIndex];\n const xoff = bar.width / 4;\n const yoff = 0.25 * this.textFormatter.fontSizeInPixels;\n let symIndex = 0;\n for (symIndex === 0; symIndex < barIndex; ++symIndex) {\n const symbol = this.symbolBlocks[symIndex];\n symbol.xShift = symbol.xShift + xoff;\n symbol.yShift = symbol.yShift - yoff;\n }\n for (symIndex = barIndex + 1; symIndex < this.symbolBlocks.length; ++symIndex) {\n const symbol = this.symbolBlocks[symIndex];\n symbol.xShift = symbol.xShift - xoff;\n symbol.yShift = symbol.yShift + yoff;\n }\n }\n updateKerningAdjustments() {\n let accum = 0;\n for (let j = 0; j < this.symbolBlocks.length; ++j) {\n const symbol = this.symbolBlocks[j];\n accum += this.getKerningAdjustment(j);\n symbol.xShift += accum;\n }\n }\n /** Do some basic kerning so that letter chords like 'A' don't have the extensions hanging off to the right. */\n getKerningAdjustment(j) {\n if (!this.useKerning) {\n return 0;\n }\n const currSymbol = this.symbolBlocks[j];\n const prevSymbol = j > 0 ? this.symbolBlocks[j - 1] : undefined;\n let adjustment = 0;\n // Move things into the '/' over bar\n if (currSymbol.symbolType === SymbolTypes.GLYPH &&\n currSymbol.glyph !== undefined &&\n currSymbol.glyph.code === ChordSymbol.glyphs.over.code) {\n adjustment += currSymbol.glyph.metrics.x_shift;\n }\n if (prevSymbol !== undefined &&\n prevSymbol.symbolType === SymbolTypes.GLYPH &&\n prevSymbol.glyph !== undefined &&\n prevSymbol.glyph.code === ChordSymbol.glyphs.over.code) {\n adjustment += prevSymbol.glyph.metrics.x_shift;\n }\n // For superscripts that follow a letter without much top part, move it to the left slightly\n let preKernUpper = false;\n let preKernLower = false;\n if (prevSymbol !== undefined && prevSymbol.symbolType === SymbolTypes.TEXT) {\n preKernUpper = ChordSymbol.upperKerningText.some((xx) => xx === prevSymbol.text[prevSymbol.text.length - 1]);\n preKernLower = ChordSymbol.lowerKerningText.some((xx) => xx === prevSymbol.text[prevSymbol.text.length - 1]);\n }\n const kerningOffsetPixels = ChordSymbol.kerningOffset * this.textFormatter.fontSizeInPixels;\n // TODO: adjust kern for font size.\n // Where should this constant live?\n if (preKernUpper && currSymbol.symbolModifier === SymbolModifiers.SUPERSCRIPT) {\n adjustment += kerningOffsetPixels;\n }\n if (preKernLower && currSymbol.symbolType === SymbolTypes.TEXT) {\n if (currSymbol.text[0] >= 'a' && currSymbol.text[0] <= 'z') {\n adjustment += kerningOffsetPixels / 2;\n }\n if (ChordSymbol.upperKerningText.some((xx) => xx === (prevSymbol === null || prevSymbol === void 0 ? void 0 : prevSymbol.text[prevSymbol.text.length - 1]))) {\n adjustment += kerningOffsetPixels / 2;\n }\n }\n return adjustment;\n }\n /**\n * ChordSymbol allows multiple blocks so we can mix glyphs and font text.\n * Each block can have its own vertical orientation.\n */\n // eslint-disable-next-line\n getSymbolBlock(params = {}) {\n var _a, _b, _c;\n const symbolType = (_a = params.symbolType) !== null && _a !== void 0 ? _a : SymbolTypes.TEXT;\n const symbolBlock = {\n text: (_b = params.text) !== null && _b !== void 0 ? _b : '',\n symbolType,\n symbolModifier: (_c = params.symbolModifier) !== null && _c !== void 0 ? _c : SymbolModifiers.NONE,\n xShift: 0,\n yShift: 0,\n vAlign: false,\n width: 0,\n };\n // Note: symbol widths are resolution and font-independent.\n // We convert to pixel values when we know what the font is.\n if (symbolType === SymbolTypes.GLYPH && typeof params.glyph === 'string') {\n const glyphArgs = ChordSymbol.glyphs[params.glyph];\n const glyphPoints = 20;\n symbolBlock.glyph = new Glyph(glyphArgs.code, glyphPoints, { category: 'chordSymbol' });\n // Beware: glyph.metrics is not the same as glyph.getMetrics() !\n // rv.glyph.point = rv.glyph.point * rv.glyph.metrics.scale;\n // rv.width = rv.glyph.getMetrics().width;\n // don't set yShift here, b/c we need to do it at formatting time after the font is set.\n }\n else if (symbolType === SymbolTypes.TEXT) {\n symbolBlock.width = this.textFormatter.getWidthForTextInEm(symbolBlock.text);\n }\n else if (symbolType === SymbolTypes.LINE) {\n symbolBlock.width = params.width;\n }\n return symbolBlock;\n }\n /** Add a symbol to this chord, could be text, glyph or line. */\n // eslint-disable-next-line\n addSymbolBlock(parameters) {\n this.symbolBlocks.push(this.getSymbolBlock(parameters));\n return this;\n }\n // ### Convenience functions for creating different types of chord symbol parts.\n /** Add a text block. */\n // eslint-disable-next-line\n addText(text, parameters = {}) {\n const symbolType = SymbolTypes.TEXT;\n return this.addSymbolBlock(Object.assign(Object.assign({}, parameters), { text, symbolType }));\n }\n /** Add a text block with superscript modifier. */\n addTextSuperscript(text) {\n const symbolType = SymbolTypes.TEXT;\n const symbolModifier = SymbolModifiers.SUPERSCRIPT;\n return this.addSymbolBlock({ text, symbolType, symbolModifier });\n }\n /** Add a text block with subscript modifier. */\n addTextSubscript(text) {\n const symbolType = SymbolTypes.TEXT;\n const symbolModifier = SymbolModifiers.SUBSCRIPT;\n return this.addSymbolBlock({ text, symbolType, symbolModifier });\n }\n /** Add a glyph block with superscript modifier. */\n addGlyphSuperscript(glyph) {\n const symbolType = SymbolTypes.GLYPH;\n const symbolModifier = SymbolModifiers.SUPERSCRIPT;\n return this.addSymbolBlock({ glyph, symbolType, symbolModifier });\n }\n /** Add a glyph block. */\n // eslint-disable-next-line\n addGlyph(glyph, params = {}) {\n const symbolType = SymbolTypes.GLYPH;\n return this.addSymbolBlock(Object.assign(Object.assign({}, params), { glyph, symbolType }));\n }\n /**\n * Add a glyph for each character in 'text'. If the glyph is not available, use text from the font.\n * e.g. `addGlyphOrText('(+5#11)')` will use text for the '5' and '11', and glyphs for everything else.\n */\n // eslint-disable-next-line\n addGlyphOrText(text, params = {}) {\n let str = '';\n for (let i = 0; i < text.length; ++i) {\n const char = text[i];\n if (ChordSymbol.glyphs[char]) {\n if (str.length > 0) {\n this.addText(str, params);\n str = '';\n }\n this.addGlyph(char, params);\n }\n else {\n // Collect consecutive characters with no glyphs.\n str += char;\n }\n }\n if (str.length > 0) {\n this.addText(str, params);\n }\n return this;\n }\n /** Add a line of the given width, used as a continuation of the previous symbol in analysis, or lyrics, etc. */\n // eslint-disable-next-line\n addLine(width, params = {}) {\n const symbolType = SymbolTypes.LINE;\n return this.addSymbolBlock(Object.assign(Object.assign({}, params), { symbolType, width }));\n }\n /**\n * Set the chord symbol's font family, size, weight, style (e.g., `Arial`, `10pt`, `bold`, `italic`).\n *\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n *\n * @override See: Element.\n */\n setFont(f, size, weight, style) {\n super.setFont(f, size, weight, style);\n this.textFormatter = TextFormatter.create(this.textFont);\n return this;\n }\n setEnableKerning(val) {\n this.useKerning = val;\n return this;\n }\n /** Set vertical position of text (above or below stave). */\n setVertical(vj) {\n this.vertical = typeof vj === 'string' ? ChordSymbol.VerticalJustifyString[vj] : vj;\n return this;\n }\n getVertical() {\n return this.vertical;\n }\n /** Set horizontal justification. */\n setHorizontal(hj) {\n this.horizontal = typeof hj === 'string' ? ChordSymbol.HorizontalJustifyString[hj] : hj;\n return this;\n }\n getHorizontal() {\n return this.horizontal;\n }\n getWidth() {\n let width = 0;\n this.symbolBlocks.forEach((symbol) => {\n width += symbol.vAlign ? 0 : symbol.width;\n });\n return width;\n }\n getYOffsetForText(text) {\n var _a;\n let acc = 0;\n let i = 0;\n for (i = 0; i < text.length; ++i) {\n const metrics = this.textFormatter.getGlyphMetrics(text[i]);\n if (metrics) {\n const yMax = (_a = metrics.y_max) !== null && _a !== void 0 ? _a : 0;\n acc = yMax < acc ? yMax : acc;\n }\n }\n const resolution = this.textFormatter.getResolution();\n return i > 0 ? -1 * (acc / resolution) : 0;\n }\n /** Render text and glyphs above/below the note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n // We're changing context parameters. Save current state.\n ctx.save();\n ctx.openGroup('chordsymbol', this.getAttribute('id'));\n const start = note.getModifierStartXY(Modifier.Position.ABOVE, this.index);\n ctx.setFont(this.textFont);\n let y;\n // The position of the text varies based on whether or not the note\n // has a stem.\n const hasStem = note.hasStem();\n const stave = note.checkStave();\n if (this.vertical === ChordSymbolVerticalJustify.BOTTOM) {\n // HACK: We need to compensate for the text's height since its origin is bottom-right.\n y = stave.getYForBottomText(this.text_line + Tables.TEXT_HEIGHT_OFFSET_HACK);\n if (hasStem) {\n const stem_ext = note.checkStem().getExtents();\n const spacing = stave.getSpacingBetweenLines();\n const stem_base = note.getStemDirection() === 1 ? stem_ext.baseY : stem_ext.topY;\n y = Math.max(y, stem_base + spacing * (this.text_line + 2));\n }\n }\n else {\n // (this.vertical === VerticalJustify.TOP)\n y = Math.min(stave.getYForTopText(this.text_line), note.getYs()[0] - 10);\n if (hasStem) {\n const stem_ext = note.checkStem().getExtents();\n const spacing = stave.getSpacingBetweenLines();\n y = Math.min(y, stem_ext.topY - 5 - spacing * this.text_line);\n }\n }\n let x = start.x;\n if (this.horizontal === ChordSymbolHorizontalJustify.LEFT) {\n x = start.x;\n }\n else if (this.horizontal === ChordSymbolHorizontalJustify.RIGHT) {\n x = start.x + this.getWidth();\n }\n else if (this.horizontal === ChordSymbolHorizontalJustify.CENTER) {\n x = start.x - this.getWidth() / 2;\n }\n else {\n // HorizontalJustify.CENTER_STEM\n x = note.getStemX() - this.getWidth() / 2;\n }\n L('Rendering ChordSymbol: ', this.textFormatter, x, y);\n this.symbolBlocks.forEach((symbol) => {\n const isSuper = ChordSymbol.isSuperscript(symbol);\n const isSub = ChordSymbol.isSubscript(symbol);\n let curY = y;\n L('shift was ', symbol.xShift, symbol.yShift);\n L('curY pre sub ', curY);\n if (isSuper) {\n curY += this.superscriptOffset;\n }\n if (isSub) {\n curY += this.subscriptOffset;\n }\n L('curY sup/sub ', curY);\n if (symbol.symbolType === SymbolTypes.TEXT) {\n if (isSuper || isSub) {\n ctx.save();\n if (this.textFont) {\n const { family, size, weight, style } = this.textFont;\n const smallerFontSize = Font.scaleSize(size, ChordSymbol.superSubRatio);\n ctx.setFont(family, smallerFontSize, weight, style);\n }\n }\n // TODO???\n // We estimate the text width, fill it in with the empirical value so the formatting is even.\n // const textDim = ctx.measureText(symbol.text);\n // symbol.width = textDim.width;\n L('Rendering Text: ', symbol.text, x + symbol.xShift, curY + symbol.yShift);\n ctx.fillText(symbol.text, x + symbol.xShift, curY + symbol.yShift);\n if (isSuper || isSub) {\n ctx.restore();\n }\n }\n else if (symbol.symbolType === SymbolTypes.GLYPH && symbol.glyph) {\n curY += symbol.yShift;\n L('Rendering Glyph: ', symbol.glyph.code, x + symbol.xShift, curY);\n symbol.glyph.render(ctx, x + symbol.xShift, curY);\n }\n else if (symbol.symbolType === SymbolTypes.LINE) {\n L('Rendering Line : ', symbol.width, x, curY);\n ctx.beginPath();\n ctx.setLineWidth(1); // ?\n ctx.moveTo(x, y);\n ctx.lineTo(x + symbol.width, curY);\n ctx.stroke();\n }\n x += symbol.width;\n if (symbol.vAlign) {\n x += symbol.xShift;\n }\n });\n ctx.closeGroup();\n ctx.restore();\n }\n}\nChordSymbol.DEBUG = false;\n// Chord symbols can be positioned and justified relative to the note.\nChordSymbol.HorizontalJustify = ChordSymbolHorizontalJustify;\nChordSymbol.HorizontalJustifyString = {\n left: ChordSymbolHorizontalJustify.LEFT,\n right: ChordSymbolHorizontalJustify.RIGHT,\n center: ChordSymbolHorizontalJustify.CENTER,\n centerStem: ChordSymbolHorizontalJustify.CENTER_STEM,\n};\nChordSymbol.VerticalJustify = ChordSymbolVerticalJustify;\nChordSymbol.VerticalJustifyString = {\n top: ChordSymbolVerticalJustify.TOP,\n above: ChordSymbolVerticalJustify.TOP,\n below: ChordSymbolVerticalJustify.BOTTOM,\n bottom: ChordSymbolVerticalJustify.BOTTOM,\n};\n// Glyph data\nChordSymbol.glyphs = {\n diminished: {\n code: 'csymDiminished',\n },\n dim: {\n code: 'csymDiminished',\n },\n halfDiminished: {\n code: 'csymHalfDiminished',\n },\n '+': {\n code: 'csymAugmented',\n },\n augmented: {\n code: 'csymAugmented',\n },\n majorSeventh: {\n code: 'csymMajorSeventh',\n },\n minor: {\n code: 'csymMinor',\n },\n '-': {\n code: 'csymMinor',\n },\n '(': {\n code: 'csymParensLeftTall',\n },\n leftParen: {\n code: 'csymParensLeftTall',\n },\n ')': {\n code: 'csymParensRightTall',\n },\n rightParen: {\n code: 'csymParensRightTall',\n },\n leftBracket: {\n code: 'csymBracketLeftTall',\n },\n rightBracket: {\n code: 'csymBracketRightTall',\n },\n leftParenTall: {\n code: 'csymParensLeftVeryTall',\n },\n rightParenTall: {\n code: 'csymParensRightVeryTall',\n },\n '/': {\n code: 'csymDiagonalArrangementSlash',\n },\n over: {\n code: 'csymDiagonalArrangementSlash',\n },\n '#': {\n code: 'accidentalSharp',\n },\n b: {\n code: 'accidentalFlat',\n },\n};\nChordSymbol.symbolTypes = SymbolTypes;\nChordSymbol.symbolModifiers = SymbolModifiers;\n/** Currently unused. */\nChordSymbol.noFormat = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna Cheppudira 2013.\n// Co-author: Benjamin W. Bohl\n// MIT License\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Clef.DEBUG)\n log('Vex.Flow.Clef', args);\n}\n/**\n * Clef implements various types of clefs that can be rendered on a stave.\n *\n * See `tests/clef_tests.ts` for usage examples.\n */\nexport class Clef extends StaveModifier {\n /** Create a new clef. */\n constructor(type, size, annotation) {\n super();\n /**\n * The attribute `clef` must be a key from\n * `Clef.types`\n */\n this.clef = Clef.types['treble'];\n this.setPosition(StaveModifierPosition.BEGIN);\n this.setType(type, size, annotation);\n this.setWidth(Tables.currentMusicFont().lookupMetric(`clef.${this.size}.width`));\n L('Creating clef:', type);\n }\n static get CATEGORY() {\n return Category.Clef;\n }\n /**\n * Every clef name is associated with a glyph code from the font file\n * and a default stave line number.\n */\n static get types() {\n return {\n treble: {\n code: 'gClef',\n line: 3,\n point: 0,\n },\n bass: {\n code: 'fClef',\n line: 1,\n point: 0,\n },\n alto: {\n code: 'cClef',\n line: 2,\n point: 0,\n },\n tenor: {\n code: 'cClef',\n line: 1,\n point: 0,\n },\n percussion: {\n code: 'restMaxima',\n line: 2,\n point: 0,\n },\n soprano: {\n code: 'cClef',\n line: 4,\n point: 0,\n },\n 'mezzo-soprano': {\n code: 'cClef',\n line: 3,\n point: 0,\n },\n 'baritone-c': {\n code: 'cClef',\n line: 0,\n point: 0,\n },\n 'baritone-f': {\n code: 'fClef',\n line: 2,\n point: 0,\n },\n subbass: {\n code: 'fClef',\n line: 0,\n point: 0,\n },\n french: {\n code: 'gClef',\n line: 4,\n point: 0,\n },\n tab: {\n code: '6stringTabClef',\n point: 0,\n },\n };\n }\n /** Set clef type, size and annotation. */\n setType(type, size, annotation) {\n this.type = type;\n this.clef = Clef.types[type];\n if (size === undefined) {\n this.size = 'default';\n }\n else {\n this.size = size;\n }\n const musicFont = Tables.currentMusicFont();\n this.clef.point = musicFont.lookupMetric(`clef.${this.size}.point`, 0);\n this.glyph = new Glyph(this.clef.code, this.clef.point, {\n category: `clef.${this.clef.code}.${this.size}`,\n });\n // If an annotation, such as 8va, is specified, add it to the Clef object.\n if (annotation !== undefined) {\n const code = musicFont.lookupMetric(`clef.annotations.${annotation}.smuflCode`);\n const point = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.point`);\n const line = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.${this.type}.line`);\n const x_shift = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.${this.type}.shiftX`);\n this.annotation = { code, point, line, x_shift };\n this.attachment = new Glyph(this.annotation.code, this.annotation.point);\n this.attachment.metrics.x_max = 0;\n this.attachment.setXShift(this.annotation.x_shift);\n }\n else {\n this.annotation = undefined;\n }\n return this;\n }\n /** Get clef width. */\n getWidth() {\n if (this.type === 'tab') {\n defined(this.stave, 'ClefError', \"Can't get width without stave.\");\n }\n return this.width;\n }\n /** Set associated stave. */\n setStave(stave) {\n this.stave = stave;\n if (this.type === 'tab') {\n const glyph = defined(this.glyph, 'ClefError', \"Can't set stave without glyph.\");\n const numLines = this.stave.getNumLines();\n const musicFont = Tables.currentMusicFont();\n const point = musicFont.lookupMetric(`clef.lineCount.${numLines}.point`);\n const shiftY = musicFont.lookupMetric(`clef.lineCount.${numLines}.shiftY`);\n glyph.setPoint(point);\n glyph.setYShift(shiftY);\n }\n return this;\n }\n /** Render clef. */\n draw() {\n const glyph = defined(this.glyph, 'ClefError', \"Can't draw clef without glyph.\");\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('clef', this.getAttribute('id'));\n glyph.setStave(stave);\n glyph.setContext(ctx);\n if (this.clef.line !== undefined) {\n this.placeGlyphOnLine(glyph, stave, this.clef.line);\n }\n glyph.renderToStave(this.x);\n if (this.annotation !== undefined && this.attachment !== undefined) {\n this.placeGlyphOnLine(this.attachment, stave, this.annotation.line);\n this.attachment.setStave(stave);\n this.attachment.setContext(ctx);\n this.attachment.renderToStave(this.x);\n }\n ctx.closeGroup();\n }\n}\n/** To enable logging for this class, set `Vex.Flow.Clef.DEBUG` to `true`. */\nClef.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\n// MIT License\nimport { Clef } from './clef';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\n/** ClefNote implements clef annotations in measures. */\nexport class ClefNote extends Note {\n constructor(type, size, annotation) {\n super({ duration: 'b' });\n this.type = type;\n this.clef_obj = new Clef(type, size, annotation);\n this.clef = this.clef_obj.clef;\n this.glyph = new Glyph(this.clef.code, this.clef.point);\n this.setWidth(this.glyph.getMetrics().width);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.ClefNote;\n }\n /** Set clef type, size and annotation. */\n setType(type, size, annotation) {\n this.type = type;\n this.clef_obj = new Clef(type, size, annotation);\n this.clef = this.clef_obj.clef;\n this.glyph = new Glyph(this.clef.code, this.clef.point);\n this.setWidth(this.glyph.getMetrics().width);\n return this;\n }\n /** Get associated clef. */\n getClef() {\n return this.clef;\n }\n /** Set associated context. */\n setContext(context) {\n super.setContext(context);\n this.glyph.setContext(this.getContext());\n return this;\n }\n /** Get bounding box. */\n getBoundingBox() {\n return super.getBoundingBox();\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n /** Render clef note. */\n draw() {\n var _a;\n const stave = this.checkStave();\n if (!this.glyph.getContext()) {\n this.glyph.setContext(this.getContext());\n }\n this.setRendered();\n const abs_x = this.getAbsoluteX();\n this.glyph.setStave(stave);\n this.glyph.setYShift(stave.getYForLine((_a = this.clef.line) !== null && _a !== void 0 ? _a : 0) - stave.getYForGlyphs());\n this.glyph.renderToStave(abs_x);\n // If the Vex.Flow.Clef has an annotation, such as 8va, draw it.\n if (this.clef_obj.annotation !== undefined) {\n const attachment = new Glyph(this.clef_obj.annotation.code, this.clef_obj.annotation.point);\n if (!attachment.getContext()) {\n attachment.setContext(this.getContext());\n }\n attachment.setStave(stave);\n attachment.setYShift(stave.getYForLine(this.clef_obj.annotation.line) - stave.getYForGlyphs());\n attachment.setXShift(this.clef_obj.annotation.x_shift);\n attachment.renderToStave(abs_x);\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This file implements the `Crescendo` object which draws crescendos and\n// decrescendo dynamics markings. A `Crescendo` is initialized with a\n// duration and formatted as part of a `Voice` like any other `Note`\n// type in VexFlow. This object would most likely be formatted in a Voice\n// with `TextNotes` - which are used to represent other dynamics markings.\nimport { Note } from './note';\nimport { TickContext } from './tickcontext';\nimport { Category } from './typeguard';\nimport { log } from './util';\n// To enable logging for this class. Set `Vex.Flow.Crescendo.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (Crescendo.DEBUG)\n log('Vex.Flow.Crescendo', args);\n}\n// Private helper to draw the hairpin\nfunction renderHairpin(ctx, params) {\n const begin_x = params.begin_x;\n const end_x = params.end_x;\n const y = params.y;\n const half_height = params.height / 2;\n ctx.beginPath();\n if (params.reverse) {\n ctx.moveTo(begin_x, y - half_height);\n ctx.lineTo(end_x, y);\n ctx.lineTo(begin_x, y + half_height);\n }\n else {\n ctx.moveTo(end_x, y - half_height);\n ctx.lineTo(begin_x, y);\n ctx.lineTo(end_x, y + half_height);\n }\n ctx.stroke();\n ctx.closePath();\n}\nexport class Crescendo extends Note {\n // Initialize the crescendo's properties\n constructor(noteStruct) {\n super(noteStruct);\n this.options = {\n // Extensions to the length of the crescendo on either side\n extend_left: 0,\n extend_right: 0,\n // Vertical shift\n y_shift: 0,\n };\n // Whether the object is a decrescendo\n this.decrescendo = false;\n // The staff line to be placed on\n this.line = noteStruct.line || 0;\n // The height at the open end of the cresc/decresc\n this.height = 15;\n }\n /** Crescendo category string. */\n static get CATEGORY() {\n return Category.Crescendo;\n }\n // Set the line to center the element on\n setLine(line) {\n this.line = line;\n return this;\n }\n // Set the full height at the open end\n setHeight(height) {\n this.height = height;\n return this;\n }\n // Set whether the sign should be a descresendo by passing a bool\n // to `decresc`\n setDecrescendo(decresc) {\n this.decrescendo = decresc;\n return this;\n }\n // Preformat the note\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n // Render the Crescendo object onto the canvas\n draw() {\n const ctx = this.checkContext();\n const stave = this.checkStave();\n this.setRendered();\n const tick_context = this.getTickContext();\n const next_context = TickContext.getNextContext(tick_context);\n const begin_x = this.getAbsoluteX();\n const end_x = next_context ? next_context.getX() : stave.getX() + stave.getWidth();\n const y = stave.getYForLine(this.line + -3) + 1;\n L('Drawing ', this.decrescendo ? 'decrescendo ' : 'crescendo ', this.height, 'x', begin_x - end_x);\n renderHairpin(ctx, {\n begin_x: begin_x - this.options.extend_left,\n end_x: end_x + this.options.extend_right,\n y: y + this.options.y_shift,\n height: this.height,\n reverse: this.decrescendo,\n });\n }\n}\nCrescendo.DEBUG = false;\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements curves (for slurs)\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport var CurvePosition;\n(function (CurvePosition) {\n CurvePosition[CurvePosition[\"NEAR_HEAD\"] = 1] = \"NEAR_HEAD\";\n CurvePosition[CurvePosition[\"NEAR_TOP\"] = 2] = \"NEAR_TOP\";\n})(CurvePosition || (CurvePosition = {}));\nexport class Curve extends Element {\n // from: Start note\n // to: End note\n // options:\n // cps: List of control points\n // x_shift: pixels to shift\n // y_shift: pixels to shift\n constructor(from, to, options) {\n super();\n this.render_options = Object.assign({ thickness: 2, x_shift: 0, y_shift: 10, position: CurvePosition.NEAR_HEAD, position_end: CurvePosition.NEAR_HEAD, invert: false, cps: [\n { x: 0, y: 10 },\n { x: 0, y: 10 },\n ] }, options);\n this.from = from;\n this.to = to;\n }\n static get CATEGORY() {\n return Category.Curve;\n }\n static get Position() {\n return CurvePosition;\n }\n static get PositionString() {\n return {\n nearHead: CurvePosition.NEAR_HEAD,\n nearTop: CurvePosition.NEAR_TOP,\n };\n }\n setNotes(from, to) {\n if (!from && !to) {\n throw new RuntimeError('BadArguments', 'Curve needs to have either `from` or `to` set.');\n }\n this.from = from;\n this.to = to;\n return this;\n }\n /**\n * @return {boolean} Returns true if this is a partial bar.\n */\n isPartial() {\n return !this.from || !this.to;\n }\n renderCurve(params) {\n const ctx = this.checkContext();\n const x_shift = this.render_options.x_shift;\n const y_shift = this.render_options.y_shift * params.direction;\n const first_x = params.first_x + x_shift;\n const first_y = params.first_y + y_shift;\n const last_x = params.last_x - x_shift;\n const last_y = params.last_y + y_shift;\n const thickness = this.render_options.thickness;\n const cps = this.render_options.cps;\n const { x: cp0x, y: cp0y } = cps[0];\n const { x: cp1x, y: cp1y } = cps[1];\n const cp_spacing = (last_x - first_x) / (cps.length + 2);\n ctx.beginPath();\n ctx.moveTo(first_x, first_y);\n ctx.bezierCurveTo(first_x + cp_spacing + cp0x, first_y + cp0y * params.direction, last_x - cp_spacing + cp1x, last_y + cp1y * params.direction, last_x, last_y);\n ctx.bezierCurveTo(last_x - cp_spacing + cp1x, last_y + (cp1y + thickness) * params.direction, first_x + cp_spacing + cp0x, first_y + (cp0y + thickness) * params.direction, first_x, first_y);\n ctx.stroke();\n ctx.closePath();\n ctx.fill();\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const first_note = this.from;\n const last_note = this.to;\n let first_x;\n let last_x;\n let first_y;\n let last_y;\n let stem_direction = 0;\n let metric = 'baseY';\n let end_metric = 'baseY';\n function getPosition(position) {\n return typeof position === 'string' ? Curve.PositionString[position] : position;\n }\n const position = getPosition(this.render_options.position);\n const position_end = getPosition(this.render_options.position_end);\n if (position === CurvePosition.NEAR_TOP) {\n metric = 'topY';\n end_metric = 'topY';\n }\n if (position_end === CurvePosition.NEAR_HEAD) {\n end_metric = 'baseY';\n }\n else if (position_end === CurvePosition.NEAR_TOP) {\n end_metric = 'topY';\n }\n if (first_note) {\n first_x = first_note.getTieRightX();\n stem_direction = first_note.getStemDirection();\n first_y = first_note.getStemExtents()[metric];\n }\n else {\n const stave = last_note.checkStave();\n first_x = stave.getTieStartX();\n first_y = last_note.getStemExtents()[metric];\n }\n if (last_note) {\n last_x = last_note.getTieLeftX();\n stem_direction = last_note.getStemDirection();\n last_y = last_note.getStemExtents()[end_metric];\n }\n else {\n const stave = first_note.checkStave();\n last_x = stave.getTieEndX();\n last_y = first_note.getStemExtents()[end_metric];\n }\n this.renderCurve({\n first_x,\n last_x,\n first_y,\n last_y,\n direction: stem_direction * (this.render_options.invert === true ? -1 : 1),\n });\n return true;\n }\n}\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements dot modifiers for notes.\nimport { Modifier } from './modifier';\nimport { Category, isGraceNote, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class Dot extends Modifier {\n constructor() {\n super();\n this.position = Modifier.Position.RIGHT;\n this.radius = 2;\n this.setWidth(5);\n this.dot_shiftY = 0;\n }\n static get CATEGORY() {\n return Category.Dot;\n }\n /** Returns the dots associated to a Note. */\n static getDots(note) {\n return note.getModifiersByType(Dot.CATEGORY);\n }\n /** Add a dot on the specified keys to the notes. */\n static buildAndAttach(notes, options) {\n for (const note of notes) {\n if (options === null || options === void 0 ? void 0 : options.all) {\n for (let i = 0; i < note.keys.length; i++) {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, i);\n }\n }\n else if ((options === null || options === void 0 ? void 0 : options.index) != undefined) {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, options === null || options === void 0 ? void 0 : options.index);\n }\n else {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, 0);\n }\n }\n }\n // Arrange dots inside a ModifierContext.\n static format(dots, state) {\n const right_shift = state.right_shift;\n const dot_spacing = 1;\n if (!dots || dots.length === 0)\n return false;\n const dot_list = [];\n const max_shift_map = {};\n for (let i = 0; i < dots.length; ++i) {\n const dot = dots[i];\n const note = dot.getNote();\n let props;\n let shift;\n if (isStaveNote(note)) {\n const index = dot.checkIndex();\n props = note.getKeyProps()[index];\n // consider right displaced head with no previous modifier\n shift = note.getFirstDotPx();\n }\n else if (isTabNote(note)) {\n props = { line: 0.5 }; // Shim key props for dot placement\n shift = right_shift;\n }\n else {\n // note object is not StaveNote or TabNote.\n throw new RuntimeError('Internal', 'Unexpected instance.');\n }\n const note_id = note.getAttribute('id');\n dot_list.push({ line: props.line, note, note_id, dot });\n max_shift_map[note_id] = Math.max(max_shift_map[note_id] || shift, shift);\n }\n // Sort dots by line number.\n dot_list.sort((a, b) => b.line - a.line);\n let dot_shift = right_shift;\n let x_width = 0;\n let last_line = null;\n let last_note = null;\n let prev_dotted_space = null;\n let half_shiftY = 0;\n for (let i = 0; i < dot_list.length; ++i) {\n const { dot, note, note_id, line } = dot_list[i];\n // Reset the position of the dot every line.\n if (line !== last_line || note !== last_note) {\n dot_shift = max_shift_map[note_id];\n }\n if (!note.isRest() && line !== last_line) {\n if (Math.abs(line % 1) === 0.5) {\n // note is on a space, so no dot shift\n half_shiftY = 0;\n }\n else {\n // note is on a line, so shift dot to space above the line\n half_shiftY = 0.5;\n if (last_note != null && !last_note.isRest() && last_line != null && last_line - line === 0.5) {\n // previous note on a space, so shift dot to space below the line\n half_shiftY = -0.5;\n }\n else if (line + half_shiftY === prev_dotted_space) {\n // previous space is dotted, so shift dot to space below the line\n half_shiftY = -0.5;\n }\n }\n }\n // convert half_shiftY to a multiplier for dots.draw()\n if (note.isRest()) {\n dot.dot_shiftY += -half_shiftY;\n }\n else {\n dot.dot_shiftY = -half_shiftY;\n }\n prev_dotted_space = line + half_shiftY;\n dot.setXShift(dot_shift);\n dot_shift += dot.getWidth() + dot_spacing; // spacing\n x_width = dot_shift > x_width ? dot_shift : x_width;\n last_line = line;\n last_note = note;\n }\n // Update state.\n state.right_shift += x_width;\n return true;\n }\n setNote(note) {\n this.note = note;\n if (isGraceNote(note)) {\n this.radius *= 0.5;\n this.setWidth(3);\n }\n return this;\n }\n setDotShiftY(y) {\n this.dot_shiftY = y;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stave = note.checkStave();\n const lineSpace = stave.getSpacingBetweenLines();\n const start = note.getModifierStartXY(this.position, this.index, { forceFlagRight: true });\n // Set the starting y coordinate to the base of the stem for TabNotes.\n if (isTabNote(note)) {\n start.y = note.getStemExtents().baseY;\n }\n const x = start.x + this.x_shift + this.width - this.radius;\n const y = start.y + this.y_shift + this.dot_shiftY * lineSpace;\n ctx.beginPath();\n ctx.arc(x, y, this.radius, 0, Math.PI * 2, false);\n ctx.fill();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Articulation } from './articulation';\nimport { Dot } from './dot';\nimport { FretHandFinger } from './frethandfinger';\nimport { Music } from './music';\nimport { Parser } from './parser';\nimport { Stem } from './stem';\nimport { defined, log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.EasyScore.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (EasyScore.DEBUG)\n log('Vex.Flow.EasyScore', args);\n}\nexport class EasyScoreGrammar {\n constructor(builder) {\n this.builder = builder;\n }\n begin() {\n return this.LINE;\n }\n LINE() {\n return {\n expect: [this.PIECE, this.PIECES, this.EOL],\n };\n }\n PIECE() {\n return {\n expect: [this.CHORDORNOTE, this.PARAMS],\n run: () => this.builder.commitPiece(),\n };\n }\n PIECES() {\n return {\n expect: [this.COMMA, this.PIECE],\n zeroOrMore: true,\n };\n }\n PARAMS() {\n return {\n expect: [this.DURATION, this.TYPE, this.DOTS, this.OPTS],\n };\n }\n CHORDORNOTE() {\n return {\n expect: [this.CHORD, this.SINGLENOTE],\n or: true,\n };\n }\n CHORD() {\n return {\n expect: [this.LPAREN, this.NOTES, this.RPAREN],\n // eslint-disable-next-line\n run: (state) => this.builder.addChord(state.matches[1]),\n };\n }\n NOTES() {\n return {\n expect: [this.NOTE],\n oneOrMore: true,\n };\n }\n NOTE() {\n return {\n expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE],\n };\n }\n SINGLENOTE() {\n return {\n expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE],\n run: (state) => {\n // eslint-disable-next-line\n const s = state;\n this.builder.addSingleNote(s.matches[0], s.matches[1], s.matches[2]);\n },\n };\n }\n ACCIDENTAL() {\n return {\n expect: [this.MICROTONES, this.ACCIDENTALS],\n maybe: true,\n or: true,\n };\n }\n DOTS() {\n return {\n expect: [this.DOT],\n zeroOrMore: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteDots(state.matches),\n };\n }\n TYPE() {\n return {\n expect: [this.SLASH, this.MAYBESLASH, this.TYPES],\n maybe: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteType(state.matches[2]),\n };\n }\n DURATION() {\n return {\n expect: [this.SLASH, this.DURATIONS],\n maybe: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteDuration(state.matches[1]),\n };\n }\n OPTS() {\n return {\n expect: [this.LBRACKET, this.KEYVAL, this.KEYVALS, this.RBRACKET],\n maybe: true,\n };\n }\n KEYVALS() {\n return {\n expect: [this.COMMA, this.KEYVAL],\n zeroOrMore: true,\n };\n }\n KEYVAL() {\n const unquote = (str) => str.slice(1, -1);\n return {\n expect: [this.KEY, this.EQUALS, this.VAL],\n // eslint-disable-next-line\n run: (state) => this.builder.addNoteOption(state.matches[0], unquote(state.matches[2])),\n };\n }\n VAL() {\n return {\n expect: [this.SVAL, this.DVAL],\n or: true,\n };\n }\n KEY() {\n return { token: '[a-zA-Z][a-zA-Z0-9]*' };\n }\n DVAL() {\n return { token: '[\"][^\"]*[\"]' };\n }\n SVAL() {\n return { token: \"['][^']*[']\" };\n }\n NOTENAME() {\n return { token: '[a-gA-G]' };\n }\n OCTAVE() {\n return { token: '[0-9]+' };\n }\n ACCIDENTALS() {\n return { token: 'bb|b|##|#|n' };\n }\n MICROTONES() {\n return { token: 'bbs|bss|bs|db|d|\\\\+\\\\+-|\\\\+-|\\\\+\\\\+|\\\\+|k|o' };\n }\n DURATIONS() {\n return { token: '[0-9whq]+' };\n }\n TYPES() {\n return { token: '[rRsSmMhHgG]' };\n }\n LPAREN() {\n return { token: '[(]' };\n }\n RPAREN() {\n return { token: '[)]' };\n }\n COMMA() {\n return { token: '[,]' };\n }\n DOT() {\n return { token: '[.]' };\n }\n SLASH() {\n return { token: '[/]' };\n }\n MAYBESLASH() {\n return { token: '[/]?' };\n }\n EQUALS() {\n return { token: '[=]' };\n }\n LBRACKET() {\n return { token: '\\\\[' };\n }\n RBRACKET() {\n return { token: '\\\\]' };\n }\n EOL() {\n return { token: '$' };\n }\n}\nexport class Piece {\n constructor(duration) {\n this.chord = [];\n this.dots = 0;\n this.options = {};\n this.duration = duration;\n }\n}\nexport class Builder {\n constructor(factory) {\n this.commitHooks = [];\n this.factory = factory;\n this.reset();\n }\n reset(options) {\n this.options = Object.assign({ stem: 'auto', clef: 'treble' }, options);\n this.elements = { notes: [], accidentals: [] };\n this.rollingDuration = '8';\n this.resetPiece();\n }\n getFactory() {\n return this.factory;\n }\n getElements() {\n return this.elements;\n }\n addCommitHook(commitHook) {\n this.commitHooks.push(commitHook);\n }\n resetPiece() {\n L('resetPiece');\n this.piece = new Piece(this.rollingDuration);\n }\n setNoteDots(dots) {\n L('setNoteDots:', dots);\n if (dots)\n this.piece.dots = dots.length;\n }\n setNoteDuration(duration) {\n L('setNoteDuration:', duration);\n this.rollingDuration = this.piece.duration = duration || this.rollingDuration;\n }\n setNoteType(type) {\n L('setNoteType:', type);\n if (type)\n this.piece.type = type;\n }\n addNoteOption(key, value) {\n L('addNoteOption: key:', key, 'value:', value);\n this.piece.options[key] = value;\n }\n addNote(key, accid, octave) {\n L('addNote:', key, accid, octave);\n this.piece.chord.push({\n key: key,\n accid,\n octave,\n });\n }\n addSingleNote(key, accid, octave) {\n L('addSingleNote:', key, accid, octave);\n this.addNote(key, accid, octave);\n }\n // notes is an array with 3 entries\n addChord(notes) {\n L('startChord');\n if (typeof notes[0] !== 'object') {\n this.addSingleNote(notes[0]);\n }\n else {\n notes.forEach((n) => {\n if (n)\n this.addNote(...n); // n => [string, string | null, string]\n });\n }\n L('endChord');\n }\n commitPiece() {\n L('commitPiece');\n const { factory } = this;\n if (!factory)\n return;\n const options = Object.assign(Object.assign({}, this.options), this.piece.options);\n // reset() sets this.options.stem & this.options.clef but we check to make sure nothing has changed.\n // e.g., auto | up | down\n const stem = defined(options.stem, 'BadArguments', 'options.stem is not defined').toLowerCase();\n // e.g., treble | bass\n const clef = defined(options.clef, 'BadArguments', 'options.clef is not defined').toLowerCase();\n const { chord, duration, dots, type } = this.piece;\n // Create a string[] that will be assigned to the .keys property of the StaveNote.\n // Each string in the array represents a note pitch and is of the form: {NoteName}{Accidental}/{Octave}\n // Only standard accidentals are included in the .keys property. Microtonal accidentals are not included.\n const standardAccidentals = Music.accidentals;\n const keys = chord.map((notePiece) => {\n var _a;\n return notePiece.key +\n (standardAccidentals.includes((_a = notePiece.accid) !== null && _a !== void 0 ? _a : '') ? notePiece.accid : '') +\n '/' +\n notePiece.octave;\n });\n const auto_stem = stem === 'auto'; // StaveNoteStruct expects the underscore & lowercase.\n // Build a GhostNote or StaveNote using the information we gathered.\n const note = (type === null || type === void 0 ? void 0 : type.toLowerCase()) == 'g'\n ? factory.GhostNote({ duration, dots })\n : factory.StaveNote({ keys, duration, dots, type, clef, auto_stem });\n if (!auto_stem)\n note.setStemDirection(stem === 'up' ? Stem.UP : Stem.DOWN);\n // Attach accidentals.\n const accidentals = [];\n chord.forEach((notePiece, index) => {\n const accid = notePiece.accid;\n if (typeof accid === 'string') {\n const accidental = factory.Accidental({ type: accid });\n note.addModifier(accidental, index);\n accidentals.push(accidental);\n }\n else {\n accidentals.push(undefined);\n }\n });\n // Attach dots.\n for (let i = 0; i < dots; i++)\n Dot.buildAndAttach([note], { all: true });\n this.commitHooks.forEach((commitHook) => commitHook(options, note, this));\n this.elements.notes.push(note);\n this.elements.accidentals.push(accidentals);\n this.resetPiece();\n }\n}\n/**\n * Commit hook used by EasyScore.setOptions().\n */\nfunction setId(options, note) {\n if (options.id === undefined)\n return;\n note.setAttribute('id', options.id);\n}\n// Used by setClass() below.\nconst commaSeparatedRegex = /\\s*,\\s*/;\n/**\n * Commit hook used by EasyScore.setOptions().\n */\nfunction setClass(options, note) {\n if (options.class === undefined)\n return;\n options.class.split(commaSeparatedRegex).forEach((className) => note.addClass(className));\n}\n/**\n * EasyScore implements a parser for a simple language to generate VexFlow objects.\n */\nexport class EasyScore {\n constructor(options = {}) {\n this.defaults = {\n clef: 'treble',\n time: '4/4',\n stem: 'auto',\n };\n this.setOptions(options);\n }\n /**\n * Set the score defaults.\n * clef must be set appropriately to avoid errors when adding Staves.\n * @param defaults.clef default clef ( treble | bass ...) see {@link Clef.types}\n * @param defaults.time default time signature ( 4/4 | 9/8 ...)\n * @param defaults.stem default stem arrangement (auto | up | down)\n * @returns this\n */\n set(defaults) {\n this.defaults = Object.assign(Object.assign({}, this.defaults), defaults);\n return this;\n }\n /**\n * @param options.factory is required.\n * @returns this\n */\n setOptions(options) {\n var _a, _b;\n // eslint-disable-next-line\n const factory = options.factory; // ! operator, because options.factory was set in Factory.EasyScore().\n const builder = (_a = options.builder) !== null && _a !== void 0 ? _a : new Builder(factory);\n this.options = Object.assign(Object.assign({ commitHooks: [setId, setClass, Articulation.easyScoreHook, FretHandFinger.easyScoreHook], throwOnError: false }, options), { factory,\n builder });\n this.factory = factory;\n this.builder = builder;\n this.grammar = new EasyScoreGrammar(this.builder);\n this.parser = new Parser(this.grammar);\n (_b = this.options.commitHooks) === null || _b === void 0 ? void 0 : _b.forEach((commitHook) => this.addCommitHook(commitHook));\n return this;\n }\n setContext(context) {\n this.factory.setContext(context);\n return this;\n }\n parse(line, options = {}) {\n this.builder.reset(options);\n const result = this.parser.parse(line);\n if (!result.success && this.options.throwOnError) {\n L(result);\n throw new RuntimeError('Error parsing line: ' + line);\n }\n return result;\n }\n beam(notes, options) {\n this.factory.Beam({ notes, options });\n return notes;\n }\n tuplet(notes, options) {\n this.factory.Tuplet({ notes, options });\n return notes;\n }\n notes(line, options = {}) {\n options = Object.assign({ clef: this.defaults.clef, stem: this.defaults.stem }, options);\n this.parse(line, options);\n return this.builder.getElements().notes;\n }\n voice(notes, options = {}) {\n options = Object.assign({ time: this.defaults.time }, options);\n return this.factory.Voice(options).addTickables(notes);\n }\n addCommitHook(commitHook) {\n this.builder.addCommitHook(commitHook);\n }\n}\nEasyScore.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Registry } from './registry';\nimport { Category } from './typeguard';\nimport { defined, prefix } from './util';\n/**\n * Element implements a generic base class for VexFlow, with implementations\n * of general functions and properties that can be inherited by all VexFlow elements.\n */\nexport class Element {\n constructor() {\n var _a;\n this.children = [];\n this.attrs = {\n id: Element.newID(),\n el: undefined,\n type: this.getCategory(),\n classes: {},\n };\n this.rendered = false;\n // If a default registry exist, then register with it right away.\n (_a = Registry.getDefaultRegistry()) === null || _a === void 0 ? void 0 : _a.register(this);\n }\n static get CATEGORY() {\n return Category.Element;\n }\n static newID() {\n return `auto${Element.ID++}`;\n }\n addChildElement(child) {\n this.children.push(child);\n return this;\n }\n getCategory() {\n return this.constructor.CATEGORY;\n }\n /**\n * Set the element style used to render.\n *\n * Example:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.draw();\n * ```\n * Note: If the element draws additional sub-elements (ie.: Modifiers in a Stave),\n * the style can be applied to all of them by means of the context:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.getContext().setFillStyle('red');\n * element.getContext().setStrokeStyle('red');\n * element.draw();\n * ```\n * or using drawWithStyle:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.drawWithStyle();\n * ```\n */\n setStyle(style) {\n this.style = style;\n return this;\n }\n /** Set the element & associated children style used for rendering. */\n setGroupStyle(style) {\n this.style = style;\n this.children.forEach((child) => child.setGroupStyle(style));\n return this;\n }\n /** Get the element style used for rendering. */\n getStyle() {\n return this.style;\n }\n /** Apply the element style to `context`. */\n applyStyle(context = this.context, style = this.getStyle()) {\n if (!style)\n return this;\n if (!context)\n return this;\n context.save();\n if (style.shadowColor)\n context.setShadowColor(style.shadowColor);\n if (style.shadowBlur)\n context.setShadowBlur(style.shadowBlur);\n if (style.fillStyle)\n context.setFillStyle(style.fillStyle);\n if (style.strokeStyle)\n context.setStrokeStyle(style.strokeStyle);\n if (style.lineWidth)\n context.setLineWidth(style.lineWidth);\n return this;\n }\n /** Restore the style of `context`. */\n restoreStyle(context = this.context, style = this.getStyle()) {\n if (!style)\n return this;\n if (!context)\n return this;\n context.restore();\n return this;\n }\n /**\n * Draw the element and all its sub-elements (ie.: Modifiers in a Stave)\n * with the element style.\n */\n drawWithStyle() {\n this.checkContext();\n this.applyStyle();\n this.draw();\n this.restoreStyle();\n }\n /** Check if it has a class label (An element can have multiple class labels). */\n hasClass(className) {\n return this.attrs.classes[className] === true;\n }\n /** Add a class label (An element can have multiple class labels). */\n addClass(className) {\n var _a;\n this.attrs.classes[className] = true;\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({\n id: this.attrs.id,\n name: 'class',\n value: className,\n oldValue: undefined,\n });\n return this;\n }\n /** Remove a class label (An element can have multiple class labels). */\n removeClass(className) {\n var _a;\n delete this.attrs.classes[className];\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({\n id: this.attrs.id,\n name: 'class',\n value: undefined,\n oldValue: className,\n });\n return this;\n }\n /** Call back from registry after the element is registered. */\n onRegister(registry) {\n this.registry = registry;\n return this;\n }\n /** Return the rendered status. */\n isRendered() {\n return this.rendered;\n }\n /** Set the rendered status. */\n setRendered(rendered = true) {\n this.rendered = rendered;\n return this;\n }\n /** Return the element attributes. */\n getAttributes() {\n return this.attrs;\n }\n /** Return an attribute. */\n // eslint-disable-next-line\n getAttribute(name) {\n return this.attrs[name];\n }\n /** Return associated SVGElement. */\n getSVGElement(suffix = '') {\n const id = prefix(this.attrs.id + suffix);\n const element = document.getElementById(id);\n if (element)\n return element;\n }\n /** Set an attribute. */\n // eslint-disable-next-line\n setAttribute(name, value) {\n var _a;\n const oldID = this.attrs.id;\n const oldValue = this.attrs[name];\n this.attrs[name] = value;\n // Register with old id to support id changes.\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({ id: oldID, name, value, oldValue });\n return this;\n }\n /** Get the boundingBox. */\n getBoundingBox() {\n return this.boundingBox;\n }\n /** Return the context. */\n getContext() {\n return this.context;\n }\n /** Set the context. */\n setContext(context) {\n this.context = context;\n return this;\n }\n /** Validate and return the context. */\n checkContext() {\n return defined(this.context, 'NoContext', 'No rendering context attached to instance.');\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // Font Handling\n /**\n * Provide a CSS compatible font string (e.g., 'bold 16px Arial').\n */\n set font(f) {\n this.setFont(f);\n }\n /** Returns the CSS compatible font string. */\n get font() {\n return Font.toCSSString(this.textFont);\n }\n /**\n * Set the element's font family, size, weight, style (e.g., `Arial`, `10pt`, `bold`, `italic`).\n * @param font is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (at least one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n * If no arguments are provided, then the font is set to the default font.\n * Each Element subclass may specify its own default by overriding the static `TEXT_FONT` property.\n */\n setFont(font, size, weight, style) {\n // Allow subclasses to override `TEXT_FONT`.\n const defaultTextFont = this.constructor.TEXT_FONT;\n const fontIsObject = typeof font === 'object';\n const fontIsString = typeof font === 'string';\n const fontIsUndefined = font === undefined;\n const sizeWeightStyleAreUndefined = size === undefined && weight === undefined && style === undefined;\n if (fontIsObject) {\n // `font` is case 1) a FontInfo object\n this.textFont = Object.assign(Object.assign({}, defaultTextFont), font);\n }\n else if (fontIsString && sizeWeightStyleAreUndefined) {\n // `font` is case 2) CSS font shorthand.\n this.textFont = Font.fromCSSString(font);\n }\n else if (fontIsUndefined && sizeWeightStyleAreUndefined) {\n // All arguments are undefined. Do not check for `arguments.length === 0`,\n // which fails on the edge case: `setFont(undefined)`.\n // TODO: See if we can remove this case entirely without introducing a visual diff.\n // The else case below seems like it should be equivalent to this case.\n this.textFont = Object.assign({}, defaultTextFont);\n }\n else {\n // `font` is case 3) a font family string (e.g., 'Times New Roman').\n // The other parameters represent the size, weight, and style.\n // It is okay for `font` to be undefined while one or more of the other arguments is provided.\n // Following CSS conventions, unspecified params are reset to the default.\n this.textFont = Font.validate(font !== null && font !== void 0 ? font : defaultTextFont.family, size !== null && size !== void 0 ? size : defaultTextFont.size, weight !== null && weight !== void 0 ? weight : defaultTextFont.weight, style !== null && style !== void 0 ? style : defaultTextFont.style);\n }\n return this;\n }\n getFont() {\n if (!this.textFont) {\n this.resetFont();\n }\n return Font.toCSSString(this.textFont);\n }\n /**\n * Reset the text font to the style indicated by the static `TEXT_FONT` property.\n * Subclasses can call this to initialize `textFont` for the first time.\n */\n resetFont() {\n this.setFont();\n }\n /** Return a copy of the current FontInfo object. */\n get fontInfo() {\n if (!this.textFont) {\n this.resetFont();\n }\n // We can cast to Required here, because\n // we just called resetFont() above to ensure this.textFont is set.\n return Object.assign({}, this.textFont);\n }\n set fontInfo(fontInfo) {\n this.setFont(fontInfo);\n }\n /** Change the font size, while keeping everything else the same. */\n setFontSize(size) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, size, fontInfo.weight, fontInfo.style);\n return this;\n }\n /**\n * @returns a CSS font-size string (e.g., '18pt', '12px', '1em').\n * See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.\n */\n getFontSize() {\n return this.fontSize;\n }\n /**\n * The size is 1) a string of the form '10pt' or '16px', compatible with the CSS font-size property.\n * or 2) a number, which is interpreted as a point size (i.e. 12 == '12pt').\n */\n set fontSize(size) {\n this.setFontSize(size);\n }\n /**\n * @returns a CSS font-size string (e.g., '18pt', '12px', '1em').\n */\n get fontSize() {\n let size = this.fontInfo.size;\n if (typeof size === 'number') {\n size = `${size}pt`;\n }\n return size;\n }\n /**\n * @returns the font size in `pt`.\n */\n get fontSizeInPoints() {\n return Font.convertSizeToPointValue(this.fontSize);\n }\n /**\n * @returns the font size in `px`.\n */\n get fontSizeInPixels() {\n return Font.convertSizeToPixelValue(this.fontSize);\n }\n /**\n * @returns a CSS font-style string (e.g., 'italic').\n */\n get fontStyle() {\n return this.fontInfo.style;\n }\n set fontStyle(style) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, fontInfo.size, fontInfo.weight, style);\n }\n /**\n * @returns a CSS font-weight string (e.g., 'bold').\n * As in CSS, font-weight is always returned as a string, even if it was set as a number.\n */\n get fontWeight() {\n return this.fontInfo.weight + '';\n }\n set fontWeight(weight) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, fontInfo.size, weight, fontInfo.style);\n }\n}\nElement.ID = 1000;\n/**\n * Default font for text. This is not related to music engraving. Instead, see `Flow.setMusicFont(...fontNames)`\n * to customize the font for musical symbols placed on the score.\n */\nElement.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: Font.SIZE,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n// MIT License\nimport { Accidental } from './accidental';\nimport { Annotation, AnnotationHorizontalJustify, AnnotationVerticalJustify } from './annotation';\nimport { Articulation } from './articulation';\nimport { BarNote } from './barnote';\nimport { Beam } from './beam';\nimport { ChordSymbol } from './chordsymbol';\nimport { ClefNote } from './clefnote';\nimport { Curve } from './curve';\nimport { EasyScore } from './easyscore';\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { FretHandFinger } from './frethandfinger';\nimport { GhostNote } from './ghostnote';\nimport { GlyphNote } from './glyphnote';\nimport { GraceNote } from './gracenote';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { KeySigNote } from './keysignote';\nimport { ModifierContext } from './modifiercontext';\nimport { MultiMeasureRest } from './multimeasurerest';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { PedalMarking } from './pedalmarking';\nimport { Renderer } from './renderer';\nimport { RepeatNote } from './repeatnote';\nimport { Stave } from './stave';\nimport { StaveConnector } from './staveconnector';\nimport { StaveLine } from './staveline';\nimport { StaveNote } from './stavenote';\nimport { StaveTie } from './stavetie';\nimport { StringNumber } from './stringnumber';\nimport { System } from './system';\nimport { TabNote } from './tabnote';\nimport { TabStave } from './tabstave';\nimport { TextBracket } from './textbracket';\nimport { TextDynamics } from './textdynamics';\nimport { TextNote } from './textnote';\nimport { TickContext } from './tickcontext';\nimport { TimeSigNote } from './timesignote';\nimport { Tuplet } from './tuplet';\nimport { defined, log, RuntimeError } from './util';\nimport { VibratoBracket } from './vibratobracket';\nimport { Voice } from './voice';\nimport { isHTMLCanvas } from './web';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Factory.DEBUG)\n log('Vex.Flow.Factory', args);\n}\n/**\n * Factory implements a high level API around VexFlow.\n */\nexport class Factory {\n /**\n * Example:\n *\n * Create an SVG renderer and attach it to the DIV element named \"boo\" to render using 1200 and 600\n *\n * `const vf: Factory = new Vex.Flow.Factory({renderer: { elementId: 'boo', width: 1200, height: 600 }});`\n */\n constructor(options = {}) {\n L('New factory: ', options);\n this.options = {\n stave: {\n space: 10,\n },\n renderer: {\n elementId: '',\n width: 500,\n height: 200,\n background: '#FFF',\n },\n font: Factory.TEXT_FONT,\n };\n this.setOptions(options);\n }\n /**\n * Static simplified function to access constructor without providing FactoryOptions\n *\n * Example:\n *\n * Create an SVG renderer and attach it to the DIV element named \"boo\" to render using 1200 and 600\n *\n * `const vf: Factory = Vex.Flow.Factory.newFromElementId('boo', 1200, 600 );`\n */\n static newFromElementId(elementId, width = 500, height = 200) {\n return new Factory({ renderer: { elementId, width, height } });\n }\n reset() {\n this.renderQ = [];\n this.systems = [];\n this.staves = [];\n this.voices = [];\n this.stave = undefined; // current stave\n }\n setOptions(options) {\n this.options = Object.assign(Object.assign({}, this.options), options);\n this.initRenderer();\n this.reset();\n }\n initRenderer() {\n const { elementId, width, height, background } = this.options.renderer;\n if (elementId == null) {\n return;\n }\n if (elementId == '') {\n L(this);\n throw new RuntimeError('renderer.elementId not set in FactoryOptions');\n }\n let backend = this.options.renderer.backend;\n if (backend === undefined) {\n const elem = document.getElementById(elementId);\n // We use a custom type check here, because node-canvas mimics canvas,\n // but is not an instance of window.HTMLCanvasElement.\n // In fact, `window` might be undefined here.\n // See: https://www.npmjs.com/package/canvas\n if (isHTMLCanvas(elem)) {\n backend = Renderer.Backends.CANVAS;\n }\n else {\n backend = Renderer.Backends.SVG;\n }\n }\n this.context = Renderer.buildContext(elementId, backend, width, height, background);\n }\n getContext() {\n return this.context;\n }\n setContext(context) {\n this.context = context;\n return this;\n }\n getStave() {\n return this.stave;\n }\n getVoices() {\n return this.voices;\n }\n /** Return pixels from current stave spacing. */\n Stave(params) {\n const staveSpace = this.options.stave.space;\n const p = Object.assign({ x: 0, y: 0, width: this.options.renderer.width - staveSpace * 1.0, options: { spacing_between_lines_px: staveSpace * 1.0 } }, params);\n const stave = new Stave(p.x, p.y, p.width, p.options);\n this.staves.push(stave);\n stave.setContext(this.context);\n this.stave = stave;\n return stave;\n }\n TabStave(params) {\n const staveSpace = this.options.stave.space;\n const p = Object.assign({ x: 0, y: 0, width: this.options.renderer.width - staveSpace * 1.0, options: { spacing_between_lines_px: staveSpace * 1.3 } }, params);\n const stave = new TabStave(p.x, p.y, p.width, p.options);\n this.staves.push(stave);\n stave.setContext(this.context);\n this.stave = stave;\n return stave;\n }\n StaveNote(noteStruct) {\n const note = new StaveNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GlyphNote(glyph, noteStruct, options) {\n const note = new GlyphNote(glyph, noteStruct, options);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n RepeatNote(type, noteStruct, options) {\n const note = new RepeatNote(type, noteStruct, options);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GhostNote(noteStruct) {\n const ghostNote = new GhostNote(noteStruct);\n if (this.stave)\n ghostNote.setStave(this.stave);\n ghostNote.setContext(this.context);\n this.renderQ.push(ghostNote);\n return ghostNote;\n }\n TextNote(noteStruct) {\n const textNote = new TextNote(noteStruct);\n if (this.stave)\n textNote.setStave(this.stave);\n textNote.setContext(this.context);\n this.renderQ.push(textNote);\n return textNote;\n }\n BarNote(params = {}) {\n const barNote = new BarNote(params.type);\n if (this.stave)\n barNote.setStave(this.stave);\n barNote.setContext(this.context);\n this.renderQ.push(barNote);\n return barNote;\n }\n ClefNote(params) {\n const p = Object.assign({ type: 'treble', options: {\n size: 'default',\n annotation: undefined,\n } }, params);\n const clefNote = new ClefNote(p.type, p.options.size, p.options.annotation);\n if (this.stave)\n clefNote.setStave(this.stave);\n clefNote.setContext(this.context);\n this.renderQ.push(clefNote);\n return clefNote;\n }\n TimeSigNote(params) {\n const p = Object.assign({ time: '4/4' }, params);\n const timeSigNote = new TimeSigNote(p.time);\n if (this.stave)\n timeSigNote.setStave(this.stave);\n timeSigNote.setContext(this.context);\n this.renderQ.push(timeSigNote);\n return timeSigNote;\n }\n KeySigNote(params) {\n const keySigNote = new KeySigNote(params.key, params.cancelKey, params.alterKey);\n if (this.stave)\n keySigNote.setStave(this.stave);\n keySigNote.setContext(this.context);\n this.renderQ.push(keySigNote);\n return keySigNote;\n }\n TabNote(noteStruct) {\n const note = new TabNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GraceNote(noteStruct) {\n const note = new GraceNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n return note;\n }\n GraceNoteGroup(params) {\n const group = new GraceNoteGroup(params.notes, params.slur);\n group.setContext(this.context);\n return group;\n }\n Accidental(params) {\n const accid = new Accidental(params.type);\n accid.setContext(this.context);\n return accid;\n }\n Annotation(params) {\n const p = Object.assign({ text: 'p', hJustify: AnnotationHorizontalJustify.CENTER, vJustify: AnnotationVerticalJustify.BOTTOM }, params);\n const annotation = new Annotation(p.text);\n annotation.setJustification(p.hJustify);\n annotation.setVerticalJustification(p.vJustify);\n annotation.setFont(p.font);\n annotation.setContext(this.context);\n return annotation;\n }\n ChordSymbol(params) {\n const p = Object.assign({ vJustify: 'top', hJustify: 'center', kerning: true, reportWidth: true }, params);\n const chordSymbol = new ChordSymbol();\n chordSymbol.setHorizontal(p.hJustify);\n chordSymbol.setVertical(p.vJustify);\n chordSymbol.setEnableKerning(p.kerning);\n chordSymbol.setReportWidth(p.reportWidth);\n // There is a default font based on the engraving font. Only set then\n // font if it is specific, else use the default\n if (typeof p.fontFamily === 'string' && typeof p.fontSize === 'number') {\n if (typeof p.fontWeight === 'string')\n chordSymbol.setFont(p.fontFamily, p.fontSize, p.fontWeight);\n else\n chordSymbol.setFont(p.fontFamily, p.fontSize, '');\n }\n else if (typeof p.fontSize === 'number') {\n chordSymbol.setFontSize(p.fontSize);\n }\n chordSymbol.setContext(this.context);\n return chordSymbol;\n }\n Articulation(params) {\n const p = Object.assign({ type: 'a.', position: 'above' }, params);\n const articulation = new Articulation(p.type);\n articulation.setPosition(p.position);\n articulation.setContext(this.context);\n return articulation;\n }\n Ornament(type, params) {\n const options = Object.assign({ type, position: 0, accidental: '' }, params);\n const ornament = new Ornament(type);\n ornament.setPosition(options.position);\n if (options.upperAccidental) {\n ornament.setUpperAccidental(options.upperAccidental);\n }\n if (options.lowerAccidental) {\n ornament.setLowerAccidental(options.lowerAccidental);\n }\n if (typeof options.delayed !== 'undefined') {\n ornament.setDelayed(options.delayed);\n }\n ornament.setContext(this.context);\n return ornament;\n }\n TextDynamics(params) {\n const p = Object.assign({ text: 'p', duration: 'q', dots: 0, line: 0 }, params);\n const text = new TextDynamics({\n text: p.text,\n line: p.line,\n duration: p.duration,\n dots: p.dots,\n });\n if (this.stave)\n text.setStave(this.stave);\n text.setContext(this.context);\n this.renderQ.push(text);\n return text;\n }\n Fingering(params) {\n const p = Object.assign({ number: '0', position: 'left' }, params);\n const fingering = new FretHandFinger(p.number);\n fingering.setPosition(p.position);\n fingering.setContext(this.context);\n return fingering;\n }\n StringNumber(params, drawCircle = true) {\n const stringNumber = new StringNumber(params.number);\n stringNumber.setPosition(params.position);\n stringNumber.setContext(this.context);\n stringNumber.setDrawCircle(drawCircle);\n return stringNumber;\n }\n TickContext() {\n return new TickContext();\n }\n ModifierContext() {\n return new ModifierContext();\n }\n MultiMeasureRest(params) {\n const numMeasures = defined(params.number_of_measures, 'NoNumberOfMeasures');\n const multiMeasureRest = new MultiMeasureRest(numMeasures, params);\n multiMeasureRest.setContext(this.context);\n this.renderQ.push(multiMeasureRest);\n return multiMeasureRest;\n }\n Voice(params) {\n const p = Object.assign({ time: '4/4' }, params);\n const voice = new Voice(p.time);\n this.voices.push(voice);\n return voice;\n }\n StaveConnector(params) {\n const connector = new StaveConnector(params.top_stave, params.bottom_stave);\n connector.setType(params.type).setContext(this.context);\n this.renderQ.push(connector);\n return connector;\n }\n Formatter(options) {\n return new Formatter(options);\n }\n Tuplet(params) {\n const p = Object.assign({ notes: [], options: {} }, params);\n const tuplet = new Tuplet(p.notes, p.options).setContext(this.context);\n this.renderQ.push(tuplet);\n return tuplet;\n }\n Beam(params) {\n var _a, _b, _c, _d, _e;\n const beam = new Beam(params.notes, (_a = params.options) === null || _a === void 0 ? void 0 : _a.autoStem).setContext(this.context);\n beam.breakSecondaryAt((_c = (_b = params.options) === null || _b === void 0 ? void 0 : _b.secondaryBeamBreaks) !== null && _c !== void 0 ? _c : []);\n if ((_d = params.options) === null || _d === void 0 ? void 0 : _d.partialBeamDirections) {\n Object.entries((_e = params.options) === null || _e === void 0 ? void 0 : _e.partialBeamDirections).forEach(([noteIndex, direction]) => {\n beam.setPartialBeamSideAt(Number(noteIndex), direction);\n });\n }\n this.renderQ.push(beam);\n return beam;\n }\n Curve(params) {\n const curve = new Curve(params.from, params.to, params.options).setContext(this.context);\n this.renderQ.push(curve);\n return curve;\n }\n StaveTie(params) {\n var _a;\n const tie = new StaveTie({\n first_note: params.from,\n last_note: params.to,\n first_indices: params.first_indices,\n last_indices: params.last_indices,\n }, params.text);\n if ((_a = params.options) === null || _a === void 0 ? void 0 : _a.direction)\n tie.setDirection(params.options.direction);\n tie.setContext(this.context);\n this.renderQ.push(tie);\n return tie;\n }\n StaveLine(params) {\n var _a, _b;\n const line = new StaveLine({\n first_note: params.from,\n last_note: params.to,\n first_indices: params.first_indices,\n last_indices: params.last_indices,\n });\n if ((_a = params.options) === null || _a === void 0 ? void 0 : _a.text)\n line.setText(params.options.text);\n if ((_b = params.options) === null || _b === void 0 ? void 0 : _b.font)\n line.setFont(params.options.font);\n line.setContext(this.context);\n this.renderQ.push(line);\n return line;\n }\n VibratoBracket(params) {\n const vibratoBracket = new VibratoBracket({\n start: params.from,\n stop: params.to,\n });\n if (params.options.line)\n vibratoBracket.setLine(params.options.line);\n if (params.options.harsh)\n vibratoBracket.setHarsh(params.options.harsh);\n vibratoBracket.setContext(this.context);\n this.renderQ.push(vibratoBracket);\n return vibratoBracket;\n }\n TextBracket(params) {\n const textBracket = new TextBracket({\n start: params.from,\n stop: params.to,\n text: params.text,\n superscript: params.options.superscript,\n position: params.options.position,\n });\n if (params.options.line)\n textBracket.setLine(params.options.line);\n if (params.options.font)\n textBracket.setFont(params.options.font);\n textBracket.setContext(this.context);\n this.renderQ.push(textBracket);\n return textBracket;\n }\n System(params = {}) {\n params.factory = this;\n const system = new System(params).setContext(this.context);\n this.systems.push(system);\n return system;\n }\n /**\n * Creates EasyScore. Normally the first step after constructing a Factory. For example:\n * ```\n * const vf: Factory = new Vex.Flow.Factory({renderer: { elementId: 'boo', width: 1200, height: 600 }});\n * const score: EasyScore = vf.EasyScore();\n * ```\n * @param options.factory optional instance of Factory\n * @param options.builder instance of Builder\n * @param options.commitHooks function to call after a note element is created\n * @param options.throwOnError throw error in case of parsing error\n */\n EasyScore(options = {}) {\n options.factory = this;\n return new EasyScore(options);\n }\n PedalMarking(params) {\n const p = Object.assign({ notes: [], options: {\n style: 'mixed',\n } }, params);\n const pedal = new PedalMarking(p.notes);\n pedal.setType(PedalMarking.typeString[p.options.style]);\n pedal.setContext(this.context);\n this.renderQ.push(pedal);\n return pedal;\n }\n NoteSubGroup(params) {\n const p = Object.assign({ notes: [] }, params);\n const group = new NoteSubGroup(p.notes);\n group.setContext(this.context);\n return group;\n }\n /** Render the score. */\n draw() {\n const ctx = this.context;\n this.systems.forEach((s) => s.setContext(ctx).format());\n this.staves.forEach((s) => s.setContext(ctx).draw());\n this.voices.forEach((v) => v.setContext(ctx).draw());\n this.renderQ.forEach((e) => {\n if (!e.isRendered())\n e.setContext(ctx).draw();\n });\n this.systems.forEach((s) => s.setContext(ctx).draw());\n this.reset();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Factory.DEBUG` to `true`. */\nFactory.DEBUG = false;\n/** Default text font. */\nFactory.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Accidental } from './accidental';\nimport { Annotation, AnnotationHorizontalJustify, AnnotationVerticalJustify } from './annotation';\nimport { Articulation } from './articulation';\nimport { BarNote } from './barnote';\nimport { Beam } from './beam';\nimport { Bend } from './bend';\nimport { BoundingBox } from './boundingbox';\nimport { BoundingBoxComputation } from './boundingboxcomputation';\nimport { CanvasContext } from './canvascontext';\nimport { ChordSymbol, ChordSymbolHorizontalJustify, ChordSymbolVerticalJustify, SymbolModifiers, SymbolTypes, } from './chordsymbol';\nimport { Clef } from './clef';\nimport { ClefNote } from './clefnote';\nimport { Crescendo } from './crescendo';\nimport { Curve, CurvePosition } from './curve';\nimport { Dot } from './dot';\nimport { EasyScore } from './easyscore';\nimport { Element } from './element';\nimport { Factory } from './factory';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Formatter } from './formatter';\nimport { Fraction } from './fraction';\nimport { FretHandFinger } from './frethandfinger';\nimport { GhostNote } from './ghostnote';\nimport { Glyph } from './glyph';\nimport { GlyphNote } from './glyphnote';\nimport { GraceNote } from './gracenote';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { GraceTabNote } from './gracetabnote';\nimport { KeyManager } from './keymanager';\nimport { KeySignature } from './keysignature';\nimport { KeySigNote } from './keysignote';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { ModifierContext } from './modifiercontext';\nimport { MultiMeasureRest } from './multimeasurerest';\nimport { Music } from './music';\nimport { Note } from './note';\nimport { NoteHead } from './notehead';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { Parenthesis } from './parenthesis';\nimport { Parser } from './parser';\nimport { PedalMarking } from './pedalmarking';\nimport { Registry } from './registry';\nimport { RenderContext } from './rendercontext';\nimport { Renderer, RendererBackends, RendererLineEndType } from './renderer';\nimport { RepeatNote } from './repeatnote';\nimport { Stave } from './stave';\nimport { Barline, BarlineType } from './stavebarline';\nimport { StaveConnector } from './staveconnector';\nimport { StaveHairpin } from './stavehairpin';\nimport { StaveLine } from './staveline';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { StaveNote } from './stavenote';\nimport { Repetition } from './staverepetition';\nimport { StaveTempo } from './stavetempo';\nimport { StaveText } from './stavetext';\nimport { StaveTie } from './stavetie';\nimport { Volta, VoltaType } from './stavevolta';\nimport { Stem } from './stem';\nimport { StringNumber } from './stringnumber';\nimport { Stroke } from './strokes';\nimport { SVGContext } from './svgcontext';\nimport { System } from './system';\nimport { Tables } from './tables';\nimport { TabNote } from './tabnote';\nimport { TabSlide } from './tabslide';\nimport { TabStave } from './tabstave';\nimport { TabTie } from './tabtie';\nimport { TextBracket, TextBracketPosition } from './textbracket';\nimport { TextDynamics } from './textdynamics';\nimport { TextFormatter } from './textformatter';\nimport { TextJustification, TextNote } from './textnote';\nimport { TickContext } from './tickcontext';\nimport { TimeSignature } from './timesignature';\nimport { TimeSigNote } from './timesignote';\nimport { Tremolo } from './tremolo';\nimport { Tuning } from './tuning';\nimport { Tuplet } from './tuplet';\nimport { DATE, ID, VERSION } from './version';\nimport { Vibrato } from './vibrato';\nimport { VibratoBracket } from './vibratobracket';\nimport { Voice, VoiceMode } from './voice';\nexport class Flow {\n static get BUILD() {\n return {\n /** version number. */\n VERSION: VERSION,\n /** git commit ID that this library was built from. */\n ID: ID,\n /** The date when this library was compiled. */\n DATE: DATE,\n };\n }\n /**\n * Examples:\n * ```\n * Vex.Flow.setMusicFont('Petaluma');\n * Vex.Flow.setMusicFont('Bravura', 'Gonville');\n * ```\n *\n * **CASE 1**: You are using `vexflow.js`, which includes all music fonts (Bravura, Gonville, Petaluma, Custom).\n * In this case, calling this method is optional, since VexFlow already defaults to a music font stack of:\n * 'Bravura', 'Gonville', 'Custom'.\n *\n * **CASE 2**: You are using `vexflow-bravura.js` or `vexflow-petaluma.js` or `vexflow-gonville.js`,\n * which includes a single music font. Calling this method is unnecessary.\n *\n * **CASE 3**: You are using the light weight `vexflow-core.js` to take advantage of lazy loading for fonts.\n * In this case, the default music font stack is empty.\n * Example:\n * ```\n * await Vex.Flow.fetchMusicFont('Petaluma');\n * Vex.Flow.setMusicFont('Petaluma');\n * ... (do VexFlow stuff) ...\n * ```\n * See `demos/fonts/` for more examples.\n *\n * @returns an array of Font objects corresponding to the provided `fontNames`.\n */\n static setMusicFont(...fontNames) {\n // Convert the array of font names into an array of Font objects.\n const fonts = fontNames.map((fontName) => Font.load(fontName));\n Tables.MUSIC_FONT_STACK = fonts;\n Glyph.MUSIC_FONT_STACK = fonts.slice();\n Glyph.CURRENT_CACHE_KEY = fontNames.join(',');\n return fonts;\n }\n /**\n * Used with vexflow-core which supports dynamic font loading.\n */\n // eslint-disable-next-line\n static fetchMusicFont(fontName, fontModuleOrPath) {\n return __awaiter(this, void 0, void 0, function* () {\n // The default implementation does nothing.\n // See vexflow-core.ts for the implementation that vexflow-core.js uses.\n });\n }\n static getMusicFont() {\n const fonts = Tables.MUSIC_FONT_STACK;\n return fonts.map((font) => font.getName());\n }\n static get RENDER_PRECISION_PLACES() {\n return Tables.RENDER_PRECISION_PLACES;\n }\n static set RENDER_PRECISION_PLACES(precision) {\n Tables.RENDER_PRECISION_PLACES = precision;\n }\n static get SOFTMAX_FACTOR() {\n return Tables.SOFTMAX_FACTOR;\n }\n static set SOFTMAX_FACTOR(factor) {\n Tables.SOFTMAX_FACTOR = factor;\n }\n static get NOTATION_FONT_SCALE() {\n return Tables.NOTATION_FONT_SCALE;\n }\n static set NOTATION_FONT_SCALE(value) {\n Tables.NOTATION_FONT_SCALE = value;\n }\n static get TABLATURE_FONT_SCALE() {\n return Tables.TABLATURE_FONT_SCALE;\n }\n static set TABLATURE_FONT_SCALE(value) {\n Tables.TABLATURE_FONT_SCALE = value;\n }\n static get RESOLUTION() {\n return Tables.RESOLUTION;\n }\n static set RESOLUTION(value) {\n Tables.RESOLUTION = value;\n }\n static get SLASH_NOTEHEAD_WIDTH() {\n return Tables.SLASH_NOTEHEAD_WIDTH;\n }\n static set SLASH_NOTEHEAD_WIDTH(value) {\n Tables.SLASH_NOTEHEAD_WIDTH = value;\n }\n static get STAVE_LINE_DISTANCE() {\n return Tables.STAVE_LINE_DISTANCE;\n }\n static set STAVE_LINE_DISTANCE(value) {\n Tables.STAVE_LINE_DISTANCE = value;\n }\n static get STAVE_LINE_THICKNESS() {\n return Tables.STAVE_LINE_THICKNESS;\n }\n static set STAVE_LINE_THICKNESS(value) {\n Tables.STAVE_LINE_THICKNESS = value;\n }\n static get STEM_HEIGHT() {\n return Tables.STEM_HEIGHT;\n }\n static set STEM_HEIGHT(value) {\n Tables.STEM_HEIGHT = value;\n }\n static get STEM_WIDTH() {\n return Tables.STEM_WIDTH;\n }\n static set STEM_WIDTH(value) {\n Tables.STEM_WIDTH = value;\n }\n static get TIME4_4() {\n return Tables.TIME4_4;\n }\n static get accidentalMap() {\n return Tables.accidentalMap;\n }\n static get unicode() {\n return Tables.unicode;\n }\n static keySignature(spec) {\n return Tables.keySignature(spec);\n }\n static hasKeySignature(spec) {\n return Tables.hasKeySignature(spec);\n }\n static getKeySignatures() {\n return Tables.getKeySignatures();\n }\n static clefProperties(clef) {\n return Tables.clefProperties(clef);\n }\n // eslint-disable-next-line\n static keyProperties(key, clef, params) {\n return Tables.keyProperties(key, clef, params);\n }\n static durationToTicks(duration) {\n return Tables.durationToTicks(duration);\n }\n}\nFlow.Accidental = Accidental;\nFlow.Annotation = Annotation;\nFlow.Articulation = Articulation;\nFlow.Barline = Barline;\nFlow.BarNote = BarNote;\nFlow.Beam = Beam;\nFlow.Bend = Bend;\nFlow.BoundingBox = BoundingBox;\nFlow.BoundingBoxComputation = BoundingBoxComputation;\nFlow.CanvasContext = CanvasContext;\nFlow.ChordSymbol = ChordSymbol;\nFlow.Clef = Clef;\nFlow.ClefNote = ClefNote;\nFlow.Crescendo = Crescendo;\nFlow.Curve = Curve;\nFlow.Dot = Dot;\nFlow.EasyScore = EasyScore;\nFlow.Element = Element;\nFlow.Factory = Factory;\nFlow.Font = Font;\nFlow.Formatter = Formatter;\nFlow.Fraction = Fraction;\nFlow.FretHandFinger = FretHandFinger;\nFlow.GhostNote = GhostNote;\nFlow.Glyph = Glyph;\nFlow.GlyphNote = GlyphNote;\nFlow.GraceNote = GraceNote;\nFlow.GraceNoteGroup = GraceNoteGroup;\nFlow.GraceTabNote = GraceTabNote;\nFlow.KeyManager = KeyManager;\nFlow.KeySignature = KeySignature;\nFlow.KeySigNote = KeySigNote;\nFlow.Modifier = Modifier;\nFlow.ModifierContext = ModifierContext;\nFlow.MultiMeasureRest = MultiMeasureRest;\nFlow.Music = Music;\nFlow.Note = Note;\nFlow.NoteHead = NoteHead;\nFlow.NoteSubGroup = NoteSubGroup;\nFlow.Ornament = Ornament;\nFlow.Parenthesis = Parenthesis;\nFlow.Parser = Parser;\nFlow.PedalMarking = PedalMarking;\nFlow.Registry = Registry;\nFlow.RenderContext = RenderContext;\nFlow.Renderer = Renderer;\nFlow.RepeatNote = RepeatNote;\nFlow.Repetition = Repetition;\nFlow.Stave = Stave;\nFlow.StaveConnector = StaveConnector;\nFlow.StaveHairpin = StaveHairpin;\nFlow.StaveLine = StaveLine;\nFlow.StaveModifier = StaveModifier;\nFlow.StaveNote = StaveNote;\nFlow.StaveTempo = StaveTempo;\nFlow.StaveText = StaveText;\nFlow.StaveTie = StaveTie;\nFlow.Stem = Stem;\nFlow.StringNumber = StringNumber;\nFlow.Stroke = Stroke;\nFlow.SVGContext = SVGContext;\nFlow.System = System;\nFlow.TabNote = TabNote;\nFlow.TabSlide = TabSlide;\nFlow.TabStave = TabStave;\nFlow.TabTie = TabTie;\nFlow.TextBracket = TextBracket;\nFlow.TextDynamics = TextDynamics;\nFlow.TextFormatter = TextFormatter;\nFlow.TextNote = TextNote;\nFlow.TickContext = TickContext;\nFlow.TimeSignature = TimeSignature;\nFlow.TimeSigNote = TimeSigNote;\nFlow.Tremolo = Tremolo;\nFlow.Tuning = Tuning;\nFlow.Tuplet = Tuplet;\nFlow.Vibrato = Vibrato;\nFlow.VibratoBracket = VibratoBracket;\nFlow.Voice = Voice;\nFlow.Volta = Volta;\n// Exported Enums.\n// Sorted by the module / file they are exported from.\nFlow.AnnotationHorizontalJustify = AnnotationHorizontalJustify;\nFlow.AnnotationVerticalJustify = AnnotationVerticalJustify;\nFlow.ChordSymbolHorizontalJustify = ChordSymbolHorizontalJustify;\nFlow.ChordSymbolVerticalJustify = ChordSymbolVerticalJustify;\nFlow.SymbolTypes = SymbolTypes;\nFlow.SymbolModifiers = SymbolModifiers;\nFlow.CurvePosition = CurvePosition;\nFlow.FontWeight = FontWeight;\nFlow.FontStyle = FontStyle;\nFlow.ModifierPosition = ModifierPosition;\nFlow.RendererBackends = RendererBackends;\nFlow.RendererLineEndType = RendererLineEndType;\nFlow.BarlineType = BarlineType;\nFlow.StaveModifierPosition = StaveModifierPosition;\nFlow.VoltaType = VoltaType;\nFlow.TextBracketPosition = TextBracketPosition;\nFlow.TextJustification = TextJustification;\nFlow.VoiceMode = VoiceMode;\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { defined } from './util';\nexport var FontWeight;\n(function (FontWeight) {\n FontWeight[\"NORMAL\"] = \"normal\";\n FontWeight[\"BOLD\"] = \"bold\";\n})(FontWeight || (FontWeight = {}));\nexport var FontStyle;\n(function (FontStyle) {\n FontStyle[\"NORMAL\"] = \"normal\";\n FontStyle[\"ITALIC\"] = \"italic\";\n})(FontStyle || (FontStyle = {}));\n// Internal element for parsing CSS font shorthand strings.\nlet fontParser;\nconst Fonts = {};\nexport class Font {\n /**\n * Use `Font.load(fontName)` to get a Font object.\n * Do not call this constructor directly.\n */\n constructor(fontName) {\n this.name = fontName;\n }\n /**\n * @param fontSize a font size to convert. Can be specified as a CSS length string (e.g., '16pt', '1em')\n * or as a number (the unit is assumed to be 'pt'). See `Font.scaleToPxFrom` for the supported\n * units (e.g., pt, em, %).\n * @returns the number of pixels that is equivalent to `fontSize`\n */\n static convertSizeToPixelValue(fontSize = Font.SIZE) {\n var _a;\n if (typeof fontSize === 'number') {\n // Assume the numeric fontSize is specified in pt.\n return fontSize * Font.scaleToPxFrom.pt;\n }\n else {\n const value = parseFloat(fontSize);\n if (isNaN(value)) {\n return 0;\n }\n const unit = fontSize.replace(/[\\d.\\s]/g, '').toLowerCase(); // Extract the unit by removing all numbers, dots, spaces.\n const conversionFactor = (_a = Font.scaleToPxFrom[unit]) !== null && _a !== void 0 ? _a : 1;\n return value * conversionFactor;\n }\n }\n /**\n * @param fontSize a font size to convert. Can be specified as a CSS length string (e.g., '16pt', '1em')\n * or as a number (the unit is assumed to be 'pt'). See `Font.scaleToPxFrom` for the supported\n * units (e.g., pt, em, %).\n * @returns the number of points that is equivalent to `fontSize`\n */\n static convertSizeToPointValue(fontSize = Font.SIZE) {\n var _a;\n if (typeof fontSize === 'number') {\n // Assume the numeric fontSize is specified in pt.\n return fontSize;\n }\n else {\n const value = parseFloat(fontSize);\n if (isNaN(value)) {\n return 0;\n }\n const unit = fontSize.replace(/[\\d.\\s]/g, '').toLowerCase(); // Extract the unit by removing all numbers, dots, spaces.\n const conversionFactor = ((_a = Font.scaleToPxFrom[unit]) !== null && _a !== void 0 ? _a : 1) / Font.scaleToPxFrom.pt;\n return value * conversionFactor;\n }\n }\n /**\n * @param f\n * @param size\n * @param weight\n * @param style\n * @returns the `size` field will include the units (e.g., '12pt', '16px').\n */\n static validate(f, size, weight, style) {\n // If f is a string but all other arguments are undefined, we assume that\n // f is CSS font shorthand (e.g., 'italic bold 10pt Arial').\n if (typeof f === 'string' && size === undefined && weight === undefined && style === undefined) {\n return Font.fromCSSString(f);\n }\n let family;\n if (typeof f === 'object') {\n // f is a FontInfo object, so we extract its fields.\n family = f.family;\n size = f.size;\n weight = f.weight;\n style = f.style;\n }\n else {\n // f is a string representing the font family name or undefined.\n family = f;\n }\n family = family !== null && family !== void 0 ? family : Font.SANS_SERIF;\n size = size !== null && size !== void 0 ? size : Font.SIZE + 'pt';\n weight = weight !== null && weight !== void 0 ? weight : FontWeight.NORMAL;\n style = style !== null && style !== void 0 ? style : FontStyle.NORMAL;\n if (weight === '') {\n weight = FontWeight.NORMAL;\n }\n if (style === '') {\n style = FontStyle.NORMAL;\n }\n // If size is a number, we assume the unit is `pt`.\n if (typeof size === 'number') {\n size = `${size}pt`;\n }\n // If weight is a number (e.g., 900), turn it into a string representation of that number.\n if (typeof weight === 'number') {\n weight = weight.toString();\n }\n // At this point, `family`, `size`, `weight`, and `style` are all strings.\n return { family, size, weight, style };\n }\n /**\n * @param cssFontShorthand a string formatted as CSS font shorthand (e.g., 'italic bold 15pt Arial').\n */\n static fromCSSString(cssFontShorthand) {\n // Let the browser parse this string for us.\n // First, create a span element.\n // Then, set its style.font and extract it back out.\n if (!fontParser) {\n fontParser = document.createElement('span');\n }\n fontParser.style.font = cssFontShorthand;\n const { fontFamily, fontSize, fontWeight, fontStyle } = fontParser.style;\n return { family: fontFamily, size: fontSize, weight: fontWeight, style: fontStyle };\n }\n /**\n * @returns a CSS font shorthand string of the form `italic bold 16pt Arial`.\n */\n static toCSSString(fontInfo) {\n var _a;\n if (!fontInfo) {\n return '';\n }\n let style;\n const st = fontInfo.style;\n if (st === FontStyle.NORMAL || st === '' || st === undefined) {\n style = ''; // no space! Omit the style section.\n }\n else {\n style = st.trim() + ' ';\n }\n let weight;\n const wt = fontInfo.weight;\n if (wt === FontWeight.NORMAL || wt === '' || wt === undefined) {\n weight = ''; // no space! Omit the weight section.\n }\n else if (typeof wt === 'number') {\n weight = wt + ' ';\n }\n else {\n weight = wt.trim() + ' ';\n }\n let size;\n const sz = fontInfo.size;\n if (sz === undefined) {\n size = Font.SIZE + 'pt ';\n }\n else if (typeof sz === 'number') {\n size = sz + 'pt ';\n }\n else {\n // size is already a string.\n size = sz.trim() + ' ';\n }\n const family = (_a = fontInfo.family) !== null && _a !== void 0 ? _a : Font.SANS_SERIF;\n return `${style}${weight}${size}${family}`;\n }\n /**\n * @param fontSize a number representing a font size, or a string font size with units.\n * @param scaleFactor multiply the size by this factor.\n * @returns size * scaleFactor (e.g., 16pt * 3 = 48pt, 8px * 0.5 = 4px, 24 * 2 = 48).\n * If the fontSize argument was a number, the return value will be a number.\n * If the fontSize argument was a string, the return value will be a string.\n */\n static scaleSize(fontSize, scaleFactor) {\n if (typeof fontSize === 'number') {\n return (fontSize * scaleFactor);\n }\n else {\n const value = parseFloat(fontSize);\n const unit = fontSize.replace(/[\\d.\\s]/g, ''); // Remove all numbers, dots, spaces.\n return `${value * scaleFactor}${unit}`;\n }\n }\n /**\n * @param weight a string (e.g., 'bold') or a number (e.g., 600 / semi-bold in the OpenType spec).\n * @returns true if the font weight indicates bold.\n */\n static isBold(weight) {\n if (!weight) {\n return false;\n }\n else if (typeof weight === 'number') {\n return weight >= 600;\n }\n else {\n // a string can be 'bold' or '700'\n const parsedWeight = parseInt(weight, 10);\n if (isNaN(parsedWeight)) {\n return weight.toLowerCase() === 'bold';\n }\n else {\n return parsedWeight >= 600;\n }\n }\n }\n /**\n * @param style\n * @returns true if the font style indicates 'italic'.\n */\n static isItalic(style) {\n if (!style) {\n return false;\n }\n else {\n return style.toLowerCase() === FontStyle.ITALIC;\n }\n }\n /**\n * @param fontName\n * @param woffURL The absolute or relative URL to the woff file.\n * @param includeWoff2 If true, we assume that a woff2 file is in\n * the same folder as the woff file, and will append a `2` to the url.\n */\n // Support distributions of the typescript compiler that do not yet include the FontFace API declarations.\n // eslint-disable-next-line\n // @ts-ignore\n static loadWebFont(fontName, woffURL, includeWoff2 = true) {\n return __awaiter(this, void 0, void 0, function* () {\n const woff2URL = includeWoff2 ? `url(${woffURL}2) format('woff2'), ` : '';\n const woff1URL = `url(${woffURL}) format('woff')`;\n const woffURLs = woff2URL + woff1URL;\n // eslint-disable-next-line\n // @ts-ignore\n const fontFace = new FontFace(fontName, woffURLs);\n yield fontFace.load();\n // eslint-disable-next-line\n // @ts-ignore\n document.fonts.add(fontFace);\n return fontFace;\n });\n }\n /**\n * Load the web fonts that are used by ChordSymbol. For example, `flow.html` calls:\n * `await Vex.Flow.Font.loadWebFonts();`\n * Alternatively, you may load web fonts with a stylesheet link (e.g., from Google Fonts),\n * and a @font-face { font-family: ... } rule in your CSS.\n * If you do not load either of these fonts, ChordSymbol will fall back to Times or Arial,\n * depending on the current music engraving font.\n *\n * You can customize `Font.WEB_FONT_HOST` and `Font.WEB_FONT_FILES` to load different fonts\n * for your app.\n */\n static loadWebFonts() {\n return __awaiter(this, void 0, void 0, function* () {\n const host = Font.WEB_FONT_HOST;\n const files = Font.WEB_FONT_FILES;\n for (const fontName in files) {\n const fontPath = files[fontName];\n Font.loadWebFont(fontName, host + fontPath);\n }\n });\n }\n /**\n * @param fontName\n * @param data optionally set the Font object's `.data` property.\n * This is usually done when setting up a font for the first time.\n * @param metrics optionally set the Font object's `.metrics` property.\n * This is usually done when setting up a font for the first time.\n * @returns a Font object with the given `fontName`.\n * Reuse an existing Font object if a matching one is found.\n */\n static load(fontName, data, metrics) {\n let font = Fonts[fontName];\n if (!font) {\n font = new Font(fontName);\n Fonts[fontName] = font;\n }\n if (data) {\n font.setData(data);\n }\n if (metrics) {\n font.setMetrics(metrics);\n }\n return font;\n }\n getName() {\n return this.name;\n }\n getData() {\n return defined(this.data, 'FontError', 'Missing font data');\n }\n getMetrics() {\n return defined(this.metrics, 'FontError', 'Missing metrics');\n }\n setData(data) {\n this.data = data;\n }\n setMetrics(metrics) {\n this.metrics = metrics;\n }\n hasData() {\n return this.data !== undefined;\n }\n getResolution() {\n return this.getData().resolution;\n }\n getGlyphs() {\n return this.getData().glyphs;\n }\n /**\n * Use the provided key to look up a value in this font's metrics file (e.g., bravura_metrics.ts, petaluma_metrics.ts).\n * @param key is a string separated by periods (e.g., stave.endPaddingMax, clef.lineCount.'5'.shiftY).\n * @param defaultValue is returned if the lookup fails.\n * @returns the retrieved value (or `defaultValue` if the lookup fails).\n */\n // eslint-disable-next-line\n lookupMetric(key, defaultValue) {\n const keyParts = key.split('.');\n // Start with the top level font metrics object, and keep looking deeper into the object (via each part of the period-delimited key).\n let currObj = this.getMetrics();\n for (let i = 0; i < keyParts.length; i++) {\n const keyPart = keyParts[i];\n const value = currObj[keyPart];\n if (value === undefined) {\n // If the key lookup fails, we fall back to the defaultValue.\n return defaultValue;\n }\n // The most recent lookup succeeded, so we drill deeper into the object.\n currObj = value;\n }\n // After checking every part of the key (i.e., the loop completed), return the most recently retrieved value.\n return currObj;\n }\n /** For debugging. */\n toString() {\n return '[' + this.name + ' Font]';\n }\n}\n//////////////////////////////////////////////////////////////////////////////////////////////////\n// STATIC MEMBERS\n/** Default sans-serif font family. */\nFont.SANS_SERIF = 'Arial, sans-serif';\n/** Default serif font family. */\nFont.SERIF = 'Times New Roman, serif';\n/** Default font size in `pt`. */\nFont.SIZE = 10;\n// CSS Font Sizes: 36pt == 48px == 3em == 300% == 0.5in\n/** Given a length (for units: pt, px, em, %, in, mm, cm) what is the scale factor to convert it to px? */\nFont.scaleToPxFrom = {\n pt: 4 / 3,\n px: 1,\n em: 16,\n '%': 4 / 25,\n in: 96,\n mm: 96 / 25.4,\n cm: 96 / 2.54,\n};\n/**\n * Customize this field to specify a different CDN for delivering web fonts.\n * Alternative: https://cdn.jsdelivr.net/npm/vexflow-fonts@1.0.3/\n * Or you can use your own host.\n */\nFont.WEB_FONT_HOST = 'https://unpkg.com/vexflow-fonts@1.0.3/';\n/**\n * These font files will be loaded from the CDN specified by `Font.WEB_FONT_HOST` when\n * `await Font.loadWebFonts()` is called. Customize this field to specify a different\n * set of fonts to load. See: `Font.loadWebFonts()`.\n */\nFont.WEB_FONT_FILES = {\n 'Roboto Slab': 'robotoslab/RobotoSlab-Medium_2.001.woff',\n PetalumaScript: 'petaluma/PetalumaScript_1.10_FS.woff',\n};\n","export const BravuraFont = {\n glyphs: {\n bracketTop: {\n x_min: 0,\n x_max: 469,\n y_min: 0,\n y_max: 295,\n ha: 295,\n o: 'm 0 0 l 180 0 b 674 390 410 43 616 150 b 675 405 675 396 675 400 b 664 425 675 416 671 422 b 628 405 651 425 635 415 b 157 179 613 389 432 199 l 12 179 b 0 168 3 179 0 177 z',\n },\n bracketBottom: {\n x_min: 0,\n x_max: 469,\n y_min: -295,\n y_max: 0,\n ha: 295,\n o: 'm 0 -168 b 12 -179 0 -177 3 -179 l 157 -179 b 628 -405 432 -199 613 -389 b 664 -425 635 -415 651 -425 b 675 -405 671 -422 675 -416 b 674 -390 675 -400 675 -396 b 180 0 616 -150 410 -43 l 0 0 z',\n },\n barlineTick: {\n x_min: 0,\n x_max: 36,\n y_min: 868,\n y_max: 1120,\n ha: 252,\n o: 'm 52 1250 l 52 1613 l 0 1613 l 0 1250 z',\n },\n breathMarkTick: {\n x_min: 0,\n x_max: 500,\n y_min: 0,\n y_max: 502,\n ha: 502,\n o: 'm 9 367 b 0 374 6 372 3 374 b 9 334 0 367 0 343 b 179 19 40 312 164 121 b 192 0 179 3 186 0 b 210 19 197 0 207 6 b 698 701 245 197 507 658 b 720 714 714 704 720 711 b 698 723 720 720 711 723 b 197 186 455 714 210 202 b 186 176 194 179 189 176 b 176 186 179 176 176 186 b 9 367 143 266 27 359 z',\n },\n segno: {\n x_min: 4,\n x_max: 550,\n y_min: -27,\n y_max: 759,\n ha: 786,\n o: 'm 194 958 b 217 939 203 958 213 955 l 220 929 b 325 805 230 890 252 805 b 425 901 384 805 425 840 b 413 969 425 923 420 946 b 220 1060 390 1035 294 1060 b 6 793 120 1060 6 936 b 29 687 6 759 13 723 b 295 449 75 582 284 454 b 304 438 301 446 304 444 b 295 415 304 432 301 425 b 78 22 285 395 78 22 b 73 3 75 16 73 9 b 114 -39 73 -20 91 -39 b 150 -17 128 -39 143 -30 b 377 395 150 -17 373 386 b 395 402 377 393 389 402 b 704 176 416 397 704 312 b 621 75 704 120 670 82 l 616 73 b 562 138 586 73 562 94 l 562 154 b 485 249 562 209 526 249 b 468 246 480 249 474 248 b 366 153 415 233 366 210 b 540 -12 366 65 455 -12 b 600 -1 559 -12 579 -9 b 792 251 716 37 792 131 b 789 292 792 264 791 278 b 523 588 768 451 540 579 b 498 611 505 598 498 603 b 501 619 498 613 500 616 b 732 1032 508 631 732 1032 b 737 1053 736 1040 737 1045 b 697 1093 737 1076 719 1093 b 661 1073 683 1093 668 1086 b 423 647 661 1073 432 660 b 410 635 419 639 416 635 b 396 639 406 635 402 636 b 128 792 383 644 166 727 b 108 868 120 808 108 838 b 186 958 108 907 125 948 z m 598 671 b 680 589 598 626 635 589 b 762 671 726 589 762 626 b 680 753 762 717 726 753 b 598 671 635 753 598 717 z m 202 380 b 120 462 202 425 166 462 b 37 380 75 462 37 425 b 120 298 37 334 75 298 b 202 380 166 298 202 334 z',\n },\n coda: {\n x_min: -4,\n x_max: 955,\n y_min: -158,\n y_max: 898,\n ha: 1056,\n o: 'm 1349 576 l 1178 576 b 729 1083 1164 847 962 1064 l 729 1269 b 694 1293 729 1287 713 1293 b 660 1269 675 1293 660 1287 l 660 1083 b 210 576 426 1064 226 848 l 20 576 b -6 541 0 576 -6 560 b 20 507 -6 523 0 507 l 210 507 b 660 0 226 238 426 19 l 660 -202 b 694 -228 660 -222 675 -228 b 729 -202 713 -228 729 -222 l 729 0 b 1178 507 962 19 1164 238 l 1349 507 b 1375 541 1369 507 1375 523 b 1349 576 1375 560 1369 576 z m 940 576 l 729 576 l 729 1002 b 940 576 930 985 940 809 z m 660 1002 l 660 576 l 455 576 b 660 1002 455 809 455 985 z m 455 507 l 660 507 l 660 69 b 455 507 474 91 456 285 z m 729 69 l 729 507 l 940 507 b 729 69 936 287 909 91 z',\n },\n gClef: {\n x_min: 0,\n x_max: 671,\n y_min: -658,\n y_max: 1098,\n ha: 1756,\n o: 'm 541 598 b 550 625 539 615 541 616 b 824 1174 706 770 824 953 b 730 1509 824 1299 789 1423 b 655 1581 708 1541 671 1581 b 562 1512 635 1581 590 1544 b 420 1064 455 1394 420 1214 b 441 828 420 981 431 887 b 428 793 444 811 445 808 b 0 125 220 622 0 416 b 524 -363 0 -125 171 -363 b 624 -354 557 -363 595 -360 b 645 -367 639 -351 642 -350 b 684 -657 662 -464 684 -589 b 455 -896 684 -870 540 -896 b 340 -854 377 -896 340 -873 b 386 -829 340 -844 353 -840 b 482 -694 431 -816 482 -778 b 344 -547 482 -615 432 -547 b 190 -713 248 -547 190 -624 b 464 -948 190 -806 246 -948 b 747 -660 560 -948 747 -904 b 706 -351 747 -577 721 -441 b 724 -327 703 -334 704 -336 b 966 16 870 -269 966 -147 b 619 363 966 200 831 363 b 577 389 582 363 582 363 z m 677 1358 b 763 1240 724 1358 763 1319 b 513 851 763 1080 626 950 b 494 863 503 842 497 844 b 485 995 488 900 485 949 b 677 1358 485 1220 589 1358 z m 520 377 b 498 343 524 350 524 351 b 289 63 372 300 289 186 b 455 -192 289 -66 357 -158 b 494 -200 467 -196 484 -200 b 511 -184 505 -200 511 -193 b 490 -166 511 -174 500 -170 b 386 -12 429 -140 386 -78 b 530 157 386 71 442 132 b 559 145 553 163 556 161 l 631 -284 b 611 -304 634 -300 632 -300 b 530 -311 588 -308 559 -311 b 115 29 278 -311 115 -171 b 249 363 115 114 130 228 b 469 567 336 459 402 513 b 490 562 484 579 487 577 z m 619 148 b 635 168 616 166 618 170 b 848 -66 752 158 848 60 b 713 -271 848 -157 793 -230 b 690 -262 696 -279 693 -279 z',\n },\n cClef: {\n x_min: 0,\n x_max: 699,\n y_min: -506,\n y_max: 506,\n ha: 1012,\n o: 'm 331 694 b 301 724 331 714 321 724 l 300 724 b 269 694 279 724 269 714 l 269 -694 b 300 -724 269 -714 279 -724 l 301 -724 b 331 -694 321 -724 331 -714 l 331 -63 b 344 -55 331 -52 338 -53 b 472 -265 382 -65 442 -102 b 500 -301 477 -288 485 -301 b 530 -262 516 -301 523 -287 b 684 -128 549 -199 582 -128 b 804 -409 778 -128 804 -220 b 651 -683 804 -598 770 -683 b 528 -644 631 -683 528 -674 b 567 -622 528 -636 552 -628 b 625 -528 596 -612 625 -583 b 527 -429 625 -465 583 -429 b 416 -547 465 -429 416 -471 b 667 -729 416 -638 495 -729 b 1007 -413 903 -729 1007 -563 b 706 -76 1007 -215 897 -76 b 618 -89 664 -76 636 -84 b 576 -88 603 -94 589 -96 b 524 0 556 -75 524 -29 b 576 88 524 29 556 75 b 618 89 589 96 603 94 b 706 76 636 84 664 76 b 1007 413 897 76 1007 215 b 667 729 1007 563 903 729 b 416 547 495 729 416 638 b 527 429 416 471 465 429 b 625 528 583 429 625 465 b 567 622 625 583 596 612 b 528 644 552 628 528 636 b 651 683 528 674 631 683 b 804 409 770 683 804 598 b 684 128 804 220 778 128 b 530 262 582 128 549 199 b 500 301 523 287 516 301 b 472 265 485 301 477 288 b 344 55 442 102 382 65 b 331 63 338 53 331 52 z m 30 724 b 0 694 10 724 0 714 l 0 -694 b 30 -724 0 -714 10 -724 l 154 -724 b 184 -694 174 -724 184 -714 l 184 694 b 154 724 184 714 174 724 z',\n },\n fClef: {\n x_min: -5,\n x_max: 684,\n y_min: -635,\n y_max: 262,\n ha: 897,\n o: 'm 363 377 b 0 56 112 377 0 194 b 177 -158 0 -59 60 -158 b 330 -6 268 -158 330 -95 b 192 144 330 86 262 144 b 120 134 153 144 138 134 b 96 160 101 134 96 145 b 330 323 96 217 183 323 b 549 -53 482 323 549 173 b 14 -871 549 -455 350 -680 b -7 -897 1 -878 -7 -886 b 12 -914 -7 -906 -1 -914 b 36 -907 19 -914 27 -912 b 765 -40 390 -734 765 -478 b 363 377 765 210 612 377 z m 906 259 b 827 180 861 259 827 225 b 906 101 827 135 861 101 b 985 180 950 101 985 135 b 906 259 985 225 950 259 z m 907 -102 b 829 -180 863 -102 829 -135 b 907 -258 829 -225 863 -258 b 985 -180 952 -258 985 -225 b 907 -102 985 -135 952 -102 z',\n },\n unpitchedPercussionClef1: {\n x_min: 0,\n x_max: 382,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 230 -338 l 230 338 b 210 360 230 350 222 360 l 20 360 b 0 338 9 360 0 350 l 0 -338 b 20 -360 0 -350 9 -360 l 210 -360 b 230 -338 222 -360 230 -350 z m 550 338 b 530 360 550 350 541 360 l 340 360 b 320 338 328 360 320 350 l 320 -338 b 340 -360 320 -350 328 -360 l 530 -360 b 550 -338 541 -360 550 -350 z',\n },\n '6stringTabClef': {\n x_min: -3,\n x_max: 408,\n y_min: -748,\n y_max: 764,\n ha: 1512,\n o: 'm 557 1024 l 557 1100 l 26 1100 l 26 1024 l 249 1024 l 249 422 l 336 422 l 336 1024 z m 588 -328 l 350 348 l 238 348 l -4 -328 l 88 -328 l 160 -125 l 420 -125 l 491 -328 z m 397 -52 l 181 -52 l 292 256 z m 544 -883 b 420 -719 544 -802 507 -752 b 514 -572 482 -690 514 -639 b 314 -399 514 -472 442 -399 l 39 -399 l 39 -1077 l 344 -1077 b 544 -883 467 -1077 544 -995 z m 428 -583 b 292 -691 428 -652 389 -691 l 125 -691 l 125 -475 l 292 -475 b 428 -583 389 -475 428 -514 z m 458 -884 b 337 -1001 458 -949 418 -1001 l 125 -1001 l 125 -768 l 337 -768 b 458 -884 418 -768 458 -818 z',\n },\n timeSig0: {\n x_min: 20,\n x_max: 450,\n y_min: -250,\n y_max: 251,\n ha: 501,\n o: 'm 648 0 b 338 361 648 200 510 361 b 29 0 167 361 29 200 b 338 -360 29 -199 167 -360 b 648 0 510 -360 648 -199 z m 338 317 b 446 10 397 317 446 180 b 338 -295 446 -158 397 -295 b 230 10 278 -295 230 -158 b 338 317 230 180 278 317 z',\n },\n timeSig1: {\n x_min: 20,\n x_max: 314,\n y_min: -250,\n y_max: 251,\n ha: 501,\n o: 'm 35 19 b 29 0 35 19 29 10 b 45 -20 29 -7 33 -16 b 58 -23 50 -22 56 -23 b 78 -10 72 -23 78 -10 b 156 117 78 -10 140 89 b 170 131 161 127 167 131 b 179 111 176 131 179 120 l 179 -261 b 115 -315 179 -294 145 -315 b 91 -337 105 -315 91 -320 b 122 -360 91 -353 104 -360 l 429 -360 b 452 -337 452 -360 452 -337 b 431 -315 452 -337 452 -315 b 384 -265 410 -315 384 -289 l 384 328 b 356 361 384 351 376 360 b 281 356 336 361 300 356 b 206 360 253 356 228 357 b 199 361 203 360 200 361 b 173 334 184 361 179 347 z',\n },\n timeSig2: {\n x_min: 20,\n x_max: 426,\n y_min: -257,\n y_max: 254,\n ha: 511,\n o: 'm 606 -131 b 589 -111 606 -114 599 -111 b 570 -127 577 -111 573 -117 l 569 -128 b 513 -192 554 -164 543 -192 b 488 -187 505 -192 498 -190 b 445 -171 469 -180 459 -179 b 289 -137 416 -160 348 -137 b 236 -145 271 -137 252 -140 b 422 -42 268 -94 390 -50 b 613 147 523 -14 613 27 b 330 366 613 300 464 366 b 69 275 229 366 140 357 b 29 170 45 245 29 209 b 42 108 29 150 33 130 b 160 29 63 63 108 29 b 261 156 248 29 261 120 b 161 275 261 242 161 246 b 275 330 164 295 190 330 b 405 192 403 330 405 233 b 193 -102 405 60 297 -39 b 33 -317 114 -153 58 -223 l 32 -321 b 69 -370 32 -340 48 -370 b 203 -282 101 -370 118 -282 b 410 -360 261 -282 282 -360 b 606 -131 472 -360 583 -354 z',\n },\n timeSig3: {\n x_min: 20,\n x_max: 401,\n y_min: -251,\n y_max: 249,\n ha: 500,\n o: 'm 307 357 b 301 357 305 357 304 357 l 291 359 b 285 359 289 359 287 359 b 37 200 161 359 37 276 b 154 84 37 153 65 89 l 161 84 b 256 177 225 84 256 130 l 256 189 b 209 248 252 242 216 245 b 180 268 202 251 180 248 l 180 274 b 240 310 183 298 228 310 b 374 199 363 310 374 233 l 374 189 b 199 36 374 82 289 40 b 164 12 184 35 164 27 b 200 -6 164 -6 189 -6 b 379 -137 366 -6 379 -118 b 269 -307 379 -289 301 -307 b 256 -305 264 -307 258 -305 b 216 -282 245 -304 217 -304 l 216 -275 b 249 -180 216 -243 248 -222 b 145 -76 249 -120 207 -76 b 130 -78 140 -76 135 -76 b 60 -115 105 -82 78 -96 b 29 -203 36 -137 29 -171 b 275 -361 32 -315 134 -359 l 288 -361 b 577 -161 431 -361 577 -288 l 577 -151 b 537 -50 575 -109 564 -82 b 503 -20 528 -39 517 -29 l 472 -3 l 425 10 b 410 17 418 12 413 12 b 409 24 409 20 409 22 b 415 37 409 30 410 36 b 459 50 431 42 446 43 b 547 181 517 78 547 115 b 307 357 547 314 367 353 z',\n },\n timeSig4: {\n x_min: 20,\n x_max: 450,\n y_min: -250,\n y_max: 251,\n ha: 501,\n o: 'm 521 -107 l 521 202 b 504 226 521 213 520 226 b 475 213 491 226 484 223 l 338 48 b 325 14 333 40 325 32 l 325 -107 l 131 -107 b 481 336 246 -9 477 318 l 482 340 b 461 361 482 353 472 361 b 363 359 448 361 389 359 b 261 361 337 359 272 361 b 228 334 248 361 228 357 b 43 -105 228 156 86 -45 l 35 -117 b 35 -118 35 -117 35 -118 l 33 -120 b 29 -137 30 -127 29 -132 b 58 -161 29 -151 40 -161 l 325 -161 l 325 -252 b 268 -302 325 -291 294 -302 b 235 -330 245 -302 235 -315 b 262 -360 235 -344 240 -360 l 569 -360 b 598 -330 583 -360 598 -350 b 566 -301 598 -310 580 -301 b 521 -246 552 -301 521 -292 l 521 -161 l 626 -161 b 648 -134 641 -161 648 -151 b 626 -107 648 -117 642 -107 z',\n },\n timeSig5: {\n x_min: 20,\n x_max: 383,\n y_min: -251,\n y_max: 246,\n ha: 497,\n o: 'm 109 85 b 117 179 109 85 115 166 b 138 197 118 190 125 197 l 144 197 b 285 184 158 194 226 184 b 492 323 485 184 492 300 b 472 353 492 341 488 353 b 295 340 454 353 341 340 b 101 354 249 340 125 351 b 66 330 75 354 68 341 l 50 10 l 50 7 b 79 -14 50 -12 65 -14 b 111 14 94 -14 95 -1 b 209 62 125 29 160 62 b 357 -125 258 62 357 35 b 235 -304 357 -284 272 -304 b 202 -300 223 -304 212 -304 b 184 -279 194 -295 186 -289 b 202 -259 184 -269 194 -264 b 256 -163 235 -239 256 -203 b 144 -50 256 -99 206 -50 b 30 -157 66 -50 35 -107 b 29 -183 29 -166 29 -174 b 284 -361 29 -302 107 -361 b 552 -125 456 -361 552 -255 b 314 112 552 6 445 112 b 122 71 230 112 168 98 b 115 69 120 69 117 69 b 109 79 109 69 109 75 z',\n },\n timeSig6: {\n x_min: 20,\n x_max: 414,\n y_min: -249,\n y_max: 251,\n ha: 500,\n o: 'm 439 120 b 554 229 500 120 554 167 b 553 245 554 235 554 239 b 348 361 539 337 426 361 b 85 209 239 360 137 307 b 29 4 53 148 29 72 l 29 -1 b 73 -200 30 -68 42 -143 b 324 -359 132 -307 203 -359 b 513 -307 389 -359 461 -348 b 596 -137 563 -266 596 -202 b 379 72 596 -24 490 72 b 248 22 333 72 285 55 b 239 19 245 19 242 19 b 226 53 230 19 226 30 b 346 327 230 320 315 327 b 393 305 374 327 393 320 b 357 251 393 285 366 268 b 347 209 350 238 347 223 b 369 150 347 187 354 166 b 439 120 379 131 420 120 z m 320 3 b 405 -158 366 3 405 -69 b 320 -320 405 -248 366 -320 b 236 -158 274 -320 236 -248 b 320 3 236 -69 274 3 z',\n },\n timeSig7: {\n x_min: 20,\n x_max: 421,\n y_min: -250,\n y_max: 249,\n ha: 499,\n o: 'm 606 294 b 582 351 606 333 606 351 b 552 336 580 351 557 346 b 485 236 541 318 521 236 b 262 359 449 236 382 359 b 137 307 179 359 157 325 b 98 281 117 288 108 282 b 60 315 86 281 68 301 b 43 325 58 321 50 325 b 29 308 36 325 29 321 l 29 71 b 45 48 29 71 30 48 b 66 76 56 48 60 60 b 164 196 81 112 99 196 b 374 88 222 196 291 88 b 446 118 415 88 435 109 b 459 124 451 121 456 124 b 469 111 465 124 468 120 b 272 -112 469 71 359 -10 b 173 -315 217 -176 173 -259 b 200 -360 173 -346 173 -360 b 294 -347 226 -360 258 -347 b 412 -360 330 -347 397 -360 b 435 -307 426 -360 435 -348 b 606 288 435 -66 606 140 z',\n },\n timeSig8: {\n x_min: 20,\n x_max: 416,\n y_min: -259,\n y_max: 259,\n ha: 518,\n o: 'm 481 52 b 567 204 533 85 567 132 b 317 373 567 351 356 373 b 36 176 150 373 36 297 b 161 -16 36 76 92 23 b 29 -190 86 -52 29 -99 b 301 -373 29 -315 158 -373 b 599 -117 445 -373 599 -311 b 481 52 599 -30 549 17 z m 406 85 b 168 240 291 125 168 150 b 314 331 168 301 251 331 b 482 207 360 331 482 308 b 406 85 482 150 454 112 z m 295 -325 b 111 -183 199 -325 111 -276 b 225 -48 111 -125 161 -72 b 436 -219 330 -94 436 -124 b 295 -325 436 -276 392 -325 z',\n },\n timeSig9: {\n x_min: 20,\n x_max: 414,\n y_min: -249,\n y_max: 251,\n ha: 500,\n o: 'm 186 -117 b 71 -226 125 -117 71 -164 b 72 -242 71 -232 71 -236 b 276 -359 86 -334 199 -359 b 540 -206 386 -357 488 -304 b 596 -1 572 -145 596 -69 l 596 4 b 552 203 595 71 583 145 b 301 361 492 310 422 361 b 112 310 236 361 164 351 b 29 140 62 269 29 204 b 246 -69 29 27 135 -69 b 377 -19 292 -69 340 -52 b 386 -16 380 -16 383 -16 b 399 -50 395 -16 399 -27 b 279 -324 395 -317 310 -324 b 232 -302 251 -324 232 -317 b 268 -248 232 -282 259 -265 b 278 -206 275 -235 278 -220 b 256 -147 278 -184 271 -163 b 186 -117 246 -128 204 -117 z m 305 0 b 220 161 259 0 220 72 b 305 323 220 251 259 323 b 389 161 351 323 389 251 b 305 0 389 72 351 0 z',\n },\n timeSigCommon: {\n x_min: 5,\n x_max: 424,\n y_min: -249,\n y_max: 251,\n ha: 500,\n o: 'm 336 361 b 7 -14 131 361 7 180 b 101 -262 7 -108 42 -190 b 321 -359 156 -328 235 -359 b 611 -88 573 -359 611 -130 b 589 -56 611 -56 595 -56 b 567 -82 577 -56 567 -58 b 363 -311 567 -268 409 -311 b 184 40 246 -311 184 -197 b 372 327 184 278 294 327 b 477 278 446 327 477 292 b 451 246 477 265 472 246 b 360 140 393 246 360 184 b 471 32 360 58 431 32 b 580 156 471 32 580 36 b 336 361 580 344 363 361 z',\n },\n timeSigCutCommon: {\n x_min: 0,\n x_max: 418,\n y_min: -359,\n y_max: 361,\n ha: 720,\n o: 'm 573 -58 b 559 -82 567 -58 559 -60 b 354 -310 559 -266 400 -310 b 317 -305 340 -310 328 -308 b 302 -284 311 -304 302 -295 l 302 287 b 338 323 302 297 328 321 b 363 324 347 324 356 324 b 468 275 436 324 468 289 b 442 243 468 264 464 243 b 351 137 384 243 351 181 b 462 30 351 56 422 30 b 572 154 462 30 572 35 b 318 357 572 295 441 357 b 302 390 310 359 302 383 l 302 495 b 276 520 302 507 292 520 b 252 495 265 520 252 507 l 252 369 b 235 346 252 359 238 346 l 196 331 b 0 -14 66 275 0 122 b 225 -346 0 -150 86 -310 b 252 -382 235 -350 252 -369 l 252 -492 b 276 -517 252 -505 265 -517 b 302 -492 292 -517 302 -505 l 302 -379 b 318 -359 302 -370 308 -363 b 602 -85 563 -354 602 -130 b 579 -58 600 -58 586 -58 z m 252 -235 b 243 -252 252 -248 248 -252 b 236 -248 240 -252 238 -251 b 177 37 197 -193 177 -96 b 232 259 177 147 200 215 b 236 262 233 262 235 262 b 252 239 243 262 252 251 z',\n },\n timeSigPlus: {\n x_min: -1,\n x_max: 499,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 432 53 b 413 79 420 53 413 65 l 413 340 b 392 360 413 350 405 360 l 325 360 b 305 340 312 360 305 350 l 305 79 b 284 53 305 66 292 53 l 19 53 b -1 33 9 53 -1 46 l -1 -33 b 19 -55 -1 -46 9 -55 l 284 -55 b 305 -75 298 -55 305 -68 l 305 -340 b 325 -360 305 -350 312 -360 l 392 -360 b 413 -340 405 -360 413 -350 l 413 -78 b 433 -55 413 -63 423 -55 l 698 -55 b 719 -33 708 -55 719 -46 l 719 33 b 698 53 719 46 708 53 z',\n },\n timeSigPlusSmall: {\n x_min: -1,\n x_max: 255,\n y_min: -133,\n y_max: 123,\n ha: 256,\n o: 'm 220 20 b 210 33 215 20 210 26 l 210 166 b 200 177 210 171 206 177 l 166 177 b 156 166 160 177 156 171 l 156 33 b 145 20 156 27 150 20 l 10 20 b -1 10 4 20 -1 16 l -1 -24 b 10 -35 -1 -30 4 -35 l 145 -35 b 156 -46 153 -35 156 -42 l 156 -180 b 166 -192 156 -186 160 -192 l 200 -192 b 210 -180 206 -192 210 -186 l 210 -48 b 222 -35 210 -39 216 -35 l 356 -35 b 367 -24 361 -35 367 -30 l 367 10 b 356 20 367 16 361 20 z',\n },\n timeSigMinus: {\n x_min: 0,\n x_max: 448,\n y_min: -35,\n y_max: 40,\n ha: 75,\n o: 'm 645 39 b 619 58 645 49 634 58 l 27 58 b 0 39 12 58 0 49 l 0 -32 b 27 -50 0 -42 12 -50 l 619 -50 b 645 -32 634 -50 645 -42 z',\n },\n timeSigParensRight: {\n x_min: 0,\n x_max: 184,\n y_min: -489,\n y_max: 491,\n ha: 980,\n o: 'm 0 -696 b 3 -704 0 -698 1 -704 b 7 -703 4 -704 6 -704 b 265 1 187 -530 265 -282 b 12 701 265 289 187 531 b 4 707 12 701 6 707 b 0 696 1 707 0 703 l 0 665 b 4 644 0 665 0 651 b 167 1 112 503 167 315 b 6 -641 167 -311 109 -497 b 0 -658 3 -644 0 -651 z',\n },\n timeSigParensRightSmall: {\n x_min: 0,\n x_max: 110,\n y_min: -251,\n y_max: 249,\n ha: 500,\n o: 'm 0 -356 b 3 -361 0 -357 1 -361 b 158 0 112 -272 158 -145 b 4 359 158 147 109 272 b 0 353 3 359 0 357 l 0 338 b 3 327 0 338 0 330 b 91 0 60 246 91 160 b 4 -328 91 -160 62 -249 b 0 -337 3 -330 0 -333 z',\n },\n timeSigParensLeft: {\n x_min: 0,\n x_max: 184,\n y_min: -489,\n y_max: 491,\n ha: 980,\n o: 'm 265 -658 b 259 -641 265 -651 262 -644 b 98 1 156 -497 98 -311 b 261 644 98 315 153 503 b 265 665 265 651 265 665 l 265 696 b 261 707 265 703 264 707 b 253 701 259 707 253 701 b 0 1 78 531 0 289 b 258 -703 0 -282 78 -530 b 262 -704 259 -704 261 -704 b 265 -696 264 -704 265 -698 z',\n },\n timeSigParensLeftSmall: {\n x_min: 0,\n x_max: 110,\n y_min: -251,\n y_max: 249,\n ha: 500,\n o: 'm 158 -337 b 154 -328 158 -333 156 -330 b 68 0 96 -249 68 -160 b 156 327 68 160 98 246 b 158 338 158 330 158 338 l 158 353 b 154 359 158 357 156 359 b 0 0 49 272 0 147 b 156 -361 0 -145 46 -272 b 158 -356 157 -361 158 -357 z',\n },\n noteheadDoubleWhole: {\n x_min: 0,\n x_max: 599,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 13 223 b 0 212 4 223 0 217 l 0 -213 b 13 -223 0 -219 4 -223 l 32 -223 b 45 -213 39 -223 45 -219 l 45 212 b 32 223 45 217 39 223 z m 96 223 b 82 212 88 223 82 217 l 82 -213 b 96 -223 82 -219 88 -223 l 114 -223 b 128 -213 121 -223 128 -219 l 128 212 b 114 223 128 217 121 223 z m 747 223 b 733 212 740 223 733 217 l 733 -213 b 747 -223 733 -219 740 -223 l 766 -223 b 780 -213 773 -223 780 -219 l 780 212 b 766 223 780 217 773 223 z m 829 223 b 815 212 824 223 815 217 l 815 -213 b 829 -223 815 -219 824 -223 l 848 -223 b 863 -213 857 -223 863 -219 l 863 212 b 848 223 863 217 857 223 z m 438 180 b 130 1 248 180 130 101 b 423 -180 130 -92 210 -180 b 733 1 657 -180 733 -98 b 438 180 733 104 572 180 z m 469 -145 b 331 -71 409 -145 369 -112 b 284 58 305 -37 284 12 b 400 147 284 131 333 147 b 577 -45 498 147 577 42 b 469 -145 577 -115 533 -145 z',\n },\n noteheadWhole: {\n x_min: 0,\n x_max: 422,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 311 180 b 0 3 120 180 0 101 b 297 -180 0 -94 82 -180 b 608 3 533 -180 608 -98 b 311 180 608 105 445 180 z m 160 91 b 274 148 176 141 229 148 b 452 -45 373 148 452 42 b 386 -141 452 -89 433 -130 b 341 -147 372 -145 356 -147 b 206 -72 289 -147 236 -112 b 156 56 177 -39 156 10 b 160 91 156 68 157 79 z',\n },\n noteheadHalf: {\n x_min: 0,\n x_max: 295,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 140 -180 b 425 60 377 -180 425 13 b 282 180 425 134 366 180 b 0 -60 68 180 0 14 b 140 -180 0 -137 60 -180 z m 108 -125 b 50 -92 78 -125 60 -109 b 42 -63 46 -84 42 -73 b 318 121 42 7 251 121 b 372 91 346 121 361 108 b 380 63 376 82 380 73 b 108 -125 380 1 177 -125 z',\n },\n noteheadBlack: {\n x_min: 0,\n x_max: 295,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 140 -180 b 425 60 268 -180 425 -62 b 285 180 425 134 367 180 b 0 -60 127 180 0 63 b 140 -180 0 -135 62 -180 z',\n },\n noteheadXDoubleWhole: {\n x_min: 0,\n x_max: 546,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 43 213 b 30 223 43 217 39 223 l 13 223 b 0 213 6 223 0 217 l 0 -215 b 13 -223 0 -219 6 -223 l 30 -223 b 43 -215 39 -223 43 -219 z m 704 213 b 693 223 704 217 698 223 l 672 223 b 660 213 667 223 660 217 l 660 163 b 634 180 655 173 645 180 l 505 180 b 484 173 498 180 490 177 l 393 95 l 300 173 b 279 180 294 177 287 180 l 151 180 b 125 163 141 180 130 173 l 125 213 b 112 223 125 217 118 223 l 94 223 b 82 213 86 223 82 217 l 82 -215 b 94 -223 82 -219 86 -223 l 112 -223 b 125 -215 118 -223 125 -219 l 125 -163 b 151 -180 130 -173 140 -180 l 279 -180 b 300 -171 287 -180 294 -177 l 393 -95 l 485 -171 b 505 -180 491 -177 498 -180 l 632 -180 b 660 -163 645 -180 655 -173 l 660 -215 b 672 -223 660 -219 667 -223 l 693 -223 b 704 -215 698 -223 704 -219 z m 786 213 b 772 223 786 217 780 223 l 755 223 b 740 213 747 223 740 217 l 740 -215 b 755 -223 740 -219 747 -223 l 772 -223 b 786 -215 780 -223 786 -219 z m 507 -141 l 393 -45 l 276 -141 l 207 -141 l 364 0 l 207 141 l 276 141 l 393 45 l 507 141 l 577 141 l 420 0 l 577 -141 z m 660 -132 l 518 0 l 660 132 z m 125 131 l 266 0 l 125 -131 z',\n },\n noteheadXWhole: {\n x_min: 0,\n x_max: 377,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 272 -95 l 364 -171 b 384 -180 370 -177 377 -180 l 511 -180 b 543 -148 528 -180 543 -164 b 531 -124 543 -140 539 -131 l 412 0 l 531 124 b 541 148 539 131 541 140 b 513 180 541 164 528 180 l 384 180 b 364 171 377 180 370 177 l 272 94 l 179 171 b 158 180 173 177 166 180 l 30 180 b 0 148 16 180 0 164 b 12 124 0 140 4 131 l 132 0 l 12 -124 b 1 -148 4 -131 1 -140 b 32 -180 1 -164 14 -180 l 158 -180 b 179 -171 166 -180 173 -177 z m 386 -141 l 272 -45 l 157 -141 l 88 -141 l 245 0 l 88 141 l 157 141 l 272 45 l 386 141 l 456 141 l 300 0 l 456 -141 z',\n },\n noteheadXHalf: {\n x_min: 0,\n x_max: 334,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 295 180 b 271 170 287 180 278 177 l 209 98 l 115 171 b 95 180 109 177 104 180 l 36 180 b 4 148 19 180 4 164 b 14 124 4 140 7 132 l 140 22 l 7 -127 b 0 -148 3 -131 0 -138 b 32 -180 0 -166 14 -180 l 184 -180 b 209 -170 193 -180 203 -177 l 271 -99 l 363 -171 b 384 -180 370 -176 377 -180 l 445 -180 b 478 -147 461 -180 478 -163 b 465 -125 478 -138 474 -131 l 341 -22 l 474 127 b 481 148 480 131 481 138 b 448 180 481 166 468 180 z m 36 148 l 95 148 l 233 33 l 334 148 l 410 148 l 274 -6 l 445 -148 l 384 -148 l 248 -35 l 147 -148 l 71 -148 l 206 4 z',\n },\n noteheadXBlack: {\n x_min: 0,\n x_max: 290,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 410 -143 l 239 0 l 410 144 b 418 160 415 147 418 154 b 399 180 418 171 408 180 b 389 177 396 180 392 179 l 207 26 l 29 177 b 17 180 26 179 22 180 b 0 161 7 180 0 170 b 7 144 0 156 3 148 l 179 0 l 7 -143 b 0 -158 1 -147 0 -153 b 19 -180 0 -170 7 -180 b 29 -176 23 -180 26 -179 l 207 -24 l 389 -176 b 399 -180 392 -179 396 -180 b 418 -160 410 -180 418 -168 b 410 -143 418 -153 415 -147 z',\n },\n noteheadCircleXDoubleWhole: {\n x_min: 0,\n x_max: 422,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 576 223 b 563 213 570 223 563 219 l 563 -215 b 576 -223 563 -219 570 -223 l 595 -223 b 608 -215 602 -223 608 -219 l 608 213 b 595 223 608 219 602 223 z m 497 223 b 484 213 491 223 484 219 l 484 -215 b 497 -223 484 -219 491 -223 l 516 -223 b 528 -215 523 -223 528 -219 l 528 213 b 516 223 528 219 523 223 z m 94 223 b 81 213 86 223 81 219 l 81 -215 b 94 -223 81 -219 86 -223 l 111 -223 b 124 -215 118 -223 124 -219 l 124 213 b 111 223 124 219 118 223 z m 13 223 b 0 213 6 223 0 219 l 0 -215 b 13 -223 0 -219 6 -223 l 30 -223 b 45 -215 37 -223 45 -219 l 45 213 b 30 223 45 219 37 223 z m 304 180 b 127 0 206 180 127 101 b 304 -180 127 -99 206 -180 b 482 0 405 -180 482 -99 b 304 180 482 101 405 180 z m 305 32 l 225 112 b 304 140 248 130 275 140 b 387 112 336 140 364 130 z m 278 1 l 193 -82 b 216 0 199 -59 216 -30 b 194 85 216 33 203 50 z m 334 1 l 418 84 b 389 0 402 50 389 23 b 418 -81 389 -30 409 -60 z m 305 -27 l 389 -109 b 304 -138 364 -128 336 -138 b 222 -109 274 -138 246 -128 z',\n },\n noteheadCircleXWhole: {\n x_min: 0,\n x_max: 249,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 179 180 b 0 0 81 180 0 101 b 179 -180 0 -99 81 -180 b 359 0 278 -180 359 -99 b 179 180 359 101 278 180 z m 180 32 l 99 112 b 179 140 121 130 150 140 b 262 112 210 140 238 130 z m 151 1 l 68 -82 b 86 0 73 -59 86 -30 b 68 85 86 33 78 50 z m 209 1 l 291 84 b 269 0 276 50 269 32 b 291 -79 269 -26 282 -58 z m 180 -27 l 264 -111 b 179 -138 239 -128 210 -138 b 96 -111 148 -138 120 -128 z',\n },\n noteheadCircleXHalf: {\n x_min: 0,\n x_max: 250,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 179 180 b 0 0 81 180 0 101 b 179 -180 0 -99 81 -180 b 360 0 278 -180 360 -99 b 179 180 360 101 278 180 z m 186 37 l 131 92 b 220 124 153 109 189 124 b 262 112 236 124 249 121 z m 215 7 l 291 84 b 304 42 300 71 304 58 b 271 -49 304 10 288 -26 z m 145 -6 l 68 -82 b 56 -42 59 -71 56 -58 b 89 52 56 -9 72 27 z m 174 -33 l 230 -89 b 140 -124 206 -108 171 -124 b 96 -111 122 -124 109 -121 z',\n },\n noteheadCircleX: {\n x_min: 0,\n x_max: 249,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 179 180 b 0 0 81 180 0 99 b 179 -180 0 -99 81 -180 b 359 0 278 -180 359 -99 b 179 180 359 99 278 180 z m 261 112 l 180 30 l 98 112 b 179 138 121 128 148 138 b 261 112 210 138 238 128 z m 317 0 b 292 -82 317 -30 308 -59 l 209 1 l 291 84 b 317 0 307 60 317 30 z m 40 0 b 69 84 40 32 50 60 l 151 1 l 68 -84 b 40 0 49 -60 40 -30 z m 95 -111 l 180 -27 l 262 -111 b 179 -138 239 -128 210 -138 b 95 -111 148 -138 120 -128 z',\n },\n noteheadCircledDoubleWhole: {\n x_min: 0,\n x_max: 603,\n y_min: -218,\n y_max: 213,\n ha: 431,\n o: 'm 770 223 l 752 223 b 737 213 744 223 737 219 l 737 59 b 435 307 710 203 582 307 b 128 48 281 307 156 197 l 128 213 b 115 223 128 219 122 223 l 96 223 b 84 213 89 223 84 219 l 84 -215 b 96 -223 84 -220 89 -223 l 115 -223 b 128 -215 122 -223 128 -220 l 128 -56 b 435 -314 156 -206 282 -314 b 654 -223 517 -314 595 -282 b 737 -66 697 -180 726 -125 l 737 -215 b 752 -223 737 -220 744 -223 l 770 -223 b 785 -215 778 -223 785 -220 l 785 213 b 770 223 785 219 778 223 z m 435 274 b 698 85 556 274 661 194 b 439 180 641 143 534 180 b 176 99 320 180 228 148 b 435 274 217 203 318 274 z m 32 223 l 13 223 b 0 213 6 223 0 219 l 0 -215 b 13 -223 0 -220 6 -223 l 32 -223 b 45 -215 40 -223 45 -220 l 45 213 b 32 223 45 219 40 223 z m 852 223 l 835 223 b 819 213 828 223 819 219 l 819 -215 b 835 -223 819 -220 828 -223 l 852 -223 b 868 -215 861 -223 868 -220 l 868 213 b 852 223 868 219 861 223 z m 580 -46 b 514 -143 580 -91 562 -131 b 472 -148 501 -147 487 -148 b 364 -105 433 -148 395 -131 l 334 -73 b 285 58 307 -39 285 10 b 289 91 285 69 287 79 b 403 145 305 140 357 145 b 580 -46 501 145 580 42 z m 435 -282 b 176 -108 318 -282 217 -209 b 425 -180 222 -151 301 -180 b 691 -109 563 -180 647 -153 b 435 -282 651 -210 550 -282 z',\n },\n noteheadCircledWhole: {\n x_min: 0,\n x_max: 437,\n y_min: -225,\n y_max: 211,\n ha: 436,\n o: 'm 314 304 b 0 -10 140 304 0 164 b 314 -324 0 -183 141 -324 b 629 -10 487 -324 629 -183 b 314 304 629 164 488 304 z m 314 275 b 588 73 441 275 549 193 b 321 180 536 137 420 180 b 48 88 190 180 95 143 b 314 275 85 199 199 275 z m 393 -141 b 350 -147 379 -145 364 -147 b 314 -141 337 -147 325 -145 b 167 55 235 -120 167 -26 b 173 91 167 66 168 79 b 284 145 187 138 239 145 b 459 -48 382 145 459 39 b 393 -141 459 -91 438 -131 z m 314 -294 b 40 -86 187 -294 75 -207 b 305 -180 81 -141 164 -180 b 588 -86 464 -180 550 -143 b 314 -294 554 -209 442 -294 z',\n },\n noteheadCircledHalf: {\n x_min: -18,\n x_max: 311,\n y_min: -162,\n y_max: 167,\n ha: 329,\n o: 'm 212 240 b -26 3 81 240 -26 134 b 212 -233 -26 -127 81 -233 b 448 3 341 -233 448 -127 b 212 240 448 134 341 240 z m 212 220 b 363 160 271 220 324 197 b 281 180 341 173 312 180 b 0 -52 76 180 6 26 b -6 3 -4 -35 -6 -16 b 212 220 -6 122 92 220 z m 50 -92 b 42 -63 46 -84 42 -73 b 173 63 42 -33 73 7 b 317 120 243 105 288 120 b 369 89 344 120 359 107 b 377 62 374 81 377 72 b 248 -66 377 33 348 -1 b 108 -125 183 -109 138 -125 b 50 -92 78 -125 60 -109 z m 212 -215 b 84 -171 164 -215 120 -199 b 138 -180 101 -179 120 -180 b 422 56 372 -180 420 7 b 429 3 426 40 429 22 b 212 -215 429 -117 333 -215 z',\n },\n noteheadCircledBlack: {\n x_min: -21,\n x_max: 321,\n y_min: -171,\n y_max: 167,\n ha: 338,\n o: 'm 216 240 b -30 -3 82 240 -30 131 b 216 -246 -30 -137 82 -246 b 462 -3 351 -246 462 -137 b 216 240 462 131 351 240 z m 216 220 b 372 160 276 220 331 197 b 284 180 348 174 317 180 b 0 -59 127 180 0 65 l 0 -66 b -10 -3 -6 -45 -10 -24 b 216 220 -10 120 92 220 z m 216 -226 b 56 -158 153 -226 96 -200 b 140 -180 79 -171 107 -180 b 425 60 268 -180 425 -60 b 422 88 425 71 425 79 b 442 -3 435 60 442 29 b 216 -226 442 -125 341 -226 z',\n },\n noteheadDoubleWholeSquare: {\n x_min: 0,\n x_max: 416,\n y_min: -190,\n y_max: 198,\n ha: 388,\n o: 'm 563 217 b 528 180 563 192 544 180 l 62 180 b 36 215 52 180 36 192 l 36 268 b 17 285 36 278 27 285 b 0 268 7 285 0 278 l 0 -255 b 17 -274 0 -264 7 -274 b 36 -255 27 -274 36 -264 l 36 -213 b 66 -180 36 -197 53 -180 l 528 -180 b 563 -209 549 -180 563 -196 l 563 -255 b 580 -274 563 -264 570 -274 b 599 -255 590 -274 599 -264 l 599 268 b 580 285 599 278 590 285 b 563 268 570 285 563 278 z m 36 23 b 111 71 36 55 58 71 l 487 71 b 563 30 533 71 563 53 l 563 -22 b 487 -68 563 -53 533 -68 l 117 -68 b 36 -22 66 -68 36 -49 z',\n },\n noteheadSquareWhite: {\n x_min: 0,\n x_max: 313,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 451 -180 l 451 180 l 0 180 l 0 -180 z m 40 -138 l 40 140 l 410 140 l 410 -138 z',\n },\n noteheadSquareBlack: {\n x_min: 0,\n x_max: 313,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 451 -180 l 451 180 l 0 180 l 0 -180 z',\n },\n noteheadTriangleDownDoubleWhole: {\n x_min: 0,\n x_max: 483,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 696 213 b 681 223 696 219 690 223 l 662 223 b 648 213 655 223 648 219 l 648 -213 b 662 -223 648 -217 655 -223 l 681 -223 b 696 -213 690 -223 696 -217 z m 619 213 b 605 223 619 219 613 223 l 588 223 b 573 213 580 223 573 219 l 573 174 b 562 180 570 177 566 180 l 134 180 b 122 174 130 180 125 177 l 122 213 b 108 223 122 219 117 223 l 91 223 b 76 213 84 223 76 219 l 76 -213 b 91 -223 76 -217 84 -223 l 108 -223 b 122 -213 117 -223 122 -217 l 122 154 l 334 -173 b 346 -180 337 -177 341 -180 b 357 -173 351 -180 354 -177 l 573 154 l 573 -213 b 588 -223 573 -217 580 -223 l 605 -223 b 619 -213 613 -223 619 -217 z m 32 -223 b 46 -213 40 -223 46 -217 l 46 213 b 32 223 46 219 40 223 l 14 223 b 0 213 7 223 0 219 l 0 -213 b 14 -223 0 -217 7 -223 z m 428 98 b 346 -107 428 17 377 -53 b 265 96 315 -55 265 17 b 289 137 265 109 275 137 l 406 137 b 428 98 419 137 428 111 z',\n },\n noteheadTriangleDownWhole: {\n x_min: 0,\n x_max: 319,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 14 180 b 0 166 6 180 0 173 b 1 158 0 163 1 160 l 216 -173 b 228 -180 219 -177 225 -180 b 239 -173 233 -180 238 -177 l 458 158 b 459 166 458 160 459 163 b 445 180 459 173 454 180 z m 288 137 b 310 98 301 137 310 111 b 228 -108 310 17 259 -55 b 145 96 197 -56 145 17 b 170 137 145 109 157 137 z',\n },\n noteheadTriangleDownHalf: {\n x_min: 0,\n x_max: 285,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 196 -180 b 209 -173 200 -180 206 -177 l 408 157 b 410 166 409 160 410 163 b 396 180 410 173 403 180 l 14 180 b 0 166 4 180 0 173 b 1 158 0 163 0 161 l 183 -173 b 196 -180 184 -174 190 -180 z m 164 138 l 295 138 l 179 -76 l 114 37 z',\n },\n noteheadTriangleDownBlack: {\n x_min: 0,\n x_max: 292,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 207 -180 l 420 180 l 0 180 z',\n },\n noteheadTriangleUpDoubleWhole: {\n x_min: 0,\n x_max: 483,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 696 213 b 681 223 696 217 690 223 l 662 223 b 648 213 655 223 648 217 l 648 -213 b 662 -223 648 -219 655 -223 l 681 -223 b 696 -213 690 -223 696 -219 z m 619 213 b 605 223 619 217 613 223 l 588 223 b 573 213 580 223 573 217 l 573 -154 l 357 173 b 346 180 354 177 351 180 b 334 173 341 180 337 177 l 122 -154 l 122 213 b 108 223 122 217 117 223 l 91 223 b 76 213 84 223 76 217 l 76 -213 b 91 -223 76 -219 84 -223 l 108 -223 b 122 -213 117 -223 122 -219 l 122 -174 b 134 -180 125 -177 130 -180 l 562 -180 b 573 -174 566 -180 570 -177 l 573 -213 b 588 -223 573 -219 580 -223 l 605 -223 b 619 -213 613 -223 619 -219 z m 32 223 l 14 223 b 0 213 7 223 0 217 l 0 -213 b 14 -223 0 -219 7 -223 l 32 -223 b 46 -213 40 -223 46 -219 l 46 213 b 32 223 46 217 40 223 z m 428 -98 b 406 -137 428 -111 419 -137 l 289 -137 b 265 -96 275 -137 265 -109 b 346 107 265 -17 315 55 b 428 -98 377 53 428 -17 z',\n },\n noteheadTriangleUpWhole: {\n x_min: 0,\n x_max: 319,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 445 -180 b 459 -166 454 -180 459 -173 b 458 -158 459 -163 458 -160 l 239 173 b 228 180 238 177 233 180 b 216 173 225 180 219 177 l 1 -158 b 0 -166 1 -160 0 -163 b 14 -180 0 -173 6 -180 z m 170 -137 b 145 -96 157 -137 145 -109 b 228 108 145 -17 197 56 b 310 -98 259 55 310 -17 b 288 -137 310 -111 301 -137 z',\n },\n noteheadTriangleUpHalf: {\n x_min: 0,\n x_max: 285,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 215 180 b 202 173 210 180 204 177 l 3 -157 b 0 -166 1 -160 0 -163 b 14 -180 0 -173 7 -180 l 396 -180 b 410 -166 406 -180 410 -173 b 409 -158 410 -163 410 -161 l 228 173 b 215 180 226 174 220 180 z m 246 -138 l 115 -138 l 232 76 l 297 -37 z',\n },\n noteheadTriangleUpBlack: {\n x_min: 0,\n x_max: 293,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 422 -180 l 207 180 l 0 -180 z',\n },\n noteheadSlashedDoubleWhole1: {\n x_min: 0,\n x_max: 596,\n y_min: -179,\n y_max: 168,\n ha: 347,\n o: 'm 618 135 l 697 206 b 704 222 703 210 704 216 b 698 236 704 226 703 232 b 683 242 694 239 688 242 b 670 238 677 242 674 240 l 575 153 b 435 180 531 168 481 180 b 128 0 246 180 128 98 b 236 -148 128 -58 160 -114 l 153 -222 b 145 -238 148 -226 145 -232 b 151 -252 145 -242 148 -248 b 167 -258 156 -256 161 -258 b 181 -253 171 -258 177 -256 l 282 -164 b 420 -180 320 -173 366 -180 b 729 0 654 -180 729 -98 b 618 135 729 55 681 104 z m 114 223 l 95 223 b 82 212 88 223 82 217 l 82 -215 b 95 -223 82 -219 88 -223 l 114 -223 b 127 -215 121 -223 127 -219 l 127 212 b 114 223 127 217 121 223 z m 32 223 l 13 223 b 0 212 6 223 0 217 l 0 -215 b 13 -223 0 -219 6 -223 l 32 -223 b 45 -215 39 -223 45 -219 l 45 212 b 32 223 45 217 39 223 z m 844 223 l 825 223 b 811 212 819 223 811 217 l 811 -215 b 825 -223 811 -219 819 -223 l 844 -223 b 858 -215 851 -223 858 -219 l 858 212 b 844 223 858 217 851 223 z m 763 223 l 743 223 b 730 212 736 223 730 217 l 730 -215 b 743 -223 730 -219 736 -223 l 763 -223 b 776 -215 769 -223 776 -219 l 776 212 b 763 223 776 217 769 223 z m 282 56 b 285 89 282 68 284 79 b 399 144 301 137 354 144 b 510 95 441 144 480 124 l 327 -68 b 282 56 301 -35 282 13 z m 572 -72 b 508 -141 564 -108 544 -132 b 467 -147 495 -145 481 -147 b 360 -104 428 -147 389 -128 l 356 -98 l 537 63 b 575 -46 560 30 575 -9 b 572 -72 575 -55 573 -65 z',\n },\n noteheadSlashedWhole1: {\n x_min: -22,\n x_max: 433,\n y_min: -157,\n y_max: 148,\n ha: 305,\n o: 'm 484 140 b 308 180 431 166 367 180 b 0 1 118 180 0 99 b 73 -128 0 -48 22 -95 l -22 -190 b -32 -206 -27 -194 -32 -200 b -27 -217 -32 -210 -30 -215 b -12 -226 -23 -223 -17 -226 b 0 -223 -7 -226 -4 -225 l 112 -150 b 294 -180 157 -168 217 -180 b 602 1 526 -180 602 -98 b 523 118 602 48 570 86 l 613 177 b 624 193 619 181 624 187 b 619 204 624 197 622 200 b 603 213 615 209 609 213 b 592 209 599 213 596 212 z m 190 -52 b 154 56 170 -20 154 19 b 160 91 154 68 156 79 b 271 147 174 138 226 147 b 396 82 321 147 364 121 z m 419 50 b 446 -48 436 19 446 -14 b 337 -147 446 -120 402 -147 b 301 -141 327 -147 314 -144 b 235 -104 276 -134 253 -120 b 215 -84 226 -98 220 -91 z',\n },\n noteheadSlashedHalf1: {\n x_min: -67,\n x_max: 386,\n y_min: -142,\n y_max: 160,\n ha: 302,\n o: 'm 552 222 b 536 230 549 228 543 230 b 524 228 533 230 528 230 l 389 140 b 281 180 364 164 327 180 b 0 -60 65 180 0 13 b 7 -105 0 -78 3 -92 l -88 -167 b -96 -184 -94 -171 -96 -177 b -94 -194 -96 -187 -95 -192 b -76 -204 -89 -202 -84 -204 b -66 -202 -73 -204 -69 -203 l 29 -140 b 137 -180 55 -167 92 -180 b 420 59 374 -180 420 13 b 412 107 420 76 419 92 l 546 194 b 556 210 552 197 556 204 b 552 222 556 213 554 217 z m 315 120 b 347 112 328 120 338 117 l 46 -82 b 42 -63 43 -76 42 -69 b 315 120 42 6 248 120 z m 108 -124 b 69 -114 91 -124 79 -120 l 372 81 b 376 63 374 75 376 69 b 108 -124 376 0 174 -124 z',\n },\n noteheadSlashedBlack1: {\n x_min: -80,\n x_max: 375,\n y_min: -165,\n y_max: 167,\n ha: 332,\n o: 'm 518 240 b 507 236 514 240 510 239 l 384 148 b 284 180 359 168 324 180 b 0 -62 127 180 0 63 b 13 -115 0 -82 4 -99 l -107 -202 b -115 -217 -111 -204 -115 -212 b -111 -229 -115 -222 -114 -225 b -95 -238 -108 -235 -101 -238 b -84 -235 -91 -238 -86 -236 l 39 -148 b 140 -180 63 -170 99 -180 b 425 59 268 -180 425 -62 b 410 117 425 81 420 101 l 530 203 b 540 219 536 207 540 213 b 518 240 540 229 528 240 z',\n },\n noteheadSlashedDoubleWhole2: {\n x_min: 0,\n x_max: 596,\n y_min: -178,\n y_max: 169,\n ha: 347,\n o: 'm 729 0 b 435 180 729 102 569 180 b 278 156 374 180 321 170 l 184 239 b 170 243 181 242 176 243 b 154 238 166 243 158 240 b 150 223 151 233 150 228 b 156 207 150 217 153 212 l 233 138 b 128 0 167 107 128 56 b 420 -180 128 -94 210 -180 b 575 -164 482 -180 533 -174 l 672 -252 b 687 -256 677 -255 681 -256 b 703 -251 691 -256 698 -255 b 707 -236 706 -246 707 -240 b 701 -220 707 -230 706 -225 l 619 -150 b 729 0 700 -117 729 -62 z m 114 223 l 95 223 b 82 213 88 223 82 217 l 82 -213 b 95 -223 82 -219 88 -223 l 114 -223 b 127 -213 121 -223 127 -219 l 127 213 b 114 223 127 217 121 223 z m 32 223 l 13 223 b 0 213 6 223 0 217 l 0 -213 b 13 -223 0 -219 6 -223 l 32 -223 b 45 -213 39 -223 45 -219 l 45 213 b 32 223 45 217 39 223 z m 844 223 l 825 223 b 811 213 819 223 811 217 l 811 -213 b 825 -223 811 -219 819 -223 l 844 -223 b 858 -213 851 -223 858 -219 l 858 213 b 844 223 858 217 851 223 z m 763 223 l 743 223 b 730 213 736 223 730 217 l 730 -213 b 743 -223 730 -219 736 -223 l 763 -223 b 776 -213 769 -223 776 -219 l 776 213 b 763 223 776 217 769 223 z m 312 124 b 399 144 336 141 369 144 b 575 -46 495 144 575 40 b 563 -98 575 -65 570 -81 z m 508 -141 b 467 -147 495 -145 481 -147 b 360 -104 428 -147 389 -128 b 330 -72 350 -95 340 -82 b 282 56 304 -37 282 10 b 285 89 282 68 284 79 b 536 -130 287 89 304 75 z',\n },\n noteheadSlashedWhole2: {\n x_min: -18,\n x_max: 436,\n y_min: -154,\n y_max: 151,\n ha: 305,\n o: 'm 531 -128 b 602 1 582 -96 602 -49 b 308 180 602 104 441 180 b 114 144 230 180 164 166 l 4 215 b -6 217 1 217 -3 217 b -22 209 -13 217 -19 215 b -26 197 -24 204 -26 200 b -16 181 -26 192 -22 184 l 75 121 b 0 1 27 91 0 49 b 294 -180 0 -94 82 -180 b 491 -150 379 -180 444 -168 l 598 -219 b 608 -222 600 -222 605 -222 b 624 -213 615 -222 621 -219 b 628 -202 626 -209 628 -206 b 618 -186 628 -196 624 -189 z m 168 108 b 271 147 190 141 233 147 b 446 -48 369 147 446 40 b 445 -72 446 -56 446 -63 z m 154 69 l 429 -109 b 382 -141 419 -125 402 -135 b 337 -147 367 -144 351 -147 b 301 -141 327 -147 314 -144 b 235 -104 276 -134 253 -120 b 203 -72 223 -94 213 -82 b 154 58 177 -39 154 12 z',\n },\n noteheadSlashedHalf2: {\n x_min: -73,\n x_max: 380,\n y_min: -134,\n y_max: 168,\n ha: 302,\n o: 'm 537 -156 l 383 -58 b 422 60 413 -9 422 39 b 281 180 422 134 364 180 b 101 127 203 180 144 157 l -75 239 b -85 242 -78 242 -82 242 b -102 233 -92 242 -98 239 b -105 222 -104 229 -105 225 b -95 206 -105 216 -102 209 l 69 99 b 0 -59 19 46 0 -20 b 138 -180 0 -135 60 -180 b 359 -88 248 -180 317 -138 l 516 -190 b 527 -193 520 -192 524 -193 b 543 -183 534 -193 540 -190 b 547 -173 546 -180 547 -176 b 537 -156 547 -166 543 -160 z m 367 92 b 377 63 374 82 377 73 b 318 -14 377 43 361 20 l 184 72 b 317 121 248 108 289 121 b 367 92 344 121 357 109 z m 248 -66 b 108 -124 181 -108 138 -124 b 50 -92 78 -124 60 -109 b 42 -63 46 -84 42 -73 b 145 49 42 -35 68 0 l 285 -40 b 248 -66 274 -49 261 -56 z',\n },\n noteheadSlashedBlack2: {\n x_min: -79,\n x_max: 376,\n y_min: -164,\n y_max: 168,\n ha: 332,\n o: 'm 531 -200 l 363 -78 b 425 59 402 -37 425 10 b 285 180 425 132 367 180 b 92 114 210 180 144 154 l -81 238 b -94 242 -85 240 -89 242 b -111 232 -99 242 -107 238 b -114 220 -112 229 -114 225 b -105 204 -114 215 -111 207 l 62 85 b 0 -62 23 43 0 -9 b 140 -180 0 -137 62 -180 b 331 -108 204 -180 275 -153 l 507 -233 b 520 -236 511 -236 517 -236 b 537 -228 527 -236 533 -233 b 541 -216 540 -225 541 -220 b 531 -200 541 -210 537 -203 z',\n },\n noteheadDiamondDoubleWhole: {\n x_min: 0,\n x_max: 432,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 592 223 b 580 215 585 223 580 219 l 580 -215 b 592 -223 580 -219 585 -223 l 608 -223 b 622 -215 615 -223 622 -219 l 622 215 b 608 223 622 219 615 223 z m 517 223 b 504 215 510 223 504 219 l 504 -215 b 517 -223 504 -219 510 -223 l 533 -223 b 544 -215 540 -223 544 -219 l 544 215 b 533 223 544 219 540 223 z m 246 179 b 240 180 243 179 242 180 b 232 176 236 180 233 179 l 118 22 b 117 17 117 20 117 19 l 117 215 b 104 223 117 219 111 223 l 88 223 b 75 215 81 223 75 219 l 75 -215 b 88 -223 75 -219 81 -223 l 104 -223 b 117 -215 111 -223 117 -219 l 117 14 l 118 14 b 122 7 118 12 120 10 l 374 -179 b 382 -180 376 -180 379 -180 b 390 -177 384 -180 387 -180 l 503 -23 l 503 -17 b 500 -9 503 -13 503 -10 z m 12 223 b 0 215 4 223 0 219 l 0 -215 b 12 -223 0 -219 4 -223 l 29 -223 b 40 -215 36 -223 40 -219 l 40 215 b 29 223 40 219 36 223 z m 183 39 b 179 46 181 39 179 43 b 229 112 226 112 228 112 b 236 109 229 112 233 111 l 436 -39 b 439 -46 438 -39 439 -42 b 390 -112 393 -111 392 -112 b 383 -109 389 -112 386 -111 z',\n },\n noteheadDiamondWhole: {\n x_min: 0,\n x_max: 270,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 386 -23 b 389 -16 387 -20 389 -19 b 383 -7 389 -13 386 -9 l 130 179 b 122 180 128 180 125 180 b 115 177 120 180 117 180 l 3 23 b 0 17 1 20 0 19 b 4 7 0 16 3 10 l 258 -179 b 264 -180 261 -179 262 -180 b 272 -176 268 -180 271 -179 z m 66 40 b 62 48 65 42 62 45 l 109 111 b 112 112 109 112 111 112 b 118 111 115 112 117 111 l 320 -37 b 324 -46 323 -39 324 -42 b 275 -111 278 -111 276 -111 b 268 -108 272 -111 271 -109 z',\n },\n noteheadDiamondHalf: {\n x_min: 0,\n x_max: 251,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 359 -7 b 361 0 360 -6 361 -3 b 359 7 361 3 360 4 l 189 177 b 180 180 186 179 183 180 b 174 177 179 180 176 179 l 4 7 b 0 0 1 4 0 3 b 4 -7 0 -3 1 -6 l 174 -177 b 180 -180 176 -180 179 -180 b 189 -177 183 -180 186 -180 z m 266 26 b 138 -71 266 -12 176 -71 b 96 -50 121 -71 108 -63 b 88 -24 89 -43 88 -32 b 215 73 88 13 177 73 b 266 26 238 73 266 50 z',\n },\n noteheadDiamondBlack: {\n x_min: 0,\n x_max: 250,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 357 -6 b 360 1 359 -4 360 -1 b 357 9 360 4 359 7 l 189 177 b 180 180 187 179 184 180 b 171 177 177 180 173 179 l 3 9 b 0 1 0 6 0 4 b 4 -7 0 -1 1 -4 l 173 -177 b 180 -180 176 -180 177 -180 b 187 -177 181 -180 184 -180 z',\n },\n noteheadParenthesis: {\n x_min: -73,\n x_max: 368,\n y_min: -180,\n y_max: 182,\n ha: 362,\n o: 'm 52 -249 b -30 -144 3 -212 -14 -190 b -52 4 -45 -102 -52 -56 b 52 252 -52 118 -36 179 l 46 262 b -105 3 -49 197 -105 124 b 45 -259 -105 -109 -48 -200 z m 382 -259 b 530 3 474 -202 530 -108 b 379 262 530 122 474 200 l 373 252 b 478 4 462 180 478 118 b 456 -144 478 -56 471 -102 b 373 -249 439 -190 422 -212 z',\n },\n noteheadParenthesisRight: {\n x_min: -36,\n x_max: 73,\n y_min: -181,\n y_max: 181,\n ha: 362,\n o: 'm -43 -261 b 105 1 49 -203 105 -109 b -46 261 105 121 49 199 l -52 251 b 53 3 37 179 53 117 b 32 -145 53 -58 46 -104 b -52 -251 14 -192 -3 -213 z',\n },\n noteheadParenthesisLeft: {\n x_min: 0,\n x_max: 109,\n y_min: -181,\n y_max: 181,\n ha: 362,\n o: 'm 157 -251 b 75 -145 108 -213 91 -192 b 53 3 60 -104 53 -58 b 157 251 53 117 69 177 l 151 261 b 0 1 56 196 0 122 b 150 -261 0 -111 58 -202 z',\n },\n noteheadMoonBlack: {\n x_min: 0,\n x_max: 315,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 228 -180 b 454 0 343 -180 454 -130 l 454 180 l 0 180 l 0 0 b 228 -180 0 -131 112 -180 z',\n },\n noteheadTriangleLeftBlack: {\n x_min: 0,\n x_max: 339,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 488 -180 l 0 180 l 0 -180 z',\n },\n noteheadTriangleRightBlack: {\n x_min: 0,\n x_max: 339,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 488 180 l 0 -180 l 488 -180 z',\n },\n noteheadTriangleRoundDownBlack: {\n x_min: 0,\n x_max: 278,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 200 -180 l 400 112 l 383 124 b 199 180 327 161 264 180 b 16 124 135 180 73 161 l 0 112 z',\n },\n augmentationDot: {\n x_min: 0,\n x_max: 100,\n y_min: -50,\n y_max: 50,\n ha: 100,\n o: 'm 144 0 b 72 72 144 40 112 72 b 0 0 32 72 0 40 b 72 -72 0 -40 32 -72 b 144 0 112 -72 144 -40 z',\n },\n tremolo1: {\n x_min: -150,\n x_max: 150,\n y_min: -93,\n y_max: 94,\n ha: 187,\n o: 'm 216 -45 l 216 135 l -216 46 l -216 -134 z',\n },\n flag8thUp: {\n x_min: 0,\n x_max: 264,\n y_min: -810.1921176545985,\n y_max: 9,\n ha: 819.1921176545985,\n o: 'm 343 -1138 b 380 -888 343 -1138 380 -1001 b 215 -395 380 -708 305 -539 b 58 -19 141 -281 81 -157 b 27 13 53 4 42 13 b 0 -9 12 13 0 9 l 0 -353 b 284 -688 95 -370 232 -566 b 318 -904 305 -737 318 -819 b 284 -1102 318 -969 308 -1037 b 279 -1123 281 -1110 279 -1117 b 302 -1165 279 -1146 294 -1159 b 343 -1138 311 -1171 336 -1162 z',\n },\n flag8thDown: {\n x_min: 0,\n x_max: 306,\n y_min: -14,\n y_max: 808,\n ha: 822,\n o: 'm 346 1094 b 376 897 366 1034 376 962 b 318 642 376 812 340 691 b 0 340 265 521 193 405 l 0 1 b 23 -20 0 -13 12 -20 b 58 12 36 -20 55 -12 b 262 387 82 148 189 274 b 441 881 353 530 441 701 b 400 1142 441 994 412 1096 b 377 1164 396 1158 387 1164 b 346 1094 356 1164 331 1136 z',\n },\n flag16thUp: {\n x_min: 0,\n x_max: 279,\n y_min: -813,\n y_max: 2,\n ha: 815,\n o: 'm 392 -1146 b 402 -988 397 -1139 402 -1057 l 402 -956 b 360 -783 402 -896 386 -837 b 359 -770 360 -779 359 -776 b 360 -760 359 -768 359 -765 b 396 -577 364 -752 396 -665 b 392 -526 396 -559 395 -543 b 236 -275 377 -428 340 -387 b 53 -16 158 -192 78 -168 b 24 3 50 0 33 3 b 0 -12 16 3 0 -1 l 0 -570 l 7 -570 b 298 -778 96 -573 199 -576 b 344 -992 331 -847 344 -917 b 333 -1120 344 -1034 340 -1077 b 331 -1133 331 -1126 331 -1129 b 363 -1171 331 -1152 343 -1171 b 392 -1146 373 -1171 383 -1165 z m 301 -661 b 223 -562 278 -625 253 -596 b 59 -331 156 -484 89 -449 b 58 -327 58 -330 58 -328 b 78 -312 58 -321 66 -312 l 89 -312 b 302 -464 177 -312 255 -393 b 341 -592 328 -501 341 -546 b 340 -621 341 -602 341 -611 b 330 -658 337 -632 337 -647 b 311 -667 328 -662 318 -667 b 301 -661 307 -667 304 -665 z',\n },\n flag16thDown: {\n x_min: 0,\n x_max: 290.8951581511223,\n y_min: -9,\n y_max: 812.0064,\n ha: 821.0064,\n o: 'm 346 1132 b 312 768 367 1011 367 880 b 7 559 213 566 96 562 l 0 559 l 0 1 b 24 -13 0 -6 10 -13 b 53 6 35 -13 50 -10 b 406 516 88 228 372 289 b 410 567 409 531 410 549 b 374 750 410 655 379 742 b 373 760 373 753 373 756 b 374 773 373 766 374 769 b 405 1138 426 881 428 1022 b 370 1169 397 1171 387 1169 b 346 1132 353 1168 341 1156 z m 325 657 b 344 647 333 657 343 652 b 354 611 351 636 351 622 b 356 582 356 600 356 590 b 317 454 356 534 343 491 b 89 302 269 383 177 302 l 78 302 b 58 317 66 302 58 310 b 59 321 58 318 58 320 b 238 552 89 439 170 472 b 315 651 268 585 292 613 b 325 657 318 655 321 657 z',\n },\n flag32ndUp: {\n x_min: 0,\n x_max: 261,\n y_min: -812,\n y_max: 149,\n ha: 961,\n o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 366 -289 369 -315 369 -302 b 220 -58 350 -202 317 -163 b 46 187 148 20 71 43 b 20 215 45 200 35 215 b 0 197 12 215 0 207 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 56 -390 147 -527 88 -495 b 73 -367 53 -380 60 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z',\n },\n flag32ndDown: {\n x_min: 0,\n x_max: 273,\n y_min: -172,\n y_max: 812,\n ha: 984,\n o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -229 b 20 -248 0 -242 9 -248 b 48 -219 35 -248 46 -232 b 229 36 72 -69 154 -46 b 380 278 330 145 364 186 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z',\n },\n flag64thUp: {\n x_min: 0,\n x_max: 261,\n y_min: -812,\n y_max: 347,\n ha: 1159,\n o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 220 228 350 84 317 122 b 46 472 148 305 71 328 b 20 500 45 485 32 500 b 0 482 10 500 0 492 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 24 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 58 187 148 20 82 43 b 56 193 58 189 58 192 b 300 24 138 193 220 157 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 b 73 -367 52 -376 63 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z',\n },\n flag64thDown: {\n x_min: 0,\n x_max: 273,\n y_min: -376,\n y_max: 812,\n ha: 1188,\n o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -523 b 20 -541 0 -534 9 -541 b 48 -513 35 -541 46 -526 b 229 -258 72 -363 154 -340 b 380 -16 330 -148 364 -108 b 384 27 383 -1 384 13 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z m 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 b 229 36 75 -86 145 -55 b 311 128 264 73 289 102 z',\n },\n flag128thUp: {\n x_min: 0,\n x_max: 261,\n y_min: -812,\n y_max: 533,\n ha: 1345,\n o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 341 75 360 26 353 50 b 369 222 354 111 369 167 b 366 264 369 236 369 251 b 220 495 350 351 317 390 b 46 740 148 573 71 596 b 22 768 45 753 35 768 b 0 750 10 768 0 760 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 292 b 321 223 315 264 321 242 b 317 193 321 212 318 203 b 301 135 314 180 308 158 b 220 228 281 161 255 190 b 55 461 151 304 79 327 b 300 292 134 461 220 426 z m 300 24 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 56 187 148 20 81 43 b 55 193 56 189 56 192 b 300 24 137 193 220 157 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 b 73 -367 53 -376 62 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z',\n },\n flag128thDown: {\n x_min: 0,\n x_max: 273,\n y_min: -580,\n y_max: 812,\n ha: 1392,\n o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -816 b 20 -835 0 -828 7 -835 b 48 -806 33 -835 46 -819 b 229 -552 72 -657 154 -634 b 380 -310 330 -442 364 -402 b 384 -266 383 -295 384 -281 b 351 -105 384 -206 366 -143 b 384 27 372 -66 384 -16 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z m 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 b 229 36 75 -86 145 -55 b 311 128 264 73 289 102 z m 330 -238 b 334 -268 331 -248 334 -256 b 311 -340 334 -287 328 -310 b 56 -516 229 -478 137 -516 b 229 -258 75 -380 145 -348 b 311 -166 264 -220 289 -192 z',\n },\n accidentalFlat: {\n x_min: 0,\n x_max: 226,\n y_min: -175,\n y_max: 439,\n ha: 614,\n o: 'm 17 -245 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 82 -225 117 -186 b 325 82 281 -72 325 16 b 196 220 325 164 262 216 b 117 196 171 220 137 209 b 85 176 108 189 92 176 b 78 177 82 176 81 176 b 62 202 68 181 62 192 b 72 608 63 233 72 579 b 45 632 72 624 59 632 b 0 592 24 632 1 618 b 17 -245 0 592 6 -230 z m 68 -117 b 63 27 68 -117 63 -30 b 66 73 63 50 65 68 b 167 144 76 102 134 144 b 226 60 209 144 226 96 b 98 -134 226 -17 160 -95 b 84 -138 92 -137 88 -138 b 68 -117 71 -138 68 -124 z',\n },\n accidentalNatural: {\n x_min: 0,\n x_max: 168,\n y_min: -335,\n y_max: 341,\n ha: 676,\n o: 'm 203 261 b 197 259 200 261 199 259 b 68 226 197 259 105 226 b 53 233 59 226 53 228 l 53 474 b 36 491 53 484 45 491 l 17 491 b 0 474 7 491 0 484 l 0 -268 b 13 -281 0 -276 4 -281 l 16 -279 b 22 -278 17 -279 20 -279 b 164 -235 42 -269 122 -235 b 189 -251 179 -235 189 -239 l 189 -465 b 206 -482 189 -475 196 -482 l 225 -482 b 242 -465 233 -482 242 -475 l 242 258 b 230 269 242 265 236 269 b 225 268 229 269 226 269 z m 53 56 b 176 114 53 76 141 114 b 189 107 184 114 189 112 l 189 -42 b 71 -101 189 -68 107 -101 b 53 -92 60 -101 53 -98 z',\n },\n accidentalSharp: {\n x_min: 0,\n x_max: 249,\n y_min: -348,\n y_max: 350,\n ha: 698,\n o: 'm 341 170 b 359 194 351 174 359 186 l 359 297 b 348 308 359 304 354 308 b 341 307 346 308 344 308 b 305 294 341 307 312 295 b 285 312 295 294 285 301 l 285 488 b 265 504 285 497 276 504 b 242 488 251 504 242 497 l 242 301 b 223 259 240 287 236 268 b 132 223 206 249 157 229 b 115 252 120 223 115 240 l 115 425 b 95 441 115 433 105 441 b 72 425 81 441 72 433 l 72 230 b 55 192 72 210 63 196 b 17 176 46 187 17 176 b 0 153 7 173 0 161 l 0 50 b 13 37 0 42 4 37 l 16 39 b 50 53 17 39 39 48 l 52 55 b 72 29 63 55 72 40 l 72 -114 b 56 -147 72 -130 65 -143 b 17 -163 48 -150 17 -163 b 0 -186 7 -166 0 -177 l 0 -288 b 13 -301 0 -297 4 -301 l 16 -300 b 50 -287 17 -300 37 -291 b 55 -285 52 -285 53 -285 b 72 -308 65 -285 72 -301 l 72 -485 b 91 -501 72 -494 81 -501 b 115 -485 105 -501 115 -494 l 115 -285 b 130 -253 115 -266 122 -256 l 217 -217 b 219 -217 217 -217 219 -217 l 222 -216 b 242 -242 235 -216 242 -233 l 242 -422 b 261 -438 242 -431 251 -438 b 285 -422 276 -438 285 -431 l 285 -217 b 301 -184 285 -206 291 -189 b 341 -168 311 -180 341 -168 b 359 -144 351 -164 359 -153 l 359 -42 b 348 -30 359 -35 354 -30 b 341 -32 346 -30 344 -30 l 304 -46 b 285 -20 295 -46 285 -37 l 285 114 b 304 156 285 124 292 151 z m 242 -65 b 132 -122 233 -94 166 -122 b 115 -115 124 -122 117 -120 b 111 -43 112 -109 111 -78 b 115 63 111 1 112 52 b 220 118 118 88 184 118 b 242 109 230 118 239 115 b 248 27 245 102 248 66 b 242 -65 248 -12 245 -52 z',\n },\n accidentalDoubleSharp: {\n x_min: 0,\n x_max: 247,\n y_min: -125,\n y_max: 127,\n ha: 252,\n o: 'm 274 -46 b 206 1 258 -37 206 -9 b 274 50 206 22 253 43 b 278 50 275 50 276 50 l 287 49 b 346 63 304 49 331 52 b 356 115 353 71 356 92 b 292 183 356 174 351 183 b 233 173 266 183 240 180 b 226 117 228 168 226 143 b 179 49 219 101 196 49 b 130 117 158 49 135 96 b 118 173 130 141 125 167 b 66 183 112 180 89 183 b 7 173 42 183 16 180 b 0 120 3 170 0 145 b 7 63 0 94 3 68 b 68 49 17 55 43 49 b 82 50 73 49 78 50 b 150 3 98 42 150 13 b 84 -46 150 -16 104 -39 l 69 -46 b 7 -56 43 -46 16 -49 b 0 -111 3 -60 0 -85 b 7 -166 0 -137 3 -163 b 65 -180 17 -174 40 -180 b 118 -166 86 -180 109 -176 b 130 -111 127 -158 130 -134 b 132 -105 130 -109 131 -107 b 177 -45 141 -85 158 -45 b 226 -111 196 -45 220 -91 b 233 -166 226 -137 228 -161 b 291 -180 243 -174 266 -180 b 356 -114 346 -180 356 -166 b 346 -56 356 -89 351 -63 b 288 -46 338 -49 312 -46 z',\n },\n accidentalDoubleFlat: {\n x_min: 0,\n x_max: 411,\n y_min: -175,\n y_max: 437,\n ha: 612,\n o: 'm 452 217 b 384 194 426 217 408 207 b 350 176 374 189 363 176 b 343 177 347 176 344 176 b 328 202 333 180 328 190 b 337 606 328 232 337 579 b 310 629 337 622 324 629 b 265 592 291 629 268 616 b 269 194 265 592 266 395 b 196 217 248 209 223 217 l 187 217 b 120 194 160 217 143 207 b 85 176 108 189 98 176 b 78 177 82 176 81 176 b 62 202 68 180 62 190 b 72 606 62 232 72 579 b 45 629 72 622 59 629 b 0 592 24 629 1 616 b 17 -245 0 592 7 -232 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 84 -226 120 -186 b 274 -50 206 -124 246 -85 b 284 -245 276 -158 279 -240 b 295 -252 288 -251 292 -252 b 304 -249 300 -252 304 -249 b 416 -163 348 -226 383 -186 b 592 82 546 -72 592 16 b 461 217 592 163 528 216 z m 96 -134 b 84 -138 92 -137 86 -138 b 68 -115 72 -138 68 -124 b 63 26 68 -115 63 -30 b 66 72 63 49 65 66 b 168 144 75 101 134 144 b 226 59 212 144 226 95 b 96 -134 226 -22 161 -94 z m 361 -134 b 348 -138 356 -137 351 -138 b 333 -115 337 -138 333 -124 b 328 39 333 -115 328 -16 b 330 72 328 55 328 68 b 433 144 338 101 399 144 b 468 130 448 144 459 140 b 490 59 481 112 490 88 b 361 -134 490 -22 426 -94 z',\n },\n accidentalParensLeft: {\n x_min: 0,\n x_max: 141,\n y_min: -248,\n y_max: 247,\n ha: 495,\n o: 'm 203 331 l 203 351 b 202 356 203 354 203 356 b 0 0 60 281 0 140 b 199 -357 0 -144 60 -269 b 203 -354 200 -357 203 -356 l 203 -333 b 200 -327 203 -330 202 -328 b 86 0 118 -253 86 -160 b 200 324 86 158 120 251 b 203 331 202 325 203 327 z',\n },\n accidentalParensRight: {\n x_min: 0,\n x_max: 141,\n y_min: -248,\n y_max: 247,\n ha: 495,\n o: 'm 0 331 b 3 324 0 327 1 325 b 117 0 84 251 117 158 b 3 -327 117 -160 85 -253 b 0 -333 1 -328 0 -330 l 0 -354 b 4 -357 0 -356 3 -357 b 203 0 143 -269 203 -144 b 1 356 203 140 143 281 b 0 351 0 356 0 354 z',\n },\n accidentalQuarterToneFlatStein: {\n x_min: 1,\n x_max: 227,\n y_min: -175,\n y_max: 439,\n ha: 614,\n o: 'm 310 -245 b 327 592 321 -230 327 592 b 282 632 325 618 302 632 b 255 608 268 632 255 624 b 265 202 255 579 264 233 b 249 177 265 192 259 181 b 242 176 246 176 245 176 b 210 196 235 176 219 189 b 131 220 190 209 156 220 b 1 85 65 216 1 164 b 174 -161 1 16 46 -72 b 288 -249 210 -186 245 -225 b 297 -252 288 -249 292 -252 b 310 -245 301 -252 305 -251 z m 259 -117 b 243 -138 259 -124 256 -138 b 229 -134 239 -138 235 -137 b 101 60 167 -95 101 -17 b 160 144 101 96 118 144 b 261 73 193 144 251 102 b 264 27 262 68 264 50 b 259 -117 264 -30 259 -117 z',\n },\n accidentalThreeQuarterTonesFlatZimmermann: {\n x_min: 1,\n x_max: 466,\n y_min: -175,\n y_max: 439,\n ha: 614,\n o: 'm 363 -245 b 376 -252 367 -251 372 -252 b 384 -249 380 -252 384 -249 b 497 -161 428 -226 464 -186 b 671 84 625 -72 671 16 b 541 220 671 164 606 217 b 513 217 531 220 523 219 b 464 196 495 212 480 206 b 431 176 452 189 442 176 b 423 177 428 176 426 176 b 408 202 413 180 408 190 l 419 608 b 392 632 419 625 406 632 b 346 592 372 632 347 618 b 363 -245 346 592 351 -230 z m 289 -249 b 297 -252 289 -249 292 -252 b 310 -245 300 -252 305 -251 b 328 592 321 -230 328 592 b 282 631 327 618 302 631 b 255 608 268 631 255 624 l 266 202 b 251 177 266 190 261 180 b 243 176 248 176 246 176 b 210 196 232 176 222 189 b 164 216 196 204 180 210 l 163 217 b 132 220 151 219 143 220 b 1 84 65 217 1 163 b 177 -163 1 16 48 -72 b 289 -249 210 -186 245 -226 z m 262 72 b 265 26 264 66 265 49 b 261 -115 265 -30 261 -115 b 245 -138 261 -124 258 -138 b 230 -134 240 -138 236 -137 b 102 60 166 -92 102 -20 b 124 128 102 88 111 112 b 161 144 134 138 147 144 b 199 134 173 144 184 141 b 262 72 219 122 256 92 z m 413 -115 b 409 26 413 -115 409 -30 b 412 72 409 49 410 66 b 514 144 420 102 480 144 b 570 60 557 144 570 96 b 442 -134 570 -23 508 -91 b 429 -138 436 -137 433 -138 b 413 -115 418 -138 413 -124 z',\n },\n accidentalQuarterToneSharpStein: {\n x_min: 0,\n x_max: 179,\n y_min: -353,\n y_max: 307,\n ha: 660,\n o: 'm 258 240 b 246 252 258 248 252 252 b 240 251 245 252 242 252 b 168 225 240 251 171 225 b 150 253 156 225 150 240 l 150 426 b 130 442 150 435 141 442 b 105 418 108 442 105 429 l 105 230 b 91 193 105 219 101 202 b 17 161 65 183 42 171 b 0 138 9 158 0 147 l 0 36 b 13 23 0 27 4 23 l 16 24 b 86 53 17 24 73 49 l 88 55 b 107 30 98 55 107 42 l 107 -114 b 92 -145 107 -130 101 -143 l 17 -177 b 0 -200 9 -180 0 -192 l 0 -302 b 13 -315 0 -311 4 -315 l 16 -314 b 85 -285 17 -314 72 -291 b 105 -312 92 -282 105 -301 l 105 -492 b 125 -508 105 -501 114 -508 b 150 -484 147 -508 150 -498 l 150 -285 b 151 -274 150 -281 150 -278 b 164 -253 153 -265 158 -256 b 240 -225 176 -251 240 -225 b 258 -202 249 -222 258 -210 l 258 -99 b 245 -86 258 -91 253 -86 l 242 -88 b 240 -88 242 -88 240 -88 l 240 -86 b 168 -115 240 -86 174 -114 b 148 -91 158 -115 148 -107 l 148 43 b 167 85 148 55 156 81 b 240 114 180 91 240 114 b 258 138 249 118 258 128 z',\n },\n accidentalThreeQuarterTonesSharpStein: {\n x_min: 3,\n x_max: 317,\n y_min: -347,\n y_max: 369,\n ha: 716,\n o: 'm 456 324 b 448 336 456 330 454 336 b 393 317 445 336 400 320 b 389 315 392 315 390 315 b 383 325 386 315 383 318 l 383 508 b 360 531 383 528 379 531 b 337 508 341 531 337 527 l 337 318 b 325 291 337 300 334 294 b 268 268 320 288 287 276 b 253 281 256 268 253 274 l 253 464 b 230 487 253 484 249 487 b 207 464 212 487 207 482 l 207 264 b 194 240 207 253 204 245 l 132 217 b 131 217 132 217 132 217 l 130 216 b 118 229 122 216 118 220 l 118 420 b 95 444 118 439 114 444 b 72 420 76 444 72 439 l 72 212 b 60 190 72 197 68 193 l 16 173 b 4 161 9 170 4 167 l 4 50 b 13 39 4 45 9 39 b 58 55 16 39 46 49 b 63 56 60 56 62 56 b 72 42 71 56 72 50 l 72 -125 b 58 -150 72 -137 65 -147 l 16 -166 b 4 -177 9 -168 4 -171 l 4 -289 b 14 -301 4 -295 9 -301 b 53 -287 16 -301 40 -291 b 62 -285 56 -285 59 -285 b 72 -298 69 -285 72 -289 l 72 -477 b 95 -500 72 -495 76 -500 b 118 -477 114 -500 118 -495 l 118 -278 b 127 -259 118 -269 121 -261 l 196 -232 b 207 -243 204 -232 207 -235 l 207 -432 b 230 -455 207 -452 212 -455 b 253 -432 249 -455 253 -451 l 253 -228 b 268 -204 253 -216 259 -207 l 320 -186 b 328 -183 323 -184 325 -183 b 337 -194 334 -183 337 -187 l 337 -387 b 360 -410 337 -408 341 -410 b 383 -387 379 -410 383 -406 l 383 -174 b 395 -157 383 -166 390 -158 l 445 -138 b 456 -127 452 -135 456 -132 l 456 -14 b 448 -3 456 -10 454 -3 b 397 -22 445 -3 408 -17 l 396 -23 b 383 -6 387 -23 383 -16 l 383 163 b 392 181 383 173 384 179 b 445 202 397 183 445 202 b 456 213 452 203 456 207 z m 337 -45 b 266 -78 333 -56 287 -78 b 258 -75 262 -78 259 -76 b 253 19 255 -71 253 -27 b 258 130 253 69 255 122 b 333 163 264 141 315 163 b 337 161 334 163 337 161 b 341 78 340 157 341 120 b 337 -45 341 24 340 -37 z m 118 -127 b 114 -48 114 -121 114 -86 b 118 78 114 6 115 68 b 200 114 122 91 180 114 b 207 111 204 114 206 112 b 212 22 210 107 212 66 b 207 -94 212 -29 210 -85 b 127 -130 203 -108 148 -130 b 118 -127 122 -130 120 -128 z',\n },\n accidentalBuyukMucennebFlat: {\n x_min: 1,\n x_max: 287,\n y_min: -174,\n y_max: 438,\n ha: 612,\n o: 'm 379 452 b 370 464 379 458 377 464 b 164 389 366 464 170 392 b 156 396 163 389 156 393 b 157 436 157 409 157 428 b 167 452 157 445 161 449 b 366 526 173 455 366 526 b 379 540 374 528 379 534 l 379 611 b 370 622 379 616 377 622 b 170 550 366 622 174 552 b 160 557 163 550 160 554 b 161 608 160 585 161 602 b 134 631 161 624 148 631 b 89 590 114 631 91 616 l 89 528 b 81 517 89 526 88 518 b 16 491 76 514 16 491 b 1 480 6 490 1 485 l 1 406 b 13 395 1 400 4 395 l 14 396 b 79 419 16 396 72 415 b 89 412 86 419 89 415 b 91 376 89 399 89 386 b 82 359 91 364 89 361 b 16 331 76 356 16 331 b 1 321 6 331 1 328 l 1 248 b 13 236 1 242 4 236 b 79 262 16 236 71 258 b 92 251 89 262 92 256 b 107 -242 95 23 101 -236 b 120 -251 111 -249 115 -251 b 128 -248 124 -251 128 -248 b 240 -160 171 -225 207 -184 b 413 84 367 -71 413 16 b 284 220 413 166 350 216 b 207 196 259 220 229 209 b 170 176 196 190 184 176 l 168 177 b 151 203 157 181 151 192 b 153 269 151 210 151 236 b 163 292 153 275 153 289 b 366 367 173 297 366 367 b 379 383 374 370 379 376 z m 186 -132 b 173 -137 180 -135 176 -137 b 157 -114 161 -137 157 -122 b 153 35 157 -114 153 -22 b 154 73 153 53 153 68 b 219 135 160 92 197 124 b 255 144 232 141 243 144 b 292 130 269 144 282 140 b 314 62 305 114 314 91 b 186 -132 314 -17 251 -94 z',\n },\n accidentalBakiyeFlat: {\n x_min: -1,\n x_max: 286,\n y_min: -175,\n y_max: 439,\n ha: 614,\n o: 'm 377 454 b 369 467 377 458 376 467 b 363 465 367 467 364 467 b 161 390 363 465 167 393 b 153 399 154 390 153 395 b 157 608 154 494 157 593 b 130 632 157 624 144 632 b 86 592 111 632 88 618 b 88 377 86 592 86 501 b 76 356 88 373 88 360 l 12 331 b -1 320 3 330 -1 327 l -1 248 b 9 236 -1 242 1 236 b 81 264 12 236 78 261 b 89 258 86 264 89 261 b 104 -245 92 30 96 -236 b 115 -252 108 -251 112 -252 b 124 -249 120 -252 124 -249 b 239 -161 167 -226 203 -186 b 412 84 367 -72 412 17 b 282 220 412 166 348 216 b 255 216 274 220 264 219 b 203 196 238 212 222 206 b 171 177 193 189 177 177 b 163 179 168 177 166 177 b 147 202 153 181 147 192 b 147 216 147 204 147 209 l 150 262 b 150 276 150 269 150 275 b 158 291 150 287 154 289 b 363 370 163 292 363 370 b 377 384 373 373 377 379 z m 181 -134 b 167 -138 176 -137 171 -138 b 153 -117 156 -138 153 -125 b 148 27 153 -117 148 -30 b 151 73 148 50 150 68 b 255 144 161 105 219 144 b 312 62 298 144 312 99 b 181 -134 312 -19 249 -96 z',\n },\n accidentalKomaSharp: {\n x_min: 0,\n x_max: 229,\n y_min: -337,\n y_max: 322,\n ha: 659,\n o: 'm 312 151 b 330 176 323 156 330 166 l 330 278 b 320 289 330 285 327 289 b 312 288 318 289 315 289 b 200 246 312 288 203 248 b 181 275 187 246 181 264 l 181 448 b 163 464 181 456 173 464 b 138 441 140 464 138 452 l 138 253 b 122 215 137 240 132 225 b 17 177 92 203 45 177 b 0 153 7 173 0 163 l 0 50 b 10 39 0 43 4 39 b 17 40 13 39 14 39 l 128 81 b 138 52 138 81 138 63 l 138 -91 b 124 -124 138 -107 132 -120 b 17 -167 115 -127 17 -167 b 0 -192 7 -171 0 -181 l 0 -294 b 10 -305 0 -301 4 -305 b 17 -304 13 -305 14 -305 b 128 -261 17 -304 117 -264 l 130 -259 b 138 -276 137 -259 138 -268 l 138 -469 b 157 -485 138 -478 147 -485 b 181 -462 179 -485 181 -475 l 181 -262 b 183 -252 181 -258 181 -255 b 197 -232 186 -243 190 -235 b 312 -187 207 -228 312 -187 b 330 -163 323 -183 330 -173 l 330 -60 b 320 -49 330 -53 327 -49 b 312 -50 318 -49 315 -49 l 200 -94 b 193 -95 197 -95 194 -95 b 181 -68 183 -95 181 -85 l 181 66 b 200 108 181 92 189 104 z',\n },\n accidentalKucukMucennebSharp: {\n x_min: -1,\n x_max: 339,\n y_min: -338,\n y_max: 321,\n ha: 659,\n o: 'm 264 92 b 271 102 264 98 265 99 l 395 150 b 412 174 405 154 412 164 l 412 276 b 402 288 412 284 409 288 b 395 287 400 288 397 288 b 282 245 395 287 285 246 b 264 274 269 245 264 262 l 264 446 b 245 462 264 455 255 462 b 220 439 222 462 220 451 l 220 252 b 204 213 219 239 215 223 b 99 176 174 202 127 176 b 82 151 89 171 82 161 l 82 49 b 92 37 82 42 86 37 b 99 39 95 37 96 37 l 210 79 b 216 81 212 81 215 81 b 220 78 219 81 220 79 l 220 56 b 216 46 220 52 220 48 b 16 -29 210 45 16 -29 b -1 -45 4 -32 -1 -36 l -1 -138 b 12 -154 -1 -145 3 -154 l 215 -79 b 220 -84 219 -79 220 -81 l 220 -105 b 210 -122 220 -115 219 -120 b 99 -168 202 -127 99 -168 b 82 -193 89 -173 82 -183 l 82 -295 b 92 -307 82 -302 86 -307 b 99 -305 95 -307 96 -307 b 210 -262 99 -305 199 -265 l 212 -261 b 220 -278 219 -261 220 -269 l 220 -471 b 239 -487 220 -480 229 -487 b 264 -464 261 -487 264 -477 l 264 -264 b 265 -253 264 -259 264 -256 b 279 -233 268 -245 272 -236 b 395 -189 289 -229 395 -189 b 412 -164 405 -184 412 -174 l 412 -62 b 402 -50 412 -55 409 -50 b 395 -52 400 -50 397 -50 l 278 -96 b 264 -86 268 -96 264 -94 l 264 -68 b 269 -59 264 -62 265 -60 b 471 17 274 -58 471 17 b 488 36 484 22 488 27 l 488 127 b 475 144 488 134 487 144 l 472 141 b 471 141 472 141 471 141 l 471 143 b 272 68 471 143 282 71 l 269 66 b 264 71 264 66 264 69 z',\n },\n accidentalKoron: {\n x_min: 0,\n x_max: 300,\n y_min: -472,\n y_max: 157,\n ha: 629,\n o: 'm 432 -4 b 415 10 432 1 418 9 l 4 226 b 0 223 1 226 0 225 l 0 -672 b 7 -680 0 -677 3 -680 l 45 -680 b 52 -672 49 -680 52 -677 l 52 -193 l 415 -22 b 432 -4 418 -20 432 -13 z m 52 -137 l 52 144 l 327 -7 z',\n },\n accidentalSori: {\n x_min: 0,\n x_max: 421,\n y_min: -318,\n y_max: 328,\n ha: 646,\n o: 'm 606 10 b 589 23 606 16 592 22 l 382 109 l 382 465 b 374 472 382 469 379 472 l 337 472 b 330 465 333 472 330 469 l 330 132 l 183 194 l 183 425 b 176 432 183 429 180 432 l 138 432 b 131 425 134 432 131 429 l 131 216 l 3 269 b 0 265 0 269 0 266 l 0 223 b 3 213 0 216 0 215 l 131 160 l 131 -150 l 3 -203 b 0 -212 0 -204 0 -206 l 0 -255 b 3 -259 0 -258 1 -259 l 131 -204 l 131 -451 b 138 -458 131 -455 134 -458 l 176 -458 b 183 -451 180 -458 183 -455 l 183 -183 l 330 -120 l 330 -410 b 337 -418 330 -415 333 -418 l 374 -418 b 382 -410 379 -418 382 -415 l 382 -98 l 589 -9 b 606 10 592 -9 606 0 z m 183 -128 l 183 138 l 330 76 l 330 -66 z m 382 -45 l 382 55 l 501 6 z',\n },\n articAccentAbove: {\n x_min: 0,\n x_max: 339,\n y_min: 1,\n y_max: 245,\n ha: 244,\n o: 'm 469 151 b 488 177 488 156 488 166 b 469 203 488 189 488 197 l 37 350 b 24 353 32 351 26 353 b 3 333 12 353 7 344 b 0 318 1 327 0 323 b 20 298 0 311 4 304 b 346 187 20 298 331 193 b 356 177 353 186 356 181 b 344 167 356 173 353 170 b 20 58 328 163 20 58 b 0 36 4 50 0 43 b 3 23 0 32 1 27 b 23 1 7 13 13 1 b 29 3 24 1 27 1 z',\n },\n articAccentBelow: {\n x_min: 0,\n x_max: 339,\n y_min: -244,\n y_max: 0,\n ha: 244,\n o: 'm 469 -202 b 488 -176 488 -197 488 -187 b 469 -150 488 -164 488 -156 l 37 -3 b 24 0 32 -1 26 0 b 3 -20 12 0 7 -9 b 0 -35 1 -26 0 -30 b 20 -55 0 -42 4 -49 b 346 -166 20 -55 331 -160 b 356 -176 353 -167 356 -171 b 344 -186 356 -180 353 -183 b 20 -295 328 -190 20 -295 b 0 -317 4 -302 0 -310 b 3 -330 0 -321 1 -325 b 23 -351 7 -340 13 -351 b 29 -350 24 -351 27 -351 z',\n },\n articTenutoAbove: {\n x_min: -1,\n x_max: 338,\n y_min: 0,\n y_max: 48,\n ha: 48,\n o: 'm 452 0 b 487 35 485 0 487 16 b 452 69 487 53 487 69 l 33 69 b -1 35 -1 69 -1 53 b 33 0 -1 16 -1 0 z',\n },\n articTenutoBelow: {\n x_min: -1,\n x_max: 338,\n y_min: -48,\n y_max: 0,\n ha: 48,\n o: 'm 452 -69 b 487 -35 485 -69 487 -53 b 452 0 487 -16 487 0 l 33 0 b -1 -35 -1 0 -1 -16 b 33 -69 -1 -53 -1 -69 z',\n },\n articStaccatoAbove: {\n x_min: 0,\n x_max: 84,\n y_min: 0,\n y_max: 84,\n ha: 84,\n o: 'm 121 60 b 60 121 121 94 94 121 b 0 60 27 121 0 94 b 60 0 0 27 27 0 b 121 60 94 0 121 27 z',\n },\n articStaccatoBelow: {\n x_min: 0,\n x_max: 84,\n y_min: -84,\n y_max: 0,\n ha: 84,\n o: 'm 121 -60 b 60 0 121 -27 94 0 b 0 -60 27 0 0 -27 b 60 -121 0 -94 27 -121 b 121 -60 94 -121 121 -94 z',\n },\n articStaccatissimoAbove: {\n x_min: 1,\n x_max: 100,\n y_min: -2,\n y_max: 293,\n ha: 295,\n o: 'm 72 422 b 1 390 35 422 3 409 b 72 -3 1 369 39 -3 b 144 389 108 -3 144 356 b 72 422 144 410 111 422 z',\n },\n articStaccatissimoBelow: {\n x_min: 1,\n x_max: 100,\n y_min: -295,\n y_max: 0,\n ha: 295,\n o: 'm 72 -425 b 144 -392 111 -425 144 -413 b 72 0 144 -359 108 0 b 1 -393 39 0 1 -372 b 72 -425 3 -412 35 -425 z',\n },\n articMarcatoAbove: {\n x_min: -1,\n x_max: 235,\n y_min: -1,\n y_max: 253,\n ha: 254,\n o: 'm 181 356 b 167 364 177 361 173 364 b 153 356 157 364 153 356 l 0 23 b -1 16 -1 20 -1 19 b 9 0 -1 9 1 1 b 16 -1 10 -1 14 -1 b 32 9 22 -1 29 1 b 112 186 32 9 109 180 b 118 190 114 189 115 190 b 127 186 121 190 124 189 b 209 9 128 180 209 9 b 225 0 213 3 219 0 l 323 0 b 338 16 333 1 338 7 b 337 23 338 19 338 22 z',\n },\n articMarcatoBelow: {\n x_min: -1,\n x_max: 235,\n y_min: -254,\n y_max: 0,\n ha: 254,\n o: 'm 156 -357 b 170 -366 160 -363 164 -366 b 184 -357 180 -366 184 -357 l 337 -24 b 338 -17 338 -22 338 -20 b 328 -1 338 -10 336 -3 b 321 0 327 0 323 0 b 305 -10 315 0 308 -3 b 225 -187 305 -10 228 -181 b 219 -192 223 -190 222 -192 b 210 -187 216 -192 213 -190 b 128 -10 209 -181 128 -10 b 112 -1 124 -4 118 -1 l 14 -1 b -1 -17 4 -3 -1 -9 b 0 -24 -1 -20 -1 -23 z',\n },\n fermataAbove: {\n x_min: 3,\n x_max: 605,\n y_min: -3,\n y_max: 329,\n ha: 332,\n o: 'm 435 318 b 818 36 742 318 804 91 b 821 26 819 32 819 27 b 851 -4 831 6 837 -4 b 871 16 864 -4 871 1 b 870 30 871 20 871 24 b 438 474 780 471 480 474 b 6 30 392 474 94 471 b 4 14 4 24 4 19 b 23 -4 4 0 12 -4 b 52 26 36 -4 43 6 b 56 39 53 27 55 33 b 435 318 73 98 138 318 z m 516 75 b 436 153 516 117 480 153 b 359 75 395 153 359 117 b 436 -4 359 32 395 -4 b 516 75 480 -4 516 32 z',\n },\n fermataBelow: {\n x_min: 3,\n x_max: 605,\n y_min: -332,\n y_max: 0,\n ha: 332,\n o: 'm 435 -323 b 56 -43 138 -323 73 -102 b 52 -30 55 -37 53 -32 b 23 0 43 -10 36 0 b 4 -19 12 0 4 -4 b 6 -35 4 -23 4 -29 b 438 -478 94 -475 392 -478 b 870 -35 480 -478 780 -475 b 871 -20 871 -29 871 -24 b 851 0 871 -6 864 0 b 821 -30 837 0 831 -10 b 818 -40 819 -32 819 -36 b 435 -323 804 -95 742 -323 z m 516 -79 b 436 0 516 -36 480 0 b 359 -79 395 0 359 -36 b 436 -157 359 -121 395 -157 b 516 -79 480 -157 516 -121 z',\n },\n fermataLongAbove: {\n x_min: 0,\n x_max: 603,\n y_min: -1,\n y_max: 333,\n ha: 334,\n o: 'm 72 480 b 0 441 32 480 0 462 l 0 19 b 35 0 0 9 16 0 b 71 19 55 0 71 9 l 71 289 b 433 315 71 307 252 315 b 798 289 615 315 798 307 l 798 19 b 832 0 798 9 814 0 b 868 19 852 0 868 9 l 868 441 b 796 480 868 462 837 480 z m 513 78 b 433 156 513 121 478 156 b 356 78 390 156 356 121 b 433 -1 356 35 390 -1 b 513 78 478 -1 513 35 z',\n },\n fermataLongBelow: {\n x_min: 0,\n x_max: 603,\n y_min: -333,\n y_max: 1,\n ha: 334,\n o: 'm 513 -78 b 433 1 513 -35 478 1 b 356 -78 390 1 356 -35 b 433 -156 356 -121 390 -156 b 513 -78 478 -156 513 -121 z m 796 -480 b 868 -441 837 -480 868 -462 l 868 -19 b 832 0 868 -9 852 0 b 798 -19 814 0 798 -9 l 798 -289 b 433 -315 798 -307 615 -315 b 71 -289 252 -315 71 -307 l 71 -19 b 35 0 71 -9 55 0 b 0 -19 16 0 0 -9 l 0 -441 b 72 -480 0 -462 32 -480 z',\n },\n fermataVeryLongAbove: {\n x_min: 0,\n x_max: 715,\n y_min: 0,\n y_max: 408,\n ha: 408,\n o: 'm 76 588 b 0 546 35 588 0 569 l 0 22 b 37 1 0 10 17 1 b 75 22 59 1 75 10 l 75 431 b 514 458 75 449 294 458 b 955 431 734 458 955 449 l 955 22 b 991 1 955 10 971 1 b 1030 22 1012 1 1030 10 l 1030 546 b 953 588 1030 569 995 588 z m 215 389 b 138 347 171 389 138 370 l 138 22 b 174 1 138 10 154 1 b 213 22 196 1 213 10 l 213 217 b 514 245 213 235 363 245 b 816 217 665 245 816 235 l 816 22 b 854 1 816 10 834 1 b 891 22 876 1 891 10 l 891 347 b 815 389 891 370 858 389 z m 606 84 b 521 167 606 130 569 167 b 439 84 475 167 439 130 b 521 0 439 39 475 0 b 606 84 569 0 606 39 z',\n },\n fermataVeryLongBelow: {\n x_min: 0,\n x_max: 715,\n y_min: -408,\n y_max: 0,\n ha: 408,\n o: 'm 606 -84 b 521 0 606 -39 569 0 b 439 -84 475 0 439 -39 b 521 -167 439 -130 475 -167 b 606 -84 569 -167 606 -130 z m 815 -389 b 891 -347 858 -389 891 -370 l 891 -22 b 854 -1 891 -10 876 -1 b 816 -22 834 -1 816 -10 l 816 -217 b 514 -245 816 -235 665 -245 b 213 -217 363 -245 213 -235 l 213 -22 b 174 -1 213 -10 196 -1 b 138 -22 154 -1 138 -10 l 138 -347 b 215 -389 138 -370 171 -389 z m 953 -588 b 1030 -546 995 -588 1030 -569 l 1030 -22 b 991 -1 1030 -10 1012 -1 b 955 -22 971 -1 955 -10 l 955 -431 b 514 -458 955 -449 734 -458 b 75 -431 294 -458 75 -449 l 75 -22 b 37 -1 75 -10 59 -1 b 0 -22 17 -1 0 -10 l 0 -546 b 76 -588 0 -569 35 -588 z',\n },\n fermataShortAbove: {\n x_min: 0,\n x_max: 604,\n y_min: 0,\n y_max: 341,\n ha: 341,\n o: 'm 78 0 b 88 6 81 0 82 3 b 435 328 134 45 412 328 b 783 3 458 328 742 39 b 793 0 786 1 793 0 l 865 0 b 870 4 865 0 870 1 b 867 10 870 6 868 9 b 435 491 805 69 474 491 b 3 10 397 491 69 75 b 0 4 1 9 0 6 b 4 0 0 1 4 0 z m 513 94 b 433 171 513 135 477 171 b 354 94 390 171 354 135 b 433 13 354 49 390 13 b 513 94 477 13 513 49 z',\n },\n fermataShortBelow: {\n x_min: 0,\n x_max: 604,\n y_min: -341,\n y_max: 0,\n ha: 341,\n o: 'm 4 0 b 0 -4 4 0 0 -1 b 3 -10 0 -6 1 -9 b 435 -491 69 -75 397 -491 b 867 -10 474 -491 805 -69 b 870 -4 868 -9 870 -6 b 865 0 870 -1 865 0 l 793 0 b 783 -3 793 0 786 -1 b 435 -328 742 -39 458 -328 b 88 -6 412 -328 134 -45 b 78 0 82 -3 81 0 z m 513 -94 b 433 -13 513 -49 477 -13 b 354 -94 390 -13 354 -49 b 433 -171 354 -135 390 -171 b 513 -94 477 -171 513 -135 z',\n },\n breathMarkComma: {\n x_min: 1,\n x_max: 152,\n y_min: 2,\n y_max: 251,\n ha: 249,\n o: 'm 104 361 b 1 271 42 361 1 321 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 17 32 29 26 26 l 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 z',\n },\n breathMarkUpbow: {\n x_min: 1,\n x_max: 249,\n y_min: 1,\n y_max: 495,\n ha: 494,\n o: 'm 181 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 z',\n },\n caesura: {\n x_min: 0,\n x_max: 384,\n y_min: -1,\n y_max: 532,\n ha: 533,\n o: 'm 40 -1 b 78 26 58 -1 72 9 l 321 713 b 323 726 323 717 323 721 b 282 766 323 747 304 766 b 245 739 265 766 251 756 l 3 52 b 0 37 1 48 0 42 b 27 1 0 22 10 7 b 40 -1 32 -1 36 -1 z m 308 26 l 552 713 b 553 726 553 717 553 721 b 513 766 553 747 534 766 b 475 739 495 766 481 756 l 232 52 b 230 39 230 48 230 43 b 258 1 230 23 240 7 b 271 -1 262 -1 266 -1 b 308 26 287 -1 302 9 z',\n },\n caesuraCurved: {\n x_min: 0,\n x_max: 373,\n y_min: 0,\n y_max: 530,\n ha: 530,\n o: 'm 491 763 b 445 719 468 763 446 744 b 252 98 432 507 340 295 l 226 39 b 223 27 225 35 223 32 b 252 0 223 13 233 0 b 276 16 262 0 272 6 b 537 716 386 230 537 478 b 491 763 537 742 518 763 z m 29 0 b 53 16 39 0 48 6 l 82 69 b 314 716 187 264 314 498 b 268 763 314 742 295 763 b 222 719 245 763 223 744 b 29 98 209 507 117 295 l 3 39 b 0 29 1 36 0 33 b 29 0 0 14 12 0 z',\n },\n restMaxima: {\n x_min: 0,\n x_max: 381,\n y_min: -249,\n y_max: 250,\n ha: 499,\n o: 'm 180 -330 l 180 331 b 156 360 180 356 170 360 l 23 360 b 0 331 10 360 0 356 l 0 -330 b 23 -359 0 -354 10 -359 l 156 -359 b 180 -330 170 -359 180 -354 z m 549 -330 l 549 331 b 524 360 549 356 539 360 l 392 360 b 369 331 379 360 369 356 l 369 -330 b 392 -359 369 -354 379 -359 l 524 -359 b 549 -330 539 -359 549 -354 z',\n },\n restDoubleWhole: {\n x_min: 0,\n x_max: 125,\n y_min: 0,\n y_max: 250,\n ha: 250,\n o: 'm 180 22 l 180 338 b 156 360 180 350 170 360 l 23 360 b 0 338 10 360 0 350 l 0 22 b 23 0 0 10 10 0 l 156 0 b 180 22 170 0 180 10 z',\n },\n restWhole: {\n x_min: 0,\n x_max: 282,\n y_min: -135,\n y_max: 9,\n ha: 144,\n o: 'm 406 -157 l 406 -24 b 369 13 406 -3 389 13 l 37 13 b 0 -24 16 13 0 -3 l 0 -157 b 37 -194 0 -177 16 -194 l 369 -194 b 406 -157 389 -194 406 -177 z',\n },\n restWholeLegerLine: {\n x_min: -117,\n x_max: 399,\n y_min: -135,\n y_max: 20,\n ha: 155,\n o: 'm -143 29 b -168 3 -157 29 -168 17 b -143 -23 -168 -12 -157 -23 l 0 -23 l 0 -157 b 37 -194 0 -177 16 -194 l 369 -194 b 406 -157 389 -194 406 -177 l 406 -24 b 549 -23 406 -23 406 -23 b 575 3 563 -23 575 -12 b 549 29 575 17 563 29 z',\n },\n restHalf: {\n x_min: 0,\n x_max: 282,\n y_min: -2,\n y_max: 142,\n ha: 144,\n o: 'm 406 35 l 406 167 b 369 204 406 189 389 204 l 37 204 b 0 167 16 204 0 189 l 0 35 b 37 -3 0 14 16 -3 l 369 -3 b 406 35 389 -3 406 14 z',\n },\n restHalfLegerLine: {\n x_min: -117,\n x_max: 399,\n y_min: -13,\n y_max: 142,\n ha: 155,\n o: 'm 549 -19 b 575 7 563 -19 575 -7 b 549 33 575 22 563 33 b 406 35 406 33 406 33 l 406 167 b 369 204 406 187 389 204 l 37 204 b 0 167 16 204 0 187 l 0 33 l -143 33 b -168 7 -157 33 -168 22 b -143 -19 -168 -7 -157 -19 z',\n },\n restQuarter: {\n x_min: 1,\n x_max: 270,\n y_min: -375,\n y_max: 373,\n ha: 748,\n o: 'm 112 -55 b 174 -141 135 -84 156 -111 b 183 -161 177 -147 183 -158 b 181 -167 183 -163 183 -166 b 166 -174 179 -173 173 -174 b 143 -170 160 -174 148 -171 b 137 -170 141 -170 138 -170 l 125 -166 b 1 -304 50 -166 1 -233 b 168 -527 1 -376 63 -446 b 206 -540 180 -536 194 -540 b 228 -531 216 -540 226 -537 b 230 -521 229 -527 230 -524 b 207 -487 230 -508 219 -497 b 170 -435 189 -487 173 -448 b 164 -397 166 -423 164 -410 b 255 -292 164 -338 194 -292 b 369 -317 297 -292 344 -308 l 370 -318 b 382 -320 376 -320 379 -320 b 389 -314 386 -320 389 -318 b 336 -232 389 -297 351 -249 b 236 -32 281 -166 236 -112 b 236 -27 236 -30 236 -29 l 238 -17 b 238 -13 238 -16 238 -14 b 333 199 243 71 295 140 b 338 220 337 206 338 213 b 333 248 338 235 333 248 b 95 526 333 248 120 501 b 69 537 88 533 78 537 b 40 507 55 537 40 527 b 46 484 40 500 42 492 b 134 291 52 468 134 395 b 48 108 134 238 112 176 b 27 66 33 94 27 78 b 42 32 27 46 42 32 z',\n },\n rest8th: {\n x_min: 0,\n x_max: 247,\n y_min: -251,\n y_max: 174,\n ha: 425,\n o: 'm 193 154 b 96 251 193 207 150 251 b 0 154 43 251 0 207 b 39 81 0 124 17 98 b 117 56 62 65 89 56 b 173 66 137 56 157 60 b 225 88 193 72 206 78 b 232 89 228 89 230 89 b 239 76 238 89 239 84 b 238 60 239 72 239 66 b 104 -343 233 39 130 -248 b 145 -361 104 -360 137 -361 b 196 -347 161 -361 181 -359 b 341 161 200 -344 341 161 b 356 217 347 187 354 210 b 338 240 356 232 341 239 b 323 235 336 240 331 240 b 193 140 312 226 240 140 z',\n },\n rest16th: {\n x_min: 0,\n x_max: 320,\n y_min: -500,\n y_max: 179,\n ha: 679,\n o: 'm 300 160 b 202 258 300 215 256 258 b 104 160 148 258 104 215 b 219 62 104 101 164 62 b 331 94 258 62 298 75 b 341 96 336 95 338 96 b 348 86 346 96 348 94 b 265 -173 348 63 275 -151 b 194 -217 253 -200 215 -217 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 151 -105 b 0 -203 43 -105 0 -148 b 115 -301 0 -262 60 -301 b 223 -271 153 -301 190 -288 b 229 -279 226 -271 229 -274 l 228 -281 b 228 -282 228 -282 228 -282 l 91 -690 b 91 -691 91 -690 91 -691 l 89 -693 b 134 -720 89 -706 102 -720 b 189 -687 176 -720 183 -703 l 356 -138 b 420 81 393 -16 420 81 b 459 226 420 81 456 207 b 461 232 459 229 461 230 b 446 248 461 240 449 246 b 431 242 439 248 435 245 b 300 145 420 233 348 147 z',\n },\n rest32nd: {\n x_min: 0,\n x_max: 363,\n y_min: -500,\n y_max: 426,\n ha: 926,\n o: 'm 508 603 b 492 598 501 603 497 600 b 361 503 482 590 410 503 l 361 516 b 264 613 361 570 318 613 b 166 516 210 613 166 570 b 206 444 166 487 183 461 b 246 423 217 433 232 428 b 284 418 258 420 269 418 b 393 449 321 418 360 432 b 399 451 395 451 397 451 b 415 426 409 451 415 436 l 413 423 b 413 422 413 423 413 422 l 357 192 b 279 140 350 168 302 140 b 281 153 281 144 281 148 b 183 251 281 207 236 251 b 85 153 128 251 85 207 b 125 81 85 124 102 98 b 164 60 137 71 150 65 b 203 55 176 58 189 55 b 311 86 240 55 278 69 b 315 88 312 88 314 88 b 325 69 323 88 325 76 l 268 -167 b 194 -217 261 -197 216 -216 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 153 -105 b 0 -203 45 -105 0 -148 b 115 -301 0 -262 60 -301 b 228 -269 154 -301 194 -288 b 232 -268 229 -268 230 -268 b 240 -276 236 -268 240 -272 b 138 -688 240 -282 141 -678 b 137 -697 137 -691 137 -694 b 176 -720 137 -708 145 -720 b 232 -690 222 -720 226 -706 b 484 436 236 -672 484 436 b 521 582 484 436 518 564 b 523 588 521 585 523 586 b 508 603 523 600 511 603 z',\n },\n rest64th: {\n x_min: 0,\n x_max: 423,\n y_min: -753,\n y_max: 430,\n ha: 1183,\n o: 'm 596 609 b 580 603 589 609 585 606 b 448 507 569 595 497 507 b 449 521 449 511 449 516 b 351 619 449 575 405 619 b 253 521 297 619 253 575 b 372 422 253 461 317 422 b 481 454 410 422 446 438 b 491 456 484 455 488 456 b 504 441 498 456 504 451 b 501 426 504 436 503 432 b 445 202 500 422 451 217 b 359 144 435 174 383 144 l 359 158 b 261 256 359 212 315 256 b 163 158 207 256 163 212 b 243 65 163 112 202 78 b 279 60 255 62 266 60 b 397 91 320 60 360 73 b 403 92 400 92 402 92 b 412 79 409 92 412 86 b 410 72 412 76 412 75 b 351 -161 408 59 356 -150 b 281 -212 340 -199 301 -212 l 281 -197 b 183 -99 281 -144 238 -99 b 85 -197 130 -99 85 -144 b 125 -271 85 -228 102 -253 b 166 -291 138 -279 151 -287 b 204 -297 177 -294 192 -297 b 262 -287 225 -297 245 -292 b 305 -265 282 -279 287 -274 b 310 -264 307 -264 308 -264 b 318 -284 317 -264 318 -275 b 317 -295 318 -288 317 -294 b 259 -524 315 -302 265 -508 b 194 -567 251 -554 213 -567 b 196 -554 196 -563 196 -559 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 b 40 -626 0 -583 17 -609 b 118 -652 60 -644 92 -652 b 210 -629 145 -652 186 -642 b 216 -628 213 -628 215 -628 b 228 -647 226 -628 228 -639 l 226 -651 b 226 -652 226 -651 226 -652 l 122 -1054 b 121 -1064 121 -1058 121 -1061 b 167 -1084 121 -1077 134 -1084 b 215 -1060 202 -1084 209 -1076 b 402 -278 217 -1047 229 -1021 b 436 -135 403 -278 431 -161 l 570 441 b 609 588 570 441 605 569 b 596 609 609 603 602 608 z',\n },\n rest128th: {\n x_min: 0,\n x_max: 485,\n y_min: -750,\n y_max: 689,\n ha: 1439,\n o: 'm 537 894 b 439 992 537 949 494 992 b 341 894 386 992 341 949 b 382 822 341 865 359 840 b 459 796 402 805 433 796 b 518 806 480 796 501 801 l 520 808 b 569 828 539 814 552 819 b 580 831 572 829 577 831 b 598 812 589 831 598 825 b 596 801 598 809 598 805 b 540 575 590 773 546 595 b 448 510 534 553 475 510 l 448 524 b 350 622 448 577 405 622 b 252 524 297 622 252 577 b 292 451 252 494 269 468 b 369 426 318 433 337 426 b 429 435 389 426 412 429 b 494 464 449 442 475 455 b 498 465 495 465 497 465 b 505 446 504 465 505 456 b 503 426 505 439 504 432 l 446 202 b 366 144 439 173 389 144 l 366 158 b 268 256 366 212 323 256 b 170 158 215 256 170 212 b 289 59 170 98 235 59 b 347 69 310 59 330 63 b 397 91 367 76 379 82 b 406 94 400 92 403 94 b 415 79 412 94 415 88 b 412 63 415 75 413 69 b 357 -157 408 42 364 -134 b 281 -212 346 -196 302 -212 b 282 -197 281 -207 282 -203 b 184 -99 282 -144 238 -99 b 86 -197 130 -99 86 -144 b 204 -297 86 -258 150 -297 b 262 -287 225 -297 245 -292 b 312 -265 282 -279 294 -274 b 318 -264 314 -264 317 -264 b 327 -275 324 -264 327 -269 b 266 -517 324 -287 278 -490 b 200 -569 248 -566 220 -567 l 196 -554 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 b 118 -652 0 -615 63 -652 b 177 -642 138 -652 160 -648 l 179 -641 b 229 -621 197 -635 210 -629 l 230 -619 b 239 -626 236 -619 239 -622 b 238 -632 239 -628 239 -631 b 131 -1057 235 -642 134 -1050 b 173 -1080 131 -1071 140 -1080 b 230 -1057 219 -1080 225 -1074 l 658 815 b 697 960 658 815 694 942 b 698 966 697 963 698 965 b 684 982 698 975 687 981 b 668 976 677 982 672 979 b 537 880 658 969 586 881 z',\n },\n dynamicPiano: {\n x_min: -89,\n x_max: 366,\n y_min: -142,\n y_max: 274,\n ha: 416,\n o: 'm 395 395 b 292 357 350 395 318 380 b 262 328 272 340 268 328 b 246 363 255 328 259 338 b 177 393 236 380 215 393 b 1 251 92 393 46 333 b -9 223 -6 238 -9 230 b 7 207 -9 213 -1 207 b 30 229 17 207 23 216 b 127 338 72 301 101 338 b 143 321 138 338 143 331 b 134 285 143 310 138 295 l -43 -154 b -65 -168 -48 -166 -50 -168 l -109 -168 b -128 -187 -122 -168 -128 -174 b -111 -204 -128 -199 -122 -204 l 167 -204 b 186 -186 180 -204 186 -199 b 168 -168 186 -174 180 -168 l 111 -168 b 98 -164 102 -168 98 -168 b 101 -154 98 -163 99 -158 l 166 7 b 179 24 168 14 171 24 b 213 -1 186 24 190 10 b 276 -14 233 -12 252 -14 b 527 266 415 -14 527 130 b 395 395 527 350 475 395 z m 356 341 b 389 288 380 341 389 320 b 243 35 389 217 312 35 b 207 81 219 35 207 50 b 235 180 207 111 219 140 l 264 251 b 356 341 284 300 321 341 z',\n },\n dynamicMezzo: {\n x_min: -20,\n x_max: 446,\n y_min: -10,\n y_max: 274,\n ha: 284,\n o: 'm 528 395 b 431 350 487 395 454 374 b 409 330 416 336 415 330 b 397 360 402 330 406 341 b 334 395 389 379 370 395 b 236 350 292 395 259 374 b 215 330 222 336 220 330 b 203 360 207 330 212 340 b 147 393 194 379 174 393 b -19 251 71 393 26 331 b -29 223 -26 238 -29 230 b -13 207 -29 213 -22 207 b 9 226 -3 207 1 215 b 107 338 52 300 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 287 323 225 292 255 323 b 308 302 304 323 308 314 b 294 249 308 285 302 269 b 203 24 294 248 292 248 b 199 9 200 17 199 13 b 215 0 199 3 203 0 l 285 0 b 308 17 298 0 302 3 l 402 251 b 481 323 419 292 449 323 b 503 302 498 323 503 314 b 413 43 503 252 413 104 b 478 -14 413 6 436 -14 b 629 102 533 -14 583 26 b 642 132 638 117 642 125 b 629 145 642 141 636 145 b 608 127 619 145 615 138 b 534 49 580 84 553 49 b 523 62 526 49 523 53 b 606 317 523 112 606 238 b 528 395 606 353 588 395 z',\n },\n dynamicForte: {\n x_min: -141,\n x_max: 364,\n y_min: -152,\n y_max: 444,\n ha: 596,\n o: 'm 23 380 b 0 357 7 380 0 373 b 22 336 0 343 7 336 l 105 336 b 117 330 114 336 117 336 b 114 315 117 327 115 323 l 23 0 b -101 -187 -17 -141 -43 -187 b -127 -174 -120 -187 -127 -181 b -92 -156 -127 -163 -114 -170 b -63 -102 -75 -144 -63 -125 b -128 -43 -63 -65 -89 -43 b -203 -122 -171 -43 -203 -78 b -95 -219 -203 -186 -156 -219 b 161 17 14 -219 82 -145 b 269 317 203 105 235 194 l 271 318 b 289 336 271 323 282 336 l 383 336 b 406 359 399 336 406 343 b 384 380 406 373 399 380 l 298 380 b 284 387 288 380 284 380 b 287 405 284 392 285 396 b 419 606 315 530 347 606 b 442 595 431 606 442 603 b 419 580 442 586 435 588 b 389 526 400 572 389 552 b 454 465 389 485 418 465 b 524 543 491 465 524 490 b 400 639 524 596 491 639 b 135 402 261 639 183 540 b 107 380 128 380 127 380 z',\n },\n dynamicRinforzando: {\n x_min: -20,\n x_max: 277,\n y_min: 0,\n y_max: 274,\n ha: 274,\n o: 'm 324 395 b 235 350 287 395 256 374 b 215 330 222 336 220 330 b 203 360 207 330 213 337 b 145 393 194 379 174 393 b -19 251 75 393 27 337 b -29 223 -26 238 -29 230 b -13 207 -29 213 -22 207 b 9 226 -3 207 3 215 b 107 338 52 301 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 304 351 226 298 272 351 b 318 343 312 351 318 348 b 287 285 318 330 287 325 b 338 239 287 256 308 239 b 399 318 373 239 399 268 b 324 395 399 360 377 395 z',\n },\n dynamicSforzando: {\n x_min: 0,\n x_max: 229,\n y_min: -10,\n y_max: 273,\n ha: 283,\n o: 'm 212 393 b 68 274 127 393 68 350 b 145 161 68 223 95 196 b 200 85 187 132 200 114 b 127 20 200 53 173 20 b 66 42 91 20 66 32 b 91 56 66 49 75 46 b 111 98 104 65 111 79 b 59 145 111 127 86 145 b 0 78 24 145 0 117 b 125 -14 0 30 49 -14 b 291 120 219 -14 291 36 b 220 232 291 160 276 190 b 151 314 168 271 151 287 b 213 361 151 337 168 361 b 258 346 238 361 258 356 b 240 333 258 340 251 340 b 226 298 232 325 226 314 b 276 252 226 269 248 252 b 330 307 311 252 330 279 b 212 393 330 360 285 393 z',\n },\n dynamicZ: {\n x_min: -30,\n x_max: 244,\n y_min: -10,\n y_max: 268,\n ha: 278,\n o: 'm 333 386 b 298 377 321 386 314 382 b 239 370 282 373 259 370 b 94 383 153 370 111 383 b 68 364 79 383 72 377 l 33 264 b 29 242 30 255 29 248 b 45 228 29 232 36 228 b 66 249 55 228 60 236 l 81 279 b 96 297 85 288 88 297 b 168 292 102 297 127 292 b 223 302 194 292 215 302 b 196 269 229 302 197 271 l -26 45 b -43 16 -37 33 -43 27 b -24 -1 -43 6 -36 -1 b 4 16 -12 -1 -3 10 b 39 30 16 24 27 30 b 179 -14 79 30 108 -14 b 297 102 259 -14 297 43 b 245 166 297 147 271 166 b 197 115 219 166 197 145 b 236 72 197 88 216 72 b 259 79 251 72 255 79 b 264 75 262 79 264 78 b 258 60 264 72 261 66 b 229 45 252 50 242 45 b 117 95 186 45 173 95 b 85 86 98 95 89 86 b 102 111 85 86 95 104 l 333 338 b 351 370 344 350 351 359 b 333 386 351 380 343 386 z',\n },\n ornamentTrill: {\n x_min: 0,\n x_max: 521,\n y_min: -10,\n y_max: 390,\n ha: 400,\n o: 'm 383 562 b 364 557 377 562 369 559 l 294 534 b 269 511 281 530 275 526 l 217 384 b 206 367 212 370 210 367 b 179 380 200 367 192 374 b 118 393 158 389 140 393 b 0 292 50 393 0 353 b 95 210 0 248 30 210 b 140 213 112 210 131 213 b 144 209 143 213 144 212 b 140 194 144 206 143 202 l 124 156 b 96 58 108 117 96 88 b 179 -14 96 17 124 -14 b 325 153 253 -14 325 46 b 307 251 325 187 320 219 b 302 265 304 258 302 261 b 334 294 302 274 311 281 l 343 298 b 455 348 393 328 428 348 b 474 327 468 348 474 344 b 465 285 474 312 469 295 l 360 24 b 356 9 357 17 356 13 b 372 0 356 3 360 0 l 442 0 b 465 17 455 0 459 3 l 559 251 b 655 351 577 298 624 351 b 670 343 664 351 670 348 b 638 285 670 330 638 325 b 690 239 638 256 660 239 b 750 318 724 239 750 268 b 675 395 750 360 729 395 b 586 350 638 395 608 374 b 566 330 573 336 572 330 b 553 361 559 330 564 340 b 490 393 543 380 521 393 b 347 348 432 393 377 364 b 312 333 328 338 320 333 b 308 337 310 333 308 334 b 315 359 308 343 312 351 l 387 537 b 392 553 390 544 392 549 b 383 562 392 559 389 562 z m 118 360 b 192 325 134 360 192 347 b 186 307 192 321 189 314 l 180 292 b 148 265 173 274 167 269 b 98 258 130 261 112 258 b 39 301 50 258 39 281 b 118 360 39 327 60 360 z m 272 240 b 292 151 285 240 292 164 b 212 30 292 88 253 30 b 196 48 200 30 196 37 b 207 92 196 59 202 78 b 264 230 207 94 209 94 b 272 240 266 238 268 240 z',\n },\n ornamentTurn: {\n x_min: 0,\n x_max: 460,\n y_min: 0,\n y_max: 218,\n ha: 218,\n o: 'm 534 314 b 454 251 490 314 454 294 b 505 199 454 219 475 199 b 579 232 547 199 549 232 b 626 164 603 232 626 202 b 533 72 626 102 583 72 b 377 180 487 72 439 111 b 150 312 307 258 243 312 b 0 148 55 312 0 240 b 128 0 0 45 66 0 b 209 63 173 0 209 20 b 157 115 209 95 187 115 b 84 82 115 115 114 82 b 36 150 59 82 36 112 b 130 242 36 212 79 242 b 285 134 176 242 223 203 b 513 1 356 56 419 1 b 662 166 608 1 662 73 b 534 314 662 269 596 314 z',\n },\n ornamentTurnSlash: {\n x_min: 0,\n x_max: 460,\n y_min: -90,\n y_max: 306,\n ha: 396,\n o: 'm 333 441 b 310 418 315 441 310 433 l 310 274 b 302 252 310 258 308 252 b 261 278 294 252 287 262 b 150 311 228 298 192 311 b 0 147 55 311 0 239 b 128 -1 0 43 66 -1 b 209 62 173 -1 209 19 b 157 114 209 94 187 114 b 84 81 115 114 114 81 b 36 148 59 81 36 111 b 130 240 36 210 79 240 b 285 128 176 240 222 197 b 307 79 304 108 307 105 l 307 -107 b 330 -130 307 -122 312 -130 b 353 -107 347 -130 353 -122 l 353 37 b 360 59 353 53 353 59 b 402 33 369 59 376 49 b 513 0 435 13 471 0 b 662 164 608 0 662 72 b 534 312 662 268 596 312 b 454 249 490 312 454 292 b 505 197 454 217 475 197 b 579 230 547 197 549 230 b 626 163 603 230 626 200 b 533 71 626 101 583 71 b 377 183 487 71 441 114 b 356 232 359 203 356 206 l 356 418 b 333 441 356 433 350 441 z',\n },\n ornamentMordent: {\n x_min: 1,\n x_max: 729,\n y_min: -73,\n y_max: 319,\n ha: 392,\n o: 'm 546 265 l 546 459 l 501 459 l 501 216 l 459 167 b 439 167 454 160 445 160 b 302 327 387 228 310 317 b 258 353 291 338 282 351 b 226 340 245 353 238 348 l 20 107 b 1 73 12 98 1 84 b 30 59 1 65 9 59 b 88 94 53 59 73 79 b 144 143 107 109 124 127 b 176 161 158 154 168 161 b 197 144 183 161 189 156 l 323 10 b 351 0 328 3 340 0 b 377 9 361 0 372 3 b 498 114 392 17 475 94 l 498 -105 l 544 -105 l 544 153 b 562 160 550 157 556 160 b 585 144 569 160 576 156 b 710 10 590 135 697 24 b 737 0 716 3 727 0 b 765 9 749 0 759 3 b 1030 295 776 17 1011 274 l 1032 300 b 1050 328 1041 308 1050 318 b 1012 353 1050 343 1024 353 b 986 343 1002 353 994 348 b 854 190 971 330 871 206 b 828 176 842 180 835 176 b 802 190 818 176 809 183 b 681 333 791 202 696 320 b 645 353 668 344 657 353 b 613 340 634 353 626 350 b 580 304 600 330 590 315 z',\n },\n ornamentShortTrill: {\n x_min: 0,\n x_max: 725,\n y_min: 0,\n y_max: 245,\n ha: 245,\n o: 'm 429 167 l 301 325 b 256 353 291 338 282 350 b 225 340 246 353 238 350 b 16 105 158 268 88 186 b 0 72 9 96 0 86 b 29 58 0 63 7 58 b 71 76 42 58 55 62 l 158 154 b 174 160 163 158 168 160 b 197 143 181 160 187 154 b 321 10 203 135 310 24 b 350 0 327 3 338 0 b 377 7 361 0 372 3 l 533 148 b 554 160 543 158 550 160 b 577 143 562 160 566 156 b 703 10 585 135 690 24 b 732 0 708 3 720 0 b 759 7 743 0 753 3 b 1024 294 769 16 1005 272 b 1044 327 1032 305 1044 321 b 1005 353 1044 341 1018 353 b 979 343 996 353 988 348 b 848 189 963 330 864 204 b 821 174 837 179 828 174 b 796 189 811 174 804 181 b 674 331 783 202 688 318 b 641 351 662 343 651 351 b 606 340 628 351 619 350 b 573 304 593 328 583 315 b 444 167 533 259 491 213 b 429 167 439 161 433 161 z',\n },\n ornamentTremblement: {\n x_min: 1,\n x_max: 985,\n y_min: 0,\n y_max: 244,\n ha: 244,\n o: 'm 678 325 b 634 351 667 338 657 350 b 602 338 621 351 613 348 l 448 167 b 439 167 446 164 441 164 l 302 325 b 258 351 291 338 281 350 b 228 338 245 351 238 348 b 193 304 215 328 204 315 l 19 107 b 1 72 13 96 1 76 b 30 58 1 63 9 58 b 89 92 52 58 73 78 l 144 141 b 148 144 145 143 147 143 b 176 160 160 153 170 160 b 199 143 183 160 189 154 b 324 10 204 134 311 23 b 351 0 330 3 340 0 b 379 7 363 0 373 3 l 530 148 b 552 160 536 154 546 160 b 575 143 559 160 564 154 b 698 10 580 134 687 23 b 727 0 704 3 716 0 b 755 7 739 0 749 3 l 907 147 b 930 160 922 158 923 160 b 952 143 937 160 943 154 l 1077 10 b 1107 0 1084 3 1096 0 b 1133 7 1117 0 1128 3 b 1398 294 1143 16 1380 272 b 1418 327 1407 305 1418 321 b 1381 351 1418 343 1394 351 b 1354 341 1371 351 1362 348 b 1223 189 1338 328 1238 204 b 1195 174 1211 179 1202 174 b 1171 189 1185 174 1178 181 b 1048 331 1158 200 1063 318 b 1012 351 1035 343 1024 351 b 981 338 1002 351 994 350 b 948 304 968 328 958 315 b 827 166 907 258 865 212 b 815 166 824 163 818 163 b 678 325 760 226 732 264 z',\n },\n ornamentPrecompAppoggTrill: {\n x_min: 0,\n x_max: 1119,\n y_min: 0,\n y_max: 481,\n ha: 481,\n o: 'm 1015 163 b 873 328 963 223 880 318 b 828 354 860 344 847 353 b 796 341 816 354 809 351 b 763 305 783 331 773 317 b 642 168 721 261 681 215 b 636 163 641 167 639 164 b 494 328 585 223 501 318 b 449 354 481 344 468 353 b 418 341 438 354 431 351 b 384 305 405 331 395 317 b 264 168 343 261 302 215 l 242 144 b 144 88 232 124 171 88 b 79 197 81 88 79 189 l 79 648 b 60 693 79 683 71 693 b 52 691 58 693 55 693 b 0 616 3 672 0 625 l 0 207 b 121 0 0 40 68 0 b 249 68 168 0 232 53 b 279 94 262 75 271 86 b 336 144 298 111 315 128 b 367 163 350 156 360 163 b 389 145 374 163 380 157 b 514 12 395 137 501 26 b 543 1 520 4 531 1 b 569 9 553 1 563 4 b 636 73 576 14 605 43 l 658 94 b 714 144 677 111 694 128 b 746 163 729 156 739 163 b 768 145 753 163 759 157 b 893 12 773 137 880 26 b 922 1 899 4 910 1 b 948 9 932 1 942 4 l 1012 71 b 1037 94 1022 78 1030 86 b 1092 144 1054 111 1073 128 b 1123 161 1106 156 1115 161 b 1146 145 1130 161 1136 157 b 1270 12 1152 137 1259 26 b 1299 1 1276 4 1287 1 b 1326 9 1310 1 1320 4 b 1591 297 1336 19 1572 275 b 1611 328 1600 307 1611 320 b 1574 354 1611 343 1585 354 b 1548 344 1565 354 1555 350 b 1416 192 1532 331 1431 206 b 1388 177 1404 181 1395 177 b 1365 190 1380 177 1371 184 b 1243 333 1352 203 1256 321 b 1205 354 1228 346 1217 354 b 1174 341 1195 354 1187 351 b 1140 305 1161 330 1152 317 z',\n },\n ornamentPrecompSlideTrillDAnglebert: {\n x_min: 2,\n x_max: 1150,\n y_min: -367,\n y_max: 245,\n ha: 612,\n o: 'm 1058 160 b 916 327 1007 220 923 317 b 871 353 903 343 890 351 b 840 340 860 353 852 350 b 806 304 827 330 816 315 b 685 167 765 259 724 213 l 680 160 l 615 235 b 419 344 582 275 523 344 b 3 -144 258 344 3 26 b 4 -168 3 -153 3 -160 b 246 -482 24 -315 99 -422 b 458 -528 340 -521 410 -528 b 514 -526 485 -528 504 -526 b 552 -508 531 -526 552 -517 b 514 -497 552 -503 541 -498 l 503 -497 b 194 -390 432 -494 298 -488 b 69 -151 194 -390 69 -279 b 184 96 69 -60 128 27 b 328 183 202 118 258 183 b 477 96 413 183 454 118 b 559 10 510 62 552 19 b 588 0 566 3 576 0 b 613 7 598 0 609 3 b 723 112 622 14 681 73 b 789 161 733 122 776 161 b 811 144 796 161 802 156 b 936 10 816 135 923 24 b 965 0 942 3 953 0 b 991 7 975 0 985 3 b 1051 66 996 12 1022 37 b 1081 92 1063 73 1073 84 b 1136 143 1099 109 1117 127 b 1168 160 1151 154 1159 160 b 1191 144 1175 160 1181 156 b 1315 10 1197 135 1303 24 b 1344 0 1320 3 1332 0 b 1371 7 1355 0 1365 3 b 1636 295 1381 17 1617 274 b 1656 327 1644 305 1656 318 b 1619 353 1656 341 1630 353 b 1593 343 1610 353 1600 348 b 1460 190 1577 330 1476 204 b 1433 176 1449 180 1440 176 b 1410 189 1424 176 1416 183 b 1287 331 1397 202 1300 320 b 1250 353 1273 344 1261 353 b 1218 340 1240 353 1231 350 b 1185 304 1205 328 1197 315 z',\n },\n ornamentPrecompSlideTrillBach: {\n x_min: 0,\n x_max: 1048,\n y_min: -367,\n y_max: 331,\n ha: 698,\n o: 'm 1038 477 l 979 477 l 979 238 l 912 160 b 769 327 858 220 775 317 b 724 353 756 343 743 351 b 693 340 713 353 706 350 b 660 304 680 330 670 315 b 539 167 618 259 577 213 b 533 161 536 166 534 163 b 390 327 480 220 396 317 b 346 353 377 343 364 351 l 340 353 b 308 340 330 353 321 350 b 275 304 295 330 285 315 b 117 122 220 243 168 186 b 0 -144 68 62 0 -48 b 1 -168 0 -153 0 -160 b 243 -482 22 -315 96 -422 b 455 -528 337 -521 408 -528 b 511 -526 482 -528 501 -526 b 549 -508 528 -526 549 -517 b 511 -497 549 -503 539 -498 l 500 -497 b 192 -390 429 -494 295 -488 b 68 -177 192 -390 84 -298 b 66 -151 66 -168 66 -160 b 189 105 66 -58 127 35 b 232 143 203 118 216 131 b 264 161 246 154 256 161 b 285 144 271 161 276 156 b 410 10 291 135 397 24 b 439 0 416 3 428 0 b 465 7 449 0 459 3 l 531 72 b 554 92 540 78 547 86 b 611 143 573 109 590 127 b 642 161 625 154 635 161 b 664 144 649 161 655 156 b 789 10 670 135 776 24 b 818 0 795 3 806 0 b 844 7 828 0 838 3 b 904 66 850 12 876 37 b 935 92 916 73 924 84 b 979 134 949 107 963 121 l 979 -88 l 1037 -88 l 1037 151 l 1044 144 b 1168 10 1050 135 1156 24 b 1197 0 1174 3 1185 0 b 1224 7 1208 0 1218 3 b 1489 295 1234 17 1470 274 b 1509 327 1498 305 1509 318 b 1472 353 1509 341 1483 353 b 1446 343 1463 353 1453 348 b 1313 190 1430 330 1329 204 b 1286 176 1302 180 1293 176 b 1263 189 1277 176 1269 183 b 1140 331 1250 202 1153 320 b 1103 353 1126 344 1115 353 b 1071 340 1093 353 1084 350 b 1038 304 1058 328 1050 315 z',\n },\n ornamentPrecompTrillSuffixDandrieu: {\n x_min: 0,\n x_max: 949,\n y_min: 0,\n y_max: 381,\n ha: 381,\n o: 'm 1367 314 b 1250 521 1367 419 1318 482 b 1107 549 1211 537 1145 549 b 1083 546 1096 549 1087 549 b 1066 528 1071 540 1066 534 b 1079 520 1066 524 1070 520 b 1323 351 1187 517 1323 487 b 1201 171 1323 269 1260 219 b 1194 166 1201 171 1198 168 b 1056 327 1142 226 1063 317 b 1011 353 1043 343 1030 351 b 979 340 999 353 992 350 b 946 304 966 330 956 315 b 825 167 904 259 864 213 l 821 161 b 678 327 768 222 685 317 b 634 353 665 343 652 351 b 602 340 622 353 615 350 b 569 304 589 330 579 315 b 448 167 527 259 487 213 l 444 161 b 301 327 390 222 308 317 b 256 353 288 343 275 351 b 225 340 245 353 238 350 b 192 304 212 330 202 315 b 71 167 150 259 109 213 b 17 105 52 147 36 127 b 0 73 10 98 0 84 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 174 161 157 154 167 161 b 196 144 181 161 187 156 b 321 10 202 135 308 24 b 350 0 327 3 338 0 b 376 7 360 0 370 3 b 485 112 384 14 444 73 b 552 161 495 122 539 161 b 573 144 559 161 564 156 b 698 10 579 135 685 24 b 727 0 704 3 716 0 b 753 7 737 0 747 3 b 863 112 762 14 821 73 b 929 161 873 122 916 161 b 950 144 936 161 942 156 b 1076 10 956 135 1063 24 b 1104 0 1081 3 1093 0 b 1130 7 1115 0 1125 3 b 1236 108 1139 14 1195 69 b 1367 314 1297 160 1367 233 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefix: {\n x_min: 0,\n x_max: 1278,\n y_min: 0,\n y_max: 247,\n ha: 247,\n o: 'm 1801 356 b 1776 346 1793 356 1783 351 b 1642 192 1760 333 1659 206 b 1614 177 1630 181 1621 177 b 1591 190 1606 177 1597 184 b 1469 334 1578 203 1482 323 b 1430 356 1453 347 1441 356 b 1398 343 1420 356 1411 353 b 1365 307 1385 331 1377 318 l 1240 164 b 1097 330 1187 226 1104 320 b 1053 356 1084 346 1071 354 b 1021 343 1041 356 1034 353 b 988 307 1008 333 998 318 b 865 168 946 262 904 216 l 861 163 b 717 330 808 223 724 320 b 672 356 704 346 691 354 b 641 343 661 356 654 353 b 608 307 628 333 618 318 b 485 168 566 262 524 216 l 455 134 b 284 46 409 88 351 46 b 16 285 148 46 32 265 b 3 295 9 292 4 295 b 0 291 1 295 0 292 b 1 285 0 288 1 285 b 308 0 42 190 157 0 b 530 120 415 1 482 63 b 559 144 539 128 549 137 b 590 163 573 156 583 163 b 612 145 598 163 603 157 b 739 10 618 137 724 24 b 768 0 744 3 756 0 b 793 7 778 0 788 3 b 903 114 802 14 861 75 l 939 144 b 971 163 953 156 963 163 b 992 145 978 163 984 157 b 1119 10 998 137 1106 24 b 1148 0 1125 3 1136 0 b 1174 7 1158 0 1168 3 b 1284 114 1182 14 1241 75 b 1316 144 1282 115 1312 141 b 1348 161 1331 156 1339 161 b 1371 145 1355 161 1361 157 b 1496 10 1377 137 1485 24 b 1525 0 1502 3 1513 0 b 1552 7 1536 0 1547 3 b 1819 298 1562 17 1800 276 b 1840 330 1829 308 1840 320 b 1832 344 1840 334 1837 340 b 1801 356 1820 351 1810 356 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefixTurn: {\n x_min: 0,\n x_max: 1277,\n y_min: -62,\n y_max: 333,\n ha: 395,\n o: 'm 1273 202 l 1273 480 l 1230 480 l 1230 174 l 1097 328 b 1053 354 1084 344 1071 353 b 1021 341 1041 354 1034 351 b 988 305 1008 331 998 317 b 865 167 945 261 904 215 l 861 161 b 717 328 808 222 724 318 b 672 354 704 344 691 353 b 641 341 661 354 654 351 b 608 305 628 331 618 317 b 485 167 564 261 524 215 b 455 132 474 156 465 144 b 284 45 410 88 350 45 b 14 284 148 45 30 264 b 3 294 9 291 4 294 b 0 289 1 294 0 291 b 1 284 0 287 1 284 b 308 -1 42 189 157 -1 b 530 118 415 0 481 62 b 557 143 539 127 547 135 b 590 161 572 154 582 161 b 612 144 598 161 603 156 b 737 9 618 135 724 24 b 768 -1 743 1 755 -1 b 793 6 778 -1 788 1 b 903 112 802 13 861 73 l 937 143 b 971 161 953 154 963 161 b 992 144 978 161 984 156 b 1117 9 998 135 1104 24 b 1148 -1 1123 1 1136 -1 b 1174 6 1158 -1 1168 1 l 1230 60 l 1230 -89 l 1273 -89 l 1273 102 l 1283 112 b 1348 160 1295 125 1332 160 b 1371 144 1355 160 1361 156 b 1496 9 1377 135 1483 24 b 1525 -1 1502 1 1513 -1 b 1552 6 1536 -1 1547 1 b 1819 297 1562 16 1800 275 b 1839 328 1827 307 1839 320 b 1801 354 1839 343 1813 354 b 1776 344 1793 354 1783 350 b 1642 190 1760 331 1657 206 b 1614 176 1630 180 1621 176 b 1591 189 1606 176 1597 183 b 1467 333 1578 203 1480 321 b 1430 354 1453 346 1441 354 b 1398 341 1420 354 1411 351 b 1365 305 1385 330 1377 317 z',\n },\n ornamentPrecompTrillLowerSuffix: {\n x_min: 0,\n x_max: 859,\n y_min: -222,\n y_max: 246,\n ha: 468,\n o: 'm 1164 217 b 1031 351 1138 259 1063 351 b 1011 337 1020 351 1024 347 b 828 167 952 291 886 217 l 824 164 b 683 328 772 225 690 318 b 638 354 670 344 657 353 b 606 341 626 354 619 351 b 573 305 593 331 583 317 b 451 167 530 261 490 215 l 446 161 b 302 328 393 222 310 318 b 258 354 289 344 276 353 b 226 341 246 354 239 351 b 193 305 213 331 203 317 b 71 167 150 261 109 215 b 17 105 52 147 36 127 b 0 73 10 98 0 84 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 176 161 157 154 168 161 b 197 144 183 161 189 156 b 323 9 203 135 310 23 b 353 -1 328 1 340 -1 b 379 6 363 -1 373 1 b 488 112 387 13 446 73 l 523 143 b 556 161 539 154 549 161 b 577 144 563 161 569 156 b 703 9 583 135 690 23 b 733 -1 708 1 721 -1 b 759 6 743 -1 753 1 b 868 112 768 13 827 73 b 955 183 878 122 943 183 b 1081 107 965 183 1031 153 b 1156 -89 1128 63 1156 6 l 1156 -102 b 948 -297 1156 -204 1048 -297 b 806 -271 904 -297 850 -282 l 792 -266 b 801 -288 792 -268 795 -282 b 948 -320 809 -297 880 -320 b 1237 -50 1092 -320 1237 -199 b 1164 217 1237 75 1218 122 z',\n },\n brassScoop: {\n x_min: 1,\n x_max: 320,\n y_min: -373,\n y_max: 13,\n ha: 386,\n o: 'm 35 -537 b 461 -12 194 -518 461 -289 b 438 19 461 13 451 19 b 410 -9 425 19 413 9 b 35 -425 357 -366 92 -403 b 1 -482 13 -433 1 -438 l 1 -505 b 26 -537 1 -526 3 -537 z',\n },\n brassDoitMedium: {\n x_min: 0,\n x_max: 489,\n y_min: -40,\n y_max: 346,\n ha: 386,\n o: 'm 33 -58 b 704 468 255 -58 683 186 b 681 498 704 494 693 498 b 654 471 668 498 658 488 b 33 55 550 118 91 76 b 0 -3 12 46 0 42 l 0 -26 b 24 -58 0 -46 1 -58 z',\n },\n brassFallLipShort: {\n x_min: 1,\n x_max: 293,\n y_min: -345,\n y_max: 42,\n ha: 387,\n o: 'm 22 60 b 1 35 4 60 1 52 l 1 6 b 26 -50 3 -40 10 -43 b 32 -52 27 -50 30 -50 b 376 -469 85 -73 327 -111 b 400 -497 379 -487 387 -497 b 422 -467 412 -497 422 -491 b 32 60 422 -187 177 40 z',\n },\n brassLiftMedium: {\n x_min: 0,\n x_max: 811,\n y_min: 0,\n y_max: 852,\n ha: 852,\n o: 'm 1138 1220 b 1135 1225 1135 1223 1135 1224 b 1129 1227 1133 1227 1130 1227 b 1117 1207 1122 1227 1117 1212 l 1117 1201 b 1109 1164 1117 1187 1117 1172 b 1100 1156 1107 1161 1104 1158 b 959 1104 1058 1128 995 1140 b 929 1032 936 1081 929 1056 b 932 1007 929 1024 930 1015 b 923 976 932 995 930 985 l 914 971 b 773 919 873 942 809 955 b 743 847 750 896 743 870 b 746 821 743 838 744 829 b 737 791 746 809 744 799 l 729 783 b 588 733 687 756 624 769 b 557 661 564 710 557 684 b 560 635 557 652 559 644 b 552 605 560 624 559 612 l 543 598 b 402 547 501 570 438 583 b 372 475 379 524 372 498 b 374 449 372 467 373 458 b 366 419 374 438 373 426 l 357 412 b 216 361 315 384 252 397 b 186 289 193 338 186 312 b 189 264 186 281 187 272 b 180 233 189 252 187 240 b 171 226 177 232 174 229 b 30 176 130 199 66 212 b 0 104 7 153 0 128 b 33 0 0 88 14 0 b 49 17 40 0 49 10 b 71 63 52 35 56 49 b 212 115 102 95 154 59 b 239 186 230 134 239 160 b 236 210 239 194 238 202 b 256 249 239 225 243 236 b 397 301 288 281 340 245 b 425 372 416 320 425 346 b 422 396 425 380 423 387 b 442 435 425 410 429 422 b 583 487 474 467 526 431 b 611 557 602 505 611 531 b 608 582 611 566 609 573 b 628 621 611 596 615 608 b 769 672 660 652 711 618 b 796 743 788 691 796 717 b 793 768 796 752 795 759 b 814 806 796 782 801 793 b 955 858 845 838 897 804 b 982 929 973 877 982 903 b 979 953 982 937 981 945 b 999 992 982 968 986 979 b 1140 1045 1031 1024 1083 989 b 1168 1116 1161 1066 1168 1090 b 1138 1220 1168 1162 1145 1207 z',\n },\n brassFallRoughMedium: {\n x_min: 0,\n x_max: 811,\n y_min: 0,\n y_max: 852,\n ha: 852,\n o: 'm 30 1220 b 0 1116 23 1207 0 1162 b 27 1045 0 1090 7 1066 b 168 992 85 989 137 1024 b 189 953 181 979 186 968 b 186 929 187 945 186 937 b 213 858 186 903 194 877 b 354 806 271 804 323 838 b 374 768 367 793 372 782 b 372 743 373 759 372 752 b 399 672 372 717 380 691 b 540 621 456 618 508 652 b 560 582 553 608 557 596 b 557 557 559 573 557 566 b 585 487 557 531 566 505 b 726 435 642 431 694 467 b 746 396 739 422 743 410 b 743 372 744 387 743 380 b 770 301 743 346 752 320 b 912 249 828 245 880 281 b 932 210 924 236 929 225 b 929 186 930 202 929 194 b 956 115 929 160 937 134 b 1097 63 1014 59 1066 95 b 1119 17 1112 49 1116 35 b 1135 0 1119 10 1128 0 b 1168 104 1153 0 1168 91 b 1138 176 1168 128 1161 153 b 996 226 1102 212 1038 199 b 988 233 994 229 991 232 b 979 264 981 240 979 252 b 982 289 981 272 982 281 b 952 361 982 312 975 338 b 811 412 916 397 852 384 l 802 419 b 793 449 795 426 793 438 b 796 475 795 458 796 467 b 766 547 796 498 789 524 b 625 598 730 583 667 570 l 616 605 b 608 635 609 612 608 624 b 611 661 609 644 611 652 b 580 733 611 684 603 710 b 439 783 544 769 481 756 l 431 791 b 422 821 423 799 422 809 b 425 847 423 829 425 838 b 395 919 425 870 418 896 b 253 971 359 955 295 942 l 245 976 b 236 1007 238 985 236 995 b 239 1032 238 1015 239 1024 b 209 1104 239 1056 232 1081 b 68 1156 173 1140 109 1128 b 59 1164 63 1158 60 1161 b 50 1201 50 1172 50 1187 l 50 1207 b 39 1227 50 1212 46 1227 b 33 1225 37 1227 35 1227 b 30 1220 33 1224 33 1223 z',\n },\n brassBend: {\n x_min: 0,\n x_max: 392,\n y_min: 0,\n y_max: 282,\n ha: 282,\n o: 'm 282 0 b 552 72 369 0 456 23 b 564 92 560 75 564 84 l 564 383 b 541 406 564 395 554 406 b 518 383 528 406 518 395 l 518 107 b 282 46 435 65 357 46 b 46 107 207 46 130 65 l 46 383 b 23 406 46 395 36 406 b 0 383 10 406 0 395 l 0 92 b 13 72 0 84 4 75 b 282 0 108 23 196 0 z',\n },\n brassMuteClosed: {\n x_min: 0,\n x_max: 272,\n y_min: 0,\n y_max: 272,\n ha: 272,\n o: 'm 392 219 l 219 219 l 219 392 l 173 392 l 173 219 l 0 219 l 0 173 l 173 173 l 173 0 l 219 0 l 219 173 l 392 173 z',\n },\n brassMuteOpen: {\n x_min: 0,\n x_max: 304,\n y_min: 0,\n y_max: 304,\n ha: 304,\n o: 'm 219 0 b 438 219 340 0 438 98 b 219 438 438 340 340 438 b 0 219 98 438 0 340 b 219 0 0 98 98 0 z m 219 392 b 392 219 314 392 392 314 b 219 46 392 124 314 46 b 46 219 124 46 46 124 b 219 392 46 314 124 392 z',\n },\n brassFlip: {\n x_min: 0,\n x_max: 379,\n y_min: 0,\n y_max: 282,\n ha: 282,\n o: 'm 523 0 b 541 9 530 0 536 3 b 546 22 544 13 546 17 b 536 42 546 29 541 36 l 36 402 b 23 406 33 405 27 406 b 0 383 12 406 0 395 l 0 23 b 23 0 0 10 10 0 b 46 23 36 0 46 10 l 46 337 l 508 4 b 523 0 513 1 517 0 z',\n },\n brassJazzTurn: {\n x_min: 0,\n x_max: 620,\n y_min: 0,\n y_max: 245,\n ha: 245,\n o: 'm 792 190 b 765 176 780 179 772 176 b 740 190 755 176 747 183 b 629 325 727 202 644 312 b 593 347 616 338 605 347 b 562 334 583 346 575 344 b 528 298 549 323 539 310 l 406 176 b 389 168 406 176 399 168 b 374 176 384 168 379 170 b 245 325 360 192 245 325 b 200 353 232 343 219 351 b 168 340 190 353 181 350 l 17 156 b 0 121 10 147 0 132 b 16 107 0 114 4 108 b 84 143 26 107 76 137 b 118 160 92 150 108 160 b 141 143 125 160 131 154 b 265 10 147 135 253 24 b 294 0 271 3 282 0 b 321 7 305 0 315 3 b 498 160 321 7 478 158 b 521 143 505 160 513 154 b 647 10 528 135 635 24 b 675 0 652 3 664 0 b 703 7 687 0 697 3 b 874 186 713 16 855 164 b 893 220 881 196 893 212 b 873 245 890 235 883 243 b 796 194 847 245 815 213 z',\n },\n brassSmear: {\n x_min: 1,\n x_max: 306,\n y_min: 0,\n y_max: 170,\n ha: 170,\n o: 'm 193 79 b 308 0 219 50 264 0 b 439 117 396 0 438 102 b 439 120 439 118 439 118 l 441 125 b 441 128 441 127 441 127 b 433 141 441 135 439 141 b 416 130 429 141 423 137 b 343 94 390 107 370 94 b 269 153 315 94 294 121 l 265 158 b 144 245 239 190 180 245 b 6 134 62 245 10 143 b 1 114 3 125 1 118 b 7 107 1 108 4 107 b 36 122 13 107 22 112 b 92 151 55 137 65 151 b 183 89 125 151 161 112 b 189 84 184 88 187 86 z',\n },\n stringsDownBow: {\n x_min: 0,\n x_max: 312,\n y_min: 0,\n y_max: 318,\n ha: 318,\n o: 'm 37 458 b 0 420 17 458 0 441 l 0 17 b 17 0 0 7 9 0 l 37 0 b 55 17 46 0 55 7 l 55 253 b 225 278 55 269 140 278 b 395 253 310 278 395 269 l 395 17 b 413 0 395 7 403 0 l 432 0 b 449 17 441 0 449 7 l 449 420 b 412 458 449 441 432 458 z',\n },\n stringsUpBow: {\n x_min: 1,\n x_max: 249,\n y_min: 1,\n y_max: 495,\n ha: 494,\n o: 'm 181 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 z',\n },\n stringsHarmonic: {\n x_min: 0,\n x_max: 200,\n y_min: 0,\n y_max: 200,\n ha: 200,\n o: 'm 288 144 b 144 288 288 225 223 288 b 0 144 65 288 0 225 b 144 0 0 65 65 0 b 288 144 223 0 288 65 z m 144 249 b 249 144 203 249 249 203 b 144 39 249 86 203 39 b 39 144 86 39 39 86 b 144 249 39 203 86 249 z',\n },\n pluckedSnapPizzicatoAbove: {\n x_min: 0,\n x_max: 200,\n y_min: 0,\n y_max: 300,\n ha: 300,\n o: 'm 0 144 b 144 0 0 63 65 0 b 288 144 223 0 288 63 b 167 285 288 215 235 275 l 167 432 l 121 432 l 121 285 b 0 144 52 275 0 215 z m 121 246 l 121 144 l 167 144 l 167 246 b 249 144 213 236 249 193 b 144 39 249 85 202 39 b 39 144 85 39 39 85 b 121 246 39 193 73 236 z',\n },\n pluckedSnapPizzicatoBelow: {\n x_min: 0,\n x_max: 200,\n y_min: 0,\n y_max: 300,\n ha: 300,\n o: 'm 288 288 b 144 432 288 369 223 432 b 0 288 65 432 0 369 b 121 145 0 216 52 157 l 121 0 l 167 0 l 167 145 b 288 288 235 157 288 216 z m 167 186 l 167 288 l 121 288 l 121 186 b 39 288 75 196 39 238 b 144 393 39 347 86 393 b 249 288 203 393 249 347 b 167 186 249 238 215 196 z',\n },\n pluckedLeftHandPizzicato: {\n x_min: 0,\n x_max: 272,\n y_min: 0,\n y_max: 272,\n ha: 272,\n o: 'm 392 219 l 219 219 l 219 392 l 173 392 l 173 219 l 0 219 l 0 173 l 173 173 l 173 0 l 219 0 l 219 173 l 392 173 z',\n },\n keyboardPedalPed: {\n x_min: 0,\n x_max: 1019,\n y_min: -8,\n y_max: 555,\n ha: 563,\n o: 'm 413 799 b 179 749 327 798 261 789 b 0 517 107 713 0 632 b 122 376 0 454 37 376 b 240 540 189 376 240 452 b 225 586 240 579 233 586 b 204 549 213 586 212 573 b 138 480 199 527 181 480 b 85 549 96 480 85 517 l 85 554 b 353 762 89 690 230 762 b 373 752 364 762 373 760 b 351 708 373 740 360 723 b 274 546 330 675 274 585 b 353 416 274 508 333 444 b 412 304 372 390 412 351 b 382 228 412 275 403 256 b 334 190 363 202 361 200 b 147 29 271 167 147 88 b 196 -12 147 4 171 -12 b 343 108 239 -12 279 33 l 363 132 b 387 150 370 141 376 150 b 543 -4 445 150 467 -4 b 631 42 567 -4 586 0 l 668 78 b 685 89 674 84 680 89 b 696 75 688 89 690 86 b 809 -9 717 29 753 -9 b 946 66 854 -9 894 13 b 988 107 971 92 981 107 b 1002 89 994 107 996 99 b 1152 -4 1030 36 1077 -4 b 1329 248 1238 -4 1329 82 b 792 717 1329 556 1047 665 b 766 720 785 719 775 720 b 747 703 752 720 747 711 b 780 680 747 693 756 685 b 1223 222 1028 621 1223 504 b 1152 39 1223 122 1205 39 b 1073 229 1104 39 1073 132 b 1132 423 1073 314 1086 377 b 1142 442 1140 432 1142 436 b 1126 458 1142 451 1136 458 b 1093 446 1119 458 1109 455 b 975 216 1022 408 975 337 l 975 190 b 943 121 975 160 972 150 b 852 69 899 76 877 69 b 776 148 816 69 786 117 b 773 163 775 154 773 158 b 786 177 773 167 776 170 l 801 187 b 937 366 867 235 937 284 b 844 454 937 422 900 454 b 665 217 711 454 665 331 b 671 153 665 197 667 176 l 671 147 b 662 134 671 143 670 140 b 605 111 639 118 625 111 b 521 160 572 111 546 135 b 451 203 497 184 474 197 b 426 212 435 207 426 206 b 436 230 426 216 429 220 b 510 389 464 269 510 340 b 429 521 510 435 480 462 b 369 629 387 570 369 599 b 402 720 369 648 384 691 b 462 763 425 759 446 763 b 611 624 540 763 611 704 b 564 575 611 592 590 575 b 501 602 540 575 520 582 b 474 622 492 611 487 622 b 459 603 465 622 459 615 b 603 471 459 570 510 471 b 711 588 670 471 711 524 b 422 799 711 742 554 799 z m 815 403 b 848 343 838 403 848 383 b 780 226 848 295 824 261 b 765 217 773 220 768 217 b 759 228 762 217 759 220 b 756 282 757 245 756 262 b 815 403 756 346 772 403 z m 1405 124 b 1344 62 1369 124 1344 98 b 1405 0 1344 26 1369 0 b 1467 62 1441 0 1467 26 b 1405 124 1467 98 1441 124 z',\n },\n keyboardPedalUp: {\n x_min: 0,\n x_max: 450,\n y_min: 0,\n y_max: 450,\n ha: 450,\n o: 'm 582 396 b 516 367 554 396 533 384 b 465 340 495 347 487 340 l 458 340 b 412 377 432 340 412 348 b 432 409 412 387 419 396 l 438 415 b 490 429 451 428 464 429 b 575 501 534 429 575 452 b 501 575 575 541 541 575 b 429 490 452 575 429 534 b 415 438 429 464 428 451 l 409 432 b 377 412 396 419 387 412 b 340 458 348 412 340 432 l 340 465 b 367 516 340 487 347 495 b 396 582 384 533 396 554 b 324 648 396 625 363 648 b 252 582 285 648 252 625 b 281 516 252 554 264 533 b 308 465 301 495 308 487 l 308 458 b 271 412 308 432 300 412 b 239 432 261 412 252 419 l 233 438 b 219 490 220 451 219 464 b 147 575 219 534 196 575 b 73 501 107 575 73 541 b 158 429 73 452 114 429 b 210 415 184 429 197 428 l 216 409 b 236 377 229 396 236 387 b 190 340 236 348 216 340 l 183 340 b 132 367 161 340 153 347 b 66 396 115 384 94 396 b 0 324 23 396 0 363 b 66 252 0 285 23 252 b 132 281 94 252 115 264 b 183 308 153 301 161 308 l 190 308 b 236 271 216 308 236 300 b 216 239 236 261 229 252 l 210 233 b 158 219 197 220 184 219 b 73 147 114 219 73 196 b 147 73 73 107 107 73 b 219 158 196 73 219 114 b 233 210 219 184 220 197 l 239 216 b 271 236 252 229 261 236 b 308 190 300 236 308 216 l 308 183 b 281 132 308 161 301 153 b 252 66 264 115 252 94 b 324 0 252 23 285 0 b 396 66 363 0 396 23 b 367 132 396 94 384 115 b 340 183 347 153 340 161 l 340 190 b 377 236 340 216 348 236 b 409 216 387 236 396 229 l 415 210 b 429 158 428 197 429 184 b 501 73 429 114 452 73 b 575 147 541 73 575 107 b 490 219 575 196 534 219 b 438 233 464 219 451 220 l 432 239 b 412 271 419 252 412 261 b 458 308 412 300 432 308 l 465 308 b 516 281 487 308 495 301 b 582 252 533 264 554 252 b 648 324 625 252 648 285 b 582 396 648 363 625 396 z m 324 271 b 271 324 291 271 271 291 b 324 377 271 357 291 377 b 377 324 357 377 377 357 b 324 271 377 291 357 271 z',\n },\n pictChokeCymbal: {\n x_min: 1,\n x_max: 152,\n y_min: 2,\n y_max: 251,\n ha: 249,\n o: 'm 104 361 b 1 271 42 361 1 321 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 17 32 29 26 26 l 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 z',\n },\n wiggleArpeggiatoUp: {\n x_min: -33,\n x_max: 292,\n y_min: 0,\n y_max: 119,\n ha: 119,\n o: 'm 130 171 b -39 68 16 171 -14 91 b -48 53 -45 62 -48 58 b -29 42 -48 46 -39 42 b -10 46 -23 42 -16 43 b 56 63 12 56 29 63 b 248 0 121 63 135 0 b 419 127 361 0 410 104 b 420 132 420 130 420 131 b 412 140 420 137 416 140 b 386 130 403 140 392 134 b 334 107 367 117 353 107 b 318 108 330 107 324 107 b 240 138 289 112 265 128 b 130 171 209 153 168 171 z',\n },\n arrowheadBlackUp: {\n x_min: 0,\n x_max: 228,\n y_min: 0,\n y_max: 299,\n ha: 299,\n o: 'm 166 431 b 0 20 111 274 0 30 b 16 0 0 12 6 0 l 17 1 b 166 50 43 16 160 50 b 310 1 171 50 289 13 l 311 0 b 328 20 321 0 328 12 b 166 431 328 30 220 274 z',\n },\n arrowheadBlackDown: {\n x_min: 0,\n x_max: 228,\n y_min: 0,\n y_max: 299,\n ha: 299,\n o: 'm 166 0 b 328 410 220 157 328 400 b 311 431 328 419 321 431 l 310 429 b 166 380 289 418 171 380 b 17 429 160 380 43 415 l 16 431 b 0 410 6 431 0 419 b 166 0 0 400 111 157 z',\n },\n arpeggiatoUp: {\n x_min: 1,\n x_max: 229,\n y_min: 7,\n y_max: 1511,\n ha: 1504,\n o: 'm 219 1848 l 330 1848 l 164 2176 l 1 1848 l 121 1848 b 92 1778 115 1822 101 1800 l 89 1773 b 59 1668 75 1741 59 1702 b 96 1555 59 1614 76 1580 b 99 1551 98 1554 99 1551 l 102 1547 b 124 1496 115 1531 124 1515 b 122 1482 124 1492 124 1488 b 92 1404 118 1453 102 1428 b 59 1293 78 1372 59 1332 b 105 1172 59 1234 81 1198 b 124 1120 118 1155 124 1143 l 122 1113 b 122 1110 122 1113 122 1112 b 92 1032 118 1081 102 1057 b 59 922 78 1001 59 960 b 115 792 59 855 86 816 b 124 760 121 782 124 773 b 122 744 124 756 124 750 b 92 667 118 716 102 693 b 59 556 78 635 59 595 b 108 433 59 495 82 458 b 124 389 117 420 124 408 b 122 374 124 384 124 379 b 92 298 118 346 102 323 l 89 292 b 59 186 75 261 59 222 b 163 19 59 73 140 42 b 177 10 168 13 173 10 b 189 29 184 10 189 19 b 184 48 189 35 187 42 b 167 114 174 69 167 85 b 230 305 167 179 229 193 b 181 423 230 357 209 396 b 167 484 173 442 167 458 b 230 675 167 547 229 563 b 179 796 230 729 206 769 b 167 850 171 812 167 827 b 230 1040 167 913 229 929 b 183 1158 230 1092 209 1130 b 167 1220 173 1178 167 1194 b 230 1411 167 1284 229 1300 b 186 1526 230 1462 210 1499 b 167 1594 176 1529 167 1584 b 230 1786 167 1659 229 1673 b 219 1848 230 1809 226 1829 z',\n },\n arpeggiatoDown: {\n x_min: 1,\n x_max: 229,\n y_min: -4,\n y_max: 1500,\n ha: 1504,\n o: 'm 219 323 b 230 384 226 341 230 361 b 167 576 229 497 167 511 b 186 644 167 586 176 641 b 230 759 210 671 230 708 b 167 950 229 870 167 886 b 183 1012 167 976 173 992 b 230 1130 209 1040 230 1079 b 167 1320 229 1241 167 1257 b 179 1374 167 1344 171 1358 b 230 1495 206 1401 230 1441 b 167 1686 229 1607 167 1623 b 181 1747 167 1712 173 1728 b 230 1865 209 1774 230 1813 b 167 2056 229 1977 167 1992 b 184 2123 167 2085 174 2101 b 189 2141 187 2128 189 2136 b 177 2160 189 2151 184 2160 b 163 2151 173 2160 168 2157 b 59 1984 140 2128 59 2097 b 89 1878 59 1948 75 1909 l 92 1872 b 122 1796 102 1848 118 1824 b 124 1781 124 1791 124 1786 b 108 1737 124 1763 117 1750 b 59 1614 82 1712 59 1675 b 92 1503 59 1575 78 1535 b 122 1426 102 1477 118 1454 b 124 1410 124 1420 124 1414 b 115 1378 124 1397 121 1388 b 59 1248 86 1354 59 1315 b 92 1138 59 1210 78 1169 b 122 1060 102 1113 118 1089 b 122 1057 122 1058 122 1058 l 124 1050 b 105 998 124 1027 118 1015 b 59 877 81 972 59 936 b 92 766 59 838 78 798 b 122 688 102 742 118 717 b 124 674 124 683 124 678 b 102 624 124 655 115 639 l 99 619 b 96 615 99 619 98 616 b 59 503 76 590 59 556 b 89 397 59 468 75 429 l 92 392 b 121 323 101 370 115 348 l 1 323 l 164 -6 l 330 323 z',\n },\n repeat1Bar: {\n x_min: 0,\n x_max: 532,\n y_min: -250,\n y_max: 279,\n ha: 529,\n o: 'm 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 675 -71 b 586 -161 626 -71 586 -111 b 675 -251 586 -210 626 -251 b 766 -161 726 -251 766 -210 b 675 -71 766 -111 726 -71 z',\n },\n repeat2Bars: {\n x_min: 0,\n x_max: 762,\n y_min: -250,\n y_max: 279,\n ha: 529,\n o: 'm 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 b 343 -360 331 -356 336 -360 l 485 -360 b 516 -340 498 -360 508 -348 z m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 1007 -71 b 917 -161 958 -71 917 -111 b 1007 -251 917 -210 958 -251 b 1097 -161 1057 -251 1097 -210 b 1007 -71 1097 -111 1057 -71 z',\n },\n repeat4Bars: {\n x_min: 0,\n x_max: 1232,\n y_min: -250,\n y_max: 279,\n ha: 529,\n o: 'm 1767 380 b 1774 395 1771 386 1774 390 b 1765 402 1774 399 1771 402 l 1613 402 b 1587 380 1604 402 1597 393 l 1012 -340 b 1008 -350 1009 -343 1008 -347 b 1020 -360 1008 -356 1012 -360 l 1162 -360 b 1192 -340 1175 -360 1185 -348 z m 1436 380 b 1443 395 1440 386 1443 390 b 1434 402 1443 399 1440 402 l 1282 402 b 1256 380 1273 402 1266 393 l 681 -340 b 677 -350 678 -343 677 -347 b 688 -360 677 -356 681 -360 l 831 -360 b 861 -340 844 -360 854 -348 z m 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 b 343 -360 331 -356 336 -360 l 485 -360 b 516 -340 498 -360 508 -348 z m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 1683 -71 b 1594 -161 1634 -71 1594 -111 b 1683 -251 1594 -210 1634 -251 b 1774 -161 1734 -251 1774 -210 b 1683 -71 1774 -111 1734 -71 z',\n },\n repeatBarSlash: {\n x_min: 0,\n x_max: 532,\n y_min: -250,\n y_max: 279,\n ha: 529,\n o: 'm 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z',\n },\n csymDiminished: {\n x_min: 0,\n x_max: 473,\n y_min: 0,\n y_max: 473,\n ha: 473,\n o: 'm 341 681 b 0 341 153 681 0 530 b 341 0 0 153 153 0 b 681 341 530 0 681 153 b 341 681 681 530 530 681 z m 341 618 b 618 341 495 618 618 495 b 341 63 618 189 494 63 b 63 341 187 63 63 187 b 341 618 63 494 189 618 z',\n },\n csymHalfDiminished: {\n x_min: -16,\n x_max: 488,\n y_min: -15,\n y_max: 489,\n ha: 504,\n o: 'm 703 660 l 658 704 l 557 603 b 340 681 498 652 422 681 b -1 341 151 681 -1 530 b 78 124 -1 259 29 183 l -23 23 l 22 -22 l 122 79 b 340 0 181 30 258 0 b 680 341 528 0 680 153 b 602 559 680 423 651 500 z m 62 341 b 340 618 62 494 187 618 b 513 559 403 618 464 598 l 122 168 b 62 341 84 217 62 278 z m 616 341 b 340 63 616 189 492 63 b 167 124 276 63 216 85 l 557 514 b 616 341 596 465 616 405 z',\n },\n csymAugmented: {\n x_min: 0,\n x_max: 395,\n y_min: 1,\n y_max: 396,\n ha: 395,\n o: 'm 569 318 l 317 318 l 317 570 l 253 570 l 253 318 l 0 318 l 0 255 l 253 255 l 253 1 l 317 1 l 317 255 l 569 255 z',\n },\n csymMajorSeventh: {\n x_min: 0,\n x_max: 558,\n y_min: 1,\n y_max: 477,\n ha: 476,\n o: 'm 402 687 l 0 1 l 804 1 z m 402 562 l 693 65 l 111 65 z',\n },\n csymMinor: {\n x_min: 0,\n x_max: 325,\n y_min: 216,\n y_max: 260,\n ha: 44,\n o: 'm 468 374 l 0 374 l 0 311 l 468 311 z',\n },\n csymParensLeftTall: {\n x_min: 1,\n x_max: 185,\n y_min: 0,\n y_max: 997,\n ha: 997,\n o: 'm 266 48 b 261 65 266 55 264 62 b 92 719 157 212 92 400 b 262 1371 92 1037 154 1228 b 266 1394 266 1378 266 1394 l 266 1424 b 264 1436 266 1431 266 1436 b 259 1434 262 1436 259 1434 b 1 719 84 1261 1 1011 b 259 1 1 429 79 177 b 264 0 261 0 262 0 b 266 9 265 0 266 6 z',\n },\n csymParensRightTall: {\n x_min: -20,\n x_max: 164,\n y_min: 0,\n y_max: 997,\n ha: 997,\n o: 'm -29 9 b -26 0 -29 6 -27 0 b -22 1 -24 0 -23 0 b 236 719 158 177 236 429 b -22 1434 236 1011 154 1261 b -26 1436 -22 1434 -24 1436 b -29 1424 -29 1436 -29 1431 l -29 1394 b -24 1371 -29 1394 -29 1378 b 145 719 84 1228 145 1037 b -23 65 145 400 81 212 b -29 48 -26 62 -29 55 z',\n },\n csymBracketLeftTall: {\n x_min: 0,\n x_max: 155,\n y_min: 0,\n y_max: 1000,\n ha: 1000,\n o: 'm 217 0 b 223 9 220 0 223 4 l 223 37 b 217 46 223 42 220 46 l 92 46 l 92 1394 l 217 1394 b 223 1403 220 1394 223 1398 l 223 1431 b 217 1440 223 1436 220 1440 l 6 1440 b 0 1436 3 1440 0 1439 l 0 4 b 6 0 0 1 3 0 z',\n },\n csymBracketRightTall: {\n x_min: 1,\n x_max: 156,\n y_min: 0,\n y_max: 1000,\n ha: 1000,\n o: 'm 219 0 b 225 4 222 0 225 1 l 225 1436 b 219 1440 225 1439 222 1440 l 7 1440 b 1 1431 4 1440 1 1436 l 1 1403 b 7 1394 1 1398 4 1394 l 132 1394 l 132 46 l 7 46 b 1 37 4 46 1 42 l 1 9 b 7 0 1 4 4 0 z',\n },\n csymParensLeftVeryTall: {\n x_min: 0,\n x_max: 122,\n y_min: 0,\n y_max: 993,\n ha: 993,\n o: 'm 176 32 b 171 49 176 39 174 46 b 60 716 104 194 60 399 b 173 1382 60 1032 101 1241 b 176 1405 176 1390 176 1405 l 176 1427 b 173 1430 176 1428 174 1430 b 0 716 40 1297 0 978 b 170 3 0 428 50 179 b 171 0 170 1 170 0 b 176 6 173 0 176 4 z',\n },\n csymParensRightVeryTall: {\n x_min: -15,\n x_max: 107,\n y_min: 0,\n y_max: 993,\n ha: 993,\n o: 'm -22 6 b -17 0 -22 4 -19 0 b -16 3 -16 0 -16 1 b 154 716 104 179 154 428 b -19 1430 154 978 114 1297 b -22 1427 -20 1430 -22 1428 l -22 1405 b -19 1382 -22 1405 -22 1390 b 94 716 53 1241 94 1032 b -17 49 94 399 50 194 b -22 32 -20 46 -22 39 z',\n },\n csymDiagonalArrangementSlash: {\n x_min: 0,\n x_max: 999,\n y_min: 0,\n y_max: 1000,\n ha: 1000,\n o: 'm 1439 1380 l 1377 1440 l 0 60 l 62 0 z',\n },\n accSagittal5v7KleismaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -35 b 135 -112 68 -86 99 -112 b 225 68 194 -112 225 -53 l 180 68 b 144 -4 180 20 168 -4 b 122 0 138 -4 131 -3 b 23 248 86 14 52 96 l 0 248 z',\n },\n accSagittal5v7KleismaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 b 122 0 52 -96 86 -14 b 144 4 131 3 138 4 b 180 -68 168 4 180 -20 l 225 -68 b 135 112 225 53 194 112 b 45 35 99 112 68 86 l 45 517 l 0 517 z',\n },\n accSagittal5CommaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 225 -517 l 225 248 l 203 248 l 0 -112 l 0 -284 l 180 33 l 180 -517 z',\n },\n accSagittal5CommaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 180 517 l 180 -33 l 0 284 l 0 112 l 203 -248 l 225 -248 l 225 517 z',\n },\n accSagittal7CommaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 248 l 0 -517 l 45 -517 l 45 112 l 89 112 b 180 -68 150 112 180 53 l 180 -248 l 225 -248 l 225 68 b 135 248 225 187 194 248 z',\n },\n accSagittal7CommaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 135 -248 b 225 -68 194 -248 225 -187 l 225 248 l 180 248 l 180 68 b 89 -112 180 -53 150 -112 l 45 -112 l 45 517 l 0 517 l 0 -248 z',\n },\n accSagittal25SmallDiesisUp: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -157 l 0 -259 l 315 -89 l 315 -517 l 360 -517 l 360 248 l 337 248 l 0 68 l 0 -33 l 315 135 l 315 10 z',\n },\n accSagittal25SmallDiesisDown: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 315 -10 l 315 -135 l 0 33 l 0 -68 l 337 -248 l 360 -248 l 360 517 l 315 517 l 315 89 l 0 259 l 0 157 z',\n },\n accSagittal35MediumDiesisUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -68 330 112 360 53 l 360 -248 l 405 -248 l 405 68 b 315 248 405 187 374 248 l 203 248 l 0 -112 z',\n },\n accSagittal35MediumDiesisDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 203 -248 l 315 -248 b 405 -68 374 -248 405 -187 l 405 248 l 360 248 l 360 68 b 271 -112 360 -53 330 -112 l 225 -112 l 225 517 l 180 517 l 180 -33 l 0 284 z',\n },\n accSagittal11MediumDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 225 53 l 225 -517 l 271 -517 l 271 53 l 495 -248 l 495 -89 l 248 248 l 0 -89 l 0 -248 z',\n },\n accSagittal11MediumDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 248 l 0 89 l 248 -248 l 495 89 l 495 248 l 271 -53 l 271 517 l 225 517 l 225 -53 z',\n },\n accSagittal11LargeDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 112 l 315 112 b 449 -68 405 112 449 53 l 449 -248 l 495 -248 l 495 68 b 360 248 495 187 449 248 l 135 248 b 0 68 45 248 0 187 z',\n },\n accSagittal11LargeDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 360 -248 b 495 -68 449 -248 495 -187 l 495 248 l 449 248 l 449 68 b 315 -112 449 -53 405 -112 l 271 -112 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittal35LargeDiesisUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 l 540 112 l 540 274 l 271 -58 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittal35LargeDiesisDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 l 540 112 l 540 274 l 269 -58 l 269 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittalSharp25SDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 112 -112 0 -53 36 -112 l 135 -112 l 135 -517 l 180 -517 l 180 -89 b 248 26 206 -65 229 -27 b 315 -89 264 -27 287 -65 l 315 -517 l 360 -517 l 360 -112 l 383 -112 b 495 68 458 -112 495 -53 l 449 68 b 399 -4 449 20 433 -4 b 248 248 297 -4 261 171 b 122 0 216 96 176 14 b 94 -4 112 -3 102 -4 b 45 68 60 -4 45 20 z',\n },\n accSagittalFlat25SUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 94 4 45 -20 60 4 b 122 0 102 4 112 3 b 248 -248 176 -14 216 -96 b 399 4 261 -171 297 4 b 449 -68 433 4 449 -20 l 495 -68 b 383 112 495 53 458 112 l 360 112 l 360 517 l 315 517 l 315 89 b 248 -26 287 65 264 27 b 180 89 229 27 206 65 l 180 517 l 135 517 l 135 112 l 112 112 b 0 -68 36 112 0 53 z',\n },\n accSagittalSharp7CDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 112 l 89 112 b 180 104 124 112 154 109 l 180 -517 l 225 -517 l 225 89 b 315 -68 285 60 315 9 l 315 -248 l 360 -248 l 360 68 b 135 248 360 187 285 248 l 0 248 z',\n },\n accSagittalFlat7CUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 135 -248 b 360 -68 285 -248 360 -187 l 360 248 l 315 248 l 315 68 b 225 -89 315 -9 285 -60 l 225 517 l 180 517 l 180 -104 b 89 -112 154 -109 124 -112 l 45 -112 l 45 517 l 0 517 z',\n },\n accSagittalSharp5CDown: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -517 l 45 71 l 180 -56 l 180 -517 l 225 -517 l 225 -98 l 405 -268 l 405 -112 l 23 248 l 0 248 l 0 -517 z',\n },\n accSagittalFlat5CUp: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 517 l 0 -248 l 23 -248 l 405 112 l 405 268 l 225 98 l 225 517 l 180 517 l 180 56 l 45 -71 l 45 517 z',\n },\n accSagittalSharp5v7kDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -276 l 135 -82 l 135 -517 l 180 -517 l 180 -17 l 271 112 l 315 112 l 315 -517 l 360 -517 l 360 107 b 449 -68 420 89 449 30 l 449 -248 l 495 -248 l 495 68 b 360 248 495 189 449 248 l 248 248 z',\n },\n accSagittalFlat5v7kUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 248 -248 l 360 -248 b 495 -68 449 -248 495 -189 l 495 248 l 449 248 l 449 68 b 360 -107 449 -30 420 -89 l 360 517 l 315 517 l 315 -112 l 271 -112 l 180 17 l 180 517 l 135 517 l 135 82 l 0 276 l 0 112 z',\n },\n accSagittalSharp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 180 -53 l 180 -517 l 225 -517 l 225 0 l 292 85 l 360 0 l 360 -517 l 405 -517 l 405 -53 l 585 -274 l 585 -112 l 292 248 l 0 -112 l 0 -274 z',\n },\n accSagittalFlat: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 274 l 0 112 l 292 -248 l 585 112 l 585 274 l 405 53 l 405 517 l 360 517 l 360 0 l 292 -85 l 225 0 l 225 517 l 180 517 l 180 53 z',\n },\n accSagittalSharp5v7kUp: {\n x_min: 0,\n x_max: 312,\n y_min: -361,\n y_max: 172,\n ha: 533,\n o: 'm 45 -517 l 45 -10 b 135 -92 68 -48 98 -75 l 135 -520 l 180 -520 l 180 -108 b 248 -115 203 -112 225 -115 b 271 -112 256 -115 264 -115 l 271 -517 l 315 -517 l 315 -107 b 449 68 405 -89 449 -30 l 405 68 b 297 -4 405 19 369 -4 b 23 248 131 -4 56 85 l 0 248 l 0 -517 z',\n },\n accSagittalFlat5v7kDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 361,\n ha: 533,\n o: 'm 0 517 l 0 -248 l 23 -248 b 297 4 56 -85 131 4 b 405 -68 369 4 405 -19 l 449 -68 b 315 107 449 30 405 89 l 315 517 l 271 517 l 271 112 b 248 115 264 115 256 115 b 180 108 225 115 203 112 l 180 520 l 135 520 l 135 92 b 45 10 98 75 68 48 l 45 517 z',\n },\n accSagittalSharp5CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -266 l 135 -153 l 135 -517 l 180 -517 l 180 -115 l 271 -39 l 271 -517 l 315 -517 l 315 0 l 405 75 l 405 -517 l 449 -517 l 449 248 l 428 248 l 0 -112 z',\n },\n accSagittalFlat5CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 428 -248 l 449 -248 l 449 517 l 405 517 l 405 -75 l 315 0 l 315 517 l 271 517 l 271 39 l 180 115 l 180 517 l 135 517 l 135 153 l 0 266 z',\n },\n accSagittalSharp7CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 112 l 135 112 l 135 -517 l 180 -517 l 180 108 b 271 89 213 105 243 99 l 271 -517 l 315 -517 l 315 73 b 405 -68 374 45 405 -3 l 405 -248 l 449 -248 l 449 68 b 135 248 449 187 346 248 l 0 248 z',\n },\n accSagittalFlat7CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 135 -248 b 449 -68 346 -248 449 -187 l 449 248 l 405 248 l 405 68 b 315 -73 405 3 374 -45 l 315 517 l 271 517 l 271 -89 b 180 -108 243 -99 213 -105 l 180 517 l 135 517 l 135 -112 l 45 -112 l 45 517 l 0 517 z',\n },\n accSagittalSharp25SUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -30 l 495 143 l 495 14 l 0 -157 l 0 -255 l 225 -177 l 225 -517 l 271 -517 l 271 -161 l 360 -130 l 360 -517 l 405 -517 l 405 -115 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 517 248 l 0 68 z',\n },\n accSagittalFlat25SDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 l 517 -248 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 115 l 405 517 l 360 517 l 360 130 l 271 161 l 271 517 l 225 517 l 225 177 l 0 255 l 0 157 l 495 -14 l 495 -143 l 0 30 z',\n },\n accSagittalSharp35MUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -274 l 135 -108 l 135 -517 l 180 -517 l 180 -53 l 271 58 l 271 -517 l 315 -517 l 315 112 l 360 112 b 405 109 376 112 390 112 l 405 -517 l 449 -517 l 449 96 b 540 -68 510 72 540 17 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 z',\n },\n accSagittalFlat35MDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 292 -248 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 449 -96 540 -17 510 -72 l 449 517 l 405 517 l 405 -109 b 360 -112 390 -112 376 -112 l 315 -112 l 315 517 l 271 517 l 271 -58 l 180 53 l 180 517 l 135 517 l 135 108 l 0 274 l 0 112 z',\n },\n accSagittalSharp11MUp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -271 l 180 -79 l 180 -517 l 225 -517 l 225 -30 l 315 65 l 315 -517 l 360 -517 l 360 65 l 449 -30 l 449 -517 l 495 -517 l 495 -79 l 675 -271 l 675 -112 l 337 248 z',\n },\n accSagittalFlat11MDown: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 337 -248 l 675 112 l 675 271 l 495 79 l 495 517 l 449 517 l 449 30 l 360 -65 l 360 517 l 315 517 l 315 -65 l 225 30 l 225 517 l 180 517 l 180 79 l 0 271 l 0 112 z',\n },\n accSagittalSharp11LUp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 112 l 449 112 l 449 -517 l 495 -517 l 495 104 b 631 -68 585 82 631 26 l 631 -248 l 675 -248 l 675 68 b 449 248 675 187 600 248 l 225 248 b 0 68 75 248 0 187 z',\n },\n accSagittalFlat11LDown: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 449 -248 b 675 -68 600 -248 675 -187 l 675 248 l 631 248 l 631 68 b 495 -104 631 -26 585 -82 l 495 517 l 449 517 l 449 -112 l 360 -112 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z',\n },\n accSagittalSharp35LUp: {\n x_min: 0,\n x_max: 500,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 71 l 452 -17 l 452 -517 l 495 -517 l 495 -56 l 720 -268 l 720 -112 l 337 248 l 225 248 b 0 68 75 248 0 187 z',\n },\n accSagittalFlat35LDown: {\n x_min: 0,\n x_max: 500,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 l 720 112 l 720 268 l 495 56 l 495 517 l 452 517 l 452 17 l 360 -71 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z',\n },\n accSagittalDoubleSharp25SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 135 -112 0 -53 45 -112 b 243 -62 180 -112 215 -95 l 89 -503 l 143 -517 l 292 -82 l 445 -517 l 495 -503 l 343 -62 b 449 -112 372 -95 408 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 315 148 b 112 -4 274 148 236 -4 b 45 68 68 -4 45 20 z',\n },\n accSagittalDoubleFlat25SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 112 4 45 -20 68 4 b 292 -248 236 4 274 -148 b 475 4 315 -148 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 b 343 62 408 112 372 95 l 495 503 l 445 517 l 292 82 l 143 517 l 89 503 l 243 62 b 135 112 215 95 180 112 b 0 -68 45 112 0 53 z',\n },\n accSagittalDoubleSharp7CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -503 l 52 -517 l 203 -82 l 354 -517 l 405 -503 l 230 0 l 271 108 b 495 -68 420 92 495 35 l 495 -248 l 540 -248 l 540 68 b 225 248 540 187 435 248 l 89 248 l 89 112 l 135 112 l 174 0 z m 213 112 l 203 82 l 192 112 z',\n },\n accSagittalDoubleFlat7CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 174 0 l 135 -112 l 89 -112 l 89 -248 l 225 -248 b 540 -68 435 -248 540 -187 l 540 248 l 495 248 l 495 68 b 271 -108 495 -35 420 -92 l 230 0 l 405 503 l 354 517 l 203 82 l 52 517 l 0 503 z m 192 -112 l 203 -82 l 213 -112 z',\n },\n accSagittalDoubleSharp5CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 405 -503 l 230 0 l 232 4 l 585 -264 l 585 -112 l 112 248 l 89 248 l 89 112 l 151 68 l 174 0 l 0 -503 l 52 -517 l 203 -82 l 354 -517 z',\n },\n accSagittalDoubleFlat5CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 354 517 l 203 82 l 52 517 l 0 503 l 174 0 l 151 -68 l 89 -112 l 89 -248 l 112 -248 l 585 112 l 585 264 l 232 -4 l 230 0 l 405 503 z',\n },\n accSagittalDoubleSharp5v7kDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -274 l 252 35 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 360 112 b 540 -68 480 112 540 53 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 l 0 -112 z',\n },\n accSagittalDoubleFlat5v7kUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 292 -248 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 360 -112 540 -53 480 -112 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 252 -35 l 0 274 z',\n },\n accSagittalDoubleSharp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 540 -503 l 366 0 l 380 45 l 675 -271 l 675 -112 l 337 248 l 0 -112 l 0 -271 l 295 45 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 z',\n },\n accSagittalDoubleFlat: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 295 -45 l 0 271 l 0 112 l 337 -248 l 675 112 l 675 271 l 380 -45 l 366 0 l 540 503 z',\n },\n accSagittal7v11KleismaUp: {\n x_min: 0,\n x_max: 219,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 68 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 -45 b 248 -112 200 -89 225 -112 b 315 68 292 -112 315 -53 l 271 68 b 248 -4 271 20 264 -4 b 236 0 245 -4 240 -3 b 157 248 213 14 187 96 b 78 0 127 96 101 14 b 65 -4 73 -3 68 -4 b 45 68 50 -4 45 20 l 0 68 b 68 -112 0 -53 23 -112 z',\n },\n accSagittal7v11KleismaDown: {\n x_min: 0,\n x_max: 219,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 68 112 b 0 -68 23 112 0 53 l 45 -68 b 65 4 45 -20 50 4 b 78 0 68 4 73 3 b 157 -248 101 -14 127 -96 b 236 0 187 -96 213 -14 b 248 4 240 3 245 4 b 271 -68 264 4 271 -20 l 315 -68 b 248 112 315 53 292 112 b 180 45 225 112 200 89 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 z',\n },\n accSagittal17CommaUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 -40 b 315 -118 248 -92 279 -118 b 405 62 374 -118 405 -59 l 360 62 b 324 -10 360 14 348 -10 b 302 -6 318 -10 311 -9 b 206 217 268 9 235 84 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z',\n },\n accSagittal17CommaDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 206 -217 b 302 6 235 -84 268 -9 b 324 10 311 9 318 10 b 360 -62 348 10 360 -14 l 405 -62 b 315 118 405 59 374 118 b 225 40 279 118 248 92 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal55CommaUp: {\n x_min: 0,\n x_max: 219,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 248 l 0 -517 l 45 -517 l 45 58 l 315 -274 l 315 -112 l 23 248 z',\n },\n accSagittal55CommaDown: {\n x_min: 0,\n x_max: 219,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 23 -248 l 315 112 l 315 274 l 45 -58 l 45 517 l 0 517 l 0 -248 z',\n },\n accSagittal7v11CommaUp: {\n x_min: 0,\n x_max: 188,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 248 l 135 248 b 0 68 45 248 0 187 z',\n },\n accSagittal7v11CommaDown: {\n x_min: 0,\n x_max: 188,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 271 -248 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittal5v11SmallDiesisUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 73 l 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 -40 b 360 -118 295 -92 325 -118 b 449 62 420 -118 449 -59 l 405 62 b 369 -10 405 14 393 -10 b 348 -6 363 -10 356 -9 b 251 217 312 9 279 84 l 248 248 l 135 248 b 0 73 45 248 0 189 z',\n },\n accSagittal5v11SmallDiesisDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -73 b 135 -248 0 -189 45 -248 l 248 -248 l 251 -217 b 348 6 279 -84 312 -9 b 369 10 356 9 363 10 b 405 -62 393 10 405 -14 l 449 -62 b 360 118 449 59 420 118 b 271 40 325 118 295 92 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittalSharp5v11SDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 242 37 203 -23 225 -3 b 315 -89 262 -23 285 -63 l 315 -517 l 360 -517 l 360 -112 l 383 -112 b 495 68 458 -112 495 -53 l 449 68 b 399 -4 449 20 433 -4 b 248 248 297 -4 261 171 b 157 68 222 127 192 68 l 89 68 b 0 -203 30 68 0 -23 z',\n },\n accSagittalFlat5v11SUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -127 b 399 4 261 -171 297 4 b 449 -68 433 4 449 -20 l 495 -68 b 383 112 495 53 458 112 l 360 112 l 360 517 l 315 517 l 315 89 b 242 -37 285 63 262 23 b 180 23 225 3 203 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z',\n },\n accSagittalSharp7v11CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -112 l 89 -517 l 135 -517 l 135 -95 b 206 37 163 -73 187 -30 b 271 -23 225 -3 248 -23 l 271 -517 l 315 -517 l 315 -23 l 383 -23 b 449 -203 428 -23 449 -84 l 495 -203 b 405 68 495 -23 465 68 l 292 68 b 203 248 258 68 228 127 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 20 l 0 68 b 89 -112 0 -52 30 -112 z',\n },\n accSagittalFlat7v11CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 112 b 0 -68 30 112 0 52 l 45 -68 b 81 3 45 -20 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 b 292 -68 228 -127 258 -68 l 405 -68 b 495 203 465 -68 495 23 l 449 203 b 383 23 449 84 428 23 l 315 23 l 315 517 l 271 517 l 271 23 b 206 -37 248 23 225 3 b 135 95 187 30 163 73 l 135 517 l 89 517 z',\n },\n accSagittalSharp55CDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -271 l 135 -125 l 135 -517 l 180 -517 l 180 -78 l 315 65 l 315 -517 l 360 -517 l 360 248 l 337 248 l 0 -112 z',\n },\n accSagittalFlat55CUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 337 -248 l 360 -248 l 360 517 l 315 517 l 315 -65 l 180 78 l 180 517 l 135 517 l 135 125 l 0 271 z',\n },\n accSagittalSharp17CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -248 l 45 -68 b 180 109 45 36 89 95 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -89 292 13 321 -55 l 360 -517 l 405 -517 l 405 -112 l 428 -112 b 540 68 504 -112 540 -53 l 495 68 b 445 -4 495 20 480 -4 b 292 248 343 -4 307 171 l 180 248 b 0 68 60 248 0 187 l 0 -248 z',\n },\n accSagittalFlat17CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 248 l 0 -68 b 180 -248 0 -187 60 -248 l 292 -248 b 445 4 307 -171 343 4 b 495 -68 480 4 495 -20 l 540 -68 b 428 112 540 53 504 112 l 405 112 l 405 517 l 360 517 l 360 89 b 271 -112 321 55 292 -13 l 225 -112 l 225 517 l 180 517 l 180 -109 b 45 68 89 -95 45 -36 l 45 248 z',\n },\n accSagittalSharp7v11kDown: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -32 l 405 138 l 405 13 l 0 -157 l 0 -256 l 225 -161 l 225 -517 l 271 -517 l 271 -144 l 405 -86 l 405 -517 l 449 -517 l 449 248 l 428 248 l 0 68 z',\n },\n accSagittalFlat7v11kUp: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 l 428 -248 l 449 -248 l 449 517 l 405 517 l 405 86 l 271 144 l 271 517 l 225 517 l 225 161 l 0 256 l 0 157 l 405 -13 l 405 -138 l 0 32 z',\n },\n accSagittalSharp7v11kUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 135 -112 l 135 -517 l 180 -517 l 180 -105 b 271 -23 217 -94 248 -65 l 271 -517 l 315 -517 l 315 -23 b 405 -105 337 -65 369 -94 l 405 -517 l 449 -517 l 449 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 315 148 b 112 -4 274 148 236 -4 b 45 68 68 -4 45 20 l 0 68 b 135 -112 0 -53 45 -112 z',\n },\n accSagittalFlat7v11kDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 135 112 b 0 -68 45 112 0 53 l 45 -68 b 112 4 45 -20 68 4 b 292 -248 236 4 274 -148 b 475 4 315 -148 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 l 449 517 l 405 517 l 405 105 b 315 23 369 94 337 65 l 315 517 l 271 517 l 271 23 b 180 105 248 65 217 94 l 180 517 l 135 517 z',\n },\n accSagittalSharp17CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 -23 b 405 -105 337 -65 369 -94 l 405 -517 l 449 -517 l 449 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 312 150 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalFlat17CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 b 475 4 312 -150 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 l 449 517 l 405 517 l 405 105 b 315 23 369 94 337 65 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp55CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -517 l 45 78 l 135 10 l 135 -517 l 180 -517 l 180 -23 l 271 -92 l 271 -517 l 315 -517 l 315 -127 l 495 -264 l 495 -112 l 23 248 l 0 248 l 0 -517 z',\n },\n accSagittalFlat55CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 517 l 0 -248 l 23 -248 l 495 112 l 495 264 l 315 127 l 315 517 l 271 517 l 271 92 l 180 23 l 180 517 l 135 517 l 135 -10 l 45 -78 l 45 517 z',\n },\n accSagittalSharp7v11CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 86 45 6 89 58 l 180 -517 l 225 -517 l 225 98 b 315 109 252 104 282 108 l 315 -517 l 360 -517 l 360 112 l 449 112 l 449 -517 l 495 -517 l 495 248 l 360 248 b 0 68 121 248 0 189 z',\n },\n accSagittalFlat7v11CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 360 -248 0 -189 121 -248 l 495 -248 l 495 517 l 449 517 l 449 -112 l 360 -112 l 360 517 l 315 517 l 315 -109 b 225 -98 282 -108 252 -104 l 225 517 l 180 517 l 180 -86 b 45 68 89 -58 45 -6 l 45 248 l 0 248 z',\n },\n accSagittalSharp5v11SUp: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 -23 b 449 -105 383 -65 415 -94 l 449 -517 l 495 -517 l 495 -112 b 631 68 585 -112 631 -53 l 585 68 b 520 -4 585 20 563 -4 b 337 248 396 -4 360 150 l 225 248 b 0 68 76 248 0 187 z',\n },\n accSagittalFlat5v11SDown: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 76 -248 l 337 -248 b 520 4 360 -150 396 4 b 585 -68 563 4 585 -20 l 631 -68 b 495 112 631 53 585 112 l 495 517 l 449 517 l 449 105 b 360 23 415 94 383 65 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z',\n },\n accSagittalDoubleSharp5v11SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 341 -60 b 449 -112 370 -95 405 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 312 150 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalDoubleFlat5v11SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 b 475 4 312 -150 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 b 341 60 405 112 370 95 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalDoubleSharp7v11CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 112 -112 b 193 -73 143 -112 170 -99 l 45 -501 l 95 -517 l 248 -81 l 397 -517 l 449 -503 l 275 0 l 278 4 b 337 -23 295 -13 315 -23 l 405 -23 b 495 -203 465 -23 495 -84 l 540 -203 b 428 68 540 -23 503 68 l 360 68 b 248 248 310 68 271 127 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 112 -112 0 -52 36 -112 z',\n },\n accSagittalDoubleFlat7v11CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 112 112 b 0 -68 36 112 0 52 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 b 360 -68 271 -127 310 -68 l 428 -68 b 540 203 503 -68 540 23 l 495 203 b 405 23 495 84 465 23 l 337 23 b 278 -4 315 23 295 13 l 275 0 l 449 503 l 397 517 l 248 81 l 95 517 l 45 501 l 193 73 b 112 112 170 99 143 112 z',\n },\n accSagittalDoubleSharp55CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 428 248 l 0 -112 l 0 -266 l 307 -7 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 386 59 l 449 112 l 449 248 z',\n },\n accSagittalDoubleFlat55CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 449 -248 l 449 -112 l 386 -59 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 307 7 l 0 266 l 0 112 l 428 -248 z',\n },\n accSagittalDoubleSharp17CDown: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -248 l 45 -68 b 271 112 45 53 120 112 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 387 -62 b 495 -112 416 -95 452 -112 b 631 68 585 -112 631 -53 l 585 68 b 520 -4 585 20 563 -4 b 337 248 396 -4 360 150 l 225 248 b 0 68 76 248 0 187 l 0 -248 z',\n },\n accSagittalDoubleFlat17CUp: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 248 l 0 -68 b 225 -248 0 -187 76 -248 l 337 -248 b 520 4 360 -150 396 4 b 585 -68 563 4 585 -20 l 631 -68 b 495 112 631 53 585 112 b 387 62 452 112 416 95 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 271 -112 b 45 68 120 -112 45 -53 l 45 248 z',\n },\n accSagittalDoubleSharp7v11kDown: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -30 l 366 96 l 399 0 l 392 -23 l 0 -157 l 0 -255 l 353 -135 l 225 -503 l 276 -517 l 428 -82 l 579 -517 l 631 -503 l 455 0 l 507 145 l 540 157 l 540 248 l 517 248 z m 416 115 l 442 124 l 428 82 z',\n },\n accSagittalDoubleFlat7v11kUp: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 517 -248 l 540 -248 l 540 -157 l 507 -145 l 455 0 l 631 503 l 579 517 l 428 82 l 276 517 l 225 503 l 353 135 l 0 255 l 0 157 l 392 23 l 399 0 l 366 -96 l 0 30 l 0 -68 z m 428 -82 l 442 -124 l 416 -115 z',\n },\n accSagittal23CommaUp: {\n x_min: 0,\n x_max: 188,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -4 b 68 -23 53 -17 60 -23 l 180 -23 b 225 -203 210 -23 225 -82 l 271 -203 b 206 68 271 -23 248 68 l 89 68 b 23 248 71 68 48 127 l 0 248 z',\n },\n accSagittal23CommaDown: {\n x_min: 0,\n x_max: 188,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 b 89 -68 48 -127 71 -68 l 206 -68 b 271 203 248 -68 271 23 l 225 203 b 180 23 225 82 210 23 l 68 23 b 45 4 60 23 53 17 l 45 517 l 0 517 z',\n },\n accSagittal5v19CommaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 248 l 203 248 b 86 112 151 157 112 112 b 45 157 59 112 45 127 l 0 157 b 76 23 0 72 26 27 l 0 -112 z',\n },\n accSagittal5v19CommaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 76 -23 b 0 -157 26 -27 0 -72 l 45 -157 b 86 -112 45 -127 59 -112 b 203 -248 112 -112 151 -157 l 225 -248 l 225 517 l 180 517 l 180 -33 l 0 284 z',\n },\n accSagittal5v23SmallDiesisUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 -4 b 248 -23 233 -17 240 -23 l 360 -23 b 405 -203 390 -23 405 -82 l 449 -203 b 386 68 449 -23 428 68 l 271 68 b 203 248 251 68 228 127 l 0 -112 z',\n },\n accSagittal5v23SmallDiesisDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 203 -248 b 271 -68 228 -127 251 -68 l 386 -68 b 449 203 428 -68 449 23 l 405 203 b 360 23 405 82 390 23 l 248 23 b 225 4 240 23 233 17 l 225 517 l 180 517 l 180 -33 l 0 284 z',\n },\n accSagittalSharp5v23SDown: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 6 b 89 -23 59 -13 73 -23 l 180 -23 l 180 -517 l 225 -517 l 225 -23 l 292 -23 b 360 -203 337 -23 360 -84 l 405 -203 b 315 68 405 -23 374 68 l 112 68 b 23 248 78 68 48 127 l 0 248 z',\n },\n accSagittalFlat5v23SUp: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 b 112 -68 48 -127 78 -68 l 315 -68 b 405 203 374 -68 405 23 l 360 203 b 292 23 360 84 337 23 l 225 23 l 225 517 l 180 517 l 180 23 l 89 23 b 45 -6 73 23 59 13 l 45 517 l 0 517 z',\n },\n accSagittalSharp5v19CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 89 -112 0 -52 30 -112 l 89 -517 l 135 -517 l 135 -95 b 225 112 173 -65 203 4 l 271 112 l 271 -517 l 315 -517 l 315 107 b 405 -68 374 89 405 30 l 405 -248 l 449 -248 l 449 68 b 315 248 449 189 405 248 l 203 248 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 23 z',\n },\n accSagittalFlat5v19CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 81 3 45 -23 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 l 315 -248 b 449 -68 405 -248 449 -189 l 449 248 l 405 248 l 405 68 b 315 -107 405 -30 374 -89 l 315 517 l 271 517 l 271 -112 l 225 -112 b 135 95 203 -4 173 65 l 135 517 l 89 517 l 89 112 b 0 -68 30 112 0 52 z',\n },\n accSagittalSharp23CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 135 -82 l 135 -517 l 180 -517 l 180 -17 l 239 68 b 315 -23 261 7 287 -23 l 315 -517 l 360 -517 l 360 -23 l 428 -23 b 495 -203 472 -23 495 -84 l 540 -203 b 449 68 540 -23 510 68 l 337 68 b 248 248 302 68 271 127 l 0 -112 l 0 -276 z',\n },\n accSagittalFlat23CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 276 l 0 112 l 248 -248 b 337 -68 271 -127 302 -68 l 449 -68 b 540 203 510 -68 540 23 l 495 203 b 428 23 495 84 472 23 l 360 23 l 360 517 l 315 517 l 315 23 b 239 -68 287 23 261 -7 l 180 17 l 180 517 l 135 517 l 135 82 z',\n },\n accSagittalSharp23CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 14 b 112 -23 63 -10 86 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 360 -23 b 449 -203 420 -23 449 -84 l 495 -203 b 383 68 495 -23 458 68 l 135 68 b 23 248 85 68 48 127 l 0 248 z',\n },\n accSagittalFlat23CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 b 135 -68 48 -127 85 -68 l 383 -68 b 495 203 458 -68 495 23 l 449 203 b 360 23 449 84 420 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 -14 86 23 63 10 l 45 517 l 0 517 z',\n },\n accSagittalSharp5v19CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -266 l 135 -153 l 135 -517 l 180 -517 l 180 -115 l 271 -39 l 271 -517 l 315 -517 l 315 0 l 405 75 l 405 -517 l 449 -517 l 449 248 l 428 248 b 130 68 285 127 186 68 b 45 157 73 68 45 98 l 0 157 b 112 -20 0 53 37 -6 z',\n },\n accSagittalFlat5v19CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 112 20 b 0 -157 37 6 0 -53 l 45 -157 b 130 -68 45 -98 73 -68 b 428 -248 186 -68 285 -127 l 449 -248 l 449 517 l 405 517 l 405 -75 l 315 0 l 315 517 l 271 517 l 271 39 l 180 115 l 180 517 l 135 517 l 135 153 l 0 266 l 0 112 z',\n },\n accSagittalSharp5v23SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 135 -108 l 135 -517 l 180 -517 l 180 -53 l 271 58 l 271 -517 l 315 -517 l 315 14 b 383 -23 334 -10 357 -23 l 405 -23 l 405 -517 l 449 -517 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 405 68 b 292 248 356 68 318 127 l 0 -112 l 0 -274 z',\n },\n accSagittalFlat5v23SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 274 l 0 112 l 292 -248 b 405 -68 318 -127 356 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 449 517 l 405 517 l 405 23 l 383 23 b 315 -14 357 23 334 10 l 315 517 l 271 517 l 271 -58 l 180 53 l 180 517 l 135 517 l 135 108 z',\n },\n accSagittalDoubleSharp5v23SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 52 -517 l 203 -81 l 354 -517 l 405 -503 l 239 -23 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 225 68 b 112 248 176 68 138 127 l 89 248 l 89 112 b 170 -14 109 45 135 0 l 0 -501 z',\n },\n accSagittalDoubleFlat5v23SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 501 l 170 14 b 89 -112 135 0 109 -45 l 89 -248 l 112 -248 b 225 -68 138 -127 176 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 239 23 l 405 503 l 354 517 l 203 81 l 52 517 z',\n },\n accSagittalDoubleSharp5v19CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 112 -112 0 -52 36 -112 b 193 -73 143 -112 170 -99 l 45 -501 l 95 -517 l 248 -81 l 397 -517 l 449 -501 l 275 0 l 315 112 b 495 -68 435 112 495 53 l 495 -248 l 540 -248 l 540 68 b 360 248 540 189 480 248 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 z',\n },\n accSagittalDoubleFlat5v19CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 360 -248 b 540 -68 480 -248 540 -189 l 540 248 l 495 248 l 495 68 b 315 -112 495 -53 435 -112 l 275 0 l 449 501 l 397 517 l 248 81 l 95 517 l 45 501 l 193 73 b 112 112 170 99 143 112 b 0 -68 36 112 0 52 z',\n },\n accSagittalDoubleSharp23CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 252 35 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 323 4 b 383 -23 340 -13 360 -23 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 405 68 b 292 248 356 68 318 127 l 0 -112 l 0 -274 z',\n },\n accSagittalDoubleFlat23CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 274 l 0 112 l 292 -248 b 405 -68 318 -127 356 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 383 23 b 323 -4 360 23 340 13 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 252 -35 z',\n },\n accSagittal19SchismaUp: {\n x_min: 0,\n x_max: 125,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 68 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 248 l 157 248 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 l 0 68 b 68 -112 0 -52 23 -112 z',\n },\n accSagittal19SchismaDown: {\n x_min: 0,\n x_max: 125,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 68 112 b 0 -68 23 112 0 52 l 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 l 180 -248 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 z',\n },\n accSagittal17KleismaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 248 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z',\n },\n accSagittal17KleismaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 225 -248 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal143CommaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -203 l 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 248 l 203 248 b 135 68 177 127 154 68 l 105 68 b 45 157 65 68 45 98 l 0 157 b 23 20 0 95 7 50 b 0 -203 7 -23 0 -98 z',\n },\n accSagittal143CommaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 23 -20 0 98 7 23 b 0 -157 7 -50 0 -95 l 45 -157 b 105 -68 45 -98 65 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 225 -248 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal11v49CommaUp: {\n x_min: 0,\n x_max: 188,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -292 b 89 -157 45 -203 60 -157 l 203 -157 b 225 -143 210 -157 217 -153 l 225 -517 l 271 -517 l 271 248 l 248 248 b 180 157 233 187 210 157 l 68 157 b 0 -68 23 157 0 82 l 45 -68 b 89 68 45 23 60 68 l 203 68 b 225 84 209 68 216 72 l 225 -36 b 180 -68 213 -58 199 -68 l 68 -68 b 0 -292 23 -68 0 -143 z',\n },\n accSagittal11v49CommaDown: {\n x_min: 0,\n x_max: 188,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 292 b 68 68 0 143 23 68 l 180 68 b 225 36 199 68 213 58 l 225 -84 b 203 -68 216 -72 209 -68 l 89 -68 b 45 68 60 -68 45 -23 l 0 68 b 68 -157 0 -82 23 -157 l 180 -157 b 248 -248 210 -157 233 -187 l 271 -248 l 271 517 l 225 517 l 225 143 b 203 157 217 153 210 157 l 89 157 b 45 292 60 157 45 203 z',\n },\n accSagittal19CommaUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 68 -112 0 -52 23 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 -4 b 203 -23 187 -17 196 -23 l 315 -23 b 360 -203 346 -23 360 -82 l 405 -203 b 341 68 405 -23 383 68 l 225 68 b 157 248 206 68 183 127 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 z',\n },\n accSagittal19CommaDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 b 225 -68 183 -127 206 -68 l 341 -68 b 405 203 383 -68 405 23 l 360 203 b 315 23 360 82 346 23 l 203 23 b 180 4 196 23 187 17 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 b 0 -68 23 112 0 52 z',\n },\n accSagittal7v19CommaUp: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 68 -112 0 -52 23 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 112 l 225 112 b 315 -68 285 112 315 53 l 315 -248 l 360 -248 l 360 68 b 271 248 360 187 330 248 l 157 248 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 z',\n },\n accSagittal7v19CommaDown: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 l 271 -248 b 360 -68 330 -248 360 -187 l 360 248 l 315 248 l 315 68 b 225 -112 315 -53 285 -112 l 180 -112 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 b 0 -68 23 112 0 52 z',\n },\n accSagittal49SmallDiesisUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -203 l 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -68 330 112 360 53 l 360 -248 l 405 -248 l 405 68 b 315 248 405 187 374 248 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z',\n },\n accSagittal49SmallDiesisDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 315 -248 b 405 -68 374 -248 405 -187 l 405 248 l 360 248 l 360 68 b 271 -112 360 -53 330 -112 l 225 -112 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal23SmallDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 58 l 495 -274 l 495 -112 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z',\n },\n accSagittal23SmallDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 495 112 l 495 274 l 225 -58 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal5v13MediumDiesisUp: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -259 l 315 -89 l 315 -517 l 360 -517 l 360 248 l 337 248 b 128 180 253 203 184 180 b 45 248 73 180 45 203 l 0 248 b 52 95 0 170 17 120 l 0 68 l 0 -33 l 315 135 l 315 10 l 0 -157 z',\n },\n accSagittal5v13MediumDiesisDown: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 157 l 315 -10 l 315 -135 l 0 33 l 0 -68 l 52 -95 b 0 -248 17 -120 0 -170 l 45 -248 b 128 -180 45 -203 73 -180 b 337 -248 184 -180 253 -203 l 360 -248 l 360 517 l 315 517 l 315 89 l 0 259 z',\n },\n accSagittal11v19MediumDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 -4 b 292 -23 278 -17 285 -23 l 405 -23 b 449 -203 435 -23 449 -82 l 495 -203 b 431 68 495 -23 472 68 l 315 68 b 248 248 295 68 271 127 l 135 248 b 0 68 45 248 0 187 l 0 -248 z',\n },\n accSagittal11v19MediumDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 248 l 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 b 315 -68 271 -127 295 -68 l 431 -68 b 495 203 472 -68 495 23 l 449 203 b 405 23 449 82 435 23 l 292 23 b 271 4 285 23 278 17 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 z',\n },\n accSagittal49MediumDiesisUp: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -68 l 0 -248 l 45 -248 l 315 -94 l 315 -517 l 360 -517 l 360 248 l 225 248 b 0 -68 75 248 0 143 z m 45 -68 b 225 112 45 53 105 112 l 315 112 l 315 10 l 45 -145 z',\n },\n accSagittal49MediumDiesisDown: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 68 b 225 -248 0 -143 75 -248 l 360 -248 l 360 517 l 315 517 l 315 94 l 45 248 l 0 248 z m 45 145 l 315 -10 l 315 -112 l 225 -112 b 45 68 105 -112 45 -53 z',\n },\n accSagittal5v49MediumDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -89 l 0 -248 l 225 53 l 225 -517 l 271 -517 l 271 53 l 495 -248 l 495 -89 l 248 248 b 89 89 170 143 118 89 b 45 157 60 89 45 112 l 0 157 b 68 3 0 68 23 16 z',\n },\n accSagittal5v49MediumDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 68 -3 b 0 -157 23 -16 0 -68 l 45 -157 b 89 -89 45 -112 60 -89 b 248 -248 118 -89 170 -143 l 495 89 l 495 248 l 271 -53 l 271 517 l 225 517 l 225 -53 l 0 248 l 0 89 z',\n },\n accSagittal49LargeDiesisUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -89 l 360 -248 l 405 -248 l 405 -68 b 180 248 405 143 330 248 l 0 248 z m 45 12 l 45 112 l 180 112 b 360 -68 300 112 360 53 l 360 -147 z',\n },\n accSagittal49LargeDiesisDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 180 -248 b 405 68 330 -248 405 -143 l 405 248 l 360 248 l 45 89 l 45 517 l 0 517 z m 360 147 l 360 68 b 180 -112 360 -53 300 -112 l 45 -112 l 45 -12 z',\n },\n accSagittal11v19LargeDiesisUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -86 l 449 -256 l 449 -157 l 45 13 l 45 138 l 449 -30 l 449 68 l 23 248 l 0 248 z',\n },\n accSagittal11v19LargeDiesisDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 l 449 -68 l 449 30 l 45 -138 l 45 -13 l 449 157 l 449 256 l 45 86 l 45 517 l 0 517 z',\n },\n accSagittal5v13LargeDiesisUp: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 89 -112 0 -52 30 -112 b 180 -35 125 -112 157 -86 l 180 -517 l 225 -517 l 225 -86 l 631 -256 l 631 -157 l 225 13 l 225 138 l 631 -30 l 631 68 l 203 248 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 20 z',\n },\n accSagittal5v13LargeDiesisDown: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 81 3 45 -20 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 l 631 -68 l 631 30 l 225 -138 l 225 -13 l 631 157 l 631 256 l 225 86 l 225 517 l 180 517 l 180 35 b 89 112 157 86 125 112 b 0 -68 30 112 0 52 z',\n },\n accSagittalSharp23SDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -203 l 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 b 315 6 287 -23 301 -13 l 315 -517 l 360 -517 l 360 248 l 337 248 b 248 68 312 127 282 68 l 194 68 b 89 157 125 68 89 98 l 45 157 b 60 59 45 118 50 85 b 0 -203 20 30 0 -56 z',\n },\n accSagittalFlat23SUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 60 -59 0 56 20 -30 b 45 -157 50 -85 45 -118 l 89 -157 b 194 -68 89 -98 125 -68 l 248 -68 b 337 -248 282 -68 312 -127 l 360 -248 l 360 517 l 315 517 l 315 -6 b 271 23 301 13 287 23 l 180 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z',\n },\n accSagittalSharp49SDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -292 l 45 -292 b 112 -157 45 -203 68 -157 l 135 -157 l 135 -517 l 180 -517 l 180 -157 l 271 -157 b 315 -135 285 -157 300 -150 l 315 -517 l 360 -517 l 360 248 l 337 248 b 248 157 323 187 292 157 l 89 157 b 0 -68 30 157 0 82 l 45 -68 b 112 68 45 23 68 68 l 271 68 b 315 89 284 68 300 75 l 315 -32 b 248 -68 298 -56 275 -68 l 89 -68 b 0 -292 29 -68 0 -143 z',\n },\n accSagittalFlat49SUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 292 b 89 68 0 143 29 68 l 248 68 b 315 32 275 68 298 56 l 315 -89 b 271 -68 300 -75 284 -68 l 112 -68 b 45 68 68 -68 45 -23 l 0 68 b 89 -157 0 -82 30 -157 l 248 -157 b 337 -248 292 -157 323 -187 l 360 -248 l 360 517 l 315 517 l 315 135 b 271 157 300 150 285 157 l 180 157 l 180 517 l 135 517 l 135 157 l 112 157 b 45 292 68 157 45 203 z',\n },\n accSagittalSharp7v19CDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -271 l 135 -125 l 135 -517 l 180 -517 l 180 -78 l 315 65 l 315 -517 l 360 -517 l 360 248 l 337 248 b 118 89 239 143 166 89 b 45 157 68 89 45 112 l 0 157 b 89 -20 0 53 29 -6 z',\n },\n accSagittalFlat7v19CUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 20 b 0 -157 29 6 0 -53 l 45 -157 b 118 -89 45 -112 68 -89 b 337 -248 166 -89 239 -143 l 360 -248 l 360 517 l 315 517 l 315 -65 l 180 78 l 180 517 l 135 517 l 135 125 l 0 271 l 0 112 z',\n },\n accSagittalSharp19CDown: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 96 45 17 89 72 l 180 -517 l 225 -517 l 225 107 b 315 112 252 112 282 112 l 360 112 l 360 -517 l 405 -517 l 405 248 l 271 248 b 0 68 89 248 0 187 z',\n },\n accSagittalFlat19CUp: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 271 -248 0 -187 89 -248 l 405 -248 l 405 517 l 360 517 l 360 -112 l 315 -112 b 225 -107 282 -112 252 -112 l 225 517 l 180 517 l 180 -96 b 45 68 89 -72 45 -17 l 45 248 l 0 248 z',\n },\n accSagittalSharp11v49CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 112 -23 45 -82 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 271 112 215 -23 245 23 l 315 112 l 315 -517 l 360 -517 l 360 107 b 449 -68 420 89 449 30 l 449 -248 l 495 -248 l 495 68 b 360 248 495 189 449 248 l 248 248 b 157 68 222 128 192 68 l 89 68 b 0 -203 30 68 0 -23 z',\n },\n accSagittalFlat11v49CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -128 l 360 -248 b 495 -68 449 -248 495 -189 l 495 248 l 449 248 l 449 68 b 360 -107 449 -30 420 -89 l 360 517 l 315 517 l 315 -112 l 271 -112 b 180 23 245 -23 215 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 82 z',\n },\n accSagittalSharp143CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 259 76 210 -23 236 10 l 315 17 l 315 -517 l 360 -517 l 360 -30 l 585 -271 l 585 -112 l 248 248 b 157 68 222 127 192 68 l 89 68 b 0 -203 30 68 0 -23 z',\n },\n accSagittalFlat143CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -127 l 585 112 l 585 271 l 360 30 l 360 517 l 315 517 l 315 -17 l 259 -76 b 180 23 236 -10 210 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z',\n },\n accSagittalSharp17kDown: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -157 l 0 -256 l 225 -161 l 225 -517 l 271 -517 l 271 -144 l 405 -86 l 405 -517 l 449 -517 l 449 248 l 428 248 b 145 171 305 196 210 171 b 45 248 78 171 45 196 l 0 248 b 79 101 0 170 26 121 l 0 68 l 0 -32 l 405 138 l 405 13 z',\n },\n accSagittalFlat17kUp: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 405 -13 l 405 -138 l 0 32 l 0 -68 l 79 -101 b 0 -248 26 -121 0 -170 l 45 -248 b 145 -171 45 -196 78 -171 b 428 -248 210 -171 305 -196 l 449 -248 l 449 517 l 405 517 l 405 86 l 271 144 l 271 517 l 225 517 l 225 161 l 0 256 l 0 157 z',\n },\n accSagittalSharp19sDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 109 45 36 89 95 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -23 295 23 325 -23 l 360 -517 l 405 -517 l 405 -23 l 472 -23 b 540 -203 517 -23 540 -84 l 585 -203 b 495 68 585 -23 554 68 l 383 68 b 292 248 348 68 318 127 l 180 248 b 0 68 60 248 0 187 z',\n },\n accSagittalFlat19sUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 180 -248 0 -187 60 -248 l 292 -248 b 383 -68 318 -127 348 -68 l 495 -68 b 585 203 554 -68 585 23 l 540 203 b 472 23 540 84 517 23 l 405 23 l 405 517 l 360 517 l 360 23 b 271 -112 325 23 295 -23 l 225 -112 l 225 517 l 180 517 l 180 -109 b 45 68 89 -95 45 -36 l 45 248 l 0 248 z',\n },\n accSagittalSharp19sUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -96 l 89 -517 l 135 -517 l 135 -108 b 180 -112 148 -112 163 -112 b 225 -108 196 -112 210 -112 l 225 -517 l 271 -517 l 271 -94 b 360 -12 305 -78 337 -50 l 360 -517 l 405 -517 l 405 248 l 383 248 b 190 0 353 98 288 16 b 138 -3 171 0 153 -3 b 45 68 75 -3 45 20 l 0 68 b 89 -96 0 -17 30 -72 z',\n },\n accSagittalFlat19sDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 96 b 0 -68 30 72 0 17 l 45 -68 b 138 3 45 -20 75 3 b 190 0 153 3 171 0 b 383 -248 288 -16 353 -98 l 405 -248 l 405 517 l 360 517 l 360 12 b 271 94 337 50 305 78 l 271 517 l 225 517 l 225 108 b 180 112 210 112 196 112 b 135 108 163 112 148 112 l 135 517 l 89 517 z',\n },\n accSagittalSharp17kUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 337 -23 b 405 14 363 -23 386 -10 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 68 402 127 364 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalFlat17kDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 517 l 405 517 l 405 -14 b 337 23 386 10 363 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp143CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 337 -23 b 405 14 363 -23 386 -10 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 68 402 127 364 68 l 240 68 b 89 157 140 68 89 98 l 45 157 b 68 53 45 115 52 81 b 0 -203 23 23 0 -63 z',\n },\n accSagittalFlat143CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -53 0 63 23 -23 b 45 -157 52 -81 45 -115 l 89 -157 b 240 -68 89 -98 140 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 517 l 405 517 l 405 -14 b 337 23 386 10 363 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp11v49CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -68 b 135 68 45 23 76 68 l 337 68 b 405 95 363 68 386 76 l 405 -27 b 315 -68 386 -55 356 -68 l 112 -68 b 0 -292 37 -68 0 -143 l 45 -292 b 135 -157 45 -203 75 -157 l 135 -517 l 180 -517 l 180 -157 l 271 -157 l 271 -517 l 315 -517 l 315 -157 l 337 -157 b 405 -130 360 -157 383 -148 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 157 413 187 376 157 l 112 157 b 0 -68 37 157 0 82 z',\n },\n accSagittalFlat11v49CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 68 b 112 -157 0 -82 37 -157 l 315 -157 b 428 -248 376 -157 413 -187 l 449 -248 l 449 517 l 405 517 l 405 130 b 337 157 383 148 360 157 l 315 157 l 315 517 l 271 517 l 271 157 l 180 157 l 180 517 l 135 517 l 135 157 b 45 292 75 157 45 203 l 0 292 b 112 68 0 143 37 68 l 315 68 b 405 27 356 68 386 55 l 405 -95 b 337 -68 386 -76 363 -68 l 135 -68 b 45 68 76 -68 45 -23 z',\n },\n accSagittalSharp19CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 14 b 337 -23 289 -10 311 -23 l 360 -23 l 360 -517 l 405 -517 l 405 -23 b 495 -203 465 -23 495 -82 l 540 -203 b 428 68 540 -23 503 68 l 360 68 b 248 248 310 68 271 128 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z',\n },\n accSagittalFlat19CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 b 360 -68 271 -128 310 -68 l 428 -68 b 540 203 503 -68 540 23 l 495 203 b 405 23 495 82 465 23 l 405 517 l 360 517 l 360 23 l 337 23 b 271 -14 311 23 289 10 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z',\n },\n accSagittalSharp7v19CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 112 l 315 112 b 360 109 331 112 346 112 l 360 -517 l 405 -517 l 405 98 b 495 -68 465 73 495 19 l 495 -248 l 540 -248 l 540 68 b 360 248 540 189 480 248 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z',\n },\n accSagittalFlat7v19CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 360 -248 b 540 -68 480 -248 540 -189 l 540 248 l 495 248 l 495 68 b 405 -98 495 -19 465 -73 l 405 517 l 360 517 l 360 -109 b 315 -112 346 -112 331 -112 l 271 -112 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z',\n },\n accSagittalSharp49SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 112 l 360 112 b 405 109 376 112 390 112 l 405 -517 l 449 -517 l 449 96 b 540 -68 510 72 540 17 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalFlat49SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 449 -96 540 -17 510 -72 l 449 517 l 405 517 l 405 -109 b 360 -112 390 -112 376 -112 l 315 -112 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp23SUp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 71 l 405 -14 l 405 -517 l 449 -517 l 449 -56 l 675 -268 l 675 -112 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalFlat23SDown: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 675 112 l 675 268 l 449 56 l 449 517 l 405 517 l 405 14 l 315 -71 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp5v13MUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 495 141 l 495 14 l 0 -157 l 0 -256 l 225 -180 l 225 -517 l 271 -517 l 271 -161 l 360 -130 l 360 -517 l 405 -517 l 405 -115 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 517 248 b 167 168 366 194 248 168 b 45 248 85 168 45 194 l 0 248 b 95 99 0 170 30 120 l 0 68 l 0 -30 z',\n },\n accSagittalFlat5v13MDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 30 l 0 -68 l 95 -99 b 0 -248 30 -120 0 -170 l 45 -248 b 167 -168 45 -194 85 -168 b 517 -248 248 -168 366 -194 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 115 l 405 517 l 360 517 l 360 130 l 271 161 l 271 517 l 225 517 l 225 180 l 0 256 l 0 157 l 495 -14 l 495 -141 z',\n },\n accSagittalSharp11v19MUp: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 14 b 428 -23 379 -10 402 -23 l 449 -23 l 449 -517 l 495 -517 l 495 -23 b 585 -203 554 -23 585 -84 l 631 -203 b 517 68 631 -23 593 68 l 449 68 b 337 248 400 68 363 127 l 225 248 b 0 68 75 248 0 187 z',\n },\n accSagittalFlat11v19MDown: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 b 449 -68 363 -127 400 -68 l 517 -68 b 631 203 593 -68 631 23 l 585 203 b 495 23 585 84 554 23 l 495 517 l 449 517 l 449 23 l 428 23 b 360 -14 402 23 379 10 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z',\n },\n accSagittalSharp49MUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 225 -180 l 225 -517 l 271 -517 l 271 -166 l 360 -132 l 360 -517 l 405 -517 l 405 -117 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 360 248 b 0 -68 120 248 0 143 z m 45 -145 l 45 -68 b 360 112 45 53 150 112 l 495 112 l 495 14 z',\n },\n accSagittalFlat49MDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 68 b 360 -248 0 -143 120 -248 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 117 l 405 517 l 360 517 l 360 132 l 271 166 l 271 517 l 225 517 l 225 180 l 45 248 l 0 248 z m 495 -14 l 495 -112 l 360 -112 b 45 68 150 -112 45 -53 l 45 145 z',\n },\n accSagittalSharp5v49MUp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -271 l 180 -79 l 180 -517 l 225 -517 l 225 -30 l 315 65 l 315 -517 l 360 -517 l 360 65 l 449 -30 l 449 -517 l 495 -517 l 495 -79 l 675 -271 l 675 -112 l 337 248 b 118 89 239 143 166 89 b 45 157 68 89 45 112 l 0 157 b 107 0 0 62 36 10 l 0 -112 z',\n },\n accSagittalFlat5v49MDown: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 107 0 b 0 -157 36 -10 0 -62 l 45 -157 b 118 -89 45 -112 68 -89 b 337 -248 166 -89 239 -143 l 675 112 l 675 271 l 495 79 l 495 517 l 449 517 l 449 30 l 360 -65 l 360 517 l 315 517 l 315 -65 l 225 30 l 225 517 l 180 517 l 180 79 l 0 271 z',\n },\n accSagittalSharp49LUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -82 l 135 -112 l 135 -517 l 180 -517 l 180 -127 l 271 -157 l 271 -517 l 315 -517 l 315 -173 l 540 -248 l 585 -248 l 585 -68 b 180 248 585 143 449 248 l 0 248 z m 45 112 l 180 112 b 540 -68 420 112 540 53 l 540 -145 l 45 16 z',\n },\n accSagittalFlat49LDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 180 -248 b 585 68 449 -248 585 -143 l 585 248 l 540 248 l 315 173 l 315 517 l 271 517 l 271 157 l 180 127 l 180 517 l 135 517 l 135 112 l 45 82 l 45 517 l 0 517 z m 45 -16 l 540 145 l 540 68 b 180 -112 540 -53 420 -112 l 45 -112 z',\n },\n accSagittalSharp11v19LUp: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -81 l 135 -108 l 135 -517 l 180 -517 l 180 -121 l 271 -148 l 271 -517 l 315 -517 l 315 -161 l 631 -255 l 631 -157 l 45 16 l 45 144 l 631 -30 l 631 68 l 23 248 l 0 248 z',\n },\n accSagittalFlat11v19LDown: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 l 631 -68 l 631 30 l 45 -144 l 45 -16 l 631 157 l 631 255 l 315 161 l 315 517 l 271 517 l 271 148 l 180 121 l 180 517 l 135 517 l 135 108 l 45 81 l 45 517 l 0 517 z',\n },\n accSagittalSharp5v13LUp: {\n x_min: 0,\n x_max: 500,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 -85 l 360 -120 l 360 -517 l 405 -517 l 405 -135 l 720 -256 l 720 -157 l 271 14 l 271 141 l 720 -30 l 720 68 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z',\n },\n accSagittalFlat5v13LDown: {\n x_min: 0,\n x_max: 500,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 720 -68 l 720 30 l 271 -141 l 271 -14 l 720 157 l 720 256 l 405 135 l 405 517 l 360 517 l 360 120 l 271 85 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z',\n },\n accSagittalDoubleSharp23SDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -203 l 45 -203 b 135 -23 45 -82 76 -23 l 301 -23 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 370 -14 b 449 112 423 10 449 53 l 449 248 l 428 248 b 315 68 402 127 364 68 l 240 68 b 89 157 140 68 89 98 l 45 157 b 68 53 45 115 52 81 b 0 -203 23 23 0 -63 z',\n },\n accSagittalDoubleFlat23SUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -53 0 63 23 -23 b 45 -157 52 -81 45 -115 l 89 -157 b 240 -68 89 -98 140 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 -112 b 370 14 449 -53 423 -10 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 301 23 l 135 23 b 45 203 76 23 45 82 z',\n },\n accSagittalDoubleSharp49SDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -292 l 45 -292 b 112 -157 45 -203 68 -157 l 256 -157 l 135 -503 l 187 -517 l 337 -82 l 490 -517 l 540 -503 l 366 0 l 396 89 b 449 157 416 102 435 125 l 449 248 l 428 248 b 315 157 413 187 376 157 l 112 157 b 0 -68 39 157 0 82 l 45 -68 b 135 68 45 23 76 68 l 287 68 l 311 0 l 288 -68 l 89 -68 b 0 -292 32 -68 0 -144 z',\n },\n accSagittalDoubleFlat49SUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 292 b 89 68 0 144 32 68 l 288 68 l 311 0 l 287 -68 l 135 -68 b 45 68 76 -68 45 -23 l 0 68 b 112 -157 0 -82 39 -157 l 315 -157 b 428 -248 376 -157 413 -187 l 449 -248 l 449 -157 b 396 -89 435 -125 416 -102 l 366 0 l 540 503 l 490 517 l 337 82 l 187 517 l 135 503 l 256 157 l 112 157 b 45 292 68 157 45 203 z',\n },\n accSagittalDoubleSharp7v19CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -266 l 307 -7 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 386 59 l 449 112 l 449 248 l 428 248 b 130 68 285 127 186 68 b 45 157 73 68 45 98 l 0 157 b 112 -20 0 53 37 -6 z',\n },\n accSagittalDoubleFlat7v19CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 112 20 b 0 -157 37 6 0 -53 l 45 -157 b 130 -68 45 -98 73 -68 b 428 -248 186 -68 285 -127 l 449 -248 l 449 -112 l 386 -59 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 307 7 l 0 266 l 0 112 z',\n },\n accSagittalDoubleSharp19CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 315 109 45 36 135 95 l 354 0 l 180 -503 l 232 -517 l 383 -82 l 534 -517 l 585 -503 l 410 0 l 449 112 l 495 112 l 495 248 l 360 248 b 0 68 120 248 0 187 z m 372 112 l 393 112 l 383 82 z',\n },\n accSagittalDoubleFlat19CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 360 -248 0 -187 120 -248 l 495 -248 l 495 -112 l 449 -112 l 410 0 l 585 503 l 534 517 l 383 82 l 232 517 l 180 503 l 354 0 l 315 -109 b 45 68 135 -95 45 -36 l 45 248 l 0 248 z m 383 -82 l 393 -112 l 372 -112 z',\n },\n accSagittalDoubleSharp11v49CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 360 112 b 540 -68 480 112 540 53 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalDoubleFlat11v49CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 360 -112 540 -53 480 -112 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalDoubleSharp143CDown: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 337 49 l 675 -268 l 675 -112 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalDoubleFlat143CUp: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 675 112 l 675 268 l 337 -49 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalDoubleSharp17kDown: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 248 b 95 101 0 170 30 121 l 0 68 l 0 -30 l 364 96 l 399 0 l 390 -23 l 0 -157 l 0 -255 l 353 -135 l 225 -503 l 275 -517 l 428 -82 l 577 -517 l 631 -503 l 455 0 l 507 145 l 540 157 l 540 248 l 517 248 b 167 168 366 194 248 168 b 45 248 85 168 45 194 z m 416 115 l 442 124 l 428 82 z',\n },\n accSagittalDoubleFlat17kUp: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -248 b 167 -168 45 -194 85 -168 b 517 -248 248 -168 366 -194 l 540 -248 l 540 -157 l 507 -145 l 455 0 l 631 503 l 577 517 l 428 82 l 275 517 l 225 503 l 353 135 l 0 255 l 0 157 l 390 23 l 399 0 l 364 -96 l 0 30 l 0 -68 l 95 -101 b 0 -248 30 -121 0 -170 z m 428 -82 l 442 -124 l 416 -115 z',\n },\n accSagittalDoubleSharp19sDown: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 271 112 45 53 120 112 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 367 4 b 428 -23 386 -13 405 -23 l 495 -23 b 585 -203 554 -23 585 -84 l 631 -203 b 517 68 631 -23 593 68 l 449 68 b 337 248 400 68 363 127 l 225 248 b 0 68 75 248 0 187 z',\n },\n accSagittalDoubleFlat19sUp: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 b 449 -68 363 -127 400 -68 l 517 -68 b 631 203 593 -68 631 23 l 585 203 b 495 23 585 84 554 23 l 428 23 b 367 -4 405 23 386 13 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 271 -112 b 45 68 120 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittalShaftUp: {\n x_min: 0,\n x_max: 31,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 112 l 0 -517 l 45 -517 l 45 112 l 23 248 z',\n },\n accSagittalShaftDown: {\n x_min: 0,\n x_max: 31,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 23 -248 l 45 -112 l 45 517 l 0 517 l 0 -112 z',\n },\n accSagittalAcute: {\n x_min: 0,\n x_max: 125,\n y_min: -62,\n y_max: 125,\n ha: 187,\n o: 'm 0 0 l 0 -89 l 180 89 l 180 180 z',\n },\n accSagittalGrave: {\n x_min: 0,\n x_max: 125,\n y_min: -125,\n y_max: 62,\n ha: 187,\n o: 'm 180 -180 l 180 -89 l 0 89 l 0 0 z',\n },\n accSagittal1MinaUp: {\n x_min: -7,\n x_max: 124,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 134 150 179 112 163 135 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal1MinaDown: {\n x_min: -7,\n x_max: 124,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 179 -23 163 -135 179 -112 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittal2MinasUp: {\n x_min: -7,\n x_max: 218,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 269 150 314 112 298 135 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal2MinasDown: {\n x_min: -7,\n x_max: 218,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittal1TinaUp: {\n x_min: 0,\n x_max: 93,\n y_min: 16,\n y_max: 107,\n ha: 91,\n o: 'm 134 154 l 91 154 b 81 76 91 101 91 86 b 0 68 73 69 48 68 l 0 23 b 134 154 122 23 134 36 z',\n },\n accSagittal1TinaDown: {\n x_min: 0,\n x_max: 93,\n y_min: -107,\n y_max: -16,\n ha: 91,\n o: 'm 134 -154 b 0 -23 134 -36 122 -23 l 0 -68 b 81 -76 48 -68 73 -69 b 91 -154 91 -86 91 -101 z',\n },\n accSagittal2TinasUp: {\n x_min: 0,\n x_max: 94,\n y_min: 16,\n y_max: 107,\n ha: 91,\n o: 'm 135 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z',\n },\n accSagittal2TinasDown: {\n x_min: 0,\n x_max: 94,\n y_min: -107,\n y_max: -16,\n ha: 91,\n o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 z',\n },\n accSagittal3TinasUp: {\n x_min: -7,\n x_max: 124,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 134 150 179 112 163 135 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal3TinasDown: {\n x_min: -7,\n x_max: 124,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 179 -23 163 -135 179 -112 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittal4TinasUp: {\n x_min: 0,\n x_max: 187,\n y_min: 16,\n y_max: 106.69999999999997,\n ha: 90.69999999999997,\n o: 'm 0 68 l 0 23 b 143 45 105 23 124 26 b 203 107 153 55 183 107 b 226 23 216 107 226 86 l 269 23 b 225 150 269 112 253 135 b 160 132 207 158 181 153 b 115 81 138 112 124 88 b 0 68 104 71 94 68 z',\n },\n accSagittal4TinasDown: {\n x_min: 0,\n x_max: 187,\n y_min: -106.69999999999999,\n y_max: -16,\n ha: 90.69999999999999,\n o: 'm 0 -68 b 115 -81 94 -68 104 -71 b 160 -132 124 -88 138 -112 b 225 -150 181 -153 207 -158 b 269 -23 253 -135 269 -112 l 226 -23 b 203 -107 226 -86 216 -107 b 143 -45 183 -107 153 -55 b 0 -23 124 -26 105 -23 z',\n },\n accSagittal5TinasUp: {\n x_min: 0,\n x_max: 218,\n y_min: 16,\n y_max: 107,\n ha: 91,\n o: 'm 135 23 b 187 45 156 23 168 26 b 249 107 197 55 228 107 b 271 23 262 107 271 86 l 314 23 b 269 150 314 112 298 135 b 204 132 252 158 226 153 b 160 81 183 112 168 88 b 135 68 148 71 147 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z',\n },\n accSagittal5TinasDown: {\n x_min: 0,\n x_max: 218,\n y_min: -107,\n y_max: -16,\n ha: 91,\n o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 b 160 -81 147 -68 148 -71 b 204 -132 168 -88 183 -112 b 269 -150 226 -153 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 249 -107 271 -86 262 -107 b 187 -45 228 -107 197 -55 b 135 -23 168 -26 156 -23 z',\n },\n accSagittal6TinasUp: {\n x_min: -7,\n x_max: 218,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 269 150 314 112 298 135 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal6TinasDown: {\n x_min: -7,\n x_max: 218,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittal7TinasUp: {\n x_min: 0,\n x_max: 281,\n y_min: 16,\n y_max: 106.69999999999997,\n ha: 90.69999999999997,\n o: 'm 0 68 l 0 23 b 143 45 105 23 124 26 b 203 107 153 55 183 107 b 226 23 216 107 226 86 l 269 23 b 298 65 269 23 291 55 b 343 107 314 86 331 107 b 361 23 354 107 363 86 l 405 23 b 360 150 405 112 389 135 b 294 130 343 158 311 150 b 264 92 281 115 272 104 b 225 150 258 127 245 140 b 160 132 207 158 181 153 b 115 81 138 112 124 88 b 0 68 104 71 94 68 z',\n },\n accSagittal7TinasDown: {\n x_min: 0,\n x_max: 281,\n y_min: -106.69999999999999,\n y_max: -16,\n ha: 90.69999999999999,\n o: 'm 0 -68 b 115 -81 94 -68 104 -71 b 160 -132 124 -88 138 -112 b 225 -150 181 -153 207 -158 b 264 -92 245 -140 258 -127 b 294 -130 272 -104 281 -115 b 360 -150 311 -150 343 -158 b 405 -23 389 -135 405 -112 l 361 -23 b 343 -107 363 -86 354 -107 b 298 -65 331 -107 314 -86 b 269 -23 291 -55 269 -23 l 226 -23 b 203 -107 226 -86 216 -107 b 143 -45 183 -107 153 -55 b 0 -23 124 -26 105 -23 z',\n },\n accSagittal8TinasUp: {\n x_min: 0,\n x_max: 312,\n y_min: 16,\n y_max: 107,\n ha: 91,\n o: 'm 135 23 b 187 45 156 23 168 26 b 249 107 197 55 228 107 b 271 23 262 107 271 86 l 314 23 b 343 65 314 23 336 55 b 387 107 359 86 376 107 b 406 23 399 107 408 86 l 449 23 b 405 150 449 112 433 135 b 338 130 387 158 356 150 b 308 92 325 115 317 104 b 269 150 302 127 289 140 b 204 132 252 158 226 153 b 160 81 183 112 168 88 b 135 68 148 71 147 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z',\n },\n accSagittal8TinasDown: {\n x_min: 0,\n x_max: 312,\n y_min: -107,\n y_max: -16,\n ha: 91,\n o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 b 160 -81 147 -68 148 -71 b 204 -132 168 -88 183 -112 b 269 -150 226 -153 252 -158 b 308 -92 289 -140 302 -127 b 338 -130 317 -104 325 -115 b 405 -150 356 -150 387 -158 b 449 -23 433 -135 449 -112 l 406 -23 b 387 -107 408 -86 399 -107 b 343 -65 376 -107 359 -86 b 314 -23 336 -55 314 -23 l 271 -23 b 249 -107 271 -86 262 -107 b 187 -45 228 -107 197 -55 b 135 -23 168 -26 156 -23 z',\n },\n accSagittal9TinasUp: {\n x_min: -7,\n x_max: 312,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 343 65 314 23 336 55 b 387 107 359 86 376 107 b 406 23 399 107 408 86 l 449 23 b 405 150 449 112 433 135 b 338 130 387 158 356 150 b 308 92 325 115 317 104 b 269 150 302 127 289 140 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal9TinasDown: {\n x_min: -7,\n x_max: 312,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 308 -92 289 -140 302 -127 b 338 -130 317 -104 325 -115 b 405 -150 356 -150 387 -158 b 449 -23 433 -135 449 -112 l 406 -23 b 387 -107 408 -86 399 -107 b 343 -65 376 -107 359 -86 b 314 -23 336 -55 314 -23 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittalFractionalTinaUp: {\n x_min: -3,\n x_max: 35,\n y_min: 73,\n y_max: 111,\n ha: 38,\n o: 'm -4 132 b 23 105 -4 118 9 105 b 50 132 37 105 50 118 b 23 160 50 147 37 160 b -4 132 9 160 -4 147 z',\n },\n accSagittalFractionalTinaDown: {\n x_min: -3,\n x_max: 35,\n y_min: -111,\n y_max: -73,\n ha: 38,\n o: 'm -4 -132 b 23 -160 -4 -147 9 -160 b 50 -132 37 -160 50 -147 b 23 -105 50 -118 37 -105 b -4 -132 9 -105 -4 -118 z',\n },\n accidentalNarrowReversedFlat: {\n x_min: 0,\n x_max: 164,\n y_min: -194,\n y_max: 421,\n ha: 615,\n o: 'm 236 -279 l 236 606 l 192 606 l 192 179 b 85 243 150 222 114 243 b 0 84 23 243 0 134 b 112 -158 0 3 37 -78 z m 192 112 l 192 -163 l 135 -98 b 82 40 101 -50 82 -3 b 138 144 82 73 96 144 b 192 112 153 144 170 132 z',\n },\n accidentalNarrowReversedFlatAndFlat: {\n x_min: 0,\n x_max: 414,\n y_min: -194,\n y_max: 421,\n ha: 615,\n o: 'm 281 606 l 281 -268 l 438 -158 b 596 84 547 -82 596 3 b 475 243 596 154 556 243 b 325 179 435 243 384 222 l 325 606 z m 235 -279 l 235 606 l 190 606 l 190 179 b 85 243 148 222 114 243 b 12 158 52 243 27 215 b 0 84 3 134 0 108 b 112 -158 0 3 37 -78 z m 325 111 b 410 144 359 132 386 144 b 498 36 462 144 498 84 b 413 -107 498 -9 469 -58 l 325 -173 z m 192 112 l 192 -163 l 135 -98 b 81 40 99 -50 81 -3 b 91 94 81 59 84 76 b 137 144 102 127 118 144 b 192 112 153 144 170 132 z',\n },\n accidentalWilsonPlus: {\n x_min: 0,\n x_max: 281,\n y_min: -203,\n y_max: 203,\n ha: 406,\n o: 'm 405 268 l 225 98 l 225 292 l 180 292 l 180 56 l 0 -112 l 0 -268 l 180 -98 l 180 -292 l 225 -292 l 225 -56 l 405 112 z',\n },\n accidentalWilsonMinus: {\n x_min: 0,\n x_max: 281,\n y_min: -186,\n y_max: 186,\n ha: 372,\n o: 'm 0 112 l 405 -268 l 405 -112 l 0 268 z',\n },\n },\n fontFamily: 'Bravura',\n resolution: 1000,\n generatedOn: '2022-06-26T17:36:54.186Z',\n};\n","/**\n * The Bravura font was created by Daniel Spreadbury @ Steinberg.\n * https://github.com/steinbergmedia/bravura/\n */\nexport const BravuraMetrics = {\n name: 'Bravura',\n smufl: true,\n stave: {\n padding: 12,\n endPaddingMax: 10,\n endPaddingMin: 5,\n unalignedNotePadding: 10,\n },\n accidental: {\n noteheadAccidentalPadding: 1,\n leftPadding: 2,\n accidentalSpacing: 3,\n },\n clef: {\n default: {\n point: 32,\n width: 26,\n },\n small: {\n point: 26,\n width: 20,\n },\n annotations: {\n '8va': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: -1.4,\n shiftX: 12,\n },\n },\n small: {\n point: 16,\n treble: {\n line: -0.2,\n shiftX: 8,\n },\n },\n },\n '8vb': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: 6,\n shiftX: 10,\n },\n bass: {\n line: 3.5,\n shiftX: 1,\n },\n },\n small: {\n point: 16,\n treble: {\n line: 5.3,\n shiftX: 6,\n },\n bass: {\n line: 3.1,\n shiftX: 0.5,\n },\n },\n },\n },\n // These may no longer be necessary\n lineCount: {\n '8': { point: 55, shiftY: 14 },\n '7': { point: 47, shiftY: 8 },\n '6': { point: 32, shiftY: 1 },\n '5': { point: 30, shiftY: -6 },\n '4': { point: 23, shiftY: -12 },\n },\n },\n parenthesis: {\n default: {\n point: 39,\n width: 7,\n },\n gracenote: {\n point: (39 * 3) / 5,\n width: 3,\n },\n },\n pedalMarking: {\n up: {\n point: 40,\n },\n down: {\n point: 34,\n },\n },\n // These are for numeric digits, such as in time signatures\n digits: {\n // used by timesig\n shiftLine: -1,\n point: 34,\n // used by tuplets\n tupletPoint: 22,\n shiftY: -6,\n },\n articulation: {\n articStaccatissimoAbove: {\n padding: 2,\n },\n articStaccatissimoBelow: {\n padding: 2,\n },\n },\n tremolo: {\n default: {\n point: 25,\n spacing: 5,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 11,\n offsetXStemDown: 1,\n },\n grace: {\n point: 18,\n spacing: 4,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 7,\n offsetXStemDown: 1,\n },\n },\n staveRepetition: {\n symbolText: {\n offsetX: 12,\n offsetY: 25,\n spacing: 5,\n },\n coda: {\n offsetY: 25,\n },\n segno: {\n offsetY: 10,\n },\n },\n // noteHead: {\n // },\n stem: {\n heightAdjustmentForFlag: -3,\n // These are stem (Y) offsets to the note heads. To shift the\n // noteheads (x-position) themselves, see glyphs.notehead.custom.\n noteHead: {\n noteheadTriangleUpHalf: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpBlack: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpWhole: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadXHalf: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXBlack: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXWhole: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadHalf: {\n offsetYBaseStemUp: -2.55,\n offsetYBaseStemDown: 2.65,\n },\n noteheadBlack: {\n offsetYBaseStemUp: -2,\n offsetYBaseStemDown: 2,\n },\n noteheadSquareWhite: {\n offsetYBaseStemDown: -5,\n offsetYBaseStemUp: 5,\n },\n },\n },\n // Values under here are used by the Glyph class to reposition and rescale\n // glyphs based on their category. This should be the first stop for\n // custom font glyph repositioning.\n //\n // The glyph loader first looks up a specific set of settings based on the\n // glyph code, and if not found, uses the defaults from the category. See\n // glyphs.textNote for an example of this.\n //\n // Details in Glyph.lookupFontMetrics.\n glyphs: {\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n segno: {\n shiftX: -7,\n },\n flag: {\n shiftX: -0.75,\n staveTempo: {\n shiftX: -1,\n },\n },\n clef: {\n gClef: {\n default: { scale: 1.1, shiftY: 1 },\n small: { shiftY: 1.5 },\n },\n fClef: {\n default: { shiftY: -0.5 },\n },\n },\n ornament: {\n ornamentTurn: {\n scale: 1.2,\n },\n ornamentTurnSlash: {\n scale: 1.2,\n },\n },\n stringNumber: {\n verticalPadding: 8,\n stemPadding: 2,\n leftPadding: 5,\n rightPadding: 6,\n },\n stroke: {\n arrowheadBlackDown: {\n straight: {\n shiftX: -4.5,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n arrowheadBlackUp: {\n straight: {\n shiftX: -0.85,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n },\n textNote: {\n point: 34,\n breathMarkTick: {\n point: 36,\n shiftY: 9,\n },\n breathMarkComma: {\n point: 36,\n },\n segno: {\n point: 30,\n shiftX: -7,\n shiftY: 8,\n },\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n ornamentTrill: {\n shiftX: -8,\n shiftY: 8,\n },\n ornamentTurn: {\n point: 42,\n },\n ornamentTurnSlash: {\n point: 42,\n },\n ornamentMordent: {\n shiftX: -8,\n },\n ornamentShortTrill: {\n shiftX: -8,\n },\n },\n noteHead: {\n minPadding: 2,\n standard: {\n restQuarterStemUp: {\n point: 35,\n },\n restQuarterStemDown: {\n point: 35,\n },\n },\n custom: {\n noteheadCircleXStemUp: {\n shiftX: 1.5,\n },\n noteheadCircleXStemDown: {\n shiftX: 0.25,\n },\n noteheadDiamondHalfStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondBlackStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondWholeStemUp: {\n shiftX: 1,\n },\n noteheadXHalfStemUp: {\n shiftX: -2,\n },\n noteheadXHalfStemDown: {\n shiftX: 1,\n },\n noteheadXWholeStemUp: {\n shiftX: -4,\n },\n noteheadXWholeStemDown: {\n shiftX: 1,\n },\n noteheadXDoubleWholeStemUp: {\n shiftX: -4,\n },\n noteheadXDoubleWholeStemDown: {\n shiftX: 1,\n },\n noteheadSquareWhiteStemDown: {\n shiftX: 0.25,\n },\n noteheadSquareWhiteStemUp: {\n shiftX: -0.75,\n },\n noteheadSquareBlackStemUp: {\n shiftX: -0.75,\n },\n noteheadTriangleUpWholeStemUp: {\n shiftX: -0.75,\n },\n },\n },\n chordSymbol: {\n global: {\n superscriptOffset: -400,\n subscriptOffset: 300,\n kerningOffset: -250,\n lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'],\n upperKerningText: ['A', 'L'],\n spacing: 100,\n superSubRatio: 0.66,\n },\n csymDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymHalfDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymAugmented: {\n scale: 1,\n leftSideBearing: 0,\n advanceWidth: 530,\n yOffset: 0,\n },\n csymParensLeftTall: {\n scale: 0.8,\n leftSideBearing: -20,\n advanceWidth: 184,\n yOffset: 250,\n },\n csymParensRightTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 189,\n yOffset: 250,\n },\n csymBracketLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 328,\n yOffset: 0,\n },\n csymBracketRightTall: {\n scale: 0.8,\n leftSideBearing: 1,\n advanceWidth: 600,\n yOffset: 0,\n },\n csymParensLeftVeryTall: {\n scale: 0.9,\n leftSideBearing: 50,\n advanceWidth: 121,\n yOffset: 350,\n },\n csymParensRightVeryTall: {\n scale: 0.9,\n leftSideBearing: 0,\n advanceWidth: 111,\n yOffset: 350,\n },\n csymDiagonalArrangementSlash: {\n scale: 0.6,\n leftSideBearing: -1,\n advanceWidth: 990,\n yOffset: 0,\n },\n csymMinor: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 482,\n yOffset: 0,\n },\n csymMajorSeventh: {\n scale: 0.9,\n leftSideBearing: 200,\n yOffset: 0,\n advanceWidth: 600,\n },\n accidentalSharp: {\n scale: 0.75,\n leftSideBearing: 20,\n advanceWidth: 250,\n yOffset: -302,\n },\n accidentalFlat: {\n scale: 0.9,\n leftSideBearing: -20,\n advanceWidth: 226,\n yOffset: -184,\n },\n },\n jazzOrnaments: {\n brassScoop: {\n scale: 1.0,\n xOffset: -12,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 20,\n },\n brassDoitMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 22,\n },\n brassFallLipShort: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassLiftMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 5,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassFallRoughMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 28,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassBend: {\n scale: 1.0,\n xOffset: 2,\n yOffset: -8,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassMuteClosed: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -8,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassMuteOpen: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -7,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassFlip: {\n scale: 1.0,\n xOffset: 10,\n yOffset: 0,\n stemUpYOffset: 7,\n reportedWidth: 10,\n },\n brassJazzTurn: {\n scale: 1.0,\n xOffset: 0,\n yOffset: 0,\n stemUpYOffset: 8,\n reportedWidth: 31,\n },\n brassSmear: {\n scale: 1.0,\n xOffset: 10,\n yOffset: 0,\n stemUpYOffset: 8,\n reportedWidth: 5,\n },\n },\n tuplet: {\n noteHeadOffset: 20,\n stemOffset: 10,\n bottomLine: 4,\n topModifierOffset: 15,\n },\n },\n};\n","export const CustomFont = {\n resolution: 1000,\n fontFamily: 'VexFlowCustom',\n glyphs: {\n noteheadSquareWhite: {\n x_min: 0,\n x_max: 430.75,\n ha: 386,\n o: 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 l 50 150 l 380 150 l 380 -150 l 50 -150 l 50 150 ',\n },\n noteheadSquareBlack: {\n x_min: 0,\n x_max: 430.75,\n ha: 386,\n o: 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 ',\n },\n accidentalBuyukMucennebFlat: {\n x_min: -171.5,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalBakiyeFlat: {\n x_min: -176.9375,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalKucukMucennebSharp: {\n x_min: -1.359375,\n x_max: 255.890625,\n ha: 261,\n o: 'm 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 ',\n },\n accidentalKoron: {\n x_min: -20,\n x_max: 320,\n ha: 257,\n o: 'm -8 200 b -8 210 8 200 16 200 l 20 148 -199 l 23 -615 b 0 -629 9 -629 6 -629 l -21 -612 l -21 -201 l -21 216 l -20 200 m 16 200 l 310 0 l 240 0 l 16 140 l 16 -120 l 240 0 l 310 0 l 16 -200 ',\n },\n accidentalSori: {\n x_min: -10.890625,\n x_max: 299.4375,\n ha: 294,\n o: 'm 44 174 b 51 174 47 174 49 174 b 68 173 55 174 61 174 l 287 112 l 551 40 b 615 20 617 22 609 23 b 626 0 622 16 626 8 b 615 -22 626 -9 622 -18 b 613 -23 613 -23 613 -23 b 613 -23 613 -23 613 -23 b 287 -113 613 -24 597 -29 l 68 -174 b 53 -176 61 -176 57 -176 b 39 -172 47 -176 43 -174 b 27 -151 31 -167 27 -159 b 39 -129 27 -141 31 -133 b 230 -74 43 -124 20 -131 l 370 -36 l 468 -9 b 498 0 484 -4 498 -1 b 468 8 498 0 484 2 l 370 34 l 230 73 b 40 126 28 129 43 124 b 27 149 31 131 27 140 b 44 174 27 161 34 170 m 205 110 l 205 300 b 205 330 245 330 245 300 l 245 300 l 245 -300 b 245 -330 205 -330 205 -300 l 205 -300 l 205 110 l 345 90 m 345 90 l 345 330 b 345 360 385 360 385 330 l 385 330 l 385 -270 b 385 -300 345 -300 345 -270 l 345 -270 l 345 90 ',\n },\n vexAccidentalMicrotonal2: {\n x_min: -1.359375,\n x_max: 386.5625,\n ha: 394,\n o: 'm 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 ',\n },\n vexAccidentalMicrotonal3: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm -146 537 b -138 538 -143 538 -141 538 b -118 525 -129 538 -121 533 b -117 390 -117 522 -117 521 b -115 259 -117 268 -117 259 b -115 259 -115 259 -115 259 b -59 272 -104 263 -62 272 b -39 259 -50 272 -42 267 b -37 209 -38 257 -37 233 b -39 159 -37 185 -38 162 b -85 138 -43 149 -44 149 l -117 131 l -117 21 b -115 -88 -117 -80 -117 -88 b -115 -88 -115 -88 -115 -88 b -59 -75 -104 -84 -62 -75 b -44 -81 -52 -75 -48 -77 b -38 -124 -38 -87 -38 -85 b -38 -138 -38 -124 -38 -138 b -38 -152 -38 -138 -38 -152 b -44 -195 -38 -191 -38 -190 b -85 -209 -48 -200 -48 -200 l -117 -217 l -117 -349 b -118 -486 -117 -481 -117 -482 b -138 -499 -121 -494 -129 -499 b -153 -493 -143 -499 -149 -497 b -159 -415 -158 -487 -159 -496 b -159 -355 -159 -398 -159 -379 b -159 -227 -159 -284 -159 -227 b -205 -238 -159 -227 -180 -232 b -250 -249 -230 -244 -250 -249 b -251 -386 -251 -249 -251 -311 b -252 -525 -251 -521 -251 -522 b -272 -538 -255 -534 -264 -538 b -287 -532 -277 -538 -283 -536 b -293 -452 -292 -527 -293 -536 b -293 -391 -293 -436 -293 -415 b -294 -260 -293 -269 -293 -260 b -294 -260 -294 -260 -294 -260 b -348 -272 -306 -264 -345 -272 b -368 -259 -357 -272 -365 -267 b -369 -209 -369 -257 -369 -233 b -368 -159 -369 -185 -369 -162 b -323 -139 -364 -149 -362 -148 l -293 -131 l -293 -22 b -294 87 -293 80 -293 87 b -294 87 -294 87 -294 87 b -348 75 -306 84 -345 75 b -368 88 -357 75 -365 80 b -369 138 -369 91 -369 114 b -368 188 -369 162 -369 186 b -323 209 -364 198 -362 199 l -293 216 l -293 349 b -292 486 -293 481 -293 482 b -272 499 -288 494 -280 499 b -257 493 -266 499 -261 497 b -251 414 -251 487 -251 496 b -251 354 -251 398 -251 378 b -251 226 -251 284 -251 226 b -205 238 -250 226 -230 231 b -159 249 -180 244 -159 249 b -159 385 -159 249 -159 310 b -157 525 -159 521 -159 522 b -146 537 -156 530 -151 535 z m -159 11 b -159 120 -159 98 -159 120 l -159 120 b -175 116 -160 120 -167 119 b -221 105 -184 114 -204 109 l -251 98 l -251 -12 b -251 -121 -251 -72 -251 -121 b -205 -110 -250 -121 -230 -116 b -159 -99 -180 -104 -159 -99 b -159 11 -159 -99 -159 -49 z m 89 517 b 97 519 92 518 94 519 b 117 505 106 519 114 513 b 119 376 119 502 119 501 l 119 249 l 145 258 b 176 267 169 266 172 267 b 177 267 176 267 177 267 b 196 255 186 267 192 263 l 197 252 l 197 205 b 197 181 197 195 197 187 b 193 149 197 153 197 153 b 152 131 190 144 187 143 l 119 120 l 119 10 b 119 -100 119 -62 119 -100 b 145 -91 120 -100 131 -96 b 173 -82 159 -86 171 -82 b 176 -81 174 -81 175 -81 b 196 -94 185 -81 193 -87 b 198 -151 197 -97 198 -125 b 197 -194 198 -172 197 -192 b 153 -218 193 -203 192 -204 l 119 -230 l 119 -367 l 118 -504 l 117 -507 b 97 -519 113 -514 105 -519 b 82 -512 92 -519 87 -517 b 76 -434 77 -507 76 -516 b 76 -374 76 -418 76 -398 b 76 -245 76 -303 76 -245 b 52 -254 76 -245 65 -249 b 19 -263 34 -260 25 -263 b 6 -257 13 -263 10 -261 b 0 -214 0 -251 0 -253 b 0 -200 0 -210 0 -205 b 0 -188 0 -196 0 -192 b 6 -143 0 -147 0 -149 b 46 -126 10 -139 10 -139 l 76 -115 l 76 -5 b 76 106 76 56 76 106 b 51 98 76 106 64 102 b 18 89 34 92 25 89 b 6 95 13 89 10 91 b 0 139 0 101 0 99 b 0 153 0 143 0 148 b 0 179 0 163 0 172 b 44 225 0 215 3 211 l 76 236 l 76 369 b 78 505 76 501 76 502 b 89 517 80 510 85 515 z ',\n },\n vexAccidentalMicrotonal4: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 283 633 b 291 634 286 634 289 634 b 311 621 300 634 308 629 b 313 505 313 618 313 617 b 313 393 313 443 313 393 b 378 425 313 393 343 407 l 443 458 l 448 458 b 449 458 449 458 449 458 b 471 437 462 458 471 448 b 469 429 471 434 470 432 b 387 382 466 421 469 423 l 313 344 l 313 247 l 313 150 l 315 152 b 433 201 353 184 394 201 b 479 193 448 201 464 198 b 549 86 524 177 549 135 b 526 1 549 59 541 29 b 395 -143 504 -39 475 -71 b 316 -214 351 -182 341 -191 b 292 -229 302 -228 300 -229 b 272 -216 283 -229 275 -224 b 271 55 271 -212 271 -212 b 270 323 271 203 270 323 b 205 291 270 323 241 308 l 140 258 l 135 258 b 134 258 135 258 134 258 b 112 279 121 258 112 267 b 114 287 112 281 113 284 b 196 334 117 295 114 293 l 271 371 l 271 495 b 272 621 271 617 271 618 b 283 633 274 626 279 631 z m 404 133 b 391 134 400 134 395 134 b 384 134 388 134 386 134 b 318 88 358 130 335 114 l 313 81 l 313 -37 l 313 -156 l 316 -152 b 439 83 391 -71 439 22 l 439 84 b 404 133 439 115 430 128 z m -8 633 l -8 633 b 0 634 -6 634 -3 634 b 20 621 8 634 17 629 b 21 384 21 618 21 617 l 21 150 l 24 152 b 141 201 62 184 102 201 b 187 193 157 201 172 198 b 257 86 232 177 257 135 b 234 1 257 59 250 29 b 103 -143 212 -39 183 -71 b 24 -214 60 -182 49 -191 b 0 -229 10 -228 8 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 203 l -21 618 l -20 621 b -8 633 -18 626 -13 631 z m 113 133 l 113 133 b 99 134 109 134 103 134 b 93 134 97 134 94 134 b 26 88 66 130 43 114 l 21 81 l 21 -37 l 21 -156 l 25 -152 b 148 83 99 -71 148 22 l 148 84 b 113 133 148 115 138 128 z ',\n },\n vexNoteHeadRectBlack: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 ',\n },\n vexNoteHeadRectWhite: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 l 50 100 l 380 100 l 380 -100 l 50 -100 l 50 100',\n },\n },\n};\n","export const CustomMetrics = {\n name: 'VexFlowCustom',\n smufl: false,\n glyphs: {},\n};\n","export const GonvilleFont = {\n glyphs: {\n bracketTop: {\n x_min: 0,\n x_max: 559.421875,\n ha: 571,\n o: 'm 544 204 b 548 204 545 204 547 204 b 559 194 555 204 559 199 b 559 190 559 192 559 191 b 530 156 559 188 556 184 b 462 86 510 134 481 104 b 453 76 458 81 454 77 l 446 70 l 441 65 b 434 59 439 63 436 61 l 427 54 b 409 37 426 51 416 44 b 392 23 398 29 394 26 b 387 19 389 22 387 20 b 379 13 386 19 383 16 l 371 8 l 367 5 l 359 -1 l 337 -16 b 285 -48 319 -29 298 -41 l 279 -52 b 186 -95 255 -66 210 -87 l 175 -99 b 23 -129 127 -117 68 -129 b 17 -129 20 -129 19 -129 b 1 -123 2 -129 2 -129 b 0 -49 0 -122 0 -83 b 0 4 0 -22 0 1 b 27 11 2 9 4 9 b 185 31 78 12 145 20 b 198 34 186 31 193 33 b 314 73 234 44 277 58 b 349 88 328 79 340 84 b 353 90 352 90 353 90 b 363 94 353 90 357 93 b 371 98 367 97 371 98 b 428 129 372 98 413 120 b 461 148 441 136 454 144 b 468 151 464 149 466 151 b 472 154 469 152 470 154 b 481 161 473 155 477 158 b 525 190 490 166 518 186 l 534 197 b 540 201 536 198 539 199 b 544 204 541 202 544 204 ',\n },\n bracketBottom: {\n x_min: 0,\n x_max: 559.421875,\n ha: 571,\n o: 'm 5 127 b 14 127 6 127 9 127 b 51 126 25 127 43 127 b 175 98 93 122 138 112 l 186 94 b 279 51 210 86 255 65 b 285 47 280 51 283 48 b 319 27 291 44 311 31 l 326 22 b 359 0 332 19 352 4 l 367 -6 b 371 -9 368 -6 370 -8 l 379 -15 b 387 -22 383 -18 386 -20 l 398 -30 l 411 -40 l 417 -47 l 427 -55 l 434 -61 b 441 -66 436 -62 439 -65 l 446 -72 l 453 -77 l 462 -87 b 558 -188 490 -113 549 -176 b 559 -195 559 -191 559 -194 b 548 -205 559 -201 555 -205 b 541 -204 547 -205 544 -205 b 534 -198 539 -201 536 -199 l 525 -191 b 481 -162 518 -187 490 -167 b 472 -155 477 -159 472 -156 b 468 -152 470 -155 469 -154 b 461 -149 466 -152 464 -151 b 428 -130 454 -145 441 -137 b 371 -99 413 -122 372 -99 b 363 -95 371 -99 367 -98 b 353 -91 357 -94 353 -91 b 348 -90 353 -91 352 -91 b 332 -81 343 -87 341 -86 b 27 -12 230 -37 127 -13 b 0 -5 4 -11 2 -11 b 0 58 0 -2 0 27 b 0 122 0 88 0 120 b 5 127 1 124 4 126 ',\n },\n barlineTick: {\n x_min: -80.3125,\n x_max: 78.9375,\n ha: 81,\n o: 'm 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 ',\n },\n breathMarkTick: {\n x_min: -80.3125,\n x_max: 78.9375,\n ha: 81,\n o: 'm 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 ',\n },\n segno: {\n x_min: -330.75,\n x_max: 329.390625,\n ha: 336,\n o: 'm -133 483 b -117 484 -127 484 -122 484 b 31 373 -51 484 9 440 b 35 348 34 365 35 356 b -25 285 35 313 10 285 b -87 331 -55 285 -76 302 b -167 402 -100 376 -133 402 b -191 398 -175 402 -183 401 b -227 341 -215 388 -227 369 b -225 320 -227 334 -227 327 b -13 74 -209 230 -125 133 b 6 65 -4 70 5 66 l 9 63 l 10 65 b 117 231 12 68 40 112 l 189 341 l 242 424 b 268 460 262 456 264 458 b 283 464 273 463 277 464 b 308 438 296 464 308 453 l 308 437 b 287 396 308 430 308 428 l 95 98 l 59 43 l 58 41 l 65 37 b 253 -156 151 -8 217 -77 b 281 -285 272 -199 281 -244 b 148 -481 281 -381 231 -463 b 115 -485 137 -484 126 -485 b -32 -376 51 -485 -9 -442 b -36 -349 -35 -366 -36 -358 b 25 -287 -36 -315 -12 -287 b 85 -333 54 -287 74 -302 b 166 -403 99 -377 133 -403 b 190 -399 174 -403 182 -402 b 225 -342 215 -390 225 -370 b 224 -322 225 -335 225 -328 b 12 -76 208 -231 125 -134 b -8 -66 2 -72 -6 -68 l -10 -65 l -12 -66 b -118 -231 -13 -68 -42 -113 l -190 -342 l -243 -426 b -269 -462 -264 -458 -265 -458 b -284 -466 -274 -464 -279 -466 b -310 -440 -298 -466 -310 -455 l -310 -438 b -288 -398 -310 -430 -308 -430 l -96 -99 l -59 -44 l -59 -43 l -66 -38 b -281 284 -198 33 -281 158 l -281 284 b -133 483 -281 392 -220 474 m 254 177 b 266 179 258 177 262 179 b 319 149 287 179 307 167 b 329 115 326 140 329 127 b 319 79 329 102 326 90 b 268 51 307 61 287 51 b 221 72 250 51 234 58 b 205 115 210 84 205 99 b 254 177 205 142 223 170 m -281 -54 b -269 -52 -277 -52 -273 -52 b -223 -73 -253 -52 -235 -59 b -206 -116 -212 -84 -206 -101 b -216 -151 -206 -129 -209 -141 b -269 -179 -228 -170 -249 -179 b -314 -159 -285 -179 -302 -173 b -330 -116 -325 -147 -330 -131 b -281 -54 -330 -88 -313 -61 ',\n },\n coda: {\n x_min: -311.6875,\n x_max: 310.328125,\n ha: 317,\n o: 'm -9 388 b -2 390 -8 390 -5 390 b 5 388 1 390 4 390 b 19 378 10 387 16 383 b 23 333 23 371 23 371 b 24 298 23 299 24 298 b 81 276 34 298 65 285 b 213 91 145 240 190 177 b 224 24 217 76 224 36 b 257 24 224 24 235 24 b 299 19 292 24 292 24 b 310 -1 306 15 310 6 b 299 -23 310 -11 306 -19 b 257 -27 292 -27 292 -27 b 224 -29 235 -27 224 -29 b 213 -95 224 -40 217 -80 b 81 -280 190 -181 145 -244 b 24 -301 65 -290 34 -301 b 23 -335 24 -301 23 -303 l 23 -340 b 17 -381 23 -374 23 -374 b -1 -391 13 -388 5 -391 b -21 -381 -9 -391 -17 -388 b -27 -340 -27 -374 -27 -374 l -27 -335 b -28 -301 -27 -303 -27 -301 b -85 -280 -38 -301 -69 -290 b -217 -95 -149 -244 -194 -181 b -228 -29 -221 -80 -228 -40 b -259 -27 -228 -29 -238 -27 b -300 -23 -294 -27 -294 -27 b -311 -2 -307 -19 -311 -11 b -294 23 -311 8 -304 19 b -259 24 -291 23 -284 24 b -228 24 -239 24 -228 24 b -217 91 -228 36 -221 76 b -85 276 -194 177 -149 240 b -28 298 -69 285 -38 298 b -27 333 -27 298 -27 299 b -27 371 -27 362 -27 369 b -9 388 -24 378 -17 385 m -27 136 b -28 247 -27 197 -28 247 b -61 216 -31 247 -53 226 b -123 33 -95 172 -121 98 l -125 24 l -76 24 l -27 24 l -27 136 m 29 242 b 24 247 27 245 24 247 b 23 136 24 247 23 197 l 23 24 l 72 24 l 121 24 l 119 33 b 29 242 115 116 77 206 m -27 -140 l -27 -27 l -76 -27 l -125 -27 l -123 -36 b -61 -220 -121 -102 -95 -176 b -28 -251 -53 -230 -31 -251 b -27 -140 -28 -251 -27 -201 m 119 -36 l 121 -27 l 72 -27 l 23 -27 l 23 -140 b 24 -251 23 -201 24 -251 b 57 -220 27 -251 49 -230 b 119 -36 91 -176 117 -102 ',\n },\n gClef: {\n x_min: -1.359375,\n x_max: 847.96875,\n ha: 865,\n o: 'm 488 1499 b 495 1500 490 1500 492 1500 b 541 1465 507 1500 521 1490 b 679 1078 622 1372 679 1210 b 677 1050 679 1068 677 1060 b 477 642 668 893 604 764 l 443 609 l 431 596 l 431 592 l 438 562 l 449 508 l 460 458 b 481 355 475 390 481 355 b 481 355 481 355 481 355 b 490 356 481 355 485 355 b 528 358 495 356 511 358 b 558 356 540 358 552 356 b 839 95 699 338 808 237 b 847 22 845 72 847 47 b 631 -303 847 -113 766 -242 b 620 -309 623 -308 620 -309 l 620 -310 b 631 -359 620 -310 626 -333 l 646 -435 l 660 -496 b 672 -588 668 -535 672 -563 b 664 -653 672 -610 669 -630 b 383 -875 630 -792 509 -875 b 201 -810 321 -875 257 -855 b 129 -680 151 -768 129 -730 b 274 -530 129 -592 200 -530 b 351 -553 300 -530 326 -538 b 412 -669 393 -582 412 -626 b 287 -805 412 -735 366 -800 l 279 -805 l 285 -809 b 383 -830 318 -823 351 -830 b 586 -718 464 -830 540 -789 b 626 -584 612 -678 626 -631 b 619 -528 626 -566 623 -548 b 612 -495 619 -526 616 -510 b 577 -324 590 -387 577 -324 b 577 -324 577 -324 577 -324 b 568 -326 575 -324 571 -324 b 528 -334 558 -328 537 -333 b 465 -338 506 -337 485 -338 b 24 -11 269 -338 87 -206 b -1 145 8 41 -1 93 b 96 442 -1 249 32 351 b 322 714 166 541 236 626 l 352 745 l 345 782 l 332 843 l 315 921 b 303 984 310 950 304 978 b 295 1082 298 1017 295 1049 b 413 1426 295 1208 336 1329 b 488 1499 436 1456 477 1496 m 549 1301 b 541 1301 547 1301 544 1301 b 411 1207 500 1301 447 1263 b 355 1004 374 1152 355 1079 b 359 942 355 984 356 963 b 371 881 362 927 363 917 l 385 818 b 392 782 389 799 392 784 l 392 782 b 434 828 393 782 424 816 b 607 1165 534 941 594 1060 b 608 1193 608 1175 608 1183 b 597 1270 608 1224 604 1254 b 549 1301 589 1286 571 1299 m 398 528 b 393 555 396 542 393 553 b 392 555 393 555 393 555 b 317 470 390 555 347 505 b 190 298 266 408 212 334 b 127 70 148 227 127 148 b 155 -77 127 19 137 -30 b 468 -303 209 -216 333 -303 b 519 -299 484 -303 502 -302 b 568 -284 541 -295 568 -287 l 568 -284 b 563 -263 568 -284 566 -274 l 534 -120 l 511 -13 l 496 61 l 480 133 b 469 187 472 176 469 187 b 468 188 469 187 469 188 b 416 162 462 188 430 172 b 337 13 364 126 337 69 b 413 -124 337 -40 363 -93 b 428 -144 424 -131 428 -137 b 428 -149 428 -145 428 -148 b 409 -166 426 -161 419 -166 b 394 -162 405 -166 400 -165 b 240 77 302 -122 240 -27 l 240 77 b 430 342 240 197 315 301 l 436 344 l 426 394 l 398 528 m 548 194 b 526 195 540 195 532 195 b 519 195 524 195 521 195 l 514 195 l 518 177 l 539 79 l 552 15 l 566 -48 l 594 -187 l 605 -240 b 612 -266 609 -254 611 -266 b 612 -266 612 -266 612 -266 b 641 -248 613 -266 630 -256 b 744 -98 692 -212 730 -156 b 751 -40 749 -79 751 -59 b 548 194 751 76 665 181 ',\n },\n cClef: {\n x_min: 0,\n x_max: 873.828125,\n ha: 892,\n o: 'm 0 0 l 0 703 l 81 703 l 164 703 l 164 0 l 164 -705 l 81 -705 l 0 -705 l 0 0 m 225 0 l 225 703 l 246 703 l 268 703 l 268 366 l 268 30 l 274 36 b 314 79 284 44 302 63 b 413 302 357 137 392 213 b 432 327 419 324 421 327 b 449 306 443 327 447 322 b 611 115 457 195 529 115 b 651 122 624 115 638 117 b 728 316 705 140 724 188 b 729 388 728 342 729 366 b 671 635 729 533 711 602 b 581 662 649 652 616 662 b 477 637 545 662 510 653 l 475 635 l 477 634 b 503 627 488 632 495 631 b 545 556 532 612 545 584 b 491 480 545 524 526 491 b 465 474 481 476 473 474 b 379 563 417 474 379 516 b 389 602 379 576 382 588 b 541 691 409 641 479 681 b 582 694 555 692 568 694 b 865 462 714 694 834 598 b 873 392 871 440 873 416 b 865 317 873 367 871 341 b 639 84 839 194 748 101 b 612 83 630 83 620 83 b 511 116 577 83 543 94 b 504 120 509 119 506 120 b 504 120 504 120 504 120 b 469 59 504 120 488 93 l 432 -1 l 469 -61 b 504 -122 488 -94 504 -122 b 504 -122 504 -122 504 -122 b 511 -117 506 -122 509 -120 b 612 -84 543 -95 577 -84 b 665 -91 630 -84 647 -87 b 869 -338 771 -122 850 -216 b 873 -392 872 -356 873 -374 b 798 -595 873 -469 847 -539 b 581 -695 741 -662 660 -695 b 406 -626 517 -695 454 -671 b 381 -563 389 -607 381 -585 b 465 -477 381 -519 413 -477 b 545 -559 514 -477 545 -519 b 503 -628 545 -587 532 -613 b 477 -635 495 -632 488 -634 l 475 -637 l 477 -638 b 581 -663 510 -655 545 -663 b 671 -637 616 -663 649 -653 b 729 -391 711 -603 729 -534 b 728 -317 729 -367 728 -344 b 623 -117 722 -173 698 -124 b 611 -116 619 -116 615 -116 b 449 -308 528 -116 457 -198 b 432 -328 447 -323 443 -328 b 413 -303 421 -328 419 -326 b 314 -80 392 -215 357 -138 b 274 -37 302 -65 284 -45 l 268 -31 l 268 -367 l 268 -705 l 246 -705 l 225 -705 l 225 0 ',\n },\n fClef: {\n x_min: -1.359375,\n x_max: 899.703125,\n ha: 918,\n o: 'm 307 349 b 332 351 315 351 323 351 b 443 340 367 351 408 347 b 741 47 607 306 720 195 b 744 0 743 31 744 16 b 660 -303 744 -90 713 -206 b 28 -755 534 -531 304 -695 b 14 -756 23 -755 19 -756 b -1 -741 4 -756 -1 -750 b 21 -720 -1 -731 1 -728 b 567 -56 337 -601 548 -344 b 568 -11 568 -41 568 -24 b 442 285 568 129 525 233 b 325 319 406 308 367 319 b 93 177 232 319 137 266 b 84 154 91 170 84 155 b 84 154 84 154 84 154 b 88 156 84 154 85 155 b 159 177 110 170 134 177 b 257 134 194 177 231 162 b 294 41 281 108 294 73 b 171 -97 294 -24 246 -90 b 156 -98 166 -97 161 -98 b 6 74 73 -98 6 -22 b 6 80 6 76 6 79 b 307 349 10 223 141 340 m 839 215 b 845 216 841 216 842 216 b 862 213 852 216 860 215 b 899 163 887 206 899 184 b 872 117 899 145 890 127 b 847 111 865 112 856 111 b 808 130 833 111 818 117 b 796 162 800 140 796 151 b 839 215 796 187 812 212 m 839 -112 b 845 -112 841 -112 842 -112 b 862 -115 852 -112 860 -113 b 899 -165 887 -122 899 -144 b 872 -210 899 -183 890 -201 b 847 -217 865 -215 856 -217 b 808 -198 833 -217 818 -210 b 796 -165 800 -188 796 -177 b 839 -112 796 -140 812 -116 ',\n },\n unpitchedPercussionClef1: {\n x_min: 0,\n x_max: 464.140625,\n ha: 474,\n o: 'm 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 ',\n },\n '6stringTabClef': {\n x_min: -1.359375,\n x_max: 680.5625,\n ha: 694,\n o: 'm 597 1042 b 604 1042 600 1042 602 1042 b 642 1002 627 1042 642 1022 b 619 966 642 988 635 974 b 439 927 574 942 503 927 l 426 927 l 426 921 b 430 838 428 893 430 866 b 345 480 430 696 398 560 b 179 391 307 423 249 391 b 156 392 171 391 164 392 b 138 394 149 394 142 394 b 103 434 115 396 103 416 b 129 471 103 451 111 466 b 141 474 133 473 137 474 b 172 459 153 474 164 469 b 181 455 175 456 176 455 b 187 456 182 455 185 455 b 253 520 212 460 234 483 b 315 836 294 605 315 714 b 311 928 315 867 314 898 b 302 945 310 943 311 942 b 245 953 283 950 262 953 b 130 891 193 953 149 931 b 84 860 119 870 102 860 b 36 905 61 860 39 877 b 36 910 36 907 36 909 b 80 970 36 931 50 949 b 249 1017 125 1000 187 1017 b 322 1009 273 1017 299 1014 l 341 1003 b 436 991 372 995 406 991 b 577 1031 495 991 545 1004 b 597 1042 583 1038 590 1041 m 416 360 b 424 360 419 360 421 360 b 481 309 454 360 479 338 b 503 145 484 280 495 199 b 585 -185 525 16 555 -106 b 630 -245 596 -213 613 -237 l 634 -247 l 638 -245 b 647 -244 641 -245 645 -244 b 680 -278 666 -244 680 -262 b 664 -308 680 -290 675 -301 b 638 -312 658 -310 650 -312 b 613 -309 631 -312 623 -310 b 477 -201 555 -303 502 -260 b 417 -2 460 -159 434 -72 b 416 5 417 1 416 5 b 416 5 416 5 416 5 b 411 -5 415 5 413 0 b 359 -97 397 -33 377 -70 b 353 -106 355 -102 353 -105 b 359 -112 353 -108 355 -109 b 409 -130 375 -123 390 -129 b 426 -134 420 -130 421 -131 b 431 -147 428 -137 431 -141 b 420 -162 431 -152 427 -159 b 382 -169 409 -166 396 -169 b 323 -155 363 -169 341 -165 l 317 -152 l 314 -155 b 62 -303 240 -240 148 -295 b 36 -305 55 -305 44 -305 b 23 -303 29 -305 24 -305 b -1 -273 6 -299 -1 -287 b 31 -240 -1 -256 10 -240 b 36 -240 32 -240 34 -240 b 42 -241 38 -241 39 -241 b 134 -204 63 -241 99 -226 b 367 288 265 -115 357 81 b 375 330 368 313 370 320 b 416 360 383 347 400 358 m 360 -359 b 379 -359 363 -359 371 -359 b 424 -360 396 -359 416 -359 b 646 -502 536 -373 624 -430 b 649 -527 649 -510 649 -519 b 530 -673 649 -578 604 -635 l 521 -677 l 529 -681 b 653 -811 592 -714 637 -762 b 660 -853 658 -827 660 -839 b 645 -911 660 -873 656 -892 b 426 -1021 608 -981 519 -1021 b 283 -989 377 -1021 328 -1011 b 235 -949 249 -972 239 -964 b 234 -936 234 -946 234 -941 b 234 -928 234 -934 234 -931 l 235 -925 l 234 -927 l 225 -934 b 87 -982 186 -966 138 -982 b 80 -982 85 -982 83 -982 b 55 -981 70 -981 58 -981 b 17 -943 32 -981 17 -964 b 54 -904 17 -921 35 -904 b 78 -914 62 -904 72 -909 l 83 -918 l 88 -918 b 190 -831 122 -918 166 -881 b 269 -506 242 -727 269 -612 b 268 -462 269 -492 269 -477 b 266 -449 266 -458 266 -452 b 265 -444 266 -445 266 -444 b 257 -446 264 -444 261 -445 b 132 -545 196 -470 152 -505 b 88 -573 122 -563 104 -573 b 39 -523 63 -573 39 -553 b 63 -476 39 -505 44 -494 b 360 -359 136 -408 235 -369 m 419 -424 b 393 -423 411 -423 406 -423 l 375 -423 l 377 -426 b 379 -439 377 -427 378 -434 b 383 -510 382 -463 383 -487 b 314 -811 383 -609 360 -710 b 266 -893 296 -850 285 -870 b 264 -898 265 -896 264 -898 l 264 -898 b 264 -898 264 -898 264 -898 b 268 -898 264 -898 266 -898 b 273 -898 270 -898 272 -898 b 300 -909 283 -898 291 -900 b 426 -957 340 -941 385 -957 b 476 -949 443 -957 460 -954 b 547 -853 522 -931 547 -893 b 485 -745 547 -816 526 -775 b 397 -707 460 -727 432 -714 b 366 -675 375 -703 366 -692 b 396 -642 366 -657 377 -645 b 530 -557 455 -637 511 -601 b 536 -527 534 -548 536 -537 b 419 -424 536 -480 490 -437 ',\n },\n timeSig0: {\n x_min: 0,\n x_max: 514.5,\n ha: 525,\n o: 'm 236 648 b 246 648 238 648 242 648 b 288 646 261 648 283 648 b 472 513 364 634 428 587 b 514 347 502 464 514 413 b 462 163 514 272 499 217 b 257 44 409 83 333 44 b 50 163 181 44 103 83 b 0 347 14 217 0 272 b 40 513 0 413 12 464 b 236 648 87 591 155 638 m 277 614 b 253 616 273 616 261 616 b 242 616 247 616 243 616 b 170 499 193 609 181 589 b 159 348 163 446 159 398 b 166 222 159 308 161 266 b 201 91 174 138 183 106 b 257 76 215 81 235 76 b 311 91 277 76 299 81 b 347 222 330 106 338 138 b 353 348 352 266 353 308 b 344 499 353 398 351 446 b 277 614 333 587 322 606 m 257 -1 l 258 -1 l 255 -1 l 257 -1 m 257 673 l 258 673 l 255 673 l 257 673 ',\n },\n timeSig1: {\n x_min: -1.359375,\n x_max: 344.359375,\n ha: 351,\n o: 'm 126 637 l 129 638 l 198 638 l 266 638 l 269 635 b 274 631 272 634 273 632 l 277 627 l 277 395 b 279 156 277 230 277 161 b 329 88 281 123 295 106 b 344 69 341 81 344 79 b 337 55 344 62 343 59 l 333 54 l 197 54 l 61 54 l 58 55 b 50 69 53 59 50 62 b 65 88 50 79 53 81 b 80 97 72 91 74 93 b 117 156 103 113 112 129 b 117 345 117 161 117 222 l 117 528 l 100 503 l 38 406 b 14 383 24 384 23 383 b -1 398 5 383 -1 390 b 4 415 -1 403 1 409 b 16 437 5 416 10 426 l 72 539 l 100 596 b 121 632 119 631 119 631 b 126 637 122 634 125 635 m 171 -1 l 172 -1 l 170 -1 l 171 -1 m 171 673 l 172 673 l 170 673 l 171 673 ',\n },\n timeSig2: {\n x_min: -1.359375,\n x_max: 458.6875,\n ha: 468,\n o: 'm 197 648 b 216 648 201 648 208 648 b 258 646 232 648 253 648 b 419 546 333 637 393 599 b 432 489 428 528 432 509 b 356 342 432 440 405 384 b 235 278 322 313 288 295 b 69 170 166 256 107 217 b 69 169 69 170 69 169 b 69 169 69 169 69 169 b 74 173 69 169 72 170 b 209 222 112 204 163 222 b 310 195 247 222 274 215 b 371 179 332 184 352 179 b 396 181 379 179 387 179 b 428 202 409 184 423 194 b 442 212 431 209 436 212 b 458 197 450 212 458 206 b 441 148 458 190 449 165 b 299 44 409 84 353 44 b 288 45 295 44 292 44 b 250 61 274 45 268 49 b 122 99 212 86 164 99 b 73 91 104 99 88 97 b 28 63 53 84 34 72 b 14 54 25 56 20 54 b 1 62 9 54 4 56 l -1 65 l -1 79 b 0 99 -1 91 0 95 b 2 113 1 102 2 108 b 164 309 20 197 81 272 b 285 470 232 341 277 398 b 287 487 287 476 287 481 b 171 595 287 551 239 595 b 155 595 166 595 160 595 b 142 592 145 594 142 594 b 145 589 142 592 142 591 b 179 527 168 576 179 551 b 132 455 179 496 163 467 b 104 451 122 452 112 451 b 27 530 62 451 27 487 b 29 555 27 538 27 546 b 197 648 44 601 115 639 m 228 -1 l 230 -1 l 227 -1 l 228 -1 m 228 673 l 230 673 l 227 673 l 228 673 ',\n },\n timeSig3: {\n x_min: -1.359375,\n x_max: 409.6875,\n ha: 418,\n o: 'm 174 648 b 191 648 176 648 183 648 b 225 648 204 648 220 648 b 402 523 317 638 389 588 b 404 503 404 517 404 510 b 402 484 404 495 404 488 b 264 373 389 437 334 394 b 257 370 259 371 257 371 b 257 370 257 370 257 370 b 264 369 258 370 261 369 b 409 202 359 334 409 267 b 318 72 409 152 381 104 b 200 43 281 52 240 43 b 23 113 134 43 69 68 b 0 169 6 129 0 149 b 77 249 0 210 29 249 l 77 249 b 152 174 125 249 152 212 b 103 102 152 145 137 116 b 103 102 103 102 103 102 b 147 94 103 101 132 95 b 153 94 149 94 151 94 b 265 206 219 94 265 141 b 264 226 265 213 265 219 b 147 355 253 299 204 353 b 126 371 133 356 126 362 b 147 388 126 383 132 388 b 254 474 196 391 238 424 b 259 502 258 484 259 494 b 182 592 259 544 228 582 b 156 595 175 595 166 595 b 115 592 142 595 129 594 l 111 591 l 115 588 b 152 524 141 574 152 549 b 92 449 152 491 130 458 b 76 448 87 448 81 448 b -1 530 32 448 -1 488 b 20 581 -1 548 5 566 b 174 648 55 619 108 641 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 ',\n },\n timeSig4: {\n x_min: 0,\n x_max: 468.21875,\n ha: 478,\n o: 'm 174 637 b 232 638 175 638 189 638 b 277 638 245 638 259 638 l 378 638 l 381 635 b 389 623 386 632 389 627 b 382 609 389 617 386 613 b 366 589 381 606 372 598 l 313 528 l 245 451 l 209 410 l 155 348 l 84 267 b 59 240 72 252 59 240 b 59 240 59 240 59 240 b 151 238 59 238 68 238 l 242 238 l 242 303 b 243 371 242 369 242 370 b 289 426 245 374 254 385 l 303 441 l 317 456 l 338 483 l 360 506 l 371 520 b 386 527 375 526 381 527 b 400 519 392 527 397 524 b 401 440 401 516 401 514 b 401 377 401 423 401 402 l 401 238 l 426 238 b 453 237 449 238 450 238 b 465 217 461 234 465 226 b 460 202 465 212 464 206 b 426 197 454 197 453 197 l 401 197 l 401 180 b 451 88 402 129 412 109 b 468 69 465 81 468 79 b 461 55 468 62 466 59 l 458 54 l 321 54 l 185 54 l 182 55 b 175 69 176 59 175 62 b 191 88 175 79 176 81 b 240 180 230 109 240 129 l 240 197 l 125 197 b 73 195 104 195 87 195 b 8 197 10 195 9 197 b 0 212 2 199 0 205 b 0 212 0 212 0 212 b 20 242 0 219 0 219 b 163 610 104 344 163 492 b 174 637 163 628 166 634 m 234 -1 l 235 -1 l 232 -1 l 234 -1 m 234 673 l 235 673 l 232 673 l 234 673 ',\n },\n timeSig5: {\n x_min: 0,\n x_max: 409.6875,\n ha: 418,\n o: 'm 47 637 b 53 638 49 638 50 638 b 69 634 55 638 61 637 b 210 610 114 619 161 610 b 363 634 259 610 311 619 b 382 638 372 637 378 638 b 392 634 386 638 389 637 b 397 623 396 630 397 627 b 393 610 397 620 396 616 b 298 505 368 552 338 520 b 212 494 277 498 246 494 b 65 517 163 494 106 502 b 61 517 62 517 61 517 b 61 517 61 517 61 517 b 51 408 61 517 51 412 b 51 408 51 408 51 408 b 51 408 51 408 51 408 b 61 412 53 408 55 409 b 125 434 80 421 103 430 b 185 441 145 440 166 441 b 409 244 310 441 409 353 b 401 191 409 227 406 209 b 197 43 375 105 287 43 b 159 47 183 43 171 44 b 23 123 112 56 61 86 b 0 180 6 140 0 159 b 76 260 0 220 31 260 b 92 259 81 260 87 259 b 152 183 132 251 152 216 b 100 112 152 152 134 122 b 95 111 98 112 95 111 b 95 111 95 111 95 111 b 129 98 95 109 119 101 b 148 97 136 97 141 97 b 264 235 206 97 261 158 b 265 248 265 240 265 244 b 210 398 265 312 243 373 b 179 408 201 406 194 408 b 174 408 178 408 176 408 b 53 369 130 408 88 394 b 34 359 39 359 38 359 b 17 374 24 359 17 365 b 39 628 17 384 38 625 b 47 637 40 631 43 635 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 ',\n },\n timeSig6: {\n x_min: 0,\n x_max: 475.03125,\n ha: 485,\n o: 'm 255 648 b 274 648 259 648 266 648 b 314 646 288 648 307 648 b 450 555 374 637 438 594 b 454 530 453 546 454 538 b 375 451 454 485 416 451 b 328 467 359 451 343 455 b 300 526 310 483 300 503 b 352 598 300 557 319 589 b 356 599 355 598 356 599 b 352 602 356 599 355 601 b 288 616 330 612 308 616 b 210 584 257 616 230 605 b 164 433 189 559 174 508 b 160 374 163 415 160 381 b 160 374 160 374 160 374 b 160 374 160 374 160 374 b 168 377 160 374 164 376 b 258 395 200 390 228 395 b 366 367 294 395 328 387 b 475 223 436 333 475 283 b 472 197 475 215 473 206 b 349 65 462 141 419 95 b 259 43 317 51 288 43 b 167 69 230 43 200 52 b 4 290 80 113 20 195 b 0 349 1 309 0 328 b 20 467 0 391 6 433 b 255 648 58 563 155 637 m 269 363 b 257 363 265 363 261 363 b 210 345 236 363 220 356 b 186 226 196 324 186 272 b 187 198 186 216 186 206 b 213 95 191 151 202 112 b 257 76 221 83 238 76 b 270 77 261 76 266 76 b 321 156 299 81 310 99 b 329 229 326 183 329 206 b 321 301 329 252 326 274 b 269 363 311 342 298 359 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 ',\n },\n timeSig7: {\n x_min: 0,\n x_max: 442.359375,\n ha: 451,\n o: 'm 147 648 b 166 649 153 649 160 649 b 313 598 217 649 273 630 b 340 587 323 588 328 587 l 341 587 b 412 628 367 587 390 601 b 427 638 416 635 421 638 b 439 632 431 638 435 637 b 442 623 441 630 442 628 b 430 569 442 616 439 603 b 352 369 408 492 377 410 b 300 259 325 324 313 298 b 273 84 283 205 273 140 b 265 55 273 65 272 59 l 261 54 l 181 54 l 99 54 l 96 55 b 91 61 95 56 92 59 l 89 63 l 89 77 b 147 263 89 133 111 202 b 261 401 176 313 212 355 b 378 541 315 449 349 489 l 382 548 l 375 544 b 240 495 333 512 285 495 b 129 535 198 495 160 509 b 84 560 108 552 95 560 b 76 559 81 560 78 560 b 31 487 59 555 43 530 b 14 470 27 473 24 470 b 1 477 8 470 4 471 l 0 480 l 0 553 l 0 627 l 1 630 b 16 638 4 635 9 638 b 23 635 17 638 20 637 b 49 626 36 626 39 626 b 96 638 59 626 80 630 b 104 639 99 638 102 639 b 117 644 107 641 112 642 b 147 648 125 645 137 648 m 220 -1 l 221 -1 l 219 -1 l 220 -1 m 220 673 l 221 673 l 219 673 l 220 673 ',\n },\n timeSig8: {\n x_min: 0,\n x_max: 488.640625,\n ha: 499,\n o: 'm 217 648 b 245 649 225 648 235 649 b 453 516 343 649 430 595 b 458 478 455 503 458 491 b 412 370 458 440 441 398 b 411 369 412 369 411 369 b 415 365 411 367 412 367 b 488 231 462 331 488 281 b 472 165 488 208 483 186 b 243 43 434 86 338 43 b 63 104 178 43 112 62 b 0 233 20 140 0 186 b 73 365 0 283 24 331 l 77 369 l 72 374 b 29 476 42 406 29 441 b 217 648 29 557 103 635 m 258 605 b 242 606 253 605 247 606 b 157 552 198 606 157 580 b 160 541 157 548 159 544 b 319 413 176 503 242 452 l 337 403 l 338 406 b 359 476 352 428 359 452 b 258 605 359 537 318 595 m 138 326 b 130 330 134 328 130 330 b 130 330 130 330 130 330 b 107 305 127 330 112 313 b 84 231 91 281 84 256 b 243 86 84 156 151 86 b 249 87 245 86 246 87 b 347 156 303 88 347 120 b 344 172 347 162 345 167 b 156 319 325 227 257 281 b 138 326 151 322 144 324 m 243 -1 l 245 -1 l 242 -1 l 243 -1 m 243 673 l 245 673 l 242 673 l 243 673 ',\n },\n timeSig9: {\n x_min: 0,\n x_max: 475.03125,\n ha: 485,\n o: 'm 191 646 b 212 649 198 648 205 649 b 255 644 227 649 243 646 b 458 448 348 616 428 539 b 475 342 469 415 475 378 b 460 244 475 308 469 274 b 193 44 421 124 303 44 b 91 69 157 44 122 51 b 19 161 43 97 19 126 b 21 181 19 167 20 174 b 98 241 32 220 65 241 b 170 186 129 241 160 223 b 172 166 171 179 172 173 b 121 94 172 134 152 102 b 117 93 118 94 117 93 b 121 90 117 93 118 91 b 185 76 142 80 164 76 b 270 119 220 76 251 91 b 308 259 287 145 300 194 b 313 317 310 277 313 310 b 313 317 313 317 313 317 b 313 317 313 317 313 317 b 304 315 313 317 308 316 b 216 295 273 302 245 295 b 145 308 193 295 170 299 b 19 398 88 327 42 360 b 0 469 5 420 0 444 b 24 551 0 496 8 526 b 191 646 54 596 125 637 m 227 614 b 215 616 224 616 220 616 b 202 614 210 616 206 616 b 152 535 174 610 163 592 b 144 463 147 509 144 485 b 152 391 144 440 147 417 b 216 328 163 344 179 328 b 280 391 253 328 269 344 b 288 463 285 417 288 440 b 280 535 288 485 285 509 b 227 614 269 594 258 610 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 ',\n },\n timeSigCommon: {\n x_min: -1.359375,\n x_max: 556.6875,\n ha: 568,\n o: 'm 294 322 b 318 323 299 322 308 323 b 360 320 334 323 352 322 b 526 217 430 310 490 273 b 543 166 537 202 543 184 b 447 70 543 117 503 70 b 445 70 447 70 446 70 b 359 159 394 72 359 113 b 368 201 359 173 362 187 b 442 245 382 229 412 245 b 455 244 446 245 451 245 b 460 244 458 244 460 244 b 460 244 460 244 460 244 b 454 248 460 244 458 245 b 325 291 417 276 372 291 b 285 287 313 291 299 290 b 144 -2 183 269 144 190 b 281 -290 144 -208 179 -280 b 304 -291 289 -291 298 -291 b 524 -105 412 -291 506 -212 b 541 -84 526 -88 530 -84 b 556 -101 551 -84 556 -90 b 549 -138 556 -111 553 -122 b 334 -322 521 -237 435 -310 b 302 -324 323 -323 313 -324 b 13 -101 172 -324 54 -234 b -1 -1 4 -68 -1 -34 b 294 322 -1 161 121 303 ',\n },\n timeSigCutCommon: {\n x_min: 0,\n x_max: 556.6875,\n ha: 568,\n o: 'm 289 545 b 298 546 292 545 295 546 b 318 533 306 546 315 541 b 319 428 319 530 319 528 l 319 327 l 334 327 b 526 223 412 326 485 285 b 543 172 537 206 543 190 b 447 76 543 122 503 76 b 445 76 446 76 446 76 b 359 165 394 77 359 119 b 368 205 359 179 362 192 b 441 251 382 233 412 251 b 455 249 446 251 451 251 b 460 248 458 249 460 248 b 460 248 460 248 460 248 b 454 254 460 249 458 251 b 334 295 419 280 378 294 l 319 295 l 319 4 l 319 -287 l 321 -285 b 328 -285 322 -285 325 -285 b 524 -99 424 -277 507 -198 b 541 -79 526 -84 530 -79 b 556 -97 551 -79 556 -84 b 548 -133 556 -105 553 -117 b 334 -317 521 -233 434 -306 b 322 -319 329 -317 323 -317 l 319 -319 l 319 -424 b 319 -471 319 -444 319 -459 b 313 -541 319 -544 318 -535 b 298 -548 308 -545 303 -548 b 279 -534 289 -548 281 -542 b 277 -424 277 -531 277 -530 l 277 -317 l 273 -317 b 13 -95 153 -305 51 -217 b 0 2 4 -62 0 -29 b 182 295 0 126 66 238 b 274 324 210 309 249 320 l 277 324 l 277 427 b 279 533 277 528 277 530 b 289 545 281 538 285 542 m 277 2 b 277 291 277 161 277 291 b 268 288 277 291 273 290 b 144 1 179 265 144 184 b 276 -284 144 -199 175 -267 l 277 -285 l 277 2 ',\n },\n timeSigPlus: {\n x_min: 0,\n x_max: 319.859375,\n ha: 326,\n o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ',\n },\n timeSigPlusSmall: {\n x_min: 0,\n x_max: 319.859375,\n ha: 326,\n o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ',\n },\n timeSigMinus: {\n x_min: 0,\n x_max: 318.5,\n ha: 325,\n o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ',\n },\n timeSigParensRight: {\n x_min: 25.859375,\n x_max: 164.6875,\n ha: 168,\n o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ',\n },\n timeSigParensRightSmall: {\n x_min: 25.859375,\n x_max: 164.6875,\n ha: 168,\n o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ',\n },\n timeSigParensLeft: {\n x_min: -166.0625,\n x_max: -25.859375,\n ha: 0,\n o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ',\n },\n timeSigParensLeftSmall: {\n x_min: -166.0625,\n x_max: -25.859375,\n ha: 0,\n o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ',\n },\n noteheadDoubleWhole: {\n x_min: 0,\n x_max: 902.421875,\n ha: 921,\n o: 'm 17 240 b 24 241 19 241 21 241 b 32 240 28 241 31 241 b 46 229 38 238 43 234 b 50 88 50 223 50 237 b 50 -1 50 63 50 34 b 50 -90 50 -36 50 -65 b 46 -231 50 -238 50 -224 b 25 -242 42 -238 34 -242 b 0 -224 14 -242 4 -235 b 0 2 0 -222 0 -108 b 0 223 0 112 0 220 b 17 240 2 230 9 237 m 110 240 b 118 241 111 241 114 241 b 126 240 121 241 123 241 b 142 223 133 237 140 230 b 144 123 144 220 144 205 b 144 29 144 45 144 29 b 144 29 144 29 144 29 b 393 183 166 106 264 167 b 450 186 412 184 431 186 b 756 29 600 186 732 120 b 756 29 756 29 756 29 b 758 123 758 29 758 45 b 760 227 758 226 758 223 b 784 241 766 237 774 241 b 804 229 792 241 800 237 b 809 88 808 223 809 237 l 809 -1 l 809 -90 b 804 -231 809 -238 808 -224 b 784 -242 800 -238 792 -242 b 762 -231 775 -242 766 -238 b 758 -124 756 -224 758 -231 b 756 -30 758 -47 758 -30 b 756 -30 756 -30 756 -30 b 509 -184 736 -108 637 -169 b 450 -187 488 -187 469 -187 b 144 -30 300 -187 168 -122 b 144 -30 144 -30 144 -30 b 144 -124 144 -30 144 -47 b 140 -231 144 -231 144 -224 b 118 -242 134 -238 126 -242 b 92 -224 107 -242 96 -235 b 92 2 92 -222 92 -108 b 92 223 92 112 92 220 b 110 240 95 230 102 237 m 432 161 b 413 162 426 162 420 162 b 313 41 351 162 313 109 b 347 -73 313 5 323 -34 b 487 -163 385 -133 439 -163 b 578 -97 526 -163 562 -142 b 588 -43 585 -80 588 -62 b 432 161 588 47 518 147 m 868 240 b 876 241 869 241 872 241 b 884 240 879 241 882 241 b 898 229 890 238 894 234 b 902 88 902 223 902 237 l 902 -1 l 902 -90 b 898 -231 902 -238 902 -224 b 876 -242 892 -238 884 -242 b 852 -224 865 -242 854 -235 b 850 2 850 -222 850 -108 b 852 223 850 112 850 220 b 868 240 853 230 860 237 ',\n },\n noteheadWhole: {\n x_min: 0,\n x_max: 619.3125,\n ha: 632,\n o: 'm 274 184 b 307 186 285 186 296 186 b 616 22 465 186 597 116 b 619 -1 617 13 619 5 b 308 -187 619 -104 483 -187 b 0 -1 133 -187 0 -102 b 5 36 0 11 1 23 b 274 184 29 115 141 176 m 289 161 b 272 162 284 162 277 162 b 171 41 209 162 171 108 b 205 -73 171 5 182 -34 b 345 -163 243 -133 298 -163 b 436 -98 385 -163 420 -142 b 446 -43 443 -80 446 -62 b 289 161 446 47 377 147 ',\n },\n noteheadHalf: {\n x_min: 0,\n x_max: 428.75,\n ha: 438,\n o: 'm 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 m 366 131 b 352 134 362 133 357 134 b 219 81 321 134 269 115 b 47 -111 126 23 50 -62 b 47 -112 47 -111 47 -112 b 77 -136 47 -129 58 -136 b 264 -45 118 -136 194 -101 b 382 109 336 12 382 76 b 366 131 382 120 377 129 ',\n },\n noteheadBlack: {\n x_min: 0,\n x_max: 428.75,\n ha: 438,\n o: 'm 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 ',\n },\n noteheadXWhole: {\n x_min: 0,\n x_max: 598.890625,\n ha: 611,\n o: 'm 62 181 b 77 183 66 183 72 183 b 91 181 83 183 88 183 b 202 131 100 180 106 177 l 299 87 l 394 131 b 517 183 499 181 502 183 b 519 183 517 183 518 183 b 598 104 567 183 598 144 b 577 49 598 84 592 65 b 518 15 567 38 563 37 b 484 0 499 6 484 0 b 518 -16 484 -1 499 -8 b 577 -51 563 -38 567 -40 b 598 -105 592 -66 598 -86 b 519 -184 598 -145 567 -184 b 517 -184 518 -184 517 -184 b 394 -133 502 -184 499 -183 l 299 -88 l 202 -133 b 81 -184 99 -183 95 -184 b 77 -184 80 -184 78 -184 b 0 -105 29 -184 0 -145 b 20 -51 0 -86 5 -66 b 80 -16 29 -40 34 -38 b 114 -1 98 -8 114 -1 b 80 15 114 0 98 6 b 20 49 34 37 29 38 b 0 104 6 65 0 84 b 62 181 0 140 23 174 m 88 134 b 74 136 85 134 80 136 b 68 134 72 136 69 136 b 46 104 54 130 46 117 b 55 81 46 95 49 88 b 149 34 59 76 53 80 b 224 -1 190 15 224 0 b 144 -38 224 -1 187 -18 b 54 -84 59 -79 58 -79 b 46 -105 49 -90 46 -98 b 76 -137 46 -122 58 -137 b 78 -137 77 -137 77 -137 b 194 -86 87 -137 76 -141 b 298 -36 250 -58 298 -36 b 298 -36 298 -36 298 -36 b 402 -84 299 -36 345 -58 b 518 -137 522 -141 510 -137 b 521 -137 519 -137 519 -137 b 551 -105 539 -137 551 -122 b 541 -83 551 -98 548 -90 b 447 -36 537 -77 544 -81 b 374 -1 406 -16 374 -1 b 447 34 374 0 406 15 b 541 81 544 80 537 76 b 551 104 548 88 551 97 b 521 136 551 120 539 136 b 518 136 519 136 519 136 b 517 136 518 136 517 136 l 517 136 b 402 83 511 136 511 136 b 298 34 345 56 299 34 b 298 34 298 34 298 34 b 194 84 298 34 250 56 b 88 134 137 111 89 133 ',\n },\n noteheadXHalf: {\n x_min: 0,\n x_max: 406.96875,\n ha: 415,\n o: 'm 55 181 b 70 183 61 183 66 183 b 111 170 85 183 99 179 b 160 130 115 167 137 149 l 202 95 l 245 130 b 319 181 299 176 302 179 b 334 183 325 183 330 183 b 406 109 375 183 406 148 b 401 81 406 99 405 91 b 348 24 394 65 390 59 b 318 -1 332 11 318 0 b 348 -26 318 -1 332 -12 b 401 -83 390 -61 394 -66 b 406 -111 405 -93 406 -101 b 334 -184 406 -149 375 -184 b 319 -183 330 -184 325 -184 b 245 -131 302 -180 299 -177 l 202 -97 l 160 -131 b 85 -183 107 -177 103 -180 b 70 -184 80 -184 76 -184 b 0 -111 31 -184 0 -149 b 4 -83 0 -101 1 -93 b 58 -26 10 -66 16 -61 b 88 -1 74 -12 88 -1 b 58 24 88 0 74 11 b 10 69 23 54 17 59 b 0 109 2 81 0 95 b 55 181 0 142 21 173 m 83 133 b 72 136 78 136 76 136 b 57 131 66 136 61 134 b 46 109 49 126 46 117 b 50 93 46 104 47 98 b 107 45 51 91 77 70 b 160 0 137 20 160 0 b 107 -47 160 -1 137 -22 b 50 -94 77 -72 51 -93 b 46 -111 47 -99 46 -105 b 59 -134 46 -120 50 -130 b 72 -137 62 -136 68 -137 b 83 -136 76 -137 80 -136 b 144 -84 84 -134 107 -116 b 202 -36 176 -58 202 -36 b 261 -84 202 -36 230 -58 b 323 -136 299 -116 321 -134 b 334 -137 326 -136 330 -137 b 345 -134 338 -137 343 -136 b 360 -111 355 -130 360 -120 b 355 -94 360 -105 359 -99 b 299 -47 353 -93 329 -72 b 245 0 269 -22 245 -1 b 299 45 245 0 269 20 b 355 93 329 70 353 91 b 360 109 359 98 360 104 b 345 133 360 119 355 129 b 334 136 343 134 338 136 b 323 134 330 136 326 134 b 261 83 321 133 299 115 b 202 34 230 56 202 34 b 144 83 202 34 176 56 b 83 133 106 115 84 133 ',\n },\n noteheadXBlack: {\n x_min: 0,\n x_max: 406.96875,\n ha: 415,\n o: 'm 21 183 b 28 183 24 183 25 183 b 42 181 34 183 39 183 b 127 108 47 179 47 179 b 202 41 168 72 202 41 b 279 108 204 41 238 72 b 357 177 321 145 356 176 b 375 183 363 181 370 183 b 406 151 392 183 406 169 b 404 137 406 147 405 141 b 322 62 401 131 398 129 b 251 0 284 27 251 0 b 322 -63 251 -1 284 -29 b 404 -138 398 -130 401 -133 b 406 -152 405 -142 406 -148 b 375 -184 406 -170 392 -184 b 357 -179 370 -184 363 -183 b 279 -109 356 -177 321 -147 b 202 -43 238 -73 204 -43 b 127 -109 202 -43 168 -73 b 49 -179 85 -147 50 -177 b 31 -184 43 -183 36 -184 b 0 -152 13 -184 0 -170 b 2 -138 0 -148 0 -142 b 83 -63 5 -133 8 -130 b 155 0 122 -29 155 -1 b 83 62 155 0 122 27 b 8 129 43 97 10 127 b 0 151 2 136 0 144 b 21 183 0 165 8 177 ',\n },\n noteheadTriangleUpWhole: {\n x_min: 0,\n x_max: 630.203125,\n ha: 643,\n o: 'm 308 204 b 314 205 310 205 313 205 b 326 201 319 205 323 204 b 355 154 328 199 338 180 b 401 83 362 142 392 95 l 409 72 b 431 41 412 66 424 49 b 619 -174 498 -51 570 -134 b 630 -192 626 -180 630 -186 b 626 -202 630 -195 628 -199 b 616 -206 623 -205 620 -206 b 552 -188 608 -206 592 -202 b 310 -155 488 -169 392 -155 b 268 -156 295 -155 281 -155 b 77 -188 197 -161 126 -173 b 13 -206 35 -202 20 -206 b 9 -206 12 -206 10 -206 b 0 -191 2 -202 0 -197 b 8 -176 0 -186 2 -180 b 204 49 58 -136 138 -43 l 220 72 l 227 83 b 295 188 245 108 281 166 b 308 204 299 197 304 202 m 315 147 b 314 147 315 147 314 147 b 314 147 314 147 314 147 b 306 129 314 145 310 138 l 296 105 b 281 72 292 97 284 77 l 274 56 b 181 -123 247 -4 212 -72 l 174 -134 l 176 -133 b 314 -123 215 -127 272 -123 b 451 -133 356 -123 413 -127 l 454 -134 l 449 -123 b 353 56 417 -72 381 -4 l 347 72 b 332 105 344 77 336 97 l 322 129 b 315 147 318 138 315 145 ',\n },\n noteheadTriangleUpHalf: {\n x_min: 0,\n x_max: 438.28125,\n ha: 447,\n o: 'm 212 205 b 219 205 213 205 216 205 b 239 183 228 205 231 204 b 421 -163 298 40 363 -83 b 438 -191 434 -180 438 -186 b 436 -197 438 -192 438 -195 b 424 -206 434 -204 431 -206 b 406 -201 420 -206 415 -205 b 216 -156 347 -172 281 -156 b 23 -205 148 -156 80 -173 b 14 -206 20 -206 17 -206 b 0 -191 6 -206 0 -201 b 6 -176 0 -187 1 -183 b 202 192 63 -104 142 45 b 212 205 205 199 208 202 m 264 48 l 249 81 l 243 94 l 242 91 b 89 -126 208 36 137 -66 b 81 -138 85 -133 81 -138 b 81 -138 81 -138 81 -138 b 81 -138 81 -138 81 -138 b 95 -133 81 -138 87 -136 b 280 -94 156 -108 221 -94 b 334 -98 299 -94 317 -95 b 343 -99 338 -99 343 -99 b 343 -99 343 -99 343 -99 b 338 -94 343 -99 341 -97 b 264 48 318 -58 287 1 ',\n },\n noteheadTriangleUpBlack: {\n x_min: -1.359375,\n x_max: 436.921875,\n ha: 446,\n o: 'm 213 205 b 217 205 215 205 216 205 b 234 194 224 205 234 199 b 236 187 234 194 235 190 l 245 167 l 261 129 l 270 106 b 355 -61 294 54 329 -13 b 420 -163 381 -105 402 -138 b 436 -188 435 -184 436 -184 b 436 -191 436 -190 436 -190 b 421 -206 436 -201 431 -206 l 421 -206 l 416 -206 l 405 -201 b 217 -158 347 -172 283 -158 b 31 -201 153 -158 88 -172 l 20 -206 l 14 -206 l 14 -206 b 0 -191 5 -206 0 -201 b -1 -188 0 -190 -1 -190 b 14 -163 -1 -186 0 -184 b 95 -34 36 -136 72 -77 b 166 106 119 8 148 68 l 175 129 l 183 148 l 200 188 b 213 205 205 199 208 202 ',\n },\n noteheadDiamondWhole: {\n x_min: 0,\n x_max: 432.828125,\n ha: 442,\n o: 'm 208 184 b 213 187 209 186 212 187 b 224 176 217 187 221 183 b 245 147 225 172 235 159 b 419 -1 288 90 347 38 b 431 -8 424 -4 431 -8 b 432 -12 432 -9 432 -11 b 430 -18 432 -13 432 -16 b 364 -61 424 -20 383 -47 b 225 -183 307 -102 250 -152 b 223 -187 224 -184 223 -187 b 220 -188 221 -188 220 -188 b 208 -176 216 -188 210 -184 b 187 -148 205 -173 197 -159 b 12 0 144 -90 84 -38 b 0 11 4 5 0 8 b 16 24 0 13 4 18 b 183 158 83 69 141 115 b 208 184 194 169 198 173 m 183 105 b 176 113 181 109 176 113 b 172 109 176 113 175 112 b 92 45 149 90 117 62 l 88 41 l 102 31 b 247 -105 160 -6 210 -55 l 254 -115 l 257 -112 l 269 -102 b 340 -45 287 -87 319 -61 l 344 -43 l 330 -33 b 183 105 272 6 221 54 ',\n },\n noteheadDiamondHalf: {\n x_min: 0,\n x_max: 438.28125,\n ha: 447,\n o: 'm 212 190 b 219 191 213 191 216 191 b 236 176 225 191 228 190 b 419 18 277 105 341 49 b 436 5 431 13 434 11 b 438 -1 438 4 438 1 b 424 -16 438 -8 432 -13 b 356 -49 409 -20 379 -36 b 234 -180 306 -83 258 -133 b 219 -192 230 -188 224 -192 b 200 -176 213 -192 206 -187 b 9 -15 157 -102 89 -45 b 0 0 2 -12 0 -6 b 16 18 0 9 2 12 b 200 176 93 48 159 104 b 212 190 205 186 208 188 m 239 113 b 236 117 238 116 238 117 b 230 108 235 117 234 115 b 92 -15 196 58 140 8 b 88 -18 91 -16 88 -18 b 92 -20 88 -18 91 -19 b 198 -116 130 -43 166 -74 b 200 -117 200 -117 200 -117 b 201 -117 200 -117 201 -117 b 264 -43 212 -98 242 -62 b 345 15 288 -19 321 4 b 348 18 347 16 348 16 b 344 20 348 18 347 19 b 239 113 307 41 266 79 ',\n },\n noteheadDiamondBlack: {\n x_min: 0,\n x_max: 432.828125,\n ha: 442,\n o: 'm 209 186 b 213 187 210 187 212 187 b 216 187 215 187 216 187 b 224 174 216 186 220 180 b 420 -1 269 105 338 43 b 432 -12 431 -8 432 -9 b 421 -23 432 -15 432 -16 b 228 -180 345 -70 264 -137 b 219 -188 221 -188 221 -188 l 219 -188 b 208 -177 215 -188 215 -188 b 10 1 163 -106 93 -44 b 0 11 0 6 0 8 b 10 22 0 13 0 15 b 202 179 87 69 167 136 b 209 186 206 183 209 186 ',\n },\n augmentationDot: {\n x_min: 0,\n x_max: 133.390625,\n ha: 136,\n o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ',\n },\n tremolo1: {\n x_min: -206.890625,\n x_max: 428.75,\n ha: 438,\n o: 'm 389 -351 b 394 -351 390 -351 393 -351 b 428 -385 413 -351 428 -367 b 428 -394 428 -388 428 -391 b 394 -428 426 -406 421 -410 l 332 -473 l 269 -516 l 205 -560 l 141 -603 l 77 -648 l 13 -692 l -50 -737 l -114 -780 l -145 -802 b -171 -813 -157 -810 -163 -813 b -175 -813 -172 -813 -174 -813 b -206 -777 -194 -811 -206 -795 b -202 -760 -206 -771 -205 -766 b -87 -675 -197 -752 -206 -757 l -34 -639 l 83 -557 l 145 -514 l 209 -470 l 272 -427 b 389 -351 375 -356 381 -352 ',\n },\n flag8thUp: {\n x_min: -24.5,\n x_max: 317.140625,\n ha: 324,\n o: 'm -24 -161 l -24 -5 l -20 -5 b 0 -24 -9 -5 -2 -12 b 171 -315 21 -124 84 -233 b 317 -660 268 -406 317 -531 b 187 -1014 317 -782 274 -909 b 161 -1034 172 -1034 171 -1034 b 141 -1013 149 -1034 141 -1025 b 152 -991 141 -1004 142 -1002 b 266 -682 228 -899 266 -788 b 174 -430 266 -588 236 -498 b -23 -317 136 -388 66 -348 b -24 -161 -23 -316 -24 -285 ',\n },\n flag8thDown: {\n x_min: -21.78125,\n x_max: 367.5,\n ha: 375,\n o: 'm 230 1031 b 238 1032 232 1032 235 1032 b 259 1014 245 1032 251 1027 b 367 662 330 906 367 782 b 364 602 367 641 367 621 b 232 317 352 488 304 384 b 57 120 155 245 103 187 b -1 18 31 84 6 40 b -19 4 -4 11 -12 4 l -21 4 l -21 159 l -21 315 l -16 315 b 96 335 10 315 62 324 b 315 695 227 380 315 527 b 313 738 315 709 314 724 b 224 991 304 825 273 916 b 216 1013 219 999 216 1007 b 230 1031 216 1021 220 1028 ',\n },\n flag16thUp: {\n x_min: -24.5,\n x_max: 317.140625,\n ha: 324,\n o: 'm -24 -147 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 58 -123 6 -43 31 -86 b 196 -278 93 -173 134 -219 b 317 -570 274 -356 317 -460 b 294 -713 317 -617 308 -666 l 289 -724 l 294 -735 b 317 -873 308 -780 317 -827 b 235 -1132 317 -963 288 -1054 b 209 -1165 228 -1140 224 -1146 b 189 -1177 204 -1172 196 -1177 b 171 -1164 182 -1177 175 -1172 b 168 -1154 170 -1161 168 -1159 b 181 -1132 168 -1149 172 -1142 b 269 -891 238 -1064 269 -975 b 269 -881 269 -886 269 -884 b 262 -814 269 -857 265 -827 b 258 -800 261 -811 259 -806 b 142 -628 240 -731 198 -667 b -8 -589 112 -606 47 -589 b -20 -589 -13 -589 -19 -589 l -24 -589 l -24 -449 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 58 -424 6 -345 31 -388 b 194 -580 93 -476 136 -523 b 259 -660 221 -606 245 -635 b 261 -663 259 -662 261 -663 b 264 -656 262 -663 262 -660 b 269 -587 268 -632 269 -610 b 264 -521 269 -566 268 -544 b 262 -512 264 -517 262 -513 b 258 -498 261 -509 259 -503 b 142 -326 240 -428 198 -365 b -8 -287 112 -303 47 -288 b -20 -287 -13 -287 -19 -287 l -24 -287 l -24 -147 ',\n },\n flag16thDown: {\n x_min: -21.78125,\n x_max: 362.0625,\n ha: 369,\n o: 'm 302 1031 b 308 1032 304 1032 307 1032 b 330 1016 318 1032 325 1027 b 362 867 351 970 362 920 b 340 738 362 824 353 780 l 336 727 l 340 717 b 362 591 355 677 362 634 b 257 323 362 496 325 401 b 204 272 243 306 227 290 b 20 56 129 206 66 133 b -1 18 12 44 0 22 b -19 4 -4 9 -12 4 l -21 4 l -21 140 l -21 276 l -12 277 b 167 333 61 288 127 309 b 319 598 262 388 319 491 b 311 664 319 620 317 642 l 310 673 l 304 664 b 204 548 279 620 250 587 b 20 333 129 483 66 409 b -1 292 12 320 0 298 b -19 280 -4 285 -12 280 l -21 280 l -21 416 l -21 552 l -12 553 b 167 609 61 564 127 585 b 319 874 264 666 319 770 b 294 992 319 914 311 954 b 288 1011 288 1004 288 1007 b 302 1031 288 1021 294 1028 ',\n },\n flag32ndUp: {\n x_min: -24.5,\n x_max: 315.78125,\n ha: 322,\n o: 'm -24 -145 l -24 -5 l -20 -5 b 1 -26 -10 -5 -6 -9 b 175 -241 31 -86 96 -166 b 314 -548 259 -323 304 -420 b 315 -589 315 -555 315 -571 b 314 -630 315 -606 315 -623 b 298 -730 311 -664 306 -699 l 295 -742 l 296 -748 b 314 -850 304 -778 311 -813 b 315 -892 315 -857 315 -874 b 314 -932 315 -909 315 -925 b 298 -1032 311 -967 306 -1002 l 295 -1045 l 296 -1050 b 314 -1153 304 -1081 311 -1115 b 315 -1193 315 -1160 315 -1177 b 314 -1235 315 -1211 315 -1228 b 217 -1526 306 -1338 270 -1444 b 201 -1533 213 -1532 208 -1533 b 182 -1522 193 -1533 185 -1529 b 179 -1514 181 -1518 179 -1517 b 189 -1489 179 -1508 182 -1501 b 266 -1217 240 -1403 266 -1308 b 262 -1156 266 -1196 265 -1177 b 110 -907 247 -1043 190 -950 b 0 -889 87 -895 50 -889 l -1 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 1 -631 -10 -610 -6 -614 b 175 -846 31 -691 96 -771 b 259 -956 213 -884 236 -914 b 265 -966 262 -961 264 -966 b 265 -966 265 -966 265 -966 b 265 -953 265 -964 265 -959 b 266 -920 266 -943 266 -932 b 262 -853 266 -898 265 -873 b 110 -605 247 -741 190 -648 b 0 -587 87 -592 50 -587 l -1 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 1 -328 -10 -308 -6 -312 b 175 -544 31 -388 96 -469 b 259 -655 213 -581 236 -612 b 265 -663 262 -659 264 -663 b 265 -663 265 -663 265 -663 b 265 -650 265 -663 265 -657 b 266 -617 266 -641 266 -630 b 262 -551 266 -595 265 -570 b 110 -303 247 -438 190 -345 b 0 -284 87 -290 50 -284 l -1 -284 l -24 -284 l -24 -145 ',\n },\n flag32ndDown: {\n x_min: -21.78125,\n x_max: 366.140625,\n ha: 374,\n o: 'm 276 1378 b 284 1379 279 1379 281 1379 b 306 1360 292 1379 298 1374 b 352 1247 326 1326 343 1286 b 366 1139 362 1213 366 1175 b 347 1009 366 1093 359 1049 l 344 1002 l 347 992 b 352 971 348 986 351 977 b 366 863 362 936 366 899 b 347 732 366 818 359 773 l 344 725 l 347 716 b 352 695 348 710 351 700 b 366 588 362 659 366 623 b 223 262 366 464 314 345 b 189 233 212 252 212 252 b 35 76 126 183 73 129 b -1 16 20 56 2 27 b -19 4 -4 9 -12 4 l -21 4 l -21 137 l -21 270 l -17 270 b 186 344 59 281 134 308 b 319 606 270 399 319 499 b 317 650 319 620 319 635 l 315 659 l 314 655 b 223 537 288 607 258 570 b 189 509 212 528 212 528 b 35 352 126 459 73 405 b -1 292 20 333 2 303 b -19 280 -4 285 -12 280 l -21 280 l -21 413 l -21 546 l -17 546 b 186 620 59 557 134 584 b 319 882 270 675 319 775 b 317 925 319 896 319 911 l 315 935 l 314 931 b 223 813 288 884 258 846 b 189 785 212 805 212 805 b 35 628 126 735 73 681 b -1 569 20 609 2 580 b -19 556 -4 562 -12 556 l -21 556 l -21 689 l -21 823 l -17 823 b 202 907 68 835 152 867 b 319 1157 280 968 319 1061 b 270 1338 319 1218 303 1281 b 262 1358 264 1349 262 1353 b 262 1364 262 1360 262 1363 b 276 1378 265 1371 269 1376 ',\n },\n flag64thUp: {\n x_min: -24.5,\n x_max: 314.421875,\n ha: 321,\n o: 'm -24 -145 l -24 -5 l -20 -5 b 0 -23 -9 -5 -2 -12 b 27 -87 4 -38 14 -66 b 138 -220 53 -136 88 -177 b 235 -328 179 -255 208 -288 b 314 -592 287 -409 314 -501 b 292 -732 314 -639 307 -687 l 289 -742 l 294 -756 b 314 -896 307 -802 314 -849 b 292 -1035 314 -943 307 -991 l 289 -1045 l 294 -1057 b 314 -1197 307 -1104 314 -1152 b 292 -1338 314 -1246 307 -1292 l 289 -1347 l 294 -1360 b 314 -1500 307 -1407 314 -1454 b 273 -1689 314 -1565 300 -1628 b 250 -1712 265 -1710 261 -1712 b 228 -1691 236 -1712 228 -1704 l 228 -1685 l 234 -1675 b 270 -1507 258 -1621 270 -1564 b 98 -1193 270 -1381 209 -1261 b 40 -1174 76 -1179 58 -1174 b -10 -1189 24 -1174 8 -1178 b -20 -1192 -14 -1192 -16 -1192 l -24 -1192 l -24 -1052 l -24 -913 l -20 -913 b 0 -931 -9 -913 -2 -920 b 27 -995 4 -946 14 -974 b 138 -1128 53 -1043 88 -1085 b 257 -1275 190 -1172 228 -1220 b 262 -1283 259 -1279 262 -1283 l 262 -1283 b 269 -1249 264 -1282 268 -1260 b 270 -1206 270 -1233 270 -1220 b 98 -891 270 -1075 206 -957 b 40 -871 76 -877 58 -871 b -10 -886 24 -871 8 -875 b -20 -889 -14 -889 -16 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 0 -628 -9 -610 -2 -617 b 27 -692 4 -644 14 -671 b 138 -825 53 -741 88 -782 b 257 -973 190 -870 228 -917 b 262 -981 259 -977 262 -981 l 262 -981 b 269 -946 264 -979 268 -957 b 270 -903 270 -931 270 -917 b 98 -588 270 -774 206 -655 b 40 -569 76 -574 58 -569 b -10 -584 24 -569 8 -574 b -20 -587 -14 -587 -16 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 0 -326 -9 -308 -2 -315 b 27 -390 4 -341 14 -369 b 138 -523 53 -438 88 -480 b 257 -670 190 -567 228 -614 b 262 -678 259 -674 262 -678 b 262 -678 262 -678 262 -678 b 269 -644 264 -677 268 -656 b 270 -601 270 -628 270 -614 b 98 -285 270 -471 206 -352 b 40 -266 76 -273 58 -266 b -10 -281 24 -266 8 -272 b -20 -284 -14 -284 -16 -284 l -24 -284 l -24 -145 ',\n },\n flag64thDown: {\n x_min: -21.78125,\n x_max: 367.5,\n ha: 375,\n o: 'm 259 1553 b 265 1553 261 1553 264 1553 b 288 1540 272 1553 277 1550 b 367 1351 340 1493 367 1424 b 336 1221 367 1308 357 1263 l 332 1211 l 333 1208 b 367 1077 356 1170 367 1124 b 336 945 367 1032 357 986 l 332 935 l 333 932 b 367 800 356 893 367 848 b 336 669 367 756 357 710 l 332 659 l 333 656 b 367 523 356 617 367 571 b 345 412 367 485 360 446 b 231 273 322 356 284 310 b -1 19 121 195 27 93 b -17 4 -4 11 -10 5 l -21 4 l -21 134 l -21 265 l -17 265 b 133 291 20 265 96 278 b 318 537 245 328 318 433 b 307 603 318 559 315 582 b 303 614 304 612 304 614 b 298 609 302 614 300 613 b 231 549 281 589 258 567 b -1 295 121 471 27 369 b -17 280 -4 287 -10 281 l -21 280 l -21 410 l -21 541 l -17 541 b 133 567 20 541 96 555 b 318 813 245 605 318 709 b 307 880 318 835 315 859 b 303 891 304 888 304 891 b 298 885 302 891 300 888 b 231 825 281 866 258 843 b -1 571 121 748 27 645 b -17 556 -4 563 -10 557 l -21 556 l -21 687 l -21 817 l -17 817 b 133 843 20 817 96 830 b 318 1089 245 881 318 985 b 307 1156 318 1111 315 1134 b 303 1167 304 1164 304 1167 b 298 1161 302 1167 300 1164 b 231 1102 281 1140 258 1120 b -1 848 121 1024 27 921 b -17 832 -4 839 -10 834 l -21 832 l -21 963 l -21 1093 l -17 1093 b 114 1113 12 1093 78 1103 b 313 1314 215 1142 289 1218 b 318 1364 317 1331 318 1347 b 255 1511 318 1422 295 1478 b 243 1532 247 1519 243 1525 b 259 1553 243 1540 250 1550 ',\n },\n flag128thUp: {\n x_min: -24.5,\n x_max: 313.0625,\n ha: 319,\n o: 'm -24 -133 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 142 -213 13 -61 74 -144 b 258 -376 196 -269 230 -315 b 313 -605 295 -449 313 -528 b 292 -742 313 -652 306 -699 b 288 -752 289 -748 288 -752 b 288 -752 288 -752 288 -752 b 292 -764 289 -753 291 -757 b 313 -907 306 -811 313 -860 b 292 -1045 313 -954 306 -1002 b 288 -1054 289 -1050 288 -1054 b 288 -1054 288 -1054 288 -1054 b 292 -1067 289 -1054 291 -1060 b 313 -1210 306 -1113 313 -1161 b 292 -1346 313 -1257 306 -1304 b 288 -1357 289 -1353 288 -1357 b 288 -1357 288 -1357 288 -1357 b 292 -1368 289 -1357 291 -1363 b 313 -1512 306 -1415 313 -1464 b 292 -1648 313 -1560 306 -1605 b 288 -1660 289 -1654 288 -1660 b 288 -1660 288 -1660 288 -1660 b 292 -1671 289 -1660 291 -1665 b 313 -1814 306 -1719 313 -1766 b 250 -2040 313 -1897 291 -1977 b 232 -2062 238 -2057 236 -2059 b 221 -2065 230 -2063 225 -2065 b 200 -2045 210 -2065 201 -2057 b 200 -2043 200 -2044 200 -2044 b 208 -2026 200 -2037 202 -2034 b 269 -1826 249 -1966 269 -1897 b 153 -1544 269 -1726 230 -1625 b -9 -1472 115 -1506 58 -1481 b -21 -1471 -14 -1471 -19 -1471 l -24 -1471 l -24 -1343 l -24 -1215 l -20 -1215 b -1 -1229 -12 -1215 -4 -1221 b 142 -1424 13 -1270 74 -1353 b 257 -1582 196 -1478 228 -1524 b 264 -1594 261 -1589 264 -1594 l 264 -1594 b 265 -1582 264 -1594 264 -1589 b 270 -1525 268 -1562 270 -1544 b 153 -1243 270 -1424 228 -1321 b -9 -1170 115 -1203 58 -1178 b -21 -1168 -14 -1170 -19 -1168 l -24 -1168 l -24 -1041 l -24 -913 l -20 -913 b -1 -927 -12 -913 -4 -918 b 142 -1121 13 -967 74 -1050 b 257 -1281 196 -1175 228 -1221 b 264 -1292 261 -1286 264 -1292 l 264 -1292 b 265 -1279 264 -1292 264 -1286 b 270 -1222 268 -1261 270 -1242 b 153 -941 270 -1121 228 -1018 b -9 -867 115 -900 58 -875 b -21 -866 -14 -867 -19 -866 l -24 -866 l -24 -738 l -24 -610 l -20 -610 b -1 -624 -12 -610 -4 -616 b 142 -818 13 -664 74 -749 b 257 -978 196 -873 228 -918 b 264 -989 261 -984 264 -989 l 264 -989 b 265 -977 264 -989 264 -984 b 270 -920 268 -959 270 -939 b 153 -638 270 -818 228 -716 b -9 -564 115 -598 58 -573 b -21 -563 -14 -564 -19 -563 l -24 -563 l -24 -435 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 142 -516 13 -363 74 -446 b 257 -675 196 -571 228 -616 b 264 -687 261 -681 264 -687 l 264 -687 b 265 -674 264 -687 264 -681 b 270 -617 268 -656 270 -637 b 153 -335 270 -516 228 -413 b -9 -262 115 -295 58 -270 b -21 -260 -14 -262 -19 -260 l -24 -260 l -24 -133 ',\n },\n flag128thDown: {\n x_min: -21.78125,\n x_max: 367.5,\n ha: 375,\n o: 'm 276 1900 b 284 1901 279 1900 281 1901 b 306 1883 291 1901 298 1896 b 367 1686 347 1825 367 1757 b 343 1558 367 1643 359 1600 l 338 1549 l 343 1537 b 367 1411 359 1497 367 1454 b 343 1282 367 1367 359 1324 l 338 1272 l 343 1261 b 367 1135 359 1221 367 1178 b 343 1007 367 1090 359 1047 l 338 996 l 343 985 b 367 859 359 945 367 902 b 343 731 367 814 359 771 l 338 720 l 343 709 b 367 582 359 667 367 626 b 289 362 367 503 340 426 b 239 312 276 345 259 330 b 29 77 152 237 76 152 b -1 18 14 54 2 30 b -19 4 -4 11 -12 4 l -21 4 l -21 133 l -20 260 l -13 262 b 98 299 17 269 62 284 b 111 305 103 302 110 305 b 167 334 123 310 156 327 b 319 595 264 391 319 491 b 313 659 319 616 318 638 b 310 667 311 664 311 667 b 307 663 310 667 308 666 b 240 588 289 637 269 614 b 16 331 141 505 62 413 b -1 294 8 316 1 302 b -19 280 -4 287 -12 280 l -21 280 l -21 408 l -20 537 l -13 538 b 98 576 17 545 62 560 b 111 581 103 578 110 581 b 167 610 123 587 156 603 b 319 871 264 667 319 767 b 313 935 319 892 318 913 b 310 942 311 941 311 942 b 307 939 310 942 308 941 b 240 864 289 913 269 889 b 16 607 141 781 62 689 b -1 570 8 592 1 578 b -19 556 -4 563 -12 556 l -21 556 l -21 684 l -20 813 l -13 814 b 98 852 17 821 62 836 b 111 857 103 855 110 857 b 167 886 123 863 156 880 b 319 1147 264 943 319 1043 b 313 1211 319 1168 318 1189 b 310 1218 311 1217 311 1218 b 307 1215 310 1218 308 1217 b 240 1140 289 1188 269 1165 b 16 884 141 1057 62 966 b -1 846 8 868 1 855 b -19 832 -4 839 -12 832 l -21 832 l -21 960 l -20 1089 l -13 1090 b 98 1128 17 1097 62 1111 b 111 1134 103 1131 110 1134 b 167 1163 123 1139 156 1156 b 319 1424 264 1220 319 1320 b 313 1486 319 1444 318 1465 b 310 1494 311 1493 311 1494 b 307 1492 310 1494 308 1493 b 240 1417 289 1464 269 1442 b 16 1160 141 1333 62 1242 b -1 1121 8 1145 1 1131 b -19 1109 -4 1115 -12 1109 l -21 1109 l -21 1236 l -20 1365 l -13 1367 b 98 1404 17 1374 62 1388 b 111 1410 103 1407 110 1410 b 250 1508 172 1437 215 1467 b 319 1701 296 1564 319 1633 b 270 1859 319 1757 303 1814 b 262 1882 265 1868 262 1875 b 276 1900 262 1890 266 1896 ',\n },\n accidentalFlat: {\n x_min: -21.78125,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalNatural: {\n x_min: 0,\n x_max: 239.5625,\n ha: 244,\n o: 'm 10 460 b 20 462 13 462 14 462 b 39 449 28 462 35 458 l 40 446 l 40 326 b 40 205 40 259 40 205 b 127 227 40 205 80 215 b 220 249 196 244 213 249 b 227 247 224 249 225 248 b 238 237 231 245 235 241 l 239 233 l 239 -106 l 239 -448 l 238 -451 b 219 -463 234 -459 225 -463 b 198 -451 210 -463 202 -459 l 197 -448 l 197 -324 b 197 -201 197 -248 197 -201 b 110 -223 196 -201 157 -210 b 17 -245 42 -240 24 -245 b 10 -242 13 -245 13 -244 b 0 -233 6 -241 2 -237 l 0 -230 l 0 108 l 0 446 l 0 449 b 10 460 2 453 6 458 m 197 22 b 197 70 197 41 197 58 b 196 116 197 113 197 116 l 196 116 b 118 97 196 116 160 106 l 40 77 l 40 -18 b 40 -112 40 -69 40 -112 l 119 -93 l 197 -73 l 197 22 ',\n },\n accidentalSharp: {\n x_min: 0,\n x_max: 323.9375,\n ha: 331,\n o: 'm 217 535 b 225 537 220 537 221 537 b 245 524 235 537 242 533 l 246 521 l 247 390 l 247 258 l 273 265 b 306 270 288 269 299 270 b 322 259 315 270 319 267 b 323 208 323 256 323 233 b 322 158 323 184 323 159 b 288 140 318 148 315 147 b 247 130 254 131 247 130 b 247 65 247 130 247 104 b 247 20 247 51 247 36 l 247 -88 l 273 -81 b 306 -76 289 -77 299 -76 b 318 -81 311 -76 315 -77 b 323 -123 323 -87 323 -86 l 323 -138 l 323 -154 b 318 -195 323 -191 323 -190 b 269 -210 314 -199 315 -199 b 249 -216 259 -213 250 -216 l 247 -216 l 247 -349 l 246 -483 l 245 -487 b 225 -499 242 -495 234 -499 b 206 -487 219 -499 210 -495 l 205 -483 l 205 -355 l 205 -227 l 204 -227 l 181 -233 l 138 -244 b 117 -249 127 -247 117 -249 b 115 -385 115 -249 115 -256 l 115 -523 l 114 -526 b 95 -538 110 -534 102 -538 b 74 -526 87 -538 78 -534 l 73 -523 l 73 -391 b 72 -260 73 -269 73 -260 b 72 -260 72 -260 72 -260 b 19 -273 61 -263 23 -273 b 0 -260 10 -273 4 -267 b 0 -209 0 -256 0 -256 l 0 -162 l 1 -158 b 61 -134 5 -148 5 -148 l 73 -131 l 73 -22 b 72 86 73 79 73 86 b 72 86 72 86 72 86 b 19 74 61 83 23 74 b 0 86 10 74 4 79 b 0 137 0 90 0 90 l 0 184 l 1 188 b 61 212 5 198 5 198 l 73 215 l 73 348 l 73 481 l 74 485 b 95 498 78 492 87 498 b 103 495 98 498 100 496 b 114 485 107 494 111 489 l 115 481 l 115 353 l 115 226 l 121 226 b 159 235 123 227 141 231 l 198 247 l 205 248 l 205 384 l 205 521 l 206 524 b 217 535 209 528 212 533 m 205 9 b 205 119 205 70 205 119 l 205 119 b 182 113 204 119 194 116 l 138 102 b 117 97 127 99 117 97 b 115 -12 115 97 115 91 l 115 -122 l 121 -120 b 159 -111 123 -119 141 -115 l 198 -101 l 205 -98 l 205 9 ',\n },\n accidentalDoubleSharp: {\n x_min: 0,\n x_max: 367.5,\n ha: 375,\n o: 'm 0 124 l 0 187 l 61 187 l 122 187 l 122 138 l 122 91 l 153 61 l 183 30 l 213 61 l 243 91 l 243 138 l 243 187 l 306 187 l 367 187 l 367 124 l 367 61 l 321 61 l 274 61 l 243 30 l 213 0 l 243 -31 l 274 -62 l 321 -62 l 367 -62 l 367 -124 l 367 -188 l 306 -188 l 243 -188 l 243 -140 l 243 -93 l 213 -62 l 183 -31 l 153 -62 l 122 -93 l 122 -140 l 122 -188 l 61 -188 l 0 -188 l 0 -124 l 0 -62 l 46 -62 l 92 -62 l 123 -31 l 153 0 l 123 30 l 92 61 l 46 61 l 0 61 l 0 124 ',\n },\n accidentalDoubleFlat: {\n x_min: -21.78125,\n x_max: 483.1875,\n ha: 493,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 179 164 199 187 192 l 210 176 l 210 396 l 210 617 l 212 621 b 231 632 216 628 223 632 b 250 620 239 632 247 628 b 251 383 251 616 251 616 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 ',\n },\n accidentalParensLeft: {\n x_min: -166.0625,\n x_max: -25.859375,\n ha: 0,\n o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ',\n },\n accidentalParensRight: {\n x_min: 25.859375,\n x_max: 164.6875,\n ha: 168,\n o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ',\n },\n accidentalQuarterToneFlatStein: {\n x_min: 0,\n x_max: 272.21875,\n ha: 278,\n o: 'm 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 ',\n },\n accidentalThreeQuarterTonesFlatZimmermann: {\n x_min: 0,\n x_max: 607.0625,\n ha: 619,\n o: 'm 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 m 347 631 b 353 632 348 632 351 632 b 374 620 363 632 371 628 b 375 383 375 616 375 616 l 375 148 l 377 151 b 492 199 415 183 454 199 b 537 191 507 199 522 197 b 607 84 582 176 607 134 b 583 0 607 58 598 29 b 455 -142 562 -40 533 -72 l 378 -215 b 355 -229 364 -229 362 -229 b 334 -216 345 -229 337 -224 l 333 -212 l 333 201 l 333 616 l 334 620 b 347 631 337 624 341 630 m 465 131 b 451 133 461 133 455 133 b 445 133 449 133 446 133 b 379 87 419 129 396 113 l 375 80 l 375 -37 l 375 -156 l 378 -152 b 499 81 451 -72 499 20 l 499 83 b 465 131 499 113 490 126 ',\n },\n accidentalQuarterToneSharpStein: {\n x_min: 0,\n x_max: 193.28125,\n ha: 197,\n o: 'm 85 514 b 95 517 88 517 89 517 b 114 505 103 517 110 513 l 115 502 l 115 376 b 115 249 115 306 115 249 b 141 258 117 249 127 252 l 167 266 l 172 266 b 190 254 181 265 187 262 l 193 251 l 193 202 l 193 188 b 187 147 193 149 191 152 b 147 130 183 142 182 141 l 115 119 l 115 9 b 115 -99 115 -51 115 -99 b 141 -91 115 -99 127 -95 b 171 -81 166 -81 167 -81 l 171 -81 b 191 -94 181 -81 189 -87 b 193 -142 191 -97 193 -120 b 191 -195 193 -167 191 -194 b 125 -227 187 -205 187 -204 l 115 -230 l 115 -366 l 115 -503 l 114 -506 b 95 -519 110 -514 102 -519 b 74 -506 87 -519 78 -514 l 73 -503 l 73 -374 b 73 -245 73 -260 73 -245 b 73 -245 73 -245 73 -245 b 55 -252 72 -245 63 -249 l 32 -260 b 19 -263 27 -262 23 -263 b 4 -256 13 -263 8 -260 b 0 -215 0 -251 0 -254 b 0 -199 0 -210 0 -206 l 0 -152 l 1 -149 b 8 -140 2 -145 5 -141 b 42 -127 9 -140 24 -133 l 73 -116 l 73 -5 b 73 23 73 4 73 15 b 73 105 73 70 73 105 b 49 97 73 105 61 101 b 17 88 32 91 23 88 b 4 95 10 88 8 91 b 0 137 0 101 0 98 b 0 151 0 141 0 145 l 0 199 l 1 202 b 43 224 5 212 5 212 l 73 234 l 73 367 l 73 502 l 74 505 b 85 514 77 509 81 513 ',\n },\n accidentalThreeQuarterTonesSharpStein: {\n x_min: -1.359375,\n x_max: 455.96875,\n ha: 465,\n o: 'm 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 ',\n },\n accidentalBuyukMucennebFlat: {\n x_min: -171.5,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalBakiyeFlat: {\n x_min: -176.9375,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalKomaSharp: {\n x_min: -1.359375,\n x_max: 455.96875,\n ha: 465,\n o: 'm 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 ',\n },\n accidentalKucukMucennebSharp: {\n x_min: -1.359375,\n x_max: 255.890625,\n ha: 261,\n o: 'm 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 ',\n },\n articAccentAbove: {\n x_min: -348.4375,\n x_max: 24.5,\n ha: 25,\n o: 'm -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 ',\n },\n articAccentBelow: {\n x_min: -348.4375,\n x_max: 24.5,\n ha: 25,\n o: 'm -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 ',\n },\n articTenutoAbove: {\n x_min: 0,\n x_max: 318.5,\n ha: 325,\n o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ',\n },\n articTenutoBelow: {\n x_min: 0,\n x_max: 318.5,\n ha: 325,\n o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ',\n },\n articStaccatoAbove: {\n x_min: 0,\n x_max: 133.390625,\n ha: 136,\n o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ',\n },\n articStaccatoBelow: {\n x_min: 0,\n x_max: 133.390625,\n ha: 136,\n o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ',\n },\n articStaccatissimoAbove: {\n x_min: -73.5,\n x_max: 72.140625,\n ha: 74,\n o: 'm -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 ',\n },\n articStaccatissimoBelow: {\n x_min: -73.5,\n x_max: 72.140625,\n ha: 74,\n o: 'm -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 ',\n },\n articMarcatoAbove: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 ',\n },\n articMarcatoBelow: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 ',\n },\n fermataAbove: {\n x_min: -442.359375,\n x_max: 441,\n ha: 450,\n o: 'm -31 487 b -1 488 -21 488 -10 488 b 434 104 216 488 397 330 b 441 27 438 79 441 47 b 439 12 441 20 439 15 b 419 0 435 4 427 0 b 404 5 413 0 408 1 b 398 30 400 11 398 13 b 0 351 390 213 213 351 b -59 348 -20 351 -39 349 b -400 30 -251 324 -393 191 b -405 5 -400 13 -401 11 b -420 0 -409 1 -415 0 b -441 12 -428 0 -436 4 b -442 27 -441 15 -442 20 b -435 104 -442 47 -439 79 b -31 487 -401 316 -235 474 m -13 131 b -1 133 -9 133 -5 133 b 51 105 19 133 39 123 b 61 70 58 95 61 83 b 51 34 61 58 58 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -57 38 -62 54 b -13 131 -62 98 -44 124 ',\n },\n fermataBelow: {\n x_min: -441,\n x_max: 439.640625,\n ha: 449,\n o: 'm -428 -2 b -421 0 -427 -1 -424 0 b -406 -6 -416 0 -409 -2 b -400 -31 -401 -12 -400 -15 b -1 -352 -392 -215 -215 -352 b 58 -349 19 -352 38 -351 b 398 -31 250 -326 392 -192 b 404 -6 398 -15 400 -12 b 419 -1 408 -2 413 -1 b 439 -13 427 -1 435 -5 b 439 -29 439 -16 439 -22 b 434 -105 439 -48 438 -80 b 0 -489 397 -333 213 -489 b -68 -484 -23 -489 -44 -488 b -441 -36 -280 -452 -436 -263 b -441 -30 -441 -34 -441 -31 b -428 -2 -441 -11 -439 -5 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -57 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ',\n },\n fermataLongAbove: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -378 502 l -374 503 l 0 503 l 372 503 l 377 502 b 387 491 381 499 385 496 l 389 488 l 389 251 l 389 15 l 387 12 b 367 0 383 4 375 0 b 348 12 360 0 352 4 l 347 15 l 347 174 l 347 335 l 0 335 l -348 335 l -348 174 l -348 15 l -349 12 b -368 0 -353 4 -362 0 b -389 12 -377 0 -385 4 l -390 15 l -390 251 l -390 488 l -389 491 b -378 502 -386 496 -382 499 m -13 131 b -1 133 -9 133 -5 133 b 50 105 19 133 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -58 38 -62 55 b -13 131 -62 98 -44 124 ',\n },\n fermataLongBelow: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -378 -2 b -368 -1 -375 -1 -374 -1 b -349 -13 -360 -1 -353 -5 l -348 -16 l -348 -176 l -348 -337 l 0 -337 l 347 -337 l 347 -176 l 347 -16 l 348 -13 b 367 0 352 -5 360 0 b 387 -13 375 0 383 -5 l 389 -16 l 389 -252 l 389 -489 l 387 -492 b 377 -503 385 -498 381 -501 l 372 -505 l 0 -505 l -374 -505 l -378 -503 b -389 -492 -382 -501 -386 -498 l -390 -489 l -390 -252 l -390 -16 l -389 -13 b -378 -2 -386 -8 -382 -4 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -58 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ',\n },\n fermataVeryLongAbove: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -378 573 l -374 576 l 0 576 l 372 576 l 377 573 b 387 563 381 571 385 567 l 389 559 l 389 287 l 389 15 l 387 12 b 367 0 383 4 375 0 b 348 12 360 0 352 4 l 347 15 l 347 210 l 347 406 l 0 406 l -348 406 l -348 210 l -348 15 l -349 12 b -368 0 -353 4 -362 0 b -389 12 -377 0 -385 4 l -390 15 l -390 287 l -390 559 l -389 563 b -378 573 -386 567 -382 571 m -274 337 l -270 338 l 0 338 l 269 338 l 273 337 b 284 326 279 334 281 330 l 285 323 l 285 169 l 285 15 l 284 12 b 265 -1 280 4 272 -1 b 245 12 257 -1 249 4 l 245 15 l 243 108 l 243 201 l 0 201 l -245 201 l -245 108 l -245 15 l -246 12 b -266 -1 -250 4 -258 -1 b -285 12 -273 -1 -281 4 l -287 15 l -287 169 l -287 323 l -285 326 b -274 337 -283 330 -280 334 m -13 131 b -1 133 -9 133 -5 133 b 50 105 19 133 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -58 38 -62 55 b -13 131 -62 98 -44 124 ',\n },\n fermataVeryLongBelow: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -378 -2 b -368 -1 -375 -1 -374 -1 b -349 -13 -360 -1 -353 -5 l -348 -16 l -348 -212 l -348 -408 l 0 -408 l 347 -408 l 347 -212 l 347 -16 l 348 -13 b 367 0 352 -5 360 0 b 387 -13 375 0 383 -5 l 389 -16 l 389 -288 l 389 -560 l 387 -564 b 377 -574 385 -569 381 -573 l 372 -577 l 0 -577 l -374 -577 l -378 -574 b -389 -564 -382 -573 -386 -569 l -390 -560 l -390 -288 l -390 -16 l -389 -13 b -378 -2 -386 -8 -382 -4 m -274 -2 b -266 -1 -272 -1 -270 -1 b -246 -13 -257 -1 -250 -5 l -245 -16 l -245 -109 l -245 -202 l 0 -202 l 243 -202 l 243 -109 l 245 -16 l 245 -13 b 265 0 249 -5 257 0 b 284 -13 272 0 280 -5 l 285 -16 l 285 -170 l 285 -324 l 284 -327 b 273 -338 281 -331 279 -335 l 269 -340 l 0 -340 l -270 -340 l -274 -338 b -285 -327 -280 -335 -283 -331 l -287 -324 l -287 -170 l -287 -16 l -285 -13 b -274 -2 -283 -8 -280 -4 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -58 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ',\n },\n fermataShortAbove: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -9 650 b -1 652 -6 650 -4 652 b 19 639 6 652 13 648 l 23 631 b 28 623 24 628 27 626 l 34 614 l 39 606 l 43 598 l 49 588 l 54 580 l 59 571 l 65 563 l 69 555 l 74 546 l 80 537 l 85 528 b 89 520 87 526 89 523 l 95 512 l 100 503 l 106 494 l 111 487 l 115 478 l 121 470 l 126 462 l 130 453 l 136 445 l 141 437 l 147 427 l 151 419 l 156 410 l 161 402 l 167 394 l 172 385 l 176 376 b 182 367 179 374 181 370 l 187 359 l 193 351 l 198 342 l 202 334 l 208 326 l 212 317 l 217 309 l 223 301 l 228 292 l 234 284 l 238 274 l 243 266 l 249 258 l 254 249 l 259 241 l 264 233 l 269 224 b 274 216 270 222 273 217 l 280 206 l 285 198 l 295 180 l 299 174 l 304 165 l 310 156 l 315 148 l 321 140 l 325 131 l 330 123 l 336 113 l 341 105 l 347 97 l 351 88 l 356 80 l 360 72 b 364 66 362 70 363 68 b 370 58 366 65 368 61 l 379 41 b 389 19 386 31 389 24 b 382 4 389 13 386 8 b 347 0 377 0 378 0 b 337 0 344 0 340 0 b 336 0 336 0 336 0 b 287 11 294 0 294 0 l 281 19 l 276 27 l 272 37 l 266 45 l 261 54 l 255 62 l 250 70 l 246 79 l 240 87 l 235 97 l 230 105 l 224 113 l 220 122 l 215 130 l 209 140 l 204 148 l 200 155 l 194 163 b 189 172 193 165 191 169 l 185 180 l 179 188 l 174 198 l 168 206 l 163 215 l 159 223 l 153 231 l 148 240 l 142 249 l 138 258 l 133 266 l 127 274 l 122 283 l 117 292 l 111 301 l 107 308 l 102 316 b 98 324 102 317 99 322 l 92 333 l 87 341 l 81 349 l 77 359 l 72 367 l 66 376 l 61 384 l 55 392 l 51 401 l 46 410 l 40 419 l 35 427 l 31 435 l 24 444 l 20 453 l 14 460 l 10 469 b 5 477 9 470 6 474 l 0 485 l -5 494 l -9 502 l -14 512 b -20 519 -16 513 -19 517 l -24 526 l -28 534 b -31 537 -29 535 -31 537 b -35 533 -32 537 -32 535 l -88 444 l -187 280 l -285 117 l -343 23 b -362 1 -352 6 -356 2 b -368 0 -364 0 -367 0 b -390 20 -381 0 -390 8 l -390 20 b -359 77 -390 27 -390 27 l -80 539 l -25 631 b -9 650 -17 644 -13 648 m -13 133 b -1 134 -9 133 -5 134 b 50 105 19 134 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 70 -57 40 -62 55 b -13 133 -62 98 -44 126 ',\n },\n fermataShortBelow: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -377 -1 b -368 0 -375 -1 -372 0 b -362 -1 -366 0 -363 -1 b -343 -24 -356 -4 -352 -8 l -285 -119 l -187 -280 l -88 -444 l -35 -533 b -31 -538 -32 -537 -32 -538 b -28 -534 -31 -538 -29 -537 l -23 -526 l -19 -517 l -13 -509 l -8 -501 l -2 -492 l 2 -483 l 6 -476 l 17 -458 l 23 -449 l 32 -433 l 38 -424 l 42 -416 l 47 -408 l 53 -399 l 58 -391 l 63 -381 l 68 -373 l 73 -365 l 78 -356 l 84 -348 l 89 -340 l 93 -330 l 99 -322 l 104 -315 l 114 -297 l 125 -280 l 129 -272 l 134 -263 l 140 -255 l 145 -247 l 151 -238 l 155 -230 l 160 -220 l 166 -212 l 171 -204 l 176 -195 l 181 -187 l 186 -177 l 191 -169 l 196 -162 l 201 -154 l 206 -144 l 217 -127 l 221 -119 l 227 -111 l 232 -102 l 238 -94 l 242 -86 l 247 -77 l 253 -69 l 258 -59 l 262 -51 l 268 -43 l 273 -34 l 279 -26 l 283 -18 b 321 -1 292 -2 292 -1 b 338 -1 326 -1 332 -1 b 382 -6 378 -1 375 -1 b 389 -20 386 -9 389 -15 b 382 -38 389 -26 386 -31 l 378 -47 l 372 -55 l 367 -63 l 362 -72 l 356 -80 l 351 -90 l 347 -98 l 341 -106 l 336 -115 l 330 -123 l 325 -131 l 321 -141 l 315 -149 l 310 -158 l 304 -166 l 299 -174 b 295 -183 298 -177 296 -181 l 289 -191 l 285 -199 l 280 -208 l 274 -216 l 269 -224 l 264 -233 l 259 -242 l 254 -251 l 249 -259 l 243 -267 l 238 -276 l 234 -284 l 228 -292 l 223 -302 l 217 -310 l 213 -319 l 208 -327 b 202 -335 206 -330 204 -334 l 197 -344 l 193 -351 l 187 -360 l 182 -369 l 176 -377 l 172 -385 l 167 -394 l 161 -403 l 156 -412 l 152 -420 l 147 -428 l 141 -437 l 136 -445 l 130 -455 l 126 -463 l 121 -471 l 115 -480 b 110 -488 114 -483 111 -487 l 106 -496 l 100 -503 l 96 -512 l 89 -521 l 85 -530 l 80 -538 l 74 -546 l 69 -555 l 65 -564 l 59 -573 l 54 -581 l 49 -589 l 43 -598 l 39 -606 l 34 -616 l 28 -624 l 23 -632 b 19 -641 21 -635 20 -638 b 0 -653 14 -649 8 -653 b -25 -631 -10 -653 -14 -649 l -80 -541 l -359 -79 b -389 -29 -375 -52 -389 -30 b -390 -22 -389 -26 -390 -24 b -377 -1 -390 -13 -385 -5 m -13 -9 b -1 -8 -9 -8 -5 -8 b 51 -36 19 -8 39 -19 b 61 -72 58 -47 61 -59 b 51 -106 61 -84 58 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -127 b -62 -72 -57 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ',\n },\n breathMarkComma: {\n x_min: -1.359375,\n x_max: 193.28125,\n ha: 197,\n o: 'm 78 233 b 87 233 81 233 84 233 b 187 140 132 233 174 195 b 193 102 190 127 193 115 b 43 -113 193 22 136 -62 b 27 -119 36 -116 31 -119 b 19 -108 21 -119 19 -115 b 29 -97 19 -102 20 -101 b 102 13 73 -72 102 -27 b 92 51 102 26 98 40 l 91 54 l 84 54 b 8 104 53 54 21 74 b -1 142 1 116 -1 130 b 78 233 -1 187 31 227 ',\n },\n breathMarkUpbow: {\n x_min: -170.140625,\n x_max: 168.78125,\n ha: 172,\n o: 'm -160 567 b -122 567 -159 567 -149 567 l -87 567 l -84 566 b -74 553 -78 563 -77 560 b -20 366 -73 551 -49 466 b 31 186 8 267 31 186 b 85 371 31 186 55 269 b 140 559 114 473 138 557 b 153 567 141 564 148 567 b 168 559 159 567 166 564 b 168 555 168 557 168 557 b 92 281 168 548 159 513 b 14 13 50 134 14 13 b 0 0 14 6 6 0 b -17 15 -8 0 -17 8 b -93 283 -17 15 -51 136 b -170 552 -166 533 -170 548 b -170 553 -170 552 -170 552 b -160 567 -170 560 -167 564 ',\n },\n caesura: {\n x_min: 0,\n x_max: 622.03125,\n ha: 635,\n o: 'm 398 417 b 406 419 401 419 404 419 b 427 398 417 419 427 409 b 427 391 427 395 427 392 b 34 -274 424 385 38 -272 b 20 -280 29 -278 25 -280 b 0 -259 9 -280 0 -270 b 0 -252 0 -256 0 -254 b 393 413 2 -247 389 410 b 398 417 394 415 397 416 m 592 417 b 600 419 594 419 597 419 b 622 398 611 419 622 409 b 620 391 622 395 620 392 b 227 -274 617 385 231 -272 b 213 -280 223 -278 219 -280 b 193 -259 202 -280 193 -270 b 194 -252 193 -256 193 -254 b 586 413 196 -247 582 410 b 592 417 588 415 590 416 ',\n },\n caesuraCurved: {\n x_min: 0,\n x_max: 503.609375,\n ha: 514,\n o: 'm 274 430 b 277 430 276 430 277 430 b 310 394 296 430 310 415 b 308 383 310 391 308 387 b 306 367 307 381 307 374 b 236 120 298 305 272 210 b 40 -273 189 -5 125 -134 b 20 -287 35 -283 27 -287 b 5 -281 14 -287 9 -285 b 0 -267 1 -277 0 -273 b 9 -242 0 -262 2 -255 b 246 395 137 -12 232 242 b 274 430 249 416 257 427 m 468 430 b 472 430 469 430 470 430 b 503 394 490 430 503 415 b 502 383 503 391 503 387 b 499 367 502 381 500 374 b 431 120 491 305 465 210 b 234 -273 382 -5 318 -134 b 213 -287 228 -283 220 -287 b 198 -281 208 -287 202 -285 b 193 -267 194 -277 193 -273 b 202 -242 193 -262 196 -255 b 439 395 330 -12 426 242 b 468 430 442 416 451 427 ',\n },\n restMaxima: {\n x_min: 0,\n x_max: 464.140625,\n ha: 474,\n o: 'm 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 ',\n },\n restDoubleWhole: {\n x_min: 0,\n x_max: 386.5625,\n ha: 394,\n o: 'm 0 173 l 0 347 l 193 347 l 386 347 l 386 173 l 386 0 l 193 0 l 0 0 l 0 173 ',\n },\n restWhole: {\n x_min: 0,\n x_max: 447.8125,\n ha: 457,\n o: 'm 0 -87 l 0 0 l 223 0 l 447 0 l 447 -87 l 447 -174 l 223 -174 l 0 -174 l 0 -87 ',\n },\n restWholeLegerLine: {\n x_min: 0,\n x_max: 737.71875,\n ha: 753,\n o: 'm 9 13 b 208 15 10 15 51 15 b 368 15 251 15 304 15 l 726 15 l 729 12 b 737 -1 735 9 737 4 b 729 -15 737 -6 735 -11 l 726 -16 l 660 -16 l 592 -16 l 592 -95 l 592 -174 l 368 -174 l 144 -174 l 144 -95 l 144 -16 l 77 -16 l 9 -16 l 6 -15 b 0 -1 1 -11 0 -6 b 9 13 0 5 2 11 ',\n },\n restHalf: {\n x_min: 0,\n x_max: 447.8125,\n ha: 457,\n o: 'm 0 86 l 0 173 l 223 173 l 447 173 l 447 86 l 447 0 l 223 0 l 0 0 l 0 86 ',\n },\n restHalfLegerLine: {\n x_min: 0,\n x_max: 737.71875,\n ha: 753,\n o: 'm 144 94 l 144 173 l 368 173 l 592 173 l 592 94 l 592 15 l 660 15 l 726 15 l 729 12 b 737 -1 735 9 737 4 b 729 -15 737 -6 735 -11 l 726 -16 l 368 -16 l 9 -16 l 6 -15 b 0 -1 1 -11 0 -6 b 6 12 0 4 1 9 l 9 15 l 77 15 l 144 15 l 144 94 ',\n },\n restQuarter: {\n x_min: 0,\n x_max: 300.8125,\n ha: 307,\n o: 'm 49 505 b 53 506 50 505 51 506 b 70 496 58 506 62 503 b 81 485 73 492 78 488 l 96 473 l 111 459 l 122 449 l 134 438 l 182 396 l 255 330 b 292 291 292 298 292 298 l 292 290 l 292 284 l 283 270 b 209 36 234 197 209 113 b 288 -170 209 -44 235 -119 b 299 -184 295 -179 299 -181 b 300 -191 300 -187 300 -188 b 285 -206 300 -199 294 -206 b 280 -206 283 -206 281 -206 b 247 -201 270 -202 259 -201 b 176 -222 223 -201 197 -208 b 114 -340 136 -249 114 -292 b 172 -471 114 -384 134 -433 b 185 -492 182 -481 185 -487 b 181 -502 185 -496 183 -499 b 171 -508 176 -505 174 -508 b 152 -498 166 -508 160 -503 b 0 -284 65 -428 12 -352 b 0 -260 0 -278 0 -270 b 1 -238 0 -252 0 -242 b 148 -140 16 -177 73 -140 b 209 -148 167 -140 189 -142 b 215 -149 212 -148 215 -149 b 215 -149 215 -149 215 -149 l 215 -149 b 201 -136 215 -148 209 -142 l 157 -97 l 96 -41 b 17 34 21 24 17 29 b 17 37 17 36 17 36 b 17 38 17 37 17 38 b 25 56 17 44 17 44 b 110 298 81 131 110 219 b 46 474 110 367 88 431 b 38 491 40 480 38 487 b 49 505 38 498 42 502 ',\n },\n rest8th: {\n x_min: 0,\n x_max: 349.8125,\n ha: 357,\n o: 'm 88 302 b 103 303 93 302 98 303 b 202 224 149 303 191 270 b 205 199 204 216 205 208 b 178 129 205 173 196 147 l 175 126 l 182 127 b 307 249 236 142 284 190 b 313 259 308 254 311 258 b 329 267 317 265 323 267 b 349 247 340 267 349 259 b 201 -263 349 242 204 -258 b 182 -273 197 -270 190 -273 b 163 -260 174 -273 166 -269 b 161 -256 161 -259 161 -258 b 217 -59 161 -248 170 -220 b 272 129 247 43 272 127 b 272 129 272 129 272 129 b 264 122 272 129 268 126 b 140 80 227 94 183 80 b 36 115 102 80 65 91 b 0 194 10 136 0 165 b 88 302 0 244 32 292 ',\n },\n rest16th: {\n x_min: 0,\n x_max: 450.53125,\n ha: 460,\n o: 'm 189 302 b 204 303 193 302 198 303 b 303 224 250 303 292 270 b 306 199 304 216 306 208 b 279 129 306 173 296 147 l 276 126 l 281 127 b 408 249 337 142 385 190 b 412 259 409 254 412 258 b 430 267 417 265 423 267 b 450 247 441 267 450 259 b 200 -605 450 242 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 194 111 136 99 165 b 189 302 99 244 133 292 ',\n },\n rest32nd: {\n x_min: 0,\n x_max: 551.25,\n ha: 563,\n o: 'm 289 644 b 304 645 294 645 299 645 b 404 566 349 645 392 613 b 406 541 405 557 406 549 b 379 471 406 514 397 489 l 377 467 l 382 470 b 509 591 438 485 485 531 b 513 601 510 595 513 599 b 530 609 518 607 524 609 b 551 588 540 609 551 602 b 200 -605 551 584 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 195 112 136 99 165 b 118 256 99 217 106 238 b 204 303 138 287 171 303 b 292 249 238 303 273 285 b 306 199 302 234 306 217 b 279 129 306 173 296 148 l 276 126 l 281 127 b 408 248 336 142 385 190 b 473 470 409 254 473 469 b 473 470 473 470 473 470 b 465 464 473 470 469 467 b 341 421 428 435 383 421 b 236 458 303 421 266 433 b 200 537 212 478 200 508 b 289 644 200 585 234 635 ',\n },\n rest64th: {\n x_min: -1.359375,\n x_max: 651.96875,\n ha: 665,\n o: 'm 389 644 b 405 645 394 645 400 645 b 504 566 450 645 492 613 b 507 541 506 557 507 549 b 480 471 507 514 498 489 l 477 467 l 483 470 b 609 591 539 485 586 531 b 613 601 611 595 613 599 b 631 609 619 607 624 609 b 651 588 641 609 651 602 b 200 -946 651 584 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 537 313 478 300 508 b 389 644 300 585 334 635 ',\n },\n rest128th: {\n x_min: -1.359375,\n x_max: 752.703125,\n ha: 768,\n o: 'm 490 985 b 504 986 495 986 500 986 b 604 907 551 986 593 954 b 607 884 607 900 607 892 b 581 813 607 857 597 831 l 578 810 l 583 811 b 710 932 638 827 687 873 b 714 943 711 936 713 942 b 730 952 720 949 725 952 b 752 931 741 952 752 943 b 200 -946 752 927 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 538 314 477 300 508 b 318 598 300 559 306 580 b 404 645 340 630 372 645 b 494 592 439 645 475 627 b 507 541 502 577 507 559 b 480 471 507 516 498 489 l 477 467 l 483 470 b 608 589 537 485 586 531 b 675 811 611 595 675 810 b 675 811 675 811 675 811 b 666 806 675 811 671 809 b 543 763 628 777 585 763 b 438 799 504 763 468 775 b 401 878 412 820 401 849 b 490 985 401 928 434 977 ',\n },\n dynamicPiano: {\n x_min: -53.078125,\n x_max: 513.140625,\n ha: 485,\n o: 'm 185 383 b 196 384 187 383 191 384 b 277 334 230 384 259 365 b 288 301 281 324 288 306 b 288 297 288 298 288 297 b 294 302 289 297 291 299 b 394 370 323 338 367 367 b 404 371 398 370 401 371 b 510 272 453 371 498 328 b 513 237 513 262 513 251 b 507 172 513 217 511 192 b 326 -34 487 59 412 -26 b 314 -36 322 -36 318 -36 b 274 -24 298 -36 283 -31 l 265 -16 b 224 44 246 -1 232 20 b 223 49 224 47 223 49 b 223 49 223 49 223 49 b 149 -197 221 48 149 -194 b 149 -198 149 -197 149 -198 b 170 -210 149 -202 155 -205 b 187 -215 174 -210 175 -212 b 204 -231 201 -219 204 -222 b 197 -245 204 -240 202 -242 l 194 -248 l 76 -248 l -42 -248 l -46 -245 b -53 -231 -51 -242 -53 -240 b -35 -215 -53 -222 -49 -217 b -13 -210 -21 -212 -20 -212 b -6 -208 -10 -209 -8 -208 b 0 -206 -6 -208 -2 -206 b 25 -188 13 -201 21 -195 b 163 280 28 -183 163 276 b 166 291 163 283 164 287 b 167 302 167 295 167 299 b 155 324 167 315 161 324 b 155 324 155 324 155 324 b 65 230 125 322 85 280 b 53 215 61 217 58 215 b 51 215 53 215 51 215 b 42 224 46 215 42 217 b 57 263 42 231 47 244 b 140 360 77 305 104 337 b 152 370 144 365 149 369 b 185 383 157 376 172 381 m 374 306 b 366 308 371 308 368 308 b 300 273 348 308 321 294 b 284 254 288 262 287 259 b 280 242 283 249 281 245 b 257 169 279 240 270 213 l 236 98 l 236 93 b 251 48 238 77 243 61 b 279 27 258 37 272 27 b 281 27 279 27 280 27 b 291 31 281 27 287 30 b 396 170 334 52 378 109 b 406 247 402 197 406 224 b 401 277 406 259 405 270 b 374 306 397 290 383 303 ',\n },\n dynamicMezzo: {\n x_min: 46.28125,\n x_max: 669.671875,\n ha: 563,\n o: 'm 183 376 b 189 376 185 376 187 376 b 212 374 197 376 208 376 b 265 337 234 369 253 355 b 274 317 268 331 273 320 b 274 316 274 317 274 316 b 280 323 276 316 276 319 b 311 358 288 337 299 348 b 319 366 315 360 318 365 b 356 376 326 373 340 376 b 382 371 364 376 374 374 b 428 337 400 366 417 352 b 436 317 431 331 436 320 b 438 316 436 317 436 316 b 442 323 438 316 439 319 b 475 358 451 337 462 348 b 483 366 477 360 481 365 b 518 376 488 373 503 376 b 544 373 528 376 536 376 b 604 285 579 360 604 326 b 597 249 604 273 601 258 b 543 63 596 247 544 70 b 541 54 543 61 541 55 b 540 44 540 51 540 47 b 552 23 540 33 545 23 b 552 23 552 23 552 23 b 647 126 586 29 627 72 b 658 138 651 136 653 138 b 660 138 660 138 660 138 b 669 129 666 137 669 136 b 654 88 669 122 665 109 b 562 -12 631 43 602 9 l 549 -19 b 521 -27 540 -24 530 -27 b 447 30 490 -27 458 -4 b 443 58 445 38 443 48 b 450 93 443 72 446 84 b 504 278 453 97 504 272 b 507 288 506 283 506 287 b 509 298 507 292 509 295 b 491 326 509 310 502 320 b 487 327 490 327 488 327 b 479 324 484 327 483 326 b 441 270 462 316 443 288 b 435 249 441 265 436 254 b 398 127 434 248 419 195 b 362 4 379 61 362 5 b 328 -1 359 -1 362 -1 b 314 -1 323 -1 319 -1 b 302 -1 310 -1 306 -1 b 266 4 266 -1 269 -1 b 265 6 265 5 265 5 b 303 144 265 13 272 34 b 343 278 325 216 343 276 b 344 288 343 281 344 285 b 345 298 345 291 345 295 b 330 326 345 310 340 320 b 323 327 328 327 325 327 b 317 324 322 327 321 326 b 279 270 300 316 281 288 b 273 249 279 265 274 254 b 236 127 272 248 255 195 b 200 4 216 61 200 5 b 164 -1 197 -1 198 -1 b 151 -1 161 -1 156 -1 b 140 -1 147 -1 142 -1 b 103 4 104 -1 106 -1 b 103 6 103 5 103 5 b 141 144 103 13 108 34 b 181 278 161 216 179 276 b 182 288 181 281 181 285 b 183 298 182 291 183 295 b 168 324 183 310 178 320 b 160 327 166 326 163 327 b 141 320 156 327 151 324 b 69 230 112 305 85 272 b 57 215 65 217 62 215 b 55 215 57 215 55 215 b 46 224 49 215 46 217 b 59 260 46 231 50 242 b 151 363 81 306 112 341 b 161 369 155 365 160 367 b 183 376 166 371 174 374 ',\n },\n dynamicForte: {\n x_min: -118.421875,\n x_max: 597.53125,\n ha: 381,\n o: 'm 460 574 b 464 574 461 574 462 574 b 488 574 470 574 481 574 b 500 573 491 574 498 574 b 594 503 543 570 588 538 b 597 488 596 498 597 494 b 528 417 597 449 564 417 b 502 423 519 417 510 419 b 465 481 477 434 465 458 b 488 528 465 499 472 516 b 490 530 490 530 490 530 b 490 530 490 530 490 530 b 468 517 488 530 475 523 b 349 340 419 485 377 420 b 347 330 348 334 347 330 b 383 328 347 328 363 328 b 428 326 423 328 424 328 b 442 302 438 320 442 312 b 430 281 442 294 438 285 b 385 276 424 277 426 276 l 377 276 l 332 276 l 330 269 b 178 -117 303 126 250 -9 b 1 -249 129 -194 69 -237 b -20 -251 -6 -251 -13 -251 b -114 -187 -65 -251 -100 -227 b -118 -156 -117 -177 -118 -166 b -51 -84 -118 -116 -91 -84 b -31 -87 -46 -84 -39 -86 b 16 -152 0 -95 16 -124 b -12 -205 16 -173 8 -194 b -16 -208 -14 -206 -16 -208 b -14 -208 -16 -208 -14 -208 b -9 -206 -14 -208 -12 -208 b 74 -124 23 -197 54 -166 b 172 224 98 -79 125 22 b 185 276 178 252 183 274 b 185 276 185 276 185 276 b 141 276 185 276 181 276 b 91 280 96 276 96 276 b 77 302 83 285 77 294 b 91 326 77 312 83 320 b 148 328 95 328 96 328 l 198 330 l 202 341 b 460 574 249 473 351 566 ',\n },\n dynamicRinforzando: {\n x_min: 78.9375,\n x_max: 485.921875,\n ha: 417,\n o: 'm 362 378 b 378 380 367 380 372 380 b 472 348 415 380 453 367 b 485 315 481 338 485 327 b 462 273 485 298 477 281 b 439 267 454 269 446 267 b 398 290 424 267 409 274 b 344 319 385 309 364 319 b 281 269 315 319 289 301 b 279 262 280 266 279 262 b 276 256 279 260 277 258 b 274 249 276 254 274 251 b 238 127 273 248 257 192 b 201 4 217 61 201 5 b 166 -1 198 -1 200 -1 b 153 -1 163 -1 157 -1 b 141 -1 148 -1 144 -1 b 104 4 106 -1 107 -1 b 104 6 104 5 104 5 b 142 144 104 13 110 34 b 182 278 164 219 181 276 b 183 288 182 281 182 285 b 185 302 185 292 185 298 b 164 330 185 317 176 328 b 159 330 163 330 161 330 b 102 302 140 330 119 320 b 91 294 95 295 93 294 b 88 294 91 294 89 294 b 78 303 83 294 78 298 b 81 312 78 306 78 309 b 200 373 106 347 160 373 b 215 371 205 373 209 371 b 266 335 235 367 254 353 b 269 331 268 333 269 331 b 269 331 269 331 269 331 b 273 335 269 331 270 334 b 362 378 298 359 330 376 ',\n },\n dynamicSforzando: {\n x_min: 70.78125,\n x_max: 378.390625,\n ha: 315,\n o: 'm 246 373 b 254 373 249 373 251 373 b 372 324 303 373 360 351 b 378 302 377 317 378 309 b 338 251 378 278 362 255 b 328 249 334 249 332 249 b 283 294 303 249 283 270 b 288 315 283 301 284 308 b 289 319 289 317 289 319 b 289 319 289 319 289 319 b 283 320 289 320 287 320 b 270 322 279 322 274 322 b 206 288 242 322 215 308 b 206 283 206 287 206 285 b 257 223 206 267 230 238 b 284 206 272 213 277 210 b 351 90 328 173 351 130 b 340 47 351 74 348 59 b 205 -30 314 -2 264 -30 b 182 -29 198 -30 190 -30 b 84 15 147 -24 103 -5 b 70 48 74 24 70 36 b 108 99 70 70 85 94 b 121 102 112 101 117 102 b 167 56 147 102 167 80 b 159 31 167 48 164 40 l 156 26 l 157 26 b 190 20 167 22 178 20 b 220 26 201 20 212 22 b 258 65 243 34 258 51 b 257 70 258 66 258 69 b 204 126 249 94 234 109 b 114 258 148 158 114 209 b 125 302 114 273 118 288 b 246 373 147 342 193 370 ',\n },\n dynamicZ: {\n x_min: 29.9375,\n x_max: 420.578125,\n ha: 371,\n o: 'm 115 345 b 221 347 117 345 166 347 b 411 345 306 347 409 345 b 420 330 416 342 420 335 b 415 319 420 326 419 321 b 178 118 397 303 179 118 b 178 117 178 118 178 117 b 181 117 178 117 178 117 b 189 117 182 117 185 117 b 193 117 190 117 191 117 b 247 98 215 117 232 111 b 296 75 266 83 280 76 b 302 75 299 75 300 75 b 322 91 311 75 315 79 b 322 91 322 91 322 91 b 322 91 322 91 322 91 b 319 91 322 91 321 91 b 313 90 318 90 315 90 b 283 107 300 90 288 97 b 277 126 279 114 277 121 b 319 167 277 149 295 167 b 319 167 319 167 319 167 b 362 118 347 167 362 147 b 355 82 362 108 359 96 b 311 33 349 65 340 55 b 224 1 284 12 253 1 b 194 5 213 1 204 2 b 168 18 183 8 178 11 b 110 36 151 30 130 36 b 57 15 88 36 68 29 b 47 11 54 12 51 11 b 31 20 40 11 34 13 b 29 26 31 22 29 25 b 68 66 29 36 39 45 b 285 250 73 71 281 248 b 285 250 285 250 285 250 b 231 252 285 252 261 252 b 137 250 190 252 141 250 b 93 227 122 248 110 241 b 78 220 88 222 83 220 b 66 227 74 220 70 222 b 63 234 65 229 63 231 b 85 291 63 241 69 252 b 115 345 108 342 108 344 ',\n },\n ornamentTrill: {\n x_min: -340.28125,\n x_max: 338.921875,\n ha: 346,\n o: 'm -32 520 b -29 521 -31 520 -31 521 b -23 519 -27 521 -24 520 b -20 513 -21 517 -20 516 b -21 506 -20 512 -20 509 b -31 474 -23 502 -27 488 l -53 402 l -66 352 l -68 349 l -57 349 b -32 351 -51 349 -40 351 b 123 370 19 352 74 359 b 137 371 127 370 133 371 b 170 356 152 371 164 366 b 171 355 170 355 170 355 b 216 366 174 355 183 358 b 280 378 268 377 266 377 b 287 378 283 378 284 378 b 332 349 307 378 322 369 b 338 319 336 341 338 330 b 332 301 338 310 336 302 b 242 280 329 299 246 280 b 242 280 242 280 242 280 b 235 288 236 280 235 283 b 235 292 235 290 235 291 b 236 302 236 297 236 299 b 220 337 236 316 230 330 l 216 340 l 210 335 b 159 276 189 322 172 301 b 118 149 152 265 156 274 b 81 34 84 36 85 36 b -8 13 78 33 -4 13 b -8 13 -8 13 -8 13 b -14 20 -12 15 -14 15 b -8 44 -14 24 -12 31 b -2 66 -5 55 -2 65 b -2 66 -2 66 -2 66 l -2 66 b -43 41 -2 66 -21 55 b -114 4 -98 8 -98 8 b -144 0 -123 0 -134 0 b -242 99 -197 0 -242 43 b -242 109 -242 102 -242 105 b -212 219 -240 122 -242 116 b -185 312 -197 270 -185 312 l -185 312 b -189 312 -185 312 -186 312 b -259 312 -200 312 -227 312 b -321 310 -291 312 -310 310 b -334 312 -330 310 -334 312 b -340 319 -338 313 -340 316 b -336 326 -340 322 -338 324 b -291 337 -334 326 -314 331 l -247 347 l -210 348 b -172 348 -190 348 -172 348 b -168 363 -172 348 -171 355 b -145 442 -151 424 -145 441 b -133 452 -144 444 -140 446 l -77 489 b -32 520 -53 506 -32 520 m 57 334 b 53 335 55 335 54 335 b 44 334 50 335 49 335 b -70 316 8 326 -28 320 b -78 309 -78 316 -78 316 b -108 202 -80 305 -88 274 b -141 81 -136 112 -141 93 b -140 74 -141 79 -141 77 b -117 49 -137 59 -127 49 b -107 52 -114 49 -110 51 b 16 127 -106 54 14 126 b 42 217 16 127 42 215 b 49 241 42 222 44 229 b 73 320 53 251 73 317 b 57 334 73 327 65 333 ',\n },\n ornamentTurn: {\n x_min: -423.3125,\n x_max: 421.9375,\n ha: 431,\n o: 'm -262 197 b -247 197 -257 197 -253 197 b -118 162 -210 197 -163 184 b 40 45 -61 134 -13 98 b 277 -95 119 -33 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -55 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 201 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 136 b 421 22 421 37 421 29 b 245 -199 421 -93 338 -199 b 238 -198 243 -199 240 -199 b -44 -47 148 -194 50 -141 b -250 86 -114 22 -183 66 b -295 94 -270 91 -283 94 b -315 91 -302 94 -307 94 b -381 4 -356 81 -381 43 b -355 -56 -381 -18 -372 -40 b -298 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -178 -69 -200 -58 -189 -62 b -151 -122 -160 -81 -151 -101 b -171 -167 -151 -138 -157 -155 b -239 -195 -185 -181 -213 -192 b -257 -197 -245 -197 -250 -197 b -423 -5 -352 -197 -423 -109 b -412 65 -423 16 -419 40 b -262 197 -389 137 -329 188 ',\n },\n ornamentTurnSlash: {\n x_min: -423.3125,\n x_max: 421.9375,\n ha: 431,\n o: 'm -10 276 b -2 277 -8 277 -5 277 b 17 265 5 277 13 273 b 19 163 19 260 19 260 l 19 68 l 39 45 b 277 -95 122 -34 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -54 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 200 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 137 b 421 22 421 37 421 29 b 257 -198 421 -86 347 -188 b 242 -198 251 -198 247 -198 b 20 -105 181 -198 95 -163 l 19 -104 l 19 -183 b 19 -216 19 -195 19 -206 b 12 -273 19 -272 17 -267 b -2 -278 8 -277 2 -278 b -21 -266 -10 -278 -19 -274 b -23 -165 -23 -263 -23 -262 l -23 -69 l -44 -47 b -250 86 -117 23 -183 66 b -295 94 -270 93 -284 94 b -315 91 -302 94 -308 94 b -381 5 -356 81 -381 43 b -355 -56 -381 -16 -372 -40 b -299 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -168 -77 -196 -58 -179 -65 b -151 -122 -156 -90 -151 -105 b -179 -174 -151 -141 -160 -162 b -239 -195 -194 -184 -217 -192 b -257 -197 -245 -195 -250 -197 b -423 -5 -349 -197 -423 -113 b -423 0 -423 -4 -423 -1 b -277 194 -420 97 -362 173 b -247 197 -268 197 -258 197 b -24 104 -185 197 -100 162 l -23 102 l -23 181 b -21 265 -23 260 -23 260 b -10 276 -20 269 -14 274 ',\n },\n ornamentMordent: {\n x_min: -402.890625,\n x_max: 401.53125,\n ha: 410,\n o: 'm -10 273 b -4 274 -9 273 -6 274 b 16 262 4 274 12 269 b 17 158 17 259 17 259 l 17 56 l 62 112 b 117 174 110 172 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b 21 -6 27 0 24 -2 l 17 -12 l 17 -147 b 17 -210 17 -173 17 -194 b 10 -292 17 -297 16 -287 b -2 -299 6 -297 2 -299 b -21 -287 -10 -299 -19 -295 b -24 -174 -23 -284 -23 -284 l -24 -63 l -66 -117 b -121 -176 -110 -170 -114 -176 b -125 -176 -122 -176 -123 -176 b -296 -12 -134 -174 -125 -184 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 170 -398 -43 -231 165 b -212 174 -221 173 -216 174 b -202 173 -208 174 -205 174 b -39 11 -200 172 -151 122 l -28 -1 l -25 1 l -24 4 l -24 130 b -23 260 -24 256 -24 258 b -10 273 -20 266 -16 270 ',\n },\n ornamentShortTrill: {\n x_min: -402.890625,\n x_max: 401.53125,\n ha: 410,\n o: 'm -219 173 b -213 174 -217 174 -215 174 b -202 173 -209 174 -205 173 b -114 86 -200 172 -179 151 b -28 0 -66 37 -28 0 b 40 84 -28 0 2 37 b 117 174 111 173 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b -42 -86 27 0 -4 -38 b -118 -174 -112 -174 -111 -173 b -123 -176 -119 -176 -121 -176 b -133 -174 -126 -176 -130 -174 b -296 -12 -136 -173 -172 -137 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 172 -398 -43 -228 167 b -219 173 -223 172 -220 173 ',\n },\n ornamentTremblement: {\n x_min: -571.671875,\n x_max: 570.3125,\n ha: 582,\n o: 'm -386 173 b -381 174 -385 174 -383 174 b -370 173 -377 174 -372 173 b -281 86 -367 172 -347 151 b -196 0 -235 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 277 172 b 289 174 285 174 288 174 b 299 173 294 174 298 173 b 462 11 303 172 338 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 374 -176 371 -176 b 280 -87 367 -173 345 -152 b 194 0 234 -38 194 0 b 125 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 43 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -141 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -289 -176 b -300 -174 -295 -176 -299 -174 b -464 -12 -304 -173 -340 -137 l -476 0 l -504 -34 b -543 -77 -534 -73 -537 -76 b -549 -79 -545 -79 -547 -79 b -571 -58 -562 -79 -571 -69 b -568 -49 -571 -55 -570 -52 b -392 172 -566 -43 -396 167 b -386 173 -390 172 -387 173 ',\n },\n ornamentPrecompAppoggTrill: {\n x_min: -571.671875,\n x_max: 570.3125,\n ha: 582,\n o: 'm -559 351 b -551 352 -556 352 -553 352 b -530 338 -543 352 -533 348 b -529 169 -530 337 -529 291 l -529 1 l -507 27 l -441 112 b -382 174 -394 169 -390 174 b -378 174 -381 174 -379 174 b -281 86 -370 174 -375 179 b -196 0 -234 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 279 172 b 289 174 285 174 288 174 b 300 173 294 174 298 173 b 462 11 303 172 340 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 375 -176 371 -176 b 280 -87 367 -173 347 -152 b 194 0 234 -38 194 0 b 126 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 44 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -140 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -288 -176 b -300 -174 -294 -176 -298 -174 b -464 -11 -303 -173 -374 -102 l -476 0 l -506 -37 b -539 -76 -528 -65 -537 -74 b -551 -80 -543 -79 -547 -80 b -570 -68 -558 -80 -566 -76 l -571 -65 l -571 136 b -570 340 -571 331 -571 337 b -559 351 -568 344 -564 348 ',\n },\n ornamentPrecompSlideTrillDAnglebert: {\n x_min: -590.71875,\n x_max: 589.359375,\n ha: 601,\n o: 'm -367 173 b -362 174 -366 174 -364 174 b -351 173 -357 174 -353 173 b -262 86 -348 172 -328 151 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 72 86 -13 172 6 151 b 157 0 119 37 157 0 b 227 84 159 0 189 37 b 303 174 298 173 296 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 144 -86 213 0 182 -38 b 68 -174 73 -174 74 -173 b 62 -176 66 -176 65 -176 b 53 -174 59 -176 55 -174 b -35 -87 50 -173 29 -152 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -367 173 -375 169 -372 172 ',\n },\n ornamentPrecompSlideTrillBach: {\n x_min: -590.71875,\n x_max: 589.359375,\n ha: 601,\n o: 'm 175 273 b 182 274 178 273 181 274 b 202 262 190 274 198 269 b 204 158 204 259 204 259 l 204 56 l 250 112 b 303 174 296 172 298 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 208 -6 213 0 210 -2 l 204 -12 l 204 -147 b 204 -210 204 -173 204 -194 b 198 -292 204 -297 204 -287 b 183 -299 194 -297 189 -299 b 164 -287 175 -299 167 -295 b 163 -174 163 -284 163 -284 l 161 -63 l 119 -117 b 65 -176 76 -170 73 -176 b 61 -176 63 -176 62 -176 b -35 -87 51 -174 57 -180 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -363 174 -374 170 -371 174 b -359 174 -362 174 -360 174 b -262 86 -351 174 -356 179 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 147 11 -13 172 35 123 l 157 -1 l 160 1 l 163 4 l 163 130 b 164 260 163 256 163 258 b 175 273 166 266 170 270 ',\n },\n ornamentPrecompTrillSuffixDandrieu: {\n x_min: -590.71875,\n x_max: 589.359375,\n ha: 601,\n o: 'm 544 335 b 553 337 548 337 551 337 b 575 313 563 337 570 330 b 589 226 583 285 589 256 b 517 8 589 152 563 76 b 464 -58 507 -4 503 -9 l 401 -136 b 362 -176 372 -172 370 -176 b 357 -176 360 -176 359 -176 b 261 -87 349 -174 355 -180 b 175 0 215 -38 175 0 b 106 -86 175 0 144 -38 b 29 -174 35 -174 36 -173 b 24 -176 28 -176 27 -176 b 14 -174 21 -176 17 -174 b -73 -87 12 -173 -8 -152 b -159 0 -121 -38 -159 0 b -228 -86 -160 0 -190 -38 b -304 -174 -299 -174 -298 -173 b -310 -176 -306 -176 -308 -176 b -319 -174 -314 -176 -318 -174 b -483 -12 -323 -173 -359 -137 l -495 0 l -524 -34 b -562 -77 -553 -73 -556 -76 b -568 -79 -564 -79 -566 -79 b -590 -58 -581 -79 -590 -69 b -588 -49 -590 -55 -589 -52 b -412 170 -585 -43 -417 165 b -398 174 -408 173 -402 174 b -389 173 -394 174 -392 174 b -300 86 -387 172 -366 151 b -215 -1 -254 37 -215 -1 b -145 84 -215 -1 -183 37 b -69 173 -74 173 -76 172 b -63 174 -68 174 -66 174 b -54 173 -61 174 -57 173 b 34 86 -51 172 -31 151 b 119 -1 81 37 119 -1 b 189 84 121 -1 151 37 b 265 173 259 173 258 172 b 270 174 266 174 269 174 b 280 173 274 174 279 173 b 370 84 283 172 303 151 b 455 -1 416 37 455 -1 l 455 -1 b 476 24 455 -1 469 15 b 547 226 522 87 547 159 b 534 302 547 252 543 278 b 532 317 533 308 532 313 b 544 335 532 326 536 333 ',\n },\n ornamentPrecompDoubleCadenceUpperPrefix: {\n x_min: -597.53125,\n x_max: 596.171875,\n ha: 608,\n o: 'm -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 80 86 -5 172 13 151 b 166 -1 127 37 166 -1 b 235 84 166 -1 197 37 b 311 173 306 173 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 152 -86 221 -1 190 -38 b 76 -176 81 -174 83 -173 b 70 -176 74 -176 73 -176 b 61 -174 66 -176 62 -174 b -27 -87 58 -173 38 -152 b -114 -1 -74 -38 -112 -1 b -182 -86 -114 -1 -145 -38 b -258 -176 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 ',\n },\n ornamentPrecompDoubleCadenceUpperPrefixTurn: {\n x_min: -597.53125,\n x_max: 596.171875,\n ha: 608,\n o: 'm -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 155 11 -5 172 43 123 l 166 -1 l 168 1 l 170 4 l 170 130 b 171 260 170 256 170 258 b 191 274 175 269 183 274 b 205 267 196 274 201 272 b 212 158 212 262 210 273 l 212 56 l 257 112 b 311 173 304 172 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 216 -6 221 -1 219 -2 l 212 -12 l 212 -147 b 212 -210 212 -173 212 -194 b 205 -292 212 -297 210 -287 b 191 -299 201 -297 196 -299 b 172 -287 183 -299 175 -295 b 170 -174 171 -284 171 -284 l 170 -63 l 127 -117 b 73 -176 84 -170 80 -176 b 68 -176 72 -176 70 -176 b -27 -87 59 -174 65 -180 b -114 0 -74 -38 -112 0 b -182 -86 -114 0 -145 -38 b -258 -174 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 ',\n },\n ornamentPrecompTrillLowerSuffix: {\n x_min: -597.53125,\n x_max: 596.171875,\n ha: 608,\n o: 'm -413 173 b -408 174 -412 174 -409 174 b -397 173 -404 174 -400 173 b -308 86 -394 172 -374 151 b -223 0 -261 37 -223 0 b -153 84 -223 0 -191 37 b -77 174 -83 173 -84 172 b -72 174 -76 174 -74 174 b -62 173 -68 174 -63 173 b 25 86 -59 172 -39 151 b 112 0 73 37 111 0 b 181 84 112 0 144 37 b 257 174 251 173 251 172 b 262 174 258 174 261 174 b 273 173 266 174 270 173 b 436 9 276 172 347 101 l 447 -1 l 477 36 b 522 79 511 79 513 79 l 522 79 b 552 51 533 79 539 73 b 596 -112 582 6 596 -51 b 567 -262 596 -161 586 -213 b 539 -322 558 -287 544 -316 b 524 -327 534 -326 529 -327 b 504 -315 515 -327 507 -323 b 503 -308 503 -312 503 -309 b 511 -285 503 -302 504 -297 b 555 -113 540 -227 555 -169 b 544 -34 555 -86 551 -59 b 522 19 540 -16 530 8 l 521 22 l 481 -26 l 405 -122 b 353 -176 366 -172 362 -176 b 349 -176 352 -176 351 -176 b 253 -87 341 -176 347 -180 b 167 0 206 -38 167 0 b 99 -86 167 0 136 -38 b 21 -174 27 -174 28 -173 b 17 -176 20 -176 19 -176 b 6 -174 13 -176 9 -174 b -81 -87 4 -173 -14 -152 b -167 0 -129 -38 -167 0 b -236 -86 -167 0 -198 -38 b -313 -174 -307 -174 -306 -173 b -318 -176 -314 -176 -315 -176 b -328 -174 -321 -176 -325 -174 b -491 -12 -330 -173 -367 -137 l -503 0 l -530 -34 b -570 -77 -562 -73 -564 -76 b -577 -79 -571 -79 -574 -79 b -597 -58 -588 -79 -597 -69 b -596 -49 -597 -55 -597 -52 b -417 172 -593 -43 -423 167 b -413 173 -417 172 -415 173 ',\n },\n stringsDownBow: {\n x_min: -228.671875,\n x_max: 227.3125,\n ha: 232,\n o: 'm -217 487 l -213 488 l 0 488 l 212 488 l 216 487 b 225 476 220 484 224 480 l 227 473 l 227 244 l 227 15 l 225 12 b 206 0 223 4 215 0 b 197 1 204 0 200 0 b 187 12 193 4 189 6 l 186 15 l 186 138 l 186 262 l -1 262 l -187 262 l -187 138 l -187 15 l -189 12 b -208 0 -193 4 -200 0 b -227 12 -216 0 -223 4 l -228 15 l -228 244 l -228 473 l -227 476 b -217 487 -225 480 -221 484 ',\n },\n stringsUpBow: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -137 381 b -130 383 -134 383 -133 383 b -111 371 -122 383 -114 378 b -55 224 -110 370 -85 305 b 0 80 -25 145 -1 80 b 54 224 0 80 24 145 b 112 377 114 384 110 373 b 127 384 118 381 122 384 b 148 362 138 384 148 374 l 148 356 l 83 183 b 16 9 47 88 17 11 b -1 0 12 2 5 0 b -14 5 -5 0 -10 1 b -84 183 -19 9 -13 -6 l -149 356 l -149 362 b -137 381 -149 371 -145 378 ',\n },\n stringsHarmonic: {\n x_min: -122.5,\n x_max: 121.140625,\n ha: 124,\n o: 'm -16 145 b 0 147 -10 147 -5 147 b 121 -1 66 147 121 77 b 114 -49 121 -16 118 -33 b -1 -148 95 -112 47 -148 b -85 -106 -31 -148 -61 -134 b -122 -1 -110 -76 -122 -38 b -16 145 -122 68 -81 134 m 12 111 b 0 113 8 113 4 113 b -68 22 -29 113 -61 73 b -70 0 -69 15 -70 6 b -13 -113 -70 -49 -47 -98 b -1 -115 -9 -115 -5 -115 b 63 -40 24 -115 53 -83 b 68 -1 66 -27 68 -15 b 12 111 68 48 46 97 ',\n },\n pluckedSnapPizzicatoAbove: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 ',\n },\n pluckedSnapPizzicatoBelow: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 ',\n },\n pluckedLeftHandPizzicato: {\n x_min: 0,\n x_max: 319.859375,\n ha: 326,\n o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ',\n },\n keyboardPedalPed: {\n x_min: -1.359375,\n x_max: 1064.390625,\n ha: 1086,\n o: 'm 296 692 b 314 694 302 694 307 694 b 386 685 337 694 366 689 b 548 498 480 660 548 580 b 548 481 548 492 548 487 b 455 395 541 426 499 395 b 370 462 420 395 383 417 b 362 496 364 477 362 488 b 377 514 362 509 367 514 b 393 501 386 514 390 510 b 432 474 397 484 413 474 b 470 487 445 474 458 478 b 491 530 484 496 491 510 b 490 544 491 534 491 539 b 333 660 479 606 411 657 l 323 662 l 315 646 b 269 524 285 591 269 556 b 321 431 269 492 287 466 b 349 395 338 413 343 408 b 363 342 359 378 363 362 b 359 312 363 333 362 322 b 285 158 348 266 318 206 b 281 152 283 155 281 152 b 281 152 281 152 281 152 b 287 154 283 152 284 152 b 318 155 298 154 308 155 b 461 98 371 155 419 136 l 464 97 l 483 112 b 503 129 494 120 503 127 b 504 130 503 129 504 129 b 503 138 504 131 503 134 b 500 180 500 152 500 166 b 553 326 500 238 518 288 b 604 366 560 331 592 358 b 649 381 617 376 632 381 b 696 362 665 381 681 374 b 724 302 714 347 724 324 b 695 238 724 278 714 255 b 660 210 691 234 662 212 b 579 148 658 209 582 151 b 579 148 579 148 579 148 b 596 106 579 144 589 119 b 622 77 604 88 609 83 b 657 69 632 72 645 69 b 748 112 688 69 721 84 b 755 123 754 117 755 120 b 755 127 755 124 755 126 b 751 165 752 137 751 151 b 758 219 751 183 754 202 b 894 387 774 290 820 347 b 896 390 896 388 896 388 b 891 398 896 391 895 392 b 622 560 827 477 730 535 b 600 580 605 564 600 569 b 617 596 600 591 607 596 b 628 595 622 596 624 596 b 1057 248 846 552 1020 412 b 1064 191 1061 229 1064 209 b 922 0 1064 94 1005 9 b 902 -1 916 -1 909 -1 b 774 76 847 -1 800 26 b 769 83 770 81 770 83 b 769 81 769 83 769 83 b 627 -1 733 29 677 -1 b 548 27 597 -1 570 8 b 515 88 537 37 525 61 l 513 95 l 510 93 l 453 45 b 390 0 396 0 396 0 b 390 0 390 0 390 0 b 374 15 381 0 377 4 b 268 105 359 69 314 105 b 250 104 262 105 257 105 l 243 102 l 234 90 b 155 1 201 49 159 2 b 147 -1 152 0 149 -1 b 130 15 138 -1 130 6 b 132 20 130 18 132 19 b 136 31 133 22 134 27 b 220 131 149 74 178 109 b 231 137 225 134 230 136 b 302 278 280 202 302 244 b 265 335 302 299 295 309 b 209 442 234 363 213 402 b 209 455 209 446 209 451 b 279 648 209 502 232 564 l 285 659 l 283 659 b 176 627 238 653 210 645 b 57 477 111 594 66 538 b 55 459 55 471 55 464 b 72 409 55 437 61 415 b 93 403 78 405 87 403 b 152 467 123 403 151 431 b 168 488 153 483 157 488 b 185 462 181 488 185 483 l 185 460 b 137 344 183 409 168 369 b 78 322 119 328 98 322 b 13 360 50 322 25 335 b -1 426 4 380 -1 402 b 89 610 -1 488 32 559 b 296 692 147 659 210 685 m 926 348 b 921 353 924 351 922 353 b 914 348 920 353 918 351 b 823 167 857 306 823 237 b 828 124 823 154 826 138 b 890 31 837 79 862 40 b 896 31 892 31 894 31 b 956 104 916 31 940 59 b 970 191 965 129 970 159 b 966 241 970 208 969 224 b 926 348 959 277 945 313 m 627 326 b 619 326 624 326 622 326 b 598 316 611 326 604 323 b 568 215 579 288 568 255 b 568 208 568 213 568 210 b 571 183 570 195 570 184 l 571 183 b 594 201 571 183 582 191 l 634 231 b 660 259 653 247 656 248 b 664 278 662 266 664 272 b 627 326 664 299 649 320 ',\n },\n keyboardPedalUp: {\n x_min: -1.359375,\n x_max: 592.078125,\n ha: 604,\n o: 'm 280 692 b 295 694 283 692 289 694 b 310 692 300 694 307 692 b 357 630 340 684 357 657 b 336 580 357 612 351 594 b 311 538 321 566 311 549 b 352 492 311 512 330 492 b 366 495 357 492 362 492 b 397 553 390 503 397 517 b 415 603 397 576 402 591 b 460 623 427 617 443 623 b 509 599 479 623 498 614 b 522 559 518 587 522 573 b 494 506 522 538 513 519 b 451 495 481 498 473 496 b 415 488 432 495 426 494 b 394 449 404 483 394 464 b 394 448 394 448 394 448 l 394 440 l 397 433 b 428 409 404 420 413 413 b 438 408 431 408 435 408 b 479 431 450 408 462 415 b 528 455 495 448 510 455 b 548 452 534 455 541 453 b 592 391 577 442 592 416 b 549 331 592 365 577 340 b 528 327 541 328 534 327 b 479 351 510 327 495 335 b 438 374 464 367 450 374 b 417 369 431 374 424 373 b 394 333 402 360 394 348 b 400 312 394 326 396 319 b 451 287 408 294 420 288 b 513 258 484 285 499 278 b 522 223 519 247 522 234 b 461 159 522 190 496 159 b 449 161 457 159 453 159 b 397 229 416 167 397 191 b 366 288 397 265 390 278 b 352 290 362 290 357 290 b 315 262 336 290 321 280 b 311 245 313 256 311 251 b 334 204 311 233 318 220 b 355 170 348 190 351 184 b 357 152 356 166 357 159 b 355 136 357 147 356 140 b 295 88 345 104 321 88 b 232 152 264 88 232 112 b 255 204 232 174 238 186 b 279 244 273 222 279 231 l 279 245 b 238 290 279 270 259 290 b 224 288 234 290 228 290 b 193 229 200 278 193 265 b 141 161 193 191 174 167 b 129 159 137 159 133 159 b 68 223 93 159 68 190 b 77 258 68 234 70 247 b 138 287 91 278 106 285 b 185 302 166 287 175 291 b 196 333 193 312 196 323 b 174 369 196 347 187 360 b 152 374 166 373 159 374 b 111 351 140 374 126 367 b 62 327 95 335 80 327 b 51 328 58 327 54 327 b -1 391 16 334 -1 363 b 53 455 -1 420 17 449 b 62 455 57 455 59 455 b 111 431 80 455 95 448 b 152 408 127 415 140 408 b 161 409 155 408 159 408 b 193 433 176 413 186 420 l 196 440 l 196 448 b 196 451 196 449 196 449 b 190 471 196 459 194 463 b 137 495 182 489 167 495 l 134 495 l 134 495 b 68 560 95 495 68 521 b 129 623 68 596 95 623 b 144 621 134 623 138 623 b 193 553 175 614 193 589 b 224 495 193 517 200 503 b 238 492 228 492 234 492 b 279 538 259 492 279 512 b 254 580 279 549 269 566 b 232 630 239 594 232 612 b 280 692 232 657 250 684 m 307 456 b 295 458 303 458 299 458 b 230 391 258 458 230 426 b 236 360 230 381 231 371 b 295 324 249 337 272 324 b 353 360 318 324 341 337 b 360 391 357 370 360 381 b 307 456 360 421 340 451 ',\n },\n pictChokeCymbal: {\n x_min: 0,\n x_max: 227.3125,\n ha: 232,\n o: 'm 91 213 b 100 215 93 215 96 215 b 227 58 167 215 224 144 b 227 52 227 56 227 54 b 61 -201 227 -43 164 -138 b 29 -216 44 -212 36 -216 b 23 -210 27 -216 24 -213 b 21 -205 21 -208 21 -206 b 34 -192 21 -201 25 -197 b 122 -55 89 -161 122 -106 b 104 6 122 -33 117 -12 l 103 9 l 96 9 b 4 79 57 9 17 38 b 0 112 1 90 0 101 b 91 213 0 163 36 209 ',\n },\n wiggleArpeggiatoUp: {\n x_min: 58.53125,\n x_max: 228.671875,\n ha: 294,\n o: 'm 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 ',\n },\n arrowheadBlackUp: {\n x_min: -10.890625,\n x_max: 299.4375,\n ha: 294,\n o: 'm 136 460 b 142 462 137 462 140 462 b 166 449 152 462 161 456 b 171 428 168 446 168 445 b 288 131 194 322 238 209 b 298 115 295 120 296 117 b 299 106 298 112 299 109 b 273 81 299 91 287 81 b 255 86 268 81 261 83 b 155 116 225 104 183 116 l 152 116 l 149 108 b 141 83 148 102 144 91 b 134 48 137 69 134 58 b 149 9 134 34 140 24 b 153 -1 152 5 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 147 -11 b 122 2 138 -11 133 -6 b 95 61 104 20 95 38 b 107 108 95 74 99 90 b 108 113 107 111 108 112 b 107 113 108 113 108 113 b 102 113 106 113 104 113 b 31 86 76 108 53 98 b 14 80 24 81 20 80 b -10 106 0 80 -10 91 b 0 131 -10 115 -9 116 b 115 430 49 209 91 317 b 136 460 119 451 123 456 ',\n },\n arrowheadBlackDown: {\n x_min: -10.890625,\n x_max: 298.078125,\n ha: 294,\n o: 'm 138 473 b 142 474 140 473 141 474 b 164 459 148 474 153 470 b 191 402 183 442 191 423 b 181 353 191 388 187 371 b 178 349 179 352 178 349 b 179 348 178 348 179 348 b 185 349 181 348 182 348 b 255 376 210 355 234 363 b 272 381 264 381 266 381 b 298 355 287 381 298 370 b 288 330 298 348 298 345 b 171 34 238 254 194 141 b 166 13 168 16 168 16 b 144 1 161 5 152 1 b 121 15 134 1 125 5 b 115 33 119 18 117 24 b 0 330 91 145 49 252 b -10 355 -9 345 -10 348 b 13 381 -10 371 0 381 b 31 376 19 381 25 380 b 132 345 61 358 103 345 l 136 345 l 137 355 b 145 378 138 359 142 370 b 152 415 149 394 152 405 b 137 452 152 427 148 438 b 133 464 134 458 133 460 b 138 473 133 467 134 470 ',\n },\n vexAccidentalMicrotonal1: {\n x_min: -171.5,\n x_max: 483.1875,\n ha: 493,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 495 20 616 20 616 b 20 373 20 427 20 373 b 115 410 20 373 63 390 l 210 448 l 210 531 b 212 620 210 614 210 616 b 231 632 215 628 223 632 b 246 627 236 632 242 631 b 251 541 251 620 251 628 l 251 463 l 315 489 b 387 514 368 509 381 514 b 393 513 390 514 392 514 b 406 494 402 510 406 502 b 397 476 406 487 404 480 b 323 446 396 474 363 462 l 251 417 l 251 283 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -19 -217 -9 -229 -16 -224 l -20 -215 l -21 48 l -21 310 l -83 287 b -152 262 -133 266 -145 262 b -157 263 -153 262 -155 262 b -171 283 -166 266 -171 274 b -161 301 -171 290 -167 297 b -91 328 -160 302 -129 315 l -21 356 l -21 487 l -20 617 l -19 621 b -8 631 -17 626 -12 630 m 210 288 b 210 401 210 351 210 401 b 114 365 209 401 167 384 l 20 327 l 20 238 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 180 164 199 187 192 l 209 177 b 209 177 209 177 209 177 b 210 288 210 177 210 199 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 ',\n },\n vexAccidentalMicrotonal2: {\n x_min: -1.359375,\n x_max: 386.5625,\n ha: 394,\n o: 'm 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 ',\n },\n vexWiggleArpeggioUp: {\n x_min: 58.53125,\n x_max: 228.671875,\n ha: 294,\n o: 'm 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 ',\n },\n vexNoteHeadMutedBreve: {\n x_min: 0,\n x_max: 370.21875,\n ha: 378,\n o: 'm 0 0 l 0 277 l 61 277 l 122 277 l 122 0 l 122 -278 l 61 -278 l 0 -278 l 0 0 m 246 -1 l 246 277 l 308 277 l 370 277 l 370 -1 l 370 -278 l 308 -278 l 246 -278 l 246 -1 ',\n },\n },\n cssFontWeight: 'normal',\n ascender: 1903,\n underlinePosition: -125,\n cssFontStyle: 'normal',\n boundingBox: {\n yMin: -2065.375,\n xMin: -695.53125,\n yMax: 1901.578125,\n xMax: 1159.671875,\n },\n resolution: 1000,\n original_font_information: {\n postscript_name: 'Gonville-18',\n version_string: 'Version 0.1.8904 ',\n vendor_url: '',\n full_font_name: 'Gonville-18',\n font_family_name: 'Gonville-18',\n copyright: 'No copyright is claimed on this font file.',\n description: '',\n trademark: '',\n designer: '',\n designer_url: '',\n unique_font_identifier: 'FontForge 2.0 : Gonville-18 : 17-3-2010',\n license_url: '',\n license_description: '',\n manufacturer_name: '',\n font_sub_family_name: '18',\n },\n descender: -2066,\n fontFamily: 'Gonville-18',\n lineHeight: 4093,\n underlineThickness: 50,\n};\n","/**\n * The Gonville font was created by Simon Tatham.\n * https://www.chiark.greenend.org.uk/~sgtatham/gonville/\n */\nexport const GonvilleMetrics = {\n name: 'Gonville',\n smufl: false,\n stave: {\n padding: 12,\n endPaddingMax: 10,\n endPaddingMin: 5,\n unalignedNotePadding: 10,\n },\n accidental: {\n noteheadAccidentalPadding: 1,\n leftPadding: 2,\n accidentalSpacing: 3,\n },\n clef: {\n default: {\n point: 40,\n width: 26,\n },\n small: {\n point: 32,\n width: 20,\n },\n annotations: {\n '8va': {\n smuflCode: 'timeSig8',\n default: {\n point: 20,\n treble: {\n line: -1.2,\n shiftX: 11,\n },\n },\n small: {\n point: 18,\n treble: {\n line: -0.4,\n shiftX: 8,\n },\n },\n },\n '8vb': {\n smuflCode: 'timeSig8',\n default: {\n point: 20,\n treble: {\n line: 6.3,\n shiftX: 10,\n },\n bass: {\n line: 4,\n shiftX: 1,\n },\n },\n small: {\n point: 18,\n treble: {\n line: 5.8,\n shiftX: 6,\n },\n bass: {\n line: 3.5,\n shiftX: 0.5,\n },\n },\n },\n },\n // May not need these anymore\n lineCount: {\n '8': { point: 55, shiftY: 14 },\n '7': { point: 47, shiftY: 8 },\n '6': { point: 40, shiftY: 1 },\n '5': { point: 30, shiftY: -6 },\n '4': { point: 23, shiftY: -12 },\n },\n },\n parenthesis: {\n default: {\n point: 39,\n width: 7,\n },\n gracenote: {\n point: (39 * 3) / 5,\n width: 3,\n },\n },\n pedalMarking: {\n up: {\n point: 40,\n },\n down: {\n point: 40,\n },\n },\n // These are for numeric digits, such as in time signatures\n digits: {\n point: 40,\n tupletPoint: 28,\n },\n // articulation: {\n // },\n tremolo: {\n default: {\n point: 25,\n spacing: 4,\n offsetYStemUp: -7,\n offsetYStemDown: 7,\n offsetXStemUp: 9,\n offsetXStemDown: -0.5,\n },\n grace: {\n point: 15,\n spacing: 4,\n offsetYStemUp: -7,\n offsetYStemDown: 7,\n offsetXStemUp: 6.5,\n offsetXStemDown: -0.5,\n },\n },\n staveRepetition: {\n symbolText: {\n offsetX: 12,\n offsetY: 25,\n spacing: 5,\n },\n coda: {\n offsetY: 25,\n },\n segno: {\n offsetY: 0,\n },\n },\n // noteHead: {\n // },\n stem: {\n heightAdjustmentForFlag: -3,\n // These are stem (Y) offsets to the note heads. To shift the\n // noteheads (x-position) themselves, see glyphs.notehead.custom.\n noteHead: {\n noteheadTriangleUpHalf: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpBlack: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpWhole: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadXHalf: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXBlack: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXWhole: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadHalf: {\n offsetYBaseStemUp: -1.5,\n offsetYBaseStemDown: 1.5,\n },\n noteheadBlack: {\n offsetYBaseStemUp: -1.5,\n offsetYBaseStemDown: 1.5,\n },\n noteheadSquareWhite: {\n offsetYBaseStemDown: -5,\n offsetYBaseStemUp: 5,\n },\n },\n },\n glyphs: {\n flag: {\n shiftX: -0.08,\n flag8thDown: {\n shiftX: -0.16,\n },\n flag16thDown: {\n shiftX: -0.16,\n },\n flag32ndDown: {\n shiftX: -0.16,\n shiftY: 9,\n },\n flag64thDown: {\n shiftX: -0.16,\n shiftY: 13,\n },\n flag128thDown: {\n shiftX: -0.16,\n shiftY: 22,\n },\n flag32ndUp: {\n shiftY: -9,\n },\n flag64thUp: {\n shiftY: -13,\n },\n flag128thUp: {\n shiftY: -22,\n },\n },\n stringNumber: {\n verticalPadding: 8,\n stemPadding: 2,\n leftPadding: 5,\n rightPadding: 6,\n },\n textNote: {\n point: 40,\n default: {},\n ornamentTrill: {\n shiftX: -5,\n shiftY: 4,\n },\n },\n noteHead: {\n minPadding: 2,\n custom: {\n noteheadCircleXStemUp: {\n shiftX: -1.5,\n },\n noteheadXWholeStemUp: {\n shiftX: -5,\n },\n noteheadTriangleUpWholeStemUp: {\n shiftX: -6,\n },\n },\n },\n chordSymbol: {\n global: {\n superscriptOffset: -400,\n subscriptOffset: 300,\n kerningOffset: -250,\n lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'],\n upperKerningText: ['A', 'L'],\n spacing: 100,\n superSubRatio: 0.66,\n },\n csymDiminished: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymHalfDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymAugmented: {\n scale: 1,\n leftSideBearing: 0,\n advanceWidth: 530,\n yOffset: 0,\n },\n csymParensLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 155,\n yOffset: 250,\n },\n csymParensRightTall: {\n scale: 0.8,\n leftSideBearing: -40,\n advanceWidth: 189,\n yOffset: 250,\n },\n csymBracketLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 328,\n yOffset: 0,\n },\n csymBracketRightTall: {\n scale: 0.8,\n leftSideBearing: 1,\n advanceWidth: 600,\n yOffset: 0,\n },\n csymParensLeftVeryTall: {\n scale: 0.9,\n leftSideBearing: 0,\n advanceWidth: 121,\n yOffset: 350,\n },\n csymParensRightVeryTall: {\n scale: 0.9,\n leftSideBearing: 50,\n advanceWidth: 111,\n yOffset: 350,\n },\n csymDiagonalArrangementSlash: {\n scale: 0.6,\n leftSideBearing: -1,\n advanceWidth: 990,\n yOffset: 0,\n },\n csymMinor: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 482,\n yOffset: 0,\n },\n csymMajorSeventh: {\n scale: 0.9,\n leftSideBearing: 200,\n yOffset: 0,\n advanceWidth: 600,\n },\n accidentalSharp: {\n scale: 0.75,\n leftSideBearing: 40,\n advanceWidth: 250,\n yOffset: -402,\n },\n accidentalFlat: {\n scale: 0.95,\n leftSideBearing: -50,\n advanceWidth: 208,\n yOffset: -184,\n },\n },\n jazzOrnaments: {\n brassScoop: {\n scale: 1.0,\n xOffset: -12,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassDoitMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 22,\n },\n brassFallLipShort: {\n scale: 1.0,\n xOffset: 17,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassLiftMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 5,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassFallRoughMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 28,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassBend: {\n scale: 1.0,\n xOffset: 2,\n yOffset: -8,\n stemUpYOffset: 24,\n reportedWidth: 5,\n },\n brassMuteClosed: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -9,\n stemUpYOffset: 24,\n reportedWidth: 5,\n },\n brassMuteOpen: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -7,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassFlip: {\n scale: 1.0,\n xOffset: 10,\n yOffset: -4,\n stemUpYOffset: 7,\n reportedWidth: 5,\n },\n brassJazzTurn: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -4,\n stemUpYOffset: 10,\n reportedWidth: 28,\n },\n brassSmear: {\n scale: 1.0,\n xOffset: 10,\n yOffset: -4,\n stemUpYOffset: 9,\n reportedWidth: 5,\n },\n },\n tremolo: {\n default: {\n shiftY: -10,\n },\n grace: {\n shiftY: -5,\n },\n },\n tuplet: {\n noteHeadOffset: 20,\n stemOffset: 10,\n bottomLine: 4,\n topModifierOffset: 15,\n },\n },\n};\n","export const LelandFont = {\n glyphs: {\n bracketTop: {\n x_min: 0,\n x_max: 491,\n y_min: 0,\n y_max: 279,\n ha: 279,\n o: 'm 697 399 b 687 402 694 400 690 402 b 671 395 681 402 674 400 b 249 168 668 390 524 168 l 20 168 b 0 150 9 168 0 161 l 0 20 l 0 0 l 176 0 b 706 374 619 0 704 370 b 707 382 706 376 707 379 b 697 399 707 389 703 395 z',\n },\n bracketBottom: {\n x_min: 0,\n x_max: 491,\n y_min: -279,\n y_max: 0,\n ha: 279,\n o: 'm 697 -399 b 707 -382 703 -395 707 -389 b 706 -374 707 -379 706 -376 b 176 0 704 -370 619 0 l 0 0 l 0 -20 l 0 -150 b 20 -168 0 -161 9 -168 l 249 -168 b 671 -395 524 -168 668 -390 b 687 -402 674 -400 681 -402 b 697 -399 690 -402 694 -400 z',\n },\n segno: {\n x_min: 0,\n x_max: 654,\n y_min: 0,\n y_max: 869,\n ha: 869,\n o: 'm 546 690 l 838 1207 b 841 1215 840 1210 841 1212 b 832 1233 841 1221 837 1230 l 809 1248 b 798 1251 806 1250 801 1251 b 780 1241 792 1251 783 1247 l 487 721 l 217 860 b 99 995 147 897 99 924 b 236 1165 99 1120 179 1165 b 343 1073 288 1165 325 1130 b 454 988 357 1022 405 988 b 477 991 461 988 469 989 b 541 1076 526 1002 541 1045 b 540 1089 541 1080 541 1084 b 294 1225 534 1116 514 1225 b 0 939 72 1225 0 1053 b 125 706 0 825 42 753 l 397 563 l 104 45 b 102 35 102 42 102 37 b 111 19 102 29 107 22 l 132 3 b 144 0 135 1 141 0 b 148 0 145 0 147 0 b 161 10 153 1 158 6 l 456 531 l 704 403 b 842 256 780 361 842 318 b 706 86 842 131 763 86 b 599 177 654 86 616 120 b 488 262 585 228 537 262 b 465 259 481 262 472 261 b 402 177 418 248 402 206 b 403 163 402 171 402 167 b 649 26 409 135 429 26 b 942 312 871 26 942 199 b 821 549 942 426 901 507 z m 52 444 b 118 416 69 426 95 416 b 183 444 141 416 166 426 b 210 508 200 461 210 485 b 183 573 210 531 200 556 b 118 600 166 590 141 600 b 52 573 95 600 69 590 b 24 508 35 556 24 531 b 52 444 24 485 35 461 z m 760 730 b 825 703 778 713 802 703 b 890 730 848 703 873 713 b 917 795 907 747 917 772 b 890 861 917 818 907 844 b 825 888 873 878 848 888 b 760 861 802 888 778 878 b 733 795 743 844 733 818 b 760 730 733 772 743 747 z',\n },\n coda: {\n x_min: 0,\n x_max: 745,\n y_min: -113,\n y_max: 735,\n ha: 848,\n o: 'm 924 467 b 560 896 916 697 757 881 l 560 1038 b 540 1058 560 1050 552 1058 l 524 1058 b 505 1038 513 1058 505 1050 l 505 896 b 150 467 311 877 158 693 l 20 467 b 0 446 9 467 0 458 l 0 432 b 20 412 0 420 9 412 l 150 412 b 505 0 166 193 317 17 l 505 -143 b 524 -163 505 -154 513 -163 l 540 -163 b 560 -143 552 -163 560 -154 l 560 0 b 923 412 753 13 907 190 l 1054 412 b 1073 432 1066 412 1073 420 l 1073 446 b 1054 467 1073 458 1066 467 z m 560 467 l 560 852 b 773 467 716 837 773 671 z m 505 467 l 301 467 b 505 851 301 668 357 831 z m 505 412 l 505 45 b 301 412 366 65 301 219 z m 560 412 l 772 412 b 560 45 772 215 706 60 z',\n },\n gClef: {\n x_min: 0,\n x_max: 640,\n y_min: -666,\n y_max: 1112,\n ha: 1778,\n o: 'm 809 -30 b 665 -279 809 -132 768 -238 b 586 186 635 -107 596 122 b 809 -30 716 186 809 98 z m 605 -297 b 521 -305 576 -302 549 -305 b 140 56 315 -305 140 -161 b 390 498 140 232 264 389 b 459 562 415 520 438 540 b 492 357 472 484 482 416 b 272 45 361 318 272 180 b 467 -194 272 -56 351 -194 b 491 -176 478 -194 491 -189 b 459 -144 491 -163 477 -156 b 372 -1 403 -109 372 -72 b 521 177 372 86 436 157 z m 478 1184 b 632 1392 491 1241 557 1392 b 688 1223 654 1392 688 1322 b 478 863 688 1073 577 960 b 462 1037 469 920 462 976 b 478 1184 462 1090 467 1139 z m 176 -739 b 444 -959 176 -834 249 -959 b 622 -910 511 -959 570 -942 b 720 -670 700 -855 720 -760 b 697 -467 720 -613 711 -549 b 675 -338 693 -438 684 -395 b 922 3 816 -292 922 -145 b 557 367 922 220 768 367 b 516 619 543 454 528 539 b 773 1188 668 779 773 959 b 710 1477 773 1319 733 1426 b 608 1601 675 1551 634 1601 b 505 1528 598 1601 553 1584 b 387 1113 413 1418 387 1234 b 419 804 387 1035 395 965 b 312 701 418 802 343 726 b 0 117 181 579 0 405 b 503 -364 0 -153 235 -364 b 616 -354 544 -364 583 -360 b 660 -670 644 -492 660 -593 b 438 -899 660 -819 583 -899 b 370 -891 403 -899 373 -891 b 366 -887 369 -890 366 -888 b 373 -881 366 -884 369 -883 b 508 -721 441 -871 508 -814 b 341 -562 508 -644 449 -562 b 176 -739 240 -562 176 -644 z',\n },\n cClef: {\n x_min: 0,\n x_max: 627,\n y_min: -480,\n y_max: 482,\n ha: 962,\n o: 'm 19 675 b 0 657 9 675 0 667 l 0 -654 b 19 -672 0 -664 9 -672 l 122 -672 b 141 -654 132 -672 141 -664 l 141 657 b 122 675 141 667 132 675 z m 903 -376 b 619 -58 903 -197 808 -58 b 505 -95 586 -58 562 -60 b 426 1 503 -89 474 -32 b 505 98 474 35 503 92 b 641 60 560 65 579 60 b 903 379 816 60 903 223 b 580 694 903 580 755 694 b 318 517 472 694 318 649 b 438 400 318 446 367 400 b 546 510 501 400 546 446 b 425 615 546 589 494 615 b 547 651 458 638 503 651 b 723 400 698 651 723 530 b 593 128 723 289 720 128 b 438 279 467 128 441 265 b 418 300 438 281 438 300 b 396 279 397 300 396 281 b 264 29 383 200 344 62 l 264 657 b 246 675 264 667 256 675 b 228 657 236 675 228 667 l 228 -654 b 246 -672 228 -664 236 -672 b 264 -654 256 -672 264 -664 l 264 -26 b 396 -278 348 -60 380 -197 b 418 -297 396 -279 397 -297 b 438 -278 438 -297 438 -279 b 593 -125 441 -262 467 -125 b 723 -397 720 -125 723 -287 b 547 -648 723 -527 698 -648 b 425 -612 503 -648 458 -635 b 441 -613 426 -612 432 -613 b 546 -507 504 -613 546 -569 b 438 -397 546 -444 501 -397 b 318 -514 367 -397 318 -444 b 580 -691 318 -647 472 -691 b 903 -376 755 -691 903 -577 z',\n },\n fClef: {\n x_min: 0,\n x_max: 664,\n y_min: -617,\n y_max: 251,\n ha: 868,\n o: 'm 366 361 b 167 298 256 361 168 298 b 37 112 84 236 50 163 b 27 36 30 86 27 60 b 46 -58 27 1 33 -30 b 140 -138 63 -96 96 -124 b 194 -147 157 -144 176 -147 b 287 -122 226 -147 259 -138 b 359 10 331 -98 359 -46 b 289 134 359 60 333 107 b 206 160 259 154 230 160 b 160 153 189 160 173 157 b 109 122 145 147 121 132 b 147 215 114 150 131 192 b 219 279 163 238 194 266 b 351 308 255 300 301 308 b 570 -52 498 308 570 190 b 477 -399 570 -186 520 -314 b 310 -635 429 -494 366 -585 b 17 -837 160 -772 19 -837 b 0 -864 17 -837 0 -847 b 1 -871 0 -867 1 -868 b 27 -888 6 -886 19 -888 b 35 -887 29 -888 33 -887 b 331 -717 36 -887 200 -819 b 528 -544 405 -664 471 -606 b 661 -367 580 -488 625 -428 b 760 -50 724 -259 760 -147 b 670 239 760 69 729 168 b 366 361 602 320 500 361 z m 818 179 b 887 107 818 138 850 107 b 956 179 924 107 956 138 b 887 252 956 219 924 252 b 818 179 850 252 818 219 z m 818 -177 b 887 -251 818 -217 850 -251 b 956 -177 924 -251 956 -217 b 887 -104 956 -137 924 -104 b 818 -177 850 -104 818 -137 z',\n },\n unpitchedPercussionClef1: {\n x_min: 0,\n x_max: 352,\n y_min: -252,\n y_max: 252,\n ha: 504,\n o: 'm 19 363 b 0 344 9 363 0 354 l 0 -344 b 19 -363 0 -354 9 -363 l 177 -363 b 196 -344 187 -363 196 -354 l 196 344 b 177 363 196 354 187 363 z m 330 363 b 311 344 320 363 311 354 l 311 -344 b 330 -363 311 -354 320 -363 l 488 -363 b 507 -344 498 -363 507 -354 l 507 344 b 488 363 507 354 498 363 z',\n },\n '6stringTabClef': {\n x_min: 0,\n x_max: 439,\n y_min: -743,\n y_max: 746,\n ha: 1489,\n o: 'm 52 1074 l 52 958 l 249 958 l 249 419 l 387 419 l 387 958 l 583 958 l 583 1074 z m 0 -333 l 145 -333 l 192 -196 l 436 -196 l 481 -333 l 632 -333 l 396 334 l 238 334 z m 315 181 l 400 -81 l 229 -81 z m 566 -474 b 393 -402 531 -428 475 -403 l 71 -402 l 71 -1070 l 372 -1070 b 374 -1070 373 -1070 373 -1070 b 465 -1061 405 -1070 435 -1067 b 541 -1027 494 -1056 520 -1043 b 588 -975 560 -1012 575 -995 b 618 -868 608 -943 618 -907 b 592 -770 618 -829 609 -798 b 514 -711 575 -743 549 -724 b 566 -674 537 -700 554 -688 b 596 -576 586 -649 596 -616 b 566 -474 596 -536 586 -503 z m 348 -518 b 428 -528 380 -518 408 -521 b 464 -590 452 -539 464 -559 b 436 -649 464 -619 455 -638 b 366 -665 418 -661 395 -665 l 203 -665 l 203 -518 z m 367 -776 b 435 -788 396 -776 419 -780 b 477 -858 464 -801 477 -824 b 433 -942 477 -900 462 -927 b 366 -953 418 -949 395 -953 l 203 -953 l 203 -776 z',\n },\n timeSig0: {\n x_min: 15,\n x_max: 389,\n y_min: -254,\n y_max: 255,\n ha: 509,\n o: 'm 291 367 b 22 0 138 367 22 209 b 291 -366 22 -209 138 -366 b 560 0 444 -366 560 -209 b 291 367 560 209 444 367 z m 376 -200 b 291 -308 376 -252 353 -308 b 206 -200 229 -308 206 -252 l 206 200 b 291 308 206 252 229 308 b 376 200 353 308 376 252 z',\n },\n timeSig1: {\n x_min: 15,\n x_max: 336,\n y_min: -243,\n y_max: 245,\n ha: 488,\n o: 'm 359 -284 l 359 336 b 341 353 359 346 351 353 l 199 353 b 190 350 196 353 193 351 b 184 344 189 348 186 346 l 23 65 b 22 56 22 62 22 59 b 30 42 22 50 26 45 l 58 26 b 66 23 60 24 63 23 b 81 32 72 23 78 27 l 183 207 l 183 -284 l 73 -284 b 56 -301 63 -284 56 -291 l 56 -333 b 73 -350 56 -343 63 -350 l 468 -350 b 484 -333 478 -350 484 -343 l 484 -301 b 468 -284 484 -291 478 -284 z',\n },\n timeSig2: {\n x_min: 15,\n x_max: 377,\n y_min: -243,\n y_max: 245,\n ha: 488,\n o: 'm 492 -56 b 382 -192 481 -88 452 -192 b 190 -134 288 -192 268 -134 b 153 -138 179 -134 167 -135 b 341 -36 153 -138 189 -84 b 533 173 494 12 533 86 b 288 353 533 233 505 353 b 30 156 71 353 30 222 b 138 49 30 96 79 49 b 245 156 197 49 245 96 b 179 255 245 196 216 240 b 168 271 174 256 168 264 b 202 297 168 279 176 289 b 251 304 209 300 229 304 b 311 288 271 304 294 300 b 348 180 338 271 348 245 b 65 -150 348 12 148 -24 b 22 -278 65 -150 22 -210 b 73 -350 22 -346 56 -350 b 121 -305 96 -350 121 -331 b 117 -287 121 -300 120 -294 b 105 -239 108 -266 105 -251 b 107 -226 105 -235 105 -230 b 154 -203 108 -217 120 -203 b 238 -289 196 -203 212 -252 b 350 -350 264 -327 304 -350 b 484 -264 396 -350 458 -317 b 543 -63 510 -210 543 -102 b 518 -36 543 -45 531 -36 b 492 -56 508 -36 498 -42 z',\n },\n timeSig3: {\n x_min: 14.984905204685425,\n x_max: 364,\n y_min: -244,\n y_max: 244,\n ha: 488,\n o: 'm 392 23 b 514 168 507 68 514 143 b 514 176 514 171 514 174 b 262 351 514 189 510 351 b 22 176 14 351 22 176 l 23 176 l 22 173 b 115 81 22 121 63 81 b 207 173 167 81 207 121 b 135 264 207 215 176 255 b 140 268 137 265 138 266 b 215 289 160 282 187 289 b 340 176 275 289 340 253 b 255 69 340 85 272 72 b 140 60 238 66 157 60 b 121 40 122 60 121 40 l 121 12 b 140 -6 121 12 124 -4 b 243 -14 164 -7 197 -7 b 340 -167 307 -23 340 -66 b 215 -289 340 -264 275 -289 b 121 -266 174 -289 137 -278 b 207 -174 168 -264 207 -222 b 115 -81 207 -122 167 -81 b 22 -174 63 -81 22 -122 b 22 -180 22 -174 22 -177 b 78 -298 22 -199 26 -251 b 236 -351 134 -350 204 -351 b 524 -147 374 -351 524 -304 b 389 23 524 -42 452 3 z',\n },\n timeSig4: {\n x_min: 14,\n x_max: 442,\n y_min: -248,\n y_max: 249,\n ha: 497,\n o: 'm 300 -183 l 300 -289 l 180 -289 b 160 -310 170 -289 160 -298 l 160 -337 b 180 -357 160 -348 170 -357 l 616 -357 b 636 -337 628 -357 636 -348 l 636 -310 b 616 -289 636 -298 628 -289 l 487 -289 l 487 -183 l 616 -183 b 636 -161 628 -183 636 -173 l 636 -134 b 616 -114 636 -124 628 -114 l 487 -114 l 487 115 b 477 134 487 124 482 131 l 459 143 b 452 144 456 144 455 144 b 449 144 451 144 451 144 b 436 140 445 144 439 143 l 305 20 b 300 4 301 16 300 10 l 300 -114 l 132 -114 b 464 287 132 -114 294 59 b 471 307 469 294 471 301 b 467 321 471 314 468 320 l 435 353 b 420 359 431 356 426 359 b 206 359 412 359 217 359 b 187 341 196 359 189 350 b 143 118 187 341 180 235 b 24 -124 105 1 62 -71 b 20 -140 24 -124 20 -131 b 22 -148 20 -143 20 -145 b 36 -174 26 -158 36 -174 b 52 -183 36 -174 39 -183 z',\n },\n timeSig5: {\n x_min: 15,\n x_max: 362,\n y_min: -244,\n y_max: 246,\n ha: 490,\n o: 'm 39 314 b 46 170 39 314 46 245 b 46 151 46 164 46 157 b 39 -24 45 71 39 -24 b 39 -29 39 -24 39 -26 b 49 -48 39 -35 40 -46 b 99 -59 62 -50 92 -58 b 107 -59 102 -59 104 -59 b 121 -49 112 -59 118 -58 b 235 45 128 -30 144 45 b 356 -112 337 45 356 -43 b 238 -292 356 -184 333 -288 b 226 -292 233 -292 230 -292 b 166 -282 193 -292 174 -288 b 158 -274 161 -281 158 -276 b 164 -264 158 -269 160 -266 b 222 -168 177 -255 222 -239 b 117 -71 222 -98 173 -71 b 22 -171 60 -71 22 -122 b 111 -318 22 -220 36 -275 b 252 -351 147 -338 199 -351 b 456 -275 325 -351 405 -328 b 521 -109 503 -228 521 -167 b 433 79 521 -32 487 43 b 271 124 397 104 336 124 b 131 84 223 124 173 112 b 125 82 130 82 127 82 b 115 92 120 82 115 86 l 115 183 b 131 199 115 192 122 199 l 132 199 b 252 192 154 197 202 192 b 372 209 295 192 340 196 b 474 320 439 236 462 289 b 477 334 475 324 477 330 b 451 354 477 346 469 354 b 431 351 445 354 439 353 b 252 328 360 334 305 328 b 88 343 200 328 150 334 b 71 344 88 343 81 344 b 39 320 56 344 39 340 b 39 314 39 317 39 315 z',\n },\n timeSig6: {\n x_min: 15,\n x_max: 387,\n y_min: -244,\n y_max: 245,\n ha: 489,\n o: 'm 356 69 b 216 22 268 69 236 43 b 209 98 212 52 209 75 b 216 167 209 121 212 141 b 338 287 225 220 261 287 b 410 259 374 287 396 275 b 356 174 380 246 356 207 b 448 82 356 122 396 82 b 541 174 500 82 541 122 l 541 177 b 541 179 541 177 541 177 b 533 225 541 192 539 213 b 310 353 514 276 454 353 b 58 163 180 353 86 229 b 22 -23 43 128 22 58 b 131 -285 22 -111 46 -210 b 318 -351 215 -348 268 -351 b 557 -125 369 -351 557 -292 b 356 69 557 16 446 69 z m 302 -291 b 216 -145 255 -291 216 -226 b 302 1 216 -65 255 1 b 390 -145 350 1 390 -65 b 302 -291 390 -226 350 -291 z',\n },\n timeSig7: {\n x_min: 15,\n x_max: 366,\n y_min: -250,\n y_max: 251,\n ha: 501,\n o: 'm 233 -177 b 160 -336 202 -225 160 -282 b 180 -360 160 -351 164 -360 b 264 -351 203 -360 217 -354 b 278 -350 268 -351 274 -350 b 369 -360 320 -350 359 -360 b 405 -331 382 -360 406 -344 b 405 -327 405 -330 405 -328 b 396 -226 405 -324 396 -279 b 408 -130 396 -196 399 -161 b 503 151 425 -62 471 60 b 527 308 518 196 527 275 b 526 341 527 321 527 327 b 510 361 524 356 518 361 b 484 361 503 361 491 361 b 467 341 477 361 467 356 b 406 228 467 327 464 228 b 235 351 346 228 328 351 b 86 252 145 351 91 261 l 86 321 b 71 337 86 330 79 337 l 37 337 b 22 321 29 337 22 330 l 22 55 b 37 39 22 46 29 39 l 71 39 b 86 55 79 39 86 46 l 86 101 b 158 179 86 134 108 179 b 328 124 209 179 213 124 b 425 143 357 124 410 128 b 233 -177 413 120 266 -130 z',\n },\n timeSig8: {\n x_min: 15,\n x_max: 393,\n y_min: -248,\n y_max: 246,\n ha: 494,\n o: 'm 467 26 b 547 166 514 62 547 108 b 294 354 547 269 433 354 b 40 166 154 354 40 269 b 122 13 40 108 55 56 b 22 -147 58 -24 22 -78 b 294 -357 22 -264 144 -357 b 566 -147 444 -357 566 -264 b 467 26 566 -78 541 -13 z m 294 -276 b 122 -145 202 -276 122 -226 b 197 -26 122 -49 197 -26 b 435 -187 295 -59 435 -108 b 294 -276 435 -226 384 -276 z m 386 65 b 180 209 288 96 180 144 b 294 288 180 265 232 288 b 444 180 383 288 444 246 b 386 65 444 111 412 78 z',\n },\n timeSig9: {\n x_min: 15,\n x_max: 387,\n y_min: -244,\n y_max: 245,\n ha: 489,\n o: 'm 223 -68 b 363 -20 311 -68 343 -42 b 370 -96 367 -50 370 -73 b 363 -166 370 -120 367 -140 b 240 -285 354 -219 318 -285 b 168 -258 204 -285 183 -274 b 223 -173 199 -245 223 -206 b 131 -81 223 -121 183 -81 b 37 -173 79 -81 37 -121 l 37 -176 b 37 -177 37 -176 37 -176 b 46 -223 37 -190 40 -212 b 269 -351 65 -275 125 -351 b 521 -161 399 -351 492 -228 b 557 24 536 -127 557 -56 b 448 287 557 112 533 212 b 261 353 364 350 311 353 b 22 127 210 353 22 294 b 223 -68 22 -14 132 -68 z m 276 294 b 363 147 324 294 363 228 b 276 1 363 66 324 1 b 189 147 229 1 189 66 b 276 294 189 228 229 294 z',\n },\n timeSigCommon: {\n x_min: 0,\n x_max: 463,\n y_min: -256,\n y_max: 258,\n ha: 514,\n o: 'm 468 258 b 406 147 432 235 406 193 b 408 130 406 141 406 135 b 521 17 415 71 462 24 b 537 17 526 17 533 17 b 667 147 609 17 667 75 b 667 156 667 147 667 151 b 664 177 667 161 665 171 b 350 372 651 239 595 372 b 0 17 36 372 0 111 b 382 -369 0 -154 22 -369 b 641 -131 524 -369 635 -285 b 629 -120 641 -124 636 -120 l 611 -120 b 599 -131 605 -120 599 -125 b 382 -323 593 -251 508 -323 b 196 -128 256 -323 196 -255 l 196 147 b 356 320 196 228 228 320 b 469 271 423 320 454 295 b 471 264 471 268 471 266 b 468 258 471 262 471 259 z',\n },\n timeSigCutCommon: {\n x_min: 0,\n x_max: 463,\n y_min: -376,\n y_max: 388,\n ha: 764,\n o: 'm 611 -120 b 599 -131 605 -120 599 -125 b 382 -323 593 -251 508 -323 b 369 -323 377 -323 373 -323 l 369 320 b 469 269 428 317 455 292 b 471 264 471 266 471 265 b 468 258 471 261 471 259 b 406 147 432 235 406 193 b 408 130 406 141 406 135 b 523 17 415 71 464 24 b 537 17 527 17 533 17 b 667 147 609 17 667 75 b 667 156 667 147 667 151 b 664 177 667 161 665 171 b 369 370 651 236 598 364 l 369 543 b 353 559 369 552 361 559 l 314 559 b 298 543 305 559 298 552 l 298 369 b 0 17 32 341 0 105 b 298 -364 0 -140 17 -334 l 298 -526 b 314 -541 298 -534 305 -541 l 353 -541 b 369 -526 361 -541 369 -534 l 369 -369 b 382 -369 373 -369 377 -369 b 641 -131 524 -369 635 -285 b 629 -120 641 -124 636 -120 z m 196 147 b 298 312 196 215 216 289 l 298 -310 b 196 -128 229 -285 196 -223 z',\n },\n timeSigPlus: {\n x_min: 0,\n x_max: 408,\n y_min: -204,\n y_max: 204,\n ha: 408,\n o: 'm 327 33 l 327 275 b 308 294 327 285 318 294 l 279 294 b 261 275 269 294 261 285 l 261 33 l 19 33 b 0 14 9 33 0 24 l 0 -13 b 19 -33 0 -23 9 -33 l 261 -33 l 261 -274 b 279 -294 261 -284 269 -294 l 308 -294 b 327 -274 318 -294 327 -284 l 327 -33 l 567 -33 b 588 -13 577 -33 588 -23 l 588 14 b 567 33 588 24 577 33 z',\n },\n noteheadDoubleWhole: {\n x_min: 0,\n x_max: 538,\n y_min: -178,\n y_max: 179,\n ha: 357,\n o: 'm 33 258 b 20 258 27 258 26 258 b 0 238 9 258 0 249 b 0 -236 0 226 0 -226 b 20 -256 0 -246 9 -256 b 33 -256 26 -256 27 -256 b 53 -236 43 -256 53 -245 b 53 238 53 -228 53 226 b 33 258 53 249 45 258 z m 649 258 b 636 258 644 258 642 258 b 616 238 625 258 616 249 b 616 125 616 235 616 187 b 389 196 573 167 500 196 b 160 125 276 196 203 167 b 160 238 160 187 160 235 b 140 258 160 249 151 258 b 127 258 134 258 132 258 b 107 238 115 258 107 249 b 107 -236 107 226 107 -226 b 127 -256 107 -246 115 -256 b 140 -256 132 -256 134 -256 b 160 -236 150 -256 160 -245 b 160 -122 160 -233 160 -186 b 389 -194 203 -166 276 -194 b 616 -122 500 -194 573 -166 b 616 -236 616 -186 616 -233 b 636 -256 616 -246 625 -256 b 649 -256 642 -256 644 -256 b 670 -236 660 -256 670 -245 b 670 238 670 -228 670 226 b 649 258 670 249 661 258 z m 462 -140 b 400 -148 445 -144 422 -148 b 314 -101 360 -148 333 -135 b 268 68 295 -65 269 29 b 268 76 268 71 268 73 b 314 141 268 109 282 130 b 377 150 331 145 354 150 b 462 102 416 150 442 140 b 510 -66 482 63 510 -29 b 462 -140 510 -104 497 -128 z m 755 258 b 742 258 749 258 747 258 b 721 238 730 258 721 249 b 721 -236 721 226 721 -226 b 742 -256 721 -246 730 -256 b 755 -256 747 -256 749 -256 b 775 -236 765 -256 775 -245 b 775 238 775 -228 775 226 b 755 258 775 249 766 258 z',\n },\n noteheadWhole: {\n x_min: 0,\n x_max: 373,\n y_min: -134,\n y_max: 136,\n ha: 270,\n o: 'm 269 196 b 0 1 71 196 0 95 b 269 -193 0 -92 71 -193 b 537 1 468 -193 537 -92 b 269 196 537 95 468 196 z m 343 -138 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 148 68 176 -63 150 29 b 194 141 145 107 160 130 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 389 -65 363 63 389 -29 b 343 -138 389 -102 377 -128 z',\n },\n noteheadHalf: {\n x_min: 0,\n x_max: 325,\n y_min: -133,\n y_max: 132,\n ha: 265,\n o: 'm 307 190 b 0 -60 167 190 0 73 b 161 -192 0 -122 45 -192 b 468 58 311 -192 468 -69 b 307 190 468 143 396 190 z m 268 -63 b 108 -124 264 -66 158 -124 b 50 -72 60 -124 50 -85 b 200 62 50 -12 194 59 b 360 122 206 65 308 122 b 418 71 395 122 418 102 b 268 -63 418 9 272 -60 z',\n },\n noteheadBlack: {\n x_min: 0,\n x_max: 325,\n y_min: -133,\n y_max: 132,\n ha: 265,\n o: 'm 0 -60 b 161 -192 0 -122 45 -192 b 468 58 311 -192 468 -69 b 307 190 468 143 396 190 b 0 -60 167 190 0 72 z',\n },\n noteheadXBlack: {\n x_min: 0,\n x_max: 325,\n y_min: -132,\n y_max: 132,\n ha: 264,\n o: 'm 461 138 b 468 153 465 141 468 147 l 468 154 b 462 167 468 160 465 164 l 445 184 b 431 190 441 187 436 190 b 418 186 426 190 420 189 l 235 40 l 50 186 b 37 190 48 189 42 190 b 24 184 32 190 29 187 l 6 167 b 0 153 3 164 0 158 b 7 138 0 147 3 141 l 183 0 l 7 -138 b 0 -153 3 -141 0 -147 b 6 -166 0 -157 3 -163 l 23 -184 b 37 -190 26 -189 32 -190 b 50 -186 42 -190 48 -189 l 235 -40 l 418 -186 b 431 -190 420 -189 426 -190 b 445 -184 436 -190 442 -189 l 462 -166 b 468 -153 465 -163 468 -157 b 461 -138 468 -147 465 -141 l 285 0 z',\n },\n noteheadCircleX: {\n x_min: 0,\n x_max: 325,\n y_min: -162,\n y_max: 163,\n ha: 325,\n o: 'm 265 0 l 395 105 b 426 0 415 75 426 39 b 387 -115 426 -43 412 -84 z m 233 -27 l 360 -145 b 235 -192 327 -174 282 -192 b 99 -137 183 -192 134 -171 z m 202 1 l 73 -105 b 42 0 53 -75 42 -39 b 81 115 42 43 56 84 z m 235 29 l 108 145 b 233 193 141 174 186 193 b 369 138 285 193 334 173 z m 233 235 b 0 0 104 235 0 130 b 233 -233 0 -130 104 -233 b 468 0 363 -233 468 -130 b 233 235 468 130 363 235 z',\n },\n noteheadDoubleWholeSquare: {\n x_min: 0,\n x_max: 432,\n y_min: -179,\n y_max: 177,\n ha: 356,\n o: 'm 590 255 b 570 235 579 255 570 246 l 570 203 l 53 203 l 53 235 b 33 255 53 246 45 255 l 20 255 b 0 235 9 255 0 246 l 0 -230 b 20 -251 0 -242 9 -251 l 33 -251 b 53 -230 45 -251 53 -242 l 53 -200 l 570 -200 l 570 -238 b 590 -258 570 -249 579 -258 l 603 -258 b 622 -238 615 -258 622 -249 l 622 235 b 603 255 622 246 615 255 z m 570 -101 l 53 -101 l 53 105 l 570 105 z',\n },\n noteheadSquareWhite: {\n x_min: 0,\n x_max: 310,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 395 128 l 395 -128 l 52 -128 l 52 128 z m 446 180 l 0 180 l 0 -180 l 446 -180 z',\n },\n noteheadSquareBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 446 180 l 0 180 l 0 -180 l 446 -180 z',\n },\n noteheadTriangleUpBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -136,\n y_max: 122,\n ha: 258,\n o: 'm 223 176 l 0 -196 l 446 -196 z',\n },\n noteheadSlashedDoubleWhole1: {\n x_min: -66,\n x_max: 456,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 652 298 b 638 305 649 304 644 305 b 626 301 634 305 629 304 l 560 248 b 543 256 557 253 550 256 b 530 256 537 256 536 256 b 510 236 518 256 510 248 b 510 204 510 235 510 223 l 455 161 b 281 194 413 181 356 194 b 53 124 168 194 96 166 b 53 236 53 186 53 233 b 29 256 53 253 42 256 b 20 256 26 256 23 256 b 0 236 9 256 0 248 b 0 -204 0 228 0 -98 l -88 -272 b -95 -288 -92 -276 -95 -282 b -91 -300 -95 -291 -94 -295 b -76 -307 -86 -304 -82 -307 b -65 -302 -72 -307 -68 -305 l 3 -248 b 20 -258 6 -253 12 -258 b 53 -238 33 -258 52 -255 b 53 -206 53 -236 53 -225 l 107 -161 b 281 -196 148 -183 206 -196 b 510 -124 393 -196 465 -166 b 510 -238 510 -187 510 -235 b 530 -258 510 -248 518 -258 b 563 -238 543 -258 563 -255 b 563 204 563 -229 563 98 l 649 272 b 657 288 655 276 657 282 b 652 298 657 291 655 295 z m 160 75 b 269 148 160 138 219 148 b 356 101 310 148 334 140 b 363 85 357 96 360 91 l 189 -56 b 160 66 174 -14 161 40 b 160 75 160 69 160 72 z m 53 -163 b 53 -124 53 -151 53 -138 b 76 -144 60 -131 68 -138 z m 402 -68 b 292 -148 402 -138 351 -148 b 207 -101 252 -150 226 -137 b 199 -84 204 -96 202 -91 l 373 56 b 402 -68 389 13 402 -40 z m 510 124 b 485 144 503 131 494 137 l 510 163 b 510 124 510 151 510 137 z',\n },\n noteheadSlashedWhole1: {\n x_min: -75,\n x_max: 448,\n y_min: -211,\n y_max: 214,\n ha: 425,\n o: 'm 641 301 b 625 308 636 305 631 308 b 613 304 621 307 618 307 l 439 160 b 269 196 399 181 343 196 b 0 1 71 196 0 95 b 69 -138 0 -49 20 -101 l -101 -271 b -108 -287 -105 -275 -108 -281 b -104 -298 -107 -291 -107 -294 b -88 -304 -99 -302 -94 -304 b -76 -301 -85 -304 -81 -304 l 98 -157 b 269 -193 138 -179 194 -193 b 537 1 468 -193 537 -92 b 468 141 537 52 517 104 l 638 274 b 645 289 642 278 645 284 b 641 301 644 292 644 297 z m 148 68 b 148 78 148 72 148 75 b 194 141 148 111 163 131 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 350 86 346 98 348 92 l 177 -55 b 148 68 163 -12 150 42 z m 389 -65 b 343 -138 389 -102 377 -128 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 187 -82 192 -95 190 -89 l 279 -6 l 361 58 b 389 -65 376 16 389 -39 z',\n },\n noteheadSlashedHalf1: {\n x_min: -98,\n x_max: 424,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 606 298 b 592 305 602 302 598 305 b 580 301 588 305 583 304 l 412 163 b 307 190 383 180 347 190 b 153 148 258 190 204 176 b 0 -60 58 98 0 13 b 14 -120 0 -81 4 -101 b 32 -143 20 -128 26 -135 l -134 -274 b -141 -288 -138 -276 -141 -282 b -137 -300 -141 -292 -140 -297 b -122 -307 -134 -304 -128 -307 b -111 -302 -118 -307 -114 -305 l 56 -164 b 161 -192 85 -181 121 -192 b 315 -151 210 -192 264 -179 b 468 58 410 -101 468 -16 b 454 117 468 78 464 98 b 436 141 449 125 444 134 l 603 272 b 611 287 608 275 611 281 b 606 298 611 291 609 295 z m 56 -98 b 49 -73 52 -91 49 -82 b 75 -23 49 -58 59 -39 b 199 60 99 1 147 32 b 337 118 251 89 302 111 b 359 121 344 120 351 121 b 361 121 360 121 360 121 l 225 9 l 69 -114 b 56 -98 65 -109 60 -104 z m 410 94 b 416 69 415 86 416 78 b 392 19 416 53 408 36 b 266 -65 367 -6 318 -36 b 128 -122 215 -94 163 -115 b 107 -125 121 -124 114 -125 b 104 -125 107 -125 105 -125 l 245 -9 l 396 111 b 410 94 402 107 408 101 z',\n },\n noteheadSlashedBlack1: {\n x_min: -98,\n x_max: 424,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 606 298 b 592 305 602 302 598 305 b 580 301 588 305 583 304 l 412 161 b 307 190 383 180 347 190 b 0 -60 167 190 0 72 b 32 -144 0 -89 10 -120 l -134 -274 b -141 -288 -138 -278 -141 -284 b -137 -301 -141 -292 -140 -297 b -122 -307 -134 -305 -128 -307 b -111 -304 -118 -307 -114 -307 l 56 -164 b 161 -192 82 -181 117 -192 b 468 58 311 -192 468 -71 b 436 141 468 91 456 120 l 603 271 b 611 285 608 275 611 281 b 606 298 611 289 609 294 z',\n },\n noteheadSlashedDoubleWhole2: {\n x_min: -66,\n x_max: 456,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 563 -204 b 563 236 563 -98 563 228 b 543 256 563 249 554 256 b 530 256 537 256 536 256 b 510 236 518 256 510 248 b 510 124 510 233 510 187 b 281 194 467 166 393 194 b 107 161 207 194 150 181 l 53 204 b 53 236 53 223 53 235 b 33 256 53 249 45 256 b 20 256 27 256 26 256 b 3 246 12 256 6 253 l -63 301 b -76 305 -68 304 -72 305 b -91 298 -81 305 -86 304 b -95 287 -94 295 -95 291 b -88 272 -95 281 -92 276 l 0 204 b 0 -238 0 98 0 -229 b 20 -258 0 -248 9 -258 b 33 -258 26 -258 27 -258 b 53 -238 43 -258 53 -246 b 53 -124 53 -235 53 -187 b 281 -196 96 -166 170 -196 b 456 -161 356 -196 413 -183 l 510 -206 b 510 -238 510 -225 510 -236 b 530 -258 510 -248 518 -258 b 543 -258 536 -258 537 -258 b 560 -246 549 -258 556 -252 l 626 -302 b 638 -307 631 -305 634 -307 b 654 -300 645 -307 649 -304 b 657 -288 655 -295 657 -292 b 651 -272 657 -282 655 -276 z m 207 140 b 269 148 225 144 248 148 b 356 101 310 148 336 140 b 402 -68 376 62 402 -30 b 402 -78 402 -71 402 -75 l 292 9 l 168 109 b 207 140 176 124 189 134 z m 78 144 b 53 124 69 137 60 131 b 53 163 53 137 53 150 z m 356 -141 b 294 -148 338 -145 315 -148 b 207 -101 253 -148 226 -137 b 161 66 189 -66 163 27 b 160 72 161 69 160 71 b 161 78 160 75 160 76 l 271 -9 l 395 -109 b 356 -141 387 -124 374 -134 z m 485 -144 b 510 -124 494 -138 503 -131 b 510 -163 510 -138 510 -151 z',\n },\n noteheadSlashedWhole2: {\n x_min: -75,\n x_max: 448,\n y_min: -212,\n y_max: 214,\n ha: 426,\n o: 'm 468 -138 b 537 1 517 -101 537 -49 b 269 196 537 95 468 196 b 98 160 196 196 140 181 l -76 304 b -88 308 -81 307 -84 307 b -104 301 -94 308 -99 305 b -108 289 -107 297 -107 292 b -101 274 -108 284 -105 278 l 69 141 b 0 1 20 104 0 52 b 269 -193 0 -92 71 -193 b 441 -157 343 -193 399 -179 l 613 -301 b 625 -305 618 -304 622 -305 b 641 -298 631 -305 636 -302 b 645 -287 644 -294 644 -291 b 638 -271 645 -281 642 -275 z m 194 141 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 389 -65 363 63 389 -29 b 389 -76 389 -69 389 -73 l 279 10 l 156 112 b 194 141 163 125 176 135 z m 343 -138 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 148 68 176 -63 150 29 b 148 76 148 71 148 73 b 148 81 148 78 148 79 l 258 -6 l 382 -108 b 343 -138 374 -122 361 -132 z',\n },\n noteheadSlashedHalf2: {\n x_min: -98,\n x_max: 424,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 386 -102 b 468 58 438 -55 468 4 b 454 117 468 78 464 98 b 307 190 428 164 373 190 b 153 148 258 190 204 176 b 108 120 137 140 122 130 l -111 301 b -122 305 -114 304 -118 305 b -137 298 -128 305 -134 302 b -141 287 -140 295 -141 291 b -134 272 -141 281 -138 275 l 85 101 b 0 -60 32 53 0 -7 b 14 -120 0 -81 4 -101 b 161 -192 40 -167 95 -192 b 315 -151 210 -192 264 -179 b 361 -122 333 -143 347 -132 l 580 -302 b 592 -307 583 -305 588 -307 b 606 -300 598 -307 602 -304 b 611 -288 609 -297 611 -292 b 603 -274 611 -282 608 -276 z m 199 60 b 337 118 251 89 302 111 b 359 121 344 120 351 121 b 410 94 382 121 400 112 b 416 69 415 86 416 78 b 392 19 416 53 408 36 b 308 -42 374 0 343 -20 l 245 7 l 189 55 b 199 60 192 56 196 58 z m 266 -65 b 128 -122 215 -94 163 -115 b 107 -125 121 -124 114 -125 b 56 -98 84 -125 66 -117 b 49 -73 52 -91 49 -82 b 75 -23 49 -58 59 -39 b 163 39 94 -4 125 17 l 225 -9 l 282 -56 b 266 -65 276 -59 272 -62 z',\n },\n noteheadSlashedBlack2: {\n x_min: -98.44444444444443,\n x_max: 424,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 384 -102 b 468 58 435 -58 468 0 b 307 190 468 143 396 190 b 108 121 239 190 167 163 l -111 301 b -124 305 -115 304 -120 305 b -138 298 -128 305 -134 302 b -141 289 -140 295 -141 292 b -141 287 -141 288 -143 288 b -135 272 -141 281 -140 275 l 84 101 b 0 -60 35 56 0 0 b 161 -192 0 -122 45 -192 b 361 -122 232 -192 304 -164 l 579 -302 b 590 -307 583 -305 588 -307 b 606 -300 596 -307 602 -304 b 611 -288 609 -297 611 -292 b 603 -274 609 -282 608 -276 z',\n },\n noteheadDiamondDoubleWhole: {\n x_min: 0,\n x_max: 373,\n y_min: -178,\n y_max: 179,\n ha: 357,\n o: 'm 504 258 b 484 238 494 258 484 248 l 484 46 b 282 187 415 95 285 186 b 268 192 279 190 275 192 b 255 187 262 192 258 190 l 52 45 l 52 238 b 33 258 52 248 43 258 l 20 258 b 0 238 9 258 0 248 l 0 -236 b 20 -256 0 -248 9 -256 l 33 -256 b 52 -236 43 -256 52 -248 l 52 -45 l 249 -181 b 268 -190 258 -189 264 -190 b 282 -186 274 -190 279 -189 b 484 -43 285 -184 413 -94 l 484 -236 b 504 -256 484 -248 494 -256 l 517 -256 b 537 -236 528 -256 537 -248 l 537 238 b 517 258 537 248 528 258 z m 220 -115 l 102 -33 l 317 117 l 435 35 z',\n },\n noteheadDiamondWhole: {\n x_min: 0,\n x_max: 373,\n y_min: -133,\n y_max: 132,\n ha: 265,\n o: 'm 282 -187 b 530 -13 285 -186 530 -13 b 537 0 534 -10 537 -6 b 530 13 537 4 534 10 b 282 186 530 13 287 183 b 268 190 279 189 275 190 b 255 186 262 190 258 189 l 7 12 b 0 -1 3 9 0 4 b 4 -13 0 -6 1 -10 l 249 -183 b 268 -192 258 -190 264 -192 b 282 -187 274 -192 279 -190 z m 220 -117 l 102 -35 l 317 115 l 435 33 z',\n },\n noteheadDiamondHalf: {\n x_min: 0,\n x_max: 335,\n y_min: -132,\n y_max: 133,\n ha: 265,\n o: 'm 475 -13 b 482 0 480 -10 482 -6 b 475 13 482 4 480 10 l 253 187 b 240 192 251 190 246 192 b 229 187 236 192 232 190 l 7 13 b 0 0 3 10 0 6 b 7 -13 0 -4 3 -10 l 229 -186 b 240 -190 232 -189 236 -190 b 253 -186 246 -190 251 -189 z m 284 -115 l 92 33 l 199 117 l 390 -33 z',\n },\n noteheadDiamondBlack: {\n x_min: 0,\n x_max: 335,\n y_min: -132,\n y_max: 133,\n ha: 265,\n o: 'm 475 -14 b 482 -1 480 -10 482 -6 b 475 13 482 4 480 10 l 253 187 b 240 192 251 190 246 192 b 229 187 236 192 232 190 l 7 13 b 0 0 3 10 0 4 b 7 -14 0 -6 3 -10 l 229 -186 b 240 -190 232 -189 236 -190 b 253 -186 246 -190 251 -189 z',\n },\n noteheadParenthesisRight: {\n x_min: 0,\n x_max: 75,\n y_min: -209.4142135623731,\n y_max: 212,\n ha: 421.4142135623731,\n o: 'm 10 305 b 4 302 7 304 6 304 b 0 295 1 301 0 298 b 1 289 0 294 0 292 b 68 -10 1 288 68 160 b 1 -288 68 -95 50 -192 b 0 -292 0 -289 0 -291 b 4 -300 0 -295 1 -298 b 12 -301 7 -301 9 -302 b 17 -298 14 -301 16 -300 b 108 0 22 -292 108 -174 b 17 301 108 174 22 295 b 10 305 16 304 13 305 z',\n },\n noteheadParenthesisLeft: {\n x_min: 0,\n x_max: 75,\n y_min: -212,\n y_max: 209.4142135623731,\n ha: 421.4142135623731,\n o: 'm 98 -305 b 104 -302 101 -304 102 -304 b 108 -295 107 -301 108 -298 b 107 -289 108 -294 108 -292 b 40 10 107 -288 40 -160 b 107 288 40 95 58 192 b 108 292 108 289 108 291 b 104 300 108 295 107 298 b 96 301 101 301 99 302 b 91 298 94 301 92 300 b 0 0 86 292 0 174 b 91 -301 0 -174 86 -295 b 98 -305 92 -304 95 -305 z',\n },\n noteheadMoonBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 0 180 l 0 0 b 223 -180 0 -99 99 -180 b 446 0 347 -180 446 -99 l 446 180 z',\n },\n noteheadTriangleLeftBlack: {\n x_min: 0,\n x_max: 339,\n y_min: -136,\n y_max: 122,\n ha: 258,\n o: 'm 0 176 l 0 -196 l 488 -196 z',\n },\n noteheadTriangleRightBlack: {\n x_min: 0,\n x_max: 339,\n y_min: -136,\n y_max: 122,\n ha: 258,\n o: 'm 488 176 l 0 -196 l 488 -196 z',\n },\n noteheadTriangleRoundDownBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -136,\n y_max: 122,\n ha: 258,\n o: 'm 226 -196 l 446 63 b 226 176 446 63 384 176 b 0 63 68 176 0 63 z',\n },\n augmentationDot: {\n x_min: 0,\n x_max: 100,\n y_min: -50,\n y_max: 50,\n ha: 100,\n o: 'm 0 0 b 72 -72 0 -40 32 -72 b 144 0 112 -72 144 -40 b 72 72 144 40 112 72 b 0 0 32 72 0 40 z',\n },\n tremolo1: {\n x_min: 0,\n x_max: 290,\n y_min: -93,\n y_max: 96,\n ha: 189,\n o: 'm 0 48 l 0 -134 l 418 -43 l 418 138 z',\n },\n flag8thUp: {\n x_min: 0,\n x_max: 289.04376776750354,\n y_min: -817,\n y_max: 12,\n ha: 829,\n o: 'm 0 -327 b 12 -343 0 -331 1 -338 b 291 -600 73 -363 197 -441 b 359 -827 317 -645 359 -707 b 294 -1140 359 -930 331 -1037 b 289 -1162 291 -1149 288 -1156 b 297 -1175 289 -1168 291 -1172 b 304 -1176 300 -1176 302 -1176 b 327 -1161 314 -1176 321 -1171 b 416 -798 395 -1041 418 -888 b 416 -780 416 -791 416 -786 b 302 -458 409 -595 302 -458 b 131 -220 307 -458 170 -281 b 50 -50 78 -138 53 -56 b 36 6 49 -46 36 6 b 19 17 35 12 27 17 b 0 -1 9 17 0 9 z',\n },\n flag8thDown: {\n x_min: 0,\n x_max: 309,\n y_min: -12,\n y_max: 817,\n ha: 829,\n o: 'm 0 1 b 19 -17 0 -9 9 -17 b 36 -6 26 -17 35 -12 b 50 50 36 -4 49 46 b 117 196 52 56 65 111 b 331 458 173 289 259 357 b 445 780 402 559 445 654 b 338 1161 445 912 415 1021 b 317 1176 334 1171 325 1176 b 310 1175 314 1176 311 1176 b 300 1158 302 1172 300 1166 b 304 1140 300 1153 301 1146 b 384 827 361 1007 384 930 b 317 600 384 707 343 645 b 12 343 223 441 72 363 b 0 327 1 338 0 331 z',\n },\n flag16thUp: {\n x_min: 0,\n x_max: 279,\n y_min: -820,\n y_max: 12,\n ha: 832,\n o: 'm 301 -681 b 148 -514 262 -631 219 -585 b 56 -372 92 -458 66 -409 b 52 -343 55 -364 53 -354 b 271 -510 125 -343 219 -442 b 340 -696 327 -583 340 -641 b 337 -739 340 -710 338 -724 b 301 -681 325 -716 312 -697 z m 0 -549 b 22 -563 0 -553 12 -559 b 258 -776 59 -576 171 -648 b 318 -950 307 -850 318 -901 b 317 -975 318 -959 318 -966 b 285 -1140 317 -1009 307 -1083 b 279 -1164 284 -1148 279 -1156 b 289 -1179 279 -1169 282 -1175 b 297 -1181 292 -1181 294 -1181 b 318 -1161 307 -1181 312 -1169 b 382 -962 344 -1120 382 -1043 b 374 -855 382 -920 379 -886 b 402 -678 389 -802 402 -749 b 333 -471 402 -603 382 -536 b 137 -228 265 -382 192 -307 b 42 0 82 -148 42 0 b 22 17 39 10 37 17 b 0 0 4 17 0 10 z',\n },\n flag16thDown: {\n x_min: 0,\n x_max: 309,\n y_min: -26,\n y_max: 803,\n ha: 829,\n o: 'm 53 346 b 56 363 55 353 56 359 b 163 517 66 399 78 452 b 384 732 246 582 346 662 b 317 503 382 621 354 552 b 53 346 229 395 122 364 z m 0 -14 b 22 -37 0 -26 10 -37 b 43 -14 33 -37 40 -26 b 167 232 65 134 109 177 b 445 683 243 305 445 416 b 432 837 445 730 441 783 b 441 919 438 855 441 881 b 327 1149 441 1032 374 1112 b 304 1156 321 1153 312 1156 b 287 1152 298 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1135 b 382 930 344 1076 382 1027 b 374 876 382 912 380 893 l 373 871 b 373 871 373 871 373 871 b 327 789 366 842 350 815 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z',\n },\n flag32ndUp: {\n x_min: 0,\n x_max: 279,\n y_min: -821,\n y_max: 186,\n ha: 1007,\n o: 'm 301 -683 b 148 -516 262 -632 219 -588 b 56 -373 92 -459 66 -410 b 50 -343 55 -366 53 -354 b 271 -500 125 -343 219 -432 b 340 -687 327 -575 340 -632 b 337 -739 340 -704 338 -721 b 301 -683 325 -716 312 -698 z m 271 -259 b 340 -446 327 -333 340 -392 b 338 -469 340 -455 338 -462 b 333 -461 337 -467 334 -464 b 91 -192 265 -372 145 -271 b 50 -92 69 -160 58 -124 b 271 -259 124 -92 219 -192 z m 0 -550 b 22 -564 0 -554 12 -560 b 258 -778 59 -577 171 -649 b 318 -952 307 -851 318 -903 b 317 -976 318 -960 318 -968 b 285 -1142 317 -1011 307 -1084 b 279 -1165 284 -1149 279 -1158 b 289 -1181 279 -1171 282 -1176 b 297 -1182 292 -1182 294 -1182 b 318 -1162 307 -1182 312 -1171 b 382 -963 344 -1122 382 -1044 b 374 -857 382 -922 379 -887 b 402 -668 389 -802 402 -740 b 386 -563 402 -632 396 -596 b 402 -441 395 -526 402 -487 b 402 -428 402 -436 402 -432 b 333 -220 402 -353 382 -285 b 137 23 265 -131 192 -56 b 42 251 82 102 42 251 b 22 268 39 261 37 268 b 0 251 4 268 0 261 z',\n },\n flag32ndDown: {\n x_min: 0,\n x_max: 309,\n y_min: -216,\n y_max: 803,\n ha: 1019,\n o: 'm 50 73 b 91 171 58 105 71 141 b 347 402 145 251 272 317 b 384 454 361 418 374 435 b 324 239 384 347 361 287 b 50 73 235 130 122 94 z m 163 517 b 366 693 248 589 327 642 b 382 716 372 700 377 708 b 383 693 383 708 383 700 b 314 505 383 621 359 562 b 53 343 258 436 179 390 b 56 363 55 351 56 359 b 163 517 66 400 81 449 z m 0 -288 b 22 -311 0 -298 10 -311 b 43 -288 33 -311 40 -300 b 167 -40 65 -138 109 -95 b 445 409 243 32 445 143 b 431 577 445 462 439 520 b 441 651 435 602 439 626 b 441 675 441 658 441 667 b 441 687 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 305 1156 321 1153 314 1156 b 287 1152 300 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1136 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z',\n },\n flag64thUp: {\n x_min: 0,\n x_max: 279,\n y_min: -822,\n y_max: 373,\n ha: 1195,\n o: 'm 333 -461 b 91 -192 265 -372 145 -271 b 50 -92 69 -161 58 -125 b 271 -251 125 -92 219 -183 b 340 -438 327 -324 340 -383 b 338 -469 340 -448 338 -459 b 333 -461 337 -467 334 -464 z m 301 -683 b 148 -517 262 -632 219 -588 b 56 -374 92 -461 66 -410 b 50 -343 55 -366 53 -356 b 271 -501 125 -343 219 -433 b 340 -688 327 -575 340 -634 b 337 -739 340 -706 338 -721 b 301 -683 325 -717 312 -698 z m 271 10 b 340 -176 327 -63 340 -121 b 337 -217 340 -190 338 -204 b 333 -212 336 -216 334 -213 b 91 65 265 -122 145 -16 b 48 177 66 101 53 143 l 50 177 b 271 10 124 177 217 78 z m 0 -552 b 22 -564 0 -554 12 -562 b 258 -778 59 -579 171 -649 b 318 -952 307 -851 317 -903 b 317 -976 318 -960 318 -968 b 285 -1142 317 -1012 307 -1084 b 279 -1165 284 -1149 279 -1158 b 289 -1181 279 -1172 282 -1178 b 297 -1184 292 -1182 295 -1184 b 318 -1164 307 -1182 312 -1172 b 382 -963 344 -1122 382 -1044 b 374 -857 382 -923 379 -887 b 402 -668 389 -804 402 -740 b 386 -563 402 -632 396 -596 b 402 -432 395 -523 402 -480 b 402 -418 402 -428 402 -423 b 383 -304 402 -379 396 -341 b 402 -170 393 -264 402 -222 b 402 -158 402 -166 402 -163 b 333 49 402 -84 382 -16 b 137 292 265 138 192 213 b 42 520 82 372 42 520 b 22 537 39 530 37 537 b 0 520 4 537 0 530 z',\n },\n flag64thDown: {\n x_min: 0,\n x_max: 309,\n y_min: -403,\n y_max: 804,\n ha: 1207,\n o: 'm 52 -196 b 91 -102 59 -166 71 -131 b 347 128 145 -23 272 45 b 384 180 361 145 374 163 b 324 -30 384 76 361 16 b 52 -196 235 -140 124 -176 z m 163 517 b 366 693 248 589 327 644 b 382 717 372 701 377 708 b 383 693 383 708 383 701 b 314 505 383 621 359 562 b 53 343 258 438 179 390 b 56 363 55 351 56 359 b 163 517 66 400 81 449 z m 314 232 b 50 69 258 163 179 117 b 91 171 56 102 69 140 b 347 402 145 251 272 318 b 382 449 360 416 372 432 b 383 420 383 439 383 429 b 314 232 383 348 359 288 z m 0 -557 b 22 -580 0 -567 10 -580 b 43 -557 33 -580 40 -567 b 167 -310 65 -408 109 -364 b 445 140 243 -238 445 -125 b 431 307 445 192 439 249 b 441 377 436 331 439 354 b 441 406 441 387 441 397 b 441 418 441 410 441 413 b 423 546 441 464 432 507 b 441 651 432 582 438 618 b 441 675 441 660 441 667 b 441 688 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 305 1158 321 1153 314 1156 b 287 1152 300 1158 292 1156 b 279 1145 281 1151 279 1148 b 294 1129 279 1140 288 1136 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 563 z',\n },\n flag128thUp: {\n x_min: 0,\n x_max: 279,\n y_min: -821,\n y_max: 573,\n ha: 1394,\n o: 'm 0 -550 b 22 -563 0 -553 12 -560 b 258 -776 59 -576 171 -648 b 318 -950 307 -850 318 -901 b 317 -975 318 -959 318 -966 b 285 -1140 317 -1011 307 -1083 b 279 -1164 284 -1148 279 -1156 b 289 -1179 279 -1171 282 -1176 b 297 -1182 292 -1181 294 -1181 b 318 -1162 307 -1182 312 -1169 b 382 -962 344 -1120 382 -1043 b 374 -857 382 -922 379 -887 b 402 -668 389 -802 402 -740 b 383 -554 402 -629 396 -590 b 402 -399 396 -503 402 -452 b 382 -284 402 -359 396 -321 b 402 -125 396 -230 402 -180 b 383 -14 402 -86 396 -49 b 402 130 396 35 402 81 b 333 348 402 204 382 284 b 137 592 265 438 192 513 b 42 808 82 671 46 793 b 22 825 39 818 37 825 b 0 808 4 825 0 818 z m 271 310 b 340 111 328 235 340 170 b 338 73 340 98 338 86 b 333 81 336 76 334 79 b 91 357 265 170 145 276 b 48 469 66 393 53 435 l 50 469 b 271 310 124 469 217 377 z m 301 -681 b 148 -523 262 -631 219 -593 b 56 -383 92 -465 66 -420 b 49 -343 55 -374 52 -359 l 50 -343 b 271 -500 124 -343 217 -432 b 340 -688 327 -575 340 -634 b 337 -737 340 -706 338 -721 b 301 -681 325 -716 312 -697 z m 333 -461 b 91 -192 265 -372 145 -271 b 48 -73 66 -154 53 -111 l 48 -73 l 50 -73 b 271 -232 124 -73 217 -163 b 340 -419 327 -305 340 -364 b 337 -468 340 -435 338 -452 b 333 -461 336 -465 334 -464 z m 333 -192 b 91 84 265 -102 145 4 b 48 200 65 121 53 164 l 48 200 l 50 200 b 271 42 124 200 217 109 b 340 -147 327 -32 340 -92 b 337 -197 340 -164 338 -181 b 333 -192 336 -196 334 -194 z',\n },\n flag128thDown: {\n x_min: 0,\n x_max: 309,\n y_min: -591,\n y_max: 803,\n ha: 1394,\n o: 'm 0 -828 b 22 -851 0 -838 10 -851 b 43 -828 33 -851 40 -840 b 167 -580 65 -678 109 -635 b 445 -131 243 -508 445 -397 b 431 36 445 -79 439 -22 b 441 108 436 60 439 85 b 441 137 441 117 441 127 b 441 147 441 140 441 144 b 423 275 441 193 432 236 b 441 377 433 310 438 344 b 441 406 441 387 441 396 b 441 418 441 410 441 413 b 423 546 441 464 432 507 b 441 649 432 582 438 616 b 441 675 441 658 441 667 b 441 687 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 304 1156 321 1153 312 1156 b 287 1152 298 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1135 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z m 314 -37 b 50 -200 258 -107 179 -153 b 91 -102 58 -168 71 -132 b 347 128 145 -23 272 45 b 382 176 360 143 372 160 b 383 151 383 167 383 160 b 314 -37 383 79 359 19 z m 314 232 b 50 69 258 163 179 117 b 91 171 56 101 69 138 b 347 402 145 251 272 317 b 382 449 360 416 372 432 b 383 420 383 439 383 429 b 314 232 383 347 359 288 z m 163 517 b 366 693 248 589 327 642 b 382 716 372 700 377 708 b 383 693 383 708 383 700 b 314 505 382 621 359 560 b 53 343 258 436 179 390 b 56 363 55 350 56 357 b 163 517 66 399 81 449 z m 52 -467 b 91 -372 59 -435 71 -402 b 347 -141 145 -292 272 -225 b 384 -89 361 -125 374 -108 b 324 -301 382 -194 361 -255 b 52 -467 235 -410 122 -446 z',\n },\n accidentalFlat: {\n x_min: 0,\n x_max: 203,\n y_min: -176,\n y_max: 453,\n ha: 629,\n o: 'm 289 114 b 173 223 281 170 246 223 b 52 170 101 223 59 179 l 58 632 b 37 652 58 644 49 652 l 20 652 b 0 632 9 652 0 644 l 7 -233 b 27 -253 7 -245 16 -253 b 39 -251 30 -253 36 -252 b 216 -114 45 -248 138 -202 b 292 78 271 -52 292 19 b 289 114 292 91 291 102 z m 190 58 b 148 -85 190 36 184 -30 b 48 -183 124 -122 75 -161 l 52 98 b 134 153 55 111 76 153 b 190 73 186 153 190 104 b 190 58 190 66 190 62 z',\n },\n accidentalNatural: {\n x_min: 0,\n x_max: 171,\n y_min: -323,\n y_max: 325,\n ha: 648,\n o: 'm 239 264 b 228 268 236 266 232 268 b 222 266 226 268 223 266 l 40 216 l 40 468 l 0 468 l 0 -245 b 20 -264 0 -256 9 -264 b 26 -264 22 -264 24 -264 l 207 -213 l 207 -465 l 246 -465 b 246 248 246 -226 246 1 b 239 264 246 253 243 261 z m 40 -140 l 40 96 l 207 144 l 207 -94 z',\n },\n accidentalSharp: {\n x_min: 0,\n x_max: 244,\n y_min: -333,\n y_max: 334,\n ha: 667,\n o: 'm 336 151 b 351 171 344 153 351 163 l 351 256 b 331 276 351 268 343 276 b 328 276 330 276 330 276 l 281 266 l 281 481 l 240 481 l 240 258 l 112 232 l 112 435 l 72 435 l 72 223 l 16 212 b 0 192 7 210 0 200 l 0 189 l 0 105 l 0 108 b 20 88 0 96 9 88 b 24 88 22 88 23 88 l 72 98 l 72 -140 l 16 -151 b 0 -171 7 -153 0 -163 l 0 -255 b 20 -275 0 -266 9 -275 b 24 -275 22 -275 23 -275 l 72 -265 l 72 -480 l 112 -480 l 112 -256 l 240 -230 l 240 -433 l 281 -433 l 281 -222 l 336 -212 b 351 -192 344 -210 351 -200 l 351 -107 b 331 -86 351 -95 343 -86 b 328 -86 330 -86 330 -86 l 281 -96 l 281 141 z m 112 107 l 240 132 l 240 -105 l 112 -132 z',\n },\n accidentalDoubleSharp: {\n x_min: 0,\n x_max: 275,\n y_min: -137,\n y_max: 138,\n ha: 275,\n o: 'm 360 73 l 376 73 b 396 94 387 73 396 82 l 396 179 b 376 199 396 190 387 199 l 291 199 b 271 179 279 199 271 190 l 271 161 l 271 102 l 200 30 l 196 30 l 124 102 l 124 179 b 105 199 124 190 117 199 l 20 199 b 0 179 9 199 0 190 l 0 94 b 20 73 0 82 9 73 l 35 73 l 36 73 l 96 73 l 167 3 l 167 -1 l 96 -73 l 36 -73 l 35 -73 l 20 -73 b 0 -92 9 -73 0 -81 l 0 -177 b 20 -197 0 -189 9 -197 l 105 -197 b 124 -177 117 -197 124 -189 l 124 -101 l 196 -32 l 200 -32 l 271 -101 l 271 -161 l 271 -163 l 271 -177 b 291 -197 271 -189 279 -197 l 376 -197 b 396 -177 387 -197 396 -189 l 396 -92 b 376 -73 396 -81 387 -73 l 361 -73 l 360 -73 l 300 -73 l 228 -1 l 228 1 l 300 73 z',\n },\n accidentalDoubleFlat: {\n x_min: 0,\n x_max: 371,\n y_min: -176,\n y_max: 453,\n ha: 629,\n o: 'm 531 115 b 415 223 523 171 488 223 b 294 171 343 223 301 180 l 300 632 b 279 652 300 644 291 652 l 262 652 b 242 632 251 652 242 644 l 246 199 b 173 223 228 213 204 223 b 52 170 101 223 59 179 l 58 632 b 37 652 58 644 49 652 l 20 652 b 0 632 9 652 0 644 l 7 -233 b 27 -253 7 -245 16 -253 b 39 -249 30 -253 36 -251 b 216 -114 45 -246 138 -202 b 248 -69 226 -102 239 -82 l 249 -233 b 269 -253 249 -245 258 -253 b 281 -249 272 -253 278 -251 b 458 -112 287 -246 380 -200 b 534 79 513 -50 534 20 b 531 115 534 92 533 104 z m 190 58 b 148 -85 190 36 184 -30 b 48 -183 124 -122 75 -161 l 52 98 b 134 153 55 111 76 153 b 190 73 186 153 190 104 b 190 58 190 66 190 62 z m 432 58 b 390 -85 432 36 426 -30 b 289 -183 366 -122 317 -161 l 294 98 b 376 153 297 111 318 153 b 432 73 428 153 432 104 b 432 58 432 66 432 62 z',\n },\n accidentalParensLeft: {\n x_min: 0,\n x_max: 75,\n y_min: -212,\n y_max: 209.4142135623731,\n ha: 421.4142135623731,\n o: 'm 98 -305 b 104 -302 101 -304 102 -304 b 108 -295 107 -301 108 -298 b 107 -289 108 -294 108 -292 b 40 10 107 -288 40 -160 b 107 288 40 95 58 192 b 108 292 108 289 108 291 b 104 300 108 295 107 298 b 96 301 101 301 99 302 b 91 298 94 301 92 300 b 0 0 86 292 0 174 b 91 -301 0 -174 86 -295 b 98 -305 92 -304 95 -305 z',\n },\n accidentalParensRight: {\n x_min: 0,\n x_max: 75,\n y_min: -209.4142135623731,\n y_max: 212,\n ha: 421.4142135623731,\n o: 'm 10 305 b 4 302 7 304 6 304 b 0 295 1 301 0 298 b 1 289 0 294 0 292 b 68 -10 1 288 68 160 b 1 -288 68 -95 50 -192 b 0 -292 0 -289 0 -291 b 4 -300 0 -295 1 -298 b 12 -301 7 -301 9 -302 b 17 -298 14 -301 16 -300 b 108 0 22 -292 108 -174 b 17 301 108 174 22 295 b 10 305 16 304 13 305 z',\n },\n accidentalQuarterToneFlatStein: {\n x_min: 0,\n x_max: 193,\n y_min: -176,\n y_max: 452,\n ha: 628,\n o: 'm 0 84 b 107 -145 0 -26 65 -105 b 245 -249 166 -202 245 -249 b 253 -253 248 -251 249 -253 b 272 -235 264 -253 272 -245 l 278 632 b 259 651 278 642 269 651 l 248 651 b 229 632 238 651 229 642 l 232 174 b 125 217 223 186 192 217 b 0 84 53 217 0 173 z m 148 154 b 232 102 212 154 232 115 b 233 107 232 99 233 102 l 235 -179 b 134 -72 207 -156 160 -111 b 92 58 98 -17 92 36 b 92 75 92 62 92 68 b 148 154 92 105 96 154 z',\n },\n accidentalThreeQuarterTonesFlatZimmermann: {\n x_min: 0,\n x_max: 422,\n y_min: -176,\n y_max: 452,\n ha: 628,\n o: 'm 608 84 b 482 217 608 173 554 217 b 376 174 416 217 384 186 l 379 632 b 360 651 379 642 370 651 l 348 651 b 330 632 338 651 330 642 l 336 -235 b 354 -253 336 -245 344 -253 b 363 -249 359 -253 360 -251 b 501 -145 363 -249 442 -202 b 608 84 543 -105 608 -26 z m 459 154 b 516 75 511 154 516 105 b 516 58 516 68 516 62 b 474 -72 516 36 510 -17 b 373 -179 448 -111 400 -156 l 374 107 b 376 102 374 102 376 99 b 459 154 376 115 396 154 z m 0 84 b 107 -145 0 -26 65 -105 b 245 -249 166 -202 245 -249 b 253 -253 248 -251 249 -253 b 272 -235 264 -253 272 -245 l 278 632 b 259 651 278 642 269 651 l 248 651 b 229 632 238 651 229 642 l 232 174 b 125 217 223 186 192 217 b 0 84 53 217 0 173 z m 148 154 b 232 102 212 154 232 115 b 233 107 232 99 233 102 l 235 -179 b 134 -72 207 -156 160 -111 b 92 58 98 -17 92 36 b 92 75 92 62 92 68 b 148 154 92 105 96 154 z',\n },\n accidentalQuarterToneSharpStein: {\n x_min: 0,\n x_max: 180,\n y_min: -316,\n y_max: 320,\n ha: 636,\n o: 'm 243 144 b 259 164 252 145 259 156 l 259 249 b 239 269 259 261 251 269 b 235 268 238 269 236 268 l 150 251 l 150 461 l 109 461 l 109 242 l 16 222 b 0 203 7 220 0 212 l 0 120 b 20 99 0 108 9 99 b 24 99 22 99 23 99 l 109 117 l 109 -121 l 16 -141 b 0 -160 7 -143 0 -151 l 0 -243 b 20 -264 0 -255 9 -264 b 24 -264 22 -264 23 -264 l 109 -246 l 109 -455 l 150 -455 l 150 -238 l 243 -219 b 259 -199 252 -217 259 -207 l 259 -114 b 239 -95 259 -102 251 -95 b 235 -95 238 -95 236 -95 l 150 -112 l 150 125 z',\n },\n accidentalThreeQuarterTonesSharpStein: {\n x_min: 0,\n x_max: 290,\n y_min: -328,\n y_max: 339,\n ha: 667,\n o: 'm 400 158 b 416 179 409 160 416 170 l 416 264 b 397 284 416 275 409 284 b 393 284 396 284 395 284 l 348 274 l 348 488 l 308 488 l 308 265 l 223 248 l 223 465 l 184 465 l 184 240 l 108 225 l 108 442 l 69 442 l 69 216 l 16 204 b 0 186 7 203 0 194 l 0 102 b 20 82 0 91 9 82 b 24 82 22 82 23 82 l 69 92 l 69 -147 l 16 -158 b 0 -177 7 -160 0 -168 l 0 -261 b 20 -281 0 -272 9 -281 b 24 -281 22 -281 23 -281 l 69 -272 l 69 -472 l 108 -472 l 108 -264 l 184 -248 l 184 -451 l 223 -451 l 223 -240 l 308 -223 l 308 -426 l 348 -426 l 348 -215 l 400 -204 b 418 -184 409 -203 418 -193 l 418 -99 b 397 -79 418 -88 409 -79 b 393 -79 396 -79 395 -79 l 348 -89 l 348 148 z m 184 -122 l 108 -138 l 108 99 l 184 115 z m 223 122 l 308 140 l 308 -98 l 223 -115 z',\n },\n accidentalBuyukMucennebFlat: {\n x_min: 0,\n x_max: 277,\n y_min: -176,\n y_max: 454,\n ha: 630,\n o: 'm 396 115 b 279 225 387 173 354 225 b 158 171 204 225 164 179 l 160 317 l 336 419 l 336 482 l 161 380 l 161 488 l 336 590 l 336 654 l 163 552 l 164 634 b 144 654 164 645 156 654 l 127 654 b 107 634 115 654 107 645 l 108 520 l 0 456 l 0 393 l 108 456 l 109 350 l 0 285 l 0 222 l 109 287 l 114 -235 b 134 -253 114 -246 122 -253 b 145 -251 138 -253 141 -252 b 323 -114 145 -251 242 -204 b 399 79 377 -52 399 20 b 396 115 399 92 397 104 z m 297 58 b 255 -85 297 36 291 -30 b 154 -184 230 -122 181 -163 l 158 96 b 240 153 161 109 181 153 b 297 73 292 153 297 104 b 297 58 297 66 297 62 z',\n },\n accidentalBakiyeFlat: {\n x_min: 0,\n x_max: 277,\n y_min: -176,\n y_max: 454,\n ha: 630,\n o: 'm 396 115 b 279 225 387 173 354 225 b 158 171 204 225 164 179 l 161 348 l 336 452 l 336 516 l 161 413 l 164 634 b 144 654 164 645 156 654 l 127 654 b 107 634 115 654 107 645 l 109 382 l 0 318 l 0 255 l 109 318 l 114 -235 b 134 -253 114 -246 122 -253 b 145 -251 138 -253 143 -252 b 323 -114 145 -251 242 -204 b 399 79 377 -52 399 20 b 396 115 399 92 397 104 z m 297 58 b 255 -85 297 36 291 -30 b 156 -184 230 -122 183 -163 l 158 96 b 240 153 161 109 181 153 b 297 73 292 153 297 104 b 297 58 297 66 297 62 z',\n },\n accidentalKucukMucennebSharp: {\n x_min: 0,\n x_max: 348,\n y_min: -316,\n y_max: 318,\n ha: 634,\n o: 'm 494 121 b 482 125 491 124 487 125 b 478 124 481 125 480 124 l 269 68 l 269 127 l 412 164 b 425 181 420 167 425 173 l 425 266 b 418 282 425 272 422 279 b 406 285 415 285 410 285 b 402 285 405 285 403 285 l 269 249 l 269 458 l 232 458 l 232 239 l 89 200 b 76 181 81 197 76 190 l 76 98 b 84 84 76 92 79 86 b 95 79 86 81 91 79 b 99 81 96 79 98 81 l 232 115 l 232 58 l 14 -3 b 0 -20 6 -6 0 -12 l 0 -104 b 7 -118 0 -109 3 -115 b 19 -122 10 -121 14 -122 b 23 -122 20 -122 22 -122 l 232 -66 l 232 -124 l 89 -163 b 76 -180 81 -166 76 -171 l 76 -264 b 84 -279 76 -269 79 -276 b 95 -282 86 -282 91 -282 b 99 -282 96 -282 98 -282 l 232 -246 l 232 -455 l 269 -455 l 269 -236 l 412 -199 b 425 -180 420 -196 425 -189 l 425 -95 b 418 -81 425 -89 422 -84 b 406 -76 415 -78 410 -76 b 402 -78 405 -76 403 -78 l 269 -114 l 269 -55 l 487 4 b 501 22 495 7 501 13 l 501 107 b 494 121 501 112 498 118 z',\n },\n articAccentAbove: {\n x_min: 0,\n x_max: 361,\n y_min: 0,\n y_max: 235,\n ha: 235,\n o: 'm 26 337 b 20 338 24 337 22 338 b 0 318 9 338 0 330 l 0 285 b 14 266 0 276 7 269 l 323 170 l 14 72 b 0 53 7 69 0 62 l 0 20 b 20 0 0 9 9 0 b 26 1 22 0 24 1 l 505 150 b 520 170 513 153 520 161 b 505 189 520 179 513 186 z',\n },\n articAccentBelow: {\n x_min: 0,\n x_max: 361,\n y_min: -235,\n y_max: 0,\n ha: 235,\n o: 'm 26 -1 b 20 0 24 -1 22 0 b 0 -20 9 0 0 -9 l 0 -53 b 14 -72 0 -62 7 -69 l 323 -168 l 14 -266 b 0 -285 7 -269 0 -276 l 0 -318 b 20 -338 0 -330 9 -338 b 26 -337 22 -338 24 -337 l 505 -189 b 520 -168 513 -186 520 -177 b 505 -150 520 -160 513 -153 z',\n },\n articTenutoAbove: {\n x_min: 0,\n x_max: 316,\n y_min: 0,\n y_max: 46,\n ha: 46,\n o: 'm 20 66 b 0 46 9 66 0 58 l 0 20 b 20 0 0 9 9 0 l 435 0 b 455 20 446 0 455 9 l 455 46 b 435 66 455 58 446 66 z',\n },\n articTenutoBelow: {\n x_min: 0,\n x_max: 316,\n y_min: -46,\n y_max: 0,\n ha: 46,\n o: 'm 20 0 b 0 -20 9 0 0 -9 l 0 -46 b 20 -66 0 -58 9 -66 l 435 -66 b 455 -46 446 -66 455 -58 l 455 -20 b 435 0 455 -9 446 0 z',\n },\n articStaccatoAbove: {\n x_min: -0.25,\n x_max: 78.25,\n y_min: -0.25,\n y_max: 78,\n ha: 78.25,\n o: 'm 16 16 b 96 16 39 -6 73 -6 b 96 95 118 39 118 73 b 16 95 73 118 39 118 b 16 16 -6 73 -6 39 z',\n },\n articStaccatoBelow: {\n x_min: -0.25,\n x_max: 78.25,\n y_min: -78.25,\n y_max: 0,\n ha: 78.25,\n o: 'm 16 -96 b 96 -96 39 -118 73 -118 b 96 -17 118 -73 118 -39 b 16 -17 73 6 39 6 b 16 -96 -6 -39 -6 -73 z',\n },\n articStaccatissimoAbove: {\n x_min: 0,\n x_max: 127,\n y_min: 0,\n y_max: 248,\n ha: 248,\n o: 'm 163 357 b 150 353 154 357 150 353 l 99 300 b 92 295 96 297 95 295 b 85 300 89 295 88 297 l 35 353 b 22 357 35 353 30 357 b 0 338 13 357 0 351 b 73 22 0 323 73 22 b 92 0 75 16 78 0 b 111 22 107 0 109 16 b 183 338 111 22 183 323 b 163 357 183 351 171 357 z',\n },\n articStaccatissimoBelow: {\n x_min: 0,\n x_max: 127,\n y_min: -248,\n y_max: 0,\n ha: 248,\n o: 'm 20 -357 b 33 -353 29 -357 33 -353 l 84 -300 b 91 -295 86 -297 88 -295 b 98 -300 94 -295 95 -297 l 148 -353 b 161 -357 148 -353 153 -357 b 183 -338 170 -357 183 -351 b 109 -22 183 -323 109 -22 b 91 0 108 -16 105 0 b 72 -22 76 0 73 -16 b 0 -338 72 -22 0 -323 b 20 -357 0 -351 12 -357 z',\n },\n articMarcatoAbove: {\n x_min: 1,\n x_max: 296,\n y_min: 0,\n y_max: 253,\n ha: 253,\n o: 'm 36 10 l 173 239 l 298 10 b 317 0 301 4 310 0 l 408 0 b 426 20 419 0 426 9 b 425 30 426 23 426 27 l 230 356 b 213 364 226 361 222 363 b 196 356 207 364 199 361 l 1 30 z',\n },\n articMarcatoBelow: {\n x_min: 0,\n x_max: 295,\n y_min: -253,\n y_max: 0,\n ha: 253,\n o: 'm 390 -10 l 253 -239 l 128 -10 b 109 0 125 -4 117 0 l 19 0 b 0 -20 7 0 0 -9 b 1 -30 0 -23 0 -27 l 196 -356 b 213 -364 200 -361 204 -363 b 230 -356 219 -364 228 -361 l 425 -30 z',\n },\n fermataAbove: {\n x_min: 0,\n x_max: 622,\n y_min: 0,\n y_max: 368,\n ha: 368,\n o: 'm 778 374 b 448 530 642 521 523 530 b 120 374 373 530 255 521 b 0 65 49 297 0 143 b 20 19 0 37 6 19 b 161 265 60 19 40 143 b 445 373 268 372 410 373 b 448 373 446 373 446 373 b 451 373 449 373 449 373 b 734 265 485 373 628 372 b 876 19 855 143 835 19 b 896 65 890 19 896 36 b 778 374 896 143 848 298 z m 348 99 b 448 0 348 45 393 0 b 547 99 503 0 547 45 b 448 199 547 154 503 199 b 348 99 393 199 348 154 z',\n },\n fermataBelow: {\n x_min: 0,\n x_max: 622,\n y_min: -368,\n y_max: 0,\n ha: 368,\n o: 'm 778 -374 b 896 -65 848 -298 896 -143 b 876 -19 896 -36 890 -19 b 734 -265 835 -19 855 -143 b 451 -373 628 -372 485 -373 b 448 -373 449 -373 449 -373 b 445 -373 446 -373 446 -373 b 161 -265 410 -373 268 -372 b 20 -19 40 -143 60 -19 b 0 -65 6 -19 0 -37 b 120 -374 0 -143 49 -297 b 448 -530 255 -521 373 -530 b 778 -374 523 -530 642 -521 z m 348 -99 b 448 -199 348 -154 393 -199 b 547 -99 503 -199 547 -154 b 448 0 547 -45 503 0 b 348 -99 393 0 348 -45 z',\n },\n fermataLongAbove: {\n x_min: 0,\n x_max: 623,\n y_min: 0,\n y_max: 368,\n ha: 368,\n o: 'm 40 0 l 40 399 l 858 399 l 858 0 l 897 0 l 897 510 b 877 530 897 521 888 530 l 20 530 b 0 510 9 530 0 521 l 0 0 z m 350 148 b 449 49 350 94 395 49 b 547 148 504 49 547 94 b 449 248 547 203 504 248 b 350 148 395 248 350 203 z',\n },\n fermataLongBelow: {\n x_min: 0,\n x_max: 623,\n y_min: -368,\n y_max: 0,\n ha: 368,\n o: 'm 0 -510 b 20 -530 0 -521 9 -530 l 877 -530 b 897 -510 888 -530 897 -521 l 897 0 l 858 0 l 858 -399 l 40 -399 l 40 0 l 0 0 z m 350 -148 b 449 -248 350 -203 395 -248 b 547 -148 504 -248 547 -203 b 449 -49 547 -94 504 -49 b 350 -148 395 -49 350 -94 z',\n },\n fermataVeryLongAbove: {\n x_min: 0,\n x_max: 842,\n y_min: 0,\n y_max: 549,\n ha: 549,\n o: 'm 276 0 l 276 399 l 936 399 l 936 0 l 976 0 l 976 510 b 956 530 976 521 968 530 l 256 530 b 236 510 245 530 236 521 l 236 0 z m 507 148 b 606 49 507 94 552 49 b 706 148 661 49 706 94 b 606 248 706 203 661 248 b 507 148 552 248 507 203 z m 40 0 l 40 661 l 1172 661 l 1172 0 l 1212 0 l 1212 772 b 1192 791 1212 783 1204 791 l 20 791 b 0 772 9 791 0 783 l 0 0 z',\n },\n fermataVeryLongBelow: {\n x_min: 0,\n x_max: 842,\n y_min: -549,\n y_max: 0,\n ha: 549,\n o: 'm 236 -510 b 256 -530 236 -521 245 -530 l 956 -530 b 976 -510 968 -530 976 -521 l 976 0 l 936 0 l 936 -399 l 276 -399 l 276 0 l 236 0 z m 507 -148 b 606 -248 507 -203 552 -248 b 706 -148 661 -248 706 -203 b 606 -49 706 -94 661 -49 b 507 -148 552 -49 507 -94 z m 0 -772 b 20 -791 0 -783 9 -791 l 1192 -791 b 1212 -772 1204 -791 1212 -783 l 1212 0 l 1172 0 l 1172 -661 l 40 -661 l 40 0 l 0 0 z',\n },\n fermataShortAbove: {\n x_min: 0,\n x_max: 642,\n y_min: 0,\n y_max: 454,\n ha: 454,\n o: 'm 363 148 b 462 49 363 94 408 49 b 562 148 517 49 562 94 b 462 248 562 203 517 248 b 363 148 408 248 363 203 z m 477 645 b 461 654 474 649 467 654 b 445 645 455 654 448 649 l 4 32 b 0 20 3 29 0 23 b 20 0 0 9 9 0 l 82 0 b 98 9 88 0 95 4 l 461 514 l 827 9 b 842 0 829 4 837 0 l 904 0 b 924 20 916 0 924 9 b 920 32 924 23 922 29 z',\n },\n fermataShortBelow: {\n x_min: 0,\n x_max: 642,\n y_min: -454,\n y_max: 0,\n ha: 454,\n o: 'm 363 -148 b 462 -248 363 -203 408 -248 b 562 -148 517 -248 562 -203 b 462 -49 562 -94 517 -49 b 363 -148 408 -49 363 -94 z m 920 -32 b 924 -20 922 -29 924 -23 b 904 0 924 -9 916 0 l 842 0 b 827 -9 837 0 829 -4 l 461 -514 l 98 -9 b 82 0 95 -4 88 0 l 20 0 b 0 -20 9 0 0 -9 b 4 -32 0 -23 3 -29 l 445 -645 b 461 -654 448 -649 455 -654 b 477 -645 467 -654 474 -649 z',\n },\n breathMarkComma: {\n x_min: 0,\n x_max: 191,\n y_min: 0,\n y_max: 321,\n ha: 321,\n o: 'm 82 0 b 275 285 215 92 275 183 b 115 462 275 396 212 462 b 0 356 46 462 0 413 b 115 246 0 294 53 246 b 181 258 157 246 177 256 b 192 261 184 259 189 261 b 199 259 194 261 196 261 b 203 245 202 258 203 253 b 48 43 203 183 147 112 z',\n },\n caesura: {\n x_min: 0,\n x_max: 380,\n y_min: 0,\n y_max: 490,\n ha: 490,\n o: 'm 285 706 b 285 706 285 706 285 706 b 271 696 279 706 274 701 l 1 22 b 0 16 0 20 0 17 b 16 0 0 7 7 0 l 50 0 b 65 10 56 0 62 4 l 334 684 b 336 690 334 685 336 688 b 320 706 336 698 328 706 z m 213 22 b 212 16 213 20 212 17 b 228 0 212 7 219 0 l 262 0 b 276 10 268 0 274 4 l 546 684 b 547 690 547 685 547 688 b 531 706 547 698 540 706 l 497 706 b 482 696 491 706 485 701 z',\n },\n caesuraCurved: {\n x_min: 0,\n x_max: 368,\n y_min: 0,\n y_max: 491,\n ha: 491,\n o: 'm 262 707 b 245 693 253 707 246 701 b 1 26 233 603 177 348 b 0 17 0 23 0 20 b 16 0 0 9 6 0 b 30 7 22 0 27 3 b 318 687 259 341 304 602 b 318 690 318 688 318 688 b 301 707 318 698 310 707 z m 474 707 b 458 693 465 707 459 701 b 213 26 446 603 389 348 b 212 19 212 23 212 20 b 229 0 212 9 219 0 b 243 7 235 0 240 3 b 530 687 472 341 516 602 b 530 690 530 688 530 688 b 514 707 530 698 523 707 z',\n },\n restMaxima: {\n x_min: 0,\n x_max: 450,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 158 -360 b 180 -338 170 -360 180 -350 l 180 338 b 158 360 180 350 170 360 l 22 360 b 0 338 9 360 0 350 l 0 -338 b 22 -360 0 -350 9 -360 z m 626 -360 b 648 -338 638 -360 648 -350 l 648 338 b 626 360 648 350 638 360 l 490 360 b 468 338 477 360 468 350 l 468 -338 b 490 -360 468 -350 477 -360 z',\n },\n restDoubleWhole: {\n x_min: 0,\n x_max: 125,\n y_min: -11,\n y_max: 262,\n ha: 273,\n o: 'm 158 -16 b 180 6 171 -16 180 -6 l 180 356 b 158 377 180 367 171 377 l 22 377 b 0 356 10 377 0 367 l 0 6 b 22 -16 0 -6 10 -16 z',\n },\n restWhole: {\n x_min: 0,\n x_max: 325,\n y_min: -131,\n y_max: 5,\n ha: 136,\n o: 'm 20 7 b 0 -13 9 7 0 -1 l 0 -168 b 20 -189 0 -180 9 -189 l 448 -189 b 468 -168 459 -189 468 -180 l 468 -13 b 448 7 468 -1 459 7 z',\n },\n restWholeLegerLine: {\n x_min: -139,\n x_max: 464,\n y_min: -122,\n y_max: 14,\n ha: 136,\n o: 'm 449 20 l 19 20 l -200 20 l -200 -20 l 0 -20 l 0 -156 b 19 -176 0 -167 7 -176 l 449 -176 b 468 -156 461 -176 468 -167 l 468 -20 l 668 -20 l 668 20 z',\n },\n restHalf: {\n x_min: 0,\n x_max: 325,\n y_min: -4,\n y_max: 132,\n ha: 136,\n o: 'm 0 14 b 20 -6 0 -6 0 -6 l 448 -6 b 468 14 468 -6 468 -6 l 468 170 b 448 190 468 190 468 190 l 20 190 b 0 170 0 190 0 190 z',\n },\n restHalfLegerLine: {\n x_min: -139,\n x_max: 464,\n y_min: -14,\n y_max: 122,\n ha: 136,\n o: 'm 668 20 l 468 20 l 468 156 b 449 176 468 167 461 176 l 19 176 b 0 156 7 176 0 167 l 0 20 l -200 20 l -200 -20 l 19 -20 l 449 -20 l 668 -20 z',\n },\n restQuarter: {\n x_min: 0,\n x_max: 235,\n y_min: -331,\n y_max: 401,\n ha: 732,\n o: 'm 331 -239 b 323 -229 330 -238 327 -235 l 157 -24 b 154 -16 156 -23 154 -19 b 157 -3 154 -12 156 -6 l 304 219 b 307 229 305 222 307 226 l 307 242 b 302 253 307 246 305 251 l 69 569 b 55 577 69 569 63 577 b 43 573 50 577 48 576 b 36 559 37 569 36 563 b 40 543 36 550 40 543 l 150 393 b 154 376 153 389 154 383 b 150 359 154 370 153 363 l 4 137 b 1 125 3 134 1 128 l 1 112 b 6 101 1 108 3 104 l 167 -99 b 131 -95 161 -98 148 -95 b 49 -124 107 -95 75 -101 b 0 -229 17 -153 0 -193 b 16 -285 0 -249 4 -269 b 154 -468 46 -331 154 -468 b 171 -477 154 -468 161 -477 b 180 -474 174 -477 177 -477 b 190 -456 187 -468 190 -462 b 186 -444 190 -451 187 -446 b 135 -353 181 -436 135 -353 b 125 -307 135 -353 125 -333 b 150 -246 125 -288 131 -265 b 206 -223 167 -229 187 -223 b 252 -236 225 -223 240 -229 l 308 -272 b 320 -275 308 -272 314 -275 b 334 -268 325 -275 330 -274 b 338 -255 337 -262 338 -259 b 334 -243 338 -251 337 -248 z',\n },\n rest8th: {\n x_min: 0,\n x_max: 276,\n y_min: -255,\n y_max: 204,\n ha: 459,\n o: 'm 384 292 b 379 294 383 292 380 294 b 360 282 370 294 363 289 b 245 141 354 274 310 189 b 180 112 226 127 203 117 b 206 181 196 131 206 154 b 104 284 206 238 160 284 b 0 181 46 284 0 238 b 65 85 0 137 27 101 b 144 68 86 75 115 68 b 269 109 186 68 230 81 b 320 157 287 122 304 140 l 156 -356 l 194 -367 l 396 268 b 397 275 397 269 397 272 b 384 292 397 282 393 288 z',\n },\n rest16th: {\n x_min: 1,\n x_max: 344,\n y_min: -507,\n y_max: 204,\n ha: 711,\n o: 'm 494 268 b 495 275 495 271 495 272 b 482 292 495 282 491 289 b 475 294 480 294 477 294 b 456 282 467 294 461 289 b 285 115 422 213 364 135 b 310 184 302 135 310 158 b 203 284 310 240 259 284 b 104 177 145 281 104 233 b 171 84 105 134 134 98 b 252 69 197 72 225 69 b 423 164 324 72 380 108 l 423 164 l 359 -65 b 183 -245 338 -132 256 -226 b 207 -176 199 -225 207 -200 b 102 -76 207 -118 158 -76 b 1 -183 45 -76 1 -125 b 69 -275 1 -226 32 -262 b 150 -289 96 -287 121 -289 b 321 -194 222 -287 278 -251 l 174 -720 l 213 -730 z',\n },\n rest32nd: {\n x_min: 0,\n x_max: 391,\n y_min: -507,\n y_max: 460,\n ha: 967,\n o: 'm 217 71 b 408 171 348 71 402 161 l 354 -46 b 184 -240 323 -121 268 -217 b 204 -171 200 -220 204 -197 b 102 -76 204 -114 158 -76 b 0 -177 46 -76 0 -120 b 140 -288 0 -252 63 -288 b 320 -186 216 -288 276 -246 l 189 -721 l 228 -730 l 562 638 b 563 644 563 639 563 642 b 549 661 563 652 557 658 b 543 662 547 662 544 662 b 524 649 534 662 528 657 b 361 487 497 589 431 504 b 383 556 379 508 383 530 b 282 652 383 611 338 652 b 179 549 226 652 179 609 b 249 451 179 505 210 464 b 311 439 268 444 288 441 b 330 441 317 439 323 439 b 498 541 400 445 458 485 l 442 310 b 271 117 413 238 351 137 b 292 186 288 138 292 160 b 189 282 292 243 245 282 b 88 180 132 282 88 238 b 217 71 88 112 153 71 z',\n },\n rest64th: {\n x_min: 0,\n x_max: 423,\n y_min: -758,\n y_max: 464,\n ha: 1222,\n o: 'm 207 -1083 l 246 -1092 b 608 644 282 -919 605 634 b 609 649 608 647 609 648 b 595 667 609 658 603 665 b 589 668 593 668 592 668 b 569 654 577 668 575 664 b 474 521 563 644 530 573 b 412 487 456 505 435 494 b 432 546 425 503 432 526 b 328 649 432 606 382 649 b 226 546 275 649 226 608 b 360 438 226 465 300 438 b 501 492 419 438 474 465 b 546 546 527 518 533 526 l 547 547 l 500 323 b 399 161 491 300 452 209 b 337 125 382 144 360 132 b 357 184 350 143 357 134 b 253 288 357 235 317 288 b 151 187 190 288 151 236 b 285 76 151 138 183 76 b 471 184 412 76 465 173 l 423 -45 b 324 -204 413 -69 374 -158 b 262 -240 305 -222 284 -233 b 281 -180 274 -223 281 -212 b 177 -78 281 -147 258 -78 b 75 -180 98 -78 75 -153 b 209 -289 75 -207 88 -289 b 395 -181 330 -289 389 -193 l 350 -397 b 248 -564 337 -449 285 -530 b 186 -599 229 -580 207 -592 b 204 -540 197 -583 204 -563 b 102 -438 204 -501 174 -438 b 0 -540 29 -438 0 -501 b 132 -648 0 -579 24 -648 b 320 -540 266 -648 315 -552 z',\n },\n rest128th: {\n x_min: -1,\n x_max: 475,\n y_min: -759,\n y_max: 717,\n ha: 1476,\n o: 'm 677 1028 b 664 1032 672 1031 667 1032 b 644 1018 654 1032 649 1028 b 549 886 638 1008 605 937 b 487 851 531 870 510 858 b 507 910 500 868 507 890 b 403 1014 507 971 456 1014 b 301 910 350 1014 301 972 b 435 802 301 829 374 802 b 576 857 494 802 549 829 b 621 910 602 883 608 890 l 622 912 l 575 687 b 474 526 566 664 527 573 b 412 490 456 508 435 497 b 432 549 425 507 432 498 b 328 652 432 599 392 652 b 226 552 265 652 226 600 b 360 441 226 503 258 441 b 546 549 487 441 540 537 l 498 320 b 399 160 488 295 449 207 b 337 125 380 143 359 131 b 356 184 348 141 356 153 b 252 287 356 217 333 287 b 150 184 173 287 150 212 b 284 76 150 157 163 76 b 469 183 405 76 464 171 l 425 -33 b 323 -200 412 -85 360 -166 b 261 -235 304 -216 282 -228 b 279 -176 272 -219 279 -199 b 177 -72 279 -137 249 -72 b 75 -176 104 -72 75 -137 b 207 -284 75 -215 99 -284 b 395 -176 341 -284 390 -187 l 347 -409 b 248 -566 330 -461 282 -533 b 186 -600 229 -582 207 -593 b 204 -541 197 -583 204 -564 b 102 -438 204 -501 174 -438 b -1 -541 29 -438 -1 -503 b 132 -649 -1 -580 24 -649 b 318 -546 256 -649 307 -567 l 206 -1084 l 245 -1093 b 683 1008 281 -920 680 996 b 684 1015 683 1009 684 1014 b 677 1028 684 1020 683 1024 z',\n },\n dynamicPiano: {\n x_min: -95,\n x_max: 317,\n y_min: -163,\n y_max: 263,\n ha: 426,\n o: 'm 186 -235 l 186 -206 l 78 -206 l 161 26 l 166 16 b 229 -29 166 16 180 -16 b 256 -32 238 -32 248 -32 b 445 166 336 -32 415 49 b 456 246 454 197 456 223 b 374 373 456 343 396 367 b 356 376 369 374 361 376 b 242 314 311 376 266 338 l 238 310 l 235 315 b 154 377 235 315 204 370 b 138 379 148 377 144 379 b 0 226 91 379 42 346 l 26 213 b 63 301 32 232 46 278 b 102 328 72 314 89 325 b 108 328 104 328 107 328 b 120 325 112 328 117 327 b 127 304 125 321 127 314 b 94 192 127 269 101 206 l -49 -206 l -137 -206 l -137 -235 z m 226 17 b 215 19 223 17 217 17 b 187 81 193 27 187 53 b 204 180 187 125 203 177 b 297 317 217 235 259 295 b 324 325 307 323 315 325 b 336 324 328 325 333 325 b 350 311 341 323 347 317 b 356 278 354 302 356 291 b 333 161 356 239 341 187 b 242 20 314 105 278 37 b 226 17 238 17 230 17 z',\n },\n dynamicMezzo: {\n x_min: -7,\n x_max: 374,\n y_min: -2,\n y_max: 251,\n ha: 253,\n o: 'm 488 63 b 467 48 481 50 474 48 b 459 49 464 48 462 48 b 449 65 452 52 449 58 b 461 112 449 76 455 94 b 474 157 464 121 471 150 b 492 281 482 183 492 242 b 491 301 492 288 492 295 b 436 359 484 340 467 359 b 340 307 399 359 359 331 l 337 301 l 334 308 b 272 359 334 308 311 359 b 177 310 232 359 202 343 l 173 304 l 171 311 b 117 360 171 311 153 353 b 96 361 109 361 102 361 b 29 328 60 361 39 340 b -10 252 20 318 0 284 l 12 240 b 68 318 12 240 36 318 b 75 317 71 318 72 318 b 86 295 84 314 86 307 b 59 194 86 275 75 240 b 1 20 59 193 6 33 b 0 13 1 17 0 16 b 3 4 0 10 1 7 b 14 -1 6 1 9 -1 l 36 -1 b 91 -1 58 -1 86 -1 b 107 22 94 -1 101 -1 b 127 99 114 53 121 79 b 235 310 132 121 186 310 b 243 305 238 310 242 308 b 248 289 246 302 248 297 b 216 160 248 265 233 219 b 173 22 194 89 173 22 b 173 16 173 20 173 19 b 176 3 173 12 173 6 b 187 -1 179 0 183 -1 l 266 -1 b 282 16 272 -1 279 0 b 284 26 282 17 284 22 b 392 302 312 228 359 288 b 396 304 393 302 395 304 l 397 304 b 400 302 399 304 399 302 b 408 289 403 301 408 297 b 369 140 408 275 399 217 b 356 75 360 117 356 95 b 370 23 356 55 360 37 b 428 -3 382 6 408 -3 b 536 99 492 -3 517 49 b 539 108 537 102 537 105 l 514 120 b 488 63 514 120 498 81 z',\n },\n dynamicForte: {\n x_min: -137,\n x_max: 334,\n y_min: -193,\n y_max: 421,\n ha: 614,\n o: 'm -122 -86 b -197 -161 -161 -86 -197 -122 b -81 -278 -197 -236 -147 -278 b 35 -228 -35 -278 -1 -264 b 202 173 98 -164 167 50 b 238 297 215 219 228 264 l 238 300 l 341 300 b 356 314 350 300 356 305 l 356 346 b 341 360 356 354 350 360 l 256 360 l 256 364 b 330 554 297 511 308 537 b 359 566 341 563 351 566 b 366 564 361 566 364 564 b 380 553 373 563 377 559 b 382 546 382 550 382 549 b 373 528 382 539 379 531 b 351 478 359 517 351 498 b 354 458 351 471 353 465 b 384 426 359 445 370 432 b 410 420 390 423 400 420 b 445 431 420 420 432 423 b 478 472 459 438 474 456 b 481 497 481 480 481 488 b 467 550 481 514 477 533 b 376 605 455 572 422 598 b 351 606 369 606 360 606 b 225 553 317 606 272 595 b 122 363 187 520 154 456 l 122 360 l 13 360 b -1 346 4 360 -1 354 l -1 314 b 13 300 -1 305 4 300 l 102 300 l 102 294 b 66 140 88 236 76 187 b 24 -35 55 86 42 32 l 20 -52 b -53 -235 -10 -170 -19 -212 b -78 -242 -60 -239 -69 -242 b -98 -235 -85 -242 -92 -239 b -105 -222 -102 -232 -105 -228 b -105 -219 -105 -220 -105 -220 b -94 -204 -104 -213 -101 -207 b -58 -144 -66 -193 -58 -167 b -122 -86 -58 -124 -71 -86 z',\n },\n dynamicRinforzando: {\n x_min: -12,\n x_max: 230,\n y_min: 0,\n y_max: 254,\n ha: 254,\n o: 'm 272 364 b 200 341 239 364 212 348 b 168 310 187 333 177 321 l 164 304 b 109 363 164 304 151 353 b 88 366 102 364 95 366 b 22 331 52 366 32 343 b -17 255 13 321 -7 287 l 4 243 b 60 321 4 243 29 321 b 68 320 63 321 65 321 b 78 297 75 317 78 308 b 49 180 78 272 65 230 l 0 23 b 0 17 0 22 0 20 b 3 4 0 13 0 7 b 14 0 6 1 10 0 l 94 0 b 109 17 99 0 107 1 b 111 27 109 19 111 23 b 209 302 140 230 186 279 b 225 311 215 308 220 311 b 229 310 226 311 228 311 b 233 304 233 307 233 305 b 233 301 233 302 233 301 b 216 268 220 291 216 279 b 225 243 216 259 219 249 b 262 229 235 232 249 229 b 304 242 279 229 295 235 b 331 308 320 255 331 275 b 272 364 331 341 304 364 z',\n },\n dynamicSforzando: {\n x_min: 0,\n x_max: 208,\n y_min: -5,\n y_max: 263,\n ha: 268,\n o: 'm 242 328 b 217 289 222 317 217 300 b 258 249 217 274 230 249 b 298 284 285 249 295 269 b 300 295 300 287 300 291 b 189 379 300 328 272 379 b 49 259 92 379 49 315 b 99 173 49 229 59 196 b 164 137 117 163 140 151 b 194 88 189 122 194 102 b 124 24 194 73 177 24 b 72 46 82 24 72 39 b 73 49 72 48 72 49 b 96 96 78 52 96 62 b 50 150 96 134 72 150 b 0 91 29 150 0 134 b 124 -7 0 26 49 -7 b 282 111 199 -7 282 24 b 171 239 282 197 207 219 b 128 292 135 259 128 268 b 193 347 128 317 156 347 b 242 328 230 347 242 328 z',\n },\n dynamicZ: {\n x_min: -42,\n x_max: 239,\n y_min: -1,\n y_max: 258,\n ha: 259,\n o: 'm 229 292 b 235 288 232 292 233 291 b 236 284 236 285 236 285 b 233 278 236 281 235 279 b -42 55 232 276 -4 85 b -60 24 -56 43 -60 33 b -50 4 -60 12 -50 4 b -35 0 -45 1 -40 0 b 9 29 -14 0 1 19 b 50 69 17 43 26 69 b 89 35 75 69 81 50 b 170 -1 104 10 137 -1 b 243 22 197 -1 223 6 b 304 147 288 56 304 118 b 264 196 304 176 294 196 b 226 156 239 196 226 174 b 251 117 226 128 249 122 b 251 108 251 114 251 111 b 243 79 251 98 249 88 b 212 56 236 68 223 56 b 202 59 209 56 204 56 b 163 92 194 63 186 75 b 108 122 140 109 114 120 b 105 125 105 124 105 124 b 107 128 105 127 107 128 b 312 304 107 128 302 294 b 341 340 324 315 336 327 b 344 347 343 341 344 346 l 344 356 b 333 369 343 367 336 369 l 331 369 l 262 363 b 217 361 245 361 230 361 b 156 366 193 361 174 363 b 114 372 147 367 125 372 b 107 370 111 372 108 370 b 86 344 98 367 89 360 b 37 222 72 265 42 232 b 37 219 37 220 37 220 b 50 207 37 213 43 207 l 66 207 b 81 225 75 207 76 215 b 108 291 85 235 105 285 b 118 297 111 297 112 297 b 167 289 125 295 144 291 b 181 289 171 289 177 289 b 229 292 202 289 222 291 z',\n },\n ornamentTrill: {\n x_min: -12,\n x_max: 383,\n y_min: 0,\n y_max: 383,\n ha: 383,\n o: 'm 464 396 b 376 359 408 396 376 359 l 364 370 b 346 377 357 377 346 377 l 197 377 l 246 528 b 246 531 246 530 246 531 b 226 552 246 541 236 552 l 213 552 b 199 544 209 552 202 547 b 124 482 196 541 130 487 b 117 471 118 478 117 471 b 84 377 117 471 102 431 l 3 377 b -17 360 -14 377 -17 360 l -17 341 b 3 324 -17 325 3 324 l 66 324 b 0 85 35 229 0 117 b 92 0 0 16 48 0 b 186 35 137 0 186 35 b 194 13 186 35 190 24 b 212 0 199 1 212 0 l 276 0 b 298 16 295 0 298 16 l 298 43 b 321 147 298 75 321 147 l 382 284 b 412 325 382 284 396 311 b 446 341 425 336 438 341 b 452 340 448 341 451 341 b 428 288 432 327 428 305 b 485 233 428 271 446 233 b 552 308 534 233 552 264 b 464 396 552 353 520 396 z m 222 143 b 147 78 210 104 171 78 b 137 79 143 78 140 78 b 121 115 125 85 121 99 b 137 190 121 148 137 190 l 180 324 l 275 324 b 279 320 279 324 279 320 b 222 143 279 320 235 187 z',\n },\n ornamentTurn: {\n x_min: 0,\n x_max: 456,\n y_min: 0,\n y_max: 232,\n ha: 232,\n o: 'm 527 334 b 442 269 488 334 442 312 b 501 204 442 228 468 204 b 570 226 533 204 540 226 b 613 164 598 226 613 204 l 613 163 b 550 98 613 127 586 98 b 448 143 508 98 485 109 l 328 255 l 298 284 b 174 334 262 317 223 334 b 0 170 92 334 0 278 b 131 0 0 68 58 0 b 215 65 170 0 215 22 b 156 130 215 107 189 130 b 86 108 124 130 117 108 b 43 170 59 108 43 130 l 43 171 b 108 236 43 207 72 236 b 209 192 150 236 171 225 l 328 79 l 360 50 b 482 0 396 17 433 0 b 657 164 564 0 657 56 b 527 334 657 266 600 334 z',\n },\n ornamentTurnSlash: {\n x_min: 0,\n x_max: 456,\n y_min: -80,\n y_max: 313,\n ha: 393,\n o: 'm 527 334 b 442 269 488 334 442 312 b 501 204 442 228 468 204 b 570 226 533 204 540 226 b 613 164 598 226 613 204 l 613 163 b 550 98 613 127 586 98 b 448 143 508 98 485 109 l 354 230 l 354 431 b 336 451 354 442 347 451 l 323 451 b 302 431 311 451 302 442 l 302 279 l 298 284 b 174 334 262 317 223 334 b 0 170 92 334 0 278 b 131 0 0 68 58 0 b 215 65 170 0 215 22 b 156 130 215 107 189 130 b 86 108 124 130 117 108 b 43 170 59 108 43 130 l 43 171 b 108 236 43 207 72 236 b 209 192 150 236 171 225 l 302 104 l 302 -96 b 323 -115 302 -108 311 -115 l 336 -115 b 354 -96 347 -115 354 -108 l 354 55 l 360 50 b 482 0 396 17 433 0 b 657 164 564 0 657 56 b 527 334 657 266 600 334 z',\n },\n ornamentMordent: {\n x_min: 0,\n x_max: 473,\n y_min: -77,\n y_max: 316,\n ha: 393,\n o: 'm 647 302 l 562 166 l 446 347 b 429 357 444 353 435 357 b 413 347 423 357 416 353 l 363 262 l 363 435 b 343 455 363 446 354 455 l 331 455 b 311 435 320 455 311 446 l 311 173 l 310 171 l 203 347 b 186 357 200 353 192 357 b 168 347 180 357 171 353 l 0 69 l 35 48 l 120 189 l 226 10 b 243 0 229 4 238 0 b 261 10 249 0 258 4 l 311 95 l 311 -91 b 331 -111 311 -102 320 -111 l 343 -111 b 363 -91 354 -111 363 -102 l 363 184 l 366 189 l 478 10 b 495 0 481 4 490 0 b 513 10 501 0 510 4 l 681 281 z',\n },\n ornamentShortTrill: {\n x_min: 0,\n x_max: 473,\n y_min: 0,\n y_max: 248,\n ha: 248,\n o: 'm 647 302 l 562 166 l 446 347 b 431 357 444 353 436 357 b 413 347 425 357 416 353 l 310 171 l 203 347 b 186 357 200 353 192 357 b 168 347 180 357 173 353 l 0 69 l 35 48 l 120 189 l 226 10 b 243 0 229 4 238 0 b 261 10 249 0 258 4 l 366 189 l 478 9 b 495 0 481 3 490 0 b 513 10 501 0 510 4 l 681 281 z',\n },\n ornamentTremblement: {\n x_min: 0,\n x_max: 654,\n y_min: 0,\n y_max: 248,\n ha: 248,\n o: 'm 907 302 l 822 166 l 708 348 b 691 357 704 354 701 357 b 674 347 685 357 677 353 l 648 302 l 563 166 l 449 348 b 432 357 446 354 438 357 b 415 347 426 357 418 353 l 415 346 l 311 171 l 203 348 b 186 357 200 354 192 357 b 168 348 177 357 171 354 l 168 347 l 0 69 l 35 48 l 120 190 l 226 10 b 243 0 229 4 238 0 l 245 0 b 261 10 251 0 258 4 l 367 189 l 480 10 b 497 0 482 4 491 0 b 513 10 503 0 510 4 l 625 192 l 739 10 b 756 0 742 4 750 0 b 772 10 762 0 769 4 l 942 282 z',\n },\n ornamentPrecompAppoggTrill: {\n x_min: 0,\n x_max: 680,\n y_min: 0,\n y_max: 388,\n ha: 388,\n o: 'm 860 170 l 746 353 b 729 361 743 359 737 361 b 713 351 723 361 716 357 l 685 307 l 600 170 l 487 353 b 481 359 485 356 484 357 b 469 361 478 360 472 361 b 452 351 464 361 455 357 l 348 176 l 240 353 b 223 361 238 359 229 361 b 206 353 215 361 209 359 l 40 76 l 40 541 b 20 559 39 552 30 559 b 0 541 10 559 1 552 l 0 26 b 19 1 0 16 9 4 b 26 0 20 1 24 0 b 48 13 35 0 43 6 l 72 52 l 157 194 l 265 14 b 282 4 268 9 276 4 b 298 14 288 4 295 9 l 405 193 l 517 14 b 534 4 520 9 528 4 b 550 14 540 4 547 9 l 664 196 l 776 14 b 793 4 779 9 788 4 b 811 14 799 4 808 9 l 979 287 l 945 307 z',\n },\n ornamentPrecompSlideTrillDAnglebert: {\n x_min: 0,\n x_max: 662,\n y_min: -158,\n y_max: 248,\n ha: 406,\n o: 'm 834 166 l 720 348 b 704 357 717 354 713 357 b 687 348 697 357 690 353 l 661 302 l 660 302 l 575 166 l 461 348 b 455 354 459 350 456 353 b 444 357 452 356 448 357 b 428 347 438 357 431 353 l 323 171 l 215 347 b 213 350 215 348 215 350 b 213 350 213 350 213 350 l 213 351 l 212 351 l 212 353 l 210 353 l 210 353 l 209 354 b 207 354 209 354 207 354 b 197 357 206 356 200 357 b 197 357 197 357 197 357 b 194 357 196 357 196 357 b 180 347 187 357 183 353 l 180 346 l 69 164 b 0 -50 23 88 0 17 b 49 -219 0 -108 16 -163 b 66 -228 52 -223 59 -228 b 76 -225 69 -228 73 -226 b 86 -207 82 -222 86 -215 b 84 -197 86 -204 85 -200 b 40 -52 55 -150 40 -102 b 104 143 40 10 62 73 l 131 190 l 239 10 b 256 0 242 4 249 0 l 256 0 b 272 10 262 0 269 4 l 379 189 l 491 10 b 508 0 494 4 503 0 b 508 0 508 0 508 0 l 508 0 b 526 10 514 0 521 4 l 638 192 l 750 10 b 768 0 755 4 762 0 l 768 0 b 785 10 773 0 782 4 l 785 10 l 953 282 l 919 302 z',\n },\n ornamentPrecompSlideTrillBach: {\n x_min: 0,\n x_max: 662,\n y_min: -158,\n y_max: 321,\n ha: 479,\n o: 'm 834 166 l 720 348 b 704 357 716 354 713 357 b 687 348 698 357 690 354 l 660 304 l 660 302 l 632 259 l 632 442 b 612 462 632 454 624 462 l 599 462 b 579 442 588 462 579 454 l 579 173 l 575 166 l 461 348 b 455 356 459 351 458 354 b 445 359 452 357 448 359 b 428 348 439 359 431 354 l 323 171 l 215 347 b 213 350 215 348 213 350 l 213 351 l 212 353 l 210 353 l 210 354 l 207 354 b 197 357 204 356 200 357 b 180 348 189 357 183 354 l 179 346 l 69 164 b 0 -49 23 88 0 19 b 49 -217 0 -107 17 -163 b 66 -228 52 -223 60 -228 b 76 -225 69 -228 73 -226 b 86 -207 82 -222 86 -213 b 84 -197 86 -204 85 -200 b 42 -50 56 -148 42 -101 b 104 144 42 12 62 75 l 131 190 l 239 10 b 256 0 242 4 251 0 b 274 10 262 0 271 4 l 379 190 l 491 10 b 508 0 494 4 503 0 b 526 10 514 0 523 4 l 579 98 l 579 -84 b 599 -104 579 -95 588 -104 l 612 -104 b 632 -84 624 -104 632 -95 l 632 183 l 638 192 l 750 10 b 768 0 753 4 762 0 b 785 10 773 0 782 4 l 953 282 l 919 302 z',\n },\n ornamentPrecompTrillSuffixDandrieu: {\n x_min: 0,\n x_max: 662,\n y_min: 0,\n y_max: 406,\n ha: 406,\n o: 'm 904 575 b 887 585 901 580 893 585 b 877 582 884 585 880 583 b 867 564 871 579 867 570 b 870 554 867 562 868 557 b 912 408 897 505 912 458 b 850 213 912 346 891 282 l 822 167 l 714 348 b 697 357 711 354 703 357 b 680 348 691 357 683 354 l 575 168 l 462 348 b 445 357 459 354 451 357 b 428 348 439 357 431 354 l 315 167 l 203 348 b 186 357 200 354 192 357 b 168 348 180 357 171 354 l 0 76 l 35 55 l 120 192 l 233 10 b 249 0 238 4 240 0 b 266 10 255 0 264 4 l 294 55 l 379 192 l 492 9 b 498 3 494 6 495 4 b 508 0 501 1 505 0 b 526 10 514 0 523 4 l 631 186 l 737 13 b 746 3 739 10 743 4 b 756 0 749 1 753 0 b 773 9 762 0 770 3 l 884 193 b 953 406 930 269 953 338 b 904 575 953 464 936 520 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefix: {\n x_min: 0,\n x_max: 857,\n y_min: 0,\n y_max: 248,\n ha: 248,\n o: 'm 383 140 b 413 189 399 166 412 187 b 520 10 423 171 516 16 b 537 0 523 4 530 0 b 554 10 543 0 550 4 b 660 189 557 16 649 171 b 772 10 671 173 766 19 b 791 0 778 1 785 0 b 806 10 796 0 802 4 b 919 192 809 16 907 174 l 1031 10 b 1048 0 1035 4 1043 0 l 1048 0 b 1066 10 1054 1 1063 4 l 1066 10 l 1234 282 l 1200 302 l 1115 166 l 1002 348 b 985 357 998 354 994 357 b 968 348 978 357 971 353 l 855 166 b 742 348 845 183 746 341 b 726 357 737 354 732 357 b 708 348 719 357 711 354 b 603 171 704 341 613 189 b 495 348 593 189 498 343 b 478 357 492 353 487 357 b 461 348 469 357 464 353 b 357 173 459 346 393 235 b 213 79 320 111 284 79 b 66 176 143 79 95 112 b 40 279 43 228 40 275 b 20 300 40 291 30 300 b 0 278 9 300 0 289 b 29 161 0 276 3 219 b 213 39 65 81 130 39 b 383 140 297 39 346 73 z',\n },\n ornamentPrecompTrillLowerSuffix: {\n x_min: 0,\n x_max: 565,\n y_min: -171,\n y_max: 249,\n ha: 420,\n o: 'm 347 168 l 235 348 b 217 359 230 354 226 359 b 200 348 209 359 203 353 b 3 30 197 344 6 35 b 0 20 0 26 0 24 b 22 0 0 9 10 0 b 37 9 27 0 35 3 l 151 192 b 265 10 161 174 262 13 b 281 0 268 6 272 0 b 298 10 289 0 295 3 l 403 186 l 511 10 b 528 0 516 4 521 0 b 546 10 537 0 541 4 l 698 265 b 775 22 744 202 775 112 b 700 -215 775 -60 752 -144 b 696 -226 697 -219 696 -222 b 704 -243 696 -232 700 -239 b 717 -246 708 -246 713 -246 b 733 -239 723 -246 729 -243 b 814 20 789 -160 814 -69 b 711 312 814 132 773 242 b 696 320 707 317 700 320 b 680 310 691 320 684 318 b 595 168 671 297 602 181 l 488 348 b 471 359 484 354 478 359 b 454 348 464 359 456 353 b 347 168 449 343 357 186 z',\n },\n brassMuteClosed: {\n x_min: 0,\n x_max: 312,\n y_min: 0,\n y_max: 312,\n ha: 312,\n o: 'm 22 256 b 0 225 7 256 0 240 b 22 193 0 209 7 193 l 193 193 l 193 22 b 225 0 193 7 209 0 b 256 22 240 0 256 7 l 256 193 l 428 193 b 449 225 442 193 449 209 b 428 256 449 240 442 256 l 256 256 l 256 428 b 225 449 256 442 240 449 b 193 428 209 449 193 442 l 193 256 z',\n },\n brassMuteOpen: {\n x_min: 0,\n x_max: 280,\n y_min: 0,\n y_max: 280,\n ha: 280,\n o: 'm 202 403 b 0 202 91 403 0 312 b 202 0 0 91 91 0 b 403 202 312 0 403 91 b 202 403 403 312 312 403 z m 202 40 b 40 202 112 40 40 112 b 202 363 40 291 112 363 b 363 202 291 363 363 291 b 202 40 363 112 291 40 z',\n },\n stringsDownBow: {\n x_min: 0,\n x_max: 315,\n y_min: 0,\n y_max: 293,\n ha: 293,\n o: 'm 40 0 l 40 291 l 413 291 l 413 0 l 454 0 l 454 402 b 433 422 454 413 445 422 l 20 422 b 0 402 9 422 0 402 l 0 0 z',\n },\n stringsUpBow: {\n x_min: 0,\n x_max: 262,\n y_min: 0,\n y_max: 343,\n ha: 343,\n o: 'm 374 485 b 357 494 372 490 363 494 l 337 494 b 318 481 330 494 321 488 l 189 118 l 59 481 b 40 494 56 488 48 494 l 20 494 b 0 474 9 494 0 485 b 1 467 0 472 1 468 l 170 13 b 189 0 173 6 181 0 b 207 13 196 0 204 6 l 376 467 b 377 474 376 468 377 472 b 374 485 377 477 376 482 z',\n },\n stringsHarmonic: {\n x_min: 0,\n x_max: 181,\n y_min: 0,\n y_max: 181,\n ha: 181,\n o: 'm 131 220 b 220 131 181 220 220 181 b 131 40 220 81 181 40 b 40 131 81 40 40 81 b 131 220 40 181 81 220 z m 131 261 b 0 131 59 261 0 203 b 131 0 0 59 59 0 b 261 131 203 0 261 59 b 131 261 261 203 203 261 z',\n },\n pluckedSnapPizzicatoAbove: {\n x_min: 0,\n x_max: 269,\n y_min: 0,\n y_max: 389,\n ha: 389,\n o: 'm 213 540 b 194 560 213 552 204 560 b 174 540 183 560 174 552 l 174 386 b 0 193 76 376 0 294 b 194 0 0 86 86 0 b 387 193 301 0 387 86 b 213 386 387 294 311 376 z m 194 40 b 40 193 109 40 40 109 b 174 346 40 271 98 336 l 174 193 b 194 173 174 183 183 173 b 213 193 204 173 213 183 l 213 346 b 347 193 289 336 347 271 b 194 40 347 109 278 40 z',\n },\n pluckedSnapPizzicatoBelow: {\n x_min: 0,\n x_max: 269,\n y_min: 0,\n y_max: 389,\n ha: 389,\n o: 'm 213 174 b 387 367 311 184 387 266 b 193 560 387 474 301 560 b 0 367 86 560 0 474 b 174 174 0 266 76 184 l 174 20 b 194 0 174 9 183 0 b 213 20 204 0 213 9 z m 194 520 b 347 367 278 520 347 452 b 213 215 347 289 289 225 l 213 367 b 194 387 213 377 204 387 b 174 367 183 387 174 377 l 174 215 b 40 367 98 225 40 289 b 194 520 40 452 109 520 z',\n },\n keyboardPedalPed: {\n x_min: 0,\n x_max: 981,\n y_min: -10,\n y_max: 545,\n ha: 555,\n o: 'm 1354 12 b 1413 78 1385 12 1413 42 b 1354 145 1413 115 1385 145 b 1293 78 1320 145 1293 115 b 1354 12 1293 42 1320 12 z m 1092 88 b 1080 86 1089 86 1084 86 b 1004 203 1037 86 1004 137 b 1107 376 1004 360 1097 374 b 1149 209 1129 336 1149 287 b 1092 88 1149 117 1130 95 z m 752 393 b 795 344 779 393 795 372 b 770 285 795 325 788 304 b 693 203 737 249 697 207 b 688 264 690 225 688 245 b 752 393 688 347 714 393 z m 245 507 b 220 544 245 533 235 544 b 217 544 219 544 219 544 b 186 510 206 546 192 537 b 143 464 179 478 163 464 b 134 465 140 464 137 464 b 102 516 117 467 102 487 b 141 613 102 541 112 576 b 347 721 212 711 315 721 b 356 721 351 721 354 721 b 275 560 344 701 297 616 b 259 495 274 557 259 528 b 272 452 259 480 264 465 b 373 323 297 416 350 354 b 387 284 382 311 387 298 b 350 222 387 265 376 245 b 230 140 301 180 252 154 b 128 39 215 130 128 92 b 134 12 128 30 130 22 b 173 -14 144 -7 157 -14 b 264 40 204 -14 243 17 b 333 98 281 58 302 98 b 389 39 357 98 373 60 b 478 -10 416 1 435 -10 b 622 96 527 -10 559 43 b 740 -10 626 86 667 -10 b 929 95 827 -10 917 85 b 1086 -12 950 37 1018 -12 b 1120 -7 1097 -12 1109 -10 b 1264 213 1212 17 1264 111 b 1263 248 1264 225 1263 236 b 815 664 1228 544 907 647 b 785 668 805 665 795 668 b 779 668 783 668 782 668 b 757 654 769 668 760 665 b 757 649 757 652 757 651 b 786 618 759 629 783 619 b 818 606 796 613 808 611 b 1071 435 1007 534 1066 445 b 909 181 930 386 909 256 b 910 141 909 164 909 151 b 786 78 899 127 844 78 b 708 151 726 78 710 144 b 799 230 711 154 742 181 b 864 350 845 271 864 312 b 757 456 864 410 815 456 b 599 222 644 456 599 328 b 609 141 599 192 602 164 b 563 104 608 140 595 122 b 540 98 556 99 549 98 b 459 140 513 98 480 118 b 397 184 413 189 399 184 b 475 279 403 189 454 226 b 482 311 480 289 482 300 b 449 410 482 359 452 405 b 361 533 442 419 383 503 b 354 560 356 541 354 550 b 386 651 353 588 372 622 b 429 713 405 693 426 710 b 557 592 521 688 557 628 b 549 569 557 582 554 573 b 523 559 540 562 531 559 b 459 592 495 559 469 583 b 425 613 451 600 438 613 b 409 608 419 613 415 612 b 399 586 402 602 399 595 b 399 583 397 585 399 585 b 409 552 399 573 405 562 b 541 458 441 487 492 458 b 608 480 564 458 588 465 b 648 572 632 497 648 531 b 429 778 648 649 589 749 b 351 785 402 782 376 785 b 0 507 130 785 0 615 b 127 366 0 399 68 366 b 245 507 186 366 245 429 z',\n },\n keyboardPedalUp: {\n x_min: 0,\n x_max: 473,\n y_min: 0,\n y_max: 473,\n ha: 473,\n o: 'm 99 99 b 164 69 120 79 143 69 b 199 82 177 69 190 73 b 210 114 206 89 210 102 b 206 137 210 122 209 130 b 200 160 203 145 200 154 b 210 179 200 166 203 171 l 245 215 b 285 213 255 225 272 219 l 287 213 l 288 212 b 318 183 301 206 318 196 l 318 134 b 291 102 318 112 308 112 b 258 58 274 92 258 76 b 340 0 258 26 294 0 b 423 58 386 0 423 26 b 390 102 423 76 408 92 b 361 134 373 112 361 112 l 361 183 b 392 212 361 196 379 206 b 395 213 393 212 393 213 b 436 215 408 219 426 225 l 471 179 b 480 161 478 171 480 167 b 474 137 480 154 477 147 b 471 115 472 130 471 122 b 482 82 471 102 474 91 b 517 69 491 73 504 69 b 582 99 539 69 562 79 b 612 164 602 120 612 143 b 599 199 612 177 608 190 b 567 210 592 206 579 210 b 544 206 559 210 552 209 b 521 200 536 203 528 200 b 501 210 514 200 508 203 l 467 245 b 468 285 456 255 462 272 l 468 287 b 469 288 468 287 469 287 b 498 318 475 301 485 318 l 547 318 b 579 291 569 318 569 308 b 624 258 589 274 605 258 b 681 340 655 258 681 294 b 624 423 681 386 655 423 b 579 390 605 423 589 408 b 547 361 569 373 569 361 l 498 361 b 469 392 485 361 475 379 b 468 395 469 393 468 393 b 467 436 462 408 456 426 l 501 471 b 520 480 508 478 514 480 b 544 474 527 480 534 477 b 566 471 552 472 559 471 b 599 482 579 471 590 474 b 612 516 608 491 612 503 b 582 580 612 536 602 560 b 516 612 562 600 537 612 b 482 599 503 612 491 608 b 471 566 474 590 471 579 b 474 544 471 559 472 552 b 480 520 477 534 480 527 b 471 501 480 514 478 508 l 436 467 b 395 468 426 456 408 462 b 392 469 393 468 393 469 b 361 498 379 475 361 485 l 361 547 b 390 579 361 569 373 569 b 423 624 408 589 423 605 b 340 681 423 655 386 681 b 258 624 294 681 258 655 b 291 579 258 605 274 589 b 318 547 308 569 318 569 l 318 498 b 288 469 318 485 301 475 l 287 468 l 285 468 b 245 467 272 462 255 456 l 210 501 b 200 521 203 508 200 514 b 206 544 200 528 203 536 b 210 567 209 552 210 559 b 199 599 210 579 206 592 b 164 612 190 608 177 612 b 99 582 143 612 120 602 b 69 517 79 562 69 539 b 82 482 69 504 73 491 b 115 471 91 474 102 471 b 137 474 122 471 130 472 b 161 480 147 477 154 480 b 180 471 167 480 173 478 l 215 436 b 213 395 225 426 219 408 b 212 392 213 393 212 393 b 183 361 206 379 196 361 l 134 361 b 102 390 112 361 112 373 b 58 423 92 408 76 423 b 0 340 26 423 0 386 b 58 258 0 294 26 258 b 102 291 76 258 92 274 b 134 318 112 308 112 318 l 183 318 b 212 288 196 318 206 301 b 213 287 212 287 213 288 l 213 285 b 215 245 219 272 225 255 l 179 210 b 160 200 171 203 166 200 b 137 206 154 200 145 203 b 114 210 130 209 122 210 b 82 199 102 210 89 206 b 69 164 73 190 69 177 b 99 99 69 143 79 120 z m 276 276 b 249 340 262 291 249 320 b 340 432 249 390 289 432 b 432 340 390 432 432 390 b 405 276 432 320 419 291 b 340 249 390 262 360 249 b 276 276 320 249 291 262 z',\n },\n wiggleArpeggiatoUp: {\n x_min: -22,\n x_max: 242,\n y_min: 0,\n y_max: 164,\n ha: 164,\n o: 'm 343 122 b 323 143 343 122 334 132 b 308 148 318 147 312 148 b 298 144 304 148 301 147 b 282 128 295 141 291 137 b 274 124 279 125 276 124 b 265 128 268 124 265 128 b 158 220 265 128 173 207 b 112 236 143 232 127 236 b 43 206 82 236 55 219 l -26 137 b -32 125 -30 132 -32 130 b -26 112 -32 118 -26 112 b -6 92 -26 112 -17 102 b 7 86 -1 88 3 86 b 17 91 12 86 14 88 b 33 107 20 94 24 98 b 42 111 36 109 39 111 b 52 107 48 111 52 107 b 158 16 52 107 144 29 b 204 0 174 4 190 0 b 274 30 235 0 262 17 l 343 99 b 348 111 347 104 348 108 b 343 122 348 118 343 122 z',\n },\n repeat1Bar: {\n x_min: 0,\n x_max: 481,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 693 -181 b 602 -91 693 -131 651 -91 b 511 -181 552 -91 511 -131 b 602 -272 511 -232 552 -272 b 693 -181 651 -272 693 -232 z',\n },\n repeat2Bars: {\n x_min: 0,\n x_max: 735,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 1058 -181 b 968 -91 1058 -131 1017 -91 b 877 -181 917 -91 877 -131 b 968 -272 877 -232 917 -272 b 1058 -181 1017 -272 1058 -232 z m 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 1058 360 l 877 360 l 366 -360 l 547 -360 z',\n },\n repeat4Bars: {\n x_min: 0,\n x_max: 1243,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 1058 360 l 877 360 l 366 -360 l 547 -360 z m 1424 360 l 1243 360 l 732 -360 l 913 -360 z m 1790 360 l 1608 360 l 1097 -360 l 1279 -360 z m 1790 -181 b 1699 -91 1790 -131 1748 -91 b 1608 -181 1649 -91 1608 -131 b 1699 -272 1608 -232 1649 -272 b 1790 -181 1748 -272 1790 -232 z',\n },\n repeatBarSlash: {\n x_min: 0,\n x_max: 481,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 693 360 l 511 360 l 0 -360 l 181 -360 z',\n },\n csymDiminished: {\n x_min: 0,\n x_max: 501,\n y_min: 0,\n y_max: 501,\n ha: 501,\n o: 'm 361 721 b 0 361 161 721 0 560 b 361 0 0 161 161 0 b 721 361 560 0 721 161 b 361 721 721 560 560 721 z m 557 164 b 361 82 505 111 435 82 b 164 164 287 82 216 111 b 82 361 111 216 82 287 b 164 557 82 436 111 505 b 361 639 216 611 287 639 b 557 557 436 639 505 611 b 639 361 611 505 639 436 b 557 164 639 287 609 216 z',\n },\n csymHalfDiminished: {\n x_min: -1,\n x_max: 502,\n y_min: -1,\n y_max: 502,\n ha: 503,\n o: 'm 723 684 l 684 723 l 596 634 b 361 721 533 688 451 721 b 0 361 161 721 0 560 b 88 125 0 271 33 189 l -1 36 l 36 -1 l 125 88 b 361 0 189 33 271 0 b 721 361 560 0 721 161 b 634 596 721 451 688 533 z m 82 361 b 164 557 82 436 111 505 b 361 639 216 611 287 639 b 537 576 426 639 488 616 l 145 184 b 82 361 105 233 82 295 z m 639 361 b 557 164 639 287 609 216 b 361 82 505 111 435 82 b 184 145 295 82 233 105 l 576 537 b 639 361 616 488 639 426 z',\n },\n csymAugmented: {\n x_min: 1,\n x_max: 321,\n y_min: 90,\n y_max: 410,\n ha: 320,\n o: 'm 462 400 l 272 400 l 272 590 l 192 590 l 192 400 l 1 400 l 1 320 l 192 320 l 192 130 l 272 130 l 272 320 l 462 320 z',\n },\n csymMajorSeventh: {\n x_min: 0,\n x_max: 500,\n y_min: 10,\n y_max: 490,\n ha: 480,\n o: 'm 360 528 l 585 96 l 135 96 z m 360 706 l 0 14 l 720 14 z',\n },\n accidentalNarrowReversedFlat: {\n x_min: 0,\n x_max: 160,\n y_min: -176,\n y_max: 452,\n ha: 628,\n o: 'm 0 84 b 101 -153 0 -26 65 -107 b 196 -249 153 -217 196 -249 b 206 -253 199 -251 202 -253 b 225 -235 216 -253 225 -245 l 230 632 b 212 651 230 642 222 651 l 199 651 b 180 632 189 651 180 642 l 184 204 b 125 217 184 204 171 217 b 0 84 53 217 0 173 z m 145 154 b 184 107 181 154 184 120 l 187 -179 b 114 -72 167 -158 132 -112 b 82 58 86 -13 82 36 b 145 154 82 79 82 154 z',\n },\n accidentalNarrowReversedFlatAndFlat: {\n x_min: 0,\n x_max: 416,\n y_min: -176,\n y_max: 452,\n ha: 628,\n o: 'm 462 217 b 330 174 374 217 338 181 l 334 632 b 315 651 334 642 325 651 l 302 651 b 284 632 292 651 284 642 l 289 -235 b 308 -253 289 -245 298 -253 b 320 -249 312 -253 317 -251 b 492 -138 320 -249 433 -194 b 599 84 534 -98 599 -26 b 462 217 599 173 534 217 z m 501 58 b 459 -72 501 36 498 -19 b 327 -179 431 -111 359 -164 l 330 85 l 330 91 b 422 154 330 125 359 154 b 501 58 503 154 501 79 z m 0 84 b 101 -153 0 -26 65 -107 b 196 -249 153 -217 196 -249 b 206 -253 199 -251 202 -253 b 225 -235 216 -253 225 -245 l 230 632 b 212 651 230 642 222 651 l 199 651 b 180 632 189 651 180 642 l 184 204 b 125 217 184 204 171 217 b 0 84 53 217 0 173 z m 145 154 b 184 107 181 154 184 120 l 187 -179 b 114 -72 167 -158 132 -112 b 82 58 86 -13 82 36 b 145 154 82 79 82 154 z',\n },\n },\n fontFamily: 'Leland',\n resolution: 1000,\n generatedOn: '2022-06-26T17:49:33.853Z',\n};\n","export const LelandMetrics = {\n name: 'Leland',\n smufl: true,\n stave: {\n padding: 12,\n endPaddingMax: 10,\n endPaddingMin: 5,\n unalignedNotePadding: 10,\n },\n accidental: {\n noteheadAccidentalPadding: 1,\n leftPadding: 2,\n accidentalSpacing: 3,\n },\n clef: {\n default: {\n point: 32,\n width: 26,\n },\n small: {\n point: 26,\n width: 20,\n },\n annotations: {\n '8va': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: -1.4,\n shiftX: 12,\n },\n },\n small: {\n point: 16,\n treble: {\n line: -0.2,\n shiftX: 8,\n },\n },\n },\n '8vb': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: 6,\n shiftX: 10,\n },\n bass: {\n line: 3.5,\n shiftX: 1,\n },\n },\n small: {\n point: 16,\n treble: {\n line: 5.3,\n shiftX: 6,\n },\n bass: {\n line: 3.1,\n shiftX: 0.5,\n },\n },\n },\n },\n // These may no longer be necessary\n lineCount: {\n '8': { point: 55, shiftY: 14 },\n '7': { point: 47, shiftY: 8 },\n '6': { point: 32, shiftY: 1 },\n '5': { point: 30, shiftY: -6 },\n '4': { point: 23, shiftY: -12 },\n },\n },\n parenthesis: {\n default: {\n point: 39,\n width: 7,\n },\n gracenote: {\n point: (39 * 3) / 5,\n width: 3,\n },\n },\n pedalMarking: {\n up: {\n point: 40,\n },\n down: {\n point: 34,\n },\n },\n // These are for numeric digits, such as in time signatures\n digits: {\n // used by timesig\n shiftLine: -1,\n point: 34,\n // used by tuplets\n tupletPoint: 22,\n shiftY: -6,\n },\n articulation: {\n articStaccatissimoAbove: {\n padding: 2,\n },\n articStaccatissimoBelow: {\n padding: 2,\n },\n },\n tremolo: {\n default: {\n point: 25,\n spacing: 5,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 11,\n offsetXStemDown: 1,\n },\n grace: {\n point: 18,\n spacing: 4,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 7,\n offsetXStemDown: 1,\n },\n },\n staveRepetition: {\n symbolText: {\n offsetX: 12,\n offsetY: 25,\n spacing: 5,\n },\n coda: {\n offsetY: 25,\n },\n segno: {\n offsetY: 10,\n },\n },\n // noteHead: {\n // },\n stem: {\n heightAdjustmentForFlag: -3,\n // These are stem (Y) offsets to the note heads. To shift the\n // noteheads (x-position) themselves, see glyphs.notehead.custom.\n noteHead: {\n noteheadTriangleUpHalf: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpBlack: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpWhole: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadXHalf: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXBlack: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXWhole: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadHalf: {\n offsetYBaseStemUp: -2.55,\n offsetYBaseStemDown: 2.65,\n },\n noteheadBlack: {\n offsetYBaseStemUp: -2,\n offsetYBaseStemDown: 2,\n },\n noteheadSquareWhite: {\n offsetYBaseStemDown: -5,\n offsetYBaseStemUp: 5,\n },\n },\n },\n // Values under here are used by the Glyph class to reposition and rescale\n // glyphs based on their category. This should be the first stop for\n // custom font glyph repositioning.\n //\n // The glyph loader first looks up a specific set of settings based on the\n // glyph code, and if not found, uses the defaults from the category. See\n // glyphs.textNote for an example of this.\n //\n // Details in Glyph.lookupFontMetrics.\n glyphs: {\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n segno: {\n shiftX: -7,\n },\n flag: {\n shiftX: -0.75,\n staveTempo: {\n shiftX: -1,\n },\n },\n clef: {\n gClef: {\n default: { scale: 1.1, shiftY: 1 },\n small: { shiftY: 1.5 },\n },\n fClef: {\n default: { shiftY: -0.5 },\n },\n },\n ornament: {\n ornamentTurn: {\n scale: 1.2,\n },\n ornamentTurnSlash: {\n scale: 1.2,\n },\n },\n stringNumber: {\n verticalPadding: 8,\n stemPadding: 2,\n leftPadding: 5,\n rightPadding: 6,\n },\n stroke: {\n arrowheadBlackDown: {\n straight: {\n shiftX: -4.5,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n arrowheadBlackUp: {\n straight: {\n shiftX: -0.85,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n },\n textNote: {\n point: 34,\n breathMarkTick: {\n point: 36,\n shiftY: 9,\n },\n breathMarkComma: {\n point: 36,\n },\n segno: {\n point: 30,\n shiftX: -7,\n shiftY: 8,\n },\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n ornamentTrill: {\n shiftX: -8,\n shiftY: 8,\n },\n ornamentTurn: {\n point: 42,\n },\n ornamentTurnSlash: {\n point: 42,\n },\n ornamentMordent: {\n shiftX: -8,\n },\n ornamentShortTrill: {\n shiftX: -8,\n },\n },\n noteHead: {\n minPadding: 2,\n standard: {\n restQuarterStemUp: {\n point: 35,\n },\n restQuarterStemDown: {\n point: 35,\n },\n },\n custom: {\n noteheadCircleXStemUp: {\n shiftX: 1.5,\n },\n noteheadCircleXStemDown: {\n shiftX: 0.25,\n },\n noteheadDiamondHalfStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondBlackStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondWholeStemUp: {\n shiftX: 1,\n },\n noteheadXHalfStemUp: {\n shiftX: -2,\n },\n noteheadXHalfStemDown: {\n shiftX: 1,\n },\n noteheadXWholeStemUp: {\n shiftX: -4,\n },\n noteheadXWholeStemDown: {\n shiftX: 1,\n },\n noteheadSquareWhiteStemDown: {\n shiftX: 0.25,\n },\n noteheadSquareWhiteStemUp: {\n shiftX: -0.75,\n },\n noteheadSquareBlackStemUp: {\n shiftX: -0.75,\n },\n noteheadTriangleUpWholeStemUp: {\n shiftX: -0.75,\n },\n },\n },\n chordSymbol: {\n global: {\n superscriptOffset: -400,\n subscriptOffset: 300,\n kerningOffset: -250,\n lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'],\n upperKerningText: ['A', 'L'],\n spacing: 100,\n superSubRatio: 0.66,\n },\n csymDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymHalfDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymAugmented: {\n scale: 1,\n leftSideBearing: 0,\n advanceWidth: 530,\n yOffset: 0,\n },\n csymParensLeftTall: {\n scale: 0.8,\n leftSideBearing: -20,\n advanceWidth: 184,\n yOffset: 250,\n },\n csymParensRightTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 189,\n yOffset: 250,\n },\n csymBracketLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 328,\n yOffset: 0,\n },\n csymBracketRightTall: {\n scale: 0.8,\n leftSideBearing: 1,\n advanceWidth: 600,\n yOffset: 0,\n },\n csymParensLeftVeryTall: {\n scale: 0.9,\n leftSideBearing: 50,\n advanceWidth: 121,\n yOffset: 350,\n },\n csymParensRightVeryTall: {\n scale: 0.9,\n leftSideBearing: 0,\n advanceWidth: 111,\n yOffset: 350,\n },\n csymDiagonalArrangementSlash: {\n scale: 0.6,\n leftSideBearing: -1,\n advanceWidth: 990,\n yOffset: 0,\n },\n csymMinor: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 482,\n yOffset: 0,\n },\n csymMajorSeventh: {\n scale: 0.9,\n leftSideBearing: 200,\n yOffset: 0,\n advanceWidth: 600,\n },\n accidentalSharp: {\n scale: 0.75,\n leftSideBearing: 20,\n advanceWidth: 250,\n yOffset: -302,\n },\n accidentalFlat: {\n scale: 0.9,\n leftSideBearing: -20,\n advanceWidth: 226,\n yOffset: -184,\n },\n },\n jazzOrnaments: {\n brassScoop: {\n scale: 1.0,\n xOffset: -12,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 20,\n },\n brassDoitMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 22,\n },\n brassFallLipShort: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassLiftMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 5,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassFallRoughMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 28,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassBend: {\n scale: 1.0,\n xOffset: 2,\n yOffset: -8,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassMuteClosed: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -8,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassMuteOpen: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -7,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassFlip: {\n scale: 1.0,\n xOffset: 10,\n yOffset: 0,\n stemUpYOffset: 7,\n reportedWidth: 10,\n },\n brassJazzTurn: {\n scale: 1.0,\n xOffset: 0,\n yOffset: 0,\n stemUpYOffset: 8,\n reportedWidth: 31,\n },\n brassSmear: {\n scale: 1.0,\n xOffset: 10,\n yOffset: 0,\n stemUpYOffset: 8,\n reportedWidth: 5,\n },\n },\n tuplet: {\n noteHeadOffset: 20,\n stemOffset: 10,\n bottomLine: 4,\n topModifierOffset: 15,\n },\n },\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// vexflow.js statically bundles & preloads all of our music engraving fonts.\nimport { loadBravura } from './load_bravura';\nimport { loadCustom } from './load_custom';\nimport { loadGonville } from './load_gonville';\nimport { loadLeland } from './load_leland';\nimport { loadPetaluma } from './load_petaluma';\n// ADD_MUSIC_FONT\n// import { loadXXX } from './load_xxx';\n// Populate our font \"database\" with all our music fonts.\nexport function loadAllMusicFonts() {\n loadBravura();\n loadGonville();\n loadPetaluma();\n loadCustom();\n loadLeland();\n // ADD_MUSIC_FONT\n // loadXXX();\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// If you are adding a new music engraving font, search for instances of ADD_MUSIC_FONT throughout the code base.\n// To compile your new font into vexflow.js, take a look at src/fonts/load_all.ts\n// You can export a font module which can be dynamically loaded by vexflow-core.js (see: Gruntfile.js).\n// ADD_MUSIC_FONT\n// To add a new music engraving font XXX, make a copy of this file and name it load_xxx.ts.\n// Then you will need to generate xxx_glyphs.ts and xxx_metrics.ts.\n// xxx_glyphs.ts is created by tools/fonts/fontgen_smufl.js\n// xxx_metrics.ts is created by hand. You could copy bravura_metrics.ts and modify/remove/add entries where necessary.\nimport { Font } from '../font';\nimport { BravuraFont } from './bravura_glyphs';\nimport { BravuraMetrics } from './bravura_metrics';\nexport function loadBravura() {\n Font.load('Bravura', BravuraFont, BravuraMetrics);\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { CustomFont } from './custom_glyphs';\nimport { CustomMetrics } from './custom_metrics';\nexport function loadCustom() {\n Font.load('Custom', CustomFont, CustomMetrics);\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { GonvilleFont } from './gonville_glyphs';\nimport { GonvilleMetrics } from './gonville_metrics';\nexport function loadGonville() {\n Font.load('Gonville', GonvilleFont, GonvilleMetrics);\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { LelandFont } from './leland_glyphs';\nimport { LelandMetrics } from './leland_metrics';\nexport function loadLeland() {\n Font.load('Leland', LelandFont, LelandMetrics);\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { PetalumaFont } from './petaluma_glyphs';\nimport { PetalumaMetrics } from './petaluma_metrics';\nexport function loadPetaluma() {\n Font.load('Petaluma', PetalumaFont, PetalumaMetrics);\n}\n","export const PetalumaFont = {\n glyphs: {\n bracketTop: {\n x_min: 0,\n x_max: 508,\n y_min: 0,\n y_max: 370,\n ha: 370,\n o: 'm 22 0 b 122 0 55 1 89 0 l 157 0 b 713 376 425 0 622 137 b 732 467 724 406 732 436 b 726 514 732 482 730 498 b 711 533 723 528 719 533 b 693 526 707 533 700 530 b 674 498 683 520 678 508 b 635 406 662 467 652 435 b 310 164 560 281 458 193 b 154 151 258 154 206 151 b 39 154 117 151 78 154 b 1 120 17 154 4 145 b 0 84 0 108 0 96 b 0 20 0 63 1 40 b 22 0 0 4 7 0 z',\n },\n bracketBottom: {\n x_min: 0,\n x_max: 496,\n y_min: -393,\n y_max: 0,\n ha: 393,\n o: 'm 696 -566 b 711 -539 713 -566 708 -549 b 714 -521 713 -533 714 -527 b 713 -508 714 -517 713 -513 b 661 -327 706 -445 688 -384 b 392 -42 603 -203 513 -109 b 206 0 331 -7 266 0 b 160 -1 190 0 174 -1 b 26 -1 107 -1 66 -3 b 0 -19 12 -1 0 -4 l 0 -23 b 3 -50 1 -32 3 -42 b 1 -86 3 -62 1 -73 b 4 -118 1 -96 1 -108 b 45 -151 10 -145 23 -154 b 180 -143 89 -144 135 -145 b 621 -419 392 -135 523 -236 b 662 -539 641 -456 655 -497 b 696 -566 667 -557 680 -566 z',\n },\n barlineTick: {\n x_min: 0,\n x_max: 56.036101509664164,\n y_min: 876.905249806889,\n y_max: 1121.5430338167066,\n ha: 244.63778400981766,\n o: 'm 42 1263 b 66 1287 62 1261 66 1272 b 81 1583 65 1387 72 1485 b 35 1614 82 1610 53 1610 b 14 1591 17 1619 16 1604 b 0 1408 7 1525 0 1459 l 0 1292 b 42 1263 1 1263 23 1266 z',\n },\n breathMarkTick: {\n x_min: 0,\n x_max: 568,\n y_min: 0,\n y_max: 621,\n ha: 621,\n o: 'm 258 0 b 278 39 276 0 274 24 b 279 56 279 45 279 50 l 279 73 b 278 117 279 88 278 102 b 281 148 278 127 279 138 b 536 600 312 330 387 487 b 744 719 600 651 670 690 b 815 779 775 730 808 740 b 818 824 818 793 818 808 b 815 868 818 838 818 852 b 796 894 814 881 808 894 b 779 888 791 894 786 893 b 719 864 760 878 739 871 b 372 602 580 806 459 724 b 229 252 298 498 251 383 b 220 268 225 262 222 264 b 209 302 217 279 213 291 b 75 527 181 387 143 467 b 16 563 58 543 39 573 b 0 539 3 557 0 549 b 12 492 0 524 9 507 b 56 400 19 459 22 425 b 163 269 104 367 138 323 b 238 36 197 194 216 115 b 258 0 242 22 243 0 z',\n },\n segno: {\n x_min: 0,\n x_max: 798,\n y_min: -65,\n y_max: 806,\n ha: 871,\n o: 'm 16 -94 b 66 -69 39 -92 53 -85 b 177 59 102 -26 138 17 b 543 456 298 192 420 324 b 726 300 615 420 680 373 b 753 217 744 271 753 243 b 655 112 753 170 719 131 b 599 104 636 107 618 104 b 461 173 544 104 495 128 b 432 190 454 183 444 190 b 409 179 425 190 418 187 b 359 118 390 160 373 141 b 341 72 347 101 341 86 b 373 24 341 56 351 40 b 409 6 384 17 396 10 b 550 -13 454 -12 501 -14 b 599 -6 566 -12 583 -10 b 864 213 720 27 806 104 b 886 300 878 242 886 271 b 857 395 886 331 877 363 b 799 467 840 420 821 445 b 648 572 755 513 704 546 b 1110 1083 802 743 955 914 b 1140 1129 1123 1097 1136 1110 b 1149 1148 1142 1135 1149 1142 b 1145 1153 1149 1149 1148 1152 b 1123 1161 1139 1158 1130 1161 b 1109 1156 1119 1161 1113 1159 b 1089 1138 1102 1151 1094 1145 b 946 988 1040 1089 989 1041 b 595 602 834 855 711 732 l 590 598 l 549 615 b 432 793 462 647 432 723 b 534 888 432 851 474 888 b 671 834 588 888 631 864 b 710 818 684 824 696 818 b 724 821 714 818 719 819 b 809 883 757 834 788 852 b 816 901 814 890 816 896 b 802 923 816 910 812 916 b 706 984 770 945 742 971 b 593 1011 668 998 631 1011 b 516 991 567 1011 541 1005 b 333 799 433 949 380 876 b 302 693 312 765 302 729 b 330 589 302 658 311 624 b 469 488 360 533 415 511 b 485 482 475 487 480 485 b 266 249 412 405 338 327 b 121 88 217 196 170 141 b 9 -65 78 40 37 -7 b 0 -85 4 -72 0 -79 b 16 -94 0 -91 4 -94 z m 861 536 b 927 575 890 539 909 557 b 965 628 952 598 965 613 b 926 680 965 644 952 658 b 865 713 900 701 883 713 b 805 667 845 713 828 698 b 768 611 791 649 770 631 b 812 564 766 589 798 582 b 861 536 824 550 840 537 z m 251 350 b 363 436 285 348 353 403 b 354 456 366 448 360 452 b 271 518 327 477 298 497 b 243 528 261 526 252 528 b 210 513 232 528 222 523 b 157 454 190 494 176 472 b 141 428 147 444 141 436 b 158 406 141 420 147 413 b 216 361 180 393 197 376 b 245 350 225 356 235 350 z',\n },\n coda: {\n x_min: 0,\n x_max: 1380,\n y_min: -196,\n y_max: 1037,\n ha: 1233,\n o: 'm 1028 -282 b 1057 -245 1045 -282 1053 -261 b 1060 -203 1060 -232 1060 -217 b 1063 9 1060 -132 1061 -62 b 1390 194 1192 22 1303 81 b 1531 543 1467 298 1512 415 b 1532 556 1531 547 1532 552 b 1904 559 1656 557 1780 559 b 1950 582 1920 559 1941 569 b 1987 674 1970 609 1987 638 b 1984 698 1987 681 1986 690 b 1950 700 1973 698 1961 700 l 1941 700 l 1545 696 b 1535 776 1545 723 1541 749 b 1103 1113 1477 996 1326 1107 b 1080 1115 1096 1115 1087 1115 b 1081 1322 1080 1184 1080 1253 b 1079 1467 1083 1371 1081 1418 b 1061 1493 1079 1476 1080 1493 l 1060 1493 b 1028 1467 1044 1490 1031 1485 b 1020 1403 1025 1446 1020 1424 b 1017 1110 1020 1305 1018 1208 l 962 1106 b 569 914 808 1087 671 1035 b 451 683 510 844 472 766 l 161 678 b 118 680 148 678 132 680 b 79 670 101 680 86 678 b 0 544 48 636 29 592 l 37 544 l 429 549 b 428 518 428 539 428 528 b 488 285 428 435 458 360 b 681 81 526 192 593 124 b 946 9 763 40 854 19 b 1008 6 966 7 988 6 b 1005 -137 1008 -42 1005 -89 b 1012 -243 1005 -173 1005 -209 b 1028 -282 1015 -258 1011 -282 z m 1074 690 b 1079 935 1077 772 1077 852 b 1326 855 1166 932 1250 909 b 1446 694 1385 814 1426 759 b 1269 693 1387 694 1328 693 b 1074 690 1204 693 1139 691 z m 577 684 b 766 874 618 763 678 828 b 989 932 837 912 913 923 b 1015 933 998 932 1007 933 b 1014 822 1015 896 1014 860 b 1011 688 1012 791 1012 743 z m 1067 184 b 1071 553 1070 307 1068 429 b 1439 556 1194 553 1316 554 b 1437 554 1439 554 1437 554 b 1341 337 1413 478 1387 402 b 1119 192 1286 261 1211 212 b 1067 184 1102 189 1084 186 z m 1008 180 b 660 264 886 181 770 212 b 524 471 570 305 524 374 b 528 524 524 488 526 505 l 533 549 b 792 552 619 550 706 550 b 1009 553 865 553 937 552 b 1008 180 1009 428 1008 288 z',\n },\n gClef: {\n x_min: 0,\n x_max: 664,\n y_min: -559,\n y_max: 1009,\n ha: 1568,\n o: 'm 343 -805 b 366 -801 350 -805 357 -804 b 409 -773 383 -795 397 -786 b 582 -328 528 -648 577 -497 b 583 -294 582 -315 583 -294 b 612 -279 583 -294 603 -282 b 747 -197 660 -256 706 -230 b 949 143 857 -109 920 10 b 956 206 955 164 956 186 b 791 384 956 297 906 363 b 704 393 762 390 733 393 b 498 336 632 393 563 374 b 481 325 490 331 481 325 l 444 465 b 442 485 442 472 442 485 b 609 880 442 485 589 746 b 619 996 616 919 619 958 b 613 1084 619 1027 618 1056 b 534 1387 599 1188 560 1286 b 482 1453 527 1417 517 1453 b 422 1407 456 1453 438 1428 b 305 1063 348 1305 312 1188 b 304 1002 304 1043 304 1022 b 338 654 304 886 323 769 b 343 629 338 645 341 636 b 144 356 278 537 206 451 b 23 144 101 288 53 220 b 0 20 7 107 0 63 b 82 -210 0 -69 30 -160 b 207 -288 112 -239 160 -271 b 410 -328 274 -312 340 -328 b 474 -324 431 -328 452 -327 l 491 -321 b 491 -341 491 -321 492 -334 b 402 -585 475 -428 454 -513 b 294 -668 374 -622 348 -664 b 271 -693 278 -670 271 -680 b 274 -708 271 -698 272 -703 b 302 -775 282 -730 292 -753 b 343 -805 311 -795 325 -805 z m 400 717 b 382 922 389 786 382 854 b 481 1286 382 1047 408 1169 b 507 1125 498 1233 507 1179 b 500 1040 507 1097 504 1068 b 400 717 481 927 455 818 z m 252 -135 b 196 -121 232 -134 215 -127 b 117 -69 158 -108 127 -94 b 111 -32 112 -58 111 -45 b 117 19 111 -16 114 1 b 130 56 118 27 127 52 b 324 337 186 156 253 246 l 384 416 l 395 384 b 416 291 406 348 416 291 b 350 213 416 291 376 239 b 243 -42 278 143 243 55 b 251 -117 243 -66 246 -91 b 252 -135 252 -122 252 -127 z m 563 -91 b 510 168 552 3 530 78 b 513 192 508 179 508 186 b 624 202 550 199 586 202 b 730 192 660 202 694 199 b 850 141 773 183 816 176 b 858 134 852 138 855 135 b 595 -121 801 19 716 -68 l 569 -131 z m 410 -160 b 311 -147 360 -160 311 -147 b 307 -98 311 -147 307 -127 b 314 -33 307 -79 308 -56 b 429 131 328 36 377 85 b 441 138 433 135 438 138 b 449 122 446 138 448 132 b 490 -131 462 37 484 -46 b 490 -153 491 -140 490 -153 b 410 -160 490 -153 452 -163 z',\n },\n cClef: {\n x_min: 0,\n x_max: 731,\n y_min: -543,\n y_max: 543,\n ha: 1086,\n o: 'm 131 -782 b 141 -755 138 -782 140 -773 b 147 -490 143 -667 145 -577 b 160 207 150 -258 153 -24 b 168 618 164 344 158 481 b 81 768 173 690 132 732 b 45 782 66 778 55 782 b 3 740 26 782 13 768 b 0 724 1 736 0 730 l 1 710 b 4 596 4 672 4 634 l 4 382 b 9 102 4 288 4 196 b 17 -301 13 -32 10 -166 l 17 -672 b 50 -736 17 -701 27 -720 b 109 -772 69 -749 91 -759 b 131 -782 120 -778 127 -782 z m 615 -770 b 881 -684 710 -770 801 -739 b 1020 -395 986 -612 1020 -510 b 1017 -334 1020 -374 1018 -354 b 769 -62 1007 -209 896 -75 b 746 -60 762 -60 755 -60 b 639 -73 710 -60 675 -69 b 524 -109 598 -79 560 -92 b 528 -36 526 -85 528 -60 b 527 -4 528 -26 528 -14 b 528 39 527 10 528 24 b 526 99 528 59 527 79 b 592 94 549 95 570 94 b 648 99 611 94 629 95 b 912 157 744 94 844 117 b 1053 377 1009 215 1053 284 b 1050 425 1053 393 1053 409 b 914 665 1037 521 986 602 b 717 753 855 717 791 753 b 626 734 688 753 658 747 l 462 665 b 347 500 374 628 347 580 b 350 449 347 484 348 468 b 392 419 353 428 367 416 b 492 438 425 425 459 428 b 541 498 524 448 541 468 b 540 514 541 503 541 508 b 537 546 537 524 537 536 b 573 639 537 580 550 611 b 606 657 582 649 593 657 l 609 657 b 716 622 647 652 684 647 b 834 372 801 556 834 469 b 831 323 834 356 832 338 b 743 187 825 266 795 217 b 710 176 732 180 720 176 b 694 179 704 176 700 177 b 527 223 638 193 582 206 b 495 229 516 228 505 229 b 454 220 481 229 468 225 b 395 189 432 213 415 200 b 363 180 384 186 374 181 b 348 168 356 179 348 176 b 340 161 343 167 340 164 b 347 150 340 157 343 154 b 356 147 348 148 353 147 b 364 92 361 130 363 111 b 369 -37 367 49 369 6 b 363 -154 369 -76 367 -115 b 357 -236 360 -183 357 -210 b 376 -264 357 -253 361 -259 b 456 -289 402 -284 429 -289 b 521 -282 478 -289 500 -285 b 549 -255 537 -279 546 -271 b 598 -177 556 -225 577 -202 b 622 -164 605 -168 613 -164 b 636 -167 626 -164 631 -166 b 749 -225 678 -177 714 -199 b 848 -405 814 -276 848 -337 b 824 -507 848 -436 840 -471 b 657 -657 792 -582 730 -625 b 608 -668 638 -664 622 -668 b 534 -602 572 -668 547 -645 b 513 -575 530 -589 523 -575 b 507 -576 510 -575 508 -575 b 478 -582 497 -580 488 -582 b 405 -570 454 -582 428 -570 b 389 -572 399 -570 395 -570 l 363 -572 b 321 -575 348 -572 333 -569 l 321 631 b 323 662 323 641 323 652 b 315 716 323 681 321 698 b 304 736 314 723 317 736 l 302 736 b 281 716 294 734 285 729 b 275 665 276 700 275 683 l 275 382 b 276 99 275 288 275 193 b 279 -170 278 10 276 -81 b 284 -399 282 -246 284 -323 b 282 -629 284 -475 282 -553 b 289 -721 282 -660 289 -690 b 300 -736 289 -727 291 -736 b 312 -724 307 -736 310 -730 b 321 -667 323 -706 321 -687 l 321 -632 l 328 -644 l 340 -657 b 510 -757 386 -707 445 -740 b 615 -770 546 -766 580 -770 z',\n },\n fClef: {\n x_min: 0,\n x_max: 776,\n y_min: -496,\n y_max: 216,\n ha: 712,\n o: 'm 402 -706 b 804 -405 592 -678 716 -566 b 876 -53 861 -298 874 -183 b 868 33 876 -32 873 1 b 560 311 845 217 723 311 b 524 310 549 311 536 311 b 131 134 373 297 239 242 b 17 -29 84 86 37 39 b 9 -89 12 -50 9 -71 b 112 -238 9 -154 43 -206 b 124 -243 117 -239 120 -242 b 186 -261 145 -255 166 -261 b 268 -228 215 -261 242 -249 b 351 -59 325 -181 351 -124 b 343 10 351 -36 348 -13 b 340 36 341 19 340 27 b 409 105 340 75 363 102 b 441 107 420 107 431 107 b 624 36 510 107 573 86 b 744 -200 688 -27 724 -109 b 747 -230 747 -210 747 -222 b 717 -323 747 -264 736 -292 b 608 -445 688 -370 654 -410 b 307 -541 518 -513 415 -541 l 213 -541 b 39 -521 154 -541 96 -539 b 0 -552 17 -514 0 -531 b 1 -564 0 -556 0 -560 b 17 -611 6 -580 10 -596 b 101 -694 35 -648 50 -684 b 288 -714 164 -707 225 -714 b 402 -706 325 -714 363 -711 z m 1018 92 b 1080 118 1041 91 1068 96 b 1117 219 1099 150 1117 180 b 1113 252 1117 229 1116 240 b 1045 288 1102 297 1068 276 b 1017 262 1028 297 1024 274 b 984 124 989 220 996 170 b 1008 91 979 108 986 91 z m 972 -281 b 1070 -148 1024 -279 1070 -210 b 1025 -105 1070 -105 1045 -112 b 989 -127 1004 -96 998 -114 b 949 -249 963 -164 963 -209 b 969 -281 943 -265 949 -281 z',\n },\n unpitchedPercussionClef1: {\n x_min: 0,\n x_max: 379.13761966945304,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 481 -360 b 507 -357 491 -360 500 -360 b 546 -295 541 -346 547 -325 b 536 79 543 -170 540 -46 b 523 311 533 157 534 235 b 475 359 518 340 508 359 b 425 360 459 359 442 360 b 400 359 416 360 409 360 b 337 294 348 353 340 347 l 337 -73 b 336 -264 337 -137 337 -200 b 343 -294 336 -274 338 -284 b 481 -360 359 -330 431 -360 z m 144 -341 b 207 -320 167 -341 189 -331 b 217 -301 215 -315 217 -308 b 210 -262 217 -289 210 -275 b 228 187 212 -112 209 37 b 228 287 228 220 229 253 b 174 353 228 336 222 343 b 120 359 157 357 138 359 b 48 357 96 359 72 356 b 17 323 29 357 19 344 b 7 120 16 255 9 187 b 6 -109 6 43 6 -33 l 6 -204 b 0 -251 6 -220 0 -235 b 3 -269 0 -256 0 -262 b 127 -340 24 -330 79 -328 b 144 -341 132 -341 138 -341 z',\n },\n '6stringTabClef': {\n x_min: 0,\n x_max: 438,\n y_min: -768,\n y_max: 767,\n ha: 1535,\n o: 'm 369 438 b 374 439 370 438 372 438 b 384 462 383 444 384 452 l 384 474 b 390 697 386 547 390 622 b 373 1002 390 799 390 901 l 533 1002 b 560 1001 541 1004 552 1001 b 573 1007 567 1001 572 1002 b 546 1050 579 1025 559 1038 b 536 1056 543 1053 539 1053 b 324 1104 472 1102 397 1104 b 72 1090 238 1104 154 1099 b 55 1093 66 1090 60 1092 b 37 1073 46 1093 37 1089 b 60 1045 37 1061 48 1051 b 203 1001 105 1022 151 1001 b 233 1004 213 1001 223 1002 b 246 1005 238 1004 243 1005 b 272 975 264 1005 272 996 l 272 965 b 258 596 264 842 265 719 b 315 474 253 540 272 504 l 343 455 b 369 438 351 448 357 438 z m 114 -320 b 127 -304 120 -320 124 -315 b 171 -174 141 -261 158 -219 b 222 -135 179 -147 196 -137 b 426 -122 289 -131 359 -128 b 498 -164 462 -120 482 -127 b 628 -301 521 -226 575 -264 b 631 -288 631 -295 631 -291 b 628 -269 631 -281 629 -276 b 569 -134 616 -220 589 -179 b 408 225 514 -14 462 107 b 314 357 384 274 351 318 b 278 380 298 372 288 379 b 251 351 268 380 261 372 b 4 -209 156 171 75 -17 b 0 -228 1 -215 0 -222 b 19 -258 0 -240 7 -249 b 102 -314 45 -279 75 -294 b 114 -320 107 -318 111 -320 z m 425 6 b 360 20 403 17 382 20 b 274 14 331 20 302 14 l 246 14 l 340 206 b 425 6 369 137 395 75 z m 245 -1106 b 281 -1104 256 -1106 269 -1106 b 511 -888 400 -1094 511 -1035 b 454 -688 511 -814 504 -744 b 448 -678 449 -685 448 -681 b 454 -667 448 -675 449 -671 b 504 -497 503 -619 507 -559 b 324 -288 500 -383 436 -308 b 295 -287 314 -287 304 -287 l 282 -287 b 115 -330 223 -287 168 -307 b 94 -366 102 -336 94 -348 l 94 -370 b 96 -435 96 -392 96 -413 b 73 -858 89 -576 71 -717 b 78 -919 73 -878 78 -899 b 72 -950 78 -930 76 -940 b 63 -992 66 -965 63 -978 b 66 -1015 63 -999 65 -1008 b 173 -1104 84 -1106 84 -1106 b 245 -1106 197 -1104 220 -1104 z m 161 -622 b 147 -618 156 -622 151 -621 b 140 -600 141 -612 140 -606 b 144 -564 140 -589 144 -575 b 143 -554 144 -560 144 -557 l 143 -546 b 220 -451 144 -467 143 -465 b 278 -445 239 -446 259 -444 b 418 -497 328 -445 376 -461 b 429 -516 426 -504 429 -510 b 415 -533 429 -521 423 -527 b 219 -608 357 -579 287 -590 b 215 -609 217 -608 216 -609 b 161 -622 197 -609 177 -622 z m 154 -953 b 130 -933 135 -953 130 -948 l 130 -865 l 128 -865 b 135 -788 130 -838 124 -808 b 203 -769 145 -769 180 -776 b 259 -762 223 -765 242 -762 b 441 -852 330 -762 386 -805 b 449 -867 446 -858 449 -863 b 436 -884 449 -874 444 -878 b 318 -942 402 -914 363 -935 b 154 -953 264 -950 209 -953 z',\n },\n timeSig0: {\n x_min: 20,\n x_max: 513,\n y_min: -358.159536277652,\n y_max: 359,\n ha: 717.159536277652,\n o: 'm 341 -516 b 420 -510 367 -516 395 -514 b 675 -338 533 -494 622 -448 b 737 -92 716 -256 734 -171 b 739 -35 739 -73 739 -53 b 680 305 739 86 720 207 b 400 517 622 449 537 517 b 337 514 380 517 359 517 b 289 507 321 511 305 513 b 91 317 192 477 127 412 b 29 9 50 212 29 108 b 217 -458 29 -157 88 -312 b 341 -516 251 -494 291 -518 z m 412 -452 b 359 -425 393 -452 376 -444 b 187 14 242 -301 179 -158 b 268 334 193 127 212 235 b 387 448 295 383 330 428 b 406 452 395 451 400 452 b 428 444 413 452 420 449 b 517 324 471 413 497 372 b 586 -29 560 222 586 86 b 556 -271 586 -112 585 -193 b 468 -422 536 -327 508 -377 b 412 -452 449 -442 431 -452 z',\n },\n timeSig1: {\n x_min: 20,\n x_max: 283,\n y_min: -364,\n y_max: 366,\n ha: 730,\n o: 'm 264 -524 b 357 -510 297 -524 325 -516 b 374 -490 369 -508 374 -501 b 380 -438 376 -472 380 -455 l 406 246 b 408 301 408 265 408 282 b 400 445 408 348 405 396 b 288 527 395 491 338 527 b 253 520 276 527 264 526 b 240 508 249 517 245 513 b 49 409 192 445 127 413 b 29 396 33 408 29 403 b 32 380 29 392 30 386 b 59 363 36 366 49 364 b 164 348 95 356 130 348 b 222 357 183 348 203 351 b 238 361 228 360 233 360 b 252 334 248 361 252 353 b 243 59 252 242 249 150 b 219 -490 229 -124 233 -307 b 264 -524 217 -516 232 -524 z',\n },\n timeSig2: {\n x_min: 20,\n x_max: 660.4636303241031,\n y_min: -378.7201231608281,\n y_max: 382,\n ha: 760.720123160828,\n o: 'm 99 -543 b 130 -533 111 -550 121 -540 b 255 -448 168 -501 213 -475 b 338 -425 282 -431 310 -425 b 392 -431 356 -425 374 -426 b 485 -462 423 -438 454 -451 b 648 -497 540 -482 595 -497 b 834 -441 711 -497 773 -480 b 950 -242 906 -395 958 -334 b 942 -210 950 -230 950 -215 b 912 -220 932 -204 920 -213 b 861 -264 894 -235 877 -248 b 775 -317 835 -289 808 -305 b 675 -334 742 -328 708 -334 b 510 -295 619 -334 563 -318 b 372 -264 465 -278 420 -264 b 305 -272 350 -264 328 -266 b 331 -242 318 -256 324 -249 b 490 -73 386 -187 438 -131 b 675 340 595 43 664 180 b 677 369 677 350 677 360 b 556 536 677 461 638 508 b 468 550 526 546 497 550 b 297 508 409 550 353 533 b 111 354 220 475 168 412 b 29 197 65 308 29 261 b 32 164 29 187 29 176 b 29 140 33 157 29 147 b 43 125 29 132 32 125 b 73 147 55 125 65 138 b 86 163 79 153 82 158 b 238 320 134 219 183 272 b 425 389 292 367 360 389 b 575 341 480 389 531 373 b 606 298 590 330 606 317 b 600 278 606 292 603 285 b 501 107 576 217 544 158 b 304 -104 439 33 372 -35 b 111 -356 230 -180 167 -265 b 84 -446 92 -386 84 -415 b 86 -481 84 -458 85 -469 b 88 -514 88 -491 88 -503 b 99 -543 89 -526 91 -537 z',\n },\n timeSig3: {\n x_min: 19.824321427094187,\n x_max: 540,\n y_min: -392,\n y_max: 392,\n ha: 784,\n o: 'm 216 -540 b 354 -564 264 -556 310 -564 b 605 -465 445 -564 530 -530 b 729 -161 697 -383 729 -275 b 724 -82 729 -135 727 -108 b 589 95 716 -1 670 62 b 523 114 567 102 546 108 b 750 418 606 213 677 315 b 778 503 769 444 778 472 b 773 540 778 514 776 527 b 750 564 769 557 762 564 b 736 562 746 564 742 563 b 641 552 704 553 672 552 b 402 554 562 552 481 554 l 346 554 b 84 546 258 554 170 554 b 36 501 55 543 40 531 b 29 412 30 472 32 442 b 52 384 27 393 32 384 l 56 384 b 210 392 107 389 158 392 l 602 392 b 354 108 523 285 445 192 b 246 -65 300 58 246 12 b 252 -108 246 -78 248 -92 l 252 -111 b 264 -141 251 -122 251 -135 b 291 -132 274 -145 284 -140 b 425 -72 328 -95 377 -84 b 475 -65 442 -68 459 -65 b 592 -108 517 -65 557 -79 b 645 -179 615 -125 645 -147 b 642 -194 645 -184 644 -189 b 485 -376 616 -278 569 -344 b 361 -399 444 -392 402 -399 b 151 -340 289 -399 219 -376 b 88 -275 122 -323 98 -310 b 71 -249 86 -268 85 -249 b 63 -251 68 -249 66 -249 b 36 -288 48 -255 36 -266 b 55 -423 33 -336 45 -377 b 101 -482 60 -448 78 -468 b 216 -540 138 -504 174 -526 z',\n },\n timeSig4: {\n x_min: 20,\n x_max: 633.0785282750762,\n y_min: -489.59088556716864,\n y_max: 491.18559127100053,\n ha: 980.7764768381692,\n o: 'm 608 -704 b 641 -684 622 -708 634 -696 b 667 -602 660 -660 662 -631 b 685 -190 683 -465 680 -327 l 685 -176 b 831 -127 736 -166 783 -148 b 912 0 901 -94 913 -76 b 886 53 912 36 904 52 b 848 40 877 53 864 49 l 838 36 b 687 -13 789 14 739 -3 b 681 177 687 50 684 114 b 672 338 678 230 677 285 b 654 373 671 350 672 373 b 622 340 636 373 624 361 b 615 262 621 314 613 288 b 619 -22 616 167 619 72 b 569 -22 602 -23 585 -23 b 305 -3 481 -16 395 -1 b 210 -9 274 -3 242 -4 b 301 163 242 52 268 108 b 513 552 377 288 459 412 b 536 652 526 585 536 618 b 533 683 536 662 534 672 b 520 707 531 691 531 707 b 487 693 508 708 494 704 b 474 668 482 684 477 677 b 384 490 454 603 418 547 b 253 281 343 419 295 351 b 73 -13 194 181 145 78 b 29 -108 50 -42 29 -72 b 37 -147 29 -121 32 -134 b 50 -186 43 -160 50 -173 b 68 -216 52 -207 56 -215 b 92 -207 73 -216 82 -213 b 288 -166 156 -180 220 -166 b 556 -186 377 -166 467 -180 b 586 -189 566 -187 576 -187 b 616 -186 596 -189 606 -189 b 606 -432 613 -268 612 -350 b 596 -625 603 -495 596 -559 b 598 -670 596 -641 596 -655 b 608 -704 598 -683 596 -700 z',\n },\n timeSig5: {\n x_min: 19.663871085403297,\n x_max: 583,\n y_min: -389,\n y_max: 389,\n ha: 778,\n o: 'm 132 -536 b 249 -560 168 -553 209 -559 b 507 -462 351 -560 454 -514 b 677 -183 588 -384 642 -289 b 694 -85 688 -150 694 -117 b 540 138 694 12 642 94 b 422 173 501 154 462 167 b 400 187 408 174 400 177 b 405 202 400 190 402 196 b 428 284 416 228 426 255 b 469 312 431 307 442 312 b 757 372 569 312 662 343 b 840 490 821 392 840 432 b 812 560 840 540 834 560 b 763 546 801 560 785 556 b 757 543 762 546 759 544 b 465 484 665 505 570 484 b 396 484 452 484 425 487 b 353 454 377 482 366 474 b 281 300 323 405 304 351 b 245 164 262 255 245 212 b 246 144 245 158 246 151 b 233 63 249 115 243 89 b 225 35 228 50 225 40 b 264 14 225 22 236 19 b 445 -26 325 7 387 0 b 569 -151 501 -52 547 -89 b 575 -180 573 -161 575 -170 b 527 -275 575 -217 547 -245 b 347 -367 484 -334 419 -367 b 261 -351 318 -367 289 -363 b 95 -300 206 -333 154 -307 b 55 -321 73 -297 65 -302 b 29 -468 29 -367 40 -419 b 56 -505 26 -482 36 -500 b 132 -536 82 -514 108 -524 z',\n },\n timeSig6: {\n x_min: 20,\n x_max: 565,\n y_min: -363,\n y_max: 363,\n ha: 726,\n o: 'm 390 -518 b 621 -458 469 -507 549 -494 b 814 -134 753 -390 814 -281 b 652 59 814 -16 750 58 b 580 48 629 59 606 55 b 233 -334 392 -9 276 -138 b 115 -228 181 -314 143 -278 b 98 -160 104 -206 98 -183 b 107 -109 98 -144 101 -127 b 167 37 124 -59 145 -12 b 508 340 236 189 347 292 b 575 353 530 347 553 353 b 648 327 600 353 625 346 b 665 320 654 321 661 320 b 687 336 674 320 681 325 b 703 405 697 359 703 382 b 684 472 703 429 697 451 b 593 523 664 504 631 521 b 576 521 588 523 582 523 b 297 403 472 508 380 465 b 115 177 217 344 164 264 b 29 -121 60 82 29 -17 b 53 -278 29 -173 36 -225 b 226 -497 82 -374 131 -454 b 347 -523 265 -514 305 -523 b 390 -518 361 -523 376 -521 z m 351 -357 b 312 -351 337 -356 320 -363 b 325 -315 304 -340 320 -327 b 543 -120 373 -222 448 -158 b 622 -104 570 -108 596 -102 b 717 -132 655 -104 687 -112 b 740 -167 732 -143 740 -153 b 730 -196 740 -176 737 -184 b 563 -321 690 -258 634 -300 b 359 -357 497 -341 428 -354 z',\n },\n timeSig7: {\n x_min: 20.3617407597707,\n x_max: 592,\n y_min: -345,\n y_max: 345,\n ha: 690,\n o: 'm 253 -497 b 318 -485 276 -497 297 -487 b 366 -441 348 -482 360 -468 b 487 -104 390 -323 433 -210 b 835 403 580 82 701 246 b 852 436 847 416 852 428 b 815 467 852 451 840 461 b 762 474 798 471 779 474 b 674 445 732 474 701 465 b 603 410 652 431 628 420 b 383 360 533 379 459 360 b 200 435 315 360 249 382 b 88 494 168 469 131 485 b 66 497 81 495 73 497 b 33 484 52 497 39 492 b 50 436 22 469 39 451 b 295 310 114 360 199 324 b 406 301 331 304 369 301 b 593 324 468 301 530 308 b 585 307 589 314 588 310 b 265 -249 451 137 338 -46 b 207 -442 242 -312 223 -377 b 204 -462 206 -449 204 -456 b 253 -497 204 -487 220 -497 z',\n },\n timeSig8: {\n x_min: 20,\n x_max: 504.15101530718516,\n y_min: -428,\n y_max: 428,\n ha: 856,\n o: 'm 265 -616 b 289 -615 274 -616 281 -616 b 710 -271 492 -592 657 -485 b 726 -148 721 -229 727 -187 b 585 108 726 -48 687 42 b 572 127 576 114 573 120 b 576 144 572 132 575 138 b 598 301 590 196 598 249 b 586 413 598 338 593 376 b 356 616 559 531 467 616 b 233 582 317 616 275 606 b 29 233 101 505 29 384 b 104 9 29 153 46 72 b 189 -48 127 -16 160 -27 b 92 -158 141 -73 114 -114 b 37 -343 63 -217 50 -279 b 33 -390 35 -359 33 -374 b 265 -616 33 -524 148 -616 z m 258 105 b 124 148 215 105 167 117 b 96 196 105 163 96 177 b 99 217 96 202 96 209 b 197 384 120 281 151 337 b 350 451 242 429 297 451 b 516 364 412 451 472 422 b 530 331 523 354 530 343 l 530 327 l 530 320 b 468 151 520 261 507 200 b 419 122 455 135 442 125 b 258 105 370 117 320 105 z m 328 -438 b 158 -276 233 -436 160 -359 b 166 -239 158 -264 161 -252 b 230 -157 176 -203 202 -179 b 367 -72 274 -125 320 -98 b 448 -49 396 -56 423 -49 b 562 -118 491 -49 528 -72 b 611 -251 590 -157 611 -199 b 569 -341 611 -288 595 -318 b 328 -438 500 -402 416 -432 z',\n },\n timeSig9: {\n x_min: 20,\n x_max: 494,\n y_min: -421,\n y_max: 421,\n ha: 842,\n o: 'm 235 -606 b 361 -564 275 -606 318 -593 b 619 -229 487 -482 566 -366 b 706 127 664 -114 694 4 b 711 233 708 163 711 197 b 700 346 711 271 708 308 b 389 606 658 517 530 606 b 351 605 376 606 364 606 b 56 272 171 586 56 441 b 96 98 56 216 69 156 b 334 -53 144 -3 238 -53 b 544 36 408 -53 484 -24 b 652 176 586 78 622 124 b 631 71 645 141 639 105 b 467 -302 599 -63 562 -196 b 271 -442 412 -364 354 -422 b 225 -448 255 -446 239 -448 b 95 -305 148 -448 98 -395 b 89 -255 95 -288 94 -271 b 73 -233 86 -246 85 -233 b 52 -248 65 -233 56 -239 b 29 -317 42 -271 30 -291 b 49 -448 29 -361 40 -405 b 235 -606 69 -541 144 -606 z m 340 104 b 144 209 264 108 194 141 b 127 258 132 225 127 240 b 137 297 127 271 130 284 b 366 449 184 396 269 449 b 517 408 415 449 467 436 b 595 348 546 392 572 372 b 616 305 608 336 616 321 b 609 281 616 298 613 289 b 340 104 557 184 477 104 z',\n },\n timeSigCommon: {\n x_min: 20,\n x_max: 585,\n y_min: -298,\n y_max: 294.49658092772603,\n ha: 592.496580927726,\n o: 'm 444 -405 b 829 -45 626 -346 740 -207 b 842 26 842 -23 842 1 b 821 58 842 39 841 58 b 795 40 811 58 802 48 b 765 3 785 29 773 16 b 469 -223 690 -104 596 -183 b 354 -242 431 -235 392 -242 b 180 -177 292 -242 235 -223 b 135 -99 154 -157 140 -131 b 132 -59 134 -85 132 -72 b 141 7 132 -37 135 -16 b 449 274 189 160 297 243 b 477 278 459 276 468 276 b 546 203 517 278 539 253 b 517 157 550 177 533 166 b 485 143 507 153 497 143 l 482 143 b 467 148 478 143 472 144 b 374 183 438 170 406 181 b 264 118 333 183 292 161 b 238 48 246 92 238 69 b 261 -9 238 29 245 10 b 383 -73 287 -39 337 -73 b 412 -68 392 -73 402 -72 b 631 164 526 -27 586 59 b 649 252 644 193 649 222 b 636 328 649 278 645 304 b 504 423 615 400 579 429 b 242 318 408 415 317 387 b 29 -158 104 190 29 33 b 30 -176 29 -164 29 -170 b 115 -364 42 -246 52 -315 b 307 -429 177 -410 240 -429 b 444 -405 351 -429 397 -420 z',\n },\n timeSigCutCommon: {\n x_min: 20,\n x_max: 695,\n y_min: -687.0379164869064,\n y_max: 687,\n ha: 1374.0379164869064,\n o: 'm 564 -989 b 595 -945 585 -991 589 -963 l 599 -922 b 605 -628 600 -824 603 -726 l 609 -399 b 878 -251 706 -363 798 -320 b 996 -85 932 -204 976 -153 b 1001 -63 998 -78 1001 -71 b 989 -46 1001 -56 998 -49 b 978 -43 985 -45 982 -43 b 950 -59 968 -43 959 -49 b 733 -216 894 -132 815 -177 b 611 -259 694 -235 652 -249 b 616 -20 612 -179 615 -99 b 680 29 642 -7 665 9 b 698 43 685 36 690 40 b 870 251 792 82 840 160 b 877 294 874 265 877 279 b 818 410 877 338 855 382 b 683 458 779 442 730 448 b 625 468 664 462 644 465 l 625 514 b 638 958 626 662 636 811 b 626 989 638 979 635 989 b 603 981 621 989 613 986 b 422 840 534 945 481 888 b 412 805 412 832 413 818 b 426 713 410 773 420 743 b 445 678 429 690 435 678 b 474 691 452 678 461 683 b 563 755 503 710 530 732 b 564 724 564 740 564 733 b 559 469 563 639 560 554 b 462 454 526 469 494 464 b 112 143 302 399 199 281 b 33 -94 66 71 45 -10 b 29 -148 30 -112 29 -131 b 105 -351 29 -223 52 -291 b 359 -455 171 -426 258 -451 b 517 -431 409 -451 464 -446 l 539 -422 l 539 -477 b 533 -739 536 -563 539 -651 b 530 -824 531 -768 530 -795 b 546 -948 530 -865 533 -907 b 564 -989 552 -962 543 -989 z m 410 -288 b 193 -197 328 -288 253 -264 b 141 -60 160 -161 141 -108 b 157 6 141 -35 147 -12 b 259 158 189 58 217 112 b 438 291 311 215 364 266 b 528 305 468 301 498 305 b 554 304 537 305 546 304 b 553 212 554 274 554 242 b 426 115 498 199 446 164 b 416 68 419 99 416 84 b 425 12 416 49 420 30 b 474 -39 432 -17 448 -32 b 513 -43 487 -42 498 -43 b 547 -40 524 -43 536 -42 l 543 -272 b 461 -285 516 -278 488 -281 b 410 -288 444 -287 426 -288 z m 694 197 b 668 203 685 197 677 199 b 621 216 654 210 638 215 b 622 294 622 242 622 268 b 706 268 651 287 678 278 b 746 235 721 261 734 249 b 752 222 749 230 752 226 b 743 213 752 219 749 215 b 694 197 727 206 711 197 z',\n },\n timeSigPlus: {\n x_min: 0,\n x_max: 661,\n y_min: -358,\n y_max: 358,\n ha: 716,\n o: 'm 605 -516 b 629 -490 624 -516 629 -507 b 628 -475 629 -485 628 -481 b 613 -131 624 -405 616 -174 b 612 -96 612 -114 612 -96 l 647 -98 b 897 -115 730 -99 814 -109 b 940 -89 919 -117 935 -109 b 952 -24 946 -69 952 -46 b 948 9 952 -14 950 -3 b 912 39 942 26 933 37 b 609 60 822 48 609 60 b 616 392 609 60 608 291 b 567 488 619 436 605 467 b 511 516 550 498 531 514 b 498 511 507 516 503 514 b 478 446 475 501 480 469 b 467 150 474 348 469 249 b 465 59 465 121 465 59 l 372 49 b 73 14 272 36 173 24 b 49 13 65 13 56 13 b 0 -33 9 13 0 6 b 60 -141 0 -117 6 -140 b 112 -135 73 -141 91 -140 b 413 -102 213 -125 314 -112 b 464 -98 441 -99 464 -98 l 464 -145 b 477 -456 464 -249 468 -353 b 526 -510 478 -488 491 -507 b 589 -513 546 -511 569 -510 b 605 -516 595 -514 600 -516 z',\n },\n timeSigPlusSmall: {\n x_min: 0,\n x_max: 418,\n y_min: -197,\n y_max: 199,\n ha: 396,\n o: 'm 301 -284 b 330 -238 320 -284 324 -255 b 348 -46 350 -176 341 -111 b 374 -20 351 -27 356 -23 b 481 -17 409 -16 445 -17 b 566 -9 510 -17 537 -16 b 602 3 579 -7 602 -16 b 566 29 602 19 582 24 b 526 33 553 32 539 33 b 384 39 478 36 432 39 b 356 62 363 39 356 42 l 356 68 b 359 177 359 104 359 141 l 359 251 b 341 287 359 264 361 285 b 311 255 324 287 314 272 b 310 228 311 246 310 236 l 301 69 b 275 39 301 49 295 39 l 271 39 b 210 40 251 40 230 40 b 167 39 196 40 181 40 b 89 40 141 37 115 40 b 24 30 68 40 46 37 b 0 17 17 27 0 30 l 0 13 b 27 -17 3 0 7 -13 b 91 -22 49 -22 71 -22 b 153 -22 115 -22 137 -20 l 275 -22 b 295 -40 289 -22 295 -27 l 295 -48 b 288 -235 288 -109 287 -171 b 287 -264 288 -243 287 -253 b 301 -284 287 -275 289 -284 z',\n },\n timeSigMinus: {\n x_min: 0,\n x_max: 662,\n y_min: -54,\n y_max: 55,\n ha: 109,\n o: 'm 39 -78 b 49 -76 42 -78 45 -76 b 452 -75 94 -75 272 -75 b 861 -76 632 -75 814 -76 b 953 -20 927 -79 953 -66 b 948 27 953 -7 950 9 b 946 37 948 30 948 35 b 896 79 940 63 929 79 b 471 78 827 78 648 78 l 42 78 b 0 37 14 78 0 69 b 23 -66 0 0 17 -32 b 39 -78 24 -75 32 -76 z',\n },\n timeSigParensRight: {\n x_min: 0,\n x_max: 274.26483738379414,\n y_min: -722.6326530612245,\n y_max: 725,\n ha: 1447.6326530612246,\n o: 'm 37 -1038 b 69 -1031 48 -1044 59 -1038 b 88 -1015 76 -1027 82 -1021 b 164 -886 120 -976 147 -933 b 333 -351 233 -711 292 -534 b 395 118 366 -204 399 -59 b 389 245 392 144 392 194 b 120 996 369 521 265 766 b 68 1044 99 1030 84 1044 b 19 988 50 1044 36 1024 b 0 922 7 965 0 945 b 20 858 0 901 6 881 b 259 215 141 660 236 449 b 271 -1 266 143 271 71 b 252 -239 271 -82 265 -161 b 148 -667 228 -384 183 -524 b 39 -1009 120 -785 66 -893 b 33 -1031 37 -1017 33 -1024 b 37 -1038 33 -1034 35 -1037 z',\n },\n timeSigParensRightSmall: {\n x_min: 0,\n x_max: 154.4025307335204,\n y_min: -422,\n y_max: 422,\n ha: 844,\n o: 'm 43 -608 b 60 -598 48 -608 53 -605 b 117 -511 82 -572 102 -543 b 222 23 193 -350 219 -177 b 213 166 225 55 216 109 b 115 531 206 294 174 416 b 45 603 99 562 76 588 b 30 608 39 606 35 608 b 10 598 23 608 17 603 b 0 546 3 590 0 570 b 23 451 0 507 9 458 b 102 351 66 429 84 390 b 167 42 150 252 167 148 b 163 -49 167 12 166 -19 b 35 -449 151 -192 121 -330 b 14 -504 22 -467 14 -485 b 17 -527 14 -511 16 -520 l 30 -590 b 43 -608 33 -603 37 -608 z',\n },\n timeSigParensLeft: {\n x_min: 0.5555555555555556,\n x_max: 399.6216117372966,\n y_min: -728,\n y_max: 728,\n ha: 1456,\n o: 'm 562 -1048 b 573 -1043 566 -1048 570 -1047 b 553 -988 582 -1025 564 -1004 b 472 -884 527 -952 497 -920 b 210 -354 366 -717 275 -541 b 148 -6 170 -240 148 -124 b 160 148 148 45 153 96 b 315 678 189 331 242 508 b 431 901 350 755 380 834 b 459 950 451 926 461 939 b 435 995 459 962 451 972 b 364 1048 405 1034 383 1048 b 305 996 343 1048 325 1028 b 127 624 226 881 174 753 b 1 30 56 432 9 235 b 1 -32 1 9 0 -12 b 180 -629 13 -245 92 -438 b 363 -936 230 -739 298 -835 b 526 -1041 402 -995 448 -1041 b 562 -1048 537 -1040 552 -1048 z',\n },\n timeSigParensLeftSmall: {\n x_min: 0,\n x_max: 173.45497224367904,\n y_min: -405,\n y_max: 404,\n ha: 809,\n o: 'm 197 -583 b 222 -553 212 -582 219 -566 b 229 -497 226 -534 229 -516 b 213 -425 229 -472 225 -448 b 102 -177 173 -344 132 -262 b 62 30 78 -111 58 -42 b 91 183 66 82 75 134 b 215 426 118 271 156 356 b 249 552 246 465 252 505 b 230 582 249 563 246 582 b 197 563 219 582 206 576 b 71 356 144 500 105 429 b 0 50 26 259 3 158 b 13 -112 4 -3 7 -58 b 176 -559 29 -275 105 -416 b 196 -583 180 -569 186 -583 z',\n },\n noteheadDoubleWhole: {\n x_min: -0.4444444444444444,\n x_max: 614.1875,\n y_min: -223.03296670127517,\n y_max: 223,\n ha: 446.0329667012752,\n o: 'm 35 -321 b 62 -266 58 -318 58 -288 l 62 -194 b 63 50 62 -114 63 -32 b 60 189 63 96 63 143 b 43 300 59 226 60 265 b 29 321 40 308 39 321 l 26 321 b 0 292 13 318 0 310 b 0 248 0 278 -1 262 b 6 147 4 215 6 181 b 4 48 6 114 4 81 b 6 0 4 32 6 16 b 7 -36 7 -12 7 -24 l 7 -52 b 6 -156 7 -86 6 -121 b 19 -275 6 -196 9 -236 b 35 -321 23 -291 16 -323 z m 847 -314 b 871 -288 860 -315 867 -300 b 884 -187 881 -255 886 -222 b 876 115 878 -86 876 14 b 877 255 876 161 876 209 b 868 291 877 268 873 279 b 855 304 867 301 863 304 b 844 301 852 304 848 304 b 822 265 825 292 822 278 b 824 251 822 259 822 255 b 822 170 822 225 822 197 l 822 -20 b 835 -284 827 -86 825 -186 b 847 -314 837 -295 835 -311 z m 757 -291 b 793 -171 796 -255 792 -212 b 795 -49 795 -131 795 -91 b 786 207 795 36 791 121 b 779 240 786 217 783 229 b 766 258 776 246 776 258 b 762 256 765 258 763 256 b 739 236 752 253 740 252 b 733 177 737 216 732 197 b 737 20 737 125 739 73 l 737 -107 b 740 -202 737 -138 739 -170 b 757 -291 740 -230 743 -261 z m 128 -261 b 144 -251 135 -264 141 -256 b 158 -203 156 -236 157 -220 b 161 -137 161 -181 161 -158 b 157 30 161 -81 157 -26 b 158 76 157 45 157 60 l 158 101 b 156 225 158 141 158 183 b 137 253 156 235 154 253 l 134 253 b 109 222 120 251 109 242 b 104 91 108 179 104 134 b 108 -58 104 42 109 -9 b 107 -105 108 -73 108 -89 b 105 -127 107 -112 107 -120 b 118 -245 105 -167 114 -204 b 128 -261 118 -252 121 -259 z m 488 -242 b 693 -79 595 -249 685 -166 l 693 -55 b 690 0 693 -36 691 -17 b 540 187 684 84 621 164 b 449 200 508 196 480 200 b 210 104 363 200 282 163 b 186 56 196 92 186 76 b 207 -82 186 9 192 -37 b 300 -204 225 -132 248 -181 b 488 -242 356 -229 415 -240 z m 490 -88 b 449 -86 477 -88 464 -88 b 287 -56 399 -85 341 -78 b 258 -33 275 -52 258 -48 b 282 -7 258 -20 272 -13 b 458 43 340 23 399 43 b 580 14 497 43 537 35 b 618 -20 606 1 619 -9 b 592 -58 618 -30 609 -42 b 490 -88 562 -82 528 -88 z',\n },\n noteheadWhole: {\n x_min: 0,\n x_max: 380.16649762501584,\n y_min: -186.17102907059297,\n y_max: 165,\n ha: 351.17102907059297,\n o: 'm 547 40 b 223 -268 543 -151 367 -259 b 102 -233 180 -271 143 -248 l 62 -216 b 0 -127 22 -197 0 -166 b 6 -91 0 -115 1 -104 b 122 141 33 -9 69 71 b 327 238 170 204 249 238 b 514 158 397 238 467 212 b 547 40 544 125 549 84 z m 248 -107 b 384 -63 295 -102 341 -88 b 426 -23 402 -53 415 -40 b 435 3 432 -14 435 -6 b 413 32 435 14 428 24 b 301 73 376 49 343 73 b 272 69 291 73 282 72 b 121 -35 207 53 157 20 b 111 -58 117 -42 111 -50 b 125 -75 111 -65 115 -71 b 248 -107 164 -89 202 -107 z',\n },\n noteheadHalf: {\n x_min: 0,\n x_max: 334,\n y_min: -174,\n y_max: 175,\n ha: 349,\n o: 'm 480 56 b 167 -251 478 -115 331 -251 b 94 -242 143 -251 118 -248 b 9 -141 43 -229 20 -192 b 0 -68 3 -115 0 -91 b 284 249 0 95 127 200 b 304 252 289 251 297 252 b 481 78 374 252 481 170 b 480 56 481 71 481 63 z m 213 -102 b 399 6 274 -81 341 -48 b 402 17 400 7 402 13 b 399 27 402 22 400 26 b 311 94 373 53 353 88 b 292 95 305 95 300 95 b 130 27 230 95 181 55 b 69 -62 98 9 62 -29 b 161 -98 76 -98 128 -91 b 213 -102 174 -101 186 -101 z',\n },\n noteheadBlack: {\n x_min: 0,\n x_max: 334.04644433966797,\n y_min: -164,\n y_max: 164,\n ha: 328,\n o: 'm 112 -233 b 141 -236 122 -235 131 -236 b 481 104 279 -236 485 -48 b 403 222 477 141 478 192 b 334 236 382 232 359 236 b 1 -59 180 236 13 59 b 0 -85 1 -68 0 -76 b 112 -233 0 -157 32 -215 z',\n },\n noteheadXDoubleWhole: {\n x_min: 0,\n x_max: 730,\n y_min: -266,\n y_max: 267,\n ha: 533,\n o: 'm 1018 -373 b 1032 -361 1025 -376 1028 -367 b 1051 -287 1047 -338 1051 -314 b 1050 -252 1051 -276 1051 -264 b 1030 186 1031 -107 1037 40 b 1031 266 1028 213 1031 239 b 1018 363 1031 300 1028 331 b 1005 384 1015 373 1017 384 l 1004 384 b 984 363 992 384 986 373 b 982 343 982 356 982 348 b 981 235 982 307 981 271 b 996 -285 981 60 986 -112 b 1009 -360 998 -311 1005 -336 b 1018 -373 1011 -364 1014 -373 z m 16 -383 b 49 -328 39 -367 48 -350 b 69 56 58 -202 62 -73 b 75 212 72 107 72 160 b 78 278 76 233 78 255 b 59 382 78 312 73 347 b 29 328 33 372 29 350 b 13 -29 29 209 23 88 b 3 -222 7 -95 10 -157 b 0 -265 1 -236 0 -252 b 16 -383 0 -304 6 -343 z m 923 -314 b 955 -240 948 -289 952 -265 b 965 -65 962 -181 965 -125 b 963 0 965 -45 965 -22 b 962 111 960 37 962 73 b 953 240 962 154 960 197 b 939 275 952 253 952 275 b 913 239 924 274 913 258 b 913 173 914 217 913 194 b 914 135 913 160 913 147 b 920 27 919 98 920 63 b 909 -128 920 -26 917 -78 b 906 -179 906 -147 906 -163 b 923 -314 906 -223 913 -266 z m 121 -301 b 143 -272 134 -301 138 -284 b 147 -255 145 -268 145 -261 b 173 160 161 -117 166 22 b 173 233 173 184 174 209 b 157 264 171 243 171 264 b 137 235 143 264 138 249 b 132 207 135 226 132 216 b 121 43 128 153 124 96 b 105 -186 117 -36 105 -111 b 111 -269 105 -215 107 -242 b 121 -301 114 -281 104 -300 z m 210 -238 b 376 -193 274 -239 327 -226 b 471 -134 406 -173 439 -154 b 534 -94 491 -120 513 -107 b 671 -192 579 -127 624 -161 b 733 -226 691 -204 708 -228 b 746 -225 737 -228 742 -226 b 845 -204 782 -226 814 -213 b 868 -194 854 -203 865 -203 b 852 -173 871 -183 860 -179 b 661 -40 789 -128 724 -84 b 642 -27 654 -36 648 -32 b 861 114 716 17 791 63 b 886 132 870 120 886 121 l 886 137 b 852 164 883 151 867 161 b 776 176 827 170 801 176 b 685 145 744 176 714 168 b 530 45 638 107 583 76 b 403 132 487 73 444 101 b 279 176 364 161 324 171 b 223 160 259 176 229 176 b 258 115 215 141 242 127 b 431 -17 314 71 372 26 b 173 -196 341 -73 253 -130 b 157 -209 168 -200 157 -203 b 158 -215 157 -212 157 -215 b 183 -236 166 -223 168 -235 b 210 -238 194 -236 206 -239 z m 768 -207 b 533 -40 687 -150 609 -94 b 321 -173 462 -85 392 -130 b 261 -194 304 -184 287 -196 b 239 -193 253 -196 246 -194 b 387 -95 294 -157 340 -125 b 505 -20 426 -71 465 -45 l 484 -4 b 353 89 441 27 396 56 b 320 115 341 96 330 107 b 297 141 311 124 297 132 b 300 148 297 144 298 145 b 336 135 311 164 324 143 b 528 -4 400 89 464 42 l 723 121 b 770 140 737 131 753 138 b 792 132 779 140 789 141 b 778 115 795 122 783 120 b 586 -6 714 75 651 35 b 557 -24 576 -13 567 -19 b 726 -147 613 -66 670 -109 b 768 -207 744 -161 765 -173 z',\n },\n noteheadXWhole: {\n x_min: 0,\n x_max: 506,\n y_min: -143.0823320899293,\n y_max: 144,\n ha: 287.0823320899293,\n o: 'm 53 -206 b 219 -163 117 -207 170 -196 b 314 -102 249 -141 282 -122 b 377 -63 334 -89 356 -76 b 514 -161 422 -96 468 -128 b 576 -196 534 -174 552 -196 b 589 -193 580 -196 585 -196 b 688 -174 625 -194 657 -181 b 711 -158 698 -171 711 -173 b 696 -143 711 -151 701 -147 b 503 -9 632 -98 567 -52 l 485 4 b 704 145 559 49 634 95 b 729 164 711 150 729 151 l 729 168 b 696 196 726 183 710 193 b 621 207 671 202 645 207 b 528 177 589 207 557 200 b 373 76 480 140 426 108 b 246 164 330 104 287 132 b 122 206 207 193 167 203 b 66 192 102 207 72 207 b 99 147 58 173 85 158 b 274 14 157 102 215 58 b 16 -164 184 -42 96 -98 b 0 -179 12 -168 0 -170 b 1 -183 0 -180 0 -183 b 26 -204 6 -193 12 -204 b 53 -206 37 -206 49 -206 z m 611 -177 b 376 -9 530 -118 452 -63 l 164 -143 b 104 -164 147 -154 130 -164 b 82 -161 96 -164 89 -164 b 230 -65 137 -125 183 -95 l 347 12 b 327 26 341 16 334 22 l 196 121 b 163 147 184 128 173 137 b 140 173 154 154 140 163 b 143 180 140 176 141 177 b 179 166 154 194 167 174 l 372 27 l 566 153 b 613 171 580 161 596 170 b 635 160 624 171 635 174 b 621 147 635 153 626 150 l 429 24 b 400 6 419 19 409 13 b 569 -117 456 -35 513 -75 b 611 -177 588 -130 608 -143 z',\n },\n noteheadXHalf: {\n x_min: 0,\n x_max: 421,\n y_min: -145.51844828189743,\n y_max: 151,\n ha: 296.51844828189746,\n o: 'm 490 -209 b 539 -207 505 -207 521 -207 b 606 -209 560 -207 583 -209 b 598 -196 602 -203 600 -199 l 406 -19 l 540 130 b 547 144 546 135 547 140 b 536 156 547 148 543 153 b 488 192 518 166 503 176 b 416 217 471 209 444 217 b 323 180 380 217 344 204 l 264 115 b 239 138 256 122 248 131 b 33 197 180 196 108 200 b 3 186 23 197 6 193 b 19 154 -1 174 10 163 b 171 12 69 107 120 59 b 19 -157 120 -45 69 -101 b 0 -177 14 -163 0 -166 b 1 -181 0 -179 0 -180 b 39 -203 9 -197 22 -203 l 186 -203 b 197 -202 190 -202 193 -200 l 213 -202 b 262 -180 228 -202 246 -199 l 314 -122 b 490 -209 363 -170 412 -216 z m 435 -148 b 291 -30 379 -112 337 -69 l 213 -118 b 190 -137 207 -125 202 -137 b 145 -111 173 -130 154 -127 b 160 -79 137 -98 151 -88 b 238 16 184 -48 212 -16 b 141 99 204 43 173 72 l 124 117 b 115 132 121 121 115 127 b 118 137 115 134 117 137 b 141 132 127 147 135 138 l 253 36 b 347 150 285 75 315 112 b 370 164 354 160 363 163 b 403 145 382 164 393 156 b 416 127 412 140 416 132 b 405 102 416 118 412 111 l 307 -10 b 413 -105 343 -42 379 -73 b 435 -148 425 -115 436 -125 z',\n },\n noteheadXBlack: {\n x_min: 0,\n x_max: 289,\n y_min: -156,\n y_max: 157,\n ha: 313,\n o: 'm 23 -225 b 69 -204 40 -223 56 -219 b 137 -131 92 -180 115 -157 l 209 -50 b 377 -197 264 -101 321 -148 b 403 -210 384 -203 393 -210 l 408 -210 b 416 -192 416 -207 416 -199 l 416 -186 b 403 -148 416 -171 413 -158 b 344 -81 384 -125 367 -101 b 252 -1 312 -55 282 -29 b 377 157 297 49 340 101 b 402 202 387 170 402 187 b 395 217 402 207 400 213 b 376 226 389 223 382 226 b 334 192 360 226 346 204 b 206 42 289 143 248 94 b 96 161 167 81 131 120 b 60 193 86 174 76 189 b 33 206 52 196 42 206 b 22 199 29 206 26 204 b 10 173 14 190 10 181 b 22 147 10 166 14 157 b 148 7 62 98 104 52 b 164 -7 154 1 158 -3 b 10 -189 111 -66 55 -122 b 0 -212 6 -197 0 -203 b 1 -217 0 -213 0 -216 b 23 -225 4 -226 14 -222 z',\n },\n noteheadCircleXDoubleWhole: {\n x_min: 0,\n x_max: 437,\n y_min: -220,\n y_max: 219.03988406941295,\n ha: 439.03988406941295,\n o: 'm 10 -304 b 40 -206 43 -275 37 -239 b 55 168 48 -81 50 45 b 53 269 56 202 55 236 b 33 315 52 287 46 314 b 3 269 9 317 4 291 b 0 239 1 259 0 249 l 0 -196 b 10 -304 1 -232 7 -268 z m 592 -317 b 621 -220 619 -287 621 -253 b 622 -121 622 -187 622 -154 b 625 -20 622 -88 622 -55 b 629 101 628 20 629 60 b 628 220 629 141 628 181 b 618 253 628 232 625 243 b 608 275 613 259 616 274 b 602 272 606 275 603 275 b 575 249 590 269 575 266 l 575 246 b 573 222 575 239 573 230 l 573 -50 b 592 -317 575 -137 570 -225 z m 79 -285 b 114 -6 96 -261 109 -131 b 117 -63 114 -24 114 -45 b 249 -242 124 -151 166 -212 b 324 -256 275 -252 300 -256 b 504 -137 406 -256 478 -209 b 505 -265 504 -180 505 -222 b 513 -282 505 -269 510 -275 b 533 -248 526 -272 528 -261 b 540 -174 539 -223 540 -199 l 540 -127 b 553 207 546 -16 549 95 b 543 232 553 216 554 232 b 518 207 530 233 518 222 b 511 118 520 177 510 148 l 511 92 b 330 216 488 174 420 223 b 301 215 320 216 311 216 b 122 65 202 204 151 163 b 114 9 117 46 114 27 b 115 75 114 32 115 53 b 101 248 115 157 109 228 b 76 206 78 242 76 225 l 76 91 b 75 -26 76 52 76 13 b 69 -189 72 -81 66 -134 b 79 -285 71 -219 76 -249 z m 317 4 b 219 109 285 40 252 75 l 209 120 b 331 153 248 141 289 151 b 420 137 360 153 390 147 b 446 120 435 131 442 127 l 436 108 l 328 -7 z m 215 -131 b 216 -101 215 -122 215 -114 b 219 -45 217 -82 219 -63 b 197 94 219 3 213 49 l 197 95 b 199 94 199 95 199 94 l 310 -27 b 233 -108 285 -55 259 -81 z m 442 -141 b 432 -122 441 -134 436 -128 l 344 -26 l 426 58 l 445 81 b 444 75 445 78 444 76 b 428 -13 433 46 428 16 b 446 -104 428 -45 433 -75 b 452 -122 449 -111 452 -117 b 442 -141 452 -131 448 -137 z m 323 -190 b 272 -180 305 -187 288 -184 b 217 -158 239 -173 225 -168 l 327 -45 b 330 -48 328 -46 328 -48 b 432 -150 363 -82 393 -121 b 323 -190 400 -174 364 -189 z',\n },\n noteheadCircleXWhole: {\n x_min: 0,\n x_max: 323,\n y_min: -190,\n y_max: 184.44625787787314,\n ha: 374.4462578778731,\n o: 'm 156 -258 b 240 -274 184 -268 213 -274 b 455 -101 347 -274 441 -202 b 465 19 462 -60 465 -22 b 464 71 465 36 465 52 b 246 265 455 194 370 274 b 216 264 236 265 226 264 b 12 94 102 251 45 203 b 0 13 3 66 1 40 b 4 -55 0 -10 3 -32 b 156 -258 14 -154 60 -222 z m 245 10 b 233 23 242 14 238 19 b 121 144 196 65 158 104 l 109 154 b 249 192 156 179 202 192 b 351 174 284 192 317 186 b 380 154 366 168 376 163 b 379 153 380 154 380 153 b 369 141 376 148 372 145 b 245 10 327 98 287 53 z m 115 -131 b 118 -96 117 -121 117 -111 b 121 -27 120 -73 121 -50 b 98 124 121 24 115 75 b 96 127 96 125 98 125 b 99 125 98 127 98 125 b 225 -12 140 79 181 33 l 138 -105 b 115 -131 131 -114 122 -121 z m 376 -143 b 363 -121 374 -134 369 -128 b 265 -12 331 -85 298 -48 l 357 85 b 379 111 364 94 372 101 b 377 102 379 108 377 105 b 359 4 364 71 359 37 b 382 -99 359 -32 366 -66 b 387 -121 384 -108 386 -115 b 376 -143 387 -130 382 -135 z m 239 -197 b 181 -187 220 -194 200 -192 b 121 -161 145 -177 128 -173 b 243 -33 161 -118 203 -75 l 248 -36 b 364 -153 285 -75 320 -118 b 239 -197 327 -180 287 -197 z',\n },\n noteheadCircleXHalf: {\n x_min: 0,\n x_max: 309,\n y_min: -179,\n y_max: 179,\n ha: 358,\n o: 'm 232 -258 b 435 -94 328 -258 412 -196 b 445 6 444 -60 445 -27 b 444 69 445 27 445 48 b 258 258 439 170 374 258 l 230 258 l 207 256 b 14 107 111 248 45 202 b 0 12 4 75 0 43 b 12 -82 0 -20 4 -50 b 144 -242 27 -160 69 -212 b 232 -258 174 -252 203 -258 z m 192 60 b 115 141 166 88 141 115 l 108 150 b 226 189 141 173 186 189 b 253 186 236 189 245 187 b 305 180 271 183 288 183 b 192 60 268 140 229 101 z m 56 -78 b 45 6 43 -56 45 -23 b 65 84 49 39 50 45 b 85 121 72 96 78 107 b 95 124 88 124 92 127 b 171 39 120 95 145 68 z m 360 -132 b 348 -112 359 -124 353 -118 l 300 -58 l 387 37 b 410 63 397 48 405 56 b 413 26 412 52 413 40 b 360 -132 413 -42 393 -95 z m 232 -183 b 184 -177 217 -183 202 -181 l 281 -78 b 348 -143 301 -101 323 -122 b 232 -183 318 -168 279 -183 z',\n },\n noteheadCircleX: {\n x_min: 0,\n x_max: 344,\n y_min: -179,\n y_max: 175.12551922594866,\n ha: 354.12551922594866,\n o: 'm 99 -210 b 236 -258 137 -242 186 -258 b 418 -183 305 -258 374 -230 b 495 33 475 -120 495 -48 b 494 66 495 45 494 55 b 302 252 487 183 405 256 b 181 243 262 249 222 248 b 46 171 128 236 79 219 b 0 19 14 127 0 73 b 99 -210 0 -68 35 -156 z m 245 42 l 124 156 b 200 176 145 166 170 173 b 337 183 245 181 291 184 b 377 176 351 183 364 180 b 245 42 333 131 288 86 z m 392 -99 l 285 3 l 400 121 b 418 154 409 131 418 140 b 465 50 448 130 465 94 b 405 -112 462 -17 439 -73 z m 89 -120 b 48 0 56 -82 48 -42 b 89 112 48 35 59 76 b 109 101 96 111 102 108 l 210 7 l 187 -17 b 89 -120 151 -53 125 -82 z m 176 -183 b 127 -163 158 -179 141 -171 l 252 -32 l 372 -144 b 233 -189 334 -173 285 -189 b 176 -183 215 -189 196 -187 z',\n },\n noteheadCircledDoubleWhole: {\n x_min: 0,\n x_max: 672,\n y_min: -291,\n y_max: 291,\n ha: 582,\n o: 'm 27 -419 b 43 -369 37 -403 43 -387 b 49 -82 45 -272 49 -177 b 50 370 50 69 50 219 b 30 419 50 389 50 419 b 7 369 7 419 7 389 b 0 -284 4 151 1 -66 b 16 -418 0 -328 10 -373 z m 945 -374 b 968 -282 963 -343 968 -312 b 966 -245 968 -269 968 -258 b 958 -45 959 -179 962 -111 b 948 262 949 56 952 160 b 936 377 946 301 946 340 b 922 399 933 386 933 399 l 919 397 b 897 374 909 396 899 389 b 894 308 897 353 893 331 b 904 120 899 246 903 183 b 913 -111 907 43 909 -35 b 927 -297 916 -173 919 -235 b 945 -374 930 -320 927 -347 z m 95 -347 b 120 -292 115 -325 117 -310 b 124 -223 122 -269 124 -246 b 122 -141 124 -196 122 -168 b 121 -85 121 -122 121 -104 b 462 -297 170 -209 300 -297 b 727 -219 543 -294 639 -271 b 828 -118 773 -190 808 -157 b 842 -268 831 -168 834 -219 b 851 -288 844 -275 840 -287 b 865 -272 861 -289 863 -279 b 873 -225 871 -256 873 -240 b 873 -171 873 -207 871 -190 b 858 196 868 -48 863 75 b 848 295 857 229 854 262 b 840 315 848 301 850 315 l 837 315 b 816 295 827 314 816 307 b 809 216 815 268 808 243 b 815 102 812 179 814 140 b 672 295 780 176 733 240 b 500 370 621 340 566 370 b 436 361 480 370 459 367 b 120 95 288 321 183 233 l 120 256 b 115 287 120 266 118 276 b 104 305 112 292 115 305 l 101 305 b 82 284 91 304 82 297 b 76 216 81 262 76 239 b 84 -253 78 59 79 -96 b 95 -347 84 -282 89 -311 z m 780 -33 b 779 -24 780 -30 779 -27 b 704 92 766 22 743 62 b 544 173 655 128 599 147 b 400 206 497 194 448 204 b 307 193 369 206 338 202 b 202 118 264 181 226 153 b 235 168 212 135 222 151 b 505 337 302 262 396 312 b 523 338 511 337 517 338 b 611 288 559 338 586 312 b 763 62 678 225 733 151 b 780 -33 776 26 782 -4 z m 435 -88 b 337 -23 387 -88 354 -65 b 333 6 334 -14 333 -6 b 366 86 333 35 344 66 b 456 122 390 111 423 121 b 602 27 517 122 582 88 b 606 1 605 19 606 10 b 575 -49 606 -20 596 -36 b 435 -88 530 -76 481 -82 z m 441 -269 b 194 -96 327 -262 249 -194 b 167 1 176 -62 167 -30 b 177 59 167 22 171 42 b 174 39 176 52 174 46 b 266 -104 174 -27 210 -73 b 511 -151 346 -148 435 -144 l 552 -151 b 740 -104 616 -145 683 -141 b 776 -66 756 -94 769 -81 b 700 -174 766 -105 740 -140 b 441 -269 632 -232 533 -268 z',\n },\n noteheadCircledWhole: {\n x_min: -50,\n x_max: 472,\n y_min: -231.00750990437078,\n y_max: 232,\n ha: 463.00750990437075,\n o: 'm 289 -333 b 553 -255 370 -330 465 -307 b 680 -62 635 -206 680 -138 b 662 22 680 -36 674 -7 b 500 259 626 112 573 193 b 327 334 448 304 393 334 b 264 325 307 334 287 331 b -59 49 111 284 4 193 b -72 -19 -68 26 -72 4 b 289 -333 -72 -192 84 -334 z m 608 -69 b 605 -60 606 -66 606 -63 b 530 56 592 -14 570 26 b 372 137 482 92 425 111 b 228 170 324 158 275 168 b 134 157 196 170 166 166 b 29 82 91 145 53 117 b 60 132 37 99 49 115 b 333 301 128 226 223 276 b 350 302 338 301 344 302 b 438 252 386 302 413 276 b 590 26 505 189 560 115 b 608 -69 603 -10 608 -40 z m 262 -124 b 164 -59 215 -124 180 -101 b 160 -32 161 -50 160 -42 b 193 50 160 -3 171 30 b 284 86 217 75 251 85 b 429 -9 344 86 409 52 b 433 -36 432 -17 433 -26 b 402 -85 433 -56 423 -72 b 262 -124 357 -112 307 -118 z m 268 -305 b 22 -132 154 -298 76 -230 b -6 -33 3 -98 -6 -65 b 3 23 -6 -14 -3 6 b 1 3 1 16 1 10 b 94 -140 1 -63 37 -109 b 338 -187 173 -184 261 -180 l 379 -187 b 566 -140 444 -181 510 -177 b 602 -102 582 -130 595 -117 b 526 -210 592 -141 567 -176 b 268 -305 459 -268 360 -304 z',\n },\n noteheadCircledHalf: {\n x_min: -50,\n x_max: 393,\n y_min: -175,\n y_max: 175,\n ha: 350,\n o: 'm 540 39 b 408 187 503 94 464 148 b 259 252 356 223 301 252 b 35 192 160 252 95 229 b -68 50 -17 160 -53 112 b -72 13 -71 37 -72 24 b 69 -204 -72 -79 -1 -161 b 246 -252 125 -238 186 -252 b 500 -164 336 -252 426 -219 b 566 -42 543 -132 566 -88 b 540 39 566 -14 557 14 z m 9 -42 b 12 -68 10 -50 10 -59 b -7 6 3 -46 -4 -22 b 131 189 1 98 55 153 b 243 220 167 206 204 215 b 261 222 249 222 255 222 b 377 161 308 222 341 189 b 435 89 402 141 420 117 b 431 92 433 89 432 91 b 346 120 402 102 372 107 b 253 143 314 135 282 143 b 85 79 193 143 138 115 b 9 -42 45 52 10 13 z m 356 39 b 343 1 356 24 351 12 b 206 -111 304 -46 259 -84 b 181 -118 196 -115 189 -118 b 156 -71 163 -118 154 -102 b 238 35 164 -22 199 9 b 324 66 264 52 294 59 b 356 39 348 71 356 62 z m 488 -78 b 392 -176 471 -125 433 -154 b 246 -225 346 -200 297 -217 b 230 -226 240 -226 235 -226 b 157 -204 203 -226 180 -215 b 78 -154 128 -190 101 -174 b 232 -184 128 -171 180 -184 b 344 -161 269 -184 307 -179 b 491 -39 405 -135 455 -94 b 500 -23 495 -33 497 -29 b 488 -78 500 -40 494 -59 z',\n },\n noteheadCircledBlack: {\n x_min: -70,\n x_max: 326,\n y_min: -168,\n y_max: 192,\n ha: 360,\n o: 'm 176 -239 b 190 -242 180 -240 186 -240 b 262 -232 213 -242 238 -235 b 469 -19 384 -225 469 -131 b 467 22 469 -6 468 9 b 383 194 455 86 436 151 b 183 276 315 249 251 275 b 32 236 134 276 85 264 b -94 88 -30 207 -75 160 b -101 30 -98 69 -101 49 b 176 -239 -101 -107 9 -251 z m 177 -212 b -30 -27 81 -213 -13 -131 b -33 17 -33 -13 -33 3 b 127 226 -33 111 14 187 b 194 239 151 233 173 238 b 301 203 232 239 266 226 b 364 134 330 184 350 160 b 233 181 341 160 279 180 b 192 171 216 181 202 179 b 13 1 117 131 46 86 b 3 -48 6 -17 3 -33 b 60 -115 3 -79 20 -101 b 203 -135 105 -131 151 -138 b 229 -138 212 -137 220 -137 b 295 -122 251 -138 274 -135 b 400 -33 337 -99 373 -71 b 228 -206 393 -125 330 -192 b 177 -212 209 -209 192 -213 z',\n },\n noteheadDoubleWholeSquare: {\n x_min: 0,\n x_max: 474,\n y_min: -209.39230484541326,\n y_max: 211,\n ha: 420.39230484541326,\n o: 'm 648 -301 b 668 -287 658 -304 665 -295 b 683 -209 678 -262 683 -235 b 677 258 681 -55 678 102 b 672 284 677 266 677 276 b 661 304 670 291 672 304 l 658 304 b 635 279 647 301 635 297 b 629 240 635 266 629 252 l 629 236 b 631 225 629 232 631 228 b 583 194 631 197 611 194 l 528 194 b 125 207 393 194 259 202 b 89 207 114 209 101 206 b 63 210 79 207 71 207 b 52 229 55 213 52 220 b 55 258 52 238 55 248 b 53 266 55 261 55 264 b 36 298 48 276 53 298 l 35 298 b 4 264 14 298 7 284 b 0 187 0 238 0 213 b 4 50 0 143 3 96 b 6 -10 6 30 6 10 b 4 -130 6 -50 4 -91 b 12 -268 4 -176 6 -222 b 19 -287 13 -275 10 -284 b 35 -275 26 -288 30 -281 b 52 -220 50 -261 48 -239 b 75 -199 55 -206 58 -199 l 141 -197 l 274 -197 l 634 -197 b 639 -281 635 -219 636 -251 b 648 -301 641 -288 638 -300 z m 72 -66 b 55 -56 59 -69 55 -65 l 55 -50 b 53 53 55 -16 55 20 b 69 73 53 69 60 72 l 79 72 b 330 65 163 66 246 63 l 592 65 b 634 81 606 65 618 71 b 635 -30 634 39 635 6 b 605 -58 635 -49 628 -58 b 451 -60 553 -60 503 -60 b 219 -59 373 -60 295 -59 l 166 -59 b 72 -66 134 -59 104 -60 z',\n },\n noteheadSquareWhite: {\n x_min: 0,\n x_max: 350,\n y_min: -131,\n y_max: 131,\n ha: 262,\n o: 'm 468 -189 b 485 -187 474 -189 480 -189 b 500 -176 495 -187 500 -183 b 498 -168 500 -174 498 -171 b 497 -166 498 -167 497 -167 l 498 -164 b 504 -154 503 -163 504 -158 b 503 -138 504 -150 503 -144 l 503 -135 l 503 -94 b 492 66 500 -45 494 10 b 488 135 492 89 488 112 b 484 150 488 141 485 145 b 482 154 482 151 482 153 b 429 189 472 177 456 189 b 53 184 304 186 179 186 l 39 184 b 33 181 36 183 35 183 b 12 160 20 181 12 177 b 0 -109 9 71 4 -19 b 19 -137 0 -125 7 -134 b 23 -151 19 -141 20 -145 b 85 -187 37 -173 55 -187 b 468 -189 212 -187 340 -187 z m 246 -125 l 63 -125 b 66 -111 65 -122 66 -117 b 73 72 69 -50 71 10 l 73 130 b 88 128 78 128 82 128 b 148 130 108 130 128 130 b 271 128 190 130 230 128 l 271 130 l 420 130 b 428 20 425 92 425 56 l 436 -127 l 246 -127 z',\n },\n noteheadSquareBlack: {\n x_min: 0,\n x_max: 342,\n y_min: -129.98961937716263,\n y_max: 132.44444444444446,\n ha: 262.4340638216071,\n o: 'm 217 190 b 439 186 304 190 372 190 b 467 180 448 184 458 183 b 492 145 484 176 492 167 b 490 -124 490 56 490 -33 b 488 -141 490 -130 488 -135 b 456 -170 488 -163 478 -168 b 118 -183 344 -176 230 -181 b 29 -184 89 -183 60 -192 b 0 -148 4 -180 0 -168 b 1 29 1 -89 1 -30 l 1 156 b 36 190 3 187 4 190 b 217 190 102 192 168 190 z',\n },\n noteheadTriangleDownDoubleWhole: {\n x_min: 0,\n x_max: 510,\n y_min: -213,\n y_max: 213,\n ha: 426,\n o: 'm 16 -307 b 30 -289 26 -307 29 -297 b 43 -236 36 -272 42 -253 l 65 219 b 59 285 62 240 69 264 b 46 307 55 294 58 307 l 43 307 b 19 279 30 304 20 295 b 13 184 17 248 14 216 b 1 -125 9 81 7 -23 b 0 -163 0 -138 0 -150 b 6 -287 0 -204 4 -245 b 16 -307 6 -295 7 -305 z m 707 -294 b 734 -213 733 -271 734 -242 b 729 245 733 -60 730 92 b 719 285 729 259 724 272 b 707 298 716 291 714 298 l 703 298 b 685 284 696 297 687 292 b 683 253 683 274 683 264 b 691 -181 685 108 685 -36 b 707 -294 693 -217 690 -256 z m 108 -238 b 125 -203 125 -238 121 -216 b 127 -190 127 -199 127 -194 b 120 -138 127 -173 120 -156 l 120 -66 b 114 167 120 12 118 89 l 118 161 b 314 -153 184 58 248 -48 b 350 -184 327 -173 338 -184 b 387 -154 361 -184 374 -174 b 567 108 449 -68 508 20 b 626 193 588 137 608 164 b 615 -132 622 85 619 -24 l 615 -166 b 619 -207 615 -180 615 -194 b 638 -226 622 -217 629 -225 b 651 -209 648 -226 649 -216 b 658 -177 655 -199 658 -187 l 658 -171 b 667 49 655 -98 667 -23 b 665 88 667 62 667 75 b 665 220 665 135 667 179 b 641 265 664 238 660 265 b 626 243 629 265 626 255 b 628 222 626 236 628 228 b 612 225 624 223 619 225 b 384 223 537 223 461 223 l 384 225 l 170 225 b 131 215 157 225 144 222 b 112 200 122 210 117 206 b 88 266 111 225 108 249 b 75 239 76 259 75 249 b 73 147 75 207 73 179 b 82 -189 73 35 79 -78 b 84 -203 82 -194 82 -199 b 108 -238 86 -219 91 -238 z m 361 -79 b 295 78 336 -26 314 26 b 284 151 287 101 284 125 b 310 177 284 171 291 177 b 419 176 346 176 383 174 l 423 176 b 445 153 441 176 445 168 l 445 147 b 361 -79 442 65 415 -10 z',\n },\n noteheadTriangleDownWhole: {\n x_min: 0,\n x_max: 366,\n y_min: -145,\n y_max: 138,\n ha: 283,\n o: 'm 242 -209 b 279 -180 253 -209 266 -200 b 459 84 341 -92 400 -4 b 520 170 480 112 501 141 b 527 189 524 177 527 183 b 504 199 527 196 520 199 l 55 199 b 23 190 45 199 33 196 b 0 161 9 181 0 173 b 10 135 0 154 3 145 b 206 -177 76 32 140 -73 b 242 -209 219 -199 230 -209 z m 253 -105 b 187 52 228 -52 206 0 b 176 127 179 76 176 101 b 197 151 176 144 181 151 l 202 151 b 256 150 220 151 238 150 b 311 151 275 150 294 151 b 337 128 331 151 337 144 l 337 122 b 253 -105 334 39 307 -35 z',\n },\n noteheadTriangleDownHalf: {\n x_min: -0.0833130378007211,\n x_max: 341,\n y_min: -159,\n y_max: 159,\n ha: 318,\n o: 'm 266 -229 b 282 -215 274 -229 278 -225 b 487 153 350 -92 418 30 b 491 170 490 158 491 164 b 480 189 491 177 487 183 b 425 215 464 202 448 213 b 33 226 297 217 168 222 b 13 229 29 223 22 229 b 1 222 9 229 4 228 b 14 184 -4 207 7 196 b 210 -176 81 65 145 -56 b 253 -225 222 -194 230 -213 b 266 -229 259 -226 264 -228 z m 134 22 b 147 43 138 27 141 37 b 206 163 174 79 179 127 b 213 170 209 166 212 167 l 340 167 b 193 -75 287 89 251 1 b 190 -82 192 -76 190 -79 z',\n },\n noteheadTriangleDownBlack: {\n x_min: 0,\n x_max: 346,\n y_min: -149,\n y_max: 149,\n ha: 298,\n o: 'm 229 -215 b 259 -202 238 -215 248 -210 b 284 -173 269 -194 278 -184 l 482 173 b 498 209 488 184 498 194 b 481 215 492 215 487 215 b 63 213 343 215 203 213 b 12 197 45 213 29 206 b 0 180 4 193 0 187 b 3 168 0 177 1 173 b 13 150 6 163 9 156 l 196 -189 b 229 -215 206 -206 216 -215 z',\n },\n noteheadTriangleUpDoubleWhole: {\n x_min: 0,\n x_max: 510,\n y_min: -213,\n y_max: 213,\n ha: 426,\n o: 'm 16 -307 b 30 -289 26 -307 29 -297 b 43 -236 36 -272 42 -253 l 65 219 b 59 285 62 240 69 264 b 46 307 55 294 58 307 l 43 307 b 19 279 30 304 20 295 b 13 184 17 248 14 216 b 1 -125 9 81 7 -23 b 0 -163 0 -138 0 -150 b 6 -287 0 -204 4 -245 b 16 -307 6 -295 7 -305 z m 707 -298 b 734 -217 733 -275 734 -246 b 729 240 733 -65 730 88 b 719 281 729 255 724 268 b 707 294 716 287 714 294 l 703 294 b 685 279 696 292 687 288 b 683 249 683 269 683 259 b 691 -186 685 104 685 -40 b 707 -298 693 -222 690 -261 z m 88 -266 b 112 -200 108 -249 111 -225 b 131 -215 117 -206 122 -210 b 170 -225 144 -222 157 -225 l 384 -225 l 384 -223 b 612 -225 461 -223 537 -223 b 628 -222 619 -225 624 -223 b 641 -265 628 -238 622 -265 b 665 -220 660 -265 664 -238 b 665 -88 667 -179 665 -135 b 667 -49 667 -75 667 -62 b 658 171 667 23 655 98 b 651 209 660 184 655 197 b 638 226 649 216 648 226 b 619 207 629 225 622 217 b 615 166 615 194 615 180 l 615 132 b 626 -193 619 24 622 -85 b 567 -108 608 -164 588 -137 b 387 154 508 -20 449 68 b 350 184 374 174 361 184 b 314 153 338 184 327 173 b 118 -161 248 48 184 -58 l 114 -167 b 120 66 118 -89 120 -12 l 120 138 b 127 190 120 156 127 173 b 125 203 127 194 127 199 b 108 238 121 216 125 238 b 84 203 91 238 86 219 b 82 189 82 199 82 194 b 73 -147 79 78 73 -35 b 75 -239 73 -179 75 -207 b 88 -266 75 -249 76 -259 z m 310 -177 b 284 -151 291 -177 284 -171 b 295 -78 284 -125 287 -101 b 361 79 314 -26 336 26 b 445 -147 415 10 442 -65 b 423 -176 446 -166 442 -176 l 419 -176 b 310 -177 383 -174 346 -176 z',\n },\n noteheadTriangleUpWhole: {\n x_min: 0,\n x_max: 366,\n y_min: -145,\n y_max: 138,\n ha: 283,\n o: 'm 504 -209 b 527 -199 520 -209 527 -206 b 520 -180 527 -193 524 -187 b 459 -94 501 -151 480 -122 b 279 170 400 -6 341 82 b 242 199 266 190 253 199 b 206 167 230 199 219 189 b 10 -145 140 63 76 -42 b 0 -171 3 -156 0 -164 b 23 -200 0 -183 9 -192 b 55 -209 33 -206 45 -209 z m 202 -161 b 176 -137 183 -163 176 -156 b 187 -62 176 -111 179 -86 b 253 95 206 -10 228 42 b 337 -132 307 24 334 -49 b 311 -161 338 -153 334 -161 b 256 -160 294 -161 275 -160 b 202 -161 238 -160 220 -161 z',\n },\n noteheadTriangleUpHalf: {\n x_min: 0,\n x_max: 341.0833130378007,\n y_min: -159,\n y_max: 159,\n ha: 318,\n o: 'm 458 -226 b 478 -229 462 -223 469 -229 b 490 -222 482 -229 487 -228 b 477 -184 495 -207 484 -196 b 281 176 410 -65 346 56 b 238 225 269 194 261 213 b 225 229 232 226 228 228 b 209 215 217 229 213 225 b 4 -153 141 92 73 -30 b 0 -170 1 -158 0 -164 b 12 -189 0 -177 4 -183 b 66 -215 27 -202 43 -213 b 458 -226 194 -217 323 -222 z m 151 -167 b 298 75 204 -89 240 -1 b 301 82 300 76 301 79 l 357 -22 b 344 -43 353 -27 350 -37 b 285 -163 317 -79 312 -127 b 278 -170 282 -166 279 -167 z',\n },\n noteheadTriangleUpBlack: {\n x_min: 0,\n x_max: 346,\n y_min: -149,\n y_max: 149,\n ha: 298,\n o: 'm 481 -215 b 498 -209 487 -215 492 -215 b 482 -173 498 -194 488 -184 l 284 173 b 259 202 278 184 269 194 b 229 215 248 210 238 215 b 196 189 216 215 206 206 l 13 -150 b 3 -168 9 -156 6 -163 b 0 -180 1 -173 0 -177 b 12 -197 0 -187 4 -193 b 63 -213 29 -206 45 -213 b 481 -215 203 -213 343 -215 z',\n },\n noteheadSlashedDoubleWhole1: {\n x_min: 0,\n x_max: 697,\n y_min: -290,\n y_max: 290,\n ha: 580,\n o: 'm 20 -418 b 42 -376 40 -418 37 -392 b 43 -356 45 -370 43 -363 l 43 -348 b 50 -197 43 -298 49 -248 b 78 317 58 -24 69 147 b 72 387 75 343 82 366 b 52 418 68 397 69 418 l 49 416 b 24 380 33 413 24 399 b 19 235 23 333 20 284 b 7 -82 14 130 10 24 b 0 -264 6 -143 0 -203 b 10 -382 0 -302 1 -343 b 20 -418 13 -393 6 -418 z m 976 -344 b 991 -331 985 -346 988 -337 b 1004 -271 999 -312 1004 -292 l 1004 -194 b 996 184 1004 -68 1001 59 b 996 281 996 216 998 249 b 984 379 995 314 991 347 b 971 397 981 392 976 396 b 952 386 965 397 959 392 b 943 361 943 380 945 370 b 937 288 939 337 937 312 b 945 158 937 245 942 203 b 959 -248 950 23 953 -112 b 966 -325 960 -274 963 -300 b 976 -344 966 -334 968 -344 z m 102 -331 b 124 -272 120 -314 122 -294 b 135 -278 127 -276 131 -278 l 141 -278 b 320 -199 206 -262 272 -252 b 348 -171 328 -189 338 -180 b 482 -199 392 -190 436 -199 b 704 -173 576 -199 641 -187 b 847 -82 760 -158 809 -130 l 855 -69 l 855 -73 b 863 -229 857 -125 860 -177 b 876 -255 863 -239 863 -255 b 893 -233 886 -255 888 -242 b 900 -189 899 -219 900 -203 l 900 66 b 900 192 899 108 900 150 b 893 301 900 228 899 265 b 877 325 890 310 893 325 l 876 325 b 855 301 865 324 855 315 b 850 202 852 268 847 235 b 854 50 854 151 854 101 b 821 99 847 68 835 85 b 733 167 795 127 765 148 b 831 253 766 196 799 225 b 851 265 837 258 844 261 b 829 282 840 275 835 279 b 772 295 815 291 795 295 b 685 271 739 295 704 287 b 624 215 665 252 645 233 l 566 232 b 527 239 553 236 540 239 b 490 228 514 239 501 236 b 451 219 475 217 467 219 b 275 176 389 219 331 200 b 184 53 216 150 184 105 b 199 -14 184 32 189 10 b 262 -108 215 -52 236 -82 l 125 -230 b 134 225 130 -78 132 73 b 135 269 134 239 135 255 b 121 330 135 291 132 311 b 95 287 99 323 95 307 b 92 124 94 233 95 179 b 85 -143 88 36 85 -53 b 89 -300 85 -196 86 -248 b 102 -331 89 -311 89 -323 z m 367 -14 b 350 43 359 3 351 22 b 392 122 350 82 363 107 b 544 171 439 150 492 160 b 572 168 554 174 563 171 z m 564 -132 b 467 -105 528 -138 497 -121 b 442 -89 458 -101 449 -95 l 658 101 b 690 30 677 82 690 59 b 688 10 690 24 690 17 b 564 -132 678 -45 611 -127 z',\n },\n noteheadSlashedWhole1: {\n x_min: -76,\n x_max: 498,\n y_min: -168,\n y_max: 168,\n ha: 336,\n o: 'm -79 -242 b 55 -202 -32 -236 14 -228 l 145 -143 b 333 -171 203 -166 265 -171 b 429 -164 361 -174 395 -168 b 582 -130 481 -158 534 -154 b 657 -20 631 -105 657 -65 b 619 68 657 9 644 40 b 552 120 599 89 577 107 b 582 138 562 127 572 132 b 717 226 625 167 668 194 b 638 242 688 236 662 242 b 543 213 603 242 573 232 b 455 154 514 194 484 174 b 325 199 412 167 367 179 b 233 215 298 210 265 215 b 75 156 173 215 124 186 b 0 27 24 122 0 76 b 66 -98 0 -17 22 -63 b 72 -102 69 -99 71 -101 b -89 -209 17 -137 -36 -173 b -109 -225 -95 -213 -109 -216 b -108 -229 -109 -226 -108 -228 b -85 -242 -104 -239 -95 -242 z m 181 -29 b 167 14 171 -13 167 1 b 187 62 167 30 173 46 b 301 137 217 99 258 118 b 312 138 304 138 308 138 l 317 138 b 389 109 340 125 364 118 l 383 105 z m 337 -109 b 239 -82 301 -107 268 -99 l 468 65 b 482 24 477 53 482 40 b 480 4 482 19 481 12 b 337 -109 467 -56 399 -111 z',\n },\n noteheadSlashedHalf1: {\n x_min: -79.3435119522494,\n x_max: 471,\n y_min: -184,\n y_max: 184,\n ha: 368,\n o: 'm -112 -251 b -94 -265 -107 -261 -101 -264 b -52 -242 -79 -265 -63 -249 l 89 -148 b 212 -180 125 -170 167 -179 b 238 -177 220 -180 229 -179 l 262 -180 b 346 -171 289 -180 318 -176 b 576 -91 431 -166 507 -140 b 641 4 619 -60 641 -29 b 592 96 641 35 625 65 l 583 104 b 533 147 567 121 550 134 l 613 200 b 678 261 636 216 664 232 b 658 265 671 264 664 265 b 611 248 641 265 625 258 l 491 171 b 337 204 444 194 392 204 b 281 200 318 204 300 204 b 27 62 180 187 92 145 b -1 -19 9 37 -1 10 b 36 -107 -1 -50 12 -82 b 52 -121 42 -112 46 -117 l -72 -203 b -112 -251 -91 -216 -122 -233 z m 161 -49 b 158 -29 160 -42 158 -35 b 183 33 158 -7 167 16 b 395 137 239 95 311 122 b 420 125 405 134 413 130 z m 276 -128 b 261 -131 271 -130 266 -131 b 181 -86 233 -131 203 -114 l 454 94 l 468 72 b 481 36 477 60 481 49 b 469 1 481 26 477 14 b 276 -128 422 -66 354 -105 z',\n },\n noteheadSlashedBlack1: {\n x_min: -110,\n x_max: 452,\n y_min: -190,\n y_max: 190,\n ha: 380,\n o: 'm -131 -274 b -102 -262 -121 -272 -111 -266 b 7 -186 -65 -239 -29 -212 b 50 -157 22 -176 36 -166 b 105 -176 65 -166 84 -173 b 207 -183 140 -181 173 -183 b 239 -184 219 -184 229 -184 b 428 -91 327 -184 377 -150 b 487 43 461 -52 487 -7 b 482 76 487 53 485 65 b 459 128 478 95 469 112 b 507 161 475 138 491 150 l 651 262 b 622 274 641 271 632 274 b 605 271 616 274 611 272 b 514 233 573 262 541 252 l 422 167 b 317 203 392 190 354 203 b 271 196 301 203 285 200 b 168 157 236 186 200 173 b 6 -16 94 120 33 68 b -1 -62 1 -32 -1 -48 b 17 -125 -1 -86 4 -108 b -81 -196 -16 -148 -48 -173 b -145 -242 -102 -212 -128 -219 b -158 -256 -150 -246 -158 -251 b -157 -261 -158 -258 -157 -259 b -131 -274 -153 -269 -141 -274 z',\n },\n noteheadSlashedDoubleWhole2: {\n x_min: -0.12386605641055257,\n x_max: 697.4733477320805,\n y_min: -295,\n y_max: 295,\n ha: 590,\n o: 'm 870 -338 b 891 -315 884 -341 887 -325 b 906 -183 907 -274 903 -228 b 914 186 912 -60 904 62 b 914 240 914 203 916 222 b 916 276 913 251 916 265 b 899 300 916 289 913 300 b 871 253 874 300 871 274 b 858 -168 871 111 858 -27 b 860 -235 858 -190 860 -213 l 736 -131 b 834 -20 799 -111 834 -69 b 789 85 834 13 819 49 b 683 160 760 118 723 140 b 383 216 589 209 487 215 b 330 213 364 217 347 216 b 228 300 295 242 261 271 b 86 347 184 337 138 348 b 58 343 76 347 63 350 l 58 360 b 35 425 58 384 53 423 b 6 382 9 425 6 403 l 6 131 b 0 -164 6 33 4 -66 b 24 -327 -1 -216 6 -271 b 50 -262 46 -305 50 -284 l 50 -154 b 52 -45 50 -118 50 -81 b 58 325 55 79 58 202 b 73 310 60 320 68 315 b 94 294 79 304 86 298 b 89 271 89 287 89 278 l 89 94 b 104 -194 101 -20 88 -108 b 118 -245 107 -213 104 -248 b 140 -190 140 -243 140 -212 l 140 -62 b 132 258 140 46 138 153 l 132 259 l 235 173 b 193 132 219 161 204 148 b 153 26 167 101 153 63 b 164 -35 153 7 157 -16 b 341 -170 196 -114 261 -158 b 433 -177 372 -174 403 -177 b 619 -157 497 -177 559 -170 l 706 -230 b 799 -276 736 -258 765 -276 b 818 -274 806 -276 812 -276 l 861 -274 b 863 -312 861 -287 863 -300 b 870 -338 864 -321 858 -337 z m 966 -425 b 986 -397 979 -425 982 -408 b 991 -373 989 -390 989 -382 b 995 -239 991 -328 995 -284 b 1004 334 1001 -49 1002 143 b 995 380 1005 350 1005 367 b 982 402 989 386 992 402 l 978 400 b 949 374 965 396 950 390 b 948 333 948 360 948 346 l 948 -37 b 949 -84 949 -52 949 -68 b 946 -248 949 -132 946 -189 b 953 -396 946 -297 948 -346 b 966 -425 955 -408 950 -425 z m 624 -36 b 416 140 554 22 485 81 b 482 156 439 150 461 154 b 625 81 537 156 588 124 b 647 27 639 63 647 46 b 624 -36 647 7 638 -14 z m 469 -117 b 320 14 386 -118 320 -60 b 343 81 320 37 327 60 l 547 -95 b 469 -117 521 -105 494 -111 z',\n },\n noteheadSlashedWhole2: {\n x_min: -83,\n x_max: 510,\n y_min: -201,\n y_max: 198,\n ha: 399,\n o: 'm 734 -289 b 696 -245 726 -266 710 -256 b 586 -164 660 -217 622 -192 l 589 -161 b 654 -50 631 -135 654 -94 b 616 40 654 -19 641 13 b 305 174 536 127 420 174 b 171 151 261 174 215 167 b 166 150 170 151 168 150 b 86 209 140 170 112 189 b -94 284 32 249 -22 289 l -108 285 b -120 274 -114 285 -120 284 b -104 251 -120 266 -112 258 b 71 124 -46 209 12 166 l 85 114 b 36 72 66 102 50 89 b 0 -30 12 40 0 4 b 122 -186 0 -96 45 -160 b 343 -222 194 -210 268 -222 b 514 -197 410 -220 467 -213 l 554 -228 b 734 -289 609 -268 668 -275 z m 477 -82 b 268 73 408 -30 338 22 l 301 91 b 336 101 314 96 324 101 b 370 88 347 101 359 96 b 459 9 405 66 436 43 b 481 -56 474 -13 481 -35 b 477 -82 481 -65 480 -73 z m 310 -161 b 216 -143 276 -161 246 -156 b 166 -72 181 -128 166 -105 b 168 -46 166 -65 167 -55 b 206 26 176 -16 189 7 b 436 -140 282 -29 360 -84 b 382 -158 420 -150 402 -157 b 310 -161 357 -161 333 -161 z',\n },\n noteheadSlashedHalf2: {\n x_min: -73,\n x_max: 454,\n y_min: -188,\n y_max: 188,\n ha: 376,\n o: 'm 654 -271 b 603 -202 649 -233 625 -217 b 481 -115 563 -173 523 -144 b 564 -60 510 -101 539 -82 b 615 40 596 -33 615 4 b 609 69 615 50 613 60 b 505 167 590 120 554 151 b 336 190 451 184 392 190 b 124 134 259 190 189 171 l -42 248 b -88 271 -56 256 -75 271 b -101 265 -94 271 -98 269 b -105 252 -104 259 -105 255 b -66 210 -105 235 -82 222 l 85 107 b 0 -24 42 73 0 35 b 183 -183 0 -118 75 -184 b 262 -176 206 -180 233 -177 b 438 -135 324 -171 383 -158 b 570 -228 482 -166 527 -197 b 654 -271 595 -243 621 -259 z m 393 -53 l 311 4 l 225 65 b 392 134 274 102 331 122 b 455 50 425 141 455 101 b 439 -3 455 35 451 14 b 393 -53 425 -22 409 -37 z m 287 -121 b 246 -130 272 -127 259 -130 b 171 -89 215 -130 189 -115 b 156 -40 161 -73 156 -58 b 186 29 156 -17 166 7 l 192 35 l 359 -82 b 287 -121 337 -98 312 -111 z',\n },\n noteheadSlashedBlack2: {\n x_min: -84,\n x_max: 405,\n y_min: -189,\n y_max: 189,\n ha: 378,\n o: 'm 557 -265 b 573 -272 562 -268 567 -272 b 583 -261 577 -272 580 -269 b 575 -242 580 -253 579 -248 b 524 -190 563 -220 544 -204 b 405 -99 485 -160 445 -130 b 497 50 449 -60 482 -9 b 500 72 498 58 500 65 b 478 122 500 91 492 107 b 331 186 438 167 387 186 b 120 131 258 186 186 167 l 107 124 b -52 242 53 163 1 203 b -89 265 -63 251 -76 259 b -107 272 -95 268 -101 272 b -117 266 -109 272 -114 271 b -121 251 -120 262 -121 256 b -114 235 -121 245 -120 239 b -60 186 -96 217 -81 199 b 63 95 -20 156 22 125 b -1 -35 26 66 -1 27 b 137 -183 -1 -130 46 -183 b 174 -180 148 -183 161 -181 l 245 -171 b 366 -128 289 -166 331 -150 l 426 -171 b 557 -265 469 -203 514 -233 z',\n },\n noteheadDiamondDoubleWhole: {\n x_min: 0,\n x_max: 429,\n y_min: -221,\n y_max: 221,\n ha: 442,\n o: 'm 22 -318 b 42 -294 33 -318 37 -302 b 46 -266 45 -285 45 -275 b 50 -219 49 -249 50 -233 b 48 -153 50 -197 49 -176 b 43 120 43 -62 43 29 l 43 253 b 37 298 43 269 45 284 b 26 318 35 305 35 318 l 24 318 b 1 295 13 317 3 308 b 0 268 0 285 0 276 l 0 -121 b 10 -291 0 -177 1 -235 b 22 -318 12 -301 10 -318 z m 593 -312 b 618 -256 611 -294 616 -276 l 618 -186 b 611 253 618 -40 612 108 b 605 276 611 261 608 268 b 589 295 600 284 600 297 b 567 272 577 294 569 285 l 567 251 b 575 -197 573 102 575 -48 b 593 -312 575 -233 579 -271 z m 99 -268 b 114 -256 107 -269 111 -262 b 127 -196 124 -238 125 -217 b 128 -144 128 -179 128 -161 b 122 -9 128 -99 125 -55 l 135 -19 b 344 -179 206 -71 276 -122 b 370 -190 354 -186 363 -190 b 395 -173 379 -190 386 -184 b 492 -33 426 -127 459 -79 b 491 -86 491 -50 491 -68 b 507 -251 491 -138 495 -193 b 534 -184 530 -228 533 -206 b 541 144 537 -75 539 35 b 530 204 541 164 539 186 b 520 220 528 210 528 220 b 500 203 511 219 503 213 b 498 192 498 200 498 194 l 498 176 b 494 7 497 120 497 63 l 490 12 l 287 176 b 258 190 279 181 274 190 b 212 153 239 186 225 168 l 127 40 b 121 32 124 37 122 35 b 118 114 120 59 118 86 b 102 249 117 158 122 206 b 75 219 85 246 79 236 b 72 187 72 209 72 197 b 76 117 72 164 75 141 b 85 -151 79 27 79 -62 b 91 -251 86 -184 91 -217 b 99 -268 91 -258 92 -266 z m 392 -128 b 374 -122 387 -134 380 -127 l 180 29 b 170 45 173 35 170 39 b 176 56 170 48 173 52 b 236 122 204 101 219 122 b 308 76 252 122 272 107 l 433 -26 b 449 -50 439 -32 449 -36 b 392 -128 432 -75 413 -102 z',\n },\n noteheadDiamondWhole: {\n x_min: 0,\n x_max: 271,\n y_min: -132,\n y_max: 132,\n ha: 264,\n o: 'm 230 -177 b 256 -190 240 -186 249 -190 b 281 -173 265 -190 272 -184 b 382 -29 314 -124 347 -76 b 390 -10 387 -22 390 -14 b 376 12 390 -3 386 4 b 173 177 308 66 240 121 b 144 190 166 183 160 190 b 98 153 127 186 112 170 b 13 40 69 115 42 76 b 0 13 4 29 0 20 b 22 -19 0 3 7 -9 b 230 -177 92 -69 163 -122 z m 279 -128 b 261 -122 274 -134 266 -127 l 66 30 b 56 45 59 35 56 39 b 62 56 56 48 59 52 b 122 122 91 101 105 122 b 194 76 138 122 158 107 l 320 -26 b 336 -50 325 -32 336 -35 b 279 -128 318 -75 300 -102 z',\n },\n noteheadDiamondHalf: {\n x_min: 0,\n x_max: 295,\n y_min: -148,\n y_max: 148,\n ha: 296,\n o: 'm 228 -207 b 245 -213 235 -210 240 -213 b 264 -203 252 -213 258 -210 b 415 -46 314 -150 364 -98 b 425 -27 420 -40 425 -35 b 416 -10 425 -22 422 -16 b 217 200 350 60 284 131 b 194 213 212 207 204 213 b 170 196 181 213 177 203 b 14 33 118 143 68 86 b 0 7 4 23 0 16 b 17 -20 0 -1 6 -10 b 118 -114 52 -50 82 -85 b 228 -207 156 -144 184 -184 z m 209 -157 b 134 -69 177 -138 141 -115 b 130 -26 131 -55 130 -40 b 215 148 130 42 160 99 b 225 156 217 151 220 156 b 230 153 226 156 228 156 b 323 -26 276 104 321 55 b 298 -75 324 -42 315 -59 b 265 -109 287 -86 276 -99 b 209 -157 245 -125 228 -167 z',\n },\n noteheadDiamondBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -146,\n y_max: 146,\n ha: 292,\n o: 'm 266 -210 b 289 -194 278 -209 284 -200 b 406 -76 330 -156 367 -115 b 446 -23 433 -49 446 -36 b 412 29 446 -10 435 3 b 405 36 409 30 408 33 b 252 196 354 89 304 143 b 225 210 243 204 235 210 b 204 202 219 210 212 209 b 10 24 141 141 75 82 b 0 9 4 19 0 14 b 9 -6 0 4 3 0 l 232 -192 b 266 -210 242 -200 256 -204 z',\n },\n noteheadParenthesis: {\n x_min: -70.190112022022,\n x_max: 329,\n y_min: -196,\n y_max: 201,\n ha: 397,\n o: 'm 344 -279 b 382 -262 361 -288 370 -272 b 405 -233 390 -255 399 -245 b 474 9 455 -158 468 -73 b 416 228 474 78 448 174 b 364 282 403 249 387 271 b 344 289 359 285 350 288 b 331 279 338 289 333 287 b 325 248 328 269 325 258 b 338 225 325 238 328 229 b 412 138 379 207 396 174 b 445 1 433 92 445 45 b 346 -217 445 -81 410 -154 b 336 -252 340 -223 336 -238 b 344 -279 336 -265 338 -276 z m 19 -274 b 35 -282 24 -279 30 -281 b 49 -265 42 -282 46 -275 b 52 -243 50 -256 52 -249 b 36 -210 52 -230 49 -220 b -60 -59 -16 -173 -35 -114 b -73 9 -69 -39 -73 -16 b 33 223 -73 92 -24 189 b 50 265 43 229 50 249 b 33 288 50 278 46 289 b 4 272 23 288 14 275 b -9 261 0 269 -4 265 b -101 23 -58 193 -105 124 b -37 -206 -104 -52 -75 -130 b 19 -274 -23 -232 -6 -255 z',\n },\n noteheadParenthesisRight: {\n x_min: -30,\n x_max: 82,\n y_min: -199.08429092881173,\n y_max: 206,\n ha: 405.0842909288117,\n o: 'm -17 -282 b 24 -264 -6 -297 12 -272 b 60 -219 40 -253 52 -236 b 117 1 96 -150 112 -75 b 118 16 118 6 118 12 b 109 73 118 36 112 55 b 4 279 99 154 68 226 b -23 297 -4 287 -13 297 b -37 289 -27 297 -32 294 b -43 266 -42 285 -43 276 b -32 225 -43 251 -37 229 b 84 -7 48 170 84 82 b 32 -184 84 -69 65 -132 b -10 -222 22 -200 4 -209 b -24 -258 -20 -232 -24 -245 b -17 -282 -24 -266 -22 -276 z',\n },\n noteheadParenthesisLeft: {\n x_min: 0,\n x_max: 106,\n y_min: -197,\n y_max: 197,\n ha: 394,\n o: 'm 134 -284 b 138 -281 135 -284 137 -284 b 145 -268 144 -278 145 -274 l 144 -253 b 107 -180 138 -225 121 -204 b 42 13 71 -120 42 -56 b 49 73 42 32 43 52 b 137 210 62 128 95 171 b 153 255 147 219 153 239 b 145 278 153 265 151 274 b 130 284 140 281 135 284 b 98 259 117 284 108 268 b 0 37 35 203 1 131 b 118 -268 9 -69 53 -173 b 134 -284 121 -274 127 -284 z',\n },\n noteheadMoonBlack: {\n x_min: 0,\n x_max: 328,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 353 -160 b 465 -40 412 -140 451 -102 b 472 30 471 -17 472 6 b 469 124 472 60 469 92 b 406 179 469 170 459 177 l 128 179 b 37 180 98 179 68 179 b 0 141 7 180 0 170 b 3 -20 3 88 3 33 b 69 -134 3 -72 26 -109 b 240 -180 125 -164 181 -180 b 353 -160 278 -180 315 -174 z',\n },\n noteheadTriangleLeftBlack: {\n x_min: 0,\n x_max: 391.1554175279994,\n y_min: -142,\n y_max: 142,\n ha: 284,\n o: 'm 138 -204 b 318 -197 197 -199 258 -197 l 431 -197 b 544 -192 469 -196 507 -193 b 563 -184 552 -190 560 -193 b 553 -167 564 -177 559 -171 l 540 -157 b 232 60 436 -85 334 -12 l 50 190 b 20 204 42 197 32 204 b 10 202 17 204 14 204 b 0 184 1 197 0 192 b 1 164 0 177 1 170 b 6 -150 3 59 6 -45 b 39 -193 7 -176 17 -186 b 138 -204 72 -204 105 -204 z',\n },\n noteheadTriangleRightBlack: {\n x_min: -0.3332953162522517,\n x_max: 398,\n y_min: -139,\n y_max: 140,\n ha: 279,\n o: 'm 543 -200 b 573 -176 566 -200 573 -194 l 573 -168 b 554 141 566 -66 560 37 b 520 197 553 167 546 187 b 495 202 511 200 504 202 b 454 184 481 202 467 196 l 35 -137 b 0 -171 22 -147 -4 -154 b 52 -199 6 -193 33 -193 b 69 -199 58 -200 63 -199 z',\n },\n noteheadTriangleRoundDownBlack: {\n x_min: 0,\n x_max: 334,\n y_min: -133.78604087938328,\n y_max: 136,\n ha: 269.7860408793833,\n o: 'm 252 -192 b 285 -176 269 -196 276 -187 b 468 52 346 -99 406 -23 b 481 79 477 62 481 71 b 465 104 481 88 475 95 b 441 124 456 109 449 117 b 249 196 380 174 314 194 b 13 104 157 196 69 154 b 0 86 6 98 0 92 b 7 69 0 82 3 76 b 202 -164 73 -7 137 -85 b 252 -192 216 -181 235 -186 z',\n },\n augmentationDot: {\n x_min: 0,\n x_max: 96,\n y_min: -57,\n y_max: 57,\n ha: 114,\n o: 'm 13 -82 b 16 -81 14 -82 14 -82 b 105 -73 46 -76 75 -76 b 131 -48 121 -72 131 -60 b 138 26 134 -24 138 0 b 137 48 138 33 138 40 b 108 82 134 71 125 82 b 95 81 104 82 99 82 b 33 71 75 78 53 75 b 4 46 20 68 6 62 b 0 -66 1 9 0 -29 b 13 -82 0 -73 1 -82 z',\n },\n tremolo1: {\n x_min: -158,\n x_max: 156.19381479578487,\n y_min: -88,\n y_max: 88,\n ha: 176,\n o: 'm -206 -127 b -194 -125 -203 -127 -199 -127 b 173 -36 -72 -94 50 -65 b 220 16 202 -29 215 -12 b 225 50 223 30 225 45 b 216 107 226 76 222 91 b 194 127 210 120 204 127 b 183 124 192 127 189 127 l -192 33 b -226 -9 -213 27 -222 14 b -228 -32 -226 -16 -228 -23 b -222 -108 -228 -58 -222 -82 b -206 -127 -222 -120 -217 -127 z',\n },\n flag8thUp: {\n x_min: 0,\n x_max: 261,\n y_min: -819,\n y_max: 0,\n ha: 819,\n o: 'm 265 -1171 b 351 -1035 301 -1130 336 -1087 b 376 -867 369 -979 376 -923 b 367 -755 376 -829 373 -792 b 233 -422 350 -632 311 -520 b 131 -291 199 -379 166 -334 b 65 -125 91 -239 66 -192 b 62 -75 65 -112 62 -91 b 42 0 62 -49 52 -24 l 35 0 b 0 -63 6 -13 0 -36 l 0 -144 b 96 -445 0 -255 29 -356 b 177 -547 124 -478 150 -514 b 308 -831 246 -629 298 -721 b 317 -890 310 -851 317 -871 b 311 -919 317 -900 315 -910 b 256 -1005 297 -950 282 -984 b 228 -1068 233 -1024 228 -1045 b 230 -1106 228 -1080 229 -1093 b 240 -1162 232 -1125 239 -1143 b 251 -1179 242 -1174 246 -1179 b 265 -1171 255 -1179 259 -1176 z',\n },\n flag8thDown: {\n x_min: 0,\n x_max: 261,\n y_min: 0,\n y_max: 819,\n ha: 819,\n o: 'm 265 1171 b 251 1179 259 1176 255 1179 b 240 1162 246 1179 242 1174 b 230 1106 239 1143 232 1125 b 228 1068 229 1093 228 1080 b 256 1005 228 1045 233 1024 b 311 919 282 984 297 950 b 317 890 315 910 317 900 b 308 831 317 871 310 851 b 177 547 298 721 246 629 b 96 445 150 514 124 478 b 0 144 29 356 0 255 l 0 63 b 35 0 0 36 6 13 l 42 0 b 62 75 52 24 62 49 b 59 117 62 91 59 104 b 131 291 60 183 91 239 b 233 422 166 334 199 379 b 367 755 311 520 350 632 b 376 867 373 792 376 829 b 351 1035 376 923 369 979 b 265 1171 336 1087 301 1130 z',\n },\n flag16thUp: {\n x_min: 0,\n x_max: 327.1591498636094,\n y_min: -819.3972596310256,\n y_max: 0,\n ha: 819.3972596310256,\n o: 'm 415 -1179 b 435 -1168 423 -1182 429 -1174 b 451 -1138 442 -1159 446 -1149 b 465 -1020 464 -1102 467 -1064 b 461 -962 464 -1004 464 -984 b 471 -821 467 -916 472 -870 b 465 -721 472 -791 467 -756 b 415 -520 459 -651 441 -585 b 200 -245 370 -408 284 -327 b 96 -114 160 -206 118 -168 b 75 -24 84 -85 85 -53 b 59 0 72 -16 72 0 b 53 -1 58 0 56 -1 b 27 -32 40 -6 27 -10 b 29 -68 27 -43 29 -55 b 10 -79 20 -69 13 -72 b 1 -109 6 -89 1 -99 b 0 -170 0 -130 0 -148 b 35 -410 0 -252 12 -333 b 258 -793 76 -557 156 -681 b 409 -1158 350 -896 410 -1014 b 415 -1179 409 -1165 405 -1175 z m 413 -816 b 331 -681 392 -769 364 -723 b 145 -420 266 -596 189 -521 b 86 -281 125 -374 102 -330 b 156 -370 105 -312 128 -343 b 318 -539 210 -425 269 -478 b 413 -816 383 -621 420 -713 z',\n },\n flag16thDown: {\n x_min: 0,\n x_max: 327.1591498636094,\n y_min: 0,\n y_max: 819,\n ha: 819,\n o: 'm 59 0 b 75 24 72 0 72 16 b 96 114 85 53 84 85 b 200 245 118 168 160 206 b 415 520 284 327 370 408 b 465 721 441 585 459 651 b 471 821 467 756 472 791 b 461 962 472 870 467 916 b 465 1020 464 984 464 1004 b 451 1138 467 1064 464 1102 b 435 1168 446 1149 442 1159 b 418 1179 431 1172 425 1179 l 415 1179 b 408 1169 409 1176 408 1174 b 409 1158 408 1165 409 1161 b 258 793 410 1014 350 896 b 35 410 156 681 76 557 b 0 170 12 333 0 252 l 0 88 b 29 7 0 71 6 23 b 59 0 33 4 58 0 z m 86 281 b 145 420 102 330 125 374 b 331 681 189 521 266 596 b 413 816 364 723 392 769 b 415 791 413 808 415 799 b 318 539 415 698 377 613 b 156 370 269 478 210 425 b 86 281 128 343 105 312 z',\n },\n flag32ndUp: {\n x_min: -0.19862981551275186,\n x_max: 268.0942440943661,\n y_min: -849.4710740978672,\n y_max: 149.0769891455102,\n ha: 998.5480632433774,\n o: 'm 323 -1223 b 351 -1198 337 -1227 344 -1210 b 359 -1184 354 -1194 356 -1188 b 386 -999 377 -1122 387 -1060 b 341 -783 386 -927 372 -855 b 330 -736 334 -769 330 -753 b 333 -708 330 -727 330 -717 b 344 -621 340 -678 344 -649 b 341 -579 344 -608 343 -593 b 328 -500 338 -553 328 -526 b 331 -475 328 -491 328 -484 b 347 -370 343 -438 348 -402 b 151 27 348 -212 288 -56 b 53 176 98 59 50 102 b 45 197 53 183 48 192 b 33 215 40 203 40 216 l 30 215 b 6 194 22 212 9 209 b 0 120 3 170 -1 145 b 0 -43 4 65 0 13 b 0 -98 0 -60 1 -79 b 4 -276 0 -157 6 -216 b 7 -456 4 -337 7 -397 b 66 -638 7 -523 22 -585 b 158 -724 94 -671 127 -697 b 318 -1011 246 -801 295 -899 b 321 -1044 321 -1021 321 -1032 b 312 -1152 321 -1080 312 -1116 b 317 -1192 312 -1165 314 -1179 b 323 -1223 320 -1202 311 -1220 z m 285 -376 b 121 -180 249 -289 173 -245 b 91 -105 104 -158 92 -135 b 288 -354 181 -144 288 -269 b 285 -376 288 -363 287 -370 z m 275 -657 b 111 -492 226 -589 163 -547 b 65 -376 78 -456 66 -418 b 71 -323 65 -360 68 -341 b 275 -657 164 -418 265 -504 z',\n },\n flag32ndDown: {\n x_min: -2.800802874905624,\n x_max: 268.09424409436605,\n y_min: -169.07698914551014,\n y_max: 829.4710740978672,\n ha: 998.5480632433773,\n o: 'm 323 1194 b 317 1164 311 1191 320 1174 b 312 1123 314 1151 312 1136 b 321 1015 312 1087 321 1051 b 318 982 321 1004 321 992 b 158 696 295 870 246 772 b 66 609 127 668 94 642 b 7 428 22 556 7 494 b 4 248 7 369 4 308 b -1 78 6 187 -10 137 b 0 14 0 59 0 32 l 0 -148 b 6 -223 0 -174 3 -199 b 30 -243 9 -238 22 -240 l 33 -243 b 45 -226 40 -245 40 -232 b 53 -204 48 -220 53 -212 b 151 -56 50 -131 98 -88 b 347 341 288 27 348 183 b 331 446 348 373 343 409 b 328 471 328 455 328 462 b 341 550 328 497 338 524 b 344 592 343 564 344 579 b 333 680 344 621 340 649 b 330 707 330 688 330 698 b 341 755 330 724 334 740 b 386 971 372 827 386 899 b 359 1155 387 1031 377 1093 b 351 1169 356 1159 354 1165 b 323 1194 344 1181 337 1198 z m 275 628 b 71 294 265 475 164 389 b 65 347 68 312 65 331 b 111 464 66 389 78 428 b 275 628 163 518 226 560 z m 285 347 b 288 325 287 341 288 334 b 91 76 288 240 181 115 b 121 151 92 107 104 130 b 285 347 173 216 249 261 z',\n },\n flag64thUp: {\n x_min: -4,\n x_max: 282,\n y_min: -823.5430338167067,\n y_max: 347,\n ha: 1170.5430338167066,\n o: 'm 350 -1185 b 380 -1162 364 -1189 374 -1175 b 406 -1022 399 -1119 406 -1071 b 359 -798 406 -945 384 -871 b 348 -756 353 -785 348 -772 b 350 -744 348 -753 350 -749 b 363 -621 356 -704 363 -664 b 360 -580 363 -608 363 -593 b 359 -560 359 -573 359 -567 b 373 -490 359 -536 366 -513 b 393 -346 386 -444 393 -395 b 387 -269 393 -320 390 -294 b 348 -127 382 -219 348 -173 b 351 -104 348 -120 348 -111 b 353 -65 351 -91 353 -78 b 341 37 353 -26 348 6 b 226 215 323 108 278 164 b 86 336 181 258 127 288 b 62 395 72 353 62 370 b 42 481 62 423 55 454 b 27 500 37 488 36 500 b 24 498 26 500 26 500 b -1 480 14 497 1 492 b -6 444 -4 467 -6 455 l -6 435 b -1 341 -1 403 -1 372 l -1 266 b 6 156 -1 230 0 193 b 13 35 12 117 13 75 l 13 -35 b 14 -85 13 -52 14 -68 b 29 -276 19 -150 33 -213 b 20 -448 24 -334 20 -392 b 24 -534 20 -477 22 -505 b 114 -708 30 -605 59 -664 b 197 -780 143 -732 171 -755 b 344 -1153 301 -884 341 -1011 b 343 -1172 344 -1159 343 -1166 b 350 -1185 343 -1176 344 -1182 z m 287 -88 b 62 193 186 -17 79 48 b 229 52 121 144 174 98 b 289 -33 256 29 274 -3 b 295 -56 294 -42 295 -49 b 287 -88 295 -66 292 -76 z m 298 -410 b 118 -235 238 -351 176 -295 b 76 -88 82 -197 78 -147 b 268 -252 137 -153 203 -202 b 330 -360 304 -279 330 -315 b 323 -402 330 -373 327 -387 b 311 -418 318 -413 315 -418 b 298 -410 307 -418 302 -415 z m 300 -691 b 117 -508 243 -616 168 -575 b 82 -408 94 -480 82 -448 b 84 -379 82 -397 82 -387 b 259 -553 135 -451 206 -492 b 301 -667 287 -583 301 -619 b 300 -691 301 -674 301 -683 z',\n },\n flag64thDown: {\n x_min: -5,\n x_max: 281,\n y_min: -375,\n y_max: 795.5430338167066,\n ha: 1170.5430338167066,\n o: 'm 348 1145 b 341 1132 343 1142 341 1136 b 343 1113 341 1126 343 1119 b 196 740 340 971 300 844 b 112 668 170 714 141 691 b 23 494 58 624 29 564 b 19 408 20 465 19 436 b 27 236 19 351 23 294 b 13 45 32 173 17 109 b 12 -6 13 27 12 12 l 12 -75 b 4 -196 12 -115 10 -157 b -3 -307 -1 -233 -3 -271 l -3 -382 b -7 -475 -3 -412 -3 -444 l -7 -484 b -3 -520 -7 -495 -6 -507 b 23 -539 0 -533 13 -537 b 26 -540 24 -540 24 -540 b 40 -521 35 -540 36 -528 b 60 -435 53 -494 60 -464 b 85 -376 60 -410 71 -393 b 225 -255 125 -328 180 -298 b 340 -78 276 -204 321 -148 b 351 24 347 -46 351 -14 b 350 63 351 37 350 50 b 347 86 347 71 347 79 b 386 229 347 132 380 179 b 392 305 389 253 392 279 b 372 449 392 354 384 403 b 357 520 364 472 357 495 b 359 540 357 527 357 533 b 361 580 361 553 361 567 b 348 704 361 624 354 664 b 347 716 348 708 347 713 b 357 757 347 732 351 744 b 405 982 383 831 405 904 b 379 1122 405 1031 397 1079 b 348 1145 373 1135 363 1149 z m 298 651 b 300 626 300 642 300 634 b 258 513 300 579 285 543 b 82 338 204 452 134 410 b 81 367 81 347 81 357 b 115 468 81 408 92 439 b 298 651 167 534 242 576 z m 297 370 b 310 377 301 374 305 377 b 321 361 314 377 317 373 b 328 320 325 347 328 333 b 266 212 328 275 302 239 b 75 48 202 161 135 112 b 117 194 76 107 81 157 b 297 370 174 255 236 311 z m 285 48 b 294 16 291 36 294 26 b 288 -7 294 9 292 1 b 228 -92 272 -37 255 -69 b 60 -233 173 -138 120 -184 b 285 48 78 -88 184 -23 z',\n },\n flag128thUp: {\n x_min: 0,\n x_max: 252,\n y_min: -804,\n y_max: 530,\n ha: 1334,\n o: 'm 298 -1158 b 328 -1126 312 -1158 320 -1139 b 330 -1116 330 -1123 330 -1119 b 347 -996 343 -1076 347 -1037 b 328 -837 347 -943 338 -890 b 320 -778 324 -816 320 -798 b 330 -733 320 -763 323 -749 b 340 -665 338 -714 337 -688 b 341 -645 340 -660 341 -652 b 333 -534 341 -609 333 -572 b 343 -471 333 -513 334 -492 b 361 -366 356 -436 361 -402 b 331 -202 361 -311 348 -256 b 328 -187 330 -197 328 -193 b 331 -179 328 -184 328 -181 b 363 -55 353 -137 363 -96 b 337 79 363 -12 351 33 b 327 114 333 92 327 104 b 344 144 327 124 331 132 b 359 174 353 150 357 163 b 361 228 360 193 361 210 b 243 517 361 337 325 435 b 147 596 213 546 179 569 b 75 708 111 626 75 655 b 62 744 75 723 68 733 b 50 763 58 752 58 763 b 46 762 49 763 48 762 b 17 742 36 757 22 757 b 0 697 14 726 0 711 b 1 595 0 662 3 631 b 0 469 0 552 0 511 b 1 429 0 456 0 442 b 22 289 6 382 22 337 b 24 128 22 238 24 184 b 22 66 24 108 23 86 b 19 -19 20 37 19 10 b 20 -132 19 -56 20 -95 b 13 -276 20 -180 19 -229 b 9 -359 10 -304 9 -330 b 12 -487 9 -402 12 -445 b 56 -582 12 -526 29 -554 b 197 -742 107 -632 160 -681 b 288 -1100 265 -851 276 -976 b 288 -1122 288 -1107 287 -1115 b 287 -1145 289 -1129 287 -1138 b 298 -1158 287 -1153 288 -1158 z m 304 150 b 75 475 229 256 112 334 b 304 150 233 357 305 287 z m 271 -73 b 127 72 233 -14 179 26 b 81 167 96 98 81 127 b 84 194 81 176 82 184 b 271 -73 148 102 242 39 z m 279 -396 b 132 -223 233 -330 180 -279 b 81 -112 104 -192 81 -156 b 82 -91 81 -105 81 -98 b 279 -396 167 -125 269 -281 z m 249 -609 b 69 -357 197 -520 88 -471 b 249 -609 131 -441 229 -498 z',\n },\n flag128thDown: {\n x_min: -0.8888888888888888,\n x_max: 252,\n y_min: -580,\n y_max: 754,\n ha: 1334,\n o: 'm 298 1086 b 287 1073 288 1086 287 1081 b 288 1050 287 1066 289 1057 b 288 1028 287 1043 288 1035 b 197 670 276 904 265 779 b 56 510 160 609 107 560 b 12 415 29 482 12 454 b 9 287 12 373 9 330 b 13 204 9 258 10 232 b 20 60 19 157 20 108 b 19 -53 20 23 19 -16 b 22 -138 19 -82 20 -109 b 24 -200 23 -158 24 -180 b 22 -361 24 -256 22 -310 b 1 -501 22 -409 6 -454 b 0 -541 0 -514 0 -528 b 0 -667 0 -583 -3 -624 b 0 -809 0 -675 -3 -791 b 46 -834 4 -825 36 -829 b 50 -835 48 -834 49 -835 b 62 -816 58 -835 58 -824 b 75 -780 68 -805 75 -795 b 147 -668 75 -727 111 -698 b 243 -589 179 -641 213 -618 b 361 -300 325 -507 361 -409 b 359 -246 361 -282 360 -265 b 344 -216 357 -235 353 -222 b 327 -186 331 -204 327 -196 b 337 -151 327 -176 333 -164 b 363 -17 351 -105 363 -60 b 331 107 363 24 353 65 b 328 115 328 109 328 112 b 331 130 328 121 330 125 b 361 294 348 184 361 239 b 343 399 361 330 356 364 b 333 462 334 420 333 441 b 341 573 333 500 341 537 b 340 593 341 580 340 588 b 330 661 337 616 338 642 b 320 706 323 677 320 691 b 328 765 320 726 324 744 b 347 924 338 818 347 871 b 330 1044 347 965 343 1004 b 328 1054 330 1047 330 1051 b 298 1086 320 1067 312 1086 z m 249 537 b 69 285 229 426 131 369 b 249 537 88 399 197 448 z m 279 324 b 82 19 269 209 167 53 b 81 40 81 26 81 33 b 132 151 81 84 104 120 b 279 324 180 207 233 258 z m 271 1 b 84 -266 242 -111 148 -174 b 81 -239 82 -256 81 -248 b 127 -144 81 -199 96 -170 b 271 1 179 -98 233 -58 z m 304 -222 b 75 -547 305 -359 233 -429 b 304 -222 112 -406 229 -328 z',\n },\n accidentalFlat: {\n x_min: 1,\n x_max: 209,\n y_min: -208,\n y_max: 472,\n ha: 680,\n o: 'm 29 -300 b 46 -289 33 -300 39 -297 b 107 -243 65 -274 86 -258 b 301 127 233 -153 301 -30 b 298 186 301 147 301 166 b 190 297 291 256 251 297 b 147 289 177 297 163 294 b 86 265 127 284 107 274 l 85 264 l 85 301 b 91 465 85 356 88 410 b 94 559 91 497 94 527 b 84 651 94 589 91 621 b 66 680 81 661 81 680 l 65 680 b 37 645 49 678 37 665 b 33 523 36 605 32 563 l 33 478 b 26 223 33 393 29 308 b 1 -141 22 101 1 -19 b 17 -287 1 -189 4 -239 b 29 -300 20 -295 23 -300 z m 68 -105 b 76 12 71 -68 72 -29 b 81 107 79 43 81 75 l 86 109 b 171 135 114 121 141 135 b 204 128 181 135 193 132 b 238 92 228 120 239 108 b 230 63 238 84 236 75 b 68 -105 193 -10 132 -59 z',\n },\n accidentalNatural: {\n x_min: 0,\n x_max: 213.5,\n y_min: -456,\n y_max: 462,\n ha: 918,\n o: 'm 255 -657 b 281 -624 271 -657 275 -636 b 285 -599 282 -615 285 -608 b 292 -300 288 -500 289 -400 b 289 -161 292 -253 289 -207 b 300 128 292 -65 297 32 b 304 168 300 128 302 150 l 304 173 l 305 190 l 305 199 l 307 225 b 304 259 307 229 310 246 b 272 298 297 274 302 305 b 63 266 204 279 134 272 b 72 514 68 348 72 432 b 71 595 72 541 72 567 b 56 665 71 619 66 642 b 17 579 9 651 17 608 b 3 144 19 433 7 289 b 0 -7 1 94 0 43 b 3 -134 0 -50 1 -92 b 7 -219 3 -163 7 -192 b 35 -251 7 -243 17 -251 b 49 -249 39 -251 43 -251 l 223 -223 l 230 -222 l 230 -359 b 223 -516 230 -410 223 -464 b 236 -619 223 -550 226 -585 b 255 -657 240 -634 236 -657 z m 58 -63 b 55 81 56 -14 53 33 l 56 99 b 85 99 65 99 75 98 b 232 108 134 104 183 107 l 240 109 l 236 66 b 232 -48 235 29 232 -10 b 58 -81 174 -63 115 -73 z',\n },\n accidentalSharp: {\n x_min: -22,\n x_max: 390,\n y_min: -384,\n y_max: 383,\n ha: 767,\n o: 'm 202 -553 b 219 -526 213 -552 216 -536 b 226 -471 225 -507 226 -488 b 225 -425 226 -455 225 -441 b 226 -392 225 -415 225 -402 b 233 -305 229 -363 232 -334 l 297 -292 b 331 -469 300 -353 311 -412 b 347 -485 333 -477 338 -485 b 363 -469 356 -487 359 -477 b 374 -418 373 -454 374 -435 b 376 -382 376 -405 376 -393 b 372 -276 376 -347 373 -311 l 455 -259 b 550 -156 534 -243 544 -232 b 550 -109 550 -137 552 -124 b 526 -78 549 -91 541 -78 l 523 -78 b 507 -79 517 -78 513 -78 b 403 -101 474 -88 438 -95 l 379 -105 b 382 -42 380 -85 380 -63 b 384 96 383 4 384 50 b 503 131 425 107 464 118 b 549 173 524 138 543 150 b 562 249 554 199 562 223 b 554 294 562 264 560 279 b 536 315 549 308 544 315 l 533 315 b 517 312 528 315 523 315 b 382 266 472 294 428 279 l 377 344 b 359 531 374 406 372 469 b 348 552 356 539 357 552 l 347 552 l 343 552 b 315 528 331 549 317 544 l 315 501 b 320 249 315 416 318 333 l 243 232 b 239 361 243 275 242 318 b 226 425 238 383 238 403 b 199 359 194 409 199 382 b 193 223 196 312 194 268 b 72 202 153 215 112 209 b 4 118 13 192 4 183 b 10 66 0 102 12 84 b 33 29 7 39 14 30 b 48 32 37 29 42 30 b 187 55 95 39 141 46 l 183 -75 b 176 -145 181 -99 179 -122 b 16 -179 122 -156 69 -166 b -32 -232 -14 -186 -32 -197 b -17 -331 -32 -266 -19 -298 b -1 -356 -17 -347 -13 -354 b 12 -353 1 -356 6 -354 b 167 -320 63 -341 115 -331 b 166 -377 166 -338 166 -357 b 189 -526 166 -428 171 -477 b 202 -553 192 -536 189 -553 z m 240 -132 b 243 -37 242 -101 242 -69 b 245 65 245 -3 245 30 b 315 79 269 69 292 73 b 301 -120 308 13 305 -53 z',\n },\n accidentalDoubleSharp: {\n x_min: 0,\n x_max: 287,\n y_min: -159,\n y_max: 159,\n ha: 318,\n o: 'm 84 -229 b 107 -216 91 -229 98 -225 b 200 -125 138 -186 167 -154 b 232 -95 212 -115 222 -105 b 347 -189 271 -125 310 -157 b 370 -200 356 -196 363 -200 b 396 -179 380 -200 389 -192 b 412 -102 410 -154 406 -125 b 377 -27 410 -69 400 -46 l 325 14 b 402 91 350 42 374 68 b 413 127 410 96 413 107 b 382 200 409 148 397 176 b 350 229 370 220 360 229 b 314 210 340 229 328 223 b 274 174 300 199 285 187 b 212 104 252 151 232 128 b 92 187 173 132 132 161 b 78 193 86 192 82 193 b 68 190 75 193 72 193 b 48 179 62 186 53 187 b 40 137 43 168 40 154 b 81 16 40 92 56 32 b 107 -3 89 10 98 4 b 14 -94 76 -32 45 -62 b 0 -124 6 -102 0 -114 b 12 -154 0 -134 3 -144 b 62 -215 26 -176 48 -193 b 84 -229 69 -225 76 -229 z',\n },\n accidentalDoubleFlat: {\n x_min: 0,\n x_max: 359,\n y_min: -220,\n y_max: 446,\n ha: 666,\n o: 'm 43 -317 b 72 -301 55 -317 63 -310 b 160 -186 108 -268 134 -226 b 236 -60 186 -145 212 -102 b 233 -131 235 -85 233 -108 b 239 -220 233 -161 235 -190 b 259 -246 240 -233 239 -240 b 301 -228 284 -252 291 -238 b 465 -7 369 -163 416 -85 b 517 173 500 48 517 108 b 451 307 517 229 505 284 b 409 315 436 312 422 315 b 331 287 382 315 356 305 b 311 274 324 282 320 274 l 310 274 l 310 566 b 305 621 310 585 312 603 b 294 642 301 628 305 642 l 292 642 b 264 622 282 641 266 636 b 253 575 259 606 256 590 b 246 418 248 523 246 471 b 248 243 246 360 248 302 l 248 187 b 164 238 220 225 193 238 b 85 213 140 238 112 226 b 84 229 85 220 84 225 b 86 315 85 258 86 287 b 81 528 86 386 82 458 b 71 582 81 547 78 566 b 56 603 66 590 68 603 l 53 603 b 23 580 40 600 26 598 b 19 537 20 566 19 552 b 20 514 19 530 19 521 b 26 390 24 472 26 432 b 14 66 26 282 16 174 b 0 -168 13 -12 0 -91 b 12 -279 0 -206 3 -242 b 30 -314 16 -294 14 -308 b 43 -317 35 -317 39 -317 z m 301 -72 b 302 7 302 -45 302 -19 l 302 86 b 351 158 304 121 321 145 b 383 166 361 163 373 166 b 435 143 402 166 419 157 b 445 127 441 138 445 132 b 441 114 445 122 444 118 b 301 -72 397 49 354 -14 z m 75 -147 b 73 30 75 -86 75 -29 b 118 82 73 62 92 76 b 132 84 124 84 128 84 b 190 52 156 84 174 69 b 193 40 192 49 193 45 b 192 33 193 37 193 35 b 75 -147 157 -30 125 -95 z',\n },\n accidentalParensLeft: {\n x_min: 0,\n x_max: 130.18934911242604,\n y_min: -270,\n y_max: 267.6082500723851,\n ha: 537.6082500723851,\n o: 'm 107 -389 b 127 -374 114 -389 120 -384 b 141 -347 132 -367 137 -357 b 151 -294 148 -330 151 -311 b 122 -207 151 -265 141 -236 b 63 -65 94 -164 72 -117 b 59 -10 60 -46 59 -27 b 145 223 59 78 94 153 b 187 354 176 262 189 305 b 177 384 187 364 190 380 b 143 373 166 387 153 383 b 124 354 137 367 130 361 b 0 -35 33 240 0 108 l 0 -92 b 85 -372 4 -193 27 -287 b 107 -389 92 -383 99 -389 z',\n },\n accidentalParensRight: {\n x_min: -0.4444444444444445,\n x_max: 139,\n y_min: -275,\n y_max: 277,\n ha: 552,\n o: 'm 58 -396 b 96 -354 75 -396 85 -370 b 200 13 168 -238 200 -111 b 153 268 200 109 184 190 b 49 392 131 320 101 364 b 26 399 40 397 33 399 b 0 366 10 399 0 387 b 0 318 -1 350 0 334 l 0 291 b 27 238 -3 266 7 253 b 143 9 105 180 143 98 b 141 -20 143 -1 143 -10 b 63 -225 135 -92 108 -164 b 36 -307 45 -251 36 -278 b 40 -344 36 -320 37 -331 b 42 -356 42 -347 42 -351 b 58 -396 42 -374 37 -396 z',\n },\n accidentalQuarterToneFlatStein: {\n x_min: 0,\n x_max: 208,\n y_min: -240,\n y_max: 440,\n ha: 680,\n o: 'm 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z',\n },\n accidentalThreeQuarterTonesFlatZimmermann: {\n x_min: 0,\n x_max: 422,\n y_min: -240,\n y_max: 440,\n ha: 680,\n o: 'm 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 336 -346 b 353 -336 340 -346 346 -343 b 413 -289 372 -320 393 -304 b 608 81 540 -199 608 -76 b 605 140 608 101 608 120 b 497 251 598 210 557 251 b 454 243 484 251 469 248 b 393 219 433 238 413 228 l 392 217 l 392 255 b 397 419 392 310 395 364 b 400 513 397 451 400 481 b 390 605 400 543 397 575 b 373 634 387 615 387 634 l 372 634 b 344 599 356 632 344 619 b 340 477 343 559 338 517 l 340 432 b 333 177 340 347 336 262 b 308 -187 328 55 308 -65 b 324 -333 308 -235 311 -285 b 336 -346 327 -341 330 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z m 374 -151 b 383 -35 377 -114 379 -75 b 387 60 386 -3 387 29 l 393 63 b 478 89 420 75 448 89 b 511 82 488 89 500 86 b 544 46 534 73 546 62 b 537 17 544 37 543 29 b 374 -151 500 -56 439 -105 z',\n },\n accidentalQuarterToneSharpStein: {\n x_min: 0,\n x_max: 300,\n y_min: -338,\n y_max: 351,\n ha: 689,\n o: 'm 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 l 35 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z',\n },\n accidentalThreeQuarterTonesSharpStein: {\n x_min: -23,\n x_max: 388,\n y_min: -373,\n y_max: 445,\n ha: 818,\n o: 'm 114 -537 b 138 -475 137 -518 138 -495 b 147 -292 138 -413 144 -353 b 212 -278 168 -287 190 -282 b 243 -444 215 -333 225 -389 b 261 -467 248 -454 251 -465 b 281 -446 272 -469 276 -455 b 292 -347 292 -416 288 -384 b 288 -262 289 -320 288 -291 l 374 -245 b 376 -311 374 -266 374 -288 b 390 -456 379 -357 379 -405 b 416 -396 412 -436 415 -418 b 423 -287 420 -360 423 -323 b 422 -235 423 -269 423 -252 b 451 -229 432 -233 441 -232 b 547 -98 524 -215 547 -199 l 547 -89 b 521 -49 546 -59 540 -49 b 497 -52 516 -49 507 -49 b 418 -68 469 -56 444 -63 b 423 52 419 -29 422 12 b 426 140 425 81 425 109 b 495 160 449 145 472 153 b 552 219 526 170 546 189 b 559 279 557 240 553 262 b 530 341 559 324 552 341 b 490 331 520 341 507 338 b 432 311 471 324 452 318 b 449 552 436 392 442 471 b 452 588 451 563 452 575 b 446 622 452 599 451 611 b 436 641 444 629 448 641 b 418 628 428 641 420 636 b 409 602 413 621 410 611 b 386 297 396 501 390 399 b 297 274 356 288 327 281 b 291 403 295 317 294 360 b 274 550 288 452 284 501 b 259 569 271 564 265 569 b 240 559 253 569 248 563 b 230 537 232 554 230 546 l 230 488 b 233 369 230 448 232 409 b 236 261 236 333 238 297 b 156 245 210 255 183 251 b 154 396 154 295 154 346 b 150 416 154 403 153 410 b 140 438 145 423 150 438 l 138 438 b 118 413 128 436 118 428 b 112 354 118 393 114 374 b 109 238 109 315 109 276 b 49 226 89 233 69 230 b 3 163 16 222 3 202 b 7 91 3 138 9 114 b 29 62 7 69 13 62 b 39 63 32 62 35 63 b 104 73 60 66 82 71 b 101 -10 104 46 102 17 l 92 -132 l 10 -150 b -33 -204 -19 -157 -33 -170 b -19 -310 -32 -240 -19 -274 b -6 -324 -19 -321 -13 -324 b 6 -323 -1 -324 1 -324 b 82 -307 32 -317 58 -311 b 81 -376 82 -330 81 -353 b 114 -537 81 -431 94 -484 z m 294 -92 b 297 -37 295 -73 295 -56 b 300 49 300 -9 300 20 l 300 108 b 379 127 325 114 353 120 b 374 -76 376 59 374 -9 b 294 -92 347 -82 320 -86 z m 154 -120 b 157 20 154 -73 156 -26 b 158 82 158 40 158 62 b 230 95 183 86 206 89 b 225 0 229 63 226 32 b 217 -107 223 -35 220 -71 z',\n },\n accidentalBuyukMucennebFlat: {\n x_min: 1.8692317181955784,\n x_max: 287,\n y_min: -248,\n y_max: 432.4720949426819,\n ha: 680.4720949426819,\n o: 'm 410 128 b 302 239 403 199 363 239 b 259 232 289 239 275 236 b 199 207 239 226 219 216 l 197 206 l 197 243 l 197 251 b 347 317 248 272 298 295 b 376 347 360 324 372 334 b 389 435 387 376 393 405 b 348 454 384 462 377 465 b 202 387 300 432 251 409 b 203 408 203 395 203 402 l 203 431 b 347 490 252 451 300 469 b 376 517 360 495 372 505 b 389 599 387 546 393 572 b 348 616 384 625 377 628 l 203 556 b 196 593 202 569 199 582 b 179 622 193 603 193 622 l 177 622 b 150 588 161 621 150 608 b 147 533 150 570 148 552 b 29 488 108 517 69 503 b 3 455 12 482 3 472 b 12 353 1 422 9 389 b 145 408 56 372 101 389 b 145 363 145 392 145 377 l 29 315 b 3 281 12 310 3 298 b 12 170 1 245 9 209 l 141 226 b 138 166 140 206 138 186 b 114 -199 134 43 115 -76 b 130 -344 114 -246 117 -297 b 141 -357 132 -353 135 -357 b 158 -347 145 -357 151 -354 b 219 -301 177 -331 199 -315 b 413 69 346 -210 413 -88 b 410 128 413 89 413 108 z m 350 35 b 343 6 350 26 348 17 b 180 -163 308 -69 245 -117 b 189 -46 183 -125 184 -86 b 193 49 192 -14 193 17 l 199 52 b 284 78 226 63 253 78 b 317 71 294 78 305 75 b 350 35 340 62 351 50 z',\n },\n accidentalBakiyeFlat: {\n x_min: 1.8692317181955784,\n x_max: 287,\n y_min: -236,\n y_max: 444,\n ha: 680,\n o: 'm 141 -340 b 158 -330 145 -340 151 -337 b 219 -284 177 -314 199 -298 b 413 86 346 -193 413 -71 b 410 145 413 107 413 125 b 302 256 403 216 363 256 b 259 249 289 256 275 253 b 199 225 239 243 219 233 l 197 223 l 197 261 b 199 334 197 285 199 310 b 347 406 249 357 298 382 b 376 439 360 413 372 425 b 390 516 384 465 390 490 b 389 537 390 523 390 530 b 372 564 384 556 382 564 b 348 557 367 564 359 562 b 204 487 300 537 253 510 b 206 518 206 497 206 507 b 196 611 206 549 203 580 b 179 639 193 621 193 639 l 177 639 b 150 605 161 638 150 625 b 145 482 148 564 144 523 l 145 458 b 29 405 107 439 68 420 b 3 366 12 397 3 386 b 12 243 1 325 9 287 b 143 307 56 265 99 285 l 138 183 b 114 -181 134 60 114 -59 b 130 -327 114 -229 117 -279 b 141 -340 132 -336 135 -340 z m 180 -145 b 189 -29 183 -108 184 -69 b 193 66 192 3 193 35 l 199 69 b 284 95 226 81 253 95 b 317 88 294 95 305 92 b 350 52 340 79 351 68 b 343 23 350 43 348 35 b 180 -145 305 -50 245 -99 z',\n },\n accidentalKomaSharp: {\n x_min: 0,\n x_max: 300,\n y_min: -338,\n y_max: 351,\n ha: 689,\n o: 'm 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 l 35 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z',\n },\n accidentalKucukMucennebSharp: {\n x_min: -0.15206251809627475,\n x_max: 359,\n y_min: -420,\n y_max: 343,\n ha: 763,\n o: 'm 236 -605 b 262 -543 256 -583 261 -564 b 269 -423 268 -503 269 -464 b 266 -340 269 -396 268 -367 l 361 -318 b 405 -276 384 -312 399 -298 b 413 -189 412 -248 416 -219 b 395 -164 412 -171 409 -164 b 382 -166 392 -164 387 -164 b 264 -193 343 -176 304 -184 b 269 -102 265 -163 268 -132 b 454 -62 331 -89 392 -78 b 501 -23 477 -58 494 -45 b 517 62 511 6 517 33 b 487 112 517 95 513 112 b 471 111 482 112 477 112 b 274 66 406 95 340 81 b 276 138 275 91 276 114 b 350 154 301 144 325 148 b 402 203 377 160 396 176 b 412 284 408 230 412 258 b 392 311 412 302 406 311 b 372 308 386 311 379 310 b 287 291 343 301 314 297 l 295 405 b 298 441 297 416 298 428 b 292 475 298 452 297 464 b 282 494 289 482 294 494 b 264 481 274 494 266 490 b 255 455 259 474 256 464 b 239 282 248 397 243 340 b 148 268 209 278 179 274 b 62 164 62 252 62 253 l 62 132 b 79 108 60 117 65 108 l 86 108 l 230 130 b 229 92 230 118 229 105 b 228 56 228 79 228 68 b 66 20 173 43 120 32 b 0 -59 6 7 3 1 l 0 -138 b 14 -160 -1 -156 4 -160 b 27 -158 19 -160 23 -160 b 222 -112 92 -141 157 -127 b 220 -203 220 -143 220 -173 b 147 -217 196 -207 171 -213 b 89 -288 92 -228 89 -229 b 95 -347 85 -305 96 -325 b 112 -374 92 -366 98 -374 b 125 -373 117 -374 121 -374 l 220 -351 b 222 -458 220 -386 220 -422 b 236 -605 223 -504 225 -552 z',\n },\n accidentalKoron: {\n x_min: 0,\n x_max: 303,\n y_min: -462.4598053473055,\n y_max: 180,\n ha: 642.4598053473055,\n o: 'm 59 -665 b 72 -649 69 -662 72 -657 b 69 -626 72 -642 69 -634 b 69 -622 69 -625 69 -624 l 69 -600 b 55 -156 60 -456 68 -311 b 86 -170 66 -166 76 -170 b 112 -163 95 -170 104 -166 b 390 -35 204 -120 298 -78 b 436 -1 409 -27 436 -27 b 396 46 436 22 413 33 l 382 55 b 46 243 271 121 157 179 b 12 259 29 253 17 259 b 0 219 1 259 0 248 b 3 -372 0 22 3 -176 b 6 -616 3 -454 6 -536 b 59 -665 6 -638 40 -671 z m 55 199 b 363 24 156 141 258 84 b 55 -118 259 -24 160 -69 z',\n },\n accidentalSori: {\n x_min: 0,\n x_max: 434,\n y_min: -295,\n y_max: 325,\n ha: 620,\n o: 'm 194 -425 b 196 -409 194 -418 196 -413 b 194 -194 196 -337 196 -266 b 364 -127 251 -171 308 -150 b 361 -321 363 -192 364 -256 b 410 -387 360 -357 373 -377 b 413 -373 412 -382 413 -377 b 418 -114 418 -287 418 -200 l 418 -105 b 595 -35 477 -82 536 -59 b 625 0 612 -27 625 -22 b 593 48 624 23 618 39 l 419 117 b 423 370 419 202 423 285 b 426 403 423 382 426 393 b 418 436 426 415 425 426 b 384 468 409 449 399 468 b 369 448 370 468 369 459 b 369 436 369 444 369 441 l 369 428 l 369 423 b 367 138 369 328 367 233 l 353 143 l 192 207 l 192 367 b 173 406 192 383 184 396 b 151 422 167 413 160 422 b 144 420 148 422 147 422 b 137 403 138 416 137 410 l 137 392 l 137 229 b 33 271 102 243 68 256 b 13 276 26 274 19 276 b 0 262 6 276 0 272 b 35 199 1 239 0 212 l 138 160 b 140 -148 138 58 138 -45 b 56 -181 111 -158 84 -170 b 24 -215 35 -189 24 -199 b 29 -235 24 -220 26 -228 b 49 -253 35 -249 42 -253 b 78 -240 59 -253 69 -243 b 140 -216 98 -233 120 -225 l 140 -356 b 194 -425 140 -406 141 -406 z m 194 -125 b 193 138 194 -37 193 50 b 315 89 233 122 275 107 b 366 71 333 84 350 76 b 364 -58 366 27 366 -16 b 194 -125 308 -81 251 -104 z m 419 49 l 526 7 l 485 -10 l 419 -36 z',\n },\n articAccentAbove: {\n x_min: 0,\n x_max: 425,\n y_min: 0,\n y_max: 326,\n ha: 326,\n o: 'm 27 1 b 78 12 46 0 62 6 b 347 112 168 45 253 91 b 521 184 409 128 459 167 b 608 259 557 194 589 220 b 612 274 611 265 612 271 b 598 292 612 281 608 287 b 477 347 559 312 518 331 b 176 465 374 384 275 425 b 156 469 168 468 161 469 b 125 456 145 469 137 465 b 53 370 96 432 78 399 b 45 353 48 363 45 357 b 68 333 45 344 52 337 b 360 225 166 298 262 261 b 192 154 302 203 249 171 b 13 36 120 132 53 105 b 0 13 9 29 0 22 l 0 9 b 16 0 3 1 10 0 l 26 0 b 27 1 27 0 27 0 z',\n },\n articAccentBelow: {\n x_min: 0,\n x_max: 425,\n y_min: -326,\n y_max: 0,\n ha: 326,\n o: 'm 26 -469 l 27 -469 b 78 -458 46 -469 62 -464 b 347 -357 168 -426 253 -380 b 521 -285 409 -341 459 -302 b 608 -210 557 -276 589 -249 b 612 -196 611 -204 612 -200 b 598 -179 612 -189 608 -183 b 477 -122 559 -157 518 -138 b 176 -4 374 -85 275 -45 b 156 0 168 -1 161 0 b 125 -13 145 0 137 -4 b 53 -99 96 -37 78 -71 b 45 -117 48 -107 45 -112 b 68 -137 45 -125 52 -132 b 360 -245 166 -171 262 -209 b 192 -315 302 -266 249 -300 b 13 -433 120 -337 53 -366 b 0 -456 9 -442 0 -448 l 0 -461 b 16 -469 3 -468 10 -469 z',\n },\n articTenutoAbove: {\n x_min: 0.35192668236256364,\n x_max: 471.1238660564107,\n y_min: 0,\n y_max: 56,\n ha: 56,\n o: 'm 137 0 b 197 1 156 0 179 1 b 409 6 268 1 338 6 b 482 4 432 6 459 6 b 556 0 508 3 534 0 b 651 10 588 0 621 3 b 678 27 662 12 678 10 b 654 59 680 45 672 53 b 511 75 606 73 560 73 b 255 81 426 78 341 81 b 160 79 222 81 193 79 l 36 79 b 1 71 24 78 7 85 b 19 32 -3 56 9 43 b 45 16 26 24 36 20 b 137 0 76 3 108 0 z',\n },\n articTenutoBelow: {\n x_min: 0.35192668236256364,\n x_max: 471.1238660564107,\n y_min: -59,\n y_max: -3,\n ha: 56,\n o: 'm 137 -85 b 197 -84 156 -85 179 -84 b 409 -79 268 -84 338 -79 b 482 -81 432 -79 459 -79 b 556 -85 508 -82 534 -85 b 651 -75 588 -85 621 -82 b 678 -58 662 -73 678 -75 b 654 -26 680 -40 672 -32 b 511 -10 606 -12 560 -12 b 255 -4 426 -7 341 -4 b 160 -6 222 -4 193 -6 l 36 -6 b 1 -14 24 -7 7 0 b 19 -53 -3 -29 9 -42 b 45 -69 26 -60 36 -65 b 137 -85 76 -82 108 -85 z',\n },\n articStaccatoAbove: {\n x_min: 1.4151102965496913,\n x_max: 112,\n y_min: 0,\n y_max: 156,\n ha: 156,\n o: 'm 98 0 b 132 23 109 0 122 7 b 161 112 150 50 161 79 b 158 148 161 124 161 137 b 125 186 154 167 131 167 b 63 225 117 215 85 216 b 23 197 45 222 30 219 b 3 91 12 163 12 127 b 19 66 0 79 4 69 b 65 27 40 62 53 46 b 98 0 76 9 88 0 z',\n },\n articStaccatoBelow: {\n x_min: 1.4151102965496913,\n x_max: 112.08403222864916,\n y_min: -156,\n y_max: 0,\n ha: 156,\n o: 'm 132 -202 b 161 -112 151 -174 163 -145 b 158 -76 161 -101 161 -88 b 125 -39 153 -58 131 -58 b 63 0 115 -10 85 -9 b 23 -27 45 -3 30 -6 b 3 -134 12 -62 10 -98 b 19 -158 0 -145 4 -156 b 65 -197 40 -164 53 -179 b 98 -225 75 -216 88 -225 b 132 -202 109 -225 122 -217 z',\n },\n articStaccatissimoAbove: {\n x_min: 0,\n x_max: 139,\n y_min: 0,\n y_max: 411,\n ha: 411,\n o: 'm 104 0 b 144 115 143 29 138 75 b 197 423 158 217 180 320 b 200 454 199 433 200 444 b 181 540 200 482 193 513 b 112 592 167 573 141 592 b 55 567 92 592 72 585 b 0 490 32 546 3 527 l 0 484 b 27 279 14 416 14 347 b 84 20 43 193 52 104 b 96 0 86 13 92 6 z',\n },\n articStaccatissimoBelow: {\n x_min: 0,\n x_max: 139,\n y_min: -411,\n y_max: 0,\n ha: 411,\n o: 'm 88 -592 b 145 -567 108 -592 128 -585 b 200 -490 168 -546 197 -527 l 200 -484 b 173 -279 186 -416 186 -347 b 117 -20 157 -193 148 -104 b 104 0 114 -13 108 -6 l 96 0 b 56 -115 58 -29 62 -75 b 3 -423 42 -217 20 -320 b 0 -454 1 -433 0 -444 b 19 -540 0 -482 7 -513 b 88 -592 33 -573 59 -592 z',\n },\n articMarcatoAbove: {\n x_min: 0.04121419527862119,\n x_max: 396,\n y_min: 0,\n y_max: 328.0000000000001,\n ha: 328.0000000000001,\n o: 'm 477 0 b 510 13 488 0 500 6 b 570 124 546 40 563 81 b 547 183 570 147 560 166 b 356 422 487 265 405 330 b 346 442 354 429 350 436 l 346 444 b 318 465 340 456 330 464 l 312 469 b 274 449 294 480 284 461 b 242 413 262 438 253 425 b 56 196 177 343 112 274 b 1 56 26 154 13 105 b 27 20 -4 35 9 20 b 42 23 32 20 37 20 b 84 53 59 29 72 39 b 255 269 141 125 193 200 b 275 229 262 255 266 242 b 448 14 324 151 390 86 b 477 0 456 4 467 0 z',\n },\n articMarcatoBelow: {\n x_min: 0,\n x_max: 395.9587858047214,\n y_min: -328.0000000000001,\n y_max: 0,\n ha: 328.0000000000001,\n o: 'm 258 -469 b 297 -449 276 -480 287 -461 b 328 -413 308 -438 317 -425 b 514 -196 393 -343 458 -274 b 569 -56 544 -154 557 -105 b 543 -20 575 -35 562 -20 b 528 -23 539 -20 533 -20 b 487 -53 511 -29 498 -39 b 315 -269 429 -125 377 -200 b 295 -229 308 -255 304 -242 b 122 -14 246 -151 180 -86 b 94 0 114 -4 104 0 b 60 -13 82 0 71 -6 b 0 -124 24 -40 7 -81 b 23 -183 0 -147 10 -166 b 215 -422 84 -265 166 -330 b 225 -442 216 -429 220 -436 l 225 -444 b 252 -465 230 -456 240 -464 z',\n },\n fermataAbove: {\n x_min: -0.04550444040404433,\n x_max: 472,\n y_min: 2.015071727506986,\n y_max: 454,\n ha: 451.984928272493,\n o: 'm 39 10 b 78 108 66 37 71 73 b 163 311 92 181 111 252 b 284 423 199 353 239 392 b 373 458 312 444 340 454 b 433 431 395 458 410 446 b 603 153 530 361 596 276 b 595 121 603 144 595 131 l 595 88 b 602 50 596 75 589 55 b 639 73 619 43 631 60 b 651 102 645 82 648 92 b 667 194 660 132 662 163 b 680 278 671 222 672 248 b 560 567 680 386 638 481 b 396 654 508 625 452 649 b 291 632 364 654 325 644 b 161 526 235 613 200 566 b 4 249 85 446 26 357 b 4 174 0 222 -3 196 b 10 19 4 124 4 69 b 29 4 12 6 16 0 b 39 10 35 4 33 4 z m 338 37 b 370 40 350 36 357 36 b 380 75 387 40 380 43 b 389 94 382 79 382 85 b 356 132 389 111 374 122 b 269 154 328 147 300 156 b 225 125 252 154 228 157 b 261 48 222 81 232 56 b 338 37 287 40 312 40 z',\n },\n fermataBelow: {\n x_min: -0.310835055998654,\n x_max: 518.570567335755,\n y_min: -430,\n y_max: -0.9161449836506543,\n ha: 429.08385501634933,\n o: 'm 344 -615 b 500 -543 402 -602 452 -576 b 713 -253 605 -471 661 -364 b 746 -98 737 -204 750 -153 b 727 -59 744 -82 744 -59 b 688 -88 711 -59 694 -68 b 678 -109 687 -96 683 -102 b 562 -314 648 -183 611 -252 b 387 -439 516 -373 458 -416 b 328 -449 367 -446 347 -449 b 180 -386 274 -449 225 -423 b 69 -179 111 -330 69 -262 b 75 -121 69 -160 71 -141 b 84 -58 78 -101 84 -79 b 82 -39 84 -52 84 -45 b 68 -1 79 -26 82 -4 b 26 -32 49 0 33 -12 b 20 -52 24 -39 22 -45 b 0 -223 9 -107 -3 -161 b 141 -553 1 -348 27 -468 b 304 -619 192 -590 243 -619 b 344 -615 317 -619 330 -618 z m 415 -190 b 435 -157 429 -192 435 -184 b 308 -27 435 -86 379 -27 b 271 -46 287 -27 272 -35 b 269 -69 269 -55 269 -62 b 364 -183 269 -128 302 -170 z',\n },\n fermataLongAbove: {\n x_min: 0,\n x_max: 591.4911182523068,\n y_min: -6,\n y_max: 337.10134960318186,\n ha: 343.10134960318186,\n o: 'm 20 -9 b 36 14 29 -9 35 3 b 49 109 45 45 49 78 b 48 143 49 121 49 131 b 42 312 40 200 45 256 b 63 338 42 331 46 338 b 68 340 65 338 66 338 b 279 333 138 336 209 334 b 760 317 439 330 599 323 b 783 298 775 317 782 315 l 796 161 b 814 17 801 115 802 68 b 851 144 840 45 855 102 b 824 396 842 228 834 312 b 760 468 816 459 812 467 l 55 485 b 1 433 12 487 1 478 l 1 387 b 0 203 1 325 0 264 b 9 17 0 141 3 79 b 20 -9 9 7 6 -9 z m 403 3 b 439 6 413 3 425 4 b 477 42 464 9 474 22 b 478 62 478 49 478 55 l 478 84 b 465 160 478 109 478 135 b 449 173 461 167 459 173 b 354 105 386 179 354 156 b 359 71 354 95 356 84 b 360 65 360 69 360 66 b 403 3 372 14 373 3 z',\n },\n fermataLongBelow: {\n x_min: 0,\n x_max: 602,\n y_min: -335,\n y_max: 7,\n ha: 342,\n o: 'm 793 -482 b 851 -444 822 -482 842 -471 b 867 -357 860 -416 867 -387 b 865 -336 867 -350 867 -343 b 851 -189 858 -287 855 -238 b 832 -32 847 -135 840 -84 b 824 -17 832 -26 832 -17 l 822 -17 b 805 -30 816 -19 806 -20 b 798 -88 802 -50 798 -69 b 805 -292 798 -157 801 -225 b 772 -327 806 -318 801 -327 b 360 -324 635 -327 497 -325 b 78 -327 265 -323 171 -327 b 50 -304 59 -327 50 -320 l 50 -297 b 62 -187 55 -261 60 -225 b 71 -60 62 -144 71 -102 b 68 -20 71 -48 71 -33 b 53 10 66 -10 69 10 l 52 10 b 22 -22 37 9 24 -1 b 14 -121 17 -55 16 -89 b 0 -359 10 -200 0 -279 b 6 -452 0 -390 3 -420 b 42 -481 9 -478 20 -481 l 415 -481 l 415 -482 z m 409 -183 b 454 -179 420 -183 435 -181 b 505 -124 487 -176 504 -158 b 505 -89 507 -112 505 -101 b 507 -58 505 -79 507 -68 b 505 -42 507 -52 507 -48 b 485 -10 503 -29 501 -10 b 448 -9 472 -9 461 -9 b 380 -22 425 -9 402 -12 b 363 -46 372 -27 363 -35 l 363 -49 b 364 -114 363 -71 361 -94 b 409 -183 374 -168 377 -183 z',\n },\n fermataVeryLongAbove: {\n x_min: 0,\n x_max: 715,\n y_min: -14.096346766617495,\n y_max: 437,\n ha: 451.0963467666175,\n o: 'm 26 -20 b 42 -4 36 -22 39 -12 b 49 53 49 14 49 33 l 49 448 b 69 478 49 467 52 478 l 72 478 b 81 480 75 478 78 478 b 144 477 102 477 122 477 l 207 477 b 943 471 452 477 698 471 b 978 442 966 471 976 467 b 989 99 985 327 985 213 b 999 -19 991 60 995 22 b 1030 62 1028 6 1030 35 b 1021 507 1028 210 1025 359 b 1012 596 1021 537 1017 567 b 976 624 1009 618 998 624 b 507 626 819 624 662 625 b 46 629 353 628 200 629 b 7 590 19 629 7 618 b 0 101 7 428 0 264 b 16 -4 0 65 13 32 b 26 -20 17 -10 22 -19 z m 187 -9 b 207 30 206 -7 204 14 b 207 55 209 37 207 46 b 200 240 210 117 197 179 b 219 262 200 256 203 262 l 223 262 b 456 252 301 258 379 255 l 772 239 b 804 209 792 238 802 235 b 818 69 806 163 809 115 b 834 -4 821 46 816 19 b 857 56 852 13 857 35 b 851 183 857 99 858 141 b 827 360 841 242 841 301 b 786 390 821 383 809 389 b 189 409 588 403 387 402 b 153 377 163 409 153 400 b 173 27 153 259 150 143 b 187 -9 176 13 177 -9 z m 478 3 b 536 10 491 3 510 6 b 582 60 569 14 580 32 l 582 89 l 580 89 b 580 117 580 98 582 107 b 540 171 577 158 572 171 b 521 171 534 171 528 170 b 459 166 500 170 480 168 b 423 132 436 164 423 154 b 428 88 423 118 425 102 b 478 3 438 22 439 4 z',\n },\n fermataVeryLongBelow: {\n x_min: -0.012345679012345682,\n x_max: 686.4443937550029,\n y_min: -427,\n y_max: 30,\n ha: 457,\n o: 'm 56 -615 b 282 -612 132 -612 207 -613 b 924 -606 497 -608 710 -606 b 973 -570 953 -606 968 -593 b 988 -455 984 -533 991 -494 b 982 -262 984 -390 982 -327 b 976 -69 982 -197 981 -134 b 976 -14 975 -50 976 -33 b 966 43 976 4 975 23 b 940 20 953 37 943 35 b 933 -76 936 -12 933 -45 b 935 -121 933 -91 933 -107 b 940 -307 940 -183 940 -245 l 940 -435 b 919 -458 940 -451 935 -458 b 894 -459 910 -458 903 -458 b 206 -467 665 -461 435 -467 b 88 -467 167 -467 127 -468 b 45 -425 45 -467 42 -465 b 46 -400 46 -416 46 -408 b 43 -325 46 -376 43 -350 b 42 -59 42 -236 42 -148 b 22 17 42 -32 36 -6 b 0 -27 -1 7 0 -10 b 7 -420 0 -158 7 -289 l 7 -474 b 16 -579 7 -510 7 -544 b 56 -615 22 -603 27 -615 z m 789 -390 b 835 -357 816 -392 829 -380 b 850 -256 844 -324 850 -291 b 848 -230 850 -248 850 -239 b 845 -135 845 -199 845 -167 l 845 -72 b 837 23 845 -40 848 -9 b 809 -27 809 14 809 -7 l 809 -222 b 788 -242 809 -238 805 -242 l 203 -229 b 180 -209 186 -229 180 -223 l 180 -160 b 179 -115 180 -145 180 -131 b 179 -50 177 -94 179 -72 b 163 24 179 -26 176 0 b 137 -6 145 19 140 10 b 134 -39 134 -17 134 -27 b 138 -105 134 -60 137 -82 l 138 -197 b 145 -343 138 -246 138 -294 b 179 -377 148 -364 151 -377 b 789 -390 383 -377 586 -380 z m 480 -164 b 566 -65 549 -164 566 -140 b 527 1 566 -10 564 1 b 436 -71 426 1 436 -9 l 436 -88 l 436 -143 b 454 -163 436 -153 439 -161 b 480 -164 464 -163 472 -164 z',\n },\n fermataShortAbove: {\n x_min: 0,\n x_max: 545,\n y_min: -18.08551453529649,\n y_max: 348,\n ha: 366.0855145352965,\n o: 'm 16 -26 b 36 -9 26 -27 30 -16 b 354 340 143 107 249 223 b 369 348 360 346 364 348 b 382 341 373 348 377 346 l 530 199 b 743 0 599 131 672 68 b 753 -7 747 -3 750 -7 b 762 -1 756 -7 759 -6 b 785 84 776 10 785 48 b 768 150 785 112 779 138 l 399 491 b 379 501 392 498 384 501 b 357 488 372 501 364 495 b 27 137 248 370 141 251 b 1 84 12 121 1 105 b 3 69 1 79 1 75 b 0 55 1 65 0 59 b 9 1 0 36 9 20 b 16 -26 10 -7 3 -22 z m 357 24 b 367 27 360 24 363 24 b 431 118 422 42 431 49 b 429 151 431 130 431 141 b 400 193 428 171 429 193 b 333 147 359 193 333 176 b 341 42 333 111 337 78 b 357 24 343 30 346 24 z',\n },\n fermataShortBelow: {\n x_min: 0,\n x_max: 565,\n y_min: -335,\n y_max: 10,\n ha: 345,\n o: 'm 386 -482 b 422 -455 395 -482 405 -474 b 732 -117 526 -343 631 -232 b 814 12 765 -79 799 -42 b 752 -22 780 14 768 -7 b 436 -320 645 -120 540 -219 b 419 -328 429 -325 425 -328 b 400 -318 413 -328 408 -325 b 35 0 279 -212 157 -105 b 16 14 29 4 23 14 b 7 12 13 14 10 14 b 0 -3 1 7 0 1 b 7 -23 0 -10 3 -17 b 20 -48 12 -30 14 -39 b 167 -238 60 -117 115 -177 b 351 -455 229 -310 289 -383 b 386 -482 367 -474 377 -482 z m 382 -213 b 406 -207 389 -213 396 -210 b 452 -156 431 -199 446 -180 b 461 -85 456 -132 458 -108 b 448 -32 461 -66 454 -49 b 418 -6 442 -12 431 -6 b 397 -9 410 -6 405 -7 b 348 -50 376 -14 350 -14 b 356 -170 348 -91 354 -130 b 382 -213 357 -199 363 -213 z',\n },\n breathMarkComma: {\n x_min: 0,\n x_max: 148,\n y_min: 0,\n y_max: 275,\n ha: 275,\n o: 'm 120 0 b 187 78 156 20 174 48 b 213 209 206 121 213 164 b 206 294 213 238 210 265 b 140 390 200 337 171 367 b 122 396 134 395 128 396 b 68 382 105 396 85 384 b 46 379 60 382 53 382 b 0 328 12 369 0 357 b 1 311 0 323 1 317 b 30 210 4 275 22 243 b 66 167 39 179 46 167 b 94 171 73 167 82 168 b 143 180 109 174 124 180 b 160 179 148 180 154 180 b 120 66 124 145 120 107 b 120 0 120 45 121 23 z',\n },\n breathMarkUpbow: {\n x_min: 0,\n x_max: 254,\n y_min: 0,\n y_max: 595,\n ha: 595,\n o: 'm 233 0 b 256 48 251 14 253 30 b 272 183 264 92 265 138 b 311 455 289 274 295 364 b 350 716 327 541 341 628 b 366 815 354 749 366 782 b 359 857 366 829 363 842 b 327 815 334 852 330 832 b 302 674 315 769 310 721 b 248 357 288 567 269 462 b 225 226 240 314 242 268 b 210 251 212 232 213 243 b 69 721 163 408 117 564 b 32 835 58 760 53 801 b 20 851 29 841 27 851 b 14 850 19 851 16 851 b 0 828 6 847 0 838 l 0 825 b 12 765 1 804 7 785 b 194 125 73 552 132 338 b 233 0 206 84 213 42 z',\n },\n caesura: {\n x_min: 0,\n x_max: 565.5831864753837,\n y_min: -0.09016994374947417,\n y_max: 562.4481112129314,\n ha: 562.5382811566809,\n o: 'm 0 76 b 49 122 24 92 37 107 b 444 613 180 287 305 455 b 528 770 484 660 518 708 b 531 792 530 778 531 785 b 524 808 531 799 530 805 b 490 792 513 815 498 802 b 390 683 456 756 420 721 b 48 262 275 543 164 400 b 0 76 0 207 7 145 z m 226 1 b 248 13 238 -4 243 7 l 353 137 b 759 638 490 302 632 464 b 814 805 795 688 819 740 b 779 786 796 805 788 796 b 628 609 724 732 678 668 b 310 242 523 485 416 363 b 217 69 265 190 217 140 b 222 30 217 58 219 45 b 222 23 222 29 220 26 b 220 12 222 20 220 16 b 226 1 220 7 222 3 z',\n },\n caesuraCurved: {\n x_min: 0,\n x_max: 386,\n y_min: -10,\n y_max: 584,\n ha: 594,\n o: 'm 180 -14 b 246 14 213 -13 230 0 b 347 144 288 52 315 99 b 526 471 420 246 488 350 b 556 671 546 537 556 603 b 543 798 556 713 553 756 b 504 837 537 822 521 828 b 490 841 500 840 494 841 b 472 832 482 841 477 838 b 406 678 436 785 406 737 b 410 638 406 665 408 652 b 425 511 419 595 425 553 b 315 186 425 395 387 287 b 180 -14 271 122 228 58 z m 14 24 b 49 39 29 24 40 32 b 120 114 76 60 99 85 b 216 276 156 166 184 223 b 317 626 281 384 317 501 b 315 664 317 639 317 651 b 301 773 314 701 311 737 b 262 808 295 795 278 808 b 245 799 256 808 249 805 b 170 641 209 750 170 706 b 171 621 170 634 170 628 b 177 511 176 585 177 549 b 114 229 177 415 160 320 b 0 26 79 161 42 95 b 14 24 6 24 10 24 z',\n },\n restMaxima: {\n x_min: 0,\n x_max: 366,\n y_min: -255,\n y_max: 255,\n ha: 510,\n o: 'm 397 -367 b 504 -343 436 -367 468 -347 b 518 -318 516 -341 518 -330 b 527 -30 518 -217 527 -117 b 526 33 527 -7 527 13 l 526 301 b 501 350 526 323 520 341 b 428 367 477 361 452 367 b 374 359 410 367 393 364 b 357 333 361 354 357 347 b 356 91 357 252 356 171 l 356 30 b 340 -307 357 -82 346 -194 b 397 -367 337 -354 350 -367 z m 46 -357 b 58 -356 49 -357 53 -357 b 154 -333 91 -351 121 -338 b 173 -305 168 -330 173 -320 l 173 302 b 132 356 173 330 157 348 b 68 364 112 363 89 364 b 3 304 19 363 1 348 l 3 4 l 0 4 b 1 -302 0 -98 0 -200 b 46 -357 1 -331 16 -357 z',\n },\n restDoubleWhole: {\n x_min: 0,\n x_max: 122,\n y_min: 0,\n y_max: 249,\n ha: 249,\n o: 'm 43 0 b 58 1 48 0 52 0 b 124 20 81 6 102 17 b 176 96 173 27 176 58 b 173 220 174 138 173 179 b 176 304 173 248 176 276 b 140 353 176 331 163 346 b 95 359 125 356 111 359 b 32 346 73 359 52 354 b 0 315 20 340 0 337 b 1 243 0 291 1 268 l 1 174 l 4 174 l 4 48 b 43 0 4 16 17 0 z',\n },\n restWhole: {\n x_min: 0.8908513171538642,\n x_max: 500,\n y_min: -120,\n y_max: 14,\n ha: 134,\n o: 'm 356 -173 l 356 -171 l 642 -171 b 719 -115 680 -171 717 -145 b 720 -82 719 -104 720 -92 b 711 -20 720 -60 719 -40 b 672 17 704 0 694 10 b 649 20 664 20 657 20 b 605 17 634 20 621 17 b 92 19 433 17 262 17 b 29 7 69 20 49 12 b 9 -17 12 4 9 -6 b 10 -43 9 -26 10 -35 b 1 -84 10 -58 3 -72 b 76 -173 0 -147 7 -173 z',\n },\n restWholeLegerLine: {\n x_min: -196.7269258015421,\n x_max: 685,\n y_min: -157,\n y_max: 29,\n ha: 186,\n o: 'm 96 -226 b 167 -223 121 -226 144 -225 b 300 -222 207 -222 252 -222 l 444 -222 b 660 -217 520 -222 595 -222 b 746 -131 703 -216 746 -200 b 744 -62 746 -108 747 -85 b 743 -39 743 -53 743 -46 b 789 -14 743 -16 752 -17 b 883 -16 821 -13 851 -16 b 965 -9 910 -16 937 -14 b 986 3 972 -7 986 -10 l 986 6 b 963 35 984 17 982 32 b 887 42 937 39 913 42 b 39 27 605 42 321 33 l -76 27 b -261 20 -138 27 -200 26 b -282 14 -269 20 -279 23 b -271 -7 -287 4 -276 -1 b -209 -27 -253 -23 -230 -24 b -153 -30 -190 -30 -173 -30 b -48 -29 -118 -30 -82 -27 b 6 -32 -22 -29 -6 -27 b 1 -72 3 -43 1 -58 b 4 -167 1 -105 7 -140 b 53 -223 3 -207 14 -217 b 96 -226 68 -226 82 -226 z',\n },\n restHalf: {\n x_min: 0,\n x_max: 518.3998530468286,\n y_min: 0,\n y_max: 162,\n ha: 162,\n o: 'm 98 0 l 556 0 b 665 1 592 0 629 0 b 746 82 720 3 743 29 b 736 174 749 114 740 144 b 670 232 729 215 708 232 b 570 229 636 232 603 229 b 356 233 498 229 426 233 l 73 233 b 0 179 19 233 0 220 b 1 154 0 171 0 164 b 6 95 4 135 6 115 b 98 0 3 27 29 0 z',\n },\n restHalfLegerLine: {\n x_min: -120,\n x_max: 448.2056815990121,\n y_min: -20,\n y_max: 143,\n ha: 163,\n o: 'm 397 -29 b 482 -23 426 -29 455 -27 b 526 -24 497 -24 511 -24 b 608 -17 554 -24 582 -23 b 645 -1 622 -14 644 -17 b 615 26 648 13 629 20 b 595 32 608 29 602 30 b 526 37 572 35 549 37 b 498 36 517 37 507 37 b 471 35 487 35 478 35 b 445 53 451 35 445 39 b 449 89 445 60 446 73 l 454 117 b 373 206 456 173 428 206 b 324 204 356 206 340 206 b 209 203 287 203 248 203 b 46 193 156 203 101 202 b 16 170 32 190 19 187 b 9 112 13 151 9 131 b 14 78 9 101 10 89 b 19 59 17 71 19 63 b -4 45 19 49 12 45 l -10 45 b -150 33 -58 45 -104 46 b -173 22 -158 32 -173 33 l -173 19 b -151 -13 -170 6 -168 -10 b -117 -17 -140 -16 -128 -17 b 118 -13 -37 -17 39 -13 b 397 -29 213 -13 308 -29 z',\n },\n restQuarter: {\n x_min: -0.3784452492533808,\n x_max: 263,\n y_min: -415,\n y_max: 415,\n ha: 830,\n o: 'm 151 -596 b 164 -563 163 -589 161 -575 b 160 -546 164 -557 161 -552 b 124 -396 148 -495 135 -446 b 122 -380 122 -390 122 -384 b 199 -255 122 -331 158 -272 b 228 -256 209 -249 217 -253 b 324 -346 274 -271 298 -310 b 353 -369 331 -356 341 -369 b 360 -367 356 -369 357 -369 b 379 -336 373 -361 379 -348 l 377 -325 b 344 -232 372 -292 366 -258 b 249 -58 301 -180 278 -117 b 242 -36 245 -49 242 -42 b 258 -7 242 -26 248 -17 b 328 78 284 20 311 45 b 354 158 344 104 354 131 b 337 216 354 177 350 196 b 213 435 294 288 249 359 b 115 575 189 487 158 536 b 78 598 105 585 92 598 b 59 592 72 598 66 596 b 39 562 45 583 39 572 b 53 527 39 550 45 539 b 168 344 98 469 125 402 b 187 307 181 328 187 317 b 153 269 187 294 176 284 b 62 213 122 252 91 235 b 40 180 48 203 40 192 b 46 158 40 173 43 166 b 99 65 60 125 79 95 b 183 -79 131 20 160 -29 b 156 -86 173 -88 164 -85 b 0 -261 58 -99 -7 -173 b 96 -557 10 -366 49 -464 b 124 -585 102 -569 109 -580 b 145 -598 132 -588 138 -598 b 151 -596 147 -598 150 -598 z',\n },\n rest8th: {\n x_min: 0,\n x_max: 289,\n y_min: -260,\n y_max: 261,\n ha: 521,\n o: 'm 164 -374 b 212 -340 190 -373 203 -357 b 276 -190 238 -292 258 -242 b 410 285 333 -36 359 128 b 416 314 413 294 416 304 l 416 321 b 393 354 415 341 410 354 b 382 353 389 354 386 354 b 292 311 347 347 315 333 b 174 225 256 276 216 251 b 157 219 168 222 163 219 b 140 228 151 219 145 222 b 131 246 134 233 131 240 b 135 262 131 252 132 256 b 147 298 141 272 147 285 b 127 367 147 323 154 354 b 94 376 114 373 102 376 b 48 336 75 376 63 363 b 3 181 20 288 12 235 b 0 150 1 170 0 160 b 109 24 0 84 35 24 b 171 36 127 24 148 27 b 289 101 213 52 248 75 b 164 -374 256 -62 193 -213 z',\n },\n rest16th: {\n x_min: 0,\n x_max: 333,\n y_min: -328.283950617284,\n y_max: 244,\n ha: 572.2839506172841,\n o: 'm 209 -471 b 246 -458 222 -477 236 -468 b 307 -338 279 -425 300 -384 b 324 -226 312 -301 317 -262 b 428 161 350 -94 386 35 b 480 318 445 215 480 259 b 467 347 480 331 477 341 b 445 351 461 350 454 351 b 408 337 432 351 419 347 b 402 333 405 336 403 334 b 223 215 344 294 294 245 b 236 259 229 233 235 246 b 238 276 238 265 238 271 b 212 338 238 302 226 334 b 193 341 206 340 199 341 b 86 289 156 341 104 317 b 59 180 66 255 59 217 b 156 27 59 76 92 27 b 236 46 179 27 204 35 b 338 101 271 59 298 82 b 289 -49 312 49 302 0 b 196 -122 276 -99 235 -107 b 176 -114 187 -127 176 -127 l 176 -111 b 157 -53 177 -88 164 -72 b 69 -9 141 -7 101 -16 b 17 -48 43 -3 29 -27 b 0 -127 4 -73 0 -99 b 6 -186 0 -147 1 -167 b 82 -294 17 -262 37 -294 b 160 -276 102 -294 128 -289 b 219 -242 181 -268 203 -259 b 236 -230 223 -236 229 -230 b 243 -232 239 -230 240 -230 b 235 -275 248 -246 239 -261 b 202 -456 220 -334 202 -395 b 209 -471 202 -462 203 -468 z',\n },\n rest32nd: {\n x_min: 0,\n x_max: 347,\n y_min: -497.5023916875033,\n y_max: 483,\n ha: 980.5023916875033,\n o: 'm 177 -716 b 217 -690 194 -720 209 -704 b 233 -655 225 -680 230 -668 b 292 -390 253 -567 275 -480 b 361 -48 312 -275 336 -161 b 452 400 393 102 422 252 b 497 629 467 477 482 553 b 500 647 498 635 500 641 b 480 691 500 665 492 684 b 464 696 475 694 469 696 b 418 674 448 696 431 685 l 361 626 b 333 611 353 618 343 612 b 308 629 325 611 317 616 b 239 667 292 651 265 661 b 204 670 228 668 216 670 b 86 559 141 670 95 628 b 85 537 86 552 85 544 b 107 416 85 495 95 455 b 161 372 114 389 134 372 b 174 373 166 372 170 372 b 226 383 192 374 209 377 b 387 478 285 402 330 444 b 364 386 379 444 364 415 b 276 271 364 323 320 298 b 265 266 272 268 268 266 b 252 276 261 266 256 269 b 143 333 229 311 186 333 b 107 327 130 333 118 330 b 43 243 62 314 46 291 b 58 145 43 210 52 179 b 150 63 68 92 99 63 b 315 132 213 63 259 98 b 266 -58 297 63 281 4 b 207 -101 259 -91 230 -96 b 186 -66 186 -107 199 -75 b 180 -50 181 -63 183 -55 b 101 -3 160 -23 135 -3 b 9 -66 59 -3 20 -32 b 0 -118 3 -84 0 -101 b 10 -196 0 -144 6 -170 b 104 -287 20 -256 52 -287 b 137 -282 114 -287 125 -287 b 184 -269 151 -281 171 -269 b 196 -275 190 -269 193 -271 b 199 -287 197 -278 199 -282 b 184 -343 199 -304 189 -325 b 181 -348 184 -346 183 -347 b 134 -595 158 -429 131 -508 b 156 -677 134 -624 150 -648 b 177 -716 158 -693 160 -713 z',\n },\n rest64th: {\n x_min: 0,\n x_max: 428,\n y_min: -720,\n y_max: 473.6797408388932,\n ha: 1193.6797408388932,\n o: 'm 200 -1037 b 229 -1012 215 -1037 222 -1025 b 238 -984 233 -1004 236 -994 b 282 -780 248 -914 265 -848 b 386 -369 317 -644 354 -507 b 491 104 422 -212 451 -53 b 600 541 528 249 550 399 b 616 629 611 570 616 599 b 600 680 616 648 615 671 b 550 665 586 687 566 677 b 480 618 527 649 501 635 b 464 611 474 613 468 611 b 448 622 458 611 454 615 b 366 662 425 651 397 662 b 331 658 354 662 343 661 b 242 572 285 647 253 619 b 236 528 239 557 236 543 b 266 400 236 484 251 442 b 325 373 274 377 301 373 b 436 409 366 373 403 383 l 494 452 b 474 360 485 416 474 389 b 383 248 474 297 435 269 b 320 328 377 288 351 310 b 276 341 305 337 291 341 b 186 269 235 341 194 311 b 181 230 183 256 181 243 b 187 153 181 204 186 179 b 279 63 192 86 233 63 b 304 65 288 63 295 63 b 416 115 344 72 379 92 b 387 -14 406 69 397 27 b 320 -95 380 -52 369 -86 b 318 -79 320 -89 320 -84 b 223 0 305 -29 271 0 b 122 -81 171 0 135 -30 b 118 -127 120 -96 118 -112 l 118 -196 b 137 -242 118 -215 125 -229 b 209 -275 157 -266 181 -275 b 249 -269 222 -275 235 -274 b 318 -248 272 -264 294 -255 b 281 -390 315 -301 292 -344 b 276 -400 279 -393 279 -397 b 259 -420 272 -408 266 -416 b 246 -429 255 -425 251 -429 b 233 -415 242 -429 238 -426 b 176 -359 225 -389 200 -372 b 121 -346 158 -348 140 -346 b 14 -408 73 -346 27 -370 b 0 -498 4 -438 0 -468 b 6 -564 0 -520 3 -543 b 91 -635 12 -611 45 -635 b 131 -629 104 -635 117 -634 b 223 -590 163 -622 190 -603 b 166 -824 203 -671 189 -747 b 148 -912 157 -852 148 -881 b 156 -955 148 -926 150 -940 b 177 -1008 161 -972 170 -991 b 200 -1037 181 -1020 183 -1037 z',\n },\n rest128th: {\n x_min: 0.6717818579024267,\n x_max: 491,\n y_min: -711,\n y_max: 719,\n ha: 1430,\n o: 'm 233 -1015 b 271 -956 256 -1002 266 -981 l 314 -723 b 393 -350 337 -598 366 -474 b 543 312 442 -128 492 91 b 687 841 583 490 635 665 b 707 958 698 880 707 919 b 706 986 707 968 707 976 b 688 1025 704 999 704 1024 b 670 1027 683 1025 677 1027 b 629 1007 655 1027 639 1022 b 559 945 613 981 586 968 b 541 1004 553 968 559 991 b 456 1035 516 1024 488 1035 b 419 1030 444 1035 431 1034 b 344 953 379 1018 353 995 b 340 900 341 936 340 917 b 341 847 340 881 341 864 b 380 779 340 815 354 793 b 464 763 406 765 435 762 b 592 814 510 763 549 786 b 546 660 575 757 556 710 b 480 585 537 619 517 598 b 478 599 480 590 478 595 b 386 678 472 641 428 678 b 294 612 343 678 304 651 b 279 477 282 567 278 521 b 363 395 281 428 317 395 b 380 396 369 395 374 395 b 488 436 416 403 449 419 b 384 233 469 357 468 275 b 359 291 373 252 377 276 b 282 318 337 310 310 318 b 181 264 243 318 203 298 b 154 107 153 216 154 161 b 242 6 154 42 187 6 b 278 10 253 6 265 7 b 408 88 330 22 366 55 b 387 -1 400 56 393 27 b 301 -112 379 -55 354 -94 b 289 -65 297 -95 302 -79 b 219 -32 269 -42 245 -32 b 183 -37 207 -32 196 -35 b 112 -109 144 -46 121 -71 b 105 -219 104 -145 108 -183 b 186 -315 101 -276 134 -315 b 230 -307 199 -315 215 -312 b 324 -256 264 -295 292 -275 b 180 -491 323 -383 266 -471 b 183 -459 180 -480 180 -469 b 184 -442 184 -454 184 -448 l 184 -436 b 135 -369 184 -403 170 -383 b 102 -363 125 -364 114 -363 b 29 -399 73 -363 45 -376 b 1 -556 -4 -448 6 -503 b 109 -670 -4 -625 43 -670 b 140 -667 118 -670 130 -668 b 253 -616 180 -658 213 -638 b 238 -688 248 -644 242 -665 b 192 -959 220 -779 192 -867 b 193 -992 192 -971 192 -981 b 210 -1024 194 -1014 199 -1024 b 233 -1015 216 -1024 223 -1021 z',\n },\n dynamicPiano: {\n x_min: -49,\n x_max: 326.5019318364244,\n y_min: -142,\n y_max: 515,\n ha: 657,\n o: 'm -56 -204 b -42 -202 -52 -204 -46 -203 b -19 -194 -35 -202 -26 -197 b 147 -138 35 -170 91 -151 b 249 -58 194 -127 223 -95 b 262 -29 255 -50 262 -39 b 258 -17 262 -24 261 -20 b 232 -7 252 -10 242 -7 b 210 -12 225 -7 217 -9 b 125 -40 184 -23 157 -30 b 183 140 153 19 171 79 b 251 167 207 144 230 153 b 469 518 383 262 480 382 b 357 687 472 626 420 687 b 315 678 344 687 330 684 b 204 600 279 664 240 634 b 210 704 206 635 209 670 b 215 721 212 710 215 716 b 206 733 215 727 212 730 b 180 742 197 736 189 742 b 164 734 176 742 170 740 b 1 575 108 684 36 645 b -7 557 -1 569 -7 563 b -6 553 -7 556 -7 554 b 7 547 -3 547 3 547 l 17 547 b 82 575 43 547 59 567 l 82 452 b 56 46 82 317 81 180 b 17 -66 49 7 46 -36 b -62 -173 -13 -99 -37 -135 b -71 -192 -66 -179 -71 -184 b -68 -199 -71 -193 -69 -196 b -56 -204 -65 -203 -60 -204 z m 196 258 b 197 266 197 261 197 264 b 200 510 200 347 199 429 b 233 543 210 521 222 533 b 281 560 249 554 266 560 b 340 503 310 560 333 540 b 344 461 343 488 344 474 b 321 323 344 413 333 369 b 268 272 315 300 295 281 b 196 258 245 265 220 261 z',\n },\n dynamicMezzo: {\n x_min: -18,\n x_max: 559,\n y_min: -50,\n y_max: 365,\n ha: 415,\n o: 'm 43 -71 b 160 19 86 -71 143 -26 b 230 264 189 99 200 184 b 282 363 243 297 259 327 b 287 320 285 347 287 333 b 284 279 287 305 285 292 l 249 -12 b 275 -43 248 -29 245 -43 b 395 45 321 -43 389 3 b 462 271 406 124 436 197 b 523 387 475 310 490 348 l 523 346 b 504 130 521 274 513 202 b 501 81 501 114 501 98 b 510 3 501 55 504 29 b 580 -72 521 -48 543 -72 b 625 -63 593 -72 608 -69 b 789 50 690 -43 744 -3 b 805 72 795 56 805 63 b 798 85 805 76 802 81 b 778 94 792 91 785 94 b 755 85 770 94 763 91 l 693 40 b 675 33 685 36 680 33 b 658 52 668 33 662 39 b 645 144 651 82 645 112 b 658 448 641 246 660 346 b 606 507 658 485 638 507 b 583 504 599 507 592 505 b 495 446 547 497 521 471 b 420 373 471 423 448 399 b 413 458 418 406 418 432 b 361 507 408 490 386 507 b 320 491 347 507 333 501 b 160 307 256 444 207 382 l 160 337 b 174 488 160 387 174 438 b 156 521 174 501 173 513 b 137 526 148 524 143 526 b 109 513 127 526 118 520 b -16 399 66 477 23 439 b -26 383 -20 395 -26 389 l -26 379 b -14 370 -24 372 -20 370 b -6 372 -12 370 -9 372 b 19 376 4 374 12 376 b 36 359 32 376 36 370 b 30 330 36 350 35 341 l 30 323 b 9 -35 23 203 17 85 b 43 -71 6 -65 19 -71 z',\n },\n dynamicForte: {\n x_min: -144,\n x_max: 311.30112136775,\n y_min: -115.3876295915697,\n y_max: 504,\n ha: 619.3876295915697,\n o: 'm -101 -166 b 173 76 7 -153 150 -30 b 206 344 192 164 202 253 b 268 338 226 343 246 341 b 384 395 317 333 353 361 b 397 419 393 405 397 412 b 367 442 397 429 387 436 b 350 444 361 444 356 444 b 206 455 302 449 255 454 l 206 474 b 202 540 204 495 202 518 b 209 593 202 557 203 576 b 236 624 215 613 225 624 b 265 612 245 624 253 619 b 308 552 287 596 302 577 b 336 533 312 534 323 533 b 448 611 366 533 444 583 b 399 696 452 648 423 671 b 382 706 395 700 387 703 b 308 726 357 720 333 726 b 207 684 272 726 239 711 b 60 455 135 622 60 560 l 10 455 b -23 448 -1 455 -13 454 b -102 372 -55 426 -76 397 b -109 357 -108 367 -109 361 b -95 347 -109 353 -105 348 b -63 346 -84 346 -73 346 b 0 344 -43 344 -22 344 l 63 344 b 53 186 63 291 59 239 b 23 0 46 124 42 60 b -35 -60 10 -42 -6 -60 b -73 -52 -45 -60 -58 -58 b -91 -48 -79 -49 -85 -48 b -109 -53 -96 -48 -102 -49 b -199 -124 -143 -72 -168 -99 b -207 -137 -203 -128 -207 -132 b -194 -148 -207 -141 -203 -145 b -101 -166 -164 -160 -132 -168 z',\n },\n dynamicRinforzando: {\n x_min: -75,\n x_max: 322.0960720195126,\n y_min: -90,\n y_max: 325,\n ha: 415,\n o: 'm 23 -130 b 40 -125 27 -130 33 -128 b 128 -9 81 -114 125 -53 b 145 200 132 62 141 130 b 148 238 147 212 148 225 b 308 321 184 291 245 321 b 363 314 325 321 344 318 b 377 310 369 312 373 310 b 384 311 380 310 382 310 b 464 415 410 317 464 389 b 446 433 465 429 455 429 b 390 445 428 441 409 445 b 305 429 361 445 334 438 b 167 346 252 413 202 393 b 153 325 163 338 158 333 b 148 438 154 363 151 399 b 121 468 147 456 134 468 b 101 458 115 468 108 465 b -63 310 46 409 -16 367 b -108 240 -78 289 -98 271 b 32 330 -50 256 -13 297 b 37 304 37 320 37 312 l 37 292 b 10 -101 27 161 20 30 b 23 -130 9 -120 12 -130 z',\n },\n dynamicSforzando: {\n x_min: 0,\n x_max: 296,\n y_min: 0,\n y_max: 379,\n ha: 379,\n o: 'm 151 0 b 174 1 160 0 166 0 b 392 158 272 14 346 71 b 405 207 400 174 405 190 b 359 287 405 236 389 265 b 261 325 328 308 294 315 b 168 413 216 340 181 366 b 166 426 167 418 166 423 b 176 438 166 432 167 436 b 199 441 183 441 190 441 b 310 393 238 441 295 422 b 334 370 317 376 325 370 b 363 386 343 370 353 379 b 422 445 386 402 408 420 b 426 458 425 449 426 454 b 422 469 426 462 425 465 b 274 546 395 518 333 546 b 161 503 232 546 190 531 b 86 405 132 472 108 439 b 71 347 75 387 71 367 b 112 256 71 312 85 279 b 209 215 141 232 176 226 b 284 168 238 206 266 197 b 300 131 291 157 300 144 b 298 120 300 127 298 122 b 278 107 294 109 285 108 b 262 108 271 107 266 108 l 259 108 b 114 157 200 107 156 125 b 96 181 104 163 96 170 l 96 184 b 102 202 96 190 102 196 b 96 209 102 204 101 207 b 63 194 82 215 72 204 b 7 109 42 168 26 138 b 0 86 3 101 0 94 b 13 60 0 78 4 68 b 151 0 53 23 101 0 z',\n },\n dynamicZ: {\n x_min: -42.73880183193087,\n x_max: 331,\n y_min: 0,\n y_max: 328,\n ha: 328,\n o: 'm -45 0 b -6 16 -32 0 -17 10 b 3 20 -3 16 0 19 b 144 60 49 48 96 60 b 284 22 190 60 238 46 b 348 4 305 10 327 4 b 461 75 393 4 435 30 b 468 91 464 81 467 86 b 456 104 468 95 465 99 b 287 173 402 131 348 167 b 239 176 271 174 255 176 b 168 174 217 176 194 174 b 367 340 236 236 298 294 b 459 423 402 363 432 392 b 477 454 467 431 475 442 b 474 462 477 456 475 459 b 454 472 469 469 462 472 b 432 468 446 472 439 469 b 356 448 406 461 380 455 b 210 422 307 433 258 422 b 109 442 177 422 144 428 b 94 445 104 444 99 445 b 69 433 85 445 76 442 b 27 390 56 419 39 406 b -9 343 16 373 -17 357 b 63 311 3 320 36 314 l 78 311 b 132 307 95 308 114 307 b 240 314 168 307 203 311 l 193 271 b -37 50 117 196 19 145 b -59 7 -46 36 -69 20 b -45 0 -55 3 -50 0 z',\n },\n ornamentTrill: {\n x_min: 1,\n x_max: 551,\n y_min: -18,\n y_max: 539,\n ha: 557,\n o: 'm 321 612 b 190 602 278 605 235 605 l 190 638 b 187 693 190 652 190 667 b 161 776 184 717 193 776 b 137 747 150 776 137 766 b 130 654 135 716 131 685 l 130 596 l 52 588 b 4 539 23 585 7 570 b 1 477 3 530 1 500 b 3 448 1 461 3 448 l 3 452 b 53 432 6 436 23 432 b 134 435 75 432 102 433 b 151 117 138 328 147 223 b 170 13 153 82 157 46 b 209 -26 179 -10 193 -26 b 222 -22 213 -26 217 -24 b 269 -17 233 -16 253 -27 b 343 135 325 19 346 66 b 343 158 343 147 344 147 b 323 192 341 171 337 187 b 291 176 311 194 300 184 l 264 148 b 229 131 261 145 238 131 b 212 170 209 131 213 154 b 194 438 203 259 199 348 l 272 442 b 284 452 276 441 279 441 b 305 462 287 461 295 462 l 312 462 b 346 477 325 462 340 464 b 366 560 357 503 366 531 b 321 612 366 598 356 618 z m 759 588 b 711 560 749 592 733 570 b 588 500 671 541 631 521 b 583 533 586 514 586 524 b 560 576 577 549 577 572 b 517 550 541 582 528 564 b 416 423 482 508 452 462 b 382 353 392 397 384 370 b 387 305 380 341 386 318 b 392 275 389 295 392 285 b 409 243 393 262 393 243 b 431 262 419 243 425 255 b 521 373 459 298 488 333 b 523 354 521 366 523 360 b 520 337 523 346 521 340 b 508 295 513 323 508 310 b 530 102 508 279 524 122 b 549 66 533 88 530 66 b 577 99 563 66 572 84 b 580 131 580 109 580 121 l 580 302 b 600 347 580 318 582 337 b 701 392 632 364 665 384 b 793 518 785 409 793 435 b 759 588 793 559 785 576 z',\n },\n ornamentTurn: {\n x_min: 0,\n x_max: 574,\n y_min: 0,\n y_max: 312,\n ha: 312,\n o: 'm 651 0 b 816 132 727 0 796 46 b 827 223 822 163 827 193 b 808 340 827 262 821 301 b 665 449 785 408 729 449 b 636 446 655 449 647 448 b 589 384 600 441 586 422 l 602 300 b 611 285 603 291 605 285 b 621 288 613 285 616 287 b 655 295 632 294 644 295 b 711 284 674 295 693 289 b 773 209 740 275 773 232 b 697 156 773 184 734 160 b 664 154 685 154 675 154 b 579 168 635 154 608 158 b 455 242 533 186 495 213 b 261 400 387 291 331 354 b 160 432 225 422 190 432 b 20 328 98 432 49 392 b 0 229 6 295 0 262 b 30 71 0 176 14 122 b 144 3 43 29 96 3 b 168 6 153 3 160 4 b 248 122 233 20 248 39 b 246 147 248 124 248 135 b 226 177 243 164 239 177 b 206 170 220 177 215 174 b 144 154 186 158 166 154 b 79 170 122 154 101 160 b 53 202 62 179 53 189 b 60 228 53 209 55 217 b 161 281 81 261 120 281 b 183 279 168 281 176 281 b 325 190 243 269 284 229 b 572 16 402 124 475 53 b 651 0 598 6 625 0 z',\n },\n ornamentTurnSlash: {\n x_min: 0,\n x_max: 574,\n y_min: -106,\n y_max: 405,\n ha: 511,\n o: 'm 441 -153 b 456 -60 455 -118 456 -89 b 455 81 455 -14 455 33 b 572 14 491 55 530 30 b 651 -1 598 4 625 -1 b 816 131 727 -1 796 45 b 827 222 822 161 827 192 b 808 338 827 261 821 300 b 665 448 785 406 729 448 b 636 445 655 448 647 446 b 589 383 600 439 586 420 l 602 298 b 611 284 603 289 605 284 b 621 287 613 284 616 285 b 655 294 632 292 644 294 b 711 282 674 294 693 288 b 773 207 740 274 773 230 b 697 154 773 183 734 158 b 664 153 685 153 675 153 b 579 167 635 153 608 157 b 455 240 533 183 495 212 b 454 242 455 240 455 242 l 454 337 b 452 488 454 386 452 439 b 433 570 452 517 451 546 b 425 583 431 575 431 583 l 422 583 b 403 566 415 582 408 573 b 402 546 400 560 402 553 l 397 287 b 261 399 353 325 310 366 b 160 431 225 420 190 431 b 20 327 98 431 48 390 b 0 228 6 294 0 261 b 30 69 0 174 14 121 b 144 1 43 27 96 1 b 168 4 153 1 160 3 b 248 121 233 19 248 37 b 246 145 248 122 248 134 b 226 176 243 163 239 176 b 206 168 220 176 215 173 b 144 153 186 157 166 153 b 79 168 122 153 101 158 b 53 200 62 177 53 187 b 60 226 53 207 55 216 b 161 279 79 259 120 279 b 183 278 168 279 176 279 b 325 189 243 266 282 226 b 395 130 348 168 372 148 b 393 71 393 109 393 89 b 441 -153 390 -6 402 -78 z',\n },\n ornamentMordent: {\n x_min: 0,\n x_max: 700,\n y_min: 0,\n y_max: 497,\n ha: 497,\n o: 'm 513 0 b 528 39 526 14 527 27 b 531 72 531 50 531 60 b 528 138 531 94 528 117 l 528 347 b 552 359 537 354 544 359 b 579 338 560 359 569 353 b 674 217 609 297 639 255 b 719 190 690 200 704 190 b 759 215 732 190 744 197 b 940 395 815 279 877 337 b 1001 490 968 422 986 455 b 1008 513 1004 495 1008 505 b 1002 524 1008 517 1007 521 b 968 516 994 530 978 524 b 960 508 965 513 963 510 b 798 356 900 464 848 410 b 778 341 791 347 783 341 b 757 354 772 341 765 346 b 661 475 720 392 690 432 b 611 517 644 504 629 517 b 563 498 598 517 583 511 b 527 471 550 490 539 481 l 527 570 b 492 716 526 619 523 671 b 472 677 480 704 472 694 b 465 399 474 585 468 491 b 439 366 456 387 448 376 b 384 320 415 336 399 320 b 330 367 369 320 354 336 b 325 376 328 369 327 373 b 226 490 291 413 265 456 b 189 505 213 500 202 505 b 157 491 177 505 167 500 b 0 229 75 420 0 346 b 1 202 0 220 0 212 b 22 215 12 203 16 209 b 124 327 55 252 89 289 b 147 343 132 337 140 343 b 171 323 156 343 164 336 b 266 197 196 276 232 236 b 337 157 291 170 314 157 b 410 207 361 157 386 174 b 461 274 428 229 444 252 b 462 166 461 238 461 202 b 513 0 465 108 487 55 z',\n },\n ornamentShortTrill: {\n x_min: 0,\n x_max: 747,\n y_min: 0,\n y_max: 243,\n ha: 243,\n o: 'm 379 0 b 428 14 395 0 410 4 b 474 56 445 26 461 39 b 552 157 500 89 526 122 b 566 168 556 163 560 168 b 575 157 569 168 572 166 b 664 36 592 107 628 72 b 733 1 685 13 710 1 b 802 35 757 1 780 13 b 1007 249 871 105 940 177 b 1067 324 1028 272 1054 295 b 1076 340 1068 330 1076 334 b 1073 346 1076 341 1076 343 b 1057 350 1068 348 1063 350 b 1047 347 1053 350 1050 350 b 1001 310 1031 336 1015 324 l 857 157 b 844 143 852 153 848 143 b 835 150 841 143 838 144 b 757 242 815 186 780 209 b 685 298 739 268 713 284 b 641 310 670 305 655 310 b 590 288 625 310 608 304 b 497 179 554 256 527 215 b 480 164 490 170 485 164 b 462 179 474 164 469 168 b 372 295 436 220 405 258 b 278 344 346 324 312 344 b 199 310 252 344 226 334 b 92 196 161 274 128 233 b 0 24 46 148 23 89 b 42 48 22 27 32 37 b 156 168 84 85 114 132 b 196 192 174 184 186 192 b 228 158 206 192 215 181 b 312 36 252 114 282 75 b 379 0 331 12 354 0 z',\n },\n ornamentTremblement: {\n x_min: 0,\n x_max: 982.17691453624,\n y_min: 0,\n y_max: 224,\n ha: 224,\n o: 'm 0 0 b 63 36 30 12 48 23 b 157 124 94 66 125 94 b 177 135 164 131 170 135 b 196 122 183 135 189 131 b 268 40 217 94 245 68 b 323 6 288 16 304 6 b 369 20 336 6 350 10 b 412 53 384 29 399 40 b 501 145 442 84 472 114 b 523 158 508 154 516 158 b 543 145 528 158 536 154 b 641 45 576 112 608 78 b 698 17 658 27 677 17 b 729 23 708 17 719 20 b 804 65 756 32 780 46 b 904 154 837 95 871 124 b 920 163 910 160 916 163 b 936 153 924 163 930 160 b 1024 60 965 121 996 92 b 1112 13 1053 29 1080 13 b 1184 39 1135 13 1158 22 b 1359 194 1248 84 1305 138 b 1413 301 1388 223 1403 261 b 1404 323 1417 315 1413 323 b 1391 320 1400 323 1395 321 b 1344 294 1375 314 1358 307 b 1224 186 1305 258 1269 216 b 1194 173 1212 179 1202 173 b 1165 193 1184 173 1175 179 b 1096 271 1145 222 1122 248 b 1001 318 1061 302 1031 318 b 903 268 969 318 937 301 b 806 186 871 239 841 210 b 782 174 796 179 789 174 b 756 193 773 174 765 180 b 652 291 729 232 693 266 b 596 308 634 302 615 308 b 530 278 573 308 552 298 l 415 168 b 393 157 408 161 400 157 b 373 171 387 157 380 161 b 305 245 353 197 330 222 b 248 276 285 266 266 278 b 189 245 229 276 210 266 b 81 144 156 209 120 174 b 0 0 33 109 26 56 z',\n },\n ornamentPrecompAppoggTrill: {\n x_min: -0.11067192132025548,\n x_max: 1066,\n y_min: -50,\n y_max: 533.1706452421108,\n ha: 583.1706452421108,\n o: 'm 187 -46 b 213 -14 197 -37 204 -26 b 285 151 251 36 266 94 b 304 189 294 177 297 189 b 337 168 311 189 320 181 b 458 33 386 131 415 76 b 495 12 472 19 484 12 b 531 40 508 12 518 22 b 580 168 557 79 569 124 b 622 235 592 213 603 235 b 683 194 636 235 655 222 b 838 26 737 140 791 86 b 919 -33 860 -1 881 -39 b 984 53 960 -27 971 19 b 1022 156 998 86 1008 122 b 1054 190 1032 179 1041 190 b 1089 167 1063 190 1074 183 b 1208 32 1129 122 1171 78 b 1244 10 1221 17 1231 10 b 1273 22 1253 10 1263 14 b 1496 206 1352 78 1427 137 b 1535 310 1526 236 1535 272 b 1531 359 1535 325 1534 343 b 1496 343 1515 360 1506 351 l 1309 192 b 1269 167 1289 176 1279 167 b 1234 199 1260 167 1251 177 b 1122 324 1200 243 1168 289 b 1074 344 1106 337 1089 344 b 1014 301 1051 344 1030 328 b 952 144 985 252 971 197 b 933 121 946 128 940 121 b 910 137 927 121 920 125 b 850 210 888 161 870 186 b 687 369 799 266 750 325 b 631 390 665 383 647 390 b 567 327 602 390 580 369 b 527 199 554 284 543 242 b 508 168 520 179 514 168 b 482 192 503 168 495 177 b 353 328 444 240 405 292 b 312 343 338 338 324 343 b 266 297 292 343 276 327 b 204 125 248 239 232 180 b 143 79 193 102 173 79 b 92 122 117 79 105 102 b 81 154 86 131 84 143 b 48 423 59 242 50 333 b 45 544 46 464 45 504 b 53 730 45 606 48 668 b 40 768 55 744 52 766 b 13 730 19 770 14 747 b 0 514 7 658 -1 586 b 26 122 3 383 6 252 b 75 -36 35 66 40 10 b 134 -72 92 -59 112 -72 b 187 -46 151 -72 170 -63 z',\n },\n ornamentPrecompSlideTrillDAnglebert: {\n x_min: 0,\n x_max: 1088,\n y_min: -380,\n y_max: 252,\n ha: 632,\n o: 'm 560 -539 b 439 -481 527 -497 484 -485 b 354 -461 409 -478 380 -477 b 131 -154 236 -389 161 -285 b 124 -98 127 -135 124 -117 b 196 55 124 -40 148 10 b 308 99 230 86 268 99 b 399 81 337 99 367 92 b 514 22 441 66 477 43 b 619 -30 567 -9 590 -30 b 719 17 642 -30 670 -16 b 861 131 769 52 818 88 b 899 150 874 144 887 150 b 936 117 913 150 926 138 b 965 43 948 94 956 68 b 1007 -1 973 24 978 -1 b 1048 30 1025 -1 1037 16 b 1070 65 1057 40 1064 52 b 1110 148 1084 92 1096 121 b 1145 190 1120 164 1120 190 b 1191 153 1169 192 1179 168 b 1256 29 1218 115 1231 68 b 1292 1 1267 10 1277 1 b 1320 10 1300 1 1309 4 b 1369 48 1339 19 1355 33 b 1515 196 1418 96 1464 148 b 1567 343 1558 238 1567 287 b 1555 363 1565 357 1562 363 b 1539 356 1551 363 1547 360 b 1433 268 1502 330 1466 301 b 1335 171 1401 236 1374 199 b 1310 163 1325 166 1318 163 b 1286 183 1302 163 1293 168 b 1218 311 1264 226 1247 272 b 1164 351 1200 337 1182 351 b 1110 308 1146 351 1128 337 b 1031 176 1084 265 1058 219 b 1015 161 1025 166 1021 161 b 999 179 1009 161 1005 167 b 955 279 985 213 973 248 b 913 307 943 300 930 307 b 887 302 904 307 896 305 b 852 281 874 298 863 291 b 693 167 804 236 747 204 b 612 140 667 150 639 140 b 549 157 592 140 570 145 b 403 220 503 181 452 202 b 271 248 360 236 315 248 b 179 229 239 248 209 242 b 0 -29 65 180 0 85 b 9 -104 0 -53 3 -78 b 397 -526 56 -317 183 -464 b 505 -547 432 -536 468 -547 b 560 -539 524 -547 541 -544 z',\n },\n ornamentPrecompSlideTrillBach: {\n x_min: 0,\n x_max: 1185,\n y_min: -380,\n y_max: 465,\n ha: 845,\n o: 'm 624 -544 b 642 -528 638 -543 642 -537 b 639 -514 642 -524 642 -520 b 590 -444 629 -487 609 -467 b 523 -413 573 -422 553 -410 b 498 -415 514 -415 507 -415 b 399 -389 464 -415 431 -405 b 89 -157 281 -330 176 -255 b 72 -117 78 -144 72 -131 b 73 -101 72 -111 72 -107 b 187 186 91 3 147 91 b 246 230 200 216 222 230 b 300 209 262 230 281 223 b 456 48 359 163 403 101 b 540 -10 494 10 518 -10 b 625 59 566 -10 589 13 b 690 148 648 88 668 118 b 711 167 697 160 704 167 b 733 153 719 167 724 163 b 844 14 769 105 808 60 b 903 -42 873 -23 886 -42 b 973 -1 919 -42 937 -27 b 1008 33 986 7 996 20 b 1048 81 1021 48 1035 65 b 1050 37 1048 66 1050 52 b 1047 -24 1050 17 1048 -3 b 1038 -275 1038 -108 1040 -192 l 1037 -289 b 1045 -302 1037 -295 1038 -301 b 1068 -284 1056 -304 1064 -292 b 1084 -242 1076 -271 1081 -256 b 1099 -109 1096 -199 1099 -154 b 1106 158 1099 -19 1106 71 b 1128 187 1113 167 1120 177 b 1168 223 1143 212 1155 223 b 1210 193 1179 223 1191 213 b 1220 183 1214 190 1215 186 b 1329 36 1261 138 1292 84 b 1374 7 1345 16 1358 7 b 1411 20 1384 7 1395 12 b 1479 84 1437 37 1459 59 b 1610 235 1521 135 1564 186 b 1706 403 1655 282 1695 334 b 1614 346 1663 400 1637 373 b 1464 170 1564 287 1515 228 b 1440 150 1453 156 1447 150 b 1414 173 1433 150 1426 158 b 1283 336 1371 228 1333 288 b 1220 366 1261 356 1240 366 b 1148 318 1194 366 1169 350 b 1103 255 1133 297 1119 275 b 1097 301 1102 271 1100 285 b 1099 334 1099 312 1099 324 b 1092 428 1099 367 1094 397 b 1071 647 1087 501 1079 575 b 1058 670 1071 657 1071 670 b 1035 648 1047 670 1038 661 b 1018 516 1024 605 1015 560 b 1041 203 1025 412 1037 307 b 1043 180 1041 196 1043 187 b 992 127 1027 161 1009 143 b 965 111 981 117 972 111 b 936 132 955 111 946 120 b 829 268 900 179 867 225 b 760 317 801 301 780 317 b 691 258 739 317 719 297 b 605 147 664 219 641 177 b 589 138 599 141 593 138 b 572 148 583 138 579 141 b 415 317 520 206 467 261 b 327 372 390 343 366 366 b 300 373 317 373 308 373 b 154 295 239 373 190 348 b 55 138 120 243 85 192 b 0 -53 22 79 0 13 b 160 -317 0 -156 49 -252 b 209 -354 177 -327 192 -343 b 510 -531 305 -419 397 -495 b 593 -547 537 -540 564 -547 b 624 -544 603 -547 613 -546 z',\n },\n ornamentPrecompTrillSuffixDandrieu: {\n x_min: 0,\n x_max: 1003,\n y_min: -20,\n y_max: 521,\n ha: 541,\n o: 'm 791 -16 b 844 33 812 -3 829 14 b 981 271 900 107 937 190 b 994 288 984 278 985 288 b 1009 269 1004 288 1007 278 b 1077 112 1034 217 1051 163 b 1158 43 1103 62 1129 43 b 1231 69 1179 43 1204 55 b 1348 189 1280 98 1315 143 b 1444 451 1407 271 1444 357 b 1431 547 1444 482 1440 514 b 1188 750 1401 665 1299 750 b 1158 747 1178 750 1168 749 b 1079 684 1119 742 1089 727 b 1063 632 1076 665 1071 648 b 1056 609 1058 622 1056 615 b 1071 599 1056 602 1060 599 b 1086 600 1076 599 1080 600 b 1130 605 1102 603 1116 605 b 1244 569 1171 605 1210 595 b 1349 346 1322 511 1349 433 b 1348 312 1349 334 1349 324 b 1289 197 1345 266 1325 228 b 1238 174 1270 181 1253 174 b 1188 215 1220 174 1202 187 b 1145 308 1172 245 1159 276 b 1096 413 1129 343 1120 382 b 1053 438 1084 431 1068 438 b 1011 413 1038 438 1022 431 b 955 324 989 384 971 354 b 850 127 920 258 886 192 b 838 112 847 121 842 112 b 824 128 828 109 825 121 b 802 193 815 150 809 171 b 730 400 779 264 766 337 b 688 431 719 420 703 431 b 647 403 674 431 660 422 b 606 338 632 383 619 361 b 513 167 575 282 546 223 b 480 122 503 150 498 122 b 452 171 459 122 459 153 b 420 255 442 199 432 228 b 337 408 399 308 380 364 b 276 436 317 428 297 436 b 215 397 253 436 230 423 b 23 72 148 289 81 184 b 0 29 17 59 0 40 b 7 17 0 23 1 20 b 59 58 26 7 46 39 b 190 276 111 127 143 206 b 216 301 202 292 207 301 b 245 279 223 301 232 294 b 311 166 278 248 292 206 b 367 16 331 117 346 65 b 402 -19 377 -7 387 -19 b 438 -4 412 -19 423 -13 b 518 88 474 17 495 55 b 628 284 562 150 592 216 b 657 223 648 266 651 243 b 717 13 677 154 696 84 b 755 -29 726 -16 737 -29 b 791 -16 765 -29 776 -24 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefix: {\n x_min: 0,\n x_max: 1246,\n y_min: -30,\n y_max: 296.0302860502196,\n ha: 326.0302860502196,\n o: 'm 360 -43 b 559 59 445 -43 503 7 b 698 236 615 111 652 179 b 714 248 704 243 710 248 b 727 235 719 248 721 243 l 848 42 b 883 12 860 22 870 12 b 917 32 891 12 903 19 b 946 62 927 42 939 50 b 1037 192 972 108 1009 147 b 1057 210 1044 204 1051 210 b 1076 190 1063 210 1068 203 l 1176 12 b 1215 -19 1188 -9 1201 -19 b 1250 -6 1225 -19 1237 -14 b 1284 27 1264 3 1274 16 b 1380 190 1323 78 1351 135 b 1395 210 1384 197 1385 210 b 1413 190 1405 210 1410 197 b 1508 40 1436 134 1467 85 b 1564 3 1529 14 1547 3 b 1617 32 1580 3 1597 12 b 1767 238 1678 92 1719 167 b 1794 310 1781 259 1791 282 b 1752 294 1776 317 1764 304 b 1656 164 1711 258 1689 206 b 1629 144 1646 151 1637 144 b 1603 161 1620 144 1613 150 b 1502 315 1562 207 1525 258 b 1452 357 1490 344 1470 357 b 1397 320 1431 357 1411 344 b 1316 170 1368 271 1345 219 b 1280 127 1306 154 1303 127 b 1244 171 1256 127 1254 154 b 1145 337 1210 226 1179 282 b 1110 363 1135 354 1122 363 b 1070 338 1097 363 1084 354 b 1050 311 1063 330 1057 320 b 959 181 1017 271 992 223 b 939 167 950 173 945 167 b 920 184 933 167 927 173 b 818 343 887 238 852 291 b 759 395 795 377 778 395 b 701 344 742 395 724 377 b 698 338 700 341 700 340 b 544 154 652 272 605 207 b 412 98 501 117 458 98 b 304 130 377 98 341 108 b 95 373 204 187 144 275 b 58 426 85 393 82 428 b 19 366 26 426 26 389 b 0 307 13 346 0 327 b 4 287 0 300 1 294 b 174 36 49 194 91 102 b 360 -43 230 -9 289 -43 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefixTurn: {\n x_min: 0,\n x_max: 1226,\n y_min: -237,\n y_max: 436,\n ha: 673,\n o: 'm 1279 -341 b 1293 -252 1293 -307 1295 -278 b 1277 36 1287 -156 1282 -59 l 1273 118 b 1318 176 1289 137 1303 157 b 1349 203 1332 193 1342 203 b 1378 168 1359 203 1367 192 b 1456 35 1401 122 1428 78 b 1511 -12 1476 3 1493 -12 b 1568 23 1526 -12 1544 0 b 1597 53 1578 32 1588 42 b 1705 186 1629 101 1669 143 b 1761 284 1728 216 1751 246 b 1765 300 1763 288 1765 295 b 1763 307 1765 302 1765 305 b 1737 302 1754 311 1744 308 b 1718 287 1729 298 1725 292 b 1598 145 1673 245 1637 194 b 1578 130 1590 135 1584 130 b 1557 147 1571 130 1565 135 b 1447 321 1516 202 1488 265 b 1403 351 1433 341 1417 351 b 1358 323 1388 351 1372 341 b 1269 209 1329 285 1299 248 b 1254 521 1264 314 1259 418 b 1228 616 1253 554 1247 588 b 1218 628 1224 621 1223 628 l 1215 628 b 1201 613 1210 626 1202 619 b 1200 600 1200 609 1200 605 l 1200 586 b 1211 348 1204 507 1207 428 b 1217 166 1214 288 1215 226 b 1202 181 1212 168 1208 174 b 1094 334 1168 233 1130 284 b 1048 366 1079 356 1064 366 b 1004 331 1034 366 1018 354 b 904 154 969 275 930 220 b 873 202 887 171 880 187 b 778 356 845 256 819 311 b 737 379 763 372 750 379 b 698 353 724 379 711 370 l 621 232 b 415 114 570 154 495 114 b 302 138 377 114 340 121 b 73 400 187 192 117 284 b 55 420 69 415 62 420 b 42 410 50 420 45 416 b 0 292 23 373 0 334 b 4 262 0 282 1 272 b 168 39 32 168 92 99 b 359 -26 225 -6 292 -26 b 585 76 446 -26 530 10 b 668 202 616 115 641 160 b 693 228 680 219 687 228 b 720 203 700 228 707 219 b 801 63 752 160 775 111 b 844 7 812 42 818 7 b 910 66 877 6 894 39 b 923 94 916 75 919 85 b 995 219 945 137 968 179 b 1025 184 1009 210 1017 197 b 1119 56 1054 141 1087 98 b 1166 20 1138 32 1152 20 b 1215 50 1181 20 1195 30 b 1221 56 1217 52 1218 55 b 1228 -163 1223 -17 1225 -89 b 1279 -341 1231 -223 1251 -278 z',\n },\n ornamentPrecompTrillLowerSuffix: {\n x_min: 0,\n x_max: 833,\n y_min: -309,\n y_max: 319,\n ha: 628,\n o: 'm 778 -444 b 801 -445 785 -444 793 -445 b 1037 -338 894 -445 969 -397 b 1200 37 1149 -240 1200 -109 b 1084 406 1200 171 1172 300 b 1024 444 1064 431 1043 444 b 960 390 999 444 978 426 b 841 163 923 314 886 236 b 812 128 832 150 827 128 b 786 167 796 130 793 153 b 660 418 744 251 716 341 b 599 459 639 445 619 459 b 541 410 577 459 557 444 b 439 197 507 340 474 269 b 422 179 435 190 435 179 b 338 393 392 251 379 328 b 275 439 320 423 298 439 b 212 396 253 439 230 425 b 71 219 170 333 128 268 b 0 45 17 173 16 112 b 68 98 32 62 50 78 b 194 264 112 150 153 209 b 230 292 209 282 219 292 b 264 261 240 292 251 282 b 274 242 268 255 269 248 b 346 46 304 179 325 112 b 376 10 351 32 354 10 b 412 35 392 10 403 22 b 452 107 429 56 441 82 b 541 291 481 168 511 230 b 556 307 547 302 552 307 b 573 295 562 307 567 302 b 624 217 595 272 611 246 b 721 1 657 145 685 72 b 755 -27 732 -19 742 -27 b 786 -16 765 -27 775 -24 b 857 73 819 7 840 39 b 952 256 887 134 920 194 b 978 289 963 279 969 289 b 1009 262 985 289 994 281 b 1030 235 1017 253 1024 245 b 1110 -4 1071 161 1099 81 b 1116 -68 1113 -26 1116 -48 b 1009 -243 1116 -140 1090 -200 b 848 -291 956 -272 901 -291 b 730 -261 809 -291 770 -282 b 696 -248 714 -252 703 -248 b 671 -284 684 -248 678 -258 l 662 -312 b 657 -357 658 -330 657 -344 b 744 -439 657 -403 683 -425 z',\n },\n brassScoop: {\n x_min: -0.4444444444444445,\n x_max: 312,\n y_min: -390,\n y_max: 28,\n ha: 418,\n o: 'm 0 -562 b 393 -256 171 -504 307 -412 b 449 -39 431 -189 449 -115 b 448 -1 449 -26 449 -14 b 433 40 446 14 448 40 b 408 -3 410 40 412 14 b 396 -66 403 -23 402 -46 b 45 -397 346 -243 209 -337 b 0 -451 13 -409 1 -423 b 0 -562 -1 -485 0 -520 z',\n },\n brassDoitMedium: {\n x_min: -0.32815253965710617,\n x_max: 476.21251177608565,\n y_min: -50,\n y_max: 333.1535583875376,\n ha: 383.1535583875376,\n o: 'm 16 -72 b 27 -71 19 -72 23 -72 b 215 -33 89 -56 153 -48 b 521 114 327 -7 435 35 b 685 432 615 199 691 295 b 670 480 684 449 688 475 b 642 441 654 482 648 456 b 403 183 599 321 513 240 b 79 89 301 130 192 105 b 0 -1 -12 76 0 76 b 0 -50 0 -17 1 -33 b 16 -72 0 -65 3 -72 z',\n },\n brassFallLipShort: {\n x_min: 0,\n x_max: 298,\n y_min: -344,\n y_max: 65,\n ha: 409,\n o: 'm 396 -495 b 420 -461 412 -487 418 -474 b 429 -382 428 -435 429 -409 b 426 -330 429 -364 428 -347 b 285 -6 410 -209 356 -104 b 98 94 239 59 173 94 b 39 86 79 94 58 92 b 0 49 20 81 0 73 l 0 -52 b 10 -69 0 -62 1 -69 b 20 -68 13 -69 16 -69 b 88 -56 45 -59 66 -56 b 261 -160 156 -56 213 -95 b 396 -495 333 -259 382 -369 z',\n },\n brassLiftMedium: {\n x_min: 0,\n x_max: 807,\n y_min: 0,\n y_max: 838,\n ha: 838,\n o: 'm 50 0 b 55 1 52 0 53 0 b 58 23 65 7 59 16 b 55 58 56 36 55 48 b 130 117 55 99 75 112 b 220 213 202 121 220 141 b 315 308 220 289 238 308 l 336 308 b 408 380 393 310 406 321 b 461 452 409 438 416 452 b 485 451 468 452 477 451 b 569 510 531 448 556 464 b 573 543 572 520 572 531 b 657 619 580 605 595 618 b 698 621 670 619 684 619 b 788 700 749 625 778 649 b 798 778 792 726 793 752 b 873 857 806 841 809 845 b 985 950 927 867 973 887 b 1084 1047 1002 1035 1004 1034 b 1162 1128 1133 1056 1162 1087 b 1146 1182 1162 1145 1158 1164 b 1125 1207 1140 1191 1136 1207 l 1122 1207 b 1110 1191 1113 1205 1110 1198 b 1112 1174 1110 1185 1112 1178 b 1048 1110 1109 1126 1096 1113 b 1028 1109 1043 1110 1035 1109 b 939 1022 969 1102 948 1081 b 845 922 929 949 917 936 b 746 812 773 909 753 886 b 744 780 744 802 744 791 b 635 681 737 700 717 683 b 524 583 553 680 536 665 b 439 510 514 520 503 510 b 357 431 377 510 360 492 l 357 406 b 314 364 356 379 343 364 b 238 361 288 364 264 364 b 173 300 202 357 180 334 b 167 245 168 281 167 262 b 105 174 166 192 157 180 b 75 171 95 173 85 171 b 6 112 30 166 14 153 b 0 73 1 98 0 85 b 37 10 0 45 13 26 b 50 0 42 7 46 0 z',\n },\n brassFallRoughMedium: {\n x_min: 0,\n x_max: 791,\n y_min: 0,\n y_max: 819,\n ha: 819,\n o: 'm 1117 0 b 1139 101 1129 26 1139 71 b 1138 121 1139 109 1139 115 b 1084 193 1125 171 1110 193 b 1044 183 1073 193 1060 189 b 1022 177 1035 179 1028 177 b 1007 209 1012 177 1008 186 b 876 324 1004 292 959 330 b 799 317 850 321 825 320 b 759 354 772 314 755 320 b 760 373 760 360 760 366 b 759 392 760 379 760 384 b 681 477 753 451 730 477 b 654 474 672 477 664 475 b 606 467 638 471 622 468 b 586 465 599 465 592 465 b 564 481 570 465 564 469 b 569 505 564 487 566 495 b 575 553 572 521 575 537 b 572 585 575 564 573 575 b 481 665 560 657 539 668 b 412 665 458 664 435 665 b 382 690 392 667 382 672 b 383 700 382 693 383 696 b 386 773 387 724 387 749 b 297 858 382 828 351 857 b 229 861 274 858 251 858 b 190 897 207 863 193 871 b 163 1012 186 936 180 976 b 79 1084 145 1050 124 1084 b 66 1083 75 1084 71 1083 b 43 1096 49 1081 43 1087 b 48 1112 43 1100 45 1106 b 53 1130 52 1119 53 1125 b 39 1169 53 1145 45 1158 b 26 1179 36 1175 30 1179 b 16 1171 22 1179 17 1176 b 0 1103 10 1149 0 1126 b 9 1067 0 1092 1 1079 b 91 1021 26 1031 52 1018 b 145 978 122 1024 141 1011 b 156 913 147 956 151 935 b 291 795 170 831 210 795 b 346 768 337 795 346 796 b 344 743 346 760 344 753 b 343 716 344 733 343 724 b 455 600 343 651 390 602 b 505 605 471 599 490 605 b 528 598 514 605 523 603 b 536 579 534 592 536 586 b 524 523 536 562 526 541 b 523 505 524 517 523 511 b 621 405 523 442 560 405 b 639 406 626 405 634 406 b 677 413 652 408 664 410 b 701 416 687 415 696 416 b 721 392 716 416 721 410 b 720 373 721 386 720 380 b 831 255 714 301 759 252 b 897 261 854 255 876 261 b 926 262 909 261 919 262 b 969 197 963 262 965 252 b 971 184 969 193 971 189 b 1031 115 979 137 998 115 b 1071 122 1043 115 1056 118 b 1096 130 1079 125 1086 127 b 1087 59 1094 107 1087 82 b 1117 0 1087 37 1094 17 z',\n },\n brassBend: {\n x_min: 0,\n x_max: 381,\n y_min: 0,\n y_max: 367,\n ha: 367,\n o: 'm 298 0 b 472 50 359 0 418 14 b 537 135 501 71 530 92 b 543 216 543 163 543 190 l 543 266 b 544 308 543 281 543 295 b 549 433 546 354 549 395 b 543 507 549 459 547 482 b 533 528 541 516 544 528 b 511 508 524 528 514 520 b 508 478 510 498 508 488 b 504 318 507 425 504 372 b 505 264 504 300 505 282 b 446 181 505 220 484 199 b 294 150 396 160 344 150 b 92 194 226 150 158 167 b 45 269 62 207 45 230 b 46 359 46 300 46 328 b 37 497 46 405 45 451 b 27 523 36 507 37 523 b 4 498 14 524 6 513 b 3 481 3 492 3 487 b 0 409 1 456 0 433 b 4 228 0 348 4 288 b 3 177 4 210 4 194 b 68 53 1 125 20 84 b 200 10 108 27 154 17 b 298 0 233 4 266 0 z',\n },\n brassMuteClosed: {\n x_min: 0,\n x_max: 274,\n y_min: 0,\n y_max: 260,\n ha: 260,\n o: 'm 203 0 b 209 1 206 0 207 0 b 216 13 215 4 216 9 l 215 27 l 215 153 b 216 161 216 156 216 158 b 372 164 268 163 318 164 b 395 184 383 164 395 166 l 395 189 b 357 229 392 209 386 229 b 219 228 311 229 265 228 l 223 310 b 209 357 225 328 219 344 b 189 374 203 364 197 374 b 184 373 187 374 186 373 b 177 359 179 372 177 366 l 177 348 l 173 222 l 39 222 b 0 206 12 222 0 219 b 10 174 0 199 3 189 b 46 157 19 157 30 157 b 108 160 68 158 88 160 b 171 161 130 161 150 161 l 167 58 b 184 16 167 40 171 26 b 203 0 192 12 196 0 z',\n },\n brassMuteOpen: {\n x_min: 1,\n x_max: 313.01193341111656,\n y_min: 0,\n y_max: 309,\n ha: 309,\n o: 'm 265 0 b 451 189 363 7 452 88 l 451 215 b 348 383 441 285 405 343 b 209 445 288 426 248 445 b 84 379 168 445 132 420 b 69 364 79 373 73 369 b 1 213 30 323 1 275 b 230 0 1 88 94 0 z m 210 62 b 128 73 181 62 154 66 b 40 171 71 91 42 125 b 52 226 40 187 45 206 b 197 374 79 295 130 344 b 228 382 207 380 217 382 b 300 361 252 382 276 370 b 374 308 328 350 353 331 b 410 223 397 284 410 253 b 393 163 410 202 405 181 b 210 62 354 91 288 63 z',\n },\n brassFlip: {\n x_min: 0,\n x_max: 402,\n y_min: 0,\n y_max: 361,\n ha: 361,\n o: 'm 579 0 b 511 153 579 68 557 117 b 52 504 359 271 206 387 b 29 520 45 510 39 520 b 20 517 26 520 23 518 b 0 477 3 510 0 494 l 0 125 b 17 20 1 92 1 56 b 40 84 37 40 40 60 b 42 287 40 151 42 219 l 42 363 z',\n },\n brassJazzTurn: {\n x_min: 0,\n x_max: 646,\n y_min: 0,\n y_max: 212,\n ha: 212,\n o: 'm 310 0 b 367 33 327 0 344 10 b 389 55 374 40 382 49 b 490 145 423 85 456 114 b 507 154 495 151 501 154 b 524 144 513 154 517 151 b 598 72 547 120 575 98 b 700 24 625 42 662 24 b 765 43 721 24 744 30 b 893 147 812 72 855 105 b 930 212 910 166 923 186 b 912 215 923 213 917 215 b 871 199 896 215 883 209 b 812 153 852 183 832 167 b 789 144 805 148 796 144 b 773 156 782 144 776 147 b 691 251 757 199 720 222 b 603 301 658 282 631 301 b 527 258 580 301 556 288 b 420 156 494 222 455 190 b 399 143 412 147 405 143 b 377 157 392 143 386 147 b 259 282 340 200 300 242 b 219 305 245 298 232 305 b 177 279 204 305 192 297 b 55 127 137 228 95 177 b 0 52 36 104 20 79 b 14 50 6 50 10 50 b 53 66 32 50 45 58 b 115 131 75 88 98 108 b 135 148 124 143 130 148 b 157 132 141 148 148 143 b 252 33 186 96 219 65 b 310 0 275 12 292 0 z',\n },\n brassSmear: {\n x_min: 0,\n x_max: 334,\n y_min: 0,\n y_max: 151,\n ha: 151,\n o: 'm 321 0 b 475 125 390 0 436 43 b 481 143 478 131 481 137 b 475 154 481 147 480 151 b 449 148 468 158 458 154 b 395 132 432 137 413 132 b 343 140 377 132 360 137 b 229 194 301 148 266 173 b 168 217 206 209 186 217 b 109 192 148 217 130 209 b 0 26 59 148 32 89 b 59 63 32 29 45 48 b 98 84 72 78 84 84 b 130 73 108 84 118 81 b 213 26 157 58 183 37 b 321 0 255 9 289 0 z',\n },\n stringsDownBow: {\n x_min: 0,\n x_max: 306,\n y_min: -0.09607201951262866,\n y_max: 366,\n ha: 366.09607201951263,\n o: 'm 405 0 b 425 17 413 -1 420 9 b 439 66 435 32 439 48 b 441 268 439 137 441 202 b 436 412 441 314 439 361 l 435 413 b 423 469 435 436 431 456 b 344 508 406 501 373 501 b 204 527 298 520 251 527 b 60 498 156 527 108 518 b 7 438 32 485 10 468 l 7 426 b 4 337 7 396 7 367 b 0 140 0 272 0 206 b 1 42 0 107 0 73 b 13 3 1 27 -3 4 b 40 39 29 3 35 24 b 42 53 42 43 40 49 b 49 141 48 84 49 112 b 48 215 49 167 48 192 b 49 252 48 228 48 240 l 49 312 b 130 343 72 331 99 340 b 206 347 156 346 180 347 b 372 314 262 347 318 338 l 390 307 l 390 245 b 390 138 392 212 390 176 b 397 23 390 101 392 62 b 405 0 399 14 393 1 z',\n },\n stringsUpBow: {\n x_min: 0,\n x_max: 219.2842808242076,\n y_min: 0,\n y_max: 489,\n ha: 489,\n o: 'm 151 0 b 184 42 170 12 180 26 b 297 554 223 212 261 382 b 315 690 305 598 318 645 b 304 704 315 697 311 704 b 276 670 288 704 282 697 b 157 131 236 490 196 311 l 157 144 b 73 526 134 276 104 396 b 30 677 60 576 52 638 b 13 694 26 684 22 694 b 0 674 9 694 0 691 l 0 671 b 10 603 3 649 6 626 b 105 174 42 461 72 317 b 150 0 117 117 128 58 z',\n },\n stringsHarmonic: {\n x_min: 0,\n x_max: 191,\n y_min: 0,\n y_max: 202,\n ha: 202,\n o: 'm 143 0 b 275 122 217 0 275 53 b 127 291 275 206 202 291 b 0 154 63 291 0 222 b 143 0 0 76 71 0 z m 122 68 b 43 105 89 66 59 75 b 39 124 40 111 39 117 b 79 199 39 148 56 180 b 145 226 101 216 122 226 b 199 210 163 226 180 220 b 235 150 223 196 235 173 b 203 92 235 128 225 107 b 122 68 181 76 150 68 z',\n },\n pluckedSnapPizzicatoAbove: {\n x_min: 0,\n x_max: 201,\n y_min: 0,\n y_max: 325,\n ha: 325,\n o: 'm 171 0 b 289 99 240 0 289 45 b 258 183 289 130 274 156 b 174 269 236 217 203 240 l 174 408 b 174 429 174 415 176 422 b 131 468 168 451 153 468 b 117 451 120 468 117 461 b 118 429 117 444 118 435 b 115 307 117 389 115 347 b 0 166 59 295 0 223 b 171 0 0 85 89 0 z m 134 55 b 52 131 84 55 52 85 b 115 233 52 179 81 209 b 114 192 114 220 114 206 b 174 120 114 137 114 137 l 174 228 b 233 148 200 207 223 183 b 236 130 235 143 236 135 b 197 72 236 105 223 85 b 134 55 177 60 157 55 z',\n },\n pluckedSnapPizzicatoBelow: {\n x_min: 0,\n x_max: 211,\n y_min: 0,\n y_max: 307,\n ha: 307,\n o: 'm 145 7 b 163 0 153 3 158 0 b 173 23 170 0 173 7 l 173 140 l 170 140 l 170 163 l 171 163 b 206 170 179 164 193 166 b 304 287 264 186 304 233 b 281 354 304 308 297 333 b 118 442 240 412 186 439 b 0 324 69 442 0 370 b 115 176 0 266 55 202 l 115 56 b 145 7 114 33 125 19 z m 115 220 b 62 256 92 223 73 230 b 53 292 56 269 53 281 b 78 344 53 311 60 328 b 168 384 105 372 135 384 b 213 376 183 384 199 382 b 253 321 239 366 253 346 b 246 291 253 311 251 301 b 170 226 230 256 203 236 l 170 258 b 148 305 171 278 163 292 b 128 315 143 310 135 315 l 124 315 b 115 301 117 314 115 308 z',\n },\n pluckedLeftHandPizzicato: {\n x_min: 0,\n x_max: 271,\n y_min: 0,\n y_max: 284,\n ha: 284,\n o: 'm 213 0 b 223 14 222 0 223 7 b 222 35 223 22 222 29 l 222 176 b 373 170 272 174 323 170 b 390 180 382 170 390 171 l 390 184 b 347 232 386 207 382 232 b 219 238 307 233 266 235 l 219 364 b 171 409 219 395 193 409 b 156 393 160 409 156 402 b 158 370 156 384 158 376 l 158 240 b 16 239 115 240 66 239 b 0 226 7 239 0 238 l 0 223 b 50 179 1 203 29 179 b 158 177 86 179 122 179 l 158 63 b 161 29 158 52 158 40 b 213 0 166 -1 194 1 z',\n },\n keyboardPedalPed: {\n x_min: 0,\n x_max: 944,\n y_min: -13,\n y_max: 550,\n ha: 563,\n o: 'm 22 0 b 109 78 53 0 105 46 l 144 333 b 163 376 147 347 140 372 b 364 465 238 390 301 426 b 454 599 416 497 454 540 b 452 618 454 605 454 612 b 320 770 442 694 396 747 b 248 779 295 778 272 779 b 193 778 229 779 212 779 b 160 780 181 778 167 775 b 137 792 153 789 144 791 b 109 789 128 792 118 789 b 7 719 59 789 48 737 b 23 708 16 714 20 708 b 36 710 29 710 33 710 b 53 684 52 710 53 698 l 53 674 b 43 386 53 577 53 482 b 20 164 36 312 30 238 b 1 30 14 120 7 75 b 0 19 0 26 0 22 b 22 0 0 9 4 0 z m 171 425 b 156 442 160 425 156 429 b 157 475 157 452 157 464 b 164 602 161 517 164 560 b 161 698 164 635 163 667 b 184 729 161 720 167 729 l 193 729 b 348 563 278 719 348 641 b 346 539 348 554 347 547 b 171 425 328 459 229 422 z m 979 6 b 1008 13 986 6 995 9 b 1081 101 1047 29 1079 46 b 1116 449 1087 217 1104 333 b 1143 654 1123 518 1133 586 b 1148 685 1145 664 1148 675 b 1140 704 1148 693 1146 700 b 1107 716 1130 713 1119 716 b 1056 706 1092 716 1073 710 b 1037 671 1035 703 1038 685 b 1004 439 1025 595 1014 517 b 986 419 1001 428 999 419 b 979 419 985 419 982 420 b 935 426 965 423 949 425 b 795 376 884 426 838 405 b 664 153 714 323 664 249 b 665 130 664 145 665 138 b 753 29 671 65 704 29 b 815 40 773 29 792 33 b 975 147 873 65 923 101 b 965 45 971 108 968 76 b 979 6 963 17 966 6 z m 393 -17 b 634 145 494 16 579 52 b 638 160 636 151 638 156 b 625 168 638 166 634 168 b 621 167 624 168 622 168 b 524 118 582 164 544 160 b 495 79 517 104 505 92 b 435 33 471 49 452 33 b 380 96 416 33 397 55 b 369 145 373 114 369 131 b 442 225 369 186 395 213 b 468 232 451 228 459 229 b 654 344 539 255 606 285 b 677 395 667 360 677 376 b 672 415 677 402 675 408 b 612 459 661 442 639 455 b 589 461 602 461 592 461 b 348 328 500 461 409 408 b 269 120 302 268 269 199 b 379 -19 269 45 318 -19 b 393 -17 383 -19 389 -19 z m 395 240 b 494 383 418 300 452 344 l 521 405 b 544 419 528 409 536 418 b 554 415 547 419 550 418 b 570 383 564 406 570 396 l 570 379 b 552 331 570 360 562 344 b 395 240 511 285 462 253 z m 827 89 b 792 111 815 89 804 96 b 766 204 775 131 766 158 b 845 360 772 256 799 314 b 871 372 854 369 863 372 b 897 366 880 372 888 369 b 978 279 942 353 963 320 b 976 259 981 272 981 265 b 858 104 942 203 909 147 b 827 89 847 94 837 89 z m 1282 12 b 1336 35 1303 14 1320 23 b 1359 71 1351 45 1359 58 b 1338 102 1359 82 1352 95 b 1254 130 1312 118 1284 130 b 1187 88 1223 130 1202 109 b 1178 65 1182 81 1178 72 b 1195 37 1178 55 1182 45 b 1282 12 1223 23 1253 19 z',\n },\n keyboardPedalUp: {\n x_min: 0,\n x_max: 436.6015132318337,\n y_min: 0,\n y_max: 461,\n ha: 461,\n o: 'm 330 0 b 334 1 331 0 333 0 b 340 12 338 4 340 7 l 338 26 b 340 264 338 105 338 184 b 526 95 400 206 461 148 b 559 71 536 88 547 71 b 564 72 560 71 563 71 b 580 121 580 79 580 102 l 580 127 b 543 203 585 158 573 184 b 472 259 518 219 495 238 l 445 285 b 590 292 494 288 541 291 b 622 318 609 294 618 302 b 628 359 625 331 626 346 b 586 402 632 393 621 405 b 464 395 546 399 504 396 l 559 491 b 567 524 567 500 567 510 b 564 543 567 527 567 536 b 539 596 559 563 560 590 b 494 564 521 600 508 577 b 340 413 442 514 390 464 l 340 560 b 287 664 340 600 321 632 b 271 518 274 612 272 566 b 268 445 269 494 269 469 b 117 569 219 488 168 530 b 96 579 109 575 102 579 b 85 560 89 579 85 573 b 124 446 85 518 82 477 b 209 380 153 426 181 403 b 45 374 154 377 99 376 b 0 324 9 374 0 359 b 63 266 0 265 1 265 b 144 272 89 269 117 272 l 196 272 b 108 193 167 246 138 219 b 60 135 76 164 60 151 b 99 73 60 121 73 105 b 104 68 101 72 102 71 b 114 58 107 60 111 58 b 130 66 120 58 124 62 b 259 186 173 107 217 145 b 256 117 259 163 256 140 b 311 13 256 72 271 37 b 330 0 317 10 323 0 z',\n },\n pictChokeCymbal: {\n x_min: 1,\n x_max: 147,\n y_min: 0,\n y_max: 242,\n ha: 242,\n o: 'm 79 4 b 207 158 153 32 192 88 b 212 200 210 173 212 187 b 143 336 212 253 187 298 b 98 348 131 344 115 348 b 4 295 60 348 16 327 b 1 276 1 289 1 282 b 9 249 1 266 3 258 b 121 183 35 206 72 183 b 156 186 132 183 144 183 b 26 53 134 115 91 73 b 7 39 13 49 7 45 b 19 20 7 33 12 27 b 59 0 30 9 43 0 b 79 4 65 0 72 1 z',\n },\n wiggleArpeggiatoUp: {\n x_min: -22,\n x_max: 300,\n y_min: 0,\n y_max: 176,\n ha: 176,\n o: 'm 173 4 b 196 0 180 1 189 0 b 246 26 215 0 230 9 b 301 117 271 53 285 85 b 312 131 305 125 307 131 b 327 124 315 131 321 128 b 373 86 341 112 353 101 b 412 69 389 75 402 69 b 432 94 425 69 432 79 b 373 181 432 117 413 154 b 235 252 323 216 285 245 b 220 253 229 253 225 253 b 168 215 196 253 181 240 b 111 112 151 180 140 141 b 94 102 105 105 99 102 b 78 111 89 102 84 105 b 0 181 55 135 35 160 b -32 153 -20 194 -32 168 b 0 86 -32 124 -32 109 b 94 36 22 71 73 46 b 173 4 134 16 131 17 z',\n },\n arpeggiatoUp: {\n x_min: 0,\n x_max: 262,\n y_min: 0,\n y_max: 1459,\n ha: 1459,\n o: 'm 190 0 b 160 63 187 29 170 45 b 145 108 150 81 145 95 b 183 163 145 128 157 145 b 300 246 222 190 262 216 b 347 318 333 272 347 295 b 301 393 347 341 331 364 b 258 413 289 403 272 408 b 145 449 220 425 183 436 b 117 464 135 452 120 452 b 140 491 115 477 128 484 b 294 593 192 526 243 557 b 330 647 318 611 330 626 b 314 693 330 660 324 675 b 262 736 302 714 285 729 b 170 763 230 744 200 753 b 122 783 153 768 125 768 b 160 831 120 804 143 818 b 288 922 202 861 246 890 b 333 999 318 945 333 972 b 266 1083 333 1032 310 1064 b 189 1115 240 1094 215 1103 b 122 1178 145 1133 122 1153 b 168 1250 122 1200 138 1223 l 180 1257 b 269 1333 210 1283 240 1306 b 305 1405 294 1356 305 1381 b 284 1469 305 1426 298 1447 b 228 1525 269 1492 251 1511 b 183 1600 197 1545 183 1571 b 190 1640 183 1613 184 1626 b 197 1670 193 1650 194 1660 b 272 1735 213 1719 230 1735 b 295 1734 279 1735 287 1735 b 323 1732 305 1732 314 1732 b 350 1731 333 1732 341 1732 b 377 1742 369 1729 377 1732 b 370 1761 377 1747 374 1754 l 301 1898 b 217 2066 274 1954 248 2012 b 186 2101 204 2089 196 2101 b 154 2069 177 2101 167 2091 b 12 1824 105 1987 59 1907 b 0 1787 4 1810 0 1797 b 59 1744 0 1761 20 1745 b 160 1738 92 1744 125 1740 b 145 1692 156 1721 151 1706 b 135 1633 138 1672 135 1652 b 184 1518 135 1591 151 1552 b 229 1475 199 1503 213 1488 b 259 1431 249 1456 259 1444 b 229 1388 259 1420 249 1407 b 151 1325 203 1365 177 1345 b 105 1279 134 1310 118 1296 b 73 1202 84 1251 73 1227 b 108 1123 73 1176 85 1152 b 255 1031 148 1077 199 1051 b 282 1014 274 1025 282 1021 b 262 991 282 1008 275 1001 b 151 914 226 963 189 939 b 79 851 125 896 99 877 b 63 809 69 837 63 824 b 79 769 63 796 68 783 b 202 697 111 729 154 710 b 266 670 225 690 266 688 b 210 622 266 648 232 635 b 82 534 167 593 120 570 b 55 491 63 518 55 505 b 79 448 55 478 63 465 b 255 361 127 395 192 380 b 288 343 269 359 288 357 b 266 312 288 331 275 320 b 144 223 229 278 184 253 b 85 134 104 193 85 166 b 118 53 85 111 96 85 b 190 0 135 29 160 14 z',\n },\n arpeggiatoDown: {\n x_min: 0,\n x_max: 218,\n y_min: 0,\n y_max: 1440,\n ha: 1440,\n o: 'm 161 16 b 310 261 210 98 259 180 b 314 275 312 266 314 271 b 302 295 314 282 310 289 b 252 311 287 308 269 311 b 217 310 240 311 229 310 b 190 333 202 310 194 315 b 151 412 186 363 171 389 b 102 501 120 452 102 477 b 150 588 102 524 118 547 b 161 603 154 592 158 598 b 181 661 176 622 181 641 b 173 704 181 675 179 690 b 86 795 156 746 121 770 b 53 829 63 811 53 819 b 78 868 53 840 62 851 b 102 888 85 876 94 883 b 180 956 128 912 156 933 b 216 1028 204 979 216 1002 b 203 1081 216 1044 212 1061 b 115 1171 186 1123 148 1145 b 75 1221 88 1191 75 1207 b 114 1272 75 1237 88 1251 b 173 1308 132 1284 154 1296 b 226 1339 190 1318 209 1328 b 265 1405 253 1359 265 1380 b 258 1447 265 1418 264 1431 b 154 1541 242 1499 199 1521 b 109 1581 124 1555 109 1567 b 141 1627 109 1594 121 1608 b 204 1680 163 1646 184 1662 b 233 1742 223 1699 233 1719 b 226 1777 233 1752 230 1764 b 135 1862 210 1822 173 1840 b 104 1895 114 1875 104 1884 b 118 1930 104 1904 109 1914 b 192 2006 135 1961 161 1986 b 206 2029 203 2013 206 2022 b 192 2064 206 2040 197 2052 b 180 2074 187 2071 184 2074 b 156 2061 171 2074 163 2065 b 84 1983 125 2040 102 2013 b 65 1921 71 1961 65 1941 b 88 1853 65 1899 72 1876 b 171 1784 108 1820 138 1801 b 190 1764 184 1777 190 1770 b 174 1741 190 1757 184 1750 b 107 1683 153 1722 128 1704 b 68 1610 81 1659 68 1636 b 88 1548 68 1591 75 1571 b 177 1470 109 1512 141 1489 b 223 1431 209 1453 223 1443 b 179 1390 223 1420 209 1408 b 128 1361 163 1380 145 1371 b 71 1322 108 1348 88 1338 b 32 1253 45 1300 32 1277 b 48 1198 32 1236 37 1218 b 147 1090 71 1152 108 1120 b 174 1057 166 1076 174 1067 b 153 1022 174 1047 167 1037 b 109 982 140 1008 124 995 b 37 919 85 962 59 942 b 9 860 17 899 9 880 b 26 806 9 844 14 827 b 120 717 50 769 84 740 b 138 691 132 708 138 700 b 130 668 138 684 135 677 b 92 618 118 651 105 635 b 59 531 71 589 59 560 b 84 455 59 507 68 481 b 132 386 98 431 115 408 b 148 341 144 372 148 357 b 144 317 148 333 147 324 b 121 305 140 307 131 305 l 98 305 b 82 304 94 304 88 304 l 32 304 b 0 292 10 304 0 302 b 12 266 0 287 4 279 b 60 164 32 233 46 199 b 127 20 84 117 105 68 b 144 0 132 9 137 0 b 161 16 150 0 154 4 z',\n },\n repeat1Bar: {\n x_min: 0,\n x_max: 599.1057280164835,\n y_min: -250,\n y_max: 175,\n ha: 425,\n o: 'm 216 98 b 255 75 236 84 246 75 b 291 104 265 75 274 85 b 323 147 304 117 327 125 b 289 215 323 168 314 184 b 238 252 269 239 253 252 b 187 222 222 252 207 242 b 173 206 183 216 177 212 b 157 170 163 194 157 183 b 174 138 157 160 161 150 b 216 98 189 127 200 109 z m 76 -334 b 181 -285 111 -315 148 -302 b 831 52 396 -168 613 -58 b 863 114 855 63 864 82 b 828 202 855 140 855 176 b 808 213 821 209 815 213 b 793 209 804 213 799 212 l 422 19 b 26 -179 291 -48 164 -124 b 0 -213 10 -186 0 -196 b 3 -232 0 -219 0 -225 b 52 -325 14 -265 37 -294 b 66 -337 55 -331 59 -337 b 76 -334 69 -337 72 -336 z m 769 -360 b 829 -264 779 -360 829 -284 b 769 -176 822 -232 799 -200 b 742 -163 760 -167 750 -163 b 716 -184 733 -163 723 -168 b 683 -228 708 -202 693 -213 b 672 -253 675 -236 672 -245 b 683 -281 672 -262 675 -271 b 752 -353 703 -308 732 -327 b 769 -360 756 -357 763 -360 z',\n },\n repeat2Bars: {\n x_min: 0.008571918423331715,\n x_max: 775,\n y_min: -246.92374029115243,\n y_max: 362.82068246705313,\n ha: 609.7444227582056,\n o: 'm 909 412 b 873 351 906 384 893 367 b 436 50 729 249 585 147 l 91 -179 b 62 -174 76 -189 68 -183 b 12 -96 48 -147 24 -125 b 36 -16 -7 -53 -6 -43 b 220 104 96 24 158 65 b 819 507 425 232 624 369 b 881 495 852 530 861 528 b 909 412 899 469 900 439 z m 333 338 b 302 240 330 307 317 274 b 276 235 297 225 287 228 l 233 269 b 203 376 186 307 183 318 b 225 441 212 397 217 419 b 246 454 228 452 232 458 b 333 338 284 441 333 380 z m 1116 228 b 1067 158 1115 192 1092 174 b 910 59 1015 125 963 92 b 478 -240 762 -33 622 -140 b 311 -350 423 -279 366 -314 b 285 -344 298 -360 289 -356 b 239 -258 272 -314 251 -288 b 261 -196 228 -228 235 -210 b 517 -29 348 -144 436 -91 b 1030 321 681 98 861 202 b 1093 307 1060 343 1076 340 b 1116 228 1107 281 1109 252 z m 1070 -105 b 1020 -210 1057 -143 1038 -176 b 998 -210 1014 -219 1004 -215 l 924 -153 b 913 -88 899 -135 897 -112 b 949 -22 926 -66 939 -45 b 998 -7 960 6 976 9 b 1070 -105 1032 -32 1058 -63 z',\n },\n repeat4Bars: {\n x_min: 0,\n x_max: 1374,\n y_min: -304,\n y_max: 304,\n ha: 608,\n o: 'm 78 -266 b 92 -258 82 -266 88 -264 b 114 -240 98 -251 107 -246 b 638 107 289 -125 467 -14 b 873 271 716 161 793 216 b 907 337 894 285 906 305 b 887 400 901 354 897 379 b 852 438 877 426 867 438 b 814 420 842 438 829 432 b 135 -33 592 262 366 111 b 12 -121 92 -60 48 -84 b 0 -144 4 -128 0 -135 b 4 -160 0 -148 1 -154 b 63 -255 17 -196 45 -223 b 78 -266 68 -262 72 -266 z m 291 148 b 325 223 302 148 308 170 b 333 256 328 235 330 246 b 264 363 330 305 298 336 b 242 373 255 369 248 373 b 220 347 232 373 225 364 b 202 288 216 327 213 305 b 190 252 193 275 190 262 b 222 200 190 232 202 215 b 291 148 264 170 279 148 z m 815 -367 b 829 -359 819 -367 824 -364 b 851 -343 835 -353 844 -347 b 1375 6 1027 -228 1205 -117 l 1610 170 b 1644 235 1632 184 1643 203 b 1626 300 1639 253 1634 276 b 1590 337 1614 325 1604 337 b 1551 320 1580 337 1567 330 b 873 -135 1329 161 1103 10 b 749 -222 829 -161 785 -184 b 737 -245 742 -230 737 -238 b 742 -261 737 -249 739 -255 b 802 -357 755 -297 782 -325 b 815 -367 805 -363 809 -367 z m 396 -360 b 408 -356 400 -360 403 -359 b 609 -223 471 -307 543 -269 b 896 -19 706 -156 795 -81 b 1164 154 985 37 1074 96 b 1214 223 1189 170 1211 187 b 1176 321 1204 253 1205 292 b 1159 330 1169 327 1165 330 b 1145 324 1155 330 1151 328 b 1048 258 1113 302 1081 278 b 357 -202 809 117 598 -65 b 333 -238 341 -212 333 -223 b 338 -262 333 -245 334 -253 b 384 -350 350 -294 372 -318 b 396 -360 386 -354 390 -360 z m 1162 -438 b 1174 -433 1166 -438 1169 -436 b 1374 -300 1237 -384 1309 -346 b 1660 -96 1470 -233 1561 -158 b 1930 76 1751 -39 1840 19 b 1979 147 1954 92 1977 109 b 1943 243 1968 177 1971 216 b 1924 253 1935 251 1930 253 b 1911 248 1920 253 1915 252 b 1814 181 1878 225 1848 202 b 1123 -279 1575 40 1364 -141 b 1099 -315 1106 -289 1099 -300 b 1103 -338 1099 -321 1100 -330 b 1149 -426 1115 -370 1138 -396 b 1162 -438 1151 -432 1156 -438 z m 1875 -295 b 1882 -291 1878 -295 1879 -294 b 1934 -189 1904 -258 1921 -223 b 1872 -96 1925 -147 1901 -120 b 1840 -78 1858 -84 1848 -78 b 1812 -109 1830 -78 1823 -88 l 1777 -173 b 1770 -199 1773 -181 1770 -190 b 1786 -230 1770 -210 1774 -220 b 1862 -289 1809 -253 1837 -269 b 1875 -295 1865 -292 1871 -295 z',\n },\n repeatBarSlash: {\n x_min: 0,\n x_max: 630,\n y_min: -225.19160170741762,\n y_max: 265.12618221237005,\n ha: 490.31778391978764,\n o: 'm 78 -324 b 92 -314 82 -325 88 -321 b 114 -298 96 -307 107 -302 b 638 49 289 -183 467 -72 b 873 215 716 104 792 161 b 907 279 894 229 906 248 b 887 344 901 298 897 321 b 852 382 877 369 867 380 b 814 363 842 383 829 376 b 135 -91 603 192 364 55 b 12 -177 92 -118 45 -137 b 0 -202 4 -186 0 -192 b 4 -217 0 -206 1 -212 b 63 -312 17 -253 42 -284 b 78 -324 68 -318 72 -323 z',\n },\n csymDiminished: {\n x_min: 0,\n x_max: 506,\n y_min: -0.011036179317259481,\n y_max: 500,\n ha: 500.0110361793173,\n o: 'm 397 0 b 729 265 576 -1 729 95 b 711 367 729 297 723 331 b 472 670 668 498 586 595 b 315 720 423 701 372 720 b 253 713 295 720 275 719 b 32 514 144 687 75 615 b 0 374 12 468 0 420 b 27 251 0 333 9 292 b 140 117 52 196 92 153 b 397 0 223 52 317 4 z m 340 95 b 132 314 233 84 122 216 b 324 589 145 438 200 539 b 415 611 360 603 389 611 b 544 505 469 611 505 576 b 590 392 564 471 583 432 b 596 343 593 374 596 359 b 340 95 596 210 485 96 z',\n },\n csymHalfDiminished: {\n x_min: -32,\n x_max: 496,\n y_min: -33,\n y_max: 492,\n ha: 525,\n o: 'm -29 -48 b 0 -36 -19 -48 -9 -40 b 17 -20 7 -32 12 -24 b 134 94 56 19 95 56 b 372 0 207 43 282 0 b 455 13 397 0 426 4 b 677 258 556 45 671 141 b 678 289 677 268 678 278 b 593 539 678 380 654 467 b 592 541 593 540 592 540 l 684 632 b 713 678 700 647 711 665 b 714 691 714 684 714 688 b 707 704 714 698 711 701 b 691 708 701 707 696 708 b 660 691 680 708 670 701 l 552 585 b 478 634 530 606 507 624 b 361 684 438 648 397 661 b 301 703 341 697 320 703 b 226 677 275 703 251 693 b 27 449 140 618 72 543 b 0 324 9 410 -4 370 b 88 128 -1 243 30 177 b -30 -7 43 86 0 46 b -46 -33 -35 -16 -46 -24 b -42 -42 -46 -36 -45 -39 b -29 -48 -37 -46 -33 -48 z m 141 179 b 121 251 128 200 121 225 b 128 297 121 265 124 281 b 351 575 163 420 248 505 b 377 582 359 579 369 580 b 501 536 422 586 468 567 b 141 179 382 416 261 298 z m 281 105 b 179 137 240 105 206 117 b 210 168 189 147 200 157 l 537 487 b 547 455 541 477 544 467 b 556 370 552 426 556 397 b 429 154 556 274 503 207 b 281 105 384 122 336 105 z',\n },\n csymAugmented: {\n x_min: 0,\n x_max: 530,\n y_min: 0,\n y_max: 539,\n ha: 539,\n o: 'm 380 0 b 393 14 384 4 390 9 b 397 46 397 24 397 36 l 397 333 b 736 327 511 331 624 330 b 763 343 755 327 763 333 b 755 361 763 348 760 354 b 635 431 726 402 688 431 l 390 431 l 390 485 b 386 606 392 526 386 566 b 392 664 386 625 387 645 b 395 690 393 672 395 681 b 376 753 395 711 389 734 b 357 776 372 762 369 776 b 350 775 354 776 353 776 b 327 740 337 769 327 759 b 327 621 328 700 327 661 b 330 438 328 559 328 498 l 29 438 b 4 431 20 438 7 442 b 0 413 3 425 0 419 b 7 399 0 408 1 403 b 131 338 45 369 85 340 b 331 334 199 336 265 334 b 333 163 333 276 333 220 b 366 13 333 109 348 63 b 380 0 367 7 374 4 z',\n },\n csymMajorSeventh: {\n x_min: 0,\n x_max: 593.1050509327923,\n y_min: 0,\n y_max: 569,\n ha: 569,\n o: 'm 124 1 l 497 27 b 819 50 605 35 711 43 b 854 98 847 52 855 63 b 812 200 845 128 835 166 b 564 585 730 328 648 456 b 435 786 521 652 480 720 b 397 819 419 809 408 819 b 369 792 387 819 379 811 b 7 173 248 585 128 379 b 0 150 3 166 0 158 b 7 128 0 143 3 135 b 89 10 30 86 65 50 b 109 0 95 1 102 0 z m 163 147 b 153 153 158 147 156 148 b 164 179 147 163 158 170 b 426 644 251 334 338 488 b 442 660 432 655 436 660 b 458 645 446 660 452 655 b 727 220 547 503 636 361 b 736 202 732 213 736 206 b 714 190 736 196 730 192 b 179 148 537 177 359 163 b 163 147 174 150 168 147 z',\n },\n csymMinor: {\n x_min: 0,\n x_max: 481.64484584675915,\n y_min: 193,\n y_max: 265.20435472429375,\n ha: 72.20435472429375,\n o: 'm 168 278 b 197 279 177 278 187 278 b 431 292 275 287 353 288 l 431 291 b 661 302 508 295 585 300 b 693 311 672 304 688 300 b 674 346 697 324 685 338 b 564 382 641 366 606 384 l 27 360 b 0 347 17 360 1 366 b 19 314 0 333 3 321 b 168 278 66 291 115 278 z',\n },\n csymParensLeftTall: {\n x_min: 0,\n x_max: 185,\n y_min: 0,\n y_max: 1034,\n ha: 1034,\n o: 'm 215 0 b 226 17 223 1 223 10 b 229 37 229 24 229 32 b 220 81 229 52 225 66 b 167 203 206 124 181 160 b 86 616 124 338 89 474 b 82 765 85 665 82 716 b 91 886 82 805 84 845 b 245 1319 120 1038 171 1184 b 266 1397 259 1346 266 1371 b 259 1443 266 1411 264 1427 b 226 1489 253 1463 248 1489 b 193 1454 212 1489 203 1467 b 114 1292 158 1404 140 1346 b 0 806 40 1138 0 978 b 3 721 0 779 0 750 b 1 677 1 707 1 693 b 36 418 1 593 16 504 b 144 96 62 307 95 199 b 196 12 158 66 179 39 b 212 0 200 7 204 0 z',\n },\n csymParensRightTall: {\n x_min: -40,\n x_max: 188.5411603861406,\n y_min: 0.20204102886728756,\n y_max: 1058,\n ha: 1057.7979589711326,\n o: 'm 30 1 b 63 14 42 -3 55 6 b 122 99 86 40 108 68 b 189 258 145 153 166 204 b 271 667 239 379 268 503 b 246 852 275 708 261 780 b 10 1495 197 1077 128 1295 b -14 1524 4 1505 1 1524 b -16 1522 -14 1524 -16 1524 b -46 1489 -33 1521 -43 1503 b -58 1417 -53 1464 -58 1440 b -36 1335 -58 1390 -52 1364 b 68 1138 0 1270 35 1204 b 163 883 108 1056 137 969 b 206 668 184 814 200 742 b 207 631 207 655 207 642 b 166 426 207 560 192 492 b 46 143 130 330 111 228 b 19 29 19 109 17 69 b 30 1 20 19 24 3 z',\n },\n csymBracketLeftTall: {\n x_min: 0,\n x_max: 328,\n y_min: 2,\n y_max: 807,\n ha: 805,\n o: 'm 68 3 b 76 4 71 3 73 3 b 186 13 112 12 150 13 b 240 13 204 13 222 13 l 287 13 b 379 17 317 13 348 13 b 472 121 435 24 472 69 b 467 156 472 132 469 144 b 446 174 462 168 456 174 l 439 174 b 327 166 402 167 364 166 b 265 167 307 166 285 167 l 209 167 b 187 475 199 269 189 372 b 166 985 186 645 187 815 l 377 1002 b 415 1001 389 1002 402 1001 b 456 1027 432 1001 448 1005 b 472 1096 467 1048 472 1073 b 464 1146 472 1113 469 1130 b 439 1162 459 1161 452 1162 b 40 1129 305 1151 173 1139 b 1 1093 17 1128 1 1120 b 0 1009 0 1064 0 1037 b 13 975 0 991 3 981 b 30 670 23 873 30 772 b 29 608 30 649 29 628 l 29 563 b 56 88 29 405 49 246 b 53 22 55 66 55 43 b 68 3 53 12 56 3 z',\n },\n csymBracketRightTall: {\n x_min: 0.8519422934604696,\n x_max: 306,\n y_min: -0.17180889215212544,\n y_max: 829.1037519824849,\n ha: 829.2755608746371,\n o: 'm 117 0 b 372 29 203 -3 287 20 l 373 29 b 406 32 383 30 395 30 b 436 60 428 33 432 43 b 441 109 439 76 441 92 b 433 200 441 140 436 170 b 409 696 422 366 409 530 b 416 887 409 763 416 831 b 415 920 416 899 415 910 l 415 1106 b 412 1135 415 1116 415 1126 l 412 1145 b 373 1189 413 1171 408 1192 b 321 1189 356 1189 338 1189 l 215 1189 l 215 1194 l 56 1194 b 6 1153 27 1195 10 1187 b 1 1064 3 1123 4 1093 b 22 1043 0 1050 6 1043 b 84 1044 42 1044 63 1044 b 264 1038 144 1044 203 1040 b 265 958 264 1011 265 985 b 262 845 265 920 264 883 b 259 710 259 801 259 755 b 279 243 259 554 271 399 b 285 170 281 219 284 194 b 95 151 222 161 158 156 b 29 81 27 147 27 147 l 29 73 b 105 0 33 0 33 0 z',\n },\n csymParensLeftVeryTall: {\n x_min: 0,\n x_max: 116,\n y_min: 0,\n y_max: 934.1531437146923,\n ha: 934.1531437146923,\n o: 'm 128 0 b 147 17 137 0 144 9 b 167 102 160 45 167 73 b 158 154 167 120 164 137 b 117 307 141 204 130 256 b 63 698 84 435 71 567 b 62 788 62 729 62 757 b 69 916 62 829 63 873 b 109 1172 81 1001 94 1087 b 132 1320 118 1221 137 1269 b 124 1345 131 1329 134 1342 b 96 1332 114 1346 102 1341 b 71 1269 82 1313 75 1292 b 39 1104 59 1214 48 1159 b 0 742 19 988 0 871 b 10 559 3 688 6 624 b 58 226 16 446 33 336 b 112 20 73 157 94 89 b 128 0 115 13 118 0 z',\n },\n csymParensRightVeryTall: {\n x_min: -20,\n x_max: 111.4332498248095,\n y_min: -0.07657185734616112,\n y_max: 1009,\n ha: 1009.0765718573462,\n o: 'm -3 0 b 20 22 9 -1 14 12 b 36 56 26 33 32 45 b 99 274 58 128 84 199 b 160 788 135 439 163 605 b 122 1181 164 912 145 1047 b 50 1431 108 1267 86 1351 b 36 1453 48 1439 46 1453 l 35 1453 l 30 1453 b 7 1423 17 1449 7 1440 b 27 1287 9 1377 10 1331 b 96 963 71 1184 85 1074 b 105 818 102 914 105 867 b 91 624 105 753 99 688 b -4 213 72 484 48 344 b -29 101 -19 174 -29 138 b -16 27 -29 76 -24 52 b -3 0 -13 17 -14 3 z',\n },\n csymDiagonalArrangementSlash: {\n x_min: -0.19862981551275186,\n x_max: 990,\n y_min: -26.946823529189132,\n y_max: 1027.5514326488437,\n ha: 1054.4982561780328,\n o: 'm 14 -37 b 58 -9 35 -45 46 -22 b 392 333 170 105 279 217 l 765 711 b 1372 1329 968 916 1168 1125 b 1424 1439 1403 1359 1417 1397 b 1426 1457 1424 1444 1426 1450 b 1416 1477 1426 1466 1423 1475 b 1374 1462 1400 1485 1385 1473 b 1181 1269 1309 1397 1246 1331 b 736 831 1031 1122 884 979 b 356 452 609 704 485 576 b 32 132 246 347 143 236 b 0 50 7 109 1 84 b 6 9 -1 37 3 23 b 14 -37 10 -9 0 -32 z',\n },\n accidentalNarrowReversedFlat: {\n x_min: 0,\n x_max: 208,\n y_min: -231,\n y_max: 449,\n ha: 680,\n o: 'm 272 -333 b 284 -320 278 -333 281 -328 b 300 -174 297 -272 300 -222 b 275 190 298 -52 279 68 b 268 445 272 275 268 360 l 268 490 b 264 612 269 530 265 572 b 236 647 264 632 252 645 l 235 647 b 217 618 220 647 220 628 b 207 526 210 588 207 556 b 210 432 207 494 210 464 b 216 268 213 377 215 323 l 216 230 l 215 232 b 154 256 194 240 174 251 b 111 264 138 261 124 264 b 3 153 50 264 10 223 b 0 94 0 132 0 114 b 194 -276 0 -63 68 -186 b 255 -323 215 -291 236 -307 b 272 -333 262 -330 268 -333 z m 233 -138 b 71 30 168 -92 105 -45 b 63 59 65 42 63 50 b 96 95 62 75 73 86 b 130 102 108 99 120 102 b 215 76 160 102 187 88 l 220 73 b 225 -22 220 42 222 10 b 233 -138 229 -62 230 -101 z',\n },\n accidentalNarrowReversedFlatAndFlat: {\n x_min: 0,\n x_max: 335,\n y_min: -231,\n y_max: 449,\n ha: 680,\n o: 'm 151 490 b 148 612 151 530 150 572 b 132 647 148 632 141 645 b 122 618 124 647 124 628 b 117 526 118 588 117 556 b 118 432 117 494 118 464 b 121 268 120 377 121 323 l 121 232 b 86 256 109 240 98 251 b 62 264 78 261 69 264 b 1 153 29 264 6 223 b 0 94 0 132 0 114 b 109 -276 0 -63 37 -186 b 144 -323 121 -291 132 -307 b 153 -333 147 -330 151 -333 b 160 -320 157 -333 158 -328 b 168 -174 167 -272 168 -222 b 154 190 168 -52 157 68 b 151 445 153 275 151 360 z m 480 153 b 372 264 472 223 432 264 b 328 256 359 264 344 261 b 268 232 308 251 288 240 l 266 230 l 266 268 b 272 432 266 323 269 377 b 275 526 272 464 275 494 b 265 618 275 556 272 588 b 248 647 262 628 262 647 l 246 647 b 219 612 230 645 219 632 b 215 490 217 572 213 530 l 215 445 b 207 190 215 360 210 275 b 183 -174 203 68 183 -52 b 199 -320 183 -222 186 -272 b 210 -333 202 -328 204 -333 b 228 -323 215 -333 220 -330 b 288 -276 246 -307 268 -291 b 482 94 415 -186 482 -63 b 480 153 482 114 482 132 z m 40 30 b 36 59 36 42 36 50 b 55 95 35 75 42 86 b 73 102 60 99 68 102 b 121 76 89 102 105 88 l 124 73 b 127 -22 124 42 125 10 l 131 -138 b 40 30 95 -92 60 -43 z m 419 59 b 412 30 419 50 418 42 b 249 -138 374 -43 314 -92 b 258 -22 252 -101 253 -62 b 262 73 261 10 262 42 l 268 76 b 353 102 295 88 323 102 b 386 95 363 102 374 99 b 419 59 409 86 420 75 z',\n },\n accidentalWilsonPlus: {\n x_min: 0,\n x_max: 298,\n y_min: -218,\n y_max: 218,\n ha: 436,\n o: 'm 232 -314 b 236 -301 236 -310 236 -305 l 236 -295 b 243 -52 239 -213 242 -132 l 369 62 b 429 200 413 101 425 147 b 416 243 429 216 428 236 b 383 225 406 251 393 232 l 377 220 b 246 98 336 177 291 138 b 249 242 248 145 246 193 b 225 304 251 265 242 287 b 209 314 220 308 215 314 b 204 312 207 314 206 312 b 196 292 196 310 196 300 b 193 184 194 256 194 220 b 187 48 192 140 190 94 b 46 -72 141 7 94 -32 b 0 -163 13 -98 0 -127 b 1 -187 0 -170 0 -179 b 10 -235 4 -203 6 -219 b 20 -255 12 -242 14 -251 b 36 -245 26 -259 30 -249 b 181 -109 85 -200 132 -154 b 176 -258 180 -158 176 -209 b 232 -314 176 -298 186 -307 z',\n },\n accidentalWilsonMinus: {\n x_min: 0,\n x_max: 284.2093390143919,\n y_min: -163,\n y_max: 163,\n ha: 326,\n o: 'm 386 -232 b 409 -163 415 -222 408 -180 b 382 -69 410 -120 408 -89 b 32 228 264 30 141 118 b 17 235 26 233 22 235 b 3 219 9 235 3 228 b 0 157 3 199 0 179 b 29 69 0 125 6 95 b 323 -194 115 -29 222 -111 b 374 -235 338 -206 353 -235 b 386 -232 377 -235 382 -233 z',\n },\n },\n fontFamily: 'Petaluma',\n resolution: 1000,\n generatedOn: '2022-06-26T17:47:23.560Z',\n};\n","/**\n * The Petaluma font was created by Steinberg Media.\n * https://github.com/steinbergmedia/petaluma\n */\nexport const PetalumaMetrics = {\n name: 'Petaluma',\n smufl: true,\n stave: {\n padding: 15,\n endPaddingMax: 15,\n endPaddingMin: 7,\n unalignedNotePadding: 12,\n },\n accidental: {\n noteheadAccidentalPadding: 1,\n leftPadding: 2,\n accidentalSpacing: 3,\n },\n clef: {\n default: {\n point: 32,\n width: 26,\n },\n small: {\n point: 26,\n width: 20,\n },\n annotations: {\n '8va': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: -1.4,\n shiftX: 12,\n },\n },\n small: {\n point: 16,\n treble: {\n line: -0.2,\n shiftX: 8,\n },\n },\n },\n '8vb': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: 6,\n shiftX: 10,\n },\n bass: {\n line: 3.5,\n shiftX: 1,\n },\n },\n small: {\n point: 16,\n treble: {\n line: 5.3,\n shiftX: 6,\n },\n bass: {\n line: 3.1,\n shiftX: 0.5,\n },\n },\n },\n },\n // These may no longer be necessary\n lineCount: {\n '8': { point: 55, shiftY: 14 },\n '7': { point: 47, shiftY: 8 },\n '6': { point: 32, shiftY: 1 },\n '5': { point: 30, shiftY: -6 },\n '4': { point: 23, shiftY: -12 },\n },\n },\n parenthesis: {\n default: {\n point: 39,\n width: 7,\n },\n gracenote: {\n point: (39 * 3) / 5,\n width: 3,\n },\n },\n pedalMarking: {\n up: {\n point: 40,\n },\n down: {\n point: 34,\n },\n },\n // These are for numeric digits, such as in time signatures\n digits: {\n // used by timesig\n shiftLine: -1,\n point: 22,\n // used by tuplets\n tupletPoint: 16,\n shiftY: -2,\n },\n articulation: {\n articStaccatissimoAbove: {\n padding: 2,\n },\n articStaccatissimoBelow: {\n padding: 2,\n },\n },\n tremolo: {\n default: {\n point: 25,\n spacing: 5,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 13,\n offsetXStemDown: 1,\n },\n grace: {\n point: 18,\n spacing: 4,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 8,\n offsetXStemDown: 1,\n },\n },\n staveRepetition: {\n symbolText: {\n offsetX: 12,\n offsetY: 25,\n spacing: 5,\n },\n coda: {\n offsetY: 25,\n },\n segno: {\n offsetY: 10,\n },\n },\n noteHead: {\n displaced: {\n shiftX: -2,\n },\n },\n stem: {\n heightAdjustmentForFlag: -3,\n // These are stem (Y) offsets to the note heads. To shift the\n // noteheads (x-position) themselves, see glyphs.notehead.custom.\n noteHead: {\n noteheadTriangleUpHalf: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpBlack: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpWhole: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadXHalf: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXBlack: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXWhole: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadHalf: {\n offsetYBaseStemDown: 1.8,\n offsetYBaseStemUp: -1.8,\n },\n noteheadBlack: {\n offsetYBaseStemDown: 2,\n offsetYBaseStemUp: -2,\n },\n noteheadSquareWhite: {\n offsetYBaseStemDown: -5,\n offsetYBaseStemUp: 5,\n },\n },\n },\n // Values under here are used by the Glyph class to reposition and rescale\n // glyphs based on their category. This should be the first stop for\n // custom font glyph repositioning.\n //\n // The glyph loader first looks up a specific set of settings based on the\n // glyph code, and if not found, uses the defaults from the category. See\n // glyphs.textNote for an example of this.\n //\n // Details in Glyph.lookupFontMetrics.\n glyphs: {\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n segno: {\n shiftX: -7,\n },\n flag: {\n shiftX: -0.77,\n flag16thUp: {\n shiftX: -0.75,\n },\n flag32ndUp: {\n shiftX: -0.85,\n },\n flag64thUp: {\n shiftX: -1.55,\n },\n flag128thUp: {\n shiftX: -1.3,\n },\n flag16thDown: {\n shiftX: -0.75,\n },\n flag32ndDown: {\n shiftX: -0.76,\n },\n flag64thDown: {\n shiftX: -1.5,\n },\n flag128thDown: {\n shiftX: -1.2,\n },\n staveTempo: {\n shiftX: -1,\n },\n },\n clef: {\n gClef: {\n default: { scale: 1.1, shiftY: 1 },\n small: { shiftY: 1.5 },\n },\n fClef: {\n default: { shiftY: -0.5 },\n },\n },\n ornament: {\n ornamentTurn: {\n scale: 1.2,\n },\n ornamentTurnSlash: {\n scale: 1.2,\n },\n },\n stringNumber: {\n verticalPadding: 8,\n stemPadding: 2,\n leftPadding: 5,\n rightPadding: 6,\n },\n stroke: {\n arrowheadBlackDown: {\n straight: {\n shiftX: -4.5,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n arrowheadBlackUp: {\n straight: {\n shiftX: -0.85,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n },\n textNote: {\n point: 34,\n breathMarkTick: {\n point: 36,\n shiftY: 9,\n },\n breathMarkComma: {\n point: 36,\n },\n segno: {\n point: 30,\n shiftX: -7,\n shiftY: 8,\n },\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n ornamentTrill: {\n shiftX: -10,\n shiftY: 8,\n },\n ornamentMordent: {\n shiftX: -8,\n },\n ornamentShortTrill: {\n shiftX: -8,\n },\n },\n noteHead: {\n minPadding: 2,\n standard: {\n noteheadBlackStemUp: {\n shiftX: 0.5,\n },\n noteheadHalfStemUp: {\n shiftX: 0.725,\n },\n noteheadWholeStemUp: {\n shiftX: 1,\n },\n },\n custom: {\n noteheadCircleXStemUp: {\n shiftX: -1,\n },\n noteheadCircleXStemDown: {\n shiftX: 0.25,\n },\n noteheadDiamondHalfStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondBlackStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondWholeStemUp: {\n shiftX: 1,\n },\n noteheadXBlackStemUp: {\n shiftX: 1,\n },\n noteheadXHalfStemUp: {\n shiftX: -3,\n },\n noteheadXHalfStemDown: {\n shiftX: 1,\n },\n noteheadXWholeStemUp: {\n shiftX: -7,\n },\n noteheadXWholeStemDown: {\n shiftX: 1,\n },\n noteheadXDoubleWholeStemUp: {\n shiftX: -12,\n },\n noteheadXDoubleWholeStemDown: {\n shiftX: -4,\n },\n noteheadSquareWhiteStemDown: {\n shiftX: 0.25,\n },\n noteheadSquareWhiteStemUp: {\n shiftX: -0.75,\n },\n noteheadSquareBlackStemUp: {\n shiftX: -0.75,\n },\n noteheadTriangleUpWholeStemUp: {\n shiftX: -0.75,\n },\n },\n },\n chordSymbol: {\n global: {\n superscriptOffset: -400,\n subscriptOffset: 300,\n kerningOffset: -150,\n lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'],\n upperKerningText: ['L'],\n spacing: 20,\n superSubRatio: 0.73,\n },\n csymDiminished: {\n scale: 0.8,\n leftSideBearing: -95,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymHalfDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymAugmented: {\n scale: 1,\n leftSideBearing: -25,\n advanceWidth: 530,\n yOffset: 0,\n },\n csymParensLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 155,\n yOffset: 150,\n },\n csymParensRightTall: {\n scale: 0.8,\n leftSideBearing: 40,\n advanceWidth: 189,\n yOffset: 150,\n },\n csymBracketLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 328,\n yOffset: 0,\n },\n csymBracketRightTall: {\n scale: 0.8,\n leftSideBearing: 1,\n advanceWidth: 600,\n yOffset: 0,\n },\n csymParensLeftVeryTall: {\n scale: 0.95,\n leftSideBearing: 0,\n advanceWidth: 210,\n yOffset: 250,\n },\n csymParensRightVeryTall: {\n scale: 0.9,\n leftSideBearing: -100,\n advanceWidth: 111,\n yOffset: 250,\n },\n csymDiagonalArrangementSlash: {\n scale: 0.6,\n leftSideBearing: -1,\n advanceWidth: 990,\n yOffset: 0,\n },\n csymMinor: {\n scale: 0.7,\n leftSideBearing: 0,\n advanceWidth: 482,\n yOffset: 0,\n },\n csymMajorSeventh: {\n scale: 0.8,\n leftSideBearing: 100,\n yOffset: 0,\n advanceWidth: 600,\n },\n accidentalSharp: {\n scale: 0.7,\n leftSideBearing: 0,\n advanceWidth: 425,\n yOffset: -422,\n },\n accidentalFlat: {\n scale: 0.8,\n leftSideBearing: -10,\n advanceWidth: 228,\n yOffset: -284,\n },\n },\n jazzOrnaments: {\n brassScoop: {\n scale: 1.0,\n xOffset: -12,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassDoitMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 19,\n },\n brassFallLipShort: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 19,\n },\n brassLiftMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 5,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassFallRoughMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 26,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassBend: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -8,\n stemUpYOffset: 28,\n reportedWidth: 5,\n },\n brassMuteClosed: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -8,\n stemUpYOffset: 26,\n reportedWidth: 5,\n },\n brassMuteOpen: {\n scale: 1.0,\n xOffset: 4,\n yOffset: -8,\n stemUpYOffset: 27,\n reportedWidth: 5,\n },\n brassFlip: {\n scale: 1.0,\n xOffset: 10,\n yOffset: -4,\n stemUpYOffset: 7,\n reportedWidth: 5,\n },\n brassJazzTurn: {\n scale: 1.0,\n xOffset: 6,\n yOffset: -4,\n stemUpYOffset: 5,\n reportedWidth: 30,\n },\n brassSmear: {\n scale: 1.0,\n xOffset: 10,\n yOffset: -4,\n stemUpYOffset: 5,\n reportedWidth: 5,\n },\n },\n tuplet: {\n noteHeadOffset: 20,\n stemOffset: 10,\n bottomLine: 4,\n topModifierOffset: 20,\n },\n },\n};\n","export const PetalumaScriptFont = {\n spacing: 50,\n glyphs: {\n ' ': {\n x_min: 0,\n x_max: 250,\n y_min: 0,\n y_max: 500,\n ha: 500,\n leftSideBearing: 0,\n advanceWidth: 250,\n },\n '0': {\n x_min: 33,\n x_max: 534,\n y_min: -13,\n y_max: 751,\n ha: 764,\n leftSideBearing: 33,\n advanceWidth: 570,\n },\n '1': {\n x_min: 48,\n x_max: 235,\n y_min: -17,\n y_max: 734,\n ha: 751,\n leftSideBearing: 48,\n advanceWidth: 286,\n },\n '2': {\n x_min: 56,\n x_max: 571,\n y_min: -19,\n y_max: 741,\n ha: 760,\n leftSideBearing: 56,\n advanceWidth: 626,\n },\n '3': {\n x_min: 50,\n x_max: 528,\n y_min: -7,\n y_max: 731,\n ha: 738,\n leftSideBearing: 50,\n advanceWidth: 589,\n },\n '4': {\n x_min: 38,\n x_max: 564,\n y_min: -13,\n y_max: 743,\n ha: 756,\n leftSideBearing: 38,\n advanceWidth: 614,\n },\n '5': {\n x_min: 42,\n x_max: 601,\n y_min: -34,\n y_max: 743,\n ha: 777,\n leftSideBearing: 42,\n advanceWidth: 648,\n },\n '6': {\n x_min: 47,\n x_max: 606,\n y_min: -16,\n y_max: 743,\n ha: 759,\n leftSideBearing: 47,\n advanceWidth: 667,\n },\n '7': {\n x_min: 47,\n x_max: 567,\n y_min: 5,\n y_max: 739,\n ha: 734,\n leftSideBearing: 0,\n advanceWidth: 615,\n },\n '8': {\n x_min: 40,\n x_max: 541,\n y_min: -15,\n y_max: 752,\n ha: 767,\n leftSideBearing: 40,\n advanceWidth: 585,\n },\n '9': {\n x_min: 40,\n x_max: 537,\n y_min: -52,\n y_max: 736,\n ha: 788,\n leftSideBearing: 40,\n advanceWidth: 592,\n },\n '!': {\n x_min: 49,\n x_max: 180,\n y_min: -7,\n y_max: 761,\n ha: 768,\n leftSideBearing: 49,\n advanceWidth: 230,\n },\n '\"': {\n x_min: 39,\n x_max: 304,\n y_min: 596,\n y_max: 804,\n ha: 208,\n leftSideBearing: 39,\n advanceWidth: 353,\n },\n '#': {\n x_min: 33,\n x_max: 599,\n y_min: -8,\n y_max: 765,\n ha: 773,\n leftSideBearing: 33,\n advanceWidth: 648,\n },\n $: {\n x_min: 53,\n x_max: 495,\n y_min: -111,\n y_max: 823,\n ha: 934,\n leftSideBearing: 53,\n advanceWidth: 560,\n },\n '%': {\n x_min: 35,\n x_max: 656,\n y_min: -128,\n y_max: 808,\n ha: 936,\n leftSideBearing: 35,\n advanceWidth: 711,\n },\n '&': {\n x_min: 53,\n x_max: 441,\n y_min: -3,\n y_max: 753,\n ha: 756,\n leftSideBearing: 53,\n advanceWidth: 500,\n },\n \"'\": {\n x_min: 43,\n x_max: 161,\n y_min: 590,\n y_max: 811,\n ha: 221,\n leftSideBearing: 43,\n advanceWidth: 217,\n },\n '(': {\n x_min: 41,\n x_max: 311,\n y_min: -36,\n y_max: 845,\n ha: 881,\n leftSideBearing: 41,\n advanceWidth: 308,\n },\n ')': {\n x_min: -8,\n x_max: 257,\n y_min: -21,\n y_max: 852,\n ha: 873,\n leftSideBearing: -8,\n advanceWidth: 280,\n },\n '*': {\n x_min: 59,\n x_max: 539,\n y_min: 175,\n y_max: 589,\n ha: 414,\n leftSideBearing: 59,\n advanceWidth: 601,\n },\n '+': {\n x_min: 33,\n x_max: 361,\n y_min: 180,\n y_max: 587,\n ha: 407,\n leftSideBearing: 33,\n advanceWidth: 400,\n },\n ',': {\n x_min: 15,\n x_max: 176,\n y_min: -129,\n y_max: 92,\n ha: 221,\n leftSideBearing: 15,\n advanceWidth: 205,\n },\n '-': {\n x_min: 40,\n x_max: 380,\n y_min: 317,\n y_max: 452,\n ha: 135,\n leftSideBearing: 40,\n advanceWidth: 422,\n },\n '.': {\n x_min: 48,\n x_max: 185,\n y_min: -56,\n y_max: 84,\n ha: 140,\n leftSideBearing: 48,\n advanceWidth: 227,\n },\n '/': {\n x_min: -58,\n x_max: 654,\n y_min: -122,\n y_max: 844,\n ha: 966,\n leftSideBearing: -58,\n advanceWidth: 626,\n },\n ':': {\n x_min: 65,\n x_max: 225,\n y_min: 97,\n y_max: 536,\n ha: 439,\n leftSideBearing: 65,\n advanceWidth: 302,\n },\n ';': {\n x_min: 13,\n x_max: 295,\n y_min: -139,\n y_max: 536,\n ha: 675,\n leftSideBearing: 13,\n advanceWidth: 334,\n },\n '<': {\n x_min: 28,\n x_max: 438,\n y_min: -1,\n y_max: 607,\n ha: 608,\n leftSideBearing: 28,\n advanceWidth: 475,\n },\n '=': {\n x_min: 40,\n x_max: 383,\n y_min: 199.9598640852289,\n y_max: 541,\n ha: 341.0401359147711,\n leftSideBearing: 40,\n advanceWidth: 422,\n },\n '>': {\n x_min: 35,\n x_max: 421,\n y_min: 28,\n y_max: 632,\n ha: 604,\n leftSideBearing: 35,\n advanceWidth: 466,\n },\n '?': {\n x_min: 45,\n x_max: 548,\n y_min: -17,\n y_max: 767,\n ha: 784,\n leftSideBearing: 45,\n advanceWidth: 592,\n },\n '@': {\n x_min: 51,\n x_max: 730,\n y_min: -78,\n y_max: 753,\n ha: 831,\n leftSideBearing: 51,\n advanceWidth: 781,\n },\n A: {\n x_min: 37,\n x_max: 554,\n y_min: -4,\n y_max: 746,\n ha: 750,\n leftSideBearing: 37,\n advanceWidth: 617,\n },\n B: {\n x_min: 37,\n x_max: 532,\n y_min: 3,\n y_max: 783,\n ha: 780,\n leftSideBearing: 37,\n advanceWidth: 579,\n },\n C: {\n x_min: 37,\n x_max: 583,\n y_min: -3,\n y_max: 775,\n ha: 778,\n leftSideBearing: 37,\n advanceWidth: 623,\n },\n D: {\n x_min: 50,\n x_max: 530,\n y_min: -15,\n y_max: 749,\n ha: 764,\n leftSideBearing: 50,\n advanceWidth: 579,\n },\n E: {\n x_min: 45,\n x_max: 531,\n y_min: -1,\n y_max: 743,\n ha: 744,\n leftSideBearing: 45,\n advanceWidth: 585,\n },\n F: {\n x_min: 45,\n x_max: 459,\n y_min: 23,\n y_max: 727,\n ha: 704,\n leftSideBearing: 45,\n advanceWidth: 510,\n },\n G: {\n x_min: 31,\n x_max: 577,\n y_min: -8,\n y_max: 733,\n ha: 741,\n leftSideBearing: 31,\n advanceWidth: 611,\n },\n H: {\n x_min: 37,\n x_max: 493,\n y_min: -22,\n y_max: 758,\n ha: 780,\n leftSideBearing: 37,\n advanceWidth: 535,\n },\n I: {\n x_min: 47,\n x_max: 501,\n y_min: -3,\n y_max: 731,\n ha: 734,\n leftSideBearing: 47,\n advanceWidth: 541,\n },\n J: {\n x_min: 33,\n x_max: 531,\n y_min: -23,\n y_max: 725,\n ha: 748,\n leftSideBearing: 33,\n advanceWidth: 573,\n },\n K: {\n x_min: 43,\n x_max: 505,\n y_min: -10,\n y_max: 740,\n ha: 750,\n leftSideBearing: 43,\n advanceWidth: 560,\n },\n L: {\n x_min: 49,\n x_max: 457,\n y_min: -2,\n y_max: 746,\n ha: 748,\n leftSideBearing: 49,\n advanceWidth: 510,\n },\n M: {\n x_min: 35,\n x_max: 699,\n y_min: 1,\n y_max: 744,\n ha: 743,\n leftSideBearing: 35,\n advanceWidth: 743,\n },\n N: {\n x_min: 34,\n x_max: 533,\n y_min: -17,\n y_max: 761,\n ha: 778,\n leftSideBearing: 34,\n advanceWidth: 579,\n },\n O: {\n x_min: 41,\n x_max: 608,\n y_min: -5,\n y_max: 735,\n ha: 740,\n leftSideBearing: 41,\n advanceWidth: 667,\n },\n P: {\n x_min: 53,\n x_max: 451,\n y_min: -18,\n y_max: 735,\n ha: 753,\n leftSideBearing: 53,\n advanceWidth: 497,\n },\n Q: {\n x_min: 40,\n x_max: 599,\n y_min: -67,\n y_max: 744,\n ha: 811,\n leftSideBearing: 40,\n advanceWidth: 648,\n },\n R: {\n x_min: 39,\n x_max: 487,\n y_min: 16,\n y_max: 735,\n ha: 719,\n leftSideBearing: 39,\n advanceWidth: 535,\n },\n S: {\n x_min: 35,\n x_max: 552,\n y_min: -47,\n y_max: 708,\n ha: 755,\n leftSideBearing: 35,\n advanceWidth: 604,\n },\n T: {\n x_min: 26,\n x_max: 656,\n y_min: -13,\n y_max: 718,\n ha: 731,\n leftSideBearing: 26,\n advanceWidth: 705,\n },\n U: {\n x_min: 41,\n x_max: 518,\n y_min: -20,\n y_max: 748,\n ha: 768,\n leftSideBearing: 41,\n advanceWidth: 567,\n },\n V: {\n x_min: 47,\n x_max: 509,\n y_min: -26,\n y_max: 744,\n ha: 770,\n leftSideBearing: 47,\n advanceWidth: 567,\n },\n W: {\n x_min: 44,\n x_max: 789,\n y_min: -35,\n y_max: 720,\n ha: 755,\n leftSideBearing: 44,\n advanceWidth: 833,\n },\n X: {\n x_min: 63,\n x_max: 635,\n y_min: -10,\n y_max: 745,\n ha: 755,\n leftSideBearing: 63,\n advanceWidth: 680,\n },\n Y: {\n x_min: 43,\n x_max: 503,\n y_min: -21,\n y_max: 734,\n ha: 755,\n leftSideBearing: 43,\n advanceWidth: 541,\n },\n Z: {\n x_min: 42,\n x_max: 584,\n y_min: -10,\n y_max: 739,\n ha: 749,\n leftSideBearing: 42,\n advanceWidth: 629,\n },\n '[': {\n x_min: 46,\n x_max: 346,\n y_min: -150,\n y_max: 884,\n ha: 1034,\n leftSideBearing: 46,\n advanceWidth: 291,\n },\n '\\\\': {\n x_min: 20,\n x_max: 616,\n y_min: -100,\n y_max: 797,\n ha: 897,\n leftSideBearing: 20,\n advanceWidth: 645,\n },\n ']': {\n x_min: -76,\n x_max: 226,\n y_min: -150,\n y_max: 881,\n ha: 1031,\n leftSideBearing: -76,\n advanceWidth: 297,\n },\n '^': {\n x_min: 43,\n x_max: 437,\n y_min: 517,\n y_max: 812,\n ha: 295,\n leftSideBearing: 43,\n advanceWidth: 478,\n },\n _: {\n x_min: 29,\n x_max: 563,\n y_min: -110,\n y_max: -1,\n ha: 109,\n leftSideBearing: 29,\n advanceWidth: 598,\n },\n '`': {\n x_min: 54,\n x_max: 321,\n y_min: 540,\n y_max: 747,\n ha: 207,\n leftSideBearing: 54,\n advanceWidth: 368,\n },\n a: {\n x_min: 20,\n x_max: 447,\n y_min: -17,\n y_max: 495,\n ha: 512,\n leftSideBearing: 20,\n advanceWidth: 494,\n },\n b: {\n x_min: 37,\n x_max: 466,\n y_min: -27,\n y_max: 770,\n ha: 797,\n leftSideBearing: 37,\n advanceWidth: 510,\n },\n c: {\n x_min: 35,\n x_max: 456,\n y_min: -9,\n y_max: 507,\n ha: 516,\n leftSideBearing: 35,\n advanceWidth: 460,\n },\n d: {\n x_min: 45,\n x_max: 520,\n y_min: -15,\n y_max: 764,\n ha: 779,\n leftSideBearing: 45,\n advanceWidth: 560,\n },\n e: {\n x_min: 33,\n x_max: 370,\n y_min: -5,\n y_max: 501,\n ha: 506,\n leftSideBearing: 33,\n advanceWidth: 397,\n },\n f: {\n x_min: 35,\n x_max: 411,\n y_min: -13,\n y_max: 695,\n ha: 708,\n leftSideBearing: 35,\n advanceWidth: 453,\n },\n g: {\n x_min: 33,\n x_max: 551,\n y_min: -257,\n y_max: 505,\n ha: 762,\n leftSideBearing: 33,\n advanceWidth: 611,\n },\n h: {\n x_min: 32,\n x_max: 458,\n y_min: -29,\n y_max: 743,\n ha: 772,\n leftSideBearing: 32,\n advanceWidth: 491,\n },\n i: {\n x_min: 45,\n x_max: 167,\n y_min: -13,\n y_max: 631,\n ha: 644,\n leftSideBearing: 45,\n advanceWidth: 220,\n },\n j: {\n x_min: -127,\n x_max: 261,\n y_min: -231,\n y_max: 601,\n ha: 832,\n leftSideBearing: -127,\n advanceWidth: 308,\n },\n k: {\n x_min: 39,\n x_max: 443,\n y_min: -3,\n y_max: 700,\n ha: 703,\n leftSideBearing: 39,\n advanceWidth: 497,\n },\n l: {\n x_min: 58,\n x_max: 168,\n y_min: -8,\n y_max: 686,\n ha: 694,\n leftSideBearing: 58,\n advanceWidth: 227,\n },\n m: {\n x_min: 39,\n x_max: 688,\n y_min: -14,\n y_max: 501,\n ha: 515,\n leftSideBearing: 39,\n advanceWidth: 718,\n },\n n: {\n x_min: 45,\n x_max: 491,\n y_min: -32,\n y_max: 512,\n ha: 544,\n leftSideBearing: 45,\n advanceWidth: 541,\n },\n o: {\n x_min: 41,\n x_max: 424,\n y_min: -12,\n y_max: 493,\n ha: 505,\n leftSideBearing: 41,\n advanceWidth: 447,\n },\n p: {\n x_min: 25,\n x_max: 529,\n y_min: -260,\n y_max: 500,\n ha: 760,\n leftSideBearing: 25,\n advanceWidth: 573,\n },\n q: {\n x_min: 53,\n x_max: 603,\n y_min: -235,\n y_max: 514,\n ha: 749,\n leftSideBearing: 53,\n advanceWidth: 623,\n },\n r: {\n x_min: 32,\n x_max: 407,\n y_min: -7,\n y_max: 492,\n ha: 499,\n leftSideBearing: 32,\n advanceWidth: 460,\n },\n s: {\n x_min: 49,\n x_max: 416,\n y_min: -12,\n y_max: 519,\n ha: 531,\n leftSideBearing: 49,\n advanceWidth: 460,\n },\n t: {\n x_min: 32,\n x_max: 442,\n y_min: -5,\n y_max: 684,\n ha: 689,\n leftSideBearing: 32,\n advanceWidth: 469,\n },\n u: {\n x_min: 41,\n x_max: 487,\n y_min: -5,\n y_max: 507,\n ha: 512,\n leftSideBearing: 41,\n advanceWidth: 510,\n },\n v: {\n x_min: 16,\n x_max: 441,\n y_min: -20,\n y_max: 542,\n ha: 562,\n leftSideBearing: 16,\n advanceWidth: 456,\n },\n w: {\n x_min: 39,\n x_max: 639,\n y_min: -22,\n y_max: 505,\n ha: 527,\n leftSideBearing: 39,\n advanceWidth: 661,\n },\n x: {\n x_min: 15,\n x_max: 505,\n y_min: -39,\n y_max: 539,\n ha: 578,\n leftSideBearing: 15,\n advanceWidth: 541,\n },\n y: {\n x_min: -98,\n x_max: 501,\n y_min: -242,\n y_max: 511,\n ha: 753,\n leftSideBearing: -98,\n advanceWidth: 548,\n },\n z: {\n x_min: 27,\n x_max: 479,\n y_min: -3,\n y_max: 494,\n ha: 497,\n leftSideBearing: 27,\n advanceWidth: 494,\n },\n '{': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '|': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '}': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '~': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n },\n fontFamily: 'PetalumaScript',\n resolution: 1000,\n generatedOn: '2020-06-14T18:33:25.407Z',\n};\n","export const RobotoSlabFont = {\n spacing: 50,\n glyphs: {\n ' ': {\n x_min: 0,\n x_max: 509,\n y_min: 0,\n y_max: 2000,\n ha: 2000,\n leftSideBearing: 0,\n advanceWidth: 509,\n },\n '0': {\n x_min: 121,\n x_max: 1048,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 121,\n advanceWidth: 1168,\n },\n '1': {\n x_min: 117,\n x_max: 767,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 117,\n advanceWidth: 844,\n },\n '2': {\n x_min: 75.8474576645637,\n x_max: 1040,\n y_min: 0,\n y_max: 1477,\n ha: 1477,\n leftSideBearing: 75,\n advanceWidth: 1131,\n },\n '3': {\n x_min: 74.85365853658536,\n x_max: 994,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 74,\n advanceWidth: 1106,\n },\n '4': {\n x_min: 63,\n x_max: 1114,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 63,\n advanceWidth: 1187,\n },\n '5': {\n x_min: 96.8448275474953,\n x_max: 982,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 96,\n advanceWidth: 1081,\n },\n '6': {\n x_min: 121,\n x_max: 1067,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 121,\n advanceWidth: 1144,\n },\n '7': {\n x_min: 76,\n x_max: 1060,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: -30,\n advanceWidth: 1128,\n },\n '8': {\n x_min: 92,\n x_max: 1039,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 92,\n advanceWidth: 1131,\n },\n '9': {\n x_min: 84,\n x_max: 1026,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 84,\n advanceWidth: 1154,\n },\n '!': {\n x_min: 143,\n x_max: 340,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 143,\n advanceWidth: 483,\n },\n '\"': {\n x_min: 166,\n x_max: 634,\n y_min: 1055,\n y_max: 1560,\n ha: 505,\n leftSideBearing: 166,\n advanceWidth: 770,\n },\n '#': {\n x_min: 63,\n x_max: 1179,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 63,\n advanceWidth: 1246,\n },\n $: {\n x_min: 81.92156915727656,\n x_max: 1012,\n y_min: -208,\n y_max: 1693,\n ha: 1901,\n leftSideBearing: 81,\n advanceWidth: 1110,\n },\n '%': {\n x_min: 77,\n x_max: 1384,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 77,\n advanceWidth: 1460,\n },\n '&': {\n x_min: 74,\n x_max: 1242,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 74,\n advanceWidth: 1289,\n },\n \"'\": {\n x_min: 166,\n x_max: 324,\n y_min: 1055,\n y_max: 1560,\n ha: 505,\n leftSideBearing: 166,\n advanceWidth: 460,\n },\n '(': {\n x_min: 114,\n x_max: 650,\n y_min: -463,\n y_max: 1636,\n ha: 2099,\n leftSideBearing: 114,\n advanceWidth: 662,\n },\n ')': {\n x_min: 11,\n x_max: 547,\n y_min: -463,\n y_max: 1636,\n ha: 2099,\n leftSideBearing: 11,\n advanceWidth: 654,\n },\n '*': {\n x_min: 66,\n x_max: 893,\n y_min: 607,\n y_max: 1456,\n ha: 849,\n leftSideBearing: 66,\n advanceWidth: 958,\n },\n '+': {\n x_min: 73,\n x_max: 1071,\n y_min: 146,\n y_max: 1206,\n ha: 1060,\n leftSideBearing: 73,\n advanceWidth: 1145,\n },\n ',': {\n x_min: 23,\n x_max: 315,\n y_min: -311,\n y_max: 221,\n ha: 532,\n leftSideBearing: 23,\n advanceWidth: 404,\n },\n '-': {\n x_min: 154,\n x_max: 643,\n y_min: 538,\n y_max: 692,\n ha: 154,\n leftSideBearing: 154,\n advanceWidth: 797,\n },\n '.': {\n x_min: 145,\n x_max: 342,\n y_min: 0,\n y_max: 202,\n ha: 202,\n leftSideBearing: 145,\n advanceWidth: 493,\n },\n '/': {\n x_min: 0,\n x_max: 774,\n y_min: -125,\n y_max: 1456,\n ha: 1581,\n leftSideBearing: 0,\n advanceWidth: 824,\n },\n ':': {\n x_min: 145,\n x_max: 342,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 145,\n advanceWidth: 419,\n },\n ';': {\n x_min: 53,\n x_max: 345,\n y_min: -311,\n y_max: 1082,\n ha: 1393,\n leftSideBearing: 53,\n advanceWidth: 424,\n },\n '<': {\n x_min: 76,\n x_max: 892,\n y_min: 107,\n y_max: 1013,\n ha: 906,\n leftSideBearing: 76,\n advanceWidth: 1017,\n },\n '=': {\n x_min: 147,\n x_max: 981,\n y_min: 407,\n y_max: 987,\n ha: 580,\n leftSideBearing: 147,\n advanceWidth: 1127,\n },\n '>': {\n x_min: 125,\n x_max: 980,\n y_min: 87,\n y_max: 993,\n ha: 906,\n leftSideBearing: 125,\n advanceWidth: 1060,\n },\n '?': {\n x_min: 65.92660602419838,\n x_max: 890,\n y_min: 0,\n y_max: 1477,\n ha: 1477,\n leftSideBearing: 65,\n advanceWidth: 953,\n },\n '@': {\n x_min: 84.3592218305664,\n x_max: 1705.2346925277395,\n y_min: -453,\n y_max: 1431,\n ha: 1884,\n leftSideBearing: 84,\n advanceWidth: 1821,\n },\n A: {\n x_min: 70,\n x_max: 1463,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 70,\n advanceWidth: 1533,\n },\n B: {\n x_min: 81,\n x_max: 1253,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1322,\n },\n C: {\n x_min: 80,\n x_max: 1174,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 80,\n advanceWidth: 1290,\n },\n D: {\n x_min: 81,\n x_max: 1291,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1356,\n },\n E: {\n x_min: 81,\n x_max: 1190,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1306,\n },\n F: {\n x_min: 81,\n x_max: 1176,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1256,\n },\n G: {\n x_min: 80,\n x_max: 1226,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 80,\n advanceWidth: 1346,\n },\n H: {\n x_min: 81,\n x_max: 1497,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1578,\n },\n I: {\n x_min: 81,\n x_max: 604,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 685,\n },\n J: {\n x_min: 60,\n x_max: 1100,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 60,\n advanceWidth: 1169,\n },\n K: {\n x_min: 81,\n x_max: 1427,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1501,\n },\n L: {\n x_min: 81,\n x_max: 1130,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1210,\n },\n M: {\n x_min: 94,\n x_max: 1888,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 94,\n advanceWidth: 1982,\n },\n N: {\n x_min: 83,\n x_max: 1509,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 83,\n advanceWidth: 1592,\n },\n O: {\n x_min: 70,\n x_max: 1281,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 70,\n advanceWidth: 1351,\n },\n P: {\n x_min: 81,\n x_max: 1242,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1297,\n },\n Q: {\n x_min: 70,\n x_max: 1348,\n y_min: -245,\n y_max: 1477,\n ha: 1722,\n leftSideBearing: 70,\n advanceWidth: 1376,\n },\n R: {\n x_min: 81,\n x_max: 1285,\n y_min: 0,\n y_max: 1455,\n ha: 1455,\n leftSideBearing: 81,\n advanceWidth: 1385,\n },\n S: {\n x_min: 115,\n x_max: 1116,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 115,\n advanceWidth: 1206,\n },\n T: {\n x_min: 96,\n x_max: 1306,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 96,\n advanceWidth: 1406,\n },\n U: {\n x_min: 70,\n x_max: 1452,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 70,\n advanceWidth: 1522,\n },\n V: {\n x_min: 65,\n x_max: 1443,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 65,\n advanceWidth: 1508,\n },\n W: {\n x_min: 72,\n x_max: 2057,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 72,\n advanceWidth: 2129,\n },\n X: {\n x_min: 80,\n x_max: 1449,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 80,\n advanceWidth: 1529,\n },\n Y: {\n x_min: 65,\n x_max: 1396,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 65,\n advanceWidth: 1461,\n },\n Z: {\n x_min: 90,\n x_max: 1107,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 90,\n advanceWidth: 1197,\n },\n '[': {\n x_min: 157,\n x_max: 541,\n y_min: -312,\n y_max: 1664,\n ha: 1976,\n leftSideBearing: 157,\n advanceWidth: 573,\n },\n '\\\\': {\n x_min: 36,\n x_max: 830,\n y_min: -125,\n y_max: 1456,\n ha: 1581,\n leftSideBearing: 36,\n advanceWidth: 841,\n },\n ']': {\n x_min: 23,\n x_max: 408,\n y_min: -312,\n y_max: 1664,\n ha: 1976,\n leftSideBearing: 23,\n advanceWidth: 552,\n },\n '^': {\n x_min: 71,\n x_max: 802,\n y_min: 729,\n y_max: 1456,\n ha: 727,\n leftSideBearing: 71,\n advanceWidth: 864,\n },\n _: {\n x_min: 119,\n x_max: 1041,\n y_min: -154,\n y_max: 0,\n ha: 154,\n leftSideBearing: 119,\n advanceWidth: 1168,\n },\n '`': {\n x_min: 40,\n x_max: 456,\n y_min: 1288,\n y_max: 1560,\n ha: 272,\n leftSideBearing: 40,\n advanceWidth: 496,\n },\n a: {\n x_min: 79,\n x_max: 1053,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 79,\n advanceWidth: 1132,\n },\n b: {\n x_min: -16,\n x_max: 1071,\n y_min: -21,\n y_max: 1560,\n ha: 1581,\n leftSideBearing: -16,\n advanceWidth: 1145,\n },\n c: {\n x_min: 78,\n x_max: 988,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 78,\n advanceWidth: 1067,\n },\n d: {\n x_min: 78,\n x_max: 1156,\n y_min: -21,\n y_max: 1560,\n ha: 1581,\n leftSideBearing: 78,\n advanceWidth: 1218,\n },\n e: {\n x_min: 74,\n x_max: 980,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 74,\n advanceWidth: 1059,\n },\n f: {\n x_min: 64,\n x_max: 731,\n y_min: 0,\n y_max: 1581,\n ha: 1581,\n leftSideBearing: 64,\n advanceWidth: 725,\n },\n g: {\n x_min: 78,\n x_max: 1133,\n y_min: -437,\n y_max: 1102,\n ha: 1539,\n leftSideBearing: 78,\n advanceWidth: 1157,\n },\n h: {\n x_min: 49,\n x_max: 1255,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 49,\n advanceWidth: 1315,\n },\n i: {\n x_min: 67,\n x_max: 590,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 67,\n advanceWidth: 652,\n },\n j: {\n x_min: -56,\n x_max: 381,\n y_min: -437,\n y_max: 1560,\n ha: 1997,\n leftSideBearing: -56,\n advanceWidth: 525,\n },\n k: {\n x_min: 64,\n x_max: 1248,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 64,\n advanceWidth: 1287,\n },\n l: {\n x_min: 64,\n x_max: 587,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 64,\n advanceWidth: 653,\n },\n m: {\n x_min: 74,\n x_max: 1905,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 74,\n advanceWidth: 1977,\n },\n n: {\n x_min: 74,\n x_max: 1278,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 74,\n advanceWidth: 1343,\n },\n o: {\n x_min: 78,\n x_max: 1046,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 78,\n advanceWidth: 1124,\n },\n p: {\n x_min: 34,\n x_max: 1119,\n y_min: -416,\n y_max: 1102,\n ha: 1518,\n leftSideBearing: 34,\n advanceWidth: 1197,\n },\n q: {\n x_min: 78,\n x_max: 1135,\n y_min: -416,\n y_max: 1102,\n ha: 1518,\n leftSideBearing: 78,\n advanceWidth: 1139,\n },\n r: {\n x_min: 72,\n x_max: 808,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 72,\n advanceWidth: 854,\n },\n s: {\n x_min: 104,\n x_max: 933,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 104,\n advanceWidth: 1022,\n },\n t: {\n x_min: 24,\n x_max: 678,\n y_min: -17,\n y_max: 1343,\n ha: 1360,\n leftSideBearing: 24,\n advanceWidth: 730,\n },\n u: {\n x_min: 52,\n x_max: 1181,\n y_min: -21,\n y_max: 1082,\n ha: 1103,\n leftSideBearing: 52,\n advanceWidth: 1245,\n },\n v: {\n x_min: 26,\n x_max: 1176,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 26,\n advanceWidth: 1206,\n },\n w: {\n x_min: 52,\n x_max: 1777,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 52,\n advanceWidth: 1823,\n },\n x: {\n x_min: 42,\n x_max: 1163,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 42,\n advanceWidth: 1203,\n },\n y: {\n x_min: 24,\n x_max: 1172,\n y_min: -437,\n y_max: 1082,\n ha: 1519,\n leftSideBearing: 24,\n advanceWidth: 1192,\n },\n z: {\n x_min: 88,\n x_max: 960,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 88,\n advanceWidth: 1032,\n },\n '{': {\n x_min: 63,\n x_max: 671,\n y_min: -364,\n y_max: 1597,\n ha: 1961,\n leftSideBearing: 63,\n advanceWidth: 701,\n },\n '|': {\n x_min: 150,\n x_max: 307,\n y_min: -270,\n y_max: 1456,\n ha: 1726,\n leftSideBearing: 150,\n advanceWidth: 451,\n },\n '}': {\n x_min: 27,\n x_max: 635,\n y_min: -364,\n y_max: 1597,\n ha: 1961,\n leftSideBearing: 27,\n advanceWidth: 701,\n },\n '~': {\n x_min: 121,\n x_max: 1257,\n y_min: 401,\n y_max: 803,\n ha: 402,\n leftSideBearing: 121,\n advanceWidth: 1386,\n },\n },\n fontFamily: 'Roboto Slab',\n resolution: 2048,\n generatedOn: '2020-06-15T19:12:58.120Z',\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { TextFormatter } from '../textformatter';\nimport { PetalumaScriptFont } from './petalumascript_glyphs';\nimport { RobotoSlabFont } from './robotoslab_glyphs';\nexport function loadTextFonts() {\n // Roboto Slab\n {\n const fontData = RobotoSlabFont;\n const { fontFamily, resolution, glyphs } = fontData;\n Font.load(fontFamily, fontData);\n // Previously we used 'H', but it isn't actually the tallest or the widest.\n // Interestingly, the lowercase 'b' is the tallest glyph.\n const maxSizeGlyph = 'b';\n TextFormatter.registerInfo({\n family: fontFamily,\n resolution,\n glyphs,\n maxSizeGlyph,\n monospaced: false,\n bold: false,\n italic: false,\n superscriptOffset: 0.66,\n subscriptOffset: 0.66,\n serifs: true,\n description: 'Text font to pair with the Bravura / Gonville music fonts.',\n });\n }\n // PetalumaScript\n {\n const fontData = PetalumaScriptFont;\n const { fontFamily, resolution, glyphs } = fontData;\n Font.load(fontFamily, fontData);\n // M is wider, but H is taller. :-)\n // Lowercase b is also taller in this font.\n const maxSizeGlyph = 'b';\n TextFormatter.registerInfo({\n family: fontFamily,\n resolution,\n glyphs,\n maxSizeGlyph,\n monospaced: false,\n bold: false,\n italic: false,\n superscriptOffset: 0.66,\n subscriptOffset: 0.66,\n serifs: false,\n description: 'Text font to pair with the Petaluma music font.',\n });\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Beam } from './beam';\nimport { Font } from './font';\nimport { Fraction } from './fraction';\nimport { ModifierContext } from './modifiercontext';\nimport { Stave } from './stave';\nimport { StaveConnector } from './staveconnector';\nimport { Tables } from './tables';\nimport { TickContext } from './tickcontext';\nimport { isNote, isStaveNote } from './typeguard';\nimport { defined, log, midLine, RuntimeError } from './util';\nimport { Voice } from './voice';\n// Helper function\nconst sumArray = (arr) => arr.reduce((a, b) => a + b, 0);\n/**\n * Create `Alignment`s for each tick in `voices`. Also calculate the\n * total number of ticks in voices.\n */\nfunction createContexts(voices, makeContext, addToContext) {\n if (voices.length == 0)\n return {\n map: {},\n array: [],\n list: [],\n resolutionMultiplier: 0,\n };\n // Initialize tick maps.\n const tickToContextMap = {};\n const tickList = [];\n const contexts = [];\n const resolutionMultiplier = Formatter.getResolutionMultiplier(voices);\n // For each voice, extract notes and create a context for every\n // new tick that hasn't been seen before.\n voices.forEach((voice, voiceIndex) => {\n // Use resolution multiplier as denominator so that no additional expansion\n // of fractional tick values is needed.\n const ticksUsed = new Fraction(0, resolutionMultiplier);\n voice.getTickables().forEach((tickable) => {\n const integerTicks = ticksUsed.numerator;\n // If we have no tick context for this tick, create one.\n if (!tickToContextMap[integerTicks]) {\n const newContext = makeContext({ tickID: integerTicks });\n contexts.push(newContext);\n tickToContextMap[integerTicks] = newContext;\n // Maintain a list of unique integerTicks.\n tickList.push(integerTicks);\n }\n // Add this tickable to the TickContext.\n addToContext(tickable, tickToContextMap[integerTicks], voiceIndex);\n ticksUsed.add(tickable.getTicks());\n });\n });\n return {\n map: tickToContextMap,\n array: contexts,\n list: tickList.sort((a, b) => a - b),\n resolutionMultiplier,\n };\n}\n// eslint-disable-next-line\nfunction L(...args) {\n if (Formatter.DEBUG)\n log('Vex.Flow.Formatter', args);\n}\n/**\n * Get the rest line number of the next non-rest note(s).\n * @param notes array of Notes\n * @param currRestLine\n * @param currNoteIndex current note index\n * @param compare if true, return the midpoint between the current rest line and the next rest line\n * @returns a line number, which determines the vertical position of a rest.\n */\nfunction getRestLineForNextNoteGroup(notes, currRestLine, currNoteIndex, compare) {\n // If no valid next note group, nextRestLine is same as current.\n let nextRestLine = currRestLine;\n // Start with the next note and keep going until we find a valid non-rest note group.\n for (let noteIndex = currNoteIndex + 1; noteIndex < notes.length; noteIndex++) {\n const note = notes[noteIndex];\n if (isNote(note) && !note.isRest() && !note.shouldIgnoreTicks()) {\n nextRestLine = note.getLineForRest();\n break;\n }\n }\n // Locate the mid point between two lines.\n if (compare && currRestLine !== nextRestLine) {\n const top = Math.max(currRestLine, nextRestLine);\n const bot = Math.min(currRestLine, nextRestLine);\n nextRestLine = midLine(top, bot);\n }\n return nextRestLine;\n}\n/**\n * Format implements the formatting and layout algorithms that are used\n * to position notes in a voice. The algorithm can align multiple voices both\n * within a stave, and across multiple staves.\n *\n * To do this, the formatter breaks up voices into a grid of rational-valued\n * `ticks`, to which each note is assigned. Then, minimum widths are assigned\n * to each tick based on the widths of the notes and modifiers in that tick. This\n * establishes the smallest amount of space required for each tick.\n *\n * Finally, the formatter distributes the left over space proportionally to\n * all the ticks, setting the `x` values of the notes in each tick.\n *\n * See `tests/formatter_tests.ts` for usage examples. The helper functions included\n * here (`FormatAndDraw`, `FormatAndDrawTab`) also serve as useful usage examples.\n */\nexport class Formatter {\n constructor(options) {\n this.formatterOptions = Object.assign({ globalSoftmax: false, softmaxFactor: Tables.SOFTMAX_FACTOR, maxIterations: 5 }, options);\n this.justifyWidth = 0;\n this.totalCost = 0;\n this.totalShift = 0;\n this.durationStats = {};\n // Minimum width required to render all the notes in the voices.\n this.minTotalWidth = 0;\n // This is set to `true` after `minTotalWidth` is calculated.\n this.hasMinTotalWidth = false;\n // Arrays of tick and modifier contexts.\n this.tickContexts = {\n map: {},\n array: [],\n list: [],\n resolutionMultiplier: 0,\n };\n this.modifierContexts = [];\n // Gaps between contexts, for free movement of notes post\n // formatting.\n this.contextGaps = {\n total: 0,\n gaps: [],\n };\n this.voices = [];\n this.lossHistory = [];\n }\n /**\n * Helper function to layout \"notes\" one after the other without\n * regard for proportions. Useful for tests and debugging.\n */\n static SimpleFormat(notes, x = 0, { paddingBetween = 10 } = {}) {\n notes.reduce((accumulator, note) => {\n note.addToModifierContext(new ModifierContext());\n const tick = new TickContext().addTickable(note).preFormat();\n const metrics = tick.getMetrics();\n tick.setX(accumulator + metrics.totalLeftPx);\n return accumulator + tick.getWidth() + metrics.totalRightPx + paddingBetween;\n }, x);\n }\n /** Helper function to plot formatter debug info. */\n static plotDebugging(ctx, formatter, xPos, y1, y2, options) {\n options = Object.assign({ stavePadding: Tables.currentMusicFont().lookupMetric('stave.padding') }, options);\n const x = xPos + options.stavePadding;\n const contextGaps = formatter.contextGaps;\n function stroke(x1, x2, color) {\n ctx.beginPath();\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n ctx.setLineWidth(1);\n ctx.fillRect(x1, y1, Math.max(x2 - x1, 0), y2 - y1);\n }\n ctx.save();\n ctx.setFont(Font.SANS_SERIF, 8);\n contextGaps.gaps.forEach((gap) => {\n stroke(x + gap.x1, x + gap.x2, 'rgba(100,200,100,0.4)');\n ctx.setFillStyle('green');\n ctx.fillText(Math.round(gap.x2 - gap.x1).toString(), x + gap.x1, y2 + 12);\n });\n ctx.setFillStyle('red');\n ctx.fillText(`Loss: ${(formatter.totalCost || 0).toFixed(2)} Shift: ${(formatter.totalShift || 0).toFixed(2)} Gap: ${contextGaps.total.toFixed(2)}`, x - 20, y2 + 27);\n ctx.restore();\n }\n /**\n * Helper function to format and draw a single voice. Returns a bounding\n * box for the notation.\n * @param ctx the rendering context\n * @param stave the stave to which to draw (`Stave` or `TabStave`)\n * @param notes array of `Note` instances (`Note`, `TextNote`, `TabNote`, etc.)\n * @param params one of below:\n * * Setting `autobeam` only `(context, stave, notes, true)` or\n * `(ctx, stave, notes, {autobeam: true})`\n * * Setting `align_rests` a struct is needed `(context, stave, notes, {align_rests: true})`\n * * Setting both a struct is needed `(context, stave, notes, {\n * autobeam: true, align_rests: true})`\n * * `autobeam` automatically generates beams for the notes.\n * * `align_rests` aligns rests with nearby notes.\n */\n static FormatAndDraw(ctx, stave, notes, params) {\n let options = {\n auto_beam: false,\n align_rests: false,\n };\n if (typeof params === 'object') {\n options = Object.assign(Object.assign({}, options), params);\n }\n else if (typeof params === 'boolean') {\n options.auto_beam = params;\n }\n // Start by creating a voice and adding all the notes to it.\n const voice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(notes);\n // Then create beams, if requested.\n const beams = options.auto_beam ? Beam.applyAndGetBeams(voice) : [];\n // Instantiate a `Formatter` and format the notes.\n new Formatter()\n .joinVoices([voice]) // , { align_rests: options.align_rests })\n .formatToStave([voice], stave, { align_rests: options.align_rests, stave });\n // Render the voice and beams to the stave.\n voice.setStave(stave).draw(ctx, stave);\n beams.forEach((beam) => beam.setContext(ctx).draw());\n // Return the bounding box of the voice.\n return voice.getBoundingBox();\n }\n /**\n * Helper function to format and draw aligned tab and stave notes in two\n * separate staves.\n * @param ctx the rendering context\n * @param tabstave a `TabStave` instance on which to render `TabNote`s.\n * @param stave a `Stave` instance on which to render `Note`s.\n * @param notes array of `Note` instances for the stave (`Note`, `BarNote`, etc.)\n * @param tabnotes array of `Note` instances for the tab stave (`TabNote`, `BarNote`, etc.)\n * @param autobeam automatically generate beams.\n * @param params a configuration object:\n * * `autobeam` automatically generates beams for the notes.\n * * `align_rests` aligns rests with nearby notes.\n */\n static FormatAndDrawTab(ctx, tabstave, stave, tabnotes, notes, autobeam, params) {\n let opts = {\n auto_beam: autobeam,\n align_rests: false,\n };\n if (typeof params === 'object') {\n opts = Object.assign(Object.assign({}, opts), params);\n }\n else if (typeof params === 'boolean') {\n opts.auto_beam = params;\n }\n // Create a `4/4` voice for `notes`.\n const notevoice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(notes);\n // Create a `4/4` voice for `tabnotes`.\n const tabvoice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(tabnotes);\n // Then create beams, if requested.\n const beams = opts.auto_beam ? Beam.applyAndGetBeams(notevoice) : [];\n // Instantiate a `Formatter` and align tab and stave notes.\n new Formatter()\n .joinVoices([notevoice]) // , { align_rests: opts.align_rests })\n .joinVoices([tabvoice])\n .formatToStave([notevoice, tabvoice], stave, { align_rests: opts.align_rests });\n // Render voices and beams to staves.\n notevoice.draw(ctx, stave);\n tabvoice.draw(ctx, tabstave);\n beams.forEach((beam) => beam.setContext(ctx).draw());\n // Draw a connector between tab and note staves.\n new StaveConnector(stave, tabstave).setContext(ctx).draw();\n }\n /**\n * Automatically set the vertical position of rests based on previous/next note positions.\n * @param tickables an array of Tickables.\n * @param alignAllNotes If `false`, only align rests that are within a group of beamed notes.\n * @param alignTuplets If `false`, ignores tuplets.\n */\n static AlignRestsToNotes(tickables, alignAllNotes, alignTuplets) {\n tickables.forEach((currTickable, index) => {\n if (isStaveNote(currTickable) && currTickable.isRest()) {\n if (currTickable.getTuplet() && !alignTuplets) {\n return;\n }\n // If activated rests not on default can be rendered as specified.\n const position = currTickable.getGlyph().position.toUpperCase();\n if (position !== 'R/4' && position !== 'B/4') {\n return;\n }\n if (alignAllNotes || currTickable.getBeam()) {\n // Align rests with previous/next notes.\n const props = currTickable.getKeyProps()[0];\n if (index === 0) {\n props.line = getRestLineForNextNoteGroup(tickables, props.line, index, false);\n }\n else if (index > 0 && index < tickables.length) {\n // If previous tickable is a rest, use its line number.\n const prevTickable = tickables[index - 1];\n if (isStaveNote(prevTickable)) {\n if (prevTickable.isRest()) {\n props.line = prevTickable.getKeyProps()[0].line;\n }\n else {\n const restLine = prevTickable.getLineForRest();\n // Get the rest line for next valid non-rest note group.\n props.line = getRestLineForNextNoteGroup(tickables, restLine, index, true);\n }\n }\n }\n currTickable.setKeyLine(0, props.line);\n }\n }\n });\n }\n /**\n * Find all the rests in each of the `voices` and align them to neighboring notes.\n *\n * @param voices\n * @param alignAllNotes If `false`, only align rests within beamed groups of notes. If `true`, align all rests.\n */\n alignRests(voices, alignAllNotes) {\n if (!voices || !voices.length) {\n throw new RuntimeError('BadArgument', 'No voices to format rests');\n }\n voices.forEach((voice) => Formatter.AlignRestsToNotes(voice.getTickables(), alignAllNotes));\n }\n /**\n * Estimate the width required to render 'voices'. This is done by:\n * 1. Sum the widths of all the tick contexts\n * 2. Estimate the padding.\n * The latter is done by calculating the padding 3 different ways, and taking the\n * greatest value:\n * 1. the padding required for unaligned notes in different voices\n * 2. the padding based on the stddev of the tickable widths\n * 3. the padding based on the stddev of the tickable durations.\n *\n * The last 2 quantities estimate a 'width entropy', where notes might need more\n * room than the proportional formatting gives them. A measure of all same duration\n * and width will need no extra padding, and all these quantities will be\n * zero in that case.\n *\n * Note: joinVoices has to be called before calling preCalculateMinTotalWidth.\n *\n * @param voices the voices that contain the notes\n * @returns the estimated width in pixels\n */\n preCalculateMinTotalWidth(voices) {\n const unalignedPadding = Tables.currentMusicFont().lookupMetric('stave.unalignedNotePadding');\n // Calculate additional padding based on 3 methods:\n // 1) unaligned beats in voices, 2) variance of width, 3) variance of durations\n let unalignedCtxCount = 0;\n let wsum = 0;\n let dsum = 0;\n const widths = [];\n const durations = [];\n // Cache results.\n if (this.hasMinTotalWidth)\n return this.minTotalWidth;\n // Create tick contexts.\n if (!voices) {\n throw new RuntimeError('BadArgument', \"'voices' required to run preCalculateMinTotalWidth\");\n }\n this.createTickContexts(voices);\n // eslint-disable-next-line\n const { list: contextList, map: contextMap } = this.tickContexts;\n this.minTotalWidth = 0;\n // Go through each tick context and calculate total width,\n // and also accumulate values used in padding hints\n contextList.forEach((tick) => {\n const context = contextMap[tick];\n context.preFormat();\n // If this TC doesn't have all the voices on it, it's unaligned.\n // so increment the unaligned padding accumulator\n if (context.getTickables().length < voices.length) {\n unalignedCtxCount += 1;\n }\n // Calculate the 'width entropy' over all the Tickables.\n context.getTickables().forEach((t) => {\n wsum += t.getMetrics().width;\n dsum += t.getTicks().value();\n widths.push(t.getMetrics().width);\n durations.push(t.getTicks().value());\n });\n const width = context.getWidth();\n this.minTotalWidth += width;\n });\n this.hasMinTotalWidth = true;\n // normalized (0-1) STDDEV of widths/durations gives us padding hints.\n const wavg = wsum > 0 ? wsum / widths.length : 1 / widths.length;\n const wvar = sumArray(widths.map((ll) => Math.pow(ll - wavg, 2)));\n const wpads = Math.pow(wvar / widths.length, 0.5) / wavg;\n const davg = dsum / durations.length;\n const dvar = sumArray(durations.map((ll) => Math.pow(ll - davg, 2)));\n const dpads = Math.pow(dvar / durations.length, 0.5) / davg;\n // Find max of 3 methods pad the width with that\n const padmax = Math.max(dpads, wpads) * contextList.length * unalignedPadding;\n const unalignedPad = unalignedPadding * unalignedCtxCount;\n return this.minTotalWidth + Math.max(unalignedPad, padmax);\n }\n /**\n * Get minimum width required to render all voices. Either `format` or\n * `preCalculateMinTotalWidth` must be called before this method.\n */\n getMinTotalWidth() {\n if (!this.hasMinTotalWidth) {\n throw new RuntimeError('NoMinTotalWidth', \"Call 'preCalculateMinTotalWidth' or 'preFormat' before calling 'getMinTotalWidth'\");\n }\n return this.minTotalWidth;\n }\n /** Calculate the resolution multiplier for `voices`. */\n static getResolutionMultiplier(voices) {\n if (!voices || !voices.length) {\n throw new RuntimeError('BadArgument', 'No voices to format');\n }\n const totalTicks = voices[0].getTotalTicks();\n const resolutionMultiplier = voices.reduce((accumulator, voice) => {\n if (!voice.getTotalTicks().equals(totalTicks)) {\n throw new RuntimeError('TickMismatch', 'Voices should have same total note duration in ticks.');\n }\n if (voice.getMode() === Voice.Mode.STRICT && !voice.isComplete()) {\n throw new RuntimeError('IncompleteVoice', 'Voice does not have enough notes.');\n }\n return Math.max(accumulator, Fraction.LCM(accumulator, voice.getResolutionMultiplier()));\n }, 1);\n return resolutionMultiplier;\n }\n /** Create a `ModifierContext` for each tick in `voices`. */\n createModifierContexts(voices) {\n if (voices.length == 0)\n return;\n const resolutionMultiplier = Formatter.getResolutionMultiplier(voices);\n // Initialize tick maps.\n const tickToContextMap = new Map();\n const contexts = [];\n // For each voice, extract notes and create a context for every\n // new tick that hasn't been seen before.\n voices.forEach((voice) => {\n // Use resolution multiplier as denominator so that no additional expansion\n // of fractional tick values is needed.\n const ticksUsed = new Fraction(0, resolutionMultiplier);\n voice.getTickables().forEach((tickable) => {\n const integerTicks = ticksUsed.numerator;\n let staveTickToContextMap = tickToContextMap.get(tickable.getStave());\n // If we have no tick context for this tick, create one.\n if (!staveTickToContextMap) {\n tickToContextMap.set(tickable.getStave(), {});\n staveTickToContextMap = tickToContextMap.get(tickable.getStave());\n }\n if (!(staveTickToContextMap ? staveTickToContextMap[integerTicks] : undefined)) {\n const newContext = new ModifierContext();\n contexts.push(newContext);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n staveTickToContextMap[integerTicks] = newContext;\n }\n // Add this tickable to the TickContext.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n tickable.addToModifierContext(staveTickToContextMap[integerTicks]);\n ticksUsed.add(tickable.getTicks());\n });\n });\n this.modifierContexts.push({\n map: tickToContextMap,\n array: contexts,\n resolutionMultiplier,\n });\n }\n /**\n * Create a `TickContext` for each tick in `voices`. Also calculate the\n * total number of ticks in voices.\n */\n createTickContexts(voices) {\n const fn = (tickable, context, voiceIndex) => context.addTickable(tickable, voiceIndex);\n const contexts = createContexts(voices, (tick) => new TickContext(tick), fn);\n this.tickContexts = contexts;\n const contextArray = this.tickContexts.array;\n contextArray.forEach((context) => {\n context.tContexts = contextArray;\n });\n return contexts;\n }\n /**\n * Get the AlignmentContexts of TickContexts that were created by createTickContexts.\n * Returns undefined if createTickContexts has not yet been run.\n */\n getTickContexts() {\n return this.tickContexts;\n }\n /**\n * This is the core formatter logic. Format voices and justify them\n * to `justifyWidth` pixels. `renderingContext` is required to justify elements\n * that can't retrieve widths without a canvas. This method sets the `x` positions\n * of all the tickables/notes in the formatter.\n */\n preFormat(justifyWidth = 0, renderingContext, voicesParam, stave) {\n // Initialize context maps.\n const contexts = this.tickContexts;\n if (!contexts) {\n throw new RuntimeError('NoTickContexts', 'preFormat requires TickContexts');\n }\n const { list: contextList, map: contextMap } = contexts;\n // Reset loss history for evaluator.\n this.lossHistory = [];\n // If voices and a stave were provided, set the Stave for each voice\n // and preFormat to apply Y values to the notes;\n if (voicesParam && stave) {\n voicesParam.forEach((voice) => voice.setStave(stave).preFormat());\n }\n // Now distribute the ticks to each tick context, and assign them their\n // own X positions.\n let x = 0;\n let shift = 0;\n this.minTotalWidth = 0;\n let totalTicks = 0;\n // Pass 1: Give each note maximum width requested by context.\n contextList.forEach((tick) => {\n const context = contextMap[tick];\n // Make sure that all tickables in this context have calculated their\n // space requirements.\n context.preFormat();\n const width = context.getWidth();\n this.minTotalWidth += width;\n const maxTicks = context.getMaxTicks().value();\n totalTicks += maxTicks;\n const metrics = context.getMetrics();\n x = x + shift + metrics.totalLeftPx;\n context.setX(x);\n // Calculate shift for the next tick.\n shift = width - metrics.totalLeftPx;\n });\n // Use softmax based on all notes across all staves. (options.globalSoftmax)\n const { globalSoftmax, softmaxFactor, maxIterations } = this.formatterOptions;\n const exp = (tick) => Math.pow(softmaxFactor, (contextMap[tick].getMaxTicks().value() / totalTicks));\n const expTicksUsed = sumArray(contextList.map(exp));\n this.minTotalWidth = x + shift;\n this.hasMinTotalWidth = true;\n // No justification needed. End formatting.\n if (justifyWidth <= 0)\n return this.evaluate();\n // Start justification. Subtract the right extra pixels of the final context because the formatter\n // justifies based on the context's X position, which is the left-most part of the note head.\n const firstContext = contextMap[contextList[0]];\n const lastContext = contextMap[contextList[contextList.length - 1]];\n // Calculate the \"distance error\" between the tick contexts. The expected distance is the spacing proportional to\n // the softmax of the ticks.\n function calculateIdealDistances(adjustedJustifyWidth) {\n const distances = contextList.map((tick, i) => {\n const context = contextMap[tick];\n const voices = context.getTickablesByVoice();\n let backTickable;\n if (i > 0) {\n const prevContext = contextMap[contextList[i - 1]];\n // Go through each tickable and search backwards for another tickable\n // in the same voice. If found, use that duration (ticks) to calculate\n // the expected distance.\n for (let j = i - 1; j >= 0; j--) {\n const backTick = contextMap[contextList[j]];\n const backVoices = backTick.getTickablesByVoice();\n // Look for matching voices between tick contexts.\n const matchingVoices = [];\n Object.keys(voices).forEach((v) => {\n if (backVoices[v]) {\n matchingVoices.push(v);\n }\n });\n if (matchingVoices.length > 0) {\n // Found matching voices, get largest duration\n let maxTicks = 0;\n let maxNegativeShiftPx = Infinity;\n let expectedDistance = 0;\n matchingVoices.forEach((v) => {\n const ticks = backVoices[v].getTicks().value();\n if (ticks > maxTicks) {\n backTickable = backVoices[v];\n maxTicks = ticks;\n }\n // Calculate the limits of the shift based on modifiers, etc.\n const thisTickable = voices[v];\n const insideLeftEdge = thisTickable.getX() -\n (thisTickable.getMetrics().modLeftPx + thisTickable.getMetrics().leftDisplacedHeadPx);\n const backMetrics = backVoices[v].getMetrics();\n const insideRightEdge = backVoices[v].getX() + backMetrics.notePx + backMetrics.modRightPx + backMetrics.rightDisplacedHeadPx;\n // Don't allow shifting if notes in the same voice can collide\n maxNegativeShiftPx = Math.min(maxNegativeShiftPx, insideLeftEdge - insideRightEdge);\n });\n // Don't shift further left than the notehead of the last context. Actually, stay at most 5% to the right\n // so that two different tick contexts don't align across staves.\n maxNegativeShiftPx = Math.min(maxNegativeShiftPx, context.getX() - (prevContext.getX() + adjustedJustifyWidth * 0.05));\n // Calculate the expected distance of the current context from the last matching tickable. The\n // distance is scaled down by the softmax for the voice.\n if (globalSoftmax) {\n const t = totalTicks;\n expectedDistance = (Math.pow(softmaxFactor, (maxTicks / t)) / expTicksUsed) * adjustedJustifyWidth;\n }\n else if (typeof backTickable !== 'undefined') {\n expectedDistance = backTickable.getVoice().softmax(maxTicks) * adjustedJustifyWidth;\n }\n return {\n expectedDistance,\n maxNegativeShiftPx,\n fromTickable: backTickable,\n };\n }\n }\n }\n return { expectedDistance: 0, fromTickablePx: 0, maxNegativeShiftPx: 0 };\n });\n return distances;\n }\n function shiftToIdealDistances(idealDistances) {\n // Distribute ticks to the contexts based on the calculated distance error.\n const centerX = adjustedJustifyWidth / 2;\n let spaceAccum = 0;\n contextList.forEach((tick, index) => {\n const context = contextMap[tick];\n if (index > 0) {\n const contextX = context.getX();\n const ideal = idealDistances[index];\n const errorPx = defined(ideal.fromTickable).getX() + ideal.expectedDistance - (contextX + spaceAccum);\n let negativeShiftPx = 0;\n if (errorPx > 0) {\n spaceAccum += errorPx;\n }\n else if (errorPx < 0) {\n negativeShiftPx = Math.min(ideal.maxNegativeShiftPx, Math.abs(errorPx));\n spaceAccum += -negativeShiftPx;\n }\n context.setX(contextX + spaceAccum);\n }\n // Move center aligned tickables to middle\n context.getCenterAlignedTickables().forEach((tickable) => {\n tickable.setCenterXShift(centerX - context.getX());\n });\n });\n return lastContext.getX() - firstContext.getX();\n }\n const adjustedJustifyWidth = justifyWidth -\n lastContext.getMetrics().notePx -\n lastContext.getMetrics().totalRightPx -\n firstContext.getMetrics().totalLeftPx;\n const musicFont = Tables.currentMusicFont();\n const configMinPadding = musicFont.lookupMetric('stave.endPaddingMin');\n const configMaxPadding = musicFont.lookupMetric('stave.endPaddingMax');\n const leftPadding = musicFont.lookupMetric('stave.padding');\n let targetWidth = adjustedJustifyWidth;\n const distances = calculateIdealDistances(targetWidth);\n let actualWidth = shiftToIdealDistances(distances);\n // Just one context. Done formatting.\n if (contextList.length === 1)\n return 0;\n const calcMinDistance = (targetWidth, distances) => {\n let mdCalc = targetWidth / 2;\n if (distances.length > 1) {\n for (let di = 1; di < distances.length; ++di) {\n mdCalc = Math.min(distances[di].expectedDistance / 2, mdCalc);\n }\n }\n return mdCalc;\n };\n const minDistance = calcMinDistance(targetWidth, distances);\n // right justify to either the configured padding, or the min distance between notes, whichever is greatest.\n // This * 2 keeps the existing formatting unless there is 'a lot' of extra whitespace, which won't break\n // existing visual regression tests.\n const paddingMaxCalc = (curTargetWidth) => {\n let lastTickablePadding = 0;\n const lastTickable = lastContext && lastContext.getMaxTickable();\n if (lastTickable) {\n const voice = lastTickable.getVoice();\n // If the number of actual ticks in the measure <> configured ticks, right-justify\n // because the softmax won't yield the correct value\n if (voice.getTicksUsed().value() > voice.getTotalTicks().value()) {\n return configMaxPadding * 2 < minDistance ? minDistance : configMaxPadding;\n }\n const tickWidth = lastTickable.getWidth();\n lastTickablePadding =\n voice.softmax(lastContext.getMaxTicks().value()) * curTargetWidth - (tickWidth + leftPadding);\n }\n return configMaxPadding * 2 < lastTickablePadding ? lastTickablePadding : configMaxPadding;\n };\n let paddingMax = paddingMaxCalc(targetWidth);\n let paddingMin = paddingMax - (configMaxPadding - configMinPadding);\n const maxX = adjustedJustifyWidth - paddingMin;\n let iterations = maxIterations;\n // Adjust justification width until the right margin is as close as possible to the calculated padding,\n // without going over\n while ((actualWidth > maxX && iterations > 0) || (actualWidth + paddingMax < maxX && iterations > 1)) {\n targetWidth -= actualWidth - maxX;\n paddingMax = paddingMaxCalc(targetWidth);\n paddingMin = paddingMax - (configMaxPadding - configMinPadding);\n actualWidth = shiftToIdealDistances(calculateIdealDistances(targetWidth));\n iterations--;\n }\n this.justifyWidth = justifyWidth;\n return this.evaluate();\n }\n /** Calculate the total cost of this formatting decision. */\n evaluate() {\n const contexts = this.tickContexts;\n const justifyWidth = this.justifyWidth;\n // Calculate available slack per tick context. This works out how much freedom\n // to move a context has in either direction, without affecting other notes.\n this.contextGaps = { total: 0, gaps: [] };\n contexts.list.forEach((tick, index) => {\n if (index === 0)\n return;\n const prevTick = contexts.list[index - 1];\n const prevContext = contexts.map[prevTick];\n const context = contexts.map[tick];\n const prevMetrics = prevContext.getMetrics();\n const currMetrics = context.getMetrics();\n // Calculate X position of right edge of previous note\n const insideRightEdge = prevContext.getX() + prevMetrics.notePx + prevMetrics.totalRightPx;\n // Calculate X position of left edge of current note\n const insideLeftEdge = context.getX() - currMetrics.totalLeftPx;\n const gap = insideLeftEdge - insideRightEdge;\n this.contextGaps.total += gap;\n this.contextGaps.gaps.push({ x1: insideRightEdge, x2: insideLeftEdge });\n // Tell the tick contexts how much they can reposition themselves.\n context.getFormatterMetrics().freedom.left = gap;\n prevContext.getFormatterMetrics().freedom.right = gap;\n });\n // Calculate mean distance in each voice for each duration type, then calculate\n // how far each note is from the mean.\n this.durationStats = {};\n const durationStats = this.durationStats;\n function updateStats(duration, space) {\n const stats = durationStats[duration];\n if (stats === undefined) {\n durationStats[duration] = { mean: space, count: 1 };\n }\n else {\n stats.count += 1;\n stats.mean = (stats.mean + space) / 2;\n }\n }\n this.voices.forEach((voice) => {\n voice.getTickables().forEach((note, i, notes) => {\n const duration = note.getTicks().clone().simplify().toString();\n const metrics = note.getMetrics();\n const formatterMetrics = note.getFormatterMetrics();\n const leftNoteEdge = note.getX() + metrics.notePx + metrics.modRightPx + metrics.rightDisplacedHeadPx;\n let space = 0;\n if (i < notes.length - 1) {\n const rightNote = notes[i + 1];\n const rightMetrics = rightNote.getMetrics();\n const rightNoteEdge = rightNote.getX() - rightMetrics.modLeftPx - rightMetrics.leftDisplacedHeadPx;\n space = rightNoteEdge - leftNoteEdge;\n formatterMetrics.space.used = rightNote.getX() - note.getX();\n rightNote.getFormatterMetrics().freedom.left = space;\n }\n else {\n space = justifyWidth - leftNoteEdge;\n formatterMetrics.space.used = justifyWidth - note.getX();\n }\n formatterMetrics.freedom.right = space;\n updateStats(duration, formatterMetrics.space.used);\n });\n });\n // Calculate how much each note deviates from the mean. Loss function is square\n // root of the sum of squared deviations.\n let totalDeviation = 0;\n this.voices.forEach((voice) => {\n voice.getTickables().forEach((note) => {\n const duration = note.getTicks().clone().simplify().toString();\n const metrics = note.getFormatterMetrics();\n metrics.space.mean = durationStats[duration].mean;\n metrics.duration = duration;\n metrics.iterations += 1;\n metrics.space.deviation = metrics.space.used - metrics.space.mean;\n totalDeviation += Math.pow(metrics.space.deviation, 2);\n });\n });\n this.totalCost = Math.sqrt(totalDeviation);\n this.lossHistory.push(this.totalCost);\n return this.totalCost;\n }\n /**\n * Run a single iteration of rejustification. At a high level, this method calculates\n * the overall \"loss\" (or cost) of this layout, and repositions tickcontexts in an\n * attempt to reduce the cost. You can call this method multiple times until it finds\n * and oscillates around a global minimum.\n * @param options[alpha] the \"learning rate\" for the formatter. It determines how much of a shift\n * the formatter should make based on its cost function.\n */\n tune(options) {\n var _a;\n const contexts = this.tickContexts;\n if (!contexts) {\n return 0;\n }\n const alpha = (_a = options === null || options === void 0 ? void 0 : options.alpha) !== null && _a !== void 0 ? _a : 0.5;\n // Move `current` tickcontext by `shift` pixels, and adjust the freedom\n // on adjacent tickcontexts.\n function move(current, shift, prev, next) {\n current.setX(current.getX() + shift);\n current.getFormatterMetrics().freedom.left += shift;\n current.getFormatterMetrics().freedom.right -= shift;\n if (prev)\n prev.getFormatterMetrics().freedom.right += shift;\n if (next)\n next.getFormatterMetrics().freedom.left -= shift;\n }\n let shift = 0;\n this.totalShift = 0;\n contexts.list.forEach((tick, index, list) => {\n const context = contexts.map[tick];\n const prevContext = index > 0 ? contexts.map[list[index - 1]] : undefined;\n const nextContext = index < list.length - 1 ? contexts.map[list[index + 1]] : undefined;\n move(context, shift, prevContext, nextContext);\n const cost = -sumArray(context.getTickables().map((t) => t.getFormatterMetrics().space.deviation));\n if (cost > 0) {\n shift = -Math.min(context.getFormatterMetrics().freedom.right, Math.abs(cost));\n }\n else if (cost < 0) {\n if (nextContext) {\n shift = Math.min(nextContext.getFormatterMetrics().freedom.right, Math.abs(cost));\n }\n else {\n shift = 0;\n }\n }\n shift *= alpha;\n this.totalShift += shift;\n });\n return this.evaluate();\n }\n /**\n * This is the top-level call for all formatting logic completed\n * after `x` *and* `y` values have been computed for the notes\n * in the voices.\n */\n postFormat() {\n this.modifierContexts.forEach((modifierContexts) => {\n modifierContexts.array.forEach((mc) => mc.postFormat());\n });\n this.tickContexts.list.forEach((tick) => {\n this.tickContexts.map[tick].postFormat();\n });\n return this;\n }\n /**\n * Take all `voices` and create `ModifierContext`s out of them. This tells\n * the formatters that the voices belong on a single stave.\n */\n joinVoices(voices) {\n this.createModifierContexts(voices);\n this.hasMinTotalWidth = false;\n return this;\n }\n /**\n * Align rests in voices, justify the contexts, and position the notes\n * so voices are aligned and ready to render onto the stave. This method\n * mutates the `x` positions of all tickables in `voices`.\n *\n * Voices are full justified to fit in `justifyWidth` pixels.\n *\n * Set `options.context` to the rendering context. Set `options.align_rests`\n * to true to enable rest alignment.\n */\n format(voices, justifyWidth, options) {\n const opts = Object.assign({ align_rests: false }, options);\n this.voices = voices;\n const softmaxFactor = this.formatterOptions.softmaxFactor;\n if (softmaxFactor) {\n this.voices.forEach((v) => v.setSoftmaxFactor(softmaxFactor));\n }\n this.alignRests(voices, opts.align_rests);\n this.createTickContexts(voices);\n this.preFormat(justifyWidth, opts.context, voices, opts.stave);\n // Only postFormat if a stave was supplied for y value formatting\n if (opts.stave)\n this.postFormat();\n return this;\n }\n // This method is just like `format` except that the `justifyWidth` is inferred from the `stave`.\n formatToStave(voices, stave, optionsParam) {\n const options = Object.assign({ context: stave.getContext() }, optionsParam);\n // eslint-disable-next-line\n const justifyWidth = stave.getNoteEndX() - stave.getNoteStartX() - Stave.defaultPadding;\n L('Formatting voices to width: ', justifyWidth);\n return this.format(voices, justifyWidth, options);\n }\n getTickContext(tick) {\n var _a;\n return (_a = this.tickContexts) === null || _a === void 0 ? void 0 : _a.map[tick];\n }\n}\n// To enable logging for this class. Set `Vex.Flow.Formatter.DEBUG` to `true`.\nFormatter.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Author: Joshua Koo / @zz85\n// Author: @incompleteopus\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n/** Fraction represents a rational number. */\nexport class Fraction {\n /** Set the numerator and denominator. */\n constructor(numerator, denominator) {\n this.numerator = 1;\n this.denominator = 1;\n this.set(numerator, denominator);\n }\n static get CATEGORY() {\n return Category.Fraction;\n }\n /**\n * GCD: Greatest common divisor using the Euclidean algorithm.\n * Note: GCD(0, 0) => 0 and GCD(0, n) => n.\n */\n static GCD(a, b) {\n if (typeof a !== 'number' || Number.isNaN(a) || typeof b !== 'number' || Number.isNaN(b)) {\n throw new RuntimeError('BadArgument', `Invalid numbers: ${a}, ${b}`);\n }\n let t;\n while (b !== 0) {\n t = b;\n b = a % b;\n a = t;\n }\n return a;\n }\n /** LCM: Lowest common multiple. */\n static LCM(a, b) {\n return (a * b) / Fraction.GCD(a, b);\n }\n /** Lowest common multiple for more than two numbers. */\n static LCMM(args) {\n if (args.length === 0) {\n return 0;\n }\n else if (args.length === 1) {\n return args[0];\n }\n else if (args.length === 2) {\n return Fraction.LCM(args[0], args[1]);\n }\n else {\n // args.shift() removes the first number.\n // LCM the first number with the rest of the numbers.\n return Fraction.LCM(args.shift(), Fraction.LCMM(args));\n }\n }\n /** Set the numerator and denominator. */\n set(numerator = 1, denominator = 1) {\n this.numerator = numerator;\n this.denominator = denominator;\n return this;\n }\n /** Return the value of the fraction. */\n value() {\n return this.numerator / this.denominator;\n }\n /** Simplify numerator and denominator using GCD. */\n simplify() {\n let u = this.numerator;\n let d = this.denominator;\n const gcd = Fraction.GCD(u, d);\n u /= gcd;\n d /= gcd;\n if (d < 0) {\n d = -d;\n u = -u;\n }\n return this.set(u, d);\n }\n /** Add value of another fraction. */\n add(param1 = 0, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n const lcm = Fraction.LCM(this.denominator, otherDenominator);\n const a = lcm / this.denominator;\n const b = lcm / otherDenominator;\n const u = this.numerator * a + otherNumerator * b;\n return this.set(u, lcm);\n }\n /** Substract value of another fraction. */\n subtract(param1 = 0, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n const lcm = Fraction.LCM(this.denominator, otherDenominator);\n const a = lcm / this.denominator;\n const b = lcm / otherDenominator;\n const u = this.numerator * a - otherNumerator * b;\n return this.set(u, lcm);\n }\n /** Multiply by value of another fraction. */\n multiply(param1 = 1, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n return this.set(this.numerator * otherNumerator, this.denominator * otherDenominator);\n }\n /** Divide by value of another Fraction. */\n divide(param1 = 1, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n return this.set(this.numerator * otherDenominator, this.denominator * otherNumerator);\n }\n /** Simplify both sides and check if they are equal. */\n equals(compare) {\n const a = Fraction.__staticFractionA.copy(compare).simplify();\n const b = Fraction.__staticFractionB.copy(this).simplify();\n return a.numerator === b.numerator && a.denominator === b.denominator;\n }\n /** Greater than operator. */\n greaterThan(compare) {\n const a = Fraction.__staticFractionB.copy(this);\n a.subtract(compare);\n return a.numerator > 0;\n }\n /** Greater than or equals operator. */\n greaterThanEquals(compare) {\n const a = Fraction.__staticFractionB.copy(this);\n a.subtract(compare);\n return a.numerator >= 0;\n }\n /** Less than operator. */\n lessThan(compare) {\n return !this.greaterThanEquals(compare);\n }\n /** Less than or equals operator. */\n lessThanEquals(compare) {\n return !this.greaterThan(compare);\n }\n /** Return a new copy with current values. */\n clone() {\n return new Fraction(this.numerator, this.denominator);\n }\n /** Copy value of another fraction. */\n copy(other) {\n if (typeof other === 'number') {\n return this.set(other, 1);\n }\n else {\n return this.set(other.numerator, other.denominator);\n }\n }\n /** Return the integer component (eg. 5/2 => 2). */\n quotient() {\n return Math.floor(this.numerator / this.denominator);\n }\n /** Return the remainder component (eg. 5/2 => 1). */\n remainder() {\n return this.numerator % this.denominator;\n }\n /** Calculate absolute value. */\n makeAbs() {\n this.denominator = Math.abs(this.denominator);\n this.numerator = Math.abs(this.numerator);\n return this;\n }\n /** Return a raw string representation (eg. \"5/2\"). */\n toString() {\n return `${this.numerator}/${this.denominator}`;\n }\n /** Return a simplified string respresentation. */\n toSimplifiedString() {\n return Fraction.__staticFractionTmp.copy(this).simplify().toString();\n }\n /** Return string representation in mixed form. */\n toMixedString() {\n let s = '';\n const q = this.quotient();\n const f = Fraction.__staticFractionTmp.copy(this);\n if (q < 0) {\n f.makeAbs();\n }\n if (q !== 0) {\n s += q;\n if (f.numerator !== 0) {\n s += ` ${f.toSimplifiedString()}`;\n }\n }\n else if (f.numerator === 0) {\n s = '0';\n }\n else {\n s = f.toSimplifiedString();\n }\n return s;\n }\n /** Parse a fraction string. */\n parse(str) {\n const i = str.split('/');\n const n = parseInt(i[0], 10);\n const d = i[1] ? parseInt(i[1], 10) : 1;\n return this.set(n, d);\n }\n}\n// Cached objects for comparisons.\nFraction.__staticFractionA = new Fraction();\nFraction.__staticFractionB = new Fraction();\nFraction.__staticFractionTmp = new Fraction();\n/** Helper function to extract the numerator and denominator from another fraction. */\nfunction getNumeratorAndDenominator(n, d = 1) {\n if (typeof n === 'number') {\n // Both params are numbers, so we return them as [numerator, denominator].\n return [n, d];\n }\n else {\n // First param is a Fraction object. We ignore the second param.\n return [n.numerator, n.denominator];\n }\n}\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n// Author Larry Kuhns 2013\n// Class to draws string numbers into the notation.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class FretHandFinger extends Modifier {\n constructor(finger) {\n super();\n this.finger = finger;\n this.width = 7;\n this.position = Modifier.Position.LEFT; // Default position above stem or note head\n this.x_shift = 0;\n this.y_shift = 0;\n this.x_offset = 0; // Horizontal offset from default\n this.y_offset = 0; // Vertical offset from default\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.FretHandFinger;\n }\n // Arrange fingerings inside a ModifierContext.\n static format(nums, state) {\n const { left_shift, right_shift } = state;\n const num_spacing = 1;\n if (!nums || nums.length === 0)\n return false;\n const nums_list = [];\n let prev_note = null;\n let shiftLeft = 0;\n let shiftRight = 0;\n for (let i = 0; i < nums.length; ++i) {\n const num = nums[i];\n const note = num.getNote();\n const pos = num.getPosition();\n const index = num.checkIndex();\n const props = note.getKeyProps()[index];\n const textFormatter = TextFormatter.create(num.textFont);\n const textHeight = textFormatter.maxHeight;\n if (num.position === ModifierPosition.ABOVE) {\n state.top_text_line += textHeight / Tables.STAVE_LINE_DISTANCE + 0.5;\n }\n if (num.position === ModifierPosition.BELOW) {\n state.text_line += textHeight / Tables.STAVE_LINE_DISTANCE + 0.5;\n }\n if (note !== prev_note) {\n for (let n = 0; n < note.keys.length; ++n) {\n if (left_shift === 0) {\n shiftLeft = Math.max(note.getLeftDisplacedHeadPx(), shiftLeft);\n }\n if (right_shift === 0) {\n shiftRight = Math.max(note.getRightDisplacedHeadPx(), shiftRight);\n }\n }\n prev_note = note;\n }\n nums_list.push({\n note,\n num,\n pos,\n line: props.line,\n shiftL: shiftLeft,\n shiftR: shiftRight,\n });\n }\n // Sort fingernumbers by line number.\n nums_list.sort((a, b) => b.line - a.line);\n let numShiftL = 0;\n let numShiftR = 0;\n let xWidthL = 0;\n let xWidthR = 0;\n let lastLine = null;\n let lastNote = null;\n for (let i = 0; i < nums_list.length; ++i) {\n let num_shift = 0;\n const { note, pos, num, line, shiftL, shiftR } = nums_list[i];\n // Reset the position of the string number every line.\n if (line !== lastLine || note !== lastNote) {\n numShiftL = left_shift + shiftL;\n numShiftR = right_shift + shiftR;\n }\n const numWidth = num.getWidth() + num_spacing;\n if (pos === Modifier.Position.LEFT) {\n num.setXShift(left_shift + numShiftL);\n num_shift = left_shift + numWidth; // spacing\n xWidthL = num_shift > xWidthL ? num_shift : xWidthL;\n }\n else if (pos === Modifier.Position.RIGHT) {\n num.setXShift(numShiftR);\n num_shift = shiftRight + numWidth; // spacing\n xWidthR = num_shift > xWidthR ? num_shift : xWidthR;\n }\n lastLine = line;\n lastNote = note;\n }\n state.left_shift += xWidthL;\n state.right_shift += xWidthR;\n return true;\n }\n static easyScoreHook({ fingerings } = {}, note, builder) {\n fingerings === null || fingerings === void 0 ? void 0 : fingerings.split(',').map((fingeringString) => {\n const split = fingeringString.trim().split('.');\n const params = { number: split[0] };\n if (split[1])\n params.position = split[1];\n return builder.getFactory().Fingering(params);\n }).map((fingering, index) => note.addModifier(fingering, index));\n }\n setFretHandFinger(finger) {\n this.finger = finger;\n return this;\n }\n getFretHandFinger() {\n return this.finger;\n }\n setOffsetX(x) {\n this.x_offset = x;\n return this;\n }\n setOffsetY(y) {\n this.y_offset = y;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n let dot_x = start.x + this.x_shift + this.x_offset;\n let dot_y = start.y + this.y_shift + this.y_offset + 5;\n switch (this.position) {\n case Modifier.Position.ABOVE:\n dot_x -= 4;\n dot_y -= 12;\n break;\n case Modifier.Position.BELOW:\n dot_x -= 2;\n dot_y += 10;\n break;\n case Modifier.Position.LEFT:\n dot_x -= this.width;\n break;\n case Modifier.Position.RIGHT:\n dot_x += 1;\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} does not exist`);\n }\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText('' + this.finger, dot_x, dot_y);\n ctx.restore();\n }\n}\nFretHandFinger.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 9,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\nimport { StemmableNote } from './stemmablenote';\nimport { Category, isAnnotation } from './typeguard';\nimport { RuntimeError } from './util';\nconst ERROR_MSG = 'Ghost note must have valid initialization data to identify duration.';\nexport class GhostNote extends StemmableNote {\n static get CATEGORY() {\n return Category.GhostNote;\n }\n constructor(parameter) {\n if (!parameter) {\n throw new RuntimeError('BadArguments', ERROR_MSG);\n }\n let noteStruct;\n if (typeof parameter === 'string') {\n // Preserve backwards-compatibility\n noteStruct = { duration: parameter };\n }\n else if (typeof parameter === 'object') {\n noteStruct = parameter;\n }\n else {\n throw new RuntimeError('BadArguments', ERROR_MSG);\n }\n super(noteStruct);\n // Note properties\n this.setWidth(0);\n }\n /**\n * @returns true if this note is a type of rest. Rests don't have pitches, but take up space in the score.\n */\n isRest() {\n return true;\n }\n setStave(stave) {\n super.setStave(stave);\n return this;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n draw() {\n // Draw Annotations\n this.setRendered();\n for (let i = 0; i < this.modifiers.length; ++i) {\n const modifier = this.modifiers[i];\n if (isAnnotation(modifier)) {\n modifier.setContext(this.getContext());\n modifier.drawWithStyle();\n }\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { BoundingBoxComputation } from './boundingboxcomputation';\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var OutlineCode;\n(function (OutlineCode) {\n OutlineCode[OutlineCode[\"MOVE\"] = 0] = \"MOVE\";\n OutlineCode[OutlineCode[\"LINE\"] = 1] = \"LINE\";\n OutlineCode[OutlineCode[\"QUADRATIC\"] = 2] = \"QUADRATIC\";\n OutlineCode[OutlineCode[\"BEZIER\"] = 3] = \"BEZIER\";\n})(OutlineCode || (OutlineCode = {}));\nclass GlyphCacheEntry {\n constructor(fontStack, code, category) {\n this.point = -1;\n this.metrics = Glyph.loadMetrics(fontStack, code, category);\n this.bbox = Glyph.getOutlineBoundingBox(this.metrics.outline, this.metrics.scale, this.metrics.x_shift, this.metrics.y_shift);\n if (category) {\n this.point = Glyph.lookupFontMetric(this.metrics.font, category, code, 'point', -1);\n }\n }\n}\nclass GlyphCache {\n constructor() {\n this.cache = new Map();\n }\n lookup(code, category) {\n let entries = this.cache.get(Glyph.CURRENT_CACHE_KEY);\n if (entries === undefined) {\n entries = {};\n this.cache.set(Glyph.CURRENT_CACHE_KEY, entries);\n }\n const key = category ? `${code}%${category}` : code;\n let entry = entries[key];\n if (entry === undefined) {\n entry = new GlyphCacheEntry(Glyph.MUSIC_FONT_STACK, code, category);\n entries[key] = entry;\n }\n return entry;\n }\n}\nclass GlyphOutline {\n constructor(outline, originX, originY, scale) {\n this.outline = outline;\n this.originX = originX;\n this.originY = originY;\n this.scale = scale;\n this.i = 0;\n this.precision = 1;\n // Automatically assign private properties: this.outline, this.originX, this.originY, and this.scale.\n this.precision = Math.pow(10, Tables.RENDER_PRECISION_PLACES);\n }\n done() {\n return this.i >= this.outline.length;\n }\n next() {\n return Math.round((this.outline[this.i++] * this.precision) / this.precision);\n }\n nextX() {\n return Math.round((this.originX + this.outline[this.i++] * this.scale) * this.precision) / this.precision;\n }\n nextY() {\n return Math.round((this.originY - this.outline[this.i++] * this.scale) * this.precision) / this.precision;\n }\n static parse(str) {\n const result = [];\n const parts = str.split(' ');\n let i = 0;\n while (i < parts.length) {\n switch (parts[i++]) {\n case 'm':\n result.push(OutlineCode.MOVE, parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'l':\n result.push(OutlineCode.LINE, parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'q':\n result.push(OutlineCode.QUADRATIC, parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'b':\n result.push(OutlineCode.BEZIER, parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n }\n }\n return result;\n }\n}\nexport class Glyph extends Element {\n /**\n * @param code\n * @param point\n * @param options\n */\n constructor(code, point, options) {\n super();\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // INSTANCE MEMBERS\n this.bbox = new BoundingBox(0, 0, 0, 0);\n this.topGlyphs = [];\n this.botGlyphs = [];\n this.options = {};\n this.scale = 1;\n this.code = code;\n this.point = point;\n this.originShift = { x: 0, y: 0 };\n this.x_shift = 0;\n this.y_shift = 0;\n if (options) {\n this.setOptions(options);\n }\n else {\n this.reset();\n }\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // STATIC MEMBERS\n static get CATEGORY() {\n return Category.Glyph;\n }\n /**\n * Pass a key of the form `glyphs.{category}.{code}.{key}` to Font.lookupMetric(). If the initial lookup fails,\n * try again with the path `glyphs.{category}.{key}`. If the second lookup fails, return the defaultValue.\n *\n * @param font\n * @param category any metric path under 'glyphs', so 'stem.up' could resolve to glyphs.stem.up.shiftX, glyphs.stem.up.shiftY, etc.\n * @param code\n * @param key\n * @param defaultValue\n */\n static lookupFontMetric(font, category, code, key, defaultValue) {\n let value = font.lookupMetric(`glyphs.${category}.${code}.${key}`, undefined);\n if (value === undefined) {\n // The first lookup failed, so we omit .${code} and try again (with a defaultValue this time).\n value = font.lookupMetric(`glyphs.${category}.${key}`, defaultValue);\n }\n return value;\n }\n static lookupGlyph(fontStack, code) {\n defined(fontStack, 'BadFontStack', 'Font stack is misconfigured');\n let glyph;\n let font;\n for (let i = 0; i < fontStack.length; i++) {\n font = fontStack[i];\n glyph = font.getGlyphs()[code];\n if (glyph)\n return { glyph, font };\n }\n throw new RuntimeError('BadGlyph', `Glyph ${code} does not exist in font.`);\n }\n static loadMetrics(fontStack, code, category) {\n const { glyph, font } = Glyph.lookupGlyph(fontStack, code);\n if (!glyph.o)\n throw new RuntimeError('BadGlyph', `Glyph ${code} has no outline defined.`);\n let x_shift = 0;\n let y_shift = 0;\n let scale = 1;\n if (category && font) {\n x_shift = Glyph.lookupFontMetric(font, category, code, 'shiftX', 0);\n y_shift = Glyph.lookupFontMetric(font, category, code, 'shiftY', 0);\n scale = Glyph.lookupFontMetric(font, category, code, 'scale', 1);\n }\n const x_min = glyph.x_min;\n const x_max = glyph.x_max;\n const ha = glyph.ha;\n if (!glyph.cached_outline) {\n glyph.cached_outline = GlyphOutline.parse(glyph.o);\n }\n return {\n x_min,\n x_max,\n x_shift,\n y_shift,\n scale,\n ha,\n outline: glyph.cached_outline,\n font,\n width: x_max - x_min,\n height: ha,\n };\n }\n /**\n * Renders glyphs from the default font stack.\n *\n * @param ctx Canvas or SVG context\n * @param x_pos x coordinate\n * @param y_pos y coordinate\n * @param point the point size of the font\n * @param code the glyph code in font.getGlyphs()\n * @param options\n * @returns\n */\n static renderGlyph(ctx, x_pos, y_pos, point, code, options) {\n var _a;\n const data = Glyph.cache.lookup(code, options === null || options === void 0 ? void 0 : options.category);\n const metrics = data.metrics;\n if (data.point != -1) {\n point = data.point;\n }\n const customScale = (_a = options === null || options === void 0 ? void 0 : options.scale) !== null && _a !== void 0 ? _a : 1;\n const scale = ((point * 72.0) / (metrics.font.getResolution() * 100.0)) * metrics.scale * customScale;\n Glyph.renderOutline(ctx, metrics.outline, scale, x_pos + metrics.x_shift * customScale, y_pos + metrics.y_shift * customScale);\n return metrics;\n }\n static renderOutline(ctx, outline, scale, x_pos, y_pos) {\n const go = new GlyphOutline(outline, x_pos, y_pos, scale);\n ctx.beginPath();\n let x, y;\n while (!go.done()) {\n switch (go.next()) {\n case OutlineCode.MOVE:\n ctx.moveTo(go.nextX(), go.nextY());\n break;\n case OutlineCode.LINE:\n ctx.lineTo(go.nextX(), go.nextY());\n break;\n case OutlineCode.QUADRATIC:\n x = go.nextX();\n y = go.nextY();\n ctx.quadraticCurveTo(go.nextX(), go.nextY(), x, y);\n break;\n case OutlineCode.BEZIER:\n x = go.nextX();\n y = go.nextY();\n ctx.bezierCurveTo(go.nextX(), go.nextY(), go.nextX(), go.nextY(), x, y);\n break;\n }\n }\n ctx.fill();\n }\n static getOutlineBoundingBox(outline, scale, x_pos, y_pos) {\n const go = new GlyphOutline(outline, x_pos, y_pos, scale);\n const bboxComp = new BoundingBoxComputation();\n // (penX, penY) hold the pen position: the start of each stroke.\n let penX = x_pos;\n let penY = y_pos;\n let x, y;\n while (!go.done()) {\n switch (go.next()) {\n case OutlineCode.MOVE:\n // Note that we don't add any points to the bounding box until a srroke is actually drawn.\n penX = go.nextX();\n penY = go.nextY();\n break;\n case OutlineCode.LINE:\n bboxComp.addPoint(penX, penY);\n penX = go.nextX();\n penY = go.nextY();\n bboxComp.addPoint(penX, penY);\n break;\n case OutlineCode.QUADRATIC:\n x = go.nextX();\n y = go.nextY();\n bboxComp.addQuadraticCurve(penX, penY, go.nextX(), go.nextY(), x, y);\n penX = x;\n penY = y;\n break;\n case OutlineCode.BEZIER:\n x = go.nextX();\n y = go.nextY();\n bboxComp.addBezierCurve(penX, penY, go.nextX(), go.nextY(), go.nextX(), go.nextY(), x, y);\n penX = x;\n penY = y;\n break;\n }\n }\n return new BoundingBox(bboxComp.getX1(), bboxComp.getY1(), bboxComp.width(), bboxComp.height());\n }\n static getWidth(code, point, category) {\n const data = Glyph.cache.lookup(code, category);\n if (data.point != -1) {\n point = data.point;\n }\n const scale = (point * 72) / (data.metrics.font.getResolution() * 100);\n return data.bbox.getW() * scale;\n }\n // eslint-disable-next-line\n draw(...args) {\n // DO NOTHING.\n }\n getCode() {\n return this.code;\n }\n // eslint-disable-next-line\n setOptions(options) {\n this.options = Object.assign(Object.assign({}, this.options), options);\n this.reset();\n }\n setPoint(point) {\n this.point = point;\n return this;\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getXShift() {\n return this.x_shift;\n }\n setXShift(x_shift) {\n this.x_shift = x_shift;\n return this;\n }\n getYshift() {\n return this.y_shift;\n }\n setYShift(y_shift) {\n this.y_shift = y_shift;\n return this;\n }\n reset() {\n const data = Glyph.cache.lookup(this.code, this.options.category);\n this.metrics = data.metrics;\n // Override point from metrics file\n if (data.point != -1) {\n this.point = data.point;\n }\n this.scale = (this.point * 72) / (this.metrics.font.getResolution() * 100);\n this.bbox = new BoundingBox(data.bbox.getX() * this.scale, data.bbox.getY() * this.scale, data.bbox.getW() * this.scale, data.bbox.getH() * this.scale);\n }\n checkMetrics() {\n return defined(this.metrics, 'BadGlyph', `Glyph ${this.code} is not initialized.`);\n }\n getMetrics() {\n const metrics = this.checkMetrics();\n const metricsScale = metrics.scale;\n return {\n x_min: metrics.x_min * this.scale * metricsScale,\n x_max: metrics.x_max * this.scale * metricsScale,\n width: this.bbox.getW(),\n height: this.bbox.getH(),\n scale: this.scale * metricsScale,\n x_shift: metrics.x_shift,\n y_shift: metrics.y_shift,\n outline: metrics.outline,\n font: metrics.font,\n ha: metrics.ha,\n };\n }\n setOriginX(x) {\n const { bbox } = this;\n const originX = Math.abs(bbox.getX() / bbox.getW());\n const xShift = (x - originX) * bbox.getW();\n this.originShift.x = -xShift;\n }\n setOriginY(y) {\n const { bbox } = this;\n const originY = Math.abs(bbox.getY() / bbox.getH());\n const yShift = (y - originY) * bbox.getH();\n this.originShift.y = -yShift;\n }\n setOrigin(x, y) {\n this.setOriginX(x);\n this.setOriginY(y);\n }\n render(ctx, x, y) {\n const metrics = this.checkMetrics();\n const outline = metrics.outline;\n const scale = this.scale * metrics.scale;\n this.setRendered();\n this.applyStyle(ctx);\n const xPos = x + this.originShift.x + metrics.x_shift;\n const yPos = y + this.originShift.y + metrics.y_shift;\n Glyph.renderOutline(ctx, outline, scale, xPos, yPos);\n this.restoreStyle(ctx);\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n renderToStave(x) {\n const context = this.checkContext();\n const metrics = this.checkMetrics();\n const stave = this.checkStave();\n const outline = metrics.outline;\n const scale = this.scale * metrics.scale;\n this.setRendered();\n this.applyStyle();\n const xPos = x + this.x_shift + metrics.x_shift;\n const yPos = stave.getYForGlyphs() + this.y_shift + metrics.y_shift;\n Glyph.renderOutline(context, outline, scale, xPos, yPos);\n this.restoreStyle();\n }\n}\nGlyph.cache = new GlyphCache();\n// The current cache key for GlyphCache above.\n// Computed when Flow.setMusicFont(...) is called.\n// It is set to a comma separated list of font names.\nGlyph.CURRENT_CACHE_KEY = '';\n// Used by the GlyphCache above.\n// Set when Flow.setMusicFont(...) is called.\nGlyph.MUSIC_FONT_STACK = [];\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Note } from './note';\nimport { Category } from './typeguard';\nexport class GlyphNote extends Note {\n constructor(glyph, noteStruct, options) {\n super(noteStruct);\n this.options = Object.assign({ ignoreTicks: false, line: 2 }, options);\n // Note properties\n this.ignore_ticks = this.options.ignoreTicks;\n if (glyph) {\n this.setGlyph(glyph);\n }\n }\n static get CATEGORY() {\n return Category.GlyphNote;\n }\n setGlyph(glyph) {\n this.glyph = glyph;\n this.setWidth(this.glyph.getMetrics().width);\n return this;\n }\n getBoundingBox() {\n return this.glyph.getBoundingBox();\n }\n preFormat() {\n if (!this.preFormatted && this.modifierContext) {\n this.modifierContext.preFormat();\n }\n this.preFormatted = true;\n return this;\n }\n drawModifiers() {\n const ctx = this.checkContext();\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n modifier.setContext(ctx);\n modifier.drawWithStyle();\n }\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('glyphNote', this.getAttribute('id'));\n // Context is set when setStave is called on Note\n const glyph = this.glyph;\n if (!glyph.getContext()) {\n glyph.setContext(ctx);\n }\n glyph.setStave(stave);\n glyph.setYShift(stave.getYForLine(this.options.line) - stave.getYForGlyphs());\n const x = this.isCenterAligned() ? this.getAbsoluteX() - this.getWidth() / 2 : this.getAbsoluteX();\n glyph.renderToStave(x);\n this.drawModifiers();\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { StaveNote } from './stavenote';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class GraceNote extends StaveNote {\n constructor(noteStruct) {\n super(Object.assign({ glyph_font_scale: Tables.NOTATION_FONT_SCALE * GraceNote.SCALE, stroke_px: GraceNote.LEDGER_LINE_OFFSET }, noteStruct));\n this.slash = noteStruct.slash || false;\n this.slur = true;\n this.buildNoteHeads();\n this.width = 3;\n }\n static get CATEGORY() {\n return Category.GraceNote;\n }\n static get LEDGER_LINE_OFFSET() {\n return 2;\n }\n static get SCALE() {\n return 0.66;\n }\n getStemExtension() {\n if (this.stem_extension_override) {\n return this.stem_extension_override;\n }\n const glyph = this.getGlyph();\n if (glyph) {\n let ret = super.getStemExtension();\n if (glyph.stem) {\n const staveNoteScale = this.getStaveNoteScale();\n ret = (Stem.HEIGHT + ret) * staveNoteScale - Stem.HEIGHT;\n }\n return ret;\n }\n return 0;\n }\n getStaveNoteScale() {\n return this.render_options.glyph_font_scale / Tables.NOTATION_FONT_SCALE;\n }\n draw() {\n super.draw();\n this.setRendered();\n const stem = this.stem;\n if (this.slash && stem) {\n const staveNoteScale = this.getStaveNoteScale();\n // some magic numbers are based on the staveNoteScale 0.66.\n const offsetScale = staveNoteScale / 0.66;\n let slashBBox = undefined;\n const beam = this.beam;\n if (beam) {\n // FIXME: should render slash after beam?\n if (!beam.postFormatted) {\n beam.postFormat();\n }\n slashBBox = this.calcBeamedNotesSlashBBox(8 * offsetScale, 8 * offsetScale, {\n stem: 6 * offsetScale,\n beam: 5 * offsetScale,\n });\n }\n else {\n const stem_direction = this.getStemDirection();\n const noteHeadBounds = this.getNoteHeadBounds();\n const noteStemHeight = stem.getHeight();\n let x = this.getAbsoluteX();\n let y = stem_direction === Stem.DOWN\n ? noteHeadBounds.y_top - noteStemHeight\n : noteHeadBounds.y_bottom - noteStemHeight;\n const defaultStemExtention = stem_direction === Stem.DOWN ? this.glyph.stem_down_extension : this.glyph.stem_up_extension;\n let defaultOffsetY = Tables.STEM_HEIGHT;\n defaultOffsetY -= defaultOffsetY / 2.8;\n defaultOffsetY += defaultStemExtention;\n y += defaultOffsetY * staveNoteScale * stem_direction;\n const offsets = stem_direction === Stem.UP\n ? {\n x1: 1,\n y1: 0,\n x2: 13,\n y2: -9,\n }\n : {\n x1: -4,\n y1: 1,\n x2: 13,\n y2: 9,\n };\n x += offsets.x1 * offsetScale;\n y += offsets.y1 * offsetScale;\n slashBBox = {\n x1: x,\n y1: y,\n x2: x + offsets.x2 * offsetScale,\n y2: y + offsets.y2 * offsetScale,\n };\n }\n // FIXME: avoid staff lines, ledger lines or others.\n const ctx = this.checkContext();\n ctx.save();\n ctx.setLineWidth(1 * offsetScale); // FIXME: use more appropriate value.\n ctx.beginPath();\n ctx.moveTo(slashBBox.x1, slashBBox.y1);\n ctx.lineTo(slashBBox.x2, slashBBox.y2);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n }\n }\n calcBeamedNotesSlashBBox(slashStemOffset, slashBeamOffset, protrusions) {\n const beam = this.beam;\n if (!beam)\n throw new RuntimeError('NoBeam', \"Can't calculate without a beam.\");\n const beam_slope = beam.slope;\n const isBeamEndNote = beam.notes[beam.notes.length - 1] === this;\n const scaleX = isBeamEndNote ? -1 : 1;\n const beam_angle = Math.atan(beam_slope * scaleX);\n // slash line intersecting point on beam.\n const iPointOnBeam = {\n dx: Math.cos(beam_angle) * slashBeamOffset,\n dy: Math.sin(beam_angle) * slashBeamOffset,\n };\n slashStemOffset *= this.getStemDirection();\n const slash_angle = Math.atan((iPointOnBeam.dy - slashStemOffset) / iPointOnBeam.dx);\n const protrusion_stem_dx = Math.cos(slash_angle) * protrusions.stem * scaleX;\n const protrusion_stem_dy = Math.sin(slash_angle) * protrusions.stem;\n const protrusion_beam_dx = Math.cos(slash_angle) * protrusions.beam * scaleX;\n const protrusion_beam_dy = Math.sin(slash_angle) * protrusions.beam;\n const stemX = this.getStemX();\n const stem0X = beam.notes[0].getStemX();\n const stemY = beam.getBeamYToDraw() + (stemX - stem0X) * beam_slope;\n const ret = {\n x1: stemX - protrusion_stem_dx,\n y1: stemY + slashStemOffset - protrusion_stem_dy,\n x2: stemX + iPointOnBeam.dx * scaleX + protrusion_beam_dx,\n y2: stemY + iPointOnBeam.dy + protrusion_beam_dy,\n };\n return ret;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This file implements `GraceNoteGroup` which is used to format and\n// render grace notes.\nimport { Beam } from './beam';\nimport { Formatter } from './formatter';\nimport { Modifier } from './modifier';\nimport { StaveNote } from './stavenote';\nimport { StaveTie } from './stavetie';\nimport { Tables } from './tables';\nimport { TabTie } from './tabtie';\nimport { Category, isStaveNote } from './typeguard';\nimport { log } from './util';\nimport { Voice } from './voice';\n// To enable logging for this class. Set `GraceNoteGroup.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (GraceNoteGroup.DEBUG)\n log('Vex.Flow.GraceNoteGroup', args);\n}\n/** GraceNoteGroup is used to format and render grace notes. */\nexport class GraceNoteGroup extends Modifier {\n //** `GraceNoteGroup` inherits from `Modifier` and is placed inside a `ModifierContext`. */\n constructor(grace_notes, show_slur) {\n super();\n this.preFormatted = false;\n this.position = Modifier.Position.LEFT;\n this.grace_notes = grace_notes;\n this.width = 0;\n this.show_slur = show_slur;\n this.slur = undefined;\n this.voice = new Voice({\n num_beats: 4,\n beat_value: 4,\n resolution: Tables.RESOLUTION,\n }).setStrict(false);\n this.render_options = {\n slur_y_shift: 0,\n };\n this.beams = [];\n this.voice.addTickables(this.grace_notes);\n return this;\n }\n static get CATEGORY() {\n return Category.GraceNoteGroup;\n }\n /** Arranges groups inside a `ModifierContext`. */\n static format(gracenote_groups, state) {\n const group_spacing_stave = 4;\n const group_spacing_tab = 0;\n if (!gracenote_groups || gracenote_groups.length === 0)\n return false;\n const group_list = [];\n let prev_note = null;\n let shiftL = 0;\n for (let i = 0; i < gracenote_groups.length; ++i) {\n const gracenote_group = gracenote_groups[i];\n const note = gracenote_group.getNote();\n const is_stavenote = isStaveNote(note);\n const spacing = is_stavenote ? group_spacing_stave : group_spacing_tab;\n if (is_stavenote && note !== prev_note) {\n // Iterate through all notes to get the displaced pixels\n for (let n = 0; n < note.keys.length; ++n) {\n shiftL = Math.max(note.getLeftDisplacedHeadPx(), shiftL);\n }\n prev_note = note;\n }\n group_list.push({ shift: shiftL, gracenote_group, spacing });\n }\n // If first note left shift in case it is displaced\n let group_shift = group_list[0].shift;\n let formatWidth;\n for (let i = 0; i < group_list.length; ++i) {\n const gracenote_group = group_list[i].gracenote_group;\n gracenote_group.preFormat();\n formatWidth = gracenote_group.getWidth() + group_list[i].spacing;\n group_shift = Math.max(formatWidth, group_shift);\n }\n for (let i = 0; i < group_list.length; ++i) {\n const gracenote_group = group_list[i].gracenote_group;\n formatWidth = gracenote_group.getWidth() + group_list[i].spacing;\n gracenote_group.setSpacingFromNextModifier(group_shift - Math.min(formatWidth, group_shift) + StaveNote.minNoteheadPadding);\n }\n state.left_shift += group_shift;\n return true;\n }\n preFormat() {\n if (this.preFormatted)\n return;\n if (!this.formatter) {\n this.formatter = new Formatter();\n }\n this.formatter.joinVoices([this.voice]).format([this.voice], 0, {});\n this.setWidth(this.formatter.getMinTotalWidth());\n this.preFormatted = true;\n }\n beamNotes(grace_notes) {\n grace_notes = grace_notes || this.grace_notes;\n if (grace_notes.length > 1) {\n const beam = new Beam(grace_notes);\n beam.render_options.beam_width = 3;\n beam.render_options.partial_beam_length = 4;\n this.beams.push(beam);\n }\n return this;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getWidth() {\n return this.width + StaveNote.minNoteheadPadding;\n }\n getGraceNotes() {\n return this.grace_notes;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n L('Drawing grace note group for:', note);\n this.alignSubNotesWithNote(this.getGraceNotes(), note); // Modifier function\n // Draw grace notes.\n this.grace_notes.forEach((graceNote) => graceNote.setContext(ctx).draw());\n // Draw beams.\n this.beams.forEach((beam) => beam.setContext(ctx).draw());\n if (this.show_slur) {\n // Create and draw slur.\n const is_stavenote = isStaveNote(note);\n const TieClass = is_stavenote ? StaveTie : TabTie;\n this.slur = new TieClass({\n last_note: this.grace_notes[0],\n first_note: note,\n first_indices: [0],\n last_indices: [0],\n });\n this.slur.render_options.cp2 = 12;\n this.slur.render_options.y_shift = (is_stavenote ? 7 : 5) + this.render_options.slur_y_shift;\n this.slur.setContext(ctx).draw();\n }\n }\n}\nGraceNoteGroup.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Balazs Forian-Szabo\n//\n// ## Description\n//\n// A basic implementation of grace notes\n// to be rendered on a tab stave.\n//\n// See `tests/gracetabnote_tests.ts` for usage examples.\nimport { Font } from './font';\nimport { TabNote } from './tabnote';\nimport { Category } from './typeguard';\nexport class GraceTabNote extends TabNote {\n static get CATEGORY() {\n return Category.GraceTabNote;\n }\n constructor(noteStruct) {\n super(noteStruct, false);\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // vertical shift from stave line\n y_shift: 0.3, \n // grace glyph scale\n scale: 0.6, \n // grace tablature font\n font: `7.5pt ${Font.SANS_SERIF}` });\n this.updateWidth();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nexport * from './accidental';\nexport * from './annotation';\nexport * from './articulation';\nexport * from './barnote';\nexport * from './beam';\nexport * from './bend';\nexport * from './boundingbox';\nexport * from './boundingboxcomputation';\nexport * from './canvascontext';\nexport * from './chordsymbol';\nexport * from './clef';\nexport * from './clefnote';\nexport * from './crescendo';\nexport * from './curve';\nexport * from './dot';\nexport * from './easyscore';\nexport * from './element';\nexport * from './factory';\nexport * from './flow';\nexport * from './font';\n// Do not export './fonts/*' because they are used by the entry/* files.\nexport * from './formatter';\nexport * from './fraction';\nexport * from './frethandfinger';\nexport * from './ghostnote';\nexport * from './glyph';\nexport * from './glyphnote';\nexport * from './gracenote';\nexport * from './gracenotegroup';\nexport * from './gracetabnote';\nexport * from './keymanager';\nexport * from './keysignature';\nexport * from './keysignote';\nexport * from './modifier';\nexport * from './modifiercontext';\nexport * from './multimeasurerest';\nexport * from './music';\nexport * from './note';\nexport * from './notehead';\nexport * from './notesubgroup';\nexport * from './ornament';\nexport * from './parenthesis';\nexport * from './parser';\nexport * from './pedalmarking';\nexport * from './registry';\nexport * from './rendercontext';\nexport * from './renderer';\nexport * from './repeatnote';\nexport * from './stave';\nexport * from './stavebarline';\nexport * from './staveconnector';\nexport * from './stavehairpin';\nexport * from './staveline';\nexport * from './stavemodifier';\nexport * from './stavenote';\nexport * from './staverepetition';\nexport * from './stavesection';\nexport * from './stavetempo';\nexport * from './stavetext';\nexport * from './stavetie';\nexport * from './stavevolta';\nexport * from './stem';\nexport * from './stemmablenote';\nexport * from './stringnumber';\nexport * from './strokes';\nexport * from './svgcontext';\nexport * from './system';\n// Do not export './tables' because it is internal. Its public API is accessible via Vex.Flow.*.\nexport * from './tabnote';\nexport * from './tabslide';\nexport * from './tabstave';\nexport * from './tabtie';\nexport * from './textbracket';\nexport * from './textdynamics';\nexport * from './textformatter';\nexport * from './textnote';\nexport * from './tickable';\nexport * from './tickcontext';\nexport * from './timesigglyph';\nexport * from './timesignature';\nexport * from './timesignote';\nexport * from './tremolo';\nexport * from './tuning';\nexport * from './tuplet';\nexport * from './typeguard';\nexport * from './util';\n// Do not export './version'. It is accessible via Vex.Flow.BUILD.\nexport * from './vex';\nexport * from './vibrato';\nexport * from './vibratobracket';\nexport * from './voice';\nexport * from './web';\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This class implements diatonic key management.\nimport { Music } from './music';\nimport { RuntimeError } from './util';\nexport class KeyManager {\n constructor(key) {\n this.music = new Music();\n this.setKey(key);\n }\n setKey(key) {\n this.key = key;\n this.reset();\n return this;\n }\n getKey() {\n return this.key;\n }\n reset() {\n this.keyParts = this.music.getKeyParts(this.key);\n this.keyString = this.keyParts.root;\n if (this.keyParts.accidental)\n this.keyString += this.keyParts.accidental;\n const is_supported_type = Music.scaleTypes[this.keyParts.type];\n if (!is_supported_type) {\n throw new RuntimeError('BadArguments', `Unsupported key type: ${this.key}`);\n }\n this.scale = this.music.getScaleTones(this.music.getNoteValue(this.keyString), Music.scaleTypes[this.keyParts.type]);\n this.scaleMap = {};\n this.scaleMapByValue = {};\n this.originalScaleMapByValue = {};\n const noteLocation = Music.root_indices[this.keyParts.root];\n for (let i = 0; i < Music.roots.length; ++i) {\n const index = (noteLocation + i) % Music.roots.length;\n const rootName = Music.roots[index];\n const noteName = this.music.getRelativeNoteName(rootName, this.scale[i]);\n this.scaleMap[rootName] = noteName;\n this.scaleMapByValue[this.scale[i]] = noteName;\n this.originalScaleMapByValue[this.scale[i]] = noteName;\n }\n return this;\n }\n getAccidental(key) {\n const root = this.music.getKeyParts(key).root;\n const parts = this.music.getNoteParts(this.scaleMap[root]);\n return {\n note: this.scaleMap[root],\n accidental: parts.accidental,\n };\n }\n selectNote(note) {\n note = note.toLowerCase();\n const parts = this.music.getNoteParts(note);\n // First look for matching note in our altered scale\n const scaleNote = this.scaleMap[parts.root];\n const modparts = this.music.getNoteParts(scaleNote);\n if (scaleNote === note) {\n return {\n note: scaleNote,\n accidental: parts.accidental,\n change: false,\n };\n }\n // Then search for a note of equivalent value in our altered scale\n const valueNote = this.scaleMapByValue[this.music.getNoteValue(note)];\n if (valueNote != null) {\n return {\n note: valueNote,\n accidental: this.music.getNoteParts(valueNote).accidental,\n change: false,\n };\n }\n // Then search for a note of equivalent value in the original scale\n const originalValueNote = this.originalScaleMapByValue[this.music.getNoteValue(note)];\n if (originalValueNote != null) {\n this.scaleMap[modparts.root] = originalValueNote;\n delete this.scaleMapByValue[this.music.getNoteValue(scaleNote)];\n this.scaleMapByValue[this.music.getNoteValue(note)] = originalValueNote;\n return {\n note: originalValueNote,\n accidental: this.music.getNoteParts(originalValueNote).accidental,\n change: true,\n };\n }\n // Then try to unmodify a currently modified note.\n if (modparts.root === note) {\n delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])];\n this.scaleMapByValue[this.music.getNoteValue(modparts.root)] = modparts.root;\n this.scaleMap[modparts.root] = modparts.root;\n return {\n note: modparts.root,\n accidental: undefined,\n change: true,\n };\n }\n // Last resort -- shitshoot\n delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])];\n this.scaleMapByValue[this.music.getNoteValue(note)] = note;\n delete this.scaleMap[modparts.root];\n this.scaleMap[modparts.root] = note;\n return {\n note,\n accidental: parts.accidental,\n change: true,\n };\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n//\n// ## Description\n//\n// This file implements key signatures. A key signature sits on a stave\n// and indicates the notes with implicit accidentals.\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined } from './util';\nexport class KeySignature extends StaveModifier {\n // Create a new Key Signature based on a `key_spec`\n constructor(keySpec, cancelKeySpec, alterKeySpec) {\n super();\n this.accList = [];\n this.setKeySig(keySpec, cancelKeySpec, alterKeySpec);\n this.setPosition(StaveModifierPosition.BEGIN);\n this.glyphFontScale = 38; // TODO(0xFE): Should this match StaveNote?\n this.glyphs = [];\n this.xPositions = []; // relative to this.x\n this.paddingForced = false;\n }\n static get CATEGORY() {\n return Category.KeySignature;\n }\n // Add an accidental glyph to the `KeySignature` instance which represents\n // the provided `acc`. If `nextAcc` is also provided, the appropriate\n // spacing will be included in the glyph's position\n convertToGlyph(acc, nextAcc) {\n const accGlyphData = Tables.accidentalCodes(acc.type);\n const glyph = new Glyph(accGlyphData.code, this.glyphFontScale);\n // Determine spacing between current accidental and the next accidental\n let extraWidth = 1;\n if (acc.type === 'n' && nextAcc) {\n const spacing = KeySignature.accidentalSpacing[nextAcc.type];\n if (spacing) {\n const isAbove = nextAcc.line >= acc.line;\n extraWidth = isAbove ? spacing.above : spacing.below;\n }\n }\n // Place the glyph on the stave\n this.placeGlyphOnLine(glyph, this.checkStave(), acc.line);\n this.glyphs.push(glyph);\n const xPosition = this.xPositions[this.xPositions.length - 1];\n const glyphWidth = glyph.getMetrics().width + extraWidth;\n // Store the next accidental's x position\n this.xPositions.push(xPosition + glyphWidth);\n // Expand size of key signature\n this.width += glyphWidth;\n }\n // Cancel out a key signature provided in the `spec` parameter. This will\n // place appropriate natural accidentals before the key signature.\n cancelKey(spec) {\n this.formatted = false;\n this.cancelKeySpec = spec;\n return this;\n }\n convertToCancelAccList(spec) {\n // Get the accidental list for the cancelled key signature\n const cancel_accList = Tables.keySignature(spec);\n // If the cancelled key has a different accidental type, ie: # vs b\n const different_types = this.accList.length > 0 && cancel_accList.length > 0 && cancel_accList[0].type !== this.accList[0].type;\n // Determine how many naturals needed to add\n const naturals = different_types ? cancel_accList.length : cancel_accList.length - this.accList.length;\n // Return if no naturals needed\n if (naturals < 1)\n return undefined;\n // Get the line position for each natural\n const cancelled = [];\n for (let i = 0; i < naturals; i++) {\n let index = i;\n if (!different_types) {\n index = cancel_accList.length - naturals + i;\n }\n const acc = cancel_accList[index];\n cancelled.push({ type: 'n', line: acc.line });\n }\n // Combine naturals with main accidental list for the key signature\n this.accList = cancelled.concat(this.accList);\n return {\n accList: cancelled,\n type: cancel_accList[0].type,\n };\n }\n // Deprecated\n addToStave(stave) {\n this.paddingForced = true;\n stave.addModifier(this);\n return this;\n }\n // Apply the accidental staff line placement based on the `clef` and\n // the accidental `type` for the key signature ('# or 'b').\n convertAccLines(clef, type, accList = this.accList) {\n let offset = 0.0; // if clef === \"treble\"\n let customLines; // when clef doesn't follow treble key sig shape\n switch (clef) {\n // Treble & Subbass both have offsets of 0, so are not included.\n case 'soprano':\n if (type === '#')\n customLines = [2.5, 0.5, 2, 0, 1.5, -0.5, 1];\n else\n offset = -1;\n break;\n case 'mezzo-soprano':\n if (type === 'b')\n customLines = [0, 2, 0.5, 2.5, 1, 3, 1.5];\n else\n offset = 1.5;\n break;\n case 'alto':\n offset = 0.5;\n break;\n case 'tenor':\n if (type === '#')\n customLines = [3, 1, 2.5, 0.5, 2, 0, 1.5];\n else\n offset = -0.5;\n break;\n case 'baritone-f':\n case 'baritone-c':\n if (type === 'b')\n customLines = [0.5, 2.5, 1, 3, 1.5, 3.5, 2];\n else\n offset = 2;\n break;\n case 'bass':\n case 'french':\n offset = 1;\n break;\n default:\n break;\n }\n // If there's a special case, assign those lines/spaces:\n let i;\n if (typeof customLines !== 'undefined') {\n for (i = 0; i < accList.length; ++i) {\n accList[i].line = customLines[i];\n }\n }\n else if (offset !== 0) {\n for (i = 0; i < accList.length; ++i) {\n accList[i].line += offset;\n }\n }\n }\n getPadding(index) {\n if (!this.formatted)\n this.format();\n return this.glyphs.length === 0 || (!this.paddingForced && index < 2) ? 0 : this.padding;\n }\n getWidth() {\n if (!this.formatted)\n this.format();\n return this.width;\n }\n setKeySig(keySpec, cancelKeySpec, alterKeySpec) {\n this.formatted = false;\n this.keySpec = keySpec;\n this.cancelKeySpec = cancelKeySpec;\n this.alterKeySpec = alterKeySpec;\n return this;\n }\n // Alter the accidentals of a key spec one by one.\n // Each alteration is a new accidental that replaces the\n // original accidental (or the canceled one).\n alterKey(alterKeySpec) {\n this.formatted = false;\n this.alterKeySpec = alterKeySpec;\n return this;\n }\n convertToAlterAccList(alterKeySpec) {\n const max = Math.min(alterKeySpec.length, this.accList.length);\n for (let i = 0; i < max; ++i) {\n if (alterKeySpec[i]) {\n this.accList[i].type = alterKeySpec[i];\n }\n }\n }\n format() {\n const stave = this.checkStave();\n this.width = 0;\n this.glyphs = [];\n this.xPositions = [0]; // initialize with initial x position\n this.accList = Tables.keySignature(defined(this.keySpec));\n const accList = this.accList;\n const firstAccidentalType = accList.length > 0 ? accList[0].type : undefined;\n let cancelAccList;\n if (this.cancelKeySpec) {\n cancelAccList = this.convertToCancelAccList(this.cancelKeySpec);\n }\n if (this.alterKeySpec) {\n this.convertToAlterAccList(this.alterKeySpec);\n }\n if (this.accList.length > 0) {\n const clef = (this.position === StaveModifierPosition.END ? stave.getEndClef() : stave.getClef()) || stave.getClef();\n if (cancelAccList) {\n this.convertAccLines(clef, cancelAccList.type, cancelAccList.accList);\n }\n this.convertAccLines(clef, firstAccidentalType, accList);\n for (let i = 0; i < this.accList.length; ++i) {\n this.convertToGlyph(this.accList[i], this.accList[i + 1]);\n }\n }\n this.formatted = true;\n }\n /**\n * Return the Glyph objects making up this KeySignature.\n */\n getGlyphs() {\n if (!this.formatted)\n this.format();\n return this.glyphs;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n if (!this.formatted)\n this.format();\n this.setRendered();\n ctx.openGroup('keysignature', this.getAttribute('id'));\n for (let i = 0; i < this.glyphs.length; i++) {\n const glyph = this.glyphs[i];\n const x = this.x + this.xPositions[i];\n glyph.setStave(stave);\n glyph.setContext(ctx);\n glyph.renderToStave(x);\n }\n ctx.closeGroup();\n }\n}\n// Space between natural and following accidental depending\n// on vertical position\nKeySignature.accidentalSpacing = {\n '#': {\n above: 6,\n below: 4,\n },\n b: {\n above: 4,\n below: 7,\n },\n n: {\n above: 4,\n below: 1,\n },\n '##': {\n above: 6,\n below: 4,\n },\n bb: {\n above: 4,\n below: 7,\n },\n db: {\n above: 4,\n below: 7,\n },\n d: {\n above: 4,\n below: 7,\n },\n bbs: {\n above: 4,\n below: 7,\n },\n '++': {\n above: 6,\n below: 4,\n },\n '+': {\n above: 6,\n below: 4,\n },\n '+-': {\n above: 6,\n below: 4,\n },\n '++-': {\n above: 6,\n below: 4,\n },\n bs: {\n above: 4,\n below: 10,\n },\n bss: {\n above: 4,\n below: 10,\n },\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Mark Meeus 2019\nimport { KeySignature } from './keysignature';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nexport class KeySigNote extends Note {\n constructor(keySpec, cancelKeySpec, alterKeySpec) {\n super({ duration: 'b' });\n this.keySignature = new KeySignature(keySpec, cancelKeySpec, alterKeySpec);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.KeySigNote;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n this.keySignature.setStave(this.checkStave());\n this.setWidth(this.keySignature.getWidth());\n return this;\n }\n draw() {\n const ctx = this.checkStave().checkContext();\n this.setRendered();\n this.keySignature.setX(this.getAbsoluteX());\n this.keySignature.setContext(ctx);\n this.keySignature.draw();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var ModifierPosition;\n(function (ModifierPosition) {\n ModifierPosition[ModifierPosition[\"CENTER\"] = 0] = \"CENTER\";\n ModifierPosition[ModifierPosition[\"LEFT\"] = 1] = \"LEFT\";\n ModifierPosition[ModifierPosition[\"RIGHT\"] = 2] = \"RIGHT\";\n ModifierPosition[ModifierPosition[\"ABOVE\"] = 3] = \"ABOVE\";\n ModifierPosition[ModifierPosition[\"BELOW\"] = 4] = \"BELOW\";\n})(ModifierPosition || (ModifierPosition = {}));\n// To enable logging for this class. Set `Vex.Flow.Modifier.DEBUG` to `true`.\n// function L(...args) { if (Modifier.DEBUG) log('Vex.Flow.Modifier', args); }\n/**\n * `Modifier` is an abstract interface for notational elements that modify\n * a `Note`. Examples of modifiers are `Accidental`, `Annotation`, `Stroke`, etc.\n *\n * For a `Modifier` instance to be positioned correctly, it must be part of\n * a `ModifierContext`. All modifiers in the same context are rendered relative to\n * one another.\n *\n * Typically, all modifiers to a note are part of the same `ModifierContext` instance. Also,\n * in multi-voice staves, all modifiers to notes on the same `tick` are part of the same\n * `ModifierContext`. This ensures that multiple voices don't trample all over each other.\n */\nexport class Modifier extends Element {\n constructor() {\n super();\n this.width = 0;\n // The `text_line` is reserved space above or below a stave.\n this.text_line = 0;\n this.position = Modifier.Position.LEFT;\n this.x_shift = 0;\n this.y_shift = 0;\n this.spacingFromNextModifier = 0;\n }\n /**\n * Modifiers category string. Every modifier has a different category.\n * The `ModifierContext` uses this to determine the type and order of the modifiers.\n */\n static get CATEGORY() {\n return Category.Modifier;\n }\n /** Modifiers can be positioned almost anywhere, relative to a note. */\n static get Position() {\n return ModifierPosition;\n }\n static get PositionString() {\n return {\n center: ModifierPosition.CENTER,\n above: ModifierPosition.ABOVE,\n below: ModifierPosition.BELOW,\n left: ModifierPosition.LEFT,\n right: ModifierPosition.RIGHT,\n };\n }\n /** Called when position changes. */\n reset() {\n // DO NOTHING.\n }\n /** Get modifier widths. */\n getWidth() {\n return this.width;\n }\n /** Set modifier widths. */\n setWidth(width) {\n this.width = width;\n return this;\n }\n /** Get attached note (`StaveNote`, `TabNote`, etc.) */\n getNote() {\n return defined(this.note, 'NoNote', 'Modifier has no note.');\n }\n /**\n * Used in draw() to check and get the attached note (`StaveNote`, `TabNote`, etc.).\n * Also verifies that the index is valid.\n */\n checkAttachedNote() {\n const category = this.getCategory();\n defined(this.index, 'NoIndex', `Can't draw ${category} without an index.`);\n return defined(this.note, 'NoNote', `Can't draw ${category} without a note.`);\n }\n /**\n * Set attached note.\n * @param note (`StaveNote`, `TabNote`, etc.)\n */\n setNote(note) {\n this.note = note;\n return this;\n }\n /** Get note index, which is a specific note in a chord. */\n getIndex() {\n return this.index;\n }\n /** Check and get note index, which is a specific note in a chord. */\n checkIndex() {\n return defined(this.index, 'NoIndex', 'Modifier has an invalid index.');\n }\n /** Set note index, which is a specific note in a chord. */\n setIndex(index) {\n this.index = index;\n return this;\n }\n /** Get `ModifierContext`. */\n getModifierContext() {\n return this.modifierContext;\n }\n /** Check and get `ModifierContext`. */\n checkModifierContext() {\n return defined(this.modifierContext, 'NoModifierContext', 'Modifier Context Required');\n }\n /** Every modifier must be part of a `ModifierContext`. */\n setModifierContext(c) {\n this.modifierContext = c;\n return this;\n }\n /** Get position. */\n getPosition() {\n return this.position;\n }\n /**\n * Set position.\n * @param position CENTER | LEFT | RIGHT | ABOVE | BELOW\n */\n setPosition(position) {\n this.position = typeof position === 'string' ? Modifier.PositionString[position] : position;\n this.reset();\n return this;\n }\n /** Set the `text_line` for the modifier. */\n setTextLine(line) {\n this.text_line = line;\n return this;\n }\n /** Shift modifier down `y` pixels. Negative values shift up. */\n setYShift(y) {\n this.y_shift = y;\n return this;\n }\n /** Set spacing from next modifier. */\n setSpacingFromNextModifier(x) {\n this.spacingFromNextModifier = x;\n }\n /** Get spacing from next modifier. */\n getSpacingFromNextModifier() {\n return this.spacingFromNextModifier;\n }\n /**\n * Shift modifier `x` pixels in the direction of the modifier. Negative values\n * shift reverse.\n */\n setXShift(x) {\n this.x_shift = 0;\n if (this.position === Modifier.Position.LEFT) {\n this.x_shift -= x;\n }\n else {\n this.x_shift += x;\n }\n return this;\n }\n /** Get shift modifier `x` */\n getXShift() {\n return this.x_shift;\n }\n /** Render the modifier onto the canvas. */\n draw() {\n this.checkContext();\n throw new RuntimeError('NotImplemented', 'draw() not implemented for this modifier.');\n }\n // aligns sub notes of NoteSubGroup (or GraceNoteGroup) to the main note with correct x-offset\n alignSubNotesWithNote(subNotes, note) {\n // Shift over the tick contexts of each note\n const tickContext = note.getTickContext();\n const metrics = tickContext.getMetrics();\n const stave = note.getStave();\n const subNoteXOffset = tickContext.getX() - metrics.modLeftPx - metrics.modRightPx + this.getSpacingFromNextModifier();\n subNotes.forEach((subNote) => {\n const subTickContext = subNote.getTickContext();\n if (stave)\n subNote.setStave(stave);\n subTickContext.setXOffset(subNoteXOffset); // don't touch baseX to avoid shift each render\n });\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This class implements various types of members to notes (e.g. bends,\n// fingering positions etc.)\nimport { Accidental } from './accidental';\nimport { Annotation } from './annotation';\nimport { Articulation } from './articulation';\nimport { Bend } from './bend';\nimport { ChordSymbol } from './chordsymbol';\nimport { Dot } from './dot';\nimport { FretHandFinger } from './frethandfinger';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { Parenthesis } from './parenthesis';\nimport { StaveNote } from './stavenote';\nimport { StringNumber } from './stringnumber';\nimport { Stroke } from './strokes';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\nimport { Vibrato } from './vibrato';\n// To enable logging for this class. Set `Vex.Flow.ModifierContext.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (ModifierContext.DEBUG)\n log('Vex.Flow.ModifierContext', args);\n}\nexport class ModifierContext {\n constructor() {\n // Formatting data.\n this.state = {\n left_shift: 0,\n right_shift: 0,\n text_line: 0,\n top_text_line: 0,\n };\n // Current members\n this.members = {};\n this.preFormatted = false;\n this.postFormatted = false;\n this.formatted = false;\n this.width = 0;\n this.spacing = 0;\n }\n addModifier(member) {\n L('addModifier is deprecated, use addMember instead.');\n return this.addMember(member);\n }\n /**\n * this.members maps CATEGORY strings to arrays of Tickable | Modifier | StaveNote | TabNote.\n * Here we add a new member to this.members, and create a new array if needed.\n * @param member\n * @returns this\n */\n addMember(member) {\n const category = member.getCategory();\n if (!this.members[category]) {\n this.members[category] = [];\n }\n this.members[category].push(member);\n member.setModifierContext(this);\n this.preFormatted = false;\n return this;\n }\n /**\n * @deprecated\n */\n getModifiers(category) {\n L('getModifiers is deprecated, use getMembers instead.');\n return this.getMembers(category);\n }\n getMembers(category) {\n var _a;\n return (_a = this.members[category]) !== null && _a !== void 0 ? _a : [];\n }\n getWidth() {\n return this.width;\n }\n getLeftShift() {\n return this.state.left_shift;\n }\n getRightShift() {\n return this.state.right_shift;\n }\n getState() {\n return this.state;\n }\n getMetrics() {\n if (!this.formatted) {\n throw new RuntimeError('UnformattedMember', 'Unformatted member has no metrics.');\n }\n return {\n width: this.state.left_shift + this.state.right_shift + this.spacing,\n spacing: this.spacing,\n };\n }\n preFormat() {\n if (this.preFormatted)\n return;\n L('Preformatting ModifierContext');\n const state = this.state;\n const members = this.members;\n // The ordering below determines when different members are formatted and rendered.\n StaveNote.format(members[Category.StaveNote], state);\n Parenthesis.format(members[Category.Parenthesis], state);\n Dot.format(members[Category.Dot], state);\n FretHandFinger.format(members[Category.FretHandFinger], state);\n Accidental.format(members[Category.Accidental], state);\n Stroke.format(members[Category.Stroke], state);\n GraceNoteGroup.format(members[Category.GraceNoteGroup], state);\n NoteSubGroup.format(members[Category.NoteSubGroup], state);\n StringNumber.format(members[Category.StringNumber], state);\n Articulation.format(members[Category.Articulation], state);\n Ornament.format(members[Category.Ornament], state);\n Annotation.format(members[Category.Annotation], state);\n ChordSymbol.format(members[Category.ChordSymbol], state);\n Bend.format(members[Category.Bend], state);\n Vibrato.format(members[Category.Vibrato], state, this);\n // Update width of this member context\n this.width = state.left_shift + state.right_shift;\n this.preFormatted = true;\n }\n postFormat() {\n if (this.postFormatted)\n return;\n L('Postformatting ModifierContext');\n // If post-formatting is required for an element, add more lines below.\n StaveNote.postFormat(this.getMembers(Category.StaveNote));\n }\n}\nModifierContext.DEBUG = false;\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements multiple measure rests.\nimport { Element } from './element';\nimport { Glyph } from './glyph';\nimport { NoteHead } from './notehead';\nimport { StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { TimeSignature } from './timesignature';\nimport { Category, isBarline } from './typeguard';\nimport { defined } from './util';\nlet semibreve_rest;\nfunction get_semibreve_rest() {\n if (!semibreve_rest) {\n const noteHead = new NoteHead({ duration: 'w', note_type: 'r' });\n semibreve_rest = {\n glyph_font_scale: noteHead.render_options.glyph_font_scale,\n glyph_code: noteHead.glyph_code,\n width: noteHead.getWidth(),\n };\n }\n return semibreve_rest;\n}\nexport class MultiMeasureRest extends Element {\n /**\n *\n * @param number_of_measures Number of measures.\n * @param options The options object.\n */\n constructor(number_of_measures, options) {\n super();\n this.xs = { left: NaN, right: NaN };\n this.hasPaddingLeft = false;\n this.hasPaddingRight = false;\n this.hasLineThickness = false;\n this.hasSymbolSpacing = false;\n this.number_of_measures = number_of_measures;\n // Keep track of whether these four options were provided.\n this.hasPaddingLeft = typeof options.padding_left === 'number';\n this.hasPaddingRight = typeof options.padding_right === 'number';\n this.hasLineThickness = typeof options.line_thickness === 'number';\n this.hasSymbolSpacing = typeof options.symbol_spacing === 'number';\n const musicFont = Tables.currentMusicFont();\n this.render_options = Object.assign({ use_symbols: false, show_number: true, number_line: -0.5, number_glyph_point: musicFont.lookupMetric('digits.point'), line: 2, spacing_between_lines_px: Tables.STAVE_LINE_DISTANCE, serif_thickness: 2, semibreve_rest_glyph_scale: Tables.NOTATION_FONT_SCALE, padding_left: 0, padding_right: 0, line_thickness: 5, symbol_spacing: 0 }, options);\n const fontLineShift = musicFont.lookupMetric('digits.shiftLine', 0);\n this.render_options.number_line += fontLineShift;\n }\n static get CATEGORY() {\n return Category.MultiMeasureRest;\n }\n getXs() {\n return this.xs;\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getStave() {\n return this.stave;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n drawLine(stave, ctx, left, right, spacingBetweenLines) {\n const options = this.render_options;\n const y = stave.getYForLine(options.line);\n const padding = (right - left) * 0.1;\n left += padding;\n right -= padding;\n let lineThicknessHalf;\n if (this.hasLineThickness) {\n lineThicknessHalf = options.line_thickness * 0.5;\n }\n else {\n lineThicknessHalf = spacingBetweenLines * 0.25;\n }\n const serifThickness = options.serif_thickness;\n const top = y - spacingBetweenLines;\n const bot = y + spacingBetweenLines;\n const leftIndented = left + serifThickness;\n const rightIndented = right - serifThickness;\n const lineTop = y - lineThicknessHalf;\n const lineBottom = y + lineThicknessHalf;\n ctx.save();\n ctx.beginPath();\n ctx.moveTo(left, top);\n ctx.lineTo(leftIndented, top);\n ctx.lineTo(leftIndented, lineTop);\n ctx.lineTo(rightIndented, lineTop);\n ctx.lineTo(rightIndented, top);\n ctx.lineTo(right, top);\n ctx.lineTo(right, bot);\n ctx.lineTo(rightIndented, bot);\n ctx.lineTo(rightIndented, lineBottom);\n ctx.lineTo(leftIndented, lineBottom);\n ctx.lineTo(leftIndented, bot);\n ctx.lineTo(left, bot);\n ctx.closePath();\n ctx.fill();\n }\n drawSymbols(stave, ctx, left, right, spacingBetweenLines) {\n const n4 = Math.floor(this.number_of_measures / 4);\n const n = this.number_of_measures % 4;\n const n2 = Math.floor(n / 2);\n const n1 = n % 2;\n const options = this.render_options;\n // FIXME: TODO: invalidate semibreve_rest at the appropriate time\n // (e.g., if the system font settings are changed).\n semibreve_rest = undefined;\n const rest = get_semibreve_rest();\n const rest_scale = options.semibreve_rest_glyph_scale;\n const rest_width = rest.width * (rest_scale / rest.glyph_font_scale);\n const glyphs = {\n 2: {\n width: rest_width * 0.5,\n height: spacingBetweenLines,\n },\n 1: {\n width: rest_width,\n },\n };\n /* 10: normal spacingBetweenLines */\n const spacing = this.hasSymbolSpacing ? options.symbol_spacing : 10;\n const width = n4 * glyphs[2].width + n2 * glyphs[2].width + n1 * glyphs[1].width + (n4 + n2 + n1 - 1) * spacing;\n let x = left + (right - left) * 0.5 - width * 0.5;\n const line = options.line;\n const yTop = stave.getYForLine(line - 1);\n const yMiddle = stave.getYForLine(line);\n const yBottom = stave.getYForLine(line + 1);\n ctx.save();\n ctx.setStrokeStyle('none');\n ctx.setLineWidth(0);\n for (let i = 0; i < n4; ++i) {\n ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n ctx.fillRect(x, yBottom - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n x += glyphs[2].width + spacing;\n }\n for (let i = 0; i < n2; ++i) {\n ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n x += glyphs[2].width + spacing;\n }\n for (let i = 0; i < n1; ++i) {\n Glyph.renderGlyph(ctx, x, yTop, rest_scale, rest.glyph_code);\n x += glyphs[1].width + spacing;\n }\n ctx.restore();\n }\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const stave = this.checkStave();\n let left = stave.getNoteStartX();\n let right = stave.getNoteEndX();\n // FIXME: getNoteStartX() returns x + 5(barline width)\n // getNoteEndX() returns x + width(no barline width)\n // See Stave constructor. How do we fix this?\n // Here, we subtract the barline width.\n const begModifiers = stave.getModifiers(StaveModifierPosition.BEGIN);\n if (begModifiers.length === 1 && isBarline(begModifiers[0])) {\n left -= begModifiers[0].getWidth();\n }\n const options = this.render_options;\n if (this.hasPaddingLeft) {\n left = stave.getX() + options.padding_left;\n }\n if (this.hasPaddingRight) {\n right = stave.getX() + stave.getWidth() - options.padding_right;\n }\n this.xs.left = left;\n this.xs.right = right;\n const spacingBetweenLines = options.spacing_between_lines_px;\n if (options.use_symbols) {\n this.drawSymbols(stave, ctx, left, right, spacingBetweenLines);\n }\n else {\n this.drawLine(stave, ctx, left, right, spacingBetweenLines);\n }\n if (options.show_number) {\n const timeSpec = '/' + this.number_of_measures;\n const timeSig = new TimeSignature(timeSpec, 0, false);\n timeSig.point = options.number_glyph_point;\n timeSig.setTimeSig(timeSpec);\n timeSig.setStave(stave);\n timeSig.setX(left + (right - left) * 0.5 - timeSig.getInfo().glyph.getMetrics().width * 0.5);\n timeSig.bottomLine = options.number_line;\n timeSig.setContext(ctx).draw();\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { RuntimeError } from './util';\n/** Music implements some standard music theory routines. */\nexport class Music {\n /** Number of an canonical notes (12). */\n static get NUM_TONES() {\n return this.canonical_notes.length;\n }\n /** Names of root notes ('c', 'd',...) */\n static get roots() {\n return ['c', 'd', 'e', 'f', 'g', 'a', 'b'];\n }\n /** Values of the root notes.*/\n static get root_values() {\n return [0, 2, 4, 5, 7, 9, 11];\n }\n /** Indices of the root notes.*/\n static get root_indices() {\n return {\n c: 0,\n d: 1,\n e: 2,\n f: 3,\n g: 4,\n a: 5,\n b: 6,\n };\n }\n /** Names of canonical notes ('c', 'c#', 'd',...). */\n static get canonical_notes() {\n return ['c', 'c#', 'd', 'd#', 'e', 'f', 'f#', 'g', 'g#', 'a', 'a#', 'b'];\n }\n /** Names of diatonic intervals ('unison', 'm2', 'M2',...). */\n static get diatonic_intervals() {\n return ['unison', 'm2', 'M2', 'm3', 'M3', 'p4', 'dim5', 'p5', 'm6', 'M6', 'b7', 'M7', 'octave'];\n }\n /** NoteAccidental associated to diatonic intervals. */\n static get diatonic_accidentals() {\n return {\n unison: { note: 0, accidental: 0 },\n m2: { note: 1, accidental: -1 },\n M2: { note: 1, accidental: 0 },\n m3: { note: 2, accidental: -1 },\n M3: { note: 2, accidental: 0 },\n p4: { note: 3, accidental: 0 },\n dim5: { note: 4, accidental: -1 },\n p5: { note: 4, accidental: 0 },\n m6: { note: 5, accidental: -1 },\n M6: { note: 5, accidental: 0 },\n b7: { note: 6, accidental: -1 },\n M7: { note: 6, accidental: 0 },\n octave: { note: 7, accidental: 0 },\n };\n }\n /** Semitones shift associated to intervals .*/\n static get intervals() {\n return {\n u: 0,\n unison: 0,\n m2: 1,\n b2: 1,\n min2: 1,\n S: 1,\n H: 1,\n 2: 2,\n M2: 2,\n maj2: 2,\n T: 2,\n W: 2,\n m3: 3,\n b3: 3,\n min3: 3,\n M3: 4,\n 3: 4,\n maj3: 4,\n 4: 5,\n p4: 5,\n '#4': 6,\n b5: 6,\n aug4: 6,\n dim5: 6,\n 5: 7,\n p5: 7,\n '#5': 8,\n b6: 8,\n aug5: 8,\n 6: 9,\n M6: 9,\n maj6: 9,\n b7: 10,\n m7: 10,\n min7: 10,\n dom7: 10,\n M7: 11,\n maj7: 11,\n 8: 12,\n octave: 12,\n };\n }\n /** Semitones shifts associated with scales. */\n static get scales() {\n return {\n major: [2, 2, 1, 2, 2, 2, 1],\n minor: [2, 1, 2, 2, 1, 2, 2],\n ionian: [2, 2, 1, 2, 2, 2, 1],\n dorian: [2, 1, 2, 2, 2, 1, 2],\n phyrgian: [1, 2, 2, 2, 1, 2, 2],\n lydian: [2, 2, 2, 1, 2, 2, 1],\n mixolydian: [2, 2, 1, 2, 2, 1, 2],\n aeolian: [2, 1, 2, 2, 1, 2, 2],\n locrian: [1, 2, 2, 1, 2, 2, 2],\n };\n }\n /** Scales associated with m (minor) and M (major). */\n static get scaleTypes() {\n return {\n M: Music.scales.major,\n m: Music.scales.minor,\n };\n }\n /** Accidentals abbreviations. */\n static get accidentals() {\n return ['bb', 'b', 'n', '#', '##'];\n }\n /** Note values. */\n static get noteValues() {\n return {\n c: { root_index: 0, int_val: 0 },\n cn: { root_index: 0, int_val: 0 },\n 'c#': { root_index: 0, int_val: 1 },\n 'c##': { root_index: 0, int_val: 2 },\n cb: { root_index: 0, int_val: 11 },\n cbb: { root_index: 0, int_val: 10 },\n d: { root_index: 1, int_val: 2 },\n dn: { root_index: 1, int_val: 2 },\n 'd#': { root_index: 1, int_val: 3 },\n 'd##': { root_index: 1, int_val: 4 },\n db: { root_index: 1, int_val: 1 },\n dbb: { root_index: 1, int_val: 0 },\n e: { root_index: 2, int_val: 4 },\n en: { root_index: 2, int_val: 4 },\n 'e#': { root_index: 2, int_val: 5 },\n 'e##': { root_index: 2, int_val: 6 },\n eb: { root_index: 2, int_val: 3 },\n ebb: { root_index: 2, int_val: 2 },\n f: { root_index: 3, int_val: 5 },\n fn: { root_index: 3, int_val: 5 },\n 'f#': { root_index: 3, int_val: 6 },\n 'f##': { root_index: 3, int_val: 7 },\n fb: { root_index: 3, int_val: 4 },\n fbb: { root_index: 3, int_val: 3 },\n g: { root_index: 4, int_val: 7 },\n gn: { root_index: 4, int_val: 7 },\n 'g#': { root_index: 4, int_val: 8 },\n 'g##': { root_index: 4, int_val: 9 },\n gb: { root_index: 4, int_val: 6 },\n gbb: { root_index: 4, int_val: 5 },\n a: { root_index: 5, int_val: 9 },\n an: { root_index: 5, int_val: 9 },\n 'a#': { root_index: 5, int_val: 10 },\n 'a##': { root_index: 5, int_val: 11 },\n ab: { root_index: 5, int_val: 8 },\n abb: { root_index: 5, int_val: 7 },\n b: { root_index: 6, int_val: 11 },\n bn: { root_index: 6, int_val: 11 },\n 'b#': { root_index: 6, int_val: 0 },\n 'b##': { root_index: 6, int_val: 1 },\n bb: { root_index: 6, int_val: 10 },\n bbb: { root_index: 6, int_val: 9 },\n };\n }\n isValidNoteValue(note) {\n return note >= 0 && note < Music.canonical_notes.length;\n }\n isValidIntervalValue(interval) {\n return interval >= 0 && interval < Music.diatonic_intervals.length;\n }\n /** Return root and accidental associated to a note. */\n getNoteParts(noteString) {\n if (!noteString || noteString.length < 1) {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n if (noteString.length > 3) {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n const note = noteString.toLowerCase();\n const regex = /^([cdefgab])(b|bb|n|#|##)?$/;\n const match = regex.exec(note);\n if (match !== null) {\n const root = match[1];\n const accidental = match[2];\n return {\n root,\n accidental,\n };\n }\n else {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n }\n /** Return root, accidental and type associated to a key. */\n getKeyParts(keyString) {\n if (!keyString || keyString.length < 1) {\n throw new RuntimeError('BadArguments', 'Invalid key: ' + keyString);\n }\n const key = keyString.toLowerCase();\n // Support Major, Minor, Melodic Minor, and Harmonic Minor key types.\n const regex = /^([cdefgab])(b|#)?(mel|harm|m|M)?$/;\n const match = regex.exec(key);\n if (match !== null) {\n const root = match[1];\n const accidental = match[2];\n let type = match[3];\n // Unspecified type implies major\n if (!type)\n type = 'M';\n return {\n root,\n accidental,\n type,\n };\n }\n else {\n throw new RuntimeError('BadArguments', `Invalid key: ${keyString}`);\n }\n }\n /** Note value associated to a note name. */\n getNoteValue(noteString) {\n const value = Music.noteValues[noteString];\n if (value === undefined) {\n throw new RuntimeError('BadArguments', `Invalid note name: ${noteString}`);\n }\n return value.int_val;\n }\n /** Interval value associated to an interval name. */\n getIntervalValue(intervalString) {\n const value = Music.intervals[intervalString];\n if (value === undefined) {\n throw new RuntimeError('BadArguments', `Invalid interval name: ${intervalString}`);\n }\n return value;\n }\n /** Canonical note name associated to a value. */\n getCanonicalNoteName(noteValue) {\n if (!this.isValidNoteValue(noteValue)) {\n throw new RuntimeError('BadArguments', `Invalid note value: ${noteValue}`);\n }\n return Music.canonical_notes[noteValue];\n }\n /** Interval name associated to a value. */\n getCanonicalIntervalName(intervalValue) {\n if (!this.isValidIntervalValue(intervalValue)) {\n throw new RuntimeError('BadArguments', `Invalid interval value: ${intervalValue}`);\n }\n return Music.diatonic_intervals[intervalValue];\n }\n /**\n * Given a note, interval, and interval direction, produce the relative note.\n */\n getRelativeNoteValue(noteValue, intervalValue, direction = 1) {\n if (direction !== 1 && direction !== -1) {\n throw new RuntimeError('BadArguments', `Invalid direction: ${direction}`);\n }\n let sum = (noteValue + direction * intervalValue) % Music.NUM_TONES;\n if (sum < 0)\n sum += Music.NUM_TONES;\n return sum;\n }\n /**\n * Given a root and note value, produce the relative note name.\n */\n getRelativeNoteName(root, noteValue) {\n const parts = this.getNoteParts(root);\n const rootValue = this.getNoteValue(parts.root);\n let interval = noteValue - rootValue;\n if (Math.abs(interval) > Music.NUM_TONES - 3) {\n let multiplier = 1;\n if (interval > 0)\n multiplier = -1;\n // Possibly wrap around. (Add +1 for modulo operator)\n const reverse_interval = ((noteValue + 1 + (rootValue + 1)) % Music.NUM_TONES) * multiplier;\n if (Math.abs(reverse_interval) > 2) {\n throw new RuntimeError('BadArguments', `Notes not related: ${root}, ${noteValue})`);\n }\n else {\n interval = reverse_interval;\n }\n }\n if (Math.abs(interval) > 2) {\n throw new RuntimeError('BadArguments', `Notes not related: ${root}, ${noteValue})`);\n }\n let relativeNoteName = parts.root;\n if (interval > 0) {\n for (let i = 1; i <= interval; ++i) {\n relativeNoteName += '#';\n }\n }\n else if (interval < 0) {\n for (let i = -1; i >= interval; --i) {\n relativeNoteName += 'b';\n }\n }\n return relativeNoteName;\n }\n /**\n * Return scale tones, given intervals. Each successive interval is\n * relative to the previous one, e.g., Major Scale:\n *\n * TTSTTTS = [2,2,1,2,2,2,1]\n *\n * When used with key = 0, returns C scale (which is isomorphic to\n * interval list).\n */\n getScaleTones(key, intervals) {\n const tones = [key];\n let nextNote = key;\n for (let i = 0; i < intervals.length; i++) {\n nextNote = this.getRelativeNoteValue(nextNote, intervals[i]);\n if (nextNote !== key)\n tones.push(nextNote);\n }\n return tones;\n }\n /**\n * Return the interval of a note, given a diatonic scale.\n * e.g., given the scale C, and the note E, returns M3.\n */\n getIntervalBetween(note1, note2, direction = 1) {\n if (direction !== 1 && direction !== -1) {\n throw new RuntimeError('BadArguments', `Invalid direction: ${direction}`);\n }\n if (!this.isValidNoteValue(note1) || !this.isValidNoteValue(note2)) {\n throw new RuntimeError('BadArguments', `Invalid notes: ${note1}, ${note2}`);\n }\n let difference = direction === 1 ? note2 - note1 : note1 - note2;\n if (difference < 0)\n difference += Music.NUM_TONES;\n return difference;\n }\n /**\n * Create a scale map that represents the pitch state for a\n * `keySignature`. For example, passing a `G` to `keySignature` would\n * return a scale map with every note naturalized except for `F` which\n * has an `F#` state.\n */\n createScaleMap(keySignature) {\n const keySigParts = this.getKeyParts(keySignature);\n if (!keySigParts.type)\n throw new RuntimeError('BadArguments', 'Unsupported key type: undefined');\n const scaleName = Music.scaleTypes[keySigParts.type];\n let keySigString = keySigParts.root;\n if (keySigParts.accidental)\n keySigString += keySigParts.accidental;\n if (!scaleName)\n throw new RuntimeError('BadArguments', 'Unsupported key type: ' + keySignature);\n const scale = this.getScaleTones(this.getNoteValue(keySigString), scaleName);\n const noteLocation = Music.root_indices[keySigParts.root];\n const scaleMap = {};\n for (let i = 0; i < Music.roots.length; ++i) {\n const index = (noteLocation + i) % Music.roots.length;\n const rootName = Music.roots[index];\n let noteName = this.getRelativeNoteName(rootName, scale[i]);\n if (noteName.length === 1) {\n noteName += 'n';\n }\n scaleMap[rootName] = noteName;\n }\n return scaleMap;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from './font';\nimport { drawDot } from './rendercontext';\nimport { Tables } from './tables';\nimport { Tickable } from './tickable';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\n/**\n * Note implements an abstract interface for notes and chords that\n * are rendered on a stave. Notes have some common properties: All of them\n * have a value (e.g., pitch, fret, etc.) and a duration (quarter, half, etc.)\n *\n * Some notes have stems, heads, dots, etc. Most notational elements that\n * surround a note are called *modifiers*, and every note has an associated\n * array of them. All notes also have a rendering context and belong to a stave.\n */\nexport class Note extends Tickable {\n /**\n * Every note is a tickable, i.e., it can be mutated by the `Formatter` class for\n * positioning and layout.\n *\n * @param noteStruct To create a new note you need to provide a `noteStruct`.\n */\n constructor(noteStruct) {\n super();\n if (!noteStruct) {\n throw new RuntimeError('BadArguments', 'Note must have valid initialization data to identify duration and type.');\n }\n /** Parses `noteStruct` and get note properties. */\n const parsedNoteStruct = Note.parseNoteStruct(noteStruct);\n if (!parsedNoteStruct) {\n throw new RuntimeError('BadArguments', `Invalid note initialization object: ${JSON.stringify(noteStruct)}`);\n }\n // Set note properties from parameters.\n this.keys = noteStruct.keys || [];\n // per-pitch properties\n this.keyProps = [];\n this.duration = parsedNoteStruct.duration;\n this.noteType = parsedNoteStruct.type;\n this.customTypes = parsedNoteStruct.customTypes;\n if (noteStruct.duration_override) {\n // Custom duration\n this.setDuration(noteStruct.duration_override);\n }\n else {\n // Default duration\n this.setIntrinsicTicks(parsedNoteStruct.ticks);\n }\n this.modifiers = [];\n // Get the glyph code for this note from the font.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n this.customGlyphs = this.customTypes.map((t) => Tables.getGlyphProps(this.duration, t));\n // Note to play for audio players.\n this.playNote = undefined;\n // Positioning contexts used by the Formatter.\n this.ignore_ticks = false;\n // Positioning variables\n this.width = 0; // Width in pixels calculated after preFormat\n this.leftDisplacedHeadPx = 0; // Extra room on left for displaced note head\n this.rightDisplacedHeadPx = 0; // Extra room on right for displaced note head\n this.x_shift = 0; // X shift from tick context X\n this.ys = []; // list of y coordinates for each note\n // we need to hold on to these for ties and beams.\n if (noteStruct.align_center) {\n this.setCenterAlignment(noteStruct.align_center);\n }\n // The render surface.\n this.render_options = {\n annotation_spacing: 5,\n glyph_font_scale: 1,\n stroke_px: 1,\n scale: 1,\n font: '',\n y_shift: 0,\n };\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // STATIC MEMBERS\n static get CATEGORY() {\n return Category.Note;\n }\n /** Debug helper. Displays various note metrics for the given note. */\n static plotMetrics(ctx, note, yPos) {\n const metrics = note.getMetrics();\n const xStart = note.getAbsoluteX() - metrics.modLeftPx - metrics.leftDisplacedHeadPx;\n const xPre1 = note.getAbsoluteX() - metrics.leftDisplacedHeadPx;\n const xAbs = note.getAbsoluteX();\n const xPost1 = note.getAbsoluteX() + metrics.notePx;\n const xPost2 = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx;\n const xEnd = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx + metrics.modRightPx;\n const xFreedomRight = xEnd + (note.getFormatterMetrics().freedom.right || 0);\n const xWidth = xEnd - xStart;\n ctx.save();\n ctx.setFont(Font.SANS_SERIF, 8);\n ctx.fillText(Math.round(xWidth) + 'px', xStart + note.getXShift(), yPos);\n const y = yPos + 7;\n function stroke(x1, x2, color, yy = y) {\n ctx.beginPath();\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n ctx.setLineWidth(3);\n ctx.moveTo(x1 + note.getXShift(), yy);\n ctx.lineTo(x2 + note.getXShift(), yy);\n ctx.stroke();\n }\n stroke(xStart, xPre1, 'red');\n stroke(xPre1, xAbs, '#999');\n stroke(xAbs, xPost1, 'green');\n stroke(xPost1, xPost2, '#999');\n stroke(xPost2, xEnd, 'red');\n stroke(xEnd, xFreedomRight, '#DD0');\n stroke(xStart - note.getXShift(), xStart, '#BBB'); // Shift\n drawDot(ctx, xAbs + note.getXShift(), y, 'blue');\n const formatterMetrics = note.getFormatterMetrics();\n if (formatterMetrics.iterations > 0) {\n const spaceDeviation = formatterMetrics.space.deviation;\n const prefix = spaceDeviation >= 0 ? '+' : '';\n ctx.setFillStyle('red');\n ctx.fillText(prefix + Math.round(spaceDeviation), xAbs + note.getXShift(), yPos - 10);\n }\n ctx.restore();\n }\n static parseDuration(durationString) {\n if (!durationString) {\n return undefined;\n }\n const regexp = /(\\d*\\/?\\d+|[a-z])(d*)([nrhms]|$)/;\n const result = regexp.exec(durationString);\n if (!result) {\n return undefined;\n }\n const duration = result[1];\n const dots = result[2].length;\n const type = result[3] || 'n';\n return { duration, dots, type };\n }\n static parseNoteStruct(noteStruct) {\n // Preserve backwards-compatibility\n const durationProps = Note.parseDuration(noteStruct.duration);\n if (!durationProps) {\n return undefined;\n }\n // If specified type is invalid, return undefined.\n let type = noteStruct.type;\n if (type && !Tables.validTypes[type]) {\n return undefined;\n }\n // If no type specified, check duration or custom types\n const customTypes = [];\n if (!type) {\n type = durationProps.type || 'n';\n // If we have keys, try and check if we've got a custom glyph\n if (noteStruct.keys !== undefined) {\n noteStruct.keys.forEach((k, i) => {\n const result = k.split('/');\n // We have a custom glyph specified after the note eg. /X2\n customTypes[i] = (result && result.length === 3 ? result[2] : type);\n });\n }\n }\n // Calculate the tick duration of the note\n let ticks = Tables.durationToTicks(durationProps.duration);\n if (!ticks) {\n return undefined;\n }\n // Are there any dots?\n const dots = noteStruct.dots ? noteStruct.dots : durationProps.dots;\n if (typeof dots !== 'number') {\n return undefined;\n }\n // Add ticks as necessary depending on the numbr of dots\n let currentTicks = ticks;\n for (let i = 0; i < dots; i++) {\n if (currentTicks <= 1)\n return undefined;\n currentTicks = currentTicks / 2;\n ticks += currentTicks;\n }\n return {\n duration: durationProps.duration,\n type,\n customTypes,\n dots,\n ticks,\n };\n }\n /**\n * Get the play note, which is arbitrary data that can be used by an\n * audio player.\n */\n getPlayNote() {\n return this.playNote;\n }\n /**\n * Set the play note, which is arbitrary data that can be used by an\n * audio player.\n */\n setPlayNote(note) {\n this.playNote = note;\n return this;\n }\n /**\n * @returns true if this note is a type of rest.\n *\n * Rests don't have pitches, but take up space in the score.\n * Subclasses should override this default implementation.\n */\n isRest() {\n return false;\n }\n /** Add stroke. */\n addStroke(index, stroke) {\n stroke.setNote(this);\n stroke.setIndex(index);\n this.modifiers.push(stroke);\n this.preFormatted = false;\n return this;\n }\n /** Get the target stave. */\n getStave() {\n return this.stave;\n }\n /** Check and get the target stave. */\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n /** Set the target stave. */\n setStave(stave) {\n this.stave = stave;\n this.setYs([stave.getYForLine(0)]); // Update Y values if the stave is changed.\n this.setContext(this.stave.getContext());\n return this;\n }\n /** Get spacing to the left of the notes. */\n getLeftDisplacedHeadPx() {\n return this.leftDisplacedHeadPx;\n }\n /** Get spacing to the right of the notes. */\n getRightDisplacedHeadPx() {\n return this.rightDisplacedHeadPx;\n }\n /** Set spacing to the left of the notes. */\n setLeftDisplacedHeadPx(x) {\n this.leftDisplacedHeadPx = x;\n return this;\n }\n /** Set spacing to the right of the notes. */\n setRightDisplacedHeadPx(x) {\n this.rightDisplacedHeadPx = x;\n return this;\n }\n /** True if this note has no duration (e.g., bar notes, spacers, etc.). */\n shouldIgnoreTicks() {\n return this.ignore_ticks;\n }\n /** Get the stave line number for the note. */\n // eslint-disable-next-line\n getLineNumber(isTopNote) {\n return 0;\n }\n /** Get the stave line number for rest. */\n getLineForRest() {\n return 0;\n }\n /** Get the glyph associated with this note. */\n // eslint-disable-next-line\n getGlyph() {\n return this.glyph;\n }\n /** Get the glyph width. */\n getGlyphWidth() {\n // TODO: FIXME (multiple potential values for this.glyph)\n if (this.glyph) {\n if (this.glyph.getMetrics) {\n return this.glyph.getMetrics().width;\n }\n else if (this.glyph.getWidth) {\n return this.glyph.getWidth(this.render_options.glyph_font_scale);\n }\n }\n return 0;\n }\n /**\n * Set Y positions for this note. Each Y value is associated with\n * an individual pitch/key within the note/chord.\n */\n setYs(ys) {\n this.ys = ys;\n return this;\n }\n /**\n * Get Y positions for this note. Each Y value is associated with\n * an individual pitch/key within the note/chord.\n */\n getYs() {\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-values calculated for this note.');\n }\n return this.ys;\n }\n /**\n * Get the Y position of the space above the stave onto which text can\n * be rendered.\n */\n getYForTopText(text_line) {\n return this.checkStave().getYForTopText(text_line);\n }\n /** Return the voice that this note belongs in. */\n getVoice() {\n if (!this.voice)\n throw new RuntimeError('NoVoice', 'Note has no voice.');\n return this.voice;\n }\n /** Attach this note to `voice`. */\n setVoice(voice) {\n this.voice = voice;\n this.preFormatted = false;\n return this;\n }\n /** Get the `TickContext` for this note. */\n getTickContext() {\n return this.checkTickContext();\n }\n /** Set the `TickContext` for this note. */\n setTickContext(tc) {\n this.tickContext = tc;\n this.preFormatted = false;\n return this;\n }\n /** Accessor to duration. */\n getDuration() {\n return this.duration;\n }\n /** Accessor to isDotted. */\n isDotted() {\n return this.getModifiersByType('Dot').length > 0;\n }\n /** Accessor to hasStem. */\n hasStem() {\n return false;\n }\n /** Accessor to note type. */\n getNoteType() {\n return this.noteType;\n }\n /** Get the beam. */\n getBeam() {\n return this.beam;\n }\n /** Check and get the beam. */\n checkBeam() {\n return defined(this.beam, 'NoBeam', 'No beam attached to instance');\n }\n /** Check it has a beam. */\n hasBeam() {\n return this.beam != undefined;\n }\n /** Set the beam. */\n setBeam(beam) {\n this.beam = beam;\n return this;\n }\n /**\n * Attach a modifier to this note.\n * @param modifier the Modifier to add.\n * @param index of the key to modify.\n * @returns this\n */\n addModifier(modifier, index = 0) {\n const signature = 'Note.addModifier(modifier: Modifier, index: number=0)';\n // Backwards compatibility with 3.0.9.\n if (typeof index === 'string') {\n index = parseInt(index);\n // eslint-disable-next-line\n console.warn(signature + ' expected a number for `index`, but received a string.');\n }\n // Some versions of VexFlow had the two parameters reversed.\n // Check here and throw an error if the argument types are not correct.\n if (typeof modifier !== 'object' || typeof index !== 'number') {\n throw new RuntimeError('WrongParams', 'Incorrect call signature. Use ' + signature + ' instead.');\n }\n modifier.setNote(this);\n modifier.setIndex(index);\n super.addModifier(modifier);\n return this;\n }\n /** Get all modifiers of a specific type in `this.modifiers`. */\n getModifiersByType(type) {\n return this.modifiers.filter((modifier) => modifier.getCategory() === type);\n }\n /** Get the coordinates for where modifiers begin. */\n // eslint-disable-next-line\n getModifierStartXY(position, index, options) {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n return {\n x: this.getAbsoluteX(),\n y: this.ys[0],\n };\n }\n getRightParenthesisPx(index) {\n const props = this.getKeyProps()[index];\n return props.displaced ? this.getRightDisplacedHeadPx() : 0;\n }\n getLeftParenthesisPx(index) {\n const props = this.getKeyProps()[index];\n return props.displaced ? this.getLeftDisplacedHeadPx() - this.x_shift : -this.x_shift;\n }\n getFirstDotPx() {\n let px = this.getRightDisplacedHeadPx();\n if (this.checkModifierContext().getMembers('Parenthesis').length !== 0)\n px += Tables.currentMusicFont().lookupMetric('parenthesis.default.width');\n return px;\n }\n /** Get the metrics for this note. */\n getMetrics() {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getMetrics on an unformatted note.\");\n }\n const modLeftPx = this.modifierContext ? this.modifierContext.getState().left_shift : 0;\n const modRightPx = this.modifierContext ? this.modifierContext.getState().right_shift : 0;\n const width = this.getWidth();\n const glyphWidth = this.getGlyphWidth();\n const notePx = width -\n modLeftPx - // subtract left modifiers\n modRightPx - // subtract right modifiers\n this.leftDisplacedHeadPx - // subtract left displaced head\n this.rightDisplacedHeadPx; // subtract right displaced head\n // NOTE: If you change this, remember to update MockTickable.getMetrics() in the tests/ directory.\n return {\n width,\n glyphWidth,\n notePx,\n // Modifier spacing.\n modLeftPx,\n modRightPx,\n // Displaced note head on left or right.\n leftDisplacedHeadPx: this.leftDisplacedHeadPx,\n rightDisplacedHeadPx: this.rightDisplacedHeadPx,\n glyphPx: 0,\n };\n }\n /**\n * Get the absolute `X` position of this note's tick context. This\n * excludes x_shift, so you'll need to factor it in if you're\n * looking for the post-formatted x-position.\n */\n getAbsoluteX() {\n const tickContext = this.checkTickContext(`Can't getAbsoluteX() without a TickContext.`);\n // Position note to left edge of tick context.\n let x = tickContext.getX();\n if (this.stave) {\n x += this.stave.getNoteStartX() + Tables.currentMusicFont().lookupMetric('stave.padding');\n }\n if (this.isCenterAligned()) {\n x += this.getCenterXShift();\n }\n return x;\n }\n /** Get the direction of the stem. */\n getStemDirection() {\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n }\n /** Get the top and bottom `y` values of the stem. */\n getStemExtents() {\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n }\n /** Get the `x` coordinate to the right of the note. */\n getTieRightX() {\n let tieStartX = this.getAbsoluteX();\n const note_glyph_width = this.glyph.getWidth();\n tieStartX += note_glyph_width / 2;\n tieStartX += -this.width / 2 + this.width + 2;\n return tieStartX;\n }\n /** Get the `x` coordinate to the left of the note. */\n getTieLeftX() {\n let tieEndX = this.getAbsoluteX();\n const note_glyph_width = this.glyph.getWidth();\n tieEndX += note_glyph_width / 2;\n tieEndX -= this.width / 2 + 2;\n return tieEndX;\n }\n // Get the pitches in the note\n getKeys() {\n return this.keys;\n }\n // Get the properties for all the keys in the note\n getKeyProps() {\n return this.keyProps;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (NoteHead.DEBUG)\n log('Vex.Flow.NoteHead', args);\n}\n/**\n * Draw slashnote head manually. No glyph exists for this.\n * @param ctx the Canvas context\n * @param duration the duration of the note. ex: \"4\"\n * @param x the x coordinate to draw at\n * @param y the y coordinate to draw at\n * @param stem_direction the direction of the stem\n */\nfunction drawSlashNoteHead(ctx, duration, x, y, stem_direction, staveSpace) {\n const width = Tables.SLASH_NOTEHEAD_WIDTH;\n ctx.save();\n ctx.setLineWidth(Tables.STEM_WIDTH);\n let fill = false;\n if (Tables.durationToNumber(duration) > 2) {\n fill = true;\n }\n if (!fill)\n x -= (Tables.STEM_WIDTH / 2) * stem_direction;\n ctx.beginPath();\n ctx.moveTo(x, y + staveSpace);\n ctx.lineTo(x, y + 1);\n ctx.lineTo(x + width, y - staveSpace);\n ctx.lineTo(x + width, y);\n ctx.lineTo(x, y + staveSpace);\n ctx.closePath();\n if (fill) {\n ctx.fill();\n }\n else {\n ctx.stroke();\n }\n if (Tables.durationToFraction(duration).equals(0.5)) {\n const breve_lines = [-3, -1, width + 1, width + 3];\n for (let i = 0; i < breve_lines.length; i++) {\n ctx.beginPath();\n ctx.moveTo(x + breve_lines[i], y - 10);\n ctx.lineTo(x + breve_lines[i], y + 11);\n ctx.stroke();\n }\n }\n ctx.restore();\n}\n/**\n * `NoteHeads` are typically not manipulated\n * directly, but used internally in `StaveNote`.\n *\n * See `tests/notehead_tests.ts` for usage examples.\n */\nexport class NoteHead extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n this.custom_glyph = false;\n this.stem_up_x_offset = 0;\n this.stem_down_x_offset = 0;\n this.index = noteStruct.index;\n this.x = noteStruct.x || 0;\n this.y = noteStruct.y || 0;\n if (noteStruct.note_type)\n this.noteType = noteStruct.note_type;\n this.displaced = noteStruct.displaced || false;\n this.stem_direction = noteStruct.stem_direction || Stem.UP;\n this.line = noteStruct.line || 0;\n // Get glyph code based on duration and note type. This could be\n // regular notes, rests, or other custom codes.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n // Swap out the glyph with leger lines\n if ((this.line > 5 || this.line < 0) && this.glyph.leger_code_head) {\n this.glyph.code_head = this.glyph.leger_code_head;\n }\n this.glyph_code = this.glyph.code_head;\n this.x_shift = noteStruct.x_shift || 0;\n if (noteStruct.custom_glyph_code) {\n this.custom_glyph = true;\n this.glyph_code = noteStruct.custom_glyph_code;\n this.stem_up_x_offset = noteStruct.stem_up_x_offset || 0;\n this.stem_down_x_offset = noteStruct.stem_down_x_offset || 0;\n }\n this.setStyle(noteStruct.style);\n this.slashed = noteStruct.slashed || false;\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads\n glyph_font_scale: noteStruct.glyph_font_scale || Tables.NOTATION_FONT_SCALE });\n this.setWidth(this.glyph.getWidth(this.render_options.glyph_font_scale));\n }\n static get CATEGORY() {\n return Category.NoteHead;\n }\n /** Get the width of the notehead. */\n getWidth() {\n return this.width;\n }\n /** Determine if the notehead is displaced. */\n isDisplaced() {\n return this.displaced === true;\n }\n /** Get the glyph data. */\n getGlyph() {\n return this.glyph;\n }\n /** Set the X coordinate. */\n setX(x) {\n this.x = x;\n return this;\n }\n /** Get the Y coordinate. */\n getY() {\n return this.y;\n }\n /** Set the Y coordinate. */\n setY(y) {\n this.y = y;\n return this;\n }\n /** Get the stave line the notehead is placed on. */\n getLine() {\n return this.line;\n }\n /** Set the stave line the notehead is placed on. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Get the canvas `x` coordinate position of the notehead. */\n getAbsoluteX() {\n // If the note has not been preformatted, then get the static x value\n // Otherwise, it's been formatted and we should use it's x value relative\n // to its tick context\n const x = !this.preFormatted ? this.x : super.getAbsoluteX();\n // For a more natural displaced notehead, we adjust the displacement amount\n // by half the stem width in order to maintain a slight overlap with the stem\n const displacementStemAdjustment = Stem.WIDTH / 2;\n const musicFont = Tables.currentMusicFont();\n const fontShift = musicFont.lookupMetric('notehead.shiftX', 0) * this.stem_direction;\n const displacedFontShift = musicFont.lookupMetric('noteHead.displaced.shiftX', 0) * this.stem_direction;\n return (x +\n fontShift +\n (this.displaced ? (this.width - displacementStemAdjustment) * this.stem_direction + displacedFontShift : 0));\n }\n /** Get the `BoundingBox` for the `NoteHead`. */\n getBoundingBox() {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getBoundingBox on an unformatted note.\");\n }\n const spacing = this.checkStave().getSpacingBetweenLines();\n const half_spacing = spacing / 2;\n const min_y = this.y - half_spacing;\n return new BoundingBox(this.getAbsoluteX(), min_y, this.width, spacing);\n }\n /** Set notehead to a provided `stave`. */\n setStave(stave) {\n const line = this.getLine();\n this.stave = stave;\n if (this.stave) {\n this.setY(this.stave.getYForNote(line));\n this.setContext(this.stave.getContext());\n }\n return this;\n }\n /** Pre-render formatting. */\n preFormat() {\n if (this.preFormatted)\n return this;\n const width = this.getWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx;\n this.setWidth(width);\n this.preFormatted = true;\n return this;\n }\n /** Draw the notehead. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let head_x = this.getAbsoluteX();\n if (this.custom_glyph) {\n // head_x += this.x_shift;\n head_x += this.stem_direction === Stem.UP ? this.stem_up_x_offset : this.stem_down_x_offset;\n }\n const y = this.y;\n L(\"Drawing note head '\", this.noteType, this.duration, \"' at\", head_x, y);\n // Begin and end positions for head.\n const stem_direction = this.stem_direction;\n const glyph_font_scale = this.render_options.glyph_font_scale;\n this.applyStyle(ctx);\n const categorySuffix = `${this.glyph_code}Stem${stem_direction === Stem.UP ? 'Up' : 'Down'}`;\n if (this.noteType === 's') {\n const staveSpace = this.checkStave().getSpacingBetweenLines();\n drawSlashNoteHead(ctx, this.duration, head_x, y, stem_direction, staveSpace);\n }\n else {\n Glyph.renderGlyph(ctx, head_x, y, glyph_font_scale, this.glyph_code, {\n category: this.custom_glyph ? `noteHead.custom.${categorySuffix}` : `noteHead.standard.${categorySuffix}`,\n });\n }\n this.restoreStyle(ctx);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.NoteHead.DEBUG` to `true`. */\nNoteHead.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2016\n//\n// ## Description\n//\n// This file implements `NoteSubGroup` which is used to format and\n// render notes as a `Modifier`\n// ex) ClefNote, TimeSigNote and BarNote.\nimport { Formatter } from './formatter';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { Voice } from './voice';\nexport class NoteSubGroup extends Modifier {\n constructor(subNotes) {\n super();\n this.preFormatted = false;\n this.position = Modifier.Position.LEFT;\n this.subNotes = subNotes;\n this.subNotes.forEach((subNote) => {\n subNote.setIgnoreTicks(false);\n });\n this.width = 0;\n this.formatter = new Formatter();\n this.voice = new Voice({\n num_beats: 4,\n beat_value: 4,\n resolution: Tables.RESOLUTION,\n }).setStrict(false);\n this.voice.addTickables(this.subNotes);\n }\n static get CATEGORY() {\n return Category.NoteSubGroup;\n }\n // Arrange groups inside a `ModifierContext`\n static format(groups, state) {\n if (!groups || groups.length === 0)\n return false;\n let width = 0;\n for (let i = 0; i < groups.length; ++i) {\n const group = groups[i];\n group.preFormat();\n width += group.getWidth();\n }\n state.left_shift += width;\n return true;\n }\n preFormat() {\n if (this.preFormatted)\n return;\n this.formatter.joinVoices([this.voice]).format([this.voice], 0);\n this.setWidth(this.formatter.getMinTotalWidth());\n this.preFormatted = true;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getWidth() {\n return this.width;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n this.alignSubNotesWithNote(this.subNotes, note); // Modifier function\n this.subNotes.forEach((subNote) => subNote.setContext(ctx).drawWithStyle());\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TickContext } from './tickcontext';\nimport { Category, isTabNote } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Ornament.DEBUG)\n log('Vex.Flow.Ornament', args);\n}\n/**\n * Ornament implements ornaments as modifiers that can be\n * attached to notes. The complete list of ornaments is available in\n * `tables.ts` under `Vex.Flow.ornamentCodes`.\n *\n * See `tests/ornament_tests.ts` for usage examples.\n */\nexport class Ornament extends Modifier {\n /**\n * Create a new ornament of type `type`, which is an entry in\n * `Vex.Flow.ornamentCodes` in `tables.ts`.\n */\n constructor(type) {\n super();\n this.type = type;\n this.delayed = false;\n this.render_options = {\n font_scale: 38,\n accidentalLowerPadding: 3,\n accidentalUpperPadding: 3,\n };\n this.ornament = Tables.ornamentCodes(this.type);\n // new ornaments have their origin at the origin, and have more specific\n // metrics. Legacy ornaments do some\n // x scaling, and have hard-coded metrics\n const metrics = this.getMetrics();\n // some jazz ornaments are above or below depending on stem direction.\n this.adjustForStemDirection = false;\n // some jazz ornaments like falls are supposed to overlap with future bars\n // and so we report a different width than they actually take up.\n this.reportedWidth = metrics && metrics.reportedWidth ? metrics.reportedWidth : 0;\n this.stemUpYOffset = metrics && metrics.stemUpYOffset ? metrics.stemUpYOffset : 0;\n this.ornamentAlignWithNoteHead = Ornament.ornamentAlignWithNoteHead.indexOf(this.type) >= 0;\n if (!this.ornament) {\n throw new RuntimeError('ArgumentError', `Ornament not found: '${this.type}'`);\n }\n this.x_shift = metrics ? metrics.xOffset : 0;\n this.y_shift = metrics ? metrics.yOffset : 0;\n this.glyph = new Glyph(this.ornament.code, this.render_options.font_scale, {\n category: `ornament.${this.ornament.code}`,\n });\n // Is this a jazz ornament that goes between this note and the next note.\n if (Ornament.ornamentNoteTransition.indexOf(this.type) >= 0) {\n this.delayed = true;\n }\n // Legacy ornaments need this. I don't know why, but horizontal spacing issues\n // happen if I don't set it.\n if (!metrics) {\n this.glyph.setOrigin(0.5, 1.0); // FIXME: SMuFL won't require a vertical origin shift\n }\n }\n /** Ornaments category string. */\n static get CATEGORY() {\n return Category.Ornament;\n }\n static get minPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Arrange ornaments inside `ModifierContext` */\n static format(ornaments, state) {\n if (!ornaments || ornaments.length === 0)\n return false;\n let width = 0; // width is used by ornaments, which are always centered on the note head\n let right_shift = state.right_shift; // jazz ornaments calculate r/l shift separately\n let left_shift = state.left_shift;\n let yOffset = 0;\n for (let i = 0; i < ornaments.length; ++i) {\n const ornament = ornaments[i];\n const increment = 2;\n if (Ornament.ornamentRelease.indexOf(ornament.type) >= 0) {\n ornament.x_shift += right_shift + 2;\n }\n if (Ornament.ornamentAttack.indexOf(ornament.type) >= 0) {\n ornament.x_shift -= left_shift + 2;\n }\n if (ornament.reportedWidth && ornament.x_shift < 0) {\n left_shift += ornament.reportedWidth;\n }\n else if (ornament.reportedWidth && ornament.x_shift >= 0) {\n right_shift += ornament.reportedWidth + Ornament.minPadding;\n }\n else {\n width = Math.max(ornament.getWidth(), width);\n }\n // articulations above/below the line can be stacked.\n if (Ornament.ornamentArticulation.indexOf(ornament.type) >= 0) {\n // Unfortunately we don't know the stem direction. So we base it\n // on the line number, but also allow it to be overridden.\n const ornamentNote = defined(ornament.note, 'NoAttachedNote');\n if (ornamentNote.getLineNumber() >= 3 || ornament.getPosition() === Modifier.Position.ABOVE) {\n state.top_text_line += increment;\n ornament.y_shift += yOffset;\n yOffset -= ornament.glyph.bbox.getH();\n }\n else {\n state.text_line += increment;\n ornament.y_shift += yOffset;\n yOffset += ornament.glyph.bbox.getH();\n }\n }\n else {\n if (ornament.getPosition() === Modifier.Position.ABOVE) {\n ornament.setTextLine(state.top_text_line);\n state.top_text_line += increment;\n }\n else {\n ornament.setTextLine(state.text_line);\n state.text_line += increment;\n }\n }\n }\n // Note: 'legit' ornaments don't consider other modifiers when calculating their\n // X position, but jazz ornaments sometimes need to.\n state.left_shift = left_shift + width / 2;\n state.right_shift = right_shift + width / 2;\n return true;\n }\n /**\n * ornamentNoteTransition means the jazz ornament represents an effect from one note to another,\n * these are generally on the top of the staff.\n */\n static get ornamentNoteTransition() {\n return ['flip', 'jazzTurn', 'smear'];\n }\n /**\n * ornamentAttack indicates something that happens in the attach, placed before the note and\n * any accidentals\n */\n static get ornamentAttack() {\n return ['scoop'];\n }\n /**\n * The ornament is aligned based on the note head, but without regard to whether the\n * stem goes up or down.\n */\n static get ornamentAlignWithNoteHead() {\n return ['doit', 'fall', 'fallLong', 'doitLong', 'bend', 'plungerClosed', 'plungerOpen', 'scoop'];\n }\n /**\n * An ornament that happens on the release of the note, generally placed after the\n * note and overlapping the next beat/measure..\n */\n static get ornamentRelease() {\n return ['doit', 'fall', 'fallLong', 'doitLong', 'jazzTurn', 'smear', 'flip'];\n }\n /** ornamentArticulation goes above/below the note based on space availablity */\n static get ornamentArticulation() {\n return ['bend', 'plungerClosed', 'plungerOpen'];\n }\n /**\n * Legacy ornaments have hard-coded metrics. If additional ornament types are\n * added, get their metrics here.\n */\n // eslint-disable-next-line\n getMetrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.jazzOrnaments[this.ornament.code];\n }\n /** Set whether the ornament is to be delayed. */\n setDelayed(delayed) {\n this.delayed = delayed;\n return this;\n }\n /** Set the upper accidental for the ornament. */\n setUpperAccidental(accid) {\n const scale = this.render_options.font_scale / 1.3;\n this.accidentalUpper = new Glyph(Tables.accidentalCodes(accid).code, scale);\n this.accidentalUpper.setOrigin(0.5, 1.0);\n return this;\n }\n /** Set the lower accidental for the ornament. */\n setLowerAccidental(accid) {\n const scale = this.render_options.font_scale / 1.3;\n this.accidentalLower = new Glyph(Tables.accidentalCodes(accid).code, scale);\n this.accidentalLower.setOrigin(0.5, 1.0);\n return this;\n }\n /** Render ornament in position next to note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stemDir = note.getStemDirection();\n const stave = note.checkStave();\n ctx.openGroup('ornament', this.getAttribute('id'));\n // Get stem extents\n const stemExtents = note.checkStem().getExtents();\n let y = stemDir === Stem.DOWN ? stemExtents.baseY : stemExtents.topY;\n // TabNotes don't have stems attached to them. Tab stems are rendered outside the stave.\n if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDir === Stem.DOWN) {\n y = stave.getYForTopText(this.text_line);\n }\n }\n else {\n // Without a stem\n y = stave.getYForTopText(this.text_line);\n }\n }\n const isPlacedOnNoteheadSide = stemDir === Stem.DOWN;\n const spacing = stave.getSpacingBetweenLines();\n let lineSpacing = 1;\n // Beamed stems are longer than quarter note stems, adjust accordingly\n if (!isPlacedOnNoteheadSide && note.hasBeam()) {\n lineSpacing += 0.5;\n }\n const totalSpacing = spacing * (this.text_line + lineSpacing);\n const glyphYBetweenLines = y - totalSpacing;\n // Get initial coordinates for the modifier position\n const start = note.getModifierStartXY(this.position, this.index);\n let glyphX = start.x;\n // If the ornament is aligned with the note head, don't consider the stave y\n // but use the 'natural' modifier y\n let glyphY = this.ornamentAlignWithNoteHead\n ? start.y\n : Math.min(stave.getYForTopText(this.text_line), glyphYBetweenLines);\n glyphY += this.y_shift;\n // Ajdust x position if ornament is delayed\n if (this.delayed) {\n let delayXShift = 0;\n const startX = glyphX - (stave.getX() - 10);\n if (this.delayXShift !== undefined) {\n delayXShift = this.delayXShift;\n }\n else {\n delayXShift += this.glyph.getMetrics().width / 2;\n const nextContext = TickContext.getNextContext(note.getTickContext());\n if (nextContext) {\n delayXShift += (nextContext.getX() - startX) * 0.5;\n }\n else {\n delayXShift += (stave.getX() + stave.getWidth() - startX) * 0.5;\n }\n this.delayXShift = delayXShift;\n }\n glyphX += delayXShift;\n }\n L('Rendering ornament: ', this.ornament, glyphX, glyphY);\n if (this.accidentalLower) {\n this.accidentalLower.render(ctx, glyphX, glyphY);\n glyphY -= this.accidentalLower.getMetrics().height;\n glyphY -= this.render_options.accidentalLowerPadding;\n }\n if (this.stemUpYOffset && note.hasStem() && note.getStemDirection() === 1) {\n glyphY += this.stemUpYOffset;\n }\n if (note.getLineNumber() < 5 && Ornament.ornamentNoteTransition.indexOf(this.type) >= 0) {\n glyphY = note.checkStave().getBoundingBox().getY() + 40;\n }\n this.glyph.render(ctx, glyphX + this.x_shift, glyphY);\n if (this.accidentalUpper) {\n glyphY -= this.glyph.getMetrics().height + this.render_options.accidentalUpperPadding;\n this.accidentalUpper.render(ctx, glyphX, glyphY);\n }\n ctx.closeGroup();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Ornament.DEBUG` to `true`. */\nOrnament.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Rodrigo Vilar\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Tables } from './tables';\nimport { Category, isGraceNote } from './typeguard';\n/** Parenthesis implements parenthesis modifiers for notes. */\nexport class Parenthesis extends Modifier {\n /**\n * Constructor\n *\n * @param position Modifier.Position.LEFT (default) or Modifier.Position.RIGHT\n */\n constructor(position) {\n super();\n this.position = position !== null && position !== void 0 ? position : Modifier.Position.LEFT;\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.default.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.default.width'));\n }\n static get CATEGORY() {\n return Category.Parenthesis;\n }\n /** Add parentheses to the notes. */\n static buildAndAttach(notes) {\n for (const note of notes) {\n for (let i = 0; i < note.keys.length; i++) {\n note.addModifier(new Parenthesis(ModifierPosition.LEFT), i);\n note.addModifier(new Parenthesis(ModifierPosition.RIGHT), i);\n }\n }\n }\n /** Arrange parentheses inside a ModifierContext. */\n static format(parentheses, state) {\n if (!parentheses || parentheses.length === 0)\n return false;\n let x_widthL = 0;\n let x_widthR = 0;\n for (let i = 0; i < parentheses.length; ++i) {\n const parenthesis = parentheses[i];\n const note = parenthesis.getNote();\n const pos = parenthesis.getPosition();\n const index = parenthesis.checkIndex();\n let shift = 0;\n if (pos === ModifierPosition.RIGHT) {\n shift = note.getRightParenthesisPx(index);\n x_widthR = x_widthR > shift + parenthesis.width ? x_widthR : shift + parenthesis.width;\n }\n if (pos === ModifierPosition.LEFT) {\n shift = note.getLeftParenthesisPx(index);\n x_widthL = x_widthL > shift + parenthesis.width ? x_widthL : shift + parenthesis.width;\n }\n parenthesis.setXShift(shift);\n }\n state.left_shift += x_widthL;\n state.right_shift += x_widthR;\n return true;\n }\n /** Set the associated note. */\n setNote(note) {\n this.note = note;\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.default.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.default.width'));\n if (isGraceNote(note)) {\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.gracenote.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.gracenote.width'));\n }\n return this;\n }\n /** Render the parenthesis. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index, { forceFlagRight: true });\n const x = start.x + this.x_shift;\n const y = start.y + this.y_shift;\n if (this.position == Modifier.Position.RIGHT) {\n Glyph.renderGlyph(ctx, x + 1, y, this.point, 'noteheadParenthesisRight', {\n category: `noteHead.standard.noteheadParenthesisRight`,\n });\n }\n else if (this.position == Modifier.Position.LEFT) {\n Glyph.renderGlyph(ctx, x - 2, y, this.point, 'noteheadParenthesisLeft', {\n category: `noteHead.standard.noteheadParenthesisLeft`,\n });\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// A generic text parsing class for VexFlow.\nimport { log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.Parser.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (Parser.DEBUG)\n log('Vex.Flow.Parser', args);\n}\nconst NO_ERROR_POS = -1;\n// Converts parser results into an easy to reference list that can be\n// used in triggers. This function returns:\n// - nested array in which the leaf elements are string or null\n// - string (including empty strings)\n// - null\nfunction flattenMatches(r) {\n if ('matchedString' in r)\n return r.matchedString; // string\n if ('results' in r)\n return flattenMatches(r.results);\n const results = r;\n if (results.length === 1)\n return flattenMatches(results[0]);\n if (results.length === 0)\n return null;\n return results.map(flattenMatches); // nested array\n}\n// This is the base parser class. Given an arbitrary context-free grammar, it\n// can parse any line and execute code when specific rules are met (e.g.,\n// when a string is terminated.)\nexport class Parser {\n // For an example of a simple grammar, take a look at tests/parser_tests.ts or\n // the EasyScore grammar in easyscore.ts.\n constructor(grammar) {\n this.grammar = grammar;\n this.line = '';\n this.pos = 0;\n this.errorPos = NO_ERROR_POS;\n }\n // Parse `line` using current grammar. Returns `{success: true}` if the\n // line parsed correctly, otherwise returns `{success: false, errorPos: N}`\n // where `errorPos` is the location of the error in the string.\n parse(line) {\n this.line = line;\n this.pos = 0;\n this.errorPos = NO_ERROR_POS;\n const result = this.expect(this.grammar.begin());\n result.errorPos = this.errorPos;\n return result;\n }\n matchFail(returnPos) {\n if (this.errorPos === NO_ERROR_POS)\n this.errorPos = this.pos;\n this.pos = returnPos;\n }\n matchSuccess() {\n this.errorPos = NO_ERROR_POS;\n }\n // Look for `token` in this.line[this.pos], and return success\n // if one is found. `token` is specified as a regular expression.\n matchToken(token, noSpace = false) {\n const regexp = noSpace ? new RegExp('^((' + token + '))') : new RegExp('^((' + token + ')\\\\s*)');\n const workingLine = this.line.slice(this.pos);\n const result = workingLine.match(regexp);\n if (result !== null) {\n return {\n success: true,\n matchedString: result[2],\n incrementPos: result[1].length,\n pos: this.pos,\n };\n }\n else {\n return { success: false, pos: this.pos };\n }\n }\n // Execute rule to match a sequence of tokens (or rules). If `maybe` is\n // set, then return success even if the token is not found, but reset\n // the position before exiting.\n // TODO: expectOne(...) is never called with the `maybe` parameter.\n expectOne(rule, maybe = false) {\n const results = [];\n const pos = this.pos;\n let allMatches = true;\n let oneMatch = false;\n maybe = maybe === true || rule.maybe === true;\n // Execute all sub rules in sequence.\n if (rule.expect) {\n for (const next of rule.expect) {\n const localPos = this.pos;\n const result = this.expect(next);\n // If `rule.or` is set, then return success if any one\n // of the subrules match, else all subrules must match.\n if (result.success) {\n results.push(result);\n oneMatch = true;\n if (rule.or)\n break;\n }\n else {\n allMatches = false;\n if (!rule.or) {\n this.pos = localPos;\n break;\n }\n }\n }\n }\n const gotOne = (rule.or && oneMatch) || allMatches;\n const success = gotOne || maybe === true;\n const numMatches = gotOne ? 1 : 0;\n if (maybe && !gotOne)\n this.pos = pos;\n if (success) {\n this.matchSuccess();\n }\n else {\n this.matchFail(pos);\n }\n return { success, results, numMatches };\n }\n // Try to match multiple (one or more) instances of the rule. If `maybe` is set,\n // then a failed match is also a success (but the position is reset).\n expectOneOrMore(rule, maybe = false) {\n const results = [];\n const pos = this.pos;\n let numMatches = 0;\n let more = true;\n do {\n const result = this.expectOne(rule);\n if (result.success && result.results) {\n numMatches++;\n results.push(result.results);\n }\n else {\n more = false;\n }\n } while (more);\n const success = numMatches > 0 || maybe === true;\n if (maybe && !(numMatches > 0))\n this.pos = pos;\n if (success) {\n this.matchSuccess();\n }\n else {\n this.matchFail(pos);\n }\n return { success, results, numMatches };\n }\n // Match zero or more instances of `rule`. Offloads to `expectOneOrMore`.\n expectZeroOrMore(rule) {\n return this.expectOneOrMore(rule, true);\n }\n // Execute the rule produced by the provided `rules` function. This\n // offloads to one of the above matchers and consolidates the results. It is also\n // responsible for executing any code triggered by the rule (in `rule.run`.)\n expect(ruleFunc) {\n L('Evaluating rule function:', ruleFunc);\n if (!ruleFunc) {\n throw new RuntimeError('Invalid rule function');\n }\n let result;\n // Get rule from Grammar class.\n // expect(...) handles both lexing & parsing:\n // - lexer rules produce tokens.\n // - parser rules produce expressions which may trigger code via the\n // { run: () => ... } trigger functions in easyscore.ts.\n // These functions build the VexFlow objects that are displayed on screen.\n const rule = ruleFunc.bind(this.grammar)();\n if (rule.token) {\n // A lexer rule has a `token` property.\n // Base case: parse the regex and throw an error if the\n // line doesn't match.\n result = this.matchToken(rule.token, rule.noSpace === true);\n if (result.success) {\n // Token match! Update position and throw away parsed portion\n // of string.\n this.pos += result.incrementPos;\n }\n }\n else if (rule.expect) {\n // A parser rule has an `expect` property.\n if (rule.oneOrMore) {\n result = this.expectOneOrMore(rule);\n }\n else if (rule.zeroOrMore) {\n result = this.expectZeroOrMore(rule);\n }\n else {\n result = this.expectOne(rule);\n }\n }\n else {\n L(rule);\n throw new RuntimeError('Bad grammar! No `token` or `expect` property ' + rule);\n }\n // If there's a trigger attached to this rule, then run it.\n // Make the matches accessible through `state.matches` in the\n // `run: (state) => ...` trigger.\n const matches = [];\n result.matches = matches;\n if (result.results) {\n result.results.forEach((r) => matches.push(flattenMatches(r)));\n }\n if (rule.run && result.success) {\n rule.run({ matches });\n }\n return result;\n }\n}\nParser.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (PedalMarking.DEBUG)\n log('Vex.Flow.PedalMarking', args);\n}\n/**\n * Draws a pedal glyph with the provided `name` on a rendering `context`\n * at the coordinates `x` and `y. Takes into account the glyph data\n * coordinate shifts.\n */\nfunction drawPedalGlyph(name, context, x, y, point) {\n const glyph_data = PedalMarking.GLYPHS[name];\n const glyph = new Glyph(glyph_data.code, point, { category: 'pedalMarking' });\n glyph.render(context, x + glyph_data.x_shift, y + glyph_data.y_shift);\n}\n/**\n * PedalMarking implements different types of pedal markings. These notation\n * elements indicate to the performer when to depress and release the a pedal.\n *\n * In order to create \"Sostenuto\", and \"una corda\" markings, you must set\n * custom text for the release/depress pedal markings.\n */\nexport class PedalMarking extends Element {\n constructor(notes) {\n super();\n this.notes = notes;\n this.type = PedalMarking.type.TEXT;\n this.line = 0;\n // Custom text for the release/depress markings\n this.custom_depress_text = '';\n this.custom_release_text = '';\n this.resetFont();\n this.render_options = {\n bracket_height: 10,\n text_margin_right: 6,\n bracket_line_width: 1,\n color: 'black',\n };\n }\n static get CATEGORY() {\n return Category.PedalMarking;\n }\n /**\n * Create a sustain pedal marking. Returns the defaults PedalMarking.\n * Which uses the traditional \"Ped\" and \"*\"\" markings.\n */\n static createSustain(notes) {\n const pedal = new PedalMarking(notes);\n return pedal;\n }\n /** Create a sostenuto pedal marking */\n static createSostenuto(notes) {\n const pedal = new PedalMarking(notes);\n pedal.setType(PedalMarking.type.MIXED);\n pedal.setCustomText('Sost. Ped.');\n return pedal;\n }\n /** Create an una corda pedal marking */\n static createUnaCorda(notes) {\n const pedal = new PedalMarking(notes);\n pedal.setType(PedalMarking.type.TEXT);\n pedal.setCustomText('una corda', 'tre corda');\n return pedal;\n }\n /** Set pedal type. */\n setType(type) {\n type = typeof type === 'string' ? PedalMarking.typeString[type] : type;\n if (type >= PedalMarking.type.TEXT && type <= PedalMarking.type.MIXED) {\n this.type = type;\n }\n return this;\n }\n /**\n * Set custom text for the `depress`/`release` pedal markings. No text is\n * set if the parameter is falsy.\n */\n setCustomText(depress, release) {\n this.custom_depress_text = depress || '';\n this.custom_release_text = release || '';\n return this;\n }\n /** Set the staff line to render the markings on. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Draw the bracket based pedal markings. */\n drawBracketed() {\n const ctx = this.checkContext();\n let is_pedal_depressed = false;\n let prev_x;\n let prev_y;\n // Iterate through each note\n this.notes.forEach((note, index, notes) => {\n // Each note triggers the opposite pedal action\n is_pedal_depressed = !is_pedal_depressed;\n // Get the initial coordinates for the note\n const x = note.getAbsoluteX();\n const y = note.checkStave().getYForBottomText(this.line + 3);\n // Throw if current note is positioned before the previous note\n if (x < prev_x) {\n throw new RuntimeError('InvalidConfiguration', 'The notes provided must be in order of ascending x positions');\n }\n // Determine if the previous or next note are the same\n // as the current note. We need to keep track of this for\n // when adjustments are made for the release+depress action\n const next_is_same = notes[index + 1] === note;\n const prev_is_same = notes[index - 1] === note;\n let x_shift = 0;\n const point = Tables.currentMusicFont().lookupMetric(`pedalMarking.${is_pedal_depressed ? 'down' : 'up'}.point`);\n if (is_pedal_depressed) {\n // Adjustment for release+depress\n x_shift = prev_is_same ? 5 : 0;\n if (this.type === PedalMarking.type.MIXED && !prev_is_same) {\n // For MIXED style, start with text instead of bracket\n if (this.custom_depress_text) {\n // If we have custom text, use instead of the default \"Ped\" glyph\n const text_width = ctx.measureText(this.custom_depress_text).width;\n ctx.fillText(this.custom_depress_text, x - text_width / 2, y);\n x_shift = text_width / 2 + this.render_options.text_margin_right;\n }\n else {\n // Render the Ped glyph in position\n drawPedalGlyph('pedal_depress', ctx, x, y, point);\n x_shift = 20 + this.render_options.text_margin_right;\n }\n }\n else {\n // Draw start bracket\n ctx.beginPath();\n ctx.moveTo(x, y - this.render_options.bracket_height);\n ctx.lineTo(x + x_shift, y);\n ctx.stroke();\n ctx.closePath();\n }\n }\n else {\n // Adjustment for release+depress\n x_shift = next_is_same ? -5 : 0;\n // Draw end bracket\n ctx.beginPath();\n ctx.moveTo(prev_x, prev_y);\n ctx.lineTo(x + x_shift, y);\n ctx.lineTo(x, y - this.render_options.bracket_height);\n ctx.stroke();\n ctx.closePath();\n }\n // Store previous coordinates\n prev_x = x + x_shift;\n prev_y = y;\n });\n }\n /**\n * Draw the text based pedal markings. This defaults to the traditional\n * \"Ped\" and \"*\"\" symbols if no custom text has been provided.\n */\n drawText() {\n const ctx = this.checkContext();\n let is_pedal_depressed = false;\n // Iterate through each note, placing glyphs or custom text accordingly\n this.notes.forEach((note) => {\n is_pedal_depressed = !is_pedal_depressed;\n const stave = note.checkStave();\n const x = note.getAbsoluteX();\n const y = stave.getYForBottomText(this.line + 3);\n const point = Tables.currentMusicFont().lookupMetric(`pedalMarking.${is_pedal_depressed ? 'down' : 'up'}.point`);\n let text_width = 0;\n if (is_pedal_depressed) {\n if (this.custom_depress_text) {\n text_width = ctx.measureText(this.custom_depress_text).width;\n ctx.fillText(this.custom_depress_text, x - text_width / 2, y);\n }\n else {\n drawPedalGlyph('pedal_depress', ctx, x, y, point);\n }\n }\n else {\n if (this.custom_release_text) {\n text_width = ctx.measureText(this.custom_release_text).width;\n ctx.fillText(this.custom_release_text, x - text_width / 2, y);\n }\n else {\n drawPedalGlyph('pedal_release', ctx, x, y, point);\n }\n }\n });\n }\n /** Render the pedal marking in position on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setStrokeStyle(this.render_options.color);\n ctx.setFillStyle(this.render_options.color);\n ctx.setFont(this.textFont);\n L('Rendering Pedal Marking');\n if (this.type === PedalMarking.type.BRACKET || this.type === PedalMarking.type.MIXED) {\n ctx.setLineWidth(this.render_options.bracket_line_width);\n this.drawBracketed();\n }\n else if (this.type === PedalMarking.type.TEXT) {\n this.drawText();\n }\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.PedalMarking.DEBUG` to `true`. */\nPedalMarking.DEBUG = false;\nPedalMarking.TEXT_FONT = {\n family: Font.SERIF,\n size: 12,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n/** Glyph data */\nPedalMarking.GLYPHS = {\n pedal_depress: {\n code: 'keyboardPedalPed',\n x_shift: -10,\n y_shift: 0,\n },\n pedal_release: {\n code: 'keyboardPedalUp',\n x_shift: -2,\n y_shift: 3,\n },\n};\n/** Pedal type as number. */\nPedalMarking.type = {\n TEXT: 1,\n BRACKET: 2,\n MIXED: 3,\n};\n/** Pedal type as string. */\nPedalMarking.typeString = {\n text: PedalMarking.type.TEXT,\n bracket: PedalMarking.type.BRACKET,\n mixed: PedalMarking.type.MIXED,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n//\n// ## Description\n//\n// This file implements a registry for VexFlow elements. It allows users\n// to track, query, and manage some subset of generated elements, and\n// dynamically get and set attributes.\n//\n// There are two ways to register with a registry:\n//\n// 1) Explicitly call `registry.register(elem:Element, id?:string)`, or,\n// 2) Call `Registry.enableDefaultRegistry(registry)` when ready, and all future\n// elements will automatically register with it.\n//\n// Once an element is registered, selected attributes are tracked and indexed by\n// the registry. This allows fast look up of elements by attributes like id, type,\n// and class.\nimport { RuntimeError } from './util';\n// Indexes are represented as maps of maps of maps. This allows\n// for both multi-labeling (e.g., an element can have multiple classes)\n// and efficient lookup.\nclass Index {\n constructor() {\n this.id = {};\n this.type = {};\n this.class = {};\n }\n}\nexport class Registry {\n constructor() {\n this.index = new Index();\n }\n static getDefaultRegistry() {\n return Registry.defaultRegistry;\n }\n // If you call `enableDefaultRegistry`, any new elements will auto-register with\n // the provided registry as soon as they're constructed.\n static enableDefaultRegistry(registry) {\n Registry.defaultRegistry = registry;\n }\n static disableDefaultRegistry() {\n Registry.defaultRegistry = undefined;\n }\n clear() {\n this.index = new Index();\n return this;\n }\n setIndexValue(name, value, id, elem) {\n const index = this.index;\n if (!index[name][value]) {\n index[name][value] = {};\n }\n index[name][value][id] = elem;\n }\n // Updates the indexes for element 'id'. If an element's attribute changes\n // from A -> B, make sure to remove the element from A.\n updateIndex({ id, name, value, oldValue }) {\n const elem = this.getElementById(id);\n if (oldValue !== undefined && this.index[name][oldValue]) {\n delete this.index[name][oldValue][id];\n }\n if (value && elem) {\n this.setIndexValue(name, value, elem.getAttribute('id'), elem);\n }\n }\n /**\n * Register element `elem` with this registry.\n * This adds the element to its index and watches it for attribute changes.\n * @param elem\n * @param id\n * @returns this\n */\n register(elem, id) {\n id = id || elem.getAttribute('id');\n if (!id) {\n throw new RuntimeError(\"Can't add element without `id` attribute to registry\");\n }\n // Manually add id to index, then update other indexes.\n elem.setAttribute('id', id);\n this.setIndexValue('id', id, id, elem);\n this.updateIndex({ id, name: 'type', value: elem.getAttribute('type'), oldValue: undefined });\n elem.onRegister(this);\n return this;\n }\n getElementById(id) {\n var _a, _b;\n return (_b = (_a = this.index.id) === null || _a === void 0 ? void 0 : _a[id]) === null || _b === void 0 ? void 0 : _b[id]; // return undefined if the id is not found.\n }\n getElementsByAttribute(attribute, value) {\n const index_attr = this.index[attribute];\n if (index_attr) {\n const index_attr_val = index_attr[value];\n if (index_attr_val) {\n const keys = Object.keys(index_attr_val);\n return keys.map((k) => index_attr_val[k]);\n }\n }\n return [];\n }\n getElementsByType(type) {\n return this.getElementsByAttribute('type', type);\n }\n getElementsByClass(className) {\n return this.getElementsByAttribute('class', className);\n }\n // This is called by the element when an attribute value changes. If an indexed\n // attribute changes, then update the local index.\n onUpdate(info) {\n const allowedNames = ['id', 'type', 'class'];\n if (allowedNames.includes(info.name)) {\n this.updateIndex(info);\n }\n return this;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2021.\n// MIT License\nimport { Category } from './typeguard';\nexport class RenderContext {\n static get CATEGORY() {\n return Category.RenderContext;\n }\n set font(f) {\n this.setFont(f);\n }\n get font() {\n return this.getFont();\n }\n /**\n * This is kept for backwards compatibility with 3.0.9.\n * @deprecated use `setFont(...)` instead since it now supports CSS font shorthand.\n */\n setRawFont(f) {\n this.setFont(f);\n return this;\n }\n}\n/**\n * Draw a tiny dot marker on the specified context. A great debugging aid.\n * @param ctx context\n * @param x dot x coordinate\n * @param y dot y coordinate\n * @param color\n */\nexport function drawDot(ctx, x, y, color = '#F55') {\n ctx.save();\n ctx.setFillStyle(color);\n // draw a circle\n ctx.beginPath();\n ctx.arc(x, y, 3, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n ctx.restore();\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { CanvasContext } from './canvascontext';\nimport { SVGContext } from './svgcontext';\nimport { isRenderContext } from './typeguard';\nimport { RuntimeError } from './util';\nimport { isHTMLCanvas, isHTMLDiv } from './web';\nexport var RendererBackends;\n(function (RendererBackends) {\n RendererBackends[RendererBackends[\"CANVAS\"] = 1] = \"CANVAS\";\n RendererBackends[RendererBackends[\"SVG\"] = 2] = \"SVG\";\n})(RendererBackends || (RendererBackends = {}));\n// End of line types\nexport var RendererLineEndType;\n(function (RendererLineEndType) {\n RendererLineEndType[RendererLineEndType[\"NONE\"] = 1] = \"NONE\";\n RendererLineEndType[RendererLineEndType[\"UP\"] = 2] = \"UP\";\n RendererLineEndType[RendererLineEndType[\"DOWN\"] = 3] = \"DOWN\";\n})(RendererLineEndType || (RendererLineEndType = {}));\n/**\n * Support Canvas & SVG rendering contexts.\n */\nexport class Renderer {\n constructor(arg0, arg1) {\n if (isRenderContext(arg0)) {\n // The user has provided what looks like a RenderContext, let's just use it.\n this.ctx = arg0;\n }\n else {\n if (arg1 === undefined) {\n // The backend must be specified if the render context isn't directly provided.\n throw new RuntimeError('InvalidArgument', 'Missing backend argument');\n }\n const backend = arg1;\n let element;\n if (typeof arg0 == 'string') {\n const maybeElement = document.getElementById(arg0);\n if (!maybeElement) {\n throw new RuntimeError('BadElementId', `Can't find element with ID \"${maybeElement}\"`);\n }\n element = maybeElement;\n }\n else {\n element = arg0;\n }\n // Verify backend and create context\n if (backend === Renderer.Backends.CANVAS) {\n if (!isHTMLCanvas(element)) {\n throw new RuntimeError('BadElement', 'CANVAS context requires an HTMLCanvasElement.');\n }\n const context = element.getContext('2d');\n if (!context) {\n throw new RuntimeError('BadElement', \"Can't get canvas context\");\n }\n this.ctx = new CanvasContext(context);\n }\n else if (backend === Renderer.Backends.SVG) {\n if (!isHTMLDiv(element)) {\n throw new RuntimeError('BadElement', 'SVG context requires an HTMLDivElement.');\n }\n this.ctx = new SVGContext(element);\n }\n else {\n throw new RuntimeError('InvalidBackend', `No support for backend: ${backend}`);\n }\n }\n }\n static buildContext(elementId, backend, width, height, background = '#FFF') {\n const renderer = new Renderer(elementId, backend);\n if (width && height) {\n renderer.resize(width, height);\n }\n const ctx = renderer.getContext();\n ctx.setBackgroundFillStyle(background);\n Renderer.lastContext = ctx;\n return ctx;\n }\n static getCanvasContext(elementId, width, height, background) {\n return Renderer.buildContext(elementId, Renderer.Backends.CANVAS, width, height, background);\n }\n static getSVGContext(elementId, width, height, background) {\n return Renderer.buildContext(elementId, Renderer.Backends.SVG, width, height, background);\n }\n // Draw a dashed line (horizontal, vertical or diagonal\n // dashPattern = [3,3] draws a 3 pixel dash followed by a three pixel space.\n // setting the second number to 0 draws a solid line.\n static drawDashedLine(context, fromX, fromY, toX, toY, dashPattern) {\n context.beginPath();\n const dx = toX - fromX;\n const dy = toY - fromY;\n const angle = Math.atan2(dy, dx);\n let x = fromX;\n let y = fromY;\n context.moveTo(fromX, fromY);\n let idx = 0;\n let draw = true;\n while (!((dx < 0 ? x <= toX : x >= toX) && (dy < 0 ? y <= toY : y >= toY))) {\n const dashLength = dashPattern[idx++ % dashPattern.length];\n const nx = x + Math.cos(angle) * dashLength;\n x = dx < 0 ? Math.max(toX, nx) : Math.min(toX, nx);\n const ny = y + Math.sin(angle) * dashLength;\n y = dy < 0 ? Math.max(toY, ny) : Math.min(toY, ny);\n if (draw) {\n context.lineTo(x, y);\n }\n else {\n context.moveTo(x, y);\n }\n draw = !draw;\n }\n context.closePath();\n context.stroke();\n }\n resize(width, height) {\n this.ctx.resize(width, height);\n return this;\n }\n getContext() {\n return this.ctx;\n }\n}\nRenderer.Backends = RendererBackends;\nRenderer.LineEndType = RendererLineEndType;\n// Used by vexflow_test_helpers.ts\n// Should this be private?\n// Can we do this in a cleaner way?\nRenderer.lastContext = undefined;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Glyph } from './glyph';\nimport { GlyphNote } from './glyphnote';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\n// Map `type` to SMuFL glyph code.\nconst CODES = {\n '1': 'repeat1Bar',\n '2': 'repeat2Bars',\n '4': 'repeat4Bars',\n slash: 'repeatBarSlash',\n};\nexport class RepeatNote extends GlyphNote {\n static get CATEGORY() {\n return Category.RepeatNote;\n }\n constructor(type, noteStruct, options) {\n super(undefined, Object.assign({ duration: 'q', align_center: type !== 'slash' }, noteStruct), options);\n const glyphCode = CODES[type] || 'repeat1Bar';\n const glyph = new Glyph(glyphCode, Tables.currentMusicFont().lookupMetric('repeatNote.point', 40), {\n category: 'repeatNote',\n });\n this.setGlyph(glyph);\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Clef } from './clef';\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { KeySignature } from './keysignature';\nimport { Barline, BarlineType } from './stavebarline';\nimport { StaveModifierPosition } from './stavemodifier';\nimport { Repetition } from './staverepetition';\nimport { StaveSection } from './stavesection';\nimport { StaveTempo } from './stavetempo';\nimport { StaveText } from './stavetext';\nimport { Volta } from './stavevolta';\nimport { Tables } from './tables';\nimport { TimeSignature } from './timesignature';\nimport { Category, isBarline } from './typeguard';\nimport { RuntimeError } from './util';\n// Used by Stave.format() to sort the modifiers at the beginning and end of a stave.\n// The keys (computed property names) match the CATEGORY property in the\n// Barline, Clef, KeySignature, TimeSignature classes.\nconst SORT_ORDER_BEG_MODIFIERS = {\n [Barline.CATEGORY]: 0,\n [Clef.CATEGORY]: 1,\n [KeySignature.CATEGORY]: 2,\n [TimeSignature.CATEGORY]: 3,\n};\nconst SORT_ORDER_END_MODIFIERS = {\n [TimeSignature.CATEGORY]: 0,\n [KeySignature.CATEGORY]: 1,\n [Barline.CATEGORY]: 2,\n [Clef.CATEGORY]: 3,\n};\nexport class Stave extends Element {\n constructor(x, y, width, options) {\n super();\n // Initialized by the constructor via this.resetLines().\n this.height = 0;\n this.x = x;\n this.y = y;\n this.width = width;\n this.formatted = false;\n this.start_x = x + 5;\n this.end_x = x + width;\n this.modifiers = []; // stave modifiers (clef, key, time, barlines, coda, segno, etc.)\n this.measure = 0;\n this.clef = 'treble';\n this.endClef = undefined;\n this.resetFont();\n this.options = Object.assign({ vertical_bar_width: 10, num_lines: 5, fill_style: '#999999', left_bar: true, right_bar: true, spacing_between_lines_px: Tables.STAVE_LINE_DISTANCE, space_above_staff_ln: 4, space_below_staff_ln: 4, top_text_position: 1, bottom_text_position: 4, line_config: [] }, options);\n this.bounds = { x: this.x, y: this.y, w: this.width, h: 0 };\n this.defaultLedgerLineStyle = { strokeStyle: '#444', lineWidth: 1.4 };\n this.resetLines();\n // beg bar\n this.addModifier(new Barline(this.options.left_bar ? BarlineType.SINGLE : BarlineType.NONE));\n // end bar\n this.addEndModifier(new Barline(this.options.right_bar ? BarlineType.SINGLE : BarlineType.NONE));\n }\n static get CATEGORY() {\n return Category.Stave;\n }\n // This is the sum of the padding that normally goes on left + right of a stave during\n // drawing. Used to size staves correctly with content width.\n static get defaultPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('stave.padding') + musicFont.lookupMetric('stave.endPaddingMax');\n }\n // Right padding, used by system if startX is already determined.\n static get rightPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('stave.endPaddingMax');\n }\n /** Set default style for ledger lines. */\n setDefaultLedgerLineStyle(style) {\n this.defaultLedgerLineStyle = style;\n }\n /** Get default style for ledger lines. */\n getDefaultLedgerLineStyle() {\n return Object.assign(Object.assign({}, this.getStyle()), this.defaultLedgerLineStyle);\n }\n space(spacing) {\n return this.options.spacing_between_lines_px * spacing;\n }\n resetLines() {\n this.options.line_config = [];\n for (let i = 0; i < this.options.num_lines; i++) {\n this.options.line_config.push({ visible: true });\n }\n this.height = (this.options.num_lines + this.options.space_above_staff_ln) * this.options.spacing_between_lines_px;\n this.options.bottom_text_position = this.options.num_lines;\n }\n setNoteStartX(x) {\n if (!this.formatted)\n this.format();\n this.start_x = x;\n return this;\n }\n getNoteStartX() {\n if (!this.formatted)\n this.format();\n return this.start_x;\n }\n getNoteEndX() {\n if (!this.formatted)\n this.format();\n return this.end_x;\n }\n getTieStartX() {\n return this.start_x;\n }\n getTieEndX() {\n return this.end_x;\n }\n getX() {\n return this.x;\n }\n getNumLines() {\n return this.options.num_lines;\n }\n setNumLines(n) {\n this.options.num_lines = n;\n this.resetLines();\n return this;\n }\n setY(y) {\n this.y = y;\n return this;\n }\n getY() {\n return this.y;\n }\n getTopLineTopY() {\n return this.getYForLine(0) - Tables.STAVE_LINE_THICKNESS / 2;\n }\n getBottomLineBottomY() {\n return this.getYForLine(this.getNumLines() - 1) + Tables.STAVE_LINE_THICKNESS / 2;\n }\n setX(x) {\n const shift = x - this.x;\n this.formatted = false;\n this.x = x;\n this.start_x += shift;\n this.end_x += shift;\n for (let i = 0; i < this.modifiers.length; i++) {\n const mod = this.modifiers[i];\n mod.setX(mod.getX() + shift);\n }\n return this;\n }\n setWidth(width) {\n this.formatted = false;\n this.width = width;\n this.end_x = this.x + width;\n // reset the x position of the end barline (TODO(0xfe): This makes no sense)\n // this.modifiers[1].setX(this.end_x);\n return this;\n }\n getWidth() {\n return this.width;\n }\n getStyle() {\n return Object.assign({ fillStyle: this.options.fill_style, strokeStyle: this.options.fill_style, lineWidth: Tables.STAVE_LINE_THICKNESS }, super.getStyle());\n }\n /**\n * Set the measure number of this Stave.\n */\n setMeasure(measure) {\n this.measure = measure;\n return this;\n }\n /**\n * Return the measure number of this Stave.\n */\n getMeasure() {\n return this.measure;\n }\n /**\n * Gets the pixels to shift from the beginning of the stave\n * following the modifier at the provided index\n * @param {Number} index The index from which to determine the shift\n * @return {Number} The amount of pixels shifted\n */\n getModifierXShift(index = 0) {\n if (typeof index !== 'number') {\n throw new RuntimeError('InvalidIndex', 'Must be of number type');\n }\n if (!this.formatted)\n this.format();\n if (this.getModifiers(StaveModifierPosition.BEGIN).length === 1) {\n return 0;\n }\n // for right position modifiers zero shift seems correct, see 'Volta + Modifier Measure Test'\n if (this.modifiers[index].getPosition() === StaveModifierPosition.RIGHT) {\n return 0;\n }\n let start_x = this.start_x - this.x;\n const begBarline = this.modifiers[0];\n if (begBarline.getType() === BarlineType.REPEAT_BEGIN && start_x > begBarline.getWidth()) {\n start_x -= begBarline.getWidth();\n }\n return start_x;\n }\n /** Coda & Segno Symbol functions */\n setRepetitionType(type, yShift = 0) {\n this.modifiers.push(new Repetition(type, this.x, yShift));\n return this;\n }\n // Volta functions\n setVoltaType(type, number_t, y) {\n this.modifiers.push(new Volta(type, number_t, this.x, y));\n return this;\n }\n // Section functions\n setSection(section, y, xOffset = 0, fontSize, drawRect = true) {\n const staveSection = new StaveSection(section, this.x + xOffset, y, drawRect);\n if (fontSize)\n staveSection.setFontSize(fontSize);\n this.modifiers.push(staveSection);\n return this;\n }\n // Tempo functions\n setTempo(tempo, y) {\n this.modifiers.push(new StaveTempo(tempo, this.x, y));\n return this;\n }\n // Text functions\n setText(text, position, options = {}) {\n this.modifiers.push(new StaveText(text, position, options));\n return this;\n }\n getHeight() {\n return this.height;\n }\n getSpacingBetweenLines() {\n return this.options.spacing_between_lines_px;\n }\n getBoundingBox() {\n return new BoundingBox(this.x, this.y, this.width, this.getBottomY() - this.y);\n }\n getBottomY() {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const score_bottom = this.getYForLine(options.num_lines) + options.space_below_staff_ln * spacing;\n return score_bottom;\n }\n getBottomLineY() {\n return this.getYForLine(this.options.num_lines);\n }\n // This returns\n /** @returns the y for the *center* of a staff line */\n getYForLine(line) {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n const y = this.y + line * spacing + headroom * spacing;\n return y;\n }\n getLineForY(y) {\n // Does the reverse of getYForLine - somewhat dumb and just calls\n // getYForLine until the right value is reaches\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n return (y - this.y) / spacing - headroom;\n }\n getYForTopText(line = 0) {\n return this.getYForLine(-line - this.options.top_text_position);\n }\n getYForBottomText(line = 0) {\n return this.getYForLine(this.options.bottom_text_position + line);\n }\n getYForNote(line) {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n return this.y + headroom * spacing + 5 * spacing - line * spacing;\n }\n getYForGlyphs() {\n return this.getYForLine(3);\n }\n // This method adds a stave modifier to the stave. Note that the first two\n // modifiers (BarLines) are automatically added upon construction.\n addModifier(modifier, position) {\n if (position !== undefined) {\n modifier.setPosition(position);\n }\n modifier.setStave(this);\n this.formatted = false;\n this.modifiers.push(modifier);\n return this;\n }\n addEndModifier(modifier) {\n this.addModifier(modifier, StaveModifierPosition.END);\n return this;\n }\n // Bar Line functions\n setBegBarType(type) {\n // Only valid bar types at beginning of stave is none, single or begin repeat\n const { SINGLE, REPEAT_BEGIN, NONE } = BarlineType;\n if (type === SINGLE || type === REPEAT_BEGIN || type === NONE) {\n this.modifiers[0].setType(type);\n this.formatted = false;\n }\n return this;\n }\n setEndBarType(type) {\n // Repeat end not valid at end of stave\n if (type !== BarlineType.REPEAT_BEGIN) {\n this.modifiers[1].setType(type);\n this.formatted = false;\n }\n return this;\n }\n setClef(clefSpec, size, annotation, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n if (position === StaveModifierPosition.END) {\n this.endClef = clefSpec;\n }\n else {\n this.clef = clefSpec;\n }\n const clefs = this.getModifiers(position, Clef.CATEGORY);\n if (clefs.length === 0) {\n this.addClef(clefSpec, size, annotation, position);\n }\n else {\n clefs[0].setType(clefSpec, size, annotation);\n }\n return this;\n }\n getClef() {\n return this.clef;\n }\n setEndClef(clefSpec, size, annotation) {\n this.setClef(clefSpec, size, annotation, StaveModifierPosition.END);\n return this;\n }\n getEndClef() {\n return this.endClef;\n }\n setKeySignature(keySpec, cancelKeySpec, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n const keySignatures = this.getModifiers(position, KeySignature.CATEGORY);\n if (keySignatures.length === 0) {\n this.addKeySignature(keySpec, cancelKeySpec, position);\n }\n else {\n keySignatures[0].setKeySig(keySpec, cancelKeySpec);\n }\n return this;\n }\n setEndKeySignature(keySpec, cancelKeySpec) {\n this.setKeySignature(keySpec, cancelKeySpec, StaveModifierPosition.END);\n return this;\n }\n setTimeSignature(timeSpec, customPadding, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n const timeSignatures = this.getModifiers(position, TimeSignature.CATEGORY);\n if (timeSignatures.length === 0) {\n this.addTimeSignature(timeSpec, customPadding, position);\n }\n else {\n timeSignatures[0].setTimeSig(timeSpec);\n }\n return this;\n }\n setEndTimeSignature(timeSpec, customPadding) {\n this.setTimeSignature(timeSpec, customPadding, StaveModifierPosition.END);\n return this;\n }\n /**\n * Add a key signature to the stave.\n *\n * Example:\n * `stave.addKeySignature('Db');`\n * @param keySpec new key specification `[A-G][b|#]?`\n * @param cancelKeySpec\n * @param position\n * @returns\n */\n addKeySignature(keySpec, cancelKeySpec, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n this.addModifier(new KeySignature(keySpec, cancelKeySpec).setPosition(position), position);\n return this;\n }\n /**\n * Add a clef to the stave.\n *\n * Example:\n *\n * stave.addClef('treble')\n * @param clef clef (treble|bass|...) see {@link Clef.types}\n * @param size\n * @param annotation\n * @param position\n * @returns\n */\n addClef(clef, size, annotation, position) {\n if (position === undefined || position === StaveModifierPosition.BEGIN) {\n this.clef = clef;\n }\n else if (position === StaveModifierPosition.END) {\n this.endClef = clef;\n }\n this.addModifier(new Clef(clef, size, annotation), position);\n return this;\n }\n addEndClef(clef, size, annotation) {\n this.addClef(clef, size, annotation, StaveModifierPosition.END);\n return this;\n }\n /**\n * Add a time signature to the stave\n *\n * Example:\n *\n * `stave.addTimeSignature('4/4');`\n * @param timeSpec time signature specification `(C\\||C|\\d\\/\\d)`\n * @param customPadding\n * @param position\n * @returns\n */\n addTimeSignature(timeSpec, customPadding, position) {\n this.addModifier(new TimeSignature(timeSpec, customPadding), position);\n return this;\n }\n addEndTimeSignature(timeSpec, customPadding) {\n this.addTimeSignature(timeSpec, customPadding, StaveModifierPosition.END);\n return this;\n }\n // Deprecated\n addTrebleGlyph() {\n this.addClef('treble');\n return this;\n }\n /**\n * @param position\n * @param category\n * @returns array of StaveModifiers that match the provided position and category.\n */\n getModifiers(position, category) {\n const noPosition = position === undefined;\n const noCategory = category === undefined;\n if (noPosition && noCategory) {\n return this.modifiers;\n }\n else if (noPosition) {\n // A category was provided.\n return this.modifiers.filter((m) => category === m.getCategory());\n }\n else if (noCategory) {\n // A position was provided.\n return this.modifiers.filter((m) => position === m.getPosition());\n }\n else {\n // Both position and category were provided!\n return this.modifiers.filter((m) => position === m.getPosition() && category === m.getCategory());\n }\n }\n /**\n * Use the modifier's `getCategory()` as a key for the `order` array.\n * The retrieved value is used to sort modifiers from left to right (0 to to 3).\n */\n sortByCategory(items, order) {\n for (let i = items.length - 1; i >= 0; i--) {\n for (let j = 0; j < i; j++) {\n if (order[items[j].getCategory()] > order[items[j + 1].getCategory()]) {\n const temp = items[j];\n items[j] = items[j + 1];\n items[j + 1] = temp;\n }\n }\n }\n }\n format() {\n const begBarline = this.modifiers[0];\n const endBarline = this.modifiers[1];\n const begModifiers = this.getModifiers(StaveModifierPosition.BEGIN);\n const endModifiers = this.getModifiers(StaveModifierPosition.END);\n this.sortByCategory(begModifiers, SORT_ORDER_BEG_MODIFIERS);\n this.sortByCategory(endModifiers, SORT_ORDER_END_MODIFIERS);\n if (begModifiers.length > 1 && begBarline.getType() === BarlineType.REPEAT_BEGIN) {\n begModifiers.push(begModifiers.splice(0, 1)[0]);\n begModifiers.splice(0, 0, new Barline(BarlineType.SINGLE));\n }\n if (endModifiers.indexOf(endBarline) > 0) {\n endModifiers.splice(0, 0, new Barline(BarlineType.NONE));\n }\n let width;\n let padding;\n let modifier;\n let offset = 0;\n let x = this.x;\n for (let i = 0; i < begModifiers.length; i++) {\n modifier = begModifiers[i];\n padding = modifier.getPadding(i + offset);\n width = modifier.getWidth();\n x += padding;\n modifier.setX(x);\n x += width;\n if (padding + width === 0)\n offset--;\n }\n this.start_x = x;\n x = this.x + this.width;\n const widths = {\n left: 0,\n right: 0,\n paddingRight: 0,\n paddingLeft: 0,\n };\n let lastBarlineIdx = 0;\n for (let i = 0; i < endModifiers.length; i++) {\n modifier = endModifiers[i];\n lastBarlineIdx = isBarline(modifier) ? i : lastBarlineIdx;\n widths.right = 0;\n widths.left = 0;\n widths.paddingRight = 0;\n widths.paddingLeft = 0;\n const layoutMetrics = modifier.getLayoutMetrics();\n if (layoutMetrics) {\n if (i !== 0) {\n widths.right = layoutMetrics.xMax || 0;\n widths.paddingRight = layoutMetrics.paddingRight || 0;\n }\n widths.left = -layoutMetrics.xMin || 0;\n widths.paddingLeft = layoutMetrics.paddingLeft || 0;\n if (i === endModifiers.length - 1) {\n widths.paddingLeft = 0;\n }\n }\n else {\n widths.paddingRight = modifier.getPadding(i - lastBarlineIdx);\n if (i !== 0) {\n widths.right = modifier.getWidth();\n }\n if (i === 0) {\n widths.left = modifier.getWidth();\n }\n }\n x -= widths.paddingRight;\n x -= widths.right;\n modifier.setX(x);\n x -= widths.left;\n x -= widths.paddingLeft;\n }\n this.end_x = endModifiers.length === 1 ? this.x + this.width : x;\n this.formatted = true;\n }\n /**\n * All drawing functions below need the context to be set.\n */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n ctx.openGroup('stave', this.getAttribute('id'));\n if (!this.formatted)\n this.format();\n const num_lines = this.options.num_lines;\n const width = this.width;\n const x = this.x;\n let y;\n // Render lines\n for (let line = 0; line < num_lines; line++) {\n y = this.getYForLine(line);\n this.applyStyle();\n if (this.options.line_config[line].visible) {\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.lineTo(x + width, y);\n ctx.stroke();\n }\n this.restoreStyle();\n }\n // Draw the modifiers (bar lines, coda, segno, repeat brackets, etc.)\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n // Only draw modifier if it has a draw function\n if (typeof modifier.draw === 'function') {\n modifier.applyStyle(ctx);\n modifier.draw(this, this.getModifierXShift(i));\n modifier.restoreStyle(ctx);\n }\n }\n // Render measure numbers\n if (this.measure > 0) {\n ctx.save();\n ctx.setFont(this.textFont);\n const textWidth = ctx.measureText('' + this.measure).width;\n y = this.getYForTopText(0) + 3;\n ctx.fillText('' + this.measure, this.x - textWidth / 2, y);\n ctx.restore();\n }\n ctx.closeGroup();\n return this;\n }\n getVerticalBarWidth() {\n return this.options.vertical_bar_width;\n }\n /**\n * Get the current configuration for the Stave.\n * @return {Array} An array of configuration objects.\n */\n getConfigForLines() {\n return this.options.line_config;\n }\n /**\n * Configure properties of the lines in the Stave\n * @param line_number The index of the line to configure.\n * @param line_config An configuration object for the specified line.\n * @throws RuntimeError \"StaveConfigError\" When the specified line number is out of\n * range of the number of lines specified in the constructor.\n */\n setConfigForLine(line_number, line_config) {\n if (line_number >= this.options.num_lines || line_number < 0) {\n throw new RuntimeError('StaveConfigError', 'The line number must be within the range of the number of lines in the Stave.');\n }\n if (line_config.visible === undefined) {\n throw new RuntimeError('StaveConfigError', \"The line configuration object is missing the 'visible' property.\");\n }\n if (typeof line_config.visible !== 'boolean') {\n throw new RuntimeError('StaveConfigError', \"The line configuration objects 'visible' property must be true or false.\");\n }\n this.options.line_config[line_number] = line_config;\n return this;\n }\n /**\n * Set the staff line configuration array for all of the lines at once.\n * @param lines_configuration An array of line configuration objects. These objects\n * are of the same format as the single one passed in to setLineConfiguration().\n * The caller can set null for any line config entry if it is desired that the default be used\n * @throws RuntimeError \"StaveConfigError\" When the lines_configuration array does not have\n * exactly the same number of elements as the num_lines configuration object set in\n * the constructor.\n */\n setConfigForLines(lines_configuration) {\n if (lines_configuration.length !== this.options.num_lines) {\n throw new RuntimeError('StaveConfigError', 'The length of the lines configuration array must match the number of lines in the Stave');\n }\n // Make sure the defaults are present in case an incomplete set of\n // configuration options were supplied.\n // eslint-disable-next-line\n for (const line_config in lines_configuration) {\n // Allow '{}' to be used if the caller just wants the default for a particular node.\n if (lines_configuration[line_config].visible == undefined) {\n lines_configuration[line_config] = this.options.line_config[line_config];\n }\n this.options.line_config[line_config] = Object.assign(Object.assign({}, this.options.line_config[line_config]), lines_configuration[line_config]);\n }\n this.options.line_config = lines_configuration;\n return this;\n }\n static formatBegModifiers(staves) {\n let maxX = 0;\n // align note start\n staves.forEach((stave) => {\n if (stave.getNoteStartX() > maxX)\n maxX = stave.getNoteStartX();\n });\n staves.forEach((stave) => {\n stave.setNoteStartX(maxX);\n });\n maxX = 0;\n // align REPEAT_BEGIN\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.Barline);\n modifiers.forEach((modifier) => {\n if (modifier.getType() == BarlineType.REPEAT_BEGIN)\n if (modifier.getX() > maxX)\n maxX = modifier.getX();\n });\n });\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.Barline);\n modifiers.forEach((modifier) => {\n if (modifier.getType() == BarlineType.REPEAT_BEGIN)\n modifier.setX(maxX);\n });\n });\n maxX = 0;\n // Align time signatures\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.TimeSignature);\n modifiers.forEach((modifier) => {\n if (modifier.getX() > maxX)\n maxX = modifier.getX();\n });\n });\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.TimeSignature);\n modifiers.forEach((modifier) => {\n modifier.setX(maxX);\n });\n });\n }\n}\nStave.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 8,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Author Larry Kuhns 2011\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport var BarlineType;\n(function (BarlineType) {\n BarlineType[BarlineType[\"SINGLE\"] = 1] = \"SINGLE\";\n BarlineType[BarlineType[\"DOUBLE\"] = 2] = \"DOUBLE\";\n BarlineType[BarlineType[\"END\"] = 3] = \"END\";\n BarlineType[BarlineType[\"REPEAT_BEGIN\"] = 4] = \"REPEAT_BEGIN\";\n BarlineType[BarlineType[\"REPEAT_END\"] = 5] = \"REPEAT_END\";\n BarlineType[BarlineType[\"REPEAT_BOTH\"] = 6] = \"REPEAT_BOTH\";\n BarlineType[BarlineType[\"NONE\"] = 7] = \"NONE\";\n})(BarlineType || (BarlineType = {}));\nexport class Barline extends StaveModifier {\n constructor(type) {\n super();\n this.thickness = Tables.STAVE_LINE_THICKNESS;\n const TYPE = BarlineType;\n this.widths = {};\n this.widths[TYPE.SINGLE] = 5;\n this.widths[TYPE.DOUBLE] = 5;\n this.widths[TYPE.END] = 5;\n this.widths[TYPE.REPEAT_BEGIN] = 5;\n this.widths[TYPE.REPEAT_END] = 5;\n this.widths[TYPE.REPEAT_BOTH] = 5;\n this.widths[TYPE.NONE] = 5;\n this.paddings = {};\n this.paddings[TYPE.SINGLE] = 0;\n this.paddings[TYPE.DOUBLE] = 0;\n this.paddings[TYPE.END] = 0;\n this.paddings[TYPE.REPEAT_BEGIN] = 15;\n this.paddings[TYPE.REPEAT_END] = 15;\n this.paddings[TYPE.REPEAT_BOTH] = 15;\n this.paddings[TYPE.NONE] = 0;\n this.layoutMetricsMap = {};\n this.layoutMetricsMap[TYPE.SINGLE] = {\n xMin: 0,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.DOUBLE] = {\n xMin: -3,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.END] = {\n xMin: -5,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_END] = {\n xMin: -10,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_BEGIN] = {\n xMin: -2,\n xMax: 10,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_BOTH] = {\n xMin: -10,\n xMax: 10,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.NONE] = {\n xMin: 0,\n xMax: 0,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.setPosition(StaveModifierPosition.BEGIN);\n this.setType(type);\n }\n static get CATEGORY() {\n return Category.Barline;\n }\n static get type() {\n return BarlineType;\n }\n static get typeString() {\n return {\n single: BarlineType.SINGLE,\n double: BarlineType.DOUBLE,\n end: BarlineType.END,\n repeatBegin: BarlineType.REPEAT_BEGIN,\n repeatEnd: BarlineType.REPEAT_END,\n repeatBoth: BarlineType.REPEAT_BOTH,\n none: BarlineType.NONE,\n };\n }\n getType() {\n return this.type;\n }\n setType(type) {\n this.type = typeof type === 'string' ? Barline.typeString[type] : type;\n this.setWidth(this.widths[this.type]);\n this.setPadding(this.paddings[this.type]);\n this.setLayoutMetrics(this.layoutMetricsMap[this.type]);\n return this;\n }\n // Draw barlines\n draw(stave) {\n stave.checkContext();\n this.setRendered();\n switch (this.type) {\n case BarlineType.SINGLE:\n this.drawVerticalBar(stave, this.x, false);\n break;\n case BarlineType.DOUBLE:\n this.drawVerticalBar(stave, this.x, true);\n break;\n case BarlineType.END:\n this.drawVerticalEndBar(stave, this.x);\n break;\n case BarlineType.REPEAT_BEGIN:\n // If the barline is shifted over (in front of clef/time/key)\n // Draw vertical bar at the beginning.\n this.drawRepeatBar(stave, this.x, true);\n if (stave.getX() !== this.x) {\n this.drawVerticalBar(stave, stave.getX());\n }\n break;\n case BarlineType.REPEAT_END:\n this.drawRepeatBar(stave, this.x, false);\n break;\n case BarlineType.REPEAT_BOTH:\n this.drawRepeatBar(stave, this.x, false);\n this.drawRepeatBar(stave, this.x, true);\n break;\n default:\n // Default is NONE, so nothing to draw\n break;\n }\n }\n drawVerticalBar(stave, x, double_bar) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n if (double_bar) {\n staveCtx.fillRect(x - 3, topY, 1, botY - topY);\n }\n staveCtx.fillRect(x, topY, 1, botY - topY);\n }\n drawVerticalEndBar(stave, x) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n staveCtx.fillRect(x - 5, topY, 1, botY - topY);\n staveCtx.fillRect(x - 2, topY, 3, botY - topY);\n }\n drawRepeatBar(stave, x, begin) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n let x_shift = 3;\n if (!begin) {\n x_shift = -5;\n }\n staveCtx.fillRect(x + x_shift, topY, 1, botY - topY);\n staveCtx.fillRect(x - 2, topY, 3, botY - topY);\n const dot_radius = 2;\n // Shift dots left or right\n if (begin) {\n x_shift += 4;\n }\n else {\n x_shift -= 4;\n }\n const dot_x = x + x_shift + dot_radius / 2;\n // calculate the y offset based on number of stave lines\n let y_offset = (stave.getNumLines() - 1) * stave.getSpacingBetweenLines();\n y_offset = y_offset / 2 - stave.getSpacingBetweenLines() / 2;\n let dot_y = topY + y_offset + dot_radius / 2;\n // draw the top repeat dot\n staveCtx.beginPath();\n staveCtx.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false);\n staveCtx.fill();\n // draw the bottom repeat dot\n dot_y += stave.getSpacingBetweenLines();\n staveCtx.beginPath();\n staveCtx.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false);\n staveCtx.fill();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nfunction drawBoldDoubleLine(ctx, type, topX, topY, botY) {\n if (type !== StaveConnector.type.BOLD_DOUBLE_LEFT && type !== StaveConnector.type.BOLD_DOUBLE_RIGHT) {\n throw new RuntimeError('InvalidConnector', 'A REPEAT_BEGIN or REPEAT_END type must be provided.');\n }\n let x_shift = 3;\n let variableWidth = 3.5; // Width for avoiding anti-aliasing width issues\n const thickLineOffset = 2; // For aesthetics\n if (type === StaveConnector.type.BOLD_DOUBLE_RIGHT) {\n x_shift = -5; // Flips the side of the thin line\n variableWidth = 3;\n }\n // Thin line\n ctx.fillRect(topX + x_shift, topY, 1, botY - topY);\n // Thick line\n ctx.fillRect(topX - thickLineOffset, topY, variableWidth, botY - topY);\n}\n/** StaveConnector implements the connector lines between staves of a system. */\nexport class StaveConnector extends Element {\n constructor(top_stave, bottom_stave) {\n super();\n this.thickness = Tables.STAVE_LINE_THICKNESS;\n this.width = 3;\n this.top_stave = top_stave;\n this.bottom_stave = bottom_stave;\n this.type = StaveConnector.type.DOUBLE;\n this.resetFont();\n // 1. Offset Bold Double Left to align with offset Repeat Begin bars\n // 2. Offset BRACE type not to overlap with another StaveConnector\n this.x_shift = 0;\n this.texts = [];\n }\n static get CATEGORY() {\n return Category.StaveConnector;\n }\n /**\n * Set type.\n * @param type see {@link StaveConnector.type} & {@link StaveConnector.typeString}\n */\n setType(type) {\n const newType = typeof type === 'string' ? StaveConnector.typeString[type] : type;\n // Be certain that the type is a valid type:\n if (Object.values(StaveConnector.type).includes(newType)) {\n this.type = newType;\n }\n return this;\n }\n /**\n * Get type.\n * @returns number {@link StaveConnector.type}\n */\n getType() {\n return this.type;\n }\n /** Set optional associated Text. */\n setText(text, options = {}) {\n this.texts.push({\n content: text,\n options: Object.assign({ shift_x: 0, shift_y: 0 }, options),\n });\n return this;\n }\n setXShift(x_shift) {\n if (typeof x_shift !== 'number') {\n throw new RuntimeError('InvalidType', 'x_shift must be a Number');\n }\n this.x_shift = x_shift;\n return this;\n }\n getXShift() {\n return this.x_shift;\n }\n /** Render connector and associated text. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let topY = this.top_stave.getYForLine(0);\n let botY = this.bottom_stave.getYForLine(this.bottom_stave.getNumLines() - 1) + this.thickness;\n let width = this.width;\n let topX = this.top_stave.getX();\n const isRightSidedConnector = this.type === StaveConnector.type.SINGLE_RIGHT ||\n this.type === StaveConnector.type.BOLD_DOUBLE_RIGHT ||\n this.type === StaveConnector.type.THIN_DOUBLE;\n if (isRightSidedConnector) {\n topX = this.top_stave.getX() + this.top_stave.getWidth();\n }\n let attachment_height = botY - topY;\n switch (this.type) {\n case StaveConnector.type.SINGLE:\n width = 1;\n break;\n case StaveConnector.type.SINGLE_LEFT:\n width = 1;\n break;\n case StaveConnector.type.SINGLE_RIGHT:\n width = 1;\n break;\n case StaveConnector.type.DOUBLE:\n topX -= this.width + 2;\n topY -= this.thickness;\n attachment_height += 0.5;\n break;\n case StaveConnector.type.BRACE: {\n width = 12;\n // May need additional code to draw brace\n const x1 = this.top_stave.getX() - 2 + this.x_shift;\n const y1 = topY;\n const x3 = x1;\n const y3 = botY;\n const x2 = x1 - width;\n const y2 = y1 + attachment_height / 2.0;\n const cpx1 = x2 - 0.9 * width;\n const cpy1 = y1 + 0.2 * attachment_height;\n const cpx2 = x1 + 1.1 * width;\n const cpy2 = y2 - 0.135 * attachment_height;\n const cpx3 = cpx2;\n const cpy3 = y2 + 0.135 * attachment_height;\n const cpx4 = cpx1;\n const cpy4 = y3 - 0.2 * attachment_height;\n const cpx5 = x2 - width;\n const cpy5 = cpy4;\n const cpx6 = x1 + 0.4 * width;\n const cpy6 = y2 + 0.135 * attachment_height;\n const cpx7 = cpx6;\n const cpy7 = y2 - 0.135 * attachment_height;\n const cpx8 = cpx5;\n const cpy8 = cpy1;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);\n ctx.bezierCurveTo(cpx3, cpy3, cpx4, cpy4, x3, y3);\n ctx.bezierCurveTo(cpx5, cpy5, cpx6, cpy6, x2, y2);\n ctx.bezierCurveTo(cpx7, cpy7, cpx8, cpy8, x1, y1);\n ctx.fill();\n ctx.stroke();\n break;\n }\n case StaveConnector.type.BRACKET:\n topY -= 6;\n botY += 6;\n attachment_height = botY - topY;\n Glyph.renderGlyph(ctx, topX - 5, topY, 40, 'bracketTop');\n Glyph.renderGlyph(ctx, topX - 5, botY, 40, 'bracketBottom');\n topX -= this.width + 2;\n break;\n case StaveConnector.type.BOLD_DOUBLE_LEFT:\n drawBoldDoubleLine(ctx, this.type, topX + this.x_shift, topY, botY - this.thickness);\n break;\n case StaveConnector.type.BOLD_DOUBLE_RIGHT:\n drawBoldDoubleLine(ctx, this.type, topX, topY, botY - this.thickness);\n break;\n case StaveConnector.type.THIN_DOUBLE:\n width = 1;\n attachment_height -= this.thickness;\n break;\n case StaveConnector.type.NONE:\n break;\n default:\n throw new RuntimeError('InvalidType', `The provided StaveConnector.type (${this.type}) is invalid.`);\n }\n if (this.type !== StaveConnector.type.BRACE &&\n this.type !== StaveConnector.type.BOLD_DOUBLE_LEFT &&\n this.type !== StaveConnector.type.BOLD_DOUBLE_RIGHT &&\n this.type !== StaveConnector.type.NONE) {\n ctx.fillRect(topX, topY, width, attachment_height);\n }\n // If the connector is a thin double barline, draw the paralell line\n if (this.type === StaveConnector.type.THIN_DOUBLE) {\n ctx.fillRect(topX - 3, topY, width, attachment_height);\n }\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n // Add stave connector text\n for (let i = 0; i < this.texts.length; i++) {\n const text = this.texts[i];\n const text_width = ctx.measureText('' + text.content).width;\n const x = this.top_stave.getX() - text_width - 24 + text.options.shift_x;\n const y = (this.top_stave.getYForLine(0) + this.bottom_stave.getBottomLineY()) / 2 + text.options.shift_y;\n ctx.fillText('' + text.content, x, y + 4);\n }\n ctx.restore();\n }\n}\nStaveConnector.TEXT_FONT = {\n family: Font.SERIF,\n size: 16,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n/**\n * SINGLE_LEFT and SINGLE are the same value for compatibility\n * with older versions of vexflow which didn't have right sided\n * stave connectors.\n */\nStaveConnector.type = {\n SINGLE_RIGHT: 0,\n SINGLE_LEFT: 1,\n SINGLE: 1,\n DOUBLE: 2,\n BRACE: 3,\n BRACKET: 4,\n BOLD_DOUBLE_LEFT: 5,\n BOLD_DOUBLE_RIGHT: 6,\n THIN_DOUBLE: 7,\n NONE: 8,\n};\n/**\n * Connector type:\n * * \"singleRight\"\n * * \"singleLeft\"\n * * \"single\"\n * * \"double\"\n * * \"brace\"\n * * \"bracket\"\n * * \"boldDoubleLeft\"\n * * \"boldDoubleRight\"\n * * \"thinDouble\"\n * * \"none\"\n */\nStaveConnector.typeString = {\n singleRight: StaveConnector.type.SINGLE_RIGHT,\n singleLeft: StaveConnector.type.SINGLE_LEFT,\n single: StaveConnector.type.SINGLE,\n double: StaveConnector.type.DOUBLE,\n brace: StaveConnector.type.BRACE,\n bracket: StaveConnector.type.BRACKET,\n boldDoubleLeft: StaveConnector.type.BOLD_DOUBLE_LEFT,\n boldDoubleRight: StaveConnector.type.BOLD_DOUBLE_RIGHT,\n thinDouble: StaveConnector.type.THIN_DOUBLE,\n none: StaveConnector.type.NONE,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Author: Raffaele Viglianti, 2012 http://itisnotsound.wordpress.com/\n//\n// This class implements hairpins between notes.\n// Hairpins can be either crescendo or decrescendo.\nimport { Element } from './element';\nimport { Modifier } from './modifier';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveHairpin extends Element {\n /**\n * Create a new hairpin from the specified notes.\n *\n * @param {!Object} notes The notes to tie up.\n * Notes is a struct that has:\n *\n * {\n * first_note: Note,\n * last_note: Note,\n * }\n * @param {!Object} type The type of hairpin\n */\n constructor(notes, type) {\n super();\n this.setNotes(notes);\n this.hairpin = type;\n this.position = Modifier.Position.BELOW;\n this.render_options = {\n height: 10,\n y_shift: 0,\n left_shift_px: 0,\n right_shift_px: 0,\n right_shift_ticks: 0,\n left_shift_ticks: 0,\n };\n }\n static get CATEGORY() {\n return Category.StaveHairpin;\n }\n /* Helper function to convert ticks into pixels.\n * Requires a Formatter with voices joined and formatted (to\n * get pixels per tick)\n *\n * options is struct that has:\n *\n * {\n * height: px,\n * y_shift: px, // vertical offset\n * left_shift_ticks: 0, // left horizontal offset expressed in ticks\n * right_shift_ticks: 0 // right horizontal offset expressed in ticks\n * }\n *\n **/\n static FormatByTicksAndDraw(ctx, formatter, notes, type, position, options) {\n var _a, _b;\n const ppt = formatter.pixelsPerTick;\n if (ppt == null) {\n throw new RuntimeError('BadArguments', 'A valid Formatter must be provide to draw offsets by ticks.');\n }\n const l_shift_px = ppt * ((_a = options.left_shift_ticks) !== null && _a !== void 0 ? _a : 0);\n const r_shift_px = ppt * ((_b = options.right_shift_ticks) !== null && _b !== void 0 ? _b : 0);\n const hairpin_options = {\n height: options.height,\n y_shift: options.y_shift,\n left_shift_px: l_shift_px,\n right_shift_px: r_shift_px,\n right_shift_ticks: 0,\n left_shift_ticks: 0,\n };\n new StaveHairpin({\n first_note: notes.first_note,\n last_note: notes.last_note,\n }, type)\n .setContext(ctx)\n .setRenderOptions(hairpin_options)\n .setPosition(position)\n .draw();\n }\n setPosition(position) {\n if (position === Modifier.Position.ABOVE || position === Modifier.Position.BELOW) {\n this.position = position;\n }\n return this;\n }\n setRenderOptions(options) {\n if (options.height != null &&\n options.y_shift != null &&\n options.left_shift_px != null &&\n options.right_shift_px != null) {\n this.render_options = options;\n }\n return this;\n }\n /**\n * Set the notes to attach this hairpin to.\n *\n * @param {!Object} notes The start and end notes.\n */\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Hairpin needs to have either first_note or last_note set.');\n }\n this.notes = notes;\n this.first_note = notes.first_note;\n this.last_note = notes.last_note;\n return this;\n }\n renderHairpin(params) {\n const ctx = this.checkContext();\n let dis = this.render_options.y_shift + 20;\n let y_shift = params.first_y;\n if (this.position === Modifier.Position.ABOVE) {\n dis = -dis + 30;\n y_shift = params.first_y - params.staff_height;\n }\n const l_shift = this.render_options.left_shift_px;\n const r_shift = this.render_options.right_shift_px;\n ctx.beginPath();\n switch (this.hairpin) {\n case StaveHairpin.type.CRESC:\n ctx.moveTo(params.last_x + r_shift, y_shift + dis);\n ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height / 2 + dis);\n ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height + dis);\n break;\n case StaveHairpin.type.DECRESC:\n ctx.moveTo(params.first_x + l_shift, y_shift + dis);\n ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height / 2 + dis);\n ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height + dis);\n break;\n default:\n // Default is NONE, so nothing to draw\n break;\n }\n ctx.stroke();\n ctx.closePath();\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const firstNote = this.first_note;\n const lastNote = this.last_note;\n if (!firstNote || !lastNote)\n throw new RuntimeError('NoNote', 'Notes required to draw');\n const start = firstNote.getModifierStartXY(this.position, 0);\n const end = lastNote.getModifierStartXY(this.position, 0);\n this.renderHairpin({\n first_x: start.x,\n last_x: end.x,\n first_y: firstNote.checkStave().getY() + firstNote.checkStave().getHeight(),\n last_y: lastNote.checkStave().getY() + lastNote.checkStave().getHeight(),\n staff_height: firstNote.checkStave().getHeight(),\n });\n }\n}\nStaveHairpin.type = {\n CRESC: 1,\n DECRESC: 2,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This file implements `StaveLine` which are simply lines that connect\n// two notes. This object is highly configurable, see the `render_options`.\n// A simple line is often used for notating glissando articulations, but you\n// can format a `StaveLine` with arrows or colors for more pedagogical\n// purposes, such as diagrams.\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { TextJustification } from './textnote';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n// Attribution: Arrow rendering implementations based off of\n// Patrick Horgan's article, \"Drawing lines and arcs with\n// arrow heads on HTML5 Canvas\"\n//\n// Draw an arrow head that connects between 3 coordinates.\nfunction drawArrowHead(ctx, x0, y0, x1, y1, x2, y2) {\n // all cases do this.\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.lineTo(x0, y0);\n ctx.closePath();\n ctx.fill();\n}\nexport class StaveLine extends Element {\n // Initialize the StaveLine with the given `notes`.\n //\n // `notes` is a struct that has:\n //\n // ```\n // {\n // first_note: Note,\n // last_note: Note,\n // first_indices: [n1, n2, n3],\n // last_indices: [n1, n2, n3]\n // }\n // ```\n constructor(notes) {\n super();\n this.setNotes(notes);\n this.text = '';\n this.resetFont();\n this.render_options = {\n // Space to add to the left or the right\n padding_left: 4,\n padding_right: 3,\n // The width of the line in pixels\n line_width: 1,\n // An array of line/space lengths. (TODO/QUESTION: Is this supported in SVG?).\n line_dash: undefined,\n // Can draw rounded line end, instead of a square. (TODO/QUESTION: Is this supported in SVG?).\n rounded_end: true,\n // The color of the line and arrowheads\n color: undefined,\n // Flags to draw arrows on each end of the line\n draw_start_arrow: false,\n draw_end_arrow: false,\n // The length of the arrowhead sides\n arrowhead_length: 10,\n // The angle of the arrowhead\n arrowhead_angle: Math.PI / 8,\n // The position of the text\n text_position_vertical: StaveLine.TextVerticalPosition.TOP,\n text_justification: StaveLine.TextJustification.CENTER,\n };\n }\n static get CATEGORY() {\n return Category.StaveLine;\n }\n // The the annotation for the `StaveLine`\n setText(text) {\n this.text = text;\n return this;\n }\n // Set the notes for the `StaveLine`\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Notes needs to have either first_note or last_note set.');\n }\n if (!notes.first_indices)\n notes.first_indices = [0];\n if (!notes.last_indices)\n notes.last_indices = [0];\n if (notes.first_indices.length !== notes.last_indices.length) {\n throw new RuntimeError('BadArguments', 'Connected notes must have same number of indices.');\n }\n this.notes = notes;\n this.first_note = notes.first_note;\n this.first_indices = notes.first_indices;\n this.last_note = notes.last_note;\n this.last_indices = notes.last_indices;\n return this;\n }\n // Apply the style of the `StaveLine` to the context\n applyLineStyle() {\n const ctx = this.checkContext();\n const render_options = this.render_options;\n if (render_options.line_dash) {\n ctx.setLineDash(render_options.line_dash);\n }\n if (render_options.line_width) {\n ctx.setLineWidth(render_options.line_width);\n }\n if (render_options.rounded_end) {\n ctx.setLineCap('round');\n }\n else {\n ctx.setLineCap('square');\n }\n }\n // Apply the text styling to the context\n applyFontStyle() {\n const ctx = this.checkContext();\n ctx.setFont(this.textFont);\n const render_options = this.render_options;\n const color = render_options.color;\n if (color) {\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n }\n }\n // Helper function to draw a line with arrow heads\n drawArrowLine(ctx, pt1, pt2) {\n const both_arrows = this.render_options.draw_start_arrow && this.render_options.draw_end_arrow;\n const x1 = pt1.x;\n const y1 = pt1.y;\n const x2 = pt2.x;\n const y2 = pt2.y;\n // For ends with arrow we actually want to stop before we get to the arrow\n // so that wide lines won't put a flat end on the arrow.\n const distance = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n const ratio = (distance - this.render_options.arrowhead_length / 3) / distance;\n let end_x;\n let end_y;\n let start_x;\n let start_y;\n if (this.render_options.draw_end_arrow || both_arrows) {\n end_x = Math.round(x1 + (x2 - x1) * ratio);\n end_y = Math.round(y1 + (y2 - y1) * ratio);\n }\n else {\n end_x = x2;\n end_y = y2;\n }\n if (this.render_options.draw_start_arrow || both_arrows) {\n start_x = x1 + (x2 - x1) * (1 - ratio);\n start_y = y1 + (y2 - y1) * (1 - ratio);\n }\n else {\n start_x = x1;\n start_y = y1;\n }\n if (this.render_options.color) {\n ctx.setStrokeStyle(this.render_options.color);\n ctx.setFillStyle(this.render_options.color);\n }\n // Draw the shaft of the arrow\n ctx.beginPath();\n ctx.moveTo(start_x, start_y);\n ctx.lineTo(end_x, end_y);\n ctx.stroke();\n ctx.closePath();\n // calculate the angle of the line\n const line_angle = Math.atan2(y2 - y1, x2 - x1);\n // h is the line length of a side of the arrow head\n const h = Math.abs(this.render_options.arrowhead_length / Math.cos(this.render_options.arrowhead_angle));\n let angle1;\n let angle2;\n let top_x;\n let top_y;\n let bottom_x;\n let bottom_y;\n if (this.render_options.draw_end_arrow || both_arrows) {\n angle1 = line_angle + Math.PI + this.render_options.arrowhead_angle;\n top_x = x2 + Math.cos(angle1) * h;\n top_y = y2 + Math.sin(angle1) * h;\n angle2 = line_angle + Math.PI - this.render_options.arrowhead_angle;\n bottom_x = x2 + Math.cos(angle2) * h;\n bottom_y = y2 + Math.sin(angle2) * h;\n drawArrowHead(ctx, top_x, top_y, x2, y2, bottom_x, bottom_y);\n }\n if (this.render_options.draw_start_arrow || both_arrows) {\n angle1 = line_angle + this.render_options.arrowhead_angle;\n top_x = x1 + Math.cos(angle1) * h;\n top_y = y1 + Math.sin(angle1) * h;\n angle2 = line_angle - this.render_options.arrowhead_angle;\n bottom_x = x1 + Math.cos(angle2) * h;\n bottom_y = y1 + Math.sin(angle2) * h;\n drawArrowHead(ctx, top_x, top_y, x1, y1, bottom_x, bottom_y);\n }\n }\n // Renders the `StaveLine` on the context\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const first_note = this.first_note;\n const last_note = this.last_note;\n const render_options = this.render_options;\n ctx.save();\n this.applyLineStyle();\n // Cycle through each set of indices and draw lines\n let start_position = { x: 0, y: 0 };\n let end_position = { x: 0, y: 0 };\n this.first_indices.forEach((first_index, i) => {\n const last_index = this.last_indices[i];\n // Get initial coordinates for the start/end of the line\n start_position = first_note.getModifierStartXY(2, first_index);\n end_position = last_note.getModifierStartXY(1, last_index);\n const upwards_slope = start_position.y > end_position.y;\n // Adjust `x` coordinates for modifiers\n start_position.x += first_note.getMetrics().modRightPx + render_options.padding_left;\n end_position.x -= last_note.getMetrics().modLeftPx + render_options.padding_right;\n // Adjust first `x` coordinates for displacements\n const notehead_width = first_note.getGlyph().getWidth();\n const first_displaced = first_note.getKeyProps()[first_index].displaced;\n if (first_displaced && first_note.getStemDirection() === 1) {\n start_position.x += notehead_width + render_options.padding_left;\n }\n // Adjust last `x` coordinates for displacements\n const last_displaced = last_note.getKeyProps()[last_index].displaced;\n if (last_displaced && last_note.getStemDirection() === -1) {\n end_position.x -= notehead_width + render_options.padding_right;\n }\n // Adjust y position better if it's not coming from the center of the note\n start_position.y += upwards_slope ? -3 : 1;\n end_position.y += upwards_slope ? 2 : 0;\n this.drawArrowLine(ctx, start_position, end_position);\n });\n ctx.restore();\n // Determine the x coordinate where to start the text\n const text_width = ctx.measureText(this.text).width;\n const justification = render_options.text_justification;\n let x = 0;\n if (justification === StaveLine.TextJustification.LEFT) {\n x = start_position.x;\n }\n else if (justification === StaveLine.TextJustification.CENTER) {\n const delta_x = end_position.x - start_position.x;\n const center_x = delta_x / 2 + start_position.x;\n x = center_x - text_width / 2;\n }\n else if (justification === StaveLine.TextJustification.RIGHT) {\n x = end_position.x - text_width;\n }\n // Determine the y value to start the text\n let y = 0;\n const vertical_position = render_options.text_position_vertical;\n if (vertical_position === StaveLine.TextVerticalPosition.TOP) {\n y = first_note.checkStave().getYForTopText();\n }\n else if (vertical_position === StaveLine.TextVerticalPosition.BOTTOM) {\n y = first_note.checkStave().getYForBottomText(Tables.TEXT_HEIGHT_OFFSET_HACK);\n }\n // Draw the text\n ctx.save();\n this.applyFontStyle();\n ctx.fillText(this.text, x, y);\n ctx.restore();\n return this;\n }\n}\n/** Default text font. */\nStaveLine.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n// Text Positioning\nStaveLine.TextVerticalPosition = {\n TOP: 1,\n BOTTOM: 2,\n};\nStaveLine.TextJustification = TextJustification;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// A base class for stave modifiers (e.g. clefs, key signatures)\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { defined } from './util';\nexport var StaveModifierPosition;\n(function (StaveModifierPosition) {\n StaveModifierPosition[StaveModifierPosition[\"CENTER\"] = 0] = \"CENTER\";\n StaveModifierPosition[StaveModifierPosition[\"LEFT\"] = 1] = \"LEFT\";\n StaveModifierPosition[StaveModifierPosition[\"RIGHT\"] = 2] = \"RIGHT\";\n StaveModifierPosition[StaveModifierPosition[\"ABOVE\"] = 3] = \"ABOVE\";\n StaveModifierPosition[StaveModifierPosition[\"BELOW\"] = 4] = \"BELOW\";\n StaveModifierPosition[StaveModifierPosition[\"BEGIN\"] = 5] = \"BEGIN\";\n StaveModifierPosition[StaveModifierPosition[\"END\"] = 6] = \"END\";\n})(StaveModifierPosition || (StaveModifierPosition = {}));\nexport class StaveModifier extends Element {\n constructor() {\n super();\n this.width = 0;\n this.x = 0;\n this.padding = 10;\n this.position = StaveModifierPosition.ABOVE;\n }\n static get CATEGORY() {\n return Category.StaveModifier;\n }\n static get Position() {\n return StaveModifierPosition;\n }\n getPosition() {\n return this.position;\n }\n setPosition(position) {\n this.position = position;\n return this;\n }\n getStave() {\n return this.stave;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getWidth() {\n return this.width;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getX() {\n return this.x;\n }\n setX(x) {\n this.x = x;\n return this;\n }\n placeGlyphOnLine(glyph, stave, line, customShift = 0) {\n glyph.setYShift(stave.getYForLine(line !== null && line !== void 0 ? line : 0) - stave.getYForGlyphs() + customShift);\n }\n getPadding(index) {\n return index !== undefined && index < 2 ? 0 : this.padding;\n }\n setPadding(padding) {\n this.padding = padding;\n return this;\n }\n setLayoutMetrics(layoutMetrics) {\n this.layoutMetrics = layoutMetrics;\n return this;\n }\n getLayoutMetrics() {\n return this.layoutMetrics;\n }\n // eslint-disable-next-line\n draw(...args) {\n // DO NOTHING.\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This file implements notes for standard notation. This consists of one or\n// more `NoteHeads`, an optional stem, and an optional flag.\n//\n// Throughout these comments, a \"note\" refers to the entire `StaveNote`,\n// and a \"key\" refers to a specific pitch/notehead within a note.\n//\n// See `tests/stavenote_tests.ts` for usage examples.\nimport { BoundingBox } from './boundingbox';\nimport { Modifier } from './modifier';\nimport { NoteHead } from './notehead';\nimport { Stem } from './stem';\nimport { StemmableNote } from './stemmablenote';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log, midLine, RuntimeError } from './util';\nfunction showDeprecationWarningForNoteHeads() {\n // eslint-disable-next-line\n console.warn('StaveNote.note_heads is deprecated. Use StaveNote.noteHeads instead.', 'This accessor will be removed in VexFlow 5.0.');\n}\n// To enable logging for this class. Set `Vex.Flow.StaveNote.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (StaveNote.DEBUG)\n log('Vex.Flow.StaveNote', args);\n}\nconst isInnerNoteIndex = (note, index) => index === (note.getStemDirection() === Stem.UP ? note.keyProps.length - 1 : 0);\n// Helper methods for rest positioning in ModifierContext.\nfunction shiftRestVertical(rest, note, dir) {\n const delta = dir;\n rest.line += delta;\n rest.maxLine += delta;\n rest.minLine += delta;\n rest.note.setKeyLine(0, rest.note.getKeyLine(0) + delta);\n}\n// Called from formatNotes :: center a rest between two notes\nfunction centerRest(rest, noteU, noteL) {\n const delta = rest.line - midLine(noteU.minLine, noteL.maxLine);\n rest.note.setKeyLine(0, rest.note.getKeyLine(0) - delta);\n rest.line -= delta;\n rest.maxLine -= delta;\n rest.minLine -= delta;\n}\nexport class StaveNote extends StemmableNote {\n constructor(noteStruct) {\n var _a, _b, _c;\n super(noteStruct);\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // INSTANCE MEMBERS\n this.minLine = 0;\n this.maxLine = 0;\n // Sorted variant of keyProps used internally\n this.sortedKeyProps = [];\n this.ledgerLineStyle = {};\n this.clef = (_a = noteStruct.clef) !== null && _a !== void 0 ? _a : 'treble';\n this.octave_shift = (_b = noteStruct.octave_shift) !== null && _b !== void 0 ? _b : 0;\n // Pull note rendering properties.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n // if true, displace note to right\n this.displaced = false;\n this.dot_shiftY = 0;\n // for displaced ledger lines\n this.use_default_head_x = false;\n // Drawing\n this._noteHeads = [];\n this.modifiers = [];\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads and rests\n glyph_font_scale: noteStruct.glyph_font_scale || Tables.NOTATION_FONT_SCALE, \n // number of stroke px to the left and right of head\n stroke_px: noteStruct.stroke_px || StaveNote.LEDGER_LINE_OFFSET });\n this.calculateKeyProps();\n this.buildStem();\n // Set the stem direction\n if (noteStruct.auto_stem) {\n this.autoStem();\n }\n else {\n this.setStemDirection((_c = noteStruct.stem_direction) !== null && _c !== void 0 ? _c : Stem.UP);\n }\n this.reset();\n this.buildFlag();\n }\n static get CATEGORY() {\n return Category.StaveNote;\n }\n /**\n * @deprecated Use Stem.UP.\n */\n static get STEM_UP() {\n return Stem.UP;\n }\n /**\n * @deprecated Use Stem.DOWN.\n */\n static get STEM_DOWN() {\n return Stem.DOWN;\n }\n static get LEDGER_LINE_OFFSET() {\n return 3;\n }\n static get minNoteheadPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Format notes inside a ModifierContext. */\n static format(notes, state) {\n if (!notes || notes.length < 2)\n return false;\n const notesList = [];\n for (let i = 0; i < notes.length; i++) {\n // Formatting uses sortedKeyProps to calculate line and minL.\n const props = notes[i].sortedKeyProps;\n const line = props[0].keyProps.line;\n let minL = props[props.length - 1].keyProps.line;\n const stemDirection = notes[i].getStemDirection();\n const stemMax = notes[i].getStemLength() / 10;\n const stemMin = notes[i].getStemMinimumLength() / 10;\n let maxL;\n if (notes[i].isRest()) {\n maxL = line + notes[i].glyph.line_above;\n minL = line - notes[i].glyph.line_below;\n }\n else {\n maxL =\n stemDirection === 1 ? props[props.length - 1].keyProps.line + stemMax : props[props.length - 1].keyProps.line;\n minL = stemDirection === 1 ? props[0].keyProps.line : props[0].keyProps.line - stemMax;\n }\n notesList.push({\n line: props[0].keyProps.line,\n maxLine: maxL,\n minLine: minL,\n isrest: notes[i].isRest(),\n stemDirection: stemDirection,\n stemMax,\n stemMin,\n voice_shift: notes[i].getVoiceShiftWidth(),\n is_displaced: notes[i].isDisplaced(),\n note: notes[i],\n });\n }\n let voices = 0;\n let noteU = undefined;\n let noteM = undefined;\n let noteL = undefined;\n const draw = [false, false, false];\n for (let i = 0; i < notesList.length; i++) {\n draw[i] = notesList[i].note.render_options.draw == false ? false : true;\n }\n if (draw[0] && draw[1] && draw[2]) {\n // Three visible notes\n voices = 3;\n noteU = notesList[0];\n noteM = notesList[1];\n noteL = notesList[2];\n }\n else if (draw[0] && draw[1]) {\n // Two visible notes, 0 & 1\n voices = 2;\n noteU = notesList[0];\n noteL = notesList[1];\n }\n else if (draw[0] && draw[2]) {\n // Two visible notes, 0 & 2\n voices = 2;\n noteU = notesList[0];\n noteL = notesList[2];\n }\n else if (draw[1] && draw[2]) {\n // Two visible notes, 1 & 2\n voices = 2;\n noteU = notesList[1];\n noteL = notesList[2];\n }\n else {\n // No shift required for less than 2 visible notes\n return true;\n }\n // for two voice backward compatibility, ensure upper voice is stems up\n // for three voices, the voices must be in order (upper, middle, lower)\n if (voices === 2 && noteU.stemDirection === -1 && noteL.stemDirection === 1) {\n noteU = notesList[1];\n noteL = notesList[0];\n }\n const voiceXShift = Math.max(noteU.voice_shift, noteL.voice_shift);\n let xShift = 0;\n // Test for two voice note intersection\n if (voices === 2) {\n const lineSpacing = noteU.note.hasStem() && noteL.note.hasStem() && noteU.stemDirection === noteL.stemDirection ? 0.0 : 0.5;\n if (noteL.isrest && noteU.isrest && noteU.note.duration === noteL.note.duration) {\n noteL.note.render_options.draw = false;\n }\n else if (noteU.minLine <= noteL.maxLine + lineSpacing) {\n if (noteU.isrest) {\n // shift rest up\n shiftRestVertical(noteU, noteL, 1);\n }\n else if (noteL.isrest) {\n // shift rest down\n shiftRestVertical(noteL, noteU, -1);\n }\n else {\n //Instead of shifting notes, remove the appropriate flag\n //If we are sharing a line, switch one notes stem direction.\n //If we are sharing a line and in the same voice, only then offset one note\n const lineDiff = Math.abs(noteU.line - noteL.line);\n if (noteU.note.hasStem() && noteL.note.hasStem()) {\n //If we have different dot values, must offset\n //Or If we have a white mixed with a black notehead, must offset\n let whiteNoteHeadCount = 0;\n let blackNoteHeadCount = 0;\n if (Tables.durationToNumber(noteU.note.duration) === 2) {\n whiteNoteHeadCount++;\n }\n else if (Tables.durationToNumber(noteU.note.duration) > 2) {\n blackNoteHeadCount++;\n }\n if (Tables.durationToNumber(noteL.note.duration) === 2) {\n whiteNoteHeadCount++;\n }\n else if (Tables.durationToNumber(noteL.note.duration) > 2) {\n blackNoteHeadCount++;\n }\n if ((whiteNoteHeadCount !== 2 && blackNoteHeadCount !== 2) ||\n noteU.note.getModifiersByType(Category.Dot).length !== noteL.note.getModifiersByType(Category.Dot).length) {\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (lineDiff < 1 && lineDiff > 0) {\n //if the notes are quite close but not on the same line, shift\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (noteU.note.voice !== noteL.note.voice) {\n //If we are not in the same voice\n if (noteU.stemDirection === noteL.stemDirection) {\n if (noteU.line != noteL.line) {\n xShift = voiceXShift + 2;\n noteU.note.setXShift(xShift);\n }\n else {\n //same line, swap stem direction for one note\n if (noteL.stemDirection === 1) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n }\n }\n } //Very close whole notes\n }\n else if (lineDiff < 1) {\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (noteU.note.hasStem()) {\n noteU.stemDirection = -noteU.note.getStemDirection();\n noteU.note.setStemDirection(noteU.stemDirection);\n }\n else if (noteL.note.hasStem()) {\n noteL.stemDirection = -noteL.note.getStemDirection();\n noteL.note.setStemDirection(noteL.stemDirection);\n }\n }\n }\n // format complete\n state.right_shift += xShift;\n return true;\n }\n if (!noteM)\n throw new RuntimeError('InvalidState', 'noteM not defined.');\n // For three voices, test if rests can be repositioned\n //\n // Special case 1 :: middle voice rest between two notes\n //\n if (noteM.isrest && !noteU.isrest && !noteL.isrest) {\n if (noteU.minLine <= noteM.maxLine || noteM.minLine <= noteL.maxLine) {\n const restHeight = noteM.maxLine - noteM.minLine;\n const space = noteU.minLine - noteL.maxLine;\n if (restHeight < space) {\n // center middle voice rest between the upper and lower voices\n centerRest(noteM, noteU, noteL);\n }\n else {\n xShift = voiceXShift + 2; // shift middle rest right\n noteM.note.setXShift(xShift);\n if (noteL.note.hasBeam() === false) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n if (noteU.minLine <= noteL.maxLine && noteU.note.hasBeam() === false) {\n noteU.stemDirection = 1;\n noteU.note.setStemDirection(1);\n }\n }\n // format complete\n state.right_shift += xShift;\n return true;\n }\n }\n // Special case 2 :: all voices are rests\n if (noteU.isrest && noteM.isrest && noteL.isrest) {\n // Hide upper voice rest\n noteU.note.render_options.draw = false;\n // Hide lower voice rest\n noteL.note.render_options.draw = false;\n // format complete\n state.right_shift += xShift;\n return true;\n }\n // Test if any other rests can be repositioned\n if (noteM.isrest && noteU.isrest && noteM.minLine <= noteL.maxLine) {\n // Hide middle voice rest\n noteM.note.render_options.draw = false;\n }\n if (noteM.isrest && noteL.isrest && noteU.minLine <= noteM.maxLine) {\n // Hide middle voice rest\n noteM.note.render_options.draw = false;\n }\n if (noteU.isrest && noteU.minLine <= noteM.maxLine) {\n // shift upper voice rest up;\n shiftRestVertical(noteU, noteM, 1);\n }\n if (noteL.isrest && noteM.minLine <= noteL.maxLine) {\n // shift lower voice rest down\n shiftRestVertical(noteL, noteM, -1);\n }\n // If middle voice intersects upper or lower voice\n if (noteU.minLine <= noteM.maxLine + 0.5 || noteM.minLine <= noteL.maxLine) {\n // shift middle note right\n xShift = voiceXShift + 2;\n noteM.note.setXShift(xShift);\n if (noteL.note.hasBeam() === false) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n if (noteU.minLine <= noteL.maxLine && noteU.note.hasBeam() === false) {\n noteU.stemDirection = 1;\n noteU.note.setStemDirection(1);\n }\n }\n state.right_shift += xShift;\n return true;\n }\n static postFormat(notes) {\n if (!notes)\n return false;\n notes.forEach((note) => note.postFormat());\n return true;\n }\n reset() {\n super.reset();\n // Save prior noteHead styles & reapply them after making new noteheads.\n const noteHeadStyles = this._noteHeads.map((noteHead) => noteHead.getStyle());\n this.buildNoteHeads();\n this._noteHeads.forEach((noteHead, index) => {\n const noteHeadStyle = noteHeadStyles[index];\n if (noteHeadStyle)\n noteHead.setStyle(noteHeadStyle);\n });\n const stave = this.stave;\n if (stave) {\n this._noteHeads.forEach((head) => head.setStave(stave));\n }\n this.calcNoteDisplacements();\n return this;\n }\n setBeam(beam) {\n this.beam = beam;\n this.calcNoteDisplacements();\n // Update stem extension if a beam is assigned.\n if (this.stem) {\n this.stem.setExtension(this.getStemExtension());\n }\n return this;\n }\n // Builds a `Stem` for the note\n buildStem() {\n this.setStem(new Stem({ hide: !!this.isRest() }));\n return this;\n }\n // Builds a `NoteHead` for each key in the note\n buildNoteHeads() {\n this._noteHeads = [];\n const stemDirection = this.getStemDirection();\n const keys = this.getKeys();\n let lastLine = undefined;\n let lineDiff = undefined;\n let displaced = false;\n // Draw notes from bottom to top.\n // For down-stem notes, we draw from top to bottom.\n let start;\n let end;\n let step;\n if (stemDirection === Stem.UP) {\n start = 0;\n end = keys.length;\n step = 1;\n }\n else {\n start = keys.length - 1;\n end = -1;\n step = -1;\n }\n for (let i = start; i !== end; i += step) {\n // Building noteheads rely on sortedKeNotes in order to calculate the displacements\n const noteProps = this.sortedKeyProps[i].keyProps;\n const line = noteProps.line;\n // Keep track of last line with a note head, so that consecutive heads\n // are correctly displaced.\n if (lastLine === undefined) {\n lastLine = line;\n }\n else {\n lineDiff = Math.abs(lastLine - line);\n if (lineDiff === 0 || lineDiff === 0.5) {\n displaced = !displaced;\n }\n else {\n displaced = false;\n this.use_default_head_x = true;\n }\n }\n lastLine = line;\n const notehead = new NoteHead({\n duration: this.duration,\n note_type: this.noteType,\n displaced,\n stem_direction: stemDirection,\n custom_glyph_code: noteProps.code,\n glyph_font_scale: this.render_options.glyph_font_scale,\n x_shift: noteProps.shift_right,\n stem_up_x_offset: noteProps.stem_up_x_offset,\n stem_down_x_offset: noteProps.stem_down_x_offset,\n line: noteProps.line,\n });\n this.addChildElement(notehead);\n this._noteHeads[this.sortedKeyProps[i].index] = notehead;\n }\n }\n // Automatically sets the stem direction based on the keys in the note\n autoStem() {\n this.setStemDirection(this.calculateOptimalStemDirection());\n }\n calculateOptimalStemDirection() {\n // Figure out optimal stem direction based on given notes\n // minLine & maxLine rely on sortedKeyProps\n this.minLine = this.sortedKeyProps[0].keyProps.line;\n this.maxLine = this.sortedKeyProps[this.keyProps.length - 1].keyProps.line;\n const MIDDLE_LINE = 3;\n const decider = (this.minLine + this.maxLine) / 2;\n const stemDirection = decider < MIDDLE_LINE ? Stem.UP : Stem.DOWN;\n return stemDirection;\n }\n // Calculates and stores the properties for each key in the note\n calculateKeyProps() {\n let lastLine;\n for (let i = 0; i < this.keys.length; ++i) {\n const key = this.keys[i];\n // All rests use the same position on the line.\n // if (this.glyph.rest) key = this.glyph.position;\n if (this.glyph.rest)\n this.glyph.position = key;\n const options = { octave_shift: this.octave_shift || 0, duration: this.duration };\n const props = Tables.keyProperties(key, this.clef, options);\n if (!props) {\n throw new RuntimeError('BadArguments', `Invalid key for note properties: ${key}`);\n }\n // Override line placement for default rests\n if (props.key === 'R') {\n if (this.duration === '1' || this.duration === 'w') {\n props.line = 4;\n }\n else {\n props.line = 3;\n }\n }\n // Calculate displacement of this note\n const line = props.line;\n if (lastLine == undefined) {\n lastLine = line;\n }\n else {\n if (Math.abs(lastLine - line) === 0.5) {\n this.displaced = true;\n props.displaced = true;\n // Have to mark the previous note as\n // displaced as well, for modifier placement\n if (this.keyProps.length > 0) {\n this.keyProps[i - 1].displaced = true;\n }\n }\n }\n lastLine = line;\n this.keyProps.push(props);\n }\n // Sort the notes from lowest line to highest line in sortedKeyProps\n // Warn no longer required as keyProps remains unsorted\n this.keyProps.forEach((keyProps, index) => {\n this.sortedKeyProps.push({ keyProps, index });\n });\n this.sortedKeyProps.sort((a, b) => a.keyProps.line - b.keyProps.line);\n }\n // Get the `BoundingBox` for the entire note\n getBoundingBox() {\n var _a, _b;\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getBoundingBox on an unformatted note.\");\n }\n const { width: w, modLeftPx, leftDisplacedHeadPx } = this.getMetrics();\n const x = this.getAbsoluteX() - modLeftPx - leftDisplacedHeadPx;\n let minY = 0;\n let maxY = 0;\n const halfLineSpacing = ((_b = (_a = this.getStave()) === null || _a === void 0 ? void 0 : _a.getSpacingBetweenLines()) !== null && _b !== void 0 ? _b : 0) / 2;\n const lineSpacing = halfLineSpacing * 2;\n if (this.isRest()) {\n const y = this.ys[0];\n const frac = Tables.durationToFraction(this.duration);\n if (frac.equals(1) || frac.equals(2)) {\n minY = y - halfLineSpacing;\n maxY = y + halfLineSpacing;\n }\n else {\n minY = y - this.glyph.line_above * lineSpacing;\n maxY = y + this.glyph.line_below * lineSpacing;\n }\n }\n else if (this.glyph.stem) {\n const ys = this.getStemExtents();\n ys.baseY += halfLineSpacing * this.getStemDirection();\n minY = Math.min(ys.topY, ys.baseY);\n maxY = Math.max(ys.topY, ys.baseY);\n }\n else {\n minY = 0;\n maxY = 0;\n for (let i = 0; i < this.ys.length; ++i) {\n const yy = this.ys[i];\n if (i === 0) {\n minY = yy;\n maxY = yy;\n }\n else {\n minY = Math.min(yy, minY);\n maxY = Math.max(yy, maxY);\n }\n }\n minY -= halfLineSpacing;\n maxY += halfLineSpacing;\n }\n return new BoundingBox(x, minY, w, maxY - minY);\n }\n // Gets the line number of the bottom note in the chord.\n // If `isTopNote` is `true` then get the top note's line number instead\n getLineNumber(isTopNote) {\n if (!this.keyProps.length) {\n throw new RuntimeError('NoKeyProps', \"Can't get bottom note line, because note is not initialized properly.\");\n }\n let resultLine = this.keyProps[0].line;\n // No precondition assumed for sortedness of keyProps array\n for (let i = 0; i < this.keyProps.length; i++) {\n const thisLine = this.keyProps[i].line;\n if (isTopNote) {\n if (thisLine > resultLine)\n resultLine = thisLine;\n }\n else {\n if (thisLine < resultLine)\n resultLine = thisLine;\n }\n }\n return resultLine;\n }\n /**\n * @returns true if this note is a type of rest. Rests don't have pitches, but take up space in the score.\n */\n isRest() {\n return this.glyph.rest;\n }\n // Determine if the current note is a chord\n isChord() {\n return !this.isRest() && this.keys.length > 1;\n }\n // Determine if the `StaveNote` has a stem\n hasStem() {\n return this.glyph.stem;\n }\n hasFlag() {\n return super.hasFlag() && !this.isRest();\n }\n getStemX() {\n if (this.noteType === 'r') {\n return this.getCenterGlyphX();\n }\n else {\n // We adjust the origin of the stem because we want the stem left-aligned\n // with the notehead if stemmed-down, and right-aligned if stemmed-up\n return super.getStemX() + (this.stem_direction ? Stem.WIDTH / (2 * -this.stem_direction) : 0);\n }\n }\n // Get the `y` coordinate for text placed on the top/bottom of a\n // note at a desired `text_line`\n getYForTopText(textLine) {\n const extents = this.getStemExtents();\n return Math.min(this.checkStave().getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1));\n }\n getYForBottomText(textLine) {\n const extents = this.getStemExtents();\n return Math.max(this.checkStave().getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine);\n }\n // Sets the current note to the provided `stave`. This applies\n // `y` values to the `NoteHeads`.\n setStave(stave) {\n super.setStave(stave);\n const ys = this._noteHeads.map((notehead) => {\n notehead.setStave(stave);\n return notehead.getY();\n });\n this.setYs(ys);\n if (this.stem) {\n const { y_top, y_bottom } = this.getNoteHeadBounds();\n this.stem.setYBounds(y_top, y_bottom);\n }\n return this;\n }\n // Check if note is shifted to the right\n isDisplaced() {\n return this.displaced;\n }\n // Sets whether shift note to the right. `displaced` is a `boolean`\n setNoteDisplaced(displaced) {\n this.displaced = displaced;\n return this;\n }\n // Get the starting `x` coordinate for a `StaveTie`\n getTieRightX() {\n let tieStartX = this.getAbsoluteX();\n tieStartX += this.getGlyphWidth() + this.x_shift + this.rightDisplacedHeadPx;\n if (this.modifierContext)\n tieStartX += this.modifierContext.getRightShift();\n return tieStartX;\n }\n // Get the ending `x` coordinate for a `StaveTie`\n getTieLeftX() {\n let tieEndX = this.getAbsoluteX();\n tieEndX += this.x_shift - this.leftDisplacedHeadPx;\n return tieEndX;\n }\n // Get the stave line on which to place a rest\n getLineForRest() {\n let restLine = this.keyProps[0].line;\n if (this.keyProps.length > 1) {\n const lastLine = this.keyProps[this.keyProps.length - 1].line;\n const top = Math.max(restLine, lastLine);\n const bot = Math.min(restLine, lastLine);\n restLine = midLine(top, bot);\n }\n return restLine;\n }\n // Get the default `x` and `y` coordinates for the provided `position`\n // and key `index`\n getModifierStartXY(position, index, options = {}) {\n var _a, _b;\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-Values calculated for this note.');\n }\n const { ABOVE, BELOW, LEFT, RIGHT } = Modifier.Position;\n let x = 0;\n if (position === LEFT) {\n // FIXME: Left modifier padding, move to font file\n x = -1 * 2;\n }\n else if (position === RIGHT) {\n // FIXME: Right modifier padding, move to font file\n x = this.getGlyphWidth() + this.x_shift + 2;\n if (this.stem_direction === Stem.UP &&\n this.hasFlag() &&\n (options.forceFlagRight || isInnerNoteIndex(this, index))) {\n x += (_b = (_a = this === null || this === void 0 ? void 0 : this.flag) === null || _a === void 0 ? void 0 : _a.getMetrics().width) !== null && _b !== void 0 ? _b : 0;\n }\n }\n else if (position === BELOW || position === ABOVE) {\n x = this.getGlyphWidth() / 2;\n }\n return {\n x: this.getAbsoluteX() + x,\n y: this.ys[index],\n };\n }\n // Sets the style of the complete StaveNote, including all keys\n // and the stem.\n setStyle(style) {\n return super.setGroupStyle(style);\n }\n setStemStyle(style) {\n const stem = this.getStem();\n if (stem)\n stem.setStyle(style);\n return this;\n }\n getStemStyle() {\n var _a;\n return (_a = this.stem) === null || _a === void 0 ? void 0 : _a.getStyle();\n }\n setLedgerLineStyle(style) {\n this.ledgerLineStyle = style;\n }\n getLedgerLineStyle() {\n return this.ledgerLineStyle;\n }\n setFlagStyle(style) {\n var _a;\n (_a = this.flag) === null || _a === void 0 ? void 0 : _a.setStyle(style);\n }\n getFlagStyle() {\n var _a;\n return (_a = this.flag) === null || _a === void 0 ? void 0 : _a.getStyle();\n }\n // Sets the notehead at `index` to the provided coloring `style`.\n //\n // `style` is an `object` with the following properties: `shadowColor`,\n // `shadowBlur`, `fillStyle`, `strokeStyle`\n setKeyStyle(index, style) {\n this._noteHeads[index].setStyle(style);\n return this;\n }\n setKeyLine(index, line) {\n this.keyProps[index].line = line;\n this.reset();\n return this;\n }\n getKeyLine(index) {\n return this.keyProps[index].line;\n }\n // Get the width of the note if it is displaced. Used for `Voice`\n // formatting\n getVoiceShiftWidth() {\n // TODO: may need to accommodate for dot here.\n return this.getGlyphWidth() * (this.displaced ? 2 : 1);\n }\n // Calculates and sets the extra pixels to the left or right\n // if the note is displaced.\n calcNoteDisplacements() {\n this.setLeftDisplacedHeadPx(this.displaced && this.stem_direction === Stem.DOWN ? this.getGlyphWidth() : 0);\n // For upstems with flags, the extra space is unnecessary, since it's taken\n // up by the flag.\n this.setRightDisplacedHeadPx(!this.hasFlag() && this.displaced && this.stem_direction === Stem.UP ? this.getGlyphWidth() : 0);\n }\n // Pre-render formatting\n preFormat() {\n if (this.preFormatted)\n return;\n let noteHeadPadding = 0;\n if (this.modifierContext) {\n this.modifierContext.preFormat();\n // If there are no modifiers on this note, make sure there is adequate padding\n // between the notes.\n if (this.modifierContext.getWidth() === 0) {\n noteHeadPadding = StaveNote.minNoteheadPadding;\n }\n }\n let width = this.getGlyphWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx + noteHeadPadding;\n // For upward flagged notes, the width of the flag needs to be added\n if (this.shouldDrawFlag() && this.stem_direction === Stem.UP) {\n width += this.getGlyphWidth();\n // TODO: Add flag width as a separate metric\n }\n this.setWidth(width);\n this.preFormatted = true;\n }\n /**\n * @typedef {Object} noteHeadBounds\n * @property {number} y_top the highest notehead bound\n * @property {number} y_bottom the lowest notehead bound\n * @property {number|Null} displaced_x the starting x for displaced noteheads\n * @property {number|Null} non_displaced_x the starting x for non-displaced noteheads\n * @property {number} highest_line the highest notehead line in traditional music line\n * numbering (bottom line = 1, top line = 5)\n * @property {number} lowest_line the lowest notehead line\n * @property {number|false} highest_displaced_line the highest staff line number\n * for a displaced notehead\n * @property {number|false} lowest_displaced_line\n * @property {number} highest_non_displaced_line\n * @property {number} lowest_non_displaced_line\n */\n /**\n * Get the staff line and y value for the highest & lowest noteheads\n * @returns {noteHeadBounds}\n */\n getNoteHeadBounds() {\n // Top and bottom Y values for stem.\n let yTop = +Infinity;\n let yBottom = -Infinity;\n let nonDisplacedX;\n let displacedX;\n let highestLine = this.checkStave().getNumLines();\n let lowestLine = 1;\n let highestDisplacedLine;\n let lowestDisplacedLine;\n let highestNonDisplacedLine = highestLine;\n let lowestNonDisplacedLine = lowestLine;\n this._noteHeads.forEach((notehead) => {\n const line = notehead.getLine();\n const y = notehead.getY();\n yTop = Math.min(y, yTop);\n yBottom = Math.max(y, yBottom);\n if (displacedX === undefined && notehead.isDisplaced()) {\n displacedX = notehead.getAbsoluteX();\n }\n if (nonDisplacedX === undefined && !notehead.isDisplaced()) {\n nonDisplacedX = notehead.getAbsoluteX();\n }\n highestLine = Math.max(line, highestLine);\n lowestLine = Math.min(line, lowestLine);\n if (notehead.isDisplaced()) {\n highestDisplacedLine = highestDisplacedLine === undefined ? line : Math.max(line, highestDisplacedLine);\n lowestDisplacedLine = lowestDisplacedLine === undefined ? line : Math.min(line, lowestDisplacedLine);\n }\n else {\n highestNonDisplacedLine = Math.max(line, highestNonDisplacedLine);\n lowestNonDisplacedLine = Math.min(line, lowestNonDisplacedLine);\n }\n }, this);\n return {\n y_top: yTop,\n y_bottom: yBottom,\n displaced_x: displacedX,\n non_displaced_x: nonDisplacedX,\n highest_line: highestLine,\n lowest_line: lowestLine,\n highest_displaced_line: highestDisplacedLine,\n lowest_displaced_line: lowestDisplacedLine,\n highest_non_displaced_line: highestNonDisplacedLine,\n lowest_non_displaced_line: lowestNonDisplacedLine,\n };\n }\n // Get the starting `x` coordinate for the noteheads\n getNoteHeadBeginX() {\n return this.getAbsoluteX() + this.x_shift;\n }\n // Get the ending `x` coordinate for the noteheads\n getNoteHeadEndX() {\n const xBegin = this.getNoteHeadBeginX();\n return xBegin + this.getGlyphWidth();\n }\n get noteHeads() {\n return this._noteHeads.slice();\n }\n /** @deprecated use StaveNote.noteHeads instead. */\n get note_heads() {\n showDeprecationWarningForNoteHeads();\n return this.noteHeads;\n }\n // Draw the ledger lines between the stave and the highest/lowest keys\n drawLedgerLines() {\n const stave = this.checkStave();\n const { glyph, render_options: { stroke_px }, } = this;\n const ctx = this.checkContext();\n const width = glyph.getWidth() + stroke_px * 2;\n const doubleWidth = 2 * (glyph.getWidth() + stroke_px) - Stem.WIDTH / 2;\n if (this.isRest())\n return;\n if (!ctx) {\n throw new RuntimeError('NoCanvasContext', \"Can't draw without a canvas context.\");\n }\n const { highest_line, lowest_line, highest_displaced_line, highest_non_displaced_line, lowest_displaced_line, lowest_non_displaced_line, displaced_x, non_displaced_x, } = this.getNoteHeadBounds();\n // Early out if there are no ledger lines to draw.\n if (highest_line < 6 && lowest_line > 0)\n return;\n const min_x = Math.min(displaced_x !== null && displaced_x !== void 0 ? displaced_x : 0, non_displaced_x !== null && non_displaced_x !== void 0 ? non_displaced_x : 0);\n const drawLedgerLine = (y, normal, displaced) => {\n let x;\n if (displaced && normal)\n x = min_x - stroke_px;\n else if (normal)\n x = (non_displaced_x !== null && non_displaced_x !== void 0 ? non_displaced_x : 0) - stroke_px;\n else\n x = (displaced_x !== null && displaced_x !== void 0 ? displaced_x : 0) - stroke_px;\n const ledgerWidth = normal && displaced ? doubleWidth : width;\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.lineTo(x + ledgerWidth, y);\n ctx.stroke();\n };\n const style = Object.assign(Object.assign({}, stave.getDefaultLedgerLineStyle()), this.getLedgerLineStyle());\n this.applyStyle(ctx, style);\n // Draw ledger lines below the staff:\n for (let line = 6; line <= highest_line; ++line) {\n const normal = non_displaced_x !== undefined && line <= highest_non_displaced_line;\n const displaced = highest_displaced_line !== undefined && line <= highest_displaced_line;\n drawLedgerLine(stave.getYForNote(line), normal, displaced);\n }\n // Draw ledger lines above the staff:\n for (let line = 0; line >= lowest_line; --line) {\n const normal = non_displaced_x !== undefined && line >= lowest_non_displaced_line;\n const displaced = lowest_displaced_line !== undefined && line >= lowest_displaced_line;\n drawLedgerLine(stave.getYForNote(line), normal, displaced);\n }\n this.restoreStyle(ctx, style);\n }\n // Draw all key modifiers\n drawModifiers(noteheadParam) {\n const ctx = this.checkContext();\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n const index = modifier.checkIndex();\n const notehead = this._noteHeads[index];\n if (notehead == noteheadParam) {\n const noteheadStyle = notehead.getStyle();\n notehead.applyStyle(ctx, noteheadStyle);\n modifier.setContext(ctx);\n modifier.drawWithStyle();\n notehead.restoreStyle(ctx, noteheadStyle);\n }\n }\n }\n shouldDrawFlag() {\n const hasStem = this.stem !== undefined;\n const hasFlag = this.glyph.flag; // specified in tables.js\n const hasNoBeam = this.beam === undefined;\n return hasStem && hasFlag && hasNoBeam;\n }\n // Draw the flag for the note\n drawFlag() {\n var _a, _b, _c, _d, _e;\n const ctx = this.checkContext();\n if (!ctx) {\n throw new RuntimeError('NoCanvasContext', \"Can't draw without a canvas context.\");\n }\n if (this.shouldDrawFlag()) {\n const { y_top, y_bottom } = this.getNoteHeadBounds();\n // eslint-disable-next-line\n const noteStemHeight = this.stem.getHeight();\n const flagX = this.getStemX();\n // What's with the magic +/- 2\n // ANSWER: a corner of the note stem pokes out beyond the tip of the flag.\n // The extra +/- 2 pushes the flag glyph outward so it covers the stem entirely.\n // Alternatively, we could shorten the stem.\n const flagY = this.getStemDirection() === Stem.DOWN\n ? // Down stems are below the note head and have flags on the right.\n y_top -\n noteStemHeight +\n 2 -\n (this.glyph ? this.glyph.stem_down_extension : 0) * this.getStaveNoteScale() -\n ((_b = (_a = this.flag) === null || _a === void 0 ? void 0 : _a.getMetrics().y_shift) !== null && _b !== void 0 ? _b : 0) * (1 - this.getStaveNoteScale())\n : // Up stems are above the note head and have flags on the right.\n y_bottom -\n noteStemHeight -\n 2 +\n (this.glyph ? this.glyph.stem_up_extension : 0) * this.getStaveNoteScale() -\n ((_d = (_c = this.flag) === null || _c === void 0 ? void 0 : _c.getMetrics().y_shift) !== null && _d !== void 0 ? _d : 0) * (1 - this.getStaveNoteScale());\n // Draw the Flag\n (_e = this.flag) === null || _e === void 0 ? void 0 : _e.render(ctx, flagX, flagY);\n }\n }\n // Draw the NoteHeads\n drawNoteHeads() {\n const ctx = this.checkContext();\n this._noteHeads.forEach((notehead) => {\n ctx.openGroup('notehead', notehead.getAttribute('id'), { pointerBBox: true });\n notehead.setContext(ctx).draw();\n this.drawModifiers(notehead);\n ctx.closeGroup();\n });\n }\n drawStem(stemOptions) {\n // GCR TODO: I can't find any context in which this is called with the stemStruct\n // argument in the codebase or tests. Nor can I find a case where super.drawStem\n // is called at all. Perhaps these should be removed?\n const ctx = this.checkContext();\n if (stemOptions) {\n this.setStem(new Stem(stemOptions));\n }\n // If we will render a flag, we shorten the stem so that the tip\n // does not poke through the flag.\n if (this.shouldDrawFlag() && this.stem) {\n this.stem.adjustHeightForFlag();\n }\n if (this.stem) {\n this.stem.setContext(ctx).draw();\n }\n }\n /** Primarily used as the scaling factor for grace notes, GraceNote will return the required scale. */\n getStaveNoteScale() {\n return 1.0;\n }\n /**\n * Override stemmablenote stem extension to adjust for distance from middle line.\n */\n getStemExtension() {\n const super_stem_extension = super.getStemExtension();\n if (!this.glyph.stem) {\n return super_stem_extension;\n }\n const stem_direction = this.getStemDirection();\n if (stem_direction !== this.calculateOptimalStemDirection()) {\n return super_stem_extension; // no adjustment for manually set stem direction.\n }\n let mid_line_distance;\n const MIDDLE_LINE = 3;\n if (stem_direction === Stem.UP) {\n // Note that the use of maxLine here instead of minLine might\n // seem counterintuitive, but in the case of (say) treble clef\n // chord(F2, E4) stem up, we do not want to extend the stem because\n // of F2, when a normal octave-length stem above E4 is fine.\n //\n // maxLine and minLine are set in calculateOptimalStemDirection() so\n // will be known.\n mid_line_distance = MIDDLE_LINE - this.maxLine;\n }\n else {\n mid_line_distance = this.minLine - MIDDLE_LINE;\n }\n // how many lines more than an octave is the relevant notehead?\n const lines_over_octave_from_mid_line = mid_line_distance - 3.5;\n if (lines_over_octave_from_mid_line <= 0) {\n return super_stem_extension;\n }\n const stave = this.getStave();\n let spacing_between_lines = 10;\n if (stave != undefined) {\n spacing_between_lines = stave.getSpacingBetweenLines();\n }\n return super_stem_extension + lines_over_octave_from_mid_line * spacing_between_lines;\n }\n // Draws all the `StaveNote` parts. This is the main drawing method.\n draw() {\n if (this.render_options.draw === false)\n return;\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', \"Can't draw note without Y values.\");\n }\n const ctx = this.checkContext();\n const xBegin = this.getNoteHeadBeginX();\n const shouldRenderStem = this.hasStem() && !this.beam;\n // Format note head x positions\n this._noteHeads.forEach((notehead) => notehead.setX(xBegin));\n if (this.stem) {\n // Format stem x positions\n const stemX = this.getStemX();\n this.stem.setNoteHeadXBounds(stemX, stemX);\n }\n L('Rendering ', this.isChord() ? 'chord :' : 'note :', this.keys);\n // Apply the overall style -- may be contradicted by local settings:\n this.applyStyle();\n ctx.openGroup('stavenote', this.getAttribute('id'));\n this.drawLedgerLines();\n if (shouldRenderStem)\n this.drawStem();\n this.drawNoteHeads();\n this.drawFlag();\n ctx.closeGroup();\n this.restoreStyle();\n this.setRendered();\n }\n}\nStaveNote.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { StaveModifier } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport class Repetition extends StaveModifier {\n constructor(type, x, y_shift) {\n super();\n this.symbol_type = type;\n this.x = x;\n this.x_shift = 0;\n this.y_shift = y_shift;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.Repetition;\n }\n setShiftX(x) {\n this.x_shift = x;\n return this;\n }\n setShiftY(y) {\n this.y_shift = y;\n return this;\n }\n draw(stave, x) {\n this.setRendered();\n switch (this.symbol_type) {\n case Repetition.type.CODA_RIGHT:\n this.drawCodaFixed(stave, x + stave.getWidth());\n break;\n case Repetition.type.CODA_LEFT:\n this.drawSymbolText(stave, x, 'Coda', true);\n break;\n case Repetition.type.SEGNO_LEFT:\n this.drawSignoFixed(stave, x);\n break;\n case Repetition.type.SEGNO_RIGHT:\n this.drawSignoFixed(stave, x + stave.getWidth());\n break;\n case Repetition.type.DC:\n this.drawSymbolText(stave, x, 'D.C.', false);\n break;\n case Repetition.type.DC_AL_CODA:\n this.drawSymbolText(stave, x, 'D.C. al', true);\n break;\n case Repetition.type.DC_AL_FINE:\n this.drawSymbolText(stave, x, 'D.C. al Fine', false);\n break;\n case Repetition.type.DS:\n this.drawSymbolText(stave, x, 'D.S.', false);\n break;\n case Repetition.type.DS_AL_CODA:\n this.drawSymbolText(stave, x, 'D.S. al', true);\n break;\n case Repetition.type.DS_AL_FINE:\n this.drawSymbolText(stave, x, 'D.S. al Fine', false);\n break;\n case Repetition.type.FINE:\n this.drawSymbolText(stave, x, 'Fine', false);\n break;\n case Repetition.type.TO_CODA:\n this.drawSymbolText(stave, x, 'To', true);\n break;\n default:\n break;\n }\n return this;\n }\n drawCodaFixed(stave, x) {\n const y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n Glyph.renderGlyph(stave.checkContext(), this.x + x + this.x_shift, y + Tables.currentMusicFont().lookupMetric('staveRepetition.coda.offsetY'), 40, 'coda', { category: 'coda' });\n return this;\n }\n drawSignoFixed(stave, x) {\n const y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n Glyph.renderGlyph(stave.checkContext(), this.x + x + this.x_shift, y + Tables.currentMusicFont().lookupMetric('staveRepetition.segno.offsetY'), 30, 'segno', { category: 'segno' });\n return this;\n }\n drawSymbolText(stave, x, text, draw_coda) {\n const ctx = stave.checkContext();\n ctx.save();\n ctx.setFont(this.textFont);\n let text_x = 0;\n let symbol_x = 0;\n const modifierWidth = stave.getNoteStartX() - this.x;\n switch (this.symbol_type) {\n // To the left with symbol\n case Repetition.type.CODA_LEFT:\n // Offset Coda text to right of stave beginning\n text_x = this.x + stave.getVerticalBarWidth();\n symbol_x =\n text_x +\n ctx.measureText(text).width +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n break;\n // To the right without symbol\n case Repetition.type.DC:\n case Repetition.type.DC_AL_FINE:\n case Repetition.type.DS:\n case Repetition.type.DS_AL_FINE:\n case Repetition.type.FINE:\n text_x =\n this.x +\n x +\n this.x_shift +\n stave.getWidth() -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.spacing') -\n modifierWidth -\n ctx.measureText(text).width;\n break;\n // To the right with symbol\n default:\n text_x =\n this.x +\n x +\n this.x_shift +\n stave.getWidth() -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.spacing') -\n modifierWidth -\n ctx.measureText(text).width -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n symbol_x =\n text_x +\n ctx.measureText(text).width +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n break;\n }\n const y = stave.getYForTopText(stave.getNumLines()) +\n this.y_shift +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetY');\n if (draw_coda) {\n Glyph.renderGlyph(ctx, symbol_x, y, 40, 'coda', { category: 'coda' });\n }\n ctx.fillText(text, text_x, y + 5);\n ctx.restore();\n return this;\n }\n}\nRepetition.TEXT_FONT = {\n family: Font.SERIF,\n size: 12,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\nRepetition.type = {\n NONE: 1,\n CODA_LEFT: 2,\n CODA_RIGHT: 3,\n SEGNO_LEFT: 4,\n SEGNO_RIGHT: 5,\n DC: 6,\n DC_AL_CODA: 7,\n DC_AL_FINE: 8,\n DS: 9,\n DS_AL_CODA: 10,\n DS_AL_FINE: 11,\n FINE: 12,\n TO_CODA: 13, // To Coda at end of stave\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier } from './stavemodifier';\nimport { Category } from './typeguard';\nexport class StaveSection extends StaveModifier {\n constructor(section, x, shift_y, drawRect = true) {\n super();\n this.setWidth(16);\n this.section = section;\n this.x = x;\n this.shift_x = 0;\n this.shift_y = shift_y;\n this.drawRect = drawRect;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveSection;\n }\n setStaveSection(section) {\n this.section = section;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n draw(stave, shift_x) {\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n const paddingX = 2;\n const paddingY = 2;\n const rectWidth = 2;\n const textMeasurements = ctx.measureText(this.section);\n const textWidth = textMeasurements.width;\n const textHeight = textMeasurements.height;\n const width = textWidth + 2 * paddingX; // add left & right padding\n const height = textHeight + 2 * paddingY; // add top & bottom padding\n // Seems to be a good default y\n const y = stave.getYForTopText(1.5) + this.shift_y;\n const x = this.x + shift_x;\n if (this.drawRect) {\n ctx.beginPath();\n ctx.setLineWidth(rectWidth);\n ctx.rect(x, y + textMeasurements.y - paddingY, width, height);\n ctx.stroke();\n }\n ctx.fillText(this.section, x + paddingX, y);\n ctx.restore();\n return this;\n }\n}\nStaveSection.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 10,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Radosaw Eichler 2012\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport class StaveTempo extends StaveModifier {\n constructor(tempo, x, shift_y) {\n super();\n /** Font size for note. */\n this.render_options = { glyph_font_scale: 30 };\n this.tempo = tempo;\n this.position = StaveModifierPosition.ABOVE;\n this.x = x;\n this.shift_x = 10;\n this.shift_y = shift_y;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveTempo;\n }\n setTempo(tempo) {\n this.tempo = tempo;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n draw(stave, shift_x) {\n const ctx = stave.checkContext();\n this.setRendered();\n const options = this.render_options;\n // FIXME: What does the '38' mean? Why 38? Is that supposed to\n // be the default font size for standard notation?\n const scale = options.glyph_font_scale / 38;\n const name = this.tempo.name;\n const duration = this.tempo.duration;\n const dots = this.tempo.dots || 0;\n const bpm = this.tempo.bpm;\n let x = this.x + this.shift_x + shift_x;\n const y = stave.getYForTopText(1) + this.shift_y;\n ctx.save();\n if (name) {\n ctx.setFont(this.textFont);\n ctx.fillText(name, x, y);\n x += ctx.measureText(name).width;\n }\n if (duration && bpm) {\n // Override the weight and style.\n ctx.setFont(Object.assign(Object.assign({}, this.textFont), { weight: 'normal', style: 'normal' }));\n if (name) {\n x += ctx.measureText(' ').width;\n ctx.fillText('(', x, y);\n x += ctx.measureText('(').width;\n }\n const code = Tables.getGlyphProps(duration);\n x += 3 * scale;\n Glyph.renderGlyph(ctx, x, y, options.glyph_font_scale, code.code_head);\n x += code.getWidth() * scale;\n // Draw stem and flags\n if (code.stem) {\n let stem_height = 30;\n if (code.beam_count)\n stem_height += 3 * (code.beam_count - 1);\n stem_height *= scale;\n const y_top = y - stem_height;\n ctx.fillRect(x - scale, y_top, scale, stem_height);\n if (code.flag) {\n Glyph.renderGlyph(ctx, x, y_top, options.glyph_font_scale, code.code_flag_upstem, {\n category: 'flag.staveTempo',\n });\n if (!dots)\n x += 6 * scale;\n }\n }\n // Draw dot\n for (let i = 0; i < dots; i++) {\n x += 6 * scale;\n ctx.beginPath();\n ctx.arc(x, y + 2 * scale, 2 * scale, 0, Math.PI * 2, false);\n ctx.fill();\n }\n ctx.fillText(' = ' + bpm + (name ? ')' : ''), x + 3 * scale, y);\n }\n ctx.restore();\n return this;\n }\n}\nStaveTempo.TEXT_FONT = {\n family: Font.SERIF,\n size: 14,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { TextJustification, TextNote } from './textnote';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveText extends StaveModifier {\n constructor(text, position, options = {}) {\n super();\n this.setWidth(16);\n this.text = text;\n this.position = position;\n this.options = Object.assign({ shift_x: 0, shift_y: 0, justification: TextNote.Justification.CENTER }, options);\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveText;\n }\n setStaveText(text) {\n this.text = text;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n setText(text) {\n this.text = text;\n return this;\n }\n draw(stave) {\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n const text_width = ctx.measureText('' + this.text).width;\n let x;\n let y;\n switch (this.position) {\n case StaveModifierPosition.LEFT:\n case StaveModifierPosition.RIGHT:\n y = (stave.getYForLine(0) + stave.getBottomLineY()) / 2 + this.options.shift_y;\n if (this.position === StaveModifierPosition.LEFT) {\n x = stave.getX() - text_width - 24 + this.options.shift_x;\n }\n else {\n x = stave.getX() + stave.getWidth() + 24 + this.options.shift_x;\n }\n break;\n case StaveModifierPosition.ABOVE:\n case StaveModifierPosition.BELOW:\n x = stave.getX() + this.options.shift_x;\n if (this.options.justification === TextJustification.CENTER) {\n x += stave.getWidth() / 2 - text_width / 2;\n }\n else if (this.options.justification === TextJustification.RIGHT) {\n x += stave.getWidth() - text_width;\n }\n if (this.position === StaveModifierPosition.ABOVE) {\n y = stave.getYForTopText(2) + this.options.shift_y;\n }\n else {\n y = stave.getYForBottomText(2) + this.options.shift_y;\n }\n break;\n default:\n throw new RuntimeError('InvalidPosition', 'Value Must be in Modifier.Position.');\n }\n ctx.fillText('' + this.text, x, y + 4);\n ctx.restore();\n return this;\n }\n}\nStaveText.TEXT_FONT = {\n family: Font.SERIF,\n size: 16,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveTie extends Element {\n /**\n * @param notes is a struct that has:\n *\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n *\n * @param text\n */\n constructor(notes, text) {\n super();\n this.setNotes(notes);\n this.text = text;\n this.render_options = {\n cp1: 8,\n cp2: 12,\n text_shift_x: 0,\n first_x_shift: 0,\n last_x_shift: 0,\n y_shift: 7,\n tie_spacing: 0,\n };\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveTie;\n }\n setDirection(direction) {\n this.direction = direction;\n return this;\n }\n /**\n * Set the notes to attach this tie to.\n *\n * @param {!Object} notes The notes to tie up.\n */\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Tie needs to have either first_note or last_note set.');\n }\n if (!notes.first_indices) {\n notes.first_indices = [0];\n }\n if (!notes.last_indices) {\n notes.last_indices = [0];\n }\n if (notes.first_indices.length !== notes.last_indices.length) {\n throw new RuntimeError('BadArguments', 'Tied notes must have same number of indices.');\n }\n this.notes = notes;\n return this;\n }\n /**\n * @return {boolean} Returns true if this is a partial bar.\n */\n isPartial() {\n return !this.notes.first_note || !this.notes.last_note;\n }\n renderTie(params) {\n if (params.first_ys.length === 0 || params.last_ys.length === 0) {\n throw new RuntimeError('BadArguments', 'No Y-values to render');\n }\n const ctx = this.checkContext();\n let cp1 = this.render_options.cp1;\n let cp2 = this.render_options.cp2;\n if (Math.abs(params.last_x_px - params.first_x_px) < 10) {\n cp1 = 2;\n cp2 = 8;\n }\n const first_x_shift = this.render_options.first_x_shift;\n const last_x_shift = this.render_options.last_x_shift;\n const y_shift = this.render_options.y_shift * params.direction;\n // setNotes(...) verified that first_indices and last_indices are not undefined.\n // As a result, we use the ! non-null assertion operator here.\n // eslint-disable-next-line\n const first_indices = this.notes.first_indices;\n // eslint-disable-next-line\n const last_indices = this.notes.last_indices;\n for (let i = 0; i < first_indices.length; ++i) {\n const cp_x = (params.last_x_px + last_x_shift + (params.first_x_px + first_x_shift)) / 2;\n const first_y_px = params.first_ys[first_indices[i]] + y_shift;\n const last_y_px = params.last_ys[last_indices[i]] + y_shift;\n if (isNaN(first_y_px) || isNaN(last_y_px)) {\n throw new RuntimeError('BadArguments', 'Bad indices for tie rendering.');\n }\n const top_cp_y = (first_y_px + last_y_px) / 2 + cp1 * params.direction;\n const bottom_cp_y = (first_y_px + last_y_px) / 2 + cp2 * params.direction;\n ctx.openGroup('stavetie', this.getAttribute('id'));\n ctx.beginPath();\n ctx.moveTo(params.first_x_px + first_x_shift, first_y_px);\n ctx.quadraticCurveTo(cp_x, top_cp_y, params.last_x_px + last_x_shift, last_y_px);\n ctx.quadraticCurveTo(cp_x, bottom_cp_y, params.first_x_px + first_x_shift, first_y_px);\n ctx.closePath();\n ctx.fill();\n ctx.closeGroup();\n }\n }\n renderText(first_x_px, last_x_px) {\n var _a, _b, _c;\n if (!this.text)\n return;\n const ctx = this.checkContext();\n let center_x = (first_x_px + last_x_px) / 2;\n center_x -= ctx.measureText(this.text).width / 2;\n const stave = (_b = (_a = this.notes.first_note) === null || _a === void 0 ? void 0 : _a.checkStave()) !== null && _b !== void 0 ? _b : (_c = this.notes.last_note) === null || _c === void 0 ? void 0 : _c.checkStave();\n if (stave) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText(this.text, center_x + this.render_options.text_shift_x, stave.getYForTopText() - 1);\n ctx.restore();\n }\n }\n /**\n * Returns the TieNotes structure of the first and last note this tie connects.\n */\n getNotes() {\n return this.notes;\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const first_note = this.notes.first_note;\n const last_note = this.notes.last_note;\n // Provide some default values so the compiler doesn't complain.\n let first_x_px = 0;\n let last_x_px = 0;\n let first_ys = [0];\n let last_ys = [0];\n let stem_direction = 0;\n if (first_note) {\n first_x_px = first_note.getTieRightX() + this.render_options.tie_spacing;\n stem_direction = first_note.getStemDirection();\n first_ys = first_note.getYs();\n }\n else if (last_note) {\n const stave = last_note.checkStave();\n first_x_px = stave.getTieStartX();\n first_ys = last_note.getYs();\n this.notes.first_indices = this.notes.last_indices;\n }\n if (last_note) {\n last_x_px = last_note.getTieLeftX() + this.render_options.tie_spacing;\n stem_direction = last_note.getStemDirection();\n last_ys = last_note.getYs();\n }\n else if (first_note) {\n const stave = first_note.checkStave();\n last_x_px = stave.getTieEndX();\n last_ys = first_note.getYs();\n this.notes.last_indices = this.notes.first_indices;\n }\n if (this.direction) {\n stem_direction = this.direction;\n }\n this.renderTie({\n first_x_px,\n last_x_px,\n first_ys,\n last_ys,\n direction: stem_direction,\n });\n this.renderText(first_x_px, last_x_px);\n return true;\n }\n}\n/** Default text font. */\nStaveTie.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier } from './stavemodifier';\nimport { Category } from './typeguard';\nexport var VoltaType;\n(function (VoltaType) {\n VoltaType[VoltaType[\"NONE\"] = 1] = \"NONE\";\n VoltaType[VoltaType[\"BEGIN\"] = 2] = \"BEGIN\";\n VoltaType[VoltaType[\"MID\"] = 3] = \"MID\";\n VoltaType[VoltaType[\"END\"] = 4] = \"END\";\n VoltaType[VoltaType[\"BEGIN_END\"] = 5] = \"BEGIN_END\";\n})(VoltaType || (VoltaType = {}));\nexport class Volta extends StaveModifier {\n constructor(type, number, x, y_shift) {\n super();\n this.volta = type;\n this.x = x;\n this.y_shift = y_shift;\n this.number = number;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.Volta;\n }\n static get type() {\n return VoltaType;\n }\n setShiftY(y) {\n this.y_shift = y;\n return this;\n }\n draw(stave, x) {\n const ctx = stave.checkContext();\n this.setRendered();\n let width = stave.getWidth() - x; // don't include x (offset) for width\n const top_y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n const vert_height = 1.5 * stave.getSpacingBetweenLines();\n switch (this.volta) {\n case VoltaType.BEGIN:\n ctx.fillRect(this.x + x, top_y, 1, vert_height);\n break;\n case VoltaType.END:\n width -= 5;\n ctx.fillRect(this.x + x + width, top_y, 1, vert_height);\n break;\n case VoltaType.BEGIN_END:\n width -= 3;\n ctx.fillRect(this.x + x, top_y, 1, vert_height);\n ctx.fillRect(this.x + x + width, top_y, 1, vert_height);\n break;\n default:\n break;\n }\n // If the beginning of a volta, draw measure number\n if (this.volta === VoltaType.BEGIN || this.volta === VoltaType.BEGIN_END) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText(this.number, this.x + x + 5, top_y + 15);\n ctx.restore();\n }\n ctx.fillRect(this.x + x, top_y, width, 1);\n return this;\n }\n}\nVolta.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 9,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// This file implements the `Stem` object. Generally this object is handled\n// by its parent `StemmableNote`.\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Stem.DEBUG)\n log('Vex.Flow.Stem', args);\n}\nexport class Stem extends Element {\n constructor(options) {\n super();\n this.stem_up_y_offset = 0;\n this.stem_down_y_offset = 0;\n this.stem_up_y_base_offset = 0;\n this.stem_down_y_base_offset = 0;\n // Default notehead x bounds\n this.x_begin = (options === null || options === void 0 ? void 0 : options.x_begin) || 0;\n this.x_end = (options === null || options === void 0 ? void 0 : options.x_end) || 0;\n // Y bounds for top/bottom most notehead\n this.y_top = (options === null || options === void 0 ? void 0 : options.y_top) || 0;\n this.y_bottom = (options === null || options === void 0 ? void 0 : options.y_bottom) || 0;\n // Stem top extension\n this.stem_extension = (options === null || options === void 0 ? void 0 : options.stem_extension) || 0;\n // Direction of the stem\n this.stem_direction = (options === null || options === void 0 ? void 0 : options.stem_direction) || 0;\n // Flag to override all draw calls\n this.hide = (options === null || options === void 0 ? void 0 : options.hide) || false;\n this.isStemlet = (options === null || options === void 0 ? void 0 : options.isStemlet) || false;\n this.stemletHeight = (options === null || options === void 0 ? void 0 : options.stemletHeight) || 0;\n // Use to adjust the rendered height without affecting\n // the results of `.getExtents()`\n this.renderHeightAdjustment = 0;\n this.setOptions(options);\n }\n static get CATEGORY() {\n return Category.Stem;\n }\n // Stem directions\n static get UP() {\n return 1;\n }\n static get DOWN() {\n return -1;\n }\n // Theme\n static get WIDTH() {\n return Tables.STEM_WIDTH;\n }\n static get HEIGHT() {\n return Tables.STEM_HEIGHT;\n }\n setOptions(options) {\n // Changing where the stem meets the head\n this.stem_up_y_offset = (options === null || options === void 0 ? void 0 : options.stem_up_y_offset) || 0;\n this.stem_down_y_offset = (options === null || options === void 0 ? void 0 : options.stem_down_y_offset) || 0;\n this.stem_up_y_base_offset = (options === null || options === void 0 ? void 0 : options.stem_up_y_base_offset) || 0;\n this.stem_down_y_base_offset = (options === null || options === void 0 ? void 0 : options.stem_down_y_base_offset) || 0;\n }\n // Set the x bounds for the default notehead\n setNoteHeadXBounds(x_begin, x_end) {\n this.x_begin = x_begin;\n this.x_end = x_end;\n return this;\n }\n // Set the direction of the stem in relation to the noteheads\n setDirection(direction) {\n this.stem_direction = direction;\n }\n // Set the extension for the stem, generally for flags or beams\n setExtension(ext) {\n this.stem_extension = ext;\n }\n getExtension() {\n return this.stem_extension;\n }\n // The the y bounds for the top and bottom noteheads\n setYBounds(y_top, y_bottom) {\n this.y_top = y_top;\n this.y_bottom = y_bottom;\n }\n // Gets the entire height for the stem\n getHeight() {\n const y_offset = this.stem_direction === Stem.UP ? this.stem_up_y_offset : this.stem_down_y_offset;\n const unsigned_height = this.y_bottom - this.y_top + (Stem.HEIGHT - y_offset + this.stem_extension); // parentheses just for grouping.\n return unsigned_height * this.stem_direction;\n }\n getBoundingBox() {\n throw new RuntimeError('NotImplemented', 'getBoundingBox() not implemented.');\n }\n // Get the y coordinates for the very base of the stem to the top of\n // the extension\n getExtents() {\n const isStemUp = this.stem_direction === Stem.UP;\n const ys = [this.y_top, this.y_bottom];\n const stemHeight = Stem.HEIGHT + this.stem_extension;\n const innerMostNoteheadY = (isStemUp ? Math.min : Math.max)(...ys);\n const outerMostNoteheadY = (isStemUp ? Math.max : Math.min)(...ys);\n const stemTipY = innerMostNoteheadY + stemHeight * -this.stem_direction;\n return { topY: stemTipY, baseY: outerMostNoteheadY };\n }\n setVisibility(isVisible) {\n this.hide = !isVisible;\n return this;\n }\n setStemlet(isStemlet, stemletHeight) {\n this.isStemlet = isStemlet;\n this.stemletHeight = stemletHeight;\n return this;\n }\n adjustHeightForFlag() {\n this.renderHeightAdjustment = Tables.currentMusicFont().lookupMetric('stem.heightAdjustmentForFlag', -3);\n }\n adjustHeightForBeam() {\n this.renderHeightAdjustment = -Stem.WIDTH / 2;\n }\n // Render the stem onto the canvas\n draw() {\n this.setRendered();\n if (this.hide)\n return;\n const ctx = this.checkContext();\n let stem_x;\n let stem_y;\n const stem_direction = this.stem_direction;\n let y_base_offset = 0;\n if (stem_direction === Stem.DOWN) {\n // Down stems are rendered to the left of the head.\n stem_x = this.x_begin;\n stem_y = this.y_top + this.stem_down_y_offset;\n y_base_offset = this.stem_down_y_base_offset;\n }\n else {\n // Up stems are rendered to the right of the head.\n stem_x = this.x_end;\n stem_y = this.y_bottom - this.stem_up_y_offset;\n y_base_offset = this.stem_up_y_base_offset;\n }\n const stemHeight = this.getHeight();\n L('Rendering stem - ', 'Top Y: ', this.y_top, 'Bottom Y: ', this.y_bottom);\n // The offset from the stem's base which is required fo satisfy the stemlet height\n const stemletYOffset = this.isStemlet ? stemHeight - this.stemletHeight * this.stem_direction : 0;\n // Draw the stem\n ctx.save();\n ctx.openGroup('stem', this.getAttribute('id'), { pointerBBox: true });\n this.applyStyle(ctx);\n ctx.beginPath();\n ctx.setLineWidth(Stem.WIDTH);\n ctx.moveTo(stem_x, stem_y - stemletYOffset + y_base_offset);\n ctx.lineTo(stem_x, stem_y - stemHeight - this.renderHeightAdjustment * stem_direction);\n ctx.stroke();\n this.restoreStyle(ctx);\n ctx.closeGroup();\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Stem.DEBUG` to `true`. */\nStem.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// `StemmableNote` is an abstract interface for notes with optional stems.\n// Examples of stemmable notes are `StaveNote` and `TabNote`\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StemmableNote extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n }\n static get CATEGORY() {\n return Category.StemmableNote;\n }\n // Get and set the note's `Stem`\n getStem() {\n return this.stem;\n }\n checkStem() {\n if (!this.stem) {\n throw new RuntimeError('NoStem', 'No stem attached to instance');\n }\n return this.stem;\n }\n setStem(stem) {\n this.stem = stem;\n this.addChildElement(stem);\n return this;\n }\n // Builds and sets a new stem\n buildStem() {\n const stem = new Stem();\n this.setStem(stem);\n return this;\n }\n buildFlag(category = 'flag') {\n const { glyph } = this;\n if (this.hasFlag()) {\n const flagCode = this.getStemDirection() === Stem.DOWN ? glyph.code_flag_downstem : glyph.code_flag_upstem;\n this.flag = new Glyph(flagCode, this.render_options.glyph_font_scale, { category });\n }\n }\n // Get the custom glyph associated with the outer note head on the base of the stem.\n getBaseCustomNoteHeadGlyph() {\n if (this.getStemDirection() === Stem.DOWN) {\n return this.customGlyphs[this.customGlyphs.length - 1];\n }\n else {\n return this.customGlyphs[0];\n }\n }\n // Get the full length of stem\n getStemLength() {\n return Stem.HEIGHT + this.getStemExtension();\n }\n // Get the number of beams for this duration\n getBeamCount() {\n const glyph = this.getGlyph();\n if (glyph) {\n return glyph.beam_count;\n }\n else {\n return 0;\n }\n }\n // Get the minimum length of stem\n getStemMinimumLength() {\n const frac = Tables.durationToFraction(this.duration);\n let length = frac.value() <= 1 ? 0 : 20;\n // if note is flagged, cannot shorten beam\n switch (this.duration) {\n case '8':\n if (this.beam == undefined)\n length = 35;\n break;\n case '16':\n length = this.beam == undefined ? 35 : 25;\n break;\n case '32':\n length = this.beam == undefined ? 45 : 35;\n break;\n case '64':\n length = this.beam == undefined ? 50 : 40;\n break;\n case '128':\n length = this.beam == undefined ? 55 : 45;\n break;\n default:\n break;\n }\n return length;\n }\n // Get/set the direction of the stem\n getStemDirection() {\n if (!this.stem_direction)\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n return this.stem_direction;\n }\n setStemDirection(direction) {\n if (!direction)\n direction = Stem.UP;\n if (direction !== Stem.UP && direction !== Stem.DOWN) {\n throw new RuntimeError('BadArgument', `Invalid stem direction: ${direction}`);\n }\n this.stem_direction = direction;\n // Reset and reformat everything. Flag has to be built before calling getStemExtension.\n this.reset();\n if (this.hasFlag()) {\n this.buildFlag();\n }\n this.beam = undefined;\n if (this.stem) {\n this.stem.setDirection(direction);\n this.stem.setExtension(this.getStemExtension());\n // Lookup the base custom notehead (closest to the base of the stem) to extend or shorten\n // the stem appropriately. If there's no custom note head, lookup the standard notehead.\n const glyph = this.getBaseCustomNoteHeadGlyph() || this.getGlyph();\n // Get the font-specific customizations for the note heads.\n const offsets = Tables.currentMusicFont().lookupMetric(`stem.noteHead.${glyph.code_head}`, {\n offsetYBaseStemUp: 0,\n offsetYTopStemUp: 0,\n offsetYBaseStemDown: 0,\n offsetYTopStemDown: 0,\n });\n // Configure the stem to use these offsets.\n this.stem.setOptions({\n stem_up_y_offset: offsets.offsetYTopStemUp,\n stem_down_y_offset: offsets.offsetYTopStemDown,\n stem_up_y_base_offset: offsets.offsetYBaseStemUp,\n stem_down_y_base_offset: offsets.offsetYBaseStemDown, // glyph.stem_down_y_base_offset,\n });\n }\n if (this.preFormatted) {\n this.preFormat();\n }\n return this;\n }\n // Get the `x` coordinate of the stem\n getStemX() {\n const x_begin = this.getAbsoluteX() + this.x_shift;\n const x_end = this.getAbsoluteX() + this.x_shift + this.getGlyphWidth();\n const stem_x = this.stem_direction === Stem.DOWN ? x_begin : x_end;\n return stem_x;\n }\n // Get the `x` coordinate for the center of the glyph.\n // Used for `TabNote` stems and stemlets over rests\n getCenterGlyphX() {\n return this.getAbsoluteX() + this.x_shift + this.getGlyphWidth() / 2;\n }\n // Get the stem extension for the current duration\n getStemExtension() {\n const glyph = this.getGlyph();\n if (this.stem_extension_override != undefined) {\n return this.stem_extension_override;\n }\n // Use stem_beam_extension with beams\n if (this.beam) {\n return glyph.stem_beam_extension;\n }\n if (glyph) {\n return this.getStemDirection() === Stem.UP ? glyph.stem_up_extension : glyph.stem_down_extension;\n }\n return 0;\n }\n // Set the stem length to a specific. Will override the default length.\n setStemLength(height) {\n this.stem_extension_override = height - Stem.HEIGHT;\n return this;\n }\n // Get the top and bottom `y` values of the stem.\n getStemExtents() {\n if (!this.stem)\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n return this.stem.getExtents();\n }\n /** Gets the `y` value for the top modifiers at a specific `textLine`. */\n getYForTopText(textLine) {\n const stave = this.checkStave();\n if (this.hasStem()) {\n const extents = this.getStemExtents();\n if (!extents)\n throw new RuntimeError('InvalidState', 'Stem does not have extents.');\n return Math.min(stave.getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1));\n }\n else {\n return stave.getYForTopText(textLine);\n }\n }\n /** Gets the `y` value for the bottom modifiers at a specific `textLine`. */\n getYForBottomText(textLine) {\n const stave = this.checkStave();\n if (this.hasStem()) {\n const extents = this.getStemExtents();\n if (!extents)\n throw new RuntimeError('InvalidState', 'Stem does not have extents.');\n return Math.max(stave.getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine);\n }\n else {\n return stave.getYForBottomText(textLine);\n }\n }\n hasFlag() {\n return Tables.getGlyphProps(this.duration).flag && !this.beam;\n }\n /** Post formats the note. */\n postFormat() {\n var _a;\n (_a = this.beam) === null || _a === void 0 ? void 0 : _a.postFormat();\n this.postFormatted = true;\n return this;\n }\n /** Renders the stem onto the canvas. */\n drawStem(stemOptions) {\n var _a;\n this.checkContext();\n this.setRendered();\n this.setStem(new Stem(stemOptions));\n (_a = this.stem) === null || _a === void 0 ? void 0 : _a.setContext(this.getContext()).draw();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns\n//\n// This file implements the `StringNumber` class which renders string\n// number annotations beside notes.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Renderer } from './renderer';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isStaveNote, isStemmableNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StringNumber extends Modifier {\n constructor(number) {\n super();\n this.string_number = number;\n this.position = Modifier.Position.ABOVE; // Default position above stem or note head\n this.x_shift = 0;\n this.y_shift = 0;\n this.text_line = 0;\n this.stem_offset = 0;\n this.x_offset = 0; // Horizontal offset from default\n this.y_offset = 0; // Vertical offset from default\n this.dashed = true; // true - draw dashed extension false - no extension\n this.leg = Renderer.LineEndType.NONE; // draw upward/downward leg at the of extension line\n this.radius = 8;\n this.drawCircle = true;\n this.setWidth(this.radius * 2 + 4);\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StringNumber;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.stringNumber;\n }\n // ## Static Methods\n // Arrange string numbers inside a `ModifierContext`\n static format(nums, state) {\n const left_shift = state.left_shift;\n const right_shift = state.right_shift;\n const num_spacing = 1;\n if (!nums || nums.length === 0)\n return false;\n const nums_list = [];\n let prev_note = null;\n let shift_left = 0;\n let shift_right = 0;\n const modLines = 0;\n for (let i = 0; i < nums.length; ++i) {\n const num = nums[i];\n const note = num.getNote();\n const pos = num.getPosition();\n if (!isStaveNote(note)) {\n throw new RuntimeError('NoStaveNote');\n }\n const index = num.checkIndex();\n const props = note.getKeyProps()[index];\n const mc = note.getModifierContext();\n const verticalSpaceNeeded = (num.radius * 2) / Tables.STAVE_LINE_DISTANCE + 0.5;\n if (mc) {\n if (pos === ModifierPosition.ABOVE) {\n num.text_line = mc.getState().top_text_line;\n state.top_text_line += verticalSpaceNeeded;\n }\n else if (pos === ModifierPosition.BELOW) {\n num.text_line = mc.getState().text_line;\n state.text_line += verticalSpaceNeeded;\n }\n }\n if (note !== prev_note) {\n for (let n = 0; n < note.keys.length; ++n) {\n if (left_shift === 0) {\n shift_left = Math.max(note.getLeftDisplacedHeadPx(), shift_left);\n }\n if (right_shift === 0) {\n shift_right = Math.max(note.getRightDisplacedHeadPx(), shift_right);\n }\n }\n prev_note = note;\n }\n const glyphLine = modLines === 0 ? props.line : modLines;\n nums_list.push({\n pos,\n note,\n num,\n line: glyphLine,\n shiftL: shift_left,\n shiftR: shift_right,\n });\n }\n // Sort string numbers by line number.\n nums_list.sort((a, b) => b.line - a.line);\n let num_shiftR = 0;\n let x_widthL = 0;\n let x_widthR = 0;\n let last_line = null;\n let last_note = null;\n for (let i = 0; i < nums_list.length; ++i) {\n let num_shift = 0;\n const note = nums_list[i].note;\n const pos = nums_list[i].pos;\n const num = nums_list[i].num;\n const line = nums_list[i].line;\n const shiftR = nums_list[i].shiftR;\n // Reset the position of the string number every line.\n if (line !== last_line || note !== last_note) {\n num_shiftR = right_shift + shiftR;\n }\n const num_width = num.getWidth() + num_spacing;\n if (pos === Modifier.Position.LEFT) {\n num.setXShift(left_shift);\n num_shift = shift_left + num_width; // spacing\n x_widthL = num_shift > x_widthL ? num_shift : x_widthL;\n }\n else if (pos === Modifier.Position.RIGHT) {\n num.setXShift(num_shiftR);\n num_shift += num_width; // spacing\n x_widthR = num_shift > x_widthR ? num_shift : x_widthR;\n }\n last_line = line;\n last_note = note;\n }\n state.left_shift += x_widthL;\n state.right_shift += x_widthR;\n return true;\n }\n setLineEndType(leg) {\n if (leg >= Renderer.LineEndType.NONE && leg <= Renderer.LineEndType.DOWN) {\n this.leg = leg;\n }\n return this;\n }\n setStringNumber(number) {\n this.string_number = number;\n return this;\n }\n setOffsetX(x) {\n this.x_offset = x;\n return this;\n }\n setOffsetY(y) {\n this.y_offset = y;\n return this;\n }\n setLastNote(note) {\n this.last_note = note;\n return this;\n }\n setDashed(dashed) {\n this.dashed = dashed;\n return this;\n }\n setDrawCircle(drawCircle) {\n this.drawCircle = drawCircle;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let dot_x = start.x + this.x_shift + this.x_offset;\n let stem_ext = {};\n if (note.hasStem()) {\n stem_ext = note.checkStem().getExtents();\n }\n let dot_y = start.y + this.y_shift + this.y_offset;\n switch (this.position) {\n case Modifier.Position.ABOVE:\n {\n const ys = note.getYs();\n dot_y = ys.reduce((a, b) => (a < b ? a : b));\n if (note.hasStem() && stemDirection == Stem.UP) {\n dot_y = stem_ext.topY + StringNumber.metrics.stemPadding;\n }\n dot_y -= this.radius + StringNumber.metrics.verticalPadding + this.text_line * Tables.STAVE_LINE_DISTANCE;\n }\n break;\n case Modifier.Position.BELOW:\n {\n const ys = note.getYs();\n dot_y = ys.reduce((a, b) => (a > b ? a : b));\n if (note.hasStem() && stemDirection == Stem.DOWN) {\n dot_y = stem_ext.topY - StringNumber.metrics.stemPadding;\n }\n dot_y += this.radius + StringNumber.metrics.verticalPadding + this.text_line * Tables.STAVE_LINE_DISTANCE;\n }\n break;\n case Modifier.Position.LEFT:\n dot_x -= this.radius / 2 + StringNumber.metrics.leftPadding;\n break;\n case Modifier.Position.RIGHT:\n dot_x += this.radius / 2 + StringNumber.metrics.rightPadding;\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} is invalid`);\n }\n ctx.save();\n if (this.drawCircle) {\n ctx.beginPath();\n ctx.arc(dot_x, dot_y, this.radius, 0, Math.PI * 2, false);\n ctx.setLineWidth(1.5);\n ctx.stroke();\n }\n ctx.setFont(this.textFont);\n const x = dot_x - ctx.measureText(this.string_number).width / 2;\n ctx.fillText('' + this.string_number, x, dot_y + 4.5);\n const lastNote = this.last_note;\n if (isStemmableNote(lastNote)) {\n // Only StemmableNote objects have getStemX().\n const end = lastNote.getStemX() - note.getX() + 5;\n ctx.setStrokeStyle('#000000');\n ctx.setLineCap('round');\n ctx.setLineWidth(0.6);\n if (this.dashed) {\n Renderer.drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 3]);\n }\n else {\n Renderer.drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 0]);\n }\n let len;\n let pattern;\n switch (this.leg) {\n case Renderer.LineEndType.UP:\n len = -10;\n pattern = this.dashed ? [3, 3] : [3, 0];\n Renderer.drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern);\n break;\n case Renderer.LineEndType.DOWN:\n len = 10;\n pattern = this.dashed ? [3, 3] : [3, 0];\n Renderer.drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern);\n break;\n default:\n break;\n }\n }\n ctx.restore();\n }\n}\nStringNumber.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: Font.SIZE,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns\n//\n// This file implements the `Stroke` class which renders chord strokes\n// that can be arpeggiated, brushed, rasquedo, etc.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Category, isNote, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class Stroke extends Modifier {\n constructor(type, options) {\n super();\n this.options = Object.assign({ all_voices: true }, options);\n // multi voice - span stroke across all voices if true\n this.all_voices = this.options.all_voices;\n // multi voice - end note of stroke, set in draw()\n this.type = type;\n this.position = Modifier.Position.LEFT;\n this.render_options = {\n font_scale: 38,\n };\n this.resetFont();\n this.setXShift(0);\n this.setWidth(10);\n }\n static get CATEGORY() {\n return Category.Stroke;\n }\n // Arrange strokes inside `ModifierContext`\n static format(strokes, state) {\n const left_shift = state.left_shift;\n const stroke_spacing = 0;\n if (!strokes || strokes.length === 0)\n return false;\n const strokeList = strokes.map((stroke) => {\n const note = stroke.getNote();\n const index = stroke.checkIndex();\n if (isStaveNote(note)) {\n // Only StaveNote objects have getKeyProps().\n const { line } = note.getKeyProps()[index];\n const shift = note.getLeftDisplacedHeadPx();\n return { line, shift, stroke };\n }\n else if (isTabNote(note)) {\n // Only TabNote objects have getPositions().\n const { str: string } = note.getPositions()[index];\n return { line: string, shift: 0, stroke };\n }\n else {\n throw new RuntimeError('Internal', 'Unexpected instance.');\n }\n });\n const strokeShift = left_shift;\n // There can only be one stroke .. if more than one, they overlay each other\n const xShift = strokeList.reduce((xShift, { stroke, shift }) => {\n stroke.setXShift(strokeShift + shift);\n return Math.max(stroke.getWidth() + stroke_spacing, xShift);\n }, 0);\n state.left_shift += xShift;\n return true;\n }\n getPosition() {\n return this.position;\n }\n addEndNote(note) {\n this.note_end = note;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n let ys = note.getYs();\n let topY = start.y;\n let botY = start.y;\n const x = start.x - 5;\n const line_space = note.checkStave().getSpacingBetweenLines();\n const notes = this.checkModifierContext().getMembers(note.getCategory());\n for (let i = 0; i < notes.length; i++) {\n const note = notes[i];\n if (isNote(note)) {\n // Only Note objects have getYs().\n // note is an instance of either StaveNote or TabNote.\n ys = note.getYs();\n for (let n = 0; n < ys.length; n++) {\n if (this.note === notes[i] || this.all_voices) {\n topY = Math.min(topY, ys[n]);\n botY = Math.max(botY, ys[n]);\n }\n }\n }\n }\n let arrow = '';\n let arrow_shift_x = 0;\n let arrow_y = 0;\n let text_shift_x = 0;\n let text_y = 0;\n switch (this.type) {\n case Stroke.Type.BRUSH_DOWN:\n arrow = 'arrowheadBlackUp';\n arrow_shift_x = -3;\n arrow_y = topY - line_space / 2 + 10;\n botY += line_space / 2;\n break;\n case Stroke.Type.BRUSH_UP:\n arrow = 'arrowheadBlackDown';\n arrow_shift_x = 0.5;\n arrow_y = botY + line_space / 2;\n topY -= line_space / 2;\n break;\n case Stroke.Type.ROLL_DOWN:\n case Stroke.Type.RASQUEDO_DOWN:\n arrow = 'arrowheadBlackUp';\n arrow_shift_x = -3;\n text_shift_x = this.x_shift + arrow_shift_x - 2;\n if (isStaveNote(note)) {\n topY += 1.5 * line_space;\n if ((botY - topY) % 2 !== 0) {\n botY += 0.5 * line_space;\n }\n else {\n botY += line_space;\n }\n arrow_y = topY - line_space;\n text_y = botY + line_space + 2;\n }\n else {\n topY += 1.5 * line_space;\n botY += line_space;\n arrow_y = topY - 0.75 * line_space;\n text_y = botY + 0.25 * line_space;\n }\n break;\n case Stroke.Type.ROLL_UP:\n case Stroke.Type.RASQUEDO_UP:\n arrow = 'arrowheadBlackDown';\n arrow_shift_x = -4;\n text_shift_x = this.x_shift + arrow_shift_x - 1;\n if (isStaveNote(note)) {\n arrow_y = line_space / 2;\n topY += 0.5 * line_space;\n if ((botY - topY) % 2 === 0) {\n botY += line_space / 2;\n }\n arrow_y = botY + 0.5 * line_space;\n text_y = topY - 1.25 * line_space;\n }\n else {\n topY += 0.25 * line_space;\n botY += 0.5 * line_space;\n arrow_y = botY + 0.25 * line_space;\n text_y = topY - line_space;\n }\n break;\n case Stroke.Type.ARPEGGIO_DIRECTIONLESS:\n topY += 0.5 * line_space;\n botY += line_space; // * 0.5 can lead to slight underlap instead of overlap sometimes\n break;\n default:\n throw new RuntimeError('InvalidType', `The stroke type ${this.type} does not exist`);\n }\n let strokeLine = 'straight';\n // Draw the stroke\n if (this.type === Stroke.Type.BRUSH_DOWN || this.type === Stroke.Type.BRUSH_UP) {\n ctx.fillRect(x + this.x_shift, topY, 1, botY - topY);\n }\n else {\n strokeLine = 'wiggly';\n if (isStaveNote(note)) {\n for (let i = topY; i <= botY; i += line_space) {\n Glyph.renderGlyph(ctx, x + this.x_shift - 4, i, this.render_options.font_scale, 'vexWiggleArpeggioUp');\n }\n }\n else {\n let i;\n for (i = topY; i <= botY; i += 10) {\n Glyph.renderGlyph(ctx, x + this.x_shift - 4, i, this.render_options.font_scale, 'vexWiggleArpeggioUp');\n }\n if (this.type === Stroke.Type.RASQUEDO_DOWN) {\n text_y = i + 0.25 * line_space;\n }\n }\n }\n if (this.type === Stroke.Type.ARPEGGIO_DIRECTIONLESS) {\n return; // skip drawing arrow heads or text\n }\n // Draw the arrow head\n Glyph.renderGlyph(ctx, x + this.x_shift + arrow_shift_x, arrow_y, this.render_options.font_scale, arrow, {\n category: `stroke.${arrow}.${strokeLine}`,\n });\n // Draw the rasquedo \"R\"\n if (this.type === Stroke.Type.RASQUEDO_DOWN || this.type === Stroke.Type.RASQUEDO_UP) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText('R', x + text_shift_x, text_y);\n ctx.restore();\n }\n }\n}\nStroke.Type = {\n BRUSH_DOWN: 1,\n BRUSH_UP: 2,\n ROLL_DOWN: 3,\n ROLL_UP: 4,\n RASQUEDO_DOWN: 5,\n RASQUEDO_UP: 6,\n ARPEGGIO_DIRECTIONLESS: 7, // Arpeggiated chord without upwards or downwards arrow\n};\nStroke.TEXT_FONT = {\n family: Font.SERIF,\n size: Font.SIZE,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// @author Gregory Ristow (2015)\nimport { Font, FontStyle, FontWeight } from './font';\nimport { RenderContext } from './rendercontext';\nimport { normalizeAngle, prefix, RuntimeError } from './util';\n/** For a particular element type (e.g., rect), we will not apply certain presentation attributes. */\nconst ATTRIBUTES_TO_IGNORE = {\n path: {\n x: true,\n y: true,\n width: true,\n height: true,\n 'font-family': true,\n 'font-weight': true,\n 'font-style': true,\n 'font-size': true,\n },\n rect: {\n 'font-family': true,\n 'font-weight': true,\n 'font-style': true,\n 'font-size': true,\n },\n text: {\n width: true,\n height: true,\n },\n};\n/** Create the SVG in the SVG namespace. */\nconst SVG_NS = 'http://www.w3.org/2000/svg';\nconst TWO_PI = 2 * Math.PI;\nclass MeasureTextCache {\n constructor() {\n // The cache is keyed first by the text string, then by the font attributes\n // joined together.\n this.cache = {};\n }\n lookup(text, svg, attributes) {\n let entries = this.cache[text];\n if (entries === undefined) {\n entries = {};\n this.cache[text] = entries;\n }\n const family = attributes['font-family'];\n const size = attributes['font-size'];\n const weight = attributes['font-weight'];\n const style = attributes['font-style'];\n const key = `${family}%${size}%${weight}%${style}`;\n let entry = entries[key];\n if (entry === undefined) {\n entry = this.measureImpl(text, svg, attributes);\n entries[key] = entry;\n }\n return entry;\n }\n measureImpl(text, svg, attributes) {\n let txt = this.txt;\n if (!txt) {\n // Create the SVG text element that will be used to measure text in the event\n // of a cache miss.\n txt = document.createElementNS(SVG_NS, 'text');\n this.txt = txt;\n }\n txt.textContent = text;\n txt.setAttributeNS(null, 'font-family', attributes['font-family']);\n txt.setAttributeNS(null, 'font-size', attributes['font-size']);\n txt.setAttributeNS(null, 'font-style', attributes['font-style']);\n txt.setAttributeNS(null, 'font-weight', attributes['font-weight']);\n svg.appendChild(txt);\n const bbox = txt.getBBox();\n svg.removeChild(txt);\n return { x: bbox.x, y: bbox.y, width: bbox.width, height: bbox.height };\n }\n}\n/**\n * SVG rendering context with an API similar to CanvasRenderingContext2D.\n */\nexport class SVGContext extends RenderContext {\n constructor(element) {\n super();\n this.width = 0;\n this.height = 0;\n this.backgroundFillStyle = 'white';\n /** Formatted as CSS font shorthand (e.g., 'italic bold 12pt Arial') */\n this.fontCSSString = '';\n this.element = element;\n // Create a SVG element and add it to the container element.\n const svg = this.create('svg');\n this.element.appendChild(svg);\n this.svg = svg;\n this.parent = this.svg;\n this.groups = [this.svg];\n this.path = '';\n this.pen = { x: NaN, y: NaN };\n this.lineWidth = 1.0;\n const defaultFontAttributes = {\n 'font-family': Font.SANS_SERIF,\n 'font-size': Font.SIZE + 'pt',\n 'font-weight': FontWeight.NORMAL,\n 'font-style': FontStyle.NORMAL,\n };\n this.state = Object.assign({ scale: { x: 1, y: 1 } }, defaultFontAttributes);\n this.attributes = Object.assign({ 'stroke-width': 0.3, 'stroke-dasharray': 'none', fill: 'black', stroke: 'black' }, defaultFontAttributes);\n this.shadow_attributes = {\n width: 0,\n color: 'black',\n };\n this.state_stack = [];\n }\n create(svgElementType) {\n return document.createElementNS(SVG_NS, svgElementType);\n }\n // Allow grouping elements in containers for interactivity.\n openGroup(cls, id, attrs) {\n const group = this.create('g');\n this.groups.push(group);\n this.parent.appendChild(group);\n this.parent = group;\n if (cls)\n group.setAttribute('class', prefix(cls));\n if (id)\n group.setAttribute('id', prefix(id));\n if (attrs && attrs.pointerBBox) {\n group.setAttribute('pointer-events', 'bounding-box');\n }\n return group;\n }\n closeGroup() {\n this.groups.pop();\n this.parent = this.groups[this.groups.length - 1];\n }\n add(elem) {\n this.parent.appendChild(elem);\n }\n setFillStyle(style) {\n this.attributes.fill = style;\n return this;\n }\n /**\n * Used to set the fill color for `clearRect()`. This allows us to simulate\n * cutting a \"hole\" into the SVG drawing.\n */\n setBackgroundFillStyle(style) {\n this.backgroundFillStyle = style;\n return this;\n }\n setStrokeStyle(style) {\n this.attributes.stroke = style;\n return this;\n }\n setShadowColor(color) {\n this.shadow_attributes.color = color;\n return this;\n }\n /**\n * @param blur A non-negative float specifying the level of shadow blur, where 0\n * represents no blur and larger numbers represent increasingly more blur.\n * @returns this\n */\n setShadowBlur(blur) {\n this.shadow_attributes.width = blur;\n return this;\n }\n /**\n * @param width\n * @returns this\n */\n setLineWidth(width) {\n this.attributes['stroke-width'] = width;\n this.lineWidth = width;\n return this;\n }\n /**\n * @param lineDash an array of integers in the form of [dash, space, dash, space, etc...]\n * @returns this\n *\n * See: [SVG `stroke-dasharray` attribute](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray)\n */\n setLineDash(lineDash) {\n if (Object.prototype.toString.call(lineDash) === '[object Array]') {\n this.attributes['stroke-dasharray'] = lineDash.join(',');\n return this;\n }\n else {\n throw new RuntimeError('ArgumentError', 'lineDash must be an array of integers.');\n }\n }\n /**\n * @param capType\n * @returns this\n */\n setLineCap(capType) {\n this.attributes['stroke-linecap'] = capType;\n return this;\n }\n // ### Sizing & Scaling Methods:\n // TODO (GCR): See note at scale() -- separate our internal\n // conception of pixel-based width/height from the style.width\n // and style.height properties eventually to allow users to\n // apply responsive sizing attributes to the SVG.\n resize(width, height) {\n this.width = width;\n this.height = height;\n this.element.style.width = width.toString();\n this.svg.style.width = width.toString();\n this.svg.style.height = height.toString();\n const attributes = {\n width,\n height,\n };\n this.applyAttributes(this.svg, attributes);\n this.scale(this.state.scale.x, this.state.scale.y);\n return this;\n }\n scale(x, y) {\n // uses viewBox to scale\n // TODO (GCR): we may at some point want to distinguish the\n // style.width / style.height properties that are applied to\n // the SVG object from our internal conception of the SVG\n // width/height. This would allow us to create automatically\n // scaling SVG's that filled their containers, for instance.\n //\n // As this isn't implemented in Canvas contexts,\n // I've left as is for now, but in using the viewBox to\n // handle internal scaling, am trying to make it possible\n // for us to eventually move in that direction.\n this.state.scale = { x, y };\n const visibleWidth = this.width / x;\n const visibleHeight = this.height / y;\n this.setViewBox(0, 0, visibleWidth, visibleHeight);\n return this;\n }\n /**\n * 1 arg: string in the \"x y w h\" format\n * 4 args: x:number, y:number, w:number, h:number\n */\n setViewBox(viewBox_or_minX, minY, width, height) {\n if (typeof viewBox_or_minX === 'string') {\n this.svg.setAttribute('viewBox', viewBox_or_minX);\n }\n else {\n const viewBoxString = viewBox_or_minX + ' ' + minY + ' ' + width + ' ' + height;\n this.svg.setAttribute('viewBox', viewBoxString);\n }\n }\n // ### Drawing helper methods:\n applyAttributes(element, attributes) {\n const attrNamesToIgnore = ATTRIBUTES_TO_IGNORE[element.nodeName];\n for (const attrName in attributes) {\n if (attrNamesToIgnore && attrNamesToIgnore[attrName]) {\n continue;\n }\n element.setAttributeNS(null, attrName, attributes[attrName]);\n }\n return element;\n }\n // ### Shape & Path Methods:\n clear() {\n // Clear the SVG by removing all inner children.\n // (This approach is usually slightly more efficient\n // than removing the old SVG & adding a new one to\n // the container element, since it does not cause the\n // container to resize twice. Also, the resize\n // triggered by removing the entire SVG can trigger\n // a touchcancel event when the element resizes away\n // from a touch point.)\n while (this.svg.lastChild) {\n this.svg.removeChild(this.svg.lastChild);\n }\n // Replace the viewbox attribute we just removed.\n this.scale(this.state.scale.x, this.state.scale.y);\n }\n // ## Rectangles:\n rect(x, y, width, height, attributes) {\n // Avoid invalid negative height attributes by flipping the rectangle on its head:\n if (height < 0) {\n y += height;\n height *= -1;\n }\n const rectangle = this.create('rect');\n attributes = attributes !== null && attributes !== void 0 ? attributes : { fill: 'none', 'stroke-width': this.lineWidth, stroke: 'black' };\n this.applyAttributes(rectangle, Object.assign({ x, y, width, height }, attributes));\n this.add(rectangle);\n return this;\n }\n fillRect(x, y, width, height) {\n const attributes = { fill: this.attributes.fill };\n this.rect(x, y, width, height, attributes);\n return this;\n }\n clearRect(x, y, width, height) {\n // Currently this fills a rect with the backgroundFillStyle, rather\n // than \"cut a hole\" into the existing shapes.\n //\n // Since tabNote seems to be the only module that makes use of this\n // it may be worth creating a separate tabStave that would\n // draw lines around locations of tablature fingering.\n this.rect(x, y, width, height, { 'stroke-width': 0, fill: this.backgroundFillStyle });\n return this;\n }\n // ## Paths:\n beginPath() {\n this.path = '';\n this.pen.x = NaN;\n this.pen.y = NaN;\n return this;\n }\n moveTo(x, y) {\n this.path += 'M' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n lineTo(x, y) {\n this.path += 'L' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this.path += 'C' + x1 + ' ' + y1 + ',' + x2 + ' ' + y2 + ',' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this.path += 'Q' + x1 + ' ' + y1 + ',' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n arc(x, y, radius, startAngle, endAngle, counterclockwise) {\n const x0 = x + radius * Math.cos(startAngle);\n const y0 = y + radius * Math.sin(startAngle);\n // svg behavior different from canvas. Don't normalize angles if\n // we are drawing a circle because they both normalize to 0\n const tmpStartTest = normalizeAngle(startAngle);\n const tmpEndTest = normalizeAngle(endAngle);\n if ((!counterclockwise && endAngle - startAngle >= TWO_PI) ||\n (counterclockwise && startAngle - endAngle >= TWO_PI) ||\n tmpStartTest === tmpEndTest) {\n const x1 = x + radius * Math.cos(startAngle + Math.PI);\n const y1 = y + radius * Math.sin(startAngle + Math.PI);\n // There's no way to specify a completely circular arc in SVG so we have to\n // use two semi-circular arcs.\n this.path += `M${x0} ${y0} A${radius} ${radius} 0 0 0 ${x1} ${y1} `;\n this.path += `A${radius} ${radius} 0 0 0 ${x0} ${y0}`;\n this.pen.x = x0;\n this.pen.y = y0;\n }\n else {\n const x1 = x + radius * Math.cos(endAngle);\n const y1 = y + radius * Math.sin(endAngle);\n startAngle = tmpStartTest;\n endAngle = tmpEndTest;\n let large;\n if (Math.abs(endAngle - startAngle) < Math.PI) {\n large = counterclockwise;\n }\n else {\n large = !counterclockwise;\n }\n if (startAngle > endAngle) {\n large = !large;\n }\n const sweep = !counterclockwise;\n this.path += `M${x0} ${y0} A${radius} ${radius} 0 ${+large} ${+sweep} ${x1} ${y1}`;\n this.pen.x = x1;\n this.pen.y = y1;\n }\n return this;\n }\n closePath() {\n this.path += 'Z';\n return this;\n }\n getShadowStyle() {\n const sa = this.shadow_attributes;\n // A CSS drop-shadow filter blur looks different than a canvas shadowBlur\n // of the same radius, so we scale the drop-shadow radius here to make it\n // look close to the canvas shadow.\n return `filter: drop-shadow(0 0 ${sa.width / 1.5}px ${sa.color})`;\n }\n fill(attributes) {\n const path = this.create('path');\n if (typeof attributes === 'undefined') {\n attributes = Object.assign(Object.assign({}, this.attributes), { stroke: 'none' });\n }\n attributes.d = this.path;\n if (this.shadow_attributes.width > 0) {\n attributes.style = this.getShadowStyle();\n }\n this.applyAttributes(path, attributes);\n this.add(path);\n return this;\n }\n stroke() {\n const path = this.create('path');\n const attributes = Object.assign(Object.assign({}, this.attributes), { fill: 'none', 'stroke-width': this.lineWidth, d: this.path });\n if (this.shadow_attributes.width > 0) {\n attributes.style = this.getShadowStyle();\n }\n this.applyAttributes(path, attributes);\n this.add(path);\n return this;\n }\n // ## Text Methods:\n measureText(text) {\n return SVGContext.measureTextCache.lookup(text, this.svg, this.attributes);\n }\n fillText(text, x, y) {\n if (!text || text.length <= 0) {\n return this;\n }\n const attributes = Object.assign(Object.assign({}, this.attributes), { stroke: 'none', x,\n y });\n const txt = this.create('text');\n txt.textContent = text;\n this.applyAttributes(txt, attributes);\n this.add(txt);\n return this;\n }\n // TODO: State should be deep-copied.\n save() {\n this.state_stack.push({\n state: {\n 'font-family': this.state['font-family'],\n 'font-weight': this.state['font-weight'],\n 'font-style': this.state['font-style'],\n 'font-size': this.state['font-size'],\n scale: this.state.scale,\n },\n attributes: {\n 'font-family': this.attributes['font-family'],\n 'font-weight': this.attributes['font-weight'],\n 'font-style': this.attributes['font-style'],\n 'font-size': this.attributes['font-size'],\n fill: this.attributes.fill,\n stroke: this.attributes.stroke,\n 'stroke-width': this.attributes['stroke-width'],\n 'stroke-dasharray': this.attributes['stroke-dasharray'],\n },\n shadow_attributes: {\n width: this.shadow_attributes.width,\n color: this.shadow_attributes.color,\n },\n lineWidth: this.lineWidth,\n });\n return this;\n }\n // TODO: State should be deep-restored.\n restore() {\n const savedState = this.state_stack.pop();\n if (savedState) {\n const state = savedState;\n this.state['font-family'] = state.state['font-family'];\n this.state['font-weight'] = state.state['font-weight'];\n this.state['font-style'] = state.state['font-style'];\n this.state['font-size'] = state.state['font-size'];\n this.state.scale = state.state.scale;\n this.attributes['font-family'] = state.attributes['font-family'];\n this.attributes['font-weight'] = state.attributes['font-weight'];\n this.attributes['font-style'] = state.attributes['font-style'];\n this.attributes['font-size'] = state.attributes['font-size'];\n this.attributes.fill = state.attributes.fill;\n this.attributes.stroke = state.attributes.stroke;\n this.attributes['stroke-width'] = state.attributes['stroke-width'];\n this.attributes['stroke-dasharray'] = state.attributes['stroke-dasharray'];\n this.shadow_attributes.width = state.shadow_attributes.width;\n this.shadow_attributes.color = state.shadow_attributes.color;\n this.lineWidth = state.lineWidth;\n }\n return this;\n }\n set fillStyle(style) {\n this.setFillStyle(style);\n }\n get fillStyle() {\n return this.attributes.fill;\n }\n set strokeStyle(style) {\n this.setStrokeStyle(style);\n }\n get strokeStyle() {\n return this.attributes.stroke;\n }\n /**\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900). It is inserted\n * into the font-weight attribute (e.g., font-weight=\"bold\")\n * @param style is a string (e.g., 'italic', 'normal') that is inserted into the\n * font-style attribute (e.g., font-style=\"italic\")\n */\n setFont(f, size, weight, style) {\n const fontInfo = Font.validate(f, size, weight, style);\n this.fontCSSString = Font.toCSSString(fontInfo);\n const fontAttributes = {\n 'font-family': fontInfo.family,\n 'font-size': fontInfo.size,\n 'font-weight': fontInfo.weight,\n 'font-style': fontInfo.style,\n };\n this.attributes = Object.assign(Object.assign({}, this.attributes), fontAttributes);\n this.state = Object.assign(Object.assign({}, this.state), fontAttributes);\n return this;\n }\n /** Return a string of the form `'italic bold 15pt Arial'` */\n getFont() {\n return this.fontCSSString;\n }\n}\nSVGContext.measureTextCache = new MeasureTextCache();\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { Note } from './note';\nimport { Stave } from './stave';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n/**\n * System implements a musical system, which is a collection of staves,\n * each which can have one or more voices. All voices across all staves in\n * the system are formatted together.\n */\nexport class System extends Element {\n constructor(params = {}) {\n super();\n this.setOptions(params);\n this.parts = [];\n }\n static get CATEGORY() {\n return Category.System;\n }\n /** Set formatting options. */\n setOptions(options = {}) {\n if (!options.factory) {\n throw new RuntimeError('NoFactory', 'System.setOptions(options) requires a factory.');\n }\n this.factory = options.factory;\n this.options = Object.assign(Object.assign({ factory: this.factory, x: 10, y: 10, width: 500, spaceBetweenStaves: 12, autoWidth: false, noJustification: false, debugFormatter: false, formatIterations: 0, noPadding: false }, options), { details: Object.assign({ alpha: 0.5 }, options.details), formatOptions: Object.assign({}, options.formatOptions) });\n if (this.options.noJustification === false && typeof options.width === 'undefined') {\n this.options.autoWidth = true;\n }\n }\n /** Set associated context. */\n setContext(context) {\n super.setContext(context);\n this.factory.setContext(context);\n return this;\n }\n /**\n * Add connector between staves.\n * @param type see {@link StaveConnector.typeString}\n */\n addConnector(type = 'double') {\n this.connector = this.factory.StaveConnector({\n top_stave: this.parts[0].stave,\n bottom_stave: this.parts[this.parts.length - 1].stave,\n type,\n });\n return this.connector;\n }\n /**\n * Add a stave to the system.\n *\n * Example (one voice):\n *\n * `system.addStave({voices: [score.voice(score.notes('C#5/q, B4, A4, G#4'))]});`\n *\n * Example (two voices):\n *\n * `system.addStave({voices: [`\n * `score.voice(score.notes('C#5/q, B4, A4, G#4', {stem: 'up'})),`\n * `score.voice(score.notes('C#4/h, C#4', {stem: 'down'}))`\n * `]});`\n */\n addStave(params) {\n var _a;\n const staveOptions = Object.assign({ left_bar: false }, params.options);\n const stave = (_a = params.stave) !== null && _a !== void 0 ? _a : this.factory.Stave({ x: this.options.x, y: this.options.y, width: this.options.width, options: staveOptions });\n const p = Object.assign(Object.assign({ stave, \n /* voices: [], */\n spaceAbove: 0, spaceBelow: 0, debugNoteMetrics: false, noJustification: false }, params), { options: staveOptions });\n const ctx = this.getContext();\n p.voices.forEach((voice) => voice\n .setContext(ctx)\n .setStave(stave)\n .getTickables()\n .forEach((tickable) => tickable.setStave(stave)));\n this.parts.push(p);\n return stave;\n }\n /** Format the system. */\n format() {\n const options_details = this.options.details;\n let justifyWidth = 0;\n const formatter = new Formatter(options_details);\n this.formatter = formatter;\n let y = this.options.y;\n let startX = 0;\n let allVoices = [];\n let allStaves = [];\n const debugNoteMetricsYs = [];\n // Join the voices for each stave.\n this.parts.forEach((part) => {\n y = y + part.stave.space(part.spaceAbove);\n part.stave.setY(y);\n formatter.joinVoices(part.voices);\n y = y + part.stave.space(part.spaceBelow);\n y = y + part.stave.space(this.options.spaceBetweenStaves);\n if (part.debugNoteMetrics) {\n debugNoteMetricsYs.push({ y, voice: part.voices[0] });\n y += 15;\n }\n allVoices = allVoices.concat(part.voices);\n allStaves = allStaves.concat(part.stave);\n startX = Math.max(startX, part.stave.getNoteStartX());\n });\n // Update the start position of all staves.\n this.parts.forEach((part) => part.stave.setNoteStartX(startX));\n if (this.options.autoWidth) {\n justifyWidth = formatter.preCalculateMinTotalWidth(allVoices);\n this.parts.forEach((part) => {\n part.stave.setWidth(justifyWidth + Stave.rightPadding + (startX - this.options.x));\n });\n }\n else {\n justifyWidth = this.options.noPadding\n ? this.options.width - (startX - this.options.x)\n : this.options.width - (startX - this.options.x) - Stave.defaultPadding;\n }\n formatter.format(allVoices, this.options.noJustification ? 0 : justifyWidth, this.options.formatOptions);\n formatter.postFormat();\n for (let i = 0; i < this.options.formatIterations; i++) {\n formatter.tune(options_details);\n }\n this.startX = startX;\n this.debugNoteMetricsYs = debugNoteMetricsYs;\n this.lastY = y;\n this.boundingBox = new BoundingBox(this.options.x, this.options.y, this.options.width, this.lastY - this.options.y);\n Stave.formatBegModifiers(allStaves);\n }\n /** Render the system. */\n draw() {\n // Render debugging information, if requested.\n const ctx = this.checkContext();\n if (!this.formatter || !this.startX || !this.lastY || !this.debugNoteMetricsYs) {\n throw new RuntimeError('NoFormatter', 'format() must be called before draw()');\n }\n this.setRendered();\n if (this.options.debugFormatter) {\n Formatter.plotDebugging(ctx, this.formatter, this.startX, this.options.y, this.lastY);\n }\n this.debugNoteMetricsYs.forEach((d) => {\n d.voice.getTickables().forEach((tickable) => Note.plotMetrics(ctx, tickable, d.y));\n });\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Fraction } from './fraction';\nimport { Glyph } from './glyph';\nimport { RuntimeError } from './util';\nconst RESOLUTION = 16384;\n/**\n * Map duration numbers to 'ticks', the unit of duration used throughout VexFlow.\n * For example, a quarter note is 4, so it maps to RESOLUTION / 4 = 4096 ticks.\n */\nconst durations = {\n '1/2': RESOLUTION * 2,\n 1: RESOLUTION / 1,\n 2: RESOLUTION / 2,\n 4: RESOLUTION / 4,\n 8: RESOLUTION / 8,\n 16: RESOLUTION / 16,\n 32: RESOLUTION / 32,\n 64: RESOLUTION / 64,\n 128: RESOLUTION / 128,\n 256: RESOLUTION / 256,\n};\nconst durationAliases = {\n w: '1',\n h: '2',\n q: '4',\n // This is the default duration used to render bars (BarNote). Bars no longer\n // consume ticks, so this should be a no-op.\n // TODO(0xfe): This needs to be cleaned up.\n b: '256',\n};\nconst keySignatures = {\n C: { num: 0 },\n Am: { num: 0 },\n F: { acc: 'b', num: 1 },\n Dm: { acc: 'b', num: 1 },\n Bb: { acc: 'b', num: 2 },\n Gm: { acc: 'b', num: 2 },\n Eb: { acc: 'b', num: 3 },\n Cm: { acc: 'b', num: 3 },\n Ab: { acc: 'b', num: 4 },\n Fm: { acc: 'b', num: 4 },\n Db: { acc: 'b', num: 5 },\n Bbm: { acc: 'b', num: 5 },\n Gb: { acc: 'b', num: 6 },\n Ebm: { acc: 'b', num: 6 },\n Cb: { acc: 'b', num: 7 },\n Abm: { acc: 'b', num: 7 },\n G: { acc: '#', num: 1 },\n Em: { acc: '#', num: 1 },\n D: { acc: '#', num: 2 },\n Bm: { acc: '#', num: 2 },\n A: { acc: '#', num: 3 },\n 'F#m': { acc: '#', num: 3 },\n E: { acc: '#', num: 4 },\n 'C#m': { acc: '#', num: 4 },\n B: { acc: '#', num: 5 },\n 'G#m': { acc: '#', num: 5 },\n 'F#': { acc: '#', num: 6 },\n 'D#m': { acc: '#', num: 6 },\n 'C#': { acc: '#', num: 7 },\n 'A#m': { acc: '#', num: 7 },\n};\nconst clefs = {\n treble: { line_shift: 0 },\n bass: { line_shift: 6 },\n tenor: { line_shift: 4 },\n alto: { line_shift: 3 },\n soprano: { line_shift: 1 },\n percussion: { line_shift: 0 },\n 'mezzo-soprano': { line_shift: 2 },\n 'baritone-c': { line_shift: 5 },\n 'baritone-f': { line_shift: 5 },\n subbass: { line_shift: 7 },\n french: { line_shift: -1 },\n};\nconst notesInfo = {\n C: { index: 0, int_val: 0 },\n CN: { index: 0, int_val: 0, accidental: 'n' },\n 'C#': { index: 0, int_val: 1, accidental: '#' },\n 'C##': { index: 0, int_val: 2, accidental: '##' },\n CB: { index: 0, int_val: 11, accidental: 'b' },\n CBB: { index: 0, int_val: 10, accidental: 'bb' },\n D: { index: 1, int_val: 2 },\n DN: { index: 1, int_val: 2, accidental: 'n' },\n 'D#': { index: 1, int_val: 3, accidental: '#' },\n 'D##': { index: 1, int_val: 4, accidental: '##' },\n DB: { index: 1, int_val: 1, accidental: 'b' },\n DBB: { index: 1, int_val: 0, accidental: 'bb' },\n E: { index: 2, int_val: 4 },\n EN: { index: 2, int_val: 4, accidental: 'n' },\n 'E#': { index: 2, int_val: 5, accidental: '#' },\n 'E##': { index: 2, int_val: 6, accidental: '##' },\n EB: { index: 2, int_val: 3, accidental: 'b' },\n EBB: { index: 2, int_val: 2, accidental: 'bb' },\n F: { index: 3, int_val: 5 },\n FN: { index: 3, int_val: 5, accidental: 'n' },\n 'F#': { index: 3, int_val: 6, accidental: '#' },\n 'F##': { index: 3, int_val: 7, accidental: '##' },\n FB: { index: 3, int_val: 4, accidental: 'b' },\n FBB: { index: 3, int_val: 3, accidental: 'bb' },\n G: { index: 4, int_val: 7 },\n GN: { index: 4, int_val: 7, accidental: 'n' },\n 'G#': { index: 4, int_val: 8, accidental: '#' },\n 'G##': { index: 4, int_val: 9, accidental: '##' },\n GB: { index: 4, int_val: 6, accidental: 'b' },\n GBB: { index: 4, int_val: 5, accidental: 'bb' },\n A: { index: 5, int_val: 9 },\n AN: { index: 5, int_val: 9, accidental: 'n' },\n 'A#': { index: 5, int_val: 10, accidental: '#' },\n 'A##': { index: 5, int_val: 11, accidental: '##' },\n AB: { index: 5, int_val: 8, accidental: 'b' },\n ABB: { index: 5, int_val: 7, accidental: 'bb' },\n B: { index: 6, int_val: 11 },\n BN: { index: 6, int_val: 11, accidental: 'n' },\n 'B#': { index: 6, int_val: 12, accidental: '#' },\n 'B##': { index: 6, int_val: 13, accidental: '##' },\n BB: { index: 6, int_val: 10, accidental: 'b' },\n BBB: { index: 6, int_val: 9, accidental: 'bb' },\n R: { index: 6, rest: true },\n X: {\n index: 6,\n accidental: '',\n octave: 4,\n code: 'noteheadXBlack',\n shift_right: 5.5,\n },\n};\nconst validNoteTypes = {\n n: { name: 'note' },\n r: { name: 'rest' },\n h: { name: 'harmonic' },\n m: { name: 'muted' },\n s: { name: 'slash' },\n g: { name: 'ghost' },\n d: { name: 'diamond' },\n x: { name: 'x' },\n ci: { name: 'circled' },\n cx: { name: 'circle x' },\n sf: { name: 'slashed' },\n sb: { name: 'slashed backward' },\n sq: { name: 'square' },\n tu: { name: 'triangle up' },\n td: { name: 'triangle down' },\n};\nconst accidentals = {\n '#': { code: 'accidentalSharp', parenRightPaddingAdjustment: -1 },\n '##': { code: 'accidentalDoubleSharp', parenRightPaddingAdjustment: -1 },\n b: { code: 'accidentalFlat', parenRightPaddingAdjustment: -2 },\n bb: { code: 'accidentalDoubleFlat', parenRightPaddingAdjustment: -2 },\n n: { code: 'accidentalNatural', parenRightPaddingAdjustment: -1 },\n '{': { code: 'accidentalParensLeft', parenRightPaddingAdjustment: -1 },\n '}': { code: 'accidentalParensRight', parenRightPaddingAdjustment: -1 },\n db: { code: 'accidentalThreeQuarterTonesFlatZimmermann', parenRightPaddingAdjustment: -1 },\n d: { code: 'accidentalQuarterToneFlatStein', parenRightPaddingAdjustment: 0 },\n '++': { code: 'accidentalThreeQuarterTonesSharpStein', parenRightPaddingAdjustment: -1 },\n '+': { code: 'accidentalQuarterToneSharpStein', parenRightPaddingAdjustment: -1 },\n '+-': { code: 'accidentalKucukMucennebSharp', parenRightPaddingAdjustment: -1 },\n bs: { code: 'accidentalBakiyeFlat', parenRightPaddingAdjustment: -1 },\n bss: { code: 'accidentalBuyukMucennebFlat', parenRightPaddingAdjustment: -1 },\n o: { code: 'accidentalSori', parenRightPaddingAdjustment: -1 },\n k: { code: 'accidentalKoron', parenRightPaddingAdjustment: -1 },\n bbs: { code: 'vexAccidentalMicrotonal1', parenRightPaddingAdjustment: -1 },\n '++-': { code: 'vexAccidentalMicrotonal2', parenRightPaddingAdjustment: -1 },\n ashs: { code: 'vexAccidentalMicrotonal3', parenRightPaddingAdjustment: -1 },\n afhf: { code: 'vexAccidentalMicrotonal4', parenRightPaddingAdjustment: -1 },\n accSagittal5v7KleismaUp: { code: 'accSagittal5v7KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v7KleismaDown: { code: 'accSagittal5v7KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5CommaUp: { code: 'accSagittal5CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5CommaDown: { code: 'accSagittal5CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7CommaUp: { code: 'accSagittal7CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7CommaDown: { code: 'accSagittal7CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal25SmallDiesisUp: { code: 'accSagittal25SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal25SmallDiesisDown: { code: 'accSagittal25SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal35MediumDiesisUp: { code: 'accSagittal35MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal35MediumDiesisDown: { code: 'accSagittal35MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11MediumDiesisUp: { code: 'accSagittal11MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11MediumDiesisDown: { code: 'accSagittal11MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11LargeDiesisUp: { code: 'accSagittal11LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11LargeDiesisDown: { code: 'accSagittal11LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal35LargeDiesisUp: { code: 'accSagittal35LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal35LargeDiesisDown: { code: 'accSagittal35LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp25SDown: { code: 'accSagittalSharp25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat25SUp: { code: 'accSagittalFlat25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7CDown: { code: 'accSagittalSharp7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7CUp: { code: 'accSagittalFlat7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5CDown: { code: 'accSagittalSharp5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5CUp: { code: 'accSagittalFlat5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v7kDown: { code: 'accSagittalSharp5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v7kUp: { code: 'accSagittalFlat5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp: { code: 'accSagittalSharp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat: { code: 'accSagittalFlat', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v7kUp: { code: 'accSagittalSharp5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v7kDown: { code: 'accSagittalFlat5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5CUp: { code: 'accSagittalSharp5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5CDown: { code: 'accSagittalFlat5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7CUp: { code: 'accSagittalSharp7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7CDown: { code: 'accSagittalFlat7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp25SUp: { code: 'accSagittalSharp25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat25SDown: { code: 'accSagittalFlat25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp35MUp: { code: 'accSagittalSharp35MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat35MDown: { code: 'accSagittalFlat35MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11MUp: { code: 'accSagittalSharp11MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11MDown: { code: 'accSagittalFlat11MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11LUp: { code: 'accSagittalSharp11LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11LDown: { code: 'accSagittalFlat11LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp35LUp: { code: 'accSagittalSharp35LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat35LDown: { code: 'accSagittalFlat35LDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp25SDown: { code: 'accSagittalDoubleSharp25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat25SUp: { code: 'accSagittalDoubleFlat25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7CDown: { code: 'accSagittalDoubleSharp7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7CUp: { code: 'accSagittalDoubleFlat7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5CDown: { code: 'accSagittalDoubleSharp5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5CUp: { code: 'accSagittalDoubleFlat5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v7kDown: { code: 'accSagittalDoubleSharp5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v7kUp: { code: 'accSagittalDoubleFlat5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp: { code: 'accSagittalDoubleSharp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat: { code: 'accSagittalDoubleFlat', parenRightPaddingAdjustment: -1 },\n accSagittal7v11KleismaUp: { code: 'accSagittal7v11KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v11KleismaDown: { code: 'accSagittal7v11KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal17CommaUp: { code: 'accSagittal17CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal17CommaDown: { code: 'accSagittal17CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal55CommaUp: { code: 'accSagittal55CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal55CommaDown: { code: 'accSagittal55CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7v11CommaUp: { code: 'accSagittal7v11CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v11CommaDown: { code: 'accSagittal7v11CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v11SmallDiesisUp: { code: 'accSagittal5v11SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v11SmallDiesisDown: { code: 'accSagittal5v11SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v11SDown: { code: 'accSagittalSharp5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v11SUp: { code: 'accSagittalFlat5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11CDown: { code: 'accSagittalSharp7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11CUp: { code: 'accSagittalFlat7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp55CDown: { code: 'accSagittalSharp55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat55CUp: { code: 'accSagittalFlat55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17CDown: { code: 'accSagittalSharp17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17CUp: { code: 'accSagittalFlat17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11kDown: { code: 'accSagittalSharp7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11kUp: { code: 'accSagittalFlat7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11kUp: { code: 'accSagittalSharp7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11kDown: { code: 'accSagittalFlat7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17CUp: { code: 'accSagittalSharp17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17CDown: { code: 'accSagittalFlat17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp55CUp: { code: 'accSagittalSharp55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat55CDown: { code: 'accSagittalFlat55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11CUp: { code: 'accSagittalSharp7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11CDown: { code: 'accSagittalFlat7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v11SUp: { code: 'accSagittalSharp5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v11SDown: { code: 'accSagittalFlat5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v11SDown: { code: 'accSagittalDoubleSharp5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v11SUp: { code: 'accSagittalDoubleFlat5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v11CDown: { code: 'accSagittalDoubleSharp7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v11CUp: { code: 'accSagittalDoubleFlat7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp55CDown: { code: 'accSagittalDoubleSharp55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat55CUp: { code: 'accSagittalDoubleFlat55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp17CDown: { code: 'accSagittalDoubleSharp17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat17CUp: { code: 'accSagittalDoubleFlat17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v11kDown: { code: 'accSagittalDoubleSharp7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v11kUp: { code: 'accSagittalDoubleFlat7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittal23CommaUp: { code: 'accSagittal23CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal23CommaDown: { code: 'accSagittal23CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v19CommaUp: { code: 'accSagittal5v19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v19CommaDown: { code: 'accSagittal5v19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v23SmallDiesisUp: { code: 'accSagittal5v23SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v23SmallDiesisDown: { code: 'accSagittal5v23SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v23SDown: { code: 'accSagittalSharp5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v23SUp: { code: 'accSagittalFlat5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v19CDown: { code: 'accSagittalSharp5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v19CUp: { code: 'accSagittalFlat5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23CDown: { code: 'accSagittalSharp23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23CUp: { code: 'accSagittalFlat23CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23CUp: { code: 'accSagittalSharp23CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23CDown: { code: 'accSagittalFlat23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v19CUp: { code: 'accSagittalSharp5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v19CDown: { code: 'accSagittalFlat5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v23SUp: { code: 'accSagittalSharp5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v23SDown: { code: 'accSagittalFlat5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v23SDown: { code: 'accSagittalDoubleSharp5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v23SUp: { code: 'accSagittalDoubleFlat5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v19CDown: { code: 'accSagittalDoubleSharp5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v19CUp: { code: 'accSagittalDoubleFlat5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp23CDown: { code: 'accSagittalDoubleSharp23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat23CUp: { code: 'accSagittalDoubleFlat23CUp', parenRightPaddingAdjustment: -1 },\n accSagittal19SchismaUp: { code: 'accSagittal19SchismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal19SchismaDown: { code: 'accSagittal19SchismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal17KleismaUp: { code: 'accSagittal17KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal17KleismaDown: { code: 'accSagittal17KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal143CommaUp: { code: 'accSagittal143CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal143CommaDown: { code: 'accSagittal143CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v49CommaUp: { code: 'accSagittal11v49CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v49CommaDown: { code: 'accSagittal11v49CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal19CommaUp: { code: 'accSagittal19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal19CommaDown: { code: 'accSagittal19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7v19CommaUp: { code: 'accSagittal7v19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v19CommaDown: { code: 'accSagittal7v19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal49SmallDiesisUp: { code: 'accSagittal49SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49SmallDiesisDown: { code: 'accSagittal49SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal23SmallDiesisUp: { code: 'accSagittal23SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal23SmallDiesisDown: { code: 'accSagittal23SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v13MediumDiesisUp: { code: 'accSagittal5v13MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v13MediumDiesisDown: { code: 'accSagittal5v13MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v19MediumDiesisUp: { code: 'accSagittal11v19MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v19MediumDiesisDown: { code: 'accSagittal11v19MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal49MediumDiesisUp: { code: 'accSagittal49MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49MediumDiesisDown: { code: 'accSagittal49MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v49MediumDiesisUp: { code: 'accSagittal5v49MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v49MediumDiesisDown: { code: 'accSagittal5v49MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal49LargeDiesisUp: { code: 'accSagittal49LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49LargeDiesisDown: { code: 'accSagittal49LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v19LargeDiesisUp: { code: 'accSagittal11v19LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v19LargeDiesisDown: { code: 'accSagittal11v19LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v13LargeDiesisUp: { code: 'accSagittal5v13LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v13LargeDiesisDown: { code: 'accSagittal5v13LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23SDown: { code: 'accSagittalSharp23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23SUp: { code: 'accSagittalFlat23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49SDown: { code: 'accSagittalSharp49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49SUp: { code: 'accSagittalFlat49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v19CDown: { code: 'accSagittalSharp7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v19CUp: { code: 'accSagittalFlat7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19CDown: { code: 'accSagittalSharp19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19CUp: { code: 'accSagittalFlat19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v49CDown: { code: 'accSagittalSharp11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v49CUp: { code: 'accSagittalFlat11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp143CDown: { code: 'accSagittalSharp143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat143CUp: { code: 'accSagittalFlat143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17kDown: { code: 'accSagittalSharp17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17kUp: { code: 'accSagittalFlat17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19sDown: { code: 'accSagittalSharp19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19sUp: { code: 'accSagittalFlat19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19sUp: { code: 'accSagittalSharp19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19sDown: { code: 'accSagittalFlat19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17kUp: { code: 'accSagittalSharp17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17kDown: { code: 'accSagittalFlat17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp143CUp: { code: 'accSagittalSharp143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat143CDown: { code: 'accSagittalFlat143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v49CUp: { code: 'accSagittalSharp11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v49CDown: { code: 'accSagittalFlat11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19CUp: { code: 'accSagittalSharp19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19CDown: { code: 'accSagittalFlat19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v19CUp: { code: 'accSagittalSharp7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v19CDown: { code: 'accSagittalFlat7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49SUp: { code: 'accSagittalSharp49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49SDown: { code: 'accSagittalFlat49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23SUp: { code: 'accSagittalSharp23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23SDown: { code: 'accSagittalFlat23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v13MUp: { code: 'accSagittalSharp5v13MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v13MDown: { code: 'accSagittalFlat5v13MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v19MUp: { code: 'accSagittalSharp11v19MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v19MDown: { code: 'accSagittalFlat11v19MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49MUp: { code: 'accSagittalSharp49MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49MDown: { code: 'accSagittalFlat49MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v49MUp: { code: 'accSagittalSharp5v49MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v49MDown: { code: 'accSagittalFlat5v49MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49LUp: { code: 'accSagittalSharp49LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49LDown: { code: 'accSagittalFlat49LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v19LUp: { code: 'accSagittalSharp11v19LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v19LDown: { code: 'accSagittalFlat11v19LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v13LUp: { code: 'accSagittalSharp5v13LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v13LDown: { code: 'accSagittalFlat5v13LDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp23SDown: { code: 'accSagittalDoubleSharp23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat23SUp: { code: 'accSagittalDoubleFlat23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp49SDown: { code: 'accSagittalDoubleSharp49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat49SUp: { code: 'accSagittalDoubleFlat49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v19CDown: { code: 'accSagittalDoubleSharp7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v19CUp: { code: 'accSagittalDoubleFlat7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp19CDown: { code: 'accSagittalDoubleSharp19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat19CUp: { code: 'accSagittalDoubleFlat19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp11v49CDown: { code: 'accSagittalDoubleSharp11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat11v49CUp: { code: 'accSagittalDoubleFlat11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp143CDown: { code: 'accSagittalDoubleSharp143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat143CUp: { code: 'accSagittalDoubleFlat143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp17kDown: { code: 'accSagittalDoubleSharp17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat17kUp: { code: 'accSagittalDoubleFlat17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp19sDown: { code: 'accSagittalDoubleSharp19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat19sUp: { code: 'accSagittalDoubleFlat19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalShaftUp: { code: 'accSagittalShaftUp', parenRightPaddingAdjustment: -1 },\n accSagittalShaftDown: { code: 'accSagittalShaftDown', parenRightPaddingAdjustment: -1 },\n accSagittalAcute: { code: 'accSagittalAcute', parenRightPaddingAdjustment: -1 },\n accSagittalGrave: { code: 'accSagittalGrave', parenRightPaddingAdjustment: -1 },\n accSagittal1MinaUp: { code: 'accSagittal1MinaUp', parenRightPaddingAdjustment: -1 },\n accSagittal1MinaDown: { code: 'accSagittal1MinaDown', parenRightPaddingAdjustment: -1 },\n accSagittal2MinasUp: { code: 'accSagittal2MinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal2MinasDown: { code: 'accSagittal2MinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal1TinaUp: { code: 'accSagittal1TinaUp', parenRightPaddingAdjustment: -1 },\n accSagittal1TinaDown: { code: 'accSagittal1TinaDown', parenRightPaddingAdjustment: -1 },\n accSagittal2TinasUp: { code: 'accSagittal2TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal2TinasDown: { code: 'accSagittal2TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal3TinasUp: { code: 'accSagittal3TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal3TinasDown: { code: 'accSagittal3TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal4TinasUp: { code: 'accSagittal4TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal4TinasDown: { code: 'accSagittal4TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal5TinasUp: { code: 'accSagittal5TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal5TinasDown: { code: 'accSagittal5TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal6TinasUp: { code: 'accSagittal6TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal6TinasDown: { code: 'accSagittal6TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal7TinasUp: { code: 'accSagittal7TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal7TinasDown: { code: 'accSagittal7TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal8TinasUp: { code: 'accSagittal8TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal8TinasDown: { code: 'accSagittal8TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal9TinasUp: { code: 'accSagittal9TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal9TinasDown: { code: 'accSagittal9TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittalFractionalTinaUp: { code: 'accSagittalFractionalTinaUp', parenRightPaddingAdjustment: -1 },\n accSagittalFractionalTinaDown: { code: 'accSagittalFractionalTinaDown', parenRightPaddingAdjustment: -1 },\n accidentalNarrowReversedFlat: { code: 'accidentalNarrowReversedFlat', parenRightPaddingAdjustment: -1 },\n accidentalNarrowReversedFlatAndFlat: {\n code: 'accidentalNarrowReversedFlatAndFlat',\n parenRightPaddingAdjustment: -1,\n },\n accidentalWilsonPlus: { code: 'accidentalWilsonPlus', parenRightPaddingAdjustment: -1 },\n accidentalWilsonMinus: { code: 'accidentalWilsonMinus', parenRightPaddingAdjustment: -1 },\n};\n// Helps determine the layout of accidentals.\nconst accidentalColumns = {\n 1: {\n a: [1],\n b: [1],\n },\n 2: {\n a: [1, 2],\n },\n 3: {\n a: [1, 3, 2],\n b: [1, 2, 1],\n second_on_bottom: [1, 2, 3],\n },\n 4: {\n a: [1, 3, 4, 2],\n b: [1, 2, 3, 1],\n spaced_out_tetrachord: [1, 2, 1, 2],\n },\n 5: {\n a: [1, 3, 5, 4, 2],\n b: [1, 2, 4, 3, 1],\n spaced_out_pentachord: [1, 2, 3, 2, 1],\n very_spaced_out_pentachord: [1, 2, 1, 2, 1],\n },\n 6: {\n a: [1, 3, 5, 6, 4, 2],\n b: [1, 2, 4, 5, 3, 1],\n spaced_out_hexachord: [1, 3, 2, 1, 3, 2],\n very_spaced_out_hexachord: [1, 2, 1, 2, 1, 2],\n },\n};\nconst articulations = {\n 'a.': { code: 'augmentationDot', between_lines: true },\n av: {\n aboveCode: 'articStaccatissimoAbove',\n belowCode: 'articStaccatissimoBelow',\n between_lines: true,\n },\n 'a>': {\n aboveCode: 'articAccentAbove',\n belowCode: 'articAccentBelow',\n between_lines: true,\n },\n 'a-': {\n aboveCode: 'articTenutoAbove',\n belowCode: 'articTenutoBelow',\n between_lines: true,\n },\n 'a^': {\n aboveCode: 'articMarcatoAbove',\n belowCode: 'articMarcatoBelow',\n between_lines: false,\n },\n 'a+': { code: 'pluckedLeftHandPizzicato', between_lines: false },\n ao: {\n aboveCode: 'pluckedSnapPizzicatoAbove',\n belowCode: 'pluckedSnapPizzicatoBelow',\n between_lines: false,\n },\n ah: { code: 'stringsHarmonic', between_lines: false },\n 'a@': { aboveCode: 'fermataAbove', belowCode: 'fermataBelow', between_lines: false },\n 'a@a': { code: 'fermataAbove', between_lines: false },\n 'a@u': { code: 'fermataBelow', between_lines: false },\n 'a@s': { aboveCode: 'fermataShortAbove', belowCode: 'fermataShortBelow', between_lines: false },\n 'a@as': { code: 'fermataShortAbove', between_lines: false },\n 'a@us': { code: 'fermataShortBelow', between_lines: false },\n 'a@l': { aboveCode: 'fermataLongAbove', belowCode: 'fermataLongBelow', between_lines: false },\n 'a@al': { code: 'fermataLongAbove', between_lines: false },\n 'a@ul': { code: 'fermataLongBelow', between_lines: false },\n 'a@vl': { aboveCode: 'fermataVeryLongAbove', belowCode: 'fermataVeryLongBelow', between_lines: false },\n 'a@avl': { code: 'fermataVeryLongAbove', between_lines: false },\n 'a@uvl': { code: 'fermataVeryLongBelow', between_lines: false },\n 'a|': { code: 'stringsUpBow', between_lines: false },\n am: { code: 'stringsDownBow', between_lines: false },\n 'a,': { code: 'pictChokeCymbal', between_lines: false }, // Choked\n};\nconst ornaments = {\n mordent: { code: 'ornamentShortTrill' },\n mordent_inverted: { code: 'ornamentMordent' },\n turn: { code: 'ornamentTurn' },\n turn_inverted: { code: 'ornamentTurnSlash' },\n tr: { code: 'ornamentTrill' },\n upprall: { code: 'ornamentPrecompSlideTrillDAnglebert' },\n downprall: { code: 'ornamentPrecompDoubleCadenceUpperPrefix' },\n prallup: { code: 'ornamentPrecompTrillSuffixDandrieu' },\n pralldown: { code: 'ornamentPrecompTrillLowerSuffix' },\n upmordent: { code: 'ornamentPrecompSlideTrillBach' },\n downmordent: { code: 'ornamentPrecompDoubleCadenceUpperPrefixTurn' },\n lineprall: { code: 'ornamentPrecompAppoggTrill' },\n prallprall: { code: 'ornamentTremblement' },\n scoop: { code: 'brassScoop' },\n doit: { code: 'brassDoitMedium' },\n fall: { code: 'brassFallLipShort' },\n doitLong: { code: 'brassLiftMedium' },\n fallLong: { code: 'brassFallRoughMedium' },\n bend: { code: 'brassBend' },\n plungerClosed: { code: 'brassMuteClosed' },\n plungerOpen: { code: 'brassMuteOpen' },\n flip: { code: 'brassFlip' },\n jazzTurn: { code: 'brassJazzTurn' },\n smear: { code: 'brassSmear' },\n};\nexport class Tables {\n /**\n * @returns the `Font` object at the head of the music font stack.\n */\n static currentMusicFont() {\n if (Tables.MUSIC_FONT_STACK.length === 0) {\n throw new RuntimeError('NoFonts', 'The font stack is empty. See: await Flow.fetchMusicFont(...); Flow.setMusicFont(...).');\n }\n else {\n return Tables.MUSIC_FONT_STACK[0];\n }\n }\n static clefProperties(clef) {\n if (!clef || !(clef in clefs))\n throw new RuntimeError('BadArgument', 'Invalid clef: ' + clef);\n return clefs[clef];\n }\n /**\n * @param keyOctaveGlyph a string in the format \"key/octave\" (e.g., \"c/5\") or \"key/octave/custom-note-head-code\" (e.g., \"g/5/t3\").\n * @param clef\n * @param params a struct with one option, `octave_shift` for clef ottavation (0 = default; 1 = 8va; -1 = 8vb, etc.).\n * @returns properties for the specified note.\n */\n // eslint-disable-next-line\n static keyProperties(keyOctaveGlyph, clef = 'treble', params) {\n let options = { octave_shift: 0, duration: '4' };\n if (typeof params === 'object') {\n options = Object.assign(Object.assign({}, options), params);\n }\n const duration = Tables.sanitizeDuration(options.duration);\n const pieces = keyOctaveGlyph.split('/');\n if (pieces.length < 2) {\n throw new RuntimeError('BadArguments', `First argument must be note/octave or note/octave/glyph-code: ${keyOctaveGlyph}`);\n }\n const key = pieces[0].toUpperCase();\n const value = notesInfo[key];\n if (!value)\n throw new RuntimeError('BadArguments', 'Invalid key name: ' + key);\n if (value.octave)\n pieces[1] = value.octave.toString();\n let octave = parseInt(pieces[1], 10);\n // Octave_shift is the shift to compensate for clef 8va/8vb.\n octave += -1 * options.octave_shift;\n const baseIndex = octave * 7 - 4 * 7;\n let line = (baseIndex + value.index) / 2;\n line += Tables.clefProperties(clef).line_shift;\n let stroke = 0;\n if (line <= 0 && (line * 2) % 2 === 0)\n stroke = 1; // stroke up\n if (line >= 6 && (line * 2) % 2 === 0)\n stroke = -1; // stroke down\n // Integer value for note arithmetic.\n const int_value = typeof value.int_val !== 'undefined' ? octave * 12 + value.int_val : undefined;\n // If the user specified a glyph, overwrite the glyph code.\n const code = value.code;\n const shift_right = value.shift_right;\n let customNoteHeadProps = {};\n if (pieces.length > 2 && pieces[2]) {\n const glyphName = pieces[2].toUpperCase();\n customNoteHeadProps = { code: this.codeNoteHead(glyphName, duration) } || {};\n }\n return Object.assign({ key,\n octave,\n line,\n int_value, accidental: value.accidental, code,\n stroke,\n shift_right, displaced: false }, customNoteHeadProps);\n }\n static integerToNote(integer) {\n if (typeof integer === 'undefined' || integer < 0 || integer > 11) {\n throw new RuntimeError('BadArguments', `integerToNote() requires an integer in the range [0, 11]: ${integer}`);\n }\n const table = {\n 0: 'C',\n 1: 'C#',\n 2: 'D',\n 3: 'D#',\n 4: 'E',\n 5: 'F',\n 6: 'F#',\n 7: 'G',\n 8: 'G#',\n 9: 'A',\n 10: 'A#',\n 11: 'B',\n };\n const noteValue = table[integer];\n if (!noteValue) {\n throw new RuntimeError('BadArguments', `Unknown note value for integer: ${integer}`);\n }\n return noteValue;\n }\n static tabToGlyph(fret, scale = 1.0) {\n let glyph = undefined;\n let width = 0;\n let shift_y = 0;\n if (fret.toUpperCase() === 'X') {\n const glyphMetrics = new Glyph('accidentalDoubleSharp', Tables.TABLATURE_FONT_SCALE).getMetrics();\n glyph = 'accidentalDoubleSharp';\n if (glyphMetrics.width == undefined || glyphMetrics.height == undefined)\n throw new RuntimeError('InvalidMetrics', 'Width and height required');\n width = glyphMetrics.width;\n shift_y = -glyphMetrics.height / 2;\n }\n else {\n width = Tables.textWidth(fret);\n }\n return {\n text: fret,\n code: glyph,\n getWidth: () => width * scale,\n shift_y,\n };\n }\n // Used by annotation.ts and bend.ts. Clearly this implementation only works for the default font size.\n // TODO: The actual width depends on the font family, size, weight, style.\n static textWidth(text) {\n return 7 * text.toString().length;\n }\n static articulationCodes(artic) {\n return articulations[artic];\n }\n static accidentalCodes(acc) {\n return accidentals[acc];\n }\n static ornamentCodes(acc) {\n return ornaments[acc];\n }\n static keySignature(spec) {\n const keySpec = keySignatures[spec];\n if (!keySpec) {\n throw new RuntimeError('BadKeySignature', `Bad key signature spec: '${spec}'`);\n }\n if (!keySpec.acc) {\n return [];\n }\n const accidentalList = {\n b: [2, 0.5, 2.5, 1, 3, 1.5, 3.5],\n '#': [0, 1.5, -0.5, 1, 2.5, 0.5, 2],\n };\n const notes = accidentalList[keySpec.acc];\n const acc_list = [];\n for (let i = 0; i < keySpec.num; ++i) {\n const line = notes[i];\n acc_list.push({ type: keySpec.acc, line });\n }\n return acc_list;\n }\n static getKeySignatures() {\n return keySignatures;\n }\n static hasKeySignature(spec) {\n return spec in keySignatures;\n }\n /**\n * Convert duration aliases to the number based duration.\n * If the input isn't an alias, simply return the input.\n * @param duration\n * @returns Example: 'q' -> '4', '8' -> '8'\n */\n static sanitizeDuration(duration) {\n const durationNumber = durationAliases[duration];\n if (durationNumber !== undefined) {\n duration = durationNumber;\n }\n if (durations[duration] === undefined) {\n throw new RuntimeError('BadArguments', `The provided duration is not valid: ${duration}`);\n }\n return duration;\n }\n /** Convert the `duration` to a fraction. */\n static durationToFraction(duration) {\n return new Fraction().parse(Tables.sanitizeDuration(duration));\n }\n /** Convert the `duration` to a number. */\n static durationToNumber(duration) {\n return Tables.durationToFraction(duration).value();\n }\n /* Convert the `duration` to total ticks. */\n static durationToTicks(duration) {\n duration = Tables.sanitizeDuration(duration);\n const ticks = durations[duration];\n if (ticks === undefined) {\n throw new RuntimeError('InvalidDuration');\n }\n return ticks;\n }\n static codeNoteHead(type, duration) {\n let code = '';\n switch (type) {\n /* Diamond */\n case 'D0':\n code = 'noteheadDiamondWhole';\n break;\n case 'D1':\n code = 'noteheadDiamondHalf';\n break;\n case 'D2':\n code = 'noteheadDiamondBlack';\n break;\n case 'D3':\n code = 'noteheadDiamondBlack';\n break;\n /* Triangle */\n case 'T0':\n code = 'noteheadTriangleUpWhole';\n break;\n case 'T1':\n code = 'noteheadTriangleUpHalf';\n break;\n case 'T2':\n code = 'noteheadTriangleUpBlack';\n break;\n case 'T3':\n code = 'noteheadTriangleUpBlack';\n break;\n /* Cross */\n case 'X0':\n code = 'noteheadXWhole';\n break;\n case 'X1':\n code = 'noteheadXHalf';\n break;\n case 'X2':\n code = 'noteheadXBlack';\n break;\n case 'X3':\n code = 'noteheadCircleX';\n break;\n /* Square */\n case 'S1':\n code = 'noteheadSquareWhite';\n break;\n case 'S2':\n code = 'noteheadSquareBlack';\n break;\n /* Rectangle */\n case 'R1':\n code = 'vexNoteHeadRectWhite'; // no smufl code\n break;\n case 'R2':\n code = 'vexNoteHeadRectBlack'; // no smufl code\n break;\n case 'DO':\n code = 'noteheadTriangleUpBlack';\n break;\n case 'RE':\n code = 'noteheadMoonBlack';\n break;\n case 'MI':\n code = 'noteheadDiamondBlack';\n break;\n case 'FA':\n code = 'noteheadTriangleLeftBlack';\n break;\n case 'FAUP':\n code = 'noteheadTriangleRightBlack';\n break;\n case 'SO':\n code = 'noteheadBlack';\n break;\n case 'LA':\n code = 'noteheadSquareBlack';\n break;\n case 'TI':\n code = 'noteheadTriangleRoundDownBlack';\n break;\n case 'D':\n case 'H': // left for backwards compatibility\n switch (duration) {\n case '1/2':\n code = 'noteheadDiamondDoubleWhole';\n break;\n case '1':\n code = 'noteheadDiamondWhole';\n break;\n case '2':\n code = 'noteheadDiamondHalf';\n break;\n default:\n code = 'noteheadDiamondBlack';\n break;\n }\n break;\n case 'N':\n case 'G':\n switch (duration) {\n case '1/2':\n code = 'noteheadDoubleWhole';\n break;\n case '1':\n code = 'noteheadWhole';\n break;\n case '2':\n code = 'noteheadHalf';\n break;\n default:\n code = 'noteheadBlack';\n break;\n }\n break;\n case 'M': // left for backwards compatibility\n case 'X':\n switch (duration) {\n case '1/2':\n code = 'noteheadXDoubleWhole';\n break;\n case '1':\n code = 'noteheadXWhole';\n break;\n case '2':\n code = 'noteheadXHalf';\n break;\n default:\n code = 'noteheadXBlack';\n break;\n }\n break;\n case 'CX':\n switch (duration) {\n case '1/2':\n code = 'noteheadCircleXDoubleWhole';\n break;\n case '1':\n code = 'noteheadCircleXWhole';\n break;\n case '2':\n code = 'noteheadCircleXHalf';\n break;\n default:\n code = 'noteheadCircleX';\n break;\n }\n break;\n case 'CI':\n switch (duration) {\n case '1/2':\n code = 'noteheadCircledDoubleWhole';\n break;\n case '1':\n code = 'noteheadCircledWhole';\n break;\n case '2':\n code = 'noteheadCircledHalf';\n break;\n default:\n code = 'noteheadCircledBlack';\n break;\n }\n break;\n case 'SQ':\n switch (duration) {\n case '1/2':\n code = 'noteheadDoubleWholeSquare';\n break;\n case '1':\n code = 'noteheadSquareWhite';\n break;\n case '2':\n code = 'noteheadSquareWhite';\n break;\n default:\n code = 'noteheadSquareBlack';\n break;\n }\n break;\n case 'TU':\n switch (duration) {\n case '1/2':\n code = 'noteheadTriangleUpDoubleWhole';\n break;\n case '1':\n code = 'noteheadTriangleUpWhole';\n break;\n case '2':\n code = 'noteheadTriangleUpHalf';\n break;\n default:\n code = 'noteheadTriangleUpBlack';\n break;\n }\n break;\n case 'TD':\n switch (duration) {\n case '1/2':\n code = 'noteheadTriangleDownDoubleWhole';\n break;\n case '1':\n code = 'noteheadTriangleDownWhole';\n break;\n case '2':\n code = 'noteheadTriangleDownHalf';\n break;\n default:\n code = 'noteheadTriangleDownBlack';\n break;\n }\n break;\n case 'SF':\n switch (duration) {\n case '1/2':\n code = 'noteheadSlashedDoubleWhole1';\n break;\n case '1':\n code = 'noteheadSlashedWhole1';\n break;\n case '2':\n code = 'noteheadSlashedHalf1';\n break;\n default:\n code = 'noteheadSlashedBlack1';\n }\n break;\n case 'SB':\n switch (duration) {\n case '1/2':\n code = 'noteheadSlashedDoubleWhole2';\n break;\n case '1':\n code = 'noteheadSlashedWhole2';\n break;\n case '2':\n code = 'noteheadSlashedHalf2';\n break;\n default:\n code = 'noteheadSlashedBlack2';\n }\n break;\n }\n return code;\n }\n // Return a glyph given duration and type. The type can be a custom glyph code from customNoteHeads.\n // The default type is a regular note ('n').\n // eslint-disable-next-line\n static getGlyphProps(duration, type = 'n') {\n duration = Tables.sanitizeDuration(duration);\n // Lookup duration for default glyph head code\n const code = durationCodes[duration];\n if (code === undefined) {\n return undefined;\n }\n // Get glyph properties for 'type' from duration string (note, rest, harmonic, muted, slash)\n let glyphTypeProperties = code.type[type];\n // Try and get it from the custom list of note heads\n const codeNoteHead = Tables.codeNoteHead(type.toUpperCase(), duration);\n if (codeNoteHead != '')\n glyphTypeProperties = Object.assign(Object.assign({}, glyphTypeProperties), { code_head: codeNoteHead, code: codeNoteHead });\n const code_head = glyphTypeProperties.code_head;\n // The default implementation of getWidth() calls Glyph.getWidth(code_head, scale).\n // This can be overridden by an individual glyph type (see slash noteheads below: Tables.SLASH_NOTEHEAD_WIDTH).\n const getWidth = (scale = Tables.NOTATION_FONT_SCALE) => Glyph.getWidth(code_head, scale);\n // Merge duration props for 'duration' with the note head properties.\n return Object.assign(Object.assign(Object.assign({}, code.common), { getWidth: getWidth }), glyphTypeProperties);\n }\n}\nTables.SOFTMAX_FACTOR = 100;\nTables.STEM_WIDTH = 1.5;\nTables.STEM_HEIGHT = 35;\nTables.STAVE_LINE_THICKNESS = 1;\nTables.RENDER_PRECISION_PLACES = 3;\nTables.RESOLUTION = RESOLUTION;\n/**\n * Customize this by calling Flow.setMusicFont(...fontNames);\n */\nTables.MUSIC_FONT_STACK = [];\nTables.NOTATION_FONT_SCALE = 39;\nTables.TABLATURE_FONT_SCALE = 39;\nTables.SLASH_NOTEHEAD_WIDTH = 15;\nTables.STAVE_LINE_DISTANCE = 10;\n// HACK:\n// Since text origins are positioned at the baseline, we must\n// compensate for the ascender of the text. Of course, 1 staff space is\n// a very poor approximation.\n//\n// This will be deprecated in the future. This is a temporary solution until\n// we have more robust text metrics.\nTables.TEXT_HEIGHT_OFFSET_HACK = 1;\nTables.accidentalMap = accidentals;\nTables.accidentalColumnsTable = accidentalColumns;\nTables.unicode = {\n // ♯ accidental sharp\n sharp: String.fromCharCode(0x266f),\n // ♭ accidental flat\n flat: String.fromCharCode(0x266d),\n // ♮ accidental natural\n natural: String.fromCharCode(0x266e),\n // △ major seventh\n triangle: String.fromCharCode(0x25b3),\n // ø half-diminished\n 'o-with-slash': String.fromCharCode(0x00f8),\n // ° diminished\n degrees: String.fromCharCode(0x00b0),\n // ○ diminished\n circle: String.fromCharCode(0x25cb),\n};\n/* The list of valid note types. Used by note.ts during parseNoteStruct(). */\nTables.validTypes = validNoteTypes;\n// Default time signature.\nTables.TIME4_4 = {\n num_beats: 4,\n beat_value: 4,\n resolution: RESOLUTION,\n};\n// 1/2, 1, 2, 4, 8, 16, 32, 64, 128\n// NOTE: There is no 256 here! However, there are other mentions of 256 in this file.\n// For example, in durations has a 256 key, and sanitizeDuration() can return 256.\n// The sanitizeDuration() bit may need to be removed by 0xfe.\n// eslint-disable-next-line\nconst durationCodes = {\n '1/2': {\n common: {\n stem: false,\n stem_offset: 0,\n flag: false,\n stem_up_extension: -Tables.STEM_HEIGHT,\n stem_down_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_up_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_down_extension: -Tables.STEM_HEIGHT,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Breve rest\n code_head: 'restDoubleWhole',\n rest: true,\n position: 'B/5',\n dot_shiftY: 0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restDoubleWhole', scale);\n // },\n },\n s: {\n // Breve note slash -\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 1: {\n common: {\n stem: false,\n stem_offset: 0,\n flag: false,\n stem_up_extension: -Tables.STEM_HEIGHT,\n stem_down_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_up_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_down_extension: -Tables.STEM_HEIGHT,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Whole rest\n code_head: 'restWhole',\n leger_code_head: 'restWholeLegerLine',\n rest: true,\n position: 'D/5',\n dot_shiftY: 0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restWhole', scale);\n // },\n },\n s: {\n // Whole note slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 2: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: false,\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Half rest\n code_head: 'restHalf',\n leger_code_head: 'restHalfLegerLine',\n stem: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restHalf', scale);\n // },\n },\n s: {\n // Half note slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 4: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: false,\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Quarter rest\n code_head: 'restQuarter',\n stem: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.5,\n line_below: 1.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restQuarter', scale);\n // },\n },\n s: {\n // Quarter slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 8: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: true,\n beam_count: 1,\n stem_beam_extension: 0,\n code_flag_upstem: 'flag8thUp',\n code_flag_downstem: 'flag8thDown',\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Eighth rest\n code_head: 'rest8th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.0,\n line_below: 1.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest8th', scale);\n // },\n },\n s: {\n // Eighth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 16: {\n common: {\n beam_count: 2,\n stem_beam_extension: 0,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag16thUp',\n code_flag_downstem: 'flag16thDown',\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Sixteenth rest\n code_head: 'rest16th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.0,\n line_below: 2.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest16th', scale);\n // },\n },\n s: {\n // Sixteenth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 32: {\n common: {\n beam_count: 3,\n stem_beam_extension: 7.5,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag32ndUp',\n code_flag_downstem: 'flag32ndDown',\n stem_up_extension: 9,\n stem_down_extension: 9,\n tabnote_stem_up_extension: 9,\n tabnote_stem_down_extension: 9,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Thirty-second rest\n code_head: 'rest32nd',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -1.5,\n line_above: 2.0,\n line_below: 2.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest32nd', scale);\n // },\n },\n s: {\n // Thirty-second slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 64: {\n common: {\n beam_count: 4,\n stem_beam_extension: 15,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag64thUp',\n code_flag_downstem: 'flag64thDown',\n stem_up_extension: 13,\n stem_down_extension: 13,\n tabnote_stem_up_extension: 13,\n tabnote_stem_down_extension: 13,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Sixty-fourth rest\n code_head: 'rest64th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -1.5,\n line_above: 2.0,\n line_below: 3.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest64th', scale);\n // },\n },\n s: {\n // Sixty-fourth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 128: {\n common: {\n beam_count: 5,\n stem_beam_extension: 22.5,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag128thUp',\n code_flag_downstem: 'flag128thDown',\n stem_up_extension: 22,\n stem_down_extension: 22,\n tabnote_stem_up_extension: 22,\n tabnote_stem_down_extension: 22,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Hundred-twenty-eight rest\n code_head: 'rest128th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -2.5,\n line_above: 3.0,\n line_below: 3.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest128th', scale);\n // },\n },\n s: {\n // Hundred-twenty-eight slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// The file implements notes for Tablature notation. This consists of one or\n// more fret positions, and can either be drawn with or without stems.\n//\n// See `tests/tabnote_tests.ts` for usage examples.\nimport { Font } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { StemmableNote } from './stemmablenote';\nimport { Tables } from './tables';\nimport { Category, isDot } from './typeguard';\nimport { defined, RuntimeError } from './util';\n// Gets the unused strings grouped together if consecutive.\n//\n// Parameters:\n// * num_lines - The number of lines\n// * strings_used - An array of numbers representing which strings have fret positions\nfunction getUnusedStringGroups(num_lines, strings_used) {\n const stem_through = [];\n let group = [];\n for (let string = 1; string <= num_lines; string++) {\n const is_used = strings_used.indexOf(string) > -1;\n if (!is_used) {\n group.push(string);\n }\n else {\n stem_through.push(group);\n group = [];\n }\n }\n if (group.length > 0)\n stem_through.push(group);\n return stem_through;\n}\n// Gets groups of points that outline the partial stem lines\n// between fret positions\n//\n// Parameters:\n// * stem_Y - The `y` coordinate the stem is located on\n// * unused_strings - An array of groups of unused strings\n// * stave - The stave to use for reference\n// * stem_direction - The direction of the stem\nfunction getPartialStemLines(stem_y, unused_strings, stave, stem_direction) {\n const up_stem = stem_direction !== 1;\n const down_stem = stem_direction !== -1;\n const line_spacing = stave.getSpacingBetweenLines();\n const total_lines = stave.getNumLines();\n const stem_lines = [];\n unused_strings.forEach((strings) => {\n const containsLastString = strings.indexOf(total_lines) > -1;\n const containsFirstString = strings.indexOf(1) > -1;\n if ((up_stem && containsFirstString) || (down_stem && containsLastString)) {\n return;\n }\n // If there's only one string in the group, push a duplicate value.\n // We do this because we need 2 strings to convert into upper/lower y\n // values.\n if (strings.length === 1) {\n strings.push(strings[0]);\n }\n const line_ys = [];\n // Iterate through each group string and store it's y position\n strings.forEach((string, index, strings) => {\n const isTopBound = string === 1;\n const isBottomBound = string === total_lines;\n // Get the y value for the appropriate staff line,\n // we adjust for a 0 index array, since string numbers are index 1\n let y = stave.getYForLine(string - 1);\n // Unless the string is the first or last, add padding to each side\n // of the line\n if (index === 0 && !isTopBound) {\n y -= line_spacing / 2 - 1;\n }\n else if (index === strings.length - 1 && !isBottomBound) {\n y += line_spacing / 2 - 1;\n }\n // Store the y value\n line_ys.push(y);\n // Store a subsequent y value connecting this group to the main\n // stem above/below the stave if it's the top/bottom string\n if (stem_direction === 1 && isTopBound) {\n line_ys.push(stem_y - 2);\n }\n else if (stem_direction === -1 && isBottomBound) {\n line_ys.push(stem_y + 2);\n }\n });\n // Add the sorted y values to the\n stem_lines.push(line_ys.sort((a, b) => a - b));\n });\n return stem_lines;\n}\nexport class TabNote extends StemmableNote {\n // Initialize the TabNote with a `noteStruct` full of properties\n // and whether to `draw_stem` when rendering the note\n constructor(noteStruct, draw_stem = false) {\n super(noteStruct);\n this.glyphs = [];\n // Return the number of the greatest string, which is the string lowest on the display\n this.greatestString = () => {\n return this.positions.map((x) => x.str).reduce((a, b) => (a > b ? a : b));\n };\n // Return the number of the least string, which is the string highest on the display\n this.leastString = () => {\n return this.positions.map((x) => x.str).reduce((a, b) => (a < b ? a : b));\n };\n this.ghost = false; // Renders parenthesis around notes\n // Note properties\n // The fret positions in the note. An array of `{ str: X, fret: X }`\n this.positions = noteStruct.positions || [];\n // Render Options\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads and rests\n glyph_font_scale: Tables.TABLATURE_FONT_SCALE, \n // Flag to draw a stem\n draw_stem, \n // Flag to draw dot modifiers\n draw_dots: draw_stem, \n // Flag to extend the main stem through the stave and fret positions\n draw_stem_through_stave: false, \n // vertical shift from stave line\n y_shift: 0, \n // normal glyph scale\n scale: 1.0, \n // default tablature font\n font: `${Font.SIZE}pt ${Font.SANS_SERIF}` });\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n this.buildStem();\n if (noteStruct.stem_direction) {\n this.setStemDirection(noteStruct.stem_direction);\n }\n else {\n this.setStemDirection(Stem.UP);\n }\n // Renders parenthesis around notes\n this.ghost = false;\n this.updateWidth();\n }\n static get CATEGORY() {\n return Category.TabNote;\n }\n reset() {\n super.reset();\n if (this.stave)\n this.setStave(this.stave);\n return this;\n }\n // Set as ghost `TabNote`, surrounds the fret positions with parenthesis.\n // Often used for indicating frets that are being bent to\n setGhost(ghost) {\n this.ghost = ghost;\n this.updateWidth();\n return this;\n }\n // Determine if the note has a stem\n hasStem() {\n if (this.render_options.draw_stem)\n return true;\n return false;\n }\n // Get the default stem extension for the note\n getStemExtension() {\n const glyph = this.getGlyph();\n if (this.stem_extension_override != null) {\n return this.stem_extension_override;\n }\n if (glyph) {\n return this.getStemDirection() === Stem.UP ? glyph.tabnote_stem_up_extension : glyph.tabnote_stem_down_extension;\n }\n return 0;\n }\n // Calculate and store the width of the note\n updateWidth() {\n this.glyphs = [];\n this.width = 0;\n for (let i = 0; i < this.positions.length; ++i) {\n let fret = this.positions[i].fret;\n if (this.ghost)\n fret = '(' + fret + ')';\n const glyph = Tables.tabToGlyph(fret.toString(), this.render_options.scale);\n this.glyphs.push(glyph);\n this.width = Math.max(glyph.getWidth(), this.width);\n }\n // For some reason we associate a notehead glyph with a TabNote, and this\n // glyph is used for certain width calculations. Of course, this is totally\n // incorrect since a notehead is a poor approximation for the dimensions of\n // a fret number which can have multiple digits. As a result, we must\n // overwrite getWidth() to return the correct width\n this.glyph.getWidth = () => this.width;\n }\n // Set the `stave` to the note\n setStave(stave) {\n super.setStave(stave);\n const ctx = stave.getContext();\n this.setContext(ctx);\n // Calculate the fret number width based on font used\n if (ctx) {\n this.width = 0;\n for (let i = 0; i < this.glyphs.length; ++i) {\n const glyph = this.glyphs[i];\n const text = '' + glyph.text;\n if (text.toUpperCase() !== 'X') {\n ctx.save();\n ctx.setFont(this.render_options.font);\n glyph.width = ctx.measureText(text).width;\n ctx.restore();\n glyph.getWidth = () => glyph.width;\n }\n this.width = Math.max(glyph.getWidth(), this.width);\n }\n this.glyph.getWidth = () => this.width;\n }\n // we subtract 1 from `line` because getYForLine expects a 0-based index,\n // while the position.str is a 1-based index\n const ys = this.positions.map(({ str: line }) => stave.getYForLine(Number(line) - 1));\n this.setYs(ys);\n if (this.stem) {\n this.stem.setYBounds(this.getStemY(), this.getStemY());\n }\n return this;\n }\n // Get the fret positions for the note\n getPositions() {\n return this.positions;\n }\n // Get the default `x` and `y` coordinates for a modifier at a specific\n // `position` at a fret position `index`\n getModifierStartXY(position, index) {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-Values calculated for this note.');\n }\n let x = 0;\n if (position === Modifier.Position.LEFT) {\n x = -1 * 2; // FIXME: modifier padding, move to font file\n }\n else if (position === Modifier.Position.RIGHT) {\n x = this.width + 2; // FIXME: modifier padding, move to font file\n }\n else if (position === Modifier.Position.BELOW || position === Modifier.Position.ABOVE) {\n const note_glyph_width = this.glyph.getWidth();\n x = note_glyph_width / 2;\n }\n return {\n x: this.getAbsoluteX() + x,\n y: this.ys[index],\n };\n }\n // Get the default line for rest\n getLineForRest() {\n return Number(this.positions[0].str);\n }\n // Pre-render formatting\n preFormat() {\n if (this.preFormatted)\n return;\n if (this.modifierContext)\n this.modifierContext.preFormat();\n // width is already set during init()\n this.preFormatted = true;\n }\n // Get the x position for the stem\n getStemX() {\n return this.getCenterGlyphX();\n }\n // Get the y position for the stem\n getStemY() {\n const num_lines = this.checkStave().getNumLines();\n // The decimal staff line amounts provide optimal spacing between the\n // fret number and the stem\n const stemUpLine = -0.5;\n const stemDownLine = num_lines - 0.5;\n const stemStartLine = Stem.UP === this.stem_direction ? stemUpLine : stemDownLine;\n return this.checkStave().getYForLine(stemStartLine);\n }\n // Get the stem extents for the tabnote\n getStemExtents() {\n return this.checkStem().getExtents();\n }\n // Draw the fal onto the context\n drawFlag() {\n var _a;\n const { beam, glyph, render_options: { draw_stem }, } = this;\n const context = this.checkContext();\n const shouldDrawFlag = beam == undefined && draw_stem;\n // Now it's the flag's turn.\n if (glyph.flag && shouldDrawFlag) {\n const flag_x = this.getStemX();\n const flag_y = this.getStemDirection() === Stem.DOWN\n ? // Down stems are below the note head and have flags on the right.\n this.getStemY() - this.checkStem().getHeight() - (this.glyph ? this.glyph.stem_down_extension : 0)\n : // Up stems are above the note head and have flags on the right.\n this.getStemY() - this.checkStem().getHeight() + (this.glyph ? this.glyph.stem_up_extension : 0);\n // Draw the Flag\n //this.flag?.setOptions({ category: 'flag.tabStem' });\n (_a = this.flag) === null || _a === void 0 ? void 0 : _a.render(context, flag_x, flag_y);\n //Glyph.renderGlyph(context, flag_x, flag_y, glyph_font_scale, flag_code, { category: 'flag.tabStem' });\n }\n }\n // Render the modifiers onto the context.\n drawModifiers() {\n this.modifiers.forEach((modifier) => {\n // Only draw the dots if enabled.\n if (isDot(modifier) && !this.render_options.draw_dots) {\n return;\n }\n modifier.setContext(this.getContext());\n modifier.drawWithStyle();\n });\n }\n // Render the stem extension through the fret positions\n drawStemThrough() {\n const stemX = this.getStemX();\n const stemY = this.getStemY();\n const ctx = this.checkContext();\n const drawStem = this.render_options.draw_stem;\n const stemThrough = this.render_options.draw_stem_through_stave;\n if (drawStem && stemThrough) {\n const numLines = this.checkStave().getNumLines();\n const stringsUsed = this.positions.map((position) => Number(position.str));\n const unusedStrings = getUnusedStringGroups(numLines, stringsUsed);\n const stemLines = getPartialStemLines(stemY, unusedStrings, this.checkStave(), this.getStemDirection());\n ctx.save();\n ctx.setLineWidth(Stem.WIDTH);\n stemLines.forEach((bounds) => {\n if (bounds.length === 0)\n return;\n ctx.beginPath();\n ctx.moveTo(stemX, bounds[0]);\n ctx.lineTo(stemX, bounds[bounds.length - 1]);\n ctx.stroke();\n ctx.closePath();\n });\n ctx.restore();\n }\n }\n // Render the fret positions onto the context\n drawPositions() {\n const ctx = this.checkContext();\n const x = this.getAbsoluteX();\n const ys = this.ys;\n for (let i = 0; i < this.positions.length; ++i) {\n const y = ys[i] + this.render_options.y_shift;\n const glyph = this.glyphs[i];\n // Center the fret text beneath the notation note head\n const note_glyph_width = this.glyph.getWidth();\n const tab_x = x + note_glyph_width / 2 - glyph.getWidth() / 2;\n // FIXME: Magic numbers.\n ctx.clearRect(tab_x - 2, y - 3, glyph.getWidth() + 4, 6);\n if (glyph.code) {\n Glyph.renderGlyph(ctx, tab_x, y, this.render_options.glyph_font_scale * this.render_options.scale, glyph.code);\n }\n else {\n ctx.save();\n ctx.setFont(this.render_options.font);\n const text = glyph.text.toString();\n ctx.fillText(text, tab_x, y + 5 * this.render_options.scale);\n ctx.restore();\n }\n }\n }\n // The main rendering function for the entire note.\n draw() {\n const ctx = this.checkContext();\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', \"Can't draw note without Y values.\");\n }\n this.setRendered();\n const render_stem = this.beam == undefined && this.render_options.draw_stem;\n ctx.openGroup('tabnote', this.getAttribute('id'), { pointerBBox: true });\n this.drawPositions();\n this.drawStemThrough();\n if (this.stem && render_stem) {\n const stem_x = this.getStemX();\n this.stem.setNoteHeadXBounds(stem_x, stem_x);\n this.stem.setContext(ctx).draw();\n }\n this.drawFlag();\n this.drawModifiers();\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { TabTie } from './tabtie';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class TabSlide extends TabTie {\n /**\n * @param notes is a struct of the form:\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n * @param notes.first_note the starting note of the slide\n * @param notes.last_note the ending note of the slide\n * @param notes.first_indices specifies which string + fret positions of the TabNote are used in this slide. zero indexed.\n * @param notes.last_indices currently unused. we assume it's the same as first_indices.\n *\n * @param direction TabSlide.SLIDE_UP or TabSlide.SLIDE_DOWN\n */\n constructor(notes, direction) {\n super(notes, 'sl.');\n // Determine the direction automatically if it is not provided.\n if (!direction) {\n let first_fret = notes.first_note.getPositions()[0].fret;\n if (typeof first_fret === 'string') {\n first_fret = parseInt(first_fret, 10);\n }\n let last_fret = notes.last_note.getPositions()[0].fret;\n if (typeof last_fret === 'string') {\n last_fret = parseInt(last_fret, 10);\n }\n // If either of the frets are 'X', parseInt() above will return NaN.\n // Choose TabSlide.SLIDE_UP by default.\n if (isNaN(first_fret) || isNaN(last_fret)) {\n direction = TabSlide.SLIDE_UP;\n }\n else {\n direction = first_fret > last_fret ? TabSlide.SLIDE_DOWN : TabSlide.SLIDE_UP;\n }\n }\n this.direction = direction;\n this.render_options.cp1 = 11;\n this.render_options.cp2 = 14;\n this.render_options.y_shift = 0.5;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.TabSlide;\n }\n static get SLIDE_UP() {\n return 1;\n }\n static get SLIDE_DOWN() {\n return -1;\n }\n static createSlideUp(notes) {\n return new TabSlide(notes, TabSlide.SLIDE_UP);\n }\n static createSlideDown(notes) {\n return new TabSlide(notes, TabSlide.SLIDE_DOWN);\n }\n renderTie(params) {\n if (params.first_ys.length === 0 || params.last_ys.length === 0) {\n throw new RuntimeError('BadArguments', 'No Y-values to render');\n }\n const ctx = this.checkContext();\n const first_x_px = params.first_x_px;\n const first_ys = params.first_ys;\n const last_x_px = params.last_x_px;\n const direction = params.direction;\n if (direction !== TabSlide.SLIDE_UP && direction !== TabSlide.SLIDE_DOWN) {\n throw new RuntimeError('BadSlide', 'Invalid slide direction');\n }\n // eslint-disable-next-line\n const first_indices = this.notes.first_indices;\n for (let i = 0; i < first_indices.length; ++i) {\n const slide_y = first_ys[first_indices[i]] + this.render_options.y_shift;\n if (isNaN(slide_y)) {\n throw new RuntimeError('BadArguments', 'Bad indices for slide rendering.');\n }\n ctx.beginPath();\n ctx.moveTo(first_x_px, slide_y + 3 * direction);\n ctx.lineTo(last_x_px, slide_y - 3 * direction);\n ctx.closePath();\n ctx.stroke();\n }\n this.setRendered();\n }\n}\nTabSlide.TEXT_FONT = {\n family: Font.SERIF,\n size: 10,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Stave } from './stave';\nimport { Category } from './typeguard';\nexport class TabStave extends Stave {\n static get CATEGORY() {\n return Category.TabStave;\n }\n constructor(x, y, width, options) {\n const tab_options = Object.assign({ spacing_between_lines_px: 13, num_lines: 6, top_text_position: 1 }, options);\n super(x, y, width, tab_options);\n }\n getYForGlyphs() {\n return this.getYForLine(2.5);\n }\n // Deprecated\n addTabGlyph() {\n this.addClef('tab');\n return this;\n }\n}\n","// / [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { StaveTie } from './stavetie';\nimport { Category } from './typeguard';\nexport class TabTie extends StaveTie {\n static get CATEGORY() {\n return Category.TabTie;\n }\n static createHammeron(notes) {\n return new TabTie(notes, 'H');\n }\n static createPulloff(notes) {\n return new TabTie(notes, 'P');\n }\n /**\n * @param notes is a struct that has:\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n *\n * @param text\n */\n constructor(notes, text) {\n super(notes, text);\n this.render_options.cp1 = 9;\n this.render_options.cp2 = 11;\n this.render_options.y_shift = 3;\n this.direction = -1; // Tab tie's are always face up.\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n//\n// This file implements `TextBrackets` which extend between two notes.\n// The octave transposition markings (8va, 8vb, 15va, 15vb) can be created\n// using this class.\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Renderer } from './renderer';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.TextBracket.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextBracket.DEBUG)\n log('Vex.Flow.TextBracket', args);\n}\nexport var TextBracketPosition;\n(function (TextBracketPosition) {\n TextBracketPosition[TextBracketPosition[\"TOP\"] = 1] = \"TOP\";\n TextBracketPosition[TextBracketPosition[\"BOTTOM\"] = -1] = \"BOTTOM\";\n})(TextBracketPosition || (TextBracketPosition = {}));\nexport class TextBracket extends Element {\n constructor({ start, stop, text = '', superscript = '', position = TextBracketPosition.TOP }) {\n super();\n this.start = start;\n this.stop = stop;\n this.text = text;\n this.superscript = superscript;\n this.position = typeof position === 'string' ? TextBracket.PositionString[position] : position;\n this.line = 1;\n this.resetFont();\n this.render_options = {\n dashed: true,\n dash: [5],\n color: 'black',\n line_width: 1,\n show_bracket: true,\n bracket_height: 8,\n // In the BOTTOM position, the bracket line can extend\n // under the superscript.\n underline_superscript: true,\n };\n }\n static get CATEGORY() {\n return Category.TextBracket;\n }\n static get Position() {\n return TextBracketPosition;\n }\n static get PositionString() {\n return {\n top: TextBracketPosition.TOP,\n bottom: TextBracketPosition.BOTTOM,\n };\n }\n /**\n * @deprecated Use `TextBracket.Position` instead.\n */\n static get Positions() {\n L('Positions is deprecated, use TextBracketPosition instead.');\n return TextBracketPosition;\n }\n /**\n * @deprecated Use `TextBracket.PositionString` instead.\n */\n static get PositionsString() {\n L('PositionsString is deprecated, use PositionString instead.');\n return TextBracket.PositionString;\n }\n /**\n * Apply the text backet styling to the provided context.\n * @param ctx\n * @returns this\n */\n applyStyle(ctx) {\n ctx.setFont(this.font);\n const options = this.render_options;\n ctx.setStrokeStyle(options.color);\n ctx.setFillStyle(options.color);\n ctx.setLineWidth(options.line_width);\n return this;\n }\n // Set whether the bracket line should be `dashed`. You can also\n // optionally set the `dash` pattern by passing in an array of numbers\n setDashed(dashed, dash) {\n this.render_options.dashed = dashed;\n if (dash)\n this.render_options.dash = dash;\n return this;\n }\n // Set the rendering `context` for the octave bracket\n setLine(line) {\n this.line = line;\n return this;\n }\n // Draw the octave bracket on the rendering context\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let y = 0;\n switch (this.position) {\n case TextBracketPosition.TOP:\n y = this.start.checkStave().getYForTopText(this.line);\n break;\n case TextBracketPosition.BOTTOM:\n y = this.start.checkStave().getYForBottomText(this.line + Tables.TEXT_HEIGHT_OFFSET_HACK);\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} is invalid.`);\n }\n // Get the preliminary start and stop coordintates for the bracket\n const start = { x: this.start.getAbsoluteX(), y };\n const stop = { x: this.stop.getAbsoluteX(), y };\n L('Rendering TextBracket: start:', start, 'stop:', stop, 'y:', y);\n const bracket_height = this.render_options.bracket_height * this.position;\n ctx.save();\n this.applyStyle(ctx);\n // Draw text\n ctx.fillText(this.text, start.x, start.y);\n // Get the width and height for the octave number\n const main_measure = ctx.measureText(this.text);\n const main_width = main_measure.width;\n const main_height = main_measure.height;\n // Calculate the y position for the super script\n const super_y = start.y - main_height / 2.5;\n // We called this.resetFont() in the constructor, so we know this.textFont is available.\n // eslint-disable-next-line\n const { family, size, weight, style } = this.textFont;\n // To draw the superscript, we scale the font size by 1/1.4.\n const smallerFontSize = Font.scaleSize(size, 0.714286);\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.superscript, start.x + main_width + 1, super_y);\n // Determine width and height of the superscript\n const super_measure = ctx.measureText(this.superscript);\n const super_width = super_measure.width;\n const super_height = super_measure.height;\n // Setup initial coordinates for the bracket line\n let start_x = start.x;\n let line_y = super_y;\n const end_x = stop.x + this.stop.getGlyph().getWidth();\n // Adjust x and y coordinates based on position\n if (this.position === TextBracketPosition.TOP) {\n start_x += main_width + super_width + 5;\n line_y -= super_height / 2.7;\n }\n else if (this.position === TextBracketPosition.BOTTOM) {\n line_y += super_height / 2.7;\n start_x += main_width + 2;\n if (!this.render_options.underline_superscript) {\n start_x += super_width;\n }\n }\n if (this.render_options.dashed) {\n // Main line\n Renderer.drawDashedLine(ctx, start_x, line_y, end_x, line_y, this.render_options.dash);\n // Ending Bracket\n if (this.render_options.show_bracket) {\n Renderer.drawDashedLine(ctx, end_x, line_y + 1 * this.position, end_x, line_y + bracket_height, this.render_options.dash);\n }\n }\n else {\n ctx.beginPath();\n ctx.moveTo(start_x, line_y);\n // Main line\n ctx.lineTo(end_x, line_y);\n if (this.render_options.show_bracket) {\n // Ending bracket\n ctx.lineTo(end_x, line_y + bracket_height);\n }\n ctx.stroke();\n ctx.closePath();\n }\n ctx.restore();\n }\n}\nTextBracket.DEBUG = false;\nTextBracket.TEXT_FONT = {\n family: Font.SERIF,\n size: 15,\n weight: FontWeight.NORMAL,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextDynamics.DEBUG)\n log('Vex.Flow.TextDynamics', args);\n}\n/**\n * `TextDynamics` renders traditional\n * text dynamics markings, **ie: p, f, sfz, rfz, ppp**\n *\n * You can render any dynamics string that contains a combination of\n * the following letters: P, M, F, Z, R, S\n */\nexport class TextDynamics extends Note {\n /**\n * Create the dynamics marking.\n *\n * A `TextDynamics` object inherits from `Note` so that it can be formatted\n * within a `Voice`.\n *\n * @param noteStruct an object that contains a `duration` property and a\n * `sequence` of letters that represents the letters to render.\n */\n constructor(noteStruct) {\n super(noteStruct);\n this.sequence = (noteStruct.text || '').toLowerCase();\n this.line = noteStruct.line || 0;\n this.glyphs = [];\n this.render_options = Object.assign(Object.assign({}, this.render_options), { glyph_font_size: 40 });\n L('New Dynamics Text: ', this.sequence);\n }\n static get CATEGORY() {\n return Category.TextDynamics;\n }\n /** The glyph data for each dynamics letter. */\n static get GLYPHS() {\n return {\n f: {\n code: 'dynamicForte',\n width: 12,\n },\n p: {\n code: 'dynamicPiano',\n width: 14,\n },\n m: {\n code: 'dynamicMezzo',\n width: 17,\n },\n s: {\n code: 'dynamicSforzando',\n width: 10,\n },\n z: {\n code: 'dynamicZ',\n width: 12,\n },\n r: {\n code: 'dynamicRinforzando',\n width: 12,\n },\n };\n }\n /** Set the Stave line on which the note should be placed. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Preformat the dynamics text. */\n preFormat() {\n let total_width = 0;\n // length of this.glyphs must be <=\n // length of this.sequence, so if we're formatted before\n // create new glyphs.\n this.glyphs = [];\n // Iterate through each letter\n this.sequence.split('').forEach((letter) => {\n // Get the glyph data for the letter\n const glyph_data = TextDynamics.GLYPHS[letter];\n if (!glyph_data)\n throw new RuntimeError('Invalid dynamics character: ' + letter);\n const size = defined(this.render_options.glyph_font_size);\n const glyph = new Glyph(glyph_data.code, size, { category: 'textNote' });\n // Add the glyph\n this.glyphs.push(glyph);\n total_width += glyph_data.width;\n });\n // Store the width of the text\n this.setWidth(total_width);\n this.preFormatted = true;\n return this;\n }\n /** Draw the dynamics text on the rendering context. */\n draw() {\n this.setRendered();\n const x = this.getAbsoluteX();\n const y = this.checkStave().getYForLine(this.line + -3);\n L('Rendering Dynamics: ', this.sequence);\n let letter_x = x;\n this.glyphs.forEach((glyph, index) => {\n const current_letter = this.sequence[index];\n glyph.render(this.checkContext(), letter_x, y);\n letter_x += TextDynamics.GLYPHS[current_letter].width;\n });\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.TextDynamics.DEBUG` to `true`. */\nTextDynamics.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextFormatter.DEBUG)\n log('Vex.Flow.TextFormatter', args);\n}\n/**\n * Text widths are stored in a cache, so we don't have to recompute widths\n * for the same font + string combination.\n *\n * The cache is first keyed by the font information. The key is of the form:\n * `${family}-${size}-${weight}-${style}`\n * The second level key is the specific text to be measured.\n *\n * The stored value is the measured width in `em` units.\n * textWidth == textWidthCache[cacheKey][textToMeasure]\n */\nconst textWidthCache = {};\n/**\n * Applications may register additional fonts via `TextFormatter.registerInfo(info)`.\n * The metrics for those fonts will be made available to the application.\n */\nconst registry = {};\nexport class TextFormatter {\n /**\n * Use `TextFormatter.create(...)` to build an instance from information previously\n * registered via `TextFormatter.registerInfo(info)`.\n */\n constructor(formatterInfo) {\n /** Font family. */\n this.family = '';\n /** Specified in `pt` units. */\n this.size = 14;\n /** Font metrics are extracted at 1000 upem (units per em). */\n this.resolution = 1000;\n /**\n * For text formatting, we do not require glyph outlines, but instead rely on glyph\n * bounding box metrics such as:\n * ```\n * {\n * x_min: 48,\n * x_max: 235,\n * y_min: -17,\n * y_max: 734,\n * ha: 751,\n * leftSideBearing: 48,\n * advanceWidth: 286,\n * }\n * ```\n */\n this.glyphs = {};\n this.serifs = false;\n this.monospaced = false;\n this.italic = false;\n this.bold = false;\n this.superscriptOffset = 0;\n this.subscriptOffset = 0;\n this.maxSizeGlyph = 'H';\n // This is an internal key used to index the `textWidthCache`.\n this.cacheKey = '';\n this.updateParams(formatterInfo);\n }\n /**\n * Return all registered font families.\n */\n static getFontFamilies() {\n const registeredFonts = [];\n for (const fontFamily in registry) {\n const formatterInfo = registry[fontFamily];\n registeredFonts.push(Object.assign({}, formatterInfo));\n }\n return registeredFonts;\n }\n /**\n * Call `TextFormatter.registerInfo(info)` to register font information before using this method.\n *\n * This method creates a formatter for the font that most closely matches the requested font.\n * We compare font family, bold, and italic attributes.\n * This method will return a fallback formatter if there are no matches.\n */\n static create(requestedFont = {}) {\n L('create: ', requestedFont);\n if (!requestedFont.family) {\n requestedFont.family = Font.SANS_SERIF;\n }\n // TODO: One potential (small) optimization is to cache the TextFormatter object\n // returned for each font info. We would probably want to clear the cache if\n // the registry is ever updated.\n const candidates = [];\n // The incoming font family is a string of comma-separated font family names.\n // (e.g., `PetalumaScript, Arial, sans-serif`).\n const requestedFamilies = requestedFont.family.split(/\\s*,\\s*/);\n for (const requestedFamily of requestedFamilies) {\n for (const fontFamily in registry) {\n // Support cases where the registry contains 'Roboto Slab Medium',\n // but the requestedFont.family is 'Roboto Slab'.\n if (fontFamily.startsWith(requestedFamily)) {\n candidates.push(registry[fontFamily]);\n }\n }\n if (candidates.length > 0) {\n break;\n }\n }\n let formatter;\n if (candidates.length === 0) {\n // No match, so return a fallback text formatter.\n formatter = new TextFormatter(Object.values(registry)[0]);\n }\n else if (candidates.length === 1) {\n formatter = new TextFormatter(candidates[0]);\n }\n else {\n const bold = Font.isBold(requestedFont.weight);\n const italic = Font.isItalic(requestedFont.style);\n const perfectMatch = candidates.find((f) => f.bold === bold && f.italic === italic);\n if (perfectMatch) {\n formatter = new TextFormatter(perfectMatch);\n }\n else {\n const partialMatch = candidates.find((f) => f.italic === italic || f.bold === bold);\n if (partialMatch) {\n formatter = new TextFormatter(partialMatch);\n }\n else {\n formatter = new TextFormatter(candidates[0]);\n }\n }\n }\n const fontSize = requestedFont.size;\n if (typeof fontSize !== 'undefined') {\n const fontSizeInPt = Font.convertSizeToPointValue(fontSize);\n formatter.setFontSize(fontSizeInPt);\n }\n return formatter;\n }\n /**\n * @param fontFamily used as a key to the font registry.\n * @returns the same info object that was passed in via `TextFormatter.registerInfo(info)`\n */\n static getInfo(fontFamily) {\n return registry[fontFamily];\n }\n /**\n * Apps may register their own fonts and metrics, and those metrics\n * will be available to the app for formatting.\n *\n * Metrics can be generated from a font file using fontgen_text.js in the tools/fonts directory.\n * @param info\n * @param overwrite\n */\n static registerInfo(info, overwrite = false) {\n L('registerInfo: ', info, overwrite);\n const fontFamily = info.family;\n const currFontInfo = registry[fontFamily];\n if (currFontInfo === undefined || overwrite) {\n registry[fontFamily] = info;\n }\n }\n updateParams(params) {\n if (params.family)\n this.family = params.family;\n if (params.resolution)\n this.resolution = params.resolution;\n if (params.glyphs)\n this.glyphs = params.glyphs;\n if (params.serifs)\n this.serifs = params.serifs;\n if (params.monospaced)\n this.monospaced = params.monospaced;\n if (params.italic)\n this.italic = params.italic;\n if (params.bold)\n this.bold = params.bold;\n if (params.maxSizeGlyph)\n this.maxSizeGlyph = params.maxSizeGlyph;\n if (params.superscriptOffset)\n this.superscriptOffset = params.superscriptOffset;\n if (params.subscriptOffset)\n this.subscriptOffset = params.subscriptOffset;\n this.updateCacheKey();\n }\n /** Create a hash with the current font data, so we can cache computed widths. */\n updateCacheKey() {\n const family = this.family.replace(/\\s+/g, '_');\n const size = this.size;\n const weight = this.bold ? FontWeight.BOLD : FontWeight.NORMAL;\n const style = this.italic ? FontStyle.ITALIC : FontStyle.NORMAL;\n // Use the same key format as SVGContext.\n this.cacheKey = `${family}%${size}%${weight}%${style}`;\n }\n /**\n * The glyphs table is indexed by the character (e.g., 'C', '@').\n * See: robotoslab_glyphs.ts & petalumascript_glyphs.ts.\n */\n getGlyphMetrics(character) {\n if (this.glyphs[character]) {\n return this.glyphs[character];\n }\n else {\n return this.glyphs[this.maxSizeGlyph];\n }\n }\n get maxHeight() {\n const metrics = this.getGlyphMetrics(this.maxSizeGlyph);\n return (metrics.ha / this.resolution) * this.fontSizeInPixels;\n }\n /**\n * Retrieve the character's advanceWidth as a fraction of an `em` unit.\n * For the space character ' ' as defined in the:\n * petalumascript_glyphs.ts: 250 advanceWidth in the 1000 unitsPerEm font returns 0.25.\n * robotoslab_glyphs.ts: 509 advanceWidth in the 2048 unitsPerEm font returns 0.2485.\n */\n getWidthForCharacterInEm(c) {\n var _a;\n const metrics = this.getGlyphMetrics(c);\n if (!metrics) {\n // An arbitrary number, close to the `em` width of the '#' and '5' characters in PetalumaScript.\n return 0.65;\n }\n else {\n const advanceWidth = (_a = metrics.advanceWidth) !== null && _a !== void 0 ? _a : 0;\n return advanceWidth / this.resolution;\n }\n }\n /**\n * Retrieve the total width of `text` in `em` units.\n */\n getWidthForTextInEm(text) {\n const key = this.cacheKey;\n // Get the cache for this specific font family, size, weight, style combination.\n // The cache contains previously computed widths for different `text` strings.\n let cachedWidths = textWidthCache[key];\n if (cachedWidths === undefined) {\n cachedWidths = {};\n textWidthCache[key] = cachedWidths;\n }\n let width = cachedWidths[text];\n if (width === undefined) {\n width = 0;\n for (let i = 0; i < text.length; ++i) {\n width += this.getWidthForCharacterInEm(text[i]);\n }\n cachedWidths[text] = width;\n }\n return width;\n }\n /** The width of the text (in `em`) is scaled by the font size (in `px`). */\n getWidthForTextInPx(text) {\n return this.getWidthForTextInEm(text) * this.fontSizeInPixels;\n }\n /**\n * @param size in pt.\n */\n setFontSize(size) {\n this.size = size;\n // The width cache key depends on the current font size.\n this.updateCacheKey();\n return this;\n }\n /** `this.size` is specified in points. Convert to pixels. */\n get fontSizeInPixels() {\n return this.size * Font.scaleToPxFrom.pt;\n }\n getResolution() {\n return this.resolution;\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.TextFormatter.DEBUG` to `true`. */\nTextFormatter.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport var TextJustification;\n(function (TextJustification) {\n TextJustification[TextJustification[\"LEFT\"] = 1] = \"LEFT\";\n TextJustification[TextJustification[\"CENTER\"] = 2] = \"CENTER\";\n TextJustification[TextJustification[\"RIGHT\"] = 3] = \"RIGHT\";\n})(TextJustification || (TextJustification = {}));\n/**\n * `TextNote` is a notation element that is positioned in time. Generally\n * meant for objects that sit above/below the staff and inline with each other.\n * `TextNote` has to be assigned to a `Stave` before rendering by means of `setStave`.\n * Examples of this would be such as dynamics, lyrics, chord changes, etc.\n */\nexport class TextNote extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n this.text = noteStruct.text || '';\n this.superscript = noteStruct.superscript;\n this.subscript = noteStruct.subscript;\n this.setFont(noteStruct.font);\n this.line = noteStruct.line || 0;\n this.smooth = noteStruct.smooth || false;\n this.ignore_ticks = noteStruct.ignore_ticks || false;\n this.justification = TextJustification.LEFT;\n // Determine and set initial note width. Note that the text width is\n // an approximation and isn't very accurate. The only way to accurately\n // measure the length of text is with `CanvasRenderingContext2D.measureText()`.\n if (noteStruct.glyph) {\n const struct = TextNote.GLYPHS[noteStruct.glyph];\n if (!struct)\n throw new RuntimeError('Invalid glyph type: ' + noteStruct.glyph);\n this.glyph = new Glyph(struct.code, 40, { category: 'textNote' });\n this.setWidth(this.glyph.getMetrics().width);\n }\n else {\n this.glyph = undefined;\n }\n }\n static get CATEGORY() {\n return Category.TextNote;\n }\n /** Glyph data. */\n static get GLYPHS() {\n return {\n segno: {\n code: 'segno',\n },\n tr: {\n code: 'ornamentTrill',\n },\n mordent: {\n code: 'ornamentMordent',\n },\n mordent_upper: {\n code: 'ornamentShortTrill',\n },\n mordent_lower: {\n code: 'ornamentMordent',\n },\n f: {\n code: 'dynamicForte',\n },\n p: {\n code: 'dynamicPiano',\n },\n m: {\n code: 'dynamicMezzo',\n },\n s: {\n code: 'dynamicSforzando',\n },\n z: {\n code: 'dynamicZ',\n },\n coda: {\n code: 'coda',\n },\n pedal_open: {\n code: 'keyboardPedalPed',\n },\n pedal_close: {\n code: 'keyboardPedalUp',\n },\n caesura_straight: {\n code: 'caesura',\n },\n caesura_curved: {\n code: 'caesuraCurved',\n },\n breath: {\n code: 'breathMarkComma',\n },\n tick: {\n code: 'breathMarkTick',\n },\n turn: {\n code: 'ornamentTurn',\n },\n turn_inverted: {\n code: 'ornamentTurnSlash',\n },\n };\n }\n /** Set the horizontal justification of the TextNote. */\n setJustification(just) {\n this.justification = just;\n return this;\n }\n /** Set the Stave line on which the note should be placed. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Return the Stave line on which the TextNote is placed. */\n getLine() {\n return this.line;\n }\n /** Return the unformatted text of this TextNote. */\n getText() {\n return this.text;\n }\n /** Pre-render formatting. */\n preFormat() {\n if (this.preFormatted)\n return;\n const tickContext = this.checkTickContext(`Can't preformat without a TickContext.`);\n if (this.smooth) {\n this.setWidth(0);\n }\n else {\n if (this.glyph) {\n // Width already set.\n }\n else {\n const ctx = this.checkContext();\n ctx.setFont(this.textFont);\n this.setWidth(ctx.measureText(this.text).width);\n }\n }\n if (this.justification === TextJustification.CENTER) {\n this.leftDisplacedHeadPx = this.width / 2;\n }\n else if (this.justification === TextJustification.RIGHT) {\n this.leftDisplacedHeadPx = this.width;\n }\n // We reposition to the center of the note head\n this.rightDisplacedHeadPx = tickContext.getMetrics().glyphPx / 2;\n this.preFormatted = true;\n }\n /**\n * Renders the TextNote.\n * `TextNote` has to be assigned to a `Stave` before rendering by means of `setStave`.\n */\n draw() {\n const ctx = this.checkContext();\n const stave = this.checkStave();\n const tickContext = this.checkTickContext(`Can't draw without a TickContext.`);\n this.setRendered();\n // Reposition to center of note head\n let x = this.getAbsoluteX() + tickContext.getMetrics().glyphPx / 2;\n // Align based on tick-context width.\n const width = this.getWidth();\n if (this.justification === TextJustification.CENTER) {\n x -= width / 2;\n }\n else if (this.justification === TextJustification.RIGHT) {\n x -= width;\n }\n let y;\n if (this.glyph) {\n y = stave.getYForLine(this.line + -3);\n this.glyph.render(ctx, x, y);\n }\n else {\n y = stave.getYForLine(this.line + -3);\n this.applyStyle(ctx);\n ctx.setFont(this.textFont);\n ctx.fillText(this.text, x, y);\n const height = ctx.measureText(this.text).height;\n // We called this.setFont(...) in the constructor, so we know this.textFont is available.\n // eslint-disable-next-line\n const { family, size, weight, style } = this.textFont;\n // Scale the font size by 1/1.3.\n const smallerFontSize = Font.scaleSize(size, 0.769231);\n if (this.superscript) {\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.superscript, x + this.width + 2, y - height / 2.2);\n }\n if (this.subscript) {\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.subscript, x + this.width + 2, y + height / 2.2 - 1);\n }\n this.restoreStyle(ctx);\n }\n }\n}\nTextNote.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 12,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\nTextNote.Justification = TextJustification;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\n/**\n * Tickable represents a element that sit on a score and\n * has a duration, i.e., Tickables occupy space in the musical rendering dimension.\n */\nexport class Tickable extends Element {\n constructor() {\n super();\n this._preFormatted = false;\n this._postFormatted = false;\n // These properties represent the duration of\n // this tickable element.\n this.ticks = new Fraction(0, 1); // Fractional value of ticks\n this.intrinsicTicks = 0; // Floating point value of ticks\n this.tickMultiplier = new Fraction(1, 1);\n // Formatter metrics\n this.width = 0;\n this.x_shift = 0; // Shift from tick context\n this.modifiers = [];\n this.tupletStack = [];\n this.align_center = false;\n this.center_x_shift = 0; // Shift from tick context if center aligned\n // This flag tells the formatter to ignore this tickable during\n // formatting and justification. It is set by tickables such as BarNote.\n this.ignore_ticks = false;\n // This is a space for an external formatting class or function to maintain\n // metrics.\n this.formatterMetrics = {\n // The freedom of a tickable is the distance it can move without colliding\n // with neighboring elements. A formatter can set these values during its\n // formatting pass, which a different formatter can then use to fine tune.\n freedom: { left: 0, right: 0 },\n // The simplified rational duration of this tick as a string. It can be\n // used as an index to a map or hashtable.\n duration: '',\n // The number of formatting iterations undergone.\n iterations: 0,\n // The space in pixels allocated by this formatter, along with the mean space\n // for tickables of this duration, and the deviation from the mean.\n space: {\n used: 0,\n mean: 0,\n deviation: 0,\n },\n };\n }\n static get CATEGORY() {\n return Category.Tickable;\n }\n /** Reset the Tickable, this function will be overloaded. */\n reset() {\n return this;\n }\n /** Return the ticks. */\n getTicks() {\n return this.ticks;\n }\n /** Check if it ignores the ticks. */\n shouldIgnoreTicks() {\n return this.ignore_ticks;\n }\n /** Ignore the ticks. */\n setIgnoreTicks(flag) {\n this.ignore_ticks = flag;\n return this;\n }\n /** Set width of note. Used by the formatter for positioning. */\n setWidth(width) {\n this.width = width;\n }\n /** Get width of note. Used by the formatter for positioning. */\n getWidth() {\n if (!this._preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetWidth on an unformatted note.\");\n }\n return this.width + (this.modifierContext ? this.modifierContext.getWidth() : 0);\n }\n /** Displace note by `x` pixels. Used by the formatter. */\n setXShift(x) {\n this.x_shift = x;\n return this;\n }\n /** Get the `x` displaced pixels of the note. */\n getXShift() {\n return this.x_shift;\n }\n /** Get `x` position of this tick context. */\n getX() {\n const tickContext = this.checkTickContext(`Can't getX() without a TickContext.`);\n return tickContext.getX() + this.x_shift;\n }\n /** Return the formatterMetrics. */\n getFormatterMetrics() {\n return this.formatterMetrics;\n }\n /** Return the center `x` shift. */\n getCenterXShift() {\n if (this.isCenterAligned()) {\n return this.center_x_shift;\n }\n return 0;\n }\n /** Set the center `x` shift. */\n setCenterXShift(centerXShift) {\n this.center_x_shift = centerXShift;\n return this;\n }\n // Check if tickable is center aligned. */\n isCenterAligned() {\n return this.align_center;\n }\n // Set/unset center alignment. */\n setCenterAlignment(align_center) {\n this.align_center = align_center;\n return this;\n }\n /**\n * Return the associated voice. Every tickable must be associated with a voice.\n * This allows formatters and preFormatter to associate them with the right modifierContexts.\n */\n getVoice() {\n return defined(this.voice, 'NoVoice', 'Tickable has no voice.');\n }\n /** Set the associated voice. */\n setVoice(voice) {\n this.voice = voice;\n }\n /** Get the tuplet. */\n getTuplet() {\n return this.tuplet;\n }\n /** Return the intrinsic ticks. */\n getTupletStack() {\n return this.tupletStack;\n }\n /**\n * Reset the specific Tuplet if this is not provided, all tuplets are reset.\n * Remove any prior tuplets from the tick calculation and\n * reset the intrinsic tick value.\n */\n resetTuplet(tuplet) {\n let noteCount;\n let notesOccupied;\n if (tuplet) {\n const i = this.tupletStack.indexOf(tuplet);\n if (i !== -1) {\n this.tupletStack.splice(i, 1);\n noteCount = tuplet.getNoteCount();\n notesOccupied = tuplet.getNotesOccupied();\n // Revert old multiplier by inverting numerator & denom.:\n this.applyTickMultiplier(noteCount, notesOccupied);\n }\n return this;\n }\n while (this.tupletStack.length) {\n tuplet = this.tupletStack.pop();\n noteCount = tuplet.getNoteCount();\n notesOccupied = tuplet.getNotesOccupied();\n // Revert old multiplier by inverting numerator & denom.:\n this.applyTickMultiplier(noteCount, notesOccupied);\n }\n return this;\n }\n /** Attach to new tuplet. */\n setTuplet(tuplet) {\n if (tuplet) {\n this.tupletStack.push(tuplet);\n const noteCount = tuplet.getNoteCount();\n const notesOccupied = tuplet.getNotesOccupied();\n this.applyTickMultiplier(notesOccupied, noteCount);\n }\n this.tuplet = tuplet;\n return this;\n }\n /**\n * Add self to the provided ModifierContext `mc`.\n * If this tickable has modifiers, set modifierContext.\n * @returns this\n */\n addToModifierContext(mc) {\n this.modifierContext = mc;\n for (let i = 0; i < this.modifiers.length; ++i) {\n this.modifierContext.addMember(this.modifiers[i]);\n }\n this.modifierContext.addMember(this);\n this._preFormatted = false;\n return this;\n }\n /**\n * Optional, if tickable has modifiers, associate a Modifier.\n * @param mod the modifier\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n addModifier(modifier, index = 0) {\n this.modifiers.push(modifier);\n this._preFormatted = false;\n return this;\n }\n /** Get the list of associated modifiers. */\n getModifiers() {\n return this.modifiers;\n }\n /** Set the Tick Context. */\n setTickContext(tc) {\n this.tickContext = tc;\n this._preFormatted = false;\n }\n checkTickContext(message = 'Tickable has no tick context.') {\n return defined(this.tickContext, 'NoTickContext', message);\n }\n /** Preformat the Tickable. */\n preFormat() {\n if (this._preFormatted)\n return;\n this.width = 0;\n if (this.modifierContext) {\n this.modifierContext.preFormat();\n this.width += this.modifierContext.getWidth();\n }\n }\n /** Set preformatted status. */\n set preFormatted(value) {\n this._preFormatted = value;\n }\n get preFormatted() {\n return this._preFormatted;\n }\n /** Postformat the Tickable. */\n postFormat() {\n if (this._postFormatted)\n return this;\n this._postFormatted = true;\n return this;\n }\n /** Set postformatted status. */\n set postFormatted(value) {\n this._postFormatted = value;\n }\n get postFormatted() {\n return this._postFormatted;\n }\n /** Return the intrinsic ticks. */\n getIntrinsicTicks() {\n return this.intrinsicTicks;\n }\n /** Set the intrinsic ticks. */\n setIntrinsicTicks(intrinsicTicks) {\n this.intrinsicTicks = intrinsicTicks;\n this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks);\n }\n /** Get the tick multiplier. */\n getTickMultiplier() {\n return this.tickMultiplier;\n }\n /** Apply a tick multiplier. */\n applyTickMultiplier(numerator, denominator) {\n this.tickMultiplier.multiply(numerator, denominator);\n this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks);\n }\n /** Set the duration. */\n setDuration(duration) {\n const ticks = duration.numerator * (Tables.RESOLUTION / duration.denominator);\n this.ticks = this.tickMultiplier.clone().multiply(ticks);\n this.intrinsicTicks = this.ticks.value();\n }\n getAbsoluteX() {\n const tickContext = this.checkTickContext(`Can't getAbsoluteX() without a TickContext.`);\n return tickContext.getX();\n }\n /** Attach this note to a modifier context. */\n setModifierContext(mc) {\n this.modifierContext = mc;\n return this;\n }\n /** Get `ModifierContext`. */\n getModifierContext() {\n return this.modifierContext;\n }\n /** Check and get `ModifierContext`. */\n checkModifierContext() {\n return defined(this.modifierContext, 'NoModifierContext', 'No modifier context attached to this tickable.');\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// A formatter for abstract tickable objects, such as notes, chords,\n// tabs, etc.\nimport { Fraction } from './fraction';\nimport { RuntimeError } from './util';\n/**\n * TickContext formats abstract tickable objects, such as notes, chords, tabs, etc.\n */\nexport class TickContext {\n constructor(options) {\n this.preFormatted = false;\n this.postFormatted = false;\n this.tickID = options && options.tickID ? options.tickID : 0;\n this.currentTick = new Fraction(0, 1);\n this.maxTicks = new Fraction(0, 1);\n this.maxTickable = undefined; // Biggest tickable\n this.minTicks = undefined; // this can remian null if all tickables have ignore_ticks\n this.minTickable = undefined;\n this.padding = 1; // padding on each side (width += padding * 2)\n this.x = 0;\n this.xBase = 0; // base x position without xOffset\n this.xOffset = 0; // xBase and xOffset are an alternative way to describe x (x = xB + xO)\n this.tickables = []; // Notes, tabs, chords, lyrics.\n this.tickablesByVoice = {}; // Tickables indexed by voice number\n // Formatting metrics\n this.notePx = 0; // width of widest note in this context\n this.glyphPx = 0; // width of glyph (note head)\n this.leftDisplacedHeadPx = 0; // Extra left pixels for displaced notes\n this.rightDisplacedHeadPx = 0; // Extra right pixels for displaced notes\n this.modLeftPx = 0; // Left modifier pixels\n this.modRightPx = 0; // Right modifier pixels\n this.totalLeftPx = 0; // Total left pixels\n this.totalRightPx = 0; // Total right pixels\n this.tContexts = []; // Parent array of tick contexts\n this.width = 0;\n this.formatterMetrics = {\n // The freedom of a tickcontext is the distance it can move without colliding\n // with neighboring elements. A formatter can set these values during its\n // formatting pass, which a different formatter can then use to fine tune.\n freedom: { left: 0, right: 0 },\n };\n }\n static getNextContext(tContext) {\n const contexts = tContext.tContexts;\n const index = contexts.indexOf(tContext);\n if (index + 1 < contexts.length)\n return contexts[index + 1];\n }\n getTickID() {\n return this.tickID;\n }\n getX() {\n return this.x;\n }\n setX(x) {\n this.x = x;\n this.xBase = x;\n this.xOffset = 0;\n return this;\n }\n getXBase() {\n return this.xBase;\n } // use of xBase and xOffset is optional, avoids offset creep\n setXBase(xBase) {\n this.xBase = xBase;\n this.x = xBase + this.xOffset;\n }\n getXOffset() {\n return this.xOffset;\n }\n setXOffset(xOffset) {\n this.xOffset = xOffset;\n this.x = this.xBase + xOffset;\n }\n getWidth() {\n return this.width + this.padding * 2;\n }\n setPadding(padding) {\n this.padding = padding;\n return this;\n }\n getMaxTicks() {\n return this.maxTicks;\n }\n getMinTicks() {\n return this.minTicks;\n }\n getMaxTickable() {\n return this.maxTickable;\n }\n getMinTickable() {\n return this.minTickable;\n }\n getTickables() {\n return this.tickables;\n }\n /**\n * Introduced on 2020-04-17 as getTickablesForVoice(voiceIndex).\n * https://github.com/0xfe/vexflow/blame/dc97b0cc5bb93171c0038638c34362dc958222ca/src/tickcontext.js#L63\n * Renamed on 2021-08-05 to getTickableForVoice(voiceIndex). Method renamed to singular, since it returns one Tickable.\n */\n getTickableForVoice(voiceIndex) {\n return this.tickablesByVoice[voiceIndex];\n }\n getTickablesByVoice() {\n return this.tickablesByVoice;\n }\n getCenterAlignedTickables() {\n return this.tickables.filter((tickable) => tickable.isCenterAligned());\n }\n /** Gets widths context, note and left/right modifiers for formatting. */\n getMetrics() {\n const { width, glyphPx, notePx, leftDisplacedHeadPx, rightDisplacedHeadPx, modLeftPx, modRightPx, totalLeftPx, totalRightPx, } = this;\n return {\n width,\n glyphPx,\n notePx,\n leftDisplacedHeadPx,\n rightDisplacedHeadPx,\n modLeftPx,\n modRightPx,\n totalLeftPx,\n totalRightPx,\n };\n }\n getCurrentTick() {\n return this.currentTick;\n }\n setCurrentTick(tick) {\n this.currentTick = tick;\n this.preFormatted = false;\n }\n addTickable(tickable, voiceIndex) {\n if (!tickable) {\n throw new RuntimeError('BadArgument', 'Invalid tickable added.');\n }\n if (!tickable.shouldIgnoreTicks()) {\n const ticks = tickable.getTicks();\n if (ticks.greaterThan(this.maxTicks)) {\n this.maxTicks = ticks.clone();\n this.maxTickable = tickable;\n }\n if (this.minTicks == null) {\n this.minTicks = ticks.clone();\n this.minTickable = tickable;\n }\n else if (ticks.lessThan(this.minTicks)) {\n this.minTicks = ticks.clone();\n this.minTickable = tickable;\n }\n }\n tickable.setTickContext(this);\n this.tickables.push(tickable);\n this.tickablesByVoice[voiceIndex || 0] = tickable;\n this.preFormatted = false;\n return this;\n }\n preFormat() {\n if (this.preFormatted)\n return this;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n tickable.preFormat();\n const metrics = tickable.getMetrics();\n // Maintain max displaced head pixels from all tickables in the context\n this.leftDisplacedHeadPx = Math.max(this.leftDisplacedHeadPx, metrics.leftDisplacedHeadPx);\n this.rightDisplacedHeadPx = Math.max(this.rightDisplacedHeadPx, metrics.rightDisplacedHeadPx);\n // Maintain the widest note for all tickables in the context\n this.notePx = Math.max(this.notePx, metrics.notePx);\n // Maintain the widest note head\n this.glyphPx = Math.max(this.glyphPx, metrics.glyphWidth || 0);\n // Total modifier shift\n this.modLeftPx = Math.max(this.modLeftPx, metrics.modLeftPx);\n this.modRightPx = Math.max(this.modRightPx, metrics.modRightPx);\n // Total shift\n this.totalLeftPx = Math.max(this.totalLeftPx, metrics.modLeftPx + metrics.leftDisplacedHeadPx);\n this.totalRightPx = Math.max(this.totalRightPx, metrics.modRightPx + metrics.rightDisplacedHeadPx);\n // Recalculate the tick context total width\n this.width = this.notePx + this.totalLeftPx + this.totalRightPx;\n }\n return this;\n }\n postFormat() {\n if (this.postFormatted)\n return this;\n this.postFormatted = true;\n return this;\n }\n getFormatterMetrics() {\n return this.formatterMetrics;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Renders time signatures glyphs for staffs\n// This class is used by TimeSignature to render the associated glyphs\nimport { Glyph } from './glyph';\nimport { defined } from './util';\nexport class TimeSignatureGlyph extends Glyph {\n constructor(timeSignature, topDigits, botDigits, code, point, options) {\n var _a;\n super(code, point, options);\n this.timeSignature = timeSignature;\n this.topGlyphs = [];\n this.botGlyphs = [];\n let topWidth = 0;\n for (let i = 0; i < topDigits.length; ++i) {\n let timeSigType = topDigits[i];\n switch (topDigits[i]) {\n case '-':\n timeSigType = 'Minus';\n break;\n case '+':\n timeSigType = botDigits.length > 0 ? 'PlusSmall' : 'Plus';\n break;\n case '(':\n timeSigType = botDigits.length > 0 ? 'ParensLeftSmall' : 'ParensLeft';\n break;\n case ')':\n timeSigType = botDigits.length > 0 ? 'ParensRightSmall' : 'ParensRight';\n break;\n }\n const topGlyph = new Glyph('timeSig' + timeSigType, this.timeSignature.point);\n this.topGlyphs.push(topGlyph);\n topWidth += (_a = topGlyph.getMetrics().width) !== null && _a !== void 0 ? _a : 0;\n }\n let botWidth = 0;\n for (let i = 0; i < botDigits.length; ++i) {\n let timeSigType = botDigits[i];\n switch (botDigits[i]) {\n case '+':\n timeSigType = 'PlusSmall';\n break;\n case '(':\n timeSigType = 'ParensLeftSmall';\n break;\n case ')':\n timeSigType = 'ParensRightSmall';\n break;\n }\n const botGlyph = new Glyph('timeSig' + timeSigType, this.timeSignature.point);\n this.botGlyphs.push(botGlyph);\n botWidth += defined(botGlyph.getMetrics().width);\n }\n this.width = Math.max(topWidth, botWidth);\n this.xMin = this.getMetrics().x_min;\n this.topStartX = (this.width - topWidth) / 2.0;\n this.botStartX = (this.width - botWidth) / 2.0;\n this.reset();\n }\n getMetrics() {\n return {\n x_min: this.xMin,\n x_max: this.xMin + this.width,\n width: this.width,\n };\n }\n renderToStave(x) {\n const stave = this.checkStave();\n const ctx = this.checkContext();\n let start_x = x + this.topStartX;\n let y = 0;\n if (this.botGlyphs.length > 0)\n y = stave.getYForLine(this.timeSignature.topLine);\n else\n y = (stave.getYForLine(this.timeSignature.topLine) + stave.getYForLine(this.timeSignature.bottomLine)) / 2;\n for (let i = 0; i < this.topGlyphs.length; ++i) {\n const glyph = this.topGlyphs[i];\n Glyph.renderOutline(ctx, glyph.getMetrics().outline, this.scale, start_x + this.x_shift, y);\n start_x += defined(glyph.getMetrics().width);\n }\n start_x = x + this.botStartX;\n y = stave.getYForLine(this.timeSignature.bottomLine);\n for (let i = 0; i < this.botGlyphs.length; ++i) {\n const glyph = this.botGlyphs[i];\n this.timeSignature.placeGlyphOnLine(glyph, stave, 0);\n Glyph.renderOutline(ctx, glyph.getMetrics().outline, this.scale, start_x + glyph.getMetrics().x_shift, y);\n start_x += defined(glyph.getMetrics().width);\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Implements time signatures glyphs for staffs\n// See tables.js for the internal time signatures\n// representation\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { TimeSignatureGlyph } from './timesigglyph';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nconst assertIsValidTimeSig = (timeSpec) => {\n const numbers = timeSpec.split('/');\n if (numbers.length !== 2 && numbers[0] !== '+' && numbers[0] !== '-') {\n throw new RuntimeError('BadTimeSignature', `Invalid time spec: ${timeSpec}. Must be in the form \"/\"`);\n }\n numbers.forEach((number) => {\n // Characters consisting in number 0..9, '+', '-', '(' or ')'\n if (/^[0-9+\\-()]+$/.test(number) == false) {\n throw new RuntimeError('BadTimeSignature', `Invalid time spec: ${timeSpec}. Must contain valid signatures.`);\n }\n });\n};\nexport class TimeSignature extends StaveModifier {\n constructor(timeSpec = '4/4', customPadding = 15, validate_args = true) {\n super();\n this.validate_args = validate_args;\n const padding = customPadding;\n const musicFont = Tables.currentMusicFont();\n this.point = musicFont.lookupMetric('digits.point');\n const fontLineShift = musicFont.lookupMetric('digits.shiftLine', 0);\n this.topLine = 2 + fontLineShift;\n this.bottomLine = 4 + fontLineShift;\n this.setPosition(StaveModifierPosition.BEGIN);\n this.info = this.parseTimeSpec(timeSpec);\n this.setWidth(defined(this.info.glyph.getMetrics().width));\n this.setPadding(padding);\n }\n static get CATEGORY() {\n return Category.TimeSignature;\n }\n static get glyphs() {\n return {\n C: {\n code: 'timeSigCommon',\n point: 40,\n line: 2,\n },\n 'C|': {\n code: 'timeSigCutCommon',\n point: 40,\n line: 2,\n },\n };\n }\n parseTimeSpec(timeSpec) {\n var _a, _b;\n if (timeSpec === 'C' || timeSpec === 'C|') {\n const { line, code, point } = TimeSignature.glyphs[timeSpec];\n return {\n line,\n num: false,\n glyph: new Glyph(code, point),\n };\n }\n if (this.validate_args) {\n assertIsValidTimeSig(timeSpec);\n }\n const parts = timeSpec.split('/');\n return {\n num: true,\n glyph: this.makeTimeSignatureGlyph((_a = parts[0]) !== null && _a !== void 0 ? _a : '', (_b = parts[1]) !== null && _b !== void 0 ? _b : ''),\n };\n }\n makeTimeSignatureGlyph(topDigits, botDigits) {\n return new TimeSignatureGlyph(this, topDigits, botDigits, 'timeSig0', this.point);\n }\n getInfo() {\n return this.info;\n }\n setTimeSig(timeSpec) {\n this.info = this.parseTimeSpec(timeSpec);\n return this;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('timesignature', this.getAttribute('id'));\n this.info.glyph.setStave(stave);\n this.info.glyph.setContext(ctx);\n this.placeGlyphOnLine(this.info.glyph, stave, this.info.line);\n this.info.glyph.renderToStave(this.x);\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\nimport { Note } from './note';\nimport { TimeSignature } from './timesignature';\nimport { Category } from './typeguard';\nexport class TimeSigNote extends Note {\n constructor(timeSpec, customPadding) {\n super({ duration: 'b' });\n const timeSignature = new TimeSignature(timeSpec, customPadding);\n this.timeSigInfo = timeSignature.getInfo();\n this.setWidth(this.timeSigInfo.glyph.getMetrics().width);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.TimeSigNote;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = this.checkContext();\n this.setRendered();\n if (!this.timeSigInfo.glyph.getContext()) {\n this.timeSigInfo.glyph.setContext(ctx);\n }\n this.timeSigInfo.glyph.setStave(stave);\n this.timeSigInfo.glyph.setYShift(stave.getYForLine(2) - stave.getYForGlyphs());\n this.timeSigInfo.glyph.renderToStave(this.getAbsoluteX());\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Mike Corrigan \n// MIT License\nimport { Glyph } from './glyph';\nimport { GraceNote } from './gracenote';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isGraceNote } from './typeguard';\n/** Tremolo implements tremolo notation. */\nexport class Tremolo extends Modifier {\n /**\n * @param num number of bars\n */\n constructor(num) {\n super();\n this.num = num;\n this.position = Modifier.Position.CENTER;\n this.code = 'tremolo1';\n // big strokes scales initialised to 1 (no scale)\n this.y_spacing_scale = 1;\n this.extra_stroke_scale = 1;\n }\n static get CATEGORY() {\n return Category.Tremolo;\n }\n /** Draw the tremolo on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stemDirection = note.getStemDirection();\n const start = note.getModifierStartXY(this.position, this.index);\n let x = start.x;\n const gn = isGraceNote(note);\n const scale = gn ? GraceNote.SCALE : 1;\n const category = `tremolo.${gn ? 'grace' : 'default'}`;\n const musicFont = Tables.currentMusicFont();\n let y_spacing = musicFont.lookupMetric(`${category}.spacing`) * stemDirection;\n // add y_spacing_scale for big strokes (#1258)\n y_spacing *= this.y_spacing_scale;\n const height = this.num * y_spacing;\n let y = note.getStemExtents().baseY - height;\n if (stemDirection < 0) {\n y += musicFont.lookupMetric(`${category}.offsetYStemDown`) * scale;\n }\n else {\n y += musicFont.lookupMetric(`${category}.offsetYStemUp`) * scale;\n }\n const fontScale = musicFont.lookupMetric(`${category}.point`);\n x += musicFont.lookupMetric(`${category}.offsetXStem${stemDirection === Stem.UP ? 'Up' : 'Down'}`);\n for (let i = 0; i < this.num; ++i) {\n Glyph.renderGlyph(ctx, x, y, fontScale, this.code, { category, scale: this.extra_stroke_scale });\n y += y_spacing;\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Tables } from './tables';\nimport { RuntimeError } from './util';\n/** `Tuning` implements varies types of tunings for tablature. */\nexport class Tuning {\n /**\n * Constructor.\n * @param tuningString tuning name (eg. 'dagdad') or comma separated note strings\n */\n constructor(tuningString = 'E/5,B/4,G/4,D/4,A/3,E/3,B/2,E/2') {\n this.tuningValues = [];\n // Default to standard tuning.\n this.setTuning(tuningString);\n }\n static get names() {\n return {\n standard: 'E/5,B/4,G/4,D/4,A/3,E/3',\n dagdad: 'D/5,A/4,G/4,D/4,A/3,D/3',\n dropd: 'E/5,B/4,G/4,D/4,A/3,D/3',\n eb: 'Eb/5,Bb/4,Gb/4,Db/4,Ab/3,Db/3',\n standardBanjo: 'D/5,B/4,G/4,D/4,G/5',\n };\n }\n /** Return the note number associated to the note string. */\n noteToInteger(noteString) {\n return Tables.keyProperties(noteString).int_value;\n }\n /**\n * Set tuning identified by tuning name (eg. 'dagdad')\n * @param tuningString tuning name (eg. 'dagdad') or comma separated note strings\n */\n setTuning(tuningString) {\n if (Tuning.names[tuningString]) {\n tuningString = Tuning.names[tuningString];\n }\n this.tuningValues = [];\n const keys = tuningString.split(/\\s*,\\s*/);\n if (keys.length === 0) {\n throw new RuntimeError('BadArguments', `Invalid tuning string: ${tuningString}`);\n }\n for (let i = 0; i < keys.length; ++i) {\n this.tuningValues[i] = this.noteToInteger(keys[i]);\n }\n }\n /** Return the note number associated with a tablature string. */\n getValueForString(stringNum) {\n const s = Number(stringNum);\n if (s < 1 || s > this.tuningValues.length) {\n throw new RuntimeError('BadArguments', `String number must be between 1 and ${this.tuningValues.length}:${stringNum}`);\n }\n return this.tuningValues[s - 1];\n }\n /** Return the note number associated with a tablature string and fret. */\n getValueForFret(fretNum, stringNum) {\n const stringValue = this.getValueForString(stringNum);\n const f = Number(fretNum);\n if (f < 0) {\n throw new RuntimeError('BadArguments', `Fret number must be 0 or higher: ${fretNum}`);\n }\n return stringValue + f;\n }\n /** Return the note string associated with tablature string and fret. */\n getNoteForFret(fretNum, stringNum) {\n const noteValue = this.getValueForFret(fretNum, stringNum);\n const octave = Math.floor(noteValue / 12);\n const value = noteValue % 12;\n return `${Tables.integerToNote(value)}/${octave}`;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n/**\n * ## Description\n *\n * Create a new tuplet from the specified notes. The notes must\n * be part of the same voice. If they are of different rhythmic\n * values, then options.num_notes must be set.\n *\n * @constructor\n * @param {Array.} A set of notes: staveNotes,\n * notes, etc... any class that inherits stemmableNote at some\n * point in its prototype chain.\n * @param options: object {\n *\n * num_notes: fit this many notes into...\n * notes_occupied: ...the space of this many notes\n *\n * Together, these two properties make up the tuplet ratio\n * in the form of num_notes : notes_occupied.\n * num_notes defaults to the number of notes passed in, so\n * it is important that if you omit this property, all of\n * the notes passed should be of the same note value.\n * notes_occupied defaults to 2 -- so you should almost\n * certainly pass this parameter for anything other than\n * a basic triplet.\n *\n * location:\n * default 1, which is above the notes: ┌─── 3 ───┐\n * -1 is below the notes └─── 3 ───┘\n *\n * bracketed: boolean, draw a bracket around the tuplet number\n * when true: ┌─── 3 ───┐ when false: 3\n * defaults to true if notes are not beamed, false otherwise\n *\n * ratioed: boolean\n * when true: ┌─── 7:8 ───┐, when false: ┌─── 7 ───┐\n * defaults to true if the difference between num_notes and\n * notes_occupied is greater than 1.\n *\n * y_offset: int, default 0\n * manually offset a tuplet, for instance to avoid collisions\n * with articulations, etc...\n * }\n */\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { Glyph } from './glyph';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var TupletLocation;\n(function (TupletLocation) {\n TupletLocation[TupletLocation[\"BOTTOM\"] = -1] = \"BOTTOM\";\n TupletLocation[TupletLocation[\"TOP\"] = 1] = \"TOP\";\n})(TupletLocation || (TupletLocation = {}));\nexport class Tuplet extends Element {\n constructor(notes, options = {}) {\n super();\n this.numerator_glyphs = [];\n this.denom_glyphs = [];\n if (!notes || !notes.length) {\n throw new RuntimeError('BadArguments', 'No notes provided for tuplet.');\n }\n this.options = options;\n this.notes = notes;\n this.num_notes = this.options.num_notes != undefined ? this.options.num_notes : notes.length;\n // We accept beats_occupied, but warn that it's deprecated:\n // the preferred property name is now notes_occupied.\n if (this.options.beats_occupied) {\n this.beatsOccupiedDeprecationWarning();\n }\n this.notes_occupied = this.options.notes_occupied || this.options.beats_occupied || 2;\n if (this.options.bracketed != undefined) {\n this.bracketed = this.options.bracketed;\n }\n else {\n this.bracketed = notes.some((note) => !note.hasBeam());\n }\n this.ratioed =\n this.options.ratioed != undefined ? this.options.ratioed : Math.abs(this.notes_occupied - this.num_notes) > 1;\n this.point = Tables.currentMusicFont().lookupMetric('digits.tupletPoint');\n this.y_pos = 16;\n this.x_pos = 100;\n this.width = 200;\n this.setTupletLocation(this.options.location || Tuplet.LOCATION_TOP);\n Formatter.AlignRestsToNotes(notes, true, true);\n this.resolveGlyphs();\n this.attach();\n }\n static get CATEGORY() {\n return Category.Tuplet;\n }\n static get LOCATION_TOP() {\n return TupletLocation.TOP;\n }\n static get LOCATION_BOTTOM() {\n return TupletLocation.BOTTOM;\n }\n static get NESTING_OFFSET() {\n return 15;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.tuplet;\n }\n attach() {\n for (let i = 0; i < this.notes.length; i++) {\n const note = this.notes[i];\n note.setTuplet(this);\n }\n }\n detach() {\n for (let i = 0; i < this.notes.length; i++) {\n const note = this.notes[i];\n note.resetTuplet(this);\n }\n }\n /**\n * Set whether or not the bracket is drawn.\n */\n setBracketed(bracketed) {\n this.bracketed = !!bracketed;\n return this;\n }\n /**\n * Set whether or not the ratio is shown.\n */\n setRatioed(ratioed) {\n this.ratioed = !!ratioed;\n return this;\n }\n /**\n * Set the tuplet indicator to be displayed either on the top or bottom of the stave.\n */\n setTupletLocation(location) {\n if (location !== Tuplet.LOCATION_TOP && location !== Tuplet.LOCATION_BOTTOM) {\n // eslint-disable-next-line\n console.warn(`Invalid tuplet location [${location}]. Using Tuplet.LOCATION_TOP.`);\n location = Tuplet.LOCATION_TOP;\n }\n this.location = location;\n return this;\n }\n getNotes() {\n return this.notes;\n }\n getNoteCount() {\n return this.num_notes;\n }\n beatsOccupiedDeprecationWarning() {\n // eslint-disable-next-line\n console.warn('beats_occupied has been deprecated as an option for tuplets. Please use notes_occupied instead.', 'Calls to getBeatsOccupied / setBeatsOccupied should now be routed to getNotesOccupied / setNotesOccupied.', 'The old methods will be removed in VexFlow 5.0.');\n }\n getBeatsOccupied() {\n this.beatsOccupiedDeprecationWarning();\n return this.getNotesOccupied();\n }\n setBeatsOccupied(beats) {\n this.beatsOccupiedDeprecationWarning();\n return this.setNotesOccupied(beats);\n }\n getNotesOccupied() {\n return this.notes_occupied;\n }\n setNotesOccupied(notes) {\n this.detach();\n this.notes_occupied = notes;\n this.resolveGlyphs();\n this.attach();\n }\n resolveGlyphs() {\n this.numerator_glyphs = [];\n let n = this.num_notes;\n while (n >= 1) {\n this.numerator_glyphs.unshift(new Glyph('timeSig' + (n % 10), this.point));\n n = parseInt((n / 10).toString(), 10);\n }\n this.denom_glyphs = [];\n n = this.notes_occupied;\n while (n >= 1) {\n this.denom_glyphs.unshift(new Glyph('timeSig' + (n % 10), this.point));\n n = parseInt((n / 10).toString(), 10);\n }\n }\n // determine how many tuplets are nested within this tuplet\n // on the same side (above/below), to calculate a y\n // offset for this tuplet:\n getNestedTupletCount() {\n const location = this.location;\n const first_note = this.notes[0];\n let maxTupletCount = countTuplets(first_note, location);\n let minTupletCount = countTuplets(first_note, location);\n // Count the tuplets that are on the same side (above/below)\n // as this tuplet:\n function countTuplets(note, location) {\n return note.getTupletStack().filter((tuplet) => tuplet.location === location).length;\n }\n this.notes.forEach((note) => {\n const tupletCount = countTuplets(note, location);\n maxTupletCount = tupletCount > maxTupletCount ? tupletCount : maxTupletCount;\n minTupletCount = tupletCount < minTupletCount ? tupletCount : minTupletCount;\n });\n return maxTupletCount - minTupletCount;\n }\n // determine the y position of the tuplet:\n getYPosition() {\n // offset the tuplet for any nested tuplets between\n // it and the notes:\n const nested_tuplet_y_offset = this.getNestedTupletCount() * Tuplet.NESTING_OFFSET * -this.location;\n // offset the tuplet for any manual y_offset:\n const y_offset = this.options.y_offset || 0;\n // now iterate through the notes and find our highest\n // or lowest locations, to form a base y_pos\n const first_note = this.notes[0];\n let y_pos;\n if (this.location === Tuplet.LOCATION_TOP) {\n y_pos = first_note.checkStave().getYForLine(0) - Tuplet.metrics.topModifierOffset;\n // check modifiers above note to see if they will collide with tuplet beam\n for (let i = 0; i < this.notes.length; ++i) {\n const note = this.notes[i];\n let modLines = 0;\n const mc = note.getModifierContext();\n if (mc) {\n modLines = Math.max(modLines, mc.getState().top_text_line);\n }\n const modY = note.getYForTopText(modLines) - Tuplet.metrics.noteHeadOffset;\n if (note.hasStem() || note.isRest()) {\n const top_y = note.getStemDirection() === Stem.UP\n ? note.getStemExtents().topY - Tuplet.metrics.stemOffset\n : note.getStemExtents().baseY - Tuplet.metrics.noteHeadOffset;\n y_pos = Math.min(top_y, y_pos);\n if (modLines > 0) {\n y_pos = Math.min(modY, y_pos);\n }\n }\n }\n }\n else {\n let lineCheck = Tuplet.metrics.bottomLine; // tuplet default on line 4\n // check modifiers below note to see if they will collide with tuplet beam\n this.notes.forEach((nn) => {\n const mc = nn.getModifierContext();\n if (mc) {\n lineCheck = Math.max(lineCheck, mc.getState().text_line + 1);\n }\n });\n y_pos = first_note.checkStave().getYForLine(lineCheck) + Tuplet.metrics.noteHeadOffset;\n for (let i = 0; i < this.notes.length; ++i) {\n if (this.notes[i].hasStem() || this.notes[i].isRest()) {\n const bottom_y = this.notes[i].getStemDirection() === Stem.UP\n ? this.notes[i].getStemExtents().baseY + Tuplet.metrics.noteHeadOffset\n : this.notes[i].getStemExtents().topY + Tuplet.metrics.stemOffset;\n if (bottom_y > y_pos) {\n y_pos = bottom_y;\n }\n }\n }\n }\n return y_pos + nested_tuplet_y_offset + y_offset;\n }\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n // determine x value of left bound of tuplet\n const first_note = this.notes[0];\n const last_note = this.notes[this.notes.length - 1];\n if (!this.bracketed) {\n this.x_pos = first_note.getStemX();\n this.width = last_note.getStemX() - this.x_pos;\n }\n else {\n this.x_pos = first_note.getTieLeftX() - 5;\n this.width = last_note.getTieRightX() - this.x_pos + 5;\n }\n // determine y value for tuplet\n this.y_pos = this.getYPosition();\n const addGlyphWidth = (width, glyph) => width + defined(glyph.getMetrics().width);\n // calculate total width of tuplet notation\n let width = this.numerator_glyphs.reduce(addGlyphWidth, 0);\n if (this.ratioed) {\n width = this.denom_glyphs.reduce(addGlyphWidth, width);\n width += this.point * 0.32;\n }\n const notation_center_x = this.x_pos + this.width / 2;\n const notation_start_x = notation_center_x - width / 2;\n // draw bracket if the tuplet is not beamed\n if (this.bracketed) {\n const line_width = this.width / 2 - width / 2 - 5;\n // only draw the bracket if it has positive length\n if (line_width > 0) {\n ctx.fillRect(this.x_pos, this.y_pos, line_width, 1);\n ctx.fillRect(this.x_pos + this.width / 2 + width / 2 + 5, this.y_pos, line_width, 1);\n ctx.fillRect(this.x_pos, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM ? 1 : 0), 1, this.location * 10);\n ctx.fillRect(this.x_pos + this.width, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM ? 1 : 0), 1, this.location * 10);\n }\n }\n // draw numerator glyphs\n const shiftY = Tables.currentMusicFont().lookupMetric('digits.shiftY', 0);\n let x_offset = 0;\n this.numerator_glyphs.forEach((glyph) => {\n glyph.render(ctx, notation_start_x + x_offset, this.y_pos + this.point / 3 - 2 + shiftY);\n x_offset += defined(glyph.getMetrics().width);\n });\n // display colon and denominator if the ratio is to be shown\n if (this.ratioed) {\n const colon_x = notation_start_x + x_offset + this.point * 0.16;\n const colon_radius = this.point * 0.06;\n ctx.beginPath();\n ctx.arc(colon_x, this.y_pos - this.point * 0.08, colon_radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n ctx.beginPath();\n ctx.arc(colon_x, this.y_pos + this.point * 0.12, colon_radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n x_offset += this.point * 0.32;\n this.denom_glyphs.forEach((glyph) => {\n glyph.render(ctx, notation_start_x + x_offset, this.y_pos + this.point / 3 - 2 + shiftY);\n x_offset += defined(glyph.getMetrics().width);\n });\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Ron B. Yeh\n// MIT License\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Use instead of `instanceof` as a more flexible type guard.\n * @param obj check if this object's CATEGORY matches the provided category.\n * @param category a string representing a category of VexFlow objects.\n * @param checkAncestors defaults to `true`, so we walk up the prototype chain to look for a matching `CATEGORY`.\n * If `false`, we do not check the superclass or other ancestors.\n * @returns true if `obj` has a static `CATEGORY` property that matches `category`.\n */\nexport function isCategory(obj, category, checkAncestors = true) {\n // obj is undefined, a number, a primitive string, or null.\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n // `obj.constructor` is a reference to the constructor function that created the `obj` instance.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor\n let constructorFcn = obj.constructor;\n // Check if the object's static .CATEGORY matches the provided category.\n if (checkAncestors) {\n // Walk up the prototype chain to look for a matching obj.constructor.CATEGORY.\n while (obj !== null) {\n constructorFcn = obj.constructor;\n if ('CATEGORY' in constructorFcn && constructorFcn.CATEGORY === category) {\n return true;\n }\n obj = Object.getPrototypeOf(obj);\n }\n return false;\n }\n else {\n // Do not walk up the prototype chain. Just check this particular object's static .CATEGORY string.\n return 'CATEGORY' in constructorFcn && constructorFcn.CATEGORY === category;\n }\n}\nexport const isAccidental = (obj) => isCategory(obj, Category.Accidental);\nexport const isAnnotation = (obj) => isCategory(obj, Category.Annotation);\nexport const isBarline = (obj) => isCategory(obj, Category.Barline);\nexport const isDot = (obj) => isCategory(obj, Category.Dot);\nexport const isGraceNote = (obj) => isCategory(obj, Category.GraceNote);\nexport const isGraceNoteGroup = (obj) => isCategory(obj, Category.GraceNoteGroup);\nexport const isNote = (obj) => isCategory(obj, Category.Note);\nexport const isRenderContext = (obj) => isCategory(obj, Category.RenderContext);\nexport const isStaveNote = (obj) => isCategory(obj, Category.StaveNote);\nexport const isStemmableNote = (obj) => isCategory(obj, Category.StemmableNote);\nexport const isTabNote = (obj) => isCategory(obj, Category.TabNote);\n// 'const' enums are erased by the TypeScript compiler. The string values are inlined at all the use sites.\n// See: https://www.typescriptlang.org/docs/handbook/enums.html#const-enums\nexport var Category;\n(function (Category) {\n Category[\"Accidental\"] = \"Accidental\";\n Category[\"Annotation\"] = \"Annotation\";\n Category[\"Articulation\"] = \"Articulation\";\n Category[\"Barline\"] = \"Barline\";\n Category[\"BarNote\"] = \"BarNote\";\n Category[\"Beam\"] = \"Beam\";\n Category[\"Bend\"] = \"Bend\";\n Category[\"ChordSymbol\"] = \"ChordSymbol\";\n Category[\"Clef\"] = \"Clef\";\n Category[\"ClefNote\"] = \"ClefNote\";\n Category[\"Crescendo\"] = \"Crescendo\";\n Category[\"Curve\"] = \"Curve\";\n Category[\"Dot\"] = \"Dot\";\n Category[\"Element\"] = \"Element\";\n Category[\"Fraction\"] = \"Fraction\";\n Category[\"FretHandFinger\"] = \"FretHandFinger\";\n Category[\"GhostNote\"] = \"GhostNote\";\n Category[\"Glyph\"] = \"Glyph\";\n Category[\"GlyphNote\"] = \"GlyphNote\";\n Category[\"GraceNote\"] = \"GraceNote\";\n Category[\"GraceNoteGroup\"] = \"GraceNoteGroup\";\n Category[\"GraceTabNote\"] = \"GraceTabNote\";\n Category[\"KeySignature\"] = \"KeySignature\";\n Category[\"KeySigNote\"] = \"KeySigNote\";\n Category[\"Modifier\"] = \"Modifier\";\n Category[\"MultiMeasureRest\"] = \"MultiMeasureRest\";\n Category[\"Note\"] = \"Note\";\n Category[\"NoteHead\"] = \"NoteHead\";\n Category[\"NoteSubGroup\"] = \"NoteSubGroup\";\n Category[\"Ornament\"] = \"Ornament\";\n Category[\"Parenthesis\"] = \"Parenthesis\";\n Category[\"PedalMarking\"] = \"PedalMarking\";\n Category[\"RenderContext\"] = \"RenderContext\";\n Category[\"RepeatNote\"] = \"RepeatNote\";\n Category[\"Repetition\"] = \"Repetition\";\n Category[\"Stave\"] = \"Stave\";\n Category[\"StaveConnector\"] = \"StaveConnector\";\n Category[\"StaveHairpin\"] = \"StaveHairpin\";\n Category[\"StaveLine\"] = \"StaveLine\";\n Category[\"StaveModifier\"] = \"StaveModifier\";\n Category[\"StaveNote\"] = \"StaveNote\";\n Category[\"StaveSection\"] = \"StaveSection\";\n Category[\"StaveTempo\"] = \"StaveTempo\";\n Category[\"StaveText\"] = \"StaveText\";\n Category[\"StaveTie\"] = \"StaveTie\";\n Category[\"Stem\"] = \"Stem\";\n Category[\"StemmableNote\"] = \"StemmableNote\";\n Category[\"StringNumber\"] = \"StringNumber\";\n Category[\"Stroke\"] = \"Stroke\";\n Category[\"System\"] = \"System\";\n Category[\"TabNote\"] = \"TabNote\";\n Category[\"TabSlide\"] = \"TabSlide\";\n Category[\"TabStave\"] = \"TabStave\";\n Category[\"TabTie\"] = \"TabTie\";\n Category[\"TextBracket\"] = \"TextBracket\";\n Category[\"TextDynamics\"] = \"TextDynamics\";\n Category[\"TextNote\"] = \"TextNote\";\n Category[\"Tickable\"] = \"Tickable\";\n Category[\"TimeSignature\"] = \"TimeSignature\";\n Category[\"TimeSigNote\"] = \"TimeSigNote\";\n Category[\"Tremolo\"] = \"Tremolo\";\n Category[\"Tuplet\"] = \"Tuplet\";\n Category[\"Vibrato\"] = \"Vibrato\";\n Category[\"VibratoBracket\"] = \"VibratoBracket\";\n Category[\"Voice\"] = \"Voice\";\n Category[\"Volta\"] = \"Volta\";\n})(Category || (Category = {}));\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// Note: Keep this module free of imports to reduce the chance of circular dependencies.\n/** `RuntimeError` will be thrown by VexFlow classes in case of error. */\nexport class RuntimeError extends Error {\n constructor(code, message = '') {\n super('[RuntimeError] ' + code + ': ' + message);\n this.code = code;\n }\n}\n/** VexFlow can be used outside of the browser (e.g., Node) where `window` may not be defined. */\n// eslint-disable-next-line\nexport function globalObject() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return Function('return this')();\n}\n/**\n * Check that `x` is of type `T` and not `undefined`.\n * If `x` is `undefined`, throw a RuntimeError with the optionally provided error code and message.\n */\nexport function defined(x, code = 'undefined', message = '') {\n if (x === undefined) {\n throw new RuntimeError(code, message);\n }\n return x;\n}\n/** Default log function sends all arguments to console. */\n// eslint-disable-next-line\nexport function log(block, ...args) {\n if (!args)\n return;\n const line = Array.prototype.slice.call(args).join(' ');\n globalObject().console.log(block + ': ' + line);\n}\n/** Dump warning to console. */\n// eslint-disable-next-line\nexport function warn(...args) {\n const line = args.join(' ');\n const err = new Error();\n globalObject().console.log('Warning: ', line, err.stack);\n}\n/** Round number to nearest fractional value (`.5`, `.25`, etc.) */\nfunction roundN(x, n) {\n return x % n >= n / 2 ? parseInt(`${x / n}`, 10) * n + n : parseInt(`${x / n}`, 10) * n;\n}\n/** Locate the mid point between stave lines. Returns a fractional line if a space. */\nexport function midLine(a, b) {\n let mid_line = b + (a - b) / 2;\n if (mid_line % 2 > 0) {\n mid_line = roundN(mid_line * 10, 5) / 10;\n }\n return mid_line;\n}\n/**\n * Used by various classes (e.g., SVGContext) to provide a\n * unique prefix to element names (or other keys in shared namespaces).\n */\nexport function prefix(text) {\n return `vf-${text}`;\n}\n/**\n * Convert an arbitrary angle in radians to the equivalent one in the range [0, pi).\n */\nexport function normalizeAngle(a) {\n a = a % (2 * Math.PI);\n if (a < 0) {\n a += 2 * Math.PI;\n }\n return a;\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Utility methods used by the rest of the VexFlow codebase.\nimport { Flow } from './flow';\nimport { log, RuntimeError } from './util';\nexport class Vex {\n // Users of `Vex.forEach(a, fn)` should use `Array.prototype.forEach()` instead.\n // static forEach(arr: T[], callbackFn: (value: T, index: number, array: T[]) => void) {\n // arr.forEach(callbackFn);\n // }\n /**\n * Take `arr` and return a new list consisting of the sorted, unique,\n * contents of arr. Does not modify `arr`.\n */\n // eslint-disable-next-line\n static sortAndUnique(arr, cmp, eq) {\n if (arr.length > 1) {\n const newArr = [];\n let last;\n arr.sort(cmp);\n for (let i = 0; i < arr.length; ++i) {\n if (i === 0 || !eq(arr[i], last)) {\n newArr.push(arr[i]);\n }\n last = arr[i];\n }\n return newArr;\n }\n else {\n return arr;\n }\n }\n /** Check if array `arr` contains `obj`. */\n // eslint-disable-next-line\n static contains(arr, obj) {\n let i = arr.length;\n while (i--) {\n if (arr[i] === obj) {\n return true;\n }\n }\n return false;\n }\n // Get the 2D Canvas context from DOM element `canvas_sel`.\n static getCanvasContext(canvasSelector) {\n if (!canvasSelector) {\n throw new RuntimeError('BadArgument', 'Invalid canvas selector: ' + canvasSelector);\n }\n const canvas = document.getElementById(canvasSelector);\n if (!(canvas && canvas.getContext)) {\n throw new RuntimeError('UnsupportedBrowserError', 'This browser does not support HTML5 Canvas');\n }\n return canvas.getContext('2d');\n }\n /** Benchmark. Run function `f` once and report time elapsed shifted by `s` milliseconds. */\n // eslint-disable-next-line\n static benchmark(s, f) {\n const start_time = new Date().getTime();\n f();\n const elapsed = new Date().getTime() - start_time;\n log(s, elapsed + 'ms');\n }\n // Get stack trace.\n static stackTrace() {\n const err = new Error();\n return err.stack;\n }\n}\nVex.Flow = Flow;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Bend } from './bend';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\n/** `Vibrato` implements diverse vibratos. */\nexport class Vibrato extends Modifier {\n constructor() {\n super();\n this.position = Modifier.Position.RIGHT;\n this.render_options = {\n harsh: false,\n vibrato_width: 20,\n wave_height: 6,\n wave_width: 4,\n wave_girth: 2,\n };\n this.setVibratoWidth(this.render_options.vibrato_width);\n }\n static get CATEGORY() {\n return Category.Vibrato;\n }\n /** Arrange vibratos inside a `ModifierContext`. */\n static format(vibratos, state, context) {\n if (!vibratos || vibratos.length === 0)\n return false;\n // Vibratos are always on top.\n let text_line = state.top_text_line;\n let width = 0;\n let shift = state.right_shift - 7;\n // If there's a bend, drop the text line\n const bends = context.getMembers(Bend.CATEGORY);\n if (bends && bends.length > 0) {\n const bendHeight = bends.map((bb) => bb.getTextHeight()).reduce((a, b) => (a > b ? a : b)) / Tables.STAVE_LINE_DISTANCE;\n text_line = text_line - (bendHeight + 1);\n }\n else {\n state.top_text_line += 1;\n }\n // Format Vibratos\n for (let i = 0; i < vibratos.length; ++i) {\n const vibrato = vibratos[i];\n vibrato.setXShift(shift);\n vibrato.setTextLine(text_line);\n width += vibrato.getWidth();\n shift += width;\n }\n state.right_shift += width;\n return true;\n }\n /** Set harsh vibrato. */\n setHarsh(harsh) {\n this.render_options.harsh = harsh;\n return this;\n }\n /** Set vibrato width in pixels. */\n setVibratoWidth(width) {\n this.render_options.vibrato_width = width;\n this.setWidth(width);\n return this;\n }\n /** Draw the vibrato on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(Modifier.Position.RIGHT, this.index);\n const vx = start.x + this.x_shift;\n const vy = note.getYForTopText(this.text_line) + 2;\n Vibrato.renderVibrato(ctx, vx, vy, this.render_options);\n }\n /**\n * Static rendering method that can be called from\n * other classes (e.g. VibratoBracket).\n */\n static renderVibrato(ctx, x, y, opts) {\n const { harsh, vibrato_width, wave_width, wave_girth, wave_height } = opts;\n const num_waves = vibrato_width / wave_width;\n ctx.beginPath();\n let i;\n if (harsh) {\n ctx.moveTo(x, y + wave_girth + 1);\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.lineTo(x + wave_width, y - wave_height / 2);\n x += wave_width;\n ctx.lineTo(x + wave_width, y + wave_height / 2);\n x += wave_width;\n }\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.lineTo(x - wave_width, y - wave_height / 2 + wave_girth + 1);\n x -= wave_width;\n ctx.lineTo(x - wave_width, y + wave_height / 2 + wave_girth + 1);\n x -= wave_width;\n }\n ctx.fill();\n }\n else {\n ctx.moveTo(x, y + wave_girth);\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.quadraticCurveTo(x + wave_width / 2, y - wave_height / 2, x + wave_width, y);\n x += wave_width;\n ctx.quadraticCurveTo(x + wave_width / 2, y + wave_height / 2, x + wave_width, y);\n x += wave_width;\n }\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.quadraticCurveTo(x - wave_width / 2, y + wave_height / 2 + wave_girth, x - wave_width, y + wave_girth);\n x -= wave_width;\n ctx.quadraticCurveTo(x - wave_width / 2, y - wave_height / 2 + wave_girth, x - wave_width, y + wave_girth);\n x -= wave_width;\n }\n ctx.fill();\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Balazs Forian-Szabo\n// MIT License\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { log } from './util';\nimport { Vibrato } from './vibrato';\n// eslint-disable-next-line\nfunction L(...args) {\n if (VibratoBracket.DEBUG)\n log('Vex.Flow.VibratoBracket', args);\n}\n/** `VibratoBracket` renders vibrato effect between two notes. */\nexport class VibratoBracket extends Element {\n /**\n * Either the stop or start note must be set, or both of them.\n * An undefined value for the start or stop note indicates that the vibrato\n * is drawn from the beginning or until the end of the stave accordingly.\n */\n constructor(bracket_data) {\n super();\n if (bracket_data.start)\n this.start = bracket_data.start;\n if (bracket_data.stop)\n this.stop = bracket_data.stop;\n this.line = 1;\n this.render_options = {\n harsh: false,\n wave_height: 6,\n wave_width: 4,\n wave_girth: 2,\n vibrato_width: 0,\n };\n }\n static get CATEGORY() {\n return Category.VibratoBracket;\n }\n /** Set line position of the vibrato bracket. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Set harsh vibrato bracket. */\n setHarsh(harsh) {\n this.render_options.harsh = harsh;\n return this;\n }\n /** Draw the vibrato bracket on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const y = (this.start && this.start.checkStave().getYForTopText(this.line)) ||\n (this.stop && this.stop.checkStave().getYForTopText(this.line)) ||\n 0;\n // If start note is not set then vibrato will be drawn\n // from the beginning of the stave\n const start_x = (this.start && this.start.getAbsoluteX()) || (this.stop && this.stop.checkStave().getTieStartX()) || 0;\n // If stop note is not set then vibrato will be drawn\n // until the end of the stave\n const stop_x = (this.stop && this.stop.getAbsoluteX() - this.stop.getWidth() - 5) ||\n (this.start && this.start.checkStave().getTieEndX() - 10) ||\n 0;\n this.render_options.vibrato_width = stop_x - start_x;\n L('Rendering VibratoBracket: start_x:', start_x, 'stop_x:', stop_x, 'y:', y);\n Vibrato.renderVibrato(ctx, start_x, y, this.render_options);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.VibratoBracket.DEBUG` to `true`. */\nVibratoBracket.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var VoiceMode;\n(function (VoiceMode) {\n VoiceMode[VoiceMode[\"STRICT\"] = 1] = \"STRICT\";\n VoiceMode[VoiceMode[\"SOFT\"] = 2] = \"SOFT\";\n VoiceMode[VoiceMode[\"FULL\"] = 3] = \"FULL\";\n})(VoiceMode || (VoiceMode = {}));\n/**\n * `Voice` is mainly a container object to group `Tickables` for formatting.\n */\nexport class Voice extends Element {\n constructor(time) {\n super();\n this.resolutionMultiplier = 1;\n this.mode = VoiceMode.STRICT;\n this.preFormatted = false;\n this.ticksUsed = new Fraction(0, 1);\n this.largestTickWidth = 0;\n this.tickables = [];\n this.options = {\n softmaxFactor: Tables.SOFTMAX_FACTOR,\n };\n // Convert the `time` string into a VoiceTime object if necessary.\n let voiceTime;\n if (typeof time === 'string') {\n // Time signature shortcut: \"4/4\", \"3/8\", etc.\n const match = time.match(/(\\d+)\\/(\\d+)/);\n if (match) {\n voiceTime = {\n num_beats: parseInt(match[1]),\n beat_value: parseInt(match[2]),\n };\n }\n }\n else {\n voiceTime = time;\n }\n // Default time signature is 4/4.\n this.time = Object.assign({ num_beats: 4, beat_value: 4, resolution: Tables.RESOLUTION }, voiceTime);\n // Recalculate total ticks.\n this.totalTicks = new Fraction(this.time.num_beats * (this.time.resolution / this.time.beat_value), 1);\n this.smallestTickCount = this.totalTicks.clone();\n }\n static get CATEGORY() {\n return Category.Voice;\n }\n /**\n * Modes allow the addition of ticks in three different ways:\n * - STRICT: This is the default. Ticks must fill the voice.\n * - SOFT: Ticks can be added without restrictions.\n * - FULL: Ticks do not need to fill the voice, but can't exceed the maximum tick length.\n */\n static get Mode() {\n return VoiceMode;\n }\n /** Get the total ticks in the voice. */\n getTotalTicks() {\n return this.totalTicks;\n }\n /** Get the total ticks used in the voice by all the tickables. */\n getTicksUsed() {\n return this.ticksUsed;\n }\n /** Get the largest width of all the tickables. */\n getLargestTickWidth() {\n return this.largestTickWidth;\n }\n /** Get the tick count for the shortest tickable */\n getSmallestTickCount() {\n return this.smallestTickCount;\n }\n /** Get the tickables in the voice. */\n getTickables() {\n return this.tickables;\n }\n /** Get the voice mode. */\n getMode() {\n return this.mode;\n }\n /**\n * Set the voice mode.\n * @param mode value from `VoiceMode`\n */\n setMode(mode) {\n this.mode = mode;\n return this;\n }\n /** Get the resolution multiplier for the voice. */\n getResolutionMultiplier() {\n return this.resolutionMultiplier;\n }\n /** Get the actual tick resolution for the voice. */\n getActualResolution() {\n return this.resolutionMultiplier * this.time.resolution;\n }\n /** Set the voice's stave. */\n setStave(stave) {\n this.stave = stave;\n // Reset the bounding box so we can reformat.\n this.boundingBox = undefined;\n return this;\n }\n getStave() {\n return this.stave;\n }\n /** Get the bounding box for the voice. */\n getBoundingBox() {\n if (!this.boundingBox) {\n const stave = this.checkStave();\n let boundingBox = undefined;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n tickable.setStave(stave);\n const bb = tickable.getBoundingBox();\n if (bb) {\n boundingBox = boundingBox ? boundingBox.mergeWith(bb) : bb;\n }\n }\n this.boundingBox = boundingBox;\n }\n return this.boundingBox;\n }\n /** Set the voice mode to strict or soft. */\n setStrict(strict) {\n this.mode = strict ? VoiceMode.STRICT : VoiceMode.SOFT;\n return this;\n }\n /** Determine if the voice is complete according to the voice mode. */\n isComplete() {\n if (this.mode === VoiceMode.STRICT || this.mode === VoiceMode.FULL) {\n return this.ticksUsed.equals(this.totalTicks);\n }\n else {\n return true;\n }\n }\n /**\n * We use softmax to layout the tickables proportional to the exponent of\n * their duration. The softmax factor is used to determine the 'linearness' of\n * the layout.\n *\n * The softmax of all the tickables in this voice should sum to 1.\n */\n setSoftmaxFactor(factor) {\n this.options.softmaxFactor = factor;\n return this;\n }\n /**\n * Calculate the sum of the exponents of all the ticks in this voice to use\n * as the denominator of softmax.\n */\n reCalculateExpTicksUsed() {\n const totalTicks = this.ticksUsed.value();\n const exp = (tickable) => Math.pow(this.options.softmaxFactor, tickable.getTicks().value() / totalTicks);\n this.expTicksUsed = this.tickables.map(exp).reduce((a, b) => a + b, 0);\n return this.expTicksUsed;\n }\n /** Get the softmax-scaled value of a tick duration. 'tickValue' is a number. */\n softmax(tickValue) {\n if (!this.expTicksUsed) {\n this.expTicksUsed = this.reCalculateExpTicksUsed();\n }\n const totalTicks = this.ticksUsed.value();\n const exp = (v) => Math.pow(this.options.softmaxFactor, v / totalTicks);\n const sm = exp(tickValue) / this.expTicksUsed;\n return sm;\n }\n /** Add a tickable to the voice. */\n addTickable(tickable) {\n if (!tickable.shouldIgnoreTicks()) {\n const ticks = tickable.getTicks();\n // Update the total ticks for this line.\n this.ticksUsed.add(ticks);\n this.expTicksUsed = 0; // reset\n if ((this.mode === VoiceMode.STRICT || this.mode === VoiceMode.FULL) &&\n this.ticksUsed.greaterThan(this.totalTicks)) {\n this.ticksUsed.subtract(ticks);\n throw new RuntimeError('BadArgument', 'Too many ticks.');\n }\n // Track the smallest tickable for formatting.\n if (ticks.lessThan(this.smallestTickCount)) {\n this.smallestTickCount = ticks.clone();\n }\n this.resolutionMultiplier = this.ticksUsed.denominator;\n // Expand total ticks using denominator from ticks used.\n this.totalTicks.add(0, this.ticksUsed.denominator);\n }\n // Add the tickable to the line.\n this.tickables.push(tickable);\n tickable.setVoice(this);\n return this;\n }\n /** Add an array of tickables to the voice. */\n addTickables(tickables) {\n for (let i = 0; i < tickables.length; ++i) {\n this.addTickable(tickables[i]);\n }\n return this;\n }\n /** Preformat the voice by applying the voice's stave to each note. */\n preFormat() {\n if (this.preFormatted)\n return this;\n const stave = this.checkStave();\n this.tickables.forEach((tickable) => {\n if (!tickable.getStave()) {\n tickable.setStave(stave);\n }\n });\n this.preFormatted = true;\n return this;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n /**\n * Render the voice onto the canvas `context` and an optional `stave`.\n * If `stave` is omitted, it is expected that the notes have staves\n * already set.\n *\n * This method also calculates the voice's boundingBox while drawing\n * the notes. Note the similarities with this.getBoundingBox().\n */\n draw(context = this.checkContext(), stave) {\n stave = stave !== null && stave !== void 0 ? stave : this.stave;\n this.setRendered();\n let boundingBox = undefined;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n // Set the stave if provided.\n if (stave) {\n tickable.setStave(stave);\n }\n defined(tickable.getStave(), 'MissingStave', 'The voice cannot draw tickables without staves.');\n const bb = tickable.getBoundingBox();\n if (bb) {\n boundingBox = boundingBox ? boundingBox.mergeWith(bb) : bb;\n }\n tickable.setContext(context);\n tickable.drawWithStyle();\n }\n this.boundingBox = boundingBox;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Ron B. Yeh\n// MIT License\n//\n// Utilities for working with Web APIs.\n// See: https://developer.mozilla.org/en-US/docs/Web/API\nimport { globalObject } from './util';\n// eslint-disable-next-line\nexport function isHTMLCanvas(element) {\n if (!element)\n return false;\n const global = globalObject();\n return (\n // It's either an instance of the HTMLCanvasElement class,\n (typeof global.HTMLCanvasElement === 'function' && element instanceof global.HTMLCanvasElement) ||\n // OR it's pretending to be a element. Good enough!\n // Do not rely on .tagName, because node-canvas doesn't provide a tagName.\n (typeof element.getContext === 'function' && typeof element.toDataURL === 'function'));\n}\n// eslint-disable-next-line\nexport function isHTMLDiv(element) {\n if (!element)\n return false;\n const global = globalObject();\n return (\n // It's either an instance of the HTMLDivElement class.\n (typeof global.HTMLDivElement === 'function' && element instanceof global.HTMLDivElement) ||\n // OR it's pretending to be a
. See: svgcontext.ts.\n (typeof element.appendChild === 'function' && typeof element.style === 'object'));\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Accidental Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Accidental } from '../src/accidental';\nimport { Beam } from '../src/beam';\nimport { Dot } from '../src/dot';\nimport { Flow } from '../src/flow';\nimport { Formatter } from '../src/formatter';\nimport { ModifierContext } from '../src/modifiercontext';\nimport { Note } from '../src/note';\nimport { Stave } from '../src/stave';\nimport { StaveNote } from '../src/stavenote';\nimport { Stem } from '../src/stem';\nimport { TickContext } from '../src/tickcontext';\nimport { TimeSigNote } from '../src/timesignote';\nimport { isAccidental } from '../src/typeguard';\nimport { Voice } from '../src/voice';\nconst AccidentalTests = {\n Start() {\n QUnit.module('Accidental');\n test('Automatic Accidentals - Simple Tests', autoAccidentalWorking);\n const run = VexFlowTests.runTests;\n run('Accidental Padding', formatAccidentalSpaces);\n run('Basic', basic);\n run('Stem Down', basicStemDown);\n run('Cautionary Accidental', cautionary);\n run('Accidental Arrangement Special Cases', specialCases);\n run('Multi Voice', multiVoice);\n run('Microtonal', microtonal);\n run('Microtonal (Iranian)', microtonal_iranian);\n run('Sagittal', sagittal);\n run('Automatic Accidentals', automaticAccidentals0);\n run('Automatic Accidentals - C major scale in Ab', automaticAccidentals1);\n run('Automatic Accidentals - No Accidentals Necessary', automaticAccidentals2);\n run('Automatic Accidentals - No Accidentals Necessary (EasyScore)', automaticAccidentals3);\n run('Automatic Accidentals - Multi Voice Inline', automaticAccidentalsMultiVoiceInline);\n run('Automatic Accidentals - Multi Voice Offset', automaticAccidentalsMultiVoiceOffset);\n run('Automatic Accidentals - Key C, Single Octave', automaticAccidentalsCornerCases1);\n run('Automatic Accidentals - Key C, Two Octaves', automaticAccidentalsCornerCases2);\n run('Automatic Accidentals - Key C#, Single Octave', automaticAccidentalsCornerCases3);\n run('Automatic Accidentals - Key C#, Two Octaves', automaticAccidentalsCornerCases4);\n run('Factory API', factoryAPI);\n },\n};\n// Check that at least one of the note's modifiers is an Accidental.\nfunction hasAccidental(note) {\n return note.getModifiers().some((modifier) => isAccidental(modifier));\n}\n// Return a convenience function for building accidentals from a string.\nfunction makeNewAccid(factory) {\n return (type) => factory.Accidental({ type });\n}\n/**\n *\n */\nfunction autoAccidentalWorking() {\n const createStaveNote = (noteStruct) => new StaveNote(noteStruct);\n let notes = [\n { keys: ['bb/4'], duration: '4' },\n { keys: ['bb/4'], duration: '4' },\n { keys: ['g#/4'], duration: '4' },\n { keys: ['g/4'], duration: '4' },\n { keys: ['b/4'], duration: '4' },\n { keys: ['b/4'], duration: '4' },\n { keys: ['a#/4'], duration: '4' },\n { keys: ['g#/4'], duration: '4' },\n ].map(createStaveNote);\n let voice = new Voice().setMode(Voice.Mode.SOFT).addTickables(notes);\n // F Major (Bb)\n Accidental.applyAccidentals([voice], 'F');\n equal(hasAccidental(notes[0]), false, 'No flat because of key signature');\n equal(hasAccidental(notes[1]), false, 'No flat because of key signature');\n equal(hasAccidental(notes[2]), true, 'Added a sharp');\n equal(hasAccidental(notes[3]), true, 'Back to natural');\n equal(hasAccidental(notes[4]), true, 'Back to natural');\n equal(hasAccidental(notes[5]), false, 'Natural remembered');\n equal(hasAccidental(notes[6]), true, 'Added sharp');\n equal(hasAccidental(notes[7]), true, 'Added sharp');\n notes = [\n { keys: ['e#/4'], duration: '4' },\n { keys: ['cb/4'], duration: '4' },\n { keys: ['fb/4'], duration: '4' },\n { keys: ['b#/4'], duration: '4' },\n { keys: ['b#/4'], duration: '4' },\n { keys: ['cb/5'], duration: '4' },\n { keys: ['fb/5'], duration: '4' },\n { keys: ['e#/4'], duration: '4' },\n ].map(createStaveNote);\n voice = new Voice().setMode(Voice.Mode.SOFT).addTickables(notes);\n // A Major (F#,G#,C#)\n Accidental.applyAccidentals([voice], 'A');\n equal(hasAccidental(notes[0]), true, 'Added sharp');\n equal(hasAccidental(notes[1]), true, 'Added flat');\n equal(hasAccidental(notes[2]), true, 'Added flat');\n equal(hasAccidental(notes[3]), true, 'Added sharp');\n equal(hasAccidental(notes[4]), false, 'Sharp remembered');\n equal(hasAccidental(notes[5]), true, 'Added flat(different octave)');\n equal(hasAccidental(notes[6]), true, 'Added flat(different octave)');\n equal(hasAccidental(notes[7]), false, 'sharp remembered');\n notes = [\n { keys: ['c/4'], duration: '4' },\n { keys: ['cb/4'], duration: '4' },\n { keys: ['cb/4'], duration: '4' },\n { keys: ['c#/4'], duration: '4' },\n { keys: ['c#/4'], duration: '4' },\n { keys: ['cbb/4'], duration: '4' },\n { keys: ['cbb/4'], duration: '4' },\n { keys: ['c##/4'], duration: '4' },\n { keys: ['c##/4'], duration: '4' },\n { keys: ['c/4'], duration: '4' },\n { keys: ['c/4'], duration: '4' },\n ].map(createStaveNote);\n voice = new Voice().setMode(Voice.Mode.SOFT).addTickables(notes);\n // C Major (no sharps/flats)\n Accidental.applyAccidentals([voice], 'C');\n equal(hasAccidental(notes[0]), false, 'No accidental');\n equal(hasAccidental(notes[1]), true, 'Added flat');\n equal(hasAccidental(notes[2]), false, 'Flat remembered');\n equal(hasAccidental(notes[3]), true, 'Sharp added');\n equal(hasAccidental(notes[4]), false, 'Sharp remembered');\n equal(hasAccidental(notes[5]), true, 'Added doubled flat');\n equal(hasAccidental(notes[6]), false, 'Double flat remembered');\n equal(hasAccidental(notes[7]), true, 'Added double sharp');\n equal(hasAccidental(notes[8]), false, 'Double sharp rememberd');\n equal(hasAccidental(notes[9]), true, 'Added natural');\n equal(hasAccidental(notes[10]), false, 'Natural remembered');\n}\n/**\n *\n */\nfunction formatAccidentalSpaces(options) {\n const f = VexFlowTests.makeFactory(options, 750, 280);\n const context = f.getContext();\n const softmaxFactor = 100;\n // Create the notes\n const notes = [\n new StaveNote({\n keys: ['e##/5'],\n duration: '8d',\n }).addModifier(new Accidental('##'), 0),\n new StaveNote({\n keys: ['b/4'],\n duration: '16',\n }).addModifier(new Accidental('b'), 0),\n new StaveNote({\n keys: ['f/3'],\n duration: '8',\n }),\n new StaveNote({\n keys: ['a/3'],\n duration: '16',\n }),\n new StaveNote({\n keys: ['e/4', 'g/4'],\n duration: '16',\n })\n .addModifier(new Accidental('bb'), 0)\n .addModifier(new Accidental('bb'), 1),\n new StaveNote({\n keys: ['d/4'],\n duration: '16',\n }),\n new StaveNote({\n keys: ['e/4', 'g/4'],\n duration: '16',\n })\n .addModifier(new Accidental('#'), 0)\n .addModifier(new Accidental('#'), 1),\n new StaveNote({\n keys: ['g/4'],\n duration: '32',\n }),\n new StaveNote({\n keys: ['a/4'],\n duration: '32',\n }),\n new StaveNote({\n keys: ['g/4'],\n duration: '16',\n }),\n new StaveNote({\n keys: ['d/4'],\n duration: 'q',\n }),\n ];\n Dot.buildAndAttach([notes[0]], { all: true });\n const beams = Beam.generateBeams(notes);\n const voice = new Voice({\n num_beats: 4,\n beat_value: 4,\n });\n voice.addTickables(notes);\n const formatter = new Formatter({ softmaxFactor }).joinVoices([voice]);\n const width = formatter.preCalculateMinTotalWidth([voice]);\n const stave = new Stave(10, 40, width + 20);\n stave.setContext(context).draw();\n formatter.format([voice], width);\n voice.draw(context, stave);\n beams.forEach((b) => b.setContext(context).draw());\n notes.forEach((note) => Note.plotMetrics(context, note, 30));\n VexFlowTests.plotLegendForNoteWidth(context, 300, 150);\n ok(true);\n}\nfunction basic(options) {\n const f = VexFlowTests.makeFactory(options, 700, 240);\n const accid = makeNewAccid(f);\n f.Stave({ x: 10, y: 10, width: 550 });\n const notes = [\n f\n .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: '1' })\n .addModifier(accid('b'), 0)\n .addModifier(accid('#'), 1),\n // Notes keys out of alphabetic order\n f\n .StaveNote({ keys: ['e/4', 'f/4', 'a/4', 'c/5', 'e/5', 'g/5', 'd/4'], duration: '2' })\n .addModifier(accid('##'), 6)\n .addModifier(accid('n'), 0)\n .addModifier(accid('bb'), 1)\n .addModifier(accid('b'), 2)\n .addModifier(accid('#'), 3)\n .addModifier(accid('n'), 4)\n .addModifier(accid('bb'), 5),\n // Notes keys out of alphabetic order\n f\n .StaveNote({ keys: ['g/5', 'f/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5'], duration: '16' })\n .addModifier(accid('n'), 1)\n .addModifier(accid('#'), 2)\n .addModifier(accid('#'), 3)\n .addModifier(accid('b'), 4)\n .addModifier(accid('bb'), 5)\n .addModifier(accid('##'), 6)\n .addModifier(accid('#'), 0),\n f\n .StaveNote({ keys: ['a/3', 'c/4', 'e/4', 'b/4', 'd/5', 'g/5'], duration: '1' })\n .addModifier(accid('#'), 0)\n .addModifier(accid('##').setAsCautionary(), 1)\n .addModifier(accid('#').setAsCautionary(), 2)\n .addModifier(accid('b'), 3)\n .addModifier(accid('bb').setAsCautionary(), 4)\n .addModifier(accid('b').setAsCautionary(), 5),\n ];\n Formatter.SimpleFormat(notes, 10, { paddingBetween: 45 });\n notes.forEach((note, index) => {\n Note.plotMetrics(f.getContext(), note, 140);\n ok(note.getModifiersByType('Accidental').length > 0, 'Note ' + index + ' has accidentals');\n note.getModifiersByType('Accidental').forEach((accid, index) => {\n ok(accid.getWidth() > 0, 'Accidental ' + index + ' has set width');\n });\n });\n f.draw();\n VexFlowTests.plotLegendForNoteWidth(f.getContext(), 480, 140);\n ok(true, 'Full Accidental');\n}\nfunction cautionary(options) {\n const staveCount = 12;\n const scale = 0.85;\n const staveWidth = 840;\n let i = 0;\n let j = 0;\n const f = VexFlowTests.makeFactory(options, staveWidth + 10, 175 * staveCount + 10);\n f.getContext().scale(scale, scale);\n const accids = Object.keys(Flow.accidentalMap).filter((accid) => accid !== '{' && accid !== '}');\n const mod = Math.round(accids.length / staveCount);\n for (i = 0; i < staveCount; ++i) {\n const stave = f.Stave({ x: 0, y: 10 + 200 * i, width: staveWidth / scale });\n const score = f.EasyScore();\n const rowMap = [];\n for (j = 0; j < mod && j + i * staveCount < accids.length; ++j) {\n rowMap.push(accids[j + i * staveCount]);\n }\n const notes = rowMap.map((accidType) => f\n .StaveNote({ keys: ['a/4'], duration: '4', stem_direction: Stem.UP })\n .addModifier(f.Accidental({ type: accidType }), 0));\n const voice = score.voice(notes, { time: rowMap.length + '/4' });\n voice.getTickables().forEach((tickable) => {\n tickable\n .getModifiers()\n .filter((modifier) => modifier.getAttribute('type') === Accidental.CATEGORY)\n .forEach((accid) => accid.setAsCautionary());\n });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n }\n ok(true, 'Must successfully render cautionary accidentals');\n}\nfunction specialCases(options) {\n const f = VexFlowTests.makeFactory(options, 700, 240);\n const accid = makeNewAccid(f);\n f.Stave({ x: 10, y: 10, width: 550 });\n const notes = [\n f\n .StaveNote({ keys: ['f/4', 'd/5'], duration: '1' })\n .addModifier(accid('#'), 0)\n .addModifier(accid('b'), 1),\n f\n .StaveNote({ keys: ['c/4', 'g/4'], duration: '2' })\n .addModifier(accid('##'), 0)\n .addModifier(accid('##'), 1),\n f\n .StaveNote({ keys: ['b/3', 'd/4', 'f/4'], duration: '16' })\n .addModifier(accid('#'), 0)\n .addModifier(accid('#'), 1)\n .addModifier(accid('##'), 2),\n f\n .StaveNote({ keys: ['g/4', 'a/4', 'c/5', 'e/5'], duration: '16' })\n .addModifier(accid('b'), 0)\n .addModifier(accid('b'), 1)\n .addModifier(accid('n'), 3),\n f\n .StaveNote({ keys: ['e/4', 'g/4', 'b/4', 'c/5'], duration: '4' })\n .addModifier(accid('b').setAsCautionary(), 0)\n .addModifier(accid('b').setAsCautionary(), 1)\n .addModifier(accid('bb'), 2)\n .addModifier(accid('b'), 3),\n f\n .StaveNote({ keys: ['b/3', 'e/4', 'a/4', 'd/5', 'g/5'], duration: '8' })\n .addModifier(accid('bb'), 0)\n .addModifier(accid('b').setAsCautionary(), 1)\n .addModifier(accid('n').setAsCautionary(), 2)\n .addModifier(accid('#'), 3)\n .addModifier(accid('n').setAsCautionary(), 4),\n ];\n Formatter.SimpleFormat(notes, 0, { paddingBetween: 20 });\n notes.forEach((note, index) => {\n Note.plotMetrics(f.getContext(), note, 140);\n ok(note.getModifiersByType('Accidental').length > 0, 'Note ' + index + ' has accidentals');\n note.getModifiersByType('Accidental').forEach((accid, index) => {\n ok(accid.getWidth() > 0, 'Accidental ' + index + ' has set width');\n });\n });\n f.draw();\n VexFlowTests.plotLegendForNoteWidth(f.getContext(), 480, 140);\n ok(true, 'Full Accidental');\n}\nfunction basicStemDown(options) {\n const f = VexFlowTests.makeFactory(options, 700, 240);\n const accid = makeNewAccid(f);\n f.Stave({ x: 10, y: 10, width: 550 });\n const notes = [\n f\n .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: 'w', stem_direction: -1 })\n .addModifier(accid('b'), 0)\n .addModifier(accid('#'), 1),\n f\n .StaveNote({ keys: ['d/4', 'e/4', 'f/4', 'a/4', 'c/5', 'e/5', 'g/5'], duration: '2', stem_direction: -1 })\n .addModifier(accid('##'), 0)\n .addModifier(accid('n'), 1)\n .addModifier(accid('bb'), 2)\n .addModifier(accid('b'), 3)\n .addModifier(accid('#'), 4)\n .addModifier(accid('n'), 5)\n .addModifier(accid('bb'), 6),\n f\n .StaveNote({ keys: ['f/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5', 'g/5'], duration: '16', stem_direction: -1 })\n .addModifier(accid('n'), 0)\n .addModifier(accid('#'), 1)\n .addModifier(accid('#'), 2)\n .addModifier(accid('b'), 3)\n .addModifier(accid('bb'), 4)\n .addModifier(accid('##'), 5)\n .addModifier(accid('#'), 6),\n ];\n Formatter.SimpleFormat(notes, 0, { paddingBetween: 30 });\n notes.forEach((note, noteIndex) => {\n Note.plotMetrics(f.getContext(), note, 140);\n ok(note.getModifiersByType('Accidental').length > 0, 'Note ' + noteIndex + ' has accidentals');\n note.getModifiersByType('Accidental').forEach((accid, accidIndex) => {\n ok(accid.getWidth() > 0, 'Accidental ' + accidIndex + ' has set width');\n });\n });\n f.draw();\n VexFlowTests.plotLegendForNoteWidth(f.getContext(), 480, 140);\n ok(true, 'Full Accidental');\n}\nfunction multiVoice(options) {\n // Helper function for visualizing\n function showNotes(note1, note2, stave, ctx, x) {\n const modifierContext = new ModifierContext();\n note1.addToModifierContext(modifierContext);\n note2.addToModifierContext(modifierContext);\n new TickContext().addTickable(note1).addTickable(note2).preFormat().setX(x);\n note1.setContext(ctx).draw();\n note2.setContext(ctx).draw();\n Note.plotMetrics(ctx, note1, 180);\n Note.plotMetrics(ctx, note2, 15);\n }\n const f = VexFlowTests.makeFactory(options, 460, 250);\n const accid = makeNewAccid(f);\n const stave = f.Stave({ x: 10, y: 45, width: 420 });\n const ctx = f.getContext();\n stave.draw();\n let note1 = f\n .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: '2', stem_direction: -1 })\n .addModifier(accid('b'), 0)\n .addModifier(accid('n'), 1)\n .addModifier(accid('#'), 2)\n .setStave(stave);\n let note2 = f\n .StaveNote({ keys: ['d/5', 'a/5', 'b/5'], duration: '2', stem_direction: 1 })\n .addModifier(accid('b'), 0)\n .addModifier(accid('bb'), 1)\n .addModifier(accid('##'), 2)\n .setStave(stave);\n showNotes(note1, note2, stave, ctx, 60);\n note1 = f\n .StaveNote({ keys: ['c/4', 'e/4', 'c/5'], duration: '2', stem_direction: -1 })\n .addModifier(accid('b'), 0)\n .addModifier(accid('n'), 1)\n .addModifier(accid('#'), 2)\n .setStave(stave);\n note2 = f\n .StaveNote({ keys: ['d/5', 'a/5', 'b/5'], duration: '4', stem_direction: 1 })\n .addModifier(accid('b'), 0)\n .setStave(stave);\n showNotes(note1, note2, stave, ctx, 150);\n note1 = f\n .StaveNote({ keys: ['d/4', 'c/5', 'd/5'], duration: '2', stem_direction: -1 })\n .addModifier(accid('b'), 0)\n .addModifier(accid('n'), 1)\n .addModifier(accid('#'), 2)\n .setStave(stave);\n note2 = f\n .StaveNote({ keys: ['d/5', 'a/5', 'b/5'], duration: '4', stem_direction: 1 })\n .addModifier(accid('b'), 0)\n .setStave(stave);\n showNotes(note1, note2, stave, ctx, 250);\n VexFlowTests.plotLegendForNoteWidth(ctx, 350, 150);\n ok(true, 'Full Accidental');\n}\nfunction microtonal(options) {\n const f = VexFlowTests.makeFactory(options, 700, 240);\n const accid = makeNewAccid(f);\n const ctx = f.getContext();\n f.Stave({ x: 10, y: 10, width: 650 });\n const notes = [\n f\n .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: '1' })\n .addModifier(accid('db'), 0)\n .addModifier(accid('d'), 1),\n f\n .StaveNote({ keys: ['d/4', 'e/4', 'f/4', 'a/4', 'c/5', 'e/5', 'g/5'], duration: '2' })\n .addModifier(accid('bbs'), 0)\n .addModifier(accid('++'), 1)\n .addModifier(accid('+'), 2)\n .addModifier(accid('d'), 3)\n .addModifier(accid('db'), 4)\n .addModifier(accid('+'), 5)\n .addModifier(accid('##'), 6),\n f\n .StaveNote({ keys: ['f/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5', 'g/5'], duration: '16' })\n .addModifier(accid('++'), 0)\n .addModifier(accid('bbs'), 1)\n .addModifier(accid('+'), 2)\n .addModifier(accid('b'), 3)\n .addModifier(accid('db'), 4)\n .addModifier(accid('##'), 5)\n .addModifier(accid('#'), 6),\n f\n .StaveNote({ keys: ['a/3', 'c/4', 'e/4', 'b/4', 'd/5', 'g/5'], duration: '1' })\n .addModifier(accid('#'), 0)\n .addModifier(accid('db').setAsCautionary(), 1)\n .addModifier(accid('bbs').setAsCautionary(), 2)\n .addModifier(accid('b'), 3)\n .addModifier(accid('++').setAsCautionary(), 4)\n .addModifier(accid('d').setAsCautionary(), 5),\n f\n .StaveNote({ keys: ['f/4', 'g/4', 'a/4', 'b/4', 'd/5', 'g/5'], duration: '16' })\n .addModifier(accid('++-'), 0)\n .addModifier(accid('+-'), 1)\n .addModifier(accid('bs'), 2)\n .addModifier(accid('bss'), 3)\n .addModifier(accid('afhf'), 4)\n .addModifier(accid('ashs'), 5),\n ];\n Formatter.SimpleFormat(notes, 0, { paddingBetween: 35 });\n notes.forEach((note, index) => {\n Note.plotMetrics(f.getContext(), note, 140);\n ok(note.getModifiersByType('Accidental').length > 0, 'Note ' + index + ' has accidentals');\n note.getModifiersByType('Accidental').forEach((accid, index) => {\n ok(accid.getWidth() > 0, 'Accidental ' + index + ' has set width');\n });\n });\n f.draw();\n VexFlowTests.plotLegendForNoteWidth(ctx, 580, 140);\n ok(true, 'Microtonal Accidental');\n}\nfunction microtonal_iranian(options) {\n const f = VexFlowTests.makeFactory(options, 700, 240);\n const accid = makeNewAccid(f);\n const ctx = f.getContext();\n f.Stave({ x: 10, y: 10, width: 650 });\n const notes = [\n f\n .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: '1' })\n .addModifier(accid('k'), 0)\n .addModifier(accid('o'), 1),\n f\n .StaveNote({ keys: ['d/4', 'e/4', 'f/4', 'a/4', 'c/5', 'e/5', 'g/5'], duration: '2' })\n .addModifier(accid('b'), 0)\n .addModifier(accid('k'), 1)\n .addModifier(accid('n'), 2)\n .addModifier(accid('o'), 3)\n .addModifier(accid('#'), 4)\n .addModifier(accid('bb'), 5)\n .addModifier(accid('##'), 6),\n f\n .StaveNote({ keys: ['f/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5', 'g/5'], duration: '16' })\n .addModifier(accid('o'), 0)\n .addModifier(accid('k'), 1)\n .addModifier(accid('n'), 2)\n .addModifier(accid('b'), 3)\n .addModifier(accid('bb'), 4)\n .addModifier(accid('##'), 5)\n .addModifier(accid('#'), 6),\n f\n .StaveNote({ keys: ['a/3', 'c/4', 'e/4', 'b/4', 'd/5', 'g/5'], duration: '1' })\n .addModifier(accid('#'), 0)\n .addModifier(accid('o').setAsCautionary(), 1)\n .addModifier(accid('n').setAsCautionary(), 2)\n .addModifier(accid('b'), 3)\n .addModifier(accid('k').setAsCautionary(), 4),\n f\n .StaveNote({ keys: ['f/4', 'g/4', 'a/4', 'b/4'], duration: '16' })\n .addModifier(accid('k'), 0)\n .addModifier(accid('k'), 1)\n .addModifier(accid('k'), 2)\n .addModifier(accid('k'), 3),\n ];\n Formatter.SimpleFormat(notes, 0, { paddingBetween: 35 });\n notes.forEach((note, index) => {\n Note.plotMetrics(f.getContext(), note, 140);\n ok(note.getModifiersByType('Accidental').length > 0, 'Note ' + index + ' has accidentals');\n note.getModifiersByType('Accidental').forEach((accid, index) => {\n ok(accid.getWidth() > 0, 'Accidental ' + index + ' has set width');\n });\n });\n f.draw();\n VexFlowTests.plotLegendForNoteWidth(ctx, 580, 140);\n ok(true, 'Microtonal Accidental (Iranian)');\n}\nfunction sagittal(options) {\n const f = VexFlowTests.makeFactory(options, 700, 240);\n const accid = makeNewAccid(f);\n const ctx = f.getContext();\n f.Stave({ x: 10, y: 10, width: 650 });\n const notes = [\n f\n .StaveNote({ keys: ['d/4', 'f/4', 'b/4', 'b/4'], duration: '4' })\n .addModifier(accid('accSagittal11MediumDiesisUp'), 1)\n .addModifier(accid('accSagittal5CommaDown'), 2)\n .addModifier(accid('b'), 3)\n .addModifier(accid('accSagittal7CommaDown'), 3),\n f\n .StaveNote({ keys: ['d/4', 'f/4', 'a/4', 'b/4'], duration: '4' })\n .addModifier(accid('accSagittal35LargeDiesisDown'), 2),\n f.StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'c/5'], duration: '8' }).addModifier(accid('accSagittal5CommaDown'), 1),\n f\n .StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'b/4'], duration: '8' })\n .addModifier(accid('b'), 1)\n .addModifier(accid('accSagittal7CommaDown'), 1)\n .addModifier(accid('accSagittal11LargeDiesisDown'), 3),\n f\n .StaveNote({ keys: ['d/4', 'f/4', 'b/4', 'b/4'], duration: '4' })\n .addModifier(accid('accSagittal11MediumDiesisUp'), 1)\n .addModifier(accid('accSagittal5CommaDown'), 2)\n .addModifier(accid('accSagittalFlat7CDown'), 3),\n f\n .StaveNote({ keys: ['d/4', 'f/4', 'a/4', 'b/4'], duration: '4' })\n .addModifier(accid('accSagittal35LargeDiesisDown'), 2),\n f.StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'c/5'], duration: '8' }).addModifier(accid('accSagittal5CommaDown'), 1),\n f\n .StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'b/4'], duration: '8' })\n .addModifier(accid('accSagittalFlat7CDown'), 1)\n .addModifier(accid('accSagittal11LargeDiesisDown'), 3),\n ];\n f.StaveTie({\n from: notes[0],\n to: notes[1],\n first_indices: [0, 1],\n last_indices: [0, 1],\n });\n f.StaveTie({\n from: notes[0],\n to: notes[1],\n first_indices: [3],\n last_indices: [3],\n options: {\n direction: Stem.DOWN,\n },\n });\n f.StaveTie({\n from: notes[4],\n to: notes[5],\n first_indices: [0, 1],\n last_indices: [0, 1],\n });\n f.StaveTie({\n from: notes[4],\n to: notes[5],\n first_indices: [3],\n last_indices: [3],\n options: {\n direction: Stem.DOWN,\n },\n });\n f.Beam({ notes: notes.slice(2, 4) });\n f.Beam({ notes: notes.slice(6, 8) });\n Formatter.SimpleFormat(notes);\n notes.forEach((note, index) => {\n Note.plotMetrics(f.getContext(), note, 140);\n ok(note.getModifiersByType('Accidental').length > 0, 'Note ' + index + ' has accidentals');\n note.getModifiersByType('Accidental').forEach((accid, index) => {\n ok(accid.getWidth() > 0, 'Accidental ' + index + ' has set width');\n });\n });\n f.draw();\n VexFlowTests.plotLegendForNoteWidth(ctx, 580, 140);\n ok(true, 'Sagittal');\n}\nfunction automaticAccidentals0(options) {\n const f = VexFlowTests.makeFactory(options, 700, 200);\n const stave = f.Stave();\n const notes = [\n { keys: ['c/4', 'c/5'], duration: '4' },\n { keys: ['c#/4', 'c#/5'], duration: '4' },\n { keys: ['c#/4', 'c#/5'], duration: '4' },\n { keys: ['c##/4', 'c##/5'], duration: '4' },\n { keys: ['c##/4', 'c##/5'], duration: '4' },\n { keys: ['c/4', 'c/5'], duration: '4' },\n { keys: ['cn/4', 'cn/5'], duration: '4' },\n { keys: ['cbb/4', 'cbb/5'], duration: '4' },\n { keys: ['cbb/4', 'cbb/5'], duration: '4' },\n { keys: ['cb/4', 'cb/5'], duration: '4' },\n { keys: ['cb/4', 'cb/5'], duration: '4' },\n { keys: ['c/4', 'c/5'], duration: '4' },\n ].map(f.StaveNote.bind(f));\n const gracenotes = [{ keys: ['d#/4'], duration: '16', slash: true }].map(f.GraceNote.bind(f));\n notes[0].addModifier(f.GraceNoteGroup({ notes: gracenotes }).beamNotes(), 0);\n const voice = f\n .Voice()\n .setMode(Voice.Mode.SOFT)\n .addTickable(new TimeSigNote('12/4').setStave(stave))\n .addTickables(notes);\n Accidental.applyAccidentals([voice], 'C');\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true);\n}\nfunction automaticAccidentals1(options) {\n const f = VexFlowTests.makeFactory(options, 700, 150);\n const stave = f.Stave().addKeySignature('Ab');\n const notes = [\n { keys: ['c/4'], duration: '4' },\n { keys: ['d/4'], duration: '4' },\n { keys: ['e/4'], duration: '4' },\n { keys: ['f/4'], duration: '4' },\n { keys: ['g/4'], duration: '4' },\n { keys: ['a/4'], duration: '4' },\n { keys: ['b/4'], duration: '4' },\n { keys: ['c/5'], duration: '4' },\n ].map(f.StaveNote.bind(f));\n const voice = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes);\n Accidental.applyAccidentals([voice], 'Ab');\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true);\n}\nfunction automaticAccidentals2(options) {\n const f = VexFlowTests.makeFactory(options, 700, 150);\n const stave = f.Stave().addKeySignature('A');\n const notes = [\n { keys: ['a/4'], duration: '4' },\n { keys: ['b/4'], duration: '4' },\n { keys: ['c#/5'], duration: '4' },\n { keys: ['d/5'], duration: '4' },\n { keys: ['e/5'], duration: '4' },\n { keys: ['f#/5'], duration: '4' },\n { keys: ['g#/5'], duration: '4' },\n { keys: ['a/5'], duration: '4' },\n ].map(f.StaveNote.bind(f));\n const voice = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes);\n Accidental.applyAccidentals([voice], 'A');\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true);\n}\nfunction automaticAccidentals3(options) {\n const f = VexFlowTests.makeFactory(options, 700, 150);\n const stave = f.Stave().addKeySignature('A');\n const score = f.EasyScore();\n score.set({ time: '8/4' });\n const notes = score.notes('A4/q, B4/q, C#5/q, D5/q, E5/q,F#5/q, G#5/q, A5/q', { stem: 'UP' });\n const voice = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes);\n Accidental.applyAccidentals([voice], 'A');\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true);\n}\nfunction automaticAccidentalsMultiVoiceInline(options) {\n const f = VexFlowTests.makeFactory(options, 700, 150);\n const stave = f.Stave().addKeySignature('Ab');\n const notes0 = [\n { keys: ['c/4'], duration: '4', stem_direction: -1 },\n { keys: ['d/4'], duration: '4', stem_direction: -1 },\n { keys: ['e/4'], duration: '4', stem_direction: -1 },\n { keys: ['f/4'], duration: '4', stem_direction: -1 },\n { keys: ['g/4'], duration: '4', stem_direction: -1 },\n { keys: ['a/4'], duration: '4', stem_direction: -1 },\n { keys: ['b/4'], duration: '4', stem_direction: -1 },\n { keys: ['c/5'], duration: '4', stem_direction: -1 },\n ].map(f.StaveNote.bind(f));\n const notes1 = [\n { keys: ['c/5'], duration: '4' },\n { keys: ['d/5'], duration: '4' },\n { keys: ['e/5'], duration: '4' },\n { keys: ['f/5'], duration: '4' },\n { keys: ['g/5'], duration: '4' },\n { keys: ['a/5'], duration: '4' },\n { keys: ['b/5'], duration: '4' },\n { keys: ['c/6'], duration: '4' },\n ].map(f.StaveNote.bind(f));\n const voice0 = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes0);\n const voice1 = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes1);\n // Ab Major\n Accidental.applyAccidentals([voice0, voice1], 'Ab');\n equal(hasAccidental(notes0[0]), false);\n equal(hasAccidental(notes0[1]), true);\n equal(hasAccidental(notes0[2]), true);\n equal(hasAccidental(notes0[3]), false);\n equal(hasAccidental(notes0[4]), false);\n equal(hasAccidental(notes0[5]), true);\n equal(hasAccidental(notes0[6]), true);\n equal(hasAccidental(notes0[7]), false);\n equal(hasAccidental(notes1[0]), false);\n equal(hasAccidental(notes1[1]), true);\n equal(hasAccidental(notes1[2]), true);\n equal(hasAccidental(notes1[3]), false);\n equal(hasAccidental(notes1[4]), false);\n equal(hasAccidental(notes1[5]), true);\n equal(hasAccidental(notes1[6]), true);\n equal(hasAccidental(notes1[7]), false);\n new Formatter().joinVoices([voice0, voice1]).formatToStave([voice0, voice1], stave);\n f.draw();\n ok(true);\n}\nfunction automaticAccidentalsMultiVoiceOffset(options) {\n const f = VexFlowTests.makeFactory(options, 700, 150);\n const stave = f.Stave().addKeySignature('Cb');\n const notes0 = [\n { keys: ['c/4'], duration: '4', stem_direction: -1 },\n { keys: ['d/4'], duration: '4', stem_direction: -1 },\n { keys: ['e/4'], duration: '4', stem_direction: -1 },\n { keys: ['f/4'], duration: '4', stem_direction: -1 },\n { keys: ['g/4'], duration: '4', stem_direction: -1 },\n { keys: ['a/4'], duration: '4', stem_direction: -1 },\n { keys: ['b/4'], duration: '4', stem_direction: -1 },\n { keys: ['c/5'], duration: '4', stem_direction: -1 },\n ].map(f.StaveNote.bind(f));\n const notes1 = [\n { keys: ['c/5'], duration: '8' },\n { keys: ['c/5'], duration: '4' },\n { keys: ['d/5'], duration: '4' },\n { keys: ['e/5'], duration: '4' },\n { keys: ['f/5'], duration: '4' },\n { keys: ['g/5'], duration: '4' },\n { keys: ['a/5'], duration: '4' },\n { keys: ['b/5'], duration: '4' },\n { keys: ['c/6'], duration: '4' },\n ].map(f.StaveNote.bind(f));\n const voice0 = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes0);\n const voice1 = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes1);\n // Cb Major (All flats)\n Accidental.applyAccidentals([voice0, voice1], 'Cb');\n equal(hasAccidental(notes0[0]), true);\n equal(hasAccidental(notes0[1]), true);\n equal(hasAccidental(notes0[2]), true);\n equal(hasAccidental(notes0[3]), true);\n equal(hasAccidental(notes0[4]), true);\n equal(hasAccidental(notes0[5]), true);\n equal(hasAccidental(notes0[6]), true);\n equal(hasAccidental(notes0[7]), false, 'Natural Remembered');\n equal(hasAccidental(notes1[0]), true);\n equal(hasAccidental(notes1[1]), false);\n equal(hasAccidental(notes1[2]), true);\n equal(hasAccidental(notes1[3]), true);\n equal(hasAccidental(notes1[4]), true);\n equal(hasAccidental(notes1[5]), true);\n equal(hasAccidental(notes1[6]), true);\n equal(hasAccidental(notes1[7]), true);\n new Formatter().joinVoices([voice0, voice1]).formatToStave([voice0, voice1], stave);\n f.draw();\n ok(true);\n}\nfunction automaticAccidentalsCornerCases1(options) {\n const f = VexFlowTests.makeFactory(options, 700, 150);\n const stave = f.Stave().addKeySignature('C');\n const notes0 = [\n { keys: ['c/4'], duration: '4', stem_direction: -1 },\n { keys: ['c#/4'], duration: '4', stem_direction: -1 },\n { keys: ['c#/4'], duration: '4', stem_direction: -1 },\n { keys: ['c/4'], duration: '4', stem_direction: -1 },\n { keys: ['c/4'], duration: '4', stem_direction: -1 },\n { keys: ['cb/4'], duration: '4', stem_direction: -1 },\n { keys: ['cb/4'], duration: '4', stem_direction: -1 },\n { keys: ['c/4'], duration: '4', stem_direction: -1 },\n { keys: ['c/4'], duration: '4', stem_direction: -1 },\n ].map(f.StaveNote.bind(f));\n const voice0 = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes0);\n Accidental.applyAccidentals([voice0], 'C');\n equal(hasAccidental(notes0[0]), false);\n equal(hasAccidental(notes0[1]), true);\n equal(hasAccidental(notes0[2]), false);\n equal(hasAccidental(notes0[3]), true);\n equal(hasAccidental(notes0[4]), false);\n equal(hasAccidental(notes0[5]), true);\n equal(hasAccidental(notes0[6]), false);\n equal(hasAccidental(notes0[7]), true);\n equal(hasAccidental(notes0[8]), false);\n new Formatter().joinVoices([voice0]).formatToStave([voice0], stave);\n f.draw();\n ok(true);\n}\nfunction automaticAccidentalsCornerCases2(options) {\n const f = VexFlowTests.makeFactory(options, 700, 150);\n const stave = f.Stave().addKeySignature('C');\n const notes0 = [\n { keys: ['c/4'], duration: '4', stem_direction: -1 },\n { keys: ['c/5'], duration: '4', stem_direction: -1 },\n { keys: ['c#/4'], duration: '4', stem_direction: -1 },\n { keys: ['c#/5'], duration: '4', stem_direction: -1 },\n { keys: ['c#/4'], duration: '4', stem_direction: -1 },\n { keys: ['c#/5'], duration: '4', stem_direction: -1 },\n { keys: ['c/4'], duration: '4', stem_direction: -1 },\n { keys: ['c/5'], duration: '4', stem_direction: -1 },\n { keys: ['c/4'], duration: '4', stem_direction: -1 },\n { keys: ['c/5'], duration: '4', stem_direction: -1 },\n { keys: ['cb/4'], duration: '4', stem_direction: -1 },\n { keys: ['cb/5'], duration: '4', stem_direction: -1 },\n { keys: ['cb/4'], duration: '4', stem_direction: -1 },\n { keys: ['cb/5'], duration: '4', stem_direction: -1 },\n { keys: ['c/4'], duration: '4', stem_direction: -1 },\n { keys: ['c/5'], duration: '4', stem_direction: -1 },\n { keys: ['c/4'], duration: '4', stem_direction: -1 },\n { keys: ['c/5'], duration: '4', stem_direction: -1 },\n ].map(f.StaveNote.bind(f));\n const voice0 = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes0);\n Accidental.applyAccidentals([voice0], 'C');\n equal(hasAccidental(notes0[0]), false);\n equal(hasAccidental(notes0[2]), true);\n equal(hasAccidental(notes0[4]), false);\n equal(hasAccidental(notes0[6]), true);\n equal(hasAccidental(notes0[8]), false);\n equal(hasAccidental(notes0[10]), true);\n equal(hasAccidental(notes0[12]), false);\n equal(hasAccidental(notes0[14]), true);\n equal(hasAccidental(notes0[16]), false);\n equal(hasAccidental(notes0[1]), false);\n equal(hasAccidental(notes0[3]), true);\n equal(hasAccidental(notes0[5]), false);\n equal(hasAccidental(notes0[7]), true);\n equal(hasAccidental(notes0[9]), false);\n equal(hasAccidental(notes0[11]), true);\n equal(hasAccidental(notes0[13]), false);\n equal(hasAccidental(notes0[15]), true);\n equal(hasAccidental(notes0[17]), false);\n new Formatter().joinVoices([voice0]).formatToStave([voice0], stave);\n f.draw();\n ok(true);\n}\nfunction automaticAccidentalsCornerCases3(options) {\n const f = VexFlowTests.makeFactory(options, 700, 150);\n const stave = f.Stave().addKeySignature('C#');\n const notes0 = [\n { keys: ['c/4'], duration: '4', stem_direction: -1 },\n { keys: ['c#/4'], duration: '4', stem_direction: -1 },\n { keys: ['c#/4'], duration: '4', stem_direction: -1 },\n { keys: ['c/4'], duration: '4', stem_direction: -1 },\n { keys: ['c/4'], duration: '4', stem_direction: -1 },\n { keys: ['cb/4'], duration: '4', stem_direction: -1 },\n { keys: ['cb/4'], duration: '4', stem_direction: -1 },\n { keys: ['c/4'], duration: '4', stem_direction: -1 },\n { keys: ['c/4'], duration: '4', stem_direction: -1 },\n ].map(f.StaveNote.bind(f));\n const voice0 = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes0);\n Accidental.applyAccidentals([voice0], 'C#');\n equal(hasAccidental(notes0[0]), true);\n equal(hasAccidental(notes0[1]), true);\n equal(hasAccidental(notes0[2]), false);\n equal(hasAccidental(notes0[3]), true);\n equal(hasAccidental(notes0[4]), false);\n equal(hasAccidental(notes0[5]), true);\n equal(hasAccidental(notes0[6]), false);\n equal(hasAccidental(notes0[7]), true);\n equal(hasAccidental(notes0[8]), false);\n new Formatter().joinVoices([voice0]).formatToStave([voice0], stave);\n f.draw();\n ok(true);\n}\nfunction automaticAccidentalsCornerCases4(options) {\n const f = VexFlowTests.makeFactory(options, 700, 150);\n const stave = f.Stave().addKeySignature('C#');\n const notes0 = [\n { keys: ['c/4'], duration: '4', stem_direction: -1 },\n { keys: ['c/5'], duration: '4', stem_direction: -1 },\n { keys: ['c#/4'], duration: '4', stem_direction: -1 },\n { keys: ['c#/5'], duration: '4', stem_direction: -1 },\n { keys: ['c#/4'], duration: '4', stem_direction: -1 },\n { keys: ['c#/5'], duration: '4', stem_direction: -1 },\n { keys: ['c/4'], duration: '4', stem_direction: -1 },\n { keys: ['c/5'], duration: '4', stem_direction: -1 },\n { keys: ['c/4'], duration: '4', stem_direction: -1 },\n { keys: ['c/5'], duration: '4', stem_direction: -1 },\n { keys: ['cb/4'], duration: '4', stem_direction: -1 },\n { keys: ['cb/5'], duration: '4', stem_direction: -1 },\n { keys: ['cb/4'], duration: '4', stem_direction: -1 },\n { keys: ['cb/5'], duration: '4', stem_direction: -1 },\n { keys: ['c/4'], duration: '4', stem_direction: -1 },\n { keys: ['c/5'], duration: '4', stem_direction: -1 },\n { keys: ['c/4'], duration: '4', stem_direction: -1 },\n { keys: ['c/5'], duration: '4', stem_direction: -1 },\n ].map(f.StaveNote.bind(f));\n const voice0 = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes0);\n Accidental.applyAccidentals([voice0], 'C#');\n equal(hasAccidental(notes0[0]), true);\n equal(hasAccidental(notes0[2]), true);\n equal(hasAccidental(notes0[4]), false);\n equal(hasAccidental(notes0[6]), true);\n equal(hasAccidental(notes0[8]), false);\n equal(hasAccidental(notes0[10]), true);\n equal(hasAccidental(notes0[12]), false);\n equal(hasAccidental(notes0[14]), true);\n equal(hasAccidental(notes0[16]), false);\n equal(hasAccidental(notes0[1]), true);\n equal(hasAccidental(notes0[3]), true);\n equal(hasAccidental(notes0[5]), false);\n equal(hasAccidental(notes0[7]), true);\n equal(hasAccidental(notes0[9]), false);\n equal(hasAccidental(notes0[11]), true);\n equal(hasAccidental(notes0[13]), false);\n equal(hasAccidental(notes0[15]), true);\n equal(hasAccidental(notes0[17]), false);\n new Formatter().joinVoices([voice0]).formatToStave([voice0], stave);\n f.draw();\n ok(true);\n}\nfunction factoryAPI(options) {\n const f = VexFlowTests.makeFactory(options, 700, 240);\n f.Stave({ x: 10, y: 10, width: 550 });\n const accid = makeNewAccid(f);\n const notes = [\n f\n .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: 'w' })\n .addModifier(accid('b'), 0)\n .addModifier(accid('#'), 1),\n f\n .StaveNote({ keys: ['d/4', 'e/4', 'f/4', 'a/4', 'c/5', 'e/5', 'g/5'], duration: 'h' })\n .addModifier(accid('##'), 0)\n .addModifier(accid('n'), 1)\n .addModifier(accid('bb'), 2)\n .addModifier(accid('b'), 3)\n .addModifier(accid('#'), 4)\n .addModifier(accid('n'), 5)\n .addModifier(accid('bb'), 6),\n f\n .StaveNote({ keys: ['f/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5', 'g/5'], duration: '16' })\n .addModifier(accid('n'), 0)\n .addModifier(accid('#'), 1)\n .addModifier(accid('#'), 2)\n .addModifier(accid('b'), 3)\n .addModifier(accid('bb'), 4)\n .addModifier(accid('##'), 5)\n .addModifier(accid('#'), 6),\n f\n .StaveNote({ keys: ['a/3', 'c/4', 'e/4', 'b/4', 'd/5', 'g/5'], duration: 'w' })\n .addModifier(accid('#'), 0)\n .addModifier(accid('##').setAsCautionary(), 1)\n .addModifier(accid('#').setAsCautionary(), 2)\n .addModifier(accid('b'), 3)\n .addModifier(accid('bb').setAsCautionary(), 4)\n .addModifier(accid('b').setAsCautionary(), 5),\n ];\n Formatter.SimpleFormat(notes);\n notes.forEach((n, i) => {\n ok(n.getModifiersByType('Accidental').length > 0, 'Note ' + i + ' has accidentals');\n n.getModifiersByType('Accidental').forEach((accid, i) => {\n ok(accid.getWidth() > 0, 'Accidental ' + i + ' has set width');\n });\n });\n f.draw();\n ok(true, 'Factory API');\n}\nVexFlowTests.register(AccidentalTests);\nexport { AccidentalTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Annotation Tests\n// TODO: Formatter.FormatAndDraw(ctx, stave, notes, ???number???);\n// Did a previous version of the API accept a number as the fourth argument?\n// We removed the fourth argument from all of our test cases.\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Annotation, AnnotationVerticalJustify } from '../src/annotation';\nimport { Articulation } from '../src/articulation';\nimport { Beam } from '../src/beam';\nimport { Bend } from '../src/bend';\nimport { Flow } from '../src/flow';\nimport { Font, FontStyle, FontWeight } from '../src/font';\nimport { Formatter } from '../src/formatter';\nimport { ModifierPosition } from '../src/modifier';\nimport { Registry } from '../src/registry';\nimport { Stave } from '../src/stave';\nimport { StaveNote } from '../src/stavenote';\nimport { Stem } from '../src/stem';\nimport { TabNote } from '../src/tabnote';\nimport { TabStave } from '../src/tabstave';\nimport { Vibrato } from '../src/vibrato';\nimport { Voice } from '../src/voice';\nconst AnnotationTests = {\n Start() {\n QUnit.module('Annotation');\n const run = VexFlowTests.runTests;\n run('Placement', placement);\n run('Lyrics', lyrics);\n run('Simple Annotation', simple);\n run('Styled Annotation', styling);\n run('Standard Notation Annotation', standard);\n run('Harmonics', harmonic);\n run('Fingerpicking', picking);\n run('Bottom Annotation', bottom);\n run('Bottom Annotations with Beams', bottomWithBeam);\n run('Test Justification Annotation Stem Up', justificationStemUp);\n run('Test Justification Annotation Stem Down', justificationStemDown);\n run('TabNote Annotations', tabNotes);\n },\n};\nconst FONT_SIZE = VexFlowTests.Font.size;\n// Helper functions to create TabNote and StaveNote objects.\nconst tabNote = (noteStruct) => new TabNote(noteStruct);\nconst staveNote = (noteStruct) => new StaveNote(noteStruct);\n/**\n * Show lyrics using Annotation objects.\n */\nfunction lyrics(options) {\n let fontSize = FONT_SIZE;\n let x = 10;\n let width = 170;\n let ratio = 1;\n const registry = new Registry();\n Registry.enableDefaultRegistry(registry);\n const f = VexFlowTests.makeFactory(options, 750, 260);\n // Add three groups of staves. Each time we increase the fontSize by 2.\n for (let i = 0; i < 3; ++i) {\n const score = f.EasyScore();\n score.set({ time: '3/4' });\n const system = f.System({ width, x });\n system.addStave({\n voices: [\n score.voice(score.notes('(C4 F4)/2[id=\"n0\"]').concat(score.beam(score.notes('(C4 A4)/8[id=\"n1\"], (C4 A4)/8[id=\"n2\"]')))),\n ],\n });\n // Add lyrics under the first row.\n ['hand,', 'and', 'me', 'pears', 'lead', 'the'].forEach((text, ix) => {\n const verse = Math.floor(ix / 3);\n const noteGroupID = 'n' + (ix % 3);\n const noteGroup = registry.getElementById(noteGroupID);\n const lyricsAnnotation = f.Annotation({ text }).setFont('Roboto Slab', fontSize);\n lyricsAnnotation.setPosition(ModifierPosition.BELOW);\n noteGroup.addModifier(lyricsAnnotation, verse);\n });\n // Second row doesn't have any lyrics.\n system.addStave({\n voices: [score.voice(score.notes('(F4 D5)/2').concat(score.beam(score.notes('(F4 F5)/8, (F4 F5)/8'))))],\n });\n f.draw();\n ratio = (fontSize + 2) / fontSize;\n width = width * ratio;\n x = x + width;\n fontSize = fontSize + 2;\n }\n ok(true);\n}\nfunction simple(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 500, 240);\n ctx.scale(1.5, 1.5);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n ctx.font = '10pt Arial, sans-serif';\n const stave = new TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw();\n const notes = [\n tabNote({\n positions: [\n { str: 2, fret: 10 },\n { str: 4, fret: 9 },\n ],\n duration: 'h',\n }).addModifier(new Annotation('T'), 0),\n tabNote({\n positions: [{ str: 2, fret: 10 }],\n duration: 'h',\n }).addModifier(new Bend('Full').setTap('T'), 0),\n ];\n Formatter.FormatAndDraw(ctx, stave, notes);\n ok(true, 'Simple Annotation');\n}\nfunction standard(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 500, 240);\n ctx.scale(1.5, 1.5);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n const stave = new Stave(10, 10, 450).addClef('treble').setContext(ctx).draw();\n const annotation = (text) => new Annotation(text).setFont(Font.SERIF, FONT_SIZE, 'normal', 'italic');\n const notes = [\n staveNote({ keys: ['c/4', 'e/4'], duration: 'h' }).addModifier(annotation('quiet'), 0),\n staveNote({ keys: ['c/4', 'e/4', 'c/5'], duration: 'h' }).addModifier(annotation('Allegro'), 2),\n ];\n Formatter.FormatAndDraw(ctx, stave, notes);\n ok(true, 'Standard Notation Annotation');\n}\nfunction styling(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 500, 240);\n ctx.scale(1.5, 1.5);\n const stave = new Stave(10, 10, 450).addClef('treble').setContext(ctx).draw();\n const annotation = (text, style) => new Annotation(text).setFont(Font.SERIF, FONT_SIZE, 'normal', 'italic').setStyle(style);\n const notes = [\n staveNote({ keys: ['c/4', 'e/4'], duration: 'h' }).addModifier(annotation('quiet', { fillStyle: '#0F0' }), 0),\n staveNote({ keys: ['c/4', 'e/4', 'c/5'], duration: 'h' }).addModifier(annotation('Allegro', { fillStyle: '#00F' }), 2),\n ];\n Formatter.FormatAndDraw(ctx, stave, notes);\n ok(true, 'Standard Notation Annotation');\n}\nfunction harmonic(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 500, 240);\n ctx.scale(1.5, 1.5);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n ctx.font = '10pt Arial';\n const stave = new TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw();\n const notes = [\n tabNote({\n positions: [\n { str: 2, fret: 12 },\n { str: 3, fret: 12 },\n ],\n duration: 'h',\n }).addModifier(new Annotation('Harm.'), 0),\n tabNote({\n positions: [{ str: 2, fret: 9 }],\n duration: 'h',\n })\n .addModifier(new Annotation('(8va)').setFont(Font.SERIF, FONT_SIZE, FontWeight.NORMAL, FontStyle.ITALIC), 0)\n .addModifier(new Annotation('A.H.'), 0),\n ];\n Formatter.FormatAndDraw(ctx, stave, notes);\n ok(true, 'Simple Annotation');\n}\nfunction picking(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 500, 240);\n ctx.setFillStyle('#221');\n ctx.setStrokeStyle('#221');\n ctx.setFont(Font.SANS_SERIF, FONT_SIZE);\n const stave = new TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw();\n const annotation = (text) => new Annotation(text).setFont(Font.SERIF, FONT_SIZE, FontWeight.NORMAL, FontStyle.ITALIC);\n const notes = [\n tabNote({\n positions: [\n { str: 1, fret: 0 },\n { str: 2, fret: 1 },\n { str: 3, fret: 2 },\n { str: 4, fret: 2 },\n { str: 5, fret: 0 },\n ],\n duration: 'h',\n }).addModifier(new Vibrato().setVibratoWidth(40), 0),\n tabNote({\n positions: [{ str: 6, fret: 9 }],\n duration: '8',\n }).addModifier(annotation('p').setVerticalJustification(AnnotationVerticalJustify.TOP), 0),\n tabNote({\n positions: [{ str: 3, fret: 9 }],\n duration: '8',\n }).addModifier(annotation('i').setVerticalJustification(AnnotationVerticalJustify.TOP), 0),\n tabNote({\n positions: [{ str: 2, fret: 9 }],\n duration: '8',\n }).addModifier(annotation('m').setVerticalJustification(AnnotationVerticalJustify.TOP), 0),\n tabNote({\n positions: [{ str: 1, fret: 9 }],\n duration: '8',\n }).addModifier(annotation('a').setVerticalJustification(AnnotationVerticalJustify.TOP), 0),\n ];\n Formatter.FormatAndDraw(ctx, stave, notes);\n ok(true, 'Fingerpicking');\n}\nfunction placement(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 750, 300);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n const stave = new Stave(10, 50, 750).addClef('treble').setContext(ctx).draw();\n const annotation = (text, fontSize, vj) => new Annotation(text).setFont(Font.SERIF, fontSize).setVerticalJustification(vj);\n const notes = [\n staveNote({ keys: ['e/4'], duration: 'q', stem_direction: Stem.DOWN })\n .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Articulation('a-').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(annotation('v1', 10, AnnotationVerticalJustify.TOP), 0)\n .addModifier(annotation('v2', 10, AnnotationVerticalJustify.TOP), 0),\n staveNote({ keys: ['b/4'], duration: 'q', stem_direction: Stem.DOWN })\n .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Articulation('a-').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(annotation('v1', 10, AnnotationVerticalJustify.TOP), 0)\n .addModifier(annotation('v2', 10, AnnotationVerticalJustify.TOP), 0),\n staveNote({ keys: ['c/5'], duration: 'q', stem_direction: Stem.DOWN })\n .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Articulation('a-').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(annotation('v1', 10, AnnotationVerticalJustify.TOP), 0)\n .addModifier(annotation('v2', 10, AnnotationVerticalJustify.TOP), 0),\n staveNote({ keys: ['f/4'], duration: 'q' })\n .addModifier(annotation('v1', 14, AnnotationVerticalJustify.TOP), 0)\n .addModifier(annotation('v2', 14, AnnotationVerticalJustify.TOP), 0),\n staveNote({ keys: ['f/4'], duration: 'q', stem_direction: Stem.DOWN })\n .addModifier(new Articulation('am').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Articulation('a-').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(annotation('v1', 10, AnnotationVerticalJustify.TOP), 0)\n .addModifier(annotation('v2', 20, AnnotationVerticalJustify.TOP), 0),\n staveNote({ keys: ['f/5'], duration: 'q' })\n .addModifier(annotation('v1', 11, AnnotationVerticalJustify.TOP), 0)\n .addModifier(annotation('v2', 11, AnnotationVerticalJustify.TOP), 0),\n staveNote({ keys: ['f/5'], duration: 'q' })\n .addModifier(annotation('v1', 11, AnnotationVerticalJustify.TOP), 0)\n .addModifier(annotation('v2', 20, AnnotationVerticalJustify.TOP), 0),\n staveNote({ keys: ['f/4'], duration: 'q' })\n .addModifier(annotation('v1', 12, AnnotationVerticalJustify.BOTTOM), 0)\n .addModifier(annotation('v2', 12, AnnotationVerticalJustify.BOTTOM), 0),\n staveNote({ keys: ['f/5'], duration: 'q' })\n .addModifier(new Articulation('a.').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(annotation('v1', 11, AnnotationVerticalJustify.BOTTOM), 0)\n .addModifier(annotation('v2', 20, AnnotationVerticalJustify.BOTTOM), 0),\n staveNote({ keys: ['f/5'], duration: 'q', stem_direction: Stem.DOWN })\n .addModifier(new Articulation('am').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(annotation('v1', 10, AnnotationVerticalJustify.BOTTOM), 0)\n .addModifier(annotation('v2', 20, AnnotationVerticalJustify.BOTTOM), 0),\n staveNote({ keys: ['f/4'], duration: 'q', stem_direction: Stem.DOWN })\n .addModifier(annotation('v1', 10, AnnotationVerticalJustify.BOTTOM), 0)\n .addModifier(annotation('v2', 20, AnnotationVerticalJustify.BOTTOM), 0),\n staveNote({ keys: ['f/5'], duration: 'w' })\n .addModifier(new Articulation('a@u').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(annotation('v1', 11, AnnotationVerticalJustify.BOTTOM), 0)\n .addModifier(annotation('v2', 16, AnnotationVerticalJustify.BOTTOM), 0),\n ];\n Formatter.FormatAndDraw(ctx, stave, notes);\n ok(true, ' Annotation Placement');\n}\nfunction bottom(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 500, 240);\n ctx.scale(1.5, 1.5);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n const stave = new Stave(10, 10, 300).addClef('treble').setContext(ctx).draw();\n const annotation = (text) => new Annotation(text).setFont(Font.SERIF, FONT_SIZE).setVerticalJustification(Annotation.VerticalJustify.BOTTOM);\n const notes = [\n staveNote({ keys: ['f/4'], duration: 'w' }).addModifier(annotation('F'), 0),\n staveNote({ keys: ['a/4'], duration: 'w' }).addModifier(annotation('A'), 0),\n staveNote({ keys: ['c/5'], duration: 'w' }).addModifier(annotation('C'), 0),\n staveNote({ keys: ['e/5'], duration: 'w' }).addModifier(annotation('E'), 0),\n ];\n Formatter.FormatAndDraw(ctx, stave, notes);\n ok(true, 'Bottom Annotation');\n}\nfunction bottomWithBeam(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 500, 240);\n ctx.scale(1.5, 1.5);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n const stave = new Stave(10, 10, 300).addClef('treble').setContext(ctx).draw();\n const notes = [\n new StaveNote({ keys: ['a/3'], duration: '8' }).addModifier(new Annotation('good').setVerticalJustification(Annotation.VerticalJustify.BOTTOM)),\n new StaveNote({ keys: ['g/3'], duration: '8' }).addModifier(new Annotation('even').setVerticalJustification(Annotation.VerticalJustify.BOTTOM)),\n new StaveNote({ keys: ['c/4'], duration: '8' }).addModifier(new Annotation('under').setVerticalJustification(Annotation.VerticalJustify.BOTTOM)),\n new StaveNote({ keys: ['d/4'], duration: '8' }).addModifier(new Annotation('beam').setVerticalJustification(Annotation.VerticalJustify.BOTTOM)),\n ];\n const beam = new Beam(notes.slice(1));\n Formatter.FormatAndDraw(ctx, stave, notes);\n beam.setContext(ctx).draw();\n ok(true, 'Bottom Annotation with Beams');\n}\nfunction justificationStemUp(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 650, 950);\n ctx.scale(1.5, 1.5);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n const annotation = (text, hJustification, vJustification) => new Annotation(text)\n .setFont(Font.SANS_SERIF, FONT_SIZE)\n .setJustification(hJustification)\n .setVerticalJustification(vJustification);\n for (let v = 1; v <= 4; ++v) {\n const stave = new Stave(10, (v - 1) * 150 + 40, 400).addClef('treble').setContext(ctx).draw();\n const notes = [\n staveNote({ keys: ['c/3'], duration: 'q' }).addModifier(annotation('Text', 1, v), 0),\n staveNote({ keys: ['c/4'], duration: 'q' }).addModifier(annotation('Text', 2, v), 0),\n staveNote({ keys: ['c/5'], duration: 'q' }).addModifier(annotation('Text', 3, v), 0),\n staveNote({ keys: ['c/6'], duration: 'q' }).addModifier(annotation('Text', 4, v), 0),\n ];\n Formatter.FormatAndDraw(ctx, stave, notes);\n }\n ok(true, 'Test Justification Annotation');\n}\nfunction justificationStemDown(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 650, 1000);\n ctx.scale(1.5, 1.5);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n const annotation = (text, hJustification, vJustification) => new Annotation(text)\n .setFont(Font.SANS_SERIF, FONT_SIZE)\n .setJustification(hJustification)\n .setVerticalJustification(vJustification);\n for (let v = 1; v <= 4; ++v) {\n const stave = new Stave(10, (v - 1) * 150 + 40, 400).addClef('treble').setContext(ctx).draw();\n const notes = [\n staveNote({ keys: ['c/3'], duration: 'q', stem_direction: -1 }).addModifier(annotation('Text', 1, v), 0),\n staveNote({ keys: ['c/4'], duration: 'q', stem_direction: -1 }).addModifier(annotation('Text', 2, v), 0),\n staveNote({ keys: ['c/5'], duration: 'q', stem_direction: -1 }).addModifier(annotation('Text', 3, v), 0),\n staveNote({ keys: ['c/6'], duration: 'q', stem_direction: -1 }).addModifier(annotation('Text', 4, v), 0),\n ];\n Formatter.FormatAndDraw(ctx, stave, notes);\n }\n ok(true, 'Test Justification Annotation');\n}\nfunction tabNotes(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 600, 200);\n ctx.font = '10pt Arial, sans-serif';\n const stave = new TabStave(10, 10, 550);\n stave.setContext(ctx);\n stave.draw();\n const specs = [\n {\n positions: [\n { str: 3, fret: 6 },\n { str: 4, fret: 25 },\n ],\n duration: '8',\n },\n {\n positions: [\n { str: 2, fret: 10 },\n { str: 5, fret: 12 },\n ],\n duration: '8',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 3, fret: 5 },\n ],\n duration: '8',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 3, fret: 5 },\n ],\n duration: '8',\n },\n ];\n const notes1 = specs.map((noteSpec) => {\n const note = new TabNote(noteSpec);\n note.render_options.draw_stem = true;\n return note;\n });\n const notes2 = specs.map((noteSpec) => {\n const note = new TabNote(noteSpec);\n note.render_options.draw_stem = true;\n note.setStemDirection(-1);\n return note;\n });\n const notes3 = specs.map((noteSpec) => new TabNote(noteSpec));\n notes1[0].addModifier(new Annotation('Text').setJustification(1).setVerticalJustification(1)); // U\n notes1[1].addModifier(new Annotation('Text').setJustification(2).setVerticalJustification(2)); // D\n notes1[2].addModifier(new Annotation('Text').setJustification(3).setVerticalJustification(3)); // U\n notes1[3].addModifier(new Annotation('Text').setJustification(4).setVerticalJustification(4)); // D\n notes2[0].addModifier(new Annotation('Text').setJustification(3).setVerticalJustification(1)); // U\n notes2[1].addModifier(new Annotation('Text').setJustification(3).setVerticalJustification(2)); // D\n notes2[2].addModifier(new Annotation('Text').setJustification(3).setVerticalJustification(3)); // U\n notes2[3].addModifier(new Annotation('Text').setJustification(3).setVerticalJustification(4)); // D\n notes3[0].addModifier(new Annotation('Text').setVerticalJustification(1)); // U\n notes3[1].addModifier(new Annotation('Text').setVerticalJustification(2)); // D\n notes3[2].addModifier(new Annotation('Text').setVerticalJustification(3)); // U\n notes3[3].addModifier(new Annotation('Text').setVerticalJustification(4)); // D\n const voice = new Voice(Flow.TIME4_4).setMode(Voice.Mode.SOFT);\n voice.addTickables(notes1);\n voice.addTickables(notes2);\n voice.addTickables(notes3);\n // Alternatively, you could add all the notes in one big array with spread syntax.\n // voice.addTickables([...notes1, ...notes2, ...notes3]);\n new Formatter().joinVoices([voice]).formatToStave([voice], stave, { stave });\n voice.draw(ctx, stave);\n ok(true, 'TabNotes successfully drawn');\n}\nVexFlowTests.register(AnnotationTests);\nexport { AnnotationTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Articulation Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Articulation } from '../src/articulation';\nimport { Beam } from '../src/beam';\nimport { Flow } from '../src/flow';\nimport { Font } from '../src/font';\nimport { Formatter } from '../src/formatter';\nimport { ModifierPosition } from '../src/modifier';\nimport { Stave } from '../src/stave';\nimport { Barline } from '../src/stavebarline';\nimport { StaveNote } from '../src/stavenote';\nimport { Stem } from '../src/stem';\nimport { TabNote } from '../src/tabnote';\nimport { TabStave } from '../src/tabstave';\nimport { Voice } from '../src/voice';\nconst ArticulationTests = {\n Start() {\n QUnit.module('Articulation');\n const run = VexFlowTests.runTests;\n run('Articulation - Vertical Placement', verticalPlacement);\n run('Articulation - Staccato/Staccatissimo', drawArticulations, { sym1: 'a.', sym2: 'av' });\n run('Articulation - Accent/Tenuto', drawArticulations, { sym1: 'a>', sym2: 'a-' });\n run('Articulation - Marcato/L.H. Pizzicato', drawArticulations, { sym1: 'a^', sym2: 'a+' });\n run('Articulation - Snap Pizzicato/Fermata', drawArticulations, { sym1: 'ao', sym2: 'ao' });\n run('Articulation - Up-stroke/Down-Stroke', drawArticulations, { sym1: 'a|', sym2: 'am' });\n run('Articulation - Fermata Above/Below', drawFermata, { sym1: 'a@a', sym2: 'a@u' });\n run('Articulation - Fermata Short Above/Below', drawFermata, { sym1: 'a@as', sym2: 'a@us' });\n run('Articulation - Fermata Long Above/Below', drawFermata, { sym1: 'a@al', sym2: 'a@ul' });\n run('Articulation - Fermata Very Long Above/Below', drawFermata, { sym1: 'a@avl', sym2: 'a@uvl' });\n run('Articulation - Inline/Multiple', drawArticulations2, { sym1: 'a.', sym2: 'a.' });\n run('TabNote Articulation', tabNotes, { sym1: 'a.', sym2: 'a.' });\n },\n};\n// Helper function for creating StaveNotes.\nfunction drawArticulations(options) {\n const sym1 = options.params.sym1;\n const sym2 = options.params.sym2;\n const width = 125 - Stave.defaultPadding;\n const f = VexFlowTests.makeFactory(options, 675, 195);\n const ctx = f.getContext();\n expect(0);\n let x = 10;\n const y = 30;\n const score = f.EasyScore();\n const formatAndDrawToWidth = (x, y, width, notes, barline) => {\n const voices = [score.voice(notes, { time: '4/4' })];\n const formatter = f.Formatter();\n voices.forEach((v) => formatter.joinVoices([v]));\n const nwidth = Math.max(formatter.preCalculateMinTotalWidth(voices), width);\n formatter.format(voices, nwidth);\n const stave = f\n .Stave({ x, y, width: nwidth + Stave.defaultPadding })\n .setEndBarType(barline)\n .setContext(ctx)\n .draw();\n voices.forEach((voice) => voice.draw(ctx, stave));\n return stave.getWidth();\n };\n // bar 1\n const notesBar1 = [\n f.StaveNote({ keys: ['a/3'], duration: 'q', stem_direction: 1 }),\n f.StaveNote({ keys: ['a/4'], duration: 'q', stem_direction: 1 }),\n f.StaveNote({ keys: ['c/4'], duration: 'q', stem_direction: 1 }),\n f.StaveNote({ keys: ['a/4'], duration: 'q', stem_direction: 1 }),\n ];\n notesBar1[0].addModifier(new Articulation(sym1).setPosition(4), 0);\n notesBar1[1].addModifier(new Articulation(sym1).setPosition(4), 0);\n notesBar1[2].addModifier(new Articulation(sym1).setPosition(3), 0);\n notesBar1[3].addModifier(new Articulation(sym1).setPosition(3), 0);\n // Helper function to justify and draw a 4/4 voice\n x += formatAndDrawToWidth(x, y, width, notesBar1, Barline.type.NONE);\n // bar 2 - juxtaposing second bar next to first bar\n const notesBar2 = [\n f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: -1 }),\n f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: -1 }),\n f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: -1 }),\n f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: -1 }),\n ];\n notesBar2[0].addModifier(new Articulation(sym1).setPosition(3), 0);\n notesBar2[1].addModifier(new Articulation(sym1).setPosition(3), 0);\n notesBar2[2].addModifier(new Articulation(sym1).setPosition(4), 0);\n notesBar2[3].addModifier(new Articulation(sym1).setPosition(4), 0);\n // Helper function to justify and draw a 4/4 voice\n x += formatAndDrawToWidth(x, y, width, notesBar2, Barline.type.DOUBLE);\n // bar 3 - juxtaposing second bar next to first bar\n const notesBar3 = [\n f.StaveNote({ keys: ['c/4'], duration: 'q', stem_direction: 1 }),\n f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: 1 }),\n f.StaveNote({ keys: ['c/4'], duration: 'q', stem_direction: 1 }),\n f.StaveNote({ keys: ['a/4'], duration: 'q', stem_direction: 1 }),\n ];\n notesBar3[0].addModifier(new Articulation(sym2).setPosition(4), 0);\n notesBar3[1].addModifier(new Articulation(sym2).setPosition(4), 0);\n notesBar3[2].addModifier(new Articulation(sym2).setPosition(3), 0);\n notesBar3[3].addModifier(new Articulation(sym2).setPosition(3), 0);\n // Helper function to justify and draw a 4/4 voice\n x += formatAndDrawToWidth(x, y, width, notesBar3, Barline.type.NONE);\n // bar 4 - juxtaposing second bar next to first bar\n const notesBar4 = [\n f.StaveNote({ keys: ['a/4'], duration: 'q', stem_direction: -1 }),\n f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: -1 }),\n f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: -1 }),\n f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: -1 }),\n ];\n notesBar4[0].addModifier(new Articulation(sym2).setPosition(3), 0);\n notesBar4[1].addModifier(new Articulation(sym2).setPosition(3), 0);\n notesBar4[2].addModifier(new Articulation(sym2).setPosition(4), 0);\n notesBar4[3].addModifier(new Articulation(sym2).setPosition(4), 0);\n // Helper function to justify and draw a 4/4 voice\n formatAndDrawToWidth(x, y, width, notesBar4, Barline.type.END);\n}\nfunction drawFermata(options) {\n const sym1 = options.params.sym1;\n const sym2 = options.params.sym2;\n const f = VexFlowTests.makeFactory(options, 400, 195);\n const ctx = f.getContext();\n const score = f.EasyScore();\n const width = 150 - Stave.defaultPadding;\n let x = 50;\n const y = 30;\n const formatAndDrawToWidth = (x, y, width, notes, barline) => {\n const voices = [score.voice(notes, { time: '4/4' })];\n const formatter = f.Formatter();\n voices.forEach((v) => formatter.joinVoices([v]));\n const nwidth = Math.max(formatter.preCalculateMinTotalWidth(voices), width);\n formatter.format(voices, nwidth);\n const stave = f\n .Stave({ x, y, width: nwidth + Stave.defaultPadding })\n .setEndBarType(barline)\n .setContext(ctx)\n .draw();\n voices.forEach((voice) => voice.draw(ctx, stave));\n return stave.getWidth();\n };\n expect(0);\n const notesBar1 = [\n f.StaveNote({ keys: ['c/4'], duration: 'q', stem_direction: 1 }),\n f.StaveNote({ keys: ['a/4'], duration: 'q', stem_direction: 1 }),\n f.StaveNote({ keys: ['c/4'], duration: 'q', stem_direction: -1 }),\n f.StaveNote({ keys: ['a/4'], duration: 'q', stem_direction: -1 }),\n ];\n notesBar1[0].addModifier(new Articulation(sym1).setPosition(3), 0);\n notesBar1[1].addModifier(new Articulation(sym1).setPosition(3), 0);\n notesBar1[2].addModifier(new Articulation(sym2).setPosition(4), 0);\n notesBar1[3].addModifier(new Articulation(sym2).setPosition(4), 0);\n x += formatAndDrawToWidth(x, y, width, notesBar1, Barline.type.NONE);\n // bar 2 - juxtaposing second bar next to first bar\n const notesBar2 = [\n f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: 1 }),\n f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: 1 }),\n f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: -1 }),\n f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: -1 }),\n ];\n notesBar2[0].addModifier(new Articulation(sym1).setPosition(3), 0);\n notesBar2[1].addModifier(new Articulation(sym1).setPosition(3), 0);\n notesBar2[2].addModifier(new Articulation(sym2).setPosition(4), 0);\n notesBar2[3].addModifier(new Articulation(sym2).setPosition(4), 0);\n // Helper function to justify and draw a 4/4 voice\n formatAndDrawToWidth(x, y, width, notesBar2, Barline.type.DOUBLE);\n}\nfunction verticalPlacement(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 750, 300);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n const staveNote = (noteStruct) => new StaveNote(noteStruct);\n const stave = new Stave(10, 50, 750).addClef('treble').setContext(ctx).draw();\n const notes = [\n staveNote({ keys: ['f/4'], duration: 'q' })\n .addModifier(new Articulation('a@u').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(new Articulation('a.').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(new Articulation('a-').setPosition(ModifierPosition.BELOW), 0),\n staveNote({ keys: ['g/4'], duration: 'q', stem_direction: Stem.DOWN })\n .addModifier(new Articulation('a@u').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(new Articulation('a.').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(new Articulation('a-').setPosition(ModifierPosition.BELOW), 0),\n staveNote({ keys: ['c/5'], duration: 'q' })\n .addModifier(new Articulation('a@u').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(new Articulation('a.').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(new Articulation('a-').setPosition(ModifierPosition.BELOW), 0),\n staveNote({ keys: ['f/4'], duration: 'q' })\n .addModifier(new Articulation('a.').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(new Articulation('a-').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(new Articulation('a@u').setPosition(ModifierPosition.BELOW), 0),\n staveNote({ keys: ['g/4'], duration: 'q', stem_direction: Stem.DOWN })\n .addModifier(new Articulation('a.').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(new Articulation('a-').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(new Articulation('a@u').setPosition(ModifierPosition.BELOW), 0),\n staveNote({ keys: ['c/5'], duration: 'q' })\n .addModifier(new Articulation('a.').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(new Articulation('a-').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(new Articulation('a@u').setPosition(ModifierPosition.BELOW), 0),\n staveNote({ keys: ['a/5'], duration: 'q', stem_direction: Stem.DOWN })\n .addModifier(new Articulation('a@a').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Articulation('a-').setPosition(ModifierPosition.ABOVE), 0),\n staveNote({ keys: ['f/5'], duration: 'q' })\n .addModifier(new Articulation('a@a').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Articulation('a-').setPosition(ModifierPosition.ABOVE), 0),\n staveNote({ keys: ['b/4'], duration: 'q', stem_direction: Stem.DOWN })\n .addModifier(new Articulation('a@a').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Articulation('a-').setPosition(ModifierPosition.ABOVE), 0),\n staveNote({ keys: ['a/5'], duration: 'q', stem_direction: Stem.DOWN })\n .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Articulation('a-').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Articulation('a@a').setPosition(ModifierPosition.ABOVE), 0),\n staveNote({ keys: ['f/5'], duration: 'q' })\n .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Articulation('a-').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Articulation('a@a').setPosition(ModifierPosition.ABOVE), 0),\n staveNote({ keys: ['b/4'], duration: 'q', stem_direction: Stem.DOWN })\n .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Articulation('a-').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Articulation('a@a').setPosition(ModifierPosition.ABOVE), 0),\n ];\n Formatter.FormatAndDraw(ctx, stave, notes);\n ok(true, ' Annotation Placement');\n}\nfunction drawArticulations2(options) {\n expect(0);\n const scale = 0.8;\n const f = VexFlowTests.makeFactory(options, 1500, 195);\n // Get the rendering context\n const ctx = f.getContext();\n ctx.scale(scale, scale);\n // bar 1\n const stave1 = new Stave(10, 50, 500).setContext(ctx).draw();\n const notesBar1 = [\n f.StaveNote({ keys: ['c/4'], duration: '16', stem_direction: 1 }),\n f.StaveNote({ keys: ['d/4'], duration: '16', stem_direction: 1 }),\n f.StaveNote({ keys: ['e/4'], duration: '16', stem_direction: 1 }),\n f.StaveNote({ keys: ['f/4'], duration: '16', stem_direction: 1 }),\n f.StaveNote({ keys: ['g/4'], duration: '16', stem_direction: 1 }),\n f.StaveNote({ keys: ['a/4'], duration: '16', stem_direction: 1 }),\n f.StaveNote({ keys: ['b/4'], duration: '16', stem_direction: 1 }),\n f.StaveNote({ keys: ['c/5'], duration: '16', stem_direction: 1 }),\n f.StaveNote({ keys: ['d/5'], duration: '16', stem_direction: -1 }),\n f.StaveNote({ keys: ['e/5'], duration: '16', stem_direction: -1 }),\n f.StaveNote({ keys: ['f/5'], duration: '16', stem_direction: -1 }),\n f.StaveNote({ keys: ['g/5'], duration: '16', stem_direction: -1 }),\n f.StaveNote({ keys: ['a/5'], duration: '16', stem_direction: -1 }),\n f.StaveNote({ keys: ['b/5'], duration: '16', stem_direction: -1 }),\n f.StaveNote({ keys: ['c/6'], duration: '16', stem_direction: -1 }),\n f.StaveNote({ keys: ['d/6'], duration: '16', stem_direction: -1 }),\n ];\n let i;\n for (i = 0; i < 16; i++) {\n notesBar1[i].addModifier(new Articulation('a.').setPosition(4), 0);\n notesBar1[i].addModifier(new Articulation('a>').setPosition(4), 0);\n if (i === 15) {\n notesBar1[i].addModifier(new Articulation('a@u').setPosition(4), 0);\n }\n }\n const beam1 = new Beam(notesBar1.slice(0, 8));\n const beam2 = new Beam(notesBar1.slice(8, 16));\n Formatter.FormatAndDraw(ctx, stave1, notesBar1);\n beam1.setContext(ctx).draw();\n beam2.setContext(ctx).draw();\n // bar 2 - juxtaposing second bar next to first bar\n const stave2 = new Stave(510, 50, 500).setContext(ctx).draw();\n const notesBar2 = [\n f.StaveNote({ keys: ['f/3'], duration: '16', stem_direction: 1 }),\n f.StaveNote({ keys: ['g/3'], duration: '16', stem_direction: 1 }),\n f.StaveNote({ keys: ['a/3'], duration: '16', stem_direction: 1 }),\n f.StaveNote({ keys: ['b/3'], duration: '16', stem_direction: 1 }),\n f.StaveNote({ keys: ['c/4'], duration: '16', stem_direction: 1 }),\n f.StaveNote({ keys: ['d/4'], duration: '16', stem_direction: 1 }),\n f.StaveNote({ keys: ['e/4'], duration: '16', stem_direction: 1 }),\n f.StaveNote({ keys: ['f/4'], duration: '16', stem_direction: 1 }),\n f.StaveNote({ keys: ['g/4'], duration: '16', stem_direction: -1 }),\n f.StaveNote({ keys: ['a/4'], duration: '16', stem_direction: -1 }),\n f.StaveNote({ keys: ['b/4'], duration: '16', stem_direction: -1 }),\n f.StaveNote({ keys: ['c/5'], duration: '16', stem_direction: -1 }),\n f.StaveNote({ keys: ['d/5'], duration: '16', stem_direction: -1 }),\n f.StaveNote({ keys: ['e/5'], duration: '16', stem_direction: -1 }),\n f.StaveNote({ keys: ['f/5'], duration: '16', stem_direction: -1 }),\n f.StaveNote({ keys: ['g/5'], duration: '16', stem_direction: -1 }),\n ];\n for (i = 0; i < 16; i++) {\n notesBar2[i].addModifier(new Articulation('a-').setPosition(3), 0);\n notesBar2[i].addModifier(new Articulation('a^').setPosition(3), 0);\n if (i === 15) {\n notesBar2[i].addModifier(new Articulation('a@u').setPosition(4), 0);\n }\n }\n const beam3 = new Beam(notesBar2.slice(0, 8));\n const beam4 = new Beam(notesBar2.slice(8, 16));\n Formatter.FormatAndDraw(ctx, stave2, notesBar2);\n beam3.setContext(ctx).draw();\n beam4.setContext(ctx).draw();\n // bar 3 - juxtaposing second bar next to first bar\n const stave3 = new Stave(1010, 50, 100).setContext(ctx).draw();\n const notesBar3 = [f.StaveNote({ keys: ['c/4'], duration: 'w', stem_direction: 1 })];\n notesBar3[0].addModifier(new Articulation('a-').setPosition(3), 0);\n notesBar3[0].addModifier(new Articulation('a>').setPosition(3), 0);\n notesBar3[0].addModifier(new Articulation('a@a').setPosition(3), 0);\n Formatter.FormatAndDraw(ctx, stave3, notesBar3);\n // bar 4 - juxtaposing second bar next to first bar\n const stave4 = new Stave(1110, 50, 250).setContext(ctx).draw();\n const notesBar4 = [\n f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: -1 }),\n f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: -1 }),\n f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: -1 }),\n f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: -1 }),\n ];\n for (i = 0; i < 4; i++) {\n let position1 = 3;\n if (i > 1) {\n position1 = 4;\n }\n notesBar4[i].addModifier(new Articulation('a-').setPosition(position1), 0);\n }\n Formatter.FormatAndDraw(ctx, stave4, notesBar4);\n}\nfunction tabNotes(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 600, 200);\n ctx.font = '10pt ' + Font.SANS_SERIF;\n const stave = new TabStave(10, 10, 550);\n stave.setContext(ctx);\n stave.draw();\n const specs = [\n {\n positions: [\n { str: 3, fret: 6 },\n { str: 4, fret: 25 },\n ],\n duration: '8',\n },\n {\n positions: [\n { str: 2, fret: 10 },\n { str: 5, fret: 12 },\n ],\n duration: '8',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 3, fret: 5 },\n ],\n duration: '8',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 3, fret: 5 },\n ],\n duration: '8',\n },\n ];\n const notes1 = specs.map((noteSpec) => {\n const tabNote = new TabNote(noteSpec);\n tabNote.render_options.draw_stem = true;\n return tabNote;\n });\n const notes2 = specs.map((noteSpec) => {\n const tabNote = new TabNote(noteSpec);\n tabNote.render_options.draw_stem = true;\n tabNote.setStemDirection(-1);\n return tabNote;\n });\n const notes3 = specs.map((noteSpec) => new TabNote(noteSpec));\n notes1[0].addModifier(new Articulation('a>').setPosition(3), 0); // U\n notes1[1].addModifier(new Articulation('a>').setPosition(4), 0); // D\n notes1[2].addModifier(new Articulation('a.').setPosition(3), 0); // U\n notes1[3].addModifier(new Articulation('a.').setPosition(4), 0); // D\n notes2[0].addModifier(new Articulation('a>').setPosition(3), 0);\n notes2[1].addModifier(new Articulation('a>').setPosition(4), 0);\n notes2[2].addModifier(new Articulation('a.').setPosition(3), 0);\n notes2[3].addModifier(new Articulation('a.').setPosition(4), 0);\n notes3[0].addModifier(new Articulation('a>').setPosition(3), 0);\n notes3[1].addModifier(new Articulation('a>').setPosition(4), 0);\n notes3[2].addModifier(new Articulation('a.').setPosition(3), 0);\n notes3[3].addModifier(new Articulation('a.').setPosition(4), 0);\n const voice = new Voice(Flow.TIME4_4).setMode(Voice.Mode.SOFT);\n voice.addTickables(notes1);\n voice.addTickables(notes2);\n voice.addTickables(notes3);\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n voice.draw(ctx, stave);\n ok(true, 'TabNotes successfully drawn');\n}\nVexFlowTests.register(ArticulationTests);\nexport { ArticulationTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Auto Beaming Tests\n// TODO: Beam.generateBeams(voice.getTickables() as StemmableNote[], ...) requires a cast to StemmableNote[].\n// Is there a cleaner way to handle this?\nimport { concat, VexFlowTests } from './vexflow_test_helpers';\nimport { Beam } from '../src/beam';\nimport { Fraction } from '../src/fraction';\nimport { Stave } from '../src/stave';\nimport { Stem } from '../src/stem';\nconst AutoBeamFormattingTests = {\n Start() {\n QUnit.module('Auto-Beaming');\n const run = VexFlowTests.runTests;\n run('Simple Auto Beaming', simpleAuto);\n run('Auto Beaming With Overflow Group', simpleAutoWithOverflowGroup);\n run('Even Group Stem Directions', evenGroupStemDirections);\n run('Odd Group Stem Directions', oddGroupStemDirections);\n run('Odd Beam Groups Auto Beaming', oddBeamGroups);\n run('More Simple Auto Beaming 0', moreSimple0);\n run('More Simple Auto Beaming 1', moreSimple1);\n run('Beam Across All Rests', beamAcrossAllRests);\n run('Beam Across All Rests with Stemlets', beamAcrossAllRestsWithStemlets);\n run('Break Beams on Middle Rests Only', beamAcrossMiddleRests);\n run('Break Beams on Rest', breakBeamsOnRests);\n run('Maintain Stem Directions', maintainStemDirections);\n run('Maintain Stem Directions - Beam Over Rests', maintainStemDirectionsBeamAcrossRests);\n run('Beat group with unbeamable note - 2/2', groupWithUnbeamableNote);\n run('Offset beat grouping - 6/8 ', groupWithUnbeamableNote1);\n run('Odd Time - Guessing Default Beam Groups', autoOddBeamGroups);\n run('Custom Beam Groups', customBeamGroups);\n run('Simple Tuplet Auto Beaming', simpleTuplets);\n run('More Simple Tuplet Auto Beaming', moreSimpleTuplets);\n run('More Automatic Beaming', moreBeaming);\n run('Automatic Beaming 4/4 with 3, 3, 2 Pattern', beamingWithSeveralGroups1);\n run('Automatic Beaming 4/4 with 3, 3, 2 Pattern and Overflow', beamingWithSeveralGroupsOverflow);\n run('Automatic Beaming 8/4 with 3, 2, 3 Pattern and 2 Overflows', beamingWithSeveralGroupsOverflow2);\n run('Automatic Beaming 8/4 with 3, 2, 3 Pattern and 3 Overflows', beamingWithSeveralGroupsOverflow3);\n run('Duration-Based Secondary Beam Breaks', secondaryBreaks1);\n run('Duration-Based Secondary Beam Breaks 2', secondaryBreaks2);\n run('Flat Beams Up', flatBeamsUp);\n run('Flat Beams Down', flatBeamsDown);\n run('Flat Beams Mixed Direction', flatBeamsMixed);\n run('Flat Beams Up (uniform)', flatBeamsUpUniform);\n run('Flat Beams Down (uniform)', flatBeamsDownUniform);\n run('Flat Beams Up Bounds', flatBeamsUpBounds);\n run('Flat Beams Down Bounds', flatBeamsDownBounds);\n },\n};\nfunction simpleAuto(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const voice = score.voice(score.notes('f5/8, e5, d5, c5/16, c5, d5/8, e5, f5, f5/32, f5, f5, f5'), { time: '4/4' });\n // Takes a voice and returns its auto beams.\n const beams = Beam.applyAndGetBeams(voice);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Auto Beaming Applicator Test');\n}\nfunction simpleAutoWithOverflowGroup(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n // Add a . after a note (e.g., f5/4.) to make it a dotted note.\n const voice = score.voice(score.notes('f5/4., e5/8, d5/8, d5/16, c5/16, c5/16, c5/16, f5/16, f5/32, f5/32'), {\n time: '4/4',\n });\n // Takes a voice and returns its auto beams.\n const beams = Beam.applyAndGetBeams(voice);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Auto Beaming Applicator Test');\n}\nfunction evenGroupStemDirections(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const voice = score.voice(score.notes('a4/8, b4, g4, c5, f4, d5, e4, e5, b4, b4, g4, d5'), { time: '6/4' });\n // Takes a voice and returns its auto beams.\n const beams = Beam.applyAndGetBeams(voice);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n equal(beams[0].getStemDirection(), Stem.UP);\n equal(beams[1].getStemDirection(), Stem.UP);\n equal(beams[2].getStemDirection(), Stem.UP);\n equal(beams[3].getStemDirection(), Stem.UP);\n equal(beams[4].getStemDirection(), Stem.DOWN);\n equal(beams[5].getStemDirection(), Stem.DOWN);\n ok(true, 'Auto Beaming Applicator Test');\n}\nfunction oddGroupStemDirections(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const voice = score.voice(score.notes('g4/8, b4, d5, c5, f4, d5, e4, g5, g4, b4, g4, d5, a4, c5, a4'), {\n time: '15/8',\n });\n const groups = [new Fraction(3, 8)];\n const beams = Beam.applyAndGetBeams(voice, undefined, groups);\n equal(beams[0].getStemDirection(), Stem.DOWN, 'Notes are equidistant from middle line');\n equal(beams[1].getStemDirection(), Stem.DOWN);\n equal(beams[2].getStemDirection(), Stem.UP);\n equal(beams[3].getStemDirection(), Stem.DOWN, 'Notes are equidistant from middle line');\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Auto Beaming Applicator Test');\n}\nfunction oddBeamGroups(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const voice = score.voice(score.notes('f5, e5, d5, c5, c5, d5, e5, f5, f5, f4, f3, f5/16, f5'), { time: '6/4' });\n const groups = [new Fraction(2, 8), new Fraction(3, 8), new Fraction(1, 8)];\n // Takes a voice and returns its auto beams.\n const beams = Beam.applyAndGetBeams(voice, undefined, groups);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Auto Beam Applicator Test');\n}\nfunction moreSimple0(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const voice = score.voice(score.notes('c4/8, g4, c5, g5, a5, c4, d4, a5'), { time: '4/4' });\n const beams = Beam.applyAndGetBeams(voice);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Auto Beam Applicator Test');\n}\nfunction moreSimple1(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const voice = score.voice(score.notes('c5/16, g5, c5, c5/r, c5/r, (c4 e4 g4), d4, a5, c4, g4, c5, b4/r, (c4 e4), b4/r, b4/r, a4'), { time: '4/4' });\n const beams = Beam.applyAndGetBeams(voice);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Auto Beam Applicator Test');\n}\nfunction breakBeamsOnRests(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const voice = score.voice(score.notes('c5/16, g5, c5, c5/r, c5/r, (c4 e4 g4), d4, a5, c4, g4, c5, b4/r, (c4 e4), b4/r, b4/r, a4'), { time: '4/4' });\n const beams = Beam.generateBeams(voice.getTickables(), {\n beam_rests: false,\n });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Auto Beam Applicator Test');\n}\nfunction beamAcrossAllRestsWithStemlets(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const voice = score.voice(score.notes('c5/16, g5, c5, c5/r, c5/r, (c4 e4 g4), d4, a5, c4, g4, c5, b4/r, (c4 e4), b4/r, b4/r, a4'), { time: '4/4' });\n const beams = Beam.generateBeams(voice.getTickables(), {\n beam_rests: true,\n show_stemlets: true,\n });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Auto Beam Applicator Test');\n}\nfunction beamAcrossAllRests(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const voice = score.voice(score.notes('c5/16, g5, c5, c5/r, c5/r, (c4 e4 g4), d4, a5, c4, g4, c5, b4/r, (c4 e4), b4/r, b4/r, a4'), { time: '4/4' });\n const beams = Beam.generateBeams(voice.getTickables(), {\n beam_rests: true,\n });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Auto Beam Applicator Test');\n}\nfunction beamAcrossMiddleRests(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const voice = score.voice(score.notes('c5/16, g5, c5, c5/r, c5/r, (c4 e4 g4), d4, a5, c4, g4, c5, b4/r, (c4 e4), b4/r, b4/r, a4'), { time: '4/4' });\n const beams = Beam.generateBeams(voice.getTickables(), {\n beam_rests: true,\n beam_middle_only: true,\n });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Auto Beam Applicator Test');\n}\nfunction maintainStemDirections(options) {\n const f = VexFlowTests.makeFactory(options, 450, 200);\n const stave = f.Stave();\n const score = f.EasyScore();\n // EasyScore.notes(line, ...) ignores whitespace in the line string.\n const voice = score.voice(score.notes([\n 'b4/16, b4, b4[stem=\"down\"], b4/r',\n 'b4/r, b4[stem=\"down\"], b4, b4',\n 'b4[stem=\"down\"], b4[stem=\"down\"], b4, b4/r',\n 'b4/32, b4[stem=\"down\"], b4[stem=\"down\"], b4, b4/16/r, b4',\n ].join(', '), { stem: 'up' }), { time: '4/4' });\n const beams = Beam.generateBeams(voice.getTickables(), {\n beam_rests: false,\n maintain_stem_directions: true,\n });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Auto Beam Applicator Test');\n}\nfunction maintainStemDirectionsBeamAcrossRests(options) {\n const f = VexFlowTests.makeFactory(options, 450, 200);\n const stave = f.Stave();\n const score = f.EasyScore();\n const voice = score.voice(score.notes([\n 'b4/16, b4, b4[stem=\"down\"], b4/r',\n 'b4/r, b4[stem=\"down\"], b4, b4',\n 'b4[stem=\"down\"], b4[stem=\"down\"], b4, b4/r',\n 'b4/32, b4[stem=\"down\"], b4[stem=\"down\"], b4, b4/16/r, b4',\n ].join(', '), { stem: 'up' }), { time: '4/4' });\n const beams = Beam.generateBeams(voice.getTickables(), {\n beam_rests: true,\n maintain_stem_directions: true,\n });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Auto Beam Applicator Test');\n}\nfunction groupWithUnbeamableNote(options) {\n const f = VexFlowTests.makeFactory(options, 450, 200);\n const stave = f.Stave().addTimeSignature('2/4');\n const score = f.EasyScore();\n const voice = score.voice(score.notes('b4/16, b4, b4/4, b4/16, b4'), { time: '2/4' });\n const beams = Beam.generateBeams(voice.getTickables(), {\n groups: [new Fraction(2, 2)],\n beam_rests: false,\n maintain_stem_directions: true,\n });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Auto Beam Applicator Test');\n}\nfunction groupWithUnbeamableNote1(options) {\n const f = VexFlowTests.makeFactory(options, 450, 200);\n const stave = f.Stave().addTimeSignature('6/8');\n const score = f.EasyScore();\n const voice = score.voice(score.notes('b4/4, b4/4, b4/8, b4/8'), { time: '6/8' });\n const beams = Beam.generateBeams(voice.getTickables(), {\n groups: [new Fraction(3, 8)],\n beam_rests: false,\n maintain_stem_directions: true,\n });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Auto Beam Applicator Test');\n}\nfunction autoOddBeamGroups(options) {\n const f = VexFlowTests.makeFactory(options, 450, 400);\n const score = f.EasyScore();\n const stave1 = f.Stave({ y: 10 }).addTimeSignature('5/4');\n const voice1 = score.voice(score.notes('c5/8, g5, c5, b4, b4, c4, d4, a5, c4, g4'), { time: '5/4' });\n const stave2 = f.Stave({ y: 150 }).addTimeSignature('5/8');\n const voice2 = score.voice(score.notes('c5/8, g5, c5, b4, b4'), { time: '5/8' });\n const stave3 = f.Stave({ y: 290 }).addTimeSignature('13/16');\n const voice3 = score.voice(score.notes('c5/16, g5, c5, b4, b4, c5, g5, c5, b4, b4, c5, b4, b4'), {\n time: '13/16',\n });\n // Flatten the arrays into a single Beam[].\n const beams = [\n ...Beam.applyAndGetBeams(voice1, undefined, Beam.getDefaultBeamGroups('5/4')),\n ...Beam.applyAndGetBeams(voice2, undefined, Beam.getDefaultBeamGroups('5/8')),\n ...Beam.applyAndGetBeams(voice3, undefined, Beam.getDefaultBeamGroups('13/16')),\n ];\n f.Formatter().formatToStave([voice1], stave1).formatToStave([voice2], stave2).formatToStave([voice3], stave3);\n Stave.formatBegModifiers([stave1, stave2, stave3]);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Auto Beam Applicator Test');\n}\nfunction customBeamGroups(options) {\n const f = VexFlowTests.makeFactory(options, 450, 400);\n const score = f.EasyScore();\n const stave1 = f.Stave({ y: 10 }).addTimeSignature('5/4');\n const voice1 = score.voice(score.notes('c5/8, g5, c5, b4, b4, c4, d4, a5, c4, g4'), { time: '5/4' });\n const stave2 = f.Stave({ y: 150 }).addTimeSignature('5/8');\n const voice2 = score.voice(score.notes('c5/8, g5, c5, b4, b4'), { time: '5/8' });\n const stave3 = f.Stave({ y: 290 }).addTimeSignature('13/16');\n const voice3 = score.voice(score.notes('c5/16, g5, c5, b4, b4, c5, g5, c5, b4, b4, c5, b4, b4'), { time: '13/16' });\n const group1 = [new Fraction(5, 8)];\n const group2 = [new Fraction(3, 8), new Fraction(2, 8)];\n const group3 = [new Fraction(7, 16), new Fraction(2, 16), new Fraction(4, 16)];\n // Flatten the three Beam[] into a single Beam[].\n // Alternatively, you can use .reduce(concat) flatten arrays, where concat is defined as (a, b) => a.concat(b).\n const beams = [\n ...Beam.applyAndGetBeams(voice1, undefined, group1),\n ...Beam.applyAndGetBeams(voice2, undefined, group2),\n ...Beam.applyAndGetBeams(voice3, undefined, group3),\n ];\n f.Formatter().formatToStave([voice1], stave1).formatToStave([voice2], stave2).formatToStave([voice3], stave3);\n Stave.formatBegModifiers([stave1, stave2, stave3]);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Auto Beam Applicator Test');\n}\n/**\n * Helper function which uses Function.prototype.bind() to create shortcut methods.\n * This can improve the readability of large blocks of EasyScore code.\n */\nfunction createShortcuts(score) {\n return {\n notes: score.notes.bind(score),\n tuplet: score.tuplet.bind(score),\n };\n}\nfunction simpleTuplets(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const { notes, tuplet } = createShortcuts(score);\n const voice = score.voice([\n ...tuplet(notes('c4/8, g4, c5')),\n ...notes('g5/8, a5'),\n ...tuplet(notes('a5/16, (c5 e5), a5, d5, a5'), { ratioed: false, notes_occupied: 4 }),\n ], { time: '3/4' });\n const beams = Beam.applyAndGetBeams(voice);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Auto Beam Applicator Test');\n}\nfunction moreSimpleTuplets(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const { notes, tuplet } = createShortcuts(score);\n const voice = score.voice([...tuplet(notes('d4/4, g4, c5')), ...notes('g5/16, a5, a5, (c5 e5)')], { time: '3/4' });\n const beams = Beam.applyAndGetBeams(voice);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Auto Beam Applicator Test');\n}\nfunction moreBeaming(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const voice = score.voice(score.notes('c4/8, g4/4, c5/8., g5/16, a5/4, a5/16, (c5 e5)/16, a5/8'), { time: '9/8' });\n const beams = Beam.applyAndGetBeams(voice, undefined, Beam.getDefaultBeamGroups('9/8'));\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Auto Beam Applicator Test');\n}\nfunction beamingWithSeveralGroups1(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const voice = score.voice(score.notes('c4/8, g4/4, c5/8, g5, a5, a5, f5'), { time: '4/4' });\n const beams = Beam.applyAndGetBeams(voice, undefined, [new Fraction(3, 8), new Fraction(3, 8), new Fraction(2, 8)]);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Auto Beam Applicator Test');\n}\nfunction beamingWithSeveralGroupsOverflow(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const voice = score.voice(score.notes('c4/8, g4/4., c5/8, g5, a5, a5'), { time: '4/4' });\n const beams = Beam.applyAndGetBeams(voice, undefined, [new Fraction(3, 8), new Fraction(3, 8), new Fraction(2, 8)]);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Auto Beam Applicator Test');\n}\nfunction beamingWithSeveralGroupsOverflow2(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const voice = score.voice(score.notes('c4/16, g4/2, f4/16, c5/8, a4/16, c4/16, g4/8, b4, c5, g5, f5, e5, c5, a4/4'), {\n time: '8/4',\n });\n const beams = Beam.applyAndGetBeams(voice, undefined, [new Fraction(3, 8), new Fraction(2, 8), new Fraction(3, 8)]);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Auto Beam Applicator Test');\n}\nfunction beamingWithSeveralGroupsOverflow3(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const voice = score.voice(score.notes('c4/16, g4/1, f4/16, c5/8, g5, f5, e5, c5, a4/4'), { time: '8/4' });\n const beams = Beam.applyAndGetBeams(voice, undefined, [new Fraction(3, 8), new Fraction(2, 8), new Fraction(3, 8)]);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Auto Beam Applicator Test');\n}\nfunction secondaryBreaks1(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const voice = score.voice(score.notes([\n 'f5/32, f5, f5, f5, f5/16., f5/32',\n 'f5/16, f5/8, f5/16',\n 'f5/32, f5/16., f5., f5/32',\n 'f5/16., f5/32, f5, f5/16.',\n ].join(',')));\n const beams = Beam.generateBeams(voice.getTickables(), { secondary_breaks: '8' });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Duration-Based Secondary Breaks Test');\n}\nfunction secondaryBreaks2(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const { notes, tuplet } = createShortcuts(score);\n const voice = score.voice([\n tuplet(notes('e5/16, f5, f5')),\n tuplet(notes('f5/16, f5, c5')),\n notes('a4/16., f4/32'),\n tuplet(notes('d4/16, d4, d4')),\n tuplet(notes('a5/8, (e5 g5), a5')),\n tuplet(notes('f5/16, f5, f5')),\n tuplet(notes('f5/16, f5, a4')),\n ].reduce(concat));\n const beams = Beam.generateBeams(voice.getTickables(), { secondary_breaks: '8' });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Duration-Based Secondary Breaks Test');\n}\nfunction flatBeamsUp(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave({ y: 40 });\n const score = f.EasyScore();\n const { notes, tuplet } = createShortcuts(score);\n const voice = score.voice([\n tuplet(notes('c4/8, g4, f5')),\n notes('d5/8'),\n tuplet(notes('c5/16, (c4 e4 g4), f4')),\n notes('d5/8, e5, c4, f5/32, f5, f5, f5'),\n ].reduce(concat));\n const beams = Beam.generateBeams(voice.getTickables(), {\n flat_beams: true,\n stem_direction: 1,\n });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Flat Beams Up Test');\n}\nfunction flatBeamsDown(options) {\n const f = VexFlowTests.makeFactory(options, 450, 200);\n const stave = f.Stave({ y: 40 });\n const score = f.EasyScore();\n const voice = score.voice(score.notes('c5/64, c5, c5, c5, c5, c5, c5, c5, a5/8, g5, (d4 f4 a4)/16, d4, d5/8, e5, g5, a6/32, a6, a6, g4/64, g4'));\n const beams = Beam.generateBeams(voice.getTickables(), {\n flat_beams: true,\n stem_direction: -1,\n });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Flat Beams Down Test');\n}\nfunction flatBeamsMixed(options) {\n const f = VexFlowTests.makeFactory(options, 450, 200);\n const stave = f.Stave({ y: 40 });\n const score = f.EasyScore();\n const voice = score.voice(score.notes('c5/64, d5, e5, c5, f5, c5, a5, c5, a5/8, g5, (d4 f4 a4)/16, d4, d5/8, e5, c4, a4/32, a4, a4, g4/64, g4'));\n const beams = Beam.generateBeams(voice.getTickables(), { flat_beams: true });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Flat Beams Mixed Direction Test');\n}\nfunction flatBeamsUpUniform(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave({ y: 40 });\n const score = f.EasyScore();\n const { notes, tuplet } = createShortcuts(score);\n const voice = score.voice([\n ...tuplet(notes('c4/8, g4, g5')),\n ...notes('d5/8, c5/16, (c4 e4 g4), d5/8, e5, c4, f5/32, f5, f5, f5'),\n ]);\n const beams = Beam.generateBeams(voice.getTickables(), {\n flat_beams: true,\n flat_beam_offset: 50,\n stem_direction: 1,\n });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Flat Beams Up (uniform) Test');\n}\nfunction flatBeamsDownUniform(options) {\n const f = VexFlowTests.makeFactory(options, 450, 200);\n const stave = f.Stave({ y: 40 });\n const score = f.EasyScore();\n const voice = score.voice(score.notes('c5/64, c5, c5, c5, c5, c5, c5, c5, a5/8, g5, (e4 g4 b4)/16, e5, d5/8, e5/8, g5/8, a6/32, a6, a6, g4/64, g4'));\n const beams = Beam.generateBeams(voice.getTickables(), {\n flat_beams: true,\n flat_beam_offset: 155,\n stem_direction: -1,\n });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Flat Beams Down (uniform) Test');\n}\nfunction flatBeamsUpBounds(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave({ y: 40 });\n const score = f.EasyScore();\n const { notes, tuplet } = createShortcuts(score);\n const voice = score.voice([\n ...tuplet(notes('c4/8, g4/8, g5/8')),\n ...notes('d5/8, c5/16, (c4 e4 g4)/16, d5/8, e5/8, c4/8, f5/32, f5/32, f5/32, f5/32'),\n ]);\n const beams = Beam.generateBeams(voice.getTickables(), {\n flat_beams: true,\n flat_beam_offset: 60,\n stem_direction: 1,\n });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Flat Beams Up (uniform) Test');\n}\nfunction flatBeamsDownBounds(options) {\n const f = VexFlowTests.makeFactory(options, 450, 200);\n const stave = f.Stave({ y: 40 });\n const score = f.EasyScore();\n const voice = score.voice(score.notes([\n 'g5/8, a6/32, a6/32, a6/32, g4/64, g4/64',\n 'c5/64, c5/64, c5/64, c5/64, c5/64, c5/64, c5/64, c5/64, a5/8',\n 'g5/8, (e4 g4 b4)/16, e5/16',\n 'd5/8, e5/8',\n ].join(','), { stem: 'down' }));\n const beams = Beam.generateBeams(voice.getTickables(), {\n flat_beams: true,\n flat_beam_offset: 145,\n stem_direction: -1,\n });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'Flat Beams Down (uniform) Test');\n}\nVexFlowTests.register(AutoBeamFormattingTests);\nexport { AutoBeamFormattingTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Bach Demo\nimport { concat, VexFlowTests } from './vexflow_test_helpers';\nimport { BarlineType, Registry } from '../src/index';\nconst BachDemoTests = {\n Start() {\n QUnit.module('Bach Demo');\n VexFlowTests.runTests('Minuet 1', minuet1);\n },\n};\nfunction minuet1(options) {\n const registry = new Registry();\n Registry.enableDefaultRegistry(registry);\n // Retrieve the element from the registry and cast to StaveNote, so we can call .addModifier( ) later.\n const id = (id) => registry.getElementById(id);\n const f = VexFlowTests.makeFactory(options, 1100, 900);\n const score = f.EasyScore({ throwOnError: true });\n // Bind these three functions so the code looks cleaner.\n // Instead of score.voice(...), just call voice(...).\n const voice = score.voice.bind(score);\n const notes = score.notes.bind(score);\n const beam = score.beam.bind(score);\n let x = 120;\n let y = 80;\n function appendSystem(width) {\n const system = f.System({ x, y, width, spaceBetweenStaves: 10 });\n x += width;\n return system;\n }\n score.set({ time: '3/4' });\n /* Measure 1 */\n let system = appendSystem(220);\n system\n .addStave({\n voices: [\n voice([notes('D5/q[id=\"m1a\"]'), beam(notes('G4/8, A4, B4, C5', { stem: 'up' }))].reduce(concat)),\n voice([f.TextDynamics({ text: 'p', duration: 'h', dots: 1, line: 9 })]),\n ],\n })\n .addClef('treble')\n .addKeySignature('G')\n .addTimeSignature('3/4')\n .setTempo({ name: 'Allegretto', duration: 'h', dots: 1, bpm: 66 }, -30);\n system\n .addStave({ voices: [voice(notes('(G3 B3 D4)/h, A3/q', { clef: 'bass' }))] })\n .addClef('bass')\n .addKeySignature('G')\n .addTimeSignature('3/4');\n system.addConnector('brace');\n system.addConnector('singleRight');\n system.addConnector('singleLeft');\n id('m1a').addModifier(f.Fingering({ number: '5' }), 0);\n /* Measure 2 */\n system = appendSystem(150);\n system.addStave({ voices: [voice(notes('D5/q[id=\"m2a\"], G4[id=\"m2b\"], G4[id=\"m2c\"]'))] });\n system.addStave({ voices: [voice(notes('B3/h.', { clef: 'bass' }))] });\n system.addConnector('singleRight');\n id('m2a').addModifier(f.Articulation({ type: 'a.', position: 'above' }), 0);\n id('m2b').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0);\n id('m2c').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0);\n f.Curve({\n from: id('m1a'),\n to: id('m2a'),\n options: {\n cps: [\n { x: 0, y: 40 },\n { x: 0, y: 40 },\n ],\n },\n });\n /* Measure 3 */\n system = appendSystem(150);\n system.addStave({\n voices: [voice([notes('E5/q[id=\"m3a\"]'), beam(notes('C5/8, D5, E5, F5', { stem: 'down' }))].reduce(concat))],\n });\n id('m3a').addModifier(f.Fingering({ number: '3', position: 'above' }), 0);\n system.addStave({ voices: [voice(notes('C4/h.', { clef: 'bass' }))] });\n system.addConnector('singleRight');\n /* Measure 4 */\n system = appendSystem(150);\n system.addStave({ voices: [voice(notes('G5/q[id=\"m4a\"], G4[id=\"m4b\"], G4[id=\"m4c\"]'))] });\n system.addStave({ voices: [voice(notes('B3/h.', { clef: 'bass' }))] });\n system.addConnector('singleRight');\n id('m4a').addModifier(f.Articulation({ type: 'a.', position: 'above' }), 0);\n id('m4b').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0);\n id('m4c').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0);\n f.Curve({\n from: id('m3a'),\n to: id('m4a'),\n options: {\n cps: [\n { x: 0, y: 20 },\n { x: 0, y: 20 },\n ],\n },\n });\n /* Measure 5 */\n system = appendSystem(150);\n system.addStave({\n voices: [voice([notes('C5/q[id=\"m5a\"]'), beam(notes('D5/8, C5, B4, A4', { stem: 'down' }))].reduce(concat))],\n });\n id('m5a').addModifier(f.Fingering({ number: '4', position: 'above' }), 0);\n system.addStave({ voices: [voice(notes('A3/h.', { clef: 'bass' }))] });\n system.addConnector('singleRight');\n /* Measure 6 */\n system = appendSystem(150);\n system.addStave({\n voices: [voice([notes('B4/q'), beam(notes('C5/8, B4, A4, G4[id=\"m6a\"]', { stem: 'up' }))].reduce(concat))],\n });\n system.addStave({ voices: [voice(notes('G3/h.', { clef: 'bass' }))] });\n system.addConnector('singleRight');\n f.Curve({\n from: id('m5a'),\n to: id('m6a'),\n options: {\n cps: [\n { x: 0, y: 20 },\n { x: 0, y: 20 },\n ],\n invert: true,\n position_end: 'nearTop',\n y_shift: 20,\n },\n });\n /* Measure 7 (New system) */\n x = 20;\n y += 230;\n system = appendSystem(220);\n system\n .addStave({\n voices: [\n voice([notes('F4/q[id=\"m7a\"]'), beam(notes('G4/8[id=\"m7b\"], A4, B4, G4', { stem: 'up' }))].reduce(concat)),\n ],\n })\n .addClef('treble')\n .addKeySignature('G');\n system\n .addStave({ voices: [voice(notes('D4/q, B3[id=\"m7c\"], G3', { clef: 'bass' }))] })\n .addClef('bass')\n .addKeySignature('G');\n system.addConnector('brace');\n system.addConnector('singleRight');\n system.addConnector('singleLeft');\n id('m7a').addModifier(f.Fingering({ number: '2', position: 'below' }), 0);\n id('m7b').addModifier(f.Fingering({ number: '1' }), 0);\n id('m7c').addModifier(f.Fingering({ number: '3', position: 'above' }), 0);\n /* Measure 8 */\n system = appendSystem(180);\n const grace = f.GraceNote({ keys: ['d/3'], clef: 'bass', duration: '8', slash: true });\n system.addStave({ voices: [voice(notes('A4/h.[id=\"m8c\"]'))] });\n system.addStave({\n voices: [\n score\n .set({ clef: 'bass' })\n .voice([notes('D4/q[id=\"m8a\"]'), beam(notes('D3/8, C4, B3[id=\"m8b\"], A3', { stem: 'down' }))].reduce(concat)),\n ],\n });\n system.addConnector('singleRight');\n id('m8b').addModifier(f.Fingering({ number: '1', position: 'above' }), 0);\n id('m8c').addModifier(f.GraceNoteGroup({ notes: [grace] }), 0);\n f.Curve({\n from: id('m7a'),\n to: id('m8c'),\n options: {\n cps: [\n { x: 0, y: 20 },\n { x: 0, y: 20 },\n ],\n invert: true,\n position: 'nearTop',\n position_end: 'nearTop',\n },\n });\n f.StaveTie({ from: grace, to: id('m8c') });\n /* Measure 9 */\n system = appendSystem(180);\n system.addStave({\n voices: [\n score\n .set({ clef: 'treble' })\n .voice([notes('D5/q[id=\"m9a\"]'), beam(notes('G4/8, A4, B4, C5', { stem: 'up' }))].reduce(concat)),\n ],\n });\n system.addStave({ voices: [voice(notes('B3/h, A3/q', { clef: 'bass' }))] });\n system.addConnector('singleRight');\n id('m9a').addModifier(f.Fingering({ number: '5' }), 0);\n /* Measure 10 */\n system = appendSystem(170);\n system.addStave({ voices: [voice(notes('D5/q[id=\"m10a\"], G4[id=\"m10b\"], G4[id=\"m10c\"]'))] });\n system.addStave({ voices: [voice(notes('G3/q[id=\"m10d\"], B3, G3', { clef: 'bass' }))] });\n system.addConnector('singleRight');\n id('m10a').addModifier(f.Articulation({ type: 'a.', position: 'above' }), 0);\n id('m10b').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0);\n id('m10c').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0);\n id('m10d').addModifier(f.Fingering({ number: '4' }), 0);\n f.Curve({\n from: id('m9a'),\n to: id('m10a'),\n options: {\n cps: [\n { x: 0, y: 40 },\n { x: 0, y: 40 },\n ],\n },\n });\n /* Measure 11 */\n system = appendSystem(150);\n system.addStave({\n voices: [voice([notes('E5/q[id=\"m11a\"]'), beam(notes('C5/8, D5, E5, F5', { stem: 'down' }))].reduce(concat))],\n });\n id('m11a').addModifier(f.Fingering({ number: '3', position: 'above' }), 0);\n system.addStave({ voices: [voice(notes('C4/h.', { clef: 'bass' }))] });\n system.addConnector('singleRight');\n /* Measure 12 */\n system = appendSystem(170);\n system.addStave({ voices: [voice(notes('G5/q[id=\"m12a\"], G4[id=\"m12b\"], G4[id=\"m12c\"]'))] });\n system.addStave({\n voices: [\n score\n .set({ clef: 'bass' })\n .voice([notes('B3/q[id=\"m12d\"]'), beam(notes('C4/8, B3, A3, G3[id=\"m12e\"]', { stem: 'down' }))].reduce(concat)),\n ],\n });\n system.addConnector('singleRight');\n id('m12a').addModifier(f.Articulation({ type: 'a.', position: 'above' }), 0);\n id('m12b').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0);\n id('m12c').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0);\n id('m12d').addModifier(f.Fingering({ number: '2', position: 'above' }), 0);\n id('m12e').addModifier(f.Fingering({ number: '4', position: 'above' }), 0);\n f.Curve({\n from: id('m11a'),\n to: id('m12a'),\n options: {\n cps: [\n { x: 0, y: 20 },\n { x: 0, y: 20 },\n ],\n },\n });\n /* Measure 13 (New system) */\n x = 20;\n y += 230;\n system = appendSystem(220);\n system\n .addStave({\n voices: [\n score\n .set({ clef: 'treble' })\n .voice([notes('c5/q[id=\"m13a\"]'), beam(notes('d5/8, c5, b4, a4', { stem: 'down' }))].reduce(concat)),\n ],\n })\n .addClef('treble')\n .addKeySignature('G');\n system\n .addStave({ voices: [voice(notes('a3/h[id=\"m13b\"], f3/q[id=\"m13c\"]', { clef: 'bass' }))] })\n .addClef('bass')\n .addKeySignature('G');\n system.addConnector('brace');\n system.addConnector('singleRight');\n system.addConnector('singleLeft');\n id('m13a').addModifier(f.Fingering({ number: '4', position: 'above' }), 0);\n id('m13b').addModifier(f.Fingering({ number: '1' }), 0);\n id('m13c').addModifier(f.Fingering({ number: '3', position: 'above' }), 0);\n /* Measure 14 */\n system = appendSystem(180);\n system.addStave({\n voices: [\n score\n .set({ clef: 'treble' })\n .voice([notes('B4/q'), beam(notes('C5/8, b4, a4, g4', { stem: 'up' }))].reduce(concat)),\n ],\n });\n system.addStave({ voices: [voice(notes('g3/h[id=\"m14a\"], b3/q[id=\"m14b\"]', { clef: 'bass' }))] });\n system.addConnector('singleRight');\n id('m14a').addModifier(f.Fingering({ number: '2' }), 0);\n id('m14b').addModifier(f.Fingering({ number: '1' }), 0);\n /* Measure 15 */\n system = appendSystem(180);\n system.addStave({\n voices: [\n score\n .set({ clef: 'treble' })\n .voice([notes('a4/q'), beam(notes('b4/8, a4, g4, f4[id=\"m15a\"]', { stem: 'up' }))].reduce(concat)),\n ],\n });\n system.addStave({ voices: [voice(notes('c4/q[id=\"m15b\"], d4, d3', { clef: 'bass' }))] });\n system.addConnector('singleRight');\n id('m15a').addModifier(f.Fingering({ number: '2' }), 0);\n id('m15b').addModifier(f.Fingering({ number: '2' }), 0);\n /* Measure 16 */\n system = appendSystem(130);\n system\n .addStave({\n voices: [score.set({ clef: 'treble' }).voice([notes('g4/h.[id=\"m16a\"]')].reduce(concat))],\n })\n .setEndBarType(BarlineType.REPEAT_END);\n system\n .addStave({ voices: [voice(notes('g3/h[id=\"m16b\"], g2/q', { clef: 'bass' }))] })\n .setEndBarType(BarlineType.REPEAT_END);\n system.addConnector('boldDoubleRight');\n id('m16a').addModifier(f.Fingering({ number: '1' }), 0);\n id('m16b').addModifier(f.Fingering({ number: '1' }), 0);\n f.Curve({\n from: id('m13a'),\n to: id('m16a'),\n options: {\n cps: [\n { x: 0, y: 50 },\n { x: 0, y: 20 },\n ],\n invert: true,\n position_end: 'nearTop',\n },\n });\n /* Measure 17 */\n system = appendSystem(180);\n system\n .addStave({\n voices: [\n score\n .set({ clef: 'treble' })\n .voice([notes('b5/q[id=\"m17a\"]'), beam(notes('g5/8, a5, b5, g5', { stem: 'down' }))].reduce(concat)),\n voice([f.TextDynamics({ text: 'mf', duration: 'h', dots: 1, line: 10 })]),\n ],\n })\n .setBegBarType(BarlineType.REPEAT_BEGIN);\n system.addStave({ voices: [voice(notes('g3/h.', { clef: 'bass' }))] }).setBegBarType(BarlineType.REPEAT_BEGIN);\n system.addConnector('boldDoubleLeft');\n system.addConnector('singleRight');\n id('m17a').addModifier(f.Fingering({ number: '5', position: 'above' }), 0);\n /* Measure 18 */\n system = appendSystem(180);\n system.addStave({\n voices: [\n score\n .set({ clef: 'treble' })\n .voice([notes('a5/q[id=\"m18a\"]'), beam(notes('d5/8, e5, f5, d5[id=\"m18b\"]', { stem: 'down' }))].reduce(concat)),\n ],\n });\n system.addStave({ voices: [voice(notes('f3/h.', { clef: 'bass' }))] });\n system.addConnector('singleRight');\n id('m18a').addModifier(f.Fingering({ number: '4', position: 'above' }), 0);\n f.Curve({\n from: id('m17a'),\n to: id('m18b'),\n options: {\n cps: [\n { x: 0, y: 20 },\n { x: 0, y: 30 },\n ],\n },\n });\n /* Done */\n f.draw();\n Registry.disableDefaultRegistry();\n ok(true, 'Bach Minuet 1');\n}\nVexFlowTests.register(BachDemoTests);\nexport { BachDemoTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Barline Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Barline, BarlineType } from '../src/stavebarline';\nconst BarlineTests = {\n Start() {\n QUnit.module('Barline');\n test('Enums', enums);\n const run = VexFlowTests.runTests;\n run('Simple BarNotes', simple);\n run('Style BarNotes', style);\n },\n};\nfunction enums() {\n // VexFlow 4.0 renamed Barline.type => BarlineType.\n // The old way still works, for backwards compatibility.\n equal(Barline.type, BarlineType);\n const a = BarlineType['DOUBLE'];\n const b = BarlineType.DOUBLE;\n equal(a, b);\n}\nfunction simple(options) {\n const f = VexFlowTests.makeFactory(options, 380, 160);\n const stave = f.Stave();\n const notes = [\n f.StaveNote({ keys: ['d/4', 'e/4', 'f/4'], stem_direction: -1, duration: '2' }),\n f.BarNote({ type: 'single' }),\n f\n .StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '2' })\n .addModifier(f.Accidental({ type: 'n' }), 0)\n .addModifier(f.Accidental({ type: '#' }), 1),\n ];\n const voice = f.Voice().addTickables(notes);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'Simple Test');\n}\nfunction style(options) {\n const f = VexFlowTests.makeFactory(options, 380, 160);\n const stave = f.Stave();\n const notes = [\n f.StaveNote({ keys: ['d/4', 'e/4', 'f/4'], stem_direction: -1, duration: '2' }),\n f.BarNote({ type: 'single' }),\n f\n .StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '2' })\n .addModifier(f.Accidental({ type: 'n' }), 0)\n .addModifier(f.Accidental({ type: '#' }), 1),\n ];\n notes[1].setStyle({ shadowBlur: 15, shadowColor: 'blue', fillStyle: 'blue', strokeStyle: 'blue' });\n const voice = f.Voice().addTickables(notes);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'Style');\n}\nVexFlowTests.register(BarlineTests);\nexport { BarlineTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Beam Tests\n// TODO: Factory.Beam()'s 'notes' argument is a StemmableNote[], but we only have access to Tickable[].\nimport { concat, VexFlowTests } from './vexflow_test_helpers';\nimport { AnnotationVerticalJustify, Beam, Dot, Font, FontStyle, FontWeight, Stem, Voice, } from '../src/index';\nconst BeamTests = {\n Start() {\n QUnit.module('Beam');\n const run = VexFlowTests.runTests;\n run('Simple Beam', simple);\n run('Multi Beam', multi);\n run('Sixteenth Beam', sixteenth);\n run('Slopey Beam', slopey);\n run('Auto-stemmed Beam', autoStem);\n run('Mixed Beam 1', mixed);\n run('Mixed Beam 2', mixed2);\n run('Dotted Beam', dotted);\n run('Partial Beam', partial);\n run('Close Trade-offs Beam', tradeoffs);\n run('Insane Beam', insane);\n run('Lengthy Beam', lenghty);\n run('Outlier Beam', outlier);\n run('Break Secondary Beams', breakSecondaryBeams);\n run('Partial Beam Direction', partialBeamDirection);\n run('TabNote Beams Up', tabBeamsUp);\n run('TabNote Beams Down', tabBeamsDown);\n run('TabNote Auto Create Beams', autoTabBeams);\n run('TabNote Beams Auto Stem', tabBeamsAutoStem);\n run('Complex Beams with Annotations', complexWithAnnotation);\n run('Complex Beams with Articulations', complexWithArticulation);\n run('Complex Beams with Articulations two Staves', complexWithArticulation2);\n },\n};\nfunction simple(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const beam = score.beam.bind(score);\n const notes = score.notes.bind(score);\n const voice = score.voice([\n notes('(cb4 e#4 a4)/2'),\n beam(notes('(cb4 e#4 a4)/8, (d4 f4 a4), (ebb4 g##4 b4), (f4 a4 c5)', { stem: 'up' })),\n ].reduce(concat), { time: '2/2' });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'Simple Test');\n}\nfunction multi(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const voice = score.voice.bind(score);\n const beam = score.beam.bind(score);\n const notes = score.notes.bind(score);\n const voices = [\n voice([beam(notes('f5/8, e5, d5, c5', { stem: 'up' })), beam(notes('c5, d5, e5, f5', { stem: 'up' }))].reduce(concat)),\n voice([beam(notes('f4/8, e4, d4, c4', { stem: 'down' })), beam(notes('c4/8, d4, e4, f4', { stem: 'down' }))].reduce(concat)),\n ];\n f.Formatter().joinVoices(voices).formatToStave(voices, stave);\n f.draw();\n ok(true, 'Multi Test');\n}\nfunction sixteenth(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const voice = score.voice.bind(score);\n const beam = score.beam.bind(score);\n const notes = score.notes.bind(score);\n const voices = [\n voice([\n beam(notes('f5/16, f5, d5, c5', { stem: 'up' })),\n beam(notes('c5/16, d5, f5, e5', { stem: 'up' })),\n notes('f5/2', { stem: 'up' }),\n ].reduce(concat)),\n voice([\n beam(notes('f4/16, e4/16, d4/16, c4/16', { stem: 'down' })),\n beam(notes('c4/16, d4/16, f4/16, e4/16', { stem: 'down' })),\n notes('f4/2', { stem: 'down' }),\n ].reduce(concat)),\n ];\n f.Formatter().joinVoices(voices).formatToStave(voices, stave);\n f.draw();\n ok(true, 'Sixteenth Test');\n}\nfunction breakSecondaryBeams(options) {\n const f = VexFlowTests.makeFactory(options, 600, 200);\n const stave = f.Stave({ y: 20 });\n const score = f.EasyScore();\n const voice = score.voice.bind(score);\n const beam = score.beam.bind(score);\n const notes = score.notes.bind(score);\n const voices = [\n voice([\n beam(notes('f5/16., f5/32, c5/16., d5/32, c5/16., d5/32', { stem: 'up' }), { secondaryBeamBreaks: [1, 3] }),\n beam(notes('f5/16, e5, e5, e5, e5, e5', { stem: 'up' }), { secondaryBeamBreaks: [2] }),\n ].reduce(concat), { time: '3/4' }),\n voice([\n beam(notes('f4/32, d4, e4, c4, d4, c4, f4, d4, e4, c4, c4, d4', { stem: 'down' }), {\n secondaryBeamBreaks: [3, 7],\n }),\n beam(notes('d4/16, f4, d4, e4, e4, e4', { stem: 'down' }), { secondaryBeamBreaks: [3] }),\n ].reduce(concat), { time: '3/4' }),\n ];\n f.Formatter().joinVoices(voices).formatToStave(voices, stave);\n f.draw();\n ok(true, 'Breaking Secondary Beams Test');\n}\nfunction partialBeamDirection(options) {\n const f = VexFlowTests.makeFactory(options, 600, 200);\n const stave = f.Stave({ y: 20 });\n const score = f.EasyScore();\n const voice = score.voice.bind(score);\n const beam = score.beam.bind(score);\n const notes = score.notes.bind(score);\n const voices = [\n voice([\n // Default beaming:\n beam(notes('f4/8, f4/16, f4/8, f4/16', { stem: 'up' })),\n // Force first 16th beam right\n beam(notes('f4/8, f4/16, f4/8, f4/16', { stem: 'up' }), { partialBeamDirections: { '1': 'R' } }),\n // Force first 16th beam left\n beam(notes('f4/8, f4/16, f4/8, f4/16', { stem: 'up' }), { partialBeamDirections: { '1': 'L' } }),\n ].reduce(concat), { time: '9/8' }),\n ];\n f.Formatter().joinVoices(voices).formatToStave(voices, stave);\n f.draw();\n ok(true, 'Partial beam direction test');\n}\nfunction slopey(options) {\n const f = VexFlowTests.makeFactory(options, 350, 140);\n const stave = f.Stave({ y: 20 });\n const score = f.EasyScore();\n const beam = score.beam.bind(score);\n const notes = score.notes.bind(score);\n const voice = score.voice([\n beam(notes('c4/8, f4/8, d5/8, g5/8', { stem: 'up' })),\n beam(notes('d6/8, f5/8, d4/8, g3/8', { stem: 'up' })),\n ].reduce(concat));\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'Slopey Test');\n}\nfunction autoStem(options) {\n const f = VexFlowTests.makeFactory(options, 350, 140);\n const stave = f.Stave({ y: 20 });\n const score = f.EasyScore();\n const voice = score.voice(score.notes('a4/8, b4/8, g4/8, c5/8, f4/8, d5/8, e4/8, e5/8, b4/8, b4/8, g4/8, d5/8'), {\n time: '6/4',\n });\n const notes = voice.getTickables();\n const beams = [\n f.Beam({ notes: notes.slice(0, 2), options: { autoStem: true } }),\n f.Beam({ notes: notes.slice(2, 4), options: { autoStem: true } }),\n f.Beam({ notes: notes.slice(4, 6), options: { autoStem: true } }),\n f.Beam({ notes: notes.slice(6, 8), options: { autoStem: true } }),\n f.Beam({ notes: notes.slice(8, 10), options: { autoStem: true } }),\n f.Beam({ notes: notes.slice(10, 12), options: { autoStem: true } }),\n ];\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n const UP = Stem.UP;\n const DOWN = Stem.DOWN;\n equal(beams[0].getStemDirection(), UP);\n equal(beams[1].getStemDirection(), UP);\n equal(beams[2].getStemDirection(), UP);\n equal(beams[3].getStemDirection(), UP);\n equal(beams[4].getStemDirection(), DOWN);\n equal(beams[5].getStemDirection(), DOWN);\n f.draw();\n ok(true, 'AutoStem Beam Test');\n}\nfunction mixed(options) {\n const f = VexFlowTests.makeFactory(options, 350, 140);\n const stave = f.Stave({ y: 20 });\n const score = f.EasyScore();\n const voice1 = score.voice(score.notes('f5/8, d5/16, c5/16, c5/16, d5/16, e5/8, f5/8, d5/16, c5/16, c5/16, d5/16, e5/8', { stem: 'up' }));\n const voice2 = score.voice(score.notes('f4/16, e4/8, d4/16, c4/16, d4/8, f4/16, f4/16, e4/8, d4/16, c4/16, d4/8, f4/16', { stem: 'down' }));\n [\n [0, 4],\n [4, 8],\n [8, 12],\n ].forEach((range) => f.Beam({ notes: voice1.getTickables().slice(range[0], range[1]) }));\n [\n [0, 4],\n [4, 8],\n [8, 12],\n ].forEach((range) => f.Beam({ notes: voice2.getTickables().slice(range[0], range[1]) }));\n f.Formatter().joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave);\n f.draw();\n ok(true, 'Multi Test');\n}\nfunction mixed2(options) {\n const f = VexFlowTests.makeFactory(options, 450, 180);\n const stave = f.Stave({ y: 20 });\n const score = f.EasyScore();\n const voice = score.voice(score.notes('f5/32, d5/16, c5/32, c5/64, d5/128, e5/8, f5/16, d5/32, c5/64, c5/32, d5/16, e5/128', {\n stem: 'up',\n }), { time: '31/64' });\n const voice2 = score.voice(score.notes('f4/32, d4/16, c4/32, c4/64, d4/128, e4/8, f4/16, d4/32, c4/64, c4/32, d4/16, e4/128', {\n stem: 'down',\n }), { time: '31/64' });\n f.Beam({ notes: voice.getTickables().slice(0, 12) });\n f.Beam({ notes: voice2.getTickables().slice(0, 12) });\n f.Formatter().joinVoices([voice, voice2]).formatToStave([voice, voice2], stave);\n f.draw();\n ok(true, 'Multi Test');\n}\nfunction dotted(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const voice = score.voice(score.notes('d4/8, b3/8., a3/16, a3/8, b3/8., c4/16, d4/8, b3/8, a3/8., a3/16, b3/8., c4/16', { stem: 'up' }), { time: '6/4' });\n const notes = voice.getTickables();\n f.Beam({ notes: notes.slice(0, 4) });\n f.Beam({ notes: notes.slice(4, 8) });\n f.Beam({ notes: notes.slice(8, 12) });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'Dotted Test');\n}\nfunction partial(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const voice = score.voice(score.notes('d4/8, b3/32, c4/16., d4/16., e4/8, c4/64, c4/32, a3/8., b3/32., c4/8, e4/64, b3/16., b3/64, f4/8, e4/8, g4/64, e4/8'), { time: '89/64' });\n const notes = voice.getTickables();\n f.Beam({ notes: notes.slice(0, 3) });\n f.Beam({ notes: notes.slice(3, 9) });\n f.Beam({ notes: notes.slice(9, 13) });\n f.Beam({ notes: notes.slice(13, 17) });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'Partial Test');\n}\nfunction tradeoffs(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave();\n const score = f.EasyScore();\n const voice = score.voice(score.notes('a4/8, b4/8, c4/8, d4/8, g4/8, a4/8, b4/8, c4/8', { stem: 'up' }));\n const notes = voice.getTickables();\n f.Beam({ notes: notes.slice(0, 4) });\n f.Beam({ notes: notes.slice(4, 8) });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'Close Trade-offs Test');\n}\nfunction insane(options) {\n const f = VexFlowTests.makeFactory(options, 450, 180);\n const stave = f.Stave({ y: 20 });\n const score = f.EasyScore();\n const voice = score.voice(score.notes('g4/8, g5/8, c4/8, b5/8, g4/8[stem=\"down\"], a5[stem=\"down\"], b4[stem=\"down\"], c4/8', { stem: 'up' }));\n const notes = voice.getTickables();\n f.Beam({ notes: notes.slice(0, 4) });\n f.Beam({ notes: notes.slice(4, 7) });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'Insane Test');\n}\nfunction lenghty(options) {\n const f = VexFlowTests.makeFactory(options, 450, 180);\n const stave = f.Stave({ y: 20 });\n const score = f.EasyScore();\n const voice = score.voice(score.beam(score.notes('g4/8, g4, g4, a4', { stem: 'up' })), { time: '2/4' });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'Lengthy Test');\n}\nfunction outlier(options) {\n const f = VexFlowTests.makeFactory(options, 450, 180);\n const stave = f.Stave({ y: 20 });\n const score = f.EasyScore();\n const voice = score.voice(score.notes([\n 'g4/8[stem=\"up\"], f4[stem=\"up\"], d5[stem=\"up\"], e4[stem=\"up\"]',\n 'd5/8[stem=\"down\"], d5[stem=\"down\"], c5[stem=\"down\"], d5[stem=\"down\"]',\n ].join()));\n const notes = voice.getTickables();\n f.Beam({ notes: notes.slice(0, 4) });\n f.Beam({ notes: notes.slice(4, 8) });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave, { stave: stave });\n f.draw();\n ok(true, 'Outlier Test');\n}\nfunction tabBeamsUp(options) {\n const f = VexFlowTests.makeFactory(options, 600, 200);\n const stave = f.TabStave({ y: 20 });\n const specs = [\n {\n positions: [\n { str: 3, fret: 6 },\n { str: 4, fret: 25 },\n ],\n duration: '4',\n },\n {\n positions: [\n { str: 2, fret: 10 },\n { str: 5, fret: 12 },\n ],\n duration: '8',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '8',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '16',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '32',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '64',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '128',\n },\n { positions: [{ str: 3, fret: 6 }], duration: '8' },\n { positions: [{ str: 3, fret: 6 }], duration: '8' },\n { positions: [{ str: 3, fret: 6 }], duration: '8' },\n { positions: [{ str: 3, fret: 6 }], duration: '8' },\n ];\n const notes = specs.map((struct) => {\n const tabNote = f.TabNote(struct);\n tabNote.render_options.draw_stem = true;\n return tabNote;\n });\n f.Beam({ notes: notes.slice(1, 7) });\n f.Beam({ notes: notes.slice(8, 11) });\n f.Tuplet({ notes: notes.slice(8, 11), options: { ratioed: true } });\n const voice = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'All objects have been drawn');\n}\nfunction tabBeamsDown(options) {\n const f = VexFlowTests.makeFactory(options, 600, 250);\n const stave = f.TabStave({ options: { num_lines: 10 } });\n const specs = [\n {\n stem_direction: -1,\n positions: [\n { str: 3, fret: 6 },\n { str: 4, fret: 25 },\n ],\n duration: '4',\n },\n {\n stem_direction: -1,\n positions: [\n { str: 2, fret: 10 },\n { str: 5, fret: 12 },\n ],\n duration: '8dd',\n },\n {\n stem_direction: -1,\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '8',\n },\n {\n stem_direction: -1,\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '16',\n },\n {\n stem_direction: -1,\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '32',\n },\n {\n stem_direction: -1,\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '64',\n },\n {\n stem_direction: -1,\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '128',\n },\n { stem_direction: -1, positions: [{ str: 1, fret: 6 }], duration: '8' },\n { stem_direction: -1, positions: [{ str: 1, fret: 6 }], duration: '8' },\n { stem_direction: -1, positions: [{ str: 1, fret: 6 }], duration: '8' },\n { stem_direction: -1, positions: [{ str: 7, fret: 6 }], duration: '8' },\n { stem_direction: -1, positions: [{ str: 7, fret: 6 }], duration: '8' },\n { stem_direction: -1, positions: [{ str: 10, fret: 6 }], duration: '8' },\n { stem_direction: -1, positions: [{ str: 10, fret: 6 }], duration: '8' },\n ];\n const notes = specs.map((struct) => {\n const tabNote = f.TabNote(struct);\n tabNote.render_options.draw_stem = true;\n tabNote.render_options.draw_dots = true;\n return tabNote;\n });\n Dot.buildAndAttach([notes[1], notes[1]]);\n f.Beam({ notes: notes.slice(1, 7) });\n f.Beam({ notes: notes.slice(8, 11) });\n f.Tuplet({ notes: notes.slice(8, 11), options: { location: -1 } });\n f.Tuplet({ notes: notes.slice(11, 14), options: { location: -1 } });\n const voice = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'All objects have been drawn');\n}\nfunction autoTabBeams(options) {\n const f = VexFlowTests.makeFactory(options, 600, 200);\n const stave = f.TabStave();\n const specs = [\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '8',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '8',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '16',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '16',\n },\n { positions: [{ str: 1, fret: 6 }], duration: '32' },\n { positions: [{ str: 1, fret: 6 }], duration: '32' },\n { positions: [{ str: 1, fret: 6 }], duration: '32' },\n { positions: [{ str: 6, fret: 6 }], duration: '32' },\n { positions: [{ str: 6, fret: 6 }], duration: '16' },\n { positions: [{ str: 6, fret: 6 }], duration: '16' },\n { positions: [{ str: 6, fret: 6 }], duration: '16' },\n { positions: [{ str: 6, fret: 6 }], duration: '16' },\n ];\n const notes = specs.map((struct) => {\n const tabNote = f.TabNote(struct);\n tabNote.render_options.draw_stem = true;\n tabNote.render_options.draw_dots = true;\n return tabNote;\n });\n const voice = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes);\n const beams = Beam.applyAndGetBeams(voice, -1);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n beams.forEach((beam) => beam.setContext(f.getContext()).draw());\n ok(true, 'All objects have been drawn');\n}\n// This tests makes sure the auto_stem functionality is works.\n// TabNote stems within a beam group should end up normalized\nfunction tabBeamsAutoStem(options) {\n const f = VexFlowTests.makeFactory(options, 600, 300);\n const stave = f.TabStave();\n const specs = [\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '8',\n stem_direction: -1,\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '8',\n stem_direction: 1,\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '16',\n stem_direction: -1,\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '16',\n stem_direction: 1,\n },\n { positions: [{ str: 1, fret: 6 }], duration: '32', stem_direction: 1 },\n { positions: [{ str: 1, fret: 6 }], duration: '32', stem_direction: -1 },\n { positions: [{ str: 1, fret: 6 }], duration: '32', stem_direction: -1 },\n { positions: [{ str: 6, fret: 6 }], duration: '32', stem_direction: -1 },\n { positions: [{ str: 6, fret: 6 }], duration: '16', stem_direction: 1 },\n { positions: [{ str: 6, fret: 6 }], duration: '16', stem_direction: 1 },\n { positions: [{ str: 6, fret: 6 }], duration: '16', stem_direction: 1 },\n { positions: [{ str: 6, fret: 6 }], duration: '16', stem_direction: -1 },\n ];\n const notes = specs.map((struct) => {\n const tabNote = f.TabNote(struct);\n tabNote.render_options.draw_stem = true;\n tabNote.render_options.draw_dots = true;\n return tabNote;\n });\n // Stems should format down\n f.Beam({ notes: notes.slice(0, 8), options: { autoStem: true } });\n // Stems should format up\n f.Beam({ notes: notes.slice(8, 12), options: { autoStem: true } });\n const voice = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'All objects have been drawn');\n}\nfunction complexWithAnnotation(options) {\n const factory = VexFlowTests.makeFactory(options, 500, 200);\n const stave = factory.Stave({ y: 40 });\n const s1 = [\n { keys: ['e/4'], duration: '128', stem_direction: 1 },\n { keys: ['d/4'], duration: '16', stem_direction: 1 },\n { keys: ['e/4'], duration: '8', stem_direction: 1 },\n { keys: ['c/4', 'g/4'], duration: '32', stem_direction: 1 },\n { keys: ['c/4'], duration: '32', stem_direction: 1 },\n { keys: ['c/4'], duration: '32', stem_direction: 1 },\n { keys: ['c/4'], duration: '32', stem_direction: 1 },\n ];\n const s2 = [\n { keys: ['e/5'], duration: '128', stem_direction: -1 },\n { keys: ['d/5'], duration: '16', stem_direction: -1 },\n { keys: ['e/5'], duration: '8', stem_direction: -1 },\n { keys: ['c/5', 'g/5'], duration: '32', stem_direction: -1 },\n { keys: ['c/5'], duration: '32', stem_direction: -1 },\n { keys: ['c/5'], duration: '32', stem_direction: -1 },\n { keys: ['c/5'], duration: '32', stem_direction: -1 },\n ];\n const font = {\n family: Font.SERIF,\n size: 14,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n };\n const notes1 = s1.map((struct) => factory\n .StaveNote(struct) //\n .addModifier(factory.Annotation({ text: '1', vJustify: AnnotationVerticalJustify.TOP, font }), 0));\n const notes2 = s2.map((struct) => factory\n .StaveNote(struct) //\n .addModifier(factory.Annotation({ text: '3', vJustify: AnnotationVerticalJustify.BOTTOM, font }), 0));\n factory.Beam({ notes: notes1 });\n factory.Beam({ notes: notes2 });\n const voice = factory.Voice().setMode(Voice.Mode.SOFT).addTickables(notes1).addTickables(notes2);\n factory.Formatter().joinVoices([voice]).formatToStave([voice], stave, { stave: stave });\n factory.draw();\n ok(true, 'Complex beam annotations');\n}\nfunction complexWithArticulation(options) {\n const f = VexFlowTests.makeFactory(options, 500, 200);\n const stave = f.Stave({ y: 40 });\n const s1 = [\n { keys: ['e/4'], duration: '128', stem_direction: 1 },\n { keys: ['d/4'], duration: '16', stem_direction: 1 },\n { keys: ['e/4'], duration: '8', stem_direction: 1 },\n { keys: ['c/4', 'g/4'], duration: '32', stem_direction: 1 },\n { keys: ['c/4'], duration: '32', stem_direction: 1 },\n { keys: ['c/4'], duration: '32', stem_direction: 1 },\n { keys: ['c/4'], duration: '32', stem_direction: 1 },\n ];\n const s2 = [\n { keys: ['e/5'], duration: '128', stem_direction: -1 },\n { keys: ['d/5'], duration: '16', stem_direction: -1 },\n { keys: ['e/5'], duration: '8', stem_direction: -1 },\n { keys: ['c/5', 'g/5'], duration: '32', stem_direction: -1 },\n { keys: ['c/5'], duration: '32', stem_direction: -1 },\n { keys: ['c/5'], duration: '32', stem_direction: -1 },\n { keys: ['c/5'], duration: '32', stem_direction: -1 },\n ];\n const notes1 = s1.map((struct) => f.StaveNote(struct).addModifier(f.Articulation({ type: 'am', position: 'above' }), 0));\n const notes2 = s2.map((struct) => f.StaveNote(struct).addModifier(f.Articulation({ type: 'a>', position: 'below' }), 0));\n f.Beam({ notes: notes1 });\n f.Beam({ notes: notes2 });\n const voice = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes1).addTickables(notes2);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave, { stave: stave });\n f.draw();\n ok(true, 'Complex beam articulations');\n}\nfunction complexWithArticulation2(options) {\n const f = VexFlowTests.makeFactory(options, 500, 300);\n const system = f.System();\n const s1 = [\n { keys: ['e/4'], duration: '128', stem_direction: 1 },\n { keys: ['d/4'], duration: '16', stem_direction: 1 },\n { keys: ['e/4'], duration: '8', stem_direction: 1 },\n { keys: ['c/4', 'g/4'], duration: '32', stem_direction: 1 },\n { keys: ['c/4'], duration: '32', stem_direction: 1 },\n { keys: ['c/4'], duration: '32', stem_direction: 1 },\n { keys: ['c/4'], duration: '32', stem_direction: 1 },\n ];\n const s2 = [\n { keys: ['e/5'], duration: '128', stem_direction: -1 },\n { keys: ['d/5'], duration: '16', stem_direction: -1 },\n { keys: ['e/5'], duration: '8', stem_direction: -1 },\n { keys: ['c/5', 'g/5'], duration: '32', stem_direction: -1 },\n { keys: ['c/5'], duration: '32', stem_direction: -1 },\n { keys: ['c/5'], duration: '32', stem_direction: -1 },\n { keys: ['c/5'], duration: '32', stem_direction: -1 },\n ];\n const notes1 = s1.map((struct) => f.StaveNote(struct).addModifier(f.Articulation({ type: 'am', position: 'above' }), 0));\n const notes2 = s2.map((struct) => f.StaveNote(struct).addModifier(f.Articulation({ type: 'a>', position: 'below' }), 0));\n const notes3 = s1.map((struct) => f.StaveNote(struct).addModifier(f.Articulation({ type: 'am', position: 'above' }), 0));\n const notes4 = s2.map((struct) => f.StaveNote(struct).addModifier(f.Articulation({ type: 'a>', position: 'below' }), 0));\n f.Beam({ notes: notes1 });\n f.Beam({ notes: notes2 });\n f.Beam({ notes: notes3 });\n f.Beam({ notes: notes4 });\n const voice1 = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes1).addTickables(notes2);\n const voice2 = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes3).addTickables(notes4);\n system.addStave({ voices: [voice1] });\n system.addStave({ voices: [voice2] });\n f.draw();\n ok(true, 'Complex beam articulations two staves');\n}\nVexFlowTests.register(BeamTests);\nexport { BeamTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Bend Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Bend } from '../src/bend';\nimport { Font } from '../src/font';\nimport { Formatter } from '../src/formatter';\nimport { ModifierContext } from '../src/modifiercontext';\nimport { Note } from '../src/note';\nimport { TabNote } from '../src/tabnote';\nimport { TabStave } from '../src/tabstave';\nimport { TickContext } from '../src/tickcontext';\nconst BendTests = {\n Start() {\n QUnit.module('Bend');\n const run = VexFlowTests.runTests;\n run('Double Bends', doubleBends);\n run('Reverse Bends', reverseBends);\n run('Bend Phrase', bendPhrase);\n run('Double Bends With Release', doubleBendsWithRelease);\n run('Whako Bend', whackoBends);\n // TODO: Rename 'Whako Bend' => 'Whacko'\n },\n};\n// Helper functions for creating TabNote and Bend objects.\nconst note = (noteStruct) => new TabNote(noteStruct);\nconst bendWithText = (text, release = false) => new Bend(text, release);\nconst bendWithPhrase = (phrase) => new Bend('', false, phrase);\n/**\n * Bend two strings at a time.\n */\nfunction doubleBends(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 500, 240);\n ctx.scale(1.5, 1.5);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n ctx.font = '10pt Arial';\n const stave = new TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw();\n const notes = [\n note({\n positions: [\n { str: 2, fret: 10 },\n { str: 4, fret: 9 },\n ],\n duration: 'q',\n })\n .addModifier(bendWithText('Full'), 0)\n .addModifier(bendWithText('1/2'), 1),\n note({\n positions: [\n { str: 2, fret: 5 },\n { str: 3, fret: 5 },\n ],\n duration: 'q',\n })\n .addModifier(bendWithText('1/4'), 0)\n .addModifier(bendWithText('1/4'), 1),\n // This note is not visible because it is pushed off to the right by the ctx.scale(1.5, 1.5) at the top.\n note({\n positions: [{ str: 4, fret: 7 }],\n duration: 'h',\n }),\n ];\n Formatter.FormatAndDraw(ctx, stave, notes);\n notes.forEach((note) => Note.plotMetrics(ctx, note, 140));\n ok(true, 'Double Bends');\n}\nfunction doubleBendsWithRelease(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 550, 240);\n ctx.scale(1.0, 1.0);\n ctx.setBackgroundFillStyle('#FFF');\n ctx.setFont('Arial', VexFlowTests.Font.size);\n const stave = new TabStave(10, 10, 550).addTabGlyph().setContext(ctx).draw();\n const notes = [\n note({\n positions: [\n { str: 1, fret: 10 },\n { str: 4, fret: 9 },\n ],\n duration: 'q',\n })\n .addModifier(bendWithText('1/2', true), 0)\n .addModifier(bendWithText('Full', true), 1),\n note({\n positions: [\n { str: 2, fret: 5 },\n { str: 3, fret: 5 },\n { str: 4, fret: 5 },\n ],\n duration: 'q',\n })\n .addModifier(bendWithText('1/4', true), 0)\n .addModifier(bendWithText('Monstrous', true), 1)\n .addModifier(bendWithText('1/4', true), 2),\n note({\n positions: [{ str: 4, fret: 7 }],\n duration: 'q',\n }),\n note({\n positions: [{ str: 4, fret: 7 }],\n duration: 'q',\n }),\n ];\n Formatter.FormatAndDraw(ctx, stave, notes);\n notes.forEach((note) => Note.plotMetrics(ctx, note, 140));\n ok(true, 'Bend Release');\n}\n/**\n * Add the bend for note 1 before adding the bend for note 0,\n * by swapping the two indexes in .addModifier(modifier, index).\n * As a result, the bend curves intersect.\n */\nfunction reverseBends(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 500, 240);\n ctx.scale(1.5, 1.5);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n ctx.setFont('10pt Arial');\n const stave = new TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw();\n const notes = [\n note({\n positions: [\n { str: 2, fret: 10 },\n { str: 4, fret: 9 },\n ],\n duration: 'w',\n })\n .addModifier(bendWithText('Full'), 1)\n .addModifier(bendWithText('1/2'), 0),\n note({\n positions: [\n { str: 2, fret: 5 },\n { str: 3, fret: 5 },\n ],\n duration: 'w',\n })\n .addModifier(bendWithText('1/4'), 1)\n .addModifier(bendWithText('1/4'), 0),\n note({\n positions: [{ str: 4, fret: 7 }],\n duration: 'w',\n }),\n ];\n for (let i = 0; i < notes.length; ++i) {\n const note = notes[i];\n const mc = new ModifierContext();\n note.addToModifierContext(mc);\n const tickContext = new TickContext();\n tickContext\n .addTickable(note)\n .preFormat()\n .setX(75 * i);\n note.setStave(stave).setContext(ctx).draw();\n Note.plotMetrics(ctx, note, 140);\n ok(true, 'Bend ' + i);\n }\n}\nfunction bendPhrase(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 500, 240);\n ctx.scale(1.5, 1.5);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n ctx.font = Font.SIZE + 'pt ' + Font.SANS_SERIF; // Optionally use constants defined in Font.\n const stave = new TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw();\n const phrase1 = [\n { type: Bend.UP, text: 'Full' },\n { type: Bend.DOWN, text: 'Monstrous' },\n { type: Bend.UP, text: '1/2' },\n { type: Bend.DOWN, text: '' },\n ];\n const bend1 = bendWithPhrase(phrase1).setContext(ctx);\n const notes = [\n note({\n positions: [{ str: 2, fret: 10 }],\n duration: 'w',\n }).addModifier(bend1, 0),\n ];\n for (let i = 0; i < notes.length; ++i) {\n const note = notes[i];\n note.addToModifierContext(new ModifierContext());\n const tickContext = new TickContext();\n tickContext\n .addTickable(note)\n .preFormat()\n .setX(75 * i);\n note.setStave(stave).setContext(ctx).draw();\n Note.plotMetrics(ctx, note, 140);\n ok(true, 'Bend ' + i);\n }\n}\nfunction whackoBends(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 240);\n ctx.scale(1.0, 1.0);\n ctx.setBackgroundFillStyle('#FFF');\n ctx.setFont('Arial', VexFlowTests.Font.size);\n const stave = new TabStave(10, 10, 350).addTabGlyph().setContext(ctx).draw();\n const phrase1 = [\n { type: Bend.UP, text: 'Full' },\n { type: Bend.DOWN, text: '' },\n { type: Bend.UP, text: '1/2' },\n { type: Bend.DOWN, text: '' },\n ];\n const phrase2 = [\n { type: Bend.UP, text: 'Full' },\n { type: Bend.UP, text: 'Full' },\n { type: Bend.UP, text: '1/2' },\n { type: Bend.DOWN, text: '' },\n { type: Bend.DOWN, text: 'Full' },\n { type: Bend.DOWN, text: 'Full' },\n { type: Bend.UP, text: '1/2' },\n { type: Bend.DOWN, text: '' },\n ];\n const notes = [\n note({\n positions: [\n { str: 2, fret: 10 },\n { str: 3, fret: 9 },\n ],\n duration: 'q',\n })\n .addModifier(bendWithPhrase(phrase1), 0)\n .addModifier(bendWithPhrase(phrase2), 1),\n ];\n Formatter.FormatAndDraw(ctx, stave, notes);\n Note.plotMetrics(ctx, notes[0], 140);\n ok(true, 'Whacko Bend & Release');\n}\nVexFlowTests.register(BendTests);\nexport { BendTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Bounding Box Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { BoundingBox } from '../src/index';\nconst BoundingBoxTests = {\n Start() {\n QUnit.module('BoundingBox');\n test('Initialization Test', initialization);\n test('Merging Text', merging);\n },\n};\nfunction initialization() {\n const bb = new BoundingBox(4, 5, 6, 7);\n equal(bb.getX(), 4, 'Bad X');\n equal(bb.getY(), 5, 'Bad Y');\n equal(bb.getW(), 6, 'Bad W');\n equal(bb.getH(), 7, 'Bad H');\n bb.setX(5);\n equal(bb.getX(), 5, 'Bad X');\n}\nfunction merging() {\n const tests = [\n {\n type: 'Intersection',\n bb1: new BoundingBox(10, 10, 10, 10),\n bb2: new BoundingBox(15, 20, 10, 10),\n merged: new BoundingBox(10, 10, 15, 20),\n },\n {\n type: '1 contains 2',\n bb1: new BoundingBox(10, 10, 30, 30),\n bb2: new BoundingBox(15, 15, 10, 10),\n merged: new BoundingBox(10, 10, 30, 30),\n },\n {\n type: '2 contains 1',\n bb1: new BoundingBox(15, 15, 10, 10),\n bb2: new BoundingBox(10, 10, 30, 30),\n merged: new BoundingBox(10, 10, 30, 30),\n },\n ];\n tests.forEach((test) => {\n const type = test.type;\n const bb1 = test.bb1;\n const bb2 = test.bb2;\n const merged = test.merged;\n bb1.mergeWith(bb2);\n equal(bb1.getX(), merged.getX(), type + ' - Bad X');\n equal(bb1.getY(), merged.getY(), type + ' - Bad Y');\n equal(bb1.getW(), merged.getW(), type + ' - Bad W');\n equal(bb1.getH(), merged.getH(), type + ' - Bad H');\n });\n}\nVexFlowTests.register(BoundingBoxTests);\nexport { BoundingBoxTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// BoundingBoxComputation Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { BoundingBoxComputation, Glyph, OutlineCode } from '../src/index';\nconst BoundingBoxComputationTests = {\n Start() {\n QUnit.module('BoundingBoxComputation');\n test('Point Test', point);\n const run = VexFlowTests.runTests;\n quadraticParams.forEach((params, index) => {\n run(`Quadratic Test ${index}`, quadratic, params);\n });\n cubicParams.forEach((params, index) => {\n run(`Cubic Test ${index}`, cubic, params);\n });\n },\n};\nfunction point() {\n const bboxComp = new BoundingBoxComputation();\n bboxComp.addPoint(2, 3);\n equal(bboxComp.getX1(), 2, 'Bad X1');\n equal(bboxComp.getY1(), 3, 'Bad Y1');\n equal(bboxComp.width(), 0, 'Bad width');\n equal(bboxComp.height(), 0, 'Bad height');\n bboxComp.addPoint(-5, 7);\n equal(bboxComp.getX1(), -5, 'Bad X1');\n equal(bboxComp.getY1(), 3, 'Bad Y1');\n equal(bboxComp.width(), 7, 'Bad width');\n equal(bboxComp.height(), 4, 'Bad height');\n}\n/**\n * Size the context to fit all the points and a small margin.\n */\nfunction createContext(options) {\n const points = options.params.points;\n let w = points[0];\n let h = points[1];\n for (let i = 2; i < points.length; i += 2) {\n w = Math.max(w, points[i]);\n h = Math.max(h, points[i + 1]);\n }\n const f = VexFlowTests.makeFactory(options, w + 20, h + 20);\n const ctx = f.getContext();\n ctx.setLineCap('square');\n return ctx;\n}\n/**\n * Draw a rectangle on the RenderContext.\n */\nfunction rect(ctx, style, lineWidth, x, y, w, h) {\n ctx.strokeStyle = style;\n ctx.setLineWidth(lineWidth);\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.lineTo(x + w, y);\n ctx.lineTo(x + w, y + h);\n ctx.lineTo(x, y + h);\n ctx.lineTo(x, y);\n ctx.stroke();\n}\n// Each test consists of the control points for a single curve and its expected bounding box.\nconst quadraticParams = [\n {\n points: [10, 10, 100, 20, 110, 110],\n box: [10, 10, 100, 100],\n },\n {\n points: [110, 10, 60, 110, 10, 20],\n box: [10, 10, 100, 52.63],\n },\n {\n points: [10, 10, 30, 20, 50, 30],\n box: [10, 10, 40, 20],\n },\n {\n points: [100, 30, 30, 110, 20, 30],\n box: [20, 30, 80, 40],\n },\n];\n/**\n *\n */\nfunction quadratic(options) {\n const points = options.params.points;\n const box = options.params.box;\n const ctx = createContext(options);\n const [x0, y0, x1, y1, x2, y2] = points;\n // Draw expected bounding box.\n let [bx, by, bw, bh] = box;\n rect(ctx, '#0f0', 5, bx, by, bw, bh);\n // Compute the bounding box.\n const bboxComp = new BoundingBoxComputation();\n bboxComp.addQuadraticCurve(x0, y0, x1, y1, x2, y2);\n // Draw computed bounding box.\n [bx, by, bw, bh] = [bboxComp.getX1(), bboxComp.getY1(), bboxComp.width(), bboxComp.height()];\n rect(ctx, '#00f', 3, bx, by, bw, bh);\n // Regression test for a prior bug: compute the bounding box again,\n // this time using the Glyph.getOutlineBoundingBox code path.\n const o = [OutlineCode.MOVE, x0, -y0, OutlineCode.QUADRATIC, x2, -y2, x1, -y1];\n const bbox = Glyph.getOutlineBoundingBox(o, 1, 0, 0);\n rect(ctx, '#fa0', 1, bbox.getX(), bbox.getY(), bbox.getW(), bbox.getH());\n // Draw curve.\n ctx.setLineWidth(1);\n ctx.fillStyle = '#000';\n Glyph.renderOutline(ctx, o, 1, 0, 0);\n // Draw control points.\n ctx.strokeStyle = '#f00';\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n // Check the expected and computed bounding boxes are close enough.\n ok(Math.abs(bboxComp.getX1() - box[0]) < 0.01, `Bad X1: ${bboxComp.getX1()}`);\n ok(Math.abs(bboxComp.getY1() - box[1]) < 0.01, `Bad Y1: ${bboxComp.getY1()}`);\n ok(Math.abs(bboxComp.width() - box[2]) < 0.01, `Bad width: ${bboxComp.width()}`);\n ok(Math.abs(bboxComp.height() - box[3]) < 0.01, `Bad height: ${bboxComp.height()}`);\n ok(Math.abs(bbox.getX() - box[0]) < 0.01, `Bad X: ${bbox.getX()}`);\n ok(Math.abs(bbox.getY() - box[1]) < 0.01, `Bad Y: ${bbox.getY()}`);\n ok(Math.abs(bbox.getW() - box[2]) < 0.01, `Bad W: ${bbox.getW()}`);\n ok(Math.abs(bbox.getH() - box[3]) < 0.01, `Bad H: ${bbox.getH()}`);\n}\n// Each test consists of the control points for a single curve and its expected bounding box.\nconst cubicParams = [\n {\n points: [10, 10, 60, 20, 100, 60, 110, 110],\n box: [10, 10, 100, 100],\n },\n {\n points: [10, 10, 35, 110, 85, 110, 110, 10],\n box: [10, 10, 100, 75],\n },\n {\n points: [10, 110, 90, 10, 30, 10, 110, 110],\n box: [10, 35, 100, 75],\n },\n {\n points: [10, 10, 110, 110, 110, 10, 10, 110],\n box: [10, 10, 75, 100],\n },\n {\n points: [10, 10, 130, 110, -10, 110, 110, 10],\n box: [10, 10, 100, 75],\n },\n {\n points: [50, 10, 10, 110, 110, 110, 74, 10],\n box: [40.38, 10, 41.59, 75],\n },\n {\n points: [10, 30, 35, 60, 110, 110, 60, 10],\n box: [10, 10, 66.82, 59.37],\n },\n {\n points: [210, 70, 10, 10, 190, 10, 120, 90],\n box: [112.02, 27.23, 97.98, 62.77],\n },\n {\n points: [20, 10, 210, 90, 10, 90, 100, 38],\n box: [20, 10, 85.33, 64.06],\n },\n {\n points: [60, 14, 10, 14, 90, 14, 70, 14],\n box: [43.28, 14, 30.01, 0],\n },\n {\n points: [10, 60, 20, 100, 100, 20, 110, 60],\n box: [10, 48.45, 100, 23.1],\n },\n];\nfunction cubic(options) {\n const points = options.params.points;\n const box = options.params.box;\n const ctx = createContext(options);\n const [x0, y0, x1, y1, x2, y2, x3, y3] = points;\n // Draw expected bounding box.\n let [bx, by, bw, bh] = box;\n rect(ctx, '#0f0', 5, bx, by, bw, bh);\n // Compute the bounding box.\n const bboxComp = new BoundingBoxComputation();\n bboxComp.addBezierCurve(x0, y0, x1, y1, x2, y2, x3, y3);\n // Draw computed bounding box.\n [bx, by, bw, bh] = [bboxComp.getX1(), bboxComp.getY1(), bboxComp.width(), bboxComp.height()];\n rect(ctx, '#00f', 3, bx, by, bw, bh);\n // Regression test for a prior bug: compute the bounding box again,\n // this time using the Glyph.getOutlineBoundingBox code path.\n const o = [OutlineCode.MOVE, x0, -y0, OutlineCode.BEZIER, x3, -y3, x1, -y1, x2, -y2];\n const bbox = Glyph.getOutlineBoundingBox(o, 1, 0, 0);\n rect(ctx, '#fa0', 1, bbox.getX(), bbox.getY(), bbox.getW(), bbox.getH());\n // Draw curve.\n ctx.setLineWidth(1);\n ctx.fillStyle = '#000';\n Glyph.renderOutline(ctx, o, 1, 0, 0);\n // Draw control points.\n ctx.strokeStyle = '#f00';\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.lineTo(x3, y3);\n ctx.stroke();\n // Check the expected and computed bounding boxes are close enough.\n ok(Math.abs(bboxComp.getX1() - box[0]) < 0.01, `Bad X1: ${bboxComp.getX1()}`);\n ok(Math.abs(bboxComp.getY1() - box[1]) < 0.01, `Bad Y1: ${bboxComp.getY1()}`);\n ok(Math.abs(bboxComp.width() - box[2]) < 0.01, `Bad width: ${bboxComp.width()}`);\n ok(Math.abs(bboxComp.height() - box[3]) < 0.01, `Bad height: ${bboxComp.height()}`);\n ok(Math.abs(bbox.getX() - box[0]) < 0.01, `Bad X: ${bbox.getX()}`);\n ok(Math.abs(bbox.getY() - box[1]) < 0.01, `Bad Y: ${bbox.getY()}`);\n ok(Math.abs(bbox.getW() - box[2]) < 0.01, `Bad W: ${bbox.getW()}`);\n ok(Math.abs(bbox.getH() - box[3]) < 0.01, `Bad H: ${bbox.getH()}`);\n}\nVexFlowTests.register(BoundingBoxComputationTests);\nexport { BoundingBoxComputationTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// ChordSymbol Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Accidental } from '../src/accidental';\nimport { ChordSymbol } from '../src/chordsymbol';\nimport { Font } from '../src/font';\nimport { Formatter } from '../src/formatter';\nimport { Ornament } from '../src/ornament';\nimport { Stave } from '../src/stave';\nimport { StaveNote } from '../src/stavenote';\nimport { Tables } from '../src/tables';\nconst ChordSymbolTests = {\n Start() {\n QUnit.module('ChordSymbol');\n const run = VexFlowTests.runTests;\n run('Chord Symbol With Modifiers', withModifiers);\n run('Chord Symbol Font Size Tests', fontSize);\n run('Chord Symbol Kerning Tests', kern);\n run('Top Chord Symbols', top);\n run('Top Chord Symbols Justified', topJustify);\n run('Bottom Chord Symbols', bottom);\n run('Bottom Stem Down Chord Symbols', bottomStemDown);\n run('Double Bottom Chord Symbols', doubleBottom);\n },\n};\n// Options for customizing addGlyphOrText() or addGlyph().\nconst superscript = { symbolModifier: ChordSymbol.symbolModifiers.SUPERSCRIPT };\nconst subscript = { symbolModifier: ChordSymbol.symbolModifiers.SUBSCRIPT };\n// Helper function for creating StaveNotes.\nconst note = (factory, keys, duration, chordSymbol) => factory.StaveNote({ keys, duration }).addModifier(chordSymbol, 0);\n/** Calculate the glyph's width in the current music font. */\n// How is this different from Glyph.getWidth()? The numbers don't match up.\nfunction getGlyphWidth(glyphName) {\n // `38` seems to be the `font_scale` specified in many classes, such as\n // Accidental, Articulation, Ornament, Strokes. Does this mean `38pt`???\n //\n // However, tables.ts specifies:\n // NOTATION_FONT_SCALE: 39,\n // TABLATURE_FONT_SCALE: 39,\n const musicFont = Tables.currentMusicFont();\n const glyph = musicFont.getGlyphs()[glyphName];\n const widthInEm = (glyph.x_max - glyph.x_min) / musicFont.getResolution();\n return widthInEm * 38 * Font.scaleToPxFrom.pt;\n}\nfunction withModifiers(options) {\n const f = VexFlowTests.makeFactory(options, 750, 580);\n const ctx = f.getContext();\n ctx.scale(1.5, 1.5);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n function draw(chords, y) {\n const notes = [\n note(f, ['c/4'], 'q', chords[0]).addModifier(new Ornament('doit')),\n note(f, ['c/4'], 'q', chords[1]),\n note(f, ['c/4'], 'q', chords[2]).addModifier(new Ornament('fall')),\n note(f, ['c/4'], 'q', chords[3]),\n ];\n const score = f.EasyScore();\n const voice = score.voice(notes, { time: '4/4' });\n const formatter = f.Formatter();\n formatter.joinVoices([voice]);\n const voiceW = formatter.preCalculateMinTotalWidth([voice]);\n const staffW = voiceW + Stave.defaultPadding + getGlyphWidth('gClef');\n formatter.format([voice], voiceW);\n const staff = f.Stave({ x: 10, y, width: staffW }).addClef('treble').draw();\n voice.draw(ctx, staff);\n }\n let chords = [];\n chords.push(f\n .ChordSymbol({ fontSize: 10 })\n .addText('F7')\n .addGlyph('leftParenTall')\n .addGlyphOrText('b9', superscript)\n .addGlyphOrText('#11', subscript)\n .addGlyph('rightParenTall'));\n chords.push(f.ChordSymbol({ fontSize: 12 }).addText('F7').addGlyphOrText('b9', superscript).addGlyphOrText('#11', subscript));\n chords.push(f\n .ChordSymbol({ fontSize: 14 })\n .addText('F7')\n .addGlyph('leftParenTall')\n .addGlyphOrText('add 3', superscript)\n .addGlyphOrText('omit 9', subscript)\n .addGlyph('rightParenTall'));\n chords.push(f\n .ChordSymbol({ fontSize: 16 })\n .addText('F7')\n .addGlyph('leftParenTall')\n .addGlyphOrText('b9', superscript)\n .addGlyphOrText('#11', subscript)\n .addGlyph('rightParenTall'));\n draw(chords, 40);\n chords = [];\n chords.push(f\n .ChordSymbol({ fontSize: 10 })\n .setFontSize(10)\n .addText('F7')\n .addGlyphOrText('#11', superscript)\n .addGlyphOrText('b9', subscript));\n chords.push(f.ChordSymbol({ fontSize: 12 }).addText('F7').addGlyphOrText('#11', superscript).addGlyphOrText('b9', subscript));\n chords.push(f.ChordSymbol({ fontSize: 14 }).addText('F7').addGlyphOrText('#11', superscript).addGlyphOrText('b9', subscript));\n chords.push(f\n .ChordSymbol({ fontSize: 16 })\n .setFontSize(16)\n .addText('F7')\n .addGlyphOrText('#11', superscript)\n .addGlyphOrText('b9', subscript));\n draw(chords, 140);\n chords = [\n f.ChordSymbol({ fontSize: 10 }).addGlyphOrText('Ab').addGlyphOrText('7(#11b9)', superscript),\n f.ChordSymbol({ fontSize: 14 }).addGlyphOrText('C#').addGlyphOrText('7(#11b9)', superscript),\n f.ChordSymbol({ fontSize: 16 }).addGlyphOrText('Ab').addGlyphOrText('7(#11b9)', superscript),\n f.ChordSymbol({ fontSize: 18 }).addGlyphOrText('C#').addGlyphOrText('7(#11b9)', superscript),\n ];\n draw(chords, 240);\n ok(true, 'Font Size Chord Symbol');\n}\nfunction fontSize(options) {\n const f = VexFlowTests.makeFactory(options, 750, 580);\n const ctx = f.getContext();\n ctx.scale(1.5, 1.5);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n function draw(chords, y) {\n const stave = f.Stave({ x: 10, y, width: 450 }).addClef('treble');\n const notes = [\n note(f, ['c/4'], 'q', chords[0]),\n note(f, ['c/4'], 'q', chords[1]),\n note(f, ['c/4'], 'q', chords[2]),\n note(f, ['c/4'], 'q', chords[3]),\n ];\n const score = f.EasyScore();\n const voice = score.voice(notes, { time: '4/4' });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n }\n let chords = [];\n chords.push(f\n .ChordSymbol({ fontSize: 10 })\n .addText('F7')\n .addGlyph('leftParenTall')\n .addGlyphOrText('b9', superscript)\n .addGlyphOrText('#11', subscript)\n .addGlyph('rightParenTall')\n .setReportWidth(false));\n chords.push(f\n .ChordSymbol({ fontSize: 12 })\n .addText('F7')\n .addGlyphOrText('b9', superscript)\n .addGlyphOrText('#11', subscript)\n .setReportWidth(false));\n chords.push(f\n .ChordSymbol({ fontSize: 14 })\n .addText('F7')\n .addGlyph('leftParenTall')\n .addGlyphOrText('add 3', superscript)\n .addGlyphOrText('omit 9', subscript)\n .addGlyph('rightParenTall')\n .setReportWidth(false));\n chords.push(f\n .ChordSymbol({ fontSize: 16 })\n .addText('F7')\n .addGlyph('leftParenTall')\n .addGlyphOrText('b9', superscript)\n .addGlyphOrText('#11', subscript)\n .addGlyph('rightParenTall')\n .setReportWidth(false));\n draw(chords, 40);\n chords = [];\n chords.push(f\n .ChordSymbol({ fontSize: 10 })\n .setFontSize(10)\n .addText('F7')\n .addGlyphOrText('#11', superscript)\n .addGlyphOrText('b9', subscript));\n chords.push(f.ChordSymbol({ fontSize: 12 }).addText('F7').addGlyphOrText('#11', superscript).addGlyphOrText('b9', subscript));\n chords.push(f.ChordSymbol({ fontSize: 14 }).addText('F7').addGlyphOrText('#11', superscript).addGlyphOrText('b9', subscript));\n chords.push(f\n .ChordSymbol({ fontSize: 16 })\n .setFontSize(16)\n .addText('F7')\n .addGlyphOrText('#11', superscript)\n .addGlyphOrText('b9', subscript));\n draw(chords, 140);\n chords = [\n f.ChordSymbol({ fontSize: 10 }).addGlyphOrText('Ab').addGlyphOrText('7(#11b9)', superscript),\n f.ChordSymbol({ fontSize: 14 }).addGlyphOrText('C#').addGlyphOrText('7(#11b9)', superscript),\n f.ChordSymbol({ fontSize: 16 }).addGlyphOrText('Ab').addGlyphOrText('7(#11b9)', superscript),\n f.ChordSymbol({ fontSize: 18 }).addGlyphOrText('C#').addGlyphOrText('7(#11b9)', superscript),\n ];\n draw(chords, 240);\n ok(true, 'Font Size Chord Symbol');\n}\nfunction kern(options) {\n const f = VexFlowTests.makeFactory(options, 650 * 1.5, 650);\n const ctx = f.getContext();\n ctx.scale(1.5, 1.5);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n function draw(chords, y) {\n const stave = f.Stave({ x: 10, y, width: 450 }).addClef('treble').setContext(ctx).draw();\n const notes = [\n note(f, ['C/4'], 'q', chords[0]),\n note(f, ['C/4'], 'q', chords[1]),\n note(f, ['C/4'], 'q', chords[2]),\n note(f, ['C/4'], 'q', chords[3]),\n ];\n const score = f.EasyScore();\n const voice = score.voice(notes, { time: '4/4' });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n }\n let chords = [\n f.ChordSymbol().addText('A').addGlyphSuperscript('dim').setReportWidth(false),\n f.ChordSymbol({ kerning: false, reportWidth: false }).addText('A').addGlyphSuperscript('dim'),\n f.ChordSymbol({ hJustify: 'left', reportWidth: false }).addText('C').addGlyph('halfDiminished', superscript),\n f.ChordSymbol({ reportWidth: false }).addText('D').addGlyph('halfDiminished', superscript),\n ];\n draw(chords, 10);\n chords = [\n f.ChordSymbol().addText('A').addGlyphSuperscript('dim'),\n f.ChordSymbol({ kerning: false }).addText('A').addGlyphSuperscript('dim'),\n f.ChordSymbol().addText('A').addGlyphSuperscript('+').addTextSuperscript('5'),\n f.ChordSymbol().addText('G').addGlyphSuperscript('+').addTextSuperscript('5'),\n ];\n draw(chords, 110);\n chords = [\n f.ChordSymbol().addText('A').addGlyph('-'),\n f.ChordSymbol().addText('E').addGlyph('-'),\n f.ChordSymbol().addText('A').addGlyphOrText('(#11)', superscript),\n f.ChordSymbol().addText('E').addGlyphOrText('(#9)', superscript),\n ];\n draw(chords, 210);\n chords = [\n f.ChordSymbol().addGlyphOrText('F/B').addGlyphOrText('b', superscript),\n f.ChordSymbol().addText('E').addGlyphOrText('V/V'),\n f.ChordSymbol().addText('A').addGlyphOrText('(#11)', superscript),\n f.ChordSymbol().addText('E').addGlyphOrText('(#9)', superscript),\n ];\n draw(chords, 310);\n ok(true, 'Chord Symbol Kerning Tests');\n}\nfunction top(options) {\n const f = VexFlowTests.makeFactory(options, 650 * 1.5, 650);\n const ctx = f.getContext();\n ctx.scale(1.5, 1.5);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n function draw(c1, c2, y) {\n const stave = f.Stave({ x: 10, y, width: 450 }).addClef('treble').setContext(ctx).draw();\n const notes = [\n note(f, ['e/4', 'a/4', 'd/5'], 'h', c1).addModifier(new Accidental('b'), 0),\n note(f, ['c/4', 'e/4', 'b/4'], 'h', c2),\n ];\n const score = f.EasyScore();\n const voice = score.voice(notes, { time: '4/4' });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n }\n let chord1 = f\n .ChordSymbol({ reportWidth: false })\n .addText('F7')\n .setHorizontal('left')\n .addGlyphOrText('(#11b9)', superscript);\n let chord2 = f\n .ChordSymbol({ reportWidth: false })\n .addText('C')\n .setHorizontal('left')\n .addGlyphSuperscript('majorSeventh');\n draw(chord1, chord2, 40);\n chord1 = f\n .ChordSymbol()\n .addText('F7')\n .addTextSuperscript('(')\n .addGlyphOrText('#11b9', superscript)\n .addTextSuperscript(')');\n chord2 = f.ChordSymbol().addText('C').setHorizontal('left').addTextSuperscript('Maj.');\n draw(chord1, chord2, 140);\n chord1 = f\n .ChordSymbol()\n .addText('F7')\n .setHorizontal('left')\n .addGlyphOrText('#11', superscript)\n .addGlyphOrText('b9', subscript);\n chord2 = f.ChordSymbol().addText('C').addTextSuperscript('sus4');\n draw(chord1, chord2, 240);\n ok(true, 'Top Chord Symbol');\n}\nfunction topJustify(options) {\n const f = VexFlowTests.makeFactory(options, 500 * 1.5, 680);\n const ctx = f.getContext();\n ctx.scale(1.5, 1.5);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n function draw(chord1, chord2, y) {\n const stave = new Stave(10, y, 450).addClef('treble').setContext(ctx).draw();\n const notes = [\n note(f, ['e/4', 'a/4', 'd/5'], 'h', chord1).addModifier(new Accidental('b'), 0),\n note(f, ['c/4', 'e/4', 'B/4'], 'h', chord2),\n ];\n Formatter.FormatAndDraw(ctx, stave, notes);\n }\n let chord1 = f.ChordSymbol().addText('F7').setHorizontal('left').addGlyphOrText('(#11b9)', superscript);\n let chord2 = f.ChordSymbol({ hJustify: 'left' }).addText('C').addGlyphSuperscript('majorSeventh');\n draw(chord1, chord2, 40);\n chord1 = f\n .ChordSymbol({ hJustify: 'center' })\n .addText('F7')\n .setHorizontal('left')\n .addGlyphOrText('(#11b9)', superscript);\n chord2 = f.ChordSymbol({ hJustify: 'center' }).addText('C').addTextSuperscript('Maj.');\n draw(chord1, chord2, 140);\n chord1 = f\n .ChordSymbol({ hJustify: 'right' })\n .addText('F7')\n .setHorizontal('left')\n .addGlyphOrText('#11', superscript)\n .addGlyphOrText('b9', subscript);\n chord2 = f.ChordSymbol({ hJustify: 'right' }).addText('C').addTextSuperscript('Maj.');\n draw(chord1, chord2, 240);\n chord1 = f\n .ChordSymbol({ hJustify: 'left' })\n .addText('F7')\n .setHorizontal('left')\n .addGlyphOrText('#11', superscript)\n .addGlyphOrText('b9', subscript);\n chord2 = f.ChordSymbol({ hJustify: 'centerStem' }).addText('C').addTextSuperscript('Maj.');\n draw(chord1, chord2, 340);\n ok(true, 'Top Chord Justified');\n}\nfunction bottom(options) {\n const f = VexFlowTests.makeFactory(options, 600 * 1.5, 230);\n const ctx = f.getContext();\n ctx.scale(1.5, 1.5);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n function draw(chords, y) {\n const stave = new Stave(10, y, 400).addClef('treble').setContext(ctx).draw();\n const notes = [\n note(f, ['c/4', 'f/4', 'a/4'], 'q', chords[0]),\n note(f, ['c/4', 'e/4', 'b/4'], 'q', chords[1]).addModifier(new Accidental('b'), 2),\n note(f, ['c/4', 'e/4', 'g/4'], 'q', chords[2]),\n note(f, ['c/4', 'f/4', 'a/4'], 'q', chords[3]).addModifier(new Accidental('#'), 1),\n ];\n Formatter.FormatAndDraw(ctx, stave, notes);\n }\n const chords = [\n f.ChordSymbol({ vJustify: 'bottom' }).addText('I').addTextSuperscript('6').addTextSubscript('4'),\n f.ChordSymbol({ vJustify: 'bottom' }).addGlyphOrText('V'),\n f.ChordSymbol({ vJustify: 'bottom' }).addLine(12),\n f.ChordSymbol({ vJustify: 'bottom' }).addGlyphOrText('V/V'),\n ];\n draw(chords, 10);\n ok(true, 'Bottom Chord Symbol');\n}\nfunction bottomStemDown(options) {\n const f = VexFlowTests.makeFactory(options, 600 * 1.5, 330);\n const ctx = f.getContext();\n ctx.scale(1.5, 1.5);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n function draw(chords, y) {\n // Helper function to create a StaveNote with a ChordSymbol and the stem pointing down.\n const note = (keys, duration, chordSymbol) => new StaveNote({ keys, duration, stem_direction: -1 }).addModifier(chordSymbol, 0);\n const stave = new Stave(10, y, 400).addClef('treble').setContext(ctx).draw();\n const notes = [\n note(['c/4', 'f/4', 'a/4'], 'q', chords[0]),\n note(['c/4', 'e/4', 'b/4'], 'q', chords[1]).addModifier(new Accidental('b'), 2),\n note(['c/4', 'e/4', 'g/4'], 'q', chords[2]),\n note(['c/4', 'f/4', 'a/4'], 'q', chords[3]).addModifier(new Accidental('#'), 1),\n ];\n Formatter.FormatAndDraw(ctx, stave, notes);\n }\n const chords = [\n f.ChordSymbol({ vJustify: 'bottom' }).addGlyphOrText('F'),\n f.ChordSymbol({ vJustify: 'bottom' }).addGlyphOrText('C7'),\n f.ChordSymbol({ vJustify: 'bottom' }).addLine(12),\n f.ChordSymbol({ vJustify: 'bottom' }).addText('A').addGlyphSuperscript('dim'),\n ];\n draw(chords, 10);\n ok(true, 'Bottom Stem Down Chord Symbol');\n}\nfunction doubleBottom(options) {\n const f = VexFlowTests.makeFactory(options, 600 * 1.5, 260);\n const ctx = f.getContext();\n ctx.scale(1.5, 1.5);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n function draw(chords, chords2, y) {\n // Helper function to create a StaveNote with two ChordSymbols attached.\n const note = (keys, duration, chordSymbol1, chordSymbol2) => new StaveNote({ keys, duration }).addModifier(chordSymbol1, 0).addModifier(chordSymbol2, 0);\n const stave = f.Stave({ x: 10, y, width: 450 }).addClef('treble').setContext(ctx).draw();\n const notes = [\n note(['c/4', 'f/4', 'a/4'], 'q', chords[0], chords2[0]),\n note(['c/4', 'e/4', 'b/4'], 'q', chords[1], chords2[1]).addModifier(f.Accidental({ type: 'b' }), 2),\n note(['c/4', 'e/4', 'g/4'], 'q', chords[2], chords2[2]),\n note(['c/4', 'f/4', 'a/4'], 'q', chords[3], chords2[3]).addModifier(f.Accidental({ type: '#' }), 1),\n ];\n Formatter.FormatAndDraw(ctx, stave, notes);\n }\n const chords1 = [\n f.ChordSymbol({ vJustify: 'bottom' }).addText('I').addTextSuperscript('6').addTextSubscript('4'),\n f.ChordSymbol({ vJustify: 'bottom' }).addGlyphOrText('V'),\n f.ChordSymbol({ vJustify: 'bottom' }).addLine(12),\n f.ChordSymbol({ vJustify: 'bottom' }).addGlyphOrText('V/V'),\n ];\n const chords2 = [\n f.ChordSymbol({ vJustify: 'bottom' }).addText('T'),\n f.ChordSymbol({ vJustify: 'bottom' }).addText('D'),\n f.ChordSymbol({ vJustify: 'bottom' }).addText('D'),\n f.ChordSymbol({ vJustify: 'bottom' }).addText('SD'),\n ];\n draw(chords1, chords2, 10);\n ok(true, '2 Bottom Chord Symbol');\n}\nVexFlowTests.register(ChordSymbolTests);\nexport { ChordSymbolTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Clef Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nconst ClefTests = {\n Start() {\n QUnit.module('Clef');\n const run = VexFlowTests.runTests;\n run('Clef Test', draw);\n run('Clef End Test', drawEnd);\n run('Small Clef Test', drawSmall);\n run('Small Clef End Test', drawSmallEnd);\n run('Clef Change Test', drawClefChange);\n },\n};\nfunction draw(options) {\n const f = VexFlowTests.makeFactory(options, 800, 120);\n f.Stave()\n .addClef('treble')\n .addClef('treble', 'default', '8va')\n .addClef('treble', 'default', '8vb')\n .addClef('alto')\n .addClef('tenor')\n .addClef('soprano')\n .addClef('bass')\n .addClef('bass', 'default', '8vb')\n .addClef('mezzo-soprano')\n .addClef('baritone-c')\n .addClef('baritone-f')\n .addClef('subbass')\n .addClef('percussion')\n .addClef('french')\n .addEndClef('treble');\n f.draw();\n ok(true, 'all pass');\n}\nfunction drawEnd(options) {\n const f = VexFlowTests.makeFactory(options, 800, 120);\n f.Stave()\n .addClef('bass')\n .addEndClef('treble')\n .addEndClef('treble', 'default', '8va')\n .addEndClef('treble', 'default', '8vb')\n .addEndClef('alto')\n .addEndClef('tenor')\n .addEndClef('soprano')\n .addEndClef('bass')\n .addEndClef('bass', 'default', '8vb')\n .addEndClef('mezzo-soprano')\n .addEndClef('baritone-c')\n .addEndClef('baritone-f')\n .addEndClef('subbass')\n .addEndClef('percussion')\n .addEndClef('french');\n f.draw();\n ok(true, 'all pass');\n}\nfunction drawSmall(options) {\n const f = VexFlowTests.makeFactory(options, 800, 120);\n f.Stave()\n .addClef('treble', 'small')\n .addClef('treble', 'small', '8va')\n .addClef('treble', 'small', '8vb')\n .addClef('alto', 'small')\n .addClef('tenor', 'small')\n .addClef('soprano', 'small')\n .addClef('bass', 'small')\n .addClef('bass', 'small', '8vb')\n .addClef('mezzo-soprano', 'small')\n .addClef('baritone-c', 'small')\n .addClef('baritone-f', 'small')\n .addClef('subbass', 'small')\n .addClef('percussion', 'small')\n .addClef('french', 'small')\n .addEndClef('treble', 'small');\n f.draw();\n ok(true, 'all pass');\n}\nfunction drawSmallEnd(options) {\n const f = VexFlowTests.makeFactory(options, 800, 120);\n f.Stave()\n .addClef('bass', 'small')\n .addEndClef('treble', 'small')\n .addEndClef('treble', 'small', '8va')\n .addEndClef('treble', 'small', '8vb')\n .addEndClef('alto', 'small')\n .addEndClef('tenor', 'small')\n .addEndClef('soprano', 'small')\n .addEndClef('bass', 'small')\n .addEndClef('bass', 'small', '8vb')\n .addEndClef('mezzo-soprano', 'small')\n .addEndClef('baritone-c', 'small')\n .addEndClef('baritone-f', 'small')\n .addEndClef('subbass', 'small')\n .addEndClef('percussion', 'small')\n .addEndClef('french', 'small');\n f.draw();\n ok(true, 'all pass');\n}\nfunction drawClefChange(options) {\n const f = VexFlowTests.makeFactory(options, 800, 180);\n const stave = f.Stave().addClef('treble');\n const notes = [\n f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble' }),\n f.ClefNote({ type: 'alto', options: { size: 'small' } }),\n f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'alto' }),\n f.ClefNote({ type: 'tenor', options: { size: 'small' } }),\n f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'tenor' }),\n f.ClefNote({ type: 'soprano', options: { size: 'small' } }),\n f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'soprano' }),\n f.ClefNote({ type: 'bass', options: { size: 'small' } }),\n f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'bass' }),\n f.ClefNote({ type: 'mezzo-soprano', options: { size: 'small' } }),\n f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'mezzo-soprano' }),\n f.ClefNote({ type: 'baritone-c', options: { size: 'small' } }),\n f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'baritone-c' }),\n f.ClefNote({ type: 'baritone-f', options: { size: 'small' } }),\n f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'baritone-f' }),\n f.ClefNote({ type: 'subbass', options: { size: 'small' } }),\n f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'subbass' }),\n f.ClefNote({ type: 'french', options: { size: 'small' } }),\n f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'french' }),\n f.ClefNote({ type: 'treble', options: { size: 'small', annotation: '8vb' } }),\n f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble', octave_shift: -1 }),\n f.ClefNote({ type: 'treble', options: { size: 'small', annotation: '8va' } }),\n f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble', octave_shift: 1 }),\n ];\n const voice = f.Voice({ time: '12/4' }).addTickables(notes);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'all pass');\n}\nVexFlowTests.register(ClefTests);\nexport { ClefTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Curve Tests\nimport { concat, VexFlowTests } from './vexflow_test_helpers';\nimport { CurvePosition } from '../src/curve';\nconst CurveTests = {\n Start() {\n QUnit.module('Curve');\n const run = VexFlowTests.runTests;\n run('Simple Curve', simple);\n run('Rounded Curve', rounded);\n run('Thick Thin Curves', thickThin);\n run('Top Curve', top);\n },\n};\n/**\n * Helper function. Each test case passes in a set of notes and\n * a setupCurves() callback which uses Factory.Curve(...) to build the curves.\n * Curves can be used to indicate slurs (legato articulation).\n */\nfunction createTest(noteGroup1, noteGroup2, setupCurves) {\n return (options) => {\n const factory = VexFlowTests.makeFactory(options, 350, 200);\n const stave = factory.Stave({ y: 50 });\n const score = factory.EasyScore();\n // Use .reduce(concat) to flatten the two StaveNote[] into a single StaveNote[].\n const staveNotes = [\n score.beam(score.notes(...noteGroup1)),\n score.beam(score.notes(...noteGroup2)), // group 2\n ].reduce(concat);\n setupCurves(factory, staveNotes);\n const voices = [score.voice(staveNotes, { time: '4/4' })];\n factory.Formatter().joinVoices(voices).formatToStave(voices, stave);\n factory.draw();\n ok('Simple Curve');\n };\n}\nconst simple = createTest(['c4/8, f5, d5, g5', { stem: 'up' }], // beamGroup1\n['d6/8, f5, d5, g5', { stem: 'down' }], // beamGroup2\n(f, notes) => {\n f.Curve({\n from: notes[0],\n to: notes[3],\n options: {\n cps: [\n { x: 0, y: 10 },\n { x: 0, y: 50 },\n ],\n },\n });\n f.Curve({\n from: notes[4],\n to: notes[7],\n options: {\n cps: [\n { x: 0, y: 10 },\n { x: 0, y: 20 },\n ],\n },\n });\n});\nconst rounded = createTest(['c5/8, f4, d4, g5', { stem: 'up' }], // beamGroup1\n['d5/8, d6, d6, g5', { stem: 'down' }], // beamGroup2\n(f, notes) => {\n f.Curve({\n from: notes[0],\n to: notes[3],\n options: {\n x_shift: -10,\n y_shift: 30,\n cps: [\n { x: 0, y: 20 },\n { x: 0, y: 50 },\n ],\n },\n });\n f.Curve({\n from: notes[4],\n to: notes[7],\n options: {\n cps: [\n { x: 0, y: 50 },\n { x: 0, y: 50 },\n ],\n },\n });\n});\nconst thickThin = createTest(['c5/8, f4, d4, g5', { stem: 'up' }], // beamGroup1\n['d5/8, d6, d6, g5', { stem: 'down' }], // beamGroup2\n(f, notes) => {\n f.Curve({\n from: notes[0],\n to: notes[3],\n options: {\n thickness: 10,\n x_shift: -10,\n y_shift: 30,\n cps: [\n { x: 0, y: 20 },\n { x: 0, y: 50 },\n ],\n },\n });\n f.Curve({\n from: notes[4],\n to: notes[7],\n options: {\n thickness: 0,\n cps: [\n { x: 0, y: 50 },\n { x: 0, y: 50 },\n ],\n },\n });\n});\nconst top = createTest(['c5/8, f4, d4, g5', { stem: 'up' }], // beamGroup1\n['d5/8, d6, d6, g5', { stem: 'down' }], // beamGroup2\n(f, notes) => {\n f.Curve({\n from: notes[0],\n to: notes[7],\n options: {\n x_shift: -3,\n y_shift: 10,\n position: CurvePosition.NEAR_TOP,\n position_end: CurvePosition.NEAR_HEAD,\n cps: [\n { x: 0, y: 20 },\n { x: 40, y: 80 },\n ],\n },\n });\n});\nVexFlowTests.register(CurveTests);\nexport { CurveTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Dot Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Beam } from '../src/beam';\nimport { Dot } from '../src/dot';\nimport { Formatter } from '../src/formatter';\nimport { ModifierContext } from '../src/modifiercontext';\nimport { Note } from '../src/note';\nimport { Stave } from '../src/stave';\nimport { StaveNote } from '../src/stavenote';\nimport { TickContext } from '../src/tickcontext';\nimport { Voice } from '../src/voice';\nconst DotTests = {\n Start() {\n QUnit.module('Dot');\n const run = VexFlowTests.runTests;\n run('Basic', basic);\n run('Multi Voice', multiVoice);\n },\n};\n/**\n * Helper function for the basic test case below.\n */\nfunction showOneNote(note1, stave, ctx, x) {\n const modifierContext = new ModifierContext();\n note1.setStave(stave).addToModifierContext(modifierContext);\n new TickContext().addTickable(note1).preFormat().setX(x);\n note1.setContext(ctx).draw();\n Note.plotMetrics(ctx, note1, 140);\n}\nfunction basic(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 1000, 240);\n ctx.setFillStyle('#221');\n ctx.setStrokeStyle('#221');\n const stave = new Stave(10, 10, 975);\n stave.setContext(ctx);\n stave.draw();\n const notes = [\n new StaveNote({ keys: ['c/4', 'e/4', 'a/4', 'b/4'], duration: 'w' }),\n new StaveNote({ keys: ['a/4', 'b/4', 'c/5'], duration: '4', stem_direction: 1 }),\n new StaveNote({ keys: ['g/4', 'a/4', 'b/4'], duration: '4', stem_direction: -1 }),\n new StaveNote({ keys: ['e/4', 'f/4', 'b/4', 'c/5'], duration: '4' }),\n new StaveNote({\n keys: ['g/4', 'a/4', 'd/5', 'e/5', 'g/5'],\n duration: '4',\n stem_direction: -1,\n }),\n new StaveNote({ keys: ['g/4', 'b/4', 'd/5', 'e/5'], duration: '4', stem_direction: -1 }),\n new StaveNote({ keys: ['e/4', 'g/4', 'b/4', 'c/5'], duration: '4', stem_direction: 1 }),\n new StaveNote({ keys: ['d/4', 'e/4', 'f/4', 'a/4', 'c/5', 'e/5', 'g/5'], duration: '2' }),\n new StaveNote({\n keys: ['f/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5', 'g/5'],\n duration: '16',\n stem_direction: -1,\n }),\n new StaveNote({ keys: ['f/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5', 'g/5'], duration: '16', stem_direction: 1 }),\n new StaveNote({\n keys: ['e/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5', 'f/5'],\n duration: '16',\n stem_direction: 1,\n }),\n new StaveNote({\n keys: ['e/4', 'g/4', 'a/4', 'b/4', 'c/5'],\n duration: '16',\n stem_direction: 1,\n }),\n new StaveNote({ keys: ['e/4', 'a/4', 'b/4', 'c/5'], duration: '16', stem_direction: 1 }),\n ];\n Dot.buildAndAttach(notes, { all: true });\n Dot.buildAndAttach([notes[7], notes[8], notes[9]], { all: true });\n Dot.buildAndAttach([notes[8], notes[9]], { all: true });\n const beam = new Beam(notes.slice(notes.length - 2));\n for (let i = 0; i < notes.length; i++) {\n showOneNote(notes[i], stave, ctx, 30 + i * 65);\n const dots = notes[i].getModifiersByType('Dot');\n ok(dots.length > 0, 'Note ' + i + ' has dots');\n for (let j = 0; j < dots.length; ++j) {\n ok(dots[j].getWidth() > 0, 'Dot ' + j + ' has width set');\n }\n }\n beam.setContext(ctx).draw();\n VexFlowTests.plotLegendForNoteWidth(ctx, 890, 140);\n ok(true, 'Full Dot');\n}\nfunction multiVoice(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 750, 300);\n ctx.setFillStyle('#221');\n ctx.setStrokeStyle('#221');\n const stave = new Stave(30, 45, 700).setContext(ctx).draw();\n const notes1 = [\n new StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: '2', stem_direction: -1 }),\n new StaveNote({ keys: ['c/4', 'e/4', 'c/5'], duration: '2', stem_direction: -1 }),\n new StaveNote({ keys: ['d/4', 'c/5', 'd/5'], duration: '2', stem_direction: -1 }),\n new StaveNote({ keys: ['d/4', 'c/5', 'd/5'], duration: '8', stem_direction: -1 }),\n new StaveNote({ keys: ['d/4', 'c/5', 'd/5'], duration: '8', stem_direction: -1 }),\n ];\n Dot.buildAndAttach([notes1[0], notes1[2], notes1[3], notes1[4]], { all: true });\n Dot.buildAndAttach([notes1[0], notes1[2], notes1[3], notes1[4]], { all: true });\n Dot.buildAndAttach([notes1[1]], { index: 0 });\n Dot.buildAndAttach([notes1[1]], { index: 0 });\n Dot.buildAndAttach([notes1[1]], { index: 1 });\n Dot.buildAndAttach([notes1[1]], { index: 1 });\n Dot.buildAndAttach([notes1[1]], { index: 2 });\n Dot.buildAndAttach([notes1[1]], { index: 2 });\n Dot.buildAndAttach([notes1[1]], { index: 2 });\n Dot.buildAndAttach([notes1[2], notes1[3], notes1[4]]);\n const notes2 = [\n new StaveNote({ keys: ['d/5', 'a/5', 'b/5'], duration: '2', stem_direction: 1 }),\n new StaveNote({ keys: ['d/5', 'a/5', 'b/5'], duration: '4', stem_direction: 1 }),\n new StaveNote({ keys: ['d/5', 'a/5', 'b/5'], duration: '4', stem_direction: 1 }),\n new StaveNote({ keys: ['d/5', 'g/5', 'a/5', 'b/5'], duration: '8', stem_direction: 1 }),\n new StaveNote({ keys: ['d/5', 'a/5', 'b/5'], duration: '8', stem_direction: 1 }),\n ];\n Dot.buildAndAttach(notes2, { all: true });\n Dot.buildAndAttach([notes2[1]], { all: true });\n const voice1 = new Voice().setMode(Voice.Mode.SOFT).addTickables(notes1);\n const voice2 = new Voice().setMode(Voice.Mode.SOFT).addTickables(notes2);\n const formatter = new Formatter().joinVoices([voice1, voice2]);\n formatter.format([voice1, voice2], 700);\n voice1.draw(ctx, stave);\n voice2.draw(ctx, stave);\n notes1.forEach((note) => Note.plotMetrics(ctx, note, 190));\n notes2.forEach((note) => Note.plotMetrics(ctx, note, 20));\n VexFlowTests.plotLegendForNoteWidth(ctx, 620, 220);\n ok(true, 'Full Dot');\n}\nVexFlowTests.register(DotTests);\nexport { DotTests };\n","// [VexFlow](https://vexflow.com/) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// EasyScore Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Articulation } from '../src/articulation';\nimport { EasyScore } from '../src/easyscore';\nimport { FretHandFinger } from '../src/frethandfinger';\nimport { Modifier } from '../src/modifier';\nimport { Parenthesis } from '../src/parenthesis';\nimport { StaveConnector } from '../src/staveconnector';\nimport { Stem } from '../src/stem';\nimport { Tuplet } from '../src/tuplet';\nconst EasyScoreTests = {\n Start() {\n QUnit.module('EasyScore');\n test('Basic', basic);\n test('Accidentals', accidentals);\n test('Durations', durations);\n test('Chords', chords);\n test('Dots', dots);\n test('Types', types);\n test('Options', options);\n const run = VexFlowTests.runTests;\n run('Draw Basic', drawBasicTest);\n run('Draw Different KeySignature', drawDiffKeysig);\n run('Draw Basic Muted', drawBasicMutedTest);\n run('Draw Basic Harmonic', drawBasicHarmonicTest);\n run('Draw Basic Slash', drawBasicSlashTest);\n run('Draw Ghostnote Basic', drawGhostBasicTest);\n run('Draw Ghostnote Dotted', drawGhostDottedTest);\n run('Draw Parenthesised', drawParenthesisedTest);\n run('Draw Accidentals', drawAccidentalsTest);\n run('Draw Beams', drawBeamsTest);\n run('Draw Tuplets', drawTupletsTest);\n run('Draw Dots', drawDotsTest);\n run('Draw Options', drawOptionsTest);\n run('Draw Fingerings', drawFingeringsTest);\n run('Keys', keys);\n },\n};\n/**\n * Use Function.prototype.bind() to create shortcut methods.\n * This can improve the readability of your EasyScore code.\n */\nfunction createShortcuts(score) {\n return {\n voice: score.voice.bind(score),\n notes: score.notes.bind(score),\n beam: score.beam.bind(score),\n tuplet: score.tuplet.bind(score),\n };\n}\n/**\n * Test case verifies:\n * - all strings in `mustPass` parse correctly\n * - all strings in `mustFail` fail to parse (i.e., Result.success is `false`).\n */\nfunction basic() {\n const score = new EasyScore();\n const mustPass = ['c4', 'c#4', 'c4/r', 'c#5', 'c3/m', 'c3//m', 'c3//h', 'c3/s', 'c3//s', 'c3/g', 'c3//g'];\n const mustFail = ['', '()', '7', '(c#4 e5 g6'];\n mustPass.forEach((line) => equal(score.parse(line).success, true, line));\n mustFail.forEach((line) => equal(score.parse(line).success, false, line));\n}\nfunction accidentals() {\n const score = new EasyScore();\n const mustPass = [\n 'c3',\n 'c##3, cb3',\n 'Cn3',\n 'f3//m',\n '(c##3 cbb3 cn3), cb3',\n 'cbbs7',\n 'cbb7',\n 'cbss7',\n 'cbs7',\n 'cb7',\n 'cdb7',\n 'cd7',\n 'c##7',\n 'c#7',\n 'cn7',\n 'c++-7',\n 'c++7',\n 'c+-7',\n 'c+7',\n '(cbs3 bbs3 dbs3), ebs3',\n '(cd7 cbb3 cn3), cb3',\n 'co7',\n 'ck7',\n ];\n const mustFail = [\n 'ct3',\n 'cdbb7',\n '(cq cbb3 cn3), cb3',\n '(cdd7 cbb3 cn3), cb3',\n 'cbbbs7',\n 'cbbss7',\n 'cbsss7',\n 'csbs7',\n 'cddb7',\n 'cddbb7',\n 'cdd7',\n 'c##b7',\n 'c#bs7',\n 'cnb#7',\n 'c+#+b-d7',\n 'c+--7',\n 'c++--7',\n 'c+++7',\n 'cbk7',\n 'cok7',\n 'cko7',\n 'c#s7',\n ];\n mustPass.forEach((line) => equal(score.parse(line).success, true, line));\n mustFail.forEach((line) => equal(score.parse(line).success, false, line));\n}\nfunction durations() {\n const score = new EasyScore();\n const mustPass = ['c3/4', 'c##3/w, cb3', 'c##3/w, cb3/q', 'c##3/q, cb3/32', '(c##3 cbb3 cn3), cb3'];\n const mustFail = ['Cn3/]', '/', '(cq cbb3 cn3), cb3', '(cdd7 cbb3 cn3), cb3'];\n mustPass.forEach((line) => equal(score.parse(line).success, true, line));\n mustFail.forEach((line) => equal(score.parse(line).success, false, line));\n}\nfunction chords() {\n const score = new EasyScore();\n const mustPass = [\n '(c5)',\n '(c3 e0 g9)',\n '(c##4 cbb4 cn4)/w, (c#5 cb2 a3)/32',\n '(d##4 cbb4 cn4)/w/r, (c#5 cb2 a3)',\n '(c##4 cbb4 cn4)/4, (c#5 cb2 a3)',\n '(c##4 cbb4 cn4)/m, (c#5 cb2 a3)',\n ];\n const mustFail = ['(c)'];\n mustPass.forEach((line) => equal(score.parse(line).success, true, line));\n mustFail.forEach((line) => equal(score.parse(line).success, false, line));\n}\nfunction dots() {\n const score = new EasyScore();\n const mustPass = [\n 'c3/4.',\n 'c##3/w.., cb3',\n 'f##3/s, cb3/q...',\n 'c##3/q, cb3/32',\n '(c##3 cbb3 cn3)., cb3',\n '(c5).',\n '(c##4 cbb4 cn4)/w.., (c#5 cb2 a3)/32',\n ];\n const mustFail = ['.', 'c.#', 'c#4./4'];\n mustPass.forEach((line) => equal(score.parse(line).success, true, line));\n mustFail.forEach((line) => equal(score.parse(line).success, false, line));\n}\nfunction types() {\n const score = new EasyScore();\n const mustPass = ['c3/4/m.', 'c##3//r.., cb3', 'c##3/m.., cb3', 'c##3/r.., cb3', 'd##3/w/s, cb3/q...', 'Fb4'];\n const mustFail = ['c4/q/U', '(c##4, cbb4 cn4)/w.., (c#5 cb2 a3)/32', 'z#3'];\n mustPass.forEach((line) => equal(score.parse(line).success, true, line));\n mustFail.forEach((line) => equal(score.parse(line).success, false, line));\n}\nfunction options() {\n const score = new EasyScore();\n const mustPass = [\n 'c3/4.[foo=\"bar\"]',\n 'c##3/w.., cb3[id=\"blah\"]',\n 'c##3/q, cb3/32',\n '(c##3 cbb3 cn3).[blah=\"bod4o\"], cb3',\n '(c5)[fooooo=\"booo\"]',\n 'c#5[id=\"foobar\"]',\n ];\n const mustFail = ['.[', 'f##3/w[], cb3/q...'];\n mustPass.forEach((line) => equal(score.parse(line).success, true, line));\n mustFail.forEach((line) => equal(score.parse(line).success, false, line));\n}\nfunction drawBasicTest(options) {\n const f = VexFlowTests.makeFactory(options, 600, 350);\n const score = f.EasyScore();\n const system = f.System();\n const { voice, notes } = createShortcuts(score);\n system\n .addStave({\n voices: [\n voice(notes('(d4 e4 g4)/q, c4/q, c4/q/r, c4/q', { stem: 'down' })),\n voice(notes('c#5/h., c5/q', { stem: 'up' })),\n ],\n })\n .addClef('treble');\n system\n .addStave({\n voices: [voice(notes('c#3/q, cn3/q, bb3/q, d##3/q', { clef: 'bass' }))],\n })\n .addClef('bass');\n system.addConnector().setType(StaveConnector.type.BRACKET);\n f.draw();\n expect(0);\n}\nfunction drawDiffKeysig(options) {\n const f = VexFlowTests.makeFactory(options, 600, 350);\n const score = f.EasyScore();\n const system = f.System();\n const { voice, notes } = createShortcuts(score);\n system\n .addStave({\n voices: [\n voice(notes('(d4 e4 g4)/q, c4/q, c4/q/r, c4/q', { stem: 'down' })),\n voice(notes('c5/h., c5/q', { stem: 'up' })),\n ],\n })\n .addClef('treble')\n .addTimeSignature('4/4')\n .addKeySignature('D');\n system\n .addStave({\n voices: [voice(notes('c#3/q, cn3/q, bb3/q, d##3/q', { clef: 'bass' }))],\n })\n .addClef('bass')\n .addTimeSignature('4/4');\n system.addConnector().setType(StaveConnector.type.BRACKET);\n f.draw();\n expect(0);\n}\nfunction drawBasicMutedTest(options) {\n const f = VexFlowTests.makeFactory(options, 600, 350);\n const score = f.EasyScore();\n const system = f.System();\n const { voice, notes } = createShortcuts(score);\n system\n .addStave({\n voices: [\n voice(notes('(d4 e4 g4)/q/m, c4/q/m, c4/q/r, c4/q/m', { stem: 'down' })),\n voice(notes('c#5/h/m., c5/q/m', { stem: 'up' })),\n ],\n })\n .addClef('treble');\n system\n .addStave({\n voices: [voice(notes('c#3/q/m, cn3/q/m, bb3/q/m, d##3/q/m', { clef: 'bass' }))],\n })\n .addClef('bass');\n system.addConnector().setType(StaveConnector.type.BRACKET);\n f.draw();\n expect(0);\n}\nfunction drawBasicHarmonicTest(options) {\n const f = VexFlowTests.makeFactory(options, 600, 350);\n const score = f.EasyScore();\n const system = f.System();\n const { voice, notes } = createShortcuts(score);\n system\n .addStave({\n voices: [\n voice(notes('(d4 e4 g4)/q/h, c4/q/h, c4/q/r, c4/q/h', { stem: 'down' })),\n voice(notes('c#5/h/h., c5/q/h', { stem: 'up' })),\n ],\n })\n .addClef('treble');\n system\n .addStave({\n voices: [voice(notes('c#3/q/h, cn3/q/h, bb3/q/h, d##3/q/h', { clef: 'bass' }))],\n })\n .addClef('bass');\n system.addConnector().setType(StaveConnector.type.BRACKET);\n f.draw();\n expect(0);\n}\nfunction drawBasicSlashTest(options) {\n const f = VexFlowTests.makeFactory(options, 600, 350);\n const score = f.EasyScore();\n const system = f.System();\n const { voice, notes } = createShortcuts(score);\n system\n .addStave({\n voices: [\n voice(notes('(d4 e4 g4)/q/s, c4/q/s, c4/q/r, c4/q/s', { stem: 'down' })),\n voice(notes('c#5/h/s., c5/q/s', { stem: 'up' })),\n ],\n })\n .addClef('treble');\n system\n .addStave({\n voices: [voice(notes('c#3/q/s, cn3/q/s, bb3/q/s, d##3/q/s', { clef: 'bass' }))],\n })\n .addClef('bass');\n system.addConnector().setType(StaveConnector.type.BRACKET);\n f.draw();\n expect(0);\n}\nfunction drawGhostBasicTest(options) {\n const f = VexFlowTests.makeFactory(options, 550);\n const score = f.EasyScore();\n const system = f.System();\n system.addStave({\n voices: [\n score.voice([\n ...score.notes('f#5/4, f5, db5, c5', { stem: 'up' }),\n ...score.beam(score.notes('c5/8, d5, fn5, e5', { stem: 'up' })),\n ...score.beam(score.notes('d5, c5', { stem: 'up' })),\n ], { time: '7/4' }),\n score.voice(score.notes('c4/h/g, f4/4, c4/4/g, e4/4, c4/8/g, d##4/8, c4/8, c4/8', { stem: 'down' }), {\n time: '7/4',\n }),\n ],\n });\n f.draw();\n expect(0);\n}\nfunction drawGhostDottedTest(options) {\n const f = VexFlowTests.makeFactory(options, 550);\n const score = f.EasyScore();\n const system = f.System();\n system.addStave({\n voices: [\n score.voice([\n ...score.notes('c4/4/g., fbb5/8, d5/4', { stem: 'up' }),\n ...score.beam(score.notes('c5/8, c#5/16, d5/16', { stem: 'up' })),\n ...score.notes('c4/2/g.., fn5/8', { stem: 'up' }),\n ], { time: '8/4' }),\n score.voice([\n ...score.notes('f#4/4', { stem: 'down' }),\n ...score.beam(score.notes('e4/8, d4/8', { stem: 'down' })),\n ...score.notes('c4/4/g.., cb4/16, c#4/h, d4/4', { stem: 'down' }),\n ...score.beam(score.notes('fn4/8, e4/8', { stem: 'down' })),\n ], { time: '8/4' }),\n ],\n });\n f.draw();\n expect(0);\n}\nfunction drawParenthesisedTest(options) {\n const f = VexFlowTests.makeFactory(options, 600, 350);\n const score = f.EasyScore();\n const system = f.System();\n const { voice, notes } = createShortcuts(score);\n const notes1 = notes('(d4 e4 g4)/q, c4/q, c4/q/r, c4/q', { stem: 'down' });\n Parenthesis.buildAndAttach([notes1[0], notes1[3]]);\n const notes2 = notes('c#5/h., c5/q', { stem: 'down' });\n Parenthesis.buildAndAttach([notes2[0], notes2[1]]);\n system\n .addStave({\n voices: [voice(notes1), voice(notes2)],\n })\n .addClef('treble');\n const notes3 = notes('c#3/q, cn3/q, bb3/q, d##3/q', { stem: 'down' });\n Parenthesis.buildAndAttach(notes3);\n system\n .addStave({\n voices: [voice(notes3)],\n })\n .addClef('bass');\n system.addConnector().setType(StaveConnector.type.BRACKET);\n f.draw();\n expect(0);\n}\nfunction drawAccidentalsTest(options) {\n const f = VexFlowTests.makeFactory(options, 600, 350);\n const score = f.EasyScore();\n const system = f.System();\n const { voice, notes } = createShortcuts(score);\n system\n .addStave({\n voices: [\n voice(notes('(cbbs4 ebb4 gbss4)/q, cbs4/q, cdb4/q/r, cd4/q', { stem: 'down' })),\n voice(notes('c++-5/h., c++5/q', { stem: 'up' })),\n ],\n })\n .addClef('treble');\n system\n .addStave({\n voices: [voice(notes('c+-3/q, c+3/q, bb3/q, d##3/q', { clef: 'bass' }))],\n })\n .addClef('bass');\n system.addConnector().setType(StaveConnector.type.BRACKET);\n f.draw();\n expect(0);\n}\nfunction drawBeamsTest(options) {\n const f = VexFlowTests.makeFactory(options, 600, 250);\n const score = f.EasyScore();\n const system = f.System();\n const { voice, notes, beam } = createShortcuts(score);\n system\n .addStave({\n voices: [\n voice(notes('(c4 e4 g4)/q, c4/q, c4/q/r, c4/q', { stem: 'down' })),\n voice([...notes('c#5/h.', { stem: 'up' }), ...beam(notes('c5/8, c5/8', { stem: 'up' }))]),\n ],\n })\n .addClef('treble');\n f.draw();\n expect(0);\n}\nfunction drawTupletsTest(options) {\n const f = VexFlowTests.makeFactory(options, 600, 250);\n const score = f.EasyScore();\n const system = f.System();\n const { voice, notes, tuplet, beam } = createShortcuts(score);\n // Voice 1, with stems pointed down.\n const v1_tuplet = tuplet(notes('(c4 e4 g4)/q, cbb4/q, c4/q', { stem: 'down' }), {\n location: Tuplet.LOCATION_BOTTOM,\n });\n const v1_halfNote = notes('c4/h', { stem: 'down' });\n const v1 = voice([...v1_tuplet, ...v1_halfNote]);\n // Voice 2, with stems pointed up.\n const v2_halfNote = notes('c#5/h.', { stem: 'up' });\n const v2_tuplet = tuplet(beam(notes('cb5/8, cn5/8, c5/8', { stem: 'up' })));\n const v2 = voice([...v2_halfNote, ...v2_tuplet]);\n system.addStave({ voices: [v1, v2] }).addClef('treble');\n f.draw();\n expect(0);\n}\nfunction drawDotsTest(options) {\n const f = VexFlowTests.makeFactory(options, 600, 250);\n const score = f.EasyScore();\n const system = f.System();\n const { voice, notes } = createShortcuts(score);\n system\n .addStave({\n voices: [voice(notes('(c4 e4 g4)/8., (c4 e4 g4)/8.., (c4 e4 g4)/8..., (c4 e4 g4)/8...., (c4 e4 g4)/16...'))],\n })\n .addClef('treble');\n f.draw();\n expect(0);\n}\nfunction drawOptionsTest(options) {\n const f = VexFlowTests.makeFactory(options, 500, 200);\n const score = f.EasyScore();\n const system = f.System();\n const notes = score.notes('B4/h[id=\"foobar\", class=\"red,bold\", stem=\"up\", articulations=\"staccato.below,tenuto\"], B4/q[articulations=\"accent.above\"], B4/q[stem=\"down\"]');\n system.addStave({ voices: [score.voice(notes)] });\n f.draw();\n const note0 = notes[0];\n const note1 = notes[1];\n const note0_modifier0 = note0.getModifiers()[0];\n const note0_modifier1 = note0.getModifiers()[1];\n const note1_modifier0 = note1.getModifiers()[0];\n equal(note0.getAttribute('id'), 'foobar');\n ok(note0.hasClass('red'));\n ok(note0.hasClass('bold'));\n equal(note0_modifier0.getCategory(), Articulation.CATEGORY);\n equal(note0_modifier0.type, 'a.');\n equal(note0_modifier0.getPosition(), Modifier.Position.BELOW);\n equal(note0_modifier1.getCategory(), Articulation.CATEGORY);\n equal(note0_modifier1.type, 'a-');\n equal(note0_modifier1.getPosition(), Modifier.Position.ABOVE);\n equal(note0.getStemDirection(), Stem.UP);\n equal(note1_modifier0.getCategory(), Articulation.CATEGORY);\n equal(note1_modifier0.type, 'a>');\n equal(note1_modifier0.getPosition(), Modifier.Position.ABOVE);\n equal(notes[2].getStemDirection(), Stem.DOWN);\n}\nfunction drawFingeringsTest(options) {\n const f = VexFlowTests.makeFactory(options, 500, 200);\n const score = f.EasyScore();\n const system = f.System();\n const notes = score.notes('C4/q[fingerings=\"1\"], E4[fingerings=\"3.above\"], G4[fingerings=\"5.below\"], (C4 E4 G4)[fingerings=\"1,3,5\"]');\n system.addStave({ voices: [score.voice(notes)] });\n f.draw();\n const note0_modifier0 = notes[0].getModifiers()[0];\n equal(note0_modifier0.getCategory(), FretHandFinger.CATEGORY);\n equal(note0_modifier0.getFretHandFinger(), '1');\n equal(note0_modifier0.getPosition(), Modifier.Position.LEFT);\n const note1_modifier0 = notes[1].getModifiers()[0];\n equal(note1_modifier0.getCategory(), FretHandFinger.CATEGORY);\n equal(note1_modifier0.getFretHandFinger(), '3');\n equal(note1_modifier0.getPosition(), Modifier.Position.ABOVE);\n const note2_modifier0 = notes[2].getModifiers()[0];\n equal(note2_modifier0.getCategory(), FretHandFinger.CATEGORY);\n equal(note2_modifier0.getFretHandFinger(), '5');\n equal(note2_modifier0.getPosition(), Modifier.Position.BELOW);\n const note3_modifiers = notes[3].getModifiers();\n const note3_modifier0 = note3_modifiers[0];\n const note3_modifier1 = note3_modifiers[1];\n const note3_modifier2 = note3_modifiers[2];\n equal(note3_modifier0.getCategory(), FretHandFinger.CATEGORY);\n equal(note3_modifier0.getFretHandFinger(), '1');\n equal(note3_modifier0.getPosition(), Modifier.Position.LEFT);\n equal(note3_modifier1.getCategory(), FretHandFinger.CATEGORY);\n equal(note3_modifier1.getFretHandFinger(), '3');\n equal(note3_modifier1.getPosition(), Modifier.Position.LEFT);\n equal(note3_modifier2.getCategory(), FretHandFinger.CATEGORY);\n equal(note3_modifier2.getFretHandFinger(), '5');\n equal(note3_modifier2.getPosition(), Modifier.Position.LEFT);\n}\nfunction keys(options) {\n const f = VexFlowTests.makeFactory(options, 700, 200);\n const score = f.EasyScore();\n const system = f.System();\n const notes = score.notes('c#3/q, c##3, cb3, cbb3, cn3, c3, cbbs3, cbss3, cbs3, cdb3, cd3, c++-3, c++3, c+-3, c+3, co3, ck3', { clef: 'bass' });\n system.addStave({ voices: [f.Voice().setStrict(false).addTickables(notes)] }).addClef('bass');\n f.draw();\n equal(notes[0].keys, 'c#/3');\n equal(notes[1].keys, 'c##/3');\n equal(notes[2].keys, 'cb/3');\n equal(notes[3].keys, 'cbb/3');\n equal(notes[4].keys, 'cn/3');\n for (let i = 5; i < notes.length; i++) {\n equal(notes[i].keys, 'c/3');\n }\n}\nVexFlowTests.register(EasyScoreTests);\nexport { EasyScoreTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Factory Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Factory } from '../src/factory';\nimport { Barline } from '../src/stavebarline';\nconst FactoryTests = {\n Start() {\n QUnit.module('Factory');\n test('Defaults', defaults);\n const run = VexFlowTests.runTests;\n run('Draw', draw);\n run('Draw Tab (repeat barlines must be aligned)', drawTab);\n },\n};\nfunction defaults() {\n // Throws RuntimeError: 'HTML DOM element not set in Factory'\n throws(() => new Factory({ renderer: { elementId: '', width: 700, height: 500 } }), 'Empty string for elementId throws an exception.');\n const factory = new Factory({\n renderer: { elementId: null, width: 700, height: 500 },\n });\n // eslint-disable-next-line\n // @ts-ignore access a protected member for testing purposes.\n const options = factory.options;\n equal(options.renderer.width, 700);\n equal(options.renderer.height, 500);\n equal(options.renderer.elementId, null);\n equal(options.stave.space, 10);\n}\nfunction draw(options) {\n const f = Factory.newFromElementId(options.elementId);\n f.Stave().setClef('treble');\n f.draw();\n expect(0);\n}\nfunction drawTab(options) {\n const factory = VexFlowTests.makeFactory(options, 500, 400);\n const system = factory.System({ width: 500 });\n const stave = factory.Stave().setClef('treble').setKeySignature('C#').setBegBarType(Barline.type.REPEAT_BEGIN);\n const voices = [factory.Voice().addTickables([factory.GhostNote({ duration: 'w' })])];\n system.addStave({ stave, voices });\n const tabStave = factory.TabStave().setClef('tab').setBegBarType(Barline.type.REPEAT_BEGIN);\n const tabVoices = [factory.Voice().addTickables([factory.GhostNote({ duration: 'w' })])];\n system.addStave({ stave: tabStave, voices: tabVoices });\n factory.draw();\n equal(stave.getModifiers()[0].getX(), tabStave.getModifiers()[0].getX());\n expect(1);\n}\nVexFlowTests.register(FactoryTests);\nexport { FactoryTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Font Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Accidental } from '../src/accidental';\nimport { Bend } from '../src/bend';\nimport { CanvasContext } from '../src/canvascontext';\nimport { Element } from '../src/element';\nimport { Flow } from '../src/flow';\nimport { Font, FontStyle, FontWeight } from '../src/font';\nimport { PedalMarking } from '../src/pedalmarking';\nimport { StaveNote } from '../src/stavenote';\nimport { TextBracket } from '../src/textbracket';\nimport { TextNote } from '../src/textnote';\nimport { Voice } from '../src/voice';\nconst FontTests = {\n Start() {\n QUnit.module('Font');\n test('setFont', setFont);\n test('Parsing', fontParsing);\n test('Sizes', fontSizes);\n const run = VexFlowTests.runTests;\n run('Set Text Font to Georgia', setTextFontToGeorgia);\n run('Set Music Font to Petaluma', setMusicFontToPetaluma);\n },\n};\n/**\n * Test out the setFont method in various classes.\n */\nfunction setFont() {\n // Create a CanvasCntext and call setFont on it.\n const canvas = document.createElement('canvas');\n canvas.width = 800;\n canvas.height = 400;\n // Set the font and get the font to verify that it matches.\n // NOTE: Safari has a bug where it does not return the font-weight!\n // https://github.com/0xfe/vexflow/issues/1240#issuecomment-986504088\n const ctx = new CanvasContext(canvas.getContext('2d'));\n ctx.setFont('PetalumaScript', '100px', 'normal', 'italic');\n equal(ctx.font, 'italic 100px PetalumaScript');\n const voice = new Voice();\n // Many elements do not override the default Element.TEXT_FONT.\n propEqual(voice.fontInfo, Element.TEXT_FONT);\n voice.setFont('bold 32pt Arial');\n const fontInfo = voice.fontInfo;\n equal(fontInfo === null || fontInfo === void 0 ? void 0 : fontInfo.size, '32pt');\n const flat = new Accidental('b');\n // eslint-disable-next-line\n // @ts-ignore access a protected member for testing purposes.\n equal(flat.textFont, undefined); // The internal instance variable .textFont is undefined by default.\n // Add italic to the default font as defined in Element.TEXT_FONT (since Accidental does not override TEXT_FONT).\n flat.setFont(undefined, undefined, undefined, FontStyle.ITALIC);\n equal(flat.getFont(), 'italic 10pt Arial, sans-serif');\n // Anything that is not set will be reset to the defaults.\n flat.setFont(undefined, undefined, FontWeight.BOLD, undefined);\n equal(flat.getFont(), 'bold 10pt Arial, sans-serif');\n flat.setFont(undefined, undefined, FontWeight.BOLD, FontStyle.ITALIC);\n equal(flat.getFont(), 'italic bold 10pt Arial, sans-serif');\n flat.setFont(undefined, undefined, FontWeight.BOLD, 'oblique');\n equal(flat.getFont(), 'oblique bold 10pt Arial, sans-serif');\n // '' is equivalent to 'normal'. Neither will be included in the CSS font string.\n flat.setFont(undefined, undefined, 'normal', '');\n equal(flat.getFont(), '10pt Arial, sans-serif');\n}\nfunction fontParsing() {\n const b = new Bend('1/2', true);\n const bFont = b.fontInfo;\n // Check the default font.\n equal(bFont === null || bFont === void 0 ? void 0 : bFont.family, Font.SANS_SERIF);\n equal(bFont === null || bFont === void 0 ? void 0 : bFont.size, Font.SIZE);\n equal(bFont === null || bFont === void 0 ? void 0 : bFont.weight, FontWeight.NORMAL);\n equal(bFont === null || bFont === void 0 ? void 0 : bFont.style, FontStyle.NORMAL);\n const f1 = 'Roboto Slab, serif';\n const t = new TextNote({ duration: '4', font: { family: f1 } });\n equal(f1, t.fontInfo.family);\n const n1 = new StaveNote({ keys: ['e/5'], duration: '4' });\n const n2 = new StaveNote({ keys: ['c/5'], duration: '4' });\n const tb = new TextBracket({ start: n1, stop: n2 });\n const f2 = tb.fontInfo;\n equal(f2 === null || f2 === void 0 ? void 0 : f2.size, 15);\n equal(f2 === null || f2 === void 0 ? void 0 : f2.style, FontStyle.ITALIC);\n // The line-height /3 is currently ignored.\n const f3 = Font.fromCSSString(`bold 1.5em/3 \"Lucida Sans Typewriter\", \"Lucida Console\", Consolas, monospace`);\n const f3SizeInPx = Font.convertSizeToPixelValue(f3.size);\n equal(f3SizeInPx, 24);\n}\nfunction fontSizes() {\n {\n const size = '17px';\n const sizeInEm = Font.convertSizeToPixelValue(size) / Font.scaleToPxFrom.em;\n equal(sizeInEm, 1.0625);\n }\n {\n const size = '2em';\n const sizeInPx = Font.convertSizeToPixelValue(size);\n equal(sizeInPx, 32);\n }\n {\n const pedal = new PedalMarking([]);\n equal(pedal.getFont(), 'italic bold 12pt Times New Roman, serif');\n equal(pedal.fontSizeInPoints, 12);\n equal(pedal.fontSizeInPixels, 16);\n const doubledSizePx = pedal.fontSizeInPixels * 2; // Double the font size.\n equal(doubledSizePx, 32);\n const doubledSizePt = Font.scaleSize(pedal.fontSizeInPoints, 2); // Double the font size.\n equal(doubledSizePt, 24);\n equal(Font.scaleSize('1.5em', 3), '4.5em');\n }\n}\nfunction setTextFontToGeorgia(options) {\n const factory = VexFlowTests.makeFactory(options, 400, 200);\n const stave = factory.Stave({ y: 40 });\n const score = factory.EasyScore();\n const voice1 = score.voice([\n factory.StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: -1, duration: 'h' }),\n factory.StaveNote({ keys: ['d/4', 'f/4'], stem_direction: -1, duration: 'q' }),\n factory.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: 'q' }),\n ]);\n const defaultFont = TextNote.TEXT_FONT;\n // Set the default before we instantiate TextNote objects with the factory.\n TextNote.TEXT_FONT = {\n family: 'Georgia, Courier New, serif',\n size: 14,\n weight: 'bold',\n style: 'italic',\n };\n const voice2 = score.voice([\n factory\n .TextNote({ text: 'Here are some fun lyrics...', duration: 'w' })\n .setJustification(TextNote.Justification.LEFT),\n ]);\n const formatter = factory.Formatter();\n formatter.joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave);\n factory.draw();\n // Restore the previous default, or else it will affect the rest of the tests.\n TextNote.TEXT_FONT = defaultFont;\n ok(true);\n}\nfunction setMusicFontToPetaluma(options) {\n Flow.setMusicFont('Petaluma');\n const factory = VexFlowTests.makeFactory(options, 400, 200);\n const stave = factory.Stave({ y: 40 });\n const score = factory.EasyScore();\n const voice = score.voice([\n factory.StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: -1, duration: 'h' }),\n factory.StaveNote({ keys: ['d/4', 'f/4'], stem_direction: -1, duration: 'q' }),\n factory.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: 'q' }),\n ]);\n const formatter = factory.Formatter();\n formatter.joinVoices([voice]).formatToStave([voice], stave);\n factory.draw();\n ok(true);\n}\nVexFlowTests.register(FontTests);\nexport { FontTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Formatter Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Accidental } from '../src/accidental';\nimport { Annotation, AnnotationVerticalJustify } from '../src/annotation';\nimport { Articulation } from '../src/articulation';\nimport { Beam } from '../src/beam';\nimport { Bend } from '../src/bend';\nimport { Dot } from '../src/dot';\nimport { Flow } from '../src/flow';\nimport { Font, FontWeight } from '../src/font';\nimport { Formatter } from '../src/formatter';\nimport { FretHandFinger } from '../src/frethandfinger';\nimport { ModifierPosition } from '../src/modifier';\nimport { Note } from '../src/note';\nimport { Registry } from '../src/registry';\nimport { Stave } from '../src/stave';\nimport { StaveConnector } from '../src/staveconnector';\nimport { StaveNote } from '../src/stavenote';\nimport { Stem } from '../src/stem';\nimport { StringNumber } from '../src/stringnumber';\nimport { Tables } from '../src/tables';\nimport { Tuplet } from '../src/tuplet';\nimport { Voice } from '../src/voice';\nimport { MockTickable } from './mocks';\nconst FormatterTests = {\n Start() {\n QUnit.module('Formatter');\n test('TickContext Building', buildTickContexts);\n const run = VexFlowTests.runTests;\n run('Penultimate Note Padding', penultimateNote);\n run('Whitespace and justify', rightJustify);\n run('Notehead padding', noteHeadPadding);\n run('Justification and alignment with accidentals', accidentalJustification);\n run('Long measure taking full space', longMeasureProblems);\n run('Vertical alignment - few unaligned beats', unalignedNoteDurations1);\n run('Vertical alignment - many unaligned beats', unalignedNoteDurations2, { globalSoftmax: false });\n run('Vertical alignment - many unaligned beats (global softmax)', unalignedNoteDurations2, { globalSoftmax: true });\n run('Vertical alignment - many mixed elements', alignedMixedElements, { globalSoftmax: true });\n run('StaveNote - Justification', justifyStaveNotes);\n run('Notes with Tab', notesWithTab);\n run('Multiple Staves - Justified', multiStaves, { debug: true });\n run('Softmax', softMax);\n run('Mixtime', mixTime);\n run('Tight', tightNotes1);\n run('Tight 2', tightNotes2);\n run('Annotations', annotations);\n run('Proportional Formatting - No Tuning', proportional, { debug: true, iterations: 0 });\n run('Proportional Formatting - No Justification', proportional, { justify: false, debug: true, iterations: 0 });\n run('Proportional Formatting (20 iterations)', proportional, { debug: true, iterations: 20, alpha: 0.5 });\n },\n};\n/** Calculate the glyph's width in the current music font. */\n// How is this different from Glyph.getWidth()? The numbers don't match up.\nfunction getGlyphWidth(glyphName) {\n // `38` seems to be the `font_scale` specified in many classes, such as\n // Accidental, Articulation, Ornament, Strokes. Does this mean `38pt`???\n //\n // However, tables.ts specifies:\n // NOTATION_FONT_SCALE: 39,\n // TABLATURE_FONT_SCALE: 39,\n const musicFont = Tables.currentMusicFont();\n const glyph = musicFont.getGlyphs()[glyphName];\n const widthInEm = (glyph.x_max - glyph.x_min) / musicFont.getResolution();\n return widthInEm * 38 * Font.scaleToPxFrom.pt;\n}\nfunction buildTickContexts() {\n function createTickable(beat) {\n return new MockTickable().setTicks(beat);\n }\n const BEAT = (1 * Flow.RESOLUTION) / 4;\n const tickables1 = [\n createTickable(BEAT).setWidth(10),\n createTickable(BEAT * 2).setWidth(20),\n createTickable(BEAT).setWidth(30),\n ];\n const tickables2 = [\n createTickable(BEAT * 2).setWidth(10),\n createTickable(BEAT).setWidth(20),\n createTickable(BEAT).setWidth(30),\n ];\n const voice1 = new Voice(Flow.TIME4_4);\n const voice2 = new Voice(Flow.TIME4_4);\n voice1.addTickables(tickables1);\n voice2.addTickables(tickables2);\n const formatter = new Formatter();\n const tContexts = formatter.createTickContexts([voice1, voice2]);\n equal(tContexts.list.length, 4, 'Voices should have four tick contexts');\n throws(() => formatter.getMinTotalWidth(), /NoMinTotalWidth/, 'Expected to throw exception');\n ok(formatter.preCalculateMinTotalWidth([voice1, voice2]), 'Successfully runs preCalculateMinTotalWidth');\n equal(formatter.getMinTotalWidth(), 88, 'Get minimum total width without passing voices');\n formatter.preFormat();\n equal(formatter.getMinTotalWidth(), 88, 'Minimum total width');\n equal(tickables1[0].getX(), tickables2[0].getX(), 'First notes of both voices have the same X');\n equal(tickables1[2].getX(), tickables2[2].getX(), 'Last notes of both voices have the same X');\n ok(tickables1[1].getX() < tickables2[1].getX(), 'Second note of voice 2 is to the right of the second note of voice 1');\n}\nfunction rightJustify(options) {\n const f = VexFlowTests.makeFactory(options, 1200, 150);\n const getTickables = (time, n, duration, duration2) => {\n const tickar = [];\n let i = 0;\n for (i = 0; i < n; ++i) {\n const dd = i === n - 1 ? duration2 : duration;\n tickar.push(new StaveNote({ keys: ['f/4'], duration: dd }));\n }\n return new Voice(time).addTickables(tickar);\n };\n const renderTest = (time, n, duration, duration2, x, width) => {\n const formatter = f.Formatter();\n const stave = f.Stave({ x, y: 20, width });\n // stave.addClef('treble').addTimeSignature('4/4');\n const voice = getTickables(time, n, duration, duration2);\n formatter.joinVoices([voice]).formatToStave([voice], stave);\n stave.draw();\n voice.draw(f.getContext(), stave);\n };\n renderTest({ num_beats: 4, beat_value: 4, resolution: 4 * 4096 }, 3, '4', '2', 10, 300);\n renderTest({ num_beats: 4, beat_value: 4, resolution: 4 * 4096 }, 1, 'w', 'w', 310, 300);\n renderTest({ num_beats: 3, beat_value: 4, resolution: 4 * 4096 }, 3, '4', '4', 610, 300);\n renderTest({ num_beats: 3, beat_value: 4, resolution: 4 * 4096 }, 6, '8', '8', 910, 300);\n ok(true);\n}\nfunction penultimateNote(options) {\n const f = VexFlowTests.makeFactory(options, 500, 550);\n const score = f.EasyScore();\n const staffWidth = 310;\n let system = undefined;\n let voices = [];\n let notes = [];\n let note = undefined;\n let stave = undefined;\n let y = 10;\n const draw = (softmax) => {\n system = f.System({\n width: staffWidth,\n y,\n formatOptions: { align_rests: true },\n details: { softmaxFactor: softmax },\n });\n notes = [];\n voices = [];\n note = score.notes('C4/8/r', { clef: 'bass' })[0];\n notes.push(note);\n note = score.notes('A3/8', { stem: 'up', clef: 'bass' })[0];\n notes.push(note);\n note = score.notes('C4/4', { stem: 'up', clef: 'bass' })[0];\n notes.push(note);\n voices.push(score.voice(notes).setMode(2));\n notes = [];\n note = score.notes('( F3 A3 )/4', { stem: 'down', clef: 'bass' })[0];\n notes.push(note);\n note = score.notes('B4/4/r', {})[0];\n notes.push(note);\n voices.push(score.voice(notes).setMode(2));\n notes = [];\n stave = system.addStave({ voices: voices });\n stave.addClef('bass');\n stave.addTimeSignature('2/4');\n voices = [];\n f.draw();\n f.getContext().fillText(`softmax: ${softmax.toString()}`, staffWidth + 20, y + 50);\n y += 100;\n };\n draw(100);\n draw(10);\n draw(5);\n draw(2);\n draw(1.5);\n ok(true);\n}\nfunction noteHeadPadding(options) {\n const registry = new Registry();\n Registry.enableDefaultRegistry(registry);\n const f = VexFlowTests.makeFactory(options, 600, 300);\n const score = f.EasyScore();\n score.set({ time: '9/8' });\n const notes1 = score.notes('(d5 f5)/8,(c5 e5)/8,(d5 f5)/8,(c5 e5)/2.');\n const beams = [new Beam(notes1.slice(0, 3), true)];\n const voice1 = new Voice().setMode(Voice.Mode.SOFT);\n const notes2 = score.notes('(g4 an4)/2.,(g4 a4)/4.', { clef: 'treble' });\n const voice2 = new Voice().setMode(Voice.Mode.SOFT);\n voice2.addTickables(notes2);\n voice1.addTickables(notes1);\n const formatter = f.Formatter().joinVoices([voice1]).joinVoices([voice2]);\n const width = formatter.preCalculateMinTotalWidth([voice1, voice2]);\n formatter.format([voice1, voice2], width);\n const staveWidth = width + Stave.defaultPadding;\n const stave1 = f.Stave({ y: 50, width: staveWidth });\n const stave2 = f.Stave({ y: 150, width: staveWidth });\n stave1.draw();\n stave2.draw();\n voice1.draw(f.getContext(), stave1);\n voice2.draw(f.getContext(), stave2);\n beams.forEach((b) => b.setContext(f.getContext()).draw());\n ok(true);\n}\nfunction longMeasureProblems(options) {\n const registry = new Registry();\n Registry.enableDefaultRegistry(registry);\n const f = VexFlowTests.makeFactory(options, 1500, 300);\n const score = f.EasyScore();\n score.set({ time: '4/4' });\n const notes1 = score.notes('b4/4,b4/8,b4/8,b4/4,b4/4,b4/2,b4/2,b4/4,b4/8,b4/8,b4/4,b4/4,b4/2,b4/2,b4/4,b4/8,b4/8,b4/4,b4/4,b4/2,b4/2,b4/4,b4/2,b4/8,b4/8');\n const voice1 = new Voice().setMode(Voice.Mode.SOFT);\n const notes2 = score.notes('d3/4,(ab3 f4)/2,d3/4,ab3/4,d3/2,ab3/4,d3/4,ab3/2,d3/4,ab3/4,d3/2,ab3/4,d3/4,ab3/2,d3/4,ab3/4,d3/2,ab3/4,d4/4,d4/2,d4/4', { clef: 'bass' });\n const voice2 = new Voice().setMode(Voice.Mode.SOFT);\n voice2.addTickables(notes2);\n voice1.addTickables(notes1);\n const formatter = f.Formatter().joinVoices([voice1]).joinVoices([voice2]);\n const width = formatter.preCalculateMinTotalWidth([voice1, voice2]);\n formatter.format([voice1, voice2], width);\n const stave1 = f.Stave({ y: 50, width: width + Stave.defaultPadding });\n const stave2 = f.Stave({ y: 200, width: width + Stave.defaultPadding });\n stave1.draw();\n stave2.draw();\n voice1.draw(f.getContext(), stave1);\n voice2.draw(f.getContext(), stave2);\n ok(true);\n}\nfunction accidentalJustification(options) {\n const f = VexFlowTests.makeFactory(options, 600, 300);\n const score = f.EasyScore();\n const notes11 = score.notes('a4/2, a4/4, a4/8, ab4/16, an4/16');\n const voice11 = score.voice(notes11, { time: '4/4' });\n const notes21 = score.notes('c4/2, d4/8, d4/8, e4/8, e4/8');\n const voice21 = score.voice(notes21, { time: '4/4' });\n let beams = Beam.generateBeams(notes11.slice(2));\n beams = beams.concat(beams, Beam.generateBeams(notes21.slice(1, 3)));\n beams = beams.concat(Beam.generateBeams(notes21.slice(3)));\n const formatter = f.Formatter({ softmaxFactor: 100 }).joinVoices([voice11]).joinVoices([voice21]);\n const width = formatter.preCalculateMinTotalWidth([voice11, voice21]);\n const stave11 = f.Stave({ y: 20, width: width + Stave.defaultPadding });\n const stave21 = f.Stave({ y: 130, width: width + Stave.defaultPadding });\n formatter.format([voice11, voice21], width);\n const ctx = f.getContext();\n stave11.setContext(ctx).draw();\n stave21.setContext(ctx).draw();\n voice11.draw(ctx, stave11);\n voice21.draw(ctx, stave21);\n beams.forEach((b) => b.setContext(ctx).draw());\n ok(true);\n}\nfunction unalignedNoteDurations1(options) {\n const f = VexFlowTests.makeFactory(options, 600, 250);\n const score = f.EasyScore();\n const notes11 = [\n new StaveNote({ keys: ['a/4'], duration: '8' }),\n new StaveNote({ keys: ['b/4'], duration: '4' }),\n new StaveNote({ keys: ['b/4'], duration: '8' }),\n ];\n const notes21 = [\n new StaveNote({ keys: ['a/4'], duration: '16' }),\n new StaveNote({ keys: ['b/4.'], duration: '4' }),\n new StaveNote({ keys: ['a/4'], duration: '8d' }),\n ];\n Dot.buildAndAttach([notes21[2]], { all: true });\n const ctx = f.getContext();\n const voice11 = score.voice(notes11, { time: '2/4' }).setMode(Voice.Mode.SOFT);\n const voice21 = score.voice(notes21, { time: '2/4' }).setMode(Voice.Mode.SOFT);\n const beams21 = Beam.generateBeams(notes21);\n const beams11 = Beam.generateBeams(notes11);\n const formatter = new Formatter();\n formatter.joinVoices([voice11]);\n formatter.joinVoices([voice21]);\n const width = formatter.preCalculateMinTotalWidth([voice11, voice21]);\n const stave11 = f.Stave({ y: 20, width: width + Stave.defaultPadding });\n const stave21 = f.Stave({ y: 130, width: width + Stave.defaultPadding });\n formatter.format([voice11, voice21], width);\n stave11.setContext(ctx).draw();\n stave21.setContext(ctx).draw();\n voice11.draw(ctx, stave11);\n voice21.draw(ctx, stave21);\n beams21.forEach((b) => b.setContext(ctx).draw());\n beams11.forEach((b) => b.setContext(ctx).draw());\n ok(voice11.getTickables()[1].getX() > voice21.getTickables()[1].getX());\n}\nfunction unalignedNoteDurations2(options) {\n const notes1 = [\n new StaveNote({ keys: ['b/4'], duration: '8r' }),\n new StaveNote({ keys: ['g/4'], duration: '16' }),\n new StaveNote({ keys: ['c/5'], duration: '16' }),\n new StaveNote({ keys: ['e/5'], duration: '16' }),\n new StaveNote({ keys: ['g/4'], duration: '16' }),\n new StaveNote({ keys: ['c/5'], duration: '16' }),\n new StaveNote({ keys: ['e/5'], duration: '16' }),\n new StaveNote({ keys: ['b/4'], duration: '8r' }),\n new StaveNote({ keys: ['g/4'], duration: '16' }),\n new StaveNote({ keys: ['c/5'], duration: '16' }),\n new StaveNote({ keys: ['e/5'], duration: '16' }),\n new StaveNote({ keys: ['g/4'], duration: '16' }),\n new StaveNote({ keys: ['c/5'], duration: '16' }),\n new StaveNote({ keys: ['e/5'], duration: '16' }),\n ];\n const notes2 = [\n new StaveNote({ keys: ['a/4'], duration: '16r' }),\n new StaveNote({ keys: ['e/4.'], duration: '8d' }),\n new StaveNote({ keys: ['e/4'], duration: '4' }),\n new StaveNote({ keys: ['a/4'], duration: '16r' }),\n new StaveNote({ keys: ['e/4.'], duration: '8d' }),\n new StaveNote({ keys: ['e/4'], duration: '4' }),\n ];\n const f = VexFlowTests.makeFactory(options, 750, 280);\n const context = f.getContext();\n const voice1 = new Voice({ num_beats: 4, beat_value: 4 });\n voice1.addTickables(notes1);\n const voice2 = new Voice({ num_beats: 4, beat_value: 4 });\n voice2.addTickables(notes2);\n const formatter = new Formatter({ softmaxFactor: 100, globalSoftmax: options.params.globalSoftmax });\n formatter.joinVoices([voice1]);\n formatter.joinVoices([voice2]);\n const width = formatter.preCalculateMinTotalWidth([voice1, voice2]);\n formatter.format([voice1, voice2], width);\n const stave1 = new Stave(10, 40, width + Stave.defaultPadding);\n const stave2 = new Stave(10, 100, width + Stave.defaultPadding);\n stave1.setContext(context).draw();\n stave2.setContext(context).draw();\n voice1.draw(context, stave1);\n voice2.draw(context, stave2);\n ok(voice1.getTickables()[1].getX() > voice2.getTickables()[1].getX());\n}\nfunction alignedMixedElements(options) {\n const f = VexFlowTests.makeFactory(options, 800, 500);\n const context = f.getContext();\n const stave = new Stave(10, 200, 400);\n const stave2 = new Stave(410, 200, 400);\n const notes = [\n new StaveNote({ keys: ['c/5'], duration: '8' })\n .addModifier(new Accidental('##'), 0)\n .addModifier(new FretHandFinger('4').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(new StringNumber('3').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(new Articulation('a.').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(new Articulation('a>').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(new Articulation('a^').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(new Articulation('am').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(new Articulation('a@u').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(new Annotation('yyyy').setVerticalJustification(AnnotationVerticalJustify.BOTTOM), 0)\n .addModifier(new Annotation('xxxx').setVerticalJustification(AnnotationVerticalJustify.BOTTOM).setFont('sans-serif', 20), 0)\n .addModifier(new Annotation('ttt').setVerticalJustification(AnnotationVerticalJustify.BOTTOM).setFont('sans-serif', 20), 0),\n new StaveNote({ keys: ['c/5'], duration: '8', stem_direction: Stem.DOWN })\n .addModifier(new StringNumber('3').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(new Articulation('a.').setPosition(ModifierPosition.BELOW), 0)\n .addModifier(new Articulation('a>').setPosition(ModifierPosition.BELOW), 0),\n new StaveNote({ keys: ['c/5'], duration: '8' }),\n ];\n const notes2 = [\n new StaveNote({ keys: ['c/5'], duration: '8' })\n .addModifier(new StringNumber('3').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Annotation('yyyy').setVerticalJustification(AnnotationVerticalJustify.TOP), 0),\n new StaveNote({ keys: ['c/5'], duration: '8', stem_direction: Stem.DOWN })\n .addModifier(new FretHandFinger('4').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new StringNumber('3').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Articulation('a>').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Articulation('a^').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Articulation('am').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Articulation('a@u').setPosition(ModifierPosition.ABOVE), 0)\n .addModifier(new Annotation('yyyy').setVerticalJustification(AnnotationVerticalJustify.TOP), 0)\n .addModifier(new Annotation('xxxx').setVerticalJustification(AnnotationVerticalJustify.TOP).setFont('sans-serif', 20), 0)\n .addModifier(new Annotation('ttt').setVerticalJustification(AnnotationVerticalJustify.TOP).setFont('sans-serif', 20), 0),\n new StaveNote({ keys: ['c/5'], duration: '8' }),\n ];\n const tuplet = new Tuplet(notes).setTupletLocation(-1);\n const tuplet2 = new Tuplet(notes2).setTupletLocation(1);\n Formatter.FormatAndDraw(context, stave, notes);\n Formatter.FormatAndDraw(context, stave2, notes2);\n stave.setContext(context).draw();\n stave2.setContext(context).draw();\n tuplet.setContext(context).draw();\n tuplet2.setContext(context).draw();\n ok(true);\n}\nfunction justifyStaveNotes(options) {\n const f = VexFlowTests.makeFactory(options, 520, 280);\n const ctx = f.getContext();\n const score = f.EasyScore();\n let y = 30;\n function justifyToWidth(width) {\n f.Stave({ y: y }).addClef('treble');\n const voices = [\n score.voice(score.notes('(cbb4 en4 a4)/2, (d4 e4 f4)/8, (d4 f4 a4)/8, (cn4 f#4 a4)/4', { stem: 'down' })),\n score.voice(score.notes('(bb4 e#5 a5)/4, (d5 e5 f5)/2, (c##5 fb5 a5)/4', { stem: 'up' })),\n ];\n f.Formatter()\n .joinVoices(voices)\n .format(voices, width - (Stave.defaultPadding + getGlyphWidth('gClef')));\n // Show the the width of notes via a horizontal line with red, green, yellow, blue, gray indicators.\n voices[0].getTickables().forEach((note) => Note.plotMetrics(ctx, note, y + 140)); // Bottom line.\n voices[1].getTickables().forEach((note) => Note.plotMetrics(ctx, note, y - 20)); // Top Line\n y += 210;\n }\n justifyToWidth(520);\n f.draw();\n ok(true);\n}\nfunction notesWithTab(options) {\n const f = VexFlowTests.makeFactory(options, 420, 580);\n const score = f.EasyScore();\n let y = 10;\n function justifyToWidth(width) {\n const stave = f.Stave({ y: y }).addClef('treble');\n const voice = score.voice(score.notes('d#4/2, (c4 d4)/8, d4/8, (c#4 e4 a4)/4', { stem: 'up' }));\n y += 100;\n f.TabStave({ y: y }).addTabGlyph().setNoteStartX(stave.getNoteStartX());\n const tabVoice = score.voice([\n f.TabNote({ positions: [{ str: 3, fret: 6 }], duration: '2' }).addModifier(new Bend('Full'), 0),\n f\n .TabNote({\n positions: [\n { str: 2, fret: 3 },\n { str: 3, fret: 5 },\n ],\n duration: '8',\n })\n .addModifier(new Bend('Unison'), 1),\n f.TabNote({ positions: [{ str: 3, fret: 7 }], duration: '8' }),\n f.TabNote({\n positions: [\n { str: 3, fret: 6 },\n { str: 4, fret: 7 },\n { str: 2, fret: 5 },\n ],\n duration: '4',\n }),\n ]);\n f.Formatter().joinVoices([voice]).joinVoices([tabVoice]).format([voice, tabVoice], width);\n y += 150;\n }\n justifyToWidth(0);\n justifyToWidth(300);\n f.draw();\n ok(true);\n}\nfunction multiStaves(options) {\n const f = VexFlowTests.makeFactory(options, 600, 400);\n const ctx = f.getContext();\n const score = f.EasyScore();\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // Draw 3 Staves (one measure each).\n const notes11 = score.notes('f4/4, d4/8, g4/4, eb4/8');\n const notes21 = score.notes('d4/8, d4, d4, d4, e4, eb4');\n const notes31 = score.notes('a5/8, a5, a5, a5, a5, a5', { stem: 'down' });\n let voices = [\n score.voice(notes11, { time: '6/8' }),\n score.voice(notes21, { time: '6/8' }),\n score.voice(notes31, { time: '6/8' }),\n ];\n let formatter = f.Formatter();\n voices.forEach((v) => formatter.joinVoices([v]));\n let width = formatter.preCalculateMinTotalWidth(voices);\n formatter.format(voices, width);\n let beams = [\n new Beam(notes21.slice(0, 3), true),\n new Beam(notes21.slice(3, 6), true),\n new Beam(notes31.slice(0, 3), true),\n new Beam(notes31.slice(3, 6), true),\n ];\n const staveYs = [20, 130, 250];\n let staveWidth = width + getGlyphWidth('gClef') + getGlyphWidth('timeSig8') + Stave.defaultPadding;\n let staves = [\n f.Stave({ y: staveYs[0], width: staveWidth }).addClef('treble').addTimeSignature('6/8'),\n f.Stave({ y: staveYs[1], width: staveWidth }).addClef('treble').addTimeSignature('6/8'),\n f.Stave({ y: staveYs[2], width: staveWidth }).addClef('bass').addTimeSignature('6/8'),\n ];\n f.StaveConnector({\n top_stave: staves[1],\n bottom_stave: staves[2],\n type: 'brace',\n });\n for (let i = 0; i < staves.length; ++i) {\n staves[i].setContext(ctx).draw();\n voices[i].draw(ctx, staves[i]);\n }\n beams.forEach((beam) => beam.setContext(ctx).draw());\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // Draw 3 more staves (one measure each).\n // These are adjacent to the first set of staves, representing the second measure of each stave.\n const notes12 = score.notes('ab4/4, bb4/8, (cb5 eb5)/4[stem=\"down\"], d5/8[stem=\"down\"]');\n const notes22 = score.notes('(eb4 ab4)/4., (c4 eb4 ab4)/4, db5/8', { stem: 'up' });\n const notes32 = score.notes('a5/8, a5, a5, a5, a5, a5', { stem: 'down' });\n voices = [\n score.voice(notes12, { time: '6/8' }),\n score.voice(notes22, { time: '6/8' }),\n score.voice(notes32, { time: '6/8' }),\n ];\n formatter = f.Formatter();\n voices.forEach((v) => formatter.joinVoices([v]));\n width = formatter.preCalculateMinTotalWidth(voices);\n const staveX = staves[0].getX() + staves[0].getWidth();\n staveWidth = width + Stave.defaultPadding;\n staves = [\n f.Stave({ x: staveX, y: staveYs[0], width: staveWidth }),\n f.Stave({ x: staveX, y: staveYs[1], width: staveWidth }),\n f.Stave({ x: staveX, y: staveYs[2], width: staveWidth }),\n ];\n formatter.format(voices, width);\n beams = [\n // Add beams to each group of 3 notes.\n new Beam(notes32.slice(0, 3), true),\n new Beam(notes32.slice(3, 6), true),\n ];\n for (let i = 0; i < staves.length; ++i) {\n staves[i].setContext(ctx).draw();\n voices[i].draw(ctx, staves[i]);\n voices[i].getTickables().forEach((note) => Note.plotMetrics(ctx, note, staveYs[i] - 20));\n }\n beams.forEach((beam) => beam.setContext(ctx).draw());\n ok(true);\n}\nfunction proportional(options) {\n const debug = options.params.debug;\n Registry.enableDefaultRegistry(new Registry());\n const f = VexFlowTests.makeFactory(options, 775, 750);\n const system = f.System({\n x: 50,\n autoWidth: true,\n debugFormatter: debug,\n noJustification: !(options.params.justify === undefined && true),\n formatIterations: options.params.iterations,\n details: { alpha: options.params.alpha },\n });\n const score = f.EasyScore();\n const voices = [\n score.notes('c5/8, c5'),\n score.tuplet(score.notes('a4/8, a4, a4'), { notes_occupied: 2 }),\n score.notes('c5/16, c5, c5, c5'),\n score.tuplet(score.notes('a4/16, a4, a4, a4, a4'), { notes_occupied: 4 }),\n score.tuplet(score.notes('a4/32, a4, a4, a4, a4, a4, a4'), { notes_occupied: 8 }),\n ];\n const createVoice = (notes) => score.voice(notes, { time: '1/4' });\n const createStave = (voice) => system\n .addStave({ voices: [voice], debugNoteMetrics: debug })\n .addClef('treble')\n .addTimeSignature('1/4');\n voices.map(createVoice).forEach(createStave);\n system.addConnector().setType(StaveConnector.type.BRACKET);\n f.draw();\n // Debugging: Show how many elements of each type we have added.\n // const typeMap = Registry.getDefaultRegistry().index.type;\n // const table = Object.keys(typeMap).map((typeName) => typeName + ': ' + Object.keys(typeMap[typeName]).length);\n // console.log(table);\n Registry.disableDefaultRegistry();\n ok(true);\n}\nfunction softMax(options) {\n const f = VexFlowTests.makeFactory(options, 550, 500);\n const textX = 450 / 0.8;\n f.getContext().scale(0.8, 0.8);\n function draw(y, factor) {\n const score = f.EasyScore();\n const system = f.System({\n x: 100,\n y,\n details: { softmaxFactor: factor },\n autoWidth: true,\n });\n system\n .addStave({\n voices: [\n score.voice(score\n .notes('C#5/h, a4/q')\n .concat(score.beam(score.notes('Abb4/8, A4/8')))\n .concat(score.beam(score.notes('A4/16, A#4, A4, Ab4/32, A4'))), { time: '5/4' }),\n ],\n })\n .addClef('treble')\n .addTimeSignature('5/4');\n f.draw();\n f.getContext().fillText(`softmax: ${factor.toString()}`, textX, y + 50);\n ok(true);\n }\n draw(50, 1);\n draw(150, 2);\n draw(250, 10);\n draw(350, 20);\n draw(450, 200);\n}\nfunction mixTime(options) {\n const f = VexFlowTests.makeFactory(options, 400 + Stave.defaultPadding, 250);\n f.getContext().scale(0.8, 0.8);\n const score = f.EasyScore();\n const system = f.System({\n details: { softmaxFactor: 100 },\n autoWidth: true,\n debugFormatter: true,\n });\n system\n .addStave({\n voices: [score.voice(score.notes('C#5/q, B4').concat(score.beam(score.notes('A4/8, E4, C4, D4'))))],\n })\n .addClef('treble')\n .addTimeSignature('4/4');\n system\n .addStave({\n voices: [score.voice(score.notes('C#5/q, B4, B4').concat(score.tuplet(score.beam(score.notes('A4/8, E4, C4')))))],\n })\n .addClef('treble')\n .addTimeSignature('4/4');\n f.draw();\n ok(true);\n}\nfunction tightNotes1(options) {\n const f = VexFlowTests.makeFactory(options, 440, 250);\n f.getContext().scale(0.8, 0.8);\n const score = f.EasyScore();\n const system = f.System({\n autoWidth: true,\n debugFormatter: true,\n details: { maxIterations: 10 },\n });\n system\n .addStave({\n voices: [\n score.voice(score.beam(score.notes('B4/16, B4, B4, B4, B4, B4, B4, B4')).concat(score.notes('B4/q, B4'))),\n ],\n })\n .addClef('treble')\n .addTimeSignature('4/4');\n system\n .addStave({\n voices: [\n score.voice(score.notes('B4/q, B4').concat(score.beam(score.notes('B4/16, B4, B4, B4, B4, B4, B4, B4')))),\n ],\n })\n .addClef('treble')\n .addTimeSignature('4/4');\n f.draw();\n ok(true);\n}\nfunction tightNotes2(options) {\n const f = VexFlowTests.makeFactory(options, 440, 250);\n f.getContext().scale(0.8, 0.8);\n const score = f.EasyScore();\n const system = f.System({\n autoWidth: true,\n debugFormatter: true,\n });\n system\n .addStave({\n voices: [\n score.voice(score.beam(score.notes('B4/16, B4, B4, B4, B4, B4, B4, B4')).concat(score.notes('B4/q, B4'))),\n ],\n })\n .addClef('treble')\n .addTimeSignature('4/4');\n system\n .addStave({\n voices: [score.voice(score.notes('B4/w'))],\n })\n .addClef('treble')\n .addTimeSignature('4/4');\n f.draw();\n ok(true);\n}\nfunction annotations(options) {\n const pageWidth = 916;\n const pageHeight = 600;\n const f = VexFlowTests.makeFactory(options, pageWidth, pageHeight);\n const context = f.getContext();\n const lyrics1 = ['ipso', 'ipso-', 'ipso', 'ipso', 'ipsoz', 'ipso-', 'ipso', 'ipso', 'ipso', 'ip', 'ipso'];\n const lyrics2 = ['ipso', 'ipso-', 'ipsoz', 'ipso', 'ipso', 'ipso-', 'ipso', 'ipso', 'ipso', 'ip', 'ipso'];\n const smar = [\n {\n sm: 5,\n width: 550,\n lyrics: lyrics1,\n title: '550px,softMax:5',\n },\n {\n sm: 10,\n width: 550,\n lyrics: lyrics2,\n title: '550px,softmax:10,different word order',\n },\n {\n sm: 5,\n width: 550,\n lyrics: lyrics2,\n title: '550px,softmax:5',\n },\n {\n sm: 100,\n width: 550,\n lyrics: lyrics2,\n title: '550px,softmax:100',\n },\n ];\n const rowSize = 140;\n const beats = 12;\n const beatsPer = 8;\n const beamGroup = 3;\n const durations = ['8d', '16', '8', '8d', '16', '8', '8d', '16', '8', '4', '8'];\n const beams = [];\n let y = 40;\n smar.forEach((sm) => {\n const stave = new Stave(10, y, sm.width);\n const notes = [];\n let iii = 0;\n context.fillText(sm.title, 100, y);\n y += rowSize;\n durations.forEach((dd) => {\n const note = new StaveNote({ keys: ['b/4'], duration: dd });\n if (dd.indexOf('d') >= 0) {\n Dot.buildAndAttach([note], { all: true });\n }\n if (sm.lyrics.length > iii) {\n note.addModifier(new Annotation(sm.lyrics[iii])\n .setVerticalJustification(Annotation.VerticalJustify.BOTTOM)\n .setFont(Font.SERIF, 12, FontWeight.NORMAL));\n }\n notes.push(note);\n iii += 1;\n });\n notes.forEach((note) => {\n if (note.getDuration().indexOf('d') >= 0) {\n Dot.buildAndAttach([note], { all: true });\n }\n });\n // Don't beam the last group\n let notesToBeam = [];\n notes.forEach((note) => {\n if (note.getIntrinsicTicks() < 4096) {\n notesToBeam.push(note);\n if (notesToBeam.length >= beamGroup) {\n beams.push(new Beam(notesToBeam));\n notesToBeam = [];\n }\n }\n else {\n notesToBeam = [];\n }\n });\n const voice1 = new Voice({ num_beats: beats, beat_value: beatsPer }).setMode(Voice.Mode.SOFT).addTickables(notes);\n const fmt = new Formatter({ softmaxFactor: sm.sm, maxIterations: 2 }).joinVoices([voice1]);\n fmt.format([voice1], sm.width - 11);\n stave.setContext(context).draw();\n voice1.draw(context, stave);\n beams.forEach((b) => b.setContext(context).draw());\n });\n ok(true);\n}\nVexFlowTests.register(FormatterTests);\nexport { FormatterTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Fraction Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Fraction } from '../src/fraction';\nconst FractionTests = {\n Start() {\n QUnit.module('Fraction');\n test('Basic', basic);\n test('With Other Fractions', withOtherFractions);\n },\n};\nfunction basic() {\n const f_1_2 = new Fraction(1, 2);\n ok(f_1_2.equals(0.5), 'Fraction: 1/2 equals 0.5');\n ok(f_1_2.equals(new Fraction(1, 2)), 'Fraction: 1/2 equals 1/2');\n ok(f_1_2.equals(new Fraction(2, 4)), 'Fraction: 1/2 equals 2/4');\n notOk(f_1_2.greaterThan(1), 'Fraction: ! 1/2 > 1');\n ok(f_1_2.greaterThan(0.2), 'Fraction: 1/2 > 0.2');\n ok(f_1_2.greaterThanEquals(0.2), 'Fraction: 1/2 >= 0.2');\n ok(f_1_2.greaterThanEquals(0.5), 'Fraction: 1/2 >= 0.5');\n notOk(f_1_2.greaterThanEquals(1), 'Fraction: ! 1/2 >= 1');\n notOk(f_1_2.lessThan(0.5), 'Fraction: ! 1/2 < 0.5');\n ok(f_1_2.lessThan(1), 'Fraction: 1/2 < 1');\n ok(f_1_2.lessThanEquals(0.6), 'Fraction: 1/2 <= 0.6');\n ok(f_1_2.lessThanEquals(0.5), 'Fraction: 1/2 <= 0.5');\n notOk(f_1_2.lessThanEquals(0.4), 'Fraction: ! 1/2 <= 0.4');\n const f_05 = f_1_2.copy(0.5);\n strictEqual(f_05, f_1_2, 'Fraction: f_05 === f_1_2');\n strictEqual(f_05.toString(), '0.5/1', 'Fraction: f_05.toString() === \"0.5/1\"');\n strictEqual(f_05.toSimplifiedString(), '1/2', 'Fraction: f_05.toSimplifiedString() === \"1/2\"');\n const tF_n = f_05.clone();\n notStrictEqual(tF_n, f_05, 'Fraction: tF_n !== f_05');\n notEqual(tF_n, f_05, 'Fraction: tF_n != f_05');\n deepEqual(tF_n, f_05, 'tF_n deepEqual f_05');\n notDeepEqual(tF_n, {}, 'tF_n notDeepEqual {}');\n tF_n.subtract(-0.5);\n ok(tF_n.equals(1), 'Fraction: 0.5 -(-0.5) equals 1');\n tF_n.add(1);\n ok(tF_n.equals(2), 'Fraction: 1 + 1 equals 2');\n tF_n.multiply(2);\n ok(tF_n.equals(4), 'Fraction: 2 * 2 equals 4');\n tF_n.divide(2);\n ok(tF_n.equals(2), 'Fraction: 4 / 2 equals 2');\n // Lowest common multiple.\n equal(Fraction.LCMM([]), 0);\n equal(Fraction.LCMM([17]), 17);\n equal(Fraction.LCMM([2, 5]), 10);\n equal(Fraction.LCMM([15, 3, 5]), 15);\n equal(Fraction.LCMM([2, 4, 6]), 12);\n equal(Fraction.LCMM([2, 3, 4, 5]), 60);\n equal(Fraction.LCMM([12, 15, 10, 75]), 300);\n // Greatest common divisor.\n equal(Fraction.GCD(0, 0), 0);\n equal(Fraction.GCD(0, 99), 99);\n equal(Fraction.GCD(77, 0), 77);\n equal(Fraction.GCD(42, 14), 14);\n equal(Fraction.GCD(15, 10), 5);\n}\nfunction withOtherFractions() {\n const f_1_2 = new Fraction(1, 2);\n const f_1_4 = new Fraction(1, 4);\n const f_1_8 = new Fraction(1, 8);\n const f_2 = new Fraction(2, 1);\n // IMPORTANT NOTE: Fraction methods modify the existing Fraction object.\n // They do not return new objects.\n // Use clone() if you don't want to modify the original object.\n const a = f_1_2.clone().multiply(f_1_2);\n ok(a.equals(f_1_4), '1/2 x 1/2 == 1/4');\n const b = f_1_2.clone().divide(f_1_4);\n ok(b.equals(f_2), '1/2 / 1/4 == 2');\n const c = f_2.clone().subtract(f_1_2).subtract(f_1_2).subtract(f_1_4); // 3/4\n const d = f_1_8.clone().add(f_1_8).add(f_1_8).multiply(f_2);\n ok(c.equals(d), '2-1/2-1/2-1/4 == (1/8+1/8+1/8)*(2/1)');\n equal(c.value(), 0.75, '3/4 == 0.75');\n const e = f_1_8.clone().add(f_1_4).add(f_1_8);\n ok(e.equals(f_1_2), '1/8 + 1/4 + 1/8 == 1/2');\n}\nVexFlowTests.register(FractionTests);\nexport { FractionTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// GhostNote Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nconst GhostNoteTests = {\n Start() {\n QUnit.module('GhostNote');\n const run = VexFlowTests.runTests;\n run('GhostNote Basic', basic);\n run('GhostNote Dotted', dotted);\n },\n};\n/**\n * Helper function to set up the stave, easyscore, voice, and to format & draw.\n */\nfunction createTest(addItems) {\n return (options) => {\n const factory = VexFlowTests.makeFactory(options, 550);\n const stave = factory.Stave();\n const score = factory.EasyScore();\n addItems(factory, score);\n const voices = factory.getVoices();\n factory.Formatter().joinVoices(voices).formatToStave(voices, stave);\n factory.draw();\n ok(true, 'all pass');\n };\n}\nconst basic = createTest((f, score) => {\n // Top Voice\n const voiceTop = score.voice(score.notes('f#5/4, f5, db5, c5, c5/8, d5, fn5, e5, d5, c5', { stem: 'up' }), {\n time: '7/4',\n });\n const notesTop = voiceTop.getTickables();\n f.Beam({ notes: notesTop.slice(4, 8) });\n f.Beam({ notes: notesTop.slice(8, 10) });\n // Bottom Voice\n score.voice([\n f.GhostNote({ duration: '2' }),\n f.StaveNote({ keys: ['f/4'], stem_direction: -1, duration: '4' }),\n f.GhostNote({ duration: '4' }),\n f.StaveNote({ keys: ['e/4'], stem_direction: -1, duration: '4' }),\n f.GhostNote({ duration: '8' }),\n f.StaveNote({ keys: ['d/4'], stem_direction: -1, duration: '8' }).addModifier(f.Accidental({ type: '##' }), 0),\n f.StaveNote({ keys: ['c/4'], stem_direction: -1, duration: '8' }),\n f.StaveNote({ keys: ['c/4'], stem_direction: -1, duration: '8' }),\n ], { time: '7/4' });\n});\n/**\n * A ghost note is invisible, but takes up space on the stave corresponding to its duration.\n * '4d' is a dotted quarter note, equivalent to a quarter + eighth note.\n */\nconst dotted = createTest((f, score) => {\n const voice1 = score.voice([\n f.GhostNote({ duration: '4d' }),\n f.StaveNote({ duration: '8', keys: ['f/5'], stem_direction: 1 }),\n f.StaveNote({ duration: '4', keys: ['d/5'], stem_direction: 1 }),\n f.StaveNote({ duration: '8', keys: ['c/5'], stem_direction: 1 }),\n f.StaveNote({ duration: '16', keys: ['c/5'], stem_direction: 1 }),\n f.StaveNote({ duration: '16', keys: ['d/5'], stem_direction: 1 }),\n f.GhostNote({ duration: '2dd' }),\n f.StaveNote({ duration: '8', keys: ['f/5'], stem_direction: 1 }),\n ], { time: '8/4' });\n const voice2 = score.voice([\n f.StaveNote({ duration: '4', keys: ['f/4'], stem_direction: -1 }),\n f.StaveNote({ duration: '8', keys: ['e/4'], stem_direction: -1 }),\n f.StaveNote({ duration: '8', keys: ['d/4'], stem_direction: -1 }),\n f.GhostNote({ duration: '4dd' }),\n f.StaveNote({ duration: '16', keys: ['c/4'], stem_direction: -1 }),\n f.StaveNote({ duration: '2', keys: ['c/4'], stem_direction: -1 }),\n f.StaveNote({ duration: '4', keys: ['d/4'], stem_direction: -1 }),\n f.StaveNote({ duration: '8', keys: ['f/4'], stem_direction: -1 }),\n f.StaveNote({ duration: '8', keys: ['e/4'], stem_direction: -1 }),\n ], { time: '8/4' });\n const notes1 = voice1.getTickables();\n const notes2 = voice2.getTickables();\n const addAccidental = (note, type) => note.addModifier(f.Accidental({ type }), 0);\n addAccidental(notes1[1], 'bb');\n addAccidental(notes1[4], '#');\n addAccidental(notes1[7], 'n');\n addAccidental(notes2[0], '#');\n addAccidental(notes2[4], 'b');\n addAccidental(notes2[5], '#');\n addAccidental(notes2[7], 'n');\n f.Beam({ notes: notes1.slice(3, 6) });\n f.Beam({ notes: notes2.slice(1, 3) });\n f.Beam({ notes: notes2.slice(7, 9) });\n});\nVexFlowTests.register(GhostNoteTests);\nexport { GhostNoteTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// GlyphNote Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { ChordSymbol } from '../src/chordsymbol';\nimport { Glyph } from '../src/glyph';\nimport { Registry } from '../src/registry';\nimport { StaveConnector } from '../src/staveconnector';\nconst GlyphNoteTests = {\n Start() {\n QUnit.module('GlyphNote');\n const run = VexFlowTests.runTests;\n run('GlyphNote with ChordSymbols', chordChanges, { debug: false, noPadding: false });\n run('GlyphNote Positioning', basic, { debug: false, noPadding: false });\n run('GlyphNote No Stave Padding', basic, { debug: true, noPadding: true });\n run('GlyphNote RepeatNote', repeatNote, { debug: false, noPadding: true });\n },\n};\nfunction chordChanges(options) {\n Registry.enableDefaultRegistry(new Registry());\n const f = VexFlowTests.makeFactory(options, 300, 200);\n const system = f.System({\n x: 50,\n width: 250,\n debugFormatter: options.params.debug,\n noPadding: options.params.noPadding,\n details: { alpha: options.params.alpha },\n });\n const score = f.EasyScore();\n const notes = [\n f.GlyphNote(new Glyph('repeatBarSlash', 40), { duration: 'q' }),\n f.GlyphNote(new Glyph('repeatBarSlash', 40), { duration: 'q' }),\n f.GlyphNote(new Glyph('repeatBarSlash', 40), { duration: 'q' }),\n f.GlyphNote(new Glyph('repeatBarSlash', 40), { duration: 'q' }),\n ];\n const chord1 = f\n .ChordSymbol({ reportWidth: false })\n .addText('F7')\n .setHorizontal('left')\n .addGlyphOrText('(#11b9)', { symbolModifier: ChordSymbol.symbolModifiers.SUPERSCRIPT });\n const chord2 = f\n .ChordSymbol()\n .addText('F7')\n .setHorizontal('left')\n .addGlyphOrText('#11', { symbolModifier: ChordSymbol.symbolModifiers.SUPERSCRIPT })\n .addGlyphOrText('b9', { symbolModifier: ChordSymbol.symbolModifiers.SUBSCRIPT });\n notes[0].addModifier(chord1, 0);\n notes[2].addModifier(chord2, 0);\n const voice = score.voice(notes);\n system.addStave({ voices: [voice], debugNoteMetrics: options.params.debug });\n system.addConnector().setType(StaveConnector.type.BRACKET);\n f.draw();\n Registry.disableDefaultRegistry();\n ok(true);\n}\nfunction basic(options) {\n Registry.enableDefaultRegistry(new Registry());\n const f = VexFlowTests.makeFactory(options, 300, 400);\n const system = f.System({\n x: 50,\n width: 250,\n debugFormatter: options.params.debug,\n noPadding: options.params.noPadding,\n details: { alpha: options.params.alpha },\n });\n const score = f.EasyScore();\n const newVoice = (notes) => score.voice(notes, { time: '1/4' });\n const newStave = (voice) => system.addStave({ voices: [voice], debugNoteMetrics: options.params.debug });\n const voices = [\n [f.GlyphNote(new Glyph('repeat1Bar', 40), { duration: 'q' }, { line: 4 })],\n [f.GlyphNote(new Glyph('repeat2Bars', 40), { duration: 'q', align_center: true })],\n [\n f.GlyphNote(new Glyph('repeatBarSlash', 40), { duration: '16' }),\n f.GlyphNote(new Glyph('repeatBarSlash', 40), { duration: '16' }),\n f.GlyphNote(new Glyph('repeat4Bars', 40), { duration: '16' }),\n f.GlyphNote(new Glyph('repeatBarSlash', 40), { duration: '16' }),\n ],\n ];\n voices.map(newVoice).forEach(newStave);\n system.addConnector().setType(StaveConnector.type.BRACKET);\n f.draw();\n Registry.disableDefaultRegistry();\n ok(true);\n}\nfunction repeatNote(options) {\n Registry.enableDefaultRegistry(new Registry());\n const f = VexFlowTests.makeFactory(options, 300, 500);\n const system = f.System({\n x: 50,\n width: 250,\n debugFormatter: options.params.debug,\n noPadding: options.params.noPadding,\n details: { alpha: options.params.alpha },\n });\n const score = f.EasyScore();\n const createVoice = (notes) => score.voice(notes, { time: '1/4' });\n const addStaveWithVoice = (voice) => system.addStave({ voices: [voice], debugNoteMetrics: options.params.debug });\n const voices = [\n [f.RepeatNote('1')],\n [f.RepeatNote('2')],\n [f.RepeatNote('4')],\n [\n f.RepeatNote('slash', { duration: '16' }),\n f.RepeatNote('slash', { duration: '16' }),\n f.RepeatNote('slash', { duration: '16' }),\n f.RepeatNote('slash', { duration: '16' }),\n ],\n ];\n voices.map(createVoice).forEach(addStaveWithVoice);\n system.addConnector().setType(StaveConnector.type.BRACKET);\n f.draw();\n Registry.disableDefaultRegistry();\n ok(true);\n}\nVexFlowTests.register(GlyphNoteTests);\nexport { GlyphNoteTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// GraceNote Tests\n// TODO: In the 'stem' test (aka Grace Note Stem › SVG + Petaluma in flow.html), the Petaluma note heads are not scaled down properly.\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Accidental } from '../src/accidental';\nimport { Annotation } from '../src/annotation';\nimport { Articulation } from '../src/articulation';\nimport { Dot } from '../src/dot';\nimport { Formatter } from '../src/formatter';\nconst GraceNoteTests = {\n Start() {\n QUnit.module('Grace Notes');\n const run = VexFlowTests.runTests;\n run('Grace Note Basic', basic);\n run('With Articulation and Annotation on Parent Note', graceNoteModifiers);\n run('Grace Note Basic with Slurs', basicSlurred);\n run('Grace Note Stem', stem);\n run('Grace Note Stem with Beams 1', stemWithBeamed, {\n keys1: ['g/4'],\n stemDirection1: 1,\n keys2: ['d/5'],\n stemDirection2: -1,\n });\n run('Grace Note Stem with Beams 2', stemWithBeamed, {\n keys1: ['a/3'],\n stemDirection1: 1,\n keys2: ['a/5'],\n stemDirection2: -1,\n });\n run('Grace Note Stem with Beams 3', stemWithBeamed, {\n keys1: ['c/4'],\n stemDirection1: 1,\n keys2: ['c/6'],\n stemDirection2: -1,\n });\n run('Grace Note Slash', slash);\n run('Grace Note Slash with Beams', slashWithBeams);\n run('Grace Notes Multiple Voices', multipleVoices);\n run('Grace Notes Multiple Voices Multiple Draws', multipleVoicesMultipleDraws);\n },\n};\nfunction basic(options) {\n const f = VexFlowTests.makeFactory(options, 700, 130);\n const stave = f.Stave({ x: 10, y: 10, width: 650 });\n const gracenotes = [\n { keys: ['e/4'], duration: '32' },\n { keys: ['f/4'], duration: '32' },\n { keys: ['g/4'], duration: '32' },\n { keys: ['a/4'], duration: '32' },\n ].map(f.GraceNote.bind(f));\n const gracenotes1 = [{ keys: ['b/4'], duration: '8', slash: false }].map(f.GraceNote.bind(f));\n const gracenotes2 = [{ keys: ['b/4'], duration: '8', slash: true }].map(f.GraceNote.bind(f));\n const gracenotes3 = [\n { keys: ['e/4'], duration: '8' },\n { keys: ['f/4'], duration: '16' },\n { keys: ['e/4', 'g/4'], duration: '8' },\n { keys: ['a/4'], duration: '32' },\n { keys: ['b/4'], duration: '32' },\n ].map(f.GraceNote.bind(f));\n const gracenotes4 = [\n { keys: ['g/4'], duration: '8' },\n { keys: ['g/4'], duration: '16' },\n { keys: ['g/4'], duration: '16' },\n ].map(f.GraceNote.bind(f));\n gracenotes[1].addModifier(f.Accidental({ type: '##' }), 0);\n gracenotes3[3].addModifier(f.Accidental({ type: 'bb' }), 0);\n Dot.buildAndAttach([gracenotes4[0]], { all: true });\n const notes = [\n f\n .StaveNote({ keys: ['b/4'], duration: '4', auto_stem: true })\n .addModifier(f.GraceNoteGroup({ notes: gracenotes }).beamNotes(), 0),\n f\n .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true })\n .addModifier(f.Accidental({ type: '#' }), 0)\n .addModifier(f.GraceNoteGroup({ notes: gracenotes1 }).beamNotes(), 0),\n f\n .StaveNote({ keys: ['c/5', 'd/5'], duration: '4', auto_stem: true })\n .addModifier(f.GraceNoteGroup({ notes: gracenotes2 }).beamNotes(), 0),\n f\n .StaveNote({ keys: ['a/4'], duration: '4', auto_stem: true })\n .addModifier(f.GraceNoteGroup({ notes: gracenotes3 }).beamNotes(), 0),\n f\n .StaveNote({ keys: ['a/4'], duration: '4', auto_stem: true })\n .addModifier(f.GraceNoteGroup({ notes: gracenotes4 }).beamNotes(), 0),\n ];\n const voice = f.Voice().setStrict(false).addTickables(notes);\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'GraceNoteBasic');\n}\nfunction graceNoteModifiers(options) {\n const f = VexFlowTests.makeFactory(options, 700, 130);\n const stave = f.Stave({ x: 10, y: 10, width: 650 });\n const gracenotes = [{ keys: ['b/4'], duration: '8', slash: false }].map(f.GraceNote.bind(f));\n const notes = [\n f\n .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true })\n .addModifier(f.GraceNoteGroup({ notes: gracenotes }), 0),\n f\n .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true })\n .addModifier(f.GraceNoteGroup({ notes: gracenotes }), 0)\n .addModifier(new Articulation('a-').setPosition(3), 0),\n f\n .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true })\n .addModifier(f.GraceNoteGroup({ notes: gracenotes }), 0)\n .addModifier(new Articulation('a-').setPosition(3), 0)\n .addModifier(new Accidental('#')),\n f\n .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true })\n .addModifier(f.GraceNoteGroup({ notes: gracenotes }), 0)\n .addModifier(new Articulation('a-').setPosition(3), 0)\n .addModifier(new Annotation('words')),\n f\n .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true })\n .addModifier(f.GraceNoteGroup({ notes: gracenotes }), 0)\n .addModifier(new Articulation('a-').setPosition(3), 0)\n .addModifier(new Articulation('a>').setPosition(3), 0),\n f\n .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true })\n .addModifier(f.GraceNoteGroup({ notes: gracenotes }), 0)\n .addModifier(new Articulation('a-').setPosition(3), 0)\n .addModifier(new Articulation('a>').setPosition(3), 0)\n .addModifier(new Articulation('a@a').setPosition(3), 0),\n ];\n const voice = f.Voice().setStrict(false).addTickables(notes);\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'GraceNoteModifiers');\n}\nfunction basicSlurred(options) {\n const f = VexFlowTests.makeFactory(options, 700, 130);\n const stave = f.Stave({ x: 10, y: 10, width: 650 });\n const gracenotes0 = [\n { keys: ['e/4'], duration: '32' },\n { keys: ['f/4'], duration: '32' },\n { keys: ['g/4'], duration: '32' },\n { keys: ['a/4'], duration: '32' },\n ].map(f.GraceNote.bind(f));\n const gracenotes1 = [{ keys: ['b/4'], duration: '8', slash: false }].map(f.GraceNote.bind(f));\n const gracenotes2 = [{ keys: ['b/4'], duration: '8', slash: true }].map(f.GraceNote.bind(f));\n const gracenotes3 = [\n { keys: ['e/4'], duration: '8' },\n { keys: ['f/4'], duration: '16' },\n { keys: ['e/4', 'g/4'], duration: '8' },\n { keys: ['a/4'], duration: '32' },\n { keys: ['b/4'], duration: '32' },\n ].map(f.GraceNote.bind(f));\n const gracenotes4 = [\n { keys: ['a/4'], duration: '8' },\n { keys: ['a/4'], duration: '16' },\n { keys: ['a/4'], duration: '16' },\n ].map(f.GraceNote.bind(f));\n gracenotes0[1].addModifier(f.Accidental({ type: '#' }), 0);\n gracenotes3[3].addModifier(f.Accidental({ type: 'b' }), 0);\n gracenotes3[2].addModifier(f.Accidental({ type: 'n' }), 0);\n Dot.buildAndAttach([gracenotes4[0]], { all: true });\n const notes = [\n f\n .StaveNote({ keys: ['b/4'], duration: '4', auto_stem: true })\n .addModifier(f.GraceNoteGroup({ notes: gracenotes0, slur: true }).beamNotes(), 0),\n f\n .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true })\n .addModifier(f.Accidental({ type: '#' }), 0)\n .addModifier(f.GraceNoteGroup({ notes: gracenotes1, slur: true }).beamNotes(), 0),\n f\n .StaveNote({ keys: ['c/5', 'd/5'], duration: '4', auto_stem: true })\n .addModifier(f.GraceNoteGroup({ notes: gracenotes2, slur: true }).beamNotes(), 0),\n f\n .StaveNote({ keys: ['a/4'], duration: '4', auto_stem: true })\n .addModifier(f.GraceNoteGroup({ notes: gracenotes3, slur: true }).beamNotes(), 0),\n f\n .StaveNote({ keys: ['a/4'], duration: '4', auto_stem: true })\n .addModifier(f.GraceNoteGroup({ notes: gracenotes4, slur: true }).beamNotes(), 0),\n f.StaveNote({ keys: ['a/4'], duration: '4', auto_stem: true }),\n ];\n const voice = f.Voice().setStrict(false).addTickables(notes);\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'GraceNoteBasic');\n}\n/**\n * Helper function for three tests below: stem, stemWithBeamed, slash.\n */\nconst createNoteForStemTest = (duration, noteBuilder, keys, stem_direction, slash = false) => {\n const struct = { duration, slash };\n struct.stem_direction = stem_direction;\n struct.keys = keys;\n return noteBuilder(struct);\n};\n// Used in three tests below.\nconst durationsForStemTest = ['8', '16', '32', '64', '128'];\nfunction stem(options) {\n const f = VexFlowTests.makeFactory(options, 700, 130);\n const stave = f.Stave({ x: 10, y: 10, width: 650 });\n function createNotes(noteBuilder, keys, stem_direction) {\n return durationsForStemTest.map((duration) => createNoteForStemTest(duration, noteBuilder, keys, stem_direction));\n }\n function createNoteBlock(keys, stem_direction) {\n const staveNotes = createNotes(f.StaveNote.bind(f), keys, stem_direction);\n const gracenotes = createNotes(f.GraceNote.bind(f), keys, stem_direction);\n // Add a bunch of GraceNotes in front of the first StaveNote.\n staveNotes[0].addModifier(f.GraceNoteGroup({ notes: gracenotes }), 0);\n return staveNotes;\n }\n const voice = f.Voice().setStrict(false);\n voice.addTickables(createNoteBlock(['g/4'], 1));\n voice.addTickables(createNoteBlock(['d/5'], -1));\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'GraceNoteStem');\n}\nfunction stemWithBeamed(options) {\n const f = VexFlowTests.makeFactory(options, 700, 130);\n const stave = f.Stave({ x: 10, y: 10, width: 650 });\n function createBeamedNotes(noteBuilder, keys, stem_direction, beams, isGrace = false, notesToBeam) {\n const ret = [];\n durationsForStemTest.map((duration) => {\n const n0 = createNoteForStemTest(duration, noteBuilder, keys, stem_direction);\n const n1 = createNoteForStemTest(duration, noteBuilder, keys, stem_direction);\n ret.push(n0);\n ret.push(n1);\n if (notesToBeam) {\n notesToBeam.push([n0, n1]);\n }\n if (!isGrace) {\n beams.push(f.Beam({ notes: [n0, n1] }));\n }\n });\n return ret;\n }\n function createBeamedNoteBlock(keys, stem_direction, beams) {\n const bnotes = createBeamedNotes(f.StaveNote.bind(f), keys, stem_direction, beams);\n const notesToBeam = [];\n const gracenotes = createBeamedNotes(f.GraceNote.bind(f), keys, stem_direction, beams, true, notesToBeam);\n const graceNoteGroup = f.GraceNoteGroup({ notes: gracenotes });\n notesToBeam.map(graceNoteGroup.beamNotes.bind(graceNoteGroup));\n bnotes[0].addModifier(graceNoteGroup, 0);\n return bnotes;\n }\n const beams = [];\n const voice = f.Voice().setStrict(false);\n voice.addTickables(createBeamedNoteBlock(options.params.keys1, options.params.stemDirection1, beams));\n voice.addTickables(createBeamedNoteBlock(options.params.keys2, options.params.stemDirection2, beams));\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'GraceNoteStem');\n}\nfunction slash(options) {\n const f = VexFlowTests.makeFactory(options, 700, 130);\n const stave = f.Stave({ x: 10, y: 10, width: 650 });\n function createNotes(noteT, keys, stem_direction, slash) {\n return durationsForStemTest.map((d) => createNoteForStemTest(d, noteT, keys, stem_direction, slash));\n }\n function createNoteBlock(keys, stem_direction) {\n const notes = [f.StaveNote({ keys: ['f/4'], stem_direction, duration: '16' })];\n let graceNotes = createNotes(f.GraceNote.bind(f), keys, stem_direction, true);\n const duration = '8';\n const gns = [\n { keys: ['d/4', 'a/4'], stem_direction, duration, slash: true },\n { keys: ['d/4', 'a/4'], stem_direction, duration, slash: true },\n { keys: ['d/4', 'a/4'], stem_direction, duration, slash: true },\n { keys: ['e/4', 'a/4'], stem_direction, duration, slash: true },\n { keys: ['e/4', 'a/4'], stem_direction, duration, slash: true },\n { keys: ['b/4', 'f/5'], stem_direction, duration, slash: true },\n { keys: ['b/4', 'f/5'], stem_direction, duration, slash: true },\n { keys: ['b/4', 'f/5'], stem_direction, duration, slash: true },\n { keys: ['e/4', 'a/4'], stem_direction, duration, slash: true },\n ].map(f.GraceNote.bind(f));\n const notesToBeam = [];\n notesToBeam.push([gns[0], gns[1], gns[2]]);\n notesToBeam.push([gns[3], gns[4], gns[5]]);\n notesToBeam.push([gns[6], gns[7], gns[8]]);\n // Merge the two GraceNote[].\n graceNotes = graceNotes.concat(gns);\n const graceNoteGroup = f.GraceNoteGroup({ notes: graceNotes });\n notesToBeam.forEach((notes) => graceNoteGroup.beamNotes(notes));\n notes[0].addModifier(graceNoteGroup, 0);\n return notes;\n }\n const voice = f.Voice().setStrict(false);\n voice.addTickables(createNoteBlock(['d/4', 'a/4'], 1));\n voice.addTickables(createNoteBlock(['d/4', 'a/4'], -1));\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'GraceNoteSlash');\n}\nfunction slashWithBeams(options) {\n const f = VexFlowTests.makeFactory(options, 800, 130);\n const stave = f.Stave({ x: 10, y: 10, width: 750 });\n function createNoteBlock(keys, stem_direction) {\n const notes = [f.StaveNote({ keys: ['f/4'], stem_direction, duration: '16' })];\n let allGraceNotes = [];\n const graceNotesToBeam = [];\n ['8', '16', '32', '64'].forEach(function (duration) {\n const graceNotes = [\n { keys: ['d/4', 'a/4'], stem_direction, duration, slash: true },\n { keys: ['d/4', 'a/4'], stem_direction, duration, slash: false },\n { keys: ['e/4', 'a/4'], stem_direction, duration, slash: true },\n { keys: ['b/4', 'f/5'], stem_direction, duration, slash: false },\n { keys: ['b/4', 'f/5'], stem_direction, duration, slash: true },\n { keys: ['e/4', 'a/4'], stem_direction, duration, slash: false },\n ].map(f.GraceNote.bind(f));\n graceNotesToBeam.push([graceNotes[0], graceNotes[1]]);\n graceNotesToBeam.push([graceNotes[2], graceNotes[3]]);\n graceNotesToBeam.push([graceNotes[4], graceNotes[5]]);\n allGraceNotes = allGraceNotes.concat(graceNotes);\n });\n const graceNoteGroup = f.GraceNoteGroup({ notes: allGraceNotes });\n graceNotesToBeam.forEach((g) => graceNoteGroup.beamNotes(g));\n notes[0].addModifier(graceNoteGroup, 0);\n return notes;\n }\n const voice = f.Voice().setStrict(false);\n voice.addTickables(createNoteBlock(['d/4', 'a/4'], 1));\n voice.addTickables(createNoteBlock(['d/4', 'a/4'], -1));\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'GraceNoteSlashWithBeams');\n}\nfunction multipleVoices(options) {\n const f = VexFlowTests.makeFactory(options, 450, 140);\n const stave = f.Stave({ x: 10, y: 10, width: 450 });\n const notes = [\n { keys: ['f/5'], stem_direction: 1, duration: '16' },\n { keys: ['f/5'], stem_direction: 1, duration: '16' },\n { keys: ['d/5'], stem_direction: 1, duration: '16' },\n { keys: ['c/5'], stem_direction: 1, duration: '16' },\n { keys: ['c/5'], stem_direction: 1, duration: '16' },\n { keys: ['d/5'], stem_direction: 1, duration: '16' },\n { keys: ['f/5'], stem_direction: 1, duration: '16' },\n { keys: ['e/5'], stem_direction: 1, duration: '16' },\n ].map(f.StaveNote.bind(f));\n const notes2 = [\n { keys: ['f/4'], stem_direction: -1, duration: '16' },\n { keys: ['e/4'], stem_direction: -1, duration: '16' },\n { keys: ['d/4'], stem_direction: -1, duration: '16' },\n { keys: ['c/4'], stem_direction: -1, duration: '16' },\n { keys: ['c/4'], stem_direction: -1, duration: '16' },\n { keys: ['d/4'], stem_direction: -1, duration: '16' },\n { keys: ['f/4'], stem_direction: -1, duration: '16' },\n { keys: ['e/4'], stem_direction: -1, duration: '16' },\n ].map(f.StaveNote.bind(f));\n const gracenotes1 = [{ keys: ['b/4'], stem_direction: 1, duration: '8', slash: true }].map(f.GraceNote.bind(f));\n const gracenotes2 = [{ keys: ['f/4'], stem_direction: -1, duration: '8', slash: true }].map(f.GraceNote.bind(f));\n const gracenotes3 = [\n { keys: ['f/4'], duration: '32', stem_direction: -1 },\n { keys: ['e/4'], duration: '32', stem_direction: -1 },\n ].map(f.GraceNote.bind(f));\n const gracenotes4 = [\n { keys: ['f/5'], duration: '32', stem_direction: 1 },\n { keys: ['e/5'], duration: '32', stem_direction: 1 },\n { keys: ['e/5'], duration: '8', stem_direction: 1 },\n ].map(f.GraceNote.bind(f));\n gracenotes2[0].setStemDirection(-1);\n gracenotes2[0].addModifier(f.Accidental({ type: '#' }), 0);\n notes[1].addModifier(f.GraceNoteGroup({ notes: gracenotes4 }).beamNotes(), 0);\n notes[3].addModifier(f.GraceNoteGroup({ notes: gracenotes1 }), 0);\n notes2[1].addModifier(f.GraceNoteGroup({ notes: gracenotes2 }).beamNotes(), 0);\n notes2[5].addModifier(f.GraceNoteGroup({ notes: gracenotes3 }).beamNotes(), 0);\n const voice = f.Voice().setStrict(false).addTickables(notes);\n const voice2 = f.Voice().setStrict(false).addTickables(notes2);\n f.Beam({ notes: notes.slice(0, 4) });\n f.Beam({ notes: notes.slice(4, 8) });\n f.Beam({ notes: notes2.slice(0, 4) });\n f.Beam({ notes: notes2.slice(4, 8) });\n f.Formatter().joinVoices([voice, voice2]).formatToStave([voice, voice2], stave);\n f.draw();\n ok(true, 'Sixteenth Test');\n}\nfunction multipleVoicesMultipleDraws(options) {\n const f = VexFlowTests.makeFactory(options, 450, 140);\n const stave = f.Stave({ x: 10, y: 10, width: 450 });\n const notes = [\n { keys: ['f/5'], stem_direction: 1, duration: '16' },\n { keys: ['f/5'], stem_direction: 1, duration: '16' },\n { keys: ['d/5'], stem_direction: 1, duration: '16' },\n { keys: ['c/5'], stem_direction: 1, duration: '16' },\n { keys: ['c/5'], stem_direction: 1, duration: '16' },\n { keys: ['d/5'], stem_direction: 1, duration: '16' },\n { keys: ['f/5'], stem_direction: 1, duration: '16' },\n { keys: ['e/5'], stem_direction: 1, duration: '16' },\n ].map(f.StaveNote.bind(f));\n const notes2 = [\n { keys: ['f/4'], stem_direction: -1, duration: '16' },\n { keys: ['e/4'], stem_direction: -1, duration: '16' },\n { keys: ['d/4'], stem_direction: -1, duration: '16' },\n { keys: ['c/4'], stem_direction: -1, duration: '16' },\n { keys: ['c/4'], stem_direction: -1, duration: '16' },\n { keys: ['d/4'], stem_direction: -1, duration: '16' },\n { keys: ['f/4'], stem_direction: -1, duration: '16' },\n { keys: ['e/4'], stem_direction: -1, duration: '16' },\n ].map(f.StaveNote.bind(f));\n const gracenotes1 = [{ keys: ['b/4'], stem_direction: 1, duration: '8', slash: true }].map(f.GraceNote.bind(f));\n const gracenotes2 = [{ keys: ['f/4'], stem_direction: -1, duration: '8', slash: true }].map(f.GraceNote.bind(f));\n const gracenotes3 = [\n { keys: ['f/4'], duration: '32', stem_direction: -1 },\n { keys: ['e/4'], duration: '32', stem_direction: -1 },\n ].map(f.GraceNote.bind(f));\n const gracenotes4 = [\n { keys: ['f/5'], duration: '32', stem_direction: 1 },\n { keys: ['e/5'], duration: '32', stem_direction: 1 },\n { keys: ['e/5'], duration: '8', stem_direction: 1 },\n ].map(f.GraceNote.bind(f));\n gracenotes2[0].setStemDirection(-1);\n gracenotes2[0].addModifier(f.Accidental({ type: '#' }), 0);\n notes[1].addModifier(f.GraceNoteGroup({ notes: gracenotes4 }).beamNotes(), 0);\n notes[3].addModifier(f.GraceNoteGroup({ notes: gracenotes1 }), 0);\n notes2[1].addModifier(f.GraceNoteGroup({ notes: gracenotes2 }).beamNotes(), 0);\n notes2[5].addModifier(f.GraceNoteGroup({ notes: gracenotes3 }).beamNotes(), 0);\n const voice = f.Voice().setStrict(false).addTickables(notes);\n const voice2 = f.Voice().setStrict(false).addTickables(notes2);\n f.Beam({ notes: notes.slice(0, 4) });\n f.Beam({ notes: notes.slice(4, 8) });\n f.Beam({ notes: notes2.slice(0, 4) });\n f.Beam({ notes: notes2.slice(4, 8) });\n f.Formatter().joinVoices([voice, voice2]).formatToStave([voice, voice2], stave);\n f.draw();\n f.draw();\n ok(true, 'Seventeenth Test');\n}\nVexFlowTests.register(GraceNoteTests);\nexport { GraceNoteTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// GraceTabNote Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Flow } from '../src/flow';\nimport { Formatter } from '../src/formatter';\nimport { GraceNoteGroup } from '../src/gracenotegroup';\nimport { GraceTabNote } from '../src/gracetabnote';\nimport { TabNote } from '../src/tabnote';\nimport { TabStave } from '../src/tabstave';\nimport { Voice } from '../src/voice';\nconst GraceTabNoteTests = {\n Start() {\n QUnit.module('Grace Tab Notes');\n // TODO: Rename tests below since it is redundant with the module name.\n // Remove \"Grace Tab Note \"\n const run = VexFlowTests.runTests;\n run('Grace Tab Note Simple', simple);\n run('Grace Tab Note Slurred', slurred);\n },\n};\n// Helper functions to create TabNote and GraceTabNote objects.\nconst tabNote = (noteStruct) => new TabNote(noteStruct);\nconst graceTabNote = (noteStruct) => new GraceTabNote(noteStruct);\n/**\n * Helper function to build a RenderContext and TabStave.\n */\nfunction setupContext(opts, ctxBuilder) {\n const context = ctxBuilder(opts.elementId, 350, 140);\n const stave = new TabStave(10, 10, 350).addTabGlyph().setContext(context).draw();\n return { context, stave };\n}\nfunction simple(options, contextBuilder) {\n const { context, stave } = setupContext(options, contextBuilder);\n const note0 = tabNote({ positions: [{ str: 4, fret: 6 }], duration: '4' });\n const note1 = tabNote({ positions: [{ str: 4, fret: 12 }], duration: '4' });\n const note2 = tabNote({ positions: [{ str: 4, fret: 10 }], duration: '4' });\n const note3 = tabNote({ positions: [{ str: 4, fret: 10 }], duration: '4' });\n const gracenote_group0 = [{ positions: [{ str: 4, fret: 'x' }], duration: '8' }];\n const gracenote_group1 = [\n { positions: [{ str: 4, fret: 9 }], duration: '16' },\n { positions: [{ str: 4, fret: 10 }], duration: '16' },\n ];\n const gracenote_group2 = [{ positions: [{ str: 4, fret: 9 }], duration: '8' }];\n const gracenote_group3 = [\n { positions: [{ str: 5, fret: 10 }], duration: '8' },\n { positions: [{ str: 4, fret: 9 }], duration: '8' },\n ];\n const gracenotes0 = gracenote_group0.map(graceTabNote);\n const gracenotes1 = gracenote_group1.map(graceTabNote);\n const gracenotes2 = gracenote_group2.map(graceTabNote);\n gracenotes2[0].setGhost(true);\n const gracenotes3 = gracenote_group3.map(graceTabNote);\n note0.addModifier(new GraceNoteGroup(gracenotes0), 0);\n note1.addModifier(new GraceNoteGroup(gracenotes1), 0);\n note2.addModifier(new GraceNoteGroup(gracenotes2), 0);\n note3.addModifier(new GraceNoteGroup(gracenotes3), 0);\n const voice = new Voice(Flow.TIME4_4);\n voice.addTickables([note0, note1, note2, note3]);\n new Formatter().joinVoices([voice]).format([voice], 250);\n voice.draw(context, stave);\n ok(true, 'Simple Test');\n}\nfunction slurred(options, contextBuilder) {\n const { context, stave } = setupContext(options, contextBuilder);\n const note0 = tabNote({ positions: [{ str: 4, fret: 12 }], duration: 'h' });\n const note1 = tabNote({ positions: [{ str: 4, fret: 10 }], duration: 'h' });\n const gracenote_group0 = [\n { positions: [{ str: 4, fret: 9 }], duration: '8' },\n { positions: [{ str: 4, fret: 10 }], duration: '8' },\n ];\n const gracenote_group1 = [\n { positions: [{ str: 4, fret: 7 }], duration: '16' },\n { positions: [{ str: 4, fret: 8 }], duration: '16' },\n { positions: [{ str: 4, fret: 9 }], duration: '16' },\n ];\n const gracenotes0 = gracenote_group0.map(graceTabNote);\n const gracenotes1 = gracenote_group1.map(graceTabNote);\n note0.addModifier(new GraceNoteGroup(gracenotes0, true), 0);\n note1.addModifier(new GraceNoteGroup(gracenotes1, true), 0);\n const voice = new Voice(Flow.TIME4_4);\n voice.addTickables([note0, note1]);\n new Formatter().joinVoices([voice]).format([voice], 200);\n voice.draw(context, stave);\n ok(true, 'Slurred Test');\n}\nVexFlowTests.register(GraceTabNoteTests);\nexport { GraceTabNoteTests };\n","// vexflow-debug-with-tests.ts includes this module via:\n// export * from '../../tests';\n//\n// To add a new test module, add a new line:\n// `export * from './xxxx_tests';`\n// to this file that points to the new file `xxxx_tests.ts`.\n//\n// The test module needs to call VexFlowTests.register(...).\n// For example, in annotation_tests.ts, the last two lines are:\n// VexFlowTests.register(AnnotationTests);\n// export { AnnotationTests };\n//\n// In vexflow_test_helpers.ts: VexFlowTests.run() will run all registered tests.\n//\n// To iterate faster during development, you can comment out most of this file\n// and focus on just testing the module(s) you are currently working on.\nexport * from './accidental_tests';\nexport * from './annotation_tests';\nexport * from './articulation_tests';\nexport * from './auto_beam_formatting_tests';\nexport * from './bach_tests';\nexport * from './barline_tests';\nexport * from './beam_tests';\nexport * from './bend_tests';\nexport * from './boundingbox_tests';\nexport * from './boundingboxcomputation_tests';\nexport * from './chordsymbol_tests';\nexport * from './clef_tests';\nexport * from './curve_tests';\nexport * from './dot_tests';\nexport * from './easyscore_tests';\nexport * from './factory_tests';\nexport * from './font_tests';\nexport * from './formatter_tests';\nexport * from './fraction_tests';\nexport * from './ghostnote_tests';\nexport * from './glyphnote_tests';\nexport * from './gracenote_tests';\nexport * from './gracetabnote_tests';\nexport * from './key_clef_tests';\nexport * from './keymanager_tests';\nexport * from './keysignature_tests';\nexport * from './modifier_tests';\nexport * from './multimeasurerest_tests';\nexport * from './music_tests';\nexport * from './notehead_tests';\nexport * from './notesubgroup_tests';\nexport * from './offscreencanvas_tests';\nexport * from './ornament_tests';\nexport * from './parser_tests';\nexport * from './pedalmarking_tests';\nexport * from './percussion_tests';\nexport * from './registry_tests';\nexport * from './renderer_tests';\nexport * from './rests_tests';\nexport * from './rhythm_tests';\nexport * from './stave_tests';\nexport * from './staveconnector_tests';\nexport * from './stavehairpin_tests';\nexport * from './staveline_tests';\nexport * from './stavemodifier_tests';\nexport * from './stavenote_tests';\nexport * from './stavetie_tests';\nexport * from './stringnumber_tests';\nexport * from './strokes_tests';\nexport * from './style_tests';\nexport * from './tabnote_tests';\nexport * from './tabslide_tests';\nexport * from './tabstave_tests';\nexport * from './tabtie_tests';\nexport * from './textbracket_tests';\nexport * from './textformatter_tests';\nexport * from './textnote_tests';\nexport * from './threevoice_tests';\nexport * from './tickcontext_tests';\nexport * from './timesignature_tests';\nexport * from './tremolo_tests';\nexport * from './tuning_tests';\nexport * from './tuplet_tests';\nexport * from './typeguard_tests';\nexport * from './vf_prefix_tests';\nexport * from './vibrato_tests';\nexport * from './vibratobracket_tests';\nexport * from './voice_tests';\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Clef Key Signature Tests\n//\nimport { MAJOR_KEYS, MINOR_KEYS, VexFlowTests } from './vexflow_test_helpers';\nimport { Glyph } from '../src/glyph';\nimport { KeySignature } from '../src/keysignature';\nimport { Stave } from '../src/stave';\nconst ClefKeySignatureTests = {\n Start() {\n QUnit.module('Clef Keys');\n // Removed an identical 'Key Parser Test'. See keysignature_tests.ts.\n const run = VexFlowTests.runTests;\n run('Major Key Clef Test', keys, { majorKeys: true });\n run('Minor Key Clef Test', keys, { majorKeys: false });\n run('Stave Helper', staveHelper);\n },\n};\nconst fontWidths = () => {\n const glyphScale = 39; // default font scale\n const sharpWidth = Glyph.getWidth('accidentalSharp', glyphScale) + 1;\n const flatWidth = Glyph.getWidth('accidentalFlat', glyphScale) + 1;\n const ksPadding = 10; // hard-coded in keysignature.ts\n const naturalWidth = Glyph.getWidth('accidentalNatural', glyphScale) + 2;\n const clefWidth = Glyph.getWidth('gClef', glyphScale); // widest clef\n return { sharpWidth, flatWidth, naturalWidth, clefWidth, ksPadding };\n};\nfunction keys(options, contextBuilder) {\n const w = fontWidths();\n const accidentalCount = 28; // total number in all the keys\n const sharpTestWidth = accidentalCount * w.sharpWidth + w.clefWidth + Stave.defaultPadding + 6 * w.ksPadding;\n const flatTestWidth = accidentalCount * w.flatWidth + w.clefWidth + Stave.defaultPadding + 6 * w.ksPadding;\n const clefs = [\n 'treble',\n 'soprano',\n 'mezzo-soprano',\n 'alto',\n 'tenor',\n 'baritone-f',\n 'baritone-c',\n 'bass',\n 'french',\n 'subbass',\n 'percussion',\n ];\n const ctx = contextBuilder(options.elementId, Math.max(sharpTestWidth, flatTestWidth) + 100, 20 + 80 * 2 * clefs.length);\n const staves = [];\n const keys = options.params.majorKeys ? MAJOR_KEYS : MINOR_KEYS;\n let i;\n let flat;\n let sharp;\n let keySig;\n const yOffsetForFlatStaves = 10 + 80 * clefs.length;\n for (i = 0; i < clefs.length; i++) {\n // Render all the sharps first, then all the flats:\n staves[i] = new Stave(10, 10 + 80 * i, flatTestWidth);\n staves[i].addClef(clefs[i]);\n staves[i + clefs.length] = new Stave(10, yOffsetForFlatStaves + 10 + 80 * i, sharpTestWidth);\n staves[i + clefs.length].addClef(clefs[i]);\n for (flat = 0; flat < 8; flat++) {\n keySig = new KeySignature(keys[flat]);\n keySig.addToStave(staves[i]);\n }\n for (sharp = 8; sharp < keys.length; sharp++) {\n keySig = new KeySignature(keys[sharp]);\n keySig.addToStave(staves[i + clefs.length]);\n }\n staves[i].setContext(ctx);\n staves[i].draw();\n staves[i + clefs.length].setContext(ctx);\n staves[i + clefs.length].draw();\n }\n ok(true, 'all pass');\n}\nfunction staveHelper(options, contextBuilder) {\n const w = fontWidths();\n const accidentalCount = 28; // total number in all the keys\n const sharpTestWidth = accidentalCount * w.sharpWidth + w.clefWidth + Stave.defaultPadding + 7 * w.ksPadding;\n const flatTestWidth = accidentalCount * w.flatWidth + w.clefWidth + Stave.defaultPadding + 7 * w.ksPadding;\n const ctx = contextBuilder(options.elementId, Math.max(sharpTestWidth, flatTestWidth) + 100, 400);\n const stave1 = new Stave(10, 10, flatTestWidth);\n const stave2 = new Stave(10, 90, flatTestWidth);\n const stave3 = new Stave(10, 170, sharpTestWidth);\n const stave4 = new Stave(10, 260, sharpTestWidth);\n const keys = MAJOR_KEYS;\n stave1.addClef('treble');\n stave2.addClef('bass');\n stave3.addClef('alto');\n stave4.addClef('tenor');\n for (let n = 0; n < 8; ++n) {\n stave1.addKeySignature(keys[n]);\n stave2.addKeySignature(keys[n]);\n }\n for (let i = 8; i < keys.length; ++i) {\n stave3.addKeySignature(keys[i]);\n stave4.addKeySignature(keys[i]);\n }\n stave1.setContext(ctx);\n stave1.draw();\n stave2.setContext(ctx);\n stave2.draw();\n stave3.setContext(ctx);\n stave3.draw();\n stave4.setContext(ctx);\n stave4.draw();\n ok(true, 'all pass');\n}\nVexFlowTests.register(ClefKeySignatureTests);\nexport { ClefKeySignatureTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Music Key Management Tests\n//\n// TODO: KeyManager.getAccidental(key) specifies that the return value's .accidental property is string | undefined.\n// However, we check it against null.\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { KeyManager } from '../src/index';\nconst KeyManagerTests = {\n Start() {\n QUnit.module('KeyManager');\n test('Valid Notes', works);\n test('Select Notes', selectNotes);\n },\n};\nfunction works() {\n const manager = new KeyManager('g');\n equal(manager.getAccidental('f').accidental, '#');\n manager.setKey('a');\n equal(manager.getAccidental('c').accidental, '#');\n equal(manager.getAccidental('a').accidental, null);\n equal(manager.getAccidental('f').accidental, '#');\n manager.setKey('A');\n equal(manager.getAccidental('c').accidental, '#');\n equal(manager.getAccidental('a').accidental, null);\n equal(manager.getAccidental('f').accidental, '#');\n}\nfunction selectNotes() {\n const manager = new KeyManager('f');\n equal(manager.selectNote('bb').note, 'bb');\n equal(manager.selectNote('bb').accidental, 'b');\n equal(manager.selectNote('g').note, 'g');\n equal(manager.selectNote('g').accidental, null);\n equal(manager.selectNote('b').note, 'b');\n equal(manager.selectNote('b').accidental, null);\n equal(manager.selectNote('a#').note, 'bb');\n equal(manager.selectNote('g#').note, 'g#');\n // Changes have no effect?\n equal(manager.selectNote('g#').note, 'g#');\n equal(manager.selectNote('bb').note, 'bb');\n equal(manager.selectNote('bb').accidental, 'b');\n equal(manager.selectNote('g').note, 'g');\n equal(manager.selectNote('g').accidental, null);\n equal(manager.selectNote('b').note, 'b');\n equal(manager.selectNote('b').accidental, null);\n equal(manager.selectNote('a#').note, 'bb');\n equal(manager.selectNote('g#').note, 'g#');\n // Changes should propagate\n manager.reset();\n equal(manager.selectNote('g#').change, true);\n equal(manager.selectNote('g#').change, false);\n equal(manager.selectNote('g').change, true);\n equal(manager.selectNote('g').change, false);\n equal(manager.selectNote('g#').change, true);\n manager.reset();\n let note = manager.selectNote('bb');\n equal(note.change, false);\n equal(note.accidental, 'b');\n note = manager.selectNote('g');\n equal(note.change, false);\n equal(note.accidental, null);\n note = manager.selectNote('g#');\n equal(note.change, true);\n equal(note.accidental, '#');\n note = manager.selectNote('g');\n equal(note.change, true);\n equal(note.accidental, null);\n note = manager.selectNote('g');\n equal(note.change, false);\n equal(note.accidental, null);\n note = manager.selectNote('g#');\n equal(note.change, true);\n equal(note.accidental, '#');\n}\nVexFlowTests.register(KeyManagerTests);\nexport { KeyManagerTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Key Signature Tests\n//\nimport { MAJOR_KEYS, MINOR_KEYS, VexFlowTests } from './vexflow_test_helpers';\nimport { Flow } from '../src/flow';\nimport { Glyph } from '../src/glyph';\nimport { KeySignature } from '../src/keysignature';\nimport { Stave } from '../src/stave';\nimport { BarlineType } from '../src/stavebarline';\nconst KeySignatureTests = {\n Start() {\n QUnit.module('KeySignature');\n test('Key Parser Test', parser);\n const run = VexFlowTests.runTests;\n run('Major Key Test', majorKeys);\n run('Minor Key Test', minorKeys);\n run('Stave Helper', staveHelper);\n run('Cancelled key test', majorKeysCanceled);\n run('Cancelled key (for each clef) test', keysCanceledForEachClef);\n run('Altered key test', majorKeysAltered);\n run('End key with clef test', endKeyWithClef);\n run('Key Signature Change test', changeKey);\n },\n};\nconst fontWidths = () => {\n const glyphScale = 39; // default font scale\n const sharpWidth = Glyph.getWidth('accidentalSharp', glyphScale) + 1;\n const flatWidth = Glyph.getWidth('accidentalFlat', glyphScale) + 1;\n const naturalWidth = Glyph.getWidth('accidentalNatural', glyphScale) + 2;\n const clefWidth = Glyph.getWidth('gClef', glyphScale) * 2; // widest clef\n return { sharpWidth, flatWidth, naturalWidth, clefWidth };\n};\nfunction parser() {\n expect(11);\n function catchError(spec) {\n throws(() => Flow.keySignature(spec), /BadKeySignature/);\n }\n catchError('asdf');\n catchError('D!');\n catchError('E#');\n catchError('D#');\n catchError('#');\n catchError('b');\n catchError('Kb');\n catchError('Fb');\n catchError('Dbm');\n catchError('B#m');\n Flow.keySignature('B');\n Flow.keySignature('C');\n Flow.keySignature('Fm');\n Flow.keySignature('Ab');\n Flow.keySignature('Abm');\n Flow.keySignature('F#');\n Flow.keySignature('G#m');\n ok(true, 'all pass');\n}\nfunction majorKeys(options, contextBuilder) {\n const w = fontWidths();\n const accidentalCount = 28; // total number in all the keys\n const casePadding = 10; // hard-coded in staveModifier\n const testCases = 7; // all keys, but includes key of C\n const sharpTestWidth = accidentalCount * w.sharpWidth + casePadding * testCases + Stave.defaultPadding;\n const flatTestWidth = accidentalCount * w.flatWidth + casePadding * testCases + Stave.defaultPadding;\n const ctx = contextBuilder(options.elementId, Math.max(sharpTestWidth, flatTestWidth) + 100, 240);\n const stave1 = new Stave(10, 10, flatTestWidth);\n const stave2 = new Stave(10, 90, sharpTestWidth);\n const keys = MAJOR_KEYS;\n let keySig = null;\n for (let i = 0; i < 8; ++i) {\n keySig = new KeySignature(keys[i]);\n keySig.addToStave(stave1);\n }\n for (let n = 8; n < keys.length; ++n) {\n keySig = new KeySignature(keys[n]);\n keySig.addToStave(stave2);\n }\n stave1.setContext(ctx);\n stave1.draw();\n stave2.setContext(ctx);\n stave2.draw();\n ok(true, 'all pass');\n}\nfunction majorKeysCanceled(options, contextBuilder) {\n const scale = 0.9;\n const w = fontWidths();\n const flatPadding = 18;\n const sharpPadding = 20;\n const flatTestCases = 8;\n const sharpTestCases = 7;\n // magic numbers are the numbers of that symbol that appear in the test case\n const sharpTestWidth = 28 * w.sharpWidth + 21 * w.naturalWidth + sharpPadding * sharpTestCases + Stave.defaultPadding + w.clefWidth;\n const flatTestWidth = 28 * w.flatWidth + 28 * w.naturalWidth + flatPadding * flatTestCases + Stave.defaultPadding + w.clefWidth;\n const eFlatTestWidth = 28 * w.flatWidth + 32 * w.naturalWidth + flatPadding * flatTestCases + Stave.defaultPadding + w.clefWidth;\n const eSharpTestWidth = 28 * w.sharpWidth + 28 * w.naturalWidth + sharpPadding * sharpTestCases + Stave.defaultPadding + w.clefWidth;\n const maxWidth = Math.max(Math.max(sharpTestWidth, flatTestWidth, Math.max(eSharpTestWidth, eFlatTestWidth)));\n const ctx = contextBuilder(options.elementId, maxWidth + 100, 500);\n ctx.scale(scale, scale);\n const stave1 = new Stave(10, 10, flatTestWidth).addClef('treble');\n const stave2 = new Stave(10, 90, sharpTestWidth).addClef('treble');\n const stave3 = new Stave(10, 170, eFlatTestWidth).addClef('treble');\n const stave4 = new Stave(10, 250, eSharpTestWidth).addClef('treble');\n const keys = MAJOR_KEYS;\n let keySig = null;\n let i;\n let n;\n for (i = 0; i < 8; ++i) {\n keySig = new KeySignature(keys[i]);\n keySig.cancelKey('Cb');\n keySig.setPadding(flatPadding);\n keySig.addToStave(stave1);\n }\n for (n = 8; n < keys.length; ++n) {\n keySig = new KeySignature(keys[n]);\n keySig.cancelKey('C#');\n keySig.setPadding(sharpPadding);\n keySig.addToStave(stave2);\n }\n for (i = 0; i < 8; ++i) {\n keySig = new KeySignature(keys[i]);\n keySig.cancelKey('E');\n keySig.setPadding(flatPadding);\n keySig.addToStave(stave3);\n }\n for (n = 8; n < keys.length; ++n) {\n keySig = new KeySignature(keys[n]);\n keySig.cancelKey('Ab');\n keySig.setPadding(sharpPadding);\n keySig.addToStave(stave4);\n }\n stave1.setContext(ctx);\n stave1.draw();\n stave2.setContext(ctx);\n stave2.draw();\n stave3.setContext(ctx);\n stave3.draw();\n stave4.setContext(ctx);\n stave4.draw();\n ok(true, 'all pass');\n}\nfunction keysCanceledForEachClef(options, contextBuilder) {\n const scale = 0.8;\n const w = fontWidths();\n const keyPadding = 10;\n const keys = ['C#', 'Cb'];\n const flatsKey = [7, 14];\n const sharpsKey = [14, 7];\n const natsKey = [7, 7];\n const max = 21 * Math.max(w.sharpWidth, w.flatWidth) * 2 + keyPadding * 6 + Stave.defaultPadding + w.clefWidth;\n const ctx = contextBuilder(options.elementId, max + 100, 380);\n ctx.scale(scale, scale);\n const x = 20;\n let y = 20;\n let tx = x;\n ['bass', 'tenor', 'soprano', 'mezzo-soprano', 'baritone-f'].forEach(function (clef) {\n keys.forEach((key, keyIx) => {\n const cancelKey = keys[(keyIx + 1) % 2];\n const width = flatsKey[keyIx] * w.flatWidth +\n natsKey[keyIx] * w.naturalWidth +\n sharpsKey[keyIx] * w.sharpWidth +\n keyPadding * 3 +\n w.clefWidth +\n Stave.defaultPadding;\n const stave = new Stave(tx, y, width);\n stave.setClef(clef);\n stave.addKeySignature(cancelKey);\n stave.addKeySignature(key, cancelKey);\n stave.addKeySignature(key);\n stave.setContext(ctx).draw();\n tx += width;\n });\n tx = x;\n y += 80;\n });\n ok(true, 'all pass');\n}\nfunction majorKeysAltered(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 780, 500);\n ctx.scale(0.9, 0.9);\n const stave1 = new Stave(10, 10, 750).addClef('treble');\n const stave2 = new Stave(10, 90, 750).addClef('treble');\n const stave3 = new Stave(10, 170, 750).addClef('treble');\n const stave4 = new Stave(10, 250, 750).addClef('treble');\n const keys = MAJOR_KEYS;\n let keySig = null;\n let i;\n let n;\n for (i = 0; i < 8; ++i) {\n keySig = new KeySignature(keys[i]);\n keySig.alterKey(['bs', 'bs']);\n keySig.setPadding(18);\n keySig.addToStave(stave1);\n }\n for (n = 8; n < keys.length; ++n) {\n keySig = new KeySignature(keys[n]);\n keySig.alterKey(['+', '+', '+']);\n keySig.setPadding(20);\n keySig.addToStave(stave2);\n }\n for (i = 0; i < 8; ++i) {\n keySig = new KeySignature(keys[i]);\n keySig.alterKey(['n', 'bs', 'bb']);\n keySig.setPadding(18);\n keySig.addToStave(stave3);\n }\n for (n = 8; n < keys.length; ++n) {\n keySig = new KeySignature(keys[n]);\n keySig.alterKey(['++', '+', 'n', '+']);\n keySig.setPadding(20);\n keySig.addToStave(stave4);\n }\n stave1.setContext(ctx);\n stave1.draw();\n stave2.setContext(ctx);\n stave2.draw();\n stave3.setContext(ctx);\n stave3.draw();\n stave4.setContext(ctx);\n stave4.draw();\n ok(true, 'all pass');\n}\nfunction minorKeys(options, contextBuilder) {\n const accidentalCount = 28; // total number in all the keys\n const w = fontWidths();\n const casePadding = 10; // hard-coded in staveModifier\n const testCases = 7; // all keys, but includes key of C\n const sharpTestWidth = accidentalCount * w.sharpWidth + casePadding * testCases + Stave.defaultPadding;\n const flatTestWidth = accidentalCount * w.flatWidth + casePadding * testCases + Stave.defaultPadding;\n const ctx = contextBuilder(options.elementId, Math.max(sharpTestWidth, flatTestWidth) + 100, 240);\n const stave1 = new Stave(10, 10, flatTestWidth);\n const stave2 = new Stave(10, 90, sharpTestWidth);\n const keys = MINOR_KEYS;\n let keySig = null;\n for (let i = 0; i < 8; ++i) {\n keySig = new KeySignature(keys[i]);\n keySig.addToStave(stave1);\n }\n for (let n = 8; n < keys.length; ++n) {\n keySig = new KeySignature(keys[n]);\n keySig.addToStave(stave2);\n }\n stave1.setContext(ctx);\n stave1.draw();\n stave2.setContext(ctx);\n stave2.draw();\n ok(true, 'all pass');\n}\nfunction endKeyWithClef(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 200);\n ctx.scale(0.9, 0.9);\n const stave1 = new Stave(10, 10, 350);\n stave1\n .setKeySignature('G')\n .setBegBarType(BarlineType.REPEAT_BEGIN)\n .setEndBarType(BarlineType.REPEAT_END)\n .setClef('treble')\n .addTimeSignature('4/4')\n .setEndClef('bass')\n .setEndKeySignature('Cb');\n const stave2 = new Stave(10, 90, 350);\n stave2.setKeySignature('Cb').setClef('bass').setEndClef('treble').setEndKeySignature('G');\n stave1.setContext(ctx).draw();\n stave2.setContext(ctx).draw();\n ok(true, 'all pass');\n}\nfunction staveHelper(options, contextBuilder) {\n const w = fontWidths();\n const accidentalCount = 28; // total number in all the keys\n const casePadding = 10; // hard-coded in staveModifier\n const testCases = 7; // all keys, but includes key of C\n const sharpTestWidth = accidentalCount * w.sharpWidth + casePadding * testCases + Stave.defaultPadding;\n const flatTestWidth = accidentalCount * w.flatWidth + casePadding * testCases + Stave.defaultPadding;\n const ctx = contextBuilder(options.elementId, Math.max(sharpTestWidth, flatTestWidth) + 100, 240);\n const stave1 = new Stave(10, 10, flatTestWidth);\n const stave2 = new Stave(10, 90, sharpTestWidth);\n const keys = MAJOR_KEYS;\n for (let i = 0; i < 8; ++i) {\n stave1.addKeySignature(keys[i]);\n }\n for (let n = 8; n < keys.length; ++n) {\n stave2.addKeySignature(keys[n]);\n }\n stave1.setContext(ctx);\n stave1.draw();\n stave2.setContext(ctx);\n stave2.draw();\n ok(true, 'all pass');\n}\nfunction changeKey(options) {\n const f = VexFlowTests.makeFactory(options, 900);\n // The previous code was buggy: f.Stave(10, 10, 800), even though Factory.Stave() only accepts 1 argument.\n const stave = f.Stave({ x: 10, y: 10, width: 800 }).addClef('treble').addTimeSignature('C|');\n const voice = f\n .Voice()\n .setStrict(false)\n .addTickables([\n f.KeySigNote({ key: 'Bb' }),\n f.StaveNote({ keys: ['c/4'], duration: '1' }),\n f.BarNote(),\n f.KeySigNote({ key: 'D', cancelKey: 'Bb' }),\n f.StaveNote({ keys: ['c/4'], duration: '1' }),\n f.BarNote(),\n f.KeySigNote({ key: 'Bb' }),\n f.StaveNote({ keys: ['c/4'], duration: '1' }),\n f.BarNote(),\n f.KeySigNote({ key: 'D', alterKey: ['b', 'n'] }),\n f.StaveNote({ keys: ['c/4'], duration: '1' }),\n ]);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'all pass');\n}\nVexFlowTests.register(KeySignatureTests);\nexport { KeySignatureTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// TickContext Mocks\nimport { Fraction } from '../src/fraction';\nimport { Tickable } from '../src/tickable';\nclass MockTickable extends Tickable {\n constructor() {\n super(...arguments);\n this.ticks = new Fraction(1, 1);\n this.width = 0;\n this.ignore_ticks = false;\n }\n init() {\n // DO NOTHING.\n }\n getX() {\n // eslint-disable-next-line\n return this.tickContext.getX();\n }\n getIntrinsicTicks() {\n return this.ticks.value();\n }\n getTicks() {\n return this.ticks;\n }\n setTicks(t) {\n this.ticks = new Fraction(t, 1);\n return this;\n }\n // Called by TickContext.preFormat().\n getMetrics() {\n return {\n width: 0,\n glyphWidth: 0,\n notePx: this.width,\n modLeftPx: 0,\n modRightPx: 0,\n leftDisplacedHeadPx: 0,\n rightDisplacedHeadPx: 0,\n glyphPx: 0,\n };\n }\n getWidth() {\n return this.width;\n }\n setWidth(w) {\n this.width = w;\n return this;\n }\n setVoice(v) {\n this.voice = v;\n return this;\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getStave() {\n return this.stave;\n }\n setTickContext(tc) {\n this.tickContext = tc;\n return this;\n }\n setIgnoreTicks(flag) {\n this.ignore_ticks = flag;\n return this;\n }\n shouldIgnoreTicks() {\n return this.ignore_ticks;\n }\n preFormat() {\n // DO NOTHING.\n }\n // eslint-disable-next-line\n draw(...args) {\n // DO NOTHING.\n }\n}\nexport { MockTickable };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// ModifierContext Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Modifier, ModifierContext } from '../src/index';\nconst ModifierContextTests = {\n Start() {\n QUnit.module('ModifierContext');\n test('Modifier Width Test', width);\n test('Modifier Management', management);\n },\n};\nfunction width() {\n const mc = new ModifierContext();\n equal(mc.getWidth(), 0, 'New modifier context has no width');\n}\nfunction management() {\n const mc = new ModifierContext();\n const modifier1 = new Modifier();\n const modifier2 = new Modifier();\n mc.addMember(modifier1);\n mc.addMember(modifier2);\n const modifiers = mc.getMembers(Modifier.CATEGORY);\n equal(modifiers.length, 2, 'Added two modifiers');\n}\nVexFlowTests.register(ModifierContextTests);\nexport { ModifierContextTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// MultiMeasureRest Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Flow } from '../src/flow';\nimport { Font } from '../src/font';\nconst MultiMeasureRestTests = {\n Start() {\n QUnit.module('MultiMeasureRest');\n const run = VexFlowTests.runTests;\n run('Simple Test', simple);\n run('Stave with modifiers Test', staveWithModifiers);\n },\n};\nfunction simple(options) {\n const width = 910;\n const f = VexFlowTests.makeFactory(options, width, 300);\n const line_spacing_15px = { options: { spacing_between_lines_px: 15 } };\n // Each item below is an array that contains:\n // item[0] => staveParams to adjust vertical spacing between lines\n // item[1] => multiMeasureRestParams\n // eslint-disable-next-line\n const params = [\n [{}, { number_of_measures: 2, show_number: false }],\n [{}, { number_of_measures: 2 }],\n [{}, { number_of_measures: 2, line_thickness: 8, serif_thickness: 3 }],\n [{}, { number_of_measures: 1, use_symbols: true }],\n [{}, { number_of_measures: 2, use_symbols: true }],\n [{}, { number_of_measures: 3, use_symbols: true }],\n [{}, { number_of_measures: 4, use_symbols: true }],\n [{}, { number_of_measures: 5, use_symbols: true }],\n [{}, { number_of_measures: 6, use_symbols: true }],\n [{}, { number_of_measures: 7, use_symbols: true }],\n [{}, { number_of_measures: 8, use_symbols: true }],\n [{}, { number_of_measures: 9, use_symbols: true }],\n [{}, { number_of_measures: 10, use_symbols: true }],\n [{}, { number_of_measures: 11, use_symbols: true }],\n [{}, { number_of_measures: 11, use_symbols: false, padding_left: 20, padding_right: 20 }],\n [{}, { number_of_measures: 11, use_symbols: true, symbol_spacing: 5 }],\n [{}, { number_of_measures: 11, use_symbols: false, line: 3, number_line: 2 }],\n [{}, { number_of_measures: 11, use_symbols: true, line: 3, number_line: 2 }],\n [line_spacing_15px, { number_of_measures: 12 }],\n [line_spacing_15px, { number_of_measures: 9, use_symbols: true }],\n [line_spacing_15px, { number_of_measures: 12, spacing_between_lines_px: 15, number_glyph_point: 40 * 1.5 }],\n [\n line_spacing_15px,\n {\n number_of_measures: 9,\n spacing_between_lines_px: 15,\n use_symbols: true,\n number_glyph_point: 40 * 1.5,\n },\n ],\n [\n line_spacing_15px,\n {\n number_of_measures: 9,\n spacing_between_lines_px: 15,\n use_symbols: true,\n number_glyph_point: 40 * 1.5,\n semibreve_rest_glyph_scale: Flow.NOTATION_FONT_SCALE * 1.5,\n },\n ],\n ];\n const staveWidth = 100;\n let x = 0;\n let y = 0;\n const mmRests = params.map((param) => {\n if (x + staveWidth * 2 > width) {\n x = 0;\n y += 80;\n }\n const staveParams = param[0];\n const mmRestParams = param[1];\n staveParams.x = x;\n staveParams.y = y;\n staveParams.width = staveWidth;\n x += staveWidth;\n const stave = f.Stave(staveParams);\n return f.MultiMeasureRest(mmRestParams).setStave(stave);\n });\n f.draw();\n const xs = mmRests[0].getXs();\n // eslint-disable-next-line\n const strY = mmRests[0].getStave().getYForLine(-0.5);\n const str = 'TACET';\n const context = f.getContext();\n context.save();\n context.setFont(Font.SERIF, 16, 'bold');\n const metrics = context.measureText(str);\n context.fillText(str, xs.left + (xs.right - xs.left) * 0.5 - metrics.width * 0.5, strY);\n context.restore();\n ok(true, 'Simple Test');\n}\nfunction staveWithModifiers(options) {\n const width = 910;\n const f = VexFlowTests.makeFactory(options, width, 200);\n let x = 0;\n let y = 0;\n // eslint-disable-next-line\n const params = [\n [{ clef: 'treble', params: { width: 150 } }, { number_of_measures: 5 }],\n [{ clef: 'treble', keySig: 'G', params: { width: 150 } }, { number_of_measures: 5 }],\n [{ clef: 'treble', timeSig: '4/4', keySig: 'G', params: { width: 150 } }, { number_of_measures: 5 }],\n [{ clef: 'treble', endClef: 'bass', params: { width: 150 } }, { number_of_measures: 5 }],\n [{ clef: 'treble', endKeySig: 'F', params: { width: 150 } }, { number_of_measures: 5 }],\n [{ clef: 'treble', endTimeSig: '2/4', params: { width: 150 } }, { number_of_measures: 5 }],\n [{ clef: 'treble', endClef: 'bass', endTimeSig: '2/4', params: { width: 150 } }, { number_of_measures: 5 }],\n [\n { clef: 'treble', endClef: 'bass', endTimeSig: '2/4', params: { width: 150 } },\n { number_of_measures: 5, use_symbols: true },\n ],\n ];\n params.forEach((param) => {\n const staveOptions = param[0];\n // eslint-disable-next-line\n const staveParams = staveOptions.params;\n const mmrestParams = param[1];\n if (x + staveParams.width > width) {\n x = 0;\n y += 80;\n }\n staveParams.x = x;\n x += staveParams.width;\n staveParams.y = y;\n const stave = f.Stave(staveParams);\n if (staveOptions.clef) {\n stave.addClef(staveOptions.clef);\n }\n if (staveOptions.timeSig) {\n stave.addTimeSignature(staveOptions.timeSig);\n }\n if (staveOptions.keySig) {\n stave.addKeySignature(staveOptions.keySig);\n }\n if (staveOptions.endClef) {\n stave.addEndClef(staveOptions.endClef);\n }\n if (staveOptions.endKeySig) {\n stave.setEndKeySignature(staveOptions.endKeySig);\n }\n if (staveOptions.endTimeSig) {\n stave.setEndTimeSignature(staveOptions.endTimeSig);\n }\n return f.MultiMeasureRest(mmrestParams).setStave(stave);\n });\n f.draw();\n ok(true, 'Stave with modifiers Test');\n}\nVexFlowTests.register(MultiMeasureRestTests);\nexport { MultiMeasureRestTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Music Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { KeyManager } from '../src/keymanager';\nimport { Music } from '../src/music';\nconst MusicTests = {\n Start() {\n QUnit.module('MusicTests');\n test('Valid Notes', validNotes);\n test('Valid Keys', validKeys);\n test('Note Values', noteValue);\n test('Interval Values', intervalValue);\n test('Relative Notes', relativeNotes);\n test('Relative Note Names', relativeNoteNames);\n test('Canonical Notes', canonicalNotes);\n test('Canonical Intervals', canonicalIntervals);\n test('Scale Tones', scaleTones);\n test('Scale Intervals', scaleIntervals);\n },\n};\nfunction validNotes() {\n expect(10);\n const music = new Music();\n let parts = music.getNoteParts('c');\n equal(parts.root, 'c');\n equal(parts.accidental, null);\n // getNoteParts() converts its argument to lowercase.\n parts = music.getNoteParts('C');\n equal(parts.root, 'c');\n equal(parts.accidental, null);\n parts = music.getNoteParts('c#');\n equal(parts.root, 'c');\n equal(parts.accidental, '#');\n parts = music.getNoteParts('c##');\n equal(parts.root, 'c');\n equal(parts.accidental, '##');\n throws(() => music.getNoteParts('r'), /BadArguments/, 'Invalid note: r');\n throws(() => music.getNoteParts(''), /BadArguments/, \"Invalid note: ''\");\n}\nfunction validKeys() {\n expect(18);\n const music = new Music();\n let parts = music.getKeyParts('c');\n equal(parts.root, 'c');\n equal(parts.accidental, null);\n equal(parts.type, 'M');\n parts = music.getKeyParts('d#');\n equal(parts.root, 'd');\n equal(parts.accidental, '#');\n equal(parts.type, 'M');\n parts = music.getKeyParts('fbm');\n equal(parts.root, 'f');\n equal(parts.accidental, 'b');\n equal(parts.type, 'm');\n parts = music.getKeyParts('c#mel');\n equal(parts.root, 'c');\n equal(parts.accidental, '#');\n equal(parts.type, 'mel');\n parts = music.getKeyParts('g#harm');\n equal(parts.root, 'g');\n equal(parts.accidental, '#');\n equal(parts.type, 'harm');\n throws(() => music.getKeyParts('r'), /BadArguments/, 'Invalid key: r');\n throws(() => music.getKeyParts(''), /BadArguments/, `Invalid key: ''`);\n throws(() => music.getKeyParts('#m'), /BadArguments/, 'Invalid key: #m');\n}\nfunction noteValue() {\n expect(3);\n const music = new Music();\n let note = music.getNoteValue('c');\n equal(note, 0);\n throws(() => music.getNoteValue('r'), /BadArguments/, 'Invalid note name');\n note = music.getNoteValue('f#');\n equal(note, 6);\n}\nfunction intervalValue() {\n expect(2);\n const music = new Music();\n const value = music.getIntervalValue('b2');\n equal(value, 1);\n throws(() => music.getIntervalValue('7'), /BadArguments/, 'Invalid interval name');\n}\nfunction relativeNotes() {\n expect(8);\n const music = new Music();\n let value = music.getRelativeNoteValue(music.getNoteValue('c'), music.getIntervalValue('b5'));\n equal(value, 6);\n throws(() => music.getRelativeNoteValue(music.getNoteValue('bc'), music.getIntervalValue('b2')), /BadArguments/, 'Invalid note');\n throws(() => music.getRelativeNoteValue(music.getNoteValue('b'), music.getIntervalValue('p3')), /BadArguments/, 'Invalid interval');\n // Direction\n value = music.getRelativeNoteValue(music.getNoteValue('d'), music.getIntervalValue('2'), -1);\n equal(value, 0);\n throws(() => music.getRelativeNoteValue(music.getNoteValue('b'), music.getIntervalValue('p4'), 0), /BadArguments/, 'Invalid direction: 0');\n // Rollover\n value = music.getRelativeNoteValue(music.getNoteValue('b'), music.getIntervalValue('b5'));\n equal(value, 5);\n // Reverse rollover\n value = music.getRelativeNoteValue(music.getNoteValue('c'), music.getIntervalValue('b2'), -1);\n equal(value, 11);\n // Practical tests\n value = music.getRelativeNoteValue(music.getNoteValue('g'), music.getIntervalValue('p5'));\n equal(value, 2);\n}\nfunction relativeNoteNames() {\n expect(9);\n const music = new Music();\n equal(music.getRelativeNoteName('b', music.getNoteValue('c#')), 'b##');\n equal(music.getRelativeNoteName('c', music.getNoteValue('c')), 'c');\n equal(music.getRelativeNoteName('c', music.getNoteValue('db')), 'c#');\n equal(music.getRelativeNoteName('c', music.getNoteValue('b')), 'cb');\n equal(music.getRelativeNoteName('c#', music.getNoteValue('db')), 'c#');\n equal(music.getRelativeNoteName('e', music.getNoteValue('f#')), 'e##');\n equal(music.getRelativeNoteName('e', music.getNoteValue('d#')), 'eb');\n equal(music.getRelativeNoteName('e', music.getNoteValue('fb')), 'e');\n throws(() => music.getRelativeNoteName('e', music.getNoteValue('g#')), /BadArguments/, 'Too far away. Notes not related.');\n}\nfunction canonicalNotes() {\n expect(3);\n const music = new Music();\n equal(music.getCanonicalNoteName(0), 'c');\n equal(music.getCanonicalNoteName(2), 'd');\n throws(() => music.getCanonicalNoteName(-1), /BadArguments/, 'Invalid note value');\n}\nfunction canonicalIntervals() {\n expect(3);\n const music = new Music();\n equal(music.getCanonicalIntervalName(0), 'unison');\n equal(music.getCanonicalIntervalName(2), 'M2');\n throws(() => music.getCanonicalIntervalName(-1), /BadArguments/, 'Invalid interval value');\n}\nfunction scaleTones() {\n expect(24);\n // C Major\n const music = new Music();\n const manager = new KeyManager('CM');\n const c_major = music.getScaleTones(music.getNoteValue('c'), Music.scales.major);\n let values = ['c', 'd', 'e', 'f', 'g', 'a', 'b'];\n equal(c_major.length, 7);\n for (let i = 0; i < c_major.length; ++i) {\n equal(music.getCanonicalNoteName(c_major[i]), values[i]);\n }\n // Dorian\n const c_dorian = music.getScaleTones(music.getNoteValue('c'), Music.scales.dorian);\n values = ['c', 'd', 'eb', 'f', 'g', 'a', 'bb'];\n let note = null;\n equal(c_dorian.length, 7);\n for (let i = 0; i < c_dorian.length; ++i) {\n note = music.getCanonicalNoteName(c_dorian[i]);\n equal(manager.selectNote(note).note, values[i]);\n }\n // Mixolydian\n const c_mixolydian = music.getScaleTones(music.getNoteValue('c'), Music.scales.mixolydian);\n values = ['c', 'd', 'e', 'f', 'g', 'a', 'bb'];\n equal(c_mixolydian.length, 7);\n for (let i = 0; i < c_mixolydian.length; ++i) {\n note = music.getCanonicalNoteName(c_mixolydian[i]);\n equal(manager.selectNote(note).note, values[i]);\n }\n}\nfunction scaleIntervals() {\n expect(6);\n const m = new Music();\n equal(m.getCanonicalIntervalName(m.getIntervalBetween(m.getNoteValue('c'), m.getNoteValue('d'))), 'M2');\n equal(m.getCanonicalIntervalName(m.getIntervalBetween(m.getNoteValue('g'), m.getNoteValue('c'))), 'p4');\n equal(m.getCanonicalIntervalName(m.getIntervalBetween(m.getNoteValue('c'), m.getNoteValue('c'))), 'unison');\n equal(m.getCanonicalIntervalName(m.getIntervalBetween(m.getNoteValue('f'), m.getNoteValue('cb'))), 'dim5');\n // Forwards and backwards\n equal(m.getCanonicalIntervalName(m.getIntervalBetween(m.getNoteValue('d'), m.getNoteValue('c'), 1)), 'b7');\n equal(m.getCanonicalIntervalName(m.getIntervalBetween(m.getNoteValue('d'), m.getNoteValue('c'), -1)), 'M2');\n}\nVexFlowTests.register(MusicTests);\nexport { MusicTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// NoteHead Tests\n// TODO: There is a bug in RenderContext.scale(). The CanvasContext works as expected.\n// Each time you call scale(sx, sy), it multiplies the sx and sy by the currently stored scale.\n// The SVGContext operates differently. It just sets the sx and sy as the new scale, instead of multiplying it.\n// See: https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/scale\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Flow } from '../src/flow';\nimport { Formatter } from '../src/formatter';\nimport { NoteHead } from '../src/notehead';\nimport { Stave } from '../src/stave';\nimport { StaveNote } from '../src/stavenote';\nimport { TickContext } from '../src/tickcontext';\nimport { Voice } from '../src/voice';\nconst NoteHeadTests = {\n Start() {\n QUnit.module('NoteHead');\n const run = VexFlowTests.runTests;\n run('Basic', basic);\n run('Various Note Heads 1', variousNoteHeads);\n run('Various Note Heads 2', variousNoteHeads2);\n run('Various Heads', variousHeads);\n run('Drum Chord Heads', drumChordHeads);\n run('Bounding Boxes', basicBoundingBoxes);\n },\n};\nfunction setContextStyle(ctx) {\n // TODO: scale() method in SVGContext and CanvasContext should work similarly!\n // The final scale should be 1.8.\n // ctx.scale(0.9, 0.9);\n // ctx.scale(2.0, 2.0);\n ctx.scale(1.8, 1.8);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n ctx.font = '10pt Arial';\n}\nfunction basic(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 450, 250);\n setContextStyle(ctx);\n const stave = new Stave(10, 0, 250).addClef('treble');\n stave.setContext(ctx).draw();\n const formatter = new Formatter();\n const voice = new Voice(Flow.TIME4_4).setStrict(false);\n const note_head1 = new NoteHead({ duration: '4', line: 3 });\n const note_head2 = new NoteHead({ duration: '1', line: 2.5 });\n const note_head3 = new NoteHead({ duration: '2', line: 0 });\n voice.addTickables([note_head1, note_head2, note_head3]);\n formatter.joinVoices([voice]).formatToStave([voice], stave);\n voice.draw(ctx, stave);\n ok('Basic NoteHead test');\n}\n/**\n * Used by the next two test cases to draw a note.\n */\nfunction showNote(noteStruct, stave, ctx, x) {\n const note = new StaveNote(noteStruct).setStave(stave);\n new TickContext().addTickable(note).preFormat().setX(x);\n note.setContext(ctx).draw();\n return note;\n}\nfunction variousHeads(options, contextBuilder) {\n const notes = [\n { keys: ['g/5/d0'], duration: '4' },\n { keys: ['g/5/d1'], duration: '4' },\n { keys: ['g/5/d2'], duration: '4' },\n { keys: ['g/5/d3'], duration: '4' },\n { keys: ['x/'], duration: '1' },\n { keys: ['g/5/t0'], duration: '1' },\n { keys: ['g/5/t1'], duration: '4' },\n { keys: ['g/5/t2'], duration: '4' },\n { keys: ['g/5/t3'], duration: '4' },\n { keys: ['x/'], duration: '1' },\n { keys: ['g/5/x0'], duration: '1' },\n { keys: ['g/5/x1'], duration: '4' },\n { keys: ['g/5/x2'], duration: '4' },\n { keys: ['g/5/x3'], duration: '4' },\n { keys: ['x/'], duration: '1' },\n { keys: ['g/5/s1'], duration: '4' },\n { keys: ['g/5/s2'], duration: '4' },\n { keys: ['x/'], duration: '1' },\n { keys: ['g/5/r1'], duration: '4' },\n { keys: ['g/5/r2'], duration: '4' },\n ];\n const ctx = contextBuilder(options.elementId, notes.length * 25 + 100, 240);\n // Draw two staves, one with up-stems and one with down-stems.\n for (let staveNum = 0; staveNum < 2; ++staveNum) {\n const stave = new Stave(10, 10 + staveNum * 120, notes.length * 25 + 75)\n .addClef('percussion')\n .setContext(ctx)\n .draw();\n for (let i = 0; i < notes.length; ++i) {\n const note = notes[i];\n note.stem_direction = staveNum === 0 ? -1 : 1;\n const staveNote = showNote(note, stave, ctx, (i + 1) * 25);\n ok(staveNote.getX() > 0, 'Note ' + i + ' has X value');\n ok(staveNote.getYs().length > 0, 'Note ' + i + ' has Y values');\n }\n }\n}\nfunction variousNoteHeads(options, contextBuilder) {\n const notes = [\n { keys: ['g/5/d'], duration: '1/2' },\n { keys: ['g/5/d'], duration: '1' },\n { keys: ['g/5/d'], duration: '2' },\n { keys: ['g/5/d'], duration: '4' },\n { keys: ['x/'], duration: '1' },\n { keys: ['g/5/x'], duration: '1/2' },\n { keys: ['g/5/x'], duration: '1' },\n { keys: ['g/5/x'], duration: '2' },\n { keys: ['g/5/x'], duration: '4' },\n { keys: ['x/'], duration: '1' },\n { keys: ['g/5/cx'], duration: '1/2' },\n { keys: ['g/5/cx'], duration: '1' },\n { keys: ['g/5/cx'], duration: '2' },\n { keys: ['g/5/cx'], duration: '4' },\n { keys: ['x/'], duration: '1' },\n { keys: ['g/5/tu'], duration: '1/2' },\n { keys: ['g/5/tu'], duration: '1' },\n { keys: ['g/5/tu'], duration: '2' },\n { keys: ['g/5/tu'], duration: '4' },\n { keys: ['x/'], duration: '1' },\n { keys: ['g/5/td'], duration: '1/2' },\n { keys: ['g/5/td'], duration: '1' },\n { keys: ['g/5/td'], duration: '2' },\n { keys: ['g/5/td'], duration: '4' },\n { keys: ['x/'], duration: '1' },\n { keys: ['g/5/sf'], duration: '1/2' },\n { keys: ['g/5/sf'], duration: '1' },\n { keys: ['g/5/sf'], duration: '2' },\n { keys: ['g/5/sf'], duration: '4' },\n { keys: ['x/'], duration: '1' },\n { keys: ['g/5/sb'], duration: '1/2' },\n { keys: ['g/5/sb'], duration: '1' },\n { keys: ['g/5/sb'], duration: '2' },\n { keys: ['g/5/sb'], duration: '4' },\n { keys: ['x/'], duration: '1' },\n { keys: ['g/5/ci'], duration: '1/2' },\n { keys: ['g/5/ci'], duration: '1' },\n { keys: ['g/5/ci'], duration: '2' },\n { keys: ['g/5/ci'], duration: '4' },\n { keys: ['x/'], duration: '1' },\n { keys: ['g/5/sq'], duration: '1/2' },\n { keys: ['g/5/sq'], duration: '1' },\n { keys: ['g/5/sq'], duration: '2' },\n { keys: ['g/5/sq'], duration: '4' },\n { keys: ['x/'], duration: '1' },\n ];\n const ctx = contextBuilder(options.elementId, notes.length * 25 + 100, 240);\n // Draw two staves, one with up-stems and one with down-stems.\n for (let staveNum = 0; staveNum < 2; ++staveNum) {\n const stave = new Stave(10, 10 + staveNum * 120, notes.length * 25 + 75)\n .addClef('percussion')\n .setContext(ctx)\n .draw();\n for (let i = 0; i < notes.length; ++i) {\n const note = notes[i];\n note.stem_direction = staveNum === 0 ? -1 : 1;\n const staveNote = showNote(note, stave, ctx, (i + 1) * 25);\n ok(staveNote.getX() > 0, 'Note ' + i + ' has X value');\n ok(staveNote.getYs().length > 0, 'Note ' + i + ' has Y values');\n }\n }\n}\nfunction variousNoteHeads2(options, contextBuilder) {\n const notes = [\n { keys: ['g/5/do'], duration: '4', auto_stem: true },\n { keys: ['g/5/re'], duration: '4', auto_stem: true },\n { keys: ['g/5/mi'], duration: '4', auto_stem: true },\n { keys: ['g/5/fa'], duration: '4', auto_stem: true },\n { keys: ['e/4/faup'], duration: '4', auto_stem: true },\n { keys: ['g/5/so'], duration: '4', auto_stem: true },\n { keys: ['g/5/la'], duration: '4', auto_stem: true },\n { keys: ['g/5/ti'], duration: '4', auto_stem: true },\n ];\n const ctx = contextBuilder(options.elementId, notes.length * 25 + 100, 240);\n const stave = new Stave(10, 10, notes.length * 25 + 75).addClef('percussion').setContext(ctx).draw();\n for (let i = 0; i < notes.length; ++i) {\n const note = notes[i];\n const staveNote = showNote(note, stave, ctx, (i + 1) * 25);\n ok(staveNote.getX() > 0, 'Note ' + i + ' has X value');\n ok(staveNote.getYs().length > 0, 'Note ' + i + ' has Y values');\n }\n}\nfunction drumChordHeads(options, contextBuilder) {\n const notes = [\n { keys: ['a/4/d0', 'g/5/x3'], duration: '4' },\n { keys: ['a/4/x3', 'g/5/d0'], duration: '4' },\n { keys: ['a/4/d1', 'g/5/x2'], duration: '4' },\n { keys: ['a/4/x2', 'g/5/d1'], duration: '4' },\n { keys: ['a/4/d2', 'g/5/x1'], duration: '4' },\n { keys: ['a/4/x1', 'g/5/d2'], duration: '4' },\n { keys: ['a/4/d3', 'g/5/x0'], duration: '4' },\n { keys: ['a/4/x0', 'g/5/d3'], duration: '4' },\n { keys: ['a/4', 'g/5/d0'], duration: '4' },\n { keys: ['a/4/x3', 'g/5'], duration: '4' },\n { keys: ['a/4/t0', 'g/5/s1'], duration: '4' },\n { keys: ['a/4/s1', 'g/5/t0'], duration: '4' },\n { keys: ['a/4/t1', 'g/5/s2'], duration: '4' },\n { keys: ['a/4/s2', 'g/5/t1'], duration: '4' },\n { keys: ['a/4/t2', 'g/5/r1'], duration: '4' },\n { keys: ['a/4/r1', 'g/5/t2'], duration: '4' },\n { keys: ['a/4/t3', 'g/5/r2'], duration: '4' },\n { keys: ['a/4/r2', 'g/5/t3'], duration: '4' },\n ];\n const ctx = contextBuilder(options.elementId, notes.length * 25 + 100, 240);\n // Draw two staves, one with up-stems and one with down-stems.\n for (let h = 0; h < 2; ++h) {\n const stave = new Stave(10, 10 + h * 120, notes.length * 25 + 75).addClef('percussion').setContext(ctx).draw();\n for (let i = 0; i < notes.length; ++i) {\n const note = notes[i];\n note.stem_direction = h === 0 ? -1 : 1;\n const staveNote = showNote(note, stave, ctx, (i + 1) * 25);\n ok(staveNote.getX() > 0, 'Note ' + i + ' has X value');\n ok(staveNote.getYs().length > 0, 'Note ' + i + ' has Y values');\n }\n }\n}\nfunction basicBoundingBoxes(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 450, 250);\n setContextStyle(ctx);\n // 250 is 450/1.8\n const stave = new Stave(10, 0, 250).addClef('treble');\n stave.setContext(ctx).draw();\n const formatter = new Formatter();\n const voice = new Voice(Flow.TIME4_4).setStrict(false);\n const nh1 = new NoteHead({ duration: '4', line: 3 });\n const nh2 = new NoteHead({ duration: '2', line: 2.5 });\n const nh3 = new NoteHead({ duration: '1', line: 0 });\n voice.addTickables([nh1, nh2, nh3]);\n formatter.joinVoices([voice]).formatToStave([voice], stave);\n voice.draw(ctx, stave);\n for (const bb of [nh1.getBoundingBox(), nh2.getBoundingBox(), nh3.getBoundingBox()]) {\n ctx.rect(bb.getX(), bb.getY(), bb.getW(), bb.getH());\n }\n ctx.stroke();\n ok('NoteHead Bounding Boxes');\n}\nVexFlowTests.register(NoteHeadTests);\nexport { NoteHeadTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// Author: Taehoon Moon 2016\n//\n// NoteSubGroup Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { BarNote } from '../src/barnote';\nimport { Note } from '../src/note';\nimport { BarlineType } from '../src/stavebarline';\nconst NoteSubGroupTests = {\n Start() {\n QUnit.module('NoteSubGroup');\n const run = VexFlowTests.runTests;\n run('Basic - ClefNote, TimeSigNote and BarNote', basic);\n run('Multi Voice', multiVoiceSingleDraw);\n run('Multi Voice Multiple Draws', multiVoiceDoubleDraw);\n run('Multi Staff', multiStaff);\n },\n};\n// Return three helper functions for creating StaveNotes, and adding Accidental & NoteSubGroup to those StaveNotes.\nfunction createShortcuts(f) {\n return {\n createStaveNote: (noteStruct) => f.StaveNote(noteStruct),\n addAccidental: (note, accid) => note.addModifier(f.Accidental({ type: accid }), 0),\n addSubGroup: (note, subNotes) => note.addModifier(f.NoteSubGroup({ notes: subNotes }), 0),\n };\n}\nfunction basic(options) {\n const f = VexFlowTests.makeFactory(options, 750, 200);\n const ctx = f.getContext();\n const stave = f.Stave({ width: 600 }).addClef('treble');\n const { createStaveNote, addAccidental, addSubGroup } = createShortcuts(f);\n const notes = [\n { keys: ['f/5'], stem_direction: -1, duration: '4' },\n { keys: ['d/4'], stem_direction: -1, duration: '4', clef: 'bass' },\n { keys: ['g/4'], stem_direction: -1, duration: '4', clef: 'alto' },\n { keys: ['a/4'], stem_direction: -1, duration: '4', clef: 'alto' },\n { keys: ['c/4'], stem_direction: -1, duration: '4', clef: 'tenor' },\n { keys: ['c/3'], stem_direction: +1, duration: '4', clef: 'tenor' },\n { keys: ['d/4'], stem_direction: -1, duration: '4', clef: 'tenor' },\n { keys: ['f/4'], stem_direction: -1, duration: '4', clef: 'tenor' },\n ].map(createStaveNote);\n addAccidental(notes[1], '#');\n addAccidental(notes[2], 'n');\n addSubGroup(notes[1], [f.ClefNote({ type: 'bass', options: { size: 'small' } })]);\n addSubGroup(notes[2], [f.ClefNote({ type: 'alto', options: { size: 'small' } })]);\n addSubGroup(notes[4], [f.ClefNote({ type: 'tenor', options: { size: 'small' } }), new BarNote()]);\n addSubGroup(notes[5], [f.TimeSigNote({ time: '6/8' })]);\n addSubGroup(notes[6], [new BarNote(BarlineType.REPEAT_BEGIN)]);\n addAccidental(notes[4], 'b');\n addAccidental(notes[6], 'bb');\n const voice = f.Voice().setStrict(false).addTickables(notes);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n notes.forEach((note) => Note.plotMetrics(ctx, note, 150));\n VexFlowTests.plotLegendForNoteWidth(ctx, 620, 120);\n ok(true, 'all pass');\n}\nfunction multiVoiceSingleDraw(options) {\n multiVoiceHelper(options, 1);\n}\n/**\n * Call Factory.draw() twice. It should look identical to the multiVoice test case above.\n */\nfunction multiVoiceDoubleDraw(options) {\n multiVoiceHelper(options, 2);\n}\n/**\n * Used by multiVoiceSingleDraw and multiVoiceDoubleDraw above.\n */\nfunction multiVoiceHelper(options, numDraws) {\n const f = VexFlowTests.makeFactory(options, 550, 200);\n const ctx = f.getContext();\n const stave = f.Stave().addClef('treble');\n const { createStaveNote, addAccidental, addSubGroup } = createShortcuts(f);\n const notes1 = [\n { keys: ['f/5'], stem_direction: 1, duration: '4' },\n { keys: ['d/4'], stem_direction: 1, duration: '4', clef: 'bass' },\n { keys: ['c/5'], stem_direction: 1, duration: '4', clef: 'alto' },\n { keys: ['c/5'], stem_direction: 1, duration: '4', clef: 'soprano' },\n ].map(createStaveNote);\n const notes2 = [\n { keys: ['c/4'], stem_direction: -1, duration: '4' },\n { keys: ['c/3'], stem_direction: -1, duration: '4', clef: 'bass' },\n { keys: ['d/4'], stem_direction: -1, duration: '4', clef: 'alto' },\n { keys: ['f/4'], stem_direction: -1, duration: '4', clef: 'soprano' },\n ].map(createStaveNote);\n addAccidental(notes1[1], '#');\n addSubGroup(notes1[1], [\n f.ClefNote({ type: 'bass', options: { size: 'small' } }),\n new BarNote(BarlineType.REPEAT_BEGIN),\n f.TimeSigNote({ time: '3/4' }),\n ]);\n addSubGroup(notes2[2], [\n f.ClefNote({ type: 'alto', options: { size: 'small' } }),\n f.TimeSigNote({ time: '9/8' }),\n new BarNote(BarlineType.DOUBLE),\n ]);\n addSubGroup(notes1[3], [f.ClefNote({ type: 'soprano', options: { size: 'small' } })]);\n addAccidental(notes1[2], 'b');\n addAccidental(notes2[3], '#');\n const voices = [f.Voice().addTickables(notes1), f.Voice().addTickables(notes2)];\n f.Formatter().joinVoices(voices).formatToStave(voices, stave);\n for (let i = 0; i < numDraws; i++) {\n f.draw();\n }\n notes1.forEach((note) => Note.plotMetrics(ctx, note, 150));\n ok(true, 'all pass');\n}\nfunction multiStaff(options) {\n const f = VexFlowTests.makeFactory(options, 550, 400);\n const { createStaveNote, addAccidental, addSubGroup } = createShortcuts(f);\n const stave1 = f.Stave({ x: 15, y: 30, width: 500 }).setClef('treble');\n const notes1 = [\n { keys: ['f/5'], stem_direction: 1, duration: '4' },\n { keys: ['d/4'], stem_direction: 1, duration: '4', clef: 'bass' },\n { keys: ['c/5'], stem_direction: 1, duration: '4', clef: 'alto' },\n { keys: ['c/5'], stem_direction: 1, duration: '4', clef: 'soprano' },\n ].map(createStaveNote);\n const notes2 = [\n { keys: ['c/4'], stem_direction: -1, duration: '4' },\n { keys: ['c/3'], stem_direction: -1, duration: '4', clef: 'bass' },\n { keys: ['d/4'], stem_direction: -1, duration: '4', clef: 'alto' },\n { keys: ['f/4'], stem_direction: -1, duration: '4', clef: 'soprano' },\n ].map(createStaveNote);\n const stave2 = f.Stave({ x: 15, y: 150, width: 500 }).setClef('bass');\n const notes3 = [\n { keys: ['e/3'], duration: '8', stem_direction: -1, clef: 'bass' },\n { keys: ['g/4'], duration: '8', stem_direction: 1, clef: 'treble' },\n { keys: ['d/4'], duration: '8', stem_direction: 1, clef: 'treble' },\n { keys: ['f/4'], duration: '8', stem_direction: 1, clef: 'treble' },\n { keys: ['c/4'], duration: '8', stem_direction: 1, clef: 'treble' },\n { keys: ['g/3'], duration: '8', stem_direction: -1, clef: 'bass' },\n { keys: ['d/3'], duration: '8', stem_direction: -1, clef: 'bass' },\n { keys: ['f/3'], duration: '8', stem_direction: -1, clef: 'bass' },\n ].map(createStaveNote);\n f.StaveConnector({ top_stave: stave1, bottom_stave: stave2, type: 'brace' });\n f.StaveConnector({ top_stave: stave1, bottom_stave: stave2, type: 'singleLeft' });\n f.StaveConnector({ top_stave: stave1, bottom_stave: stave2, type: 'singleRight' });\n f.Beam({ notes: notes3.slice(1, 4) });\n f.Beam({ notes: notes3.slice(5) });\n addAccidental(notes1[1], '#');\n addSubGroup(notes1[1], [f.ClefNote({ type: 'bass', options: { size: 'small' } }), f.TimeSigNote({ time: '3/4' })]);\n addSubGroup(notes2[2], [f.ClefNote({ type: 'alto', options: { size: 'small' } }), f.TimeSigNote({ time: '9/8' })]);\n addSubGroup(notes1[3], [f.ClefNote({ type: 'soprano', options: { size: 'small' } })]);\n addSubGroup(notes3[1], [f.ClefNote({ type: 'treble', options: { size: 'small' } })]);\n addSubGroup(notes3[5], [f.ClefNote({ type: 'bass', options: { size: 'small' } })]);\n addAccidental(notes3[0], '#');\n addAccidental(notes3[3], 'b');\n addAccidental(notes3[5], '#');\n addAccidental(notes1[2], 'b');\n addAccidental(notes2[3], '#');\n const voice1 = f.Voice().addTickables(notes1);\n const voice2 = f.Voice().addTickables(notes2);\n const voice3 = f.Voice().addTickables(notes3);\n f.Formatter().joinVoices([voice1, voice2]).joinVoices([voice3]).formatToStave([voice1, voice2, voice3], stave1);\n f.draw();\n ok(true, 'all pass');\n}\nVexFlowTests.register(NoteSubGroupTests);\nexport { NoteSubGroupTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2021.\n// MIT License\n//\n// OffscreenCanvas Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { CanvasContext } from '../src/canvascontext';\nimport { Formatter } from '../src/formatter';\nimport { Stave } from '../src/stave';\nimport { BarlineType } from '../src/stavebarline';\nimport { StaveNote } from '../src/stavenote';\nimport { globalObject } from '../src/util';\nconst OffscreenCanvasTests = {\n Start() {\n // At the time of writing, OffscreenCanvas is still an experimental technology.\n if (globalObject().OffscreenCanvas === undefined) {\n return;\n }\n QUnit.module('OffscreenCanvas');\n test('Simple Test', simpleTest);\n },\n};\nfunction simpleTest() {\n // Create a CanvasContext from an OffscreenCanvas.\n // eslint-disable-next-line\n // @ts-ignore\n const offscreenCanvas = new OffscreenCanvas(550, 200);\n const offscreenCtx = offscreenCanvas.getContext('2d');\n if (offscreenCtx == null) {\n throw new Error(\"Couldn't create offscreen context\");\n }\n const ctx = new CanvasContext(offscreenCtx);\n // Render to the OffscreenCavans.\n const stave = new Stave(10, 50, 200);\n stave.setEndBarType(BarlineType.END);\n stave.addClef('treble').setContext(ctx).draw();\n const notes = [\n new StaveNote({ keys: ['c/4'], duration: 'q' }),\n new StaveNote({ keys: ['d/4'], duration: 'q' }),\n new StaveNote({ keys: ['b/4'], duration: 'qr' }),\n new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: 'q' }),\n ];\n Formatter.FormatAndDraw(ctx, stave, notes);\n // Copy the contents of the OffscreenCanvas to an HTMLCanvasElement.\n const imgBmp = offscreenCanvas.transferToImageBitmap();\n const canvas = document.createElement('canvas');\n canvas.width = offscreenCanvas.width;\n canvas.height = offscreenCanvas.height;\n const canvasCtx = canvas.getContext('2d');\n if (canvasCtx == null) {\n throw new Error(\"Couldn't create canvas context\");\n }\n canvasCtx.drawImage(imgBmp, 0, 0);\n document.body.appendChild(canvas);\n ok(true, 'all pass');\n}\nVexFlowTests.register(OffscreenCanvasTests);\nexport { OffscreenCanvasTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// Author: Cyril Silverman\n//\n// Ornament Tests\n// TODO: Formatting for Jazz Ornaments is incorrect. The last note + ornament bleeds into the next measure.\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Accidental } from '../src/accidental';\nimport { Beam } from '../src/beam';\nimport { Dot } from '../src/dot';\nimport { Formatter } from '../src/formatter';\nimport { Glyph } from '../src/glyph';\nimport { Ornament } from '../src/ornament';\nimport { Stave } from '../src/stave';\nimport { StaveNote } from '../src/stavenote';\nimport { Voice, VoiceMode } from '../src/voice';\nconst OrnamentTests = {\n Start() {\n QUnit.module('Ornament');\n const run = VexFlowTests.runTests;\n run('Ornaments', drawOrnaments);\n run('Ornaments Vertically Shifted', drawOrnamentsDisplaced);\n run('Ornaments - Delayed turns', drawOrnamentsDelayed);\n run('Ornaments - Delayed turns, Multiple Draws', drawOrnamentsDelayedMultipleDraws);\n run('Stacked', drawOrnamentsStacked);\n run('With Upper/Lower Accidentals', drawOrnamentsWithAccidentals);\n run('Jazz Ornaments', jazzOrnaments);\n },\n};\nfunction drawOrnaments(options, contextBuilder) {\n expect(0);\n // Get the rendering context\n const ctx = contextBuilder(options.elementId, 750, 195);\n const stave = new Stave(10, 30, 700);\n stave.setContext(ctx).draw();\n const notes = [\n new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n ];\n notes[0].addModifier(new Ornament('mordent'), 0);\n notes[1].addModifier(new Ornament('mordent_inverted'), 0);\n notes[2].addModifier(new Ornament('turn'), 0);\n notes[3].addModifier(new Ornament('turn_inverted'), 0);\n notes[4].addModifier(new Ornament('tr'), 0);\n notes[5].addModifier(new Ornament('upprall'), 0);\n notes[6].addModifier(new Ornament('downprall'), 0);\n notes[7].addModifier(new Ornament('prallup'), 0);\n notes[8].addModifier(new Ornament('pralldown'), 0);\n notes[9].addModifier(new Ornament('upmordent'), 0);\n notes[10].addModifier(new Ornament('downmordent'), 0);\n notes[11].addModifier(new Ornament('lineprall'), 0);\n notes[12].addModifier(new Ornament('prallprall'), 0);\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, stave, notes);\n}\nfunction drawOrnamentsDisplaced(options, contextBuilder) {\n expect(0);\n // Get the rendering context\n const ctx = contextBuilder(options.elementId, 750, 195);\n const stave = new Stave(10, 30, 700);\n stave.setContext(ctx).draw();\n const notes = [\n new StaveNote({ keys: ['a/5'], duration: '4', stem_direction: -1 }),\n new StaveNote({ keys: ['a/5'], duration: '4', stem_direction: -1 }),\n new StaveNote({ keys: ['a/5'], duration: '4', stem_direction: -1 }),\n new StaveNote({ keys: ['a/5'], duration: '4', stem_direction: -1 }),\n new StaveNote({ keys: ['a/5'], duration: '4', stem_direction: -1 }),\n new StaveNote({ keys: ['a/5'], duration: '4', stem_direction: -1 }),\n new StaveNote({ keys: ['a/5'], duration: '4', stem_direction: -1 }),\n new StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }),\n new StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }),\n new StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }),\n new StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }),\n new StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }),\n new StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }),\n ];\n notes[0].addModifier(new Ornament('mordent'), 0);\n notes[1].addModifier(new Ornament('mordent_inverted'), 0);\n notes[1].addModifier(new Ornament('mordent_inverted'), 0);\n notes[2].addModifier(new Ornament('turn'), 0);\n notes[3].addModifier(new Ornament('turn_inverted'), 0);\n notes[4].addModifier(new Ornament('tr'), 0);\n notes[5].addModifier(new Ornament('upprall'), 0);\n notes[6].addModifier(new Ornament('downprall'), 0);\n notes[7].addModifier(new Ornament('prallup'), 0);\n notes[8].addModifier(new Ornament('pralldown'), 0);\n notes[9].addModifier(new Ornament('upmordent'), 0);\n notes[10].addModifier(new Ornament('downmordent'), 0);\n notes[11].addModifier(new Ornament('lineprall'), 0);\n notes[12].addModifier(new Ornament('prallprall'), 0);\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, stave, notes);\n}\n/**\n * Helper function for the next two tests: drawOrnamentsDelayed and drawOrnamentsDelayedMultipleDraws.\n * setDelayed(true) shifts the turn symbol to the right (after its note).\n */\nconst addDelayedTurns = (f) => {\n // Get the rendering context\n const context = f.getContext();\n const stave = f.Stave({ x: 10, y: 30, width: 500 });\n stave.setContext(context).draw();\n const notes = [\n f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }),\n f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }),\n f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }),\n f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }),\n ];\n notes[0].addModifier(f.Ornament('turn', { delayed: true }), 0);\n notes[1].addModifier(f.Ornament('turn_inverted', { delayed: true }), 0);\n notes[2].addModifier(f.Ornament('turn_inverted', { delayed: true }), 0);\n notes[3].addModifier(f.Ornament('turn', { delayed: true }), 0);\n return { context, stave, notes };\n};\nfunction drawOrnamentsDelayed(options) {\n expect(0);\n const f = VexFlowTests.makeFactory(options, 550, 195);\n const { context, stave, notes } = addDelayedTurns(f);\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(context, stave, notes);\n}\nfunction drawOrnamentsDelayedMultipleDraws(options) {\n expect(0);\n const f = VexFlowTests.makeFactory(options, 550, 195);\n const { context, stave, notes } = addDelayedTurns(f);\n // We can FormatAndDraw() two times, and it looks fine.\n // However, if you inspect the SVG element, you will see duplicate paths.\n Formatter.FormatAndDraw(context, stave, notes);\n Formatter.FormatAndDraw(context, stave, notes);\n}\nfunction drawOrnamentsStacked(options) {\n expect(0);\n // Get the rendering context\n const f = VexFlowTests.makeFactory(options, 550, 195);\n const ctx = f.getContext();\n const stave = f.Stave({ x: 10, y: 30, width: 500 });\n stave.setContext(ctx).draw();\n const notes = [\n f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }),\n f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }),\n f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }),\n f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }),\n ];\n notes[0].addModifier(f.Ornament('mordent'), 0);\n notes[1].addModifier(f.Ornament('turn_inverted'), 0);\n notes[2].addModifier(f.Ornament('turn'), 0);\n notes[3].addModifier(f.Ornament('turn_inverted'), 0);\n notes[0].addModifier(f.Ornament('turn'), 0);\n notes[1].addModifier(f.Ornament('prallup'), 0);\n notes[2].addModifier(f.Ornament('upmordent'), 0);\n notes[3].addModifier(f.Ornament('lineprall'), 0);\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, stave, notes);\n}\nfunction drawOrnamentsWithAccidentals(options) {\n expect(0);\n // Get the rendering context\n const f = VexFlowTests.makeFactory(options, 650, 250);\n const ctx = f.getContext();\n const stave = f.Stave({ x: 10, y: 60, width: 600 });\n stave.setContext(ctx).draw();\n const notes = [\n f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }),\n ];\n notes[0].addModifier(f.Ornament('mordent', { lowerAccidental: '#', upperAccidental: '#' }), 0);\n notes[1].addModifier(f.Ornament('turn_inverted', { lowerAccidental: 'b', upperAccidental: 'b' }), 0);\n notes[2].addModifier(f.Ornament('turn', { upperAccidental: '##', lowerAccidental: '##' }), 0);\n notes[3].addModifier(f.Ornament('mordent_inverted', { lowerAccidental: 'db', upperAccidental: 'db' }), 0);\n notes[4].addModifier(f.Ornament('turn_inverted', { upperAccidental: '++', lowerAccidental: '++' }), 0);\n notes[5].addModifier(f.Ornament('tr', { upperAccidental: 'n', lowerAccidental: 'n' }), 0);\n notes[6].addModifier(f.Ornament('prallup', { upperAccidental: 'd', lowerAccidental: 'd' }), 0);\n notes[7].addModifier(f.Ornament('lineprall', { upperAccidental: 'db', lowerAccidental: 'db' }), 0);\n notes[8].addModifier(f.Ornament('upmordent', { upperAccidental: 'bbs', lowerAccidental: 'bbs' }), 0);\n notes[9].addModifier(f.Ornament('prallprall', { upperAccidental: 'bb', lowerAccidental: 'bb' }), 0);\n notes[10].addModifier(f.Ornament('turn_inverted', { upperAccidental: '+', lowerAccidental: '+' }), 0);\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, stave, notes);\n}\nfunction jazzOrnaments(options) {\n const clefWidth = Glyph.getWidth('gClef', 38); // widest clef\n // Helper function.\n function draw(modifiers, keys, x, width, y, stemDirection) {\n // Helper function to create a StaveNote.\n const note = (keys, duration, modifier, stemDirection) => {\n const n = new StaveNote({ keys, duration, stem_direction: stemDirection })\n .addModifier(modifier, 0)\n .addModifier(new Accidental('b'), 0);\n const dot = duration.indexOf('d') >= 0;\n if (dot) {\n Dot.buildAndAttach([n], { all: true });\n }\n return n;\n };\n const stave = new Stave(x, y, width).addClef('treble').setContext(ctx).draw();\n const notes = [\n note(keys, '4d', modifiers[0], stemDirection),\n note(keys, '8', modifiers[1], stemDirection),\n note(keys, '4d', modifiers[2], stemDirection),\n note(keys, '8', modifiers[3], stemDirection),\n ];\n if (modifiers.length > 4) {\n notes[3].addModifier(modifiers[4], 0);\n }\n Beam.generateBeams(notes);\n const voice = new Voice({\n num_beats: 4,\n beat_value: 4,\n }).setMode(VoiceMode.SOFT);\n voice.addTickables(notes);\n const formatter = new Formatter().joinVoices([voice]);\n formatter.format([voice], width - Stave.defaultPadding - clefWidth);\n stave.setContext(ctx).draw();\n voice.draw(ctx, stave);\n }\n expect(0);\n const f = VexFlowTests.makeFactory(options, 950, 400);\n const ctx = f.getContext();\n ctx.scale(1, 1);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n const xStart = 10;\n const width = 300;\n const yStart = 50;\n const staffHeight = 70;\n let curX = xStart;\n let curY = yStart;\n let mods = [\n // measure 1\n f.Ornament('scoop'),\n f.Ornament('doit'),\n f.Ornament('fall'),\n f.Ornament('doitLong'),\n ];\n draw(mods, ['a/5'], curX, width, curY, -1);\n curX += width;\n mods = [\n // measure 2\n f.Ornament('fallLong'),\n f.Ornament('bend'),\n f.Ornament('plungerClosed'),\n f.Ornament('plungerOpen'),\n f.Ornament('bend'),\n ];\n draw(mods, ['a/5'], curX, width, curY, -1);\n curX += width;\n mods = [\n // measure 3\n f.Ornament('flip'),\n f.Ornament('jazzTurn'),\n f.Ornament('smear'),\n f.Ornament('doit'),\n ];\n draw(mods, ['a/5'], curX, width, curY, 1);\n // second line\n curX = xStart;\n curY += staffHeight;\n mods = [\n // measure 4\n f.Ornament('scoop'),\n f.Ornament('doit'),\n f.Ornament('fall'),\n f.Ornament('doitLong'),\n ];\n draw(mods, ['e/5'], curX, width, curY);\n curX += width;\n mods = [\n // measure 5\n f.Ornament('fallLong'),\n f.Ornament('bend'),\n f.Ornament('plungerClosed'),\n f.Ornament('plungerOpen'),\n f.Ornament('bend'),\n ];\n draw(mods, ['e/5'], curX, width, curY);\n curX += width;\n mods = [\n // measure 6\n f.Ornament('flip'),\n f.Ornament('jazzTurn'),\n f.Ornament('smear'),\n f.Ornament('doit'),\n ];\n draw(mods, ['e/5'], curX, width, curY);\n // third line\n curX = xStart;\n curY += staffHeight;\n mods = [\n // measure 7\n f.Ornament('scoop'),\n f.Ornament('doit'),\n f.Ornament('fall'),\n f.Ornament('doitLong'),\n ];\n draw(mods, ['e/4'], curX, width, curY);\n curX += width;\n mods = [\n // measure 8\n f.Ornament('fallLong'),\n f.Ornament('bend'),\n f.Ornament('plungerClosed'),\n f.Ornament('plungerOpen'),\n f.Ornament('bend'),\n ];\n draw(mods, ['e/4'], curX, width, curY);\n curX += width;\n mods = [\n // measure 9\n f.Ornament('flip'),\n f.Ornament('jazzTurn'),\n f.Ornament('smear'),\n f.Ornament('doit'),\n ];\n draw(mods, ['e/4'], curX, width, curY);\n}\nVexFlowTests.register(OrnamentTests);\nexport { OrnamentTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Parser Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Parser } from '../src/parser';\nconst ParserTests = {\n Start() {\n QUnit.module('Parser');\n test('Basic', basic);\n test('Advanced', advanced);\n test('Mixed', mixed);\n test('Micro Score', microscore);\n },\n};\n/**\n * Grammar used in the first three test cases: basic, advanced, mixed.\n */\nclass TestGrammar {\n // The begin() function is the only requirement when implementing the Grammar interface.\n begin() {\n return () => ({ expect: this.expect });\n }\n BIGORLITTLE() {\n return { expect: [this.BIGLINE, this.LITTLELINE], or: true };\n }\n BIGLINE() {\n return { expect: [this.LBRACE, this.WORD, this.WORDS, this.MAYBEEXCLAIM, this.RBRACE] };\n }\n LITTLELINE() {\n return { expect: [this.WORD, this.WORDS] };\n }\n WORDS() {\n return { expect: [this.COMMA, this.WORD], zeroOrMore: true };\n }\n MAYBEEXCLAIM() {\n return { expect: [this.EXCLAIM], maybe: true };\n }\n LBRACE() {\n return { token: '[{]' };\n }\n RBRACE() {\n return { token: '[}]' };\n }\n WORD() {\n return { token: '[a-zA-Z]+' };\n }\n COMMA() {\n return { token: '[,]' };\n }\n EXCLAIM() {\n return { token: '[!]' };\n }\n EOL() {\n return { token: '$' };\n }\n}\n/**\n * Grammar used in the microscore test case.\n * It represents a series of piano key numbers (Middle C == 40) separated by whitespace.\n * C Major Scale => 40 42 44 45 47 49 51 52\n * A chord is 2 or more piano key numbers surrounded by BRACKETS and separated by PERIODS\n * C Major == [40.44.47]\n * C-major F-major G-major A-minor chord progression => [40.44.47] [45.49.52] [47.51.54] [49.52.56]\n */\nclass MicroScoreGrammar {\n constructor() {\n this.ITEM = () => ({ expect: [this.PIANO_KEY_NUMBER, this.CHORD], or: true });\n this.MAYBE_MORE_ITEMS = () => ({ expect: [this.ITEM], zeroOrMore: true });\n this.PIANO_KEY_NUMBER = () => ({ expect: [this.NUM], oneOrMore: true });\n this.CHORD = () => ({ expect: [this.LEFT_BRACKET, this.PIANO_KEY_NUMBER, this.MORE_CHORD_PARTS, this.RIGHT_BRACKET] });\n this.MORE_CHORD_PARTS = () => ({ expect: [this.PERIOD, this.PIANO_KEY_NUMBER], oneOrMore: true });\n this.NUM = () => ({ token: '\\\\d+' });\n this.WHITESPACE = () => ({ token: '\\\\s+' });\n this.PERIOD = () => ({ token: '\\\\.' });\n this.LEFT_BRACKET = () => ({ token: '\\\\[' });\n this.RIGHT_BRACKET = () => ({ token: '\\\\]' });\n this.EOL = () => ({ token: '$' });\n }\n begin() {\n return () => ({ expect: [this.ITEM, this.MAYBE_MORE_ITEMS, this.EOL] });\n }\n}\n/**\n * Check that the result is a parse failure, and verify the error position.\n */\nfunction fails(result, expectedErrorPos, msg) {\n notOk(result.success, msg);\n equal(result.errorPos, expectedErrorPos, msg);\n}\nfunction basic() {\n const grammar = new TestGrammar();\n grammar.expect = [grammar.LITTLELINE, grammar.EOL];\n const parser = new Parser(grammar);\n // Each of these strings will parse correctly.\n const mustPass = ['first, second', 'first,second', 'first', 'first,second, third'];\n mustPass.forEach((line) => equal(parser.parse(line).success, true, line));\n fails(parser.parse(''), 0);\n fails(parser.parse('first second'), 6);\n fails(parser.parse('first,,'), 5);\n fails(parser.parse('first,'), 5);\n fails(parser.parse(',,'), 0);\n}\nfunction advanced() {\n const grammar = new TestGrammar();\n grammar.expect = [grammar.BIGLINE, grammar.EOL];\n const parser = new Parser(grammar);\n const mustPass = ['{first}', '{first!}', '{first,second}', '{first,second!}', '{first,second,third!}'];\n mustPass.forEach((line) => equal(parser.parse(line).success, true, line));\n fails(parser.parse('{first,second,third,}'), 19);\n fails(parser.parse('first,second,third'), 0);\n fails(parser.parse('{first,second,third'), 19);\n fails(parser.parse('{!}'), 1);\n}\nfunction mixed() {\n const grammar = new TestGrammar();\n grammar.expect = [grammar.BIGORLITTLE, grammar.EOL];\n const parser = new Parser(grammar);\n const mustPass = ['{first,second,third!}', 'first, second'];\n mustPass.forEach((line) => equal(parser.parse(line).success, true, line));\n fails(parser.parse('first second'), 6);\n}\nfunction microscore() {\n const grammar = new MicroScoreGrammar();\n const parser = new Parser(grammar);\n const mustPass = [\n '40 42 44 45 47 49 51 52',\n '[40.44.47] [45.49.52] [47.51.54] [49.52.56]',\n '40 [40.44.47] 45 47 [44.47.51]', // Mixed Notes and Chords: C4 [Cmajor] F4 G4 [Eminor]\n ];\n mustPass.forEach((line) => {\n var _a;\n const result = parser.parse(line);\n equal(result.success, true, line);\n equal((_a = result.matches) === null || _a === void 0 ? void 0 : _a.length, 3, line);\n });\n fails(parser.parse('40 42 44 45 47 49 5A 52'), 19);\n fails(parser.parse('40.44.47] [45.49.52] [47.51.54] [49.52.56]'), 2);\n fails(parser.parse('40 [40] 45 47 [44.47.51]'), 3); // A chord with a single note is not allowed.\n}\nVexFlowTests.register(ParserTests);\nexport { ParserTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// PedalMarking Tests\n// TODO: Fix Error => Type 'Tickable' is not assignable to type 'StaveNote'.\nimport { VexFlowTests } from './vexflow_test_helpers';\nconst PedalMarkingTests = {\n Start() {\n QUnit.module('PedalMarking');\n const run = VexFlowTests.runTests;\n run('Simple Pedal 1', simple1);\n run('Simple Pedal 2', simple2);\n run('Simple Pedal 3', simple3);\n run('Release and Depress on Same Note 1', releaseDepress1);\n run('Release and Depress on Same Note 2', releaseDepress2);\n run('Custom Text 1', customTest1);\n run('Custom Text 2', customTest2);\n },\n};\n/**\n * Every test below uses this to set up the score and two staves/voices.\n */\nfunction createTest(makePedal) {\n return (options) => {\n const f = VexFlowTests.makeFactory(options, 550, 200);\n const score = f.EasyScore();\n const stave0 = f.Stave({ width: 250 }).addClef('treble');\n const voice0 = score.voice(score.notes('b4/4, b4, b4, b4[stem=\"down\"]', { stem: 'up' }));\n f.Formatter().joinVoices([voice0]).formatToStave([voice0], stave0);\n const stave1 = f.Stave({ width: 260, x: 250 });\n const voice1 = score.voice(score.notes('c4/4, c4, c4, c4', { stem: 'up' }));\n f.Formatter().joinVoices([voice1]).formatToStave([voice1], stave1);\n makePedal(f, voice0.getTickables(), voice1.getTickables());\n f.draw();\n ok(true, 'Must render');\n };\n}\nfunction withSimplePedal(style) {\n return (factory, notes0, notes1) => factory.PedalMarking({\n notes: [notes0[0], notes0[2], notes0[3], notes1[3]],\n options: { style },\n });\n}\nfunction withReleaseAndDepressedPedal(style) {\n return (factory, notes0, notes1) => factory.PedalMarking({\n notes: [notes0[0], notes0[3], notes0[3], notes1[1], notes1[1], notes1[3]],\n options: { style },\n });\n}\nconst simple1 = createTest(withSimplePedal('text'));\nconst simple2 = createTest(withSimplePedal('bracket'));\nconst simple3 = createTest(withSimplePedal('mixed'));\nconst releaseDepress1 = createTest(withReleaseAndDepressedPedal('bracket'));\nconst releaseDepress2 = createTest(withReleaseAndDepressedPedal('mixed'));\nconst customTest1 = createTest((factory, notes0, notes1) => {\n const pedal = factory.PedalMarking({\n notes: [notes0[0], notes1[3]],\n options: { style: 'text' },\n });\n pedal.setCustomText('una corda', 'tre corda');\n return pedal;\n});\nconst customTest2 = createTest((factory, notes0, notes1) => {\n const pedal = factory.PedalMarking({\n notes: [notes0[0], notes1[3]],\n options: { style: 'mixed' },\n });\n pedal.setCustomText('Sost. Ped.');\n return pedal;\n});\nVexFlowTests.register(PedalMarkingTests);\nexport { PedalMarkingTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// Author: Mike Corrigan 2012 \n//\n// Percussion Tests\n// TODO: Type 'Tickable[]' is not assignable to type 'StemmableNote[]'.\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Dot, Font, FontStyle, FontWeight, Stave, StaveNote, TickContext, Tremolo, } from '../src/index';\nconst PercussionTests = {\n Start() {\n QUnit.module('Percussion');\n const run = VexFlowTests.runTests;\n run('Percussion Clef', draw);\n run('Percussion Notes', drawNotes);\n run('Percussion Basic0', basic0);\n run('Percussion Basic1', basic1);\n run('Percussion Basic2', basic2);\n run('Percussion Snare0', snare0);\n run('Percussion Snare1', snare1);\n run('Percussion Snare2', snare2);\n run('Percussion Snare3', snare3);\n },\n};\nfunction draw(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 120);\n new Stave(10, 10, 300).addClef('percussion').setContext(ctx).draw();\n ok(true);\n}\n/**\n * Helper function used by the drawNotes() test case below.\n */\nfunction showNote(struct, stave, ctx, x) {\n const staveNote = new StaveNote(struct).setStave(stave);\n new TickContext().addTickable(staveNote).preFormat().setX(x);\n staveNote.setContext(ctx).draw();\n return staveNote;\n}\nfunction drawNotes(options, contextBuilder) {\n const notes = [\n { keys: ['g/5/d0'], duration: '4' },\n { keys: ['g/5/d1'], duration: '4' },\n { keys: ['g/5/d2'], duration: '4' },\n { keys: ['g/5/d3'], duration: '4' },\n { keys: ['x/'], duration: '1' },\n { keys: ['g/5/t0'], duration: '1' },\n { keys: ['g/5/t1'], duration: '4' },\n { keys: ['g/5/t2'], duration: '4' },\n { keys: ['g/5/t3'], duration: '4' },\n { keys: ['x/'], duration: '1' },\n { keys: ['g/5/x0'], duration: '1' },\n { keys: ['g/5/x1'], duration: '4' },\n { keys: ['g/5/x2'], duration: '4' },\n { keys: ['g/5/x3'], duration: '4' },\n ];\n const ctx = contextBuilder(options.elementId, notes.length * 25 + 100, 240);\n // Draw two staves, one with up-stems and one with down-stems.\n for (let h = 0; h < 2; ++h) {\n const stave = new Stave(10, 10 + h * 120, notes.length * 25 + 75).addClef('percussion').setContext(ctx).draw();\n for (let i = 0; i < notes.length; ++i) {\n const note = notes[i];\n note.stem_direction = h === 0 ? -1 : 1;\n const staveNote = showNote(note, stave, ctx, (i + 1) * 25);\n ok(staveNote.getX() > 0, 'Note ' + i + ' has X value');\n ok(staveNote.getYs().length > 0, 'Note ' + i + ' has Y values');\n }\n }\n}\n/**\n * Helper function for the seven test cases below.\n * Adds a percussion clef (two short vertical bars, like a pause sign) to the stave.\n */\nfunction createSingleMeasureTest(setup) {\n return (options) => {\n const f = VexFlowTests.makeFactory(options, 500);\n const stave = f.Stave().addClef('percussion');\n setup(f);\n f.Formatter().joinVoices(f.getVoices()).formatToStave(f.getVoices(), stave);\n f.draw();\n ok(true);\n };\n}\nconst basic0 = createSingleMeasureTest((f) => {\n const voice0 = f\n .Voice()\n .addTickables([\n f.StaveNote({ keys: ['g/5/x2'], duration: '8' }),\n f.StaveNote({ keys: ['g/5/x2'], duration: '8' }),\n f.StaveNote({ keys: ['g/5/x2'], duration: '8' }),\n f.StaveNote({ keys: ['g/5/x2'], duration: '8' }),\n f.StaveNote({ keys: ['g/5/x2'], duration: '8' }),\n f.StaveNote({ keys: ['g/5/x2'], duration: '8' }),\n f.StaveNote({ keys: ['g/5/x2'], duration: '8' }),\n f.StaveNote({ keys: ['g/5/x2'], duration: '8' }),\n ]);\n const voice1 = f\n .Voice()\n .addTickables([\n f.StaveNote({ keys: ['f/4'], duration: '8', stem_direction: -1 }),\n f.StaveNote({ keys: ['f/4'], duration: '8', stem_direction: -1 }),\n f.StaveNote({ keys: ['d/4/x2', 'c/5'], duration: '4', stem_direction: -1 }),\n f.StaveNote({ keys: ['f/4'], duration: '8', stem_direction: -1 }),\n f.StaveNote({ keys: ['f/4'], duration: '8', stem_direction: -1 }),\n f.StaveNote({ keys: ['d/4/x2', 'c/5'], duration: '4', stem_direction: -1 }),\n ]);\n f.Beam({ notes: voice0.getTickables() });\n f.Beam({ notes: voice1.getTickables().slice(0, 2) });\n f.Beam({ notes: voice1.getTickables().slice(3, 5) });\n});\nconst basic1 = createSingleMeasureTest((f) => {\n f.Voice().addTickables([\n f.StaveNote({ keys: ['f/5/x2'], duration: '4' }),\n f.StaveNote({ keys: ['f/5/x2'], duration: '4' }),\n f.StaveNote({ keys: ['f/5/x2'], duration: '4' }),\n f.StaveNote({ keys: ['f/5/x2'], duration: '4' }),\n ]);\n f.Voice().addTickables([\n f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: -1 }),\n f.StaveNote({ keys: ['d/4/x2', 'c/5'], duration: '4', stem_direction: -1 }),\n f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: -1 }),\n f.StaveNote({ keys: ['d/4/x2', 'c/5'], duration: '4', stem_direction: -1 }),\n ]);\n});\nconst basic2 = createSingleMeasureTest((f) => {\n const voice0 = f\n .Voice()\n .addTickables([\n f.StaveNote({ keys: ['a/5/x3'], duration: '8' }),\n f.StaveNote({ keys: ['g/5/x2'], duration: '8' }),\n f.StaveNote({ keys: ['g/5'], duration: '8' }),\n f.StaveNote({ keys: ['g/4/n', 'g/5/x2'], duration: '8' }),\n f.StaveNote({ keys: ['g/5/x2'], duration: '8' }),\n f.StaveNote({ keys: ['g/5/x2'], duration: '8' }),\n f.StaveNote({ keys: ['g/5/x2'], duration: '8' }),\n f.StaveNote({ keys: ['g/5/x2'], duration: '8' }),\n ]);\n f.Beam({ notes: voice0.getTickables().slice(1, 8) });\n const notes1 = [\n f.StaveNote({ keys: ['f/4'], duration: '8', stem_direction: -1 }),\n f.StaveNote({ keys: ['f/4'], duration: '8', stem_direction: -1 }),\n f.StaveNote({ keys: ['d/4/x2', 'c/5'], duration: '4', stem_direction: -1 }),\n f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: -1 }),\n f.StaveNote({ keys: ['d/4/x2', 'c/5'], duration: '8d', stem_direction: -1 }),\n f.StaveNote({ keys: ['c/5'], duration: '16', stem_direction: -1 }),\n ];\n Dot.buildAndAttach([notes1[4]], { all: true });\n const voice1 = f.Voice().addTickables(notes1);\n f.Beam({ notes: voice1.getTickables().slice(0, 2) });\n f.Beam({ notes: voice1.getTickables().slice(4, 6) });\n});\nconst snare0 = createSingleMeasureTest((f) => {\n const font = {\n family: Font.SERIF,\n size: 14,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n };\n f.Voice().addTickables([\n f\n .StaveNote({ keys: ['c/5'], duration: '4', stem_direction: -1 })\n .addModifier(f.Articulation({ type: 'a>' }), 0)\n .addModifier(f.Annotation({ text: 'L', font }), 0),\n f.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: -1 }).addModifier(f.Annotation({ text: 'R', font }), 0),\n f.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: -1 }).addModifier(f.Annotation({ text: 'L', font }), 0),\n f.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: -1 }).addModifier(f.Annotation({ text: 'L', font }), 0),\n ]);\n});\nconst snare1 = createSingleMeasureTest((f) => {\n f.Voice().addTickables([\n f.StaveNote({ keys: ['g/5/x2'], duration: '4', stem_direction: -1 }).addModifier(f.Articulation({ type: 'ah' }), 0),\n f.StaveNote({ keys: ['g/5/x2'], duration: '4', stem_direction: -1 }),\n f.StaveNote({ keys: ['g/5/x2'], duration: '4', stem_direction: -1 }).addModifier(f.Articulation({ type: 'ah' }), 0),\n f.StaveNote({ keys: ['a/5/x3'], duration: '4', stem_direction: -1 }).addModifier(f.Articulation({ type: 'a,' }), 0),\n ]);\n});\nconst snare2 = createSingleMeasureTest((f) => {\n f.Voice().addTickables([\n f.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: -1 }).addModifier(new Tremolo(1), 0),\n f.GraceNote({ keys: ['c/5'], duration: '4', stem_direction: -1 }).addModifier(new Tremolo(1), 0),\n f.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: -1 }).addModifier(new Tremolo(3), 0),\n f.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: -1 }).addModifier(new Tremolo(5), 0),\n ]);\n});\nconst snare3 = createSingleMeasureTest((factory) => {\n factory\n .Voice()\n .addTickables([\n factory.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: 1 }).addModifier(new Tremolo(2), 0),\n factory.GraceNote({ keys: ['c/5'], duration: '4', stem_direction: 1 }).addModifier(new Tremolo(2), 0),\n factory.GraceNote({ keys: ['c/5'], duration: '4', stem_direction: 1 }).addModifier(new Tremolo(3), 0),\n factory.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: 1 }).addModifier(new Tremolo(5), 0),\n ]);\n});\nVexFlowTests.register(PercussionTests);\nexport { PercussionTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Registry Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { EasyScore, Factory, Registry, StaveNote } from '../src/index';\nconst RegistryTests = {\n Start() {\n QUnit.module('Registry');\n test('Register and Clear', registerAndClear);\n test('Default Registry', defaultRegistry);\n test('Multiple Classes', classes);\n },\n};\nfunction registerAndClear() {\n const registry = new Registry();\n const score = new EasyScore({ factory: Factory.newFromElementId(null) });\n registry.register(score.notes('C4')[0], 'foobar');\n const foobar = registry.getElementById('foobar');\n ok(foobar);\n equal(foobar.getAttribute('id'), 'foobar');\n registry.clear();\n notOk(registry.getElementById('foobar'));\n // eslint-disable-next-line\n // @ts-ignore: intentional type mismatch to trigger an error.\n throws(() => registry.register(score.notes('C4')));\n registry.clear();\n ok(registry.register(score.notes('C4[id=\"boobar\"]')[0]).getElementById('boobar'));\n}\nfunction defaultRegistry() {\n const registry = new Registry();\n const score = new EasyScore({ factory: Factory.newFromElementId(null) });\n Registry.enableDefaultRegistry(registry);\n score.notes('C4[id=\"foobar\"]');\n const note = registry.getElementById('foobar');\n ok(note);\n note.setAttribute('id', 'boobar');\n ok(registry.getElementById('boobar'));\n notOk(registry.getElementById('foobar'));\n registry.clear();\n equal(registry.getElementsByType(StaveNote.CATEGORY).length, 0);\n score.notes('C5');\n const elements = registry.getElementsByType(StaveNote.CATEGORY);\n equal(elements.length, 1);\n}\nfunction classes() {\n const registry = new Registry();\n const score = new EasyScore({ factory: Factory.newFromElementId(null) });\n Registry.enableDefaultRegistry(registry);\n score.notes('C4[id=\"foobar\"]');\n const note = registry.getElementById('foobar');\n note.addClass('foo');\n ok(note.hasClass('foo'));\n notOk(note.hasClass('boo'));\n equal(registry.getElementsByClass('foo').length, 1);\n equal(registry.getElementsByClass('boo').length, 0);\n note.addClass('boo');\n ok(note.hasClass('foo'));\n ok(note.hasClass('boo'));\n equal(registry.getElementsByClass('foo').length, 1);\n equal(registry.getElementsByClass('boo').length, 1);\n note.removeClass('boo');\n note.removeClass('foo');\n notOk(note.hasClass('foo'));\n notOk(note.hasClass('boo'));\n equal(registry.getElementsByClass('foo').length, 0);\n equal(registry.getElementsByClass('boo').length, 0);\n}\nVexFlowTests.register(RegistryTests);\nexport { RegistryTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Ron B. Yeh\n// MIT License\n//\n// Renderer Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { CanvasContext, Factory, Formatter, isHTMLCanvas, Renderer, RuntimeError, Stave, StaveNote, SVGContext, } from '../src/index';\n// TODO: Should FactoryOptions.renderer.elementId also accept a canvas | div?\nconst STAVE_WIDTH = 700;\nconst STAVE_HEIGHT = 100;\n// FactoryOptions.stave.space defaults to 10.\n// We subtract 10 to make the useRendererAPI() output look identical to useFactoryAPI().\nconst STAVE_RIGHT_MARGIN = 10;\nconst USE_RENDERER = { useRendererAPI: true };\nconst USE_FACTORY = { useRendererAPI: false };\nconst RendererTests = {\n Start() {\n QUnit.module('Renderer');\n const run = VexFlowTests.runTests;\n // Randomly choose one of four setup paths. See below for a description.\n // Refresh `flow.html` to see the test change each time.\n // We can manually check that they look identical\n // by opening `flow.html` in multiple tabs & quickly switching between tabs.\n run('Random', random);\n // These are the four setup paths. They should all produce the same output.\n // Use the: Renderer API OR Factory API\n // Pass in: element ID string OR canvas/div element.\n run('Renderer API with element ID string', stringElementId, USE_RENDERER);\n run('Renderer API with canvas or div', canvasOrDivElement, USE_RENDERER);\n run('Renderer API with context', passRenderContext);\n run('Factory API with element ID string', stringElementId, USE_FACTORY);\n run('Factory API with canvas or div', canvasOrDivElement, USE_FACTORY);\n },\n};\n/**\n * Helper function to add three notes to a stave.\n */\nfunction drawStave(stave, context) {\n stave.addClef('bass').addTimeSignature('3/4').draw();\n Formatter.FormatAndDraw(context, stave, [\n new StaveNote({ keys: ['C/4'], duration: '4' }),\n new StaveNote({ keys: ['E/4'], duration: '4' }),\n new StaveNote({ keys: ['G/4'], duration: '4' }),\n ]);\n}\n/**\n * Randomize the test upon each refresh (for verifying that the output is identical).\n * Draw a colored outline to indicate which of the four options is shown.\n * - blue = element is a SVG or Canvas element\n * - gray = element ID is a string\n * - solid outline = use the Renderer API directly\n * - dashed outline = use the Factory API\n */\nfunction random(options) {\n const useElementIDString = Math.random() > 0.5;\n const useRendererAPI = Math.random() > 0.5;\n options.params = { useRendererAPI };\n if (useElementIDString) {\n stringElementId(options);\n }\n else {\n canvasOrDivElement(options);\n }\n // eslint-disable-next-line\n const element = document.getElementById(options.elementId);\n const colorForElementType = useElementIDString ? '#CCCCCC' /* light gray */ : '#0074d9'; /* blue */\n const lineStyleForWhichAPI = useRendererAPI ? 'solid' : 'dashed';\n const borderStyle = `3px ${lineStyleForWhichAPI} ${colorForElementType}`;\n let elementType;\n if (options.backend === Renderer.Backends.CANVAS) {\n // If the backend is canvas, we draw a border around the canvas directly.\n element.style.border = borderStyle;\n elementType = '<canvas> element object';\n }\n else {\n // If the backend is SVG, we draw a border around the SVG child of the DIV.\n element.children[0].style.border = borderStyle;\n elementType = '<svg> element object';\n }\n if (useElementIDString) {\n elementType = 'elementID string';\n }\n const whichAPI = useRendererAPI ? 'Renderer API' : 'Factory API';\n element.parentElement.insertAdjacentHTML('beforeend', `
` +\n `${whichAPI}` +\n ` with ` +\n `${elementType}` +\n `

`);\n}\nfunction useRendererAPI(e, backend) {\n const renderer = new Renderer(e, backend);\n renderer.resize(STAVE_WIDTH, STAVE_HEIGHT);\n const context = renderer.getContext();\n drawStave(new Stave(0, 0, STAVE_WIDTH - STAVE_RIGHT_MARGIN).setContext(context), context);\n}\n/**\n * Alternatively, use the Factory API!\n * The Factory API declares elementId to be string | null.\n * However, if we pass in a canvas or div element, it will still work.\n * This is because Factory calls new Renderer(elementId, ...) via Renderer.buildContext().\n */\nfunction useFactoryAPI(e, backend) {\n const opts = {\n renderer: { elementId: e, width: STAVE_WIDTH, height: STAVE_HEIGHT, backend },\n };\n const factory = new Factory(opts);\n drawStave(factory.Stave(), factory.getContext());\n}\n/**\n * Pass in a elementId string. Renderer will call document.getElementById().\n */\nfunction stringElementId(options) {\n const elementId = options.elementId;\n if (options.params.useRendererAPI) {\n useRendererAPI(elementId, options.backend);\n }\n else {\n useFactoryAPI(elementId, options.backend);\n }\n ok(true);\n}\n/**\n * Pass a canvas or div element directly to the Renderer constructor.\n */\nfunction canvasOrDivElement(options) {\n const element = document.getElementById(options.elementId);\n if (options.params.useRendererAPI) {\n useRendererAPI(element, options.backend);\n }\n else {\n useFactoryAPI(element, options.backend);\n }\n ok(true);\n}\n/**\n * Pass the render context directly to the Renderer constructor.\n */\nfunction passRenderContext(options) {\n let context;\n const element = document.getElementById(options.elementId);\n if (isHTMLCanvas(element)) {\n const ctx = element.getContext('2d');\n if (!ctx) {\n throw new RuntimeError(`Couldn't get context from element \"${options.elementId}\"`);\n }\n context = new CanvasContext(ctx);\n }\n else {\n context = new SVGContext(element);\n }\n const renderer = new Renderer(context);\n renderer.resize(STAVE_WIDTH, STAVE_HEIGHT);\n drawStave(new Stave(0, 0, STAVE_WIDTH - STAVE_RIGHT_MARGIN).setContext(context), context);\n ok(true);\n}\nVexFlowTests.register(RendererTests);\nexport { RendererTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Rests Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Beam } from '../src/beam';\nimport { Dot } from '../src/dot';\nimport { Flow } from '../src/flow';\nimport { Formatter } from '../src/formatter';\nimport { Stave } from '../src/stave';\nimport { StaveNote } from '../src/stavenote';\nimport { Tuplet } from '../src/tuplet';\nimport { Voice } from '../src/voice';\nconst RestsTests = {\n Start() {\n QUnit.module('Rests');\n const run = VexFlowTests.runTests;\n run('Outside Stave', legerRest);\n run('Dotted', basic);\n run('Auto Align - Beamed Notes Stems Up', beamsUp);\n run('Auto Align - Beamed Notes Stems Down', beamsDown);\n run('Auto Align - Tuplets Stems Up', tupletsUp);\n run('Auto Align - Tuplets Stems Down', tupletsDown);\n run('Auto Align - Single Voice (Default)', singleVoiceDefaultAlignment);\n run('Auto Align - Single Voice (Align All)', singleVoiceAlignAll);\n run('Auto Align - Multi Voice', multiVoice);\n },\n};\n/**\n * Helper function to create a context and stave.\n *\n * @param options\n * @param contextBuilder static function in renderer.ts (Renderer.getSVGContext or Renderer.getCanvasContext).\n * @param width\n * @param height\n * @returns object with .context and .stave properties\n */\nfunction setupContext(options, contextBuilder, width = 350, height = 150) {\n // context is SVGContext or CanvasRenderingContext2D (native) or CanvasContext (only if Renderer.USE_CANVAS_PROXY is true).\n const context = contextBuilder(options.elementId, width, height);\n context.scale(0.9, 0.9);\n context.fillStyle = '#221';\n context.strokeStyle = '#221';\n context.font = '10pt Arial';\n const stave = new Stave(10, 30, width).addClef('treble').addTimeSignature('4/4').setContext(context).draw();\n return { context, stave };\n}\n/**\n * Dotted rests (whole to 128th).\n * The rest duration is specified as 'wr', 'hr', ..., '128r'.\n */\nfunction basic(options, contextBuilder) {\n const { context, stave } = setupContext(options, contextBuilder, 700);\n const notes = [\n new StaveNote({ keys: ['b/4'], stem_direction: 1, duration: 'wr' }),\n new StaveNote({ keys: ['b/4'], stem_direction: 1, duration: 'hr' }),\n new StaveNote({ keys: ['b/4'], stem_direction: 1, duration: '4r' }),\n new StaveNote({ keys: ['b/4'], stem_direction: 1, duration: '8r' }),\n new StaveNote({ keys: ['b/4'], stem_direction: 1, duration: '16r' }),\n new StaveNote({ keys: ['b/4'], stem_direction: 1, duration: '32r' }),\n new StaveNote({ keys: ['b/4'], stem_direction: 1, duration: '64r' }),\n new StaveNote({ keys: ['b/4'], stem_direction: 1, duration: '128r' }),\n ];\n Dot.buildAndAttach(notes, { all: true });\n Formatter.FormatAndDraw(context, stave, notes);\n ok(true, 'Dotted Rest Test');\n}\n/**\n * Use the leger glyph if the whole or half rest is above/below the staff\n */\nfunction legerRest(options, contextBuilder) {\n const { context, stave } = setupContext(options, contextBuilder, 700);\n const notes = [\n new StaveNote({ keys: ['a/5'], stem_direction: 1, duration: 'wr' }),\n new StaveNote({ keys: ['c/6'], stem_direction: 1, duration: 'hr' }),\n new StaveNote({ keys: ['b/4'], stem_direction: 1, duration: 'hr' }),\n new StaveNote({ keys: ['a/3'], stem_direction: 1, duration: 'wr' }),\n new StaveNote({ keys: ['f/3'], stem_direction: 1, duration: 'hr' }),\n new StaveNote({ keys: ['b/4'], stem_direction: 1, duration: 'wr' }),\n ];\n Formatter.FormatAndDraw(context, stave, notes);\n ok(true, 'Leger/Ledger Rest Test');\n}\n// Optional: Use a helper function to make your code more concise.\nconst note = (noteStruct) => new StaveNote(noteStruct);\n/**\n * Rests are intermixed within beamed notes (with the stems and beams at the top).\n */\nfunction beamsUp(options, contextBuilder) {\n const { context, stave } = setupContext(options, contextBuilder, 600, 160);\n const notes = [\n note({ keys: ['e/5'], stem_direction: 1, duration: '8' }),\n note({ keys: ['b/4'], stem_direction: 1, duration: '8r' }),\n note({ keys: ['b/5'], stem_direction: 1, duration: '8' }),\n note({ keys: ['c/5'], stem_direction: 1, duration: '8' }),\n note({ keys: ['b/4', 'd/5', 'a/5'], stem_direction: 1, duration: '8' }),\n note({ keys: ['b/4'], stem_direction: 1, duration: '8r' }),\n note({ keys: ['b/4'], stem_direction: 1, duration: '8r' }),\n note({ keys: ['c/4'], stem_direction: 1, duration: '8' }),\n note({ keys: ['b/4', 'd/5', 'a/5'], stem_direction: 1, duration: '8' }),\n note({ keys: ['b/4'], stem_direction: 1, duration: '8' }),\n note({ keys: ['b/4'], stem_direction: 1, duration: '8r' }),\n note({ keys: ['c/4'], stem_direction: 1, duration: '8' }),\n ];\n const beam1 = new Beam(notes.slice(0, 4));\n const beam2 = new Beam(notes.slice(4, 8));\n const beam3 = new Beam(notes.slice(8, 12));\n Formatter.FormatAndDraw(context, stave, notes);\n beam1.setContext(context).draw();\n beam2.setContext(context).draw();\n beam3.setContext(context).draw();\n ok(true, 'Auto Align Rests - Beams Up Test');\n}\n/**\n * Rests are intermixed within beamed notes (with the stems and beams at the bottom).\n */\nfunction beamsDown(options, contextBuilder) {\n const { context, stave } = setupContext(options, contextBuilder, 600, 160);\n const notes = [\n note({ keys: ['a/5'], stem_direction: -1, duration: '8' }),\n note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }),\n note({ keys: ['b/5'], stem_direction: -1, duration: '8' }),\n note({ keys: ['c/5'], stem_direction: -1, duration: '8' }),\n note({ keys: ['b/4', 'd/5', 'a/5'], stem_direction: -1, duration: '8' }),\n note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }),\n note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }),\n note({ keys: ['e/4'], stem_direction: -1, duration: '8' }),\n note({ keys: ['b/4', 'd/5', 'a/5'], stem_direction: -1, duration: '8' }),\n note({ keys: ['b/4'], stem_direction: -1, duration: '8' }),\n note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }),\n note({ keys: ['e/4'], stem_direction: -1, duration: '8' }),\n ];\n const beam1 = new Beam(notes.slice(0, 4));\n const beam2 = new Beam(notes.slice(4, 8));\n const beam3 = new Beam(notes.slice(8, 12));\n Formatter.FormatAndDraw(context, stave, notes);\n beam1.setContext(context).draw();\n beam2.setContext(context).draw();\n beam3.setContext(context).draw();\n ok(true, 'Auto Align Rests - Beams Down Test');\n}\n/**\n * Call setTupletLocation(Tuplet.LOCATION_TOP) to place the tuplet indicator (bracket and number) at the\n * top of the group of notes. Tuplet.LOCATION_TOP is the default, so this is optional.\n */\nfunction tupletsUp(options, contextBuilder) {\n const { context, stave } = setupContext(options, contextBuilder, 600, 160);\n const notes = [\n note({ keys: ['b/4'], stem_direction: 1, duration: '4' }),\n note({ keys: ['b/4'], stem_direction: 1, duration: '4' }),\n note({ keys: ['a/5'], stem_direction: 1, duration: '4r' }),\n note({ keys: ['a/5'], stem_direction: 1, duration: '4r' }),\n note({ keys: ['g/5'], stem_direction: 1, duration: '4r' }),\n note({ keys: ['b/5'], stem_direction: 1, duration: '4' }),\n note({ keys: ['a/5'], stem_direction: 1, duration: '4' }),\n note({ keys: ['g/5'], stem_direction: 1, duration: '4r' }),\n note({ keys: ['b/4'], stem_direction: 1, duration: '4' }),\n note({ keys: ['a/5'], stem_direction: 1, duration: '4' }),\n note({ keys: ['b/4'], stem_direction: 1, duration: '4r' }),\n note({ keys: ['b/4'], stem_direction: 1, duration: '4r' }),\n ];\n const tuplet1 = new Tuplet(notes.slice(0, 3)).setTupletLocation(Tuplet.LOCATION_TOP);\n const tuplet2 = new Tuplet(notes.slice(3, 6)).setTupletLocation(Tuplet.LOCATION_TOP);\n const tuplet3 = new Tuplet(notes.slice(6, 9)).setTupletLocation(Tuplet.LOCATION_TOP);\n const tuplet4 = new Tuplet(notes.slice(9, 12)).setTupletLocation(Tuplet.LOCATION_TOP);\n Formatter.FormatAndDraw(context, stave, notes);\n tuplet1.setContext(context).draw();\n tuplet2.setContext(context).draw();\n tuplet3.setContext(context).draw();\n tuplet4.setContext(context).draw();\n ok(true, 'Auto Align Rests - Tuplets Stem Up Test');\n}\n/**\n * Call setTupletLocation(Tuplet.LOCATION_BOTTOM) to place the tuplet indicator (bracket and number) at the\n * bottom of the group of notes.\n */\nfunction tupletsDown(options, contextBuilder) {\n const { context, stave } = setupContext(options, contextBuilder, 600, 160);\n const notes = [\n note({ keys: ['a/5'], stem_direction: -1, duration: '8r' }),\n note({ keys: ['g/5'], stem_direction: -1, duration: '8r' }),\n note({ keys: ['b/4'], stem_direction: -1, duration: '8' }),\n note({ keys: ['a/5'], stem_direction: -1, duration: '8r' }),\n note({ keys: ['g/5'], stem_direction: -1, duration: '8' }),\n note({ keys: ['b/5'], stem_direction: -1, duration: '8' }),\n note({ keys: ['a/5'], stem_direction: -1, duration: '8' }),\n note({ keys: ['g/5'], stem_direction: -1, duration: '8r' }),\n note({ keys: ['b/4'], stem_direction: -1, duration: '8' }),\n note({ keys: ['a/5'], stem_direction: -1, duration: '8' }),\n note({ keys: ['g/5'], stem_direction: -1, duration: '8r' }),\n note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }),\n ];\n const beam1 = new Beam(notes.slice(0, 3));\n const beam2 = new Beam(notes.slice(3, 6));\n const beam3 = new Beam(notes.slice(6, 9));\n const beam4 = new Beam(notes.slice(9, 12));\n const tuplet1 = new Tuplet(notes.slice(0, 3)).setTupletLocation(Tuplet.LOCATION_BOTTOM);\n const tuplet2 = new Tuplet(notes.slice(3, 6)).setTupletLocation(Tuplet.LOCATION_BOTTOM);\n const tuplet3 = new Tuplet(notes.slice(6, 9)).setTupletLocation(Tuplet.LOCATION_BOTTOM);\n const tuplet4 = new Tuplet(notes.slice(9, 12)).setTupletLocation(Tuplet.LOCATION_BOTTOM);\n Formatter.FormatAndDraw(context, stave, notes);\n tuplet1.setContext(context).draw();\n tuplet2.setContext(context).draw();\n tuplet3.setContext(context).draw();\n tuplet4.setContext(context).draw();\n beam1.setContext(context).draw();\n beam2.setContext(context).draw();\n beam3.setContext(context).draw();\n beam4.setContext(context).draw();\n ok(true, 'Auto Align Rests - Tuplets Stem Down Test');\n}\n/**\n * By default rests are centered vertically within the stave, except\n * when they are inside a group of beamed notes (in which case they are\n * centered vertically within that group).\n */\nfunction singleVoiceDefaultAlignment(options, contextBuilder) {\n const { context, stave } = setupContext(options, contextBuilder, 600, 160);\n const notes = [\n note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }),\n note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }),\n note({ keys: ['f/4'], stem_direction: -1, duration: '4' }),\n note({ keys: ['e/5'], stem_direction: -1, duration: '8' }),\n note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }),\n note({ keys: ['a/5'], stem_direction: -1, duration: '8' }),\n note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }),\n note({ keys: ['b/4'], stem_direction: -1, duration: '8' }),\n note({ keys: ['e/5'], stem_direction: -1, duration: '8' }),\n note({ keys: ['a/5'], stem_direction: 1, duration: '4' }),\n note({ keys: ['b/4'], stem_direction: 1, duration: '4r' }),\n note({ keys: ['b/5'], stem_direction: 1, duration: '4' }),\n note({ keys: ['d/5'], stem_direction: -1, duration: '4' }),\n note({ keys: ['g/5'], stem_direction: -1, duration: '4' }),\n note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }),\n note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }),\n ];\n const beam = new Beam(notes.slice(5, 9));\n const tuplet = new Tuplet(notes.slice(9, 12)).setTupletLocation(Tuplet.LOCATION_TOP);\n Formatter.FormatAndDraw(context, stave, notes);\n tuplet.setContext(context).draw();\n beam.setContext(context).draw();\n ok(true, 'Auto Align Rests - Default Test');\n}\n/**\n * The only difference between staveRestsAll() and staveRests() is that this test case\n * passes { align_rests: true } to Formatter.FormatAndDraw(...).\n */\nfunction singleVoiceAlignAll(options, contextBuilder) {\n const { context, stave } = setupContext(options, contextBuilder, 600, 160);\n const notes = [\n note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }),\n note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }),\n note({ keys: ['f/4'], stem_direction: -1, duration: '4' }),\n note({ keys: ['e/5'], stem_direction: -1, duration: '8' }),\n note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }),\n note({ keys: ['a/5'], stem_direction: -1, duration: '8' }),\n note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }),\n note({ keys: ['b/4'], stem_direction: -1, duration: '8' }),\n note({ keys: ['e/5'], stem_direction: -1, duration: '8' }),\n note({ keys: ['a/5'], stem_direction: 1, duration: '4' }),\n note({ keys: ['b/4'], stem_direction: 1, duration: '4r' }),\n note({ keys: ['b/5'], stem_direction: 1, duration: '4' }),\n note({ keys: ['d/5'], stem_direction: -1, duration: '4' }),\n note({ keys: ['g/5'], stem_direction: -1, duration: '4' }),\n note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }),\n note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }),\n ];\n const beam = new Beam(notes.slice(5, 9));\n const tuplet = new Tuplet(notes.slice(9, 12)).setTupletLocation(Tuplet.LOCATION_TOP);\n // Set { align_rests: true } to align rests (vertically) with nearby notes in each voice.\n Formatter.FormatAndDraw(context, stave, notes, { align_rests: true });\n tuplet.setContext(context).draw();\n beam.setContext(context).draw();\n ok(true, 'Auto Align Rests - Align All Test');\n}\n/**\n * Multi Voice\n * The top voice shows quarter-note chords alternating with quarter rests.\n * The bottom voice shows two groups of beamed eighth notes, with eighth rests.\n */\nfunction multiVoice(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 600, 200);\n const stave = new Stave(50, 10, 500).addClef('treble').setContext(ctx).addTimeSignature('4/4').draw();\n const noteOnStave = (noteStruct) => new StaveNote(noteStruct).setStave(stave);\n const notes1 = [\n noteOnStave({ keys: ['c/4', 'e/4', 'g/4'], duration: '4' }),\n noteOnStave({ keys: ['b/4'], duration: '4r' }),\n noteOnStave({ keys: ['c/4', 'd/4', 'a/4'], duration: '4' }),\n noteOnStave({ keys: ['b/4'], duration: '4r' }),\n ];\n const notes2 = [\n noteOnStave({ keys: ['e/3'], stem_direction: -1, duration: '8' }),\n noteOnStave({ keys: ['b/4'], stem_direction: -1, duration: '8r' }),\n noteOnStave({ keys: ['b/4'], stem_direction: -1, duration: '8r' }),\n noteOnStave({ keys: ['e/3'], stem_direction: -1, duration: '8' }),\n noteOnStave({ keys: ['e/3'], stem_direction: -1, duration: '8' }),\n noteOnStave({ keys: ['b/4'], stem_direction: -1, duration: '8r' }),\n noteOnStave({ keys: ['e/3'], stem_direction: -1, duration: '8' }),\n noteOnStave({ keys: ['e/3'], stem_direction: -1, duration: '8' }),\n ];\n const voice1 = new Voice(Flow.TIME4_4).addTickables(notes1);\n const voice2 = new Voice(Flow.TIME4_4).addTickables(notes2);\n // Set { align_rests: true } to align rests (vertically) with nearby notes in each voice.\n new Formatter().joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave, { align_rests: true });\n const beam2_1 = new Beam(notes2.slice(0, 4));\n const beam2_2 = new Beam(notes2.slice(4, 8));\n // Important Note: we need to draw voice2 first, since voice2 generates ledger lines.\n // Otherwise, the ledger lines will be drawn on top of middle C notes in voice1.\n voice2.draw(ctx);\n voice1.draw(ctx);\n beam2_1.setContext(ctx).draw();\n beam2_2.setContext(ctx).draw();\n ok(true, 'Strokes Test Multi Voice');\n}\nVexFlowTests.register(RestsTests);\nexport { RestsTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Rhythm Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Annotation } from '../src/annotation';\nimport { Beam } from '../src/beam';\nimport { Formatter } from '../src/formatter';\nimport { Stave } from '../src/stave';\nimport { BarlineType } from '../src/stavebarline';\nimport { StaveNote } from '../src/stavenote';\nconst RhythmTests = {\n Start() {\n QUnit.module('Rhythm');\n const run = VexFlowTests.runTests;\n // TODO: Simplify test names by removing 'Rhythm Draw - '.\n run('Rhythm Draw - slash notes', drawBasic);\n run('Rhythm Draw - beamed slash notes', drawBeamedSlashNotes);\n run('Rhythm Draw - beamed slash notes, some rests', drawSlashAndBeamAndRests);\n run('Rhythm Draw - 16th note rhythm with scratches', drawSixtenthWithScratches);\n run('Rhythm Draw - 32nd note rhythm with scratches', drawThirtySecondWithScratches);\n },\n};\n// CURRENTLY UNUSED. Draws 7 different slash notes without beams.\n/*\nfunction drawSlash(options: TestOptions, contextBuilder: ContextBuilder): void {\n const ctx = contextBuilder(options.elementId, 350, 180);\n const stave = new Stave(10, 10, 350);\n stave.setContext(ctx);\n stave.draw();\n\n const notes: StaveNoteStruct[] = [\n { keys: ['b/4'], duration: 'ws', stem_direction: -1 },\n { keys: ['b/4'], duration: 'hs', stem_direction: -1 },\n { keys: ['b/4'], duration: 'qs', stem_direction: -1 },\n { keys: ['b/4'], duration: '8s', stem_direction: -1 },\n { keys: ['b/4'], duration: '16s', stem_direction: -1 },\n { keys: ['b/4'], duration: '32s', stem_direction: -1 },\n { keys: ['b/4'], duration: '64s', stem_direction: -1 },\n ];\n expect(notes.length * 2);\n\n for (let i = 0; i < notes.length; ++i) {\n const staveNote = new StaveNote(notes[i]).setStave(stave);\n new TickContext()\n .addTickable(staveNote)\n .preFormat()\n .setX((i + 1) * 25);\n staveNote.setContext(ctx).draw();\n\n ok(staveNote.getX() > 0, 'Note ' + i + ' has X value');\n ok(staveNote.getYs().length > 0, 'Note ' + i + ' has Y values');\n }\n}\n*/\nfunction drawBasic(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 800, 150);\n // bar 1\n const staveBar1 = new Stave(10, 30, 150);\n staveBar1.setBegBarType(BarlineType.DOUBLE);\n staveBar1.setEndBarType(BarlineType.SINGLE);\n staveBar1.addClef('treble');\n staveBar1.addTimeSignature('4/4');\n staveBar1.addKeySignature('C');\n staveBar1.setContext(ctx).draw();\n const notesBar1 = [new StaveNote({ keys: ['b/4'], duration: '1s', stem_direction: -1 })];\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, staveBar1, notesBar1);\n // bar 2 - juxtaposing second bar next to first bar\n const staveBar2 = new Stave(staveBar1.getWidth() + staveBar1.getX(), staveBar1.getY(), 120);\n staveBar2.setBegBarType(BarlineType.SINGLE);\n staveBar2.setEndBarType(BarlineType.SINGLE);\n staveBar2.setContext(ctx).draw();\n // bar 2\n const notesBar2 = [\n new StaveNote({ keys: ['b/4'], duration: '2s', stem_direction: -1 }),\n new StaveNote({ keys: ['b/4'], duration: '2s', stem_direction: -1 }),\n ];\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, staveBar2, notesBar2);\n // bar 3 - juxtaposing second bar next to first bar\n const staveBar3 = new Stave(staveBar2.getWidth() + staveBar2.getX(), staveBar2.getY(), 170);\n staveBar3.setContext(ctx).draw();\n // bar 3\n const notesBar3 = [\n new StaveNote({\n keys: ['b/4'],\n duration: '4s',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '4s',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '4s',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '4s',\n stem_direction: -1,\n }),\n ];\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, staveBar3, notesBar3);\n // bar 4 - juxtaposing second bar next to first bar\n const staveBar4 = new Stave(staveBar3.getWidth() + staveBar3.getX(), staveBar3.getY(), 200);\n staveBar4.setContext(ctx).draw();\n // bar 4\n const notesBar4 = [\n new StaveNote({\n keys: ['b/4'],\n duration: '8s',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '8s',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '8s',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '8s',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '8s',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '8s',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '8s',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '8s',\n stem_direction: -1,\n }),\n ];\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, staveBar4, notesBar4);\n expect(0);\n}\nfunction drawBeamedSlashNotes(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 800, 150);\n // bar 1\n const staveBar1 = new Stave(10, 30, 300);\n staveBar1.setBegBarType(BarlineType.DOUBLE);\n staveBar1.setEndBarType(BarlineType.SINGLE);\n staveBar1.addClef('treble');\n staveBar1.addTimeSignature('4/4');\n staveBar1.addKeySignature('C');\n staveBar1.setContext(ctx).draw();\n // bar 4\n const notesBar1_part1 = [\n new StaveNote({\n keys: ['b/4'],\n duration: '8s',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '8s',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '8s',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '8s',\n stem_direction: -1,\n }),\n ];\n const notesBar1_part2 = [\n new StaveNote({\n keys: ['b/4'],\n duration: '8s',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '8s',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '8s',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '8s',\n stem_direction: -1,\n }),\n ];\n // create the beams for 8th notes in 2nd measure\n const beam1 = new Beam(notesBar1_part1);\n const beam2 = new Beam(notesBar1_part2);\n const notesBar1 = notesBar1_part1.concat(notesBar1_part2);\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, staveBar1, notesBar1);\n // Render beams\n beam1.setContext(ctx).draw();\n beam2.setContext(ctx).draw();\n expect(0);\n}\nfunction drawSlashAndBeamAndRests(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 800, 150);\n // bar 1\n const staveBar1 = new Stave(10, 30, 300);\n staveBar1.setBegBarType(BarlineType.DOUBLE);\n staveBar1.setEndBarType(BarlineType.SINGLE);\n staveBar1.addClef('treble');\n staveBar1.addTimeSignature('4/4');\n staveBar1.addKeySignature('F');\n staveBar1.setContext(ctx).draw();\n // bar 1\n const notesBar1_part1 = [\n new StaveNote({\n keys: ['b/4'],\n duration: '8s',\n stem_direction: -1,\n }),\n new StaveNote({ keys: ['b/4'], duration: '8s', stem_direction: -1 }),\n ];\n notesBar1_part1[0].addModifier(new Annotation('C7').setFont('Times', VexFlowTests.Font.size + 2), 0);\n const notesBar1_part2 = [\n new StaveNote({\n keys: ['b/4'],\n duration: '8r',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '8s',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '8r',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '8s',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '8r',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '8s',\n stem_direction: -1,\n }),\n ];\n // create the beams for 8th notes in 2nd measure\n const beam1 = new Beam(notesBar1_part1);\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, staveBar1, notesBar1_part1.concat(notesBar1_part2));\n // Render beams\n beam1.setContext(ctx).draw();\n // bar 2 - juxtaposing second bar next to first bar\n const staveBar2 = new Stave(staveBar1.getWidth() + staveBar1.getX(), staveBar1.getY(), 220);\n staveBar2.setContext(ctx).draw();\n const notesBar2 = [\n new StaveNote({\n keys: ['b/4'],\n duration: '1s',\n stem_direction: -1,\n }),\n ];\n notesBar2[0].addModifier(new Annotation('F').setFont('Times', VexFlowTests.Font.size + 2), 0);\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, staveBar2, notesBar2);\n expect(0);\n}\nfunction drawSixtenthWithScratches(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 800, 150);\n // bar 1\n const staveBar1 = new Stave(10, 30, 300);\n staveBar1.setBegBarType(BarlineType.DOUBLE);\n staveBar1.setEndBarType(BarlineType.SINGLE);\n staveBar1.addClef('treble');\n staveBar1.addTimeSignature('4/4');\n staveBar1.addKeySignature('F');\n staveBar1.setContext(ctx).draw();\n // bar 1\n const notesBar1_part1 = [\n new StaveNote({\n keys: ['b/4'],\n duration: '16s',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '16s',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '16m',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '16s',\n stem_direction: -1,\n }),\n ];\n const notesBar1_part2 = [\n new StaveNote({\n keys: ['b/4'],\n duration: '16m',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '16s',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '16r',\n stem_direction: -1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '16s',\n stem_direction: -1,\n }),\n ];\n notesBar1_part1[0].addModifier(new Annotation('C7').setFont('Times', VexFlowTests.Font.size + 3), 0);\n // create the beams for 8th notes in 2nd measure\n const beam1 = new Beam(notesBar1_part1);\n const beam2 = new Beam(notesBar1_part2);\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, staveBar1, notesBar1_part1.concat(notesBar1_part2));\n // Render beams\n beam1.setContext(ctx).draw();\n beam2.setContext(ctx).draw();\n expect(0);\n}\nfunction drawThirtySecondWithScratches(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 800, 150);\n // bar 1\n const staveBar1 = new Stave(10, 30, 300);\n staveBar1.setBegBarType(BarlineType.DOUBLE);\n staveBar1.setEndBarType(BarlineType.SINGLE);\n staveBar1.addClef('treble');\n staveBar1.addTimeSignature('4/4');\n staveBar1.addKeySignature('F');\n staveBar1.setContext(ctx).draw();\n // bar 1\n const notesBar1_part1 = [\n new StaveNote({\n keys: ['b/4'],\n duration: '32s',\n stem_direction: 1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '32s',\n stem_direction: 1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '32m',\n stem_direction: 1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '32s',\n stem_direction: 1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '32m',\n stem_direction: 1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '32s',\n stem_direction: 1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '32r',\n stem_direction: 1,\n }),\n new StaveNote({\n keys: ['b/4'],\n duration: '32s',\n stem_direction: 1,\n }),\n ];\n notesBar1_part1[0].addModifier(new Annotation('C7').setFont('Times', VexFlowTests.Font.size + 3), 0);\n // Create the beams for 8th notes in 2nd measure.\n const beam1 = new Beam(notesBar1_part1);\n // Helper function to justify and draw a 4/4 voice.\n Formatter.FormatAndDraw(ctx, staveBar1, notesBar1_part1);\n // Render beams\n beam1.setContext(ctx).draw();\n expect(0);\n}\nVexFlowTests.register(RhythmTests);\nexport { RhythmTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Basic Stave Tests\n// TODO: Like Stave.setTempo(t: StaveTempoOptions, ...), Stave.setText(...) could declare an interface called StaveTextOptions.\n// This helps developers because they can use the named type in their code for type checking.\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Accidental } from '../src/accidental';\nimport { Beam } from '../src/beam';\nimport { Clef } from '../src/clef';\nimport { Formatter } from '../src/formatter';\nimport { KeySignature } from '../src/keysignature';\nimport { Modifier } from '../src/modifier';\nimport { Stave } from '../src/stave';\nimport { Barline, BarlineType } from '../src/stavebarline';\nimport { StaveNote } from '../src/stavenote';\nimport { Repetition } from '../src/staverepetition';\nimport { VoltaType } from '../src/stavevolta';\nimport { TextJustification } from '../src/textnote';\nimport { TimeSignature } from '../src/timesignature';\nconst StaveTests = {\n Start() {\n QUnit.module('Stave');\n test('StaveModifiers SortByCategory', sortByCategory);\n const run = VexFlowTests.runTests;\n run('Stave Draw Test', draw);\n run('Open Stave Draw Test', drawOpenStave);\n run('Multiple Stave Barline Test', drawMultipleMeasures);\n run('Multiple Stave Barline Test (14pt Section)', drawMultipleMeasures, { fontSize: 14 });\n run('Multiple Stave Repeats Test', drawRepeats);\n run('Stave End Modifiers Test', drawEndModifiers);\n run('Stave Repetition (CODA) Positioning', drawStaveRepetition, { yShift: 0 });\n run('Stave Repetition (CODA) Positioning (-20)', drawStaveRepetition, { yShift: -20 });\n run('Stave Repetition (CODA) Positioning (+10)', drawStaveRepetition, { yShift: +10 });\n run('Multiple Staves Volta Test', drawVolta);\n run('Volta + Modifier Measure Test', drawVoltaModifier);\n run('Tempo Test', drawTempo);\n run('Single Line Configuration Test', configureSingleLine);\n run('Batch Line Configuration Test', configureAllLines);\n run('Stave Text Test', drawStaveText);\n run('Multiple Line Stave Text Test', drawStaveTextMultiLine);\n run('Factory API', factoryAPI);\n },\n};\nfunction sortByCategory() {\n const stave = new Stave(0, 0, 300);\n const clef0 = new Clef('treble');\n const clef1 = new Clef('alto');\n const clef2 = new Clef('bass');\n const time0 = new TimeSignature('C');\n const time1 = new TimeSignature('C|');\n const time2 = new TimeSignature('9/8');\n const key0 = new KeySignature('G');\n const key1 = new KeySignature('F');\n const key2 = new KeySignature('D');\n const bar0 = new Barline(BarlineType.SINGLE);\n const bar1 = new Barline(BarlineType.DOUBLE);\n const bar2 = new Barline(BarlineType.NONE);\n // const order0 = { barlines: 0, clefs: 1, keysignatures: 2, timesignatures: 3 };\n // const order1 = { timesignatures: 0, keysignatures: 1, barlines: 2, clefs: 3 };\n const order0 = { Barline: 0, Clef: 1, KeySignature: 2, TimeSignature: 3 };\n const order1 = { TimeSignature: 0, KeySignature: 1, Barline: 2, Clef: 3 };\n const sortAndCompare = (title, a, b, order) => {\n stave.sortByCategory(a, order);\n // Verify that the two arrays are identical.\n let isSame = true;\n if (a.length !== b.length)\n isSame = false;\n for (let i = 0; i < a.length; ++i) {\n if (a[i] !== b[i])\n isSame = false;\n }\n ok(isSame, title);\n };\n sortAndCompare('Keep the original order 1', [bar0, bar1, clef0, clef1, key0, key1, time0, time1], [bar0, bar1, clef0, clef1, key0, key1, time0, time1], order0);\n sortAndCompare('Keep the original order 2', [time0, time1, key0, key1, bar0, bar1, clef0, clef1], [time0, time1, key0, key1, bar0, bar1, clef0, clef1], order1);\n sortAndCompare('Sort and keep 1', [bar0, bar1, clef0, clef1, key0, key1, time0, time1], [time0, time1, key0, key1, bar0, bar1, clef0, clef1], order1);\n sortAndCompare('Sort and keep 2', [bar0, clef0, key0, time0, key1, time1, clef1, bar1, time2, clef2, bar2, key2], [bar0, bar1, bar2, clef0, clef1, clef2, key0, key1, key2, time0, time1, time2], order0);\n sortAndCompare('Sort and keep 3', [bar2, clef2, key2, time0, key0, time2, clef1, bar1, time1, clef0, bar0, key1], [time0, time2, time1, key2, key0, key1, bar2, bar1, bar0, clef2, clef1, clef0], order1);\n}\nfunction draw(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 150);\n const stave = new Stave(10, 10, 300);\n stave.setContext(ctx);\n stave.draw();\n equal(stave.getYForNote(0), 100, 'getYForNote(0)');\n equal(stave.getYForLine(5), 100, 'getYForLine(5)');\n equal(stave.getYForLine(0), 50, 'getYForLine(0) - Top Line');\n equal(stave.getYForLine(4), 90, 'getYForLine(4) - Bottom Line');\n ok(true, 'all pass');\n}\nfunction drawOpenStave(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 350);\n let stave = new Stave(10, 10, 300, { left_bar: false });\n stave.setContext(ctx);\n stave.draw();\n stave = new Stave(10, 150, 300, { right_bar: false });\n stave.setContext(ctx);\n stave.draw();\n ok(true, 'all pass');\n}\nfunction drawMultipleMeasures(options, contextBuilder) {\n var _a, _b;\n expect(0);\n // Get the rendering context\n const ctx = contextBuilder(options.elementId, 550, 200);\n // bar 1\n const staveBar1 = new Stave(10, 50, 200);\n staveBar1.setBegBarType(BarlineType.REPEAT_BEGIN);\n staveBar1.setEndBarType(BarlineType.DOUBLE);\n staveBar1.setSection('A', 0, 0, (_a = options.params) === null || _a === void 0 ? void 0 : _a.fontSize, false);\n staveBar1.addClef('treble').setContext(ctx).draw();\n const notesBar1 = [\n new StaveNote({ keys: ['c/4'], duration: 'q' }),\n new StaveNote({ keys: ['d/4'], duration: 'q' }),\n new StaveNote({ keys: ['b/4'], duration: 'qr' }),\n new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: 'q' }),\n ];\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, staveBar1, notesBar1);\n // bar 2 - juxtaposing second bar next to first bar\n const staveBar2 = new Stave(staveBar1.getWidth() + staveBar1.getX(), staveBar1.getY(), 300);\n staveBar2.setSection('B', 0, 0, (_b = options.params) === null || _b === void 0 ? void 0 : _b.fontSize);\n staveBar2.setEndBarType(BarlineType.END);\n staveBar2.setContext(ctx).draw();\n const notesBar2_part1 = [\n new StaveNote({ keys: ['c/4'], duration: '8' }),\n new StaveNote({ keys: ['d/4'], duration: '8' }),\n new StaveNote({ keys: ['g/4'], duration: '8' }),\n new StaveNote({ keys: ['e/4'], duration: '8' }),\n ];\n const notesBar2_part2 = [\n new StaveNote({ keys: ['c/4'], duration: '8' }),\n new StaveNote({ keys: ['d/4'], duration: '8' }),\n new StaveNote({ keys: ['g/4'], duration: '8' }),\n new StaveNote({ keys: ['e/4'], duration: '8' }),\n ];\n // create the beams for 8th notes in 2nd measure\n const beam1 = new Beam(notesBar2_part1);\n const beam2 = new Beam(notesBar2_part2);\n const notesBar2 = notesBar2_part1.concat(notesBar2_part2);\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, staveBar2, notesBar2);\n // Render beams\n beam1.setContext(ctx).draw();\n beam2.setContext(ctx).draw();\n}\nfunction drawRepeats(options, contextBuilder) {\n expect(0);\n // Get the rendering context\n const ctx = contextBuilder(options.elementId, 750, 120);\n // bar 1\n const staveBar1 = new Stave(10, 0, 250);\n staveBar1.setBegBarType(BarlineType.REPEAT_BEGIN);\n staveBar1.setEndBarType(BarlineType.REPEAT_END);\n staveBar1.addClef('treble');\n staveBar1.addKeySignature('A');\n staveBar1.setContext(ctx).draw();\n const notesBar1 = [\n new StaveNote({ keys: ['c/4'], duration: 'q' }),\n new StaveNote({ keys: ['d/4'], duration: 'q' }),\n new StaveNote({ keys: ['b/4'], duration: 'qr' }),\n new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: 'q' }),\n ];\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, staveBar1, notesBar1);\n // bar 2 - juxtaposing second bar next to first bar\n const staveBar2 = new Stave(staveBar1.getWidth() + staveBar1.getX(), staveBar1.getY(), 250);\n staveBar2.setBegBarType(BarlineType.REPEAT_BEGIN);\n staveBar2.setEndBarType(BarlineType.REPEAT_END);\n staveBar2.setContext(ctx).draw();\n const notesBar2_part1 = [\n new StaveNote({ keys: ['c/4'], duration: '8' }),\n new StaveNote({ keys: ['d/4'], duration: '8' }),\n new StaveNote({ keys: ['g/4'], duration: '8' }),\n new StaveNote({ keys: ['e/4'], duration: '8' }),\n ];\n const notesBar2_part2 = [\n new StaveNote({ keys: ['c/4'], duration: '8' }),\n new StaveNote({ keys: ['d/4'], duration: '8' }),\n new StaveNote({ keys: ['g/4'], duration: '8' }),\n new StaveNote({ keys: ['e/4'], duration: '8' }),\n ];\n notesBar2_part2[0].addModifier(new Accidental('#'), 0);\n notesBar2_part2[1].addModifier(new Accidental('#'), 0);\n notesBar2_part2[3].addModifier(new Accidental('b'), 0);\n // create the beams for 8th notes in 2nd measure\n const beam1 = new Beam(notesBar2_part1);\n const beam2 = new Beam(notesBar2_part2);\n const notesBar2 = notesBar2_part1.concat(notesBar2_part2);\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, staveBar2, notesBar2);\n // Render beams\n beam1.setContext(ctx).draw();\n beam2.setContext(ctx).draw();\n // bar 3 - juxtaposing third bar next to second bar\n const staveBar3 = new Stave(staveBar2.getWidth() + staveBar2.getX(), staveBar2.getY(), 50);\n staveBar3.setContext(ctx).draw();\n const notesBar3 = [new StaveNote({ keys: ['d/5'], duration: 'wr' })];\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, staveBar3, notesBar3);\n // bar 4 - juxtaposing third bar next to third bar\n const staveBar4 = new Stave(staveBar3.getWidth() + staveBar3.getX(), staveBar3.getY(), 250 - staveBar1.getModifierXShift());\n staveBar4.setBegBarType(BarlineType.REPEAT_BEGIN);\n staveBar4.setEndBarType(BarlineType.REPEAT_END);\n staveBar4.setContext(ctx).draw();\n const notesBar4 = [\n new StaveNote({ keys: ['c/4'], duration: 'q' }),\n new StaveNote({ keys: ['d/4'], duration: 'q' }),\n new StaveNote({ keys: ['b/4'], duration: 'qr' }),\n new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: 'q' }),\n ];\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, staveBar4, notesBar4);\n}\nfunction drawEndModifiers(options, contextBuilder) {\n expect(0);\n const staveWidth = 230;\n const blockHeight = 80;\n let x = 10;\n let y = 0;\n const ctx = contextBuilder(options.elementId, 800, 700);\n function drawStavesInTwoLines(endBarLine) {\n // Draw a stave with one measure. Change the ending modifiers.\n // eslint-disable-next-line\n function drawStave(x, y, width, begMods, endMods) {\n const staveBar = new Stave(x, y, width - 10);\n if (begMods) {\n if (begMods.barLine !== undefined) {\n staveBar.setBegBarType(begMods.barLine);\n }\n if (begMods.clef !== undefined) {\n staveBar.addClef(begMods.clef);\n }\n if (begMods.keySig !== undefined) {\n staveBar.addKeySignature(begMods.keySig);\n }\n if (begMods.timeSig !== undefined) {\n staveBar.setTimeSignature(begMods.timeSig);\n }\n }\n if (endMods) {\n if (endMods.barLine !== undefined) {\n staveBar.setEndBarType(endMods.barLine);\n }\n if (endMods.clef !== undefined) {\n staveBar.addEndClef(endMods.clef);\n }\n if (endMods.keySig !== undefined) {\n staveBar.setEndKeySignature(endMods.keySig);\n }\n if (endMods.timeSig !== undefined) {\n staveBar.setEndTimeSignature(endMods.timeSig);\n }\n }\n staveBar.setContext(ctx).draw();\n const notesBar = [\n new StaveNote({ keys: ['c/4'], duration: 'q' }),\n new StaveNote({ keys: ['d/4'], duration: 'q' }),\n new StaveNote({ keys: ['b/4'], duration: 'qr' }),\n new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: 'q' }),\n ];\n Formatter.FormatAndDraw(ctx, staveBar, notesBar);\n }\n drawStave(x, y, staveWidth + 50, { barLine: BarlineType.REPEAT_BEGIN, clef: 'treble', keySig: 'A' }, { barLine: endBarLine, clef: 'bass' });\n x += staveWidth + 50;\n drawStave(x, y, staveWidth, { barLine: BarlineType.REPEAT_BEGIN }, { barLine: endBarLine, keySig: 'E' });\n x += staveWidth;\n drawStave(x, y, staveWidth, { barLine: BarlineType.REPEAT_BEGIN }, { barLine: endBarLine, timeSig: '2/4' });\n x += staveWidth;\n x = 10;\n y += blockHeight;\n drawStave(x, y, staveWidth, { barLine: BarlineType.REPEAT_BEGIN }, { barLine: endBarLine, clef: 'bass', timeSig: '2/4' });\n x += staveWidth;\n drawStave(x, y, staveWidth, { barLine: BarlineType.REPEAT_BEGIN }, { barLine: endBarLine, clef: 'treble', keySig: 'Ab' });\n x += staveWidth;\n drawStave(x, y, staveWidth, { barLine: BarlineType.REPEAT_BEGIN }, { barLine: endBarLine, clef: 'bass', keySig: 'Ab', timeSig: '2/4' });\n x += staveWidth;\n }\n y = 0;\n x = 10;\n // First pair of staves.\n drawStavesInTwoLines(BarlineType.SINGLE);\n y += blockHeight + 10;\n x = 10;\n // Second pair of staves, with double barlines.\n drawStavesInTwoLines(BarlineType.DOUBLE);\n y += blockHeight + 10;\n x = 10;\n // Third pair of staves, with \"two dot\" repeat barlines.\n drawStavesInTwoLines(BarlineType.REPEAT_END);\n y += blockHeight + 10;\n x = 10;\n // Fourth pair of staves, with \"two dots\" on each side of the barlines.\n drawStavesInTwoLines(BarlineType.REPEAT_BOTH);\n}\nfunction drawStaveRepetition(options, contextBuilder) {\n expect(0);\n // Get the rendering context\n const ctx = contextBuilder(options.elementId, 725, 200);\n // bar 1\n const mm1 = new Stave(10, 50, 150);\n mm1.addClef('treble');\n mm1.setRepetitionType(Repetition.type.DS_AL_FINE, options.params.yShift);\n mm1.setMeasure(1);\n mm1.setContext(ctx).draw();\n const notesmm1 = [\n new StaveNote({ keys: ['a/4'], duration: 'q' }),\n new StaveNote({ keys: ['f/4'], duration: 'q' }),\n new StaveNote({ keys: ['f/4'], duration: 'q' }),\n new StaveNote({ keys: ['a/4'], duration: 'q' }),\n ];\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, mm1, notesmm1);\n // bar 2 - juxtapose second measure\n const mm2 = new Stave(mm1.getWidth() + mm1.getX(), mm1.getY(), 150);\n mm2.setRepetitionType(Repetition.type.TO_CODA, options.params.yShift);\n mm2.setMeasure(2);\n mm2.setContext(ctx).draw();\n const notesmm2 = [\n new StaveNote({ keys: ['a/4'], duration: 'q' }),\n new StaveNote({ keys: ['f/4'], duration: 'q' }),\n new StaveNote({ keys: ['f/4'], duration: 'q' }),\n new StaveNote({ keys: ['a/4'], duration: 'q' }),\n ];\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, mm2, notesmm2);\n // bar 3 - juxtapose third measure\n const mm3 = new Stave(mm2.getWidth() + mm2.getX(), mm1.getY(), 150);\n mm3.setRepetitionType(Repetition.type.DS_AL_CODA, options.params.yShift);\n mm3.setMeasure(3);\n mm3.setContext(ctx).draw();\n const notesmm3 = [\n new StaveNote({ keys: ['a/4'], duration: 'q' }),\n new StaveNote({ keys: ['f/4'], duration: 'q' }),\n new StaveNote({ keys: ['f/4'], duration: 'q' }),\n new StaveNote({ keys: ['a/4'], duration: 'q' }),\n ];\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, mm3, notesmm3);\n // bar 4 - juxtapose fourth measure\n const mm4 = new Stave(mm3.getWidth() + mm3.getX(), mm1.getY(), 150);\n mm4.setRepetitionType(Repetition.type.CODA_LEFT, options.params.yShift);\n mm4.setMeasure(4);\n mm4.setContext(ctx).draw();\n const notesmm4 = [\n new StaveNote({ keys: ['a/4'], duration: 'q' }),\n new StaveNote({ keys: ['f/4'], duration: 'q' }),\n new StaveNote({ keys: ['f/4'], duration: 'q' }),\n new StaveNote({ keys: ['a/4'], duration: 'q' }),\n ];\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, mm4, notesmm4);\n}\nfunction drawVolta(options, contextBuilder) {\n expect(0);\n // Get the rendering context\n const ctx = contextBuilder(options.elementId, 725, 200);\n // bar 1\n const mm1 = new Stave(10, 50, 125);\n mm1.setBegBarType(BarlineType.REPEAT_BEGIN);\n mm1.setRepetitionType(Repetition.type.SEGNO_LEFT);\n mm1.addClef('treble');\n mm1.addKeySignature('A');\n mm1.setMeasure(1);\n mm1.setSection('A', 0);\n mm1.setContext(ctx).draw();\n const notesmm1 = [new StaveNote({ keys: ['c/4'], duration: 'w' })];\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, mm1, notesmm1);\n // bar 2 - juxtapose second measure\n const mm2 = new Stave(mm1.getWidth() + mm1.getX(), mm1.getY(), 60);\n mm2.setRepetitionType(Repetition.type.CODA_RIGHT);\n mm2.setMeasure(2);\n mm2.setContext(ctx).draw();\n const notesmm2 = [new StaveNote({ keys: ['d/4'], duration: 'w' })];\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, mm2, notesmm2);\n // bar 3 - juxtapose third measure\n const mm3 = new Stave(mm2.getWidth() + mm2.getX(), mm1.getY(), 60);\n mm3.setVoltaType(VoltaType.BEGIN, '1.', -5);\n mm3.setMeasure(3);\n mm3.setContext(ctx).draw();\n const notesmm3 = [new StaveNote({ keys: ['e/4'], duration: 'w' })];\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, mm3, notesmm3);\n // bar 4 - juxtapose fourth measure\n const mm4 = new Stave(mm3.getWidth() + mm3.getX(), mm1.getY(), 60);\n mm4.setVoltaType(VoltaType.MID, '', -5);\n mm4.setMeasure(4);\n mm4.setContext(ctx).draw();\n const notesmm4 = [new StaveNote({ keys: ['f/4'], duration: 'w' })];\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, mm4, notesmm4);\n // bar 5 - juxtapose fifth measure\n const mm5 = new Stave(mm4.getWidth() + mm4.getX(), mm1.getY(), 60);\n mm5.setEndBarType(BarlineType.REPEAT_END);\n mm5.setVoltaType(VoltaType.END, '', -5);\n mm5.setMeasure(5);\n mm5.setContext(ctx).draw();\n const notesmm5 = [new StaveNote({ keys: ['g/4'], duration: 'w' })];\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, mm5, notesmm5);\n // bar 6 - juxtapose sixth measure\n const mm6 = new Stave(mm5.getWidth() + mm5.getX(), mm1.getY(), 60);\n mm6.setVoltaType(VoltaType.BEGIN_END, '2.', -5);\n mm6.setEndBarType(BarlineType.DOUBLE);\n mm6.setMeasure(6);\n mm6.setContext(ctx).draw();\n const notesmm6 = [new StaveNote({ keys: ['a/4'], duration: 'w' })];\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, mm6, notesmm6);\n // bar 7 - juxtapose seventh measure\n const mm7 = new Stave(mm6.getWidth() + mm6.getX(), mm1.getY(), 60);\n mm7.setMeasure(7);\n mm7.setSection('B', 0);\n mm7.setContext(ctx).draw();\n const notesmm7 = [new StaveNote({ keys: ['b/4'], duration: 'w' })];\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, mm7, notesmm7);\n // bar 8 - juxtapose eighth measure\n const mm8 = new Stave(mm7.getWidth() + mm7.getX(), mm1.getY(), 60);\n mm8.setEndBarType(BarlineType.DOUBLE);\n mm8.setRepetitionType(Repetition.type.DS_AL_CODA);\n mm8.setMeasure(8);\n mm8.setContext(ctx).draw();\n const notesmm8 = [new StaveNote({ keys: ['c/5'], duration: 'w' })];\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, mm8, notesmm8);\n // bar 9 - juxtapose ninth measure\n const mm9 = new Stave(mm8.getWidth() + mm8.getX() + 20, mm1.getY(), 125);\n mm9.setEndBarType(BarlineType.END);\n mm9.setRepetitionType(Repetition.type.CODA_LEFT);\n mm9.addClef('treble');\n mm9.addKeySignature('A');\n mm9.setMeasure(9);\n mm9.setContext(ctx).draw();\n const notesmm9 = [new StaveNote({ keys: ['d/5'], duration: 'w' })];\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, mm9, notesmm9);\n}\nfunction drawVoltaModifier(options, contextBuilder) {\n expect(0);\n // Get the rendering context\n const ctx = contextBuilder(options.elementId, 1100, 200);\n // bar 1: volta begin, with modifiers (clef, keysignature)\n const mm1 = new Stave(10, 50, 175);\n mm1.setBegBarType(BarlineType.REPEAT_BEGIN);\n mm1.setVoltaType(VoltaType.BEGIN_END, '1.', -5);\n mm1.addClef('treble');\n mm1.addKeySignature('A');\n mm1.setMeasure(1);\n mm1.setSection('A', 0);\n mm1.setContext(ctx).draw();\n const notesmm1 = [new StaveNote({ keys: ['c/4'], duration: 'w' })];\n // Helper function to justify and draw a 4/4 voice\n Formatter.FormatAndDraw(ctx, mm1, notesmm1);\n // bar 2: volta begin_mid, with modifiers (clef, keysignature)\n const mm2 = new Stave(mm1.getX() + mm1.getWidth(), mm1.getY(), 175);\n mm2.setBegBarType(BarlineType.REPEAT_BEGIN);\n mm2.setRepetitionType(Repetition.type.DS);\n mm2.setVoltaType(VoltaType.BEGIN, '2.', -5);\n mm2.addClef('treble');\n mm2.addKeySignature('A');\n mm2.setMeasure(2);\n mm2.setContext(ctx).draw();\n const notesmm2 = [new StaveNote({ keys: ['c/4'], duration: 'w' })];\n Formatter.FormatAndDraw(ctx, mm2, notesmm2);\n // bar 3: volta mid, with modifiers (clef, keysignature)\n const mm3 = new Stave(mm2.getX() + mm2.getWidth(), mm2.getY(), 175);\n mm3.setVoltaType(VoltaType.MID, '', -5);\n mm3.setRepetitionType(Repetition.type.DS);\n mm3.addClef('treble');\n mm3.addKeySignature('B');\n mm3.setMeasure(3);\n mm3.setSection('B', 0);\n mm3.setContext(ctx).draw();\n const notesmm3 = [new StaveNote({ keys: ['c/4'], duration: 'w' })];\n Formatter.FormatAndDraw(ctx, mm3, notesmm3);\n // bar 4: volta end, with modifiers (clef, keysignature)\n const mm4 = new Stave(mm3.getX() + mm3.getWidth(), mm3.getY(), 175);\n mm4.setVoltaType(VoltaType.END, '1.', -5);\n mm4.setRepetitionType(Repetition.type.DS);\n mm4.addClef('treble');\n mm4.addKeySignature('A');\n mm4.setMeasure(4);\n mm4.setSection('C', 0);\n mm4.setContext(ctx).draw();\n const notesmm4 = [new StaveNote({ keys: ['c/4'], duration: 'w' })];\n Formatter.FormatAndDraw(ctx, mm4, notesmm4);\n // bar 5: d.s. shift (similar potential x-shift concern)\n const mm5 = new Stave(mm4.getX() + mm4.getWidth(), mm4.getY(), 175);\n // mm5.addModifier(new Repetition(Repetition.type.DS, mm4.getX() + mm4.getWidth(), 50), StaveModifierPosition.RIGHT);\n mm5.setEndBarType(BarlineType.DOUBLE);\n mm5.setRepetitionType(Repetition.type.DS);\n mm5.addClef('treble');\n mm5.addKeySignature('A');\n mm5.setMeasure(5);\n mm5.setSection('D', 0);\n mm5.setContext(ctx).draw();\n const notesmm5 = [new StaveNote({ keys: ['c/4'], duration: 'w' })];\n Formatter.FormatAndDraw(ctx, mm5, notesmm5);\n // bar 6: d.s. without modifiers\n const mm6 = new Stave(mm5.getX() + mm5.getWidth(), mm5.getY(), 175);\n // mm5.addModifier(new Repetition(Repetition.type.DS, mm4.getX() + mm4.getWidth(), 50), StaveModifierPosition.RIGHT);\n mm6.setRepetitionType(Repetition.type.DS);\n mm6.setMeasure(6);\n mm6.setSection('E', 0);\n mm6.setContext(ctx).draw();\n const notesmm6 = [new StaveNote({ keys: ['c/4'], duration: 'w' })];\n Formatter.FormatAndDraw(ctx, mm6, notesmm6);\n}\nfunction drawTempo(options, contextBuilder) {\n expect(0);\n const ctx = contextBuilder(options.elementId, 725, 350);\n const padding = 10;\n let x = 0;\n let y = 50;\n function drawTempoStaveBar(width, tempo, tempo_y, notes) {\n const staveBar = new Stave(padding + x, y, width);\n if (x === 0)\n staveBar.addClef('treble');\n staveBar.setTempo(tempo, tempo_y);\n staveBar.setContext(ctx).draw();\n const notesBar = notes || [\n new StaveNote({ keys: ['c/4'], duration: 'q' }),\n new StaveNote({ keys: ['d/4'], duration: 'q' }),\n new StaveNote({ keys: ['b/4'], duration: 'q' }),\n new StaveNote({ keys: ['c/4'], duration: 'q' }),\n ];\n Formatter.FormatAndDraw(ctx, staveBar, notesBar);\n x += width;\n }\n drawTempoStaveBar(120, { duration: 'q', dots: 1, bpm: 80 }, 0);\n drawTempoStaveBar(100, { duration: '8', dots: 2, bpm: 90 }, 0);\n drawTempoStaveBar(100, { duration: '16', dots: 1, bpm: 96 }, 0);\n drawTempoStaveBar(100, { duration: '32', bpm: 70 }, 0);\n drawTempoStaveBar(250, { name: 'Andante', bpm: 120 }, -20, [\n new StaveNote({ keys: ['c/4'], duration: '8' }),\n new StaveNote({ keys: ['d/4'], duration: '8' }),\n new StaveNote({ keys: ['g/4'], duration: '8' }),\n new StaveNote({ keys: ['e/5'], duration: '8' }),\n new StaveNote({ keys: ['c/4'], duration: '8' }),\n new StaveNote({ keys: ['d/4'], duration: '8' }),\n new StaveNote({ keys: ['g/4'], duration: '8' }),\n new StaveNote({ keys: ['e/4'], duration: '8' }),\n ]);\n x = 0;\n y += 150;\n drawTempoStaveBar(120, { duration: 'w', bpm: 80 }, 0);\n drawTempoStaveBar(100, { duration: 'h', bpm: 90 }, 0);\n drawTempoStaveBar(100, { duration: 'q', bpm: 96 }, 0);\n drawTempoStaveBar(100, { duration: '8', bpm: 70 }, 0);\n drawTempoStaveBar(250, { name: 'Andante grazioso' }, 0, [\n new StaveNote({ keys: ['c/4'], duration: '8' }),\n new StaveNote({ keys: ['d/4'], duration: '8' }),\n new StaveNote({ keys: ['g/4'], duration: '8' }),\n new StaveNote({ keys: ['e/4'], duration: '8' }),\n new StaveNote({ keys: ['c/4'], duration: '8' }),\n new StaveNote({ keys: ['d/4'], duration: '8' }),\n new StaveNote({ keys: ['g/4'], duration: '8' }),\n new StaveNote({ keys: ['e/4'], duration: '8' }),\n ]);\n}\nfunction configureSingleLine(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 120);\n const stave = new Stave(10, 10, 300);\n stave\n .setConfigForLine(0, { visible: true })\n .setConfigForLine(1, { visible: false })\n .setConfigForLine(2, { visible: true })\n .setConfigForLine(3, { visible: false })\n .setConfigForLine(4, { visible: true });\n stave.setContext(ctx).draw();\n const config = stave.getConfigForLines();\n equal(config[0].visible, true, 'getLinesConfiguration() - Line 0');\n equal(config[1].visible, false, 'getLinesConfiguration() - Line 1');\n equal(config[2].visible, true, 'getLinesConfiguration() - Line 2');\n equal(config[3].visible, false, 'getLinesConfiguration() - Line 3');\n equal(config[4].visible, true, 'getLinesConfiguration() - Line 4');\n ok(true, 'all pass');\n}\nfunction configureAllLines(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 120);\n const stave = new Stave(10, 10, 300);\n stave\n .setConfigForLines([{ visible: false }, {}, { visible: false }, { visible: true }, { visible: false }])\n .setContext(ctx)\n .draw();\n const config = stave.getConfigForLines();\n equal(config[0].visible, false, 'getLinesConfiguration() - Line 0');\n equal(config[1].visible, true, 'getLinesConfiguration() - Line 1');\n equal(config[2].visible, false, 'getLinesConfiguration() - Line 2');\n equal(config[3].visible, true, 'getLinesConfiguration() - Line 3');\n equal(config[4].visible, false, 'getLinesConfiguration() - Line 4');\n ok(true, 'all pass');\n}\nfunction drawStaveText(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 900, 140);\n const stave = new Stave(300, 10, 300);\n stave.setText('Violin', Modifier.Position.LEFT);\n stave.setText('Right Text', Modifier.Position.RIGHT);\n stave.setText('Above Text', Modifier.Position.ABOVE);\n stave.setText('Below Text', Modifier.Position.BELOW);\n stave.setContext(ctx).draw();\n ok(true, 'all pass');\n}\nfunction drawStaveTextMultiLine(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 900, 200);\n const stave = new Stave(300, 40, 300);\n stave.setText('Violin', Modifier.Position.LEFT, { shift_y: -10 });\n stave.setText('2nd line', Modifier.Position.LEFT, { shift_y: 10 });\n stave.setText('Right Text', Modifier.Position.RIGHT, { shift_y: -10 });\n stave.setText('2nd line', Modifier.Position.RIGHT, { shift_y: 10 });\n stave.setText('Above Text', Modifier.Position.ABOVE, { shift_y: -10 });\n stave.setText('2nd line', Modifier.Position.ABOVE, { shift_y: 10 });\n stave.setText('Left Below Text', Modifier.Position.BELOW, { shift_y: -10, justification: TextJustification.LEFT });\n stave.setText('Right Below Text', Modifier.Position.BELOW, { shift_y: 10, justification: TextJustification.RIGHT });\n stave.setContext(ctx).draw();\n ok(true, 'all pass');\n}\nfunction factoryAPI(options) {\n const f = VexFlowTests.makeFactory(options, 900, 200);\n const stave = f.Stave({ x: 300, y: 40, width: 300 });\n stave.setText('Violin', Modifier.Position.LEFT, { shift_y: -10 });\n stave.setText('2nd line', Modifier.Position.LEFT, { shift_y: 10 });\n f.draw();\n ok(true, 'all pass');\n}\nVexFlowTests.register(StaveTests);\nexport { StaveTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// StaveConnector Tests\n// TODO: Should we change StaveConnector.type => StaveConnectorType? We are inconsistent with this.\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Flow } from '../src/flow';\nimport { Modifier } from '../src/modifier';\nimport { Stave } from '../src/stave';\nimport { BarlineType } from '../src/stavebarline';\nimport { StaveConnector } from '../src/staveconnector';\nconst StaveConnectorTests = {\n Start() {\n QUnit.module('StaveConnector');\n const run = VexFlowTests.runTests;\n run('Single Draw Test', drawSingle);\n run('Single Draw Test, 4px Stave Line Thickness', drawSingle4pxStaveLines);\n run('Single Both Sides Test', drawSingleBoth);\n run('Double Draw Test', drawDouble);\n run('Bold Double Line Left Draw Test', drawRepeatBegin);\n run('Bold Double Line Right Draw Test', drawRepeatEnd);\n run('Thin Double Line Right Draw Test', drawThinDouble);\n run('Bold Double Lines Overlapping Draw Test', drawRepeatAdjacent);\n run('Bold Double Lines Offset Draw Test', drawRepeatOffset);\n run('Bold Double Lines Offset Draw Test 2', drawRepeatOffset2);\n run('Brace Draw Test', drawBrace);\n run('Brace Wide Draw Test', drawBraceWide);\n run('Bracket Draw Test', drawBracket);\n run('Combined Draw Test', drawCombined);\n },\n};\nfunction drawSingle(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 300);\n const stave1 = new Stave(25, 10, 300);\n const stave2 = new Stave(25, 120, 300);\n stave1.setContext(ctx);\n stave2.setContext(ctx);\n const connector = new StaveConnector(stave1, stave2);\n connector.setType(StaveConnector.type.SINGLE);\n connector.setContext(ctx);\n stave1.draw();\n stave2.draw();\n connector.draw();\n ok(true, 'all pass');\n}\nfunction drawSingle4pxStaveLines(options, contextBuilder) {\n const oldThickness = Flow.STAVE_LINE_THICKNESS;\n Flow.STAVE_LINE_THICKNESS = 4;\n const ctx = contextBuilder(options.elementId, 400, 300);\n const stave1 = new Stave(25, 10, 300);\n const stave2 = new Stave(25, 120, 300);\n stave1.setContext(ctx);\n stave2.setContext(ctx);\n const connector = new StaveConnector(stave1, stave2);\n connector.setType(StaveConnector.type.SINGLE);\n connector.setContext(ctx);\n stave1.draw();\n stave2.draw();\n connector.draw();\n Flow.STAVE_LINE_THICKNESS = oldThickness;\n ok(true, 'all pass');\n}\nfunction drawSingleBoth(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 300);\n const stave1 = new Stave(25, 10, 300);\n const stave2 = new Stave(25, 120, 300);\n stave1.setContext(ctx);\n stave2.setContext(ctx);\n const connector1 = new StaveConnector(stave1, stave2);\n connector1.setType(StaveConnector.type.SINGLE_LEFT);\n connector1.setContext(ctx);\n const connector2 = new StaveConnector(stave1, stave2);\n connector2.setType(StaveConnector.type.SINGLE_RIGHT);\n connector2.setContext(ctx);\n stave1.draw();\n stave2.draw();\n connector1.draw();\n connector2.draw();\n ok(true, 'all pass');\n}\nfunction drawDouble(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 300);\n const stave1 = new Stave(25, 10, 300);\n const stave2 = new Stave(25, 120, 300);\n stave1.setContext(ctx);\n stave2.setContext(ctx);\n const connector = new StaveConnector(stave1, stave2);\n const line = new StaveConnector(stave1, stave2);\n connector.setType(StaveConnector.type.DOUBLE);\n connector.setContext(ctx);\n line.setType(StaveConnector.type.SINGLE);\n connector.setContext(ctx);\n line.setContext(ctx);\n stave1.draw();\n stave2.draw();\n connector.draw();\n line.draw();\n ok(true, 'all pass');\n}\nfunction drawBrace(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 450, 300);\n const stave1 = new Stave(100, 10, 300);\n const stave2 = new Stave(100, 120, 300);\n stave1.setContext(ctx);\n stave2.setContext(ctx);\n const connector = new StaveConnector(stave1, stave2);\n const line = new StaveConnector(stave1, stave2);\n connector.setType(StaveConnector.type.BRACE);\n connector.setContext(ctx);\n connector.setText('Piano');\n line.setType(StaveConnector.type.SINGLE);\n connector.setContext(ctx);\n line.setContext(ctx);\n stave1.draw();\n stave2.draw();\n connector.draw();\n line.draw();\n ok(true, 'all pass');\n}\nfunction drawBraceWide(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 300);\n const stave1 = new Stave(25, -20, 300);\n const stave2 = new Stave(25, 200, 300);\n stave1.setContext(ctx);\n stave2.setContext(ctx);\n const connector = new StaveConnector(stave1, stave2);\n const line = new StaveConnector(stave1, stave2);\n connector.setType(StaveConnector.type.BRACE);\n connector.setContext(ctx);\n line.setType(StaveConnector.type.SINGLE);\n connector.setContext(ctx);\n line.setContext(ctx);\n stave1.draw();\n stave2.draw();\n connector.draw();\n line.draw();\n ok(true, 'all pass');\n}\nfunction drawBracket(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 300);\n const stave1 = new Stave(25, 10, 300);\n const stave2 = new Stave(25, 120, 300);\n stave1.setContext(ctx);\n stave2.setContext(ctx);\n const connector = new StaveConnector(stave1, stave2);\n const line = new StaveConnector(stave1, stave2);\n connector.setType(StaveConnector.type.BRACKET);\n connector.setContext(ctx);\n line.setType(StaveConnector.type.SINGLE);\n connector.setContext(ctx);\n line.setContext(ctx);\n stave1.draw();\n stave2.draw();\n connector.draw();\n line.draw();\n ok(true, 'all pass');\n}\nfunction drawRepeatBegin(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 300);\n const stave1 = new Stave(25, 10, 300);\n const stave2 = new Stave(25, 120, 300);\n stave1.setContext(ctx);\n stave2.setContext(ctx);\n stave1.setBegBarType(BarlineType.REPEAT_BEGIN);\n stave2.setBegBarType(BarlineType.REPEAT_BEGIN);\n const line = new StaveConnector(stave1, stave2);\n line.setType(StaveConnector.type.BOLD_DOUBLE_LEFT);\n line.setContext(ctx);\n stave1.draw();\n stave2.draw();\n line.draw();\n ok(true, 'all pass');\n}\nfunction drawRepeatEnd(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 300);\n const stave1 = new Stave(25, 10, 300);\n const stave2 = new Stave(25, 120, 300);\n stave1.setContext(ctx);\n stave2.setContext(ctx);\n stave1.setEndBarType(BarlineType.REPEAT_END);\n stave2.setEndBarType(BarlineType.REPEAT_END);\n const line = new StaveConnector(stave1, stave2);\n line.setType(StaveConnector.type.BOLD_DOUBLE_RIGHT);\n line.setContext(ctx);\n stave1.draw();\n stave2.draw();\n line.draw();\n ok(true, 'all pass');\n}\nfunction drawThinDouble(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 300);\n const stave1 = new Stave(25, 10, 300);\n const stave2 = new Stave(25, 120, 300);\n stave1.setContext(ctx);\n stave2.setContext(ctx);\n stave1.setEndBarType(BarlineType.DOUBLE);\n stave2.setEndBarType(BarlineType.DOUBLE);\n const line = new StaveConnector(stave1, stave2);\n line.setType(StaveConnector.type.THIN_DOUBLE);\n line.setContext(ctx);\n stave1.draw();\n stave2.draw();\n line.draw();\n ok(true, 'all pass');\n}\nfunction drawRepeatAdjacent(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 300);\n const stave1 = new Stave(25, 10, 150);\n const stave2 = new Stave(25, 120, 150);\n const stave3 = new Stave(175, 10, 150);\n const stave4 = new Stave(175, 120, 150);\n stave1.setContext(ctx);\n stave2.setContext(ctx);\n stave3.setContext(ctx);\n stave4.setContext(ctx);\n stave1.setEndBarType(BarlineType.REPEAT_END);\n stave2.setEndBarType(BarlineType.REPEAT_END);\n stave3.setEndBarType(BarlineType.END);\n stave4.setEndBarType(BarlineType.END);\n stave1.setBegBarType(BarlineType.REPEAT_BEGIN);\n stave2.setBegBarType(BarlineType.REPEAT_BEGIN);\n stave3.setBegBarType(BarlineType.REPEAT_BEGIN);\n stave4.setBegBarType(BarlineType.REPEAT_BEGIN);\n const connector1 = new StaveConnector(stave1, stave2);\n const connector2 = new StaveConnector(stave1, stave2);\n const connector3 = new StaveConnector(stave3, stave4);\n const connector4 = new StaveConnector(stave3, stave4);\n connector1.setContext(ctx);\n connector2.setContext(ctx);\n connector3.setContext(ctx);\n connector4.setContext(ctx);\n connector1.setType(StaveConnector.type.BOLD_DOUBLE_LEFT);\n connector2.setType(StaveConnector.type.BOLD_DOUBLE_RIGHT);\n connector3.setType(StaveConnector.type.BOLD_DOUBLE_LEFT);\n connector4.setType(StaveConnector.type.BOLD_DOUBLE_RIGHT);\n stave1.draw();\n stave2.draw();\n stave3.draw();\n stave4.draw();\n connector1.draw();\n connector2.draw();\n connector3.draw();\n connector4.draw();\n ok(true, 'all pass');\n}\nfunction drawRepeatOffset2(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 300);\n const stave1 = new Stave(25, 10, 150);\n const stave2 = new Stave(25, 120, 150);\n const stave3 = new Stave(175, 10, 150);\n const stave4 = new Stave(175, 120, 150);\n stave1.setContext(ctx);\n stave2.setContext(ctx);\n stave3.setContext(ctx);\n stave4.setContext(ctx);\n stave1.addClef('treble');\n stave2.addClef('bass');\n stave3.addClef('alto');\n stave4.addClef('treble');\n stave1.addTimeSignature('4/4');\n stave2.addTimeSignature('4/4');\n stave3.addTimeSignature('6/8');\n stave4.addTimeSignature('6/8');\n stave1.setEndBarType(BarlineType.REPEAT_END);\n stave2.setEndBarType(BarlineType.REPEAT_END);\n stave3.setEndBarType(BarlineType.END);\n stave4.setEndBarType(BarlineType.END);\n stave1.setBegBarType(BarlineType.REPEAT_BEGIN);\n stave2.setBegBarType(BarlineType.REPEAT_BEGIN);\n stave3.setBegBarType(BarlineType.REPEAT_BEGIN);\n stave4.setBegBarType(BarlineType.REPEAT_BEGIN);\n const connector1 = new StaveConnector(stave1, stave2);\n const connector2 = new StaveConnector(stave1, stave2);\n const connector3 = new StaveConnector(stave3, stave4);\n const connector4 = new StaveConnector(stave3, stave4);\n const connector5 = new StaveConnector(stave3, stave4);\n connector1.setContext(ctx);\n connector2.setContext(ctx);\n connector3.setContext(ctx);\n connector4.setContext(ctx);\n connector5.setContext(ctx);\n connector1.setType(StaveConnector.type.BOLD_DOUBLE_LEFT);\n connector2.setType(StaveConnector.type.BOLD_DOUBLE_RIGHT);\n connector3.setType(StaveConnector.type.BOLD_DOUBLE_LEFT);\n connector4.setType(StaveConnector.type.BOLD_DOUBLE_RIGHT);\n connector5.setType(StaveConnector.type.SINGLE_LEFT);\n connector1.setXShift(stave1.getModifierXShift());\n connector3.setXShift(stave3.getModifierXShift());\n stave1.draw();\n stave2.draw();\n stave3.draw();\n stave4.draw();\n connector1.draw();\n connector2.draw();\n connector3.draw();\n connector4.draw();\n connector5.draw();\n ok(true, 'all pass');\n}\nfunction drawRepeatOffset(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 300);\n const stave1 = new Stave(25, 10, 150);\n const stave2 = new Stave(25, 120, 150);\n const stave3 = new Stave(185, 10, 150);\n const stave4 = new Stave(185, 120, 150);\n stave1.setContext(ctx);\n stave2.setContext(ctx);\n stave3.setContext(ctx);\n stave4.setContext(ctx);\n stave1.addClef('bass');\n stave2.addClef('alto');\n stave3.addClef('treble');\n stave4.addClef('tenor');\n stave3.addKeySignature('Ab');\n stave4.addKeySignature('Ab');\n stave1.addTimeSignature('4/4');\n stave2.addTimeSignature('4/4');\n stave3.addTimeSignature('6/8');\n stave4.addTimeSignature('6/8');\n stave1.setEndBarType(BarlineType.REPEAT_END);\n stave2.setEndBarType(BarlineType.REPEAT_END);\n stave3.setEndBarType(BarlineType.END);\n stave4.setEndBarType(BarlineType.END);\n stave1.setBegBarType(BarlineType.REPEAT_BEGIN);\n stave2.setBegBarType(BarlineType.REPEAT_BEGIN);\n stave3.setBegBarType(BarlineType.REPEAT_BEGIN);\n stave4.setBegBarType(BarlineType.REPEAT_BEGIN);\n const connector1 = new StaveConnector(stave1, stave2);\n const connector2 = new StaveConnector(stave1, stave2);\n const connector3 = new StaveConnector(stave3, stave4);\n const connector4 = new StaveConnector(stave3, stave4);\n const connector5 = new StaveConnector(stave3, stave4);\n connector1.setContext(ctx);\n connector2.setContext(ctx);\n connector3.setContext(ctx);\n connector4.setContext(ctx);\n connector5.setContext(ctx);\n connector1.setType(StaveConnector.type.BOLD_DOUBLE_LEFT);\n connector2.setType(StaveConnector.type.BOLD_DOUBLE_RIGHT);\n connector3.setType(StaveConnector.type.BOLD_DOUBLE_LEFT);\n connector4.setType(StaveConnector.type.BOLD_DOUBLE_RIGHT);\n connector5.setType(StaveConnector.type.SINGLE_LEFT);\n connector1.setXShift(stave1.getModifierXShift());\n connector3.setXShift(stave3.getModifierXShift());\n stave1.draw();\n stave2.draw();\n stave3.draw();\n stave4.draw();\n connector1.draw();\n connector2.draw();\n connector3.draw();\n connector4.draw();\n connector5.draw();\n ok(true, 'all pass');\n}\nfunction drawCombined(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 550, 700);\n const stave1 = new Stave(150, 10, 300);\n const stave2 = new Stave(150, 100, 300);\n const stave3 = new Stave(150, 190, 300);\n const stave4 = new Stave(150, 280, 300);\n const stave5 = new Stave(150, 370, 300);\n const stave6 = new Stave(150, 460, 300);\n const stave7 = new Stave(150, 560, 300);\n stave1.setText('Violin', Modifier.Position.LEFT);\n stave1.setContext(ctx);\n stave2.setContext(ctx);\n stave3.setContext(ctx);\n stave4.setContext(ctx);\n stave5.setContext(ctx);\n stave6.setContext(ctx);\n stave7.setContext(ctx);\n const conn_single = new StaveConnector(stave1, stave7);\n const conn_double = new StaveConnector(stave2, stave3);\n const conn_bracket = new StaveConnector(stave4, stave7);\n const conn_none = new StaveConnector(stave4, stave5);\n const conn_brace = new StaveConnector(stave6, stave7);\n conn_single.setType(StaveConnector.type.SINGLE);\n conn_double.setType(StaveConnector.type.DOUBLE);\n conn_bracket.setType(StaveConnector.type.BRACKET);\n conn_brace.setType(StaveConnector.type.BRACE);\n conn_brace.setXShift(-5);\n conn_double.setText('Piano');\n conn_none.setText('Multiple', { shift_y: -15 });\n conn_none.setText('Line Text', { shift_y: 15 });\n conn_brace.setText('Harpsichord');\n conn_single.setContext(ctx);\n conn_double.setContext(ctx);\n conn_bracket.setContext(ctx);\n conn_none.setContext(ctx);\n conn_brace.setContext(ctx);\n stave1.draw();\n stave2.draw();\n stave3.draw();\n stave4.draw();\n stave5.draw();\n stave6.draw();\n stave7.draw();\n conn_single.draw();\n conn_double.draw();\n conn_bracket.draw();\n conn_none.draw();\n conn_brace.draw();\n ok(true, 'all pass');\n}\nVexFlowTests.register(StaveConnectorTests);\nexport { StaveConnectorTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// Author: Raffaele Viglianti, 2012\n//\n// StaveHairpin Tests\n// TODO: Incorrect property names in the options object: vo, left_ho, right_ho.\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { StaveHairpin } from '../src/stavehairpin';\nconst StaveHairpinTests = {\n Start() {\n QUnit.module('StaveHairpin');\n const run = VexFlowTests.runTests;\n run('Simple StaveHairpin', simple);\n run('Horizontal Offset StaveHairpin', horizontal);\n run('Vertical Offset StaveHairpin', vertical);\n run('Height StaveHairpin', height);\n },\n};\n/**\n * Helper function to draw a single hairpin (either crescendo or decrescendo).\n * @param type is StaveHairpin.type.CRESC or StaveHairpin.type.DECRESC.\n * @param position is Modifier.Position.ABOVE or Modifier.Position.BELOW.\n */\nfunction drawHairpin(first_note, last_note, ctx, type, position, options) {\n const hairpin = new StaveHairpin({ first_note, last_note }, type);\n hairpin.setContext(ctx);\n hairpin.setPosition(position);\n if (options) {\n hairpin.setRenderOptions(options);\n }\n hairpin.draw();\n}\n/**\n * Helper function\n */\nfunction createTest(drawTwoHairpins) {\n return (options) => {\n const factory = VexFlowTests.makeFactory(options);\n const ctx = factory.getContext();\n const stave = factory.Stave();\n const notes = [\n factory\n .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: 1, duration: '4' })\n .addModifier(factory.Accidental({ type: 'b' }), 0)\n .addModifier(factory.Accidental({ type: '#' }), 1),\n factory.StaveNote({ keys: ['d/4'], stem_direction: 1, duration: '4' }),\n factory.StaveNote({ keys: ['e/4'], stem_direction: 1, duration: '4' }),\n factory.StaveNote({ keys: ['f/4'], stem_direction: 1, duration: '4' }),\n ];\n const voice = factory.Voice().addTickables(notes);\n factory.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n factory.draw();\n drawTwoHairpins(ctx, notes);\n ok(true, 'Simple Test');\n };\n}\nconst simple = createTest((ctx, notes) => {\n drawHairpin(notes[0], notes[2], ctx, 1, 4);\n drawHairpin(notes[1], notes[3], ctx, 2, 3);\n});\nconst horizontal = createTest((ctx, notes) => {\n drawHairpin(notes[0], notes[2], ctx, 1, 3, {\n height: 10,\n // TODO: these three property names seem to be incorrect.\n // vo => should it be 'y_shift'?\n // left_ho => should it be 'left_shift_px'?\n // right_ho => should it be 'right_shift_px'?\n vo: 20,\n left_ho: 20,\n right_ho: -20, // right horizontal offset\n });\n drawHairpin(notes[3], notes[3], ctx, 2, 4, {\n height: 10,\n y_shift: 0,\n left_shift_px: 0,\n right_shift_px: 120, // right horizontal offset\n });\n});\nconst vertical = createTest((ctx, notes) => {\n drawHairpin(notes[0], notes[2], ctx, 1, 4, {\n height: 10,\n y_shift: 0,\n left_shift_px: 0,\n right_shift_px: 0, // right horizontal offset\n });\n drawHairpin(notes[2], notes[3], ctx, 2, 4, {\n height: 10,\n y_shift: -15,\n left_shift_px: 2,\n right_shift_px: 0, // right horizontal offset\n });\n});\nconst height = createTest((ctx, notes) => {\n drawHairpin(notes[0], notes[2], ctx, 1, 4, {\n height: 10,\n y_shift: 0,\n left_shift_px: 0,\n right_shift_px: 0, // right horizontal offset\n });\n drawHairpin(notes[2], notes[3], ctx, 2, 4, {\n height: 15,\n y_shift: 0,\n left_shift_px: 2,\n right_shift_px: 0, // right horizontal offset\n });\n});\nVexFlowTests.register(StaveHairpinTests);\nexport { StaveHairpinTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// StaveLine Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Dot } from '../src/dot';\nimport { Font, FontStyle } from '../src/font';\nconst StaveLineTests = {\n Start() {\n QUnit.module('StaveLine');\n const run = VexFlowTests.runTests;\n run('Simple StaveLine', simple0);\n run('StaveLine Arrow Options', simple1);\n },\n};\nfunction simple0(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave().addClef('treble');\n const notes = [\n f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble' }),\n f.StaveNote({ keys: ['c/5'], duration: '4', clef: 'treble' }),\n f.StaveNote({ keys: ['c/4', 'g/4', 'b/4'], duration: '4', clef: 'treble' }),\n f.StaveNote({ keys: ['f/4', 'a/4', 'f/5'], duration: '4', clef: 'treble' }),\n ];\n const voice = f.Voice().addTickables(notes);\n f.StaveLine({\n from: notes[0],\n to: notes[1],\n first_indices: [0],\n last_indices: [0],\n options: {\n font: { family: Font.SERIF, size: 12, style: FontStyle.ITALIC },\n text: 'gliss.',\n },\n });\n const staveLine2 = f.StaveLine({\n from: notes[2],\n to: notes[3],\n first_indices: [2, 1, 0],\n last_indices: [0, 1, 2],\n });\n staveLine2.render_options.line_dash = [10, 10];\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true);\n}\nfunction simple1(options) {\n const f = VexFlowTests.makeFactory(options, 770);\n const stave = f.Stave().addClef('treble');\n const notes = [\n f.StaveNote({ keys: ['c#/5', 'd/5'], duration: '4', clef: 'treble', stem_direction: -1 }),\n f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble' }).addModifier(f.Accidental({ type: '#' }), 0),\n f.StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '4', clef: 'treble' }),\n f\n .StaveNote({ keys: ['f/4', 'a/4', 'c/5'], duration: '4', clef: 'treble' })\n .addModifier(f.Accidental({ type: '#' }), 2),\n f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble' }).addModifier(f.Accidental({ type: '#' }), 0),\n f.StaveNote({ keys: ['c#/5', 'd/5'], duration: '4', clef: 'treble', stem_direction: -1 }),\n f.StaveNote({ keys: ['c/4', 'd/4', 'g/4'], duration: '4', clef: 'treble' }),\n f\n .StaveNote({ keys: ['f/4', 'a/4', 'c/5'], duration: '4', clef: 'treble' })\n .addModifier(f.Accidental({ type: '#' }), 2),\n ];\n Dot.buildAndAttach([notes[0]], { all: true });\n const voice = f.Voice().setStrict(false).addTickables(notes);\n const staveLine0 = f.StaveLine({\n from: notes[0],\n to: notes[1],\n first_indices: [0],\n last_indices: [0],\n options: { text: 'Left' },\n });\n const staveLine4 = f.StaveLine({\n from: notes[2],\n to: notes[3],\n first_indices: [1],\n last_indices: [1],\n options: { text: 'Right' },\n });\n const staveLine1 = f.StaveLine({\n from: notes[4],\n to: notes[5],\n first_indices: [0],\n last_indices: [0],\n options: { text: 'Center' },\n });\n const staveLine2 = f.StaveLine({\n from: notes[6],\n to: notes[7],\n first_indices: [1],\n last_indices: [0],\n });\n const staveLine3 = f.StaveLine({\n from: notes[6],\n to: notes[7],\n first_indices: [2],\n last_indices: [2],\n options: { text: 'Top' },\n });\n staveLine0.render_options.draw_end_arrow = true;\n staveLine0.render_options.text_justification = 1;\n staveLine0.render_options.text_position_vertical = 2;\n staveLine1.render_options.draw_end_arrow = true;\n staveLine1.render_options.arrowhead_length = 30;\n staveLine1.render_options.line_width = 5;\n staveLine1.render_options.text_justification = 2;\n staveLine1.render_options.text_position_vertical = 2;\n staveLine4.render_options.line_width = 2;\n staveLine4.render_options.draw_end_arrow = true;\n staveLine4.render_options.draw_start_arrow = true;\n staveLine4.render_options.arrowhead_angle = 0.5;\n staveLine4.render_options.arrowhead_length = 20;\n staveLine4.render_options.text_justification = 3;\n staveLine4.render_options.text_position_vertical = 2;\n staveLine2.render_options.draw_start_arrow = true;\n staveLine2.render_options.line_dash = [5, 4];\n staveLine3.render_options.draw_end_arrow = true;\n staveLine3.render_options.draw_start_arrow = true;\n staveLine3.render_options.color = 'red';\n staveLine3.render_options.text_position_vertical = 1;\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true);\n}\nVexFlowTests.register(StaveLineTests);\nexport { StaveLineTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// StaveModifier Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Stave } from '../src/stave';\nimport { BarlineType } from '../src/stavebarline';\nimport { StaveModifierPosition } from '../src/stavemodifier';\nconst StaveModifierTests = {\n Start() {\n QUnit.module('StaveModifier');\n const run = VexFlowTests.runTests;\n run('Stave Draw Test', draw);\n run('Begin & End StaveModifier Test', drawBeginAndEnd);\n },\n};\nfunction draw(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 120);\n const stave = new Stave(10, 10, 300);\n stave.setContext(ctx);\n stave.draw();\n equal(stave.getYForNote(0), 100, 'getYForNote(0)');\n equal(stave.getYForLine(5), 100, 'getYForLine(5)');\n equal(stave.getYForLine(0), 50, 'getYForLine(0) - Top Line');\n equal(stave.getYForLine(4), 90, 'getYForLine(4) - Bottom Line');\n ok(true, 'all pass');\n}\nfunction drawBeginAndEnd(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 500, 240);\n const stave = new Stave(10, 10, 400);\n stave.setContext(ctx);\n stave.setTimeSignature('C|');\n stave.setKeySignature('Db');\n stave.setClef('treble');\n stave.setBegBarType(BarlineType.REPEAT_BEGIN);\n stave.setEndClef('alto');\n stave.setEndTimeSignature('9/8');\n stave.setEndKeySignature('G', 'C#');\n stave.setEndBarType(BarlineType.DOUBLE);\n stave.draw();\n // change\n const END = StaveModifierPosition.END;\n stave.setY(100);\n stave.setTimeSignature('3/4');\n stave.setKeySignature('G', 'C#');\n stave.setClef('bass');\n stave.setBegBarType(BarlineType.SINGLE);\n stave.setClef('treble', undefined, undefined, END);\n stave.setTimeSignature('C', undefined, END);\n stave.setKeySignature('F', undefined, END);\n stave.setEndBarType(BarlineType.SINGLE);\n stave.draw();\n ok(true, 'all pass');\n}\nVexFlowTests.register(StaveModifierTests);\nexport { StaveModifierTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// StaveNote Tests\n// TODO: In StaveNote.preFormat() line 929, should noteHeadPadding default to StaveNote.minNoteheadPadding?\n// The bounding box of a note changes slightly when we add a ModifierContext (even if we add zero modifiers).\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Accidental } from '../src/accidental';\nimport { Annotation, AnnotationVerticalJustify } from '../src/annotation';\nimport { Articulation } from '../src/articulation';\nimport { Beam } from '../src/beam';\nimport { Dot } from '../src/dot';\nimport { Flow } from '../src/flow';\nimport { Formatter } from '../src/formatter';\nimport { Fraction } from '../src/fraction';\nimport { FretHandFinger } from '../src/frethandfinger';\nimport { Modifier } from '../src/modifier';\nimport { ModifierContext } from '../src/modifiercontext';\nimport { Stave } from '../src/stave';\nimport { StaveNote } from '../src/stavenote';\nimport { Stem } from '../src/stem';\nimport { StringNumber } from '../src/stringnumber';\nimport { Stroke } from '../src/strokes';\nimport { TickContext } from '../src/tickcontext';\nconst StaveNoteTests = {\n Start() {\n QUnit.module('StaveNote');\n test('Tick', ticks);\n test('Tick - New API', ticksNewAPI);\n test('Stem', stem);\n test('Automatic Stem Direction', autoStem);\n test('Stem Extension Pitch', stemExtensionPitch);\n test('Displacement after calling setStemDirection', setStemDirectionDisplacement);\n test('StaveLine', staveLine);\n test('Width', width);\n test('TickContext', tickContext);\n const run = VexFlowTests.runTests;\n run('StaveNote Draw - Treble', drawBasic, { clef: 'treble', octaveShift: 0, restKey: 'r/4' });\n run('StaveNote BoundingBoxes - Treble', drawBoundingBoxes, { clef: 'treble', octaveShift: 0, restKey: 'r/4' });\n run('StaveNote Draw - Alto', drawBasic, { clef: 'alto', octaveShift: -1, restKey: 'r/4' });\n run('StaveNote Draw - Tenor', drawBasic, { clef: 'tenor', octaveShift: -1, restKey: 'r/3' });\n run('StaveNote Draw - Bass', drawBasic, { clef: 'bass', octaveShift: -2, restKey: 'r/3' });\n run('StaveNote Draw - Harmonic And Muted', drawHarmonicAndMuted);\n run('StaveNote Draw - Slash', drawSlash);\n run('Displacements', displacements);\n run('StaveNote Draw - Bass 2', drawBass);\n run('StaveNote Draw - Key Styles', drawKeyStyles);\n run('StaveNote Draw - StaveNote Stem Styles', drawNoteStemStyles);\n run('StaveNote Draw - StaveNote Stem Lengths', drawNoteStemLengths);\n run('StaveNote Draw - StaveNote Flag Styles', drawNoteStylesWithFlag);\n run('StaveNote Draw - StaveNote Styles', drawNoteStyles);\n run('Stave, Ledger Line, Beam, Stem and Flag Styles', drawBeamStyles);\n run('Flag and Dot Placement - Stem Up', dotsAndFlagsStemUp);\n run('Flag and Dots Placement - Stem Down', dotsAndFlagsStemDown);\n run('Beam and Dot Placement - Stem Up', dotsAndBeamsUp);\n run('Beam and Dot Placement - Stem Down', dotsAndBeamsDown);\n run('No Padding', noPadding);\n run('Note Heads Placement - Simple', noteHeadsSimple);\n run('Note Heads Placement - Hidden Notes', noteHeadsHidden);\n run('Center Aligned Note', centerAlignedRest);\n run('Center Aligned Note with Articulation', centerAlignedRestFermata);\n run('Center Aligned Note with Annotation', centerAlignedRestAnnotation);\n run('Center Aligned Note - Multi Voice', centerAlignedMultiVoice);\n run('Center Aligned Note with Multiple Modifiers', centerAlignedNoteMultiModifiers);\n // This interactivity test currently only works with the SVG backend.\n VexFlowTests.runSVGTest('Interactive Mouseover StaveNote', drawBasic, {\n clef: 'treble',\n octaveShift: 0,\n restKey: 'r/4',\n ui: true,\n });\n },\n};\n// Helper function to create StaveNotes.\nconst staveNote = (struct) => new StaveNote(struct);\n/**\n * Helper function to draw a note with an optional bounding box.\n */\nfunction draw(note, stave, context, x, drawBoundingBox = false, addModifierContext = true) {\n // Associate the note with the stave.\n note.setStave(stave);\n // A ModifierContext is required for dots and other modifiers to be drawn properly.\n // If added, it changes the bounding box of a note, even if there are no modifiers to draw.\n // See StaveNote.minNoteheadPadding in stavenote.ts.\n if (addModifierContext) {\n note.addToModifierContext(new ModifierContext());\n }\n new TickContext().addTickable(note).preFormat().setX(x);\n note.setContext(context).draw();\n if (drawBoundingBox) {\n const bb = note.getBoundingBox();\n context.rect(bb.getX(), bb.getY(), bb.getW(), bb.getH());\n context.stroke();\n }\n return note;\n}\nfunction ticks() {\n const BEAT = (1 * Flow.RESOLUTION) / 4;\n // Key value pairs of `testName: [durationString, expectedBeats, expectedNoteType]`\n const tickTests = {\n 'Breve note': ['1/2', 8.0, 'n'],\n 'Whole note': ['w', 4.0, 'n'],\n 'Quarter note': ['q', 1.0, 'n'],\n 'Dotted half note': ['hd', 3.0, 'n'],\n 'Doubled-dotted half note': ['hdd', 3.5, 'n'],\n 'Triple-dotted half note': ['hddd', 3.75, 'n'],\n 'Dotted half rest': ['hdr', 3.0, 'r'],\n 'Double-dotted half rest': ['hddr', 3.5, 'r'],\n 'Triple-dotted half rest': ['hdddr', 3.75, 'r'],\n 'Dotted harmonic quarter note': ['qdh', 1.5, 'h'],\n 'Double-dotted harmonic quarter note': ['qddh', 1.75, 'h'],\n 'Triple-dotted harmonic quarter note': ['qdddh', 1.875, 'h'],\n 'Dotted muted 8th note': ['8dm', 0.75, 'm'],\n 'Double-dotted muted 8th note': ['8ddm', 0.875, 'm'],\n 'Triple-dotted muted 8th note': ['8dddm', 0.9375, 'm'],\n };\n Object.keys(tickTests).forEach((testName) => {\n const testData = tickTests[testName];\n const durationString = testData[0];\n const expectedBeats = testData[1];\n const expectedNoteType = testData[2];\n const note = new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: durationString });\n equal(note.getTicks().value(), BEAT * expectedBeats, testName + ' must have ' + expectedBeats + ' beats');\n equal(note.getNoteType(), expectedNoteType, 'Note type must be ' + expectedNoteType);\n });\n throws(() => new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '8.7dddm' }), /BadArguments/, \"Invalid note duration '8.7' throws BadArguments exception\");\n throws(() => new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '2Z' }), /BadArguments/, \"Invalid note type 'Z' throws BadArguments exception\");\n throws(() => new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '2dddZ' }), /BadArguments/, \"Invalid note type 'Z' throws BadArguments exception\");\n}\nfunction ticksNewAPI() {\n const BEAT = (1 * Flow.RESOLUTION) / 4;\n // Key value pairs of `testName: [noteData, expectedBeats, expectedNoteType]`\n const tickTests = {\n 'Breve note': [{ duration: '1/2' }, 8.0, 'n'],\n 'Whole note': [{ duration: 'w' }, 4.0, 'n'],\n 'Quarter note': [{ duration: 'q' }, 1.0, 'n'],\n 'Dotted half note': [{ duration: 'h', dots: 1 }, 3.0, 'n'],\n 'Doubled-dotted half note': [{ duration: 'h', dots: 2 }, 3.5, 'n'],\n 'Triple-dotted half note': [{ duration: 'h', dots: 3 }, 3.75, 'n'],\n 'Dotted half rest': [{ duration: 'h', dots: 1, type: 'r' }, 3.0, 'r'],\n 'Double-dotted half rest': [{ duration: 'h', dots: 2, type: 'r' }, 3.5, 'r'],\n 'Triple-dotted half rest': [{ duration: 'h', dots: 3, type: 'r' }, 3.75, 'r'],\n 'Dotted harmonic quarter note': [{ duration: 'q', dots: 1, type: 'h' }, 1.5, 'h'],\n 'Double-dotted harmonic quarter note': [{ duration: 'q', dots: 2, type: 'h' }, 1.75, 'h'],\n 'Triple-dotted harmonic quarter note': [{ duration: 'q', dots: 3, type: 'h' }, 1.875, 'h'],\n 'Dotted muted 8th note': [{ duration: '8', dots: 1, type: 'm' }, 0.75, 'm'],\n 'Double-dotted muted 8th note': [{ duration: '8', dots: 2, type: 'm' }, 0.875, 'm'],\n 'Triple-dotted muted 8th note': [{ duration: '8', dots: 3, type: 'm' }, 0.9375, 'm'],\n };\n Object.keys(tickTests).forEach(function (testName) {\n const testData = tickTests[testName];\n const noteData = testData[0];\n const expectedBeats = testData[1];\n const expectedNoteType = testData[2];\n noteData.keys = ['c/4', 'e/4', 'g/4'];\n const note = new StaveNote(noteData);\n equal(note.getTicks().value(), BEAT * expectedBeats, testName + ' must have ' + expectedBeats + ' beats');\n equal(note.getNoteType(), expectedNoteType, 'Note type must be ' + expectedNoteType);\n });\n throws(() => new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '8.7dddm' }), /BadArguments/, \"Invalid note duration '8.7' throws BadArguments exception\");\n throws(() => new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '2Z' }), /BadArguments/, \"Invalid note type 'Z' throws BadArguments exception\");\n throws(() => new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '2dddZ' }), /BadArguments/, \"Invalid note type 'Z' throws BadArguments exception\");\n}\nfunction stem() {\n const note = new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: 'w' });\n equal(note.getStemDirection(), Stem.UP, 'Default note has UP stem');\n}\nfunction autoStem() {\n const testData = [\n [['c/5', 'e/5', 'g/5'], Stem.DOWN],\n [['e/4', 'g/4', 'c/5'], Stem.UP],\n [['c/5'], Stem.DOWN],\n [['a/4', 'e/5', 'g/5'], Stem.DOWN],\n [['b/4'], Stem.DOWN],\n ];\n testData.forEach((td) => {\n const keys = td[0];\n const expectedStemDirection = td[1];\n const note = new StaveNote({ keys: keys, auto_stem: true, duration: '8' });\n equal(note.getStemDirection(), expectedStemDirection, 'Stem must be ' + (expectedStemDirection === Stem.UP ? 'up' : 'down'));\n });\n}\nfunction stemExtensionPitch() {\n // [keys, expectedStemExtension, override stem direction]\n const testData = [\n [['c/5', 'e/5', 'g/5'], 0, 0],\n [['e/4', 'g/4', 'c/5'], 0, 0],\n [['c/5'], 0, 0],\n [['f/3'], 15, 0],\n [['f/3'], 15, Stem.UP],\n [['f/3'], 0, Stem.DOWN],\n [['f/3', 'e/5'], 0, 0],\n [['g/6'], 25, 0],\n [['g/6'], 25, Stem.DOWN],\n [['g/6'], 0, Stem.UP],\n ];\n testData.forEach((td) => {\n const keys = td[0];\n const expectedStemExtension = td[1];\n const overrideStemDirection = td[2];\n let note;\n if (overrideStemDirection === 0) {\n note = new StaveNote({ keys: keys, auto_stem: true, duration: '4' });\n }\n else {\n note = new StaveNote({ keys: keys, duration: '4', stem_direction: overrideStemDirection });\n }\n equal(note.getStemExtension(), expectedStemExtension, 'For ' + keys.toString() + ' StemExtension must be ' + expectedStemExtension);\n // set to weird Stave\n const stave = new Stave(10, 10, 300, { spacing_between_lines_px: 20 });\n note.setStave(stave);\n equal(note.getStemExtension(), expectedStemExtension * 2, 'For wide staff ' + keys.toString() + ' StemExtension must be ' + expectedStemExtension * 2);\n // const whole_note = new StaveNote({ keys: keys, duration: 'w' });\n // equal(\n // whole_note.getStemExtension(),\n // -1 * Flow.STEM_HEIGHT,\n // 'For ' + keys.toString() + ' whole_note StemExtension must always be -1 * Flow.STEM_HEIGHT'\n // );\n });\n}\nfunction setStemDirectionDisplacement() {\n function getDisplacements(note) {\n return note.noteHeads.map((noteHead) => noteHead.isDisplaced());\n }\n const stemUpDisplacements = [false, true, false];\n const stemDownDisplacements = [true, false, false];\n const note = new StaveNote({ keys: ['c/5', 'd/5', 'g/5'], stem_direction: Stem.UP, duration: '4' });\n deepEqual(getDisplacements(note), stemUpDisplacements);\n note.setStemDirection(Stem.DOWN);\n deepEqual(getDisplacements(note), stemDownDisplacements);\n note.setStemDirection(Stem.UP);\n deepEqual(getDisplacements(note), stemUpDisplacements);\n}\nfunction staveLine() {\n const stave = new Stave(10, 10, 300);\n const note = new StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: 'w' });\n note.setStave(stave);\n const props = note.getKeyProps();\n equal(props[0].line, 0, 'C/4 on line 0');\n equal(props[1].line, 1, 'E/4 on line 1');\n equal(props[2].line, 2.5, 'A/4 on line 2.5');\n const ys = note.getYs();\n equal(ys.length, 3, 'Chord should be rendered on three lines');\n equal(ys[0], 100, 'Line for C/4');\n equal(ys[1], 90, 'Line for E/4');\n equal(ys[2], 75, 'Line for A/4');\n}\nfunction width() {\n const note = new StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: 'w' });\n throws(() => note.getWidth(), /UnformattedNote/, 'Unformatted note should have no width');\n}\nfunction tickContext() {\n const stave = new Stave(10, 10, 400);\n const note = new StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: 'w' }).setStave(stave);\n new TickContext().addTickable(note).preFormat().setX(10).setPadding(0);\n expect(0);\n}\nfunction drawBasic(options, contextBuilder) {\n const clef = options.params.clef;\n const octaveShift = options.params.octaveShift;\n const restKey = options.params.restKey;\n const ctx = contextBuilder(options.elementId, 700, 180);\n const stave = new Stave(10, 30, 750);\n stave.setContext(ctx);\n stave.addClef(clef);\n stave.draw();\n const lowerKeys = ['c/', 'e/', 'a/'];\n const higherKeys = ['c/', 'e/', 'a/'];\n for (let k = 0; k < lowerKeys.length; k++) {\n lowerKeys[k] = lowerKeys[k] + (4 + octaveShift);\n higherKeys[k] = higherKeys[k] + (5 + octaveShift);\n }\n const restKeys = [restKey];\n const noteStructs = [\n { clef: clef, keys: higherKeys, duration: '1/2' },\n { clef: clef, keys: lowerKeys, duration: 'w' },\n { clef: clef, keys: higherKeys, duration: 'h' },\n { clef: clef, keys: lowerKeys, duration: 'q' },\n { clef: clef, keys: higherKeys, duration: '8' },\n { clef: clef, keys: lowerKeys, duration: '16' },\n { clef: clef, keys: higherKeys, duration: '32' },\n { clef: clef, keys: higherKeys, duration: '64' },\n { clef: clef, keys: higherKeys, duration: '128' },\n { clef: clef, keys: lowerKeys, duration: '1/2', stem_direction: Stem.DOWN },\n { clef: clef, keys: lowerKeys, duration: 'w', stem_direction: Stem.DOWN },\n { clef: clef, keys: lowerKeys, duration: 'h', stem_direction: Stem.DOWN },\n { clef: clef, keys: lowerKeys, duration: 'q', stem_direction: Stem.DOWN },\n { clef: clef, keys: lowerKeys, duration: '8', stem_direction: Stem.DOWN },\n { clef: clef, keys: lowerKeys, duration: '16', stem_direction: Stem.DOWN },\n { clef: clef, keys: lowerKeys, duration: '32', stem_direction: Stem.DOWN },\n { clef: clef, keys: lowerKeys, duration: '64', stem_direction: Stem.DOWN },\n { clef: clef, keys: lowerKeys, duration: '128', stem_direction: Stem.DOWN },\n { clef: clef, keys: restKeys, duration: '1/2r' },\n { clef: clef, keys: restKeys, duration: 'wr' },\n { clef: clef, keys: restKeys, duration: 'hr' },\n { clef: clef, keys: restKeys, duration: 'qr' },\n { clef: clef, keys: restKeys, duration: '8r' },\n { clef: clef, keys: restKeys, duration: '16r' },\n { clef: clef, keys: restKeys, duration: '32r' },\n { clef: clef, keys: restKeys, duration: '64r' },\n { clef: clef, keys: restKeys, duration: '128r' },\n { keys: ['x/4'], duration: 'h' },\n ];\n expect(noteStructs.length * 2);\n const colorDescendants = (parentItem, color) => () => parentItem.querySelectorAll('*').forEach((child) => {\n child.setAttribute('fill', color);\n child.setAttribute('stroke', color);\n });\n for (let i = 0; i < noteStructs.length; ++i) {\n const note = draw(staveNote(noteStructs[i]), stave, ctx, (i + 1) * 25);\n // If this is an interactivity test (ui: true), then attach mouseover & mouseout handlers to the notes.\n if (options.params.ui) {\n const item = note.getSVGElement();\n if (item) {\n item.addEventListener('mouseover', colorDescendants(item, 'green'), false);\n item.addEventListener('mouseout', colorDescendants(item, 'black'), false);\n }\n }\n ok(note.getX() > 0, 'Note ' + i + ' has X value');\n ok(note.getYs().length > 0, 'Note ' + i + ' has Y values');\n }\n}\nfunction drawBoundingBoxes(options, contextBuilder) {\n const clef = options.params.clef;\n const octaveShift = options.params.octaveShift;\n const restKey = options.params.restKey;\n const ctx = contextBuilder(options.elementId, 700, 180);\n const stave = new Stave(10, 30, 750);\n stave.setContext(ctx);\n stave.addClef(clef);\n stave.draw();\n const lowerKeys = ['c/', 'e/', 'a/'];\n const higherKeys = ['c/', 'e/', 'a/'];\n for (let k = 0; k < lowerKeys.length; k++) {\n lowerKeys[k] = lowerKeys[k] + (4 + octaveShift);\n higherKeys[k] = higherKeys[k] + (5 + octaveShift);\n }\n const restKeys = [restKey];\n const noteStructs = [\n { clef: clef, keys: higherKeys, duration: '1/2' },\n { clef: clef, keys: lowerKeys, duration: 'w' },\n { clef: clef, keys: higherKeys, duration: 'h' },\n { clef: clef, keys: lowerKeys, duration: 'q' },\n { clef: clef, keys: higherKeys, duration: '8' },\n { clef: clef, keys: lowerKeys, duration: '16' },\n { clef: clef, keys: higherKeys, duration: '32' },\n { clef: clef, keys: higherKeys, duration: '64' },\n { clef: clef, keys: higherKeys, duration: '128' },\n { clef: clef, keys: lowerKeys, duration: '1/2', stem_direction: Stem.DOWN },\n { clef: clef, keys: lowerKeys, duration: 'w', stem_direction: Stem.DOWN },\n { clef: clef, keys: lowerKeys, duration: 'h', stem_direction: Stem.DOWN },\n { clef: clef, keys: lowerKeys, duration: 'q', stem_direction: Stem.DOWN },\n { clef: clef, keys: lowerKeys, duration: '8', stem_direction: Stem.DOWN },\n { clef: clef, keys: lowerKeys, duration: '16', stem_direction: Stem.DOWN },\n { clef: clef, keys: lowerKeys, duration: '32', stem_direction: Stem.DOWN },\n { clef: clef, keys: lowerKeys, duration: '64', stem_direction: Stem.DOWN },\n { clef: clef, keys: lowerKeys, duration: '128' },\n { clef: clef, keys: restKeys, duration: '1/2r' },\n { clef: clef, keys: restKeys, duration: 'wr' },\n { clef: clef, keys: restKeys, duration: 'hr' },\n { clef: clef, keys: restKeys, duration: 'qr' },\n { clef: clef, keys: restKeys, duration: '8r' },\n { clef: clef, keys: restKeys, duration: '16r' },\n { clef: clef, keys: restKeys, duration: '32r' },\n { clef: clef, keys: restKeys, duration: '64r' },\n { clef: clef, keys: restKeys, duration: '128r' },\n { keys: ['x/4'], duration: 'h' },\n ];\n expect(noteStructs.length * 2);\n for (let i = 0; i < noteStructs.length; ++i) {\n const note = draw(staveNote(noteStructs[i]), stave, ctx, (i + 1) * 25, true /* drawBoundingBox */, false /* addModifierContext */);\n ok(note.getX() > 0, 'Note ' + i + ' has X value');\n ok(note.getYs().length > 0, 'Note ' + i + ' has Y values');\n }\n}\nfunction drawBass(options, contextBuilder) {\n expect(40);\n const ctx = contextBuilder(options.elementId, 600, 280);\n const stave = new Stave(10, 10, 650);\n stave.setContext(ctx);\n stave.addClef('bass');\n stave.draw();\n const noteStructs = [\n { clef: 'bass', keys: ['c/3', 'e/3', 'a/3'], duration: '1/2' },\n { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: 'w' },\n { clef: 'bass', keys: ['c/3', 'e/3', 'a/3'], duration: 'h' },\n { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: 'q' },\n { clef: 'bass', keys: ['c/3', 'e/3', 'a/3'], duration: '8' },\n { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: '16' },\n { clef: 'bass', keys: ['c/3', 'e/3', 'a/3'], duration: '32' },\n { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: 'h', stem_direction: Stem.DOWN },\n { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: 'q', stem_direction: Stem.DOWN },\n { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: '8', stem_direction: Stem.DOWN },\n { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: '16', stem_direction: Stem.DOWN },\n { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: '32', stem_direction: Stem.DOWN },\n { keys: ['r/4'], duration: '1/2r' },\n { keys: ['r/4'], duration: 'wr' },\n { keys: ['r/4'], duration: 'hr' },\n { keys: ['r/4'], duration: 'qr' },\n { keys: ['r/4'], duration: '8r' },\n { keys: ['r/4'], duration: '16r' },\n { keys: ['r/4'], duration: '32r' },\n { keys: ['x/4'], duration: 'h' },\n ];\n for (let i = 0; i < noteStructs.length; ++i) {\n const note = draw(staveNote(noteStructs[i]), stave, ctx, (i + 1) * 25);\n ok(note.getX() > 0, 'Note ' + i + ' has X value');\n ok(note.getYs().length > 0, 'Note ' + i + ' has Y values');\n }\n}\nfunction displacements(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 700, 155);\n ctx.scale(0.9, 0.9);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n const stave = new Stave(10, 10, 675);\n stave.setContext(ctx);\n stave.draw();\n const noteStructs = [\n { keys: ['g/3', 'a/3', 'c/4', 'd/4', 'e/4'], duration: '1/2' },\n { keys: ['g/3', 'a/3', 'c/4', 'd/4', 'e/4'], duration: 'w' },\n { keys: ['d/4', 'e/4', 'f/4'], duration: 'h' },\n { keys: ['f/4', 'g/4', 'a/4', 'b/4'], duration: 'q' },\n { keys: ['e/3', 'b/3', 'c/4', 'e/4', 'f/4', 'g/5', 'a/5'], duration: '8' },\n { keys: ['a/3', 'c/4', 'e/4', 'g/4', 'a/4', 'b/4'], duration: '16' },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '32' },\n { keys: ['c/4', 'e/4', 'a/4', 'a/4'], duration: '64' },\n { keys: ['g/3', 'c/4', 'd/4', 'e/4'], duration: 'h', stem_direction: Stem.DOWN },\n { keys: ['d/4', 'e/4', 'f/4'], duration: 'q', stem_direction: Stem.DOWN },\n { keys: ['f/4', 'g/4', 'a/4', 'b/4'], duration: '8', stem_direction: Stem.DOWN },\n { keys: ['c/4', 'd/4', 'e/4', 'f/4', 'g/4', 'a/4'], duration: '16', stem_direction: Stem.DOWN },\n { keys: ['b/3', 'c/4', 'e/4', 'a/4', 'b/5', 'c/6', 'e/6'], duration: '32', stem_direction: Stem.DOWN },\n {\n keys: ['b/3', 'c/4', 'e/4', 'a/4', 'b/5', 'c/6', 'e/6', 'e/6'],\n duration: '64',\n stem_direction: Stem.DOWN,\n },\n ];\n expect(noteStructs.length * 2);\n for (let i = 0; i < noteStructs.length; ++i) {\n const note = draw(staveNote(noteStructs[i]), stave, ctx, (i + 1) * 45);\n ok(note.getX() > 0, 'Note ' + i + ' has X value');\n ok(note.getYs().length > 0, 'Note ' + i + ' has Y values');\n }\n}\nfunction drawHarmonicAndMuted(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 1000, 180);\n const stave = new Stave(10, 10, 950);\n stave.setContext(ctx);\n stave.draw();\n const noteStructs = [\n { keys: ['c/4', 'e/4', 'a/4'], duration: '1/2h' },\n { keys: ['c/4', 'e/4', 'a/4'], duration: 'wh' },\n { keys: ['c/4', 'e/4', 'a/4'], duration: 'hh' },\n { keys: ['c/4', 'e/4', 'a/4'], duration: 'qh' },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '8h' },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '16h' },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '32h' },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '64h' },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '128h' },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '1/2h', stem_direction: Stem.DOWN },\n { keys: ['c/4', 'e/4', 'a/4'], duration: 'wh', stem_direction: Stem.DOWN },\n { keys: ['c/4', 'e/4', 'a/4'], duration: 'hh', stem_direction: Stem.DOWN },\n { keys: ['c/4', 'e/4', 'a/4'], duration: 'qh', stem_direction: Stem.DOWN },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '8h', stem_direction: Stem.DOWN },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '16h', stem_direction: Stem.DOWN },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '32h', stem_direction: Stem.DOWN },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '64h', stem_direction: Stem.DOWN },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '128h', stem_direction: Stem.DOWN },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '1/2m' },\n { keys: ['c/4', 'e/4', 'a/4'], duration: 'wm' },\n { keys: ['c/4', 'e/4', 'a/4'], duration: 'hm' },\n { keys: ['c/4', 'e/4', 'a/4'], duration: 'qm' },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '8m' },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '16m' },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '32m' },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '64m' },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '128m' },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '1/2m', stem_direction: Stem.DOWN },\n { keys: ['c/4', 'e/4', 'a/4'], duration: 'wm', stem_direction: Stem.DOWN },\n { keys: ['c/4', 'e/4', 'a/4'], duration: 'hm', stem_direction: Stem.DOWN },\n { keys: ['c/4', 'e/4', 'a/4'], duration: 'qm', stem_direction: Stem.DOWN },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '8m', stem_direction: Stem.DOWN },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '16m', stem_direction: Stem.DOWN },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '32m', stem_direction: Stem.DOWN },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '64m', stem_direction: Stem.DOWN },\n { keys: ['c/4', 'e/4', 'a/4'], duration: '128m', stem_direction: Stem.DOWN },\n ];\n expect(noteStructs.length * 2);\n for (let i = 0; i < noteStructs.length; ++i) {\n const note = draw(staveNote(noteStructs[i]), stave, ctx, i * 25 + 5);\n ok(note.getX() > 0, 'Note ' + i + ' has X value');\n ok(note.getYs().length > 0, 'Note ' + i + ' has Y values');\n }\n}\nfunction drawSlash(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 700, 180);\n const stave = new Stave(10, 10, 650);\n stave.setContext(ctx);\n stave.draw();\n const notes = [\n { keys: ['b/4'], duration: '1/2s', stem_direction: Stem.DOWN },\n { keys: ['b/4'], duration: 'ws', stem_direction: Stem.DOWN },\n { keys: ['b/4'], duration: 'hs', stem_direction: Stem.DOWN },\n { keys: ['b/4'], duration: 'qs', stem_direction: Stem.DOWN },\n { keys: ['b/4'], duration: '8s', stem_direction: Stem.DOWN },\n { keys: ['b/4'], duration: '16s', stem_direction: Stem.DOWN },\n { keys: ['b/4'], duration: '32s', stem_direction: Stem.DOWN },\n { keys: ['b/4'], duration: '64s', stem_direction: Stem.DOWN },\n { keys: ['b/4'], duration: '128s', stem_direction: Stem.DOWN },\n { keys: ['b/4'], duration: '1/2s', stem_direction: Stem.UP },\n { keys: ['b/4'], duration: 'ws', stem_direction: Stem.UP },\n { keys: ['b/4'], duration: 'hs', stem_direction: Stem.UP },\n { keys: ['b/4'], duration: 'qs', stem_direction: Stem.UP },\n { keys: ['b/4'], duration: '8s', stem_direction: Stem.UP },\n { keys: ['b/4'], duration: '16s', stem_direction: Stem.UP },\n { keys: ['b/4'], duration: '32s', stem_direction: Stem.UP },\n { keys: ['b/4'], duration: '64s', stem_direction: Stem.UP },\n { keys: ['b/4'], duration: '128s', stem_direction: Stem.UP },\n // Beam\n { keys: ['b/4'], duration: '8s', stem_direction: Stem.DOWN },\n { keys: ['b/4'], duration: '8s', stem_direction: Stem.DOWN },\n { keys: ['b/4'], duration: '8s', stem_direction: Stem.UP },\n { keys: ['b/4'], duration: '8s', stem_direction: Stem.UP },\n ];\n const stave_notes = notes.map((struct) => new StaveNote(struct));\n const beam1 = new Beam([stave_notes[16], stave_notes[17]]);\n const beam2 = new Beam([stave_notes[18], stave_notes[19]]);\n Formatter.FormatAndDraw(ctx, stave, stave_notes, false);\n beam1.setContext(ctx).draw();\n beam2.setContext(ctx).draw();\n ok('Slash Note Heads');\n}\nfunction drawKeyStyles(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 300, 280);\n ctx.scale(3, 3);\n const stave = new Stave(10, 0, 100);\n const note = new StaveNote({ keys: ['g/4', 'bb/4', 'd/5'], duration: 'q' })\n .setStave(stave)\n .addModifier(new Accidental('b'), 1)\n .setKeyStyle(1, { shadowBlur: 2, shadowColor: 'blue', fillStyle: 'blue' });\n new TickContext().addTickable(note).preFormat().setX(25);\n stave.setContext(ctx).draw();\n note.setContext(ctx).draw();\n ok(note.getX() > 0, 'Note has X value');\n ok(note.getYs().length > 0, 'Note has Y values');\n}\nfunction drawNoteStyles(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 300, 280);\n const stave = new Stave(10, 0, 100);\n ctx.scale(3, 3);\n const note = new StaveNote({ keys: ['g/4', 'bb/4', 'd/5'], duration: '8' })\n .setStave(stave)\n .addModifier(new Accidental('b'), 1);\n note.setStyle({ shadowBlur: 2, shadowColor: 'blue', fillStyle: 'blue', strokeStyle: 'blue' });\n new TickContext().addTickable(note).preFormat().setX(25);\n stave.setContext(ctx).draw();\n note.setContext(ctx).draw();\n ok(note.getX() > 0, 'Note has X value');\n ok(note.getYs().length > 0, 'Note has Y values');\n}\nfunction drawNoteStemStyles(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 300, 280);\n const stave = new Stave(10, 0, 100);\n ctx.scale(3, 3);\n const note = new StaveNote({ keys: ['g/4', 'bb/4', 'd/5'], duration: 'q' })\n .setStave(stave)\n .addModifier(new Accidental('b'), 1);\n note.setStemStyle({ shadowBlur: 2, shadowColor: 'blue', fillStyle: 'blue', strokeStyle: 'blue' });\n new TickContext().addTickable(note).preFormat().setX(25);\n stave.setContext(ctx).draw();\n note.setContext(ctx).draw();\n ok('Note Stem Style');\n}\nfunction drawNoteStemLengths(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 975, 150);\n const stave = new Stave(10, 10, 975);\n stave.setContext(ctx).draw();\n const keys = [\n 'e/3',\n 'f/3',\n 'g/3',\n 'a/3',\n 'b/3',\n 'c/4',\n 'd/4',\n 'e/4',\n 'f/4',\n 'g/4',\n 'f/5',\n 'g/5',\n 'a/5',\n 'b/5',\n 'c/6',\n 'd/6',\n 'e/6',\n 'f/6',\n 'g/6',\n 'a/6',\n ];\n const notes = [];\n let note;\n let i;\n for (i = 0; i < keys.length; i++) {\n let duration = 'q';\n if (i % 2 === 1) {\n duration = '8';\n }\n note = new StaveNote({ keys: [keys[i]], duration, auto_stem: true }).setStave(stave);\n new TickContext().addTickable(note);\n note.setContext(ctx);\n notes.push(note);\n }\n const whole_keys = ['e/3', 'a/3', 'f/5', 'a/5', 'd/6', 'a/6'];\n for (i = 0; i < whole_keys.length; i++) {\n note = new StaveNote({ keys: [whole_keys[i]], duration: 'w' }).setStave(stave);\n new TickContext().addTickable(note);\n note.setContext(ctx);\n notes.push(note);\n }\n Formatter.FormatAndDraw(ctx, stave, notes);\n ok('Note Stem Length');\n}\nfunction drawNoteStylesWithFlag(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 300, 280);\n const stave = new Stave(10, 0, 100);\n ctx.scale(3, 3);\n const note = new StaveNote({ keys: ['g/4', 'bb/4', 'd/5'], duration: '8' })\n .setStave(stave)\n .addModifier(new Accidental('b'), 1);\n note.setFlagStyle({ shadowBlur: 2, shadowColor: 'blue', fillStyle: 'blue', strokeStyle: 'blue' });\n new TickContext().addTickable(note).preFormat().setX(25);\n stave.setContext(ctx).draw();\n note.setContext(ctx).draw();\n ok(note.getX() > 0, 'Note has X value');\n ok(note.getYs().length > 0, 'Note has Y values');\n}\nfunction drawBeamStyles(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 160);\n const stave = new Stave(10, 10, 380);\n stave.setStyle({ strokeStyle: '#EEAAEE', lineWidth: 3 });\n stave.setContext(ctx);\n stave.draw();\n const notes = [\n // beam1\n { keys: ['b/4'], duration: '8', stem_direction: Stem.DOWN },\n { keys: ['b/4'], duration: '8', stem_direction: Stem.DOWN },\n // should be unstyled...\n { keys: ['b/4'], duration: '8', stem_direction: Stem.DOWN },\n // beam2 should also be unstyled\n { keys: ['b/4'], duration: '8', stem_direction: Stem.DOWN },\n { keys: ['b/4'], duration: '8', stem_direction: Stem.DOWN },\n // beam3\n { keys: ['b/4'], duration: '8', stem_direction: Stem.UP },\n { keys: ['b/4'], duration: '8', stem_direction: Stem.UP },\n // beam4\n { keys: ['d/6'], duration: '8', stem_direction: Stem.DOWN },\n { keys: ['c/6', 'd/6'], duration: '8', stem_direction: Stem.DOWN },\n // unbeamed\n { keys: ['d/6', 'e/6'], duration: '8', stem_direction: Stem.DOWN },\n // unbeamed, unstyled\n { keys: ['e/6', 'f/6'], duration: '8', stem_direction: Stem.DOWN },\n ];\n const staveNotes = notes.map((note) => new StaveNote(note));\n const beam1 = new Beam(staveNotes.slice(0, 2));\n const beam2 = new Beam(staveNotes.slice(3, 5));\n const beam3 = new Beam(staveNotes.slice(5, 7));\n const beam4 = new Beam(staveNotes.slice(7, 9));\n // stem, key, ledger, flag; beam.setStyle\n beam1.setStyle({ fillStyle: 'blue', strokeStyle: 'blue' });\n staveNotes[0].setKeyStyle(0, { fillStyle: 'purple' });\n staveNotes[0].setStemStyle({ strokeStyle: 'green' });\n staveNotes[1].setStemStyle({ strokeStyle: 'orange' });\n staveNotes[1].setKeyStyle(0, { fillStyle: 'darkturquoise' });\n staveNotes[5].setStyle({ fillStyle: 'tomato', strokeStyle: 'tomato' });\n beam3.setStyle({ shadowBlur: 4, shadowColor: 'blue' });\n staveNotes[9].setLedgerLineStyle({ fillStyle: 'lawngreen', strokeStyle: 'lawngreen', lineWidth: 1 });\n staveNotes[9].setFlagStyle({ fillStyle: 'orange', strokeStyle: 'orange' });\n Formatter.FormatAndDraw(ctx, stave, staveNotes, false);\n beam1.setContext(ctx).draw();\n beam2.setContext(ctx).draw();\n beam3.setContext(ctx).draw();\n beam4.setContext(ctx).draw();\n ok('draw beam styles');\n}\nfunction dotsAndFlagsStemUp(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 800, 150);\n ctx.scale(1.0, 1.0);\n ctx.setFillStyle('#221');\n ctx.setStrokeStyle('#221');\n const stave = new Stave(10, 10, 975);\n const notes = [\n staveNote({ keys: ['f/4'], duration: '4', stem_direction: Stem.UP }),\n staveNote({ keys: ['f/4'], duration: '8', stem_direction: Stem.UP }),\n staveNote({ keys: ['f/4'], duration: '16', stem_direction: Stem.UP }),\n staveNote({ keys: ['f/4'], duration: '32', stem_direction: Stem.UP }),\n staveNote({ keys: ['f/4'], duration: '64', stem_direction: Stem.UP }),\n staveNote({ keys: ['f/4'], duration: '128', stem_direction: Stem.UP }),\n staveNote({ keys: ['g/4'], duration: '4', stem_direction: Stem.UP }),\n staveNote({ keys: ['g/4'], duration: '8', stem_direction: Stem.UP }),\n staveNote({ keys: ['g/4'], duration: '16', stem_direction: Stem.UP }),\n staveNote({ keys: ['g/4'], duration: '32' }),\n staveNote({ keys: ['g/4'], duration: '64', stem_direction: Stem.UP }),\n staveNote({ keys: ['g/4'], duration: '128', stem_direction: Stem.UP }),\n ];\n Dot.buildAndAttach(notes, { all: true });\n Dot.buildAndAttach([notes[5], notes[11]], { all: true });\n stave.setContext(ctx).draw();\n for (let i = 0; i < notes.length; ++i) {\n draw(notes[i], stave, ctx, i * 65);\n }\n ok(true, 'Full Dot');\n}\nfunction dotsAndFlagsStemDown(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 800, 160);\n ctx.scale(1.0, 1.0);\n ctx.setFillStyle('#221');\n ctx.setStrokeStyle('#221');\n const stave = new Stave(10, 10, 975);\n const staveNotes = [\n staveNote({ keys: ['e/5'], duration: '4', stem_direction: Stem.DOWN }),\n staveNote({ keys: ['e/5'], duration: '8', stem_direction: Stem.DOWN }),\n staveNote({ keys: ['e/5'], duration: '16', stem_direction: Stem.DOWN }),\n staveNote({ keys: ['e/5'], duration: '32', stem_direction: Stem.DOWN }),\n staveNote({ keys: ['e/5'], duration: '64', stem_direction: Stem.DOWN }),\n staveNote({ keys: ['e/5'], duration: '128', stem_direction: Stem.DOWN }),\n staveNote({ keys: ['d/5'], duration: '4', stem_direction: Stem.DOWN }),\n staveNote({ keys: ['d/5'], duration: '8', stem_direction: Stem.DOWN }),\n staveNote({ keys: ['d/5'], duration: '16', stem_direction: Stem.DOWN }),\n staveNote({ keys: ['d/5'], duration: '32', stem_direction: Stem.DOWN }),\n staveNote({ keys: ['d/5'], duration: '64', stem_direction: Stem.DOWN }),\n staveNote({ keys: ['d/5'], duration: '128', stem_direction: Stem.DOWN }),\n ];\n Dot.buildAndAttach(staveNotes, { all: true });\n stave.setContext(ctx).draw();\n for (let i = 0; i < staveNotes.length; ++i) {\n draw(staveNotes[i], stave, ctx, i * 65);\n }\n ok(true, 'Full Dot');\n}\nfunction dotsAndBeamsUp(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 800, 150);\n ctx.scale(1.0, 1.0);\n ctx.setFillStyle('#221');\n ctx.setStrokeStyle('#221');\n const stave = new Stave(10, 10, 975);\n const staveNotes = [\n staveNote({ keys: ['f/4'], duration: '8', stem_direction: Stem.UP }),\n staveNote({ keys: ['f/4'], duration: '16', stem_direction: Stem.UP }),\n staveNote({ keys: ['f/4'], duration: '32', stem_direction: Stem.UP }),\n staveNote({ keys: ['f/4'], duration: '64', stem_direction: Stem.UP }),\n staveNote({ keys: ['f/4'], duration: '128', stem_direction: Stem.UP }),\n staveNote({ keys: ['g/4'], duration: '8', stem_direction: Stem.UP }),\n staveNote({ keys: ['g/4'], duration: '16', stem_direction: Stem.UP }),\n staveNote({ keys: ['g/4'], duration: '32' }),\n staveNote({ keys: ['g/4'], duration: '64', stem_direction: Stem.UP }),\n staveNote({ keys: ['g/4'], duration: '128', stem_direction: Stem.UP }),\n ];\n Dot.buildAndAttach(staveNotes, { all: true });\n Dot.buildAndAttach([staveNotes[4], staveNotes[9]], { all: true });\n const beam = new Beam(staveNotes);\n stave.setContext(ctx).draw();\n for (let i = 0; i < staveNotes.length; ++i) {\n draw(staveNotes[i], stave, ctx, i * 65);\n }\n beam.setContext(ctx).draw();\n ok(true, 'Full Dot');\n}\nfunction dotsAndBeamsDown(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 800, 160);\n ctx.scale(1.0, 1.0);\n ctx.setFillStyle('#221');\n ctx.setStrokeStyle('#221');\n const stave = new Stave(10, 10, 975);\n const staveNotes = [\n staveNote({ keys: ['e/5'], duration: '8', stem_direction: Stem.DOWN }),\n staveNote({ keys: ['e/5'], duration: '16', stem_direction: Stem.DOWN }),\n staveNote({ keys: ['e/5'], duration: '32', stem_direction: Stem.DOWN }),\n staveNote({ keys: ['e/5'], duration: '64', stem_direction: Stem.DOWN }),\n staveNote({ keys: ['e/5'], duration: '128', stem_direction: Stem.DOWN }),\n staveNote({ keys: ['d/5'], duration: '8', stem_direction: Stem.DOWN }),\n staveNote({ keys: ['d/5'], duration: '16', stem_direction: Stem.DOWN }),\n staveNote({ keys: ['d/5'], duration: '32', stem_direction: Stem.DOWN }),\n staveNote({ keys: ['d/5'], duration: '64', stem_direction: Stem.DOWN }),\n staveNote({ keys: ['d/5'], duration: '128', stem_direction: Stem.DOWN }),\n ];\n Dot.buildAndAttach(staveNotes, { all: true });\n const beam = new Beam(staveNotes);\n stave.setContext(ctx).draw();\n for (let i = 0; i < staveNotes.length; ++i) {\n draw(staveNotes[i], stave, ctx, i * 65);\n }\n beam.setContext(ctx).draw();\n ok(true, 'Full Dot');\n}\nfunction noteHeadsSimple(options) {\n const vf = VexFlowTests.makeFactory(options, 800, 250);\n const score = vf.EasyScore();\n const system1 = vf.System({ y: 100, x: 50, width: 200 });\n system1\n .addStave({\n voices: [\n score.voice([...score.beam(score.notes('a4/8, b4/8', { stem: 'up' })), ...score.notes('a4/q/r, a4/h/r')]),\n score.voice(score.notes('g4/w')),\n ],\n })\n .addClef('treble')\n .addTimeSignature('4/4');\n const system2 = vf.System({ y: 100, x: 250, width: 150 });\n system2.addStave({\n voices: [score.voice(score.notes('b4/h, b4/h/r')), score.voice(score.notes('b4/w'))],\n });\n const system3 = vf.System({ y: 100, x: 400, width: 150 });\n system3.addStave({\n voices: [score.voice(score.notes('d5/h, d5/h/r')), score.voice(score.notes('e4/w'))],\n });\n const system4 = vf.System({ y: 100, x: 550, width: 150 });\n system4.addStave({\n voices: [\n score.voice(score.notes('e4/q, e4/q/r, e4/h/r')),\n score.voice(score.notes('e4/8, e4/8/r, e4/q/r, e4/h/r')),\n ],\n });\n vf.draw();\n expect(0);\n}\nfunction noPadding(options) {\n const vf = VexFlowTests.makeFactory(options, 800, 500);\n const score = vf.EasyScore();\n function newStave(y, noPadding) {\n let system = vf.System({ y, x: 50, width: 200, noPadding });\n system\n .addStave({\n voices: [\n score.voice([...score.beam(score.notes('a4/8, b4/8', { stem: 'up' })), ...score.notes('a4/q, a4/h')]),\n score.voice(score.notes('g4/w')),\n ],\n })\n .addClef('treble')\n .addTimeSignature('4/4');\n system = vf.System({ y, x: 250, width: 150, noPadding });\n system.addStave({\n voices: [score.voice(score.notes('b4/h, b4/h')), score.voice(score.notes('b4/w'))],\n });\n system = vf.System({ y, x: 400, width: 150, noPadding });\n system.addStave({\n voices: [score.voice(score.notes('d5/h, d5/h')), score.voice(score.notes('e4/w'))],\n });\n system = vf.System({ y, x: 550, width: 150, noPadding });\n system.addStave({\n voices: [score.voice(score.notes('e4/q, e4/q, e4/h')), score.voice(score.notes('e4/8, e4/8, e4/q, e4/h'))],\n });\n }\n newStave(100, true);\n newStave(200, false);\n vf.draw();\n expect(0);\n}\nfunction noteHeadsHidden(options) {\n const vf = VexFlowTests.makeFactory(options, 800, 250);\n const score = vf.EasyScore();\n const system1 = vf.System({ y: 100, x: 50, width: 200 });\n const notes1 = score.notes('g4/w');\n notes1[0].render_options.draw = false;\n system1\n .addStave({\n voices: [\n score.voice([...score.beam(score.notes('a4/8, b4/8', { stem: 'up' })), ...score.notes('a4/q/r, a4/h/r')]),\n score.voice(notes1),\n ],\n })\n .addClef('treble')\n .addTimeSignature('4/4');\n const system2 = vf.System({ y: 100, x: 250, width: 150 });\n const notes2 = score.notes('b4/w');\n notes2[0].render_options.draw = false;\n system2.addStave({\n voices: [score.voice(score.notes('b4/h, b4/h/r')), score.voice(notes2)],\n });\n const system3 = vf.System({ y: 100, x: 400, width: 150 });\n system3.addStave({\n voices: [score.voice(score.notes('d5/h, d5/h/r')), score.voice(score.notes('e4/w'))],\n });\n const system4 = vf.System({ y: 100, x: 550, width: 150 });\n const notes4 = score.notes('e4/q, e4/q/r, e4/h/r');\n notes4[0].render_options.draw = false;\n notes4[2].render_options.draw = false;\n system4.addStave({\n voices: [score.voice(notes4), score.voice(score.notes('e4/8, e4/8/r, e4/q/r, e4/h/r'))],\n });\n vf.draw();\n expect(0);\n}\nfunction centerAlignedRest(options) {\n const f = VexFlowTests.makeFactory(options, 400, 160);\n const stave = f.Stave({ x: 10, y: 10, width: 350 }).addClef('treble').addTimeSignature('4/4');\n const note = f.StaveNote({ keys: ['b/4'], duration: '1r', align_center: true });\n const voice = f.Voice().setStrict(false).addTickables([note]);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true);\n}\nfunction centerAlignedRestFermata(options) {\n const f = VexFlowTests.makeFactory(options, 400, 160);\n const stave = f.Stave({ x: 10, y: 10, width: 350 }).addClef('treble').addTimeSignature('4/4');\n const note = f\n .StaveNote({ keys: ['b/4'], duration: '1r', align_center: true })\n .addModifier(new Articulation('a@a').setPosition(3), 0);\n const voice = f.Voice().setStrict(false).addTickables([note]);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true);\n}\nfunction centerAlignedRestAnnotation(options) {\n const f = VexFlowTests.makeFactory(options, 400, 160);\n const stave = f.Stave({ x: 10, y: 10, width: 350 }).addClef('treble').addTimeSignature('4/4');\n const note = f\n .StaveNote({ keys: ['b/4'], duration: '1r', align_center: true })\n .addModifier(new Annotation('Whole measure rest').setVerticalJustification(AnnotationVerticalJustify.TOP), 0);\n const voice = f.Voice().setStrict(false).addTickables([note]);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true);\n}\nfunction centerAlignedNoteMultiModifiers(options) {\n const f = VexFlowTests.makeFactory(options, 400, 160);\n const stave = f.Stave({ x: 10, y: 10, width: 350 }).addClef('treble').addTimeSignature('4/4');\n function newFinger(num, pos) {\n return new FretHandFinger(num).setPosition(pos);\n }\n const note = f\n .StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '4', align_center: true })\n .addModifier(new Annotation('Test').setPosition(3), 0)\n .addStroke(0, new Stroke(2))\n .addModifier(new Accidental('#'), 1)\n .addModifier(newFinger('3', Modifier.Position.LEFT), 0)\n .addModifier(newFinger('2', Modifier.Position.LEFT), 2)\n .addModifier(newFinger('1', Modifier.Position.RIGHT), 1)\n .addModifier(new StringNumber('4').setPosition(Modifier.Position.BELOW), 2);\n Dot.buildAndAttach([note], { all: true });\n const voice = f.Voice().setStrict(false).addTickables([note]);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true);\n}\nfunction centerAlignedMultiVoice(options) {\n const f = VexFlowTests.makeFactory(options, 400, 160);\n const stave = f.Stave({ x: 10, y: 10, width: 350 }).addClef('treble').addTimeSignature('3/8');\n // Set a custom duration of 3 / 8.\n const custom_duration = new Fraction(3, 8);\n // TODO: Should the whole rest draw a ledger line that is visible to the left/right of the rest?\n const notes0 = [\n f.StaveNote({\n keys: ['c/4'],\n duration: '1r',\n align_center: true,\n duration_override: custom_duration,\n }),\n ];\n const createStaveNote = (struct) => f.StaveNote(struct);\n const notes1 = [\n { keys: ['b/4'], duration: '8' },\n { keys: ['b/4'], duration: '8' },\n { keys: ['b/4'], duration: '8' },\n ].map(createStaveNote);\n notes1[1].addModifier(f.Accidental({ type: '#' }), 0);\n f.Beam({ notes: notes1 });\n const voice0 = f.Voice({ time: '3/8' }).setStrict(false).addTickables(notes0);\n const voice1 = f.Voice({ time: '3/8' }).setStrict(false).addTickables(notes1);\n f.Formatter().joinVoices([voice0, voice1]).formatToStave([voice0, voice1], stave);\n f.draw();\n ok(true);\n}\nVexFlowTests.register(StaveNoteTests);\nexport { StaveNoteTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// StaveTie Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Stem } from '../src/stem';\nconst StaveTieTests = {\n Start() {\n QUnit.module('StaveTie');\n const run = VexFlowTests.runTests;\n run('Simple StaveTie', simple);\n run('Chord StaveTie', chord);\n run('Stem Up StaveTie', stemUp);\n run('No End Note With Clef', noEndNote1);\n run('No End Note', noEndNote2);\n run('No Start Note With Clef', noStartNote1);\n run('No Start Note', noStartNote2);\n run('Set Direction Down', setDirectionDown);\n run('Set Direction Up', setDirectionUp);\n },\n};\n/**\n * Used by the 7 tests below to set up the stave, easyscore, notes, voice, and to format & draw.\n */\nfunction createTest(notesData, setupTies) {\n return (options) => {\n const factory = VexFlowTests.makeFactory(options, 300);\n const stave = factory.Stave();\n const score = factory.EasyScore();\n const notes = score.notes(notesData[0], notesData[1]);\n const voice = score.voice(notes);\n // const tickables = voice.getTickables(); // same as the notes that we passed in.\n setupTies(factory, notes, stave);\n factory.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n factory.draw();\n ok(true);\n };\n}\nconst simple = createTest(['(cb4 e#4 a4)/2, (d4 e4 f4)', { stem: 'down' }], (f, notes) => {\n f.StaveTie({\n from: notes[0],\n to: notes[1],\n first_indices: [0, 1],\n last_indices: [0, 1],\n });\n});\nconst chord = createTest(['(d4 e4 f4)/2, (cn4 f#4 a4)', { stem: 'down' }], (f, notes) => {\n f.StaveTie({\n from: notes[0],\n to: notes[1],\n first_indices: [0, 1, 2],\n last_indices: [0, 1, 2],\n });\n});\nconst stemUp = createTest(['(d4 e4 f4)/2, (cn4 f#4 a4)', { stem: 'up' }], (f, notes) => {\n f.StaveTie({\n from: notes[0],\n to: notes[1],\n first_indices: [0, 1, 2],\n last_indices: [0, 1, 2],\n });\n});\nconst noEndNote1 = createTest(['(cb4 e#4 a4)/2, (d4 e4 f4)', { stem: 'down' }], (f, notes, stave) => {\n stave.addEndClef('treble');\n f.StaveTie({\n from: notes[1],\n first_indices: [2],\n last_indices: [2],\n text: 'slow.',\n });\n});\nconst noEndNote2 = createTest(['(cb4 e#4 a4)/2, (d4 e4 f4)', { stem: 'down' }], (f, notes) => {\n f.StaveTie({\n from: notes[1],\n first_indices: [2],\n last_indices: [2],\n text: 'slow.',\n });\n});\nconst noStartNote1 = createTest(['(cb4 e#4 a4)/2, (d4 e4 f4)', { stem: 'down' }], (f, notes, stave) => {\n stave.addClef('treble');\n f.StaveTie({\n to: notes[0],\n first_indices: [2],\n last_indices: [2],\n text: 'H',\n });\n});\nconst noStartNote2 = createTest(['(cb4 e#4 a4)/2, (d4 e4 f4)', { stem: 'down' }], (f, notes) => {\n f.StaveTie({\n to: notes[0],\n first_indices: [2],\n last_indices: [2],\n text: 'H',\n });\n});\nconst setDirectionDown = createTest(['(cb4 e#4 a4)/2, (d4 e4 f4)', { stem: 'down' }], (f, notes) => {\n f.StaveTie({\n from: notes[0],\n to: notes[1],\n first_indices: [0, 1],\n last_indices: [0, 1],\n options: { direction: Stem.DOWN },\n });\n});\nconst setDirectionUp = createTest(['(cb4 e#4 a4)/2, (d4 e4 f4)', { stem: 'down' }], (f, notes) => {\n f.StaveTie({\n from: notes[0],\n to: notes[1],\n first_indices: [0, 1],\n last_indices: [0, 1],\n options: { direction: Stem.UP },\n });\n});\nVexFlowTests.register(StaveTieTests);\nexport { StaveTieTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// StringNumber Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Glyph } from '../src/glyph';\nimport { Renderer } from '../src/renderer';\nimport { Stave } from '../src/stave';\nimport { BarlineType } from '../src/stavebarline';\nimport { Stroke } from '../src/strokes';\nconst StringNumberTests = {\n Start() {\n QUnit.module('StringNumber');\n const run = VexFlowTests.runTests;\n run('String Number In Notation', drawMultipleMeasures);\n run('String Number In Notation - no circle', drawMultipleMeasures, { drawCircle: false });\n run('Fret Hand Finger In Notation', drawFretHandFingers);\n run('Multi Voice With Strokes, String & Finger Numbers', multi);\n run('Complex Measure With String & Finger Numbers', drawAccidentals);\n },\n};\nfunction drawMultipleMeasures(options) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y;\n const f = VexFlowTests.makeFactory(options, 775, 200);\n const score = f.EasyScore();\n // bar 1\n const stave1 = f.Stave({ width: 300 }).setEndBarType(BarlineType.DOUBLE).addClef('treble');\n const notes1 = score.notes('(c4 e4 g4)/4., (c5 e5 g5)/8, (c4 f4 g4)/4, (c4 f4 g4)/4', { stem: 'down' });\n notes1[0]\n .addModifier(f.StringNumber({ number: '5', position: 'right' }, (_a = options.params) === null || _a === void 0 ? void 0 : _a.drawCircle), 0)\n .addModifier(f.StringNumber({ number: '4', position: 'left' }, (_b = options.params) === null || _b === void 0 ? void 0 : _b.drawCircle), 1)\n .addModifier(f.StringNumber({ number: '3', position: 'right' }, (_c = options.params) === null || _c === void 0 ? void 0 : _c.drawCircle), 2);\n notes1[1]\n .addModifier(f.Accidental({ type: '#' }), 0)\n .addModifier(f.StringNumber({ number: '5', position: 'below' }, (_d = options.params) === null || _d === void 0 ? void 0 : _d.drawCircle), 0)\n .addModifier(f.Accidental({ type: '#' }).setAsCautionary(), 1)\n .addModifier(f\n .StringNumber({ number: '3', position: 'above' }, (_e = options.params) === null || _e === void 0 ? void 0 : _e.drawCircle)\n .setLastNote(notes1[3])\n .setLineEndType(Renderer.LineEndType.DOWN), 2);\n notes1[2]\n .addModifier(f.StringNumber({ number: '5', position: 'left' }, (_f = options.params) === null || _f === void 0 ? void 0 : _f.drawCircle), 0)\n .addModifier(f.StringNumber({ number: '3', position: 'left' }, (_g = options.params) === null || _g === void 0 ? void 0 : _g.drawCircle), 2)\n .addModifier(f.Accidental({ type: '#' }), 1);\n notes1[3]\n .addModifier(f.StringNumber({ number: '5', position: 'right' }, (_h = options.params) === null || _h === void 0 ? void 0 : _h.drawCircle).setOffsetY(7), 0)\n .addModifier(f.StringNumber({ number: '4', position: 'right' }, (_j = options.params) === null || _j === void 0 ? void 0 : _j.drawCircle).setOffsetY(6), 1)\n .addModifier(f.StringNumber({ number: '3', position: 'right' }, (_k = options.params) === null || _k === void 0 ? void 0 : _k.drawCircle).setOffsetY(-6), 2);\n const voice1 = score.voice(notes1);\n f.Formatter().joinVoices([voice1]).formatToStave([voice1], stave1);\n // bar 2 - juxtaposing second bar next to first bar\n const stave2 = f\n .Stave({ x: stave1.getWidth() + stave1.getX(), y: stave1.getY(), width: 300 })\n .setEndBarType(BarlineType.DOUBLE);\n const notes2 = score.notes('(c4 e4 g4)/4, (c5 e5 g5), (c4 f4 g4), (c4 f4 g4)', { stem: 'up' });\n notes2[0]\n .addModifier(f.StringNumber({ number: '5', position: 'right' }, (_l = options.params) === null || _l === void 0 ? void 0 : _l.drawCircle), 0)\n .addModifier(f.StringNumber({ number: '4', position: 'left' }, (_m = options.params) === null || _m === void 0 ? void 0 : _m.drawCircle), 1)\n .addModifier(f.StringNumber({ number: '3', position: 'right' }, (_o = options.params) === null || _o === void 0 ? void 0 : _o.drawCircle), 2);\n notes2[1]\n .addModifier(f.Accidental({ type: '#' }), 0)\n .addModifier(f.StringNumber({ number: '5', position: 'below' }, (_p = options.params) === null || _p === void 0 ? void 0 : _p.drawCircle), 0)\n .addModifier(f.Accidental({ type: '#' }), 1)\n .addModifier(f\n .StringNumber({ number: '3', position: 'above' }, (_q = options.params) === null || _q === void 0 ? void 0 : _q.drawCircle)\n .setLastNote(notes2[3])\n .setDashed(false), 2);\n notes2[2]\n .addModifier(f.StringNumber({ number: '3', position: 'left' }, (_r = options.params) === null || _r === void 0 ? void 0 : _r.drawCircle), 2)\n .addModifier(f.Accidental({ type: '#' }), 1);\n notes2[3]\n .addModifier(f.StringNumber({ number: '5', position: 'right' }, (_s = options.params) === null || _s === void 0 ? void 0 : _s.drawCircle).setOffsetY(7), 0)\n .addModifier(f.StringNumber({ number: '4', position: 'right' }, (_t = options.params) === null || _t === void 0 ? void 0 : _t.drawCircle).setOffsetY(6), 1)\n .addModifier(f.StringNumber({ number: '3', position: 'right' }, (_u = options.params) === null || _u === void 0 ? void 0 : _u.drawCircle).setOffsetY(-6), 2);\n const voice2 = score.voice(notes2);\n f.Formatter().joinVoices([voice2]).formatToStave([voice2], stave2);\n // bar 3 - juxtaposing third bar next to second bar\n const stave3 = f\n .Stave({ x: stave2.getWidth() + stave2.getX(), y: stave2.getY(), width: 150 })\n .setEndBarType(BarlineType.END);\n const notesBar3 = score.notes('(c4 e4 g4 a4)/1.');\n notesBar3[0]\n .addModifier(f.StringNumber({ number: '5', position: 'below' }, (_v = options.params) === null || _v === void 0 ? void 0 : _v.drawCircle), 0)\n .addModifier(f.StringNumber({ number: '4', position: 'right' }, (_w = options.params) === null || _w === void 0 ? void 0 : _w.drawCircle), 1)\n .addModifier(f.StringNumber({ number: '3', position: 'left' }, (_x = options.params) === null || _x === void 0 ? void 0 : _x.drawCircle), 2)\n .addModifier(f.StringNumber({ number: '2', position: 'above' }, (_y = options.params) === null || _y === void 0 ? void 0 : _y.drawCircle), 3);\n const voice3 = score.voice(notesBar3, { time: '6/4' });\n f.Formatter().joinVoices([voice3]).formatToStave([voice3], stave3);\n f.draw();\n ok(true, 'String Number');\n}\nfunction drawFretHandFingers(options) {\n const f = VexFlowTests.makeFactory(options, 725, 200);\n const score = f.EasyScore();\n // bar 1\n const stave1 = f.Stave({ width: 350 }).setEndBarType(BarlineType.DOUBLE).addClef('treble');\n const notes1 = score.notes('(c4 e4 g4)/4, (c5 e5 g5), (c4 f4 g4), (c4 f4 g4)', { stem: 'down' });\n notes1[0]\n .addModifier(f.Fingering({ number: '3', position: 'left' }), 0)\n .addModifier(f.Fingering({ number: '2', position: 'left' }), 1)\n .addModifier(f.Fingering({ number: '0', position: 'left' }), 2);\n notes1[1]\n .addModifier(f.Accidental({ type: '#' }), 0)\n .addModifier(f.Fingering({ number: '3', position: 'left' }), 0)\n .addModifier(f.Fingering({ number: '2', position: 'left' }), 1)\n .addModifier(f.Accidental({ type: '#' }), 1)\n .addModifier(f.Fingering({ number: '0', position: 'left' }), 2);\n notes1[2]\n .addModifier(f.Fingering({ number: '3', position: 'below' }), 0)\n .addModifier(f.Fingering({ number: '4', position: 'left' }), 1)\n .addModifier(f.StringNumber({ number: '4', position: 'left' }), 1)\n .addModifier(f.Fingering({ number: '0', position: 'above' }), 2)\n .addModifier(f.Accidental({ type: '#' }), 1);\n notes1[3]\n .addModifier(f.Fingering({ number: '3', position: 'right' }), 0)\n .addModifier(f.StringNumber({ number: '5', position: 'right' }).setOffsetY(7), 0)\n .addModifier(f.Fingering({ number: '4', position: 'right' }), 1)\n .addModifier(f.StringNumber({ number: '4', position: 'right' }).setOffsetY(6), 1)\n .addModifier(f.Fingering({ number: '0', position: 'right' }).setOffsetY(-5), 2)\n .addModifier(f.StringNumber({ number: '3', position: 'right' }).setOffsetY(-6), 2);\n const voice1 = score.voice(notes1);\n f.Formatter().joinVoices([voice1]).formatToStave([voice1], stave1);\n // bar 2 - juxtaposing second bar next to first bar\n const stave2 = f\n .Stave({ x: stave1.getWidth() + stave1.getX(), y: stave1.getY(), width: 350 })\n .setEndBarType(BarlineType.END);\n const notes2 = score.notes('(c4 e4 g4)/4., (c5 e5 g5)/8, (c4 f4 g4)/8, (c4 f4 g4)/4.[stem=\"down\"]', {\n stem: 'up',\n });\n notes2[0]\n .addModifier(f.Fingering({ number: '3', position: 'right' }), 0)\n .addModifier(f.Fingering({ number: '2', position: 'left' }), 1)\n .addModifier(f.StringNumber({ number: '4', position: 'right' }), 1)\n .addModifier(f.Fingering({ number: '0', position: 'above' }), 2);\n notes2[1]\n .addModifier(f.Accidental({ type: '#' }), 0)\n .addModifier(f.Fingering({ number: '3', position: 'right' }), 0)\n .addModifier(f.Fingering({ number: '2', position: 'left' }), 1)\n .addModifier(f.Accidental({ type: '#' }), 1)\n .addModifier(f.Fingering({ number: '0', position: 'left' }), 2);\n notes2[2]\n .addModifier(f.Fingering({ number: '3', position: 'below' }), 0)\n .addModifier(f.Fingering({ number: '2', position: 'left' }), 1)\n .addModifier(f.StringNumber({ number: '4', position: 'left' }), 1)\n .addModifier(f.Fingering({ number: '1', position: 'right' }), 2)\n .addModifier(f.Accidental({ type: '#' }), 2);\n notes2[3]\n .addModifier(f.Fingering({ number: '3', position: 'right' }), 0)\n .addModifier(f.StringNumber({ number: '5', position: 'right' }).setOffsetY(7), 0)\n .addModifier(f.Fingering({ number: '4', position: 'right' }), 1)\n .addModifier(f.StringNumber({ number: '4', position: 'right' }).setOffsetY(6), 1)\n .addModifier(f.Fingering({ number: '1', position: 'right' }).setOffsetY(-6), 2)\n .addModifier(f.StringNumber({ number: '3', position: 'right' }).setOffsetY(-6), 2);\n const voice2 = score.voice(notes2);\n f.Formatter().joinVoices([voice2]).formatToStave([voice2], stave2);\n f.draw();\n ok(true, 'String Number');\n}\nfunction multi(options) {\n const f = VexFlowTests.makeFactory(options, 700, 200);\n const score = f.EasyScore();\n const stave = f.Stave();\n const notes1 = score.notes('(c4 e4 g4)/4, (a3 e4 g4), (c4 d4 a4), (c4 d4 a4)', { stem: 'up' });\n notes1[0]\n .addStroke(0, new Stroke(5))\n .addModifier(f.Fingering({ number: '3', position: 'left' }), 0)\n .addModifier(f.Fingering({ number: '2', position: 'left' }), 1)\n .addModifier(f.Fingering({ number: '0', position: 'left' }), 2)\n .addModifier(f.StringNumber({ number: '4', position: 'left' }), 1)\n .addModifier(f.StringNumber({ number: '3', position: 'above' }), 2);\n notes1[1]\n .addStroke(0, new Stroke(6))\n .addModifier(f.StringNumber({ number: '4', position: 'right' }), 1)\n .addModifier(f.StringNumber({ number: '3', position: 'above' }), 2)\n .addModifier(f.Accidental({ type: '#' }), 0)\n .addModifier(f.Accidental({ type: '#' }), 1)\n .addModifier(f.Accidental({ type: '#' }), 2);\n notes1[2]\n .addStroke(0, new Stroke(2))\n .addModifier(f.Fingering({ number: '3', position: 'left' }), 0)\n .addModifier(f.Fingering({ number: '0', position: 'right' }), 1)\n .addModifier(f.StringNumber({ number: '4', position: 'right' }), 1)\n .addModifier(f.Fingering({ number: '1', position: 'left' }), 2)\n .addModifier(f.StringNumber({ number: '3', position: 'right' }), 2);\n notes1[3]\n .addStroke(0, new Stroke(1))\n .addModifier(f.StringNumber({ number: '3', position: 'left' }), 2)\n .addModifier(f.StringNumber({ number: '4', position: 'right' }), 1);\n const notes2 = score.notes('e3/8, e3, e3, e3, e3, e3, e3, e3', { stem: 'down' });\n notes2[0]\n .addModifier(f.Fingering({ number: '0', position: 'left' }), 0)\n .addModifier(f.StringNumber({ number: '6', position: 'below' }), 0);\n notes2[2].addModifier(f.Accidental({ type: '#' }), 0);\n notes2[4].addModifier(f.Fingering({ number: '0', position: 'left' }), 0);\n // Position string number 6 beneath the strum arrow: left (15) and down (18)\n notes2[4].addModifier(f.StringNumber({ number: '6', position: 'left' }).setOffsetX(15).setOffsetY(18), 0);\n // Important Note: notes2 must come first, otherwise ledger lines from notes2 will be drawn on top of notes from notes1!\n // BUG: VexFlow draws TWO ledger lines for middle C, because both notes1 and notes2 require the middle C ledger line.\n const voices = [score.voice(notes2), score.voice(notes1)];\n f.Formatter().joinVoices(voices).formatToStave(voices, stave);\n f.Beam({ notes: notes2.slice(0, 4) });\n f.Beam({ notes: notes2.slice(4, 8) });\n f.draw();\n ok(true, 'Strokes Test Multi Voice');\n}\nfunction drawAccidentals(options) {\n const f = VexFlowTests.makeFactory(options, 750);\n const glyphScale = 39; // default font scale\n const clefWidth = Glyph.getWidth('gClef', glyphScale); // widest clef\n const notes = [\n f.StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'c/5', 'e/5', 'g/5'], stem_direction: 1, duration: '4' }),\n f.StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'd/5', 'e/5', 'g/5'], stem_direction: 1, duration: '4' }),\n f.StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'd/5', 'e/5', 'g/5'], stem_direction: -1, duration: '4' }),\n f.StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'd/5', 'e/5', 'g/5'], stem_direction: -1, duration: '4' }),\n ];\n notes[0]\n .addModifier(f.Fingering({ number: '3', position: 'left' }), 0)\n .addModifier(f.Accidental({ type: '#' }), 0)\n .addModifier(f.Fingering({ number: '2', position: 'left' }), 1)\n .addModifier(f.StringNumber({ number: '2', position: 'left' }), 1)\n .addModifier(f.Accidental({ type: '#' }), 1)\n .addModifier(f.Fingering({ number: '0', position: 'left' }), 2)\n .addModifier(f.Accidental({ type: '#' }), 2)\n .addModifier(f.Fingering({ number: '3', position: 'left' }), 3)\n .addModifier(f.Accidental({ type: '#' }), 3)\n .addModifier(f.Fingering({ number: '2', position: 'right' }), 4)\n .addModifier(f.StringNumber({ number: '3', position: 'right' }), 4)\n .addModifier(f.Accidental({ type: '#' }), 4)\n .addModifier(f.Fingering({ number: '0', position: 'left' }), 5)\n .addModifier(f.Accidental({ type: '#' }), 5);\n notes[1]\n .addModifier(f.Accidental({ type: '#' }), 0)\n .addModifier(f.Accidental({ type: '#' }), 1)\n .addModifier(f.Accidental({ type: '#' }), 2)\n .addModifier(f.Accidental({ type: '#' }), 3)\n .addModifier(f.Accidental({ type: '#' }), 4)\n .addModifier(f.Accidental({ type: '#' }), 5);\n notes[2]\n .addModifier(f.Fingering({ number: '3', position: 'left' }), 0)\n .addModifier(f.Accidental({ type: '#' }), 0)\n .addModifier(f.Fingering({ number: '2', position: 'left' }), 1)\n .addModifier(f.StringNumber({ number: '2', position: 'left' }), 1)\n .addModifier(f.Accidental({ type: '#' }), 1)\n .addModifier(f.Fingering({ number: '0', position: 'left' }), 2)\n .addModifier(f.Accidental({ type: '#' }), 2)\n .addModifier(f.Fingering({ number: '3', position: 'left' }), 3)\n .addModifier(f.Accidental({ type: '#' }), 3)\n .addModifier(f.Fingering({ number: '2', position: 'right' }), 4)\n .addModifier(f.StringNumber({ number: '3', position: 'right' }), 4)\n .addModifier(f.Accidental({ type: '#' }), 4)\n .addModifier(f.Fingering({ number: '0', position: 'left' }), 5)\n .addModifier(f.Accidental({ type: '#' }), 5);\n notes[3]\n .addModifier(f.Accidental({ type: '#' }), 0)\n .addModifier(f.Accidental({ type: '#' }), 1)\n .addModifier(f.Accidental({ type: '#' }), 2)\n .addModifier(f.Accidental({ type: '#' }), 3)\n .addModifier(f.Accidental({ type: '#' }), 4)\n .addModifier(f.Accidental({ type: '#' }), 5);\n const voice = f.Voice().addTickables(notes);\n const ctx = f.getContext();\n const formatter = f.Formatter().joinVoices([voice]);\n const stavePadding = clefWidth + Stave.defaultPadding + 10;\n const nwidth = Math.max(formatter.preCalculateMinTotalWidth([voice]), 490 - stavePadding);\n formatter.format([voice], nwidth);\n const stave = f\n .Stave({ x: 0, y: 0, width: nwidth + stavePadding })\n .setContext(ctx)\n .setEndBarType(BarlineType.DOUBLE)\n .addClef('treble')\n .draw();\n voice.draw(ctx, stave);\n ok(true, 'String Number');\n}\nVexFlowTests.register(StringNumberTests);\nexport { StringNumberTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Strokes Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Barline, Beam, Bend, Stroke } from '../src/index';\nconst StrokesTests = {\n Start() {\n QUnit.module('Strokes');\n const run = VexFlowTests.runTests;\n // TODO: Rename tests by removing 'Strokes - ' since it is redundant with the module name.\n // This will make flow.html easier to read.\n run('Strokes - Brush/Roll/Rasquedo', brushRollRasquedo);\n run('Strokes - Arpeggio directionless (without arrows)', arpeggioDirectionless);\n run('Strokes - Multi Voice', multiVoice);\n run('Strokes - Notation and Tab', notesWithTab);\n run('Strokes - Multi-Voice Notation and Tab', multiNotationAndTab);\n },\n};\nfunction brushRollRasquedo(options) {\n const f = VexFlowTests.makeFactory(options, 600, 200);\n const score = f.EasyScore();\n // bar 1\n const stave1 = f.Stave({ width: 250 }).setEndBarType(Barline.type.DOUBLE);\n const notes1 = score.notes('(a3 e4 a4)/4, (c4 e4 g4), (c4 e4 g4), (c4 e4 g4)', { stem: 'up' });\n notes1[0].addStroke(0, new Stroke(1));\n notes1[1]\n .addStroke(0, new Stroke(2))\n .addModifier(f.Accidental({ type: '#' }), 1)\n .addModifier(f.Accidental({ type: '#' }), 2)\n .addModifier(f.Accidental({ type: '#' }), 0);\n notes1[2].addStroke(0, new Stroke(1));\n notes1[3].addStroke(0, new Stroke(2));\n const voice1 = score.voice(notes1);\n f.Formatter().joinVoices([voice1]).formatToStave([voice1], stave1);\n // bar 2\n const stave2 = f\n .Stave({ x: stave1.getWidth() + stave1.getX(), y: stave1.getY(), width: 300 })\n .setEndBarType(Barline.type.DOUBLE);\n const notes2 = score.notes('(c4 d4 g4)/4, (c4 d4 g4), (c4 d4 g4), (c4 d4 a4)', { stem: 'up' });\n notes2[0].addStroke(0, new Stroke(3));\n notes2[1].addStroke(0, new Stroke(4));\n notes2[2].addStroke(0, new Stroke(5));\n notes2[3]\n .addStroke(0, new Stroke(6))\n .addModifier(f.Accidental({ type: 'bb' }), 0)\n .addModifier(f.Accidental({ type: 'bb' }), 1)\n .addModifier(f.Accidental({ type: 'bb' }), 2);\n const voice2 = score.voice(notes2);\n f.Formatter().joinVoices([voice2]).formatToStave([voice2], stave2);\n f.draw();\n ok(true, 'Brush/Roll/Rasquedo');\n}\nfunction arpeggioDirectionless(options) {\n const f = VexFlowTests.makeFactory(options, 700, 200);\n const score = f.EasyScore();\n // bar 1\n const stave1 = f.Stave({ x: 100, width: 500 }).setEndBarType(Barline.type.DOUBLE);\n const notes1 = score.notes('(g4 b4 d5)/4, (g4 b4 d5 g5), (g4 b4 d5 g5), (g4 b4 d5)', { stem: 'up' });\n const graceNoteStructs = [\n { keys: ['e/4'], duration: '32' },\n { keys: ['f/4'], duration: '32' },\n { keys: ['g/4'], duration: '32' },\n ];\n const graceNotes = graceNoteStructs.map((graceNoteStruct) => f.GraceNote(graceNoteStruct));\n const graceNoteGroup = f.GraceNoteGroup({ notes: graceNotes, slur: false });\n graceNoteGroup.beamNotes();\n notes1[0].addStroke(0, new Stroke(7));\n notes1[1]\n .addStroke(0, new Stroke(7))\n .addModifier(f.Accidental({ type: '#' }), 0)\n .addModifier(f.Accidental({ type: '#' }), 1)\n .addModifier(f.Accidental({ type: '#' }), 2)\n .addModifier(f.Accidental({ type: '#' }), 3);\n notes1[2]\n .addStroke(0, new Stroke(7))\n .addModifier(f.Accidental({ type: 'b' }), 1)\n .addModifier(graceNoteGroup, 0);\n notes1[3].addStroke(0, new Stroke(7)).addModifier(f.NoteSubGroup({\n notes: [f.ClefNote({ type: 'treble', options: { size: 'default', annotation: '8va' } })],\n }), 0);\n const voice1 = score.voice(notes1);\n f.Formatter().joinVoices([voice1]).formatToStave([voice1], stave1);\n f.draw();\n ok(true, 'Arpeggio directionless (without arrows)');\n}\nfunction multiVoice(options) {\n const f = VexFlowTests.makeFactory(options, 500, 200);\n const score = f.EasyScore();\n const stave = f.Stave();\n const notes1 = score.notes('(c4 e4 g4)/4, (c4 e4 g4), (c4 d4 a4), (c4 d4 a4)', { stem: 'up' });\n notes1[0].addStroke(0, new Stroke(5));\n notes1[1]\n .addStroke(0, new Stroke(6))\n .addModifier(f.Accidental({ type: '#' }), 0)\n .addModifier(f.Accidental({ type: '#' }), 2);\n notes1[2].addStroke(0, new Stroke(2));\n notes1[3].addStroke(0, new Stroke(1));\n const notes2 = score.notes('e3/8, e3, e3, e3, e3, e3, e3, e3', { stem: 'down' });\n f.Beam({ notes: notes2.slice(0, 4) });\n f.Beam({ notes: notes2.slice(4, 8) });\n const voices = [notes1, notes2].map((notes) => score.voice(notes));\n f.Formatter().joinVoices(voices).formatToStave(voices, stave);\n f.draw();\n ok(true, 'Strokes Test Multi Voice');\n}\nfunction multiNotationAndTab(options) {\n const f = VexFlowTests.makeFactory(options, 400, 275);\n const score = f.EasyScore();\n const stave = f.Stave().addClef('treble');\n // notation upper voice notes\n const notes1 = score.notes('(g4 b4 e5)/4, (g4 b4 e5), (g4 b4 e5), (g4 b4 e5)', { stem: 'up' });\n notes1[0].addStroke(0, new Stroke(3, { all_voices: false }));\n notes1[1].addStroke(0, new Stroke(6));\n notes1[2].addStroke(0, new Stroke(2, { all_voices: false }));\n notes1[3].addStroke(0, new Stroke(1));\n const notes2 = score.notes('g3/4, g3, g3, g3', { stem: 'down' });\n f.TabStave({ y: 100 }).addClef('tab').setNoteStartX(stave.getNoteStartX());\n // tablature upper voice notes\n const tabNotes1 = [\n f.TabNote({\n positions: [\n { str: 3, fret: 0 },\n { str: 2, fret: 0 },\n { str: 1, fret: 1 },\n ],\n duration: '4',\n }),\n f.TabNote({\n positions: [\n { str: 3, fret: 0 },\n { str: 2, fret: 0 },\n { str: 1, fret: 1 },\n ],\n duration: '4',\n }),\n f.TabNote({\n positions: [\n { str: 3, fret: 0 },\n { str: 2, fret: 0 },\n { str: 1, fret: 1 },\n ],\n duration: '4',\n }),\n f.TabNote({\n positions: [\n { str: 3, fret: 0 },\n { str: 2, fret: 0 },\n { str: 1, fret: 1 },\n ],\n duration: '4',\n }),\n ];\n tabNotes1[0].addStroke(0, new Stroke(3, { all_voices: false }));\n tabNotes1[1].addStroke(0, new Stroke(6));\n tabNotes1[2].addStroke(0, new Stroke(2, { all_voices: false }));\n tabNotes1[3].addStroke(0, new Stroke(1));\n const tabNotes2 = [\n f.TabNote({ positions: [{ str: 6, fret: 3 }], duration: '4' }),\n f.TabNote({ positions: [{ str: 6, fret: 3 }], duration: '4' }),\n f.TabNote({ positions: [{ str: 6, fret: 3 }], duration: '4' }),\n f.TabNote({ positions: [{ str: 6, fret: 3 }], duration: '4' }),\n ];\n const voices = [notes1, notes2, tabNotes1, tabNotes2].map((notes) => score.voice(notes));\n f.Formatter().joinVoices(voices).formatToStave(voices, stave);\n f.draw();\n ok(true, 'Strokes Test Notation & Tab Multi Voice');\n}\n/*\nfunction drawTabStrokes(options: TestOptions): void {\n const f = VexFlowTests.makeFactory(options, 600, 200);\n const stave1 = f.TabStave({ width: 250 }).setEndBarType(Barline.type.DOUBLE);\n\n const tabNotes1 = [\n f.TabNote({\n positions: [\n { str: 2, fret: 8 },\n { str: 3, fret: 9 },\n { str: 4, fret: 10 },\n ],\n duration: '4',\n }),\n f.TabNote({\n positions: [\n { str: 3, fret: 7 },\n { str: 4, fret: 8 },\n { str: 5, fret: 9 },\n ],\n duration: '4',\n }),\n f.TabNote({\n positions: [\n { str: 1, fret: 5 },\n { str: 2, fret: 6 },\n { str: 3, fret: 7 },\n { str: 4, fret: 7 },\n { str: 5, fret: 5 },\n { str: 6, fret: 5 },\n ],\n duration: '4',\n }),\n f.TabNote({\n positions: [\n { str: 4, fret: 3 },\n { str: 5, fret: 4 },\n { str: 6, fret: 5 },\n ],\n duration: '4',\n }),\n ];\n\n tabNotes1[0].addStroke(0, new Stroke(1));\n tabNotes1[1].addStroke(0, new Stroke(2));\n tabNotes1[2].addStroke(0, new Stroke(3));\n tabNotes1[3].addStroke(0, new Stroke(4));\n\n const tabVoice1 = f.Voice().addTickables(tabNotes1);\n\n f.Formatter().joinVoices([tabVoice1]).formatToStave([tabVoice1], stave1);\n\n // bar 2\n const stave2 = f.TabStave({ x: stave1.getWidth() + stave1.getX(), width: 300 }).setEndBarType(Barline.type.DOUBLE);\n\n const tabNotes2 = [\n f.TabNote({\n positions: [\n { str: 2, fret: 7 },\n { str: 3, fret: 8 },\n { str: 4, fret: 9 },\n ],\n duration: '2',\n }),\n f.TabNote({\n positions: [\n { str: 1, fret: 5 },\n { str: 2, fret: 6 },\n { str: 3, fret: 7 },\n { str: 4, fret: 7 },\n { str: 5, fret: 5 },\n { str: 6, fret: 5 },\n ],\n duration: '2',\n }),\n ];\n\n tabNotes2[0].addStroke(0, new Stroke(6));\n tabNotes2[1].addStroke(0, new Stroke(5));\n\n const tabVoice2 = f.Voice().addTickables(tabNotes2);\n\n f.Formatter().joinVoices([tabVoice2]).formatToStave([tabVoice2], stave2);\n\n f.draw();\n\n ok(true, 'Strokes Tab test');\n}\n*/\nfunction notesWithTab(options) {\n const f = VexFlowTests.makeFactory(options, 500, 300);\n const stave = f.Stave({ x: 15, y: 40, width: 450 }).addClef('treble');\n const notes = [\n f\n .StaveNote({ keys: ['b/4', 'd/5', 'g/5'], stem_direction: -1, duration: '4' })\n .addModifier(f.Accidental({ type: 'b' }), 1)\n .addModifier(f.Accidental({ type: 'b' }), 0),\n f.StaveNote({ keys: ['c/5', 'd/5'], stem_direction: -1, duration: '4' }),\n f.StaveNote({ keys: ['b/3', 'e/4', 'a/4', 'd/5'], stem_direction: 1, duration: '8' }),\n f\n .StaveNote({ keys: ['a/3', 'e/4', 'a/4', 'c/5', 'e/5', 'a/5'], stem_direction: 1, duration: '8' })\n .addModifier(f.Accidental({ type: '#' }), 3),\n f.StaveNote({ keys: ['b/3', 'e/4', 'a/4', 'd/5'], stem_direction: 1, duration: '8' }),\n f\n .StaveNote({ keys: ['a/3', 'e/4', 'a/4', 'c/5', 'f/5', 'a/5'], stem_direction: 1, duration: '8' })\n .addModifier(f.Accidental({ type: '#' }), 3)\n .addModifier(f.Accidental({ type: '#' }), 4),\n ];\n const tabstave = f\n .TabStave({ x: stave.getX(), y: 140, width: 450 })\n .addClef('tab')\n .setNoteStartX(stave.getNoteStartX());\n const tabNotes = [\n f\n .TabNote({\n positions: [\n { str: 1, fret: 3 },\n { str: 2, fret: 2 },\n { str: 3, fret: 3 },\n ],\n duration: '4',\n })\n .addModifier(new Bend('Full'), 0),\n f\n .TabNote({\n positions: [\n { str: 2, fret: 3 },\n { str: 3, fret: 5 },\n ],\n duration: '4',\n })\n .addModifier(new Bend('Unison'), 1),\n f.TabNote({\n positions: [\n { str: 3, fret: 7 },\n { str: 4, fret: 7 },\n { str: 5, fret: 7 },\n { str: 6, fret: 7 },\n ],\n duration: '8',\n }),\n f.TabNote({\n positions: [\n { str: 1, fret: 5 },\n { str: 2, fret: 5 },\n { str: 3, fret: 6 },\n { str: 4, fret: 7 },\n { str: 5, fret: 7 },\n { str: 6, fret: 5 },\n ],\n duration: '8',\n }),\n f.TabNote({\n positions: [\n { str: 3, fret: 7 },\n { str: 4, fret: 7 },\n { str: 5, fret: 7 },\n { str: 6, fret: 7 },\n ],\n duration: '8',\n }),\n f.TabNote({\n positions: [\n { str: 1, fret: 5 },\n { str: 2, fret: 5 },\n { str: 3, fret: 6 },\n { str: 4, fret: 7 },\n { str: 5, fret: 7 },\n { str: 6, fret: 5 },\n ],\n duration: '8',\n }),\n ];\n notes[0].addStroke(0, new Stroke(1));\n notes[1].addStroke(0, new Stroke(2));\n notes[2].addStroke(0, new Stroke(3));\n notes[3].addStroke(0, new Stroke(4));\n notes[4].addStroke(0, new Stroke(5));\n notes[5].addStroke(0, new Stroke(6));\n tabNotes[0].addStroke(0, new Stroke(1));\n tabNotes[1].addStroke(0, new Stroke(2));\n tabNotes[2].addStroke(0, new Stroke(3));\n tabNotes[3].addStroke(0, new Stroke(4));\n tabNotes[4].addStroke(0, new Stroke(5));\n tabNotes[5].addStroke(0, new Stroke(6));\n f.StaveConnector({\n top_stave: stave,\n bottom_stave: tabstave,\n type: 'bracket',\n });\n f.StaveConnector({\n top_stave: stave,\n bottom_stave: tabstave,\n type: 'single',\n });\n const voice = f.Voice().addTickables(notes);\n const tabVoice = f.Voice().addTickables(tabNotes);\n const beams = Beam.applyAndGetBeams(voice);\n f.Formatter().joinVoices([voice]).joinVoices([tabVoice]).formatToStave([voice, tabVoice], stave);\n f.draw();\n beams.forEach(function (beam) {\n beam.setContext(f.getContext()).draw();\n });\n ok(true);\n}\nVexFlowTests.register(StrokesTests);\nexport { StrokesTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Style Tests\n// TODO: The .addStroke(0, new Stroke(...)) in the tab test case shows a NO GLYPH for the Petaluma font.\n// TODO: Changing ctx.font seems to have no effect in the tab test case. Should it?\n// Annotation sets its own font.\n// TabNote sets its own font.\n// Is there a way to set all the text fonts in one go?\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Annotation } from '../src/annotation';\nimport { Articulation } from '../src/articulation';\nimport { Bend } from '../src/bend';\nimport { Formatter } from '../src/formatter';\nimport { KeySignature } from '../src/keysignature';\nimport { NoteSubGroup } from '../src/notesubgroup';\nimport { Ornament } from '../src/ornament';\nimport { StaveModifierPosition } from '../src/stavemodifier';\nimport { Stroke } from '../src/strokes';\nimport { TabNote } from '../src/tabnote';\nimport { TabStave } from '../src/tabstave';\nimport { TimeSignature } from '../src/timesignature';\nconst StyleTests = {\n Start() {\n QUnit.module('Style');\n const run = VexFlowTests.runTests;\n run('Basic Style', stave);\n run('TabNote modifiers Style', tab);\n },\n};\n/**\n * Helper function to create a ElementStyle options object of the form { fillStyle: XXX, strokeStyle: YYY }.\n * Used for updating the fillStyle and optionally the strokeStyle.\n */\nfunction FS(fillStyle, strokeStyle) {\n const ret = { fillStyle };\n if (strokeStyle) {\n ret.strokeStyle = strokeStyle;\n }\n return ret;\n}\n/**\n * Color elements on a stave.\n */\nfunction stave(options) {\n const f = VexFlowTests.makeFactory(options, 600, 150);\n const stave = f.Stave({ x: 25, y: 20, width: 500 });\n // Stave modifiers test.\n const keySig = new KeySignature('D');\n keySig.addToStave(stave);\n keySig.setStyle(FS('blue'));\n stave.addTimeSignature('4/4');\n const timeSig = stave.getModifiers(StaveModifierPosition.BEGIN, TimeSignature.CATEGORY);\n timeSig[0].setStyle(FS('brown'));\n const notes = [\n f\n .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: 1, duration: '4' })\n .addModifier(f.Accidental({ type: 'b' }), 0)\n .addModifier(f.Accidental({ type: '#' }), 1),\n f\n .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: 1, duration: '4' })\n .addModifier(f.Accidental({ type: 'b' }), 0)\n .addModifier(f.Accidental({ type: '#' }), 1),\n f.StaveNote({ keys: ['e/4'], stem_direction: 1, duration: '4' }),\n f.StaveNote({ keys: ['f/4'], stem_direction: 1, duration: '8' }),\n // voice.draw() test.\n f.TextDynamics({ text: 'sfz', duration: '16' }).setStyle(FS('blue')),\n // GhostNote modifiers test.\n f.GhostNote({ duration: '16' }).addModifier(new Annotation('GhostNote green text').setStyle(FS('green')), 0),\n ];\n const notes0 = notes[0];\n const notes1 = notes[1];\n notes0.setKeyStyle(0, FS('red'));\n notes1.setKeyStyle(0, FS('red'));\n // StaveNote modifiers test.\n const mods1 = notes1.getModifiers();\n mods1[0].setStyle(FS('green'));\n notes0.addModifier(new Articulation('a.').setPosition(4).setStyle(FS('green')), 0);\n notes0.addModifier(new Ornament('mordent').setStyle(FS('lightgreen')), 0);\n notes1.addModifier(new Annotation('blue').setStyle(FS('blue')), 0);\n notes1.addModifier(new NoteSubGroup([f.ClefNote({ options: { size: 'small' } }).setStyle(FS('blue'))]), 0);\n const voice = f.Voice().addTickables(notes);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'Basic Style');\n}\n/**\n * Color elements on a guitar tab.\n */\nfunction tab(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 500, 140);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n ctx.font = '10pt Arial';\n const stave = new TabStave(10, 10, 450).addTabGlyph();\n stave.getModifiers()[2].setStyle(FS('blue'));\n stave.setContext(ctx).draw();\n const tabNote = (noteStruct) => new TabNote(noteStruct);\n const notes = [\n tabNote({\n positions: [\n { str: 2, fret: 10 },\n { str: 4, fret: 9 },\n ],\n duration: 'h',\n }).addModifier(new Annotation('green text').setStyle(FS('green')), 0),\n tabNote({\n positions: [\n { str: 2, fret: 10 },\n { str: 4, fret: 9 },\n ],\n duration: 'h',\n })\n .addModifier(new Bend('Full').setStyle(FS('brown')), 0)\n .addStroke(0, new Stroke(1, { all_voices: false }).setStyle(FS('blue'))),\n ];\n Formatter.FormatAndDraw(ctx, stave, notes);\n ok(true, 'TabNote Modifiers Style');\n}\nVexFlowTests.register(StyleTests);\nexport { StyleTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// TabNote Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Dot } from '../src/dot';\nimport { Flow } from '../src/flow';\nimport { Font, FontWeight } from '../src/font';\nimport { Formatter } from '../src/formatter';\nimport { Stave } from '../src/stave';\nimport { TabNote } from '../src/tabnote';\nimport { TabStave } from '../src/tabstave';\nimport { TickContext } from '../src/tickcontext';\nimport { Voice, VoiceMode } from '../src/voice';\nconst TabNoteTests = {\n Start() {\n QUnit.module('TabNote');\n test('Tick', ticks);\n test('TabStave Line', tabStaveLine);\n test('Width', width);\n test('TickContext', tickContext);\n const run = VexFlowTests.runTests;\n run('TabNote Draw', draw);\n run('TabNote Stems Up', drawStemsUp);\n run('TabNote Stems Down', drawStemsDown);\n run('TabNote Stems Up Through Stave', drawStemsUpThrough);\n run('TabNote Stems Down Through Stave', drawStemsDownThrough);\n run('TabNote Stems with Dots', drawStemsDotted);\n },\n};\nfunction ticks() {\n const BEAT = (1 * Flow.RESOLUTION) / 4;\n let note = new TabNote({ positions: [{ str: 6, fret: 6 }], duration: '1' });\n equal(note.getTicks().value(), BEAT * 4, 'Whole note has 4 beats');\n note = new TabNote({ positions: [{ str: 3, fret: 4 }], duration: '4' });\n equal(note.getTicks().value(), BEAT, 'Quarter note has 1 beat');\n}\nfunction tabStaveLine() {\n const note = new TabNote({\n positions: [\n { str: 6, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '1',\n });\n const positions = note.getPositions();\n equal(positions[0].str, 6, 'String 6, Fret 6');\n equal(positions[0].fret, 6, 'String 6, Fret 6');\n equal(positions[1].str, 4, 'String 4, Fret 5');\n equal(positions[1].fret, 5, 'String 4, Fret 5');\n const stave = new Stave(10, 10, 300);\n note.setStave(stave);\n const ys = note.getYs();\n equal(ys.length, 2, 'Chord should be rendered on two lines');\n equal(ys[0], 100, 'Line for String 6, Fret 6');\n equal(ys[1], 80, 'Line for String 4, Fret 5');\n}\nfunction width() {\n expect(1);\n const note = new TabNote({\n positions: [\n { str: 6, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '1',\n });\n throws(() => note.getWidth(), /UnformattedNote/, 'Unformatted note should have no width');\n}\nfunction tickContext() {\n const note = new TabNote({\n positions: [\n { str: 6, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '1',\n });\n const tickContext = new TickContext().addTickable(note).preFormat().setX(10).setPadding(0);\n equal(tickContext.getWidth(), 7);\n}\nfunction draw(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 600, 140);\n ctx.font = '10pt Arial';\n const stave = new TabStave(10, 10, 550);\n stave.setContext(ctx);\n stave.draw();\n const notes = [\n { positions: [{ str: 6, fret: 6 }], duration: '4' },\n {\n positions: [\n { str: 3, fret: 6 },\n { str: 4, fret: 25 },\n ],\n duration: '4',\n },\n {\n positions: [\n { str: 2, fret: 'x' },\n { str: 5, fret: 15 },\n ],\n duration: '4',\n },\n {\n positions: [\n { str: 2, fret: 'x' },\n { str: 5, fret: 5 },\n ],\n duration: '4',\n },\n {\n positions: [\n { str: 2, fret: 10 },\n { str: 5, fret: 12 },\n ],\n duration: '4',\n },\n {\n positions: [\n { str: 6, fret: 0 },\n { str: 5, fret: 5 },\n { str: 4, fret: 5 },\n { str: 3, fret: 4 },\n { str: 2, fret: 3 },\n { str: 1, fret: 0 },\n ],\n duration: '4',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '4',\n },\n ];\n // Helper function\n function showNote(noteStruct, stave, ctx, x) {\n const tabNote = new TabNote(noteStruct);\n const tickContext = new TickContext();\n tickContext.addTickable(tabNote).preFormat().setX(x);\n tabNote.setContext(ctx).setStave(stave);\n tabNote.draw();\n return tabNote;\n }\n for (let i = 0; i < notes.length; ++i) {\n const note = notes[i];\n const tabNote = showNote(note, stave, ctx, (i + 1) * 25);\n ok(tabNote.getX() > 0, 'Note ' + i + ' has X value');\n ok(tabNote.getYs().length > 0, 'Note ' + i + ' has Y values');\n }\n}\nfunction drawStemsUp(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 600, 200);\n ctx.font = '10pt Arial';\n const stave = new TabStave(10, 30, 550);\n stave.setContext(ctx);\n stave.draw();\n const specs = [\n {\n positions: [\n { str: 3, fret: 6 },\n { str: 4, fret: 25 },\n ],\n duration: '4',\n },\n {\n positions: [\n { str: 2, fret: 10 },\n { str: 5, fret: 12 },\n ],\n duration: '8',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '8',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '16',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '32',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '64',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '128',\n },\n ];\n const notes = specs.map((struct) => {\n const tabNote = new TabNote(struct);\n tabNote.render_options.draw_stem = true;\n return tabNote;\n });\n const voice = new Voice(Flow.TIME4_4).setMode(VoiceMode.SOFT);\n voice.addTickables(notes);\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n voice.draw(ctx, stave);\n ok(true, 'TabNotes successfully drawn');\n}\nfunction drawStemsDown(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 600, 200);\n ctx.font = '10pt Arial';\n const stave = new TabStave(10, 10, 550);\n stave.setContext(ctx);\n stave.draw();\n const specs = [\n {\n positions: [\n { str: 3, fret: 6 },\n { str: 4, fret: 25 },\n ],\n duration: '4',\n },\n {\n positions: [\n { str: 2, fret: 10 },\n { str: 5, fret: 12 },\n ],\n duration: '8',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '8',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '16',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '32',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '64',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '128',\n },\n ];\n const notes = specs.map((struct) => {\n const tabNote = new TabNote(struct);\n tabNote.render_options.draw_stem = true;\n tabNote.setStemDirection(-1);\n return tabNote;\n });\n const voice = new Voice(Flow.TIME4_4).setMode(VoiceMode.SOFT);\n voice.addTickables(notes);\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n voice.draw(ctx, stave);\n ok(true, 'All objects have been drawn');\n}\nfunction drawStemsUpThrough(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 600, 200);\n ctx.font = '10pt Arial';\n const stave = new TabStave(10, 30, 550);\n stave.setContext(ctx);\n stave.draw();\n const specs = [\n {\n positions: [\n { str: 3, fret: 6 },\n { str: 4, fret: 25 },\n ],\n duration: '4',\n },\n {\n positions: [\n { str: 2, fret: 10 },\n { str: 5, fret: 12 },\n ],\n duration: '8',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '8',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '16',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '32',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '64',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '128',\n },\n ];\n const notes = specs.map((struct) => {\n const tabNote = new TabNote(struct);\n tabNote.render_options.draw_stem = true;\n tabNote.render_options.draw_stem_through_stave = true;\n return tabNote;\n });\n ctx.setFont(Font.SANS_SERIF, 10, FontWeight.BOLD);\n const voice = new Voice(Flow.TIME4_4).setMode(VoiceMode.SOFT);\n voice.addTickables(notes);\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n voice.draw(ctx, stave);\n ok(true, 'TabNotes successfully drawn');\n}\nfunction drawStemsDownThrough(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 600, 250);\n ctx.font = '10pt Arial';\n const stave = new TabStave(10, 10, 550, { num_lines: 8 });\n stave.setContext(ctx);\n stave.draw();\n const specs = [\n {\n positions: [\n { str: 3, fret: 6 },\n { str: 4, fret: 25 },\n ],\n duration: '4',\n },\n {\n positions: [\n { str: 2, fret: 10 },\n { str: 5, fret: 12 },\n ],\n duration: '8',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '8',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '16',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n { str: 6, fret: 10 },\n ],\n duration: '32',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '64',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 3, fret: 5 },\n { str: 5, fret: 5 },\n { str: 7, fret: 5 },\n ],\n duration: '128',\n },\n ];\n const notes = specs.map((struct) => {\n const tabNote = new TabNote(struct);\n tabNote.render_options.draw_stem = true;\n tabNote.render_options.draw_stem_through_stave = true;\n tabNote.setStemDirection(-1);\n return tabNote;\n });\n ctx.setFont('Arial', 10, 'bold');\n const voice = new Voice(Flow.TIME4_4).setMode(VoiceMode.SOFT);\n voice.addTickables(notes);\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n voice.draw(ctx, stave);\n ok(true, 'All objects have been drawn');\n}\nfunction drawStemsDotted(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 600, 200);\n ctx.font = '10pt Arial';\n const stave = new TabStave(10, 10, 550);\n stave.setContext(ctx);\n stave.draw();\n const specs = [\n {\n positions: [\n { str: 3, fret: 6 },\n { str: 4, fret: 25 },\n ],\n duration: '4d',\n },\n {\n positions: [\n { str: 2, fret: 10 },\n { str: 5, fret: 12 },\n ],\n duration: '8',\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '4dd',\n stem_direction: -1,\n },\n {\n positions: [\n { str: 1, fret: 6 },\n { str: 4, fret: 5 },\n ],\n duration: '16',\n stem_direction: -1,\n },\n ];\n const notes = specs.map((struct) => new TabNote(struct, true /* draw_stem */));\n Dot.buildAndAttach([notes[0], notes[2], notes[2]]);\n const voice = new Voice(Flow.TIME4_4).setMode(VoiceMode.SOFT);\n voice.addTickables(notes);\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n voice.draw(ctx, stave);\n ok(true, 'TabNotes successfully drawn');\n}\nVexFlowTests.register(TabNoteTests);\nexport { TabNoteTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// TabSlide Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Flow } from '../src/flow';\nimport { Formatter } from '../src/formatter';\nimport { TabNote } from '../src/tabnote';\nimport { TabSlide } from '../src/tabslide';\nimport { TabStave } from '../src/tabstave';\nimport { Voice } from '../src/voice';\nconst TabSlideTests = {\n Start() {\n QUnit.module('TabSlide');\n const run = VexFlowTests.runTests;\n run('Simple TabSlide', simple);\n run('Slide Up', slideUp);\n run('Slide Down', slideDown);\n },\n};\nfunction tieNotes(notes, indices, stave, ctx) {\n const voice = new Voice(Flow.TIME4_4);\n voice.addTickables(notes);\n new Formatter().joinVoices([voice]).format([voice], 100);\n voice.draw(ctx, stave);\n const tie = new TabSlide({\n first_note: notes[0],\n last_note: notes[1],\n first_indices: indices,\n last_indices: indices,\n }, TabSlide.SLIDE_UP);\n tie.setContext(ctx);\n tie.draw();\n}\nfunction setupContext(options, width) {\n // eslint-disable-next-line\n const context = options.contextBuilder(options.elementId, 350, 140);\n context.scale(0.9, 0.9);\n context.fillStyle = '#221';\n context.strokeStyle = '#221';\n context.font = '10pt Arial';\n const stave = new TabStave(10, 10, width || 350).addTabGlyph().setContext(context).draw();\n return { context, stave };\n}\n// Helper function to create TabNote objects.\nconst tabNote = (noteStruct) => new TabNote(noteStruct);\n/**\n * Test Case\n */\nfunction simple(options, contextBuilder) {\n options.contextBuilder = contextBuilder;\n const { stave, context } = setupContext(options);\n tieNotes([\n tabNote({ positions: [{ str: 4, fret: 4 }], duration: 'h' }),\n tabNote({ positions: [{ str: 4, fret: 6 }], duration: 'h' }),\n ], [0], stave, context);\n ok(true, 'Simple Test');\n}\n/**\n * The slideUp and slideDown tests pass in a builder function: TabSlide.createSlideUp | TabSlide.createSlideDown.\n */\nfunction multiTest(options, buildTabSlide) {\n const { context, stave } = setupContext(options, 440);\n const notes = [\n tabNote({ positions: [{ str: 4, fret: 4 }], duration: '8' }),\n tabNote({ positions: [{ str: 4, fret: 4 }], duration: '8' }),\n tabNote({\n positions: [\n { str: 4, fret: 4 },\n { str: 5, fret: 4 },\n ],\n duration: '8',\n }),\n tabNote({\n positions: [\n { str: 4, fret: 6 },\n { str: 5, fret: 6 },\n ],\n duration: '8',\n }),\n tabNote({ positions: [{ str: 2, fret: 14 }], duration: '8' }),\n tabNote({ positions: [{ str: 2, fret: 16 }], duration: '8' }),\n tabNote({\n positions: [\n { str: 2, fret: 14 },\n { str: 3, fret: 14 },\n ],\n duration: '8',\n }),\n tabNote({\n positions: [\n { str: 2, fret: 16 },\n { str: 3, fret: 16 },\n ],\n duration: '8',\n }),\n ];\n const voice = new Voice(Flow.TIME4_4).addTickables(notes);\n new Formatter().joinVoices([voice]).format([voice], 300);\n voice.draw(context, stave);\n buildTabSlide({\n first_note: notes[0],\n last_note: notes[1],\n first_indices: [0],\n last_indices: [0],\n })\n .setContext(context)\n .draw();\n ok(true, 'Single note');\n buildTabSlide({\n first_note: notes[2],\n last_note: notes[3],\n first_indices: [0, 1],\n last_indices: [0, 1],\n })\n .setContext(context)\n .draw();\n ok(true, 'Chord');\n buildTabSlide({\n first_note: notes[4],\n last_note: notes[5],\n first_indices: [0],\n last_indices: [0],\n })\n .setContext(context)\n .draw();\n ok(true, 'Single note high-fret');\n buildTabSlide({\n first_note: notes[6],\n last_note: notes[7],\n first_indices: [0, 1],\n last_indices: [0, 1],\n })\n .setContext(context)\n .draw();\n ok(true, 'Chord high-fret');\n}\nfunction slideUp(options, contextBuilder) {\n options.contextBuilder = contextBuilder;\n multiTest(options, TabSlide.createSlideUp);\n}\nfunction slideDown(options, contextBuilder) {\n options.contextBuilder = contextBuilder;\n multiTest(options, TabSlide.createSlideDown);\n}\nVexFlowTests.register(TabSlideTests);\nexport { TabSlideTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// TabStave Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { TabStave } from '../src/tabstave';\nconst TabStaveTests = {\n Start() {\n QUnit.module('TabStave');\n const run = VexFlowTests.runTests;\n run('TabStave Draw Test', draw);\n },\n};\nfunction draw(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 160);\n const stave = new TabStave(10, 10, 300);\n stave.setNumLines(6);\n stave.setContext(ctx);\n stave.draw();\n equal(stave.getYForNote(0), 127, 'getYForNote(0)');\n equal(stave.getYForLine(5), 127, 'getYForLine(5)');\n equal(stave.getYForLine(0), 62, 'getYForLine(0) - Top Line');\n equal(stave.getYForLine(4), 114, 'getYForLine(4) - Bottom Line');\n ok(true, 'all pass');\n}\nVexFlowTests.register(TabStaveTests);\nexport { TabStaveTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// TabTie Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Annotation } from '../src/annotation';\nimport { Flow } from '../src/flow';\nimport { Formatter } from '../src/formatter';\nimport { TabNote } from '../src/tabnote';\nimport { TabStave } from '../src/tabstave';\nimport { TabTie } from '../src/tabtie';\nimport { Voice } from '../src/voice';\nconst TabTieTests = {\n Start() {\n QUnit.module('TabTie');\n const run = VexFlowTests.runTests;\n run('Simple TabTie', simple);\n run('Hammerons', simpleHammerOn);\n run('Pulloffs', simplePullOff);\n run('Tapping', tap);\n run('Continuous', continuous);\n },\n};\n/**\n * Helper function to create TabNote objects.\n */\nconst tabNote = (noteStruct) => new TabNote(noteStruct);\n/**\n * Helper function to create a RenderContext and TabStave.\n */\nfunction setupContext(options, w = 0, h = 0) {\n // eslint-disable-next-line\n const context = options.contextBuilder(options.elementId, w || 350, h || 160);\n context.fillStyle = '#221';\n context.strokeStyle = '#221';\n context.setFont('Arial', VexFlowTests.Font.size);\n const stave = new TabStave(10, 10, w || 350).addTabGlyph().setContext(context).draw();\n return { context, stave };\n}\n/**\n * Helper function to create the TabTie between two Note objects.\n */\nfunction tieNotes(notes, indices, stave, ctx, text) {\n const voice = new Voice(Flow.TIME4_4);\n voice.addTickables(notes);\n new Formatter().joinVoices([voice]).format([voice], 100);\n voice.draw(ctx, stave);\n const tie = new TabTie({\n first_note: notes[0],\n last_note: notes[1],\n first_indices: indices,\n last_indices: indices,\n }, text !== null && text !== void 0 ? text : 'Annotation');\n tie.setContext(ctx);\n tie.draw();\n}\n/**\n * Two notes on string 4 with a tie drawn between them.\n */\nfunction simple(options, contextBuilder) {\n options.contextBuilder = contextBuilder;\n const { context, stave } = setupContext(options);\n const note1 = tabNote({ positions: [{ str: 4, fret: 4 }], duration: 'h' });\n const note2 = tabNote({ positions: [{ str: 4, fret: 6 }], duration: 'h' });\n tieNotes([note1, note2], [0], stave, context);\n ok(true, 'Simple Test');\n}\nfunction simpleHammerOn(options, contextBuilder) {\n options.contextBuilder = contextBuilder;\n multiTest(options, TabTie.createHammeron);\n}\nfunction simplePullOff(options, contextBuilder) {\n options.contextBuilder = contextBuilder;\n multiTest(options, TabTie.createPulloff);\n}\n/**\n * Helper function for the two test cases above (simpleHammerOn and simplePullOff).\n */\nfunction multiTest(options, createTabTie) {\n const { context, stave } = setupContext(options, 440, 140);\n const notes = [\n tabNote({ positions: [{ str: 4, fret: 4 }], duration: '8' }),\n tabNote({ positions: [{ str: 4, fret: 4 }], duration: '8' }),\n tabNote({\n positions: [\n { str: 4, fret: 4 },\n { str: 5, fret: 4 },\n ],\n duration: '8',\n }),\n tabNote({\n positions: [\n { str: 4, fret: 6 },\n { str: 5, fret: 6 },\n ],\n duration: '8',\n }),\n tabNote({ positions: [{ str: 2, fret: 14 }], duration: '8' }),\n tabNote({ positions: [{ str: 2, fret: 16 }], duration: '8' }),\n tabNote({\n positions: [\n { str: 2, fret: 14 },\n { str: 3, fret: 14 },\n ],\n duration: '8',\n }),\n tabNote({\n positions: [\n { str: 2, fret: 16 },\n { str: 3, fret: 16 },\n ],\n duration: '8',\n }),\n ];\n const voice = new Voice(Flow.TIME4_4).addTickables(notes);\n new Formatter().joinVoices([voice]).format([voice], 300);\n voice.draw(context, stave);\n createTabTie({\n first_note: notes[0],\n last_note: notes[1],\n first_indices: [0],\n last_indices: [0],\n })\n .setContext(context)\n .draw();\n ok(true, 'Single note');\n createTabTie({\n first_note: notes[2],\n last_note: notes[3],\n first_indices: [0, 1],\n last_indices: [0, 1],\n })\n .setContext(context)\n .draw();\n ok(true, 'Chord');\n createTabTie({\n first_note: notes[4],\n last_note: notes[5],\n first_indices: [0],\n last_indices: [0],\n })\n .setContext(context)\n .draw();\n ok(true, 'Single note high-fret');\n createTabTie({\n first_note: notes[6],\n last_note: notes[7],\n first_indices: [0, 1],\n last_indices: [0, 1],\n })\n .setContext(context)\n .draw();\n ok(true, 'Chord high-fret');\n}\nfunction tap(options, contextBuilder) {\n options.contextBuilder = contextBuilder;\n const { context, stave } = setupContext(options);\n const note1 = tabNote({ positions: [{ str: 4, fret: 12 }], duration: 'h' }).addModifier(new Annotation('T'), 0);\n const note2 = tabNote({ positions: [{ str: 4, fret: 10 }], duration: 'h' });\n tieNotes([note1, note2], [0], stave, context, 'P');\n ok(true, 'Tapping Test');\n}\nfunction continuous(options, contextBuilder) {\n options.contextBuilder = contextBuilder;\n const { context, stave } = setupContext(options, 440, 140);\n const notes = [\n tabNote({ positions: [{ str: 4, fret: 4 }], duration: 'q' }),\n tabNote({ positions: [{ str: 4, fret: 5 }], duration: 'q' }),\n tabNote({ positions: [{ str: 4, fret: 6 }], duration: 'h' }),\n ];\n const voice = new Voice(Flow.TIME4_4).addTickables(notes);\n new Formatter().joinVoices([voice]).format([voice], 300);\n voice.draw(context, stave);\n TabTie.createHammeron({\n first_note: notes[0],\n last_note: notes[1],\n first_indices: [0],\n last_indices: [0],\n })\n .setContext(context)\n .draw();\n TabTie.createPulloff({\n first_note: notes[1],\n last_note: notes[2],\n first_indices: [0],\n last_indices: [0],\n })\n .setContext(context)\n .draw();\n ok(true, 'Continuous Hammeron');\n}\nVexFlowTests.register(TabTieTests);\nexport { TabTieTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// TextBracket Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nconst TextBracketTests = {\n Start() {\n QUnit.module('TextBracket');\n const run = VexFlowTests.runTests;\n run('Simple TextBracket', simple0);\n run('TextBracket Styles', simple1);\n },\n};\nfunction simple0(options) {\n const f = VexFlowTests.makeFactory(options, 550);\n const stave = f.Stave();\n const score = f.EasyScore();\n const notes = score.notes('c4/4, c4, c4, c4, c4', { stem: 'up' });\n const voice = score.voice(notes, { time: '5/4' });\n f.TextBracket({\n from: notes[0],\n to: notes[4],\n text: '15',\n options: {\n superscript: 'va',\n position: 'top',\n },\n });\n f.TextBracket({\n from: notes[0],\n to: notes[4],\n text: '8',\n options: {\n superscript: 'vb',\n position: 'bottom',\n line: 3,\n },\n });\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true);\n}\nfunction simple1(options) {\n const f = VexFlowTests.makeFactory(options, 550);\n const stave = f.Stave();\n const score = f.EasyScore();\n const notes = score.notes('c4/4, c4, c4, c4, c4', { stem: 'up' });\n const voice = score.voice(notes, { time: '5/4' });\n const topOctaves = [\n f.TextBracket({\n from: notes[0],\n to: notes[1],\n text: 'Cool notes',\n options: {\n superscript: '',\n position: 'top',\n },\n }),\n f.TextBracket({\n from: notes[2],\n to: notes[4],\n text: 'Testing',\n options: {\n position: 'top',\n superscript: 'superscript',\n // weight & style below can be left undefined. They will fall back to the default defined in textbracket.ts.\n font: { family: 'Arial', size: 15, weight: 'normal', style: 'normal' },\n },\n }),\n ];\n const bottomOctaves = [\n f.TextBracket({\n from: notes[0],\n to: notes[1],\n text: '8',\n options: {\n superscript: 'vb',\n position: 'bottom',\n line: 3,\n font: { size: 30 },\n },\n }),\n f.TextBracket({\n from: notes[2],\n to: notes[4],\n text: 'Not cool notes',\n options: {\n superscript: ' super uncool',\n position: 'bottom',\n line: 4,\n },\n }),\n ];\n topOctaves[1].render_options.line_width = 2;\n topOctaves[1].render_options.show_bracket = false;\n bottomOctaves[0].render_options.underline_superscript = false;\n bottomOctaves[0].setDashed(false);\n bottomOctaves[1].render_options.bracket_height = 40;\n bottomOctaves[1].setDashed(true, [2, 2]);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true);\n}\nVexFlowTests.register(TextBracketTests);\nexport { TextBracketTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// TextFormatter Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { TextFormatter } from '../src/textformatter';\nconst TextFormatterTests = {\n Start() {\n QUnit.module('TextFormatter');\n test('Basic', basic);\n },\n};\nfunction basic() {\n var _a;\n // See: src/fonts/textfonts.ts > loadTextFonts()\n const registeredFamilies = TextFormatter.getFontFamilies();\n equal(registeredFamilies.length, 2, `There are two registered font families: 'Roboto Slab' & 'PetalumaScript'`);\n // Verify the advanceWidth and other metrics by opening the font file with a glyph inspector:\n // https://fontdrop.info/\n // https://opentype.js.org/glyph-inspector.html\n const petalumaFormatterInfo = TextFormatter.getInfo('PetalumaScript');\n equal((_a = petalumaFormatterInfo === null || petalumaFormatterInfo === void 0 ? void 0 : petalumaFormatterInfo.glyphs) === null || _a === void 0 ? void 0 : _a.C.advanceWidth, 623, 'PetalumaScript advanceWidth of C character is 623.');\n const formatterForPetalumaScript = TextFormatter.create({ family: 'PetalumaScript', size: '100px' });\n const metricsPetalumaScriptH = formatterForPetalumaScript.getGlyphMetrics('H');\n equal(metricsPetalumaScriptH.leftSideBearing, 37);\n const formatterForRobotoSlab = TextFormatter.create({ family: 'Roboto Slab', size: '100px', style: 'italic' });\n const metricsRobotoSlabH = formatterForRobotoSlab.getGlyphMetrics('H');\n equal(metricsRobotoSlabH.advanceWidth, 1578);\n // eslint-disable-next-line\n // @ts-ignore direct access to protected variable .cacheKey\n equal(formatterForRobotoSlab.cacheKey, 'Roboto_Slab%75%normal%normal');\n}\nVexFlowTests.register(TextFormatterTests);\nexport { TextFormatterTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Text Note Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Crescendo } from '../src/crescendo';\nimport { Flow } from '../src/flow';\nimport { Font } from '../src/font';\nimport { Note } from '../src/note';\nimport { Stave } from '../src/stave';\nimport { TextNote } from '../src/textnote';\nconst TextNoteTests = {\n Start() {\n QUnit.module('TextNote');\n const run = VexFlowTests.runTests;\n run('TextNote Formatting', formatTextNotes);\n run('TextNote Formatting 2', formatTextNotes2);\n run('TextNote Superscript and Subscript', superscriptAndSubscript);\n run('TextNote Formatting With Glyphs 0', formatTextGlyphs0);\n run('TextNote Formatting With Glyphs 1', formatTextGlyphs1);\n run('Crescendo', crescendo);\n run('Text Dynamics', textDynamics);\n },\n};\nfunction formatTextNotes(options) {\n const f = VexFlowTests.makeFactory(options, 400, 200);\n const stave = f.Stave({ y: 40 });\n const score = f.EasyScore();\n const voice1 = score.voice([\n f\n .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: -1, duration: 'h' })\n .addModifier(f.Accidental({ type: 'b' }), 0)\n .addModifier(f.Accidental({ type: '#' }), 1),\n f.StaveNote({ keys: ['d/4', 'e/4', 'f/4'], stem_direction: -1, duration: 'q' }),\n f\n .StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: 'q' })\n .addModifier(f.Accidental({ type: 'n' }), 0)\n .addModifier(f.Accidental({ type: '#' }), 1),\n ]);\n const voice2 = score.voice([\n f.TextNote({ text: 'Center Justification', duration: 'h' }).setJustification(TextNote.Justification.CENTER),\n f.TextNote({ text: 'Left Line 1', duration: 'q' }).setLine(1),\n f.TextNote({ text: 'Right', duration: 'q' }).setJustification(TextNote.Justification.RIGHT),\n ]);\n const formatter = f.Formatter();\n formatter.joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave);\n f.draw();\n ok(true);\n}\nfunction formatTextNotes2(options) {\n const f = VexFlowTests.makeFactory(options, 600, 200);\n const stave = f.Stave({ y: 40 });\n const score = f.EasyScore();\n const voice1 = score.voice([\n f.StaveNote({ keys: ['g/4'], stem_direction: 1, duration: '16' }),\n f.StaveNote({ keys: ['g/4'], stem_direction: 1, duration: '16' }),\n f.StaveNote({ keys: ['g/4'], stem_direction: 1, duration: '16' }),\n f.StaveNote({ keys: ['g/5'], stem_direction: -1, duration: '16' }),\n f.StaveNote({ keys: ['g/5'], stem_direction: -1, duration: '16' }),\n f.StaveNote({ keys: ['g/5'], stem_direction: -1, duration: '16' }),\n f.StaveNote({ keys: ['g/5', 'a/5'], stem_direction: -1, duration: '16' }),\n f.StaveNote({ keys: ['g/5', 'a/5'], stem_direction: -1, duration: '16' }),\n f.StaveNote({ keys: ['g/5', 'a/5'], stem_direction: -1, duration: '16' }),\n f.StaveNote({ keys: ['g/4', 'a/4'], stem_direction: 1, duration: '16' }),\n f.StaveNote({ keys: ['g/4', 'a/4'], stem_direction: 1, duration: '16' }),\n f.StaveNote({ keys: ['g/4', 'a/4'], stem_direction: 1, duration: '16' }),\n f.StaveNote({ keys: ['g/4', 'a/4'], stem_direction: 1, duration: 'q' }),\n ]);\n const voice2 = score.voice([\n f.TextNote({ text: 'C', duration: '16' }).setJustification(TextNote.Justification.CENTER),\n f.TextNote({ text: 'L', duration: '16' }),\n f.TextNote({ text: 'R', duration: '16' }).setJustification(TextNote.Justification.RIGHT),\n f.TextNote({ text: 'C', duration: '16' }).setJustification(TextNote.Justification.CENTER),\n f.TextNote({ text: 'L', duration: '16' }),\n f.TextNote({ text: 'R', duration: '16' }).setJustification(TextNote.Justification.RIGHT),\n f.TextNote({ text: 'C', duration: '16' }).setJustification(TextNote.Justification.CENTER),\n f.TextNote({ text: 'L', duration: '16' }),\n f.TextNote({ text: 'R', duration: '16' }).setJustification(TextNote.Justification.RIGHT),\n f.TextNote({ text: 'C', duration: '16' }).setJustification(TextNote.Justification.CENTER),\n f.TextNote({ text: 'L', duration: '16' }),\n f.TextNote({ text: 'R', duration: '16' }).setJustification(TextNote.Justification.RIGHT),\n f.TextNote({ text: 'R', duration: 'q' }).setJustification(TextNote.Justification.RIGHT),\n ]);\n f.Formatter().joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave);\n voice2.getTickables().forEach((note) => Note.plotMetrics(f.getContext(), note, 170));\n f.draw();\n ok(true);\n}\nfunction superscriptAndSubscript(options) {\n const f = VexFlowTests.makeFactory(options, 600, 230);\n const stave = f.Stave({ y: 40 });\n const score = f.EasyScore();\n const voice1 = score.voice([\n f\n .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: 1, duration: 'h' })\n .addModifier(f.Accidental({ type: 'b' }), 0)\n .addModifier(f.Accidental({ type: '#' }), 1),\n f.StaveNote({ keys: ['d/4', 'e/4', 'f/4'], stem_direction: 1, duration: 'q' }),\n f\n .StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: 1, duration: 'q' })\n .addModifier(f.Accidental({ type: 'n' }), 0)\n .addModifier(f.Accidental({ type: '#' }), 1),\n ]);\n const notes2 = [\n f.TextNote({ text: Flow.unicode.flat + 'I', superscript: '+5', duration: '8' }),\n f.TextNote({ text: 'D' + Flow.unicode.sharp + '/F', duration: '4d', superscript: 'sus2' }),\n f.TextNote({ text: 'ii', superscript: '6', subscript: '4', duration: '8' }),\n f.TextNote({ text: 'C', superscript: Flow.unicode.triangle + '7', subscript: '', duration: '8' }),\n f.TextNote({ text: 'vii', superscript: Flow.unicode['o-with-slash'] + '7', duration: '8' }),\n f.TextNote({ text: 'V', superscript: '7', duration: '8' }),\n ];\n equal(notes2[0].getText(), Flow.unicode.flat + 'I', 'TextNote.getText() return .text');\n const voice2 = score.voice(notes2);\n voice2.getTickables().forEach((note) => {\n const textNote = note;\n textNote.setFont({ family: Font.SERIF, size: 15 });\n textNote.setLine(13);\n textNote.setJustification(TextNote.Justification.LEFT);\n });\n f.Formatter().joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave);\n f.draw();\n ok(true);\n}\nfunction formatTextGlyphs0(options) {\n const f = VexFlowTests.makeFactory(options, 600, 230);\n const stave = f.Stave({ y: 40 });\n const score = f.EasyScore();\n const voice1 = score.voice([\n f\n .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: -1, duration: 'h' })\n .addModifier(f.Accidental({ type: 'b' }), 0)\n .addModifier(f.Accidental({ type: '#' }), 1),\n f.StaveNote({ keys: ['d/4', 'e/4', 'f/4'], stem_direction: -1, duration: '8' }),\n f.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '8' }),\n f.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '8' }),\n f.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '8' }),\n ]);\n const voice2 = score.voice([\n f.TextNote({ text: 'Center', duration: '8' }).setJustification(TextNote.Justification.CENTER),\n f.TextNote({ glyph: 'f', duration: '8' }),\n f.TextNote({ glyph: 'p', duration: '8' }),\n f.TextNote({ glyph: 'm', duration: '8' }),\n f.TextNote({ glyph: 'z', duration: '8' }),\n f.TextNote({ glyph: 'mordent_upper', duration: '16' }),\n f.TextNote({ glyph: 'mordent_lower', duration: '16' }),\n f.TextNote({ glyph: 'segno', duration: '8' }),\n f.TextNote({ glyph: 'coda', duration: '8' }),\n ]);\n voice2.getTickables().forEach((n) => n.setJustification(TextNote.Justification.CENTER));\n f.Formatter().joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave);\n f.draw();\n ok(true);\n}\nfunction formatTextGlyphs1(options) {\n const f = VexFlowTests.makeFactory(options, 600, 230);\n const stave = f.Stave({ y: 40 });\n const score = f.EasyScore();\n const voice1 = score.voice([\n f\n .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: -1, duration: 'h' })\n .addModifier(f.Accidental({ type: 'b' }), 0)\n .addModifier(f.Accidental({ type: '#' }), 1),\n f.StaveNote({ keys: ['d/4', 'e/4', 'f/4'], stem_direction: -1, duration: '8' }),\n f.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '8' }),\n f.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '8' }),\n f.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '8' }),\n ]);\n const voice2 = score.voice([\n f.TextNote({ glyph: 'turn', duration: '16' }),\n f.TextNote({ glyph: 'turn_inverted', duration: '16' }),\n f.TextNote({ glyph: 'pedal_open', duration: '8' }).setLine(10),\n f.TextNote({ glyph: 'pedal_close', duration: '8' }).setLine(10),\n f.TextNote({ glyph: 'caesura_curved', duration: '8' }).setLine(3),\n f.TextNote({ glyph: 'caesura_straight', duration: '8' }).setLine(3),\n f.TextNote({ glyph: 'breath', duration: '8' }).setLine(2),\n f.TextNote({ glyph: 'tick', duration: '8' }).setLine(3),\n f.TextNote({ glyph: 'tr', duration: '8', smooth: true }).setJustification(TextNote.Justification.CENTER),\n ]);\n voice2.getTickables().forEach((n) => n.setJustification(TextNote.Justification.CENTER));\n f.Formatter().joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave);\n f.draw();\n ok(true);\n}\nfunction crescendo(options) {\n const f = VexFlowTests.makeFactory(options, 600, 230);\n const stave = f.Stave({ y: 40 });\n const score = f.EasyScore();\n const voice = score.voice([\n f.TextNote({ glyph: 'p', duration: '16' }),\n new Crescendo({ duration: '4d' }).setLine(0).setHeight(25).setStave(stave),\n f.TextNote({ glyph: 'f', duration: '16' }),\n new Crescendo({ duration: '4' }).setLine(5).setStave(stave),\n new Crescendo({ duration: '4' }).setLine(10).setDecrescendo(true).setHeight(5).setStave(stave),\n ]);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true);\n}\nfunction textDynamics(options) {\n const f = VexFlowTests.makeFactory(options, 600, 230);\n const score = f.EasyScore();\n const voice = score.voice([\n f.TextDynamics({ text: 'sfz', duration: '4' }),\n f.TextDynamics({ text: 'rfz', duration: '4' }),\n f.TextDynamics({ text: 'mp', duration: '4' }),\n f.TextDynamics({ text: 'ppp', duration: '4' }),\n f.TextDynamics({ text: 'fff', duration: '4' }),\n f.TextDynamics({ text: 'mf', duration: '4' }),\n f.TextDynamics({ text: 'sff', duration: '4' }),\n ], { time: '7/4' });\n // This is refactored to use preCalculateMinWidth... to exercise\n // a bug fix when textDynamic got formatted more than once.\n const formatter = f.Formatter();\n formatter.joinVoices([voice]);\n // const width = 250; //formatter.preCalculateMinTotalWidth([voice]);\n const width = formatter.preCalculateMinTotalWidth([voice]);\n formatter.format([voice]);\n const stave = f.Stave({ y: 40, width: width + Stave.defaultPadding });\n stave.draw();\n voice.draw(f.getContext(), stave);\n ok(true);\n}\nVexFlowTests.register(TextNoteTests);\nexport { TextNoteTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Three Voices Tests - Three voices in single staff.\nimport { concat, VexFlowTests } from './vexflow_test_helpers';\nimport { Beam } from '../src/beam';\nconst ThreeVoicesTests = {\n Start() {\n // TODO: Rename the module to 'Three Voices', because we aren't really testing rests.\n QUnit.module('Three Voice Rests');\n const run = VexFlowTests.runTests;\n run('Three Voices - #1', threeVoices1);\n run('Three Voices - #2 Complex', threeVoices2);\n run('Three Voices - #3', threeVoices3);\n run('Auto Adjust Rest Positions - Two Voices', autoRestTwoVoices);\n run('Auto Adjust Rest Positions - Three Voices #1', autoRestThreeVoices1);\n run('Auto Adjust Rest Positions - Three Voices #2', autoRestThreeVoices2);\n },\n};\n/**\n * Helper for setting up the first three test cases: threeVoices1, threeVoices2, threeVoices3.\n */\nfunction createThreeVoicesTest(noteGroup1, noteGroup2, noteGroup3, setup) {\n return (options) => {\n const factory = VexFlowTests.makeFactory(options, 600, 200);\n const stave = factory.Stave().addClef('treble').addTimeSignature('4/4');\n const score = factory.EasyScore();\n // Convert each noteGroup array to StaveNote[].\n const noteGroups = [noteGroup1, noteGroup2, noteGroup3].map((args) => score.notes(...args));\n const voices = noteGroups.map((notes) => score.voice(notes));\n setup(factory, voices);\n const beams = [\n Beam.applyAndGetBeams(voices[0], +1),\n Beam.applyAndGetBeams(voices[1], -1),\n Beam.applyAndGetBeams(voices[2], -1),\n ].reduce(concat);\n // Set option to position rests near the notes in each voice.\n factory.Formatter().joinVoices(voices).formatToStave(voices, stave);\n factory.draw();\n for (let i = 0; i < beams.length; i++) {\n beams[i].setContext(factory.getContext()).draw();\n }\n ok(true);\n };\n}\n/**\n *\n */\nconst threeVoices1 = createThreeVoicesTest(['e5/2, e5', { stem: 'up' }], ['(d4 a4 d#5)/8, b4, (d4 a4 c5), b4, (d4 a4 c5), b4, (d4 a4 c5), b4', { stem: 'down' }], ['b3/4, e3, f3, a3', { stem: 'down' }], (f, voices) => {\n voices[0].getTickables()[0].addModifier(f.Fingering({ number: '0', position: 'left' }), 0);\n voices[1]\n .getTickables()[0]\n .addModifier(f.Fingering({ number: '0', position: 'left' }), 0)\n .addModifier(f.Fingering({ number: '4', position: 'left' }), 1);\n});\n/**\n * Lots of beamed notes. A beam and notehead overlap.\n */\nconst threeVoices2 = createThreeVoicesTest(['(a4 e5)/16, e5, e5, e5, e5/8, e5, e5/2', { stem: 'up' }], ['(d4 d#5)/16, (b4 c5), d5, e5, (d4 a4 c5)/8, b4, (d4 a4 c5), b4, (d4 a4 c5), b4', { stem: 'down' }], ['b3/8, b3, e3/4, f3, a3', { stem: 'down' }], (f, voices) => {\n voices[0]\n .getTickables()[0]\n .addModifier(f.Fingering({ number: '2', position: 'left' }), 0)\n .addModifier(f.Fingering({ number: '0', position: 'above' }), 1);\n voices[1]\n .getTickables()[0]\n .addModifier(f.Fingering({ number: '0', position: 'left' }), 0)\n .addModifier(f.Fingering({ number: '4', position: 'left' }), 1);\n});\n/**\n *\n */\nconst threeVoices3 = createThreeVoicesTest(['(g4 e5)/4, e5, (g4 e5)/2', { stem: 'up' }], ['c#5/4, b4/8, b4/8/r, a4/4., g4/8', { stem: 'down' }], ['c4/4, b3, a3, g3', { stem: 'down' }], (f, voices) => {\n voices[0]\n .getTickables()[0]\n .addModifier(f.Fingering({ number: '0', position: 'left' }), 0)\n .addModifier(f.Fingering({ number: '0', position: 'left' }), 1);\n voices[1].getTickables()[0].addModifier(f.Fingering({ number: '1', position: 'left' }), 0);\n voices[2].getTickables()[0].addModifier(f.Fingering({ number: '3', position: 'left' }), 0);\n});\nfunction autoRestTwoVoices(options) {\n const f = VexFlowTests.makeFactory(options, 900, 200);\n const score = f.EasyScore();\n let x = 10;\n let beams = [];\n function createMeasure(measureTitle, width, align_rests) {\n const stave = f.Stave({ x: x, y: 50, width: width }).setBegBarType(1);\n x += width;\n const noteArrays = [\n score.notes('b4/8/r, e5/16, b4/r, b4/8/r, e5/16, b4/r, b4/8/r, d5/16, b4/r, e5/4', { stem: 'up' }),\n score.notes('c5/16, c4, b4/r, d4, e4, f4, b4/r, g4, g4[stem=\"up\"], a4[stem=\"up\"], b4/r, b4[stem=\"up\"], e4/4', {\n stem: 'down',\n }),\n [f.TextNote({ text: measureTitle, line: -1, duration: '1', smooth: true })],\n ];\n const voices = noteArrays.map((notes) => score.voice(notes));\n beams = beams.concat(Beam.applyAndGetBeams(voices[0], 1)).concat(Beam.applyAndGetBeams(voices[1], -1));\n f.Formatter().joinVoices(voices).formatToStave(voices, stave, { align_rests });\n }\n createMeasure('Default Rest Positions', 400, false);\n createMeasure('Rests Repositioned To Avoid Collisions', 400, true);\n f.draw();\n for (let i = 0; i < beams.length; i++) {\n beams[i].setContext(f.getContext()).draw();\n }\n ok(true, 'Auto Adjust Rests - Two Voices');\n}\nfunction autoRestThreeVoices1(options) {\n const f = VexFlowTests.makeFactory(options, 850, 200);\n const score = f.EasyScore();\n let x = 10;\n function createMeasure(measureTitle, width, align_rests) {\n const stave = f.Stave({ x: x, y: 50, width: width }).setBegBarType(1);\n const voices = [\n score.voice(score.notes('b4/4/r, e5, e5/r, e5/r, e5, e5, e5, e5/r', { stem: 'up' }), { time: '8/4' }),\n score.voice(score.notes('b4/4/r, b4/r, b4/r, b4, b4/r, b4/r, b4, b4', { stem: 'down' }), { time: '8/4' }),\n score.voice(score.notes('e4/4/r, e4/r, f4, b4/r, g4, c4, e4/r, c4', { stem: 'down' }), { time: '8/4' }),\n score.voice([\n f.TextNote({ text: measureTitle, duration: '1', line: -1, smooth: true }),\n f.TextNote({ text: '', duration: '1', line: -1, smooth: true }),\n ], { time: '8/4' }),\n ];\n f.Formatter().joinVoices(voices).formatToStave(voices, stave, { align_rests });\n x += width;\n }\n createMeasure('Default Rest Positions', 400, false);\n createMeasure('Rests Repositioned To Avoid Collisions', 400, true);\n f.draw();\n ok(true);\n}\nfunction autoRestThreeVoices2(options) {\n const f = VexFlowTests.makeFactory(options, 850, 200);\n const score = f.EasyScore();\n let x = 10;\n function createMeasure(measureTitle, width, align_rests) {\n const stave = f.Stave({ x: x, y: 50, width: width }).setBegBarType(1);\n const voices = [\n score.voice(score.notes('b4/16/r, e5, e5/r, e5/r, e5, e5, e5, e5/r'), { time: '2/4' }),\n score.voice(score.notes('b4/16/r, b4/r, b4/r, b4, b4/r, b4/r, b4, b4'), { time: '2/4' }),\n score.voice(score.notes('e4/16/r, e4/r, f4, b4/r, g4, c4, e4/r, c4'), { time: '2/4' }),\n score.voice([f.TextNote({ text: measureTitle, duration: 'h', line: -1, smooth: true })], { time: '2/4' }),\n ];\n f.Formatter().joinVoices(voices).formatToStave(voices, stave, { align_rests });\n x += width;\n }\n createMeasure('Default Rest Positions', 400, false);\n createMeasure('Rests Repositioned To Avoid Collisions', 400, true);\n f.draw();\n ok(true);\n}\nVexFlowTests.register(ThreeVoicesTests);\nexport { ThreeVoicesTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// TickContext Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Flow } from '../src/flow';\nimport { TickContext } from '../src/tickcontext';\nimport { MockTickable } from './mocks';\nconst TickContextTests = {\n Start() {\n QUnit.module('TickContext');\n test('Current Tick Test', currentTick);\n test('Tracking Test', tracking);\n },\n};\nfunction currentTick() {\n const tc = new TickContext();\n equal(tc.getCurrentTick().value(), 0, 'New tick context has no ticks');\n}\nfunction tracking() {\n const BEAT = (1 * Flow.RESOLUTION) / 4;\n const tickables = [\n new MockTickable().setTicks(BEAT).setWidth(10),\n new MockTickable().setTicks(BEAT * 2).setWidth(20),\n new MockTickable().setTicks(BEAT).setWidth(30),\n ];\n const tc = new TickContext();\n tc.setPadding(0);\n tc.addTickable(tickables[0]);\n equal(tc.getMaxTicks().value(), BEAT);\n tc.addTickable(tickables[1]);\n equal(tc.getMaxTicks().value(), BEAT * 2);\n tc.addTickable(tickables[2]);\n equal(tc.getMaxTicks().value(), BEAT * 2);\n equal(tc.getWidth(), 0);\n tc.preFormat();\n equal(tc.getWidth(), 30);\n}\nVexFlowTests.register(TickContextTests);\nexport { TickContextTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// TimeSignature Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Stave } from '../src/stave';\nimport { StaveConnector } from '../src/staveconnector';\nimport { TimeSignature } from '../src/timesignature';\nconst TimeSignatureTests = {\n Start() {\n QUnit.module('TimeSignature');\n test('Time Signature Parser', parser);\n const run = VexFlowTests.runTests;\n run('Basic Time Signatures', basic);\n run('Big Signature Test', big);\n run('Additive Signature Test', additive);\n run('Alternating Signature Test', alternating);\n run('Interchangeable Signature Test', interchangeable);\n run('Aggregate Signature Test', agregate);\n run('Complex Signature Test', complex);\n run('Time Signature multiple staves alignment test', multiple);\n run('Time Signature Change Test', change);\n },\n};\nfunction parser() {\n const timeSig = new TimeSignature();\n const mustFail = ['asdf', '123/', '/10', '/', '4567', 'C+', '1+', '+1', '(3+', '+3)', '()', '(+)'];\n mustFail.forEach((invalidString) => {\n throws(() => timeSig.parseTimeSpec(invalidString), /BadTimeSignature/);\n });\n const mustPass = ['4/4', '10/12', '1/8', '1234567890/1234567890', 'C', 'C|', '+'];\n mustPass.forEach((validString) => timeSig.parseTimeSpec(validString));\n ok(true, 'all pass');\n}\nfunction basic(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 600, 120);\n new Stave(10, 10, 500)\n .addTimeSignature('2/2')\n .addTimeSignature('3/4')\n .addTimeSignature('4/4')\n .addTimeSignature('6/8')\n .addTimeSignature('C')\n .addTimeSignature('C|')\n .addEndTimeSignature('2/2')\n .addEndTimeSignature('3/4')\n .addEndTimeSignature('4/4')\n .addEndClef('treble')\n .addEndTimeSignature('6/8')\n .addEndTimeSignature('C')\n .addEndTimeSignature('C|')\n .setContext(ctx)\n .draw();\n ok(true, 'all pass');\n}\nfunction big(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 120);\n new Stave(10, 10, 300)\n .addTimeSignature('12/8')\n .addTimeSignature('7/16')\n .addTimeSignature('1234567/890')\n .addTimeSignature('987/654321')\n .setContext(ctx)\n .draw();\n ok(true, 'all pass');\n}\nfunction additive(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 120);\n new Stave(10, 10, 300).addTimeSignature('2+3+2/8').setContext(ctx).draw();\n ok(true, 'all pass');\n}\nfunction alternating(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 120);\n new Stave(10, 10, 300).addTimeSignature('6/8').addTimeSignature('+').addTimeSignature('3/4').setContext(ctx).draw();\n ok(true, 'all pass');\n}\nfunction interchangeable(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 120);\n new Stave(10, 10, 300).addTimeSignature('3/4').addTimeSignature('-').addTimeSignature('2/4').setContext(ctx).draw();\n ok(true, 'all pass');\n}\nfunction agregate(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 120);\n new Stave(10, 10, 300)\n .addTimeSignature('2/4')\n .addTimeSignature('+')\n .addTimeSignature('3/8')\n .addTimeSignature('+')\n .addTimeSignature('5/4')\n .setContext(ctx)\n .draw();\n ok(true, 'all pass');\n}\nfunction complex(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 120);\n new Stave(10, 10, 300)\n .addTimeSignature('(2+3)/16')\n .addTimeSignature('+')\n .addTimeSignature('3/8')\n .setContext(ctx)\n .draw();\n ok(true, 'all pass');\n}\nfunction multiple(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 400, 350);\n // Each StaveLineConfig object is of the form { visible: boolean }.\n const stave1LineConfig = [false, false, true, false, false].map((visible) => ({ visible }));\n const stave1 = new Stave(15, 0, 300)\n .setConfigForLines(stave1LineConfig)\n .addClef('percussion')\n .addTimeSignature('4/4', 25) // passing the custom padding in pixels\n .setContext(ctx)\n .draw();\n const stave2 = new Stave(15, 110, 300).addClef('treble').addTimeSignature('4/4').setContext(ctx).draw();\n const stave3 = new Stave(15, 220, 300).addClef('bass').addTimeSignature('4/4').setContext(ctx).draw();\n new StaveConnector(stave1, stave2).setType('single').setContext(ctx).draw();\n new StaveConnector(stave2, stave3).setType('single').setContext(ctx).draw();\n new StaveConnector(stave2, stave3).setType('brace').setContext(ctx).draw();\n ok(true, 'all pass');\n}\nfunction change(options) {\n const f = VexFlowTests.makeFactory(options, 900);\n const stave = f.Stave({ x: 0, y: 0 }).addClef('treble').addTimeSignature('C|');\n const tickables = [\n f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble' }),\n f.TimeSigNote({ time: '3/4' }),\n f.StaveNote({ keys: ['d/4'], duration: '4', clef: 'alto' }),\n f.StaveNote({ keys: ['b/3'], duration: '4r', clef: 'alto' }),\n f.TimeSigNote({ time: 'C' }),\n f.StaveNote({ keys: ['c/3', 'e/3', 'g/3'], duration: '4', clef: 'bass' }),\n f.TimeSigNote({ time: '9/8' }),\n f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble' }),\n ];\n const voice = f.Voice().setStrict(false).addTickables(tickables);\n f.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'all pass');\n}\nVexFlowTests.register(TimeSignatureTests);\nexport { TimeSignatureTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Tremolo Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Barline } from '../src/stavebarline';\nimport { Tremolo } from '../src/tremolo';\nconst TremoloTests = {\n Start() {\n QUnit.module('Tremolo');\n const run = VexFlowTests.runTests;\n run('Tremolo - Basic', tremoloBasic);\n run('Tremolo - Big', tremoloBig);\n },\n};\nfunction tremoloBasic(options) {\n const f = VexFlowTests.makeFactory(options, 600, 200);\n const score = f.EasyScore();\n // bar 1\n const stave1 = f.Stave({ width: 250 }).setEndBarType(Barline.type.DOUBLE);\n const notes1 = score.notes('e4/4, e4, e4, e4', { stem: 'up' });\n notes1[0].addModifier(new Tremolo(3), 0);\n notes1[1].addModifier(new Tremolo(2), 0);\n notes1[2].addModifier(new Tremolo(1), 0);\n const voice1 = score.voice(notes1);\n f.Formatter().joinVoices([voice1]).formatToStave([voice1], stave1);\n // bar 2\n const stave2 = f\n .Stave({ x: stave1.getWidth() + stave1.getX(), y: stave1.getY(), width: 300 })\n .setEndBarType(Barline.type.DOUBLE);\n const notes2 = score.notes('e5/4, e5, e5, e5', { stem: 'down' });\n notes2[1].addModifier(new Tremolo(1), 0);\n notes2[2].addModifier(new Tremolo(2), 0);\n notes2[3].addModifier(new Tremolo(3), 0);\n const voice2 = score.voice(notes2);\n f.Formatter().joinVoices([voice2]).formatToStave([voice2], stave2);\n f.draw();\n ok(true, 'Tremolo - Basic');\n}\nfunction tremoloBig(options) {\n const f = VexFlowTests.makeFactory(options, 600, 200);\n const score = f.EasyScore();\n // bar 1\n const stave1 = f.Stave({ width: 250 }).setEndBarType(Barline.type.DOUBLE);\n const notes1 = score.notes('e4/4, e4, e4, e4', { stem: 'up' });\n const tremolo1 = new Tremolo(3);\n tremolo1.extra_stroke_scale = 1.7;\n tremolo1.y_spacing_scale = 1.5;\n const tremolo2 = new Tremolo(2);\n tremolo2.extra_stroke_scale = 1.7;\n tremolo2.y_spacing_scale = 1.5;\n const tremolo3 = new Tremolo(1);\n tremolo3.extra_stroke_scale = 1.7;\n tremolo3.y_spacing_scale = 1.5;\n notes1[0].addModifier(tremolo1, 0);\n notes1[1].addModifier(tremolo2, 0);\n notes1[2].addModifier(tremolo3, 0);\n const voice1 = score.voice(notes1);\n f.Formatter().joinVoices([voice1]).formatToStave([voice1], stave1);\n // bar 2\n const stave2 = f\n .Stave({ x: stave1.getWidth() + stave1.getX(), y: stave1.getY(), width: 300 })\n .setEndBarType(Barline.type.DOUBLE);\n const notes2 = score.notes('e5/4, e5, e5, e5', { stem: 'down' });\n const tremolo4 = new Tremolo(1);\n tremolo4.extra_stroke_scale = 1.7;\n tremolo4.y_spacing_scale = 1.5;\n const tremolo5 = new Tremolo(2);\n tremolo5.extra_stroke_scale = 1.7;\n tremolo5.y_spacing_scale = 1.5;\n const tremolo6 = new Tremolo(3);\n tremolo6.extra_stroke_scale = 1.7;\n tremolo6.y_spacing_scale = 1.5;\n notes2[1].addModifier(tremolo4, 0);\n notes2[2].addModifier(tremolo5, 0);\n notes2[3].addModifier(tremolo6, 0);\n const voice2 = score.voice(notes2);\n f.Formatter().joinVoices([voice2]).formatToStave([voice2], stave2);\n f.draw();\n ok(true, 'Tremolo - Big');\n}\nVexFlowTests.register(TremoloTests);\nexport { TremoloTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Tuning Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Tuning } from '../src/tuning';\nconst TuningTests = {\n Start() {\n QUnit.module('Tuning');\n test('Standard Tuning', standard);\n test('Standard Banjo Tuning', banjo);\n test('Return note for fret', noteForFret);\n },\n};\n/**\n * Helper function to verify that the provided tuning matches a standard 6-string guitar.\n */\nfunction checkStandard(tuning) {\n throws(() => tuning.getValueForString(0), /BadArguments/, 'String 0');\n throws(() => tuning.getValueForString(9), /BadArguments/, 'String 9');\n // TODO: Tuning constructor has a bug in that the default tuning has 8 strings.\n // See: 'E/5,B/4,G/4,D/4,A/3,E/3,B/2,E/2' in tuning.ts constructor.\n // throws(() => tuning.getValueForString(7), /BadArguments/, 'String 7');\n // Tuning.getValueForString() returns a note number where the value 60 corresponds to middle C.\n equal(tuning.getValueForString(6), 40, 'Low E string');\n equal(tuning.getValueForString(5), 45, 'A string');\n equal(tuning.getValueForString(4), 50, 'D string');\n equal(tuning.getValueForString(3), 55, 'G string');\n equal(tuning.getValueForString(2), 59, 'B string');\n equal(tuning.getValueForString(1), 64, 'High E string');\n}\n/**\n * Helper function to verify that the provided tuning matches a standard 5-string banjo.\n */\nfunction checkStandardBanjo(tuning) {\n throws(() => tuning.getValueForString(0), /BadArguments/, 'String 0');\n throws(() => tuning.getValueForString(6), /BadArguments/, 'String 6');\n equal(tuning.getValueForString(5), 67, 'High G string');\n equal(tuning.getValueForString(4), 50, 'D string');\n equal(tuning.getValueForString(3), 55, 'G string');\n equal(tuning.getValueForString(2), 59, 'B string');\n equal(tuning.getValueForString(1), 62, 'High D string');\n}\nfunction standard() {\n expect(16);\n const tuning = new Tuning();\n checkStandard(tuning);\n // Set the tuning by specifying a name: 'standard'.\n tuning.setTuning('standard');\n checkStandard(tuning);\n}\nfunction banjo() {\n expect(7);\n const tuning = new Tuning();\n tuning.setTuning('standardBanjo');\n checkStandardBanjo(tuning);\n}\nfunction noteForFret() {\n expect(8);\n const tuning = new Tuning('E/5,B/4,G/4,D/4,A/3,E/3');\n throws(() => tuning.getNoteForFret(-1, 1), /BadArguments/, 'Fret = -1');\n throws(() => tuning.getNoteForFret(1, -1), /BadArguments/, 'String = -1');\n equal(tuning.getNoteForFret(0, 1), 'E/5', 'High E string');\n equal(tuning.getNoteForFret(5, 1), 'A/5', 'High E string, fret 5');\n equal(tuning.getNoteForFret(0, 2), 'B/4', 'B string');\n equal(tuning.getNoteForFret(0, 3), 'G/4', 'G string');\n equal(tuning.getNoteForFret(12, 2), 'B/5', 'B string, fret 12');\n equal(tuning.getNoteForFret(0, 6), 'E/3', 'Low E string');\n}\nVexFlowTests.register(TuningTests);\nexport { TuningTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Tuplet Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Dot } from '../src/dot';\nimport { Formatter } from '../src/formatter';\nimport { Stem } from '../src/stem';\nimport { Tuplet } from '../src/tuplet';\nconst TupletTests = {\n Start() {\n QUnit.module('Tuplet');\n const run = VexFlowTests.runTests;\n run('Simple Tuplet', simple);\n run('Beamed Tuplet', beamed);\n run('Ratioed Tuplet', ratio);\n run('Bottom Tuplet', bottom);\n run('Bottom Ratioed Tuplet', bottomRatio);\n run('Awkward Tuplet', awkward);\n run('Complex Tuplet', complex);\n run('Mixed Stem Direction Tuplet', mixedTop);\n run('Mixed Stem Direction Bottom Tuplet', mixedBottom);\n run('Nested Tuplets', nested);\n run('Single Tuplets', single);\n },\n};\n// Helper Functions to set the stem direction and duration of the options objects (i.e., StaveNoteStruct)\n// that are ultimately passed into Factory.StaveNote().\n// eslint-disable-next-line\nconst set = (key) => (value) => (object) => {\n object[key] = value;\n return object;\n};\nconst setStemDirection = set('stem_direction');\nconst setStemUp = setStemDirection(Stem.UP);\nconst setStemDown = setStemDirection(Stem.DOWN);\nconst setDurationToQuarterNote = set('duration')('4');\n/**\n * Simple test case with one ascending triplet and one descending triplet.\n */\nfunction simple(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave({ x: 10, y: 10, width: 350 }).addTimeSignature('3/4');\n const notes = [\n { keys: ['g/4'], duration: '4' },\n { keys: ['a/4'], duration: '4' },\n { keys: ['b/4'], duration: '4' },\n { keys: ['b/4'], duration: '8' },\n { keys: ['a/4'], duration: '8' },\n { keys: ['g/4'], duration: '8' },\n ]\n .map(setStemUp)\n .map(f.StaveNote.bind(f));\n f.Tuplet({ notes: notes.slice(0, 3) });\n f.Tuplet({ notes: notes.slice(3, 6) });\n // 3/4 time\n const voice = f\n .Voice({ time: { num_beats: 3, beat_value: 4 } })\n .setStrict(true)\n .addTickables(notes);\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'Simple Test');\n}\nfunction beamed(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave({ x: 10, y: 10, width: 350 }).addTimeSignature('3/8');\n const notes = [\n { keys: ['b/4'], duration: '16' },\n { keys: ['a/4'], duration: '16' },\n { keys: ['g/4'], duration: '16' },\n { keys: ['a/4'], duration: '8' },\n { keys: ['f/4'], duration: '8' },\n { keys: ['a/4'], duration: '8' },\n { keys: ['f/4'], duration: '8' },\n { keys: ['a/4'], duration: '8' },\n { keys: ['f/4'], duration: '8' },\n { keys: ['g/4'], duration: '8' },\n ]\n .map(setStemUp)\n .map(f.StaveNote.bind(f));\n f.Beam({ notes: notes.slice(0, 3) });\n f.Beam({ notes: notes.slice(3, 10) });\n f.Tuplet({ notes: notes.slice(0, 3) });\n f.Tuplet({ notes: notes.slice(3, 10) });\n // 3/8 time\n const voice = f\n .Voice({ time: { num_beats: 3, beat_value: 8 } })\n .setStrict(true)\n .addTickables(notes);\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'Beamed Test');\n}\nfunction ratio(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave({ x: 10, y: 10, width: 350 }).addTimeSignature('4/4');\n const notes = [\n { keys: ['f/4'], duration: '4' },\n { keys: ['a/4'], duration: '4' },\n { keys: ['b/4'], duration: '4' },\n { keys: ['g/4'], duration: '8' },\n { keys: ['e/4'], duration: '8' },\n { keys: ['g/4'], duration: '8' },\n ]\n .map(setStemUp)\n .map(f.StaveNote.bind(f));\n f.Beam({\n notes: notes.slice(3, 6),\n });\n f.Tuplet({\n notes: notes.slice(0, 3),\n options: {\n ratioed: true,\n },\n });\n f.Tuplet({\n notes: notes.slice(3, 6),\n options: {\n ratioed: true,\n notes_occupied: 4,\n },\n });\n const voice = f.Voice().setStrict(true).addTickables(notes);\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'Ratioed Test');\n}\nfunction bottom(options) {\n const f = VexFlowTests.makeFactory(options, 350, 160);\n const stave = f.Stave({ x: 10, y: 10 }).addTimeSignature('3/4');\n const notes = [\n { keys: ['f/4'], duration: '4' },\n { keys: ['c/4'], duration: '4' },\n { keys: ['g/4'], duration: '4' },\n { keys: ['d/5'], duration: '8' },\n { keys: ['g/3'], duration: '8' },\n { keys: ['b/4'], duration: '8' },\n ]\n .map(setStemDown)\n .map(f.StaveNote.bind(f));\n f.Beam({\n notes: notes.slice(3, 6),\n });\n f.Tuplet({\n notes: notes.slice(0, 3),\n options: { location: Tuplet.LOCATION_BOTTOM },\n });\n f.Tuplet({\n notes: notes.slice(3, 6),\n options: { location: Tuplet.LOCATION_BOTTOM },\n });\n const voice = f\n .Voice({ time: { num_beats: 3, beat_value: 4 } })\n .setStrict(true)\n .addTickables(notes);\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'Bottom Test');\n}\nfunction bottomRatio(options) {\n const f = VexFlowTests.makeFactory(options, 350, 160);\n const stave = f.Stave({ x: 10, y: 10 }).addTimeSignature('5/8');\n const notes = [\n { keys: ['f/4'], duration: '4' },\n { keys: ['c/4'], duration: '4' },\n { keys: ['d/4'], duration: '4' },\n { keys: ['d/5'], duration: '8' },\n { keys: ['g/5'], duration: '8' },\n { keys: ['b/4'], duration: '8' },\n ]\n .map(setStemDown)\n .map(f.StaveNote.bind(f));\n f.Beam({\n notes: notes.slice(3, 6),\n });\n f.Tuplet({\n notes: notes.slice(0, 3),\n options: {\n location: Tuplet.LOCATION_BOTTOM,\n ratioed: true,\n },\n });\n f.Tuplet({\n notes: notes.slice(3, 6),\n options: {\n location: Tuplet.LOCATION_BOTTOM,\n notes_occupied: 1,\n },\n });\n const voice = f\n .Voice({ time: { num_beats: 5, beat_value: 8 } })\n .setStrict(true)\n .addTickables(notes);\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'Bottom Ratioed Test');\n}\nfunction awkward(options) {\n const f = VexFlowTests.makeFactory(options, 370, 160);\n const stave = f.Stave({ x: 10, y: 10 });\n const notes = [\n { keys: ['g/4'], duration: '16' },\n { keys: ['b/4'], duration: '16' },\n { keys: ['a/4'], duration: '16' },\n { keys: ['a/4'], duration: '16' },\n { keys: ['g/4'], duration: '16' },\n { keys: ['f/4'], duration: '16' },\n { keys: ['e/4'], duration: '16' },\n { keys: ['c/4'], duration: '16' },\n { keys: ['g/4'], duration: '16' },\n { keys: ['a/4'], duration: '16' },\n { keys: ['f/4'], duration: '16' },\n { keys: ['e/4'], duration: '16' },\n { keys: ['c/4'], duration: '8' },\n { keys: ['d/4'], duration: '8' },\n { keys: ['e/4'], duration: '8' },\n ]\n .map(setStemUp)\n .map(f.StaveNote.bind(f));\n f.Beam({ notes: notes.slice(0, 12) });\n f.Tuplet({\n notes: notes.slice(0, 12),\n options: {\n notes_occupied: 142,\n ratioed: true,\n },\n });\n f.Tuplet({\n notes: notes.slice(12, 15),\n options: {\n ratioed: true,\n },\n }).setBracketed(true);\n const voice = f.Voice().setStrict(false).addTickables(notes);\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'Awkward Test');\n}\nfunction complex(options) {\n const f = VexFlowTests.makeFactory(options, 600);\n const stave = f.Stave({ x: 10, y: 10 }).addTimeSignature('4/4');\n const notes1 = [\n { keys: ['b/4'], duration: '8d' },\n { keys: ['a/4'], duration: '16' },\n { keys: ['g/4'], duration: '8' },\n { keys: ['a/4'], duration: '16' },\n { keys: ['b/4'], duration: '16r' },\n { keys: ['g/4'], duration: '32' },\n { keys: ['f/4'], duration: '32' },\n { keys: ['g/4'], duration: '32' },\n { keys: ['f/4'], duration: '32' },\n { keys: ['a/4'], duration: '16' },\n { keys: ['f/4'], duration: '8' },\n { keys: ['b/4'], duration: '8' },\n { keys: ['a/4'], duration: '8' },\n { keys: ['g/4'], duration: '8' },\n { keys: ['b/4'], duration: '8' },\n { keys: ['a/4'], duration: '8' },\n ]\n .map(setStemUp)\n .map(f.StaveNote.bind(f));\n Dot.buildAndAttach([notes1[0]], { all: true });\n const notes2 = [{ keys: ['c/4'] }, { keys: ['c/4'] }, { keys: ['c/4'] }, { keys: ['c/4'] }]\n .map(setDurationToQuarterNote)\n .map(setStemDown)\n .map(f.StaveNote.bind(f));\n f.Beam({ notes: notes1.slice(0, 3) });\n f.Beam({ notes: notes1.slice(5, 9) });\n f.Beam({ notes: notes1.slice(11, 16) });\n f.Tuplet({\n notes: notes1.slice(0, 3),\n });\n f.Tuplet({\n notes: notes1.slice(3, 11),\n options: {\n num_notes: 7,\n notes_occupied: 4,\n ratioed: false,\n },\n });\n f.Tuplet({\n notes: notes1.slice(11, 16),\n options: {\n notes_occupied: 4,\n },\n });\n const voice1 = f.Voice().setStrict(true).addTickables(notes1);\n const voice2 = f.Voice().setStrict(true).addTickables(notes2);\n new Formatter().joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave);\n f.draw();\n ok(true, 'Complex Test');\n}\nfunction mixedTop(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave({ x: 10, y: 10 });\n const notes = [\n { keys: ['a/4'], stem_direction: 1 },\n { keys: ['c/6'], stem_direction: -1 },\n { keys: ['a/4'], stem_direction: 1 },\n { keys: ['f/5'], stem_direction: 1 },\n { keys: ['a/4'], stem_direction: -1 },\n { keys: ['c/6'], stem_direction: -1 },\n ]\n .map(setDurationToQuarterNote)\n .map(f.StaveNote.bind(f));\n f.Tuplet({\n notes: notes.slice(0, 2),\n options: {\n notes_occupied: 3,\n },\n });\n f.Tuplet({\n notes: notes.slice(2, 4),\n options: {\n notes_occupied: 3,\n },\n });\n f.Tuplet({\n notes: notes.slice(4, 6),\n options: {\n notes_occupied: 3,\n },\n });\n const voice = f.Voice().setStrict(false).addTickables(notes);\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'Mixed Stem Direction Tuplet');\n}\nfunction mixedBottom(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave({ x: 10, y: 10 });\n const notes = [\n { keys: ['f/3'], stem_direction: 1 },\n { keys: ['a/5'], stem_direction: -1 },\n { keys: ['a/4'], stem_direction: 1 },\n { keys: ['f/3'], stem_direction: 1 },\n { keys: ['a/4'], stem_direction: -1 },\n { keys: ['c/4'], stem_direction: -1 },\n ]\n .map(setDurationToQuarterNote)\n .map(f.StaveNote.bind(f));\n f.Tuplet({\n notes: notes.slice(0, 2),\n options: {\n notes_occupied: 3,\n },\n });\n f.Tuplet({\n notes: notes.slice(2, 4),\n options: {\n notes_occupied: 3,\n },\n });\n f.Tuplet({\n notes: notes.slice(4, 6),\n options: {\n notes_occupied: 3,\n },\n });\n const voice = f.Voice().setStrict(false).addTickables(notes);\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'Mixed Stem Direction Bottom Tuplet');\n}\nfunction nested(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave({ x: 10, y: 10 }).addTimeSignature('4/4');\n const notes = [\n // Big triplet 1:\n { keys: ['b/4'], duration: '4' },\n { keys: ['a/4'], duration: '4' },\n { keys: ['g/4'], duration: '16' },\n { keys: ['a/4'], duration: '16' },\n { keys: ['f/4'], duration: '16' },\n { keys: ['a/4'], duration: '16' },\n { keys: ['g/4'], duration: '16' },\n { keys: ['b/4'], duration: '2' },\n ]\n .map(setStemUp)\n .map(f.StaveNote.bind(f));\n f.Beam({\n notes: notes.slice(2, 7),\n });\n f.Tuplet({\n notes: notes.slice(0, 7),\n options: {\n notes_occupied: 2,\n num_notes: 3,\n },\n });\n f.Tuplet({\n notes: notes.slice(2, 7),\n options: {\n notes_occupied: 4,\n num_notes: 5,\n },\n });\n // 4/4 time\n const voice = f.Voice().setStrict(true).addTickables(notes);\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'Nested Tuplets');\n}\nfunction single(options) {\n const f = VexFlowTests.makeFactory(options);\n const stave = f.Stave({ x: 10, y: 10 }).addTimeSignature('4/4');\n const notes = [\n // Big triplet 1:\n { keys: ['c/4'], duration: '4' },\n { keys: ['d/4'], duration: '8' },\n { keys: ['e/4'], duration: '8' },\n { keys: ['f/4'], duration: '8' },\n { keys: ['g/4'], duration: '8' },\n { keys: ['a/4'], duration: '2' },\n { keys: ['b/4'], duration: '4' },\n ]\n .map(setStemUp)\n .map(f.StaveNote.bind(f));\n f.Beam({\n notes: notes.slice(1, 4),\n });\n // big quartuplet\n f.Tuplet({\n notes: notes.slice(0, -1),\n options: {\n num_notes: 4,\n notes_occupied: 3,\n ratioed: true,\n bracketed: true,\n },\n });\n // first singleton\n f.Tuplet({\n notes: notes.slice(0, 1),\n options: {\n num_notes: 3,\n notes_occupied: 2,\n ratioed: true,\n },\n });\n // eighth note triplet\n f.Tuplet({\n notes: notes.slice(1, 4),\n options: {\n num_notes: 3,\n notes_occupied: 2,\n },\n });\n // second singleton\n f.Tuplet({\n notes: notes.slice(4, 5),\n options: {\n num_notes: 3,\n notes_occupied: 2,\n ratioed: true,\n bracketed: true,\n },\n });\n // 4/4 time\n const voice = f\n .Voice({ time: { num_beats: 4, beat_value: 4 } })\n .setStrict(true)\n .addTickables(notes);\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n f.draw();\n ok(true, 'Nested Tuplets');\n}\nVexFlowTests.register(TupletTests);\nexport { TupletTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Ron B. Yeh\n// MIT License\n//\n// TypeGuard Tests\n// eslint-disable-next-line\n// @ts-nocheck to support ES5 style class declaration in the fakeES5() test case.\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { CanvasContext } from '../src/canvascontext';\nimport { StaveNote } from '../src/stavenote';\nimport { StemmableNote } from '../src/stemmablenote';\nimport { TabNote } from '../src/tabnote';\nimport { isCategory, isNote, isRenderContext, isStaveNote, isStemmableNote, isTabNote } from '../src/typeguard';\nconst TypeGuardTests = {\n Start() {\n QUnit.module('TypeGuard');\n test('Real VexFlow Types', real);\n test('Fake VexFlow Types in ES5', fakeES5);\n test('Fake VexFlow Types in ES6', fakeES6);\n test('Edge Case ES5/ES6', edgeCaseES5vsES6);\n },\n};\nfunction real() {\n const s = new StaveNote({ keys: ['c/4'], duration: 'w' });\n ok(isStaveNote(s), 'isStaveNote helper function');\n ok(isCategory(s, 'StaveNote'), 'Use isCategory(s, \"StaveNote\") directly');\n notOk(isTabNote(s), 'isTabNote helper function. s is NOT a TabNote.');\n const t = new TabNote({ positions: [{ str: 2, fret: 1 }], duration: '1' });\n ok(isTabNote(t), 'isTabNote helper function');\n notOk(isStaveNote(t), 't is NOT a StaveNote');\n ok(isNote(s), 'StaveNote extends StemmableNote which extends Note, so s is a Note');\n ok(isStemmableNote(t), 'TabNote extends StemmableNote');\n ok(isNote(t), 'TabNote extends StemmableNote which extends Note, so t is a Note');\n const canvas = document.createElement('canvas');\n canvas.width = 800;\n canvas.height = 400;\n const ctx = new CanvasContext(canvas.getContext('2d'));\n ok(isRenderContext(ctx), 'ctx is a RenderContext');\n}\n/**\n * Helper function to test the fake VexFlow objects we create in fakeES5() and fakeES6().\n */\nfunction checkFakeObjects(fakeStemmableNote, fakeStaveNote) {\n ok(isStemmableNote(fakeStemmableNote), 'Fake StemmableNote is a StemmableNote.');\n notOk(isNote(fakeStemmableNote), 'Fake StemmableNote is not a Note (no ancestors with the correct CATEGORY).');\n ok(isCategory(fakeStaveNote, 'StaveNote'), 'Fake StaveNote is a StaveNote.');\n ok(isStaveNote(fakeStaveNote), 'Fake StaveNote is a StaveNote (via helper function).');\n ok(isCategory(fakeStaveNote, 'StemmableNote'), 'Fake StaveNote is also a StemmableNote (via inheritance).');\n notOk(isNote(fakeStaveNote), 'Fake StaveNote is not a Note. CATEGORY does not match.');\n}\n/**\n * Demonstrate that an object (ES5-style) can pass the isCategory(...) test if it\n * has the correct static .CATEGORY property.\n */\nfunction fakeES5() {\n function FakeStemmableNote() {\n this.isFake = true;\n }\n FakeStemmableNote.CATEGORY = StemmableNote.CATEGORY;\n function FakeStaveNote() {\n FakeStemmableNote.call(this);\n }\n FakeStaveNote.CATEGORY = StaveNote.CATEGORY;\n FakeStaveNote.prototype = Object.create(FakeStemmableNote.prototype);\n FakeStaveNote.prototype.constructor = FakeStaveNote;\n const fakeStemmableNote = new FakeStemmableNote();\n const fakeStaveNote = new FakeStaveNote();\n checkFakeObjects(fakeStemmableNote, fakeStaveNote);\n}\n/**\n * Demonstrate that an object (ES6-style) can pass the isCategory(...) test if it\n * or its ancestor has the correct static .CATEGORY property.\n */\nfunction fakeES6() {\n class FakeStemmableNote {\n }\n FakeStemmableNote.CATEGORY = StemmableNote.CATEGORY;\n class FakeStaveNote extends FakeStemmableNote {\n }\n FakeStaveNote.CATEGORY = StaveNote.CATEGORY;\n const fakeStemmableNote = new FakeStemmableNote();\n const fakeStaveNote = new FakeStaveNote();\n checkFakeObjects(fakeStemmableNote, fakeStaveNote);\n}\n/**\n * The tsconfig.json target is ES6 (as of August 18, 2021), so isCategory() works even when the root class \"extends Object\".\n */\nfunction edgeCaseES5vsES6() {\n class Z extends Object {\n }\n class Y extends Z {\n }\n class X extends Y {\n }\n const zInstance = new Z();\n const xInstance = new X();\n ok(xInstance instanceof Object, 'es5 & es6: x IS an instanceof Object');\n // If targeting es5, these three assertions only pass if we remove \"extends Object\" from the class Z definition.\n ok(zInstance instanceof Z, 'es6: z IS an instanceof Z');\n ok(xInstance instanceof Y, 'es6: x IS an instanceof Y');\n ok(xInstance instanceof Z, 'es6: x IS an instanceof Z');\n}\nVexFlowTests.register(TypeGuardTests);\nexport { TypeGuardTests };\n","// [VexFlow](https://vexflow.com/) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// VexFlow Test Support Library\nimport { Factory, Flow, Font, Renderer } from '../src/index';\nimport { globalObject } from '../src/util';\nconst global = globalObject();\n// Each test case will switch through the available fonts, and then restore the original font when done.\nlet originalFontNames;\nfunction useTempFontStack(fontName) {\n originalFontNames = Flow.getMusicFont();\n Flow.setMusicFont(...VexFlowTests.FONT_STACKS[fontName]);\n}\nfunction restoreOriginalFontStack() {\n Flow.setMusicFont(...originalFontNames);\n}\n// A micro util inspired by jQuery.\nif (!global.$) {\n // generate_png_images.js uses jsdom and does not include jQuery.\n global.$ = (param) => {\n let element;\n if (typeof param !== 'string') {\n element = param;\n }\n else if (param.startsWith('<')) {\n // Extract the tag name: e.g.,
=> div\n // Assume param.match returns something (! operator).\n // eslint-disable-next-line\n const tagName = param.match(/[A-Za-z]+/g)[0];\n element = document.createElement(tagName);\n }\n else {\n element = document.querySelector(param);\n }\n const $element = {\n // eslint-disable-next-line\n get(index) {\n return element;\n },\n addClass(c) {\n element.classList.add(c);\n return $element;\n },\n text(t) {\n element.textContent = t;\n return $element;\n },\n html(h) {\n if (!h) {\n return element.innerHTML;\n }\n else {\n element.innerHTML = h;\n return $element;\n }\n },\n append(...elementsToAppend) {\n elementsToAppend.forEach((e) => {\n element.appendChild(e);\n });\n return $element;\n },\n attr(attrName, val) {\n element.setAttribute(attrName, val);\n return $element;\n },\n };\n return $element;\n };\n}\n/** Allow `name` to be used inside file names. */\nfunction sanitizeName(name) {\n return name.replace(/[^a-zA-Z0-9]/g, '_');\n}\nconst CANVAS_TEST_CONFIG = {\n backend: Renderer.Backends.CANVAS,\n tagName: 'canvas',\n testType: 'Canvas',\n fontStacks: ['Bravura'],\n};\nconst SVG_TEST_CONFIG = {\n backend: Renderer.Backends.SVG,\n tagName: 'div',\n testType: 'SVG',\n fontStacks: ['Bravura', 'Gonville', 'Petaluma', 'Leland'],\n};\nconst NODE_TEST_CONFIG = {\n backend: Renderer.Backends.CANVAS,\n tagName: 'canvas',\n testType: 'NodeCanvas',\n fontStacks: ['Bravura', 'Gonville', 'Petaluma', 'Leland'],\n};\nexport class VexFlowTests {\n // Call this at the end of a `tests/xxxx_tests.ts` file to register the module.\n static register(test) {\n VexFlowTests.tests.push(test);\n }\n static parseJobOptions(runOptions) {\n let { jobs, job } = runOptions || { jobs: 1, job: 0 };\n if (window) {\n const { location } = window;\n if (location) {\n const sps = new URLSearchParams(location.search);\n const jobsParam = sps.get('jobs');\n const jobParam = sps.get('job');\n if (jobsParam) {\n jobs = parseInt(jobsParam, 10);\n }\n if (jobParam) {\n job = parseInt(jobParam, 10);\n }\n }\n }\n return {\n jobs,\n job,\n };\n }\n // flow.html calls this to invoke all the tests.\n static run(runOptions) {\n const { jobs, job } = VexFlowTests.parseJobOptions(runOptions);\n VexFlowTests.tests.forEach((test, idx) => {\n if (jobs === 1 || idx % jobs === job) {\n test.Start();\n }\n });\n }\n static set NODE_FONT_STACKS(fontStacks) {\n NODE_TEST_CONFIG.fontStacks = fontStacks;\n }\n /** Return a unique ID for a test. */\n static generateTestID(prefix) {\n return prefix + '_' + VexFlowTests.NEXT_TEST_ID++;\n }\n /**\n * Run `func` inside a QUnit test for each of the enabled rendering backends.\n * @param name\n * @param testFunc\n * @param params\n */\n // eslint-disable-next-line\n static runTests(name, testFunc, params) {\n VexFlowTests.runCanvasTest(name, testFunc, params);\n VexFlowTests.runSVGTest(name, testFunc, params);\n VexFlowTests.runNodeTest(name, testFunc, params);\n }\n /**\n * Append a
which contains the test case title and rendered output.\n * See flow.html and flow.css.\n * @param elementId\n * @param testTitle\n * @param tagName\n */\n static createTest(elementId, testTitle, tagName, titleId = '') {\n const anchorTestTitle = `${testTitle}`;\n const title = $('
').addClass('name').attr('id', titleId).html(anchorTestTitle).get(0);\n const vexOutput = $(`<${tagName}/>`).addClass('vex-tabdiv').attr('id', elementId).get(0);\n const container = $('
').addClass('testcanvas').append(title, vexOutput).get(0);\n $('#vexflow_testoutput').append(container);\n return vexOutput;\n }\n static makeFactory(options, width = 450, height = 140) {\n const { elementId, backend } = options;\n return new Factory({ renderer: { elementId, backend, width, height } });\n }\n // eslint-disable-next-line\n static runCanvasTest(name, testFunc, params) {\n if (VexFlowTests.RUN_CANVAS_TESTS) {\n const helper = null;\n VexFlowTests.runWithParams(Object.assign(Object.assign({}, CANVAS_TEST_CONFIG), { name, testFunc, params, helper }));\n }\n }\n // eslint-disable-next-line\n static runSVGTest(name, testFunc, params) {\n if (VexFlowTests.RUN_SVG_TESTS) {\n const helper = null;\n VexFlowTests.runWithParams(Object.assign(Object.assign({}, SVG_TEST_CONFIG), { name, testFunc, params, helper }));\n }\n }\n // eslint-disable-next-line\n static runNodeTest(name, testFunc, params) {\n if (VexFlowTests.RUN_NODE_TESTS) {\n const helper = VexFlowTests.runNodeTestHelper;\n VexFlowTests.runWithParams(Object.assign(Object.assign({}, NODE_TEST_CONFIG), { name, testFunc, params, helper }));\n }\n }\n /**\n * Save the PNG file.\n * @param fontName\n * @param element\n */\n static runNodeTestHelper(fontName, element) {\n if (Renderer.lastContext !== undefined) {\n const moduleName = sanitizeName(QUnit.current_module);\n const testName = sanitizeName(QUnit.current_test);\n // If we are only testing Bravura, we OMIT the font name from the\n // output image file name, which allows visual diffs against\n // the previous release: version 3.0.9. In the future, if we decide\n // to test all fonts by default, we can remove this check.\n const onlyBravura = NODE_TEST_CONFIG.fontStacks.length === 1 && fontName === 'Bravura';\n const fontInfo = onlyBravura ? '' : `.${fontName}`;\n const fileName = `${VexFlowTests.NODE_IMAGEDIR}/${moduleName}.${testName}${fontInfo}.png`;\n const imageData = element.toDataURL().split(';base64,').pop();\n const imageBuffer = Buffer.from(imageData, 'base64');\n VexFlowTests.shims.fs.writeFileSync(fileName, imageBuffer, { encoding: 'base64' });\n }\n }\n /** Run QUnit.test(...) for each font. */\n // eslint-disable-next-line\n static runWithParams({ fontStacks, testFunc, name, params, backend, tagName, testType, helper }) {\n if (name === undefined) {\n throw new Error('Test name is undefined.');\n }\n const testTypeLowerCase = testType.toLowerCase();\n fontStacks.forEach((fontStackName) => {\n QUnit.test(name, (assert) => {\n useTempFontStack(fontStackName);\n const elementId = VexFlowTests.generateTestID(`${testTypeLowerCase}_` + fontStackName);\n const moduleName = assert.test.module.name;\n const title = moduleName + ' › ' + name + ` › ${testType} + ${fontStackName}`;\n // Add an element id for the title div, so that we can scroll directly to a test case.\n // Add a fragment identifier to the url (e.g., #Stave.Multiple_Stave_Barline_Test.Bravura)\n // This titleId will match the name of the PNGs generated by visual regression tests\n // (without the _Current.png or _Reference.png).\n let prefix = '';\n if (testTypeLowerCase === 'canvas') {\n prefix = testTypeLowerCase + '_';\n }\n else {\n // DO NOT ADD A PREFIX TO SVG TESTS\n // The canvas prefix above is for making sure our element ids are unique,\n // since we have a canvas+bravura test case and a svg+bravura test case\n // that would otherwise have the same titleId.\n }\n const titleId = `${prefix}${sanitizeName(moduleName)}.${sanitizeName(name)}.${fontStackName}`;\n const element = VexFlowTests.createTest(elementId, title, tagName, titleId);\n const options = { elementId, params, assert, backend };\n const isSVG = backend === Renderer.Backends.SVG;\n const contextBuilder = isSVG ? Renderer.getSVGContext : Renderer.getCanvasContext;\n testFunc(options, contextBuilder);\n restoreOriginalFontStack();\n if (helper)\n helper(fontStackName, element);\n });\n });\n }\n /**\n * @param ctx\n * @param x\n * @param y\n */\n static plotLegendForNoteWidth(ctx, x, y) {\n ctx.save();\n ctx.setFont(Font.SANS_SERIF, 8);\n const spacing = 12;\n let lastY = y;\n function legend(color, text) {\n ctx.beginPath();\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n ctx.setLineWidth(10);\n ctx.moveTo(x, lastY - 4);\n ctx.lineTo(x + 10, lastY - 4);\n ctx.stroke();\n ctx.setFillStyle('black');\n ctx.fillText(text, x + 15, lastY);\n lastY += spacing;\n }\n legend('green', 'Note + Flag');\n legend('red', 'Modifiers');\n legend('#999', 'Displaced Head');\n legend('#DDD', 'Formatter Shift');\n ctx.restore();\n }\n}\nVexFlowTests.tests = [];\nVexFlowTests.RUN_CANVAS_TESTS = true;\nVexFlowTests.RUN_SVG_TESTS = true;\nVexFlowTests.RUN_NODE_TESTS = false;\n// Default font properties for tests.\nVexFlowTests.Font = { size: 10 };\n/**\n * Each font stack is a prioritized list of font names.\n */\nVexFlowTests.FONT_STACKS = {\n Bravura: ['Bravura', 'Gonville', 'Custom'],\n Gonville: ['Gonville', 'Bravura', 'Custom'],\n Petaluma: ['Petaluma', 'Gonville', 'Bravura', 'Custom'],\n Leland: ['Leland', 'Bravura', 'Gonville', 'Custom'],\n};\nVexFlowTests.NEXT_TEST_ID = 0;\n/**\n * Used with array.reduce(...) to flatten arrays of arrays in the tests.\n */\n// eslint-disable-next-line\nexport const concat = (a, b) => a.concat(b);\n/** Used in KeySignature and ClefKeySignature Tests. */\nexport const MAJOR_KEYS = [\n //\n 'C',\n 'F',\n 'Bb',\n 'Eb',\n 'Ab',\n 'Db',\n 'Gb',\n 'Cb',\n 'G',\n 'D',\n 'A',\n 'E',\n 'B',\n 'F#',\n 'C#',\n];\nexport const MINOR_KEYS = [\n 'Am',\n 'Dm',\n 'Gm',\n 'Cm',\n 'Fm',\n 'Bbm',\n 'Ebm',\n 'Abm',\n 'Em',\n 'Bm',\n 'F#m',\n 'C#m',\n 'G#m',\n 'D#m',\n 'A#m',\n];\n// VexFlow classes can be accessed via Vex.Flow.* or by directly importing a library class.\n// Tests can be accessed via Vex.Flow.Test.* or by directly importing a test class.\n// Here we set Vex.Flow.Test = VexFlowTests.\n// eslint-disable-next-line\n// @ts-ignore\nFlow.Test = VexFlowTests;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// VF.* Prefix Tests\n//\n// VexFlow classes are available under the global Vex.Flow.* namespace.\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Accidental, Annotation, Articulation, Barline, BarNote, Beam, Bend, BoundingBox, BoundingBoxComputation, ChordSymbol, Clef, ClefNote, Crescendo, Curve, Dot, EasyScore, Element, Factory, Flow, Font, Formatter, Fraction, FretHandFinger, GhostNote, Glyph, GlyphNote, GraceNote, GraceNoteGroup, GraceTabNote, KeyManager, KeySignature, KeySigNote, Modifier, ModifierContext, MultiMeasureRest, Music, Note, NoteHead, NoteSubGroup, Ornament, Parser, PedalMarking, Registry, Renderer, RepeatNote, Repetition, Stave, StaveConnector, StaveHairpin, StaveLine, StaveModifier, StaveNote, StaveTempo, StaveText, StaveTie, Stem, StringNumber, Stroke, System, TabNote, TabSlide, TabStave, TabTie, TextBracket, TextDynamics, TextFormatter, TextNote, TickContext, TimeSignature, TimeSigNote, Tremolo, Tuning, Tuplet, Vibrato, VibratoBracket, Voice, Volta, } from '../src/index';\nconst VFPrefixTests = {\n Start() {\n QUnit.module('VF.* API');\n test('VF.* API', VF_Prefix);\n test('VF Alias', VF_Alias);\n },\n};\nfunction VF_Prefix() {\n // Intentionally use Vex.Flow here so we can verify that the Vex.Flow.* API\n // is equivalent to using the individual classes in TypeScript.\n const VF = Vex.Flow;\n equal(Accidental, VF.Accidental);\n equal(Annotation, VF.Annotation);\n equal(Articulation, VF.Articulation);\n equal(Barline, VF.Barline);\n equal(BarNote, VF.BarNote);\n equal(Beam, VF.Beam);\n equal(Bend, VF.Bend);\n equal(BoundingBox, VF.BoundingBox);\n equal(BoundingBoxComputation, VF.BoundingBoxComputation);\n equal(ChordSymbol, VF.ChordSymbol);\n equal(Clef, VF.Clef);\n equal(ClefNote, VF.ClefNote);\n equal(Crescendo, VF.Crescendo);\n equal(Curve, VF.Curve);\n equal(Dot, VF.Dot);\n equal(EasyScore, VF.EasyScore);\n equal(Element, VF.Element);\n equal(Factory, VF.Factory);\n equal(Flow.RESOLUTION, VF.RESOLUTION);\n equal(Font, VF.Font);\n equal(Formatter, VF.Formatter);\n propEqual(new Formatter(), new VF.Formatter(), 'new Formatter()');\n equal(Fraction, VF.Fraction);\n equal(FretHandFinger, VF.FretHandFinger);\n equal(GhostNote, VF.GhostNote);\n equal(Glyph, VF.Glyph);\n equal(GlyphNote, VF.GlyphNote);\n equal(GraceNote, VF.GraceNote);\n equal(GraceNoteGroup, VF.GraceNoteGroup);\n equal(GraceTabNote, VF.GraceTabNote);\n equal(KeyManager, VF.KeyManager);\n equal(KeySignature, VF.KeySignature);\n equal(KeySigNote, VF.KeySigNote);\n equal(Modifier, VF.Modifier);\n equal(ModifierContext, VF.ModifierContext);\n equal(MultiMeasureRest, VF.MultiMeasureRest);\n equal(Music, VF.Music);\n equal(Note, VF.Note);\n equal(NoteHead, VF.NoteHead);\n equal(NoteSubGroup, VF.NoteSubGroup);\n equal(Ornament, VF.Ornament);\n equal(Parser, VF.Parser);\n equal(PedalMarking, VF.PedalMarking);\n equal(Registry, VF.Registry);\n equal(Renderer, VF.Renderer);\n equal(RepeatNote, VF.RepeatNote);\n equal(Repetition, VF.Repetition);\n equal(Stave, VF.Stave);\n notEqual(Stave, VF.StaveNote);\n equal(StaveConnector, VF.StaveConnector);\n equal(StaveHairpin, VF.StaveHairpin);\n equal(StaveLine, VF.StaveLine);\n equal(StaveModifier, VF.StaveModifier);\n equal(StaveNote, VF.StaveNote);\n equal(StaveTempo, VF.StaveTempo);\n equal(StaveText, VF.StaveText);\n equal(StaveTie, VF.StaveTie);\n equal(Stem, VF.Stem);\n equal(StringNumber, VF.StringNumber);\n equal(Stroke, VF.Stroke);\n equal(System, VF.System);\n equal(TabNote, VF.TabNote);\n equal(TabSlide, VF.TabSlide);\n equal(TabStave, VF.TabStave);\n equal(TabTie, VF.TabTie);\n equal(TextBracket, VF.TextBracket);\n equal(TextDynamics, VF.TextDynamics);\n equal(TextFormatter, VF.TextFormatter);\n equal(TextNote, VF.TextNote);\n equal(TickContext, VF.TickContext);\n equal(TimeSignature, VF.TimeSignature);\n equal(TimeSigNote, VF.TimeSigNote);\n equal(Tremolo, VF.Tremolo);\n equal(Tuning, VF.Tuning);\n equal(Tuplet, VF.Tuplet);\n equal(Vibrato, VF.Vibrato);\n equal(VibratoBracket, VF.VibratoBracket);\n equal(Voice, VF.Voice);\n equal(Volta, VF.Volta);\n}\n/**\n * If you have name collisions with VexFlow classes, consider extracting classes from Vex.Flow\n * and renaming them with a VF prefix.\n */\nfunction VF_Alias() {\n const Flow = Vex.Flow;\n const VFAliases = {\n get VFAccidental() {\n return Flow.Accidental;\n },\n get VFAnnotation() {\n return Flow.Annotation;\n },\n get VFVibrato() {\n return Flow.Vibrato;\n },\n };\n const { VFVibrato, VFAccidental, VFAnnotation } = VFAliases;\n equal(Accidental, VFAccidental);\n equal(Annotation, VFAnnotation);\n const vibrato = new VFVibrato();\n ok(vibrato);\n const acc1 = new VFAccidental('##');\n const acc2 = new Accidental('##');\n equal(acc1.type, acc2.type);\n}\nVexFlowTests.register(VFPrefixTests);\nexport { VFPrefixTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Vibrato Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Bend, Font, Formatter, TabNote, TabStave, Vibrato } from '../src/index';\nconst VibratoTests = {\n Start() {\n QUnit.module('Vibrato');\n const run = VexFlowTests.runTests;\n run('Simple Vibrato', simple);\n run('Harsh Vibrato', harsh);\n run('Vibrato with Bend', withBend);\n },\n};\n// Helper function to create TabNote objects.\nconst tabNote = (noteStruct) => new TabNote(noteStruct);\n/**\n * Default vibrato symbol (wavy line) on top of a tab with two notes fretted.\n */\nfunction simple(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 500, 240);\n ctx.scale(1.5, 1.5);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n ctx.font = '10pt Arial';\n const stave = new TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw();\n const notes = [\n tabNote({\n positions: [\n { str: 2, fret: 10 },\n { str: 4, fret: 9 },\n ],\n duration: 'h',\n }).addModifier(new Vibrato(), 0),\n tabNote({\n positions: [{ str: 2, fret: 10 }],\n duration: 'h',\n }).addModifier(new Vibrato(), 0),\n ];\n Formatter.FormatAndDraw(ctx, stave, notes);\n ok(true, 'Simple Vibrato');\n}\n/**\n * The harsh vibrato symbol is a zig zag line with sharp points.\n * This test is nearly identical to the 'simple' test above.\n * The only difference is that we call .setHarsh(true) on each Vibrato object.\n */\nfunction harsh(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 500, 240);\n ctx.scale(1.5, 1.5);\n ctx.fillStyle = '#221';\n ctx.strokeStyle = '#221';\n ctx.font = '10pt Arial';\n const stave = new TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw();\n const notes = [\n tabNote({\n positions: [\n { str: 2, fret: 10 },\n { str: 4, fret: 9 },\n ],\n duration: 'h',\n }).addModifier(new Vibrato().setHarsh(true), 0),\n tabNote({\n positions: [{ str: 2, fret: 10 }],\n duration: 'h',\n }).addModifier(new Vibrato().setHarsh(true), 0),\n ];\n Formatter.FormatAndDraw(ctx, stave, notes);\n ok(true, 'Harsh Vibrato');\n}\nfunction withBend(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 500, 240);\n ctx.scale(1.3, 1.3);\n ctx.setFillStyle('#221');\n ctx.setStrokeStyle('#221');\n ctx.setFont(Font.SANS_SERIF, VexFlowTests.Font.size);\n const stave = new TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw();\n const notes = [\n tabNote({\n positions: [\n { str: 2, fret: 9 },\n { str: 3, fret: 9 },\n ],\n duration: 'q',\n })\n .addModifier(new Bend('1/2', true), 0)\n .addModifier(new Bend('1/2', true), 1)\n .addModifier(new Vibrato(), 0),\n tabNote({\n positions: [{ str: 2, fret: 10 }],\n duration: 'q',\n })\n .addModifier(new Bend('Full', false), 0)\n .addModifier(new Vibrato().setVibratoWidth(60), 0),\n tabNote({\n positions: [{ str: 2, fret: 10 }],\n duration: 'h',\n }).addModifier(new Vibrato().setVibratoWidth(120).setHarsh(true), 0),\n ];\n Formatter.FormatAndDraw(ctx, stave, notes);\n ok(true, 'Vibrato with Bend');\n}\nVexFlowTests.register(VibratoTests);\nexport { VibratoTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// Author: Balazs Forian-Szabo\n//\n// VibratoBracket Tests\n// TODO: It's annoying to have to cast \"as Note\" or \"as Note[]\". Could we add a method to Voice to get the tickables as Note[]? Voice.getTickables() vs Voice.getNotes()?\nimport { VexFlowTests } from './vexflow_test_helpers';\nconst VibratoBracketTests = {\n Start() {\n QUnit.module('VibratoBracket');\n const run = VexFlowTests.runTests;\n run('Simple VibratoBracket', simple);\n run('Harsh VibratoBracket Without End Note', withoutEndNote);\n run('Harsh VibratoBracket Without Start Note', withoutStartNote);\n },\n};\n// Helper function to set up the stave, easyscore, voice, and to format & draw.\nfunction createTest(noteGroup, setupVibratoBracket) {\n return (options) => {\n const factory = VexFlowTests.makeFactory(options, 650, 200);\n const stave = factory.Stave();\n const score = factory.EasyScore();\n const voice = score.voice(score.notes(noteGroup));\n setupVibratoBracket(factory, voice.getTickables());\n factory.Formatter().joinVoices([voice]).formatToStave([voice], stave);\n factory.draw();\n ok(true);\n };\n}\nconst simple = createTest('c4/4, c4, c4, c4', (factory, notes) => {\n factory.VibratoBracket({\n from: notes[0],\n to: notes[3],\n options: { line: 2 },\n });\n});\nconst withoutEndNote = createTest('c4/4, c4, c4, c4', (factory, notes) => {\n factory.VibratoBracket({\n from: notes[2],\n to: null,\n options: { line: 2, harsh: true },\n });\n});\nconst withoutStartNote = createTest('c4/4, c4, c4, c4', (factory, notes) => {\n factory.VibratoBracket({\n from: null,\n to: notes[2],\n options: { line: 2, harsh: true },\n });\n});\nVexFlowTests.register(VibratoBracketTests);\nexport { VibratoBracketTests };\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Voice Tests\nimport { VexFlowTests } from './vexflow_test_helpers';\nimport { Flow } from '../src/flow';\nimport { Formatter } from '../src/formatter';\nimport { Stave } from '../src/stave';\nimport { Barline } from '../src/stavebarline';\nimport { StaveNote } from '../src/stavenote';\nimport { Voice } from '../src/voice';\nimport { MockTickable } from './mocks';\nconst VoiceTests = {\n Start() {\n QUnit.module('Voice');\n test('Strict Test', strict);\n test('Ignore Test', ignore);\n VexFlowTests.runTests('Full Voice Mode Test', full);\n },\n};\nconst BEAT = (1 * Flow.RESOLUTION) / 4;\n// Helper function to create a tickable with a preset number of ticks.\nconst createTickable = () => new MockTickable().setTicks(BEAT);\nfunction strict() {\n expect(8);\n const tickables = [createTickable(), createTickable(), createTickable()];\n const voice = new Voice(Flow.TIME4_4);\n equal(voice.getTotalTicks().value(), BEAT * 4, '4/4 Voice has 4 beats');\n equal(voice.getTicksUsed().value(), BEAT * 0, 'No beats in voice');\n voice.addTickables(tickables);\n equal(voice.getTicksUsed().value(), BEAT * 3, 'Three beats in voice');\n voice.addTickable(createTickable());\n equal(voice.getTicksUsed().value(), BEAT * 4, 'Four beats in voice');\n equal(voice.isComplete(), true, 'Voice is complete');\n const numeratorBeforeException = voice.getTicksUsed().numerator;\n throws(() => voice.addTickable(createTickable()), /BadArgument/, '\"Too many ticks\" exception');\n // Verify that adding too many ticks does not affect the `ticksUsed` property of the voice.\n // See voice.ts: this.ticksUsed.subtract(ticks);\n equal(voice.getTicksUsed().numerator, numeratorBeforeException, 'Revert `ticksUsed` after a \"Too many ticks\" exception');\n equal(voice.getSmallestTickCount().value(), BEAT, 'Smallest tick count is BEAT');\n}\nfunction ignore() {\n const tickables = [\n createTickable(),\n createTickable(),\n createTickable().setIgnoreTicks(true),\n createTickable(),\n createTickable().setIgnoreTicks(true),\n createTickable(),\n ];\n const voice = new Voice(Flow.TIME4_4);\n voice.addTickables(tickables);\n ok(true, 'all pass');\n}\nfunction full(options, contextBuilder) {\n const ctx = contextBuilder(options.elementId, 550, 200);\n const stave = new Stave(10, 50, 500).addClef('treble').addTimeSignature('4/4').setEndBarType(Barline.type.END);\n const notes = [\n new StaveNote({ keys: ['c/4'], duration: '4' }),\n new StaveNote({ keys: ['d/4'], duration: '4' }),\n new StaveNote({ keys: ['r/4'], duration: '4r' }),\n ];\n notes.forEach((note) => note.setStave(stave));\n const voice = new Voice(Flow.TIME4_4).setMode(Voice.Mode.FULL).addTickables(notes);\n new Formatter().joinVoices([voice]).formatToStave([voice], stave);\n stave.setContext(ctx).draw();\n voice.draw(ctx);\n const bb = voice.getBoundingBox();\n if (bb) {\n ctx.rect(bb.getX(), bb.getY(), bb.getW(), bb.getH());\n }\n ctx.stroke();\n throws(() => voice.addTickable(new StaveNote({ keys: ['c/4'], duration: '2' })), /BadArgument/, 'Voice cannot exceed full amount of ticks');\n}\nVexFlowTests.register(VoiceTests);\nexport { VoiceTests };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// vexflow-debug-with-tests.ts is the entry point for the build output file vexflow-debug-with-tests.js.\n// It statically bundles all the music engraving fonts, and also includes the tests from vexflow/tests/.\n// The output file is used by flow.html & flow-headless-browser.html to run the tests.\nimport * as VexSrc from '../src/index';\nimport * as VexTests from '../tests/index';\nimport { Flow } from '../src/flow';\nimport { loadAllMusicFonts } from '../src/fonts/load_all';\nimport { loadTextFonts } from '../src/fonts/textfonts';\nloadAllMusicFonts();\nFlow.setMusicFont('Bravura', 'Gonville', 'Custom');\nloadTextFonts();\n// Re-export all exports from src/index.ts and tests/index.ts.\nexport * from '../src/index';\nexport * from '../tests/index';\n// Also collect all exports into a default export for CJS projects.\nexport default Object.assign(Object.assign({}, VexSrc), VexTests);\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/build/cjs/vexflow-debug.js b/build/cjs/vexflow-debug.js new file mode 100644 index 0000000000..d48690ff5c --- /dev/null +++ b/build/cjs/vexflow-debug.js @@ -0,0 +1,34714 @@ +/*! + * VexFlow 4.1.0-alpha.0 2022-10-10T04:47:38.237Z 847bc9014672858aedc7f8460384f51f98d6bd84 + * Copyright (c) 2010 Mohit Muthanna Cheppudira + * https://www.vexflow.com https://github.com/0xfe/vexflow + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["Vex"] = factory(); + else + root["Vex"] = factory(); +})((typeof window !== 'undefined' ? window : typeof globalThis !== 'undefined' ? globalThis : this), function() { +return /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ "./src/version.ts": +/*!************************!*\ + !*** ./src/version.ts ***! + \************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "VERSION": () => (/* binding */ VERSION), +/* harmony export */ "ID": () => (/* binding */ ID), +/* harmony export */ "DATE": () => (/* binding */ DATE) +/* harmony export */ }); +const VERSION = '4.1.0-alpha.0'; +const ID = '847bc9014672858aedc7f8460384f51f98d6bd84'; +const DATE = '2022-10-10T04:47:38.237Z'; + + +/***/ }), + +/***/ "./src/accidental.ts": +/*!***************************!*\ + !*** ./src/accidental.ts ***! + \***************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Accidental": () => (/* binding */ Accidental) +/* harmony export */ }); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./fraction */ "./src/fraction.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _music__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./music */ "./src/music.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// @author Mohit Cheppudira +// @author Greg Ristow (modifications) + + + + + + + +// eslint-disable-next-line +function L(...args) { + if (Accidental.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_6__.log)('Vex.Flow.Accidental', args); +} +/** + * An `Accidental` inherits from `Modifier`, and is formatted within a + * `ModifierContext`. Accidentals are modifiers that can be attached to + * notes. Support is included for both western and microtonal accidentals. + * + * See `tests/accidental_tests.ts` for usage examples. + */ +class Accidental extends _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier { + /** + * Create accidental. + * @param type value from `Vex.Flow.accidentalCodes.accidentals` table in `tables.ts`. + * For example: `#`, `##`, `b`, `n`, etc. + */ + constructor(type) { + super(); + L('New accidental: ', type); + this.type = type; + this.position = _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier.Position.LEFT; + this.render_options = { + // Font size for glyphs + font_scale: 38, + // Padding between accidental and parentheses on each side + parenLeftPadding: 2, + parenRightPadding: 2, + }; + this.accidental = _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.accidentalCodes(this.type); + (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(this.accidental, 'ArgumentError', `Unknown accidental type: ${type}`); + // Cautionary accidentals have parentheses around them + this.cautionary = false; + this.reset(); + } + /** Accidentals category string. */ + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_5__.Category.Accidental; + } + /** Arrange accidentals inside a ModifierContext. */ + static format(accidentals, state) { + // If there are no accidentals, no need to format their positions. + if (!accidentals || accidentals.length === 0) + return; + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.currentMusicFont(); + const noteheadAccidentalPadding = musicFont.lookupMetric('accidental.noteheadAccidentalPadding'); + const leftShift = state.left_shift + noteheadAccidentalPadding; + const accidentalSpacing = musicFont.lookupMetric('accidental.accidentalSpacing'); + const additionalPadding = musicFont.lookupMetric('accidental.leftPadding'); // padding to the left of all accidentals + const accList = []; + let prevNote = undefined; + let shiftL = 0; + // First determine the accidentals' Y positions from the note.keys + for (let i = 0; i < accidentals.length; ++i) { + const acc = accidentals[i]; + const note = acc.getNote(); + const stave = note.getStave(); + const index = acc.checkIndex(); + const props = note.getKeyProps()[index]; + if (note !== prevNote) { + // Iterate through all notes to get the displaced pixels + for (let n = 0; n < note.keys.length; ++n) { + shiftL = Math.max(note.getLeftDisplacedHeadPx() - note.getXShift(), shiftL); + } + prevNote = note; + } + if (stave) { + const lineSpace = stave.getSpacingBetweenLines(); + const y = stave.getYForLine(props.line); + const accLine = Math.round((y / lineSpace) * 2) / 2; + accList.push({ y, line: accLine, shift: shiftL, acc, lineSpace }); + } + else { + accList.push({ line: props.line, shift: shiftL, acc }); + } + } + // Sort accidentals by line number. + accList.sort((a, b) => b.line - a.line); + // FIXME: Confusing name. Each object in this array has a property called `line`. + // So if this is a list of lines, you end up with: `line.line` which is very awkward. + const lineList = []; + // amount by which all accidentals must be shifted right or left for + // stem flipping, notehead shifting concerns. + let accShift = 0; + let previousLine = undefined; + // Create an array of unique line numbers (lineList) from accList + for (let i = 0; i < accList.length; i++) { + const acc = accList[i]; + // if this is the first line, or a new line, add a lineList + if (previousLine === undefined || previousLine !== acc.line) { + lineList.push({ + line: acc.line, + flatLine: true, + dblSharpLine: true, + numAcc: 0, + width: 0, + column: 0, + }); + } + // if this accidental is not a flat, the accidental needs 3.0 lines lower + // clearance instead of 2.5 lines for b or bb. + // FIXME: Naming could use work. acc.acc is very awkward + if (acc.acc.type !== 'b' && acc.acc.type !== 'bb') { + lineList[lineList.length - 1].flatLine = false; + } + // if this accidental is not a double sharp, the accidental needs 3.0 lines above + if (acc.acc.type !== '##') { + lineList[lineList.length - 1].dblSharpLine = false; + } + // Track how many accidentals are on this line: + lineList[lineList.length - 1].numAcc++; + // Track the total x_offset needed for this line which will be needed + // for formatting lines w/ multiple accidentals: + // width = accidental width + universal spacing between accidentals + lineList[lineList.length - 1].width += acc.acc.getWidth() + accidentalSpacing; + // if this accShift is larger, use it to keep first column accidentals in the same line + accShift = acc.shift > accShift ? acc.shift : accShift; + previousLine = acc.line; + } + // ### Place Accidentals in Columns + // + // Default to a classic triangular layout (middle accidental farthest left), + // but follow exceptions as outlined in G. Read's _Music Notation_ and + // Elaine Gould's _Behind Bars_. + // + // Additionally, this implements different vertical collision rules for + // flats (only need 2.5 lines clearance below) and double sharps (only + // need 2.5 lines of clearance above or below). + // + // Classic layouts and exception patterns are found in the 'tables.js' + // in 'Tables.accidentalColumnsTable' + // + // Beyond 6 vertical accidentals, default to the parallel ascending lines approach, + // using as few columns as possible for the verticle structure. + // + // TODO (?): Allow column to be specified for an accidental at run-time? + let totalColumns = 0; + // establish the boundaries for a group of notes with clashing accidentals: + for (let i = 0; i < lineList.length; i++) { + let noFurtherConflicts = false; + const groupStart = i; + let groupEnd = i; + while (groupEnd + 1 < lineList.length && !noFurtherConflicts) { + // if this note conflicts with the next: + if (this.checkCollision(lineList[groupEnd], lineList[groupEnd + 1])) { + // include the next note in the group: + groupEnd++; + } + else { + noFurtherConflicts = true; + } + } + // Gets an a line from the `lineList`, relative to the current group + const getGroupLine = (index) => lineList[groupStart + index]; + const getGroupLines = (indexes) => indexes.map(getGroupLine); + const lineDifference = (indexA, indexB) => { + const [a, b] = getGroupLines([indexA, indexB]).map((item) => item.line); + return a - b; + }; + const notColliding = (...indexPairs) => indexPairs.map(getGroupLines).every(([line1, line2]) => !this.checkCollision(line1, line2)); + // Set columns for the lines in this group: + const groupLength = groupEnd - groupStart + 1; + // Set the accidental column for each line of the group + let endCase = this.checkCollision(lineList[groupStart], lineList[groupEnd]) ? 'a' : 'b'; + switch (groupLength) { + case 3: + if (endCase === 'a' && lineDifference(1, 2) === 0.5 && lineDifference(0, 1) !== 0.5) { + endCase = 'second_on_bottom'; + } + break; + case 4: + if (notColliding([0, 2], [1, 3])) { + endCase = 'spaced_out_tetrachord'; + } + break; + case 5: + if (endCase === 'b' && notColliding([1, 3])) { + endCase = 'spaced_out_pentachord'; + if (notColliding([0, 2], [2, 4])) { + endCase = 'very_spaced_out_pentachord'; + } + } + break; + case 6: + if (notColliding([0, 3], [1, 4], [2, 5])) { + endCase = 'spaced_out_hexachord'; + } + if (notColliding([0, 2], [2, 4], [1, 3], [3, 5])) { + endCase = 'very_spaced_out_hexachord'; + } + break; + default: + break; + } + let groupMember; + let column; + // If the group contains seven members or more, use ascending parallel lines + // of accidentals, using as few columns as possible while avoiding collisions. + if (groupLength >= 7) { + // First, determine how many columns to use: + let patternLength = 2; + let collisionDetected = true; + while (collisionDetected === true) { + collisionDetected = false; + for (let line = 0; line + patternLength < lineList.length; line++) { + if (this.checkCollision(lineList[line], lineList[line + patternLength])) { + collisionDetected = true; + patternLength++; + break; + } + } + } + // Then, assign a column to each line of accidentals + for (groupMember = i; groupMember <= groupEnd; groupMember++) { + column = ((groupMember - i) % patternLength) + 1; + lineList[groupMember].column = column; + totalColumns = totalColumns > column ? totalColumns : column; + } + } + else { + // If the group contains fewer than seven members, use the layouts from + // the Tables.accidentalColumnsTable (See: tables.ts). + for (groupMember = i; groupMember <= groupEnd; groupMember++) { + column = _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.accidentalColumnsTable[groupLength][endCase][groupMember - i]; + lineList[groupMember].column = column; + totalColumns = totalColumns > column ? totalColumns : column; + } + } + // Increment i to the last note that was set, so that if a lower set of notes + // does not conflict at all with this group, it can have its own classic shape. + i = groupEnd; + } + // ### Convert Columns to x_offsets + // + // This keeps columns aligned, even if they have different accidentals within them + // which sometimes results in a larger x_offset than is an accidental might need + // to preserve the symmetry of the accidental shape. + // + // Neither A.C. Vinci nor G. Read address this, and it typically only happens in + // music with complex chord clusters. + // + // TODO (?): Optionally allow closer compression of accidentals, instead of forcing + // parallel columns. + // track each column's max width, which will be used as initial shift of later columns: + const columnWidths = []; + const columnXOffsets = []; + for (let i = 0; i <= totalColumns; i++) { + columnWidths[i] = 0; + columnXOffsets[i] = 0; + } + columnWidths[0] = accShift + leftShift; + columnXOffsets[0] = accShift + leftShift; + // Fill columnWidths with widest needed x-space; + // this is what keeps the columns parallel. + lineList.forEach((line) => { + if (line.width > columnWidths[line.column]) + columnWidths[line.column] = line.width; + }); + for (let i = 1; i < columnWidths.length; i++) { + // this column's offset = this column's width + previous column's offset + columnXOffsets[i] = columnWidths[i] + columnXOffsets[i - 1]; + } + const totalShift = columnXOffsets[columnXOffsets.length - 1]; + // Set the xShift for each accidental according to column offsets: + let accCount = 0; + lineList.forEach((line) => { + let lineWidth = 0; + const lastAccOnLine = accCount + line.numAcc; + // handle all of the accidentals on a given line: + for (accCount; accCount < lastAccOnLine; accCount++) { + const xShift = columnXOffsets[line.column - 1] + lineWidth; + accList[accCount].acc.setXShift(xShift); + // keep track of the width of accidentals we've added so far, so that when + // we loop, we add space for them. + lineWidth += accList[accCount].acc.getWidth() + accidentalSpacing; + L('Line, accCount, shift: ', line.line, accCount, xShift); + } + }); + // update the overall layout with the full width of the accidental shapes: + state.left_shift += totalShift + additionalPadding; + } + /** Helper function to determine whether two lines of accidentals collide vertically */ + static checkCollision(line1, line2) { + let clearance = line2.line - line1.line; + let clearanceRequired = 3; + // But less clearance is required for certain accidentals: b, bb and ##. + if (clearance > 0) { + // then line 2 is on top + clearanceRequired = line2.flatLine || line2.dblSharpLine ? 2.5 : 3.0; + if (line1.dblSharpLine) + clearance -= 0.5; + } + else { + // line 1 is on top + clearanceRequired = line1.flatLine || line1.dblSharpLine ? 2.5 : 3.0; + if (line2.dblSharpLine) + clearance -= 0.5; + } + const collision = Math.abs(clearance) < clearanceRequired; + L('Line_1, Line_2, Collision: ', line1.line, line2.line, collision); + return collision; + } + /** + * Use this method to automatically apply accidentals to a set of `voices`. + * The accidentals will be remembered between all the voices provided. + * Optionally, you can also provide an initial `keySignature`. + */ + static applyAccidentals(voices, keySignature) { + const tickPositions = []; + const tickNoteMap = {}; + // Sort the tickables in each voice by their tick position in the voice. + voices.forEach((voice) => { + const tickPosition = new _fraction__WEBPACK_IMPORTED_MODULE_0__.Fraction(0, 1); + const tickable = voice.getTickables(); + tickable.forEach((t) => { + if (t.shouldIgnoreTicks()) + return; + const notesAtPosition = tickNoteMap[tickPosition.value()]; + if (!notesAtPosition) { + tickPositions.push(tickPosition.value()); + tickNoteMap[tickPosition.value()] = [t]; + } + else { + notesAtPosition.push(t); + } + tickPosition.add(t.getTicks()); + }); + }); + const music = new _music__WEBPACK_IMPORTED_MODULE_3__.Music(); + // Default key signature is C major. + if (!keySignature) + keySignature = 'C'; + // Get the scale map, which represents the current state of each pitch. + const scaleMapKey = music.createScaleMap(keySignature); + const scaleMap = {}; + tickPositions.forEach((tickPos) => { + const tickables = tickNoteMap[tickPos]; + // Array to store all pitches that modified accidental states + // at this tick position + const modifiedPitches = []; + const processNote = (t) => { + // Only StaveNote implements .addModifier(), which is used below. + if (!(0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isStaveNote)(t) || t.isRest() || t.shouldIgnoreTicks()) { + return; + } + // Go through each key and determine if an accidental should be applied. + const staveNote = t; + staveNote.keys.forEach((keyString, keyIndex) => { + const key = music.getNoteParts(keyString.split('/')[0]); + const octave = keyString.split('/')[1]; + // Force a natural for every key without an accidental + const accidentalString = key.accidental || 'n'; + const pitch = key.root + accidentalString; + // Determine if the current pitch has the same accidental + // as the scale state + if (!scaleMap[key.root + octave]) + scaleMap[key.root + octave] = scaleMapKey[key.root]; + const sameAccidental = scaleMap[key.root + octave] === pitch; + // Determine if an identical pitch in the chord already + // modified the accidental state + const previouslyModified = modifiedPitches.indexOf(keyString) > -1; + // Remove accidentals + staveNote.getModifiers().forEach((modifier, index) => { + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isAccidental)(modifier) && modifier.type == accidentalString && modifier.getIndex() == keyIndex) { + staveNote.getModifiers().splice(index, 1); + } + }); + // Add the accidental to the StaveNote + if (!sameAccidental || (sameAccidental && previouslyModified)) { + // Modify the scale map so that the root pitch has an + // updated state + scaleMap[key.root + octave] = pitch; + // Create the accidental + const accidental = new Accidental(accidentalString); + // Attach the accidental to the StaveNote + staveNote.addModifier(accidental, keyIndex); + // Add the pitch to list of pitches that modified accidentals + modifiedPitches.push(keyString); + } + }); + // process grace notes + staveNote.getModifiers().forEach((modifier) => { + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isGraceNoteGroup)(modifier)) { + modifier.getGraceNotes().forEach(processNote); + } + }); + }; + tickables.forEach(processNote); + }); + } + reset() { + const fontScale = this.render_options.font_scale; + this.glyph = new _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph(this.accidental.code, fontScale); + this.glyph.setOriginX(1.0); + if (this.cautionary) { + this.parenLeft = new _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph(_tables__WEBPACK_IMPORTED_MODULE_4__.Tables.accidentalCodes('{').code, fontScale); + this.parenRight = new _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph(_tables__WEBPACK_IMPORTED_MODULE_4__.Tables.accidentalCodes('}').code, fontScale); + this.parenLeft.setOriginX(1.0); + this.parenRight.setOriginX(1.0); + } + } + /** Get width in pixels. */ + getWidth() { + if (this.cautionary) { + const parenLeft = (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(this.parenLeft); + const parenRight = (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(this.parenRight); + const parenWidth = parenLeft.getMetrics().width + + parenRight.getMetrics().width + + this.render_options.parenLeftPadding + + this.render_options.parenRightPadding; + return this.glyph.getMetrics().width + parenWidth; + } + else { + return this.glyph.getMetrics().width; + } + } + /** Attach this accidental to `note`, which must be a `StaveNote`. */ + setNote(note) { + (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(note, 'ArgumentError', `Bad note value: ${note}`); + this.note = note; + // Accidentals attached to grace notes are rendered smaller. + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isGraceNote)(note)) { + this.render_options.font_scale = 25; + this.reset(); + } + return this; + } + /** If called, draws parenthesis around accidental. */ + setAsCautionary() { + this.cautionary = true; + this.render_options.font_scale = 28; + this.reset(); + return this; + } + /** Render accidental onto canvas. */ + draw() { + const { type, position, index, cautionary, x_shift, y_shift, glyph, render_options: { parenLeftPadding, parenRightPadding }, } = this; + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + // Figure out the start `x` and `y` coordinates for note and index. + const start = note.getModifierStartXY(position, index); + let accX = start.x + x_shift; + const accY = start.y + y_shift; + L('Rendering: ', type, accX, accY); + if (!cautionary) { + glyph.render(ctx, accX, accY); + } + else { + const parenLeft = (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(this.parenLeft); + const parenRight = (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(this.parenRight); + // Render the accidental in parentheses. + parenRight.render(ctx, accX, accY); + accX -= parenRight.getMetrics().width; + accX -= parenRightPadding; + accX -= this.accidental.parenRightPaddingAdjustment; + glyph.render(ctx, accX, accY); + accX -= glyph.getMetrics().width; + accX -= parenLeftPadding; + parenLeft.render(ctx, accX, accY); + } + } +} +/** To enable logging for this class. Set `Vex.Flow.Accidental.DEBUG` to `true`. */ +Accidental.DEBUG = false; + + +/***/ }), + +/***/ "./src/annotation.ts": +/*!***************************!*\ + !*** ./src/annotation.ts ***! + \***************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "AnnotationHorizontalJustify": () => (/* binding */ AnnotationHorizontalJustify), +/* harmony export */ "AnnotationVerticalJustify": () => (/* binding */ AnnotationVerticalJustify), +/* harmony export */ "Annotation": () => (/* binding */ Annotation) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _textformatter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./textformatter */ "./src/textformatter.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + + +// eslint-disable-next-line +function L(...args) { + if (Annotation.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_6__.log)('Vex.Flow.Annotation', args); +} +var AnnotationHorizontalJustify; +(function (AnnotationHorizontalJustify) { + AnnotationHorizontalJustify[AnnotationHorizontalJustify["LEFT"] = 1] = "LEFT"; + AnnotationHorizontalJustify[AnnotationHorizontalJustify["CENTER"] = 2] = "CENTER"; + AnnotationHorizontalJustify[AnnotationHorizontalJustify["RIGHT"] = 3] = "RIGHT"; + AnnotationHorizontalJustify[AnnotationHorizontalJustify["CENTER_STEM"] = 4] = "CENTER_STEM"; +})(AnnotationHorizontalJustify || (AnnotationHorizontalJustify = {})); +var AnnotationVerticalJustify; +(function (AnnotationVerticalJustify) { + AnnotationVerticalJustify[AnnotationVerticalJustify["TOP"] = 1] = "TOP"; + AnnotationVerticalJustify[AnnotationVerticalJustify["CENTER"] = 2] = "CENTER"; + AnnotationVerticalJustify[AnnotationVerticalJustify["BOTTOM"] = 3] = "BOTTOM"; + AnnotationVerticalJustify[AnnotationVerticalJustify["CENTER_STEM"] = 4] = "CENTER_STEM"; +})(AnnotationVerticalJustify || (AnnotationVerticalJustify = {})); +/** + * Annotations are modifiers that can be attached to + * notes. + * + * See `tests/annotation_tests.ts` for usage examples. + */ +class Annotation extends _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier { + /** + * Annotations inherit from `Modifier` and is positioned correctly when + * in a `ModifierContext`. + * Create a new `Annotation` with the string `text`. + */ + constructor(text) { + super(); + this.text = text; + this.horizontalJustification = AnnotationHorizontalJustify.CENTER; + // warning: the default in the constructor is TOP, but in the factory the default is BOTTOM. + // this is to support legacy application that may expect this. + this.verticalJustification = AnnotationVerticalJustify.TOP; + this.resetFont(); + // The default width is calculated from the text. + this.setWidth(_tables__WEBPACK_IMPORTED_MODULE_3__.Tables.textWidth(text)); + } + /** Annotations category string. */ + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_5__.Category.Annotation; + } + // Use the same padding for annotations as note head so the + // words don't run into each other. + static get minAnnotationPadding() { + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont(); + return musicFont.lookupMetric('glyphs.noteHead.minPadding'); + } + /** Arrange annotations within a `ModifierContext` */ + static format(annotations, state) { + if (!annotations || annotations.length === 0) + return false; + let leftWidth = 0; + let rightWidth = 0; + let maxLeftGlyphWidth = 0; + let maxRightGlyphWidth = 0; + for (let i = 0; i < annotations.length; ++i) { + const annotation = annotations[i]; + const textFormatter = _textformatter__WEBPACK_IMPORTED_MODULE_4__.TextFormatter.create(annotation.textFont); + // Text height is expressed in fractional stave spaces. + const textLines = (5 + textFormatter.maxHeight) / _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.STAVE_LINE_DISTANCE; + let verticalSpaceNeeded = textLines; + const note = annotation.checkAttachedNote(); + const glyphWidth = note.getGlyph().getWidth(); + // Get the text width from the font metrics. + const textWidth = textFormatter.getWidthForTextInPx(annotation.text); + if (annotation.horizontalJustification === AnnotationHorizontalJustify.LEFT) { + maxLeftGlyphWidth = Math.max(glyphWidth, maxLeftGlyphWidth); + leftWidth = Math.max(leftWidth, textWidth) + Annotation.minAnnotationPadding; + } + else if (annotation.horizontalJustification === AnnotationHorizontalJustify.RIGHT) { + maxRightGlyphWidth = Math.max(glyphWidth, maxRightGlyphWidth); + rightWidth = Math.max(rightWidth, textWidth); + } + else { + leftWidth = Math.max(leftWidth, textWidth / 2) + Annotation.minAnnotationPadding; + rightWidth = Math.max(rightWidth, textWidth / 2); + maxLeftGlyphWidth = Math.max(glyphWidth / 2, maxLeftGlyphWidth); + maxRightGlyphWidth = Math.max(glyphWidth / 2, maxRightGlyphWidth); + } + const stave = note.getStave(); + const stemDirection = note.hasStem() ? note.getStemDirection() : _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP; + let stemHeight = 0; + let lines = 5; + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isTabNote)(note)) { + if (note.render_options.draw_stem) { + const stem = note.getStem(); + if (stem) { + stemHeight = Math.abs(stem.getHeight()) / _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.STAVE_LINE_DISTANCE; + } + } + else { + stemHeight = 0; + } + } + else if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isStemmableNote)(note)) { + const stem = note.getStem(); + if (stem && note.getNoteType() === 'n') { + stemHeight = Math.abs(stem.getHeight()) / _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.STAVE_LINE_DISTANCE; + } + } + if (stave) { + lines = stave.getNumLines(); + } + if (annotation.verticalJustification === this.VerticalJustify.TOP) { + let noteLine = note.getLineNumber(true); + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isTabNote)(note)) { + noteLine = lines - (note.leastString() - 0.5); + } + if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP) { + noteLine += stemHeight; + } + const curTop = noteLine + state.top_text_line + 0.5; + if (curTop < lines) { + annotation.setTextLine(lines - noteLine); + verticalSpaceNeeded += lines - noteLine; + state.top_text_line = verticalSpaceNeeded; + } + else { + annotation.setTextLine(state.top_text_line); + state.top_text_line += verticalSpaceNeeded; + } + } + else if (annotation.verticalJustification === this.VerticalJustify.BOTTOM) { + let noteLine = lines - note.getLineNumber(); + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isTabNote)(note)) { + noteLine = note.greatestString() - 1; + } + if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN) { + noteLine += stemHeight; + } + const curBottom = noteLine + state.text_line + 1; + if (curBottom < lines) { + annotation.setTextLine(lines - curBottom); + verticalSpaceNeeded += lines - curBottom; + state.text_line = verticalSpaceNeeded; + } + else { + annotation.setTextLine(state.text_line); + state.text_line += verticalSpaceNeeded; + } + } + else { + annotation.setTextLine(state.text_line); + } + } + const rightOverlap = Math.min(Math.max(rightWidth - maxRightGlyphWidth, 0), Math.max(rightWidth - state.right_shift, 0)); + const leftOverlap = Math.min(Math.max(leftWidth - maxLeftGlyphWidth, 0), Math.max(leftWidth - state.left_shift, 0)); + state.left_shift += leftOverlap; + state.right_shift += rightOverlap; + return true; + } + /** + * Set vertical position of text (above or below stave). + * @param just value in `AnnotationVerticalJustify`. + */ + setVerticalJustification(just) { + this.verticalJustification = typeof just === 'string' ? Annotation.VerticalJustifyString[just] : just; + return this; + } + /** + * Get horizontal justification. + */ + getJustification() { + return this.horizontalJustification; + } + /** + * Set horizontal justification. + * @param justification value in `Annotation.Justify`. + */ + setJustification(just) { + this.horizontalJustification = typeof just === 'string' ? Annotation.HorizontalJustifyString[just] : just; + return this; + } + /** Render text beside the note. */ + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + const stemDirection = note.hasStem() ? note.getStemDirection() : _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP; + const textFormatter = _textformatter__WEBPACK_IMPORTED_MODULE_4__.TextFormatter.create(this.textFont); + const start = note.getModifierStartXY(_modifier__WEBPACK_IMPORTED_MODULE_1__.ModifierPosition.ABOVE, this.index); + this.setRendered(); + // We're changing context parameters. Save current state. + ctx.save(); + // Apply style might not save context, if this.style is undefined, so we + // still need to save context state just before this, since we will be + // changing ctx parameters below. + this.applyStyle(); + ctx.openGroup('annotation', this.getAttribute('id')); + ctx.setFont(this.textFont); + const text_width = ctx.measureText(this.text).width; + const text_height = textFormatter.maxHeight + 2; + let x; + let y; + if (this.horizontalJustification === AnnotationHorizontalJustify.LEFT) { + x = start.x; + } + else if (this.horizontalJustification === AnnotationHorizontalJustify.RIGHT) { + x = start.x - text_width; + } + else if (this.horizontalJustification === AnnotationHorizontalJustify.CENTER) { + x = start.x - text_width / 2; + } /* CENTER_STEM */ + else { + x = note.getStemX() - text_width / 2; + } + let stem_ext = {}; + let spacing = 0; + const has_stem = note.hasStem(); + const stave = note.checkStave(); + // The position of the text varies based on whether or not the note + // has a stem. + if (has_stem) { + stem_ext = note.checkStem().getExtents(); + spacing = stave.getSpacingBetweenLines(); + } + if (this.verticalJustification === AnnotationVerticalJustify.BOTTOM) { + // Use the largest (lowest) Y value + const ys = note.getYs(); + y = ys.reduce((a, b) => (a > b ? a : b)); + y += (this.text_line + 1) * _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.STAVE_LINE_DISTANCE + text_height; + if (has_stem && stemDirection === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN) { + y = Math.max(y, stem_ext.topY + text_height + spacing * this.text_line); + } + } + else if (this.verticalJustification === AnnotationVerticalJustify.CENTER) { + const yt = note.getYForTopText(this.text_line) - 1; + const yb = stave.getYForBottomText(this.text_line); + y = yt + (yb - yt) / 2 + text_height / 2; + } + else if (this.verticalJustification === AnnotationVerticalJustify.TOP) { + y = note.getYs()[0] - (this.text_line + 1) * _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.STAVE_LINE_DISTANCE; + if (has_stem && stemDirection === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP) { + // If the stem is above the stave already, go with default line width vs. actual + // since the lines between don't really matter. + spacing = stem_ext.topY < stave.getTopLineTopY() ? _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.STAVE_LINE_DISTANCE : spacing; + y = Math.min(y, stem_ext.topY - spacing * (this.text_line + 1)); + } + } /* CENTER_STEM */ + else { + const extents = note.getStemExtents(); + y = extents.topY + (extents.baseY - extents.topY) / 2 + text_height / 2; + } + L('Rendering annotation: ', this.text, x, y); + ctx.fillText(this.text, x, y); + ctx.closeGroup(); + this.restoreStyle(); + ctx.restore(); + } +} +/** To enable logging for this class. Set `Vex.Flow.Annotation.DEBUG` to `true`. */ +Annotation.DEBUG = false; +Annotation.TEXT_FONT = Object.assign({}, _element__WEBPACK_IMPORTED_MODULE_0__.Element.TEXT_FONT); +/** Text annotations can be positioned and justified relative to the note. */ +Annotation.HorizontalJustify = AnnotationHorizontalJustify; +Annotation.HorizontalJustifyString = { + left: AnnotationHorizontalJustify.LEFT, + right: AnnotationHorizontalJustify.RIGHT, + center: AnnotationHorizontalJustify.CENTER, + centerStem: AnnotationHorizontalJustify.CENTER_STEM, +}; +Annotation.VerticalJustify = AnnotationVerticalJustify; +Annotation.VerticalJustifyString = { + above: AnnotationVerticalJustify.TOP, + top: AnnotationVerticalJustify.TOP, + below: AnnotationVerticalJustify.BOTTOM, + bottom: AnnotationVerticalJustify.BOTTOM, + center: AnnotationVerticalJustify.CENTER, + centerStem: AnnotationVerticalJustify.CENTER_STEM, +}; + + +/***/ }), + +/***/ "./src/articulation.ts": +/*!*****************************!*\ + !*** ./src/articulation.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Articulation": () => (/* binding */ Articulation) +/* harmony export */ }); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Larry Kuhns. +// MIT License + + + + + + +// eslint-disable-next-line +function L(...args) { + if (Articulation.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_5__.log)('Vex.Flow.Articulation', args); +} +const { ABOVE, BELOW } = _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position; +function roundToNearestHalf(mathFn, value) { + return mathFn(value / 0.5) * 0.5; +} +// This includes both staff and ledger lines +function isWithinLines(line, position) { + return position === ABOVE ? line <= 5 : line >= 1; +} +function getRoundingFunction(line, position) { + if (isWithinLines(line, position)) { + if (position === ABOVE) { + return Math.ceil; + } + else { + return Math.floor; + } + } + else { + return Math.round; + } +} +function snapLineToStaff(canSitBetweenLines, line, position, offsetDirection) { + // Initially, snap to nearest staff line or space + const snappedLine = roundToNearestHalf(getRoundingFunction(line, position), line); + const canSnapToStaffSpace = canSitBetweenLines && isWithinLines(snappedLine, position); + const onStaffLine = snappedLine % 1 === 0; + if (canSnapToStaffSpace && onStaffLine) { + const HALF_STAFF_SPACE = 0.5; + return snappedLine + HALF_STAFF_SPACE * -offsetDirection; + } + else { + return snappedLine; + } +} +// Helper function for checking if a Note object is either a StaveNote or a GraceNote. +const isStaveOrGraceNote = (note) => (0,_typeguard__WEBPACK_IMPORTED_MODULE_4__.isStaveNote)(note) || (0,_typeguard__WEBPACK_IMPORTED_MODULE_4__.isGraceNote)(note); +function getTopY(note, textLine) { + const stemDirection = note.getStemDirection(); + const { topY: stemTipY, baseY: stemBaseY } = note.getStemExtents(); + if (isStaveOrGraceNote(note)) { + if (note.hasStem()) { + if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP) { + return stemTipY; + } + else { + return stemBaseY; + } + } + else { + return Math.min(...note.getYs()); + } + } + else if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_4__.isTabNote)(note)) { + if (note.hasStem()) { + if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP) { + return stemTipY; + } + else { + return note.checkStave().getYForTopText(textLine); + } + } + else { + return note.checkStave().getYForTopText(textLine); + } + } + else { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes'); + } +} +function getBottomY(note, textLine) { + const stemDirection = note.getStemDirection(); + const { topY: stemTipY, baseY: stemBaseY } = note.getStemExtents(); + if (isStaveOrGraceNote(note)) { + if (note.hasStem()) { + if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP) { + return stemBaseY; + } + else { + return stemTipY; + } + } + else { + return Math.max(...note.getYs()); + } + } + else if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_4__.isTabNote)(note)) { + if (note.hasStem()) { + if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP) { + return note.checkStave().getYForBottomText(textLine); + } + else { + return stemTipY; + } + } + else { + return note.checkStave().getYForBottomText(textLine); + } + } + else { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes'); + } +} +/** + * Get the initial offset of the articulation from the y value of the starting position. + * This is required because the top/bottom text positions already have spacing applied to + * provide a "visually pleasant" default position. However the y values provided from + * the stavenote's top/bottom do *not* have any pre-applied spacing. This function + * normalizes this asymmetry. + * @param note + * @param position + * @returns + */ +function getInitialOffset(note, position) { + const isOnStemTip = (position === ABOVE && note.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP) || + (position === BELOW && note.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN); + if (isStaveOrGraceNote(note)) { + if (note.hasStem() && isOnStemTip) { + return 0.5; + } + else { + // this amount is larger than the stem-tip offset because we start from + // the center of the notehead + return 1; + } + } + else { + if (note.hasStem() && isOnStemTip) { + return 1; + } + else { + return 0; + } + } +} +/** + * Articulations and Accents are modifiers that can be + * attached to notes. The complete list of articulations is available in + * `tables.ts` under `Vex.Flow.articulationCodes`. + * + * See `tests/articulation_tests.ts` for usage examples. + */ +class Articulation extends _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier { + /** + * Create a new articulation. + * @param type entry in `Vex.Flow.articulationCodes` in `tables.ts` + */ + constructor(type) { + super(); + this.type = type; + this.position = BELOW; + this.render_options = { + font_scale: 38, + }; + this.reset(); + } + /** Articulations category string. */ + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_4__.Category.Articulation; + } + /** + * FIXME: + * Most of the complex formatting logic (ie: snapping to space) is + * actually done in .render(). But that logic belongs in this method. + * + * Unfortunately, this isn't possible because, by this point, stem lengths + * have not yet been finalized. Finalized stem lengths are required to determine the + * initial position of any stem-side articulation. + * + * This indicates that all objects should have their stave set before being + * formatted. It can't be an optional if you want accurate vertical positioning. + * Consistently positioned articulations that play nice with other modifiers + * won't be possible until we stop relying on render-time formatting. + * + * Ideally, when this function has completed, the vertical articulation positions + * should be ready to render without further adjustment. But the current state + * is far from this ideal. + */ + static format(articulations, state) { + if (!articulations || articulations.length === 0) + return false; + const margin = 0.5; + let maxGlyphWidth = 0; + const getIncrement = (articulation, line, position) => roundToNearestHalf(getRoundingFunction(line, position), (0,_util__WEBPACK_IMPORTED_MODULE_5__.defined)(articulation.glyph.getMetrics().height) / 10 + margin); + articulations.forEach((articulation) => { + const note = articulation.checkAttachedNote(); + maxGlyphWidth = Math.max(note.getGlyph().getWidth(), maxGlyphWidth); + let lines = 5; + const stemDirection = note.hasStem() ? note.getStemDirection() : _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP; + let stemHeight = 0; + // Decide if we need to consider beam direction in placement. + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_4__.isStemmableNote)(note)) { + const stem = note.getStem(); + if (stem) { + stemHeight = Math.abs(stem.getHeight()) / _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.STAVE_LINE_DISTANCE; + } + } + const stave = note.getStave(); + if (stave) { + lines = stave.getNumLines(); + } + if (articulation.getPosition() === ABOVE) { + let noteLine = note.getLineNumber(true); + if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP) { + noteLine += stemHeight; + } + let increment = getIncrement(articulation, state.top_text_line, ABOVE); + const curTop = noteLine + state.top_text_line + 0.5; + // If articulation must be above stave, add lines between note and stave top + if (!articulation.articulation.between_lines && curTop < lines) { + increment += lines - curTop; + } + articulation.setTextLine(state.top_text_line); + state.top_text_line += increment; + } + else if (articulation.getPosition() === BELOW) { + let noteLine = Math.max(lines - note.getLineNumber(), 0); + if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN) { + noteLine += stemHeight; + } + let increment = getIncrement(articulation, state.text_line, BELOW); + const curBottom = noteLine + state.text_line + 0.5; + // if articulation must be below stave, add lines from note to stave bottom + if (!articulation.articulation.between_lines && curBottom < lines) { + increment += lines - curBottom; + } + articulation.setTextLine(state.text_line); + state.text_line += increment; + } + }); + const width = articulations + .map((articulation) => articulation.getWidth()) + .reduce((maxWidth, articWidth) => Math.max(articWidth, maxWidth)); + const overlap = Math.min(Math.max(width - maxGlyphWidth, 0), Math.max(width - (state.left_shift + state.right_shift), 0)); + state.left_shift += overlap / 2; + state.right_shift += overlap / 2; + return true; + } + static easyScoreHook({ articulations }, note, builder) { + if (!articulations) + return; + const articNameToCode = { + staccato: 'a.', + tenuto: 'a-', + accent: 'a>', + }; + articulations + .split(',') + .map((articString) => articString.trim().split('.')) + .map(([name, position]) => { + const artic = { type: articNameToCode[name] }; + if (position) + artic.position = _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.PositionString[position]; + return builder.getFactory().Articulation(artic); + }) + .map((artic) => note.addModifier(artic, 0)); + } + reset() { + this.articulation = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.articulationCodes(this.type); + const articulation = (0,_util__WEBPACK_IMPORTED_MODULE_5__.defined)(this.articulation, 'ArgumentError', `Articulation not found: ${this.type}`); + const code = (this.position === ABOVE ? articulation.aboveCode : articulation.belowCode) || articulation.code; + this.glyph = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph(code !== null && code !== void 0 ? code : '', this.render_options.font_scale); + this.setWidth((0,_util__WEBPACK_IMPORTED_MODULE_5__.defined)(this.glyph.getMetrics().width)); + } + /** Render articulation in position next to note. */ + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const index = this.checkIndex(); + const { position, glyph, text_line: textLine } = this; + const canSitBetweenLines = this.articulation.between_lines; + const stave = note.checkStave(); + const staffSpace = stave.getSpacingBetweenLines(); + const isTab = (0,_typeguard__WEBPACK_IMPORTED_MODULE_4__.isTabNote)(note); + // Articulations are centered over/under the note head. + const { x } = note.getModifierStartXY(position, index); + const shouldSitOutsideStaff = !canSitBetweenLines || isTab; + const initialOffset = getInitialOffset(note, position); + const padding = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric(`articulation.${glyph.getCode()}.padding`, 0); + let y = { + [ABOVE]: () => { + glyph.setOrigin(0.5, 1); + const y = getTopY(note, textLine) - (textLine + initialOffset) * staffSpace; + return shouldSitOutsideStaff ? Math.min(stave.getYForTopText(Articulation.INITIAL_OFFSET), y) : y; + }, + [BELOW]: () => { + glyph.setOrigin(0.5, 0); + const y = getBottomY(note, textLine) + (textLine + initialOffset) * staffSpace; + return shouldSitOutsideStaff ? Math.max(stave.getYForBottomText(Articulation.INITIAL_OFFSET), y) : y; + }, + }[position](); + if (!isTab) { + const offsetDirection = position === ABOVE ? -1 : +1; + const noteLine = note.getKeyProps()[index].line; + const distanceFromNote = (note.getYs()[index] - y) / staffSpace; + const articLine = distanceFromNote + Number(noteLine); + const snappedLine = snapLineToStaff(canSitBetweenLines, articLine, position, offsetDirection); + if (isWithinLines(snappedLine, position)) + glyph.setOrigin(0.5, 0.5); + y += Math.abs(snappedLine - articLine) * staffSpace * offsetDirection + padding * offsetDirection; + } + L(`Rendering articulation at (x: ${x}, y: ${y})`); + glyph.render(ctx, x, y); + } +} +/** To enable logging for this class. Set `Vex.Flow.Articulation.DEBUG` to `true`. */ +Articulation.DEBUG = false; +Articulation.INITIAL_OFFSET = -0.5; + + +/***/ }), + +/***/ "./src/barnote.ts": +/*!************************!*\ + !*** ./src/barnote.ts ***! + \************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "BarNote": () => (/* binding */ BarNote) +/* harmony export */ }); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _stavebarline__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stavebarline */ "./src/stavebarline.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + +// eslint-disable-next-line +function L(...args) { + if (BarNote.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_3__.log)('Vex.Flow.BarNote', args); +} +/** + * A `BarNote` is used to render bar lines (from `barline.ts`). `BarNote`s can + * be added to a voice and rendered in the middle of a stave. Since it has no + * duration, it consumes no `tick`s, and is dealt with appropriately by the formatter. + * + * See `tests/barnote_tests.ts` for usage examples. + */ +class BarNote extends _note__WEBPACK_IMPORTED_MODULE_0__.Note { + constructor(type = _stavebarline__WEBPACK_IMPORTED_MODULE_1__.BarlineType.SINGLE) { + super({ duration: 'b' }); + this.metrics = { + widths: {}, + }; + const TYPE = _stavebarline__WEBPACK_IMPORTED_MODULE_1__.BarlineType; + this.metrics.widths = { + [TYPE.SINGLE]: 8, + [TYPE.DOUBLE]: 12, + [TYPE.END]: 15, + [TYPE.REPEAT_BEGIN]: 14, + [TYPE.REPEAT_END]: 14, + [TYPE.REPEAT_BOTH]: 18, + [TYPE.NONE]: 0, + }; + // Tell the formatter that bar notes have no duration. + this.ignore_ticks = true; + this.setType(type); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.BarNote; + } + /** Get the type of bar note.*/ + getType() { + return this.type; + } + /** Set the type of bar note. */ + setType(type) { + this.type = typeof type === 'string' ? _stavebarline__WEBPACK_IMPORTED_MODULE_1__.Barline.typeString[type] : type; + // Set width to width of relevant `Barline`. + this.setWidth(this.metrics.widths[this.type]); + return this; + } + /* Overridden to ignore */ + // eslint-disable-next-line + addToModifierContext(mc) { + // DO NOTHING. + return this; + } + /** Overridden to ignore. */ + preFormat() { + this.preFormatted = true; + return this; + } + /** Render note to stave. */ + draw() { + const ctx = this.checkContext(); + L('Rendering bar line at: ', this.getAbsoluteX()); + this.applyStyle(ctx); + const barline = new _stavebarline__WEBPACK_IMPORTED_MODULE_1__.Barline(this.type); + barline.setX(this.getAbsoluteX()); + barline.draw(this.checkStave()); + this.restoreStyle(ctx); + this.setRendered(); + } +} +/** To enable logging for this class. Set `Vex.Flow.BarNote.DEBUG` to `true`. */ +BarNote.DEBUG = false; + + +/***/ }), + +/***/ "./src/beam.ts": +/*!*********************!*\ + !*** ./src/beam.ts ***! + \*********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "BEAM_LEFT": () => (/* binding */ BEAM_LEFT), +/* harmony export */ "BEAM_RIGHT": () => (/* binding */ BEAM_RIGHT), +/* harmony export */ "BEAM_BOTH": () => (/* binding */ BEAM_BOTH), +/* harmony export */ "Beam": () => (/* binding */ Beam) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fraction */ "./src/fraction.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _tuplet__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tuplet */ "./src/tuplet.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + + +function calculateStemDirection(notes) { + let lineSum = 0; + notes.forEach((note) => { + if (note.keyProps) { + note.keyProps.forEach((keyProp) => { + lineSum += keyProp.line - 3; + }); + } + }); + if (lineSum >= 0) { + return _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN; + } + return _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP; +} +function getStemSlope(firstNote, lastNote) { + const firstStemTipY = firstNote.getStemExtents().topY; + const firstStemX = firstNote.getStemX(); + const lastStemTipY = lastNote.getStemExtents().topY; + const lastStemX = lastNote.getStemX(); + return (lastStemTipY - firstStemTipY) / (lastStemX - firstStemX); +} +const BEAM_LEFT = 'L'; +const BEAM_RIGHT = 'R'; +const BEAM_BOTH = 'B'; +/** `Beams` span over a set of `StemmableNotes`. */ +class Beam extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + constructor(notes, auto_stem = false) { + super(); + this.slope = 0; + this.y_shift = 0; + /** + * Overrides to default beam directions for secondary-level beams that do not + * connect to any other note. See further explanation at + * `setPartialBeamSideAt` + */ + this.forcedPartialDirections = {}; + if (!notes || notes.length === 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('BadArguments', 'No notes provided for beam.'); + } + if (notes.length === 1) { + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('BadArguments', 'Too few notes for beam.'); + } + // Validate beam line, direction and ticks. + this.ticks = notes[0].getIntrinsicTicks(); + if (this.ticks >= _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.durationToTicks('4')) { + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('BadArguments', 'Beams can only be applied to notes shorter than a quarter note.'); + } + let i; // shared iterator + let note; + this.stem_direction = _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP; + for (i = 0; i < notes.length; ++i) { + note = notes[i]; + if (note.hasStem()) { + this.stem_direction = note.getStemDirection(); + break; + } + } + let stem_direction = this.stem_direction; + // Figure out optimal stem direction based on given notes + if (auto_stem && (0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isStaveNote)(notes[0])) { + stem_direction = calculateStemDirection(notes); + } + else if (auto_stem && (0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isTabNote)(notes[0])) { + // Auto Stem TabNotes + const stem_weight = notes.reduce((memo, note) => memo + note.getStemDirection(), 0); + stem_direction = stem_weight > -1 ? _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP : _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN; + } + // Apply stem directions and attach beam to notes + for (i = 0; i < notes.length; ++i) { + note = notes[i]; + if (auto_stem) { + note.setStemDirection(stem_direction); + this.stem_direction = stem_direction; + } + note.setBeam(this); + } + this.postFormatted = false; + this.notes = notes; + this.beam_count = this.getBeamCount(); + this.break_on_indices = []; + this.render_options = { + beam_width: 5, + max_slope: 0.25, + min_slope: -0.25, + slope_iterations: 20, + slope_cost: 100, + show_stemlets: false, + stemlet_extension: 7, + partial_beam_length: 10, + flat_beams: false, + min_flat_beam_offset: 15, + }; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_5__.Category.Beam; + } + /** Get the direction of the beam */ + getStemDirection() { + return this.stem_direction; + } + /** + * Get the default beam groups for a provided time signature. + * Attempt to guess if the time signature is not found in table. + * Currently this is fairly naive. + */ + static getDefaultBeamGroups(time_sig) { + if (!time_sig || time_sig === 'c') { + time_sig = '4/4'; + } + const defaults = { + '1/2': ['1/2'], + '2/2': ['1/2'], + '3/2': ['1/2'], + '4/2': ['1/2'], + '1/4': ['1/4'], + '2/4': ['1/4'], + '3/4': ['1/4'], + '4/4': ['1/4'], + '1/8': ['1/8'], + '2/8': ['2/8'], + '3/8': ['3/8'], + '4/8': ['2/8'], + '1/16': ['1/16'], + '2/16': ['2/16'], + '3/16': ['3/16'], + '4/16': ['2/16'], + }; + const groups = defaults[time_sig]; + if (groups === undefined) { + // If no beam groups found, naively determine + // the beam groupings from the time signature + const beatTotal = parseInt(time_sig.split('/')[0], 10); + const beatValue = parseInt(time_sig.split('/')[1], 10); + const tripleMeter = beatTotal % 3 === 0; + if (tripleMeter) { + return [new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(3, beatValue)]; + } + else if (beatValue > 4) { + return [new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(2, beatValue)]; + } + else if (beatValue <= 4) { + return [new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(1, beatValue)]; + } + } + else { + return groups.map((group) => new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction().parse(group)); + } + return [new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(1, 4)]; + } + /** + * A helper function to automatically build basic beams for a voice. For more + * complex auto-beaming use `Beam.generateBeams()`. + * @param voice the voice to generate the beams for + * @param stem_direction a stem direction to apply to the entire voice + * @param groups an array of `Fraction` representing beat groupings for the beam + */ + static applyAndGetBeams(voice, stem_direction, groups) { + return Beam.generateBeams(voice.getTickables(), { groups, stem_direction }); + } + /** + * A helper function to autimatically build beams for a voice with + * configuration options. + * + * Example configuration object: + * + * ``` + * config = { + * groups: [new Vex.Flow.Fraction(2, 8)], + * stem_direction: -1, + * beam_rests: true, + * beam_middle_only: true, + * show_stemlets: false + * }; + * ``` + * @param notes an array of notes to create the beams for + * @param config the configuration object + * @param config.stem_direction set to apply the same direction to all notes + * @param config.beam_rests set to `true` to include rests in the beams + * @param config.beam_middle_only set to `true` to only beam rests in the middle of the beat + * @param config.show_stemlets set to `true` to draw stemlets for rests + * @param config.maintain_stem_directions set to `true` to not apply new stem directions + * @param config.groups array of `Fractions` that represent the beat structure to beam the notes + * + */ + static generateBeams(notes, config = {}) { + if (!config.groups || !config.groups.length) { + config.groups = [new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(2, 8)]; + } + // Convert beam groups to tick amounts + const tickGroups = config.groups.map((group) => { + if (!group.multiply) { + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('InvalidBeamGroups', 'The beam groups must be an array of Vex.Flow.Fractions'); + } + return group.clone().multiply(_tables__WEBPACK_IMPORTED_MODULE_3__.Tables.RESOLUTION, 1); + }); + const unprocessedNotes = notes; + let currentTickGroup = 0; + let noteGroups = []; + let currentGroup = []; + function getTotalTicks(vf_notes) { + return vf_notes.reduce((memo, note) => note.getTicks().clone().add(memo), new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(0, 1)); + } + function nextTickGroup() { + if (tickGroups.length - 1 > currentTickGroup) { + currentTickGroup += 1; + } + else { + currentTickGroup = 0; + } + } + function createGroups() { + let nextGroup = []; + // number of ticks in current group + let currentGroupTotalTicks = new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(0, 1); + unprocessedNotes.forEach((unprocessedNote) => { + nextGroup = []; + if (unprocessedNote.shouldIgnoreTicks()) { + noteGroups.push(currentGroup); + currentGroup = nextGroup; + return; // Ignore untickables (like bar notes) + } + currentGroup.push(unprocessedNote); + const ticksPerGroup = tickGroups[currentTickGroup].clone(); + const totalTicks = getTotalTicks(currentGroup).add(currentGroupTotalTicks); + // Double the amount of ticks in a group, if it's an unbeamable tuplet + const unbeamable = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.durationToNumber(unprocessedNote.getDuration()) < 8; + if (unbeamable && unprocessedNote.getTuplet()) { + ticksPerGroup.numerator *= 2; + } + // If the note that was just added overflows the group tick total + if (totalTicks.greaterThan(ticksPerGroup)) { + // If the overflow note can be beamed, start the next group + // with it. Unbeamable notes leave the group overflowed. + if (!unbeamable) { + const note = currentGroup.pop(); + if (note) + nextGroup.push(note); + } + noteGroups.push(currentGroup); + // We have overflown, so we're going to next tick group. As we might have + // overflown by more than 1 group, we need to go forward as many times as + // needed, decreasing currentGroupTotalTicks by as many ticks as there are + // in current groups as we go forward. + do { + currentGroupTotalTicks = totalTicks.subtract(tickGroups[currentTickGroup]); + nextTickGroup(); + } while (currentGroupTotalTicks.greaterThanEquals(tickGroups[currentTickGroup])); + currentGroup = nextGroup; + } + else if (totalTicks.equals(ticksPerGroup)) { + noteGroups.push(currentGroup); + currentGroupTotalTicks = new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(0, 1); + currentGroup = nextGroup; + nextTickGroup(); + } + }); + // Adds any remainder notes beam + if (currentGroup.length > 0) { + noteGroups.push(currentGroup); + } + } + function getBeamGroups() { + return noteGroups.filter((group) => { + if (group.length > 1) { + let beamable = true; + group.forEach((note) => { + if (note.getIntrinsicTicks() >= _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.durationToTicks('4')) { + beamable = false; + } + }); + return beamable; + } + return false; + }); + } + // Splits up groups by Rest + function sanitizeGroups() { + const sanitizedGroups = []; + noteGroups.forEach((group) => { + let tempGroup = []; + group.forEach((note, index, group) => { + const isFirstOrLast = index === 0 || index === group.length - 1; + const prevNote = group[index - 1]; + const breaksOnEachRest = !config.beam_rests && note.isRest(); + const breaksOnFirstOrLastRest = config.beam_rests && config.beam_middle_only && note.isRest() && isFirstOrLast; + let breakOnStemChange = false; + if (config.maintain_stem_directions && prevNote && !note.isRest() && !prevNote.isRest()) { + const prevDirection = prevNote.getStemDirection(); + const currentDirection = note.getStemDirection(); + breakOnStemChange = currentDirection !== prevDirection; + } + const isUnbeamableDuration = parseInt(note.getDuration(), 10) < 8; + // Determine if the group should be broken at this note + const shouldBreak = breaksOnEachRest || breaksOnFirstOrLastRest || breakOnStemChange || isUnbeamableDuration; + if (shouldBreak) { + // Add current group + if (tempGroup.length > 0) { + sanitizedGroups.push(tempGroup); + } + // Start a new group. Include the current note if the group + // was broken up by stem direction, as that note needs to start + // the next group of notes + tempGroup = breakOnStemChange ? [note] : []; + } + else { + // Add note to group + tempGroup.push(note); + } + }); + // If there is a remaining group, add it as well + if (tempGroup.length > 0) { + sanitizedGroups.push(tempGroup); + } + }); + noteGroups = sanitizedGroups; + } + function formatStems() { + noteGroups.forEach((group) => { + let stemDirection; + if (config.maintain_stem_directions) { + const note = findFirstNote(group); + stemDirection = note ? note.getStemDirection() : _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP; + } + else { + if (config.stem_direction) { + stemDirection = config.stem_direction; + } + else { + stemDirection = calculateStemDirection(group); + } + } + applyStemDirection(group, stemDirection); + }); + } + function findFirstNote(group) { + for (let i = 0; i < group.length; i++) { + const note = group[i]; + if (!note.isRest()) { + return note; + } + } + return false; + } + function applyStemDirection(group, direction) { + group.forEach((note) => { + note.setStemDirection(direction); + }); + } + // Get all of the tuplets in all of the note groups + function getTuplets() { + const uniqueTuplets = []; + // Go through all of the note groups and inspect for tuplets + noteGroups.forEach((group) => { + let tuplet; + group.forEach((note) => { + const noteTuplet = note.getTuplet(); + if (noteTuplet && tuplet !== noteTuplet) { + tuplet = noteTuplet; + uniqueTuplets.push(tuplet); + } + }); + }); + return uniqueTuplets; + } + // Using closures to store the variables throughout the various functions + // IMO Keeps it this process lot cleaner - but not super consistent with + // the rest of the API's style - Silverwolf90 (Cyril) + createGroups(); + sanitizeGroups(); + formatStems(); + // Get the notes to be beamed + const beamedNoteGroups = getBeamGroups(); + // Get the tuplets in order to format them accurately + const allTuplets = getTuplets(); + // Create a Vex.Flow.Beam from each group of notes to be beamed + const beams = []; + beamedNoteGroups.forEach((group) => { + const beam = new Beam(group); + if (config.show_stemlets) { + beam.render_options.show_stemlets = true; + } + if (config.secondary_breaks) { + beam.render_options.secondary_break_ticks = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.durationToTicks(config.secondary_breaks); + } + if (config.flat_beams === true) { + beam.render_options.flat_beams = true; + beam.render_options.flat_beam_offset = config.flat_beam_offset; + } + beams.push(beam); + }); + // Reformat tuplets + allTuplets.forEach((tuplet) => { + // Set the tuplet location based on the stem direction + const direction = tuplet.notes[0].stem_direction === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN ? _tuplet__WEBPACK_IMPORTED_MODULE_4__.TupletLocation.BOTTOM : _tuplet__WEBPACK_IMPORTED_MODULE_4__.TupletLocation.TOP; + tuplet.setTupletLocation(direction); + // If any of the notes in the tuplet are not beamed, draw a bracket. + let bracketed = false; + for (let i = 0; i < tuplet.notes.length; i++) { + const note = tuplet.notes[i]; + if (!note.hasBeam()) { + bracketed = true; + break; + } + } + tuplet.setBracketed(bracketed); + }); + return beams; + } + /** Get the notes in this beam. */ + getNotes() { + return this.notes; + } + /** Get the max number of beams in the set of notes. */ + getBeamCount() { + const beamCounts = this.notes.map((note) => note.getGlyph().beam_count); + const maxBeamCount = beamCounts.reduce((max, beamCount) => (beamCount > max ? beamCount : max)); + return maxBeamCount; + } + /** Set which note `indices` to break the secondary beam at. */ + breakSecondaryAt(indices) { + this.break_on_indices = indices; + return this; + } + /** + * Forces the direction of a partial beam (a secondary-level beam that exists + * on one note only of the beam group). This is useful in rhythms such as 6/8 + * eighth-sixteenth-eighth-sixteenth, where the direction of the beam on the + * first sixteenth note can help imply whether the rhythm is to be felt as + * three groups of eighth notes (typical) or as two groups of three-sixteenths + * (less common): + * ``` + * ┌───┬──┬──┐ ┌──┬──┬──┐ + * │ ├─ │ ─┤ vs │ ─┤ │ ─┤ + * │ │ │ │ │ │ │ │ + * ``` + */ + setPartialBeamSideAt(noteIndex, side) { + this.forcedPartialDirections[noteIndex] = side; + return this; + } + /** + * Restore the default direction of a partial beam (a secondary-level beam + * that does not connect to any other notes). + */ + unsetPartialBeamSideAt(noteIndex) { + delete this.forcedPartialDirections[noteIndex]; + return this; + } + /** Return the y coordinate for linear function. */ + getSlopeY(x, first_x_px, first_y_px, slope) { + return first_y_px + (x - first_x_px) * slope; + } + /** Calculate the best possible slope for the provided notes. */ + calculateSlope() { + const { notes, stem_direction: stemDirection, render_options: { max_slope, min_slope, slope_iterations, slope_cost }, } = this; + const firstNote = notes[0]; + const initialSlope = getStemSlope(firstNote, notes[notes.length - 1]); + const increment = (max_slope - min_slope) / slope_iterations; + let minCost = Number.MAX_VALUE; + let bestSlope = 0; + let yShift = 0; + // iterate through slope values to find best weighted fit + for (let slope = min_slope; slope <= max_slope; slope += increment) { + let totalStemExtension = 0; + let yShiftTemp = 0; + // iterate through notes, calculating y shift and stem extension + for (let i = 1; i < notes.length; ++i) { + const note = notes[i]; + if (note.hasStem() || note.isRest()) { + const adjustedStemTipY = this.getSlopeY(note.getStemX(), firstNote.getStemX(), firstNote.getStemExtents().topY, slope) + yShiftTemp; + const stemTipY = note.getStemExtents().topY; + // beam needs to be shifted up to accommodate note + if (stemTipY * stemDirection < adjustedStemTipY * stemDirection) { + const diff = Math.abs(stemTipY - adjustedStemTipY); + yShiftTemp += diff * -stemDirection; + totalStemExtension += diff * i; + } + else { + // beam overshoots note, account for the difference + totalStemExtension += (stemTipY - adjustedStemTipY) * stemDirection; + } + } + } + // most engraving books suggest aiming for a slope about half the angle of the + // difference between the first and last notes' stem length; + const idealSlope = initialSlope / 2; + const distanceFromIdeal = Math.abs(idealSlope - slope); + // This tries to align most beams to something closer to the idealSlope, but + // doesn't go crazy. To disable, set this.render_options.slope_cost = 0 + const cost = slope_cost * distanceFromIdeal + Math.abs(totalStemExtension); + // update state when a more ideal slope is found + if (cost < minCost) { + minCost = cost; + bestSlope = slope; + yShift = yShiftTemp; + } + } + this.slope = bestSlope; + this.y_shift = yShift; + } + /** Calculate a slope and y-shift for flat beams. */ + calculateFlatSlope() { + const { notes, stem_direction, render_options: { beam_width, min_flat_beam_offset, flat_beam_offset }, } = this; + // If a flat beam offset has not yet been supplied or calculated, + // generate one based on the notes in this particular note group + let total = 0; + let extremeY = 0; // Store the highest or lowest note here + let extremeBeamCount = 0; // The beam count of the extreme note + let currentExtreme = 0; + for (let i = 0; i < notes.length; i++) { + // Total up all of the offsets so we can average them out later + const note = notes[i]; + const stemTipY = note.getStemExtents().topY; + total += stemTipY; + // Store the highest (stems-up) or lowest (stems-down) note so the + // offset can be adjusted in case the average isn't enough + if (stem_direction === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN && currentExtreme < stemTipY) { + currentExtreme = stemTipY; + extremeY = Math.max(...note.getYs()); + extremeBeamCount = note.getBeamCount(); + } + else if (stem_direction === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP && (currentExtreme === 0 || currentExtreme > stemTipY)) { + currentExtreme = stemTipY; + extremeY = Math.min(...note.getYs()); + extremeBeamCount = note.getBeamCount(); + } + } + // Average the offsets to try and come up with a reasonable one that + // works for all of the notes in the beam group. + let offset = total / notes.length; + // In case the average isn't long enough, add or subtract some more + // based on the highest or lowest note (again, based on the stem + // direction). This also takes into account the added height due to + // the width of the beams. + const beamWidth = beam_width * 1.5; + const extremeTest = min_flat_beam_offset + extremeBeamCount * beamWidth; + const newOffset = extremeY + extremeTest * -stem_direction; + if (stem_direction === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN && offset < newOffset) { + offset = extremeY + extremeTest; + } + else if (stem_direction === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP && offset > newOffset) { + offset = extremeY - extremeTest; + } + if (!flat_beam_offset) { + // Set the offset for the group based on the calculations above. + this.render_options.flat_beam_offset = offset; + } + else if (stem_direction === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN && offset > flat_beam_offset) { + this.render_options.flat_beam_offset = offset; + } + else if (stem_direction === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP && offset < flat_beam_offset) { + this.render_options.flat_beam_offset = offset; + } + // for flat beams, the slope and y_shift are simply 0 + this.slope = 0; + this.y_shift = 0; + } + /** Return the Beam y offset. */ + getBeamYToDraw() { + const firstNote = this.notes[0]; + const firstStemTipY = firstNote.getStemExtents().topY; + let beamY = firstStemTipY; + // For flat beams, set the first and last Y to the offset, rather than + // using the note's stem extents. + if (this.render_options.flat_beams && this.render_options.flat_beam_offset) { + beamY = this.render_options.flat_beam_offset; + } + return beamY; + } + /** + * Create new stems for the notes in the beam, so that each stem + * extends into the beams. + */ + applyStemExtensions() { + const { notes, slope, y_shift, stem_direction, beam_count, render_options: { show_stemlets, stemlet_extension, beam_width }, } = this; + const firstNote = notes[0]; + const firstStemTipY = this.getBeamYToDraw(); + const firstStemX = firstNote.getStemX(); + for (let i = 0; i < notes.length; ++i) { + const note = notes[i]; + const stem = note.getStem(); + if (stem) { + const stemX = note.getStemX(); + const { topY: stemTipY } = note.getStemExtents(); + const beamedStemTipY = this.getSlopeY(stemX, firstStemX, firstStemTipY, slope) + y_shift; + const preBeamExtension = stem.getExtension(); + const beamExtension = stem_direction === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP ? stemTipY - beamedStemTipY : beamedStemTipY - stemTipY; + stem.setExtension(preBeamExtension + beamExtension); + stem.adjustHeightForBeam(); + if (note.isRest() && show_stemlets) { + const beamWidth = beam_width; + const totalBeamWidth = (beam_count - 1) * beamWidth * 1.5 + beamWidth; + stem.setVisibility(true).setStemlet(true, totalBeamWidth + stemlet_extension); + } + } + } + } + /** Return upper level beam direction. */ + lookupBeamDirection(duration, prev_tick, tick, next_tick, noteIndex) { + if (duration === '4') { + return BEAM_LEFT; + } + const forcedBeamDirection = this.forcedPartialDirections[noteIndex]; + if (forcedBeamDirection) + return forcedBeamDirection; + const lookup_duration = `${_tables__WEBPACK_IMPORTED_MODULE_3__.Tables.durationToNumber(duration) / 2}`; + const prev_note_gets_beam = prev_tick < _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.durationToTicks(lookup_duration); + const next_note_gets_beam = next_tick < _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.durationToTicks(lookup_duration); + const note_gets_beam = tick < _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.durationToTicks(lookup_duration); + if (prev_note_gets_beam && next_note_gets_beam && note_gets_beam) { + return BEAM_BOTH; + } + else if (prev_note_gets_beam && !next_note_gets_beam && note_gets_beam) { + return BEAM_LEFT; + } + else if (!prev_note_gets_beam && next_note_gets_beam && note_gets_beam) { + return BEAM_RIGHT; + } + return this.lookupBeamDirection(lookup_duration, prev_tick, tick, next_tick, noteIndex); + } + /** Get the x coordinates for the beam lines of specific `duration`. */ + getBeamLines(duration) { + const tick_of_duration = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.durationToTicks(duration); + let beam_started = false; + const beam_lines = []; + let current_beam = undefined; + const partial_beam_length = this.render_options.partial_beam_length; + let previous_should_break = false; + let tick_tally = 0; + for (let i = 0; i < this.notes.length; ++i) { + const note = this.notes[i]; + // See if we need to break secondary beams on this note. + const ticks = note.getTicks().value(); + tick_tally += ticks; + let should_break = false; + // 8th note beams are always drawn. + if (parseInt(duration, 10) >= 8) { + // First, check to see if any indices were set up through breakSecondaryAt() + should_break = this.break_on_indices.indexOf(i) !== -1; + // If the secondary breaks were auto-configured in the render options, + // handle that as well. + if (this.render_options.secondary_break_ticks && tick_tally >= this.render_options.secondary_break_ticks) { + tick_tally = 0; + should_break = true; + } + } + const note_gets_beam = note.getIntrinsicTicks() < tick_of_duration; + const stem_x = note.getStemX() - _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.WIDTH / 2; + // Check to see if the next note in the group will get a beam at this + // level. This will help to inform the partial beam logic below. + const prev_note = this.notes[i - 1]; + const next_note = this.notes[i + 1]; + const next_note_gets_beam = next_note && next_note.getIntrinsicTicks() < tick_of_duration; + const prev_note_gets_beam = prev_note && prev_note.getIntrinsicTicks() < tick_of_duration; + const beam_alone = prev_note && next_note && note_gets_beam && !prev_note_gets_beam && !next_note_gets_beam; + // const beam_alone = note_gets_beam && !prev_note_gets_beam && !next_note_gets_beam; + if (note_gets_beam) { + // This note gets a beam at the current level + if (beam_started) { + // We're currently in the middle of a beam. Just continue it on to + // the stem X of the current note. + current_beam = beam_lines[beam_lines.length - 1]; + current_beam.end = stem_x; + // If a secondary beam break is set up, end the beam right now. + if (should_break) { + beam_started = false; + if (next_note && !next_note_gets_beam && current_beam.end === undefined) { + // This note gets a beam,.but the next one does not. This means + // we need a partial pointing right. + current_beam.end = current_beam.start - partial_beam_length; + } + } + } + else { + // No beam started yet. Start a new one. + current_beam = { start: stem_x, end: undefined }; + beam_started = true; + if (beam_alone) { + // previous and next beam exists and does not get a beam but current gets it. + const prev_tick = prev_note.getIntrinsicTicks(); + const next_tick = next_note.getIntrinsicTicks(); + const tick = note.getIntrinsicTicks(); + const beam_direction = this.lookupBeamDirection(duration, prev_tick, tick, next_tick, i); + if ([BEAM_LEFT, BEAM_BOTH].includes(beam_direction)) { + current_beam.end = current_beam.start - partial_beam_length; + } + else { + current_beam.end = current_beam.start + partial_beam_length; + } + } + else if (!next_note_gets_beam) { + // The next note doesn't get a beam. Draw a partial. + if ((previous_should_break || i === 0) && next_note) { + // This is the first note (but not the last one), or it is + // following a secondary break. Draw a partial to the right. + current_beam.end = current_beam.start + partial_beam_length; + } + else { + // By default, draw a partial to the left. + current_beam.end = current_beam.start - partial_beam_length; + } + } + else if (should_break) { + // This note should have a secondary break after it. Even though + // we just started a beam, it needs to end immediately. + current_beam.end = current_beam.start - partial_beam_length; + beam_started = false; + } + beam_lines.push(current_beam); + } + } + else { + // The current note does not get a beam. + beam_started = false; + } + // Store the secondary break flag to inform the partial beam logic in + // the next iteration of the loop. + previous_should_break = should_break; + } + // Add a partial beam pointing left if this is the last note in the group + const last_beam = beam_lines[beam_lines.length - 1]; + if (last_beam && last_beam.end === undefined) { + last_beam.end = last_beam.start - partial_beam_length; + } + return beam_lines; + } + /** Render the stems for each note. */ + drawStems(ctx) { + this.notes.forEach((note) => { + const stem = note.getStem(); + if (stem) { + const stem_x = note.getStemX(); + stem.setNoteHeadXBounds(stem_x, stem_x); + stem.setContext(ctx).draw(); + } + }, this); + } + // Render the beam lines + drawBeamLines(ctx) { + const valid_beam_durations = ['4', '8', '16', '32', '64']; + const firstNote = this.notes[0]; + let beamY = this.getBeamYToDraw(); + const firstStemX = firstNote.getStemX(); + const beamThickness = this.render_options.beam_width * this.stem_direction; + // Draw the beams. + for (let i = 0; i < valid_beam_durations.length; ++i) { + const duration = valid_beam_durations[i]; + const beamLines = this.getBeamLines(duration); + for (let j = 0; j < beamLines.length; ++j) { + const beam_line = beamLines[j]; + const startBeamX = beam_line.start; + const startBeamY = this.getSlopeY(startBeamX, firstStemX, beamY, this.slope); + const lastBeamX = beam_line.end; + if (lastBeamX) { + const lastBeamY = this.getSlopeY(lastBeamX, firstStemX, beamY, this.slope); + ctx.openGroup('beam', this.getAttribute('id')); + ctx.beginPath(); + ctx.moveTo(startBeamX, startBeamY); + ctx.lineTo(startBeamX, startBeamY + beamThickness); + ctx.lineTo(lastBeamX + 1, lastBeamY + beamThickness); + ctx.lineTo(lastBeamX + 1, lastBeamY); + ctx.closePath(); + ctx.fill(); + ctx.closeGroup(); + } + else { + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('NoLastBeamX', 'lastBeamX undefined.'); + } + } + beamY += beamThickness * 1.5; + } + } + /** Pre-format the beam. */ + preFormat() { + return this; + } + /** + * Post-format the beam. This can only be called after + * the notes in the beam have both `x` and `y` values. ie: they've + * been formatted and have staves. + */ + postFormat() { + if (this.postFormatted) + return; + // Calculate a smart slope if we're not forcing the beams to be flat. + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isTabNote)(this.notes[0]) || this.render_options.flat_beams) { + this.calculateFlatSlope(); + } + else { + this.calculateSlope(); + } + this.applyStemExtensions(); + this.postFormatted = true; + } + /** Render the beam to the canvas context */ + draw() { + const ctx = this.checkContext(); + this.setRendered(); + if (this.unbeamable) + return; + if (!this.postFormatted) { + this.postFormat(); + } + this.drawStems(ctx); + this.applyStyle(); + this.drawBeamLines(ctx); + this.restoreStyle(); + } +} + + +/***/ }), + +/***/ "./src/bend.ts": +/*!*********************!*\ + !*** ./src/bend.ts ***! + \*********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Bend": () => (/* binding */ Bend) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _textformatter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./textformatter */ "./src/textformatter.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + +/** Bend implements tablature bends. */ +class Bend extends _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier { + /** + * Example of a phrase: + * ``` + * [{ + * type: UP, + * text: "whole" + * width: 8; + * }, + * { + * type: DOWN, + * text: "whole" + * width: 8; + * }, + * { + * type: UP, + * text: "half" + * width: 8; + * }, + * { + * type: UP, + * text: "whole" + * width: 8; + * }, + * { + * type: DOWN, + * text: "1 1/2" + * width: 8; + * }] + * ``` + * @param text text for bend ("Full", "Half", etc.) (DEPRECATED) + * @param release if true, render a release. (DEPRECATED) + * @param phrase if set, ignore "text" and "release", and use the more sophisticated phrase specified + */ + constructor(text, release = false, phrase) { + super(); + this.text = text; + this.x_shift = 0; + this.release = release; + this.tap = ''; + this.resetFont(); + this.render_options = { + line_width: 1.5, + line_style: '#777777', + bend_width: 8, + release_width: 8, + }; + if (phrase) { + this.phrase = phrase; + } + else { + // Backward compatibility + this.phrase = [{ type: Bend.UP, text: this.text }]; + if (this.release) + this.phrase.push({ type: Bend.DOWN, text: '' }); + } + this.updateWidth(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.Bend; + } + static get UP() { + return 0; + } + static get DOWN() { + return 1; + } + // Arrange bends in `ModifierContext` + static format(bends, state) { + if (!bends || bends.length === 0) + return false; + let last_width = 0; + // Format Bends + for (let i = 0; i < bends.length; ++i) { + const bend = bends[i]; + const note = bend.checkAttachedNote(); + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_3__.isTabNote)(note)) { + const stringPos = note.leastString() - 1; + if (state.top_text_line < stringPos) { + state.top_text_line = stringPos; + } + } + bend.setXShift(last_width); + last_width = bend.getWidth(); + bend.setTextLine(state.top_text_line); + } + state.right_shift += last_width; + state.top_text_line += 1; + return true; + } + /** Set horizontal shift in pixels. */ + setXShift(value) { + this.x_shift = value; + this.updateWidth(); + return this; + } + setTap(value) { + this.tap = value; + return this; + } + /** Get text provided in the constructor. */ + getText() { + return this.text; + } + getTextHeight() { + const textFormatter = _textformatter__WEBPACK_IMPORTED_MODULE_2__.TextFormatter.create(this.textFont); + return textFormatter.maxHeight; + } + /** Recalculate width. */ + updateWidth() { + const textFormatter = _textformatter__WEBPACK_IMPORTED_MODULE_2__.TextFormatter.create(this.textFont); + const measureText = (text) => { + return textFormatter.getWidthForTextInPx(text); + }; + let totalWidth = 0; + for (let i = 0; i < this.phrase.length; ++i) { + const bend = this.phrase[i]; + if (bend.width !== undefined) { + totalWidth += bend.width; + } + else { + const additional_width = bend.type === Bend.UP ? this.render_options.bend_width : this.render_options.release_width; + bend.width = Math.max(additional_width, measureText(bend.text)) + 3; + bend.draw_width = bend.width / 2; + totalWidth += bend.width; + } + } + this.setWidth(totalWidth + this.x_shift); + return this; + } + /** Draw the bend on the rendering context. */ + draw() { + var _a; + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const start = note.getModifierStartXY(_modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.RIGHT, this.index); + start.x += 3; + start.y += 0.5; + const x_shift = this.x_shift; + const stave = note.checkStave(); + const spacing = stave.getSpacingBetweenLines(); + const lowestY = note.getYs().reduce((a, b) => (a < b ? a : b)); + // this.text_line is relative to top string in the group. + const bend_height = start.y - ((this.text_line + 1) * spacing + start.y - lowestY) + 3; + const annotation_y = start.y - ((this.text_line + 1) * spacing + start.y - lowestY) - 1; + const renderBend = (x, y, width, height) => { + const cp_x = x + width; + const cp_y = y; + ctx.save(); + ctx.beginPath(); + ctx.setLineWidth(this.render_options.line_width); + ctx.setStrokeStyle(this.render_options.line_style); + ctx.setFillStyle(this.render_options.line_style); + ctx.moveTo(x, y); + ctx.quadraticCurveTo(cp_x, cp_y, x + width, height); + ctx.stroke(); + ctx.restore(); + }; + const renderRelease = (x, y, width, height) => { + ctx.save(); + ctx.beginPath(); + ctx.setLineWidth(this.render_options.line_width); + ctx.setStrokeStyle(this.render_options.line_style); + ctx.setFillStyle(this.render_options.line_style); + ctx.moveTo(x, height); + ctx.quadraticCurveTo(x + width, height, x + width, y); + ctx.stroke(); + ctx.restore(); + }; + const renderArrowHead = (x, y, direction) => { + const width = 4; + const yBase = y + width * direction; + ctx.beginPath(); + ctx.moveTo(x, y); // tip of the arrow + ctx.lineTo(x - width, yBase); + ctx.lineTo(x + width, yBase); + ctx.closePath(); + ctx.fill(); + }; + const renderText = (x, text) => { + ctx.save(); + ctx.setFont(this.textFont); + const render_x = x - ctx.measureText(text).width / 2; + ctx.fillText(text, render_x, annotation_y); + ctx.restore(); + }; + let last_bend = undefined; + let last_bend_draw_width = 0; + let last_drawn_width = 0; + if ((_a = this.tap) === null || _a === void 0 ? void 0 : _a.length) { + const tapStart = note.getModifierStartXY(_modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.CENTER, this.index); + renderText(tapStart.x, this.tap); + } + for (let i = 0; i < this.phrase.length; ++i) { + const bend = this.phrase[i]; + if (!bend.draw_width) + bend.draw_width = 0; + if (i === 0) + bend.draw_width += x_shift; + last_drawn_width = bend.draw_width + last_bend_draw_width - (i === 1 ? x_shift : 0); + if (bend.type === Bend.UP) { + if (last_bend && last_bend.type === Bend.UP) { + renderArrowHead(start.x, bend_height, +1); + } + renderBend(start.x, start.y, last_drawn_width, bend_height); + } + if (bend.type === Bend.DOWN) { + if (last_bend && last_bend.type === Bend.UP) { + renderRelease(start.x, start.y, last_drawn_width, bend_height); + } + if (last_bend && last_bend.type === Bend.DOWN) { + renderArrowHead(start.x, start.y, -1); + renderRelease(start.x, start.y, last_drawn_width, bend_height); + } + if (!last_bend) { + last_drawn_width = bend.draw_width; + renderRelease(start.x, start.y, last_drawn_width, bend_height); + } + } + renderText(start.x + last_drawn_width, bend.text); + last_bend = bend; + last_bend_draw_width = bend.draw_width; + last_bend.x = start.x; + start.x += last_drawn_width; + } + if (!last_bend || last_bend.x == undefined) { + throw new _util__WEBPACK_IMPORTED_MODULE_4__.RuntimeError('NoLastBendForBend', 'Internal error.'); + } + // Final arrowhead and text + if (last_bend.type === Bend.UP) { + renderArrowHead(last_bend.x + last_drawn_width, bend_height, +1); + } + else if (last_bend.type === Bend.DOWN) { + renderArrowHead(last_bend.x + last_drawn_width, start.y, -1); + } + } +} +/** Default text font. */ +Bend.TEXT_FONT = Object.assign({}, _element__WEBPACK_IMPORTED_MODULE_0__.Element.TEXT_FONT); + + +/***/ }), + +/***/ "./src/boundingbox.ts": +/*!****************************!*\ + !*** ./src/boundingbox.ts ***! + \****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "BoundingBox": () => (/* binding */ BoundingBox) +/* harmony export */ }); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +class BoundingBox { + constructor(x, y, w, h) { + this.x = x; + this.y = y; + this.w = w; + this.h = h; + } + /** + * Create a new copy. + */ + static copy(that) { + return new BoundingBox(that.x, that.y, that.w, that.h); + } + /** Get x position. */ + getX() { + return this.x; + } + /** Get y position. */ + getY() { + return this.y; + } + /** Get width. */ + getW() { + return this.w; + } + /** Get height. */ + getH() { + return this.h; + } + /** Set x position. */ + setX(x) { + this.x = x; + return this; + } + /** Set y position. */ + setY(y) { + this.y = y; + return this; + } + /** Set width. */ + setW(w) { + this.w = w; + return this; + } + /** Set height. */ + setH(h) { + this.h = h; + return this; + } + /** Move to position. */ + move(x, y) { + this.x += x; + this.y += y; + return this; + } + /** Clone. */ + clone() { + return BoundingBox.copy(this); + } + /** + * Merge my box with given box. Creates a bigger bounding box unless + * the given box is contained in this one. + */ + mergeWith(boundingBox) { + const that = boundingBox; + const new_x = this.x < that.x ? this.x : that.x; + const new_y = this.y < that.y ? this.y : that.y; + const new_w = Math.max(this.x + this.w, that.x + that.w) - new_x; + const new_h = Math.max(this.y + this.h, that.y + that.h) - new_y; + this.x = new_x; + this.y = new_y; + this.w = new_w; + this.h = new_h; + return this; + } +} + + +/***/ }), + +/***/ "./src/boundingboxcomputation.ts": +/*!***************************************!*\ + !*** ./src/boundingboxcomputation.ts ***! + \***************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "BoundingBoxComputation": () => (/* binding */ BoundingBoxComputation) +/* harmony export */ }); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +/** + * BoundingBoxComputation computes metrics for a bounding box by continuously + * taking canvas path commands. + * + * Warning: This class is merely a crutch to get bounding box information without + * explicit metadata. This is likely to get deprecated following SMuFL support. + * + * based on: https://github.com/canvg/canvg/blob/master/src/BoundingBox.ts (MIT License) + */ +class BoundingBoxComputation { + constructor() { + this.x1 = Number.NaN; + this.y1 = Number.NaN; + this.x2 = Number.NaN; + this.y2 = Number.NaN; + } + /** Get calculated X1. */ + getX1() { + return this.x1; + } + /** Get calculated Y1. */ + getY1() { + return this.y1; + } + /** Get calculated width. */ + width() { + return this.x2 - this.x1; + } + /** Get calculated height. */ + height() { + return this.y2 - this.y1; + } + /** Add point to BoundingBox. */ + addPoint(x, y) { + if (isNaN(this.x1) || x < this.x1) + this.x1 = x; + if (isNaN(this.x2) || x > this.x2) + this.x2 = x; + if (isNaN(this.y1) || y < this.y1) + this.y1 = y; + if (isNaN(this.y2) || y > this.y2) + this.y2 = y; + } + /** Add X to BoundingBox. */ + addX(x) { + this.addPoint(x, this.y1); + } + /** Add Y to BoundingBox. */ + addY(y) { + this.addPoint(this.x1, y); + } + /** Add quadratic curve to BoundingBox. */ + addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) { + this.addPoint(p0x, p0y); + this.addPoint(p2x, p2y); + const p01x = p1x - p0x; + const p12x = p2x - p1x; + let denom = p01x - p12x; + if (denom != 0) { + const t = p01x / denom; + if (t > 0 && t < 1) { + const it = 1 - t; + this.addX(it * it * p0x + 2 * it * t * p1x + t * t * p2x); + } + } + const p01y = p1y - p0y; + const p12y = p2y - p1y; + denom = p01y - p12y; + if (denom != 0) { + const t = p01y / denom; + if (t > 0 && t < 1) { + const it = 1 - t; + this.addY(it * it * p0y + 2 * it * t * p1y + t * t * p2y); + } + } + } + /** Add bezier curve to BoundingBox. */ + addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) { + // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html + const p0 = [p0x, p0y]; + const p1 = [p1x, p1y]; + const p2 = [p2x, p2y]; + const p3 = [p3x, p3y]; + let i; + this.addPoint(p0[0], p0[1]); + this.addPoint(p3[0], p3[1]); + const f = (t, i) => Math.pow(1 - t, 3) * p0[i] + + 3 * Math.pow(1 - t, 2) * t * p1[i] + + 3 * (1 - t) * Math.pow(t, 2) * p2[i] + + Math.pow(t, 3) * p3[i]; + for (i = 0; i <= 1; i++) { + const b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i]; + const a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i]; + const c = 3 * p1[i] - 3 * p0[i]; + if (a === 0) { + if (b === 0) + continue; + const t = -c / b; + if (0 < t && t < 1) { + if (i === 0) + this.addX(f(t, i)); + if (i === 1) + this.addY(f(t, i)); + } + continue; + } + const b2ac = Math.pow(b, 2) - 4 * c * a; + if (b2ac < 0) + continue; + const t1 = (-b + Math.sqrt(b2ac)) / (2 * a); + if (0 < t1 && t1 < 1) { + if (i === 0) + this.addX(f(t1, i)); + if (i === 1) + this.addY(f(t1, i)); + } + const t2 = (-b - Math.sqrt(b2ac)) / (2 * a); + if (0 < t2 && t2 < 1) { + if (i === 0) + this.addX(f(t2, i)); + if (i === 1) + this.addY(f(t2, i)); + } + } + } +} + + +/***/ }), + +/***/ "./src/canvascontext.ts": +/*!******************************!*\ + !*** ./src/canvascontext.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "CanvasContext": () => (/* binding */ CanvasContext) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _rendercontext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rendercontext */ "./src/rendercontext.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +/* harmony import */ var _web__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./web */ "./src/web.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + +/** + * A rendering context for the Canvas backend. This class serves as a proxy for the + * underlying CanvasRenderingContext2D object, part of the browser's API. + */ +class CanvasContext extends _rendercontext__WEBPACK_IMPORTED_MODULE_1__.RenderContext { + constructor(context) { + super(); + /** Height of one line of text (in pixels). */ + this.textHeight = 0; + this.context2D = context; + if (!context.canvas) { + this.canvas = { + width: CanvasContext.WIDTH, + height: CanvasContext.HEIGHT, + }; + } + else { + this.canvas = context.canvas; + } + } + static get WIDTH() { + return 600; + } + static get HEIGHT() { + return 400; + } + static get CANVAS_BROWSER_SIZE_LIMIT() { + return 32767; // Chrome/Firefox. Could be determined more precisely by npm module canvas-size. + } + /** + * Ensure that width and height do not exceed the browser limit. + * @returns array of [width, height] clamped to the browser limit. + */ + static sanitizeCanvasDims(width, height) { + const limit = this.CANVAS_BROWSER_SIZE_LIMIT; + if (Math.max(width, height) > limit) { + (0,_util__WEBPACK_IMPORTED_MODULE_2__.warn)('Canvas dimensions exceed browser limit. Cropping to ' + limit); + if (width > limit) { + width = limit; + } + if (height > limit) { + height = limit; + } + } + return [width, height]; + } + /** + * Set all pixels to transparent black rgba(0,0,0,0). + */ + clear() { + this.context2D.clearRect(0, 0, this.canvas.width, this.canvas.height); + } + // eslint-disable-next-line + openGroup(cls, id, attrs) { + // Containers not implemented. + } + closeGroup() { + // Containers not implemented. + } + // eslint-disable-next-line + add(child) { + // Containers not implemented. + } + setFillStyle(style) { + this.context2D.fillStyle = style; + return this; + } + /** CanvasContext ignores `setBackgroundFillStyle()`. */ + // eslint-disable-next-line + setBackgroundFillStyle(style) { + // DO NOTHING + return this; + } + setStrokeStyle(style) { + this.context2D.strokeStyle = style; + return this; + } + setShadowColor(color) { + this.context2D.shadowColor = color; + return this; + } + setShadowBlur(blur) { + // CanvasRenderingContext2D does not scale the shadow blur by the current + // transform, so we have to do it manually. We assume uniform scaling + // (though allow for rotation) because the blur can only be scaled + // uniformly anyway. + const t = this.context2D.getTransform(); + const scale = Math.sqrt(t.a * t.a + t.b * t.b + t.c * t.c + t.d * t.d); + this.context2D.shadowBlur = scale * blur; + return this; + } + setLineWidth(width) { + this.context2D.lineWidth = width; + return this; + } + setLineCap(capType) { + this.context2D.lineCap = capType; + return this; + } + setLineDash(dash) { + this.context2D.setLineDash(dash); + return this; + } + scale(x, y) { + this.context2D.scale(x, y); + return this; + } + resize(width, height) { + const canvas = this.context2D.canvas; + const devicePixelRatio = (0,_util__WEBPACK_IMPORTED_MODULE_2__.globalObject)().devicePixelRatio || 1; + // Scale the canvas size by the device pixel ratio clamping to the maximum supported size. + [width, height] = CanvasContext.sanitizeCanvasDims(width * devicePixelRatio, height * devicePixelRatio); + // Divide back down by the pixel ratio and convert to integers. + width = (width / devicePixelRatio) | 0; + height = (height / devicePixelRatio) | 0; + canvas.width = width * devicePixelRatio; + canvas.height = height * devicePixelRatio; + // The canvas could be an instance of either HTMLCanvasElement or an OffscreenCanvas. + // Only HTMLCanvasElement has a style attribute. + if ((0,_web__WEBPACK_IMPORTED_MODULE_3__.isHTMLCanvas)(canvas)) { + canvas.style.width = width + 'px'; + canvas.style.height = height + 'px'; + } + return this.scale(devicePixelRatio, devicePixelRatio); + } + rect(x, y, width, height) { + this.context2D.rect(x, y, width, height); + return this; + } + fillRect(x, y, width, height) { + this.context2D.fillRect(x, y, width, height); + return this; + } + /** + * Set the pixels in a rectangular area to transparent black rgba(0,0,0,0). + */ + clearRect(x, y, width, height) { + this.context2D.clearRect(x, y, width, height); + return this; + } + beginPath() { + this.context2D.beginPath(); + return this; + } + moveTo(x, y) { + this.context2D.moveTo(x, y); + return this; + } + lineTo(x, y) { + this.context2D.lineTo(x, y); + return this; + } + bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) { + this.context2D.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y); + return this; + } + quadraticCurveTo(cpx, cpy, x, y) { + this.context2D.quadraticCurveTo(cpx, cpy, x, y); + return this; + } + arc(x, y, radius, startAngle, endAngle, counterclockwise) { + this.context2D.arc(x, y, radius, startAngle, endAngle, counterclockwise); + return this; + } + fill() { + this.context2D.fill(); + return this; + } + stroke() { + this.context2D.stroke(); + return this; + } + closePath() { + this.context2D.closePath(); + return this; + } + measureText(text) { + const metrics = this.context2D.measureText(text); + let y = 0; + let height = 0; + if (metrics.fontBoundingBoxAscent) { + y = -metrics.fontBoundingBoxAscent; + height = metrics.fontBoundingBoxDescent + metrics.fontBoundingBoxAscent; + } + else { + y = -metrics.actualBoundingBoxAscent; + height = metrics.actualBoundingBoxDescent + metrics.actualBoundingBoxAscent; + } + // Return x, y, width & height in the same manner as svg getBBox + return { + x: 0, + y: y, + width: metrics.width, + height: height, + }; + } + fillText(text, x, y) { + this.context2D.fillText(text, x, y); + return this; + } + save() { + this.context2D.save(); + return this; + } + restore() { + this.context2D.restore(); + return this; + } + set fillStyle(style) { + this.context2D.fillStyle = style; + } + get fillStyle() { + return this.context2D.fillStyle; + } + set strokeStyle(style) { + this.context2D.strokeStyle = style; + } + get strokeStyle() { + return this.context2D.strokeStyle; + } + /** + * @param f is 1) a `FontInfo` object or + * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or + * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided). + * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt'). + * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900). + * @param style is a string (e.g., 'italic', 'normal'). + */ + setFont(f, size, weight, style) { + const fontInfo = _font__WEBPACK_IMPORTED_MODULE_0__.Font.validate(f, size, weight, style); + this.context2D.font = _font__WEBPACK_IMPORTED_MODULE_0__.Font.toCSSString(fontInfo); + this.textHeight = _font__WEBPACK_IMPORTED_MODULE_0__.Font.convertSizeToPixelValue(fontInfo.size); + return this; + } + /** Return a string of the form `'italic bold 15pt Arial'` */ + getFont() { + return this.context2D.font; + } +} + + +/***/ }), + +/***/ "./src/chordsymbol.ts": +/*!****************************!*\ + !*** ./src/chordsymbol.ts ***! + \****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "ChordSymbolHorizontalJustify": () => (/* binding */ ChordSymbolHorizontalJustify), +/* harmony export */ "ChordSymbolVerticalJustify": () => (/* binding */ ChordSymbolVerticalJustify), +/* harmony export */ "SymbolTypes": () => (/* binding */ SymbolTypes), +/* harmony export */ "SymbolModifiers": () => (/* binding */ SymbolModifiers), +/* harmony export */ "ChordSymbol": () => (/* binding */ ChordSymbol) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _textformatter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./textformatter */ "./src/textformatter.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// Author: Aaron (@AaronDavidNewman) +// +// This implements chord symbols above/below a chord. +// Chord symbols are modifiers that can be attached to notes. +// They can contain multiple 'blocks' which represent text or +// glyphs with various positioning options. +// +// See `tests/chordsymbol_tests.ts` for usage examples. + + + + + + + +// To enable logging for this class. Set `Vex.Flow.ChordSymbol.DEBUG` to `true`. +// eslint-disable-next-line +function L(...args) { + if (ChordSymbol.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_6__.log)('Vex.Flow.ChordSymbol', args); +} +var ChordSymbolHorizontalJustify; +(function (ChordSymbolHorizontalJustify) { + ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify["LEFT"] = 1] = "LEFT"; + ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify["CENTER"] = 2] = "CENTER"; + ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify["RIGHT"] = 3] = "RIGHT"; + ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify["CENTER_STEM"] = 4] = "CENTER_STEM"; +})(ChordSymbolHorizontalJustify || (ChordSymbolHorizontalJustify = {})); +var ChordSymbolVerticalJustify; +(function (ChordSymbolVerticalJustify) { + ChordSymbolVerticalJustify[ChordSymbolVerticalJustify["TOP"] = 1] = "TOP"; + ChordSymbolVerticalJustify[ChordSymbolVerticalJustify["BOTTOM"] = 2] = "BOTTOM"; +})(ChordSymbolVerticalJustify || (ChordSymbolVerticalJustify = {})); +var SymbolTypes; +(function (SymbolTypes) { + SymbolTypes[SymbolTypes["GLYPH"] = 1] = "GLYPH"; + SymbolTypes[SymbolTypes["TEXT"] = 2] = "TEXT"; + SymbolTypes[SymbolTypes["LINE"] = 3] = "LINE"; +})(SymbolTypes || (SymbolTypes = {})); +var SymbolModifiers; +(function (SymbolModifiers) { + SymbolModifiers[SymbolModifiers["NONE"] = 1] = "NONE"; + SymbolModifiers[SymbolModifiers["SUBSCRIPT"] = 2] = "SUBSCRIPT"; + SymbolModifiers[SymbolModifiers["SUPERSCRIPT"] = 3] = "SUPERSCRIPT"; +})(SymbolModifiers || (SymbolModifiers = {})); +/** + * ChordSymbol is a modifier that creates a chord symbol above/below a chord. + * As a modifier, it is attached to an existing note. + */ +class ChordSymbol extends _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier { + constructor() { + super(); + this.symbolBlocks = []; + this.horizontal = ChordSymbolHorizontalJustify.LEFT; + this.vertical = ChordSymbolVerticalJustify.TOP; + this.useKerning = true; + this.reportWidth = true; + this.resetFont(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_5__.Category.ChordSymbol; + } + static get superSubRatio() { + return ChordSymbol.metrics.global.superSubRatio; + } + /** Currently unused: Globally turn off text formatting, if the built-in formatting does not work for your font. */ + static set NO_TEXT_FORMAT(val) { + ChordSymbol.noFormat = val; + } + static get NO_TEXT_FORMAT() { + return ChordSymbol.noFormat; + } + // eslint-disable-next-line + static getMetricForGlyph(glyphCode) { + if (ChordSymbol.metrics[glyphCode]) { + return ChordSymbol.metrics[glyphCode]; + } + return undefined; + } + static get engravingFontResolution() { + return _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().getResolution(); + } + static get spacingBetweenBlocks() { + return ChordSymbol.metrics.global.spacing / ChordSymbol.engravingFontResolution; + } + static getWidthForGlyph(glyph) { + const metric = ChordSymbol.getMetricForGlyph(glyph.code); + if (!metric) { + return 0.65; // probably should do something here. + } + return metric.advanceWidth / ChordSymbol.engravingFontResolution; + } + static getYShiftForGlyph(glyph) { + const metric = ChordSymbol.getMetricForGlyph(glyph.code); + if (!metric) { + return 0; + } + return metric.yOffset / ChordSymbol.engravingFontResolution; + } + static getXShiftForGlyph(glyph) { + const metric = ChordSymbol.getMetricForGlyph(glyph.code); + if (!metric) { + return 0; + } + return (-1 * metric.leftSideBearing) / ChordSymbol.engravingFontResolution; + } + static get superscriptOffset() { + return ChordSymbol.metrics.global.superscriptOffset / ChordSymbol.engravingFontResolution; + } + static get subscriptOffset() { + return ChordSymbol.metrics.global.subscriptOffset / ChordSymbol.engravingFontResolution; + } + static get kerningOffset() { + return ChordSymbol.metrics.global.kerningOffset / ChordSymbol.engravingFontResolution; + } + // eslint-disable-next-line + static get metrics() { + return _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().getMetrics().glyphs.chordSymbol; + } + static get lowerKerningText() { + // For example, see: `bravura_metrics.ts` + // BravuraMetrics.glyphs.chordSymbol.global.lowerKerningText, which returns an array of letters. + // ['D', 'F', 'P', 'T', 'V', 'Y'] + return ChordSymbol.metrics.global.lowerKerningText; + } + static get upperKerningText() { + return ChordSymbol.metrics.global.upperKerningText; + } + static isSuperscript(block) { + return block.symbolModifier !== undefined && block.symbolModifier === SymbolModifiers.SUPERSCRIPT; + } + static isSubscript(block) { + return block.symbolModifier !== undefined && block.symbolModifier === SymbolModifiers.SUBSCRIPT; + } + static get minPadding() { + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont(); + return musicFont.lookupMetric('glyphs.noteHead.minPadding'); + } + /** + * Estimate the width of the whole chord symbol, based on the sum of the widths of the individual blocks. + * Estimate how many lines above/below the staff we need. + */ + static format(symbols, state) { + var _a; + if (!symbols || symbols.length === 0) + return false; + let width = 0; + let nonSuperWidth = 0; + let leftWidth = 0; + let rightWidth = 0; + let maxLeftGlyphWidth = 0; + let maxRightGlyphWidth = 0; + for (const symbol of symbols) { + const fontSize = _font__WEBPACK_IMPORTED_MODULE_0__.Font.convertSizeToPointValue((_a = symbol.textFont) === null || _a === void 0 ? void 0 : _a.size); + const fontAdj = _font__WEBPACK_IMPORTED_MODULE_0__.Font.scaleSize(fontSize, 0.05); + const glyphAdj = fontAdj * 2; + const note = symbol.checkAttachedNote(); + let symbolWidth = 0; + let lineSpaces = 1; + let vAlign = false; + for (let j = 0; j < symbol.symbolBlocks.length; ++j) { + const block = symbol.symbolBlocks[j]; + const sup = ChordSymbol.isSuperscript(block); + const sub = ChordSymbol.isSubscript(block); + const superSubScale = sup || sub ? ChordSymbol.superSubRatio : 1; + const adj = block.symbolType === SymbolTypes.GLYPH ? glyphAdj * superSubScale : fontAdj * superSubScale; + // If there are super/subscripts, they extend beyond the line so + // assume they take up 2 lines + if (sup || sub) { + lineSpaces = 2; + } + // If there is a symbol-specific offset, add it but consider font + // size since font and glyphs will be interspersed. + const fontSize = symbol.textFormatter.fontSizeInPixels; + const superSubFontSize = fontSize * superSubScale; + if (block.symbolType === SymbolTypes.GLYPH && block.glyph !== undefined) { + block.width = ChordSymbol.getWidthForGlyph(block.glyph) * superSubFontSize; + block.yShift += ChordSymbol.getYShiftForGlyph(block.glyph) * superSubFontSize; + block.xShift += ChordSymbol.getXShiftForGlyph(block.glyph) * superSubFontSize; + block.glyph.scale = block.glyph.scale * adj; + } + else if (block.symbolType === SymbolTypes.TEXT) { + block.width = block.width * superSubFontSize; + block.yShift += symbol.getYOffsetForText(block.text) * adj; + } + if (block.symbolType === SymbolTypes.GLYPH && + block.glyph !== undefined && + block.glyph.code === ChordSymbol.glyphs.over.code) { + lineSpaces = 2; + } + block.width += ChordSymbol.spacingBetweenBlocks * fontSize * superSubScale; + // If a subscript immediately follows a superscript block, try to + // overlay them. + if (sup && j > 0) { + const prev = symbol.symbolBlocks[j - 1]; + if (!ChordSymbol.isSuperscript(prev)) { + nonSuperWidth = width; + } + } + if (sub && nonSuperWidth > 0) { + vAlign = true; + // slide the symbol over so it lines up with superscript + block.xShift = block.xShift + (nonSuperWidth - width); + width = nonSuperWidth; + nonSuperWidth = 0; + // If we have vertically lined up, turn kerning off. + symbol.setEnableKerning(false); + } + if (!sup && !sub) { + nonSuperWidth = 0; + } + block.vAlign = vAlign; + width += block.width; + symbolWidth = width; + } + // make kerning adjustments after computing super/subscripts + symbol.updateKerningAdjustments(); + symbol.updateOverBarAdjustments(); + if (symbol.getVertical() === ChordSymbolVerticalJustify.TOP) { + symbol.setTextLine(state.top_text_line); + state.top_text_line += lineSpaces; + } + else { + symbol.setTextLine(state.text_line + 1); + state.text_line += lineSpaces + 1; + } + if (symbol.getReportWidth() && (0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isStemmableNote)(note)) { + const glyphWidth = note.getGlyph().getWidth(); + if (symbol.getHorizontal() === ChordSymbolHorizontalJustify.LEFT) { + maxLeftGlyphWidth = Math.max(glyphWidth, maxLeftGlyphWidth); + leftWidth = Math.max(leftWidth, symbolWidth) + ChordSymbol.minPadding; + } + else if (symbol.getHorizontal() === ChordSymbolHorizontalJustify.RIGHT) { + maxRightGlyphWidth = Math.max(glyphWidth, maxRightGlyphWidth); + rightWidth = Math.max(rightWidth, symbolWidth); + } + else { + leftWidth = Math.max(leftWidth, symbolWidth / 2) + ChordSymbol.minPadding; + rightWidth = Math.max(rightWidth, symbolWidth / 2); + maxLeftGlyphWidth = Math.max(glyphWidth / 2, maxLeftGlyphWidth); + maxRightGlyphWidth = Math.max(glyphWidth / 2, maxRightGlyphWidth); + } + } + width = 0; // reset symbol width + } + const rightOverlap = Math.min(Math.max(rightWidth - maxRightGlyphWidth, 0), Math.max(rightWidth - state.right_shift, 0)); + const leftOverlap = Math.min(Math.max(leftWidth - maxLeftGlyphWidth, 0), Math.max(leftWidth - state.left_shift, 0)); + state.left_shift += leftOverlap; + state.right_shift += rightOverlap; + return true; + } + /** + * Default text font. + * Choose a font family that works well with the current music engraving font. + * @override `Element.TEXT_FONT`. + */ + static get TEXT_FONT() { + let family = 'Roboto Slab, Times, serif'; + if (_tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().getName() === 'Petaluma') { + // Fixes Issue #1180 + family = 'PetalumaScript, Arial, sans-serif'; + } + return { + family, + size: 12, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.NORMAL, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL, + }; + } + /** + * The offset is specified in `em`. Scale this value by the font size in pixels. + */ + get superscriptOffset() { + return ChordSymbol.superscriptOffset * this.textFormatter.fontSizeInPixels; + } + get subscriptOffset() { + return ChordSymbol.subscriptOffset * this.textFormatter.fontSizeInPixels; + } + setReportWidth(value) { + this.reportWidth = value; + return this; + } + getReportWidth() { + return this.reportWidth; + } + updateOverBarAdjustments() { + const barIndex = this.symbolBlocks.findIndex(({ symbolType, glyph }) => symbolType === SymbolTypes.GLYPH && glyph !== undefined && glyph.code === 'csymDiagonalArrangementSlash'); + if (barIndex < 0) { + return; + } + const bar = this.symbolBlocks[barIndex]; + const xoff = bar.width / 4; + const yoff = 0.25 * this.textFormatter.fontSizeInPixels; + let symIndex = 0; + for (symIndex === 0; symIndex < barIndex; ++symIndex) { + const symbol = this.symbolBlocks[symIndex]; + symbol.xShift = symbol.xShift + xoff; + symbol.yShift = symbol.yShift - yoff; + } + for (symIndex = barIndex + 1; symIndex < this.symbolBlocks.length; ++symIndex) { + const symbol = this.symbolBlocks[symIndex]; + symbol.xShift = symbol.xShift - xoff; + symbol.yShift = symbol.yShift + yoff; + } + } + updateKerningAdjustments() { + let accum = 0; + for (let j = 0; j < this.symbolBlocks.length; ++j) { + const symbol = this.symbolBlocks[j]; + accum += this.getKerningAdjustment(j); + symbol.xShift += accum; + } + } + /** Do some basic kerning so that letter chords like 'A' don't have the extensions hanging off to the right. */ + getKerningAdjustment(j) { + if (!this.useKerning) { + return 0; + } + const currSymbol = this.symbolBlocks[j]; + const prevSymbol = j > 0 ? this.symbolBlocks[j - 1] : undefined; + let adjustment = 0; + // Move things into the '/' over bar + if (currSymbol.symbolType === SymbolTypes.GLYPH && + currSymbol.glyph !== undefined && + currSymbol.glyph.code === ChordSymbol.glyphs.over.code) { + adjustment += currSymbol.glyph.metrics.x_shift; + } + if (prevSymbol !== undefined && + prevSymbol.symbolType === SymbolTypes.GLYPH && + prevSymbol.glyph !== undefined && + prevSymbol.glyph.code === ChordSymbol.glyphs.over.code) { + adjustment += prevSymbol.glyph.metrics.x_shift; + } + // For superscripts that follow a letter without much top part, move it to the left slightly + let preKernUpper = false; + let preKernLower = false; + if (prevSymbol !== undefined && prevSymbol.symbolType === SymbolTypes.TEXT) { + preKernUpper = ChordSymbol.upperKerningText.some((xx) => xx === prevSymbol.text[prevSymbol.text.length - 1]); + preKernLower = ChordSymbol.lowerKerningText.some((xx) => xx === prevSymbol.text[prevSymbol.text.length - 1]); + } + const kerningOffsetPixels = ChordSymbol.kerningOffset * this.textFormatter.fontSizeInPixels; + // TODO: adjust kern for font size. + // Where should this constant live? + if (preKernUpper && currSymbol.symbolModifier === SymbolModifiers.SUPERSCRIPT) { + adjustment += kerningOffsetPixels; + } + if (preKernLower && currSymbol.symbolType === SymbolTypes.TEXT) { + if (currSymbol.text[0] >= 'a' && currSymbol.text[0] <= 'z') { + adjustment += kerningOffsetPixels / 2; + } + if (ChordSymbol.upperKerningText.some((xx) => xx === (prevSymbol === null || prevSymbol === void 0 ? void 0 : prevSymbol.text[prevSymbol.text.length - 1]))) { + adjustment += kerningOffsetPixels / 2; + } + } + return adjustment; + } + /** + * ChordSymbol allows multiple blocks so we can mix glyphs and font text. + * Each block can have its own vertical orientation. + */ + // eslint-disable-next-line + getSymbolBlock(params = {}) { + var _a, _b, _c; + const symbolType = (_a = params.symbolType) !== null && _a !== void 0 ? _a : SymbolTypes.TEXT; + const symbolBlock = { + text: (_b = params.text) !== null && _b !== void 0 ? _b : '', + symbolType, + symbolModifier: (_c = params.symbolModifier) !== null && _c !== void 0 ? _c : SymbolModifiers.NONE, + xShift: 0, + yShift: 0, + vAlign: false, + width: 0, + }; + // Note: symbol widths are resolution and font-independent. + // We convert to pixel values when we know what the font is. + if (symbolType === SymbolTypes.GLYPH && typeof params.glyph === 'string') { + const glyphArgs = ChordSymbol.glyphs[params.glyph]; + const glyphPoints = 20; + symbolBlock.glyph = new _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph(glyphArgs.code, glyphPoints, { category: 'chordSymbol' }); + // Beware: glyph.metrics is not the same as glyph.getMetrics() ! + // rv.glyph.point = rv.glyph.point * rv.glyph.metrics.scale; + // rv.width = rv.glyph.getMetrics().width; + // don't set yShift here, b/c we need to do it at formatting time after the font is set. + } + else if (symbolType === SymbolTypes.TEXT) { + symbolBlock.width = this.textFormatter.getWidthForTextInEm(symbolBlock.text); + } + else if (symbolType === SymbolTypes.LINE) { + symbolBlock.width = params.width; + } + return symbolBlock; + } + /** Add a symbol to this chord, could be text, glyph or line. */ + // eslint-disable-next-line + addSymbolBlock(parameters) { + this.symbolBlocks.push(this.getSymbolBlock(parameters)); + return this; + } + // ### Convenience functions for creating different types of chord symbol parts. + /** Add a text block. */ + // eslint-disable-next-line + addText(text, parameters = {}) { + const symbolType = SymbolTypes.TEXT; + return this.addSymbolBlock(Object.assign(Object.assign({}, parameters), { text, symbolType })); + } + /** Add a text block with superscript modifier. */ + addTextSuperscript(text) { + const symbolType = SymbolTypes.TEXT; + const symbolModifier = SymbolModifiers.SUPERSCRIPT; + return this.addSymbolBlock({ text, symbolType, symbolModifier }); + } + /** Add a text block with subscript modifier. */ + addTextSubscript(text) { + const symbolType = SymbolTypes.TEXT; + const symbolModifier = SymbolModifiers.SUBSCRIPT; + return this.addSymbolBlock({ text, symbolType, symbolModifier }); + } + /** Add a glyph block with superscript modifier. */ + addGlyphSuperscript(glyph) { + const symbolType = SymbolTypes.GLYPH; + const symbolModifier = SymbolModifiers.SUPERSCRIPT; + return this.addSymbolBlock({ glyph, symbolType, symbolModifier }); + } + /** Add a glyph block. */ + // eslint-disable-next-line + addGlyph(glyph, params = {}) { + const symbolType = SymbolTypes.GLYPH; + return this.addSymbolBlock(Object.assign(Object.assign({}, params), { glyph, symbolType })); + } + /** + * Add a glyph for each character in 'text'. If the glyph is not available, use text from the font. + * e.g. `addGlyphOrText('(+5#11)')` will use text for the '5' and '11', and glyphs for everything else. + */ + // eslint-disable-next-line + addGlyphOrText(text, params = {}) { + let str = ''; + for (let i = 0; i < text.length; ++i) { + const char = text[i]; + if (ChordSymbol.glyphs[char]) { + if (str.length > 0) { + this.addText(str, params); + str = ''; + } + this.addGlyph(char, params); + } + else { + // Collect consecutive characters with no glyphs. + str += char; + } + } + if (str.length > 0) { + this.addText(str, params); + } + return this; + } + /** Add a line of the given width, used as a continuation of the previous symbol in analysis, or lyrics, etc. */ + // eslint-disable-next-line + addLine(width, params = {}) { + const symbolType = SymbolTypes.LINE; + return this.addSymbolBlock(Object.assign(Object.assign({}, params), { symbolType, width })); + } + /** + * Set the chord symbol's font family, size, weight, style (e.g., `Arial`, `10pt`, `bold`, `italic`). + * + * @param f is 1) a `FontInfo` object or + * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or + * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided). + * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt'). + * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900). + * @param style is a string (e.g., 'italic', 'normal'). + * + * @override See: Element. + */ + setFont(f, size, weight, style) { + super.setFont(f, size, weight, style); + this.textFormatter = _textformatter__WEBPACK_IMPORTED_MODULE_4__.TextFormatter.create(this.textFont); + return this; + } + setEnableKerning(val) { + this.useKerning = val; + return this; + } + /** Set vertical position of text (above or below stave). */ + setVertical(vj) { + this.vertical = typeof vj === 'string' ? ChordSymbol.VerticalJustifyString[vj] : vj; + return this; + } + getVertical() { + return this.vertical; + } + /** Set horizontal justification. */ + setHorizontal(hj) { + this.horizontal = typeof hj === 'string' ? ChordSymbol.HorizontalJustifyString[hj] : hj; + return this; + } + getHorizontal() { + return this.horizontal; + } + getWidth() { + let width = 0; + this.symbolBlocks.forEach((symbol) => { + width += symbol.vAlign ? 0 : symbol.width; + }); + return width; + } + getYOffsetForText(text) { + var _a; + let acc = 0; + let i = 0; + for (i = 0; i < text.length; ++i) { + const metrics = this.textFormatter.getGlyphMetrics(text[i]); + if (metrics) { + const yMax = (_a = metrics.y_max) !== null && _a !== void 0 ? _a : 0; + acc = yMax < acc ? yMax : acc; + } + } + const resolution = this.textFormatter.getResolution(); + return i > 0 ? -1 * (acc / resolution) : 0; + } + /** Render text and glyphs above/below the note. */ + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + // We're changing context parameters. Save current state. + ctx.save(); + ctx.openGroup('chordsymbol', this.getAttribute('id')); + const start = note.getModifierStartXY(_modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier.Position.ABOVE, this.index); + ctx.setFont(this.textFont); + let y; + // The position of the text varies based on whether or not the note + // has a stem. + const hasStem = note.hasStem(); + const stave = note.checkStave(); + if (this.vertical === ChordSymbolVerticalJustify.BOTTOM) { + // HACK: We need to compensate for the text's height since its origin is bottom-right. + y = stave.getYForBottomText(this.text_line + _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.TEXT_HEIGHT_OFFSET_HACK); + if (hasStem) { + const stem_ext = note.checkStem().getExtents(); + const spacing = stave.getSpacingBetweenLines(); + const stem_base = note.getStemDirection() === 1 ? stem_ext.baseY : stem_ext.topY; + y = Math.max(y, stem_base + spacing * (this.text_line + 2)); + } + } + else { + // (this.vertical === VerticalJustify.TOP) + y = Math.min(stave.getYForTopText(this.text_line), note.getYs()[0] - 10); + if (hasStem) { + const stem_ext = note.checkStem().getExtents(); + const spacing = stave.getSpacingBetweenLines(); + y = Math.min(y, stem_ext.topY - 5 - spacing * this.text_line); + } + } + let x = start.x; + if (this.horizontal === ChordSymbolHorizontalJustify.LEFT) { + x = start.x; + } + else if (this.horizontal === ChordSymbolHorizontalJustify.RIGHT) { + x = start.x + this.getWidth(); + } + else if (this.horizontal === ChordSymbolHorizontalJustify.CENTER) { + x = start.x - this.getWidth() / 2; + } + else { + // HorizontalJustify.CENTER_STEM + x = note.getStemX() - this.getWidth() / 2; + } + L('Rendering ChordSymbol: ', this.textFormatter, x, y); + this.symbolBlocks.forEach((symbol) => { + const isSuper = ChordSymbol.isSuperscript(symbol); + const isSub = ChordSymbol.isSubscript(symbol); + let curY = y; + L('shift was ', symbol.xShift, symbol.yShift); + L('curY pre sub ', curY); + if (isSuper) { + curY += this.superscriptOffset; + } + if (isSub) { + curY += this.subscriptOffset; + } + L('curY sup/sub ', curY); + if (symbol.symbolType === SymbolTypes.TEXT) { + if (isSuper || isSub) { + ctx.save(); + if (this.textFont) { + const { family, size, weight, style } = this.textFont; + const smallerFontSize = _font__WEBPACK_IMPORTED_MODULE_0__.Font.scaleSize(size, ChordSymbol.superSubRatio); + ctx.setFont(family, smallerFontSize, weight, style); + } + } + // TODO??? + // We estimate the text width, fill it in with the empirical value so the formatting is even. + // const textDim = ctx.measureText(symbol.text); + // symbol.width = textDim.width; + L('Rendering Text: ', symbol.text, x + symbol.xShift, curY + symbol.yShift); + ctx.fillText(symbol.text, x + symbol.xShift, curY + symbol.yShift); + if (isSuper || isSub) { + ctx.restore(); + } + } + else if (symbol.symbolType === SymbolTypes.GLYPH && symbol.glyph) { + curY += symbol.yShift; + L('Rendering Glyph: ', symbol.glyph.code, x + symbol.xShift, curY); + symbol.glyph.render(ctx, x + symbol.xShift, curY); + } + else if (symbol.symbolType === SymbolTypes.LINE) { + L('Rendering Line : ', symbol.width, x, curY); + ctx.beginPath(); + ctx.setLineWidth(1); // ? + ctx.moveTo(x, y); + ctx.lineTo(x + symbol.width, curY); + ctx.stroke(); + } + x += symbol.width; + if (symbol.vAlign) { + x += symbol.xShift; + } + }); + ctx.closeGroup(); + ctx.restore(); + } +} +ChordSymbol.DEBUG = false; +// Chord symbols can be positioned and justified relative to the note. +ChordSymbol.HorizontalJustify = ChordSymbolHorizontalJustify; +ChordSymbol.HorizontalJustifyString = { + left: ChordSymbolHorizontalJustify.LEFT, + right: ChordSymbolHorizontalJustify.RIGHT, + center: ChordSymbolHorizontalJustify.CENTER, + centerStem: ChordSymbolHorizontalJustify.CENTER_STEM, +}; +ChordSymbol.VerticalJustify = ChordSymbolVerticalJustify; +ChordSymbol.VerticalJustifyString = { + top: ChordSymbolVerticalJustify.TOP, + above: ChordSymbolVerticalJustify.TOP, + below: ChordSymbolVerticalJustify.BOTTOM, + bottom: ChordSymbolVerticalJustify.BOTTOM, +}; +// Glyph data +ChordSymbol.glyphs = { + diminished: { + code: 'csymDiminished', + }, + dim: { + code: 'csymDiminished', + }, + halfDiminished: { + code: 'csymHalfDiminished', + }, + '+': { + code: 'csymAugmented', + }, + augmented: { + code: 'csymAugmented', + }, + majorSeventh: { + code: 'csymMajorSeventh', + }, + minor: { + code: 'csymMinor', + }, + '-': { + code: 'csymMinor', + }, + '(': { + code: 'csymParensLeftTall', + }, + leftParen: { + code: 'csymParensLeftTall', + }, + ')': { + code: 'csymParensRightTall', + }, + rightParen: { + code: 'csymParensRightTall', + }, + leftBracket: { + code: 'csymBracketLeftTall', + }, + rightBracket: { + code: 'csymBracketRightTall', + }, + leftParenTall: { + code: 'csymParensLeftVeryTall', + }, + rightParenTall: { + code: 'csymParensRightVeryTall', + }, + '/': { + code: 'csymDiagonalArrangementSlash', + }, + over: { + code: 'csymDiagonalArrangementSlash', + }, + '#': { + code: 'accidentalSharp', + }, + b: { + code: 'accidentalFlat', + }, +}; +ChordSymbol.symbolTypes = SymbolTypes; +ChordSymbol.symbolModifiers = SymbolModifiers; +/** Currently unused. */ +ChordSymbol.noFormat = false; + + +/***/ }), + +/***/ "./src/clef.ts": +/*!*********************!*\ + !*** ./src/clef.ts ***! + \*********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Clef": () => (/* binding */ Clef) +/* harmony export */ }); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna Cheppudira 2013. +// Co-author: Benjamin W. Bohl +// MIT License + + + + + +// eslint-disable-next-line +function L(...args) { + if (Clef.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_4__.log)('Vex.Flow.Clef', args); +} +/** + * Clef implements various types of clefs that can be rendered on a stave. + * + * See `tests/clef_tests.ts` for usage examples. + */ +class Clef extends _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifier { + /** Create a new clef. */ + constructor(type, size, annotation) { + super(); + /** + * The attribute `clef` must be a key from + * `Clef.types` + */ + this.clef = Clef.types['treble']; + this.setPosition(_stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifierPosition.BEGIN); + this.setType(type, size, annotation); + this.setWidth(_tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont().lookupMetric(`clef.${this.size}.width`)); + L('Creating clef:', type); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.Clef; + } + /** + * Every clef name is associated with a glyph code from the font file + * and a default stave line number. + */ + static get types() { + return { + treble: { + code: 'gClef', + line: 3, + point: 0, + }, + bass: { + code: 'fClef', + line: 1, + point: 0, + }, + alto: { + code: 'cClef', + line: 2, + point: 0, + }, + tenor: { + code: 'cClef', + line: 1, + point: 0, + }, + percussion: { + code: 'restMaxima', + line: 2, + point: 0, + }, + soprano: { + code: 'cClef', + line: 4, + point: 0, + }, + 'mezzo-soprano': { + code: 'cClef', + line: 3, + point: 0, + }, + 'baritone-c': { + code: 'cClef', + line: 0, + point: 0, + }, + 'baritone-f': { + code: 'fClef', + line: 2, + point: 0, + }, + subbass: { + code: 'fClef', + line: 0, + point: 0, + }, + french: { + code: 'gClef', + line: 4, + point: 0, + }, + tab: { + code: '6stringTabClef', + point: 0, + }, + }; + } + /** Set clef type, size and annotation. */ + setType(type, size, annotation) { + this.type = type; + this.clef = Clef.types[type]; + if (size === undefined) { + this.size = 'default'; + } + else { + this.size = size; + } + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont(); + this.clef.point = musicFont.lookupMetric(`clef.${this.size}.point`, 0); + this.glyph = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph(this.clef.code, this.clef.point, { + category: `clef.${this.clef.code}.${this.size}`, + }); + // If an annotation, such as 8va, is specified, add it to the Clef object. + if (annotation !== undefined) { + const code = musicFont.lookupMetric(`clef.annotations.${annotation}.smuflCode`); + const point = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.point`); + const line = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.${this.type}.line`); + const x_shift = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.${this.type}.shiftX`); + this.annotation = { code, point, line, x_shift }; + this.attachment = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph(this.annotation.code, this.annotation.point); + this.attachment.metrics.x_max = 0; + this.attachment.setXShift(this.annotation.x_shift); + } + else { + this.annotation = undefined; + } + return this; + } + /** Get clef width. */ + getWidth() { + if (this.type === 'tab') { + (0,_util__WEBPACK_IMPORTED_MODULE_4__.defined)(this.stave, 'ClefError', "Can't get width without stave."); + } + return this.width; + } + /** Set associated stave. */ + setStave(stave) { + this.stave = stave; + if (this.type === 'tab') { + const glyph = (0,_util__WEBPACK_IMPORTED_MODULE_4__.defined)(this.glyph, 'ClefError', "Can't set stave without glyph."); + const numLines = this.stave.getNumLines(); + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont(); + const point = musicFont.lookupMetric(`clef.lineCount.${numLines}.point`); + const shiftY = musicFont.lookupMetric(`clef.lineCount.${numLines}.shiftY`); + glyph.setPoint(point); + glyph.setYShift(shiftY); + } + return this; + } + /** Render clef. */ + draw() { + const glyph = (0,_util__WEBPACK_IMPORTED_MODULE_4__.defined)(this.glyph, 'ClefError', "Can't draw clef without glyph."); + const stave = this.checkStave(); + const ctx = stave.checkContext(); + this.setRendered(); + ctx.openGroup('clef', this.getAttribute('id')); + glyph.setStave(stave); + glyph.setContext(ctx); + if (this.clef.line !== undefined) { + this.placeGlyphOnLine(glyph, stave, this.clef.line); + } + glyph.renderToStave(this.x); + if (this.annotation !== undefined && this.attachment !== undefined) { + this.placeGlyphOnLine(this.attachment, stave, this.annotation.line); + this.attachment.setStave(stave); + this.attachment.setContext(ctx); + this.attachment.renderToStave(this.x); + } + ctx.closeGroup(); + } +} +/** To enable logging for this class, set `Vex.Flow.Clef.DEBUG` to `true`. */ +Clef.DEBUG = false; + + +/***/ }), + +/***/ "./src/clefnote.ts": +/*!*************************!*\ + !*** ./src/clefnote.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "ClefNote": () => (/* binding */ ClefNote) +/* harmony export */ }); +/* harmony import */ var _clef__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./clef */ "./src/clef.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Taehoon Moon 2014 +// MIT License + + + + +/** ClefNote implements clef annotations in measures. */ +class ClefNote extends _note__WEBPACK_IMPORTED_MODULE_2__.Note { + constructor(type, size, annotation) { + super({ duration: 'b' }); + this.type = type; + this.clef_obj = new _clef__WEBPACK_IMPORTED_MODULE_0__.Clef(type, size, annotation); + this.clef = this.clef_obj.clef; + this.glyph = new _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph(this.clef.code, this.clef.point); + this.setWidth(this.glyph.getMetrics().width); + // Note properties + this.ignore_ticks = true; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.ClefNote; + } + /** Set clef type, size and annotation. */ + setType(type, size, annotation) { + this.type = type; + this.clef_obj = new _clef__WEBPACK_IMPORTED_MODULE_0__.Clef(type, size, annotation); + this.clef = this.clef_obj.clef; + this.glyph = new _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph(this.clef.code, this.clef.point); + this.setWidth(this.glyph.getMetrics().width); + return this; + } + /** Get associated clef. */ + getClef() { + return this.clef; + } + /** Set associated context. */ + setContext(context) { + super.setContext(context); + this.glyph.setContext(this.getContext()); + return this; + } + /** Get bounding box. */ + getBoundingBox() { + return super.getBoundingBox(); + } + /* Overridden to ignore */ + // eslint-disable-next-line + addToModifierContext(mc) { + // DO NOTHING. + return this; + } + preFormat() { + this.preFormatted = true; + return this; + } + /** Render clef note. */ + draw() { + var _a; + const stave = this.checkStave(); + if (!this.glyph.getContext()) { + this.glyph.setContext(this.getContext()); + } + this.setRendered(); + const abs_x = this.getAbsoluteX(); + this.glyph.setStave(stave); + this.glyph.setYShift(stave.getYForLine((_a = this.clef.line) !== null && _a !== void 0 ? _a : 0) - stave.getYForGlyphs()); + this.glyph.renderToStave(abs_x); + // If the Vex.Flow.Clef has an annotation, such as 8va, draw it. + if (this.clef_obj.annotation !== undefined) { + const attachment = new _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph(this.clef_obj.annotation.code, this.clef_obj.annotation.point); + if (!attachment.getContext()) { + attachment.setContext(this.getContext()); + } + attachment.setStave(stave); + attachment.setYShift(stave.getYForLine(this.clef_obj.annotation.line) - stave.getYForGlyphs()); + attachment.setXShift(this.clef_obj.annotation.x_shift); + attachment.renderToStave(abs_x); + } + } +} + + +/***/ }), + +/***/ "./src/crescendo.ts": +/*!**************************!*\ + !*** ./src/crescendo.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Crescendo": () => (/* binding */ Crescendo) +/* harmony export */ }); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _tickcontext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tickcontext */ "./src/tickcontext.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// This file implements the `Crescendo` object which draws crescendos and +// decrescendo dynamics markings. A `Crescendo` is initialized with a +// duration and formatted as part of a `Voice` like any other `Note` +// type in VexFlow. This object would most likely be formatted in a Voice +// with `TextNotes` - which are used to represent other dynamics markings. + + + + +// To enable logging for this class. Set `Vex.Flow.Crescendo.DEBUG` to `true`. +// eslint-disable-next-line +function L(...args) { + if (Crescendo.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_3__.log)('Vex.Flow.Crescendo', args); +} +// Private helper to draw the hairpin +function renderHairpin(ctx, params) { + const begin_x = params.begin_x; + const end_x = params.end_x; + const y = params.y; + const half_height = params.height / 2; + ctx.beginPath(); + if (params.reverse) { + ctx.moveTo(begin_x, y - half_height); + ctx.lineTo(end_x, y); + ctx.lineTo(begin_x, y + half_height); + } + else { + ctx.moveTo(end_x, y - half_height); + ctx.lineTo(begin_x, y); + ctx.lineTo(end_x, y + half_height); + } + ctx.stroke(); + ctx.closePath(); +} +class Crescendo extends _note__WEBPACK_IMPORTED_MODULE_0__.Note { + // Initialize the crescendo's properties + constructor(noteStruct) { + super(noteStruct); + this.options = { + // Extensions to the length of the crescendo on either side + extend_left: 0, + extend_right: 0, + // Vertical shift + y_shift: 0, + }; + // Whether the object is a decrescendo + this.decrescendo = false; + // The staff line to be placed on + this.line = noteStruct.line || 0; + // The height at the open end of the cresc/decresc + this.height = 15; + } + /** Crescendo category string. */ + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.Crescendo; + } + // Set the line to center the element on + setLine(line) { + this.line = line; + return this; + } + // Set the full height at the open end + setHeight(height) { + this.height = height; + return this; + } + // Set whether the sign should be a descresendo by passing a bool + // to `decresc` + setDecrescendo(decresc) { + this.decrescendo = decresc; + return this; + } + // Preformat the note + preFormat() { + this.preFormatted = true; + return this; + } + // Render the Crescendo object onto the canvas + draw() { + const ctx = this.checkContext(); + const stave = this.checkStave(); + this.setRendered(); + const tick_context = this.getTickContext(); + const next_context = _tickcontext__WEBPACK_IMPORTED_MODULE_1__.TickContext.getNextContext(tick_context); + const begin_x = this.getAbsoluteX(); + const end_x = next_context ? next_context.getX() : stave.getX() + stave.getWidth(); + const y = stave.getYForLine(this.line + -3) + 1; + L('Drawing ', this.decrescendo ? 'decrescendo ' : 'crescendo ', this.height, 'x', begin_x - end_x); + renderHairpin(ctx, { + begin_x: begin_x - this.options.extend_left, + end_x: end_x + this.options.extend_right, + y: y + this.options.y_shift, + height: this.height, + reverse: this.decrescendo, + }); + } +} +Crescendo.DEBUG = false; + + +/***/ }), + +/***/ "./src/curve.ts": +/*!**********************!*\ + !*** ./src/curve.ts ***! + \**********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "CurvePosition": () => (/* binding */ CurvePosition), +/* harmony export */ "Curve": () => (/* binding */ Curve) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// VexFlow - Music Engraving for HTML5 +// Copyright Mohit Muthanna 2010 +// +// This class implements curves (for slurs) + + + +var CurvePosition; +(function (CurvePosition) { + CurvePosition[CurvePosition["NEAR_HEAD"] = 1] = "NEAR_HEAD"; + CurvePosition[CurvePosition["NEAR_TOP"] = 2] = "NEAR_TOP"; +})(CurvePosition || (CurvePosition = {})); +class Curve extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + // from: Start note + // to: End note + // options: + // cps: List of control points + // x_shift: pixels to shift + // y_shift: pixels to shift + constructor(from, to, options) { + super(); + this.render_options = Object.assign({ thickness: 2, x_shift: 0, y_shift: 10, position: CurvePosition.NEAR_HEAD, position_end: CurvePosition.NEAR_HEAD, invert: false, cps: [ + { x: 0, y: 10 }, + { x: 0, y: 10 }, + ] }, options); + this.from = from; + this.to = to; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_1__.Category.Curve; + } + static get Position() { + return CurvePosition; + } + static get PositionString() { + return { + nearHead: CurvePosition.NEAR_HEAD, + nearTop: CurvePosition.NEAR_TOP, + }; + } + setNotes(from, to) { + if (!from && !to) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', 'Curve needs to have either `from` or `to` set.'); + } + this.from = from; + this.to = to; + return this; + } + /** + * @return {boolean} Returns true if this is a partial bar. + */ + isPartial() { + return !this.from || !this.to; + } + renderCurve(params) { + const ctx = this.checkContext(); + const x_shift = this.render_options.x_shift; + const y_shift = this.render_options.y_shift * params.direction; + const first_x = params.first_x + x_shift; + const first_y = params.first_y + y_shift; + const last_x = params.last_x - x_shift; + const last_y = params.last_y + y_shift; + const thickness = this.render_options.thickness; + const cps = this.render_options.cps; + const { x: cp0x, y: cp0y } = cps[0]; + const { x: cp1x, y: cp1y } = cps[1]; + const cp_spacing = (last_x - first_x) / (cps.length + 2); + ctx.beginPath(); + ctx.moveTo(first_x, first_y); + ctx.bezierCurveTo(first_x + cp_spacing + cp0x, first_y + cp0y * params.direction, last_x - cp_spacing + cp1x, last_y + cp1y * params.direction, last_x, last_y); + ctx.bezierCurveTo(last_x - cp_spacing + cp1x, last_y + (cp1y + thickness) * params.direction, first_x + cp_spacing + cp0x, first_y + (cp0y + thickness) * params.direction, first_x, first_y); + ctx.stroke(); + ctx.closePath(); + ctx.fill(); + } + draw() { + this.checkContext(); + this.setRendered(); + const first_note = this.from; + const last_note = this.to; + let first_x; + let last_x; + let first_y; + let last_y; + let stem_direction = 0; + let metric = 'baseY'; + let end_metric = 'baseY'; + function getPosition(position) { + return typeof position === 'string' ? Curve.PositionString[position] : position; + } + const position = getPosition(this.render_options.position); + const position_end = getPosition(this.render_options.position_end); + if (position === CurvePosition.NEAR_TOP) { + metric = 'topY'; + end_metric = 'topY'; + } + if (position_end === CurvePosition.NEAR_HEAD) { + end_metric = 'baseY'; + } + else if (position_end === CurvePosition.NEAR_TOP) { + end_metric = 'topY'; + } + if (first_note) { + first_x = first_note.getTieRightX(); + stem_direction = first_note.getStemDirection(); + first_y = first_note.getStemExtents()[metric]; + } + else { + const stave = last_note.checkStave(); + first_x = stave.getTieStartX(); + first_y = last_note.getStemExtents()[metric]; + } + if (last_note) { + last_x = last_note.getTieLeftX(); + stem_direction = last_note.getStemDirection(); + last_y = last_note.getStemExtents()[end_metric]; + } + else { + const stave = first_note.checkStave(); + last_x = stave.getTieEndX(); + last_y = first_note.getStemExtents()[end_metric]; + } + this.renderCurve({ + first_x, + last_x, + first_y, + last_y, + direction: stem_direction * (this.render_options.invert === true ? -1 : 1), + }); + return true; + } +} + + +/***/ }), + +/***/ "./src/dot.ts": +/*!********************!*\ + !*** ./src/dot.ts ***! + \********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Dot": () => (/* binding */ Dot) +/* harmony export */ }); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// VexFlow - Music Engraving for HTML5 +// Copyright Mohit Muthanna 2010 +// +// This class implements dot modifiers for notes. + + + +class Dot extends _modifier__WEBPACK_IMPORTED_MODULE_0__.Modifier { + constructor() { + super(); + this.position = _modifier__WEBPACK_IMPORTED_MODULE_0__.Modifier.Position.RIGHT; + this.radius = 2; + this.setWidth(5); + this.dot_shiftY = 0; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_1__.Category.Dot; + } + /** Returns the dots associated to a Note. */ + static getDots(note) { + return note.getModifiersByType(Dot.CATEGORY); + } + /** Add a dot on the specified keys to the notes. */ + static buildAndAttach(notes, options) { + for (const note of notes) { + if (options === null || options === void 0 ? void 0 : options.all) { + for (let i = 0; i < note.keys.length; i++) { + const dot = new Dot(); + dot.setDotShiftY(note.glyph.dot_shiftY); + note.addModifier(dot, i); + } + } + else if ((options === null || options === void 0 ? void 0 : options.index) != undefined) { + const dot = new Dot(); + dot.setDotShiftY(note.glyph.dot_shiftY); + note.addModifier(dot, options === null || options === void 0 ? void 0 : options.index); + } + else { + const dot = new Dot(); + dot.setDotShiftY(note.glyph.dot_shiftY); + note.addModifier(dot, 0); + } + } + } + // Arrange dots inside a ModifierContext. + static format(dots, state) { + const right_shift = state.right_shift; + const dot_spacing = 1; + if (!dots || dots.length === 0) + return false; + const dot_list = []; + const max_shift_map = {}; + for (let i = 0; i < dots.length; ++i) { + const dot = dots[i]; + const note = dot.getNote(); + let props; + let shift; + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_1__.isStaveNote)(note)) { + const index = dot.checkIndex(); + props = note.getKeyProps()[index]; + // consider right displaced head with no previous modifier + shift = note.getFirstDotPx(); + } + else if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_1__.isTabNote)(note)) { + props = { line: 0.5 }; // Shim key props for dot placement + shift = right_shift; + } + else { + // note object is not StaveNote or TabNote. + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('Internal', 'Unexpected instance.'); + } + const note_id = note.getAttribute('id'); + dot_list.push({ line: props.line, note, note_id, dot }); + max_shift_map[note_id] = Math.max(max_shift_map[note_id] || shift, shift); + } + // Sort dots by line number. + dot_list.sort((a, b) => b.line - a.line); + let dot_shift = right_shift; + let x_width = 0; + let last_line = null; + let last_note = null; + let prev_dotted_space = null; + let half_shiftY = 0; + for (let i = 0; i < dot_list.length; ++i) { + const { dot, note, note_id, line } = dot_list[i]; + // Reset the position of the dot every line. + if (line !== last_line || note !== last_note) { + dot_shift = max_shift_map[note_id]; + } + if (!note.isRest() && line !== last_line) { + if (Math.abs(line % 1) === 0.5) { + // note is on a space, so no dot shift + half_shiftY = 0; + } + else { + // note is on a line, so shift dot to space above the line + half_shiftY = 0.5; + if (last_note != null && !last_note.isRest() && last_line != null && last_line - line === 0.5) { + // previous note on a space, so shift dot to space below the line + half_shiftY = -0.5; + } + else if (line + half_shiftY === prev_dotted_space) { + // previous space is dotted, so shift dot to space below the line + half_shiftY = -0.5; + } + } + } + // convert half_shiftY to a multiplier for dots.draw() + if (note.isRest()) { + dot.dot_shiftY += -half_shiftY; + } + else { + dot.dot_shiftY = -half_shiftY; + } + prev_dotted_space = line + half_shiftY; + dot.setXShift(dot_shift); + dot_shift += dot.getWidth() + dot_spacing; // spacing + x_width = dot_shift > x_width ? dot_shift : x_width; + last_line = line; + last_note = note; + } + // Update state. + state.right_shift += x_width; + return true; + } + setNote(note) { + this.note = note; + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_1__.isGraceNote)(note)) { + this.radius *= 0.5; + this.setWidth(3); + } + return this; + } + setDotShiftY(y) { + this.dot_shiftY = y; + return this; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const stave = note.checkStave(); + const lineSpace = stave.getSpacingBetweenLines(); + const start = note.getModifierStartXY(this.position, this.index, { forceFlagRight: true }); + // Set the starting y coordinate to the base of the stem for TabNotes. + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_1__.isTabNote)(note)) { + start.y = note.getStemExtents().baseY; + } + const x = start.x + this.x_shift + this.width - this.radius; + const y = start.y + this.y_shift + this.dot_shiftY * lineSpace; + ctx.beginPath(); + ctx.arc(x, y, this.radius, 0, Math.PI * 2, false); + ctx.fill(); + } +} + + +/***/ }), + +/***/ "./src/easyscore.ts": +/*!**************************!*\ + !*** ./src/easyscore.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "EasyScoreGrammar": () => (/* binding */ EasyScoreGrammar), +/* harmony export */ "Piece": () => (/* binding */ Piece), +/* harmony export */ "Builder": () => (/* binding */ Builder), +/* harmony export */ "EasyScore": () => (/* binding */ EasyScore) +/* harmony export */ }); +/* harmony import */ var _articulation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./articulation */ "./src/articulation.ts"); +/* harmony import */ var _dot__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dot */ "./src/dot.ts"); +/* harmony import */ var _frethandfinger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./frethandfinger */ "./src/frethandfinger.ts"); +/* harmony import */ var _music__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./music */ "./src/music.ts"); +/* harmony import */ var _parser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./parser */ "./src/parser.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + + +// To enable logging for this class. Set `Vex.Flow.EasyScore.DEBUG` to `true`. +// eslint-disable-next-line +function L(...args) { + if (EasyScore.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_6__.log)('Vex.Flow.EasyScore', args); +} +class EasyScoreGrammar { + constructor(builder) { + this.builder = builder; + } + begin() { + return this.LINE; + } + LINE() { + return { + expect: [this.PIECE, this.PIECES, this.EOL], + }; + } + PIECE() { + return { + expect: [this.CHORDORNOTE, this.PARAMS], + run: () => this.builder.commitPiece(), + }; + } + PIECES() { + return { + expect: [this.COMMA, this.PIECE], + zeroOrMore: true, + }; + } + PARAMS() { + return { + expect: [this.DURATION, this.TYPE, this.DOTS, this.OPTS], + }; + } + CHORDORNOTE() { + return { + expect: [this.CHORD, this.SINGLENOTE], + or: true, + }; + } + CHORD() { + return { + expect: [this.LPAREN, this.NOTES, this.RPAREN], + // eslint-disable-next-line + run: (state) => this.builder.addChord(state.matches[1]), + }; + } + NOTES() { + return { + expect: [this.NOTE], + oneOrMore: true, + }; + } + NOTE() { + return { + expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE], + }; + } + SINGLENOTE() { + return { + expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE], + run: (state) => { + // eslint-disable-next-line + const s = state; + this.builder.addSingleNote(s.matches[0], s.matches[1], s.matches[2]); + }, + }; + } + ACCIDENTAL() { + return { + expect: [this.MICROTONES, this.ACCIDENTALS], + maybe: true, + or: true, + }; + } + DOTS() { + return { + expect: [this.DOT], + zeroOrMore: true, + // eslint-disable-next-line + run: (state) => this.builder.setNoteDots(state.matches), + }; + } + TYPE() { + return { + expect: [this.SLASH, this.MAYBESLASH, this.TYPES], + maybe: true, + // eslint-disable-next-line + run: (state) => this.builder.setNoteType(state.matches[2]), + }; + } + DURATION() { + return { + expect: [this.SLASH, this.DURATIONS], + maybe: true, + // eslint-disable-next-line + run: (state) => this.builder.setNoteDuration(state.matches[1]), + }; + } + OPTS() { + return { + expect: [this.LBRACKET, this.KEYVAL, this.KEYVALS, this.RBRACKET], + maybe: true, + }; + } + KEYVALS() { + return { + expect: [this.COMMA, this.KEYVAL], + zeroOrMore: true, + }; + } + KEYVAL() { + const unquote = (str) => str.slice(1, -1); + return { + expect: [this.KEY, this.EQUALS, this.VAL], + // eslint-disable-next-line + run: (state) => this.builder.addNoteOption(state.matches[0], unquote(state.matches[2])), + }; + } + VAL() { + return { + expect: [this.SVAL, this.DVAL], + or: true, + }; + } + KEY() { + return { token: '[a-zA-Z][a-zA-Z0-9]*' }; + } + DVAL() { + return { token: '["][^"]*["]' }; + } + SVAL() { + return { token: "['][^']*[']" }; + } + NOTENAME() { + return { token: '[a-gA-G]' }; + } + OCTAVE() { + return { token: '[0-9]+' }; + } + ACCIDENTALS() { + return { token: 'bb|b|##|#|n' }; + } + MICROTONES() { + return { token: 'bbs|bss|bs|db|d|\\+\\+-|\\+-|\\+\\+|\\+|k|o' }; + } + DURATIONS() { + return { token: '[0-9whq]+' }; + } + TYPES() { + return { token: '[rRsSmMhHgG]' }; + } + LPAREN() { + return { token: '[(]' }; + } + RPAREN() { + return { token: '[)]' }; + } + COMMA() { + return { token: '[,]' }; + } + DOT() { + return { token: '[.]' }; + } + SLASH() { + return { token: '[/]' }; + } + MAYBESLASH() { + return { token: '[/]?' }; + } + EQUALS() { + return { token: '[=]' }; + } + LBRACKET() { + return { token: '\\[' }; + } + RBRACKET() { + return { token: '\\]' }; + } + EOL() { + return { token: '$' }; + } +} +class Piece { + constructor(duration) { + this.chord = []; + this.dots = 0; + this.options = {}; + this.duration = duration; + } +} +class Builder { + constructor(factory) { + this.commitHooks = []; + this.factory = factory; + this.reset(); + } + reset(options) { + this.options = Object.assign({ stem: 'auto', clef: 'treble' }, options); + this.elements = { notes: [], accidentals: [] }; + this.rollingDuration = '8'; + this.resetPiece(); + } + getFactory() { + return this.factory; + } + getElements() { + return this.elements; + } + addCommitHook(commitHook) { + this.commitHooks.push(commitHook); + } + resetPiece() { + L('resetPiece'); + this.piece = new Piece(this.rollingDuration); + } + setNoteDots(dots) { + L('setNoteDots:', dots); + if (dots) + this.piece.dots = dots.length; + } + setNoteDuration(duration) { + L('setNoteDuration:', duration); + this.rollingDuration = this.piece.duration = duration || this.rollingDuration; + } + setNoteType(type) { + L('setNoteType:', type); + if (type) + this.piece.type = type; + } + addNoteOption(key, value) { + L('addNoteOption: key:', key, 'value:', value); + this.piece.options[key] = value; + } + addNote(key, accid, octave) { + L('addNote:', key, accid, octave); + this.piece.chord.push({ + key: key, + accid, + octave, + }); + } + addSingleNote(key, accid, octave) { + L('addSingleNote:', key, accid, octave); + this.addNote(key, accid, octave); + } + // notes is an array with 3 entries + addChord(notes) { + L('startChord'); + if (typeof notes[0] !== 'object') { + this.addSingleNote(notes[0]); + } + else { + notes.forEach((n) => { + if (n) + this.addNote(...n); // n => [string, string | null, string] + }); + } + L('endChord'); + } + commitPiece() { + L('commitPiece'); + const { factory } = this; + if (!factory) + return; + const options = Object.assign(Object.assign({}, this.options), this.piece.options); + // reset() sets this.options.stem & this.options.clef but we check to make sure nothing has changed. + // e.g., auto | up | down + const stem = (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(options.stem, 'BadArguments', 'options.stem is not defined').toLowerCase(); + // e.g., treble | bass + const clef = (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(options.clef, 'BadArguments', 'options.clef is not defined').toLowerCase(); + const { chord, duration, dots, type } = this.piece; + // Create a string[] that will be assigned to the .keys property of the StaveNote. + // Each string in the array represents a note pitch and is of the form: {NoteName}{Accidental}/{Octave} + // Only standard accidentals are included in the .keys property. Microtonal accidentals are not included. + const standardAccidentals = _music__WEBPACK_IMPORTED_MODULE_3__.Music.accidentals; + const keys = chord.map((notePiece) => { + var _a; + return notePiece.key + + (standardAccidentals.includes((_a = notePiece.accid) !== null && _a !== void 0 ? _a : '') ? notePiece.accid : '') + + '/' + + notePiece.octave; + }); + const auto_stem = stem === 'auto'; // StaveNoteStruct expects the underscore & lowercase. + // Build a GhostNote or StaveNote using the information we gathered. + const note = (type === null || type === void 0 ? void 0 : type.toLowerCase()) == 'g' + ? factory.GhostNote({ duration, dots }) + : factory.StaveNote({ keys, duration, dots, type, clef, auto_stem }); + if (!auto_stem) + note.setStemDirection(stem === 'up' ? _stem__WEBPACK_IMPORTED_MODULE_5__.Stem.UP : _stem__WEBPACK_IMPORTED_MODULE_5__.Stem.DOWN); + // Attach accidentals. + const accidentals = []; + chord.forEach((notePiece, index) => { + const accid = notePiece.accid; + if (typeof accid === 'string') { + const accidental = factory.Accidental({ type: accid }); + note.addModifier(accidental, index); + accidentals.push(accidental); + } + else { + accidentals.push(undefined); + } + }); + // Attach dots. + for (let i = 0; i < dots; i++) + _dot__WEBPACK_IMPORTED_MODULE_1__.Dot.buildAndAttach([note], { all: true }); + this.commitHooks.forEach((commitHook) => commitHook(options, note, this)); + this.elements.notes.push(note); + this.elements.accidentals.push(accidentals); + this.resetPiece(); + } +} +/** + * Commit hook used by EasyScore.setOptions(). + */ +function setId(options, note) { + if (options.id === undefined) + return; + note.setAttribute('id', options.id); +} +// Used by setClass() below. +const commaSeparatedRegex = /\s*,\s*/; +/** + * Commit hook used by EasyScore.setOptions(). + */ +function setClass(options, note) { + if (options.class === undefined) + return; + options.class.split(commaSeparatedRegex).forEach((className) => note.addClass(className)); +} +/** + * EasyScore implements a parser for a simple language to generate VexFlow objects. + */ +class EasyScore { + constructor(options = {}) { + this.defaults = { + clef: 'treble', + time: '4/4', + stem: 'auto', + }; + this.setOptions(options); + } + /** + * Set the score defaults. + * clef must be set appropriately to avoid errors when adding Staves. + * @param defaults.clef default clef ( treble | bass ...) see {@link Clef.types} + * @param defaults.time default time signature ( 4/4 | 9/8 ...) + * @param defaults.stem default stem arrangement (auto | up | down) + * @returns this + */ + set(defaults) { + this.defaults = Object.assign(Object.assign({}, this.defaults), defaults); + return this; + } + /** + * @param options.factory is required. + * @returns this + */ + setOptions(options) { + var _a, _b; + // eslint-disable-next-line + const factory = options.factory; // ! operator, because options.factory was set in Factory.EasyScore(). + const builder = (_a = options.builder) !== null && _a !== void 0 ? _a : new Builder(factory); + this.options = Object.assign(Object.assign({ commitHooks: [setId, setClass, _articulation__WEBPACK_IMPORTED_MODULE_0__.Articulation.easyScoreHook, _frethandfinger__WEBPACK_IMPORTED_MODULE_2__.FretHandFinger.easyScoreHook], throwOnError: false }, options), { factory, + builder }); + this.factory = factory; + this.builder = builder; + this.grammar = new EasyScoreGrammar(this.builder); + this.parser = new _parser__WEBPACK_IMPORTED_MODULE_4__.Parser(this.grammar); + (_b = this.options.commitHooks) === null || _b === void 0 ? void 0 : _b.forEach((commitHook) => this.addCommitHook(commitHook)); + return this; + } + setContext(context) { + this.factory.setContext(context); + return this; + } + parse(line, options = {}) { + this.builder.reset(options); + const result = this.parser.parse(line); + if (!result.success && this.options.throwOnError) { + L(result); + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('Error parsing line: ' + line); + } + return result; + } + beam(notes, options) { + this.factory.Beam({ notes, options }); + return notes; + } + tuplet(notes, options) { + this.factory.Tuplet({ notes, options }); + return notes; + } + notes(line, options = {}) { + options = Object.assign({ clef: this.defaults.clef, stem: this.defaults.stem }, options); + this.parse(line, options); + return this.builder.getElements().notes; + } + voice(notes, options = {}) { + options = Object.assign({ time: this.defaults.time }, options); + return this.factory.Voice(options).addTickables(notes); + } + addCommitHook(commitHook) { + this.builder.addCommitHook(commitHook); + } +} +EasyScore.DEBUG = false; + + +/***/ }), + +/***/ "./src/element.ts": +/*!************************!*\ + !*** ./src/element.ts ***! + \************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Element": () => (/* binding */ Element) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _registry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./registry */ "./src/registry.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// @author Mohit Cheppudira +// MIT License + + + + +/** + * Element implements a generic base class for VexFlow, with implementations + * of general functions and properties that can be inherited by all VexFlow elements. + */ +class Element { + constructor() { + var _a; + this.children = []; + this.attrs = { + id: Element.newID(), + el: undefined, + type: this.getCategory(), + classes: {}, + }; + this.rendered = false; + // If a default registry exist, then register with it right away. + (_a = _registry__WEBPACK_IMPORTED_MODULE_1__.Registry.getDefaultRegistry()) === null || _a === void 0 ? void 0 : _a.register(this); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.Element; + } + static newID() { + return `auto${Element.ID++}`; + } + addChildElement(child) { + this.children.push(child); + return this; + } + getCategory() { + return this.constructor.CATEGORY; + } + /** + * Set the element style used to render. + * + * Example: + * ```typescript + * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' }); + * element.draw(); + * ``` + * Note: If the element draws additional sub-elements (ie.: Modifiers in a Stave), + * the style can be applied to all of them by means of the context: + * ```typescript + * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' }); + * element.getContext().setFillStyle('red'); + * element.getContext().setStrokeStyle('red'); + * element.draw(); + * ``` + * or using drawWithStyle: + * ```typescript + * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' }); + * element.drawWithStyle(); + * ``` + */ + setStyle(style) { + this.style = style; + return this; + } + /** Set the element & associated children style used for rendering. */ + setGroupStyle(style) { + this.style = style; + this.children.forEach((child) => child.setGroupStyle(style)); + return this; + } + /** Get the element style used for rendering. */ + getStyle() { + return this.style; + } + /** Apply the element style to `context`. */ + applyStyle(context = this.context, style = this.getStyle()) { + if (!style) + return this; + if (!context) + return this; + context.save(); + if (style.shadowColor) + context.setShadowColor(style.shadowColor); + if (style.shadowBlur) + context.setShadowBlur(style.shadowBlur); + if (style.fillStyle) + context.setFillStyle(style.fillStyle); + if (style.strokeStyle) + context.setStrokeStyle(style.strokeStyle); + if (style.lineWidth) + context.setLineWidth(style.lineWidth); + return this; + } + /** Restore the style of `context`. */ + restoreStyle(context = this.context, style = this.getStyle()) { + if (!style) + return this; + if (!context) + return this; + context.restore(); + return this; + } + /** + * Draw the element and all its sub-elements (ie.: Modifiers in a Stave) + * with the element style. + */ + drawWithStyle() { + this.checkContext(); + this.applyStyle(); + this.draw(); + this.restoreStyle(); + } + /** Check if it has a class label (An element can have multiple class labels). */ + hasClass(className) { + return this.attrs.classes[className] === true; + } + /** Add a class label (An element can have multiple class labels). */ + addClass(className) { + var _a; + this.attrs.classes[className] = true; + (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({ + id: this.attrs.id, + name: 'class', + value: className, + oldValue: undefined, + }); + return this; + } + /** Remove a class label (An element can have multiple class labels). */ + removeClass(className) { + var _a; + delete this.attrs.classes[className]; + (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({ + id: this.attrs.id, + name: 'class', + value: undefined, + oldValue: className, + }); + return this; + } + /** Call back from registry after the element is registered. */ + onRegister(registry) { + this.registry = registry; + return this; + } + /** Return the rendered status. */ + isRendered() { + return this.rendered; + } + /** Set the rendered status. */ + setRendered(rendered = true) { + this.rendered = rendered; + return this; + } + /** Return the element attributes. */ + getAttributes() { + return this.attrs; + } + /** Return an attribute. */ + // eslint-disable-next-line + getAttribute(name) { + return this.attrs[name]; + } + /** Return associated SVGElement. */ + getSVGElement(suffix = '') { + const id = (0,_util__WEBPACK_IMPORTED_MODULE_3__.prefix)(this.attrs.id + suffix); + const element = document.getElementById(id); + if (element) + return element; + } + /** Set an attribute. */ + // eslint-disable-next-line + setAttribute(name, value) { + var _a; + const oldID = this.attrs.id; + const oldValue = this.attrs[name]; + this.attrs[name] = value; + // Register with old id to support id changes. + (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({ id: oldID, name, value, oldValue }); + return this; + } + /** Get the boundingBox. */ + getBoundingBox() { + return this.boundingBox; + } + /** Return the context. */ + getContext() { + return this.context; + } + /** Set the context. */ + setContext(context) { + this.context = context; + return this; + } + /** Validate and return the context. */ + checkContext() { + return (0,_util__WEBPACK_IMPORTED_MODULE_3__.defined)(this.context, 'NoContext', 'No rendering context attached to instance.'); + } + ////////////////////////////////////////////////////////////////////////////////////////////////// + // Font Handling + /** + * Provide a CSS compatible font string (e.g., 'bold 16px Arial'). + */ + set font(f) { + this.setFont(f); + } + /** Returns the CSS compatible font string. */ + get font() { + return _font__WEBPACK_IMPORTED_MODULE_0__.Font.toCSSString(this.textFont); + } + /** + * Set the element's font family, size, weight, style (e.g., `Arial`, `10pt`, `bold`, `italic`). + * @param font is 1) a `FontInfo` object or + * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or + * 3) a string representing the font family (at least one of `size`, `weight`, or `style` must also be provided). + * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt'). + * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900). + * @param style is a string (e.g., 'italic', 'normal'). + * If no arguments are provided, then the font is set to the default font. + * Each Element subclass may specify its own default by overriding the static `TEXT_FONT` property. + */ + setFont(font, size, weight, style) { + // Allow subclasses to override `TEXT_FONT`. + const defaultTextFont = this.constructor.TEXT_FONT; + const fontIsObject = typeof font === 'object'; + const fontIsString = typeof font === 'string'; + const fontIsUndefined = font === undefined; + const sizeWeightStyleAreUndefined = size === undefined && weight === undefined && style === undefined; + if (fontIsObject) { + // `font` is case 1) a FontInfo object + this.textFont = Object.assign(Object.assign({}, defaultTextFont), font); + } + else if (fontIsString && sizeWeightStyleAreUndefined) { + // `font` is case 2) CSS font shorthand. + this.textFont = _font__WEBPACK_IMPORTED_MODULE_0__.Font.fromCSSString(font); + } + else if (fontIsUndefined && sizeWeightStyleAreUndefined) { + // All arguments are undefined. Do not check for `arguments.length === 0`, + // which fails on the edge case: `setFont(undefined)`. + // TODO: See if we can remove this case entirely without introducing a visual diff. + // The else case below seems like it should be equivalent to this case. + this.textFont = Object.assign({}, defaultTextFont); + } + else { + // `font` is case 3) a font family string (e.g., 'Times New Roman'). + // The other parameters represent the size, weight, and style. + // It is okay for `font` to be undefined while one or more of the other arguments is provided. + // Following CSS conventions, unspecified params are reset to the default. + this.textFont = _font__WEBPACK_IMPORTED_MODULE_0__.Font.validate(font !== null && font !== void 0 ? font : defaultTextFont.family, size !== null && size !== void 0 ? size : defaultTextFont.size, weight !== null && weight !== void 0 ? weight : defaultTextFont.weight, style !== null && style !== void 0 ? style : defaultTextFont.style); + } + return this; + } + getFont() { + if (!this.textFont) { + this.resetFont(); + } + return _font__WEBPACK_IMPORTED_MODULE_0__.Font.toCSSString(this.textFont); + } + /** + * Reset the text font to the style indicated by the static `TEXT_FONT` property. + * Subclasses can call this to initialize `textFont` for the first time. + */ + resetFont() { + this.setFont(); + } + /** Return a copy of the current FontInfo object. */ + get fontInfo() { + if (!this.textFont) { + this.resetFont(); + } + // We can cast to Required here, because + // we just called resetFont() above to ensure this.textFont is set. + return Object.assign({}, this.textFont); + } + set fontInfo(fontInfo) { + this.setFont(fontInfo); + } + /** Change the font size, while keeping everything else the same. */ + setFontSize(size) { + const fontInfo = this.fontInfo; + this.setFont(fontInfo.family, size, fontInfo.weight, fontInfo.style); + return this; + } + /** + * @returns a CSS font-size string (e.g., '18pt', '12px', '1em'). + * See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes. + */ + getFontSize() { + return this.fontSize; + } + /** + * The size is 1) a string of the form '10pt' or '16px', compatible with the CSS font-size property. + * or 2) a number, which is interpreted as a point size (i.e. 12 == '12pt'). + */ + set fontSize(size) { + this.setFontSize(size); + } + /** + * @returns a CSS font-size string (e.g., '18pt', '12px', '1em'). + */ + get fontSize() { + let size = this.fontInfo.size; + if (typeof size === 'number') { + size = `${size}pt`; + } + return size; + } + /** + * @returns the font size in `pt`. + */ + get fontSizeInPoints() { + return _font__WEBPACK_IMPORTED_MODULE_0__.Font.convertSizeToPointValue(this.fontSize); + } + /** + * @returns the font size in `px`. + */ + get fontSizeInPixels() { + return _font__WEBPACK_IMPORTED_MODULE_0__.Font.convertSizeToPixelValue(this.fontSize); + } + /** + * @returns a CSS font-style string (e.g., 'italic'). + */ + get fontStyle() { + return this.fontInfo.style; + } + set fontStyle(style) { + const fontInfo = this.fontInfo; + this.setFont(fontInfo.family, fontInfo.size, fontInfo.weight, style); + } + /** + * @returns a CSS font-weight string (e.g., 'bold'). + * As in CSS, font-weight is always returned as a string, even if it was set as a number. + */ + get fontWeight() { + return this.fontInfo.weight + ''; + } + set fontWeight(weight) { + const fontInfo = this.fontInfo; + this.setFont(fontInfo.family, fontInfo.size, weight, fontInfo.style); + } +} +Element.ID = 1000; +/** + * Default font for text. This is not related to music engraving. Instead, see `Flow.setMusicFont(...fontNames)` + * to customize the font for musical symbols placed on the score. + */ +Element.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SANS_SERIF, + size: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SIZE, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.NORMAL, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL, +}; + + +/***/ }), + +/***/ "./src/factory.ts": +/*!************************!*\ + !*** ./src/factory.ts ***! + \************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Factory": () => (/* binding */ Factory) +/* harmony export */ }); +/* harmony import */ var _accidental__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./accidental */ "./src/accidental.ts"); +/* harmony import */ var _annotation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./annotation */ "./src/annotation.ts"); +/* harmony import */ var _articulation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./articulation */ "./src/articulation.ts"); +/* harmony import */ var _barnote__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./barnote */ "./src/barnote.ts"); +/* harmony import */ var _beam__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./beam */ "./src/beam.ts"); +/* harmony import */ var _chordsymbol__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./chordsymbol */ "./src/chordsymbol.ts"); +/* harmony import */ var _clefnote__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./clefnote */ "./src/clefnote.ts"); +/* harmony import */ var _curve__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./curve */ "./src/curve.ts"); +/* harmony import */ var _easyscore__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./easyscore */ "./src/easyscore.ts"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _formatter__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./formatter */ "./src/formatter.ts"); +/* harmony import */ var _frethandfinger__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./frethandfinger */ "./src/frethandfinger.ts"); +/* harmony import */ var _ghostnote__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ghostnote */ "./src/ghostnote.ts"); +/* harmony import */ var _glyphnote__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./glyphnote */ "./src/glyphnote.ts"); +/* harmony import */ var _gracenote__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./gracenote */ "./src/gracenote.ts"); +/* harmony import */ var _gracenotegroup__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./gracenotegroup */ "./src/gracenotegroup.ts"); +/* harmony import */ var _keysignote__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./keysignote */ "./src/keysignote.ts"); +/* harmony import */ var _modifiercontext__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./modifiercontext */ "./src/modifiercontext.ts"); +/* harmony import */ var _multimeasurerest__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./multimeasurerest */ "./src/multimeasurerest.ts"); +/* harmony import */ var _notesubgroup__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./notesubgroup */ "./src/notesubgroup.ts"); +/* harmony import */ var _ornament__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./ornament */ "./src/ornament.ts"); +/* harmony import */ var _pedalmarking__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./pedalmarking */ "./src/pedalmarking.ts"); +/* harmony import */ var _renderer__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./renderer */ "./src/renderer.ts"); +/* harmony import */ var _repeatnote__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./repeatnote */ "./src/repeatnote.ts"); +/* harmony import */ var _stave__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./stave */ "./src/stave.ts"); +/* harmony import */ var _staveconnector__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./staveconnector */ "./src/staveconnector.ts"); +/* harmony import */ var _staveline__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./staveline */ "./src/staveline.ts"); +/* harmony import */ var _stavenote__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _stavetie__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./stavetie */ "./src/stavetie.ts"); +/* harmony import */ var _stringnumber__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./stringnumber */ "./src/stringnumber.ts"); +/* harmony import */ var _system__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./system */ "./src/system.ts"); +/* harmony import */ var _tabnote__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./tabnote */ "./src/tabnote.ts"); +/* harmony import */ var _tabstave__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./tabstave */ "./src/tabstave.ts"); +/* harmony import */ var _textbracket__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./textbracket */ "./src/textbracket.ts"); +/* harmony import */ var _textdynamics__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./textdynamics */ "./src/textdynamics.ts"); +/* harmony import */ var _textnote__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./textnote */ "./src/textnote.ts"); +/* harmony import */ var _tickcontext__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./tickcontext */ "./src/tickcontext.ts"); +/* harmony import */ var _timesignote__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./timesignote */ "./src/timesignote.ts"); +/* harmony import */ var _tuplet__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./tuplet */ "./src/tuplet.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +/* harmony import */ var _vibratobracket__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./vibratobracket */ "./src/vibratobracket.ts"); +/* harmony import */ var _voice__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./voice */ "./src/voice.ts"); +/* harmony import */ var _web__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./web */ "./src/web.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// @author Mohit Cheppudira +// MIT License + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// eslint-disable-next-line +function L(...args) { + if (Factory.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_39__.log)('Vex.Flow.Factory', args); +} +/** + * Factory implements a high level API around VexFlow. + */ +class Factory { + /** + * Example: + * + * Create an SVG renderer and attach it to the DIV element named "boo" to render using 1200 and 600 + * + * `const vf: Factory = new Vex.Flow.Factory({renderer: { elementId: 'boo', width: 1200, height: 600 }});` + */ + constructor(options = {}) { + L('New factory: ', options); + this.options = { + stave: { + space: 10, + }, + renderer: { + elementId: '', + width: 500, + height: 200, + background: '#FFF', + }, + font: Factory.TEXT_FONT, + }; + this.setOptions(options); + } + /** + * Static simplified function to access constructor without providing FactoryOptions + * + * Example: + * + * Create an SVG renderer and attach it to the DIV element named "boo" to render using 1200 and 600 + * + * `const vf: Factory = Vex.Flow.Factory.newFromElementId('boo', 1200, 600 );` + */ + static newFromElementId(elementId, width = 500, height = 200) { + return new Factory({ renderer: { elementId, width, height } }); + } + reset() { + this.renderQ = []; + this.systems = []; + this.staves = []; + this.voices = []; + this.stave = undefined; // current stave + } + setOptions(options) { + this.options = Object.assign(Object.assign({}, this.options), options); + this.initRenderer(); + this.reset(); + } + initRenderer() { + const { elementId, width, height, background } = this.options.renderer; + if (elementId == null) { + return; + } + if (elementId == '') { + L(this); + throw new _util__WEBPACK_IMPORTED_MODULE_39__.RuntimeError('renderer.elementId not set in FactoryOptions'); + } + let backend = this.options.renderer.backend; + if (backend === undefined) { + const elem = document.getElementById(elementId); + // We use a custom type check here, because node-canvas mimics canvas, + // but is not an instance of window.HTMLCanvasElement. + // In fact, `window` might be undefined here. + // See: https://www.npmjs.com/package/canvas + if ((0,_web__WEBPACK_IMPORTED_MODULE_42__.isHTMLCanvas)(elem)) { + backend = _renderer__WEBPACK_IMPORTED_MODULE_22__.Renderer.Backends.CANVAS; + } + else { + backend = _renderer__WEBPACK_IMPORTED_MODULE_22__.Renderer.Backends.SVG; + } + } + this.context = _renderer__WEBPACK_IMPORTED_MODULE_22__.Renderer.buildContext(elementId, backend, width, height, background); + } + getContext() { + return this.context; + } + setContext(context) { + this.context = context; + return this; + } + getStave() { + return this.stave; + } + getVoices() { + return this.voices; + } + /** Return pixels from current stave spacing. */ + Stave(params) { + const staveSpace = this.options.stave.space; + const p = Object.assign({ x: 0, y: 0, width: this.options.renderer.width - staveSpace * 1.0, options: { spacing_between_lines_px: staveSpace * 1.0 } }, params); + const stave = new _stave__WEBPACK_IMPORTED_MODULE_24__.Stave(p.x, p.y, p.width, p.options); + this.staves.push(stave); + stave.setContext(this.context); + this.stave = stave; + return stave; + } + TabStave(params) { + const staveSpace = this.options.stave.space; + const p = Object.assign({ x: 0, y: 0, width: this.options.renderer.width - staveSpace * 1.0, options: { spacing_between_lines_px: staveSpace * 1.3 } }, params); + const stave = new _tabstave__WEBPACK_IMPORTED_MODULE_32__.TabStave(p.x, p.y, p.width, p.options); + this.staves.push(stave); + stave.setContext(this.context); + this.stave = stave; + return stave; + } + StaveNote(noteStruct) { + const note = new _stavenote__WEBPACK_IMPORTED_MODULE_27__.StaveNote(noteStruct); + if (this.stave) + note.setStave(this.stave); + note.setContext(this.context); + this.renderQ.push(note); + return note; + } + GlyphNote(glyph, noteStruct, options) { + const note = new _glyphnote__WEBPACK_IMPORTED_MODULE_13__.GlyphNote(glyph, noteStruct, options); + if (this.stave) + note.setStave(this.stave); + note.setContext(this.context); + this.renderQ.push(note); + return note; + } + RepeatNote(type, noteStruct, options) { + const note = new _repeatnote__WEBPACK_IMPORTED_MODULE_23__.RepeatNote(type, noteStruct, options); + if (this.stave) + note.setStave(this.stave); + note.setContext(this.context); + this.renderQ.push(note); + return note; + } + GhostNote(noteStruct) { + const ghostNote = new _ghostnote__WEBPACK_IMPORTED_MODULE_12__.GhostNote(noteStruct); + if (this.stave) + ghostNote.setStave(this.stave); + ghostNote.setContext(this.context); + this.renderQ.push(ghostNote); + return ghostNote; + } + TextNote(noteStruct) { + const textNote = new _textnote__WEBPACK_IMPORTED_MODULE_35__.TextNote(noteStruct); + if (this.stave) + textNote.setStave(this.stave); + textNote.setContext(this.context); + this.renderQ.push(textNote); + return textNote; + } + BarNote(params = {}) { + const barNote = new _barnote__WEBPACK_IMPORTED_MODULE_3__.BarNote(params.type); + if (this.stave) + barNote.setStave(this.stave); + barNote.setContext(this.context); + this.renderQ.push(barNote); + return barNote; + } + ClefNote(params) { + const p = Object.assign({ type: 'treble', options: { + size: 'default', + annotation: undefined, + } }, params); + const clefNote = new _clefnote__WEBPACK_IMPORTED_MODULE_6__.ClefNote(p.type, p.options.size, p.options.annotation); + if (this.stave) + clefNote.setStave(this.stave); + clefNote.setContext(this.context); + this.renderQ.push(clefNote); + return clefNote; + } + TimeSigNote(params) { + const p = Object.assign({ time: '4/4' }, params); + const timeSigNote = new _timesignote__WEBPACK_IMPORTED_MODULE_37__.TimeSigNote(p.time); + if (this.stave) + timeSigNote.setStave(this.stave); + timeSigNote.setContext(this.context); + this.renderQ.push(timeSigNote); + return timeSigNote; + } + KeySigNote(params) { + const keySigNote = new _keysignote__WEBPACK_IMPORTED_MODULE_16__.KeySigNote(params.key, params.cancelKey, params.alterKey); + if (this.stave) + keySigNote.setStave(this.stave); + keySigNote.setContext(this.context); + this.renderQ.push(keySigNote); + return keySigNote; + } + TabNote(noteStruct) { + const note = new _tabnote__WEBPACK_IMPORTED_MODULE_31__.TabNote(noteStruct); + if (this.stave) + note.setStave(this.stave); + note.setContext(this.context); + this.renderQ.push(note); + return note; + } + GraceNote(noteStruct) { + const note = new _gracenote__WEBPACK_IMPORTED_MODULE_14__.GraceNote(noteStruct); + if (this.stave) + note.setStave(this.stave); + note.setContext(this.context); + return note; + } + GraceNoteGroup(params) { + const group = new _gracenotegroup__WEBPACK_IMPORTED_MODULE_15__.GraceNoteGroup(params.notes, params.slur); + group.setContext(this.context); + return group; + } + Accidental(params) { + const accid = new _accidental__WEBPACK_IMPORTED_MODULE_0__.Accidental(params.type); + accid.setContext(this.context); + return accid; + } + Annotation(params) { + const p = Object.assign({ text: 'p', hJustify: _annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationHorizontalJustify.CENTER, vJustify: _annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify.BOTTOM }, params); + const annotation = new _annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation(p.text); + annotation.setJustification(p.hJustify); + annotation.setVerticalJustification(p.vJustify); + annotation.setFont(p.font); + annotation.setContext(this.context); + return annotation; + } + ChordSymbol(params) { + const p = Object.assign({ vJustify: 'top', hJustify: 'center', kerning: true, reportWidth: true }, params); + const chordSymbol = new _chordsymbol__WEBPACK_IMPORTED_MODULE_5__.ChordSymbol(); + chordSymbol.setHorizontal(p.hJustify); + chordSymbol.setVertical(p.vJustify); + chordSymbol.setEnableKerning(p.kerning); + chordSymbol.setReportWidth(p.reportWidth); + // There is a default font based on the engraving font. Only set then + // font if it is specific, else use the default + if (typeof p.fontFamily === 'string' && typeof p.fontSize === 'number') { + if (typeof p.fontWeight === 'string') + chordSymbol.setFont(p.fontFamily, p.fontSize, p.fontWeight); + else + chordSymbol.setFont(p.fontFamily, p.fontSize, ''); + } + else if (typeof p.fontSize === 'number') { + chordSymbol.setFontSize(p.fontSize); + } + chordSymbol.setContext(this.context); + return chordSymbol; + } + Articulation(params) { + const p = Object.assign({ type: 'a.', position: 'above' }, params); + const articulation = new _articulation__WEBPACK_IMPORTED_MODULE_2__.Articulation(p.type); + articulation.setPosition(p.position); + articulation.setContext(this.context); + return articulation; + } + Ornament(type, params) { + const options = Object.assign({ type, position: 0, accidental: '' }, params); + const ornament = new _ornament__WEBPACK_IMPORTED_MODULE_20__.Ornament(type); + ornament.setPosition(options.position); + if (options.upperAccidental) { + ornament.setUpperAccidental(options.upperAccidental); + } + if (options.lowerAccidental) { + ornament.setLowerAccidental(options.lowerAccidental); + } + if (typeof options.delayed !== 'undefined') { + ornament.setDelayed(options.delayed); + } + ornament.setContext(this.context); + return ornament; + } + TextDynamics(params) { + const p = Object.assign({ text: 'p', duration: 'q', dots: 0, line: 0 }, params); + const text = new _textdynamics__WEBPACK_IMPORTED_MODULE_34__.TextDynamics({ + text: p.text, + line: p.line, + duration: p.duration, + dots: p.dots, + }); + if (this.stave) + text.setStave(this.stave); + text.setContext(this.context); + this.renderQ.push(text); + return text; + } + Fingering(params) { + const p = Object.assign({ number: '0', position: 'left' }, params); + const fingering = new _frethandfinger__WEBPACK_IMPORTED_MODULE_11__.FretHandFinger(p.number); + fingering.setPosition(p.position); + fingering.setContext(this.context); + return fingering; + } + StringNumber(params, drawCircle = true) { + const stringNumber = new _stringnumber__WEBPACK_IMPORTED_MODULE_29__.StringNumber(params.number); + stringNumber.setPosition(params.position); + stringNumber.setContext(this.context); + stringNumber.setDrawCircle(drawCircle); + return stringNumber; + } + TickContext() { + return new _tickcontext__WEBPACK_IMPORTED_MODULE_36__.TickContext(); + } + ModifierContext() { + return new _modifiercontext__WEBPACK_IMPORTED_MODULE_17__.ModifierContext(); + } + MultiMeasureRest(params) { + const numMeasures = (0,_util__WEBPACK_IMPORTED_MODULE_39__.defined)(params.number_of_measures, 'NoNumberOfMeasures'); + const multiMeasureRest = new _multimeasurerest__WEBPACK_IMPORTED_MODULE_18__.MultiMeasureRest(numMeasures, params); + multiMeasureRest.setContext(this.context); + this.renderQ.push(multiMeasureRest); + return multiMeasureRest; + } + Voice(params) { + const p = Object.assign({ time: '4/4' }, params); + const voice = new _voice__WEBPACK_IMPORTED_MODULE_41__.Voice(p.time); + this.voices.push(voice); + return voice; + } + StaveConnector(params) { + const connector = new _staveconnector__WEBPACK_IMPORTED_MODULE_25__.StaveConnector(params.top_stave, params.bottom_stave); + connector.setType(params.type).setContext(this.context); + this.renderQ.push(connector); + return connector; + } + Formatter(options) { + return new _formatter__WEBPACK_IMPORTED_MODULE_10__.Formatter(options); + } + Tuplet(params) { + const p = Object.assign({ notes: [], options: {} }, params); + const tuplet = new _tuplet__WEBPACK_IMPORTED_MODULE_38__.Tuplet(p.notes, p.options).setContext(this.context); + this.renderQ.push(tuplet); + return tuplet; + } + Beam(params) { + var _a, _b, _c, _d, _e; + const beam = new _beam__WEBPACK_IMPORTED_MODULE_4__.Beam(params.notes, (_a = params.options) === null || _a === void 0 ? void 0 : _a.autoStem).setContext(this.context); + beam.breakSecondaryAt((_c = (_b = params.options) === null || _b === void 0 ? void 0 : _b.secondaryBeamBreaks) !== null && _c !== void 0 ? _c : []); + if ((_d = params.options) === null || _d === void 0 ? void 0 : _d.partialBeamDirections) { + Object.entries((_e = params.options) === null || _e === void 0 ? void 0 : _e.partialBeamDirections).forEach(([noteIndex, direction]) => { + beam.setPartialBeamSideAt(Number(noteIndex), direction); + }); + } + this.renderQ.push(beam); + return beam; + } + Curve(params) { + const curve = new _curve__WEBPACK_IMPORTED_MODULE_7__.Curve(params.from, params.to, params.options).setContext(this.context); + this.renderQ.push(curve); + return curve; + } + StaveTie(params) { + var _a; + const tie = new _stavetie__WEBPACK_IMPORTED_MODULE_28__.StaveTie({ + first_note: params.from, + last_note: params.to, + first_indices: params.first_indices, + last_indices: params.last_indices, + }, params.text); + if ((_a = params.options) === null || _a === void 0 ? void 0 : _a.direction) + tie.setDirection(params.options.direction); + tie.setContext(this.context); + this.renderQ.push(tie); + return tie; + } + StaveLine(params) { + var _a, _b; + const line = new _staveline__WEBPACK_IMPORTED_MODULE_26__.StaveLine({ + first_note: params.from, + last_note: params.to, + first_indices: params.first_indices, + last_indices: params.last_indices, + }); + if ((_a = params.options) === null || _a === void 0 ? void 0 : _a.text) + line.setText(params.options.text); + if ((_b = params.options) === null || _b === void 0 ? void 0 : _b.font) + line.setFont(params.options.font); + line.setContext(this.context); + this.renderQ.push(line); + return line; + } + VibratoBracket(params) { + const vibratoBracket = new _vibratobracket__WEBPACK_IMPORTED_MODULE_40__.VibratoBracket({ + start: params.from, + stop: params.to, + }); + if (params.options.line) + vibratoBracket.setLine(params.options.line); + if (params.options.harsh) + vibratoBracket.setHarsh(params.options.harsh); + vibratoBracket.setContext(this.context); + this.renderQ.push(vibratoBracket); + return vibratoBracket; + } + TextBracket(params) { + const textBracket = new _textbracket__WEBPACK_IMPORTED_MODULE_33__.TextBracket({ + start: params.from, + stop: params.to, + text: params.text, + superscript: params.options.superscript, + position: params.options.position, + }); + if (params.options.line) + textBracket.setLine(params.options.line); + if (params.options.font) + textBracket.setFont(params.options.font); + textBracket.setContext(this.context); + this.renderQ.push(textBracket); + return textBracket; + } + System(params = {}) { + params.factory = this; + const system = new _system__WEBPACK_IMPORTED_MODULE_30__.System(params).setContext(this.context); + this.systems.push(system); + return system; + } + /** + * Creates EasyScore. Normally the first step after constructing a Factory. For example: + * ``` + * const vf: Factory = new Vex.Flow.Factory({renderer: { elementId: 'boo', width: 1200, height: 600 }}); + * const score: EasyScore = vf.EasyScore(); + * ``` + * @param options.factory optional instance of Factory + * @param options.builder instance of Builder + * @param options.commitHooks function to call after a note element is created + * @param options.throwOnError throw error in case of parsing error + */ + EasyScore(options = {}) { + options.factory = this; + return new _easyscore__WEBPACK_IMPORTED_MODULE_8__.EasyScore(options); + } + PedalMarking(params) { + const p = Object.assign({ notes: [], options: { + style: 'mixed', + } }, params); + const pedal = new _pedalmarking__WEBPACK_IMPORTED_MODULE_21__.PedalMarking(p.notes); + pedal.setType(_pedalmarking__WEBPACK_IMPORTED_MODULE_21__.PedalMarking.typeString[p.options.style]); + pedal.setContext(this.context); + this.renderQ.push(pedal); + return pedal; + } + NoteSubGroup(params) { + const p = Object.assign({ notes: [] }, params); + const group = new _notesubgroup__WEBPACK_IMPORTED_MODULE_19__.NoteSubGroup(p.notes); + group.setContext(this.context); + return group; + } + /** Render the score. */ + draw() { + const ctx = this.context; + this.systems.forEach((s) => s.setContext(ctx).format()); + this.staves.forEach((s) => s.setContext(ctx).draw()); + this.voices.forEach((v) => v.setContext(ctx).draw()); + this.renderQ.forEach((e) => { + if (!e.isRendered()) + e.setContext(ctx).draw(); + }); + this.systems.forEach((s) => s.setContext(ctx).draw()); + this.reset(); + } +} +/** To enable logging for this class. Set `Vex.Flow.Factory.DEBUG` to `true`. */ +Factory.DEBUG = false; +/** Default text font. */ +Factory.TEXT_FONT = Object.assign({}, _element__WEBPACK_IMPORTED_MODULE_9__.Element.TEXT_FONT); + + +/***/ }), + +/***/ "./src/flow.ts": +/*!*********************!*\ + !*** ./src/flow.ts ***! + \*********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Flow": () => (/* binding */ Flow) +/* harmony export */ }); +/* harmony import */ var _accidental__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./accidental */ "./src/accidental.ts"); +/* harmony import */ var _annotation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./annotation */ "./src/annotation.ts"); +/* harmony import */ var _articulation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./articulation */ "./src/articulation.ts"); +/* harmony import */ var _barnote__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./barnote */ "./src/barnote.ts"); +/* harmony import */ var _beam__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./beam */ "./src/beam.ts"); +/* harmony import */ var _bend__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./bend */ "./src/bend.ts"); +/* harmony import */ var _boundingbox__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./boundingbox */ "./src/boundingbox.ts"); +/* harmony import */ var _boundingboxcomputation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./boundingboxcomputation */ "./src/boundingboxcomputation.ts"); +/* harmony import */ var _canvascontext__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./canvascontext */ "./src/canvascontext.ts"); +/* harmony import */ var _chordsymbol__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./chordsymbol */ "./src/chordsymbol.ts"); +/* harmony import */ var _clef__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./clef */ "./src/clef.ts"); +/* harmony import */ var _clefnote__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./clefnote */ "./src/clefnote.ts"); +/* harmony import */ var _crescendo__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./crescendo */ "./src/crescendo.ts"); +/* harmony import */ var _curve__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./curve */ "./src/curve.ts"); +/* harmony import */ var _dot__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./dot */ "./src/dot.ts"); +/* harmony import */ var _easyscore__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./easyscore */ "./src/easyscore.ts"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _factory__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./factory */ "./src/factory.ts"); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _formatter__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./formatter */ "./src/formatter.ts"); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./fraction */ "./src/fraction.ts"); +/* harmony import */ var _frethandfinger__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./frethandfinger */ "./src/frethandfinger.ts"); +/* harmony import */ var _ghostnote__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./ghostnote */ "./src/ghostnote.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _glyphnote__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./glyphnote */ "./src/glyphnote.ts"); +/* harmony import */ var _gracenote__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./gracenote */ "./src/gracenote.ts"); +/* harmony import */ var _gracenotegroup__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./gracenotegroup */ "./src/gracenotegroup.ts"); +/* harmony import */ var _gracetabnote__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./gracetabnote */ "./src/gracetabnote.ts"); +/* harmony import */ var _keymanager__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./keymanager */ "./src/keymanager.ts"); +/* harmony import */ var _keysignature__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./keysignature */ "./src/keysignature.ts"); +/* harmony import */ var _keysignote__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./keysignote */ "./src/keysignote.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _modifiercontext__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./modifiercontext */ "./src/modifiercontext.ts"); +/* harmony import */ var _multimeasurerest__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./multimeasurerest */ "./src/multimeasurerest.ts"); +/* harmony import */ var _music__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./music */ "./src/music.ts"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _notehead__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./notehead */ "./src/notehead.ts"); +/* harmony import */ var _notesubgroup__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./notesubgroup */ "./src/notesubgroup.ts"); +/* harmony import */ var _ornament__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./ornament */ "./src/ornament.ts"); +/* harmony import */ var _parenthesis__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./parenthesis */ "./src/parenthesis.ts"); +/* harmony import */ var _parser__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./parser */ "./src/parser.ts"); +/* harmony import */ var _pedalmarking__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./pedalmarking */ "./src/pedalmarking.ts"); +/* harmony import */ var _registry__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./registry */ "./src/registry.ts"); +/* harmony import */ var _rendercontext__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./rendercontext */ "./src/rendercontext.ts"); +/* harmony import */ var _renderer__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./renderer */ "./src/renderer.ts"); +/* harmony import */ var _repeatnote__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./repeatnote */ "./src/repeatnote.ts"); +/* harmony import */ var _stave__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./stave */ "./src/stave.ts"); +/* harmony import */ var _stavebarline__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./stavebarline */ "./src/stavebarline.ts"); +/* harmony import */ var _staveconnector__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./staveconnector */ "./src/staveconnector.ts"); +/* harmony import */ var _stavehairpin__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./stavehairpin */ "./src/stavehairpin.ts"); +/* harmony import */ var _staveline__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./staveline */ "./src/staveline.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _stavenote__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _staverepetition__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./staverepetition */ "./src/staverepetition.ts"); +/* harmony import */ var _stavetempo__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./stavetempo */ "./src/stavetempo.ts"); +/* harmony import */ var _stavetext__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./stavetext */ "./src/stavetext.ts"); +/* harmony import */ var _stavetie__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./stavetie */ "./src/stavetie.ts"); +/* harmony import */ var _stavevolta__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./stavevolta */ "./src/stavevolta.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _stringnumber__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./stringnumber */ "./src/stringnumber.ts"); +/* harmony import */ var _strokes__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./strokes */ "./src/strokes.ts"); +/* harmony import */ var _svgcontext__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./svgcontext */ "./src/svgcontext.ts"); +/* harmony import */ var _system__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ./system */ "./src/system.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _tabnote__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./tabnote */ "./src/tabnote.ts"); +/* harmony import */ var _tabslide__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./tabslide */ "./src/tabslide.ts"); +/* harmony import */ var _tabstave__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./tabstave */ "./src/tabstave.ts"); +/* harmony import */ var _tabtie__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./tabtie */ "./src/tabtie.ts"); +/* harmony import */ var _textbracket__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./textbracket */ "./src/textbracket.ts"); +/* harmony import */ var _textdynamics__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./textdynamics */ "./src/textdynamics.ts"); +/* harmony import */ var _textformatter__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ./textformatter */ "./src/textformatter.ts"); +/* harmony import */ var _textnote__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ./textnote */ "./src/textnote.ts"); +/* harmony import */ var _tickcontext__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ./tickcontext */ "./src/tickcontext.ts"); +/* harmony import */ var _timesignature__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ./timesignature */ "./src/timesignature.ts"); +/* harmony import */ var _timesignote__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ./timesignote */ "./src/timesignote.ts"); +/* harmony import */ var _tremolo__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ./tremolo */ "./src/tremolo.ts"); +/* harmony import */ var _tuning__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ./tuning */ "./src/tuning.ts"); +/* harmony import */ var _tuplet__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ./tuplet */ "./src/tuplet.ts"); +/* harmony import */ var _version__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ./version */ "./src/version.ts"); +/* harmony import */ var _vibrato__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ./vibrato */ "./src/vibrato.ts"); +/* harmony import */ var _vibratobracket__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ./vibratobracket */ "./src/vibratobracket.ts"); +/* harmony import */ var _voice__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ./voice */ "./src/voice.ts"); +var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +class Flow { + static get BUILD() { + return { + /** version number. */ + VERSION: _version__WEBPACK_IMPORTED_MODULE_78__.VERSION, + /** git commit ID that this library was built from. */ + ID: _version__WEBPACK_IMPORTED_MODULE_78__.ID, + /** The date when this library was compiled. */ + DATE: _version__WEBPACK_IMPORTED_MODULE_78__.DATE, + }; + } + /** + * Examples: + * ``` + * Vex.Flow.setMusicFont('Petaluma'); + * Vex.Flow.setMusicFont('Bravura', 'Gonville'); + * ``` + * + * **CASE 1**: You are using `vexflow.js`, which includes all music fonts (Bravura, Gonville, Petaluma, Custom). + * In this case, calling this method is optional, since VexFlow already defaults to a music font stack of: + * 'Bravura', 'Gonville', 'Custom'. + * + * **CASE 2**: You are using `vexflow-bravura.js` or `vexflow-petaluma.js` or `vexflow-gonville.js`, + * which includes a single music font. Calling this method is unnecessary. + * + * **CASE 3**: You are using the light weight `vexflow-core.js` to take advantage of lazy loading for fonts. + * In this case, the default music font stack is empty. + * Example: + * ``` + * await Vex.Flow.fetchMusicFont('Petaluma'); + * Vex.Flow.setMusicFont('Petaluma'); + * ... (do VexFlow stuff) ... + * ``` + * See `demos/fonts/` for more examples. + * + * @returns an array of Font objects corresponding to the provided `fontNames`. + */ + static setMusicFont(...fontNames) { + // Convert the array of font names into an array of Font objects. + const fonts = fontNames.map((fontName) => _font__WEBPACK_IMPORTED_MODULE_18__.Font.load(fontName)); + _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.MUSIC_FONT_STACK = fonts; + _glyph__WEBPACK_IMPORTED_MODULE_23__.Glyph.MUSIC_FONT_STACK = fonts.slice(); + _glyph__WEBPACK_IMPORTED_MODULE_23__.Glyph.CURRENT_CACHE_KEY = fontNames.join(','); + return fonts; + } + /** + * Used with vexflow-core which supports dynamic font loading. + */ + // eslint-disable-next-line + static fetchMusicFont(fontName, fontModuleOrPath) { + return __awaiter(this, void 0, void 0, function* () { + // The default implementation does nothing. + // See vexflow-core.ts for the implementation that vexflow-core.js uses. + }); + } + static getMusicFont() { + const fonts = _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.MUSIC_FONT_STACK; + return fonts.map((font) => font.getName()); + } + static get RENDER_PRECISION_PLACES() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.RENDER_PRECISION_PLACES; + } + static set RENDER_PRECISION_PLACES(precision) { + _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.RENDER_PRECISION_PLACES = precision; + } + static get SOFTMAX_FACTOR() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.SOFTMAX_FACTOR; + } + static set SOFTMAX_FACTOR(factor) { + _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.SOFTMAX_FACTOR = factor; + } + static get NOTATION_FONT_SCALE() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.NOTATION_FONT_SCALE; + } + static set NOTATION_FONT_SCALE(value) { + _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.NOTATION_FONT_SCALE = value; + } + static get TABLATURE_FONT_SCALE() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.TABLATURE_FONT_SCALE; + } + static set TABLATURE_FONT_SCALE(value) { + _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.TABLATURE_FONT_SCALE = value; + } + static get RESOLUTION() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.RESOLUTION; + } + static set RESOLUTION(value) { + _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.RESOLUTION = value; + } + static get SLASH_NOTEHEAD_WIDTH() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.SLASH_NOTEHEAD_WIDTH; + } + static set SLASH_NOTEHEAD_WIDTH(value) { + _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.SLASH_NOTEHEAD_WIDTH = value; + } + static get STAVE_LINE_DISTANCE() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.STAVE_LINE_DISTANCE; + } + static set STAVE_LINE_DISTANCE(value) { + _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.STAVE_LINE_DISTANCE = value; + } + static get STAVE_LINE_THICKNESS() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.STAVE_LINE_THICKNESS; + } + static set STAVE_LINE_THICKNESS(value) { + _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.STAVE_LINE_THICKNESS = value; + } + static get STEM_HEIGHT() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.STEM_HEIGHT; + } + static set STEM_HEIGHT(value) { + _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.STEM_HEIGHT = value; + } + static get STEM_WIDTH() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.STEM_WIDTH; + } + static set STEM_WIDTH(value) { + _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.STEM_WIDTH = value; + } + static get TIME4_4() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.TIME4_4; + } + static get accidentalMap() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.accidentalMap; + } + static get unicode() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.unicode; + } + static keySignature(spec) { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.keySignature(spec); + } + static hasKeySignature(spec) { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.hasKeySignature(spec); + } + static getKeySignatures() { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.getKeySignatures(); + } + static clefProperties(clef) { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.clefProperties(clef); + } + // eslint-disable-next-line + static keyProperties(key, clef, params) { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.keyProperties(key, clef, params); + } + static durationToTicks(duration) { + return _tables__WEBPACK_IMPORTED_MODULE_63__.Tables.durationToTicks(duration); + } +} +Flow.Accidental = _accidental__WEBPACK_IMPORTED_MODULE_0__.Accidental; +Flow.Annotation = _annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation; +Flow.Articulation = _articulation__WEBPACK_IMPORTED_MODULE_2__.Articulation; +Flow.Barline = _stavebarline__WEBPACK_IMPORTED_MODULE_47__.Barline; +Flow.BarNote = _barnote__WEBPACK_IMPORTED_MODULE_3__.BarNote; +Flow.Beam = _beam__WEBPACK_IMPORTED_MODULE_4__.Beam; +Flow.Bend = _bend__WEBPACK_IMPORTED_MODULE_5__.Bend; +Flow.BoundingBox = _boundingbox__WEBPACK_IMPORTED_MODULE_6__.BoundingBox; +Flow.BoundingBoxComputation = _boundingboxcomputation__WEBPACK_IMPORTED_MODULE_7__.BoundingBoxComputation; +Flow.CanvasContext = _canvascontext__WEBPACK_IMPORTED_MODULE_8__.CanvasContext; +Flow.ChordSymbol = _chordsymbol__WEBPACK_IMPORTED_MODULE_9__.ChordSymbol; +Flow.Clef = _clef__WEBPACK_IMPORTED_MODULE_10__.Clef; +Flow.ClefNote = _clefnote__WEBPACK_IMPORTED_MODULE_11__.ClefNote; +Flow.Crescendo = _crescendo__WEBPACK_IMPORTED_MODULE_12__.Crescendo; +Flow.Curve = _curve__WEBPACK_IMPORTED_MODULE_13__.Curve; +Flow.Dot = _dot__WEBPACK_IMPORTED_MODULE_14__.Dot; +Flow.EasyScore = _easyscore__WEBPACK_IMPORTED_MODULE_15__.EasyScore; +Flow.Element = _element__WEBPACK_IMPORTED_MODULE_16__.Element; +Flow.Factory = _factory__WEBPACK_IMPORTED_MODULE_17__.Factory; +Flow.Font = _font__WEBPACK_IMPORTED_MODULE_18__.Font; +Flow.Formatter = _formatter__WEBPACK_IMPORTED_MODULE_19__.Formatter; +Flow.Fraction = _fraction__WEBPACK_IMPORTED_MODULE_20__.Fraction; +Flow.FretHandFinger = _frethandfinger__WEBPACK_IMPORTED_MODULE_21__.FretHandFinger; +Flow.GhostNote = _ghostnote__WEBPACK_IMPORTED_MODULE_22__.GhostNote; +Flow.Glyph = _glyph__WEBPACK_IMPORTED_MODULE_23__.Glyph; +Flow.GlyphNote = _glyphnote__WEBPACK_IMPORTED_MODULE_24__.GlyphNote; +Flow.GraceNote = _gracenote__WEBPACK_IMPORTED_MODULE_25__.GraceNote; +Flow.GraceNoteGroup = _gracenotegroup__WEBPACK_IMPORTED_MODULE_26__.GraceNoteGroup; +Flow.GraceTabNote = _gracetabnote__WEBPACK_IMPORTED_MODULE_27__.GraceTabNote; +Flow.KeyManager = _keymanager__WEBPACK_IMPORTED_MODULE_28__.KeyManager; +Flow.KeySignature = _keysignature__WEBPACK_IMPORTED_MODULE_29__.KeySignature; +Flow.KeySigNote = _keysignote__WEBPACK_IMPORTED_MODULE_30__.KeySigNote; +Flow.Modifier = _modifier__WEBPACK_IMPORTED_MODULE_31__.Modifier; +Flow.ModifierContext = _modifiercontext__WEBPACK_IMPORTED_MODULE_32__.ModifierContext; +Flow.MultiMeasureRest = _multimeasurerest__WEBPACK_IMPORTED_MODULE_33__.MultiMeasureRest; +Flow.Music = _music__WEBPACK_IMPORTED_MODULE_34__.Music; +Flow.Note = _note__WEBPACK_IMPORTED_MODULE_35__.Note; +Flow.NoteHead = _notehead__WEBPACK_IMPORTED_MODULE_36__.NoteHead; +Flow.NoteSubGroup = _notesubgroup__WEBPACK_IMPORTED_MODULE_37__.NoteSubGroup; +Flow.Ornament = _ornament__WEBPACK_IMPORTED_MODULE_38__.Ornament; +Flow.Parenthesis = _parenthesis__WEBPACK_IMPORTED_MODULE_39__.Parenthesis; +Flow.Parser = _parser__WEBPACK_IMPORTED_MODULE_40__.Parser; +Flow.PedalMarking = _pedalmarking__WEBPACK_IMPORTED_MODULE_41__.PedalMarking; +Flow.Registry = _registry__WEBPACK_IMPORTED_MODULE_42__.Registry; +Flow.RenderContext = _rendercontext__WEBPACK_IMPORTED_MODULE_43__.RenderContext; +Flow.Renderer = _renderer__WEBPACK_IMPORTED_MODULE_44__.Renderer; +Flow.RepeatNote = _repeatnote__WEBPACK_IMPORTED_MODULE_45__.RepeatNote; +Flow.Repetition = _staverepetition__WEBPACK_IMPORTED_MODULE_53__.Repetition; +Flow.Stave = _stave__WEBPACK_IMPORTED_MODULE_46__.Stave; +Flow.StaveConnector = _staveconnector__WEBPACK_IMPORTED_MODULE_48__.StaveConnector; +Flow.StaveHairpin = _stavehairpin__WEBPACK_IMPORTED_MODULE_49__.StaveHairpin; +Flow.StaveLine = _staveline__WEBPACK_IMPORTED_MODULE_50__.StaveLine; +Flow.StaveModifier = _stavemodifier__WEBPACK_IMPORTED_MODULE_51__.StaveModifier; +Flow.StaveNote = _stavenote__WEBPACK_IMPORTED_MODULE_52__.StaveNote; +Flow.StaveTempo = _stavetempo__WEBPACK_IMPORTED_MODULE_54__.StaveTempo; +Flow.StaveText = _stavetext__WEBPACK_IMPORTED_MODULE_55__.StaveText; +Flow.StaveTie = _stavetie__WEBPACK_IMPORTED_MODULE_56__.StaveTie; +Flow.Stem = _stem__WEBPACK_IMPORTED_MODULE_58__.Stem; +Flow.StringNumber = _stringnumber__WEBPACK_IMPORTED_MODULE_59__.StringNumber; +Flow.Stroke = _strokes__WEBPACK_IMPORTED_MODULE_60__.Stroke; +Flow.SVGContext = _svgcontext__WEBPACK_IMPORTED_MODULE_61__.SVGContext; +Flow.System = _system__WEBPACK_IMPORTED_MODULE_62__.System; +Flow.TabNote = _tabnote__WEBPACK_IMPORTED_MODULE_64__.TabNote; +Flow.TabSlide = _tabslide__WEBPACK_IMPORTED_MODULE_65__.TabSlide; +Flow.TabStave = _tabstave__WEBPACK_IMPORTED_MODULE_66__.TabStave; +Flow.TabTie = _tabtie__WEBPACK_IMPORTED_MODULE_67__.TabTie; +Flow.TextBracket = _textbracket__WEBPACK_IMPORTED_MODULE_68__.TextBracket; +Flow.TextDynamics = _textdynamics__WEBPACK_IMPORTED_MODULE_69__.TextDynamics; +Flow.TextFormatter = _textformatter__WEBPACK_IMPORTED_MODULE_70__.TextFormatter; +Flow.TextNote = _textnote__WEBPACK_IMPORTED_MODULE_71__.TextNote; +Flow.TickContext = _tickcontext__WEBPACK_IMPORTED_MODULE_72__.TickContext; +Flow.TimeSignature = _timesignature__WEBPACK_IMPORTED_MODULE_73__.TimeSignature; +Flow.TimeSigNote = _timesignote__WEBPACK_IMPORTED_MODULE_74__.TimeSigNote; +Flow.Tremolo = _tremolo__WEBPACK_IMPORTED_MODULE_75__.Tremolo; +Flow.Tuning = _tuning__WEBPACK_IMPORTED_MODULE_76__.Tuning; +Flow.Tuplet = _tuplet__WEBPACK_IMPORTED_MODULE_77__.Tuplet; +Flow.Vibrato = _vibrato__WEBPACK_IMPORTED_MODULE_79__.Vibrato; +Flow.VibratoBracket = _vibratobracket__WEBPACK_IMPORTED_MODULE_80__.VibratoBracket; +Flow.Voice = _voice__WEBPACK_IMPORTED_MODULE_81__.Voice; +Flow.Volta = _stavevolta__WEBPACK_IMPORTED_MODULE_57__.Volta; +// Exported Enums. +// Sorted by the module / file they are exported from. +Flow.AnnotationHorizontalJustify = _annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationHorizontalJustify; +Flow.AnnotationVerticalJustify = _annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify; +Flow.ChordSymbolHorizontalJustify = _chordsymbol__WEBPACK_IMPORTED_MODULE_9__.ChordSymbolHorizontalJustify; +Flow.ChordSymbolVerticalJustify = _chordsymbol__WEBPACK_IMPORTED_MODULE_9__.ChordSymbolVerticalJustify; +Flow.SymbolTypes = _chordsymbol__WEBPACK_IMPORTED_MODULE_9__.SymbolTypes; +Flow.SymbolModifiers = _chordsymbol__WEBPACK_IMPORTED_MODULE_9__.SymbolModifiers; +Flow.CurvePosition = _curve__WEBPACK_IMPORTED_MODULE_13__.CurvePosition; +Flow.FontWeight = _font__WEBPACK_IMPORTED_MODULE_18__.FontWeight; +Flow.FontStyle = _font__WEBPACK_IMPORTED_MODULE_18__.FontStyle; +Flow.ModifierPosition = _modifier__WEBPACK_IMPORTED_MODULE_31__.ModifierPosition; +Flow.RendererBackends = _renderer__WEBPACK_IMPORTED_MODULE_44__.RendererBackends; +Flow.RendererLineEndType = _renderer__WEBPACK_IMPORTED_MODULE_44__.RendererLineEndType; +Flow.BarlineType = _stavebarline__WEBPACK_IMPORTED_MODULE_47__.BarlineType; +Flow.StaveModifierPosition = _stavemodifier__WEBPACK_IMPORTED_MODULE_51__.StaveModifierPosition; +Flow.VoltaType = _stavevolta__WEBPACK_IMPORTED_MODULE_57__.VoltaType; +Flow.TextBracketPosition = _textbracket__WEBPACK_IMPORTED_MODULE_68__.TextBracketPosition; +Flow.TextJustification = _textnote__WEBPACK_IMPORTED_MODULE_71__.TextJustification; +Flow.VoiceMode = _voice__WEBPACK_IMPORTED_MODULE_81__.VoiceMode; + + +/***/ }), + +/***/ "./src/font.ts": +/*!*********************!*\ + !*** ./src/font.ts ***! + \*********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "FontWeight": () => (/* binding */ FontWeight), +/* harmony export */ "FontStyle": () => (/* binding */ FontStyle), +/* harmony export */ "Font": () => (/* binding */ Font) +/* harmony export */ }); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +var FontWeight; +(function (FontWeight) { + FontWeight["NORMAL"] = "normal"; + FontWeight["BOLD"] = "bold"; +})(FontWeight || (FontWeight = {})); +var FontStyle; +(function (FontStyle) { + FontStyle["NORMAL"] = "normal"; + FontStyle["ITALIC"] = "italic"; +})(FontStyle || (FontStyle = {})); +// Internal element for parsing CSS font shorthand strings. +let fontParser; +const Fonts = {}; +class Font { + /** + * Use `Font.load(fontName)` to get a Font object. + * Do not call this constructor directly. + */ + constructor(fontName) { + this.name = fontName; + } + /** + * @param fontSize a font size to convert. Can be specified as a CSS length string (e.g., '16pt', '1em') + * or as a number (the unit is assumed to be 'pt'). See `Font.scaleToPxFrom` for the supported + * units (e.g., pt, em, %). + * @returns the number of pixels that is equivalent to `fontSize` + */ + static convertSizeToPixelValue(fontSize = Font.SIZE) { + var _a; + if (typeof fontSize === 'number') { + // Assume the numeric fontSize is specified in pt. + return fontSize * Font.scaleToPxFrom.pt; + } + else { + const value = parseFloat(fontSize); + if (isNaN(value)) { + return 0; + } + const unit = fontSize.replace(/[\d.\s]/g, '').toLowerCase(); // Extract the unit by removing all numbers, dots, spaces. + const conversionFactor = (_a = Font.scaleToPxFrom[unit]) !== null && _a !== void 0 ? _a : 1; + return value * conversionFactor; + } + } + /** + * @param fontSize a font size to convert. Can be specified as a CSS length string (e.g., '16pt', '1em') + * or as a number (the unit is assumed to be 'pt'). See `Font.scaleToPxFrom` for the supported + * units (e.g., pt, em, %). + * @returns the number of points that is equivalent to `fontSize` + */ + static convertSizeToPointValue(fontSize = Font.SIZE) { + var _a; + if (typeof fontSize === 'number') { + // Assume the numeric fontSize is specified in pt. + return fontSize; + } + else { + const value = parseFloat(fontSize); + if (isNaN(value)) { + return 0; + } + const unit = fontSize.replace(/[\d.\s]/g, '').toLowerCase(); // Extract the unit by removing all numbers, dots, spaces. + const conversionFactor = ((_a = Font.scaleToPxFrom[unit]) !== null && _a !== void 0 ? _a : 1) / Font.scaleToPxFrom.pt; + return value * conversionFactor; + } + } + /** + * @param f + * @param size + * @param weight + * @param style + * @returns the `size` field will include the units (e.g., '12pt', '16px'). + */ + static validate(f, size, weight, style) { + // If f is a string but all other arguments are undefined, we assume that + // f is CSS font shorthand (e.g., 'italic bold 10pt Arial'). + if (typeof f === 'string' && size === undefined && weight === undefined && style === undefined) { + return Font.fromCSSString(f); + } + let family; + if (typeof f === 'object') { + // f is a FontInfo object, so we extract its fields. + family = f.family; + size = f.size; + weight = f.weight; + style = f.style; + } + else { + // f is a string representing the font family name or undefined. + family = f; + } + family = family !== null && family !== void 0 ? family : Font.SANS_SERIF; + size = size !== null && size !== void 0 ? size : Font.SIZE + 'pt'; + weight = weight !== null && weight !== void 0 ? weight : FontWeight.NORMAL; + style = style !== null && style !== void 0 ? style : FontStyle.NORMAL; + if (weight === '') { + weight = FontWeight.NORMAL; + } + if (style === '') { + style = FontStyle.NORMAL; + } + // If size is a number, we assume the unit is `pt`. + if (typeof size === 'number') { + size = `${size}pt`; + } + // If weight is a number (e.g., 900), turn it into a string representation of that number. + if (typeof weight === 'number') { + weight = weight.toString(); + } + // At this point, `family`, `size`, `weight`, and `style` are all strings. + return { family, size, weight, style }; + } + /** + * @param cssFontShorthand a string formatted as CSS font shorthand (e.g., 'italic bold 15pt Arial'). + */ + static fromCSSString(cssFontShorthand) { + // Let the browser parse this string for us. + // First, create a span element. + // Then, set its style.font and extract it back out. + if (!fontParser) { + fontParser = document.createElement('span'); + } + fontParser.style.font = cssFontShorthand; + const { fontFamily, fontSize, fontWeight, fontStyle } = fontParser.style; + return { family: fontFamily, size: fontSize, weight: fontWeight, style: fontStyle }; + } + /** + * @returns a CSS font shorthand string of the form `italic bold 16pt Arial`. + */ + static toCSSString(fontInfo) { + var _a; + if (!fontInfo) { + return ''; + } + let style; + const st = fontInfo.style; + if (st === FontStyle.NORMAL || st === '' || st === undefined) { + style = ''; // no space! Omit the style section. + } + else { + style = st.trim() + ' '; + } + let weight; + const wt = fontInfo.weight; + if (wt === FontWeight.NORMAL || wt === '' || wt === undefined) { + weight = ''; // no space! Omit the weight section. + } + else if (typeof wt === 'number') { + weight = wt + ' '; + } + else { + weight = wt.trim() + ' '; + } + let size; + const sz = fontInfo.size; + if (sz === undefined) { + size = Font.SIZE + 'pt '; + } + else if (typeof sz === 'number') { + size = sz + 'pt '; + } + else { + // size is already a string. + size = sz.trim() + ' '; + } + const family = (_a = fontInfo.family) !== null && _a !== void 0 ? _a : Font.SANS_SERIF; + return `${style}${weight}${size}${family}`; + } + /** + * @param fontSize a number representing a font size, or a string font size with units. + * @param scaleFactor multiply the size by this factor. + * @returns size * scaleFactor (e.g., 16pt * 3 = 48pt, 8px * 0.5 = 4px, 24 * 2 = 48). + * If the fontSize argument was a number, the return value will be a number. + * If the fontSize argument was a string, the return value will be a string. + */ + static scaleSize(fontSize, scaleFactor) { + if (typeof fontSize === 'number') { + return (fontSize * scaleFactor); + } + else { + const value = parseFloat(fontSize); + const unit = fontSize.replace(/[\d.\s]/g, ''); // Remove all numbers, dots, spaces. + return `${value * scaleFactor}${unit}`; + } + } + /** + * @param weight a string (e.g., 'bold') or a number (e.g., 600 / semi-bold in the OpenType spec). + * @returns true if the font weight indicates bold. + */ + static isBold(weight) { + if (!weight) { + return false; + } + else if (typeof weight === 'number') { + return weight >= 600; + } + else { + // a string can be 'bold' or '700' + const parsedWeight = parseInt(weight, 10); + if (isNaN(parsedWeight)) { + return weight.toLowerCase() === 'bold'; + } + else { + return parsedWeight >= 600; + } + } + } + /** + * @param style + * @returns true if the font style indicates 'italic'. + */ + static isItalic(style) { + if (!style) { + return false; + } + else { + return style.toLowerCase() === FontStyle.ITALIC; + } + } + /** + * @param fontName + * @param woffURL The absolute or relative URL to the woff file. + * @param includeWoff2 If true, we assume that a woff2 file is in + * the same folder as the woff file, and will append a `2` to the url. + */ + // Support distributions of the typescript compiler that do not yet include the FontFace API declarations. + // eslint-disable-next-line + // @ts-ignore + static loadWebFont(fontName, woffURL, includeWoff2 = true) { + return __awaiter(this, void 0, void 0, function* () { + const woff2URL = includeWoff2 ? `url(${woffURL}2) format('woff2'), ` : ''; + const woff1URL = `url(${woffURL}) format('woff')`; + const woffURLs = woff2URL + woff1URL; + // eslint-disable-next-line + // @ts-ignore + const fontFace = new FontFace(fontName, woffURLs); + yield fontFace.load(); + // eslint-disable-next-line + // @ts-ignore + document.fonts.add(fontFace); + return fontFace; + }); + } + /** + * Load the web fonts that are used by ChordSymbol. For example, `flow.html` calls: + * `await Vex.Flow.Font.loadWebFonts();` + * Alternatively, you may load web fonts with a stylesheet link (e.g., from Google Fonts), + * and a @font-face { font-family: ... } rule in your CSS. + * If you do not load either of these fonts, ChordSymbol will fall back to Times or Arial, + * depending on the current music engraving font. + * + * You can customize `Font.WEB_FONT_HOST` and `Font.WEB_FONT_FILES` to load different fonts + * for your app. + */ + static loadWebFonts() { + return __awaiter(this, void 0, void 0, function* () { + const host = Font.WEB_FONT_HOST; + const files = Font.WEB_FONT_FILES; + for (const fontName in files) { + const fontPath = files[fontName]; + Font.loadWebFont(fontName, host + fontPath); + } + }); + } + /** + * @param fontName + * @param data optionally set the Font object's `.data` property. + * This is usually done when setting up a font for the first time. + * @param metrics optionally set the Font object's `.metrics` property. + * This is usually done when setting up a font for the first time. + * @returns a Font object with the given `fontName`. + * Reuse an existing Font object if a matching one is found. + */ + static load(fontName, data, metrics) { + let font = Fonts[fontName]; + if (!font) { + font = new Font(fontName); + Fonts[fontName] = font; + } + if (data) { + font.setData(data); + } + if (metrics) { + font.setMetrics(metrics); + } + return font; + } + getName() { + return this.name; + } + getData() { + return (0,_util__WEBPACK_IMPORTED_MODULE_0__.defined)(this.data, 'FontError', 'Missing font data'); + } + getMetrics() { + return (0,_util__WEBPACK_IMPORTED_MODULE_0__.defined)(this.metrics, 'FontError', 'Missing metrics'); + } + setData(data) { + this.data = data; + } + setMetrics(metrics) { + this.metrics = metrics; + } + hasData() { + return this.data !== undefined; + } + getResolution() { + return this.getData().resolution; + } + getGlyphs() { + return this.getData().glyphs; + } + /** + * Use the provided key to look up a value in this font's metrics file (e.g., bravura_metrics.ts, petaluma_metrics.ts). + * @param key is a string separated by periods (e.g., stave.endPaddingMax, clef.lineCount.'5'.shiftY). + * @param defaultValue is returned if the lookup fails. + * @returns the retrieved value (or `defaultValue` if the lookup fails). + */ + // eslint-disable-next-line + lookupMetric(key, defaultValue) { + const keyParts = key.split('.'); + // Start with the top level font metrics object, and keep looking deeper into the object (via each part of the period-delimited key). + let currObj = this.getMetrics(); + for (let i = 0; i < keyParts.length; i++) { + const keyPart = keyParts[i]; + const value = currObj[keyPart]; + if (value === undefined) { + // If the key lookup fails, we fall back to the defaultValue. + return defaultValue; + } + // The most recent lookup succeeded, so we drill deeper into the object. + currObj = value; + } + // After checking every part of the key (i.e., the loop completed), return the most recently retrieved value. + return currObj; + } + /** For debugging. */ + toString() { + return '[' + this.name + ' Font]'; + } +} +////////////////////////////////////////////////////////////////////////////////////////////////// +// STATIC MEMBERS +/** Default sans-serif font family. */ +Font.SANS_SERIF = 'Arial, sans-serif'; +/** Default serif font family. */ +Font.SERIF = 'Times New Roman, serif'; +/** Default font size in `pt`. */ +Font.SIZE = 10; +// CSS Font Sizes: 36pt == 48px == 3em == 300% == 0.5in +/** Given a length (for units: pt, px, em, %, in, mm, cm) what is the scale factor to convert it to px? */ +Font.scaleToPxFrom = { + pt: 4 / 3, + px: 1, + em: 16, + '%': 4 / 25, + in: 96, + mm: 96 / 25.4, + cm: 96 / 2.54, +}; +/** + * Customize this field to specify a different CDN for delivering web fonts. + * Alternative: https://cdn.jsdelivr.net/npm/vexflow-fonts@1.0.3/ + * Or you can use your own host. + */ +Font.WEB_FONT_HOST = 'https://unpkg.com/vexflow-fonts@1.0.3/'; +/** + * These font files will be loaded from the CDN specified by `Font.WEB_FONT_HOST` when + * `await Font.loadWebFonts()` is called. Customize this field to specify a different + * set of fonts to load. See: `Font.loadWebFonts()`. + */ +Font.WEB_FONT_FILES = { + 'Roboto Slab': 'robotoslab/RobotoSlab-Medium_2.001.woff', + PetalumaScript: 'petaluma/PetalumaScript_1.10_FS.woff', +}; + + +/***/ }), + +/***/ "./src/fonts/bravura_glyphs.ts": +/*!*************************************!*\ + !*** ./src/fonts/bravura_glyphs.ts ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "BravuraFont": () => (/* binding */ BravuraFont) +/* harmony export */ }); +const BravuraFont = { + glyphs: { + bracketTop: { + x_min: 0, + x_max: 469, + y_min: 0, + y_max: 295, + ha: 295, + o: 'm 0 0 l 180 0 b 674 390 410 43 616 150 b 675 405 675 396 675 400 b 664 425 675 416 671 422 b 628 405 651 425 635 415 b 157 179 613 389 432 199 l 12 179 b 0 168 3 179 0 177 z', + }, + bracketBottom: { + x_min: 0, + x_max: 469, + y_min: -295, + y_max: 0, + ha: 295, + o: 'm 0 -168 b 12 -179 0 -177 3 -179 l 157 -179 b 628 -405 432 -199 613 -389 b 664 -425 635 -415 651 -425 b 675 -405 671 -422 675 -416 b 674 -390 675 -400 675 -396 b 180 0 616 -150 410 -43 l 0 0 z', + }, + barlineTick: { + x_min: 0, + x_max: 36, + y_min: 868, + y_max: 1120, + ha: 252, + o: 'm 52 1250 l 52 1613 l 0 1613 l 0 1250 z', + }, + breathMarkTick: { + x_min: 0, + x_max: 500, + y_min: 0, + y_max: 502, + ha: 502, + o: 'm 9 367 b 0 374 6 372 3 374 b 9 334 0 367 0 343 b 179 19 40 312 164 121 b 192 0 179 3 186 0 b 210 19 197 0 207 6 b 698 701 245 197 507 658 b 720 714 714 704 720 711 b 698 723 720 720 711 723 b 197 186 455 714 210 202 b 186 176 194 179 189 176 b 176 186 179 176 176 186 b 9 367 143 266 27 359 z', + }, + segno: { + x_min: 4, + x_max: 550, + y_min: -27, + y_max: 759, + ha: 786, + o: 'm 194 958 b 217 939 203 958 213 955 l 220 929 b 325 805 230 890 252 805 b 425 901 384 805 425 840 b 413 969 425 923 420 946 b 220 1060 390 1035 294 1060 b 6 793 120 1060 6 936 b 29 687 6 759 13 723 b 295 449 75 582 284 454 b 304 438 301 446 304 444 b 295 415 304 432 301 425 b 78 22 285 395 78 22 b 73 3 75 16 73 9 b 114 -39 73 -20 91 -39 b 150 -17 128 -39 143 -30 b 377 395 150 -17 373 386 b 395 402 377 393 389 402 b 704 176 416 397 704 312 b 621 75 704 120 670 82 l 616 73 b 562 138 586 73 562 94 l 562 154 b 485 249 562 209 526 249 b 468 246 480 249 474 248 b 366 153 415 233 366 210 b 540 -12 366 65 455 -12 b 600 -1 559 -12 579 -9 b 792 251 716 37 792 131 b 789 292 792 264 791 278 b 523 588 768 451 540 579 b 498 611 505 598 498 603 b 501 619 498 613 500 616 b 732 1032 508 631 732 1032 b 737 1053 736 1040 737 1045 b 697 1093 737 1076 719 1093 b 661 1073 683 1093 668 1086 b 423 647 661 1073 432 660 b 410 635 419 639 416 635 b 396 639 406 635 402 636 b 128 792 383 644 166 727 b 108 868 120 808 108 838 b 186 958 108 907 125 948 z m 598 671 b 680 589 598 626 635 589 b 762 671 726 589 762 626 b 680 753 762 717 726 753 b 598 671 635 753 598 717 z m 202 380 b 120 462 202 425 166 462 b 37 380 75 462 37 425 b 120 298 37 334 75 298 b 202 380 166 298 202 334 z', + }, + coda: { + x_min: -4, + x_max: 955, + y_min: -158, + y_max: 898, + ha: 1056, + o: 'm 1349 576 l 1178 576 b 729 1083 1164 847 962 1064 l 729 1269 b 694 1293 729 1287 713 1293 b 660 1269 675 1293 660 1287 l 660 1083 b 210 576 426 1064 226 848 l 20 576 b -6 541 0 576 -6 560 b 20 507 -6 523 0 507 l 210 507 b 660 0 226 238 426 19 l 660 -202 b 694 -228 660 -222 675 -228 b 729 -202 713 -228 729 -222 l 729 0 b 1178 507 962 19 1164 238 l 1349 507 b 1375 541 1369 507 1375 523 b 1349 576 1375 560 1369 576 z m 940 576 l 729 576 l 729 1002 b 940 576 930 985 940 809 z m 660 1002 l 660 576 l 455 576 b 660 1002 455 809 455 985 z m 455 507 l 660 507 l 660 69 b 455 507 474 91 456 285 z m 729 69 l 729 507 l 940 507 b 729 69 936 287 909 91 z', + }, + gClef: { + x_min: 0, + x_max: 671, + y_min: -658, + y_max: 1098, + ha: 1756, + o: 'm 541 598 b 550 625 539 615 541 616 b 824 1174 706 770 824 953 b 730 1509 824 1299 789 1423 b 655 1581 708 1541 671 1581 b 562 1512 635 1581 590 1544 b 420 1064 455 1394 420 1214 b 441 828 420 981 431 887 b 428 793 444 811 445 808 b 0 125 220 622 0 416 b 524 -363 0 -125 171 -363 b 624 -354 557 -363 595 -360 b 645 -367 639 -351 642 -350 b 684 -657 662 -464 684 -589 b 455 -896 684 -870 540 -896 b 340 -854 377 -896 340 -873 b 386 -829 340 -844 353 -840 b 482 -694 431 -816 482 -778 b 344 -547 482 -615 432 -547 b 190 -713 248 -547 190 -624 b 464 -948 190 -806 246 -948 b 747 -660 560 -948 747 -904 b 706 -351 747 -577 721 -441 b 724 -327 703 -334 704 -336 b 966 16 870 -269 966 -147 b 619 363 966 200 831 363 b 577 389 582 363 582 363 z m 677 1358 b 763 1240 724 1358 763 1319 b 513 851 763 1080 626 950 b 494 863 503 842 497 844 b 485 995 488 900 485 949 b 677 1358 485 1220 589 1358 z m 520 377 b 498 343 524 350 524 351 b 289 63 372 300 289 186 b 455 -192 289 -66 357 -158 b 494 -200 467 -196 484 -200 b 511 -184 505 -200 511 -193 b 490 -166 511 -174 500 -170 b 386 -12 429 -140 386 -78 b 530 157 386 71 442 132 b 559 145 553 163 556 161 l 631 -284 b 611 -304 634 -300 632 -300 b 530 -311 588 -308 559 -311 b 115 29 278 -311 115 -171 b 249 363 115 114 130 228 b 469 567 336 459 402 513 b 490 562 484 579 487 577 z m 619 148 b 635 168 616 166 618 170 b 848 -66 752 158 848 60 b 713 -271 848 -157 793 -230 b 690 -262 696 -279 693 -279 z', + }, + cClef: { + x_min: 0, + x_max: 699, + y_min: -506, + y_max: 506, + ha: 1012, + o: 'm 331 694 b 301 724 331 714 321 724 l 300 724 b 269 694 279 724 269 714 l 269 -694 b 300 -724 269 -714 279 -724 l 301 -724 b 331 -694 321 -724 331 -714 l 331 -63 b 344 -55 331 -52 338 -53 b 472 -265 382 -65 442 -102 b 500 -301 477 -288 485 -301 b 530 -262 516 -301 523 -287 b 684 -128 549 -199 582 -128 b 804 -409 778 -128 804 -220 b 651 -683 804 -598 770 -683 b 528 -644 631 -683 528 -674 b 567 -622 528 -636 552 -628 b 625 -528 596 -612 625 -583 b 527 -429 625 -465 583 -429 b 416 -547 465 -429 416 -471 b 667 -729 416 -638 495 -729 b 1007 -413 903 -729 1007 -563 b 706 -76 1007 -215 897 -76 b 618 -89 664 -76 636 -84 b 576 -88 603 -94 589 -96 b 524 0 556 -75 524 -29 b 576 88 524 29 556 75 b 618 89 589 96 603 94 b 706 76 636 84 664 76 b 1007 413 897 76 1007 215 b 667 729 1007 563 903 729 b 416 547 495 729 416 638 b 527 429 416 471 465 429 b 625 528 583 429 625 465 b 567 622 625 583 596 612 b 528 644 552 628 528 636 b 651 683 528 674 631 683 b 804 409 770 683 804 598 b 684 128 804 220 778 128 b 530 262 582 128 549 199 b 500 301 523 287 516 301 b 472 265 485 301 477 288 b 344 55 442 102 382 65 b 331 63 338 53 331 52 z m 30 724 b 0 694 10 724 0 714 l 0 -694 b 30 -724 0 -714 10 -724 l 154 -724 b 184 -694 174 -724 184 -714 l 184 694 b 154 724 184 714 174 724 z', + }, + fClef: { + x_min: -5, + x_max: 684, + y_min: -635, + y_max: 262, + ha: 897, + o: 'm 363 377 b 0 56 112 377 0 194 b 177 -158 0 -59 60 -158 b 330 -6 268 -158 330 -95 b 192 144 330 86 262 144 b 120 134 153 144 138 134 b 96 160 101 134 96 145 b 330 323 96 217 183 323 b 549 -53 482 323 549 173 b 14 -871 549 -455 350 -680 b -7 -897 1 -878 -7 -886 b 12 -914 -7 -906 -1 -914 b 36 -907 19 -914 27 -912 b 765 -40 390 -734 765 -478 b 363 377 765 210 612 377 z m 906 259 b 827 180 861 259 827 225 b 906 101 827 135 861 101 b 985 180 950 101 985 135 b 906 259 985 225 950 259 z m 907 -102 b 829 -180 863 -102 829 -135 b 907 -258 829 -225 863 -258 b 985 -180 952 -258 985 -225 b 907 -102 985 -135 952 -102 z', + }, + unpitchedPercussionClef1: { + x_min: 0, + x_max: 382, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 230 -338 l 230 338 b 210 360 230 350 222 360 l 20 360 b 0 338 9 360 0 350 l 0 -338 b 20 -360 0 -350 9 -360 l 210 -360 b 230 -338 222 -360 230 -350 z m 550 338 b 530 360 550 350 541 360 l 340 360 b 320 338 328 360 320 350 l 320 -338 b 340 -360 320 -350 328 -360 l 530 -360 b 550 -338 541 -360 550 -350 z', + }, + '6stringTabClef': { + x_min: -3, + x_max: 408, + y_min: -748, + y_max: 764, + ha: 1512, + o: 'm 557 1024 l 557 1100 l 26 1100 l 26 1024 l 249 1024 l 249 422 l 336 422 l 336 1024 z m 588 -328 l 350 348 l 238 348 l -4 -328 l 88 -328 l 160 -125 l 420 -125 l 491 -328 z m 397 -52 l 181 -52 l 292 256 z m 544 -883 b 420 -719 544 -802 507 -752 b 514 -572 482 -690 514 -639 b 314 -399 514 -472 442 -399 l 39 -399 l 39 -1077 l 344 -1077 b 544 -883 467 -1077 544 -995 z m 428 -583 b 292 -691 428 -652 389 -691 l 125 -691 l 125 -475 l 292 -475 b 428 -583 389 -475 428 -514 z m 458 -884 b 337 -1001 458 -949 418 -1001 l 125 -1001 l 125 -768 l 337 -768 b 458 -884 418 -768 458 -818 z', + }, + timeSig0: { + x_min: 20, + x_max: 450, + y_min: -250, + y_max: 251, + ha: 501, + o: 'm 648 0 b 338 361 648 200 510 361 b 29 0 167 361 29 200 b 338 -360 29 -199 167 -360 b 648 0 510 -360 648 -199 z m 338 317 b 446 10 397 317 446 180 b 338 -295 446 -158 397 -295 b 230 10 278 -295 230 -158 b 338 317 230 180 278 317 z', + }, + timeSig1: { + x_min: 20, + x_max: 314, + y_min: -250, + y_max: 251, + ha: 501, + o: 'm 35 19 b 29 0 35 19 29 10 b 45 -20 29 -7 33 -16 b 58 -23 50 -22 56 -23 b 78 -10 72 -23 78 -10 b 156 117 78 -10 140 89 b 170 131 161 127 167 131 b 179 111 176 131 179 120 l 179 -261 b 115 -315 179 -294 145 -315 b 91 -337 105 -315 91 -320 b 122 -360 91 -353 104 -360 l 429 -360 b 452 -337 452 -360 452 -337 b 431 -315 452 -337 452 -315 b 384 -265 410 -315 384 -289 l 384 328 b 356 361 384 351 376 360 b 281 356 336 361 300 356 b 206 360 253 356 228 357 b 199 361 203 360 200 361 b 173 334 184 361 179 347 z', + }, + timeSig2: { + x_min: 20, + x_max: 426, + y_min: -257, + y_max: 254, + ha: 511, + o: 'm 606 -131 b 589 -111 606 -114 599 -111 b 570 -127 577 -111 573 -117 l 569 -128 b 513 -192 554 -164 543 -192 b 488 -187 505 -192 498 -190 b 445 -171 469 -180 459 -179 b 289 -137 416 -160 348 -137 b 236 -145 271 -137 252 -140 b 422 -42 268 -94 390 -50 b 613 147 523 -14 613 27 b 330 366 613 300 464 366 b 69 275 229 366 140 357 b 29 170 45 245 29 209 b 42 108 29 150 33 130 b 160 29 63 63 108 29 b 261 156 248 29 261 120 b 161 275 261 242 161 246 b 275 330 164 295 190 330 b 405 192 403 330 405 233 b 193 -102 405 60 297 -39 b 33 -317 114 -153 58 -223 l 32 -321 b 69 -370 32 -340 48 -370 b 203 -282 101 -370 118 -282 b 410 -360 261 -282 282 -360 b 606 -131 472 -360 583 -354 z', + }, + timeSig3: { + x_min: 20, + x_max: 401, + y_min: -251, + y_max: 249, + ha: 500, + o: 'm 307 357 b 301 357 305 357 304 357 l 291 359 b 285 359 289 359 287 359 b 37 200 161 359 37 276 b 154 84 37 153 65 89 l 161 84 b 256 177 225 84 256 130 l 256 189 b 209 248 252 242 216 245 b 180 268 202 251 180 248 l 180 274 b 240 310 183 298 228 310 b 374 199 363 310 374 233 l 374 189 b 199 36 374 82 289 40 b 164 12 184 35 164 27 b 200 -6 164 -6 189 -6 b 379 -137 366 -6 379 -118 b 269 -307 379 -289 301 -307 b 256 -305 264 -307 258 -305 b 216 -282 245 -304 217 -304 l 216 -275 b 249 -180 216 -243 248 -222 b 145 -76 249 -120 207 -76 b 130 -78 140 -76 135 -76 b 60 -115 105 -82 78 -96 b 29 -203 36 -137 29 -171 b 275 -361 32 -315 134 -359 l 288 -361 b 577 -161 431 -361 577 -288 l 577 -151 b 537 -50 575 -109 564 -82 b 503 -20 528 -39 517 -29 l 472 -3 l 425 10 b 410 17 418 12 413 12 b 409 24 409 20 409 22 b 415 37 409 30 410 36 b 459 50 431 42 446 43 b 547 181 517 78 547 115 b 307 357 547 314 367 353 z', + }, + timeSig4: { + x_min: 20, + x_max: 450, + y_min: -250, + y_max: 251, + ha: 501, + o: 'm 521 -107 l 521 202 b 504 226 521 213 520 226 b 475 213 491 226 484 223 l 338 48 b 325 14 333 40 325 32 l 325 -107 l 131 -107 b 481 336 246 -9 477 318 l 482 340 b 461 361 482 353 472 361 b 363 359 448 361 389 359 b 261 361 337 359 272 361 b 228 334 248 361 228 357 b 43 -105 228 156 86 -45 l 35 -117 b 35 -118 35 -117 35 -118 l 33 -120 b 29 -137 30 -127 29 -132 b 58 -161 29 -151 40 -161 l 325 -161 l 325 -252 b 268 -302 325 -291 294 -302 b 235 -330 245 -302 235 -315 b 262 -360 235 -344 240 -360 l 569 -360 b 598 -330 583 -360 598 -350 b 566 -301 598 -310 580 -301 b 521 -246 552 -301 521 -292 l 521 -161 l 626 -161 b 648 -134 641 -161 648 -151 b 626 -107 648 -117 642 -107 z', + }, + timeSig5: { + x_min: 20, + x_max: 383, + y_min: -251, + y_max: 246, + ha: 497, + o: 'm 109 85 b 117 179 109 85 115 166 b 138 197 118 190 125 197 l 144 197 b 285 184 158 194 226 184 b 492 323 485 184 492 300 b 472 353 492 341 488 353 b 295 340 454 353 341 340 b 101 354 249 340 125 351 b 66 330 75 354 68 341 l 50 10 l 50 7 b 79 -14 50 -12 65 -14 b 111 14 94 -14 95 -1 b 209 62 125 29 160 62 b 357 -125 258 62 357 35 b 235 -304 357 -284 272 -304 b 202 -300 223 -304 212 -304 b 184 -279 194 -295 186 -289 b 202 -259 184 -269 194 -264 b 256 -163 235 -239 256 -203 b 144 -50 256 -99 206 -50 b 30 -157 66 -50 35 -107 b 29 -183 29 -166 29 -174 b 284 -361 29 -302 107 -361 b 552 -125 456 -361 552 -255 b 314 112 552 6 445 112 b 122 71 230 112 168 98 b 115 69 120 69 117 69 b 109 79 109 69 109 75 z', + }, + timeSig6: { + x_min: 20, + x_max: 414, + y_min: -249, + y_max: 251, + ha: 500, + o: 'm 439 120 b 554 229 500 120 554 167 b 553 245 554 235 554 239 b 348 361 539 337 426 361 b 85 209 239 360 137 307 b 29 4 53 148 29 72 l 29 -1 b 73 -200 30 -68 42 -143 b 324 -359 132 -307 203 -359 b 513 -307 389 -359 461 -348 b 596 -137 563 -266 596 -202 b 379 72 596 -24 490 72 b 248 22 333 72 285 55 b 239 19 245 19 242 19 b 226 53 230 19 226 30 b 346 327 230 320 315 327 b 393 305 374 327 393 320 b 357 251 393 285 366 268 b 347 209 350 238 347 223 b 369 150 347 187 354 166 b 439 120 379 131 420 120 z m 320 3 b 405 -158 366 3 405 -69 b 320 -320 405 -248 366 -320 b 236 -158 274 -320 236 -248 b 320 3 236 -69 274 3 z', + }, + timeSig7: { + x_min: 20, + x_max: 421, + y_min: -250, + y_max: 249, + ha: 499, + o: 'm 606 294 b 582 351 606 333 606 351 b 552 336 580 351 557 346 b 485 236 541 318 521 236 b 262 359 449 236 382 359 b 137 307 179 359 157 325 b 98 281 117 288 108 282 b 60 315 86 281 68 301 b 43 325 58 321 50 325 b 29 308 36 325 29 321 l 29 71 b 45 48 29 71 30 48 b 66 76 56 48 60 60 b 164 196 81 112 99 196 b 374 88 222 196 291 88 b 446 118 415 88 435 109 b 459 124 451 121 456 124 b 469 111 465 124 468 120 b 272 -112 469 71 359 -10 b 173 -315 217 -176 173 -259 b 200 -360 173 -346 173 -360 b 294 -347 226 -360 258 -347 b 412 -360 330 -347 397 -360 b 435 -307 426 -360 435 -348 b 606 288 435 -66 606 140 z', + }, + timeSig8: { + x_min: 20, + x_max: 416, + y_min: -259, + y_max: 259, + ha: 518, + o: 'm 481 52 b 567 204 533 85 567 132 b 317 373 567 351 356 373 b 36 176 150 373 36 297 b 161 -16 36 76 92 23 b 29 -190 86 -52 29 -99 b 301 -373 29 -315 158 -373 b 599 -117 445 -373 599 -311 b 481 52 599 -30 549 17 z m 406 85 b 168 240 291 125 168 150 b 314 331 168 301 251 331 b 482 207 360 331 482 308 b 406 85 482 150 454 112 z m 295 -325 b 111 -183 199 -325 111 -276 b 225 -48 111 -125 161 -72 b 436 -219 330 -94 436 -124 b 295 -325 436 -276 392 -325 z', + }, + timeSig9: { + x_min: 20, + x_max: 414, + y_min: -249, + y_max: 251, + ha: 500, + o: 'm 186 -117 b 71 -226 125 -117 71 -164 b 72 -242 71 -232 71 -236 b 276 -359 86 -334 199 -359 b 540 -206 386 -357 488 -304 b 596 -1 572 -145 596 -69 l 596 4 b 552 203 595 71 583 145 b 301 361 492 310 422 361 b 112 310 236 361 164 351 b 29 140 62 269 29 204 b 246 -69 29 27 135 -69 b 377 -19 292 -69 340 -52 b 386 -16 380 -16 383 -16 b 399 -50 395 -16 399 -27 b 279 -324 395 -317 310 -324 b 232 -302 251 -324 232 -317 b 268 -248 232 -282 259 -265 b 278 -206 275 -235 278 -220 b 256 -147 278 -184 271 -163 b 186 -117 246 -128 204 -117 z m 305 0 b 220 161 259 0 220 72 b 305 323 220 251 259 323 b 389 161 351 323 389 251 b 305 0 389 72 351 0 z', + }, + timeSigCommon: { + x_min: 5, + x_max: 424, + y_min: -249, + y_max: 251, + ha: 500, + o: 'm 336 361 b 7 -14 131 361 7 180 b 101 -262 7 -108 42 -190 b 321 -359 156 -328 235 -359 b 611 -88 573 -359 611 -130 b 589 -56 611 -56 595 -56 b 567 -82 577 -56 567 -58 b 363 -311 567 -268 409 -311 b 184 40 246 -311 184 -197 b 372 327 184 278 294 327 b 477 278 446 327 477 292 b 451 246 477 265 472 246 b 360 140 393 246 360 184 b 471 32 360 58 431 32 b 580 156 471 32 580 36 b 336 361 580 344 363 361 z', + }, + timeSigCutCommon: { + x_min: 0, + x_max: 418, + y_min: -359, + y_max: 361, + ha: 720, + o: 'm 573 -58 b 559 -82 567 -58 559 -60 b 354 -310 559 -266 400 -310 b 317 -305 340 -310 328 -308 b 302 -284 311 -304 302 -295 l 302 287 b 338 323 302 297 328 321 b 363 324 347 324 356 324 b 468 275 436 324 468 289 b 442 243 468 264 464 243 b 351 137 384 243 351 181 b 462 30 351 56 422 30 b 572 154 462 30 572 35 b 318 357 572 295 441 357 b 302 390 310 359 302 383 l 302 495 b 276 520 302 507 292 520 b 252 495 265 520 252 507 l 252 369 b 235 346 252 359 238 346 l 196 331 b 0 -14 66 275 0 122 b 225 -346 0 -150 86 -310 b 252 -382 235 -350 252 -369 l 252 -492 b 276 -517 252 -505 265 -517 b 302 -492 292 -517 302 -505 l 302 -379 b 318 -359 302 -370 308 -363 b 602 -85 563 -354 602 -130 b 579 -58 600 -58 586 -58 z m 252 -235 b 243 -252 252 -248 248 -252 b 236 -248 240 -252 238 -251 b 177 37 197 -193 177 -96 b 232 259 177 147 200 215 b 236 262 233 262 235 262 b 252 239 243 262 252 251 z', + }, + timeSigPlus: { + x_min: -1, + x_max: 499, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 432 53 b 413 79 420 53 413 65 l 413 340 b 392 360 413 350 405 360 l 325 360 b 305 340 312 360 305 350 l 305 79 b 284 53 305 66 292 53 l 19 53 b -1 33 9 53 -1 46 l -1 -33 b 19 -55 -1 -46 9 -55 l 284 -55 b 305 -75 298 -55 305 -68 l 305 -340 b 325 -360 305 -350 312 -360 l 392 -360 b 413 -340 405 -360 413 -350 l 413 -78 b 433 -55 413 -63 423 -55 l 698 -55 b 719 -33 708 -55 719 -46 l 719 33 b 698 53 719 46 708 53 z', + }, + timeSigPlusSmall: { + x_min: -1, + x_max: 255, + y_min: -133, + y_max: 123, + ha: 256, + o: 'm 220 20 b 210 33 215 20 210 26 l 210 166 b 200 177 210 171 206 177 l 166 177 b 156 166 160 177 156 171 l 156 33 b 145 20 156 27 150 20 l 10 20 b -1 10 4 20 -1 16 l -1 -24 b 10 -35 -1 -30 4 -35 l 145 -35 b 156 -46 153 -35 156 -42 l 156 -180 b 166 -192 156 -186 160 -192 l 200 -192 b 210 -180 206 -192 210 -186 l 210 -48 b 222 -35 210 -39 216 -35 l 356 -35 b 367 -24 361 -35 367 -30 l 367 10 b 356 20 367 16 361 20 z', + }, + timeSigMinus: { + x_min: 0, + x_max: 448, + y_min: -35, + y_max: 40, + ha: 75, + o: 'm 645 39 b 619 58 645 49 634 58 l 27 58 b 0 39 12 58 0 49 l 0 -32 b 27 -50 0 -42 12 -50 l 619 -50 b 645 -32 634 -50 645 -42 z', + }, + timeSigParensRight: { + x_min: 0, + x_max: 184, + y_min: -489, + y_max: 491, + ha: 980, + o: 'm 0 -696 b 3 -704 0 -698 1 -704 b 7 -703 4 -704 6 -704 b 265 1 187 -530 265 -282 b 12 701 265 289 187 531 b 4 707 12 701 6 707 b 0 696 1 707 0 703 l 0 665 b 4 644 0 665 0 651 b 167 1 112 503 167 315 b 6 -641 167 -311 109 -497 b 0 -658 3 -644 0 -651 z', + }, + timeSigParensRightSmall: { + x_min: 0, + x_max: 110, + y_min: -251, + y_max: 249, + ha: 500, + o: 'm 0 -356 b 3 -361 0 -357 1 -361 b 158 0 112 -272 158 -145 b 4 359 158 147 109 272 b 0 353 3 359 0 357 l 0 338 b 3 327 0 338 0 330 b 91 0 60 246 91 160 b 4 -328 91 -160 62 -249 b 0 -337 3 -330 0 -333 z', + }, + timeSigParensLeft: { + x_min: 0, + x_max: 184, + y_min: -489, + y_max: 491, + ha: 980, + o: 'm 265 -658 b 259 -641 265 -651 262 -644 b 98 1 156 -497 98 -311 b 261 644 98 315 153 503 b 265 665 265 651 265 665 l 265 696 b 261 707 265 703 264 707 b 253 701 259 707 253 701 b 0 1 78 531 0 289 b 258 -703 0 -282 78 -530 b 262 -704 259 -704 261 -704 b 265 -696 264 -704 265 -698 z', + }, + timeSigParensLeftSmall: { + x_min: 0, + x_max: 110, + y_min: -251, + y_max: 249, + ha: 500, + o: 'm 158 -337 b 154 -328 158 -333 156 -330 b 68 0 96 -249 68 -160 b 156 327 68 160 98 246 b 158 338 158 330 158 338 l 158 353 b 154 359 158 357 156 359 b 0 0 49 272 0 147 b 156 -361 0 -145 46 -272 b 158 -356 157 -361 158 -357 z', + }, + noteheadDoubleWhole: { + x_min: 0, + x_max: 599, + y_min: -155, + y_max: 155, + ha: 310, + o: 'm 13 223 b 0 212 4 223 0 217 l 0 -213 b 13 -223 0 -219 4 -223 l 32 -223 b 45 -213 39 -223 45 -219 l 45 212 b 32 223 45 217 39 223 z m 96 223 b 82 212 88 223 82 217 l 82 -213 b 96 -223 82 -219 88 -223 l 114 -223 b 128 -213 121 -223 128 -219 l 128 212 b 114 223 128 217 121 223 z m 747 223 b 733 212 740 223 733 217 l 733 -213 b 747 -223 733 -219 740 -223 l 766 -223 b 780 -213 773 -223 780 -219 l 780 212 b 766 223 780 217 773 223 z m 829 223 b 815 212 824 223 815 217 l 815 -213 b 829 -223 815 -219 824 -223 l 848 -223 b 863 -213 857 -223 863 -219 l 863 212 b 848 223 863 217 857 223 z m 438 180 b 130 1 248 180 130 101 b 423 -180 130 -92 210 -180 b 733 1 657 -180 733 -98 b 438 180 733 104 572 180 z m 469 -145 b 331 -71 409 -145 369 -112 b 284 58 305 -37 284 12 b 400 147 284 131 333 147 b 577 -45 498 147 577 42 b 469 -145 577 -115 533 -145 z', + }, + noteheadWhole: { + x_min: 0, + x_max: 422, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 311 180 b 0 3 120 180 0 101 b 297 -180 0 -94 82 -180 b 608 3 533 -180 608 -98 b 311 180 608 105 445 180 z m 160 91 b 274 148 176 141 229 148 b 452 -45 373 148 452 42 b 386 -141 452 -89 433 -130 b 341 -147 372 -145 356 -147 b 206 -72 289 -147 236 -112 b 156 56 177 -39 156 10 b 160 91 156 68 157 79 z', + }, + noteheadHalf: { + x_min: 0, + x_max: 295, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 140 -180 b 425 60 377 -180 425 13 b 282 180 425 134 366 180 b 0 -60 68 180 0 14 b 140 -180 0 -137 60 -180 z m 108 -125 b 50 -92 78 -125 60 -109 b 42 -63 46 -84 42 -73 b 318 121 42 7 251 121 b 372 91 346 121 361 108 b 380 63 376 82 380 73 b 108 -125 380 1 177 -125 z', + }, + noteheadBlack: { + x_min: 0, + x_max: 295, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 140 -180 b 425 60 268 -180 425 -62 b 285 180 425 134 367 180 b 0 -60 127 180 0 63 b 140 -180 0 -135 62 -180 z', + }, + noteheadXDoubleWhole: { + x_min: 0, + x_max: 546, + y_min: -155, + y_max: 155, + ha: 310, + o: 'm 43 213 b 30 223 43 217 39 223 l 13 223 b 0 213 6 223 0 217 l 0 -215 b 13 -223 0 -219 6 -223 l 30 -223 b 43 -215 39 -223 43 -219 z m 704 213 b 693 223 704 217 698 223 l 672 223 b 660 213 667 223 660 217 l 660 163 b 634 180 655 173 645 180 l 505 180 b 484 173 498 180 490 177 l 393 95 l 300 173 b 279 180 294 177 287 180 l 151 180 b 125 163 141 180 130 173 l 125 213 b 112 223 125 217 118 223 l 94 223 b 82 213 86 223 82 217 l 82 -215 b 94 -223 82 -219 86 -223 l 112 -223 b 125 -215 118 -223 125 -219 l 125 -163 b 151 -180 130 -173 140 -180 l 279 -180 b 300 -171 287 -180 294 -177 l 393 -95 l 485 -171 b 505 -180 491 -177 498 -180 l 632 -180 b 660 -163 645 -180 655 -173 l 660 -215 b 672 -223 660 -219 667 -223 l 693 -223 b 704 -215 698 -223 704 -219 z m 786 213 b 772 223 786 217 780 223 l 755 223 b 740 213 747 223 740 217 l 740 -215 b 755 -223 740 -219 747 -223 l 772 -223 b 786 -215 780 -223 786 -219 z m 507 -141 l 393 -45 l 276 -141 l 207 -141 l 364 0 l 207 141 l 276 141 l 393 45 l 507 141 l 577 141 l 420 0 l 577 -141 z m 660 -132 l 518 0 l 660 132 z m 125 131 l 266 0 l 125 -131 z', + }, + noteheadXWhole: { + x_min: 0, + x_max: 377, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 272 -95 l 364 -171 b 384 -180 370 -177 377 -180 l 511 -180 b 543 -148 528 -180 543 -164 b 531 -124 543 -140 539 -131 l 412 0 l 531 124 b 541 148 539 131 541 140 b 513 180 541 164 528 180 l 384 180 b 364 171 377 180 370 177 l 272 94 l 179 171 b 158 180 173 177 166 180 l 30 180 b 0 148 16 180 0 164 b 12 124 0 140 4 131 l 132 0 l 12 -124 b 1 -148 4 -131 1 -140 b 32 -180 1 -164 14 -180 l 158 -180 b 179 -171 166 -180 173 -177 z m 386 -141 l 272 -45 l 157 -141 l 88 -141 l 245 0 l 88 141 l 157 141 l 272 45 l 386 141 l 456 141 l 300 0 l 456 -141 z', + }, + noteheadXHalf: { + x_min: 0, + x_max: 334, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 295 180 b 271 170 287 180 278 177 l 209 98 l 115 171 b 95 180 109 177 104 180 l 36 180 b 4 148 19 180 4 164 b 14 124 4 140 7 132 l 140 22 l 7 -127 b 0 -148 3 -131 0 -138 b 32 -180 0 -166 14 -180 l 184 -180 b 209 -170 193 -180 203 -177 l 271 -99 l 363 -171 b 384 -180 370 -176 377 -180 l 445 -180 b 478 -147 461 -180 478 -163 b 465 -125 478 -138 474 -131 l 341 -22 l 474 127 b 481 148 480 131 481 138 b 448 180 481 166 468 180 z m 36 148 l 95 148 l 233 33 l 334 148 l 410 148 l 274 -6 l 445 -148 l 384 -148 l 248 -35 l 147 -148 l 71 -148 l 206 4 z', + }, + noteheadXBlack: { + x_min: 0, + x_max: 290, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 410 -143 l 239 0 l 410 144 b 418 160 415 147 418 154 b 399 180 418 171 408 180 b 389 177 396 180 392 179 l 207 26 l 29 177 b 17 180 26 179 22 180 b 0 161 7 180 0 170 b 7 144 0 156 3 148 l 179 0 l 7 -143 b 0 -158 1 -147 0 -153 b 19 -180 0 -170 7 -180 b 29 -176 23 -180 26 -179 l 207 -24 l 389 -176 b 399 -180 392 -179 396 -180 b 418 -160 410 -180 418 -168 b 410 -143 418 -153 415 -147 z', + }, + noteheadCircleXDoubleWhole: { + x_min: 0, + x_max: 422, + y_min: -155, + y_max: 155, + ha: 310, + o: 'm 576 223 b 563 213 570 223 563 219 l 563 -215 b 576 -223 563 -219 570 -223 l 595 -223 b 608 -215 602 -223 608 -219 l 608 213 b 595 223 608 219 602 223 z m 497 223 b 484 213 491 223 484 219 l 484 -215 b 497 -223 484 -219 491 -223 l 516 -223 b 528 -215 523 -223 528 -219 l 528 213 b 516 223 528 219 523 223 z m 94 223 b 81 213 86 223 81 219 l 81 -215 b 94 -223 81 -219 86 -223 l 111 -223 b 124 -215 118 -223 124 -219 l 124 213 b 111 223 124 219 118 223 z m 13 223 b 0 213 6 223 0 219 l 0 -215 b 13 -223 0 -219 6 -223 l 30 -223 b 45 -215 37 -223 45 -219 l 45 213 b 30 223 45 219 37 223 z m 304 180 b 127 0 206 180 127 101 b 304 -180 127 -99 206 -180 b 482 0 405 -180 482 -99 b 304 180 482 101 405 180 z m 305 32 l 225 112 b 304 140 248 130 275 140 b 387 112 336 140 364 130 z m 278 1 l 193 -82 b 216 0 199 -59 216 -30 b 194 85 216 33 203 50 z m 334 1 l 418 84 b 389 0 402 50 389 23 b 418 -81 389 -30 409 -60 z m 305 -27 l 389 -109 b 304 -138 364 -128 336 -138 b 222 -109 274 -138 246 -128 z', + }, + noteheadCircleXWhole: { + x_min: 0, + x_max: 249, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 179 180 b 0 0 81 180 0 101 b 179 -180 0 -99 81 -180 b 359 0 278 -180 359 -99 b 179 180 359 101 278 180 z m 180 32 l 99 112 b 179 140 121 130 150 140 b 262 112 210 140 238 130 z m 151 1 l 68 -82 b 86 0 73 -59 86 -30 b 68 85 86 33 78 50 z m 209 1 l 291 84 b 269 0 276 50 269 32 b 291 -79 269 -26 282 -58 z m 180 -27 l 264 -111 b 179 -138 239 -128 210 -138 b 96 -111 148 -138 120 -128 z', + }, + noteheadCircleXHalf: { + x_min: 0, + x_max: 250, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 179 180 b 0 0 81 180 0 101 b 179 -180 0 -99 81 -180 b 360 0 278 -180 360 -99 b 179 180 360 101 278 180 z m 186 37 l 131 92 b 220 124 153 109 189 124 b 262 112 236 124 249 121 z m 215 7 l 291 84 b 304 42 300 71 304 58 b 271 -49 304 10 288 -26 z m 145 -6 l 68 -82 b 56 -42 59 -71 56 -58 b 89 52 56 -9 72 27 z m 174 -33 l 230 -89 b 140 -124 206 -108 171 -124 b 96 -111 122 -124 109 -121 z', + }, + noteheadCircleX: { + x_min: 0, + x_max: 249, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 179 180 b 0 0 81 180 0 99 b 179 -180 0 -99 81 -180 b 359 0 278 -180 359 -99 b 179 180 359 99 278 180 z m 261 112 l 180 30 l 98 112 b 179 138 121 128 148 138 b 261 112 210 138 238 128 z m 317 0 b 292 -82 317 -30 308 -59 l 209 1 l 291 84 b 317 0 307 60 317 30 z m 40 0 b 69 84 40 32 50 60 l 151 1 l 68 -84 b 40 0 49 -60 40 -30 z m 95 -111 l 180 -27 l 262 -111 b 179 -138 239 -128 210 -138 b 95 -111 148 -138 120 -128 z', + }, + noteheadCircledDoubleWhole: { + x_min: 0, + x_max: 603, + y_min: -218, + y_max: 213, + ha: 431, + o: 'm 770 223 l 752 223 b 737 213 744 223 737 219 l 737 59 b 435 307 710 203 582 307 b 128 48 281 307 156 197 l 128 213 b 115 223 128 219 122 223 l 96 223 b 84 213 89 223 84 219 l 84 -215 b 96 -223 84 -220 89 -223 l 115 -223 b 128 -215 122 -223 128 -220 l 128 -56 b 435 -314 156 -206 282 -314 b 654 -223 517 -314 595 -282 b 737 -66 697 -180 726 -125 l 737 -215 b 752 -223 737 -220 744 -223 l 770 -223 b 785 -215 778 -223 785 -220 l 785 213 b 770 223 785 219 778 223 z m 435 274 b 698 85 556 274 661 194 b 439 180 641 143 534 180 b 176 99 320 180 228 148 b 435 274 217 203 318 274 z m 32 223 l 13 223 b 0 213 6 223 0 219 l 0 -215 b 13 -223 0 -220 6 -223 l 32 -223 b 45 -215 40 -223 45 -220 l 45 213 b 32 223 45 219 40 223 z m 852 223 l 835 223 b 819 213 828 223 819 219 l 819 -215 b 835 -223 819 -220 828 -223 l 852 -223 b 868 -215 861 -223 868 -220 l 868 213 b 852 223 868 219 861 223 z m 580 -46 b 514 -143 580 -91 562 -131 b 472 -148 501 -147 487 -148 b 364 -105 433 -148 395 -131 l 334 -73 b 285 58 307 -39 285 10 b 289 91 285 69 287 79 b 403 145 305 140 357 145 b 580 -46 501 145 580 42 z m 435 -282 b 176 -108 318 -282 217 -209 b 425 -180 222 -151 301 -180 b 691 -109 563 -180 647 -153 b 435 -282 651 -210 550 -282 z', + }, + noteheadCircledWhole: { + x_min: 0, + x_max: 437, + y_min: -225, + y_max: 211, + ha: 436, + o: 'm 314 304 b 0 -10 140 304 0 164 b 314 -324 0 -183 141 -324 b 629 -10 487 -324 629 -183 b 314 304 629 164 488 304 z m 314 275 b 588 73 441 275 549 193 b 321 180 536 137 420 180 b 48 88 190 180 95 143 b 314 275 85 199 199 275 z m 393 -141 b 350 -147 379 -145 364 -147 b 314 -141 337 -147 325 -145 b 167 55 235 -120 167 -26 b 173 91 167 66 168 79 b 284 145 187 138 239 145 b 459 -48 382 145 459 39 b 393 -141 459 -91 438 -131 z m 314 -294 b 40 -86 187 -294 75 -207 b 305 -180 81 -141 164 -180 b 588 -86 464 -180 550 -143 b 314 -294 554 -209 442 -294 z', + }, + noteheadCircledHalf: { + x_min: -18, + x_max: 311, + y_min: -162, + y_max: 167, + ha: 329, + o: 'm 212 240 b -26 3 81 240 -26 134 b 212 -233 -26 -127 81 -233 b 448 3 341 -233 448 -127 b 212 240 448 134 341 240 z m 212 220 b 363 160 271 220 324 197 b 281 180 341 173 312 180 b 0 -52 76 180 6 26 b -6 3 -4 -35 -6 -16 b 212 220 -6 122 92 220 z m 50 -92 b 42 -63 46 -84 42 -73 b 173 63 42 -33 73 7 b 317 120 243 105 288 120 b 369 89 344 120 359 107 b 377 62 374 81 377 72 b 248 -66 377 33 348 -1 b 108 -125 183 -109 138 -125 b 50 -92 78 -125 60 -109 z m 212 -215 b 84 -171 164 -215 120 -199 b 138 -180 101 -179 120 -180 b 422 56 372 -180 420 7 b 429 3 426 40 429 22 b 212 -215 429 -117 333 -215 z', + }, + noteheadCircledBlack: { + x_min: -21, + x_max: 321, + y_min: -171, + y_max: 167, + ha: 338, + o: 'm 216 240 b -30 -3 82 240 -30 131 b 216 -246 -30 -137 82 -246 b 462 -3 351 -246 462 -137 b 216 240 462 131 351 240 z m 216 220 b 372 160 276 220 331 197 b 284 180 348 174 317 180 b 0 -59 127 180 0 65 l 0 -66 b -10 -3 -6 -45 -10 -24 b 216 220 -10 120 92 220 z m 216 -226 b 56 -158 153 -226 96 -200 b 140 -180 79 -171 107 -180 b 425 60 268 -180 425 -60 b 422 88 425 71 425 79 b 442 -3 435 60 442 29 b 216 -226 442 -125 341 -226 z', + }, + noteheadDoubleWholeSquare: { + x_min: 0, + x_max: 416, + y_min: -190, + y_max: 198, + ha: 388, + o: 'm 563 217 b 528 180 563 192 544 180 l 62 180 b 36 215 52 180 36 192 l 36 268 b 17 285 36 278 27 285 b 0 268 7 285 0 278 l 0 -255 b 17 -274 0 -264 7 -274 b 36 -255 27 -274 36 -264 l 36 -213 b 66 -180 36 -197 53 -180 l 528 -180 b 563 -209 549 -180 563 -196 l 563 -255 b 580 -274 563 -264 570 -274 b 599 -255 590 -274 599 -264 l 599 268 b 580 285 599 278 590 285 b 563 268 570 285 563 278 z m 36 23 b 111 71 36 55 58 71 l 487 71 b 563 30 533 71 563 53 l 563 -22 b 487 -68 563 -53 533 -68 l 117 -68 b 36 -22 66 -68 36 -49 z', + }, + noteheadSquareWhite: { + x_min: 0, + x_max: 313, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 451 -180 l 451 180 l 0 180 l 0 -180 z m 40 -138 l 40 140 l 410 140 l 410 -138 z', + }, + noteheadSquareBlack: { + x_min: 0, + x_max: 313, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 451 -180 l 451 180 l 0 180 l 0 -180 z', + }, + noteheadTriangleDownDoubleWhole: { + x_min: 0, + x_max: 483, + y_min: -155, + y_max: 155, + ha: 310, + o: 'm 696 213 b 681 223 696 219 690 223 l 662 223 b 648 213 655 223 648 219 l 648 -213 b 662 -223 648 -217 655 -223 l 681 -223 b 696 -213 690 -223 696 -217 z m 619 213 b 605 223 619 219 613 223 l 588 223 b 573 213 580 223 573 219 l 573 174 b 562 180 570 177 566 180 l 134 180 b 122 174 130 180 125 177 l 122 213 b 108 223 122 219 117 223 l 91 223 b 76 213 84 223 76 219 l 76 -213 b 91 -223 76 -217 84 -223 l 108 -223 b 122 -213 117 -223 122 -217 l 122 154 l 334 -173 b 346 -180 337 -177 341 -180 b 357 -173 351 -180 354 -177 l 573 154 l 573 -213 b 588 -223 573 -217 580 -223 l 605 -223 b 619 -213 613 -223 619 -217 z m 32 -223 b 46 -213 40 -223 46 -217 l 46 213 b 32 223 46 219 40 223 l 14 223 b 0 213 7 223 0 219 l 0 -213 b 14 -223 0 -217 7 -223 z m 428 98 b 346 -107 428 17 377 -53 b 265 96 315 -55 265 17 b 289 137 265 109 275 137 l 406 137 b 428 98 419 137 428 111 z', + }, + noteheadTriangleDownWhole: { + x_min: 0, + x_max: 319, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 14 180 b 0 166 6 180 0 173 b 1 158 0 163 1 160 l 216 -173 b 228 -180 219 -177 225 -180 b 239 -173 233 -180 238 -177 l 458 158 b 459 166 458 160 459 163 b 445 180 459 173 454 180 z m 288 137 b 310 98 301 137 310 111 b 228 -108 310 17 259 -55 b 145 96 197 -56 145 17 b 170 137 145 109 157 137 z', + }, + noteheadTriangleDownHalf: { + x_min: 0, + x_max: 285, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 196 -180 b 209 -173 200 -180 206 -177 l 408 157 b 410 166 409 160 410 163 b 396 180 410 173 403 180 l 14 180 b 0 166 4 180 0 173 b 1 158 0 163 0 161 l 183 -173 b 196 -180 184 -174 190 -180 z m 164 138 l 295 138 l 179 -76 l 114 37 z', + }, + noteheadTriangleDownBlack: { + x_min: 0, + x_max: 292, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 207 -180 l 420 180 l 0 180 z', + }, + noteheadTriangleUpDoubleWhole: { + x_min: 0, + x_max: 483, + y_min: -155, + y_max: 155, + ha: 310, + o: 'm 696 213 b 681 223 696 217 690 223 l 662 223 b 648 213 655 223 648 217 l 648 -213 b 662 -223 648 -219 655 -223 l 681 -223 b 696 -213 690 -223 696 -219 z m 619 213 b 605 223 619 217 613 223 l 588 223 b 573 213 580 223 573 217 l 573 -154 l 357 173 b 346 180 354 177 351 180 b 334 173 341 180 337 177 l 122 -154 l 122 213 b 108 223 122 217 117 223 l 91 223 b 76 213 84 223 76 217 l 76 -213 b 91 -223 76 -219 84 -223 l 108 -223 b 122 -213 117 -223 122 -219 l 122 -174 b 134 -180 125 -177 130 -180 l 562 -180 b 573 -174 566 -180 570 -177 l 573 -213 b 588 -223 573 -219 580 -223 l 605 -223 b 619 -213 613 -223 619 -219 z m 32 223 l 14 223 b 0 213 7 223 0 217 l 0 -213 b 14 -223 0 -219 7 -223 l 32 -223 b 46 -213 40 -223 46 -219 l 46 213 b 32 223 46 217 40 223 z m 428 -98 b 406 -137 428 -111 419 -137 l 289 -137 b 265 -96 275 -137 265 -109 b 346 107 265 -17 315 55 b 428 -98 377 53 428 -17 z', + }, + noteheadTriangleUpWhole: { + x_min: 0, + x_max: 319, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 445 -180 b 459 -166 454 -180 459 -173 b 458 -158 459 -163 458 -160 l 239 173 b 228 180 238 177 233 180 b 216 173 225 180 219 177 l 1 -158 b 0 -166 1 -160 0 -163 b 14 -180 0 -173 6 -180 z m 170 -137 b 145 -96 157 -137 145 -109 b 228 108 145 -17 197 56 b 310 -98 259 55 310 -17 b 288 -137 310 -111 301 -137 z', + }, + noteheadTriangleUpHalf: { + x_min: 0, + x_max: 285, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 215 180 b 202 173 210 180 204 177 l 3 -157 b 0 -166 1 -160 0 -163 b 14 -180 0 -173 7 -180 l 396 -180 b 410 -166 406 -180 410 -173 b 409 -158 410 -163 410 -161 l 228 173 b 215 180 226 174 220 180 z m 246 -138 l 115 -138 l 232 76 l 297 -37 z', + }, + noteheadTriangleUpBlack: { + x_min: 0, + x_max: 293, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 422 -180 l 207 180 l 0 -180 z', + }, + noteheadSlashedDoubleWhole1: { + x_min: 0, + x_max: 596, + y_min: -179, + y_max: 168, + ha: 347, + o: 'm 618 135 l 697 206 b 704 222 703 210 704 216 b 698 236 704 226 703 232 b 683 242 694 239 688 242 b 670 238 677 242 674 240 l 575 153 b 435 180 531 168 481 180 b 128 0 246 180 128 98 b 236 -148 128 -58 160 -114 l 153 -222 b 145 -238 148 -226 145 -232 b 151 -252 145 -242 148 -248 b 167 -258 156 -256 161 -258 b 181 -253 171 -258 177 -256 l 282 -164 b 420 -180 320 -173 366 -180 b 729 0 654 -180 729 -98 b 618 135 729 55 681 104 z m 114 223 l 95 223 b 82 212 88 223 82 217 l 82 -215 b 95 -223 82 -219 88 -223 l 114 -223 b 127 -215 121 -223 127 -219 l 127 212 b 114 223 127 217 121 223 z m 32 223 l 13 223 b 0 212 6 223 0 217 l 0 -215 b 13 -223 0 -219 6 -223 l 32 -223 b 45 -215 39 -223 45 -219 l 45 212 b 32 223 45 217 39 223 z m 844 223 l 825 223 b 811 212 819 223 811 217 l 811 -215 b 825 -223 811 -219 819 -223 l 844 -223 b 858 -215 851 -223 858 -219 l 858 212 b 844 223 858 217 851 223 z m 763 223 l 743 223 b 730 212 736 223 730 217 l 730 -215 b 743 -223 730 -219 736 -223 l 763 -223 b 776 -215 769 -223 776 -219 l 776 212 b 763 223 776 217 769 223 z m 282 56 b 285 89 282 68 284 79 b 399 144 301 137 354 144 b 510 95 441 144 480 124 l 327 -68 b 282 56 301 -35 282 13 z m 572 -72 b 508 -141 564 -108 544 -132 b 467 -147 495 -145 481 -147 b 360 -104 428 -147 389 -128 l 356 -98 l 537 63 b 575 -46 560 30 575 -9 b 572 -72 575 -55 573 -65 z', + }, + noteheadSlashedWhole1: { + x_min: -22, + x_max: 433, + y_min: -157, + y_max: 148, + ha: 305, + o: 'm 484 140 b 308 180 431 166 367 180 b 0 1 118 180 0 99 b 73 -128 0 -48 22 -95 l -22 -190 b -32 -206 -27 -194 -32 -200 b -27 -217 -32 -210 -30 -215 b -12 -226 -23 -223 -17 -226 b 0 -223 -7 -226 -4 -225 l 112 -150 b 294 -180 157 -168 217 -180 b 602 1 526 -180 602 -98 b 523 118 602 48 570 86 l 613 177 b 624 193 619 181 624 187 b 619 204 624 197 622 200 b 603 213 615 209 609 213 b 592 209 599 213 596 212 z m 190 -52 b 154 56 170 -20 154 19 b 160 91 154 68 156 79 b 271 147 174 138 226 147 b 396 82 321 147 364 121 z m 419 50 b 446 -48 436 19 446 -14 b 337 -147 446 -120 402 -147 b 301 -141 327 -147 314 -144 b 235 -104 276 -134 253 -120 b 215 -84 226 -98 220 -91 z', + }, + noteheadSlashedHalf1: { + x_min: -67, + x_max: 386, + y_min: -142, + y_max: 160, + ha: 302, + o: 'm 552 222 b 536 230 549 228 543 230 b 524 228 533 230 528 230 l 389 140 b 281 180 364 164 327 180 b 0 -60 65 180 0 13 b 7 -105 0 -78 3 -92 l -88 -167 b -96 -184 -94 -171 -96 -177 b -94 -194 -96 -187 -95 -192 b -76 -204 -89 -202 -84 -204 b -66 -202 -73 -204 -69 -203 l 29 -140 b 137 -180 55 -167 92 -180 b 420 59 374 -180 420 13 b 412 107 420 76 419 92 l 546 194 b 556 210 552 197 556 204 b 552 222 556 213 554 217 z m 315 120 b 347 112 328 120 338 117 l 46 -82 b 42 -63 43 -76 42 -69 b 315 120 42 6 248 120 z m 108 -124 b 69 -114 91 -124 79 -120 l 372 81 b 376 63 374 75 376 69 b 108 -124 376 0 174 -124 z', + }, + noteheadSlashedBlack1: { + x_min: -80, + x_max: 375, + y_min: -165, + y_max: 167, + ha: 332, + o: 'm 518 240 b 507 236 514 240 510 239 l 384 148 b 284 180 359 168 324 180 b 0 -62 127 180 0 63 b 13 -115 0 -82 4 -99 l -107 -202 b -115 -217 -111 -204 -115 -212 b -111 -229 -115 -222 -114 -225 b -95 -238 -108 -235 -101 -238 b -84 -235 -91 -238 -86 -236 l 39 -148 b 140 -180 63 -170 99 -180 b 425 59 268 -180 425 -62 b 410 117 425 81 420 101 l 530 203 b 540 219 536 207 540 213 b 518 240 540 229 528 240 z', + }, + noteheadSlashedDoubleWhole2: { + x_min: 0, + x_max: 596, + y_min: -178, + y_max: 169, + ha: 347, + o: 'm 729 0 b 435 180 729 102 569 180 b 278 156 374 180 321 170 l 184 239 b 170 243 181 242 176 243 b 154 238 166 243 158 240 b 150 223 151 233 150 228 b 156 207 150 217 153 212 l 233 138 b 128 0 167 107 128 56 b 420 -180 128 -94 210 -180 b 575 -164 482 -180 533 -174 l 672 -252 b 687 -256 677 -255 681 -256 b 703 -251 691 -256 698 -255 b 707 -236 706 -246 707 -240 b 701 -220 707 -230 706 -225 l 619 -150 b 729 0 700 -117 729 -62 z m 114 223 l 95 223 b 82 213 88 223 82 217 l 82 -213 b 95 -223 82 -219 88 -223 l 114 -223 b 127 -213 121 -223 127 -219 l 127 213 b 114 223 127 217 121 223 z m 32 223 l 13 223 b 0 213 6 223 0 217 l 0 -213 b 13 -223 0 -219 6 -223 l 32 -223 b 45 -213 39 -223 45 -219 l 45 213 b 32 223 45 217 39 223 z m 844 223 l 825 223 b 811 213 819 223 811 217 l 811 -213 b 825 -223 811 -219 819 -223 l 844 -223 b 858 -213 851 -223 858 -219 l 858 213 b 844 223 858 217 851 223 z m 763 223 l 743 223 b 730 213 736 223 730 217 l 730 -213 b 743 -223 730 -219 736 -223 l 763 -223 b 776 -213 769 -223 776 -219 l 776 213 b 763 223 776 217 769 223 z m 312 124 b 399 144 336 141 369 144 b 575 -46 495 144 575 40 b 563 -98 575 -65 570 -81 z m 508 -141 b 467 -147 495 -145 481 -147 b 360 -104 428 -147 389 -128 b 330 -72 350 -95 340 -82 b 282 56 304 -37 282 10 b 285 89 282 68 284 79 b 536 -130 287 89 304 75 z', + }, + noteheadSlashedWhole2: { + x_min: -18, + x_max: 436, + y_min: -154, + y_max: 151, + ha: 305, + o: 'm 531 -128 b 602 1 582 -96 602 -49 b 308 180 602 104 441 180 b 114 144 230 180 164 166 l 4 215 b -6 217 1 217 -3 217 b -22 209 -13 217 -19 215 b -26 197 -24 204 -26 200 b -16 181 -26 192 -22 184 l 75 121 b 0 1 27 91 0 49 b 294 -180 0 -94 82 -180 b 491 -150 379 -180 444 -168 l 598 -219 b 608 -222 600 -222 605 -222 b 624 -213 615 -222 621 -219 b 628 -202 626 -209 628 -206 b 618 -186 628 -196 624 -189 z m 168 108 b 271 147 190 141 233 147 b 446 -48 369 147 446 40 b 445 -72 446 -56 446 -63 z m 154 69 l 429 -109 b 382 -141 419 -125 402 -135 b 337 -147 367 -144 351 -147 b 301 -141 327 -147 314 -144 b 235 -104 276 -134 253 -120 b 203 -72 223 -94 213 -82 b 154 58 177 -39 154 12 z', + }, + noteheadSlashedHalf2: { + x_min: -73, + x_max: 380, + y_min: -134, + y_max: 168, + ha: 302, + o: 'm 537 -156 l 383 -58 b 422 60 413 -9 422 39 b 281 180 422 134 364 180 b 101 127 203 180 144 157 l -75 239 b -85 242 -78 242 -82 242 b -102 233 -92 242 -98 239 b -105 222 -104 229 -105 225 b -95 206 -105 216 -102 209 l 69 99 b 0 -59 19 46 0 -20 b 138 -180 0 -135 60 -180 b 359 -88 248 -180 317 -138 l 516 -190 b 527 -193 520 -192 524 -193 b 543 -183 534 -193 540 -190 b 547 -173 546 -180 547 -176 b 537 -156 547 -166 543 -160 z m 367 92 b 377 63 374 82 377 73 b 318 -14 377 43 361 20 l 184 72 b 317 121 248 108 289 121 b 367 92 344 121 357 109 z m 248 -66 b 108 -124 181 -108 138 -124 b 50 -92 78 -124 60 -109 b 42 -63 46 -84 42 -73 b 145 49 42 -35 68 0 l 285 -40 b 248 -66 274 -49 261 -56 z', + }, + noteheadSlashedBlack2: { + x_min: -79, + x_max: 376, + y_min: -164, + y_max: 168, + ha: 332, + o: 'm 531 -200 l 363 -78 b 425 59 402 -37 425 10 b 285 180 425 132 367 180 b 92 114 210 180 144 154 l -81 238 b -94 242 -85 240 -89 242 b -111 232 -99 242 -107 238 b -114 220 -112 229 -114 225 b -105 204 -114 215 -111 207 l 62 85 b 0 -62 23 43 0 -9 b 140 -180 0 -137 62 -180 b 331 -108 204 -180 275 -153 l 507 -233 b 520 -236 511 -236 517 -236 b 537 -228 527 -236 533 -233 b 541 -216 540 -225 541 -220 b 531 -200 541 -210 537 -203 z', + }, + noteheadDiamondDoubleWhole: { + x_min: 0, + x_max: 432, + y_min: -155, + y_max: 155, + ha: 310, + o: 'm 592 223 b 580 215 585 223 580 219 l 580 -215 b 592 -223 580 -219 585 -223 l 608 -223 b 622 -215 615 -223 622 -219 l 622 215 b 608 223 622 219 615 223 z m 517 223 b 504 215 510 223 504 219 l 504 -215 b 517 -223 504 -219 510 -223 l 533 -223 b 544 -215 540 -223 544 -219 l 544 215 b 533 223 544 219 540 223 z m 246 179 b 240 180 243 179 242 180 b 232 176 236 180 233 179 l 118 22 b 117 17 117 20 117 19 l 117 215 b 104 223 117 219 111 223 l 88 223 b 75 215 81 223 75 219 l 75 -215 b 88 -223 75 -219 81 -223 l 104 -223 b 117 -215 111 -223 117 -219 l 117 14 l 118 14 b 122 7 118 12 120 10 l 374 -179 b 382 -180 376 -180 379 -180 b 390 -177 384 -180 387 -180 l 503 -23 l 503 -17 b 500 -9 503 -13 503 -10 z m 12 223 b 0 215 4 223 0 219 l 0 -215 b 12 -223 0 -219 4 -223 l 29 -223 b 40 -215 36 -223 40 -219 l 40 215 b 29 223 40 219 36 223 z m 183 39 b 179 46 181 39 179 43 b 229 112 226 112 228 112 b 236 109 229 112 233 111 l 436 -39 b 439 -46 438 -39 439 -42 b 390 -112 393 -111 392 -112 b 383 -109 389 -112 386 -111 z', + }, + noteheadDiamondWhole: { + x_min: 0, + x_max: 270, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 386 -23 b 389 -16 387 -20 389 -19 b 383 -7 389 -13 386 -9 l 130 179 b 122 180 128 180 125 180 b 115 177 120 180 117 180 l 3 23 b 0 17 1 20 0 19 b 4 7 0 16 3 10 l 258 -179 b 264 -180 261 -179 262 -180 b 272 -176 268 -180 271 -179 z m 66 40 b 62 48 65 42 62 45 l 109 111 b 112 112 109 112 111 112 b 118 111 115 112 117 111 l 320 -37 b 324 -46 323 -39 324 -42 b 275 -111 278 -111 276 -111 b 268 -108 272 -111 271 -109 z', + }, + noteheadDiamondHalf: { + x_min: 0, + x_max: 251, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 359 -7 b 361 0 360 -6 361 -3 b 359 7 361 3 360 4 l 189 177 b 180 180 186 179 183 180 b 174 177 179 180 176 179 l 4 7 b 0 0 1 4 0 3 b 4 -7 0 -3 1 -6 l 174 -177 b 180 -180 176 -180 179 -180 b 189 -177 183 -180 186 -180 z m 266 26 b 138 -71 266 -12 176 -71 b 96 -50 121 -71 108 -63 b 88 -24 89 -43 88 -32 b 215 73 88 13 177 73 b 266 26 238 73 266 50 z', + }, + noteheadDiamondBlack: { + x_min: 0, + x_max: 250, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 357 -6 b 360 1 359 -4 360 -1 b 357 9 360 4 359 7 l 189 177 b 180 180 187 179 184 180 b 171 177 177 180 173 179 l 3 9 b 0 1 0 6 0 4 b 4 -7 0 -1 1 -4 l 173 -177 b 180 -180 176 -180 177 -180 b 187 -177 181 -180 184 -180 z', + }, + noteheadParenthesis: { + x_min: -73, + x_max: 368, + y_min: -180, + y_max: 182, + ha: 362, + o: 'm 52 -249 b -30 -144 3 -212 -14 -190 b -52 4 -45 -102 -52 -56 b 52 252 -52 118 -36 179 l 46 262 b -105 3 -49 197 -105 124 b 45 -259 -105 -109 -48 -200 z m 382 -259 b 530 3 474 -202 530 -108 b 379 262 530 122 474 200 l 373 252 b 478 4 462 180 478 118 b 456 -144 478 -56 471 -102 b 373 -249 439 -190 422 -212 z', + }, + noteheadParenthesisRight: { + x_min: -36, + x_max: 73, + y_min: -181, + y_max: 181, + ha: 362, + o: 'm -43 -261 b 105 1 49 -203 105 -109 b -46 261 105 121 49 199 l -52 251 b 53 3 37 179 53 117 b 32 -145 53 -58 46 -104 b -52 -251 14 -192 -3 -213 z', + }, + noteheadParenthesisLeft: { + x_min: 0, + x_max: 109, + y_min: -181, + y_max: 181, + ha: 362, + o: 'm 157 -251 b 75 -145 108 -213 91 -192 b 53 3 60 -104 53 -58 b 157 251 53 117 69 177 l 151 261 b 0 1 56 196 0 122 b 150 -261 0 -111 58 -202 z', + }, + noteheadMoonBlack: { + x_min: 0, + x_max: 315, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 228 -180 b 454 0 343 -180 454 -130 l 454 180 l 0 180 l 0 0 b 228 -180 0 -131 112 -180 z', + }, + noteheadTriangleLeftBlack: { + x_min: 0, + x_max: 339, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 488 -180 l 0 180 l 0 -180 z', + }, + noteheadTriangleRightBlack: { + x_min: 0, + x_max: 339, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 488 180 l 0 -180 l 488 -180 z', + }, + noteheadTriangleRoundDownBlack: { + x_min: 0, + x_max: 278, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 200 -180 l 400 112 l 383 124 b 199 180 327 161 264 180 b 16 124 135 180 73 161 l 0 112 z', + }, + augmentationDot: { + x_min: 0, + x_max: 100, + y_min: -50, + y_max: 50, + ha: 100, + o: 'm 144 0 b 72 72 144 40 112 72 b 0 0 32 72 0 40 b 72 -72 0 -40 32 -72 b 144 0 112 -72 144 -40 z', + }, + tremolo1: { + x_min: -150, + x_max: 150, + y_min: -93, + y_max: 94, + ha: 187, + o: 'm 216 -45 l 216 135 l -216 46 l -216 -134 z', + }, + flag8thUp: { + x_min: 0, + x_max: 264, + y_min: -810.1921176545985, + y_max: 9, + ha: 819.1921176545985, + o: 'm 343 -1138 b 380 -888 343 -1138 380 -1001 b 215 -395 380 -708 305 -539 b 58 -19 141 -281 81 -157 b 27 13 53 4 42 13 b 0 -9 12 13 0 9 l 0 -353 b 284 -688 95 -370 232 -566 b 318 -904 305 -737 318 -819 b 284 -1102 318 -969 308 -1037 b 279 -1123 281 -1110 279 -1117 b 302 -1165 279 -1146 294 -1159 b 343 -1138 311 -1171 336 -1162 z', + }, + flag8thDown: { + x_min: 0, + x_max: 306, + y_min: -14, + y_max: 808, + ha: 822, + o: 'm 346 1094 b 376 897 366 1034 376 962 b 318 642 376 812 340 691 b 0 340 265 521 193 405 l 0 1 b 23 -20 0 -13 12 -20 b 58 12 36 -20 55 -12 b 262 387 82 148 189 274 b 441 881 353 530 441 701 b 400 1142 441 994 412 1096 b 377 1164 396 1158 387 1164 b 346 1094 356 1164 331 1136 z', + }, + flag16thUp: { + x_min: 0, + x_max: 279, + y_min: -813, + y_max: 2, + ha: 815, + o: 'm 392 -1146 b 402 -988 397 -1139 402 -1057 l 402 -956 b 360 -783 402 -896 386 -837 b 359 -770 360 -779 359 -776 b 360 -760 359 -768 359 -765 b 396 -577 364 -752 396 -665 b 392 -526 396 -559 395 -543 b 236 -275 377 -428 340 -387 b 53 -16 158 -192 78 -168 b 24 3 50 0 33 3 b 0 -12 16 3 0 -1 l 0 -570 l 7 -570 b 298 -778 96 -573 199 -576 b 344 -992 331 -847 344 -917 b 333 -1120 344 -1034 340 -1077 b 331 -1133 331 -1126 331 -1129 b 363 -1171 331 -1152 343 -1171 b 392 -1146 373 -1171 383 -1165 z m 301 -661 b 223 -562 278 -625 253 -596 b 59 -331 156 -484 89 -449 b 58 -327 58 -330 58 -328 b 78 -312 58 -321 66 -312 l 89 -312 b 302 -464 177 -312 255 -393 b 341 -592 328 -501 341 -546 b 340 -621 341 -602 341 -611 b 330 -658 337 -632 337 -647 b 311 -667 328 -662 318 -667 b 301 -661 307 -667 304 -665 z', + }, + flag16thDown: { + x_min: 0, + x_max: 290.8951581511223, + y_min: -9, + y_max: 812.0064, + ha: 821.0064, + o: 'm 346 1132 b 312 768 367 1011 367 880 b 7 559 213 566 96 562 l 0 559 l 0 1 b 24 -13 0 -6 10 -13 b 53 6 35 -13 50 -10 b 406 516 88 228 372 289 b 410 567 409 531 410 549 b 374 750 410 655 379 742 b 373 760 373 753 373 756 b 374 773 373 766 374 769 b 405 1138 426 881 428 1022 b 370 1169 397 1171 387 1169 b 346 1132 353 1168 341 1156 z m 325 657 b 344 647 333 657 343 652 b 354 611 351 636 351 622 b 356 582 356 600 356 590 b 317 454 356 534 343 491 b 89 302 269 383 177 302 l 78 302 b 58 317 66 302 58 310 b 59 321 58 318 58 320 b 238 552 89 439 170 472 b 315 651 268 585 292 613 b 325 657 318 655 321 657 z', + }, + flag32ndUp: { + x_min: 0, + x_max: 261, + y_min: -812, + y_max: 149, + ha: 961, + o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 366 -289 369 -315 369 -302 b 220 -58 350 -202 317 -163 b 46 187 148 20 71 43 b 20 215 45 200 35 215 b 0 197 12 215 0 207 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 56 -390 147 -527 88 -495 b 73 -367 53 -380 60 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z', + }, + flag32ndDown: { + x_min: 0, + x_max: 273, + y_min: -172, + y_max: 812, + ha: 984, + o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -229 b 20 -248 0 -242 9 -248 b 48 -219 35 -248 46 -232 b 229 36 72 -69 154 -46 b 380 278 330 145 364 186 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z', + }, + flag64thUp: { + x_min: 0, + x_max: 261, + y_min: -812, + y_max: 347, + ha: 1159, + o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 220 228 350 84 317 122 b 46 472 148 305 71 328 b 20 500 45 485 32 500 b 0 482 10 500 0 492 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 24 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 58 187 148 20 82 43 b 56 193 58 189 58 192 b 300 24 138 193 220 157 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 b 73 -367 52 -376 63 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z', + }, + flag64thDown: { + x_min: 0, + x_max: 273, + y_min: -376, + y_max: 812, + ha: 1188, + o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -523 b 20 -541 0 -534 9 -541 b 48 -513 35 -541 46 -526 b 229 -258 72 -363 154 -340 b 380 -16 330 -148 364 -108 b 384 27 383 -1 384 13 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z m 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 b 229 36 75 -86 145 -55 b 311 128 264 73 289 102 z', + }, + flag128thUp: { + x_min: 0, + x_max: 261, + y_min: -812, + y_max: 533, + ha: 1345, + o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 341 75 360 26 353 50 b 369 222 354 111 369 167 b 366 264 369 236 369 251 b 220 495 350 351 317 390 b 46 740 148 573 71 596 b 22 768 45 753 35 768 b 0 750 10 768 0 760 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 292 b 321 223 315 264 321 242 b 317 193 321 212 318 203 b 301 135 314 180 308 158 b 220 228 281 161 255 190 b 55 461 151 304 79 327 b 300 292 134 461 220 426 z m 300 24 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 56 187 148 20 81 43 b 55 193 56 189 56 192 b 300 24 137 193 220 157 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 b 73 -367 53 -376 62 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z', + }, + flag128thDown: { + x_min: 0, + x_max: 273, + y_min: -580, + y_max: 812, + ha: 1392, + o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -816 b 20 -835 0 -828 7 -835 b 48 -806 33 -835 46 -819 b 229 -552 72 -657 154 -634 b 380 -310 330 -442 364 -402 b 384 -266 383 -295 384 -281 b 351 -105 384 -206 366 -143 b 384 27 372 -66 384 -16 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z m 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 b 229 36 75 -86 145 -55 b 311 128 264 73 289 102 z m 330 -238 b 334 -268 331 -248 334 -256 b 311 -340 334 -287 328 -310 b 56 -516 229 -478 137 -516 b 229 -258 75 -380 145 -348 b 311 -166 264 -220 289 -192 z', + }, + accidentalFlat: { + x_min: 0, + x_max: 226, + y_min: -175, + y_max: 439, + ha: 614, + o: 'm 17 -245 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 82 -225 117 -186 b 325 82 281 -72 325 16 b 196 220 325 164 262 216 b 117 196 171 220 137 209 b 85 176 108 189 92 176 b 78 177 82 176 81 176 b 62 202 68 181 62 192 b 72 608 63 233 72 579 b 45 632 72 624 59 632 b 0 592 24 632 1 618 b 17 -245 0 592 6 -230 z m 68 -117 b 63 27 68 -117 63 -30 b 66 73 63 50 65 68 b 167 144 76 102 134 144 b 226 60 209 144 226 96 b 98 -134 226 -17 160 -95 b 84 -138 92 -137 88 -138 b 68 -117 71 -138 68 -124 z', + }, + accidentalNatural: { + x_min: 0, + x_max: 168, + y_min: -335, + y_max: 341, + ha: 676, + o: 'm 203 261 b 197 259 200 261 199 259 b 68 226 197 259 105 226 b 53 233 59 226 53 228 l 53 474 b 36 491 53 484 45 491 l 17 491 b 0 474 7 491 0 484 l 0 -268 b 13 -281 0 -276 4 -281 l 16 -279 b 22 -278 17 -279 20 -279 b 164 -235 42 -269 122 -235 b 189 -251 179 -235 189 -239 l 189 -465 b 206 -482 189 -475 196 -482 l 225 -482 b 242 -465 233 -482 242 -475 l 242 258 b 230 269 242 265 236 269 b 225 268 229 269 226 269 z m 53 56 b 176 114 53 76 141 114 b 189 107 184 114 189 112 l 189 -42 b 71 -101 189 -68 107 -101 b 53 -92 60 -101 53 -98 z', + }, + accidentalSharp: { + x_min: 0, + x_max: 249, + y_min: -348, + y_max: 350, + ha: 698, + o: 'm 341 170 b 359 194 351 174 359 186 l 359 297 b 348 308 359 304 354 308 b 341 307 346 308 344 308 b 305 294 341 307 312 295 b 285 312 295 294 285 301 l 285 488 b 265 504 285 497 276 504 b 242 488 251 504 242 497 l 242 301 b 223 259 240 287 236 268 b 132 223 206 249 157 229 b 115 252 120 223 115 240 l 115 425 b 95 441 115 433 105 441 b 72 425 81 441 72 433 l 72 230 b 55 192 72 210 63 196 b 17 176 46 187 17 176 b 0 153 7 173 0 161 l 0 50 b 13 37 0 42 4 37 l 16 39 b 50 53 17 39 39 48 l 52 55 b 72 29 63 55 72 40 l 72 -114 b 56 -147 72 -130 65 -143 b 17 -163 48 -150 17 -163 b 0 -186 7 -166 0 -177 l 0 -288 b 13 -301 0 -297 4 -301 l 16 -300 b 50 -287 17 -300 37 -291 b 55 -285 52 -285 53 -285 b 72 -308 65 -285 72 -301 l 72 -485 b 91 -501 72 -494 81 -501 b 115 -485 105 -501 115 -494 l 115 -285 b 130 -253 115 -266 122 -256 l 217 -217 b 219 -217 217 -217 219 -217 l 222 -216 b 242 -242 235 -216 242 -233 l 242 -422 b 261 -438 242 -431 251 -438 b 285 -422 276 -438 285 -431 l 285 -217 b 301 -184 285 -206 291 -189 b 341 -168 311 -180 341 -168 b 359 -144 351 -164 359 -153 l 359 -42 b 348 -30 359 -35 354 -30 b 341 -32 346 -30 344 -30 l 304 -46 b 285 -20 295 -46 285 -37 l 285 114 b 304 156 285 124 292 151 z m 242 -65 b 132 -122 233 -94 166 -122 b 115 -115 124 -122 117 -120 b 111 -43 112 -109 111 -78 b 115 63 111 1 112 52 b 220 118 118 88 184 118 b 242 109 230 118 239 115 b 248 27 245 102 248 66 b 242 -65 248 -12 245 -52 z', + }, + accidentalDoubleSharp: { + x_min: 0, + x_max: 247, + y_min: -125, + y_max: 127, + ha: 252, + o: 'm 274 -46 b 206 1 258 -37 206 -9 b 274 50 206 22 253 43 b 278 50 275 50 276 50 l 287 49 b 346 63 304 49 331 52 b 356 115 353 71 356 92 b 292 183 356 174 351 183 b 233 173 266 183 240 180 b 226 117 228 168 226 143 b 179 49 219 101 196 49 b 130 117 158 49 135 96 b 118 173 130 141 125 167 b 66 183 112 180 89 183 b 7 173 42 183 16 180 b 0 120 3 170 0 145 b 7 63 0 94 3 68 b 68 49 17 55 43 49 b 82 50 73 49 78 50 b 150 3 98 42 150 13 b 84 -46 150 -16 104 -39 l 69 -46 b 7 -56 43 -46 16 -49 b 0 -111 3 -60 0 -85 b 7 -166 0 -137 3 -163 b 65 -180 17 -174 40 -180 b 118 -166 86 -180 109 -176 b 130 -111 127 -158 130 -134 b 132 -105 130 -109 131 -107 b 177 -45 141 -85 158 -45 b 226 -111 196 -45 220 -91 b 233 -166 226 -137 228 -161 b 291 -180 243 -174 266 -180 b 356 -114 346 -180 356 -166 b 346 -56 356 -89 351 -63 b 288 -46 338 -49 312 -46 z', + }, + accidentalDoubleFlat: { + x_min: 0, + x_max: 411, + y_min: -175, + y_max: 437, + ha: 612, + o: 'm 452 217 b 384 194 426 217 408 207 b 350 176 374 189 363 176 b 343 177 347 176 344 176 b 328 202 333 180 328 190 b 337 606 328 232 337 579 b 310 629 337 622 324 629 b 265 592 291 629 268 616 b 269 194 265 592 266 395 b 196 217 248 209 223 217 l 187 217 b 120 194 160 217 143 207 b 85 176 108 189 98 176 b 78 177 82 176 81 176 b 62 202 68 180 62 190 b 72 606 62 232 72 579 b 45 629 72 622 59 629 b 0 592 24 629 1 616 b 17 -245 0 592 7 -232 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 84 -226 120 -186 b 274 -50 206 -124 246 -85 b 284 -245 276 -158 279 -240 b 295 -252 288 -251 292 -252 b 304 -249 300 -252 304 -249 b 416 -163 348 -226 383 -186 b 592 82 546 -72 592 16 b 461 217 592 163 528 216 z m 96 -134 b 84 -138 92 -137 86 -138 b 68 -115 72 -138 68 -124 b 63 26 68 -115 63 -30 b 66 72 63 49 65 66 b 168 144 75 101 134 144 b 226 59 212 144 226 95 b 96 -134 226 -22 161 -94 z m 361 -134 b 348 -138 356 -137 351 -138 b 333 -115 337 -138 333 -124 b 328 39 333 -115 328 -16 b 330 72 328 55 328 68 b 433 144 338 101 399 144 b 468 130 448 144 459 140 b 490 59 481 112 490 88 b 361 -134 490 -22 426 -94 z', + }, + accidentalParensLeft: { + x_min: 0, + x_max: 141, + y_min: -248, + y_max: 247, + ha: 495, + o: 'm 203 331 l 203 351 b 202 356 203 354 203 356 b 0 0 60 281 0 140 b 199 -357 0 -144 60 -269 b 203 -354 200 -357 203 -356 l 203 -333 b 200 -327 203 -330 202 -328 b 86 0 118 -253 86 -160 b 200 324 86 158 120 251 b 203 331 202 325 203 327 z', + }, + accidentalParensRight: { + x_min: 0, + x_max: 141, + y_min: -248, + y_max: 247, + ha: 495, + o: 'm 0 331 b 3 324 0 327 1 325 b 117 0 84 251 117 158 b 3 -327 117 -160 85 -253 b 0 -333 1 -328 0 -330 l 0 -354 b 4 -357 0 -356 3 -357 b 203 0 143 -269 203 -144 b 1 356 203 140 143 281 b 0 351 0 356 0 354 z', + }, + accidentalQuarterToneFlatStein: { + x_min: 1, + x_max: 227, + y_min: -175, + y_max: 439, + ha: 614, + o: 'm 310 -245 b 327 592 321 -230 327 592 b 282 632 325 618 302 632 b 255 608 268 632 255 624 b 265 202 255 579 264 233 b 249 177 265 192 259 181 b 242 176 246 176 245 176 b 210 196 235 176 219 189 b 131 220 190 209 156 220 b 1 85 65 216 1 164 b 174 -161 1 16 46 -72 b 288 -249 210 -186 245 -225 b 297 -252 288 -249 292 -252 b 310 -245 301 -252 305 -251 z m 259 -117 b 243 -138 259 -124 256 -138 b 229 -134 239 -138 235 -137 b 101 60 167 -95 101 -17 b 160 144 101 96 118 144 b 261 73 193 144 251 102 b 264 27 262 68 264 50 b 259 -117 264 -30 259 -117 z', + }, + accidentalThreeQuarterTonesFlatZimmermann: { + x_min: 1, + x_max: 466, + y_min: -175, + y_max: 439, + ha: 614, + o: 'm 363 -245 b 376 -252 367 -251 372 -252 b 384 -249 380 -252 384 -249 b 497 -161 428 -226 464 -186 b 671 84 625 -72 671 16 b 541 220 671 164 606 217 b 513 217 531 220 523 219 b 464 196 495 212 480 206 b 431 176 452 189 442 176 b 423 177 428 176 426 176 b 408 202 413 180 408 190 l 419 608 b 392 632 419 625 406 632 b 346 592 372 632 347 618 b 363 -245 346 592 351 -230 z m 289 -249 b 297 -252 289 -249 292 -252 b 310 -245 300 -252 305 -251 b 328 592 321 -230 328 592 b 282 631 327 618 302 631 b 255 608 268 631 255 624 l 266 202 b 251 177 266 190 261 180 b 243 176 248 176 246 176 b 210 196 232 176 222 189 b 164 216 196 204 180 210 l 163 217 b 132 220 151 219 143 220 b 1 84 65 217 1 163 b 177 -163 1 16 48 -72 b 289 -249 210 -186 245 -226 z m 262 72 b 265 26 264 66 265 49 b 261 -115 265 -30 261 -115 b 245 -138 261 -124 258 -138 b 230 -134 240 -138 236 -137 b 102 60 166 -92 102 -20 b 124 128 102 88 111 112 b 161 144 134 138 147 144 b 199 134 173 144 184 141 b 262 72 219 122 256 92 z m 413 -115 b 409 26 413 -115 409 -30 b 412 72 409 49 410 66 b 514 144 420 102 480 144 b 570 60 557 144 570 96 b 442 -134 570 -23 508 -91 b 429 -138 436 -137 433 -138 b 413 -115 418 -138 413 -124 z', + }, + accidentalQuarterToneSharpStein: { + x_min: 0, + x_max: 179, + y_min: -353, + y_max: 307, + ha: 660, + o: 'm 258 240 b 246 252 258 248 252 252 b 240 251 245 252 242 252 b 168 225 240 251 171 225 b 150 253 156 225 150 240 l 150 426 b 130 442 150 435 141 442 b 105 418 108 442 105 429 l 105 230 b 91 193 105 219 101 202 b 17 161 65 183 42 171 b 0 138 9 158 0 147 l 0 36 b 13 23 0 27 4 23 l 16 24 b 86 53 17 24 73 49 l 88 55 b 107 30 98 55 107 42 l 107 -114 b 92 -145 107 -130 101 -143 l 17 -177 b 0 -200 9 -180 0 -192 l 0 -302 b 13 -315 0 -311 4 -315 l 16 -314 b 85 -285 17 -314 72 -291 b 105 -312 92 -282 105 -301 l 105 -492 b 125 -508 105 -501 114 -508 b 150 -484 147 -508 150 -498 l 150 -285 b 151 -274 150 -281 150 -278 b 164 -253 153 -265 158 -256 b 240 -225 176 -251 240 -225 b 258 -202 249 -222 258 -210 l 258 -99 b 245 -86 258 -91 253 -86 l 242 -88 b 240 -88 242 -88 240 -88 l 240 -86 b 168 -115 240 -86 174 -114 b 148 -91 158 -115 148 -107 l 148 43 b 167 85 148 55 156 81 b 240 114 180 91 240 114 b 258 138 249 118 258 128 z', + }, + accidentalThreeQuarterTonesSharpStein: { + x_min: 3, + x_max: 317, + y_min: -347, + y_max: 369, + ha: 716, + o: 'm 456 324 b 448 336 456 330 454 336 b 393 317 445 336 400 320 b 389 315 392 315 390 315 b 383 325 386 315 383 318 l 383 508 b 360 531 383 528 379 531 b 337 508 341 531 337 527 l 337 318 b 325 291 337 300 334 294 b 268 268 320 288 287 276 b 253 281 256 268 253 274 l 253 464 b 230 487 253 484 249 487 b 207 464 212 487 207 482 l 207 264 b 194 240 207 253 204 245 l 132 217 b 131 217 132 217 132 217 l 130 216 b 118 229 122 216 118 220 l 118 420 b 95 444 118 439 114 444 b 72 420 76 444 72 439 l 72 212 b 60 190 72 197 68 193 l 16 173 b 4 161 9 170 4 167 l 4 50 b 13 39 4 45 9 39 b 58 55 16 39 46 49 b 63 56 60 56 62 56 b 72 42 71 56 72 50 l 72 -125 b 58 -150 72 -137 65 -147 l 16 -166 b 4 -177 9 -168 4 -171 l 4 -289 b 14 -301 4 -295 9 -301 b 53 -287 16 -301 40 -291 b 62 -285 56 -285 59 -285 b 72 -298 69 -285 72 -289 l 72 -477 b 95 -500 72 -495 76 -500 b 118 -477 114 -500 118 -495 l 118 -278 b 127 -259 118 -269 121 -261 l 196 -232 b 207 -243 204 -232 207 -235 l 207 -432 b 230 -455 207 -452 212 -455 b 253 -432 249 -455 253 -451 l 253 -228 b 268 -204 253 -216 259 -207 l 320 -186 b 328 -183 323 -184 325 -183 b 337 -194 334 -183 337 -187 l 337 -387 b 360 -410 337 -408 341 -410 b 383 -387 379 -410 383 -406 l 383 -174 b 395 -157 383 -166 390 -158 l 445 -138 b 456 -127 452 -135 456 -132 l 456 -14 b 448 -3 456 -10 454 -3 b 397 -22 445 -3 408 -17 l 396 -23 b 383 -6 387 -23 383 -16 l 383 163 b 392 181 383 173 384 179 b 445 202 397 183 445 202 b 456 213 452 203 456 207 z m 337 -45 b 266 -78 333 -56 287 -78 b 258 -75 262 -78 259 -76 b 253 19 255 -71 253 -27 b 258 130 253 69 255 122 b 333 163 264 141 315 163 b 337 161 334 163 337 161 b 341 78 340 157 341 120 b 337 -45 341 24 340 -37 z m 118 -127 b 114 -48 114 -121 114 -86 b 118 78 114 6 115 68 b 200 114 122 91 180 114 b 207 111 204 114 206 112 b 212 22 210 107 212 66 b 207 -94 212 -29 210 -85 b 127 -130 203 -108 148 -130 b 118 -127 122 -130 120 -128 z', + }, + accidentalBuyukMucennebFlat: { + x_min: 1, + x_max: 287, + y_min: -174, + y_max: 438, + ha: 612, + o: 'm 379 452 b 370 464 379 458 377 464 b 164 389 366 464 170 392 b 156 396 163 389 156 393 b 157 436 157 409 157 428 b 167 452 157 445 161 449 b 366 526 173 455 366 526 b 379 540 374 528 379 534 l 379 611 b 370 622 379 616 377 622 b 170 550 366 622 174 552 b 160 557 163 550 160 554 b 161 608 160 585 161 602 b 134 631 161 624 148 631 b 89 590 114 631 91 616 l 89 528 b 81 517 89 526 88 518 b 16 491 76 514 16 491 b 1 480 6 490 1 485 l 1 406 b 13 395 1 400 4 395 l 14 396 b 79 419 16 396 72 415 b 89 412 86 419 89 415 b 91 376 89 399 89 386 b 82 359 91 364 89 361 b 16 331 76 356 16 331 b 1 321 6 331 1 328 l 1 248 b 13 236 1 242 4 236 b 79 262 16 236 71 258 b 92 251 89 262 92 256 b 107 -242 95 23 101 -236 b 120 -251 111 -249 115 -251 b 128 -248 124 -251 128 -248 b 240 -160 171 -225 207 -184 b 413 84 367 -71 413 16 b 284 220 413 166 350 216 b 207 196 259 220 229 209 b 170 176 196 190 184 176 l 168 177 b 151 203 157 181 151 192 b 153 269 151 210 151 236 b 163 292 153 275 153 289 b 366 367 173 297 366 367 b 379 383 374 370 379 376 z m 186 -132 b 173 -137 180 -135 176 -137 b 157 -114 161 -137 157 -122 b 153 35 157 -114 153 -22 b 154 73 153 53 153 68 b 219 135 160 92 197 124 b 255 144 232 141 243 144 b 292 130 269 144 282 140 b 314 62 305 114 314 91 b 186 -132 314 -17 251 -94 z', + }, + accidentalBakiyeFlat: { + x_min: -1, + x_max: 286, + y_min: -175, + y_max: 439, + ha: 614, + o: 'm 377 454 b 369 467 377 458 376 467 b 363 465 367 467 364 467 b 161 390 363 465 167 393 b 153 399 154 390 153 395 b 157 608 154 494 157 593 b 130 632 157 624 144 632 b 86 592 111 632 88 618 b 88 377 86 592 86 501 b 76 356 88 373 88 360 l 12 331 b -1 320 3 330 -1 327 l -1 248 b 9 236 -1 242 1 236 b 81 264 12 236 78 261 b 89 258 86 264 89 261 b 104 -245 92 30 96 -236 b 115 -252 108 -251 112 -252 b 124 -249 120 -252 124 -249 b 239 -161 167 -226 203 -186 b 412 84 367 -72 412 17 b 282 220 412 166 348 216 b 255 216 274 220 264 219 b 203 196 238 212 222 206 b 171 177 193 189 177 177 b 163 179 168 177 166 177 b 147 202 153 181 147 192 b 147 216 147 204 147 209 l 150 262 b 150 276 150 269 150 275 b 158 291 150 287 154 289 b 363 370 163 292 363 370 b 377 384 373 373 377 379 z m 181 -134 b 167 -138 176 -137 171 -138 b 153 -117 156 -138 153 -125 b 148 27 153 -117 148 -30 b 151 73 148 50 150 68 b 255 144 161 105 219 144 b 312 62 298 144 312 99 b 181 -134 312 -19 249 -96 z', + }, + accidentalKomaSharp: { + x_min: 0, + x_max: 229, + y_min: -337, + y_max: 322, + ha: 659, + o: 'm 312 151 b 330 176 323 156 330 166 l 330 278 b 320 289 330 285 327 289 b 312 288 318 289 315 289 b 200 246 312 288 203 248 b 181 275 187 246 181 264 l 181 448 b 163 464 181 456 173 464 b 138 441 140 464 138 452 l 138 253 b 122 215 137 240 132 225 b 17 177 92 203 45 177 b 0 153 7 173 0 163 l 0 50 b 10 39 0 43 4 39 b 17 40 13 39 14 39 l 128 81 b 138 52 138 81 138 63 l 138 -91 b 124 -124 138 -107 132 -120 b 17 -167 115 -127 17 -167 b 0 -192 7 -171 0 -181 l 0 -294 b 10 -305 0 -301 4 -305 b 17 -304 13 -305 14 -305 b 128 -261 17 -304 117 -264 l 130 -259 b 138 -276 137 -259 138 -268 l 138 -469 b 157 -485 138 -478 147 -485 b 181 -462 179 -485 181 -475 l 181 -262 b 183 -252 181 -258 181 -255 b 197 -232 186 -243 190 -235 b 312 -187 207 -228 312 -187 b 330 -163 323 -183 330 -173 l 330 -60 b 320 -49 330 -53 327 -49 b 312 -50 318 -49 315 -49 l 200 -94 b 193 -95 197 -95 194 -95 b 181 -68 183 -95 181 -85 l 181 66 b 200 108 181 92 189 104 z', + }, + accidentalKucukMucennebSharp: { + x_min: -1, + x_max: 339, + y_min: -338, + y_max: 321, + ha: 659, + o: 'm 264 92 b 271 102 264 98 265 99 l 395 150 b 412 174 405 154 412 164 l 412 276 b 402 288 412 284 409 288 b 395 287 400 288 397 288 b 282 245 395 287 285 246 b 264 274 269 245 264 262 l 264 446 b 245 462 264 455 255 462 b 220 439 222 462 220 451 l 220 252 b 204 213 219 239 215 223 b 99 176 174 202 127 176 b 82 151 89 171 82 161 l 82 49 b 92 37 82 42 86 37 b 99 39 95 37 96 37 l 210 79 b 216 81 212 81 215 81 b 220 78 219 81 220 79 l 220 56 b 216 46 220 52 220 48 b 16 -29 210 45 16 -29 b -1 -45 4 -32 -1 -36 l -1 -138 b 12 -154 -1 -145 3 -154 l 215 -79 b 220 -84 219 -79 220 -81 l 220 -105 b 210 -122 220 -115 219 -120 b 99 -168 202 -127 99 -168 b 82 -193 89 -173 82 -183 l 82 -295 b 92 -307 82 -302 86 -307 b 99 -305 95 -307 96 -307 b 210 -262 99 -305 199 -265 l 212 -261 b 220 -278 219 -261 220 -269 l 220 -471 b 239 -487 220 -480 229 -487 b 264 -464 261 -487 264 -477 l 264 -264 b 265 -253 264 -259 264 -256 b 279 -233 268 -245 272 -236 b 395 -189 289 -229 395 -189 b 412 -164 405 -184 412 -174 l 412 -62 b 402 -50 412 -55 409 -50 b 395 -52 400 -50 397 -50 l 278 -96 b 264 -86 268 -96 264 -94 l 264 -68 b 269 -59 264 -62 265 -60 b 471 17 274 -58 471 17 b 488 36 484 22 488 27 l 488 127 b 475 144 488 134 487 144 l 472 141 b 471 141 472 141 471 141 l 471 143 b 272 68 471 143 282 71 l 269 66 b 264 71 264 66 264 69 z', + }, + accidentalKoron: { + x_min: 0, + x_max: 300, + y_min: -472, + y_max: 157, + ha: 629, + o: 'm 432 -4 b 415 10 432 1 418 9 l 4 226 b 0 223 1 226 0 225 l 0 -672 b 7 -680 0 -677 3 -680 l 45 -680 b 52 -672 49 -680 52 -677 l 52 -193 l 415 -22 b 432 -4 418 -20 432 -13 z m 52 -137 l 52 144 l 327 -7 z', + }, + accidentalSori: { + x_min: 0, + x_max: 421, + y_min: -318, + y_max: 328, + ha: 646, + o: 'm 606 10 b 589 23 606 16 592 22 l 382 109 l 382 465 b 374 472 382 469 379 472 l 337 472 b 330 465 333 472 330 469 l 330 132 l 183 194 l 183 425 b 176 432 183 429 180 432 l 138 432 b 131 425 134 432 131 429 l 131 216 l 3 269 b 0 265 0 269 0 266 l 0 223 b 3 213 0 216 0 215 l 131 160 l 131 -150 l 3 -203 b 0 -212 0 -204 0 -206 l 0 -255 b 3 -259 0 -258 1 -259 l 131 -204 l 131 -451 b 138 -458 131 -455 134 -458 l 176 -458 b 183 -451 180 -458 183 -455 l 183 -183 l 330 -120 l 330 -410 b 337 -418 330 -415 333 -418 l 374 -418 b 382 -410 379 -418 382 -415 l 382 -98 l 589 -9 b 606 10 592 -9 606 0 z m 183 -128 l 183 138 l 330 76 l 330 -66 z m 382 -45 l 382 55 l 501 6 z', + }, + articAccentAbove: { + x_min: 0, + x_max: 339, + y_min: 1, + y_max: 245, + ha: 244, + o: 'm 469 151 b 488 177 488 156 488 166 b 469 203 488 189 488 197 l 37 350 b 24 353 32 351 26 353 b 3 333 12 353 7 344 b 0 318 1 327 0 323 b 20 298 0 311 4 304 b 346 187 20 298 331 193 b 356 177 353 186 356 181 b 344 167 356 173 353 170 b 20 58 328 163 20 58 b 0 36 4 50 0 43 b 3 23 0 32 1 27 b 23 1 7 13 13 1 b 29 3 24 1 27 1 z', + }, + articAccentBelow: { + x_min: 0, + x_max: 339, + y_min: -244, + y_max: 0, + ha: 244, + o: 'm 469 -202 b 488 -176 488 -197 488 -187 b 469 -150 488 -164 488 -156 l 37 -3 b 24 0 32 -1 26 0 b 3 -20 12 0 7 -9 b 0 -35 1 -26 0 -30 b 20 -55 0 -42 4 -49 b 346 -166 20 -55 331 -160 b 356 -176 353 -167 356 -171 b 344 -186 356 -180 353 -183 b 20 -295 328 -190 20 -295 b 0 -317 4 -302 0 -310 b 3 -330 0 -321 1 -325 b 23 -351 7 -340 13 -351 b 29 -350 24 -351 27 -351 z', + }, + articTenutoAbove: { + x_min: -1, + x_max: 338, + y_min: 0, + y_max: 48, + ha: 48, + o: 'm 452 0 b 487 35 485 0 487 16 b 452 69 487 53 487 69 l 33 69 b -1 35 -1 69 -1 53 b 33 0 -1 16 -1 0 z', + }, + articTenutoBelow: { + x_min: -1, + x_max: 338, + y_min: -48, + y_max: 0, + ha: 48, + o: 'm 452 -69 b 487 -35 485 -69 487 -53 b 452 0 487 -16 487 0 l 33 0 b -1 -35 -1 0 -1 -16 b 33 -69 -1 -53 -1 -69 z', + }, + articStaccatoAbove: { + x_min: 0, + x_max: 84, + y_min: 0, + y_max: 84, + ha: 84, + o: 'm 121 60 b 60 121 121 94 94 121 b 0 60 27 121 0 94 b 60 0 0 27 27 0 b 121 60 94 0 121 27 z', + }, + articStaccatoBelow: { + x_min: 0, + x_max: 84, + y_min: -84, + y_max: 0, + ha: 84, + o: 'm 121 -60 b 60 0 121 -27 94 0 b 0 -60 27 0 0 -27 b 60 -121 0 -94 27 -121 b 121 -60 94 -121 121 -94 z', + }, + articStaccatissimoAbove: { + x_min: 1, + x_max: 100, + y_min: -2, + y_max: 293, + ha: 295, + o: 'm 72 422 b 1 390 35 422 3 409 b 72 -3 1 369 39 -3 b 144 389 108 -3 144 356 b 72 422 144 410 111 422 z', + }, + articStaccatissimoBelow: { + x_min: 1, + x_max: 100, + y_min: -295, + y_max: 0, + ha: 295, + o: 'm 72 -425 b 144 -392 111 -425 144 -413 b 72 0 144 -359 108 0 b 1 -393 39 0 1 -372 b 72 -425 3 -412 35 -425 z', + }, + articMarcatoAbove: { + x_min: -1, + x_max: 235, + y_min: -1, + y_max: 253, + ha: 254, + o: 'm 181 356 b 167 364 177 361 173 364 b 153 356 157 364 153 356 l 0 23 b -1 16 -1 20 -1 19 b 9 0 -1 9 1 1 b 16 -1 10 -1 14 -1 b 32 9 22 -1 29 1 b 112 186 32 9 109 180 b 118 190 114 189 115 190 b 127 186 121 190 124 189 b 209 9 128 180 209 9 b 225 0 213 3 219 0 l 323 0 b 338 16 333 1 338 7 b 337 23 338 19 338 22 z', + }, + articMarcatoBelow: { + x_min: -1, + x_max: 235, + y_min: -254, + y_max: 0, + ha: 254, + o: 'm 156 -357 b 170 -366 160 -363 164 -366 b 184 -357 180 -366 184 -357 l 337 -24 b 338 -17 338 -22 338 -20 b 328 -1 338 -10 336 -3 b 321 0 327 0 323 0 b 305 -10 315 0 308 -3 b 225 -187 305 -10 228 -181 b 219 -192 223 -190 222 -192 b 210 -187 216 -192 213 -190 b 128 -10 209 -181 128 -10 b 112 -1 124 -4 118 -1 l 14 -1 b -1 -17 4 -3 -1 -9 b 0 -24 -1 -20 -1 -23 z', + }, + fermataAbove: { + x_min: 3, + x_max: 605, + y_min: -3, + y_max: 329, + ha: 332, + o: 'm 435 318 b 818 36 742 318 804 91 b 821 26 819 32 819 27 b 851 -4 831 6 837 -4 b 871 16 864 -4 871 1 b 870 30 871 20 871 24 b 438 474 780 471 480 474 b 6 30 392 474 94 471 b 4 14 4 24 4 19 b 23 -4 4 0 12 -4 b 52 26 36 -4 43 6 b 56 39 53 27 55 33 b 435 318 73 98 138 318 z m 516 75 b 436 153 516 117 480 153 b 359 75 395 153 359 117 b 436 -4 359 32 395 -4 b 516 75 480 -4 516 32 z', + }, + fermataBelow: { + x_min: 3, + x_max: 605, + y_min: -332, + y_max: 0, + ha: 332, + o: 'm 435 -323 b 56 -43 138 -323 73 -102 b 52 -30 55 -37 53 -32 b 23 0 43 -10 36 0 b 4 -19 12 0 4 -4 b 6 -35 4 -23 4 -29 b 438 -478 94 -475 392 -478 b 870 -35 480 -478 780 -475 b 871 -20 871 -29 871 -24 b 851 0 871 -6 864 0 b 821 -30 837 0 831 -10 b 818 -40 819 -32 819 -36 b 435 -323 804 -95 742 -323 z m 516 -79 b 436 0 516 -36 480 0 b 359 -79 395 0 359 -36 b 436 -157 359 -121 395 -157 b 516 -79 480 -157 516 -121 z', + }, + fermataLongAbove: { + x_min: 0, + x_max: 603, + y_min: -1, + y_max: 333, + ha: 334, + o: 'm 72 480 b 0 441 32 480 0 462 l 0 19 b 35 0 0 9 16 0 b 71 19 55 0 71 9 l 71 289 b 433 315 71 307 252 315 b 798 289 615 315 798 307 l 798 19 b 832 0 798 9 814 0 b 868 19 852 0 868 9 l 868 441 b 796 480 868 462 837 480 z m 513 78 b 433 156 513 121 478 156 b 356 78 390 156 356 121 b 433 -1 356 35 390 -1 b 513 78 478 -1 513 35 z', + }, + fermataLongBelow: { + x_min: 0, + x_max: 603, + y_min: -333, + y_max: 1, + ha: 334, + o: 'm 513 -78 b 433 1 513 -35 478 1 b 356 -78 390 1 356 -35 b 433 -156 356 -121 390 -156 b 513 -78 478 -156 513 -121 z m 796 -480 b 868 -441 837 -480 868 -462 l 868 -19 b 832 0 868 -9 852 0 b 798 -19 814 0 798 -9 l 798 -289 b 433 -315 798 -307 615 -315 b 71 -289 252 -315 71 -307 l 71 -19 b 35 0 71 -9 55 0 b 0 -19 16 0 0 -9 l 0 -441 b 72 -480 0 -462 32 -480 z', + }, + fermataVeryLongAbove: { + x_min: 0, + x_max: 715, + y_min: 0, + y_max: 408, + ha: 408, + o: 'm 76 588 b 0 546 35 588 0 569 l 0 22 b 37 1 0 10 17 1 b 75 22 59 1 75 10 l 75 431 b 514 458 75 449 294 458 b 955 431 734 458 955 449 l 955 22 b 991 1 955 10 971 1 b 1030 22 1012 1 1030 10 l 1030 546 b 953 588 1030 569 995 588 z m 215 389 b 138 347 171 389 138 370 l 138 22 b 174 1 138 10 154 1 b 213 22 196 1 213 10 l 213 217 b 514 245 213 235 363 245 b 816 217 665 245 816 235 l 816 22 b 854 1 816 10 834 1 b 891 22 876 1 891 10 l 891 347 b 815 389 891 370 858 389 z m 606 84 b 521 167 606 130 569 167 b 439 84 475 167 439 130 b 521 0 439 39 475 0 b 606 84 569 0 606 39 z', + }, + fermataVeryLongBelow: { + x_min: 0, + x_max: 715, + y_min: -408, + y_max: 0, + ha: 408, + o: 'm 606 -84 b 521 0 606 -39 569 0 b 439 -84 475 0 439 -39 b 521 -167 439 -130 475 -167 b 606 -84 569 -167 606 -130 z m 815 -389 b 891 -347 858 -389 891 -370 l 891 -22 b 854 -1 891 -10 876 -1 b 816 -22 834 -1 816 -10 l 816 -217 b 514 -245 816 -235 665 -245 b 213 -217 363 -245 213 -235 l 213 -22 b 174 -1 213 -10 196 -1 b 138 -22 154 -1 138 -10 l 138 -347 b 215 -389 138 -370 171 -389 z m 953 -588 b 1030 -546 995 -588 1030 -569 l 1030 -22 b 991 -1 1030 -10 1012 -1 b 955 -22 971 -1 955 -10 l 955 -431 b 514 -458 955 -449 734 -458 b 75 -431 294 -458 75 -449 l 75 -22 b 37 -1 75 -10 59 -1 b 0 -22 17 -1 0 -10 l 0 -546 b 76 -588 0 -569 35 -588 z', + }, + fermataShortAbove: { + x_min: 0, + x_max: 604, + y_min: 0, + y_max: 341, + ha: 341, + o: 'm 78 0 b 88 6 81 0 82 3 b 435 328 134 45 412 328 b 783 3 458 328 742 39 b 793 0 786 1 793 0 l 865 0 b 870 4 865 0 870 1 b 867 10 870 6 868 9 b 435 491 805 69 474 491 b 3 10 397 491 69 75 b 0 4 1 9 0 6 b 4 0 0 1 4 0 z m 513 94 b 433 171 513 135 477 171 b 354 94 390 171 354 135 b 433 13 354 49 390 13 b 513 94 477 13 513 49 z', + }, + fermataShortBelow: { + x_min: 0, + x_max: 604, + y_min: -341, + y_max: 0, + ha: 341, + o: 'm 4 0 b 0 -4 4 0 0 -1 b 3 -10 0 -6 1 -9 b 435 -491 69 -75 397 -491 b 867 -10 474 -491 805 -69 b 870 -4 868 -9 870 -6 b 865 0 870 -1 865 0 l 793 0 b 783 -3 793 0 786 -1 b 435 -328 742 -39 458 -328 b 88 -6 412 -328 134 -45 b 78 0 82 -3 81 0 z m 513 -94 b 433 -13 513 -49 477 -13 b 354 -94 390 -13 354 -49 b 433 -171 354 -135 390 -171 b 513 -94 477 -171 513 -135 z', + }, + breathMarkComma: { + x_min: 1, + x_max: 152, + y_min: 2, + y_max: 251, + ha: 249, + o: 'm 104 361 b 1 271 42 361 1 321 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 17 32 29 26 26 l 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 z', + }, + breathMarkUpbow: { + x_min: 1, + x_max: 249, + y_min: 1, + y_max: 495, + ha: 494, + o: 'm 181 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 z', + }, + caesura: { + x_min: 0, + x_max: 384, + y_min: -1, + y_max: 532, + ha: 533, + o: 'm 40 -1 b 78 26 58 -1 72 9 l 321 713 b 323 726 323 717 323 721 b 282 766 323 747 304 766 b 245 739 265 766 251 756 l 3 52 b 0 37 1 48 0 42 b 27 1 0 22 10 7 b 40 -1 32 -1 36 -1 z m 308 26 l 552 713 b 553 726 553 717 553 721 b 513 766 553 747 534 766 b 475 739 495 766 481 756 l 232 52 b 230 39 230 48 230 43 b 258 1 230 23 240 7 b 271 -1 262 -1 266 -1 b 308 26 287 -1 302 9 z', + }, + caesuraCurved: { + x_min: 0, + x_max: 373, + y_min: 0, + y_max: 530, + ha: 530, + o: 'm 491 763 b 445 719 468 763 446 744 b 252 98 432 507 340 295 l 226 39 b 223 27 225 35 223 32 b 252 0 223 13 233 0 b 276 16 262 0 272 6 b 537 716 386 230 537 478 b 491 763 537 742 518 763 z m 29 0 b 53 16 39 0 48 6 l 82 69 b 314 716 187 264 314 498 b 268 763 314 742 295 763 b 222 719 245 763 223 744 b 29 98 209 507 117 295 l 3 39 b 0 29 1 36 0 33 b 29 0 0 14 12 0 z', + }, + restMaxima: { + x_min: 0, + x_max: 381, + y_min: -249, + y_max: 250, + ha: 499, + o: 'm 180 -330 l 180 331 b 156 360 180 356 170 360 l 23 360 b 0 331 10 360 0 356 l 0 -330 b 23 -359 0 -354 10 -359 l 156 -359 b 180 -330 170 -359 180 -354 z m 549 -330 l 549 331 b 524 360 549 356 539 360 l 392 360 b 369 331 379 360 369 356 l 369 -330 b 392 -359 369 -354 379 -359 l 524 -359 b 549 -330 539 -359 549 -354 z', + }, + restDoubleWhole: { + x_min: 0, + x_max: 125, + y_min: 0, + y_max: 250, + ha: 250, + o: 'm 180 22 l 180 338 b 156 360 180 350 170 360 l 23 360 b 0 338 10 360 0 350 l 0 22 b 23 0 0 10 10 0 l 156 0 b 180 22 170 0 180 10 z', + }, + restWhole: { + x_min: 0, + x_max: 282, + y_min: -135, + y_max: 9, + ha: 144, + o: 'm 406 -157 l 406 -24 b 369 13 406 -3 389 13 l 37 13 b 0 -24 16 13 0 -3 l 0 -157 b 37 -194 0 -177 16 -194 l 369 -194 b 406 -157 389 -194 406 -177 z', + }, + restWholeLegerLine: { + x_min: -117, + x_max: 399, + y_min: -135, + y_max: 20, + ha: 155, + o: 'm -143 29 b -168 3 -157 29 -168 17 b -143 -23 -168 -12 -157 -23 l 0 -23 l 0 -157 b 37 -194 0 -177 16 -194 l 369 -194 b 406 -157 389 -194 406 -177 l 406 -24 b 549 -23 406 -23 406 -23 b 575 3 563 -23 575 -12 b 549 29 575 17 563 29 z', + }, + restHalf: { + x_min: 0, + x_max: 282, + y_min: -2, + y_max: 142, + ha: 144, + o: 'm 406 35 l 406 167 b 369 204 406 189 389 204 l 37 204 b 0 167 16 204 0 189 l 0 35 b 37 -3 0 14 16 -3 l 369 -3 b 406 35 389 -3 406 14 z', + }, + restHalfLegerLine: { + x_min: -117, + x_max: 399, + y_min: -13, + y_max: 142, + ha: 155, + o: 'm 549 -19 b 575 7 563 -19 575 -7 b 549 33 575 22 563 33 b 406 35 406 33 406 33 l 406 167 b 369 204 406 187 389 204 l 37 204 b 0 167 16 204 0 187 l 0 33 l -143 33 b -168 7 -157 33 -168 22 b -143 -19 -168 -7 -157 -19 z', + }, + restQuarter: { + x_min: 1, + x_max: 270, + y_min: -375, + y_max: 373, + ha: 748, + o: 'm 112 -55 b 174 -141 135 -84 156 -111 b 183 -161 177 -147 183 -158 b 181 -167 183 -163 183 -166 b 166 -174 179 -173 173 -174 b 143 -170 160 -174 148 -171 b 137 -170 141 -170 138 -170 l 125 -166 b 1 -304 50 -166 1 -233 b 168 -527 1 -376 63 -446 b 206 -540 180 -536 194 -540 b 228 -531 216 -540 226 -537 b 230 -521 229 -527 230 -524 b 207 -487 230 -508 219 -497 b 170 -435 189 -487 173 -448 b 164 -397 166 -423 164 -410 b 255 -292 164 -338 194 -292 b 369 -317 297 -292 344 -308 l 370 -318 b 382 -320 376 -320 379 -320 b 389 -314 386 -320 389 -318 b 336 -232 389 -297 351 -249 b 236 -32 281 -166 236 -112 b 236 -27 236 -30 236 -29 l 238 -17 b 238 -13 238 -16 238 -14 b 333 199 243 71 295 140 b 338 220 337 206 338 213 b 333 248 338 235 333 248 b 95 526 333 248 120 501 b 69 537 88 533 78 537 b 40 507 55 537 40 527 b 46 484 40 500 42 492 b 134 291 52 468 134 395 b 48 108 134 238 112 176 b 27 66 33 94 27 78 b 42 32 27 46 42 32 z', + }, + rest8th: { + x_min: 0, + x_max: 247, + y_min: -251, + y_max: 174, + ha: 425, + o: 'm 193 154 b 96 251 193 207 150 251 b 0 154 43 251 0 207 b 39 81 0 124 17 98 b 117 56 62 65 89 56 b 173 66 137 56 157 60 b 225 88 193 72 206 78 b 232 89 228 89 230 89 b 239 76 238 89 239 84 b 238 60 239 72 239 66 b 104 -343 233 39 130 -248 b 145 -361 104 -360 137 -361 b 196 -347 161 -361 181 -359 b 341 161 200 -344 341 161 b 356 217 347 187 354 210 b 338 240 356 232 341 239 b 323 235 336 240 331 240 b 193 140 312 226 240 140 z', + }, + rest16th: { + x_min: 0, + x_max: 320, + y_min: -500, + y_max: 179, + ha: 679, + o: 'm 300 160 b 202 258 300 215 256 258 b 104 160 148 258 104 215 b 219 62 104 101 164 62 b 331 94 258 62 298 75 b 341 96 336 95 338 96 b 348 86 346 96 348 94 b 265 -173 348 63 275 -151 b 194 -217 253 -200 215 -217 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 151 -105 b 0 -203 43 -105 0 -148 b 115 -301 0 -262 60 -301 b 223 -271 153 -301 190 -288 b 229 -279 226 -271 229 -274 l 228 -281 b 228 -282 228 -282 228 -282 l 91 -690 b 91 -691 91 -690 91 -691 l 89 -693 b 134 -720 89 -706 102 -720 b 189 -687 176 -720 183 -703 l 356 -138 b 420 81 393 -16 420 81 b 459 226 420 81 456 207 b 461 232 459 229 461 230 b 446 248 461 240 449 246 b 431 242 439 248 435 245 b 300 145 420 233 348 147 z', + }, + rest32nd: { + x_min: 0, + x_max: 363, + y_min: -500, + y_max: 426, + ha: 926, + o: 'm 508 603 b 492 598 501 603 497 600 b 361 503 482 590 410 503 l 361 516 b 264 613 361 570 318 613 b 166 516 210 613 166 570 b 206 444 166 487 183 461 b 246 423 217 433 232 428 b 284 418 258 420 269 418 b 393 449 321 418 360 432 b 399 451 395 451 397 451 b 415 426 409 451 415 436 l 413 423 b 413 422 413 423 413 422 l 357 192 b 279 140 350 168 302 140 b 281 153 281 144 281 148 b 183 251 281 207 236 251 b 85 153 128 251 85 207 b 125 81 85 124 102 98 b 164 60 137 71 150 65 b 203 55 176 58 189 55 b 311 86 240 55 278 69 b 315 88 312 88 314 88 b 325 69 323 88 325 76 l 268 -167 b 194 -217 261 -197 216 -216 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 153 -105 b 0 -203 45 -105 0 -148 b 115 -301 0 -262 60 -301 b 228 -269 154 -301 194 -288 b 232 -268 229 -268 230 -268 b 240 -276 236 -268 240 -272 b 138 -688 240 -282 141 -678 b 137 -697 137 -691 137 -694 b 176 -720 137 -708 145 -720 b 232 -690 222 -720 226 -706 b 484 436 236 -672 484 436 b 521 582 484 436 518 564 b 523 588 521 585 523 586 b 508 603 523 600 511 603 z', + }, + rest64th: { + x_min: 0, + x_max: 423, + y_min: -753, + y_max: 430, + ha: 1183, + o: 'm 596 609 b 580 603 589 609 585 606 b 448 507 569 595 497 507 b 449 521 449 511 449 516 b 351 619 449 575 405 619 b 253 521 297 619 253 575 b 372 422 253 461 317 422 b 481 454 410 422 446 438 b 491 456 484 455 488 456 b 504 441 498 456 504 451 b 501 426 504 436 503 432 b 445 202 500 422 451 217 b 359 144 435 174 383 144 l 359 158 b 261 256 359 212 315 256 b 163 158 207 256 163 212 b 243 65 163 112 202 78 b 279 60 255 62 266 60 b 397 91 320 60 360 73 b 403 92 400 92 402 92 b 412 79 409 92 412 86 b 410 72 412 76 412 75 b 351 -161 408 59 356 -150 b 281 -212 340 -199 301 -212 l 281 -197 b 183 -99 281 -144 238 -99 b 85 -197 130 -99 85 -144 b 125 -271 85 -228 102 -253 b 166 -291 138 -279 151 -287 b 204 -297 177 -294 192 -297 b 262 -287 225 -297 245 -292 b 305 -265 282 -279 287 -274 b 310 -264 307 -264 308 -264 b 318 -284 317 -264 318 -275 b 317 -295 318 -288 317 -294 b 259 -524 315 -302 265 -508 b 194 -567 251 -554 213 -567 b 196 -554 196 -563 196 -559 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 b 40 -626 0 -583 17 -609 b 118 -652 60 -644 92 -652 b 210 -629 145 -652 186 -642 b 216 -628 213 -628 215 -628 b 228 -647 226 -628 228 -639 l 226 -651 b 226 -652 226 -651 226 -652 l 122 -1054 b 121 -1064 121 -1058 121 -1061 b 167 -1084 121 -1077 134 -1084 b 215 -1060 202 -1084 209 -1076 b 402 -278 217 -1047 229 -1021 b 436 -135 403 -278 431 -161 l 570 441 b 609 588 570 441 605 569 b 596 609 609 603 602 608 z', + }, + rest128th: { + x_min: 0, + x_max: 485, + y_min: -750, + y_max: 689, + ha: 1439, + o: 'm 537 894 b 439 992 537 949 494 992 b 341 894 386 992 341 949 b 382 822 341 865 359 840 b 459 796 402 805 433 796 b 518 806 480 796 501 801 l 520 808 b 569 828 539 814 552 819 b 580 831 572 829 577 831 b 598 812 589 831 598 825 b 596 801 598 809 598 805 b 540 575 590 773 546 595 b 448 510 534 553 475 510 l 448 524 b 350 622 448 577 405 622 b 252 524 297 622 252 577 b 292 451 252 494 269 468 b 369 426 318 433 337 426 b 429 435 389 426 412 429 b 494 464 449 442 475 455 b 498 465 495 465 497 465 b 505 446 504 465 505 456 b 503 426 505 439 504 432 l 446 202 b 366 144 439 173 389 144 l 366 158 b 268 256 366 212 323 256 b 170 158 215 256 170 212 b 289 59 170 98 235 59 b 347 69 310 59 330 63 b 397 91 367 76 379 82 b 406 94 400 92 403 94 b 415 79 412 94 415 88 b 412 63 415 75 413 69 b 357 -157 408 42 364 -134 b 281 -212 346 -196 302 -212 b 282 -197 281 -207 282 -203 b 184 -99 282 -144 238 -99 b 86 -197 130 -99 86 -144 b 204 -297 86 -258 150 -297 b 262 -287 225 -297 245 -292 b 312 -265 282 -279 294 -274 b 318 -264 314 -264 317 -264 b 327 -275 324 -264 327 -269 b 266 -517 324 -287 278 -490 b 200 -569 248 -566 220 -567 l 196 -554 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 b 118 -652 0 -615 63 -652 b 177 -642 138 -652 160 -648 l 179 -641 b 229 -621 197 -635 210 -629 l 230 -619 b 239 -626 236 -619 239 -622 b 238 -632 239 -628 239 -631 b 131 -1057 235 -642 134 -1050 b 173 -1080 131 -1071 140 -1080 b 230 -1057 219 -1080 225 -1074 l 658 815 b 697 960 658 815 694 942 b 698 966 697 963 698 965 b 684 982 698 975 687 981 b 668 976 677 982 672 979 b 537 880 658 969 586 881 z', + }, + dynamicPiano: { + x_min: -89, + x_max: 366, + y_min: -142, + y_max: 274, + ha: 416, + o: 'm 395 395 b 292 357 350 395 318 380 b 262 328 272 340 268 328 b 246 363 255 328 259 338 b 177 393 236 380 215 393 b 1 251 92 393 46 333 b -9 223 -6 238 -9 230 b 7 207 -9 213 -1 207 b 30 229 17 207 23 216 b 127 338 72 301 101 338 b 143 321 138 338 143 331 b 134 285 143 310 138 295 l -43 -154 b -65 -168 -48 -166 -50 -168 l -109 -168 b -128 -187 -122 -168 -128 -174 b -111 -204 -128 -199 -122 -204 l 167 -204 b 186 -186 180 -204 186 -199 b 168 -168 186 -174 180 -168 l 111 -168 b 98 -164 102 -168 98 -168 b 101 -154 98 -163 99 -158 l 166 7 b 179 24 168 14 171 24 b 213 -1 186 24 190 10 b 276 -14 233 -12 252 -14 b 527 266 415 -14 527 130 b 395 395 527 350 475 395 z m 356 341 b 389 288 380 341 389 320 b 243 35 389 217 312 35 b 207 81 219 35 207 50 b 235 180 207 111 219 140 l 264 251 b 356 341 284 300 321 341 z', + }, + dynamicMezzo: { + x_min: -20, + x_max: 446, + y_min: -10, + y_max: 274, + ha: 284, + o: 'm 528 395 b 431 350 487 395 454 374 b 409 330 416 336 415 330 b 397 360 402 330 406 341 b 334 395 389 379 370 395 b 236 350 292 395 259 374 b 215 330 222 336 220 330 b 203 360 207 330 212 340 b 147 393 194 379 174 393 b -19 251 71 393 26 331 b -29 223 -26 238 -29 230 b -13 207 -29 213 -22 207 b 9 226 -3 207 1 215 b 107 338 52 300 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 287 323 225 292 255 323 b 308 302 304 323 308 314 b 294 249 308 285 302 269 b 203 24 294 248 292 248 b 199 9 200 17 199 13 b 215 0 199 3 203 0 l 285 0 b 308 17 298 0 302 3 l 402 251 b 481 323 419 292 449 323 b 503 302 498 323 503 314 b 413 43 503 252 413 104 b 478 -14 413 6 436 -14 b 629 102 533 -14 583 26 b 642 132 638 117 642 125 b 629 145 642 141 636 145 b 608 127 619 145 615 138 b 534 49 580 84 553 49 b 523 62 526 49 523 53 b 606 317 523 112 606 238 b 528 395 606 353 588 395 z', + }, + dynamicForte: { + x_min: -141, + x_max: 364, + y_min: -152, + y_max: 444, + ha: 596, + o: 'm 23 380 b 0 357 7 380 0 373 b 22 336 0 343 7 336 l 105 336 b 117 330 114 336 117 336 b 114 315 117 327 115 323 l 23 0 b -101 -187 -17 -141 -43 -187 b -127 -174 -120 -187 -127 -181 b -92 -156 -127 -163 -114 -170 b -63 -102 -75 -144 -63 -125 b -128 -43 -63 -65 -89 -43 b -203 -122 -171 -43 -203 -78 b -95 -219 -203 -186 -156 -219 b 161 17 14 -219 82 -145 b 269 317 203 105 235 194 l 271 318 b 289 336 271 323 282 336 l 383 336 b 406 359 399 336 406 343 b 384 380 406 373 399 380 l 298 380 b 284 387 288 380 284 380 b 287 405 284 392 285 396 b 419 606 315 530 347 606 b 442 595 431 606 442 603 b 419 580 442 586 435 588 b 389 526 400 572 389 552 b 454 465 389 485 418 465 b 524 543 491 465 524 490 b 400 639 524 596 491 639 b 135 402 261 639 183 540 b 107 380 128 380 127 380 z', + }, + dynamicRinforzando: { + x_min: -20, + x_max: 277, + y_min: 0, + y_max: 274, + ha: 274, + o: 'm 324 395 b 235 350 287 395 256 374 b 215 330 222 336 220 330 b 203 360 207 330 213 337 b 145 393 194 379 174 393 b -19 251 75 393 27 337 b -29 223 -26 238 -29 230 b -13 207 -29 213 -22 207 b 9 226 -3 207 3 215 b 107 338 52 301 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 304 351 226 298 272 351 b 318 343 312 351 318 348 b 287 285 318 330 287 325 b 338 239 287 256 308 239 b 399 318 373 239 399 268 b 324 395 399 360 377 395 z', + }, + dynamicSforzando: { + x_min: 0, + x_max: 229, + y_min: -10, + y_max: 273, + ha: 283, + o: 'm 212 393 b 68 274 127 393 68 350 b 145 161 68 223 95 196 b 200 85 187 132 200 114 b 127 20 200 53 173 20 b 66 42 91 20 66 32 b 91 56 66 49 75 46 b 111 98 104 65 111 79 b 59 145 111 127 86 145 b 0 78 24 145 0 117 b 125 -14 0 30 49 -14 b 291 120 219 -14 291 36 b 220 232 291 160 276 190 b 151 314 168 271 151 287 b 213 361 151 337 168 361 b 258 346 238 361 258 356 b 240 333 258 340 251 340 b 226 298 232 325 226 314 b 276 252 226 269 248 252 b 330 307 311 252 330 279 b 212 393 330 360 285 393 z', + }, + dynamicZ: { + x_min: -30, + x_max: 244, + y_min: -10, + y_max: 268, + ha: 278, + o: 'm 333 386 b 298 377 321 386 314 382 b 239 370 282 373 259 370 b 94 383 153 370 111 383 b 68 364 79 383 72 377 l 33 264 b 29 242 30 255 29 248 b 45 228 29 232 36 228 b 66 249 55 228 60 236 l 81 279 b 96 297 85 288 88 297 b 168 292 102 297 127 292 b 223 302 194 292 215 302 b 196 269 229 302 197 271 l -26 45 b -43 16 -37 33 -43 27 b -24 -1 -43 6 -36 -1 b 4 16 -12 -1 -3 10 b 39 30 16 24 27 30 b 179 -14 79 30 108 -14 b 297 102 259 -14 297 43 b 245 166 297 147 271 166 b 197 115 219 166 197 145 b 236 72 197 88 216 72 b 259 79 251 72 255 79 b 264 75 262 79 264 78 b 258 60 264 72 261 66 b 229 45 252 50 242 45 b 117 95 186 45 173 95 b 85 86 98 95 89 86 b 102 111 85 86 95 104 l 333 338 b 351 370 344 350 351 359 b 333 386 351 380 343 386 z', + }, + ornamentTrill: { + x_min: 0, + x_max: 521, + y_min: -10, + y_max: 390, + ha: 400, + o: 'm 383 562 b 364 557 377 562 369 559 l 294 534 b 269 511 281 530 275 526 l 217 384 b 206 367 212 370 210 367 b 179 380 200 367 192 374 b 118 393 158 389 140 393 b 0 292 50 393 0 353 b 95 210 0 248 30 210 b 140 213 112 210 131 213 b 144 209 143 213 144 212 b 140 194 144 206 143 202 l 124 156 b 96 58 108 117 96 88 b 179 -14 96 17 124 -14 b 325 153 253 -14 325 46 b 307 251 325 187 320 219 b 302 265 304 258 302 261 b 334 294 302 274 311 281 l 343 298 b 455 348 393 328 428 348 b 474 327 468 348 474 344 b 465 285 474 312 469 295 l 360 24 b 356 9 357 17 356 13 b 372 0 356 3 360 0 l 442 0 b 465 17 455 0 459 3 l 559 251 b 655 351 577 298 624 351 b 670 343 664 351 670 348 b 638 285 670 330 638 325 b 690 239 638 256 660 239 b 750 318 724 239 750 268 b 675 395 750 360 729 395 b 586 350 638 395 608 374 b 566 330 573 336 572 330 b 553 361 559 330 564 340 b 490 393 543 380 521 393 b 347 348 432 393 377 364 b 312 333 328 338 320 333 b 308 337 310 333 308 334 b 315 359 308 343 312 351 l 387 537 b 392 553 390 544 392 549 b 383 562 392 559 389 562 z m 118 360 b 192 325 134 360 192 347 b 186 307 192 321 189 314 l 180 292 b 148 265 173 274 167 269 b 98 258 130 261 112 258 b 39 301 50 258 39 281 b 118 360 39 327 60 360 z m 272 240 b 292 151 285 240 292 164 b 212 30 292 88 253 30 b 196 48 200 30 196 37 b 207 92 196 59 202 78 b 264 230 207 94 209 94 b 272 240 266 238 268 240 z', + }, + ornamentTurn: { + x_min: 0, + x_max: 460, + y_min: 0, + y_max: 218, + ha: 218, + o: 'm 534 314 b 454 251 490 314 454 294 b 505 199 454 219 475 199 b 579 232 547 199 549 232 b 626 164 603 232 626 202 b 533 72 626 102 583 72 b 377 180 487 72 439 111 b 150 312 307 258 243 312 b 0 148 55 312 0 240 b 128 0 0 45 66 0 b 209 63 173 0 209 20 b 157 115 209 95 187 115 b 84 82 115 115 114 82 b 36 150 59 82 36 112 b 130 242 36 212 79 242 b 285 134 176 242 223 203 b 513 1 356 56 419 1 b 662 166 608 1 662 73 b 534 314 662 269 596 314 z', + }, + ornamentTurnSlash: { + x_min: 0, + x_max: 460, + y_min: -90, + y_max: 306, + ha: 396, + o: 'm 333 441 b 310 418 315 441 310 433 l 310 274 b 302 252 310 258 308 252 b 261 278 294 252 287 262 b 150 311 228 298 192 311 b 0 147 55 311 0 239 b 128 -1 0 43 66 -1 b 209 62 173 -1 209 19 b 157 114 209 94 187 114 b 84 81 115 114 114 81 b 36 148 59 81 36 111 b 130 240 36 210 79 240 b 285 128 176 240 222 197 b 307 79 304 108 307 105 l 307 -107 b 330 -130 307 -122 312 -130 b 353 -107 347 -130 353 -122 l 353 37 b 360 59 353 53 353 59 b 402 33 369 59 376 49 b 513 0 435 13 471 0 b 662 164 608 0 662 72 b 534 312 662 268 596 312 b 454 249 490 312 454 292 b 505 197 454 217 475 197 b 579 230 547 197 549 230 b 626 163 603 230 626 200 b 533 71 626 101 583 71 b 377 183 487 71 441 114 b 356 232 359 203 356 206 l 356 418 b 333 441 356 433 350 441 z', + }, + ornamentMordent: { + x_min: 1, + x_max: 729, + y_min: -73, + y_max: 319, + ha: 392, + o: 'm 546 265 l 546 459 l 501 459 l 501 216 l 459 167 b 439 167 454 160 445 160 b 302 327 387 228 310 317 b 258 353 291 338 282 351 b 226 340 245 353 238 348 l 20 107 b 1 73 12 98 1 84 b 30 59 1 65 9 59 b 88 94 53 59 73 79 b 144 143 107 109 124 127 b 176 161 158 154 168 161 b 197 144 183 161 189 156 l 323 10 b 351 0 328 3 340 0 b 377 9 361 0 372 3 b 498 114 392 17 475 94 l 498 -105 l 544 -105 l 544 153 b 562 160 550 157 556 160 b 585 144 569 160 576 156 b 710 10 590 135 697 24 b 737 0 716 3 727 0 b 765 9 749 0 759 3 b 1030 295 776 17 1011 274 l 1032 300 b 1050 328 1041 308 1050 318 b 1012 353 1050 343 1024 353 b 986 343 1002 353 994 348 b 854 190 971 330 871 206 b 828 176 842 180 835 176 b 802 190 818 176 809 183 b 681 333 791 202 696 320 b 645 353 668 344 657 353 b 613 340 634 353 626 350 b 580 304 600 330 590 315 z', + }, + ornamentShortTrill: { + x_min: 0, + x_max: 725, + y_min: 0, + y_max: 245, + ha: 245, + o: 'm 429 167 l 301 325 b 256 353 291 338 282 350 b 225 340 246 353 238 350 b 16 105 158 268 88 186 b 0 72 9 96 0 86 b 29 58 0 63 7 58 b 71 76 42 58 55 62 l 158 154 b 174 160 163 158 168 160 b 197 143 181 160 187 154 b 321 10 203 135 310 24 b 350 0 327 3 338 0 b 377 7 361 0 372 3 l 533 148 b 554 160 543 158 550 160 b 577 143 562 160 566 156 b 703 10 585 135 690 24 b 732 0 708 3 720 0 b 759 7 743 0 753 3 b 1024 294 769 16 1005 272 b 1044 327 1032 305 1044 321 b 1005 353 1044 341 1018 353 b 979 343 996 353 988 348 b 848 189 963 330 864 204 b 821 174 837 179 828 174 b 796 189 811 174 804 181 b 674 331 783 202 688 318 b 641 351 662 343 651 351 b 606 340 628 351 619 350 b 573 304 593 328 583 315 b 444 167 533 259 491 213 b 429 167 439 161 433 161 z', + }, + ornamentTremblement: { + x_min: 1, + x_max: 985, + y_min: 0, + y_max: 244, + ha: 244, + o: 'm 678 325 b 634 351 667 338 657 350 b 602 338 621 351 613 348 l 448 167 b 439 167 446 164 441 164 l 302 325 b 258 351 291 338 281 350 b 228 338 245 351 238 348 b 193 304 215 328 204 315 l 19 107 b 1 72 13 96 1 76 b 30 58 1 63 9 58 b 89 92 52 58 73 78 l 144 141 b 148 144 145 143 147 143 b 176 160 160 153 170 160 b 199 143 183 160 189 154 b 324 10 204 134 311 23 b 351 0 330 3 340 0 b 379 7 363 0 373 3 l 530 148 b 552 160 536 154 546 160 b 575 143 559 160 564 154 b 698 10 580 134 687 23 b 727 0 704 3 716 0 b 755 7 739 0 749 3 l 907 147 b 930 160 922 158 923 160 b 952 143 937 160 943 154 l 1077 10 b 1107 0 1084 3 1096 0 b 1133 7 1117 0 1128 3 b 1398 294 1143 16 1380 272 b 1418 327 1407 305 1418 321 b 1381 351 1418 343 1394 351 b 1354 341 1371 351 1362 348 b 1223 189 1338 328 1238 204 b 1195 174 1211 179 1202 174 b 1171 189 1185 174 1178 181 b 1048 331 1158 200 1063 318 b 1012 351 1035 343 1024 351 b 981 338 1002 351 994 350 b 948 304 968 328 958 315 b 827 166 907 258 865 212 b 815 166 824 163 818 163 b 678 325 760 226 732 264 z', + }, + ornamentPrecompAppoggTrill: { + x_min: 0, + x_max: 1119, + y_min: 0, + y_max: 481, + ha: 481, + o: 'm 1015 163 b 873 328 963 223 880 318 b 828 354 860 344 847 353 b 796 341 816 354 809 351 b 763 305 783 331 773 317 b 642 168 721 261 681 215 b 636 163 641 167 639 164 b 494 328 585 223 501 318 b 449 354 481 344 468 353 b 418 341 438 354 431 351 b 384 305 405 331 395 317 b 264 168 343 261 302 215 l 242 144 b 144 88 232 124 171 88 b 79 197 81 88 79 189 l 79 648 b 60 693 79 683 71 693 b 52 691 58 693 55 693 b 0 616 3 672 0 625 l 0 207 b 121 0 0 40 68 0 b 249 68 168 0 232 53 b 279 94 262 75 271 86 b 336 144 298 111 315 128 b 367 163 350 156 360 163 b 389 145 374 163 380 157 b 514 12 395 137 501 26 b 543 1 520 4 531 1 b 569 9 553 1 563 4 b 636 73 576 14 605 43 l 658 94 b 714 144 677 111 694 128 b 746 163 729 156 739 163 b 768 145 753 163 759 157 b 893 12 773 137 880 26 b 922 1 899 4 910 1 b 948 9 932 1 942 4 l 1012 71 b 1037 94 1022 78 1030 86 b 1092 144 1054 111 1073 128 b 1123 161 1106 156 1115 161 b 1146 145 1130 161 1136 157 b 1270 12 1152 137 1259 26 b 1299 1 1276 4 1287 1 b 1326 9 1310 1 1320 4 b 1591 297 1336 19 1572 275 b 1611 328 1600 307 1611 320 b 1574 354 1611 343 1585 354 b 1548 344 1565 354 1555 350 b 1416 192 1532 331 1431 206 b 1388 177 1404 181 1395 177 b 1365 190 1380 177 1371 184 b 1243 333 1352 203 1256 321 b 1205 354 1228 346 1217 354 b 1174 341 1195 354 1187 351 b 1140 305 1161 330 1152 317 z', + }, + ornamentPrecompSlideTrillDAnglebert: { + x_min: 2, + x_max: 1150, + y_min: -367, + y_max: 245, + ha: 612, + o: 'm 1058 160 b 916 327 1007 220 923 317 b 871 353 903 343 890 351 b 840 340 860 353 852 350 b 806 304 827 330 816 315 b 685 167 765 259 724 213 l 680 160 l 615 235 b 419 344 582 275 523 344 b 3 -144 258 344 3 26 b 4 -168 3 -153 3 -160 b 246 -482 24 -315 99 -422 b 458 -528 340 -521 410 -528 b 514 -526 485 -528 504 -526 b 552 -508 531 -526 552 -517 b 514 -497 552 -503 541 -498 l 503 -497 b 194 -390 432 -494 298 -488 b 69 -151 194 -390 69 -279 b 184 96 69 -60 128 27 b 328 183 202 118 258 183 b 477 96 413 183 454 118 b 559 10 510 62 552 19 b 588 0 566 3 576 0 b 613 7 598 0 609 3 b 723 112 622 14 681 73 b 789 161 733 122 776 161 b 811 144 796 161 802 156 b 936 10 816 135 923 24 b 965 0 942 3 953 0 b 991 7 975 0 985 3 b 1051 66 996 12 1022 37 b 1081 92 1063 73 1073 84 b 1136 143 1099 109 1117 127 b 1168 160 1151 154 1159 160 b 1191 144 1175 160 1181 156 b 1315 10 1197 135 1303 24 b 1344 0 1320 3 1332 0 b 1371 7 1355 0 1365 3 b 1636 295 1381 17 1617 274 b 1656 327 1644 305 1656 318 b 1619 353 1656 341 1630 353 b 1593 343 1610 353 1600 348 b 1460 190 1577 330 1476 204 b 1433 176 1449 180 1440 176 b 1410 189 1424 176 1416 183 b 1287 331 1397 202 1300 320 b 1250 353 1273 344 1261 353 b 1218 340 1240 353 1231 350 b 1185 304 1205 328 1197 315 z', + }, + ornamentPrecompSlideTrillBach: { + x_min: 0, + x_max: 1048, + y_min: -367, + y_max: 331, + ha: 698, + o: 'm 1038 477 l 979 477 l 979 238 l 912 160 b 769 327 858 220 775 317 b 724 353 756 343 743 351 b 693 340 713 353 706 350 b 660 304 680 330 670 315 b 539 167 618 259 577 213 b 533 161 536 166 534 163 b 390 327 480 220 396 317 b 346 353 377 343 364 351 l 340 353 b 308 340 330 353 321 350 b 275 304 295 330 285 315 b 117 122 220 243 168 186 b 0 -144 68 62 0 -48 b 1 -168 0 -153 0 -160 b 243 -482 22 -315 96 -422 b 455 -528 337 -521 408 -528 b 511 -526 482 -528 501 -526 b 549 -508 528 -526 549 -517 b 511 -497 549 -503 539 -498 l 500 -497 b 192 -390 429 -494 295 -488 b 68 -177 192 -390 84 -298 b 66 -151 66 -168 66 -160 b 189 105 66 -58 127 35 b 232 143 203 118 216 131 b 264 161 246 154 256 161 b 285 144 271 161 276 156 b 410 10 291 135 397 24 b 439 0 416 3 428 0 b 465 7 449 0 459 3 l 531 72 b 554 92 540 78 547 86 b 611 143 573 109 590 127 b 642 161 625 154 635 161 b 664 144 649 161 655 156 b 789 10 670 135 776 24 b 818 0 795 3 806 0 b 844 7 828 0 838 3 b 904 66 850 12 876 37 b 935 92 916 73 924 84 b 979 134 949 107 963 121 l 979 -88 l 1037 -88 l 1037 151 l 1044 144 b 1168 10 1050 135 1156 24 b 1197 0 1174 3 1185 0 b 1224 7 1208 0 1218 3 b 1489 295 1234 17 1470 274 b 1509 327 1498 305 1509 318 b 1472 353 1509 341 1483 353 b 1446 343 1463 353 1453 348 b 1313 190 1430 330 1329 204 b 1286 176 1302 180 1293 176 b 1263 189 1277 176 1269 183 b 1140 331 1250 202 1153 320 b 1103 353 1126 344 1115 353 b 1071 340 1093 353 1084 350 b 1038 304 1058 328 1050 315 z', + }, + ornamentPrecompTrillSuffixDandrieu: { + x_min: 0, + x_max: 949, + y_min: 0, + y_max: 381, + ha: 381, + o: 'm 1367 314 b 1250 521 1367 419 1318 482 b 1107 549 1211 537 1145 549 b 1083 546 1096 549 1087 549 b 1066 528 1071 540 1066 534 b 1079 520 1066 524 1070 520 b 1323 351 1187 517 1323 487 b 1201 171 1323 269 1260 219 b 1194 166 1201 171 1198 168 b 1056 327 1142 226 1063 317 b 1011 353 1043 343 1030 351 b 979 340 999 353 992 350 b 946 304 966 330 956 315 b 825 167 904 259 864 213 l 821 161 b 678 327 768 222 685 317 b 634 353 665 343 652 351 b 602 340 622 353 615 350 b 569 304 589 330 579 315 b 448 167 527 259 487 213 l 444 161 b 301 327 390 222 308 317 b 256 353 288 343 275 351 b 225 340 245 353 238 350 b 192 304 212 330 202 315 b 71 167 150 259 109 213 b 17 105 52 147 36 127 b 0 73 10 98 0 84 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 174 161 157 154 167 161 b 196 144 181 161 187 156 b 321 10 202 135 308 24 b 350 0 327 3 338 0 b 376 7 360 0 370 3 b 485 112 384 14 444 73 b 552 161 495 122 539 161 b 573 144 559 161 564 156 b 698 10 579 135 685 24 b 727 0 704 3 716 0 b 753 7 737 0 747 3 b 863 112 762 14 821 73 b 929 161 873 122 916 161 b 950 144 936 161 942 156 b 1076 10 956 135 1063 24 b 1104 0 1081 3 1093 0 b 1130 7 1115 0 1125 3 b 1236 108 1139 14 1195 69 b 1367 314 1297 160 1367 233 z', + }, + ornamentPrecompDoubleCadenceUpperPrefix: { + x_min: 0, + x_max: 1278, + y_min: 0, + y_max: 247, + ha: 247, + o: 'm 1801 356 b 1776 346 1793 356 1783 351 b 1642 192 1760 333 1659 206 b 1614 177 1630 181 1621 177 b 1591 190 1606 177 1597 184 b 1469 334 1578 203 1482 323 b 1430 356 1453 347 1441 356 b 1398 343 1420 356 1411 353 b 1365 307 1385 331 1377 318 l 1240 164 b 1097 330 1187 226 1104 320 b 1053 356 1084 346 1071 354 b 1021 343 1041 356 1034 353 b 988 307 1008 333 998 318 b 865 168 946 262 904 216 l 861 163 b 717 330 808 223 724 320 b 672 356 704 346 691 354 b 641 343 661 356 654 353 b 608 307 628 333 618 318 b 485 168 566 262 524 216 l 455 134 b 284 46 409 88 351 46 b 16 285 148 46 32 265 b 3 295 9 292 4 295 b 0 291 1 295 0 292 b 1 285 0 288 1 285 b 308 0 42 190 157 0 b 530 120 415 1 482 63 b 559 144 539 128 549 137 b 590 163 573 156 583 163 b 612 145 598 163 603 157 b 739 10 618 137 724 24 b 768 0 744 3 756 0 b 793 7 778 0 788 3 b 903 114 802 14 861 75 l 939 144 b 971 163 953 156 963 163 b 992 145 978 163 984 157 b 1119 10 998 137 1106 24 b 1148 0 1125 3 1136 0 b 1174 7 1158 0 1168 3 b 1284 114 1182 14 1241 75 b 1316 144 1282 115 1312 141 b 1348 161 1331 156 1339 161 b 1371 145 1355 161 1361 157 b 1496 10 1377 137 1485 24 b 1525 0 1502 3 1513 0 b 1552 7 1536 0 1547 3 b 1819 298 1562 17 1800 276 b 1840 330 1829 308 1840 320 b 1832 344 1840 334 1837 340 b 1801 356 1820 351 1810 356 z', + }, + ornamentPrecompDoubleCadenceUpperPrefixTurn: { + x_min: 0, + x_max: 1277, + y_min: -62, + y_max: 333, + ha: 395, + o: 'm 1273 202 l 1273 480 l 1230 480 l 1230 174 l 1097 328 b 1053 354 1084 344 1071 353 b 1021 341 1041 354 1034 351 b 988 305 1008 331 998 317 b 865 167 945 261 904 215 l 861 161 b 717 328 808 222 724 318 b 672 354 704 344 691 353 b 641 341 661 354 654 351 b 608 305 628 331 618 317 b 485 167 564 261 524 215 b 455 132 474 156 465 144 b 284 45 410 88 350 45 b 14 284 148 45 30 264 b 3 294 9 291 4 294 b 0 289 1 294 0 291 b 1 284 0 287 1 284 b 308 -1 42 189 157 -1 b 530 118 415 0 481 62 b 557 143 539 127 547 135 b 590 161 572 154 582 161 b 612 144 598 161 603 156 b 737 9 618 135 724 24 b 768 -1 743 1 755 -1 b 793 6 778 -1 788 1 b 903 112 802 13 861 73 l 937 143 b 971 161 953 154 963 161 b 992 144 978 161 984 156 b 1117 9 998 135 1104 24 b 1148 -1 1123 1 1136 -1 b 1174 6 1158 -1 1168 1 l 1230 60 l 1230 -89 l 1273 -89 l 1273 102 l 1283 112 b 1348 160 1295 125 1332 160 b 1371 144 1355 160 1361 156 b 1496 9 1377 135 1483 24 b 1525 -1 1502 1 1513 -1 b 1552 6 1536 -1 1547 1 b 1819 297 1562 16 1800 275 b 1839 328 1827 307 1839 320 b 1801 354 1839 343 1813 354 b 1776 344 1793 354 1783 350 b 1642 190 1760 331 1657 206 b 1614 176 1630 180 1621 176 b 1591 189 1606 176 1597 183 b 1467 333 1578 203 1480 321 b 1430 354 1453 346 1441 354 b 1398 341 1420 354 1411 351 b 1365 305 1385 330 1377 317 z', + }, + ornamentPrecompTrillLowerSuffix: { + x_min: 0, + x_max: 859, + y_min: -222, + y_max: 246, + ha: 468, + o: 'm 1164 217 b 1031 351 1138 259 1063 351 b 1011 337 1020 351 1024 347 b 828 167 952 291 886 217 l 824 164 b 683 328 772 225 690 318 b 638 354 670 344 657 353 b 606 341 626 354 619 351 b 573 305 593 331 583 317 b 451 167 530 261 490 215 l 446 161 b 302 328 393 222 310 318 b 258 354 289 344 276 353 b 226 341 246 354 239 351 b 193 305 213 331 203 317 b 71 167 150 261 109 215 b 17 105 52 147 36 127 b 0 73 10 98 0 84 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 176 161 157 154 168 161 b 197 144 183 161 189 156 b 323 9 203 135 310 23 b 353 -1 328 1 340 -1 b 379 6 363 -1 373 1 b 488 112 387 13 446 73 l 523 143 b 556 161 539 154 549 161 b 577 144 563 161 569 156 b 703 9 583 135 690 23 b 733 -1 708 1 721 -1 b 759 6 743 -1 753 1 b 868 112 768 13 827 73 b 955 183 878 122 943 183 b 1081 107 965 183 1031 153 b 1156 -89 1128 63 1156 6 l 1156 -102 b 948 -297 1156 -204 1048 -297 b 806 -271 904 -297 850 -282 l 792 -266 b 801 -288 792 -268 795 -282 b 948 -320 809 -297 880 -320 b 1237 -50 1092 -320 1237 -199 b 1164 217 1237 75 1218 122 z', + }, + brassScoop: { + x_min: 1, + x_max: 320, + y_min: -373, + y_max: 13, + ha: 386, + o: 'm 35 -537 b 461 -12 194 -518 461 -289 b 438 19 461 13 451 19 b 410 -9 425 19 413 9 b 35 -425 357 -366 92 -403 b 1 -482 13 -433 1 -438 l 1 -505 b 26 -537 1 -526 3 -537 z', + }, + brassDoitMedium: { + x_min: 0, + x_max: 489, + y_min: -40, + y_max: 346, + ha: 386, + o: 'm 33 -58 b 704 468 255 -58 683 186 b 681 498 704 494 693 498 b 654 471 668 498 658 488 b 33 55 550 118 91 76 b 0 -3 12 46 0 42 l 0 -26 b 24 -58 0 -46 1 -58 z', + }, + brassFallLipShort: { + x_min: 1, + x_max: 293, + y_min: -345, + y_max: 42, + ha: 387, + o: 'm 22 60 b 1 35 4 60 1 52 l 1 6 b 26 -50 3 -40 10 -43 b 32 -52 27 -50 30 -50 b 376 -469 85 -73 327 -111 b 400 -497 379 -487 387 -497 b 422 -467 412 -497 422 -491 b 32 60 422 -187 177 40 z', + }, + brassLiftMedium: { + x_min: 0, + x_max: 811, + y_min: 0, + y_max: 852, + ha: 852, + o: 'm 1138 1220 b 1135 1225 1135 1223 1135 1224 b 1129 1227 1133 1227 1130 1227 b 1117 1207 1122 1227 1117 1212 l 1117 1201 b 1109 1164 1117 1187 1117 1172 b 1100 1156 1107 1161 1104 1158 b 959 1104 1058 1128 995 1140 b 929 1032 936 1081 929 1056 b 932 1007 929 1024 930 1015 b 923 976 932 995 930 985 l 914 971 b 773 919 873 942 809 955 b 743 847 750 896 743 870 b 746 821 743 838 744 829 b 737 791 746 809 744 799 l 729 783 b 588 733 687 756 624 769 b 557 661 564 710 557 684 b 560 635 557 652 559 644 b 552 605 560 624 559 612 l 543 598 b 402 547 501 570 438 583 b 372 475 379 524 372 498 b 374 449 372 467 373 458 b 366 419 374 438 373 426 l 357 412 b 216 361 315 384 252 397 b 186 289 193 338 186 312 b 189 264 186 281 187 272 b 180 233 189 252 187 240 b 171 226 177 232 174 229 b 30 176 130 199 66 212 b 0 104 7 153 0 128 b 33 0 0 88 14 0 b 49 17 40 0 49 10 b 71 63 52 35 56 49 b 212 115 102 95 154 59 b 239 186 230 134 239 160 b 236 210 239 194 238 202 b 256 249 239 225 243 236 b 397 301 288 281 340 245 b 425 372 416 320 425 346 b 422 396 425 380 423 387 b 442 435 425 410 429 422 b 583 487 474 467 526 431 b 611 557 602 505 611 531 b 608 582 611 566 609 573 b 628 621 611 596 615 608 b 769 672 660 652 711 618 b 796 743 788 691 796 717 b 793 768 796 752 795 759 b 814 806 796 782 801 793 b 955 858 845 838 897 804 b 982 929 973 877 982 903 b 979 953 982 937 981 945 b 999 992 982 968 986 979 b 1140 1045 1031 1024 1083 989 b 1168 1116 1161 1066 1168 1090 b 1138 1220 1168 1162 1145 1207 z', + }, + brassFallRoughMedium: { + x_min: 0, + x_max: 811, + y_min: 0, + y_max: 852, + ha: 852, + o: 'm 30 1220 b 0 1116 23 1207 0 1162 b 27 1045 0 1090 7 1066 b 168 992 85 989 137 1024 b 189 953 181 979 186 968 b 186 929 187 945 186 937 b 213 858 186 903 194 877 b 354 806 271 804 323 838 b 374 768 367 793 372 782 b 372 743 373 759 372 752 b 399 672 372 717 380 691 b 540 621 456 618 508 652 b 560 582 553 608 557 596 b 557 557 559 573 557 566 b 585 487 557 531 566 505 b 726 435 642 431 694 467 b 746 396 739 422 743 410 b 743 372 744 387 743 380 b 770 301 743 346 752 320 b 912 249 828 245 880 281 b 932 210 924 236 929 225 b 929 186 930 202 929 194 b 956 115 929 160 937 134 b 1097 63 1014 59 1066 95 b 1119 17 1112 49 1116 35 b 1135 0 1119 10 1128 0 b 1168 104 1153 0 1168 91 b 1138 176 1168 128 1161 153 b 996 226 1102 212 1038 199 b 988 233 994 229 991 232 b 979 264 981 240 979 252 b 982 289 981 272 982 281 b 952 361 982 312 975 338 b 811 412 916 397 852 384 l 802 419 b 793 449 795 426 793 438 b 796 475 795 458 796 467 b 766 547 796 498 789 524 b 625 598 730 583 667 570 l 616 605 b 608 635 609 612 608 624 b 611 661 609 644 611 652 b 580 733 611 684 603 710 b 439 783 544 769 481 756 l 431 791 b 422 821 423 799 422 809 b 425 847 423 829 425 838 b 395 919 425 870 418 896 b 253 971 359 955 295 942 l 245 976 b 236 1007 238 985 236 995 b 239 1032 238 1015 239 1024 b 209 1104 239 1056 232 1081 b 68 1156 173 1140 109 1128 b 59 1164 63 1158 60 1161 b 50 1201 50 1172 50 1187 l 50 1207 b 39 1227 50 1212 46 1227 b 33 1225 37 1227 35 1227 b 30 1220 33 1224 33 1223 z', + }, + brassBend: { + x_min: 0, + x_max: 392, + y_min: 0, + y_max: 282, + ha: 282, + o: 'm 282 0 b 552 72 369 0 456 23 b 564 92 560 75 564 84 l 564 383 b 541 406 564 395 554 406 b 518 383 528 406 518 395 l 518 107 b 282 46 435 65 357 46 b 46 107 207 46 130 65 l 46 383 b 23 406 46 395 36 406 b 0 383 10 406 0 395 l 0 92 b 13 72 0 84 4 75 b 282 0 108 23 196 0 z', + }, + brassMuteClosed: { + x_min: 0, + x_max: 272, + y_min: 0, + y_max: 272, + ha: 272, + o: 'm 392 219 l 219 219 l 219 392 l 173 392 l 173 219 l 0 219 l 0 173 l 173 173 l 173 0 l 219 0 l 219 173 l 392 173 z', + }, + brassMuteOpen: { + x_min: 0, + x_max: 304, + y_min: 0, + y_max: 304, + ha: 304, + o: 'm 219 0 b 438 219 340 0 438 98 b 219 438 438 340 340 438 b 0 219 98 438 0 340 b 219 0 0 98 98 0 z m 219 392 b 392 219 314 392 392 314 b 219 46 392 124 314 46 b 46 219 124 46 46 124 b 219 392 46 314 124 392 z', + }, + brassFlip: { + x_min: 0, + x_max: 379, + y_min: 0, + y_max: 282, + ha: 282, + o: 'm 523 0 b 541 9 530 0 536 3 b 546 22 544 13 546 17 b 536 42 546 29 541 36 l 36 402 b 23 406 33 405 27 406 b 0 383 12 406 0 395 l 0 23 b 23 0 0 10 10 0 b 46 23 36 0 46 10 l 46 337 l 508 4 b 523 0 513 1 517 0 z', + }, + brassJazzTurn: { + x_min: 0, + x_max: 620, + y_min: 0, + y_max: 245, + ha: 245, + o: 'm 792 190 b 765 176 780 179 772 176 b 740 190 755 176 747 183 b 629 325 727 202 644 312 b 593 347 616 338 605 347 b 562 334 583 346 575 344 b 528 298 549 323 539 310 l 406 176 b 389 168 406 176 399 168 b 374 176 384 168 379 170 b 245 325 360 192 245 325 b 200 353 232 343 219 351 b 168 340 190 353 181 350 l 17 156 b 0 121 10 147 0 132 b 16 107 0 114 4 108 b 84 143 26 107 76 137 b 118 160 92 150 108 160 b 141 143 125 160 131 154 b 265 10 147 135 253 24 b 294 0 271 3 282 0 b 321 7 305 0 315 3 b 498 160 321 7 478 158 b 521 143 505 160 513 154 b 647 10 528 135 635 24 b 675 0 652 3 664 0 b 703 7 687 0 697 3 b 874 186 713 16 855 164 b 893 220 881 196 893 212 b 873 245 890 235 883 243 b 796 194 847 245 815 213 z', + }, + brassSmear: { + x_min: 1, + x_max: 306, + y_min: 0, + y_max: 170, + ha: 170, + o: 'm 193 79 b 308 0 219 50 264 0 b 439 117 396 0 438 102 b 439 120 439 118 439 118 l 441 125 b 441 128 441 127 441 127 b 433 141 441 135 439 141 b 416 130 429 141 423 137 b 343 94 390 107 370 94 b 269 153 315 94 294 121 l 265 158 b 144 245 239 190 180 245 b 6 134 62 245 10 143 b 1 114 3 125 1 118 b 7 107 1 108 4 107 b 36 122 13 107 22 112 b 92 151 55 137 65 151 b 183 89 125 151 161 112 b 189 84 184 88 187 86 z', + }, + stringsDownBow: { + x_min: 0, + x_max: 312, + y_min: 0, + y_max: 318, + ha: 318, + o: 'm 37 458 b 0 420 17 458 0 441 l 0 17 b 17 0 0 7 9 0 l 37 0 b 55 17 46 0 55 7 l 55 253 b 225 278 55 269 140 278 b 395 253 310 278 395 269 l 395 17 b 413 0 395 7 403 0 l 432 0 b 449 17 441 0 449 7 l 449 420 b 412 458 449 441 432 458 z', + }, + stringsUpBow: { + x_min: 1, + x_max: 249, + y_min: 1, + y_max: 495, + ha: 494, + o: 'm 181 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 z', + }, + stringsHarmonic: { + x_min: 0, + x_max: 200, + y_min: 0, + y_max: 200, + ha: 200, + o: 'm 288 144 b 144 288 288 225 223 288 b 0 144 65 288 0 225 b 144 0 0 65 65 0 b 288 144 223 0 288 65 z m 144 249 b 249 144 203 249 249 203 b 144 39 249 86 203 39 b 39 144 86 39 39 86 b 144 249 39 203 86 249 z', + }, + pluckedSnapPizzicatoAbove: { + x_min: 0, + x_max: 200, + y_min: 0, + y_max: 300, + ha: 300, + o: 'm 0 144 b 144 0 0 63 65 0 b 288 144 223 0 288 63 b 167 285 288 215 235 275 l 167 432 l 121 432 l 121 285 b 0 144 52 275 0 215 z m 121 246 l 121 144 l 167 144 l 167 246 b 249 144 213 236 249 193 b 144 39 249 85 202 39 b 39 144 85 39 39 85 b 121 246 39 193 73 236 z', + }, + pluckedSnapPizzicatoBelow: { + x_min: 0, + x_max: 200, + y_min: 0, + y_max: 300, + ha: 300, + o: 'm 288 288 b 144 432 288 369 223 432 b 0 288 65 432 0 369 b 121 145 0 216 52 157 l 121 0 l 167 0 l 167 145 b 288 288 235 157 288 216 z m 167 186 l 167 288 l 121 288 l 121 186 b 39 288 75 196 39 238 b 144 393 39 347 86 393 b 249 288 203 393 249 347 b 167 186 249 238 215 196 z', + }, + pluckedLeftHandPizzicato: { + x_min: 0, + x_max: 272, + y_min: 0, + y_max: 272, + ha: 272, + o: 'm 392 219 l 219 219 l 219 392 l 173 392 l 173 219 l 0 219 l 0 173 l 173 173 l 173 0 l 219 0 l 219 173 l 392 173 z', + }, + keyboardPedalPed: { + x_min: 0, + x_max: 1019, + y_min: -8, + y_max: 555, + ha: 563, + o: 'm 413 799 b 179 749 327 798 261 789 b 0 517 107 713 0 632 b 122 376 0 454 37 376 b 240 540 189 376 240 452 b 225 586 240 579 233 586 b 204 549 213 586 212 573 b 138 480 199 527 181 480 b 85 549 96 480 85 517 l 85 554 b 353 762 89 690 230 762 b 373 752 364 762 373 760 b 351 708 373 740 360 723 b 274 546 330 675 274 585 b 353 416 274 508 333 444 b 412 304 372 390 412 351 b 382 228 412 275 403 256 b 334 190 363 202 361 200 b 147 29 271 167 147 88 b 196 -12 147 4 171 -12 b 343 108 239 -12 279 33 l 363 132 b 387 150 370 141 376 150 b 543 -4 445 150 467 -4 b 631 42 567 -4 586 0 l 668 78 b 685 89 674 84 680 89 b 696 75 688 89 690 86 b 809 -9 717 29 753 -9 b 946 66 854 -9 894 13 b 988 107 971 92 981 107 b 1002 89 994 107 996 99 b 1152 -4 1030 36 1077 -4 b 1329 248 1238 -4 1329 82 b 792 717 1329 556 1047 665 b 766 720 785 719 775 720 b 747 703 752 720 747 711 b 780 680 747 693 756 685 b 1223 222 1028 621 1223 504 b 1152 39 1223 122 1205 39 b 1073 229 1104 39 1073 132 b 1132 423 1073 314 1086 377 b 1142 442 1140 432 1142 436 b 1126 458 1142 451 1136 458 b 1093 446 1119 458 1109 455 b 975 216 1022 408 975 337 l 975 190 b 943 121 975 160 972 150 b 852 69 899 76 877 69 b 776 148 816 69 786 117 b 773 163 775 154 773 158 b 786 177 773 167 776 170 l 801 187 b 937 366 867 235 937 284 b 844 454 937 422 900 454 b 665 217 711 454 665 331 b 671 153 665 197 667 176 l 671 147 b 662 134 671 143 670 140 b 605 111 639 118 625 111 b 521 160 572 111 546 135 b 451 203 497 184 474 197 b 426 212 435 207 426 206 b 436 230 426 216 429 220 b 510 389 464 269 510 340 b 429 521 510 435 480 462 b 369 629 387 570 369 599 b 402 720 369 648 384 691 b 462 763 425 759 446 763 b 611 624 540 763 611 704 b 564 575 611 592 590 575 b 501 602 540 575 520 582 b 474 622 492 611 487 622 b 459 603 465 622 459 615 b 603 471 459 570 510 471 b 711 588 670 471 711 524 b 422 799 711 742 554 799 z m 815 403 b 848 343 838 403 848 383 b 780 226 848 295 824 261 b 765 217 773 220 768 217 b 759 228 762 217 759 220 b 756 282 757 245 756 262 b 815 403 756 346 772 403 z m 1405 124 b 1344 62 1369 124 1344 98 b 1405 0 1344 26 1369 0 b 1467 62 1441 0 1467 26 b 1405 124 1467 98 1441 124 z', + }, + keyboardPedalUp: { + x_min: 0, + x_max: 450, + y_min: 0, + y_max: 450, + ha: 450, + o: 'm 582 396 b 516 367 554 396 533 384 b 465 340 495 347 487 340 l 458 340 b 412 377 432 340 412 348 b 432 409 412 387 419 396 l 438 415 b 490 429 451 428 464 429 b 575 501 534 429 575 452 b 501 575 575 541 541 575 b 429 490 452 575 429 534 b 415 438 429 464 428 451 l 409 432 b 377 412 396 419 387 412 b 340 458 348 412 340 432 l 340 465 b 367 516 340 487 347 495 b 396 582 384 533 396 554 b 324 648 396 625 363 648 b 252 582 285 648 252 625 b 281 516 252 554 264 533 b 308 465 301 495 308 487 l 308 458 b 271 412 308 432 300 412 b 239 432 261 412 252 419 l 233 438 b 219 490 220 451 219 464 b 147 575 219 534 196 575 b 73 501 107 575 73 541 b 158 429 73 452 114 429 b 210 415 184 429 197 428 l 216 409 b 236 377 229 396 236 387 b 190 340 236 348 216 340 l 183 340 b 132 367 161 340 153 347 b 66 396 115 384 94 396 b 0 324 23 396 0 363 b 66 252 0 285 23 252 b 132 281 94 252 115 264 b 183 308 153 301 161 308 l 190 308 b 236 271 216 308 236 300 b 216 239 236 261 229 252 l 210 233 b 158 219 197 220 184 219 b 73 147 114 219 73 196 b 147 73 73 107 107 73 b 219 158 196 73 219 114 b 233 210 219 184 220 197 l 239 216 b 271 236 252 229 261 236 b 308 190 300 236 308 216 l 308 183 b 281 132 308 161 301 153 b 252 66 264 115 252 94 b 324 0 252 23 285 0 b 396 66 363 0 396 23 b 367 132 396 94 384 115 b 340 183 347 153 340 161 l 340 190 b 377 236 340 216 348 236 b 409 216 387 236 396 229 l 415 210 b 429 158 428 197 429 184 b 501 73 429 114 452 73 b 575 147 541 73 575 107 b 490 219 575 196 534 219 b 438 233 464 219 451 220 l 432 239 b 412 271 419 252 412 261 b 458 308 412 300 432 308 l 465 308 b 516 281 487 308 495 301 b 582 252 533 264 554 252 b 648 324 625 252 648 285 b 582 396 648 363 625 396 z m 324 271 b 271 324 291 271 271 291 b 324 377 271 357 291 377 b 377 324 357 377 377 357 b 324 271 377 291 357 271 z', + }, + pictChokeCymbal: { + x_min: 1, + x_max: 152, + y_min: 2, + y_max: 251, + ha: 249, + o: 'm 104 361 b 1 271 42 361 1 321 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 17 32 29 26 26 l 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 z', + }, + wiggleArpeggiatoUp: { + x_min: -33, + x_max: 292, + y_min: 0, + y_max: 119, + ha: 119, + o: 'm 130 171 b -39 68 16 171 -14 91 b -48 53 -45 62 -48 58 b -29 42 -48 46 -39 42 b -10 46 -23 42 -16 43 b 56 63 12 56 29 63 b 248 0 121 63 135 0 b 419 127 361 0 410 104 b 420 132 420 130 420 131 b 412 140 420 137 416 140 b 386 130 403 140 392 134 b 334 107 367 117 353 107 b 318 108 330 107 324 107 b 240 138 289 112 265 128 b 130 171 209 153 168 171 z', + }, + arrowheadBlackUp: { + x_min: 0, + x_max: 228, + y_min: 0, + y_max: 299, + ha: 299, + o: 'm 166 431 b 0 20 111 274 0 30 b 16 0 0 12 6 0 l 17 1 b 166 50 43 16 160 50 b 310 1 171 50 289 13 l 311 0 b 328 20 321 0 328 12 b 166 431 328 30 220 274 z', + }, + arrowheadBlackDown: { + x_min: 0, + x_max: 228, + y_min: 0, + y_max: 299, + ha: 299, + o: 'm 166 0 b 328 410 220 157 328 400 b 311 431 328 419 321 431 l 310 429 b 166 380 289 418 171 380 b 17 429 160 380 43 415 l 16 431 b 0 410 6 431 0 419 b 166 0 0 400 111 157 z', + }, + arpeggiatoUp: { + x_min: 1, + x_max: 229, + y_min: 7, + y_max: 1511, + ha: 1504, + o: 'm 219 1848 l 330 1848 l 164 2176 l 1 1848 l 121 1848 b 92 1778 115 1822 101 1800 l 89 1773 b 59 1668 75 1741 59 1702 b 96 1555 59 1614 76 1580 b 99 1551 98 1554 99 1551 l 102 1547 b 124 1496 115 1531 124 1515 b 122 1482 124 1492 124 1488 b 92 1404 118 1453 102 1428 b 59 1293 78 1372 59 1332 b 105 1172 59 1234 81 1198 b 124 1120 118 1155 124 1143 l 122 1113 b 122 1110 122 1113 122 1112 b 92 1032 118 1081 102 1057 b 59 922 78 1001 59 960 b 115 792 59 855 86 816 b 124 760 121 782 124 773 b 122 744 124 756 124 750 b 92 667 118 716 102 693 b 59 556 78 635 59 595 b 108 433 59 495 82 458 b 124 389 117 420 124 408 b 122 374 124 384 124 379 b 92 298 118 346 102 323 l 89 292 b 59 186 75 261 59 222 b 163 19 59 73 140 42 b 177 10 168 13 173 10 b 189 29 184 10 189 19 b 184 48 189 35 187 42 b 167 114 174 69 167 85 b 230 305 167 179 229 193 b 181 423 230 357 209 396 b 167 484 173 442 167 458 b 230 675 167 547 229 563 b 179 796 230 729 206 769 b 167 850 171 812 167 827 b 230 1040 167 913 229 929 b 183 1158 230 1092 209 1130 b 167 1220 173 1178 167 1194 b 230 1411 167 1284 229 1300 b 186 1526 230 1462 210 1499 b 167 1594 176 1529 167 1584 b 230 1786 167 1659 229 1673 b 219 1848 230 1809 226 1829 z', + }, + arpeggiatoDown: { + x_min: 1, + x_max: 229, + y_min: -4, + y_max: 1500, + ha: 1504, + o: 'm 219 323 b 230 384 226 341 230 361 b 167 576 229 497 167 511 b 186 644 167 586 176 641 b 230 759 210 671 230 708 b 167 950 229 870 167 886 b 183 1012 167 976 173 992 b 230 1130 209 1040 230 1079 b 167 1320 229 1241 167 1257 b 179 1374 167 1344 171 1358 b 230 1495 206 1401 230 1441 b 167 1686 229 1607 167 1623 b 181 1747 167 1712 173 1728 b 230 1865 209 1774 230 1813 b 167 2056 229 1977 167 1992 b 184 2123 167 2085 174 2101 b 189 2141 187 2128 189 2136 b 177 2160 189 2151 184 2160 b 163 2151 173 2160 168 2157 b 59 1984 140 2128 59 2097 b 89 1878 59 1948 75 1909 l 92 1872 b 122 1796 102 1848 118 1824 b 124 1781 124 1791 124 1786 b 108 1737 124 1763 117 1750 b 59 1614 82 1712 59 1675 b 92 1503 59 1575 78 1535 b 122 1426 102 1477 118 1454 b 124 1410 124 1420 124 1414 b 115 1378 124 1397 121 1388 b 59 1248 86 1354 59 1315 b 92 1138 59 1210 78 1169 b 122 1060 102 1113 118 1089 b 122 1057 122 1058 122 1058 l 124 1050 b 105 998 124 1027 118 1015 b 59 877 81 972 59 936 b 92 766 59 838 78 798 b 122 688 102 742 118 717 b 124 674 124 683 124 678 b 102 624 124 655 115 639 l 99 619 b 96 615 99 619 98 616 b 59 503 76 590 59 556 b 89 397 59 468 75 429 l 92 392 b 121 323 101 370 115 348 l 1 323 l 164 -6 l 330 323 z', + }, + repeat1Bar: { + x_min: 0, + x_max: 532, + y_min: -250, + y_max: 279, + ha: 529, + o: 'm 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 675 -71 b 586 -161 626 -71 586 -111 b 675 -251 586 -210 626 -251 b 766 -161 726 -251 766 -210 b 675 -71 766 -111 726 -71 z', + }, + repeat2Bars: { + x_min: 0, + x_max: 762, + y_min: -250, + y_max: 279, + ha: 529, + o: 'm 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 b 343 -360 331 -356 336 -360 l 485 -360 b 516 -340 498 -360 508 -348 z m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 1007 -71 b 917 -161 958 -71 917 -111 b 1007 -251 917 -210 958 -251 b 1097 -161 1057 -251 1097 -210 b 1007 -71 1097 -111 1057 -71 z', + }, + repeat4Bars: { + x_min: 0, + x_max: 1232, + y_min: -250, + y_max: 279, + ha: 529, + o: 'm 1767 380 b 1774 395 1771 386 1774 390 b 1765 402 1774 399 1771 402 l 1613 402 b 1587 380 1604 402 1597 393 l 1012 -340 b 1008 -350 1009 -343 1008 -347 b 1020 -360 1008 -356 1012 -360 l 1162 -360 b 1192 -340 1175 -360 1185 -348 z m 1436 380 b 1443 395 1440 386 1443 390 b 1434 402 1443 399 1440 402 l 1282 402 b 1256 380 1273 402 1266 393 l 681 -340 b 677 -350 678 -343 677 -347 b 688 -360 677 -356 681 -360 l 831 -360 b 861 -340 844 -360 854 -348 z m 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 b 343 -360 331 -356 336 -360 l 485 -360 b 516 -340 498 -360 508 -348 z m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 1683 -71 b 1594 -161 1634 -71 1594 -111 b 1683 -251 1594 -210 1634 -251 b 1774 -161 1734 -251 1774 -210 b 1683 -71 1774 -111 1734 -71 z', + }, + repeatBarSlash: { + x_min: 0, + x_max: 532, + y_min: -250, + y_max: 279, + ha: 529, + o: 'm 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z', + }, + csymDiminished: { + x_min: 0, + x_max: 473, + y_min: 0, + y_max: 473, + ha: 473, + o: 'm 341 681 b 0 341 153 681 0 530 b 341 0 0 153 153 0 b 681 341 530 0 681 153 b 341 681 681 530 530 681 z m 341 618 b 618 341 495 618 618 495 b 341 63 618 189 494 63 b 63 341 187 63 63 187 b 341 618 63 494 189 618 z', + }, + csymHalfDiminished: { + x_min: -16, + x_max: 488, + y_min: -15, + y_max: 489, + ha: 504, + o: 'm 703 660 l 658 704 l 557 603 b 340 681 498 652 422 681 b -1 341 151 681 -1 530 b 78 124 -1 259 29 183 l -23 23 l 22 -22 l 122 79 b 340 0 181 30 258 0 b 680 341 528 0 680 153 b 602 559 680 423 651 500 z m 62 341 b 340 618 62 494 187 618 b 513 559 403 618 464 598 l 122 168 b 62 341 84 217 62 278 z m 616 341 b 340 63 616 189 492 63 b 167 124 276 63 216 85 l 557 514 b 616 341 596 465 616 405 z', + }, + csymAugmented: { + x_min: 0, + x_max: 395, + y_min: 1, + y_max: 396, + ha: 395, + o: 'm 569 318 l 317 318 l 317 570 l 253 570 l 253 318 l 0 318 l 0 255 l 253 255 l 253 1 l 317 1 l 317 255 l 569 255 z', + }, + csymMajorSeventh: { + x_min: 0, + x_max: 558, + y_min: 1, + y_max: 477, + ha: 476, + o: 'm 402 687 l 0 1 l 804 1 z m 402 562 l 693 65 l 111 65 z', + }, + csymMinor: { + x_min: 0, + x_max: 325, + y_min: 216, + y_max: 260, + ha: 44, + o: 'm 468 374 l 0 374 l 0 311 l 468 311 z', + }, + csymParensLeftTall: { + x_min: 1, + x_max: 185, + y_min: 0, + y_max: 997, + ha: 997, + o: 'm 266 48 b 261 65 266 55 264 62 b 92 719 157 212 92 400 b 262 1371 92 1037 154 1228 b 266 1394 266 1378 266 1394 l 266 1424 b 264 1436 266 1431 266 1436 b 259 1434 262 1436 259 1434 b 1 719 84 1261 1 1011 b 259 1 1 429 79 177 b 264 0 261 0 262 0 b 266 9 265 0 266 6 z', + }, + csymParensRightTall: { + x_min: -20, + x_max: 164, + y_min: 0, + y_max: 997, + ha: 997, + o: 'm -29 9 b -26 0 -29 6 -27 0 b -22 1 -24 0 -23 0 b 236 719 158 177 236 429 b -22 1434 236 1011 154 1261 b -26 1436 -22 1434 -24 1436 b -29 1424 -29 1436 -29 1431 l -29 1394 b -24 1371 -29 1394 -29 1378 b 145 719 84 1228 145 1037 b -23 65 145 400 81 212 b -29 48 -26 62 -29 55 z', + }, + csymBracketLeftTall: { + x_min: 0, + x_max: 155, + y_min: 0, + y_max: 1000, + ha: 1000, + o: 'm 217 0 b 223 9 220 0 223 4 l 223 37 b 217 46 223 42 220 46 l 92 46 l 92 1394 l 217 1394 b 223 1403 220 1394 223 1398 l 223 1431 b 217 1440 223 1436 220 1440 l 6 1440 b 0 1436 3 1440 0 1439 l 0 4 b 6 0 0 1 3 0 z', + }, + csymBracketRightTall: { + x_min: 1, + x_max: 156, + y_min: 0, + y_max: 1000, + ha: 1000, + o: 'm 219 0 b 225 4 222 0 225 1 l 225 1436 b 219 1440 225 1439 222 1440 l 7 1440 b 1 1431 4 1440 1 1436 l 1 1403 b 7 1394 1 1398 4 1394 l 132 1394 l 132 46 l 7 46 b 1 37 4 46 1 42 l 1 9 b 7 0 1 4 4 0 z', + }, + csymParensLeftVeryTall: { + x_min: 0, + x_max: 122, + y_min: 0, + y_max: 993, + ha: 993, + o: 'm 176 32 b 171 49 176 39 174 46 b 60 716 104 194 60 399 b 173 1382 60 1032 101 1241 b 176 1405 176 1390 176 1405 l 176 1427 b 173 1430 176 1428 174 1430 b 0 716 40 1297 0 978 b 170 3 0 428 50 179 b 171 0 170 1 170 0 b 176 6 173 0 176 4 z', + }, + csymParensRightVeryTall: { + x_min: -15, + x_max: 107, + y_min: 0, + y_max: 993, + ha: 993, + o: 'm -22 6 b -17 0 -22 4 -19 0 b -16 3 -16 0 -16 1 b 154 716 104 179 154 428 b -19 1430 154 978 114 1297 b -22 1427 -20 1430 -22 1428 l -22 1405 b -19 1382 -22 1405 -22 1390 b 94 716 53 1241 94 1032 b -17 49 94 399 50 194 b -22 32 -20 46 -22 39 z', + }, + csymDiagonalArrangementSlash: { + x_min: 0, + x_max: 999, + y_min: 0, + y_max: 1000, + ha: 1000, + o: 'm 1439 1380 l 1377 1440 l 0 60 l 62 0 z', + }, + accSagittal5v7KleismaUp: { + x_min: 0, + x_max: 156, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 -35 b 135 -112 68 -86 99 -112 b 225 68 194 -112 225 -53 l 180 68 b 144 -4 180 20 168 -4 b 122 0 138 -4 131 -3 b 23 248 86 14 52 96 l 0 248 z', + }, + accSagittal5v7KleismaDown: { + x_min: 0, + x_max: 156, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 23 -248 b 122 0 52 -96 86 -14 b 144 4 131 3 138 4 b 180 -68 168 4 180 -20 l 225 -68 b 135 112 225 53 194 112 b 45 35 99 112 68 86 l 45 517 l 0 517 z', + }, + accSagittal5CommaUp: { + x_min: 0, + x_max: 156, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 225 -517 l 225 248 l 203 248 l 0 -112 l 0 -284 l 180 33 l 180 -517 z', + }, + accSagittal5CommaDown: { + x_min: 0, + x_max: 156, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 180 517 l 180 -33 l 0 284 l 0 112 l 203 -248 l 225 -248 l 225 517 z', + }, + accSagittal7CommaUp: { + x_min: 0, + x_max: 156, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 248 l 0 -517 l 45 -517 l 45 112 l 89 112 b 180 -68 150 112 180 53 l 180 -248 l 225 -248 l 225 68 b 135 248 225 187 194 248 z', + }, + accSagittal7CommaDown: { + x_min: 0, + x_max: 156, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 135 -248 b 225 -68 194 -248 225 -187 l 225 248 l 180 248 l 180 68 b 89 -112 180 -53 150 -112 l 45 -112 l 45 517 l 0 517 l 0 -248 z', + }, + accSagittal25SmallDiesisUp: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -157 l 0 -259 l 315 -89 l 315 -517 l 360 -517 l 360 248 l 337 248 l 0 68 l 0 -33 l 315 135 l 315 10 z', + }, + accSagittal25SmallDiesisDown: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 315 -10 l 315 -135 l 0 33 l 0 -68 l 337 -248 l 360 -248 l 360 517 l 315 517 l 315 89 l 0 259 l 0 157 z', + }, + accSagittal35MediumDiesisUp: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -68 330 112 360 53 l 360 -248 l 405 -248 l 405 68 b 315 248 405 187 374 248 l 203 248 l 0 -112 z', + }, + accSagittal35MediumDiesisDown: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 112 l 203 -248 l 315 -248 b 405 -68 374 -248 405 -187 l 405 248 l 360 248 l 360 68 b 271 -112 360 -53 330 -112 l 225 -112 l 225 517 l 180 517 l 180 -33 l 0 284 z', + }, + accSagittal11MediumDiesisUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 225 53 l 225 -517 l 271 -517 l 271 53 l 495 -248 l 495 -89 l 248 248 l 0 -89 l 0 -248 z', + }, + accSagittal11MediumDiesisDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 248 l 0 89 l 248 -248 l 495 89 l 495 248 l 271 -53 l 271 517 l 225 517 l 225 -53 z', + }, + accSagittal11LargeDiesisUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 112 l 315 112 b 449 -68 405 112 449 53 l 449 -248 l 495 -248 l 495 68 b 360 248 495 187 449 248 l 135 248 b 0 68 45 248 0 187 z', + }, + accSagittal11LargeDiesisDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 360 -248 b 495 -68 449 -248 495 -187 l 495 248 l 449 248 l 449 68 b 315 -112 449 -53 405 -112 l 271 -112 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z', + }, + accSagittal35LargeDiesisUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 l 540 112 l 540 274 l 271 -58 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z', + }, + accSagittal35LargeDiesisDown: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 l 540 112 l 540 274 l 269 -58 l 269 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z', + }, + accSagittalSharp25SDown: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 b 112 -112 0 -53 36 -112 l 135 -112 l 135 -517 l 180 -517 l 180 -89 b 248 26 206 -65 229 -27 b 315 -89 264 -27 287 -65 l 315 -517 l 360 -517 l 360 -112 l 383 -112 b 495 68 458 -112 495 -53 l 449 68 b 399 -4 449 20 433 -4 b 248 248 297 -4 261 171 b 122 0 216 96 176 14 b 94 -4 112 -3 102 -4 b 45 68 60 -4 45 20 z', + }, + accSagittalFlat25SUp: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -68 b 94 4 45 -20 60 4 b 122 0 102 4 112 3 b 248 -248 176 -14 216 -96 b 399 4 261 -171 297 4 b 449 -68 433 4 449 -20 l 495 -68 b 383 112 495 53 458 112 l 360 112 l 360 517 l 315 517 l 315 89 b 248 -26 287 65 264 27 b 180 89 229 27 206 65 l 180 517 l 135 517 l 135 112 l 112 112 b 0 -68 36 112 0 53 z', + }, + accSagittalSharp7CDown: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 112 l 89 112 b 180 104 124 112 154 109 l 180 -517 l 225 -517 l 225 89 b 315 -68 285 60 315 9 l 315 -248 l 360 -248 l 360 68 b 135 248 360 187 285 248 l 0 248 z', + }, + accSagittalFlat7CUp: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 135 -248 b 360 -68 285 -248 360 -187 l 360 248 l 315 248 l 315 68 b 225 -89 315 -9 285 -60 l 225 517 l 180 517 l 180 -104 b 89 -112 154 -109 124 -112 l 45 -112 l 45 517 l 0 517 z', + }, + accSagittalSharp5CDown: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -517 l 45 71 l 180 -56 l 180 -517 l 225 -517 l 225 -98 l 405 -268 l 405 -112 l 23 248 l 0 248 l 0 -517 z', + }, + accSagittalFlat5CUp: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 517 l 0 -248 l 23 -248 l 405 112 l 405 268 l 225 98 l 225 517 l 180 517 l 180 56 l 45 -71 l 45 517 z', + }, + accSagittalSharp5v7kDown: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -112 l 0 -276 l 135 -82 l 135 -517 l 180 -517 l 180 -17 l 271 112 l 315 112 l 315 -517 l 360 -517 l 360 107 b 449 -68 420 89 449 30 l 449 -248 l 495 -248 l 495 68 b 360 248 495 189 449 248 l 248 248 z', + }, + accSagittalFlat5v7kUp: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 248 -248 l 360 -248 b 495 -68 449 -248 495 -189 l 495 248 l 449 248 l 449 68 b 360 -107 449 -30 420 -89 l 360 517 l 315 517 l 315 -112 l 271 -112 l 180 17 l 180 517 l 135 517 l 135 82 l 0 276 l 0 112 z', + }, + accSagittalSharp: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 180 -53 l 180 -517 l 225 -517 l 225 0 l 292 85 l 360 0 l 360 -517 l 405 -517 l 405 -53 l 585 -274 l 585 -112 l 292 248 l 0 -112 l 0 -274 z', + }, + accSagittalFlat: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 274 l 0 112 l 292 -248 l 585 112 l 585 274 l 405 53 l 405 517 l 360 517 l 360 0 l 292 -85 l 225 0 l 225 517 l 180 517 l 180 53 z', + }, + accSagittalSharp5v7kUp: { + x_min: 0, + x_max: 312, + y_min: -361, + y_max: 172, + ha: 533, + o: 'm 45 -517 l 45 -10 b 135 -92 68 -48 98 -75 l 135 -520 l 180 -520 l 180 -108 b 248 -115 203 -112 225 -115 b 271 -112 256 -115 264 -115 l 271 -517 l 315 -517 l 315 -107 b 449 68 405 -89 449 -30 l 405 68 b 297 -4 405 19 369 -4 b 23 248 131 -4 56 85 l 0 248 l 0 -517 z', + }, + accSagittalFlat5v7kDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 361, + ha: 533, + o: 'm 0 517 l 0 -248 l 23 -248 b 297 4 56 -85 131 4 b 405 -68 369 4 405 -19 l 449 -68 b 315 107 449 30 405 89 l 315 517 l 271 517 l 271 112 b 248 115 264 115 256 115 b 180 108 225 115 203 112 l 180 520 l 135 520 l 135 92 b 45 10 98 75 68 48 l 45 517 z', + }, + accSagittalSharp5CUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -266 l 135 -153 l 135 -517 l 180 -517 l 180 -115 l 271 -39 l 271 -517 l 315 -517 l 315 0 l 405 75 l 405 -517 l 449 -517 l 449 248 l 428 248 l 0 -112 z', + }, + accSagittalFlat5CDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 112 l 428 -248 l 449 -248 l 449 517 l 405 517 l 405 -75 l 315 0 l 315 517 l 271 517 l 271 39 l 180 115 l 180 517 l 135 517 l 135 153 l 0 266 z', + }, + accSagittalSharp7CUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 112 l 135 112 l 135 -517 l 180 -517 l 180 108 b 271 89 213 105 243 99 l 271 -517 l 315 -517 l 315 73 b 405 -68 374 45 405 -3 l 405 -248 l 449 -248 l 449 68 b 135 248 449 187 346 248 l 0 248 z', + }, + accSagittalFlat7CDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 135 -248 b 449 -68 346 -248 449 -187 l 449 248 l 405 248 l 405 68 b 315 -73 405 3 374 -45 l 315 517 l 271 517 l 271 -89 b 180 -108 243 -99 213 -105 l 180 517 l 135 517 l 135 -112 l 45 -112 l 45 517 l 0 517 z', + }, + accSagittalSharp25SUp: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -30 l 495 143 l 495 14 l 0 -157 l 0 -255 l 225 -177 l 225 -517 l 271 -517 l 271 -161 l 360 -130 l 360 -517 l 405 -517 l 405 -115 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 517 248 l 0 68 z', + }, + accSagittalFlat25SDown: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 l 517 -248 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 115 l 405 517 l 360 517 l 360 130 l 271 161 l 271 517 l 225 517 l 225 177 l 0 255 l 0 157 l 495 -14 l 495 -143 l 0 30 z', + }, + accSagittalSharp35MUp: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -112 l 0 -274 l 135 -108 l 135 -517 l 180 -517 l 180 -53 l 271 58 l 271 -517 l 315 -517 l 315 112 l 360 112 b 405 109 376 112 390 112 l 405 -517 l 449 -517 l 449 96 b 540 -68 510 72 540 17 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 z', + }, + accSagittalFlat35MDown: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 292 -248 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 449 -96 540 -17 510 -72 l 449 517 l 405 517 l 405 -109 b 360 -112 390 -112 376 -112 l 315 -112 l 315 517 l 271 517 l 271 -58 l 180 53 l 180 517 l 135 517 l 135 108 l 0 274 l 0 112 z', + }, + accSagittalSharp11MUp: { + x_min: 0, + x_max: 469, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -112 l 0 -271 l 180 -79 l 180 -517 l 225 -517 l 225 -30 l 315 65 l 315 -517 l 360 -517 l 360 65 l 449 -30 l 449 -517 l 495 -517 l 495 -79 l 675 -271 l 675 -112 l 337 248 z', + }, + accSagittalFlat11MDown: { + x_min: 0, + x_max: 469, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 337 -248 l 675 112 l 675 271 l 495 79 l 495 517 l 449 517 l 449 30 l 360 -65 l 360 517 l 315 517 l 315 -65 l 225 30 l 225 517 l 180 517 l 180 79 l 0 271 l 0 112 z', + }, + accSagittalSharp11LUp: { + x_min: 0, + x_max: 469, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 112 l 449 112 l 449 -517 l 495 -517 l 495 104 b 631 -68 585 82 631 26 l 631 -248 l 675 -248 l 675 68 b 449 248 675 187 600 248 l 225 248 b 0 68 75 248 0 187 z', + }, + accSagittalFlat11LDown: { + x_min: 0, + x_max: 469, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 449 -248 b 675 -68 600 -248 675 -187 l 675 248 l 631 248 l 631 68 b 495 -104 631 -26 585 -82 l 495 517 l 449 517 l 449 -112 l 360 -112 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z', + }, + accSagittalSharp35LUp: { + x_min: 0, + x_max: 500, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 71 l 452 -17 l 452 -517 l 495 -517 l 495 -56 l 720 -268 l 720 -112 l 337 248 l 225 248 b 0 68 75 248 0 187 z', + }, + accSagittalFlat35LDown: { + x_min: 0, + x_max: 500, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 l 720 112 l 720 268 l 495 56 l 495 517 l 452 517 l 452 17 l 360 -71 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z', + }, + accSagittalDoubleSharp25SDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 b 135 -112 0 -53 45 -112 b 243 -62 180 -112 215 -95 l 89 -503 l 143 -517 l 292 -82 l 445 -517 l 495 -503 l 343 -62 b 449 -112 372 -95 408 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 315 148 b 112 -4 274 148 236 -4 b 45 68 68 -4 45 20 z', + }, + accSagittalDoubleFlat25SUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -68 b 112 4 45 -20 68 4 b 292 -248 236 4 274 -148 b 475 4 315 -148 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 b 343 62 408 112 372 95 l 495 503 l 445 517 l 292 82 l 143 517 l 89 503 l 243 62 b 135 112 215 95 180 112 b 0 -68 45 112 0 53 z', + }, + accSagittalDoubleSharp7CDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -503 l 52 -517 l 203 -82 l 354 -517 l 405 -503 l 230 0 l 271 108 b 495 -68 420 92 495 35 l 495 -248 l 540 -248 l 540 68 b 225 248 540 187 435 248 l 89 248 l 89 112 l 135 112 l 174 0 z m 213 112 l 203 82 l 192 112 z', + }, + accSagittalDoubleFlat7CUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 174 0 l 135 -112 l 89 -112 l 89 -248 l 225 -248 b 540 -68 435 -248 540 -187 l 540 248 l 495 248 l 495 68 b 271 -108 495 -35 420 -92 l 230 0 l 405 503 l 354 517 l 203 82 l 52 517 l 0 503 z m 192 -112 l 203 -82 l 213 -112 z', + }, + accSagittalDoubleSharp5CDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 405 -503 l 230 0 l 232 4 l 585 -264 l 585 -112 l 112 248 l 89 248 l 89 112 l 151 68 l 174 0 l 0 -503 l 52 -517 l 203 -82 l 354 -517 z', + }, + accSagittalDoubleFlat5CUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 354 517 l 203 82 l 52 517 l 0 503 l 174 0 l 151 -68 l 89 -112 l 89 -248 l 112 -248 l 585 112 l 585 264 l 232 -4 l 230 0 l 405 503 z', + }, + accSagittalDoubleSharp5v7kDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -274 l 252 35 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 360 112 b 540 -68 480 112 540 53 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 l 0 -112 z', + }, + accSagittalDoubleFlat5v7kUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 112 l 292 -248 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 360 -112 540 -53 480 -112 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 252 -35 l 0 274 z', + }, + accSagittalDoubleSharp: { + x_min: 0, + x_max: 469, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 540 -503 l 366 0 l 380 45 l 675 -271 l 675 -112 l 337 248 l 0 -112 l 0 -271 l 295 45 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 z', + }, + accSagittalDoubleFlat: { + x_min: 0, + x_max: 469, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 295 -45 l 0 271 l 0 112 l 337 -248 l 675 112 l 675 271 l 380 -45 l 366 0 l 540 503 z', + }, + accSagittal7v11KleismaUp: { + x_min: 0, + x_max: 219, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 68 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 -45 b 248 -112 200 -89 225 -112 b 315 68 292 -112 315 -53 l 271 68 b 248 -4 271 20 264 -4 b 236 0 245 -4 240 -3 b 157 248 213 14 187 96 b 78 0 127 96 101 14 b 65 -4 73 -3 68 -4 b 45 68 50 -4 45 20 l 0 68 b 68 -112 0 -53 23 -112 z', + }, + accSagittal7v11KleismaDown: { + x_min: 0, + x_max: 219, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 68 112 b 0 -68 23 112 0 53 l 45 -68 b 65 4 45 -20 50 4 b 78 0 68 4 73 3 b 157 -248 101 -14 127 -96 b 236 0 187 -96 213 -14 b 248 4 240 3 245 4 b 271 -68 264 4 271 -20 l 315 -68 b 248 112 315 53 292 112 b 180 45 225 112 200 89 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 z', + }, + accSagittal17CommaUp: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 -40 b 315 -118 248 -92 279 -118 b 405 62 374 -118 405 -59 l 360 62 b 324 -10 360 14 348 -10 b 302 -6 318 -10 311 -9 b 206 217 268 9 235 84 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z', + }, + accSagittal17CommaDown: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 206 -217 b 302 6 235 -84 268 -9 b 324 10 311 9 318 10 b 360 -62 348 10 360 -14 l 405 -62 b 315 118 405 59 374 118 b 225 40 279 118 248 92 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z', + }, + accSagittal55CommaUp: { + x_min: 0, + x_max: 219, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 248 l 0 -517 l 45 -517 l 45 58 l 315 -274 l 315 -112 l 23 248 z', + }, + accSagittal55CommaDown: { + x_min: 0, + x_max: 219, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 23 -248 l 315 112 l 315 274 l 45 -58 l 45 517 l 0 517 l 0 -248 z', + }, + accSagittal7v11CommaUp: { + x_min: 0, + x_max: 188, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 248 l 135 248 b 0 68 45 248 0 187 z', + }, + accSagittal7v11CommaDown: { + x_min: 0, + x_max: 188, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 271 -248 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z', + }, + accSagittal5v11SmallDiesisUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 73 l 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 -40 b 360 -118 295 -92 325 -118 b 449 62 420 -118 449 -59 l 405 62 b 369 -10 405 14 393 -10 b 348 -6 363 -10 356 -9 b 251 217 312 9 279 84 l 248 248 l 135 248 b 0 73 45 248 0 189 z', + }, + accSagittal5v11SmallDiesisDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -73 b 135 -248 0 -189 45 -248 l 248 -248 l 251 -217 b 348 6 279 -84 312 -9 b 369 10 356 9 363 10 b 405 -62 393 10 405 -14 l 449 -62 b 360 118 449 59 420 118 b 271 40 325 118 295 92 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z', + }, + accSagittalSharp5v11SDown: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 242 37 203 -23 225 -3 b 315 -89 262 -23 285 -63 l 315 -517 l 360 -517 l 360 -112 l 383 -112 b 495 68 458 -112 495 -53 l 449 68 b 399 -4 449 20 433 -4 b 248 248 297 -4 261 171 b 157 68 222 127 192 68 l 89 68 b 0 -203 30 68 0 -23 z', + }, + accSagittalFlat5v11SUp: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -127 b 399 4 261 -171 297 4 b 449 -68 433 4 449 -20 l 495 -68 b 383 112 495 53 458 112 l 360 112 l 360 517 l 315 517 l 315 89 b 242 -37 285 63 262 23 b 180 23 225 3 203 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z', + }, + accSagittalSharp7v11CDown: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 89 -112 l 89 -517 l 135 -517 l 135 -95 b 206 37 163 -73 187 -30 b 271 -23 225 -3 248 -23 l 271 -517 l 315 -517 l 315 -23 l 383 -23 b 449 -203 428 -23 449 -84 l 495 -203 b 405 68 495 -23 465 68 l 292 68 b 203 248 258 68 228 127 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 20 l 0 68 b 89 -112 0 -52 30 -112 z', + }, + accSagittalFlat7v11CUp: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 89 112 b 0 -68 30 112 0 52 l 45 -68 b 81 3 45 -20 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 b 292 -68 228 -127 258 -68 l 405 -68 b 495 203 465 -68 495 23 l 449 203 b 383 23 449 84 428 23 l 315 23 l 315 517 l 271 517 l 271 23 b 206 -37 248 23 225 3 b 135 95 187 30 163 73 l 135 517 l 89 517 z', + }, + accSagittalSharp55CDown: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -271 l 135 -125 l 135 -517 l 180 -517 l 180 -78 l 315 65 l 315 -517 l 360 -517 l 360 248 l 337 248 l 0 -112 z', + }, + accSagittalFlat55CUp: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 112 l 337 -248 l 360 -248 l 360 517 l 315 517 l 315 -65 l 180 78 l 180 517 l 135 517 l 135 125 l 0 271 z', + }, + accSagittalSharp17CDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -248 l 45 -68 b 180 109 45 36 89 95 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -89 292 13 321 -55 l 360 -517 l 405 -517 l 405 -112 l 428 -112 b 540 68 504 -112 540 -53 l 495 68 b 445 -4 495 20 480 -4 b 292 248 343 -4 307 171 l 180 248 b 0 68 60 248 0 187 l 0 -248 z', + }, + accSagittalFlat17CUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 248 l 0 -68 b 180 -248 0 -187 60 -248 l 292 -248 b 445 4 307 -171 343 4 b 495 -68 480 4 495 -20 l 540 -68 b 428 112 540 53 504 112 l 405 112 l 405 517 l 360 517 l 360 89 b 271 -112 321 55 292 -13 l 225 -112 l 225 517 l 180 517 l 180 -109 b 45 68 89 -95 45 -36 l 45 248 z', + }, + accSagittalSharp7v11kDown: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -32 l 405 138 l 405 13 l 0 -157 l 0 -256 l 225 -161 l 225 -517 l 271 -517 l 271 -144 l 405 -86 l 405 -517 l 449 -517 l 449 248 l 428 248 l 0 68 z', + }, + accSagittalFlat7v11kUp: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 l 428 -248 l 449 -248 l 449 517 l 405 517 l 405 86 l 271 144 l 271 517 l 225 517 l 225 161 l 0 256 l 0 157 l 405 -13 l 405 -138 l 0 32 z', + }, + accSagittalSharp7v11kUp: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 135 -112 l 135 -517 l 180 -517 l 180 -105 b 271 -23 217 -94 248 -65 l 271 -517 l 315 -517 l 315 -23 b 405 -105 337 -65 369 -94 l 405 -517 l 449 -517 l 449 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 315 148 b 112 -4 274 148 236 -4 b 45 68 68 -4 45 20 l 0 68 b 135 -112 0 -53 45 -112 z', + }, + accSagittalFlat7v11kDown: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 135 112 b 0 -68 45 112 0 53 l 45 -68 b 112 4 45 -20 68 4 b 292 -248 236 4 274 -148 b 475 4 315 -148 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 l 449 517 l 405 517 l 405 105 b 315 23 369 94 337 65 l 315 517 l 271 517 l 271 23 b 180 105 248 65 217 94 l 180 517 l 135 517 z', + }, + accSagittalSharp17CUp: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 -23 b 405 -105 337 -65 369 -94 l 405 -517 l 449 -517 l 449 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 312 150 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z', + }, + accSagittalFlat17CDown: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 b 475 4 312 -150 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 l 449 517 l 405 517 l 405 105 b 315 23 369 94 337 65 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalSharp55CUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -517 l 45 78 l 135 10 l 135 -517 l 180 -517 l 180 -23 l 271 -92 l 271 -517 l 315 -517 l 315 -127 l 495 -264 l 495 -112 l 23 248 l 0 248 l 0 -517 z', + }, + accSagittalFlat55CDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 517 l 0 -248 l 23 -248 l 495 112 l 495 264 l 315 127 l 315 517 l 271 517 l 271 92 l 180 23 l 180 517 l 135 517 l 135 -10 l 45 -78 l 45 517 z', + }, + accSagittalSharp7v11CUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 86 45 6 89 58 l 180 -517 l 225 -517 l 225 98 b 315 109 252 104 282 108 l 315 -517 l 360 -517 l 360 112 l 449 112 l 449 -517 l 495 -517 l 495 248 l 360 248 b 0 68 121 248 0 189 z', + }, + accSagittalFlat7v11CDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 360 -248 0 -189 121 -248 l 495 -248 l 495 517 l 449 517 l 449 -112 l 360 -112 l 360 517 l 315 517 l 315 -109 b 225 -98 282 -108 252 -104 l 225 517 l 180 517 l 180 -86 b 45 68 89 -58 45 -6 l 45 248 l 0 248 z', + }, + accSagittalSharp5v11SUp: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 -23 b 449 -105 383 -65 415 -94 l 449 -517 l 495 -517 l 495 -112 b 631 68 585 -112 631 -53 l 585 68 b 520 -4 585 20 563 -4 b 337 248 396 -4 360 150 l 225 248 b 0 68 76 248 0 187 z', + }, + accSagittalFlat5v11SDown: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 225 -248 0 -187 76 -248 l 337 -248 b 520 4 360 -150 396 4 b 585 -68 563 4 585 -20 l 631 -68 b 495 112 631 53 585 112 l 495 517 l 449 517 l 449 105 b 360 23 415 94 383 65 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z', + }, + accSagittalDoubleSharp5v11SDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 341 -60 b 449 -112 370 -95 405 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 312 150 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z', + }, + accSagittalDoubleFlat5v11SUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 b 475 4 312 -150 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 b 341 60 405 112 370 95 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalDoubleSharp7v11CDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 112 -112 b 193 -73 143 -112 170 -99 l 45 -501 l 95 -517 l 248 -81 l 397 -517 l 449 -503 l 275 0 l 278 4 b 337 -23 295 -13 315 -23 l 405 -23 b 495 -203 465 -23 495 -84 l 540 -203 b 428 68 540 -23 503 68 l 360 68 b 248 248 310 68 271 127 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 112 -112 0 -52 36 -112 z', + }, + accSagittalDoubleFlat7v11CUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 112 112 b 0 -68 36 112 0 52 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 b 360 -68 271 -127 310 -68 l 428 -68 b 540 203 503 -68 540 23 l 495 203 b 405 23 495 84 465 23 l 337 23 b 278 -4 315 23 295 13 l 275 0 l 449 503 l 397 517 l 248 81 l 95 517 l 45 501 l 193 73 b 112 112 170 99 143 112 z', + }, + accSagittalDoubleSharp55CDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 428 248 l 0 -112 l 0 -266 l 307 -7 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 386 59 l 449 112 l 449 248 z', + }, + accSagittalDoubleFlat55CUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 449 -248 l 449 -112 l 386 -59 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 307 7 l 0 266 l 0 112 l 428 -248 z', + }, + accSagittalDoubleSharp17CDown: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -248 l 45 -68 b 271 112 45 53 120 112 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 387 -62 b 495 -112 416 -95 452 -112 b 631 68 585 -112 631 -53 l 585 68 b 520 -4 585 20 563 -4 b 337 248 396 -4 360 150 l 225 248 b 0 68 76 248 0 187 l 0 -248 z', + }, + accSagittalDoubleFlat17CUp: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 248 l 0 -68 b 225 -248 0 -187 76 -248 l 337 -248 b 520 4 360 -150 396 4 b 585 -68 563 4 585 -20 l 631 -68 b 495 112 631 53 585 112 b 387 62 452 112 416 95 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 271 -112 b 45 68 120 -112 45 -53 l 45 248 z', + }, + accSagittalDoubleSharp7v11kDown: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 l 0 -30 l 366 96 l 399 0 l 392 -23 l 0 -157 l 0 -255 l 353 -135 l 225 -503 l 276 -517 l 428 -82 l 579 -517 l 631 -503 l 455 0 l 507 145 l 540 157 l 540 248 l 517 248 z m 416 115 l 442 124 l 428 82 z', + }, + accSagittalDoubleFlat7v11kUp: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 517 -248 l 540 -248 l 540 -157 l 507 -145 l 455 0 l 631 503 l 579 517 l 428 82 l 276 517 l 225 503 l 353 135 l 0 255 l 0 157 l 392 23 l 399 0 l 366 -96 l 0 30 l 0 -68 z m 428 -82 l 442 -124 l 416 -115 z', + }, + accSagittal23CommaUp: { + x_min: 0, + x_max: 188, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 -4 b 68 -23 53 -17 60 -23 l 180 -23 b 225 -203 210 -23 225 -82 l 271 -203 b 206 68 271 -23 248 68 l 89 68 b 23 248 71 68 48 127 l 0 248 z', + }, + accSagittal23CommaDown: { + x_min: 0, + x_max: 188, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 23 -248 b 89 -68 48 -127 71 -68 l 206 -68 b 271 203 248 -68 271 23 l 225 203 b 180 23 225 82 210 23 l 68 23 b 45 4 60 23 53 17 l 45 517 l 0 517 z', + }, + accSagittal5v19CommaUp: { + x_min: 0, + x_max: 156, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 248 l 203 248 b 86 112 151 157 112 112 b 45 157 59 112 45 127 l 0 157 b 76 23 0 72 26 27 l 0 -112 z', + }, + accSagittal5v19CommaDown: { + x_min: 0, + x_max: 156, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 112 l 76 -23 b 0 -157 26 -27 0 -72 l 45 -157 b 86 -112 45 -127 59 -112 b 203 -248 112 -112 151 -157 l 225 -248 l 225 517 l 180 517 l 180 -33 l 0 284 z', + }, + accSagittal5v23SmallDiesisUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 -4 b 248 -23 233 -17 240 -23 l 360 -23 b 405 -203 390 -23 405 -82 l 449 -203 b 386 68 449 -23 428 68 l 271 68 b 203 248 251 68 228 127 l 0 -112 z', + }, + accSagittal5v23SmallDiesisDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 112 l 203 -248 b 271 -68 228 -127 251 -68 l 386 -68 b 449 203 428 -68 449 23 l 405 203 b 360 23 405 82 390 23 l 248 23 b 225 4 240 23 233 17 l 225 517 l 180 517 l 180 -33 l 0 284 z', + }, + accSagittalSharp5v23SDown: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 6 b 89 -23 59 -13 73 -23 l 180 -23 l 180 -517 l 225 -517 l 225 -23 l 292 -23 b 360 -203 337 -23 360 -84 l 405 -203 b 315 68 405 -23 374 68 l 112 68 b 23 248 78 68 48 127 l 0 248 z', + }, + accSagittalFlat5v23SUp: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 23 -248 b 112 -68 48 -127 78 -68 l 315 -68 b 405 203 374 -68 405 23 l 360 203 b 292 23 360 84 337 23 l 225 23 l 225 517 l 180 517 l 180 23 l 89 23 b 45 -6 73 23 59 13 l 45 517 l 0 517 z', + }, + accSagittalSharp5v19CDown: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 b 89 -112 0 -52 30 -112 l 89 -517 l 135 -517 l 135 -95 b 225 112 173 -65 203 4 l 271 112 l 271 -517 l 315 -517 l 315 107 b 405 -68 374 89 405 30 l 405 -248 l 449 -248 l 449 68 b 315 248 449 189 405 248 l 203 248 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 23 z', + }, + accSagittalFlat5v19CUp: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -68 b 81 3 45 -23 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 l 315 -248 b 449 -68 405 -248 449 -189 l 449 248 l 405 248 l 405 68 b 315 -107 405 -30 374 -89 l 315 517 l 271 517 l 271 -112 l 225 -112 b 135 95 203 -4 173 65 l 135 517 l 89 517 l 89 112 b 0 -68 30 112 0 52 z', + }, + accSagittalSharp23CDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 135 -82 l 135 -517 l 180 -517 l 180 -17 l 239 68 b 315 -23 261 7 287 -23 l 315 -517 l 360 -517 l 360 -23 l 428 -23 b 495 -203 472 -23 495 -84 l 540 -203 b 449 68 540 -23 510 68 l 337 68 b 248 248 302 68 271 127 l 0 -112 l 0 -276 z', + }, + accSagittalFlat23CUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 276 l 0 112 l 248 -248 b 337 -68 271 -127 302 -68 l 449 -68 b 540 203 510 -68 540 23 l 495 203 b 428 23 495 84 472 23 l 360 23 l 360 517 l 315 517 l 315 23 b 239 -68 287 23 261 -7 l 180 17 l 180 517 l 135 517 l 135 82 z', + }, + accSagittalSharp23CUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 14 b 112 -23 63 -10 86 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 360 -23 b 449 -203 420 -23 449 -84 l 495 -203 b 383 68 495 -23 458 68 l 135 68 b 23 248 85 68 48 127 l 0 248 z', + }, + accSagittalFlat23CDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 23 -248 b 135 -68 48 -127 85 -68 l 383 -68 b 495 203 458 -68 495 23 l 449 203 b 360 23 449 84 420 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 -14 86 23 63 10 l 45 517 l 0 517 z', + }, + accSagittalSharp5v19CUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -112 l 0 -266 l 135 -153 l 135 -517 l 180 -517 l 180 -115 l 271 -39 l 271 -517 l 315 -517 l 315 0 l 405 75 l 405 -517 l 449 -517 l 449 248 l 428 248 b 130 68 285 127 186 68 b 45 157 73 68 45 98 l 0 157 b 112 -20 0 53 37 -6 z', + }, + accSagittalFlat5v19CDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 112 20 b 0 -157 37 6 0 -53 l 45 -157 b 130 -68 45 -98 73 -68 b 428 -248 186 -68 285 -127 l 449 -248 l 449 517 l 405 517 l 405 -75 l 315 0 l 315 517 l 271 517 l 271 39 l 180 115 l 180 517 l 135 517 l 135 153 l 0 266 l 0 112 z', + }, + accSagittalSharp5v23SUp: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 135 -108 l 135 -517 l 180 -517 l 180 -53 l 271 58 l 271 -517 l 315 -517 l 315 14 b 383 -23 334 -10 357 -23 l 405 -23 l 405 -517 l 449 -517 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 405 68 b 292 248 356 68 318 127 l 0 -112 l 0 -274 z', + }, + accSagittalFlat5v23SDown: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 274 l 0 112 l 292 -248 b 405 -68 318 -127 356 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 449 517 l 405 517 l 405 23 l 383 23 b 315 -14 357 23 334 10 l 315 517 l 271 517 l 271 -58 l 180 53 l 180 517 l 135 517 l 135 108 z', + }, + accSagittalDoubleSharp5v23SDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 52 -517 l 203 -81 l 354 -517 l 405 -503 l 239 -23 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 225 68 b 112 248 176 68 138 127 l 89 248 l 89 112 b 170 -14 109 45 135 0 l 0 -501 z', + }, + accSagittalDoubleFlat5v23SUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 501 l 170 14 b 89 -112 135 0 109 -45 l 89 -248 l 112 -248 b 225 -68 138 -127 176 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 239 23 l 405 503 l 354 517 l 203 81 l 52 517 z', + }, + accSagittalDoubleSharp5v19CDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 b 112 -112 0 -52 36 -112 b 193 -73 143 -112 170 -99 l 45 -501 l 95 -517 l 248 -81 l 397 -517 l 449 -501 l 275 0 l 315 112 b 495 -68 435 112 495 53 l 495 -248 l 540 -248 l 540 68 b 360 248 540 189 480 248 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 z', + }, + accSagittalDoubleFlat5v19CUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 360 -248 b 540 -68 480 -248 540 -189 l 540 248 l 495 248 l 495 68 b 315 -112 495 -53 435 -112 l 275 0 l 449 501 l 397 517 l 248 81 l 95 517 l 45 501 l 193 73 b 112 112 170 99 143 112 b 0 -68 36 112 0 52 z', + }, + accSagittalDoubleSharp23CDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 252 35 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 323 4 b 383 -23 340 -13 360 -23 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 405 68 b 292 248 356 68 318 127 l 0 -112 l 0 -274 z', + }, + accSagittalDoubleFlat23CUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 274 l 0 112 l 292 -248 b 405 -68 318 -127 356 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 383 23 b 323 -4 360 23 340 13 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 252 -35 z', + }, + accSagittal19SchismaUp: { + x_min: 0, + x_max: 125, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 68 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 248 l 157 248 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 l 0 68 b 68 -112 0 -52 23 -112 z', + }, + accSagittal19SchismaDown: { + x_min: 0, + x_max: 125, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 68 112 b 0 -68 23 112 0 52 l 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 l 180 -248 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 z', + }, + accSagittal17KleismaUp: { + x_min: 0, + x_max: 156, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 248 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z', + }, + accSagittal17KleismaDown: { + x_min: 0, + x_max: 156, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 225 -248 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z', + }, + accSagittal143CommaUp: { + x_min: 0, + x_max: 156, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -203 l 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 248 l 203 248 b 135 68 177 127 154 68 l 105 68 b 45 157 65 68 45 98 l 0 157 b 23 20 0 95 7 50 b 0 -203 7 -23 0 -98 z', + }, + accSagittal143CommaDown: { + x_min: 0, + x_max: 156, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 23 -20 0 98 7 23 b 0 -157 7 -50 0 -95 l 45 -157 b 105 -68 45 -98 65 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 225 -248 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z', + }, + accSagittal11v49CommaUp: { + x_min: 0, + x_max: 188, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -292 b 89 -157 45 -203 60 -157 l 203 -157 b 225 -143 210 -157 217 -153 l 225 -517 l 271 -517 l 271 248 l 248 248 b 180 157 233 187 210 157 l 68 157 b 0 -68 23 157 0 82 l 45 -68 b 89 68 45 23 60 68 l 203 68 b 225 84 209 68 216 72 l 225 -36 b 180 -68 213 -58 199 -68 l 68 -68 b 0 -292 23 -68 0 -143 z', + }, + accSagittal11v49CommaDown: { + x_min: 0, + x_max: 188, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 292 b 68 68 0 143 23 68 l 180 68 b 225 36 199 68 213 58 l 225 -84 b 203 -68 216 -72 209 -68 l 89 -68 b 45 68 60 -68 45 -23 l 0 68 b 68 -157 0 -82 23 -157 l 180 -157 b 248 -248 210 -157 233 -187 l 271 -248 l 271 517 l 225 517 l 225 143 b 203 157 217 153 210 157 l 89 157 b 45 292 60 157 45 203 z', + }, + accSagittal19CommaUp: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 b 68 -112 0 -52 23 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 -4 b 203 -23 187 -17 196 -23 l 315 -23 b 360 -203 346 -23 360 -82 l 405 -203 b 341 68 405 -23 383 68 l 225 68 b 157 248 206 68 183 127 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 z', + }, + accSagittal19CommaDown: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 b 225 -68 183 -127 206 -68 l 341 -68 b 405 203 383 -68 405 23 l 360 203 b 315 23 360 82 346 23 l 203 23 b 180 4 196 23 187 17 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 b 0 -68 23 112 0 52 z', + }, + accSagittal7v19CommaUp: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 b 68 -112 0 -52 23 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 112 l 225 112 b 315 -68 285 112 315 53 l 315 -248 l 360 -248 l 360 68 b 271 248 360 187 330 248 l 157 248 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 z', + }, + accSagittal7v19CommaDown: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 l 271 -248 b 360 -68 330 -248 360 -187 l 360 248 l 315 248 l 315 68 b 225 -112 315 -53 285 -112 l 180 -112 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 b 0 -68 23 112 0 52 z', + }, + accSagittal49SmallDiesisUp: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -203 l 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -68 330 112 360 53 l 360 -248 l 405 -248 l 405 68 b 315 248 405 187 374 248 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z', + }, + accSagittal49SmallDiesisDown: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 315 -248 b 405 -68 374 -248 405 -187 l 405 248 l 360 248 l 360 68 b 271 -112 360 -53 330 -112 l 225 -112 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z', + }, + accSagittal23SmallDiesisUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 58 l 495 -274 l 495 -112 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z', + }, + accSagittal23SmallDiesisDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 495 112 l 495 274 l 225 -58 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z', + }, + accSagittal5v13MediumDiesisUp: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -259 l 315 -89 l 315 -517 l 360 -517 l 360 248 l 337 248 b 128 180 253 203 184 180 b 45 248 73 180 45 203 l 0 248 b 52 95 0 170 17 120 l 0 68 l 0 -33 l 315 135 l 315 10 l 0 -157 z', + }, + accSagittal5v13MediumDiesisDown: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 157 l 315 -10 l 315 -135 l 0 33 l 0 -68 l 52 -95 b 0 -248 17 -120 0 -170 l 45 -248 b 128 -180 45 -203 73 -180 b 337 -248 184 -180 253 -203 l 360 -248 l 360 517 l 315 517 l 315 89 l 0 259 z', + }, + accSagittal11v19MediumDiesisUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 -4 b 292 -23 278 -17 285 -23 l 405 -23 b 449 -203 435 -23 449 -82 l 495 -203 b 431 68 495 -23 472 68 l 315 68 b 248 248 295 68 271 127 l 135 248 b 0 68 45 248 0 187 l 0 -248 z', + }, + accSagittal11v19MediumDiesisDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 248 l 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 b 315 -68 271 -127 295 -68 l 431 -68 b 495 203 472 -68 495 23 l 449 203 b 405 23 449 82 435 23 l 292 23 b 271 4 285 23 278 17 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 z', + }, + accSagittal49MediumDiesisUp: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -68 l 0 -248 l 45 -248 l 315 -94 l 315 -517 l 360 -517 l 360 248 l 225 248 b 0 -68 75 248 0 143 z m 45 -68 b 225 112 45 53 105 112 l 315 112 l 315 10 l 45 -145 z', + }, + accSagittal49MediumDiesisDown: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 68 b 225 -248 0 -143 75 -248 l 360 -248 l 360 517 l 315 517 l 315 94 l 45 248 l 0 248 z m 45 145 l 315 -10 l 315 -112 l 225 -112 b 45 68 105 -112 45 -53 z', + }, + accSagittal5v49MediumDiesisUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -89 l 0 -248 l 225 53 l 225 -517 l 271 -517 l 271 53 l 495 -248 l 495 -89 l 248 248 b 89 89 170 143 118 89 b 45 157 60 89 45 112 l 0 157 b 68 3 0 68 23 16 z', + }, + accSagittal5v49MediumDiesisDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 68 -3 b 0 -157 23 -16 0 -68 l 45 -157 b 89 -89 45 -112 60 -89 b 248 -248 118 -89 170 -143 l 495 89 l 495 248 l 271 -53 l 271 517 l 225 517 l 225 -53 l 0 248 l 0 89 z', + }, + accSagittal49LargeDiesisUp: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 -89 l 360 -248 l 405 -248 l 405 -68 b 180 248 405 143 330 248 l 0 248 z m 45 12 l 45 112 l 180 112 b 360 -68 300 112 360 53 l 360 -147 z', + }, + accSagittal49LargeDiesisDown: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 180 -248 b 405 68 330 -248 405 -143 l 405 248 l 360 248 l 45 89 l 45 517 l 0 517 z m 360 147 l 360 68 b 180 -112 360 -53 300 -112 l 45 -112 l 45 -12 z', + }, + accSagittal11v19LargeDiesisUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 -86 l 449 -256 l 449 -157 l 45 13 l 45 138 l 449 -30 l 449 68 l 23 248 l 0 248 z', + }, + accSagittal11v19LargeDiesisDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 23 -248 l 449 -68 l 449 30 l 45 -138 l 45 -13 l 449 157 l 449 256 l 45 86 l 45 517 l 0 517 z', + }, + accSagittal5v13LargeDiesisUp: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 b 89 -112 0 -52 30 -112 b 180 -35 125 -112 157 -86 l 180 -517 l 225 -517 l 225 -86 l 631 -256 l 631 -157 l 225 13 l 225 138 l 631 -30 l 631 68 l 203 248 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 20 z', + }, + accSagittal5v13LargeDiesisDown: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -68 b 81 3 45 -20 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 l 631 -68 l 631 30 l 225 -138 l 225 -13 l 631 157 l 631 256 l 225 86 l 225 517 l 180 517 l 180 35 b 89 112 157 86 125 112 b 0 -68 30 112 0 52 z', + }, + accSagittalSharp23SDown: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -203 l 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 b 315 6 287 -23 301 -13 l 315 -517 l 360 -517 l 360 248 l 337 248 b 248 68 312 127 282 68 l 194 68 b 89 157 125 68 89 98 l 45 157 b 60 59 45 118 50 85 b 0 -203 20 30 0 -56 z', + }, + accSagittalFlat23SUp: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 60 -59 0 56 20 -30 b 45 -157 50 -85 45 -118 l 89 -157 b 194 -68 89 -98 125 -68 l 248 -68 b 337 -248 282 -68 312 -127 l 360 -248 l 360 517 l 315 517 l 315 -6 b 271 23 301 13 287 23 l 180 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z', + }, + accSagittalSharp49SDown: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -292 l 45 -292 b 112 -157 45 -203 68 -157 l 135 -157 l 135 -517 l 180 -517 l 180 -157 l 271 -157 b 315 -135 285 -157 300 -150 l 315 -517 l 360 -517 l 360 248 l 337 248 b 248 157 323 187 292 157 l 89 157 b 0 -68 30 157 0 82 l 45 -68 b 112 68 45 23 68 68 l 271 68 b 315 89 284 68 300 75 l 315 -32 b 248 -68 298 -56 275 -68 l 89 -68 b 0 -292 29 -68 0 -143 z', + }, + accSagittalFlat49SUp: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 292 b 89 68 0 143 29 68 l 248 68 b 315 32 275 68 298 56 l 315 -89 b 271 -68 300 -75 284 -68 l 112 -68 b 45 68 68 -68 45 -23 l 0 68 b 89 -157 0 -82 30 -157 l 248 -157 b 337 -248 292 -157 323 -187 l 360 -248 l 360 517 l 315 517 l 315 135 b 271 157 300 150 285 157 l 180 157 l 180 517 l 135 517 l 135 157 l 112 157 b 45 292 68 157 45 203 z', + }, + accSagittalSharp7v19CDown: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -112 l 0 -271 l 135 -125 l 135 -517 l 180 -517 l 180 -78 l 315 65 l 315 -517 l 360 -517 l 360 248 l 337 248 b 118 89 239 143 166 89 b 45 157 68 89 45 112 l 0 157 b 89 -20 0 53 29 -6 z', + }, + accSagittalFlat7v19CUp: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 89 20 b 0 -157 29 6 0 -53 l 45 -157 b 118 -89 45 -112 68 -89 b 337 -248 166 -89 239 -143 l 360 -248 l 360 517 l 315 517 l 315 -65 l 180 78 l 180 517 l 135 517 l 135 125 l 0 271 l 0 112 z', + }, + accSagittalSharp19CDown: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -248 l 45 -248 l 45 -68 b 180 96 45 17 89 72 l 180 -517 l 225 -517 l 225 107 b 315 112 252 112 282 112 l 360 112 l 360 -517 l 405 -517 l 405 248 l 271 248 b 0 68 89 248 0 187 z', + }, + accSagittalFlat19CUp: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 271 -248 0 -187 89 -248 l 405 -248 l 405 517 l 360 517 l 360 -112 l 315 -112 b 225 -107 282 -112 252 -112 l 225 517 l 180 517 l 180 -96 b 45 68 89 -72 45 -17 l 45 248 l 0 248 z', + }, + accSagittalSharp11v49CDown: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 112 -23 45 -82 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 271 112 215 -23 245 23 l 315 112 l 315 -517 l 360 -517 l 360 107 b 449 -68 420 89 449 30 l 449 -248 l 495 -248 l 495 68 b 360 248 495 189 449 248 l 248 248 b 157 68 222 128 192 68 l 89 68 b 0 -203 30 68 0 -23 z', + }, + accSagittalFlat11v49CUp: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -128 l 360 -248 b 495 -68 449 -248 495 -189 l 495 248 l 449 248 l 449 68 b 360 -107 449 -30 420 -89 l 360 517 l 315 517 l 315 -112 l 271 -112 b 180 23 245 -23 215 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 82 z', + }, + accSagittalSharp143CDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 259 76 210 -23 236 10 l 315 17 l 315 -517 l 360 -517 l 360 -30 l 585 -271 l 585 -112 l 248 248 b 157 68 222 127 192 68 l 89 68 b 0 -203 30 68 0 -23 z', + }, + accSagittalFlat143CUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -127 l 585 112 l 585 271 l 360 30 l 360 517 l 315 517 l 315 -17 l 259 -76 b 180 23 236 -10 210 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z', + }, + accSagittalSharp17kDown: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -157 l 0 -256 l 225 -161 l 225 -517 l 271 -517 l 271 -144 l 405 -86 l 405 -517 l 449 -517 l 449 248 l 428 248 b 145 171 305 196 210 171 b 45 248 78 171 45 196 l 0 248 b 79 101 0 170 26 121 l 0 68 l 0 -32 l 405 138 l 405 13 z', + }, + accSagittalFlat17kUp: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 405 -13 l 405 -138 l 0 32 l 0 -68 l 79 -101 b 0 -248 26 -121 0 -170 l 45 -248 b 145 -171 45 -196 78 -171 b 428 -248 210 -171 305 -196 l 449 -248 l 449 517 l 405 517 l 405 86 l 271 144 l 271 517 l 225 517 l 225 161 l 0 256 l 0 157 z', + }, + accSagittalSharp19sDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -248 l 45 -248 l 45 -68 b 180 109 45 36 89 95 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -23 295 23 325 -23 l 360 -517 l 405 -517 l 405 -23 l 472 -23 b 540 -203 517 -23 540 -84 l 585 -203 b 495 68 585 -23 554 68 l 383 68 b 292 248 348 68 318 127 l 180 248 b 0 68 60 248 0 187 z', + }, + accSagittalFlat19sUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 180 -248 0 -187 60 -248 l 292 -248 b 383 -68 318 -127 348 -68 l 495 -68 b 585 203 554 -68 585 23 l 540 203 b 472 23 540 84 517 23 l 405 23 l 405 517 l 360 517 l 360 23 b 271 -112 325 23 295 -23 l 225 -112 l 225 517 l 180 517 l 180 -109 b 45 68 89 -95 45 -36 l 45 248 l 0 248 z', + }, + accSagittalSharp19sUp: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 89 -96 l 89 -517 l 135 -517 l 135 -108 b 180 -112 148 -112 163 -112 b 225 -108 196 -112 210 -112 l 225 -517 l 271 -517 l 271 -94 b 360 -12 305 -78 337 -50 l 360 -517 l 405 -517 l 405 248 l 383 248 b 190 0 353 98 288 16 b 138 -3 171 0 153 -3 b 45 68 75 -3 45 20 l 0 68 b 89 -96 0 -17 30 -72 z', + }, + accSagittalFlat19sDown: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 89 96 b 0 -68 30 72 0 17 l 45 -68 b 138 3 45 -20 75 3 b 190 0 153 3 171 0 b 383 -248 288 -16 353 -98 l 405 -248 l 405 517 l 360 517 l 360 12 b 271 94 337 50 305 78 l 271 517 l 225 517 l 225 108 b 180 112 210 112 196 112 b 135 108 163 112 148 112 l 135 517 l 89 517 z', + }, + accSagittalSharp17kUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 337 -23 b 405 14 363 -23 386 -10 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 68 402 127 364 68 l 112 68 b 0 -203 37 68 0 -23 z', + }, + accSagittalFlat17kDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 112 -68 0 23 37 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 517 l 405 517 l 405 -14 b 337 23 386 10 363 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalSharp143CUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 337 -23 b 405 14 363 -23 386 -10 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 68 402 127 364 68 l 240 68 b 89 157 140 68 89 98 l 45 157 b 68 53 45 115 52 81 b 0 -203 23 23 0 -63 z', + }, + accSagittalFlat143CDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 68 -53 0 63 23 -23 b 45 -157 52 -81 45 -115 l 89 -157 b 240 -68 89 -98 140 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 517 l 405 517 l 405 -14 b 337 23 386 10 363 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalSharp11v49CUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -68 b 135 68 45 23 76 68 l 337 68 b 405 95 363 68 386 76 l 405 -27 b 315 -68 386 -55 356 -68 l 112 -68 b 0 -292 37 -68 0 -143 l 45 -292 b 135 -157 45 -203 75 -157 l 135 -517 l 180 -517 l 180 -157 l 271 -157 l 271 -517 l 315 -517 l 315 -157 l 337 -157 b 405 -130 360 -157 383 -148 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 157 413 187 376 157 l 112 157 b 0 -68 37 157 0 82 z', + }, + accSagittalFlat11v49CDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 68 b 112 -157 0 -82 37 -157 l 315 -157 b 428 -248 376 -157 413 -187 l 449 -248 l 449 517 l 405 517 l 405 130 b 337 157 383 148 360 157 l 315 157 l 315 517 l 271 517 l 271 157 l 180 157 l 180 517 l 135 517 l 135 157 b 45 292 75 157 45 203 l 0 292 b 112 68 0 143 37 68 l 315 68 b 405 27 356 68 386 55 l 405 -95 b 337 -68 386 -76 363 -68 l 135 -68 b 45 68 76 -68 45 -23 z', + }, + accSagittalSharp19CUp: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 14 b 337 -23 289 -10 311 -23 l 360 -23 l 360 -517 l 405 -517 l 405 -23 b 495 -203 465 -23 495 -82 l 540 -203 b 428 68 540 -23 503 68 l 360 68 b 248 248 310 68 271 128 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z', + }, + accSagittalFlat19CDown: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 b 360 -68 271 -128 310 -68 l 428 -68 b 540 203 503 -68 540 23 l 495 203 b 405 23 495 82 465 23 l 405 517 l 360 517 l 360 23 l 337 23 b 271 -14 311 23 289 10 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z', + }, + accSagittalSharp7v19CUp: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 112 l 315 112 b 360 109 331 112 346 112 l 360 -517 l 405 -517 l 405 98 b 495 -68 465 73 495 19 l 495 -248 l 540 -248 l 540 68 b 360 248 540 189 480 248 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z', + }, + accSagittalFlat7v19CDown: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 360 -248 b 540 -68 480 -248 540 -189 l 540 248 l 495 248 l 495 68 b 405 -98 495 -19 465 -73 l 405 517 l 360 517 l 360 -109 b 315 -112 346 -112 331 -112 l 271 -112 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z', + }, + accSagittalSharp49SUp: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 112 l 360 112 b 405 109 376 112 390 112 l 405 -517 l 449 -517 l 449 96 b 540 -68 510 72 540 17 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z', + }, + accSagittalFlat49SDown: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 449 -96 540 -17 510 -72 l 449 517 l 405 517 l 405 -109 b 360 -112 390 -112 376 -112 l 315 -112 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalSharp23SUp: { + x_min: 0, + x_max: 469, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 71 l 405 -14 l 405 -517 l 449 -517 l 449 -56 l 675 -268 l 675 -112 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z', + }, + accSagittalFlat23SDown: { + x_min: 0, + x_max: 469, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 675 112 l 675 268 l 449 56 l 449 517 l 405 517 l 405 14 l 315 -71 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalSharp5v13MUp: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 495 141 l 495 14 l 0 -157 l 0 -256 l 225 -180 l 225 -517 l 271 -517 l 271 -161 l 360 -130 l 360 -517 l 405 -517 l 405 -115 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 517 248 b 167 168 366 194 248 168 b 45 248 85 168 45 194 l 0 248 b 95 99 0 170 30 120 l 0 68 l 0 -30 z', + }, + accSagittalFlat5v13MDown: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 30 l 0 -68 l 95 -99 b 0 -248 30 -120 0 -170 l 45 -248 b 167 -168 45 -194 85 -168 b 517 -248 248 -168 366 -194 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 115 l 405 517 l 360 517 l 360 130 l 271 161 l 271 517 l 225 517 l 225 180 l 0 256 l 0 157 l 495 -14 l 495 -141 z', + }, + accSagittalSharp11v19MUp: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 14 b 428 -23 379 -10 402 -23 l 449 -23 l 449 -517 l 495 -517 l 495 -23 b 585 -203 554 -23 585 -84 l 631 -203 b 517 68 631 -23 593 68 l 449 68 b 337 248 400 68 363 127 l 225 248 b 0 68 75 248 0 187 z', + }, + accSagittalFlat11v19MDown: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 b 449 -68 363 -127 400 -68 l 517 -68 b 631 203 593 -68 631 23 l 585 203 b 495 23 585 84 554 23 l 495 517 l 449 517 l 449 23 l 428 23 b 360 -14 402 23 379 10 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z', + }, + accSagittalSharp49MUp: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -248 l 45 -248 l 225 -180 l 225 -517 l 271 -517 l 271 -166 l 360 -132 l 360 -517 l 405 -517 l 405 -117 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 360 248 b 0 -68 120 248 0 143 z m 45 -145 l 45 -68 b 360 112 45 53 150 112 l 495 112 l 495 14 z', + }, + accSagittalFlat49MDown: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 68 b 360 -248 0 -143 120 -248 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 117 l 405 517 l 360 517 l 360 132 l 271 166 l 271 517 l 225 517 l 225 180 l 45 248 l 0 248 z m 495 -14 l 495 -112 l 360 -112 b 45 68 150 -112 45 -53 l 45 145 z', + }, + accSagittalSharp5v49MUp: { + x_min: 0, + x_max: 469, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -271 l 180 -79 l 180 -517 l 225 -517 l 225 -30 l 315 65 l 315 -517 l 360 -517 l 360 65 l 449 -30 l 449 -517 l 495 -517 l 495 -79 l 675 -271 l 675 -112 l 337 248 b 118 89 239 143 166 89 b 45 157 68 89 45 112 l 0 157 b 107 0 0 62 36 10 l 0 -112 z', + }, + accSagittalFlat5v49MDown: { + x_min: 0, + x_max: 469, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 112 l 107 0 b 0 -157 36 -10 0 -62 l 45 -157 b 118 -89 45 -112 68 -89 b 337 -248 166 -89 239 -143 l 675 112 l 675 271 l 495 79 l 495 517 l 449 517 l 449 30 l 360 -65 l 360 517 l 315 517 l 315 -65 l 225 30 l 225 517 l 180 517 l 180 79 l 0 271 z', + }, + accSagittalSharp49LUp: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 -82 l 135 -112 l 135 -517 l 180 -517 l 180 -127 l 271 -157 l 271 -517 l 315 -517 l 315 -173 l 540 -248 l 585 -248 l 585 -68 b 180 248 585 143 449 248 l 0 248 z m 45 112 l 180 112 b 540 -68 420 112 540 53 l 540 -145 l 45 16 z', + }, + accSagittalFlat49LDown: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 180 -248 b 585 68 449 -248 585 -143 l 585 248 l 540 248 l 315 173 l 315 517 l 271 517 l 271 157 l 180 127 l 180 517 l 135 517 l 135 112 l 45 82 l 45 517 l 0 517 z m 45 -16 l 540 145 l 540 68 b 180 -112 540 -53 420 -112 l 45 -112 z', + }, + accSagittalSharp11v19LUp: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 -81 l 135 -108 l 135 -517 l 180 -517 l 180 -121 l 271 -148 l 271 -517 l 315 -517 l 315 -161 l 631 -255 l 631 -157 l 45 16 l 45 144 l 631 -30 l 631 68 l 23 248 l 0 248 z', + }, + accSagittalFlat11v19LDown: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 23 -248 l 631 -68 l 631 30 l 45 -144 l 45 -16 l 631 157 l 631 255 l 315 161 l 315 517 l 271 517 l 271 148 l 180 121 l 180 517 l 135 517 l 135 108 l 45 81 l 45 517 l 0 517 z', + }, + accSagittalSharp5v13LUp: { + x_min: 0, + x_max: 500, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 -85 l 360 -120 l 360 -517 l 405 -517 l 405 -135 l 720 -256 l 720 -157 l 271 14 l 271 141 l 720 -30 l 720 68 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z', + }, + accSagittalFlat5v13LDown: { + x_min: 0, + x_max: 500, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 720 -68 l 720 30 l 271 -141 l 271 -14 l 720 157 l 720 256 l 405 135 l 405 517 l 360 517 l 360 120 l 271 85 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z', + }, + accSagittalDoubleSharp23SDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -203 l 45 -203 b 135 -23 45 -82 76 -23 l 301 -23 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 370 -14 b 449 112 423 10 449 53 l 449 248 l 428 248 b 315 68 402 127 364 68 l 240 68 b 89 157 140 68 89 98 l 45 157 b 68 53 45 115 52 81 b 0 -203 23 23 0 -63 z', + }, + accSagittalDoubleFlat23SUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 68 -53 0 63 23 -23 b 45 -157 52 -81 45 -115 l 89 -157 b 240 -68 89 -98 140 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 -112 b 370 14 449 -53 423 -10 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 301 23 l 135 23 b 45 203 76 23 45 82 z', + }, + accSagittalDoubleSharp49SDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -292 l 45 -292 b 112 -157 45 -203 68 -157 l 256 -157 l 135 -503 l 187 -517 l 337 -82 l 490 -517 l 540 -503 l 366 0 l 396 89 b 449 157 416 102 435 125 l 449 248 l 428 248 b 315 157 413 187 376 157 l 112 157 b 0 -68 39 157 0 82 l 45 -68 b 135 68 45 23 76 68 l 287 68 l 311 0 l 288 -68 l 89 -68 b 0 -292 32 -68 0 -144 z', + }, + accSagittalDoubleFlat49SUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 292 b 89 68 0 144 32 68 l 288 68 l 311 0 l 287 -68 l 135 -68 b 45 68 76 -68 45 -23 l 0 68 b 112 -157 0 -82 39 -157 l 315 -157 b 428 -248 376 -157 413 -187 l 449 -248 l 449 -157 b 396 -89 435 -125 416 -102 l 366 0 l 540 503 l 490 517 l 337 82 l 187 517 l 135 503 l 256 157 l 112 157 b 45 292 68 157 45 203 z', + }, + accSagittalDoubleSharp7v19CDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -112 l 0 -266 l 307 -7 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 386 59 l 449 112 l 449 248 l 428 248 b 130 68 285 127 186 68 b 45 157 73 68 45 98 l 0 157 b 112 -20 0 53 37 -6 z', + }, + accSagittalDoubleFlat7v19CUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 112 20 b 0 -157 37 6 0 -53 l 45 -157 b 130 -68 45 -98 73 -68 b 428 -248 186 -68 285 -127 l 449 -248 l 449 -112 l 386 -59 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 307 7 l 0 266 l 0 112 z', + }, + accSagittalDoubleSharp19CDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 315 109 45 36 135 95 l 354 0 l 180 -503 l 232 -517 l 383 -82 l 534 -517 l 585 -503 l 410 0 l 449 112 l 495 112 l 495 248 l 360 248 b 0 68 120 248 0 187 z m 372 112 l 393 112 l 383 82 z', + }, + accSagittalDoubleFlat19CUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 360 -248 0 -187 120 -248 l 495 -248 l 495 -112 l 449 -112 l 410 0 l 585 503 l 534 517 l 383 82 l 232 517 l 180 503 l 354 0 l 315 -109 b 45 68 135 -95 45 -36 l 45 248 l 0 248 z m 383 -82 l 393 -112 l 372 -112 z', + }, + accSagittalDoubleSharp11v49CDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 360 112 b 540 -68 480 112 540 53 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z', + }, + accSagittalDoubleFlat11v49CUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 360 -112 540 -53 480 -112 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalDoubleSharp143CDown: { + x_min: 0, + x_max: 469, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 337 49 l 675 -268 l 675 -112 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z', + }, + accSagittalDoubleFlat143CUp: { + x_min: 0, + x_max: 469, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 675 112 l 675 268 l 337 -49 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalDoubleSharp17kDown: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 248 b 95 101 0 170 30 121 l 0 68 l 0 -30 l 364 96 l 399 0 l 390 -23 l 0 -157 l 0 -255 l 353 -135 l 225 -503 l 275 -517 l 428 -82 l 577 -517 l 631 -503 l 455 0 l 507 145 l 540 157 l 540 248 l 517 248 b 167 168 366 194 248 168 b 45 248 85 168 45 194 z m 416 115 l 442 124 l 428 82 z', + }, + accSagittalDoubleFlat17kUp: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -248 b 167 -168 45 -194 85 -168 b 517 -248 248 -168 366 -194 l 540 -248 l 540 -157 l 507 -145 l 455 0 l 631 503 l 577 517 l 428 82 l 275 517 l 225 503 l 353 135 l 0 255 l 0 157 l 390 23 l 399 0 l 364 -96 l 0 30 l 0 -68 l 95 -101 b 0 -248 30 -121 0 -170 z m 428 -82 l 442 -124 l 416 -115 z', + }, + accSagittalDoubleSharp19sDown: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -248 l 45 -248 l 45 -68 b 271 112 45 53 120 112 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 367 4 b 428 -23 386 -13 405 -23 l 495 -23 b 585 -203 554 -23 585 -84 l 631 -203 b 517 68 631 -23 593 68 l 449 68 b 337 248 400 68 363 127 l 225 248 b 0 68 75 248 0 187 z', + }, + accSagittalDoubleFlat19sUp: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 b 449 -68 363 -127 400 -68 l 517 -68 b 631 203 593 -68 631 23 l 585 203 b 495 23 585 84 554 23 l 428 23 b 367 -4 405 23 386 13 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 271 -112 b 45 68 120 -112 45 -53 l 45 248 l 0 248 z', + }, + accSagittalShaftUp: { + x_min: 0, + x_max: 31, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 112 l 0 -517 l 45 -517 l 45 112 l 23 248 z', + }, + accSagittalShaftDown: { + x_min: 0, + x_max: 31, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 23 -248 l 45 -112 l 45 517 l 0 517 l 0 -112 z', + }, + accSagittalAcute: { + x_min: 0, + x_max: 125, + y_min: -62, + y_max: 125, + ha: 187, + o: 'm 0 0 l 0 -89 l 180 89 l 180 180 z', + }, + accSagittalGrave: { + x_min: 0, + x_max: 125, + y_min: -125, + y_max: 62, + ha: 187, + o: 'm 180 -180 l 180 -89 l 0 89 l 0 0 z', + }, + accSagittal1MinaUp: { + x_min: -7, + x_max: 124, + y_min: 16, + y_max: 106.31676725154982, + ha: 90.31676725154982, + o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 134 150 179 112 163 135 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z', + }, + accSagittal1MinaDown: { + x_min: -7, + x_max: 124, + y_min: -106.31676725154983, + y_max: -16, + ha: 90.31676725154983, + o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 179 -23 163 -135 179 -112 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z', + }, + accSagittal2MinasUp: { + x_min: -7, + x_max: 218, + y_min: 16, + y_max: 106.31676725154982, + ha: 90.31676725154982, + o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 269 150 314 112 298 135 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z', + }, + accSagittal2MinasDown: { + x_min: -7, + x_max: 218, + y_min: -106.31676725154983, + y_max: -16, + ha: 90.31676725154983, + o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z', + }, + accSagittal1TinaUp: { + x_min: 0, + x_max: 93, + y_min: 16, + y_max: 107, + ha: 91, + o: 'm 134 154 l 91 154 b 81 76 91 101 91 86 b 0 68 73 69 48 68 l 0 23 b 134 154 122 23 134 36 z', + }, + accSagittal1TinaDown: { + x_min: 0, + x_max: 93, + y_min: -107, + y_max: -16, + ha: 91, + o: 'm 134 -154 b 0 -23 134 -36 122 -23 l 0 -68 b 81 -76 48 -68 73 -69 b 91 -154 91 -86 91 -101 z', + }, + accSagittal2TinasUp: { + x_min: 0, + x_max: 94, + y_min: 16, + y_max: 107, + ha: 91, + o: 'm 135 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z', + }, + accSagittal2TinasDown: { + x_min: 0, + x_max: 94, + y_min: -107, + y_max: -16, + ha: 91, + o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 z', + }, + accSagittal3TinasUp: { + x_min: -7, + x_max: 124, + y_min: 16, + y_max: 106.31676725154982, + ha: 90.31676725154982, + o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 134 150 179 112 163 135 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z', + }, + accSagittal3TinasDown: { + x_min: -7, + x_max: 124, + y_min: -106.31676725154983, + y_max: -16, + ha: 90.31676725154983, + o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 179 -23 163 -135 179 -112 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z', + }, + accSagittal4TinasUp: { + x_min: 0, + x_max: 187, + y_min: 16, + y_max: 106.69999999999997, + ha: 90.69999999999997, + o: 'm 0 68 l 0 23 b 143 45 105 23 124 26 b 203 107 153 55 183 107 b 226 23 216 107 226 86 l 269 23 b 225 150 269 112 253 135 b 160 132 207 158 181 153 b 115 81 138 112 124 88 b 0 68 104 71 94 68 z', + }, + accSagittal4TinasDown: { + x_min: 0, + x_max: 187, + y_min: -106.69999999999999, + y_max: -16, + ha: 90.69999999999999, + o: 'm 0 -68 b 115 -81 94 -68 104 -71 b 160 -132 124 -88 138 -112 b 225 -150 181 -153 207 -158 b 269 -23 253 -135 269 -112 l 226 -23 b 203 -107 226 -86 216 -107 b 143 -45 183 -107 153 -55 b 0 -23 124 -26 105 -23 z', + }, + accSagittal5TinasUp: { + x_min: 0, + x_max: 218, + y_min: 16, + y_max: 107, + ha: 91, + o: 'm 135 23 b 187 45 156 23 168 26 b 249 107 197 55 228 107 b 271 23 262 107 271 86 l 314 23 b 269 150 314 112 298 135 b 204 132 252 158 226 153 b 160 81 183 112 168 88 b 135 68 148 71 147 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z', + }, + accSagittal5TinasDown: { + x_min: 0, + x_max: 218, + y_min: -107, + y_max: -16, + ha: 91, + o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 b 160 -81 147 -68 148 -71 b 204 -132 168 -88 183 -112 b 269 -150 226 -153 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 249 -107 271 -86 262 -107 b 187 -45 228 -107 197 -55 b 135 -23 168 -26 156 -23 z', + }, + accSagittal6TinasUp: { + x_min: -7, + x_max: 218, + y_min: 16, + y_max: 106.31676725154982, + ha: 90.31676725154982, + o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 269 150 314 112 298 135 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z', + }, + accSagittal6TinasDown: { + x_min: -7, + x_max: 218, + y_min: -106.31676725154983, + y_max: -16, + ha: 90.31676725154983, + o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z', + }, + accSagittal7TinasUp: { + x_min: 0, + x_max: 281, + y_min: 16, + y_max: 106.69999999999997, + ha: 90.69999999999997, + o: 'm 0 68 l 0 23 b 143 45 105 23 124 26 b 203 107 153 55 183 107 b 226 23 216 107 226 86 l 269 23 b 298 65 269 23 291 55 b 343 107 314 86 331 107 b 361 23 354 107 363 86 l 405 23 b 360 150 405 112 389 135 b 294 130 343 158 311 150 b 264 92 281 115 272 104 b 225 150 258 127 245 140 b 160 132 207 158 181 153 b 115 81 138 112 124 88 b 0 68 104 71 94 68 z', + }, + accSagittal7TinasDown: { + x_min: 0, + x_max: 281, + y_min: -106.69999999999999, + y_max: -16, + ha: 90.69999999999999, + o: 'm 0 -68 b 115 -81 94 -68 104 -71 b 160 -132 124 -88 138 -112 b 225 -150 181 -153 207 -158 b 264 -92 245 -140 258 -127 b 294 -130 272 -104 281 -115 b 360 -150 311 -150 343 -158 b 405 -23 389 -135 405 -112 l 361 -23 b 343 -107 363 -86 354 -107 b 298 -65 331 -107 314 -86 b 269 -23 291 -55 269 -23 l 226 -23 b 203 -107 226 -86 216 -107 b 143 -45 183 -107 153 -55 b 0 -23 124 -26 105 -23 z', + }, + accSagittal8TinasUp: { + x_min: 0, + x_max: 312, + y_min: 16, + y_max: 107, + ha: 91, + o: 'm 135 23 b 187 45 156 23 168 26 b 249 107 197 55 228 107 b 271 23 262 107 271 86 l 314 23 b 343 65 314 23 336 55 b 387 107 359 86 376 107 b 406 23 399 107 408 86 l 449 23 b 405 150 449 112 433 135 b 338 130 387 158 356 150 b 308 92 325 115 317 104 b 269 150 302 127 289 140 b 204 132 252 158 226 153 b 160 81 183 112 168 88 b 135 68 148 71 147 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z', + }, + accSagittal8TinasDown: { + x_min: 0, + x_max: 312, + y_min: -107, + y_max: -16, + ha: 91, + o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 b 160 -81 147 -68 148 -71 b 204 -132 168 -88 183 -112 b 269 -150 226 -153 252 -158 b 308 -92 289 -140 302 -127 b 338 -130 317 -104 325 -115 b 405 -150 356 -150 387 -158 b 449 -23 433 -135 449 -112 l 406 -23 b 387 -107 408 -86 399 -107 b 343 -65 376 -107 359 -86 b 314 -23 336 -55 314 -23 l 271 -23 b 249 -107 271 -86 262 -107 b 187 -45 228 -107 197 -55 b 135 -23 168 -26 156 -23 z', + }, + accSagittal9TinasUp: { + x_min: -7, + x_max: 312, + y_min: 16, + y_max: 106.31676725154982, + ha: 90.31676725154982, + o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 343 65 314 23 336 55 b 387 107 359 86 376 107 b 406 23 399 107 408 86 l 449 23 b 405 150 449 112 433 135 b 338 130 387 158 356 150 b 308 92 325 115 317 104 b 269 150 302 127 289 140 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z', + }, + accSagittal9TinasDown: { + x_min: -7, + x_max: 312, + y_min: -106.31676725154983, + y_max: -16, + ha: 90.31676725154983, + o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 308 -92 289 -140 302 -127 b 338 -130 317 -104 325 -115 b 405 -150 356 -150 387 -158 b 449 -23 433 -135 449 -112 l 406 -23 b 387 -107 408 -86 399 -107 b 343 -65 376 -107 359 -86 b 314 -23 336 -55 314 -23 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z', + }, + accSagittalFractionalTinaUp: { + x_min: -3, + x_max: 35, + y_min: 73, + y_max: 111, + ha: 38, + o: 'm -4 132 b 23 105 -4 118 9 105 b 50 132 37 105 50 118 b 23 160 50 147 37 160 b -4 132 9 160 -4 147 z', + }, + accSagittalFractionalTinaDown: { + x_min: -3, + x_max: 35, + y_min: -111, + y_max: -73, + ha: 38, + o: 'm -4 -132 b 23 -160 -4 -147 9 -160 b 50 -132 37 -160 50 -147 b 23 -105 50 -118 37 -105 b -4 -132 9 -105 -4 -118 z', + }, + accidentalNarrowReversedFlat: { + x_min: 0, + x_max: 164, + y_min: -194, + y_max: 421, + ha: 615, + o: 'm 236 -279 l 236 606 l 192 606 l 192 179 b 85 243 150 222 114 243 b 0 84 23 243 0 134 b 112 -158 0 3 37 -78 z m 192 112 l 192 -163 l 135 -98 b 82 40 101 -50 82 -3 b 138 144 82 73 96 144 b 192 112 153 144 170 132 z', + }, + accidentalNarrowReversedFlatAndFlat: { + x_min: 0, + x_max: 414, + y_min: -194, + y_max: 421, + ha: 615, + o: 'm 281 606 l 281 -268 l 438 -158 b 596 84 547 -82 596 3 b 475 243 596 154 556 243 b 325 179 435 243 384 222 l 325 606 z m 235 -279 l 235 606 l 190 606 l 190 179 b 85 243 148 222 114 243 b 12 158 52 243 27 215 b 0 84 3 134 0 108 b 112 -158 0 3 37 -78 z m 325 111 b 410 144 359 132 386 144 b 498 36 462 144 498 84 b 413 -107 498 -9 469 -58 l 325 -173 z m 192 112 l 192 -163 l 135 -98 b 81 40 99 -50 81 -3 b 91 94 81 59 84 76 b 137 144 102 127 118 144 b 192 112 153 144 170 132 z', + }, + accidentalWilsonPlus: { + x_min: 0, + x_max: 281, + y_min: -203, + y_max: 203, + ha: 406, + o: 'm 405 268 l 225 98 l 225 292 l 180 292 l 180 56 l 0 -112 l 0 -268 l 180 -98 l 180 -292 l 225 -292 l 225 -56 l 405 112 z', + }, + accidentalWilsonMinus: { + x_min: 0, + x_max: 281, + y_min: -186, + y_max: 186, + ha: 372, + o: 'm 0 112 l 405 -268 l 405 -112 l 0 268 z', + }, + }, + fontFamily: 'Bravura', + resolution: 1000, + generatedOn: '2022-06-26T17:36:54.186Z', +}; + + +/***/ }), + +/***/ "./src/fonts/bravura_metrics.ts": +/*!**************************************!*\ + !*** ./src/fonts/bravura_metrics.ts ***! + \**************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "BravuraMetrics": () => (/* binding */ BravuraMetrics) +/* harmony export */ }); +/** + * The Bravura font was created by Daniel Spreadbury @ Steinberg. + * https://github.com/steinbergmedia/bravura/ + */ +const BravuraMetrics = { + name: 'Bravura', + smufl: true, + stave: { + padding: 12, + endPaddingMax: 10, + endPaddingMin: 5, + unalignedNotePadding: 10, + }, + accidental: { + noteheadAccidentalPadding: 1, + leftPadding: 2, + accidentalSpacing: 3, + }, + clef: { + default: { + point: 32, + width: 26, + }, + small: { + point: 26, + width: 20, + }, + annotations: { + '8va': { + smuflCode: 'timeSig8', + default: { + point: 18, + treble: { + line: -1.4, + shiftX: 12, + }, + }, + small: { + point: 16, + treble: { + line: -0.2, + shiftX: 8, + }, + }, + }, + '8vb': { + smuflCode: 'timeSig8', + default: { + point: 18, + treble: { + line: 6, + shiftX: 10, + }, + bass: { + line: 3.5, + shiftX: 1, + }, + }, + small: { + point: 16, + treble: { + line: 5.3, + shiftX: 6, + }, + bass: { + line: 3.1, + shiftX: 0.5, + }, + }, + }, + }, + // These may no longer be necessary + lineCount: { + '8': { point: 55, shiftY: 14 }, + '7': { point: 47, shiftY: 8 }, + '6': { point: 32, shiftY: 1 }, + '5': { point: 30, shiftY: -6 }, + '4': { point: 23, shiftY: -12 }, + }, + }, + parenthesis: { + default: { + point: 39, + width: 7, + }, + gracenote: { + point: (39 * 3) / 5, + width: 3, + }, + }, + pedalMarking: { + up: { + point: 40, + }, + down: { + point: 34, + }, + }, + // These are for numeric digits, such as in time signatures + digits: { + // used by timesig + shiftLine: -1, + point: 34, + // used by tuplets + tupletPoint: 22, + shiftY: -6, + }, + articulation: { + articStaccatissimoAbove: { + padding: 2, + }, + articStaccatissimoBelow: { + padding: 2, + }, + }, + tremolo: { + default: { + point: 25, + spacing: 5, + offsetYStemUp: -5, + offsetYStemDown: 5, + offsetXStemUp: 11, + offsetXStemDown: 1, + }, + grace: { + point: 18, + spacing: 4, + offsetYStemUp: -5, + offsetYStemDown: 5, + offsetXStemUp: 7, + offsetXStemDown: 1, + }, + }, + staveRepetition: { + symbolText: { + offsetX: 12, + offsetY: 25, + spacing: 5, + }, + coda: { + offsetY: 25, + }, + segno: { + offsetY: 10, + }, + }, + // noteHead: { + // }, + stem: { + heightAdjustmentForFlag: -3, + // These are stem (Y) offsets to the note heads. To shift the + // noteheads (x-position) themselves, see glyphs.notehead.custom. + noteHead: { + noteheadTriangleUpHalf: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpBlack: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpWhole: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadXHalf: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXBlack: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXWhole: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadHalf: { + offsetYBaseStemUp: -2.55, + offsetYBaseStemDown: 2.65, + }, + noteheadBlack: { + offsetYBaseStemUp: -2, + offsetYBaseStemDown: 2, + }, + noteheadSquareWhite: { + offsetYBaseStemDown: -5, + offsetYBaseStemUp: 5, + }, + }, + }, + // Values under here are used by the Glyph class to reposition and rescale + // glyphs based on their category. This should be the first stop for + // custom font glyph repositioning. + // + // The glyph loader first looks up a specific set of settings based on the + // glyph code, and if not found, uses the defaults from the category. See + // glyphs.textNote for an example of this. + // + // Details in Glyph.lookupFontMetrics. + glyphs: { + coda: { + point: 20, + shiftX: -7, + shiftY: 8, + }, + segno: { + shiftX: -7, + }, + flag: { + shiftX: -0.75, + staveTempo: { + shiftX: -1, + }, + }, + clef: { + gClef: { + default: { scale: 1.1, shiftY: 1 }, + small: { shiftY: 1.5 }, + }, + fClef: { + default: { shiftY: -0.5 }, + }, + }, + ornament: { + ornamentTurn: { + scale: 1.2, + }, + ornamentTurnSlash: { + scale: 1.2, + }, + }, + stringNumber: { + verticalPadding: 8, + stemPadding: 2, + leftPadding: 5, + rightPadding: 6, + }, + stroke: { + arrowheadBlackDown: { + straight: { + shiftX: -4.5, + }, + wiggly: { + shiftX: -1, + shiftY: 1, + }, + }, + arrowheadBlackUp: { + straight: { + shiftX: -0.85, + }, + wiggly: { + shiftX: -1, + shiftY: 1, + }, + }, + }, + textNote: { + point: 34, + breathMarkTick: { + point: 36, + shiftY: 9, + }, + breathMarkComma: { + point: 36, + }, + segno: { + point: 30, + shiftX: -7, + shiftY: 8, + }, + coda: { + point: 20, + shiftX: -7, + shiftY: 8, + }, + ornamentTrill: { + shiftX: -8, + shiftY: 8, + }, + ornamentTurn: { + point: 42, + }, + ornamentTurnSlash: { + point: 42, + }, + ornamentMordent: { + shiftX: -8, + }, + ornamentShortTrill: { + shiftX: -8, + }, + }, + noteHead: { + minPadding: 2, + standard: { + restQuarterStemUp: { + point: 35, + }, + restQuarterStemDown: { + point: 35, + }, + }, + custom: { + noteheadCircleXStemUp: { + shiftX: 1.5, + }, + noteheadCircleXStemDown: { + shiftX: 0.25, + }, + noteheadDiamondHalfStemUp: { + shiftX: 1.5, + }, + noteheadDiamondBlackStemUp: { + shiftX: 1.5, + }, + noteheadDiamondWholeStemUp: { + shiftX: 1, + }, + noteheadXHalfStemUp: { + shiftX: -2, + }, + noteheadXHalfStemDown: { + shiftX: 1, + }, + noteheadXWholeStemUp: { + shiftX: -4, + }, + noteheadXWholeStemDown: { + shiftX: 1, + }, + noteheadXDoubleWholeStemUp: { + shiftX: -4, + }, + noteheadXDoubleWholeStemDown: { + shiftX: 1, + }, + noteheadSquareWhiteStemDown: { + shiftX: 0.25, + }, + noteheadSquareWhiteStemUp: { + shiftX: -0.75, + }, + noteheadSquareBlackStemUp: { + shiftX: -0.75, + }, + noteheadTriangleUpWholeStemUp: { + shiftX: -0.75, + }, + }, + }, + chordSymbol: { + global: { + superscriptOffset: -400, + subscriptOffset: 300, + kerningOffset: -250, + lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'], + upperKerningText: ['A', 'L'], + spacing: 100, + superSubRatio: 0.66, + }, + csymDiminished: { + scale: 0.8, + leftSideBearing: -32, + advanceWidth: 506, + yOffset: 0, + }, + csymHalfDiminished: { + scale: 0.8, + leftSideBearing: -32, + advanceWidth: 506, + yOffset: 0, + }, + csymAugmented: { + scale: 1, + leftSideBearing: 0, + advanceWidth: 530, + yOffset: 0, + }, + csymParensLeftTall: { + scale: 0.8, + leftSideBearing: -20, + advanceWidth: 184, + yOffset: 250, + }, + csymParensRightTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 189, + yOffset: 250, + }, + csymBracketLeftTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 328, + yOffset: 0, + }, + csymBracketRightTall: { + scale: 0.8, + leftSideBearing: 1, + advanceWidth: 600, + yOffset: 0, + }, + csymParensLeftVeryTall: { + scale: 0.9, + leftSideBearing: 50, + advanceWidth: 121, + yOffset: 350, + }, + csymParensRightVeryTall: { + scale: 0.9, + leftSideBearing: 0, + advanceWidth: 111, + yOffset: 350, + }, + csymDiagonalArrangementSlash: { + scale: 0.6, + leftSideBearing: -1, + advanceWidth: 990, + yOffset: 0, + }, + csymMinor: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 482, + yOffset: 0, + }, + csymMajorSeventh: { + scale: 0.9, + leftSideBearing: 200, + yOffset: 0, + advanceWidth: 600, + }, + accidentalSharp: { + scale: 0.75, + leftSideBearing: 20, + advanceWidth: 250, + yOffset: -302, + }, + accidentalFlat: { + scale: 0.9, + leftSideBearing: -20, + advanceWidth: 226, + yOffset: -184, + }, + }, + jazzOrnaments: { + brassScoop: { + scale: 1.0, + xOffset: -12, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 20, + }, + brassDoitMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 22, + }, + brassFallLipShort: { + scale: 1.0, + xOffset: 16, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 15, + }, + brassLiftMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 5, + stemUpYOffset: 0, + reportedWidth: 5, + }, + brassFallRoughMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 28, + stemUpYOffset: 0, + reportedWidth: 5, + }, + brassBend: { + scale: 1.0, + xOffset: 2, + yOffset: -8, + stemUpYOffset: 25, + reportedWidth: 5, + }, + brassMuteClosed: { + scale: 1.0, + xOffset: 3, + yOffset: -8, + stemUpYOffset: 25, + reportedWidth: 5, + }, + brassMuteOpen: { + scale: 1.0, + xOffset: 3, + yOffset: -7, + stemUpYOffset: 25, + reportedWidth: 5, + }, + brassFlip: { + scale: 1.0, + xOffset: 10, + yOffset: 0, + stemUpYOffset: 7, + reportedWidth: 10, + }, + brassJazzTurn: { + scale: 1.0, + xOffset: 0, + yOffset: 0, + stemUpYOffset: 8, + reportedWidth: 31, + }, + brassSmear: { + scale: 1.0, + xOffset: 10, + yOffset: 0, + stemUpYOffset: 8, + reportedWidth: 5, + }, + }, + tuplet: { + noteHeadOffset: 20, + stemOffset: 10, + bottomLine: 4, + topModifierOffset: 15, + }, + }, +}; + + +/***/ }), + +/***/ "./src/fonts/custom_glyphs.ts": +/*!************************************!*\ + !*** ./src/fonts/custom_glyphs.ts ***! + \************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "CustomFont": () => (/* binding */ CustomFont) +/* harmony export */ }); +const CustomFont = { + resolution: 1000, + fontFamily: 'VexFlowCustom', + glyphs: { + noteheadSquareWhite: { + x_min: 0, + x_max: 430.75, + ha: 386, + o: 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 l 50 150 l 380 150 l 380 -150 l 50 -150 l 50 150 ', + }, + noteheadSquareBlack: { + x_min: 0, + x_max: 430.75, + ha: 386, + o: 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 ', + }, + accidentalBuyukMucennebFlat: { + x_min: -171.5, + x_max: 251.8125, + ha: 257, + o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ', + }, + accidentalBakiyeFlat: { + x_min: -176.9375, + x_max: 251.8125, + ha: 257, + o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ', + }, + accidentalKucukMucennebSharp: { + x_min: -1.359375, + x_max: 255.890625, + ha: 261, + o: 'm 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 ', + }, + accidentalKoron: { + x_min: -20, + x_max: 320, + ha: 257, + o: 'm -8 200 b -8 210 8 200 16 200 l 20 148 -199 l 23 -615 b 0 -629 9 -629 6 -629 l -21 -612 l -21 -201 l -21 216 l -20 200 m 16 200 l 310 0 l 240 0 l 16 140 l 16 -120 l 240 0 l 310 0 l 16 -200 ', + }, + accidentalSori: { + x_min: -10.890625, + x_max: 299.4375, + ha: 294, + o: 'm 44 174 b 51 174 47 174 49 174 b 68 173 55 174 61 174 l 287 112 l 551 40 b 615 20 617 22 609 23 b 626 0 622 16 626 8 b 615 -22 626 -9 622 -18 b 613 -23 613 -23 613 -23 b 613 -23 613 -23 613 -23 b 287 -113 613 -24 597 -29 l 68 -174 b 53 -176 61 -176 57 -176 b 39 -172 47 -176 43 -174 b 27 -151 31 -167 27 -159 b 39 -129 27 -141 31 -133 b 230 -74 43 -124 20 -131 l 370 -36 l 468 -9 b 498 0 484 -4 498 -1 b 468 8 498 0 484 2 l 370 34 l 230 73 b 40 126 28 129 43 124 b 27 149 31 131 27 140 b 44 174 27 161 34 170 m 205 110 l 205 300 b 205 330 245 330 245 300 l 245 300 l 245 -300 b 245 -330 205 -330 205 -300 l 205 -300 l 205 110 l 345 90 m 345 90 l 345 330 b 345 360 385 360 385 330 l 385 330 l 385 -270 b 385 -300 345 -300 345 -270 l 345 -270 l 345 90 ', + }, + vexAccidentalMicrotonal2: { + x_min: -1.359375, + x_max: 386.5625, + ha: 394, + o: 'm 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 ', + }, + vexAccidentalMicrotonal3: { + x_min: 0, + x_max: 430.75, + ha: 360, + o: 'm -146 537 b -138 538 -143 538 -141 538 b -118 525 -129 538 -121 533 b -117 390 -117 522 -117 521 b -115 259 -117 268 -117 259 b -115 259 -115 259 -115 259 b -59 272 -104 263 -62 272 b -39 259 -50 272 -42 267 b -37 209 -38 257 -37 233 b -39 159 -37 185 -38 162 b -85 138 -43 149 -44 149 l -117 131 l -117 21 b -115 -88 -117 -80 -117 -88 b -115 -88 -115 -88 -115 -88 b -59 -75 -104 -84 -62 -75 b -44 -81 -52 -75 -48 -77 b -38 -124 -38 -87 -38 -85 b -38 -138 -38 -124 -38 -138 b -38 -152 -38 -138 -38 -152 b -44 -195 -38 -191 -38 -190 b -85 -209 -48 -200 -48 -200 l -117 -217 l -117 -349 b -118 -486 -117 -481 -117 -482 b -138 -499 -121 -494 -129 -499 b -153 -493 -143 -499 -149 -497 b -159 -415 -158 -487 -159 -496 b -159 -355 -159 -398 -159 -379 b -159 -227 -159 -284 -159 -227 b -205 -238 -159 -227 -180 -232 b -250 -249 -230 -244 -250 -249 b -251 -386 -251 -249 -251 -311 b -252 -525 -251 -521 -251 -522 b -272 -538 -255 -534 -264 -538 b -287 -532 -277 -538 -283 -536 b -293 -452 -292 -527 -293 -536 b -293 -391 -293 -436 -293 -415 b -294 -260 -293 -269 -293 -260 b -294 -260 -294 -260 -294 -260 b -348 -272 -306 -264 -345 -272 b -368 -259 -357 -272 -365 -267 b -369 -209 -369 -257 -369 -233 b -368 -159 -369 -185 -369 -162 b -323 -139 -364 -149 -362 -148 l -293 -131 l -293 -22 b -294 87 -293 80 -293 87 b -294 87 -294 87 -294 87 b -348 75 -306 84 -345 75 b -368 88 -357 75 -365 80 b -369 138 -369 91 -369 114 b -368 188 -369 162 -369 186 b -323 209 -364 198 -362 199 l -293 216 l -293 349 b -292 486 -293 481 -293 482 b -272 499 -288 494 -280 499 b -257 493 -266 499 -261 497 b -251 414 -251 487 -251 496 b -251 354 -251 398 -251 378 b -251 226 -251 284 -251 226 b -205 238 -250 226 -230 231 b -159 249 -180 244 -159 249 b -159 385 -159 249 -159 310 b -157 525 -159 521 -159 522 b -146 537 -156 530 -151 535 z m -159 11 b -159 120 -159 98 -159 120 l -159 120 b -175 116 -160 120 -167 119 b -221 105 -184 114 -204 109 l -251 98 l -251 -12 b -251 -121 -251 -72 -251 -121 b -205 -110 -250 -121 -230 -116 b -159 -99 -180 -104 -159 -99 b -159 11 -159 -99 -159 -49 z m 89 517 b 97 519 92 518 94 519 b 117 505 106 519 114 513 b 119 376 119 502 119 501 l 119 249 l 145 258 b 176 267 169 266 172 267 b 177 267 176 267 177 267 b 196 255 186 267 192 263 l 197 252 l 197 205 b 197 181 197 195 197 187 b 193 149 197 153 197 153 b 152 131 190 144 187 143 l 119 120 l 119 10 b 119 -100 119 -62 119 -100 b 145 -91 120 -100 131 -96 b 173 -82 159 -86 171 -82 b 176 -81 174 -81 175 -81 b 196 -94 185 -81 193 -87 b 198 -151 197 -97 198 -125 b 197 -194 198 -172 197 -192 b 153 -218 193 -203 192 -204 l 119 -230 l 119 -367 l 118 -504 l 117 -507 b 97 -519 113 -514 105 -519 b 82 -512 92 -519 87 -517 b 76 -434 77 -507 76 -516 b 76 -374 76 -418 76 -398 b 76 -245 76 -303 76 -245 b 52 -254 76 -245 65 -249 b 19 -263 34 -260 25 -263 b 6 -257 13 -263 10 -261 b 0 -214 0 -251 0 -253 b 0 -200 0 -210 0 -205 b 0 -188 0 -196 0 -192 b 6 -143 0 -147 0 -149 b 46 -126 10 -139 10 -139 l 76 -115 l 76 -5 b 76 106 76 56 76 106 b 51 98 76 106 64 102 b 18 89 34 92 25 89 b 6 95 13 89 10 91 b 0 139 0 101 0 99 b 0 153 0 143 0 148 b 0 179 0 163 0 172 b 44 225 0 215 3 211 l 76 236 l 76 369 b 78 505 76 501 76 502 b 89 517 80 510 85 515 z ', + }, + vexAccidentalMicrotonal4: { + x_min: 0, + x_max: 430.75, + ha: 360, + o: 'm 283 633 b 291 634 286 634 289 634 b 311 621 300 634 308 629 b 313 505 313 618 313 617 b 313 393 313 443 313 393 b 378 425 313 393 343 407 l 443 458 l 448 458 b 449 458 449 458 449 458 b 471 437 462 458 471 448 b 469 429 471 434 470 432 b 387 382 466 421 469 423 l 313 344 l 313 247 l 313 150 l 315 152 b 433 201 353 184 394 201 b 479 193 448 201 464 198 b 549 86 524 177 549 135 b 526 1 549 59 541 29 b 395 -143 504 -39 475 -71 b 316 -214 351 -182 341 -191 b 292 -229 302 -228 300 -229 b 272 -216 283 -229 275 -224 b 271 55 271 -212 271 -212 b 270 323 271 203 270 323 b 205 291 270 323 241 308 l 140 258 l 135 258 b 134 258 135 258 134 258 b 112 279 121 258 112 267 b 114 287 112 281 113 284 b 196 334 117 295 114 293 l 271 371 l 271 495 b 272 621 271 617 271 618 b 283 633 274 626 279 631 z m 404 133 b 391 134 400 134 395 134 b 384 134 388 134 386 134 b 318 88 358 130 335 114 l 313 81 l 313 -37 l 313 -156 l 316 -152 b 439 83 391 -71 439 22 l 439 84 b 404 133 439 115 430 128 z m -8 633 l -8 633 b 0 634 -6 634 -3 634 b 20 621 8 634 17 629 b 21 384 21 618 21 617 l 21 150 l 24 152 b 141 201 62 184 102 201 b 187 193 157 201 172 198 b 257 86 232 177 257 135 b 234 1 257 59 250 29 b 103 -143 212 -39 183 -71 b 24 -214 60 -182 49 -191 b 0 -229 10 -228 8 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 203 l -21 618 l -20 621 b -8 633 -18 626 -13 631 z m 113 133 l 113 133 b 99 134 109 134 103 134 b 93 134 97 134 94 134 b 26 88 66 130 43 114 l 21 81 l 21 -37 l 21 -156 l 25 -152 b 148 83 99 -71 148 22 l 148 84 b 113 133 148 115 138 128 z ', + }, + vexNoteHeadRectBlack: { + x_min: 0, + x_max: 430.75, + ha: 360, + o: 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 ', + }, + vexNoteHeadRectWhite: { + x_min: 0, + x_max: 430.75, + ha: 360, + o: 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 l 50 100 l 380 100 l 380 -100 l 50 -100 l 50 100', + }, + }, +}; + + +/***/ }), + +/***/ "./src/fonts/custom_metrics.ts": +/*!*************************************!*\ + !*** ./src/fonts/custom_metrics.ts ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "CustomMetrics": () => (/* binding */ CustomMetrics) +/* harmony export */ }); +const CustomMetrics = { + name: 'VexFlowCustom', + smufl: false, + glyphs: {}, +}; + + +/***/ }), + +/***/ "./src/fonts/gonville_glyphs.ts": +/*!**************************************!*\ + !*** ./src/fonts/gonville_glyphs.ts ***! + \**************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "GonvilleFont": () => (/* binding */ GonvilleFont) +/* harmony export */ }); +const GonvilleFont = { + glyphs: { + bracketTop: { + x_min: 0, + x_max: 559.421875, + ha: 571, + o: 'm 544 204 b 548 204 545 204 547 204 b 559 194 555 204 559 199 b 559 190 559 192 559 191 b 530 156 559 188 556 184 b 462 86 510 134 481 104 b 453 76 458 81 454 77 l 446 70 l 441 65 b 434 59 439 63 436 61 l 427 54 b 409 37 426 51 416 44 b 392 23 398 29 394 26 b 387 19 389 22 387 20 b 379 13 386 19 383 16 l 371 8 l 367 5 l 359 -1 l 337 -16 b 285 -48 319 -29 298 -41 l 279 -52 b 186 -95 255 -66 210 -87 l 175 -99 b 23 -129 127 -117 68 -129 b 17 -129 20 -129 19 -129 b 1 -123 2 -129 2 -129 b 0 -49 0 -122 0 -83 b 0 4 0 -22 0 1 b 27 11 2 9 4 9 b 185 31 78 12 145 20 b 198 34 186 31 193 33 b 314 73 234 44 277 58 b 349 88 328 79 340 84 b 353 90 352 90 353 90 b 363 94 353 90 357 93 b 371 98 367 97 371 98 b 428 129 372 98 413 120 b 461 148 441 136 454 144 b 468 151 464 149 466 151 b 472 154 469 152 470 154 b 481 161 473 155 477 158 b 525 190 490 166 518 186 l 534 197 b 540 201 536 198 539 199 b 544 204 541 202 544 204 ', + }, + bracketBottom: { + x_min: 0, + x_max: 559.421875, + ha: 571, + o: 'm 5 127 b 14 127 6 127 9 127 b 51 126 25 127 43 127 b 175 98 93 122 138 112 l 186 94 b 279 51 210 86 255 65 b 285 47 280 51 283 48 b 319 27 291 44 311 31 l 326 22 b 359 0 332 19 352 4 l 367 -6 b 371 -9 368 -6 370 -8 l 379 -15 b 387 -22 383 -18 386 -20 l 398 -30 l 411 -40 l 417 -47 l 427 -55 l 434 -61 b 441 -66 436 -62 439 -65 l 446 -72 l 453 -77 l 462 -87 b 558 -188 490 -113 549 -176 b 559 -195 559 -191 559 -194 b 548 -205 559 -201 555 -205 b 541 -204 547 -205 544 -205 b 534 -198 539 -201 536 -199 l 525 -191 b 481 -162 518 -187 490 -167 b 472 -155 477 -159 472 -156 b 468 -152 470 -155 469 -154 b 461 -149 466 -152 464 -151 b 428 -130 454 -145 441 -137 b 371 -99 413 -122 372 -99 b 363 -95 371 -99 367 -98 b 353 -91 357 -94 353 -91 b 348 -90 353 -91 352 -91 b 332 -81 343 -87 341 -86 b 27 -12 230 -37 127 -13 b 0 -5 4 -11 2 -11 b 0 58 0 -2 0 27 b 0 122 0 88 0 120 b 5 127 1 124 4 126 ', + }, + barlineTick: { + x_min: -80.3125, + x_max: 78.9375, + ha: 81, + o: 'm 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 ', + }, + breathMarkTick: { + x_min: -80.3125, + x_max: 78.9375, + ha: 81, + o: 'm 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 ', + }, + segno: { + x_min: -330.75, + x_max: 329.390625, + ha: 336, + o: 'm -133 483 b -117 484 -127 484 -122 484 b 31 373 -51 484 9 440 b 35 348 34 365 35 356 b -25 285 35 313 10 285 b -87 331 -55 285 -76 302 b -167 402 -100 376 -133 402 b -191 398 -175 402 -183 401 b -227 341 -215 388 -227 369 b -225 320 -227 334 -227 327 b -13 74 -209 230 -125 133 b 6 65 -4 70 5 66 l 9 63 l 10 65 b 117 231 12 68 40 112 l 189 341 l 242 424 b 268 460 262 456 264 458 b 283 464 273 463 277 464 b 308 438 296 464 308 453 l 308 437 b 287 396 308 430 308 428 l 95 98 l 59 43 l 58 41 l 65 37 b 253 -156 151 -8 217 -77 b 281 -285 272 -199 281 -244 b 148 -481 281 -381 231 -463 b 115 -485 137 -484 126 -485 b -32 -376 51 -485 -9 -442 b -36 -349 -35 -366 -36 -358 b 25 -287 -36 -315 -12 -287 b 85 -333 54 -287 74 -302 b 166 -403 99 -377 133 -403 b 190 -399 174 -403 182 -402 b 225 -342 215 -390 225 -370 b 224 -322 225 -335 225 -328 b 12 -76 208 -231 125 -134 b -8 -66 2 -72 -6 -68 l -10 -65 l -12 -66 b -118 -231 -13 -68 -42 -113 l -190 -342 l -243 -426 b -269 -462 -264 -458 -265 -458 b -284 -466 -274 -464 -279 -466 b -310 -440 -298 -466 -310 -455 l -310 -438 b -288 -398 -310 -430 -308 -430 l -96 -99 l -59 -44 l -59 -43 l -66 -38 b -281 284 -198 33 -281 158 l -281 284 b -133 483 -281 392 -220 474 m 254 177 b 266 179 258 177 262 179 b 319 149 287 179 307 167 b 329 115 326 140 329 127 b 319 79 329 102 326 90 b 268 51 307 61 287 51 b 221 72 250 51 234 58 b 205 115 210 84 205 99 b 254 177 205 142 223 170 m -281 -54 b -269 -52 -277 -52 -273 -52 b -223 -73 -253 -52 -235 -59 b -206 -116 -212 -84 -206 -101 b -216 -151 -206 -129 -209 -141 b -269 -179 -228 -170 -249 -179 b -314 -159 -285 -179 -302 -173 b -330 -116 -325 -147 -330 -131 b -281 -54 -330 -88 -313 -61 ', + }, + coda: { + x_min: -311.6875, + x_max: 310.328125, + ha: 317, + o: 'm -9 388 b -2 390 -8 390 -5 390 b 5 388 1 390 4 390 b 19 378 10 387 16 383 b 23 333 23 371 23 371 b 24 298 23 299 24 298 b 81 276 34 298 65 285 b 213 91 145 240 190 177 b 224 24 217 76 224 36 b 257 24 224 24 235 24 b 299 19 292 24 292 24 b 310 -1 306 15 310 6 b 299 -23 310 -11 306 -19 b 257 -27 292 -27 292 -27 b 224 -29 235 -27 224 -29 b 213 -95 224 -40 217 -80 b 81 -280 190 -181 145 -244 b 24 -301 65 -290 34 -301 b 23 -335 24 -301 23 -303 l 23 -340 b 17 -381 23 -374 23 -374 b -1 -391 13 -388 5 -391 b -21 -381 -9 -391 -17 -388 b -27 -340 -27 -374 -27 -374 l -27 -335 b -28 -301 -27 -303 -27 -301 b -85 -280 -38 -301 -69 -290 b -217 -95 -149 -244 -194 -181 b -228 -29 -221 -80 -228 -40 b -259 -27 -228 -29 -238 -27 b -300 -23 -294 -27 -294 -27 b -311 -2 -307 -19 -311 -11 b -294 23 -311 8 -304 19 b -259 24 -291 23 -284 24 b -228 24 -239 24 -228 24 b -217 91 -228 36 -221 76 b -85 276 -194 177 -149 240 b -28 298 -69 285 -38 298 b -27 333 -27 298 -27 299 b -27 371 -27 362 -27 369 b -9 388 -24 378 -17 385 m -27 136 b -28 247 -27 197 -28 247 b -61 216 -31 247 -53 226 b -123 33 -95 172 -121 98 l -125 24 l -76 24 l -27 24 l -27 136 m 29 242 b 24 247 27 245 24 247 b 23 136 24 247 23 197 l 23 24 l 72 24 l 121 24 l 119 33 b 29 242 115 116 77 206 m -27 -140 l -27 -27 l -76 -27 l -125 -27 l -123 -36 b -61 -220 -121 -102 -95 -176 b -28 -251 -53 -230 -31 -251 b -27 -140 -28 -251 -27 -201 m 119 -36 l 121 -27 l 72 -27 l 23 -27 l 23 -140 b 24 -251 23 -201 24 -251 b 57 -220 27 -251 49 -230 b 119 -36 91 -176 117 -102 ', + }, + gClef: { + x_min: -1.359375, + x_max: 847.96875, + ha: 865, + o: 'm 488 1499 b 495 1500 490 1500 492 1500 b 541 1465 507 1500 521 1490 b 679 1078 622 1372 679 1210 b 677 1050 679 1068 677 1060 b 477 642 668 893 604 764 l 443 609 l 431 596 l 431 592 l 438 562 l 449 508 l 460 458 b 481 355 475 390 481 355 b 481 355 481 355 481 355 b 490 356 481 355 485 355 b 528 358 495 356 511 358 b 558 356 540 358 552 356 b 839 95 699 338 808 237 b 847 22 845 72 847 47 b 631 -303 847 -113 766 -242 b 620 -309 623 -308 620 -309 l 620 -310 b 631 -359 620 -310 626 -333 l 646 -435 l 660 -496 b 672 -588 668 -535 672 -563 b 664 -653 672 -610 669 -630 b 383 -875 630 -792 509 -875 b 201 -810 321 -875 257 -855 b 129 -680 151 -768 129 -730 b 274 -530 129 -592 200 -530 b 351 -553 300 -530 326 -538 b 412 -669 393 -582 412 -626 b 287 -805 412 -735 366 -800 l 279 -805 l 285 -809 b 383 -830 318 -823 351 -830 b 586 -718 464 -830 540 -789 b 626 -584 612 -678 626 -631 b 619 -528 626 -566 623 -548 b 612 -495 619 -526 616 -510 b 577 -324 590 -387 577 -324 b 577 -324 577 -324 577 -324 b 568 -326 575 -324 571 -324 b 528 -334 558 -328 537 -333 b 465 -338 506 -337 485 -338 b 24 -11 269 -338 87 -206 b -1 145 8 41 -1 93 b 96 442 -1 249 32 351 b 322 714 166 541 236 626 l 352 745 l 345 782 l 332 843 l 315 921 b 303 984 310 950 304 978 b 295 1082 298 1017 295 1049 b 413 1426 295 1208 336 1329 b 488 1499 436 1456 477 1496 m 549 1301 b 541 1301 547 1301 544 1301 b 411 1207 500 1301 447 1263 b 355 1004 374 1152 355 1079 b 359 942 355 984 356 963 b 371 881 362 927 363 917 l 385 818 b 392 782 389 799 392 784 l 392 782 b 434 828 393 782 424 816 b 607 1165 534 941 594 1060 b 608 1193 608 1175 608 1183 b 597 1270 608 1224 604 1254 b 549 1301 589 1286 571 1299 m 398 528 b 393 555 396 542 393 553 b 392 555 393 555 393 555 b 317 470 390 555 347 505 b 190 298 266 408 212 334 b 127 70 148 227 127 148 b 155 -77 127 19 137 -30 b 468 -303 209 -216 333 -303 b 519 -299 484 -303 502 -302 b 568 -284 541 -295 568 -287 l 568 -284 b 563 -263 568 -284 566 -274 l 534 -120 l 511 -13 l 496 61 l 480 133 b 469 187 472 176 469 187 b 468 188 469 187 469 188 b 416 162 462 188 430 172 b 337 13 364 126 337 69 b 413 -124 337 -40 363 -93 b 428 -144 424 -131 428 -137 b 428 -149 428 -145 428 -148 b 409 -166 426 -161 419 -166 b 394 -162 405 -166 400 -165 b 240 77 302 -122 240 -27 l 240 77 b 430 342 240 197 315 301 l 436 344 l 426 394 l 398 528 m 548 194 b 526 195 540 195 532 195 b 519 195 524 195 521 195 l 514 195 l 518 177 l 539 79 l 552 15 l 566 -48 l 594 -187 l 605 -240 b 612 -266 609 -254 611 -266 b 612 -266 612 -266 612 -266 b 641 -248 613 -266 630 -256 b 744 -98 692 -212 730 -156 b 751 -40 749 -79 751 -59 b 548 194 751 76 665 181 ', + }, + cClef: { + x_min: 0, + x_max: 873.828125, + ha: 892, + o: 'm 0 0 l 0 703 l 81 703 l 164 703 l 164 0 l 164 -705 l 81 -705 l 0 -705 l 0 0 m 225 0 l 225 703 l 246 703 l 268 703 l 268 366 l 268 30 l 274 36 b 314 79 284 44 302 63 b 413 302 357 137 392 213 b 432 327 419 324 421 327 b 449 306 443 327 447 322 b 611 115 457 195 529 115 b 651 122 624 115 638 117 b 728 316 705 140 724 188 b 729 388 728 342 729 366 b 671 635 729 533 711 602 b 581 662 649 652 616 662 b 477 637 545 662 510 653 l 475 635 l 477 634 b 503 627 488 632 495 631 b 545 556 532 612 545 584 b 491 480 545 524 526 491 b 465 474 481 476 473 474 b 379 563 417 474 379 516 b 389 602 379 576 382 588 b 541 691 409 641 479 681 b 582 694 555 692 568 694 b 865 462 714 694 834 598 b 873 392 871 440 873 416 b 865 317 873 367 871 341 b 639 84 839 194 748 101 b 612 83 630 83 620 83 b 511 116 577 83 543 94 b 504 120 509 119 506 120 b 504 120 504 120 504 120 b 469 59 504 120 488 93 l 432 -1 l 469 -61 b 504 -122 488 -94 504 -122 b 504 -122 504 -122 504 -122 b 511 -117 506 -122 509 -120 b 612 -84 543 -95 577 -84 b 665 -91 630 -84 647 -87 b 869 -338 771 -122 850 -216 b 873 -392 872 -356 873 -374 b 798 -595 873 -469 847 -539 b 581 -695 741 -662 660 -695 b 406 -626 517 -695 454 -671 b 381 -563 389 -607 381 -585 b 465 -477 381 -519 413 -477 b 545 -559 514 -477 545 -519 b 503 -628 545 -587 532 -613 b 477 -635 495 -632 488 -634 l 475 -637 l 477 -638 b 581 -663 510 -655 545 -663 b 671 -637 616 -663 649 -653 b 729 -391 711 -603 729 -534 b 728 -317 729 -367 728 -344 b 623 -117 722 -173 698 -124 b 611 -116 619 -116 615 -116 b 449 -308 528 -116 457 -198 b 432 -328 447 -323 443 -328 b 413 -303 421 -328 419 -326 b 314 -80 392 -215 357 -138 b 274 -37 302 -65 284 -45 l 268 -31 l 268 -367 l 268 -705 l 246 -705 l 225 -705 l 225 0 ', + }, + fClef: { + x_min: -1.359375, + x_max: 899.703125, + ha: 918, + o: 'm 307 349 b 332 351 315 351 323 351 b 443 340 367 351 408 347 b 741 47 607 306 720 195 b 744 0 743 31 744 16 b 660 -303 744 -90 713 -206 b 28 -755 534 -531 304 -695 b 14 -756 23 -755 19 -756 b -1 -741 4 -756 -1 -750 b 21 -720 -1 -731 1 -728 b 567 -56 337 -601 548 -344 b 568 -11 568 -41 568 -24 b 442 285 568 129 525 233 b 325 319 406 308 367 319 b 93 177 232 319 137 266 b 84 154 91 170 84 155 b 84 154 84 154 84 154 b 88 156 84 154 85 155 b 159 177 110 170 134 177 b 257 134 194 177 231 162 b 294 41 281 108 294 73 b 171 -97 294 -24 246 -90 b 156 -98 166 -97 161 -98 b 6 74 73 -98 6 -22 b 6 80 6 76 6 79 b 307 349 10 223 141 340 m 839 215 b 845 216 841 216 842 216 b 862 213 852 216 860 215 b 899 163 887 206 899 184 b 872 117 899 145 890 127 b 847 111 865 112 856 111 b 808 130 833 111 818 117 b 796 162 800 140 796 151 b 839 215 796 187 812 212 m 839 -112 b 845 -112 841 -112 842 -112 b 862 -115 852 -112 860 -113 b 899 -165 887 -122 899 -144 b 872 -210 899 -183 890 -201 b 847 -217 865 -215 856 -217 b 808 -198 833 -217 818 -210 b 796 -165 800 -188 796 -177 b 839 -112 796 -140 812 -116 ', + }, + unpitchedPercussionClef1: { + x_min: 0, + x_max: 464.140625, + ha: 474, + o: 'm 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 ', + }, + '6stringTabClef': { + x_min: -1.359375, + x_max: 680.5625, + ha: 694, + o: 'm 597 1042 b 604 1042 600 1042 602 1042 b 642 1002 627 1042 642 1022 b 619 966 642 988 635 974 b 439 927 574 942 503 927 l 426 927 l 426 921 b 430 838 428 893 430 866 b 345 480 430 696 398 560 b 179 391 307 423 249 391 b 156 392 171 391 164 392 b 138 394 149 394 142 394 b 103 434 115 396 103 416 b 129 471 103 451 111 466 b 141 474 133 473 137 474 b 172 459 153 474 164 469 b 181 455 175 456 176 455 b 187 456 182 455 185 455 b 253 520 212 460 234 483 b 315 836 294 605 315 714 b 311 928 315 867 314 898 b 302 945 310 943 311 942 b 245 953 283 950 262 953 b 130 891 193 953 149 931 b 84 860 119 870 102 860 b 36 905 61 860 39 877 b 36 910 36 907 36 909 b 80 970 36 931 50 949 b 249 1017 125 1000 187 1017 b 322 1009 273 1017 299 1014 l 341 1003 b 436 991 372 995 406 991 b 577 1031 495 991 545 1004 b 597 1042 583 1038 590 1041 m 416 360 b 424 360 419 360 421 360 b 481 309 454 360 479 338 b 503 145 484 280 495 199 b 585 -185 525 16 555 -106 b 630 -245 596 -213 613 -237 l 634 -247 l 638 -245 b 647 -244 641 -245 645 -244 b 680 -278 666 -244 680 -262 b 664 -308 680 -290 675 -301 b 638 -312 658 -310 650 -312 b 613 -309 631 -312 623 -310 b 477 -201 555 -303 502 -260 b 417 -2 460 -159 434 -72 b 416 5 417 1 416 5 b 416 5 416 5 416 5 b 411 -5 415 5 413 0 b 359 -97 397 -33 377 -70 b 353 -106 355 -102 353 -105 b 359 -112 353 -108 355 -109 b 409 -130 375 -123 390 -129 b 426 -134 420 -130 421 -131 b 431 -147 428 -137 431 -141 b 420 -162 431 -152 427 -159 b 382 -169 409 -166 396 -169 b 323 -155 363 -169 341 -165 l 317 -152 l 314 -155 b 62 -303 240 -240 148 -295 b 36 -305 55 -305 44 -305 b 23 -303 29 -305 24 -305 b -1 -273 6 -299 -1 -287 b 31 -240 -1 -256 10 -240 b 36 -240 32 -240 34 -240 b 42 -241 38 -241 39 -241 b 134 -204 63 -241 99 -226 b 367 288 265 -115 357 81 b 375 330 368 313 370 320 b 416 360 383 347 400 358 m 360 -359 b 379 -359 363 -359 371 -359 b 424 -360 396 -359 416 -359 b 646 -502 536 -373 624 -430 b 649 -527 649 -510 649 -519 b 530 -673 649 -578 604 -635 l 521 -677 l 529 -681 b 653 -811 592 -714 637 -762 b 660 -853 658 -827 660 -839 b 645 -911 660 -873 656 -892 b 426 -1021 608 -981 519 -1021 b 283 -989 377 -1021 328 -1011 b 235 -949 249 -972 239 -964 b 234 -936 234 -946 234 -941 b 234 -928 234 -934 234 -931 l 235 -925 l 234 -927 l 225 -934 b 87 -982 186 -966 138 -982 b 80 -982 85 -982 83 -982 b 55 -981 70 -981 58 -981 b 17 -943 32 -981 17 -964 b 54 -904 17 -921 35 -904 b 78 -914 62 -904 72 -909 l 83 -918 l 88 -918 b 190 -831 122 -918 166 -881 b 269 -506 242 -727 269 -612 b 268 -462 269 -492 269 -477 b 266 -449 266 -458 266 -452 b 265 -444 266 -445 266 -444 b 257 -446 264 -444 261 -445 b 132 -545 196 -470 152 -505 b 88 -573 122 -563 104 -573 b 39 -523 63 -573 39 -553 b 63 -476 39 -505 44 -494 b 360 -359 136 -408 235 -369 m 419 -424 b 393 -423 411 -423 406 -423 l 375 -423 l 377 -426 b 379 -439 377 -427 378 -434 b 383 -510 382 -463 383 -487 b 314 -811 383 -609 360 -710 b 266 -893 296 -850 285 -870 b 264 -898 265 -896 264 -898 l 264 -898 b 264 -898 264 -898 264 -898 b 268 -898 264 -898 266 -898 b 273 -898 270 -898 272 -898 b 300 -909 283 -898 291 -900 b 426 -957 340 -941 385 -957 b 476 -949 443 -957 460 -954 b 547 -853 522 -931 547 -893 b 485 -745 547 -816 526 -775 b 397 -707 460 -727 432 -714 b 366 -675 375 -703 366 -692 b 396 -642 366 -657 377 -645 b 530 -557 455 -637 511 -601 b 536 -527 534 -548 536 -537 b 419 -424 536 -480 490 -437 ', + }, + timeSig0: { + x_min: 0, + x_max: 514.5, + ha: 525, + o: 'm 236 648 b 246 648 238 648 242 648 b 288 646 261 648 283 648 b 472 513 364 634 428 587 b 514 347 502 464 514 413 b 462 163 514 272 499 217 b 257 44 409 83 333 44 b 50 163 181 44 103 83 b 0 347 14 217 0 272 b 40 513 0 413 12 464 b 236 648 87 591 155 638 m 277 614 b 253 616 273 616 261 616 b 242 616 247 616 243 616 b 170 499 193 609 181 589 b 159 348 163 446 159 398 b 166 222 159 308 161 266 b 201 91 174 138 183 106 b 257 76 215 81 235 76 b 311 91 277 76 299 81 b 347 222 330 106 338 138 b 353 348 352 266 353 308 b 344 499 353 398 351 446 b 277 614 333 587 322 606 m 257 -1 l 258 -1 l 255 -1 l 257 -1 m 257 673 l 258 673 l 255 673 l 257 673 ', + }, + timeSig1: { + x_min: -1.359375, + x_max: 344.359375, + ha: 351, + o: 'm 126 637 l 129 638 l 198 638 l 266 638 l 269 635 b 274 631 272 634 273 632 l 277 627 l 277 395 b 279 156 277 230 277 161 b 329 88 281 123 295 106 b 344 69 341 81 344 79 b 337 55 344 62 343 59 l 333 54 l 197 54 l 61 54 l 58 55 b 50 69 53 59 50 62 b 65 88 50 79 53 81 b 80 97 72 91 74 93 b 117 156 103 113 112 129 b 117 345 117 161 117 222 l 117 528 l 100 503 l 38 406 b 14 383 24 384 23 383 b -1 398 5 383 -1 390 b 4 415 -1 403 1 409 b 16 437 5 416 10 426 l 72 539 l 100 596 b 121 632 119 631 119 631 b 126 637 122 634 125 635 m 171 -1 l 172 -1 l 170 -1 l 171 -1 m 171 673 l 172 673 l 170 673 l 171 673 ', + }, + timeSig2: { + x_min: -1.359375, + x_max: 458.6875, + ha: 468, + o: 'm 197 648 b 216 648 201 648 208 648 b 258 646 232 648 253 648 b 419 546 333 637 393 599 b 432 489 428 528 432 509 b 356 342 432 440 405 384 b 235 278 322 313 288 295 b 69 170 166 256 107 217 b 69 169 69 170 69 169 b 69 169 69 169 69 169 b 74 173 69 169 72 170 b 209 222 112 204 163 222 b 310 195 247 222 274 215 b 371 179 332 184 352 179 b 396 181 379 179 387 179 b 428 202 409 184 423 194 b 442 212 431 209 436 212 b 458 197 450 212 458 206 b 441 148 458 190 449 165 b 299 44 409 84 353 44 b 288 45 295 44 292 44 b 250 61 274 45 268 49 b 122 99 212 86 164 99 b 73 91 104 99 88 97 b 28 63 53 84 34 72 b 14 54 25 56 20 54 b 1 62 9 54 4 56 l -1 65 l -1 79 b 0 99 -1 91 0 95 b 2 113 1 102 2 108 b 164 309 20 197 81 272 b 285 470 232 341 277 398 b 287 487 287 476 287 481 b 171 595 287 551 239 595 b 155 595 166 595 160 595 b 142 592 145 594 142 594 b 145 589 142 592 142 591 b 179 527 168 576 179 551 b 132 455 179 496 163 467 b 104 451 122 452 112 451 b 27 530 62 451 27 487 b 29 555 27 538 27 546 b 197 648 44 601 115 639 m 228 -1 l 230 -1 l 227 -1 l 228 -1 m 228 673 l 230 673 l 227 673 l 228 673 ', + }, + timeSig3: { + x_min: -1.359375, + x_max: 409.6875, + ha: 418, + o: 'm 174 648 b 191 648 176 648 183 648 b 225 648 204 648 220 648 b 402 523 317 638 389 588 b 404 503 404 517 404 510 b 402 484 404 495 404 488 b 264 373 389 437 334 394 b 257 370 259 371 257 371 b 257 370 257 370 257 370 b 264 369 258 370 261 369 b 409 202 359 334 409 267 b 318 72 409 152 381 104 b 200 43 281 52 240 43 b 23 113 134 43 69 68 b 0 169 6 129 0 149 b 77 249 0 210 29 249 l 77 249 b 152 174 125 249 152 212 b 103 102 152 145 137 116 b 103 102 103 102 103 102 b 147 94 103 101 132 95 b 153 94 149 94 151 94 b 265 206 219 94 265 141 b 264 226 265 213 265 219 b 147 355 253 299 204 353 b 126 371 133 356 126 362 b 147 388 126 383 132 388 b 254 474 196 391 238 424 b 259 502 258 484 259 494 b 182 592 259 544 228 582 b 156 595 175 595 166 595 b 115 592 142 595 129 594 l 111 591 l 115 588 b 152 524 141 574 152 549 b 92 449 152 491 130 458 b 76 448 87 448 81 448 b -1 530 32 448 -1 488 b 20 581 -1 548 5 566 b 174 648 55 619 108 641 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 ', + }, + timeSig4: { + x_min: 0, + x_max: 468.21875, + ha: 478, + o: 'm 174 637 b 232 638 175 638 189 638 b 277 638 245 638 259 638 l 378 638 l 381 635 b 389 623 386 632 389 627 b 382 609 389 617 386 613 b 366 589 381 606 372 598 l 313 528 l 245 451 l 209 410 l 155 348 l 84 267 b 59 240 72 252 59 240 b 59 240 59 240 59 240 b 151 238 59 238 68 238 l 242 238 l 242 303 b 243 371 242 369 242 370 b 289 426 245 374 254 385 l 303 441 l 317 456 l 338 483 l 360 506 l 371 520 b 386 527 375 526 381 527 b 400 519 392 527 397 524 b 401 440 401 516 401 514 b 401 377 401 423 401 402 l 401 238 l 426 238 b 453 237 449 238 450 238 b 465 217 461 234 465 226 b 460 202 465 212 464 206 b 426 197 454 197 453 197 l 401 197 l 401 180 b 451 88 402 129 412 109 b 468 69 465 81 468 79 b 461 55 468 62 466 59 l 458 54 l 321 54 l 185 54 l 182 55 b 175 69 176 59 175 62 b 191 88 175 79 176 81 b 240 180 230 109 240 129 l 240 197 l 125 197 b 73 195 104 195 87 195 b 8 197 10 195 9 197 b 0 212 2 199 0 205 b 0 212 0 212 0 212 b 20 242 0 219 0 219 b 163 610 104 344 163 492 b 174 637 163 628 166 634 m 234 -1 l 235 -1 l 232 -1 l 234 -1 m 234 673 l 235 673 l 232 673 l 234 673 ', + }, + timeSig5: { + x_min: 0, + x_max: 409.6875, + ha: 418, + o: 'm 47 637 b 53 638 49 638 50 638 b 69 634 55 638 61 637 b 210 610 114 619 161 610 b 363 634 259 610 311 619 b 382 638 372 637 378 638 b 392 634 386 638 389 637 b 397 623 396 630 397 627 b 393 610 397 620 396 616 b 298 505 368 552 338 520 b 212 494 277 498 246 494 b 65 517 163 494 106 502 b 61 517 62 517 61 517 b 61 517 61 517 61 517 b 51 408 61 517 51 412 b 51 408 51 408 51 408 b 51 408 51 408 51 408 b 61 412 53 408 55 409 b 125 434 80 421 103 430 b 185 441 145 440 166 441 b 409 244 310 441 409 353 b 401 191 409 227 406 209 b 197 43 375 105 287 43 b 159 47 183 43 171 44 b 23 123 112 56 61 86 b 0 180 6 140 0 159 b 76 260 0 220 31 260 b 92 259 81 260 87 259 b 152 183 132 251 152 216 b 100 112 152 152 134 122 b 95 111 98 112 95 111 b 95 111 95 111 95 111 b 129 98 95 109 119 101 b 148 97 136 97 141 97 b 264 235 206 97 261 158 b 265 248 265 240 265 244 b 210 398 265 312 243 373 b 179 408 201 406 194 408 b 174 408 178 408 176 408 b 53 369 130 408 88 394 b 34 359 39 359 38 359 b 17 374 24 359 17 365 b 39 628 17 384 38 625 b 47 637 40 631 43 635 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 ', + }, + timeSig6: { + x_min: 0, + x_max: 475.03125, + ha: 485, + o: 'm 255 648 b 274 648 259 648 266 648 b 314 646 288 648 307 648 b 450 555 374 637 438 594 b 454 530 453 546 454 538 b 375 451 454 485 416 451 b 328 467 359 451 343 455 b 300 526 310 483 300 503 b 352 598 300 557 319 589 b 356 599 355 598 356 599 b 352 602 356 599 355 601 b 288 616 330 612 308 616 b 210 584 257 616 230 605 b 164 433 189 559 174 508 b 160 374 163 415 160 381 b 160 374 160 374 160 374 b 160 374 160 374 160 374 b 168 377 160 374 164 376 b 258 395 200 390 228 395 b 366 367 294 395 328 387 b 475 223 436 333 475 283 b 472 197 475 215 473 206 b 349 65 462 141 419 95 b 259 43 317 51 288 43 b 167 69 230 43 200 52 b 4 290 80 113 20 195 b 0 349 1 309 0 328 b 20 467 0 391 6 433 b 255 648 58 563 155 637 m 269 363 b 257 363 265 363 261 363 b 210 345 236 363 220 356 b 186 226 196 324 186 272 b 187 198 186 216 186 206 b 213 95 191 151 202 112 b 257 76 221 83 238 76 b 270 77 261 76 266 76 b 321 156 299 81 310 99 b 329 229 326 183 329 206 b 321 301 329 252 326 274 b 269 363 311 342 298 359 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 ', + }, + timeSig7: { + x_min: 0, + x_max: 442.359375, + ha: 451, + o: 'm 147 648 b 166 649 153 649 160 649 b 313 598 217 649 273 630 b 340 587 323 588 328 587 l 341 587 b 412 628 367 587 390 601 b 427 638 416 635 421 638 b 439 632 431 638 435 637 b 442 623 441 630 442 628 b 430 569 442 616 439 603 b 352 369 408 492 377 410 b 300 259 325 324 313 298 b 273 84 283 205 273 140 b 265 55 273 65 272 59 l 261 54 l 181 54 l 99 54 l 96 55 b 91 61 95 56 92 59 l 89 63 l 89 77 b 147 263 89 133 111 202 b 261 401 176 313 212 355 b 378 541 315 449 349 489 l 382 548 l 375 544 b 240 495 333 512 285 495 b 129 535 198 495 160 509 b 84 560 108 552 95 560 b 76 559 81 560 78 560 b 31 487 59 555 43 530 b 14 470 27 473 24 470 b 1 477 8 470 4 471 l 0 480 l 0 553 l 0 627 l 1 630 b 16 638 4 635 9 638 b 23 635 17 638 20 637 b 49 626 36 626 39 626 b 96 638 59 626 80 630 b 104 639 99 638 102 639 b 117 644 107 641 112 642 b 147 648 125 645 137 648 m 220 -1 l 221 -1 l 219 -1 l 220 -1 m 220 673 l 221 673 l 219 673 l 220 673 ', + }, + timeSig8: { + x_min: 0, + x_max: 488.640625, + ha: 499, + o: 'm 217 648 b 245 649 225 648 235 649 b 453 516 343 649 430 595 b 458 478 455 503 458 491 b 412 370 458 440 441 398 b 411 369 412 369 411 369 b 415 365 411 367 412 367 b 488 231 462 331 488 281 b 472 165 488 208 483 186 b 243 43 434 86 338 43 b 63 104 178 43 112 62 b 0 233 20 140 0 186 b 73 365 0 283 24 331 l 77 369 l 72 374 b 29 476 42 406 29 441 b 217 648 29 557 103 635 m 258 605 b 242 606 253 605 247 606 b 157 552 198 606 157 580 b 160 541 157 548 159 544 b 319 413 176 503 242 452 l 337 403 l 338 406 b 359 476 352 428 359 452 b 258 605 359 537 318 595 m 138 326 b 130 330 134 328 130 330 b 130 330 130 330 130 330 b 107 305 127 330 112 313 b 84 231 91 281 84 256 b 243 86 84 156 151 86 b 249 87 245 86 246 87 b 347 156 303 88 347 120 b 344 172 347 162 345 167 b 156 319 325 227 257 281 b 138 326 151 322 144 324 m 243 -1 l 245 -1 l 242 -1 l 243 -1 m 243 673 l 245 673 l 242 673 l 243 673 ', + }, + timeSig9: { + x_min: 0, + x_max: 475.03125, + ha: 485, + o: 'm 191 646 b 212 649 198 648 205 649 b 255 644 227 649 243 646 b 458 448 348 616 428 539 b 475 342 469 415 475 378 b 460 244 475 308 469 274 b 193 44 421 124 303 44 b 91 69 157 44 122 51 b 19 161 43 97 19 126 b 21 181 19 167 20 174 b 98 241 32 220 65 241 b 170 186 129 241 160 223 b 172 166 171 179 172 173 b 121 94 172 134 152 102 b 117 93 118 94 117 93 b 121 90 117 93 118 91 b 185 76 142 80 164 76 b 270 119 220 76 251 91 b 308 259 287 145 300 194 b 313 317 310 277 313 310 b 313 317 313 317 313 317 b 313 317 313 317 313 317 b 304 315 313 317 308 316 b 216 295 273 302 245 295 b 145 308 193 295 170 299 b 19 398 88 327 42 360 b 0 469 5 420 0 444 b 24 551 0 496 8 526 b 191 646 54 596 125 637 m 227 614 b 215 616 224 616 220 616 b 202 614 210 616 206 616 b 152 535 174 610 163 592 b 144 463 147 509 144 485 b 152 391 144 440 147 417 b 216 328 163 344 179 328 b 280 391 253 328 269 344 b 288 463 285 417 288 440 b 280 535 288 485 285 509 b 227 614 269 594 258 610 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 ', + }, + timeSigCommon: { + x_min: -1.359375, + x_max: 556.6875, + ha: 568, + o: 'm 294 322 b 318 323 299 322 308 323 b 360 320 334 323 352 322 b 526 217 430 310 490 273 b 543 166 537 202 543 184 b 447 70 543 117 503 70 b 445 70 447 70 446 70 b 359 159 394 72 359 113 b 368 201 359 173 362 187 b 442 245 382 229 412 245 b 455 244 446 245 451 245 b 460 244 458 244 460 244 b 460 244 460 244 460 244 b 454 248 460 244 458 245 b 325 291 417 276 372 291 b 285 287 313 291 299 290 b 144 -2 183 269 144 190 b 281 -290 144 -208 179 -280 b 304 -291 289 -291 298 -291 b 524 -105 412 -291 506 -212 b 541 -84 526 -88 530 -84 b 556 -101 551 -84 556 -90 b 549 -138 556 -111 553 -122 b 334 -322 521 -237 435 -310 b 302 -324 323 -323 313 -324 b 13 -101 172 -324 54 -234 b -1 -1 4 -68 -1 -34 b 294 322 -1 161 121 303 ', + }, + timeSigCutCommon: { + x_min: 0, + x_max: 556.6875, + ha: 568, + o: 'm 289 545 b 298 546 292 545 295 546 b 318 533 306 546 315 541 b 319 428 319 530 319 528 l 319 327 l 334 327 b 526 223 412 326 485 285 b 543 172 537 206 543 190 b 447 76 543 122 503 76 b 445 76 446 76 446 76 b 359 165 394 77 359 119 b 368 205 359 179 362 192 b 441 251 382 233 412 251 b 455 249 446 251 451 251 b 460 248 458 249 460 248 b 460 248 460 248 460 248 b 454 254 460 249 458 251 b 334 295 419 280 378 294 l 319 295 l 319 4 l 319 -287 l 321 -285 b 328 -285 322 -285 325 -285 b 524 -99 424 -277 507 -198 b 541 -79 526 -84 530 -79 b 556 -97 551 -79 556 -84 b 548 -133 556 -105 553 -117 b 334 -317 521 -233 434 -306 b 322 -319 329 -317 323 -317 l 319 -319 l 319 -424 b 319 -471 319 -444 319 -459 b 313 -541 319 -544 318 -535 b 298 -548 308 -545 303 -548 b 279 -534 289 -548 281 -542 b 277 -424 277 -531 277 -530 l 277 -317 l 273 -317 b 13 -95 153 -305 51 -217 b 0 2 4 -62 0 -29 b 182 295 0 126 66 238 b 274 324 210 309 249 320 l 277 324 l 277 427 b 279 533 277 528 277 530 b 289 545 281 538 285 542 m 277 2 b 277 291 277 161 277 291 b 268 288 277 291 273 290 b 144 1 179 265 144 184 b 276 -284 144 -199 175 -267 l 277 -285 l 277 2 ', + }, + timeSigPlus: { + x_min: 0, + x_max: 319.859375, + ha: 326, + o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ', + }, + timeSigPlusSmall: { + x_min: 0, + x_max: 319.859375, + ha: 326, + o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ', + }, + timeSigMinus: { + x_min: 0, + x_max: 318.5, + ha: 325, + o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ', + }, + timeSigParensRight: { + x_min: 25.859375, + x_max: 164.6875, + ha: 168, + o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ', + }, + timeSigParensRightSmall: { + x_min: 25.859375, + x_max: 164.6875, + ha: 168, + o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ', + }, + timeSigParensLeft: { + x_min: -166.0625, + x_max: -25.859375, + ha: 0, + o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ', + }, + timeSigParensLeftSmall: { + x_min: -166.0625, + x_max: -25.859375, + ha: 0, + o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ', + }, + noteheadDoubleWhole: { + x_min: 0, + x_max: 902.421875, + ha: 921, + o: 'm 17 240 b 24 241 19 241 21 241 b 32 240 28 241 31 241 b 46 229 38 238 43 234 b 50 88 50 223 50 237 b 50 -1 50 63 50 34 b 50 -90 50 -36 50 -65 b 46 -231 50 -238 50 -224 b 25 -242 42 -238 34 -242 b 0 -224 14 -242 4 -235 b 0 2 0 -222 0 -108 b 0 223 0 112 0 220 b 17 240 2 230 9 237 m 110 240 b 118 241 111 241 114 241 b 126 240 121 241 123 241 b 142 223 133 237 140 230 b 144 123 144 220 144 205 b 144 29 144 45 144 29 b 144 29 144 29 144 29 b 393 183 166 106 264 167 b 450 186 412 184 431 186 b 756 29 600 186 732 120 b 756 29 756 29 756 29 b 758 123 758 29 758 45 b 760 227 758 226 758 223 b 784 241 766 237 774 241 b 804 229 792 241 800 237 b 809 88 808 223 809 237 l 809 -1 l 809 -90 b 804 -231 809 -238 808 -224 b 784 -242 800 -238 792 -242 b 762 -231 775 -242 766 -238 b 758 -124 756 -224 758 -231 b 756 -30 758 -47 758 -30 b 756 -30 756 -30 756 -30 b 509 -184 736 -108 637 -169 b 450 -187 488 -187 469 -187 b 144 -30 300 -187 168 -122 b 144 -30 144 -30 144 -30 b 144 -124 144 -30 144 -47 b 140 -231 144 -231 144 -224 b 118 -242 134 -238 126 -242 b 92 -224 107 -242 96 -235 b 92 2 92 -222 92 -108 b 92 223 92 112 92 220 b 110 240 95 230 102 237 m 432 161 b 413 162 426 162 420 162 b 313 41 351 162 313 109 b 347 -73 313 5 323 -34 b 487 -163 385 -133 439 -163 b 578 -97 526 -163 562 -142 b 588 -43 585 -80 588 -62 b 432 161 588 47 518 147 m 868 240 b 876 241 869 241 872 241 b 884 240 879 241 882 241 b 898 229 890 238 894 234 b 902 88 902 223 902 237 l 902 -1 l 902 -90 b 898 -231 902 -238 902 -224 b 876 -242 892 -238 884 -242 b 852 -224 865 -242 854 -235 b 850 2 850 -222 850 -108 b 852 223 850 112 850 220 b 868 240 853 230 860 237 ', + }, + noteheadWhole: { + x_min: 0, + x_max: 619.3125, + ha: 632, + o: 'm 274 184 b 307 186 285 186 296 186 b 616 22 465 186 597 116 b 619 -1 617 13 619 5 b 308 -187 619 -104 483 -187 b 0 -1 133 -187 0 -102 b 5 36 0 11 1 23 b 274 184 29 115 141 176 m 289 161 b 272 162 284 162 277 162 b 171 41 209 162 171 108 b 205 -73 171 5 182 -34 b 345 -163 243 -133 298 -163 b 436 -98 385 -163 420 -142 b 446 -43 443 -80 446 -62 b 289 161 446 47 377 147 ', + }, + noteheadHalf: { + x_min: 0, + x_max: 428.75, + ha: 438, + o: 'm 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 m 366 131 b 352 134 362 133 357 134 b 219 81 321 134 269 115 b 47 -111 126 23 50 -62 b 47 -112 47 -111 47 -112 b 77 -136 47 -129 58 -136 b 264 -45 118 -136 194 -101 b 382 109 336 12 382 76 b 366 131 382 120 377 129 ', + }, + noteheadBlack: { + x_min: 0, + x_max: 428.75, + ha: 438, + o: 'm 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 ', + }, + noteheadXWhole: { + x_min: 0, + x_max: 598.890625, + ha: 611, + o: 'm 62 181 b 77 183 66 183 72 183 b 91 181 83 183 88 183 b 202 131 100 180 106 177 l 299 87 l 394 131 b 517 183 499 181 502 183 b 519 183 517 183 518 183 b 598 104 567 183 598 144 b 577 49 598 84 592 65 b 518 15 567 38 563 37 b 484 0 499 6 484 0 b 518 -16 484 -1 499 -8 b 577 -51 563 -38 567 -40 b 598 -105 592 -66 598 -86 b 519 -184 598 -145 567 -184 b 517 -184 518 -184 517 -184 b 394 -133 502 -184 499 -183 l 299 -88 l 202 -133 b 81 -184 99 -183 95 -184 b 77 -184 80 -184 78 -184 b 0 -105 29 -184 0 -145 b 20 -51 0 -86 5 -66 b 80 -16 29 -40 34 -38 b 114 -1 98 -8 114 -1 b 80 15 114 0 98 6 b 20 49 34 37 29 38 b 0 104 6 65 0 84 b 62 181 0 140 23 174 m 88 134 b 74 136 85 134 80 136 b 68 134 72 136 69 136 b 46 104 54 130 46 117 b 55 81 46 95 49 88 b 149 34 59 76 53 80 b 224 -1 190 15 224 0 b 144 -38 224 -1 187 -18 b 54 -84 59 -79 58 -79 b 46 -105 49 -90 46 -98 b 76 -137 46 -122 58 -137 b 78 -137 77 -137 77 -137 b 194 -86 87 -137 76 -141 b 298 -36 250 -58 298 -36 b 298 -36 298 -36 298 -36 b 402 -84 299 -36 345 -58 b 518 -137 522 -141 510 -137 b 521 -137 519 -137 519 -137 b 551 -105 539 -137 551 -122 b 541 -83 551 -98 548 -90 b 447 -36 537 -77 544 -81 b 374 -1 406 -16 374 -1 b 447 34 374 0 406 15 b 541 81 544 80 537 76 b 551 104 548 88 551 97 b 521 136 551 120 539 136 b 518 136 519 136 519 136 b 517 136 518 136 517 136 l 517 136 b 402 83 511 136 511 136 b 298 34 345 56 299 34 b 298 34 298 34 298 34 b 194 84 298 34 250 56 b 88 134 137 111 89 133 ', + }, + noteheadXHalf: { + x_min: 0, + x_max: 406.96875, + ha: 415, + o: 'm 55 181 b 70 183 61 183 66 183 b 111 170 85 183 99 179 b 160 130 115 167 137 149 l 202 95 l 245 130 b 319 181 299 176 302 179 b 334 183 325 183 330 183 b 406 109 375 183 406 148 b 401 81 406 99 405 91 b 348 24 394 65 390 59 b 318 -1 332 11 318 0 b 348 -26 318 -1 332 -12 b 401 -83 390 -61 394 -66 b 406 -111 405 -93 406 -101 b 334 -184 406 -149 375 -184 b 319 -183 330 -184 325 -184 b 245 -131 302 -180 299 -177 l 202 -97 l 160 -131 b 85 -183 107 -177 103 -180 b 70 -184 80 -184 76 -184 b 0 -111 31 -184 0 -149 b 4 -83 0 -101 1 -93 b 58 -26 10 -66 16 -61 b 88 -1 74 -12 88 -1 b 58 24 88 0 74 11 b 10 69 23 54 17 59 b 0 109 2 81 0 95 b 55 181 0 142 21 173 m 83 133 b 72 136 78 136 76 136 b 57 131 66 136 61 134 b 46 109 49 126 46 117 b 50 93 46 104 47 98 b 107 45 51 91 77 70 b 160 0 137 20 160 0 b 107 -47 160 -1 137 -22 b 50 -94 77 -72 51 -93 b 46 -111 47 -99 46 -105 b 59 -134 46 -120 50 -130 b 72 -137 62 -136 68 -137 b 83 -136 76 -137 80 -136 b 144 -84 84 -134 107 -116 b 202 -36 176 -58 202 -36 b 261 -84 202 -36 230 -58 b 323 -136 299 -116 321 -134 b 334 -137 326 -136 330 -137 b 345 -134 338 -137 343 -136 b 360 -111 355 -130 360 -120 b 355 -94 360 -105 359 -99 b 299 -47 353 -93 329 -72 b 245 0 269 -22 245 -1 b 299 45 245 0 269 20 b 355 93 329 70 353 91 b 360 109 359 98 360 104 b 345 133 360 119 355 129 b 334 136 343 134 338 136 b 323 134 330 136 326 134 b 261 83 321 133 299 115 b 202 34 230 56 202 34 b 144 83 202 34 176 56 b 83 133 106 115 84 133 ', + }, + noteheadXBlack: { + x_min: 0, + x_max: 406.96875, + ha: 415, + o: 'm 21 183 b 28 183 24 183 25 183 b 42 181 34 183 39 183 b 127 108 47 179 47 179 b 202 41 168 72 202 41 b 279 108 204 41 238 72 b 357 177 321 145 356 176 b 375 183 363 181 370 183 b 406 151 392 183 406 169 b 404 137 406 147 405 141 b 322 62 401 131 398 129 b 251 0 284 27 251 0 b 322 -63 251 -1 284 -29 b 404 -138 398 -130 401 -133 b 406 -152 405 -142 406 -148 b 375 -184 406 -170 392 -184 b 357 -179 370 -184 363 -183 b 279 -109 356 -177 321 -147 b 202 -43 238 -73 204 -43 b 127 -109 202 -43 168 -73 b 49 -179 85 -147 50 -177 b 31 -184 43 -183 36 -184 b 0 -152 13 -184 0 -170 b 2 -138 0 -148 0 -142 b 83 -63 5 -133 8 -130 b 155 0 122 -29 155 -1 b 83 62 155 0 122 27 b 8 129 43 97 10 127 b 0 151 2 136 0 144 b 21 183 0 165 8 177 ', + }, + noteheadTriangleUpWhole: { + x_min: 0, + x_max: 630.203125, + ha: 643, + o: 'm 308 204 b 314 205 310 205 313 205 b 326 201 319 205 323 204 b 355 154 328 199 338 180 b 401 83 362 142 392 95 l 409 72 b 431 41 412 66 424 49 b 619 -174 498 -51 570 -134 b 630 -192 626 -180 630 -186 b 626 -202 630 -195 628 -199 b 616 -206 623 -205 620 -206 b 552 -188 608 -206 592 -202 b 310 -155 488 -169 392 -155 b 268 -156 295 -155 281 -155 b 77 -188 197 -161 126 -173 b 13 -206 35 -202 20 -206 b 9 -206 12 -206 10 -206 b 0 -191 2 -202 0 -197 b 8 -176 0 -186 2 -180 b 204 49 58 -136 138 -43 l 220 72 l 227 83 b 295 188 245 108 281 166 b 308 204 299 197 304 202 m 315 147 b 314 147 315 147 314 147 b 314 147 314 147 314 147 b 306 129 314 145 310 138 l 296 105 b 281 72 292 97 284 77 l 274 56 b 181 -123 247 -4 212 -72 l 174 -134 l 176 -133 b 314 -123 215 -127 272 -123 b 451 -133 356 -123 413 -127 l 454 -134 l 449 -123 b 353 56 417 -72 381 -4 l 347 72 b 332 105 344 77 336 97 l 322 129 b 315 147 318 138 315 145 ', + }, + noteheadTriangleUpHalf: { + x_min: 0, + x_max: 438.28125, + ha: 447, + o: 'm 212 205 b 219 205 213 205 216 205 b 239 183 228 205 231 204 b 421 -163 298 40 363 -83 b 438 -191 434 -180 438 -186 b 436 -197 438 -192 438 -195 b 424 -206 434 -204 431 -206 b 406 -201 420 -206 415 -205 b 216 -156 347 -172 281 -156 b 23 -205 148 -156 80 -173 b 14 -206 20 -206 17 -206 b 0 -191 6 -206 0 -201 b 6 -176 0 -187 1 -183 b 202 192 63 -104 142 45 b 212 205 205 199 208 202 m 264 48 l 249 81 l 243 94 l 242 91 b 89 -126 208 36 137 -66 b 81 -138 85 -133 81 -138 b 81 -138 81 -138 81 -138 b 81 -138 81 -138 81 -138 b 95 -133 81 -138 87 -136 b 280 -94 156 -108 221 -94 b 334 -98 299 -94 317 -95 b 343 -99 338 -99 343 -99 b 343 -99 343 -99 343 -99 b 338 -94 343 -99 341 -97 b 264 48 318 -58 287 1 ', + }, + noteheadTriangleUpBlack: { + x_min: -1.359375, + x_max: 436.921875, + ha: 446, + o: 'm 213 205 b 217 205 215 205 216 205 b 234 194 224 205 234 199 b 236 187 234 194 235 190 l 245 167 l 261 129 l 270 106 b 355 -61 294 54 329 -13 b 420 -163 381 -105 402 -138 b 436 -188 435 -184 436 -184 b 436 -191 436 -190 436 -190 b 421 -206 436 -201 431 -206 l 421 -206 l 416 -206 l 405 -201 b 217 -158 347 -172 283 -158 b 31 -201 153 -158 88 -172 l 20 -206 l 14 -206 l 14 -206 b 0 -191 5 -206 0 -201 b -1 -188 0 -190 -1 -190 b 14 -163 -1 -186 0 -184 b 95 -34 36 -136 72 -77 b 166 106 119 8 148 68 l 175 129 l 183 148 l 200 188 b 213 205 205 199 208 202 ', + }, + noteheadDiamondWhole: { + x_min: 0, + x_max: 432.828125, + ha: 442, + o: 'm 208 184 b 213 187 209 186 212 187 b 224 176 217 187 221 183 b 245 147 225 172 235 159 b 419 -1 288 90 347 38 b 431 -8 424 -4 431 -8 b 432 -12 432 -9 432 -11 b 430 -18 432 -13 432 -16 b 364 -61 424 -20 383 -47 b 225 -183 307 -102 250 -152 b 223 -187 224 -184 223 -187 b 220 -188 221 -188 220 -188 b 208 -176 216 -188 210 -184 b 187 -148 205 -173 197 -159 b 12 0 144 -90 84 -38 b 0 11 4 5 0 8 b 16 24 0 13 4 18 b 183 158 83 69 141 115 b 208 184 194 169 198 173 m 183 105 b 176 113 181 109 176 113 b 172 109 176 113 175 112 b 92 45 149 90 117 62 l 88 41 l 102 31 b 247 -105 160 -6 210 -55 l 254 -115 l 257 -112 l 269 -102 b 340 -45 287 -87 319 -61 l 344 -43 l 330 -33 b 183 105 272 6 221 54 ', + }, + noteheadDiamondHalf: { + x_min: 0, + x_max: 438.28125, + ha: 447, + o: 'm 212 190 b 219 191 213 191 216 191 b 236 176 225 191 228 190 b 419 18 277 105 341 49 b 436 5 431 13 434 11 b 438 -1 438 4 438 1 b 424 -16 438 -8 432 -13 b 356 -49 409 -20 379 -36 b 234 -180 306 -83 258 -133 b 219 -192 230 -188 224 -192 b 200 -176 213 -192 206 -187 b 9 -15 157 -102 89 -45 b 0 0 2 -12 0 -6 b 16 18 0 9 2 12 b 200 176 93 48 159 104 b 212 190 205 186 208 188 m 239 113 b 236 117 238 116 238 117 b 230 108 235 117 234 115 b 92 -15 196 58 140 8 b 88 -18 91 -16 88 -18 b 92 -20 88 -18 91 -19 b 198 -116 130 -43 166 -74 b 200 -117 200 -117 200 -117 b 201 -117 200 -117 201 -117 b 264 -43 212 -98 242 -62 b 345 15 288 -19 321 4 b 348 18 347 16 348 16 b 344 20 348 18 347 19 b 239 113 307 41 266 79 ', + }, + noteheadDiamondBlack: { + x_min: 0, + x_max: 432.828125, + ha: 442, + o: 'm 209 186 b 213 187 210 187 212 187 b 216 187 215 187 216 187 b 224 174 216 186 220 180 b 420 -1 269 105 338 43 b 432 -12 431 -8 432 -9 b 421 -23 432 -15 432 -16 b 228 -180 345 -70 264 -137 b 219 -188 221 -188 221 -188 l 219 -188 b 208 -177 215 -188 215 -188 b 10 1 163 -106 93 -44 b 0 11 0 6 0 8 b 10 22 0 13 0 15 b 202 179 87 69 167 136 b 209 186 206 183 209 186 ', + }, + augmentationDot: { + x_min: 0, + x_max: 133.390625, + ha: 136, + o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ', + }, + tremolo1: { + x_min: -206.890625, + x_max: 428.75, + ha: 438, + o: 'm 389 -351 b 394 -351 390 -351 393 -351 b 428 -385 413 -351 428 -367 b 428 -394 428 -388 428 -391 b 394 -428 426 -406 421 -410 l 332 -473 l 269 -516 l 205 -560 l 141 -603 l 77 -648 l 13 -692 l -50 -737 l -114 -780 l -145 -802 b -171 -813 -157 -810 -163 -813 b -175 -813 -172 -813 -174 -813 b -206 -777 -194 -811 -206 -795 b -202 -760 -206 -771 -205 -766 b -87 -675 -197 -752 -206 -757 l -34 -639 l 83 -557 l 145 -514 l 209 -470 l 272 -427 b 389 -351 375 -356 381 -352 ', + }, + flag8thUp: { + x_min: -24.5, + x_max: 317.140625, + ha: 324, + o: 'm -24 -161 l -24 -5 l -20 -5 b 0 -24 -9 -5 -2 -12 b 171 -315 21 -124 84 -233 b 317 -660 268 -406 317 -531 b 187 -1014 317 -782 274 -909 b 161 -1034 172 -1034 171 -1034 b 141 -1013 149 -1034 141 -1025 b 152 -991 141 -1004 142 -1002 b 266 -682 228 -899 266 -788 b 174 -430 266 -588 236 -498 b -23 -317 136 -388 66 -348 b -24 -161 -23 -316 -24 -285 ', + }, + flag8thDown: { + x_min: -21.78125, + x_max: 367.5, + ha: 375, + o: 'm 230 1031 b 238 1032 232 1032 235 1032 b 259 1014 245 1032 251 1027 b 367 662 330 906 367 782 b 364 602 367 641 367 621 b 232 317 352 488 304 384 b 57 120 155 245 103 187 b -1 18 31 84 6 40 b -19 4 -4 11 -12 4 l -21 4 l -21 159 l -21 315 l -16 315 b 96 335 10 315 62 324 b 315 695 227 380 315 527 b 313 738 315 709 314 724 b 224 991 304 825 273 916 b 216 1013 219 999 216 1007 b 230 1031 216 1021 220 1028 ', + }, + flag16thUp: { + x_min: -24.5, + x_max: 317.140625, + ha: 324, + o: 'm -24 -147 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 58 -123 6 -43 31 -86 b 196 -278 93 -173 134 -219 b 317 -570 274 -356 317 -460 b 294 -713 317 -617 308 -666 l 289 -724 l 294 -735 b 317 -873 308 -780 317 -827 b 235 -1132 317 -963 288 -1054 b 209 -1165 228 -1140 224 -1146 b 189 -1177 204 -1172 196 -1177 b 171 -1164 182 -1177 175 -1172 b 168 -1154 170 -1161 168 -1159 b 181 -1132 168 -1149 172 -1142 b 269 -891 238 -1064 269 -975 b 269 -881 269 -886 269 -884 b 262 -814 269 -857 265 -827 b 258 -800 261 -811 259 -806 b 142 -628 240 -731 198 -667 b -8 -589 112 -606 47 -589 b -20 -589 -13 -589 -19 -589 l -24 -589 l -24 -449 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 58 -424 6 -345 31 -388 b 194 -580 93 -476 136 -523 b 259 -660 221 -606 245 -635 b 261 -663 259 -662 261 -663 b 264 -656 262 -663 262 -660 b 269 -587 268 -632 269 -610 b 264 -521 269 -566 268 -544 b 262 -512 264 -517 262 -513 b 258 -498 261 -509 259 -503 b 142 -326 240 -428 198 -365 b -8 -287 112 -303 47 -288 b -20 -287 -13 -287 -19 -287 l -24 -287 l -24 -147 ', + }, + flag16thDown: { + x_min: -21.78125, + x_max: 362.0625, + ha: 369, + o: 'm 302 1031 b 308 1032 304 1032 307 1032 b 330 1016 318 1032 325 1027 b 362 867 351 970 362 920 b 340 738 362 824 353 780 l 336 727 l 340 717 b 362 591 355 677 362 634 b 257 323 362 496 325 401 b 204 272 243 306 227 290 b 20 56 129 206 66 133 b -1 18 12 44 0 22 b -19 4 -4 9 -12 4 l -21 4 l -21 140 l -21 276 l -12 277 b 167 333 61 288 127 309 b 319 598 262 388 319 491 b 311 664 319 620 317 642 l 310 673 l 304 664 b 204 548 279 620 250 587 b 20 333 129 483 66 409 b -1 292 12 320 0 298 b -19 280 -4 285 -12 280 l -21 280 l -21 416 l -21 552 l -12 553 b 167 609 61 564 127 585 b 319 874 264 666 319 770 b 294 992 319 914 311 954 b 288 1011 288 1004 288 1007 b 302 1031 288 1021 294 1028 ', + }, + flag32ndUp: { + x_min: -24.5, + x_max: 315.78125, + ha: 322, + o: 'm -24 -145 l -24 -5 l -20 -5 b 1 -26 -10 -5 -6 -9 b 175 -241 31 -86 96 -166 b 314 -548 259 -323 304 -420 b 315 -589 315 -555 315 -571 b 314 -630 315 -606 315 -623 b 298 -730 311 -664 306 -699 l 295 -742 l 296 -748 b 314 -850 304 -778 311 -813 b 315 -892 315 -857 315 -874 b 314 -932 315 -909 315 -925 b 298 -1032 311 -967 306 -1002 l 295 -1045 l 296 -1050 b 314 -1153 304 -1081 311 -1115 b 315 -1193 315 -1160 315 -1177 b 314 -1235 315 -1211 315 -1228 b 217 -1526 306 -1338 270 -1444 b 201 -1533 213 -1532 208 -1533 b 182 -1522 193 -1533 185 -1529 b 179 -1514 181 -1518 179 -1517 b 189 -1489 179 -1508 182 -1501 b 266 -1217 240 -1403 266 -1308 b 262 -1156 266 -1196 265 -1177 b 110 -907 247 -1043 190 -950 b 0 -889 87 -895 50 -889 l -1 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 1 -631 -10 -610 -6 -614 b 175 -846 31 -691 96 -771 b 259 -956 213 -884 236 -914 b 265 -966 262 -961 264 -966 b 265 -966 265 -966 265 -966 b 265 -953 265 -964 265 -959 b 266 -920 266 -943 266 -932 b 262 -853 266 -898 265 -873 b 110 -605 247 -741 190 -648 b 0 -587 87 -592 50 -587 l -1 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 1 -328 -10 -308 -6 -312 b 175 -544 31 -388 96 -469 b 259 -655 213 -581 236 -612 b 265 -663 262 -659 264 -663 b 265 -663 265 -663 265 -663 b 265 -650 265 -663 265 -657 b 266 -617 266 -641 266 -630 b 262 -551 266 -595 265 -570 b 110 -303 247 -438 190 -345 b 0 -284 87 -290 50 -284 l -1 -284 l -24 -284 l -24 -145 ', + }, + flag32ndDown: { + x_min: -21.78125, + x_max: 366.140625, + ha: 374, + o: 'm 276 1378 b 284 1379 279 1379 281 1379 b 306 1360 292 1379 298 1374 b 352 1247 326 1326 343 1286 b 366 1139 362 1213 366 1175 b 347 1009 366 1093 359 1049 l 344 1002 l 347 992 b 352 971 348 986 351 977 b 366 863 362 936 366 899 b 347 732 366 818 359 773 l 344 725 l 347 716 b 352 695 348 710 351 700 b 366 588 362 659 366 623 b 223 262 366 464 314 345 b 189 233 212 252 212 252 b 35 76 126 183 73 129 b -1 16 20 56 2 27 b -19 4 -4 9 -12 4 l -21 4 l -21 137 l -21 270 l -17 270 b 186 344 59 281 134 308 b 319 606 270 399 319 499 b 317 650 319 620 319 635 l 315 659 l 314 655 b 223 537 288 607 258 570 b 189 509 212 528 212 528 b 35 352 126 459 73 405 b -1 292 20 333 2 303 b -19 280 -4 285 -12 280 l -21 280 l -21 413 l -21 546 l -17 546 b 186 620 59 557 134 584 b 319 882 270 675 319 775 b 317 925 319 896 319 911 l 315 935 l 314 931 b 223 813 288 884 258 846 b 189 785 212 805 212 805 b 35 628 126 735 73 681 b -1 569 20 609 2 580 b -19 556 -4 562 -12 556 l -21 556 l -21 689 l -21 823 l -17 823 b 202 907 68 835 152 867 b 319 1157 280 968 319 1061 b 270 1338 319 1218 303 1281 b 262 1358 264 1349 262 1353 b 262 1364 262 1360 262 1363 b 276 1378 265 1371 269 1376 ', + }, + flag64thUp: { + x_min: -24.5, + x_max: 314.421875, + ha: 321, + o: 'm -24 -145 l -24 -5 l -20 -5 b 0 -23 -9 -5 -2 -12 b 27 -87 4 -38 14 -66 b 138 -220 53 -136 88 -177 b 235 -328 179 -255 208 -288 b 314 -592 287 -409 314 -501 b 292 -732 314 -639 307 -687 l 289 -742 l 294 -756 b 314 -896 307 -802 314 -849 b 292 -1035 314 -943 307 -991 l 289 -1045 l 294 -1057 b 314 -1197 307 -1104 314 -1152 b 292 -1338 314 -1246 307 -1292 l 289 -1347 l 294 -1360 b 314 -1500 307 -1407 314 -1454 b 273 -1689 314 -1565 300 -1628 b 250 -1712 265 -1710 261 -1712 b 228 -1691 236 -1712 228 -1704 l 228 -1685 l 234 -1675 b 270 -1507 258 -1621 270 -1564 b 98 -1193 270 -1381 209 -1261 b 40 -1174 76 -1179 58 -1174 b -10 -1189 24 -1174 8 -1178 b -20 -1192 -14 -1192 -16 -1192 l -24 -1192 l -24 -1052 l -24 -913 l -20 -913 b 0 -931 -9 -913 -2 -920 b 27 -995 4 -946 14 -974 b 138 -1128 53 -1043 88 -1085 b 257 -1275 190 -1172 228 -1220 b 262 -1283 259 -1279 262 -1283 l 262 -1283 b 269 -1249 264 -1282 268 -1260 b 270 -1206 270 -1233 270 -1220 b 98 -891 270 -1075 206 -957 b 40 -871 76 -877 58 -871 b -10 -886 24 -871 8 -875 b -20 -889 -14 -889 -16 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 0 -628 -9 -610 -2 -617 b 27 -692 4 -644 14 -671 b 138 -825 53 -741 88 -782 b 257 -973 190 -870 228 -917 b 262 -981 259 -977 262 -981 l 262 -981 b 269 -946 264 -979 268 -957 b 270 -903 270 -931 270 -917 b 98 -588 270 -774 206 -655 b 40 -569 76 -574 58 -569 b -10 -584 24 -569 8 -574 b -20 -587 -14 -587 -16 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 0 -326 -9 -308 -2 -315 b 27 -390 4 -341 14 -369 b 138 -523 53 -438 88 -480 b 257 -670 190 -567 228 -614 b 262 -678 259 -674 262 -678 b 262 -678 262 -678 262 -678 b 269 -644 264 -677 268 -656 b 270 -601 270 -628 270 -614 b 98 -285 270 -471 206 -352 b 40 -266 76 -273 58 -266 b -10 -281 24 -266 8 -272 b -20 -284 -14 -284 -16 -284 l -24 -284 l -24 -145 ', + }, + flag64thDown: { + x_min: -21.78125, + x_max: 367.5, + ha: 375, + o: 'm 259 1553 b 265 1553 261 1553 264 1553 b 288 1540 272 1553 277 1550 b 367 1351 340 1493 367 1424 b 336 1221 367 1308 357 1263 l 332 1211 l 333 1208 b 367 1077 356 1170 367 1124 b 336 945 367 1032 357 986 l 332 935 l 333 932 b 367 800 356 893 367 848 b 336 669 367 756 357 710 l 332 659 l 333 656 b 367 523 356 617 367 571 b 345 412 367 485 360 446 b 231 273 322 356 284 310 b -1 19 121 195 27 93 b -17 4 -4 11 -10 5 l -21 4 l -21 134 l -21 265 l -17 265 b 133 291 20 265 96 278 b 318 537 245 328 318 433 b 307 603 318 559 315 582 b 303 614 304 612 304 614 b 298 609 302 614 300 613 b 231 549 281 589 258 567 b -1 295 121 471 27 369 b -17 280 -4 287 -10 281 l -21 280 l -21 410 l -21 541 l -17 541 b 133 567 20 541 96 555 b 318 813 245 605 318 709 b 307 880 318 835 315 859 b 303 891 304 888 304 891 b 298 885 302 891 300 888 b 231 825 281 866 258 843 b -1 571 121 748 27 645 b -17 556 -4 563 -10 557 l -21 556 l -21 687 l -21 817 l -17 817 b 133 843 20 817 96 830 b 318 1089 245 881 318 985 b 307 1156 318 1111 315 1134 b 303 1167 304 1164 304 1167 b 298 1161 302 1167 300 1164 b 231 1102 281 1140 258 1120 b -1 848 121 1024 27 921 b -17 832 -4 839 -10 834 l -21 832 l -21 963 l -21 1093 l -17 1093 b 114 1113 12 1093 78 1103 b 313 1314 215 1142 289 1218 b 318 1364 317 1331 318 1347 b 255 1511 318 1422 295 1478 b 243 1532 247 1519 243 1525 b 259 1553 243 1540 250 1550 ', + }, + flag128thUp: { + x_min: -24.5, + x_max: 313.0625, + ha: 319, + o: 'm -24 -133 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 142 -213 13 -61 74 -144 b 258 -376 196 -269 230 -315 b 313 -605 295 -449 313 -528 b 292 -742 313 -652 306 -699 b 288 -752 289 -748 288 -752 b 288 -752 288 -752 288 -752 b 292 -764 289 -753 291 -757 b 313 -907 306 -811 313 -860 b 292 -1045 313 -954 306 -1002 b 288 -1054 289 -1050 288 -1054 b 288 -1054 288 -1054 288 -1054 b 292 -1067 289 -1054 291 -1060 b 313 -1210 306 -1113 313 -1161 b 292 -1346 313 -1257 306 -1304 b 288 -1357 289 -1353 288 -1357 b 288 -1357 288 -1357 288 -1357 b 292 -1368 289 -1357 291 -1363 b 313 -1512 306 -1415 313 -1464 b 292 -1648 313 -1560 306 -1605 b 288 -1660 289 -1654 288 -1660 b 288 -1660 288 -1660 288 -1660 b 292 -1671 289 -1660 291 -1665 b 313 -1814 306 -1719 313 -1766 b 250 -2040 313 -1897 291 -1977 b 232 -2062 238 -2057 236 -2059 b 221 -2065 230 -2063 225 -2065 b 200 -2045 210 -2065 201 -2057 b 200 -2043 200 -2044 200 -2044 b 208 -2026 200 -2037 202 -2034 b 269 -1826 249 -1966 269 -1897 b 153 -1544 269 -1726 230 -1625 b -9 -1472 115 -1506 58 -1481 b -21 -1471 -14 -1471 -19 -1471 l -24 -1471 l -24 -1343 l -24 -1215 l -20 -1215 b -1 -1229 -12 -1215 -4 -1221 b 142 -1424 13 -1270 74 -1353 b 257 -1582 196 -1478 228 -1524 b 264 -1594 261 -1589 264 -1594 l 264 -1594 b 265 -1582 264 -1594 264 -1589 b 270 -1525 268 -1562 270 -1544 b 153 -1243 270 -1424 228 -1321 b -9 -1170 115 -1203 58 -1178 b -21 -1168 -14 -1170 -19 -1168 l -24 -1168 l -24 -1041 l -24 -913 l -20 -913 b -1 -927 -12 -913 -4 -918 b 142 -1121 13 -967 74 -1050 b 257 -1281 196 -1175 228 -1221 b 264 -1292 261 -1286 264 -1292 l 264 -1292 b 265 -1279 264 -1292 264 -1286 b 270 -1222 268 -1261 270 -1242 b 153 -941 270 -1121 228 -1018 b -9 -867 115 -900 58 -875 b -21 -866 -14 -867 -19 -866 l -24 -866 l -24 -738 l -24 -610 l -20 -610 b -1 -624 -12 -610 -4 -616 b 142 -818 13 -664 74 -749 b 257 -978 196 -873 228 -918 b 264 -989 261 -984 264 -989 l 264 -989 b 265 -977 264 -989 264 -984 b 270 -920 268 -959 270 -939 b 153 -638 270 -818 228 -716 b -9 -564 115 -598 58 -573 b -21 -563 -14 -564 -19 -563 l -24 -563 l -24 -435 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 142 -516 13 -363 74 -446 b 257 -675 196 -571 228 -616 b 264 -687 261 -681 264 -687 l 264 -687 b 265 -674 264 -687 264 -681 b 270 -617 268 -656 270 -637 b 153 -335 270 -516 228 -413 b -9 -262 115 -295 58 -270 b -21 -260 -14 -262 -19 -260 l -24 -260 l -24 -133 ', + }, + flag128thDown: { + x_min: -21.78125, + x_max: 367.5, + ha: 375, + o: 'm 276 1900 b 284 1901 279 1900 281 1901 b 306 1883 291 1901 298 1896 b 367 1686 347 1825 367 1757 b 343 1558 367 1643 359 1600 l 338 1549 l 343 1537 b 367 1411 359 1497 367 1454 b 343 1282 367 1367 359 1324 l 338 1272 l 343 1261 b 367 1135 359 1221 367 1178 b 343 1007 367 1090 359 1047 l 338 996 l 343 985 b 367 859 359 945 367 902 b 343 731 367 814 359 771 l 338 720 l 343 709 b 367 582 359 667 367 626 b 289 362 367 503 340 426 b 239 312 276 345 259 330 b 29 77 152 237 76 152 b -1 18 14 54 2 30 b -19 4 -4 11 -12 4 l -21 4 l -21 133 l -20 260 l -13 262 b 98 299 17 269 62 284 b 111 305 103 302 110 305 b 167 334 123 310 156 327 b 319 595 264 391 319 491 b 313 659 319 616 318 638 b 310 667 311 664 311 667 b 307 663 310 667 308 666 b 240 588 289 637 269 614 b 16 331 141 505 62 413 b -1 294 8 316 1 302 b -19 280 -4 287 -12 280 l -21 280 l -21 408 l -20 537 l -13 538 b 98 576 17 545 62 560 b 111 581 103 578 110 581 b 167 610 123 587 156 603 b 319 871 264 667 319 767 b 313 935 319 892 318 913 b 310 942 311 941 311 942 b 307 939 310 942 308 941 b 240 864 289 913 269 889 b 16 607 141 781 62 689 b -1 570 8 592 1 578 b -19 556 -4 563 -12 556 l -21 556 l -21 684 l -20 813 l -13 814 b 98 852 17 821 62 836 b 111 857 103 855 110 857 b 167 886 123 863 156 880 b 319 1147 264 943 319 1043 b 313 1211 319 1168 318 1189 b 310 1218 311 1217 311 1218 b 307 1215 310 1218 308 1217 b 240 1140 289 1188 269 1165 b 16 884 141 1057 62 966 b -1 846 8 868 1 855 b -19 832 -4 839 -12 832 l -21 832 l -21 960 l -20 1089 l -13 1090 b 98 1128 17 1097 62 1111 b 111 1134 103 1131 110 1134 b 167 1163 123 1139 156 1156 b 319 1424 264 1220 319 1320 b 313 1486 319 1444 318 1465 b 310 1494 311 1493 311 1494 b 307 1492 310 1494 308 1493 b 240 1417 289 1464 269 1442 b 16 1160 141 1333 62 1242 b -1 1121 8 1145 1 1131 b -19 1109 -4 1115 -12 1109 l -21 1109 l -21 1236 l -20 1365 l -13 1367 b 98 1404 17 1374 62 1388 b 111 1410 103 1407 110 1410 b 250 1508 172 1437 215 1467 b 319 1701 296 1564 319 1633 b 270 1859 319 1757 303 1814 b 262 1882 265 1868 262 1875 b 276 1900 262 1890 266 1896 ', + }, + accidentalFlat: { + x_min: -21.78125, + x_max: 251.8125, + ha: 257, + o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ', + }, + accidentalNatural: { + x_min: 0, + x_max: 239.5625, + ha: 244, + o: 'm 10 460 b 20 462 13 462 14 462 b 39 449 28 462 35 458 l 40 446 l 40 326 b 40 205 40 259 40 205 b 127 227 40 205 80 215 b 220 249 196 244 213 249 b 227 247 224 249 225 248 b 238 237 231 245 235 241 l 239 233 l 239 -106 l 239 -448 l 238 -451 b 219 -463 234 -459 225 -463 b 198 -451 210 -463 202 -459 l 197 -448 l 197 -324 b 197 -201 197 -248 197 -201 b 110 -223 196 -201 157 -210 b 17 -245 42 -240 24 -245 b 10 -242 13 -245 13 -244 b 0 -233 6 -241 2 -237 l 0 -230 l 0 108 l 0 446 l 0 449 b 10 460 2 453 6 458 m 197 22 b 197 70 197 41 197 58 b 196 116 197 113 197 116 l 196 116 b 118 97 196 116 160 106 l 40 77 l 40 -18 b 40 -112 40 -69 40 -112 l 119 -93 l 197 -73 l 197 22 ', + }, + accidentalSharp: { + x_min: 0, + x_max: 323.9375, + ha: 331, + o: 'm 217 535 b 225 537 220 537 221 537 b 245 524 235 537 242 533 l 246 521 l 247 390 l 247 258 l 273 265 b 306 270 288 269 299 270 b 322 259 315 270 319 267 b 323 208 323 256 323 233 b 322 158 323 184 323 159 b 288 140 318 148 315 147 b 247 130 254 131 247 130 b 247 65 247 130 247 104 b 247 20 247 51 247 36 l 247 -88 l 273 -81 b 306 -76 289 -77 299 -76 b 318 -81 311 -76 315 -77 b 323 -123 323 -87 323 -86 l 323 -138 l 323 -154 b 318 -195 323 -191 323 -190 b 269 -210 314 -199 315 -199 b 249 -216 259 -213 250 -216 l 247 -216 l 247 -349 l 246 -483 l 245 -487 b 225 -499 242 -495 234 -499 b 206 -487 219 -499 210 -495 l 205 -483 l 205 -355 l 205 -227 l 204 -227 l 181 -233 l 138 -244 b 117 -249 127 -247 117 -249 b 115 -385 115 -249 115 -256 l 115 -523 l 114 -526 b 95 -538 110 -534 102 -538 b 74 -526 87 -538 78 -534 l 73 -523 l 73 -391 b 72 -260 73 -269 73 -260 b 72 -260 72 -260 72 -260 b 19 -273 61 -263 23 -273 b 0 -260 10 -273 4 -267 b 0 -209 0 -256 0 -256 l 0 -162 l 1 -158 b 61 -134 5 -148 5 -148 l 73 -131 l 73 -22 b 72 86 73 79 73 86 b 72 86 72 86 72 86 b 19 74 61 83 23 74 b 0 86 10 74 4 79 b 0 137 0 90 0 90 l 0 184 l 1 188 b 61 212 5 198 5 198 l 73 215 l 73 348 l 73 481 l 74 485 b 95 498 78 492 87 498 b 103 495 98 498 100 496 b 114 485 107 494 111 489 l 115 481 l 115 353 l 115 226 l 121 226 b 159 235 123 227 141 231 l 198 247 l 205 248 l 205 384 l 205 521 l 206 524 b 217 535 209 528 212 533 m 205 9 b 205 119 205 70 205 119 l 205 119 b 182 113 204 119 194 116 l 138 102 b 117 97 127 99 117 97 b 115 -12 115 97 115 91 l 115 -122 l 121 -120 b 159 -111 123 -119 141 -115 l 198 -101 l 205 -98 l 205 9 ', + }, + accidentalDoubleSharp: { + x_min: 0, + x_max: 367.5, + ha: 375, + o: 'm 0 124 l 0 187 l 61 187 l 122 187 l 122 138 l 122 91 l 153 61 l 183 30 l 213 61 l 243 91 l 243 138 l 243 187 l 306 187 l 367 187 l 367 124 l 367 61 l 321 61 l 274 61 l 243 30 l 213 0 l 243 -31 l 274 -62 l 321 -62 l 367 -62 l 367 -124 l 367 -188 l 306 -188 l 243 -188 l 243 -140 l 243 -93 l 213 -62 l 183 -31 l 153 -62 l 122 -93 l 122 -140 l 122 -188 l 61 -188 l 0 -188 l 0 -124 l 0 -62 l 46 -62 l 92 -62 l 123 -31 l 153 0 l 123 30 l 92 61 l 46 61 l 0 61 l 0 124 ', + }, + accidentalDoubleFlat: { + x_min: -21.78125, + x_max: 483.1875, + ha: 493, + o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 179 164 199 187 192 l 210 176 l 210 396 l 210 617 l 212 621 b 231 632 216 628 223 632 b 250 620 239 632 247 628 b 251 383 251 616 251 616 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 ', + }, + accidentalParensLeft: { + x_min: -166.0625, + x_max: -25.859375, + ha: 0, + o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ', + }, + accidentalParensRight: { + x_min: 25.859375, + x_max: 164.6875, + ha: 168, + o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ', + }, + accidentalQuarterToneFlatStein: { + x_min: 0, + x_max: 272.21875, + ha: 278, + o: 'm 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 ', + }, + accidentalThreeQuarterTonesFlatZimmermann: { + x_min: 0, + x_max: 607.0625, + ha: 619, + o: 'm 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 m 347 631 b 353 632 348 632 351 632 b 374 620 363 632 371 628 b 375 383 375 616 375 616 l 375 148 l 377 151 b 492 199 415 183 454 199 b 537 191 507 199 522 197 b 607 84 582 176 607 134 b 583 0 607 58 598 29 b 455 -142 562 -40 533 -72 l 378 -215 b 355 -229 364 -229 362 -229 b 334 -216 345 -229 337 -224 l 333 -212 l 333 201 l 333 616 l 334 620 b 347 631 337 624 341 630 m 465 131 b 451 133 461 133 455 133 b 445 133 449 133 446 133 b 379 87 419 129 396 113 l 375 80 l 375 -37 l 375 -156 l 378 -152 b 499 81 451 -72 499 20 l 499 83 b 465 131 499 113 490 126 ', + }, + accidentalQuarterToneSharpStein: { + x_min: 0, + x_max: 193.28125, + ha: 197, + o: 'm 85 514 b 95 517 88 517 89 517 b 114 505 103 517 110 513 l 115 502 l 115 376 b 115 249 115 306 115 249 b 141 258 117 249 127 252 l 167 266 l 172 266 b 190 254 181 265 187 262 l 193 251 l 193 202 l 193 188 b 187 147 193 149 191 152 b 147 130 183 142 182 141 l 115 119 l 115 9 b 115 -99 115 -51 115 -99 b 141 -91 115 -99 127 -95 b 171 -81 166 -81 167 -81 l 171 -81 b 191 -94 181 -81 189 -87 b 193 -142 191 -97 193 -120 b 191 -195 193 -167 191 -194 b 125 -227 187 -205 187 -204 l 115 -230 l 115 -366 l 115 -503 l 114 -506 b 95 -519 110 -514 102 -519 b 74 -506 87 -519 78 -514 l 73 -503 l 73 -374 b 73 -245 73 -260 73 -245 b 73 -245 73 -245 73 -245 b 55 -252 72 -245 63 -249 l 32 -260 b 19 -263 27 -262 23 -263 b 4 -256 13 -263 8 -260 b 0 -215 0 -251 0 -254 b 0 -199 0 -210 0 -206 l 0 -152 l 1 -149 b 8 -140 2 -145 5 -141 b 42 -127 9 -140 24 -133 l 73 -116 l 73 -5 b 73 23 73 4 73 15 b 73 105 73 70 73 105 b 49 97 73 105 61 101 b 17 88 32 91 23 88 b 4 95 10 88 8 91 b 0 137 0 101 0 98 b 0 151 0 141 0 145 l 0 199 l 1 202 b 43 224 5 212 5 212 l 73 234 l 73 367 l 73 502 l 74 505 b 85 514 77 509 81 513 ', + }, + accidentalThreeQuarterTonesSharpStein: { + x_min: -1.359375, + x_max: 455.96875, + ha: 465, + o: 'm 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 ', + }, + accidentalBuyukMucennebFlat: { + x_min: -171.5, + x_max: 251.8125, + ha: 257, + o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ', + }, + accidentalBakiyeFlat: { + x_min: -176.9375, + x_max: 251.8125, + ha: 257, + o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ', + }, + accidentalKomaSharp: { + x_min: -1.359375, + x_max: 455.96875, + ha: 465, + o: 'm 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 ', + }, + accidentalKucukMucennebSharp: { + x_min: -1.359375, + x_max: 255.890625, + ha: 261, + o: 'm 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 ', + }, + articAccentAbove: { + x_min: -348.4375, + x_max: 24.5, + ha: 25, + o: 'm -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 ', + }, + articAccentBelow: { + x_min: -348.4375, + x_max: 24.5, + ha: 25, + o: 'm -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 ', + }, + articTenutoAbove: { + x_min: 0, + x_max: 318.5, + ha: 325, + o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ', + }, + articTenutoBelow: { + x_min: 0, + x_max: 318.5, + ha: 325, + o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ', + }, + articStaccatoAbove: { + x_min: 0, + x_max: 133.390625, + ha: 136, + o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ', + }, + articStaccatoBelow: { + x_min: 0, + x_max: 133.390625, + ha: 136, + o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ', + }, + articStaccatissimoAbove: { + x_min: -73.5, + x_max: 72.140625, + ha: 74, + o: 'm -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 ', + }, + articStaccatissimoBelow: { + x_min: -73.5, + x_max: 72.140625, + ha: 74, + o: 'm -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 ', + }, + articMarcatoAbove: { + x_min: -149.71875, + x_max: 148.359375, + ha: 151, + o: 'm -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 ', + }, + articMarcatoBelow: { + x_min: -149.71875, + x_max: 148.359375, + ha: 151, + o: 'm -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 ', + }, + fermataAbove: { + x_min: -442.359375, + x_max: 441, + ha: 450, + o: 'm -31 487 b -1 488 -21 488 -10 488 b 434 104 216 488 397 330 b 441 27 438 79 441 47 b 439 12 441 20 439 15 b 419 0 435 4 427 0 b 404 5 413 0 408 1 b 398 30 400 11 398 13 b 0 351 390 213 213 351 b -59 348 -20 351 -39 349 b -400 30 -251 324 -393 191 b -405 5 -400 13 -401 11 b -420 0 -409 1 -415 0 b -441 12 -428 0 -436 4 b -442 27 -441 15 -442 20 b -435 104 -442 47 -439 79 b -31 487 -401 316 -235 474 m -13 131 b -1 133 -9 133 -5 133 b 51 105 19 133 39 123 b 61 70 58 95 61 83 b 51 34 61 58 58 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -57 38 -62 54 b -13 131 -62 98 -44 124 ', + }, + fermataBelow: { + x_min: -441, + x_max: 439.640625, + ha: 449, + o: 'm -428 -2 b -421 0 -427 -1 -424 0 b -406 -6 -416 0 -409 -2 b -400 -31 -401 -12 -400 -15 b -1 -352 -392 -215 -215 -352 b 58 -349 19 -352 38 -351 b 398 -31 250 -326 392 -192 b 404 -6 398 -15 400 -12 b 419 -1 408 -2 413 -1 b 439 -13 427 -1 435 -5 b 439 -29 439 -16 439 -22 b 434 -105 439 -48 438 -80 b 0 -489 397 -333 213 -489 b -68 -484 -23 -489 -44 -488 b -441 -36 -280 -452 -436 -263 b -441 -30 -441 -34 -441 -31 b -428 -2 -441 -11 -439 -5 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -57 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ', + }, + fermataLongAbove: { + x_min: -390.640625, + x_max: 389.28125, + ha: 397, + o: 'm -378 502 l -374 503 l 0 503 l 372 503 l 377 502 b 387 491 381 499 385 496 l 389 488 l 389 251 l 389 15 l 387 12 b 367 0 383 4 375 0 b 348 12 360 0 352 4 l 347 15 l 347 174 l 347 335 l 0 335 l -348 335 l -348 174 l -348 15 l -349 12 b -368 0 -353 4 -362 0 b -389 12 -377 0 -385 4 l -390 15 l -390 251 l -390 488 l -389 491 b -378 502 -386 496 -382 499 m -13 131 b -1 133 -9 133 -5 133 b 50 105 19 133 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -58 38 -62 55 b -13 131 -62 98 -44 124 ', + }, + fermataLongBelow: { + x_min: -390.640625, + x_max: 389.28125, + ha: 397, + o: 'm -378 -2 b -368 -1 -375 -1 -374 -1 b -349 -13 -360 -1 -353 -5 l -348 -16 l -348 -176 l -348 -337 l 0 -337 l 347 -337 l 347 -176 l 347 -16 l 348 -13 b 367 0 352 -5 360 0 b 387 -13 375 0 383 -5 l 389 -16 l 389 -252 l 389 -489 l 387 -492 b 377 -503 385 -498 381 -501 l 372 -505 l 0 -505 l -374 -505 l -378 -503 b -389 -492 -382 -501 -386 -498 l -390 -489 l -390 -252 l -390 -16 l -389 -13 b -378 -2 -386 -8 -382 -4 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -58 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ', + }, + fermataVeryLongAbove: { + x_min: -390.640625, + x_max: 389.28125, + ha: 397, + o: 'm -378 573 l -374 576 l 0 576 l 372 576 l 377 573 b 387 563 381 571 385 567 l 389 559 l 389 287 l 389 15 l 387 12 b 367 0 383 4 375 0 b 348 12 360 0 352 4 l 347 15 l 347 210 l 347 406 l 0 406 l -348 406 l -348 210 l -348 15 l -349 12 b -368 0 -353 4 -362 0 b -389 12 -377 0 -385 4 l -390 15 l -390 287 l -390 559 l -389 563 b -378 573 -386 567 -382 571 m -274 337 l -270 338 l 0 338 l 269 338 l 273 337 b 284 326 279 334 281 330 l 285 323 l 285 169 l 285 15 l 284 12 b 265 -1 280 4 272 -1 b 245 12 257 -1 249 4 l 245 15 l 243 108 l 243 201 l 0 201 l -245 201 l -245 108 l -245 15 l -246 12 b -266 -1 -250 4 -258 -1 b -285 12 -273 -1 -281 4 l -287 15 l -287 169 l -287 323 l -285 326 b -274 337 -283 330 -280 334 m -13 131 b -1 133 -9 133 -5 133 b 50 105 19 133 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -58 38 -62 55 b -13 131 -62 98 -44 124 ', + }, + fermataVeryLongBelow: { + x_min: -390.640625, + x_max: 389.28125, + ha: 397, + o: 'm -378 -2 b -368 -1 -375 -1 -374 -1 b -349 -13 -360 -1 -353 -5 l -348 -16 l -348 -212 l -348 -408 l 0 -408 l 347 -408 l 347 -212 l 347 -16 l 348 -13 b 367 0 352 -5 360 0 b 387 -13 375 0 383 -5 l 389 -16 l 389 -288 l 389 -560 l 387 -564 b 377 -574 385 -569 381 -573 l 372 -577 l 0 -577 l -374 -577 l -378 -574 b -389 -564 -382 -573 -386 -569 l -390 -560 l -390 -288 l -390 -16 l -389 -13 b -378 -2 -386 -8 -382 -4 m -274 -2 b -266 -1 -272 -1 -270 -1 b -246 -13 -257 -1 -250 -5 l -245 -16 l -245 -109 l -245 -202 l 0 -202 l 243 -202 l 243 -109 l 245 -16 l 245 -13 b 265 0 249 -5 257 0 b 284 -13 272 0 280 -5 l 285 -16 l 285 -170 l 285 -324 l 284 -327 b 273 -338 281 -331 279 -335 l 269 -340 l 0 -340 l -270 -340 l -274 -338 b -285 -327 -280 -335 -283 -331 l -287 -324 l -287 -170 l -287 -16 l -285 -13 b -274 -2 -283 -8 -280 -4 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -58 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ', + }, + fermataShortAbove: { + x_min: -390.640625, + x_max: 389.28125, + ha: 397, + o: 'm -9 650 b -1 652 -6 650 -4 652 b 19 639 6 652 13 648 l 23 631 b 28 623 24 628 27 626 l 34 614 l 39 606 l 43 598 l 49 588 l 54 580 l 59 571 l 65 563 l 69 555 l 74 546 l 80 537 l 85 528 b 89 520 87 526 89 523 l 95 512 l 100 503 l 106 494 l 111 487 l 115 478 l 121 470 l 126 462 l 130 453 l 136 445 l 141 437 l 147 427 l 151 419 l 156 410 l 161 402 l 167 394 l 172 385 l 176 376 b 182 367 179 374 181 370 l 187 359 l 193 351 l 198 342 l 202 334 l 208 326 l 212 317 l 217 309 l 223 301 l 228 292 l 234 284 l 238 274 l 243 266 l 249 258 l 254 249 l 259 241 l 264 233 l 269 224 b 274 216 270 222 273 217 l 280 206 l 285 198 l 295 180 l 299 174 l 304 165 l 310 156 l 315 148 l 321 140 l 325 131 l 330 123 l 336 113 l 341 105 l 347 97 l 351 88 l 356 80 l 360 72 b 364 66 362 70 363 68 b 370 58 366 65 368 61 l 379 41 b 389 19 386 31 389 24 b 382 4 389 13 386 8 b 347 0 377 0 378 0 b 337 0 344 0 340 0 b 336 0 336 0 336 0 b 287 11 294 0 294 0 l 281 19 l 276 27 l 272 37 l 266 45 l 261 54 l 255 62 l 250 70 l 246 79 l 240 87 l 235 97 l 230 105 l 224 113 l 220 122 l 215 130 l 209 140 l 204 148 l 200 155 l 194 163 b 189 172 193 165 191 169 l 185 180 l 179 188 l 174 198 l 168 206 l 163 215 l 159 223 l 153 231 l 148 240 l 142 249 l 138 258 l 133 266 l 127 274 l 122 283 l 117 292 l 111 301 l 107 308 l 102 316 b 98 324 102 317 99 322 l 92 333 l 87 341 l 81 349 l 77 359 l 72 367 l 66 376 l 61 384 l 55 392 l 51 401 l 46 410 l 40 419 l 35 427 l 31 435 l 24 444 l 20 453 l 14 460 l 10 469 b 5 477 9 470 6 474 l 0 485 l -5 494 l -9 502 l -14 512 b -20 519 -16 513 -19 517 l -24 526 l -28 534 b -31 537 -29 535 -31 537 b -35 533 -32 537 -32 535 l -88 444 l -187 280 l -285 117 l -343 23 b -362 1 -352 6 -356 2 b -368 0 -364 0 -367 0 b -390 20 -381 0 -390 8 l -390 20 b -359 77 -390 27 -390 27 l -80 539 l -25 631 b -9 650 -17 644 -13 648 m -13 133 b -1 134 -9 133 -5 134 b 50 105 19 134 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 70 -57 40 -62 55 b -13 133 -62 98 -44 126 ', + }, + fermataShortBelow: { + x_min: -390.640625, + x_max: 389.28125, + ha: 397, + o: 'm -377 -1 b -368 0 -375 -1 -372 0 b -362 -1 -366 0 -363 -1 b -343 -24 -356 -4 -352 -8 l -285 -119 l -187 -280 l -88 -444 l -35 -533 b -31 -538 -32 -537 -32 -538 b -28 -534 -31 -538 -29 -537 l -23 -526 l -19 -517 l -13 -509 l -8 -501 l -2 -492 l 2 -483 l 6 -476 l 17 -458 l 23 -449 l 32 -433 l 38 -424 l 42 -416 l 47 -408 l 53 -399 l 58 -391 l 63 -381 l 68 -373 l 73 -365 l 78 -356 l 84 -348 l 89 -340 l 93 -330 l 99 -322 l 104 -315 l 114 -297 l 125 -280 l 129 -272 l 134 -263 l 140 -255 l 145 -247 l 151 -238 l 155 -230 l 160 -220 l 166 -212 l 171 -204 l 176 -195 l 181 -187 l 186 -177 l 191 -169 l 196 -162 l 201 -154 l 206 -144 l 217 -127 l 221 -119 l 227 -111 l 232 -102 l 238 -94 l 242 -86 l 247 -77 l 253 -69 l 258 -59 l 262 -51 l 268 -43 l 273 -34 l 279 -26 l 283 -18 b 321 -1 292 -2 292 -1 b 338 -1 326 -1 332 -1 b 382 -6 378 -1 375 -1 b 389 -20 386 -9 389 -15 b 382 -38 389 -26 386 -31 l 378 -47 l 372 -55 l 367 -63 l 362 -72 l 356 -80 l 351 -90 l 347 -98 l 341 -106 l 336 -115 l 330 -123 l 325 -131 l 321 -141 l 315 -149 l 310 -158 l 304 -166 l 299 -174 b 295 -183 298 -177 296 -181 l 289 -191 l 285 -199 l 280 -208 l 274 -216 l 269 -224 l 264 -233 l 259 -242 l 254 -251 l 249 -259 l 243 -267 l 238 -276 l 234 -284 l 228 -292 l 223 -302 l 217 -310 l 213 -319 l 208 -327 b 202 -335 206 -330 204 -334 l 197 -344 l 193 -351 l 187 -360 l 182 -369 l 176 -377 l 172 -385 l 167 -394 l 161 -403 l 156 -412 l 152 -420 l 147 -428 l 141 -437 l 136 -445 l 130 -455 l 126 -463 l 121 -471 l 115 -480 b 110 -488 114 -483 111 -487 l 106 -496 l 100 -503 l 96 -512 l 89 -521 l 85 -530 l 80 -538 l 74 -546 l 69 -555 l 65 -564 l 59 -573 l 54 -581 l 49 -589 l 43 -598 l 39 -606 l 34 -616 l 28 -624 l 23 -632 b 19 -641 21 -635 20 -638 b 0 -653 14 -649 8 -653 b -25 -631 -10 -653 -14 -649 l -80 -541 l -359 -79 b -389 -29 -375 -52 -389 -30 b -390 -22 -389 -26 -390 -24 b -377 -1 -390 -13 -385 -5 m -13 -9 b -1 -8 -9 -8 -5 -8 b 51 -36 19 -8 39 -19 b 61 -72 58 -47 61 -59 b 51 -106 61 -84 58 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -127 b -62 -72 -57 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ', + }, + breathMarkComma: { + x_min: -1.359375, + x_max: 193.28125, + ha: 197, + o: 'm 78 233 b 87 233 81 233 84 233 b 187 140 132 233 174 195 b 193 102 190 127 193 115 b 43 -113 193 22 136 -62 b 27 -119 36 -116 31 -119 b 19 -108 21 -119 19 -115 b 29 -97 19 -102 20 -101 b 102 13 73 -72 102 -27 b 92 51 102 26 98 40 l 91 54 l 84 54 b 8 104 53 54 21 74 b -1 142 1 116 -1 130 b 78 233 -1 187 31 227 ', + }, + breathMarkUpbow: { + x_min: -170.140625, + x_max: 168.78125, + ha: 172, + o: 'm -160 567 b -122 567 -159 567 -149 567 l -87 567 l -84 566 b -74 553 -78 563 -77 560 b -20 366 -73 551 -49 466 b 31 186 8 267 31 186 b 85 371 31 186 55 269 b 140 559 114 473 138 557 b 153 567 141 564 148 567 b 168 559 159 567 166 564 b 168 555 168 557 168 557 b 92 281 168 548 159 513 b 14 13 50 134 14 13 b 0 0 14 6 6 0 b -17 15 -8 0 -17 8 b -93 283 -17 15 -51 136 b -170 552 -166 533 -170 548 b -170 553 -170 552 -170 552 b -160 567 -170 560 -167 564 ', + }, + caesura: { + x_min: 0, + x_max: 622.03125, + ha: 635, + o: 'm 398 417 b 406 419 401 419 404 419 b 427 398 417 419 427 409 b 427 391 427 395 427 392 b 34 -274 424 385 38 -272 b 20 -280 29 -278 25 -280 b 0 -259 9 -280 0 -270 b 0 -252 0 -256 0 -254 b 393 413 2 -247 389 410 b 398 417 394 415 397 416 m 592 417 b 600 419 594 419 597 419 b 622 398 611 419 622 409 b 620 391 622 395 620 392 b 227 -274 617 385 231 -272 b 213 -280 223 -278 219 -280 b 193 -259 202 -280 193 -270 b 194 -252 193 -256 193 -254 b 586 413 196 -247 582 410 b 592 417 588 415 590 416 ', + }, + caesuraCurved: { + x_min: 0, + x_max: 503.609375, + ha: 514, + o: 'm 274 430 b 277 430 276 430 277 430 b 310 394 296 430 310 415 b 308 383 310 391 308 387 b 306 367 307 381 307 374 b 236 120 298 305 272 210 b 40 -273 189 -5 125 -134 b 20 -287 35 -283 27 -287 b 5 -281 14 -287 9 -285 b 0 -267 1 -277 0 -273 b 9 -242 0 -262 2 -255 b 246 395 137 -12 232 242 b 274 430 249 416 257 427 m 468 430 b 472 430 469 430 470 430 b 503 394 490 430 503 415 b 502 383 503 391 503 387 b 499 367 502 381 500 374 b 431 120 491 305 465 210 b 234 -273 382 -5 318 -134 b 213 -287 228 -283 220 -287 b 198 -281 208 -287 202 -285 b 193 -267 194 -277 193 -273 b 202 -242 193 -262 196 -255 b 439 395 330 -12 426 242 b 468 430 442 416 451 427 ', + }, + restMaxima: { + x_min: 0, + x_max: 464.140625, + ha: 474, + o: 'm 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 ', + }, + restDoubleWhole: { + x_min: 0, + x_max: 386.5625, + ha: 394, + o: 'm 0 173 l 0 347 l 193 347 l 386 347 l 386 173 l 386 0 l 193 0 l 0 0 l 0 173 ', + }, + restWhole: { + x_min: 0, + x_max: 447.8125, + ha: 457, + o: 'm 0 -87 l 0 0 l 223 0 l 447 0 l 447 -87 l 447 -174 l 223 -174 l 0 -174 l 0 -87 ', + }, + restWholeLegerLine: { + x_min: 0, + x_max: 737.71875, + ha: 753, + o: 'm 9 13 b 208 15 10 15 51 15 b 368 15 251 15 304 15 l 726 15 l 729 12 b 737 -1 735 9 737 4 b 729 -15 737 -6 735 -11 l 726 -16 l 660 -16 l 592 -16 l 592 -95 l 592 -174 l 368 -174 l 144 -174 l 144 -95 l 144 -16 l 77 -16 l 9 -16 l 6 -15 b 0 -1 1 -11 0 -6 b 9 13 0 5 2 11 ', + }, + restHalf: { + x_min: 0, + x_max: 447.8125, + ha: 457, + o: 'm 0 86 l 0 173 l 223 173 l 447 173 l 447 86 l 447 0 l 223 0 l 0 0 l 0 86 ', + }, + restHalfLegerLine: { + x_min: 0, + x_max: 737.71875, + ha: 753, + o: 'm 144 94 l 144 173 l 368 173 l 592 173 l 592 94 l 592 15 l 660 15 l 726 15 l 729 12 b 737 -1 735 9 737 4 b 729 -15 737 -6 735 -11 l 726 -16 l 368 -16 l 9 -16 l 6 -15 b 0 -1 1 -11 0 -6 b 6 12 0 4 1 9 l 9 15 l 77 15 l 144 15 l 144 94 ', + }, + restQuarter: { + x_min: 0, + x_max: 300.8125, + ha: 307, + o: 'm 49 505 b 53 506 50 505 51 506 b 70 496 58 506 62 503 b 81 485 73 492 78 488 l 96 473 l 111 459 l 122 449 l 134 438 l 182 396 l 255 330 b 292 291 292 298 292 298 l 292 290 l 292 284 l 283 270 b 209 36 234 197 209 113 b 288 -170 209 -44 235 -119 b 299 -184 295 -179 299 -181 b 300 -191 300 -187 300 -188 b 285 -206 300 -199 294 -206 b 280 -206 283 -206 281 -206 b 247 -201 270 -202 259 -201 b 176 -222 223 -201 197 -208 b 114 -340 136 -249 114 -292 b 172 -471 114 -384 134 -433 b 185 -492 182 -481 185 -487 b 181 -502 185 -496 183 -499 b 171 -508 176 -505 174 -508 b 152 -498 166 -508 160 -503 b 0 -284 65 -428 12 -352 b 0 -260 0 -278 0 -270 b 1 -238 0 -252 0 -242 b 148 -140 16 -177 73 -140 b 209 -148 167 -140 189 -142 b 215 -149 212 -148 215 -149 b 215 -149 215 -149 215 -149 l 215 -149 b 201 -136 215 -148 209 -142 l 157 -97 l 96 -41 b 17 34 21 24 17 29 b 17 37 17 36 17 36 b 17 38 17 37 17 38 b 25 56 17 44 17 44 b 110 298 81 131 110 219 b 46 474 110 367 88 431 b 38 491 40 480 38 487 b 49 505 38 498 42 502 ', + }, + rest8th: { + x_min: 0, + x_max: 349.8125, + ha: 357, + o: 'm 88 302 b 103 303 93 302 98 303 b 202 224 149 303 191 270 b 205 199 204 216 205 208 b 178 129 205 173 196 147 l 175 126 l 182 127 b 307 249 236 142 284 190 b 313 259 308 254 311 258 b 329 267 317 265 323 267 b 349 247 340 267 349 259 b 201 -263 349 242 204 -258 b 182 -273 197 -270 190 -273 b 163 -260 174 -273 166 -269 b 161 -256 161 -259 161 -258 b 217 -59 161 -248 170 -220 b 272 129 247 43 272 127 b 272 129 272 129 272 129 b 264 122 272 129 268 126 b 140 80 227 94 183 80 b 36 115 102 80 65 91 b 0 194 10 136 0 165 b 88 302 0 244 32 292 ', + }, + rest16th: { + x_min: 0, + x_max: 450.53125, + ha: 460, + o: 'm 189 302 b 204 303 193 302 198 303 b 303 224 250 303 292 270 b 306 199 304 216 306 208 b 279 129 306 173 296 147 l 276 126 l 281 127 b 408 249 337 142 385 190 b 412 259 409 254 412 258 b 430 267 417 265 423 267 b 450 247 441 267 450 259 b 200 -605 450 242 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 194 111 136 99 165 b 189 302 99 244 133 292 ', + }, + rest32nd: { + x_min: 0, + x_max: 551.25, + ha: 563, + o: 'm 289 644 b 304 645 294 645 299 645 b 404 566 349 645 392 613 b 406 541 405 557 406 549 b 379 471 406 514 397 489 l 377 467 l 382 470 b 509 591 438 485 485 531 b 513 601 510 595 513 599 b 530 609 518 607 524 609 b 551 588 540 609 551 602 b 200 -605 551 584 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 195 112 136 99 165 b 118 256 99 217 106 238 b 204 303 138 287 171 303 b 292 249 238 303 273 285 b 306 199 302 234 306 217 b 279 129 306 173 296 148 l 276 126 l 281 127 b 408 248 336 142 385 190 b 473 470 409 254 473 469 b 473 470 473 470 473 470 b 465 464 473 470 469 467 b 341 421 428 435 383 421 b 236 458 303 421 266 433 b 200 537 212 478 200 508 b 289 644 200 585 234 635 ', + }, + rest64th: { + x_min: -1.359375, + x_max: 651.96875, + ha: 665, + o: 'm 389 644 b 405 645 394 645 400 645 b 504 566 450 645 492 613 b 507 541 506 557 507 549 b 480 471 507 514 498 489 l 477 467 l 483 470 b 609 591 539 485 586 531 b 613 601 611 595 613 599 b 631 609 619 607 624 609 b 651 588 641 609 651 602 b 200 -946 651 584 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 537 313 478 300 508 b 389 644 300 585 334 635 ', + }, + rest128th: { + x_min: -1.359375, + x_max: 752.703125, + ha: 768, + o: 'm 490 985 b 504 986 495 986 500 986 b 604 907 551 986 593 954 b 607 884 607 900 607 892 b 581 813 607 857 597 831 l 578 810 l 583 811 b 710 932 638 827 687 873 b 714 943 711 936 713 942 b 730 952 720 949 725 952 b 752 931 741 952 752 943 b 200 -946 752 927 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 538 314 477 300 508 b 318 598 300 559 306 580 b 404 645 340 630 372 645 b 494 592 439 645 475 627 b 507 541 502 577 507 559 b 480 471 507 516 498 489 l 477 467 l 483 470 b 608 589 537 485 586 531 b 675 811 611 595 675 810 b 675 811 675 811 675 811 b 666 806 675 811 671 809 b 543 763 628 777 585 763 b 438 799 504 763 468 775 b 401 878 412 820 401 849 b 490 985 401 928 434 977 ', + }, + dynamicPiano: { + x_min: -53.078125, + x_max: 513.140625, + ha: 485, + o: 'm 185 383 b 196 384 187 383 191 384 b 277 334 230 384 259 365 b 288 301 281 324 288 306 b 288 297 288 298 288 297 b 294 302 289 297 291 299 b 394 370 323 338 367 367 b 404 371 398 370 401 371 b 510 272 453 371 498 328 b 513 237 513 262 513 251 b 507 172 513 217 511 192 b 326 -34 487 59 412 -26 b 314 -36 322 -36 318 -36 b 274 -24 298 -36 283 -31 l 265 -16 b 224 44 246 -1 232 20 b 223 49 224 47 223 49 b 223 49 223 49 223 49 b 149 -197 221 48 149 -194 b 149 -198 149 -197 149 -198 b 170 -210 149 -202 155 -205 b 187 -215 174 -210 175 -212 b 204 -231 201 -219 204 -222 b 197 -245 204 -240 202 -242 l 194 -248 l 76 -248 l -42 -248 l -46 -245 b -53 -231 -51 -242 -53 -240 b -35 -215 -53 -222 -49 -217 b -13 -210 -21 -212 -20 -212 b -6 -208 -10 -209 -8 -208 b 0 -206 -6 -208 -2 -206 b 25 -188 13 -201 21 -195 b 163 280 28 -183 163 276 b 166 291 163 283 164 287 b 167 302 167 295 167 299 b 155 324 167 315 161 324 b 155 324 155 324 155 324 b 65 230 125 322 85 280 b 53 215 61 217 58 215 b 51 215 53 215 51 215 b 42 224 46 215 42 217 b 57 263 42 231 47 244 b 140 360 77 305 104 337 b 152 370 144 365 149 369 b 185 383 157 376 172 381 m 374 306 b 366 308 371 308 368 308 b 300 273 348 308 321 294 b 284 254 288 262 287 259 b 280 242 283 249 281 245 b 257 169 279 240 270 213 l 236 98 l 236 93 b 251 48 238 77 243 61 b 279 27 258 37 272 27 b 281 27 279 27 280 27 b 291 31 281 27 287 30 b 396 170 334 52 378 109 b 406 247 402 197 406 224 b 401 277 406 259 405 270 b 374 306 397 290 383 303 ', + }, + dynamicMezzo: { + x_min: 46.28125, + x_max: 669.671875, + ha: 563, + o: 'm 183 376 b 189 376 185 376 187 376 b 212 374 197 376 208 376 b 265 337 234 369 253 355 b 274 317 268 331 273 320 b 274 316 274 317 274 316 b 280 323 276 316 276 319 b 311 358 288 337 299 348 b 319 366 315 360 318 365 b 356 376 326 373 340 376 b 382 371 364 376 374 374 b 428 337 400 366 417 352 b 436 317 431 331 436 320 b 438 316 436 317 436 316 b 442 323 438 316 439 319 b 475 358 451 337 462 348 b 483 366 477 360 481 365 b 518 376 488 373 503 376 b 544 373 528 376 536 376 b 604 285 579 360 604 326 b 597 249 604 273 601 258 b 543 63 596 247 544 70 b 541 54 543 61 541 55 b 540 44 540 51 540 47 b 552 23 540 33 545 23 b 552 23 552 23 552 23 b 647 126 586 29 627 72 b 658 138 651 136 653 138 b 660 138 660 138 660 138 b 669 129 666 137 669 136 b 654 88 669 122 665 109 b 562 -12 631 43 602 9 l 549 -19 b 521 -27 540 -24 530 -27 b 447 30 490 -27 458 -4 b 443 58 445 38 443 48 b 450 93 443 72 446 84 b 504 278 453 97 504 272 b 507 288 506 283 506 287 b 509 298 507 292 509 295 b 491 326 509 310 502 320 b 487 327 490 327 488 327 b 479 324 484 327 483 326 b 441 270 462 316 443 288 b 435 249 441 265 436 254 b 398 127 434 248 419 195 b 362 4 379 61 362 5 b 328 -1 359 -1 362 -1 b 314 -1 323 -1 319 -1 b 302 -1 310 -1 306 -1 b 266 4 266 -1 269 -1 b 265 6 265 5 265 5 b 303 144 265 13 272 34 b 343 278 325 216 343 276 b 344 288 343 281 344 285 b 345 298 345 291 345 295 b 330 326 345 310 340 320 b 323 327 328 327 325 327 b 317 324 322 327 321 326 b 279 270 300 316 281 288 b 273 249 279 265 274 254 b 236 127 272 248 255 195 b 200 4 216 61 200 5 b 164 -1 197 -1 198 -1 b 151 -1 161 -1 156 -1 b 140 -1 147 -1 142 -1 b 103 4 104 -1 106 -1 b 103 6 103 5 103 5 b 141 144 103 13 108 34 b 181 278 161 216 179 276 b 182 288 181 281 181 285 b 183 298 182 291 183 295 b 168 324 183 310 178 320 b 160 327 166 326 163 327 b 141 320 156 327 151 324 b 69 230 112 305 85 272 b 57 215 65 217 62 215 b 55 215 57 215 55 215 b 46 224 49 215 46 217 b 59 260 46 231 50 242 b 151 363 81 306 112 341 b 161 369 155 365 160 367 b 183 376 166 371 174 374 ', + }, + dynamicForte: { + x_min: -118.421875, + x_max: 597.53125, + ha: 381, + o: 'm 460 574 b 464 574 461 574 462 574 b 488 574 470 574 481 574 b 500 573 491 574 498 574 b 594 503 543 570 588 538 b 597 488 596 498 597 494 b 528 417 597 449 564 417 b 502 423 519 417 510 419 b 465 481 477 434 465 458 b 488 528 465 499 472 516 b 490 530 490 530 490 530 b 490 530 490 530 490 530 b 468 517 488 530 475 523 b 349 340 419 485 377 420 b 347 330 348 334 347 330 b 383 328 347 328 363 328 b 428 326 423 328 424 328 b 442 302 438 320 442 312 b 430 281 442 294 438 285 b 385 276 424 277 426 276 l 377 276 l 332 276 l 330 269 b 178 -117 303 126 250 -9 b 1 -249 129 -194 69 -237 b -20 -251 -6 -251 -13 -251 b -114 -187 -65 -251 -100 -227 b -118 -156 -117 -177 -118 -166 b -51 -84 -118 -116 -91 -84 b -31 -87 -46 -84 -39 -86 b 16 -152 0 -95 16 -124 b -12 -205 16 -173 8 -194 b -16 -208 -14 -206 -16 -208 b -14 -208 -16 -208 -14 -208 b -9 -206 -14 -208 -12 -208 b 74 -124 23 -197 54 -166 b 172 224 98 -79 125 22 b 185 276 178 252 183 274 b 185 276 185 276 185 276 b 141 276 185 276 181 276 b 91 280 96 276 96 276 b 77 302 83 285 77 294 b 91 326 77 312 83 320 b 148 328 95 328 96 328 l 198 330 l 202 341 b 460 574 249 473 351 566 ', + }, + dynamicRinforzando: { + x_min: 78.9375, + x_max: 485.921875, + ha: 417, + o: 'm 362 378 b 378 380 367 380 372 380 b 472 348 415 380 453 367 b 485 315 481 338 485 327 b 462 273 485 298 477 281 b 439 267 454 269 446 267 b 398 290 424 267 409 274 b 344 319 385 309 364 319 b 281 269 315 319 289 301 b 279 262 280 266 279 262 b 276 256 279 260 277 258 b 274 249 276 254 274 251 b 238 127 273 248 257 192 b 201 4 217 61 201 5 b 166 -1 198 -1 200 -1 b 153 -1 163 -1 157 -1 b 141 -1 148 -1 144 -1 b 104 4 106 -1 107 -1 b 104 6 104 5 104 5 b 142 144 104 13 110 34 b 182 278 164 219 181 276 b 183 288 182 281 182 285 b 185 302 185 292 185 298 b 164 330 185 317 176 328 b 159 330 163 330 161 330 b 102 302 140 330 119 320 b 91 294 95 295 93 294 b 88 294 91 294 89 294 b 78 303 83 294 78 298 b 81 312 78 306 78 309 b 200 373 106 347 160 373 b 215 371 205 373 209 371 b 266 335 235 367 254 353 b 269 331 268 333 269 331 b 269 331 269 331 269 331 b 273 335 269 331 270 334 b 362 378 298 359 330 376 ', + }, + dynamicSforzando: { + x_min: 70.78125, + x_max: 378.390625, + ha: 315, + o: 'm 246 373 b 254 373 249 373 251 373 b 372 324 303 373 360 351 b 378 302 377 317 378 309 b 338 251 378 278 362 255 b 328 249 334 249 332 249 b 283 294 303 249 283 270 b 288 315 283 301 284 308 b 289 319 289 317 289 319 b 289 319 289 319 289 319 b 283 320 289 320 287 320 b 270 322 279 322 274 322 b 206 288 242 322 215 308 b 206 283 206 287 206 285 b 257 223 206 267 230 238 b 284 206 272 213 277 210 b 351 90 328 173 351 130 b 340 47 351 74 348 59 b 205 -30 314 -2 264 -30 b 182 -29 198 -30 190 -30 b 84 15 147 -24 103 -5 b 70 48 74 24 70 36 b 108 99 70 70 85 94 b 121 102 112 101 117 102 b 167 56 147 102 167 80 b 159 31 167 48 164 40 l 156 26 l 157 26 b 190 20 167 22 178 20 b 220 26 201 20 212 22 b 258 65 243 34 258 51 b 257 70 258 66 258 69 b 204 126 249 94 234 109 b 114 258 148 158 114 209 b 125 302 114 273 118 288 b 246 373 147 342 193 370 ', + }, + dynamicZ: { + x_min: 29.9375, + x_max: 420.578125, + ha: 371, + o: 'm 115 345 b 221 347 117 345 166 347 b 411 345 306 347 409 345 b 420 330 416 342 420 335 b 415 319 420 326 419 321 b 178 118 397 303 179 118 b 178 117 178 118 178 117 b 181 117 178 117 178 117 b 189 117 182 117 185 117 b 193 117 190 117 191 117 b 247 98 215 117 232 111 b 296 75 266 83 280 76 b 302 75 299 75 300 75 b 322 91 311 75 315 79 b 322 91 322 91 322 91 b 322 91 322 91 322 91 b 319 91 322 91 321 91 b 313 90 318 90 315 90 b 283 107 300 90 288 97 b 277 126 279 114 277 121 b 319 167 277 149 295 167 b 319 167 319 167 319 167 b 362 118 347 167 362 147 b 355 82 362 108 359 96 b 311 33 349 65 340 55 b 224 1 284 12 253 1 b 194 5 213 1 204 2 b 168 18 183 8 178 11 b 110 36 151 30 130 36 b 57 15 88 36 68 29 b 47 11 54 12 51 11 b 31 20 40 11 34 13 b 29 26 31 22 29 25 b 68 66 29 36 39 45 b 285 250 73 71 281 248 b 285 250 285 250 285 250 b 231 252 285 252 261 252 b 137 250 190 252 141 250 b 93 227 122 248 110 241 b 78 220 88 222 83 220 b 66 227 74 220 70 222 b 63 234 65 229 63 231 b 85 291 63 241 69 252 b 115 345 108 342 108 344 ', + }, + ornamentTrill: { + x_min: -340.28125, + x_max: 338.921875, + ha: 346, + o: 'm -32 520 b -29 521 -31 520 -31 521 b -23 519 -27 521 -24 520 b -20 513 -21 517 -20 516 b -21 506 -20 512 -20 509 b -31 474 -23 502 -27 488 l -53 402 l -66 352 l -68 349 l -57 349 b -32 351 -51 349 -40 351 b 123 370 19 352 74 359 b 137 371 127 370 133 371 b 170 356 152 371 164 366 b 171 355 170 355 170 355 b 216 366 174 355 183 358 b 280 378 268 377 266 377 b 287 378 283 378 284 378 b 332 349 307 378 322 369 b 338 319 336 341 338 330 b 332 301 338 310 336 302 b 242 280 329 299 246 280 b 242 280 242 280 242 280 b 235 288 236 280 235 283 b 235 292 235 290 235 291 b 236 302 236 297 236 299 b 220 337 236 316 230 330 l 216 340 l 210 335 b 159 276 189 322 172 301 b 118 149 152 265 156 274 b 81 34 84 36 85 36 b -8 13 78 33 -4 13 b -8 13 -8 13 -8 13 b -14 20 -12 15 -14 15 b -8 44 -14 24 -12 31 b -2 66 -5 55 -2 65 b -2 66 -2 66 -2 66 l -2 66 b -43 41 -2 66 -21 55 b -114 4 -98 8 -98 8 b -144 0 -123 0 -134 0 b -242 99 -197 0 -242 43 b -242 109 -242 102 -242 105 b -212 219 -240 122 -242 116 b -185 312 -197 270 -185 312 l -185 312 b -189 312 -185 312 -186 312 b -259 312 -200 312 -227 312 b -321 310 -291 312 -310 310 b -334 312 -330 310 -334 312 b -340 319 -338 313 -340 316 b -336 326 -340 322 -338 324 b -291 337 -334 326 -314 331 l -247 347 l -210 348 b -172 348 -190 348 -172 348 b -168 363 -172 348 -171 355 b -145 442 -151 424 -145 441 b -133 452 -144 444 -140 446 l -77 489 b -32 520 -53 506 -32 520 m 57 334 b 53 335 55 335 54 335 b 44 334 50 335 49 335 b -70 316 8 326 -28 320 b -78 309 -78 316 -78 316 b -108 202 -80 305 -88 274 b -141 81 -136 112 -141 93 b -140 74 -141 79 -141 77 b -117 49 -137 59 -127 49 b -107 52 -114 49 -110 51 b 16 127 -106 54 14 126 b 42 217 16 127 42 215 b 49 241 42 222 44 229 b 73 320 53 251 73 317 b 57 334 73 327 65 333 ', + }, + ornamentTurn: { + x_min: -423.3125, + x_max: 421.9375, + ha: 431, + o: 'm -262 197 b -247 197 -257 197 -253 197 b -118 162 -210 197 -163 184 b 40 45 -61 134 -13 98 b 277 -95 119 -33 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -55 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 201 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 136 b 421 22 421 37 421 29 b 245 -199 421 -93 338 -199 b 238 -198 243 -199 240 -199 b -44 -47 148 -194 50 -141 b -250 86 -114 22 -183 66 b -295 94 -270 91 -283 94 b -315 91 -302 94 -307 94 b -381 4 -356 81 -381 43 b -355 -56 -381 -18 -372 -40 b -298 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -178 -69 -200 -58 -189 -62 b -151 -122 -160 -81 -151 -101 b -171 -167 -151 -138 -157 -155 b -239 -195 -185 -181 -213 -192 b -257 -197 -245 -197 -250 -197 b -423 -5 -352 -197 -423 -109 b -412 65 -423 16 -419 40 b -262 197 -389 137 -329 188 ', + }, + ornamentTurnSlash: { + x_min: -423.3125, + x_max: 421.9375, + ha: 431, + o: 'm -10 276 b -2 277 -8 277 -5 277 b 17 265 5 277 13 273 b 19 163 19 260 19 260 l 19 68 l 39 45 b 277 -95 122 -34 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -54 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 200 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 137 b 421 22 421 37 421 29 b 257 -198 421 -86 347 -188 b 242 -198 251 -198 247 -198 b 20 -105 181 -198 95 -163 l 19 -104 l 19 -183 b 19 -216 19 -195 19 -206 b 12 -273 19 -272 17 -267 b -2 -278 8 -277 2 -278 b -21 -266 -10 -278 -19 -274 b -23 -165 -23 -263 -23 -262 l -23 -69 l -44 -47 b -250 86 -117 23 -183 66 b -295 94 -270 93 -284 94 b -315 91 -302 94 -308 94 b -381 5 -356 81 -381 43 b -355 -56 -381 -16 -372 -40 b -299 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -168 -77 -196 -58 -179 -65 b -151 -122 -156 -90 -151 -105 b -179 -174 -151 -141 -160 -162 b -239 -195 -194 -184 -217 -192 b -257 -197 -245 -195 -250 -197 b -423 -5 -349 -197 -423 -113 b -423 0 -423 -4 -423 -1 b -277 194 -420 97 -362 173 b -247 197 -268 197 -258 197 b -24 104 -185 197 -100 162 l -23 102 l -23 181 b -21 265 -23 260 -23 260 b -10 276 -20 269 -14 274 ', + }, + ornamentMordent: { + x_min: -402.890625, + x_max: 401.53125, + ha: 410, + o: 'm -10 273 b -4 274 -9 273 -6 274 b 16 262 4 274 12 269 b 17 158 17 259 17 259 l 17 56 l 62 112 b 117 174 110 172 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b 21 -6 27 0 24 -2 l 17 -12 l 17 -147 b 17 -210 17 -173 17 -194 b 10 -292 17 -297 16 -287 b -2 -299 6 -297 2 -299 b -21 -287 -10 -299 -19 -295 b -24 -174 -23 -284 -23 -284 l -24 -63 l -66 -117 b -121 -176 -110 -170 -114 -176 b -125 -176 -122 -176 -123 -176 b -296 -12 -134 -174 -125 -184 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 170 -398 -43 -231 165 b -212 174 -221 173 -216 174 b -202 173 -208 174 -205 174 b -39 11 -200 172 -151 122 l -28 -1 l -25 1 l -24 4 l -24 130 b -23 260 -24 256 -24 258 b -10 273 -20 266 -16 270 ', + }, + ornamentShortTrill: { + x_min: -402.890625, + x_max: 401.53125, + ha: 410, + o: 'm -219 173 b -213 174 -217 174 -215 174 b -202 173 -209 174 -205 173 b -114 86 -200 172 -179 151 b -28 0 -66 37 -28 0 b 40 84 -28 0 2 37 b 117 174 111 173 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b -42 -86 27 0 -4 -38 b -118 -174 -112 -174 -111 -173 b -123 -176 -119 -176 -121 -176 b -133 -174 -126 -176 -130 -174 b -296 -12 -136 -173 -172 -137 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 172 -398 -43 -228 167 b -219 173 -223 172 -220 173 ', + }, + ornamentTremblement: { + x_min: -571.671875, + x_max: 570.3125, + ha: 582, + o: 'm -386 173 b -381 174 -385 174 -383 174 b -370 173 -377 174 -372 173 b -281 86 -367 172 -347 151 b -196 0 -235 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 277 172 b 289 174 285 174 288 174 b 299 173 294 174 298 173 b 462 11 303 172 338 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 374 -176 371 -176 b 280 -87 367 -173 345 -152 b 194 0 234 -38 194 0 b 125 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 43 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -141 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -289 -176 b -300 -174 -295 -176 -299 -174 b -464 -12 -304 -173 -340 -137 l -476 0 l -504 -34 b -543 -77 -534 -73 -537 -76 b -549 -79 -545 -79 -547 -79 b -571 -58 -562 -79 -571 -69 b -568 -49 -571 -55 -570 -52 b -392 172 -566 -43 -396 167 b -386 173 -390 172 -387 173 ', + }, + ornamentPrecompAppoggTrill: { + x_min: -571.671875, + x_max: 570.3125, + ha: 582, + o: 'm -559 351 b -551 352 -556 352 -553 352 b -530 338 -543 352 -533 348 b -529 169 -530 337 -529 291 l -529 1 l -507 27 l -441 112 b -382 174 -394 169 -390 174 b -378 174 -381 174 -379 174 b -281 86 -370 174 -375 179 b -196 0 -234 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 279 172 b 289 174 285 174 288 174 b 300 173 294 174 298 173 b 462 11 303 172 340 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 375 -176 371 -176 b 280 -87 367 -173 347 -152 b 194 0 234 -38 194 0 b 126 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 44 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -140 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -288 -176 b -300 -174 -294 -176 -298 -174 b -464 -11 -303 -173 -374 -102 l -476 0 l -506 -37 b -539 -76 -528 -65 -537 -74 b -551 -80 -543 -79 -547 -80 b -570 -68 -558 -80 -566 -76 l -571 -65 l -571 136 b -570 340 -571 331 -571 337 b -559 351 -568 344 -564 348 ', + }, + ornamentPrecompSlideTrillDAnglebert: { + x_min: -590.71875, + x_max: 589.359375, + ha: 601, + o: 'm -367 173 b -362 174 -366 174 -364 174 b -351 173 -357 174 -353 173 b -262 86 -348 172 -328 151 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 72 86 -13 172 6 151 b 157 0 119 37 157 0 b 227 84 159 0 189 37 b 303 174 298 173 296 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 144 -86 213 0 182 -38 b 68 -174 73 -174 74 -173 b 62 -176 66 -176 65 -176 b 53 -174 59 -176 55 -174 b -35 -87 50 -173 29 -152 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -367 173 -375 169 -372 172 ', + }, + ornamentPrecompSlideTrillBach: { + x_min: -590.71875, + x_max: 589.359375, + ha: 601, + o: 'm 175 273 b 182 274 178 273 181 274 b 202 262 190 274 198 269 b 204 158 204 259 204 259 l 204 56 l 250 112 b 303 174 296 172 298 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 208 -6 213 0 210 -2 l 204 -12 l 204 -147 b 204 -210 204 -173 204 -194 b 198 -292 204 -297 204 -287 b 183 -299 194 -297 189 -299 b 164 -287 175 -299 167 -295 b 163 -174 163 -284 163 -284 l 161 -63 l 119 -117 b 65 -176 76 -170 73 -176 b 61 -176 63 -176 62 -176 b -35 -87 51 -174 57 -180 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -363 174 -374 170 -371 174 b -359 174 -362 174 -360 174 b -262 86 -351 174 -356 179 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 147 11 -13 172 35 123 l 157 -1 l 160 1 l 163 4 l 163 130 b 164 260 163 256 163 258 b 175 273 166 266 170 270 ', + }, + ornamentPrecompTrillSuffixDandrieu: { + x_min: -590.71875, + x_max: 589.359375, + ha: 601, + o: 'm 544 335 b 553 337 548 337 551 337 b 575 313 563 337 570 330 b 589 226 583 285 589 256 b 517 8 589 152 563 76 b 464 -58 507 -4 503 -9 l 401 -136 b 362 -176 372 -172 370 -176 b 357 -176 360 -176 359 -176 b 261 -87 349 -174 355 -180 b 175 0 215 -38 175 0 b 106 -86 175 0 144 -38 b 29 -174 35 -174 36 -173 b 24 -176 28 -176 27 -176 b 14 -174 21 -176 17 -174 b -73 -87 12 -173 -8 -152 b -159 0 -121 -38 -159 0 b -228 -86 -160 0 -190 -38 b -304 -174 -299 -174 -298 -173 b -310 -176 -306 -176 -308 -176 b -319 -174 -314 -176 -318 -174 b -483 -12 -323 -173 -359 -137 l -495 0 l -524 -34 b -562 -77 -553 -73 -556 -76 b -568 -79 -564 -79 -566 -79 b -590 -58 -581 -79 -590 -69 b -588 -49 -590 -55 -589 -52 b -412 170 -585 -43 -417 165 b -398 174 -408 173 -402 174 b -389 173 -394 174 -392 174 b -300 86 -387 172 -366 151 b -215 -1 -254 37 -215 -1 b -145 84 -215 -1 -183 37 b -69 173 -74 173 -76 172 b -63 174 -68 174 -66 174 b -54 173 -61 174 -57 173 b 34 86 -51 172 -31 151 b 119 -1 81 37 119 -1 b 189 84 121 -1 151 37 b 265 173 259 173 258 172 b 270 174 266 174 269 174 b 280 173 274 174 279 173 b 370 84 283 172 303 151 b 455 -1 416 37 455 -1 l 455 -1 b 476 24 455 -1 469 15 b 547 226 522 87 547 159 b 534 302 547 252 543 278 b 532 317 533 308 532 313 b 544 335 532 326 536 333 ', + }, + ornamentPrecompDoubleCadenceUpperPrefix: { + x_min: -597.53125, + x_max: 596.171875, + ha: 608, + o: 'm -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 80 86 -5 172 13 151 b 166 -1 127 37 166 -1 b 235 84 166 -1 197 37 b 311 173 306 173 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 152 -86 221 -1 190 -38 b 76 -176 81 -174 83 -173 b 70 -176 74 -176 73 -176 b 61 -174 66 -176 62 -174 b -27 -87 58 -173 38 -152 b -114 -1 -74 -38 -112 -1 b -182 -86 -114 -1 -145 -38 b -258 -176 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 ', + }, + ornamentPrecompDoubleCadenceUpperPrefixTurn: { + x_min: -597.53125, + x_max: 596.171875, + ha: 608, + o: 'm -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 155 11 -5 172 43 123 l 166 -1 l 168 1 l 170 4 l 170 130 b 171 260 170 256 170 258 b 191 274 175 269 183 274 b 205 267 196 274 201 272 b 212 158 212 262 210 273 l 212 56 l 257 112 b 311 173 304 172 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 216 -6 221 -1 219 -2 l 212 -12 l 212 -147 b 212 -210 212 -173 212 -194 b 205 -292 212 -297 210 -287 b 191 -299 201 -297 196 -299 b 172 -287 183 -299 175 -295 b 170 -174 171 -284 171 -284 l 170 -63 l 127 -117 b 73 -176 84 -170 80 -176 b 68 -176 72 -176 70 -176 b -27 -87 59 -174 65 -180 b -114 0 -74 -38 -112 0 b -182 -86 -114 0 -145 -38 b -258 -174 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 ', + }, + ornamentPrecompTrillLowerSuffix: { + x_min: -597.53125, + x_max: 596.171875, + ha: 608, + o: 'm -413 173 b -408 174 -412 174 -409 174 b -397 173 -404 174 -400 173 b -308 86 -394 172 -374 151 b -223 0 -261 37 -223 0 b -153 84 -223 0 -191 37 b -77 174 -83 173 -84 172 b -72 174 -76 174 -74 174 b -62 173 -68 174 -63 173 b 25 86 -59 172 -39 151 b 112 0 73 37 111 0 b 181 84 112 0 144 37 b 257 174 251 173 251 172 b 262 174 258 174 261 174 b 273 173 266 174 270 173 b 436 9 276 172 347 101 l 447 -1 l 477 36 b 522 79 511 79 513 79 l 522 79 b 552 51 533 79 539 73 b 596 -112 582 6 596 -51 b 567 -262 596 -161 586 -213 b 539 -322 558 -287 544 -316 b 524 -327 534 -326 529 -327 b 504 -315 515 -327 507 -323 b 503 -308 503 -312 503 -309 b 511 -285 503 -302 504 -297 b 555 -113 540 -227 555 -169 b 544 -34 555 -86 551 -59 b 522 19 540 -16 530 8 l 521 22 l 481 -26 l 405 -122 b 353 -176 366 -172 362 -176 b 349 -176 352 -176 351 -176 b 253 -87 341 -176 347 -180 b 167 0 206 -38 167 0 b 99 -86 167 0 136 -38 b 21 -174 27 -174 28 -173 b 17 -176 20 -176 19 -176 b 6 -174 13 -176 9 -174 b -81 -87 4 -173 -14 -152 b -167 0 -129 -38 -167 0 b -236 -86 -167 0 -198 -38 b -313 -174 -307 -174 -306 -173 b -318 -176 -314 -176 -315 -176 b -328 -174 -321 -176 -325 -174 b -491 -12 -330 -173 -367 -137 l -503 0 l -530 -34 b -570 -77 -562 -73 -564 -76 b -577 -79 -571 -79 -574 -79 b -597 -58 -588 -79 -597 -69 b -596 -49 -597 -55 -597 -52 b -417 172 -593 -43 -423 167 b -413 173 -417 172 -415 173 ', + }, + stringsDownBow: { + x_min: -228.671875, + x_max: 227.3125, + ha: 232, + o: 'm -217 487 l -213 488 l 0 488 l 212 488 l 216 487 b 225 476 220 484 224 480 l 227 473 l 227 244 l 227 15 l 225 12 b 206 0 223 4 215 0 b 197 1 204 0 200 0 b 187 12 193 4 189 6 l 186 15 l 186 138 l 186 262 l -1 262 l -187 262 l -187 138 l -187 15 l -189 12 b -208 0 -193 4 -200 0 b -227 12 -216 0 -223 4 l -228 15 l -228 244 l -228 473 l -227 476 b -217 487 -225 480 -221 484 ', + }, + stringsUpBow: { + x_min: -149.71875, + x_max: 148.359375, + ha: 151, + o: 'm -137 381 b -130 383 -134 383 -133 383 b -111 371 -122 383 -114 378 b -55 224 -110 370 -85 305 b 0 80 -25 145 -1 80 b 54 224 0 80 24 145 b 112 377 114 384 110 373 b 127 384 118 381 122 384 b 148 362 138 384 148 374 l 148 356 l 83 183 b 16 9 47 88 17 11 b -1 0 12 2 5 0 b -14 5 -5 0 -10 1 b -84 183 -19 9 -13 -6 l -149 356 l -149 362 b -137 381 -149 371 -145 378 ', + }, + stringsHarmonic: { + x_min: -122.5, + x_max: 121.140625, + ha: 124, + o: 'm -16 145 b 0 147 -10 147 -5 147 b 121 -1 66 147 121 77 b 114 -49 121 -16 118 -33 b -1 -148 95 -112 47 -148 b -85 -106 -31 -148 -61 -134 b -122 -1 -110 -76 -122 -38 b -16 145 -122 68 -81 134 m 12 111 b 0 113 8 113 4 113 b -68 22 -29 113 -61 73 b -70 0 -69 15 -70 6 b -13 -113 -70 -49 -47 -98 b -1 -115 -9 -115 -5 -115 b 63 -40 24 -115 53 -83 b 68 -1 66 -27 68 -15 b 12 111 68 48 46 97 ', + }, + pluckedSnapPizzicatoAbove: { + x_min: -149.71875, + x_max: 148.359375, + ha: 151, + o: 'm -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 ', + }, + pluckedSnapPizzicatoBelow: { + x_min: -149.71875, + x_max: 148.359375, + ha: 151, + o: 'm -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 ', + }, + pluckedLeftHandPizzicato: { + x_min: 0, + x_max: 319.859375, + ha: 326, + o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ', + }, + keyboardPedalPed: { + x_min: -1.359375, + x_max: 1064.390625, + ha: 1086, + o: 'm 296 692 b 314 694 302 694 307 694 b 386 685 337 694 366 689 b 548 498 480 660 548 580 b 548 481 548 492 548 487 b 455 395 541 426 499 395 b 370 462 420 395 383 417 b 362 496 364 477 362 488 b 377 514 362 509 367 514 b 393 501 386 514 390 510 b 432 474 397 484 413 474 b 470 487 445 474 458 478 b 491 530 484 496 491 510 b 490 544 491 534 491 539 b 333 660 479 606 411 657 l 323 662 l 315 646 b 269 524 285 591 269 556 b 321 431 269 492 287 466 b 349 395 338 413 343 408 b 363 342 359 378 363 362 b 359 312 363 333 362 322 b 285 158 348 266 318 206 b 281 152 283 155 281 152 b 281 152 281 152 281 152 b 287 154 283 152 284 152 b 318 155 298 154 308 155 b 461 98 371 155 419 136 l 464 97 l 483 112 b 503 129 494 120 503 127 b 504 130 503 129 504 129 b 503 138 504 131 503 134 b 500 180 500 152 500 166 b 553 326 500 238 518 288 b 604 366 560 331 592 358 b 649 381 617 376 632 381 b 696 362 665 381 681 374 b 724 302 714 347 724 324 b 695 238 724 278 714 255 b 660 210 691 234 662 212 b 579 148 658 209 582 151 b 579 148 579 148 579 148 b 596 106 579 144 589 119 b 622 77 604 88 609 83 b 657 69 632 72 645 69 b 748 112 688 69 721 84 b 755 123 754 117 755 120 b 755 127 755 124 755 126 b 751 165 752 137 751 151 b 758 219 751 183 754 202 b 894 387 774 290 820 347 b 896 390 896 388 896 388 b 891 398 896 391 895 392 b 622 560 827 477 730 535 b 600 580 605 564 600 569 b 617 596 600 591 607 596 b 628 595 622 596 624 596 b 1057 248 846 552 1020 412 b 1064 191 1061 229 1064 209 b 922 0 1064 94 1005 9 b 902 -1 916 -1 909 -1 b 774 76 847 -1 800 26 b 769 83 770 81 770 83 b 769 81 769 83 769 83 b 627 -1 733 29 677 -1 b 548 27 597 -1 570 8 b 515 88 537 37 525 61 l 513 95 l 510 93 l 453 45 b 390 0 396 0 396 0 b 390 0 390 0 390 0 b 374 15 381 0 377 4 b 268 105 359 69 314 105 b 250 104 262 105 257 105 l 243 102 l 234 90 b 155 1 201 49 159 2 b 147 -1 152 0 149 -1 b 130 15 138 -1 130 6 b 132 20 130 18 132 19 b 136 31 133 22 134 27 b 220 131 149 74 178 109 b 231 137 225 134 230 136 b 302 278 280 202 302 244 b 265 335 302 299 295 309 b 209 442 234 363 213 402 b 209 455 209 446 209 451 b 279 648 209 502 232 564 l 285 659 l 283 659 b 176 627 238 653 210 645 b 57 477 111 594 66 538 b 55 459 55 471 55 464 b 72 409 55 437 61 415 b 93 403 78 405 87 403 b 152 467 123 403 151 431 b 168 488 153 483 157 488 b 185 462 181 488 185 483 l 185 460 b 137 344 183 409 168 369 b 78 322 119 328 98 322 b 13 360 50 322 25 335 b -1 426 4 380 -1 402 b 89 610 -1 488 32 559 b 296 692 147 659 210 685 m 926 348 b 921 353 924 351 922 353 b 914 348 920 353 918 351 b 823 167 857 306 823 237 b 828 124 823 154 826 138 b 890 31 837 79 862 40 b 896 31 892 31 894 31 b 956 104 916 31 940 59 b 970 191 965 129 970 159 b 966 241 970 208 969 224 b 926 348 959 277 945 313 m 627 326 b 619 326 624 326 622 326 b 598 316 611 326 604 323 b 568 215 579 288 568 255 b 568 208 568 213 568 210 b 571 183 570 195 570 184 l 571 183 b 594 201 571 183 582 191 l 634 231 b 660 259 653 247 656 248 b 664 278 662 266 664 272 b 627 326 664 299 649 320 ', + }, + keyboardPedalUp: { + x_min: -1.359375, + x_max: 592.078125, + ha: 604, + o: 'm 280 692 b 295 694 283 692 289 694 b 310 692 300 694 307 692 b 357 630 340 684 357 657 b 336 580 357 612 351 594 b 311 538 321 566 311 549 b 352 492 311 512 330 492 b 366 495 357 492 362 492 b 397 553 390 503 397 517 b 415 603 397 576 402 591 b 460 623 427 617 443 623 b 509 599 479 623 498 614 b 522 559 518 587 522 573 b 494 506 522 538 513 519 b 451 495 481 498 473 496 b 415 488 432 495 426 494 b 394 449 404 483 394 464 b 394 448 394 448 394 448 l 394 440 l 397 433 b 428 409 404 420 413 413 b 438 408 431 408 435 408 b 479 431 450 408 462 415 b 528 455 495 448 510 455 b 548 452 534 455 541 453 b 592 391 577 442 592 416 b 549 331 592 365 577 340 b 528 327 541 328 534 327 b 479 351 510 327 495 335 b 438 374 464 367 450 374 b 417 369 431 374 424 373 b 394 333 402 360 394 348 b 400 312 394 326 396 319 b 451 287 408 294 420 288 b 513 258 484 285 499 278 b 522 223 519 247 522 234 b 461 159 522 190 496 159 b 449 161 457 159 453 159 b 397 229 416 167 397 191 b 366 288 397 265 390 278 b 352 290 362 290 357 290 b 315 262 336 290 321 280 b 311 245 313 256 311 251 b 334 204 311 233 318 220 b 355 170 348 190 351 184 b 357 152 356 166 357 159 b 355 136 357 147 356 140 b 295 88 345 104 321 88 b 232 152 264 88 232 112 b 255 204 232 174 238 186 b 279 244 273 222 279 231 l 279 245 b 238 290 279 270 259 290 b 224 288 234 290 228 290 b 193 229 200 278 193 265 b 141 161 193 191 174 167 b 129 159 137 159 133 159 b 68 223 93 159 68 190 b 77 258 68 234 70 247 b 138 287 91 278 106 285 b 185 302 166 287 175 291 b 196 333 193 312 196 323 b 174 369 196 347 187 360 b 152 374 166 373 159 374 b 111 351 140 374 126 367 b 62 327 95 335 80 327 b 51 328 58 327 54 327 b -1 391 16 334 -1 363 b 53 455 -1 420 17 449 b 62 455 57 455 59 455 b 111 431 80 455 95 448 b 152 408 127 415 140 408 b 161 409 155 408 159 408 b 193 433 176 413 186 420 l 196 440 l 196 448 b 196 451 196 449 196 449 b 190 471 196 459 194 463 b 137 495 182 489 167 495 l 134 495 l 134 495 b 68 560 95 495 68 521 b 129 623 68 596 95 623 b 144 621 134 623 138 623 b 193 553 175 614 193 589 b 224 495 193 517 200 503 b 238 492 228 492 234 492 b 279 538 259 492 279 512 b 254 580 279 549 269 566 b 232 630 239 594 232 612 b 280 692 232 657 250 684 m 307 456 b 295 458 303 458 299 458 b 230 391 258 458 230 426 b 236 360 230 381 231 371 b 295 324 249 337 272 324 b 353 360 318 324 341 337 b 360 391 357 370 360 381 b 307 456 360 421 340 451 ', + }, + pictChokeCymbal: { + x_min: 0, + x_max: 227.3125, + ha: 232, + o: 'm 91 213 b 100 215 93 215 96 215 b 227 58 167 215 224 144 b 227 52 227 56 227 54 b 61 -201 227 -43 164 -138 b 29 -216 44 -212 36 -216 b 23 -210 27 -216 24 -213 b 21 -205 21 -208 21 -206 b 34 -192 21 -201 25 -197 b 122 -55 89 -161 122 -106 b 104 6 122 -33 117 -12 l 103 9 l 96 9 b 4 79 57 9 17 38 b 0 112 1 90 0 101 b 91 213 0 163 36 209 ', + }, + wiggleArpeggiatoUp: { + x_min: 58.53125, + x_max: 228.671875, + ha: 294, + o: 'm 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 ', + }, + arrowheadBlackUp: { + x_min: -10.890625, + x_max: 299.4375, + ha: 294, + o: 'm 136 460 b 142 462 137 462 140 462 b 166 449 152 462 161 456 b 171 428 168 446 168 445 b 288 131 194 322 238 209 b 298 115 295 120 296 117 b 299 106 298 112 299 109 b 273 81 299 91 287 81 b 255 86 268 81 261 83 b 155 116 225 104 183 116 l 152 116 l 149 108 b 141 83 148 102 144 91 b 134 48 137 69 134 58 b 149 9 134 34 140 24 b 153 -1 152 5 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 147 -11 b 122 2 138 -11 133 -6 b 95 61 104 20 95 38 b 107 108 95 74 99 90 b 108 113 107 111 108 112 b 107 113 108 113 108 113 b 102 113 106 113 104 113 b 31 86 76 108 53 98 b 14 80 24 81 20 80 b -10 106 0 80 -10 91 b 0 131 -10 115 -9 116 b 115 430 49 209 91 317 b 136 460 119 451 123 456 ', + }, + arrowheadBlackDown: { + x_min: -10.890625, + x_max: 298.078125, + ha: 294, + o: 'm 138 473 b 142 474 140 473 141 474 b 164 459 148 474 153 470 b 191 402 183 442 191 423 b 181 353 191 388 187 371 b 178 349 179 352 178 349 b 179 348 178 348 179 348 b 185 349 181 348 182 348 b 255 376 210 355 234 363 b 272 381 264 381 266 381 b 298 355 287 381 298 370 b 288 330 298 348 298 345 b 171 34 238 254 194 141 b 166 13 168 16 168 16 b 144 1 161 5 152 1 b 121 15 134 1 125 5 b 115 33 119 18 117 24 b 0 330 91 145 49 252 b -10 355 -9 345 -10 348 b 13 381 -10 371 0 381 b 31 376 19 381 25 380 b 132 345 61 358 103 345 l 136 345 l 137 355 b 145 378 138 359 142 370 b 152 415 149 394 152 405 b 137 452 152 427 148 438 b 133 464 134 458 133 460 b 138 473 133 467 134 470 ', + }, + vexAccidentalMicrotonal1: { + x_min: -171.5, + x_max: 483.1875, + ha: 493, + o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 495 20 616 20 616 b 20 373 20 427 20 373 b 115 410 20 373 63 390 l 210 448 l 210 531 b 212 620 210 614 210 616 b 231 632 215 628 223 632 b 246 627 236 632 242 631 b 251 541 251 620 251 628 l 251 463 l 315 489 b 387 514 368 509 381 514 b 393 513 390 514 392 514 b 406 494 402 510 406 502 b 397 476 406 487 404 480 b 323 446 396 474 363 462 l 251 417 l 251 283 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -19 -217 -9 -229 -16 -224 l -20 -215 l -21 48 l -21 310 l -83 287 b -152 262 -133 266 -145 262 b -157 263 -153 262 -155 262 b -171 283 -166 266 -171 274 b -161 301 -171 290 -167 297 b -91 328 -160 302 -129 315 l -21 356 l -21 487 l -20 617 l -19 621 b -8 631 -17 626 -12 630 m 210 288 b 210 401 210 351 210 401 b 114 365 209 401 167 384 l 20 327 l 20 238 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 180 164 199 187 192 l 209 177 b 209 177 209 177 209 177 b 210 288 210 177 210 199 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 ', + }, + vexAccidentalMicrotonal2: { + x_min: -1.359375, + x_max: 386.5625, + ha: 394, + o: 'm 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 ', + }, + vexWiggleArpeggioUp: { + x_min: 58.53125, + x_max: 228.671875, + ha: 294, + o: 'm 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 ', + }, + vexNoteHeadMutedBreve: { + x_min: 0, + x_max: 370.21875, + ha: 378, + o: 'm 0 0 l 0 277 l 61 277 l 122 277 l 122 0 l 122 -278 l 61 -278 l 0 -278 l 0 0 m 246 -1 l 246 277 l 308 277 l 370 277 l 370 -1 l 370 -278 l 308 -278 l 246 -278 l 246 -1 ', + }, + }, + cssFontWeight: 'normal', + ascender: 1903, + underlinePosition: -125, + cssFontStyle: 'normal', + boundingBox: { + yMin: -2065.375, + xMin: -695.53125, + yMax: 1901.578125, + xMax: 1159.671875, + }, + resolution: 1000, + original_font_information: { + postscript_name: 'Gonville-18', + version_string: 'Version 0.1.8904 ', + vendor_url: '', + full_font_name: 'Gonville-18', + font_family_name: 'Gonville-18', + copyright: 'No copyright is claimed on this font file.', + description: '', + trademark: '', + designer: '', + designer_url: '', + unique_font_identifier: 'FontForge 2.0 : Gonville-18 : 17-3-2010', + license_url: '', + license_description: '', + manufacturer_name: '', + font_sub_family_name: '18', + }, + descender: -2066, + fontFamily: 'Gonville-18', + lineHeight: 4093, + underlineThickness: 50, +}; + + +/***/ }), + +/***/ "./src/fonts/gonville_metrics.ts": +/*!***************************************!*\ + !*** ./src/fonts/gonville_metrics.ts ***! + \***************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "GonvilleMetrics": () => (/* binding */ GonvilleMetrics) +/* harmony export */ }); +/** + * The Gonville font was created by Simon Tatham. + * https://www.chiark.greenend.org.uk/~sgtatham/gonville/ + */ +const GonvilleMetrics = { + name: 'Gonville', + smufl: false, + stave: { + padding: 12, + endPaddingMax: 10, + endPaddingMin: 5, + unalignedNotePadding: 10, + }, + accidental: { + noteheadAccidentalPadding: 1, + leftPadding: 2, + accidentalSpacing: 3, + }, + clef: { + default: { + point: 40, + width: 26, + }, + small: { + point: 32, + width: 20, + }, + annotations: { + '8va': { + smuflCode: 'timeSig8', + default: { + point: 20, + treble: { + line: -1.2, + shiftX: 11, + }, + }, + small: { + point: 18, + treble: { + line: -0.4, + shiftX: 8, + }, + }, + }, + '8vb': { + smuflCode: 'timeSig8', + default: { + point: 20, + treble: { + line: 6.3, + shiftX: 10, + }, + bass: { + line: 4, + shiftX: 1, + }, + }, + small: { + point: 18, + treble: { + line: 5.8, + shiftX: 6, + }, + bass: { + line: 3.5, + shiftX: 0.5, + }, + }, + }, + }, + // May not need these anymore + lineCount: { + '8': { point: 55, shiftY: 14 }, + '7': { point: 47, shiftY: 8 }, + '6': { point: 40, shiftY: 1 }, + '5': { point: 30, shiftY: -6 }, + '4': { point: 23, shiftY: -12 }, + }, + }, + parenthesis: { + default: { + point: 39, + width: 7, + }, + gracenote: { + point: (39 * 3) / 5, + width: 3, + }, + }, + pedalMarking: { + up: { + point: 40, + }, + down: { + point: 40, + }, + }, + // These are for numeric digits, such as in time signatures + digits: { + point: 40, + tupletPoint: 28, + }, + // articulation: { + // }, + tremolo: { + default: { + point: 25, + spacing: 4, + offsetYStemUp: -7, + offsetYStemDown: 7, + offsetXStemUp: 9, + offsetXStemDown: -0.5, + }, + grace: { + point: 15, + spacing: 4, + offsetYStemUp: -7, + offsetYStemDown: 7, + offsetXStemUp: 6.5, + offsetXStemDown: -0.5, + }, + }, + staveRepetition: { + symbolText: { + offsetX: 12, + offsetY: 25, + spacing: 5, + }, + coda: { + offsetY: 25, + }, + segno: { + offsetY: 0, + }, + }, + // noteHead: { + // }, + stem: { + heightAdjustmentForFlag: -3, + // These are stem (Y) offsets to the note heads. To shift the + // noteheads (x-position) themselves, see glyphs.notehead.custom. + noteHead: { + noteheadTriangleUpHalf: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpBlack: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpWhole: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadXHalf: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXBlack: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXWhole: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadHalf: { + offsetYBaseStemUp: -1.5, + offsetYBaseStemDown: 1.5, + }, + noteheadBlack: { + offsetYBaseStemUp: -1.5, + offsetYBaseStemDown: 1.5, + }, + noteheadSquareWhite: { + offsetYBaseStemDown: -5, + offsetYBaseStemUp: 5, + }, + }, + }, + glyphs: { + flag: { + shiftX: -0.08, + flag8thDown: { + shiftX: -0.16, + }, + flag16thDown: { + shiftX: -0.16, + }, + flag32ndDown: { + shiftX: -0.16, + shiftY: 9, + }, + flag64thDown: { + shiftX: -0.16, + shiftY: 13, + }, + flag128thDown: { + shiftX: -0.16, + shiftY: 22, + }, + flag32ndUp: { + shiftY: -9, + }, + flag64thUp: { + shiftY: -13, + }, + flag128thUp: { + shiftY: -22, + }, + }, + stringNumber: { + verticalPadding: 8, + stemPadding: 2, + leftPadding: 5, + rightPadding: 6, + }, + textNote: { + point: 40, + default: {}, + ornamentTrill: { + shiftX: -5, + shiftY: 4, + }, + }, + noteHead: { + minPadding: 2, + custom: { + noteheadCircleXStemUp: { + shiftX: -1.5, + }, + noteheadXWholeStemUp: { + shiftX: -5, + }, + noteheadTriangleUpWholeStemUp: { + shiftX: -6, + }, + }, + }, + chordSymbol: { + global: { + superscriptOffset: -400, + subscriptOffset: 300, + kerningOffset: -250, + lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'], + upperKerningText: ['A', 'L'], + spacing: 100, + superSubRatio: 0.66, + }, + csymDiminished: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 506, + yOffset: 0, + }, + csymHalfDiminished: { + scale: 0.8, + leftSideBearing: -32, + advanceWidth: 506, + yOffset: 0, + }, + csymAugmented: { + scale: 1, + leftSideBearing: 0, + advanceWidth: 530, + yOffset: 0, + }, + csymParensLeftTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 155, + yOffset: 250, + }, + csymParensRightTall: { + scale: 0.8, + leftSideBearing: -40, + advanceWidth: 189, + yOffset: 250, + }, + csymBracketLeftTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 328, + yOffset: 0, + }, + csymBracketRightTall: { + scale: 0.8, + leftSideBearing: 1, + advanceWidth: 600, + yOffset: 0, + }, + csymParensLeftVeryTall: { + scale: 0.9, + leftSideBearing: 0, + advanceWidth: 121, + yOffset: 350, + }, + csymParensRightVeryTall: { + scale: 0.9, + leftSideBearing: 50, + advanceWidth: 111, + yOffset: 350, + }, + csymDiagonalArrangementSlash: { + scale: 0.6, + leftSideBearing: -1, + advanceWidth: 990, + yOffset: 0, + }, + csymMinor: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 482, + yOffset: 0, + }, + csymMajorSeventh: { + scale: 0.9, + leftSideBearing: 200, + yOffset: 0, + advanceWidth: 600, + }, + accidentalSharp: { + scale: 0.75, + leftSideBearing: 40, + advanceWidth: 250, + yOffset: -402, + }, + accidentalFlat: { + scale: 0.95, + leftSideBearing: -50, + advanceWidth: 208, + yOffset: -184, + }, + }, + jazzOrnaments: { + brassScoop: { + scale: 1.0, + xOffset: -12, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 15, + }, + brassDoitMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 22, + }, + brassFallLipShort: { + scale: 1.0, + xOffset: 17, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 15, + }, + brassLiftMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 5, + stemUpYOffset: 0, + reportedWidth: 5, + }, + brassFallRoughMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 28, + stemUpYOffset: 0, + reportedWidth: 5, + }, + brassBend: { + scale: 1.0, + xOffset: 2, + yOffset: -8, + stemUpYOffset: 24, + reportedWidth: 5, + }, + brassMuteClosed: { + scale: 1.0, + xOffset: 3, + yOffset: -9, + stemUpYOffset: 24, + reportedWidth: 5, + }, + brassMuteOpen: { + scale: 1.0, + xOffset: 3, + yOffset: -7, + stemUpYOffset: 25, + reportedWidth: 5, + }, + brassFlip: { + scale: 1.0, + xOffset: 10, + yOffset: -4, + stemUpYOffset: 7, + reportedWidth: 5, + }, + brassJazzTurn: { + scale: 1.0, + xOffset: 3, + yOffset: -4, + stemUpYOffset: 10, + reportedWidth: 28, + }, + brassSmear: { + scale: 1.0, + xOffset: 10, + yOffset: -4, + stemUpYOffset: 9, + reportedWidth: 5, + }, + }, + tremolo: { + default: { + shiftY: -10, + }, + grace: { + shiftY: -5, + }, + }, + tuplet: { + noteHeadOffset: 20, + stemOffset: 10, + bottomLine: 4, + topModifierOffset: 15, + }, + }, +}; + + +/***/ }), + +/***/ "./src/fonts/leland_glyphs.ts": +/*!************************************!*\ + !*** ./src/fonts/leland_glyphs.ts ***! + \************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "LelandFont": () => (/* binding */ LelandFont) +/* harmony export */ }); +const LelandFont = { + glyphs: { + bracketTop: { + x_min: 0, + x_max: 491, + y_min: 0, + y_max: 279, + ha: 279, + o: 'm 697 399 b 687 402 694 400 690 402 b 671 395 681 402 674 400 b 249 168 668 390 524 168 l 20 168 b 0 150 9 168 0 161 l 0 20 l 0 0 l 176 0 b 706 374 619 0 704 370 b 707 382 706 376 707 379 b 697 399 707 389 703 395 z', + }, + bracketBottom: { + x_min: 0, + x_max: 491, + y_min: -279, + y_max: 0, + ha: 279, + o: 'm 697 -399 b 707 -382 703 -395 707 -389 b 706 -374 707 -379 706 -376 b 176 0 704 -370 619 0 l 0 0 l 0 -20 l 0 -150 b 20 -168 0 -161 9 -168 l 249 -168 b 671 -395 524 -168 668 -390 b 687 -402 674 -400 681 -402 b 697 -399 690 -402 694 -400 z', + }, + segno: { + x_min: 0, + x_max: 654, + y_min: 0, + y_max: 869, + ha: 869, + o: 'm 546 690 l 838 1207 b 841 1215 840 1210 841 1212 b 832 1233 841 1221 837 1230 l 809 1248 b 798 1251 806 1250 801 1251 b 780 1241 792 1251 783 1247 l 487 721 l 217 860 b 99 995 147 897 99 924 b 236 1165 99 1120 179 1165 b 343 1073 288 1165 325 1130 b 454 988 357 1022 405 988 b 477 991 461 988 469 989 b 541 1076 526 1002 541 1045 b 540 1089 541 1080 541 1084 b 294 1225 534 1116 514 1225 b 0 939 72 1225 0 1053 b 125 706 0 825 42 753 l 397 563 l 104 45 b 102 35 102 42 102 37 b 111 19 102 29 107 22 l 132 3 b 144 0 135 1 141 0 b 148 0 145 0 147 0 b 161 10 153 1 158 6 l 456 531 l 704 403 b 842 256 780 361 842 318 b 706 86 842 131 763 86 b 599 177 654 86 616 120 b 488 262 585 228 537 262 b 465 259 481 262 472 261 b 402 177 418 248 402 206 b 403 163 402 171 402 167 b 649 26 409 135 429 26 b 942 312 871 26 942 199 b 821 549 942 426 901 507 z m 52 444 b 118 416 69 426 95 416 b 183 444 141 416 166 426 b 210 508 200 461 210 485 b 183 573 210 531 200 556 b 118 600 166 590 141 600 b 52 573 95 600 69 590 b 24 508 35 556 24 531 b 52 444 24 485 35 461 z m 760 730 b 825 703 778 713 802 703 b 890 730 848 703 873 713 b 917 795 907 747 917 772 b 890 861 917 818 907 844 b 825 888 873 878 848 888 b 760 861 802 888 778 878 b 733 795 743 844 733 818 b 760 730 733 772 743 747 z', + }, + coda: { + x_min: 0, + x_max: 745, + y_min: -113, + y_max: 735, + ha: 848, + o: 'm 924 467 b 560 896 916 697 757 881 l 560 1038 b 540 1058 560 1050 552 1058 l 524 1058 b 505 1038 513 1058 505 1050 l 505 896 b 150 467 311 877 158 693 l 20 467 b 0 446 9 467 0 458 l 0 432 b 20 412 0 420 9 412 l 150 412 b 505 0 166 193 317 17 l 505 -143 b 524 -163 505 -154 513 -163 l 540 -163 b 560 -143 552 -163 560 -154 l 560 0 b 923 412 753 13 907 190 l 1054 412 b 1073 432 1066 412 1073 420 l 1073 446 b 1054 467 1073 458 1066 467 z m 560 467 l 560 852 b 773 467 716 837 773 671 z m 505 467 l 301 467 b 505 851 301 668 357 831 z m 505 412 l 505 45 b 301 412 366 65 301 219 z m 560 412 l 772 412 b 560 45 772 215 706 60 z', + }, + gClef: { + x_min: 0, + x_max: 640, + y_min: -666, + y_max: 1112, + ha: 1778, + o: 'm 809 -30 b 665 -279 809 -132 768 -238 b 586 186 635 -107 596 122 b 809 -30 716 186 809 98 z m 605 -297 b 521 -305 576 -302 549 -305 b 140 56 315 -305 140 -161 b 390 498 140 232 264 389 b 459 562 415 520 438 540 b 492 357 472 484 482 416 b 272 45 361 318 272 180 b 467 -194 272 -56 351 -194 b 491 -176 478 -194 491 -189 b 459 -144 491 -163 477 -156 b 372 -1 403 -109 372 -72 b 521 177 372 86 436 157 z m 478 1184 b 632 1392 491 1241 557 1392 b 688 1223 654 1392 688 1322 b 478 863 688 1073 577 960 b 462 1037 469 920 462 976 b 478 1184 462 1090 467 1139 z m 176 -739 b 444 -959 176 -834 249 -959 b 622 -910 511 -959 570 -942 b 720 -670 700 -855 720 -760 b 697 -467 720 -613 711 -549 b 675 -338 693 -438 684 -395 b 922 3 816 -292 922 -145 b 557 367 922 220 768 367 b 516 619 543 454 528 539 b 773 1188 668 779 773 959 b 710 1477 773 1319 733 1426 b 608 1601 675 1551 634 1601 b 505 1528 598 1601 553 1584 b 387 1113 413 1418 387 1234 b 419 804 387 1035 395 965 b 312 701 418 802 343 726 b 0 117 181 579 0 405 b 503 -364 0 -153 235 -364 b 616 -354 544 -364 583 -360 b 660 -670 644 -492 660 -593 b 438 -899 660 -819 583 -899 b 370 -891 403 -899 373 -891 b 366 -887 369 -890 366 -888 b 373 -881 366 -884 369 -883 b 508 -721 441 -871 508 -814 b 341 -562 508 -644 449 -562 b 176 -739 240 -562 176 -644 z', + }, + cClef: { + x_min: 0, + x_max: 627, + y_min: -480, + y_max: 482, + ha: 962, + o: 'm 19 675 b 0 657 9 675 0 667 l 0 -654 b 19 -672 0 -664 9 -672 l 122 -672 b 141 -654 132 -672 141 -664 l 141 657 b 122 675 141 667 132 675 z m 903 -376 b 619 -58 903 -197 808 -58 b 505 -95 586 -58 562 -60 b 426 1 503 -89 474 -32 b 505 98 474 35 503 92 b 641 60 560 65 579 60 b 903 379 816 60 903 223 b 580 694 903 580 755 694 b 318 517 472 694 318 649 b 438 400 318 446 367 400 b 546 510 501 400 546 446 b 425 615 546 589 494 615 b 547 651 458 638 503 651 b 723 400 698 651 723 530 b 593 128 723 289 720 128 b 438 279 467 128 441 265 b 418 300 438 281 438 300 b 396 279 397 300 396 281 b 264 29 383 200 344 62 l 264 657 b 246 675 264 667 256 675 b 228 657 236 675 228 667 l 228 -654 b 246 -672 228 -664 236 -672 b 264 -654 256 -672 264 -664 l 264 -26 b 396 -278 348 -60 380 -197 b 418 -297 396 -279 397 -297 b 438 -278 438 -297 438 -279 b 593 -125 441 -262 467 -125 b 723 -397 720 -125 723 -287 b 547 -648 723 -527 698 -648 b 425 -612 503 -648 458 -635 b 441 -613 426 -612 432 -613 b 546 -507 504 -613 546 -569 b 438 -397 546 -444 501 -397 b 318 -514 367 -397 318 -444 b 580 -691 318 -647 472 -691 b 903 -376 755 -691 903 -577 z', + }, + fClef: { + x_min: 0, + x_max: 664, + y_min: -617, + y_max: 251, + ha: 868, + o: 'm 366 361 b 167 298 256 361 168 298 b 37 112 84 236 50 163 b 27 36 30 86 27 60 b 46 -58 27 1 33 -30 b 140 -138 63 -96 96 -124 b 194 -147 157 -144 176 -147 b 287 -122 226 -147 259 -138 b 359 10 331 -98 359 -46 b 289 134 359 60 333 107 b 206 160 259 154 230 160 b 160 153 189 160 173 157 b 109 122 145 147 121 132 b 147 215 114 150 131 192 b 219 279 163 238 194 266 b 351 308 255 300 301 308 b 570 -52 498 308 570 190 b 477 -399 570 -186 520 -314 b 310 -635 429 -494 366 -585 b 17 -837 160 -772 19 -837 b 0 -864 17 -837 0 -847 b 1 -871 0 -867 1 -868 b 27 -888 6 -886 19 -888 b 35 -887 29 -888 33 -887 b 331 -717 36 -887 200 -819 b 528 -544 405 -664 471 -606 b 661 -367 580 -488 625 -428 b 760 -50 724 -259 760 -147 b 670 239 760 69 729 168 b 366 361 602 320 500 361 z m 818 179 b 887 107 818 138 850 107 b 956 179 924 107 956 138 b 887 252 956 219 924 252 b 818 179 850 252 818 219 z m 818 -177 b 887 -251 818 -217 850 -251 b 956 -177 924 -251 956 -217 b 887 -104 956 -137 924 -104 b 818 -177 850 -104 818 -137 z', + }, + unpitchedPercussionClef1: { + x_min: 0, + x_max: 352, + y_min: -252, + y_max: 252, + ha: 504, + o: 'm 19 363 b 0 344 9 363 0 354 l 0 -344 b 19 -363 0 -354 9 -363 l 177 -363 b 196 -344 187 -363 196 -354 l 196 344 b 177 363 196 354 187 363 z m 330 363 b 311 344 320 363 311 354 l 311 -344 b 330 -363 311 -354 320 -363 l 488 -363 b 507 -344 498 -363 507 -354 l 507 344 b 488 363 507 354 498 363 z', + }, + '6stringTabClef': { + x_min: 0, + x_max: 439, + y_min: -743, + y_max: 746, + ha: 1489, + o: 'm 52 1074 l 52 958 l 249 958 l 249 419 l 387 419 l 387 958 l 583 958 l 583 1074 z m 0 -333 l 145 -333 l 192 -196 l 436 -196 l 481 -333 l 632 -333 l 396 334 l 238 334 z m 315 181 l 400 -81 l 229 -81 z m 566 -474 b 393 -402 531 -428 475 -403 l 71 -402 l 71 -1070 l 372 -1070 b 374 -1070 373 -1070 373 -1070 b 465 -1061 405 -1070 435 -1067 b 541 -1027 494 -1056 520 -1043 b 588 -975 560 -1012 575 -995 b 618 -868 608 -943 618 -907 b 592 -770 618 -829 609 -798 b 514 -711 575 -743 549 -724 b 566 -674 537 -700 554 -688 b 596 -576 586 -649 596 -616 b 566 -474 596 -536 586 -503 z m 348 -518 b 428 -528 380 -518 408 -521 b 464 -590 452 -539 464 -559 b 436 -649 464 -619 455 -638 b 366 -665 418 -661 395 -665 l 203 -665 l 203 -518 z m 367 -776 b 435 -788 396 -776 419 -780 b 477 -858 464 -801 477 -824 b 433 -942 477 -900 462 -927 b 366 -953 418 -949 395 -953 l 203 -953 l 203 -776 z', + }, + timeSig0: { + x_min: 15, + x_max: 389, + y_min: -254, + y_max: 255, + ha: 509, + o: 'm 291 367 b 22 0 138 367 22 209 b 291 -366 22 -209 138 -366 b 560 0 444 -366 560 -209 b 291 367 560 209 444 367 z m 376 -200 b 291 -308 376 -252 353 -308 b 206 -200 229 -308 206 -252 l 206 200 b 291 308 206 252 229 308 b 376 200 353 308 376 252 z', + }, + timeSig1: { + x_min: 15, + x_max: 336, + y_min: -243, + y_max: 245, + ha: 488, + o: 'm 359 -284 l 359 336 b 341 353 359 346 351 353 l 199 353 b 190 350 196 353 193 351 b 184 344 189 348 186 346 l 23 65 b 22 56 22 62 22 59 b 30 42 22 50 26 45 l 58 26 b 66 23 60 24 63 23 b 81 32 72 23 78 27 l 183 207 l 183 -284 l 73 -284 b 56 -301 63 -284 56 -291 l 56 -333 b 73 -350 56 -343 63 -350 l 468 -350 b 484 -333 478 -350 484 -343 l 484 -301 b 468 -284 484 -291 478 -284 z', + }, + timeSig2: { + x_min: 15, + x_max: 377, + y_min: -243, + y_max: 245, + ha: 488, + o: 'm 492 -56 b 382 -192 481 -88 452 -192 b 190 -134 288 -192 268 -134 b 153 -138 179 -134 167 -135 b 341 -36 153 -138 189 -84 b 533 173 494 12 533 86 b 288 353 533 233 505 353 b 30 156 71 353 30 222 b 138 49 30 96 79 49 b 245 156 197 49 245 96 b 179 255 245 196 216 240 b 168 271 174 256 168 264 b 202 297 168 279 176 289 b 251 304 209 300 229 304 b 311 288 271 304 294 300 b 348 180 338 271 348 245 b 65 -150 348 12 148 -24 b 22 -278 65 -150 22 -210 b 73 -350 22 -346 56 -350 b 121 -305 96 -350 121 -331 b 117 -287 121 -300 120 -294 b 105 -239 108 -266 105 -251 b 107 -226 105 -235 105 -230 b 154 -203 108 -217 120 -203 b 238 -289 196 -203 212 -252 b 350 -350 264 -327 304 -350 b 484 -264 396 -350 458 -317 b 543 -63 510 -210 543 -102 b 518 -36 543 -45 531 -36 b 492 -56 508 -36 498 -42 z', + }, + timeSig3: { + x_min: 14.984905204685425, + x_max: 364, + y_min: -244, + y_max: 244, + ha: 488, + o: 'm 392 23 b 514 168 507 68 514 143 b 514 176 514 171 514 174 b 262 351 514 189 510 351 b 22 176 14 351 22 176 l 23 176 l 22 173 b 115 81 22 121 63 81 b 207 173 167 81 207 121 b 135 264 207 215 176 255 b 140 268 137 265 138 266 b 215 289 160 282 187 289 b 340 176 275 289 340 253 b 255 69 340 85 272 72 b 140 60 238 66 157 60 b 121 40 122 60 121 40 l 121 12 b 140 -6 121 12 124 -4 b 243 -14 164 -7 197 -7 b 340 -167 307 -23 340 -66 b 215 -289 340 -264 275 -289 b 121 -266 174 -289 137 -278 b 207 -174 168 -264 207 -222 b 115 -81 207 -122 167 -81 b 22 -174 63 -81 22 -122 b 22 -180 22 -174 22 -177 b 78 -298 22 -199 26 -251 b 236 -351 134 -350 204 -351 b 524 -147 374 -351 524 -304 b 389 23 524 -42 452 3 z', + }, + timeSig4: { + x_min: 14, + x_max: 442, + y_min: -248, + y_max: 249, + ha: 497, + o: 'm 300 -183 l 300 -289 l 180 -289 b 160 -310 170 -289 160 -298 l 160 -337 b 180 -357 160 -348 170 -357 l 616 -357 b 636 -337 628 -357 636 -348 l 636 -310 b 616 -289 636 -298 628 -289 l 487 -289 l 487 -183 l 616 -183 b 636 -161 628 -183 636 -173 l 636 -134 b 616 -114 636 -124 628 -114 l 487 -114 l 487 115 b 477 134 487 124 482 131 l 459 143 b 452 144 456 144 455 144 b 449 144 451 144 451 144 b 436 140 445 144 439 143 l 305 20 b 300 4 301 16 300 10 l 300 -114 l 132 -114 b 464 287 132 -114 294 59 b 471 307 469 294 471 301 b 467 321 471 314 468 320 l 435 353 b 420 359 431 356 426 359 b 206 359 412 359 217 359 b 187 341 196 359 189 350 b 143 118 187 341 180 235 b 24 -124 105 1 62 -71 b 20 -140 24 -124 20 -131 b 22 -148 20 -143 20 -145 b 36 -174 26 -158 36 -174 b 52 -183 36 -174 39 -183 z', + }, + timeSig5: { + x_min: 15, + x_max: 362, + y_min: -244, + y_max: 246, + ha: 490, + o: 'm 39 314 b 46 170 39 314 46 245 b 46 151 46 164 46 157 b 39 -24 45 71 39 -24 b 39 -29 39 -24 39 -26 b 49 -48 39 -35 40 -46 b 99 -59 62 -50 92 -58 b 107 -59 102 -59 104 -59 b 121 -49 112 -59 118 -58 b 235 45 128 -30 144 45 b 356 -112 337 45 356 -43 b 238 -292 356 -184 333 -288 b 226 -292 233 -292 230 -292 b 166 -282 193 -292 174 -288 b 158 -274 161 -281 158 -276 b 164 -264 158 -269 160 -266 b 222 -168 177 -255 222 -239 b 117 -71 222 -98 173 -71 b 22 -171 60 -71 22 -122 b 111 -318 22 -220 36 -275 b 252 -351 147 -338 199 -351 b 456 -275 325 -351 405 -328 b 521 -109 503 -228 521 -167 b 433 79 521 -32 487 43 b 271 124 397 104 336 124 b 131 84 223 124 173 112 b 125 82 130 82 127 82 b 115 92 120 82 115 86 l 115 183 b 131 199 115 192 122 199 l 132 199 b 252 192 154 197 202 192 b 372 209 295 192 340 196 b 474 320 439 236 462 289 b 477 334 475 324 477 330 b 451 354 477 346 469 354 b 431 351 445 354 439 353 b 252 328 360 334 305 328 b 88 343 200 328 150 334 b 71 344 88 343 81 344 b 39 320 56 344 39 340 b 39 314 39 317 39 315 z', + }, + timeSig6: { + x_min: 15, + x_max: 387, + y_min: -244, + y_max: 245, + ha: 489, + o: 'm 356 69 b 216 22 268 69 236 43 b 209 98 212 52 209 75 b 216 167 209 121 212 141 b 338 287 225 220 261 287 b 410 259 374 287 396 275 b 356 174 380 246 356 207 b 448 82 356 122 396 82 b 541 174 500 82 541 122 l 541 177 b 541 179 541 177 541 177 b 533 225 541 192 539 213 b 310 353 514 276 454 353 b 58 163 180 353 86 229 b 22 -23 43 128 22 58 b 131 -285 22 -111 46 -210 b 318 -351 215 -348 268 -351 b 557 -125 369 -351 557 -292 b 356 69 557 16 446 69 z m 302 -291 b 216 -145 255 -291 216 -226 b 302 1 216 -65 255 1 b 390 -145 350 1 390 -65 b 302 -291 390 -226 350 -291 z', + }, + timeSig7: { + x_min: 15, + x_max: 366, + y_min: -250, + y_max: 251, + ha: 501, + o: 'm 233 -177 b 160 -336 202 -225 160 -282 b 180 -360 160 -351 164 -360 b 264 -351 203 -360 217 -354 b 278 -350 268 -351 274 -350 b 369 -360 320 -350 359 -360 b 405 -331 382 -360 406 -344 b 405 -327 405 -330 405 -328 b 396 -226 405 -324 396 -279 b 408 -130 396 -196 399 -161 b 503 151 425 -62 471 60 b 527 308 518 196 527 275 b 526 341 527 321 527 327 b 510 361 524 356 518 361 b 484 361 503 361 491 361 b 467 341 477 361 467 356 b 406 228 467 327 464 228 b 235 351 346 228 328 351 b 86 252 145 351 91 261 l 86 321 b 71 337 86 330 79 337 l 37 337 b 22 321 29 337 22 330 l 22 55 b 37 39 22 46 29 39 l 71 39 b 86 55 79 39 86 46 l 86 101 b 158 179 86 134 108 179 b 328 124 209 179 213 124 b 425 143 357 124 410 128 b 233 -177 413 120 266 -130 z', + }, + timeSig8: { + x_min: 15, + x_max: 393, + y_min: -248, + y_max: 246, + ha: 494, + o: 'm 467 26 b 547 166 514 62 547 108 b 294 354 547 269 433 354 b 40 166 154 354 40 269 b 122 13 40 108 55 56 b 22 -147 58 -24 22 -78 b 294 -357 22 -264 144 -357 b 566 -147 444 -357 566 -264 b 467 26 566 -78 541 -13 z m 294 -276 b 122 -145 202 -276 122 -226 b 197 -26 122 -49 197 -26 b 435 -187 295 -59 435 -108 b 294 -276 435 -226 384 -276 z m 386 65 b 180 209 288 96 180 144 b 294 288 180 265 232 288 b 444 180 383 288 444 246 b 386 65 444 111 412 78 z', + }, + timeSig9: { + x_min: 15, + x_max: 387, + y_min: -244, + y_max: 245, + ha: 489, + o: 'm 223 -68 b 363 -20 311 -68 343 -42 b 370 -96 367 -50 370 -73 b 363 -166 370 -120 367 -140 b 240 -285 354 -219 318 -285 b 168 -258 204 -285 183 -274 b 223 -173 199 -245 223 -206 b 131 -81 223 -121 183 -81 b 37 -173 79 -81 37 -121 l 37 -176 b 37 -177 37 -176 37 -176 b 46 -223 37 -190 40 -212 b 269 -351 65 -275 125 -351 b 521 -161 399 -351 492 -228 b 557 24 536 -127 557 -56 b 448 287 557 112 533 212 b 261 353 364 350 311 353 b 22 127 210 353 22 294 b 223 -68 22 -14 132 -68 z m 276 294 b 363 147 324 294 363 228 b 276 1 363 66 324 1 b 189 147 229 1 189 66 b 276 294 189 228 229 294 z', + }, + timeSigCommon: { + x_min: 0, + x_max: 463, + y_min: -256, + y_max: 258, + ha: 514, + o: 'm 468 258 b 406 147 432 235 406 193 b 408 130 406 141 406 135 b 521 17 415 71 462 24 b 537 17 526 17 533 17 b 667 147 609 17 667 75 b 667 156 667 147 667 151 b 664 177 667 161 665 171 b 350 372 651 239 595 372 b 0 17 36 372 0 111 b 382 -369 0 -154 22 -369 b 641 -131 524 -369 635 -285 b 629 -120 641 -124 636 -120 l 611 -120 b 599 -131 605 -120 599 -125 b 382 -323 593 -251 508 -323 b 196 -128 256 -323 196 -255 l 196 147 b 356 320 196 228 228 320 b 469 271 423 320 454 295 b 471 264 471 268 471 266 b 468 258 471 262 471 259 z', + }, + timeSigCutCommon: { + x_min: 0, + x_max: 463, + y_min: -376, + y_max: 388, + ha: 764, + o: 'm 611 -120 b 599 -131 605 -120 599 -125 b 382 -323 593 -251 508 -323 b 369 -323 377 -323 373 -323 l 369 320 b 469 269 428 317 455 292 b 471 264 471 266 471 265 b 468 258 471 261 471 259 b 406 147 432 235 406 193 b 408 130 406 141 406 135 b 523 17 415 71 464 24 b 537 17 527 17 533 17 b 667 147 609 17 667 75 b 667 156 667 147 667 151 b 664 177 667 161 665 171 b 369 370 651 236 598 364 l 369 543 b 353 559 369 552 361 559 l 314 559 b 298 543 305 559 298 552 l 298 369 b 0 17 32 341 0 105 b 298 -364 0 -140 17 -334 l 298 -526 b 314 -541 298 -534 305 -541 l 353 -541 b 369 -526 361 -541 369 -534 l 369 -369 b 382 -369 373 -369 377 -369 b 641 -131 524 -369 635 -285 b 629 -120 641 -124 636 -120 z m 196 147 b 298 312 196 215 216 289 l 298 -310 b 196 -128 229 -285 196 -223 z', + }, + timeSigPlus: { + x_min: 0, + x_max: 408, + y_min: -204, + y_max: 204, + ha: 408, + o: 'm 327 33 l 327 275 b 308 294 327 285 318 294 l 279 294 b 261 275 269 294 261 285 l 261 33 l 19 33 b 0 14 9 33 0 24 l 0 -13 b 19 -33 0 -23 9 -33 l 261 -33 l 261 -274 b 279 -294 261 -284 269 -294 l 308 -294 b 327 -274 318 -294 327 -284 l 327 -33 l 567 -33 b 588 -13 577 -33 588 -23 l 588 14 b 567 33 588 24 577 33 z', + }, + noteheadDoubleWhole: { + x_min: 0, + x_max: 538, + y_min: -178, + y_max: 179, + ha: 357, + o: 'm 33 258 b 20 258 27 258 26 258 b 0 238 9 258 0 249 b 0 -236 0 226 0 -226 b 20 -256 0 -246 9 -256 b 33 -256 26 -256 27 -256 b 53 -236 43 -256 53 -245 b 53 238 53 -228 53 226 b 33 258 53 249 45 258 z m 649 258 b 636 258 644 258 642 258 b 616 238 625 258 616 249 b 616 125 616 235 616 187 b 389 196 573 167 500 196 b 160 125 276 196 203 167 b 160 238 160 187 160 235 b 140 258 160 249 151 258 b 127 258 134 258 132 258 b 107 238 115 258 107 249 b 107 -236 107 226 107 -226 b 127 -256 107 -246 115 -256 b 140 -256 132 -256 134 -256 b 160 -236 150 -256 160 -245 b 160 -122 160 -233 160 -186 b 389 -194 203 -166 276 -194 b 616 -122 500 -194 573 -166 b 616 -236 616 -186 616 -233 b 636 -256 616 -246 625 -256 b 649 -256 642 -256 644 -256 b 670 -236 660 -256 670 -245 b 670 238 670 -228 670 226 b 649 258 670 249 661 258 z m 462 -140 b 400 -148 445 -144 422 -148 b 314 -101 360 -148 333 -135 b 268 68 295 -65 269 29 b 268 76 268 71 268 73 b 314 141 268 109 282 130 b 377 150 331 145 354 150 b 462 102 416 150 442 140 b 510 -66 482 63 510 -29 b 462 -140 510 -104 497 -128 z m 755 258 b 742 258 749 258 747 258 b 721 238 730 258 721 249 b 721 -236 721 226 721 -226 b 742 -256 721 -246 730 -256 b 755 -256 747 -256 749 -256 b 775 -236 765 -256 775 -245 b 775 238 775 -228 775 226 b 755 258 775 249 766 258 z', + }, + noteheadWhole: { + x_min: 0, + x_max: 373, + y_min: -134, + y_max: 136, + ha: 270, + o: 'm 269 196 b 0 1 71 196 0 95 b 269 -193 0 -92 71 -193 b 537 1 468 -193 537 -92 b 269 196 537 95 468 196 z m 343 -138 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 148 68 176 -63 150 29 b 194 141 145 107 160 130 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 389 -65 363 63 389 -29 b 343 -138 389 -102 377 -128 z', + }, + noteheadHalf: { + x_min: 0, + x_max: 325, + y_min: -133, + y_max: 132, + ha: 265, + o: 'm 307 190 b 0 -60 167 190 0 73 b 161 -192 0 -122 45 -192 b 468 58 311 -192 468 -69 b 307 190 468 143 396 190 z m 268 -63 b 108 -124 264 -66 158 -124 b 50 -72 60 -124 50 -85 b 200 62 50 -12 194 59 b 360 122 206 65 308 122 b 418 71 395 122 418 102 b 268 -63 418 9 272 -60 z', + }, + noteheadBlack: { + x_min: 0, + x_max: 325, + y_min: -133, + y_max: 132, + ha: 265, + o: 'm 0 -60 b 161 -192 0 -122 45 -192 b 468 58 311 -192 468 -69 b 307 190 468 143 396 190 b 0 -60 167 190 0 72 z', + }, + noteheadXBlack: { + x_min: 0, + x_max: 325, + y_min: -132, + y_max: 132, + ha: 264, + o: 'm 461 138 b 468 153 465 141 468 147 l 468 154 b 462 167 468 160 465 164 l 445 184 b 431 190 441 187 436 190 b 418 186 426 190 420 189 l 235 40 l 50 186 b 37 190 48 189 42 190 b 24 184 32 190 29 187 l 6 167 b 0 153 3 164 0 158 b 7 138 0 147 3 141 l 183 0 l 7 -138 b 0 -153 3 -141 0 -147 b 6 -166 0 -157 3 -163 l 23 -184 b 37 -190 26 -189 32 -190 b 50 -186 42 -190 48 -189 l 235 -40 l 418 -186 b 431 -190 420 -189 426 -190 b 445 -184 436 -190 442 -189 l 462 -166 b 468 -153 465 -163 468 -157 b 461 -138 468 -147 465 -141 l 285 0 z', + }, + noteheadCircleX: { + x_min: 0, + x_max: 325, + y_min: -162, + y_max: 163, + ha: 325, + o: 'm 265 0 l 395 105 b 426 0 415 75 426 39 b 387 -115 426 -43 412 -84 z m 233 -27 l 360 -145 b 235 -192 327 -174 282 -192 b 99 -137 183 -192 134 -171 z m 202 1 l 73 -105 b 42 0 53 -75 42 -39 b 81 115 42 43 56 84 z m 235 29 l 108 145 b 233 193 141 174 186 193 b 369 138 285 193 334 173 z m 233 235 b 0 0 104 235 0 130 b 233 -233 0 -130 104 -233 b 468 0 363 -233 468 -130 b 233 235 468 130 363 235 z', + }, + noteheadDoubleWholeSquare: { + x_min: 0, + x_max: 432, + y_min: -179, + y_max: 177, + ha: 356, + o: 'm 590 255 b 570 235 579 255 570 246 l 570 203 l 53 203 l 53 235 b 33 255 53 246 45 255 l 20 255 b 0 235 9 255 0 246 l 0 -230 b 20 -251 0 -242 9 -251 l 33 -251 b 53 -230 45 -251 53 -242 l 53 -200 l 570 -200 l 570 -238 b 590 -258 570 -249 579 -258 l 603 -258 b 622 -238 615 -258 622 -249 l 622 235 b 603 255 622 246 615 255 z m 570 -101 l 53 -101 l 53 105 l 570 105 z', + }, + noteheadSquareWhite: { + x_min: 0, + x_max: 310, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 395 128 l 395 -128 l 52 -128 l 52 128 z m 446 180 l 0 180 l 0 -180 l 446 -180 z', + }, + noteheadSquareBlack: { + x_min: 0, + x_max: 310, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 446 180 l 0 180 l 0 -180 l 446 -180 z', + }, + noteheadTriangleUpBlack: { + x_min: 0, + x_max: 310, + y_min: -136, + y_max: 122, + ha: 258, + o: 'm 223 176 l 0 -196 l 446 -196 z', + }, + noteheadSlashedDoubleWhole1: { + x_min: -66, + x_max: 456, + y_min: -213, + y_max: 212, + ha: 425, + o: 'm 652 298 b 638 305 649 304 644 305 b 626 301 634 305 629 304 l 560 248 b 543 256 557 253 550 256 b 530 256 537 256 536 256 b 510 236 518 256 510 248 b 510 204 510 235 510 223 l 455 161 b 281 194 413 181 356 194 b 53 124 168 194 96 166 b 53 236 53 186 53 233 b 29 256 53 253 42 256 b 20 256 26 256 23 256 b 0 236 9 256 0 248 b 0 -204 0 228 0 -98 l -88 -272 b -95 -288 -92 -276 -95 -282 b -91 -300 -95 -291 -94 -295 b -76 -307 -86 -304 -82 -307 b -65 -302 -72 -307 -68 -305 l 3 -248 b 20 -258 6 -253 12 -258 b 53 -238 33 -258 52 -255 b 53 -206 53 -236 53 -225 l 107 -161 b 281 -196 148 -183 206 -196 b 510 -124 393 -196 465 -166 b 510 -238 510 -187 510 -235 b 530 -258 510 -248 518 -258 b 563 -238 543 -258 563 -255 b 563 204 563 -229 563 98 l 649 272 b 657 288 655 276 657 282 b 652 298 657 291 655 295 z m 160 75 b 269 148 160 138 219 148 b 356 101 310 148 334 140 b 363 85 357 96 360 91 l 189 -56 b 160 66 174 -14 161 40 b 160 75 160 69 160 72 z m 53 -163 b 53 -124 53 -151 53 -138 b 76 -144 60 -131 68 -138 z m 402 -68 b 292 -148 402 -138 351 -148 b 207 -101 252 -150 226 -137 b 199 -84 204 -96 202 -91 l 373 56 b 402 -68 389 13 402 -40 z m 510 124 b 485 144 503 131 494 137 l 510 163 b 510 124 510 151 510 137 z', + }, + noteheadSlashedWhole1: { + x_min: -75, + x_max: 448, + y_min: -211, + y_max: 214, + ha: 425, + o: 'm 641 301 b 625 308 636 305 631 308 b 613 304 621 307 618 307 l 439 160 b 269 196 399 181 343 196 b 0 1 71 196 0 95 b 69 -138 0 -49 20 -101 l -101 -271 b -108 -287 -105 -275 -108 -281 b -104 -298 -107 -291 -107 -294 b -88 -304 -99 -302 -94 -304 b -76 -301 -85 -304 -81 -304 l 98 -157 b 269 -193 138 -179 194 -193 b 537 1 468 -193 537 -92 b 468 141 537 52 517 104 l 638 274 b 645 289 642 278 645 284 b 641 301 644 292 644 297 z m 148 68 b 148 78 148 72 148 75 b 194 141 148 111 163 131 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 350 86 346 98 348 92 l 177 -55 b 148 68 163 -12 150 42 z m 389 -65 b 343 -138 389 -102 377 -128 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 187 -82 192 -95 190 -89 l 279 -6 l 361 58 b 389 -65 376 16 389 -39 z', + }, + noteheadSlashedHalf1: { + x_min: -98, + x_max: 424, + y_min: -213, + y_max: 212, + ha: 425, + o: 'm 606 298 b 592 305 602 302 598 305 b 580 301 588 305 583 304 l 412 163 b 307 190 383 180 347 190 b 153 148 258 190 204 176 b 0 -60 58 98 0 13 b 14 -120 0 -81 4 -101 b 32 -143 20 -128 26 -135 l -134 -274 b -141 -288 -138 -276 -141 -282 b -137 -300 -141 -292 -140 -297 b -122 -307 -134 -304 -128 -307 b -111 -302 -118 -307 -114 -305 l 56 -164 b 161 -192 85 -181 121 -192 b 315 -151 210 -192 264 -179 b 468 58 410 -101 468 -16 b 454 117 468 78 464 98 b 436 141 449 125 444 134 l 603 272 b 611 287 608 275 611 281 b 606 298 611 291 609 295 z m 56 -98 b 49 -73 52 -91 49 -82 b 75 -23 49 -58 59 -39 b 199 60 99 1 147 32 b 337 118 251 89 302 111 b 359 121 344 120 351 121 b 361 121 360 121 360 121 l 225 9 l 69 -114 b 56 -98 65 -109 60 -104 z m 410 94 b 416 69 415 86 416 78 b 392 19 416 53 408 36 b 266 -65 367 -6 318 -36 b 128 -122 215 -94 163 -115 b 107 -125 121 -124 114 -125 b 104 -125 107 -125 105 -125 l 245 -9 l 396 111 b 410 94 402 107 408 101 z', + }, + noteheadSlashedBlack1: { + x_min: -98, + x_max: 424, + y_min: -213, + y_max: 212, + ha: 425, + o: 'm 606 298 b 592 305 602 302 598 305 b 580 301 588 305 583 304 l 412 161 b 307 190 383 180 347 190 b 0 -60 167 190 0 72 b 32 -144 0 -89 10 -120 l -134 -274 b -141 -288 -138 -278 -141 -284 b -137 -301 -141 -292 -140 -297 b -122 -307 -134 -305 -128 -307 b -111 -304 -118 -307 -114 -307 l 56 -164 b 161 -192 82 -181 117 -192 b 468 58 311 -192 468 -71 b 436 141 468 91 456 120 l 603 271 b 611 285 608 275 611 281 b 606 298 611 289 609 294 z', + }, + noteheadSlashedDoubleWhole2: { + x_min: -66, + x_max: 456, + y_min: -213, + y_max: 212, + ha: 425, + o: 'm 563 -204 b 563 236 563 -98 563 228 b 543 256 563 249 554 256 b 530 256 537 256 536 256 b 510 236 518 256 510 248 b 510 124 510 233 510 187 b 281 194 467 166 393 194 b 107 161 207 194 150 181 l 53 204 b 53 236 53 223 53 235 b 33 256 53 249 45 256 b 20 256 27 256 26 256 b 3 246 12 256 6 253 l -63 301 b -76 305 -68 304 -72 305 b -91 298 -81 305 -86 304 b -95 287 -94 295 -95 291 b -88 272 -95 281 -92 276 l 0 204 b 0 -238 0 98 0 -229 b 20 -258 0 -248 9 -258 b 33 -258 26 -258 27 -258 b 53 -238 43 -258 53 -246 b 53 -124 53 -235 53 -187 b 281 -196 96 -166 170 -196 b 456 -161 356 -196 413 -183 l 510 -206 b 510 -238 510 -225 510 -236 b 530 -258 510 -248 518 -258 b 543 -258 536 -258 537 -258 b 560 -246 549 -258 556 -252 l 626 -302 b 638 -307 631 -305 634 -307 b 654 -300 645 -307 649 -304 b 657 -288 655 -295 657 -292 b 651 -272 657 -282 655 -276 z m 207 140 b 269 148 225 144 248 148 b 356 101 310 148 336 140 b 402 -68 376 62 402 -30 b 402 -78 402 -71 402 -75 l 292 9 l 168 109 b 207 140 176 124 189 134 z m 78 144 b 53 124 69 137 60 131 b 53 163 53 137 53 150 z m 356 -141 b 294 -148 338 -145 315 -148 b 207 -101 253 -148 226 -137 b 161 66 189 -66 163 27 b 160 72 161 69 160 71 b 161 78 160 75 160 76 l 271 -9 l 395 -109 b 356 -141 387 -124 374 -134 z m 485 -144 b 510 -124 494 -138 503 -131 b 510 -163 510 -138 510 -151 z', + }, + noteheadSlashedWhole2: { + x_min: -75, + x_max: 448, + y_min: -212, + y_max: 214, + ha: 426, + o: 'm 468 -138 b 537 1 517 -101 537 -49 b 269 196 537 95 468 196 b 98 160 196 196 140 181 l -76 304 b -88 308 -81 307 -84 307 b -104 301 -94 308 -99 305 b -108 289 -107 297 -107 292 b -101 274 -108 284 -105 278 l 69 141 b 0 1 20 104 0 52 b 269 -193 0 -92 71 -193 b 441 -157 343 -193 399 -179 l 613 -301 b 625 -305 618 -304 622 -305 b 641 -298 631 -305 636 -302 b 645 -287 644 -294 644 -291 b 638 -271 645 -281 642 -275 z m 194 141 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 389 -65 363 63 389 -29 b 389 -76 389 -69 389 -73 l 279 10 l 156 112 b 194 141 163 125 176 135 z m 343 -138 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 148 68 176 -63 150 29 b 148 76 148 71 148 73 b 148 81 148 78 148 79 l 258 -6 l 382 -108 b 343 -138 374 -122 361 -132 z', + }, + noteheadSlashedHalf2: { + x_min: -98, + x_max: 424, + y_min: -213, + y_max: 212, + ha: 425, + o: 'm 386 -102 b 468 58 438 -55 468 4 b 454 117 468 78 464 98 b 307 190 428 164 373 190 b 153 148 258 190 204 176 b 108 120 137 140 122 130 l -111 301 b -122 305 -114 304 -118 305 b -137 298 -128 305 -134 302 b -141 287 -140 295 -141 291 b -134 272 -141 281 -138 275 l 85 101 b 0 -60 32 53 0 -7 b 14 -120 0 -81 4 -101 b 161 -192 40 -167 95 -192 b 315 -151 210 -192 264 -179 b 361 -122 333 -143 347 -132 l 580 -302 b 592 -307 583 -305 588 -307 b 606 -300 598 -307 602 -304 b 611 -288 609 -297 611 -292 b 603 -274 611 -282 608 -276 z m 199 60 b 337 118 251 89 302 111 b 359 121 344 120 351 121 b 410 94 382 121 400 112 b 416 69 415 86 416 78 b 392 19 416 53 408 36 b 308 -42 374 0 343 -20 l 245 7 l 189 55 b 199 60 192 56 196 58 z m 266 -65 b 128 -122 215 -94 163 -115 b 107 -125 121 -124 114 -125 b 56 -98 84 -125 66 -117 b 49 -73 52 -91 49 -82 b 75 -23 49 -58 59 -39 b 163 39 94 -4 125 17 l 225 -9 l 282 -56 b 266 -65 276 -59 272 -62 z', + }, + noteheadSlashedBlack2: { + x_min: -98.44444444444443, + x_max: 424, + y_min: -213, + y_max: 212, + ha: 425, + o: 'm 384 -102 b 468 58 435 -58 468 0 b 307 190 468 143 396 190 b 108 121 239 190 167 163 l -111 301 b -124 305 -115 304 -120 305 b -138 298 -128 305 -134 302 b -141 289 -140 295 -141 292 b -141 287 -141 288 -143 288 b -135 272 -141 281 -140 275 l 84 101 b 0 -60 35 56 0 0 b 161 -192 0 -122 45 -192 b 361 -122 232 -192 304 -164 l 579 -302 b 590 -307 583 -305 588 -307 b 606 -300 596 -307 602 -304 b 611 -288 609 -297 611 -292 b 603 -274 609 -282 608 -276 z', + }, + noteheadDiamondDoubleWhole: { + x_min: 0, + x_max: 373, + y_min: -178, + y_max: 179, + ha: 357, + o: 'm 504 258 b 484 238 494 258 484 248 l 484 46 b 282 187 415 95 285 186 b 268 192 279 190 275 192 b 255 187 262 192 258 190 l 52 45 l 52 238 b 33 258 52 248 43 258 l 20 258 b 0 238 9 258 0 248 l 0 -236 b 20 -256 0 -248 9 -256 l 33 -256 b 52 -236 43 -256 52 -248 l 52 -45 l 249 -181 b 268 -190 258 -189 264 -190 b 282 -186 274 -190 279 -189 b 484 -43 285 -184 413 -94 l 484 -236 b 504 -256 484 -248 494 -256 l 517 -256 b 537 -236 528 -256 537 -248 l 537 238 b 517 258 537 248 528 258 z m 220 -115 l 102 -33 l 317 117 l 435 35 z', + }, + noteheadDiamondWhole: { + x_min: 0, + x_max: 373, + y_min: -133, + y_max: 132, + ha: 265, + o: 'm 282 -187 b 530 -13 285 -186 530 -13 b 537 0 534 -10 537 -6 b 530 13 537 4 534 10 b 282 186 530 13 287 183 b 268 190 279 189 275 190 b 255 186 262 190 258 189 l 7 12 b 0 -1 3 9 0 4 b 4 -13 0 -6 1 -10 l 249 -183 b 268 -192 258 -190 264 -192 b 282 -187 274 -192 279 -190 z m 220 -117 l 102 -35 l 317 115 l 435 33 z', + }, + noteheadDiamondHalf: { + x_min: 0, + x_max: 335, + y_min: -132, + y_max: 133, + ha: 265, + o: 'm 475 -13 b 482 0 480 -10 482 -6 b 475 13 482 4 480 10 l 253 187 b 240 192 251 190 246 192 b 229 187 236 192 232 190 l 7 13 b 0 0 3 10 0 6 b 7 -13 0 -4 3 -10 l 229 -186 b 240 -190 232 -189 236 -190 b 253 -186 246 -190 251 -189 z m 284 -115 l 92 33 l 199 117 l 390 -33 z', + }, + noteheadDiamondBlack: { + x_min: 0, + x_max: 335, + y_min: -132, + y_max: 133, + ha: 265, + o: 'm 475 -14 b 482 -1 480 -10 482 -6 b 475 13 482 4 480 10 l 253 187 b 240 192 251 190 246 192 b 229 187 236 192 232 190 l 7 13 b 0 0 3 10 0 4 b 7 -14 0 -6 3 -10 l 229 -186 b 240 -190 232 -189 236 -190 b 253 -186 246 -190 251 -189 z', + }, + noteheadParenthesisRight: { + x_min: 0, + x_max: 75, + y_min: -209.4142135623731, + y_max: 212, + ha: 421.4142135623731, + o: 'm 10 305 b 4 302 7 304 6 304 b 0 295 1 301 0 298 b 1 289 0 294 0 292 b 68 -10 1 288 68 160 b 1 -288 68 -95 50 -192 b 0 -292 0 -289 0 -291 b 4 -300 0 -295 1 -298 b 12 -301 7 -301 9 -302 b 17 -298 14 -301 16 -300 b 108 0 22 -292 108 -174 b 17 301 108 174 22 295 b 10 305 16 304 13 305 z', + }, + noteheadParenthesisLeft: { + x_min: 0, + x_max: 75, + y_min: -212, + y_max: 209.4142135623731, + ha: 421.4142135623731, + o: 'm 98 -305 b 104 -302 101 -304 102 -304 b 108 -295 107 -301 108 -298 b 107 -289 108 -294 108 -292 b 40 10 107 -288 40 -160 b 107 288 40 95 58 192 b 108 292 108 289 108 291 b 104 300 108 295 107 298 b 96 301 101 301 99 302 b 91 298 94 301 92 300 b 0 0 86 292 0 174 b 91 -301 0 -174 86 -295 b 98 -305 92 -304 95 -305 z', + }, + noteheadMoonBlack: { + x_min: 0, + x_max: 310, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 0 180 l 0 0 b 223 -180 0 -99 99 -180 b 446 0 347 -180 446 -99 l 446 180 z', + }, + noteheadTriangleLeftBlack: { + x_min: 0, + x_max: 339, + y_min: -136, + y_max: 122, + ha: 258, + o: 'm 0 176 l 0 -196 l 488 -196 z', + }, + noteheadTriangleRightBlack: { + x_min: 0, + x_max: 339, + y_min: -136, + y_max: 122, + ha: 258, + o: 'm 488 176 l 0 -196 l 488 -196 z', + }, + noteheadTriangleRoundDownBlack: { + x_min: 0, + x_max: 310, + y_min: -136, + y_max: 122, + ha: 258, + o: 'm 226 -196 l 446 63 b 226 176 446 63 384 176 b 0 63 68 176 0 63 z', + }, + augmentationDot: { + x_min: 0, + x_max: 100, + y_min: -50, + y_max: 50, + ha: 100, + o: 'm 0 0 b 72 -72 0 -40 32 -72 b 144 0 112 -72 144 -40 b 72 72 144 40 112 72 b 0 0 32 72 0 40 z', + }, + tremolo1: { + x_min: 0, + x_max: 290, + y_min: -93, + y_max: 96, + ha: 189, + o: 'm 0 48 l 0 -134 l 418 -43 l 418 138 z', + }, + flag8thUp: { + x_min: 0, + x_max: 289.04376776750354, + y_min: -817, + y_max: 12, + ha: 829, + o: 'm 0 -327 b 12 -343 0 -331 1 -338 b 291 -600 73 -363 197 -441 b 359 -827 317 -645 359 -707 b 294 -1140 359 -930 331 -1037 b 289 -1162 291 -1149 288 -1156 b 297 -1175 289 -1168 291 -1172 b 304 -1176 300 -1176 302 -1176 b 327 -1161 314 -1176 321 -1171 b 416 -798 395 -1041 418 -888 b 416 -780 416 -791 416 -786 b 302 -458 409 -595 302 -458 b 131 -220 307 -458 170 -281 b 50 -50 78 -138 53 -56 b 36 6 49 -46 36 6 b 19 17 35 12 27 17 b 0 -1 9 17 0 9 z', + }, + flag8thDown: { + x_min: 0, + x_max: 309, + y_min: -12, + y_max: 817, + ha: 829, + o: 'm 0 1 b 19 -17 0 -9 9 -17 b 36 -6 26 -17 35 -12 b 50 50 36 -4 49 46 b 117 196 52 56 65 111 b 331 458 173 289 259 357 b 445 780 402 559 445 654 b 338 1161 445 912 415 1021 b 317 1176 334 1171 325 1176 b 310 1175 314 1176 311 1176 b 300 1158 302 1172 300 1166 b 304 1140 300 1153 301 1146 b 384 827 361 1007 384 930 b 317 600 384 707 343 645 b 12 343 223 441 72 363 b 0 327 1 338 0 331 z', + }, + flag16thUp: { + x_min: 0, + x_max: 279, + y_min: -820, + y_max: 12, + ha: 832, + o: 'm 301 -681 b 148 -514 262 -631 219 -585 b 56 -372 92 -458 66 -409 b 52 -343 55 -364 53 -354 b 271 -510 125 -343 219 -442 b 340 -696 327 -583 340 -641 b 337 -739 340 -710 338 -724 b 301 -681 325 -716 312 -697 z m 0 -549 b 22 -563 0 -553 12 -559 b 258 -776 59 -576 171 -648 b 318 -950 307 -850 318 -901 b 317 -975 318 -959 318 -966 b 285 -1140 317 -1009 307 -1083 b 279 -1164 284 -1148 279 -1156 b 289 -1179 279 -1169 282 -1175 b 297 -1181 292 -1181 294 -1181 b 318 -1161 307 -1181 312 -1169 b 382 -962 344 -1120 382 -1043 b 374 -855 382 -920 379 -886 b 402 -678 389 -802 402 -749 b 333 -471 402 -603 382 -536 b 137 -228 265 -382 192 -307 b 42 0 82 -148 42 0 b 22 17 39 10 37 17 b 0 0 4 17 0 10 z', + }, + flag16thDown: { + x_min: 0, + x_max: 309, + y_min: -26, + y_max: 803, + ha: 829, + o: 'm 53 346 b 56 363 55 353 56 359 b 163 517 66 399 78 452 b 384 732 246 582 346 662 b 317 503 382 621 354 552 b 53 346 229 395 122 364 z m 0 -14 b 22 -37 0 -26 10 -37 b 43 -14 33 -37 40 -26 b 167 232 65 134 109 177 b 445 683 243 305 445 416 b 432 837 445 730 441 783 b 441 919 438 855 441 881 b 327 1149 441 1032 374 1112 b 304 1156 321 1153 312 1156 b 287 1152 298 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1135 b 382 930 344 1076 382 1027 b 374 876 382 912 380 893 l 373 871 b 373 871 373 871 373 871 b 327 789 366 842 350 815 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z', + }, + flag32ndUp: { + x_min: 0, + x_max: 279, + y_min: -821, + y_max: 186, + ha: 1007, + o: 'm 301 -683 b 148 -516 262 -632 219 -588 b 56 -373 92 -459 66 -410 b 50 -343 55 -366 53 -354 b 271 -500 125 -343 219 -432 b 340 -687 327 -575 340 -632 b 337 -739 340 -704 338 -721 b 301 -683 325 -716 312 -698 z m 271 -259 b 340 -446 327 -333 340 -392 b 338 -469 340 -455 338 -462 b 333 -461 337 -467 334 -464 b 91 -192 265 -372 145 -271 b 50 -92 69 -160 58 -124 b 271 -259 124 -92 219 -192 z m 0 -550 b 22 -564 0 -554 12 -560 b 258 -778 59 -577 171 -649 b 318 -952 307 -851 318 -903 b 317 -976 318 -960 318 -968 b 285 -1142 317 -1011 307 -1084 b 279 -1165 284 -1149 279 -1158 b 289 -1181 279 -1171 282 -1176 b 297 -1182 292 -1182 294 -1182 b 318 -1162 307 -1182 312 -1171 b 382 -963 344 -1122 382 -1044 b 374 -857 382 -922 379 -887 b 402 -668 389 -802 402 -740 b 386 -563 402 -632 396 -596 b 402 -441 395 -526 402 -487 b 402 -428 402 -436 402 -432 b 333 -220 402 -353 382 -285 b 137 23 265 -131 192 -56 b 42 251 82 102 42 251 b 22 268 39 261 37 268 b 0 251 4 268 0 261 z', + }, + flag32ndDown: { + x_min: 0, + x_max: 309, + y_min: -216, + y_max: 803, + ha: 1019, + o: 'm 50 73 b 91 171 58 105 71 141 b 347 402 145 251 272 317 b 384 454 361 418 374 435 b 324 239 384 347 361 287 b 50 73 235 130 122 94 z m 163 517 b 366 693 248 589 327 642 b 382 716 372 700 377 708 b 383 693 383 708 383 700 b 314 505 383 621 359 562 b 53 343 258 436 179 390 b 56 363 55 351 56 359 b 163 517 66 400 81 449 z m 0 -288 b 22 -311 0 -298 10 -311 b 43 -288 33 -311 40 -300 b 167 -40 65 -138 109 -95 b 445 409 243 32 445 143 b 431 577 445 462 439 520 b 441 651 435 602 439 626 b 441 675 441 658 441 667 b 441 687 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 305 1156 321 1153 314 1156 b 287 1152 300 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1136 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z', + }, + flag64thUp: { + x_min: 0, + x_max: 279, + y_min: -822, + y_max: 373, + ha: 1195, + o: 'm 333 -461 b 91 -192 265 -372 145 -271 b 50 -92 69 -161 58 -125 b 271 -251 125 -92 219 -183 b 340 -438 327 -324 340 -383 b 338 -469 340 -448 338 -459 b 333 -461 337 -467 334 -464 z m 301 -683 b 148 -517 262 -632 219 -588 b 56 -374 92 -461 66 -410 b 50 -343 55 -366 53 -356 b 271 -501 125 -343 219 -433 b 340 -688 327 -575 340 -634 b 337 -739 340 -706 338 -721 b 301 -683 325 -717 312 -698 z m 271 10 b 340 -176 327 -63 340 -121 b 337 -217 340 -190 338 -204 b 333 -212 336 -216 334 -213 b 91 65 265 -122 145 -16 b 48 177 66 101 53 143 l 50 177 b 271 10 124 177 217 78 z m 0 -552 b 22 -564 0 -554 12 -562 b 258 -778 59 -579 171 -649 b 318 -952 307 -851 317 -903 b 317 -976 318 -960 318 -968 b 285 -1142 317 -1012 307 -1084 b 279 -1165 284 -1149 279 -1158 b 289 -1181 279 -1172 282 -1178 b 297 -1184 292 -1182 295 -1184 b 318 -1164 307 -1182 312 -1172 b 382 -963 344 -1122 382 -1044 b 374 -857 382 -923 379 -887 b 402 -668 389 -804 402 -740 b 386 -563 402 -632 396 -596 b 402 -432 395 -523 402 -480 b 402 -418 402 -428 402 -423 b 383 -304 402 -379 396 -341 b 402 -170 393 -264 402 -222 b 402 -158 402 -166 402 -163 b 333 49 402 -84 382 -16 b 137 292 265 138 192 213 b 42 520 82 372 42 520 b 22 537 39 530 37 537 b 0 520 4 537 0 530 z', + }, + flag64thDown: { + x_min: 0, + x_max: 309, + y_min: -403, + y_max: 804, + ha: 1207, + o: 'm 52 -196 b 91 -102 59 -166 71 -131 b 347 128 145 -23 272 45 b 384 180 361 145 374 163 b 324 -30 384 76 361 16 b 52 -196 235 -140 124 -176 z m 163 517 b 366 693 248 589 327 644 b 382 717 372 701 377 708 b 383 693 383 708 383 701 b 314 505 383 621 359 562 b 53 343 258 438 179 390 b 56 363 55 351 56 359 b 163 517 66 400 81 449 z m 314 232 b 50 69 258 163 179 117 b 91 171 56 102 69 140 b 347 402 145 251 272 318 b 382 449 360 416 372 432 b 383 420 383 439 383 429 b 314 232 383 348 359 288 z m 0 -557 b 22 -580 0 -567 10 -580 b 43 -557 33 -580 40 -567 b 167 -310 65 -408 109 -364 b 445 140 243 -238 445 -125 b 431 307 445 192 439 249 b 441 377 436 331 439 354 b 441 406 441 387 441 397 b 441 418 441 410 441 413 b 423 546 441 464 432 507 b 441 651 432 582 438 618 b 441 675 441 660 441 667 b 441 688 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 305 1158 321 1153 314 1156 b 287 1152 300 1158 292 1156 b 279 1145 281 1151 279 1148 b 294 1129 279 1140 288 1136 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 563 z', + }, + flag128thUp: { + x_min: 0, + x_max: 279, + y_min: -821, + y_max: 573, + ha: 1394, + o: 'm 0 -550 b 22 -563 0 -553 12 -560 b 258 -776 59 -576 171 -648 b 318 -950 307 -850 318 -901 b 317 -975 318 -959 318 -966 b 285 -1140 317 -1011 307 -1083 b 279 -1164 284 -1148 279 -1156 b 289 -1179 279 -1171 282 -1176 b 297 -1182 292 -1181 294 -1181 b 318 -1162 307 -1182 312 -1169 b 382 -962 344 -1120 382 -1043 b 374 -857 382 -922 379 -887 b 402 -668 389 -802 402 -740 b 383 -554 402 -629 396 -590 b 402 -399 396 -503 402 -452 b 382 -284 402 -359 396 -321 b 402 -125 396 -230 402 -180 b 383 -14 402 -86 396 -49 b 402 130 396 35 402 81 b 333 348 402 204 382 284 b 137 592 265 438 192 513 b 42 808 82 671 46 793 b 22 825 39 818 37 825 b 0 808 4 825 0 818 z m 271 310 b 340 111 328 235 340 170 b 338 73 340 98 338 86 b 333 81 336 76 334 79 b 91 357 265 170 145 276 b 48 469 66 393 53 435 l 50 469 b 271 310 124 469 217 377 z m 301 -681 b 148 -523 262 -631 219 -593 b 56 -383 92 -465 66 -420 b 49 -343 55 -374 52 -359 l 50 -343 b 271 -500 124 -343 217 -432 b 340 -688 327 -575 340 -634 b 337 -737 340 -706 338 -721 b 301 -681 325 -716 312 -697 z m 333 -461 b 91 -192 265 -372 145 -271 b 48 -73 66 -154 53 -111 l 48 -73 l 50 -73 b 271 -232 124 -73 217 -163 b 340 -419 327 -305 340 -364 b 337 -468 340 -435 338 -452 b 333 -461 336 -465 334 -464 z m 333 -192 b 91 84 265 -102 145 4 b 48 200 65 121 53 164 l 48 200 l 50 200 b 271 42 124 200 217 109 b 340 -147 327 -32 340 -92 b 337 -197 340 -164 338 -181 b 333 -192 336 -196 334 -194 z', + }, + flag128thDown: { + x_min: 0, + x_max: 309, + y_min: -591, + y_max: 803, + ha: 1394, + o: 'm 0 -828 b 22 -851 0 -838 10 -851 b 43 -828 33 -851 40 -840 b 167 -580 65 -678 109 -635 b 445 -131 243 -508 445 -397 b 431 36 445 -79 439 -22 b 441 108 436 60 439 85 b 441 137 441 117 441 127 b 441 147 441 140 441 144 b 423 275 441 193 432 236 b 441 377 433 310 438 344 b 441 406 441 387 441 396 b 441 418 441 410 441 413 b 423 546 441 464 432 507 b 441 649 432 582 438 616 b 441 675 441 658 441 667 b 441 687 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 304 1156 321 1153 312 1156 b 287 1152 298 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1135 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z m 314 -37 b 50 -200 258 -107 179 -153 b 91 -102 58 -168 71 -132 b 347 128 145 -23 272 45 b 382 176 360 143 372 160 b 383 151 383 167 383 160 b 314 -37 383 79 359 19 z m 314 232 b 50 69 258 163 179 117 b 91 171 56 101 69 138 b 347 402 145 251 272 317 b 382 449 360 416 372 432 b 383 420 383 439 383 429 b 314 232 383 347 359 288 z m 163 517 b 366 693 248 589 327 642 b 382 716 372 700 377 708 b 383 693 383 708 383 700 b 314 505 382 621 359 560 b 53 343 258 436 179 390 b 56 363 55 350 56 357 b 163 517 66 399 81 449 z m 52 -467 b 91 -372 59 -435 71 -402 b 347 -141 145 -292 272 -225 b 384 -89 361 -125 374 -108 b 324 -301 382 -194 361 -255 b 52 -467 235 -410 122 -446 z', + }, + accidentalFlat: { + x_min: 0, + x_max: 203, + y_min: -176, + y_max: 453, + ha: 629, + o: 'm 289 114 b 173 223 281 170 246 223 b 52 170 101 223 59 179 l 58 632 b 37 652 58 644 49 652 l 20 652 b 0 632 9 652 0 644 l 7 -233 b 27 -253 7 -245 16 -253 b 39 -251 30 -253 36 -252 b 216 -114 45 -248 138 -202 b 292 78 271 -52 292 19 b 289 114 292 91 291 102 z m 190 58 b 148 -85 190 36 184 -30 b 48 -183 124 -122 75 -161 l 52 98 b 134 153 55 111 76 153 b 190 73 186 153 190 104 b 190 58 190 66 190 62 z', + }, + accidentalNatural: { + x_min: 0, + x_max: 171, + y_min: -323, + y_max: 325, + ha: 648, + o: 'm 239 264 b 228 268 236 266 232 268 b 222 266 226 268 223 266 l 40 216 l 40 468 l 0 468 l 0 -245 b 20 -264 0 -256 9 -264 b 26 -264 22 -264 24 -264 l 207 -213 l 207 -465 l 246 -465 b 246 248 246 -226 246 1 b 239 264 246 253 243 261 z m 40 -140 l 40 96 l 207 144 l 207 -94 z', + }, + accidentalSharp: { + x_min: 0, + x_max: 244, + y_min: -333, + y_max: 334, + ha: 667, + o: 'm 336 151 b 351 171 344 153 351 163 l 351 256 b 331 276 351 268 343 276 b 328 276 330 276 330 276 l 281 266 l 281 481 l 240 481 l 240 258 l 112 232 l 112 435 l 72 435 l 72 223 l 16 212 b 0 192 7 210 0 200 l 0 189 l 0 105 l 0 108 b 20 88 0 96 9 88 b 24 88 22 88 23 88 l 72 98 l 72 -140 l 16 -151 b 0 -171 7 -153 0 -163 l 0 -255 b 20 -275 0 -266 9 -275 b 24 -275 22 -275 23 -275 l 72 -265 l 72 -480 l 112 -480 l 112 -256 l 240 -230 l 240 -433 l 281 -433 l 281 -222 l 336 -212 b 351 -192 344 -210 351 -200 l 351 -107 b 331 -86 351 -95 343 -86 b 328 -86 330 -86 330 -86 l 281 -96 l 281 141 z m 112 107 l 240 132 l 240 -105 l 112 -132 z', + }, + accidentalDoubleSharp: { + x_min: 0, + x_max: 275, + y_min: -137, + y_max: 138, + ha: 275, + o: 'm 360 73 l 376 73 b 396 94 387 73 396 82 l 396 179 b 376 199 396 190 387 199 l 291 199 b 271 179 279 199 271 190 l 271 161 l 271 102 l 200 30 l 196 30 l 124 102 l 124 179 b 105 199 124 190 117 199 l 20 199 b 0 179 9 199 0 190 l 0 94 b 20 73 0 82 9 73 l 35 73 l 36 73 l 96 73 l 167 3 l 167 -1 l 96 -73 l 36 -73 l 35 -73 l 20 -73 b 0 -92 9 -73 0 -81 l 0 -177 b 20 -197 0 -189 9 -197 l 105 -197 b 124 -177 117 -197 124 -189 l 124 -101 l 196 -32 l 200 -32 l 271 -101 l 271 -161 l 271 -163 l 271 -177 b 291 -197 271 -189 279 -197 l 376 -197 b 396 -177 387 -197 396 -189 l 396 -92 b 376 -73 396 -81 387 -73 l 361 -73 l 360 -73 l 300 -73 l 228 -1 l 228 1 l 300 73 z', + }, + accidentalDoubleFlat: { + x_min: 0, + x_max: 371, + y_min: -176, + y_max: 453, + ha: 629, + o: 'm 531 115 b 415 223 523 171 488 223 b 294 171 343 223 301 180 l 300 632 b 279 652 300 644 291 652 l 262 652 b 242 632 251 652 242 644 l 246 199 b 173 223 228 213 204 223 b 52 170 101 223 59 179 l 58 632 b 37 652 58 644 49 652 l 20 652 b 0 632 9 652 0 644 l 7 -233 b 27 -253 7 -245 16 -253 b 39 -249 30 -253 36 -251 b 216 -114 45 -246 138 -202 b 248 -69 226 -102 239 -82 l 249 -233 b 269 -253 249 -245 258 -253 b 281 -249 272 -253 278 -251 b 458 -112 287 -246 380 -200 b 534 79 513 -50 534 20 b 531 115 534 92 533 104 z m 190 58 b 148 -85 190 36 184 -30 b 48 -183 124 -122 75 -161 l 52 98 b 134 153 55 111 76 153 b 190 73 186 153 190 104 b 190 58 190 66 190 62 z m 432 58 b 390 -85 432 36 426 -30 b 289 -183 366 -122 317 -161 l 294 98 b 376 153 297 111 318 153 b 432 73 428 153 432 104 b 432 58 432 66 432 62 z', + }, + accidentalParensLeft: { + x_min: 0, + x_max: 75, + y_min: -212, + y_max: 209.4142135623731, + ha: 421.4142135623731, + o: 'm 98 -305 b 104 -302 101 -304 102 -304 b 108 -295 107 -301 108 -298 b 107 -289 108 -294 108 -292 b 40 10 107 -288 40 -160 b 107 288 40 95 58 192 b 108 292 108 289 108 291 b 104 300 108 295 107 298 b 96 301 101 301 99 302 b 91 298 94 301 92 300 b 0 0 86 292 0 174 b 91 -301 0 -174 86 -295 b 98 -305 92 -304 95 -305 z', + }, + accidentalParensRight: { + x_min: 0, + x_max: 75, + y_min: -209.4142135623731, + y_max: 212, + ha: 421.4142135623731, + o: 'm 10 305 b 4 302 7 304 6 304 b 0 295 1 301 0 298 b 1 289 0 294 0 292 b 68 -10 1 288 68 160 b 1 -288 68 -95 50 -192 b 0 -292 0 -289 0 -291 b 4 -300 0 -295 1 -298 b 12 -301 7 -301 9 -302 b 17 -298 14 -301 16 -300 b 108 0 22 -292 108 -174 b 17 301 108 174 22 295 b 10 305 16 304 13 305 z', + }, + accidentalQuarterToneFlatStein: { + x_min: 0, + x_max: 193, + y_min: -176, + y_max: 452, + ha: 628, + o: 'm 0 84 b 107 -145 0 -26 65 -105 b 245 -249 166 -202 245 -249 b 253 -253 248 -251 249 -253 b 272 -235 264 -253 272 -245 l 278 632 b 259 651 278 642 269 651 l 248 651 b 229 632 238 651 229 642 l 232 174 b 125 217 223 186 192 217 b 0 84 53 217 0 173 z m 148 154 b 232 102 212 154 232 115 b 233 107 232 99 233 102 l 235 -179 b 134 -72 207 -156 160 -111 b 92 58 98 -17 92 36 b 92 75 92 62 92 68 b 148 154 92 105 96 154 z', + }, + accidentalThreeQuarterTonesFlatZimmermann: { + x_min: 0, + x_max: 422, + y_min: -176, + y_max: 452, + ha: 628, + o: 'm 608 84 b 482 217 608 173 554 217 b 376 174 416 217 384 186 l 379 632 b 360 651 379 642 370 651 l 348 651 b 330 632 338 651 330 642 l 336 -235 b 354 -253 336 -245 344 -253 b 363 -249 359 -253 360 -251 b 501 -145 363 -249 442 -202 b 608 84 543 -105 608 -26 z m 459 154 b 516 75 511 154 516 105 b 516 58 516 68 516 62 b 474 -72 516 36 510 -17 b 373 -179 448 -111 400 -156 l 374 107 b 376 102 374 102 376 99 b 459 154 376 115 396 154 z m 0 84 b 107 -145 0 -26 65 -105 b 245 -249 166 -202 245 -249 b 253 -253 248 -251 249 -253 b 272 -235 264 -253 272 -245 l 278 632 b 259 651 278 642 269 651 l 248 651 b 229 632 238 651 229 642 l 232 174 b 125 217 223 186 192 217 b 0 84 53 217 0 173 z m 148 154 b 232 102 212 154 232 115 b 233 107 232 99 233 102 l 235 -179 b 134 -72 207 -156 160 -111 b 92 58 98 -17 92 36 b 92 75 92 62 92 68 b 148 154 92 105 96 154 z', + }, + accidentalQuarterToneSharpStein: { + x_min: 0, + x_max: 180, + y_min: -316, + y_max: 320, + ha: 636, + o: 'm 243 144 b 259 164 252 145 259 156 l 259 249 b 239 269 259 261 251 269 b 235 268 238 269 236 268 l 150 251 l 150 461 l 109 461 l 109 242 l 16 222 b 0 203 7 220 0 212 l 0 120 b 20 99 0 108 9 99 b 24 99 22 99 23 99 l 109 117 l 109 -121 l 16 -141 b 0 -160 7 -143 0 -151 l 0 -243 b 20 -264 0 -255 9 -264 b 24 -264 22 -264 23 -264 l 109 -246 l 109 -455 l 150 -455 l 150 -238 l 243 -219 b 259 -199 252 -217 259 -207 l 259 -114 b 239 -95 259 -102 251 -95 b 235 -95 238 -95 236 -95 l 150 -112 l 150 125 z', + }, + accidentalThreeQuarterTonesSharpStein: { + x_min: 0, + x_max: 290, + y_min: -328, + y_max: 339, + ha: 667, + o: 'm 400 158 b 416 179 409 160 416 170 l 416 264 b 397 284 416 275 409 284 b 393 284 396 284 395 284 l 348 274 l 348 488 l 308 488 l 308 265 l 223 248 l 223 465 l 184 465 l 184 240 l 108 225 l 108 442 l 69 442 l 69 216 l 16 204 b 0 186 7 203 0 194 l 0 102 b 20 82 0 91 9 82 b 24 82 22 82 23 82 l 69 92 l 69 -147 l 16 -158 b 0 -177 7 -160 0 -168 l 0 -261 b 20 -281 0 -272 9 -281 b 24 -281 22 -281 23 -281 l 69 -272 l 69 -472 l 108 -472 l 108 -264 l 184 -248 l 184 -451 l 223 -451 l 223 -240 l 308 -223 l 308 -426 l 348 -426 l 348 -215 l 400 -204 b 418 -184 409 -203 418 -193 l 418 -99 b 397 -79 418 -88 409 -79 b 393 -79 396 -79 395 -79 l 348 -89 l 348 148 z m 184 -122 l 108 -138 l 108 99 l 184 115 z m 223 122 l 308 140 l 308 -98 l 223 -115 z', + }, + accidentalBuyukMucennebFlat: { + x_min: 0, + x_max: 277, + y_min: -176, + y_max: 454, + ha: 630, + o: 'm 396 115 b 279 225 387 173 354 225 b 158 171 204 225 164 179 l 160 317 l 336 419 l 336 482 l 161 380 l 161 488 l 336 590 l 336 654 l 163 552 l 164 634 b 144 654 164 645 156 654 l 127 654 b 107 634 115 654 107 645 l 108 520 l 0 456 l 0 393 l 108 456 l 109 350 l 0 285 l 0 222 l 109 287 l 114 -235 b 134 -253 114 -246 122 -253 b 145 -251 138 -253 141 -252 b 323 -114 145 -251 242 -204 b 399 79 377 -52 399 20 b 396 115 399 92 397 104 z m 297 58 b 255 -85 297 36 291 -30 b 154 -184 230 -122 181 -163 l 158 96 b 240 153 161 109 181 153 b 297 73 292 153 297 104 b 297 58 297 66 297 62 z', + }, + accidentalBakiyeFlat: { + x_min: 0, + x_max: 277, + y_min: -176, + y_max: 454, + ha: 630, + o: 'm 396 115 b 279 225 387 173 354 225 b 158 171 204 225 164 179 l 161 348 l 336 452 l 336 516 l 161 413 l 164 634 b 144 654 164 645 156 654 l 127 654 b 107 634 115 654 107 645 l 109 382 l 0 318 l 0 255 l 109 318 l 114 -235 b 134 -253 114 -246 122 -253 b 145 -251 138 -253 143 -252 b 323 -114 145 -251 242 -204 b 399 79 377 -52 399 20 b 396 115 399 92 397 104 z m 297 58 b 255 -85 297 36 291 -30 b 156 -184 230 -122 183 -163 l 158 96 b 240 153 161 109 181 153 b 297 73 292 153 297 104 b 297 58 297 66 297 62 z', + }, + accidentalKucukMucennebSharp: { + x_min: 0, + x_max: 348, + y_min: -316, + y_max: 318, + ha: 634, + o: 'm 494 121 b 482 125 491 124 487 125 b 478 124 481 125 480 124 l 269 68 l 269 127 l 412 164 b 425 181 420 167 425 173 l 425 266 b 418 282 425 272 422 279 b 406 285 415 285 410 285 b 402 285 405 285 403 285 l 269 249 l 269 458 l 232 458 l 232 239 l 89 200 b 76 181 81 197 76 190 l 76 98 b 84 84 76 92 79 86 b 95 79 86 81 91 79 b 99 81 96 79 98 81 l 232 115 l 232 58 l 14 -3 b 0 -20 6 -6 0 -12 l 0 -104 b 7 -118 0 -109 3 -115 b 19 -122 10 -121 14 -122 b 23 -122 20 -122 22 -122 l 232 -66 l 232 -124 l 89 -163 b 76 -180 81 -166 76 -171 l 76 -264 b 84 -279 76 -269 79 -276 b 95 -282 86 -282 91 -282 b 99 -282 96 -282 98 -282 l 232 -246 l 232 -455 l 269 -455 l 269 -236 l 412 -199 b 425 -180 420 -196 425 -189 l 425 -95 b 418 -81 425 -89 422 -84 b 406 -76 415 -78 410 -76 b 402 -78 405 -76 403 -78 l 269 -114 l 269 -55 l 487 4 b 501 22 495 7 501 13 l 501 107 b 494 121 501 112 498 118 z', + }, + articAccentAbove: { + x_min: 0, + x_max: 361, + y_min: 0, + y_max: 235, + ha: 235, + o: 'm 26 337 b 20 338 24 337 22 338 b 0 318 9 338 0 330 l 0 285 b 14 266 0 276 7 269 l 323 170 l 14 72 b 0 53 7 69 0 62 l 0 20 b 20 0 0 9 9 0 b 26 1 22 0 24 1 l 505 150 b 520 170 513 153 520 161 b 505 189 520 179 513 186 z', + }, + articAccentBelow: { + x_min: 0, + x_max: 361, + y_min: -235, + y_max: 0, + ha: 235, + o: 'm 26 -1 b 20 0 24 -1 22 0 b 0 -20 9 0 0 -9 l 0 -53 b 14 -72 0 -62 7 -69 l 323 -168 l 14 -266 b 0 -285 7 -269 0 -276 l 0 -318 b 20 -338 0 -330 9 -338 b 26 -337 22 -338 24 -337 l 505 -189 b 520 -168 513 -186 520 -177 b 505 -150 520 -160 513 -153 z', + }, + articTenutoAbove: { + x_min: 0, + x_max: 316, + y_min: 0, + y_max: 46, + ha: 46, + o: 'm 20 66 b 0 46 9 66 0 58 l 0 20 b 20 0 0 9 9 0 l 435 0 b 455 20 446 0 455 9 l 455 46 b 435 66 455 58 446 66 z', + }, + articTenutoBelow: { + x_min: 0, + x_max: 316, + y_min: -46, + y_max: 0, + ha: 46, + o: 'm 20 0 b 0 -20 9 0 0 -9 l 0 -46 b 20 -66 0 -58 9 -66 l 435 -66 b 455 -46 446 -66 455 -58 l 455 -20 b 435 0 455 -9 446 0 z', + }, + articStaccatoAbove: { + x_min: -0.25, + x_max: 78.25, + y_min: -0.25, + y_max: 78, + ha: 78.25, + o: 'm 16 16 b 96 16 39 -6 73 -6 b 96 95 118 39 118 73 b 16 95 73 118 39 118 b 16 16 -6 73 -6 39 z', + }, + articStaccatoBelow: { + x_min: -0.25, + x_max: 78.25, + y_min: -78.25, + y_max: 0, + ha: 78.25, + o: 'm 16 -96 b 96 -96 39 -118 73 -118 b 96 -17 118 -73 118 -39 b 16 -17 73 6 39 6 b 16 -96 -6 -39 -6 -73 z', + }, + articStaccatissimoAbove: { + x_min: 0, + x_max: 127, + y_min: 0, + y_max: 248, + ha: 248, + o: 'm 163 357 b 150 353 154 357 150 353 l 99 300 b 92 295 96 297 95 295 b 85 300 89 295 88 297 l 35 353 b 22 357 35 353 30 357 b 0 338 13 357 0 351 b 73 22 0 323 73 22 b 92 0 75 16 78 0 b 111 22 107 0 109 16 b 183 338 111 22 183 323 b 163 357 183 351 171 357 z', + }, + articStaccatissimoBelow: { + x_min: 0, + x_max: 127, + y_min: -248, + y_max: 0, + ha: 248, + o: 'm 20 -357 b 33 -353 29 -357 33 -353 l 84 -300 b 91 -295 86 -297 88 -295 b 98 -300 94 -295 95 -297 l 148 -353 b 161 -357 148 -353 153 -357 b 183 -338 170 -357 183 -351 b 109 -22 183 -323 109 -22 b 91 0 108 -16 105 0 b 72 -22 76 0 73 -16 b 0 -338 72 -22 0 -323 b 20 -357 0 -351 12 -357 z', + }, + articMarcatoAbove: { + x_min: 1, + x_max: 296, + y_min: 0, + y_max: 253, + ha: 253, + o: 'm 36 10 l 173 239 l 298 10 b 317 0 301 4 310 0 l 408 0 b 426 20 419 0 426 9 b 425 30 426 23 426 27 l 230 356 b 213 364 226 361 222 363 b 196 356 207 364 199 361 l 1 30 z', + }, + articMarcatoBelow: { + x_min: 0, + x_max: 295, + y_min: -253, + y_max: 0, + ha: 253, + o: 'm 390 -10 l 253 -239 l 128 -10 b 109 0 125 -4 117 0 l 19 0 b 0 -20 7 0 0 -9 b 1 -30 0 -23 0 -27 l 196 -356 b 213 -364 200 -361 204 -363 b 230 -356 219 -364 228 -361 l 425 -30 z', + }, + fermataAbove: { + x_min: 0, + x_max: 622, + y_min: 0, + y_max: 368, + ha: 368, + o: 'm 778 374 b 448 530 642 521 523 530 b 120 374 373 530 255 521 b 0 65 49 297 0 143 b 20 19 0 37 6 19 b 161 265 60 19 40 143 b 445 373 268 372 410 373 b 448 373 446 373 446 373 b 451 373 449 373 449 373 b 734 265 485 373 628 372 b 876 19 855 143 835 19 b 896 65 890 19 896 36 b 778 374 896 143 848 298 z m 348 99 b 448 0 348 45 393 0 b 547 99 503 0 547 45 b 448 199 547 154 503 199 b 348 99 393 199 348 154 z', + }, + fermataBelow: { + x_min: 0, + x_max: 622, + y_min: -368, + y_max: 0, + ha: 368, + o: 'm 778 -374 b 896 -65 848 -298 896 -143 b 876 -19 896 -36 890 -19 b 734 -265 835 -19 855 -143 b 451 -373 628 -372 485 -373 b 448 -373 449 -373 449 -373 b 445 -373 446 -373 446 -373 b 161 -265 410 -373 268 -372 b 20 -19 40 -143 60 -19 b 0 -65 6 -19 0 -37 b 120 -374 0 -143 49 -297 b 448 -530 255 -521 373 -530 b 778 -374 523 -530 642 -521 z m 348 -99 b 448 -199 348 -154 393 -199 b 547 -99 503 -199 547 -154 b 448 0 547 -45 503 0 b 348 -99 393 0 348 -45 z', + }, + fermataLongAbove: { + x_min: 0, + x_max: 623, + y_min: 0, + y_max: 368, + ha: 368, + o: 'm 40 0 l 40 399 l 858 399 l 858 0 l 897 0 l 897 510 b 877 530 897 521 888 530 l 20 530 b 0 510 9 530 0 521 l 0 0 z m 350 148 b 449 49 350 94 395 49 b 547 148 504 49 547 94 b 449 248 547 203 504 248 b 350 148 395 248 350 203 z', + }, + fermataLongBelow: { + x_min: 0, + x_max: 623, + y_min: -368, + y_max: 0, + ha: 368, + o: 'm 0 -510 b 20 -530 0 -521 9 -530 l 877 -530 b 897 -510 888 -530 897 -521 l 897 0 l 858 0 l 858 -399 l 40 -399 l 40 0 l 0 0 z m 350 -148 b 449 -248 350 -203 395 -248 b 547 -148 504 -248 547 -203 b 449 -49 547 -94 504 -49 b 350 -148 395 -49 350 -94 z', + }, + fermataVeryLongAbove: { + x_min: 0, + x_max: 842, + y_min: 0, + y_max: 549, + ha: 549, + o: 'm 276 0 l 276 399 l 936 399 l 936 0 l 976 0 l 976 510 b 956 530 976 521 968 530 l 256 530 b 236 510 245 530 236 521 l 236 0 z m 507 148 b 606 49 507 94 552 49 b 706 148 661 49 706 94 b 606 248 706 203 661 248 b 507 148 552 248 507 203 z m 40 0 l 40 661 l 1172 661 l 1172 0 l 1212 0 l 1212 772 b 1192 791 1212 783 1204 791 l 20 791 b 0 772 9 791 0 783 l 0 0 z', + }, + fermataVeryLongBelow: { + x_min: 0, + x_max: 842, + y_min: -549, + y_max: 0, + ha: 549, + o: 'm 236 -510 b 256 -530 236 -521 245 -530 l 956 -530 b 976 -510 968 -530 976 -521 l 976 0 l 936 0 l 936 -399 l 276 -399 l 276 0 l 236 0 z m 507 -148 b 606 -248 507 -203 552 -248 b 706 -148 661 -248 706 -203 b 606 -49 706 -94 661 -49 b 507 -148 552 -49 507 -94 z m 0 -772 b 20 -791 0 -783 9 -791 l 1192 -791 b 1212 -772 1204 -791 1212 -783 l 1212 0 l 1172 0 l 1172 -661 l 40 -661 l 40 0 l 0 0 z', + }, + fermataShortAbove: { + x_min: 0, + x_max: 642, + y_min: 0, + y_max: 454, + ha: 454, + o: 'm 363 148 b 462 49 363 94 408 49 b 562 148 517 49 562 94 b 462 248 562 203 517 248 b 363 148 408 248 363 203 z m 477 645 b 461 654 474 649 467 654 b 445 645 455 654 448 649 l 4 32 b 0 20 3 29 0 23 b 20 0 0 9 9 0 l 82 0 b 98 9 88 0 95 4 l 461 514 l 827 9 b 842 0 829 4 837 0 l 904 0 b 924 20 916 0 924 9 b 920 32 924 23 922 29 z', + }, + fermataShortBelow: { + x_min: 0, + x_max: 642, + y_min: -454, + y_max: 0, + ha: 454, + o: 'm 363 -148 b 462 -248 363 -203 408 -248 b 562 -148 517 -248 562 -203 b 462 -49 562 -94 517 -49 b 363 -148 408 -49 363 -94 z m 920 -32 b 924 -20 922 -29 924 -23 b 904 0 924 -9 916 0 l 842 0 b 827 -9 837 0 829 -4 l 461 -514 l 98 -9 b 82 0 95 -4 88 0 l 20 0 b 0 -20 9 0 0 -9 b 4 -32 0 -23 3 -29 l 445 -645 b 461 -654 448 -649 455 -654 b 477 -645 467 -654 474 -649 z', + }, + breathMarkComma: { + x_min: 0, + x_max: 191, + y_min: 0, + y_max: 321, + ha: 321, + o: 'm 82 0 b 275 285 215 92 275 183 b 115 462 275 396 212 462 b 0 356 46 462 0 413 b 115 246 0 294 53 246 b 181 258 157 246 177 256 b 192 261 184 259 189 261 b 199 259 194 261 196 261 b 203 245 202 258 203 253 b 48 43 203 183 147 112 z', + }, + caesura: { + x_min: 0, + x_max: 380, + y_min: 0, + y_max: 490, + ha: 490, + o: 'm 285 706 b 285 706 285 706 285 706 b 271 696 279 706 274 701 l 1 22 b 0 16 0 20 0 17 b 16 0 0 7 7 0 l 50 0 b 65 10 56 0 62 4 l 334 684 b 336 690 334 685 336 688 b 320 706 336 698 328 706 z m 213 22 b 212 16 213 20 212 17 b 228 0 212 7 219 0 l 262 0 b 276 10 268 0 274 4 l 546 684 b 547 690 547 685 547 688 b 531 706 547 698 540 706 l 497 706 b 482 696 491 706 485 701 z', + }, + caesuraCurved: { + x_min: 0, + x_max: 368, + y_min: 0, + y_max: 491, + ha: 491, + o: 'm 262 707 b 245 693 253 707 246 701 b 1 26 233 603 177 348 b 0 17 0 23 0 20 b 16 0 0 9 6 0 b 30 7 22 0 27 3 b 318 687 259 341 304 602 b 318 690 318 688 318 688 b 301 707 318 698 310 707 z m 474 707 b 458 693 465 707 459 701 b 213 26 446 603 389 348 b 212 19 212 23 212 20 b 229 0 212 9 219 0 b 243 7 235 0 240 3 b 530 687 472 341 516 602 b 530 690 530 688 530 688 b 514 707 530 698 523 707 z', + }, + restMaxima: { + x_min: 0, + x_max: 450, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 158 -360 b 180 -338 170 -360 180 -350 l 180 338 b 158 360 180 350 170 360 l 22 360 b 0 338 9 360 0 350 l 0 -338 b 22 -360 0 -350 9 -360 z m 626 -360 b 648 -338 638 -360 648 -350 l 648 338 b 626 360 648 350 638 360 l 490 360 b 468 338 477 360 468 350 l 468 -338 b 490 -360 468 -350 477 -360 z', + }, + restDoubleWhole: { + x_min: 0, + x_max: 125, + y_min: -11, + y_max: 262, + ha: 273, + o: 'm 158 -16 b 180 6 171 -16 180 -6 l 180 356 b 158 377 180 367 171 377 l 22 377 b 0 356 10 377 0 367 l 0 6 b 22 -16 0 -6 10 -16 z', + }, + restWhole: { + x_min: 0, + x_max: 325, + y_min: -131, + y_max: 5, + ha: 136, + o: 'm 20 7 b 0 -13 9 7 0 -1 l 0 -168 b 20 -189 0 -180 9 -189 l 448 -189 b 468 -168 459 -189 468 -180 l 468 -13 b 448 7 468 -1 459 7 z', + }, + restWholeLegerLine: { + x_min: -139, + x_max: 464, + y_min: -122, + y_max: 14, + ha: 136, + o: 'm 449 20 l 19 20 l -200 20 l -200 -20 l 0 -20 l 0 -156 b 19 -176 0 -167 7 -176 l 449 -176 b 468 -156 461 -176 468 -167 l 468 -20 l 668 -20 l 668 20 z', + }, + restHalf: { + x_min: 0, + x_max: 325, + y_min: -4, + y_max: 132, + ha: 136, + o: 'm 0 14 b 20 -6 0 -6 0 -6 l 448 -6 b 468 14 468 -6 468 -6 l 468 170 b 448 190 468 190 468 190 l 20 190 b 0 170 0 190 0 190 z', + }, + restHalfLegerLine: { + x_min: -139, + x_max: 464, + y_min: -14, + y_max: 122, + ha: 136, + o: 'm 668 20 l 468 20 l 468 156 b 449 176 468 167 461 176 l 19 176 b 0 156 7 176 0 167 l 0 20 l -200 20 l -200 -20 l 19 -20 l 449 -20 l 668 -20 z', + }, + restQuarter: { + x_min: 0, + x_max: 235, + y_min: -331, + y_max: 401, + ha: 732, + o: 'm 331 -239 b 323 -229 330 -238 327 -235 l 157 -24 b 154 -16 156 -23 154 -19 b 157 -3 154 -12 156 -6 l 304 219 b 307 229 305 222 307 226 l 307 242 b 302 253 307 246 305 251 l 69 569 b 55 577 69 569 63 577 b 43 573 50 577 48 576 b 36 559 37 569 36 563 b 40 543 36 550 40 543 l 150 393 b 154 376 153 389 154 383 b 150 359 154 370 153 363 l 4 137 b 1 125 3 134 1 128 l 1 112 b 6 101 1 108 3 104 l 167 -99 b 131 -95 161 -98 148 -95 b 49 -124 107 -95 75 -101 b 0 -229 17 -153 0 -193 b 16 -285 0 -249 4 -269 b 154 -468 46 -331 154 -468 b 171 -477 154 -468 161 -477 b 180 -474 174 -477 177 -477 b 190 -456 187 -468 190 -462 b 186 -444 190 -451 187 -446 b 135 -353 181 -436 135 -353 b 125 -307 135 -353 125 -333 b 150 -246 125 -288 131 -265 b 206 -223 167 -229 187 -223 b 252 -236 225 -223 240 -229 l 308 -272 b 320 -275 308 -272 314 -275 b 334 -268 325 -275 330 -274 b 338 -255 337 -262 338 -259 b 334 -243 338 -251 337 -248 z', + }, + rest8th: { + x_min: 0, + x_max: 276, + y_min: -255, + y_max: 204, + ha: 459, + o: 'm 384 292 b 379 294 383 292 380 294 b 360 282 370 294 363 289 b 245 141 354 274 310 189 b 180 112 226 127 203 117 b 206 181 196 131 206 154 b 104 284 206 238 160 284 b 0 181 46 284 0 238 b 65 85 0 137 27 101 b 144 68 86 75 115 68 b 269 109 186 68 230 81 b 320 157 287 122 304 140 l 156 -356 l 194 -367 l 396 268 b 397 275 397 269 397 272 b 384 292 397 282 393 288 z', + }, + rest16th: { + x_min: 1, + x_max: 344, + y_min: -507, + y_max: 204, + ha: 711, + o: 'm 494 268 b 495 275 495 271 495 272 b 482 292 495 282 491 289 b 475 294 480 294 477 294 b 456 282 467 294 461 289 b 285 115 422 213 364 135 b 310 184 302 135 310 158 b 203 284 310 240 259 284 b 104 177 145 281 104 233 b 171 84 105 134 134 98 b 252 69 197 72 225 69 b 423 164 324 72 380 108 l 423 164 l 359 -65 b 183 -245 338 -132 256 -226 b 207 -176 199 -225 207 -200 b 102 -76 207 -118 158 -76 b 1 -183 45 -76 1 -125 b 69 -275 1 -226 32 -262 b 150 -289 96 -287 121 -289 b 321 -194 222 -287 278 -251 l 174 -720 l 213 -730 z', + }, + rest32nd: { + x_min: 0, + x_max: 391, + y_min: -507, + y_max: 460, + ha: 967, + o: 'm 217 71 b 408 171 348 71 402 161 l 354 -46 b 184 -240 323 -121 268 -217 b 204 -171 200 -220 204 -197 b 102 -76 204 -114 158 -76 b 0 -177 46 -76 0 -120 b 140 -288 0 -252 63 -288 b 320 -186 216 -288 276 -246 l 189 -721 l 228 -730 l 562 638 b 563 644 563 639 563 642 b 549 661 563 652 557 658 b 543 662 547 662 544 662 b 524 649 534 662 528 657 b 361 487 497 589 431 504 b 383 556 379 508 383 530 b 282 652 383 611 338 652 b 179 549 226 652 179 609 b 249 451 179 505 210 464 b 311 439 268 444 288 441 b 330 441 317 439 323 439 b 498 541 400 445 458 485 l 442 310 b 271 117 413 238 351 137 b 292 186 288 138 292 160 b 189 282 292 243 245 282 b 88 180 132 282 88 238 b 217 71 88 112 153 71 z', + }, + rest64th: { + x_min: 0, + x_max: 423, + y_min: -758, + y_max: 464, + ha: 1222, + o: 'm 207 -1083 l 246 -1092 b 608 644 282 -919 605 634 b 609 649 608 647 609 648 b 595 667 609 658 603 665 b 589 668 593 668 592 668 b 569 654 577 668 575 664 b 474 521 563 644 530 573 b 412 487 456 505 435 494 b 432 546 425 503 432 526 b 328 649 432 606 382 649 b 226 546 275 649 226 608 b 360 438 226 465 300 438 b 501 492 419 438 474 465 b 546 546 527 518 533 526 l 547 547 l 500 323 b 399 161 491 300 452 209 b 337 125 382 144 360 132 b 357 184 350 143 357 134 b 253 288 357 235 317 288 b 151 187 190 288 151 236 b 285 76 151 138 183 76 b 471 184 412 76 465 173 l 423 -45 b 324 -204 413 -69 374 -158 b 262 -240 305 -222 284 -233 b 281 -180 274 -223 281 -212 b 177 -78 281 -147 258 -78 b 75 -180 98 -78 75 -153 b 209 -289 75 -207 88 -289 b 395 -181 330 -289 389 -193 l 350 -397 b 248 -564 337 -449 285 -530 b 186 -599 229 -580 207 -592 b 204 -540 197 -583 204 -563 b 102 -438 204 -501 174 -438 b 0 -540 29 -438 0 -501 b 132 -648 0 -579 24 -648 b 320 -540 266 -648 315 -552 z', + }, + rest128th: { + x_min: -1, + x_max: 475, + y_min: -759, + y_max: 717, + ha: 1476, + o: 'm 677 1028 b 664 1032 672 1031 667 1032 b 644 1018 654 1032 649 1028 b 549 886 638 1008 605 937 b 487 851 531 870 510 858 b 507 910 500 868 507 890 b 403 1014 507 971 456 1014 b 301 910 350 1014 301 972 b 435 802 301 829 374 802 b 576 857 494 802 549 829 b 621 910 602 883 608 890 l 622 912 l 575 687 b 474 526 566 664 527 573 b 412 490 456 508 435 497 b 432 549 425 507 432 498 b 328 652 432 599 392 652 b 226 552 265 652 226 600 b 360 441 226 503 258 441 b 546 549 487 441 540 537 l 498 320 b 399 160 488 295 449 207 b 337 125 380 143 359 131 b 356 184 348 141 356 153 b 252 287 356 217 333 287 b 150 184 173 287 150 212 b 284 76 150 157 163 76 b 469 183 405 76 464 171 l 425 -33 b 323 -200 412 -85 360 -166 b 261 -235 304 -216 282 -228 b 279 -176 272 -219 279 -199 b 177 -72 279 -137 249 -72 b 75 -176 104 -72 75 -137 b 207 -284 75 -215 99 -284 b 395 -176 341 -284 390 -187 l 347 -409 b 248 -566 330 -461 282 -533 b 186 -600 229 -582 207 -593 b 204 -541 197 -583 204 -564 b 102 -438 204 -501 174 -438 b -1 -541 29 -438 -1 -503 b 132 -649 -1 -580 24 -649 b 318 -546 256 -649 307 -567 l 206 -1084 l 245 -1093 b 683 1008 281 -920 680 996 b 684 1015 683 1009 684 1014 b 677 1028 684 1020 683 1024 z', + }, + dynamicPiano: { + x_min: -95, + x_max: 317, + y_min: -163, + y_max: 263, + ha: 426, + o: 'm 186 -235 l 186 -206 l 78 -206 l 161 26 l 166 16 b 229 -29 166 16 180 -16 b 256 -32 238 -32 248 -32 b 445 166 336 -32 415 49 b 456 246 454 197 456 223 b 374 373 456 343 396 367 b 356 376 369 374 361 376 b 242 314 311 376 266 338 l 238 310 l 235 315 b 154 377 235 315 204 370 b 138 379 148 377 144 379 b 0 226 91 379 42 346 l 26 213 b 63 301 32 232 46 278 b 102 328 72 314 89 325 b 108 328 104 328 107 328 b 120 325 112 328 117 327 b 127 304 125 321 127 314 b 94 192 127 269 101 206 l -49 -206 l -137 -206 l -137 -235 z m 226 17 b 215 19 223 17 217 17 b 187 81 193 27 187 53 b 204 180 187 125 203 177 b 297 317 217 235 259 295 b 324 325 307 323 315 325 b 336 324 328 325 333 325 b 350 311 341 323 347 317 b 356 278 354 302 356 291 b 333 161 356 239 341 187 b 242 20 314 105 278 37 b 226 17 238 17 230 17 z', + }, + dynamicMezzo: { + x_min: -7, + x_max: 374, + y_min: -2, + y_max: 251, + ha: 253, + o: 'm 488 63 b 467 48 481 50 474 48 b 459 49 464 48 462 48 b 449 65 452 52 449 58 b 461 112 449 76 455 94 b 474 157 464 121 471 150 b 492 281 482 183 492 242 b 491 301 492 288 492 295 b 436 359 484 340 467 359 b 340 307 399 359 359 331 l 337 301 l 334 308 b 272 359 334 308 311 359 b 177 310 232 359 202 343 l 173 304 l 171 311 b 117 360 171 311 153 353 b 96 361 109 361 102 361 b 29 328 60 361 39 340 b -10 252 20 318 0 284 l 12 240 b 68 318 12 240 36 318 b 75 317 71 318 72 318 b 86 295 84 314 86 307 b 59 194 86 275 75 240 b 1 20 59 193 6 33 b 0 13 1 17 0 16 b 3 4 0 10 1 7 b 14 -1 6 1 9 -1 l 36 -1 b 91 -1 58 -1 86 -1 b 107 22 94 -1 101 -1 b 127 99 114 53 121 79 b 235 310 132 121 186 310 b 243 305 238 310 242 308 b 248 289 246 302 248 297 b 216 160 248 265 233 219 b 173 22 194 89 173 22 b 173 16 173 20 173 19 b 176 3 173 12 173 6 b 187 -1 179 0 183 -1 l 266 -1 b 282 16 272 -1 279 0 b 284 26 282 17 284 22 b 392 302 312 228 359 288 b 396 304 393 302 395 304 l 397 304 b 400 302 399 304 399 302 b 408 289 403 301 408 297 b 369 140 408 275 399 217 b 356 75 360 117 356 95 b 370 23 356 55 360 37 b 428 -3 382 6 408 -3 b 536 99 492 -3 517 49 b 539 108 537 102 537 105 l 514 120 b 488 63 514 120 498 81 z', + }, + dynamicForte: { + x_min: -137, + x_max: 334, + y_min: -193, + y_max: 421, + ha: 614, + o: 'm -122 -86 b -197 -161 -161 -86 -197 -122 b -81 -278 -197 -236 -147 -278 b 35 -228 -35 -278 -1 -264 b 202 173 98 -164 167 50 b 238 297 215 219 228 264 l 238 300 l 341 300 b 356 314 350 300 356 305 l 356 346 b 341 360 356 354 350 360 l 256 360 l 256 364 b 330 554 297 511 308 537 b 359 566 341 563 351 566 b 366 564 361 566 364 564 b 380 553 373 563 377 559 b 382 546 382 550 382 549 b 373 528 382 539 379 531 b 351 478 359 517 351 498 b 354 458 351 471 353 465 b 384 426 359 445 370 432 b 410 420 390 423 400 420 b 445 431 420 420 432 423 b 478 472 459 438 474 456 b 481 497 481 480 481 488 b 467 550 481 514 477 533 b 376 605 455 572 422 598 b 351 606 369 606 360 606 b 225 553 317 606 272 595 b 122 363 187 520 154 456 l 122 360 l 13 360 b -1 346 4 360 -1 354 l -1 314 b 13 300 -1 305 4 300 l 102 300 l 102 294 b 66 140 88 236 76 187 b 24 -35 55 86 42 32 l 20 -52 b -53 -235 -10 -170 -19 -212 b -78 -242 -60 -239 -69 -242 b -98 -235 -85 -242 -92 -239 b -105 -222 -102 -232 -105 -228 b -105 -219 -105 -220 -105 -220 b -94 -204 -104 -213 -101 -207 b -58 -144 -66 -193 -58 -167 b -122 -86 -58 -124 -71 -86 z', + }, + dynamicRinforzando: { + x_min: -12, + x_max: 230, + y_min: 0, + y_max: 254, + ha: 254, + o: 'm 272 364 b 200 341 239 364 212 348 b 168 310 187 333 177 321 l 164 304 b 109 363 164 304 151 353 b 88 366 102 364 95 366 b 22 331 52 366 32 343 b -17 255 13 321 -7 287 l 4 243 b 60 321 4 243 29 321 b 68 320 63 321 65 321 b 78 297 75 317 78 308 b 49 180 78 272 65 230 l 0 23 b 0 17 0 22 0 20 b 3 4 0 13 0 7 b 14 0 6 1 10 0 l 94 0 b 109 17 99 0 107 1 b 111 27 109 19 111 23 b 209 302 140 230 186 279 b 225 311 215 308 220 311 b 229 310 226 311 228 311 b 233 304 233 307 233 305 b 233 301 233 302 233 301 b 216 268 220 291 216 279 b 225 243 216 259 219 249 b 262 229 235 232 249 229 b 304 242 279 229 295 235 b 331 308 320 255 331 275 b 272 364 331 341 304 364 z', + }, + dynamicSforzando: { + x_min: 0, + x_max: 208, + y_min: -5, + y_max: 263, + ha: 268, + o: 'm 242 328 b 217 289 222 317 217 300 b 258 249 217 274 230 249 b 298 284 285 249 295 269 b 300 295 300 287 300 291 b 189 379 300 328 272 379 b 49 259 92 379 49 315 b 99 173 49 229 59 196 b 164 137 117 163 140 151 b 194 88 189 122 194 102 b 124 24 194 73 177 24 b 72 46 82 24 72 39 b 73 49 72 48 72 49 b 96 96 78 52 96 62 b 50 150 96 134 72 150 b 0 91 29 150 0 134 b 124 -7 0 26 49 -7 b 282 111 199 -7 282 24 b 171 239 282 197 207 219 b 128 292 135 259 128 268 b 193 347 128 317 156 347 b 242 328 230 347 242 328 z', + }, + dynamicZ: { + x_min: -42, + x_max: 239, + y_min: -1, + y_max: 258, + ha: 259, + o: 'm 229 292 b 235 288 232 292 233 291 b 236 284 236 285 236 285 b 233 278 236 281 235 279 b -42 55 232 276 -4 85 b -60 24 -56 43 -60 33 b -50 4 -60 12 -50 4 b -35 0 -45 1 -40 0 b 9 29 -14 0 1 19 b 50 69 17 43 26 69 b 89 35 75 69 81 50 b 170 -1 104 10 137 -1 b 243 22 197 -1 223 6 b 304 147 288 56 304 118 b 264 196 304 176 294 196 b 226 156 239 196 226 174 b 251 117 226 128 249 122 b 251 108 251 114 251 111 b 243 79 251 98 249 88 b 212 56 236 68 223 56 b 202 59 209 56 204 56 b 163 92 194 63 186 75 b 108 122 140 109 114 120 b 105 125 105 124 105 124 b 107 128 105 127 107 128 b 312 304 107 128 302 294 b 341 340 324 315 336 327 b 344 347 343 341 344 346 l 344 356 b 333 369 343 367 336 369 l 331 369 l 262 363 b 217 361 245 361 230 361 b 156 366 193 361 174 363 b 114 372 147 367 125 372 b 107 370 111 372 108 370 b 86 344 98 367 89 360 b 37 222 72 265 42 232 b 37 219 37 220 37 220 b 50 207 37 213 43 207 l 66 207 b 81 225 75 207 76 215 b 108 291 85 235 105 285 b 118 297 111 297 112 297 b 167 289 125 295 144 291 b 181 289 171 289 177 289 b 229 292 202 289 222 291 z', + }, + ornamentTrill: { + x_min: -12, + x_max: 383, + y_min: 0, + y_max: 383, + ha: 383, + o: 'm 464 396 b 376 359 408 396 376 359 l 364 370 b 346 377 357 377 346 377 l 197 377 l 246 528 b 246 531 246 530 246 531 b 226 552 246 541 236 552 l 213 552 b 199 544 209 552 202 547 b 124 482 196 541 130 487 b 117 471 118 478 117 471 b 84 377 117 471 102 431 l 3 377 b -17 360 -14 377 -17 360 l -17 341 b 3 324 -17 325 3 324 l 66 324 b 0 85 35 229 0 117 b 92 0 0 16 48 0 b 186 35 137 0 186 35 b 194 13 186 35 190 24 b 212 0 199 1 212 0 l 276 0 b 298 16 295 0 298 16 l 298 43 b 321 147 298 75 321 147 l 382 284 b 412 325 382 284 396 311 b 446 341 425 336 438 341 b 452 340 448 341 451 341 b 428 288 432 327 428 305 b 485 233 428 271 446 233 b 552 308 534 233 552 264 b 464 396 552 353 520 396 z m 222 143 b 147 78 210 104 171 78 b 137 79 143 78 140 78 b 121 115 125 85 121 99 b 137 190 121 148 137 190 l 180 324 l 275 324 b 279 320 279 324 279 320 b 222 143 279 320 235 187 z', + }, + ornamentTurn: { + x_min: 0, + x_max: 456, + y_min: 0, + y_max: 232, + ha: 232, + o: 'm 527 334 b 442 269 488 334 442 312 b 501 204 442 228 468 204 b 570 226 533 204 540 226 b 613 164 598 226 613 204 l 613 163 b 550 98 613 127 586 98 b 448 143 508 98 485 109 l 328 255 l 298 284 b 174 334 262 317 223 334 b 0 170 92 334 0 278 b 131 0 0 68 58 0 b 215 65 170 0 215 22 b 156 130 215 107 189 130 b 86 108 124 130 117 108 b 43 170 59 108 43 130 l 43 171 b 108 236 43 207 72 236 b 209 192 150 236 171 225 l 328 79 l 360 50 b 482 0 396 17 433 0 b 657 164 564 0 657 56 b 527 334 657 266 600 334 z', + }, + ornamentTurnSlash: { + x_min: 0, + x_max: 456, + y_min: -80, + y_max: 313, + ha: 393, + o: 'm 527 334 b 442 269 488 334 442 312 b 501 204 442 228 468 204 b 570 226 533 204 540 226 b 613 164 598 226 613 204 l 613 163 b 550 98 613 127 586 98 b 448 143 508 98 485 109 l 354 230 l 354 431 b 336 451 354 442 347 451 l 323 451 b 302 431 311 451 302 442 l 302 279 l 298 284 b 174 334 262 317 223 334 b 0 170 92 334 0 278 b 131 0 0 68 58 0 b 215 65 170 0 215 22 b 156 130 215 107 189 130 b 86 108 124 130 117 108 b 43 170 59 108 43 130 l 43 171 b 108 236 43 207 72 236 b 209 192 150 236 171 225 l 302 104 l 302 -96 b 323 -115 302 -108 311 -115 l 336 -115 b 354 -96 347 -115 354 -108 l 354 55 l 360 50 b 482 0 396 17 433 0 b 657 164 564 0 657 56 b 527 334 657 266 600 334 z', + }, + ornamentMordent: { + x_min: 0, + x_max: 473, + y_min: -77, + y_max: 316, + ha: 393, + o: 'm 647 302 l 562 166 l 446 347 b 429 357 444 353 435 357 b 413 347 423 357 416 353 l 363 262 l 363 435 b 343 455 363 446 354 455 l 331 455 b 311 435 320 455 311 446 l 311 173 l 310 171 l 203 347 b 186 357 200 353 192 357 b 168 347 180 357 171 353 l 0 69 l 35 48 l 120 189 l 226 10 b 243 0 229 4 238 0 b 261 10 249 0 258 4 l 311 95 l 311 -91 b 331 -111 311 -102 320 -111 l 343 -111 b 363 -91 354 -111 363 -102 l 363 184 l 366 189 l 478 10 b 495 0 481 4 490 0 b 513 10 501 0 510 4 l 681 281 z', + }, + ornamentShortTrill: { + x_min: 0, + x_max: 473, + y_min: 0, + y_max: 248, + ha: 248, + o: 'm 647 302 l 562 166 l 446 347 b 431 357 444 353 436 357 b 413 347 425 357 416 353 l 310 171 l 203 347 b 186 357 200 353 192 357 b 168 347 180 357 173 353 l 0 69 l 35 48 l 120 189 l 226 10 b 243 0 229 4 238 0 b 261 10 249 0 258 4 l 366 189 l 478 9 b 495 0 481 3 490 0 b 513 10 501 0 510 4 l 681 281 z', + }, + ornamentTremblement: { + x_min: 0, + x_max: 654, + y_min: 0, + y_max: 248, + ha: 248, + o: 'm 907 302 l 822 166 l 708 348 b 691 357 704 354 701 357 b 674 347 685 357 677 353 l 648 302 l 563 166 l 449 348 b 432 357 446 354 438 357 b 415 347 426 357 418 353 l 415 346 l 311 171 l 203 348 b 186 357 200 354 192 357 b 168 348 177 357 171 354 l 168 347 l 0 69 l 35 48 l 120 190 l 226 10 b 243 0 229 4 238 0 l 245 0 b 261 10 251 0 258 4 l 367 189 l 480 10 b 497 0 482 4 491 0 b 513 10 503 0 510 4 l 625 192 l 739 10 b 756 0 742 4 750 0 b 772 10 762 0 769 4 l 942 282 z', + }, + ornamentPrecompAppoggTrill: { + x_min: 0, + x_max: 680, + y_min: 0, + y_max: 388, + ha: 388, + o: 'm 860 170 l 746 353 b 729 361 743 359 737 361 b 713 351 723 361 716 357 l 685 307 l 600 170 l 487 353 b 481 359 485 356 484 357 b 469 361 478 360 472 361 b 452 351 464 361 455 357 l 348 176 l 240 353 b 223 361 238 359 229 361 b 206 353 215 361 209 359 l 40 76 l 40 541 b 20 559 39 552 30 559 b 0 541 10 559 1 552 l 0 26 b 19 1 0 16 9 4 b 26 0 20 1 24 0 b 48 13 35 0 43 6 l 72 52 l 157 194 l 265 14 b 282 4 268 9 276 4 b 298 14 288 4 295 9 l 405 193 l 517 14 b 534 4 520 9 528 4 b 550 14 540 4 547 9 l 664 196 l 776 14 b 793 4 779 9 788 4 b 811 14 799 4 808 9 l 979 287 l 945 307 z', + }, + ornamentPrecompSlideTrillDAnglebert: { + x_min: 0, + x_max: 662, + y_min: -158, + y_max: 248, + ha: 406, + o: 'm 834 166 l 720 348 b 704 357 717 354 713 357 b 687 348 697 357 690 353 l 661 302 l 660 302 l 575 166 l 461 348 b 455 354 459 350 456 353 b 444 357 452 356 448 357 b 428 347 438 357 431 353 l 323 171 l 215 347 b 213 350 215 348 215 350 b 213 350 213 350 213 350 l 213 351 l 212 351 l 212 353 l 210 353 l 210 353 l 209 354 b 207 354 209 354 207 354 b 197 357 206 356 200 357 b 197 357 197 357 197 357 b 194 357 196 357 196 357 b 180 347 187 357 183 353 l 180 346 l 69 164 b 0 -50 23 88 0 17 b 49 -219 0 -108 16 -163 b 66 -228 52 -223 59 -228 b 76 -225 69 -228 73 -226 b 86 -207 82 -222 86 -215 b 84 -197 86 -204 85 -200 b 40 -52 55 -150 40 -102 b 104 143 40 10 62 73 l 131 190 l 239 10 b 256 0 242 4 249 0 l 256 0 b 272 10 262 0 269 4 l 379 189 l 491 10 b 508 0 494 4 503 0 b 508 0 508 0 508 0 l 508 0 b 526 10 514 0 521 4 l 638 192 l 750 10 b 768 0 755 4 762 0 l 768 0 b 785 10 773 0 782 4 l 785 10 l 953 282 l 919 302 z', + }, + ornamentPrecompSlideTrillBach: { + x_min: 0, + x_max: 662, + y_min: -158, + y_max: 321, + ha: 479, + o: 'm 834 166 l 720 348 b 704 357 716 354 713 357 b 687 348 698 357 690 354 l 660 304 l 660 302 l 632 259 l 632 442 b 612 462 632 454 624 462 l 599 462 b 579 442 588 462 579 454 l 579 173 l 575 166 l 461 348 b 455 356 459 351 458 354 b 445 359 452 357 448 359 b 428 348 439 359 431 354 l 323 171 l 215 347 b 213 350 215 348 213 350 l 213 351 l 212 353 l 210 353 l 210 354 l 207 354 b 197 357 204 356 200 357 b 180 348 189 357 183 354 l 179 346 l 69 164 b 0 -49 23 88 0 19 b 49 -217 0 -107 17 -163 b 66 -228 52 -223 60 -228 b 76 -225 69 -228 73 -226 b 86 -207 82 -222 86 -213 b 84 -197 86 -204 85 -200 b 42 -50 56 -148 42 -101 b 104 144 42 12 62 75 l 131 190 l 239 10 b 256 0 242 4 251 0 b 274 10 262 0 271 4 l 379 190 l 491 10 b 508 0 494 4 503 0 b 526 10 514 0 523 4 l 579 98 l 579 -84 b 599 -104 579 -95 588 -104 l 612 -104 b 632 -84 624 -104 632 -95 l 632 183 l 638 192 l 750 10 b 768 0 753 4 762 0 b 785 10 773 0 782 4 l 953 282 l 919 302 z', + }, + ornamentPrecompTrillSuffixDandrieu: { + x_min: 0, + x_max: 662, + y_min: 0, + y_max: 406, + ha: 406, + o: 'm 904 575 b 887 585 901 580 893 585 b 877 582 884 585 880 583 b 867 564 871 579 867 570 b 870 554 867 562 868 557 b 912 408 897 505 912 458 b 850 213 912 346 891 282 l 822 167 l 714 348 b 697 357 711 354 703 357 b 680 348 691 357 683 354 l 575 168 l 462 348 b 445 357 459 354 451 357 b 428 348 439 357 431 354 l 315 167 l 203 348 b 186 357 200 354 192 357 b 168 348 180 357 171 354 l 0 76 l 35 55 l 120 192 l 233 10 b 249 0 238 4 240 0 b 266 10 255 0 264 4 l 294 55 l 379 192 l 492 9 b 498 3 494 6 495 4 b 508 0 501 1 505 0 b 526 10 514 0 523 4 l 631 186 l 737 13 b 746 3 739 10 743 4 b 756 0 749 1 753 0 b 773 9 762 0 770 3 l 884 193 b 953 406 930 269 953 338 b 904 575 953 464 936 520 z', + }, + ornamentPrecompDoubleCadenceUpperPrefix: { + x_min: 0, + x_max: 857, + y_min: 0, + y_max: 248, + ha: 248, + o: 'm 383 140 b 413 189 399 166 412 187 b 520 10 423 171 516 16 b 537 0 523 4 530 0 b 554 10 543 0 550 4 b 660 189 557 16 649 171 b 772 10 671 173 766 19 b 791 0 778 1 785 0 b 806 10 796 0 802 4 b 919 192 809 16 907 174 l 1031 10 b 1048 0 1035 4 1043 0 l 1048 0 b 1066 10 1054 1 1063 4 l 1066 10 l 1234 282 l 1200 302 l 1115 166 l 1002 348 b 985 357 998 354 994 357 b 968 348 978 357 971 353 l 855 166 b 742 348 845 183 746 341 b 726 357 737 354 732 357 b 708 348 719 357 711 354 b 603 171 704 341 613 189 b 495 348 593 189 498 343 b 478 357 492 353 487 357 b 461 348 469 357 464 353 b 357 173 459 346 393 235 b 213 79 320 111 284 79 b 66 176 143 79 95 112 b 40 279 43 228 40 275 b 20 300 40 291 30 300 b 0 278 9 300 0 289 b 29 161 0 276 3 219 b 213 39 65 81 130 39 b 383 140 297 39 346 73 z', + }, + ornamentPrecompTrillLowerSuffix: { + x_min: 0, + x_max: 565, + y_min: -171, + y_max: 249, + ha: 420, + o: 'm 347 168 l 235 348 b 217 359 230 354 226 359 b 200 348 209 359 203 353 b 3 30 197 344 6 35 b 0 20 0 26 0 24 b 22 0 0 9 10 0 b 37 9 27 0 35 3 l 151 192 b 265 10 161 174 262 13 b 281 0 268 6 272 0 b 298 10 289 0 295 3 l 403 186 l 511 10 b 528 0 516 4 521 0 b 546 10 537 0 541 4 l 698 265 b 775 22 744 202 775 112 b 700 -215 775 -60 752 -144 b 696 -226 697 -219 696 -222 b 704 -243 696 -232 700 -239 b 717 -246 708 -246 713 -246 b 733 -239 723 -246 729 -243 b 814 20 789 -160 814 -69 b 711 312 814 132 773 242 b 696 320 707 317 700 320 b 680 310 691 320 684 318 b 595 168 671 297 602 181 l 488 348 b 471 359 484 354 478 359 b 454 348 464 359 456 353 b 347 168 449 343 357 186 z', + }, + brassMuteClosed: { + x_min: 0, + x_max: 312, + y_min: 0, + y_max: 312, + ha: 312, + o: 'm 22 256 b 0 225 7 256 0 240 b 22 193 0 209 7 193 l 193 193 l 193 22 b 225 0 193 7 209 0 b 256 22 240 0 256 7 l 256 193 l 428 193 b 449 225 442 193 449 209 b 428 256 449 240 442 256 l 256 256 l 256 428 b 225 449 256 442 240 449 b 193 428 209 449 193 442 l 193 256 z', + }, + brassMuteOpen: { + x_min: 0, + x_max: 280, + y_min: 0, + y_max: 280, + ha: 280, + o: 'm 202 403 b 0 202 91 403 0 312 b 202 0 0 91 91 0 b 403 202 312 0 403 91 b 202 403 403 312 312 403 z m 202 40 b 40 202 112 40 40 112 b 202 363 40 291 112 363 b 363 202 291 363 363 291 b 202 40 363 112 291 40 z', + }, + stringsDownBow: { + x_min: 0, + x_max: 315, + y_min: 0, + y_max: 293, + ha: 293, + o: 'm 40 0 l 40 291 l 413 291 l 413 0 l 454 0 l 454 402 b 433 422 454 413 445 422 l 20 422 b 0 402 9 422 0 402 l 0 0 z', + }, + stringsUpBow: { + x_min: 0, + x_max: 262, + y_min: 0, + y_max: 343, + ha: 343, + o: 'm 374 485 b 357 494 372 490 363 494 l 337 494 b 318 481 330 494 321 488 l 189 118 l 59 481 b 40 494 56 488 48 494 l 20 494 b 0 474 9 494 0 485 b 1 467 0 472 1 468 l 170 13 b 189 0 173 6 181 0 b 207 13 196 0 204 6 l 376 467 b 377 474 376 468 377 472 b 374 485 377 477 376 482 z', + }, + stringsHarmonic: { + x_min: 0, + x_max: 181, + y_min: 0, + y_max: 181, + ha: 181, + o: 'm 131 220 b 220 131 181 220 220 181 b 131 40 220 81 181 40 b 40 131 81 40 40 81 b 131 220 40 181 81 220 z m 131 261 b 0 131 59 261 0 203 b 131 0 0 59 59 0 b 261 131 203 0 261 59 b 131 261 261 203 203 261 z', + }, + pluckedSnapPizzicatoAbove: { + x_min: 0, + x_max: 269, + y_min: 0, + y_max: 389, + ha: 389, + o: 'm 213 540 b 194 560 213 552 204 560 b 174 540 183 560 174 552 l 174 386 b 0 193 76 376 0 294 b 194 0 0 86 86 0 b 387 193 301 0 387 86 b 213 386 387 294 311 376 z m 194 40 b 40 193 109 40 40 109 b 174 346 40 271 98 336 l 174 193 b 194 173 174 183 183 173 b 213 193 204 173 213 183 l 213 346 b 347 193 289 336 347 271 b 194 40 347 109 278 40 z', + }, + pluckedSnapPizzicatoBelow: { + x_min: 0, + x_max: 269, + y_min: 0, + y_max: 389, + ha: 389, + o: 'm 213 174 b 387 367 311 184 387 266 b 193 560 387 474 301 560 b 0 367 86 560 0 474 b 174 174 0 266 76 184 l 174 20 b 194 0 174 9 183 0 b 213 20 204 0 213 9 z m 194 520 b 347 367 278 520 347 452 b 213 215 347 289 289 225 l 213 367 b 194 387 213 377 204 387 b 174 367 183 387 174 377 l 174 215 b 40 367 98 225 40 289 b 194 520 40 452 109 520 z', + }, + keyboardPedalPed: { + x_min: 0, + x_max: 981, + y_min: -10, + y_max: 545, + ha: 555, + o: 'm 1354 12 b 1413 78 1385 12 1413 42 b 1354 145 1413 115 1385 145 b 1293 78 1320 145 1293 115 b 1354 12 1293 42 1320 12 z m 1092 88 b 1080 86 1089 86 1084 86 b 1004 203 1037 86 1004 137 b 1107 376 1004 360 1097 374 b 1149 209 1129 336 1149 287 b 1092 88 1149 117 1130 95 z m 752 393 b 795 344 779 393 795 372 b 770 285 795 325 788 304 b 693 203 737 249 697 207 b 688 264 690 225 688 245 b 752 393 688 347 714 393 z m 245 507 b 220 544 245 533 235 544 b 217 544 219 544 219 544 b 186 510 206 546 192 537 b 143 464 179 478 163 464 b 134 465 140 464 137 464 b 102 516 117 467 102 487 b 141 613 102 541 112 576 b 347 721 212 711 315 721 b 356 721 351 721 354 721 b 275 560 344 701 297 616 b 259 495 274 557 259 528 b 272 452 259 480 264 465 b 373 323 297 416 350 354 b 387 284 382 311 387 298 b 350 222 387 265 376 245 b 230 140 301 180 252 154 b 128 39 215 130 128 92 b 134 12 128 30 130 22 b 173 -14 144 -7 157 -14 b 264 40 204 -14 243 17 b 333 98 281 58 302 98 b 389 39 357 98 373 60 b 478 -10 416 1 435 -10 b 622 96 527 -10 559 43 b 740 -10 626 86 667 -10 b 929 95 827 -10 917 85 b 1086 -12 950 37 1018 -12 b 1120 -7 1097 -12 1109 -10 b 1264 213 1212 17 1264 111 b 1263 248 1264 225 1263 236 b 815 664 1228 544 907 647 b 785 668 805 665 795 668 b 779 668 783 668 782 668 b 757 654 769 668 760 665 b 757 649 757 652 757 651 b 786 618 759 629 783 619 b 818 606 796 613 808 611 b 1071 435 1007 534 1066 445 b 909 181 930 386 909 256 b 910 141 909 164 909 151 b 786 78 899 127 844 78 b 708 151 726 78 710 144 b 799 230 711 154 742 181 b 864 350 845 271 864 312 b 757 456 864 410 815 456 b 599 222 644 456 599 328 b 609 141 599 192 602 164 b 563 104 608 140 595 122 b 540 98 556 99 549 98 b 459 140 513 98 480 118 b 397 184 413 189 399 184 b 475 279 403 189 454 226 b 482 311 480 289 482 300 b 449 410 482 359 452 405 b 361 533 442 419 383 503 b 354 560 356 541 354 550 b 386 651 353 588 372 622 b 429 713 405 693 426 710 b 557 592 521 688 557 628 b 549 569 557 582 554 573 b 523 559 540 562 531 559 b 459 592 495 559 469 583 b 425 613 451 600 438 613 b 409 608 419 613 415 612 b 399 586 402 602 399 595 b 399 583 397 585 399 585 b 409 552 399 573 405 562 b 541 458 441 487 492 458 b 608 480 564 458 588 465 b 648 572 632 497 648 531 b 429 778 648 649 589 749 b 351 785 402 782 376 785 b 0 507 130 785 0 615 b 127 366 0 399 68 366 b 245 507 186 366 245 429 z', + }, + keyboardPedalUp: { + x_min: 0, + x_max: 473, + y_min: 0, + y_max: 473, + ha: 473, + o: 'm 99 99 b 164 69 120 79 143 69 b 199 82 177 69 190 73 b 210 114 206 89 210 102 b 206 137 210 122 209 130 b 200 160 203 145 200 154 b 210 179 200 166 203 171 l 245 215 b 285 213 255 225 272 219 l 287 213 l 288 212 b 318 183 301 206 318 196 l 318 134 b 291 102 318 112 308 112 b 258 58 274 92 258 76 b 340 0 258 26 294 0 b 423 58 386 0 423 26 b 390 102 423 76 408 92 b 361 134 373 112 361 112 l 361 183 b 392 212 361 196 379 206 b 395 213 393 212 393 213 b 436 215 408 219 426 225 l 471 179 b 480 161 478 171 480 167 b 474 137 480 154 477 147 b 471 115 472 130 471 122 b 482 82 471 102 474 91 b 517 69 491 73 504 69 b 582 99 539 69 562 79 b 612 164 602 120 612 143 b 599 199 612 177 608 190 b 567 210 592 206 579 210 b 544 206 559 210 552 209 b 521 200 536 203 528 200 b 501 210 514 200 508 203 l 467 245 b 468 285 456 255 462 272 l 468 287 b 469 288 468 287 469 287 b 498 318 475 301 485 318 l 547 318 b 579 291 569 318 569 308 b 624 258 589 274 605 258 b 681 340 655 258 681 294 b 624 423 681 386 655 423 b 579 390 605 423 589 408 b 547 361 569 373 569 361 l 498 361 b 469 392 485 361 475 379 b 468 395 469 393 468 393 b 467 436 462 408 456 426 l 501 471 b 520 480 508 478 514 480 b 544 474 527 480 534 477 b 566 471 552 472 559 471 b 599 482 579 471 590 474 b 612 516 608 491 612 503 b 582 580 612 536 602 560 b 516 612 562 600 537 612 b 482 599 503 612 491 608 b 471 566 474 590 471 579 b 474 544 471 559 472 552 b 480 520 477 534 480 527 b 471 501 480 514 478 508 l 436 467 b 395 468 426 456 408 462 b 392 469 393 468 393 469 b 361 498 379 475 361 485 l 361 547 b 390 579 361 569 373 569 b 423 624 408 589 423 605 b 340 681 423 655 386 681 b 258 624 294 681 258 655 b 291 579 258 605 274 589 b 318 547 308 569 318 569 l 318 498 b 288 469 318 485 301 475 l 287 468 l 285 468 b 245 467 272 462 255 456 l 210 501 b 200 521 203 508 200 514 b 206 544 200 528 203 536 b 210 567 209 552 210 559 b 199 599 210 579 206 592 b 164 612 190 608 177 612 b 99 582 143 612 120 602 b 69 517 79 562 69 539 b 82 482 69 504 73 491 b 115 471 91 474 102 471 b 137 474 122 471 130 472 b 161 480 147 477 154 480 b 180 471 167 480 173 478 l 215 436 b 213 395 225 426 219 408 b 212 392 213 393 212 393 b 183 361 206 379 196 361 l 134 361 b 102 390 112 361 112 373 b 58 423 92 408 76 423 b 0 340 26 423 0 386 b 58 258 0 294 26 258 b 102 291 76 258 92 274 b 134 318 112 308 112 318 l 183 318 b 212 288 196 318 206 301 b 213 287 212 287 213 288 l 213 285 b 215 245 219 272 225 255 l 179 210 b 160 200 171 203 166 200 b 137 206 154 200 145 203 b 114 210 130 209 122 210 b 82 199 102 210 89 206 b 69 164 73 190 69 177 b 99 99 69 143 79 120 z m 276 276 b 249 340 262 291 249 320 b 340 432 249 390 289 432 b 432 340 390 432 432 390 b 405 276 432 320 419 291 b 340 249 390 262 360 249 b 276 276 320 249 291 262 z', + }, + wiggleArpeggiatoUp: { + x_min: -22, + x_max: 242, + y_min: 0, + y_max: 164, + ha: 164, + o: 'm 343 122 b 323 143 343 122 334 132 b 308 148 318 147 312 148 b 298 144 304 148 301 147 b 282 128 295 141 291 137 b 274 124 279 125 276 124 b 265 128 268 124 265 128 b 158 220 265 128 173 207 b 112 236 143 232 127 236 b 43 206 82 236 55 219 l -26 137 b -32 125 -30 132 -32 130 b -26 112 -32 118 -26 112 b -6 92 -26 112 -17 102 b 7 86 -1 88 3 86 b 17 91 12 86 14 88 b 33 107 20 94 24 98 b 42 111 36 109 39 111 b 52 107 48 111 52 107 b 158 16 52 107 144 29 b 204 0 174 4 190 0 b 274 30 235 0 262 17 l 343 99 b 348 111 347 104 348 108 b 343 122 348 118 343 122 z', + }, + repeat1Bar: { + x_min: 0, + x_max: 481, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 693 -181 b 602 -91 693 -131 651 -91 b 511 -181 552 -91 511 -131 b 602 -272 511 -232 552 -272 b 693 -181 651 -272 693 -232 z', + }, + repeat2Bars: { + x_min: 0, + x_max: 735, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 1058 -181 b 968 -91 1058 -131 1017 -91 b 877 -181 917 -91 877 -131 b 968 -272 877 -232 917 -272 b 1058 -181 1017 -272 1058 -232 z m 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 1058 360 l 877 360 l 366 -360 l 547 -360 z', + }, + repeat4Bars: { + x_min: 0, + x_max: 1243, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 1058 360 l 877 360 l 366 -360 l 547 -360 z m 1424 360 l 1243 360 l 732 -360 l 913 -360 z m 1790 360 l 1608 360 l 1097 -360 l 1279 -360 z m 1790 -181 b 1699 -91 1790 -131 1748 -91 b 1608 -181 1649 -91 1608 -131 b 1699 -272 1608 -232 1649 -272 b 1790 -181 1748 -272 1790 -232 z', + }, + repeatBarSlash: { + x_min: 0, + x_max: 481, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 693 360 l 511 360 l 0 -360 l 181 -360 z', + }, + csymDiminished: { + x_min: 0, + x_max: 501, + y_min: 0, + y_max: 501, + ha: 501, + o: 'm 361 721 b 0 361 161 721 0 560 b 361 0 0 161 161 0 b 721 361 560 0 721 161 b 361 721 721 560 560 721 z m 557 164 b 361 82 505 111 435 82 b 164 164 287 82 216 111 b 82 361 111 216 82 287 b 164 557 82 436 111 505 b 361 639 216 611 287 639 b 557 557 436 639 505 611 b 639 361 611 505 639 436 b 557 164 639 287 609 216 z', + }, + csymHalfDiminished: { + x_min: -1, + x_max: 502, + y_min: -1, + y_max: 502, + ha: 503, + o: 'm 723 684 l 684 723 l 596 634 b 361 721 533 688 451 721 b 0 361 161 721 0 560 b 88 125 0 271 33 189 l -1 36 l 36 -1 l 125 88 b 361 0 189 33 271 0 b 721 361 560 0 721 161 b 634 596 721 451 688 533 z m 82 361 b 164 557 82 436 111 505 b 361 639 216 611 287 639 b 537 576 426 639 488 616 l 145 184 b 82 361 105 233 82 295 z m 639 361 b 557 164 639 287 609 216 b 361 82 505 111 435 82 b 184 145 295 82 233 105 l 576 537 b 639 361 616 488 639 426 z', + }, + csymAugmented: { + x_min: 1, + x_max: 321, + y_min: 90, + y_max: 410, + ha: 320, + o: 'm 462 400 l 272 400 l 272 590 l 192 590 l 192 400 l 1 400 l 1 320 l 192 320 l 192 130 l 272 130 l 272 320 l 462 320 z', + }, + csymMajorSeventh: { + x_min: 0, + x_max: 500, + y_min: 10, + y_max: 490, + ha: 480, + o: 'm 360 528 l 585 96 l 135 96 z m 360 706 l 0 14 l 720 14 z', + }, + accidentalNarrowReversedFlat: { + x_min: 0, + x_max: 160, + y_min: -176, + y_max: 452, + ha: 628, + o: 'm 0 84 b 101 -153 0 -26 65 -107 b 196 -249 153 -217 196 -249 b 206 -253 199 -251 202 -253 b 225 -235 216 -253 225 -245 l 230 632 b 212 651 230 642 222 651 l 199 651 b 180 632 189 651 180 642 l 184 204 b 125 217 184 204 171 217 b 0 84 53 217 0 173 z m 145 154 b 184 107 181 154 184 120 l 187 -179 b 114 -72 167 -158 132 -112 b 82 58 86 -13 82 36 b 145 154 82 79 82 154 z', + }, + accidentalNarrowReversedFlatAndFlat: { + x_min: 0, + x_max: 416, + y_min: -176, + y_max: 452, + ha: 628, + o: 'm 462 217 b 330 174 374 217 338 181 l 334 632 b 315 651 334 642 325 651 l 302 651 b 284 632 292 651 284 642 l 289 -235 b 308 -253 289 -245 298 -253 b 320 -249 312 -253 317 -251 b 492 -138 320 -249 433 -194 b 599 84 534 -98 599 -26 b 462 217 599 173 534 217 z m 501 58 b 459 -72 501 36 498 -19 b 327 -179 431 -111 359 -164 l 330 85 l 330 91 b 422 154 330 125 359 154 b 501 58 503 154 501 79 z m 0 84 b 101 -153 0 -26 65 -107 b 196 -249 153 -217 196 -249 b 206 -253 199 -251 202 -253 b 225 -235 216 -253 225 -245 l 230 632 b 212 651 230 642 222 651 l 199 651 b 180 632 189 651 180 642 l 184 204 b 125 217 184 204 171 217 b 0 84 53 217 0 173 z m 145 154 b 184 107 181 154 184 120 l 187 -179 b 114 -72 167 -158 132 -112 b 82 58 86 -13 82 36 b 145 154 82 79 82 154 z', + }, + }, + fontFamily: 'Leland', + resolution: 1000, + generatedOn: '2022-06-26T17:49:33.853Z', +}; + + +/***/ }), + +/***/ "./src/fonts/leland_metrics.ts": +/*!*************************************!*\ + !*** ./src/fonts/leland_metrics.ts ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "LelandMetrics": () => (/* binding */ LelandMetrics) +/* harmony export */ }); +const LelandMetrics = { + name: 'Leland', + smufl: true, + stave: { + padding: 12, + endPaddingMax: 10, + endPaddingMin: 5, + unalignedNotePadding: 10, + }, + accidental: { + noteheadAccidentalPadding: 1, + leftPadding: 2, + accidentalSpacing: 3, + }, + clef: { + default: { + point: 32, + width: 26, + }, + small: { + point: 26, + width: 20, + }, + annotations: { + '8va': { + smuflCode: 'timeSig8', + default: { + point: 18, + treble: { + line: -1.4, + shiftX: 12, + }, + }, + small: { + point: 16, + treble: { + line: -0.2, + shiftX: 8, + }, + }, + }, + '8vb': { + smuflCode: 'timeSig8', + default: { + point: 18, + treble: { + line: 6, + shiftX: 10, + }, + bass: { + line: 3.5, + shiftX: 1, + }, + }, + small: { + point: 16, + treble: { + line: 5.3, + shiftX: 6, + }, + bass: { + line: 3.1, + shiftX: 0.5, + }, + }, + }, + }, + // These may no longer be necessary + lineCount: { + '8': { point: 55, shiftY: 14 }, + '7': { point: 47, shiftY: 8 }, + '6': { point: 32, shiftY: 1 }, + '5': { point: 30, shiftY: -6 }, + '4': { point: 23, shiftY: -12 }, + }, + }, + parenthesis: { + default: { + point: 39, + width: 7, + }, + gracenote: { + point: (39 * 3) / 5, + width: 3, + }, + }, + pedalMarking: { + up: { + point: 40, + }, + down: { + point: 34, + }, + }, + // These are for numeric digits, such as in time signatures + digits: { + // used by timesig + shiftLine: -1, + point: 34, + // used by tuplets + tupletPoint: 22, + shiftY: -6, + }, + articulation: { + articStaccatissimoAbove: { + padding: 2, + }, + articStaccatissimoBelow: { + padding: 2, + }, + }, + tremolo: { + default: { + point: 25, + spacing: 5, + offsetYStemUp: -5, + offsetYStemDown: 5, + offsetXStemUp: 11, + offsetXStemDown: 1, + }, + grace: { + point: 18, + spacing: 4, + offsetYStemUp: -5, + offsetYStemDown: 5, + offsetXStemUp: 7, + offsetXStemDown: 1, + }, + }, + staveRepetition: { + symbolText: { + offsetX: 12, + offsetY: 25, + spacing: 5, + }, + coda: { + offsetY: 25, + }, + segno: { + offsetY: 10, + }, + }, + // noteHead: { + // }, + stem: { + heightAdjustmentForFlag: -3, + // These are stem (Y) offsets to the note heads. To shift the + // noteheads (x-position) themselves, see glyphs.notehead.custom. + noteHead: { + noteheadTriangleUpHalf: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpBlack: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpWhole: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadXHalf: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXBlack: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXWhole: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadHalf: { + offsetYBaseStemUp: -2.55, + offsetYBaseStemDown: 2.65, + }, + noteheadBlack: { + offsetYBaseStemUp: -2, + offsetYBaseStemDown: 2, + }, + noteheadSquareWhite: { + offsetYBaseStemDown: -5, + offsetYBaseStemUp: 5, + }, + }, + }, + // Values under here are used by the Glyph class to reposition and rescale + // glyphs based on their category. This should be the first stop for + // custom font glyph repositioning. + // + // The glyph loader first looks up a specific set of settings based on the + // glyph code, and if not found, uses the defaults from the category. See + // glyphs.textNote for an example of this. + // + // Details in Glyph.lookupFontMetrics. + glyphs: { + coda: { + point: 20, + shiftX: -7, + shiftY: 8, + }, + segno: { + shiftX: -7, + }, + flag: { + shiftX: -0.75, + staveTempo: { + shiftX: -1, + }, + }, + clef: { + gClef: { + default: { scale: 1.1, shiftY: 1 }, + small: { shiftY: 1.5 }, + }, + fClef: { + default: { shiftY: -0.5 }, + }, + }, + ornament: { + ornamentTurn: { + scale: 1.2, + }, + ornamentTurnSlash: { + scale: 1.2, + }, + }, + stringNumber: { + verticalPadding: 8, + stemPadding: 2, + leftPadding: 5, + rightPadding: 6, + }, + stroke: { + arrowheadBlackDown: { + straight: { + shiftX: -4.5, + }, + wiggly: { + shiftX: -1, + shiftY: 1, + }, + }, + arrowheadBlackUp: { + straight: { + shiftX: -0.85, + }, + wiggly: { + shiftX: -1, + shiftY: 1, + }, + }, + }, + textNote: { + point: 34, + breathMarkTick: { + point: 36, + shiftY: 9, + }, + breathMarkComma: { + point: 36, + }, + segno: { + point: 30, + shiftX: -7, + shiftY: 8, + }, + coda: { + point: 20, + shiftX: -7, + shiftY: 8, + }, + ornamentTrill: { + shiftX: -8, + shiftY: 8, + }, + ornamentTurn: { + point: 42, + }, + ornamentTurnSlash: { + point: 42, + }, + ornamentMordent: { + shiftX: -8, + }, + ornamentShortTrill: { + shiftX: -8, + }, + }, + noteHead: { + minPadding: 2, + standard: { + restQuarterStemUp: { + point: 35, + }, + restQuarterStemDown: { + point: 35, + }, + }, + custom: { + noteheadCircleXStemUp: { + shiftX: 1.5, + }, + noteheadCircleXStemDown: { + shiftX: 0.25, + }, + noteheadDiamondHalfStemUp: { + shiftX: 1.5, + }, + noteheadDiamondBlackStemUp: { + shiftX: 1.5, + }, + noteheadDiamondWholeStemUp: { + shiftX: 1, + }, + noteheadXHalfStemUp: { + shiftX: -2, + }, + noteheadXHalfStemDown: { + shiftX: 1, + }, + noteheadXWholeStemUp: { + shiftX: -4, + }, + noteheadXWholeStemDown: { + shiftX: 1, + }, + noteheadSquareWhiteStemDown: { + shiftX: 0.25, + }, + noteheadSquareWhiteStemUp: { + shiftX: -0.75, + }, + noteheadSquareBlackStemUp: { + shiftX: -0.75, + }, + noteheadTriangleUpWholeStemUp: { + shiftX: -0.75, + }, + }, + }, + chordSymbol: { + global: { + superscriptOffset: -400, + subscriptOffset: 300, + kerningOffset: -250, + lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'], + upperKerningText: ['A', 'L'], + spacing: 100, + superSubRatio: 0.66, + }, + csymDiminished: { + scale: 0.8, + leftSideBearing: -32, + advanceWidth: 506, + yOffset: 0, + }, + csymHalfDiminished: { + scale: 0.8, + leftSideBearing: -32, + advanceWidth: 506, + yOffset: 0, + }, + csymAugmented: { + scale: 1, + leftSideBearing: 0, + advanceWidth: 530, + yOffset: 0, + }, + csymParensLeftTall: { + scale: 0.8, + leftSideBearing: -20, + advanceWidth: 184, + yOffset: 250, + }, + csymParensRightTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 189, + yOffset: 250, + }, + csymBracketLeftTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 328, + yOffset: 0, + }, + csymBracketRightTall: { + scale: 0.8, + leftSideBearing: 1, + advanceWidth: 600, + yOffset: 0, + }, + csymParensLeftVeryTall: { + scale: 0.9, + leftSideBearing: 50, + advanceWidth: 121, + yOffset: 350, + }, + csymParensRightVeryTall: { + scale: 0.9, + leftSideBearing: 0, + advanceWidth: 111, + yOffset: 350, + }, + csymDiagonalArrangementSlash: { + scale: 0.6, + leftSideBearing: -1, + advanceWidth: 990, + yOffset: 0, + }, + csymMinor: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 482, + yOffset: 0, + }, + csymMajorSeventh: { + scale: 0.9, + leftSideBearing: 200, + yOffset: 0, + advanceWidth: 600, + }, + accidentalSharp: { + scale: 0.75, + leftSideBearing: 20, + advanceWidth: 250, + yOffset: -302, + }, + accidentalFlat: { + scale: 0.9, + leftSideBearing: -20, + advanceWidth: 226, + yOffset: -184, + }, + }, + jazzOrnaments: { + brassScoop: { + scale: 1.0, + xOffset: -12, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 20, + }, + brassDoitMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 22, + }, + brassFallLipShort: { + scale: 1.0, + xOffset: 16, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 15, + }, + brassLiftMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 5, + stemUpYOffset: 0, + reportedWidth: 5, + }, + brassFallRoughMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 28, + stemUpYOffset: 0, + reportedWidth: 5, + }, + brassBend: { + scale: 1.0, + xOffset: 2, + yOffset: -8, + stemUpYOffset: 25, + reportedWidth: 5, + }, + brassMuteClosed: { + scale: 1.0, + xOffset: 3, + yOffset: -8, + stemUpYOffset: 25, + reportedWidth: 5, + }, + brassMuteOpen: { + scale: 1.0, + xOffset: 3, + yOffset: -7, + stemUpYOffset: 25, + reportedWidth: 5, + }, + brassFlip: { + scale: 1.0, + xOffset: 10, + yOffset: 0, + stemUpYOffset: 7, + reportedWidth: 10, + }, + brassJazzTurn: { + scale: 1.0, + xOffset: 0, + yOffset: 0, + stemUpYOffset: 8, + reportedWidth: 31, + }, + brassSmear: { + scale: 1.0, + xOffset: 10, + yOffset: 0, + stemUpYOffset: 8, + reportedWidth: 5, + }, + }, + tuplet: { + noteHeadOffset: 20, + stemOffset: 10, + bottomLine: 4, + topModifierOffset: 15, + }, + }, +}; + + +/***/ }), + +/***/ "./src/fonts/load_all.ts": +/*!*******************************!*\ + !*** ./src/fonts/load_all.ts ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "loadAllMusicFonts": () => (/* binding */ loadAllMusicFonts) +/* harmony export */ }); +/* harmony import */ var _load_bravura__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./load_bravura */ "./src/fonts/load_bravura.ts"); +/* harmony import */ var _load_custom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./load_custom */ "./src/fonts/load_custom.ts"); +/* harmony import */ var _load_gonville__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./load_gonville */ "./src/fonts/load_gonville.ts"); +/* harmony import */ var _load_leland__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./load_leland */ "./src/fonts/load_leland.ts"); +/* harmony import */ var _load_petaluma__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./load_petaluma */ "./src/fonts/load_petaluma.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// vexflow.js statically bundles & preloads all of our music engraving fonts. + + + + + +// ADD_MUSIC_FONT +// import { loadXXX } from './load_xxx'; +// Populate our font "database" with all our music fonts. +function loadAllMusicFonts() { + (0,_load_bravura__WEBPACK_IMPORTED_MODULE_0__.loadBravura)(); + (0,_load_gonville__WEBPACK_IMPORTED_MODULE_2__.loadGonville)(); + (0,_load_petaluma__WEBPACK_IMPORTED_MODULE_4__.loadPetaluma)(); + (0,_load_custom__WEBPACK_IMPORTED_MODULE_1__.loadCustom)(); + (0,_load_leland__WEBPACK_IMPORTED_MODULE_3__.loadLeland)(); + // ADD_MUSIC_FONT + // loadXXX(); +} + + +/***/ }), + +/***/ "./src/fonts/load_bravura.ts": +/*!***********************************!*\ + !*** ./src/fonts/load_bravura.ts ***! + \***********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "loadBravura": () => (/* binding */ loadBravura) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../font */ "./src/font.ts"); +/* harmony import */ var _bravura_glyphs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bravura_glyphs */ "./src/fonts/bravura_glyphs.ts"); +/* harmony import */ var _bravura_metrics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bravura_metrics */ "./src/fonts/bravura_metrics.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// If you are adding a new music engraving font, search for instances of ADD_MUSIC_FONT throughout the code base. +// To compile your new font into vexflow.js, take a look at src/fonts/load_all.ts +// You can export a font module which can be dynamically loaded by vexflow-core.js (see: Gruntfile.js). +// ADD_MUSIC_FONT +// To add a new music engraving font XXX, make a copy of this file and name it load_xxx.ts. +// Then you will need to generate xxx_glyphs.ts and xxx_metrics.ts. +// xxx_glyphs.ts is created by tools/fonts/fontgen_smufl.js +// xxx_metrics.ts is created by hand. You could copy bravura_metrics.ts and modify/remove/add entries where necessary. + + + +function loadBravura() { + _font__WEBPACK_IMPORTED_MODULE_0__.Font.load('Bravura', _bravura_glyphs__WEBPACK_IMPORTED_MODULE_1__.BravuraFont, _bravura_metrics__WEBPACK_IMPORTED_MODULE_2__.BravuraMetrics); +} + + +/***/ }), + +/***/ "./src/fonts/load_custom.ts": +/*!**********************************!*\ + !*** ./src/fonts/load_custom.ts ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "loadCustom": () => (/* binding */ loadCustom) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../font */ "./src/font.ts"); +/* harmony import */ var _custom_glyphs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./custom_glyphs */ "./src/fonts/custom_glyphs.ts"); +/* harmony import */ var _custom_metrics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./custom_metrics */ "./src/fonts/custom_metrics.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + +function loadCustom() { + _font__WEBPACK_IMPORTED_MODULE_0__.Font.load('Custom', _custom_glyphs__WEBPACK_IMPORTED_MODULE_1__.CustomFont, _custom_metrics__WEBPACK_IMPORTED_MODULE_2__.CustomMetrics); +} + + +/***/ }), + +/***/ "./src/fonts/load_gonville.ts": +/*!************************************!*\ + !*** ./src/fonts/load_gonville.ts ***! + \************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "loadGonville": () => (/* binding */ loadGonville) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../font */ "./src/font.ts"); +/* harmony import */ var _gonville_glyphs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./gonville_glyphs */ "./src/fonts/gonville_glyphs.ts"); +/* harmony import */ var _gonville_metrics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./gonville_metrics */ "./src/fonts/gonville_metrics.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + +function loadGonville() { + _font__WEBPACK_IMPORTED_MODULE_0__.Font.load('Gonville', _gonville_glyphs__WEBPACK_IMPORTED_MODULE_1__.GonvilleFont, _gonville_metrics__WEBPACK_IMPORTED_MODULE_2__.GonvilleMetrics); +} + + +/***/ }), + +/***/ "./src/fonts/load_leland.ts": +/*!**********************************!*\ + !*** ./src/fonts/load_leland.ts ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "loadLeland": () => (/* binding */ loadLeland) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../font */ "./src/font.ts"); +/* harmony import */ var _leland_glyphs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./leland_glyphs */ "./src/fonts/leland_glyphs.ts"); +/* harmony import */ var _leland_metrics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./leland_metrics */ "./src/fonts/leland_metrics.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + +function loadLeland() { + _font__WEBPACK_IMPORTED_MODULE_0__.Font.load('Leland', _leland_glyphs__WEBPACK_IMPORTED_MODULE_1__.LelandFont, _leland_metrics__WEBPACK_IMPORTED_MODULE_2__.LelandMetrics); +} + + +/***/ }), + +/***/ "./src/fonts/load_petaluma.ts": +/*!************************************!*\ + !*** ./src/fonts/load_petaluma.ts ***! + \************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "loadPetaluma": () => (/* binding */ loadPetaluma) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../font */ "./src/font.ts"); +/* harmony import */ var _petaluma_glyphs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./petaluma_glyphs */ "./src/fonts/petaluma_glyphs.ts"); +/* harmony import */ var _petaluma_metrics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./petaluma_metrics */ "./src/fonts/petaluma_metrics.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + +function loadPetaluma() { + _font__WEBPACK_IMPORTED_MODULE_0__.Font.load('Petaluma', _petaluma_glyphs__WEBPACK_IMPORTED_MODULE_1__.PetalumaFont, _petaluma_metrics__WEBPACK_IMPORTED_MODULE_2__.PetalumaMetrics); +} + + +/***/ }), + +/***/ "./src/fonts/petaluma_glyphs.ts": +/*!**************************************!*\ + !*** ./src/fonts/petaluma_glyphs.ts ***! + \**************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "PetalumaFont": () => (/* binding */ PetalumaFont) +/* harmony export */ }); +const PetalumaFont = { + glyphs: { + bracketTop: { + x_min: 0, + x_max: 508, + y_min: 0, + y_max: 370, + ha: 370, + o: 'm 22 0 b 122 0 55 1 89 0 l 157 0 b 713 376 425 0 622 137 b 732 467 724 406 732 436 b 726 514 732 482 730 498 b 711 533 723 528 719 533 b 693 526 707 533 700 530 b 674 498 683 520 678 508 b 635 406 662 467 652 435 b 310 164 560 281 458 193 b 154 151 258 154 206 151 b 39 154 117 151 78 154 b 1 120 17 154 4 145 b 0 84 0 108 0 96 b 0 20 0 63 1 40 b 22 0 0 4 7 0 z', + }, + bracketBottom: { + x_min: 0, + x_max: 496, + y_min: -393, + y_max: 0, + ha: 393, + o: 'm 696 -566 b 711 -539 713 -566 708 -549 b 714 -521 713 -533 714 -527 b 713 -508 714 -517 713 -513 b 661 -327 706 -445 688 -384 b 392 -42 603 -203 513 -109 b 206 0 331 -7 266 0 b 160 -1 190 0 174 -1 b 26 -1 107 -1 66 -3 b 0 -19 12 -1 0 -4 l 0 -23 b 3 -50 1 -32 3 -42 b 1 -86 3 -62 1 -73 b 4 -118 1 -96 1 -108 b 45 -151 10 -145 23 -154 b 180 -143 89 -144 135 -145 b 621 -419 392 -135 523 -236 b 662 -539 641 -456 655 -497 b 696 -566 667 -557 680 -566 z', + }, + barlineTick: { + x_min: 0, + x_max: 56.036101509664164, + y_min: 876.905249806889, + y_max: 1121.5430338167066, + ha: 244.63778400981766, + o: 'm 42 1263 b 66 1287 62 1261 66 1272 b 81 1583 65 1387 72 1485 b 35 1614 82 1610 53 1610 b 14 1591 17 1619 16 1604 b 0 1408 7 1525 0 1459 l 0 1292 b 42 1263 1 1263 23 1266 z', + }, + breathMarkTick: { + x_min: 0, + x_max: 568, + y_min: 0, + y_max: 621, + ha: 621, + o: 'm 258 0 b 278 39 276 0 274 24 b 279 56 279 45 279 50 l 279 73 b 278 117 279 88 278 102 b 281 148 278 127 279 138 b 536 600 312 330 387 487 b 744 719 600 651 670 690 b 815 779 775 730 808 740 b 818 824 818 793 818 808 b 815 868 818 838 818 852 b 796 894 814 881 808 894 b 779 888 791 894 786 893 b 719 864 760 878 739 871 b 372 602 580 806 459 724 b 229 252 298 498 251 383 b 220 268 225 262 222 264 b 209 302 217 279 213 291 b 75 527 181 387 143 467 b 16 563 58 543 39 573 b 0 539 3 557 0 549 b 12 492 0 524 9 507 b 56 400 19 459 22 425 b 163 269 104 367 138 323 b 238 36 197 194 216 115 b 258 0 242 22 243 0 z', + }, + segno: { + x_min: 0, + x_max: 798, + y_min: -65, + y_max: 806, + ha: 871, + o: 'm 16 -94 b 66 -69 39 -92 53 -85 b 177 59 102 -26 138 17 b 543 456 298 192 420 324 b 726 300 615 420 680 373 b 753 217 744 271 753 243 b 655 112 753 170 719 131 b 599 104 636 107 618 104 b 461 173 544 104 495 128 b 432 190 454 183 444 190 b 409 179 425 190 418 187 b 359 118 390 160 373 141 b 341 72 347 101 341 86 b 373 24 341 56 351 40 b 409 6 384 17 396 10 b 550 -13 454 -12 501 -14 b 599 -6 566 -12 583 -10 b 864 213 720 27 806 104 b 886 300 878 242 886 271 b 857 395 886 331 877 363 b 799 467 840 420 821 445 b 648 572 755 513 704 546 b 1110 1083 802 743 955 914 b 1140 1129 1123 1097 1136 1110 b 1149 1148 1142 1135 1149 1142 b 1145 1153 1149 1149 1148 1152 b 1123 1161 1139 1158 1130 1161 b 1109 1156 1119 1161 1113 1159 b 1089 1138 1102 1151 1094 1145 b 946 988 1040 1089 989 1041 b 595 602 834 855 711 732 l 590 598 l 549 615 b 432 793 462 647 432 723 b 534 888 432 851 474 888 b 671 834 588 888 631 864 b 710 818 684 824 696 818 b 724 821 714 818 719 819 b 809 883 757 834 788 852 b 816 901 814 890 816 896 b 802 923 816 910 812 916 b 706 984 770 945 742 971 b 593 1011 668 998 631 1011 b 516 991 567 1011 541 1005 b 333 799 433 949 380 876 b 302 693 312 765 302 729 b 330 589 302 658 311 624 b 469 488 360 533 415 511 b 485 482 475 487 480 485 b 266 249 412 405 338 327 b 121 88 217 196 170 141 b 9 -65 78 40 37 -7 b 0 -85 4 -72 0 -79 b 16 -94 0 -91 4 -94 z m 861 536 b 927 575 890 539 909 557 b 965 628 952 598 965 613 b 926 680 965 644 952 658 b 865 713 900 701 883 713 b 805 667 845 713 828 698 b 768 611 791 649 770 631 b 812 564 766 589 798 582 b 861 536 824 550 840 537 z m 251 350 b 363 436 285 348 353 403 b 354 456 366 448 360 452 b 271 518 327 477 298 497 b 243 528 261 526 252 528 b 210 513 232 528 222 523 b 157 454 190 494 176 472 b 141 428 147 444 141 436 b 158 406 141 420 147 413 b 216 361 180 393 197 376 b 245 350 225 356 235 350 z', + }, + coda: { + x_min: 0, + x_max: 1380, + y_min: -196, + y_max: 1037, + ha: 1233, + o: 'm 1028 -282 b 1057 -245 1045 -282 1053 -261 b 1060 -203 1060 -232 1060 -217 b 1063 9 1060 -132 1061 -62 b 1390 194 1192 22 1303 81 b 1531 543 1467 298 1512 415 b 1532 556 1531 547 1532 552 b 1904 559 1656 557 1780 559 b 1950 582 1920 559 1941 569 b 1987 674 1970 609 1987 638 b 1984 698 1987 681 1986 690 b 1950 700 1973 698 1961 700 l 1941 700 l 1545 696 b 1535 776 1545 723 1541 749 b 1103 1113 1477 996 1326 1107 b 1080 1115 1096 1115 1087 1115 b 1081 1322 1080 1184 1080 1253 b 1079 1467 1083 1371 1081 1418 b 1061 1493 1079 1476 1080 1493 l 1060 1493 b 1028 1467 1044 1490 1031 1485 b 1020 1403 1025 1446 1020 1424 b 1017 1110 1020 1305 1018 1208 l 962 1106 b 569 914 808 1087 671 1035 b 451 683 510 844 472 766 l 161 678 b 118 680 148 678 132 680 b 79 670 101 680 86 678 b 0 544 48 636 29 592 l 37 544 l 429 549 b 428 518 428 539 428 528 b 488 285 428 435 458 360 b 681 81 526 192 593 124 b 946 9 763 40 854 19 b 1008 6 966 7 988 6 b 1005 -137 1008 -42 1005 -89 b 1012 -243 1005 -173 1005 -209 b 1028 -282 1015 -258 1011 -282 z m 1074 690 b 1079 935 1077 772 1077 852 b 1326 855 1166 932 1250 909 b 1446 694 1385 814 1426 759 b 1269 693 1387 694 1328 693 b 1074 690 1204 693 1139 691 z m 577 684 b 766 874 618 763 678 828 b 989 932 837 912 913 923 b 1015 933 998 932 1007 933 b 1014 822 1015 896 1014 860 b 1011 688 1012 791 1012 743 z m 1067 184 b 1071 553 1070 307 1068 429 b 1439 556 1194 553 1316 554 b 1437 554 1439 554 1437 554 b 1341 337 1413 478 1387 402 b 1119 192 1286 261 1211 212 b 1067 184 1102 189 1084 186 z m 1008 180 b 660 264 886 181 770 212 b 524 471 570 305 524 374 b 528 524 524 488 526 505 l 533 549 b 792 552 619 550 706 550 b 1009 553 865 553 937 552 b 1008 180 1009 428 1008 288 z', + }, + gClef: { + x_min: 0, + x_max: 664, + y_min: -559, + y_max: 1009, + ha: 1568, + o: 'm 343 -805 b 366 -801 350 -805 357 -804 b 409 -773 383 -795 397 -786 b 582 -328 528 -648 577 -497 b 583 -294 582 -315 583 -294 b 612 -279 583 -294 603 -282 b 747 -197 660 -256 706 -230 b 949 143 857 -109 920 10 b 956 206 955 164 956 186 b 791 384 956 297 906 363 b 704 393 762 390 733 393 b 498 336 632 393 563 374 b 481 325 490 331 481 325 l 444 465 b 442 485 442 472 442 485 b 609 880 442 485 589 746 b 619 996 616 919 619 958 b 613 1084 619 1027 618 1056 b 534 1387 599 1188 560 1286 b 482 1453 527 1417 517 1453 b 422 1407 456 1453 438 1428 b 305 1063 348 1305 312 1188 b 304 1002 304 1043 304 1022 b 338 654 304 886 323 769 b 343 629 338 645 341 636 b 144 356 278 537 206 451 b 23 144 101 288 53 220 b 0 20 7 107 0 63 b 82 -210 0 -69 30 -160 b 207 -288 112 -239 160 -271 b 410 -328 274 -312 340 -328 b 474 -324 431 -328 452 -327 l 491 -321 b 491 -341 491 -321 492 -334 b 402 -585 475 -428 454 -513 b 294 -668 374 -622 348 -664 b 271 -693 278 -670 271 -680 b 274 -708 271 -698 272 -703 b 302 -775 282 -730 292 -753 b 343 -805 311 -795 325 -805 z m 400 717 b 382 922 389 786 382 854 b 481 1286 382 1047 408 1169 b 507 1125 498 1233 507 1179 b 500 1040 507 1097 504 1068 b 400 717 481 927 455 818 z m 252 -135 b 196 -121 232 -134 215 -127 b 117 -69 158 -108 127 -94 b 111 -32 112 -58 111 -45 b 117 19 111 -16 114 1 b 130 56 118 27 127 52 b 324 337 186 156 253 246 l 384 416 l 395 384 b 416 291 406 348 416 291 b 350 213 416 291 376 239 b 243 -42 278 143 243 55 b 251 -117 243 -66 246 -91 b 252 -135 252 -122 252 -127 z m 563 -91 b 510 168 552 3 530 78 b 513 192 508 179 508 186 b 624 202 550 199 586 202 b 730 192 660 202 694 199 b 850 141 773 183 816 176 b 858 134 852 138 855 135 b 595 -121 801 19 716 -68 l 569 -131 z m 410 -160 b 311 -147 360 -160 311 -147 b 307 -98 311 -147 307 -127 b 314 -33 307 -79 308 -56 b 429 131 328 36 377 85 b 441 138 433 135 438 138 b 449 122 446 138 448 132 b 490 -131 462 37 484 -46 b 490 -153 491 -140 490 -153 b 410 -160 490 -153 452 -163 z', + }, + cClef: { + x_min: 0, + x_max: 731, + y_min: -543, + y_max: 543, + ha: 1086, + o: 'm 131 -782 b 141 -755 138 -782 140 -773 b 147 -490 143 -667 145 -577 b 160 207 150 -258 153 -24 b 168 618 164 344 158 481 b 81 768 173 690 132 732 b 45 782 66 778 55 782 b 3 740 26 782 13 768 b 0 724 1 736 0 730 l 1 710 b 4 596 4 672 4 634 l 4 382 b 9 102 4 288 4 196 b 17 -301 13 -32 10 -166 l 17 -672 b 50 -736 17 -701 27 -720 b 109 -772 69 -749 91 -759 b 131 -782 120 -778 127 -782 z m 615 -770 b 881 -684 710 -770 801 -739 b 1020 -395 986 -612 1020 -510 b 1017 -334 1020 -374 1018 -354 b 769 -62 1007 -209 896 -75 b 746 -60 762 -60 755 -60 b 639 -73 710 -60 675 -69 b 524 -109 598 -79 560 -92 b 528 -36 526 -85 528 -60 b 527 -4 528 -26 528 -14 b 528 39 527 10 528 24 b 526 99 528 59 527 79 b 592 94 549 95 570 94 b 648 99 611 94 629 95 b 912 157 744 94 844 117 b 1053 377 1009 215 1053 284 b 1050 425 1053 393 1053 409 b 914 665 1037 521 986 602 b 717 753 855 717 791 753 b 626 734 688 753 658 747 l 462 665 b 347 500 374 628 347 580 b 350 449 347 484 348 468 b 392 419 353 428 367 416 b 492 438 425 425 459 428 b 541 498 524 448 541 468 b 540 514 541 503 541 508 b 537 546 537 524 537 536 b 573 639 537 580 550 611 b 606 657 582 649 593 657 l 609 657 b 716 622 647 652 684 647 b 834 372 801 556 834 469 b 831 323 834 356 832 338 b 743 187 825 266 795 217 b 710 176 732 180 720 176 b 694 179 704 176 700 177 b 527 223 638 193 582 206 b 495 229 516 228 505 229 b 454 220 481 229 468 225 b 395 189 432 213 415 200 b 363 180 384 186 374 181 b 348 168 356 179 348 176 b 340 161 343 167 340 164 b 347 150 340 157 343 154 b 356 147 348 148 353 147 b 364 92 361 130 363 111 b 369 -37 367 49 369 6 b 363 -154 369 -76 367 -115 b 357 -236 360 -183 357 -210 b 376 -264 357 -253 361 -259 b 456 -289 402 -284 429 -289 b 521 -282 478 -289 500 -285 b 549 -255 537 -279 546 -271 b 598 -177 556 -225 577 -202 b 622 -164 605 -168 613 -164 b 636 -167 626 -164 631 -166 b 749 -225 678 -177 714 -199 b 848 -405 814 -276 848 -337 b 824 -507 848 -436 840 -471 b 657 -657 792 -582 730 -625 b 608 -668 638 -664 622 -668 b 534 -602 572 -668 547 -645 b 513 -575 530 -589 523 -575 b 507 -576 510 -575 508 -575 b 478 -582 497 -580 488 -582 b 405 -570 454 -582 428 -570 b 389 -572 399 -570 395 -570 l 363 -572 b 321 -575 348 -572 333 -569 l 321 631 b 323 662 323 641 323 652 b 315 716 323 681 321 698 b 304 736 314 723 317 736 l 302 736 b 281 716 294 734 285 729 b 275 665 276 700 275 683 l 275 382 b 276 99 275 288 275 193 b 279 -170 278 10 276 -81 b 284 -399 282 -246 284 -323 b 282 -629 284 -475 282 -553 b 289 -721 282 -660 289 -690 b 300 -736 289 -727 291 -736 b 312 -724 307 -736 310 -730 b 321 -667 323 -706 321 -687 l 321 -632 l 328 -644 l 340 -657 b 510 -757 386 -707 445 -740 b 615 -770 546 -766 580 -770 z', + }, + fClef: { + x_min: 0, + x_max: 776, + y_min: -496, + y_max: 216, + ha: 712, + o: 'm 402 -706 b 804 -405 592 -678 716 -566 b 876 -53 861 -298 874 -183 b 868 33 876 -32 873 1 b 560 311 845 217 723 311 b 524 310 549 311 536 311 b 131 134 373 297 239 242 b 17 -29 84 86 37 39 b 9 -89 12 -50 9 -71 b 112 -238 9 -154 43 -206 b 124 -243 117 -239 120 -242 b 186 -261 145 -255 166 -261 b 268 -228 215 -261 242 -249 b 351 -59 325 -181 351 -124 b 343 10 351 -36 348 -13 b 340 36 341 19 340 27 b 409 105 340 75 363 102 b 441 107 420 107 431 107 b 624 36 510 107 573 86 b 744 -200 688 -27 724 -109 b 747 -230 747 -210 747 -222 b 717 -323 747 -264 736 -292 b 608 -445 688 -370 654 -410 b 307 -541 518 -513 415 -541 l 213 -541 b 39 -521 154 -541 96 -539 b 0 -552 17 -514 0 -531 b 1 -564 0 -556 0 -560 b 17 -611 6 -580 10 -596 b 101 -694 35 -648 50 -684 b 288 -714 164 -707 225 -714 b 402 -706 325 -714 363 -711 z m 1018 92 b 1080 118 1041 91 1068 96 b 1117 219 1099 150 1117 180 b 1113 252 1117 229 1116 240 b 1045 288 1102 297 1068 276 b 1017 262 1028 297 1024 274 b 984 124 989 220 996 170 b 1008 91 979 108 986 91 z m 972 -281 b 1070 -148 1024 -279 1070 -210 b 1025 -105 1070 -105 1045 -112 b 989 -127 1004 -96 998 -114 b 949 -249 963 -164 963 -209 b 969 -281 943 -265 949 -281 z', + }, + unpitchedPercussionClef1: { + x_min: 0, + x_max: 379.13761966945304, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 481 -360 b 507 -357 491 -360 500 -360 b 546 -295 541 -346 547 -325 b 536 79 543 -170 540 -46 b 523 311 533 157 534 235 b 475 359 518 340 508 359 b 425 360 459 359 442 360 b 400 359 416 360 409 360 b 337 294 348 353 340 347 l 337 -73 b 336 -264 337 -137 337 -200 b 343 -294 336 -274 338 -284 b 481 -360 359 -330 431 -360 z m 144 -341 b 207 -320 167 -341 189 -331 b 217 -301 215 -315 217 -308 b 210 -262 217 -289 210 -275 b 228 187 212 -112 209 37 b 228 287 228 220 229 253 b 174 353 228 336 222 343 b 120 359 157 357 138 359 b 48 357 96 359 72 356 b 17 323 29 357 19 344 b 7 120 16 255 9 187 b 6 -109 6 43 6 -33 l 6 -204 b 0 -251 6 -220 0 -235 b 3 -269 0 -256 0 -262 b 127 -340 24 -330 79 -328 b 144 -341 132 -341 138 -341 z', + }, + '6stringTabClef': { + x_min: 0, + x_max: 438, + y_min: -768, + y_max: 767, + ha: 1535, + o: 'm 369 438 b 374 439 370 438 372 438 b 384 462 383 444 384 452 l 384 474 b 390 697 386 547 390 622 b 373 1002 390 799 390 901 l 533 1002 b 560 1001 541 1004 552 1001 b 573 1007 567 1001 572 1002 b 546 1050 579 1025 559 1038 b 536 1056 543 1053 539 1053 b 324 1104 472 1102 397 1104 b 72 1090 238 1104 154 1099 b 55 1093 66 1090 60 1092 b 37 1073 46 1093 37 1089 b 60 1045 37 1061 48 1051 b 203 1001 105 1022 151 1001 b 233 1004 213 1001 223 1002 b 246 1005 238 1004 243 1005 b 272 975 264 1005 272 996 l 272 965 b 258 596 264 842 265 719 b 315 474 253 540 272 504 l 343 455 b 369 438 351 448 357 438 z m 114 -320 b 127 -304 120 -320 124 -315 b 171 -174 141 -261 158 -219 b 222 -135 179 -147 196 -137 b 426 -122 289 -131 359 -128 b 498 -164 462 -120 482 -127 b 628 -301 521 -226 575 -264 b 631 -288 631 -295 631 -291 b 628 -269 631 -281 629 -276 b 569 -134 616 -220 589 -179 b 408 225 514 -14 462 107 b 314 357 384 274 351 318 b 278 380 298 372 288 379 b 251 351 268 380 261 372 b 4 -209 156 171 75 -17 b 0 -228 1 -215 0 -222 b 19 -258 0 -240 7 -249 b 102 -314 45 -279 75 -294 b 114 -320 107 -318 111 -320 z m 425 6 b 360 20 403 17 382 20 b 274 14 331 20 302 14 l 246 14 l 340 206 b 425 6 369 137 395 75 z m 245 -1106 b 281 -1104 256 -1106 269 -1106 b 511 -888 400 -1094 511 -1035 b 454 -688 511 -814 504 -744 b 448 -678 449 -685 448 -681 b 454 -667 448 -675 449 -671 b 504 -497 503 -619 507 -559 b 324 -288 500 -383 436 -308 b 295 -287 314 -287 304 -287 l 282 -287 b 115 -330 223 -287 168 -307 b 94 -366 102 -336 94 -348 l 94 -370 b 96 -435 96 -392 96 -413 b 73 -858 89 -576 71 -717 b 78 -919 73 -878 78 -899 b 72 -950 78 -930 76 -940 b 63 -992 66 -965 63 -978 b 66 -1015 63 -999 65 -1008 b 173 -1104 84 -1106 84 -1106 b 245 -1106 197 -1104 220 -1104 z m 161 -622 b 147 -618 156 -622 151 -621 b 140 -600 141 -612 140 -606 b 144 -564 140 -589 144 -575 b 143 -554 144 -560 144 -557 l 143 -546 b 220 -451 144 -467 143 -465 b 278 -445 239 -446 259 -444 b 418 -497 328 -445 376 -461 b 429 -516 426 -504 429 -510 b 415 -533 429 -521 423 -527 b 219 -608 357 -579 287 -590 b 215 -609 217 -608 216 -609 b 161 -622 197 -609 177 -622 z m 154 -953 b 130 -933 135 -953 130 -948 l 130 -865 l 128 -865 b 135 -788 130 -838 124 -808 b 203 -769 145 -769 180 -776 b 259 -762 223 -765 242 -762 b 441 -852 330 -762 386 -805 b 449 -867 446 -858 449 -863 b 436 -884 449 -874 444 -878 b 318 -942 402 -914 363 -935 b 154 -953 264 -950 209 -953 z', + }, + timeSig0: { + x_min: 20, + x_max: 513, + y_min: -358.159536277652, + y_max: 359, + ha: 717.159536277652, + o: 'm 341 -516 b 420 -510 367 -516 395 -514 b 675 -338 533 -494 622 -448 b 737 -92 716 -256 734 -171 b 739 -35 739 -73 739 -53 b 680 305 739 86 720 207 b 400 517 622 449 537 517 b 337 514 380 517 359 517 b 289 507 321 511 305 513 b 91 317 192 477 127 412 b 29 9 50 212 29 108 b 217 -458 29 -157 88 -312 b 341 -516 251 -494 291 -518 z m 412 -452 b 359 -425 393 -452 376 -444 b 187 14 242 -301 179 -158 b 268 334 193 127 212 235 b 387 448 295 383 330 428 b 406 452 395 451 400 452 b 428 444 413 452 420 449 b 517 324 471 413 497 372 b 586 -29 560 222 586 86 b 556 -271 586 -112 585 -193 b 468 -422 536 -327 508 -377 b 412 -452 449 -442 431 -452 z', + }, + timeSig1: { + x_min: 20, + x_max: 283, + y_min: -364, + y_max: 366, + ha: 730, + o: 'm 264 -524 b 357 -510 297 -524 325 -516 b 374 -490 369 -508 374 -501 b 380 -438 376 -472 380 -455 l 406 246 b 408 301 408 265 408 282 b 400 445 408 348 405 396 b 288 527 395 491 338 527 b 253 520 276 527 264 526 b 240 508 249 517 245 513 b 49 409 192 445 127 413 b 29 396 33 408 29 403 b 32 380 29 392 30 386 b 59 363 36 366 49 364 b 164 348 95 356 130 348 b 222 357 183 348 203 351 b 238 361 228 360 233 360 b 252 334 248 361 252 353 b 243 59 252 242 249 150 b 219 -490 229 -124 233 -307 b 264 -524 217 -516 232 -524 z', + }, + timeSig2: { + x_min: 20, + x_max: 660.4636303241031, + y_min: -378.7201231608281, + y_max: 382, + ha: 760.720123160828, + o: 'm 99 -543 b 130 -533 111 -550 121 -540 b 255 -448 168 -501 213 -475 b 338 -425 282 -431 310 -425 b 392 -431 356 -425 374 -426 b 485 -462 423 -438 454 -451 b 648 -497 540 -482 595 -497 b 834 -441 711 -497 773 -480 b 950 -242 906 -395 958 -334 b 942 -210 950 -230 950 -215 b 912 -220 932 -204 920 -213 b 861 -264 894 -235 877 -248 b 775 -317 835 -289 808 -305 b 675 -334 742 -328 708 -334 b 510 -295 619 -334 563 -318 b 372 -264 465 -278 420 -264 b 305 -272 350 -264 328 -266 b 331 -242 318 -256 324 -249 b 490 -73 386 -187 438 -131 b 675 340 595 43 664 180 b 677 369 677 350 677 360 b 556 536 677 461 638 508 b 468 550 526 546 497 550 b 297 508 409 550 353 533 b 111 354 220 475 168 412 b 29 197 65 308 29 261 b 32 164 29 187 29 176 b 29 140 33 157 29 147 b 43 125 29 132 32 125 b 73 147 55 125 65 138 b 86 163 79 153 82 158 b 238 320 134 219 183 272 b 425 389 292 367 360 389 b 575 341 480 389 531 373 b 606 298 590 330 606 317 b 600 278 606 292 603 285 b 501 107 576 217 544 158 b 304 -104 439 33 372 -35 b 111 -356 230 -180 167 -265 b 84 -446 92 -386 84 -415 b 86 -481 84 -458 85 -469 b 88 -514 88 -491 88 -503 b 99 -543 89 -526 91 -537 z', + }, + timeSig3: { + x_min: 19.824321427094187, + x_max: 540, + y_min: -392, + y_max: 392, + ha: 784, + o: 'm 216 -540 b 354 -564 264 -556 310 -564 b 605 -465 445 -564 530 -530 b 729 -161 697 -383 729 -275 b 724 -82 729 -135 727 -108 b 589 95 716 -1 670 62 b 523 114 567 102 546 108 b 750 418 606 213 677 315 b 778 503 769 444 778 472 b 773 540 778 514 776 527 b 750 564 769 557 762 564 b 736 562 746 564 742 563 b 641 552 704 553 672 552 b 402 554 562 552 481 554 l 346 554 b 84 546 258 554 170 554 b 36 501 55 543 40 531 b 29 412 30 472 32 442 b 52 384 27 393 32 384 l 56 384 b 210 392 107 389 158 392 l 602 392 b 354 108 523 285 445 192 b 246 -65 300 58 246 12 b 252 -108 246 -78 248 -92 l 252 -111 b 264 -141 251 -122 251 -135 b 291 -132 274 -145 284 -140 b 425 -72 328 -95 377 -84 b 475 -65 442 -68 459 -65 b 592 -108 517 -65 557 -79 b 645 -179 615 -125 645 -147 b 642 -194 645 -184 644 -189 b 485 -376 616 -278 569 -344 b 361 -399 444 -392 402 -399 b 151 -340 289 -399 219 -376 b 88 -275 122 -323 98 -310 b 71 -249 86 -268 85 -249 b 63 -251 68 -249 66 -249 b 36 -288 48 -255 36 -266 b 55 -423 33 -336 45 -377 b 101 -482 60 -448 78 -468 b 216 -540 138 -504 174 -526 z', + }, + timeSig4: { + x_min: 20, + x_max: 633.0785282750762, + y_min: -489.59088556716864, + y_max: 491.18559127100053, + ha: 980.7764768381692, + o: 'm 608 -704 b 641 -684 622 -708 634 -696 b 667 -602 660 -660 662 -631 b 685 -190 683 -465 680 -327 l 685 -176 b 831 -127 736 -166 783 -148 b 912 0 901 -94 913 -76 b 886 53 912 36 904 52 b 848 40 877 53 864 49 l 838 36 b 687 -13 789 14 739 -3 b 681 177 687 50 684 114 b 672 338 678 230 677 285 b 654 373 671 350 672 373 b 622 340 636 373 624 361 b 615 262 621 314 613 288 b 619 -22 616 167 619 72 b 569 -22 602 -23 585 -23 b 305 -3 481 -16 395 -1 b 210 -9 274 -3 242 -4 b 301 163 242 52 268 108 b 513 552 377 288 459 412 b 536 652 526 585 536 618 b 533 683 536 662 534 672 b 520 707 531 691 531 707 b 487 693 508 708 494 704 b 474 668 482 684 477 677 b 384 490 454 603 418 547 b 253 281 343 419 295 351 b 73 -13 194 181 145 78 b 29 -108 50 -42 29 -72 b 37 -147 29 -121 32 -134 b 50 -186 43 -160 50 -173 b 68 -216 52 -207 56 -215 b 92 -207 73 -216 82 -213 b 288 -166 156 -180 220 -166 b 556 -186 377 -166 467 -180 b 586 -189 566 -187 576 -187 b 616 -186 596 -189 606 -189 b 606 -432 613 -268 612 -350 b 596 -625 603 -495 596 -559 b 598 -670 596 -641 596 -655 b 608 -704 598 -683 596 -700 z', + }, + timeSig5: { + x_min: 19.663871085403297, + x_max: 583, + y_min: -389, + y_max: 389, + ha: 778, + o: 'm 132 -536 b 249 -560 168 -553 209 -559 b 507 -462 351 -560 454 -514 b 677 -183 588 -384 642 -289 b 694 -85 688 -150 694 -117 b 540 138 694 12 642 94 b 422 173 501 154 462 167 b 400 187 408 174 400 177 b 405 202 400 190 402 196 b 428 284 416 228 426 255 b 469 312 431 307 442 312 b 757 372 569 312 662 343 b 840 490 821 392 840 432 b 812 560 840 540 834 560 b 763 546 801 560 785 556 b 757 543 762 546 759 544 b 465 484 665 505 570 484 b 396 484 452 484 425 487 b 353 454 377 482 366 474 b 281 300 323 405 304 351 b 245 164 262 255 245 212 b 246 144 245 158 246 151 b 233 63 249 115 243 89 b 225 35 228 50 225 40 b 264 14 225 22 236 19 b 445 -26 325 7 387 0 b 569 -151 501 -52 547 -89 b 575 -180 573 -161 575 -170 b 527 -275 575 -217 547 -245 b 347 -367 484 -334 419 -367 b 261 -351 318 -367 289 -363 b 95 -300 206 -333 154 -307 b 55 -321 73 -297 65 -302 b 29 -468 29 -367 40 -419 b 56 -505 26 -482 36 -500 b 132 -536 82 -514 108 -524 z', + }, + timeSig6: { + x_min: 20, + x_max: 565, + y_min: -363, + y_max: 363, + ha: 726, + o: 'm 390 -518 b 621 -458 469 -507 549 -494 b 814 -134 753 -390 814 -281 b 652 59 814 -16 750 58 b 580 48 629 59 606 55 b 233 -334 392 -9 276 -138 b 115 -228 181 -314 143 -278 b 98 -160 104 -206 98 -183 b 107 -109 98 -144 101 -127 b 167 37 124 -59 145 -12 b 508 340 236 189 347 292 b 575 353 530 347 553 353 b 648 327 600 353 625 346 b 665 320 654 321 661 320 b 687 336 674 320 681 325 b 703 405 697 359 703 382 b 684 472 703 429 697 451 b 593 523 664 504 631 521 b 576 521 588 523 582 523 b 297 403 472 508 380 465 b 115 177 217 344 164 264 b 29 -121 60 82 29 -17 b 53 -278 29 -173 36 -225 b 226 -497 82 -374 131 -454 b 347 -523 265 -514 305 -523 b 390 -518 361 -523 376 -521 z m 351 -357 b 312 -351 337 -356 320 -363 b 325 -315 304 -340 320 -327 b 543 -120 373 -222 448 -158 b 622 -104 570 -108 596 -102 b 717 -132 655 -104 687 -112 b 740 -167 732 -143 740 -153 b 730 -196 740 -176 737 -184 b 563 -321 690 -258 634 -300 b 359 -357 497 -341 428 -354 z', + }, + timeSig7: { + x_min: 20.3617407597707, + x_max: 592, + y_min: -345, + y_max: 345, + ha: 690, + o: 'm 253 -497 b 318 -485 276 -497 297 -487 b 366 -441 348 -482 360 -468 b 487 -104 390 -323 433 -210 b 835 403 580 82 701 246 b 852 436 847 416 852 428 b 815 467 852 451 840 461 b 762 474 798 471 779 474 b 674 445 732 474 701 465 b 603 410 652 431 628 420 b 383 360 533 379 459 360 b 200 435 315 360 249 382 b 88 494 168 469 131 485 b 66 497 81 495 73 497 b 33 484 52 497 39 492 b 50 436 22 469 39 451 b 295 310 114 360 199 324 b 406 301 331 304 369 301 b 593 324 468 301 530 308 b 585 307 589 314 588 310 b 265 -249 451 137 338 -46 b 207 -442 242 -312 223 -377 b 204 -462 206 -449 204 -456 b 253 -497 204 -487 220 -497 z', + }, + timeSig8: { + x_min: 20, + x_max: 504.15101530718516, + y_min: -428, + y_max: 428, + ha: 856, + o: 'm 265 -616 b 289 -615 274 -616 281 -616 b 710 -271 492 -592 657 -485 b 726 -148 721 -229 727 -187 b 585 108 726 -48 687 42 b 572 127 576 114 573 120 b 576 144 572 132 575 138 b 598 301 590 196 598 249 b 586 413 598 338 593 376 b 356 616 559 531 467 616 b 233 582 317 616 275 606 b 29 233 101 505 29 384 b 104 9 29 153 46 72 b 189 -48 127 -16 160 -27 b 92 -158 141 -73 114 -114 b 37 -343 63 -217 50 -279 b 33 -390 35 -359 33 -374 b 265 -616 33 -524 148 -616 z m 258 105 b 124 148 215 105 167 117 b 96 196 105 163 96 177 b 99 217 96 202 96 209 b 197 384 120 281 151 337 b 350 451 242 429 297 451 b 516 364 412 451 472 422 b 530 331 523 354 530 343 l 530 327 l 530 320 b 468 151 520 261 507 200 b 419 122 455 135 442 125 b 258 105 370 117 320 105 z m 328 -438 b 158 -276 233 -436 160 -359 b 166 -239 158 -264 161 -252 b 230 -157 176 -203 202 -179 b 367 -72 274 -125 320 -98 b 448 -49 396 -56 423 -49 b 562 -118 491 -49 528 -72 b 611 -251 590 -157 611 -199 b 569 -341 611 -288 595 -318 b 328 -438 500 -402 416 -432 z', + }, + timeSig9: { + x_min: 20, + x_max: 494, + y_min: -421, + y_max: 421, + ha: 842, + o: 'm 235 -606 b 361 -564 275 -606 318 -593 b 619 -229 487 -482 566 -366 b 706 127 664 -114 694 4 b 711 233 708 163 711 197 b 700 346 711 271 708 308 b 389 606 658 517 530 606 b 351 605 376 606 364 606 b 56 272 171 586 56 441 b 96 98 56 216 69 156 b 334 -53 144 -3 238 -53 b 544 36 408 -53 484 -24 b 652 176 586 78 622 124 b 631 71 645 141 639 105 b 467 -302 599 -63 562 -196 b 271 -442 412 -364 354 -422 b 225 -448 255 -446 239 -448 b 95 -305 148 -448 98 -395 b 89 -255 95 -288 94 -271 b 73 -233 86 -246 85 -233 b 52 -248 65 -233 56 -239 b 29 -317 42 -271 30 -291 b 49 -448 29 -361 40 -405 b 235 -606 69 -541 144 -606 z m 340 104 b 144 209 264 108 194 141 b 127 258 132 225 127 240 b 137 297 127 271 130 284 b 366 449 184 396 269 449 b 517 408 415 449 467 436 b 595 348 546 392 572 372 b 616 305 608 336 616 321 b 609 281 616 298 613 289 b 340 104 557 184 477 104 z', + }, + timeSigCommon: { + x_min: 20, + x_max: 585, + y_min: -298, + y_max: 294.49658092772603, + ha: 592.496580927726, + o: 'm 444 -405 b 829 -45 626 -346 740 -207 b 842 26 842 -23 842 1 b 821 58 842 39 841 58 b 795 40 811 58 802 48 b 765 3 785 29 773 16 b 469 -223 690 -104 596 -183 b 354 -242 431 -235 392 -242 b 180 -177 292 -242 235 -223 b 135 -99 154 -157 140 -131 b 132 -59 134 -85 132 -72 b 141 7 132 -37 135 -16 b 449 274 189 160 297 243 b 477 278 459 276 468 276 b 546 203 517 278 539 253 b 517 157 550 177 533 166 b 485 143 507 153 497 143 l 482 143 b 467 148 478 143 472 144 b 374 183 438 170 406 181 b 264 118 333 183 292 161 b 238 48 246 92 238 69 b 261 -9 238 29 245 10 b 383 -73 287 -39 337 -73 b 412 -68 392 -73 402 -72 b 631 164 526 -27 586 59 b 649 252 644 193 649 222 b 636 328 649 278 645 304 b 504 423 615 400 579 429 b 242 318 408 415 317 387 b 29 -158 104 190 29 33 b 30 -176 29 -164 29 -170 b 115 -364 42 -246 52 -315 b 307 -429 177 -410 240 -429 b 444 -405 351 -429 397 -420 z', + }, + timeSigCutCommon: { + x_min: 20, + x_max: 695, + y_min: -687.0379164869064, + y_max: 687, + ha: 1374.0379164869064, + o: 'm 564 -989 b 595 -945 585 -991 589 -963 l 599 -922 b 605 -628 600 -824 603 -726 l 609 -399 b 878 -251 706 -363 798 -320 b 996 -85 932 -204 976 -153 b 1001 -63 998 -78 1001 -71 b 989 -46 1001 -56 998 -49 b 978 -43 985 -45 982 -43 b 950 -59 968 -43 959 -49 b 733 -216 894 -132 815 -177 b 611 -259 694 -235 652 -249 b 616 -20 612 -179 615 -99 b 680 29 642 -7 665 9 b 698 43 685 36 690 40 b 870 251 792 82 840 160 b 877 294 874 265 877 279 b 818 410 877 338 855 382 b 683 458 779 442 730 448 b 625 468 664 462 644 465 l 625 514 b 638 958 626 662 636 811 b 626 989 638 979 635 989 b 603 981 621 989 613 986 b 422 840 534 945 481 888 b 412 805 412 832 413 818 b 426 713 410 773 420 743 b 445 678 429 690 435 678 b 474 691 452 678 461 683 b 563 755 503 710 530 732 b 564 724 564 740 564 733 b 559 469 563 639 560 554 b 462 454 526 469 494 464 b 112 143 302 399 199 281 b 33 -94 66 71 45 -10 b 29 -148 30 -112 29 -131 b 105 -351 29 -223 52 -291 b 359 -455 171 -426 258 -451 b 517 -431 409 -451 464 -446 l 539 -422 l 539 -477 b 533 -739 536 -563 539 -651 b 530 -824 531 -768 530 -795 b 546 -948 530 -865 533 -907 b 564 -989 552 -962 543 -989 z m 410 -288 b 193 -197 328 -288 253 -264 b 141 -60 160 -161 141 -108 b 157 6 141 -35 147 -12 b 259 158 189 58 217 112 b 438 291 311 215 364 266 b 528 305 468 301 498 305 b 554 304 537 305 546 304 b 553 212 554 274 554 242 b 426 115 498 199 446 164 b 416 68 419 99 416 84 b 425 12 416 49 420 30 b 474 -39 432 -17 448 -32 b 513 -43 487 -42 498 -43 b 547 -40 524 -43 536 -42 l 543 -272 b 461 -285 516 -278 488 -281 b 410 -288 444 -287 426 -288 z m 694 197 b 668 203 685 197 677 199 b 621 216 654 210 638 215 b 622 294 622 242 622 268 b 706 268 651 287 678 278 b 746 235 721 261 734 249 b 752 222 749 230 752 226 b 743 213 752 219 749 215 b 694 197 727 206 711 197 z', + }, + timeSigPlus: { + x_min: 0, + x_max: 661, + y_min: -358, + y_max: 358, + ha: 716, + o: 'm 605 -516 b 629 -490 624 -516 629 -507 b 628 -475 629 -485 628 -481 b 613 -131 624 -405 616 -174 b 612 -96 612 -114 612 -96 l 647 -98 b 897 -115 730 -99 814 -109 b 940 -89 919 -117 935 -109 b 952 -24 946 -69 952 -46 b 948 9 952 -14 950 -3 b 912 39 942 26 933 37 b 609 60 822 48 609 60 b 616 392 609 60 608 291 b 567 488 619 436 605 467 b 511 516 550 498 531 514 b 498 511 507 516 503 514 b 478 446 475 501 480 469 b 467 150 474 348 469 249 b 465 59 465 121 465 59 l 372 49 b 73 14 272 36 173 24 b 49 13 65 13 56 13 b 0 -33 9 13 0 6 b 60 -141 0 -117 6 -140 b 112 -135 73 -141 91 -140 b 413 -102 213 -125 314 -112 b 464 -98 441 -99 464 -98 l 464 -145 b 477 -456 464 -249 468 -353 b 526 -510 478 -488 491 -507 b 589 -513 546 -511 569 -510 b 605 -516 595 -514 600 -516 z', + }, + timeSigPlusSmall: { + x_min: 0, + x_max: 418, + y_min: -197, + y_max: 199, + ha: 396, + o: 'm 301 -284 b 330 -238 320 -284 324 -255 b 348 -46 350 -176 341 -111 b 374 -20 351 -27 356 -23 b 481 -17 409 -16 445 -17 b 566 -9 510 -17 537 -16 b 602 3 579 -7 602 -16 b 566 29 602 19 582 24 b 526 33 553 32 539 33 b 384 39 478 36 432 39 b 356 62 363 39 356 42 l 356 68 b 359 177 359 104 359 141 l 359 251 b 341 287 359 264 361 285 b 311 255 324 287 314 272 b 310 228 311 246 310 236 l 301 69 b 275 39 301 49 295 39 l 271 39 b 210 40 251 40 230 40 b 167 39 196 40 181 40 b 89 40 141 37 115 40 b 24 30 68 40 46 37 b 0 17 17 27 0 30 l 0 13 b 27 -17 3 0 7 -13 b 91 -22 49 -22 71 -22 b 153 -22 115 -22 137 -20 l 275 -22 b 295 -40 289 -22 295 -27 l 295 -48 b 288 -235 288 -109 287 -171 b 287 -264 288 -243 287 -253 b 301 -284 287 -275 289 -284 z', + }, + timeSigMinus: { + x_min: 0, + x_max: 662, + y_min: -54, + y_max: 55, + ha: 109, + o: 'm 39 -78 b 49 -76 42 -78 45 -76 b 452 -75 94 -75 272 -75 b 861 -76 632 -75 814 -76 b 953 -20 927 -79 953 -66 b 948 27 953 -7 950 9 b 946 37 948 30 948 35 b 896 79 940 63 929 79 b 471 78 827 78 648 78 l 42 78 b 0 37 14 78 0 69 b 23 -66 0 0 17 -32 b 39 -78 24 -75 32 -76 z', + }, + timeSigParensRight: { + x_min: 0, + x_max: 274.26483738379414, + y_min: -722.6326530612245, + y_max: 725, + ha: 1447.6326530612246, + o: 'm 37 -1038 b 69 -1031 48 -1044 59 -1038 b 88 -1015 76 -1027 82 -1021 b 164 -886 120 -976 147 -933 b 333 -351 233 -711 292 -534 b 395 118 366 -204 399 -59 b 389 245 392 144 392 194 b 120 996 369 521 265 766 b 68 1044 99 1030 84 1044 b 19 988 50 1044 36 1024 b 0 922 7 965 0 945 b 20 858 0 901 6 881 b 259 215 141 660 236 449 b 271 -1 266 143 271 71 b 252 -239 271 -82 265 -161 b 148 -667 228 -384 183 -524 b 39 -1009 120 -785 66 -893 b 33 -1031 37 -1017 33 -1024 b 37 -1038 33 -1034 35 -1037 z', + }, + timeSigParensRightSmall: { + x_min: 0, + x_max: 154.4025307335204, + y_min: -422, + y_max: 422, + ha: 844, + o: 'm 43 -608 b 60 -598 48 -608 53 -605 b 117 -511 82 -572 102 -543 b 222 23 193 -350 219 -177 b 213 166 225 55 216 109 b 115 531 206 294 174 416 b 45 603 99 562 76 588 b 30 608 39 606 35 608 b 10 598 23 608 17 603 b 0 546 3 590 0 570 b 23 451 0 507 9 458 b 102 351 66 429 84 390 b 167 42 150 252 167 148 b 163 -49 167 12 166 -19 b 35 -449 151 -192 121 -330 b 14 -504 22 -467 14 -485 b 17 -527 14 -511 16 -520 l 30 -590 b 43 -608 33 -603 37 -608 z', + }, + timeSigParensLeft: { + x_min: 0.5555555555555556, + x_max: 399.6216117372966, + y_min: -728, + y_max: 728, + ha: 1456, + o: 'm 562 -1048 b 573 -1043 566 -1048 570 -1047 b 553 -988 582 -1025 564 -1004 b 472 -884 527 -952 497 -920 b 210 -354 366 -717 275 -541 b 148 -6 170 -240 148 -124 b 160 148 148 45 153 96 b 315 678 189 331 242 508 b 431 901 350 755 380 834 b 459 950 451 926 461 939 b 435 995 459 962 451 972 b 364 1048 405 1034 383 1048 b 305 996 343 1048 325 1028 b 127 624 226 881 174 753 b 1 30 56 432 9 235 b 1 -32 1 9 0 -12 b 180 -629 13 -245 92 -438 b 363 -936 230 -739 298 -835 b 526 -1041 402 -995 448 -1041 b 562 -1048 537 -1040 552 -1048 z', + }, + timeSigParensLeftSmall: { + x_min: 0, + x_max: 173.45497224367904, + y_min: -405, + y_max: 404, + ha: 809, + o: 'm 197 -583 b 222 -553 212 -582 219 -566 b 229 -497 226 -534 229 -516 b 213 -425 229 -472 225 -448 b 102 -177 173 -344 132 -262 b 62 30 78 -111 58 -42 b 91 183 66 82 75 134 b 215 426 118 271 156 356 b 249 552 246 465 252 505 b 230 582 249 563 246 582 b 197 563 219 582 206 576 b 71 356 144 500 105 429 b 0 50 26 259 3 158 b 13 -112 4 -3 7 -58 b 176 -559 29 -275 105 -416 b 196 -583 180 -569 186 -583 z', + }, + noteheadDoubleWhole: { + x_min: -0.4444444444444444, + x_max: 614.1875, + y_min: -223.03296670127517, + y_max: 223, + ha: 446.0329667012752, + o: 'm 35 -321 b 62 -266 58 -318 58 -288 l 62 -194 b 63 50 62 -114 63 -32 b 60 189 63 96 63 143 b 43 300 59 226 60 265 b 29 321 40 308 39 321 l 26 321 b 0 292 13 318 0 310 b 0 248 0 278 -1 262 b 6 147 4 215 6 181 b 4 48 6 114 4 81 b 6 0 4 32 6 16 b 7 -36 7 -12 7 -24 l 7 -52 b 6 -156 7 -86 6 -121 b 19 -275 6 -196 9 -236 b 35 -321 23 -291 16 -323 z m 847 -314 b 871 -288 860 -315 867 -300 b 884 -187 881 -255 886 -222 b 876 115 878 -86 876 14 b 877 255 876 161 876 209 b 868 291 877 268 873 279 b 855 304 867 301 863 304 b 844 301 852 304 848 304 b 822 265 825 292 822 278 b 824 251 822 259 822 255 b 822 170 822 225 822 197 l 822 -20 b 835 -284 827 -86 825 -186 b 847 -314 837 -295 835 -311 z m 757 -291 b 793 -171 796 -255 792 -212 b 795 -49 795 -131 795 -91 b 786 207 795 36 791 121 b 779 240 786 217 783 229 b 766 258 776 246 776 258 b 762 256 765 258 763 256 b 739 236 752 253 740 252 b 733 177 737 216 732 197 b 737 20 737 125 739 73 l 737 -107 b 740 -202 737 -138 739 -170 b 757 -291 740 -230 743 -261 z m 128 -261 b 144 -251 135 -264 141 -256 b 158 -203 156 -236 157 -220 b 161 -137 161 -181 161 -158 b 157 30 161 -81 157 -26 b 158 76 157 45 157 60 l 158 101 b 156 225 158 141 158 183 b 137 253 156 235 154 253 l 134 253 b 109 222 120 251 109 242 b 104 91 108 179 104 134 b 108 -58 104 42 109 -9 b 107 -105 108 -73 108 -89 b 105 -127 107 -112 107 -120 b 118 -245 105 -167 114 -204 b 128 -261 118 -252 121 -259 z m 488 -242 b 693 -79 595 -249 685 -166 l 693 -55 b 690 0 693 -36 691 -17 b 540 187 684 84 621 164 b 449 200 508 196 480 200 b 210 104 363 200 282 163 b 186 56 196 92 186 76 b 207 -82 186 9 192 -37 b 300 -204 225 -132 248 -181 b 488 -242 356 -229 415 -240 z m 490 -88 b 449 -86 477 -88 464 -88 b 287 -56 399 -85 341 -78 b 258 -33 275 -52 258 -48 b 282 -7 258 -20 272 -13 b 458 43 340 23 399 43 b 580 14 497 43 537 35 b 618 -20 606 1 619 -9 b 592 -58 618 -30 609 -42 b 490 -88 562 -82 528 -88 z', + }, + noteheadWhole: { + x_min: 0, + x_max: 380.16649762501584, + y_min: -186.17102907059297, + y_max: 165, + ha: 351.17102907059297, + o: 'm 547 40 b 223 -268 543 -151 367 -259 b 102 -233 180 -271 143 -248 l 62 -216 b 0 -127 22 -197 0 -166 b 6 -91 0 -115 1 -104 b 122 141 33 -9 69 71 b 327 238 170 204 249 238 b 514 158 397 238 467 212 b 547 40 544 125 549 84 z m 248 -107 b 384 -63 295 -102 341 -88 b 426 -23 402 -53 415 -40 b 435 3 432 -14 435 -6 b 413 32 435 14 428 24 b 301 73 376 49 343 73 b 272 69 291 73 282 72 b 121 -35 207 53 157 20 b 111 -58 117 -42 111 -50 b 125 -75 111 -65 115 -71 b 248 -107 164 -89 202 -107 z', + }, + noteheadHalf: { + x_min: 0, + x_max: 334, + y_min: -174, + y_max: 175, + ha: 349, + o: 'm 480 56 b 167 -251 478 -115 331 -251 b 94 -242 143 -251 118 -248 b 9 -141 43 -229 20 -192 b 0 -68 3 -115 0 -91 b 284 249 0 95 127 200 b 304 252 289 251 297 252 b 481 78 374 252 481 170 b 480 56 481 71 481 63 z m 213 -102 b 399 6 274 -81 341 -48 b 402 17 400 7 402 13 b 399 27 402 22 400 26 b 311 94 373 53 353 88 b 292 95 305 95 300 95 b 130 27 230 95 181 55 b 69 -62 98 9 62 -29 b 161 -98 76 -98 128 -91 b 213 -102 174 -101 186 -101 z', + }, + noteheadBlack: { + x_min: 0, + x_max: 334.04644433966797, + y_min: -164, + y_max: 164, + ha: 328, + o: 'm 112 -233 b 141 -236 122 -235 131 -236 b 481 104 279 -236 485 -48 b 403 222 477 141 478 192 b 334 236 382 232 359 236 b 1 -59 180 236 13 59 b 0 -85 1 -68 0 -76 b 112 -233 0 -157 32 -215 z', + }, + noteheadXDoubleWhole: { + x_min: 0, + x_max: 730, + y_min: -266, + y_max: 267, + ha: 533, + o: 'm 1018 -373 b 1032 -361 1025 -376 1028 -367 b 1051 -287 1047 -338 1051 -314 b 1050 -252 1051 -276 1051 -264 b 1030 186 1031 -107 1037 40 b 1031 266 1028 213 1031 239 b 1018 363 1031 300 1028 331 b 1005 384 1015 373 1017 384 l 1004 384 b 984 363 992 384 986 373 b 982 343 982 356 982 348 b 981 235 982 307 981 271 b 996 -285 981 60 986 -112 b 1009 -360 998 -311 1005 -336 b 1018 -373 1011 -364 1014 -373 z m 16 -383 b 49 -328 39 -367 48 -350 b 69 56 58 -202 62 -73 b 75 212 72 107 72 160 b 78 278 76 233 78 255 b 59 382 78 312 73 347 b 29 328 33 372 29 350 b 13 -29 29 209 23 88 b 3 -222 7 -95 10 -157 b 0 -265 1 -236 0 -252 b 16 -383 0 -304 6 -343 z m 923 -314 b 955 -240 948 -289 952 -265 b 965 -65 962 -181 965 -125 b 963 0 965 -45 965 -22 b 962 111 960 37 962 73 b 953 240 962 154 960 197 b 939 275 952 253 952 275 b 913 239 924 274 913 258 b 913 173 914 217 913 194 b 914 135 913 160 913 147 b 920 27 919 98 920 63 b 909 -128 920 -26 917 -78 b 906 -179 906 -147 906 -163 b 923 -314 906 -223 913 -266 z m 121 -301 b 143 -272 134 -301 138 -284 b 147 -255 145 -268 145 -261 b 173 160 161 -117 166 22 b 173 233 173 184 174 209 b 157 264 171 243 171 264 b 137 235 143 264 138 249 b 132 207 135 226 132 216 b 121 43 128 153 124 96 b 105 -186 117 -36 105 -111 b 111 -269 105 -215 107 -242 b 121 -301 114 -281 104 -300 z m 210 -238 b 376 -193 274 -239 327 -226 b 471 -134 406 -173 439 -154 b 534 -94 491 -120 513 -107 b 671 -192 579 -127 624 -161 b 733 -226 691 -204 708 -228 b 746 -225 737 -228 742 -226 b 845 -204 782 -226 814 -213 b 868 -194 854 -203 865 -203 b 852 -173 871 -183 860 -179 b 661 -40 789 -128 724 -84 b 642 -27 654 -36 648 -32 b 861 114 716 17 791 63 b 886 132 870 120 886 121 l 886 137 b 852 164 883 151 867 161 b 776 176 827 170 801 176 b 685 145 744 176 714 168 b 530 45 638 107 583 76 b 403 132 487 73 444 101 b 279 176 364 161 324 171 b 223 160 259 176 229 176 b 258 115 215 141 242 127 b 431 -17 314 71 372 26 b 173 -196 341 -73 253 -130 b 157 -209 168 -200 157 -203 b 158 -215 157 -212 157 -215 b 183 -236 166 -223 168 -235 b 210 -238 194 -236 206 -239 z m 768 -207 b 533 -40 687 -150 609 -94 b 321 -173 462 -85 392 -130 b 261 -194 304 -184 287 -196 b 239 -193 253 -196 246 -194 b 387 -95 294 -157 340 -125 b 505 -20 426 -71 465 -45 l 484 -4 b 353 89 441 27 396 56 b 320 115 341 96 330 107 b 297 141 311 124 297 132 b 300 148 297 144 298 145 b 336 135 311 164 324 143 b 528 -4 400 89 464 42 l 723 121 b 770 140 737 131 753 138 b 792 132 779 140 789 141 b 778 115 795 122 783 120 b 586 -6 714 75 651 35 b 557 -24 576 -13 567 -19 b 726 -147 613 -66 670 -109 b 768 -207 744 -161 765 -173 z', + }, + noteheadXWhole: { + x_min: 0, + x_max: 506, + y_min: -143.0823320899293, + y_max: 144, + ha: 287.0823320899293, + o: 'm 53 -206 b 219 -163 117 -207 170 -196 b 314 -102 249 -141 282 -122 b 377 -63 334 -89 356 -76 b 514 -161 422 -96 468 -128 b 576 -196 534 -174 552 -196 b 589 -193 580 -196 585 -196 b 688 -174 625 -194 657 -181 b 711 -158 698 -171 711 -173 b 696 -143 711 -151 701 -147 b 503 -9 632 -98 567 -52 l 485 4 b 704 145 559 49 634 95 b 729 164 711 150 729 151 l 729 168 b 696 196 726 183 710 193 b 621 207 671 202 645 207 b 528 177 589 207 557 200 b 373 76 480 140 426 108 b 246 164 330 104 287 132 b 122 206 207 193 167 203 b 66 192 102 207 72 207 b 99 147 58 173 85 158 b 274 14 157 102 215 58 b 16 -164 184 -42 96 -98 b 0 -179 12 -168 0 -170 b 1 -183 0 -180 0 -183 b 26 -204 6 -193 12 -204 b 53 -206 37 -206 49 -206 z m 611 -177 b 376 -9 530 -118 452 -63 l 164 -143 b 104 -164 147 -154 130 -164 b 82 -161 96 -164 89 -164 b 230 -65 137 -125 183 -95 l 347 12 b 327 26 341 16 334 22 l 196 121 b 163 147 184 128 173 137 b 140 173 154 154 140 163 b 143 180 140 176 141 177 b 179 166 154 194 167 174 l 372 27 l 566 153 b 613 171 580 161 596 170 b 635 160 624 171 635 174 b 621 147 635 153 626 150 l 429 24 b 400 6 419 19 409 13 b 569 -117 456 -35 513 -75 b 611 -177 588 -130 608 -143 z', + }, + noteheadXHalf: { + x_min: 0, + x_max: 421, + y_min: -145.51844828189743, + y_max: 151, + ha: 296.51844828189746, + o: 'm 490 -209 b 539 -207 505 -207 521 -207 b 606 -209 560 -207 583 -209 b 598 -196 602 -203 600 -199 l 406 -19 l 540 130 b 547 144 546 135 547 140 b 536 156 547 148 543 153 b 488 192 518 166 503 176 b 416 217 471 209 444 217 b 323 180 380 217 344 204 l 264 115 b 239 138 256 122 248 131 b 33 197 180 196 108 200 b 3 186 23 197 6 193 b 19 154 -1 174 10 163 b 171 12 69 107 120 59 b 19 -157 120 -45 69 -101 b 0 -177 14 -163 0 -166 b 1 -181 0 -179 0 -180 b 39 -203 9 -197 22 -203 l 186 -203 b 197 -202 190 -202 193 -200 l 213 -202 b 262 -180 228 -202 246 -199 l 314 -122 b 490 -209 363 -170 412 -216 z m 435 -148 b 291 -30 379 -112 337 -69 l 213 -118 b 190 -137 207 -125 202 -137 b 145 -111 173 -130 154 -127 b 160 -79 137 -98 151 -88 b 238 16 184 -48 212 -16 b 141 99 204 43 173 72 l 124 117 b 115 132 121 121 115 127 b 118 137 115 134 117 137 b 141 132 127 147 135 138 l 253 36 b 347 150 285 75 315 112 b 370 164 354 160 363 163 b 403 145 382 164 393 156 b 416 127 412 140 416 132 b 405 102 416 118 412 111 l 307 -10 b 413 -105 343 -42 379 -73 b 435 -148 425 -115 436 -125 z', + }, + noteheadXBlack: { + x_min: 0, + x_max: 289, + y_min: -156, + y_max: 157, + ha: 313, + o: 'm 23 -225 b 69 -204 40 -223 56 -219 b 137 -131 92 -180 115 -157 l 209 -50 b 377 -197 264 -101 321 -148 b 403 -210 384 -203 393 -210 l 408 -210 b 416 -192 416 -207 416 -199 l 416 -186 b 403 -148 416 -171 413 -158 b 344 -81 384 -125 367 -101 b 252 -1 312 -55 282 -29 b 377 157 297 49 340 101 b 402 202 387 170 402 187 b 395 217 402 207 400 213 b 376 226 389 223 382 226 b 334 192 360 226 346 204 b 206 42 289 143 248 94 b 96 161 167 81 131 120 b 60 193 86 174 76 189 b 33 206 52 196 42 206 b 22 199 29 206 26 204 b 10 173 14 190 10 181 b 22 147 10 166 14 157 b 148 7 62 98 104 52 b 164 -7 154 1 158 -3 b 10 -189 111 -66 55 -122 b 0 -212 6 -197 0 -203 b 1 -217 0 -213 0 -216 b 23 -225 4 -226 14 -222 z', + }, + noteheadCircleXDoubleWhole: { + x_min: 0, + x_max: 437, + y_min: -220, + y_max: 219.03988406941295, + ha: 439.03988406941295, + o: 'm 10 -304 b 40 -206 43 -275 37 -239 b 55 168 48 -81 50 45 b 53 269 56 202 55 236 b 33 315 52 287 46 314 b 3 269 9 317 4 291 b 0 239 1 259 0 249 l 0 -196 b 10 -304 1 -232 7 -268 z m 592 -317 b 621 -220 619 -287 621 -253 b 622 -121 622 -187 622 -154 b 625 -20 622 -88 622 -55 b 629 101 628 20 629 60 b 628 220 629 141 628 181 b 618 253 628 232 625 243 b 608 275 613 259 616 274 b 602 272 606 275 603 275 b 575 249 590 269 575 266 l 575 246 b 573 222 575 239 573 230 l 573 -50 b 592 -317 575 -137 570 -225 z m 79 -285 b 114 -6 96 -261 109 -131 b 117 -63 114 -24 114 -45 b 249 -242 124 -151 166 -212 b 324 -256 275 -252 300 -256 b 504 -137 406 -256 478 -209 b 505 -265 504 -180 505 -222 b 513 -282 505 -269 510 -275 b 533 -248 526 -272 528 -261 b 540 -174 539 -223 540 -199 l 540 -127 b 553 207 546 -16 549 95 b 543 232 553 216 554 232 b 518 207 530 233 518 222 b 511 118 520 177 510 148 l 511 92 b 330 216 488 174 420 223 b 301 215 320 216 311 216 b 122 65 202 204 151 163 b 114 9 117 46 114 27 b 115 75 114 32 115 53 b 101 248 115 157 109 228 b 76 206 78 242 76 225 l 76 91 b 75 -26 76 52 76 13 b 69 -189 72 -81 66 -134 b 79 -285 71 -219 76 -249 z m 317 4 b 219 109 285 40 252 75 l 209 120 b 331 153 248 141 289 151 b 420 137 360 153 390 147 b 446 120 435 131 442 127 l 436 108 l 328 -7 z m 215 -131 b 216 -101 215 -122 215 -114 b 219 -45 217 -82 219 -63 b 197 94 219 3 213 49 l 197 95 b 199 94 199 95 199 94 l 310 -27 b 233 -108 285 -55 259 -81 z m 442 -141 b 432 -122 441 -134 436 -128 l 344 -26 l 426 58 l 445 81 b 444 75 445 78 444 76 b 428 -13 433 46 428 16 b 446 -104 428 -45 433 -75 b 452 -122 449 -111 452 -117 b 442 -141 452 -131 448 -137 z m 323 -190 b 272 -180 305 -187 288 -184 b 217 -158 239 -173 225 -168 l 327 -45 b 330 -48 328 -46 328 -48 b 432 -150 363 -82 393 -121 b 323 -190 400 -174 364 -189 z', + }, + noteheadCircleXWhole: { + x_min: 0, + x_max: 323, + y_min: -190, + y_max: 184.44625787787314, + ha: 374.4462578778731, + o: 'm 156 -258 b 240 -274 184 -268 213 -274 b 455 -101 347 -274 441 -202 b 465 19 462 -60 465 -22 b 464 71 465 36 465 52 b 246 265 455 194 370 274 b 216 264 236 265 226 264 b 12 94 102 251 45 203 b 0 13 3 66 1 40 b 4 -55 0 -10 3 -32 b 156 -258 14 -154 60 -222 z m 245 10 b 233 23 242 14 238 19 b 121 144 196 65 158 104 l 109 154 b 249 192 156 179 202 192 b 351 174 284 192 317 186 b 380 154 366 168 376 163 b 379 153 380 154 380 153 b 369 141 376 148 372 145 b 245 10 327 98 287 53 z m 115 -131 b 118 -96 117 -121 117 -111 b 121 -27 120 -73 121 -50 b 98 124 121 24 115 75 b 96 127 96 125 98 125 b 99 125 98 127 98 125 b 225 -12 140 79 181 33 l 138 -105 b 115 -131 131 -114 122 -121 z m 376 -143 b 363 -121 374 -134 369 -128 b 265 -12 331 -85 298 -48 l 357 85 b 379 111 364 94 372 101 b 377 102 379 108 377 105 b 359 4 364 71 359 37 b 382 -99 359 -32 366 -66 b 387 -121 384 -108 386 -115 b 376 -143 387 -130 382 -135 z m 239 -197 b 181 -187 220 -194 200 -192 b 121 -161 145 -177 128 -173 b 243 -33 161 -118 203 -75 l 248 -36 b 364 -153 285 -75 320 -118 b 239 -197 327 -180 287 -197 z', + }, + noteheadCircleXHalf: { + x_min: 0, + x_max: 309, + y_min: -179, + y_max: 179, + ha: 358, + o: 'm 232 -258 b 435 -94 328 -258 412 -196 b 445 6 444 -60 445 -27 b 444 69 445 27 445 48 b 258 258 439 170 374 258 l 230 258 l 207 256 b 14 107 111 248 45 202 b 0 12 4 75 0 43 b 12 -82 0 -20 4 -50 b 144 -242 27 -160 69 -212 b 232 -258 174 -252 203 -258 z m 192 60 b 115 141 166 88 141 115 l 108 150 b 226 189 141 173 186 189 b 253 186 236 189 245 187 b 305 180 271 183 288 183 b 192 60 268 140 229 101 z m 56 -78 b 45 6 43 -56 45 -23 b 65 84 49 39 50 45 b 85 121 72 96 78 107 b 95 124 88 124 92 127 b 171 39 120 95 145 68 z m 360 -132 b 348 -112 359 -124 353 -118 l 300 -58 l 387 37 b 410 63 397 48 405 56 b 413 26 412 52 413 40 b 360 -132 413 -42 393 -95 z m 232 -183 b 184 -177 217 -183 202 -181 l 281 -78 b 348 -143 301 -101 323 -122 b 232 -183 318 -168 279 -183 z', + }, + noteheadCircleX: { + x_min: 0, + x_max: 344, + y_min: -179, + y_max: 175.12551922594866, + ha: 354.12551922594866, + o: 'm 99 -210 b 236 -258 137 -242 186 -258 b 418 -183 305 -258 374 -230 b 495 33 475 -120 495 -48 b 494 66 495 45 494 55 b 302 252 487 183 405 256 b 181 243 262 249 222 248 b 46 171 128 236 79 219 b 0 19 14 127 0 73 b 99 -210 0 -68 35 -156 z m 245 42 l 124 156 b 200 176 145 166 170 173 b 337 183 245 181 291 184 b 377 176 351 183 364 180 b 245 42 333 131 288 86 z m 392 -99 l 285 3 l 400 121 b 418 154 409 131 418 140 b 465 50 448 130 465 94 b 405 -112 462 -17 439 -73 z m 89 -120 b 48 0 56 -82 48 -42 b 89 112 48 35 59 76 b 109 101 96 111 102 108 l 210 7 l 187 -17 b 89 -120 151 -53 125 -82 z m 176 -183 b 127 -163 158 -179 141 -171 l 252 -32 l 372 -144 b 233 -189 334 -173 285 -189 b 176 -183 215 -189 196 -187 z', + }, + noteheadCircledDoubleWhole: { + x_min: 0, + x_max: 672, + y_min: -291, + y_max: 291, + ha: 582, + o: 'm 27 -419 b 43 -369 37 -403 43 -387 b 49 -82 45 -272 49 -177 b 50 370 50 69 50 219 b 30 419 50 389 50 419 b 7 369 7 419 7 389 b 0 -284 4 151 1 -66 b 16 -418 0 -328 10 -373 z m 945 -374 b 968 -282 963 -343 968 -312 b 966 -245 968 -269 968 -258 b 958 -45 959 -179 962 -111 b 948 262 949 56 952 160 b 936 377 946 301 946 340 b 922 399 933 386 933 399 l 919 397 b 897 374 909 396 899 389 b 894 308 897 353 893 331 b 904 120 899 246 903 183 b 913 -111 907 43 909 -35 b 927 -297 916 -173 919 -235 b 945 -374 930 -320 927 -347 z m 95 -347 b 120 -292 115 -325 117 -310 b 124 -223 122 -269 124 -246 b 122 -141 124 -196 122 -168 b 121 -85 121 -122 121 -104 b 462 -297 170 -209 300 -297 b 727 -219 543 -294 639 -271 b 828 -118 773 -190 808 -157 b 842 -268 831 -168 834 -219 b 851 -288 844 -275 840 -287 b 865 -272 861 -289 863 -279 b 873 -225 871 -256 873 -240 b 873 -171 873 -207 871 -190 b 858 196 868 -48 863 75 b 848 295 857 229 854 262 b 840 315 848 301 850 315 l 837 315 b 816 295 827 314 816 307 b 809 216 815 268 808 243 b 815 102 812 179 814 140 b 672 295 780 176 733 240 b 500 370 621 340 566 370 b 436 361 480 370 459 367 b 120 95 288 321 183 233 l 120 256 b 115 287 120 266 118 276 b 104 305 112 292 115 305 l 101 305 b 82 284 91 304 82 297 b 76 216 81 262 76 239 b 84 -253 78 59 79 -96 b 95 -347 84 -282 89 -311 z m 780 -33 b 779 -24 780 -30 779 -27 b 704 92 766 22 743 62 b 544 173 655 128 599 147 b 400 206 497 194 448 204 b 307 193 369 206 338 202 b 202 118 264 181 226 153 b 235 168 212 135 222 151 b 505 337 302 262 396 312 b 523 338 511 337 517 338 b 611 288 559 338 586 312 b 763 62 678 225 733 151 b 780 -33 776 26 782 -4 z m 435 -88 b 337 -23 387 -88 354 -65 b 333 6 334 -14 333 -6 b 366 86 333 35 344 66 b 456 122 390 111 423 121 b 602 27 517 122 582 88 b 606 1 605 19 606 10 b 575 -49 606 -20 596 -36 b 435 -88 530 -76 481 -82 z m 441 -269 b 194 -96 327 -262 249 -194 b 167 1 176 -62 167 -30 b 177 59 167 22 171 42 b 174 39 176 52 174 46 b 266 -104 174 -27 210 -73 b 511 -151 346 -148 435 -144 l 552 -151 b 740 -104 616 -145 683 -141 b 776 -66 756 -94 769 -81 b 700 -174 766 -105 740 -140 b 441 -269 632 -232 533 -268 z', + }, + noteheadCircledWhole: { + x_min: -50, + x_max: 472, + y_min: -231.00750990437078, + y_max: 232, + ha: 463.00750990437075, + o: 'm 289 -333 b 553 -255 370 -330 465 -307 b 680 -62 635 -206 680 -138 b 662 22 680 -36 674 -7 b 500 259 626 112 573 193 b 327 334 448 304 393 334 b 264 325 307 334 287 331 b -59 49 111 284 4 193 b -72 -19 -68 26 -72 4 b 289 -333 -72 -192 84 -334 z m 608 -69 b 605 -60 606 -66 606 -63 b 530 56 592 -14 570 26 b 372 137 482 92 425 111 b 228 170 324 158 275 168 b 134 157 196 170 166 166 b 29 82 91 145 53 117 b 60 132 37 99 49 115 b 333 301 128 226 223 276 b 350 302 338 301 344 302 b 438 252 386 302 413 276 b 590 26 505 189 560 115 b 608 -69 603 -10 608 -40 z m 262 -124 b 164 -59 215 -124 180 -101 b 160 -32 161 -50 160 -42 b 193 50 160 -3 171 30 b 284 86 217 75 251 85 b 429 -9 344 86 409 52 b 433 -36 432 -17 433 -26 b 402 -85 433 -56 423 -72 b 262 -124 357 -112 307 -118 z m 268 -305 b 22 -132 154 -298 76 -230 b -6 -33 3 -98 -6 -65 b 3 23 -6 -14 -3 6 b 1 3 1 16 1 10 b 94 -140 1 -63 37 -109 b 338 -187 173 -184 261 -180 l 379 -187 b 566 -140 444 -181 510 -177 b 602 -102 582 -130 595 -117 b 526 -210 592 -141 567 -176 b 268 -305 459 -268 360 -304 z', + }, + noteheadCircledHalf: { + x_min: -50, + x_max: 393, + y_min: -175, + y_max: 175, + ha: 350, + o: 'm 540 39 b 408 187 503 94 464 148 b 259 252 356 223 301 252 b 35 192 160 252 95 229 b -68 50 -17 160 -53 112 b -72 13 -71 37 -72 24 b 69 -204 -72 -79 -1 -161 b 246 -252 125 -238 186 -252 b 500 -164 336 -252 426 -219 b 566 -42 543 -132 566 -88 b 540 39 566 -14 557 14 z m 9 -42 b 12 -68 10 -50 10 -59 b -7 6 3 -46 -4 -22 b 131 189 1 98 55 153 b 243 220 167 206 204 215 b 261 222 249 222 255 222 b 377 161 308 222 341 189 b 435 89 402 141 420 117 b 431 92 433 89 432 91 b 346 120 402 102 372 107 b 253 143 314 135 282 143 b 85 79 193 143 138 115 b 9 -42 45 52 10 13 z m 356 39 b 343 1 356 24 351 12 b 206 -111 304 -46 259 -84 b 181 -118 196 -115 189 -118 b 156 -71 163 -118 154 -102 b 238 35 164 -22 199 9 b 324 66 264 52 294 59 b 356 39 348 71 356 62 z m 488 -78 b 392 -176 471 -125 433 -154 b 246 -225 346 -200 297 -217 b 230 -226 240 -226 235 -226 b 157 -204 203 -226 180 -215 b 78 -154 128 -190 101 -174 b 232 -184 128 -171 180 -184 b 344 -161 269 -184 307 -179 b 491 -39 405 -135 455 -94 b 500 -23 495 -33 497 -29 b 488 -78 500 -40 494 -59 z', + }, + noteheadCircledBlack: { + x_min: -70, + x_max: 326, + y_min: -168, + y_max: 192, + ha: 360, + o: 'm 176 -239 b 190 -242 180 -240 186 -240 b 262 -232 213 -242 238 -235 b 469 -19 384 -225 469 -131 b 467 22 469 -6 468 9 b 383 194 455 86 436 151 b 183 276 315 249 251 275 b 32 236 134 276 85 264 b -94 88 -30 207 -75 160 b -101 30 -98 69 -101 49 b 176 -239 -101 -107 9 -251 z m 177 -212 b -30 -27 81 -213 -13 -131 b -33 17 -33 -13 -33 3 b 127 226 -33 111 14 187 b 194 239 151 233 173 238 b 301 203 232 239 266 226 b 364 134 330 184 350 160 b 233 181 341 160 279 180 b 192 171 216 181 202 179 b 13 1 117 131 46 86 b 3 -48 6 -17 3 -33 b 60 -115 3 -79 20 -101 b 203 -135 105 -131 151 -138 b 229 -138 212 -137 220 -137 b 295 -122 251 -138 274 -135 b 400 -33 337 -99 373 -71 b 228 -206 393 -125 330 -192 b 177 -212 209 -209 192 -213 z', + }, + noteheadDoubleWholeSquare: { + x_min: 0, + x_max: 474, + y_min: -209.39230484541326, + y_max: 211, + ha: 420.39230484541326, + o: 'm 648 -301 b 668 -287 658 -304 665 -295 b 683 -209 678 -262 683 -235 b 677 258 681 -55 678 102 b 672 284 677 266 677 276 b 661 304 670 291 672 304 l 658 304 b 635 279 647 301 635 297 b 629 240 635 266 629 252 l 629 236 b 631 225 629 232 631 228 b 583 194 631 197 611 194 l 528 194 b 125 207 393 194 259 202 b 89 207 114 209 101 206 b 63 210 79 207 71 207 b 52 229 55 213 52 220 b 55 258 52 238 55 248 b 53 266 55 261 55 264 b 36 298 48 276 53 298 l 35 298 b 4 264 14 298 7 284 b 0 187 0 238 0 213 b 4 50 0 143 3 96 b 6 -10 6 30 6 10 b 4 -130 6 -50 4 -91 b 12 -268 4 -176 6 -222 b 19 -287 13 -275 10 -284 b 35 -275 26 -288 30 -281 b 52 -220 50 -261 48 -239 b 75 -199 55 -206 58 -199 l 141 -197 l 274 -197 l 634 -197 b 639 -281 635 -219 636 -251 b 648 -301 641 -288 638 -300 z m 72 -66 b 55 -56 59 -69 55 -65 l 55 -50 b 53 53 55 -16 55 20 b 69 73 53 69 60 72 l 79 72 b 330 65 163 66 246 63 l 592 65 b 634 81 606 65 618 71 b 635 -30 634 39 635 6 b 605 -58 635 -49 628 -58 b 451 -60 553 -60 503 -60 b 219 -59 373 -60 295 -59 l 166 -59 b 72 -66 134 -59 104 -60 z', + }, + noteheadSquareWhite: { + x_min: 0, + x_max: 350, + y_min: -131, + y_max: 131, + ha: 262, + o: 'm 468 -189 b 485 -187 474 -189 480 -189 b 500 -176 495 -187 500 -183 b 498 -168 500 -174 498 -171 b 497 -166 498 -167 497 -167 l 498 -164 b 504 -154 503 -163 504 -158 b 503 -138 504 -150 503 -144 l 503 -135 l 503 -94 b 492 66 500 -45 494 10 b 488 135 492 89 488 112 b 484 150 488 141 485 145 b 482 154 482 151 482 153 b 429 189 472 177 456 189 b 53 184 304 186 179 186 l 39 184 b 33 181 36 183 35 183 b 12 160 20 181 12 177 b 0 -109 9 71 4 -19 b 19 -137 0 -125 7 -134 b 23 -151 19 -141 20 -145 b 85 -187 37 -173 55 -187 b 468 -189 212 -187 340 -187 z m 246 -125 l 63 -125 b 66 -111 65 -122 66 -117 b 73 72 69 -50 71 10 l 73 130 b 88 128 78 128 82 128 b 148 130 108 130 128 130 b 271 128 190 130 230 128 l 271 130 l 420 130 b 428 20 425 92 425 56 l 436 -127 l 246 -127 z', + }, + noteheadSquareBlack: { + x_min: 0, + x_max: 342, + y_min: -129.98961937716263, + y_max: 132.44444444444446, + ha: 262.4340638216071, + o: 'm 217 190 b 439 186 304 190 372 190 b 467 180 448 184 458 183 b 492 145 484 176 492 167 b 490 -124 490 56 490 -33 b 488 -141 490 -130 488 -135 b 456 -170 488 -163 478 -168 b 118 -183 344 -176 230 -181 b 29 -184 89 -183 60 -192 b 0 -148 4 -180 0 -168 b 1 29 1 -89 1 -30 l 1 156 b 36 190 3 187 4 190 b 217 190 102 192 168 190 z', + }, + noteheadTriangleDownDoubleWhole: { + x_min: 0, + x_max: 510, + y_min: -213, + y_max: 213, + ha: 426, + o: 'm 16 -307 b 30 -289 26 -307 29 -297 b 43 -236 36 -272 42 -253 l 65 219 b 59 285 62 240 69 264 b 46 307 55 294 58 307 l 43 307 b 19 279 30 304 20 295 b 13 184 17 248 14 216 b 1 -125 9 81 7 -23 b 0 -163 0 -138 0 -150 b 6 -287 0 -204 4 -245 b 16 -307 6 -295 7 -305 z m 707 -294 b 734 -213 733 -271 734 -242 b 729 245 733 -60 730 92 b 719 285 729 259 724 272 b 707 298 716 291 714 298 l 703 298 b 685 284 696 297 687 292 b 683 253 683 274 683 264 b 691 -181 685 108 685 -36 b 707 -294 693 -217 690 -256 z m 108 -238 b 125 -203 125 -238 121 -216 b 127 -190 127 -199 127 -194 b 120 -138 127 -173 120 -156 l 120 -66 b 114 167 120 12 118 89 l 118 161 b 314 -153 184 58 248 -48 b 350 -184 327 -173 338 -184 b 387 -154 361 -184 374 -174 b 567 108 449 -68 508 20 b 626 193 588 137 608 164 b 615 -132 622 85 619 -24 l 615 -166 b 619 -207 615 -180 615 -194 b 638 -226 622 -217 629 -225 b 651 -209 648 -226 649 -216 b 658 -177 655 -199 658 -187 l 658 -171 b 667 49 655 -98 667 -23 b 665 88 667 62 667 75 b 665 220 665 135 667 179 b 641 265 664 238 660 265 b 626 243 629 265 626 255 b 628 222 626 236 628 228 b 612 225 624 223 619 225 b 384 223 537 223 461 223 l 384 225 l 170 225 b 131 215 157 225 144 222 b 112 200 122 210 117 206 b 88 266 111 225 108 249 b 75 239 76 259 75 249 b 73 147 75 207 73 179 b 82 -189 73 35 79 -78 b 84 -203 82 -194 82 -199 b 108 -238 86 -219 91 -238 z m 361 -79 b 295 78 336 -26 314 26 b 284 151 287 101 284 125 b 310 177 284 171 291 177 b 419 176 346 176 383 174 l 423 176 b 445 153 441 176 445 168 l 445 147 b 361 -79 442 65 415 -10 z', + }, + noteheadTriangleDownWhole: { + x_min: 0, + x_max: 366, + y_min: -145, + y_max: 138, + ha: 283, + o: 'm 242 -209 b 279 -180 253 -209 266 -200 b 459 84 341 -92 400 -4 b 520 170 480 112 501 141 b 527 189 524 177 527 183 b 504 199 527 196 520 199 l 55 199 b 23 190 45 199 33 196 b 0 161 9 181 0 173 b 10 135 0 154 3 145 b 206 -177 76 32 140 -73 b 242 -209 219 -199 230 -209 z m 253 -105 b 187 52 228 -52 206 0 b 176 127 179 76 176 101 b 197 151 176 144 181 151 l 202 151 b 256 150 220 151 238 150 b 311 151 275 150 294 151 b 337 128 331 151 337 144 l 337 122 b 253 -105 334 39 307 -35 z', + }, + noteheadTriangleDownHalf: { + x_min: -0.0833130378007211, + x_max: 341, + y_min: -159, + y_max: 159, + ha: 318, + o: 'm 266 -229 b 282 -215 274 -229 278 -225 b 487 153 350 -92 418 30 b 491 170 490 158 491 164 b 480 189 491 177 487 183 b 425 215 464 202 448 213 b 33 226 297 217 168 222 b 13 229 29 223 22 229 b 1 222 9 229 4 228 b 14 184 -4 207 7 196 b 210 -176 81 65 145 -56 b 253 -225 222 -194 230 -213 b 266 -229 259 -226 264 -228 z m 134 22 b 147 43 138 27 141 37 b 206 163 174 79 179 127 b 213 170 209 166 212 167 l 340 167 b 193 -75 287 89 251 1 b 190 -82 192 -76 190 -79 z', + }, + noteheadTriangleDownBlack: { + x_min: 0, + x_max: 346, + y_min: -149, + y_max: 149, + ha: 298, + o: 'm 229 -215 b 259 -202 238 -215 248 -210 b 284 -173 269 -194 278 -184 l 482 173 b 498 209 488 184 498 194 b 481 215 492 215 487 215 b 63 213 343 215 203 213 b 12 197 45 213 29 206 b 0 180 4 193 0 187 b 3 168 0 177 1 173 b 13 150 6 163 9 156 l 196 -189 b 229 -215 206 -206 216 -215 z', + }, + noteheadTriangleUpDoubleWhole: { + x_min: 0, + x_max: 510, + y_min: -213, + y_max: 213, + ha: 426, + o: 'm 16 -307 b 30 -289 26 -307 29 -297 b 43 -236 36 -272 42 -253 l 65 219 b 59 285 62 240 69 264 b 46 307 55 294 58 307 l 43 307 b 19 279 30 304 20 295 b 13 184 17 248 14 216 b 1 -125 9 81 7 -23 b 0 -163 0 -138 0 -150 b 6 -287 0 -204 4 -245 b 16 -307 6 -295 7 -305 z m 707 -298 b 734 -217 733 -275 734 -246 b 729 240 733 -65 730 88 b 719 281 729 255 724 268 b 707 294 716 287 714 294 l 703 294 b 685 279 696 292 687 288 b 683 249 683 269 683 259 b 691 -186 685 104 685 -40 b 707 -298 693 -222 690 -261 z m 88 -266 b 112 -200 108 -249 111 -225 b 131 -215 117 -206 122 -210 b 170 -225 144 -222 157 -225 l 384 -225 l 384 -223 b 612 -225 461 -223 537 -223 b 628 -222 619 -225 624 -223 b 641 -265 628 -238 622 -265 b 665 -220 660 -265 664 -238 b 665 -88 667 -179 665 -135 b 667 -49 667 -75 667 -62 b 658 171 667 23 655 98 b 651 209 660 184 655 197 b 638 226 649 216 648 226 b 619 207 629 225 622 217 b 615 166 615 194 615 180 l 615 132 b 626 -193 619 24 622 -85 b 567 -108 608 -164 588 -137 b 387 154 508 -20 449 68 b 350 184 374 174 361 184 b 314 153 338 184 327 173 b 118 -161 248 48 184 -58 l 114 -167 b 120 66 118 -89 120 -12 l 120 138 b 127 190 120 156 127 173 b 125 203 127 194 127 199 b 108 238 121 216 125 238 b 84 203 91 238 86 219 b 82 189 82 199 82 194 b 73 -147 79 78 73 -35 b 75 -239 73 -179 75 -207 b 88 -266 75 -249 76 -259 z m 310 -177 b 284 -151 291 -177 284 -171 b 295 -78 284 -125 287 -101 b 361 79 314 -26 336 26 b 445 -147 415 10 442 -65 b 423 -176 446 -166 442 -176 l 419 -176 b 310 -177 383 -174 346 -176 z', + }, + noteheadTriangleUpWhole: { + x_min: 0, + x_max: 366, + y_min: -145, + y_max: 138, + ha: 283, + o: 'm 504 -209 b 527 -199 520 -209 527 -206 b 520 -180 527 -193 524 -187 b 459 -94 501 -151 480 -122 b 279 170 400 -6 341 82 b 242 199 266 190 253 199 b 206 167 230 199 219 189 b 10 -145 140 63 76 -42 b 0 -171 3 -156 0 -164 b 23 -200 0 -183 9 -192 b 55 -209 33 -206 45 -209 z m 202 -161 b 176 -137 183 -163 176 -156 b 187 -62 176 -111 179 -86 b 253 95 206 -10 228 42 b 337 -132 307 24 334 -49 b 311 -161 338 -153 334 -161 b 256 -160 294 -161 275 -160 b 202 -161 238 -160 220 -161 z', + }, + noteheadTriangleUpHalf: { + x_min: 0, + x_max: 341.0833130378007, + y_min: -159, + y_max: 159, + ha: 318, + o: 'm 458 -226 b 478 -229 462 -223 469 -229 b 490 -222 482 -229 487 -228 b 477 -184 495 -207 484 -196 b 281 176 410 -65 346 56 b 238 225 269 194 261 213 b 225 229 232 226 228 228 b 209 215 217 229 213 225 b 4 -153 141 92 73 -30 b 0 -170 1 -158 0 -164 b 12 -189 0 -177 4 -183 b 66 -215 27 -202 43 -213 b 458 -226 194 -217 323 -222 z m 151 -167 b 298 75 204 -89 240 -1 b 301 82 300 76 301 79 l 357 -22 b 344 -43 353 -27 350 -37 b 285 -163 317 -79 312 -127 b 278 -170 282 -166 279 -167 z', + }, + noteheadTriangleUpBlack: { + x_min: 0, + x_max: 346, + y_min: -149, + y_max: 149, + ha: 298, + o: 'm 481 -215 b 498 -209 487 -215 492 -215 b 482 -173 498 -194 488 -184 l 284 173 b 259 202 278 184 269 194 b 229 215 248 210 238 215 b 196 189 216 215 206 206 l 13 -150 b 3 -168 9 -156 6 -163 b 0 -180 1 -173 0 -177 b 12 -197 0 -187 4 -193 b 63 -213 29 -206 45 -213 b 481 -215 203 -213 343 -215 z', + }, + noteheadSlashedDoubleWhole1: { + x_min: 0, + x_max: 697, + y_min: -290, + y_max: 290, + ha: 580, + o: 'm 20 -418 b 42 -376 40 -418 37 -392 b 43 -356 45 -370 43 -363 l 43 -348 b 50 -197 43 -298 49 -248 b 78 317 58 -24 69 147 b 72 387 75 343 82 366 b 52 418 68 397 69 418 l 49 416 b 24 380 33 413 24 399 b 19 235 23 333 20 284 b 7 -82 14 130 10 24 b 0 -264 6 -143 0 -203 b 10 -382 0 -302 1 -343 b 20 -418 13 -393 6 -418 z m 976 -344 b 991 -331 985 -346 988 -337 b 1004 -271 999 -312 1004 -292 l 1004 -194 b 996 184 1004 -68 1001 59 b 996 281 996 216 998 249 b 984 379 995 314 991 347 b 971 397 981 392 976 396 b 952 386 965 397 959 392 b 943 361 943 380 945 370 b 937 288 939 337 937 312 b 945 158 937 245 942 203 b 959 -248 950 23 953 -112 b 966 -325 960 -274 963 -300 b 976 -344 966 -334 968 -344 z m 102 -331 b 124 -272 120 -314 122 -294 b 135 -278 127 -276 131 -278 l 141 -278 b 320 -199 206 -262 272 -252 b 348 -171 328 -189 338 -180 b 482 -199 392 -190 436 -199 b 704 -173 576 -199 641 -187 b 847 -82 760 -158 809 -130 l 855 -69 l 855 -73 b 863 -229 857 -125 860 -177 b 876 -255 863 -239 863 -255 b 893 -233 886 -255 888 -242 b 900 -189 899 -219 900 -203 l 900 66 b 900 192 899 108 900 150 b 893 301 900 228 899 265 b 877 325 890 310 893 325 l 876 325 b 855 301 865 324 855 315 b 850 202 852 268 847 235 b 854 50 854 151 854 101 b 821 99 847 68 835 85 b 733 167 795 127 765 148 b 831 253 766 196 799 225 b 851 265 837 258 844 261 b 829 282 840 275 835 279 b 772 295 815 291 795 295 b 685 271 739 295 704 287 b 624 215 665 252 645 233 l 566 232 b 527 239 553 236 540 239 b 490 228 514 239 501 236 b 451 219 475 217 467 219 b 275 176 389 219 331 200 b 184 53 216 150 184 105 b 199 -14 184 32 189 10 b 262 -108 215 -52 236 -82 l 125 -230 b 134 225 130 -78 132 73 b 135 269 134 239 135 255 b 121 330 135 291 132 311 b 95 287 99 323 95 307 b 92 124 94 233 95 179 b 85 -143 88 36 85 -53 b 89 -300 85 -196 86 -248 b 102 -331 89 -311 89 -323 z m 367 -14 b 350 43 359 3 351 22 b 392 122 350 82 363 107 b 544 171 439 150 492 160 b 572 168 554 174 563 171 z m 564 -132 b 467 -105 528 -138 497 -121 b 442 -89 458 -101 449 -95 l 658 101 b 690 30 677 82 690 59 b 688 10 690 24 690 17 b 564 -132 678 -45 611 -127 z', + }, + noteheadSlashedWhole1: { + x_min: -76, + x_max: 498, + y_min: -168, + y_max: 168, + ha: 336, + o: 'm -79 -242 b 55 -202 -32 -236 14 -228 l 145 -143 b 333 -171 203 -166 265 -171 b 429 -164 361 -174 395 -168 b 582 -130 481 -158 534 -154 b 657 -20 631 -105 657 -65 b 619 68 657 9 644 40 b 552 120 599 89 577 107 b 582 138 562 127 572 132 b 717 226 625 167 668 194 b 638 242 688 236 662 242 b 543 213 603 242 573 232 b 455 154 514 194 484 174 b 325 199 412 167 367 179 b 233 215 298 210 265 215 b 75 156 173 215 124 186 b 0 27 24 122 0 76 b 66 -98 0 -17 22 -63 b 72 -102 69 -99 71 -101 b -89 -209 17 -137 -36 -173 b -109 -225 -95 -213 -109 -216 b -108 -229 -109 -226 -108 -228 b -85 -242 -104 -239 -95 -242 z m 181 -29 b 167 14 171 -13 167 1 b 187 62 167 30 173 46 b 301 137 217 99 258 118 b 312 138 304 138 308 138 l 317 138 b 389 109 340 125 364 118 l 383 105 z m 337 -109 b 239 -82 301 -107 268 -99 l 468 65 b 482 24 477 53 482 40 b 480 4 482 19 481 12 b 337 -109 467 -56 399 -111 z', + }, + noteheadSlashedHalf1: { + x_min: -79.3435119522494, + x_max: 471, + y_min: -184, + y_max: 184, + ha: 368, + o: 'm -112 -251 b -94 -265 -107 -261 -101 -264 b -52 -242 -79 -265 -63 -249 l 89 -148 b 212 -180 125 -170 167 -179 b 238 -177 220 -180 229 -179 l 262 -180 b 346 -171 289 -180 318 -176 b 576 -91 431 -166 507 -140 b 641 4 619 -60 641 -29 b 592 96 641 35 625 65 l 583 104 b 533 147 567 121 550 134 l 613 200 b 678 261 636 216 664 232 b 658 265 671 264 664 265 b 611 248 641 265 625 258 l 491 171 b 337 204 444 194 392 204 b 281 200 318 204 300 204 b 27 62 180 187 92 145 b -1 -19 9 37 -1 10 b 36 -107 -1 -50 12 -82 b 52 -121 42 -112 46 -117 l -72 -203 b -112 -251 -91 -216 -122 -233 z m 161 -49 b 158 -29 160 -42 158 -35 b 183 33 158 -7 167 16 b 395 137 239 95 311 122 b 420 125 405 134 413 130 z m 276 -128 b 261 -131 271 -130 266 -131 b 181 -86 233 -131 203 -114 l 454 94 l 468 72 b 481 36 477 60 481 49 b 469 1 481 26 477 14 b 276 -128 422 -66 354 -105 z', + }, + noteheadSlashedBlack1: { + x_min: -110, + x_max: 452, + y_min: -190, + y_max: 190, + ha: 380, + o: 'm -131 -274 b -102 -262 -121 -272 -111 -266 b 7 -186 -65 -239 -29 -212 b 50 -157 22 -176 36 -166 b 105 -176 65 -166 84 -173 b 207 -183 140 -181 173 -183 b 239 -184 219 -184 229 -184 b 428 -91 327 -184 377 -150 b 487 43 461 -52 487 -7 b 482 76 487 53 485 65 b 459 128 478 95 469 112 b 507 161 475 138 491 150 l 651 262 b 622 274 641 271 632 274 b 605 271 616 274 611 272 b 514 233 573 262 541 252 l 422 167 b 317 203 392 190 354 203 b 271 196 301 203 285 200 b 168 157 236 186 200 173 b 6 -16 94 120 33 68 b -1 -62 1 -32 -1 -48 b 17 -125 -1 -86 4 -108 b -81 -196 -16 -148 -48 -173 b -145 -242 -102 -212 -128 -219 b -158 -256 -150 -246 -158 -251 b -157 -261 -158 -258 -157 -259 b -131 -274 -153 -269 -141 -274 z', + }, + noteheadSlashedDoubleWhole2: { + x_min: -0.12386605641055257, + x_max: 697.4733477320805, + y_min: -295, + y_max: 295, + ha: 590, + o: 'm 870 -338 b 891 -315 884 -341 887 -325 b 906 -183 907 -274 903 -228 b 914 186 912 -60 904 62 b 914 240 914 203 916 222 b 916 276 913 251 916 265 b 899 300 916 289 913 300 b 871 253 874 300 871 274 b 858 -168 871 111 858 -27 b 860 -235 858 -190 860 -213 l 736 -131 b 834 -20 799 -111 834 -69 b 789 85 834 13 819 49 b 683 160 760 118 723 140 b 383 216 589 209 487 215 b 330 213 364 217 347 216 b 228 300 295 242 261 271 b 86 347 184 337 138 348 b 58 343 76 347 63 350 l 58 360 b 35 425 58 384 53 423 b 6 382 9 425 6 403 l 6 131 b 0 -164 6 33 4 -66 b 24 -327 -1 -216 6 -271 b 50 -262 46 -305 50 -284 l 50 -154 b 52 -45 50 -118 50 -81 b 58 325 55 79 58 202 b 73 310 60 320 68 315 b 94 294 79 304 86 298 b 89 271 89 287 89 278 l 89 94 b 104 -194 101 -20 88 -108 b 118 -245 107 -213 104 -248 b 140 -190 140 -243 140 -212 l 140 -62 b 132 258 140 46 138 153 l 132 259 l 235 173 b 193 132 219 161 204 148 b 153 26 167 101 153 63 b 164 -35 153 7 157 -16 b 341 -170 196 -114 261 -158 b 433 -177 372 -174 403 -177 b 619 -157 497 -177 559 -170 l 706 -230 b 799 -276 736 -258 765 -276 b 818 -274 806 -276 812 -276 l 861 -274 b 863 -312 861 -287 863 -300 b 870 -338 864 -321 858 -337 z m 966 -425 b 986 -397 979 -425 982 -408 b 991 -373 989 -390 989 -382 b 995 -239 991 -328 995 -284 b 1004 334 1001 -49 1002 143 b 995 380 1005 350 1005 367 b 982 402 989 386 992 402 l 978 400 b 949 374 965 396 950 390 b 948 333 948 360 948 346 l 948 -37 b 949 -84 949 -52 949 -68 b 946 -248 949 -132 946 -189 b 953 -396 946 -297 948 -346 b 966 -425 955 -408 950 -425 z m 624 -36 b 416 140 554 22 485 81 b 482 156 439 150 461 154 b 625 81 537 156 588 124 b 647 27 639 63 647 46 b 624 -36 647 7 638 -14 z m 469 -117 b 320 14 386 -118 320 -60 b 343 81 320 37 327 60 l 547 -95 b 469 -117 521 -105 494 -111 z', + }, + noteheadSlashedWhole2: { + x_min: -83, + x_max: 510, + y_min: -201, + y_max: 198, + ha: 399, + o: 'm 734 -289 b 696 -245 726 -266 710 -256 b 586 -164 660 -217 622 -192 l 589 -161 b 654 -50 631 -135 654 -94 b 616 40 654 -19 641 13 b 305 174 536 127 420 174 b 171 151 261 174 215 167 b 166 150 170 151 168 150 b 86 209 140 170 112 189 b -94 284 32 249 -22 289 l -108 285 b -120 274 -114 285 -120 284 b -104 251 -120 266 -112 258 b 71 124 -46 209 12 166 l 85 114 b 36 72 66 102 50 89 b 0 -30 12 40 0 4 b 122 -186 0 -96 45 -160 b 343 -222 194 -210 268 -222 b 514 -197 410 -220 467 -213 l 554 -228 b 734 -289 609 -268 668 -275 z m 477 -82 b 268 73 408 -30 338 22 l 301 91 b 336 101 314 96 324 101 b 370 88 347 101 359 96 b 459 9 405 66 436 43 b 481 -56 474 -13 481 -35 b 477 -82 481 -65 480 -73 z m 310 -161 b 216 -143 276 -161 246 -156 b 166 -72 181 -128 166 -105 b 168 -46 166 -65 167 -55 b 206 26 176 -16 189 7 b 436 -140 282 -29 360 -84 b 382 -158 420 -150 402 -157 b 310 -161 357 -161 333 -161 z', + }, + noteheadSlashedHalf2: { + x_min: -73, + x_max: 454, + y_min: -188, + y_max: 188, + ha: 376, + o: 'm 654 -271 b 603 -202 649 -233 625 -217 b 481 -115 563 -173 523 -144 b 564 -60 510 -101 539 -82 b 615 40 596 -33 615 4 b 609 69 615 50 613 60 b 505 167 590 120 554 151 b 336 190 451 184 392 190 b 124 134 259 190 189 171 l -42 248 b -88 271 -56 256 -75 271 b -101 265 -94 271 -98 269 b -105 252 -104 259 -105 255 b -66 210 -105 235 -82 222 l 85 107 b 0 -24 42 73 0 35 b 183 -183 0 -118 75 -184 b 262 -176 206 -180 233 -177 b 438 -135 324 -171 383 -158 b 570 -228 482 -166 527 -197 b 654 -271 595 -243 621 -259 z m 393 -53 l 311 4 l 225 65 b 392 134 274 102 331 122 b 455 50 425 141 455 101 b 439 -3 455 35 451 14 b 393 -53 425 -22 409 -37 z m 287 -121 b 246 -130 272 -127 259 -130 b 171 -89 215 -130 189 -115 b 156 -40 161 -73 156 -58 b 186 29 156 -17 166 7 l 192 35 l 359 -82 b 287 -121 337 -98 312 -111 z', + }, + noteheadSlashedBlack2: { + x_min: -84, + x_max: 405, + y_min: -189, + y_max: 189, + ha: 378, + o: 'm 557 -265 b 573 -272 562 -268 567 -272 b 583 -261 577 -272 580 -269 b 575 -242 580 -253 579 -248 b 524 -190 563 -220 544 -204 b 405 -99 485 -160 445 -130 b 497 50 449 -60 482 -9 b 500 72 498 58 500 65 b 478 122 500 91 492 107 b 331 186 438 167 387 186 b 120 131 258 186 186 167 l 107 124 b -52 242 53 163 1 203 b -89 265 -63 251 -76 259 b -107 272 -95 268 -101 272 b -117 266 -109 272 -114 271 b -121 251 -120 262 -121 256 b -114 235 -121 245 -120 239 b -60 186 -96 217 -81 199 b 63 95 -20 156 22 125 b -1 -35 26 66 -1 27 b 137 -183 -1 -130 46 -183 b 174 -180 148 -183 161 -181 l 245 -171 b 366 -128 289 -166 331 -150 l 426 -171 b 557 -265 469 -203 514 -233 z', + }, + noteheadDiamondDoubleWhole: { + x_min: 0, + x_max: 429, + y_min: -221, + y_max: 221, + ha: 442, + o: 'm 22 -318 b 42 -294 33 -318 37 -302 b 46 -266 45 -285 45 -275 b 50 -219 49 -249 50 -233 b 48 -153 50 -197 49 -176 b 43 120 43 -62 43 29 l 43 253 b 37 298 43 269 45 284 b 26 318 35 305 35 318 l 24 318 b 1 295 13 317 3 308 b 0 268 0 285 0 276 l 0 -121 b 10 -291 0 -177 1 -235 b 22 -318 12 -301 10 -318 z m 593 -312 b 618 -256 611 -294 616 -276 l 618 -186 b 611 253 618 -40 612 108 b 605 276 611 261 608 268 b 589 295 600 284 600 297 b 567 272 577 294 569 285 l 567 251 b 575 -197 573 102 575 -48 b 593 -312 575 -233 579 -271 z m 99 -268 b 114 -256 107 -269 111 -262 b 127 -196 124 -238 125 -217 b 128 -144 128 -179 128 -161 b 122 -9 128 -99 125 -55 l 135 -19 b 344 -179 206 -71 276 -122 b 370 -190 354 -186 363 -190 b 395 -173 379 -190 386 -184 b 492 -33 426 -127 459 -79 b 491 -86 491 -50 491 -68 b 507 -251 491 -138 495 -193 b 534 -184 530 -228 533 -206 b 541 144 537 -75 539 35 b 530 204 541 164 539 186 b 520 220 528 210 528 220 b 500 203 511 219 503 213 b 498 192 498 200 498 194 l 498 176 b 494 7 497 120 497 63 l 490 12 l 287 176 b 258 190 279 181 274 190 b 212 153 239 186 225 168 l 127 40 b 121 32 124 37 122 35 b 118 114 120 59 118 86 b 102 249 117 158 122 206 b 75 219 85 246 79 236 b 72 187 72 209 72 197 b 76 117 72 164 75 141 b 85 -151 79 27 79 -62 b 91 -251 86 -184 91 -217 b 99 -268 91 -258 92 -266 z m 392 -128 b 374 -122 387 -134 380 -127 l 180 29 b 170 45 173 35 170 39 b 176 56 170 48 173 52 b 236 122 204 101 219 122 b 308 76 252 122 272 107 l 433 -26 b 449 -50 439 -32 449 -36 b 392 -128 432 -75 413 -102 z', + }, + noteheadDiamondWhole: { + x_min: 0, + x_max: 271, + y_min: -132, + y_max: 132, + ha: 264, + o: 'm 230 -177 b 256 -190 240 -186 249 -190 b 281 -173 265 -190 272 -184 b 382 -29 314 -124 347 -76 b 390 -10 387 -22 390 -14 b 376 12 390 -3 386 4 b 173 177 308 66 240 121 b 144 190 166 183 160 190 b 98 153 127 186 112 170 b 13 40 69 115 42 76 b 0 13 4 29 0 20 b 22 -19 0 3 7 -9 b 230 -177 92 -69 163 -122 z m 279 -128 b 261 -122 274 -134 266 -127 l 66 30 b 56 45 59 35 56 39 b 62 56 56 48 59 52 b 122 122 91 101 105 122 b 194 76 138 122 158 107 l 320 -26 b 336 -50 325 -32 336 -35 b 279 -128 318 -75 300 -102 z', + }, + noteheadDiamondHalf: { + x_min: 0, + x_max: 295, + y_min: -148, + y_max: 148, + ha: 296, + o: 'm 228 -207 b 245 -213 235 -210 240 -213 b 264 -203 252 -213 258 -210 b 415 -46 314 -150 364 -98 b 425 -27 420 -40 425 -35 b 416 -10 425 -22 422 -16 b 217 200 350 60 284 131 b 194 213 212 207 204 213 b 170 196 181 213 177 203 b 14 33 118 143 68 86 b 0 7 4 23 0 16 b 17 -20 0 -1 6 -10 b 118 -114 52 -50 82 -85 b 228 -207 156 -144 184 -184 z m 209 -157 b 134 -69 177 -138 141 -115 b 130 -26 131 -55 130 -40 b 215 148 130 42 160 99 b 225 156 217 151 220 156 b 230 153 226 156 228 156 b 323 -26 276 104 321 55 b 298 -75 324 -42 315 -59 b 265 -109 287 -86 276 -99 b 209 -157 245 -125 228 -167 z', + }, + noteheadDiamondBlack: { + x_min: 0, + x_max: 310, + y_min: -146, + y_max: 146, + ha: 292, + o: 'm 266 -210 b 289 -194 278 -209 284 -200 b 406 -76 330 -156 367 -115 b 446 -23 433 -49 446 -36 b 412 29 446 -10 435 3 b 405 36 409 30 408 33 b 252 196 354 89 304 143 b 225 210 243 204 235 210 b 204 202 219 210 212 209 b 10 24 141 141 75 82 b 0 9 4 19 0 14 b 9 -6 0 4 3 0 l 232 -192 b 266 -210 242 -200 256 -204 z', + }, + noteheadParenthesis: { + x_min: -70.190112022022, + x_max: 329, + y_min: -196, + y_max: 201, + ha: 397, + o: 'm 344 -279 b 382 -262 361 -288 370 -272 b 405 -233 390 -255 399 -245 b 474 9 455 -158 468 -73 b 416 228 474 78 448 174 b 364 282 403 249 387 271 b 344 289 359 285 350 288 b 331 279 338 289 333 287 b 325 248 328 269 325 258 b 338 225 325 238 328 229 b 412 138 379 207 396 174 b 445 1 433 92 445 45 b 346 -217 445 -81 410 -154 b 336 -252 340 -223 336 -238 b 344 -279 336 -265 338 -276 z m 19 -274 b 35 -282 24 -279 30 -281 b 49 -265 42 -282 46 -275 b 52 -243 50 -256 52 -249 b 36 -210 52 -230 49 -220 b -60 -59 -16 -173 -35 -114 b -73 9 -69 -39 -73 -16 b 33 223 -73 92 -24 189 b 50 265 43 229 50 249 b 33 288 50 278 46 289 b 4 272 23 288 14 275 b -9 261 0 269 -4 265 b -101 23 -58 193 -105 124 b -37 -206 -104 -52 -75 -130 b 19 -274 -23 -232 -6 -255 z', + }, + noteheadParenthesisRight: { + x_min: -30, + x_max: 82, + y_min: -199.08429092881173, + y_max: 206, + ha: 405.0842909288117, + o: 'm -17 -282 b 24 -264 -6 -297 12 -272 b 60 -219 40 -253 52 -236 b 117 1 96 -150 112 -75 b 118 16 118 6 118 12 b 109 73 118 36 112 55 b 4 279 99 154 68 226 b -23 297 -4 287 -13 297 b -37 289 -27 297 -32 294 b -43 266 -42 285 -43 276 b -32 225 -43 251 -37 229 b 84 -7 48 170 84 82 b 32 -184 84 -69 65 -132 b -10 -222 22 -200 4 -209 b -24 -258 -20 -232 -24 -245 b -17 -282 -24 -266 -22 -276 z', + }, + noteheadParenthesisLeft: { + x_min: 0, + x_max: 106, + y_min: -197, + y_max: 197, + ha: 394, + o: 'm 134 -284 b 138 -281 135 -284 137 -284 b 145 -268 144 -278 145 -274 l 144 -253 b 107 -180 138 -225 121 -204 b 42 13 71 -120 42 -56 b 49 73 42 32 43 52 b 137 210 62 128 95 171 b 153 255 147 219 153 239 b 145 278 153 265 151 274 b 130 284 140 281 135 284 b 98 259 117 284 108 268 b 0 37 35 203 1 131 b 118 -268 9 -69 53 -173 b 134 -284 121 -274 127 -284 z', + }, + noteheadMoonBlack: { + x_min: 0, + x_max: 328, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 353 -160 b 465 -40 412 -140 451 -102 b 472 30 471 -17 472 6 b 469 124 472 60 469 92 b 406 179 469 170 459 177 l 128 179 b 37 180 98 179 68 179 b 0 141 7 180 0 170 b 3 -20 3 88 3 33 b 69 -134 3 -72 26 -109 b 240 -180 125 -164 181 -180 b 353 -160 278 -180 315 -174 z', + }, + noteheadTriangleLeftBlack: { + x_min: 0, + x_max: 391.1554175279994, + y_min: -142, + y_max: 142, + ha: 284, + o: 'm 138 -204 b 318 -197 197 -199 258 -197 l 431 -197 b 544 -192 469 -196 507 -193 b 563 -184 552 -190 560 -193 b 553 -167 564 -177 559 -171 l 540 -157 b 232 60 436 -85 334 -12 l 50 190 b 20 204 42 197 32 204 b 10 202 17 204 14 204 b 0 184 1 197 0 192 b 1 164 0 177 1 170 b 6 -150 3 59 6 -45 b 39 -193 7 -176 17 -186 b 138 -204 72 -204 105 -204 z', + }, + noteheadTriangleRightBlack: { + x_min: -0.3332953162522517, + x_max: 398, + y_min: -139, + y_max: 140, + ha: 279, + o: 'm 543 -200 b 573 -176 566 -200 573 -194 l 573 -168 b 554 141 566 -66 560 37 b 520 197 553 167 546 187 b 495 202 511 200 504 202 b 454 184 481 202 467 196 l 35 -137 b 0 -171 22 -147 -4 -154 b 52 -199 6 -193 33 -193 b 69 -199 58 -200 63 -199 z', + }, + noteheadTriangleRoundDownBlack: { + x_min: 0, + x_max: 334, + y_min: -133.78604087938328, + y_max: 136, + ha: 269.7860408793833, + o: 'm 252 -192 b 285 -176 269 -196 276 -187 b 468 52 346 -99 406 -23 b 481 79 477 62 481 71 b 465 104 481 88 475 95 b 441 124 456 109 449 117 b 249 196 380 174 314 194 b 13 104 157 196 69 154 b 0 86 6 98 0 92 b 7 69 0 82 3 76 b 202 -164 73 -7 137 -85 b 252 -192 216 -181 235 -186 z', + }, + augmentationDot: { + x_min: 0, + x_max: 96, + y_min: -57, + y_max: 57, + ha: 114, + o: 'm 13 -82 b 16 -81 14 -82 14 -82 b 105 -73 46 -76 75 -76 b 131 -48 121 -72 131 -60 b 138 26 134 -24 138 0 b 137 48 138 33 138 40 b 108 82 134 71 125 82 b 95 81 104 82 99 82 b 33 71 75 78 53 75 b 4 46 20 68 6 62 b 0 -66 1 9 0 -29 b 13 -82 0 -73 1 -82 z', + }, + tremolo1: { + x_min: -158, + x_max: 156.19381479578487, + y_min: -88, + y_max: 88, + ha: 176, + o: 'm -206 -127 b -194 -125 -203 -127 -199 -127 b 173 -36 -72 -94 50 -65 b 220 16 202 -29 215 -12 b 225 50 223 30 225 45 b 216 107 226 76 222 91 b 194 127 210 120 204 127 b 183 124 192 127 189 127 l -192 33 b -226 -9 -213 27 -222 14 b -228 -32 -226 -16 -228 -23 b -222 -108 -228 -58 -222 -82 b -206 -127 -222 -120 -217 -127 z', + }, + flag8thUp: { + x_min: 0, + x_max: 261, + y_min: -819, + y_max: 0, + ha: 819, + o: 'm 265 -1171 b 351 -1035 301 -1130 336 -1087 b 376 -867 369 -979 376 -923 b 367 -755 376 -829 373 -792 b 233 -422 350 -632 311 -520 b 131 -291 199 -379 166 -334 b 65 -125 91 -239 66 -192 b 62 -75 65 -112 62 -91 b 42 0 62 -49 52 -24 l 35 0 b 0 -63 6 -13 0 -36 l 0 -144 b 96 -445 0 -255 29 -356 b 177 -547 124 -478 150 -514 b 308 -831 246 -629 298 -721 b 317 -890 310 -851 317 -871 b 311 -919 317 -900 315 -910 b 256 -1005 297 -950 282 -984 b 228 -1068 233 -1024 228 -1045 b 230 -1106 228 -1080 229 -1093 b 240 -1162 232 -1125 239 -1143 b 251 -1179 242 -1174 246 -1179 b 265 -1171 255 -1179 259 -1176 z', + }, + flag8thDown: { + x_min: 0, + x_max: 261, + y_min: 0, + y_max: 819, + ha: 819, + o: 'm 265 1171 b 251 1179 259 1176 255 1179 b 240 1162 246 1179 242 1174 b 230 1106 239 1143 232 1125 b 228 1068 229 1093 228 1080 b 256 1005 228 1045 233 1024 b 311 919 282 984 297 950 b 317 890 315 910 317 900 b 308 831 317 871 310 851 b 177 547 298 721 246 629 b 96 445 150 514 124 478 b 0 144 29 356 0 255 l 0 63 b 35 0 0 36 6 13 l 42 0 b 62 75 52 24 62 49 b 59 117 62 91 59 104 b 131 291 60 183 91 239 b 233 422 166 334 199 379 b 367 755 311 520 350 632 b 376 867 373 792 376 829 b 351 1035 376 923 369 979 b 265 1171 336 1087 301 1130 z', + }, + flag16thUp: { + x_min: 0, + x_max: 327.1591498636094, + y_min: -819.3972596310256, + y_max: 0, + ha: 819.3972596310256, + o: 'm 415 -1179 b 435 -1168 423 -1182 429 -1174 b 451 -1138 442 -1159 446 -1149 b 465 -1020 464 -1102 467 -1064 b 461 -962 464 -1004 464 -984 b 471 -821 467 -916 472 -870 b 465 -721 472 -791 467 -756 b 415 -520 459 -651 441 -585 b 200 -245 370 -408 284 -327 b 96 -114 160 -206 118 -168 b 75 -24 84 -85 85 -53 b 59 0 72 -16 72 0 b 53 -1 58 0 56 -1 b 27 -32 40 -6 27 -10 b 29 -68 27 -43 29 -55 b 10 -79 20 -69 13 -72 b 1 -109 6 -89 1 -99 b 0 -170 0 -130 0 -148 b 35 -410 0 -252 12 -333 b 258 -793 76 -557 156 -681 b 409 -1158 350 -896 410 -1014 b 415 -1179 409 -1165 405 -1175 z m 413 -816 b 331 -681 392 -769 364 -723 b 145 -420 266 -596 189 -521 b 86 -281 125 -374 102 -330 b 156 -370 105 -312 128 -343 b 318 -539 210 -425 269 -478 b 413 -816 383 -621 420 -713 z', + }, + flag16thDown: { + x_min: 0, + x_max: 327.1591498636094, + y_min: 0, + y_max: 819, + ha: 819, + o: 'm 59 0 b 75 24 72 0 72 16 b 96 114 85 53 84 85 b 200 245 118 168 160 206 b 415 520 284 327 370 408 b 465 721 441 585 459 651 b 471 821 467 756 472 791 b 461 962 472 870 467 916 b 465 1020 464 984 464 1004 b 451 1138 467 1064 464 1102 b 435 1168 446 1149 442 1159 b 418 1179 431 1172 425 1179 l 415 1179 b 408 1169 409 1176 408 1174 b 409 1158 408 1165 409 1161 b 258 793 410 1014 350 896 b 35 410 156 681 76 557 b 0 170 12 333 0 252 l 0 88 b 29 7 0 71 6 23 b 59 0 33 4 58 0 z m 86 281 b 145 420 102 330 125 374 b 331 681 189 521 266 596 b 413 816 364 723 392 769 b 415 791 413 808 415 799 b 318 539 415 698 377 613 b 156 370 269 478 210 425 b 86 281 128 343 105 312 z', + }, + flag32ndUp: { + x_min: -0.19862981551275186, + x_max: 268.0942440943661, + y_min: -849.4710740978672, + y_max: 149.0769891455102, + ha: 998.5480632433774, + o: 'm 323 -1223 b 351 -1198 337 -1227 344 -1210 b 359 -1184 354 -1194 356 -1188 b 386 -999 377 -1122 387 -1060 b 341 -783 386 -927 372 -855 b 330 -736 334 -769 330 -753 b 333 -708 330 -727 330 -717 b 344 -621 340 -678 344 -649 b 341 -579 344 -608 343 -593 b 328 -500 338 -553 328 -526 b 331 -475 328 -491 328 -484 b 347 -370 343 -438 348 -402 b 151 27 348 -212 288 -56 b 53 176 98 59 50 102 b 45 197 53 183 48 192 b 33 215 40 203 40 216 l 30 215 b 6 194 22 212 9 209 b 0 120 3 170 -1 145 b 0 -43 4 65 0 13 b 0 -98 0 -60 1 -79 b 4 -276 0 -157 6 -216 b 7 -456 4 -337 7 -397 b 66 -638 7 -523 22 -585 b 158 -724 94 -671 127 -697 b 318 -1011 246 -801 295 -899 b 321 -1044 321 -1021 321 -1032 b 312 -1152 321 -1080 312 -1116 b 317 -1192 312 -1165 314 -1179 b 323 -1223 320 -1202 311 -1220 z m 285 -376 b 121 -180 249 -289 173 -245 b 91 -105 104 -158 92 -135 b 288 -354 181 -144 288 -269 b 285 -376 288 -363 287 -370 z m 275 -657 b 111 -492 226 -589 163 -547 b 65 -376 78 -456 66 -418 b 71 -323 65 -360 68 -341 b 275 -657 164 -418 265 -504 z', + }, + flag32ndDown: { + x_min: -2.800802874905624, + x_max: 268.09424409436605, + y_min: -169.07698914551014, + y_max: 829.4710740978672, + ha: 998.5480632433773, + o: 'm 323 1194 b 317 1164 311 1191 320 1174 b 312 1123 314 1151 312 1136 b 321 1015 312 1087 321 1051 b 318 982 321 1004 321 992 b 158 696 295 870 246 772 b 66 609 127 668 94 642 b 7 428 22 556 7 494 b 4 248 7 369 4 308 b -1 78 6 187 -10 137 b 0 14 0 59 0 32 l 0 -148 b 6 -223 0 -174 3 -199 b 30 -243 9 -238 22 -240 l 33 -243 b 45 -226 40 -245 40 -232 b 53 -204 48 -220 53 -212 b 151 -56 50 -131 98 -88 b 347 341 288 27 348 183 b 331 446 348 373 343 409 b 328 471 328 455 328 462 b 341 550 328 497 338 524 b 344 592 343 564 344 579 b 333 680 344 621 340 649 b 330 707 330 688 330 698 b 341 755 330 724 334 740 b 386 971 372 827 386 899 b 359 1155 387 1031 377 1093 b 351 1169 356 1159 354 1165 b 323 1194 344 1181 337 1198 z m 275 628 b 71 294 265 475 164 389 b 65 347 68 312 65 331 b 111 464 66 389 78 428 b 275 628 163 518 226 560 z m 285 347 b 288 325 287 341 288 334 b 91 76 288 240 181 115 b 121 151 92 107 104 130 b 285 347 173 216 249 261 z', + }, + flag64thUp: { + x_min: -4, + x_max: 282, + y_min: -823.5430338167067, + y_max: 347, + ha: 1170.5430338167066, + o: 'm 350 -1185 b 380 -1162 364 -1189 374 -1175 b 406 -1022 399 -1119 406 -1071 b 359 -798 406 -945 384 -871 b 348 -756 353 -785 348 -772 b 350 -744 348 -753 350 -749 b 363 -621 356 -704 363 -664 b 360 -580 363 -608 363 -593 b 359 -560 359 -573 359 -567 b 373 -490 359 -536 366 -513 b 393 -346 386 -444 393 -395 b 387 -269 393 -320 390 -294 b 348 -127 382 -219 348 -173 b 351 -104 348 -120 348 -111 b 353 -65 351 -91 353 -78 b 341 37 353 -26 348 6 b 226 215 323 108 278 164 b 86 336 181 258 127 288 b 62 395 72 353 62 370 b 42 481 62 423 55 454 b 27 500 37 488 36 500 b 24 498 26 500 26 500 b -1 480 14 497 1 492 b -6 444 -4 467 -6 455 l -6 435 b -1 341 -1 403 -1 372 l -1 266 b 6 156 -1 230 0 193 b 13 35 12 117 13 75 l 13 -35 b 14 -85 13 -52 14 -68 b 29 -276 19 -150 33 -213 b 20 -448 24 -334 20 -392 b 24 -534 20 -477 22 -505 b 114 -708 30 -605 59 -664 b 197 -780 143 -732 171 -755 b 344 -1153 301 -884 341 -1011 b 343 -1172 344 -1159 343 -1166 b 350 -1185 343 -1176 344 -1182 z m 287 -88 b 62 193 186 -17 79 48 b 229 52 121 144 174 98 b 289 -33 256 29 274 -3 b 295 -56 294 -42 295 -49 b 287 -88 295 -66 292 -76 z m 298 -410 b 118 -235 238 -351 176 -295 b 76 -88 82 -197 78 -147 b 268 -252 137 -153 203 -202 b 330 -360 304 -279 330 -315 b 323 -402 330 -373 327 -387 b 311 -418 318 -413 315 -418 b 298 -410 307 -418 302 -415 z m 300 -691 b 117 -508 243 -616 168 -575 b 82 -408 94 -480 82 -448 b 84 -379 82 -397 82 -387 b 259 -553 135 -451 206 -492 b 301 -667 287 -583 301 -619 b 300 -691 301 -674 301 -683 z', + }, + flag64thDown: { + x_min: -5, + x_max: 281, + y_min: -375, + y_max: 795.5430338167066, + ha: 1170.5430338167066, + o: 'm 348 1145 b 341 1132 343 1142 341 1136 b 343 1113 341 1126 343 1119 b 196 740 340 971 300 844 b 112 668 170 714 141 691 b 23 494 58 624 29 564 b 19 408 20 465 19 436 b 27 236 19 351 23 294 b 13 45 32 173 17 109 b 12 -6 13 27 12 12 l 12 -75 b 4 -196 12 -115 10 -157 b -3 -307 -1 -233 -3 -271 l -3 -382 b -7 -475 -3 -412 -3 -444 l -7 -484 b -3 -520 -7 -495 -6 -507 b 23 -539 0 -533 13 -537 b 26 -540 24 -540 24 -540 b 40 -521 35 -540 36 -528 b 60 -435 53 -494 60 -464 b 85 -376 60 -410 71 -393 b 225 -255 125 -328 180 -298 b 340 -78 276 -204 321 -148 b 351 24 347 -46 351 -14 b 350 63 351 37 350 50 b 347 86 347 71 347 79 b 386 229 347 132 380 179 b 392 305 389 253 392 279 b 372 449 392 354 384 403 b 357 520 364 472 357 495 b 359 540 357 527 357 533 b 361 580 361 553 361 567 b 348 704 361 624 354 664 b 347 716 348 708 347 713 b 357 757 347 732 351 744 b 405 982 383 831 405 904 b 379 1122 405 1031 397 1079 b 348 1145 373 1135 363 1149 z m 298 651 b 300 626 300 642 300 634 b 258 513 300 579 285 543 b 82 338 204 452 134 410 b 81 367 81 347 81 357 b 115 468 81 408 92 439 b 298 651 167 534 242 576 z m 297 370 b 310 377 301 374 305 377 b 321 361 314 377 317 373 b 328 320 325 347 328 333 b 266 212 328 275 302 239 b 75 48 202 161 135 112 b 117 194 76 107 81 157 b 297 370 174 255 236 311 z m 285 48 b 294 16 291 36 294 26 b 288 -7 294 9 292 1 b 228 -92 272 -37 255 -69 b 60 -233 173 -138 120 -184 b 285 48 78 -88 184 -23 z', + }, + flag128thUp: { + x_min: 0, + x_max: 252, + y_min: -804, + y_max: 530, + ha: 1334, + o: 'm 298 -1158 b 328 -1126 312 -1158 320 -1139 b 330 -1116 330 -1123 330 -1119 b 347 -996 343 -1076 347 -1037 b 328 -837 347 -943 338 -890 b 320 -778 324 -816 320 -798 b 330 -733 320 -763 323 -749 b 340 -665 338 -714 337 -688 b 341 -645 340 -660 341 -652 b 333 -534 341 -609 333 -572 b 343 -471 333 -513 334 -492 b 361 -366 356 -436 361 -402 b 331 -202 361 -311 348 -256 b 328 -187 330 -197 328 -193 b 331 -179 328 -184 328 -181 b 363 -55 353 -137 363 -96 b 337 79 363 -12 351 33 b 327 114 333 92 327 104 b 344 144 327 124 331 132 b 359 174 353 150 357 163 b 361 228 360 193 361 210 b 243 517 361 337 325 435 b 147 596 213 546 179 569 b 75 708 111 626 75 655 b 62 744 75 723 68 733 b 50 763 58 752 58 763 b 46 762 49 763 48 762 b 17 742 36 757 22 757 b 0 697 14 726 0 711 b 1 595 0 662 3 631 b 0 469 0 552 0 511 b 1 429 0 456 0 442 b 22 289 6 382 22 337 b 24 128 22 238 24 184 b 22 66 24 108 23 86 b 19 -19 20 37 19 10 b 20 -132 19 -56 20 -95 b 13 -276 20 -180 19 -229 b 9 -359 10 -304 9 -330 b 12 -487 9 -402 12 -445 b 56 -582 12 -526 29 -554 b 197 -742 107 -632 160 -681 b 288 -1100 265 -851 276 -976 b 288 -1122 288 -1107 287 -1115 b 287 -1145 289 -1129 287 -1138 b 298 -1158 287 -1153 288 -1158 z m 304 150 b 75 475 229 256 112 334 b 304 150 233 357 305 287 z m 271 -73 b 127 72 233 -14 179 26 b 81 167 96 98 81 127 b 84 194 81 176 82 184 b 271 -73 148 102 242 39 z m 279 -396 b 132 -223 233 -330 180 -279 b 81 -112 104 -192 81 -156 b 82 -91 81 -105 81 -98 b 279 -396 167 -125 269 -281 z m 249 -609 b 69 -357 197 -520 88 -471 b 249 -609 131 -441 229 -498 z', + }, + flag128thDown: { + x_min: -0.8888888888888888, + x_max: 252, + y_min: -580, + y_max: 754, + ha: 1334, + o: 'm 298 1086 b 287 1073 288 1086 287 1081 b 288 1050 287 1066 289 1057 b 288 1028 287 1043 288 1035 b 197 670 276 904 265 779 b 56 510 160 609 107 560 b 12 415 29 482 12 454 b 9 287 12 373 9 330 b 13 204 9 258 10 232 b 20 60 19 157 20 108 b 19 -53 20 23 19 -16 b 22 -138 19 -82 20 -109 b 24 -200 23 -158 24 -180 b 22 -361 24 -256 22 -310 b 1 -501 22 -409 6 -454 b 0 -541 0 -514 0 -528 b 0 -667 0 -583 -3 -624 b 0 -809 0 -675 -3 -791 b 46 -834 4 -825 36 -829 b 50 -835 48 -834 49 -835 b 62 -816 58 -835 58 -824 b 75 -780 68 -805 75 -795 b 147 -668 75 -727 111 -698 b 243 -589 179 -641 213 -618 b 361 -300 325 -507 361 -409 b 359 -246 361 -282 360 -265 b 344 -216 357 -235 353 -222 b 327 -186 331 -204 327 -196 b 337 -151 327 -176 333 -164 b 363 -17 351 -105 363 -60 b 331 107 363 24 353 65 b 328 115 328 109 328 112 b 331 130 328 121 330 125 b 361 294 348 184 361 239 b 343 399 361 330 356 364 b 333 462 334 420 333 441 b 341 573 333 500 341 537 b 340 593 341 580 340 588 b 330 661 337 616 338 642 b 320 706 323 677 320 691 b 328 765 320 726 324 744 b 347 924 338 818 347 871 b 330 1044 347 965 343 1004 b 328 1054 330 1047 330 1051 b 298 1086 320 1067 312 1086 z m 249 537 b 69 285 229 426 131 369 b 249 537 88 399 197 448 z m 279 324 b 82 19 269 209 167 53 b 81 40 81 26 81 33 b 132 151 81 84 104 120 b 279 324 180 207 233 258 z m 271 1 b 84 -266 242 -111 148 -174 b 81 -239 82 -256 81 -248 b 127 -144 81 -199 96 -170 b 271 1 179 -98 233 -58 z m 304 -222 b 75 -547 305 -359 233 -429 b 304 -222 112 -406 229 -328 z', + }, + accidentalFlat: { + x_min: 1, + x_max: 209, + y_min: -208, + y_max: 472, + ha: 680, + o: 'm 29 -300 b 46 -289 33 -300 39 -297 b 107 -243 65 -274 86 -258 b 301 127 233 -153 301 -30 b 298 186 301 147 301 166 b 190 297 291 256 251 297 b 147 289 177 297 163 294 b 86 265 127 284 107 274 l 85 264 l 85 301 b 91 465 85 356 88 410 b 94 559 91 497 94 527 b 84 651 94 589 91 621 b 66 680 81 661 81 680 l 65 680 b 37 645 49 678 37 665 b 33 523 36 605 32 563 l 33 478 b 26 223 33 393 29 308 b 1 -141 22 101 1 -19 b 17 -287 1 -189 4 -239 b 29 -300 20 -295 23 -300 z m 68 -105 b 76 12 71 -68 72 -29 b 81 107 79 43 81 75 l 86 109 b 171 135 114 121 141 135 b 204 128 181 135 193 132 b 238 92 228 120 239 108 b 230 63 238 84 236 75 b 68 -105 193 -10 132 -59 z', + }, + accidentalNatural: { + x_min: 0, + x_max: 213.5, + y_min: -456, + y_max: 462, + ha: 918, + o: 'm 255 -657 b 281 -624 271 -657 275 -636 b 285 -599 282 -615 285 -608 b 292 -300 288 -500 289 -400 b 289 -161 292 -253 289 -207 b 300 128 292 -65 297 32 b 304 168 300 128 302 150 l 304 173 l 305 190 l 305 199 l 307 225 b 304 259 307 229 310 246 b 272 298 297 274 302 305 b 63 266 204 279 134 272 b 72 514 68 348 72 432 b 71 595 72 541 72 567 b 56 665 71 619 66 642 b 17 579 9 651 17 608 b 3 144 19 433 7 289 b 0 -7 1 94 0 43 b 3 -134 0 -50 1 -92 b 7 -219 3 -163 7 -192 b 35 -251 7 -243 17 -251 b 49 -249 39 -251 43 -251 l 223 -223 l 230 -222 l 230 -359 b 223 -516 230 -410 223 -464 b 236 -619 223 -550 226 -585 b 255 -657 240 -634 236 -657 z m 58 -63 b 55 81 56 -14 53 33 l 56 99 b 85 99 65 99 75 98 b 232 108 134 104 183 107 l 240 109 l 236 66 b 232 -48 235 29 232 -10 b 58 -81 174 -63 115 -73 z', + }, + accidentalSharp: { + x_min: -22, + x_max: 390, + y_min: -384, + y_max: 383, + ha: 767, + o: 'm 202 -553 b 219 -526 213 -552 216 -536 b 226 -471 225 -507 226 -488 b 225 -425 226 -455 225 -441 b 226 -392 225 -415 225 -402 b 233 -305 229 -363 232 -334 l 297 -292 b 331 -469 300 -353 311 -412 b 347 -485 333 -477 338 -485 b 363 -469 356 -487 359 -477 b 374 -418 373 -454 374 -435 b 376 -382 376 -405 376 -393 b 372 -276 376 -347 373 -311 l 455 -259 b 550 -156 534 -243 544 -232 b 550 -109 550 -137 552 -124 b 526 -78 549 -91 541 -78 l 523 -78 b 507 -79 517 -78 513 -78 b 403 -101 474 -88 438 -95 l 379 -105 b 382 -42 380 -85 380 -63 b 384 96 383 4 384 50 b 503 131 425 107 464 118 b 549 173 524 138 543 150 b 562 249 554 199 562 223 b 554 294 562 264 560 279 b 536 315 549 308 544 315 l 533 315 b 517 312 528 315 523 315 b 382 266 472 294 428 279 l 377 344 b 359 531 374 406 372 469 b 348 552 356 539 357 552 l 347 552 l 343 552 b 315 528 331 549 317 544 l 315 501 b 320 249 315 416 318 333 l 243 232 b 239 361 243 275 242 318 b 226 425 238 383 238 403 b 199 359 194 409 199 382 b 193 223 196 312 194 268 b 72 202 153 215 112 209 b 4 118 13 192 4 183 b 10 66 0 102 12 84 b 33 29 7 39 14 30 b 48 32 37 29 42 30 b 187 55 95 39 141 46 l 183 -75 b 176 -145 181 -99 179 -122 b 16 -179 122 -156 69 -166 b -32 -232 -14 -186 -32 -197 b -17 -331 -32 -266 -19 -298 b -1 -356 -17 -347 -13 -354 b 12 -353 1 -356 6 -354 b 167 -320 63 -341 115 -331 b 166 -377 166 -338 166 -357 b 189 -526 166 -428 171 -477 b 202 -553 192 -536 189 -553 z m 240 -132 b 243 -37 242 -101 242 -69 b 245 65 245 -3 245 30 b 315 79 269 69 292 73 b 301 -120 308 13 305 -53 z', + }, + accidentalDoubleSharp: { + x_min: 0, + x_max: 287, + y_min: -159, + y_max: 159, + ha: 318, + o: 'm 84 -229 b 107 -216 91 -229 98 -225 b 200 -125 138 -186 167 -154 b 232 -95 212 -115 222 -105 b 347 -189 271 -125 310 -157 b 370 -200 356 -196 363 -200 b 396 -179 380 -200 389 -192 b 412 -102 410 -154 406 -125 b 377 -27 410 -69 400 -46 l 325 14 b 402 91 350 42 374 68 b 413 127 410 96 413 107 b 382 200 409 148 397 176 b 350 229 370 220 360 229 b 314 210 340 229 328 223 b 274 174 300 199 285 187 b 212 104 252 151 232 128 b 92 187 173 132 132 161 b 78 193 86 192 82 193 b 68 190 75 193 72 193 b 48 179 62 186 53 187 b 40 137 43 168 40 154 b 81 16 40 92 56 32 b 107 -3 89 10 98 4 b 14 -94 76 -32 45 -62 b 0 -124 6 -102 0 -114 b 12 -154 0 -134 3 -144 b 62 -215 26 -176 48 -193 b 84 -229 69 -225 76 -229 z', + }, + accidentalDoubleFlat: { + x_min: 0, + x_max: 359, + y_min: -220, + y_max: 446, + ha: 666, + o: 'm 43 -317 b 72 -301 55 -317 63 -310 b 160 -186 108 -268 134 -226 b 236 -60 186 -145 212 -102 b 233 -131 235 -85 233 -108 b 239 -220 233 -161 235 -190 b 259 -246 240 -233 239 -240 b 301 -228 284 -252 291 -238 b 465 -7 369 -163 416 -85 b 517 173 500 48 517 108 b 451 307 517 229 505 284 b 409 315 436 312 422 315 b 331 287 382 315 356 305 b 311 274 324 282 320 274 l 310 274 l 310 566 b 305 621 310 585 312 603 b 294 642 301 628 305 642 l 292 642 b 264 622 282 641 266 636 b 253 575 259 606 256 590 b 246 418 248 523 246 471 b 248 243 246 360 248 302 l 248 187 b 164 238 220 225 193 238 b 85 213 140 238 112 226 b 84 229 85 220 84 225 b 86 315 85 258 86 287 b 81 528 86 386 82 458 b 71 582 81 547 78 566 b 56 603 66 590 68 603 l 53 603 b 23 580 40 600 26 598 b 19 537 20 566 19 552 b 20 514 19 530 19 521 b 26 390 24 472 26 432 b 14 66 26 282 16 174 b 0 -168 13 -12 0 -91 b 12 -279 0 -206 3 -242 b 30 -314 16 -294 14 -308 b 43 -317 35 -317 39 -317 z m 301 -72 b 302 7 302 -45 302 -19 l 302 86 b 351 158 304 121 321 145 b 383 166 361 163 373 166 b 435 143 402 166 419 157 b 445 127 441 138 445 132 b 441 114 445 122 444 118 b 301 -72 397 49 354 -14 z m 75 -147 b 73 30 75 -86 75 -29 b 118 82 73 62 92 76 b 132 84 124 84 128 84 b 190 52 156 84 174 69 b 193 40 192 49 193 45 b 192 33 193 37 193 35 b 75 -147 157 -30 125 -95 z', + }, + accidentalParensLeft: { + x_min: 0, + x_max: 130.18934911242604, + y_min: -270, + y_max: 267.6082500723851, + ha: 537.6082500723851, + o: 'm 107 -389 b 127 -374 114 -389 120 -384 b 141 -347 132 -367 137 -357 b 151 -294 148 -330 151 -311 b 122 -207 151 -265 141 -236 b 63 -65 94 -164 72 -117 b 59 -10 60 -46 59 -27 b 145 223 59 78 94 153 b 187 354 176 262 189 305 b 177 384 187 364 190 380 b 143 373 166 387 153 383 b 124 354 137 367 130 361 b 0 -35 33 240 0 108 l 0 -92 b 85 -372 4 -193 27 -287 b 107 -389 92 -383 99 -389 z', + }, + accidentalParensRight: { + x_min: -0.4444444444444445, + x_max: 139, + y_min: -275, + y_max: 277, + ha: 552, + o: 'm 58 -396 b 96 -354 75 -396 85 -370 b 200 13 168 -238 200 -111 b 153 268 200 109 184 190 b 49 392 131 320 101 364 b 26 399 40 397 33 399 b 0 366 10 399 0 387 b 0 318 -1 350 0 334 l 0 291 b 27 238 -3 266 7 253 b 143 9 105 180 143 98 b 141 -20 143 -1 143 -10 b 63 -225 135 -92 108 -164 b 36 -307 45 -251 36 -278 b 40 -344 36 -320 37 -331 b 42 -356 42 -347 42 -351 b 58 -396 42 -374 37 -396 z', + }, + accidentalQuarterToneFlatStein: { + x_min: 0, + x_max: 208, + y_min: -240, + y_max: 440, + ha: 680, + o: 'm 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z', + }, + accidentalThreeQuarterTonesFlatZimmermann: { + x_min: 0, + x_max: 422, + y_min: -240, + y_max: 440, + ha: 680, + o: 'm 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 336 -346 b 353 -336 340 -346 346 -343 b 413 -289 372 -320 393 -304 b 608 81 540 -199 608 -76 b 605 140 608 101 608 120 b 497 251 598 210 557 251 b 454 243 484 251 469 248 b 393 219 433 238 413 228 l 392 217 l 392 255 b 397 419 392 310 395 364 b 400 513 397 451 400 481 b 390 605 400 543 397 575 b 373 634 387 615 387 634 l 372 634 b 344 599 356 632 344 619 b 340 477 343 559 338 517 l 340 432 b 333 177 340 347 336 262 b 308 -187 328 55 308 -65 b 324 -333 308 -235 311 -285 b 336 -346 327 -341 330 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z m 374 -151 b 383 -35 377 -114 379 -75 b 387 60 386 -3 387 29 l 393 63 b 478 89 420 75 448 89 b 511 82 488 89 500 86 b 544 46 534 73 546 62 b 537 17 544 37 543 29 b 374 -151 500 -56 439 -105 z', + }, + accidentalQuarterToneSharpStein: { + x_min: 0, + x_max: 300, + y_min: -338, + y_max: 351, + ha: 689, + o: 'm 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 l 35 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z', + }, + accidentalThreeQuarterTonesSharpStein: { + x_min: -23, + x_max: 388, + y_min: -373, + y_max: 445, + ha: 818, + o: 'm 114 -537 b 138 -475 137 -518 138 -495 b 147 -292 138 -413 144 -353 b 212 -278 168 -287 190 -282 b 243 -444 215 -333 225 -389 b 261 -467 248 -454 251 -465 b 281 -446 272 -469 276 -455 b 292 -347 292 -416 288 -384 b 288 -262 289 -320 288 -291 l 374 -245 b 376 -311 374 -266 374 -288 b 390 -456 379 -357 379 -405 b 416 -396 412 -436 415 -418 b 423 -287 420 -360 423 -323 b 422 -235 423 -269 423 -252 b 451 -229 432 -233 441 -232 b 547 -98 524 -215 547 -199 l 547 -89 b 521 -49 546 -59 540 -49 b 497 -52 516 -49 507 -49 b 418 -68 469 -56 444 -63 b 423 52 419 -29 422 12 b 426 140 425 81 425 109 b 495 160 449 145 472 153 b 552 219 526 170 546 189 b 559 279 557 240 553 262 b 530 341 559 324 552 341 b 490 331 520 341 507 338 b 432 311 471 324 452 318 b 449 552 436 392 442 471 b 452 588 451 563 452 575 b 446 622 452 599 451 611 b 436 641 444 629 448 641 b 418 628 428 641 420 636 b 409 602 413 621 410 611 b 386 297 396 501 390 399 b 297 274 356 288 327 281 b 291 403 295 317 294 360 b 274 550 288 452 284 501 b 259 569 271 564 265 569 b 240 559 253 569 248 563 b 230 537 232 554 230 546 l 230 488 b 233 369 230 448 232 409 b 236 261 236 333 238 297 b 156 245 210 255 183 251 b 154 396 154 295 154 346 b 150 416 154 403 153 410 b 140 438 145 423 150 438 l 138 438 b 118 413 128 436 118 428 b 112 354 118 393 114 374 b 109 238 109 315 109 276 b 49 226 89 233 69 230 b 3 163 16 222 3 202 b 7 91 3 138 9 114 b 29 62 7 69 13 62 b 39 63 32 62 35 63 b 104 73 60 66 82 71 b 101 -10 104 46 102 17 l 92 -132 l 10 -150 b -33 -204 -19 -157 -33 -170 b -19 -310 -32 -240 -19 -274 b -6 -324 -19 -321 -13 -324 b 6 -323 -1 -324 1 -324 b 82 -307 32 -317 58 -311 b 81 -376 82 -330 81 -353 b 114 -537 81 -431 94 -484 z m 294 -92 b 297 -37 295 -73 295 -56 b 300 49 300 -9 300 20 l 300 108 b 379 127 325 114 353 120 b 374 -76 376 59 374 -9 b 294 -92 347 -82 320 -86 z m 154 -120 b 157 20 154 -73 156 -26 b 158 82 158 40 158 62 b 230 95 183 86 206 89 b 225 0 229 63 226 32 b 217 -107 223 -35 220 -71 z', + }, + accidentalBuyukMucennebFlat: { + x_min: 1.8692317181955784, + x_max: 287, + y_min: -248, + y_max: 432.4720949426819, + ha: 680.4720949426819, + o: 'm 410 128 b 302 239 403 199 363 239 b 259 232 289 239 275 236 b 199 207 239 226 219 216 l 197 206 l 197 243 l 197 251 b 347 317 248 272 298 295 b 376 347 360 324 372 334 b 389 435 387 376 393 405 b 348 454 384 462 377 465 b 202 387 300 432 251 409 b 203 408 203 395 203 402 l 203 431 b 347 490 252 451 300 469 b 376 517 360 495 372 505 b 389 599 387 546 393 572 b 348 616 384 625 377 628 l 203 556 b 196 593 202 569 199 582 b 179 622 193 603 193 622 l 177 622 b 150 588 161 621 150 608 b 147 533 150 570 148 552 b 29 488 108 517 69 503 b 3 455 12 482 3 472 b 12 353 1 422 9 389 b 145 408 56 372 101 389 b 145 363 145 392 145 377 l 29 315 b 3 281 12 310 3 298 b 12 170 1 245 9 209 l 141 226 b 138 166 140 206 138 186 b 114 -199 134 43 115 -76 b 130 -344 114 -246 117 -297 b 141 -357 132 -353 135 -357 b 158 -347 145 -357 151 -354 b 219 -301 177 -331 199 -315 b 413 69 346 -210 413 -88 b 410 128 413 89 413 108 z m 350 35 b 343 6 350 26 348 17 b 180 -163 308 -69 245 -117 b 189 -46 183 -125 184 -86 b 193 49 192 -14 193 17 l 199 52 b 284 78 226 63 253 78 b 317 71 294 78 305 75 b 350 35 340 62 351 50 z', + }, + accidentalBakiyeFlat: { + x_min: 1.8692317181955784, + x_max: 287, + y_min: -236, + y_max: 444, + ha: 680, + o: 'm 141 -340 b 158 -330 145 -340 151 -337 b 219 -284 177 -314 199 -298 b 413 86 346 -193 413 -71 b 410 145 413 107 413 125 b 302 256 403 216 363 256 b 259 249 289 256 275 253 b 199 225 239 243 219 233 l 197 223 l 197 261 b 199 334 197 285 199 310 b 347 406 249 357 298 382 b 376 439 360 413 372 425 b 390 516 384 465 390 490 b 389 537 390 523 390 530 b 372 564 384 556 382 564 b 348 557 367 564 359 562 b 204 487 300 537 253 510 b 206 518 206 497 206 507 b 196 611 206 549 203 580 b 179 639 193 621 193 639 l 177 639 b 150 605 161 638 150 625 b 145 482 148 564 144 523 l 145 458 b 29 405 107 439 68 420 b 3 366 12 397 3 386 b 12 243 1 325 9 287 b 143 307 56 265 99 285 l 138 183 b 114 -181 134 60 114 -59 b 130 -327 114 -229 117 -279 b 141 -340 132 -336 135 -340 z m 180 -145 b 189 -29 183 -108 184 -69 b 193 66 192 3 193 35 l 199 69 b 284 95 226 81 253 95 b 317 88 294 95 305 92 b 350 52 340 79 351 68 b 343 23 350 43 348 35 b 180 -145 305 -50 245 -99 z', + }, + accidentalKomaSharp: { + x_min: 0, + x_max: 300, + y_min: -338, + y_max: 351, + ha: 689, + o: 'm 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 l 35 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z', + }, + accidentalKucukMucennebSharp: { + x_min: -0.15206251809627475, + x_max: 359, + y_min: -420, + y_max: 343, + ha: 763, + o: 'm 236 -605 b 262 -543 256 -583 261 -564 b 269 -423 268 -503 269 -464 b 266 -340 269 -396 268 -367 l 361 -318 b 405 -276 384 -312 399 -298 b 413 -189 412 -248 416 -219 b 395 -164 412 -171 409 -164 b 382 -166 392 -164 387 -164 b 264 -193 343 -176 304 -184 b 269 -102 265 -163 268 -132 b 454 -62 331 -89 392 -78 b 501 -23 477 -58 494 -45 b 517 62 511 6 517 33 b 487 112 517 95 513 112 b 471 111 482 112 477 112 b 274 66 406 95 340 81 b 276 138 275 91 276 114 b 350 154 301 144 325 148 b 402 203 377 160 396 176 b 412 284 408 230 412 258 b 392 311 412 302 406 311 b 372 308 386 311 379 310 b 287 291 343 301 314 297 l 295 405 b 298 441 297 416 298 428 b 292 475 298 452 297 464 b 282 494 289 482 294 494 b 264 481 274 494 266 490 b 255 455 259 474 256 464 b 239 282 248 397 243 340 b 148 268 209 278 179 274 b 62 164 62 252 62 253 l 62 132 b 79 108 60 117 65 108 l 86 108 l 230 130 b 229 92 230 118 229 105 b 228 56 228 79 228 68 b 66 20 173 43 120 32 b 0 -59 6 7 3 1 l 0 -138 b 14 -160 -1 -156 4 -160 b 27 -158 19 -160 23 -160 b 222 -112 92 -141 157 -127 b 220 -203 220 -143 220 -173 b 147 -217 196 -207 171 -213 b 89 -288 92 -228 89 -229 b 95 -347 85 -305 96 -325 b 112 -374 92 -366 98 -374 b 125 -373 117 -374 121 -374 l 220 -351 b 222 -458 220 -386 220 -422 b 236 -605 223 -504 225 -552 z', + }, + accidentalKoron: { + x_min: 0, + x_max: 303, + y_min: -462.4598053473055, + y_max: 180, + ha: 642.4598053473055, + o: 'm 59 -665 b 72 -649 69 -662 72 -657 b 69 -626 72 -642 69 -634 b 69 -622 69 -625 69 -624 l 69 -600 b 55 -156 60 -456 68 -311 b 86 -170 66 -166 76 -170 b 112 -163 95 -170 104 -166 b 390 -35 204 -120 298 -78 b 436 -1 409 -27 436 -27 b 396 46 436 22 413 33 l 382 55 b 46 243 271 121 157 179 b 12 259 29 253 17 259 b 0 219 1 259 0 248 b 3 -372 0 22 3 -176 b 6 -616 3 -454 6 -536 b 59 -665 6 -638 40 -671 z m 55 199 b 363 24 156 141 258 84 b 55 -118 259 -24 160 -69 z', + }, + accidentalSori: { + x_min: 0, + x_max: 434, + y_min: -295, + y_max: 325, + ha: 620, + o: 'm 194 -425 b 196 -409 194 -418 196 -413 b 194 -194 196 -337 196 -266 b 364 -127 251 -171 308 -150 b 361 -321 363 -192 364 -256 b 410 -387 360 -357 373 -377 b 413 -373 412 -382 413 -377 b 418 -114 418 -287 418 -200 l 418 -105 b 595 -35 477 -82 536 -59 b 625 0 612 -27 625 -22 b 593 48 624 23 618 39 l 419 117 b 423 370 419 202 423 285 b 426 403 423 382 426 393 b 418 436 426 415 425 426 b 384 468 409 449 399 468 b 369 448 370 468 369 459 b 369 436 369 444 369 441 l 369 428 l 369 423 b 367 138 369 328 367 233 l 353 143 l 192 207 l 192 367 b 173 406 192 383 184 396 b 151 422 167 413 160 422 b 144 420 148 422 147 422 b 137 403 138 416 137 410 l 137 392 l 137 229 b 33 271 102 243 68 256 b 13 276 26 274 19 276 b 0 262 6 276 0 272 b 35 199 1 239 0 212 l 138 160 b 140 -148 138 58 138 -45 b 56 -181 111 -158 84 -170 b 24 -215 35 -189 24 -199 b 29 -235 24 -220 26 -228 b 49 -253 35 -249 42 -253 b 78 -240 59 -253 69 -243 b 140 -216 98 -233 120 -225 l 140 -356 b 194 -425 140 -406 141 -406 z m 194 -125 b 193 138 194 -37 193 50 b 315 89 233 122 275 107 b 366 71 333 84 350 76 b 364 -58 366 27 366 -16 b 194 -125 308 -81 251 -104 z m 419 49 l 526 7 l 485 -10 l 419 -36 z', + }, + articAccentAbove: { + x_min: 0, + x_max: 425, + y_min: 0, + y_max: 326, + ha: 326, + o: 'm 27 1 b 78 12 46 0 62 6 b 347 112 168 45 253 91 b 521 184 409 128 459 167 b 608 259 557 194 589 220 b 612 274 611 265 612 271 b 598 292 612 281 608 287 b 477 347 559 312 518 331 b 176 465 374 384 275 425 b 156 469 168 468 161 469 b 125 456 145 469 137 465 b 53 370 96 432 78 399 b 45 353 48 363 45 357 b 68 333 45 344 52 337 b 360 225 166 298 262 261 b 192 154 302 203 249 171 b 13 36 120 132 53 105 b 0 13 9 29 0 22 l 0 9 b 16 0 3 1 10 0 l 26 0 b 27 1 27 0 27 0 z', + }, + articAccentBelow: { + x_min: 0, + x_max: 425, + y_min: -326, + y_max: 0, + ha: 326, + o: 'm 26 -469 l 27 -469 b 78 -458 46 -469 62 -464 b 347 -357 168 -426 253 -380 b 521 -285 409 -341 459 -302 b 608 -210 557 -276 589 -249 b 612 -196 611 -204 612 -200 b 598 -179 612 -189 608 -183 b 477 -122 559 -157 518 -138 b 176 -4 374 -85 275 -45 b 156 0 168 -1 161 0 b 125 -13 145 0 137 -4 b 53 -99 96 -37 78 -71 b 45 -117 48 -107 45 -112 b 68 -137 45 -125 52 -132 b 360 -245 166 -171 262 -209 b 192 -315 302 -266 249 -300 b 13 -433 120 -337 53 -366 b 0 -456 9 -442 0 -448 l 0 -461 b 16 -469 3 -468 10 -469 z', + }, + articTenutoAbove: { + x_min: 0.35192668236256364, + x_max: 471.1238660564107, + y_min: 0, + y_max: 56, + ha: 56, + o: 'm 137 0 b 197 1 156 0 179 1 b 409 6 268 1 338 6 b 482 4 432 6 459 6 b 556 0 508 3 534 0 b 651 10 588 0 621 3 b 678 27 662 12 678 10 b 654 59 680 45 672 53 b 511 75 606 73 560 73 b 255 81 426 78 341 81 b 160 79 222 81 193 79 l 36 79 b 1 71 24 78 7 85 b 19 32 -3 56 9 43 b 45 16 26 24 36 20 b 137 0 76 3 108 0 z', + }, + articTenutoBelow: { + x_min: 0.35192668236256364, + x_max: 471.1238660564107, + y_min: -59, + y_max: -3, + ha: 56, + o: 'm 137 -85 b 197 -84 156 -85 179 -84 b 409 -79 268 -84 338 -79 b 482 -81 432 -79 459 -79 b 556 -85 508 -82 534 -85 b 651 -75 588 -85 621 -82 b 678 -58 662 -73 678 -75 b 654 -26 680 -40 672 -32 b 511 -10 606 -12 560 -12 b 255 -4 426 -7 341 -4 b 160 -6 222 -4 193 -6 l 36 -6 b 1 -14 24 -7 7 0 b 19 -53 -3 -29 9 -42 b 45 -69 26 -60 36 -65 b 137 -85 76 -82 108 -85 z', + }, + articStaccatoAbove: { + x_min: 1.4151102965496913, + x_max: 112, + y_min: 0, + y_max: 156, + ha: 156, + o: 'm 98 0 b 132 23 109 0 122 7 b 161 112 150 50 161 79 b 158 148 161 124 161 137 b 125 186 154 167 131 167 b 63 225 117 215 85 216 b 23 197 45 222 30 219 b 3 91 12 163 12 127 b 19 66 0 79 4 69 b 65 27 40 62 53 46 b 98 0 76 9 88 0 z', + }, + articStaccatoBelow: { + x_min: 1.4151102965496913, + x_max: 112.08403222864916, + y_min: -156, + y_max: 0, + ha: 156, + o: 'm 132 -202 b 161 -112 151 -174 163 -145 b 158 -76 161 -101 161 -88 b 125 -39 153 -58 131 -58 b 63 0 115 -10 85 -9 b 23 -27 45 -3 30 -6 b 3 -134 12 -62 10 -98 b 19 -158 0 -145 4 -156 b 65 -197 40 -164 53 -179 b 98 -225 75 -216 88 -225 b 132 -202 109 -225 122 -217 z', + }, + articStaccatissimoAbove: { + x_min: 0, + x_max: 139, + y_min: 0, + y_max: 411, + ha: 411, + o: 'm 104 0 b 144 115 143 29 138 75 b 197 423 158 217 180 320 b 200 454 199 433 200 444 b 181 540 200 482 193 513 b 112 592 167 573 141 592 b 55 567 92 592 72 585 b 0 490 32 546 3 527 l 0 484 b 27 279 14 416 14 347 b 84 20 43 193 52 104 b 96 0 86 13 92 6 z', + }, + articStaccatissimoBelow: { + x_min: 0, + x_max: 139, + y_min: -411, + y_max: 0, + ha: 411, + o: 'm 88 -592 b 145 -567 108 -592 128 -585 b 200 -490 168 -546 197 -527 l 200 -484 b 173 -279 186 -416 186 -347 b 117 -20 157 -193 148 -104 b 104 0 114 -13 108 -6 l 96 0 b 56 -115 58 -29 62 -75 b 3 -423 42 -217 20 -320 b 0 -454 1 -433 0 -444 b 19 -540 0 -482 7 -513 b 88 -592 33 -573 59 -592 z', + }, + articMarcatoAbove: { + x_min: 0.04121419527862119, + x_max: 396, + y_min: 0, + y_max: 328.0000000000001, + ha: 328.0000000000001, + o: 'm 477 0 b 510 13 488 0 500 6 b 570 124 546 40 563 81 b 547 183 570 147 560 166 b 356 422 487 265 405 330 b 346 442 354 429 350 436 l 346 444 b 318 465 340 456 330 464 l 312 469 b 274 449 294 480 284 461 b 242 413 262 438 253 425 b 56 196 177 343 112 274 b 1 56 26 154 13 105 b 27 20 -4 35 9 20 b 42 23 32 20 37 20 b 84 53 59 29 72 39 b 255 269 141 125 193 200 b 275 229 262 255 266 242 b 448 14 324 151 390 86 b 477 0 456 4 467 0 z', + }, + articMarcatoBelow: { + x_min: 0, + x_max: 395.9587858047214, + y_min: -328.0000000000001, + y_max: 0, + ha: 328.0000000000001, + o: 'm 258 -469 b 297 -449 276 -480 287 -461 b 328 -413 308 -438 317 -425 b 514 -196 393 -343 458 -274 b 569 -56 544 -154 557 -105 b 543 -20 575 -35 562 -20 b 528 -23 539 -20 533 -20 b 487 -53 511 -29 498 -39 b 315 -269 429 -125 377 -200 b 295 -229 308 -255 304 -242 b 122 -14 246 -151 180 -86 b 94 0 114 -4 104 0 b 60 -13 82 0 71 -6 b 0 -124 24 -40 7 -81 b 23 -183 0 -147 10 -166 b 215 -422 84 -265 166 -330 b 225 -442 216 -429 220 -436 l 225 -444 b 252 -465 230 -456 240 -464 z', + }, + fermataAbove: { + x_min: -0.04550444040404433, + x_max: 472, + y_min: 2.015071727506986, + y_max: 454, + ha: 451.984928272493, + o: 'm 39 10 b 78 108 66 37 71 73 b 163 311 92 181 111 252 b 284 423 199 353 239 392 b 373 458 312 444 340 454 b 433 431 395 458 410 446 b 603 153 530 361 596 276 b 595 121 603 144 595 131 l 595 88 b 602 50 596 75 589 55 b 639 73 619 43 631 60 b 651 102 645 82 648 92 b 667 194 660 132 662 163 b 680 278 671 222 672 248 b 560 567 680 386 638 481 b 396 654 508 625 452 649 b 291 632 364 654 325 644 b 161 526 235 613 200 566 b 4 249 85 446 26 357 b 4 174 0 222 -3 196 b 10 19 4 124 4 69 b 29 4 12 6 16 0 b 39 10 35 4 33 4 z m 338 37 b 370 40 350 36 357 36 b 380 75 387 40 380 43 b 389 94 382 79 382 85 b 356 132 389 111 374 122 b 269 154 328 147 300 156 b 225 125 252 154 228 157 b 261 48 222 81 232 56 b 338 37 287 40 312 40 z', + }, + fermataBelow: { + x_min: -0.310835055998654, + x_max: 518.570567335755, + y_min: -430, + y_max: -0.9161449836506543, + ha: 429.08385501634933, + o: 'm 344 -615 b 500 -543 402 -602 452 -576 b 713 -253 605 -471 661 -364 b 746 -98 737 -204 750 -153 b 727 -59 744 -82 744 -59 b 688 -88 711 -59 694 -68 b 678 -109 687 -96 683 -102 b 562 -314 648 -183 611 -252 b 387 -439 516 -373 458 -416 b 328 -449 367 -446 347 -449 b 180 -386 274 -449 225 -423 b 69 -179 111 -330 69 -262 b 75 -121 69 -160 71 -141 b 84 -58 78 -101 84 -79 b 82 -39 84 -52 84 -45 b 68 -1 79 -26 82 -4 b 26 -32 49 0 33 -12 b 20 -52 24 -39 22 -45 b 0 -223 9 -107 -3 -161 b 141 -553 1 -348 27 -468 b 304 -619 192 -590 243 -619 b 344 -615 317 -619 330 -618 z m 415 -190 b 435 -157 429 -192 435 -184 b 308 -27 435 -86 379 -27 b 271 -46 287 -27 272 -35 b 269 -69 269 -55 269 -62 b 364 -183 269 -128 302 -170 z', + }, + fermataLongAbove: { + x_min: 0, + x_max: 591.4911182523068, + y_min: -6, + y_max: 337.10134960318186, + ha: 343.10134960318186, + o: 'm 20 -9 b 36 14 29 -9 35 3 b 49 109 45 45 49 78 b 48 143 49 121 49 131 b 42 312 40 200 45 256 b 63 338 42 331 46 338 b 68 340 65 338 66 338 b 279 333 138 336 209 334 b 760 317 439 330 599 323 b 783 298 775 317 782 315 l 796 161 b 814 17 801 115 802 68 b 851 144 840 45 855 102 b 824 396 842 228 834 312 b 760 468 816 459 812 467 l 55 485 b 1 433 12 487 1 478 l 1 387 b 0 203 1 325 0 264 b 9 17 0 141 3 79 b 20 -9 9 7 6 -9 z m 403 3 b 439 6 413 3 425 4 b 477 42 464 9 474 22 b 478 62 478 49 478 55 l 478 84 b 465 160 478 109 478 135 b 449 173 461 167 459 173 b 354 105 386 179 354 156 b 359 71 354 95 356 84 b 360 65 360 69 360 66 b 403 3 372 14 373 3 z', + }, + fermataLongBelow: { + x_min: 0, + x_max: 602, + y_min: -335, + y_max: 7, + ha: 342, + o: 'm 793 -482 b 851 -444 822 -482 842 -471 b 867 -357 860 -416 867 -387 b 865 -336 867 -350 867 -343 b 851 -189 858 -287 855 -238 b 832 -32 847 -135 840 -84 b 824 -17 832 -26 832 -17 l 822 -17 b 805 -30 816 -19 806 -20 b 798 -88 802 -50 798 -69 b 805 -292 798 -157 801 -225 b 772 -327 806 -318 801 -327 b 360 -324 635 -327 497 -325 b 78 -327 265 -323 171 -327 b 50 -304 59 -327 50 -320 l 50 -297 b 62 -187 55 -261 60 -225 b 71 -60 62 -144 71 -102 b 68 -20 71 -48 71 -33 b 53 10 66 -10 69 10 l 52 10 b 22 -22 37 9 24 -1 b 14 -121 17 -55 16 -89 b 0 -359 10 -200 0 -279 b 6 -452 0 -390 3 -420 b 42 -481 9 -478 20 -481 l 415 -481 l 415 -482 z m 409 -183 b 454 -179 420 -183 435 -181 b 505 -124 487 -176 504 -158 b 505 -89 507 -112 505 -101 b 507 -58 505 -79 507 -68 b 505 -42 507 -52 507 -48 b 485 -10 503 -29 501 -10 b 448 -9 472 -9 461 -9 b 380 -22 425 -9 402 -12 b 363 -46 372 -27 363 -35 l 363 -49 b 364 -114 363 -71 361 -94 b 409 -183 374 -168 377 -183 z', + }, + fermataVeryLongAbove: { + x_min: 0, + x_max: 715, + y_min: -14.096346766617495, + y_max: 437, + ha: 451.0963467666175, + o: 'm 26 -20 b 42 -4 36 -22 39 -12 b 49 53 49 14 49 33 l 49 448 b 69 478 49 467 52 478 l 72 478 b 81 480 75 478 78 478 b 144 477 102 477 122 477 l 207 477 b 943 471 452 477 698 471 b 978 442 966 471 976 467 b 989 99 985 327 985 213 b 999 -19 991 60 995 22 b 1030 62 1028 6 1030 35 b 1021 507 1028 210 1025 359 b 1012 596 1021 537 1017 567 b 976 624 1009 618 998 624 b 507 626 819 624 662 625 b 46 629 353 628 200 629 b 7 590 19 629 7 618 b 0 101 7 428 0 264 b 16 -4 0 65 13 32 b 26 -20 17 -10 22 -19 z m 187 -9 b 207 30 206 -7 204 14 b 207 55 209 37 207 46 b 200 240 210 117 197 179 b 219 262 200 256 203 262 l 223 262 b 456 252 301 258 379 255 l 772 239 b 804 209 792 238 802 235 b 818 69 806 163 809 115 b 834 -4 821 46 816 19 b 857 56 852 13 857 35 b 851 183 857 99 858 141 b 827 360 841 242 841 301 b 786 390 821 383 809 389 b 189 409 588 403 387 402 b 153 377 163 409 153 400 b 173 27 153 259 150 143 b 187 -9 176 13 177 -9 z m 478 3 b 536 10 491 3 510 6 b 582 60 569 14 580 32 l 582 89 l 580 89 b 580 117 580 98 582 107 b 540 171 577 158 572 171 b 521 171 534 171 528 170 b 459 166 500 170 480 168 b 423 132 436 164 423 154 b 428 88 423 118 425 102 b 478 3 438 22 439 4 z', + }, + fermataVeryLongBelow: { + x_min: -0.012345679012345682, + x_max: 686.4443937550029, + y_min: -427, + y_max: 30, + ha: 457, + o: 'm 56 -615 b 282 -612 132 -612 207 -613 b 924 -606 497 -608 710 -606 b 973 -570 953 -606 968 -593 b 988 -455 984 -533 991 -494 b 982 -262 984 -390 982 -327 b 976 -69 982 -197 981 -134 b 976 -14 975 -50 976 -33 b 966 43 976 4 975 23 b 940 20 953 37 943 35 b 933 -76 936 -12 933 -45 b 935 -121 933 -91 933 -107 b 940 -307 940 -183 940 -245 l 940 -435 b 919 -458 940 -451 935 -458 b 894 -459 910 -458 903 -458 b 206 -467 665 -461 435 -467 b 88 -467 167 -467 127 -468 b 45 -425 45 -467 42 -465 b 46 -400 46 -416 46 -408 b 43 -325 46 -376 43 -350 b 42 -59 42 -236 42 -148 b 22 17 42 -32 36 -6 b 0 -27 -1 7 0 -10 b 7 -420 0 -158 7 -289 l 7 -474 b 16 -579 7 -510 7 -544 b 56 -615 22 -603 27 -615 z m 789 -390 b 835 -357 816 -392 829 -380 b 850 -256 844 -324 850 -291 b 848 -230 850 -248 850 -239 b 845 -135 845 -199 845 -167 l 845 -72 b 837 23 845 -40 848 -9 b 809 -27 809 14 809 -7 l 809 -222 b 788 -242 809 -238 805 -242 l 203 -229 b 180 -209 186 -229 180 -223 l 180 -160 b 179 -115 180 -145 180 -131 b 179 -50 177 -94 179 -72 b 163 24 179 -26 176 0 b 137 -6 145 19 140 10 b 134 -39 134 -17 134 -27 b 138 -105 134 -60 137 -82 l 138 -197 b 145 -343 138 -246 138 -294 b 179 -377 148 -364 151 -377 b 789 -390 383 -377 586 -380 z m 480 -164 b 566 -65 549 -164 566 -140 b 527 1 566 -10 564 1 b 436 -71 426 1 436 -9 l 436 -88 l 436 -143 b 454 -163 436 -153 439 -161 b 480 -164 464 -163 472 -164 z', + }, + fermataShortAbove: { + x_min: 0, + x_max: 545, + y_min: -18.08551453529649, + y_max: 348, + ha: 366.0855145352965, + o: 'm 16 -26 b 36 -9 26 -27 30 -16 b 354 340 143 107 249 223 b 369 348 360 346 364 348 b 382 341 373 348 377 346 l 530 199 b 743 0 599 131 672 68 b 753 -7 747 -3 750 -7 b 762 -1 756 -7 759 -6 b 785 84 776 10 785 48 b 768 150 785 112 779 138 l 399 491 b 379 501 392 498 384 501 b 357 488 372 501 364 495 b 27 137 248 370 141 251 b 1 84 12 121 1 105 b 3 69 1 79 1 75 b 0 55 1 65 0 59 b 9 1 0 36 9 20 b 16 -26 10 -7 3 -22 z m 357 24 b 367 27 360 24 363 24 b 431 118 422 42 431 49 b 429 151 431 130 431 141 b 400 193 428 171 429 193 b 333 147 359 193 333 176 b 341 42 333 111 337 78 b 357 24 343 30 346 24 z', + }, + fermataShortBelow: { + x_min: 0, + x_max: 565, + y_min: -335, + y_max: 10, + ha: 345, + o: 'm 386 -482 b 422 -455 395 -482 405 -474 b 732 -117 526 -343 631 -232 b 814 12 765 -79 799 -42 b 752 -22 780 14 768 -7 b 436 -320 645 -120 540 -219 b 419 -328 429 -325 425 -328 b 400 -318 413 -328 408 -325 b 35 0 279 -212 157 -105 b 16 14 29 4 23 14 b 7 12 13 14 10 14 b 0 -3 1 7 0 1 b 7 -23 0 -10 3 -17 b 20 -48 12 -30 14 -39 b 167 -238 60 -117 115 -177 b 351 -455 229 -310 289 -383 b 386 -482 367 -474 377 -482 z m 382 -213 b 406 -207 389 -213 396 -210 b 452 -156 431 -199 446 -180 b 461 -85 456 -132 458 -108 b 448 -32 461 -66 454 -49 b 418 -6 442 -12 431 -6 b 397 -9 410 -6 405 -7 b 348 -50 376 -14 350 -14 b 356 -170 348 -91 354 -130 b 382 -213 357 -199 363 -213 z', + }, + breathMarkComma: { + x_min: 0, + x_max: 148, + y_min: 0, + y_max: 275, + ha: 275, + o: 'm 120 0 b 187 78 156 20 174 48 b 213 209 206 121 213 164 b 206 294 213 238 210 265 b 140 390 200 337 171 367 b 122 396 134 395 128 396 b 68 382 105 396 85 384 b 46 379 60 382 53 382 b 0 328 12 369 0 357 b 1 311 0 323 1 317 b 30 210 4 275 22 243 b 66 167 39 179 46 167 b 94 171 73 167 82 168 b 143 180 109 174 124 180 b 160 179 148 180 154 180 b 120 66 124 145 120 107 b 120 0 120 45 121 23 z', + }, + breathMarkUpbow: { + x_min: 0, + x_max: 254, + y_min: 0, + y_max: 595, + ha: 595, + o: 'm 233 0 b 256 48 251 14 253 30 b 272 183 264 92 265 138 b 311 455 289 274 295 364 b 350 716 327 541 341 628 b 366 815 354 749 366 782 b 359 857 366 829 363 842 b 327 815 334 852 330 832 b 302 674 315 769 310 721 b 248 357 288 567 269 462 b 225 226 240 314 242 268 b 210 251 212 232 213 243 b 69 721 163 408 117 564 b 32 835 58 760 53 801 b 20 851 29 841 27 851 b 14 850 19 851 16 851 b 0 828 6 847 0 838 l 0 825 b 12 765 1 804 7 785 b 194 125 73 552 132 338 b 233 0 206 84 213 42 z', + }, + caesura: { + x_min: 0, + x_max: 565.5831864753837, + y_min: -0.09016994374947417, + y_max: 562.4481112129314, + ha: 562.5382811566809, + o: 'm 0 76 b 49 122 24 92 37 107 b 444 613 180 287 305 455 b 528 770 484 660 518 708 b 531 792 530 778 531 785 b 524 808 531 799 530 805 b 490 792 513 815 498 802 b 390 683 456 756 420 721 b 48 262 275 543 164 400 b 0 76 0 207 7 145 z m 226 1 b 248 13 238 -4 243 7 l 353 137 b 759 638 490 302 632 464 b 814 805 795 688 819 740 b 779 786 796 805 788 796 b 628 609 724 732 678 668 b 310 242 523 485 416 363 b 217 69 265 190 217 140 b 222 30 217 58 219 45 b 222 23 222 29 220 26 b 220 12 222 20 220 16 b 226 1 220 7 222 3 z', + }, + caesuraCurved: { + x_min: 0, + x_max: 386, + y_min: -10, + y_max: 584, + ha: 594, + o: 'm 180 -14 b 246 14 213 -13 230 0 b 347 144 288 52 315 99 b 526 471 420 246 488 350 b 556 671 546 537 556 603 b 543 798 556 713 553 756 b 504 837 537 822 521 828 b 490 841 500 840 494 841 b 472 832 482 841 477 838 b 406 678 436 785 406 737 b 410 638 406 665 408 652 b 425 511 419 595 425 553 b 315 186 425 395 387 287 b 180 -14 271 122 228 58 z m 14 24 b 49 39 29 24 40 32 b 120 114 76 60 99 85 b 216 276 156 166 184 223 b 317 626 281 384 317 501 b 315 664 317 639 317 651 b 301 773 314 701 311 737 b 262 808 295 795 278 808 b 245 799 256 808 249 805 b 170 641 209 750 170 706 b 171 621 170 634 170 628 b 177 511 176 585 177 549 b 114 229 177 415 160 320 b 0 26 79 161 42 95 b 14 24 6 24 10 24 z', + }, + restMaxima: { + x_min: 0, + x_max: 366, + y_min: -255, + y_max: 255, + ha: 510, + o: 'm 397 -367 b 504 -343 436 -367 468 -347 b 518 -318 516 -341 518 -330 b 527 -30 518 -217 527 -117 b 526 33 527 -7 527 13 l 526 301 b 501 350 526 323 520 341 b 428 367 477 361 452 367 b 374 359 410 367 393 364 b 357 333 361 354 357 347 b 356 91 357 252 356 171 l 356 30 b 340 -307 357 -82 346 -194 b 397 -367 337 -354 350 -367 z m 46 -357 b 58 -356 49 -357 53 -357 b 154 -333 91 -351 121 -338 b 173 -305 168 -330 173 -320 l 173 302 b 132 356 173 330 157 348 b 68 364 112 363 89 364 b 3 304 19 363 1 348 l 3 4 l 0 4 b 1 -302 0 -98 0 -200 b 46 -357 1 -331 16 -357 z', + }, + restDoubleWhole: { + x_min: 0, + x_max: 122, + y_min: 0, + y_max: 249, + ha: 249, + o: 'm 43 0 b 58 1 48 0 52 0 b 124 20 81 6 102 17 b 176 96 173 27 176 58 b 173 220 174 138 173 179 b 176 304 173 248 176 276 b 140 353 176 331 163 346 b 95 359 125 356 111 359 b 32 346 73 359 52 354 b 0 315 20 340 0 337 b 1 243 0 291 1 268 l 1 174 l 4 174 l 4 48 b 43 0 4 16 17 0 z', + }, + restWhole: { + x_min: 0.8908513171538642, + x_max: 500, + y_min: -120, + y_max: 14, + ha: 134, + o: 'm 356 -173 l 356 -171 l 642 -171 b 719 -115 680 -171 717 -145 b 720 -82 719 -104 720 -92 b 711 -20 720 -60 719 -40 b 672 17 704 0 694 10 b 649 20 664 20 657 20 b 605 17 634 20 621 17 b 92 19 433 17 262 17 b 29 7 69 20 49 12 b 9 -17 12 4 9 -6 b 10 -43 9 -26 10 -35 b 1 -84 10 -58 3 -72 b 76 -173 0 -147 7 -173 z', + }, + restWholeLegerLine: { + x_min: -196.7269258015421, + x_max: 685, + y_min: -157, + y_max: 29, + ha: 186, + o: 'm 96 -226 b 167 -223 121 -226 144 -225 b 300 -222 207 -222 252 -222 l 444 -222 b 660 -217 520 -222 595 -222 b 746 -131 703 -216 746 -200 b 744 -62 746 -108 747 -85 b 743 -39 743 -53 743 -46 b 789 -14 743 -16 752 -17 b 883 -16 821 -13 851 -16 b 965 -9 910 -16 937 -14 b 986 3 972 -7 986 -10 l 986 6 b 963 35 984 17 982 32 b 887 42 937 39 913 42 b 39 27 605 42 321 33 l -76 27 b -261 20 -138 27 -200 26 b -282 14 -269 20 -279 23 b -271 -7 -287 4 -276 -1 b -209 -27 -253 -23 -230 -24 b -153 -30 -190 -30 -173 -30 b -48 -29 -118 -30 -82 -27 b 6 -32 -22 -29 -6 -27 b 1 -72 3 -43 1 -58 b 4 -167 1 -105 7 -140 b 53 -223 3 -207 14 -217 b 96 -226 68 -226 82 -226 z', + }, + restHalf: { + x_min: 0, + x_max: 518.3998530468286, + y_min: 0, + y_max: 162, + ha: 162, + o: 'm 98 0 l 556 0 b 665 1 592 0 629 0 b 746 82 720 3 743 29 b 736 174 749 114 740 144 b 670 232 729 215 708 232 b 570 229 636 232 603 229 b 356 233 498 229 426 233 l 73 233 b 0 179 19 233 0 220 b 1 154 0 171 0 164 b 6 95 4 135 6 115 b 98 0 3 27 29 0 z', + }, + restHalfLegerLine: { + x_min: -120, + x_max: 448.2056815990121, + y_min: -20, + y_max: 143, + ha: 163, + o: 'm 397 -29 b 482 -23 426 -29 455 -27 b 526 -24 497 -24 511 -24 b 608 -17 554 -24 582 -23 b 645 -1 622 -14 644 -17 b 615 26 648 13 629 20 b 595 32 608 29 602 30 b 526 37 572 35 549 37 b 498 36 517 37 507 37 b 471 35 487 35 478 35 b 445 53 451 35 445 39 b 449 89 445 60 446 73 l 454 117 b 373 206 456 173 428 206 b 324 204 356 206 340 206 b 209 203 287 203 248 203 b 46 193 156 203 101 202 b 16 170 32 190 19 187 b 9 112 13 151 9 131 b 14 78 9 101 10 89 b 19 59 17 71 19 63 b -4 45 19 49 12 45 l -10 45 b -150 33 -58 45 -104 46 b -173 22 -158 32 -173 33 l -173 19 b -151 -13 -170 6 -168 -10 b -117 -17 -140 -16 -128 -17 b 118 -13 -37 -17 39 -13 b 397 -29 213 -13 308 -29 z', + }, + restQuarter: { + x_min: -0.3784452492533808, + x_max: 263, + y_min: -415, + y_max: 415, + ha: 830, + o: 'm 151 -596 b 164 -563 163 -589 161 -575 b 160 -546 164 -557 161 -552 b 124 -396 148 -495 135 -446 b 122 -380 122 -390 122 -384 b 199 -255 122 -331 158 -272 b 228 -256 209 -249 217 -253 b 324 -346 274 -271 298 -310 b 353 -369 331 -356 341 -369 b 360 -367 356 -369 357 -369 b 379 -336 373 -361 379 -348 l 377 -325 b 344 -232 372 -292 366 -258 b 249 -58 301 -180 278 -117 b 242 -36 245 -49 242 -42 b 258 -7 242 -26 248 -17 b 328 78 284 20 311 45 b 354 158 344 104 354 131 b 337 216 354 177 350 196 b 213 435 294 288 249 359 b 115 575 189 487 158 536 b 78 598 105 585 92 598 b 59 592 72 598 66 596 b 39 562 45 583 39 572 b 53 527 39 550 45 539 b 168 344 98 469 125 402 b 187 307 181 328 187 317 b 153 269 187 294 176 284 b 62 213 122 252 91 235 b 40 180 48 203 40 192 b 46 158 40 173 43 166 b 99 65 60 125 79 95 b 183 -79 131 20 160 -29 b 156 -86 173 -88 164 -85 b 0 -261 58 -99 -7 -173 b 96 -557 10 -366 49 -464 b 124 -585 102 -569 109 -580 b 145 -598 132 -588 138 -598 b 151 -596 147 -598 150 -598 z', + }, + rest8th: { + x_min: 0, + x_max: 289, + y_min: -260, + y_max: 261, + ha: 521, + o: 'm 164 -374 b 212 -340 190 -373 203 -357 b 276 -190 238 -292 258 -242 b 410 285 333 -36 359 128 b 416 314 413 294 416 304 l 416 321 b 393 354 415 341 410 354 b 382 353 389 354 386 354 b 292 311 347 347 315 333 b 174 225 256 276 216 251 b 157 219 168 222 163 219 b 140 228 151 219 145 222 b 131 246 134 233 131 240 b 135 262 131 252 132 256 b 147 298 141 272 147 285 b 127 367 147 323 154 354 b 94 376 114 373 102 376 b 48 336 75 376 63 363 b 3 181 20 288 12 235 b 0 150 1 170 0 160 b 109 24 0 84 35 24 b 171 36 127 24 148 27 b 289 101 213 52 248 75 b 164 -374 256 -62 193 -213 z', + }, + rest16th: { + x_min: 0, + x_max: 333, + y_min: -328.283950617284, + y_max: 244, + ha: 572.2839506172841, + o: 'm 209 -471 b 246 -458 222 -477 236 -468 b 307 -338 279 -425 300 -384 b 324 -226 312 -301 317 -262 b 428 161 350 -94 386 35 b 480 318 445 215 480 259 b 467 347 480 331 477 341 b 445 351 461 350 454 351 b 408 337 432 351 419 347 b 402 333 405 336 403 334 b 223 215 344 294 294 245 b 236 259 229 233 235 246 b 238 276 238 265 238 271 b 212 338 238 302 226 334 b 193 341 206 340 199 341 b 86 289 156 341 104 317 b 59 180 66 255 59 217 b 156 27 59 76 92 27 b 236 46 179 27 204 35 b 338 101 271 59 298 82 b 289 -49 312 49 302 0 b 196 -122 276 -99 235 -107 b 176 -114 187 -127 176 -127 l 176 -111 b 157 -53 177 -88 164 -72 b 69 -9 141 -7 101 -16 b 17 -48 43 -3 29 -27 b 0 -127 4 -73 0 -99 b 6 -186 0 -147 1 -167 b 82 -294 17 -262 37 -294 b 160 -276 102 -294 128 -289 b 219 -242 181 -268 203 -259 b 236 -230 223 -236 229 -230 b 243 -232 239 -230 240 -230 b 235 -275 248 -246 239 -261 b 202 -456 220 -334 202 -395 b 209 -471 202 -462 203 -468 z', + }, + rest32nd: { + x_min: 0, + x_max: 347, + y_min: -497.5023916875033, + y_max: 483, + ha: 980.5023916875033, + o: 'm 177 -716 b 217 -690 194 -720 209 -704 b 233 -655 225 -680 230 -668 b 292 -390 253 -567 275 -480 b 361 -48 312 -275 336 -161 b 452 400 393 102 422 252 b 497 629 467 477 482 553 b 500 647 498 635 500 641 b 480 691 500 665 492 684 b 464 696 475 694 469 696 b 418 674 448 696 431 685 l 361 626 b 333 611 353 618 343 612 b 308 629 325 611 317 616 b 239 667 292 651 265 661 b 204 670 228 668 216 670 b 86 559 141 670 95 628 b 85 537 86 552 85 544 b 107 416 85 495 95 455 b 161 372 114 389 134 372 b 174 373 166 372 170 372 b 226 383 192 374 209 377 b 387 478 285 402 330 444 b 364 386 379 444 364 415 b 276 271 364 323 320 298 b 265 266 272 268 268 266 b 252 276 261 266 256 269 b 143 333 229 311 186 333 b 107 327 130 333 118 330 b 43 243 62 314 46 291 b 58 145 43 210 52 179 b 150 63 68 92 99 63 b 315 132 213 63 259 98 b 266 -58 297 63 281 4 b 207 -101 259 -91 230 -96 b 186 -66 186 -107 199 -75 b 180 -50 181 -63 183 -55 b 101 -3 160 -23 135 -3 b 9 -66 59 -3 20 -32 b 0 -118 3 -84 0 -101 b 10 -196 0 -144 6 -170 b 104 -287 20 -256 52 -287 b 137 -282 114 -287 125 -287 b 184 -269 151 -281 171 -269 b 196 -275 190 -269 193 -271 b 199 -287 197 -278 199 -282 b 184 -343 199 -304 189 -325 b 181 -348 184 -346 183 -347 b 134 -595 158 -429 131 -508 b 156 -677 134 -624 150 -648 b 177 -716 158 -693 160 -713 z', + }, + rest64th: { + x_min: 0, + x_max: 428, + y_min: -720, + y_max: 473.6797408388932, + ha: 1193.6797408388932, + o: 'm 200 -1037 b 229 -1012 215 -1037 222 -1025 b 238 -984 233 -1004 236 -994 b 282 -780 248 -914 265 -848 b 386 -369 317 -644 354 -507 b 491 104 422 -212 451 -53 b 600 541 528 249 550 399 b 616 629 611 570 616 599 b 600 680 616 648 615 671 b 550 665 586 687 566 677 b 480 618 527 649 501 635 b 464 611 474 613 468 611 b 448 622 458 611 454 615 b 366 662 425 651 397 662 b 331 658 354 662 343 661 b 242 572 285 647 253 619 b 236 528 239 557 236 543 b 266 400 236 484 251 442 b 325 373 274 377 301 373 b 436 409 366 373 403 383 l 494 452 b 474 360 485 416 474 389 b 383 248 474 297 435 269 b 320 328 377 288 351 310 b 276 341 305 337 291 341 b 186 269 235 341 194 311 b 181 230 183 256 181 243 b 187 153 181 204 186 179 b 279 63 192 86 233 63 b 304 65 288 63 295 63 b 416 115 344 72 379 92 b 387 -14 406 69 397 27 b 320 -95 380 -52 369 -86 b 318 -79 320 -89 320 -84 b 223 0 305 -29 271 0 b 122 -81 171 0 135 -30 b 118 -127 120 -96 118 -112 l 118 -196 b 137 -242 118 -215 125 -229 b 209 -275 157 -266 181 -275 b 249 -269 222 -275 235 -274 b 318 -248 272 -264 294 -255 b 281 -390 315 -301 292 -344 b 276 -400 279 -393 279 -397 b 259 -420 272 -408 266 -416 b 246 -429 255 -425 251 -429 b 233 -415 242 -429 238 -426 b 176 -359 225 -389 200 -372 b 121 -346 158 -348 140 -346 b 14 -408 73 -346 27 -370 b 0 -498 4 -438 0 -468 b 6 -564 0 -520 3 -543 b 91 -635 12 -611 45 -635 b 131 -629 104 -635 117 -634 b 223 -590 163 -622 190 -603 b 166 -824 203 -671 189 -747 b 148 -912 157 -852 148 -881 b 156 -955 148 -926 150 -940 b 177 -1008 161 -972 170 -991 b 200 -1037 181 -1020 183 -1037 z', + }, + rest128th: { + x_min: 0.6717818579024267, + x_max: 491, + y_min: -711, + y_max: 719, + ha: 1430, + o: 'm 233 -1015 b 271 -956 256 -1002 266 -981 l 314 -723 b 393 -350 337 -598 366 -474 b 543 312 442 -128 492 91 b 687 841 583 490 635 665 b 707 958 698 880 707 919 b 706 986 707 968 707 976 b 688 1025 704 999 704 1024 b 670 1027 683 1025 677 1027 b 629 1007 655 1027 639 1022 b 559 945 613 981 586 968 b 541 1004 553 968 559 991 b 456 1035 516 1024 488 1035 b 419 1030 444 1035 431 1034 b 344 953 379 1018 353 995 b 340 900 341 936 340 917 b 341 847 340 881 341 864 b 380 779 340 815 354 793 b 464 763 406 765 435 762 b 592 814 510 763 549 786 b 546 660 575 757 556 710 b 480 585 537 619 517 598 b 478 599 480 590 478 595 b 386 678 472 641 428 678 b 294 612 343 678 304 651 b 279 477 282 567 278 521 b 363 395 281 428 317 395 b 380 396 369 395 374 395 b 488 436 416 403 449 419 b 384 233 469 357 468 275 b 359 291 373 252 377 276 b 282 318 337 310 310 318 b 181 264 243 318 203 298 b 154 107 153 216 154 161 b 242 6 154 42 187 6 b 278 10 253 6 265 7 b 408 88 330 22 366 55 b 387 -1 400 56 393 27 b 301 -112 379 -55 354 -94 b 289 -65 297 -95 302 -79 b 219 -32 269 -42 245 -32 b 183 -37 207 -32 196 -35 b 112 -109 144 -46 121 -71 b 105 -219 104 -145 108 -183 b 186 -315 101 -276 134 -315 b 230 -307 199 -315 215 -312 b 324 -256 264 -295 292 -275 b 180 -491 323 -383 266 -471 b 183 -459 180 -480 180 -469 b 184 -442 184 -454 184 -448 l 184 -436 b 135 -369 184 -403 170 -383 b 102 -363 125 -364 114 -363 b 29 -399 73 -363 45 -376 b 1 -556 -4 -448 6 -503 b 109 -670 -4 -625 43 -670 b 140 -667 118 -670 130 -668 b 253 -616 180 -658 213 -638 b 238 -688 248 -644 242 -665 b 192 -959 220 -779 192 -867 b 193 -992 192 -971 192 -981 b 210 -1024 194 -1014 199 -1024 b 233 -1015 216 -1024 223 -1021 z', + }, + dynamicPiano: { + x_min: -49, + x_max: 326.5019318364244, + y_min: -142, + y_max: 515, + ha: 657, + o: 'm -56 -204 b -42 -202 -52 -204 -46 -203 b -19 -194 -35 -202 -26 -197 b 147 -138 35 -170 91 -151 b 249 -58 194 -127 223 -95 b 262 -29 255 -50 262 -39 b 258 -17 262 -24 261 -20 b 232 -7 252 -10 242 -7 b 210 -12 225 -7 217 -9 b 125 -40 184 -23 157 -30 b 183 140 153 19 171 79 b 251 167 207 144 230 153 b 469 518 383 262 480 382 b 357 687 472 626 420 687 b 315 678 344 687 330 684 b 204 600 279 664 240 634 b 210 704 206 635 209 670 b 215 721 212 710 215 716 b 206 733 215 727 212 730 b 180 742 197 736 189 742 b 164 734 176 742 170 740 b 1 575 108 684 36 645 b -7 557 -1 569 -7 563 b -6 553 -7 556 -7 554 b 7 547 -3 547 3 547 l 17 547 b 82 575 43 547 59 567 l 82 452 b 56 46 82 317 81 180 b 17 -66 49 7 46 -36 b -62 -173 -13 -99 -37 -135 b -71 -192 -66 -179 -71 -184 b -68 -199 -71 -193 -69 -196 b -56 -204 -65 -203 -60 -204 z m 196 258 b 197 266 197 261 197 264 b 200 510 200 347 199 429 b 233 543 210 521 222 533 b 281 560 249 554 266 560 b 340 503 310 560 333 540 b 344 461 343 488 344 474 b 321 323 344 413 333 369 b 268 272 315 300 295 281 b 196 258 245 265 220 261 z', + }, + dynamicMezzo: { + x_min: -18, + x_max: 559, + y_min: -50, + y_max: 365, + ha: 415, + o: 'm 43 -71 b 160 19 86 -71 143 -26 b 230 264 189 99 200 184 b 282 363 243 297 259 327 b 287 320 285 347 287 333 b 284 279 287 305 285 292 l 249 -12 b 275 -43 248 -29 245 -43 b 395 45 321 -43 389 3 b 462 271 406 124 436 197 b 523 387 475 310 490 348 l 523 346 b 504 130 521 274 513 202 b 501 81 501 114 501 98 b 510 3 501 55 504 29 b 580 -72 521 -48 543 -72 b 625 -63 593 -72 608 -69 b 789 50 690 -43 744 -3 b 805 72 795 56 805 63 b 798 85 805 76 802 81 b 778 94 792 91 785 94 b 755 85 770 94 763 91 l 693 40 b 675 33 685 36 680 33 b 658 52 668 33 662 39 b 645 144 651 82 645 112 b 658 448 641 246 660 346 b 606 507 658 485 638 507 b 583 504 599 507 592 505 b 495 446 547 497 521 471 b 420 373 471 423 448 399 b 413 458 418 406 418 432 b 361 507 408 490 386 507 b 320 491 347 507 333 501 b 160 307 256 444 207 382 l 160 337 b 174 488 160 387 174 438 b 156 521 174 501 173 513 b 137 526 148 524 143 526 b 109 513 127 526 118 520 b -16 399 66 477 23 439 b -26 383 -20 395 -26 389 l -26 379 b -14 370 -24 372 -20 370 b -6 372 -12 370 -9 372 b 19 376 4 374 12 376 b 36 359 32 376 36 370 b 30 330 36 350 35 341 l 30 323 b 9 -35 23 203 17 85 b 43 -71 6 -65 19 -71 z', + }, + dynamicForte: { + x_min: -144, + x_max: 311.30112136775, + y_min: -115.3876295915697, + y_max: 504, + ha: 619.3876295915697, + o: 'm -101 -166 b 173 76 7 -153 150 -30 b 206 344 192 164 202 253 b 268 338 226 343 246 341 b 384 395 317 333 353 361 b 397 419 393 405 397 412 b 367 442 397 429 387 436 b 350 444 361 444 356 444 b 206 455 302 449 255 454 l 206 474 b 202 540 204 495 202 518 b 209 593 202 557 203 576 b 236 624 215 613 225 624 b 265 612 245 624 253 619 b 308 552 287 596 302 577 b 336 533 312 534 323 533 b 448 611 366 533 444 583 b 399 696 452 648 423 671 b 382 706 395 700 387 703 b 308 726 357 720 333 726 b 207 684 272 726 239 711 b 60 455 135 622 60 560 l 10 455 b -23 448 -1 455 -13 454 b -102 372 -55 426 -76 397 b -109 357 -108 367 -109 361 b -95 347 -109 353 -105 348 b -63 346 -84 346 -73 346 b 0 344 -43 344 -22 344 l 63 344 b 53 186 63 291 59 239 b 23 0 46 124 42 60 b -35 -60 10 -42 -6 -60 b -73 -52 -45 -60 -58 -58 b -91 -48 -79 -49 -85 -48 b -109 -53 -96 -48 -102 -49 b -199 -124 -143 -72 -168 -99 b -207 -137 -203 -128 -207 -132 b -194 -148 -207 -141 -203 -145 b -101 -166 -164 -160 -132 -168 z', + }, + dynamicRinforzando: { + x_min: -75, + x_max: 322.0960720195126, + y_min: -90, + y_max: 325, + ha: 415, + o: 'm 23 -130 b 40 -125 27 -130 33 -128 b 128 -9 81 -114 125 -53 b 145 200 132 62 141 130 b 148 238 147 212 148 225 b 308 321 184 291 245 321 b 363 314 325 321 344 318 b 377 310 369 312 373 310 b 384 311 380 310 382 310 b 464 415 410 317 464 389 b 446 433 465 429 455 429 b 390 445 428 441 409 445 b 305 429 361 445 334 438 b 167 346 252 413 202 393 b 153 325 163 338 158 333 b 148 438 154 363 151 399 b 121 468 147 456 134 468 b 101 458 115 468 108 465 b -63 310 46 409 -16 367 b -108 240 -78 289 -98 271 b 32 330 -50 256 -13 297 b 37 304 37 320 37 312 l 37 292 b 10 -101 27 161 20 30 b 23 -130 9 -120 12 -130 z', + }, + dynamicSforzando: { + x_min: 0, + x_max: 296, + y_min: 0, + y_max: 379, + ha: 379, + o: 'm 151 0 b 174 1 160 0 166 0 b 392 158 272 14 346 71 b 405 207 400 174 405 190 b 359 287 405 236 389 265 b 261 325 328 308 294 315 b 168 413 216 340 181 366 b 166 426 167 418 166 423 b 176 438 166 432 167 436 b 199 441 183 441 190 441 b 310 393 238 441 295 422 b 334 370 317 376 325 370 b 363 386 343 370 353 379 b 422 445 386 402 408 420 b 426 458 425 449 426 454 b 422 469 426 462 425 465 b 274 546 395 518 333 546 b 161 503 232 546 190 531 b 86 405 132 472 108 439 b 71 347 75 387 71 367 b 112 256 71 312 85 279 b 209 215 141 232 176 226 b 284 168 238 206 266 197 b 300 131 291 157 300 144 b 298 120 300 127 298 122 b 278 107 294 109 285 108 b 262 108 271 107 266 108 l 259 108 b 114 157 200 107 156 125 b 96 181 104 163 96 170 l 96 184 b 102 202 96 190 102 196 b 96 209 102 204 101 207 b 63 194 82 215 72 204 b 7 109 42 168 26 138 b 0 86 3 101 0 94 b 13 60 0 78 4 68 b 151 0 53 23 101 0 z', + }, + dynamicZ: { + x_min: -42.73880183193087, + x_max: 331, + y_min: 0, + y_max: 328, + ha: 328, + o: 'm -45 0 b -6 16 -32 0 -17 10 b 3 20 -3 16 0 19 b 144 60 49 48 96 60 b 284 22 190 60 238 46 b 348 4 305 10 327 4 b 461 75 393 4 435 30 b 468 91 464 81 467 86 b 456 104 468 95 465 99 b 287 173 402 131 348 167 b 239 176 271 174 255 176 b 168 174 217 176 194 174 b 367 340 236 236 298 294 b 459 423 402 363 432 392 b 477 454 467 431 475 442 b 474 462 477 456 475 459 b 454 472 469 469 462 472 b 432 468 446 472 439 469 b 356 448 406 461 380 455 b 210 422 307 433 258 422 b 109 442 177 422 144 428 b 94 445 104 444 99 445 b 69 433 85 445 76 442 b 27 390 56 419 39 406 b -9 343 16 373 -17 357 b 63 311 3 320 36 314 l 78 311 b 132 307 95 308 114 307 b 240 314 168 307 203 311 l 193 271 b -37 50 117 196 19 145 b -59 7 -46 36 -69 20 b -45 0 -55 3 -50 0 z', + }, + ornamentTrill: { + x_min: 1, + x_max: 551, + y_min: -18, + y_max: 539, + ha: 557, + o: 'm 321 612 b 190 602 278 605 235 605 l 190 638 b 187 693 190 652 190 667 b 161 776 184 717 193 776 b 137 747 150 776 137 766 b 130 654 135 716 131 685 l 130 596 l 52 588 b 4 539 23 585 7 570 b 1 477 3 530 1 500 b 3 448 1 461 3 448 l 3 452 b 53 432 6 436 23 432 b 134 435 75 432 102 433 b 151 117 138 328 147 223 b 170 13 153 82 157 46 b 209 -26 179 -10 193 -26 b 222 -22 213 -26 217 -24 b 269 -17 233 -16 253 -27 b 343 135 325 19 346 66 b 343 158 343 147 344 147 b 323 192 341 171 337 187 b 291 176 311 194 300 184 l 264 148 b 229 131 261 145 238 131 b 212 170 209 131 213 154 b 194 438 203 259 199 348 l 272 442 b 284 452 276 441 279 441 b 305 462 287 461 295 462 l 312 462 b 346 477 325 462 340 464 b 366 560 357 503 366 531 b 321 612 366 598 356 618 z m 759 588 b 711 560 749 592 733 570 b 588 500 671 541 631 521 b 583 533 586 514 586 524 b 560 576 577 549 577 572 b 517 550 541 582 528 564 b 416 423 482 508 452 462 b 382 353 392 397 384 370 b 387 305 380 341 386 318 b 392 275 389 295 392 285 b 409 243 393 262 393 243 b 431 262 419 243 425 255 b 521 373 459 298 488 333 b 523 354 521 366 523 360 b 520 337 523 346 521 340 b 508 295 513 323 508 310 b 530 102 508 279 524 122 b 549 66 533 88 530 66 b 577 99 563 66 572 84 b 580 131 580 109 580 121 l 580 302 b 600 347 580 318 582 337 b 701 392 632 364 665 384 b 793 518 785 409 793 435 b 759 588 793 559 785 576 z', + }, + ornamentTurn: { + x_min: 0, + x_max: 574, + y_min: 0, + y_max: 312, + ha: 312, + o: 'm 651 0 b 816 132 727 0 796 46 b 827 223 822 163 827 193 b 808 340 827 262 821 301 b 665 449 785 408 729 449 b 636 446 655 449 647 448 b 589 384 600 441 586 422 l 602 300 b 611 285 603 291 605 285 b 621 288 613 285 616 287 b 655 295 632 294 644 295 b 711 284 674 295 693 289 b 773 209 740 275 773 232 b 697 156 773 184 734 160 b 664 154 685 154 675 154 b 579 168 635 154 608 158 b 455 242 533 186 495 213 b 261 400 387 291 331 354 b 160 432 225 422 190 432 b 20 328 98 432 49 392 b 0 229 6 295 0 262 b 30 71 0 176 14 122 b 144 3 43 29 96 3 b 168 6 153 3 160 4 b 248 122 233 20 248 39 b 246 147 248 124 248 135 b 226 177 243 164 239 177 b 206 170 220 177 215 174 b 144 154 186 158 166 154 b 79 170 122 154 101 160 b 53 202 62 179 53 189 b 60 228 53 209 55 217 b 161 281 81 261 120 281 b 183 279 168 281 176 281 b 325 190 243 269 284 229 b 572 16 402 124 475 53 b 651 0 598 6 625 0 z', + }, + ornamentTurnSlash: { + x_min: 0, + x_max: 574, + y_min: -106, + y_max: 405, + ha: 511, + o: 'm 441 -153 b 456 -60 455 -118 456 -89 b 455 81 455 -14 455 33 b 572 14 491 55 530 30 b 651 -1 598 4 625 -1 b 816 131 727 -1 796 45 b 827 222 822 161 827 192 b 808 338 827 261 821 300 b 665 448 785 406 729 448 b 636 445 655 448 647 446 b 589 383 600 439 586 420 l 602 298 b 611 284 603 289 605 284 b 621 287 613 284 616 285 b 655 294 632 292 644 294 b 711 282 674 294 693 288 b 773 207 740 274 773 230 b 697 154 773 183 734 158 b 664 153 685 153 675 153 b 579 167 635 153 608 157 b 455 240 533 183 495 212 b 454 242 455 240 455 242 l 454 337 b 452 488 454 386 452 439 b 433 570 452 517 451 546 b 425 583 431 575 431 583 l 422 583 b 403 566 415 582 408 573 b 402 546 400 560 402 553 l 397 287 b 261 399 353 325 310 366 b 160 431 225 420 190 431 b 20 327 98 431 48 390 b 0 228 6 294 0 261 b 30 69 0 174 14 121 b 144 1 43 27 96 1 b 168 4 153 1 160 3 b 248 121 233 19 248 37 b 246 145 248 122 248 134 b 226 176 243 163 239 176 b 206 168 220 176 215 173 b 144 153 186 157 166 153 b 79 168 122 153 101 158 b 53 200 62 177 53 187 b 60 226 53 207 55 216 b 161 279 79 259 120 279 b 183 278 168 279 176 279 b 325 189 243 266 282 226 b 395 130 348 168 372 148 b 393 71 393 109 393 89 b 441 -153 390 -6 402 -78 z', + }, + ornamentMordent: { + x_min: 0, + x_max: 700, + y_min: 0, + y_max: 497, + ha: 497, + o: 'm 513 0 b 528 39 526 14 527 27 b 531 72 531 50 531 60 b 528 138 531 94 528 117 l 528 347 b 552 359 537 354 544 359 b 579 338 560 359 569 353 b 674 217 609 297 639 255 b 719 190 690 200 704 190 b 759 215 732 190 744 197 b 940 395 815 279 877 337 b 1001 490 968 422 986 455 b 1008 513 1004 495 1008 505 b 1002 524 1008 517 1007 521 b 968 516 994 530 978 524 b 960 508 965 513 963 510 b 798 356 900 464 848 410 b 778 341 791 347 783 341 b 757 354 772 341 765 346 b 661 475 720 392 690 432 b 611 517 644 504 629 517 b 563 498 598 517 583 511 b 527 471 550 490 539 481 l 527 570 b 492 716 526 619 523 671 b 472 677 480 704 472 694 b 465 399 474 585 468 491 b 439 366 456 387 448 376 b 384 320 415 336 399 320 b 330 367 369 320 354 336 b 325 376 328 369 327 373 b 226 490 291 413 265 456 b 189 505 213 500 202 505 b 157 491 177 505 167 500 b 0 229 75 420 0 346 b 1 202 0 220 0 212 b 22 215 12 203 16 209 b 124 327 55 252 89 289 b 147 343 132 337 140 343 b 171 323 156 343 164 336 b 266 197 196 276 232 236 b 337 157 291 170 314 157 b 410 207 361 157 386 174 b 461 274 428 229 444 252 b 462 166 461 238 461 202 b 513 0 465 108 487 55 z', + }, + ornamentShortTrill: { + x_min: 0, + x_max: 747, + y_min: 0, + y_max: 243, + ha: 243, + o: 'm 379 0 b 428 14 395 0 410 4 b 474 56 445 26 461 39 b 552 157 500 89 526 122 b 566 168 556 163 560 168 b 575 157 569 168 572 166 b 664 36 592 107 628 72 b 733 1 685 13 710 1 b 802 35 757 1 780 13 b 1007 249 871 105 940 177 b 1067 324 1028 272 1054 295 b 1076 340 1068 330 1076 334 b 1073 346 1076 341 1076 343 b 1057 350 1068 348 1063 350 b 1047 347 1053 350 1050 350 b 1001 310 1031 336 1015 324 l 857 157 b 844 143 852 153 848 143 b 835 150 841 143 838 144 b 757 242 815 186 780 209 b 685 298 739 268 713 284 b 641 310 670 305 655 310 b 590 288 625 310 608 304 b 497 179 554 256 527 215 b 480 164 490 170 485 164 b 462 179 474 164 469 168 b 372 295 436 220 405 258 b 278 344 346 324 312 344 b 199 310 252 344 226 334 b 92 196 161 274 128 233 b 0 24 46 148 23 89 b 42 48 22 27 32 37 b 156 168 84 85 114 132 b 196 192 174 184 186 192 b 228 158 206 192 215 181 b 312 36 252 114 282 75 b 379 0 331 12 354 0 z', + }, + ornamentTremblement: { + x_min: 0, + x_max: 982.17691453624, + y_min: 0, + y_max: 224, + ha: 224, + o: 'm 0 0 b 63 36 30 12 48 23 b 157 124 94 66 125 94 b 177 135 164 131 170 135 b 196 122 183 135 189 131 b 268 40 217 94 245 68 b 323 6 288 16 304 6 b 369 20 336 6 350 10 b 412 53 384 29 399 40 b 501 145 442 84 472 114 b 523 158 508 154 516 158 b 543 145 528 158 536 154 b 641 45 576 112 608 78 b 698 17 658 27 677 17 b 729 23 708 17 719 20 b 804 65 756 32 780 46 b 904 154 837 95 871 124 b 920 163 910 160 916 163 b 936 153 924 163 930 160 b 1024 60 965 121 996 92 b 1112 13 1053 29 1080 13 b 1184 39 1135 13 1158 22 b 1359 194 1248 84 1305 138 b 1413 301 1388 223 1403 261 b 1404 323 1417 315 1413 323 b 1391 320 1400 323 1395 321 b 1344 294 1375 314 1358 307 b 1224 186 1305 258 1269 216 b 1194 173 1212 179 1202 173 b 1165 193 1184 173 1175 179 b 1096 271 1145 222 1122 248 b 1001 318 1061 302 1031 318 b 903 268 969 318 937 301 b 806 186 871 239 841 210 b 782 174 796 179 789 174 b 756 193 773 174 765 180 b 652 291 729 232 693 266 b 596 308 634 302 615 308 b 530 278 573 308 552 298 l 415 168 b 393 157 408 161 400 157 b 373 171 387 157 380 161 b 305 245 353 197 330 222 b 248 276 285 266 266 278 b 189 245 229 276 210 266 b 81 144 156 209 120 174 b 0 0 33 109 26 56 z', + }, + ornamentPrecompAppoggTrill: { + x_min: -0.11067192132025548, + x_max: 1066, + y_min: -50, + y_max: 533.1706452421108, + ha: 583.1706452421108, + o: 'm 187 -46 b 213 -14 197 -37 204 -26 b 285 151 251 36 266 94 b 304 189 294 177 297 189 b 337 168 311 189 320 181 b 458 33 386 131 415 76 b 495 12 472 19 484 12 b 531 40 508 12 518 22 b 580 168 557 79 569 124 b 622 235 592 213 603 235 b 683 194 636 235 655 222 b 838 26 737 140 791 86 b 919 -33 860 -1 881 -39 b 984 53 960 -27 971 19 b 1022 156 998 86 1008 122 b 1054 190 1032 179 1041 190 b 1089 167 1063 190 1074 183 b 1208 32 1129 122 1171 78 b 1244 10 1221 17 1231 10 b 1273 22 1253 10 1263 14 b 1496 206 1352 78 1427 137 b 1535 310 1526 236 1535 272 b 1531 359 1535 325 1534 343 b 1496 343 1515 360 1506 351 l 1309 192 b 1269 167 1289 176 1279 167 b 1234 199 1260 167 1251 177 b 1122 324 1200 243 1168 289 b 1074 344 1106 337 1089 344 b 1014 301 1051 344 1030 328 b 952 144 985 252 971 197 b 933 121 946 128 940 121 b 910 137 927 121 920 125 b 850 210 888 161 870 186 b 687 369 799 266 750 325 b 631 390 665 383 647 390 b 567 327 602 390 580 369 b 527 199 554 284 543 242 b 508 168 520 179 514 168 b 482 192 503 168 495 177 b 353 328 444 240 405 292 b 312 343 338 338 324 343 b 266 297 292 343 276 327 b 204 125 248 239 232 180 b 143 79 193 102 173 79 b 92 122 117 79 105 102 b 81 154 86 131 84 143 b 48 423 59 242 50 333 b 45 544 46 464 45 504 b 53 730 45 606 48 668 b 40 768 55 744 52 766 b 13 730 19 770 14 747 b 0 514 7 658 -1 586 b 26 122 3 383 6 252 b 75 -36 35 66 40 10 b 134 -72 92 -59 112 -72 b 187 -46 151 -72 170 -63 z', + }, + ornamentPrecompSlideTrillDAnglebert: { + x_min: 0, + x_max: 1088, + y_min: -380, + y_max: 252, + ha: 632, + o: 'm 560 -539 b 439 -481 527 -497 484 -485 b 354 -461 409 -478 380 -477 b 131 -154 236 -389 161 -285 b 124 -98 127 -135 124 -117 b 196 55 124 -40 148 10 b 308 99 230 86 268 99 b 399 81 337 99 367 92 b 514 22 441 66 477 43 b 619 -30 567 -9 590 -30 b 719 17 642 -30 670 -16 b 861 131 769 52 818 88 b 899 150 874 144 887 150 b 936 117 913 150 926 138 b 965 43 948 94 956 68 b 1007 -1 973 24 978 -1 b 1048 30 1025 -1 1037 16 b 1070 65 1057 40 1064 52 b 1110 148 1084 92 1096 121 b 1145 190 1120 164 1120 190 b 1191 153 1169 192 1179 168 b 1256 29 1218 115 1231 68 b 1292 1 1267 10 1277 1 b 1320 10 1300 1 1309 4 b 1369 48 1339 19 1355 33 b 1515 196 1418 96 1464 148 b 1567 343 1558 238 1567 287 b 1555 363 1565 357 1562 363 b 1539 356 1551 363 1547 360 b 1433 268 1502 330 1466 301 b 1335 171 1401 236 1374 199 b 1310 163 1325 166 1318 163 b 1286 183 1302 163 1293 168 b 1218 311 1264 226 1247 272 b 1164 351 1200 337 1182 351 b 1110 308 1146 351 1128 337 b 1031 176 1084 265 1058 219 b 1015 161 1025 166 1021 161 b 999 179 1009 161 1005 167 b 955 279 985 213 973 248 b 913 307 943 300 930 307 b 887 302 904 307 896 305 b 852 281 874 298 863 291 b 693 167 804 236 747 204 b 612 140 667 150 639 140 b 549 157 592 140 570 145 b 403 220 503 181 452 202 b 271 248 360 236 315 248 b 179 229 239 248 209 242 b 0 -29 65 180 0 85 b 9 -104 0 -53 3 -78 b 397 -526 56 -317 183 -464 b 505 -547 432 -536 468 -547 b 560 -539 524 -547 541 -544 z', + }, + ornamentPrecompSlideTrillBach: { + x_min: 0, + x_max: 1185, + y_min: -380, + y_max: 465, + ha: 845, + o: 'm 624 -544 b 642 -528 638 -543 642 -537 b 639 -514 642 -524 642 -520 b 590 -444 629 -487 609 -467 b 523 -413 573 -422 553 -410 b 498 -415 514 -415 507 -415 b 399 -389 464 -415 431 -405 b 89 -157 281 -330 176 -255 b 72 -117 78 -144 72 -131 b 73 -101 72 -111 72 -107 b 187 186 91 3 147 91 b 246 230 200 216 222 230 b 300 209 262 230 281 223 b 456 48 359 163 403 101 b 540 -10 494 10 518 -10 b 625 59 566 -10 589 13 b 690 148 648 88 668 118 b 711 167 697 160 704 167 b 733 153 719 167 724 163 b 844 14 769 105 808 60 b 903 -42 873 -23 886 -42 b 973 -1 919 -42 937 -27 b 1008 33 986 7 996 20 b 1048 81 1021 48 1035 65 b 1050 37 1048 66 1050 52 b 1047 -24 1050 17 1048 -3 b 1038 -275 1038 -108 1040 -192 l 1037 -289 b 1045 -302 1037 -295 1038 -301 b 1068 -284 1056 -304 1064 -292 b 1084 -242 1076 -271 1081 -256 b 1099 -109 1096 -199 1099 -154 b 1106 158 1099 -19 1106 71 b 1128 187 1113 167 1120 177 b 1168 223 1143 212 1155 223 b 1210 193 1179 223 1191 213 b 1220 183 1214 190 1215 186 b 1329 36 1261 138 1292 84 b 1374 7 1345 16 1358 7 b 1411 20 1384 7 1395 12 b 1479 84 1437 37 1459 59 b 1610 235 1521 135 1564 186 b 1706 403 1655 282 1695 334 b 1614 346 1663 400 1637 373 b 1464 170 1564 287 1515 228 b 1440 150 1453 156 1447 150 b 1414 173 1433 150 1426 158 b 1283 336 1371 228 1333 288 b 1220 366 1261 356 1240 366 b 1148 318 1194 366 1169 350 b 1103 255 1133 297 1119 275 b 1097 301 1102 271 1100 285 b 1099 334 1099 312 1099 324 b 1092 428 1099 367 1094 397 b 1071 647 1087 501 1079 575 b 1058 670 1071 657 1071 670 b 1035 648 1047 670 1038 661 b 1018 516 1024 605 1015 560 b 1041 203 1025 412 1037 307 b 1043 180 1041 196 1043 187 b 992 127 1027 161 1009 143 b 965 111 981 117 972 111 b 936 132 955 111 946 120 b 829 268 900 179 867 225 b 760 317 801 301 780 317 b 691 258 739 317 719 297 b 605 147 664 219 641 177 b 589 138 599 141 593 138 b 572 148 583 138 579 141 b 415 317 520 206 467 261 b 327 372 390 343 366 366 b 300 373 317 373 308 373 b 154 295 239 373 190 348 b 55 138 120 243 85 192 b 0 -53 22 79 0 13 b 160 -317 0 -156 49 -252 b 209 -354 177 -327 192 -343 b 510 -531 305 -419 397 -495 b 593 -547 537 -540 564 -547 b 624 -544 603 -547 613 -546 z', + }, + ornamentPrecompTrillSuffixDandrieu: { + x_min: 0, + x_max: 1003, + y_min: -20, + y_max: 521, + ha: 541, + o: 'm 791 -16 b 844 33 812 -3 829 14 b 981 271 900 107 937 190 b 994 288 984 278 985 288 b 1009 269 1004 288 1007 278 b 1077 112 1034 217 1051 163 b 1158 43 1103 62 1129 43 b 1231 69 1179 43 1204 55 b 1348 189 1280 98 1315 143 b 1444 451 1407 271 1444 357 b 1431 547 1444 482 1440 514 b 1188 750 1401 665 1299 750 b 1158 747 1178 750 1168 749 b 1079 684 1119 742 1089 727 b 1063 632 1076 665 1071 648 b 1056 609 1058 622 1056 615 b 1071 599 1056 602 1060 599 b 1086 600 1076 599 1080 600 b 1130 605 1102 603 1116 605 b 1244 569 1171 605 1210 595 b 1349 346 1322 511 1349 433 b 1348 312 1349 334 1349 324 b 1289 197 1345 266 1325 228 b 1238 174 1270 181 1253 174 b 1188 215 1220 174 1202 187 b 1145 308 1172 245 1159 276 b 1096 413 1129 343 1120 382 b 1053 438 1084 431 1068 438 b 1011 413 1038 438 1022 431 b 955 324 989 384 971 354 b 850 127 920 258 886 192 b 838 112 847 121 842 112 b 824 128 828 109 825 121 b 802 193 815 150 809 171 b 730 400 779 264 766 337 b 688 431 719 420 703 431 b 647 403 674 431 660 422 b 606 338 632 383 619 361 b 513 167 575 282 546 223 b 480 122 503 150 498 122 b 452 171 459 122 459 153 b 420 255 442 199 432 228 b 337 408 399 308 380 364 b 276 436 317 428 297 436 b 215 397 253 436 230 423 b 23 72 148 289 81 184 b 0 29 17 59 0 40 b 7 17 0 23 1 20 b 59 58 26 7 46 39 b 190 276 111 127 143 206 b 216 301 202 292 207 301 b 245 279 223 301 232 294 b 311 166 278 248 292 206 b 367 16 331 117 346 65 b 402 -19 377 -7 387 -19 b 438 -4 412 -19 423 -13 b 518 88 474 17 495 55 b 628 284 562 150 592 216 b 657 223 648 266 651 243 b 717 13 677 154 696 84 b 755 -29 726 -16 737 -29 b 791 -16 765 -29 776 -24 z', + }, + ornamentPrecompDoubleCadenceUpperPrefix: { + x_min: 0, + x_max: 1246, + y_min: -30, + y_max: 296.0302860502196, + ha: 326.0302860502196, + o: 'm 360 -43 b 559 59 445 -43 503 7 b 698 236 615 111 652 179 b 714 248 704 243 710 248 b 727 235 719 248 721 243 l 848 42 b 883 12 860 22 870 12 b 917 32 891 12 903 19 b 946 62 927 42 939 50 b 1037 192 972 108 1009 147 b 1057 210 1044 204 1051 210 b 1076 190 1063 210 1068 203 l 1176 12 b 1215 -19 1188 -9 1201 -19 b 1250 -6 1225 -19 1237 -14 b 1284 27 1264 3 1274 16 b 1380 190 1323 78 1351 135 b 1395 210 1384 197 1385 210 b 1413 190 1405 210 1410 197 b 1508 40 1436 134 1467 85 b 1564 3 1529 14 1547 3 b 1617 32 1580 3 1597 12 b 1767 238 1678 92 1719 167 b 1794 310 1781 259 1791 282 b 1752 294 1776 317 1764 304 b 1656 164 1711 258 1689 206 b 1629 144 1646 151 1637 144 b 1603 161 1620 144 1613 150 b 1502 315 1562 207 1525 258 b 1452 357 1490 344 1470 357 b 1397 320 1431 357 1411 344 b 1316 170 1368 271 1345 219 b 1280 127 1306 154 1303 127 b 1244 171 1256 127 1254 154 b 1145 337 1210 226 1179 282 b 1110 363 1135 354 1122 363 b 1070 338 1097 363 1084 354 b 1050 311 1063 330 1057 320 b 959 181 1017 271 992 223 b 939 167 950 173 945 167 b 920 184 933 167 927 173 b 818 343 887 238 852 291 b 759 395 795 377 778 395 b 701 344 742 395 724 377 b 698 338 700 341 700 340 b 544 154 652 272 605 207 b 412 98 501 117 458 98 b 304 130 377 98 341 108 b 95 373 204 187 144 275 b 58 426 85 393 82 428 b 19 366 26 426 26 389 b 0 307 13 346 0 327 b 4 287 0 300 1 294 b 174 36 49 194 91 102 b 360 -43 230 -9 289 -43 z', + }, + ornamentPrecompDoubleCadenceUpperPrefixTurn: { + x_min: 0, + x_max: 1226, + y_min: -237, + y_max: 436, + ha: 673, + o: 'm 1279 -341 b 1293 -252 1293 -307 1295 -278 b 1277 36 1287 -156 1282 -59 l 1273 118 b 1318 176 1289 137 1303 157 b 1349 203 1332 193 1342 203 b 1378 168 1359 203 1367 192 b 1456 35 1401 122 1428 78 b 1511 -12 1476 3 1493 -12 b 1568 23 1526 -12 1544 0 b 1597 53 1578 32 1588 42 b 1705 186 1629 101 1669 143 b 1761 284 1728 216 1751 246 b 1765 300 1763 288 1765 295 b 1763 307 1765 302 1765 305 b 1737 302 1754 311 1744 308 b 1718 287 1729 298 1725 292 b 1598 145 1673 245 1637 194 b 1578 130 1590 135 1584 130 b 1557 147 1571 130 1565 135 b 1447 321 1516 202 1488 265 b 1403 351 1433 341 1417 351 b 1358 323 1388 351 1372 341 b 1269 209 1329 285 1299 248 b 1254 521 1264 314 1259 418 b 1228 616 1253 554 1247 588 b 1218 628 1224 621 1223 628 l 1215 628 b 1201 613 1210 626 1202 619 b 1200 600 1200 609 1200 605 l 1200 586 b 1211 348 1204 507 1207 428 b 1217 166 1214 288 1215 226 b 1202 181 1212 168 1208 174 b 1094 334 1168 233 1130 284 b 1048 366 1079 356 1064 366 b 1004 331 1034 366 1018 354 b 904 154 969 275 930 220 b 873 202 887 171 880 187 b 778 356 845 256 819 311 b 737 379 763 372 750 379 b 698 353 724 379 711 370 l 621 232 b 415 114 570 154 495 114 b 302 138 377 114 340 121 b 73 400 187 192 117 284 b 55 420 69 415 62 420 b 42 410 50 420 45 416 b 0 292 23 373 0 334 b 4 262 0 282 1 272 b 168 39 32 168 92 99 b 359 -26 225 -6 292 -26 b 585 76 446 -26 530 10 b 668 202 616 115 641 160 b 693 228 680 219 687 228 b 720 203 700 228 707 219 b 801 63 752 160 775 111 b 844 7 812 42 818 7 b 910 66 877 6 894 39 b 923 94 916 75 919 85 b 995 219 945 137 968 179 b 1025 184 1009 210 1017 197 b 1119 56 1054 141 1087 98 b 1166 20 1138 32 1152 20 b 1215 50 1181 20 1195 30 b 1221 56 1217 52 1218 55 b 1228 -163 1223 -17 1225 -89 b 1279 -341 1231 -223 1251 -278 z', + }, + ornamentPrecompTrillLowerSuffix: { + x_min: 0, + x_max: 833, + y_min: -309, + y_max: 319, + ha: 628, + o: 'm 778 -444 b 801 -445 785 -444 793 -445 b 1037 -338 894 -445 969 -397 b 1200 37 1149 -240 1200 -109 b 1084 406 1200 171 1172 300 b 1024 444 1064 431 1043 444 b 960 390 999 444 978 426 b 841 163 923 314 886 236 b 812 128 832 150 827 128 b 786 167 796 130 793 153 b 660 418 744 251 716 341 b 599 459 639 445 619 459 b 541 410 577 459 557 444 b 439 197 507 340 474 269 b 422 179 435 190 435 179 b 338 393 392 251 379 328 b 275 439 320 423 298 439 b 212 396 253 439 230 425 b 71 219 170 333 128 268 b 0 45 17 173 16 112 b 68 98 32 62 50 78 b 194 264 112 150 153 209 b 230 292 209 282 219 292 b 264 261 240 292 251 282 b 274 242 268 255 269 248 b 346 46 304 179 325 112 b 376 10 351 32 354 10 b 412 35 392 10 403 22 b 452 107 429 56 441 82 b 541 291 481 168 511 230 b 556 307 547 302 552 307 b 573 295 562 307 567 302 b 624 217 595 272 611 246 b 721 1 657 145 685 72 b 755 -27 732 -19 742 -27 b 786 -16 765 -27 775 -24 b 857 73 819 7 840 39 b 952 256 887 134 920 194 b 978 289 963 279 969 289 b 1009 262 985 289 994 281 b 1030 235 1017 253 1024 245 b 1110 -4 1071 161 1099 81 b 1116 -68 1113 -26 1116 -48 b 1009 -243 1116 -140 1090 -200 b 848 -291 956 -272 901 -291 b 730 -261 809 -291 770 -282 b 696 -248 714 -252 703 -248 b 671 -284 684 -248 678 -258 l 662 -312 b 657 -357 658 -330 657 -344 b 744 -439 657 -403 683 -425 z', + }, + brassScoop: { + x_min: -0.4444444444444445, + x_max: 312, + y_min: -390, + y_max: 28, + ha: 418, + o: 'm 0 -562 b 393 -256 171 -504 307 -412 b 449 -39 431 -189 449 -115 b 448 -1 449 -26 449 -14 b 433 40 446 14 448 40 b 408 -3 410 40 412 14 b 396 -66 403 -23 402 -46 b 45 -397 346 -243 209 -337 b 0 -451 13 -409 1 -423 b 0 -562 -1 -485 0 -520 z', + }, + brassDoitMedium: { + x_min: -0.32815253965710617, + x_max: 476.21251177608565, + y_min: -50, + y_max: 333.1535583875376, + ha: 383.1535583875376, + o: 'm 16 -72 b 27 -71 19 -72 23 -72 b 215 -33 89 -56 153 -48 b 521 114 327 -7 435 35 b 685 432 615 199 691 295 b 670 480 684 449 688 475 b 642 441 654 482 648 456 b 403 183 599 321 513 240 b 79 89 301 130 192 105 b 0 -1 -12 76 0 76 b 0 -50 0 -17 1 -33 b 16 -72 0 -65 3 -72 z', + }, + brassFallLipShort: { + x_min: 0, + x_max: 298, + y_min: -344, + y_max: 65, + ha: 409, + o: 'm 396 -495 b 420 -461 412 -487 418 -474 b 429 -382 428 -435 429 -409 b 426 -330 429 -364 428 -347 b 285 -6 410 -209 356 -104 b 98 94 239 59 173 94 b 39 86 79 94 58 92 b 0 49 20 81 0 73 l 0 -52 b 10 -69 0 -62 1 -69 b 20 -68 13 -69 16 -69 b 88 -56 45 -59 66 -56 b 261 -160 156 -56 213 -95 b 396 -495 333 -259 382 -369 z', + }, + brassLiftMedium: { + x_min: 0, + x_max: 807, + y_min: 0, + y_max: 838, + ha: 838, + o: 'm 50 0 b 55 1 52 0 53 0 b 58 23 65 7 59 16 b 55 58 56 36 55 48 b 130 117 55 99 75 112 b 220 213 202 121 220 141 b 315 308 220 289 238 308 l 336 308 b 408 380 393 310 406 321 b 461 452 409 438 416 452 b 485 451 468 452 477 451 b 569 510 531 448 556 464 b 573 543 572 520 572 531 b 657 619 580 605 595 618 b 698 621 670 619 684 619 b 788 700 749 625 778 649 b 798 778 792 726 793 752 b 873 857 806 841 809 845 b 985 950 927 867 973 887 b 1084 1047 1002 1035 1004 1034 b 1162 1128 1133 1056 1162 1087 b 1146 1182 1162 1145 1158 1164 b 1125 1207 1140 1191 1136 1207 l 1122 1207 b 1110 1191 1113 1205 1110 1198 b 1112 1174 1110 1185 1112 1178 b 1048 1110 1109 1126 1096 1113 b 1028 1109 1043 1110 1035 1109 b 939 1022 969 1102 948 1081 b 845 922 929 949 917 936 b 746 812 773 909 753 886 b 744 780 744 802 744 791 b 635 681 737 700 717 683 b 524 583 553 680 536 665 b 439 510 514 520 503 510 b 357 431 377 510 360 492 l 357 406 b 314 364 356 379 343 364 b 238 361 288 364 264 364 b 173 300 202 357 180 334 b 167 245 168 281 167 262 b 105 174 166 192 157 180 b 75 171 95 173 85 171 b 6 112 30 166 14 153 b 0 73 1 98 0 85 b 37 10 0 45 13 26 b 50 0 42 7 46 0 z', + }, + brassFallRoughMedium: { + x_min: 0, + x_max: 791, + y_min: 0, + y_max: 819, + ha: 819, + o: 'm 1117 0 b 1139 101 1129 26 1139 71 b 1138 121 1139 109 1139 115 b 1084 193 1125 171 1110 193 b 1044 183 1073 193 1060 189 b 1022 177 1035 179 1028 177 b 1007 209 1012 177 1008 186 b 876 324 1004 292 959 330 b 799 317 850 321 825 320 b 759 354 772 314 755 320 b 760 373 760 360 760 366 b 759 392 760 379 760 384 b 681 477 753 451 730 477 b 654 474 672 477 664 475 b 606 467 638 471 622 468 b 586 465 599 465 592 465 b 564 481 570 465 564 469 b 569 505 564 487 566 495 b 575 553 572 521 575 537 b 572 585 575 564 573 575 b 481 665 560 657 539 668 b 412 665 458 664 435 665 b 382 690 392 667 382 672 b 383 700 382 693 383 696 b 386 773 387 724 387 749 b 297 858 382 828 351 857 b 229 861 274 858 251 858 b 190 897 207 863 193 871 b 163 1012 186 936 180 976 b 79 1084 145 1050 124 1084 b 66 1083 75 1084 71 1083 b 43 1096 49 1081 43 1087 b 48 1112 43 1100 45 1106 b 53 1130 52 1119 53 1125 b 39 1169 53 1145 45 1158 b 26 1179 36 1175 30 1179 b 16 1171 22 1179 17 1176 b 0 1103 10 1149 0 1126 b 9 1067 0 1092 1 1079 b 91 1021 26 1031 52 1018 b 145 978 122 1024 141 1011 b 156 913 147 956 151 935 b 291 795 170 831 210 795 b 346 768 337 795 346 796 b 344 743 346 760 344 753 b 343 716 344 733 343 724 b 455 600 343 651 390 602 b 505 605 471 599 490 605 b 528 598 514 605 523 603 b 536 579 534 592 536 586 b 524 523 536 562 526 541 b 523 505 524 517 523 511 b 621 405 523 442 560 405 b 639 406 626 405 634 406 b 677 413 652 408 664 410 b 701 416 687 415 696 416 b 721 392 716 416 721 410 b 720 373 721 386 720 380 b 831 255 714 301 759 252 b 897 261 854 255 876 261 b 926 262 909 261 919 262 b 969 197 963 262 965 252 b 971 184 969 193 971 189 b 1031 115 979 137 998 115 b 1071 122 1043 115 1056 118 b 1096 130 1079 125 1086 127 b 1087 59 1094 107 1087 82 b 1117 0 1087 37 1094 17 z', + }, + brassBend: { + x_min: 0, + x_max: 381, + y_min: 0, + y_max: 367, + ha: 367, + o: 'm 298 0 b 472 50 359 0 418 14 b 537 135 501 71 530 92 b 543 216 543 163 543 190 l 543 266 b 544 308 543 281 543 295 b 549 433 546 354 549 395 b 543 507 549 459 547 482 b 533 528 541 516 544 528 b 511 508 524 528 514 520 b 508 478 510 498 508 488 b 504 318 507 425 504 372 b 505 264 504 300 505 282 b 446 181 505 220 484 199 b 294 150 396 160 344 150 b 92 194 226 150 158 167 b 45 269 62 207 45 230 b 46 359 46 300 46 328 b 37 497 46 405 45 451 b 27 523 36 507 37 523 b 4 498 14 524 6 513 b 3 481 3 492 3 487 b 0 409 1 456 0 433 b 4 228 0 348 4 288 b 3 177 4 210 4 194 b 68 53 1 125 20 84 b 200 10 108 27 154 17 b 298 0 233 4 266 0 z', + }, + brassMuteClosed: { + x_min: 0, + x_max: 274, + y_min: 0, + y_max: 260, + ha: 260, + o: 'm 203 0 b 209 1 206 0 207 0 b 216 13 215 4 216 9 l 215 27 l 215 153 b 216 161 216 156 216 158 b 372 164 268 163 318 164 b 395 184 383 164 395 166 l 395 189 b 357 229 392 209 386 229 b 219 228 311 229 265 228 l 223 310 b 209 357 225 328 219 344 b 189 374 203 364 197 374 b 184 373 187 374 186 373 b 177 359 179 372 177 366 l 177 348 l 173 222 l 39 222 b 0 206 12 222 0 219 b 10 174 0 199 3 189 b 46 157 19 157 30 157 b 108 160 68 158 88 160 b 171 161 130 161 150 161 l 167 58 b 184 16 167 40 171 26 b 203 0 192 12 196 0 z', + }, + brassMuteOpen: { + x_min: 1, + x_max: 313.01193341111656, + y_min: 0, + y_max: 309, + ha: 309, + o: 'm 265 0 b 451 189 363 7 452 88 l 451 215 b 348 383 441 285 405 343 b 209 445 288 426 248 445 b 84 379 168 445 132 420 b 69 364 79 373 73 369 b 1 213 30 323 1 275 b 230 0 1 88 94 0 z m 210 62 b 128 73 181 62 154 66 b 40 171 71 91 42 125 b 52 226 40 187 45 206 b 197 374 79 295 130 344 b 228 382 207 380 217 382 b 300 361 252 382 276 370 b 374 308 328 350 353 331 b 410 223 397 284 410 253 b 393 163 410 202 405 181 b 210 62 354 91 288 63 z', + }, + brassFlip: { + x_min: 0, + x_max: 402, + y_min: 0, + y_max: 361, + ha: 361, + o: 'm 579 0 b 511 153 579 68 557 117 b 52 504 359 271 206 387 b 29 520 45 510 39 520 b 20 517 26 520 23 518 b 0 477 3 510 0 494 l 0 125 b 17 20 1 92 1 56 b 40 84 37 40 40 60 b 42 287 40 151 42 219 l 42 363 z', + }, + brassJazzTurn: { + x_min: 0, + x_max: 646, + y_min: 0, + y_max: 212, + ha: 212, + o: 'm 310 0 b 367 33 327 0 344 10 b 389 55 374 40 382 49 b 490 145 423 85 456 114 b 507 154 495 151 501 154 b 524 144 513 154 517 151 b 598 72 547 120 575 98 b 700 24 625 42 662 24 b 765 43 721 24 744 30 b 893 147 812 72 855 105 b 930 212 910 166 923 186 b 912 215 923 213 917 215 b 871 199 896 215 883 209 b 812 153 852 183 832 167 b 789 144 805 148 796 144 b 773 156 782 144 776 147 b 691 251 757 199 720 222 b 603 301 658 282 631 301 b 527 258 580 301 556 288 b 420 156 494 222 455 190 b 399 143 412 147 405 143 b 377 157 392 143 386 147 b 259 282 340 200 300 242 b 219 305 245 298 232 305 b 177 279 204 305 192 297 b 55 127 137 228 95 177 b 0 52 36 104 20 79 b 14 50 6 50 10 50 b 53 66 32 50 45 58 b 115 131 75 88 98 108 b 135 148 124 143 130 148 b 157 132 141 148 148 143 b 252 33 186 96 219 65 b 310 0 275 12 292 0 z', + }, + brassSmear: { + x_min: 0, + x_max: 334, + y_min: 0, + y_max: 151, + ha: 151, + o: 'm 321 0 b 475 125 390 0 436 43 b 481 143 478 131 481 137 b 475 154 481 147 480 151 b 449 148 468 158 458 154 b 395 132 432 137 413 132 b 343 140 377 132 360 137 b 229 194 301 148 266 173 b 168 217 206 209 186 217 b 109 192 148 217 130 209 b 0 26 59 148 32 89 b 59 63 32 29 45 48 b 98 84 72 78 84 84 b 130 73 108 84 118 81 b 213 26 157 58 183 37 b 321 0 255 9 289 0 z', + }, + stringsDownBow: { + x_min: 0, + x_max: 306, + y_min: -0.09607201951262866, + y_max: 366, + ha: 366.09607201951263, + o: 'm 405 0 b 425 17 413 -1 420 9 b 439 66 435 32 439 48 b 441 268 439 137 441 202 b 436 412 441 314 439 361 l 435 413 b 423 469 435 436 431 456 b 344 508 406 501 373 501 b 204 527 298 520 251 527 b 60 498 156 527 108 518 b 7 438 32 485 10 468 l 7 426 b 4 337 7 396 7 367 b 0 140 0 272 0 206 b 1 42 0 107 0 73 b 13 3 1 27 -3 4 b 40 39 29 3 35 24 b 42 53 42 43 40 49 b 49 141 48 84 49 112 b 48 215 49 167 48 192 b 49 252 48 228 48 240 l 49 312 b 130 343 72 331 99 340 b 206 347 156 346 180 347 b 372 314 262 347 318 338 l 390 307 l 390 245 b 390 138 392 212 390 176 b 397 23 390 101 392 62 b 405 0 399 14 393 1 z', + }, + stringsUpBow: { + x_min: 0, + x_max: 219.2842808242076, + y_min: 0, + y_max: 489, + ha: 489, + o: 'm 151 0 b 184 42 170 12 180 26 b 297 554 223 212 261 382 b 315 690 305 598 318 645 b 304 704 315 697 311 704 b 276 670 288 704 282 697 b 157 131 236 490 196 311 l 157 144 b 73 526 134 276 104 396 b 30 677 60 576 52 638 b 13 694 26 684 22 694 b 0 674 9 694 0 691 l 0 671 b 10 603 3 649 6 626 b 105 174 42 461 72 317 b 150 0 117 117 128 58 z', + }, + stringsHarmonic: { + x_min: 0, + x_max: 191, + y_min: 0, + y_max: 202, + ha: 202, + o: 'm 143 0 b 275 122 217 0 275 53 b 127 291 275 206 202 291 b 0 154 63 291 0 222 b 143 0 0 76 71 0 z m 122 68 b 43 105 89 66 59 75 b 39 124 40 111 39 117 b 79 199 39 148 56 180 b 145 226 101 216 122 226 b 199 210 163 226 180 220 b 235 150 223 196 235 173 b 203 92 235 128 225 107 b 122 68 181 76 150 68 z', + }, + pluckedSnapPizzicatoAbove: { + x_min: 0, + x_max: 201, + y_min: 0, + y_max: 325, + ha: 325, + o: 'm 171 0 b 289 99 240 0 289 45 b 258 183 289 130 274 156 b 174 269 236 217 203 240 l 174 408 b 174 429 174 415 176 422 b 131 468 168 451 153 468 b 117 451 120 468 117 461 b 118 429 117 444 118 435 b 115 307 117 389 115 347 b 0 166 59 295 0 223 b 171 0 0 85 89 0 z m 134 55 b 52 131 84 55 52 85 b 115 233 52 179 81 209 b 114 192 114 220 114 206 b 174 120 114 137 114 137 l 174 228 b 233 148 200 207 223 183 b 236 130 235 143 236 135 b 197 72 236 105 223 85 b 134 55 177 60 157 55 z', + }, + pluckedSnapPizzicatoBelow: { + x_min: 0, + x_max: 211, + y_min: 0, + y_max: 307, + ha: 307, + o: 'm 145 7 b 163 0 153 3 158 0 b 173 23 170 0 173 7 l 173 140 l 170 140 l 170 163 l 171 163 b 206 170 179 164 193 166 b 304 287 264 186 304 233 b 281 354 304 308 297 333 b 118 442 240 412 186 439 b 0 324 69 442 0 370 b 115 176 0 266 55 202 l 115 56 b 145 7 114 33 125 19 z m 115 220 b 62 256 92 223 73 230 b 53 292 56 269 53 281 b 78 344 53 311 60 328 b 168 384 105 372 135 384 b 213 376 183 384 199 382 b 253 321 239 366 253 346 b 246 291 253 311 251 301 b 170 226 230 256 203 236 l 170 258 b 148 305 171 278 163 292 b 128 315 143 310 135 315 l 124 315 b 115 301 117 314 115 308 z', + }, + pluckedLeftHandPizzicato: { + x_min: 0, + x_max: 271, + y_min: 0, + y_max: 284, + ha: 284, + o: 'm 213 0 b 223 14 222 0 223 7 b 222 35 223 22 222 29 l 222 176 b 373 170 272 174 323 170 b 390 180 382 170 390 171 l 390 184 b 347 232 386 207 382 232 b 219 238 307 233 266 235 l 219 364 b 171 409 219 395 193 409 b 156 393 160 409 156 402 b 158 370 156 384 158 376 l 158 240 b 16 239 115 240 66 239 b 0 226 7 239 0 238 l 0 223 b 50 179 1 203 29 179 b 158 177 86 179 122 179 l 158 63 b 161 29 158 52 158 40 b 213 0 166 -1 194 1 z', + }, + keyboardPedalPed: { + x_min: 0, + x_max: 944, + y_min: -13, + y_max: 550, + ha: 563, + o: 'm 22 0 b 109 78 53 0 105 46 l 144 333 b 163 376 147 347 140 372 b 364 465 238 390 301 426 b 454 599 416 497 454 540 b 452 618 454 605 454 612 b 320 770 442 694 396 747 b 248 779 295 778 272 779 b 193 778 229 779 212 779 b 160 780 181 778 167 775 b 137 792 153 789 144 791 b 109 789 128 792 118 789 b 7 719 59 789 48 737 b 23 708 16 714 20 708 b 36 710 29 710 33 710 b 53 684 52 710 53 698 l 53 674 b 43 386 53 577 53 482 b 20 164 36 312 30 238 b 1 30 14 120 7 75 b 0 19 0 26 0 22 b 22 0 0 9 4 0 z m 171 425 b 156 442 160 425 156 429 b 157 475 157 452 157 464 b 164 602 161 517 164 560 b 161 698 164 635 163 667 b 184 729 161 720 167 729 l 193 729 b 348 563 278 719 348 641 b 346 539 348 554 347 547 b 171 425 328 459 229 422 z m 979 6 b 1008 13 986 6 995 9 b 1081 101 1047 29 1079 46 b 1116 449 1087 217 1104 333 b 1143 654 1123 518 1133 586 b 1148 685 1145 664 1148 675 b 1140 704 1148 693 1146 700 b 1107 716 1130 713 1119 716 b 1056 706 1092 716 1073 710 b 1037 671 1035 703 1038 685 b 1004 439 1025 595 1014 517 b 986 419 1001 428 999 419 b 979 419 985 419 982 420 b 935 426 965 423 949 425 b 795 376 884 426 838 405 b 664 153 714 323 664 249 b 665 130 664 145 665 138 b 753 29 671 65 704 29 b 815 40 773 29 792 33 b 975 147 873 65 923 101 b 965 45 971 108 968 76 b 979 6 963 17 966 6 z m 393 -17 b 634 145 494 16 579 52 b 638 160 636 151 638 156 b 625 168 638 166 634 168 b 621 167 624 168 622 168 b 524 118 582 164 544 160 b 495 79 517 104 505 92 b 435 33 471 49 452 33 b 380 96 416 33 397 55 b 369 145 373 114 369 131 b 442 225 369 186 395 213 b 468 232 451 228 459 229 b 654 344 539 255 606 285 b 677 395 667 360 677 376 b 672 415 677 402 675 408 b 612 459 661 442 639 455 b 589 461 602 461 592 461 b 348 328 500 461 409 408 b 269 120 302 268 269 199 b 379 -19 269 45 318 -19 b 393 -17 383 -19 389 -19 z m 395 240 b 494 383 418 300 452 344 l 521 405 b 544 419 528 409 536 418 b 554 415 547 419 550 418 b 570 383 564 406 570 396 l 570 379 b 552 331 570 360 562 344 b 395 240 511 285 462 253 z m 827 89 b 792 111 815 89 804 96 b 766 204 775 131 766 158 b 845 360 772 256 799 314 b 871 372 854 369 863 372 b 897 366 880 372 888 369 b 978 279 942 353 963 320 b 976 259 981 272 981 265 b 858 104 942 203 909 147 b 827 89 847 94 837 89 z m 1282 12 b 1336 35 1303 14 1320 23 b 1359 71 1351 45 1359 58 b 1338 102 1359 82 1352 95 b 1254 130 1312 118 1284 130 b 1187 88 1223 130 1202 109 b 1178 65 1182 81 1178 72 b 1195 37 1178 55 1182 45 b 1282 12 1223 23 1253 19 z', + }, + keyboardPedalUp: { + x_min: 0, + x_max: 436.6015132318337, + y_min: 0, + y_max: 461, + ha: 461, + o: 'm 330 0 b 334 1 331 0 333 0 b 340 12 338 4 340 7 l 338 26 b 340 264 338 105 338 184 b 526 95 400 206 461 148 b 559 71 536 88 547 71 b 564 72 560 71 563 71 b 580 121 580 79 580 102 l 580 127 b 543 203 585 158 573 184 b 472 259 518 219 495 238 l 445 285 b 590 292 494 288 541 291 b 622 318 609 294 618 302 b 628 359 625 331 626 346 b 586 402 632 393 621 405 b 464 395 546 399 504 396 l 559 491 b 567 524 567 500 567 510 b 564 543 567 527 567 536 b 539 596 559 563 560 590 b 494 564 521 600 508 577 b 340 413 442 514 390 464 l 340 560 b 287 664 340 600 321 632 b 271 518 274 612 272 566 b 268 445 269 494 269 469 b 117 569 219 488 168 530 b 96 579 109 575 102 579 b 85 560 89 579 85 573 b 124 446 85 518 82 477 b 209 380 153 426 181 403 b 45 374 154 377 99 376 b 0 324 9 374 0 359 b 63 266 0 265 1 265 b 144 272 89 269 117 272 l 196 272 b 108 193 167 246 138 219 b 60 135 76 164 60 151 b 99 73 60 121 73 105 b 104 68 101 72 102 71 b 114 58 107 60 111 58 b 130 66 120 58 124 62 b 259 186 173 107 217 145 b 256 117 259 163 256 140 b 311 13 256 72 271 37 b 330 0 317 10 323 0 z', + }, + pictChokeCymbal: { + x_min: 1, + x_max: 147, + y_min: 0, + y_max: 242, + ha: 242, + o: 'm 79 4 b 207 158 153 32 192 88 b 212 200 210 173 212 187 b 143 336 212 253 187 298 b 98 348 131 344 115 348 b 4 295 60 348 16 327 b 1 276 1 289 1 282 b 9 249 1 266 3 258 b 121 183 35 206 72 183 b 156 186 132 183 144 183 b 26 53 134 115 91 73 b 7 39 13 49 7 45 b 19 20 7 33 12 27 b 59 0 30 9 43 0 b 79 4 65 0 72 1 z', + }, + wiggleArpeggiatoUp: { + x_min: -22, + x_max: 300, + y_min: 0, + y_max: 176, + ha: 176, + o: 'm 173 4 b 196 0 180 1 189 0 b 246 26 215 0 230 9 b 301 117 271 53 285 85 b 312 131 305 125 307 131 b 327 124 315 131 321 128 b 373 86 341 112 353 101 b 412 69 389 75 402 69 b 432 94 425 69 432 79 b 373 181 432 117 413 154 b 235 252 323 216 285 245 b 220 253 229 253 225 253 b 168 215 196 253 181 240 b 111 112 151 180 140 141 b 94 102 105 105 99 102 b 78 111 89 102 84 105 b 0 181 55 135 35 160 b -32 153 -20 194 -32 168 b 0 86 -32 124 -32 109 b 94 36 22 71 73 46 b 173 4 134 16 131 17 z', + }, + arpeggiatoUp: { + x_min: 0, + x_max: 262, + y_min: 0, + y_max: 1459, + ha: 1459, + o: 'm 190 0 b 160 63 187 29 170 45 b 145 108 150 81 145 95 b 183 163 145 128 157 145 b 300 246 222 190 262 216 b 347 318 333 272 347 295 b 301 393 347 341 331 364 b 258 413 289 403 272 408 b 145 449 220 425 183 436 b 117 464 135 452 120 452 b 140 491 115 477 128 484 b 294 593 192 526 243 557 b 330 647 318 611 330 626 b 314 693 330 660 324 675 b 262 736 302 714 285 729 b 170 763 230 744 200 753 b 122 783 153 768 125 768 b 160 831 120 804 143 818 b 288 922 202 861 246 890 b 333 999 318 945 333 972 b 266 1083 333 1032 310 1064 b 189 1115 240 1094 215 1103 b 122 1178 145 1133 122 1153 b 168 1250 122 1200 138 1223 l 180 1257 b 269 1333 210 1283 240 1306 b 305 1405 294 1356 305 1381 b 284 1469 305 1426 298 1447 b 228 1525 269 1492 251 1511 b 183 1600 197 1545 183 1571 b 190 1640 183 1613 184 1626 b 197 1670 193 1650 194 1660 b 272 1735 213 1719 230 1735 b 295 1734 279 1735 287 1735 b 323 1732 305 1732 314 1732 b 350 1731 333 1732 341 1732 b 377 1742 369 1729 377 1732 b 370 1761 377 1747 374 1754 l 301 1898 b 217 2066 274 1954 248 2012 b 186 2101 204 2089 196 2101 b 154 2069 177 2101 167 2091 b 12 1824 105 1987 59 1907 b 0 1787 4 1810 0 1797 b 59 1744 0 1761 20 1745 b 160 1738 92 1744 125 1740 b 145 1692 156 1721 151 1706 b 135 1633 138 1672 135 1652 b 184 1518 135 1591 151 1552 b 229 1475 199 1503 213 1488 b 259 1431 249 1456 259 1444 b 229 1388 259 1420 249 1407 b 151 1325 203 1365 177 1345 b 105 1279 134 1310 118 1296 b 73 1202 84 1251 73 1227 b 108 1123 73 1176 85 1152 b 255 1031 148 1077 199 1051 b 282 1014 274 1025 282 1021 b 262 991 282 1008 275 1001 b 151 914 226 963 189 939 b 79 851 125 896 99 877 b 63 809 69 837 63 824 b 79 769 63 796 68 783 b 202 697 111 729 154 710 b 266 670 225 690 266 688 b 210 622 266 648 232 635 b 82 534 167 593 120 570 b 55 491 63 518 55 505 b 79 448 55 478 63 465 b 255 361 127 395 192 380 b 288 343 269 359 288 357 b 266 312 288 331 275 320 b 144 223 229 278 184 253 b 85 134 104 193 85 166 b 118 53 85 111 96 85 b 190 0 135 29 160 14 z', + }, + arpeggiatoDown: { + x_min: 0, + x_max: 218, + y_min: 0, + y_max: 1440, + ha: 1440, + o: 'm 161 16 b 310 261 210 98 259 180 b 314 275 312 266 314 271 b 302 295 314 282 310 289 b 252 311 287 308 269 311 b 217 310 240 311 229 310 b 190 333 202 310 194 315 b 151 412 186 363 171 389 b 102 501 120 452 102 477 b 150 588 102 524 118 547 b 161 603 154 592 158 598 b 181 661 176 622 181 641 b 173 704 181 675 179 690 b 86 795 156 746 121 770 b 53 829 63 811 53 819 b 78 868 53 840 62 851 b 102 888 85 876 94 883 b 180 956 128 912 156 933 b 216 1028 204 979 216 1002 b 203 1081 216 1044 212 1061 b 115 1171 186 1123 148 1145 b 75 1221 88 1191 75 1207 b 114 1272 75 1237 88 1251 b 173 1308 132 1284 154 1296 b 226 1339 190 1318 209 1328 b 265 1405 253 1359 265 1380 b 258 1447 265 1418 264 1431 b 154 1541 242 1499 199 1521 b 109 1581 124 1555 109 1567 b 141 1627 109 1594 121 1608 b 204 1680 163 1646 184 1662 b 233 1742 223 1699 233 1719 b 226 1777 233 1752 230 1764 b 135 1862 210 1822 173 1840 b 104 1895 114 1875 104 1884 b 118 1930 104 1904 109 1914 b 192 2006 135 1961 161 1986 b 206 2029 203 2013 206 2022 b 192 2064 206 2040 197 2052 b 180 2074 187 2071 184 2074 b 156 2061 171 2074 163 2065 b 84 1983 125 2040 102 2013 b 65 1921 71 1961 65 1941 b 88 1853 65 1899 72 1876 b 171 1784 108 1820 138 1801 b 190 1764 184 1777 190 1770 b 174 1741 190 1757 184 1750 b 107 1683 153 1722 128 1704 b 68 1610 81 1659 68 1636 b 88 1548 68 1591 75 1571 b 177 1470 109 1512 141 1489 b 223 1431 209 1453 223 1443 b 179 1390 223 1420 209 1408 b 128 1361 163 1380 145 1371 b 71 1322 108 1348 88 1338 b 32 1253 45 1300 32 1277 b 48 1198 32 1236 37 1218 b 147 1090 71 1152 108 1120 b 174 1057 166 1076 174 1067 b 153 1022 174 1047 167 1037 b 109 982 140 1008 124 995 b 37 919 85 962 59 942 b 9 860 17 899 9 880 b 26 806 9 844 14 827 b 120 717 50 769 84 740 b 138 691 132 708 138 700 b 130 668 138 684 135 677 b 92 618 118 651 105 635 b 59 531 71 589 59 560 b 84 455 59 507 68 481 b 132 386 98 431 115 408 b 148 341 144 372 148 357 b 144 317 148 333 147 324 b 121 305 140 307 131 305 l 98 305 b 82 304 94 304 88 304 l 32 304 b 0 292 10 304 0 302 b 12 266 0 287 4 279 b 60 164 32 233 46 199 b 127 20 84 117 105 68 b 144 0 132 9 137 0 b 161 16 150 0 154 4 z', + }, + repeat1Bar: { + x_min: 0, + x_max: 599.1057280164835, + y_min: -250, + y_max: 175, + ha: 425, + o: 'm 216 98 b 255 75 236 84 246 75 b 291 104 265 75 274 85 b 323 147 304 117 327 125 b 289 215 323 168 314 184 b 238 252 269 239 253 252 b 187 222 222 252 207 242 b 173 206 183 216 177 212 b 157 170 163 194 157 183 b 174 138 157 160 161 150 b 216 98 189 127 200 109 z m 76 -334 b 181 -285 111 -315 148 -302 b 831 52 396 -168 613 -58 b 863 114 855 63 864 82 b 828 202 855 140 855 176 b 808 213 821 209 815 213 b 793 209 804 213 799 212 l 422 19 b 26 -179 291 -48 164 -124 b 0 -213 10 -186 0 -196 b 3 -232 0 -219 0 -225 b 52 -325 14 -265 37 -294 b 66 -337 55 -331 59 -337 b 76 -334 69 -337 72 -336 z m 769 -360 b 829 -264 779 -360 829 -284 b 769 -176 822 -232 799 -200 b 742 -163 760 -167 750 -163 b 716 -184 733 -163 723 -168 b 683 -228 708 -202 693 -213 b 672 -253 675 -236 672 -245 b 683 -281 672 -262 675 -271 b 752 -353 703 -308 732 -327 b 769 -360 756 -357 763 -360 z', + }, + repeat2Bars: { + x_min: 0.008571918423331715, + x_max: 775, + y_min: -246.92374029115243, + y_max: 362.82068246705313, + ha: 609.7444227582056, + o: 'm 909 412 b 873 351 906 384 893 367 b 436 50 729 249 585 147 l 91 -179 b 62 -174 76 -189 68 -183 b 12 -96 48 -147 24 -125 b 36 -16 -7 -53 -6 -43 b 220 104 96 24 158 65 b 819 507 425 232 624 369 b 881 495 852 530 861 528 b 909 412 899 469 900 439 z m 333 338 b 302 240 330 307 317 274 b 276 235 297 225 287 228 l 233 269 b 203 376 186 307 183 318 b 225 441 212 397 217 419 b 246 454 228 452 232 458 b 333 338 284 441 333 380 z m 1116 228 b 1067 158 1115 192 1092 174 b 910 59 1015 125 963 92 b 478 -240 762 -33 622 -140 b 311 -350 423 -279 366 -314 b 285 -344 298 -360 289 -356 b 239 -258 272 -314 251 -288 b 261 -196 228 -228 235 -210 b 517 -29 348 -144 436 -91 b 1030 321 681 98 861 202 b 1093 307 1060 343 1076 340 b 1116 228 1107 281 1109 252 z m 1070 -105 b 1020 -210 1057 -143 1038 -176 b 998 -210 1014 -219 1004 -215 l 924 -153 b 913 -88 899 -135 897 -112 b 949 -22 926 -66 939 -45 b 998 -7 960 6 976 9 b 1070 -105 1032 -32 1058 -63 z', + }, + repeat4Bars: { + x_min: 0, + x_max: 1374, + y_min: -304, + y_max: 304, + ha: 608, + o: 'm 78 -266 b 92 -258 82 -266 88 -264 b 114 -240 98 -251 107 -246 b 638 107 289 -125 467 -14 b 873 271 716 161 793 216 b 907 337 894 285 906 305 b 887 400 901 354 897 379 b 852 438 877 426 867 438 b 814 420 842 438 829 432 b 135 -33 592 262 366 111 b 12 -121 92 -60 48 -84 b 0 -144 4 -128 0 -135 b 4 -160 0 -148 1 -154 b 63 -255 17 -196 45 -223 b 78 -266 68 -262 72 -266 z m 291 148 b 325 223 302 148 308 170 b 333 256 328 235 330 246 b 264 363 330 305 298 336 b 242 373 255 369 248 373 b 220 347 232 373 225 364 b 202 288 216 327 213 305 b 190 252 193 275 190 262 b 222 200 190 232 202 215 b 291 148 264 170 279 148 z m 815 -367 b 829 -359 819 -367 824 -364 b 851 -343 835 -353 844 -347 b 1375 6 1027 -228 1205 -117 l 1610 170 b 1644 235 1632 184 1643 203 b 1626 300 1639 253 1634 276 b 1590 337 1614 325 1604 337 b 1551 320 1580 337 1567 330 b 873 -135 1329 161 1103 10 b 749 -222 829 -161 785 -184 b 737 -245 742 -230 737 -238 b 742 -261 737 -249 739 -255 b 802 -357 755 -297 782 -325 b 815 -367 805 -363 809 -367 z m 396 -360 b 408 -356 400 -360 403 -359 b 609 -223 471 -307 543 -269 b 896 -19 706 -156 795 -81 b 1164 154 985 37 1074 96 b 1214 223 1189 170 1211 187 b 1176 321 1204 253 1205 292 b 1159 330 1169 327 1165 330 b 1145 324 1155 330 1151 328 b 1048 258 1113 302 1081 278 b 357 -202 809 117 598 -65 b 333 -238 341 -212 333 -223 b 338 -262 333 -245 334 -253 b 384 -350 350 -294 372 -318 b 396 -360 386 -354 390 -360 z m 1162 -438 b 1174 -433 1166 -438 1169 -436 b 1374 -300 1237 -384 1309 -346 b 1660 -96 1470 -233 1561 -158 b 1930 76 1751 -39 1840 19 b 1979 147 1954 92 1977 109 b 1943 243 1968 177 1971 216 b 1924 253 1935 251 1930 253 b 1911 248 1920 253 1915 252 b 1814 181 1878 225 1848 202 b 1123 -279 1575 40 1364 -141 b 1099 -315 1106 -289 1099 -300 b 1103 -338 1099 -321 1100 -330 b 1149 -426 1115 -370 1138 -396 b 1162 -438 1151 -432 1156 -438 z m 1875 -295 b 1882 -291 1878 -295 1879 -294 b 1934 -189 1904 -258 1921 -223 b 1872 -96 1925 -147 1901 -120 b 1840 -78 1858 -84 1848 -78 b 1812 -109 1830 -78 1823 -88 l 1777 -173 b 1770 -199 1773 -181 1770 -190 b 1786 -230 1770 -210 1774 -220 b 1862 -289 1809 -253 1837 -269 b 1875 -295 1865 -292 1871 -295 z', + }, + repeatBarSlash: { + x_min: 0, + x_max: 630, + y_min: -225.19160170741762, + y_max: 265.12618221237005, + ha: 490.31778391978764, + o: 'm 78 -324 b 92 -314 82 -325 88 -321 b 114 -298 96 -307 107 -302 b 638 49 289 -183 467 -72 b 873 215 716 104 792 161 b 907 279 894 229 906 248 b 887 344 901 298 897 321 b 852 382 877 369 867 380 b 814 363 842 383 829 376 b 135 -91 603 192 364 55 b 12 -177 92 -118 45 -137 b 0 -202 4 -186 0 -192 b 4 -217 0 -206 1 -212 b 63 -312 17 -253 42 -284 b 78 -324 68 -318 72 -323 z', + }, + csymDiminished: { + x_min: 0, + x_max: 506, + y_min: -0.011036179317259481, + y_max: 500, + ha: 500.0110361793173, + o: 'm 397 0 b 729 265 576 -1 729 95 b 711 367 729 297 723 331 b 472 670 668 498 586 595 b 315 720 423 701 372 720 b 253 713 295 720 275 719 b 32 514 144 687 75 615 b 0 374 12 468 0 420 b 27 251 0 333 9 292 b 140 117 52 196 92 153 b 397 0 223 52 317 4 z m 340 95 b 132 314 233 84 122 216 b 324 589 145 438 200 539 b 415 611 360 603 389 611 b 544 505 469 611 505 576 b 590 392 564 471 583 432 b 596 343 593 374 596 359 b 340 95 596 210 485 96 z', + }, + csymHalfDiminished: { + x_min: -32, + x_max: 496, + y_min: -33, + y_max: 492, + ha: 525, + o: 'm -29 -48 b 0 -36 -19 -48 -9 -40 b 17 -20 7 -32 12 -24 b 134 94 56 19 95 56 b 372 0 207 43 282 0 b 455 13 397 0 426 4 b 677 258 556 45 671 141 b 678 289 677 268 678 278 b 593 539 678 380 654 467 b 592 541 593 540 592 540 l 684 632 b 713 678 700 647 711 665 b 714 691 714 684 714 688 b 707 704 714 698 711 701 b 691 708 701 707 696 708 b 660 691 680 708 670 701 l 552 585 b 478 634 530 606 507 624 b 361 684 438 648 397 661 b 301 703 341 697 320 703 b 226 677 275 703 251 693 b 27 449 140 618 72 543 b 0 324 9 410 -4 370 b 88 128 -1 243 30 177 b -30 -7 43 86 0 46 b -46 -33 -35 -16 -46 -24 b -42 -42 -46 -36 -45 -39 b -29 -48 -37 -46 -33 -48 z m 141 179 b 121 251 128 200 121 225 b 128 297 121 265 124 281 b 351 575 163 420 248 505 b 377 582 359 579 369 580 b 501 536 422 586 468 567 b 141 179 382 416 261 298 z m 281 105 b 179 137 240 105 206 117 b 210 168 189 147 200 157 l 537 487 b 547 455 541 477 544 467 b 556 370 552 426 556 397 b 429 154 556 274 503 207 b 281 105 384 122 336 105 z', + }, + csymAugmented: { + x_min: 0, + x_max: 530, + y_min: 0, + y_max: 539, + ha: 539, + o: 'm 380 0 b 393 14 384 4 390 9 b 397 46 397 24 397 36 l 397 333 b 736 327 511 331 624 330 b 763 343 755 327 763 333 b 755 361 763 348 760 354 b 635 431 726 402 688 431 l 390 431 l 390 485 b 386 606 392 526 386 566 b 392 664 386 625 387 645 b 395 690 393 672 395 681 b 376 753 395 711 389 734 b 357 776 372 762 369 776 b 350 775 354 776 353 776 b 327 740 337 769 327 759 b 327 621 328 700 327 661 b 330 438 328 559 328 498 l 29 438 b 4 431 20 438 7 442 b 0 413 3 425 0 419 b 7 399 0 408 1 403 b 131 338 45 369 85 340 b 331 334 199 336 265 334 b 333 163 333 276 333 220 b 366 13 333 109 348 63 b 380 0 367 7 374 4 z', + }, + csymMajorSeventh: { + x_min: 0, + x_max: 593.1050509327923, + y_min: 0, + y_max: 569, + ha: 569, + o: 'm 124 1 l 497 27 b 819 50 605 35 711 43 b 854 98 847 52 855 63 b 812 200 845 128 835 166 b 564 585 730 328 648 456 b 435 786 521 652 480 720 b 397 819 419 809 408 819 b 369 792 387 819 379 811 b 7 173 248 585 128 379 b 0 150 3 166 0 158 b 7 128 0 143 3 135 b 89 10 30 86 65 50 b 109 0 95 1 102 0 z m 163 147 b 153 153 158 147 156 148 b 164 179 147 163 158 170 b 426 644 251 334 338 488 b 442 660 432 655 436 660 b 458 645 446 660 452 655 b 727 220 547 503 636 361 b 736 202 732 213 736 206 b 714 190 736 196 730 192 b 179 148 537 177 359 163 b 163 147 174 150 168 147 z', + }, + csymMinor: { + x_min: 0, + x_max: 481.64484584675915, + y_min: 193, + y_max: 265.20435472429375, + ha: 72.20435472429375, + o: 'm 168 278 b 197 279 177 278 187 278 b 431 292 275 287 353 288 l 431 291 b 661 302 508 295 585 300 b 693 311 672 304 688 300 b 674 346 697 324 685 338 b 564 382 641 366 606 384 l 27 360 b 0 347 17 360 1 366 b 19 314 0 333 3 321 b 168 278 66 291 115 278 z', + }, + csymParensLeftTall: { + x_min: 0, + x_max: 185, + y_min: 0, + y_max: 1034, + ha: 1034, + o: 'm 215 0 b 226 17 223 1 223 10 b 229 37 229 24 229 32 b 220 81 229 52 225 66 b 167 203 206 124 181 160 b 86 616 124 338 89 474 b 82 765 85 665 82 716 b 91 886 82 805 84 845 b 245 1319 120 1038 171 1184 b 266 1397 259 1346 266 1371 b 259 1443 266 1411 264 1427 b 226 1489 253 1463 248 1489 b 193 1454 212 1489 203 1467 b 114 1292 158 1404 140 1346 b 0 806 40 1138 0 978 b 3 721 0 779 0 750 b 1 677 1 707 1 693 b 36 418 1 593 16 504 b 144 96 62 307 95 199 b 196 12 158 66 179 39 b 212 0 200 7 204 0 z', + }, + csymParensRightTall: { + x_min: -40, + x_max: 188.5411603861406, + y_min: 0.20204102886728756, + y_max: 1058, + ha: 1057.7979589711326, + o: 'm 30 1 b 63 14 42 -3 55 6 b 122 99 86 40 108 68 b 189 258 145 153 166 204 b 271 667 239 379 268 503 b 246 852 275 708 261 780 b 10 1495 197 1077 128 1295 b -14 1524 4 1505 1 1524 b -16 1522 -14 1524 -16 1524 b -46 1489 -33 1521 -43 1503 b -58 1417 -53 1464 -58 1440 b -36 1335 -58 1390 -52 1364 b 68 1138 0 1270 35 1204 b 163 883 108 1056 137 969 b 206 668 184 814 200 742 b 207 631 207 655 207 642 b 166 426 207 560 192 492 b 46 143 130 330 111 228 b 19 29 19 109 17 69 b 30 1 20 19 24 3 z', + }, + csymBracketLeftTall: { + x_min: 0, + x_max: 328, + y_min: 2, + y_max: 807, + ha: 805, + o: 'm 68 3 b 76 4 71 3 73 3 b 186 13 112 12 150 13 b 240 13 204 13 222 13 l 287 13 b 379 17 317 13 348 13 b 472 121 435 24 472 69 b 467 156 472 132 469 144 b 446 174 462 168 456 174 l 439 174 b 327 166 402 167 364 166 b 265 167 307 166 285 167 l 209 167 b 187 475 199 269 189 372 b 166 985 186 645 187 815 l 377 1002 b 415 1001 389 1002 402 1001 b 456 1027 432 1001 448 1005 b 472 1096 467 1048 472 1073 b 464 1146 472 1113 469 1130 b 439 1162 459 1161 452 1162 b 40 1129 305 1151 173 1139 b 1 1093 17 1128 1 1120 b 0 1009 0 1064 0 1037 b 13 975 0 991 3 981 b 30 670 23 873 30 772 b 29 608 30 649 29 628 l 29 563 b 56 88 29 405 49 246 b 53 22 55 66 55 43 b 68 3 53 12 56 3 z', + }, + csymBracketRightTall: { + x_min: 0.8519422934604696, + x_max: 306, + y_min: -0.17180889215212544, + y_max: 829.1037519824849, + ha: 829.2755608746371, + o: 'm 117 0 b 372 29 203 -3 287 20 l 373 29 b 406 32 383 30 395 30 b 436 60 428 33 432 43 b 441 109 439 76 441 92 b 433 200 441 140 436 170 b 409 696 422 366 409 530 b 416 887 409 763 416 831 b 415 920 416 899 415 910 l 415 1106 b 412 1135 415 1116 415 1126 l 412 1145 b 373 1189 413 1171 408 1192 b 321 1189 356 1189 338 1189 l 215 1189 l 215 1194 l 56 1194 b 6 1153 27 1195 10 1187 b 1 1064 3 1123 4 1093 b 22 1043 0 1050 6 1043 b 84 1044 42 1044 63 1044 b 264 1038 144 1044 203 1040 b 265 958 264 1011 265 985 b 262 845 265 920 264 883 b 259 710 259 801 259 755 b 279 243 259 554 271 399 b 285 170 281 219 284 194 b 95 151 222 161 158 156 b 29 81 27 147 27 147 l 29 73 b 105 0 33 0 33 0 z', + }, + csymParensLeftVeryTall: { + x_min: 0, + x_max: 116, + y_min: 0, + y_max: 934.1531437146923, + ha: 934.1531437146923, + o: 'm 128 0 b 147 17 137 0 144 9 b 167 102 160 45 167 73 b 158 154 167 120 164 137 b 117 307 141 204 130 256 b 63 698 84 435 71 567 b 62 788 62 729 62 757 b 69 916 62 829 63 873 b 109 1172 81 1001 94 1087 b 132 1320 118 1221 137 1269 b 124 1345 131 1329 134 1342 b 96 1332 114 1346 102 1341 b 71 1269 82 1313 75 1292 b 39 1104 59 1214 48 1159 b 0 742 19 988 0 871 b 10 559 3 688 6 624 b 58 226 16 446 33 336 b 112 20 73 157 94 89 b 128 0 115 13 118 0 z', + }, + csymParensRightVeryTall: { + x_min: -20, + x_max: 111.4332498248095, + y_min: -0.07657185734616112, + y_max: 1009, + ha: 1009.0765718573462, + o: 'm -3 0 b 20 22 9 -1 14 12 b 36 56 26 33 32 45 b 99 274 58 128 84 199 b 160 788 135 439 163 605 b 122 1181 164 912 145 1047 b 50 1431 108 1267 86 1351 b 36 1453 48 1439 46 1453 l 35 1453 l 30 1453 b 7 1423 17 1449 7 1440 b 27 1287 9 1377 10 1331 b 96 963 71 1184 85 1074 b 105 818 102 914 105 867 b 91 624 105 753 99 688 b -4 213 72 484 48 344 b -29 101 -19 174 -29 138 b -16 27 -29 76 -24 52 b -3 0 -13 17 -14 3 z', + }, + csymDiagonalArrangementSlash: { + x_min: -0.19862981551275186, + x_max: 990, + y_min: -26.946823529189132, + y_max: 1027.5514326488437, + ha: 1054.4982561780328, + o: 'm 14 -37 b 58 -9 35 -45 46 -22 b 392 333 170 105 279 217 l 765 711 b 1372 1329 968 916 1168 1125 b 1424 1439 1403 1359 1417 1397 b 1426 1457 1424 1444 1426 1450 b 1416 1477 1426 1466 1423 1475 b 1374 1462 1400 1485 1385 1473 b 1181 1269 1309 1397 1246 1331 b 736 831 1031 1122 884 979 b 356 452 609 704 485 576 b 32 132 246 347 143 236 b 0 50 7 109 1 84 b 6 9 -1 37 3 23 b 14 -37 10 -9 0 -32 z', + }, + accidentalNarrowReversedFlat: { + x_min: 0, + x_max: 208, + y_min: -231, + y_max: 449, + ha: 680, + o: 'm 272 -333 b 284 -320 278 -333 281 -328 b 300 -174 297 -272 300 -222 b 275 190 298 -52 279 68 b 268 445 272 275 268 360 l 268 490 b 264 612 269 530 265 572 b 236 647 264 632 252 645 l 235 647 b 217 618 220 647 220 628 b 207 526 210 588 207 556 b 210 432 207 494 210 464 b 216 268 213 377 215 323 l 216 230 l 215 232 b 154 256 194 240 174 251 b 111 264 138 261 124 264 b 3 153 50 264 10 223 b 0 94 0 132 0 114 b 194 -276 0 -63 68 -186 b 255 -323 215 -291 236 -307 b 272 -333 262 -330 268 -333 z m 233 -138 b 71 30 168 -92 105 -45 b 63 59 65 42 63 50 b 96 95 62 75 73 86 b 130 102 108 99 120 102 b 215 76 160 102 187 88 l 220 73 b 225 -22 220 42 222 10 b 233 -138 229 -62 230 -101 z', + }, + accidentalNarrowReversedFlatAndFlat: { + x_min: 0, + x_max: 335, + y_min: -231, + y_max: 449, + ha: 680, + o: 'm 151 490 b 148 612 151 530 150 572 b 132 647 148 632 141 645 b 122 618 124 647 124 628 b 117 526 118 588 117 556 b 118 432 117 494 118 464 b 121 268 120 377 121 323 l 121 232 b 86 256 109 240 98 251 b 62 264 78 261 69 264 b 1 153 29 264 6 223 b 0 94 0 132 0 114 b 109 -276 0 -63 37 -186 b 144 -323 121 -291 132 -307 b 153 -333 147 -330 151 -333 b 160 -320 157 -333 158 -328 b 168 -174 167 -272 168 -222 b 154 190 168 -52 157 68 b 151 445 153 275 151 360 z m 480 153 b 372 264 472 223 432 264 b 328 256 359 264 344 261 b 268 232 308 251 288 240 l 266 230 l 266 268 b 272 432 266 323 269 377 b 275 526 272 464 275 494 b 265 618 275 556 272 588 b 248 647 262 628 262 647 l 246 647 b 219 612 230 645 219 632 b 215 490 217 572 213 530 l 215 445 b 207 190 215 360 210 275 b 183 -174 203 68 183 -52 b 199 -320 183 -222 186 -272 b 210 -333 202 -328 204 -333 b 228 -323 215 -333 220 -330 b 288 -276 246 -307 268 -291 b 482 94 415 -186 482 -63 b 480 153 482 114 482 132 z m 40 30 b 36 59 36 42 36 50 b 55 95 35 75 42 86 b 73 102 60 99 68 102 b 121 76 89 102 105 88 l 124 73 b 127 -22 124 42 125 10 l 131 -138 b 40 30 95 -92 60 -43 z m 419 59 b 412 30 419 50 418 42 b 249 -138 374 -43 314 -92 b 258 -22 252 -101 253 -62 b 262 73 261 10 262 42 l 268 76 b 353 102 295 88 323 102 b 386 95 363 102 374 99 b 419 59 409 86 420 75 z', + }, + accidentalWilsonPlus: { + x_min: 0, + x_max: 298, + y_min: -218, + y_max: 218, + ha: 436, + o: 'm 232 -314 b 236 -301 236 -310 236 -305 l 236 -295 b 243 -52 239 -213 242 -132 l 369 62 b 429 200 413 101 425 147 b 416 243 429 216 428 236 b 383 225 406 251 393 232 l 377 220 b 246 98 336 177 291 138 b 249 242 248 145 246 193 b 225 304 251 265 242 287 b 209 314 220 308 215 314 b 204 312 207 314 206 312 b 196 292 196 310 196 300 b 193 184 194 256 194 220 b 187 48 192 140 190 94 b 46 -72 141 7 94 -32 b 0 -163 13 -98 0 -127 b 1 -187 0 -170 0 -179 b 10 -235 4 -203 6 -219 b 20 -255 12 -242 14 -251 b 36 -245 26 -259 30 -249 b 181 -109 85 -200 132 -154 b 176 -258 180 -158 176 -209 b 232 -314 176 -298 186 -307 z', + }, + accidentalWilsonMinus: { + x_min: 0, + x_max: 284.2093390143919, + y_min: -163, + y_max: 163, + ha: 326, + o: 'm 386 -232 b 409 -163 415 -222 408 -180 b 382 -69 410 -120 408 -89 b 32 228 264 30 141 118 b 17 235 26 233 22 235 b 3 219 9 235 3 228 b 0 157 3 199 0 179 b 29 69 0 125 6 95 b 323 -194 115 -29 222 -111 b 374 -235 338 -206 353 -235 b 386 -232 377 -235 382 -233 z', + }, + }, + fontFamily: 'Petaluma', + resolution: 1000, + generatedOn: '2022-06-26T17:47:23.560Z', +}; + + +/***/ }), + +/***/ "./src/fonts/petaluma_metrics.ts": +/*!***************************************!*\ + !*** ./src/fonts/petaluma_metrics.ts ***! + \***************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "PetalumaMetrics": () => (/* binding */ PetalumaMetrics) +/* harmony export */ }); +/** + * The Petaluma font was created by Steinberg Media. + * https://github.com/steinbergmedia/petaluma + */ +const PetalumaMetrics = { + name: 'Petaluma', + smufl: true, + stave: { + padding: 15, + endPaddingMax: 15, + endPaddingMin: 7, + unalignedNotePadding: 12, + }, + accidental: { + noteheadAccidentalPadding: 1, + leftPadding: 2, + accidentalSpacing: 3, + }, + clef: { + default: { + point: 32, + width: 26, + }, + small: { + point: 26, + width: 20, + }, + annotations: { + '8va': { + smuflCode: 'timeSig8', + default: { + point: 18, + treble: { + line: -1.4, + shiftX: 12, + }, + }, + small: { + point: 16, + treble: { + line: -0.2, + shiftX: 8, + }, + }, + }, + '8vb': { + smuflCode: 'timeSig8', + default: { + point: 18, + treble: { + line: 6, + shiftX: 10, + }, + bass: { + line: 3.5, + shiftX: 1, + }, + }, + small: { + point: 16, + treble: { + line: 5.3, + shiftX: 6, + }, + bass: { + line: 3.1, + shiftX: 0.5, + }, + }, + }, + }, + // These may no longer be necessary + lineCount: { + '8': { point: 55, shiftY: 14 }, + '7': { point: 47, shiftY: 8 }, + '6': { point: 32, shiftY: 1 }, + '5': { point: 30, shiftY: -6 }, + '4': { point: 23, shiftY: -12 }, + }, + }, + parenthesis: { + default: { + point: 39, + width: 7, + }, + gracenote: { + point: (39 * 3) / 5, + width: 3, + }, + }, + pedalMarking: { + up: { + point: 40, + }, + down: { + point: 34, + }, + }, + // These are for numeric digits, such as in time signatures + digits: { + // used by timesig + shiftLine: -1, + point: 22, + // used by tuplets + tupletPoint: 16, + shiftY: -2, + }, + articulation: { + articStaccatissimoAbove: { + padding: 2, + }, + articStaccatissimoBelow: { + padding: 2, + }, + }, + tremolo: { + default: { + point: 25, + spacing: 5, + offsetYStemUp: -5, + offsetYStemDown: 5, + offsetXStemUp: 13, + offsetXStemDown: 1, + }, + grace: { + point: 18, + spacing: 4, + offsetYStemUp: -5, + offsetYStemDown: 5, + offsetXStemUp: 8, + offsetXStemDown: 1, + }, + }, + staveRepetition: { + symbolText: { + offsetX: 12, + offsetY: 25, + spacing: 5, + }, + coda: { + offsetY: 25, + }, + segno: { + offsetY: 10, + }, + }, + noteHead: { + displaced: { + shiftX: -2, + }, + }, + stem: { + heightAdjustmentForFlag: -3, + // These are stem (Y) offsets to the note heads. To shift the + // noteheads (x-position) themselves, see glyphs.notehead.custom. + noteHead: { + noteheadTriangleUpHalf: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpBlack: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpWhole: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadXHalf: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXBlack: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXWhole: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadHalf: { + offsetYBaseStemDown: 1.8, + offsetYBaseStemUp: -1.8, + }, + noteheadBlack: { + offsetYBaseStemDown: 2, + offsetYBaseStemUp: -2, + }, + noteheadSquareWhite: { + offsetYBaseStemDown: -5, + offsetYBaseStemUp: 5, + }, + }, + }, + // Values under here are used by the Glyph class to reposition and rescale + // glyphs based on their category. This should be the first stop for + // custom font glyph repositioning. + // + // The glyph loader first looks up a specific set of settings based on the + // glyph code, and if not found, uses the defaults from the category. See + // glyphs.textNote for an example of this. + // + // Details in Glyph.lookupFontMetrics. + glyphs: { + coda: { + point: 20, + shiftX: -7, + shiftY: 8, + }, + segno: { + shiftX: -7, + }, + flag: { + shiftX: -0.77, + flag16thUp: { + shiftX: -0.75, + }, + flag32ndUp: { + shiftX: -0.85, + }, + flag64thUp: { + shiftX: -1.55, + }, + flag128thUp: { + shiftX: -1.3, + }, + flag16thDown: { + shiftX: -0.75, + }, + flag32ndDown: { + shiftX: -0.76, + }, + flag64thDown: { + shiftX: -1.5, + }, + flag128thDown: { + shiftX: -1.2, + }, + staveTempo: { + shiftX: -1, + }, + }, + clef: { + gClef: { + default: { scale: 1.1, shiftY: 1 }, + small: { shiftY: 1.5 }, + }, + fClef: { + default: { shiftY: -0.5 }, + }, + }, + ornament: { + ornamentTurn: { + scale: 1.2, + }, + ornamentTurnSlash: { + scale: 1.2, + }, + }, + stringNumber: { + verticalPadding: 8, + stemPadding: 2, + leftPadding: 5, + rightPadding: 6, + }, + stroke: { + arrowheadBlackDown: { + straight: { + shiftX: -4.5, + }, + wiggly: { + shiftX: -1, + shiftY: 1, + }, + }, + arrowheadBlackUp: { + straight: { + shiftX: -0.85, + }, + wiggly: { + shiftX: -1, + shiftY: 1, + }, + }, + }, + textNote: { + point: 34, + breathMarkTick: { + point: 36, + shiftY: 9, + }, + breathMarkComma: { + point: 36, + }, + segno: { + point: 30, + shiftX: -7, + shiftY: 8, + }, + coda: { + point: 20, + shiftX: -7, + shiftY: 8, + }, + ornamentTrill: { + shiftX: -10, + shiftY: 8, + }, + ornamentMordent: { + shiftX: -8, + }, + ornamentShortTrill: { + shiftX: -8, + }, + }, + noteHead: { + minPadding: 2, + standard: { + noteheadBlackStemUp: { + shiftX: 0.5, + }, + noteheadHalfStemUp: { + shiftX: 0.725, + }, + noteheadWholeStemUp: { + shiftX: 1, + }, + }, + custom: { + noteheadCircleXStemUp: { + shiftX: -1, + }, + noteheadCircleXStemDown: { + shiftX: 0.25, + }, + noteheadDiamondHalfStemUp: { + shiftX: 1.5, + }, + noteheadDiamondBlackStemUp: { + shiftX: 1.5, + }, + noteheadDiamondWholeStemUp: { + shiftX: 1, + }, + noteheadXBlackStemUp: { + shiftX: 1, + }, + noteheadXHalfStemUp: { + shiftX: -3, + }, + noteheadXHalfStemDown: { + shiftX: 1, + }, + noteheadXWholeStemUp: { + shiftX: -7, + }, + noteheadXWholeStemDown: { + shiftX: 1, + }, + noteheadXDoubleWholeStemUp: { + shiftX: -12, + }, + noteheadXDoubleWholeStemDown: { + shiftX: -4, + }, + noteheadSquareWhiteStemDown: { + shiftX: 0.25, + }, + noteheadSquareWhiteStemUp: { + shiftX: -0.75, + }, + noteheadSquareBlackStemUp: { + shiftX: -0.75, + }, + noteheadTriangleUpWholeStemUp: { + shiftX: -0.75, + }, + }, + }, + chordSymbol: { + global: { + superscriptOffset: -400, + subscriptOffset: 300, + kerningOffset: -150, + lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'], + upperKerningText: ['L'], + spacing: 20, + superSubRatio: 0.73, + }, + csymDiminished: { + scale: 0.8, + leftSideBearing: -95, + advanceWidth: 506, + yOffset: 0, + }, + csymHalfDiminished: { + scale: 0.8, + leftSideBearing: -32, + advanceWidth: 506, + yOffset: 0, + }, + csymAugmented: { + scale: 1, + leftSideBearing: -25, + advanceWidth: 530, + yOffset: 0, + }, + csymParensLeftTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 155, + yOffset: 150, + }, + csymParensRightTall: { + scale: 0.8, + leftSideBearing: 40, + advanceWidth: 189, + yOffset: 150, + }, + csymBracketLeftTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 328, + yOffset: 0, + }, + csymBracketRightTall: { + scale: 0.8, + leftSideBearing: 1, + advanceWidth: 600, + yOffset: 0, + }, + csymParensLeftVeryTall: { + scale: 0.95, + leftSideBearing: 0, + advanceWidth: 210, + yOffset: 250, + }, + csymParensRightVeryTall: { + scale: 0.9, + leftSideBearing: -100, + advanceWidth: 111, + yOffset: 250, + }, + csymDiagonalArrangementSlash: { + scale: 0.6, + leftSideBearing: -1, + advanceWidth: 990, + yOffset: 0, + }, + csymMinor: { + scale: 0.7, + leftSideBearing: 0, + advanceWidth: 482, + yOffset: 0, + }, + csymMajorSeventh: { + scale: 0.8, + leftSideBearing: 100, + yOffset: 0, + advanceWidth: 600, + }, + accidentalSharp: { + scale: 0.7, + leftSideBearing: 0, + advanceWidth: 425, + yOffset: -422, + }, + accidentalFlat: { + scale: 0.8, + leftSideBearing: -10, + advanceWidth: 228, + yOffset: -284, + }, + }, + jazzOrnaments: { + brassScoop: { + scale: 1.0, + xOffset: -12, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 15, + }, + brassDoitMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 19, + }, + brassFallLipShort: { + scale: 1.0, + xOffset: 16, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 19, + }, + brassLiftMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 5, + stemUpYOffset: 0, + reportedWidth: 15, + }, + brassFallRoughMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 26, + stemUpYOffset: 0, + reportedWidth: 5, + }, + brassBend: { + scale: 1.0, + xOffset: 3, + yOffset: -8, + stemUpYOffset: 28, + reportedWidth: 5, + }, + brassMuteClosed: { + scale: 1.0, + xOffset: 3, + yOffset: -8, + stemUpYOffset: 26, + reportedWidth: 5, + }, + brassMuteOpen: { + scale: 1.0, + xOffset: 4, + yOffset: -8, + stemUpYOffset: 27, + reportedWidth: 5, + }, + brassFlip: { + scale: 1.0, + xOffset: 10, + yOffset: -4, + stemUpYOffset: 7, + reportedWidth: 5, + }, + brassJazzTurn: { + scale: 1.0, + xOffset: 6, + yOffset: -4, + stemUpYOffset: 5, + reportedWidth: 30, + }, + brassSmear: { + scale: 1.0, + xOffset: 10, + yOffset: -4, + stemUpYOffset: 5, + reportedWidth: 5, + }, + }, + tuplet: { + noteHeadOffset: 20, + stemOffset: 10, + bottomLine: 4, + topModifierOffset: 20, + }, + }, +}; + + +/***/ }), + +/***/ "./src/fonts/petalumascript_glyphs.ts": +/*!********************************************!*\ + !*** ./src/fonts/petalumascript_glyphs.ts ***! + \********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "PetalumaScriptFont": () => (/* binding */ PetalumaScriptFont) +/* harmony export */ }); +const PetalumaScriptFont = { + spacing: 50, + glyphs: { + ' ': { + x_min: 0, + x_max: 250, + y_min: 0, + y_max: 500, + ha: 500, + leftSideBearing: 0, + advanceWidth: 250, + }, + '0': { + x_min: 33, + x_max: 534, + y_min: -13, + y_max: 751, + ha: 764, + leftSideBearing: 33, + advanceWidth: 570, + }, + '1': { + x_min: 48, + x_max: 235, + y_min: -17, + y_max: 734, + ha: 751, + leftSideBearing: 48, + advanceWidth: 286, + }, + '2': { + x_min: 56, + x_max: 571, + y_min: -19, + y_max: 741, + ha: 760, + leftSideBearing: 56, + advanceWidth: 626, + }, + '3': { + x_min: 50, + x_max: 528, + y_min: -7, + y_max: 731, + ha: 738, + leftSideBearing: 50, + advanceWidth: 589, + }, + '4': { + x_min: 38, + x_max: 564, + y_min: -13, + y_max: 743, + ha: 756, + leftSideBearing: 38, + advanceWidth: 614, + }, + '5': { + x_min: 42, + x_max: 601, + y_min: -34, + y_max: 743, + ha: 777, + leftSideBearing: 42, + advanceWidth: 648, + }, + '6': { + x_min: 47, + x_max: 606, + y_min: -16, + y_max: 743, + ha: 759, + leftSideBearing: 47, + advanceWidth: 667, + }, + '7': { + x_min: 47, + x_max: 567, + y_min: 5, + y_max: 739, + ha: 734, + leftSideBearing: 0, + advanceWidth: 615, + }, + '8': { + x_min: 40, + x_max: 541, + y_min: -15, + y_max: 752, + ha: 767, + leftSideBearing: 40, + advanceWidth: 585, + }, + '9': { + x_min: 40, + x_max: 537, + y_min: -52, + y_max: 736, + ha: 788, + leftSideBearing: 40, + advanceWidth: 592, + }, + '!': { + x_min: 49, + x_max: 180, + y_min: -7, + y_max: 761, + ha: 768, + leftSideBearing: 49, + advanceWidth: 230, + }, + '"': { + x_min: 39, + x_max: 304, + y_min: 596, + y_max: 804, + ha: 208, + leftSideBearing: 39, + advanceWidth: 353, + }, + '#': { + x_min: 33, + x_max: 599, + y_min: -8, + y_max: 765, + ha: 773, + leftSideBearing: 33, + advanceWidth: 648, + }, + $: { + x_min: 53, + x_max: 495, + y_min: -111, + y_max: 823, + ha: 934, + leftSideBearing: 53, + advanceWidth: 560, + }, + '%': { + x_min: 35, + x_max: 656, + y_min: -128, + y_max: 808, + ha: 936, + leftSideBearing: 35, + advanceWidth: 711, + }, + '&': { + x_min: 53, + x_max: 441, + y_min: -3, + y_max: 753, + ha: 756, + leftSideBearing: 53, + advanceWidth: 500, + }, + "'": { + x_min: 43, + x_max: 161, + y_min: 590, + y_max: 811, + ha: 221, + leftSideBearing: 43, + advanceWidth: 217, + }, + '(': { + x_min: 41, + x_max: 311, + y_min: -36, + y_max: 845, + ha: 881, + leftSideBearing: 41, + advanceWidth: 308, + }, + ')': { + x_min: -8, + x_max: 257, + y_min: -21, + y_max: 852, + ha: 873, + leftSideBearing: -8, + advanceWidth: 280, + }, + '*': { + x_min: 59, + x_max: 539, + y_min: 175, + y_max: 589, + ha: 414, + leftSideBearing: 59, + advanceWidth: 601, + }, + '+': { + x_min: 33, + x_max: 361, + y_min: 180, + y_max: 587, + ha: 407, + leftSideBearing: 33, + advanceWidth: 400, + }, + ',': { + x_min: 15, + x_max: 176, + y_min: -129, + y_max: 92, + ha: 221, + leftSideBearing: 15, + advanceWidth: 205, + }, + '-': { + x_min: 40, + x_max: 380, + y_min: 317, + y_max: 452, + ha: 135, + leftSideBearing: 40, + advanceWidth: 422, + }, + '.': { + x_min: 48, + x_max: 185, + y_min: -56, + y_max: 84, + ha: 140, + leftSideBearing: 48, + advanceWidth: 227, + }, + '/': { + x_min: -58, + x_max: 654, + y_min: -122, + y_max: 844, + ha: 966, + leftSideBearing: -58, + advanceWidth: 626, + }, + ':': { + x_min: 65, + x_max: 225, + y_min: 97, + y_max: 536, + ha: 439, + leftSideBearing: 65, + advanceWidth: 302, + }, + ';': { + x_min: 13, + x_max: 295, + y_min: -139, + y_max: 536, + ha: 675, + leftSideBearing: 13, + advanceWidth: 334, + }, + '<': { + x_min: 28, + x_max: 438, + y_min: -1, + y_max: 607, + ha: 608, + leftSideBearing: 28, + advanceWidth: 475, + }, + '=': { + x_min: 40, + x_max: 383, + y_min: 199.9598640852289, + y_max: 541, + ha: 341.0401359147711, + leftSideBearing: 40, + advanceWidth: 422, + }, + '>': { + x_min: 35, + x_max: 421, + y_min: 28, + y_max: 632, + ha: 604, + leftSideBearing: 35, + advanceWidth: 466, + }, + '?': { + x_min: 45, + x_max: 548, + y_min: -17, + y_max: 767, + ha: 784, + leftSideBearing: 45, + advanceWidth: 592, + }, + '@': { + x_min: 51, + x_max: 730, + y_min: -78, + y_max: 753, + ha: 831, + leftSideBearing: 51, + advanceWidth: 781, + }, + A: { + x_min: 37, + x_max: 554, + y_min: -4, + y_max: 746, + ha: 750, + leftSideBearing: 37, + advanceWidth: 617, + }, + B: { + x_min: 37, + x_max: 532, + y_min: 3, + y_max: 783, + ha: 780, + leftSideBearing: 37, + advanceWidth: 579, + }, + C: { + x_min: 37, + x_max: 583, + y_min: -3, + y_max: 775, + ha: 778, + leftSideBearing: 37, + advanceWidth: 623, + }, + D: { + x_min: 50, + x_max: 530, + y_min: -15, + y_max: 749, + ha: 764, + leftSideBearing: 50, + advanceWidth: 579, + }, + E: { + x_min: 45, + x_max: 531, + y_min: -1, + y_max: 743, + ha: 744, + leftSideBearing: 45, + advanceWidth: 585, + }, + F: { + x_min: 45, + x_max: 459, + y_min: 23, + y_max: 727, + ha: 704, + leftSideBearing: 45, + advanceWidth: 510, + }, + G: { + x_min: 31, + x_max: 577, + y_min: -8, + y_max: 733, + ha: 741, + leftSideBearing: 31, + advanceWidth: 611, + }, + H: { + x_min: 37, + x_max: 493, + y_min: -22, + y_max: 758, + ha: 780, + leftSideBearing: 37, + advanceWidth: 535, + }, + I: { + x_min: 47, + x_max: 501, + y_min: -3, + y_max: 731, + ha: 734, + leftSideBearing: 47, + advanceWidth: 541, + }, + J: { + x_min: 33, + x_max: 531, + y_min: -23, + y_max: 725, + ha: 748, + leftSideBearing: 33, + advanceWidth: 573, + }, + K: { + x_min: 43, + x_max: 505, + y_min: -10, + y_max: 740, + ha: 750, + leftSideBearing: 43, + advanceWidth: 560, + }, + L: { + x_min: 49, + x_max: 457, + y_min: -2, + y_max: 746, + ha: 748, + leftSideBearing: 49, + advanceWidth: 510, + }, + M: { + x_min: 35, + x_max: 699, + y_min: 1, + y_max: 744, + ha: 743, + leftSideBearing: 35, + advanceWidth: 743, + }, + N: { + x_min: 34, + x_max: 533, + y_min: -17, + y_max: 761, + ha: 778, + leftSideBearing: 34, + advanceWidth: 579, + }, + O: { + x_min: 41, + x_max: 608, + y_min: -5, + y_max: 735, + ha: 740, + leftSideBearing: 41, + advanceWidth: 667, + }, + P: { + x_min: 53, + x_max: 451, + y_min: -18, + y_max: 735, + ha: 753, + leftSideBearing: 53, + advanceWidth: 497, + }, + Q: { + x_min: 40, + x_max: 599, + y_min: -67, + y_max: 744, + ha: 811, + leftSideBearing: 40, + advanceWidth: 648, + }, + R: { + x_min: 39, + x_max: 487, + y_min: 16, + y_max: 735, + ha: 719, + leftSideBearing: 39, + advanceWidth: 535, + }, + S: { + x_min: 35, + x_max: 552, + y_min: -47, + y_max: 708, + ha: 755, + leftSideBearing: 35, + advanceWidth: 604, + }, + T: { + x_min: 26, + x_max: 656, + y_min: -13, + y_max: 718, + ha: 731, + leftSideBearing: 26, + advanceWidth: 705, + }, + U: { + x_min: 41, + x_max: 518, + y_min: -20, + y_max: 748, + ha: 768, + leftSideBearing: 41, + advanceWidth: 567, + }, + V: { + x_min: 47, + x_max: 509, + y_min: -26, + y_max: 744, + ha: 770, + leftSideBearing: 47, + advanceWidth: 567, + }, + W: { + x_min: 44, + x_max: 789, + y_min: -35, + y_max: 720, + ha: 755, + leftSideBearing: 44, + advanceWidth: 833, + }, + X: { + x_min: 63, + x_max: 635, + y_min: -10, + y_max: 745, + ha: 755, + leftSideBearing: 63, + advanceWidth: 680, + }, + Y: { + x_min: 43, + x_max: 503, + y_min: -21, + y_max: 734, + ha: 755, + leftSideBearing: 43, + advanceWidth: 541, + }, + Z: { + x_min: 42, + x_max: 584, + y_min: -10, + y_max: 739, + ha: 749, + leftSideBearing: 42, + advanceWidth: 629, + }, + '[': { + x_min: 46, + x_max: 346, + y_min: -150, + y_max: 884, + ha: 1034, + leftSideBearing: 46, + advanceWidth: 291, + }, + '\\': { + x_min: 20, + x_max: 616, + y_min: -100, + y_max: 797, + ha: 897, + leftSideBearing: 20, + advanceWidth: 645, + }, + ']': { + x_min: -76, + x_max: 226, + y_min: -150, + y_max: 881, + ha: 1031, + leftSideBearing: -76, + advanceWidth: 297, + }, + '^': { + x_min: 43, + x_max: 437, + y_min: 517, + y_max: 812, + ha: 295, + leftSideBearing: 43, + advanceWidth: 478, + }, + _: { + x_min: 29, + x_max: 563, + y_min: -110, + y_max: -1, + ha: 109, + leftSideBearing: 29, + advanceWidth: 598, + }, + '`': { + x_min: 54, + x_max: 321, + y_min: 540, + y_max: 747, + ha: 207, + leftSideBearing: 54, + advanceWidth: 368, + }, + a: { + x_min: 20, + x_max: 447, + y_min: -17, + y_max: 495, + ha: 512, + leftSideBearing: 20, + advanceWidth: 494, + }, + b: { + x_min: 37, + x_max: 466, + y_min: -27, + y_max: 770, + ha: 797, + leftSideBearing: 37, + advanceWidth: 510, + }, + c: { + x_min: 35, + x_max: 456, + y_min: -9, + y_max: 507, + ha: 516, + leftSideBearing: 35, + advanceWidth: 460, + }, + d: { + x_min: 45, + x_max: 520, + y_min: -15, + y_max: 764, + ha: 779, + leftSideBearing: 45, + advanceWidth: 560, + }, + e: { + x_min: 33, + x_max: 370, + y_min: -5, + y_max: 501, + ha: 506, + leftSideBearing: 33, + advanceWidth: 397, + }, + f: { + x_min: 35, + x_max: 411, + y_min: -13, + y_max: 695, + ha: 708, + leftSideBearing: 35, + advanceWidth: 453, + }, + g: { + x_min: 33, + x_max: 551, + y_min: -257, + y_max: 505, + ha: 762, + leftSideBearing: 33, + advanceWidth: 611, + }, + h: { + x_min: 32, + x_max: 458, + y_min: -29, + y_max: 743, + ha: 772, + leftSideBearing: 32, + advanceWidth: 491, + }, + i: { + x_min: 45, + x_max: 167, + y_min: -13, + y_max: 631, + ha: 644, + leftSideBearing: 45, + advanceWidth: 220, + }, + j: { + x_min: -127, + x_max: 261, + y_min: -231, + y_max: 601, + ha: 832, + leftSideBearing: -127, + advanceWidth: 308, + }, + k: { + x_min: 39, + x_max: 443, + y_min: -3, + y_max: 700, + ha: 703, + leftSideBearing: 39, + advanceWidth: 497, + }, + l: { + x_min: 58, + x_max: 168, + y_min: -8, + y_max: 686, + ha: 694, + leftSideBearing: 58, + advanceWidth: 227, + }, + m: { + x_min: 39, + x_max: 688, + y_min: -14, + y_max: 501, + ha: 515, + leftSideBearing: 39, + advanceWidth: 718, + }, + n: { + x_min: 45, + x_max: 491, + y_min: -32, + y_max: 512, + ha: 544, + leftSideBearing: 45, + advanceWidth: 541, + }, + o: { + x_min: 41, + x_max: 424, + y_min: -12, + y_max: 493, + ha: 505, + leftSideBearing: 41, + advanceWidth: 447, + }, + p: { + x_min: 25, + x_max: 529, + y_min: -260, + y_max: 500, + ha: 760, + leftSideBearing: 25, + advanceWidth: 573, + }, + q: { + x_min: 53, + x_max: 603, + y_min: -235, + y_max: 514, + ha: 749, + leftSideBearing: 53, + advanceWidth: 623, + }, + r: { + x_min: 32, + x_max: 407, + y_min: -7, + y_max: 492, + ha: 499, + leftSideBearing: 32, + advanceWidth: 460, + }, + s: { + x_min: 49, + x_max: 416, + y_min: -12, + y_max: 519, + ha: 531, + leftSideBearing: 49, + advanceWidth: 460, + }, + t: { + x_min: 32, + x_max: 442, + y_min: -5, + y_max: 684, + ha: 689, + leftSideBearing: 32, + advanceWidth: 469, + }, + u: { + x_min: 41, + x_max: 487, + y_min: -5, + y_max: 507, + ha: 512, + leftSideBearing: 41, + advanceWidth: 510, + }, + v: { + x_min: 16, + x_max: 441, + y_min: -20, + y_max: 542, + ha: 562, + leftSideBearing: 16, + advanceWidth: 456, + }, + w: { + x_min: 39, + x_max: 639, + y_min: -22, + y_max: 505, + ha: 527, + leftSideBearing: 39, + advanceWidth: 661, + }, + x: { + x_min: 15, + x_max: 505, + y_min: -39, + y_max: 539, + ha: 578, + leftSideBearing: 15, + advanceWidth: 541, + }, + y: { + x_min: -98, + x_max: 501, + y_min: -242, + y_max: 511, + ha: 753, + leftSideBearing: -98, + advanceWidth: 548, + }, + z: { + x_min: 27, + x_max: 479, + y_min: -3, + y_max: 494, + ha: 497, + leftSideBearing: 27, + advanceWidth: 494, + }, + '{': { + x_min: 0, + x_max: 0, + y_min: 0, + y_max: 0, + ha: 0, + leftSideBearing: 0, + advanceWidth: 308, + }, + '|': { + x_min: 0, + x_max: 0, + y_min: 0, + y_max: 0, + ha: 0, + leftSideBearing: 0, + advanceWidth: 308, + }, + '}': { + x_min: 0, + x_max: 0, + y_min: 0, + y_max: 0, + ha: 0, + leftSideBearing: 0, + advanceWidth: 308, + }, + '~': { + x_min: 0, + x_max: 0, + y_min: 0, + y_max: 0, + ha: 0, + leftSideBearing: 0, + advanceWidth: 308, + }, + }, + fontFamily: 'PetalumaScript', + resolution: 1000, + generatedOn: '2020-06-14T18:33:25.407Z', +}; + + +/***/ }), + +/***/ "./src/fonts/robotoslab_glyphs.ts": +/*!****************************************!*\ + !*** ./src/fonts/robotoslab_glyphs.ts ***! + \****************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "RobotoSlabFont": () => (/* binding */ RobotoSlabFont) +/* harmony export */ }); +const RobotoSlabFont = { + spacing: 50, + glyphs: { + ' ': { + x_min: 0, + x_max: 509, + y_min: 0, + y_max: 2000, + ha: 2000, + leftSideBearing: 0, + advanceWidth: 509, + }, + '0': { + x_min: 121, + x_max: 1048, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 121, + advanceWidth: 1168, + }, + '1': { + x_min: 117, + x_max: 767, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 117, + advanceWidth: 844, + }, + '2': { + x_min: 75.8474576645637, + x_max: 1040, + y_min: 0, + y_max: 1477, + ha: 1477, + leftSideBearing: 75, + advanceWidth: 1131, + }, + '3': { + x_min: 74.85365853658536, + x_max: 994, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 74, + advanceWidth: 1106, + }, + '4': { + x_min: 63, + x_max: 1114, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 63, + advanceWidth: 1187, + }, + '5': { + x_min: 96.8448275474953, + x_max: 982, + y_min: -21, + y_max: 1456, + ha: 1477, + leftSideBearing: 96, + advanceWidth: 1081, + }, + '6': { + x_min: 121, + x_max: 1067, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 121, + advanceWidth: 1144, + }, + '7': { + x_min: 76, + x_max: 1060, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: -30, + advanceWidth: 1128, + }, + '8': { + x_min: 92, + x_max: 1039, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 92, + advanceWidth: 1131, + }, + '9': { + x_min: 84, + x_max: 1026, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 84, + advanceWidth: 1154, + }, + '!': { + x_min: 143, + x_max: 340, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 143, + advanceWidth: 483, + }, + '"': { + x_min: 166, + x_max: 634, + y_min: 1055, + y_max: 1560, + ha: 505, + leftSideBearing: 166, + advanceWidth: 770, + }, + '#': { + x_min: 63, + x_max: 1179, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 63, + advanceWidth: 1246, + }, + $: { + x_min: 81.92156915727656, + x_max: 1012, + y_min: -208, + y_max: 1693, + ha: 1901, + leftSideBearing: 81, + advanceWidth: 1110, + }, + '%': { + x_min: 77, + x_max: 1384, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 77, + advanceWidth: 1460, + }, + '&': { + x_min: 74, + x_max: 1242, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 74, + advanceWidth: 1289, + }, + "'": { + x_min: 166, + x_max: 324, + y_min: 1055, + y_max: 1560, + ha: 505, + leftSideBearing: 166, + advanceWidth: 460, + }, + '(': { + x_min: 114, + x_max: 650, + y_min: -463, + y_max: 1636, + ha: 2099, + leftSideBearing: 114, + advanceWidth: 662, + }, + ')': { + x_min: 11, + x_max: 547, + y_min: -463, + y_max: 1636, + ha: 2099, + leftSideBearing: 11, + advanceWidth: 654, + }, + '*': { + x_min: 66, + x_max: 893, + y_min: 607, + y_max: 1456, + ha: 849, + leftSideBearing: 66, + advanceWidth: 958, + }, + '+': { + x_min: 73, + x_max: 1071, + y_min: 146, + y_max: 1206, + ha: 1060, + leftSideBearing: 73, + advanceWidth: 1145, + }, + ',': { + x_min: 23, + x_max: 315, + y_min: -311, + y_max: 221, + ha: 532, + leftSideBearing: 23, + advanceWidth: 404, + }, + '-': { + x_min: 154, + x_max: 643, + y_min: 538, + y_max: 692, + ha: 154, + leftSideBearing: 154, + advanceWidth: 797, + }, + '.': { + x_min: 145, + x_max: 342, + y_min: 0, + y_max: 202, + ha: 202, + leftSideBearing: 145, + advanceWidth: 493, + }, + '/': { + x_min: 0, + x_max: 774, + y_min: -125, + y_max: 1456, + ha: 1581, + leftSideBearing: 0, + advanceWidth: 824, + }, + ':': { + x_min: 145, + x_max: 342, + y_min: 0, + y_max: 1082, + ha: 1082, + leftSideBearing: 145, + advanceWidth: 419, + }, + ';': { + x_min: 53, + x_max: 345, + y_min: -311, + y_max: 1082, + ha: 1393, + leftSideBearing: 53, + advanceWidth: 424, + }, + '<': { + x_min: 76, + x_max: 892, + y_min: 107, + y_max: 1013, + ha: 906, + leftSideBearing: 76, + advanceWidth: 1017, + }, + '=': { + x_min: 147, + x_max: 981, + y_min: 407, + y_max: 987, + ha: 580, + leftSideBearing: 147, + advanceWidth: 1127, + }, + '>': { + x_min: 125, + x_max: 980, + y_min: 87, + y_max: 993, + ha: 906, + leftSideBearing: 125, + advanceWidth: 1060, + }, + '?': { + x_min: 65.92660602419838, + x_max: 890, + y_min: 0, + y_max: 1477, + ha: 1477, + leftSideBearing: 65, + advanceWidth: 953, + }, + '@': { + x_min: 84.3592218305664, + x_max: 1705.2346925277395, + y_min: -453, + y_max: 1431, + ha: 1884, + leftSideBearing: 84, + advanceWidth: 1821, + }, + A: { + x_min: 70, + x_max: 1463, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 70, + advanceWidth: 1533, + }, + B: { + x_min: 81, + x_max: 1253, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1322, + }, + C: { + x_min: 80, + x_max: 1174, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 80, + advanceWidth: 1290, + }, + D: { + x_min: 81, + x_max: 1291, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1356, + }, + E: { + x_min: 81, + x_max: 1190, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1306, + }, + F: { + x_min: 81, + x_max: 1176, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1256, + }, + G: { + x_min: 80, + x_max: 1226, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 80, + advanceWidth: 1346, + }, + H: { + x_min: 81, + x_max: 1497, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1578, + }, + I: { + x_min: 81, + x_max: 604, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 685, + }, + J: { + x_min: 60, + x_max: 1100, + y_min: -21, + y_max: 1456, + ha: 1477, + leftSideBearing: 60, + advanceWidth: 1169, + }, + K: { + x_min: 81, + x_max: 1427, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1501, + }, + L: { + x_min: 81, + x_max: 1130, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1210, + }, + M: { + x_min: 94, + x_max: 1888, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 94, + advanceWidth: 1982, + }, + N: { + x_min: 83, + x_max: 1509, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 83, + advanceWidth: 1592, + }, + O: { + x_min: 70, + x_max: 1281, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 70, + advanceWidth: 1351, + }, + P: { + x_min: 81, + x_max: 1242, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1297, + }, + Q: { + x_min: 70, + x_max: 1348, + y_min: -245, + y_max: 1477, + ha: 1722, + leftSideBearing: 70, + advanceWidth: 1376, + }, + R: { + x_min: 81, + x_max: 1285, + y_min: 0, + y_max: 1455, + ha: 1455, + leftSideBearing: 81, + advanceWidth: 1385, + }, + S: { + x_min: 115, + x_max: 1116, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 115, + advanceWidth: 1206, + }, + T: { + x_min: 96, + x_max: 1306, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 96, + advanceWidth: 1406, + }, + U: { + x_min: 70, + x_max: 1452, + y_min: -21, + y_max: 1456, + ha: 1477, + leftSideBearing: 70, + advanceWidth: 1522, + }, + V: { + x_min: 65, + x_max: 1443, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 65, + advanceWidth: 1508, + }, + W: { + x_min: 72, + x_max: 2057, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 72, + advanceWidth: 2129, + }, + X: { + x_min: 80, + x_max: 1449, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 80, + advanceWidth: 1529, + }, + Y: { + x_min: 65, + x_max: 1396, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 65, + advanceWidth: 1461, + }, + Z: { + x_min: 90, + x_max: 1107, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 90, + advanceWidth: 1197, + }, + '[': { + x_min: 157, + x_max: 541, + y_min: -312, + y_max: 1664, + ha: 1976, + leftSideBearing: 157, + advanceWidth: 573, + }, + '\\': { + x_min: 36, + x_max: 830, + y_min: -125, + y_max: 1456, + ha: 1581, + leftSideBearing: 36, + advanceWidth: 841, + }, + ']': { + x_min: 23, + x_max: 408, + y_min: -312, + y_max: 1664, + ha: 1976, + leftSideBearing: 23, + advanceWidth: 552, + }, + '^': { + x_min: 71, + x_max: 802, + y_min: 729, + y_max: 1456, + ha: 727, + leftSideBearing: 71, + advanceWidth: 864, + }, + _: { + x_min: 119, + x_max: 1041, + y_min: -154, + y_max: 0, + ha: 154, + leftSideBearing: 119, + advanceWidth: 1168, + }, + '`': { + x_min: 40, + x_max: 456, + y_min: 1288, + y_max: 1560, + ha: 272, + leftSideBearing: 40, + advanceWidth: 496, + }, + a: { + x_min: 79, + x_max: 1053, + y_min: -21, + y_max: 1102, + ha: 1123, + leftSideBearing: 79, + advanceWidth: 1132, + }, + b: { + x_min: -16, + x_max: 1071, + y_min: -21, + y_max: 1560, + ha: 1581, + leftSideBearing: -16, + advanceWidth: 1145, + }, + c: { + x_min: 78, + x_max: 988, + y_min: -21, + y_max: 1102, + ha: 1123, + leftSideBearing: 78, + advanceWidth: 1067, + }, + d: { + x_min: 78, + x_max: 1156, + y_min: -21, + y_max: 1560, + ha: 1581, + leftSideBearing: 78, + advanceWidth: 1218, + }, + e: { + x_min: 74, + x_max: 980, + y_min: -21, + y_max: 1102, + ha: 1123, + leftSideBearing: 74, + advanceWidth: 1059, + }, + f: { + x_min: 64, + x_max: 731, + y_min: 0, + y_max: 1581, + ha: 1581, + leftSideBearing: 64, + advanceWidth: 725, + }, + g: { + x_min: 78, + x_max: 1133, + y_min: -437, + y_max: 1102, + ha: 1539, + leftSideBearing: 78, + advanceWidth: 1157, + }, + h: { + x_min: 49, + x_max: 1255, + y_min: 0, + y_max: 1560, + ha: 1560, + leftSideBearing: 49, + advanceWidth: 1315, + }, + i: { + x_min: 67, + x_max: 590, + y_min: 0, + y_max: 1560, + ha: 1560, + leftSideBearing: 67, + advanceWidth: 652, + }, + j: { + x_min: -56, + x_max: 381, + y_min: -437, + y_max: 1560, + ha: 1997, + leftSideBearing: -56, + advanceWidth: 525, + }, + k: { + x_min: 64, + x_max: 1248, + y_min: 0, + y_max: 1560, + ha: 1560, + leftSideBearing: 64, + advanceWidth: 1287, + }, + l: { + x_min: 64, + x_max: 587, + y_min: 0, + y_max: 1560, + ha: 1560, + leftSideBearing: 64, + advanceWidth: 653, + }, + m: { + x_min: 74, + x_max: 1905, + y_min: 0, + y_max: 1102, + ha: 1102, + leftSideBearing: 74, + advanceWidth: 1977, + }, + n: { + x_min: 74, + x_max: 1278, + y_min: 0, + y_max: 1102, + ha: 1102, + leftSideBearing: 74, + advanceWidth: 1343, + }, + o: { + x_min: 78, + x_max: 1046, + y_min: -21, + y_max: 1102, + ha: 1123, + leftSideBearing: 78, + advanceWidth: 1124, + }, + p: { + x_min: 34, + x_max: 1119, + y_min: -416, + y_max: 1102, + ha: 1518, + leftSideBearing: 34, + advanceWidth: 1197, + }, + q: { + x_min: 78, + x_max: 1135, + y_min: -416, + y_max: 1102, + ha: 1518, + leftSideBearing: 78, + advanceWidth: 1139, + }, + r: { + x_min: 72, + x_max: 808, + y_min: 0, + y_max: 1102, + ha: 1102, + leftSideBearing: 72, + advanceWidth: 854, + }, + s: { + x_min: 104, + x_max: 933, + y_min: -21, + y_max: 1102, + ha: 1123, + leftSideBearing: 104, + advanceWidth: 1022, + }, + t: { + x_min: 24, + x_max: 678, + y_min: -17, + y_max: 1343, + ha: 1360, + leftSideBearing: 24, + advanceWidth: 730, + }, + u: { + x_min: 52, + x_max: 1181, + y_min: -21, + y_max: 1082, + ha: 1103, + leftSideBearing: 52, + advanceWidth: 1245, + }, + v: { + x_min: 26, + x_max: 1176, + y_min: 0, + y_max: 1082, + ha: 1082, + leftSideBearing: 26, + advanceWidth: 1206, + }, + w: { + x_min: 52, + x_max: 1777, + y_min: 0, + y_max: 1082, + ha: 1082, + leftSideBearing: 52, + advanceWidth: 1823, + }, + x: { + x_min: 42, + x_max: 1163, + y_min: 0, + y_max: 1082, + ha: 1082, + leftSideBearing: 42, + advanceWidth: 1203, + }, + y: { + x_min: 24, + x_max: 1172, + y_min: -437, + y_max: 1082, + ha: 1519, + leftSideBearing: 24, + advanceWidth: 1192, + }, + z: { + x_min: 88, + x_max: 960, + y_min: 0, + y_max: 1082, + ha: 1082, + leftSideBearing: 88, + advanceWidth: 1032, + }, + '{': { + x_min: 63, + x_max: 671, + y_min: -364, + y_max: 1597, + ha: 1961, + leftSideBearing: 63, + advanceWidth: 701, + }, + '|': { + x_min: 150, + x_max: 307, + y_min: -270, + y_max: 1456, + ha: 1726, + leftSideBearing: 150, + advanceWidth: 451, + }, + '}': { + x_min: 27, + x_max: 635, + y_min: -364, + y_max: 1597, + ha: 1961, + leftSideBearing: 27, + advanceWidth: 701, + }, + '~': { + x_min: 121, + x_max: 1257, + y_min: 401, + y_max: 803, + ha: 402, + leftSideBearing: 121, + advanceWidth: 1386, + }, + }, + fontFamily: 'Roboto Slab', + resolution: 2048, + generatedOn: '2020-06-15T19:12:58.120Z', +}; + + +/***/ }), + +/***/ "./src/fonts/textfonts.ts": +/*!********************************!*\ + !*** ./src/fonts/textfonts.ts ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "loadTextFonts": () => (/* binding */ loadTextFonts) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../font */ "./src/font.ts"); +/* harmony import */ var _textformatter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../textformatter */ "./src/textformatter.ts"); +/* harmony import */ var _petalumascript_glyphs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./petalumascript_glyphs */ "./src/fonts/petalumascript_glyphs.ts"); +/* harmony import */ var _robotoslab_glyphs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./robotoslab_glyphs */ "./src/fonts/robotoslab_glyphs.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + +function loadTextFonts() { + // Roboto Slab + { + const fontData = _robotoslab_glyphs__WEBPACK_IMPORTED_MODULE_3__.RobotoSlabFont; + const { fontFamily, resolution, glyphs } = fontData; + _font__WEBPACK_IMPORTED_MODULE_0__.Font.load(fontFamily, fontData); + // Previously we used 'H', but it isn't actually the tallest or the widest. + // Interestingly, the lowercase 'b' is the tallest glyph. + const maxSizeGlyph = 'b'; + _textformatter__WEBPACK_IMPORTED_MODULE_1__.TextFormatter.registerInfo({ + family: fontFamily, + resolution, + glyphs, + maxSizeGlyph, + monospaced: false, + bold: false, + italic: false, + superscriptOffset: 0.66, + subscriptOffset: 0.66, + serifs: true, + description: 'Text font to pair with the Bravura / Gonville music fonts.', + }); + } + // PetalumaScript + { + const fontData = _petalumascript_glyphs__WEBPACK_IMPORTED_MODULE_2__.PetalumaScriptFont; + const { fontFamily, resolution, glyphs } = fontData; + _font__WEBPACK_IMPORTED_MODULE_0__.Font.load(fontFamily, fontData); + // M is wider, but H is taller. :-) + // Lowercase b is also taller in this font. + const maxSizeGlyph = 'b'; + _textformatter__WEBPACK_IMPORTED_MODULE_1__.TextFormatter.registerInfo({ + family: fontFamily, + resolution, + glyphs, + maxSizeGlyph, + monospaced: false, + bold: false, + italic: false, + superscriptOffset: 0.66, + subscriptOffset: 0.66, + serifs: false, + description: 'Text font to pair with the Petaluma music font.', + }); + } +} + + +/***/ }), + +/***/ "./src/formatter.ts": +/*!**************************!*\ + !*** ./src/formatter.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Formatter": () => (/* binding */ Formatter) +/* harmony export */ }); +/* harmony import */ var _beam__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./beam */ "./src/beam.ts"); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fraction */ "./src/fraction.ts"); +/* harmony import */ var _modifiercontext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiercontext */ "./src/modifiercontext.ts"); +/* harmony import */ var _stave__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stave */ "./src/stave.ts"); +/* harmony import */ var _staveconnector__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./staveconnector */ "./src/staveconnector.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _tickcontext__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./tickcontext */ "./src/tickcontext.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +/* harmony import */ var _voice__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./voice */ "./src/voice.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + + + + + + +// Helper function +const sumArray = (arr) => arr.reduce((a, b) => a + b, 0); +/** + * Create `Alignment`s for each tick in `voices`. Also calculate the + * total number of ticks in voices. + */ +function createContexts(voices, makeContext, addToContext) { + if (voices.length == 0) + return { + map: {}, + array: [], + list: [], + resolutionMultiplier: 0, + }; + // Initialize tick maps. + const tickToContextMap = {}; + const tickList = []; + const contexts = []; + const resolutionMultiplier = Formatter.getResolutionMultiplier(voices); + // For each voice, extract notes and create a context for every + // new tick that hasn't been seen before. + voices.forEach((voice, voiceIndex) => { + // Use resolution multiplier as denominator so that no additional expansion + // of fractional tick values is needed. + const ticksUsed = new _fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(0, resolutionMultiplier); + voice.getTickables().forEach((tickable) => { + const integerTicks = ticksUsed.numerator; + // If we have no tick context for this tick, create one. + if (!tickToContextMap[integerTicks]) { + const newContext = makeContext({ tickID: integerTicks }); + contexts.push(newContext); + tickToContextMap[integerTicks] = newContext; + // Maintain a list of unique integerTicks. + tickList.push(integerTicks); + } + // Add this tickable to the TickContext. + addToContext(tickable, tickToContextMap[integerTicks], voiceIndex); + ticksUsed.add(tickable.getTicks()); + }); + }); + return { + map: tickToContextMap, + array: contexts, + list: tickList.sort((a, b) => a - b), + resolutionMultiplier, + }; +} +// eslint-disable-next-line +function L(...args) { + if (Formatter.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_9__.log)('Vex.Flow.Formatter', args); +} +/** + * Get the rest line number of the next non-rest note(s). + * @param notes array of Notes + * @param currRestLine + * @param currNoteIndex current note index + * @param compare if true, return the midpoint between the current rest line and the next rest line + * @returns a line number, which determines the vertical position of a rest. + */ +function getRestLineForNextNoteGroup(notes, currRestLine, currNoteIndex, compare) { + // If no valid next note group, nextRestLine is same as current. + let nextRestLine = currRestLine; + // Start with the next note and keep going until we find a valid non-rest note group. + for (let noteIndex = currNoteIndex + 1; noteIndex < notes.length; noteIndex++) { + const note = notes[noteIndex]; + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_8__.isNote)(note) && !note.isRest() && !note.shouldIgnoreTicks()) { + nextRestLine = note.getLineForRest(); + break; + } + } + // Locate the mid point between two lines. + if (compare && currRestLine !== nextRestLine) { + const top = Math.max(currRestLine, nextRestLine); + const bot = Math.min(currRestLine, nextRestLine); + nextRestLine = (0,_util__WEBPACK_IMPORTED_MODULE_9__.midLine)(top, bot); + } + return nextRestLine; +} +/** + * Format implements the formatting and layout algorithms that are used + * to position notes in a voice. The algorithm can align multiple voices both + * within a stave, and across multiple staves. + * + * To do this, the formatter breaks up voices into a grid of rational-valued + * `ticks`, to which each note is assigned. Then, minimum widths are assigned + * to each tick based on the widths of the notes and modifiers in that tick. This + * establishes the smallest amount of space required for each tick. + * + * Finally, the formatter distributes the left over space proportionally to + * all the ticks, setting the `x` values of the notes in each tick. + * + * See `tests/formatter_tests.ts` for usage examples. The helper functions included + * here (`FormatAndDraw`, `FormatAndDrawTab`) also serve as useful usage examples. + */ +class Formatter { + constructor(options) { + this.formatterOptions = Object.assign({ globalSoftmax: false, softmaxFactor: _tables__WEBPACK_IMPORTED_MODULE_6__.Tables.SOFTMAX_FACTOR, maxIterations: 5 }, options); + this.justifyWidth = 0; + this.totalCost = 0; + this.totalShift = 0; + this.durationStats = {}; + // Minimum width required to render all the notes in the voices. + this.minTotalWidth = 0; + // This is set to `true` after `minTotalWidth` is calculated. + this.hasMinTotalWidth = false; + // Arrays of tick and modifier contexts. + this.tickContexts = { + map: {}, + array: [], + list: [], + resolutionMultiplier: 0, + }; + this.modifierContexts = []; + // Gaps between contexts, for free movement of notes post + // formatting. + this.contextGaps = { + total: 0, + gaps: [], + }; + this.voices = []; + this.lossHistory = []; + } + /** + * Helper function to layout "notes" one after the other without + * regard for proportions. Useful for tests and debugging. + */ + static SimpleFormat(notes, x = 0, { paddingBetween = 10 } = {}) { + notes.reduce((accumulator, note) => { + note.addToModifierContext(new _modifiercontext__WEBPACK_IMPORTED_MODULE_3__.ModifierContext()); + const tick = new _tickcontext__WEBPACK_IMPORTED_MODULE_7__.TickContext().addTickable(note).preFormat(); + const metrics = tick.getMetrics(); + tick.setX(accumulator + metrics.totalLeftPx); + return accumulator + tick.getWidth() + metrics.totalRightPx + paddingBetween; + }, x); + } + /** Helper function to plot formatter debug info. */ + static plotDebugging(ctx, formatter, xPos, y1, y2, options) { + options = Object.assign({ stavePadding: _tables__WEBPACK_IMPORTED_MODULE_6__.Tables.currentMusicFont().lookupMetric('stave.padding') }, options); + const x = xPos + options.stavePadding; + const contextGaps = formatter.contextGaps; + function stroke(x1, x2, color) { + ctx.beginPath(); + ctx.setStrokeStyle(color); + ctx.setFillStyle(color); + ctx.setLineWidth(1); + ctx.fillRect(x1, y1, Math.max(x2 - x1, 0), y2 - y1); + } + ctx.save(); + ctx.setFont(_font__WEBPACK_IMPORTED_MODULE_1__.Font.SANS_SERIF, 8); + contextGaps.gaps.forEach((gap) => { + stroke(x + gap.x1, x + gap.x2, 'rgba(100,200,100,0.4)'); + ctx.setFillStyle('green'); + ctx.fillText(Math.round(gap.x2 - gap.x1).toString(), x + gap.x1, y2 + 12); + }); + ctx.setFillStyle('red'); + ctx.fillText(`Loss: ${(formatter.totalCost || 0).toFixed(2)} Shift: ${(formatter.totalShift || 0).toFixed(2)} Gap: ${contextGaps.total.toFixed(2)}`, x - 20, y2 + 27); + ctx.restore(); + } + /** + * Helper function to format and draw a single voice. Returns a bounding + * box for the notation. + * @param ctx the rendering context + * @param stave the stave to which to draw (`Stave` or `TabStave`) + * @param notes array of `Note` instances (`Note`, `TextNote`, `TabNote`, etc.) + * @param params one of below: + * * Setting `autobeam` only `(context, stave, notes, true)` or + * `(ctx, stave, notes, {autobeam: true})` + * * Setting `align_rests` a struct is needed `(context, stave, notes, {align_rests: true})` + * * Setting both a struct is needed `(context, stave, notes, { + * autobeam: true, align_rests: true})` + * * `autobeam` automatically generates beams for the notes. + * * `align_rests` aligns rests with nearby notes. + */ + static FormatAndDraw(ctx, stave, notes, params) { + let options = { + auto_beam: false, + align_rests: false, + }; + if (typeof params === 'object') { + options = Object.assign(Object.assign({}, options), params); + } + else if (typeof params === 'boolean') { + options.auto_beam = params; + } + // Start by creating a voice and adding all the notes to it. + const voice = new _voice__WEBPACK_IMPORTED_MODULE_10__.Voice(_tables__WEBPACK_IMPORTED_MODULE_6__.Tables.TIME4_4).setMode(_voice__WEBPACK_IMPORTED_MODULE_10__.Voice.Mode.SOFT).addTickables(notes); + // Then create beams, if requested. + const beams = options.auto_beam ? _beam__WEBPACK_IMPORTED_MODULE_0__.Beam.applyAndGetBeams(voice) : []; + // Instantiate a `Formatter` and format the notes. + new Formatter() + .joinVoices([voice]) // , { align_rests: options.align_rests }) + .formatToStave([voice], stave, { align_rests: options.align_rests, stave }); + // Render the voice and beams to the stave. + voice.setStave(stave).draw(ctx, stave); + beams.forEach((beam) => beam.setContext(ctx).draw()); + // Return the bounding box of the voice. + return voice.getBoundingBox(); + } + /** + * Helper function to format and draw aligned tab and stave notes in two + * separate staves. + * @param ctx the rendering context + * @param tabstave a `TabStave` instance on which to render `TabNote`s. + * @param stave a `Stave` instance on which to render `Note`s. + * @param notes array of `Note` instances for the stave (`Note`, `BarNote`, etc.) + * @param tabnotes array of `Note` instances for the tab stave (`TabNote`, `BarNote`, etc.) + * @param autobeam automatically generate beams. + * @param params a configuration object: + * * `autobeam` automatically generates beams for the notes. + * * `align_rests` aligns rests with nearby notes. + */ + static FormatAndDrawTab(ctx, tabstave, stave, tabnotes, notes, autobeam, params) { + let opts = { + auto_beam: autobeam, + align_rests: false, + }; + if (typeof params === 'object') { + opts = Object.assign(Object.assign({}, opts), params); + } + else if (typeof params === 'boolean') { + opts.auto_beam = params; + } + // Create a `4/4` voice for `notes`. + const notevoice = new _voice__WEBPACK_IMPORTED_MODULE_10__.Voice(_tables__WEBPACK_IMPORTED_MODULE_6__.Tables.TIME4_4).setMode(_voice__WEBPACK_IMPORTED_MODULE_10__.Voice.Mode.SOFT).addTickables(notes); + // Create a `4/4` voice for `tabnotes`. + const tabvoice = new _voice__WEBPACK_IMPORTED_MODULE_10__.Voice(_tables__WEBPACK_IMPORTED_MODULE_6__.Tables.TIME4_4).setMode(_voice__WEBPACK_IMPORTED_MODULE_10__.Voice.Mode.SOFT).addTickables(tabnotes); + // Then create beams, if requested. + const beams = opts.auto_beam ? _beam__WEBPACK_IMPORTED_MODULE_0__.Beam.applyAndGetBeams(notevoice) : []; + // Instantiate a `Formatter` and align tab and stave notes. + new Formatter() + .joinVoices([notevoice]) // , { align_rests: opts.align_rests }) + .joinVoices([tabvoice]) + .formatToStave([notevoice, tabvoice], stave, { align_rests: opts.align_rests }); + // Render voices and beams to staves. + notevoice.draw(ctx, stave); + tabvoice.draw(ctx, tabstave); + beams.forEach((beam) => beam.setContext(ctx).draw()); + // Draw a connector between tab and note staves. + new _staveconnector__WEBPACK_IMPORTED_MODULE_5__.StaveConnector(stave, tabstave).setContext(ctx).draw(); + } + /** + * Automatically set the vertical position of rests based on previous/next note positions. + * @param tickables an array of Tickables. + * @param alignAllNotes If `false`, only align rests that are within a group of beamed notes. + * @param alignTuplets If `false`, ignores tuplets. + */ + static AlignRestsToNotes(tickables, alignAllNotes, alignTuplets) { + tickables.forEach((currTickable, index) => { + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_8__.isStaveNote)(currTickable) && currTickable.isRest()) { + if (currTickable.getTuplet() && !alignTuplets) { + return; + } + // If activated rests not on default can be rendered as specified. + const position = currTickable.getGlyph().position.toUpperCase(); + if (position !== 'R/4' && position !== 'B/4') { + return; + } + if (alignAllNotes || currTickable.getBeam()) { + // Align rests with previous/next notes. + const props = currTickable.getKeyProps()[0]; + if (index === 0) { + props.line = getRestLineForNextNoteGroup(tickables, props.line, index, false); + } + else if (index > 0 && index < tickables.length) { + // If previous tickable is a rest, use its line number. + const prevTickable = tickables[index - 1]; + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_8__.isStaveNote)(prevTickable)) { + if (prevTickable.isRest()) { + props.line = prevTickable.getKeyProps()[0].line; + } + else { + const restLine = prevTickable.getLineForRest(); + // Get the rest line for next valid non-rest note group. + props.line = getRestLineForNextNoteGroup(tickables, restLine, index, true); + } + } + } + currTickable.setKeyLine(0, props.line); + } + } + }); + } + /** + * Find all the rests in each of the `voices` and align them to neighboring notes. + * + * @param voices + * @param alignAllNotes If `false`, only align rests within beamed groups of notes. If `true`, align all rests. + */ + alignRests(voices, alignAllNotes) { + if (!voices || !voices.length) { + throw new _util__WEBPACK_IMPORTED_MODULE_9__.RuntimeError('BadArgument', 'No voices to format rests'); + } + voices.forEach((voice) => Formatter.AlignRestsToNotes(voice.getTickables(), alignAllNotes)); + } + /** + * Estimate the width required to render 'voices'. This is done by: + * 1. Sum the widths of all the tick contexts + * 2. Estimate the padding. + * The latter is done by calculating the padding 3 different ways, and taking the + * greatest value: + * 1. the padding required for unaligned notes in different voices + * 2. the padding based on the stddev of the tickable widths + * 3. the padding based on the stddev of the tickable durations. + * + * The last 2 quantities estimate a 'width entropy', where notes might need more + * room than the proportional formatting gives them. A measure of all same duration + * and width will need no extra padding, and all these quantities will be + * zero in that case. + * + * Note: joinVoices has to be called before calling preCalculateMinTotalWidth. + * + * @param voices the voices that contain the notes + * @returns the estimated width in pixels + */ + preCalculateMinTotalWidth(voices) { + const unalignedPadding = _tables__WEBPACK_IMPORTED_MODULE_6__.Tables.currentMusicFont().lookupMetric('stave.unalignedNotePadding'); + // Calculate additional padding based on 3 methods: + // 1) unaligned beats in voices, 2) variance of width, 3) variance of durations + let unalignedCtxCount = 0; + let wsum = 0; + let dsum = 0; + const widths = []; + const durations = []; + // Cache results. + if (this.hasMinTotalWidth) + return this.minTotalWidth; + // Create tick contexts. + if (!voices) { + throw new _util__WEBPACK_IMPORTED_MODULE_9__.RuntimeError('BadArgument', "'voices' required to run preCalculateMinTotalWidth"); + } + this.createTickContexts(voices); + // eslint-disable-next-line + const { list: contextList, map: contextMap } = this.tickContexts; + this.minTotalWidth = 0; + // Go through each tick context and calculate total width, + // and also accumulate values used in padding hints + contextList.forEach((tick) => { + const context = contextMap[tick]; + context.preFormat(); + // If this TC doesn't have all the voices on it, it's unaligned. + // so increment the unaligned padding accumulator + if (context.getTickables().length < voices.length) { + unalignedCtxCount += 1; + } + // Calculate the 'width entropy' over all the Tickables. + context.getTickables().forEach((t) => { + wsum += t.getMetrics().width; + dsum += t.getTicks().value(); + widths.push(t.getMetrics().width); + durations.push(t.getTicks().value()); + }); + const width = context.getWidth(); + this.minTotalWidth += width; + }); + this.hasMinTotalWidth = true; + // normalized (0-1) STDDEV of widths/durations gives us padding hints. + const wavg = wsum > 0 ? wsum / widths.length : 1 / widths.length; + const wvar = sumArray(widths.map((ll) => Math.pow(ll - wavg, 2))); + const wpads = Math.pow(wvar / widths.length, 0.5) / wavg; + const davg = dsum / durations.length; + const dvar = sumArray(durations.map((ll) => Math.pow(ll - davg, 2))); + const dpads = Math.pow(dvar / durations.length, 0.5) / davg; + // Find max of 3 methods pad the width with that + const padmax = Math.max(dpads, wpads) * contextList.length * unalignedPadding; + const unalignedPad = unalignedPadding * unalignedCtxCount; + return this.minTotalWidth + Math.max(unalignedPad, padmax); + } + /** + * Get minimum width required to render all voices. Either `format` or + * `preCalculateMinTotalWidth` must be called before this method. + */ + getMinTotalWidth() { + if (!this.hasMinTotalWidth) { + throw new _util__WEBPACK_IMPORTED_MODULE_9__.RuntimeError('NoMinTotalWidth', "Call 'preCalculateMinTotalWidth' or 'preFormat' before calling 'getMinTotalWidth'"); + } + return this.minTotalWidth; + } + /** Calculate the resolution multiplier for `voices`. */ + static getResolutionMultiplier(voices) { + if (!voices || !voices.length) { + throw new _util__WEBPACK_IMPORTED_MODULE_9__.RuntimeError('BadArgument', 'No voices to format'); + } + const totalTicks = voices[0].getTotalTicks(); + const resolutionMultiplier = voices.reduce((accumulator, voice) => { + if (!voice.getTotalTicks().equals(totalTicks)) { + throw new _util__WEBPACK_IMPORTED_MODULE_9__.RuntimeError('TickMismatch', 'Voices should have same total note duration in ticks.'); + } + if (voice.getMode() === _voice__WEBPACK_IMPORTED_MODULE_10__.Voice.Mode.STRICT && !voice.isComplete()) { + throw new _util__WEBPACK_IMPORTED_MODULE_9__.RuntimeError('IncompleteVoice', 'Voice does not have enough notes.'); + } + return Math.max(accumulator, _fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction.LCM(accumulator, voice.getResolutionMultiplier())); + }, 1); + return resolutionMultiplier; + } + /** Create a `ModifierContext` for each tick in `voices`. */ + createModifierContexts(voices) { + if (voices.length == 0) + return; + const resolutionMultiplier = Formatter.getResolutionMultiplier(voices); + // Initialize tick maps. + const tickToContextMap = new Map(); + const contexts = []; + // For each voice, extract notes and create a context for every + // new tick that hasn't been seen before. + voices.forEach((voice) => { + // Use resolution multiplier as denominator so that no additional expansion + // of fractional tick values is needed. + const ticksUsed = new _fraction__WEBPACK_IMPORTED_MODULE_2__.Fraction(0, resolutionMultiplier); + voice.getTickables().forEach((tickable) => { + const integerTicks = ticksUsed.numerator; + let staveTickToContextMap = tickToContextMap.get(tickable.getStave()); + // If we have no tick context for this tick, create one. + if (!staveTickToContextMap) { + tickToContextMap.set(tickable.getStave(), {}); + staveTickToContextMap = tickToContextMap.get(tickable.getStave()); + } + if (!(staveTickToContextMap ? staveTickToContextMap[integerTicks] : undefined)) { + const newContext = new _modifiercontext__WEBPACK_IMPORTED_MODULE_3__.ModifierContext(); + contexts.push(newContext); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + staveTickToContextMap[integerTicks] = newContext; + } + // Add this tickable to the TickContext. + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + tickable.addToModifierContext(staveTickToContextMap[integerTicks]); + ticksUsed.add(tickable.getTicks()); + }); + }); + this.modifierContexts.push({ + map: tickToContextMap, + array: contexts, + resolutionMultiplier, + }); + } + /** + * Create a `TickContext` for each tick in `voices`. Also calculate the + * total number of ticks in voices. + */ + createTickContexts(voices) { + const fn = (tickable, context, voiceIndex) => context.addTickable(tickable, voiceIndex); + const contexts = createContexts(voices, (tick) => new _tickcontext__WEBPACK_IMPORTED_MODULE_7__.TickContext(tick), fn); + this.tickContexts = contexts; + const contextArray = this.tickContexts.array; + contextArray.forEach((context) => { + context.tContexts = contextArray; + }); + return contexts; + } + /** + * Get the AlignmentContexts of TickContexts that were created by createTickContexts. + * Returns undefined if createTickContexts has not yet been run. + */ + getTickContexts() { + return this.tickContexts; + } + /** + * This is the core formatter logic. Format voices and justify them + * to `justifyWidth` pixels. `renderingContext` is required to justify elements + * that can't retrieve widths without a canvas. This method sets the `x` positions + * of all the tickables/notes in the formatter. + */ + preFormat(justifyWidth = 0, renderingContext, voicesParam, stave) { + // Initialize context maps. + const contexts = this.tickContexts; + if (!contexts) { + throw new _util__WEBPACK_IMPORTED_MODULE_9__.RuntimeError('NoTickContexts', 'preFormat requires TickContexts'); + } + const { list: contextList, map: contextMap } = contexts; + // Reset loss history for evaluator. + this.lossHistory = []; + // If voices and a stave were provided, set the Stave for each voice + // and preFormat to apply Y values to the notes; + if (voicesParam && stave) { + voicesParam.forEach((voice) => voice.setStave(stave).preFormat()); + } + // Now distribute the ticks to each tick context, and assign them their + // own X positions. + let x = 0; + let shift = 0; + this.minTotalWidth = 0; + let totalTicks = 0; + // Pass 1: Give each note maximum width requested by context. + contextList.forEach((tick) => { + const context = contextMap[tick]; + // Make sure that all tickables in this context have calculated their + // space requirements. + context.preFormat(); + const width = context.getWidth(); + this.minTotalWidth += width; + const maxTicks = context.getMaxTicks().value(); + totalTicks += maxTicks; + const metrics = context.getMetrics(); + x = x + shift + metrics.totalLeftPx; + context.setX(x); + // Calculate shift for the next tick. + shift = width - metrics.totalLeftPx; + }); + // Use softmax based on all notes across all staves. (options.globalSoftmax) + const { globalSoftmax, softmaxFactor, maxIterations } = this.formatterOptions; + const exp = (tick) => Math.pow(softmaxFactor, (contextMap[tick].getMaxTicks().value() / totalTicks)); + const expTicksUsed = sumArray(contextList.map(exp)); + this.minTotalWidth = x + shift; + this.hasMinTotalWidth = true; + // No justification needed. End formatting. + if (justifyWidth <= 0) + return this.evaluate(); + // Start justification. Subtract the right extra pixels of the final context because the formatter + // justifies based on the context's X position, which is the left-most part of the note head. + const firstContext = contextMap[contextList[0]]; + const lastContext = contextMap[contextList[contextList.length - 1]]; + // Calculate the "distance error" between the tick contexts. The expected distance is the spacing proportional to + // the softmax of the ticks. + function calculateIdealDistances(adjustedJustifyWidth) { + const distances = contextList.map((tick, i) => { + const context = contextMap[tick]; + const voices = context.getTickablesByVoice(); + let backTickable; + if (i > 0) { + const prevContext = contextMap[contextList[i - 1]]; + // Go through each tickable and search backwards for another tickable + // in the same voice. If found, use that duration (ticks) to calculate + // the expected distance. + for (let j = i - 1; j >= 0; j--) { + const backTick = contextMap[contextList[j]]; + const backVoices = backTick.getTickablesByVoice(); + // Look for matching voices between tick contexts. + const matchingVoices = []; + Object.keys(voices).forEach((v) => { + if (backVoices[v]) { + matchingVoices.push(v); + } + }); + if (matchingVoices.length > 0) { + // Found matching voices, get largest duration + let maxTicks = 0; + let maxNegativeShiftPx = Infinity; + let expectedDistance = 0; + matchingVoices.forEach((v) => { + const ticks = backVoices[v].getTicks().value(); + if (ticks > maxTicks) { + backTickable = backVoices[v]; + maxTicks = ticks; + } + // Calculate the limits of the shift based on modifiers, etc. + const thisTickable = voices[v]; + const insideLeftEdge = thisTickable.getX() - + (thisTickable.getMetrics().modLeftPx + thisTickable.getMetrics().leftDisplacedHeadPx); + const backMetrics = backVoices[v].getMetrics(); + const insideRightEdge = backVoices[v].getX() + backMetrics.notePx + backMetrics.modRightPx + backMetrics.rightDisplacedHeadPx; + // Don't allow shifting if notes in the same voice can collide + maxNegativeShiftPx = Math.min(maxNegativeShiftPx, insideLeftEdge - insideRightEdge); + }); + // Don't shift further left than the notehead of the last context. Actually, stay at most 5% to the right + // so that two different tick contexts don't align across staves. + maxNegativeShiftPx = Math.min(maxNegativeShiftPx, context.getX() - (prevContext.getX() + adjustedJustifyWidth * 0.05)); + // Calculate the expected distance of the current context from the last matching tickable. The + // distance is scaled down by the softmax for the voice. + if (globalSoftmax) { + const t = totalTicks; + expectedDistance = (Math.pow(softmaxFactor, (maxTicks / t)) / expTicksUsed) * adjustedJustifyWidth; + } + else if (typeof backTickable !== 'undefined') { + expectedDistance = backTickable.getVoice().softmax(maxTicks) * adjustedJustifyWidth; + } + return { + expectedDistance, + maxNegativeShiftPx, + fromTickable: backTickable, + }; + } + } + } + return { expectedDistance: 0, fromTickablePx: 0, maxNegativeShiftPx: 0 }; + }); + return distances; + } + function shiftToIdealDistances(idealDistances) { + // Distribute ticks to the contexts based on the calculated distance error. + const centerX = adjustedJustifyWidth / 2; + let spaceAccum = 0; + contextList.forEach((tick, index) => { + const context = contextMap[tick]; + if (index > 0) { + const contextX = context.getX(); + const ideal = idealDistances[index]; + const errorPx = (0,_util__WEBPACK_IMPORTED_MODULE_9__.defined)(ideal.fromTickable).getX() + ideal.expectedDistance - (contextX + spaceAccum); + let negativeShiftPx = 0; + if (errorPx > 0) { + spaceAccum += errorPx; + } + else if (errorPx < 0) { + negativeShiftPx = Math.min(ideal.maxNegativeShiftPx, Math.abs(errorPx)); + spaceAccum += -negativeShiftPx; + } + context.setX(contextX + spaceAccum); + } + // Move center aligned tickables to middle + context.getCenterAlignedTickables().forEach((tickable) => { + tickable.setCenterXShift(centerX - context.getX()); + }); + }); + return lastContext.getX() - firstContext.getX(); + } + const adjustedJustifyWidth = justifyWidth - + lastContext.getMetrics().notePx - + lastContext.getMetrics().totalRightPx - + firstContext.getMetrics().totalLeftPx; + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_6__.Tables.currentMusicFont(); + const configMinPadding = musicFont.lookupMetric('stave.endPaddingMin'); + const configMaxPadding = musicFont.lookupMetric('stave.endPaddingMax'); + const leftPadding = musicFont.lookupMetric('stave.padding'); + let targetWidth = adjustedJustifyWidth; + const distances = calculateIdealDistances(targetWidth); + let actualWidth = shiftToIdealDistances(distances); + // Just one context. Done formatting. + if (contextList.length === 1) + return 0; + const calcMinDistance = (targetWidth, distances) => { + let mdCalc = targetWidth / 2; + if (distances.length > 1) { + for (let di = 1; di < distances.length; ++di) { + mdCalc = Math.min(distances[di].expectedDistance / 2, mdCalc); + } + } + return mdCalc; + }; + const minDistance = calcMinDistance(targetWidth, distances); + // right justify to either the configured padding, or the min distance between notes, whichever is greatest. + // This * 2 keeps the existing formatting unless there is 'a lot' of extra whitespace, which won't break + // existing visual regression tests. + const paddingMaxCalc = (curTargetWidth) => { + let lastTickablePadding = 0; + const lastTickable = lastContext && lastContext.getMaxTickable(); + if (lastTickable) { + const voice = lastTickable.getVoice(); + // If the number of actual ticks in the measure <> configured ticks, right-justify + // because the softmax won't yield the correct value + if (voice.getTicksUsed().value() > voice.getTotalTicks().value()) { + return configMaxPadding * 2 < minDistance ? minDistance : configMaxPadding; + } + const tickWidth = lastTickable.getWidth(); + lastTickablePadding = + voice.softmax(lastContext.getMaxTicks().value()) * curTargetWidth - (tickWidth + leftPadding); + } + return configMaxPadding * 2 < lastTickablePadding ? lastTickablePadding : configMaxPadding; + }; + let paddingMax = paddingMaxCalc(targetWidth); + let paddingMin = paddingMax - (configMaxPadding - configMinPadding); + const maxX = adjustedJustifyWidth - paddingMin; + let iterations = maxIterations; + // Adjust justification width until the right margin is as close as possible to the calculated padding, + // without going over + while ((actualWidth > maxX && iterations > 0) || (actualWidth + paddingMax < maxX && iterations > 1)) { + targetWidth -= actualWidth - maxX; + paddingMax = paddingMaxCalc(targetWidth); + paddingMin = paddingMax - (configMaxPadding - configMinPadding); + actualWidth = shiftToIdealDistances(calculateIdealDistances(targetWidth)); + iterations--; + } + this.justifyWidth = justifyWidth; + return this.evaluate(); + } + /** Calculate the total cost of this formatting decision. */ + evaluate() { + const contexts = this.tickContexts; + const justifyWidth = this.justifyWidth; + // Calculate available slack per tick context. This works out how much freedom + // to move a context has in either direction, without affecting other notes. + this.contextGaps = { total: 0, gaps: [] }; + contexts.list.forEach((tick, index) => { + if (index === 0) + return; + const prevTick = contexts.list[index - 1]; + const prevContext = contexts.map[prevTick]; + const context = contexts.map[tick]; + const prevMetrics = prevContext.getMetrics(); + const currMetrics = context.getMetrics(); + // Calculate X position of right edge of previous note + const insideRightEdge = prevContext.getX() + prevMetrics.notePx + prevMetrics.totalRightPx; + // Calculate X position of left edge of current note + const insideLeftEdge = context.getX() - currMetrics.totalLeftPx; + const gap = insideLeftEdge - insideRightEdge; + this.contextGaps.total += gap; + this.contextGaps.gaps.push({ x1: insideRightEdge, x2: insideLeftEdge }); + // Tell the tick contexts how much they can reposition themselves. + context.getFormatterMetrics().freedom.left = gap; + prevContext.getFormatterMetrics().freedom.right = gap; + }); + // Calculate mean distance in each voice for each duration type, then calculate + // how far each note is from the mean. + this.durationStats = {}; + const durationStats = this.durationStats; + function updateStats(duration, space) { + const stats = durationStats[duration]; + if (stats === undefined) { + durationStats[duration] = { mean: space, count: 1 }; + } + else { + stats.count += 1; + stats.mean = (stats.mean + space) / 2; + } + } + this.voices.forEach((voice) => { + voice.getTickables().forEach((note, i, notes) => { + const duration = note.getTicks().clone().simplify().toString(); + const metrics = note.getMetrics(); + const formatterMetrics = note.getFormatterMetrics(); + const leftNoteEdge = note.getX() + metrics.notePx + metrics.modRightPx + metrics.rightDisplacedHeadPx; + let space = 0; + if (i < notes.length - 1) { + const rightNote = notes[i + 1]; + const rightMetrics = rightNote.getMetrics(); + const rightNoteEdge = rightNote.getX() - rightMetrics.modLeftPx - rightMetrics.leftDisplacedHeadPx; + space = rightNoteEdge - leftNoteEdge; + formatterMetrics.space.used = rightNote.getX() - note.getX(); + rightNote.getFormatterMetrics().freedom.left = space; + } + else { + space = justifyWidth - leftNoteEdge; + formatterMetrics.space.used = justifyWidth - note.getX(); + } + formatterMetrics.freedom.right = space; + updateStats(duration, formatterMetrics.space.used); + }); + }); + // Calculate how much each note deviates from the mean. Loss function is square + // root of the sum of squared deviations. + let totalDeviation = 0; + this.voices.forEach((voice) => { + voice.getTickables().forEach((note) => { + const duration = note.getTicks().clone().simplify().toString(); + const metrics = note.getFormatterMetrics(); + metrics.space.mean = durationStats[duration].mean; + metrics.duration = duration; + metrics.iterations += 1; + metrics.space.deviation = metrics.space.used - metrics.space.mean; + totalDeviation += Math.pow(metrics.space.deviation, 2); + }); + }); + this.totalCost = Math.sqrt(totalDeviation); + this.lossHistory.push(this.totalCost); + return this.totalCost; + } + /** + * Run a single iteration of rejustification. At a high level, this method calculates + * the overall "loss" (or cost) of this layout, and repositions tickcontexts in an + * attempt to reduce the cost. You can call this method multiple times until it finds + * and oscillates around a global minimum. + * @param options[alpha] the "learning rate" for the formatter. It determines how much of a shift + * the formatter should make based on its cost function. + */ + tune(options) { + var _a; + const contexts = this.tickContexts; + if (!contexts) { + return 0; + } + const alpha = (_a = options === null || options === void 0 ? void 0 : options.alpha) !== null && _a !== void 0 ? _a : 0.5; + // Move `current` tickcontext by `shift` pixels, and adjust the freedom + // on adjacent tickcontexts. + function move(current, shift, prev, next) { + current.setX(current.getX() + shift); + current.getFormatterMetrics().freedom.left += shift; + current.getFormatterMetrics().freedom.right -= shift; + if (prev) + prev.getFormatterMetrics().freedom.right += shift; + if (next) + next.getFormatterMetrics().freedom.left -= shift; + } + let shift = 0; + this.totalShift = 0; + contexts.list.forEach((tick, index, list) => { + const context = contexts.map[tick]; + const prevContext = index > 0 ? contexts.map[list[index - 1]] : undefined; + const nextContext = index < list.length - 1 ? contexts.map[list[index + 1]] : undefined; + move(context, shift, prevContext, nextContext); + const cost = -sumArray(context.getTickables().map((t) => t.getFormatterMetrics().space.deviation)); + if (cost > 0) { + shift = -Math.min(context.getFormatterMetrics().freedom.right, Math.abs(cost)); + } + else if (cost < 0) { + if (nextContext) { + shift = Math.min(nextContext.getFormatterMetrics().freedom.right, Math.abs(cost)); + } + else { + shift = 0; + } + } + shift *= alpha; + this.totalShift += shift; + }); + return this.evaluate(); + } + /** + * This is the top-level call for all formatting logic completed + * after `x` *and* `y` values have been computed for the notes + * in the voices. + */ + postFormat() { + this.modifierContexts.forEach((modifierContexts) => { + modifierContexts.array.forEach((mc) => mc.postFormat()); + }); + this.tickContexts.list.forEach((tick) => { + this.tickContexts.map[tick].postFormat(); + }); + return this; + } + /** + * Take all `voices` and create `ModifierContext`s out of them. This tells + * the formatters that the voices belong on a single stave. + */ + joinVoices(voices) { + this.createModifierContexts(voices); + this.hasMinTotalWidth = false; + return this; + } + /** + * Align rests in voices, justify the contexts, and position the notes + * so voices are aligned and ready to render onto the stave. This method + * mutates the `x` positions of all tickables in `voices`. + * + * Voices are full justified to fit in `justifyWidth` pixels. + * + * Set `options.context` to the rendering context. Set `options.align_rests` + * to true to enable rest alignment. + */ + format(voices, justifyWidth, options) { + const opts = Object.assign({ align_rests: false }, options); + this.voices = voices; + const softmaxFactor = this.formatterOptions.softmaxFactor; + if (softmaxFactor) { + this.voices.forEach((v) => v.setSoftmaxFactor(softmaxFactor)); + } + this.alignRests(voices, opts.align_rests); + this.createTickContexts(voices); + this.preFormat(justifyWidth, opts.context, voices, opts.stave); + // Only postFormat if a stave was supplied for y value formatting + if (opts.stave) + this.postFormat(); + return this; + } + // This method is just like `format` except that the `justifyWidth` is inferred from the `stave`. + formatToStave(voices, stave, optionsParam) { + const options = Object.assign({ context: stave.getContext() }, optionsParam); + // eslint-disable-next-line + const justifyWidth = stave.getNoteEndX() - stave.getNoteStartX() - _stave__WEBPACK_IMPORTED_MODULE_4__.Stave.defaultPadding; + L('Formatting voices to width: ', justifyWidth); + return this.format(voices, justifyWidth, options); + } + getTickContext(tick) { + var _a; + return (_a = this.tickContexts) === null || _a === void 0 ? void 0 : _a.map[tick]; + } +} +// To enable logging for this class. Set `Vex.Flow.Formatter.DEBUG` to `true`. +Formatter.DEBUG = false; + + +/***/ }), + +/***/ "./src/fraction.ts": +/*!*************************!*\ + !*** ./src/fraction.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Fraction": () => (/* binding */ Fraction) +/* harmony export */ }); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// Author: Joshua Koo / @zz85 +// Author: @incompleteopus + + +/** Fraction represents a rational number. */ +class Fraction { + /** Set the numerator and denominator. */ + constructor(numerator, denominator) { + this.numerator = 1; + this.denominator = 1; + this.set(numerator, denominator); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_0__.Category.Fraction; + } + /** + * GCD: Greatest common divisor using the Euclidean algorithm. + * Note: GCD(0, 0) => 0 and GCD(0, n) => n. + */ + static GCD(a, b) { + if (typeof a !== 'number' || Number.isNaN(a) || typeof b !== 'number' || Number.isNaN(b)) { + throw new _util__WEBPACK_IMPORTED_MODULE_1__.RuntimeError('BadArgument', `Invalid numbers: ${a}, ${b}`); + } + let t; + while (b !== 0) { + t = b; + b = a % b; + a = t; + } + return a; + } + /** LCM: Lowest common multiple. */ + static LCM(a, b) { + return (a * b) / Fraction.GCD(a, b); + } + /** Lowest common multiple for more than two numbers. */ + static LCMM(args) { + if (args.length === 0) { + return 0; + } + else if (args.length === 1) { + return args[0]; + } + else if (args.length === 2) { + return Fraction.LCM(args[0], args[1]); + } + else { + // args.shift() removes the first number. + // LCM the first number with the rest of the numbers. + return Fraction.LCM(args.shift(), Fraction.LCMM(args)); + } + } + /** Set the numerator and denominator. */ + set(numerator = 1, denominator = 1) { + this.numerator = numerator; + this.denominator = denominator; + return this; + } + /** Return the value of the fraction. */ + value() { + return this.numerator / this.denominator; + } + /** Simplify numerator and denominator using GCD. */ + simplify() { + let u = this.numerator; + let d = this.denominator; + const gcd = Fraction.GCD(u, d); + u /= gcd; + d /= gcd; + if (d < 0) { + d = -d; + u = -u; + } + return this.set(u, d); + } + /** Add value of another fraction. */ + add(param1 = 0, param2 = 1) { + const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2); + const lcm = Fraction.LCM(this.denominator, otherDenominator); + const a = lcm / this.denominator; + const b = lcm / otherDenominator; + const u = this.numerator * a + otherNumerator * b; + return this.set(u, lcm); + } + /** Substract value of another fraction. */ + subtract(param1 = 0, param2 = 1) { + const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2); + const lcm = Fraction.LCM(this.denominator, otherDenominator); + const a = lcm / this.denominator; + const b = lcm / otherDenominator; + const u = this.numerator * a - otherNumerator * b; + return this.set(u, lcm); + } + /** Multiply by value of another fraction. */ + multiply(param1 = 1, param2 = 1) { + const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2); + return this.set(this.numerator * otherNumerator, this.denominator * otherDenominator); + } + /** Divide by value of another Fraction. */ + divide(param1 = 1, param2 = 1) { + const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2); + return this.set(this.numerator * otherDenominator, this.denominator * otherNumerator); + } + /** Simplify both sides and check if they are equal. */ + equals(compare) { + const a = Fraction.__staticFractionA.copy(compare).simplify(); + const b = Fraction.__staticFractionB.copy(this).simplify(); + return a.numerator === b.numerator && a.denominator === b.denominator; + } + /** Greater than operator. */ + greaterThan(compare) { + const a = Fraction.__staticFractionB.copy(this); + a.subtract(compare); + return a.numerator > 0; + } + /** Greater than or equals operator. */ + greaterThanEquals(compare) { + const a = Fraction.__staticFractionB.copy(this); + a.subtract(compare); + return a.numerator >= 0; + } + /** Less than operator. */ + lessThan(compare) { + return !this.greaterThanEquals(compare); + } + /** Less than or equals operator. */ + lessThanEquals(compare) { + return !this.greaterThan(compare); + } + /** Return a new copy with current values. */ + clone() { + return new Fraction(this.numerator, this.denominator); + } + /** Copy value of another fraction. */ + copy(other) { + if (typeof other === 'number') { + return this.set(other, 1); + } + else { + return this.set(other.numerator, other.denominator); + } + } + /** Return the integer component (eg. 5/2 => 2). */ + quotient() { + return Math.floor(this.numerator / this.denominator); + } + /** Return the remainder component (eg. 5/2 => 1). */ + remainder() { + return this.numerator % this.denominator; + } + /** Calculate absolute value. */ + makeAbs() { + this.denominator = Math.abs(this.denominator); + this.numerator = Math.abs(this.numerator); + return this; + } + /** Return a raw string representation (eg. "5/2"). */ + toString() { + return `${this.numerator}/${this.denominator}`; + } + /** Return a simplified string respresentation. */ + toSimplifiedString() { + return Fraction.__staticFractionTmp.copy(this).simplify().toString(); + } + /** Return string representation in mixed form. */ + toMixedString() { + let s = ''; + const q = this.quotient(); + const f = Fraction.__staticFractionTmp.copy(this); + if (q < 0) { + f.makeAbs(); + } + if (q !== 0) { + s += q; + if (f.numerator !== 0) { + s += ` ${f.toSimplifiedString()}`; + } + } + else if (f.numerator === 0) { + s = '0'; + } + else { + s = f.toSimplifiedString(); + } + return s; + } + /** Parse a fraction string. */ + parse(str) { + const i = str.split('/'); + const n = parseInt(i[0], 10); + const d = i[1] ? parseInt(i[1], 10) : 1; + return this.set(n, d); + } +} +// Cached objects for comparisons. +Fraction.__staticFractionA = new Fraction(); +Fraction.__staticFractionB = new Fraction(); +Fraction.__staticFractionTmp = new Fraction(); +/** Helper function to extract the numerator and denominator from another fraction. */ +function getNumeratorAndDenominator(n, d = 1) { + if (typeof n === 'number') { + // Both params are numbers, so we return them as [numerator, denominator]. + return [n, d]; + } + else { + // First param is a Fraction object. We ignore the second param. + return [n.numerator, n.denominator]; + } +} + + +/***/ }), + +/***/ "./src/frethandfinger.ts": +/*!*******************************!*\ + !*** ./src/frethandfinger.ts ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "FretHandFinger": () => (/* binding */ FretHandFinger) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _textformatter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./textformatter */ "./src/textformatter.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// VexFlow - Music Engraving for HTML5 +// Copyright Mohit Muthanna 2010 +// Author Larry Kuhns 2013 +// Class to draws string numbers into the notation. + + + + + + +class FretHandFinger extends _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier { + constructor(finger) { + super(); + this.finger = finger; + this.width = 7; + this.position = _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.LEFT; // Default position above stem or note head + this.x_shift = 0; + this.y_shift = 0; + this.x_offset = 0; // Horizontal offset from default + this.y_offset = 0; // Vertical offset from default + this.resetFont(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_4__.Category.FretHandFinger; + } + // Arrange fingerings inside a ModifierContext. + static format(nums, state) { + const { left_shift, right_shift } = state; + const num_spacing = 1; + if (!nums || nums.length === 0) + return false; + const nums_list = []; + let prev_note = null; + let shiftLeft = 0; + let shiftRight = 0; + for (let i = 0; i < nums.length; ++i) { + const num = nums[i]; + const note = num.getNote(); + const pos = num.getPosition(); + const index = num.checkIndex(); + const props = note.getKeyProps()[index]; + const textFormatter = _textformatter__WEBPACK_IMPORTED_MODULE_3__.TextFormatter.create(num.textFont); + const textHeight = textFormatter.maxHeight; + if (num.position === _modifier__WEBPACK_IMPORTED_MODULE_1__.ModifierPosition.ABOVE) { + state.top_text_line += textHeight / _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.STAVE_LINE_DISTANCE + 0.5; + } + if (num.position === _modifier__WEBPACK_IMPORTED_MODULE_1__.ModifierPosition.BELOW) { + state.text_line += textHeight / _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.STAVE_LINE_DISTANCE + 0.5; + } + if (note !== prev_note) { + for (let n = 0; n < note.keys.length; ++n) { + if (left_shift === 0) { + shiftLeft = Math.max(note.getLeftDisplacedHeadPx(), shiftLeft); + } + if (right_shift === 0) { + shiftRight = Math.max(note.getRightDisplacedHeadPx(), shiftRight); + } + } + prev_note = note; + } + nums_list.push({ + note, + num, + pos, + line: props.line, + shiftL: shiftLeft, + shiftR: shiftRight, + }); + } + // Sort fingernumbers by line number. + nums_list.sort((a, b) => b.line - a.line); + let numShiftL = 0; + let numShiftR = 0; + let xWidthL = 0; + let xWidthR = 0; + let lastLine = null; + let lastNote = null; + for (let i = 0; i < nums_list.length; ++i) { + let num_shift = 0; + const { note, pos, num, line, shiftL, shiftR } = nums_list[i]; + // Reset the position of the string number every line. + if (line !== lastLine || note !== lastNote) { + numShiftL = left_shift + shiftL; + numShiftR = right_shift + shiftR; + } + const numWidth = num.getWidth() + num_spacing; + if (pos === _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.LEFT) { + num.setXShift(left_shift + numShiftL); + num_shift = left_shift + numWidth; // spacing + xWidthL = num_shift > xWidthL ? num_shift : xWidthL; + } + else if (pos === _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.RIGHT) { + num.setXShift(numShiftR); + num_shift = shiftRight + numWidth; // spacing + xWidthR = num_shift > xWidthR ? num_shift : xWidthR; + } + lastLine = line; + lastNote = note; + } + state.left_shift += xWidthL; + state.right_shift += xWidthR; + return true; + } + static easyScoreHook({ fingerings } = {}, note, builder) { + fingerings === null || fingerings === void 0 ? void 0 : fingerings.split(',').map((fingeringString) => { + const split = fingeringString.trim().split('.'); + const params = { number: split[0] }; + if (split[1]) + params.position = split[1]; + return builder.getFactory().Fingering(params); + }).map((fingering, index) => note.addModifier(fingering, index)); + } + setFretHandFinger(finger) { + this.finger = finger; + return this; + } + getFretHandFinger() { + return this.finger; + } + setOffsetX(x) { + this.x_offset = x; + return this; + } + setOffsetY(y) { + this.y_offset = y; + return this; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const start = note.getModifierStartXY(this.position, this.index); + let dot_x = start.x + this.x_shift + this.x_offset; + let dot_y = start.y + this.y_shift + this.y_offset + 5; + switch (this.position) { + case _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.ABOVE: + dot_x -= 4; + dot_y -= 12; + break; + case _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.BELOW: + dot_x -= 2; + dot_y += 10; + break; + case _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.LEFT: + dot_x -= this.width; + break; + case _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.RIGHT: + dot_x += 1; + break; + default: + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('InvalidPosition', `The position ${this.position} does not exist`); + } + ctx.save(); + ctx.setFont(this.textFont); + ctx.fillText('' + this.finger, dot_x, dot_y); + ctx.restore(); + } +} +FretHandFinger.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SANS_SERIF, + size: 9, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.BOLD, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL, +}; + + +/***/ }), + +/***/ "./src/ghostnote.ts": +/*!**************************!*\ + !*** ./src/ghostnote.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "GhostNote": () => (/* binding */ GhostNote) +/* harmony export */ }); +/* harmony import */ var _stemmablenote__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./stemmablenote */ "./src/stemmablenote.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description + + + +const ERROR_MSG = 'Ghost note must have valid initialization data to identify duration.'; +class GhostNote extends _stemmablenote__WEBPACK_IMPORTED_MODULE_0__.StemmableNote { + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_1__.Category.GhostNote; + } + constructor(parameter) { + if (!parameter) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', ERROR_MSG); + } + let noteStruct; + if (typeof parameter === 'string') { + // Preserve backwards-compatibility + noteStruct = { duration: parameter }; + } + else if (typeof parameter === 'object') { + noteStruct = parameter; + } + else { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', ERROR_MSG); + } + super(noteStruct); + // Note properties + this.setWidth(0); + } + /** + * @returns true if this note is a type of rest. Rests don't have pitches, but take up space in the score. + */ + isRest() { + return true; + } + setStave(stave) { + super.setStave(stave); + return this; + } + /* Overridden to ignore */ + // eslint-disable-next-line + addToModifierContext(mc) { + // DO NOTHING. + return this; + } + preFormat() { + this.preFormatted = true; + return this; + } + draw() { + // Draw Annotations + this.setRendered(); + for (let i = 0; i < this.modifiers.length; ++i) { + const modifier = this.modifiers[i]; + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_1__.isAnnotation)(modifier)) { + modifier.setContext(this.getContext()); + modifier.drawWithStyle(); + } + } + } +} + + +/***/ }), + +/***/ "./src/glyph.ts": +/*!**********************!*\ + !*** ./src/glyph.ts ***! + \**********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "OutlineCode": () => (/* binding */ OutlineCode), +/* harmony export */ "Glyph": () => (/* binding */ Glyph) +/* harmony export */ }); +/* harmony import */ var _boundingbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./boundingbox */ "./src/boundingbox.ts"); +/* harmony import */ var _boundingboxcomputation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./boundingboxcomputation */ "./src/boundingboxcomputation.ts"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + +var OutlineCode; +(function (OutlineCode) { + OutlineCode[OutlineCode["MOVE"] = 0] = "MOVE"; + OutlineCode[OutlineCode["LINE"] = 1] = "LINE"; + OutlineCode[OutlineCode["QUADRATIC"] = 2] = "QUADRATIC"; + OutlineCode[OutlineCode["BEZIER"] = 3] = "BEZIER"; +})(OutlineCode || (OutlineCode = {})); +class GlyphCacheEntry { + constructor(fontStack, code, category) { + this.point = -1; + this.metrics = Glyph.loadMetrics(fontStack, code, category); + this.bbox = Glyph.getOutlineBoundingBox(this.metrics.outline, this.metrics.scale, this.metrics.x_shift, this.metrics.y_shift); + if (category) { + this.point = Glyph.lookupFontMetric(this.metrics.font, category, code, 'point', -1); + } + } +} +class GlyphCache { + constructor() { + this.cache = new Map(); + } + lookup(code, category) { + let entries = this.cache.get(Glyph.CURRENT_CACHE_KEY); + if (entries === undefined) { + entries = {}; + this.cache.set(Glyph.CURRENT_CACHE_KEY, entries); + } + const key = category ? `${code}%${category}` : code; + let entry = entries[key]; + if (entry === undefined) { + entry = new GlyphCacheEntry(Glyph.MUSIC_FONT_STACK, code, category); + entries[key] = entry; + } + return entry; + } +} +class GlyphOutline { + constructor(outline, originX, originY, scale) { + this.outline = outline; + this.originX = originX; + this.originY = originY; + this.scale = scale; + this.i = 0; + this.precision = 1; + // Automatically assign private properties: this.outline, this.originX, this.originY, and this.scale. + this.precision = Math.pow(10, _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.RENDER_PRECISION_PLACES); + } + done() { + return this.i >= this.outline.length; + } + next() { + return Math.round((this.outline[this.i++] * this.precision) / this.precision); + } + nextX() { + return Math.round((this.originX + this.outline[this.i++] * this.scale) * this.precision) / this.precision; + } + nextY() { + return Math.round((this.originY - this.outline[this.i++] * this.scale) * this.precision) / this.precision; + } + static parse(str) { + const result = []; + const parts = str.split(' '); + let i = 0; + while (i < parts.length) { + switch (parts[i++]) { + case 'm': + result.push(OutlineCode.MOVE, parseInt(parts[i++]), parseInt(parts[i++])); + break; + case 'l': + result.push(OutlineCode.LINE, parseInt(parts[i++]), parseInt(parts[i++])); + break; + case 'q': + result.push(OutlineCode.QUADRATIC, parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++])); + break; + case 'b': + result.push(OutlineCode.BEZIER, parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++])); + break; + } + } + return result; + } +} +class Glyph extends _element__WEBPACK_IMPORTED_MODULE_2__.Element { + /** + * @param code + * @param point + * @param options + */ + constructor(code, point, options) { + super(); + ////////////////////////////////////////////////////////////////////////////////////////////////// + // INSTANCE MEMBERS + this.bbox = new _boundingbox__WEBPACK_IMPORTED_MODULE_0__.BoundingBox(0, 0, 0, 0); + this.topGlyphs = []; + this.botGlyphs = []; + this.options = {}; + this.scale = 1; + this.code = code; + this.point = point; + this.originShift = { x: 0, y: 0 }; + this.x_shift = 0; + this.y_shift = 0; + if (options) { + this.setOptions(options); + } + else { + this.reset(); + } + } + ////////////////////////////////////////////////////////////////////////////////////////////////// + // STATIC MEMBERS + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_4__.Category.Glyph; + } + /** + * Pass a key of the form `glyphs.{category}.{code}.{key}` to Font.lookupMetric(). If the initial lookup fails, + * try again with the path `glyphs.{category}.{key}`. If the second lookup fails, return the defaultValue. + * + * @param font + * @param category any metric path under 'glyphs', so 'stem.up' could resolve to glyphs.stem.up.shiftX, glyphs.stem.up.shiftY, etc. + * @param code + * @param key + * @param defaultValue + */ + static lookupFontMetric(font, category, code, key, defaultValue) { + let value = font.lookupMetric(`glyphs.${category}.${code}.${key}`, undefined); + if (value === undefined) { + // The first lookup failed, so we omit .${code} and try again (with a defaultValue this time). + value = font.lookupMetric(`glyphs.${category}.${key}`, defaultValue); + } + return value; + } + static lookupGlyph(fontStack, code) { + (0,_util__WEBPACK_IMPORTED_MODULE_5__.defined)(fontStack, 'BadFontStack', 'Font stack is misconfigured'); + let glyph; + let font; + for (let i = 0; i < fontStack.length; i++) { + font = fontStack[i]; + glyph = font.getGlyphs()[code]; + if (glyph) + return { glyph, font }; + } + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('BadGlyph', `Glyph ${code} does not exist in font.`); + } + static loadMetrics(fontStack, code, category) { + const { glyph, font } = Glyph.lookupGlyph(fontStack, code); + if (!glyph.o) + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('BadGlyph', `Glyph ${code} has no outline defined.`); + let x_shift = 0; + let y_shift = 0; + let scale = 1; + if (category && font) { + x_shift = Glyph.lookupFontMetric(font, category, code, 'shiftX', 0); + y_shift = Glyph.lookupFontMetric(font, category, code, 'shiftY', 0); + scale = Glyph.lookupFontMetric(font, category, code, 'scale', 1); + } + const x_min = glyph.x_min; + const x_max = glyph.x_max; + const ha = glyph.ha; + if (!glyph.cached_outline) { + glyph.cached_outline = GlyphOutline.parse(glyph.o); + } + return { + x_min, + x_max, + x_shift, + y_shift, + scale, + ha, + outline: glyph.cached_outline, + font, + width: x_max - x_min, + height: ha, + }; + } + /** + * Renders glyphs from the default font stack. + * + * @param ctx Canvas or SVG context + * @param x_pos x coordinate + * @param y_pos y coordinate + * @param point the point size of the font + * @param code the glyph code in font.getGlyphs() + * @param options + * @returns + */ + static renderGlyph(ctx, x_pos, y_pos, point, code, options) { + var _a; + const data = Glyph.cache.lookup(code, options === null || options === void 0 ? void 0 : options.category); + const metrics = data.metrics; + if (data.point != -1) { + point = data.point; + } + const customScale = (_a = options === null || options === void 0 ? void 0 : options.scale) !== null && _a !== void 0 ? _a : 1; + const scale = ((point * 72.0) / (metrics.font.getResolution() * 100.0)) * metrics.scale * customScale; + Glyph.renderOutline(ctx, metrics.outline, scale, x_pos + metrics.x_shift * customScale, y_pos + metrics.y_shift * customScale); + return metrics; + } + static renderOutline(ctx, outline, scale, x_pos, y_pos) { + const go = new GlyphOutline(outline, x_pos, y_pos, scale); + ctx.beginPath(); + let x, y; + while (!go.done()) { + switch (go.next()) { + case OutlineCode.MOVE: + ctx.moveTo(go.nextX(), go.nextY()); + break; + case OutlineCode.LINE: + ctx.lineTo(go.nextX(), go.nextY()); + break; + case OutlineCode.QUADRATIC: + x = go.nextX(); + y = go.nextY(); + ctx.quadraticCurveTo(go.nextX(), go.nextY(), x, y); + break; + case OutlineCode.BEZIER: + x = go.nextX(); + y = go.nextY(); + ctx.bezierCurveTo(go.nextX(), go.nextY(), go.nextX(), go.nextY(), x, y); + break; + } + } + ctx.fill(); + } + static getOutlineBoundingBox(outline, scale, x_pos, y_pos) { + const go = new GlyphOutline(outline, x_pos, y_pos, scale); + const bboxComp = new _boundingboxcomputation__WEBPACK_IMPORTED_MODULE_1__.BoundingBoxComputation(); + // (penX, penY) hold the pen position: the start of each stroke. + let penX = x_pos; + let penY = y_pos; + let x, y; + while (!go.done()) { + switch (go.next()) { + case OutlineCode.MOVE: + // Note that we don't add any points to the bounding box until a srroke is actually drawn. + penX = go.nextX(); + penY = go.nextY(); + break; + case OutlineCode.LINE: + bboxComp.addPoint(penX, penY); + penX = go.nextX(); + penY = go.nextY(); + bboxComp.addPoint(penX, penY); + break; + case OutlineCode.QUADRATIC: + x = go.nextX(); + y = go.nextY(); + bboxComp.addQuadraticCurve(penX, penY, go.nextX(), go.nextY(), x, y); + penX = x; + penY = y; + break; + case OutlineCode.BEZIER: + x = go.nextX(); + y = go.nextY(); + bboxComp.addBezierCurve(penX, penY, go.nextX(), go.nextY(), go.nextX(), go.nextY(), x, y); + penX = x; + penY = y; + break; + } + } + return new _boundingbox__WEBPACK_IMPORTED_MODULE_0__.BoundingBox(bboxComp.getX1(), bboxComp.getY1(), bboxComp.width(), bboxComp.height()); + } + static getWidth(code, point, category) { + const data = Glyph.cache.lookup(code, category); + if (data.point != -1) { + point = data.point; + } + const scale = (point * 72) / (data.metrics.font.getResolution() * 100); + return data.bbox.getW() * scale; + } + // eslint-disable-next-line + draw(...args) { + // DO NOTHING. + } + getCode() { + return this.code; + } + // eslint-disable-next-line + setOptions(options) { + this.options = Object.assign(Object.assign({}, this.options), options); + this.reset(); + } + setPoint(point) { + this.point = point; + return this; + } + setStave(stave) { + this.stave = stave; + return this; + } + getXShift() { + return this.x_shift; + } + setXShift(x_shift) { + this.x_shift = x_shift; + return this; + } + getYshift() { + return this.y_shift; + } + setYShift(y_shift) { + this.y_shift = y_shift; + return this; + } + reset() { + const data = Glyph.cache.lookup(this.code, this.options.category); + this.metrics = data.metrics; + // Override point from metrics file + if (data.point != -1) { + this.point = data.point; + } + this.scale = (this.point * 72) / (this.metrics.font.getResolution() * 100); + this.bbox = new _boundingbox__WEBPACK_IMPORTED_MODULE_0__.BoundingBox(data.bbox.getX() * this.scale, data.bbox.getY() * this.scale, data.bbox.getW() * this.scale, data.bbox.getH() * this.scale); + } + checkMetrics() { + return (0,_util__WEBPACK_IMPORTED_MODULE_5__.defined)(this.metrics, 'BadGlyph', `Glyph ${this.code} is not initialized.`); + } + getMetrics() { + const metrics = this.checkMetrics(); + const metricsScale = metrics.scale; + return { + x_min: metrics.x_min * this.scale * metricsScale, + x_max: metrics.x_max * this.scale * metricsScale, + width: this.bbox.getW(), + height: this.bbox.getH(), + scale: this.scale * metricsScale, + x_shift: metrics.x_shift, + y_shift: metrics.y_shift, + outline: metrics.outline, + font: metrics.font, + ha: metrics.ha, + }; + } + setOriginX(x) { + const { bbox } = this; + const originX = Math.abs(bbox.getX() / bbox.getW()); + const xShift = (x - originX) * bbox.getW(); + this.originShift.x = -xShift; + } + setOriginY(y) { + const { bbox } = this; + const originY = Math.abs(bbox.getY() / bbox.getH()); + const yShift = (y - originY) * bbox.getH(); + this.originShift.y = -yShift; + } + setOrigin(x, y) { + this.setOriginX(x); + this.setOriginY(y); + } + render(ctx, x, y) { + const metrics = this.checkMetrics(); + const outline = metrics.outline; + const scale = this.scale * metrics.scale; + this.setRendered(); + this.applyStyle(ctx); + const xPos = x + this.originShift.x + metrics.x_shift; + const yPos = y + this.originShift.y + metrics.y_shift; + Glyph.renderOutline(ctx, outline, scale, xPos, yPos); + this.restoreStyle(ctx); + } + checkStave() { + return (0,_util__WEBPACK_IMPORTED_MODULE_5__.defined)(this.stave, 'NoStave', 'No stave attached to instance.'); + } + renderToStave(x) { + const context = this.checkContext(); + const metrics = this.checkMetrics(); + const stave = this.checkStave(); + const outline = metrics.outline; + const scale = this.scale * metrics.scale; + this.setRendered(); + this.applyStyle(); + const xPos = x + this.x_shift + metrics.x_shift; + const yPos = stave.getYForGlyphs() + this.y_shift + metrics.y_shift; + Glyph.renderOutline(context, outline, scale, xPos, yPos); + this.restoreStyle(); + } +} +Glyph.cache = new GlyphCache(); +// The current cache key for GlyphCache above. +// Computed when Flow.setMusicFont(...) is called. +// It is set to a comma separated list of font names. +Glyph.CURRENT_CACHE_KEY = ''; +// Used by the GlyphCache above. +// Set when Flow.setMusicFont(...) is called. +Glyph.MUSIC_FONT_STACK = []; + + +/***/ }), + +/***/ "./src/glyphnote.ts": +/*!**************************!*\ + !*** ./src/glyphnote.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "GlyphNote": () => (/* binding */ GlyphNote) +/* harmony export */ }); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. + + +class GlyphNote extends _note__WEBPACK_IMPORTED_MODULE_0__.Note { + constructor(glyph, noteStruct, options) { + super(noteStruct); + this.options = Object.assign({ ignoreTicks: false, line: 2 }, options); + // Note properties + this.ignore_ticks = this.options.ignoreTicks; + if (glyph) { + this.setGlyph(glyph); + } + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_1__.Category.GlyphNote; + } + setGlyph(glyph) { + this.glyph = glyph; + this.setWidth(this.glyph.getMetrics().width); + return this; + } + getBoundingBox() { + return this.glyph.getBoundingBox(); + } + preFormat() { + if (!this.preFormatted && this.modifierContext) { + this.modifierContext.preFormat(); + } + this.preFormatted = true; + return this; + } + drawModifiers() { + const ctx = this.checkContext(); + for (let i = 0; i < this.modifiers.length; i++) { + const modifier = this.modifiers[i]; + modifier.setContext(ctx); + modifier.drawWithStyle(); + } + } + draw() { + const stave = this.checkStave(); + const ctx = stave.checkContext(); + this.setRendered(); + ctx.openGroup('glyphNote', this.getAttribute('id')); + // Context is set when setStave is called on Note + const glyph = this.glyph; + if (!glyph.getContext()) { + glyph.setContext(ctx); + } + glyph.setStave(stave); + glyph.setYShift(stave.getYForLine(this.options.line) - stave.getYForGlyphs()); + const x = this.isCenterAligned() ? this.getAbsoluteX() - this.getWidth() / 2 : this.getAbsoluteX(); + glyph.renderToStave(x); + this.drawModifiers(); + ctx.closeGroup(); + } +} + + +/***/ }), + +/***/ "./src/gracenote.ts": +/*!**************************!*\ + !*** ./src/gracenote.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "GraceNote": () => (/* binding */ GraceNote) +/* harmony export */ }); +/* harmony import */ var _stavenote__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. + + + + + +class GraceNote extends _stavenote__WEBPACK_IMPORTED_MODULE_0__.StaveNote { + constructor(noteStruct) { + super(Object.assign({ glyph_font_scale: _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.NOTATION_FONT_SCALE * GraceNote.SCALE, stroke_px: GraceNote.LEDGER_LINE_OFFSET }, noteStruct)); + this.slash = noteStruct.slash || false; + this.slur = true; + this.buildNoteHeads(); + this.width = 3; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.GraceNote; + } + static get LEDGER_LINE_OFFSET() { + return 2; + } + static get SCALE() { + return 0.66; + } + getStemExtension() { + if (this.stem_extension_override) { + return this.stem_extension_override; + } + const glyph = this.getGlyph(); + if (glyph) { + let ret = super.getStemExtension(); + if (glyph.stem) { + const staveNoteScale = this.getStaveNoteScale(); + ret = (_stem__WEBPACK_IMPORTED_MODULE_1__.Stem.HEIGHT + ret) * staveNoteScale - _stem__WEBPACK_IMPORTED_MODULE_1__.Stem.HEIGHT; + } + return ret; + } + return 0; + } + getStaveNoteScale() { + return this.render_options.glyph_font_scale / _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.NOTATION_FONT_SCALE; + } + draw() { + super.draw(); + this.setRendered(); + const stem = this.stem; + if (this.slash && stem) { + const staveNoteScale = this.getStaveNoteScale(); + // some magic numbers are based on the staveNoteScale 0.66. + const offsetScale = staveNoteScale / 0.66; + let slashBBox = undefined; + const beam = this.beam; + if (beam) { + // FIXME: should render slash after beam? + if (!beam.postFormatted) { + beam.postFormat(); + } + slashBBox = this.calcBeamedNotesSlashBBox(8 * offsetScale, 8 * offsetScale, { + stem: 6 * offsetScale, + beam: 5 * offsetScale, + }); + } + else { + const stem_direction = this.getStemDirection(); + const noteHeadBounds = this.getNoteHeadBounds(); + const noteStemHeight = stem.getHeight(); + let x = this.getAbsoluteX(); + let y = stem_direction === _stem__WEBPACK_IMPORTED_MODULE_1__.Stem.DOWN + ? noteHeadBounds.y_top - noteStemHeight + : noteHeadBounds.y_bottom - noteStemHeight; + const defaultStemExtention = stem_direction === _stem__WEBPACK_IMPORTED_MODULE_1__.Stem.DOWN ? this.glyph.stem_down_extension : this.glyph.stem_up_extension; + let defaultOffsetY = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.STEM_HEIGHT; + defaultOffsetY -= defaultOffsetY / 2.8; + defaultOffsetY += defaultStemExtention; + y += defaultOffsetY * staveNoteScale * stem_direction; + const offsets = stem_direction === _stem__WEBPACK_IMPORTED_MODULE_1__.Stem.UP + ? { + x1: 1, + y1: 0, + x2: 13, + y2: -9, + } + : { + x1: -4, + y1: 1, + x2: 13, + y2: 9, + }; + x += offsets.x1 * offsetScale; + y += offsets.y1 * offsetScale; + slashBBox = { + x1: x, + y1: y, + x2: x + offsets.x2 * offsetScale, + y2: y + offsets.y2 * offsetScale, + }; + } + // FIXME: avoid staff lines, ledger lines or others. + const ctx = this.checkContext(); + ctx.save(); + ctx.setLineWidth(1 * offsetScale); // FIXME: use more appropriate value. + ctx.beginPath(); + ctx.moveTo(slashBBox.x1, slashBBox.y1); + ctx.lineTo(slashBBox.x2, slashBBox.y2); + ctx.closePath(); + ctx.stroke(); + ctx.restore(); + } + } + calcBeamedNotesSlashBBox(slashStemOffset, slashBeamOffset, protrusions) { + const beam = this.beam; + if (!beam) + throw new _util__WEBPACK_IMPORTED_MODULE_4__.RuntimeError('NoBeam', "Can't calculate without a beam."); + const beam_slope = beam.slope; + const isBeamEndNote = beam.notes[beam.notes.length - 1] === this; + const scaleX = isBeamEndNote ? -1 : 1; + const beam_angle = Math.atan(beam_slope * scaleX); + // slash line intersecting point on beam. + const iPointOnBeam = { + dx: Math.cos(beam_angle) * slashBeamOffset, + dy: Math.sin(beam_angle) * slashBeamOffset, + }; + slashStemOffset *= this.getStemDirection(); + const slash_angle = Math.atan((iPointOnBeam.dy - slashStemOffset) / iPointOnBeam.dx); + const protrusion_stem_dx = Math.cos(slash_angle) * protrusions.stem * scaleX; + const protrusion_stem_dy = Math.sin(slash_angle) * protrusions.stem; + const protrusion_beam_dx = Math.cos(slash_angle) * protrusions.beam * scaleX; + const protrusion_beam_dy = Math.sin(slash_angle) * protrusions.beam; + const stemX = this.getStemX(); + const stem0X = beam.notes[0].getStemX(); + const stemY = beam.getBeamYToDraw() + (stemX - stem0X) * beam_slope; + const ret = { + x1: stemX - protrusion_stem_dx, + y1: stemY + slashStemOffset - protrusion_stem_dy, + x2: stemX + iPointOnBeam.dx * scaleX + protrusion_beam_dx, + y2: stemY + iPointOnBeam.dy + protrusion_beam_dy, + }; + return ret; + } +} + + +/***/ }), + +/***/ "./src/gracenotegroup.ts": +/*!*******************************!*\ + !*** ./src/gracenotegroup.ts ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "GraceNoteGroup": () => (/* binding */ GraceNoteGroup) +/* harmony export */ }); +/* harmony import */ var _beam__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./beam */ "./src/beam.ts"); +/* harmony import */ var _formatter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formatter */ "./src/formatter.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _stavenote__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _stavetie__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stavetie */ "./src/stavetie.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _tabtie__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./tabtie */ "./src/tabtie.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +/* harmony import */ var _voice__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./voice */ "./src/voice.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// This file implements `GraceNoteGroup` which is used to format and +// render grace notes. + + + + + + + + + + +// To enable logging for this class. Set `GraceNoteGroup.DEBUG` to `true`. +// eslint-disable-next-line +function L(...args) { + if (GraceNoteGroup.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_8__.log)('Vex.Flow.GraceNoteGroup', args); +} +/** GraceNoteGroup is used to format and render grace notes. */ +class GraceNoteGroup extends _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier { + //** `GraceNoteGroup` inherits from `Modifier` and is placed inside a `ModifierContext`. */ + constructor(grace_notes, show_slur) { + super(); + this.preFormatted = false; + this.position = _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier.Position.LEFT; + this.grace_notes = grace_notes; + this.width = 0; + this.show_slur = show_slur; + this.slur = undefined; + this.voice = new _voice__WEBPACK_IMPORTED_MODULE_9__.Voice({ + num_beats: 4, + beat_value: 4, + resolution: _tables__WEBPACK_IMPORTED_MODULE_5__.Tables.RESOLUTION, + }).setStrict(false); + this.render_options = { + slur_y_shift: 0, + }; + this.beams = []; + this.voice.addTickables(this.grace_notes); + return this; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_7__.Category.GraceNoteGroup; + } + /** Arranges groups inside a `ModifierContext`. */ + static format(gracenote_groups, state) { + const group_spacing_stave = 4; + const group_spacing_tab = 0; + if (!gracenote_groups || gracenote_groups.length === 0) + return false; + const group_list = []; + let prev_note = null; + let shiftL = 0; + for (let i = 0; i < gracenote_groups.length; ++i) { + const gracenote_group = gracenote_groups[i]; + const note = gracenote_group.getNote(); + const is_stavenote = (0,_typeguard__WEBPACK_IMPORTED_MODULE_7__.isStaveNote)(note); + const spacing = is_stavenote ? group_spacing_stave : group_spacing_tab; + if (is_stavenote && note !== prev_note) { + // Iterate through all notes to get the displaced pixels + for (let n = 0; n < note.keys.length; ++n) { + shiftL = Math.max(note.getLeftDisplacedHeadPx(), shiftL); + } + prev_note = note; + } + group_list.push({ shift: shiftL, gracenote_group, spacing }); + } + // If first note left shift in case it is displaced + let group_shift = group_list[0].shift; + let formatWidth; + for (let i = 0; i < group_list.length; ++i) { + const gracenote_group = group_list[i].gracenote_group; + gracenote_group.preFormat(); + formatWidth = gracenote_group.getWidth() + group_list[i].spacing; + group_shift = Math.max(formatWidth, group_shift); + } + for (let i = 0; i < group_list.length; ++i) { + const gracenote_group = group_list[i].gracenote_group; + formatWidth = gracenote_group.getWidth() + group_list[i].spacing; + gracenote_group.setSpacingFromNextModifier(group_shift - Math.min(formatWidth, group_shift) + _stavenote__WEBPACK_IMPORTED_MODULE_3__.StaveNote.minNoteheadPadding); + } + state.left_shift += group_shift; + return true; + } + preFormat() { + if (this.preFormatted) + return; + if (!this.formatter) { + this.formatter = new _formatter__WEBPACK_IMPORTED_MODULE_1__.Formatter(); + } + this.formatter.joinVoices([this.voice]).format([this.voice], 0, {}); + this.setWidth(this.formatter.getMinTotalWidth()); + this.preFormatted = true; + } + beamNotes(grace_notes) { + grace_notes = grace_notes || this.grace_notes; + if (grace_notes.length > 1) { + const beam = new _beam__WEBPACK_IMPORTED_MODULE_0__.Beam(grace_notes); + beam.render_options.beam_width = 3; + beam.render_options.partial_beam_length = 4; + this.beams.push(beam); + } + return this; + } + setWidth(width) { + this.width = width; + return this; + } + getWidth() { + return this.width + _stavenote__WEBPACK_IMPORTED_MODULE_3__.StaveNote.minNoteheadPadding; + } + getGraceNotes() { + return this.grace_notes; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + L('Drawing grace note group for:', note); + this.alignSubNotesWithNote(this.getGraceNotes(), note); // Modifier function + // Draw grace notes. + this.grace_notes.forEach((graceNote) => graceNote.setContext(ctx).draw()); + // Draw beams. + this.beams.forEach((beam) => beam.setContext(ctx).draw()); + if (this.show_slur) { + // Create and draw slur. + const is_stavenote = (0,_typeguard__WEBPACK_IMPORTED_MODULE_7__.isStaveNote)(note); + const TieClass = is_stavenote ? _stavetie__WEBPACK_IMPORTED_MODULE_4__.StaveTie : _tabtie__WEBPACK_IMPORTED_MODULE_6__.TabTie; + this.slur = new TieClass({ + last_note: this.grace_notes[0], + first_note: note, + first_indices: [0], + last_indices: [0], + }); + this.slur.render_options.cp2 = 12; + this.slur.render_options.y_shift = (is_stavenote ? 7 : 5) + this.render_options.slur_y_shift; + this.slur.setContext(ctx).draw(); + } + } +} +GraceNoteGroup.DEBUG = false; + + +/***/ }), + +/***/ "./src/gracetabnote.ts": +/*!*****************************!*\ + !*** ./src/gracetabnote.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "GraceTabNote": () => (/* binding */ GraceTabNote) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _tabnote__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tabnote */ "./src/tabnote.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// @author Balazs Forian-Szabo +// +// ## Description +// +// A basic implementation of grace notes +// to be rendered on a tab stave. +// +// See `tests/gracetabnote_tests.ts` for usage examples. + + + +class GraceTabNote extends _tabnote__WEBPACK_IMPORTED_MODULE_1__.TabNote { + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.GraceTabNote; + } + constructor(noteStruct) { + super(noteStruct, false); + this.render_options = Object.assign(Object.assign({}, this.render_options), { + // vertical shift from stave line + y_shift: 0.3, + // grace glyph scale + scale: 0.6, + // grace tablature font + font: `7.5pt ${_font__WEBPACK_IMPORTED_MODULE_0__.Font.SANS_SERIF}` }); + this.updateWidth(); + } +} + + +/***/ }), + +/***/ "./src/index.ts": +/*!**********************!*\ + !*** ./src/index.ts ***! + \**********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Accidental": () => (/* reexport safe */ _accidental__WEBPACK_IMPORTED_MODULE_0__.Accidental), +/* harmony export */ "Annotation": () => (/* reexport safe */ _annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation), +/* harmony export */ "AnnotationHorizontalJustify": () => (/* reexport safe */ _annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationHorizontalJustify), +/* harmony export */ "AnnotationVerticalJustify": () => (/* reexport safe */ _annotation__WEBPACK_IMPORTED_MODULE_1__.AnnotationVerticalJustify), +/* harmony export */ "Articulation": () => (/* reexport safe */ _articulation__WEBPACK_IMPORTED_MODULE_2__.Articulation), +/* harmony export */ "BarNote": () => (/* reexport safe */ _barnote__WEBPACK_IMPORTED_MODULE_3__.BarNote), +/* harmony export */ "BEAM_BOTH": () => (/* reexport safe */ _beam__WEBPACK_IMPORTED_MODULE_4__.BEAM_BOTH), +/* harmony export */ "BEAM_LEFT": () => (/* reexport safe */ _beam__WEBPACK_IMPORTED_MODULE_4__.BEAM_LEFT), +/* harmony export */ "BEAM_RIGHT": () => (/* reexport safe */ _beam__WEBPACK_IMPORTED_MODULE_4__.BEAM_RIGHT), +/* harmony export */ "Beam": () => (/* reexport safe */ _beam__WEBPACK_IMPORTED_MODULE_4__.Beam), +/* harmony export */ "Bend": () => (/* reexport safe */ _bend__WEBPACK_IMPORTED_MODULE_5__.Bend), +/* harmony export */ "BoundingBox": () => (/* reexport safe */ _boundingbox__WEBPACK_IMPORTED_MODULE_6__.BoundingBox), +/* harmony export */ "BoundingBoxComputation": () => (/* reexport safe */ _boundingboxcomputation__WEBPACK_IMPORTED_MODULE_7__.BoundingBoxComputation), +/* harmony export */ "CanvasContext": () => (/* reexport safe */ _canvascontext__WEBPACK_IMPORTED_MODULE_8__.CanvasContext), +/* harmony export */ "ChordSymbol": () => (/* reexport safe */ _chordsymbol__WEBPACK_IMPORTED_MODULE_9__.ChordSymbol), +/* harmony export */ "ChordSymbolHorizontalJustify": () => (/* reexport safe */ _chordsymbol__WEBPACK_IMPORTED_MODULE_9__.ChordSymbolHorizontalJustify), +/* harmony export */ "ChordSymbolVerticalJustify": () => (/* reexport safe */ _chordsymbol__WEBPACK_IMPORTED_MODULE_9__.ChordSymbolVerticalJustify), +/* harmony export */ "SymbolModifiers": () => (/* reexport safe */ _chordsymbol__WEBPACK_IMPORTED_MODULE_9__.SymbolModifiers), +/* harmony export */ "SymbolTypes": () => (/* reexport safe */ _chordsymbol__WEBPACK_IMPORTED_MODULE_9__.SymbolTypes), +/* harmony export */ "Clef": () => (/* reexport safe */ _clef__WEBPACK_IMPORTED_MODULE_10__.Clef), +/* harmony export */ "ClefNote": () => (/* reexport safe */ _clefnote__WEBPACK_IMPORTED_MODULE_11__.ClefNote), +/* harmony export */ "Crescendo": () => (/* reexport safe */ _crescendo__WEBPACK_IMPORTED_MODULE_12__.Crescendo), +/* harmony export */ "Curve": () => (/* reexport safe */ _curve__WEBPACK_IMPORTED_MODULE_13__.Curve), +/* harmony export */ "CurvePosition": () => (/* reexport safe */ _curve__WEBPACK_IMPORTED_MODULE_13__.CurvePosition), +/* harmony export */ "Dot": () => (/* reexport safe */ _dot__WEBPACK_IMPORTED_MODULE_14__.Dot), +/* harmony export */ "Builder": () => (/* reexport safe */ _easyscore__WEBPACK_IMPORTED_MODULE_15__.Builder), +/* harmony export */ "EasyScore": () => (/* reexport safe */ _easyscore__WEBPACK_IMPORTED_MODULE_15__.EasyScore), +/* harmony export */ "EasyScoreGrammar": () => (/* reexport safe */ _easyscore__WEBPACK_IMPORTED_MODULE_15__.EasyScoreGrammar), +/* harmony export */ "Piece": () => (/* reexport safe */ _easyscore__WEBPACK_IMPORTED_MODULE_15__.Piece), +/* harmony export */ "Element": () => (/* reexport safe */ _element__WEBPACK_IMPORTED_MODULE_16__.Element), +/* harmony export */ "Factory": () => (/* reexport safe */ _factory__WEBPACK_IMPORTED_MODULE_17__.Factory), +/* harmony export */ "Flow": () => (/* reexport safe */ _flow__WEBPACK_IMPORTED_MODULE_18__.Flow), +/* harmony export */ "Font": () => (/* reexport safe */ _font__WEBPACK_IMPORTED_MODULE_19__.Font), +/* harmony export */ "FontStyle": () => (/* reexport safe */ _font__WEBPACK_IMPORTED_MODULE_19__.FontStyle), +/* harmony export */ "FontWeight": () => (/* reexport safe */ _font__WEBPACK_IMPORTED_MODULE_19__.FontWeight), +/* harmony export */ "Formatter": () => (/* reexport safe */ _formatter__WEBPACK_IMPORTED_MODULE_20__.Formatter), +/* harmony export */ "Fraction": () => (/* reexport safe */ _fraction__WEBPACK_IMPORTED_MODULE_21__.Fraction), +/* harmony export */ "FretHandFinger": () => (/* reexport safe */ _frethandfinger__WEBPACK_IMPORTED_MODULE_22__.FretHandFinger), +/* harmony export */ "GhostNote": () => (/* reexport safe */ _ghostnote__WEBPACK_IMPORTED_MODULE_23__.GhostNote), +/* harmony export */ "Glyph": () => (/* reexport safe */ _glyph__WEBPACK_IMPORTED_MODULE_24__.Glyph), +/* harmony export */ "OutlineCode": () => (/* reexport safe */ _glyph__WEBPACK_IMPORTED_MODULE_24__.OutlineCode), +/* harmony export */ "GlyphNote": () => (/* reexport safe */ _glyphnote__WEBPACK_IMPORTED_MODULE_25__.GlyphNote), +/* harmony export */ "GraceNote": () => (/* reexport safe */ _gracenote__WEBPACK_IMPORTED_MODULE_26__.GraceNote), +/* harmony export */ "GraceNoteGroup": () => (/* reexport safe */ _gracenotegroup__WEBPACK_IMPORTED_MODULE_27__.GraceNoteGroup), +/* harmony export */ "GraceTabNote": () => (/* reexport safe */ _gracetabnote__WEBPACK_IMPORTED_MODULE_28__.GraceTabNote), +/* harmony export */ "KeyManager": () => (/* reexport safe */ _keymanager__WEBPACK_IMPORTED_MODULE_29__.KeyManager), +/* harmony export */ "KeySignature": () => (/* reexport safe */ _keysignature__WEBPACK_IMPORTED_MODULE_30__.KeySignature), +/* harmony export */ "KeySigNote": () => (/* reexport safe */ _keysignote__WEBPACK_IMPORTED_MODULE_31__.KeySigNote), +/* harmony export */ "Modifier": () => (/* reexport safe */ _modifier__WEBPACK_IMPORTED_MODULE_32__.Modifier), +/* harmony export */ "ModifierPosition": () => (/* reexport safe */ _modifier__WEBPACK_IMPORTED_MODULE_32__.ModifierPosition), +/* harmony export */ "ModifierContext": () => (/* reexport safe */ _modifiercontext__WEBPACK_IMPORTED_MODULE_33__.ModifierContext), +/* harmony export */ "MultiMeasureRest": () => (/* reexport safe */ _multimeasurerest__WEBPACK_IMPORTED_MODULE_34__.MultiMeasureRest), +/* harmony export */ "Music": () => (/* reexport safe */ _music__WEBPACK_IMPORTED_MODULE_35__.Music), +/* harmony export */ "Note": () => (/* reexport safe */ _note__WEBPACK_IMPORTED_MODULE_36__.Note), +/* harmony export */ "NoteHead": () => (/* reexport safe */ _notehead__WEBPACK_IMPORTED_MODULE_37__.NoteHead), +/* harmony export */ "NoteSubGroup": () => (/* reexport safe */ _notesubgroup__WEBPACK_IMPORTED_MODULE_38__.NoteSubGroup), +/* harmony export */ "Ornament": () => (/* reexport safe */ _ornament__WEBPACK_IMPORTED_MODULE_39__.Ornament), +/* harmony export */ "Parenthesis": () => (/* reexport safe */ _parenthesis__WEBPACK_IMPORTED_MODULE_40__.Parenthesis), +/* harmony export */ "Parser": () => (/* reexport safe */ _parser__WEBPACK_IMPORTED_MODULE_41__.Parser), +/* harmony export */ "PedalMarking": () => (/* reexport safe */ _pedalmarking__WEBPACK_IMPORTED_MODULE_42__.PedalMarking), +/* harmony export */ "Registry": () => (/* reexport safe */ _registry__WEBPACK_IMPORTED_MODULE_43__.Registry), +/* harmony export */ "RenderContext": () => (/* reexport safe */ _rendercontext__WEBPACK_IMPORTED_MODULE_44__.RenderContext), +/* harmony export */ "drawDot": () => (/* reexport safe */ _rendercontext__WEBPACK_IMPORTED_MODULE_44__.drawDot), +/* harmony export */ "Renderer": () => (/* reexport safe */ _renderer__WEBPACK_IMPORTED_MODULE_45__.Renderer), +/* harmony export */ "RendererBackends": () => (/* reexport safe */ _renderer__WEBPACK_IMPORTED_MODULE_45__.RendererBackends), +/* harmony export */ "RendererLineEndType": () => (/* reexport safe */ _renderer__WEBPACK_IMPORTED_MODULE_45__.RendererLineEndType), +/* harmony export */ "RepeatNote": () => (/* reexport safe */ _repeatnote__WEBPACK_IMPORTED_MODULE_46__.RepeatNote), +/* harmony export */ "Stave": () => (/* reexport safe */ _stave__WEBPACK_IMPORTED_MODULE_47__.Stave), +/* harmony export */ "Barline": () => (/* reexport safe */ _stavebarline__WEBPACK_IMPORTED_MODULE_48__.Barline), +/* harmony export */ "BarlineType": () => (/* reexport safe */ _stavebarline__WEBPACK_IMPORTED_MODULE_48__.BarlineType), +/* harmony export */ "StaveConnector": () => (/* reexport safe */ _staveconnector__WEBPACK_IMPORTED_MODULE_49__.StaveConnector), +/* harmony export */ "StaveHairpin": () => (/* reexport safe */ _stavehairpin__WEBPACK_IMPORTED_MODULE_50__.StaveHairpin), +/* harmony export */ "StaveLine": () => (/* reexport safe */ _staveline__WEBPACK_IMPORTED_MODULE_51__.StaveLine), +/* harmony export */ "StaveModifier": () => (/* reexport safe */ _stavemodifier__WEBPACK_IMPORTED_MODULE_52__.StaveModifier), +/* harmony export */ "StaveModifierPosition": () => (/* reexport safe */ _stavemodifier__WEBPACK_IMPORTED_MODULE_52__.StaveModifierPosition), +/* harmony export */ "StaveNote": () => (/* reexport safe */ _stavenote__WEBPACK_IMPORTED_MODULE_53__.StaveNote), +/* harmony export */ "Repetition": () => (/* reexport safe */ _staverepetition__WEBPACK_IMPORTED_MODULE_54__.Repetition), +/* harmony export */ "StaveSection": () => (/* reexport safe */ _stavesection__WEBPACK_IMPORTED_MODULE_55__.StaveSection), +/* harmony export */ "StaveTempo": () => (/* reexport safe */ _stavetempo__WEBPACK_IMPORTED_MODULE_56__.StaveTempo), +/* harmony export */ "StaveText": () => (/* reexport safe */ _stavetext__WEBPACK_IMPORTED_MODULE_57__.StaveText), +/* harmony export */ "StaveTie": () => (/* reexport safe */ _stavetie__WEBPACK_IMPORTED_MODULE_58__.StaveTie), +/* harmony export */ "Volta": () => (/* reexport safe */ _stavevolta__WEBPACK_IMPORTED_MODULE_59__.Volta), +/* harmony export */ "VoltaType": () => (/* reexport safe */ _stavevolta__WEBPACK_IMPORTED_MODULE_59__.VoltaType), +/* harmony export */ "Stem": () => (/* reexport safe */ _stem__WEBPACK_IMPORTED_MODULE_60__.Stem), +/* harmony export */ "StemmableNote": () => (/* reexport safe */ _stemmablenote__WEBPACK_IMPORTED_MODULE_61__.StemmableNote), +/* harmony export */ "StringNumber": () => (/* reexport safe */ _stringnumber__WEBPACK_IMPORTED_MODULE_62__.StringNumber), +/* harmony export */ "Stroke": () => (/* reexport safe */ _strokes__WEBPACK_IMPORTED_MODULE_63__.Stroke), +/* harmony export */ "SVGContext": () => (/* reexport safe */ _svgcontext__WEBPACK_IMPORTED_MODULE_64__.SVGContext), +/* harmony export */ "System": () => (/* reexport safe */ _system__WEBPACK_IMPORTED_MODULE_65__.System), +/* harmony export */ "TabNote": () => (/* reexport safe */ _tabnote__WEBPACK_IMPORTED_MODULE_66__.TabNote), +/* harmony export */ "TabSlide": () => (/* reexport safe */ _tabslide__WEBPACK_IMPORTED_MODULE_67__.TabSlide), +/* harmony export */ "TabStave": () => (/* reexport safe */ _tabstave__WEBPACK_IMPORTED_MODULE_68__.TabStave), +/* harmony export */ "TabTie": () => (/* reexport safe */ _tabtie__WEBPACK_IMPORTED_MODULE_69__.TabTie), +/* harmony export */ "TextBracket": () => (/* reexport safe */ _textbracket__WEBPACK_IMPORTED_MODULE_70__.TextBracket), +/* harmony export */ "TextBracketPosition": () => (/* reexport safe */ _textbracket__WEBPACK_IMPORTED_MODULE_70__.TextBracketPosition), +/* harmony export */ "TextDynamics": () => (/* reexport safe */ _textdynamics__WEBPACK_IMPORTED_MODULE_71__.TextDynamics), +/* harmony export */ "TextFormatter": () => (/* reexport safe */ _textformatter__WEBPACK_IMPORTED_MODULE_72__.TextFormatter), +/* harmony export */ "TextJustification": () => (/* reexport safe */ _textnote__WEBPACK_IMPORTED_MODULE_73__.TextJustification), +/* harmony export */ "TextNote": () => (/* reexport safe */ _textnote__WEBPACK_IMPORTED_MODULE_73__.TextNote), +/* harmony export */ "Tickable": () => (/* reexport safe */ _tickable__WEBPACK_IMPORTED_MODULE_74__.Tickable), +/* harmony export */ "TickContext": () => (/* reexport safe */ _tickcontext__WEBPACK_IMPORTED_MODULE_75__.TickContext), +/* harmony export */ "TimeSignatureGlyph": () => (/* reexport safe */ _timesigglyph__WEBPACK_IMPORTED_MODULE_76__.TimeSignatureGlyph), +/* harmony export */ "TimeSignature": () => (/* reexport safe */ _timesignature__WEBPACK_IMPORTED_MODULE_77__.TimeSignature), +/* harmony export */ "TimeSigNote": () => (/* reexport safe */ _timesignote__WEBPACK_IMPORTED_MODULE_78__.TimeSigNote), +/* harmony export */ "Tremolo": () => (/* reexport safe */ _tremolo__WEBPACK_IMPORTED_MODULE_79__.Tremolo), +/* harmony export */ "Tuning": () => (/* reexport safe */ _tuning__WEBPACK_IMPORTED_MODULE_80__.Tuning), +/* harmony export */ "Tuplet": () => (/* reexport safe */ _tuplet__WEBPACK_IMPORTED_MODULE_81__.Tuplet), +/* harmony export */ "TupletLocation": () => (/* reexport safe */ _tuplet__WEBPACK_IMPORTED_MODULE_81__.TupletLocation), +/* harmony export */ "Category": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.Category), +/* harmony export */ "isAccidental": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isAccidental), +/* harmony export */ "isAnnotation": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isAnnotation), +/* harmony export */ "isBarline": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isBarline), +/* harmony export */ "isCategory": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isCategory), +/* harmony export */ "isDot": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isDot), +/* harmony export */ "isGraceNote": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isGraceNote), +/* harmony export */ "isGraceNoteGroup": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isGraceNoteGroup), +/* harmony export */ "isNote": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isNote), +/* harmony export */ "isRenderContext": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isRenderContext), +/* harmony export */ "isStaveNote": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isStaveNote), +/* harmony export */ "isStemmableNote": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isStemmableNote), +/* harmony export */ "isTabNote": () => (/* reexport safe */ _typeguard__WEBPACK_IMPORTED_MODULE_82__.isTabNote), +/* harmony export */ "RuntimeError": () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_83__.RuntimeError), +/* harmony export */ "defined": () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_83__.defined), +/* harmony export */ "globalObject": () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_83__.globalObject), +/* harmony export */ "log": () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_83__.log), +/* harmony export */ "midLine": () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_83__.midLine), +/* harmony export */ "normalizeAngle": () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_83__.normalizeAngle), +/* harmony export */ "prefix": () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_83__.prefix), +/* harmony export */ "warn": () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_83__.warn), +/* harmony export */ "Vex": () => (/* reexport safe */ _vex__WEBPACK_IMPORTED_MODULE_84__.Vex), +/* harmony export */ "Vibrato": () => (/* reexport safe */ _vibrato__WEBPACK_IMPORTED_MODULE_85__.Vibrato), +/* harmony export */ "VibratoBracket": () => (/* reexport safe */ _vibratobracket__WEBPACK_IMPORTED_MODULE_86__.VibratoBracket), +/* harmony export */ "Voice": () => (/* reexport safe */ _voice__WEBPACK_IMPORTED_MODULE_87__.Voice), +/* harmony export */ "VoiceMode": () => (/* reexport safe */ _voice__WEBPACK_IMPORTED_MODULE_87__.VoiceMode), +/* harmony export */ "isHTMLCanvas": () => (/* reexport safe */ _web__WEBPACK_IMPORTED_MODULE_88__.isHTMLCanvas), +/* harmony export */ "isHTMLDiv": () => (/* reexport safe */ _web__WEBPACK_IMPORTED_MODULE_88__.isHTMLDiv) +/* harmony export */ }); +/* harmony import */ var _accidental__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./accidental */ "./src/accidental.ts"); +/* harmony import */ var _annotation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./annotation */ "./src/annotation.ts"); +/* harmony import */ var _articulation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./articulation */ "./src/articulation.ts"); +/* harmony import */ var _barnote__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./barnote */ "./src/barnote.ts"); +/* harmony import */ var _beam__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./beam */ "./src/beam.ts"); +/* harmony import */ var _bend__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./bend */ "./src/bend.ts"); +/* harmony import */ var _boundingbox__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./boundingbox */ "./src/boundingbox.ts"); +/* harmony import */ var _boundingboxcomputation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./boundingboxcomputation */ "./src/boundingboxcomputation.ts"); +/* harmony import */ var _canvascontext__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./canvascontext */ "./src/canvascontext.ts"); +/* harmony import */ var _chordsymbol__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./chordsymbol */ "./src/chordsymbol.ts"); +/* harmony import */ var _clef__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./clef */ "./src/clef.ts"); +/* harmony import */ var _clefnote__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./clefnote */ "./src/clefnote.ts"); +/* harmony import */ var _crescendo__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./crescendo */ "./src/crescendo.ts"); +/* harmony import */ var _curve__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./curve */ "./src/curve.ts"); +/* harmony import */ var _dot__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./dot */ "./src/dot.ts"); +/* harmony import */ var _easyscore__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./easyscore */ "./src/easyscore.ts"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _factory__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./factory */ "./src/factory.ts"); +/* harmony import */ var _flow__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./flow */ "./src/flow.ts"); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _formatter__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./formatter */ "./src/formatter.ts"); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./fraction */ "./src/fraction.ts"); +/* harmony import */ var _frethandfinger__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./frethandfinger */ "./src/frethandfinger.ts"); +/* harmony import */ var _ghostnote__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./ghostnote */ "./src/ghostnote.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _glyphnote__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./glyphnote */ "./src/glyphnote.ts"); +/* harmony import */ var _gracenote__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./gracenote */ "./src/gracenote.ts"); +/* harmony import */ var _gracenotegroup__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./gracenotegroup */ "./src/gracenotegroup.ts"); +/* harmony import */ var _gracetabnote__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./gracetabnote */ "./src/gracetabnote.ts"); +/* harmony import */ var _keymanager__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./keymanager */ "./src/keymanager.ts"); +/* harmony import */ var _keysignature__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./keysignature */ "./src/keysignature.ts"); +/* harmony import */ var _keysignote__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./keysignote */ "./src/keysignote.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _modifiercontext__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./modifiercontext */ "./src/modifiercontext.ts"); +/* harmony import */ var _multimeasurerest__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./multimeasurerest */ "./src/multimeasurerest.ts"); +/* harmony import */ var _music__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./music */ "./src/music.ts"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _notehead__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./notehead */ "./src/notehead.ts"); +/* harmony import */ var _notesubgroup__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./notesubgroup */ "./src/notesubgroup.ts"); +/* harmony import */ var _ornament__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./ornament */ "./src/ornament.ts"); +/* harmony import */ var _parenthesis__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./parenthesis */ "./src/parenthesis.ts"); +/* harmony import */ var _parser__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./parser */ "./src/parser.ts"); +/* harmony import */ var _pedalmarking__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./pedalmarking */ "./src/pedalmarking.ts"); +/* harmony import */ var _registry__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./registry */ "./src/registry.ts"); +/* harmony import */ var _rendercontext__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./rendercontext */ "./src/rendercontext.ts"); +/* harmony import */ var _renderer__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./renderer */ "./src/renderer.ts"); +/* harmony import */ var _repeatnote__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./repeatnote */ "./src/repeatnote.ts"); +/* harmony import */ var _stave__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./stave */ "./src/stave.ts"); +/* harmony import */ var _stavebarline__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./stavebarline */ "./src/stavebarline.ts"); +/* harmony import */ var _staveconnector__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./staveconnector */ "./src/staveconnector.ts"); +/* harmony import */ var _stavehairpin__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./stavehairpin */ "./src/stavehairpin.ts"); +/* harmony import */ var _staveline__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./staveline */ "./src/staveline.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _stavenote__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _staverepetition__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./staverepetition */ "./src/staverepetition.ts"); +/* harmony import */ var _stavesection__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./stavesection */ "./src/stavesection.ts"); +/* harmony import */ var _stavetempo__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./stavetempo */ "./src/stavetempo.ts"); +/* harmony import */ var _stavetext__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./stavetext */ "./src/stavetext.ts"); +/* harmony import */ var _stavetie__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./stavetie */ "./src/stavetie.ts"); +/* harmony import */ var _stavevolta__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./stavevolta */ "./src/stavevolta.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _stemmablenote__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./stemmablenote */ "./src/stemmablenote.ts"); +/* harmony import */ var _stringnumber__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ./stringnumber */ "./src/stringnumber.ts"); +/* harmony import */ var _strokes__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./strokes */ "./src/strokes.ts"); +/* harmony import */ var _svgcontext__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./svgcontext */ "./src/svgcontext.ts"); +/* harmony import */ var _system__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./system */ "./src/system.ts"); +/* harmony import */ var _tabnote__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./tabnote */ "./src/tabnote.ts"); +/* harmony import */ var _tabslide__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./tabslide */ "./src/tabslide.ts"); +/* harmony import */ var _tabstave__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./tabstave */ "./src/tabstave.ts"); +/* harmony import */ var _tabtie__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./tabtie */ "./src/tabtie.ts"); +/* harmony import */ var _textbracket__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ./textbracket */ "./src/textbracket.ts"); +/* harmony import */ var _textdynamics__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ./textdynamics */ "./src/textdynamics.ts"); +/* harmony import */ var _textformatter__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ./textformatter */ "./src/textformatter.ts"); +/* harmony import */ var _textnote__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ./textnote */ "./src/textnote.ts"); +/* harmony import */ var _tickable__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ./tickable */ "./src/tickable.ts"); +/* harmony import */ var _tickcontext__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ./tickcontext */ "./src/tickcontext.ts"); +/* harmony import */ var _timesigglyph__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ./timesigglyph */ "./src/timesigglyph.ts"); +/* harmony import */ var _timesignature__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ./timesignature */ "./src/timesignature.ts"); +/* harmony import */ var _timesignote__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ./timesignote */ "./src/timesignote.ts"); +/* harmony import */ var _tremolo__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ./tremolo */ "./src/tremolo.ts"); +/* harmony import */ var _tuning__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ./tuning */ "./src/tuning.ts"); +/* harmony import */ var _tuplet__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ./tuplet */ "./src/tuplet.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ./vex */ "./src/vex.ts"); +/* harmony import */ var _vibrato__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(/*! ./vibrato */ "./src/vibrato.ts"); +/* harmony import */ var _vibratobracket__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(/*! ./vibratobracket */ "./src/vibratobracket.ts"); +/* harmony import */ var _voice__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(/*! ./voice */ "./src/voice.ts"); +/* harmony import */ var _web__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(/*! ./web */ "./src/web.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + + + + + + + + + + + + + + + +// Do not export './fonts/*' because they are used by the entry/* files. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Do not export './tables' because it is internal. Its public API is accessible via Vex.Flow.*. + + + + + + + + + + + + + + + + + + +// Do not export './version'. It is accessible via Vex.Flow.BUILD. + + + + + + + +/***/ }), + +/***/ "./src/keymanager.ts": +/*!***************************!*\ + !*** ./src/keymanager.ts ***! + \***************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "KeyManager": () => (/* binding */ KeyManager) +/* harmony export */ }); +/* harmony import */ var _music__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./music */ "./src/music.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// This class implements diatonic key management. + + +class KeyManager { + constructor(key) { + this.music = new _music__WEBPACK_IMPORTED_MODULE_0__.Music(); + this.setKey(key); + } + setKey(key) { + this.key = key; + this.reset(); + return this; + } + getKey() { + return this.key; + } + reset() { + this.keyParts = this.music.getKeyParts(this.key); + this.keyString = this.keyParts.root; + if (this.keyParts.accidental) + this.keyString += this.keyParts.accidental; + const is_supported_type = _music__WEBPACK_IMPORTED_MODULE_0__.Music.scaleTypes[this.keyParts.type]; + if (!is_supported_type) { + throw new _util__WEBPACK_IMPORTED_MODULE_1__.RuntimeError('BadArguments', `Unsupported key type: ${this.key}`); + } + this.scale = this.music.getScaleTones(this.music.getNoteValue(this.keyString), _music__WEBPACK_IMPORTED_MODULE_0__.Music.scaleTypes[this.keyParts.type]); + this.scaleMap = {}; + this.scaleMapByValue = {}; + this.originalScaleMapByValue = {}; + const noteLocation = _music__WEBPACK_IMPORTED_MODULE_0__.Music.root_indices[this.keyParts.root]; + for (let i = 0; i < _music__WEBPACK_IMPORTED_MODULE_0__.Music.roots.length; ++i) { + const index = (noteLocation + i) % _music__WEBPACK_IMPORTED_MODULE_0__.Music.roots.length; + const rootName = _music__WEBPACK_IMPORTED_MODULE_0__.Music.roots[index]; + const noteName = this.music.getRelativeNoteName(rootName, this.scale[i]); + this.scaleMap[rootName] = noteName; + this.scaleMapByValue[this.scale[i]] = noteName; + this.originalScaleMapByValue[this.scale[i]] = noteName; + } + return this; + } + getAccidental(key) { + const root = this.music.getKeyParts(key).root; + const parts = this.music.getNoteParts(this.scaleMap[root]); + return { + note: this.scaleMap[root], + accidental: parts.accidental, + }; + } + selectNote(note) { + note = note.toLowerCase(); + const parts = this.music.getNoteParts(note); + // First look for matching note in our altered scale + const scaleNote = this.scaleMap[parts.root]; + const modparts = this.music.getNoteParts(scaleNote); + if (scaleNote === note) { + return { + note: scaleNote, + accidental: parts.accidental, + change: false, + }; + } + // Then search for a note of equivalent value in our altered scale + const valueNote = this.scaleMapByValue[this.music.getNoteValue(note)]; + if (valueNote != null) { + return { + note: valueNote, + accidental: this.music.getNoteParts(valueNote).accidental, + change: false, + }; + } + // Then search for a note of equivalent value in the original scale + const originalValueNote = this.originalScaleMapByValue[this.music.getNoteValue(note)]; + if (originalValueNote != null) { + this.scaleMap[modparts.root] = originalValueNote; + delete this.scaleMapByValue[this.music.getNoteValue(scaleNote)]; + this.scaleMapByValue[this.music.getNoteValue(note)] = originalValueNote; + return { + note: originalValueNote, + accidental: this.music.getNoteParts(originalValueNote).accidental, + change: true, + }; + } + // Then try to unmodify a currently modified note. + if (modparts.root === note) { + delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])]; + this.scaleMapByValue[this.music.getNoteValue(modparts.root)] = modparts.root; + this.scaleMap[modparts.root] = modparts.root; + return { + note: modparts.root, + accidental: undefined, + change: true, + }; + } + // Last resort -- shitshoot + delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])]; + this.scaleMapByValue[this.music.getNoteValue(note)] = note; + delete this.scaleMap[modparts.root]; + this.scaleMap[modparts.root] = note; + return { + note, + accidental: parts.accidental, + change: true, + }; + } +} + + +/***/ }), + +/***/ "./src/keysignature.ts": +/*!*****************************!*\ + !*** ./src/keysignature.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "KeySignature": () => (/* binding */ KeySignature) +/* harmony export */ }); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Cyril Silverman +// +// ## Description +// +// This file implements key signatures. A key signature sits on a stave +// and indicates the notes with implicit accidentals. + + + + + +class KeySignature extends _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifier { + // Create a new Key Signature based on a `key_spec` + constructor(keySpec, cancelKeySpec, alterKeySpec) { + super(); + this.accList = []; + this.setKeySig(keySpec, cancelKeySpec, alterKeySpec); + this.setPosition(_stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifierPosition.BEGIN); + this.glyphFontScale = 38; // TODO(0xFE): Should this match StaveNote? + this.glyphs = []; + this.xPositions = []; // relative to this.x + this.paddingForced = false; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.KeySignature; + } + // Add an accidental glyph to the `KeySignature` instance which represents + // the provided `acc`. If `nextAcc` is also provided, the appropriate + // spacing will be included in the glyph's position + convertToGlyph(acc, nextAcc) { + const accGlyphData = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.accidentalCodes(acc.type); + const glyph = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph(accGlyphData.code, this.glyphFontScale); + // Determine spacing between current accidental and the next accidental + let extraWidth = 1; + if (acc.type === 'n' && nextAcc) { + const spacing = KeySignature.accidentalSpacing[nextAcc.type]; + if (spacing) { + const isAbove = nextAcc.line >= acc.line; + extraWidth = isAbove ? spacing.above : spacing.below; + } + } + // Place the glyph on the stave + this.placeGlyphOnLine(glyph, this.checkStave(), acc.line); + this.glyphs.push(glyph); + const xPosition = this.xPositions[this.xPositions.length - 1]; + const glyphWidth = glyph.getMetrics().width + extraWidth; + // Store the next accidental's x position + this.xPositions.push(xPosition + glyphWidth); + // Expand size of key signature + this.width += glyphWidth; + } + // Cancel out a key signature provided in the `spec` parameter. This will + // place appropriate natural accidentals before the key signature. + cancelKey(spec) { + this.formatted = false; + this.cancelKeySpec = spec; + return this; + } + convertToCancelAccList(spec) { + // Get the accidental list for the cancelled key signature + const cancel_accList = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.keySignature(spec); + // If the cancelled key has a different accidental type, ie: # vs b + const different_types = this.accList.length > 0 && cancel_accList.length > 0 && cancel_accList[0].type !== this.accList[0].type; + // Determine how many naturals needed to add + const naturals = different_types ? cancel_accList.length : cancel_accList.length - this.accList.length; + // Return if no naturals needed + if (naturals < 1) + return undefined; + // Get the line position for each natural + const cancelled = []; + for (let i = 0; i < naturals; i++) { + let index = i; + if (!different_types) { + index = cancel_accList.length - naturals + i; + } + const acc = cancel_accList[index]; + cancelled.push({ type: 'n', line: acc.line }); + } + // Combine naturals with main accidental list for the key signature + this.accList = cancelled.concat(this.accList); + return { + accList: cancelled, + type: cancel_accList[0].type, + }; + } + // Deprecated + addToStave(stave) { + this.paddingForced = true; + stave.addModifier(this); + return this; + } + // Apply the accidental staff line placement based on the `clef` and + // the accidental `type` for the key signature ('# or 'b'). + convertAccLines(clef, type, accList = this.accList) { + let offset = 0.0; // if clef === "treble" + let customLines; // when clef doesn't follow treble key sig shape + switch (clef) { + // Treble & Subbass both have offsets of 0, so are not included. + case 'soprano': + if (type === '#') + customLines = [2.5, 0.5, 2, 0, 1.5, -0.5, 1]; + else + offset = -1; + break; + case 'mezzo-soprano': + if (type === 'b') + customLines = [0, 2, 0.5, 2.5, 1, 3, 1.5]; + else + offset = 1.5; + break; + case 'alto': + offset = 0.5; + break; + case 'tenor': + if (type === '#') + customLines = [3, 1, 2.5, 0.5, 2, 0, 1.5]; + else + offset = -0.5; + break; + case 'baritone-f': + case 'baritone-c': + if (type === 'b') + customLines = [0.5, 2.5, 1, 3, 1.5, 3.5, 2]; + else + offset = 2; + break; + case 'bass': + case 'french': + offset = 1; + break; + default: + break; + } + // If there's a special case, assign those lines/spaces: + let i; + if (typeof customLines !== 'undefined') { + for (i = 0; i < accList.length; ++i) { + accList[i].line = customLines[i]; + } + } + else if (offset !== 0) { + for (i = 0; i < accList.length; ++i) { + accList[i].line += offset; + } + } + } + getPadding(index) { + if (!this.formatted) + this.format(); + return this.glyphs.length === 0 || (!this.paddingForced && index < 2) ? 0 : this.padding; + } + getWidth() { + if (!this.formatted) + this.format(); + return this.width; + } + setKeySig(keySpec, cancelKeySpec, alterKeySpec) { + this.formatted = false; + this.keySpec = keySpec; + this.cancelKeySpec = cancelKeySpec; + this.alterKeySpec = alterKeySpec; + return this; + } + // Alter the accidentals of a key spec one by one. + // Each alteration is a new accidental that replaces the + // original accidental (or the canceled one). + alterKey(alterKeySpec) { + this.formatted = false; + this.alterKeySpec = alterKeySpec; + return this; + } + convertToAlterAccList(alterKeySpec) { + const max = Math.min(alterKeySpec.length, this.accList.length); + for (let i = 0; i < max; ++i) { + if (alterKeySpec[i]) { + this.accList[i].type = alterKeySpec[i]; + } + } + } + format() { + const stave = this.checkStave(); + this.width = 0; + this.glyphs = []; + this.xPositions = [0]; // initialize with initial x position + this.accList = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.keySignature((0,_util__WEBPACK_IMPORTED_MODULE_4__.defined)(this.keySpec)); + const accList = this.accList; + const firstAccidentalType = accList.length > 0 ? accList[0].type : undefined; + let cancelAccList; + if (this.cancelKeySpec) { + cancelAccList = this.convertToCancelAccList(this.cancelKeySpec); + } + if (this.alterKeySpec) { + this.convertToAlterAccList(this.alterKeySpec); + } + if (this.accList.length > 0) { + const clef = (this.position === _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifierPosition.END ? stave.getEndClef() : stave.getClef()) || stave.getClef(); + if (cancelAccList) { + this.convertAccLines(clef, cancelAccList.type, cancelAccList.accList); + } + this.convertAccLines(clef, firstAccidentalType, accList); + for (let i = 0; i < this.accList.length; ++i) { + this.convertToGlyph(this.accList[i], this.accList[i + 1]); + } + } + this.formatted = true; + } + /** + * Return the Glyph objects making up this KeySignature. + */ + getGlyphs() { + if (!this.formatted) + this.format(); + return this.glyphs; + } + draw() { + const stave = this.checkStave(); + const ctx = stave.checkContext(); + if (!this.formatted) + this.format(); + this.setRendered(); + ctx.openGroup('keysignature', this.getAttribute('id')); + for (let i = 0; i < this.glyphs.length; i++) { + const glyph = this.glyphs[i]; + const x = this.x + this.xPositions[i]; + glyph.setStave(stave); + glyph.setContext(ctx); + glyph.renderToStave(x); + } + ctx.closeGroup(); + } +} +// Space between natural and following accidental depending +// on vertical position +KeySignature.accidentalSpacing = { + '#': { + above: 6, + below: 4, + }, + b: { + above: 4, + below: 7, + }, + n: { + above: 4, + below: 1, + }, + '##': { + above: 6, + below: 4, + }, + bb: { + above: 4, + below: 7, + }, + db: { + above: 4, + below: 7, + }, + d: { + above: 4, + below: 7, + }, + bbs: { + above: 4, + below: 7, + }, + '++': { + above: 6, + below: 4, + }, + '+': { + above: 6, + below: 4, + }, + '+-': { + above: 6, + below: 4, + }, + '++-': { + above: 6, + below: 4, + }, + bs: { + above: 4, + below: 10, + }, + bss: { + above: 4, + below: 10, + }, +}; + + +/***/ }), + +/***/ "./src/keysignote.ts": +/*!***************************!*\ + !*** ./src/keysignote.ts ***! + \***************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "KeySigNote": () => (/* binding */ KeySigNote) +/* harmony export */ }); +/* harmony import */ var _keysignature__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./keysignature */ "./src/keysignature.ts"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Mark Meeus 2019 + + + +class KeySigNote extends _note__WEBPACK_IMPORTED_MODULE_1__.Note { + constructor(keySpec, cancelKeySpec, alterKeySpec) { + super({ duration: 'b' }); + this.keySignature = new _keysignature__WEBPACK_IMPORTED_MODULE_0__.KeySignature(keySpec, cancelKeySpec, alterKeySpec); + // Note properties + this.ignore_ticks = true; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.KeySigNote; + } + /* Overridden to ignore */ + // eslint-disable-next-line + addToModifierContext(mc) { + // DO NOTHING. + return this; + } + preFormat() { + this.preFormatted = true; + this.keySignature.setStave(this.checkStave()); + this.setWidth(this.keySignature.getWidth()); + return this; + } + draw() { + const ctx = this.checkStave().checkContext(); + this.setRendered(); + this.keySignature.setX(this.getAbsoluteX()); + this.keySignature.setContext(ctx); + this.keySignature.draw(); + } +} + + +/***/ }), + +/***/ "./src/modifier.ts": +/*!*************************!*\ + !*** ./src/modifier.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "ModifierPosition": () => (/* binding */ ModifierPosition), +/* harmony export */ "Modifier": () => (/* binding */ Modifier) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + +var ModifierPosition; +(function (ModifierPosition) { + ModifierPosition[ModifierPosition["CENTER"] = 0] = "CENTER"; + ModifierPosition[ModifierPosition["LEFT"] = 1] = "LEFT"; + ModifierPosition[ModifierPosition["RIGHT"] = 2] = "RIGHT"; + ModifierPosition[ModifierPosition["ABOVE"] = 3] = "ABOVE"; + ModifierPosition[ModifierPosition["BELOW"] = 4] = "BELOW"; +})(ModifierPosition || (ModifierPosition = {})); +// To enable logging for this class. Set `Vex.Flow.Modifier.DEBUG` to `true`. +// function L(...args) { if (Modifier.DEBUG) log('Vex.Flow.Modifier', args); } +/** + * `Modifier` is an abstract interface for notational elements that modify + * a `Note`. Examples of modifiers are `Accidental`, `Annotation`, `Stroke`, etc. + * + * For a `Modifier` instance to be positioned correctly, it must be part of + * a `ModifierContext`. All modifiers in the same context are rendered relative to + * one another. + * + * Typically, all modifiers to a note are part of the same `ModifierContext` instance. Also, + * in multi-voice staves, all modifiers to notes on the same `tick` are part of the same + * `ModifierContext`. This ensures that multiple voices don't trample all over each other. + */ +class Modifier extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + constructor() { + super(); + this.width = 0; + // The `text_line` is reserved space above or below a stave. + this.text_line = 0; + this.position = Modifier.Position.LEFT; + this.x_shift = 0; + this.y_shift = 0; + this.spacingFromNextModifier = 0; + } + /** + * Modifiers category string. Every modifier has a different category. + * The `ModifierContext` uses this to determine the type and order of the modifiers. + */ + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_1__.Category.Modifier; + } + /** Modifiers can be positioned almost anywhere, relative to a note. */ + static get Position() { + return ModifierPosition; + } + static get PositionString() { + return { + center: ModifierPosition.CENTER, + above: ModifierPosition.ABOVE, + below: ModifierPosition.BELOW, + left: ModifierPosition.LEFT, + right: ModifierPosition.RIGHT, + }; + } + /** Called when position changes. */ + reset() { + // DO NOTHING. + } + /** Get modifier widths. */ + getWidth() { + return this.width; + } + /** Set modifier widths. */ + setWidth(width) { + this.width = width; + return this; + } + /** Get attached note (`StaveNote`, `TabNote`, etc.) */ + getNote() { + return (0,_util__WEBPACK_IMPORTED_MODULE_2__.defined)(this.note, 'NoNote', 'Modifier has no note.'); + } + /** + * Used in draw() to check and get the attached note (`StaveNote`, `TabNote`, etc.). + * Also verifies that the index is valid. + */ + checkAttachedNote() { + const category = this.getCategory(); + (0,_util__WEBPACK_IMPORTED_MODULE_2__.defined)(this.index, 'NoIndex', `Can't draw ${category} without an index.`); + return (0,_util__WEBPACK_IMPORTED_MODULE_2__.defined)(this.note, 'NoNote', `Can't draw ${category} without a note.`); + } + /** + * Set attached note. + * @param note (`StaveNote`, `TabNote`, etc.) + */ + setNote(note) { + this.note = note; + return this; + } + /** Get note index, which is a specific note in a chord. */ + getIndex() { + return this.index; + } + /** Check and get note index, which is a specific note in a chord. */ + checkIndex() { + return (0,_util__WEBPACK_IMPORTED_MODULE_2__.defined)(this.index, 'NoIndex', 'Modifier has an invalid index.'); + } + /** Set note index, which is a specific note in a chord. */ + setIndex(index) { + this.index = index; + return this; + } + /** Get `ModifierContext`. */ + getModifierContext() { + return this.modifierContext; + } + /** Check and get `ModifierContext`. */ + checkModifierContext() { + return (0,_util__WEBPACK_IMPORTED_MODULE_2__.defined)(this.modifierContext, 'NoModifierContext', 'Modifier Context Required'); + } + /** Every modifier must be part of a `ModifierContext`. */ + setModifierContext(c) { + this.modifierContext = c; + return this; + } + /** Get position. */ + getPosition() { + return this.position; + } + /** + * Set position. + * @param position CENTER | LEFT | RIGHT | ABOVE | BELOW + */ + setPosition(position) { + this.position = typeof position === 'string' ? Modifier.PositionString[position] : position; + this.reset(); + return this; + } + /** Set the `text_line` for the modifier. */ + setTextLine(line) { + this.text_line = line; + return this; + } + /** Shift modifier down `y` pixels. Negative values shift up. */ + setYShift(y) { + this.y_shift = y; + return this; + } + /** Set spacing from next modifier. */ + setSpacingFromNextModifier(x) { + this.spacingFromNextModifier = x; + } + /** Get spacing from next modifier. */ + getSpacingFromNextModifier() { + return this.spacingFromNextModifier; + } + /** + * Shift modifier `x` pixels in the direction of the modifier. Negative values + * shift reverse. + */ + setXShift(x) { + this.x_shift = 0; + if (this.position === Modifier.Position.LEFT) { + this.x_shift -= x; + } + else { + this.x_shift += x; + } + return this; + } + /** Get shift modifier `x` */ + getXShift() { + return this.x_shift; + } + /** Render the modifier onto the canvas. */ + draw() { + this.checkContext(); + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('NotImplemented', 'draw() not implemented for this modifier.'); + } + // aligns sub notes of NoteSubGroup (or GraceNoteGroup) to the main note with correct x-offset + alignSubNotesWithNote(subNotes, note) { + // Shift over the tick contexts of each note + const tickContext = note.getTickContext(); + const metrics = tickContext.getMetrics(); + const stave = note.getStave(); + const subNoteXOffset = tickContext.getX() - metrics.modLeftPx - metrics.modRightPx + this.getSpacingFromNextModifier(); + subNotes.forEach((subNote) => { + const subTickContext = subNote.getTickContext(); + if (stave) + subNote.setStave(stave); + subTickContext.setXOffset(subNoteXOffset); // don't touch baseX to avoid shift each render + }); + } +} + + +/***/ }), + +/***/ "./src/modifiercontext.ts": +/*!********************************!*\ + !*** ./src/modifiercontext.ts ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "ModifierContext": () => (/* binding */ ModifierContext) +/* harmony export */ }); +/* harmony import */ var _accidental__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./accidental */ "./src/accidental.ts"); +/* harmony import */ var _annotation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./annotation */ "./src/annotation.ts"); +/* harmony import */ var _articulation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./articulation */ "./src/articulation.ts"); +/* harmony import */ var _bend__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bend */ "./src/bend.ts"); +/* harmony import */ var _chordsymbol__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./chordsymbol */ "./src/chordsymbol.ts"); +/* harmony import */ var _dot__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dot */ "./src/dot.ts"); +/* harmony import */ var _frethandfinger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./frethandfinger */ "./src/frethandfinger.ts"); +/* harmony import */ var _gracenotegroup__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./gracenotegroup */ "./src/gracenotegroup.ts"); +/* harmony import */ var _notesubgroup__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./notesubgroup */ "./src/notesubgroup.ts"); +/* harmony import */ var _ornament__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ornament */ "./src/ornament.ts"); +/* harmony import */ var _parenthesis__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./parenthesis */ "./src/parenthesis.ts"); +/* harmony import */ var _stavenote__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./stavenote */ "./src/stavenote.ts"); +/* harmony import */ var _stringnumber__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./stringnumber */ "./src/stringnumber.ts"); +/* harmony import */ var _strokes__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./strokes */ "./src/strokes.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +/* harmony import */ var _vibrato__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./vibrato */ "./src/vibrato.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// This class implements various types of members to notes (e.g. bends, +// fingering positions etc.) + + + + + + + + + + + + + + + + + +// To enable logging for this class. Set `Vex.Flow.ModifierContext.DEBUG` to `true`. +// eslint-disable-next-line +function L(...args) { + if (ModifierContext.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_15__.log)('Vex.Flow.ModifierContext', args); +} +class ModifierContext { + constructor() { + // Formatting data. + this.state = { + left_shift: 0, + right_shift: 0, + text_line: 0, + top_text_line: 0, + }; + // Current members + this.members = {}; + this.preFormatted = false; + this.postFormatted = false; + this.formatted = false; + this.width = 0; + this.spacing = 0; + } + addModifier(member) { + L('addModifier is deprecated, use addMember instead.'); + return this.addMember(member); + } + /** + * this.members maps CATEGORY strings to arrays of Tickable | Modifier | StaveNote | TabNote. + * Here we add a new member to this.members, and create a new array if needed. + * @param member + * @returns this + */ + addMember(member) { + const category = member.getCategory(); + if (!this.members[category]) { + this.members[category] = []; + } + this.members[category].push(member); + member.setModifierContext(this); + this.preFormatted = false; + return this; + } + /** + * @deprecated + */ + getModifiers(category) { + L('getModifiers is deprecated, use getMembers instead.'); + return this.getMembers(category); + } + getMembers(category) { + var _a; + return (_a = this.members[category]) !== null && _a !== void 0 ? _a : []; + } + getWidth() { + return this.width; + } + getLeftShift() { + return this.state.left_shift; + } + getRightShift() { + return this.state.right_shift; + } + getState() { + return this.state; + } + getMetrics() { + if (!this.formatted) { + throw new _util__WEBPACK_IMPORTED_MODULE_15__.RuntimeError('UnformattedMember', 'Unformatted member has no metrics.'); + } + return { + width: this.state.left_shift + this.state.right_shift + this.spacing, + spacing: this.spacing, + }; + } + preFormat() { + if (this.preFormatted) + return; + L('Preformatting ModifierContext'); + const state = this.state; + const members = this.members; + // The ordering below determines when different members are formatted and rendered. + _stavenote__WEBPACK_IMPORTED_MODULE_11__.StaveNote.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.StaveNote], state); + _parenthesis__WEBPACK_IMPORTED_MODULE_10__.Parenthesis.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Parenthesis], state); + _dot__WEBPACK_IMPORTED_MODULE_5__.Dot.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Dot], state); + _frethandfinger__WEBPACK_IMPORTED_MODULE_6__.FretHandFinger.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.FretHandFinger], state); + _accidental__WEBPACK_IMPORTED_MODULE_0__.Accidental.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Accidental], state); + _strokes__WEBPACK_IMPORTED_MODULE_13__.Stroke.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Stroke], state); + _gracenotegroup__WEBPACK_IMPORTED_MODULE_7__.GraceNoteGroup.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.GraceNoteGroup], state); + _notesubgroup__WEBPACK_IMPORTED_MODULE_8__.NoteSubGroup.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.NoteSubGroup], state); + _stringnumber__WEBPACK_IMPORTED_MODULE_12__.StringNumber.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.StringNumber], state); + _articulation__WEBPACK_IMPORTED_MODULE_2__.Articulation.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Articulation], state); + _ornament__WEBPACK_IMPORTED_MODULE_9__.Ornament.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Ornament], state); + _annotation__WEBPACK_IMPORTED_MODULE_1__.Annotation.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Annotation], state); + _chordsymbol__WEBPACK_IMPORTED_MODULE_4__.ChordSymbol.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.ChordSymbol], state); + _bend__WEBPACK_IMPORTED_MODULE_3__.Bend.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Bend], state); + _vibrato__WEBPACK_IMPORTED_MODULE_16__.Vibrato.format(members[_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Vibrato], state, this); + // Update width of this member context + this.width = state.left_shift + state.right_shift; + this.preFormatted = true; + } + postFormat() { + if (this.postFormatted) + return; + L('Postformatting ModifierContext'); + // If post-formatting is required for an element, add more lines below. + _stavenote__WEBPACK_IMPORTED_MODULE_11__.StaveNote.postFormat(this.getMembers(_typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.StaveNote)); + } +} +ModifierContext.DEBUG = false; + + +/***/ }), + +/***/ "./src/multimeasurerest.ts": +/*!*********************************!*\ + !*** ./src/multimeasurerest.ts ***! + \*********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "MultiMeasureRest": () => (/* binding */ MultiMeasureRest) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _notehead__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./notehead */ "./src/notehead.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _timesignature__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./timesignature */ "./src/timesignature.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// VexFlow - Music Engraving for HTML5 +// Copyright Mohit Muthanna 2010 +// +// This class implements multiple measure rests. + + + + + + + + +let semibreve_rest; +function get_semibreve_rest() { + if (!semibreve_rest) { + const noteHead = new _notehead__WEBPACK_IMPORTED_MODULE_2__.NoteHead({ duration: 'w', note_type: 'r' }); + semibreve_rest = { + glyph_font_scale: noteHead.render_options.glyph_font_scale, + glyph_code: noteHead.glyph_code, + width: noteHead.getWidth(), + }; + } + return semibreve_rest; +} +class MultiMeasureRest extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + /** + * + * @param number_of_measures Number of measures. + * @param options The options object. + */ + constructor(number_of_measures, options) { + super(); + this.xs = { left: NaN, right: NaN }; + this.hasPaddingLeft = false; + this.hasPaddingRight = false; + this.hasLineThickness = false; + this.hasSymbolSpacing = false; + this.number_of_measures = number_of_measures; + // Keep track of whether these four options were provided. + this.hasPaddingLeft = typeof options.padding_left === 'number'; + this.hasPaddingRight = typeof options.padding_right === 'number'; + this.hasLineThickness = typeof options.line_thickness === 'number'; + this.hasSymbolSpacing = typeof options.symbol_spacing === 'number'; + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.currentMusicFont(); + this.render_options = Object.assign({ use_symbols: false, show_number: true, number_line: -0.5, number_glyph_point: musicFont.lookupMetric('digits.point'), line: 2, spacing_between_lines_px: _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.STAVE_LINE_DISTANCE, serif_thickness: 2, semibreve_rest_glyph_scale: _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.NOTATION_FONT_SCALE, padding_left: 0, padding_right: 0, line_thickness: 5, symbol_spacing: 0 }, options); + const fontLineShift = musicFont.lookupMetric('digits.shiftLine', 0); + this.render_options.number_line += fontLineShift; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_6__.Category.MultiMeasureRest; + } + getXs() { + return this.xs; + } + setStave(stave) { + this.stave = stave; + return this; + } + getStave() { + return this.stave; + } + checkStave() { + return (0,_util__WEBPACK_IMPORTED_MODULE_7__.defined)(this.stave, 'NoStave', 'No stave attached to instance.'); + } + drawLine(stave, ctx, left, right, spacingBetweenLines) { + const options = this.render_options; + const y = stave.getYForLine(options.line); + const padding = (right - left) * 0.1; + left += padding; + right -= padding; + let lineThicknessHalf; + if (this.hasLineThickness) { + lineThicknessHalf = options.line_thickness * 0.5; + } + else { + lineThicknessHalf = spacingBetweenLines * 0.25; + } + const serifThickness = options.serif_thickness; + const top = y - spacingBetweenLines; + const bot = y + spacingBetweenLines; + const leftIndented = left + serifThickness; + const rightIndented = right - serifThickness; + const lineTop = y - lineThicknessHalf; + const lineBottom = y + lineThicknessHalf; + ctx.save(); + ctx.beginPath(); + ctx.moveTo(left, top); + ctx.lineTo(leftIndented, top); + ctx.lineTo(leftIndented, lineTop); + ctx.lineTo(rightIndented, lineTop); + ctx.lineTo(rightIndented, top); + ctx.lineTo(right, top); + ctx.lineTo(right, bot); + ctx.lineTo(rightIndented, bot); + ctx.lineTo(rightIndented, lineBottom); + ctx.lineTo(leftIndented, lineBottom); + ctx.lineTo(leftIndented, bot); + ctx.lineTo(left, bot); + ctx.closePath(); + ctx.fill(); + } + drawSymbols(stave, ctx, left, right, spacingBetweenLines) { + const n4 = Math.floor(this.number_of_measures / 4); + const n = this.number_of_measures % 4; + const n2 = Math.floor(n / 2); + const n1 = n % 2; + const options = this.render_options; + // FIXME: TODO: invalidate semibreve_rest at the appropriate time + // (e.g., if the system font settings are changed). + semibreve_rest = undefined; + const rest = get_semibreve_rest(); + const rest_scale = options.semibreve_rest_glyph_scale; + const rest_width = rest.width * (rest_scale / rest.glyph_font_scale); + const glyphs = { + 2: { + width: rest_width * 0.5, + height: spacingBetweenLines, + }, + 1: { + width: rest_width, + }, + }; + /* 10: normal spacingBetweenLines */ + const spacing = this.hasSymbolSpacing ? options.symbol_spacing : 10; + const width = n4 * glyphs[2].width + n2 * glyphs[2].width + n1 * glyphs[1].width + (n4 + n2 + n1 - 1) * spacing; + let x = left + (right - left) * 0.5 - width * 0.5; + const line = options.line; + const yTop = stave.getYForLine(line - 1); + const yMiddle = stave.getYForLine(line); + const yBottom = stave.getYForLine(line + 1); + ctx.save(); + ctx.setStrokeStyle('none'); + ctx.setLineWidth(0); + for (let i = 0; i < n4; ++i) { + ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height); + ctx.fillRect(x, yBottom - glyphs[2].height, glyphs[2].width, glyphs[2].height); + x += glyphs[2].width + spacing; + } + for (let i = 0; i < n2; ++i) { + ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height); + x += glyphs[2].width + spacing; + } + for (let i = 0; i < n1; ++i) { + _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderGlyph(ctx, x, yTop, rest_scale, rest.glyph_code); + x += glyphs[1].width + spacing; + } + ctx.restore(); + } + draw() { + const ctx = this.checkContext(); + this.setRendered(); + const stave = this.checkStave(); + let left = stave.getNoteStartX(); + let right = stave.getNoteEndX(); + // FIXME: getNoteStartX() returns x + 5(barline width) + // getNoteEndX() returns x + width(no barline width) + // See Stave constructor. How do we fix this? + // Here, we subtract the barline width. + const begModifiers = stave.getModifiers(_stavemodifier__WEBPACK_IMPORTED_MODULE_3__.StaveModifierPosition.BEGIN); + if (begModifiers.length === 1 && (0,_typeguard__WEBPACK_IMPORTED_MODULE_6__.isBarline)(begModifiers[0])) { + left -= begModifiers[0].getWidth(); + } + const options = this.render_options; + if (this.hasPaddingLeft) { + left = stave.getX() + options.padding_left; + } + if (this.hasPaddingRight) { + right = stave.getX() + stave.getWidth() - options.padding_right; + } + this.xs.left = left; + this.xs.right = right; + const spacingBetweenLines = options.spacing_between_lines_px; + if (options.use_symbols) { + this.drawSymbols(stave, ctx, left, right, spacingBetweenLines); + } + else { + this.drawLine(stave, ctx, left, right, spacingBetweenLines); + } + if (options.show_number) { + const timeSpec = '/' + this.number_of_measures; + const timeSig = new _timesignature__WEBPACK_IMPORTED_MODULE_5__.TimeSignature(timeSpec, 0, false); + timeSig.point = options.number_glyph_point; + timeSig.setTimeSig(timeSpec); + timeSig.setStave(stave); + timeSig.setX(left + (right - left) * 0.5 - timeSig.getInfo().glyph.getMetrics().width * 0.5); + timeSig.bottomLine = options.number_line; + timeSig.setContext(ctx).draw(); + } + } +} + + +/***/ }), + +/***/ "./src/music.ts": +/*!**********************!*\ + !*** ./src/music.ts ***! + \**********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Music": () => (/* binding */ Music) +/* harmony export */ }); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + +/** Music implements some standard music theory routines. */ +class Music { + /** Number of an canonical notes (12). */ + static get NUM_TONES() { + return this.canonical_notes.length; + } + /** Names of root notes ('c', 'd',...) */ + static get roots() { + return ['c', 'd', 'e', 'f', 'g', 'a', 'b']; + } + /** Values of the root notes.*/ + static get root_values() { + return [0, 2, 4, 5, 7, 9, 11]; + } + /** Indices of the root notes.*/ + static get root_indices() { + return { + c: 0, + d: 1, + e: 2, + f: 3, + g: 4, + a: 5, + b: 6, + }; + } + /** Names of canonical notes ('c', 'c#', 'd',...). */ + static get canonical_notes() { + return ['c', 'c#', 'd', 'd#', 'e', 'f', 'f#', 'g', 'g#', 'a', 'a#', 'b']; + } + /** Names of diatonic intervals ('unison', 'm2', 'M2',...). */ + static get diatonic_intervals() { + return ['unison', 'm2', 'M2', 'm3', 'M3', 'p4', 'dim5', 'p5', 'm6', 'M6', 'b7', 'M7', 'octave']; + } + /** NoteAccidental associated to diatonic intervals. */ + static get diatonic_accidentals() { + return { + unison: { note: 0, accidental: 0 }, + m2: { note: 1, accidental: -1 }, + M2: { note: 1, accidental: 0 }, + m3: { note: 2, accidental: -1 }, + M3: { note: 2, accidental: 0 }, + p4: { note: 3, accidental: 0 }, + dim5: { note: 4, accidental: -1 }, + p5: { note: 4, accidental: 0 }, + m6: { note: 5, accidental: -1 }, + M6: { note: 5, accidental: 0 }, + b7: { note: 6, accidental: -1 }, + M7: { note: 6, accidental: 0 }, + octave: { note: 7, accidental: 0 }, + }; + } + /** Semitones shift associated to intervals .*/ + static get intervals() { + return { + u: 0, + unison: 0, + m2: 1, + b2: 1, + min2: 1, + S: 1, + H: 1, + 2: 2, + M2: 2, + maj2: 2, + T: 2, + W: 2, + m3: 3, + b3: 3, + min3: 3, + M3: 4, + 3: 4, + maj3: 4, + 4: 5, + p4: 5, + '#4': 6, + b5: 6, + aug4: 6, + dim5: 6, + 5: 7, + p5: 7, + '#5': 8, + b6: 8, + aug5: 8, + 6: 9, + M6: 9, + maj6: 9, + b7: 10, + m7: 10, + min7: 10, + dom7: 10, + M7: 11, + maj7: 11, + 8: 12, + octave: 12, + }; + } + /** Semitones shifts associated with scales. */ + static get scales() { + return { + major: [2, 2, 1, 2, 2, 2, 1], + minor: [2, 1, 2, 2, 1, 2, 2], + ionian: [2, 2, 1, 2, 2, 2, 1], + dorian: [2, 1, 2, 2, 2, 1, 2], + phyrgian: [1, 2, 2, 2, 1, 2, 2], + lydian: [2, 2, 2, 1, 2, 2, 1], + mixolydian: [2, 2, 1, 2, 2, 1, 2], + aeolian: [2, 1, 2, 2, 1, 2, 2], + locrian: [1, 2, 2, 1, 2, 2, 2], + }; + } + /** Scales associated with m (minor) and M (major). */ + static get scaleTypes() { + return { + M: Music.scales.major, + m: Music.scales.minor, + }; + } + /** Accidentals abbreviations. */ + static get accidentals() { + return ['bb', 'b', 'n', '#', '##']; + } + /** Note values. */ + static get noteValues() { + return { + c: { root_index: 0, int_val: 0 }, + cn: { root_index: 0, int_val: 0 }, + 'c#': { root_index: 0, int_val: 1 }, + 'c##': { root_index: 0, int_val: 2 }, + cb: { root_index: 0, int_val: 11 }, + cbb: { root_index: 0, int_val: 10 }, + d: { root_index: 1, int_val: 2 }, + dn: { root_index: 1, int_val: 2 }, + 'd#': { root_index: 1, int_val: 3 }, + 'd##': { root_index: 1, int_val: 4 }, + db: { root_index: 1, int_val: 1 }, + dbb: { root_index: 1, int_val: 0 }, + e: { root_index: 2, int_val: 4 }, + en: { root_index: 2, int_val: 4 }, + 'e#': { root_index: 2, int_val: 5 }, + 'e##': { root_index: 2, int_val: 6 }, + eb: { root_index: 2, int_val: 3 }, + ebb: { root_index: 2, int_val: 2 }, + f: { root_index: 3, int_val: 5 }, + fn: { root_index: 3, int_val: 5 }, + 'f#': { root_index: 3, int_val: 6 }, + 'f##': { root_index: 3, int_val: 7 }, + fb: { root_index: 3, int_val: 4 }, + fbb: { root_index: 3, int_val: 3 }, + g: { root_index: 4, int_val: 7 }, + gn: { root_index: 4, int_val: 7 }, + 'g#': { root_index: 4, int_val: 8 }, + 'g##': { root_index: 4, int_val: 9 }, + gb: { root_index: 4, int_val: 6 }, + gbb: { root_index: 4, int_val: 5 }, + a: { root_index: 5, int_val: 9 }, + an: { root_index: 5, int_val: 9 }, + 'a#': { root_index: 5, int_val: 10 }, + 'a##': { root_index: 5, int_val: 11 }, + ab: { root_index: 5, int_val: 8 }, + abb: { root_index: 5, int_val: 7 }, + b: { root_index: 6, int_val: 11 }, + bn: { root_index: 6, int_val: 11 }, + 'b#': { root_index: 6, int_val: 0 }, + 'b##': { root_index: 6, int_val: 1 }, + bb: { root_index: 6, int_val: 10 }, + bbb: { root_index: 6, int_val: 9 }, + }; + } + isValidNoteValue(note) { + return note >= 0 && note < Music.canonical_notes.length; + } + isValidIntervalValue(interval) { + return interval >= 0 && interval < Music.diatonic_intervals.length; + } + /** Return root and accidental associated to a note. */ + getNoteParts(noteString) { + if (!noteString || noteString.length < 1) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', 'Invalid note name: ' + noteString); + } + if (noteString.length > 3) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', 'Invalid note name: ' + noteString); + } + const note = noteString.toLowerCase(); + const regex = /^([cdefgab])(b|bb|n|#|##)?$/; + const match = regex.exec(note); + if (match !== null) { + const root = match[1]; + const accidental = match[2]; + return { + root, + accidental, + }; + } + else { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', 'Invalid note name: ' + noteString); + } + } + /** Return root, accidental and type associated to a key. */ + getKeyParts(keyString) { + if (!keyString || keyString.length < 1) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', 'Invalid key: ' + keyString); + } + const key = keyString.toLowerCase(); + // Support Major, Minor, Melodic Minor, and Harmonic Minor key types. + const regex = /^([cdefgab])(b|#)?(mel|harm|m|M)?$/; + const match = regex.exec(key); + if (match !== null) { + const root = match[1]; + const accidental = match[2]; + let type = match[3]; + // Unspecified type implies major + if (!type) + type = 'M'; + return { + root, + accidental, + type, + }; + } + else { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', `Invalid key: ${keyString}`); + } + } + /** Note value associated to a note name. */ + getNoteValue(noteString) { + const value = Music.noteValues[noteString]; + if (value === undefined) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', `Invalid note name: ${noteString}`); + } + return value.int_val; + } + /** Interval value associated to an interval name. */ + getIntervalValue(intervalString) { + const value = Music.intervals[intervalString]; + if (value === undefined) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', `Invalid interval name: ${intervalString}`); + } + return value; + } + /** Canonical note name associated to a value. */ + getCanonicalNoteName(noteValue) { + if (!this.isValidNoteValue(noteValue)) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', `Invalid note value: ${noteValue}`); + } + return Music.canonical_notes[noteValue]; + } + /** Interval name associated to a value. */ + getCanonicalIntervalName(intervalValue) { + if (!this.isValidIntervalValue(intervalValue)) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', `Invalid interval value: ${intervalValue}`); + } + return Music.diatonic_intervals[intervalValue]; + } + /** + * Given a note, interval, and interval direction, produce the relative note. + */ + getRelativeNoteValue(noteValue, intervalValue, direction = 1) { + if (direction !== 1 && direction !== -1) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', `Invalid direction: ${direction}`); + } + let sum = (noteValue + direction * intervalValue) % Music.NUM_TONES; + if (sum < 0) + sum += Music.NUM_TONES; + return sum; + } + /** + * Given a root and note value, produce the relative note name. + */ + getRelativeNoteName(root, noteValue) { + const parts = this.getNoteParts(root); + const rootValue = this.getNoteValue(parts.root); + let interval = noteValue - rootValue; + if (Math.abs(interval) > Music.NUM_TONES - 3) { + let multiplier = 1; + if (interval > 0) + multiplier = -1; + // Possibly wrap around. (Add +1 for modulo operator) + const reverse_interval = ((noteValue + 1 + (rootValue + 1)) % Music.NUM_TONES) * multiplier; + if (Math.abs(reverse_interval) > 2) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', `Notes not related: ${root}, ${noteValue})`); + } + else { + interval = reverse_interval; + } + } + if (Math.abs(interval) > 2) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', `Notes not related: ${root}, ${noteValue})`); + } + let relativeNoteName = parts.root; + if (interval > 0) { + for (let i = 1; i <= interval; ++i) { + relativeNoteName += '#'; + } + } + else if (interval < 0) { + for (let i = -1; i >= interval; --i) { + relativeNoteName += 'b'; + } + } + return relativeNoteName; + } + /** + * Return scale tones, given intervals. Each successive interval is + * relative to the previous one, e.g., Major Scale: + * + * TTSTTTS = [2,2,1,2,2,2,1] + * + * When used with key = 0, returns C scale (which is isomorphic to + * interval list). + */ + getScaleTones(key, intervals) { + const tones = [key]; + let nextNote = key; + for (let i = 0; i < intervals.length; i++) { + nextNote = this.getRelativeNoteValue(nextNote, intervals[i]); + if (nextNote !== key) + tones.push(nextNote); + } + return tones; + } + /** + * Return the interval of a note, given a diatonic scale. + * e.g., given the scale C, and the note E, returns M3. + */ + getIntervalBetween(note1, note2, direction = 1) { + if (direction !== 1 && direction !== -1) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', `Invalid direction: ${direction}`); + } + if (!this.isValidNoteValue(note1) || !this.isValidNoteValue(note2)) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', `Invalid notes: ${note1}, ${note2}`); + } + let difference = direction === 1 ? note2 - note1 : note1 - note2; + if (difference < 0) + difference += Music.NUM_TONES; + return difference; + } + /** + * Create a scale map that represents the pitch state for a + * `keySignature`. For example, passing a `G` to `keySignature` would + * return a scale map with every note naturalized except for `F` which + * has an `F#` state. + */ + createScaleMap(keySignature) { + const keySigParts = this.getKeyParts(keySignature); + if (!keySigParts.type) + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', 'Unsupported key type: undefined'); + const scaleName = Music.scaleTypes[keySigParts.type]; + let keySigString = keySigParts.root; + if (keySigParts.accidental) + keySigString += keySigParts.accidental; + if (!scaleName) + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('BadArguments', 'Unsupported key type: ' + keySignature); + const scale = this.getScaleTones(this.getNoteValue(keySigString), scaleName); + const noteLocation = Music.root_indices[keySigParts.root]; + const scaleMap = {}; + for (let i = 0; i < Music.roots.length; ++i) { + const index = (noteLocation + i) % Music.roots.length; + const rootName = Music.roots[index]; + let noteName = this.getRelativeNoteName(rootName, scale[i]); + if (noteName.length === 1) { + noteName += 'n'; + } + scaleMap[rootName] = noteName; + } + return scaleMap; + } +} + + +/***/ }), + +/***/ "./src/note.ts": +/*!*********************!*\ + !*** ./src/note.ts ***! + \*********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Note": () => (/* binding */ Note) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _rendercontext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rendercontext */ "./src/rendercontext.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _tickable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tickable */ "./src/tickable.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + +/** + * Note implements an abstract interface for notes and chords that + * are rendered on a stave. Notes have some common properties: All of them + * have a value (e.g., pitch, fret, etc.) and a duration (quarter, half, etc.) + * + * Some notes have stems, heads, dots, etc. Most notational elements that + * surround a note are called *modifiers*, and every note has an associated + * array of them. All notes also have a rendering context and belong to a stave. + */ +class Note extends _tickable__WEBPACK_IMPORTED_MODULE_3__.Tickable { + /** + * Every note is a tickable, i.e., it can be mutated by the `Formatter` class for + * positioning and layout. + * + * @param noteStruct To create a new note you need to provide a `noteStruct`. + */ + constructor(noteStruct) { + super(); + if (!noteStruct) { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('BadArguments', 'Note must have valid initialization data to identify duration and type.'); + } + /** Parses `noteStruct` and get note properties. */ + const parsedNoteStruct = Note.parseNoteStruct(noteStruct); + if (!parsedNoteStruct) { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('BadArguments', `Invalid note initialization object: ${JSON.stringify(noteStruct)}`); + } + // Set note properties from parameters. + this.keys = noteStruct.keys || []; + // per-pitch properties + this.keyProps = []; + this.duration = parsedNoteStruct.duration; + this.noteType = parsedNoteStruct.type; + this.customTypes = parsedNoteStruct.customTypes; + if (noteStruct.duration_override) { + // Custom duration + this.setDuration(noteStruct.duration_override); + } + else { + // Default duration + this.setIntrinsicTicks(parsedNoteStruct.ticks); + } + this.modifiers = []; + // Get the glyph code for this note from the font. + this.glyph = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.getGlyphProps(this.duration, this.noteType); + this.customGlyphs = this.customTypes.map((t) => _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.getGlyphProps(this.duration, t)); + // Note to play for audio players. + this.playNote = undefined; + // Positioning contexts used by the Formatter. + this.ignore_ticks = false; + // Positioning variables + this.width = 0; // Width in pixels calculated after preFormat + this.leftDisplacedHeadPx = 0; // Extra room on left for displaced note head + this.rightDisplacedHeadPx = 0; // Extra room on right for displaced note head + this.x_shift = 0; // X shift from tick context X + this.ys = []; // list of y coordinates for each note + // we need to hold on to these for ties and beams. + if (noteStruct.align_center) { + this.setCenterAlignment(noteStruct.align_center); + } + // The render surface. + this.render_options = { + annotation_spacing: 5, + glyph_font_scale: 1, + stroke_px: 1, + scale: 1, + font: '', + y_shift: 0, + }; + } + ////////////////////////////////////////////////////////////////////////////////////////////////// + // STATIC MEMBERS + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_4__.Category.Note; + } + /** Debug helper. Displays various note metrics for the given note. */ + static plotMetrics(ctx, note, yPos) { + const metrics = note.getMetrics(); + const xStart = note.getAbsoluteX() - metrics.modLeftPx - metrics.leftDisplacedHeadPx; + const xPre1 = note.getAbsoluteX() - metrics.leftDisplacedHeadPx; + const xAbs = note.getAbsoluteX(); + const xPost1 = note.getAbsoluteX() + metrics.notePx; + const xPost2 = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx; + const xEnd = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx + metrics.modRightPx; + const xFreedomRight = xEnd + (note.getFormatterMetrics().freedom.right || 0); + const xWidth = xEnd - xStart; + ctx.save(); + ctx.setFont(_font__WEBPACK_IMPORTED_MODULE_0__.Font.SANS_SERIF, 8); + ctx.fillText(Math.round(xWidth) + 'px', xStart + note.getXShift(), yPos); + const y = yPos + 7; + function stroke(x1, x2, color, yy = y) { + ctx.beginPath(); + ctx.setStrokeStyle(color); + ctx.setFillStyle(color); + ctx.setLineWidth(3); + ctx.moveTo(x1 + note.getXShift(), yy); + ctx.lineTo(x2 + note.getXShift(), yy); + ctx.stroke(); + } + stroke(xStart, xPre1, 'red'); + stroke(xPre1, xAbs, '#999'); + stroke(xAbs, xPost1, 'green'); + stroke(xPost1, xPost2, '#999'); + stroke(xPost2, xEnd, 'red'); + stroke(xEnd, xFreedomRight, '#DD0'); + stroke(xStart - note.getXShift(), xStart, '#BBB'); // Shift + (0,_rendercontext__WEBPACK_IMPORTED_MODULE_1__.drawDot)(ctx, xAbs + note.getXShift(), y, 'blue'); + const formatterMetrics = note.getFormatterMetrics(); + if (formatterMetrics.iterations > 0) { + const spaceDeviation = formatterMetrics.space.deviation; + const prefix = spaceDeviation >= 0 ? '+' : ''; + ctx.setFillStyle('red'); + ctx.fillText(prefix + Math.round(spaceDeviation), xAbs + note.getXShift(), yPos - 10); + } + ctx.restore(); + } + static parseDuration(durationString) { + if (!durationString) { + return undefined; + } + const regexp = /(\d*\/?\d+|[a-z])(d*)([nrhms]|$)/; + const result = regexp.exec(durationString); + if (!result) { + return undefined; + } + const duration = result[1]; + const dots = result[2].length; + const type = result[3] || 'n'; + return { duration, dots, type }; + } + static parseNoteStruct(noteStruct) { + // Preserve backwards-compatibility + const durationProps = Note.parseDuration(noteStruct.duration); + if (!durationProps) { + return undefined; + } + // If specified type is invalid, return undefined. + let type = noteStruct.type; + if (type && !_tables__WEBPACK_IMPORTED_MODULE_2__.Tables.validTypes[type]) { + return undefined; + } + // If no type specified, check duration or custom types + const customTypes = []; + if (!type) { + type = durationProps.type || 'n'; + // If we have keys, try and check if we've got a custom glyph + if (noteStruct.keys !== undefined) { + noteStruct.keys.forEach((k, i) => { + const result = k.split('/'); + // We have a custom glyph specified after the note eg. /X2 + customTypes[i] = (result && result.length === 3 ? result[2] : type); + }); + } + } + // Calculate the tick duration of the note + let ticks = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.durationToTicks(durationProps.duration); + if (!ticks) { + return undefined; + } + // Are there any dots? + const dots = noteStruct.dots ? noteStruct.dots : durationProps.dots; + if (typeof dots !== 'number') { + return undefined; + } + // Add ticks as necessary depending on the numbr of dots + let currentTicks = ticks; + for (let i = 0; i < dots; i++) { + if (currentTicks <= 1) + return undefined; + currentTicks = currentTicks / 2; + ticks += currentTicks; + } + return { + duration: durationProps.duration, + type, + customTypes, + dots, + ticks, + }; + } + /** + * Get the play note, which is arbitrary data that can be used by an + * audio player. + */ + getPlayNote() { + return this.playNote; + } + /** + * Set the play note, which is arbitrary data that can be used by an + * audio player. + */ + setPlayNote(note) { + this.playNote = note; + return this; + } + /** + * @returns true if this note is a type of rest. + * + * Rests don't have pitches, but take up space in the score. + * Subclasses should override this default implementation. + */ + isRest() { + return false; + } + /** Add stroke. */ + addStroke(index, stroke) { + stroke.setNote(this); + stroke.setIndex(index); + this.modifiers.push(stroke); + this.preFormatted = false; + return this; + } + /** Get the target stave. */ + getStave() { + return this.stave; + } + /** Check and get the target stave. */ + checkStave() { + return (0,_util__WEBPACK_IMPORTED_MODULE_5__.defined)(this.stave, 'NoStave', 'No stave attached to instance.'); + } + /** Set the target stave. */ + setStave(stave) { + this.stave = stave; + this.setYs([stave.getYForLine(0)]); // Update Y values if the stave is changed. + this.setContext(this.stave.getContext()); + return this; + } + /** Get spacing to the left of the notes. */ + getLeftDisplacedHeadPx() { + return this.leftDisplacedHeadPx; + } + /** Get spacing to the right of the notes. */ + getRightDisplacedHeadPx() { + return this.rightDisplacedHeadPx; + } + /** Set spacing to the left of the notes. */ + setLeftDisplacedHeadPx(x) { + this.leftDisplacedHeadPx = x; + return this; + } + /** Set spacing to the right of the notes. */ + setRightDisplacedHeadPx(x) { + this.rightDisplacedHeadPx = x; + return this; + } + /** True if this note has no duration (e.g., bar notes, spacers, etc.). */ + shouldIgnoreTicks() { + return this.ignore_ticks; + } + /** Get the stave line number for the note. */ + // eslint-disable-next-line + getLineNumber(isTopNote) { + return 0; + } + /** Get the stave line number for rest. */ + getLineForRest() { + return 0; + } + /** Get the glyph associated with this note. */ + // eslint-disable-next-line + getGlyph() { + return this.glyph; + } + /** Get the glyph width. */ + getGlyphWidth() { + // TODO: FIXME (multiple potential values for this.glyph) + if (this.glyph) { + if (this.glyph.getMetrics) { + return this.glyph.getMetrics().width; + } + else if (this.glyph.getWidth) { + return this.glyph.getWidth(this.render_options.glyph_font_scale); + } + } + return 0; + } + /** + * Set Y positions for this note. Each Y value is associated with + * an individual pitch/key within the note/chord. + */ + setYs(ys) { + this.ys = ys; + return this; + } + /** + * Get Y positions for this note. Each Y value is associated with + * an individual pitch/key within the note/chord. + */ + getYs() { + if (this.ys.length === 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('NoYValues', 'No Y-values calculated for this note.'); + } + return this.ys; + } + /** + * Get the Y position of the space above the stave onto which text can + * be rendered. + */ + getYForTopText(text_line) { + return this.checkStave().getYForTopText(text_line); + } + /** Return the voice that this note belongs in. */ + getVoice() { + if (!this.voice) + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('NoVoice', 'Note has no voice.'); + return this.voice; + } + /** Attach this note to `voice`. */ + setVoice(voice) { + this.voice = voice; + this.preFormatted = false; + return this; + } + /** Get the `TickContext` for this note. */ + getTickContext() { + return this.checkTickContext(); + } + /** Set the `TickContext` for this note. */ + setTickContext(tc) { + this.tickContext = tc; + this.preFormatted = false; + return this; + } + /** Accessor to duration. */ + getDuration() { + return this.duration; + } + /** Accessor to isDotted. */ + isDotted() { + return this.getModifiersByType('Dot').length > 0; + } + /** Accessor to hasStem. */ + hasStem() { + return false; + } + /** Accessor to note type. */ + getNoteType() { + return this.noteType; + } + /** Get the beam. */ + getBeam() { + return this.beam; + } + /** Check and get the beam. */ + checkBeam() { + return (0,_util__WEBPACK_IMPORTED_MODULE_5__.defined)(this.beam, 'NoBeam', 'No beam attached to instance'); + } + /** Check it has a beam. */ + hasBeam() { + return this.beam != undefined; + } + /** Set the beam. */ + setBeam(beam) { + this.beam = beam; + return this; + } + /** + * Attach a modifier to this note. + * @param modifier the Modifier to add. + * @param index of the key to modify. + * @returns this + */ + addModifier(modifier, index = 0) { + const signature = 'Note.addModifier(modifier: Modifier, index: number=0)'; + // Backwards compatibility with 3.0.9. + if (typeof index === 'string') { + index = parseInt(index); + // eslint-disable-next-line + console.warn(signature + ' expected a number for `index`, but received a string.'); + } + // Some versions of VexFlow had the two parameters reversed. + // Check here and throw an error if the argument types are not correct. + if (typeof modifier !== 'object' || typeof index !== 'number') { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('WrongParams', 'Incorrect call signature. Use ' + signature + ' instead.'); + } + modifier.setNote(this); + modifier.setIndex(index); + super.addModifier(modifier); + return this; + } + /** Get all modifiers of a specific type in `this.modifiers`. */ + getModifiersByType(type) { + return this.modifiers.filter((modifier) => modifier.getCategory() === type); + } + /** Get the coordinates for where modifiers begin. */ + // eslint-disable-next-line + getModifierStartXY(position, index, options) { + if (!this.preFormatted) { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('UnformattedNote', "Can't call GetModifierStartXY on an unformatted note"); + } + return { + x: this.getAbsoluteX(), + y: this.ys[0], + }; + } + getRightParenthesisPx(index) { + const props = this.getKeyProps()[index]; + return props.displaced ? this.getRightDisplacedHeadPx() : 0; + } + getLeftParenthesisPx(index) { + const props = this.getKeyProps()[index]; + return props.displaced ? this.getLeftDisplacedHeadPx() - this.x_shift : -this.x_shift; + } + getFirstDotPx() { + let px = this.getRightDisplacedHeadPx(); + if (this.checkModifierContext().getMembers('Parenthesis').length !== 0) + px += _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont().lookupMetric('parenthesis.default.width'); + return px; + } + /** Get the metrics for this note. */ + getMetrics() { + if (!this.preFormatted) { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('UnformattedNote', "Can't call getMetrics on an unformatted note."); + } + const modLeftPx = this.modifierContext ? this.modifierContext.getState().left_shift : 0; + const modRightPx = this.modifierContext ? this.modifierContext.getState().right_shift : 0; + const width = this.getWidth(); + const glyphWidth = this.getGlyphWidth(); + const notePx = width - + modLeftPx - // subtract left modifiers + modRightPx - // subtract right modifiers + this.leftDisplacedHeadPx - // subtract left displaced head + this.rightDisplacedHeadPx; // subtract right displaced head + // NOTE: If you change this, remember to update MockTickable.getMetrics() in the tests/ directory. + return { + width, + glyphWidth, + notePx, + // Modifier spacing. + modLeftPx, + modRightPx, + // Displaced note head on left or right. + leftDisplacedHeadPx: this.leftDisplacedHeadPx, + rightDisplacedHeadPx: this.rightDisplacedHeadPx, + glyphPx: 0, + }; + } + /** + * Get the absolute `X` position of this note's tick context. This + * excludes x_shift, so you'll need to factor it in if you're + * looking for the post-formatted x-position. + */ + getAbsoluteX() { + const tickContext = this.checkTickContext(`Can't getAbsoluteX() without a TickContext.`); + // Position note to left edge of tick context. + let x = tickContext.getX(); + if (this.stave) { + x += this.stave.getNoteStartX() + _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont().lookupMetric('stave.padding'); + } + if (this.isCenterAligned()) { + x += this.getCenterXShift(); + } + return x; + } + /** Get the direction of the stem. */ + getStemDirection() { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('NoStem', 'No stem attached to this note.'); + } + /** Get the top and bottom `y` values of the stem. */ + getStemExtents() { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('NoStem', 'No stem attached to this note.'); + } + /** Get the `x` coordinate to the right of the note. */ + getTieRightX() { + let tieStartX = this.getAbsoluteX(); + const note_glyph_width = this.glyph.getWidth(); + tieStartX += note_glyph_width / 2; + tieStartX += -this.width / 2 + this.width + 2; + return tieStartX; + } + /** Get the `x` coordinate to the left of the note. */ + getTieLeftX() { + let tieEndX = this.getAbsoluteX(); + const note_glyph_width = this.glyph.getWidth(); + tieEndX += note_glyph_width / 2; + tieEndX -= this.width / 2 + 2; + return tieEndX; + } + // Get the pitches in the note + getKeys() { + return this.keys; + } + // Get the properties for all the keys in the note + getKeyProps() { + return this.keyProps; + } +} + + +/***/ }), + +/***/ "./src/notehead.ts": +/*!*************************!*\ + !*** ./src/notehead.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "NoteHead": () => (/* binding */ NoteHead) +/* harmony export */ }); +/* harmony import */ var _boundingbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./boundingbox */ "./src/boundingbox.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + + +// eslint-disable-next-line +function L(...args) { + if (NoteHead.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_6__.log)('Vex.Flow.NoteHead', args); +} +/** + * Draw slashnote head manually. No glyph exists for this. + * @param ctx the Canvas context + * @param duration the duration of the note. ex: "4" + * @param x the x coordinate to draw at + * @param y the y coordinate to draw at + * @param stem_direction the direction of the stem + */ +function drawSlashNoteHead(ctx, duration, x, y, stem_direction, staveSpace) { + const width = _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.SLASH_NOTEHEAD_WIDTH; + ctx.save(); + ctx.setLineWidth(_tables__WEBPACK_IMPORTED_MODULE_4__.Tables.STEM_WIDTH); + let fill = false; + if (_tables__WEBPACK_IMPORTED_MODULE_4__.Tables.durationToNumber(duration) > 2) { + fill = true; + } + if (!fill) + x -= (_tables__WEBPACK_IMPORTED_MODULE_4__.Tables.STEM_WIDTH / 2) * stem_direction; + ctx.beginPath(); + ctx.moveTo(x, y + staveSpace); + ctx.lineTo(x, y + 1); + ctx.lineTo(x + width, y - staveSpace); + ctx.lineTo(x + width, y); + ctx.lineTo(x, y + staveSpace); + ctx.closePath(); + if (fill) { + ctx.fill(); + } + else { + ctx.stroke(); + } + if (_tables__WEBPACK_IMPORTED_MODULE_4__.Tables.durationToFraction(duration).equals(0.5)) { + const breve_lines = [-3, -1, width + 1, width + 3]; + for (let i = 0; i < breve_lines.length; i++) { + ctx.beginPath(); + ctx.moveTo(x + breve_lines[i], y - 10); + ctx.lineTo(x + breve_lines[i], y + 11); + ctx.stroke(); + } + } + ctx.restore(); +} +/** + * `NoteHeads` are typically not manipulated + * directly, but used internally in `StaveNote`. + * + * See `tests/notehead_tests.ts` for usage examples. + */ +class NoteHead extends _note__WEBPACK_IMPORTED_MODULE_2__.Note { + constructor(noteStruct) { + super(noteStruct); + this.custom_glyph = false; + this.stem_up_x_offset = 0; + this.stem_down_x_offset = 0; + this.index = noteStruct.index; + this.x = noteStruct.x || 0; + this.y = noteStruct.y || 0; + if (noteStruct.note_type) + this.noteType = noteStruct.note_type; + this.displaced = noteStruct.displaced || false; + this.stem_direction = noteStruct.stem_direction || _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP; + this.line = noteStruct.line || 0; + // Get glyph code based on duration and note type. This could be + // regular notes, rests, or other custom codes. + this.glyph = _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.getGlyphProps(this.duration, this.noteType); + (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`); + // Swap out the glyph with leger lines + if ((this.line > 5 || this.line < 0) && this.glyph.leger_code_head) { + this.glyph.code_head = this.glyph.leger_code_head; + } + this.glyph_code = this.glyph.code_head; + this.x_shift = noteStruct.x_shift || 0; + if (noteStruct.custom_glyph_code) { + this.custom_glyph = true; + this.glyph_code = noteStruct.custom_glyph_code; + this.stem_up_x_offset = noteStruct.stem_up_x_offset || 0; + this.stem_down_x_offset = noteStruct.stem_down_x_offset || 0; + } + this.setStyle(noteStruct.style); + this.slashed = noteStruct.slashed || false; + this.render_options = Object.assign(Object.assign({}, this.render_options), { + // font size for note heads + glyph_font_scale: noteStruct.glyph_font_scale || _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.NOTATION_FONT_SCALE }); + this.setWidth(this.glyph.getWidth(this.render_options.glyph_font_scale)); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_5__.Category.NoteHead; + } + /** Get the width of the notehead. */ + getWidth() { + return this.width; + } + /** Determine if the notehead is displaced. */ + isDisplaced() { + return this.displaced === true; + } + /** Get the glyph data. */ + getGlyph() { + return this.glyph; + } + /** Set the X coordinate. */ + setX(x) { + this.x = x; + return this; + } + /** Get the Y coordinate. */ + getY() { + return this.y; + } + /** Set the Y coordinate. */ + setY(y) { + this.y = y; + return this; + } + /** Get the stave line the notehead is placed on. */ + getLine() { + return this.line; + } + /** Set the stave line the notehead is placed on. */ + setLine(line) { + this.line = line; + return this; + } + /** Get the canvas `x` coordinate position of the notehead. */ + getAbsoluteX() { + // If the note has not been preformatted, then get the static x value + // Otherwise, it's been formatted and we should use it's x value relative + // to its tick context + const x = !this.preFormatted ? this.x : super.getAbsoluteX(); + // For a more natural displaced notehead, we adjust the displacement amount + // by half the stem width in order to maintain a slight overlap with the stem + const displacementStemAdjustment = _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.WIDTH / 2; + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.currentMusicFont(); + const fontShift = musicFont.lookupMetric('notehead.shiftX', 0) * this.stem_direction; + const displacedFontShift = musicFont.lookupMetric('noteHead.displaced.shiftX', 0) * this.stem_direction; + return (x + + fontShift + + (this.displaced ? (this.width - displacementStemAdjustment) * this.stem_direction + displacedFontShift : 0)); + } + /** Get the `BoundingBox` for the `NoteHead`. */ + getBoundingBox() { + if (!this.preFormatted) { + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('UnformattedNote', "Can't call getBoundingBox on an unformatted note."); + } + const spacing = this.checkStave().getSpacingBetweenLines(); + const half_spacing = spacing / 2; + const min_y = this.y - half_spacing; + return new _boundingbox__WEBPACK_IMPORTED_MODULE_0__.BoundingBox(this.getAbsoluteX(), min_y, this.width, spacing); + } + /** Set notehead to a provided `stave`. */ + setStave(stave) { + const line = this.getLine(); + this.stave = stave; + if (this.stave) { + this.setY(this.stave.getYForNote(line)); + this.setContext(this.stave.getContext()); + } + return this; + } + /** Pre-render formatting. */ + preFormat() { + if (this.preFormatted) + return this; + const width = this.getWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx; + this.setWidth(width); + this.preFormatted = true; + return this; + } + /** Draw the notehead. */ + draw() { + const ctx = this.checkContext(); + this.setRendered(); + let head_x = this.getAbsoluteX(); + if (this.custom_glyph) { + // head_x += this.x_shift; + head_x += this.stem_direction === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP ? this.stem_up_x_offset : this.stem_down_x_offset; + } + const y = this.y; + L("Drawing note head '", this.noteType, this.duration, "' at", head_x, y); + // Begin and end positions for head. + const stem_direction = this.stem_direction; + const glyph_font_scale = this.render_options.glyph_font_scale; + this.applyStyle(ctx); + const categorySuffix = `${this.glyph_code}Stem${stem_direction === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP ? 'Up' : 'Down'}`; + if (this.noteType === 's') { + const staveSpace = this.checkStave().getSpacingBetweenLines(); + drawSlashNoteHead(ctx, this.duration, head_x, y, stem_direction, staveSpace); + } + else { + _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderGlyph(ctx, head_x, y, glyph_font_scale, this.glyph_code, { + category: this.custom_glyph ? `noteHead.custom.${categorySuffix}` : `noteHead.standard.${categorySuffix}`, + }); + } + this.restoreStyle(ctx); + } +} +/** To enable logging for this class. Set `Vex.Flow.NoteHead.DEBUG` to `true`. */ +NoteHead.DEBUG = false; + + +/***/ }), + +/***/ "./src/notesubgroup.ts": +/*!*****************************!*\ + !*** ./src/notesubgroup.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "NoteSubGroup": () => (/* binding */ NoteSubGroup) +/* harmony export */ }); +/* harmony import */ var _formatter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatter */ "./src/formatter.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _voice__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./voice */ "./src/voice.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Taehoon Moon 2016 +// +// ## Description +// +// This file implements `NoteSubGroup` which is used to format and +// render notes as a `Modifier` +// ex) ClefNote, TimeSigNote and BarNote. + + + + + +class NoteSubGroup extends _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier { + constructor(subNotes) { + super(); + this.preFormatted = false; + this.position = _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.LEFT; + this.subNotes = subNotes; + this.subNotes.forEach((subNote) => { + subNote.setIgnoreTicks(false); + }); + this.width = 0; + this.formatter = new _formatter__WEBPACK_IMPORTED_MODULE_0__.Formatter(); + this.voice = new _voice__WEBPACK_IMPORTED_MODULE_4__.Voice({ + num_beats: 4, + beat_value: 4, + resolution: _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.RESOLUTION, + }).setStrict(false); + this.voice.addTickables(this.subNotes); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.NoteSubGroup; + } + // Arrange groups inside a `ModifierContext` + static format(groups, state) { + if (!groups || groups.length === 0) + return false; + let width = 0; + for (let i = 0; i < groups.length; ++i) { + const group = groups[i]; + group.preFormat(); + width += group.getWidth(); + } + state.left_shift += width; + return true; + } + preFormat() { + if (this.preFormatted) + return; + this.formatter.joinVoices([this.voice]).format([this.voice], 0); + this.setWidth(this.formatter.getMinTotalWidth()); + this.preFormatted = true; + } + setWidth(width) { + this.width = width; + return this; + } + getWidth() { + return this.width; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + this.alignSubNotesWithNote(this.subNotes, note); // Modifier function + this.subNotes.forEach((subNote) => subNote.setContext(ctx).drawWithStyle()); + } +} + + +/***/ }), + +/***/ "./src/ornament.ts": +/*!*************************!*\ + !*** ./src/ornament.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Ornament": () => (/* binding */ Ornament) +/* harmony export */ }); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _tickcontext__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tickcontext */ "./src/tickcontext.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Cyril Silverman +// MIT License + + + + + + + +// eslint-disable-next-line +function L(...args) { + if (Ornament.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_6__.log)('Vex.Flow.Ornament', args); +} +/** + * Ornament implements ornaments as modifiers that can be + * attached to notes. The complete list of ornaments is available in + * `tables.ts` under `Vex.Flow.ornamentCodes`. + * + * See `tests/ornament_tests.ts` for usage examples. + */ +class Ornament extends _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier { + /** + * Create a new ornament of type `type`, which is an entry in + * `Vex.Flow.ornamentCodes` in `tables.ts`. + */ + constructor(type) { + super(); + this.type = type; + this.delayed = false; + this.render_options = { + font_scale: 38, + accidentalLowerPadding: 3, + accidentalUpperPadding: 3, + }; + this.ornament = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.ornamentCodes(this.type); + // new ornaments have their origin at the origin, and have more specific + // metrics. Legacy ornaments do some + // x scaling, and have hard-coded metrics + const metrics = this.getMetrics(); + // some jazz ornaments are above or below depending on stem direction. + this.adjustForStemDirection = false; + // some jazz ornaments like falls are supposed to overlap with future bars + // and so we report a different width than they actually take up. + this.reportedWidth = metrics && metrics.reportedWidth ? metrics.reportedWidth : 0; + this.stemUpYOffset = metrics && metrics.stemUpYOffset ? metrics.stemUpYOffset : 0; + this.ornamentAlignWithNoteHead = Ornament.ornamentAlignWithNoteHead.indexOf(this.type) >= 0; + if (!this.ornament) { + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('ArgumentError', `Ornament not found: '${this.type}'`); + } + this.x_shift = metrics ? metrics.xOffset : 0; + this.y_shift = metrics ? metrics.yOffset : 0; + this.glyph = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph(this.ornament.code, this.render_options.font_scale, { + category: `ornament.${this.ornament.code}`, + }); + // Is this a jazz ornament that goes between this note and the next note. + if (Ornament.ornamentNoteTransition.indexOf(this.type) >= 0) { + this.delayed = true; + } + // Legacy ornaments need this. I don't know why, but horizontal spacing issues + // happen if I don't set it. + if (!metrics) { + this.glyph.setOrigin(0.5, 1.0); // FIXME: SMuFL won't require a vertical origin shift + } + } + /** Ornaments category string. */ + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_5__.Category.Ornament; + } + static get minPadding() { + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont(); + return musicFont.lookupMetric('glyphs.noteHead.minPadding'); + } + /** Arrange ornaments inside `ModifierContext` */ + static format(ornaments, state) { + if (!ornaments || ornaments.length === 0) + return false; + let width = 0; // width is used by ornaments, which are always centered on the note head + let right_shift = state.right_shift; // jazz ornaments calculate r/l shift separately + let left_shift = state.left_shift; + let yOffset = 0; + for (let i = 0; i < ornaments.length; ++i) { + const ornament = ornaments[i]; + const increment = 2; + if (Ornament.ornamentRelease.indexOf(ornament.type) >= 0) { + ornament.x_shift += right_shift + 2; + } + if (Ornament.ornamentAttack.indexOf(ornament.type) >= 0) { + ornament.x_shift -= left_shift + 2; + } + if (ornament.reportedWidth && ornament.x_shift < 0) { + left_shift += ornament.reportedWidth; + } + else if (ornament.reportedWidth && ornament.x_shift >= 0) { + right_shift += ornament.reportedWidth + Ornament.minPadding; + } + else { + width = Math.max(ornament.getWidth(), width); + } + // articulations above/below the line can be stacked. + if (Ornament.ornamentArticulation.indexOf(ornament.type) >= 0) { + // Unfortunately we don't know the stem direction. So we base it + // on the line number, but also allow it to be overridden. + const ornamentNote = (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(ornament.note, 'NoAttachedNote'); + if (ornamentNote.getLineNumber() >= 3 || ornament.getPosition() === _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.ABOVE) { + state.top_text_line += increment; + ornament.y_shift += yOffset; + yOffset -= ornament.glyph.bbox.getH(); + } + else { + state.text_line += increment; + ornament.y_shift += yOffset; + yOffset += ornament.glyph.bbox.getH(); + } + } + else { + if (ornament.getPosition() === _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.ABOVE) { + ornament.setTextLine(state.top_text_line); + state.top_text_line += increment; + } + else { + ornament.setTextLine(state.text_line); + state.text_line += increment; + } + } + } + // Note: 'legit' ornaments don't consider other modifiers when calculating their + // X position, but jazz ornaments sometimes need to. + state.left_shift = left_shift + width / 2; + state.right_shift = right_shift + width / 2; + return true; + } + /** + * ornamentNoteTransition means the jazz ornament represents an effect from one note to another, + * these are generally on the top of the staff. + */ + static get ornamentNoteTransition() { + return ['flip', 'jazzTurn', 'smear']; + } + /** + * ornamentAttack indicates something that happens in the attach, placed before the note and + * any accidentals + */ + static get ornamentAttack() { + return ['scoop']; + } + /** + * The ornament is aligned based on the note head, but without regard to whether the + * stem goes up or down. + */ + static get ornamentAlignWithNoteHead() { + return ['doit', 'fall', 'fallLong', 'doitLong', 'bend', 'plungerClosed', 'plungerOpen', 'scoop']; + } + /** + * An ornament that happens on the release of the note, generally placed after the + * note and overlapping the next beat/measure.. + */ + static get ornamentRelease() { + return ['doit', 'fall', 'fallLong', 'doitLong', 'jazzTurn', 'smear', 'flip']; + } + /** ornamentArticulation goes above/below the note based on space availablity */ + static get ornamentArticulation() { + return ['bend', 'plungerClosed', 'plungerOpen']; + } + /** + * Legacy ornaments have hard-coded metrics. If additional ornament types are + * added, get their metrics here. + */ + // eslint-disable-next-line + getMetrics() { + return _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().getMetrics().glyphs.jazzOrnaments[this.ornament.code]; + } + /** Set whether the ornament is to be delayed. */ + setDelayed(delayed) { + this.delayed = delayed; + return this; + } + /** Set the upper accidental for the ornament. */ + setUpperAccidental(accid) { + const scale = this.render_options.font_scale / 1.3; + this.accidentalUpper = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph(_tables__WEBPACK_IMPORTED_MODULE_3__.Tables.accidentalCodes(accid).code, scale); + this.accidentalUpper.setOrigin(0.5, 1.0); + return this; + } + /** Set the lower accidental for the ornament. */ + setLowerAccidental(accid) { + const scale = this.render_options.font_scale / 1.3; + this.accidentalLower = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph(_tables__WEBPACK_IMPORTED_MODULE_3__.Tables.accidentalCodes(accid).code, scale); + this.accidentalLower.setOrigin(0.5, 1.0); + return this; + } + /** Render ornament in position next to note. */ + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const stemDir = note.getStemDirection(); + const stave = note.checkStave(); + ctx.openGroup('ornament', this.getAttribute('id')); + // Get stem extents + const stemExtents = note.checkStem().getExtents(); + let y = stemDir === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN ? stemExtents.baseY : stemExtents.topY; + // TabNotes don't have stems attached to them. Tab stems are rendered outside the stave. + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isTabNote)(note)) { + if (note.hasStem()) { + if (stemDir === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN) { + y = stave.getYForTopText(this.text_line); + } + } + else { + // Without a stem + y = stave.getYForTopText(this.text_line); + } + } + const isPlacedOnNoteheadSide = stemDir === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN; + const spacing = stave.getSpacingBetweenLines(); + let lineSpacing = 1; + // Beamed stems are longer than quarter note stems, adjust accordingly + if (!isPlacedOnNoteheadSide && note.hasBeam()) { + lineSpacing += 0.5; + } + const totalSpacing = spacing * (this.text_line + lineSpacing); + const glyphYBetweenLines = y - totalSpacing; + // Get initial coordinates for the modifier position + const start = note.getModifierStartXY(this.position, this.index); + let glyphX = start.x; + // If the ornament is aligned with the note head, don't consider the stave y + // but use the 'natural' modifier y + let glyphY = this.ornamentAlignWithNoteHead + ? start.y + : Math.min(stave.getYForTopText(this.text_line), glyphYBetweenLines); + glyphY += this.y_shift; + // Ajdust x position if ornament is delayed + if (this.delayed) { + let delayXShift = 0; + const startX = glyphX - (stave.getX() - 10); + if (this.delayXShift !== undefined) { + delayXShift = this.delayXShift; + } + else { + delayXShift += this.glyph.getMetrics().width / 2; + const nextContext = _tickcontext__WEBPACK_IMPORTED_MODULE_4__.TickContext.getNextContext(note.getTickContext()); + if (nextContext) { + delayXShift += (nextContext.getX() - startX) * 0.5; + } + else { + delayXShift += (stave.getX() + stave.getWidth() - startX) * 0.5; + } + this.delayXShift = delayXShift; + } + glyphX += delayXShift; + } + L('Rendering ornament: ', this.ornament, glyphX, glyphY); + if (this.accidentalLower) { + this.accidentalLower.render(ctx, glyphX, glyphY); + glyphY -= this.accidentalLower.getMetrics().height; + glyphY -= this.render_options.accidentalLowerPadding; + } + if (this.stemUpYOffset && note.hasStem() && note.getStemDirection() === 1) { + glyphY += this.stemUpYOffset; + } + if (note.getLineNumber() < 5 && Ornament.ornamentNoteTransition.indexOf(this.type) >= 0) { + glyphY = note.checkStave().getBoundingBox().getY() + 40; + } + this.glyph.render(ctx, glyphX + this.x_shift, glyphY); + if (this.accidentalUpper) { + glyphY -= this.glyph.getMetrics().height + this.render_options.accidentalUpperPadding; + this.accidentalUpper.render(ctx, glyphX, glyphY); + } + ctx.closeGroup(); + } +} +/** To enable logging for this class. Set `Vex.Flow.Ornament.DEBUG` to `true`. */ +Ornament.DEBUG = false; + + +/***/ }), + +/***/ "./src/parenthesis.ts": +/*!****************************!*\ + !*** ./src/parenthesis.ts ***! + \****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Parenthesis": () => (/* binding */ Parenthesis) +/* harmony export */ }); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Rodrigo Vilar +// MIT License + + + + +/** Parenthesis implements parenthesis modifiers for notes. */ +class Parenthesis extends _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier { + /** + * Constructor + * + * @param position Modifier.Position.LEFT (default) or Modifier.Position.RIGHT + */ + constructor(position) { + super(); + this.position = position !== null && position !== void 0 ? position : _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.LEFT; + this.point = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont().lookupMetric('parenthesis.default.point'); + this.setWidth(_tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont().lookupMetric('parenthesis.default.width')); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.Parenthesis; + } + /** Add parentheses to the notes. */ + static buildAndAttach(notes) { + for (const note of notes) { + for (let i = 0; i < note.keys.length; i++) { + note.addModifier(new Parenthesis(_modifier__WEBPACK_IMPORTED_MODULE_1__.ModifierPosition.LEFT), i); + note.addModifier(new Parenthesis(_modifier__WEBPACK_IMPORTED_MODULE_1__.ModifierPosition.RIGHT), i); + } + } + } + /** Arrange parentheses inside a ModifierContext. */ + static format(parentheses, state) { + if (!parentheses || parentheses.length === 0) + return false; + let x_widthL = 0; + let x_widthR = 0; + for (let i = 0; i < parentheses.length; ++i) { + const parenthesis = parentheses[i]; + const note = parenthesis.getNote(); + const pos = parenthesis.getPosition(); + const index = parenthesis.checkIndex(); + let shift = 0; + if (pos === _modifier__WEBPACK_IMPORTED_MODULE_1__.ModifierPosition.RIGHT) { + shift = note.getRightParenthesisPx(index); + x_widthR = x_widthR > shift + parenthesis.width ? x_widthR : shift + parenthesis.width; + } + if (pos === _modifier__WEBPACK_IMPORTED_MODULE_1__.ModifierPosition.LEFT) { + shift = note.getLeftParenthesisPx(index); + x_widthL = x_widthL > shift + parenthesis.width ? x_widthL : shift + parenthesis.width; + } + parenthesis.setXShift(shift); + } + state.left_shift += x_widthL; + state.right_shift += x_widthR; + return true; + } + /** Set the associated note. */ + setNote(note) { + this.note = note; + this.point = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont().lookupMetric('parenthesis.default.point'); + this.setWidth(_tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont().lookupMetric('parenthesis.default.width')); + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_3__.isGraceNote)(note)) { + this.point = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont().lookupMetric('parenthesis.gracenote.point'); + this.setWidth(_tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont().lookupMetric('parenthesis.gracenote.width')); + } + return this; + } + /** Render the parenthesis. */ + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const start = note.getModifierStartXY(this.position, this.index, { forceFlagRight: true }); + const x = start.x + this.x_shift; + const y = start.y + this.y_shift; + if (this.position == _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.RIGHT) { + _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph.renderGlyph(ctx, x + 1, y, this.point, 'noteheadParenthesisRight', { + category: `noteHead.standard.noteheadParenthesisRight`, + }); + } + else if (this.position == _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.LEFT) { + _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph.renderGlyph(ctx, x - 2, y, this.point, 'noteheadParenthesisLeft', { + category: `noteHead.standard.noteheadParenthesisLeft`, + }); + } + } +} + + +/***/ }), + +/***/ "./src/parser.ts": +/*!***********************!*\ + !*** ./src/parser.ts ***! + \***********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Parser": () => (/* binding */ Parser) +/* harmony export */ }); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// A generic text parsing class for VexFlow. + +// To enable logging for this class. Set `Vex.Flow.Parser.DEBUG` to `true`. +// eslint-disable-next-line +function L(...args) { + if (Parser.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_0__.log)('Vex.Flow.Parser', args); +} +const NO_ERROR_POS = -1; +// Converts parser results into an easy to reference list that can be +// used in triggers. This function returns: +// - nested array in which the leaf elements are string or null +// - string (including empty strings) +// - null +function flattenMatches(r) { + if ('matchedString' in r) + return r.matchedString; // string + if ('results' in r) + return flattenMatches(r.results); + const results = r; + if (results.length === 1) + return flattenMatches(results[0]); + if (results.length === 0) + return null; + return results.map(flattenMatches); // nested array +} +// This is the base parser class. Given an arbitrary context-free grammar, it +// can parse any line and execute code when specific rules are met (e.g., +// when a string is terminated.) +class Parser { + // For an example of a simple grammar, take a look at tests/parser_tests.ts or + // the EasyScore grammar in easyscore.ts. + constructor(grammar) { + this.grammar = grammar; + this.line = ''; + this.pos = 0; + this.errorPos = NO_ERROR_POS; + } + // Parse `line` using current grammar. Returns `{success: true}` if the + // line parsed correctly, otherwise returns `{success: false, errorPos: N}` + // where `errorPos` is the location of the error in the string. + parse(line) { + this.line = line; + this.pos = 0; + this.errorPos = NO_ERROR_POS; + const result = this.expect(this.grammar.begin()); + result.errorPos = this.errorPos; + return result; + } + matchFail(returnPos) { + if (this.errorPos === NO_ERROR_POS) + this.errorPos = this.pos; + this.pos = returnPos; + } + matchSuccess() { + this.errorPos = NO_ERROR_POS; + } + // Look for `token` in this.line[this.pos], and return success + // if one is found. `token` is specified as a regular expression. + matchToken(token, noSpace = false) { + const regexp = noSpace ? new RegExp('^((' + token + '))') : new RegExp('^((' + token + ')\\s*)'); + const workingLine = this.line.slice(this.pos); + const result = workingLine.match(regexp); + if (result !== null) { + return { + success: true, + matchedString: result[2], + incrementPos: result[1].length, + pos: this.pos, + }; + } + else { + return { success: false, pos: this.pos }; + } + } + // Execute rule to match a sequence of tokens (or rules). If `maybe` is + // set, then return success even if the token is not found, but reset + // the position before exiting. + // TODO: expectOne(...) is never called with the `maybe` parameter. + expectOne(rule, maybe = false) { + const results = []; + const pos = this.pos; + let allMatches = true; + let oneMatch = false; + maybe = maybe === true || rule.maybe === true; + // Execute all sub rules in sequence. + if (rule.expect) { + for (const next of rule.expect) { + const localPos = this.pos; + const result = this.expect(next); + // If `rule.or` is set, then return success if any one + // of the subrules match, else all subrules must match. + if (result.success) { + results.push(result); + oneMatch = true; + if (rule.or) + break; + } + else { + allMatches = false; + if (!rule.or) { + this.pos = localPos; + break; + } + } + } + } + const gotOne = (rule.or && oneMatch) || allMatches; + const success = gotOne || maybe === true; + const numMatches = gotOne ? 1 : 0; + if (maybe && !gotOne) + this.pos = pos; + if (success) { + this.matchSuccess(); + } + else { + this.matchFail(pos); + } + return { success, results, numMatches }; + } + // Try to match multiple (one or more) instances of the rule. If `maybe` is set, + // then a failed match is also a success (but the position is reset). + expectOneOrMore(rule, maybe = false) { + const results = []; + const pos = this.pos; + let numMatches = 0; + let more = true; + do { + const result = this.expectOne(rule); + if (result.success && result.results) { + numMatches++; + results.push(result.results); + } + else { + more = false; + } + } while (more); + const success = numMatches > 0 || maybe === true; + if (maybe && !(numMatches > 0)) + this.pos = pos; + if (success) { + this.matchSuccess(); + } + else { + this.matchFail(pos); + } + return { success, results, numMatches }; + } + // Match zero or more instances of `rule`. Offloads to `expectOneOrMore`. + expectZeroOrMore(rule) { + return this.expectOneOrMore(rule, true); + } + // Execute the rule produced by the provided `rules` function. This + // offloads to one of the above matchers and consolidates the results. It is also + // responsible for executing any code triggered by the rule (in `rule.run`.) + expect(ruleFunc) { + L('Evaluating rule function:', ruleFunc); + if (!ruleFunc) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('Invalid rule function'); + } + let result; + // Get rule from Grammar class. + // expect(...) handles both lexing & parsing: + // - lexer rules produce tokens. + // - parser rules produce expressions which may trigger code via the + // { run: () => ... } trigger functions in easyscore.ts. + // These functions build the VexFlow objects that are displayed on screen. + const rule = ruleFunc.bind(this.grammar)(); + if (rule.token) { + // A lexer rule has a `token` property. + // Base case: parse the regex and throw an error if the + // line doesn't match. + result = this.matchToken(rule.token, rule.noSpace === true); + if (result.success) { + // Token match! Update position and throw away parsed portion + // of string. + this.pos += result.incrementPos; + } + } + else if (rule.expect) { + // A parser rule has an `expect` property. + if (rule.oneOrMore) { + result = this.expectOneOrMore(rule); + } + else if (rule.zeroOrMore) { + result = this.expectZeroOrMore(rule); + } + else { + result = this.expectOne(rule); + } + } + else { + L(rule); + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError('Bad grammar! No `token` or `expect` property ' + rule); + } + // If there's a trigger attached to this rule, then run it. + // Make the matches accessible through `state.matches` in the + // `run: (state) => ...` trigger. + const matches = []; + result.matches = matches; + if (result.results) { + result.results.forEach((r) => matches.push(flattenMatches(r))); + } + if (rule.run && result.success) { + rule.run({ matches }); + } + return result; + } +} +Parser.DEBUG = false; + + +/***/ }), + +/***/ "./src/pedalmarking.ts": +/*!*****************************!*\ + !*** ./src/pedalmarking.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "PedalMarking": () => (/* binding */ PedalMarking) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + +// eslint-disable-next-line +function L(...args) { + if (PedalMarking.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_5__.log)('Vex.Flow.PedalMarking', args); +} +/** + * Draws a pedal glyph with the provided `name` on a rendering `context` + * at the coordinates `x` and `y. Takes into account the glyph data + * coordinate shifts. + */ +function drawPedalGlyph(name, context, x, y, point) { + const glyph_data = PedalMarking.GLYPHS[name]; + const glyph = new _glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph(glyph_data.code, point, { category: 'pedalMarking' }); + glyph.render(context, x + glyph_data.x_shift, y + glyph_data.y_shift); +} +/** + * PedalMarking implements different types of pedal markings. These notation + * elements indicate to the performer when to depress and release the a pedal. + * + * In order to create "Sostenuto", and "una corda" markings, you must set + * custom text for the release/depress pedal markings. + */ +class PedalMarking extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + constructor(notes) { + super(); + this.notes = notes; + this.type = PedalMarking.type.TEXT; + this.line = 0; + // Custom text for the release/depress markings + this.custom_depress_text = ''; + this.custom_release_text = ''; + this.resetFont(); + this.render_options = { + bracket_height: 10, + text_margin_right: 6, + bracket_line_width: 1, + color: 'black', + }; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_4__.Category.PedalMarking; + } + /** + * Create a sustain pedal marking. Returns the defaults PedalMarking. + * Which uses the traditional "Ped" and "*"" markings. + */ + static createSustain(notes) { + const pedal = new PedalMarking(notes); + return pedal; + } + /** Create a sostenuto pedal marking */ + static createSostenuto(notes) { + const pedal = new PedalMarking(notes); + pedal.setType(PedalMarking.type.MIXED); + pedal.setCustomText('Sost. Ped.'); + return pedal; + } + /** Create an una corda pedal marking */ + static createUnaCorda(notes) { + const pedal = new PedalMarking(notes); + pedal.setType(PedalMarking.type.TEXT); + pedal.setCustomText('una corda', 'tre corda'); + return pedal; + } + /** Set pedal type. */ + setType(type) { + type = typeof type === 'string' ? PedalMarking.typeString[type] : type; + if (type >= PedalMarking.type.TEXT && type <= PedalMarking.type.MIXED) { + this.type = type; + } + return this; + } + /** + * Set custom text for the `depress`/`release` pedal markings. No text is + * set if the parameter is falsy. + */ + setCustomText(depress, release) { + this.custom_depress_text = depress || ''; + this.custom_release_text = release || ''; + return this; + } + /** Set the staff line to render the markings on. */ + setLine(line) { + this.line = line; + return this; + } + /** Draw the bracket based pedal markings. */ + drawBracketed() { + const ctx = this.checkContext(); + let is_pedal_depressed = false; + let prev_x; + let prev_y; + // Iterate through each note + this.notes.forEach((note, index, notes) => { + // Each note triggers the opposite pedal action + is_pedal_depressed = !is_pedal_depressed; + // Get the initial coordinates for the note + const x = note.getAbsoluteX(); + const y = note.checkStave().getYForBottomText(this.line + 3); + // Throw if current note is positioned before the previous note + if (x < prev_x) { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('InvalidConfiguration', 'The notes provided must be in order of ascending x positions'); + } + // Determine if the previous or next note are the same + // as the current note. We need to keep track of this for + // when adjustments are made for the release+depress action + const next_is_same = notes[index + 1] === note; + const prev_is_same = notes[index - 1] === note; + let x_shift = 0; + const point = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric(`pedalMarking.${is_pedal_depressed ? 'down' : 'up'}.point`); + if (is_pedal_depressed) { + // Adjustment for release+depress + x_shift = prev_is_same ? 5 : 0; + if (this.type === PedalMarking.type.MIXED && !prev_is_same) { + // For MIXED style, start with text instead of bracket + if (this.custom_depress_text) { + // If we have custom text, use instead of the default "Ped" glyph + const text_width = ctx.measureText(this.custom_depress_text).width; + ctx.fillText(this.custom_depress_text, x - text_width / 2, y); + x_shift = text_width / 2 + this.render_options.text_margin_right; + } + else { + // Render the Ped glyph in position + drawPedalGlyph('pedal_depress', ctx, x, y, point); + x_shift = 20 + this.render_options.text_margin_right; + } + } + else { + // Draw start bracket + ctx.beginPath(); + ctx.moveTo(x, y - this.render_options.bracket_height); + ctx.lineTo(x + x_shift, y); + ctx.stroke(); + ctx.closePath(); + } + } + else { + // Adjustment for release+depress + x_shift = next_is_same ? -5 : 0; + // Draw end bracket + ctx.beginPath(); + ctx.moveTo(prev_x, prev_y); + ctx.lineTo(x + x_shift, y); + ctx.lineTo(x, y - this.render_options.bracket_height); + ctx.stroke(); + ctx.closePath(); + } + // Store previous coordinates + prev_x = x + x_shift; + prev_y = y; + }); + } + /** + * Draw the text based pedal markings. This defaults to the traditional + * "Ped" and "*"" symbols if no custom text has been provided. + */ + drawText() { + const ctx = this.checkContext(); + let is_pedal_depressed = false; + // Iterate through each note, placing glyphs or custom text accordingly + this.notes.forEach((note) => { + is_pedal_depressed = !is_pedal_depressed; + const stave = note.checkStave(); + const x = note.getAbsoluteX(); + const y = stave.getYForBottomText(this.line + 3); + const point = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric(`pedalMarking.${is_pedal_depressed ? 'down' : 'up'}.point`); + let text_width = 0; + if (is_pedal_depressed) { + if (this.custom_depress_text) { + text_width = ctx.measureText(this.custom_depress_text).width; + ctx.fillText(this.custom_depress_text, x - text_width / 2, y); + } + else { + drawPedalGlyph('pedal_depress', ctx, x, y, point); + } + } + else { + if (this.custom_release_text) { + text_width = ctx.measureText(this.custom_release_text).width; + ctx.fillText(this.custom_release_text, x - text_width / 2, y); + } + else { + drawPedalGlyph('pedal_release', ctx, x, y, point); + } + } + }); + } + /** Render the pedal marking in position on the rendering context. */ + draw() { + const ctx = this.checkContext(); + this.setRendered(); + ctx.save(); + ctx.setStrokeStyle(this.render_options.color); + ctx.setFillStyle(this.render_options.color); + ctx.setFont(this.textFont); + L('Rendering Pedal Marking'); + if (this.type === PedalMarking.type.BRACKET || this.type === PedalMarking.type.MIXED) { + ctx.setLineWidth(this.render_options.bracket_line_width); + this.drawBracketed(); + } + else if (this.type === PedalMarking.type.TEXT) { + this.drawText(); + } + ctx.restore(); + } +} +/** To enable logging for this class. Set `Vex.Flow.PedalMarking.DEBUG` to `true`. */ +PedalMarking.DEBUG = false; +PedalMarking.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_1__.Font.SERIF, + size: 12, + weight: _font__WEBPACK_IMPORTED_MODULE_1__.FontWeight.BOLD, + style: _font__WEBPACK_IMPORTED_MODULE_1__.FontStyle.ITALIC, +}; +/** Glyph data */ +PedalMarking.GLYPHS = { + pedal_depress: { + code: 'keyboardPedalPed', + x_shift: -10, + y_shift: 0, + }, + pedal_release: { + code: 'keyboardPedalUp', + x_shift: -2, + y_shift: 3, + }, +}; +/** Pedal type as number. */ +PedalMarking.type = { + TEXT: 1, + BRACKET: 2, + MIXED: 3, +}; +/** Pedal type as string. */ +PedalMarking.typeString = { + text: PedalMarking.type.TEXT, + bracket: PedalMarking.type.BRACKET, + mixed: PedalMarking.type.MIXED, +}; + + +/***/ }), + +/***/ "./src/registry.ts": +/*!*************************!*\ + !*** ./src/registry.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Registry": () => (/* binding */ Registry) +/* harmony export */ }); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// @author Mohit Cheppudira +// +// ## Description +// +// This file implements a registry for VexFlow elements. It allows users +// to track, query, and manage some subset of generated elements, and +// dynamically get and set attributes. +// +// There are two ways to register with a registry: +// +// 1) Explicitly call `registry.register(elem:Element, id?:string)`, or, +// 2) Call `Registry.enableDefaultRegistry(registry)` when ready, and all future +// elements will automatically register with it. +// +// Once an element is registered, selected attributes are tracked and indexed by +// the registry. This allows fast look up of elements by attributes like id, type, +// and class. + +// Indexes are represented as maps of maps of maps. This allows +// for both multi-labeling (e.g., an element can have multiple classes) +// and efficient lookup. +class Index { + constructor() { + this.id = {}; + this.type = {}; + this.class = {}; + } +} +class Registry { + constructor() { + this.index = new Index(); + } + static getDefaultRegistry() { + return Registry.defaultRegistry; + } + // If you call `enableDefaultRegistry`, any new elements will auto-register with + // the provided registry as soon as they're constructed. + static enableDefaultRegistry(registry) { + Registry.defaultRegistry = registry; + } + static disableDefaultRegistry() { + Registry.defaultRegistry = undefined; + } + clear() { + this.index = new Index(); + return this; + } + setIndexValue(name, value, id, elem) { + const index = this.index; + if (!index[name][value]) { + index[name][value] = {}; + } + index[name][value][id] = elem; + } + // Updates the indexes for element 'id'. If an element's attribute changes + // from A -> B, make sure to remove the element from A. + updateIndex({ id, name, value, oldValue }) { + const elem = this.getElementById(id); + if (oldValue !== undefined && this.index[name][oldValue]) { + delete this.index[name][oldValue][id]; + } + if (value && elem) { + this.setIndexValue(name, value, elem.getAttribute('id'), elem); + } + } + /** + * Register element `elem` with this registry. + * This adds the element to its index and watches it for attribute changes. + * @param elem + * @param id + * @returns this + */ + register(elem, id) { + id = id || elem.getAttribute('id'); + if (!id) { + throw new _util__WEBPACK_IMPORTED_MODULE_0__.RuntimeError("Can't add element without `id` attribute to registry"); + } + // Manually add id to index, then update other indexes. + elem.setAttribute('id', id); + this.setIndexValue('id', id, id, elem); + this.updateIndex({ id, name: 'type', value: elem.getAttribute('type'), oldValue: undefined }); + elem.onRegister(this); + return this; + } + getElementById(id) { + var _a, _b; + return (_b = (_a = this.index.id) === null || _a === void 0 ? void 0 : _a[id]) === null || _b === void 0 ? void 0 : _b[id]; // return undefined if the id is not found. + } + getElementsByAttribute(attribute, value) { + const index_attr = this.index[attribute]; + if (index_attr) { + const index_attr_val = index_attr[value]; + if (index_attr_val) { + const keys = Object.keys(index_attr_val); + return keys.map((k) => index_attr_val[k]); + } + } + return []; + } + getElementsByType(type) { + return this.getElementsByAttribute('type', type); + } + getElementsByClass(className) { + return this.getElementsByAttribute('class', className); + } + // This is called by the element when an attribute value changes. If an indexed + // attribute changes, then update the local index. + onUpdate(info) { + const allowedNames = ['id', 'type', 'class']; + if (allowedNames.includes(info.name)) { + this.updateIndex(info); + } + return this; + } +} + + +/***/ }), + +/***/ "./src/rendercontext.ts": +/*!******************************!*\ + !*** ./src/rendercontext.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "RenderContext": () => (/* binding */ RenderContext), +/* harmony export */ "drawDot": () => (/* binding */ drawDot) +/* harmony export */ }); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2021. +// MIT License + +class RenderContext { + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_0__.Category.RenderContext; + } + set font(f) { + this.setFont(f); + } + get font() { + return this.getFont(); + } + /** + * This is kept for backwards compatibility with 3.0.9. + * @deprecated use `setFont(...)` instead since it now supports CSS font shorthand. + */ + setRawFont(f) { + this.setFont(f); + return this; + } +} +/** + * Draw a tiny dot marker on the specified context. A great debugging aid. + * @param ctx context + * @param x dot x coordinate + * @param y dot y coordinate + * @param color + */ +function drawDot(ctx, x, y, color = '#F55') { + ctx.save(); + ctx.setFillStyle(color); + // draw a circle + ctx.beginPath(); + ctx.arc(x, y, 3, 0, Math.PI * 2, false); + ctx.closePath(); + ctx.fill(); + ctx.restore(); +} + + +/***/ }), + +/***/ "./src/renderer.ts": +/*!*************************!*\ + !*** ./src/renderer.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "RendererBackends": () => (/* binding */ RendererBackends), +/* harmony export */ "RendererLineEndType": () => (/* binding */ RendererLineEndType), +/* harmony export */ "Renderer": () => (/* binding */ Renderer) +/* harmony export */ }); +/* harmony import */ var _canvascontext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./canvascontext */ "./src/canvascontext.ts"); +/* harmony import */ var _svgcontext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./svgcontext */ "./src/svgcontext.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +/* harmony import */ var _web__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./web */ "./src/web.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + +var RendererBackends; +(function (RendererBackends) { + RendererBackends[RendererBackends["CANVAS"] = 1] = "CANVAS"; + RendererBackends[RendererBackends["SVG"] = 2] = "SVG"; +})(RendererBackends || (RendererBackends = {})); +// End of line types +var RendererLineEndType; +(function (RendererLineEndType) { + RendererLineEndType[RendererLineEndType["NONE"] = 1] = "NONE"; + RendererLineEndType[RendererLineEndType["UP"] = 2] = "UP"; + RendererLineEndType[RendererLineEndType["DOWN"] = 3] = "DOWN"; +})(RendererLineEndType || (RendererLineEndType = {})); +/** + * Support Canvas & SVG rendering contexts. + */ +class Renderer { + constructor(arg0, arg1) { + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_2__.isRenderContext)(arg0)) { + // The user has provided what looks like a RenderContext, let's just use it. + this.ctx = arg0; + } + else { + if (arg1 === undefined) { + // The backend must be specified if the render context isn't directly provided. + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('InvalidArgument', 'Missing backend argument'); + } + const backend = arg1; + let element; + if (typeof arg0 == 'string') { + const maybeElement = document.getElementById(arg0); + if (!maybeElement) { + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('BadElementId', `Can't find element with ID "${maybeElement}"`); + } + element = maybeElement; + } + else { + element = arg0; + } + // Verify backend and create context + if (backend === Renderer.Backends.CANVAS) { + if (!(0,_web__WEBPACK_IMPORTED_MODULE_4__.isHTMLCanvas)(element)) { + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('BadElement', 'CANVAS context requires an HTMLCanvasElement.'); + } + const context = element.getContext('2d'); + if (!context) { + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('BadElement', "Can't get canvas context"); + } + this.ctx = new _canvascontext__WEBPACK_IMPORTED_MODULE_0__.CanvasContext(context); + } + else if (backend === Renderer.Backends.SVG) { + if (!(0,_web__WEBPACK_IMPORTED_MODULE_4__.isHTMLDiv)(element)) { + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('BadElement', 'SVG context requires an HTMLDivElement.'); + } + this.ctx = new _svgcontext__WEBPACK_IMPORTED_MODULE_1__.SVGContext(element); + } + else { + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('InvalidBackend', `No support for backend: ${backend}`); + } + } + } + static buildContext(elementId, backend, width, height, background = '#FFF') { + const renderer = new Renderer(elementId, backend); + if (width && height) { + renderer.resize(width, height); + } + const ctx = renderer.getContext(); + ctx.setBackgroundFillStyle(background); + Renderer.lastContext = ctx; + return ctx; + } + static getCanvasContext(elementId, width, height, background) { + return Renderer.buildContext(elementId, Renderer.Backends.CANVAS, width, height, background); + } + static getSVGContext(elementId, width, height, background) { + return Renderer.buildContext(elementId, Renderer.Backends.SVG, width, height, background); + } + // Draw a dashed line (horizontal, vertical or diagonal + // dashPattern = [3,3] draws a 3 pixel dash followed by a three pixel space. + // setting the second number to 0 draws a solid line. + static drawDashedLine(context, fromX, fromY, toX, toY, dashPattern) { + context.beginPath(); + const dx = toX - fromX; + const dy = toY - fromY; + const angle = Math.atan2(dy, dx); + let x = fromX; + let y = fromY; + context.moveTo(fromX, fromY); + let idx = 0; + let draw = true; + while (!((dx < 0 ? x <= toX : x >= toX) && (dy < 0 ? y <= toY : y >= toY))) { + const dashLength = dashPattern[idx++ % dashPattern.length]; + const nx = x + Math.cos(angle) * dashLength; + x = dx < 0 ? Math.max(toX, nx) : Math.min(toX, nx); + const ny = y + Math.sin(angle) * dashLength; + y = dy < 0 ? Math.max(toY, ny) : Math.min(toY, ny); + if (draw) { + context.lineTo(x, y); + } + else { + context.moveTo(x, y); + } + draw = !draw; + } + context.closePath(); + context.stroke(); + } + resize(width, height) { + this.ctx.resize(width, height); + return this; + } + getContext() { + return this.ctx; + } +} +Renderer.Backends = RendererBackends; +Renderer.LineEndType = RendererLineEndType; +// Used by vexflow_test_helpers.ts +// Should this be private? +// Can we do this in a cleaner way? +Renderer.lastContext = undefined; + + +/***/ }), + +/***/ "./src/repeatnote.ts": +/*!***************************!*\ + !*** ./src/repeatnote.ts ***! + \***************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "RepeatNote": () => (/* binding */ RepeatNote) +/* harmony export */ }); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _glyphnote__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyphnote */ "./src/glyphnote.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. + + + + +// Map `type` to SMuFL glyph code. +const CODES = { + '1': 'repeat1Bar', + '2': 'repeat2Bars', + '4': 'repeat4Bars', + slash: 'repeatBarSlash', +}; +class RepeatNote extends _glyphnote__WEBPACK_IMPORTED_MODULE_1__.GlyphNote { + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.RepeatNote; + } + constructor(type, noteStruct, options) { + super(undefined, Object.assign({ duration: 'q', align_center: type !== 'slash' }, noteStruct), options); + const glyphCode = CODES[type] || 'repeat1Bar'; + const glyph = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph(glyphCode, _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont().lookupMetric('repeatNote.point', 40), { + category: 'repeatNote', + }); + this.setGlyph(glyph); + } +} + + +/***/ }), + +/***/ "./src/stave.ts": +/*!**********************!*\ + !*** ./src/stave.ts ***! + \**********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Stave": () => (/* binding */ Stave) +/* harmony export */ }); +/* harmony import */ var _boundingbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./boundingbox */ "./src/boundingbox.ts"); +/* harmony import */ var _clef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./clef */ "./src/clef.ts"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _keysignature__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./keysignature */ "./src/keysignature.ts"); +/* harmony import */ var _stavebarline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./stavebarline */ "./src/stavebarline.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _staverepetition__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./staverepetition */ "./src/staverepetition.ts"); +/* harmony import */ var _stavesection__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./stavesection */ "./src/stavesection.ts"); +/* harmony import */ var _stavetempo__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./stavetempo */ "./src/stavetempo.ts"); +/* harmony import */ var _stavetext__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./stavetext */ "./src/stavetext.ts"); +/* harmony import */ var _stavevolta__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./stavevolta */ "./src/stavevolta.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _timesignature__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./timesignature */ "./src/timesignature.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + + + + + + + + + + + +// Used by Stave.format() to sort the modifiers at the beginning and end of a stave. +// The keys (computed property names) match the CATEGORY property in the +// Barline, Clef, KeySignature, TimeSignature classes. +const SORT_ORDER_BEG_MODIFIERS = { + [_stavebarline__WEBPACK_IMPORTED_MODULE_5__.Barline.CATEGORY]: 0, + [_clef__WEBPACK_IMPORTED_MODULE_1__.Clef.CATEGORY]: 1, + [_keysignature__WEBPACK_IMPORTED_MODULE_4__.KeySignature.CATEGORY]: 2, + [_timesignature__WEBPACK_IMPORTED_MODULE_13__.TimeSignature.CATEGORY]: 3, +}; +const SORT_ORDER_END_MODIFIERS = { + [_timesignature__WEBPACK_IMPORTED_MODULE_13__.TimeSignature.CATEGORY]: 0, + [_keysignature__WEBPACK_IMPORTED_MODULE_4__.KeySignature.CATEGORY]: 1, + [_stavebarline__WEBPACK_IMPORTED_MODULE_5__.Barline.CATEGORY]: 2, + [_clef__WEBPACK_IMPORTED_MODULE_1__.Clef.CATEGORY]: 3, +}; +class Stave extends _element__WEBPACK_IMPORTED_MODULE_2__.Element { + constructor(x, y, width, options) { + super(); + // Initialized by the constructor via this.resetLines(). + this.height = 0; + this.x = x; + this.y = y; + this.width = width; + this.formatted = false; + this.start_x = x + 5; + this.end_x = x + width; + this.modifiers = []; // stave modifiers (clef, key, time, barlines, coda, segno, etc.) + this.measure = 0; + this.clef = 'treble'; + this.endClef = undefined; + this.resetFont(); + this.options = Object.assign({ vertical_bar_width: 10, num_lines: 5, fill_style: '#999999', left_bar: true, right_bar: true, spacing_between_lines_px: _tables__WEBPACK_IMPORTED_MODULE_12__.Tables.STAVE_LINE_DISTANCE, space_above_staff_ln: 4, space_below_staff_ln: 4, top_text_position: 1, bottom_text_position: 4, line_config: [] }, options); + this.bounds = { x: this.x, y: this.y, w: this.width, h: 0 }; + this.defaultLedgerLineStyle = { strokeStyle: '#444', lineWidth: 1.4 }; + this.resetLines(); + // beg bar + this.addModifier(new _stavebarline__WEBPACK_IMPORTED_MODULE_5__.Barline(this.options.left_bar ? _stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.SINGLE : _stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.NONE)); + // end bar + this.addEndModifier(new _stavebarline__WEBPACK_IMPORTED_MODULE_5__.Barline(this.options.right_bar ? _stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.SINGLE : _stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.NONE)); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Stave; + } + // This is the sum of the padding that normally goes on left + right of a stave during + // drawing. Used to size staves correctly with content width. + static get defaultPadding() { + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_12__.Tables.currentMusicFont(); + return musicFont.lookupMetric('stave.padding') + musicFont.lookupMetric('stave.endPaddingMax'); + } + // Right padding, used by system if startX is already determined. + static get rightPadding() { + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_12__.Tables.currentMusicFont(); + return musicFont.lookupMetric('stave.endPaddingMax'); + } + /** Set default style for ledger lines. */ + setDefaultLedgerLineStyle(style) { + this.defaultLedgerLineStyle = style; + } + /** Get default style for ledger lines. */ + getDefaultLedgerLineStyle() { + return Object.assign(Object.assign({}, this.getStyle()), this.defaultLedgerLineStyle); + } + space(spacing) { + return this.options.spacing_between_lines_px * spacing; + } + resetLines() { + this.options.line_config = []; + for (let i = 0; i < this.options.num_lines; i++) { + this.options.line_config.push({ visible: true }); + } + this.height = (this.options.num_lines + this.options.space_above_staff_ln) * this.options.spacing_between_lines_px; + this.options.bottom_text_position = this.options.num_lines; + } + setNoteStartX(x) { + if (!this.formatted) + this.format(); + this.start_x = x; + return this; + } + getNoteStartX() { + if (!this.formatted) + this.format(); + return this.start_x; + } + getNoteEndX() { + if (!this.formatted) + this.format(); + return this.end_x; + } + getTieStartX() { + return this.start_x; + } + getTieEndX() { + return this.end_x; + } + getX() { + return this.x; + } + getNumLines() { + return this.options.num_lines; + } + setNumLines(n) { + this.options.num_lines = n; + this.resetLines(); + return this; + } + setY(y) { + this.y = y; + return this; + } + getY() { + return this.y; + } + getTopLineTopY() { + return this.getYForLine(0) - _tables__WEBPACK_IMPORTED_MODULE_12__.Tables.STAVE_LINE_THICKNESS / 2; + } + getBottomLineBottomY() { + return this.getYForLine(this.getNumLines() - 1) + _tables__WEBPACK_IMPORTED_MODULE_12__.Tables.STAVE_LINE_THICKNESS / 2; + } + setX(x) { + const shift = x - this.x; + this.formatted = false; + this.x = x; + this.start_x += shift; + this.end_x += shift; + for (let i = 0; i < this.modifiers.length; i++) { + const mod = this.modifiers[i]; + mod.setX(mod.getX() + shift); + } + return this; + } + setWidth(width) { + this.formatted = false; + this.width = width; + this.end_x = this.x + width; + // reset the x position of the end barline (TODO(0xfe): This makes no sense) + // this.modifiers[1].setX(this.end_x); + return this; + } + getWidth() { + return this.width; + } + getStyle() { + return Object.assign({ fillStyle: this.options.fill_style, strokeStyle: this.options.fill_style, lineWidth: _tables__WEBPACK_IMPORTED_MODULE_12__.Tables.STAVE_LINE_THICKNESS }, super.getStyle()); + } + /** + * Set the measure number of this Stave. + */ + setMeasure(measure) { + this.measure = measure; + return this; + } + /** + * Return the measure number of this Stave. + */ + getMeasure() { + return this.measure; + } + /** + * Gets the pixels to shift from the beginning of the stave + * following the modifier at the provided index + * @param {Number} index The index from which to determine the shift + * @return {Number} The amount of pixels shifted + */ + getModifierXShift(index = 0) { + if (typeof index !== 'number') { + throw new _util__WEBPACK_IMPORTED_MODULE_15__.RuntimeError('InvalidIndex', 'Must be of number type'); + } + if (!this.formatted) + this.format(); + if (this.getModifiers(_stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.BEGIN).length === 1) { + return 0; + } + // for right position modifiers zero shift seems correct, see 'Volta + Modifier Measure Test' + if (this.modifiers[index].getPosition() === _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.RIGHT) { + return 0; + } + let start_x = this.start_x - this.x; + const begBarline = this.modifiers[0]; + if (begBarline.getType() === _stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.REPEAT_BEGIN && start_x > begBarline.getWidth()) { + start_x -= begBarline.getWidth(); + } + return start_x; + } + /** Coda & Segno Symbol functions */ + setRepetitionType(type, yShift = 0) { + this.modifiers.push(new _staverepetition__WEBPACK_IMPORTED_MODULE_7__.Repetition(type, this.x, yShift)); + return this; + } + // Volta functions + setVoltaType(type, number_t, y) { + this.modifiers.push(new _stavevolta__WEBPACK_IMPORTED_MODULE_11__.Volta(type, number_t, this.x, y)); + return this; + } + // Section functions + setSection(section, y, xOffset = 0, fontSize, drawRect = true) { + const staveSection = new _stavesection__WEBPACK_IMPORTED_MODULE_8__.StaveSection(section, this.x + xOffset, y, drawRect); + if (fontSize) + staveSection.setFontSize(fontSize); + this.modifiers.push(staveSection); + return this; + } + // Tempo functions + setTempo(tempo, y) { + this.modifiers.push(new _stavetempo__WEBPACK_IMPORTED_MODULE_9__.StaveTempo(tempo, this.x, y)); + return this; + } + // Text functions + setText(text, position, options = {}) { + this.modifiers.push(new _stavetext__WEBPACK_IMPORTED_MODULE_10__.StaveText(text, position, options)); + return this; + } + getHeight() { + return this.height; + } + getSpacingBetweenLines() { + return this.options.spacing_between_lines_px; + } + getBoundingBox() { + return new _boundingbox__WEBPACK_IMPORTED_MODULE_0__.BoundingBox(this.x, this.y, this.width, this.getBottomY() - this.y); + } + getBottomY() { + const options = this.options; + const spacing = options.spacing_between_lines_px; + const score_bottom = this.getYForLine(options.num_lines) + options.space_below_staff_ln * spacing; + return score_bottom; + } + getBottomLineY() { + return this.getYForLine(this.options.num_lines); + } + // This returns + /** @returns the y for the *center* of a staff line */ + getYForLine(line) { + const options = this.options; + const spacing = options.spacing_between_lines_px; + const headroom = options.space_above_staff_ln; + const y = this.y + line * spacing + headroom * spacing; + return y; + } + getLineForY(y) { + // Does the reverse of getYForLine - somewhat dumb and just calls + // getYForLine until the right value is reaches + const options = this.options; + const spacing = options.spacing_between_lines_px; + const headroom = options.space_above_staff_ln; + return (y - this.y) / spacing - headroom; + } + getYForTopText(line = 0) { + return this.getYForLine(-line - this.options.top_text_position); + } + getYForBottomText(line = 0) { + return this.getYForLine(this.options.bottom_text_position + line); + } + getYForNote(line) { + const options = this.options; + const spacing = options.spacing_between_lines_px; + const headroom = options.space_above_staff_ln; + return this.y + headroom * spacing + 5 * spacing - line * spacing; + } + getYForGlyphs() { + return this.getYForLine(3); + } + // This method adds a stave modifier to the stave. Note that the first two + // modifiers (BarLines) are automatically added upon construction. + addModifier(modifier, position) { + if (position !== undefined) { + modifier.setPosition(position); + } + modifier.setStave(this); + this.formatted = false; + this.modifiers.push(modifier); + return this; + } + addEndModifier(modifier) { + this.addModifier(modifier, _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.END); + return this; + } + // Bar Line functions + setBegBarType(type) { + // Only valid bar types at beginning of stave is none, single or begin repeat + const { SINGLE, REPEAT_BEGIN, NONE } = _stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType; + if (type === SINGLE || type === REPEAT_BEGIN || type === NONE) { + this.modifiers[0].setType(type); + this.formatted = false; + } + return this; + } + setEndBarType(type) { + // Repeat end not valid at end of stave + if (type !== _stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.REPEAT_BEGIN) { + this.modifiers[1].setType(type); + this.formatted = false; + } + return this; + } + setClef(clefSpec, size, annotation, position) { + if (position === undefined) { + position = _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.BEGIN; + } + if (position === _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.END) { + this.endClef = clefSpec; + } + else { + this.clef = clefSpec; + } + const clefs = this.getModifiers(position, _clef__WEBPACK_IMPORTED_MODULE_1__.Clef.CATEGORY); + if (clefs.length === 0) { + this.addClef(clefSpec, size, annotation, position); + } + else { + clefs[0].setType(clefSpec, size, annotation); + } + return this; + } + getClef() { + return this.clef; + } + setEndClef(clefSpec, size, annotation) { + this.setClef(clefSpec, size, annotation, _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.END); + return this; + } + getEndClef() { + return this.endClef; + } + setKeySignature(keySpec, cancelKeySpec, position) { + if (position === undefined) { + position = _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.BEGIN; + } + const keySignatures = this.getModifiers(position, _keysignature__WEBPACK_IMPORTED_MODULE_4__.KeySignature.CATEGORY); + if (keySignatures.length === 0) { + this.addKeySignature(keySpec, cancelKeySpec, position); + } + else { + keySignatures[0].setKeySig(keySpec, cancelKeySpec); + } + return this; + } + setEndKeySignature(keySpec, cancelKeySpec) { + this.setKeySignature(keySpec, cancelKeySpec, _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.END); + return this; + } + setTimeSignature(timeSpec, customPadding, position) { + if (position === undefined) { + position = _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.BEGIN; + } + const timeSignatures = this.getModifiers(position, _timesignature__WEBPACK_IMPORTED_MODULE_13__.TimeSignature.CATEGORY); + if (timeSignatures.length === 0) { + this.addTimeSignature(timeSpec, customPadding, position); + } + else { + timeSignatures[0].setTimeSig(timeSpec); + } + return this; + } + setEndTimeSignature(timeSpec, customPadding) { + this.setTimeSignature(timeSpec, customPadding, _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.END); + return this; + } + /** + * Add a key signature to the stave. + * + * Example: + * `stave.addKeySignature('Db');` + * @param keySpec new key specification `[A-G][b|#]?` + * @param cancelKeySpec + * @param position + * @returns + */ + addKeySignature(keySpec, cancelKeySpec, position) { + if (position === undefined) { + position = _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.BEGIN; + } + this.addModifier(new _keysignature__WEBPACK_IMPORTED_MODULE_4__.KeySignature(keySpec, cancelKeySpec).setPosition(position), position); + return this; + } + /** + * Add a clef to the stave. + * + * Example: + * + * stave.addClef('treble') + * @param clef clef (treble|bass|...) see {@link Clef.types} + * @param size + * @param annotation + * @param position + * @returns + */ + addClef(clef, size, annotation, position) { + if (position === undefined || position === _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.BEGIN) { + this.clef = clef; + } + else if (position === _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.END) { + this.endClef = clef; + } + this.addModifier(new _clef__WEBPACK_IMPORTED_MODULE_1__.Clef(clef, size, annotation), position); + return this; + } + addEndClef(clef, size, annotation) { + this.addClef(clef, size, annotation, _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.END); + return this; + } + /** + * Add a time signature to the stave + * + * Example: + * + * `stave.addTimeSignature('4/4');` + * @param timeSpec time signature specification `(C\||C|\d\/\d)` + * @param customPadding + * @param position + * @returns + */ + addTimeSignature(timeSpec, customPadding, position) { + this.addModifier(new _timesignature__WEBPACK_IMPORTED_MODULE_13__.TimeSignature(timeSpec, customPadding), position); + return this; + } + addEndTimeSignature(timeSpec, customPadding) { + this.addTimeSignature(timeSpec, customPadding, _stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.END); + return this; + } + // Deprecated + addTrebleGlyph() { + this.addClef('treble'); + return this; + } + /** + * @param position + * @param category + * @returns array of StaveModifiers that match the provided position and category. + */ + getModifiers(position, category) { + const noPosition = position === undefined; + const noCategory = category === undefined; + if (noPosition && noCategory) { + return this.modifiers; + } + else if (noPosition) { + // A category was provided. + return this.modifiers.filter((m) => category === m.getCategory()); + } + else if (noCategory) { + // A position was provided. + return this.modifiers.filter((m) => position === m.getPosition()); + } + else { + // Both position and category were provided! + return this.modifiers.filter((m) => position === m.getPosition() && category === m.getCategory()); + } + } + /** + * Use the modifier's `getCategory()` as a key for the `order` array. + * The retrieved value is used to sort modifiers from left to right (0 to to 3). + */ + sortByCategory(items, order) { + for (let i = items.length - 1; i >= 0; i--) { + for (let j = 0; j < i; j++) { + if (order[items[j].getCategory()] > order[items[j + 1].getCategory()]) { + const temp = items[j]; + items[j] = items[j + 1]; + items[j + 1] = temp; + } + } + } + } + format() { + const begBarline = this.modifiers[0]; + const endBarline = this.modifiers[1]; + const begModifiers = this.getModifiers(_stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.BEGIN); + const endModifiers = this.getModifiers(_stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.END); + this.sortByCategory(begModifiers, SORT_ORDER_BEG_MODIFIERS); + this.sortByCategory(endModifiers, SORT_ORDER_END_MODIFIERS); + if (begModifiers.length > 1 && begBarline.getType() === _stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.REPEAT_BEGIN) { + begModifiers.push(begModifiers.splice(0, 1)[0]); + begModifiers.splice(0, 0, new _stavebarline__WEBPACK_IMPORTED_MODULE_5__.Barline(_stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.SINGLE)); + } + if (endModifiers.indexOf(endBarline) > 0) { + endModifiers.splice(0, 0, new _stavebarline__WEBPACK_IMPORTED_MODULE_5__.Barline(_stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.NONE)); + } + let width; + let padding; + let modifier; + let offset = 0; + let x = this.x; + for (let i = 0; i < begModifiers.length; i++) { + modifier = begModifiers[i]; + padding = modifier.getPadding(i + offset); + width = modifier.getWidth(); + x += padding; + modifier.setX(x); + x += width; + if (padding + width === 0) + offset--; + } + this.start_x = x; + x = this.x + this.width; + const widths = { + left: 0, + right: 0, + paddingRight: 0, + paddingLeft: 0, + }; + let lastBarlineIdx = 0; + for (let i = 0; i < endModifiers.length; i++) { + modifier = endModifiers[i]; + lastBarlineIdx = (0,_typeguard__WEBPACK_IMPORTED_MODULE_14__.isBarline)(modifier) ? i : lastBarlineIdx; + widths.right = 0; + widths.left = 0; + widths.paddingRight = 0; + widths.paddingLeft = 0; + const layoutMetrics = modifier.getLayoutMetrics(); + if (layoutMetrics) { + if (i !== 0) { + widths.right = layoutMetrics.xMax || 0; + widths.paddingRight = layoutMetrics.paddingRight || 0; + } + widths.left = -layoutMetrics.xMin || 0; + widths.paddingLeft = layoutMetrics.paddingLeft || 0; + if (i === endModifiers.length - 1) { + widths.paddingLeft = 0; + } + } + else { + widths.paddingRight = modifier.getPadding(i - lastBarlineIdx); + if (i !== 0) { + widths.right = modifier.getWidth(); + } + if (i === 0) { + widths.left = modifier.getWidth(); + } + } + x -= widths.paddingRight; + x -= widths.right; + modifier.setX(x); + x -= widths.left; + x -= widths.paddingLeft; + } + this.end_x = endModifiers.length === 1 ? this.x + this.width : x; + this.formatted = true; + } + /** + * All drawing functions below need the context to be set. + */ + draw() { + const ctx = this.checkContext(); + this.setRendered(); + ctx.openGroup('stave', this.getAttribute('id')); + if (!this.formatted) + this.format(); + const num_lines = this.options.num_lines; + const width = this.width; + const x = this.x; + let y; + // Render lines + for (let line = 0; line < num_lines; line++) { + y = this.getYForLine(line); + this.applyStyle(); + if (this.options.line_config[line].visible) { + ctx.beginPath(); + ctx.moveTo(x, y); + ctx.lineTo(x + width, y); + ctx.stroke(); + } + this.restoreStyle(); + } + // Draw the modifiers (bar lines, coda, segno, repeat brackets, etc.) + for (let i = 0; i < this.modifiers.length; i++) { + const modifier = this.modifiers[i]; + // Only draw modifier if it has a draw function + if (typeof modifier.draw === 'function') { + modifier.applyStyle(ctx); + modifier.draw(this, this.getModifierXShift(i)); + modifier.restoreStyle(ctx); + } + } + // Render measure numbers + if (this.measure > 0) { + ctx.save(); + ctx.setFont(this.textFont); + const textWidth = ctx.measureText('' + this.measure).width; + y = this.getYForTopText(0) + 3; + ctx.fillText('' + this.measure, this.x - textWidth / 2, y); + ctx.restore(); + } + ctx.closeGroup(); + return this; + } + getVerticalBarWidth() { + return this.options.vertical_bar_width; + } + /** + * Get the current configuration for the Stave. + * @return {Array} An array of configuration objects. + */ + getConfigForLines() { + return this.options.line_config; + } + /** + * Configure properties of the lines in the Stave + * @param line_number The index of the line to configure. + * @param line_config An configuration object for the specified line. + * @throws RuntimeError "StaveConfigError" When the specified line number is out of + * range of the number of lines specified in the constructor. + */ + setConfigForLine(line_number, line_config) { + if (line_number >= this.options.num_lines || line_number < 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_15__.RuntimeError('StaveConfigError', 'The line number must be within the range of the number of lines in the Stave.'); + } + if (line_config.visible === undefined) { + throw new _util__WEBPACK_IMPORTED_MODULE_15__.RuntimeError('StaveConfigError', "The line configuration object is missing the 'visible' property."); + } + if (typeof line_config.visible !== 'boolean') { + throw new _util__WEBPACK_IMPORTED_MODULE_15__.RuntimeError('StaveConfigError', "The line configuration objects 'visible' property must be true or false."); + } + this.options.line_config[line_number] = line_config; + return this; + } + /** + * Set the staff line configuration array for all of the lines at once. + * @param lines_configuration An array of line configuration objects. These objects + * are of the same format as the single one passed in to setLineConfiguration(). + * The caller can set null for any line config entry if it is desired that the default be used + * @throws RuntimeError "StaveConfigError" When the lines_configuration array does not have + * exactly the same number of elements as the num_lines configuration object set in + * the constructor. + */ + setConfigForLines(lines_configuration) { + if (lines_configuration.length !== this.options.num_lines) { + throw new _util__WEBPACK_IMPORTED_MODULE_15__.RuntimeError('StaveConfigError', 'The length of the lines configuration array must match the number of lines in the Stave'); + } + // Make sure the defaults are present in case an incomplete set of + // configuration options were supplied. + // eslint-disable-next-line + for (const line_config in lines_configuration) { + // Allow '{}' to be used if the caller just wants the default for a particular node. + if (lines_configuration[line_config].visible == undefined) { + lines_configuration[line_config] = this.options.line_config[line_config]; + } + this.options.line_config[line_config] = Object.assign(Object.assign({}, this.options.line_config[line_config]), lines_configuration[line_config]); + } + this.options.line_config = lines_configuration; + return this; + } + static formatBegModifiers(staves) { + let maxX = 0; + // align note start + staves.forEach((stave) => { + if (stave.getNoteStartX() > maxX) + maxX = stave.getNoteStartX(); + }); + staves.forEach((stave) => { + stave.setNoteStartX(maxX); + }); + maxX = 0; + // align REPEAT_BEGIN + staves.forEach((stave) => { + const modifiers = stave.getModifiers(_stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.BEGIN, _typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Barline); + modifiers.forEach((modifier) => { + if (modifier.getType() == _stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.REPEAT_BEGIN) + if (modifier.getX() > maxX) + maxX = modifier.getX(); + }); + }); + staves.forEach((stave) => { + const modifiers = stave.getModifiers(_stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.BEGIN, _typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.Barline); + modifiers.forEach((modifier) => { + if (modifier.getType() == _stavebarline__WEBPACK_IMPORTED_MODULE_5__.BarlineType.REPEAT_BEGIN) + modifier.setX(maxX); + }); + }); + maxX = 0; + // Align time signatures + staves.forEach((stave) => { + const modifiers = stave.getModifiers(_stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.BEGIN, _typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.TimeSignature); + modifiers.forEach((modifier) => { + if (modifier.getX() > maxX) + maxX = modifier.getX(); + }); + }); + staves.forEach((stave) => { + const modifiers = stave.getModifiers(_stavemodifier__WEBPACK_IMPORTED_MODULE_6__.StaveModifierPosition.BEGIN, _typeguard__WEBPACK_IMPORTED_MODULE_14__.Category.TimeSignature); + modifiers.forEach((modifier) => { + modifier.setX(maxX); + }); + }); + } +} +Stave.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_3__.Font.SANS_SERIF, + size: 8, + weight: _font__WEBPACK_IMPORTED_MODULE_3__.FontWeight.NORMAL, + style: _font__WEBPACK_IMPORTED_MODULE_3__.FontStyle.NORMAL, +}; + + +/***/ }), + +/***/ "./src/stavebarline.ts": +/*!*****************************!*\ + !*** ./src/stavebarline.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "BarlineType": () => (/* binding */ BarlineType), +/* harmony export */ "Barline": () => (/* binding */ Barline) +/* harmony export */ }); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// Author Larry Kuhns 2011 + + + +var BarlineType; +(function (BarlineType) { + BarlineType[BarlineType["SINGLE"] = 1] = "SINGLE"; + BarlineType[BarlineType["DOUBLE"] = 2] = "DOUBLE"; + BarlineType[BarlineType["END"] = 3] = "END"; + BarlineType[BarlineType["REPEAT_BEGIN"] = 4] = "REPEAT_BEGIN"; + BarlineType[BarlineType["REPEAT_END"] = 5] = "REPEAT_END"; + BarlineType[BarlineType["REPEAT_BOTH"] = 6] = "REPEAT_BOTH"; + BarlineType[BarlineType["NONE"] = 7] = "NONE"; +})(BarlineType || (BarlineType = {})); +class Barline extends _stavemodifier__WEBPACK_IMPORTED_MODULE_0__.StaveModifier { + constructor(type) { + super(); + this.thickness = _tables__WEBPACK_IMPORTED_MODULE_1__.Tables.STAVE_LINE_THICKNESS; + const TYPE = BarlineType; + this.widths = {}; + this.widths[TYPE.SINGLE] = 5; + this.widths[TYPE.DOUBLE] = 5; + this.widths[TYPE.END] = 5; + this.widths[TYPE.REPEAT_BEGIN] = 5; + this.widths[TYPE.REPEAT_END] = 5; + this.widths[TYPE.REPEAT_BOTH] = 5; + this.widths[TYPE.NONE] = 5; + this.paddings = {}; + this.paddings[TYPE.SINGLE] = 0; + this.paddings[TYPE.DOUBLE] = 0; + this.paddings[TYPE.END] = 0; + this.paddings[TYPE.REPEAT_BEGIN] = 15; + this.paddings[TYPE.REPEAT_END] = 15; + this.paddings[TYPE.REPEAT_BOTH] = 15; + this.paddings[TYPE.NONE] = 0; + this.layoutMetricsMap = {}; + this.layoutMetricsMap[TYPE.SINGLE] = { + xMin: 0, + xMax: 1, + paddingLeft: 5, + paddingRight: 5, + }; + this.layoutMetricsMap[TYPE.DOUBLE] = { + xMin: -3, + xMax: 1, + paddingLeft: 5, + paddingRight: 5, + }; + this.layoutMetricsMap[TYPE.END] = { + xMin: -5, + xMax: 1, + paddingLeft: 5, + paddingRight: 5, + }; + this.layoutMetricsMap[TYPE.REPEAT_END] = { + xMin: -10, + xMax: 1, + paddingLeft: 5, + paddingRight: 5, + }; + this.layoutMetricsMap[TYPE.REPEAT_BEGIN] = { + xMin: -2, + xMax: 10, + paddingLeft: 5, + paddingRight: 5, + }; + this.layoutMetricsMap[TYPE.REPEAT_BOTH] = { + xMin: -10, + xMax: 10, + paddingLeft: 5, + paddingRight: 5, + }; + this.layoutMetricsMap[TYPE.NONE] = { + xMin: 0, + xMax: 0, + paddingLeft: 5, + paddingRight: 5, + }; + this.setPosition(_stavemodifier__WEBPACK_IMPORTED_MODULE_0__.StaveModifierPosition.BEGIN); + this.setType(type); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.Barline; + } + static get type() { + return BarlineType; + } + static get typeString() { + return { + single: BarlineType.SINGLE, + double: BarlineType.DOUBLE, + end: BarlineType.END, + repeatBegin: BarlineType.REPEAT_BEGIN, + repeatEnd: BarlineType.REPEAT_END, + repeatBoth: BarlineType.REPEAT_BOTH, + none: BarlineType.NONE, + }; + } + getType() { + return this.type; + } + setType(type) { + this.type = typeof type === 'string' ? Barline.typeString[type] : type; + this.setWidth(this.widths[this.type]); + this.setPadding(this.paddings[this.type]); + this.setLayoutMetrics(this.layoutMetricsMap[this.type]); + return this; + } + // Draw barlines + draw(stave) { + stave.checkContext(); + this.setRendered(); + switch (this.type) { + case BarlineType.SINGLE: + this.drawVerticalBar(stave, this.x, false); + break; + case BarlineType.DOUBLE: + this.drawVerticalBar(stave, this.x, true); + break; + case BarlineType.END: + this.drawVerticalEndBar(stave, this.x); + break; + case BarlineType.REPEAT_BEGIN: + // If the barline is shifted over (in front of clef/time/key) + // Draw vertical bar at the beginning. + this.drawRepeatBar(stave, this.x, true); + if (stave.getX() !== this.x) { + this.drawVerticalBar(stave, stave.getX()); + } + break; + case BarlineType.REPEAT_END: + this.drawRepeatBar(stave, this.x, false); + break; + case BarlineType.REPEAT_BOTH: + this.drawRepeatBar(stave, this.x, false); + this.drawRepeatBar(stave, this.x, true); + break; + default: + // Default is NONE, so nothing to draw + break; + } + } + drawVerticalBar(stave, x, double_bar) { + const staveCtx = stave.checkContext(); + const topY = stave.getTopLineTopY(); + const botY = stave.getBottomLineBottomY(); + if (double_bar) { + staveCtx.fillRect(x - 3, topY, 1, botY - topY); + } + staveCtx.fillRect(x, topY, 1, botY - topY); + } + drawVerticalEndBar(stave, x) { + const staveCtx = stave.checkContext(); + const topY = stave.getTopLineTopY(); + const botY = stave.getBottomLineBottomY(); + staveCtx.fillRect(x - 5, topY, 1, botY - topY); + staveCtx.fillRect(x - 2, topY, 3, botY - topY); + } + drawRepeatBar(stave, x, begin) { + const staveCtx = stave.checkContext(); + const topY = stave.getTopLineTopY(); + const botY = stave.getBottomLineBottomY(); + let x_shift = 3; + if (!begin) { + x_shift = -5; + } + staveCtx.fillRect(x + x_shift, topY, 1, botY - topY); + staveCtx.fillRect(x - 2, topY, 3, botY - topY); + const dot_radius = 2; + // Shift dots left or right + if (begin) { + x_shift += 4; + } + else { + x_shift -= 4; + } + const dot_x = x + x_shift + dot_radius / 2; + // calculate the y offset based on number of stave lines + let y_offset = (stave.getNumLines() - 1) * stave.getSpacingBetweenLines(); + y_offset = y_offset / 2 - stave.getSpacingBetweenLines() / 2; + let dot_y = topY + y_offset + dot_radius / 2; + // draw the top repeat dot + staveCtx.beginPath(); + staveCtx.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false); + staveCtx.fill(); + // draw the bottom repeat dot + dot_y += stave.getSpacingBetweenLines(); + staveCtx.beginPath(); + staveCtx.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false); + staveCtx.fill(); + } +} + + +/***/ }), + +/***/ "./src/staveconnector.ts": +/*!*******************************!*\ + !*** ./src/staveconnector.ts ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveConnector": () => (/* binding */ StaveConnector) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + +function drawBoldDoubleLine(ctx, type, topX, topY, botY) { + if (type !== StaveConnector.type.BOLD_DOUBLE_LEFT && type !== StaveConnector.type.BOLD_DOUBLE_RIGHT) { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('InvalidConnector', 'A REPEAT_BEGIN or REPEAT_END type must be provided.'); + } + let x_shift = 3; + let variableWidth = 3.5; // Width for avoiding anti-aliasing width issues + const thickLineOffset = 2; // For aesthetics + if (type === StaveConnector.type.BOLD_DOUBLE_RIGHT) { + x_shift = -5; // Flips the side of the thin line + variableWidth = 3; + } + // Thin line + ctx.fillRect(topX + x_shift, topY, 1, botY - topY); + // Thick line + ctx.fillRect(topX - thickLineOffset, topY, variableWidth, botY - topY); +} +/** StaveConnector implements the connector lines between staves of a system. */ +class StaveConnector extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + constructor(top_stave, bottom_stave) { + super(); + this.thickness = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.STAVE_LINE_THICKNESS; + this.width = 3; + this.top_stave = top_stave; + this.bottom_stave = bottom_stave; + this.type = StaveConnector.type.DOUBLE; + this.resetFont(); + // 1. Offset Bold Double Left to align with offset Repeat Begin bars + // 2. Offset BRACE type not to overlap with another StaveConnector + this.x_shift = 0; + this.texts = []; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_4__.Category.StaveConnector; + } + /** + * Set type. + * @param type see {@link StaveConnector.type} & {@link StaveConnector.typeString} + */ + setType(type) { + const newType = typeof type === 'string' ? StaveConnector.typeString[type] : type; + // Be certain that the type is a valid type: + if (Object.values(StaveConnector.type).includes(newType)) { + this.type = newType; + } + return this; + } + /** + * Get type. + * @returns number {@link StaveConnector.type} + */ + getType() { + return this.type; + } + /** Set optional associated Text. */ + setText(text, options = {}) { + this.texts.push({ + content: text, + options: Object.assign({ shift_x: 0, shift_y: 0 }, options), + }); + return this; + } + setXShift(x_shift) { + if (typeof x_shift !== 'number') { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('InvalidType', 'x_shift must be a Number'); + } + this.x_shift = x_shift; + return this; + } + getXShift() { + return this.x_shift; + } + /** Render connector and associated text. */ + draw() { + const ctx = this.checkContext(); + this.setRendered(); + let topY = this.top_stave.getYForLine(0); + let botY = this.bottom_stave.getYForLine(this.bottom_stave.getNumLines() - 1) + this.thickness; + let width = this.width; + let topX = this.top_stave.getX(); + const isRightSidedConnector = this.type === StaveConnector.type.SINGLE_RIGHT || + this.type === StaveConnector.type.BOLD_DOUBLE_RIGHT || + this.type === StaveConnector.type.THIN_DOUBLE; + if (isRightSidedConnector) { + topX = this.top_stave.getX() + this.top_stave.getWidth(); + } + let attachment_height = botY - topY; + switch (this.type) { + case StaveConnector.type.SINGLE: + width = 1; + break; + case StaveConnector.type.SINGLE_LEFT: + width = 1; + break; + case StaveConnector.type.SINGLE_RIGHT: + width = 1; + break; + case StaveConnector.type.DOUBLE: + topX -= this.width + 2; + topY -= this.thickness; + attachment_height += 0.5; + break; + case StaveConnector.type.BRACE: { + width = 12; + // May need additional code to draw brace + const x1 = this.top_stave.getX() - 2 + this.x_shift; + const y1 = topY; + const x3 = x1; + const y3 = botY; + const x2 = x1 - width; + const y2 = y1 + attachment_height / 2.0; + const cpx1 = x2 - 0.9 * width; + const cpy1 = y1 + 0.2 * attachment_height; + const cpx2 = x1 + 1.1 * width; + const cpy2 = y2 - 0.135 * attachment_height; + const cpx3 = cpx2; + const cpy3 = y2 + 0.135 * attachment_height; + const cpx4 = cpx1; + const cpy4 = y3 - 0.2 * attachment_height; + const cpx5 = x2 - width; + const cpy5 = cpy4; + const cpx6 = x1 + 0.4 * width; + const cpy6 = y2 + 0.135 * attachment_height; + const cpx7 = cpx6; + const cpy7 = y2 - 0.135 * attachment_height; + const cpx8 = cpx5; + const cpy8 = cpy1; + ctx.beginPath(); + ctx.moveTo(x1, y1); + ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2); + ctx.bezierCurveTo(cpx3, cpy3, cpx4, cpy4, x3, y3); + ctx.bezierCurveTo(cpx5, cpy5, cpx6, cpy6, x2, y2); + ctx.bezierCurveTo(cpx7, cpy7, cpx8, cpy8, x1, y1); + ctx.fill(); + ctx.stroke(); + break; + } + case StaveConnector.type.BRACKET: + topY -= 6; + botY += 6; + attachment_height = botY - topY; + _glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph.renderGlyph(ctx, topX - 5, topY, 40, 'bracketTop'); + _glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph.renderGlyph(ctx, topX - 5, botY, 40, 'bracketBottom'); + topX -= this.width + 2; + break; + case StaveConnector.type.BOLD_DOUBLE_LEFT: + drawBoldDoubleLine(ctx, this.type, topX + this.x_shift, topY, botY - this.thickness); + break; + case StaveConnector.type.BOLD_DOUBLE_RIGHT: + drawBoldDoubleLine(ctx, this.type, topX, topY, botY - this.thickness); + break; + case StaveConnector.type.THIN_DOUBLE: + width = 1; + attachment_height -= this.thickness; + break; + case StaveConnector.type.NONE: + break; + default: + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('InvalidType', `The provided StaveConnector.type (${this.type}) is invalid.`); + } + if (this.type !== StaveConnector.type.BRACE && + this.type !== StaveConnector.type.BOLD_DOUBLE_LEFT && + this.type !== StaveConnector.type.BOLD_DOUBLE_RIGHT && + this.type !== StaveConnector.type.NONE) { + ctx.fillRect(topX, topY, width, attachment_height); + } + // If the connector is a thin double barline, draw the paralell line + if (this.type === StaveConnector.type.THIN_DOUBLE) { + ctx.fillRect(topX - 3, topY, width, attachment_height); + } + ctx.save(); + ctx.setLineWidth(2); + ctx.setFont(this.textFont); + // Add stave connector text + for (let i = 0; i < this.texts.length; i++) { + const text = this.texts[i]; + const text_width = ctx.measureText('' + text.content).width; + const x = this.top_stave.getX() - text_width - 24 + text.options.shift_x; + const y = (this.top_stave.getYForLine(0) + this.bottom_stave.getBottomLineY()) / 2 + text.options.shift_y; + ctx.fillText('' + text.content, x, y + 4); + } + ctx.restore(); + } +} +StaveConnector.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_1__.Font.SERIF, + size: 16, + weight: _font__WEBPACK_IMPORTED_MODULE_1__.FontWeight.NORMAL, + style: _font__WEBPACK_IMPORTED_MODULE_1__.FontStyle.NORMAL, +}; +/** + * SINGLE_LEFT and SINGLE are the same value for compatibility + * with older versions of vexflow which didn't have right sided + * stave connectors. + */ +StaveConnector.type = { + SINGLE_RIGHT: 0, + SINGLE_LEFT: 1, + SINGLE: 1, + DOUBLE: 2, + BRACE: 3, + BRACKET: 4, + BOLD_DOUBLE_LEFT: 5, + BOLD_DOUBLE_RIGHT: 6, + THIN_DOUBLE: 7, + NONE: 8, +}; +/** + * Connector type: + * * "singleRight" + * * "singleLeft" + * * "single" + * * "double" + * * "brace" + * * "bracket" + * * "boldDoubleLeft" + * * "boldDoubleRight" + * * "thinDouble" + * * "none" + */ +StaveConnector.typeString = { + singleRight: StaveConnector.type.SINGLE_RIGHT, + singleLeft: StaveConnector.type.SINGLE_LEFT, + single: StaveConnector.type.SINGLE, + double: StaveConnector.type.DOUBLE, + brace: StaveConnector.type.BRACE, + bracket: StaveConnector.type.BRACKET, + boldDoubleLeft: StaveConnector.type.BOLD_DOUBLE_LEFT, + boldDoubleRight: StaveConnector.type.BOLD_DOUBLE_RIGHT, + thinDouble: StaveConnector.type.THIN_DOUBLE, + none: StaveConnector.type.NONE, +}; + + +/***/ }), + +/***/ "./src/stavehairpin.ts": +/*!*****************************!*\ + !*** ./src/stavehairpin.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveHairpin": () => (/* binding */ StaveHairpin) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// Author: Raffaele Viglianti, 2012 http://itisnotsound.wordpress.com/ +// +// This class implements hairpins between notes. +// Hairpins can be either crescendo or decrescendo. + + + + +class StaveHairpin extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + /** + * Create a new hairpin from the specified notes. + * + * @param {!Object} notes The notes to tie up. + * Notes is a struct that has: + * + * { + * first_note: Note, + * last_note: Note, + * } + * @param {!Object} type The type of hairpin + */ + constructor(notes, type) { + super(); + this.setNotes(notes); + this.hairpin = type; + this.position = _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.BELOW; + this.render_options = { + height: 10, + y_shift: 0, + left_shift_px: 0, + right_shift_px: 0, + right_shift_ticks: 0, + left_shift_ticks: 0, + }; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.StaveHairpin; + } + /* Helper function to convert ticks into pixels. + * Requires a Formatter with voices joined and formatted (to + * get pixels per tick) + * + * options is struct that has: + * + * { + * height: px, + * y_shift: px, // vertical offset + * left_shift_ticks: 0, // left horizontal offset expressed in ticks + * right_shift_ticks: 0 // right horizontal offset expressed in ticks + * } + * + **/ + static FormatByTicksAndDraw(ctx, formatter, notes, type, position, options) { + var _a, _b; + const ppt = formatter.pixelsPerTick; + if (ppt == null) { + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('BadArguments', 'A valid Formatter must be provide to draw offsets by ticks.'); + } + const l_shift_px = ppt * ((_a = options.left_shift_ticks) !== null && _a !== void 0 ? _a : 0); + const r_shift_px = ppt * ((_b = options.right_shift_ticks) !== null && _b !== void 0 ? _b : 0); + const hairpin_options = { + height: options.height, + y_shift: options.y_shift, + left_shift_px: l_shift_px, + right_shift_px: r_shift_px, + right_shift_ticks: 0, + left_shift_ticks: 0, + }; + new StaveHairpin({ + first_note: notes.first_note, + last_note: notes.last_note, + }, type) + .setContext(ctx) + .setRenderOptions(hairpin_options) + .setPosition(position) + .draw(); + } + setPosition(position) { + if (position === _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.ABOVE || position === _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.BELOW) { + this.position = position; + } + return this; + } + setRenderOptions(options) { + if (options.height != null && + options.y_shift != null && + options.left_shift_px != null && + options.right_shift_px != null) { + this.render_options = options; + } + return this; + } + /** + * Set the notes to attach this hairpin to. + * + * @param {!Object} notes The start and end notes. + */ + setNotes(notes) { + if (!notes.first_note && !notes.last_note) { + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('BadArguments', 'Hairpin needs to have either first_note or last_note set.'); + } + this.notes = notes; + this.first_note = notes.first_note; + this.last_note = notes.last_note; + return this; + } + renderHairpin(params) { + const ctx = this.checkContext(); + let dis = this.render_options.y_shift + 20; + let y_shift = params.first_y; + if (this.position === _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.ABOVE) { + dis = -dis + 30; + y_shift = params.first_y - params.staff_height; + } + const l_shift = this.render_options.left_shift_px; + const r_shift = this.render_options.right_shift_px; + ctx.beginPath(); + switch (this.hairpin) { + case StaveHairpin.type.CRESC: + ctx.moveTo(params.last_x + r_shift, y_shift + dis); + ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height / 2 + dis); + ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height + dis); + break; + case StaveHairpin.type.DECRESC: + ctx.moveTo(params.first_x + l_shift, y_shift + dis); + ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height / 2 + dis); + ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height + dis); + break; + default: + // Default is NONE, so nothing to draw + break; + } + ctx.stroke(); + ctx.closePath(); + } + draw() { + this.checkContext(); + this.setRendered(); + const firstNote = this.first_note; + const lastNote = this.last_note; + if (!firstNote || !lastNote) + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('NoNote', 'Notes required to draw'); + const start = firstNote.getModifierStartXY(this.position, 0); + const end = lastNote.getModifierStartXY(this.position, 0); + this.renderHairpin({ + first_x: start.x, + last_x: end.x, + first_y: firstNote.checkStave().getY() + firstNote.checkStave().getHeight(), + last_y: lastNote.checkStave().getY() + lastNote.checkStave().getHeight(), + staff_height: firstNote.checkStave().getHeight(), + }); + } +} +StaveHairpin.type = { + CRESC: 1, + DECRESC: 2, +}; + + +/***/ }), + +/***/ "./src/staveline.ts": +/*!**************************!*\ + !*** ./src/staveline.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveLine": () => (/* binding */ StaveLine) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _textnote__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./textnote */ "./src/textnote.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// This file implements `StaveLine` which are simply lines that connect +// two notes. This object is highly configurable, see the `render_options`. +// A simple line is often used for notating glissando articulations, but you +// can format a `StaveLine` with arrows or colors for more pedagogical +// purposes, such as diagrams. + + + + + +// Attribution: Arrow rendering implementations based off of +// Patrick Horgan's article, "Drawing lines and arcs with +// arrow heads on HTML5 Canvas" +// +// Draw an arrow head that connects between 3 coordinates. +function drawArrowHead(ctx, x0, y0, x1, y1, x2, y2) { + // all cases do this. + ctx.beginPath(); + ctx.moveTo(x0, y0); + ctx.lineTo(x1, y1); + ctx.lineTo(x2, y2); + ctx.lineTo(x0, y0); + ctx.closePath(); + ctx.fill(); +} +class StaveLine extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + // Initialize the StaveLine with the given `notes`. + // + // `notes` is a struct that has: + // + // ``` + // { + // first_note: Note, + // last_note: Note, + // first_indices: [n1, n2, n3], + // last_indices: [n1, n2, n3] + // } + // ``` + constructor(notes) { + super(); + this.setNotes(notes); + this.text = ''; + this.resetFont(); + this.render_options = { + // Space to add to the left or the right + padding_left: 4, + padding_right: 3, + // The width of the line in pixels + line_width: 1, + // An array of line/space lengths. (TODO/QUESTION: Is this supported in SVG?). + line_dash: undefined, + // Can draw rounded line end, instead of a square. (TODO/QUESTION: Is this supported in SVG?). + rounded_end: true, + // The color of the line and arrowheads + color: undefined, + // Flags to draw arrows on each end of the line + draw_start_arrow: false, + draw_end_arrow: false, + // The length of the arrowhead sides + arrowhead_length: 10, + // The angle of the arrowhead + arrowhead_angle: Math.PI / 8, + // The position of the text + text_position_vertical: StaveLine.TextVerticalPosition.TOP, + text_justification: StaveLine.TextJustification.CENTER, + }; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.StaveLine; + } + // The the annotation for the `StaveLine` + setText(text) { + this.text = text; + return this; + } + // Set the notes for the `StaveLine` + setNotes(notes) { + if (!notes.first_note && !notes.last_note) { + throw new _util__WEBPACK_IMPORTED_MODULE_4__.RuntimeError('BadArguments', 'Notes needs to have either first_note or last_note set.'); + } + if (!notes.first_indices) + notes.first_indices = [0]; + if (!notes.last_indices) + notes.last_indices = [0]; + if (notes.first_indices.length !== notes.last_indices.length) { + throw new _util__WEBPACK_IMPORTED_MODULE_4__.RuntimeError('BadArguments', 'Connected notes must have same number of indices.'); + } + this.notes = notes; + this.first_note = notes.first_note; + this.first_indices = notes.first_indices; + this.last_note = notes.last_note; + this.last_indices = notes.last_indices; + return this; + } + // Apply the style of the `StaveLine` to the context + applyLineStyle() { + const ctx = this.checkContext(); + const render_options = this.render_options; + if (render_options.line_dash) { + ctx.setLineDash(render_options.line_dash); + } + if (render_options.line_width) { + ctx.setLineWidth(render_options.line_width); + } + if (render_options.rounded_end) { + ctx.setLineCap('round'); + } + else { + ctx.setLineCap('square'); + } + } + // Apply the text styling to the context + applyFontStyle() { + const ctx = this.checkContext(); + ctx.setFont(this.textFont); + const render_options = this.render_options; + const color = render_options.color; + if (color) { + ctx.setStrokeStyle(color); + ctx.setFillStyle(color); + } + } + // Helper function to draw a line with arrow heads + drawArrowLine(ctx, pt1, pt2) { + const both_arrows = this.render_options.draw_start_arrow && this.render_options.draw_end_arrow; + const x1 = pt1.x; + const y1 = pt1.y; + const x2 = pt2.x; + const y2 = pt2.y; + // For ends with arrow we actually want to stop before we get to the arrow + // so that wide lines won't put a flat end on the arrow. + const distance = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)); + const ratio = (distance - this.render_options.arrowhead_length / 3) / distance; + let end_x; + let end_y; + let start_x; + let start_y; + if (this.render_options.draw_end_arrow || both_arrows) { + end_x = Math.round(x1 + (x2 - x1) * ratio); + end_y = Math.round(y1 + (y2 - y1) * ratio); + } + else { + end_x = x2; + end_y = y2; + } + if (this.render_options.draw_start_arrow || both_arrows) { + start_x = x1 + (x2 - x1) * (1 - ratio); + start_y = y1 + (y2 - y1) * (1 - ratio); + } + else { + start_x = x1; + start_y = y1; + } + if (this.render_options.color) { + ctx.setStrokeStyle(this.render_options.color); + ctx.setFillStyle(this.render_options.color); + } + // Draw the shaft of the arrow + ctx.beginPath(); + ctx.moveTo(start_x, start_y); + ctx.lineTo(end_x, end_y); + ctx.stroke(); + ctx.closePath(); + // calculate the angle of the line + const line_angle = Math.atan2(y2 - y1, x2 - x1); + // h is the line length of a side of the arrow head + const h = Math.abs(this.render_options.arrowhead_length / Math.cos(this.render_options.arrowhead_angle)); + let angle1; + let angle2; + let top_x; + let top_y; + let bottom_x; + let bottom_y; + if (this.render_options.draw_end_arrow || both_arrows) { + angle1 = line_angle + Math.PI + this.render_options.arrowhead_angle; + top_x = x2 + Math.cos(angle1) * h; + top_y = y2 + Math.sin(angle1) * h; + angle2 = line_angle + Math.PI - this.render_options.arrowhead_angle; + bottom_x = x2 + Math.cos(angle2) * h; + bottom_y = y2 + Math.sin(angle2) * h; + drawArrowHead(ctx, top_x, top_y, x2, y2, bottom_x, bottom_y); + } + if (this.render_options.draw_start_arrow || both_arrows) { + angle1 = line_angle + this.render_options.arrowhead_angle; + top_x = x1 + Math.cos(angle1) * h; + top_y = y1 + Math.sin(angle1) * h; + angle2 = line_angle - this.render_options.arrowhead_angle; + bottom_x = x1 + Math.cos(angle2) * h; + bottom_y = y1 + Math.sin(angle2) * h; + drawArrowHead(ctx, top_x, top_y, x1, y1, bottom_x, bottom_y); + } + } + // Renders the `StaveLine` on the context + draw() { + const ctx = this.checkContext(); + this.setRendered(); + const first_note = this.first_note; + const last_note = this.last_note; + const render_options = this.render_options; + ctx.save(); + this.applyLineStyle(); + // Cycle through each set of indices and draw lines + let start_position = { x: 0, y: 0 }; + let end_position = { x: 0, y: 0 }; + this.first_indices.forEach((first_index, i) => { + const last_index = this.last_indices[i]; + // Get initial coordinates for the start/end of the line + start_position = first_note.getModifierStartXY(2, first_index); + end_position = last_note.getModifierStartXY(1, last_index); + const upwards_slope = start_position.y > end_position.y; + // Adjust `x` coordinates for modifiers + start_position.x += first_note.getMetrics().modRightPx + render_options.padding_left; + end_position.x -= last_note.getMetrics().modLeftPx + render_options.padding_right; + // Adjust first `x` coordinates for displacements + const notehead_width = first_note.getGlyph().getWidth(); + const first_displaced = first_note.getKeyProps()[first_index].displaced; + if (first_displaced && first_note.getStemDirection() === 1) { + start_position.x += notehead_width + render_options.padding_left; + } + // Adjust last `x` coordinates for displacements + const last_displaced = last_note.getKeyProps()[last_index].displaced; + if (last_displaced && last_note.getStemDirection() === -1) { + end_position.x -= notehead_width + render_options.padding_right; + } + // Adjust y position better if it's not coming from the center of the note + start_position.y += upwards_slope ? -3 : 1; + end_position.y += upwards_slope ? 2 : 0; + this.drawArrowLine(ctx, start_position, end_position); + }); + ctx.restore(); + // Determine the x coordinate where to start the text + const text_width = ctx.measureText(this.text).width; + const justification = render_options.text_justification; + let x = 0; + if (justification === StaveLine.TextJustification.LEFT) { + x = start_position.x; + } + else if (justification === StaveLine.TextJustification.CENTER) { + const delta_x = end_position.x - start_position.x; + const center_x = delta_x / 2 + start_position.x; + x = center_x - text_width / 2; + } + else if (justification === StaveLine.TextJustification.RIGHT) { + x = end_position.x - text_width; + } + // Determine the y value to start the text + let y = 0; + const vertical_position = render_options.text_position_vertical; + if (vertical_position === StaveLine.TextVerticalPosition.TOP) { + y = first_note.checkStave().getYForTopText(); + } + else if (vertical_position === StaveLine.TextVerticalPosition.BOTTOM) { + y = first_note.checkStave().getYForBottomText(_tables__WEBPACK_IMPORTED_MODULE_1__.Tables.TEXT_HEIGHT_OFFSET_HACK); + } + // Draw the text + ctx.save(); + this.applyFontStyle(); + ctx.fillText(this.text, x, y); + ctx.restore(); + return this; + } +} +/** Default text font. */ +StaveLine.TEXT_FONT = Object.assign({}, _element__WEBPACK_IMPORTED_MODULE_0__.Element.TEXT_FONT); +// Text Positioning +StaveLine.TextVerticalPosition = { + TOP: 1, + BOTTOM: 2, +}; +StaveLine.TextJustification = _textnote__WEBPACK_IMPORTED_MODULE_2__.TextJustification; + + +/***/ }), + +/***/ "./src/stavemodifier.ts": +/*!******************************!*\ + !*** ./src/stavemodifier.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveModifierPosition": () => (/* binding */ StaveModifierPosition), +/* harmony export */ "StaveModifier": () => (/* binding */ StaveModifier) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// A base class for stave modifiers (e.g. clefs, key signatures) + + + +var StaveModifierPosition; +(function (StaveModifierPosition) { + StaveModifierPosition[StaveModifierPosition["CENTER"] = 0] = "CENTER"; + StaveModifierPosition[StaveModifierPosition["LEFT"] = 1] = "LEFT"; + StaveModifierPosition[StaveModifierPosition["RIGHT"] = 2] = "RIGHT"; + StaveModifierPosition[StaveModifierPosition["ABOVE"] = 3] = "ABOVE"; + StaveModifierPosition[StaveModifierPosition["BELOW"] = 4] = "BELOW"; + StaveModifierPosition[StaveModifierPosition["BEGIN"] = 5] = "BEGIN"; + StaveModifierPosition[StaveModifierPosition["END"] = 6] = "END"; +})(StaveModifierPosition || (StaveModifierPosition = {})); +class StaveModifier extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + constructor() { + super(); + this.width = 0; + this.x = 0; + this.padding = 10; + this.position = StaveModifierPosition.ABOVE; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_1__.Category.StaveModifier; + } + static get Position() { + return StaveModifierPosition; + } + getPosition() { + return this.position; + } + setPosition(position) { + this.position = position; + return this; + } + getStave() { + return this.stave; + } + checkStave() { + return (0,_util__WEBPACK_IMPORTED_MODULE_2__.defined)(this.stave, 'NoStave', 'No stave attached to instance.'); + } + setStave(stave) { + this.stave = stave; + return this; + } + getWidth() { + return this.width; + } + setWidth(width) { + this.width = width; + return this; + } + getX() { + return this.x; + } + setX(x) { + this.x = x; + return this; + } + placeGlyphOnLine(glyph, stave, line, customShift = 0) { + glyph.setYShift(stave.getYForLine(line !== null && line !== void 0 ? line : 0) - stave.getYForGlyphs() + customShift); + } + getPadding(index) { + return index !== undefined && index < 2 ? 0 : this.padding; + } + setPadding(padding) { + this.padding = padding; + return this; + } + setLayoutMetrics(layoutMetrics) { + this.layoutMetrics = layoutMetrics; + return this; + } + getLayoutMetrics() { + return this.layoutMetrics; + } + // eslint-disable-next-line + draw(...args) { + // DO NOTHING. + } +} + + +/***/ }), + +/***/ "./src/stavenote.ts": +/*!**************************!*\ + !*** ./src/stavenote.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveNote": () => (/* binding */ StaveNote) +/* harmony export */ }); +/* harmony import */ var _boundingbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./boundingbox */ "./src/boundingbox.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _notehead__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./notehead */ "./src/notehead.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _stemmablenote__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stemmablenote */ "./src/stemmablenote.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// This file implements notes for standard notation. This consists of one or +// more `NoteHeads`, an optional stem, and an optional flag. +// +// Throughout these comments, a "note" refers to the entire `StaveNote`, +// and a "key" refers to a specific pitch/notehead within a note. +// +// See `tests/stavenote_tests.ts` for usage examples. + + + + + + + + +function showDeprecationWarningForNoteHeads() { + // eslint-disable-next-line + console.warn('StaveNote.note_heads is deprecated. Use StaveNote.noteHeads instead.', 'This accessor will be removed in VexFlow 5.0.'); +} +// To enable logging for this class. Set `Vex.Flow.StaveNote.DEBUG` to `true`. +// eslint-disable-next-line +function L(...args) { + if (StaveNote.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_7__.log)('Vex.Flow.StaveNote', args); +} +const isInnerNoteIndex = (note, index) => index === (note.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP ? note.keyProps.length - 1 : 0); +// Helper methods for rest positioning in ModifierContext. +function shiftRestVertical(rest, note, dir) { + const delta = dir; + rest.line += delta; + rest.maxLine += delta; + rest.minLine += delta; + rest.note.setKeyLine(0, rest.note.getKeyLine(0) + delta); +} +// Called from formatNotes :: center a rest between two notes +function centerRest(rest, noteU, noteL) { + const delta = rest.line - (0,_util__WEBPACK_IMPORTED_MODULE_7__.midLine)(noteU.minLine, noteL.maxLine); + rest.note.setKeyLine(0, rest.note.getKeyLine(0) - delta); + rest.line -= delta; + rest.maxLine -= delta; + rest.minLine -= delta; +} +class StaveNote extends _stemmablenote__WEBPACK_IMPORTED_MODULE_4__.StemmableNote { + constructor(noteStruct) { + var _a, _b, _c; + super(noteStruct); + ////////////////////////////////////////////////////////////////////////////////////////////////// + // INSTANCE MEMBERS + this.minLine = 0; + this.maxLine = 0; + // Sorted variant of keyProps used internally + this.sortedKeyProps = []; + this.ledgerLineStyle = {}; + this.clef = (_a = noteStruct.clef) !== null && _a !== void 0 ? _a : 'treble'; + this.octave_shift = (_b = noteStruct.octave_shift) !== null && _b !== void 0 ? _b : 0; + // Pull note rendering properties. + this.glyph = _tables__WEBPACK_IMPORTED_MODULE_5__.Tables.getGlyphProps(this.duration, this.noteType); + (0,_util__WEBPACK_IMPORTED_MODULE_7__.defined)(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`); + // if true, displace note to right + this.displaced = false; + this.dot_shiftY = 0; + // for displaced ledger lines + this.use_default_head_x = false; + // Drawing + this._noteHeads = []; + this.modifiers = []; + this.render_options = Object.assign(Object.assign({}, this.render_options), { + // font size for note heads and rests + glyph_font_scale: noteStruct.glyph_font_scale || _tables__WEBPACK_IMPORTED_MODULE_5__.Tables.NOTATION_FONT_SCALE, + // number of stroke px to the left and right of head + stroke_px: noteStruct.stroke_px || StaveNote.LEDGER_LINE_OFFSET }); + this.calculateKeyProps(); + this.buildStem(); + // Set the stem direction + if (noteStruct.auto_stem) { + this.autoStem(); + } + else { + this.setStemDirection((_c = noteStruct.stem_direction) !== null && _c !== void 0 ? _c : _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP); + } + this.reset(); + this.buildFlag(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_6__.Category.StaveNote; + } + /** + * @deprecated Use Stem.UP. + */ + static get STEM_UP() { + return _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP; + } + /** + * @deprecated Use Stem.DOWN. + */ + static get STEM_DOWN() { + return _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.DOWN; + } + static get LEDGER_LINE_OFFSET() { + return 3; + } + static get minNoteheadPadding() { + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_5__.Tables.currentMusicFont(); + return musicFont.lookupMetric('glyphs.noteHead.minPadding'); + } + /** Format notes inside a ModifierContext. */ + static format(notes, state) { + if (!notes || notes.length < 2) + return false; + const notesList = []; + for (let i = 0; i < notes.length; i++) { + // Formatting uses sortedKeyProps to calculate line and minL. + const props = notes[i].sortedKeyProps; + const line = props[0].keyProps.line; + let minL = props[props.length - 1].keyProps.line; + const stemDirection = notes[i].getStemDirection(); + const stemMax = notes[i].getStemLength() / 10; + const stemMin = notes[i].getStemMinimumLength() / 10; + let maxL; + if (notes[i].isRest()) { + maxL = line + notes[i].glyph.line_above; + minL = line - notes[i].glyph.line_below; + } + else { + maxL = + stemDirection === 1 ? props[props.length - 1].keyProps.line + stemMax : props[props.length - 1].keyProps.line; + minL = stemDirection === 1 ? props[0].keyProps.line : props[0].keyProps.line - stemMax; + } + notesList.push({ + line: props[0].keyProps.line, + maxLine: maxL, + minLine: minL, + isrest: notes[i].isRest(), + stemDirection: stemDirection, + stemMax, + stemMin, + voice_shift: notes[i].getVoiceShiftWidth(), + is_displaced: notes[i].isDisplaced(), + note: notes[i], + }); + } + let voices = 0; + let noteU = undefined; + let noteM = undefined; + let noteL = undefined; + const draw = [false, false, false]; + for (let i = 0; i < notesList.length; i++) { + draw[i] = notesList[i].note.render_options.draw == false ? false : true; + } + if (draw[0] && draw[1] && draw[2]) { + // Three visible notes + voices = 3; + noteU = notesList[0]; + noteM = notesList[1]; + noteL = notesList[2]; + } + else if (draw[0] && draw[1]) { + // Two visible notes, 0 & 1 + voices = 2; + noteU = notesList[0]; + noteL = notesList[1]; + } + else if (draw[0] && draw[2]) { + // Two visible notes, 0 & 2 + voices = 2; + noteU = notesList[0]; + noteL = notesList[2]; + } + else if (draw[1] && draw[2]) { + // Two visible notes, 1 & 2 + voices = 2; + noteU = notesList[1]; + noteL = notesList[2]; + } + else { + // No shift required for less than 2 visible notes + return true; + } + // for two voice backward compatibility, ensure upper voice is stems up + // for three voices, the voices must be in order (upper, middle, lower) + if (voices === 2 && noteU.stemDirection === -1 && noteL.stemDirection === 1) { + noteU = notesList[1]; + noteL = notesList[0]; + } + const voiceXShift = Math.max(noteU.voice_shift, noteL.voice_shift); + let xShift = 0; + // Test for two voice note intersection + if (voices === 2) { + const lineSpacing = noteU.note.hasStem() && noteL.note.hasStem() && noteU.stemDirection === noteL.stemDirection ? 0.0 : 0.5; + if (noteL.isrest && noteU.isrest && noteU.note.duration === noteL.note.duration) { + noteL.note.render_options.draw = false; + } + else if (noteU.minLine <= noteL.maxLine + lineSpacing) { + if (noteU.isrest) { + // shift rest up + shiftRestVertical(noteU, noteL, 1); + } + else if (noteL.isrest) { + // shift rest down + shiftRestVertical(noteL, noteU, -1); + } + else { + //Instead of shifting notes, remove the appropriate flag + //If we are sharing a line, switch one notes stem direction. + //If we are sharing a line and in the same voice, only then offset one note + const lineDiff = Math.abs(noteU.line - noteL.line); + if (noteU.note.hasStem() && noteL.note.hasStem()) { + //If we have different dot values, must offset + //Or If we have a white mixed with a black notehead, must offset + let whiteNoteHeadCount = 0; + let blackNoteHeadCount = 0; + if (_tables__WEBPACK_IMPORTED_MODULE_5__.Tables.durationToNumber(noteU.note.duration) === 2) { + whiteNoteHeadCount++; + } + else if (_tables__WEBPACK_IMPORTED_MODULE_5__.Tables.durationToNumber(noteU.note.duration) > 2) { + blackNoteHeadCount++; + } + if (_tables__WEBPACK_IMPORTED_MODULE_5__.Tables.durationToNumber(noteL.note.duration) === 2) { + whiteNoteHeadCount++; + } + else if (_tables__WEBPACK_IMPORTED_MODULE_5__.Tables.durationToNumber(noteL.note.duration) > 2) { + blackNoteHeadCount++; + } + if ((whiteNoteHeadCount !== 2 && blackNoteHeadCount !== 2) || + noteU.note.getModifiersByType(_typeguard__WEBPACK_IMPORTED_MODULE_6__.Category.Dot).length !== noteL.note.getModifiersByType(_typeguard__WEBPACK_IMPORTED_MODULE_6__.Category.Dot).length) { + xShift = voiceXShift + 2; + if (noteU.stemDirection === noteL.stemDirection) { + // upper voice is middle voice, so shift it right + noteU.note.setXShift(xShift); + } + else { + // shift lower voice right + noteL.note.setXShift(xShift); + } + } + else if (lineDiff < 1 && lineDiff > 0) { + //if the notes are quite close but not on the same line, shift + xShift = voiceXShift + 2; + if (noteU.stemDirection === noteL.stemDirection) { + // upper voice is middle voice, so shift it right + noteU.note.setXShift(xShift); + } + else { + // shift lower voice right + noteL.note.setXShift(xShift); + } + } + else if (noteU.note.voice !== noteL.note.voice) { + //If we are not in the same voice + if (noteU.stemDirection === noteL.stemDirection) { + if (noteU.line != noteL.line) { + xShift = voiceXShift + 2; + noteU.note.setXShift(xShift); + } + else { + //same line, swap stem direction for one note + if (noteL.stemDirection === 1) { + noteL.stemDirection = -1; + noteL.note.setStemDirection(-1); + } + } + } + } //Very close whole notes + } + else if (lineDiff < 1) { + xShift = voiceXShift + 2; + if (noteU.stemDirection === noteL.stemDirection) { + // upper voice is middle voice, so shift it right + noteU.note.setXShift(xShift); + } + else { + // shift lower voice right + noteL.note.setXShift(xShift); + } + } + else if (noteU.note.hasStem()) { + noteU.stemDirection = -noteU.note.getStemDirection(); + noteU.note.setStemDirection(noteU.stemDirection); + } + else if (noteL.note.hasStem()) { + noteL.stemDirection = -noteL.note.getStemDirection(); + noteL.note.setStemDirection(noteL.stemDirection); + } + } + } + // format complete + state.right_shift += xShift; + return true; + } + if (!noteM) + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('InvalidState', 'noteM not defined.'); + // For three voices, test if rests can be repositioned + // + // Special case 1 :: middle voice rest between two notes + // + if (noteM.isrest && !noteU.isrest && !noteL.isrest) { + if (noteU.minLine <= noteM.maxLine || noteM.minLine <= noteL.maxLine) { + const restHeight = noteM.maxLine - noteM.minLine; + const space = noteU.minLine - noteL.maxLine; + if (restHeight < space) { + // center middle voice rest between the upper and lower voices + centerRest(noteM, noteU, noteL); + } + else { + xShift = voiceXShift + 2; // shift middle rest right + noteM.note.setXShift(xShift); + if (noteL.note.hasBeam() === false) { + noteL.stemDirection = -1; + noteL.note.setStemDirection(-1); + } + if (noteU.minLine <= noteL.maxLine && noteU.note.hasBeam() === false) { + noteU.stemDirection = 1; + noteU.note.setStemDirection(1); + } + } + // format complete + state.right_shift += xShift; + return true; + } + } + // Special case 2 :: all voices are rests + if (noteU.isrest && noteM.isrest && noteL.isrest) { + // Hide upper voice rest + noteU.note.render_options.draw = false; + // Hide lower voice rest + noteL.note.render_options.draw = false; + // format complete + state.right_shift += xShift; + return true; + } + // Test if any other rests can be repositioned + if (noteM.isrest && noteU.isrest && noteM.minLine <= noteL.maxLine) { + // Hide middle voice rest + noteM.note.render_options.draw = false; + } + if (noteM.isrest && noteL.isrest && noteU.minLine <= noteM.maxLine) { + // Hide middle voice rest + noteM.note.render_options.draw = false; + } + if (noteU.isrest && noteU.minLine <= noteM.maxLine) { + // shift upper voice rest up; + shiftRestVertical(noteU, noteM, 1); + } + if (noteL.isrest && noteM.minLine <= noteL.maxLine) { + // shift lower voice rest down + shiftRestVertical(noteL, noteM, -1); + } + // If middle voice intersects upper or lower voice + if (noteU.minLine <= noteM.maxLine + 0.5 || noteM.minLine <= noteL.maxLine) { + // shift middle note right + xShift = voiceXShift + 2; + noteM.note.setXShift(xShift); + if (noteL.note.hasBeam() === false) { + noteL.stemDirection = -1; + noteL.note.setStemDirection(-1); + } + if (noteU.minLine <= noteL.maxLine && noteU.note.hasBeam() === false) { + noteU.stemDirection = 1; + noteU.note.setStemDirection(1); + } + } + state.right_shift += xShift; + return true; + } + static postFormat(notes) { + if (!notes) + return false; + notes.forEach((note) => note.postFormat()); + return true; + } + reset() { + super.reset(); + // Save prior noteHead styles & reapply them after making new noteheads. + const noteHeadStyles = this._noteHeads.map((noteHead) => noteHead.getStyle()); + this.buildNoteHeads(); + this._noteHeads.forEach((noteHead, index) => { + const noteHeadStyle = noteHeadStyles[index]; + if (noteHeadStyle) + noteHead.setStyle(noteHeadStyle); + }); + const stave = this.stave; + if (stave) { + this._noteHeads.forEach((head) => head.setStave(stave)); + } + this.calcNoteDisplacements(); + return this; + } + setBeam(beam) { + this.beam = beam; + this.calcNoteDisplacements(); + // Update stem extension if a beam is assigned. + if (this.stem) { + this.stem.setExtension(this.getStemExtension()); + } + return this; + } + // Builds a `Stem` for the note + buildStem() { + this.setStem(new _stem__WEBPACK_IMPORTED_MODULE_3__.Stem({ hide: !!this.isRest() })); + return this; + } + // Builds a `NoteHead` for each key in the note + buildNoteHeads() { + this._noteHeads = []; + const stemDirection = this.getStemDirection(); + const keys = this.getKeys(); + let lastLine = undefined; + let lineDiff = undefined; + let displaced = false; + // Draw notes from bottom to top. + // For down-stem notes, we draw from top to bottom. + let start; + let end; + let step; + if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP) { + start = 0; + end = keys.length; + step = 1; + } + else { + start = keys.length - 1; + end = -1; + step = -1; + } + for (let i = start; i !== end; i += step) { + // Building noteheads rely on sortedKeNotes in order to calculate the displacements + const noteProps = this.sortedKeyProps[i].keyProps; + const line = noteProps.line; + // Keep track of last line with a note head, so that consecutive heads + // are correctly displaced. + if (lastLine === undefined) { + lastLine = line; + } + else { + lineDiff = Math.abs(lastLine - line); + if (lineDiff === 0 || lineDiff === 0.5) { + displaced = !displaced; + } + else { + displaced = false; + this.use_default_head_x = true; + } + } + lastLine = line; + const notehead = new _notehead__WEBPACK_IMPORTED_MODULE_2__.NoteHead({ + duration: this.duration, + note_type: this.noteType, + displaced, + stem_direction: stemDirection, + custom_glyph_code: noteProps.code, + glyph_font_scale: this.render_options.glyph_font_scale, + x_shift: noteProps.shift_right, + stem_up_x_offset: noteProps.stem_up_x_offset, + stem_down_x_offset: noteProps.stem_down_x_offset, + line: noteProps.line, + }); + this.addChildElement(notehead); + this._noteHeads[this.sortedKeyProps[i].index] = notehead; + } + } + // Automatically sets the stem direction based on the keys in the note + autoStem() { + this.setStemDirection(this.calculateOptimalStemDirection()); + } + calculateOptimalStemDirection() { + // Figure out optimal stem direction based on given notes + // minLine & maxLine rely on sortedKeyProps + this.minLine = this.sortedKeyProps[0].keyProps.line; + this.maxLine = this.sortedKeyProps[this.keyProps.length - 1].keyProps.line; + const MIDDLE_LINE = 3; + const decider = (this.minLine + this.maxLine) / 2; + const stemDirection = decider < MIDDLE_LINE ? _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP : _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.DOWN; + return stemDirection; + } + // Calculates and stores the properties for each key in the note + calculateKeyProps() { + let lastLine; + for (let i = 0; i < this.keys.length; ++i) { + const key = this.keys[i]; + // All rests use the same position on the line. + // if (this.glyph.rest) key = this.glyph.position; + if (this.glyph.rest) + this.glyph.position = key; + const options = { octave_shift: this.octave_shift || 0, duration: this.duration }; + const props = _tables__WEBPACK_IMPORTED_MODULE_5__.Tables.keyProperties(key, this.clef, options); + if (!props) { + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('BadArguments', `Invalid key for note properties: ${key}`); + } + // Override line placement for default rests + if (props.key === 'R') { + if (this.duration === '1' || this.duration === 'w') { + props.line = 4; + } + else { + props.line = 3; + } + } + // Calculate displacement of this note + const line = props.line; + if (lastLine == undefined) { + lastLine = line; + } + else { + if (Math.abs(lastLine - line) === 0.5) { + this.displaced = true; + props.displaced = true; + // Have to mark the previous note as + // displaced as well, for modifier placement + if (this.keyProps.length > 0) { + this.keyProps[i - 1].displaced = true; + } + } + } + lastLine = line; + this.keyProps.push(props); + } + // Sort the notes from lowest line to highest line in sortedKeyProps + // Warn no longer required as keyProps remains unsorted + this.keyProps.forEach((keyProps, index) => { + this.sortedKeyProps.push({ keyProps, index }); + }); + this.sortedKeyProps.sort((a, b) => a.keyProps.line - b.keyProps.line); + } + // Get the `BoundingBox` for the entire note + getBoundingBox() { + var _a, _b; + if (!this.preFormatted) { + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('UnformattedNote', "Can't call getBoundingBox on an unformatted note."); + } + const { width: w, modLeftPx, leftDisplacedHeadPx } = this.getMetrics(); + const x = this.getAbsoluteX() - modLeftPx - leftDisplacedHeadPx; + let minY = 0; + let maxY = 0; + const halfLineSpacing = ((_b = (_a = this.getStave()) === null || _a === void 0 ? void 0 : _a.getSpacingBetweenLines()) !== null && _b !== void 0 ? _b : 0) / 2; + const lineSpacing = halfLineSpacing * 2; + if (this.isRest()) { + const y = this.ys[0]; + const frac = _tables__WEBPACK_IMPORTED_MODULE_5__.Tables.durationToFraction(this.duration); + if (frac.equals(1) || frac.equals(2)) { + minY = y - halfLineSpacing; + maxY = y + halfLineSpacing; + } + else { + minY = y - this.glyph.line_above * lineSpacing; + maxY = y + this.glyph.line_below * lineSpacing; + } + } + else if (this.glyph.stem) { + const ys = this.getStemExtents(); + ys.baseY += halfLineSpacing * this.getStemDirection(); + minY = Math.min(ys.topY, ys.baseY); + maxY = Math.max(ys.topY, ys.baseY); + } + else { + minY = 0; + maxY = 0; + for (let i = 0; i < this.ys.length; ++i) { + const yy = this.ys[i]; + if (i === 0) { + minY = yy; + maxY = yy; + } + else { + minY = Math.min(yy, minY); + maxY = Math.max(yy, maxY); + } + } + minY -= halfLineSpacing; + maxY += halfLineSpacing; + } + return new _boundingbox__WEBPACK_IMPORTED_MODULE_0__.BoundingBox(x, minY, w, maxY - minY); + } + // Gets the line number of the bottom note in the chord. + // If `isTopNote` is `true` then get the top note's line number instead + getLineNumber(isTopNote) { + if (!this.keyProps.length) { + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('NoKeyProps', "Can't get bottom note line, because note is not initialized properly."); + } + let resultLine = this.keyProps[0].line; + // No precondition assumed for sortedness of keyProps array + for (let i = 0; i < this.keyProps.length; i++) { + const thisLine = this.keyProps[i].line; + if (isTopNote) { + if (thisLine > resultLine) + resultLine = thisLine; + } + else { + if (thisLine < resultLine) + resultLine = thisLine; + } + } + return resultLine; + } + /** + * @returns true if this note is a type of rest. Rests don't have pitches, but take up space in the score. + */ + isRest() { + return this.glyph.rest; + } + // Determine if the current note is a chord + isChord() { + return !this.isRest() && this.keys.length > 1; + } + // Determine if the `StaveNote` has a stem + hasStem() { + return this.glyph.stem; + } + hasFlag() { + return super.hasFlag() && !this.isRest(); + } + getStemX() { + if (this.noteType === 'r') { + return this.getCenterGlyphX(); + } + else { + // We adjust the origin of the stem because we want the stem left-aligned + // with the notehead if stemmed-down, and right-aligned if stemmed-up + return super.getStemX() + (this.stem_direction ? _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.WIDTH / (2 * -this.stem_direction) : 0); + } + } + // Get the `y` coordinate for text placed on the top/bottom of a + // note at a desired `text_line` + getYForTopText(textLine) { + const extents = this.getStemExtents(); + return Math.min(this.checkStave().getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1)); + } + getYForBottomText(textLine) { + const extents = this.getStemExtents(); + return Math.max(this.checkStave().getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine); + } + // Sets the current note to the provided `stave`. This applies + // `y` values to the `NoteHeads`. + setStave(stave) { + super.setStave(stave); + const ys = this._noteHeads.map((notehead) => { + notehead.setStave(stave); + return notehead.getY(); + }); + this.setYs(ys); + if (this.stem) { + const { y_top, y_bottom } = this.getNoteHeadBounds(); + this.stem.setYBounds(y_top, y_bottom); + } + return this; + } + // Check if note is shifted to the right + isDisplaced() { + return this.displaced; + } + // Sets whether shift note to the right. `displaced` is a `boolean` + setNoteDisplaced(displaced) { + this.displaced = displaced; + return this; + } + // Get the starting `x` coordinate for a `StaveTie` + getTieRightX() { + let tieStartX = this.getAbsoluteX(); + tieStartX += this.getGlyphWidth() + this.x_shift + this.rightDisplacedHeadPx; + if (this.modifierContext) + tieStartX += this.modifierContext.getRightShift(); + return tieStartX; + } + // Get the ending `x` coordinate for a `StaveTie` + getTieLeftX() { + let tieEndX = this.getAbsoluteX(); + tieEndX += this.x_shift - this.leftDisplacedHeadPx; + return tieEndX; + } + // Get the stave line on which to place a rest + getLineForRest() { + let restLine = this.keyProps[0].line; + if (this.keyProps.length > 1) { + const lastLine = this.keyProps[this.keyProps.length - 1].line; + const top = Math.max(restLine, lastLine); + const bot = Math.min(restLine, lastLine); + restLine = (0,_util__WEBPACK_IMPORTED_MODULE_7__.midLine)(top, bot); + } + return restLine; + } + // Get the default `x` and `y` coordinates for the provided `position` + // and key `index` + getModifierStartXY(position, index, options = {}) { + var _a, _b; + if (!this.preFormatted) { + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('UnformattedNote', "Can't call GetModifierStartXY on an unformatted note"); + } + if (this.ys.length === 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('NoYValues', 'No Y-Values calculated for this note.'); + } + const { ABOVE, BELOW, LEFT, RIGHT } = _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position; + let x = 0; + if (position === LEFT) { + // FIXME: Left modifier padding, move to font file + x = -1 * 2; + } + else if (position === RIGHT) { + // FIXME: Right modifier padding, move to font file + x = this.getGlyphWidth() + this.x_shift + 2; + if (this.stem_direction === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP && + this.hasFlag() && + (options.forceFlagRight || isInnerNoteIndex(this, index))) { + x += (_b = (_a = this === null || this === void 0 ? void 0 : this.flag) === null || _a === void 0 ? void 0 : _a.getMetrics().width) !== null && _b !== void 0 ? _b : 0; + } + } + else if (position === BELOW || position === ABOVE) { + x = this.getGlyphWidth() / 2; + } + return { + x: this.getAbsoluteX() + x, + y: this.ys[index], + }; + } + // Sets the style of the complete StaveNote, including all keys + // and the stem. + setStyle(style) { + return super.setGroupStyle(style); + } + setStemStyle(style) { + const stem = this.getStem(); + if (stem) + stem.setStyle(style); + return this; + } + getStemStyle() { + var _a; + return (_a = this.stem) === null || _a === void 0 ? void 0 : _a.getStyle(); + } + setLedgerLineStyle(style) { + this.ledgerLineStyle = style; + } + getLedgerLineStyle() { + return this.ledgerLineStyle; + } + setFlagStyle(style) { + var _a; + (_a = this.flag) === null || _a === void 0 ? void 0 : _a.setStyle(style); + } + getFlagStyle() { + var _a; + return (_a = this.flag) === null || _a === void 0 ? void 0 : _a.getStyle(); + } + // Sets the notehead at `index` to the provided coloring `style`. + // + // `style` is an `object` with the following properties: `shadowColor`, + // `shadowBlur`, `fillStyle`, `strokeStyle` + setKeyStyle(index, style) { + this._noteHeads[index].setStyle(style); + return this; + } + setKeyLine(index, line) { + this.keyProps[index].line = line; + this.reset(); + return this; + } + getKeyLine(index) { + return this.keyProps[index].line; + } + // Get the width of the note if it is displaced. Used for `Voice` + // formatting + getVoiceShiftWidth() { + // TODO: may need to accommodate for dot here. + return this.getGlyphWidth() * (this.displaced ? 2 : 1); + } + // Calculates and sets the extra pixels to the left or right + // if the note is displaced. + calcNoteDisplacements() { + this.setLeftDisplacedHeadPx(this.displaced && this.stem_direction === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.DOWN ? this.getGlyphWidth() : 0); + // For upstems with flags, the extra space is unnecessary, since it's taken + // up by the flag. + this.setRightDisplacedHeadPx(!this.hasFlag() && this.displaced && this.stem_direction === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP ? this.getGlyphWidth() : 0); + } + // Pre-render formatting + preFormat() { + if (this.preFormatted) + return; + let noteHeadPadding = 0; + if (this.modifierContext) { + this.modifierContext.preFormat(); + // If there are no modifiers on this note, make sure there is adequate padding + // between the notes. + if (this.modifierContext.getWidth() === 0) { + noteHeadPadding = StaveNote.minNoteheadPadding; + } + } + let width = this.getGlyphWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx + noteHeadPadding; + // For upward flagged notes, the width of the flag needs to be added + if (this.shouldDrawFlag() && this.stem_direction === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP) { + width += this.getGlyphWidth(); + // TODO: Add flag width as a separate metric + } + this.setWidth(width); + this.preFormatted = true; + } + /** + * @typedef {Object} noteHeadBounds + * @property {number} y_top the highest notehead bound + * @property {number} y_bottom the lowest notehead bound + * @property {number|Null} displaced_x the starting x for displaced noteheads + * @property {number|Null} non_displaced_x the starting x for non-displaced noteheads + * @property {number} highest_line the highest notehead line in traditional music line + * numbering (bottom line = 1, top line = 5) + * @property {number} lowest_line the lowest notehead line + * @property {number|false} highest_displaced_line the highest staff line number + * for a displaced notehead + * @property {number|false} lowest_displaced_line + * @property {number} highest_non_displaced_line + * @property {number} lowest_non_displaced_line + */ + /** + * Get the staff line and y value for the highest & lowest noteheads + * @returns {noteHeadBounds} + */ + getNoteHeadBounds() { + // Top and bottom Y values for stem. + let yTop = +Infinity; + let yBottom = -Infinity; + let nonDisplacedX; + let displacedX; + let highestLine = this.checkStave().getNumLines(); + let lowestLine = 1; + let highestDisplacedLine; + let lowestDisplacedLine; + let highestNonDisplacedLine = highestLine; + let lowestNonDisplacedLine = lowestLine; + this._noteHeads.forEach((notehead) => { + const line = notehead.getLine(); + const y = notehead.getY(); + yTop = Math.min(y, yTop); + yBottom = Math.max(y, yBottom); + if (displacedX === undefined && notehead.isDisplaced()) { + displacedX = notehead.getAbsoluteX(); + } + if (nonDisplacedX === undefined && !notehead.isDisplaced()) { + nonDisplacedX = notehead.getAbsoluteX(); + } + highestLine = Math.max(line, highestLine); + lowestLine = Math.min(line, lowestLine); + if (notehead.isDisplaced()) { + highestDisplacedLine = highestDisplacedLine === undefined ? line : Math.max(line, highestDisplacedLine); + lowestDisplacedLine = lowestDisplacedLine === undefined ? line : Math.min(line, lowestDisplacedLine); + } + else { + highestNonDisplacedLine = Math.max(line, highestNonDisplacedLine); + lowestNonDisplacedLine = Math.min(line, lowestNonDisplacedLine); + } + }, this); + return { + y_top: yTop, + y_bottom: yBottom, + displaced_x: displacedX, + non_displaced_x: nonDisplacedX, + highest_line: highestLine, + lowest_line: lowestLine, + highest_displaced_line: highestDisplacedLine, + lowest_displaced_line: lowestDisplacedLine, + highest_non_displaced_line: highestNonDisplacedLine, + lowest_non_displaced_line: lowestNonDisplacedLine, + }; + } + // Get the starting `x` coordinate for the noteheads + getNoteHeadBeginX() { + return this.getAbsoluteX() + this.x_shift; + } + // Get the ending `x` coordinate for the noteheads + getNoteHeadEndX() { + const xBegin = this.getNoteHeadBeginX(); + return xBegin + this.getGlyphWidth(); + } + get noteHeads() { + return this._noteHeads.slice(); + } + /** @deprecated use StaveNote.noteHeads instead. */ + get note_heads() { + showDeprecationWarningForNoteHeads(); + return this.noteHeads; + } + // Draw the ledger lines between the stave and the highest/lowest keys + drawLedgerLines() { + const stave = this.checkStave(); + const { glyph, render_options: { stroke_px }, } = this; + const ctx = this.checkContext(); + const width = glyph.getWidth() + stroke_px * 2; + const doubleWidth = 2 * (glyph.getWidth() + stroke_px) - _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.WIDTH / 2; + if (this.isRest()) + return; + if (!ctx) { + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('NoCanvasContext', "Can't draw without a canvas context."); + } + const { highest_line, lowest_line, highest_displaced_line, highest_non_displaced_line, lowest_displaced_line, lowest_non_displaced_line, displaced_x, non_displaced_x, } = this.getNoteHeadBounds(); + // Early out if there are no ledger lines to draw. + if (highest_line < 6 && lowest_line > 0) + return; + const min_x = Math.min(displaced_x !== null && displaced_x !== void 0 ? displaced_x : 0, non_displaced_x !== null && non_displaced_x !== void 0 ? non_displaced_x : 0); + const drawLedgerLine = (y, normal, displaced) => { + let x; + if (displaced && normal) + x = min_x - stroke_px; + else if (normal) + x = (non_displaced_x !== null && non_displaced_x !== void 0 ? non_displaced_x : 0) - stroke_px; + else + x = (displaced_x !== null && displaced_x !== void 0 ? displaced_x : 0) - stroke_px; + const ledgerWidth = normal && displaced ? doubleWidth : width; + ctx.beginPath(); + ctx.moveTo(x, y); + ctx.lineTo(x + ledgerWidth, y); + ctx.stroke(); + }; + const style = Object.assign(Object.assign({}, stave.getDefaultLedgerLineStyle()), this.getLedgerLineStyle()); + this.applyStyle(ctx, style); + // Draw ledger lines below the staff: + for (let line = 6; line <= highest_line; ++line) { + const normal = non_displaced_x !== undefined && line <= highest_non_displaced_line; + const displaced = highest_displaced_line !== undefined && line <= highest_displaced_line; + drawLedgerLine(stave.getYForNote(line), normal, displaced); + } + // Draw ledger lines above the staff: + for (let line = 0; line >= lowest_line; --line) { + const normal = non_displaced_x !== undefined && line >= lowest_non_displaced_line; + const displaced = lowest_displaced_line !== undefined && line >= lowest_displaced_line; + drawLedgerLine(stave.getYForNote(line), normal, displaced); + } + this.restoreStyle(ctx, style); + } + // Draw all key modifiers + drawModifiers(noteheadParam) { + const ctx = this.checkContext(); + for (let i = 0; i < this.modifiers.length; i++) { + const modifier = this.modifiers[i]; + const index = modifier.checkIndex(); + const notehead = this._noteHeads[index]; + if (notehead == noteheadParam) { + const noteheadStyle = notehead.getStyle(); + notehead.applyStyle(ctx, noteheadStyle); + modifier.setContext(ctx); + modifier.drawWithStyle(); + notehead.restoreStyle(ctx, noteheadStyle); + } + } + } + shouldDrawFlag() { + const hasStem = this.stem !== undefined; + const hasFlag = this.glyph.flag; // specified in tables.js + const hasNoBeam = this.beam === undefined; + return hasStem && hasFlag && hasNoBeam; + } + // Draw the flag for the note + drawFlag() { + var _a, _b, _c, _d, _e; + const ctx = this.checkContext(); + if (!ctx) { + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('NoCanvasContext', "Can't draw without a canvas context."); + } + if (this.shouldDrawFlag()) { + const { y_top, y_bottom } = this.getNoteHeadBounds(); + // eslint-disable-next-line + const noteStemHeight = this.stem.getHeight(); + const flagX = this.getStemX(); + // What's with the magic +/- 2 + // ANSWER: a corner of the note stem pokes out beyond the tip of the flag. + // The extra +/- 2 pushes the flag glyph outward so it covers the stem entirely. + // Alternatively, we could shorten the stem. + const flagY = this.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.DOWN + ? // Down stems are below the note head and have flags on the right. + y_top - + noteStemHeight + + 2 - + (this.glyph ? this.glyph.stem_down_extension : 0) * this.getStaveNoteScale() - + ((_b = (_a = this.flag) === null || _a === void 0 ? void 0 : _a.getMetrics().y_shift) !== null && _b !== void 0 ? _b : 0) * (1 - this.getStaveNoteScale()) + : // Up stems are above the note head and have flags on the right. + y_bottom - + noteStemHeight - + 2 + + (this.glyph ? this.glyph.stem_up_extension : 0) * this.getStaveNoteScale() - + ((_d = (_c = this.flag) === null || _c === void 0 ? void 0 : _c.getMetrics().y_shift) !== null && _d !== void 0 ? _d : 0) * (1 - this.getStaveNoteScale()); + // Draw the Flag + (_e = this.flag) === null || _e === void 0 ? void 0 : _e.render(ctx, flagX, flagY); + } + } + // Draw the NoteHeads + drawNoteHeads() { + const ctx = this.checkContext(); + this._noteHeads.forEach((notehead) => { + ctx.openGroup('notehead', notehead.getAttribute('id'), { pointerBBox: true }); + notehead.setContext(ctx).draw(); + this.drawModifiers(notehead); + ctx.closeGroup(); + }); + } + drawStem(stemOptions) { + // GCR TODO: I can't find any context in which this is called with the stemStruct + // argument in the codebase or tests. Nor can I find a case where super.drawStem + // is called at all. Perhaps these should be removed? + const ctx = this.checkContext(); + if (stemOptions) { + this.setStem(new _stem__WEBPACK_IMPORTED_MODULE_3__.Stem(stemOptions)); + } + // If we will render a flag, we shorten the stem so that the tip + // does not poke through the flag. + if (this.shouldDrawFlag() && this.stem) { + this.stem.adjustHeightForFlag(); + } + if (this.stem) { + this.stem.setContext(ctx).draw(); + } + } + /** Primarily used as the scaling factor for grace notes, GraceNote will return the required scale. */ + getStaveNoteScale() { + return 1.0; + } + /** + * Override stemmablenote stem extension to adjust for distance from middle line. + */ + getStemExtension() { + const super_stem_extension = super.getStemExtension(); + if (!this.glyph.stem) { + return super_stem_extension; + } + const stem_direction = this.getStemDirection(); + if (stem_direction !== this.calculateOptimalStemDirection()) { + return super_stem_extension; // no adjustment for manually set stem direction. + } + let mid_line_distance; + const MIDDLE_LINE = 3; + if (stem_direction === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP) { + // Note that the use of maxLine here instead of minLine might + // seem counterintuitive, but in the case of (say) treble clef + // chord(F2, E4) stem up, we do not want to extend the stem because + // of F2, when a normal octave-length stem above E4 is fine. + // + // maxLine and minLine are set in calculateOptimalStemDirection() so + // will be known. + mid_line_distance = MIDDLE_LINE - this.maxLine; + } + else { + mid_line_distance = this.minLine - MIDDLE_LINE; + } + // how many lines more than an octave is the relevant notehead? + const lines_over_octave_from_mid_line = mid_line_distance - 3.5; + if (lines_over_octave_from_mid_line <= 0) { + return super_stem_extension; + } + const stave = this.getStave(); + let spacing_between_lines = 10; + if (stave != undefined) { + spacing_between_lines = stave.getSpacingBetweenLines(); + } + return super_stem_extension + lines_over_octave_from_mid_line * spacing_between_lines; + } + // Draws all the `StaveNote` parts. This is the main drawing method. + draw() { + if (this.render_options.draw === false) + return; + if (this.ys.length === 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('NoYValues', "Can't draw note without Y values."); + } + const ctx = this.checkContext(); + const xBegin = this.getNoteHeadBeginX(); + const shouldRenderStem = this.hasStem() && !this.beam; + // Format note head x positions + this._noteHeads.forEach((notehead) => notehead.setX(xBegin)); + if (this.stem) { + // Format stem x positions + const stemX = this.getStemX(); + this.stem.setNoteHeadXBounds(stemX, stemX); + } + L('Rendering ', this.isChord() ? 'chord :' : 'note :', this.keys); + // Apply the overall style -- may be contradicted by local settings: + this.applyStyle(); + ctx.openGroup('stavenote', this.getAttribute('id')); + this.drawLedgerLines(); + if (shouldRenderStem) + this.drawStem(); + this.drawNoteHeads(); + this.drawFlag(); + ctx.closeGroup(); + this.restoreStyle(); + this.setRendered(); + } +} +StaveNote.DEBUG = false; + + +/***/ }), + +/***/ "./src/staverepetition.ts": +/*!********************************!*\ + !*** ./src/staverepetition.ts ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Repetition": () => (/* binding */ Repetition) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Larry Kuhns 2011 + + + + + +class Repetition extends _stavemodifier__WEBPACK_IMPORTED_MODULE_2__.StaveModifier { + constructor(type, x, y_shift) { + super(); + this.symbol_type = type; + this.x = x; + this.x_shift = 0; + this.y_shift = y_shift; + this.resetFont(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_4__.Category.Repetition; + } + setShiftX(x) { + this.x_shift = x; + return this; + } + setShiftY(y) { + this.y_shift = y; + return this; + } + draw(stave, x) { + this.setRendered(); + switch (this.symbol_type) { + case Repetition.type.CODA_RIGHT: + this.drawCodaFixed(stave, x + stave.getWidth()); + break; + case Repetition.type.CODA_LEFT: + this.drawSymbolText(stave, x, 'Coda', true); + break; + case Repetition.type.SEGNO_LEFT: + this.drawSignoFixed(stave, x); + break; + case Repetition.type.SEGNO_RIGHT: + this.drawSignoFixed(stave, x + stave.getWidth()); + break; + case Repetition.type.DC: + this.drawSymbolText(stave, x, 'D.C.', false); + break; + case Repetition.type.DC_AL_CODA: + this.drawSymbolText(stave, x, 'D.C. al', true); + break; + case Repetition.type.DC_AL_FINE: + this.drawSymbolText(stave, x, 'D.C. al Fine', false); + break; + case Repetition.type.DS: + this.drawSymbolText(stave, x, 'D.S.', false); + break; + case Repetition.type.DS_AL_CODA: + this.drawSymbolText(stave, x, 'D.S. al', true); + break; + case Repetition.type.DS_AL_FINE: + this.drawSymbolText(stave, x, 'D.S. al Fine', false); + break; + case Repetition.type.FINE: + this.drawSymbolText(stave, x, 'Fine', false); + break; + case Repetition.type.TO_CODA: + this.drawSymbolText(stave, x, 'To', true); + break; + default: + break; + } + return this; + } + drawCodaFixed(stave, x) { + const y = stave.getYForTopText(stave.getNumLines()) + this.y_shift; + _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderGlyph(stave.checkContext(), this.x + x + this.x_shift, y + _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric('staveRepetition.coda.offsetY'), 40, 'coda', { category: 'coda' }); + return this; + } + drawSignoFixed(stave, x) { + const y = stave.getYForTopText(stave.getNumLines()) + this.y_shift; + _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderGlyph(stave.checkContext(), this.x + x + this.x_shift, y + _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric('staveRepetition.segno.offsetY'), 30, 'segno', { category: 'segno' }); + return this; + } + drawSymbolText(stave, x, text, draw_coda) { + const ctx = stave.checkContext(); + ctx.save(); + ctx.setFont(this.textFont); + let text_x = 0; + let symbol_x = 0; + const modifierWidth = stave.getNoteStartX() - this.x; + switch (this.symbol_type) { + // To the left with symbol + case Repetition.type.CODA_LEFT: + // Offset Coda text to right of stave beginning + text_x = this.x + stave.getVerticalBarWidth(); + symbol_x = + text_x + + ctx.measureText(text).width + + _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX'); + break; + // To the right without symbol + case Repetition.type.DC: + case Repetition.type.DC_AL_FINE: + case Repetition.type.DS: + case Repetition.type.DS_AL_FINE: + case Repetition.type.FINE: + text_x = + this.x + + x + + this.x_shift + + stave.getWidth() - + _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.spacing') - + modifierWidth - + ctx.measureText(text).width; + break; + // To the right with symbol + default: + text_x = + this.x + + x + + this.x_shift + + stave.getWidth() - + _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.spacing') - + modifierWidth - + ctx.measureText(text).width - + _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX'); + symbol_x = + text_x + + ctx.measureText(text).width + + _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX'); + break; + } + const y = stave.getYForTopText(stave.getNumLines()) + + this.y_shift + + _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetY'); + if (draw_coda) { + _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderGlyph(ctx, symbol_x, y, 40, 'coda', { category: 'coda' }); + } + ctx.fillText(text, text_x, y + 5); + ctx.restore(); + return this; + } +} +Repetition.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SERIF, + size: 12, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.BOLD, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL, +}; +Repetition.type = { + NONE: 1, + CODA_LEFT: 2, + CODA_RIGHT: 3, + SEGNO_LEFT: 4, + SEGNO_RIGHT: 5, + DC: 6, + DC_AL_CODA: 7, + DC_AL_FINE: 8, + DS: 9, + DS_AL_CODA: 10, + DS_AL_FINE: 11, + FINE: 12, + TO_CODA: 13, // To Coda at end of stave +}; + + +/***/ }), + +/***/ "./src/stavesection.ts": +/*!*****************************!*\ + !*** ./src/stavesection.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveSection": () => (/* binding */ StaveSection) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Larry Kuhns 2011 + + + +class StaveSection extends _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifier { + constructor(section, x, shift_y, drawRect = true) { + super(); + this.setWidth(16); + this.section = section; + this.x = x; + this.shift_x = 0; + this.shift_y = shift_y; + this.drawRect = drawRect; + this.resetFont(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.StaveSection; + } + setStaveSection(section) { + this.section = section; + return this; + } + setShiftX(x) { + this.shift_x = x; + return this; + } + setShiftY(y) { + this.shift_y = y; + return this; + } + draw(stave, shift_x) { + const ctx = stave.checkContext(); + this.setRendered(); + ctx.save(); + ctx.setLineWidth(2); + ctx.setFont(this.textFont); + const paddingX = 2; + const paddingY = 2; + const rectWidth = 2; + const textMeasurements = ctx.measureText(this.section); + const textWidth = textMeasurements.width; + const textHeight = textMeasurements.height; + const width = textWidth + 2 * paddingX; // add left & right padding + const height = textHeight + 2 * paddingY; // add top & bottom padding + // Seems to be a good default y + const y = stave.getYForTopText(1.5) + this.shift_y; + const x = this.x + shift_x; + if (this.drawRect) { + ctx.beginPath(); + ctx.setLineWidth(rectWidth); + ctx.rect(x, y + textMeasurements.y - paddingY, width, height); + ctx.stroke(); + } + ctx.fillText(this.section, x + paddingX, y); + ctx.restore(); + return this; + } +} +StaveSection.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SANS_SERIF, + size: 10, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.BOLD, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL, +}; + + +/***/ }), + +/***/ "./src/stavetempo.ts": +/*!***************************!*\ + !*** ./src/stavetempo.ts ***! + \***************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveTempo": () => (/* binding */ StaveTempo) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Radosaw Eichler 2012 + + + + + +class StaveTempo extends _stavemodifier__WEBPACK_IMPORTED_MODULE_2__.StaveModifier { + constructor(tempo, x, shift_y) { + super(); + /** Font size for note. */ + this.render_options = { glyph_font_scale: 30 }; + this.tempo = tempo; + this.position = _stavemodifier__WEBPACK_IMPORTED_MODULE_2__.StaveModifierPosition.ABOVE; + this.x = x; + this.shift_x = 10; + this.shift_y = shift_y; + this.resetFont(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_4__.Category.StaveTempo; + } + setTempo(tempo) { + this.tempo = tempo; + return this; + } + setShiftX(x) { + this.shift_x = x; + return this; + } + setShiftY(y) { + this.shift_y = y; + return this; + } + draw(stave, shift_x) { + const ctx = stave.checkContext(); + this.setRendered(); + const options = this.render_options; + // FIXME: What does the '38' mean? Why 38? Is that supposed to + // be the default font size for standard notation? + const scale = options.glyph_font_scale / 38; + const name = this.tempo.name; + const duration = this.tempo.duration; + const dots = this.tempo.dots || 0; + const bpm = this.tempo.bpm; + let x = this.x + this.shift_x + shift_x; + const y = stave.getYForTopText(1) + this.shift_y; + ctx.save(); + if (name) { + ctx.setFont(this.textFont); + ctx.fillText(name, x, y); + x += ctx.measureText(name).width; + } + if (duration && bpm) { + // Override the weight and style. + ctx.setFont(Object.assign(Object.assign({}, this.textFont), { weight: 'normal', style: 'normal' })); + if (name) { + x += ctx.measureText(' ').width; + ctx.fillText('(', x, y); + x += ctx.measureText('(').width; + } + const code = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.getGlyphProps(duration); + x += 3 * scale; + _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderGlyph(ctx, x, y, options.glyph_font_scale, code.code_head); + x += code.getWidth() * scale; + // Draw stem and flags + if (code.stem) { + let stem_height = 30; + if (code.beam_count) + stem_height += 3 * (code.beam_count - 1); + stem_height *= scale; + const y_top = y - stem_height; + ctx.fillRect(x - scale, y_top, scale, stem_height); + if (code.flag) { + _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderGlyph(ctx, x, y_top, options.glyph_font_scale, code.code_flag_upstem, { + category: 'flag.staveTempo', + }); + if (!dots) + x += 6 * scale; + } + } + // Draw dot + for (let i = 0; i < dots; i++) { + x += 6 * scale; + ctx.beginPath(); + ctx.arc(x, y + 2 * scale, 2 * scale, 0, Math.PI * 2, false); + ctx.fill(); + } + ctx.fillText(' = ' + bpm + (name ? ')' : ''), x + 3 * scale, y); + } + ctx.restore(); + return this; + } +} +StaveTempo.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SERIF, + size: 14, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.BOLD, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL, +}; + + +/***/ }), + +/***/ "./src/stavetext.ts": +/*!**************************!*\ + !*** ./src/stavetext.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveText": () => (/* binding */ StaveText) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _textnote__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./textnote */ "./src/textnote.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Taehoon Moon 2014 + + + + + +class StaveText extends _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifier { + constructor(text, position, options = {}) { + super(); + this.setWidth(16); + this.text = text; + this.position = position; + this.options = Object.assign({ shift_x: 0, shift_y: 0, justification: _textnote__WEBPACK_IMPORTED_MODULE_2__.TextNote.Justification.CENTER }, options); + this.resetFont(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.StaveText; + } + setStaveText(text) { + this.text = text; + return this; + } + setShiftX(x) { + this.shift_x = x; + return this; + } + setShiftY(y) { + this.shift_y = y; + return this; + } + setText(text) { + this.text = text; + return this; + } + draw(stave) { + const ctx = stave.checkContext(); + this.setRendered(); + ctx.save(); + ctx.setLineWidth(2); + ctx.setFont(this.textFont); + const text_width = ctx.measureText('' + this.text).width; + let x; + let y; + switch (this.position) { + case _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifierPosition.LEFT: + case _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifierPosition.RIGHT: + y = (stave.getYForLine(0) + stave.getBottomLineY()) / 2 + this.options.shift_y; + if (this.position === _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifierPosition.LEFT) { + x = stave.getX() - text_width - 24 + this.options.shift_x; + } + else { + x = stave.getX() + stave.getWidth() + 24 + this.options.shift_x; + } + break; + case _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifierPosition.ABOVE: + case _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifierPosition.BELOW: + x = stave.getX() + this.options.shift_x; + if (this.options.justification === _textnote__WEBPACK_IMPORTED_MODULE_2__.TextJustification.CENTER) { + x += stave.getWidth() / 2 - text_width / 2; + } + else if (this.options.justification === _textnote__WEBPACK_IMPORTED_MODULE_2__.TextJustification.RIGHT) { + x += stave.getWidth() - text_width; + } + if (this.position === _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifierPosition.ABOVE) { + y = stave.getYForTopText(2) + this.options.shift_y; + } + else { + y = stave.getYForBottomText(2) + this.options.shift_y; + } + break; + default: + throw new _util__WEBPACK_IMPORTED_MODULE_4__.RuntimeError('InvalidPosition', 'Value Must be in Modifier.Position.'); + } + ctx.fillText('' + this.text, x, y + 4); + ctx.restore(); + return this; + } +} +StaveText.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SERIF, + size: 16, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.NORMAL, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL, +}; + + +/***/ }), + +/***/ "./src/stavetie.ts": +/*!*************************!*\ + !*** ./src/stavetie.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StaveTie": () => (/* binding */ StaveTie) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// This class implements varies types of ties between contiguous notes. The +// ties include: regular ties, hammer ons, pull offs, and slides. + + + +class StaveTie extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + /** + * @param notes is a struct that has: + * + * { + * first_note: Note, + * last_note: Note, + * first_indices: [n1, n2, n3], + * last_indices: [n1, n2, n3] + * } + * + * @param text + */ + constructor(notes, text) { + super(); + this.setNotes(notes); + this.text = text; + this.render_options = { + cp1: 8, + cp2: 12, + text_shift_x: 0, + first_x_shift: 0, + last_x_shift: 0, + y_shift: 7, + tie_spacing: 0, + }; + this.resetFont(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_1__.Category.StaveTie; + } + setDirection(direction) { + this.direction = direction; + return this; + } + /** + * Set the notes to attach this tie to. + * + * @param {!Object} notes The notes to tie up. + */ + setNotes(notes) { + if (!notes.first_note && !notes.last_note) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', 'Tie needs to have either first_note or last_note set.'); + } + if (!notes.first_indices) { + notes.first_indices = [0]; + } + if (!notes.last_indices) { + notes.last_indices = [0]; + } + if (notes.first_indices.length !== notes.last_indices.length) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', 'Tied notes must have same number of indices.'); + } + this.notes = notes; + return this; + } + /** + * @return {boolean} Returns true if this is a partial bar. + */ + isPartial() { + return !this.notes.first_note || !this.notes.last_note; + } + renderTie(params) { + if (params.first_ys.length === 0 || params.last_ys.length === 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', 'No Y-values to render'); + } + const ctx = this.checkContext(); + let cp1 = this.render_options.cp1; + let cp2 = this.render_options.cp2; + if (Math.abs(params.last_x_px - params.first_x_px) < 10) { + cp1 = 2; + cp2 = 8; + } + const first_x_shift = this.render_options.first_x_shift; + const last_x_shift = this.render_options.last_x_shift; + const y_shift = this.render_options.y_shift * params.direction; + // setNotes(...) verified that first_indices and last_indices are not undefined. + // As a result, we use the ! non-null assertion operator here. + // eslint-disable-next-line + const first_indices = this.notes.first_indices; + // eslint-disable-next-line + const last_indices = this.notes.last_indices; + for (let i = 0; i < first_indices.length; ++i) { + const cp_x = (params.last_x_px + last_x_shift + (params.first_x_px + first_x_shift)) / 2; + const first_y_px = params.first_ys[first_indices[i]] + y_shift; + const last_y_px = params.last_ys[last_indices[i]] + y_shift; + if (isNaN(first_y_px) || isNaN(last_y_px)) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', 'Bad indices for tie rendering.'); + } + const top_cp_y = (first_y_px + last_y_px) / 2 + cp1 * params.direction; + const bottom_cp_y = (first_y_px + last_y_px) / 2 + cp2 * params.direction; + ctx.openGroup('stavetie', this.getAttribute('id')); + ctx.beginPath(); + ctx.moveTo(params.first_x_px + first_x_shift, first_y_px); + ctx.quadraticCurveTo(cp_x, top_cp_y, params.last_x_px + last_x_shift, last_y_px); + ctx.quadraticCurveTo(cp_x, bottom_cp_y, params.first_x_px + first_x_shift, first_y_px); + ctx.closePath(); + ctx.fill(); + ctx.closeGroup(); + } + } + renderText(first_x_px, last_x_px) { + var _a, _b, _c; + if (!this.text) + return; + const ctx = this.checkContext(); + let center_x = (first_x_px + last_x_px) / 2; + center_x -= ctx.measureText(this.text).width / 2; + const stave = (_b = (_a = this.notes.first_note) === null || _a === void 0 ? void 0 : _a.checkStave()) !== null && _b !== void 0 ? _b : (_c = this.notes.last_note) === null || _c === void 0 ? void 0 : _c.checkStave(); + if (stave) { + ctx.save(); + ctx.setFont(this.textFont); + ctx.fillText(this.text, center_x + this.render_options.text_shift_x, stave.getYForTopText() - 1); + ctx.restore(); + } + } + /** + * Returns the TieNotes structure of the first and last note this tie connects. + */ + getNotes() { + return this.notes; + } + draw() { + this.checkContext(); + this.setRendered(); + const first_note = this.notes.first_note; + const last_note = this.notes.last_note; + // Provide some default values so the compiler doesn't complain. + let first_x_px = 0; + let last_x_px = 0; + let first_ys = [0]; + let last_ys = [0]; + let stem_direction = 0; + if (first_note) { + first_x_px = first_note.getTieRightX() + this.render_options.tie_spacing; + stem_direction = first_note.getStemDirection(); + first_ys = first_note.getYs(); + } + else if (last_note) { + const stave = last_note.checkStave(); + first_x_px = stave.getTieStartX(); + first_ys = last_note.getYs(); + this.notes.first_indices = this.notes.last_indices; + } + if (last_note) { + last_x_px = last_note.getTieLeftX() + this.render_options.tie_spacing; + stem_direction = last_note.getStemDirection(); + last_ys = last_note.getYs(); + } + else if (first_note) { + const stave = first_note.checkStave(); + last_x_px = stave.getTieEndX(); + last_ys = first_note.getYs(); + this.notes.last_indices = this.notes.first_indices; + } + if (this.direction) { + stem_direction = this.direction; + } + this.renderTie({ + first_x_px, + last_x_px, + first_ys, + last_ys, + direction: stem_direction, + }); + this.renderText(first_x_px, last_x_px); + return true; + } +} +/** Default text font. */ +StaveTie.TEXT_FONT = Object.assign({}, _element__WEBPACK_IMPORTED_MODULE_0__.Element.TEXT_FONT); + + +/***/ }), + +/***/ "./src/stavevolta.ts": +/*!***************************!*\ + !*** ./src/stavevolta.ts ***! + \***************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "VoltaType": () => (/* binding */ VoltaType), +/* harmony export */ "Volta": () => (/* binding */ Volta) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Larry Kuhns 2011 + + + +var VoltaType; +(function (VoltaType) { + VoltaType[VoltaType["NONE"] = 1] = "NONE"; + VoltaType[VoltaType["BEGIN"] = 2] = "BEGIN"; + VoltaType[VoltaType["MID"] = 3] = "MID"; + VoltaType[VoltaType["END"] = 4] = "END"; + VoltaType[VoltaType["BEGIN_END"] = 5] = "BEGIN_END"; +})(VoltaType || (VoltaType = {})); +class Volta extends _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifier { + constructor(type, number, x, y_shift) { + super(); + this.volta = type; + this.x = x; + this.y_shift = y_shift; + this.number = number; + this.resetFont(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.Volta; + } + static get type() { + return VoltaType; + } + setShiftY(y) { + this.y_shift = y; + return this; + } + draw(stave, x) { + const ctx = stave.checkContext(); + this.setRendered(); + let width = stave.getWidth() - x; // don't include x (offset) for width + const top_y = stave.getYForTopText(stave.getNumLines()) + this.y_shift; + const vert_height = 1.5 * stave.getSpacingBetweenLines(); + switch (this.volta) { + case VoltaType.BEGIN: + ctx.fillRect(this.x + x, top_y, 1, vert_height); + break; + case VoltaType.END: + width -= 5; + ctx.fillRect(this.x + x + width, top_y, 1, vert_height); + break; + case VoltaType.BEGIN_END: + width -= 3; + ctx.fillRect(this.x + x, top_y, 1, vert_height); + ctx.fillRect(this.x + x + width, top_y, 1, vert_height); + break; + default: + break; + } + // If the beginning of a volta, draw measure number + if (this.volta === VoltaType.BEGIN || this.volta === VoltaType.BEGIN_END) { + ctx.save(); + ctx.setFont(this.textFont); + ctx.fillText(this.number, this.x + x + 5, top_y + 15); + ctx.restore(); + } + ctx.fillRect(this.x + x, top_y, width, 1); + return this; + } +} +Volta.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SANS_SERIF, + size: 9, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.BOLD, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL, +}; + + +/***/ }), + +/***/ "./src/stem.ts": +/*!*********************!*\ + !*** ./src/stem.ts ***! + \*********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Stem": () => (/* binding */ Stem) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// This file implements the `Stem` object. Generally this object is handled +// by its parent `StemmableNote`. + + + + +// eslint-disable-next-line +function L(...args) { + if (Stem.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_3__.log)('Vex.Flow.Stem', args); +} +class Stem extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + constructor(options) { + super(); + this.stem_up_y_offset = 0; + this.stem_down_y_offset = 0; + this.stem_up_y_base_offset = 0; + this.stem_down_y_base_offset = 0; + // Default notehead x bounds + this.x_begin = (options === null || options === void 0 ? void 0 : options.x_begin) || 0; + this.x_end = (options === null || options === void 0 ? void 0 : options.x_end) || 0; + // Y bounds for top/bottom most notehead + this.y_top = (options === null || options === void 0 ? void 0 : options.y_top) || 0; + this.y_bottom = (options === null || options === void 0 ? void 0 : options.y_bottom) || 0; + // Stem top extension + this.stem_extension = (options === null || options === void 0 ? void 0 : options.stem_extension) || 0; + // Direction of the stem + this.stem_direction = (options === null || options === void 0 ? void 0 : options.stem_direction) || 0; + // Flag to override all draw calls + this.hide = (options === null || options === void 0 ? void 0 : options.hide) || false; + this.isStemlet = (options === null || options === void 0 ? void 0 : options.isStemlet) || false; + this.stemletHeight = (options === null || options === void 0 ? void 0 : options.stemletHeight) || 0; + // Use to adjust the rendered height without affecting + // the results of `.getExtents()` + this.renderHeightAdjustment = 0; + this.setOptions(options); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.Stem; + } + // Stem directions + static get UP() { + return 1; + } + static get DOWN() { + return -1; + } + // Theme + static get WIDTH() { + return _tables__WEBPACK_IMPORTED_MODULE_1__.Tables.STEM_WIDTH; + } + static get HEIGHT() { + return _tables__WEBPACK_IMPORTED_MODULE_1__.Tables.STEM_HEIGHT; + } + setOptions(options) { + // Changing where the stem meets the head + this.stem_up_y_offset = (options === null || options === void 0 ? void 0 : options.stem_up_y_offset) || 0; + this.stem_down_y_offset = (options === null || options === void 0 ? void 0 : options.stem_down_y_offset) || 0; + this.stem_up_y_base_offset = (options === null || options === void 0 ? void 0 : options.stem_up_y_base_offset) || 0; + this.stem_down_y_base_offset = (options === null || options === void 0 ? void 0 : options.stem_down_y_base_offset) || 0; + } + // Set the x bounds for the default notehead + setNoteHeadXBounds(x_begin, x_end) { + this.x_begin = x_begin; + this.x_end = x_end; + return this; + } + // Set the direction of the stem in relation to the noteheads + setDirection(direction) { + this.stem_direction = direction; + } + // Set the extension for the stem, generally for flags or beams + setExtension(ext) { + this.stem_extension = ext; + } + getExtension() { + return this.stem_extension; + } + // The the y bounds for the top and bottom noteheads + setYBounds(y_top, y_bottom) { + this.y_top = y_top; + this.y_bottom = y_bottom; + } + // Gets the entire height for the stem + getHeight() { + const y_offset = this.stem_direction === Stem.UP ? this.stem_up_y_offset : this.stem_down_y_offset; + const unsigned_height = this.y_bottom - this.y_top + (Stem.HEIGHT - y_offset + this.stem_extension); // parentheses just for grouping. + return unsigned_height * this.stem_direction; + } + getBoundingBox() { + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('NotImplemented', 'getBoundingBox() not implemented.'); + } + // Get the y coordinates for the very base of the stem to the top of + // the extension + getExtents() { + const isStemUp = this.stem_direction === Stem.UP; + const ys = [this.y_top, this.y_bottom]; + const stemHeight = Stem.HEIGHT + this.stem_extension; + const innerMostNoteheadY = (isStemUp ? Math.min : Math.max)(...ys); + const outerMostNoteheadY = (isStemUp ? Math.max : Math.min)(...ys); + const stemTipY = innerMostNoteheadY + stemHeight * -this.stem_direction; + return { topY: stemTipY, baseY: outerMostNoteheadY }; + } + setVisibility(isVisible) { + this.hide = !isVisible; + return this; + } + setStemlet(isStemlet, stemletHeight) { + this.isStemlet = isStemlet; + this.stemletHeight = stemletHeight; + return this; + } + adjustHeightForFlag() { + this.renderHeightAdjustment = _tables__WEBPACK_IMPORTED_MODULE_1__.Tables.currentMusicFont().lookupMetric('stem.heightAdjustmentForFlag', -3); + } + adjustHeightForBeam() { + this.renderHeightAdjustment = -Stem.WIDTH / 2; + } + // Render the stem onto the canvas + draw() { + this.setRendered(); + if (this.hide) + return; + const ctx = this.checkContext(); + let stem_x; + let stem_y; + const stem_direction = this.stem_direction; + let y_base_offset = 0; + if (stem_direction === Stem.DOWN) { + // Down stems are rendered to the left of the head. + stem_x = this.x_begin; + stem_y = this.y_top + this.stem_down_y_offset; + y_base_offset = this.stem_down_y_base_offset; + } + else { + // Up stems are rendered to the right of the head. + stem_x = this.x_end; + stem_y = this.y_bottom - this.stem_up_y_offset; + y_base_offset = this.stem_up_y_base_offset; + } + const stemHeight = this.getHeight(); + L('Rendering stem - ', 'Top Y: ', this.y_top, 'Bottom Y: ', this.y_bottom); + // The offset from the stem's base which is required fo satisfy the stemlet height + const stemletYOffset = this.isStemlet ? stemHeight - this.stemletHeight * this.stem_direction : 0; + // Draw the stem + ctx.save(); + ctx.openGroup('stem', this.getAttribute('id'), { pointerBBox: true }); + this.applyStyle(ctx); + ctx.beginPath(); + ctx.setLineWidth(Stem.WIDTH); + ctx.moveTo(stem_x, stem_y - stemletYOffset + y_base_offset); + ctx.lineTo(stem_x, stem_y - stemHeight - this.renderHeightAdjustment * stem_direction); + ctx.stroke(); + this.restoreStyle(ctx); + ctx.closeGroup(); + ctx.restore(); + } +} +/** To enable logging for this class. Set `Vex.Flow.Stem.DEBUG` to `true`. */ +Stem.DEBUG = false; + + +/***/ }), + +/***/ "./src/stemmablenote.ts": +/*!******************************!*\ + !*** ./src/stemmablenote.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StemmableNote": () => (/* binding */ StemmableNote) +/* harmony export */ }); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// `StemmableNote` is an abstract interface for notes with optional stems. +// Examples of stemmable notes are `StaveNote` and `TabNote` + + + + + + +class StemmableNote extends _note__WEBPACK_IMPORTED_MODULE_1__.Note { + constructor(noteStruct) { + super(noteStruct); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_4__.Category.StemmableNote; + } + // Get and set the note's `Stem` + getStem() { + return this.stem; + } + checkStem() { + if (!this.stem) { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('NoStem', 'No stem attached to instance'); + } + return this.stem; + } + setStem(stem) { + this.stem = stem; + this.addChildElement(stem); + return this; + } + // Builds and sets a new stem + buildStem() { + const stem = new _stem__WEBPACK_IMPORTED_MODULE_2__.Stem(); + this.setStem(stem); + return this; + } + buildFlag(category = 'flag') { + const { glyph } = this; + if (this.hasFlag()) { + const flagCode = this.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN ? glyph.code_flag_downstem : glyph.code_flag_upstem; + this.flag = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph(flagCode, this.render_options.glyph_font_scale, { category }); + } + } + // Get the custom glyph associated with the outer note head on the base of the stem. + getBaseCustomNoteHeadGlyph() { + if (this.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN) { + return this.customGlyphs[this.customGlyphs.length - 1]; + } + else { + return this.customGlyphs[0]; + } + } + // Get the full length of stem + getStemLength() { + return _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.HEIGHT + this.getStemExtension(); + } + // Get the number of beams for this duration + getBeamCount() { + const glyph = this.getGlyph(); + if (glyph) { + return glyph.beam_count; + } + else { + return 0; + } + } + // Get the minimum length of stem + getStemMinimumLength() { + const frac = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.durationToFraction(this.duration); + let length = frac.value() <= 1 ? 0 : 20; + // if note is flagged, cannot shorten beam + switch (this.duration) { + case '8': + if (this.beam == undefined) + length = 35; + break; + case '16': + length = this.beam == undefined ? 35 : 25; + break; + case '32': + length = this.beam == undefined ? 45 : 35; + break; + case '64': + length = this.beam == undefined ? 50 : 40; + break; + case '128': + length = this.beam == undefined ? 55 : 45; + break; + default: + break; + } + return length; + } + // Get/set the direction of the stem + getStemDirection() { + if (!this.stem_direction) + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('NoStem', 'No stem attached to this note.'); + return this.stem_direction; + } + setStemDirection(direction) { + if (!direction) + direction = _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP; + if (direction !== _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP && direction !== _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN) { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('BadArgument', `Invalid stem direction: ${direction}`); + } + this.stem_direction = direction; + // Reset and reformat everything. Flag has to be built before calling getStemExtension. + this.reset(); + if (this.hasFlag()) { + this.buildFlag(); + } + this.beam = undefined; + if (this.stem) { + this.stem.setDirection(direction); + this.stem.setExtension(this.getStemExtension()); + // Lookup the base custom notehead (closest to the base of the stem) to extend or shorten + // the stem appropriately. If there's no custom note head, lookup the standard notehead. + const glyph = this.getBaseCustomNoteHeadGlyph() || this.getGlyph(); + // Get the font-specific customizations for the note heads. + const offsets = _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.currentMusicFont().lookupMetric(`stem.noteHead.${glyph.code_head}`, { + offsetYBaseStemUp: 0, + offsetYTopStemUp: 0, + offsetYBaseStemDown: 0, + offsetYTopStemDown: 0, + }); + // Configure the stem to use these offsets. + this.stem.setOptions({ + stem_up_y_offset: offsets.offsetYTopStemUp, + stem_down_y_offset: offsets.offsetYTopStemDown, + stem_up_y_base_offset: offsets.offsetYBaseStemUp, + stem_down_y_base_offset: offsets.offsetYBaseStemDown, // glyph.stem_down_y_base_offset, + }); + } + if (this.preFormatted) { + this.preFormat(); + } + return this; + } + // Get the `x` coordinate of the stem + getStemX() { + const x_begin = this.getAbsoluteX() + this.x_shift; + const x_end = this.getAbsoluteX() + this.x_shift + this.getGlyphWidth(); + const stem_x = this.stem_direction === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.DOWN ? x_begin : x_end; + return stem_x; + } + // Get the `x` coordinate for the center of the glyph. + // Used for `TabNote` stems and stemlets over rests + getCenterGlyphX() { + return this.getAbsoluteX() + this.x_shift + this.getGlyphWidth() / 2; + } + // Get the stem extension for the current duration + getStemExtension() { + const glyph = this.getGlyph(); + if (this.stem_extension_override != undefined) { + return this.stem_extension_override; + } + // Use stem_beam_extension with beams + if (this.beam) { + return glyph.stem_beam_extension; + } + if (glyph) { + return this.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.UP ? glyph.stem_up_extension : glyph.stem_down_extension; + } + return 0; + } + // Set the stem length to a specific. Will override the default length. + setStemLength(height) { + this.stem_extension_override = height - _stem__WEBPACK_IMPORTED_MODULE_2__.Stem.HEIGHT; + return this; + } + // Get the top and bottom `y` values of the stem. + getStemExtents() { + if (!this.stem) + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('NoStem', 'No stem attached to this note.'); + return this.stem.getExtents(); + } + /** Gets the `y` value for the top modifiers at a specific `textLine`. */ + getYForTopText(textLine) { + const stave = this.checkStave(); + if (this.hasStem()) { + const extents = this.getStemExtents(); + if (!extents) + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('InvalidState', 'Stem does not have extents.'); + return Math.min(stave.getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1)); + } + else { + return stave.getYForTopText(textLine); + } + } + /** Gets the `y` value for the bottom modifiers at a specific `textLine`. */ + getYForBottomText(textLine) { + const stave = this.checkStave(); + if (this.hasStem()) { + const extents = this.getStemExtents(); + if (!extents) + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('InvalidState', 'Stem does not have extents.'); + return Math.max(stave.getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine); + } + else { + return stave.getYForBottomText(textLine); + } + } + hasFlag() { + return _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.getGlyphProps(this.duration).flag && !this.beam; + } + /** Post formats the note. */ + postFormat() { + var _a; + (_a = this.beam) === null || _a === void 0 ? void 0 : _a.postFormat(); + this.postFormatted = true; + return this; + } + /** Renders the stem onto the canvas. */ + drawStem(stemOptions) { + var _a; + this.checkContext(); + this.setRendered(); + this.setStem(new _stem__WEBPACK_IMPORTED_MODULE_2__.Stem(stemOptions)); + (_a = this.stem) === null || _a === void 0 ? void 0 : _a.setContext(this.getContext()).draw(); + } +} + + +/***/ }), + +/***/ "./src/stringnumber.ts": +/*!*****************************!*\ + !*** ./src/stringnumber.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "StringNumber": () => (/* binding */ StringNumber) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _renderer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./renderer */ "./src/renderer.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Larry Kuhns +// +// This file implements the `StringNumber` class which renders string +// number annotations beside notes. + + + + + + + +class StringNumber extends _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier { + constructor(number) { + super(); + this.string_number = number; + this.position = _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.ABOVE; // Default position above stem or note head + this.x_shift = 0; + this.y_shift = 0; + this.text_line = 0; + this.stem_offset = 0; + this.x_offset = 0; // Horizontal offset from default + this.y_offset = 0; // Vertical offset from default + this.dashed = true; // true - draw dashed extension false - no extension + this.leg = _renderer__WEBPACK_IMPORTED_MODULE_2__.Renderer.LineEndType.NONE; // draw upward/downward leg at the of extension line + this.radius = 8; + this.drawCircle = true; + this.setWidth(this.radius * 2 + 4); + this.resetFont(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_5__.Category.StringNumber; + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + static get metrics() { + return _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.currentMusicFont().getMetrics().glyphs.stringNumber; + } + // ## Static Methods + // Arrange string numbers inside a `ModifierContext` + static format(nums, state) { + const left_shift = state.left_shift; + const right_shift = state.right_shift; + const num_spacing = 1; + if (!nums || nums.length === 0) + return false; + const nums_list = []; + let prev_note = null; + let shift_left = 0; + let shift_right = 0; + const modLines = 0; + for (let i = 0; i < nums.length; ++i) { + const num = nums[i]; + const note = num.getNote(); + const pos = num.getPosition(); + if (!(0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isStaveNote)(note)) { + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('NoStaveNote'); + } + const index = num.checkIndex(); + const props = note.getKeyProps()[index]; + const mc = note.getModifierContext(); + const verticalSpaceNeeded = (num.radius * 2) / _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.STAVE_LINE_DISTANCE + 0.5; + if (mc) { + if (pos === _modifier__WEBPACK_IMPORTED_MODULE_1__.ModifierPosition.ABOVE) { + num.text_line = mc.getState().top_text_line; + state.top_text_line += verticalSpaceNeeded; + } + else if (pos === _modifier__WEBPACK_IMPORTED_MODULE_1__.ModifierPosition.BELOW) { + num.text_line = mc.getState().text_line; + state.text_line += verticalSpaceNeeded; + } + } + if (note !== prev_note) { + for (let n = 0; n < note.keys.length; ++n) { + if (left_shift === 0) { + shift_left = Math.max(note.getLeftDisplacedHeadPx(), shift_left); + } + if (right_shift === 0) { + shift_right = Math.max(note.getRightDisplacedHeadPx(), shift_right); + } + } + prev_note = note; + } + const glyphLine = modLines === 0 ? props.line : modLines; + nums_list.push({ + pos, + note, + num, + line: glyphLine, + shiftL: shift_left, + shiftR: shift_right, + }); + } + // Sort string numbers by line number. + nums_list.sort((a, b) => b.line - a.line); + let num_shiftR = 0; + let x_widthL = 0; + let x_widthR = 0; + let last_line = null; + let last_note = null; + for (let i = 0; i < nums_list.length; ++i) { + let num_shift = 0; + const note = nums_list[i].note; + const pos = nums_list[i].pos; + const num = nums_list[i].num; + const line = nums_list[i].line; + const shiftR = nums_list[i].shiftR; + // Reset the position of the string number every line. + if (line !== last_line || note !== last_note) { + num_shiftR = right_shift + shiftR; + } + const num_width = num.getWidth() + num_spacing; + if (pos === _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.LEFT) { + num.setXShift(left_shift); + num_shift = shift_left + num_width; // spacing + x_widthL = num_shift > x_widthL ? num_shift : x_widthL; + } + else if (pos === _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.RIGHT) { + num.setXShift(num_shiftR); + num_shift += num_width; // spacing + x_widthR = num_shift > x_widthR ? num_shift : x_widthR; + } + last_line = line; + last_note = note; + } + state.left_shift += x_widthL; + state.right_shift += x_widthR; + return true; + } + setLineEndType(leg) { + if (leg >= _renderer__WEBPACK_IMPORTED_MODULE_2__.Renderer.LineEndType.NONE && leg <= _renderer__WEBPACK_IMPORTED_MODULE_2__.Renderer.LineEndType.DOWN) { + this.leg = leg; + } + return this; + } + setStringNumber(number) { + this.string_number = number; + return this; + } + setOffsetX(x) { + this.x_offset = x; + return this; + } + setOffsetY(y) { + this.y_offset = y; + return this; + } + setLastNote(note) { + this.last_note = note; + return this; + } + setDashed(dashed) { + this.dashed = dashed; + return this; + } + setDrawCircle(drawCircle) { + this.drawCircle = drawCircle; + return this; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const start = note.getModifierStartXY(this.position, this.index); + const stemDirection = note.hasStem() ? note.getStemDirection() : _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP; + let dot_x = start.x + this.x_shift + this.x_offset; + let stem_ext = {}; + if (note.hasStem()) { + stem_ext = note.checkStem().getExtents(); + } + let dot_y = start.y + this.y_shift + this.y_offset; + switch (this.position) { + case _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.ABOVE: + { + const ys = note.getYs(); + dot_y = ys.reduce((a, b) => (a < b ? a : b)); + if (note.hasStem() && stemDirection == _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP) { + dot_y = stem_ext.topY + StringNumber.metrics.stemPadding; + } + dot_y -= this.radius + StringNumber.metrics.verticalPadding + this.text_line * _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.STAVE_LINE_DISTANCE; + } + break; + case _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.BELOW: + { + const ys = note.getYs(); + dot_y = ys.reduce((a, b) => (a > b ? a : b)); + if (note.hasStem() && stemDirection == _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.DOWN) { + dot_y = stem_ext.topY - StringNumber.metrics.stemPadding; + } + dot_y += this.radius + StringNumber.metrics.verticalPadding + this.text_line * _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.STAVE_LINE_DISTANCE; + } + break; + case _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.LEFT: + dot_x -= this.radius / 2 + StringNumber.metrics.leftPadding; + break; + case _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.RIGHT: + dot_x += this.radius / 2 + StringNumber.metrics.rightPadding; + break; + default: + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('InvalidPosition', `The position ${this.position} is invalid`); + } + ctx.save(); + if (this.drawCircle) { + ctx.beginPath(); + ctx.arc(dot_x, dot_y, this.radius, 0, Math.PI * 2, false); + ctx.setLineWidth(1.5); + ctx.stroke(); + } + ctx.setFont(this.textFont); + const x = dot_x - ctx.measureText(this.string_number).width / 2; + ctx.fillText('' + this.string_number, x, dot_y + 4.5); + const lastNote = this.last_note; + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isStemmableNote)(lastNote)) { + // Only StemmableNote objects have getStemX(). + const end = lastNote.getStemX() - note.getX() + 5; + ctx.setStrokeStyle('#000000'); + ctx.setLineCap('round'); + ctx.setLineWidth(0.6); + if (this.dashed) { + _renderer__WEBPACK_IMPORTED_MODULE_2__.Renderer.drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 3]); + } + else { + _renderer__WEBPACK_IMPORTED_MODULE_2__.Renderer.drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 0]); + } + let len; + let pattern; + switch (this.leg) { + case _renderer__WEBPACK_IMPORTED_MODULE_2__.Renderer.LineEndType.UP: + len = -10; + pattern = this.dashed ? [3, 3] : [3, 0]; + _renderer__WEBPACK_IMPORTED_MODULE_2__.Renderer.drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern); + break; + case _renderer__WEBPACK_IMPORTED_MODULE_2__.Renderer.LineEndType.DOWN: + len = 10; + pattern = this.dashed ? [3, 3] : [3, 0]; + _renderer__WEBPACK_IMPORTED_MODULE_2__.Renderer.drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern); + break; + default: + break; + } + } + ctx.restore(); + } +} +StringNumber.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SANS_SERIF, + size: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SIZE, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.BOLD, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL, +}; + + +/***/ }), + +/***/ "./src/strokes.ts": +/*!************************!*\ + !*** ./src/strokes.ts ***! + \************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Stroke": () => (/* binding */ Stroke) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Larry Kuhns +// +// This file implements the `Stroke` class which renders chord strokes +// that can be arpeggiated, brushed, rasquedo, etc. + + + + + +class Stroke extends _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier { + constructor(type, options) { + super(); + this.options = Object.assign({ all_voices: true }, options); + // multi voice - span stroke across all voices if true + this.all_voices = this.options.all_voices; + // multi voice - end note of stroke, set in draw() + this.type = type; + this.position = _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier.Position.LEFT; + this.render_options = { + font_scale: 38, + }; + this.resetFont(); + this.setXShift(0); + this.setWidth(10); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.Stroke; + } + // Arrange strokes inside `ModifierContext` + static format(strokes, state) { + const left_shift = state.left_shift; + const stroke_spacing = 0; + if (!strokes || strokes.length === 0) + return false; + const strokeList = strokes.map((stroke) => { + const note = stroke.getNote(); + const index = stroke.checkIndex(); + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_3__.isStaveNote)(note)) { + // Only StaveNote objects have getKeyProps(). + const { line } = note.getKeyProps()[index]; + const shift = note.getLeftDisplacedHeadPx(); + return { line, shift, stroke }; + } + else if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_3__.isTabNote)(note)) { + // Only TabNote objects have getPositions(). + const { str: string } = note.getPositions()[index]; + return { line: string, shift: 0, stroke }; + } + else { + throw new _util__WEBPACK_IMPORTED_MODULE_4__.RuntimeError('Internal', 'Unexpected instance.'); + } + }); + const strokeShift = left_shift; + // There can only be one stroke .. if more than one, they overlay each other + const xShift = strokeList.reduce((xShift, { stroke, shift }) => { + stroke.setXShift(strokeShift + shift); + return Math.max(stroke.getWidth() + stroke_spacing, xShift); + }, 0); + state.left_shift += xShift; + return true; + } + getPosition() { + return this.position; + } + addEndNote(note) { + this.note_end = note; + return this; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const start = note.getModifierStartXY(this.position, this.index); + let ys = note.getYs(); + let topY = start.y; + let botY = start.y; + const x = start.x - 5; + const line_space = note.checkStave().getSpacingBetweenLines(); + const notes = this.checkModifierContext().getMembers(note.getCategory()); + for (let i = 0; i < notes.length; i++) { + const note = notes[i]; + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_3__.isNote)(note)) { + // Only Note objects have getYs(). + // note is an instance of either StaveNote or TabNote. + ys = note.getYs(); + for (let n = 0; n < ys.length; n++) { + if (this.note === notes[i] || this.all_voices) { + topY = Math.min(topY, ys[n]); + botY = Math.max(botY, ys[n]); + } + } + } + } + let arrow = ''; + let arrow_shift_x = 0; + let arrow_y = 0; + let text_shift_x = 0; + let text_y = 0; + switch (this.type) { + case Stroke.Type.BRUSH_DOWN: + arrow = 'arrowheadBlackUp'; + arrow_shift_x = -3; + arrow_y = topY - line_space / 2 + 10; + botY += line_space / 2; + break; + case Stroke.Type.BRUSH_UP: + arrow = 'arrowheadBlackDown'; + arrow_shift_x = 0.5; + arrow_y = botY + line_space / 2; + topY -= line_space / 2; + break; + case Stroke.Type.ROLL_DOWN: + case Stroke.Type.RASQUEDO_DOWN: + arrow = 'arrowheadBlackUp'; + arrow_shift_x = -3; + text_shift_x = this.x_shift + arrow_shift_x - 2; + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_3__.isStaveNote)(note)) { + topY += 1.5 * line_space; + if ((botY - topY) % 2 !== 0) { + botY += 0.5 * line_space; + } + else { + botY += line_space; + } + arrow_y = topY - line_space; + text_y = botY + line_space + 2; + } + else { + topY += 1.5 * line_space; + botY += line_space; + arrow_y = topY - 0.75 * line_space; + text_y = botY + 0.25 * line_space; + } + break; + case Stroke.Type.ROLL_UP: + case Stroke.Type.RASQUEDO_UP: + arrow = 'arrowheadBlackDown'; + arrow_shift_x = -4; + text_shift_x = this.x_shift + arrow_shift_x - 1; + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_3__.isStaveNote)(note)) { + arrow_y = line_space / 2; + topY += 0.5 * line_space; + if ((botY - topY) % 2 === 0) { + botY += line_space / 2; + } + arrow_y = botY + 0.5 * line_space; + text_y = topY - 1.25 * line_space; + } + else { + topY += 0.25 * line_space; + botY += 0.5 * line_space; + arrow_y = botY + 0.25 * line_space; + text_y = topY - line_space; + } + break; + case Stroke.Type.ARPEGGIO_DIRECTIONLESS: + topY += 0.5 * line_space; + botY += line_space; // * 0.5 can lead to slight underlap instead of overlap sometimes + break; + default: + throw new _util__WEBPACK_IMPORTED_MODULE_4__.RuntimeError('InvalidType', `The stroke type ${this.type} does not exist`); + } + let strokeLine = 'straight'; + // Draw the stroke + if (this.type === Stroke.Type.BRUSH_DOWN || this.type === Stroke.Type.BRUSH_UP) { + ctx.fillRect(x + this.x_shift, topY, 1, botY - topY); + } + else { + strokeLine = 'wiggly'; + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_3__.isStaveNote)(note)) { + for (let i = topY; i <= botY; i += line_space) { + _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderGlyph(ctx, x + this.x_shift - 4, i, this.render_options.font_scale, 'vexWiggleArpeggioUp'); + } + } + else { + let i; + for (i = topY; i <= botY; i += 10) { + _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderGlyph(ctx, x + this.x_shift - 4, i, this.render_options.font_scale, 'vexWiggleArpeggioUp'); + } + if (this.type === Stroke.Type.RASQUEDO_DOWN) { + text_y = i + 0.25 * line_space; + } + } + } + if (this.type === Stroke.Type.ARPEGGIO_DIRECTIONLESS) { + return; // skip drawing arrow heads or text + } + // Draw the arrow head + _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderGlyph(ctx, x + this.x_shift + arrow_shift_x, arrow_y, this.render_options.font_scale, arrow, { + category: `stroke.${arrow}.${strokeLine}`, + }); + // Draw the rasquedo "R" + if (this.type === Stroke.Type.RASQUEDO_DOWN || this.type === Stroke.Type.RASQUEDO_UP) { + ctx.save(); + ctx.setFont(this.textFont); + ctx.fillText('R', x + text_shift_x, text_y); + ctx.restore(); + } + } +} +Stroke.Type = { + BRUSH_DOWN: 1, + BRUSH_UP: 2, + ROLL_DOWN: 3, + ROLL_UP: 4, + RASQUEDO_DOWN: 5, + RASQUEDO_UP: 6, + ARPEGGIO_DIRECTIONLESS: 7, // Arpeggiated chord without upwards or downwards arrow +}; +Stroke.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SERIF, + size: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SIZE, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.BOLD, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.ITALIC, +}; + + +/***/ }), + +/***/ "./src/svgcontext.ts": +/*!***************************!*\ + !*** ./src/svgcontext.ts ***! + \***************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "SVGContext": () => (/* binding */ SVGContext) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _rendercontext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rendercontext */ "./src/rendercontext.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// @author Gregory Ristow (2015) + + + +/** For a particular element type (e.g., rect), we will not apply certain presentation attributes. */ +const ATTRIBUTES_TO_IGNORE = { + path: { + x: true, + y: true, + width: true, + height: true, + 'font-family': true, + 'font-weight': true, + 'font-style': true, + 'font-size': true, + }, + rect: { + 'font-family': true, + 'font-weight': true, + 'font-style': true, + 'font-size': true, + }, + text: { + width: true, + height: true, + }, +}; +/** Create the SVG in the SVG namespace. */ +const SVG_NS = 'http://www.w3.org/2000/svg'; +const TWO_PI = 2 * Math.PI; +class MeasureTextCache { + constructor() { + // The cache is keyed first by the text string, then by the font attributes + // joined together. + this.cache = {}; + } + lookup(text, svg, attributes) { + let entries = this.cache[text]; + if (entries === undefined) { + entries = {}; + this.cache[text] = entries; + } + const family = attributes['font-family']; + const size = attributes['font-size']; + const weight = attributes['font-weight']; + const style = attributes['font-style']; + const key = `${family}%${size}%${weight}%${style}`; + let entry = entries[key]; + if (entry === undefined) { + entry = this.measureImpl(text, svg, attributes); + entries[key] = entry; + } + return entry; + } + measureImpl(text, svg, attributes) { + let txt = this.txt; + if (!txt) { + // Create the SVG text element that will be used to measure text in the event + // of a cache miss. + txt = document.createElementNS(SVG_NS, 'text'); + this.txt = txt; + } + txt.textContent = text; + txt.setAttributeNS(null, 'font-family', attributes['font-family']); + txt.setAttributeNS(null, 'font-size', attributes['font-size']); + txt.setAttributeNS(null, 'font-style', attributes['font-style']); + txt.setAttributeNS(null, 'font-weight', attributes['font-weight']); + svg.appendChild(txt); + const bbox = txt.getBBox(); + svg.removeChild(txt); + return { x: bbox.x, y: bbox.y, width: bbox.width, height: bbox.height }; + } +} +/** + * SVG rendering context with an API similar to CanvasRenderingContext2D. + */ +class SVGContext extends _rendercontext__WEBPACK_IMPORTED_MODULE_1__.RenderContext { + constructor(element) { + super(); + this.width = 0; + this.height = 0; + this.backgroundFillStyle = 'white'; + /** Formatted as CSS font shorthand (e.g., 'italic bold 12pt Arial') */ + this.fontCSSString = ''; + this.element = element; + // Create a SVG element and add it to the container element. + const svg = this.create('svg'); + this.element.appendChild(svg); + this.svg = svg; + this.parent = this.svg; + this.groups = [this.svg]; + this.path = ''; + this.pen = { x: NaN, y: NaN }; + this.lineWidth = 1.0; + const defaultFontAttributes = { + 'font-family': _font__WEBPACK_IMPORTED_MODULE_0__.Font.SANS_SERIF, + 'font-size': _font__WEBPACK_IMPORTED_MODULE_0__.Font.SIZE + 'pt', + 'font-weight': _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.NORMAL, + 'font-style': _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL, + }; + this.state = Object.assign({ scale: { x: 1, y: 1 } }, defaultFontAttributes); + this.attributes = Object.assign({ 'stroke-width': 0.3, 'stroke-dasharray': 'none', fill: 'black', stroke: 'black' }, defaultFontAttributes); + this.shadow_attributes = { + width: 0, + color: 'black', + }; + this.state_stack = []; + } + create(svgElementType) { + return document.createElementNS(SVG_NS, svgElementType); + } + // Allow grouping elements in containers for interactivity. + openGroup(cls, id, attrs) { + const group = this.create('g'); + this.groups.push(group); + this.parent.appendChild(group); + this.parent = group; + if (cls) + group.setAttribute('class', (0,_util__WEBPACK_IMPORTED_MODULE_2__.prefix)(cls)); + if (id) + group.setAttribute('id', (0,_util__WEBPACK_IMPORTED_MODULE_2__.prefix)(id)); + if (attrs && attrs.pointerBBox) { + group.setAttribute('pointer-events', 'bounding-box'); + } + return group; + } + closeGroup() { + this.groups.pop(); + this.parent = this.groups[this.groups.length - 1]; + } + add(elem) { + this.parent.appendChild(elem); + } + setFillStyle(style) { + this.attributes.fill = style; + return this; + } + /** + * Used to set the fill color for `clearRect()`. This allows us to simulate + * cutting a "hole" into the SVG drawing. + */ + setBackgroundFillStyle(style) { + this.backgroundFillStyle = style; + return this; + } + setStrokeStyle(style) { + this.attributes.stroke = style; + return this; + } + setShadowColor(color) { + this.shadow_attributes.color = color; + return this; + } + /** + * @param blur A non-negative float specifying the level of shadow blur, where 0 + * represents no blur and larger numbers represent increasingly more blur. + * @returns this + */ + setShadowBlur(blur) { + this.shadow_attributes.width = blur; + return this; + } + /** + * @param width + * @returns this + */ + setLineWidth(width) { + this.attributes['stroke-width'] = width; + this.lineWidth = width; + return this; + } + /** + * @param lineDash an array of integers in the form of [dash, space, dash, space, etc...] + * @returns this + * + * See: [SVG `stroke-dasharray` attribute](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray) + */ + setLineDash(lineDash) { + if (Object.prototype.toString.call(lineDash) === '[object Array]') { + this.attributes['stroke-dasharray'] = lineDash.join(','); + return this; + } + else { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('ArgumentError', 'lineDash must be an array of integers.'); + } + } + /** + * @param capType + * @returns this + */ + setLineCap(capType) { + this.attributes['stroke-linecap'] = capType; + return this; + } + // ### Sizing & Scaling Methods: + // TODO (GCR): See note at scale() -- separate our internal + // conception of pixel-based width/height from the style.width + // and style.height properties eventually to allow users to + // apply responsive sizing attributes to the SVG. + resize(width, height) { + this.width = width; + this.height = height; + this.element.style.width = width.toString(); + this.svg.style.width = width.toString(); + this.svg.style.height = height.toString(); + const attributes = { + width, + height, + }; + this.applyAttributes(this.svg, attributes); + this.scale(this.state.scale.x, this.state.scale.y); + return this; + } + scale(x, y) { + // uses viewBox to scale + // TODO (GCR): we may at some point want to distinguish the + // style.width / style.height properties that are applied to + // the SVG object from our internal conception of the SVG + // width/height. This would allow us to create automatically + // scaling SVG's that filled their containers, for instance. + // + // As this isn't implemented in Canvas contexts, + // I've left as is for now, but in using the viewBox to + // handle internal scaling, am trying to make it possible + // for us to eventually move in that direction. + this.state.scale = { x, y }; + const visibleWidth = this.width / x; + const visibleHeight = this.height / y; + this.setViewBox(0, 0, visibleWidth, visibleHeight); + return this; + } + /** + * 1 arg: string in the "x y w h" format + * 4 args: x:number, y:number, w:number, h:number + */ + setViewBox(viewBox_or_minX, minY, width, height) { + if (typeof viewBox_or_minX === 'string') { + this.svg.setAttribute('viewBox', viewBox_or_minX); + } + else { + const viewBoxString = viewBox_or_minX + ' ' + minY + ' ' + width + ' ' + height; + this.svg.setAttribute('viewBox', viewBoxString); + } + } + // ### Drawing helper methods: + applyAttributes(element, attributes) { + const attrNamesToIgnore = ATTRIBUTES_TO_IGNORE[element.nodeName]; + for (const attrName in attributes) { + if (attrNamesToIgnore && attrNamesToIgnore[attrName]) { + continue; + } + element.setAttributeNS(null, attrName, attributes[attrName]); + } + return element; + } + // ### Shape & Path Methods: + clear() { + // Clear the SVG by removing all inner children. + // (This approach is usually slightly more efficient + // than removing the old SVG & adding a new one to + // the container element, since it does not cause the + // container to resize twice. Also, the resize + // triggered by removing the entire SVG can trigger + // a touchcancel event when the element resizes away + // from a touch point.) + while (this.svg.lastChild) { + this.svg.removeChild(this.svg.lastChild); + } + // Replace the viewbox attribute we just removed. + this.scale(this.state.scale.x, this.state.scale.y); + } + // ## Rectangles: + rect(x, y, width, height, attributes) { + // Avoid invalid negative height attributes by flipping the rectangle on its head: + if (height < 0) { + y += height; + height *= -1; + } + const rectangle = this.create('rect'); + attributes = attributes !== null && attributes !== void 0 ? attributes : { fill: 'none', 'stroke-width': this.lineWidth, stroke: 'black' }; + this.applyAttributes(rectangle, Object.assign({ x, y, width, height }, attributes)); + this.add(rectangle); + return this; + } + fillRect(x, y, width, height) { + const attributes = { fill: this.attributes.fill }; + this.rect(x, y, width, height, attributes); + return this; + } + clearRect(x, y, width, height) { + // Currently this fills a rect with the backgroundFillStyle, rather + // than "cut a hole" into the existing shapes. + // + // Since tabNote seems to be the only module that makes use of this + // it may be worth creating a separate tabStave that would + // draw lines around locations of tablature fingering. + this.rect(x, y, width, height, { 'stroke-width': 0, fill: this.backgroundFillStyle }); + return this; + } + // ## Paths: + beginPath() { + this.path = ''; + this.pen.x = NaN; + this.pen.y = NaN; + return this; + } + moveTo(x, y) { + this.path += 'M' + x + ' ' + y; + this.pen.x = x; + this.pen.y = y; + return this; + } + lineTo(x, y) { + this.path += 'L' + x + ' ' + y; + this.pen.x = x; + this.pen.y = y; + return this; + } + bezierCurveTo(x1, y1, x2, y2, x, y) { + this.path += 'C' + x1 + ' ' + y1 + ',' + x2 + ' ' + y2 + ',' + x + ' ' + y; + this.pen.x = x; + this.pen.y = y; + return this; + } + quadraticCurveTo(x1, y1, x, y) { + this.path += 'Q' + x1 + ' ' + y1 + ',' + x + ' ' + y; + this.pen.x = x; + this.pen.y = y; + return this; + } + arc(x, y, radius, startAngle, endAngle, counterclockwise) { + const x0 = x + radius * Math.cos(startAngle); + const y0 = y + radius * Math.sin(startAngle); + // svg behavior different from canvas. Don't normalize angles if + // we are drawing a circle because they both normalize to 0 + const tmpStartTest = (0,_util__WEBPACK_IMPORTED_MODULE_2__.normalizeAngle)(startAngle); + const tmpEndTest = (0,_util__WEBPACK_IMPORTED_MODULE_2__.normalizeAngle)(endAngle); + if ((!counterclockwise && endAngle - startAngle >= TWO_PI) || + (counterclockwise && startAngle - endAngle >= TWO_PI) || + tmpStartTest === tmpEndTest) { + const x1 = x + radius * Math.cos(startAngle + Math.PI); + const y1 = y + radius * Math.sin(startAngle + Math.PI); + // There's no way to specify a completely circular arc in SVG so we have to + // use two semi-circular arcs. + this.path += `M${x0} ${y0} A${radius} ${radius} 0 0 0 ${x1} ${y1} `; + this.path += `A${radius} ${radius} 0 0 0 ${x0} ${y0}`; + this.pen.x = x0; + this.pen.y = y0; + } + else { + const x1 = x + radius * Math.cos(endAngle); + const y1 = y + radius * Math.sin(endAngle); + startAngle = tmpStartTest; + endAngle = tmpEndTest; + let large; + if (Math.abs(endAngle - startAngle) < Math.PI) { + large = counterclockwise; + } + else { + large = !counterclockwise; + } + if (startAngle > endAngle) { + large = !large; + } + const sweep = !counterclockwise; + this.path += `M${x0} ${y0} A${radius} ${radius} 0 ${+large} ${+sweep} ${x1} ${y1}`; + this.pen.x = x1; + this.pen.y = y1; + } + return this; + } + closePath() { + this.path += 'Z'; + return this; + } + getShadowStyle() { + const sa = this.shadow_attributes; + // A CSS drop-shadow filter blur looks different than a canvas shadowBlur + // of the same radius, so we scale the drop-shadow radius here to make it + // look close to the canvas shadow. + return `filter: drop-shadow(0 0 ${sa.width / 1.5}px ${sa.color})`; + } + fill(attributes) { + const path = this.create('path'); + if (typeof attributes === 'undefined') { + attributes = Object.assign(Object.assign({}, this.attributes), { stroke: 'none' }); + } + attributes.d = this.path; + if (this.shadow_attributes.width > 0) { + attributes.style = this.getShadowStyle(); + } + this.applyAttributes(path, attributes); + this.add(path); + return this; + } + stroke() { + const path = this.create('path'); + const attributes = Object.assign(Object.assign({}, this.attributes), { fill: 'none', 'stroke-width': this.lineWidth, d: this.path }); + if (this.shadow_attributes.width > 0) { + attributes.style = this.getShadowStyle(); + } + this.applyAttributes(path, attributes); + this.add(path); + return this; + } + // ## Text Methods: + measureText(text) { + return SVGContext.measureTextCache.lookup(text, this.svg, this.attributes); + } + fillText(text, x, y) { + if (!text || text.length <= 0) { + return this; + } + const attributes = Object.assign(Object.assign({}, this.attributes), { stroke: 'none', x, + y }); + const txt = this.create('text'); + txt.textContent = text; + this.applyAttributes(txt, attributes); + this.add(txt); + return this; + } + // TODO: State should be deep-copied. + save() { + this.state_stack.push({ + state: { + 'font-family': this.state['font-family'], + 'font-weight': this.state['font-weight'], + 'font-style': this.state['font-style'], + 'font-size': this.state['font-size'], + scale: this.state.scale, + }, + attributes: { + 'font-family': this.attributes['font-family'], + 'font-weight': this.attributes['font-weight'], + 'font-style': this.attributes['font-style'], + 'font-size': this.attributes['font-size'], + fill: this.attributes.fill, + stroke: this.attributes.stroke, + 'stroke-width': this.attributes['stroke-width'], + 'stroke-dasharray': this.attributes['stroke-dasharray'], + }, + shadow_attributes: { + width: this.shadow_attributes.width, + color: this.shadow_attributes.color, + }, + lineWidth: this.lineWidth, + }); + return this; + } + // TODO: State should be deep-restored. + restore() { + const savedState = this.state_stack.pop(); + if (savedState) { + const state = savedState; + this.state['font-family'] = state.state['font-family']; + this.state['font-weight'] = state.state['font-weight']; + this.state['font-style'] = state.state['font-style']; + this.state['font-size'] = state.state['font-size']; + this.state.scale = state.state.scale; + this.attributes['font-family'] = state.attributes['font-family']; + this.attributes['font-weight'] = state.attributes['font-weight']; + this.attributes['font-style'] = state.attributes['font-style']; + this.attributes['font-size'] = state.attributes['font-size']; + this.attributes.fill = state.attributes.fill; + this.attributes.stroke = state.attributes.stroke; + this.attributes['stroke-width'] = state.attributes['stroke-width']; + this.attributes['stroke-dasharray'] = state.attributes['stroke-dasharray']; + this.shadow_attributes.width = state.shadow_attributes.width; + this.shadow_attributes.color = state.shadow_attributes.color; + this.lineWidth = state.lineWidth; + } + return this; + } + set fillStyle(style) { + this.setFillStyle(style); + } + get fillStyle() { + return this.attributes.fill; + } + set strokeStyle(style) { + this.setStrokeStyle(style); + } + get strokeStyle() { + return this.attributes.stroke; + } + /** + * @param f is 1) a `FontInfo` object or + * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or + * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided). + * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt'). + * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900). It is inserted + * into the font-weight attribute (e.g., font-weight="bold") + * @param style is a string (e.g., 'italic', 'normal') that is inserted into the + * font-style attribute (e.g., font-style="italic") + */ + setFont(f, size, weight, style) { + const fontInfo = _font__WEBPACK_IMPORTED_MODULE_0__.Font.validate(f, size, weight, style); + this.fontCSSString = _font__WEBPACK_IMPORTED_MODULE_0__.Font.toCSSString(fontInfo); + const fontAttributes = { + 'font-family': fontInfo.family, + 'font-size': fontInfo.size, + 'font-weight': fontInfo.weight, + 'font-style': fontInfo.style, + }; + this.attributes = Object.assign(Object.assign({}, this.attributes), fontAttributes); + this.state = Object.assign(Object.assign({}, this.state), fontAttributes); + return this; + } + /** Return a string of the form `'italic bold 15pt Arial'` */ + getFont() { + return this.fontCSSString; + } +} +SVGContext.measureTextCache = new MeasureTextCache(); + + +/***/ }), + +/***/ "./src/system.ts": +/*!***********************!*\ + !*** ./src/system.ts ***! + \***********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "System": () => (/* binding */ System) +/* harmony export */ }); +/* harmony import */ var _boundingbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./boundingbox */ "./src/boundingbox.ts"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _formatter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatter */ "./src/formatter.ts"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _stave__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stave */ "./src/stave.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + + + +/** + * System implements a musical system, which is a collection of staves, + * each which can have one or more voices. All voices across all staves in + * the system are formatted together. + */ +class System extends _element__WEBPACK_IMPORTED_MODULE_1__.Element { + constructor(params = {}) { + super(); + this.setOptions(params); + this.parts = []; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_5__.Category.System; + } + /** Set formatting options. */ + setOptions(options = {}) { + if (!options.factory) { + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('NoFactory', 'System.setOptions(options) requires a factory.'); + } + this.factory = options.factory; + this.options = Object.assign(Object.assign({ factory: this.factory, x: 10, y: 10, width: 500, spaceBetweenStaves: 12, autoWidth: false, noJustification: false, debugFormatter: false, formatIterations: 0, noPadding: false }, options), { details: Object.assign({ alpha: 0.5 }, options.details), formatOptions: Object.assign({}, options.formatOptions) }); + if (this.options.noJustification === false && typeof options.width === 'undefined') { + this.options.autoWidth = true; + } + } + /** Set associated context. */ + setContext(context) { + super.setContext(context); + this.factory.setContext(context); + return this; + } + /** + * Add connector between staves. + * @param type see {@link StaveConnector.typeString} + */ + addConnector(type = 'double') { + this.connector = this.factory.StaveConnector({ + top_stave: this.parts[0].stave, + bottom_stave: this.parts[this.parts.length - 1].stave, + type, + }); + return this.connector; + } + /** + * Add a stave to the system. + * + * Example (one voice): + * + * `system.addStave({voices: [score.voice(score.notes('C#5/q, B4, A4, G#4'))]});` + * + * Example (two voices): + * + * `system.addStave({voices: [` + * `score.voice(score.notes('C#5/q, B4, A4, G#4', {stem: 'up'})),` + * `score.voice(score.notes('C#4/h, C#4', {stem: 'down'}))` + * `]});` + */ + addStave(params) { + var _a; + const staveOptions = Object.assign({ left_bar: false }, params.options); + const stave = (_a = params.stave) !== null && _a !== void 0 ? _a : this.factory.Stave({ x: this.options.x, y: this.options.y, width: this.options.width, options: staveOptions }); + const p = Object.assign(Object.assign({ stave, + /* voices: [], */ + spaceAbove: 0, spaceBelow: 0, debugNoteMetrics: false, noJustification: false }, params), { options: staveOptions }); + const ctx = this.getContext(); + p.voices.forEach((voice) => voice + .setContext(ctx) + .setStave(stave) + .getTickables() + .forEach((tickable) => tickable.setStave(stave))); + this.parts.push(p); + return stave; + } + /** Format the system. */ + format() { + const options_details = this.options.details; + let justifyWidth = 0; + const formatter = new _formatter__WEBPACK_IMPORTED_MODULE_2__.Formatter(options_details); + this.formatter = formatter; + let y = this.options.y; + let startX = 0; + let allVoices = []; + let allStaves = []; + const debugNoteMetricsYs = []; + // Join the voices for each stave. + this.parts.forEach((part) => { + y = y + part.stave.space(part.spaceAbove); + part.stave.setY(y); + formatter.joinVoices(part.voices); + y = y + part.stave.space(part.spaceBelow); + y = y + part.stave.space(this.options.spaceBetweenStaves); + if (part.debugNoteMetrics) { + debugNoteMetricsYs.push({ y, voice: part.voices[0] }); + y += 15; + } + allVoices = allVoices.concat(part.voices); + allStaves = allStaves.concat(part.stave); + startX = Math.max(startX, part.stave.getNoteStartX()); + }); + // Update the start position of all staves. + this.parts.forEach((part) => part.stave.setNoteStartX(startX)); + if (this.options.autoWidth) { + justifyWidth = formatter.preCalculateMinTotalWidth(allVoices); + this.parts.forEach((part) => { + part.stave.setWidth(justifyWidth + _stave__WEBPACK_IMPORTED_MODULE_4__.Stave.rightPadding + (startX - this.options.x)); + }); + } + else { + justifyWidth = this.options.noPadding + ? this.options.width - (startX - this.options.x) + : this.options.width - (startX - this.options.x) - _stave__WEBPACK_IMPORTED_MODULE_4__.Stave.defaultPadding; + } + formatter.format(allVoices, this.options.noJustification ? 0 : justifyWidth, this.options.formatOptions); + formatter.postFormat(); + for (let i = 0; i < this.options.formatIterations; i++) { + formatter.tune(options_details); + } + this.startX = startX; + this.debugNoteMetricsYs = debugNoteMetricsYs; + this.lastY = y; + this.boundingBox = new _boundingbox__WEBPACK_IMPORTED_MODULE_0__.BoundingBox(this.options.x, this.options.y, this.options.width, this.lastY - this.options.y); + _stave__WEBPACK_IMPORTED_MODULE_4__.Stave.formatBegModifiers(allStaves); + } + /** Render the system. */ + draw() { + // Render debugging information, if requested. + const ctx = this.checkContext(); + if (!this.formatter || !this.startX || !this.lastY || !this.debugNoteMetricsYs) { + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('NoFormatter', 'format() must be called before draw()'); + } + this.setRendered(); + if (this.options.debugFormatter) { + _formatter__WEBPACK_IMPORTED_MODULE_2__.Formatter.plotDebugging(ctx, this.formatter, this.startX, this.options.y, this.lastY); + } + this.debugNoteMetricsYs.forEach((d) => { + d.voice.getTickables().forEach((tickable) => _note__WEBPACK_IMPORTED_MODULE_3__.Note.plotMetrics(ctx, tickable, d.y)); + }); + } +} + + +/***/ }), + +/***/ "./src/tables.ts": +/*!***********************!*\ + !*** ./src/tables.ts ***! + \***********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Tables": () => (/* binding */ Tables) +/* harmony export */ }); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./fraction */ "./src/fraction.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. + + + +const RESOLUTION = 16384; +/** + * Map duration numbers to 'ticks', the unit of duration used throughout VexFlow. + * For example, a quarter note is 4, so it maps to RESOLUTION / 4 = 4096 ticks. + */ +const durations = { + '1/2': RESOLUTION * 2, + 1: RESOLUTION / 1, + 2: RESOLUTION / 2, + 4: RESOLUTION / 4, + 8: RESOLUTION / 8, + 16: RESOLUTION / 16, + 32: RESOLUTION / 32, + 64: RESOLUTION / 64, + 128: RESOLUTION / 128, + 256: RESOLUTION / 256, +}; +const durationAliases = { + w: '1', + h: '2', + q: '4', + // This is the default duration used to render bars (BarNote). Bars no longer + // consume ticks, so this should be a no-op. + // TODO(0xfe): This needs to be cleaned up. + b: '256', +}; +const keySignatures = { + C: { num: 0 }, + Am: { num: 0 }, + F: { acc: 'b', num: 1 }, + Dm: { acc: 'b', num: 1 }, + Bb: { acc: 'b', num: 2 }, + Gm: { acc: 'b', num: 2 }, + Eb: { acc: 'b', num: 3 }, + Cm: { acc: 'b', num: 3 }, + Ab: { acc: 'b', num: 4 }, + Fm: { acc: 'b', num: 4 }, + Db: { acc: 'b', num: 5 }, + Bbm: { acc: 'b', num: 5 }, + Gb: { acc: 'b', num: 6 }, + Ebm: { acc: 'b', num: 6 }, + Cb: { acc: 'b', num: 7 }, + Abm: { acc: 'b', num: 7 }, + G: { acc: '#', num: 1 }, + Em: { acc: '#', num: 1 }, + D: { acc: '#', num: 2 }, + Bm: { acc: '#', num: 2 }, + A: { acc: '#', num: 3 }, + 'F#m': { acc: '#', num: 3 }, + E: { acc: '#', num: 4 }, + 'C#m': { acc: '#', num: 4 }, + B: { acc: '#', num: 5 }, + 'G#m': { acc: '#', num: 5 }, + 'F#': { acc: '#', num: 6 }, + 'D#m': { acc: '#', num: 6 }, + 'C#': { acc: '#', num: 7 }, + 'A#m': { acc: '#', num: 7 }, +}; +const clefs = { + treble: { line_shift: 0 }, + bass: { line_shift: 6 }, + tenor: { line_shift: 4 }, + alto: { line_shift: 3 }, + soprano: { line_shift: 1 }, + percussion: { line_shift: 0 }, + 'mezzo-soprano': { line_shift: 2 }, + 'baritone-c': { line_shift: 5 }, + 'baritone-f': { line_shift: 5 }, + subbass: { line_shift: 7 }, + french: { line_shift: -1 }, +}; +const notesInfo = { + C: { index: 0, int_val: 0 }, + CN: { index: 0, int_val: 0, accidental: 'n' }, + 'C#': { index: 0, int_val: 1, accidental: '#' }, + 'C##': { index: 0, int_val: 2, accidental: '##' }, + CB: { index: 0, int_val: 11, accidental: 'b' }, + CBB: { index: 0, int_val: 10, accidental: 'bb' }, + D: { index: 1, int_val: 2 }, + DN: { index: 1, int_val: 2, accidental: 'n' }, + 'D#': { index: 1, int_val: 3, accidental: '#' }, + 'D##': { index: 1, int_val: 4, accidental: '##' }, + DB: { index: 1, int_val: 1, accidental: 'b' }, + DBB: { index: 1, int_val: 0, accidental: 'bb' }, + E: { index: 2, int_val: 4 }, + EN: { index: 2, int_val: 4, accidental: 'n' }, + 'E#': { index: 2, int_val: 5, accidental: '#' }, + 'E##': { index: 2, int_val: 6, accidental: '##' }, + EB: { index: 2, int_val: 3, accidental: 'b' }, + EBB: { index: 2, int_val: 2, accidental: 'bb' }, + F: { index: 3, int_val: 5 }, + FN: { index: 3, int_val: 5, accidental: 'n' }, + 'F#': { index: 3, int_val: 6, accidental: '#' }, + 'F##': { index: 3, int_val: 7, accidental: '##' }, + FB: { index: 3, int_val: 4, accidental: 'b' }, + FBB: { index: 3, int_val: 3, accidental: 'bb' }, + G: { index: 4, int_val: 7 }, + GN: { index: 4, int_val: 7, accidental: 'n' }, + 'G#': { index: 4, int_val: 8, accidental: '#' }, + 'G##': { index: 4, int_val: 9, accidental: '##' }, + GB: { index: 4, int_val: 6, accidental: 'b' }, + GBB: { index: 4, int_val: 5, accidental: 'bb' }, + A: { index: 5, int_val: 9 }, + AN: { index: 5, int_val: 9, accidental: 'n' }, + 'A#': { index: 5, int_val: 10, accidental: '#' }, + 'A##': { index: 5, int_val: 11, accidental: '##' }, + AB: { index: 5, int_val: 8, accidental: 'b' }, + ABB: { index: 5, int_val: 7, accidental: 'bb' }, + B: { index: 6, int_val: 11 }, + BN: { index: 6, int_val: 11, accidental: 'n' }, + 'B#': { index: 6, int_val: 12, accidental: '#' }, + 'B##': { index: 6, int_val: 13, accidental: '##' }, + BB: { index: 6, int_val: 10, accidental: 'b' }, + BBB: { index: 6, int_val: 9, accidental: 'bb' }, + R: { index: 6, rest: true }, + X: { + index: 6, + accidental: '', + octave: 4, + code: 'noteheadXBlack', + shift_right: 5.5, + }, +}; +const validNoteTypes = { + n: { name: 'note' }, + r: { name: 'rest' }, + h: { name: 'harmonic' }, + m: { name: 'muted' }, + s: { name: 'slash' }, + g: { name: 'ghost' }, + d: { name: 'diamond' }, + x: { name: 'x' }, + ci: { name: 'circled' }, + cx: { name: 'circle x' }, + sf: { name: 'slashed' }, + sb: { name: 'slashed backward' }, + sq: { name: 'square' }, + tu: { name: 'triangle up' }, + td: { name: 'triangle down' }, +}; +const accidentals = { + '#': { code: 'accidentalSharp', parenRightPaddingAdjustment: -1 }, + '##': { code: 'accidentalDoubleSharp', parenRightPaddingAdjustment: -1 }, + b: { code: 'accidentalFlat', parenRightPaddingAdjustment: -2 }, + bb: { code: 'accidentalDoubleFlat', parenRightPaddingAdjustment: -2 }, + n: { code: 'accidentalNatural', parenRightPaddingAdjustment: -1 }, + '{': { code: 'accidentalParensLeft', parenRightPaddingAdjustment: -1 }, + '}': { code: 'accidentalParensRight', parenRightPaddingAdjustment: -1 }, + db: { code: 'accidentalThreeQuarterTonesFlatZimmermann', parenRightPaddingAdjustment: -1 }, + d: { code: 'accidentalQuarterToneFlatStein', parenRightPaddingAdjustment: 0 }, + '++': { code: 'accidentalThreeQuarterTonesSharpStein', parenRightPaddingAdjustment: -1 }, + '+': { code: 'accidentalQuarterToneSharpStein', parenRightPaddingAdjustment: -1 }, + '+-': { code: 'accidentalKucukMucennebSharp', parenRightPaddingAdjustment: -1 }, + bs: { code: 'accidentalBakiyeFlat', parenRightPaddingAdjustment: -1 }, + bss: { code: 'accidentalBuyukMucennebFlat', parenRightPaddingAdjustment: -1 }, + o: { code: 'accidentalSori', parenRightPaddingAdjustment: -1 }, + k: { code: 'accidentalKoron', parenRightPaddingAdjustment: -1 }, + bbs: { code: 'vexAccidentalMicrotonal1', parenRightPaddingAdjustment: -1 }, + '++-': { code: 'vexAccidentalMicrotonal2', parenRightPaddingAdjustment: -1 }, + ashs: { code: 'vexAccidentalMicrotonal3', parenRightPaddingAdjustment: -1 }, + afhf: { code: 'vexAccidentalMicrotonal4', parenRightPaddingAdjustment: -1 }, + accSagittal5v7KleismaUp: { code: 'accSagittal5v7KleismaUp', parenRightPaddingAdjustment: -1 }, + accSagittal5v7KleismaDown: { code: 'accSagittal5v7KleismaDown', parenRightPaddingAdjustment: -1 }, + accSagittal5CommaUp: { code: 'accSagittal5CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal5CommaDown: { code: 'accSagittal5CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal7CommaUp: { code: 'accSagittal7CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal7CommaDown: { code: 'accSagittal7CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal25SmallDiesisUp: { code: 'accSagittal25SmallDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal25SmallDiesisDown: { code: 'accSagittal25SmallDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal35MediumDiesisUp: { code: 'accSagittal35MediumDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal35MediumDiesisDown: { code: 'accSagittal35MediumDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal11MediumDiesisUp: { code: 'accSagittal11MediumDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal11MediumDiesisDown: { code: 'accSagittal11MediumDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal11LargeDiesisUp: { code: 'accSagittal11LargeDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal11LargeDiesisDown: { code: 'accSagittal11LargeDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal35LargeDiesisUp: { code: 'accSagittal35LargeDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal35LargeDiesisDown: { code: 'accSagittal35LargeDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp25SDown: { code: 'accSagittalSharp25SDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat25SUp: { code: 'accSagittalFlat25SUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7CDown: { code: 'accSagittalSharp7CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7CUp: { code: 'accSagittalFlat7CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5CDown: { code: 'accSagittalSharp5CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5CUp: { code: 'accSagittalFlat5CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v7kDown: { code: 'accSagittalSharp5v7kDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v7kUp: { code: 'accSagittalFlat5v7kUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp: { code: 'accSagittalSharp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat: { code: 'accSagittalFlat', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v7kUp: { code: 'accSagittalSharp5v7kUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v7kDown: { code: 'accSagittalFlat5v7kDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5CUp: { code: 'accSagittalSharp5CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5CDown: { code: 'accSagittalFlat5CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7CUp: { code: 'accSagittalSharp7CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7CDown: { code: 'accSagittalFlat7CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp25SUp: { code: 'accSagittalSharp25SUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat25SDown: { code: 'accSagittalFlat25SDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp35MUp: { code: 'accSagittalSharp35MUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat35MDown: { code: 'accSagittalFlat35MDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp11MUp: { code: 'accSagittalSharp11MUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat11MDown: { code: 'accSagittalFlat11MDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp11LUp: { code: 'accSagittalSharp11LUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat11LDown: { code: 'accSagittalFlat11LDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp35LUp: { code: 'accSagittalSharp35LUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat35LDown: { code: 'accSagittalFlat35LDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp25SDown: { code: 'accSagittalDoubleSharp25SDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat25SUp: { code: 'accSagittalDoubleFlat25SUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp7CDown: { code: 'accSagittalDoubleSharp7CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat7CUp: { code: 'accSagittalDoubleFlat7CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp5CDown: { code: 'accSagittalDoubleSharp5CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat5CUp: { code: 'accSagittalDoubleFlat5CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp5v7kDown: { code: 'accSagittalDoubleSharp5v7kDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat5v7kUp: { code: 'accSagittalDoubleFlat5v7kUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp: { code: 'accSagittalDoubleSharp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat: { code: 'accSagittalDoubleFlat', parenRightPaddingAdjustment: -1 }, + accSagittal7v11KleismaUp: { code: 'accSagittal7v11KleismaUp', parenRightPaddingAdjustment: -1 }, + accSagittal7v11KleismaDown: { code: 'accSagittal7v11KleismaDown', parenRightPaddingAdjustment: -1 }, + accSagittal17CommaUp: { code: 'accSagittal17CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal17CommaDown: { code: 'accSagittal17CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal55CommaUp: { code: 'accSagittal55CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal55CommaDown: { code: 'accSagittal55CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal7v11CommaUp: { code: 'accSagittal7v11CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal7v11CommaDown: { code: 'accSagittal7v11CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal5v11SmallDiesisUp: { code: 'accSagittal5v11SmallDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal5v11SmallDiesisDown: { code: 'accSagittal5v11SmallDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v11SDown: { code: 'accSagittalSharp5v11SDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v11SUp: { code: 'accSagittalFlat5v11SUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7v11CDown: { code: 'accSagittalSharp7v11CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7v11CUp: { code: 'accSagittalFlat7v11CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp55CDown: { code: 'accSagittalSharp55CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat55CUp: { code: 'accSagittalFlat55CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp17CDown: { code: 'accSagittalSharp17CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat17CUp: { code: 'accSagittalFlat17CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7v11kDown: { code: 'accSagittalSharp7v11kDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7v11kUp: { code: 'accSagittalFlat7v11kUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7v11kUp: { code: 'accSagittalSharp7v11kUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7v11kDown: { code: 'accSagittalFlat7v11kDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp17CUp: { code: 'accSagittalSharp17CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat17CDown: { code: 'accSagittalFlat17CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp55CUp: { code: 'accSagittalSharp55CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat55CDown: { code: 'accSagittalFlat55CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7v11CUp: { code: 'accSagittalSharp7v11CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7v11CDown: { code: 'accSagittalFlat7v11CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v11SUp: { code: 'accSagittalSharp5v11SUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v11SDown: { code: 'accSagittalFlat5v11SDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp5v11SDown: { code: 'accSagittalDoubleSharp5v11SDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat5v11SUp: { code: 'accSagittalDoubleFlat5v11SUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp7v11CDown: { code: 'accSagittalDoubleSharp7v11CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat7v11CUp: { code: 'accSagittalDoubleFlat7v11CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp55CDown: { code: 'accSagittalDoubleSharp55CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat55CUp: { code: 'accSagittalDoubleFlat55CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp17CDown: { code: 'accSagittalDoubleSharp17CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat17CUp: { code: 'accSagittalDoubleFlat17CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp7v11kDown: { code: 'accSagittalDoubleSharp7v11kDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat7v11kUp: { code: 'accSagittalDoubleFlat7v11kUp', parenRightPaddingAdjustment: -1 }, + accSagittal23CommaUp: { code: 'accSagittal23CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal23CommaDown: { code: 'accSagittal23CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal5v19CommaUp: { code: 'accSagittal5v19CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal5v19CommaDown: { code: 'accSagittal5v19CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal5v23SmallDiesisUp: { code: 'accSagittal5v23SmallDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal5v23SmallDiesisDown: { code: 'accSagittal5v23SmallDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v23SDown: { code: 'accSagittalSharp5v23SDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v23SUp: { code: 'accSagittalFlat5v23SUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v19CDown: { code: 'accSagittalSharp5v19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v19CUp: { code: 'accSagittalFlat5v19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp23CDown: { code: 'accSagittalSharp23CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat23CUp: { code: 'accSagittalFlat23CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp23CUp: { code: 'accSagittalSharp23CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat23CDown: { code: 'accSagittalFlat23CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v19CUp: { code: 'accSagittalSharp5v19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v19CDown: { code: 'accSagittalFlat5v19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v23SUp: { code: 'accSagittalSharp5v23SUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v23SDown: { code: 'accSagittalFlat5v23SDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp5v23SDown: { code: 'accSagittalDoubleSharp5v23SDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat5v23SUp: { code: 'accSagittalDoubleFlat5v23SUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp5v19CDown: { code: 'accSagittalDoubleSharp5v19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat5v19CUp: { code: 'accSagittalDoubleFlat5v19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp23CDown: { code: 'accSagittalDoubleSharp23CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat23CUp: { code: 'accSagittalDoubleFlat23CUp', parenRightPaddingAdjustment: -1 }, + accSagittal19SchismaUp: { code: 'accSagittal19SchismaUp', parenRightPaddingAdjustment: -1 }, + accSagittal19SchismaDown: { code: 'accSagittal19SchismaDown', parenRightPaddingAdjustment: -1 }, + accSagittal17KleismaUp: { code: 'accSagittal17KleismaUp', parenRightPaddingAdjustment: -1 }, + accSagittal17KleismaDown: { code: 'accSagittal17KleismaDown', parenRightPaddingAdjustment: -1 }, + accSagittal143CommaUp: { code: 'accSagittal143CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal143CommaDown: { code: 'accSagittal143CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal11v49CommaUp: { code: 'accSagittal11v49CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal11v49CommaDown: { code: 'accSagittal11v49CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal19CommaUp: { code: 'accSagittal19CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal19CommaDown: { code: 'accSagittal19CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal7v19CommaUp: { code: 'accSagittal7v19CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal7v19CommaDown: { code: 'accSagittal7v19CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal49SmallDiesisUp: { code: 'accSagittal49SmallDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal49SmallDiesisDown: { code: 'accSagittal49SmallDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal23SmallDiesisUp: { code: 'accSagittal23SmallDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal23SmallDiesisDown: { code: 'accSagittal23SmallDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal5v13MediumDiesisUp: { code: 'accSagittal5v13MediumDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal5v13MediumDiesisDown: { code: 'accSagittal5v13MediumDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal11v19MediumDiesisUp: { code: 'accSagittal11v19MediumDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal11v19MediumDiesisDown: { code: 'accSagittal11v19MediumDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal49MediumDiesisUp: { code: 'accSagittal49MediumDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal49MediumDiesisDown: { code: 'accSagittal49MediumDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal5v49MediumDiesisUp: { code: 'accSagittal5v49MediumDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal5v49MediumDiesisDown: { code: 'accSagittal5v49MediumDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal49LargeDiesisUp: { code: 'accSagittal49LargeDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal49LargeDiesisDown: { code: 'accSagittal49LargeDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal11v19LargeDiesisUp: { code: 'accSagittal11v19LargeDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal11v19LargeDiesisDown: { code: 'accSagittal11v19LargeDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal5v13LargeDiesisUp: { code: 'accSagittal5v13LargeDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal5v13LargeDiesisDown: { code: 'accSagittal5v13LargeDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp23SDown: { code: 'accSagittalSharp23SDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat23SUp: { code: 'accSagittalFlat23SUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp49SDown: { code: 'accSagittalSharp49SDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat49SUp: { code: 'accSagittalFlat49SUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7v19CDown: { code: 'accSagittalSharp7v19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7v19CUp: { code: 'accSagittalFlat7v19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp19CDown: { code: 'accSagittalSharp19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat19CUp: { code: 'accSagittalFlat19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp11v49CDown: { code: 'accSagittalSharp11v49CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat11v49CUp: { code: 'accSagittalFlat11v49CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp143CDown: { code: 'accSagittalSharp143CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat143CUp: { code: 'accSagittalFlat143CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp17kDown: { code: 'accSagittalSharp17kDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat17kUp: { code: 'accSagittalFlat17kUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp19sDown: { code: 'accSagittalSharp19sDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat19sUp: { code: 'accSagittalFlat19sUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp19sUp: { code: 'accSagittalSharp19sUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat19sDown: { code: 'accSagittalFlat19sDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp17kUp: { code: 'accSagittalSharp17kUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat17kDown: { code: 'accSagittalFlat17kDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp143CUp: { code: 'accSagittalSharp143CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat143CDown: { code: 'accSagittalFlat143CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp11v49CUp: { code: 'accSagittalSharp11v49CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat11v49CDown: { code: 'accSagittalFlat11v49CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp19CUp: { code: 'accSagittalSharp19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat19CDown: { code: 'accSagittalFlat19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7v19CUp: { code: 'accSagittalSharp7v19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7v19CDown: { code: 'accSagittalFlat7v19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp49SUp: { code: 'accSagittalSharp49SUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat49SDown: { code: 'accSagittalFlat49SDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp23SUp: { code: 'accSagittalSharp23SUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat23SDown: { code: 'accSagittalFlat23SDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v13MUp: { code: 'accSagittalSharp5v13MUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v13MDown: { code: 'accSagittalFlat5v13MDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp11v19MUp: { code: 'accSagittalSharp11v19MUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat11v19MDown: { code: 'accSagittalFlat11v19MDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp49MUp: { code: 'accSagittalSharp49MUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat49MDown: { code: 'accSagittalFlat49MDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v49MUp: { code: 'accSagittalSharp5v49MUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v49MDown: { code: 'accSagittalFlat5v49MDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp49LUp: { code: 'accSagittalSharp49LUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat49LDown: { code: 'accSagittalFlat49LDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp11v19LUp: { code: 'accSagittalSharp11v19LUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat11v19LDown: { code: 'accSagittalFlat11v19LDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v13LUp: { code: 'accSagittalSharp5v13LUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v13LDown: { code: 'accSagittalFlat5v13LDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp23SDown: { code: 'accSagittalDoubleSharp23SDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat23SUp: { code: 'accSagittalDoubleFlat23SUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp49SDown: { code: 'accSagittalDoubleSharp49SDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat49SUp: { code: 'accSagittalDoubleFlat49SUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp7v19CDown: { code: 'accSagittalDoubleSharp7v19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat7v19CUp: { code: 'accSagittalDoubleFlat7v19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp19CDown: { code: 'accSagittalDoubleSharp19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat19CUp: { code: 'accSagittalDoubleFlat19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp11v49CDown: { code: 'accSagittalDoubleSharp11v49CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat11v49CUp: { code: 'accSagittalDoubleFlat11v49CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp143CDown: { code: 'accSagittalDoubleSharp143CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat143CUp: { code: 'accSagittalDoubleFlat143CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp17kDown: { code: 'accSagittalDoubleSharp17kDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat17kUp: { code: 'accSagittalDoubleFlat17kUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp19sDown: { code: 'accSagittalDoubleSharp19sDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat19sUp: { code: 'accSagittalDoubleFlat19sUp', parenRightPaddingAdjustment: -1 }, + accSagittalShaftUp: { code: 'accSagittalShaftUp', parenRightPaddingAdjustment: -1 }, + accSagittalShaftDown: { code: 'accSagittalShaftDown', parenRightPaddingAdjustment: -1 }, + accSagittalAcute: { code: 'accSagittalAcute', parenRightPaddingAdjustment: -1 }, + accSagittalGrave: { code: 'accSagittalGrave', parenRightPaddingAdjustment: -1 }, + accSagittal1MinaUp: { code: 'accSagittal1MinaUp', parenRightPaddingAdjustment: -1 }, + accSagittal1MinaDown: { code: 'accSagittal1MinaDown', parenRightPaddingAdjustment: -1 }, + accSagittal2MinasUp: { code: 'accSagittal2MinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal2MinasDown: { code: 'accSagittal2MinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal1TinaUp: { code: 'accSagittal1TinaUp', parenRightPaddingAdjustment: -1 }, + accSagittal1TinaDown: { code: 'accSagittal1TinaDown', parenRightPaddingAdjustment: -1 }, + accSagittal2TinasUp: { code: 'accSagittal2TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal2TinasDown: { code: 'accSagittal2TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal3TinasUp: { code: 'accSagittal3TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal3TinasDown: { code: 'accSagittal3TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal4TinasUp: { code: 'accSagittal4TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal4TinasDown: { code: 'accSagittal4TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal5TinasUp: { code: 'accSagittal5TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal5TinasDown: { code: 'accSagittal5TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal6TinasUp: { code: 'accSagittal6TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal6TinasDown: { code: 'accSagittal6TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal7TinasUp: { code: 'accSagittal7TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal7TinasDown: { code: 'accSagittal7TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal8TinasUp: { code: 'accSagittal8TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal8TinasDown: { code: 'accSagittal8TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal9TinasUp: { code: 'accSagittal9TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal9TinasDown: { code: 'accSagittal9TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittalFractionalTinaUp: { code: 'accSagittalFractionalTinaUp', parenRightPaddingAdjustment: -1 }, + accSagittalFractionalTinaDown: { code: 'accSagittalFractionalTinaDown', parenRightPaddingAdjustment: -1 }, + accidentalNarrowReversedFlat: { code: 'accidentalNarrowReversedFlat', parenRightPaddingAdjustment: -1 }, + accidentalNarrowReversedFlatAndFlat: { + code: 'accidentalNarrowReversedFlatAndFlat', + parenRightPaddingAdjustment: -1, + }, + accidentalWilsonPlus: { code: 'accidentalWilsonPlus', parenRightPaddingAdjustment: -1 }, + accidentalWilsonMinus: { code: 'accidentalWilsonMinus', parenRightPaddingAdjustment: -1 }, +}; +// Helps determine the layout of accidentals. +const accidentalColumns = { + 1: { + a: [1], + b: [1], + }, + 2: { + a: [1, 2], + }, + 3: { + a: [1, 3, 2], + b: [1, 2, 1], + second_on_bottom: [1, 2, 3], + }, + 4: { + a: [1, 3, 4, 2], + b: [1, 2, 3, 1], + spaced_out_tetrachord: [1, 2, 1, 2], + }, + 5: { + a: [1, 3, 5, 4, 2], + b: [1, 2, 4, 3, 1], + spaced_out_pentachord: [1, 2, 3, 2, 1], + very_spaced_out_pentachord: [1, 2, 1, 2, 1], + }, + 6: { + a: [1, 3, 5, 6, 4, 2], + b: [1, 2, 4, 5, 3, 1], + spaced_out_hexachord: [1, 3, 2, 1, 3, 2], + very_spaced_out_hexachord: [1, 2, 1, 2, 1, 2], + }, +}; +const articulations = { + 'a.': { code: 'augmentationDot', between_lines: true }, + av: { + aboveCode: 'articStaccatissimoAbove', + belowCode: 'articStaccatissimoBelow', + between_lines: true, + }, + 'a>': { + aboveCode: 'articAccentAbove', + belowCode: 'articAccentBelow', + between_lines: true, + }, + 'a-': { + aboveCode: 'articTenutoAbove', + belowCode: 'articTenutoBelow', + between_lines: true, + }, + 'a^': { + aboveCode: 'articMarcatoAbove', + belowCode: 'articMarcatoBelow', + between_lines: false, + }, + 'a+': { code: 'pluckedLeftHandPizzicato', between_lines: false }, + ao: { + aboveCode: 'pluckedSnapPizzicatoAbove', + belowCode: 'pluckedSnapPizzicatoBelow', + between_lines: false, + }, + ah: { code: 'stringsHarmonic', between_lines: false }, + 'a@': { aboveCode: 'fermataAbove', belowCode: 'fermataBelow', between_lines: false }, + 'a@a': { code: 'fermataAbove', between_lines: false }, + 'a@u': { code: 'fermataBelow', between_lines: false }, + 'a@s': { aboveCode: 'fermataShortAbove', belowCode: 'fermataShortBelow', between_lines: false }, + 'a@as': { code: 'fermataShortAbove', between_lines: false }, + 'a@us': { code: 'fermataShortBelow', between_lines: false }, + 'a@l': { aboveCode: 'fermataLongAbove', belowCode: 'fermataLongBelow', between_lines: false }, + 'a@al': { code: 'fermataLongAbove', between_lines: false }, + 'a@ul': { code: 'fermataLongBelow', between_lines: false }, + 'a@vl': { aboveCode: 'fermataVeryLongAbove', belowCode: 'fermataVeryLongBelow', between_lines: false }, + 'a@avl': { code: 'fermataVeryLongAbove', between_lines: false }, + 'a@uvl': { code: 'fermataVeryLongBelow', between_lines: false }, + 'a|': { code: 'stringsUpBow', between_lines: false }, + am: { code: 'stringsDownBow', between_lines: false }, + 'a,': { code: 'pictChokeCymbal', between_lines: false }, // Choked +}; +const ornaments = { + mordent: { code: 'ornamentShortTrill' }, + mordent_inverted: { code: 'ornamentMordent' }, + turn: { code: 'ornamentTurn' }, + turn_inverted: { code: 'ornamentTurnSlash' }, + tr: { code: 'ornamentTrill' }, + upprall: { code: 'ornamentPrecompSlideTrillDAnglebert' }, + downprall: { code: 'ornamentPrecompDoubleCadenceUpperPrefix' }, + prallup: { code: 'ornamentPrecompTrillSuffixDandrieu' }, + pralldown: { code: 'ornamentPrecompTrillLowerSuffix' }, + upmordent: { code: 'ornamentPrecompSlideTrillBach' }, + downmordent: { code: 'ornamentPrecompDoubleCadenceUpperPrefixTurn' }, + lineprall: { code: 'ornamentPrecompAppoggTrill' }, + prallprall: { code: 'ornamentTremblement' }, + scoop: { code: 'brassScoop' }, + doit: { code: 'brassDoitMedium' }, + fall: { code: 'brassFallLipShort' }, + doitLong: { code: 'brassLiftMedium' }, + fallLong: { code: 'brassFallRoughMedium' }, + bend: { code: 'brassBend' }, + plungerClosed: { code: 'brassMuteClosed' }, + plungerOpen: { code: 'brassMuteOpen' }, + flip: { code: 'brassFlip' }, + jazzTurn: { code: 'brassJazzTurn' }, + smear: { code: 'brassSmear' }, +}; +class Tables { + /** + * @returns the `Font` object at the head of the music font stack. + */ + static currentMusicFont() { + if (Tables.MUSIC_FONT_STACK.length === 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('NoFonts', 'The font stack is empty. See: await Flow.fetchMusicFont(...); Flow.setMusicFont(...).'); + } + else { + return Tables.MUSIC_FONT_STACK[0]; + } + } + static clefProperties(clef) { + if (!clef || !(clef in clefs)) + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArgument', 'Invalid clef: ' + clef); + return clefs[clef]; + } + /** + * @param keyOctaveGlyph a string in the format "key/octave" (e.g., "c/5") or "key/octave/custom-note-head-code" (e.g., "g/5/t3"). + * @param clef + * @param params a struct with one option, `octave_shift` for clef ottavation (0 = default; 1 = 8va; -1 = 8vb, etc.). + * @returns properties for the specified note. + */ + // eslint-disable-next-line + static keyProperties(keyOctaveGlyph, clef = 'treble', params) { + let options = { octave_shift: 0, duration: '4' }; + if (typeof params === 'object') { + options = Object.assign(Object.assign({}, options), params); + } + const duration = Tables.sanitizeDuration(options.duration); + const pieces = keyOctaveGlyph.split('/'); + if (pieces.length < 2) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', `First argument must be note/octave or note/octave/glyph-code: ${keyOctaveGlyph}`); + } + const key = pieces[0].toUpperCase(); + const value = notesInfo[key]; + if (!value) + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', 'Invalid key name: ' + key); + if (value.octave) + pieces[1] = value.octave.toString(); + let octave = parseInt(pieces[1], 10); + // Octave_shift is the shift to compensate for clef 8va/8vb. + octave += -1 * options.octave_shift; + const baseIndex = octave * 7 - 4 * 7; + let line = (baseIndex + value.index) / 2; + line += Tables.clefProperties(clef).line_shift; + let stroke = 0; + if (line <= 0 && (line * 2) % 2 === 0) + stroke = 1; // stroke up + if (line >= 6 && (line * 2) % 2 === 0) + stroke = -1; // stroke down + // Integer value for note arithmetic. + const int_value = typeof value.int_val !== 'undefined' ? octave * 12 + value.int_val : undefined; + // If the user specified a glyph, overwrite the glyph code. + const code = value.code; + const shift_right = value.shift_right; + let customNoteHeadProps = {}; + if (pieces.length > 2 && pieces[2]) { + const glyphName = pieces[2].toUpperCase(); + customNoteHeadProps = { code: this.codeNoteHead(glyphName, duration) } || {}; + } + return Object.assign({ key, + octave, + line, + int_value, accidental: value.accidental, code, + stroke, + shift_right, displaced: false }, customNoteHeadProps); + } + static integerToNote(integer) { + if (typeof integer === 'undefined' || integer < 0 || integer > 11) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', `integerToNote() requires an integer in the range [0, 11]: ${integer}`); + } + const table = { + 0: 'C', + 1: 'C#', + 2: 'D', + 3: 'D#', + 4: 'E', + 5: 'F', + 6: 'F#', + 7: 'G', + 8: 'G#', + 9: 'A', + 10: 'A#', + 11: 'B', + }; + const noteValue = table[integer]; + if (!noteValue) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', `Unknown note value for integer: ${integer}`); + } + return noteValue; + } + static tabToGlyph(fret, scale = 1.0) { + let glyph = undefined; + let width = 0; + let shift_y = 0; + if (fret.toUpperCase() === 'X') { + const glyphMetrics = new _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph('accidentalDoubleSharp', Tables.TABLATURE_FONT_SCALE).getMetrics(); + glyph = 'accidentalDoubleSharp'; + if (glyphMetrics.width == undefined || glyphMetrics.height == undefined) + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('InvalidMetrics', 'Width and height required'); + width = glyphMetrics.width; + shift_y = -glyphMetrics.height / 2; + } + else { + width = Tables.textWidth(fret); + } + return { + text: fret, + code: glyph, + getWidth: () => width * scale, + shift_y, + }; + } + // Used by annotation.ts and bend.ts. Clearly this implementation only works for the default font size. + // TODO: The actual width depends on the font family, size, weight, style. + static textWidth(text) { + return 7 * text.toString().length; + } + static articulationCodes(artic) { + return articulations[artic]; + } + static accidentalCodes(acc) { + return accidentals[acc]; + } + static ornamentCodes(acc) { + return ornaments[acc]; + } + static keySignature(spec) { + const keySpec = keySignatures[spec]; + if (!keySpec) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadKeySignature', `Bad key signature spec: '${spec}'`); + } + if (!keySpec.acc) { + return []; + } + const accidentalList = { + b: [2, 0.5, 2.5, 1, 3, 1.5, 3.5], + '#': [0, 1.5, -0.5, 1, 2.5, 0.5, 2], + }; + const notes = accidentalList[keySpec.acc]; + const acc_list = []; + for (let i = 0; i < keySpec.num; ++i) { + const line = notes[i]; + acc_list.push({ type: keySpec.acc, line }); + } + return acc_list; + } + static getKeySignatures() { + return keySignatures; + } + static hasKeySignature(spec) { + return spec in keySignatures; + } + /** + * Convert duration aliases to the number based duration. + * If the input isn't an alias, simply return the input. + * @param duration + * @returns Example: 'q' -> '4', '8' -> '8' + */ + static sanitizeDuration(duration) { + const durationNumber = durationAliases[duration]; + if (durationNumber !== undefined) { + duration = durationNumber; + } + if (durations[duration] === undefined) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('BadArguments', `The provided duration is not valid: ${duration}`); + } + return duration; + } + /** Convert the `duration` to a fraction. */ + static durationToFraction(duration) { + return new _fraction__WEBPACK_IMPORTED_MODULE_0__.Fraction().parse(Tables.sanitizeDuration(duration)); + } + /** Convert the `duration` to a number. */ + static durationToNumber(duration) { + return Tables.durationToFraction(duration).value(); + } + /* Convert the `duration` to total ticks. */ + static durationToTicks(duration) { + duration = Tables.sanitizeDuration(duration); + const ticks = durations[duration]; + if (ticks === undefined) { + throw new _util__WEBPACK_IMPORTED_MODULE_2__.RuntimeError('InvalidDuration'); + } + return ticks; + } + static codeNoteHead(type, duration) { + let code = ''; + switch (type) { + /* Diamond */ + case 'D0': + code = 'noteheadDiamondWhole'; + break; + case 'D1': + code = 'noteheadDiamondHalf'; + break; + case 'D2': + code = 'noteheadDiamondBlack'; + break; + case 'D3': + code = 'noteheadDiamondBlack'; + break; + /* Triangle */ + case 'T0': + code = 'noteheadTriangleUpWhole'; + break; + case 'T1': + code = 'noteheadTriangleUpHalf'; + break; + case 'T2': + code = 'noteheadTriangleUpBlack'; + break; + case 'T3': + code = 'noteheadTriangleUpBlack'; + break; + /* Cross */ + case 'X0': + code = 'noteheadXWhole'; + break; + case 'X1': + code = 'noteheadXHalf'; + break; + case 'X2': + code = 'noteheadXBlack'; + break; + case 'X3': + code = 'noteheadCircleX'; + break; + /* Square */ + case 'S1': + code = 'noteheadSquareWhite'; + break; + case 'S2': + code = 'noteheadSquareBlack'; + break; + /* Rectangle */ + case 'R1': + code = 'vexNoteHeadRectWhite'; // no smufl code + break; + case 'R2': + code = 'vexNoteHeadRectBlack'; // no smufl code + break; + case 'DO': + code = 'noteheadTriangleUpBlack'; + break; + case 'RE': + code = 'noteheadMoonBlack'; + break; + case 'MI': + code = 'noteheadDiamondBlack'; + break; + case 'FA': + code = 'noteheadTriangleLeftBlack'; + break; + case 'FAUP': + code = 'noteheadTriangleRightBlack'; + break; + case 'SO': + code = 'noteheadBlack'; + break; + case 'LA': + code = 'noteheadSquareBlack'; + break; + case 'TI': + code = 'noteheadTriangleRoundDownBlack'; + break; + case 'D': + case 'H': // left for backwards compatibility + switch (duration) { + case '1/2': + code = 'noteheadDiamondDoubleWhole'; + break; + case '1': + code = 'noteheadDiamondWhole'; + break; + case '2': + code = 'noteheadDiamondHalf'; + break; + default: + code = 'noteheadDiamondBlack'; + break; + } + break; + case 'N': + case 'G': + switch (duration) { + case '1/2': + code = 'noteheadDoubleWhole'; + break; + case '1': + code = 'noteheadWhole'; + break; + case '2': + code = 'noteheadHalf'; + break; + default: + code = 'noteheadBlack'; + break; + } + break; + case 'M': // left for backwards compatibility + case 'X': + switch (duration) { + case '1/2': + code = 'noteheadXDoubleWhole'; + break; + case '1': + code = 'noteheadXWhole'; + break; + case '2': + code = 'noteheadXHalf'; + break; + default: + code = 'noteheadXBlack'; + break; + } + break; + case 'CX': + switch (duration) { + case '1/2': + code = 'noteheadCircleXDoubleWhole'; + break; + case '1': + code = 'noteheadCircleXWhole'; + break; + case '2': + code = 'noteheadCircleXHalf'; + break; + default: + code = 'noteheadCircleX'; + break; + } + break; + case 'CI': + switch (duration) { + case '1/2': + code = 'noteheadCircledDoubleWhole'; + break; + case '1': + code = 'noteheadCircledWhole'; + break; + case '2': + code = 'noteheadCircledHalf'; + break; + default: + code = 'noteheadCircledBlack'; + break; + } + break; + case 'SQ': + switch (duration) { + case '1/2': + code = 'noteheadDoubleWholeSquare'; + break; + case '1': + code = 'noteheadSquareWhite'; + break; + case '2': + code = 'noteheadSquareWhite'; + break; + default: + code = 'noteheadSquareBlack'; + break; + } + break; + case 'TU': + switch (duration) { + case '1/2': + code = 'noteheadTriangleUpDoubleWhole'; + break; + case '1': + code = 'noteheadTriangleUpWhole'; + break; + case '2': + code = 'noteheadTriangleUpHalf'; + break; + default: + code = 'noteheadTriangleUpBlack'; + break; + } + break; + case 'TD': + switch (duration) { + case '1/2': + code = 'noteheadTriangleDownDoubleWhole'; + break; + case '1': + code = 'noteheadTriangleDownWhole'; + break; + case '2': + code = 'noteheadTriangleDownHalf'; + break; + default: + code = 'noteheadTriangleDownBlack'; + break; + } + break; + case 'SF': + switch (duration) { + case '1/2': + code = 'noteheadSlashedDoubleWhole1'; + break; + case '1': + code = 'noteheadSlashedWhole1'; + break; + case '2': + code = 'noteheadSlashedHalf1'; + break; + default: + code = 'noteheadSlashedBlack1'; + } + break; + case 'SB': + switch (duration) { + case '1/2': + code = 'noteheadSlashedDoubleWhole2'; + break; + case '1': + code = 'noteheadSlashedWhole2'; + break; + case '2': + code = 'noteheadSlashedHalf2'; + break; + default: + code = 'noteheadSlashedBlack2'; + } + break; + } + return code; + } + // Return a glyph given duration and type. The type can be a custom glyph code from customNoteHeads. + // The default type is a regular note ('n'). + // eslint-disable-next-line + static getGlyphProps(duration, type = 'n') { + duration = Tables.sanitizeDuration(duration); + // Lookup duration for default glyph head code + const code = durationCodes[duration]; + if (code === undefined) { + return undefined; + } + // Get glyph properties for 'type' from duration string (note, rest, harmonic, muted, slash) + let glyphTypeProperties = code.type[type]; + // Try and get it from the custom list of note heads + const codeNoteHead = Tables.codeNoteHead(type.toUpperCase(), duration); + if (codeNoteHead != '') + glyphTypeProperties = Object.assign(Object.assign({}, glyphTypeProperties), { code_head: codeNoteHead, code: codeNoteHead }); + const code_head = glyphTypeProperties.code_head; + // The default implementation of getWidth() calls Glyph.getWidth(code_head, scale). + // This can be overridden by an individual glyph type (see slash noteheads below: Tables.SLASH_NOTEHEAD_WIDTH). + const getWidth = (scale = Tables.NOTATION_FONT_SCALE) => _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.getWidth(code_head, scale); + // Merge duration props for 'duration' with the note head properties. + return Object.assign(Object.assign(Object.assign({}, code.common), { getWidth: getWidth }), glyphTypeProperties); + } +} +Tables.SOFTMAX_FACTOR = 100; +Tables.STEM_WIDTH = 1.5; +Tables.STEM_HEIGHT = 35; +Tables.STAVE_LINE_THICKNESS = 1; +Tables.RENDER_PRECISION_PLACES = 3; +Tables.RESOLUTION = RESOLUTION; +/** + * Customize this by calling Flow.setMusicFont(...fontNames); + */ +Tables.MUSIC_FONT_STACK = []; +Tables.NOTATION_FONT_SCALE = 39; +Tables.TABLATURE_FONT_SCALE = 39; +Tables.SLASH_NOTEHEAD_WIDTH = 15; +Tables.STAVE_LINE_DISTANCE = 10; +// HACK: +// Since text origins are positioned at the baseline, we must +// compensate for the ascender of the text. Of course, 1 staff space is +// a very poor approximation. +// +// This will be deprecated in the future. This is a temporary solution until +// we have more robust text metrics. +Tables.TEXT_HEIGHT_OFFSET_HACK = 1; +Tables.accidentalMap = accidentals; +Tables.accidentalColumnsTable = accidentalColumns; +Tables.unicode = { + // ♯ accidental sharp + sharp: String.fromCharCode(0x266f), + // ♭ accidental flat + flat: String.fromCharCode(0x266d), + // ♮ accidental natural + natural: String.fromCharCode(0x266e), + // △ major seventh + triangle: String.fromCharCode(0x25b3), + // ø half-diminished + 'o-with-slash': String.fromCharCode(0x00f8), + // ° diminished + degrees: String.fromCharCode(0x00b0), + // ○ diminished + circle: String.fromCharCode(0x25cb), +}; +/* The list of valid note types. Used by note.ts during parseNoteStruct(). */ +Tables.validTypes = validNoteTypes; +// Default time signature. +Tables.TIME4_4 = { + num_beats: 4, + beat_value: 4, + resolution: RESOLUTION, +}; +// 1/2, 1, 2, 4, 8, 16, 32, 64, 128 +// NOTE: There is no 256 here! However, there are other mentions of 256 in this file. +// For example, in durations has a 256 key, and sanitizeDuration() can return 256. +// The sanitizeDuration() bit may need to be removed by 0xfe. +// eslint-disable-next-line +const durationCodes = { + '1/2': { + common: { + stem: false, + stem_offset: 0, + flag: false, + stem_up_extension: -Tables.STEM_HEIGHT, + stem_down_extension: -Tables.STEM_HEIGHT, + tabnote_stem_up_extension: -Tables.STEM_HEIGHT, + tabnote_stem_down_extension: -Tables.STEM_HEIGHT, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + // Breve rest + code_head: 'restDoubleWhole', + rest: true, + position: 'B/5', + dot_shiftY: 0.5, + // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined { + // return Glyph.getWidth('restDoubleWhole', scale); + // }, + }, + s: { + // Breve note slash - + // Drawn with canvas primitives + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 1: { + common: { + stem: false, + stem_offset: 0, + flag: false, + stem_up_extension: -Tables.STEM_HEIGHT, + stem_down_extension: -Tables.STEM_HEIGHT, + tabnote_stem_up_extension: -Tables.STEM_HEIGHT, + tabnote_stem_down_extension: -Tables.STEM_HEIGHT, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + // Whole rest + code_head: 'restWhole', + leger_code_head: 'restWholeLegerLine', + rest: true, + position: 'D/5', + dot_shiftY: 0.5, + // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined { + // return Glyph.getWidth('restWhole', scale); + // }, + }, + s: { + // Whole note slash + // Drawn with canvas primitives + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 2: { + common: { + stem: true, + stem_offset: 0, + flag: false, + stem_up_extension: 0, + stem_down_extension: 0, + tabnote_stem_up_extension: 0, + tabnote_stem_down_extension: 0, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + // Half rest + code_head: 'restHalf', + leger_code_head: 'restHalfLegerLine', + stem: false, + rest: true, + position: 'B/4', + dot_shiftY: -0.5, + // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined { + // return Glyph.getWidth('restHalf', scale); + // }, + }, + s: { + // Half note slash + // Drawn with canvas primitives + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 4: { + common: { + stem: true, + stem_offset: 0, + flag: false, + stem_up_extension: 0, + stem_down_extension: 0, + tabnote_stem_up_extension: 0, + tabnote_stem_down_extension: 0, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + // Quarter rest + code_head: 'restQuarter', + stem: false, + rest: true, + position: 'B/4', + dot_shiftY: -0.5, + line_above: 1.5, + line_below: 1.5, + // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined { + // return Glyph.getWidth('restQuarter', scale); + // }, + }, + s: { + // Quarter slash + // Drawn with canvas primitives + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 8: { + common: { + stem: true, + stem_offset: 0, + flag: true, + beam_count: 1, + stem_beam_extension: 0, + code_flag_upstem: 'flag8thUp', + code_flag_downstem: 'flag8thDown', + stem_up_extension: 0, + stem_down_extension: 0, + tabnote_stem_up_extension: 0, + tabnote_stem_down_extension: 0, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + // Eighth rest + code_head: 'rest8th', + stem: false, + flag: false, + rest: true, + position: 'B/4', + dot_shiftY: -0.5, + line_above: 1.0, + line_below: 1.0, + // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined { + // return Glyph.getWidth('rest8th', scale); + // }, + }, + s: { + // Eighth slash + // Drawn with canvas primitives + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 16: { + common: { + beam_count: 2, + stem_beam_extension: 0, + stem: true, + stem_offset: 0, + flag: true, + code_flag_upstem: 'flag16thUp', + code_flag_downstem: 'flag16thDown', + stem_up_extension: 0, + stem_down_extension: 0, + tabnote_stem_up_extension: 0, + tabnote_stem_down_extension: 0, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + // Sixteenth rest + code_head: 'rest16th', + stem: false, + flag: false, + rest: true, + position: 'B/4', + dot_shiftY: -0.5, + line_above: 1.0, + line_below: 2.0, + // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined { + // return Glyph.getWidth('rest16th', scale); + // }, + }, + s: { + // Sixteenth slash + // Drawn with canvas primitives + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 32: { + common: { + beam_count: 3, + stem_beam_extension: 7.5, + stem: true, + stem_offset: 0, + flag: true, + code_flag_upstem: 'flag32ndUp', + code_flag_downstem: 'flag32ndDown', + stem_up_extension: 9, + stem_down_extension: 9, + tabnote_stem_up_extension: 9, + tabnote_stem_down_extension: 9, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + // Thirty-second rest + code_head: 'rest32nd', + stem: false, + flag: false, + rest: true, + position: 'B/4', + dot_shiftY: -1.5, + line_above: 2.0, + line_below: 2.0, + // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined { + // return Glyph.getWidth('rest32nd', scale); + // }, + }, + s: { + // Thirty-second slash + // Drawn with canvas primitives + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 64: { + common: { + beam_count: 4, + stem_beam_extension: 15, + stem: true, + stem_offset: 0, + flag: true, + code_flag_upstem: 'flag64thUp', + code_flag_downstem: 'flag64thDown', + stem_up_extension: 13, + stem_down_extension: 13, + tabnote_stem_up_extension: 13, + tabnote_stem_down_extension: 13, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + // Sixty-fourth rest + code_head: 'rest64th', + stem: false, + flag: false, + rest: true, + position: 'B/4', + dot_shiftY: -1.5, + line_above: 2.0, + line_below: 3.0, + // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined { + // return Glyph.getWidth('rest64th', scale); + // }, + }, + s: { + // Sixty-fourth slash + // Drawn with canvas primitives + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 128: { + common: { + beam_count: 5, + stem_beam_extension: 22.5, + stem: true, + stem_offset: 0, + flag: true, + code_flag_upstem: 'flag128thUp', + code_flag_downstem: 'flag128thDown', + stem_up_extension: 22, + stem_down_extension: 22, + tabnote_stem_up_extension: 22, + tabnote_stem_down_extension: 22, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + // Hundred-twenty-eight rest + code_head: 'rest128th', + stem: false, + flag: false, + rest: true, + position: 'B/4', + dot_shiftY: -2.5, + line_above: 3.0, + line_below: 3.0, + // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined { + // return Glyph.getWidth('rest128th', scale); + // }, + }, + s: { + // Hundred-twenty-eight slash + // Drawn with canvas primitives + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, +}; + + +/***/ }), + +/***/ "./src/tabnote.ts": +/*!************************!*\ + !*** ./src/tabnote.ts ***! + \************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TabNote": () => (/* binding */ TabNote) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _stemmablenote__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stemmablenote */ "./src/stemmablenote.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// The file implements notes for Tablature notation. This consists of one or +// more fret positions, and can either be drawn with or without stems. +// +// See `tests/tabnote_tests.ts` for usage examples. + + + + + + + + +// Gets the unused strings grouped together if consecutive. +// +// Parameters: +// * num_lines - The number of lines +// * strings_used - An array of numbers representing which strings have fret positions +function getUnusedStringGroups(num_lines, strings_used) { + const stem_through = []; + let group = []; + for (let string = 1; string <= num_lines; string++) { + const is_used = strings_used.indexOf(string) > -1; + if (!is_used) { + group.push(string); + } + else { + stem_through.push(group); + group = []; + } + } + if (group.length > 0) + stem_through.push(group); + return stem_through; +} +// Gets groups of points that outline the partial stem lines +// between fret positions +// +// Parameters: +// * stem_Y - The `y` coordinate the stem is located on +// * unused_strings - An array of groups of unused strings +// * stave - The stave to use for reference +// * stem_direction - The direction of the stem +function getPartialStemLines(stem_y, unused_strings, stave, stem_direction) { + const up_stem = stem_direction !== 1; + const down_stem = stem_direction !== -1; + const line_spacing = stave.getSpacingBetweenLines(); + const total_lines = stave.getNumLines(); + const stem_lines = []; + unused_strings.forEach((strings) => { + const containsLastString = strings.indexOf(total_lines) > -1; + const containsFirstString = strings.indexOf(1) > -1; + if ((up_stem && containsFirstString) || (down_stem && containsLastString)) { + return; + } + // If there's only one string in the group, push a duplicate value. + // We do this because we need 2 strings to convert into upper/lower y + // values. + if (strings.length === 1) { + strings.push(strings[0]); + } + const line_ys = []; + // Iterate through each group string and store it's y position + strings.forEach((string, index, strings) => { + const isTopBound = string === 1; + const isBottomBound = string === total_lines; + // Get the y value for the appropriate staff line, + // we adjust for a 0 index array, since string numbers are index 1 + let y = stave.getYForLine(string - 1); + // Unless the string is the first or last, add padding to each side + // of the line + if (index === 0 && !isTopBound) { + y -= line_spacing / 2 - 1; + } + else if (index === strings.length - 1 && !isBottomBound) { + y += line_spacing / 2 - 1; + } + // Store the y value + line_ys.push(y); + // Store a subsequent y value connecting this group to the main + // stem above/below the stave if it's the top/bottom string + if (stem_direction === 1 && isTopBound) { + line_ys.push(stem_y - 2); + } + else if (stem_direction === -1 && isBottomBound) { + line_ys.push(stem_y + 2); + } + }); + // Add the sorted y values to the + stem_lines.push(line_ys.sort((a, b) => a - b)); + }); + return stem_lines; +} +class TabNote extends _stemmablenote__WEBPACK_IMPORTED_MODULE_4__.StemmableNote { + // Initialize the TabNote with a `noteStruct` full of properties + // and whether to `draw_stem` when rendering the note + constructor(noteStruct, draw_stem = false) { + super(noteStruct); + this.glyphs = []; + // Return the number of the greatest string, which is the string lowest on the display + this.greatestString = () => { + return this.positions.map((x) => x.str).reduce((a, b) => (a > b ? a : b)); + }; + // Return the number of the least string, which is the string highest on the display + this.leastString = () => { + return this.positions.map((x) => x.str).reduce((a, b) => (a < b ? a : b)); + }; + this.ghost = false; // Renders parenthesis around notes + // Note properties + // The fret positions in the note. An array of `{ str: X, fret: X }` + this.positions = noteStruct.positions || []; + // Render Options + this.render_options = Object.assign(Object.assign({}, this.render_options), { + // font size for note heads and rests + glyph_font_scale: _tables__WEBPACK_IMPORTED_MODULE_5__.Tables.TABLATURE_FONT_SCALE, + // Flag to draw a stem + draw_stem, + // Flag to draw dot modifiers + draw_dots: draw_stem, + // Flag to extend the main stem through the stave and fret positions + draw_stem_through_stave: false, + // vertical shift from stave line + y_shift: 0, + // normal glyph scale + scale: 1.0, + // default tablature font + font: `${_font__WEBPACK_IMPORTED_MODULE_0__.Font.SIZE}pt ${_font__WEBPACK_IMPORTED_MODULE_0__.Font.SANS_SERIF}` }); + this.glyph = _tables__WEBPACK_IMPORTED_MODULE_5__.Tables.getGlyphProps(this.duration, this.noteType); + (0,_util__WEBPACK_IMPORTED_MODULE_7__.defined)(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`); + this.buildStem(); + if (noteStruct.stem_direction) { + this.setStemDirection(noteStruct.stem_direction); + } + else { + this.setStemDirection(_stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP); + } + // Renders parenthesis around notes + this.ghost = false; + this.updateWidth(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_6__.Category.TabNote; + } + reset() { + super.reset(); + if (this.stave) + this.setStave(this.stave); + return this; + } + // Set as ghost `TabNote`, surrounds the fret positions with parenthesis. + // Often used for indicating frets that are being bent to + setGhost(ghost) { + this.ghost = ghost; + this.updateWidth(); + return this; + } + // Determine if the note has a stem + hasStem() { + if (this.render_options.draw_stem) + return true; + return false; + } + // Get the default stem extension for the note + getStemExtension() { + const glyph = this.getGlyph(); + if (this.stem_extension_override != null) { + return this.stem_extension_override; + } + if (glyph) { + return this.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP ? glyph.tabnote_stem_up_extension : glyph.tabnote_stem_down_extension; + } + return 0; + } + // Calculate and store the width of the note + updateWidth() { + this.glyphs = []; + this.width = 0; + for (let i = 0; i < this.positions.length; ++i) { + let fret = this.positions[i].fret; + if (this.ghost) + fret = '(' + fret + ')'; + const glyph = _tables__WEBPACK_IMPORTED_MODULE_5__.Tables.tabToGlyph(fret.toString(), this.render_options.scale); + this.glyphs.push(glyph); + this.width = Math.max(glyph.getWidth(), this.width); + } + // For some reason we associate a notehead glyph with a TabNote, and this + // glyph is used for certain width calculations. Of course, this is totally + // incorrect since a notehead is a poor approximation for the dimensions of + // a fret number which can have multiple digits. As a result, we must + // overwrite getWidth() to return the correct width + this.glyph.getWidth = () => this.width; + } + // Set the `stave` to the note + setStave(stave) { + super.setStave(stave); + const ctx = stave.getContext(); + this.setContext(ctx); + // Calculate the fret number width based on font used + if (ctx) { + this.width = 0; + for (let i = 0; i < this.glyphs.length; ++i) { + const glyph = this.glyphs[i]; + const text = '' + glyph.text; + if (text.toUpperCase() !== 'X') { + ctx.save(); + ctx.setFont(this.render_options.font); + glyph.width = ctx.measureText(text).width; + ctx.restore(); + glyph.getWidth = () => glyph.width; + } + this.width = Math.max(glyph.getWidth(), this.width); + } + this.glyph.getWidth = () => this.width; + } + // we subtract 1 from `line` because getYForLine expects a 0-based index, + // while the position.str is a 1-based index + const ys = this.positions.map(({ str: line }) => stave.getYForLine(Number(line) - 1)); + this.setYs(ys); + if (this.stem) { + this.stem.setYBounds(this.getStemY(), this.getStemY()); + } + return this; + } + // Get the fret positions for the note + getPositions() { + return this.positions; + } + // Get the default `x` and `y` coordinates for a modifier at a specific + // `position` at a fret position `index` + getModifierStartXY(position, index) { + if (!this.preFormatted) { + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('UnformattedNote', "Can't call GetModifierStartXY on an unformatted note"); + } + if (this.ys.length === 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('NoYValues', 'No Y-Values calculated for this note.'); + } + let x = 0; + if (position === _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier.Position.LEFT) { + x = -1 * 2; // FIXME: modifier padding, move to font file + } + else if (position === _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier.Position.RIGHT) { + x = this.width + 2; // FIXME: modifier padding, move to font file + } + else if (position === _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier.Position.BELOW || position === _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier.Position.ABOVE) { + const note_glyph_width = this.glyph.getWidth(); + x = note_glyph_width / 2; + } + return { + x: this.getAbsoluteX() + x, + y: this.ys[index], + }; + } + // Get the default line for rest + getLineForRest() { + return Number(this.positions[0].str); + } + // Pre-render formatting + preFormat() { + if (this.preFormatted) + return; + if (this.modifierContext) + this.modifierContext.preFormat(); + // width is already set during init() + this.preFormatted = true; + } + // Get the x position for the stem + getStemX() { + return this.getCenterGlyphX(); + } + // Get the y position for the stem + getStemY() { + const num_lines = this.checkStave().getNumLines(); + // The decimal staff line amounts provide optimal spacing between the + // fret number and the stem + const stemUpLine = -0.5; + const stemDownLine = num_lines - 0.5; + const stemStartLine = _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP === this.stem_direction ? stemUpLine : stemDownLine; + return this.checkStave().getYForLine(stemStartLine); + } + // Get the stem extents for the tabnote + getStemExtents() { + return this.checkStem().getExtents(); + } + // Draw the fal onto the context + drawFlag() { + var _a; + const { beam, glyph, render_options: { draw_stem }, } = this; + const context = this.checkContext(); + const shouldDrawFlag = beam == undefined && draw_stem; + // Now it's the flag's turn. + if (glyph.flag && shouldDrawFlag) { + const flag_x = this.getStemX(); + const flag_y = this.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.DOWN + ? // Down stems are below the note head and have flags on the right. + this.getStemY() - this.checkStem().getHeight() - (this.glyph ? this.glyph.stem_down_extension : 0) + : // Up stems are above the note head and have flags on the right. + this.getStemY() - this.checkStem().getHeight() + (this.glyph ? this.glyph.stem_up_extension : 0); + // Draw the Flag + //this.flag?.setOptions({ category: 'flag.tabStem' }); + (_a = this.flag) === null || _a === void 0 ? void 0 : _a.render(context, flag_x, flag_y); + //Glyph.renderGlyph(context, flag_x, flag_y, glyph_font_scale, flag_code, { category: 'flag.tabStem' }); + } + } + // Render the modifiers onto the context. + drawModifiers() { + this.modifiers.forEach((modifier) => { + // Only draw the dots if enabled. + if ((0,_typeguard__WEBPACK_IMPORTED_MODULE_6__.isDot)(modifier) && !this.render_options.draw_dots) { + return; + } + modifier.setContext(this.getContext()); + modifier.drawWithStyle(); + }); + } + // Render the stem extension through the fret positions + drawStemThrough() { + const stemX = this.getStemX(); + const stemY = this.getStemY(); + const ctx = this.checkContext(); + const drawStem = this.render_options.draw_stem; + const stemThrough = this.render_options.draw_stem_through_stave; + if (drawStem && stemThrough) { + const numLines = this.checkStave().getNumLines(); + const stringsUsed = this.positions.map((position) => Number(position.str)); + const unusedStrings = getUnusedStringGroups(numLines, stringsUsed); + const stemLines = getPartialStemLines(stemY, unusedStrings, this.checkStave(), this.getStemDirection()); + ctx.save(); + ctx.setLineWidth(_stem__WEBPACK_IMPORTED_MODULE_3__.Stem.WIDTH); + stemLines.forEach((bounds) => { + if (bounds.length === 0) + return; + ctx.beginPath(); + ctx.moveTo(stemX, bounds[0]); + ctx.lineTo(stemX, bounds[bounds.length - 1]); + ctx.stroke(); + ctx.closePath(); + }); + ctx.restore(); + } + } + // Render the fret positions onto the context + drawPositions() { + const ctx = this.checkContext(); + const x = this.getAbsoluteX(); + const ys = this.ys; + for (let i = 0; i < this.positions.length; ++i) { + const y = ys[i] + this.render_options.y_shift; + const glyph = this.glyphs[i]; + // Center the fret text beneath the notation note head + const note_glyph_width = this.glyph.getWidth(); + const tab_x = x + note_glyph_width / 2 - glyph.getWidth() / 2; + // FIXME: Magic numbers. + ctx.clearRect(tab_x - 2, y - 3, glyph.getWidth() + 4, 6); + if (glyph.code) { + _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph.renderGlyph(ctx, tab_x, y, this.render_options.glyph_font_scale * this.render_options.scale, glyph.code); + } + else { + ctx.save(); + ctx.setFont(this.render_options.font); + const text = glyph.text.toString(); + ctx.fillText(text, tab_x, y + 5 * this.render_options.scale); + ctx.restore(); + } + } + } + // The main rendering function for the entire note. + draw() { + const ctx = this.checkContext(); + if (this.ys.length === 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_7__.RuntimeError('NoYValues', "Can't draw note without Y values."); + } + this.setRendered(); + const render_stem = this.beam == undefined && this.render_options.draw_stem; + ctx.openGroup('tabnote', this.getAttribute('id'), { pointerBBox: true }); + this.drawPositions(); + this.drawStemThrough(); + if (this.stem && render_stem) { + const stem_x = this.getStemX(); + this.stem.setNoteHeadXBounds(stem_x, stem_x); + this.stem.setContext(ctx).draw(); + } + this.drawFlag(); + this.drawModifiers(); + ctx.closeGroup(); + } +} + + +/***/ }), + +/***/ "./src/tabslide.ts": +/*!*************************!*\ + !*** ./src/tabslide.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TabSlide": () => (/* binding */ TabSlide) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _tabtie__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tabtie */ "./src/tabtie.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// This class implements varies types of ties between contiguous notes. The +// ties include: regular ties, hammer ons, pull offs, and slides. + + + + +class TabSlide extends _tabtie__WEBPACK_IMPORTED_MODULE_1__.TabTie { + /** + * @param notes is a struct of the form: + * { + * first_note: Note, + * last_note: Note, + * first_indices: [n1, n2, n3], + * last_indices: [n1, n2, n3] + * } + * @param notes.first_note the starting note of the slide + * @param notes.last_note the ending note of the slide + * @param notes.first_indices specifies which string + fret positions of the TabNote are used in this slide. zero indexed. + * @param notes.last_indices currently unused. we assume it's the same as first_indices. + * + * @param direction TabSlide.SLIDE_UP or TabSlide.SLIDE_DOWN + */ + constructor(notes, direction) { + super(notes, 'sl.'); + // Determine the direction automatically if it is not provided. + if (!direction) { + let first_fret = notes.first_note.getPositions()[0].fret; + if (typeof first_fret === 'string') { + first_fret = parseInt(first_fret, 10); + } + let last_fret = notes.last_note.getPositions()[0].fret; + if (typeof last_fret === 'string') { + last_fret = parseInt(last_fret, 10); + } + // If either of the frets are 'X', parseInt() above will return NaN. + // Choose TabSlide.SLIDE_UP by default. + if (isNaN(first_fret) || isNaN(last_fret)) { + direction = TabSlide.SLIDE_UP; + } + else { + direction = first_fret > last_fret ? TabSlide.SLIDE_DOWN : TabSlide.SLIDE_UP; + } + } + this.direction = direction; + this.render_options.cp1 = 11; + this.render_options.cp2 = 14; + this.render_options.y_shift = 0.5; + this.resetFont(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.TabSlide; + } + static get SLIDE_UP() { + return 1; + } + static get SLIDE_DOWN() { + return -1; + } + static createSlideUp(notes) { + return new TabSlide(notes, TabSlide.SLIDE_UP); + } + static createSlideDown(notes) { + return new TabSlide(notes, TabSlide.SLIDE_DOWN); + } + renderTie(params) { + if (params.first_ys.length === 0 || params.last_ys.length === 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('BadArguments', 'No Y-values to render'); + } + const ctx = this.checkContext(); + const first_x_px = params.first_x_px; + const first_ys = params.first_ys; + const last_x_px = params.last_x_px; + const direction = params.direction; + if (direction !== TabSlide.SLIDE_UP && direction !== TabSlide.SLIDE_DOWN) { + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('BadSlide', 'Invalid slide direction'); + } + // eslint-disable-next-line + const first_indices = this.notes.first_indices; + for (let i = 0; i < first_indices.length; ++i) { + const slide_y = first_ys[first_indices[i]] + this.render_options.y_shift; + if (isNaN(slide_y)) { + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('BadArguments', 'Bad indices for slide rendering.'); + } + ctx.beginPath(); + ctx.moveTo(first_x_px, slide_y + 3 * direction); + ctx.lineTo(last_x_px, slide_y - 3 * direction); + ctx.closePath(); + ctx.stroke(); + } + this.setRendered(); + } +} +TabSlide.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SERIF, + size: 10, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.BOLD, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.ITALIC, +}; + + +/***/ }), + +/***/ "./src/tabstave.ts": +/*!*************************!*\ + !*** ./src/tabstave.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TabStave": () => (/* binding */ TabStave) +/* harmony export */ }); +/* harmony import */ var _stave__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./stave */ "./src/stave.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. + + +class TabStave extends _stave__WEBPACK_IMPORTED_MODULE_0__.Stave { + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_1__.Category.TabStave; + } + constructor(x, y, width, options) { + const tab_options = Object.assign({ spacing_between_lines_px: 13, num_lines: 6, top_text_position: 1 }, options); + super(x, y, width, tab_options); + } + getYForGlyphs() { + return this.getYForLine(2.5); + } + // Deprecated + addTabGlyph() { + this.addClef('tab'); + return this; + } +} + + +/***/ }), + +/***/ "./src/tabtie.ts": +/*!***********************!*\ + !*** ./src/tabtie.ts ***! + \***********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TabTie": () => (/* binding */ TabTie) +/* harmony export */ }); +/* harmony import */ var _stavetie__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./stavetie */ "./src/stavetie.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// / [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// This class implements varies types of ties between contiguous notes. The +// ties include: regular ties, hammer ons, pull offs, and slides. + + +class TabTie extends _stavetie__WEBPACK_IMPORTED_MODULE_0__.StaveTie { + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_1__.Category.TabTie; + } + static createHammeron(notes) { + return new TabTie(notes, 'H'); + } + static createPulloff(notes) { + return new TabTie(notes, 'P'); + } + /** + * @param notes is a struct that has: + * { + * first_note: Note, + * last_note: Note, + * first_indices: [n1, n2, n3], + * last_indices: [n1, n2, n3] + * } + * + * @param text + */ + constructor(notes, text) { + super(notes, text); + this.render_options.cp1 = 9; + this.render_options.cp2 = 11; + this.render_options.y_shift = 3; + this.direction = -1; // Tab tie's are always face up. + } +} + + +/***/ }), + +/***/ "./src/textbracket.ts": +/*!****************************!*\ + !*** ./src/textbracket.ts ***! + \****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TextBracketPosition": () => (/* binding */ TextBracketPosition), +/* harmony export */ "TextBracket": () => (/* binding */ TextBracket) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _renderer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./renderer */ "./src/renderer.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Cyril Silverman +// +// This file implements `TextBrackets` which extend between two notes. +// The octave transposition markings (8va, 8vb, 15va, 15vb) can be created +// using this class. + + + + + + +// To enable logging for this class. Set `Vex.Flow.TextBracket.DEBUG` to `true`. +// eslint-disable-next-line +function L(...args) { + if (TextBracket.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_5__.log)('Vex.Flow.TextBracket', args); +} +var TextBracketPosition; +(function (TextBracketPosition) { + TextBracketPosition[TextBracketPosition["TOP"] = 1] = "TOP"; + TextBracketPosition[TextBracketPosition["BOTTOM"] = -1] = "BOTTOM"; +})(TextBracketPosition || (TextBracketPosition = {})); +class TextBracket extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + constructor({ start, stop, text = '', superscript = '', position = TextBracketPosition.TOP }) { + super(); + this.start = start; + this.stop = stop; + this.text = text; + this.superscript = superscript; + this.position = typeof position === 'string' ? TextBracket.PositionString[position] : position; + this.line = 1; + this.resetFont(); + this.render_options = { + dashed: true, + dash: [5], + color: 'black', + line_width: 1, + show_bracket: true, + bracket_height: 8, + // In the BOTTOM position, the bracket line can extend + // under the superscript. + underline_superscript: true, + }; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_4__.Category.TextBracket; + } + static get Position() { + return TextBracketPosition; + } + static get PositionString() { + return { + top: TextBracketPosition.TOP, + bottom: TextBracketPosition.BOTTOM, + }; + } + /** + * @deprecated Use `TextBracket.Position` instead. + */ + static get Positions() { + L('Positions is deprecated, use TextBracketPosition instead.'); + return TextBracketPosition; + } + /** + * @deprecated Use `TextBracket.PositionString` instead. + */ + static get PositionsString() { + L('PositionsString is deprecated, use PositionString instead.'); + return TextBracket.PositionString; + } + /** + * Apply the text backet styling to the provided context. + * @param ctx + * @returns this + */ + applyStyle(ctx) { + ctx.setFont(this.font); + const options = this.render_options; + ctx.setStrokeStyle(options.color); + ctx.setFillStyle(options.color); + ctx.setLineWidth(options.line_width); + return this; + } + // Set whether the bracket line should be `dashed`. You can also + // optionally set the `dash` pattern by passing in an array of numbers + setDashed(dashed, dash) { + this.render_options.dashed = dashed; + if (dash) + this.render_options.dash = dash; + return this; + } + // Set the rendering `context` for the octave bracket + setLine(line) { + this.line = line; + return this; + } + // Draw the octave bracket on the rendering context + draw() { + const ctx = this.checkContext(); + this.setRendered(); + let y = 0; + switch (this.position) { + case TextBracketPosition.TOP: + y = this.start.checkStave().getYForTopText(this.line); + break; + case TextBracketPosition.BOTTOM: + y = this.start.checkStave().getYForBottomText(this.line + _tables__WEBPACK_IMPORTED_MODULE_3__.Tables.TEXT_HEIGHT_OFFSET_HACK); + break; + default: + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('InvalidPosition', `The position ${this.position} is invalid.`); + } + // Get the preliminary start and stop coordintates for the bracket + const start = { x: this.start.getAbsoluteX(), y }; + const stop = { x: this.stop.getAbsoluteX(), y }; + L('Rendering TextBracket: start:', start, 'stop:', stop, 'y:', y); + const bracket_height = this.render_options.bracket_height * this.position; + ctx.save(); + this.applyStyle(ctx); + // Draw text + ctx.fillText(this.text, start.x, start.y); + // Get the width and height for the octave number + const main_measure = ctx.measureText(this.text); + const main_width = main_measure.width; + const main_height = main_measure.height; + // Calculate the y position for the super script + const super_y = start.y - main_height / 2.5; + // We called this.resetFont() in the constructor, so we know this.textFont is available. + // eslint-disable-next-line + const { family, size, weight, style } = this.textFont; + // To draw the superscript, we scale the font size by 1/1.4. + const smallerFontSize = _font__WEBPACK_IMPORTED_MODULE_1__.Font.scaleSize(size, 0.714286); + ctx.setFont(family, smallerFontSize, weight, style); + ctx.fillText(this.superscript, start.x + main_width + 1, super_y); + // Determine width and height of the superscript + const super_measure = ctx.measureText(this.superscript); + const super_width = super_measure.width; + const super_height = super_measure.height; + // Setup initial coordinates for the bracket line + let start_x = start.x; + let line_y = super_y; + const end_x = stop.x + this.stop.getGlyph().getWidth(); + // Adjust x and y coordinates based on position + if (this.position === TextBracketPosition.TOP) { + start_x += main_width + super_width + 5; + line_y -= super_height / 2.7; + } + else if (this.position === TextBracketPosition.BOTTOM) { + line_y += super_height / 2.7; + start_x += main_width + 2; + if (!this.render_options.underline_superscript) { + start_x += super_width; + } + } + if (this.render_options.dashed) { + // Main line + _renderer__WEBPACK_IMPORTED_MODULE_2__.Renderer.drawDashedLine(ctx, start_x, line_y, end_x, line_y, this.render_options.dash); + // Ending Bracket + if (this.render_options.show_bracket) { + _renderer__WEBPACK_IMPORTED_MODULE_2__.Renderer.drawDashedLine(ctx, end_x, line_y + 1 * this.position, end_x, line_y + bracket_height, this.render_options.dash); + } + } + else { + ctx.beginPath(); + ctx.moveTo(start_x, line_y); + // Main line + ctx.lineTo(end_x, line_y); + if (this.render_options.show_bracket) { + // Ending bracket + ctx.lineTo(end_x, line_y + bracket_height); + } + ctx.stroke(); + ctx.closePath(); + } + ctx.restore(); + } +} +TextBracket.DEBUG = false; +TextBracket.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_1__.Font.SERIF, + size: 15, + weight: _font__WEBPACK_IMPORTED_MODULE_1__.FontWeight.NORMAL, + style: _font__WEBPACK_IMPORTED_MODULE_1__.FontStyle.ITALIC, +}; + + +/***/ }), + +/***/ "./src/textdynamics.ts": +/*!*****************************!*\ + !*** ./src/textdynamics.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TextDynamics": () => (/* binding */ TextDynamics) +/* harmony export */ }); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + +// eslint-disable-next-line +function L(...args) { + if (TextDynamics.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_3__.log)('Vex.Flow.TextDynamics', args); +} +/** + * `TextDynamics` renders traditional + * text dynamics markings, **ie: p, f, sfz, rfz, ppp** + * + * You can render any dynamics string that contains a combination of + * the following letters: P, M, F, Z, R, S + */ +class TextDynamics extends _note__WEBPACK_IMPORTED_MODULE_1__.Note { + /** + * Create the dynamics marking. + * + * A `TextDynamics` object inherits from `Note` so that it can be formatted + * within a `Voice`. + * + * @param noteStruct an object that contains a `duration` property and a + * `sequence` of letters that represents the letters to render. + */ + constructor(noteStruct) { + super(noteStruct); + this.sequence = (noteStruct.text || '').toLowerCase(); + this.line = noteStruct.line || 0; + this.glyphs = []; + this.render_options = Object.assign(Object.assign({}, this.render_options), { glyph_font_size: 40 }); + L('New Dynamics Text: ', this.sequence); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.TextDynamics; + } + /** The glyph data for each dynamics letter. */ + static get GLYPHS() { + return { + f: { + code: 'dynamicForte', + width: 12, + }, + p: { + code: 'dynamicPiano', + width: 14, + }, + m: { + code: 'dynamicMezzo', + width: 17, + }, + s: { + code: 'dynamicSforzando', + width: 10, + }, + z: { + code: 'dynamicZ', + width: 12, + }, + r: { + code: 'dynamicRinforzando', + width: 12, + }, + }; + } + /** Set the Stave line on which the note should be placed. */ + setLine(line) { + this.line = line; + return this; + } + /** Preformat the dynamics text. */ + preFormat() { + let total_width = 0; + // length of this.glyphs must be <= + // length of this.sequence, so if we're formatted before + // create new glyphs. + this.glyphs = []; + // Iterate through each letter + this.sequence.split('').forEach((letter) => { + // Get the glyph data for the letter + const glyph_data = TextDynamics.GLYPHS[letter]; + if (!glyph_data) + throw new _util__WEBPACK_IMPORTED_MODULE_3__.RuntimeError('Invalid dynamics character: ' + letter); + const size = (0,_util__WEBPACK_IMPORTED_MODULE_3__.defined)(this.render_options.glyph_font_size); + const glyph = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph(glyph_data.code, size, { category: 'textNote' }); + // Add the glyph + this.glyphs.push(glyph); + total_width += glyph_data.width; + }); + // Store the width of the text + this.setWidth(total_width); + this.preFormatted = true; + return this; + } + /** Draw the dynamics text on the rendering context. */ + draw() { + this.setRendered(); + const x = this.getAbsoluteX(); + const y = this.checkStave().getYForLine(this.line + -3); + L('Rendering Dynamics: ', this.sequence); + let letter_x = x; + this.glyphs.forEach((glyph, index) => { + const current_letter = this.sequence[index]; + glyph.render(this.checkContext(), letter_x, y); + letter_x += TextDynamics.GLYPHS[current_letter].width; + }); + } +} +/** To enable logging for this class. Set `Vex.Flow.TextDynamics.DEBUG` to `true`. */ +TextDynamics.DEBUG = false; + + +/***/ }), + +/***/ "./src/textformatter.ts": +/*!******************************!*\ + !*** ./src/textformatter.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TextFormatter": () => (/* binding */ TextFormatter) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + +// eslint-disable-next-line +function L(...args) { + if (TextFormatter.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_1__.log)('Vex.Flow.TextFormatter', args); +} +/** + * Text widths are stored in a cache, so we don't have to recompute widths + * for the same font + string combination. + * + * The cache is first keyed by the font information. The key is of the form: + * `${family}-${size}-${weight}-${style}` + * The second level key is the specific text to be measured. + * + * The stored value is the measured width in `em` units. + * textWidth == textWidthCache[cacheKey][textToMeasure] + */ +const textWidthCache = {}; +/** + * Applications may register additional fonts via `TextFormatter.registerInfo(info)`. + * The metrics for those fonts will be made available to the application. + */ +const registry = {}; +class TextFormatter { + /** + * Use `TextFormatter.create(...)` to build an instance from information previously + * registered via `TextFormatter.registerInfo(info)`. + */ + constructor(formatterInfo) { + /** Font family. */ + this.family = ''; + /** Specified in `pt` units. */ + this.size = 14; + /** Font metrics are extracted at 1000 upem (units per em). */ + this.resolution = 1000; + /** + * For text formatting, we do not require glyph outlines, but instead rely on glyph + * bounding box metrics such as: + * ``` + * { + * x_min: 48, + * x_max: 235, + * y_min: -17, + * y_max: 734, + * ha: 751, + * leftSideBearing: 48, + * advanceWidth: 286, + * } + * ``` + */ + this.glyphs = {}; + this.serifs = false; + this.monospaced = false; + this.italic = false; + this.bold = false; + this.superscriptOffset = 0; + this.subscriptOffset = 0; + this.maxSizeGlyph = 'H'; + // This is an internal key used to index the `textWidthCache`. + this.cacheKey = ''; + this.updateParams(formatterInfo); + } + /** + * Return all registered font families. + */ + static getFontFamilies() { + const registeredFonts = []; + for (const fontFamily in registry) { + const formatterInfo = registry[fontFamily]; + registeredFonts.push(Object.assign({}, formatterInfo)); + } + return registeredFonts; + } + /** + * Call `TextFormatter.registerInfo(info)` to register font information before using this method. + * + * This method creates a formatter for the font that most closely matches the requested font. + * We compare font family, bold, and italic attributes. + * This method will return a fallback formatter if there are no matches. + */ + static create(requestedFont = {}) { + L('create: ', requestedFont); + if (!requestedFont.family) { + requestedFont.family = _font__WEBPACK_IMPORTED_MODULE_0__.Font.SANS_SERIF; + } + // TODO: One potential (small) optimization is to cache the TextFormatter object + // returned for each font info. We would probably want to clear the cache if + // the registry is ever updated. + const candidates = []; + // The incoming font family is a string of comma-separated font family names. + // (e.g., `PetalumaScript, Arial, sans-serif`). + const requestedFamilies = requestedFont.family.split(/\s*,\s*/); + for (const requestedFamily of requestedFamilies) { + for (const fontFamily in registry) { + // Support cases where the registry contains 'Roboto Slab Medium', + // but the requestedFont.family is 'Roboto Slab'. + if (fontFamily.startsWith(requestedFamily)) { + candidates.push(registry[fontFamily]); + } + } + if (candidates.length > 0) { + break; + } + } + let formatter; + if (candidates.length === 0) { + // No match, so return a fallback text formatter. + formatter = new TextFormatter(Object.values(registry)[0]); + } + else if (candidates.length === 1) { + formatter = new TextFormatter(candidates[0]); + } + else { + const bold = _font__WEBPACK_IMPORTED_MODULE_0__.Font.isBold(requestedFont.weight); + const italic = _font__WEBPACK_IMPORTED_MODULE_0__.Font.isItalic(requestedFont.style); + const perfectMatch = candidates.find((f) => f.bold === bold && f.italic === italic); + if (perfectMatch) { + formatter = new TextFormatter(perfectMatch); + } + else { + const partialMatch = candidates.find((f) => f.italic === italic || f.bold === bold); + if (partialMatch) { + formatter = new TextFormatter(partialMatch); + } + else { + formatter = new TextFormatter(candidates[0]); + } + } + } + const fontSize = requestedFont.size; + if (typeof fontSize !== 'undefined') { + const fontSizeInPt = _font__WEBPACK_IMPORTED_MODULE_0__.Font.convertSizeToPointValue(fontSize); + formatter.setFontSize(fontSizeInPt); + } + return formatter; + } + /** + * @param fontFamily used as a key to the font registry. + * @returns the same info object that was passed in via `TextFormatter.registerInfo(info)` + */ + static getInfo(fontFamily) { + return registry[fontFamily]; + } + /** + * Apps may register their own fonts and metrics, and those metrics + * will be available to the app for formatting. + * + * Metrics can be generated from a font file using fontgen_text.js in the tools/fonts directory. + * @param info + * @param overwrite + */ + static registerInfo(info, overwrite = false) { + L('registerInfo: ', info, overwrite); + const fontFamily = info.family; + const currFontInfo = registry[fontFamily]; + if (currFontInfo === undefined || overwrite) { + registry[fontFamily] = info; + } + } + updateParams(params) { + if (params.family) + this.family = params.family; + if (params.resolution) + this.resolution = params.resolution; + if (params.glyphs) + this.glyphs = params.glyphs; + if (params.serifs) + this.serifs = params.serifs; + if (params.monospaced) + this.monospaced = params.monospaced; + if (params.italic) + this.italic = params.italic; + if (params.bold) + this.bold = params.bold; + if (params.maxSizeGlyph) + this.maxSizeGlyph = params.maxSizeGlyph; + if (params.superscriptOffset) + this.superscriptOffset = params.superscriptOffset; + if (params.subscriptOffset) + this.subscriptOffset = params.subscriptOffset; + this.updateCacheKey(); + } + /** Create a hash with the current font data, so we can cache computed widths. */ + updateCacheKey() { + const family = this.family.replace(/\s+/g, '_'); + const size = this.size; + const weight = this.bold ? _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.BOLD : _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.NORMAL; + const style = this.italic ? _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.ITALIC : _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL; + // Use the same key format as SVGContext. + this.cacheKey = `${family}%${size}%${weight}%${style}`; + } + /** + * The glyphs table is indexed by the character (e.g., 'C', '@'). + * See: robotoslab_glyphs.ts & petalumascript_glyphs.ts. + */ + getGlyphMetrics(character) { + if (this.glyphs[character]) { + return this.glyphs[character]; + } + else { + return this.glyphs[this.maxSizeGlyph]; + } + } + get maxHeight() { + const metrics = this.getGlyphMetrics(this.maxSizeGlyph); + return (metrics.ha / this.resolution) * this.fontSizeInPixels; + } + /** + * Retrieve the character's advanceWidth as a fraction of an `em` unit. + * For the space character ' ' as defined in the: + * petalumascript_glyphs.ts: 250 advanceWidth in the 1000 unitsPerEm font returns 0.25. + * robotoslab_glyphs.ts: 509 advanceWidth in the 2048 unitsPerEm font returns 0.2485. + */ + getWidthForCharacterInEm(c) { + var _a; + const metrics = this.getGlyphMetrics(c); + if (!metrics) { + // An arbitrary number, close to the `em` width of the '#' and '5' characters in PetalumaScript. + return 0.65; + } + else { + const advanceWidth = (_a = metrics.advanceWidth) !== null && _a !== void 0 ? _a : 0; + return advanceWidth / this.resolution; + } + } + /** + * Retrieve the total width of `text` in `em` units. + */ + getWidthForTextInEm(text) { + const key = this.cacheKey; + // Get the cache for this specific font family, size, weight, style combination. + // The cache contains previously computed widths for different `text` strings. + let cachedWidths = textWidthCache[key]; + if (cachedWidths === undefined) { + cachedWidths = {}; + textWidthCache[key] = cachedWidths; + } + let width = cachedWidths[text]; + if (width === undefined) { + width = 0; + for (let i = 0; i < text.length; ++i) { + width += this.getWidthForCharacterInEm(text[i]); + } + cachedWidths[text] = width; + } + return width; + } + /** The width of the text (in `em`) is scaled by the font size (in `px`). */ + getWidthForTextInPx(text) { + return this.getWidthForTextInEm(text) * this.fontSizeInPixels; + } + /** + * @param size in pt. + */ + setFontSize(size) { + this.size = size; + // The width cache key depends on the current font size. + this.updateCacheKey(); + return this; + } + /** `this.size` is specified in points. Convert to pixels. */ + get fontSizeInPixels() { + return this.size * _font__WEBPACK_IMPORTED_MODULE_0__.Font.scaleToPxFrom.pt; + } + getResolution() { + return this.resolution; + } +} +/** To enable logging for this class. Set `Vex.Flow.TextFormatter.DEBUG` to `true`. */ +TextFormatter.DEBUG = false; + + +/***/ }), + +/***/ "./src/textnote.ts": +/*!*************************!*\ + !*** ./src/textnote.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TextJustification": () => (/* binding */ TextJustification), +/* harmony export */ "TextNote": () => (/* binding */ TextNote) +/* harmony export */ }); +/* harmony import */ var _font__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./font */ "./src/font.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + +var TextJustification; +(function (TextJustification) { + TextJustification[TextJustification["LEFT"] = 1] = "LEFT"; + TextJustification[TextJustification["CENTER"] = 2] = "CENTER"; + TextJustification[TextJustification["RIGHT"] = 3] = "RIGHT"; +})(TextJustification || (TextJustification = {})); +/** + * `TextNote` is a notation element that is positioned in time. Generally + * meant for objects that sit above/below the staff and inline with each other. + * `TextNote` has to be assigned to a `Stave` before rendering by means of `setStave`. + * Examples of this would be such as dynamics, lyrics, chord changes, etc. + */ +class TextNote extends _note__WEBPACK_IMPORTED_MODULE_2__.Note { + constructor(noteStruct) { + super(noteStruct); + this.text = noteStruct.text || ''; + this.superscript = noteStruct.superscript; + this.subscript = noteStruct.subscript; + this.setFont(noteStruct.font); + this.line = noteStruct.line || 0; + this.smooth = noteStruct.smooth || false; + this.ignore_ticks = noteStruct.ignore_ticks || false; + this.justification = TextJustification.LEFT; + // Determine and set initial note width. Note that the text width is + // an approximation and isn't very accurate. The only way to accurately + // measure the length of text is with `CanvasRenderingContext2D.measureText()`. + if (noteStruct.glyph) { + const struct = TextNote.GLYPHS[noteStruct.glyph]; + if (!struct) + throw new _util__WEBPACK_IMPORTED_MODULE_4__.RuntimeError('Invalid glyph type: ' + noteStruct.glyph); + this.glyph = new _glyph__WEBPACK_IMPORTED_MODULE_1__.Glyph(struct.code, 40, { category: 'textNote' }); + this.setWidth(this.glyph.getMetrics().width); + } + else { + this.glyph = undefined; + } + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.TextNote; + } + /** Glyph data. */ + static get GLYPHS() { + return { + segno: { + code: 'segno', + }, + tr: { + code: 'ornamentTrill', + }, + mordent: { + code: 'ornamentMordent', + }, + mordent_upper: { + code: 'ornamentShortTrill', + }, + mordent_lower: { + code: 'ornamentMordent', + }, + f: { + code: 'dynamicForte', + }, + p: { + code: 'dynamicPiano', + }, + m: { + code: 'dynamicMezzo', + }, + s: { + code: 'dynamicSforzando', + }, + z: { + code: 'dynamicZ', + }, + coda: { + code: 'coda', + }, + pedal_open: { + code: 'keyboardPedalPed', + }, + pedal_close: { + code: 'keyboardPedalUp', + }, + caesura_straight: { + code: 'caesura', + }, + caesura_curved: { + code: 'caesuraCurved', + }, + breath: { + code: 'breathMarkComma', + }, + tick: { + code: 'breathMarkTick', + }, + turn: { + code: 'ornamentTurn', + }, + turn_inverted: { + code: 'ornamentTurnSlash', + }, + }; + } + /** Set the horizontal justification of the TextNote. */ + setJustification(just) { + this.justification = just; + return this; + } + /** Set the Stave line on which the note should be placed. */ + setLine(line) { + this.line = line; + return this; + } + /** Return the Stave line on which the TextNote is placed. */ + getLine() { + return this.line; + } + /** Return the unformatted text of this TextNote. */ + getText() { + return this.text; + } + /** Pre-render formatting. */ + preFormat() { + if (this.preFormatted) + return; + const tickContext = this.checkTickContext(`Can't preformat without a TickContext.`); + if (this.smooth) { + this.setWidth(0); + } + else { + if (this.glyph) { + // Width already set. + } + else { + const ctx = this.checkContext(); + ctx.setFont(this.textFont); + this.setWidth(ctx.measureText(this.text).width); + } + } + if (this.justification === TextJustification.CENTER) { + this.leftDisplacedHeadPx = this.width / 2; + } + else if (this.justification === TextJustification.RIGHT) { + this.leftDisplacedHeadPx = this.width; + } + // We reposition to the center of the note head + this.rightDisplacedHeadPx = tickContext.getMetrics().glyphPx / 2; + this.preFormatted = true; + } + /** + * Renders the TextNote. + * `TextNote` has to be assigned to a `Stave` before rendering by means of `setStave`. + */ + draw() { + const ctx = this.checkContext(); + const stave = this.checkStave(); + const tickContext = this.checkTickContext(`Can't draw without a TickContext.`); + this.setRendered(); + // Reposition to center of note head + let x = this.getAbsoluteX() + tickContext.getMetrics().glyphPx / 2; + // Align based on tick-context width. + const width = this.getWidth(); + if (this.justification === TextJustification.CENTER) { + x -= width / 2; + } + else if (this.justification === TextJustification.RIGHT) { + x -= width; + } + let y; + if (this.glyph) { + y = stave.getYForLine(this.line + -3); + this.glyph.render(ctx, x, y); + } + else { + y = stave.getYForLine(this.line + -3); + this.applyStyle(ctx); + ctx.setFont(this.textFont); + ctx.fillText(this.text, x, y); + const height = ctx.measureText(this.text).height; + // We called this.setFont(...) in the constructor, so we know this.textFont is available. + // eslint-disable-next-line + const { family, size, weight, style } = this.textFont; + // Scale the font size by 1/1.3. + const smallerFontSize = _font__WEBPACK_IMPORTED_MODULE_0__.Font.scaleSize(size, 0.769231); + if (this.superscript) { + ctx.setFont(family, smallerFontSize, weight, style); + ctx.fillText(this.superscript, x + this.width + 2, y - height / 2.2); + } + if (this.subscript) { + ctx.setFont(family, smallerFontSize, weight, style); + ctx.fillText(this.subscript, x + this.width + 2, y + height / 2.2 - 1); + } + this.restoreStyle(ctx); + } + } +} +TextNote.TEXT_FONT = { + family: _font__WEBPACK_IMPORTED_MODULE_0__.Font.SANS_SERIF, + size: 12, + weight: _font__WEBPACK_IMPORTED_MODULE_0__.FontWeight.NORMAL, + style: _font__WEBPACK_IMPORTED_MODULE_0__.FontStyle.NORMAL, +}; +TextNote.Justification = TextJustification; + + +/***/ }), + +/***/ "./src/tickable.ts": +/*!*************************!*\ + !*** ./src/tickable.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Tickable": () => (/* binding */ Tickable) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fraction */ "./src/fraction.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + +/** + * Tickable represents a element that sit on a score and + * has a duration, i.e., Tickables occupy space in the musical rendering dimension. + */ +class Tickable extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + constructor() { + super(); + this._preFormatted = false; + this._postFormatted = false; + // These properties represent the duration of + // this tickable element. + this.ticks = new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(0, 1); // Fractional value of ticks + this.intrinsicTicks = 0; // Floating point value of ticks + this.tickMultiplier = new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(1, 1); + // Formatter metrics + this.width = 0; + this.x_shift = 0; // Shift from tick context + this.modifiers = []; + this.tupletStack = []; + this.align_center = false; + this.center_x_shift = 0; // Shift from tick context if center aligned + // This flag tells the formatter to ignore this tickable during + // formatting and justification. It is set by tickables such as BarNote. + this.ignore_ticks = false; + // This is a space for an external formatting class or function to maintain + // metrics. + this.formatterMetrics = { + // The freedom of a tickable is the distance it can move without colliding + // with neighboring elements. A formatter can set these values during its + // formatting pass, which a different formatter can then use to fine tune. + freedom: { left: 0, right: 0 }, + // The simplified rational duration of this tick as a string. It can be + // used as an index to a map or hashtable. + duration: '', + // The number of formatting iterations undergone. + iterations: 0, + // The space in pixels allocated by this formatter, along with the mean space + // for tickables of this duration, and the deviation from the mean. + space: { + used: 0, + mean: 0, + deviation: 0, + }, + }; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.Tickable; + } + /** Reset the Tickable, this function will be overloaded. */ + reset() { + return this; + } + /** Return the ticks. */ + getTicks() { + return this.ticks; + } + /** Check if it ignores the ticks. */ + shouldIgnoreTicks() { + return this.ignore_ticks; + } + /** Ignore the ticks. */ + setIgnoreTicks(flag) { + this.ignore_ticks = flag; + return this; + } + /** Set width of note. Used by the formatter for positioning. */ + setWidth(width) { + this.width = width; + } + /** Get width of note. Used by the formatter for positioning. */ + getWidth() { + if (!this._preFormatted) { + throw new _util__WEBPACK_IMPORTED_MODULE_4__.RuntimeError('UnformattedNote', "Can't call GetWidth on an unformatted note."); + } + return this.width + (this.modifierContext ? this.modifierContext.getWidth() : 0); + } + /** Displace note by `x` pixels. Used by the formatter. */ + setXShift(x) { + this.x_shift = x; + return this; + } + /** Get the `x` displaced pixels of the note. */ + getXShift() { + return this.x_shift; + } + /** Get `x` position of this tick context. */ + getX() { + const tickContext = this.checkTickContext(`Can't getX() without a TickContext.`); + return tickContext.getX() + this.x_shift; + } + /** Return the formatterMetrics. */ + getFormatterMetrics() { + return this.formatterMetrics; + } + /** Return the center `x` shift. */ + getCenterXShift() { + if (this.isCenterAligned()) { + return this.center_x_shift; + } + return 0; + } + /** Set the center `x` shift. */ + setCenterXShift(centerXShift) { + this.center_x_shift = centerXShift; + return this; + } + // Check if tickable is center aligned. */ + isCenterAligned() { + return this.align_center; + } + // Set/unset center alignment. */ + setCenterAlignment(align_center) { + this.align_center = align_center; + return this; + } + /** + * Return the associated voice. Every tickable must be associated with a voice. + * This allows formatters and preFormatter to associate them with the right modifierContexts. + */ + getVoice() { + return (0,_util__WEBPACK_IMPORTED_MODULE_4__.defined)(this.voice, 'NoVoice', 'Tickable has no voice.'); + } + /** Set the associated voice. */ + setVoice(voice) { + this.voice = voice; + } + /** Get the tuplet. */ + getTuplet() { + return this.tuplet; + } + /** Return the intrinsic ticks. */ + getTupletStack() { + return this.tupletStack; + } + /** + * Reset the specific Tuplet if this is not provided, all tuplets are reset. + * Remove any prior tuplets from the tick calculation and + * reset the intrinsic tick value. + */ + resetTuplet(tuplet) { + let noteCount; + let notesOccupied; + if (tuplet) { + const i = this.tupletStack.indexOf(tuplet); + if (i !== -1) { + this.tupletStack.splice(i, 1); + noteCount = tuplet.getNoteCount(); + notesOccupied = tuplet.getNotesOccupied(); + // Revert old multiplier by inverting numerator & denom.: + this.applyTickMultiplier(noteCount, notesOccupied); + } + return this; + } + while (this.tupletStack.length) { + tuplet = this.tupletStack.pop(); + noteCount = tuplet.getNoteCount(); + notesOccupied = tuplet.getNotesOccupied(); + // Revert old multiplier by inverting numerator & denom.: + this.applyTickMultiplier(noteCount, notesOccupied); + } + return this; + } + /** Attach to new tuplet. */ + setTuplet(tuplet) { + if (tuplet) { + this.tupletStack.push(tuplet); + const noteCount = tuplet.getNoteCount(); + const notesOccupied = tuplet.getNotesOccupied(); + this.applyTickMultiplier(notesOccupied, noteCount); + } + this.tuplet = tuplet; + return this; + } + /** + * Add self to the provided ModifierContext `mc`. + * If this tickable has modifiers, set modifierContext. + * @returns this + */ + addToModifierContext(mc) { + this.modifierContext = mc; + for (let i = 0; i < this.modifiers.length; ++i) { + this.modifierContext.addMember(this.modifiers[i]); + } + this.modifierContext.addMember(this); + this._preFormatted = false; + return this; + } + /** + * Optional, if tickable has modifiers, associate a Modifier. + * @param mod the modifier + */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + addModifier(modifier, index = 0) { + this.modifiers.push(modifier); + this._preFormatted = false; + return this; + } + /** Get the list of associated modifiers. */ + getModifiers() { + return this.modifiers; + } + /** Set the Tick Context. */ + setTickContext(tc) { + this.tickContext = tc; + this._preFormatted = false; + } + checkTickContext(message = 'Tickable has no tick context.') { + return (0,_util__WEBPACK_IMPORTED_MODULE_4__.defined)(this.tickContext, 'NoTickContext', message); + } + /** Preformat the Tickable. */ + preFormat() { + if (this._preFormatted) + return; + this.width = 0; + if (this.modifierContext) { + this.modifierContext.preFormat(); + this.width += this.modifierContext.getWidth(); + } + } + /** Set preformatted status. */ + set preFormatted(value) { + this._preFormatted = value; + } + get preFormatted() { + return this._preFormatted; + } + /** Postformat the Tickable. */ + postFormat() { + if (this._postFormatted) + return this; + this._postFormatted = true; + return this; + } + /** Set postformatted status. */ + set postFormatted(value) { + this._postFormatted = value; + } + get postFormatted() { + return this._postFormatted; + } + /** Return the intrinsic ticks. */ + getIntrinsicTicks() { + return this.intrinsicTicks; + } + /** Set the intrinsic ticks. */ + setIntrinsicTicks(intrinsicTicks) { + this.intrinsicTicks = intrinsicTicks; + this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks); + } + /** Get the tick multiplier. */ + getTickMultiplier() { + return this.tickMultiplier; + } + /** Apply a tick multiplier. */ + applyTickMultiplier(numerator, denominator) { + this.tickMultiplier.multiply(numerator, denominator); + this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks); + } + /** Set the duration. */ + setDuration(duration) { + const ticks = duration.numerator * (_tables__WEBPACK_IMPORTED_MODULE_2__.Tables.RESOLUTION / duration.denominator); + this.ticks = this.tickMultiplier.clone().multiply(ticks); + this.intrinsicTicks = this.ticks.value(); + } + getAbsoluteX() { + const tickContext = this.checkTickContext(`Can't getAbsoluteX() without a TickContext.`); + return tickContext.getX(); + } + /** Attach this note to a modifier context. */ + setModifierContext(mc) { + this.modifierContext = mc; + return this; + } + /** Get `ModifierContext`. */ + getModifierContext() { + return this.modifierContext; + } + /** Check and get `ModifierContext`. */ + checkModifierContext() { + return (0,_util__WEBPACK_IMPORTED_MODULE_4__.defined)(this.modifierContext, 'NoModifierContext', 'No modifier context attached to this tickable.'); + } +} + + +/***/ }), + +/***/ "./src/tickcontext.ts": +/*!****************************!*\ + !*** ./src/tickcontext.ts ***! + \****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TickContext": () => (/* binding */ TickContext) +/* harmony export */ }); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./fraction */ "./src/fraction.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// A formatter for abstract tickable objects, such as notes, chords, +// tabs, etc. + + +/** + * TickContext formats abstract tickable objects, such as notes, chords, tabs, etc. + */ +class TickContext { + constructor(options) { + this.preFormatted = false; + this.postFormatted = false; + this.tickID = options && options.tickID ? options.tickID : 0; + this.currentTick = new _fraction__WEBPACK_IMPORTED_MODULE_0__.Fraction(0, 1); + this.maxTicks = new _fraction__WEBPACK_IMPORTED_MODULE_0__.Fraction(0, 1); + this.maxTickable = undefined; // Biggest tickable + this.minTicks = undefined; // this can remian null if all tickables have ignore_ticks + this.minTickable = undefined; + this.padding = 1; // padding on each side (width += padding * 2) + this.x = 0; + this.xBase = 0; // base x position without xOffset + this.xOffset = 0; // xBase and xOffset are an alternative way to describe x (x = xB + xO) + this.tickables = []; // Notes, tabs, chords, lyrics. + this.tickablesByVoice = {}; // Tickables indexed by voice number + // Formatting metrics + this.notePx = 0; // width of widest note in this context + this.glyphPx = 0; // width of glyph (note head) + this.leftDisplacedHeadPx = 0; // Extra left pixels for displaced notes + this.rightDisplacedHeadPx = 0; // Extra right pixels for displaced notes + this.modLeftPx = 0; // Left modifier pixels + this.modRightPx = 0; // Right modifier pixels + this.totalLeftPx = 0; // Total left pixels + this.totalRightPx = 0; // Total right pixels + this.tContexts = []; // Parent array of tick contexts + this.width = 0; + this.formatterMetrics = { + // The freedom of a tickcontext is the distance it can move without colliding + // with neighboring elements. A formatter can set these values during its + // formatting pass, which a different formatter can then use to fine tune. + freedom: { left: 0, right: 0 }, + }; + } + static getNextContext(tContext) { + const contexts = tContext.tContexts; + const index = contexts.indexOf(tContext); + if (index + 1 < contexts.length) + return contexts[index + 1]; + } + getTickID() { + return this.tickID; + } + getX() { + return this.x; + } + setX(x) { + this.x = x; + this.xBase = x; + this.xOffset = 0; + return this; + } + getXBase() { + return this.xBase; + } // use of xBase and xOffset is optional, avoids offset creep + setXBase(xBase) { + this.xBase = xBase; + this.x = xBase + this.xOffset; + } + getXOffset() { + return this.xOffset; + } + setXOffset(xOffset) { + this.xOffset = xOffset; + this.x = this.xBase + xOffset; + } + getWidth() { + return this.width + this.padding * 2; + } + setPadding(padding) { + this.padding = padding; + return this; + } + getMaxTicks() { + return this.maxTicks; + } + getMinTicks() { + return this.minTicks; + } + getMaxTickable() { + return this.maxTickable; + } + getMinTickable() { + return this.minTickable; + } + getTickables() { + return this.tickables; + } + /** + * Introduced on 2020-04-17 as getTickablesForVoice(voiceIndex). + * https://github.com/0xfe/vexflow/blame/dc97b0cc5bb93171c0038638c34362dc958222ca/src/tickcontext.js#L63 + * Renamed on 2021-08-05 to getTickableForVoice(voiceIndex). Method renamed to singular, since it returns one Tickable. + */ + getTickableForVoice(voiceIndex) { + return this.tickablesByVoice[voiceIndex]; + } + getTickablesByVoice() { + return this.tickablesByVoice; + } + getCenterAlignedTickables() { + return this.tickables.filter((tickable) => tickable.isCenterAligned()); + } + /** Gets widths context, note and left/right modifiers for formatting. */ + getMetrics() { + const { width, glyphPx, notePx, leftDisplacedHeadPx, rightDisplacedHeadPx, modLeftPx, modRightPx, totalLeftPx, totalRightPx, } = this; + return { + width, + glyphPx, + notePx, + leftDisplacedHeadPx, + rightDisplacedHeadPx, + modLeftPx, + modRightPx, + totalLeftPx, + totalRightPx, + }; + } + getCurrentTick() { + return this.currentTick; + } + setCurrentTick(tick) { + this.currentTick = tick; + this.preFormatted = false; + } + addTickable(tickable, voiceIndex) { + if (!tickable) { + throw new _util__WEBPACK_IMPORTED_MODULE_1__.RuntimeError('BadArgument', 'Invalid tickable added.'); + } + if (!tickable.shouldIgnoreTicks()) { + const ticks = tickable.getTicks(); + if (ticks.greaterThan(this.maxTicks)) { + this.maxTicks = ticks.clone(); + this.maxTickable = tickable; + } + if (this.minTicks == null) { + this.minTicks = ticks.clone(); + this.minTickable = tickable; + } + else if (ticks.lessThan(this.minTicks)) { + this.minTicks = ticks.clone(); + this.minTickable = tickable; + } + } + tickable.setTickContext(this); + this.tickables.push(tickable); + this.tickablesByVoice[voiceIndex || 0] = tickable; + this.preFormatted = false; + return this; + } + preFormat() { + if (this.preFormatted) + return this; + for (let i = 0; i < this.tickables.length; ++i) { + const tickable = this.tickables[i]; + tickable.preFormat(); + const metrics = tickable.getMetrics(); + // Maintain max displaced head pixels from all tickables in the context + this.leftDisplacedHeadPx = Math.max(this.leftDisplacedHeadPx, metrics.leftDisplacedHeadPx); + this.rightDisplacedHeadPx = Math.max(this.rightDisplacedHeadPx, metrics.rightDisplacedHeadPx); + // Maintain the widest note for all tickables in the context + this.notePx = Math.max(this.notePx, metrics.notePx); + // Maintain the widest note head + this.glyphPx = Math.max(this.glyphPx, metrics.glyphWidth || 0); + // Total modifier shift + this.modLeftPx = Math.max(this.modLeftPx, metrics.modLeftPx); + this.modRightPx = Math.max(this.modRightPx, metrics.modRightPx); + // Total shift + this.totalLeftPx = Math.max(this.totalLeftPx, metrics.modLeftPx + metrics.leftDisplacedHeadPx); + this.totalRightPx = Math.max(this.totalRightPx, metrics.modRightPx + metrics.rightDisplacedHeadPx); + // Recalculate the tick context total width + this.width = this.notePx + this.totalLeftPx + this.totalRightPx; + } + return this; + } + postFormat() { + if (this.postFormatted) + return this; + this.postFormatted = true; + return this; + } + getFormatterMetrics() { + return this.formatterMetrics; + } +} + + +/***/ }), + +/***/ "./src/timesigglyph.ts": +/*!*****************************!*\ + !*** ./src/timesigglyph.ts ***! + \*****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TimeSignatureGlyph": () => (/* binding */ TimeSignatureGlyph) +/* harmony export */ }); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// Renders time signatures glyphs for staffs +// This class is used by TimeSignature to render the associated glyphs + + +class TimeSignatureGlyph extends _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph { + constructor(timeSignature, topDigits, botDigits, code, point, options) { + var _a; + super(code, point, options); + this.timeSignature = timeSignature; + this.topGlyphs = []; + this.botGlyphs = []; + let topWidth = 0; + for (let i = 0; i < topDigits.length; ++i) { + let timeSigType = topDigits[i]; + switch (topDigits[i]) { + case '-': + timeSigType = 'Minus'; + break; + case '+': + timeSigType = botDigits.length > 0 ? 'PlusSmall' : 'Plus'; + break; + case '(': + timeSigType = botDigits.length > 0 ? 'ParensLeftSmall' : 'ParensLeft'; + break; + case ')': + timeSigType = botDigits.length > 0 ? 'ParensRightSmall' : 'ParensRight'; + break; + } + const topGlyph = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph('timeSig' + timeSigType, this.timeSignature.point); + this.topGlyphs.push(topGlyph); + topWidth += (_a = topGlyph.getMetrics().width) !== null && _a !== void 0 ? _a : 0; + } + let botWidth = 0; + for (let i = 0; i < botDigits.length; ++i) { + let timeSigType = botDigits[i]; + switch (botDigits[i]) { + case '+': + timeSigType = 'PlusSmall'; + break; + case '(': + timeSigType = 'ParensLeftSmall'; + break; + case ')': + timeSigType = 'ParensRightSmall'; + break; + } + const botGlyph = new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph('timeSig' + timeSigType, this.timeSignature.point); + this.botGlyphs.push(botGlyph); + botWidth += (0,_util__WEBPACK_IMPORTED_MODULE_1__.defined)(botGlyph.getMetrics().width); + } + this.width = Math.max(topWidth, botWidth); + this.xMin = this.getMetrics().x_min; + this.topStartX = (this.width - topWidth) / 2.0; + this.botStartX = (this.width - botWidth) / 2.0; + this.reset(); + } + getMetrics() { + return { + x_min: this.xMin, + x_max: this.xMin + this.width, + width: this.width, + }; + } + renderToStave(x) { + const stave = this.checkStave(); + const ctx = this.checkContext(); + let start_x = x + this.topStartX; + let y = 0; + if (this.botGlyphs.length > 0) + y = stave.getYForLine(this.timeSignature.topLine); + else + y = (stave.getYForLine(this.timeSignature.topLine) + stave.getYForLine(this.timeSignature.bottomLine)) / 2; + for (let i = 0; i < this.topGlyphs.length; ++i) { + const glyph = this.topGlyphs[i]; + _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph.renderOutline(ctx, glyph.getMetrics().outline, this.scale, start_x + this.x_shift, y); + start_x += (0,_util__WEBPACK_IMPORTED_MODULE_1__.defined)(glyph.getMetrics().width); + } + start_x = x + this.botStartX; + y = stave.getYForLine(this.timeSignature.bottomLine); + for (let i = 0; i < this.botGlyphs.length; ++i) { + const glyph = this.botGlyphs[i]; + this.timeSignature.placeGlyphOnLine(glyph, stave, 0); + _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph.renderOutline(ctx, glyph.getMetrics().outline, this.scale, start_x + glyph.getMetrics().x_shift, y); + start_x += (0,_util__WEBPACK_IMPORTED_MODULE_1__.defined)(glyph.getMetrics().width); + } + } +} + + +/***/ }), + +/***/ "./src/timesignature.ts": +/*!******************************!*\ + !*** ./src/timesignature.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TimeSignature": () => (/* binding */ TimeSignature) +/* harmony export */ }); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _timesigglyph__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./timesigglyph */ "./src/timesigglyph.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// Implements time signatures glyphs for staffs +// See tables.js for the internal time signatures +// representation + + + + + + +const assertIsValidTimeSig = (timeSpec) => { + const numbers = timeSpec.split('/'); + if (numbers.length !== 2 && numbers[0] !== '+' && numbers[0] !== '-') { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('BadTimeSignature', `Invalid time spec: ${timeSpec}. Must be in the form "/"`); + } + numbers.forEach((number) => { + // Characters consisting in number 0..9, '+', '-', '(' or ')' + if (/^[0-9+\-()]+$/.test(number) == false) { + throw new _util__WEBPACK_IMPORTED_MODULE_5__.RuntimeError('BadTimeSignature', `Invalid time spec: ${timeSpec}. Must contain valid signatures.`); + } + }); +}; +class TimeSignature extends _stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifier { + constructor(timeSpec = '4/4', customPadding = 15, validate_args = true) { + super(); + this.validate_args = validate_args; + const padding = customPadding; + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.currentMusicFont(); + this.point = musicFont.lookupMetric('digits.point'); + const fontLineShift = musicFont.lookupMetric('digits.shiftLine', 0); + this.topLine = 2 + fontLineShift; + this.bottomLine = 4 + fontLineShift; + this.setPosition(_stavemodifier__WEBPACK_IMPORTED_MODULE_1__.StaveModifierPosition.BEGIN); + this.info = this.parseTimeSpec(timeSpec); + this.setWidth((0,_util__WEBPACK_IMPORTED_MODULE_5__.defined)(this.info.glyph.getMetrics().width)); + this.setPadding(padding); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_4__.Category.TimeSignature; + } + static get glyphs() { + return { + C: { + code: 'timeSigCommon', + point: 40, + line: 2, + }, + 'C|': { + code: 'timeSigCutCommon', + point: 40, + line: 2, + }, + }; + } + parseTimeSpec(timeSpec) { + var _a, _b; + if (timeSpec === 'C' || timeSpec === 'C|') { + const { line, code, point } = TimeSignature.glyphs[timeSpec]; + return { + line, + num: false, + glyph: new _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph(code, point), + }; + } + if (this.validate_args) { + assertIsValidTimeSig(timeSpec); + } + const parts = timeSpec.split('/'); + return { + num: true, + glyph: this.makeTimeSignatureGlyph((_a = parts[0]) !== null && _a !== void 0 ? _a : '', (_b = parts[1]) !== null && _b !== void 0 ? _b : ''), + }; + } + makeTimeSignatureGlyph(topDigits, botDigits) { + return new _timesigglyph__WEBPACK_IMPORTED_MODULE_3__.TimeSignatureGlyph(this, topDigits, botDigits, 'timeSig0', this.point); + } + getInfo() { + return this.info; + } + setTimeSig(timeSpec) { + this.info = this.parseTimeSpec(timeSpec); + return this; + } + draw() { + const stave = this.checkStave(); + const ctx = stave.checkContext(); + this.setRendered(); + ctx.openGroup('timesignature', this.getAttribute('id')); + this.info.glyph.setStave(stave); + this.info.glyph.setContext(ctx); + this.placeGlyphOnLine(this.info.glyph, stave, this.info.line); + this.info.glyph.renderToStave(this.x); + ctx.closeGroup(); + } +} + + +/***/ }), + +/***/ "./src/timesignote.ts": +/*!****************************!*\ + !*** ./src/timesignote.ts ***! + \****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TimeSigNote": () => (/* binding */ TimeSigNote) +/* harmony export */ }); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./note */ "./src/note.ts"); +/* harmony import */ var _timesignature__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./timesignature */ "./src/timesignature.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Taehoon Moon 2014 + + + +class TimeSigNote extends _note__WEBPACK_IMPORTED_MODULE_0__.Note { + constructor(timeSpec, customPadding) { + super({ duration: 'b' }); + const timeSignature = new _timesignature__WEBPACK_IMPORTED_MODULE_1__.TimeSignature(timeSpec, customPadding); + this.timeSigInfo = timeSignature.getInfo(); + this.setWidth(this.timeSigInfo.glyph.getMetrics().width); + // Note properties + this.ignore_ticks = true; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_2__.Category.TimeSigNote; + } + /* Overridden to ignore */ + // eslint-disable-next-line + addToModifierContext(mc) { + // DO NOTHING. + return this; + } + preFormat() { + this.preFormatted = true; + return this; + } + draw() { + const stave = this.checkStave(); + const ctx = this.checkContext(); + this.setRendered(); + if (!this.timeSigInfo.glyph.getContext()) { + this.timeSigInfo.glyph.setContext(ctx); + } + this.timeSigInfo.glyph.setStave(stave); + this.timeSigInfo.glyph.setYShift(stave.getYForLine(2) - stave.getYForGlyphs()); + this.timeSigInfo.glyph.renderToStave(this.getAbsoluteX()); + } +} + + +/***/ }), + +/***/ "./src/tremolo.ts": +/*!************************!*\ + !*** ./src/tremolo.ts ***! + \************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Tremolo": () => (/* binding */ Tremolo) +/* harmony export */ }); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _gracenote__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./gracenote */ "./src/gracenote.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Mike Corrigan +// MIT License + + + + + + +/** Tremolo implements tremolo notation. */ +class Tremolo extends _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier { + /** + * @param num number of bars + */ + constructor(num) { + super(); + this.num = num; + this.position = _modifier__WEBPACK_IMPORTED_MODULE_2__.Modifier.Position.CENTER; + this.code = 'tremolo1'; + // big strokes scales initialised to 1 (no scale) + this.y_spacing_scale = 1; + this.extra_stroke_scale = 1; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_5__.Category.Tremolo; + } + /** Draw the tremolo on the rendering context. */ + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const stemDirection = note.getStemDirection(); + const start = note.getModifierStartXY(this.position, this.index); + let x = start.x; + const gn = (0,_typeguard__WEBPACK_IMPORTED_MODULE_5__.isGraceNote)(note); + const scale = gn ? _gracenote__WEBPACK_IMPORTED_MODULE_1__.GraceNote.SCALE : 1; + const category = `tremolo.${gn ? 'grace' : 'default'}`; + const musicFont = _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.currentMusicFont(); + let y_spacing = musicFont.lookupMetric(`${category}.spacing`) * stemDirection; + // add y_spacing_scale for big strokes (#1258) + y_spacing *= this.y_spacing_scale; + const height = this.num * y_spacing; + let y = note.getStemExtents().baseY - height; + if (stemDirection < 0) { + y += musicFont.lookupMetric(`${category}.offsetYStemDown`) * scale; + } + else { + y += musicFont.lookupMetric(`${category}.offsetYStemUp`) * scale; + } + const fontScale = musicFont.lookupMetric(`${category}.point`); + x += musicFont.lookupMetric(`${category}.offsetXStem${stemDirection === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP ? 'Up' : 'Down'}`); + for (let i = 0; i < this.num; ++i) { + _glyph__WEBPACK_IMPORTED_MODULE_0__.Glyph.renderGlyph(ctx, x, y, fontScale, this.code, { category, scale: this.extra_stroke_scale }); + y += y_spacing; + } + } +} + + +/***/ }), + +/***/ "./src/tuning.ts": +/*!***********************!*\ + !*** ./src/tuning.ts ***! + \***********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Tuning": () => (/* binding */ Tuning) +/* harmony export */ }); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + +/** `Tuning` implements varies types of tunings for tablature. */ +class Tuning { + /** + * Constructor. + * @param tuningString tuning name (eg. 'dagdad') or comma separated note strings + */ + constructor(tuningString = 'E/5,B/4,G/4,D/4,A/3,E/3,B/2,E/2') { + this.tuningValues = []; + // Default to standard tuning. + this.setTuning(tuningString); + } + static get names() { + return { + standard: 'E/5,B/4,G/4,D/4,A/3,E/3', + dagdad: 'D/5,A/4,G/4,D/4,A/3,D/3', + dropd: 'E/5,B/4,G/4,D/4,A/3,D/3', + eb: 'Eb/5,Bb/4,Gb/4,Db/4,Ab/3,Db/3', + standardBanjo: 'D/5,B/4,G/4,D/4,G/5', + }; + } + /** Return the note number associated to the note string. */ + noteToInteger(noteString) { + return _tables__WEBPACK_IMPORTED_MODULE_0__.Tables.keyProperties(noteString).int_value; + } + /** + * Set tuning identified by tuning name (eg. 'dagdad') + * @param tuningString tuning name (eg. 'dagdad') or comma separated note strings + */ + setTuning(tuningString) { + if (Tuning.names[tuningString]) { + tuningString = Tuning.names[tuningString]; + } + this.tuningValues = []; + const keys = tuningString.split(/\s*,\s*/); + if (keys.length === 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_1__.RuntimeError('BadArguments', `Invalid tuning string: ${tuningString}`); + } + for (let i = 0; i < keys.length; ++i) { + this.tuningValues[i] = this.noteToInteger(keys[i]); + } + } + /** Return the note number associated with a tablature string. */ + getValueForString(stringNum) { + const s = Number(stringNum); + if (s < 1 || s > this.tuningValues.length) { + throw new _util__WEBPACK_IMPORTED_MODULE_1__.RuntimeError('BadArguments', `String number must be between 1 and ${this.tuningValues.length}:${stringNum}`); + } + return this.tuningValues[s - 1]; + } + /** Return the note number associated with a tablature string and fret. */ + getValueForFret(fretNum, stringNum) { + const stringValue = this.getValueForString(stringNum); + const f = Number(fretNum); + if (f < 0) { + throw new _util__WEBPACK_IMPORTED_MODULE_1__.RuntimeError('BadArguments', `Fret number must be 0 or higher: ${fretNum}`); + } + return stringValue + f; + } + /** Return the note string associated with tablature string and fret. */ + getNoteForFret(fretNum, stringNum) { + const noteValue = this.getValueForFret(fretNum, stringNum); + const octave = Math.floor(noteValue / 12); + const value = noteValue % 12; + return `${_tables__WEBPACK_IMPORTED_MODULE_0__.Tables.integerToNote(value)}/${octave}`; + } +} + + +/***/ }), + +/***/ "./src/tuplet.ts": +/*!***********************!*\ + !*** ./src/tuplet.ts ***! + \***********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "TupletLocation": () => (/* binding */ TupletLocation), +/* harmony export */ "Tuplet": () => (/* binding */ Tuplet) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _formatter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formatter */ "./src/formatter.ts"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./glyph */ "./src/glyph.ts"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stem */ "./src/stem.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +/** + * ## Description + * + * Create a new tuplet from the specified notes. The notes must + * be part of the same voice. If they are of different rhythmic + * values, then options.num_notes must be set. + * + * @constructor + * @param {Array.} A set of notes: staveNotes, + * notes, etc... any class that inherits stemmableNote at some + * point in its prototype chain. + * @param options: object { + * + * num_notes: fit this many notes into... + * notes_occupied: ...the space of this many notes + * + * Together, these two properties make up the tuplet ratio + * in the form of num_notes : notes_occupied. + * num_notes defaults to the number of notes passed in, so + * it is important that if you omit this property, all of + * the notes passed should be of the same note value. + * notes_occupied defaults to 2 -- so you should almost + * certainly pass this parameter for anything other than + * a basic triplet. + * + * location: + * default 1, which is above the notes: ┌─── 3 ───┐ + * -1 is below the notes └─── 3 ───┘ + * + * bracketed: boolean, draw a bracket around the tuplet number + * when true: ┌─── 3 ───┐ when false: 3 + * defaults to true if notes are not beamed, false otherwise + * + * ratioed: boolean + * when true: ┌─── 7:8 ───┐, when false: ┌─── 7 ───┐ + * defaults to true if the difference between num_notes and + * notes_occupied is greater than 1. + * + * y_offset: int, default 0 + * manually offset a tuplet, for instance to avoid collisions + * with articulations, etc... + * } + */ + + + + + + + +var TupletLocation; +(function (TupletLocation) { + TupletLocation[TupletLocation["BOTTOM"] = -1] = "BOTTOM"; + TupletLocation[TupletLocation["TOP"] = 1] = "TOP"; +})(TupletLocation || (TupletLocation = {})); +class Tuplet extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + constructor(notes, options = {}) { + super(); + this.numerator_glyphs = []; + this.denom_glyphs = []; + if (!notes || !notes.length) { + throw new _util__WEBPACK_IMPORTED_MODULE_6__.RuntimeError('BadArguments', 'No notes provided for tuplet.'); + } + this.options = options; + this.notes = notes; + this.num_notes = this.options.num_notes != undefined ? this.options.num_notes : notes.length; + // We accept beats_occupied, but warn that it's deprecated: + // the preferred property name is now notes_occupied. + if (this.options.beats_occupied) { + this.beatsOccupiedDeprecationWarning(); + } + this.notes_occupied = this.options.notes_occupied || this.options.beats_occupied || 2; + if (this.options.bracketed != undefined) { + this.bracketed = this.options.bracketed; + } + else { + this.bracketed = notes.some((note) => !note.hasBeam()); + } + this.ratioed = + this.options.ratioed != undefined ? this.options.ratioed : Math.abs(this.notes_occupied - this.num_notes) > 1; + this.point = _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.currentMusicFont().lookupMetric('digits.tupletPoint'); + this.y_pos = 16; + this.x_pos = 100; + this.width = 200; + this.setTupletLocation(this.options.location || Tuplet.LOCATION_TOP); + _formatter__WEBPACK_IMPORTED_MODULE_1__.Formatter.AlignRestsToNotes(notes, true, true); + this.resolveGlyphs(); + this.attach(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_5__.Category.Tuplet; + } + static get LOCATION_TOP() { + return TupletLocation.TOP; + } + static get LOCATION_BOTTOM() { + return TupletLocation.BOTTOM; + } + static get NESTING_OFFSET() { + return 15; + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + static get metrics() { + return _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.currentMusicFont().getMetrics().glyphs.tuplet; + } + attach() { + for (let i = 0; i < this.notes.length; i++) { + const note = this.notes[i]; + note.setTuplet(this); + } + } + detach() { + for (let i = 0; i < this.notes.length; i++) { + const note = this.notes[i]; + note.resetTuplet(this); + } + } + /** + * Set whether or not the bracket is drawn. + */ + setBracketed(bracketed) { + this.bracketed = !!bracketed; + return this; + } + /** + * Set whether or not the ratio is shown. + */ + setRatioed(ratioed) { + this.ratioed = !!ratioed; + return this; + } + /** + * Set the tuplet indicator to be displayed either on the top or bottom of the stave. + */ + setTupletLocation(location) { + if (location !== Tuplet.LOCATION_TOP && location !== Tuplet.LOCATION_BOTTOM) { + // eslint-disable-next-line + console.warn(`Invalid tuplet location [${location}]. Using Tuplet.LOCATION_TOP.`); + location = Tuplet.LOCATION_TOP; + } + this.location = location; + return this; + } + getNotes() { + return this.notes; + } + getNoteCount() { + return this.num_notes; + } + beatsOccupiedDeprecationWarning() { + // eslint-disable-next-line + console.warn('beats_occupied has been deprecated as an option for tuplets. Please use notes_occupied instead.', 'Calls to getBeatsOccupied / setBeatsOccupied should now be routed to getNotesOccupied / setNotesOccupied.', 'The old methods will be removed in VexFlow 5.0.'); + } + getBeatsOccupied() { + this.beatsOccupiedDeprecationWarning(); + return this.getNotesOccupied(); + } + setBeatsOccupied(beats) { + this.beatsOccupiedDeprecationWarning(); + return this.setNotesOccupied(beats); + } + getNotesOccupied() { + return this.notes_occupied; + } + setNotesOccupied(notes) { + this.detach(); + this.notes_occupied = notes; + this.resolveGlyphs(); + this.attach(); + } + resolveGlyphs() { + this.numerator_glyphs = []; + let n = this.num_notes; + while (n >= 1) { + this.numerator_glyphs.unshift(new _glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph('timeSig' + (n % 10), this.point)); + n = parseInt((n / 10).toString(), 10); + } + this.denom_glyphs = []; + n = this.notes_occupied; + while (n >= 1) { + this.denom_glyphs.unshift(new _glyph__WEBPACK_IMPORTED_MODULE_2__.Glyph('timeSig' + (n % 10), this.point)); + n = parseInt((n / 10).toString(), 10); + } + } + // determine how many tuplets are nested within this tuplet + // on the same side (above/below), to calculate a y + // offset for this tuplet: + getNestedTupletCount() { + const location = this.location; + const first_note = this.notes[0]; + let maxTupletCount = countTuplets(first_note, location); + let minTupletCount = countTuplets(first_note, location); + // Count the tuplets that are on the same side (above/below) + // as this tuplet: + function countTuplets(note, location) { + return note.getTupletStack().filter((tuplet) => tuplet.location === location).length; + } + this.notes.forEach((note) => { + const tupletCount = countTuplets(note, location); + maxTupletCount = tupletCount > maxTupletCount ? tupletCount : maxTupletCount; + minTupletCount = tupletCount < minTupletCount ? tupletCount : minTupletCount; + }); + return maxTupletCount - minTupletCount; + } + // determine the y position of the tuplet: + getYPosition() { + // offset the tuplet for any nested tuplets between + // it and the notes: + const nested_tuplet_y_offset = this.getNestedTupletCount() * Tuplet.NESTING_OFFSET * -this.location; + // offset the tuplet for any manual y_offset: + const y_offset = this.options.y_offset || 0; + // now iterate through the notes and find our highest + // or lowest locations, to form a base y_pos + const first_note = this.notes[0]; + let y_pos; + if (this.location === Tuplet.LOCATION_TOP) { + y_pos = first_note.checkStave().getYForLine(0) - Tuplet.metrics.topModifierOffset; + // check modifiers above note to see if they will collide with tuplet beam + for (let i = 0; i < this.notes.length; ++i) { + const note = this.notes[i]; + let modLines = 0; + const mc = note.getModifierContext(); + if (mc) { + modLines = Math.max(modLines, mc.getState().top_text_line); + } + const modY = note.getYForTopText(modLines) - Tuplet.metrics.noteHeadOffset; + if (note.hasStem() || note.isRest()) { + const top_y = note.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP + ? note.getStemExtents().topY - Tuplet.metrics.stemOffset + : note.getStemExtents().baseY - Tuplet.metrics.noteHeadOffset; + y_pos = Math.min(top_y, y_pos); + if (modLines > 0) { + y_pos = Math.min(modY, y_pos); + } + } + } + } + else { + let lineCheck = Tuplet.metrics.bottomLine; // tuplet default on line 4 + // check modifiers below note to see if they will collide with tuplet beam + this.notes.forEach((nn) => { + const mc = nn.getModifierContext(); + if (mc) { + lineCheck = Math.max(lineCheck, mc.getState().text_line + 1); + } + }); + y_pos = first_note.checkStave().getYForLine(lineCheck) + Tuplet.metrics.noteHeadOffset; + for (let i = 0; i < this.notes.length; ++i) { + if (this.notes[i].hasStem() || this.notes[i].isRest()) { + const bottom_y = this.notes[i].getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_3__.Stem.UP + ? this.notes[i].getStemExtents().baseY + Tuplet.metrics.noteHeadOffset + : this.notes[i].getStemExtents().topY + Tuplet.metrics.stemOffset; + if (bottom_y > y_pos) { + y_pos = bottom_y; + } + } + } + } + return y_pos + nested_tuplet_y_offset + y_offset; + } + draw() { + const ctx = this.checkContext(); + this.setRendered(); + // determine x value of left bound of tuplet + const first_note = this.notes[0]; + const last_note = this.notes[this.notes.length - 1]; + if (!this.bracketed) { + this.x_pos = first_note.getStemX(); + this.width = last_note.getStemX() - this.x_pos; + } + else { + this.x_pos = first_note.getTieLeftX() - 5; + this.width = last_note.getTieRightX() - this.x_pos + 5; + } + // determine y value for tuplet + this.y_pos = this.getYPosition(); + const addGlyphWidth = (width, glyph) => width + (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(glyph.getMetrics().width); + // calculate total width of tuplet notation + let width = this.numerator_glyphs.reduce(addGlyphWidth, 0); + if (this.ratioed) { + width = this.denom_glyphs.reduce(addGlyphWidth, width); + width += this.point * 0.32; + } + const notation_center_x = this.x_pos + this.width / 2; + const notation_start_x = notation_center_x - width / 2; + // draw bracket if the tuplet is not beamed + if (this.bracketed) { + const line_width = this.width / 2 - width / 2 - 5; + // only draw the bracket if it has positive length + if (line_width > 0) { + ctx.fillRect(this.x_pos, this.y_pos, line_width, 1); + ctx.fillRect(this.x_pos + this.width / 2 + width / 2 + 5, this.y_pos, line_width, 1); + ctx.fillRect(this.x_pos, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM ? 1 : 0), 1, this.location * 10); + ctx.fillRect(this.x_pos + this.width, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM ? 1 : 0), 1, this.location * 10); + } + } + // draw numerator glyphs + const shiftY = _tables__WEBPACK_IMPORTED_MODULE_4__.Tables.currentMusicFont().lookupMetric('digits.shiftY', 0); + let x_offset = 0; + this.numerator_glyphs.forEach((glyph) => { + glyph.render(ctx, notation_start_x + x_offset, this.y_pos + this.point / 3 - 2 + shiftY); + x_offset += (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(glyph.getMetrics().width); + }); + // display colon and denominator if the ratio is to be shown + if (this.ratioed) { + const colon_x = notation_start_x + x_offset + this.point * 0.16; + const colon_radius = this.point * 0.06; + ctx.beginPath(); + ctx.arc(colon_x, this.y_pos - this.point * 0.08, colon_radius, 0, Math.PI * 2, false); + ctx.closePath(); + ctx.fill(); + ctx.beginPath(); + ctx.arc(colon_x, this.y_pos + this.point * 0.12, colon_radius, 0, Math.PI * 2, false); + ctx.closePath(); + ctx.fill(); + x_offset += this.point * 0.32; + this.denom_glyphs.forEach((glyph) => { + glyph.render(ctx, notation_start_x + x_offset, this.y_pos + this.point / 3 - 2 + shiftY); + x_offset += (0,_util__WEBPACK_IMPORTED_MODULE_6__.defined)(glyph.getMetrics().width); + }); + } + } +} + + +/***/ }), + +/***/ "./src/typeguard.ts": +/*!**************************!*\ + !*** ./src/typeguard.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "isCategory": () => (/* binding */ isCategory), +/* harmony export */ "isAccidental": () => (/* binding */ isAccidental), +/* harmony export */ "isAnnotation": () => (/* binding */ isAnnotation), +/* harmony export */ "isBarline": () => (/* binding */ isBarline), +/* harmony export */ "isDot": () => (/* binding */ isDot), +/* harmony export */ "isGraceNote": () => (/* binding */ isGraceNote), +/* harmony export */ "isGraceNoteGroup": () => (/* binding */ isGraceNoteGroup), +/* harmony export */ "isNote": () => (/* binding */ isNote), +/* harmony export */ "isRenderContext": () => (/* binding */ isRenderContext), +/* harmony export */ "isStaveNote": () => (/* binding */ isStaveNote), +/* harmony export */ "isStemmableNote": () => (/* binding */ isStemmableNote), +/* harmony export */ "isTabNote": () => (/* binding */ isTabNote), +/* harmony export */ "Category": () => (/* binding */ Category) +/* harmony export */ }); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Ron B. Yeh +// MIT License +/* eslint-disable @typescript-eslint/no-explicit-any */ +/** + * Use instead of `instanceof` as a more flexible type guard. + * @param obj check if this object's CATEGORY matches the provided category. + * @param category a string representing a category of VexFlow objects. + * @param checkAncestors defaults to `true`, so we walk up the prototype chain to look for a matching `CATEGORY`. + * If `false`, we do not check the superclass or other ancestors. + * @returns true if `obj` has a static `CATEGORY` property that matches `category`. + */ +function isCategory(obj, category, checkAncestors = true) { + // obj is undefined, a number, a primitive string, or null. + if (typeof obj !== 'object' || obj === null) { + return false; + } + // `obj.constructor` is a reference to the constructor function that created the `obj` instance. + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor + let constructorFcn = obj.constructor; + // Check if the object's static .CATEGORY matches the provided category. + if (checkAncestors) { + // Walk up the prototype chain to look for a matching obj.constructor.CATEGORY. + while (obj !== null) { + constructorFcn = obj.constructor; + if ('CATEGORY' in constructorFcn && constructorFcn.CATEGORY === category) { + return true; + } + obj = Object.getPrototypeOf(obj); + } + return false; + } + else { + // Do not walk up the prototype chain. Just check this particular object's static .CATEGORY string. + return 'CATEGORY' in constructorFcn && constructorFcn.CATEGORY === category; + } +} +const isAccidental = (obj) => isCategory(obj, Category.Accidental); +const isAnnotation = (obj) => isCategory(obj, Category.Annotation); +const isBarline = (obj) => isCategory(obj, Category.Barline); +const isDot = (obj) => isCategory(obj, Category.Dot); +const isGraceNote = (obj) => isCategory(obj, Category.GraceNote); +const isGraceNoteGroup = (obj) => isCategory(obj, Category.GraceNoteGroup); +const isNote = (obj) => isCategory(obj, Category.Note); +const isRenderContext = (obj) => isCategory(obj, Category.RenderContext); +const isStaveNote = (obj) => isCategory(obj, Category.StaveNote); +const isStemmableNote = (obj) => isCategory(obj, Category.StemmableNote); +const isTabNote = (obj) => isCategory(obj, Category.TabNote); +// 'const' enums are erased by the TypeScript compiler. The string values are inlined at all the use sites. +// See: https://www.typescriptlang.org/docs/handbook/enums.html#const-enums +var Category; +(function (Category) { + Category["Accidental"] = "Accidental"; + Category["Annotation"] = "Annotation"; + Category["Articulation"] = "Articulation"; + Category["Barline"] = "Barline"; + Category["BarNote"] = "BarNote"; + Category["Beam"] = "Beam"; + Category["Bend"] = "Bend"; + Category["ChordSymbol"] = "ChordSymbol"; + Category["Clef"] = "Clef"; + Category["ClefNote"] = "ClefNote"; + Category["Crescendo"] = "Crescendo"; + Category["Curve"] = "Curve"; + Category["Dot"] = "Dot"; + Category["Element"] = "Element"; + Category["Fraction"] = "Fraction"; + Category["FretHandFinger"] = "FretHandFinger"; + Category["GhostNote"] = "GhostNote"; + Category["Glyph"] = "Glyph"; + Category["GlyphNote"] = "GlyphNote"; + Category["GraceNote"] = "GraceNote"; + Category["GraceNoteGroup"] = "GraceNoteGroup"; + Category["GraceTabNote"] = "GraceTabNote"; + Category["KeySignature"] = "KeySignature"; + Category["KeySigNote"] = "KeySigNote"; + Category["Modifier"] = "Modifier"; + Category["MultiMeasureRest"] = "MultiMeasureRest"; + Category["Note"] = "Note"; + Category["NoteHead"] = "NoteHead"; + Category["NoteSubGroup"] = "NoteSubGroup"; + Category["Ornament"] = "Ornament"; + Category["Parenthesis"] = "Parenthesis"; + Category["PedalMarking"] = "PedalMarking"; + Category["RenderContext"] = "RenderContext"; + Category["RepeatNote"] = "RepeatNote"; + Category["Repetition"] = "Repetition"; + Category["Stave"] = "Stave"; + Category["StaveConnector"] = "StaveConnector"; + Category["StaveHairpin"] = "StaveHairpin"; + Category["StaveLine"] = "StaveLine"; + Category["StaveModifier"] = "StaveModifier"; + Category["StaveNote"] = "StaveNote"; + Category["StaveSection"] = "StaveSection"; + Category["StaveTempo"] = "StaveTempo"; + Category["StaveText"] = "StaveText"; + Category["StaveTie"] = "StaveTie"; + Category["Stem"] = "Stem"; + Category["StemmableNote"] = "StemmableNote"; + Category["StringNumber"] = "StringNumber"; + Category["Stroke"] = "Stroke"; + Category["System"] = "System"; + Category["TabNote"] = "TabNote"; + Category["TabSlide"] = "TabSlide"; + Category["TabStave"] = "TabStave"; + Category["TabTie"] = "TabTie"; + Category["TextBracket"] = "TextBracket"; + Category["TextDynamics"] = "TextDynamics"; + Category["TextNote"] = "TextNote"; + Category["Tickable"] = "Tickable"; + Category["TimeSignature"] = "TimeSignature"; + Category["TimeSigNote"] = "TimeSigNote"; + Category["Tremolo"] = "Tremolo"; + Category["Tuplet"] = "Tuplet"; + Category["Vibrato"] = "Vibrato"; + Category["VibratoBracket"] = "VibratoBracket"; + Category["Voice"] = "Voice"; + Category["Volta"] = "Volta"; +})(Category || (Category = {})); + + +/***/ }), + +/***/ "./src/util.ts": +/*!*********************!*\ + !*** ./src/util.ts ***! + \*********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "RuntimeError": () => (/* binding */ RuntimeError), +/* harmony export */ "globalObject": () => (/* binding */ globalObject), +/* harmony export */ "defined": () => (/* binding */ defined), +/* harmony export */ "log": () => (/* binding */ log), +/* harmony export */ "warn": () => (/* binding */ warn), +/* harmony export */ "midLine": () => (/* binding */ midLine), +/* harmony export */ "prefix": () => (/* binding */ prefix), +/* harmony export */ "normalizeAngle": () => (/* binding */ normalizeAngle) +/* harmony export */ }); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// Note: Keep this module free of imports to reduce the chance of circular dependencies. +/** `RuntimeError` will be thrown by VexFlow classes in case of error. */ +class RuntimeError extends Error { + constructor(code, message = '') { + super('[RuntimeError] ' + code + ': ' + message); + this.code = code; + } +} +/** VexFlow can be used outside of the browser (e.g., Node) where `window` may not be defined. */ +// eslint-disable-next-line +function globalObject() { + if (typeof globalThis !== 'undefined') { + return globalThis; + } + if (typeof self !== 'undefined') { + return self; + } + if (typeof window !== 'undefined') { + return window; + } + if (typeof __webpack_require__.g !== 'undefined') { + return __webpack_require__.g; + } + return Function('return this')(); +} +/** + * Check that `x` is of type `T` and not `undefined`. + * If `x` is `undefined`, throw a RuntimeError with the optionally provided error code and message. + */ +function defined(x, code = 'undefined', message = '') { + if (x === undefined) { + throw new RuntimeError(code, message); + } + return x; +} +/** Default log function sends all arguments to console. */ +// eslint-disable-next-line +function log(block, ...args) { + if (!args) + return; + const line = Array.prototype.slice.call(args).join(' '); + globalObject().console.log(block + ': ' + line); +} +/** Dump warning to console. */ +// eslint-disable-next-line +function warn(...args) { + const line = args.join(' '); + const err = new Error(); + globalObject().console.log('Warning: ', line, err.stack); +} +/** Round number to nearest fractional value (`.5`, `.25`, etc.) */ +function roundN(x, n) { + return x % n >= n / 2 ? parseInt(`${x / n}`, 10) * n + n : parseInt(`${x / n}`, 10) * n; +} +/** Locate the mid point between stave lines. Returns a fractional line if a space. */ +function midLine(a, b) { + let mid_line = b + (a - b) / 2; + if (mid_line % 2 > 0) { + mid_line = roundN(mid_line * 10, 5) / 10; + } + return mid_line; +} +/** + * Used by various classes (e.g., SVGContext) to provide a + * unique prefix to element names (or other keys in shared namespaces). + */ +function prefix(text) { + return `vf-${text}`; +} +/** + * Convert an arbitrary angle in radians to the equivalent one in the range [0, pi). + */ +function normalizeAngle(a) { + a = a % (2 * Math.PI); + if (a < 0) { + a += 2 * Math.PI; + } + return a; +} + + +/***/ }), + +/***/ "./src/vex.ts": +/*!********************!*\ + !*** ./src/vex.ts ***! + \********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Vex": () => (/* binding */ Vex) +/* harmony export */ }); +/* harmony import */ var _flow__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./flow */ "./src/flow.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// Utility methods used by the rest of the VexFlow codebase. + + +class Vex { + // Users of `Vex.forEach(a, fn)` should use `Array.prototype.forEach()` instead. + // static forEach(arr: T[], callbackFn: (value: T, index: number, array: T[]) => void) { + // arr.forEach(callbackFn); + // } + /** + * Take `arr` and return a new list consisting of the sorted, unique, + * contents of arr. Does not modify `arr`. + */ + // eslint-disable-next-line + static sortAndUnique(arr, cmp, eq) { + if (arr.length > 1) { + const newArr = []; + let last; + arr.sort(cmp); + for (let i = 0; i < arr.length; ++i) { + if (i === 0 || !eq(arr[i], last)) { + newArr.push(arr[i]); + } + last = arr[i]; + } + return newArr; + } + else { + return arr; + } + } + /** Check if array `arr` contains `obj`. */ + // eslint-disable-next-line + static contains(arr, obj) { + let i = arr.length; + while (i--) { + if (arr[i] === obj) { + return true; + } + } + return false; + } + // Get the 2D Canvas context from DOM element `canvas_sel`. + static getCanvasContext(canvasSelector) { + if (!canvasSelector) { + throw new _util__WEBPACK_IMPORTED_MODULE_1__.RuntimeError('BadArgument', 'Invalid canvas selector: ' + canvasSelector); + } + const canvas = document.getElementById(canvasSelector); + if (!(canvas && canvas.getContext)) { + throw new _util__WEBPACK_IMPORTED_MODULE_1__.RuntimeError('UnsupportedBrowserError', 'This browser does not support HTML5 Canvas'); + } + return canvas.getContext('2d'); + } + /** Benchmark. Run function `f` once and report time elapsed shifted by `s` milliseconds. */ + // eslint-disable-next-line + static benchmark(s, f) { + const start_time = new Date().getTime(); + f(); + const elapsed = new Date().getTime() - start_time; + (0,_util__WEBPACK_IMPORTED_MODULE_1__.log)(s, elapsed + 'ms'); + } + // Get stack trace. + static stackTrace() { + const err = new Error(); + return err.stack; + } +} +Vex.Flow = _flow__WEBPACK_IMPORTED_MODULE_0__.Flow; + + +/***/ }), + +/***/ "./src/vibrato.ts": +/*!************************!*\ + !*** ./src/vibrato.ts ***! + \************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Vibrato": () => (/* binding */ Vibrato) +/* harmony export */ }); +/* harmony import */ var _bend__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bend */ "./src/bend.ts"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + +/** `Vibrato` implements diverse vibratos. */ +class Vibrato extends _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier { + constructor() { + super(); + this.position = _modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.RIGHT; + this.render_options = { + harsh: false, + vibrato_width: 20, + wave_height: 6, + wave_width: 4, + wave_girth: 2, + }; + this.setVibratoWidth(this.render_options.vibrato_width); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.Vibrato; + } + /** Arrange vibratos inside a `ModifierContext`. */ + static format(vibratos, state, context) { + if (!vibratos || vibratos.length === 0) + return false; + // Vibratos are always on top. + let text_line = state.top_text_line; + let width = 0; + let shift = state.right_shift - 7; + // If there's a bend, drop the text line + const bends = context.getMembers(_bend__WEBPACK_IMPORTED_MODULE_0__.Bend.CATEGORY); + if (bends && bends.length > 0) { + const bendHeight = bends.map((bb) => bb.getTextHeight()).reduce((a, b) => (a > b ? a : b)) / _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.STAVE_LINE_DISTANCE; + text_line = text_line - (bendHeight + 1); + } + else { + state.top_text_line += 1; + } + // Format Vibratos + for (let i = 0; i < vibratos.length; ++i) { + const vibrato = vibratos[i]; + vibrato.setXShift(shift); + vibrato.setTextLine(text_line); + width += vibrato.getWidth(); + shift += width; + } + state.right_shift += width; + return true; + } + /** Set harsh vibrato. */ + setHarsh(harsh) { + this.render_options.harsh = harsh; + return this; + } + /** Set vibrato width in pixels. */ + setVibratoWidth(width) { + this.render_options.vibrato_width = width; + this.setWidth(width); + return this; + } + /** Draw the vibrato on the rendering context. */ + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const start = note.getModifierStartXY(_modifier__WEBPACK_IMPORTED_MODULE_1__.Modifier.Position.RIGHT, this.index); + const vx = start.x + this.x_shift; + const vy = note.getYForTopText(this.text_line) + 2; + Vibrato.renderVibrato(ctx, vx, vy, this.render_options); + } + /** + * Static rendering method that can be called from + * other classes (e.g. VibratoBracket). + */ + static renderVibrato(ctx, x, y, opts) { + const { harsh, vibrato_width, wave_width, wave_girth, wave_height } = opts; + const num_waves = vibrato_width / wave_width; + ctx.beginPath(); + let i; + if (harsh) { + ctx.moveTo(x, y + wave_girth + 1); + for (i = 0; i < num_waves / 2; ++i) { + ctx.lineTo(x + wave_width, y - wave_height / 2); + x += wave_width; + ctx.lineTo(x + wave_width, y + wave_height / 2); + x += wave_width; + } + for (i = 0; i < num_waves / 2; ++i) { + ctx.lineTo(x - wave_width, y - wave_height / 2 + wave_girth + 1); + x -= wave_width; + ctx.lineTo(x - wave_width, y + wave_height / 2 + wave_girth + 1); + x -= wave_width; + } + ctx.fill(); + } + else { + ctx.moveTo(x, y + wave_girth); + for (i = 0; i < num_waves / 2; ++i) { + ctx.quadraticCurveTo(x + wave_width / 2, y - wave_height / 2, x + wave_width, y); + x += wave_width; + ctx.quadraticCurveTo(x + wave_width / 2, y + wave_height / 2, x + wave_width, y); + x += wave_width; + } + for (i = 0; i < num_waves / 2; ++i) { + ctx.quadraticCurveTo(x - wave_width / 2, y + wave_height / 2 + wave_girth, x - wave_width, y + wave_girth); + x -= wave_width; + ctx.quadraticCurveTo(x - wave_width / 2, y - wave_height / 2 + wave_girth, x - wave_width, y + wave_girth); + x -= wave_width; + } + ctx.fill(); + } + } +} + + +/***/ }), + +/***/ "./src/vibratobracket.ts": +/*!*******************************!*\ + !*** ./src/vibratobracket.ts ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "VibratoBracket": () => (/* binding */ VibratoBracket) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +/* harmony import */ var _vibrato__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./vibrato */ "./src/vibrato.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Balazs Forian-Szabo +// MIT License + + + + +// eslint-disable-next-line +function L(...args) { + if (VibratoBracket.DEBUG) + (0,_util__WEBPACK_IMPORTED_MODULE_2__.log)('Vex.Flow.VibratoBracket', args); +} +/** `VibratoBracket` renders vibrato effect between two notes. */ +class VibratoBracket extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + /** + * Either the stop or start note must be set, or both of them. + * An undefined value for the start or stop note indicates that the vibrato + * is drawn from the beginning or until the end of the stave accordingly. + */ + constructor(bracket_data) { + super(); + if (bracket_data.start) + this.start = bracket_data.start; + if (bracket_data.stop) + this.stop = bracket_data.stop; + this.line = 1; + this.render_options = { + harsh: false, + wave_height: 6, + wave_width: 4, + wave_girth: 2, + vibrato_width: 0, + }; + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_1__.Category.VibratoBracket; + } + /** Set line position of the vibrato bracket. */ + setLine(line) { + this.line = line; + return this; + } + /** Set harsh vibrato bracket. */ + setHarsh(harsh) { + this.render_options.harsh = harsh; + return this; + } + /** Draw the vibrato bracket on the rendering context. */ + draw() { + const ctx = this.checkContext(); + this.setRendered(); + const y = (this.start && this.start.checkStave().getYForTopText(this.line)) || + (this.stop && this.stop.checkStave().getYForTopText(this.line)) || + 0; + // If start note is not set then vibrato will be drawn + // from the beginning of the stave + const start_x = (this.start && this.start.getAbsoluteX()) || (this.stop && this.stop.checkStave().getTieStartX()) || 0; + // If stop note is not set then vibrato will be drawn + // until the end of the stave + const stop_x = (this.stop && this.stop.getAbsoluteX() - this.stop.getWidth() - 5) || + (this.start && this.start.checkStave().getTieEndX() - 10) || + 0; + this.render_options.vibrato_width = stop_x - start_x; + L('Rendering VibratoBracket: start_x:', start_x, 'stop_x:', stop_x, 'y:', y); + _vibrato__WEBPACK_IMPORTED_MODULE_3__.Vibrato.renderVibrato(ctx, start_x, y, this.render_options); + } +} +/** To enable logging for this class. Set `Vex.Flow.VibratoBracket.DEBUG` to `true`. */ +VibratoBracket.DEBUG = false; + + +/***/ }), + +/***/ "./src/voice.ts": +/*!**********************!*\ + !*** ./src/voice.ts ***! + \**********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "VoiceMode": () => (/* binding */ VoiceMode), +/* harmony export */ "Voice": () => (/* binding */ Voice) +/* harmony export */ }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.ts"); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fraction */ "./src/fraction.ts"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.ts"); +/* harmony import */ var _typeguard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeguard */ "./src/typeguard.ts"); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License + + + + + +var VoiceMode; +(function (VoiceMode) { + VoiceMode[VoiceMode["STRICT"] = 1] = "STRICT"; + VoiceMode[VoiceMode["SOFT"] = 2] = "SOFT"; + VoiceMode[VoiceMode["FULL"] = 3] = "FULL"; +})(VoiceMode || (VoiceMode = {})); +/** + * `Voice` is mainly a container object to group `Tickables` for formatting. + */ +class Voice extends _element__WEBPACK_IMPORTED_MODULE_0__.Element { + constructor(time) { + super(); + this.resolutionMultiplier = 1; + this.mode = VoiceMode.STRICT; + this.preFormatted = false; + this.ticksUsed = new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(0, 1); + this.largestTickWidth = 0; + this.tickables = []; + this.options = { + softmaxFactor: _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.SOFTMAX_FACTOR, + }; + // Convert the `time` string into a VoiceTime object if necessary. + let voiceTime; + if (typeof time === 'string') { + // Time signature shortcut: "4/4", "3/8", etc. + const match = time.match(/(\d+)\/(\d+)/); + if (match) { + voiceTime = { + num_beats: parseInt(match[1]), + beat_value: parseInt(match[2]), + }; + } + } + else { + voiceTime = time; + } + // Default time signature is 4/4. + this.time = Object.assign({ num_beats: 4, beat_value: 4, resolution: _tables__WEBPACK_IMPORTED_MODULE_2__.Tables.RESOLUTION }, voiceTime); + // Recalculate total ticks. + this.totalTicks = new _fraction__WEBPACK_IMPORTED_MODULE_1__.Fraction(this.time.num_beats * (this.time.resolution / this.time.beat_value), 1); + this.smallestTickCount = this.totalTicks.clone(); + } + static get CATEGORY() { + return _typeguard__WEBPACK_IMPORTED_MODULE_3__.Category.Voice; + } + /** + * Modes allow the addition of ticks in three different ways: + * - STRICT: This is the default. Ticks must fill the voice. + * - SOFT: Ticks can be added without restrictions. + * - FULL: Ticks do not need to fill the voice, but can't exceed the maximum tick length. + */ + static get Mode() { + return VoiceMode; + } + /** Get the total ticks in the voice. */ + getTotalTicks() { + return this.totalTicks; + } + /** Get the total ticks used in the voice by all the tickables. */ + getTicksUsed() { + return this.ticksUsed; + } + /** Get the largest width of all the tickables. */ + getLargestTickWidth() { + return this.largestTickWidth; + } + /** Get the tick count for the shortest tickable */ + getSmallestTickCount() { + return this.smallestTickCount; + } + /** Get the tickables in the voice. */ + getTickables() { + return this.tickables; + } + /** Get the voice mode. */ + getMode() { + return this.mode; + } + /** + * Set the voice mode. + * @param mode value from `VoiceMode` + */ + setMode(mode) { + this.mode = mode; + return this; + } + /** Get the resolution multiplier for the voice. */ + getResolutionMultiplier() { + return this.resolutionMultiplier; + } + /** Get the actual tick resolution for the voice. */ + getActualResolution() { + return this.resolutionMultiplier * this.time.resolution; + } + /** Set the voice's stave. */ + setStave(stave) { + this.stave = stave; + // Reset the bounding box so we can reformat. + this.boundingBox = undefined; + return this; + } + getStave() { + return this.stave; + } + /** Get the bounding box for the voice. */ + getBoundingBox() { + if (!this.boundingBox) { + const stave = this.checkStave(); + let boundingBox = undefined; + for (let i = 0; i < this.tickables.length; ++i) { + const tickable = this.tickables[i]; + tickable.setStave(stave); + const bb = tickable.getBoundingBox(); + if (bb) { + boundingBox = boundingBox ? boundingBox.mergeWith(bb) : bb; + } + } + this.boundingBox = boundingBox; + } + return this.boundingBox; + } + /** Set the voice mode to strict or soft. */ + setStrict(strict) { + this.mode = strict ? VoiceMode.STRICT : VoiceMode.SOFT; + return this; + } + /** Determine if the voice is complete according to the voice mode. */ + isComplete() { + if (this.mode === VoiceMode.STRICT || this.mode === VoiceMode.FULL) { + return this.ticksUsed.equals(this.totalTicks); + } + else { + return true; + } + } + /** + * We use softmax to layout the tickables proportional to the exponent of + * their duration. The softmax factor is used to determine the 'linearness' of + * the layout. + * + * The softmax of all the tickables in this voice should sum to 1. + */ + setSoftmaxFactor(factor) { + this.options.softmaxFactor = factor; + return this; + } + /** + * Calculate the sum of the exponents of all the ticks in this voice to use + * as the denominator of softmax. + */ + reCalculateExpTicksUsed() { + const totalTicks = this.ticksUsed.value(); + const exp = (tickable) => Math.pow(this.options.softmaxFactor, tickable.getTicks().value() / totalTicks); + this.expTicksUsed = this.tickables.map(exp).reduce((a, b) => a + b, 0); + return this.expTicksUsed; + } + /** Get the softmax-scaled value of a tick duration. 'tickValue' is a number. */ + softmax(tickValue) { + if (!this.expTicksUsed) { + this.expTicksUsed = this.reCalculateExpTicksUsed(); + } + const totalTicks = this.ticksUsed.value(); + const exp = (v) => Math.pow(this.options.softmaxFactor, v / totalTicks); + const sm = exp(tickValue) / this.expTicksUsed; + return sm; + } + /** Add a tickable to the voice. */ + addTickable(tickable) { + if (!tickable.shouldIgnoreTicks()) { + const ticks = tickable.getTicks(); + // Update the total ticks for this line. + this.ticksUsed.add(ticks); + this.expTicksUsed = 0; // reset + if ((this.mode === VoiceMode.STRICT || this.mode === VoiceMode.FULL) && + this.ticksUsed.greaterThan(this.totalTicks)) { + this.ticksUsed.subtract(ticks); + throw new _util__WEBPACK_IMPORTED_MODULE_4__.RuntimeError('BadArgument', 'Too many ticks.'); + } + // Track the smallest tickable for formatting. + if (ticks.lessThan(this.smallestTickCount)) { + this.smallestTickCount = ticks.clone(); + } + this.resolutionMultiplier = this.ticksUsed.denominator; + // Expand total ticks using denominator from ticks used. + this.totalTicks.add(0, this.ticksUsed.denominator); + } + // Add the tickable to the line. + this.tickables.push(tickable); + tickable.setVoice(this); + return this; + } + /** Add an array of tickables to the voice. */ + addTickables(tickables) { + for (let i = 0; i < tickables.length; ++i) { + this.addTickable(tickables[i]); + } + return this; + } + /** Preformat the voice by applying the voice's stave to each note. */ + preFormat() { + if (this.preFormatted) + return this; + const stave = this.checkStave(); + this.tickables.forEach((tickable) => { + if (!tickable.getStave()) { + tickable.setStave(stave); + } + }); + this.preFormatted = true; + return this; + } + checkStave() { + return (0,_util__WEBPACK_IMPORTED_MODULE_4__.defined)(this.stave, 'NoStave', 'No stave attached to instance.'); + } + /** + * Render the voice onto the canvas `context` and an optional `stave`. + * If `stave` is omitted, it is expected that the notes have staves + * already set. + * + * This method also calculates the voice's boundingBox while drawing + * the notes. Note the similarities with this.getBoundingBox(). + */ + draw(context = this.checkContext(), stave) { + stave = stave !== null && stave !== void 0 ? stave : this.stave; + this.setRendered(); + let boundingBox = undefined; + for (let i = 0; i < this.tickables.length; ++i) { + const tickable = this.tickables[i]; + // Set the stave if provided. + if (stave) { + tickable.setStave(stave); + } + (0,_util__WEBPACK_IMPORTED_MODULE_4__.defined)(tickable.getStave(), 'MissingStave', 'The voice cannot draw tickables without staves.'); + const bb = tickable.getBoundingBox(); + if (bb) { + boundingBox = boundingBox ? boundingBox.mergeWith(bb) : bb; + } + tickable.setContext(context); + tickable.drawWithStyle(); + } + this.boundingBox = boundingBox; + } +} + + +/***/ }), + +/***/ "./src/web.ts": +/*!********************!*\ + !*** ./src/web.ts ***! + \********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "isHTMLCanvas": () => (/* binding */ isHTMLCanvas), +/* harmony export */ "isHTMLDiv": () => (/* binding */ isHTMLDiv) +/* harmony export */ }); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ "./src/util.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Ron B. Yeh +// MIT License +// +// Utilities for working with Web APIs. +// See: https://developer.mozilla.org/en-US/docs/Web/API + +// eslint-disable-next-line +function isHTMLCanvas(element) { + if (!element) + return false; + const global = (0,_util__WEBPACK_IMPORTED_MODULE_0__.globalObject)(); + return ( + // It's either an instance of the HTMLCanvasElement class, + (typeof global.HTMLCanvasElement === 'function' && element instanceof global.HTMLCanvasElement) || + // OR it's pretending to be a element. Good enough! + // Do not rely on .tagName, because node-canvas doesn't provide a tagName. + (typeof element.getContext === 'function' && typeof element.toDataURL === 'function')); +} +// eslint-disable-next-line +function isHTMLDiv(element) { + if (!element) + return false; + const global = (0,_util__WEBPACK_IMPORTED_MODULE_0__.globalObject)(); + return ( + // It's either an instance of the HTMLDivElement class. + (typeof global.HTMLDivElement === 'function' && element instanceof global.HTMLDivElement) || + // OR it's pretending to be a
. See: svgcontext.ts. + (typeof element.appendChild === 'function' && typeof element.style === 'object')); +} + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/global */ +/******/ (() => { +/******/ __webpack_require__.g = (function() { +/******/ if (typeof globalThis === 'object') return globalThis; +/******/ try { +/******/ return this || new Function('return this')(); +/******/ } catch (e) { +/******/ if (typeof window === 'object') return window; +/******/ } +/******/ })(); +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. +(() => { +/*!********************************!*\ + !*** ./entry/vexflow-debug.ts ***! + \********************************/ +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Accidental": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Accidental), +/* harmony export */ "Annotation": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Annotation), +/* harmony export */ "AnnotationHorizontalJustify": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.AnnotationHorizontalJustify), +/* harmony export */ "AnnotationVerticalJustify": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.AnnotationVerticalJustify), +/* harmony export */ "Articulation": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Articulation), +/* harmony export */ "BEAM_BOTH": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.BEAM_BOTH), +/* harmony export */ "BEAM_LEFT": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.BEAM_LEFT), +/* harmony export */ "BEAM_RIGHT": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.BEAM_RIGHT), +/* harmony export */ "BarNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.BarNote), +/* harmony export */ "Barline": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Barline), +/* harmony export */ "BarlineType": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.BarlineType), +/* harmony export */ "Beam": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Beam), +/* harmony export */ "Bend": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Bend), +/* harmony export */ "BoundingBox": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.BoundingBox), +/* harmony export */ "BoundingBoxComputation": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.BoundingBoxComputation), +/* harmony export */ "Builder": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Builder), +/* harmony export */ "CanvasContext": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.CanvasContext), +/* harmony export */ "Category": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Category), +/* harmony export */ "ChordSymbol": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.ChordSymbol), +/* harmony export */ "ChordSymbolHorizontalJustify": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.ChordSymbolHorizontalJustify), +/* harmony export */ "ChordSymbolVerticalJustify": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.ChordSymbolVerticalJustify), +/* harmony export */ "Clef": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Clef), +/* harmony export */ "ClefNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.ClefNote), +/* harmony export */ "Crescendo": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Crescendo), +/* harmony export */ "Curve": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Curve), +/* harmony export */ "CurvePosition": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.CurvePosition), +/* harmony export */ "Dot": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Dot), +/* harmony export */ "EasyScore": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.EasyScore), +/* harmony export */ "EasyScoreGrammar": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.EasyScoreGrammar), +/* harmony export */ "Element": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Element), +/* harmony export */ "Factory": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Factory), +/* harmony export */ "Flow": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Flow), +/* harmony export */ "Font": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Font), +/* harmony export */ "FontStyle": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.FontStyle), +/* harmony export */ "FontWeight": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.FontWeight), +/* harmony export */ "Formatter": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Formatter), +/* harmony export */ "Fraction": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Fraction), +/* harmony export */ "FretHandFinger": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.FretHandFinger), +/* harmony export */ "GhostNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.GhostNote), +/* harmony export */ "Glyph": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Glyph), +/* harmony export */ "GlyphNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.GlyphNote), +/* harmony export */ "GraceNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.GraceNote), +/* harmony export */ "GraceNoteGroup": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.GraceNoteGroup), +/* harmony export */ "GraceTabNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.GraceTabNote), +/* harmony export */ "KeyManager": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.KeyManager), +/* harmony export */ "KeySigNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.KeySigNote), +/* harmony export */ "KeySignature": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.KeySignature), +/* harmony export */ "Modifier": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Modifier), +/* harmony export */ "ModifierContext": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.ModifierContext), +/* harmony export */ "ModifierPosition": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.ModifierPosition), +/* harmony export */ "MultiMeasureRest": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.MultiMeasureRest), +/* harmony export */ "Music": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Music), +/* harmony export */ "Note": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Note), +/* harmony export */ "NoteHead": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.NoteHead), +/* harmony export */ "NoteSubGroup": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.NoteSubGroup), +/* harmony export */ "Ornament": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Ornament), +/* harmony export */ "OutlineCode": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.OutlineCode), +/* harmony export */ "Parenthesis": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Parenthesis), +/* harmony export */ "Parser": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Parser), +/* harmony export */ "PedalMarking": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.PedalMarking), +/* harmony export */ "Piece": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Piece), +/* harmony export */ "Registry": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Registry), +/* harmony export */ "RenderContext": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.RenderContext), +/* harmony export */ "Renderer": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Renderer), +/* harmony export */ "RendererBackends": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.RendererBackends), +/* harmony export */ "RendererLineEndType": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.RendererLineEndType), +/* harmony export */ "RepeatNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.RepeatNote), +/* harmony export */ "Repetition": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Repetition), +/* harmony export */ "RuntimeError": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.RuntimeError), +/* harmony export */ "SVGContext": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.SVGContext), +/* harmony export */ "Stave": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Stave), +/* harmony export */ "StaveConnector": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.StaveConnector), +/* harmony export */ "StaveHairpin": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.StaveHairpin), +/* harmony export */ "StaveLine": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.StaveLine), +/* harmony export */ "StaveModifier": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.StaveModifier), +/* harmony export */ "StaveModifierPosition": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.StaveModifierPosition), +/* harmony export */ "StaveNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.StaveNote), +/* harmony export */ "StaveSection": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.StaveSection), +/* harmony export */ "StaveTempo": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.StaveTempo), +/* harmony export */ "StaveText": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.StaveText), +/* harmony export */ "StaveTie": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.StaveTie), +/* harmony export */ "Stem": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Stem), +/* harmony export */ "StemmableNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.StemmableNote), +/* harmony export */ "StringNumber": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.StringNumber), +/* harmony export */ "Stroke": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Stroke), +/* harmony export */ "SymbolModifiers": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.SymbolModifiers), +/* harmony export */ "SymbolTypes": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.SymbolTypes), +/* harmony export */ "System": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.System), +/* harmony export */ "TabNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.TabNote), +/* harmony export */ "TabSlide": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.TabSlide), +/* harmony export */ "TabStave": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.TabStave), +/* harmony export */ "TabTie": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.TabTie), +/* harmony export */ "TextBracket": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.TextBracket), +/* harmony export */ "TextBracketPosition": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.TextBracketPosition), +/* harmony export */ "TextDynamics": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.TextDynamics), +/* harmony export */ "TextFormatter": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.TextFormatter), +/* harmony export */ "TextJustification": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.TextJustification), +/* harmony export */ "TextNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.TextNote), +/* harmony export */ "TickContext": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.TickContext), +/* harmony export */ "Tickable": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Tickable), +/* harmony export */ "TimeSigNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.TimeSigNote), +/* harmony export */ "TimeSignature": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.TimeSignature), +/* harmony export */ "TimeSignatureGlyph": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.TimeSignatureGlyph), +/* harmony export */ "Tremolo": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Tremolo), +/* harmony export */ "Tuning": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Tuning), +/* harmony export */ "Tuplet": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Tuplet), +/* harmony export */ "TupletLocation": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.TupletLocation), +/* harmony export */ "Vex": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Vex), +/* harmony export */ "Vibrato": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Vibrato), +/* harmony export */ "VibratoBracket": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.VibratoBracket), +/* harmony export */ "Voice": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Voice), +/* harmony export */ "VoiceMode": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.VoiceMode), +/* harmony export */ "Volta": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.Volta), +/* harmony export */ "VoltaType": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.VoltaType), +/* harmony export */ "defined": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.defined), +/* harmony export */ "drawDot": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.drawDot), +/* harmony export */ "globalObject": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.globalObject), +/* harmony export */ "isAccidental": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.isAccidental), +/* harmony export */ "isAnnotation": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.isAnnotation), +/* harmony export */ "isBarline": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.isBarline), +/* harmony export */ "isCategory": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.isCategory), +/* harmony export */ "isDot": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.isDot), +/* harmony export */ "isGraceNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.isGraceNote), +/* harmony export */ "isGraceNoteGroup": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.isGraceNoteGroup), +/* harmony export */ "isHTMLCanvas": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.isHTMLCanvas), +/* harmony export */ "isHTMLDiv": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.isHTMLDiv), +/* harmony export */ "isNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.isNote), +/* harmony export */ "isRenderContext": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.isRenderContext), +/* harmony export */ "isStaveNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.isStaveNote), +/* harmony export */ "isStemmableNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.isStemmableNote), +/* harmony export */ "isTabNote": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.isTabNote), +/* harmony export */ "log": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.log), +/* harmony export */ "midLine": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.midLine), +/* harmony export */ "normalizeAngle": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.normalizeAngle), +/* harmony export */ "prefix": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.prefix), +/* harmony export */ "warn": () => (/* reexport safe */ _src_index__WEBPACK_IMPORTED_MODULE_3__.warn), +/* harmony export */ "default": () => (/* reexport module object */ _src_index__WEBPACK_IMPORTED_MODULE_3__) +/* harmony export */ }); +/* harmony import */ var _src_flow__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../src/flow */ "./src/flow.ts"); +/* harmony import */ var _src_fonts_load_all__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/fonts/load_all */ "./src/fonts/load_all.ts"); +/* harmony import */ var _src_fonts_textfonts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/fonts/textfonts */ "./src/fonts/textfonts.ts"); +/* harmony import */ var _src_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../src/index */ "./src/index.ts"); +// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// MIT License +// +// vexflow-debug.ts is the entry point for the build output file vexflow-debug.js. +// It statically bundles all the music engraving fonts. +// Currently, it is identical to vexflow.ts, but the webpack config inside Gruntfile.js +// sets the webpack mode to 'development' to produce an unminified build. +// In the future, we could do something different with this entry file, such as turn on flags for logging. + + + +(0,_src_fonts_load_all__WEBPACK_IMPORTED_MODULE_1__.loadAllMusicFonts)(); +_src_flow__WEBPACK_IMPORTED_MODULE_0__.Flow.setMusicFont('Bravura', 'Gonville', 'Custom'); +(0,_src_fonts_textfonts__WEBPACK_IMPORTED_MODULE_2__.loadTextFonts)(); +// Re-export all exports from index.ts. + +// Also collect all exports into a default export for CJS projects. + + +})(); + +__webpack_exports__ = __webpack_exports__["default"]; +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=vexflow-debug.js.map \ No newline at end of file diff --git a/build/cjs/vexflow-debug.js.map b/build/cjs/vexflow-debug.js.map new file mode 100644 index 0000000000..1670c35f03 --- /dev/null +++ b/build/cjs/vexflow-debug.js.map @@ -0,0 +1 @@ +{"version":3,"file":"vexflow-debug.js","mappings":";;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;;;;;;;;;ACVO;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACFP;AACA;AACA;AACA;AACsC;AACN;AACM;AACN;AACE;AAC+D;AAC3D;AACtC;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,yBAAyB,+CAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6DAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,2DAAsB;AAChD,QAAQ,8CAAO,+DAA+D,KAAK;AACnF;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2DAAmB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAuB;AACjD;AACA;AACA;AACA,oFAAoF;AACpF;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iDAAiD;AAChF;AACA;AACA,+BAA+B,sCAAsC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wCAAwC;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D,6BAA6B,kEAA6B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,0BAA0B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,+CAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,0BAA0B,yCAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uDAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wDAAY;AACxC;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,wBAAwB,4DAAgB;AACxC;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,yBAAyB,yCAAK;AAC9B;AACA;AACA,iCAAiC,yCAAK,CAAC,2DAAsB,GAAG;AAChE,kCAAkC,yCAAK,CAAC,2DAAsB,GAAG;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,8CAAO;AACrC,+BAA+B,8CAAO;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8CAAO,2CAA2C,KAAK;AAC/D;AACA;AACA,YAAY,uDAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8EAA8E,qCAAqC,IAAI;AACvI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,8CAAO;AACrC,+BAA+B,8CAAO;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AC5dA;AACA;AACoC;AACoB;AAC1B;AACI;AACc;AACmB;AACtC;AAC7B;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,kEAAkE;AAC5D;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,8DAA8D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACO,yBAAyB,+CAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qDAAgB;AACtC;AACA;AACA;AACA,eAAe,2DAAmB;AAClC;AACA;AACA;AACA;AACA,0BAA0B,4DAAuB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA,kCAAkC,gEAAoB;AACtD;AACA,8DAA8D,+DAA0B;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,0CAAO;AACpF;AACA;AACA,gBAAgB,qDAAS;AACzB;AACA;AACA;AACA,kEAAkE,+DAA0B;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,2DAAe;AACpC;AACA;AACA,8DAA8D,+DAA0B;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qDAAS;AAC7B;AACA;AACA,sCAAsC,0CAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qDAAS;AAC7B;AACA;AACA,sCAAsC,4CAAS;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,0CAAO;AAChF,8BAA8B,gEAAoB;AAClD,8CAA8C,6DAAsB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,+DAA0B;AAClE,8CAA8C,4CAAS;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,+DAA0B;AACnF,8CAA8C,0CAAO;AACrD;AACA;AACA,mEAAmE,+DAA0B;AAC7F;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,EAAE,uDAAiB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AC1RA;AACA;AACA;AACgC;AACM;AACR;AACI;AAC2D;AACzC;AACpD;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA,QAAQ,eAAe,EAAE,wDAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,uDAAW,UAAU,uDAAW;AACrE;AACA;AACA,YAAY,mCAAmC;AAC/C;AACA;AACA,kCAAkC,0CAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,qDAAS;AACtB;AACA,kCAAkC,0CAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,+CAAY;AAC9B;AACA;AACA;AACA;AACA,YAAY,mCAAmC;AAC/C;AACA;AACA,kCAAkC,0CAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,qDAAS;AACtB;AACA,kCAAkC,0CAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,+CAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,0CAAO;AAClF,2DAA2D,4CAAS;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,2BAA2B,+CAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,6DAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uHAAuH,8CAAO;AAC9H;AACA;AACA;AACA;AACA,6EAA6E,0CAAO;AACpF;AACA;AACA,gBAAgB,2DAAe;AAC/B;AACA;AACA,8DAA8D,+DAA0B;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,0CAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,4CAAS;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,eAAe;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA,iCAAiC,8DAAuB;AACxD;AACA,SAAS;AACT;AACA;AACA;AACA,4BAA4B,6DAAwB;AACpD,6BAA6B,8CAAO,gEAAgE,UAAU;AAC9G;AACA,yBAAyB,yCAAK;AAC9B,sBAAsB,8CAAO;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uCAAuC;AACvD;AACA;AACA;AACA,sBAAsB,qDAAS;AAC/B;AACA,gBAAgB,IAAI;AACpB;AACA;AACA,wBAAwB,4DAAuB,gCAAgC,gBAAgB;AAC/F;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,EAAE,OAAO,EAAE;AACtD;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACjUA;AACA;AAC8B;AACwB;AACf;AACV;AAC7B;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,sBAAsB,uCAAI;AACjC,uBAAuB,6DAAkB;AACzC,gBAAgB,eAAe;AAC/B;AACA,sBAAsB;AACtB;AACA,qBAAqB,sDAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wDAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,6DAAkB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kDAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;AC5EA;AACA;AACoC;AACE;AACR;AACI;AACQ;AACqB;AACzB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL;AACA,eAAe,4CAAS;AACxB;AACA,WAAW,0CAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACP;AACO,mBAAmB,6CAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA,0BAA0B,2DAAsB;AAChD,sBAAsB,+CAAY;AAClC;AACA,eAAe;AACf;AACA,8BAA8B,0CAAO;AACrC,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uDAAW;AACpC;AACA;AACA,8BAA8B,qDAAS;AACvC;AACA;AACA,gDAAgD,0CAAO,GAAG,4CAAS;AACnE;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qDAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+CAAQ;AACpC;AACA;AACA,4BAA4B,+CAAQ;AACpC;AACA;AACA,4BAA4B,+CAAQ;AACpC;AACA;AACA;AACA,6CAA6C,+CAAQ;AACrD;AACA,oBAAoB,+CAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,wBAAwB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA,iCAAiC,+CAAQ;AACzC;AACA;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA,0CAA0C,sDAAiB;AAC3D,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,0FAA0F,+CAAQ;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,+CAAQ;AACrD;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA,mCAAmC,4DAAuB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,iDAAiD,+CAAQ;AACzD;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,2DAAsB;AAC9E;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,0CAAO;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,2DAAsB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,iEAAiE,4CAAS,GAAG,0DAAqB,GAAG,uDAAkB;AACvH;AACA;AACA;AACA,4BAA4B,yBAAyB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wDAAwD,oDAAoD,IAAI;AAChI;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,oBAAoB;AACxD;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yCAAyC,oDAAoD,IAAI;AACjH;AACA;AACA;AACA,0BAA0B;AAC1B,kCAAkC;AAClC;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,4CAAS;AAC5C;AACA;AACA;AACA;AACA,wCAAwC,0CAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,4CAAS;AACxC;AACA;AACA,oCAAoC,0CAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,4CAAS;AAC7C;AACA;AACA,oCAAoC,0CAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qEAAqE,8CAA8C,IAAI;AACvI;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA,yDAAyD,0CAAO;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,4DAAuB,eAAe;AACzE,gDAAgD,2DAAsB;AACtE,gDAAgD,2DAAsB;AACtE,sCAAsC,2DAAsB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,2DAAsB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,6CAAU;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iCAAiC;AACzD;AACA;AACA,4BAA4B,sBAAsB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+CAAY;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,qDAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACjzBA;AACA;AACoC;AACE;AACU;AACE;AACZ;AACtC;AACO,mBAAmB,+CAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gCAAgC;AAC7D;AACA,mCAAmC,2BAA2B;AAC9D;AACA;AACA;AACA;AACA,eAAe,qDAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA,gBAAgB,qDAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,gEAAoB;AAClD;AACA;AACA;AACA;AACA,8BAA8B,gEAAoB;AAClD;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,8DAAuB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,+DAAwB;AAC7E;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,EAAE,uDAAiB;;;;;;;;;;;;;;;ACvPpD;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC/HA;AACA;AAC8B;AACkB;AACJ;AACP;AACrC;AACA;AACA;AACA;AACO,4BAA4B,yDAAa;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2CAAI;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,mDAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kDAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,gDAAa;AACtC,8BAA8B,mDAAgB;AAC9C,0BAA0B,+DAA4B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACpPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACqD;AACrB;AACM;AACJ;AACc;AACQ;AAC3B;AAC7B;AACA;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,oEAAoE;AAC9D;AACP;AACA;AACA;AACA,CAAC,gEAAgE;AAC1D;AACP;AACA;AACA;AACA;AACA,CAAC,kCAAkC;AAC5B;AACP;AACA;AACA;AACA;AACA,CAAC,0CAA0C;AAC3C;AACA;AACA;AACA;AACO,0BAA0B,+CAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAuB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAuB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAuB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,+DAA4B;AACzD,4BAA4B,iDAAc;AAC1C;AACA;AACA;AACA;AACA;AACA,4BAA4B,gCAAgC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,2DAAe;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAuB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oDAAiB;AACrC,mBAAmB,mDAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,mBAAmB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,qBAAqB;AAClD;AACA;AACA;AACA;AACA,sCAAsC,qCAAqC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,8BAA8B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,yCAAK,gCAAgC,yBAAyB;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iEAAiE,iBAAiB,kBAAkB;AACpG;AACA;AACA;AACA;AACA;AACA,qCAAqC,kCAAkC;AACvE;AACA;AACA;AACA;AACA;AACA,qCAAqC,kCAAkC;AACvE;AACA;AACA;AACA;AACA;AACA,qCAAqC,mCAAmC;AACxE;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,iEAAiE,aAAa,mBAAmB;AACjG;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,iEAAiE,aAAa,mBAAmB;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gEAAoB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,8DAAuB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,mEAA8B;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,8BAA8B;AAC9D,gDAAgD,iDAAc;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AClsBA;AACA;AACA;AACgC;AACuC;AACrC;AACK;AACD;AACtC;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACO,mBAAmB,yDAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAA2B;AACpD;AACA,sBAAsB,4DAAuB,wBAAwB,UAAU;AAC/E;AACA;AACA;AACA,eAAe,qDAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAuB;AACjD,yDAAyD,UAAU;AACnE,yBAAyB,yCAAK;AAC9B,8BAA8B,eAAe,GAAG,UAAU;AAC1D,SAAS;AACT;AACA;AACA,oEAAoE,WAAW;AAC/E,qEAAqE,WAAW,GAAG,UAAU;AAC7F,oEAAoE,WAAW,GAAG,UAAU,GAAG,UAAU;AACzG,uEAAuE,WAAW,GAAG,UAAU,GAAG,UAAU;AAC5G,gCAAgC;AAChC,kCAAkC,yCAAK;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8CAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,8CAAO;AACjC;AACA,8BAA8B,4DAAuB;AACrD,mEAAmE,SAAS;AAC5E,oEAAoE,SAAS;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8CAAO;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACjLA;AACA;AACA;AAC8B;AACE;AACF;AACS;AACvC;AACO,uBAAuB,uCAAI;AAClC;AACA,gBAAgB,eAAe;AAC/B;AACA,4BAA4B,uCAAI;AAChC;AACA,yBAAyB,yCAAK;AAC9B;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAiB;AAChC;AACA;AACA;AACA;AACA,4BAA4B,uCAAI;AAChC;AACA,yBAAyB,yCAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,yCAAK;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AAC8B;AACc;AACL;AACV;AAC7B;AACA;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,wBAAwB,uCAAI;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0DAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,oEAA0B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;;;;;;;;;;;;;;;;;;ACpGA;AACA;AACA;AACA;AACoC;AACG;AACD;AAC/B;AACP;AACA;AACA;AACA,CAAC,sCAAsC;AAChC,oBAAoB,6CAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,kBAAkB,aAAa;AAC/B,kBAAkB,aAAa;AAC/B,eAAe;AACf;AACA;AACA;AACA;AACA,eAAe,sDAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAmB;AACnC,gBAAgB,mBAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;;;;;;;;;;;;;;;;;ACnIA;AACA;AACA;AACA;AACsC;AACsC;AACtC;AAC/B,kBAAkB,+CAAQ;AACjC;AACA;AACA,wBAAwB,8DAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA,eAAe,oDAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA,gBAAgB,uDAAW;AAC3B;AACA;AACA;AACA;AACA;AACA,qBAAqB,qDAAS;AAC9B,0BAA0B,aAAa;AACvC;AACA;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA;AACA,4BAA4B,sCAAsC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C,oBAAoB,2BAA2B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uDAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,sBAAsB;AACjG;AACA,YAAY,qDAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;AC1JA;AACA;AAC8C;AAClB;AACsB;AAClB;AACE;AACJ;AACsB;AACpD;AACA;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,8BAA8B;AACrE,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,gBAAgB,UAAU;AAC1B;AACA;AACA,sDAAsD;AACtD;AACA;AACA,qBAAqB,8CAAO;AAC5B;AACA,qBAAqB,8CAAO;AAC5B,gBAAgB,8BAA8B;AAC9C;AACA,iFAAiF,UAAU,WAAW,EAAE;AACxG;AACA,oCAAoC,qDAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,2CAA2C;AAC3C;AACA;AACA,kCAAkC,gBAAgB;AAClD,kCAAkC,6CAA6C;AAC/E;AACA,kDAAkD,0CAAO,GAAG,4CAAS;AACrE;AACA;AACA;AACA;AACA;AACA,wDAAwD,aAAa;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,wBAAwB,UAAU;AAClC,YAAY,oDAAkB,WAAW,WAAW;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE;AACnE;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA,qDAAqD,+BAA+B,qEAA0B,EAAE,yEAA4B,wBAAwB,cAAc;AAClL,qBAAqB;AACrB;AACA;AACA;AACA,0BAA0B,2CAAM;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA,4BAA4B,gBAAgB;AAC5C;AACA;AACA;AACA,8BAA8B,gBAAgB;AAC9C;AACA;AACA,4BAA4B;AAC5B,kCAAkC,oDAAoD;AACtF;AACA;AACA;AACA,6BAA6B;AAC7B,kCAAkC,0BAA0B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AChaA;AACA;AACA;AACqD;AACf;AACC;AACE;AACzC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA,cAAc,kEAA2B;AACzC;AACA;AACA,eAAe,wDAAgB;AAC/B;AACA;AACA,sBAAsB,aAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,sCAAsC;AAChE;AACA;AACA;AACA;AACA;AACA,0BAA0B,sCAAsC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,sCAAsC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,kCAAkC;AAClH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mDAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA,4BAA4B,qDAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,gDAAa;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mDAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,KAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA,eAAe,+DAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kDAAe;AAC3B,UAAU,4CAAS;AACnB,YAAY,oDAAiB;AAC7B,WAAW,mDAAgB;AAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/VA;AACA;AACA;AAC0C;AACwD;AACpD;AACV;AACN;AACc;AACN;AACN;AACQ;AACJ;AACI;AACU;AACV;AACA;AACA;AACU;AACR;AACU;AACE;AACR;AACR;AACQ;AACR;AACI;AACV;AACkB;AACV;AACA;AACF;AACQ;AACZ;AACE;AACE;AACM;AACE;AACR;AACM;AACA;AACV;AACkB;AACF;AAClB;AACK;AACrC;AACA;AACA;AACA,QAAQ,2CAAG;AACX;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,kDAAkD,YAAY,6CAA6C,EAAE;AAC7G;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF;AACjF;AACA;AACA,6BAA6B,YAAY,4BAA4B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA,gBAAgB,uCAAuC;AACvD;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mDAAY;AAC5B,0BAA0B,gEAAwB;AAClD;AACA;AACA,0BAA0B,6DAAqB;AAC/C;AACA;AACA,uBAAuB,6DAAqB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,8EAA8E,8CAA8C;AAC9J,0BAA0B,0CAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,8EAA8E,8CAA8C;AAC9J,0BAA0B,gDAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,kDAAS;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,kDAAS;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oDAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,kDAAS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gDAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,4BAA4B,6CAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA,eAAe;AACf,6BAA6B,+CAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,aAAa;AAC/C,gCAAgC,sDAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,oDAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,8CAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,kDAAS;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAc;AACxC;AACA;AACA;AACA;AACA,0BAA0B,mDAAU;AACpC;AACA;AACA;AACA;AACA,kCAAkC,qBAAqB,2EAAkC,YAAY,yEAAgC,EAAE;AACvI,+BAA+B,mDAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uEAAuE;AACzG,gCAAgC,qDAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,+BAA+B;AACjE,iCAAiC,uDAAY;AAC7C;AACA;AACA;AACA;AACA;AACA,wCAAwC,mCAAmC;AAC3E,6BAA6B,gDAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,4CAA4C;AAC9E,yBAAyB,wDAAY;AACrC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,+BAA+B;AACjE,8BAA8B,4DAAc;AAC5C;AACA;AACA;AACA;AACA;AACA,iCAAiC,wDAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sDAAW;AAC9B;AACA;AACA,mBAAmB,8DAAe;AAClC;AACA;AACA,4BAA4B,+CAAO;AACnC,qCAAqC,gEAAgB;AACrD;AACA;AACA;AACA;AACA;AACA,kCAAkC,aAAa;AAC/C,0BAA0B,0CAAK;AAC/B;AACA;AACA;AACA;AACA,8BAA8B,4DAAc;AAC5C;AACA;AACA;AACA;AACA;AACA,mBAAmB,kDAAS;AAC5B;AACA;AACA,kCAAkC,wBAAwB;AAC1D,2BAA2B,4CAAM;AACjC;AACA;AACA;AACA;AACA;AACA,yBAAyB,uCAAI;AAC7B;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,0BAA0B,yCAAK;AAC/B;AACA;AACA;AACA;AACA;AACA,wBAAwB,gDAAQ;AAChC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,kDAAS;AAClC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,4DAAc;AACjD;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sDAAW;AAC3C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,2BAA2B,4CAAM;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,YAAY,6CAA6C;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,mBAAmB,iDAAS;AAC5B;AACA;AACA,kCAAkC;AAClC;AACA,eAAe;AACf,0BAA0B,wDAAY;AACtC,sBAAsB,mEAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA,kCAAkC,WAAW;AAC7C,0BAA0B,wDAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,EAAE,uDAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1fvD,iBAAiB,SAAI,IAAI,SAAI;AAC7B,4BAA4B,+DAA+D,iBAAiB;AAC5G;AACA,oCAAoC,MAAM,+BAA+B,YAAY;AACrF,mCAAmC,MAAM,mCAAmC,YAAY;AACxF,gCAAgC;AAChC;AACA,KAAK;AACL;AAC0C;AACwD;AACpD;AACV;AACN;AACA;AACc;AACsB;AAClB;AACqF;AACvG;AACQ;AACE;AACO;AACnB;AACY;AACJ;AACA;AACiB;AACb;AACF;AACY;AACV;AACR;AACQ;AACA;AACU;AACJ;AACJ;AACI;AACJ;AACc;AACJ;AACE;AACtB;AACF;AACQ;AACQ;AACR;AACM;AACV;AACY;AACR;AACU;AAC6B;AACnC;AACV;AACsB;AACJ;AACJ;AACN;AAC+B;AAC/B;AACO;AACL;AACF;AACF;AACU;AAClB;AACgB;AACX;AACO;AACR;AACA;AACE;AACE;AACA;AACJ;AAC+B;AACnB;AACE;AACS;AACb;AACI;AACJ;AACR;AACF;AACA;AACY;AACV;AACc;AACP;AACpC;AACP;AACA;AACA;AACA,qBAAqB,8CAAO;AAC5B;AACA,gBAAgB,yCAAE;AAClB;AACA,kBAAkB,2CAAI;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,6CAAS;AAC3D,QAAQ,6DAAuB;AAC/B,QAAQ,2DAAsB;AAC9B,QAAQ,4DAAuB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,sBAAsB,6DAAuB;AAC7C;AACA;AACA;AACA,eAAe,oEAA8B;AAC7C;AACA;AACA,QAAQ,oEAA8B;AACtC;AACA;AACA,eAAe,2DAAqB;AACpC;AACA;AACA,QAAQ,2DAAqB;AAC7B;AACA;AACA,eAAe,gEAA0B;AACzC;AACA;AACA,QAAQ,gEAA0B;AAClC;AACA;AACA,eAAe,iEAA2B;AAC1C;AACA;AACA,QAAQ,iEAA2B;AACnC;AACA;AACA,eAAe,uDAAiB;AAChC;AACA;AACA,QAAQ,uDAAiB;AACzB;AACA;AACA,eAAe,iEAA2B;AAC1C;AACA;AACA,QAAQ,iEAA2B;AACnC;AACA;AACA,eAAe,gEAA0B;AACzC;AACA;AACA,QAAQ,gEAA0B;AAClC;AACA;AACA,eAAe,iEAA2B;AAC1C;AACA;AACA,QAAQ,iEAA2B;AACnC;AACA;AACA,eAAe,wDAAkB;AACjC;AACA;AACA,QAAQ,wDAAkB;AAC1B;AACA;AACA,eAAe,uDAAiB;AAChC;AACA;AACA,QAAQ,uDAAiB;AACzB;AACA;AACA,eAAe,oDAAc;AAC7B;AACA;AACA,eAAe,0DAAoB;AACnC;AACA;AACA,eAAe,oDAAc;AAC7B;AACA;AACA,eAAe,yDAAmB;AAClC;AACA;AACA,eAAe,4DAAsB;AACrC;AACA;AACA,eAAe,6DAAuB;AACtC;AACA;AACA,eAAe,2DAAqB;AACpC;AACA;AACA;AACA,eAAe,0DAAoB;AACnC;AACA;AACA,eAAe,4DAAsB;AACrC;AACA;AACA,kBAAkB,mDAAU;AAC5B,kBAAkB,mDAAU;AAC5B,oBAAoB,uDAAY;AAChC,eAAe,mDAAO;AACtB,eAAe,6CAAO;AACtB,YAAY,uCAAI;AAChB,YAAY,uCAAI;AAChB,mBAAmB,qDAAW;AAC9B,8BAA8B,2EAAsB;AACpD,qBAAqB,yDAAa;AAClC,mBAAmB,qDAAW;AAC9B,YAAY,wCAAI;AAChB,gBAAgB,gDAAQ;AACxB,iBAAiB,kDAAS;AAC1B,aAAa,0CAAK;AAClB,WAAW,sCAAG;AACd,iBAAiB,kDAAS;AAC1B,eAAe,8CAAO;AACtB,eAAe,8CAAO;AACtB,YAAY,wCAAI;AAChB,iBAAiB,kDAAS;AAC1B,gBAAgB,gDAAQ;AACxB,sBAAsB,4DAAc;AACpC,iBAAiB,kDAAS;AAC1B,aAAa,0CAAK;AAClB,iBAAiB,kDAAS;AAC1B,iBAAiB,kDAAS;AAC1B,sBAAsB,4DAAc;AACpC,oBAAoB,wDAAY;AAChC,kBAAkB,oDAAU;AAC5B,oBAAoB,wDAAY;AAChC,kBAAkB,oDAAU;AAC5B,gBAAgB,gDAAQ;AACxB,uBAAuB,8DAAe;AACtC,wBAAwB,gEAAgB;AACxC,aAAa,0CAAK;AAClB,YAAY,wCAAI;AAChB,gBAAgB,gDAAQ;AACxB,oBAAoB,wDAAY;AAChC,gBAAgB,gDAAQ;AACxB,mBAAmB,sDAAW;AAC9B,cAAc,4CAAM;AACpB,oBAAoB,wDAAY;AAChC,gBAAgB,gDAAQ;AACxB,qBAAqB,0DAAa;AAClC,gBAAgB,gDAAQ;AACxB,kBAAkB,oDAAU;AAC5B,kBAAkB,yDAAU;AAC5B,aAAa,0CAAK;AAClB,sBAAsB,4DAAc;AACpC,oBAAoB,wDAAY;AAChC,iBAAiB,kDAAS;AAC1B,qBAAqB,0DAAa;AAClC,iBAAiB,kDAAS;AAC1B,kBAAkB,oDAAU;AAC5B,iBAAiB,kDAAS;AAC1B,gBAAgB,gDAAQ;AACxB,YAAY,wCAAI;AAChB,oBAAoB,wDAAY;AAChC,cAAc,6CAAM;AACpB,kBAAkB,oDAAU;AAC5B,cAAc,4CAAM;AACpB,eAAe,8CAAO;AACtB,gBAAgB,gDAAQ;AACxB,gBAAgB,gDAAQ;AACxB,cAAc,4CAAM;AACpB,mBAAmB,sDAAW;AAC9B,oBAAoB,wDAAY;AAChC,qBAAqB,0DAAa;AAClC,gBAAgB,gDAAQ;AACxB,mBAAmB,sDAAW;AAC9B,qBAAqB,0DAAa;AAClC,mBAAmB,sDAAW;AAC9B,eAAe,8CAAO;AACtB,cAAc,4CAAM;AACpB,cAAc,4CAAM;AACpB,eAAe,8CAAO;AACtB,sBAAsB,4DAAc;AACpC,aAAa,0CAAK;AAClB,aAAa,+CAAK;AAClB;AACA;AACA,mCAAmC,oEAA2B;AAC9D,iCAAiC,kEAAyB;AAC1D,oCAAoC,sEAA4B;AAChE,kCAAkC,oEAA0B;AAC5D,mBAAmB,qDAAW;AAC9B,uBAAuB,yDAAe;AACtC,qBAAqB,kDAAa;AAClC,kBAAkB,8CAAU;AAC5B,iBAAiB,6CAAS;AAC1B,wBAAwB,wDAAgB;AACxC,wBAAwB,wDAAgB;AACxC,2BAA2B,2DAAmB;AAC9C,mBAAmB,uDAAW;AAC9B,6BAA6B,kEAAqB;AAClD,iBAAiB,mDAAS;AAC1B,2BAA2B,8DAAmB;AAC9C,yBAAyB,yDAAiB;AAC1C,iBAAiB,8CAAS;;;;;;;;;;;;;;;;;;AClV1B,iBAAiB,SAAI,IAAI,SAAI;AAC7B,4BAA4B,+DAA+D,iBAAiB;AAC5G;AACA,oCAAoC,MAAM,+BAA+B,YAAY;AACrF,mCAAmC,MAAM,mCAAmC,YAAY;AACxF,gCAAgC;AAChC;AACA,KAAK;AACL;AACiC;AAC1B;AACP;AACA;AACA;AACA,CAAC,gCAAgC;AAC1B;AACP;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,KAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8CAA8C;AAC9D,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D,sBAAsB,oBAAoB,EAAE,KAAK;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,QAAQ;AAC3D,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,0BAA0B,mBAAmB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC9XO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;;;;;;;;;;;;;;;AC97GA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA,mBAAmB,uBAAuB;AAC1C,mBAAmB,sBAAsB;AACzC,mBAAmB,sBAAsB;AACzC,mBAAmB,uBAAuB;AAC1C,mBAAmB,wBAAwB;AAC3C,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,2BAA2B,uBAAuB;AAClD,yBAAyB,aAAa;AACtC,aAAa;AACb;AACA,2BAA2B,cAAc;AACzC,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;;;;;;;;;;;;;;;ACrhBO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;;;;;;;;;;;;;;;AC7EO;AACP;AACA;AACA,cAAc;AACd;;;;;;;;;;;;;;;ACJO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACr2BA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA,mBAAmB,uBAAuB;AAC1C,mBAAmB,sBAAsB;AACzC,mBAAmB,sBAAsB;AACzC,mBAAmB,uBAAuB;AAC1C,mBAAmB,wBAAwB;AAC3C,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;;;;;;;;;;;;;;;AC7aO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;;;;;;;;;;;;;;;AC9pCO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA,mBAAmB,uBAAuB;AAC1C,mBAAmB,sBAAsB;AACzC,mBAAmB,sBAAsB;AACzC,mBAAmB,uBAAuB;AAC1C,mBAAmB,wBAAwB;AAC3C,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,2BAA2B,uBAAuB;AAClD,yBAAyB,aAAa;AACtC,aAAa;AACb;AACA,2BAA2B,cAAc;AACzC,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;;;;;;;;;;;;;;;;;;;;AC3gBA;AACA;AACA;AACA;AAC6C;AACF;AACI;AACJ;AACI;AAC/C;AACA,YAAY,UAAU;AACtB;AACO;AACP,IAAI,0DAAW;AACf,IAAI,4DAAY;AAChB,IAAI,4DAAY;AAChB,IAAI,wDAAU;AACd,IAAI,wDAAU;AACd;AACA;AACA;;;;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC+B;AACgB;AACI;AAC5C;AACP,IAAI,4CAAS,YAAY,wDAAW,EAAE,4DAAc;AACpD;;;;;;;;;;;;;;;;;;ACfA;AACA;AAC+B;AACc;AACI;AAC1C;AACP,IAAI,4CAAS,WAAW,sDAAU,EAAE,0DAAa;AACjD;;;;;;;;;;;;;;;;;;ACPA;AACA;AAC+B;AACkB;AACI;AAC9C;AACP,IAAI,4CAAS,aAAa,0DAAY,EAAE,8DAAe;AACvD;;;;;;;;;;;;;;;;;;ACPA;AACA;AAC+B;AACc;AACI;AAC1C;AACP,IAAI,4CAAS,WAAW,sDAAU,EAAE,0DAAa;AACjD;;;;;;;;;;;;;;;;;;ACPA;AACA;AAC+B;AACkB;AACI;AAC9C;AACP,IAAI,4CAAS,aAAa,0DAAY,EAAE,8DAAe;AACvD;;;;;;;;;;;;;;;ACPO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;;;;;;;;;;;;;;;AC9kDA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA,mBAAmB,uBAAuB;AAC1C,mBAAmB,sBAAsB;AACzC,mBAAmB,sBAAsB;AACzC,mBAAmB,uBAAuB;AAC1C,mBAAmB,wBAAwB;AAC3C,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,2BAA2B,uBAAuB;AAClD,yBAAyB,aAAa;AACtC,aAAa;AACb;AACA,2BAA2B,cAAc;AACzC,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;;;;;;;;;;;;;;;AChjBO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;;;;;;;;;;;;;;;AC91BO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC91BA;AACA;AAC+B;AACkB;AACY;AACR;AAC9C;AACP;AACA;AACA,yBAAyB,8DAAc;AACvC,gBAAgB,iCAAiC;AACjD,QAAQ,4CAAS;AACjB;AACA;AACA;AACA,QAAQ,sEAA0B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,yBAAyB,sEAAkB;AAC3C,gBAAgB,iCAAiC;AACjD,QAAQ,4CAAS;AACjB;AACA;AACA;AACA,QAAQ,sEAA0B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACnDA;AACA;AAC8B;AACA;AACQ;AACc;AACpB;AACkB;AAChB;AACU;AACM;AACW;AAC7B;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+CAAQ;AACtC;AACA;AACA;AACA;AACA,iDAAiD,sBAAsB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,0BAA0B;AACtE;AACA,YAAY,kDAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,8CAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,gDAAgD,qCAAqC,0DAAqB,oBAAoB;AAC9H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,sBAAsB,IAAI;AAClE;AACA,0CAA0C,6DAAe;AACzD,6BAA6B,qDAAW;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,kCAAkC,cAAc,4DAAuB,kCAAkC;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kDAAe;AACnC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,8BAA8B,uCAAuC,SAAS,wCAAwC,OAAO,6BAA6B;AAC1J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,eAAe;AACjD,+EAA+E,kBAAkB;AACjG;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA,0BAA0B,0CAAK,CAAC,mDAAc,UAAU,oDAAe;AACvE;AACA,0CAA0C,wDAAqB;AAC/D;AACA;AACA,wCAAwC,kCAAkC;AAC1E,6CAA6C,yCAAyC;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA,8BAA8B,0CAAK,CAAC,mDAAc,UAAU,oDAAe;AAC3E;AACA,6BAA6B,0CAAK,CAAC,mDAAc,UAAU,oDAAe;AAC1E;AACA,uCAAuC,wDAAqB;AAC5D;AACA;AACA,4CAA4C,+BAA+B;AAC3E;AACA,2DAA2D,+BAA+B;AAC1F;AACA;AACA;AACA;AACA;AACA,YAAY,2DAAc;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uDAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uDAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,4DAAuB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA,gBAAgB,qCAAqC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA,oCAAoC,sDAAiB;AACrD,0BAA0B,+CAAY;AACtC;AACA,yCAAyC,mDAAY;AACrD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,+CAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA,2CAA2C,6DAAe;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,qDAAW;AACzE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA,gBAAgB,qCAAqC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,gBAAgB,8CAA8C;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,8CAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAuB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uBAAuB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,yCAAyC;AAClF;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,oBAAoB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,6BAA6B;AACrE;AACA,2EAA2E,wDAAoB;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACr2BA;AACA;AACA;AACA;AACA;AACuC;AACD;AACtC;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,oCAAoC,EAAE,IAAI,EAAE;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,eAAe,GAAG,iBAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACnNA;AACA;AACA;AACA;AACqD;AACG;AACtB;AACc;AACT;AACD;AAC/B,6BAA6B,+CAAQ;AAC5C;AACA;AACA;AACA;AACA,wBAAwB,6DAAsB,EAAE;AAChD;AACA;AACA,2BAA2B;AAC3B,2BAA2B;AAC3B;AACA;AACA;AACA,eAAe,+DAAuB;AACtC;AACA;AACA;AACA,gBAAgB,0BAA0B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA,kCAAkC,gEAAoB;AACtD;AACA,iCAAiC,6DAAsB;AACvD,oDAAoD,+DAA0B;AAC9E;AACA,iCAAiC,6DAAsB;AACvD,gDAAgD,+DAA0B;AAC1E;AACA;AACA,gCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA,oBAAoB,uCAAuC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6DAAsB;AAC9C;AACA,mDAAmD;AACnD;AACA;AACA,6BAA6B,8DAAuB;AACpD;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,aAAa,IAAI;AAC5C;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,8DAAuB;AACxC;AACA;AACA;AACA,iBAAiB,8DAAuB;AACxC;AACA;AACA;AACA,iBAAiB,6DAAsB;AACvC;AACA;AACA,iBAAiB,8DAAuB;AACxC;AACA;AACA;AACA,0BAA0B,+CAAY,oCAAoC,eAAe;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kDAAe;AAC3B;AACA,YAAY,kDAAe;AAC3B,WAAW,mDAAgB;AAC3B;;;;;;;;;;;;;;;;;;ACnKA;AACA;AACA;AACgD;AACK;AACf;AACtC;AACO,wBAAwB,yDAAa;AAC5C;AACA,eAAe,0DAAkB;AACjC;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA,gBAAgB,wDAAY;AAC5B;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AC7DA;AACA;AAC4C;AACsB;AAC9B;AACF;AACK;AACQ;AACxC;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,kCAAkC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,KAAK,GAAG,SAAS;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,mEAA8B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,oBAAoB,6CAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qDAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sDAAc;AAC7B;AACA;AACA,uCAAuC,SAAS,EAAE,KAAK,EAAE,IAAI;AAC7D,wCAAwC,SAAS,EAAE,IAAI;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS,GAAG,KAAK,GAAG,IAAI;AACxE;AACA,sDAAsD,MAAM;AAC5D,gDAAgD,SAAS,GAAG,IAAI;AAChE;AACA;AACA;AACA;AACA,QAAQ,8CAAO;AACf;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA,yBAAyB;AACzB;AACA,kBAAkB,+CAAY,sBAAsB,MAAM;AAC1D;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA,sBAAsB,+CAAY,sBAAsB,MAAM;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,2EAAsB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qDAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qDAAW;AACnC;AACA;AACA,eAAe,8CAAO,oCAAoC,WAAW;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACxYA;AAC8B;AACS;AAChC,wBAAwB,uCAAI;AACnC;AACA;AACA,uCAAuC,6BAA6B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0DAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACxDA;AACwC;AACV;AACI;AACK;AACD;AAC/B,wBAAwB,iDAAS;AACxC;AACA,8BAA8B,kBAAkB,+DAA0B,6DAA6D;AACvI;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0DAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,8CAAW,2BAA2B,8CAAW;AACxE;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,+DAA0B;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,4CAAS;AACpD;AACA;AACA,gEAAgE,4CAAS;AACzE,qCAAqC,uDAAkB;AACvD;AACA;AACA;AACA,mDAAmD,0CAAO;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;AC1IA;AACA;AACA;AACA;AACA;AACA;AAC8B;AACU;AACF;AACE;AACF;AACJ;AACA;AACkB;AACvB;AACG;AAChC;AACA;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACO,6BAA6B,+CAAQ;AAC5C;AACA;AACA;AACA;AACA,wBAAwB,6DAAsB;AAC9C;AACA;AACA;AACA;AACA,yBAAyB,yCAAK;AAC9B;AACA;AACA,wBAAwB,sDAAiB;AACzC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAuB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6BAA6B;AACrD;AACA;AACA,iCAAiC,uDAAW;AAC5C;AACA;AACA;AACA,gCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;AACA,8BAA8B,yCAAyC;AACvE;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA,0GAA0G,oEAA4B;AACtI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iDAAS;AAC1C;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uCAAI;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,oEAA4B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uDAAW;AAC5C,4CAA4C,+CAAQ,GAAG,2CAAM;AAC7D;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AChJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC8B;AACM;AACG;AAChC,2BAA2B,6CAAO;AACzC;AACA,eAAe,6DAAqB;AACpC;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA,2BAA2B,kDAAe,CAAC,GAAG;AAC9C;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3BA;AACA;AAC6B;AACA;AACE;AACL;AACH;AACA;AACO;AACW;AACT;AACF;AACP;AACI;AACC;AACJ;AACF;AACM;AACF;AACA;AACH;AACA;AACvB;AAC4B;AACD;AACM;AACL;AACJ;AACI;AACA;AACK;AACF;AACF;AACE;AACF;AACF;AACO;AACC;AACX;AACD;AACI;AACI;AACJ;AACG;AACL;AACM;AACJ;AACK;AACL;AACE;AACL;AACO;AACE;AACF;AACH;AACI;AACJ;AACM;AACH;AACF;AACD;AACD;AACE;AACN;AACS;AACD;AACL;AACG;AACJ;AACzB;AAC0B;AACC;AACA;AACF;AACK;AACC;AACC;AACL;AACA;AACG;AACC;AACC;AACF;AACJ;AACD;AACA;AACG;AACL;AACvB;AACsB;AACI;AACO;AACT;AACF;;;;;;;;;;;;;;;;;AC7FtB;AACA;AACA;AACA;AACA;AACgC;AACM;AAC/B;AACP;AACA,yBAAyB,yCAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,oDAAgB;AAClD;AACA,sBAAsB,+CAAY,0CAA0C,SAAS;AACrF;AACA,uFAAuF,oDAAgB;AACvG;AACA;AACA;AACA,6BAA6B,sDAAkB;AAC/C,wBAAwB,IAAI,sDAAkB,EAAE;AAChD,+CAA+C,sDAAkB;AACjE,6BAA6B,+CAAW;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACgC;AACuC;AACrC;AACK;AACN;AAC1B,2BAA2B,yDAAa;AAC/C;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAA2B;AACpD,kCAAkC;AAClC;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,eAAe,6DAAqB;AACpC;AACA;AACA;AACA;AACA;AACA,6BAA6B,2DAAsB;AACnD,0BAA0B,yCAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,wDAAmB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,cAAc;AACtC;AACA;AACA;AACA;AACA;AACA,6BAA6B,2BAA2B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,uBAAuB,wDAAmB,CAAC,8CAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,qEAAyB;AACrE;AACA;AACA;AACA;AACA,4BAA4B,yBAAyB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;;;;;;;;;;;;;;;;;;ACnSA;AACA;AAC8C;AAChB;AACS;AAChC,yBAAyB,uCAAI;AACpC;AACA,gBAAgB,eAAe;AAC/B,gCAAgC,uDAAY;AAC5C;AACA;AACA;AACA;AACA,eAAe,2DAAmB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AClCA;AACA;AACoC;AACG;AACQ;AACxC;AACP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,uBAAuB,6CAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8CAAO,sCAAsC,UAAU;AAC/D,eAAe,8CAAO,oCAAoC,UAAU;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,+CAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD,SAAS;AACT;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1LA;AACA;AACA;AACA;AACA;AACA;AAC0C;AACA;AACI;AAChB;AACc;AAChB;AACsB;AACA;AACJ;AACR;AACM;AACJ;AACM;AACX;AACI;AACI;AACP;AACpC;AACA;AACA;AACA;AACA,QAAQ,2CAAG;AACX;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,yDAAgB,SAAS,2DAAkB;AACnD,QAAQ,6DAAkB,SAAS,6DAAoB;AACvD,QAAQ,4CAAU,SAAS,qDAAY;AACvC,QAAQ,kEAAqB,SAAS,gEAAuB;AAC7D,QAAQ,0DAAiB,SAAS,4DAAmB;AACrD,QAAQ,oDAAa,SAAS,wDAAe;AAC7C,QAAQ,kEAAqB,SAAS,gEAAuB;AAC7D,QAAQ,8DAAmB,SAAS,8DAAqB;AACzD,QAAQ,+DAAmB,SAAS,8DAAqB;AACzD,QAAQ,8DAAmB,SAAS,8DAAqB;AACzD,QAAQ,sDAAe,SAAS,0DAAiB;AACjD,QAAQ,0DAAiB,SAAS,4DAAmB;AACrD,QAAQ,4DAAkB,SAAS,6DAAoB;AACvD,QAAQ,8CAAW,SAAS,sDAAa;AACzC,QAAQ,qDAAc,SAAS,yDAAgB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAoB,iBAAiB,2DAAkB;AAC/D;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACpIA;AACA;AACA;AACA;AACoC;AACJ;AACM;AACkB;AACtB;AACc;AACE;AACjB;AACjC;AACA;AACA;AACA,6BAA6B,+CAAQ,GAAG,+BAA+B;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,+BAA+B,6CAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAuB;AACjD,8CAA8C,yJAAyJ,+DAA0B,kDAAkD,+DAA0B,2EAA2E;AACxX;AACA;AACA;AACA;AACA,eAAe,iEAAyB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC,YAAY,qDAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,uEAA2B;AAC3E,yCAAyC,qDAAS;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yDAAa;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC7LA;AACA;AACsC;AACtC;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,wBAAwB;AAC9C,kBAAkB,yBAAyB;AAC3C,kBAAkB,wBAAwB;AAC1C,kBAAkB,yBAAyB;AAC3C,kBAAkB,wBAAwB;AAC1C,kBAAkB,wBAAwB;AAC1C,oBAAoB,yBAAyB;AAC7C,kBAAkB,wBAAwB;AAC1C,kBAAkB,yBAAyB;AAC3C,kBAAkB,wBAAwB;AAC1C,kBAAkB,yBAAyB;AAC3C,kBAAkB,wBAAwB;AAC1C,sBAAsB,wBAAwB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,2BAA2B;AAC5C,kBAAkB,2BAA2B;AAC7C,oBAAoB,2BAA2B;AAC/C,qBAAqB,2BAA2B;AAChD,kBAAkB,4BAA4B;AAC9C,mBAAmB,4BAA4B;AAC/C,iBAAiB,2BAA2B;AAC5C,kBAAkB,2BAA2B;AAC7C,oBAAoB,2BAA2B;AAC/C,qBAAqB,2BAA2B;AAChD,kBAAkB,2BAA2B;AAC7C,mBAAmB,2BAA2B;AAC9C,iBAAiB,2BAA2B;AAC5C,kBAAkB,2BAA2B;AAC7C,oBAAoB,2BAA2B;AAC/C,qBAAqB,2BAA2B;AAChD,kBAAkB,2BAA2B;AAC7C,mBAAmB,2BAA2B;AAC9C,iBAAiB,2BAA2B;AAC5C,kBAAkB,2BAA2B;AAC7C,oBAAoB,2BAA2B;AAC/C,qBAAqB,2BAA2B;AAChD,kBAAkB,2BAA2B;AAC7C,mBAAmB,2BAA2B;AAC9C,iBAAiB,2BAA2B;AAC5C,kBAAkB,2BAA2B;AAC7C,oBAAoB,2BAA2B;AAC/C,qBAAqB,2BAA2B;AAChD,kBAAkB,2BAA2B;AAC7C,mBAAmB,2BAA2B;AAC9C,iBAAiB,2BAA2B;AAC5C,kBAAkB,2BAA2B;AAC7C,oBAAoB,4BAA4B;AAChD,qBAAqB,4BAA4B;AACjD,kBAAkB,2BAA2B;AAC7C,mBAAmB,2BAA2B;AAC9C,iBAAiB,4BAA4B;AAC7C,kBAAkB,4BAA4B;AAC9C,oBAAoB,2BAA2B;AAC/C,qBAAqB,2BAA2B;AAChD,kBAAkB,4BAA4B;AAC9C,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,iCAAiC,UAAU;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,uCAAuC,WAAW;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,2CAA2C,eAAe;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,wCAAwC,UAAU;AACpF;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,4CAA4C,cAAc;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,uCAAuC,UAAU;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+CAAY,uCAAuC,KAAK,IAAI,UAAU;AAChG;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,uCAAuC,KAAK,IAAI,UAAU;AAC5F;AACA;AACA;AACA,4BAA4B,eAAe;AAC3C;AACA;AACA;AACA;AACA,6BAA6B,eAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,uCAAuC,UAAU;AACnF;AACA;AACA,sBAAsB,+CAAY,mCAAmC,MAAM,IAAI,MAAM;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AClXA;AACA;AAC8B;AACY;AACR;AACI;AACC;AACQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,mBAAmB,+CAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,wDAAwD,2BAA2B;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,yDAAoB;AACzC,wDAAwD,yDAAoB;AAC5E;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,sCAAsC;AACtC,uCAAuC;AACvC,0BAA0B;AAC1B,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qDAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kDAAe;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D,QAAQ,uDAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,sDAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,oBAAoB,2DAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,UAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,4DAAuB;AACzC;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,4DAAuB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,+CAAY;AAC9B;AACA;AACA;AACA,kBAAkB,+CAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AC7eA;AACA;AAC4C;AACZ;AACF;AACA;AACI;AACK;AACa;AACpD;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,gEAA2B;AAC7C;AACA,qBAAqB,sDAAiB;AACtC;AACA,QAAQ,4DAAuB;AAC/B;AACA;AACA;AACA,cAAc,sDAAiB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAyB;AACjC;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,uBAAuB,uCAAI;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,0CAAO;AAClE;AACA;AACA;AACA,qBAAqB,yDAAoB;AACzC,QAAQ,8CAAO,6DAA6D,cAAc,cAAc,cAAc;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,6DAA6D,+DAA0B,EAAE;AACzF;AACA;AACA;AACA,eAAe,yDAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,6CAAU;AACrD,0BAA0B,4DAAuB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA,mBAAmB,qDAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,0CAAO;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gBAAgB,MAAM,mBAAmB,0CAAO,iBAAiB;AACnG;AACA;AACA;AACA;AACA;AACA,YAAY,qDAAiB;AAC7B,iEAAiE,eAAe,yBAAyB,eAAe;AACxH,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACnNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACwC;AACF;AACJ;AACK;AACP;AACzB,2BAA2B,+CAAQ;AAC1C;AACA;AACA;AACA,wBAAwB,6DAAsB;AAC9C;AACA;AACA;AACA,SAAS;AACT;AACA,6BAA6B,iDAAS;AACtC,yBAAyB,yCAAK;AAC9B;AACA;AACA,wBAAwB,sDAAiB;AACzC,SAAS;AACT;AACA;AACA;AACA,eAAe,6DAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACpEA;AACA;AACA;AACgC;AACM;AACR;AACI;AACU;AACM;AACE;AACpD;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,uBAAuB,+CAAQ;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yDAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,0CAA0C,UAAU;AACtF;AACA;AACA;AACA,yBAAyB,yCAAK;AAC9B,kCAAkC,mBAAmB;AACrD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA,eAAe,yDAAiB;AAChC;AACA;AACA,0BAA0B,4DAAuB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,6CAA6C;AAC7C;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,8CAAO;AAC5C,oFAAoF,8DAAuB;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,8DAAuB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAuB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,yCAAK,CAAC,2DAAsB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,yCAAK,CAAC,2DAAsB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,4CAAS;AACrC;AACA,YAAY,qDAAS;AACrB;AACA,gCAAgC,4CAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,4CAAS;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,oEAA0B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AClRA;AACA;AACA;AACgC;AACwB;AACtB;AACkB;AACpD;AACO,0BAA0B,+CAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,6DAAsB;AACpG,qBAAqB,4DAAuB;AAC5C,sBAAsB,4DAAuB;AAC7C;AACA;AACA,eAAe,4DAAoB;AACnC;AACA;AACA;AACA;AACA,4BAA4B,sBAAsB;AAClD,iDAAiD,4DAAqB;AACtE,iDAAiD,6DAAsB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA,wBAAwB,6DAAsB;AAC9C;AACA;AACA;AACA,wBAAwB,4DAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,4DAAuB;AAC5C,sBAAsB,4DAAuB;AAC7C,YAAY,uDAAW;AACvB,yBAAyB,4DAAuB;AAChD,0BAA0B,4DAAuB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,sBAAsB;AACjG;AACA;AACA,6BAA6B,8DAAuB;AACpD,YAAY,qDAAiB;AAC7B;AACA,aAAa;AACb;AACA,kCAAkC,6DAAsB;AACxD,YAAY,qDAAiB;AAC7B;AACA,aAAa;AACb;AACA;AACA;;;;;;;;;;;;;;;;ACxFA;AACA;AACA;AAC2C;AAC3C;AACA;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,cAAc;AACnE,kDAAkD,4BAA4B;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACnNA;AACA;AACoC;AACiB;AACrB;AACE;AACK;AACI;AAC3C;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yCAAK,2BAA2B,0BAA0B;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,2BAA2B,6CAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,6DAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAuB,gCAAgC,mCAAmC;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAuB,gCAAgC,mCAAmC;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAU;AACtB;AACA,YAAY,kDAAe;AAC3B,WAAW,mDAAgB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACtPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,2BAA2B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA,2BAA2B,yEAAyE;AACpG;AACA;AACA;AACA;AACA;AACA,oIAAoI;AACpI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACnHA;AACA;AACuC;AAChC;AACP;AACA,eAAe,8DAAsB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACtCA;AACA;AACgD;AACN;AACI;AACR;AACU;AACzC;AACP;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACO;AACP;AACA;AACA;AACA;AACA,CAAC,kDAAkD;AACnD;AACA;AACA;AACO;AACP;AACA,YAAY,2DAAe;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+CAAY,gDAAgD,aAAa;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,kDAAY;AACjC,8BAA8B,+CAAY;AAC1C;AACA;AACA;AACA,8BAA8B,+CAAY;AAC1C;AACA,+BAA+B,yDAAa;AAC5C;AACA;AACA,qBAAqB,+CAAS;AAC9B,8BAA8B,+CAAY;AAC1C;AACA,+BAA+B,mDAAU;AACzC;AACA;AACA,0BAA0B,+CAAY,8CAA8C,QAAQ;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC9HA;AACgC;AACQ;AACN;AACK;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,yBAAyB,iDAAS;AACzC;AACA,eAAe,2DAAmB;AAClC;AACA;AACA,yCAAyC,+CAA+C;AACxF;AACA,0BAA0B,yCAAK,YAAY,4DAAuB;AAClE;AACA,SAAS;AACT;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxBA;AACA;AAC4C;AACd;AACM;AACiB;AACP;AACQ;AACE;AACT;AACD;AACJ;AACF;AACH;AACH;AACc;AACE;AACZ;AACtC;AACA;AACA;AACA;AACA,KAAK,2DAAgB;AACrB,KAAK,gDAAa;AAClB,KAAK,gEAAqB;AAC1B,KAAK,mEAAsB;AAC3B;AACA;AACA,KAAK,mEAAsB;AAC3B,KAAK,gEAAqB;AAC1B,KAAK,2DAAgB;AACrB,KAAK,gDAAa;AAClB;AACO,oBAAoB,6CAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,uCAAuC,wHAAwH,gEAA0B,oHAAoH;AAC7S,wBAAwB;AACxB,wCAAwC;AACxC;AACA;AACA,6BAA6B,kDAAO,yBAAyB,6DAAkB,GAAG,2DAAgB;AAClG;AACA,gCAAgC,kDAAO,0BAA0B,6DAAkB,GAAG,2DAAgB;AACtG;AACA;AACA,eAAe,uDAAc;AAC7B;AACA;AACA;AACA;AACA,0BAA0B,6DAAuB;AACjD;AACA;AACA;AACA;AACA,0BAA0B,6DAAuB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4BAA4B;AACpD,4CAA4C,eAAe;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,iEAA2B;AAChE;AACA;AACA,0DAA0D,iEAA2B;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,qFAAqF,iEAA2B,EAAE;AACjJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA,sBAAsB,gDAAY;AAClC;AACA;AACA;AACA,8BAA8B,uEAA2B;AACzD;AACA;AACA;AACA,oDAAoD,uEAA2B;AAC/E;AACA;AACA;AACA;AACA,qCAAqC,mEAAwB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,wDAAU;AAC1C;AACA;AACA;AACA;AACA,gCAAgC,+CAAK;AACrC;AACA;AACA;AACA;AACA,iCAAiC,uDAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mDAAU;AAC1C;AACA;AACA;AACA,wCAAwC;AACxC,gCAAgC,kDAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qDAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,qEAAyB;AAC5D;AACA;AACA;AACA;AACA;AACA,gBAAgB,6BAA6B,EAAE,sDAAW;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mEAAwB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uEAA2B;AAClD;AACA,yBAAyB,qEAAyB;AAClD;AACA;AACA;AACA;AACA;AACA,kDAAkD,gDAAa;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,qEAAyB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uEAA2B;AAClD;AACA,0DAA0D,gEAAqB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,qEAAyB;AAC9E;AACA;AACA;AACA;AACA,uBAAuB,uEAA2B;AAClD;AACA,2DAA2D,mEAAsB;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,qEAAyB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uEAA2B;AAClD;AACA,6BAA6B,uDAAY;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,uEAA2B;AAC9E;AACA;AACA,8BAA8B,qEAAyB;AACvD;AACA;AACA,6BAA6B,uCAAI;AACjC;AACA;AACA;AACA,6CAA6C,qEAAyB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,0DAAa;AAC1C;AACA;AACA;AACA,uDAAuD,qEAAyB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,uEAA2B;AAC1E,+CAA+C,qEAAyB;AACxE;AACA;AACA,gEAAgE,mEAAwB;AACxF;AACA,0CAA0C,kDAAO,CAAC,6DAAkB;AACpE;AACA;AACA,0CAA0C,kDAAO,CAAC,2DAAgB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA,6BAA6B,sDAAS;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAY;AAClC;AACA;AACA,sBAAsB,gDAAY;AAClC;AACA;AACA,sBAAsB,gDAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAY;AAClC;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,kFAAkF;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,iDAAiD,uEAA2B,EAAE,yDAAgB;AAC9F;AACA,0CAA0C,mEAAwB;AAClE;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA,iDAAiD,uEAA2B,EAAE,yDAAgB;AAC9F;AACA,0CAA0C,mEAAwB;AAClE;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,iDAAiD,uEAA2B,EAAE,+DAAsB;AACpG;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA,iDAAiD,uEAA2B,EAAE,+DAAsB;AACpG;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,YAAY,kDAAe;AAC3B;AACA,YAAY,oDAAiB;AAC7B,WAAW,mDAAgB;AAC3B;;;;;;;;;;;;;;;;;;;ACrsBA;AACA;AACA;AACuE;AACrC;AACK;AAChC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kCAAkC;AAC5B,sBAAsB,yDAAa;AAC1C;AACA;AACA,yBAAyB,gEAA2B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAA2B;AACpD;AACA;AACA;AACA,eAAe,wDAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACjMA;AACA;AACoC;AACiB;AACrB;AACE;AACK;AACD;AACtC;AACA;AACA,kBAAkB,+CAAY;AAC9B;AACA;AACA,6BAA6B;AAC7B,+BAA+B;AAC/B;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,6BAA6B,6CAAO;AAC3C;AACA;AACA,yBAAyB,gEAA2B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAuB;AACtC;AACA;AACA;AACA,wBAAwB,2BAA2B,GAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,qCAAqC,wBAAwB;AAC7D,SAAS;AACT;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qDAAiB;AACjC,gBAAgB,qDAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+CAAY,qDAAqD,UAAU;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAU;AACtB;AACA,YAAY,oDAAiB;AAC7B,WAAW,mDAAgB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC9OA;AACA;AACA;AACA;AACA;AACA;AACA;AACoC;AACE;AACC;AACD;AAC/B,2BAA2B,6CAAO;AACzC;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA,wBAAwB,8DAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,6DAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,8DAAuB,iBAAiB,8DAAuB;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,8DAAuB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC/JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACoC;AACF;AACa;AACR;AACD;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,wBAAwB,6CAAO;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0DAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,mEAA8B;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,EAAE,uDAAiB;AACzD;AACA;AACA;AACA;AACA;AACA,8BAA8B,wDAAiB;;;;;;;;;;;;;;;;;;;ACjR/C;AACA;AACA;AACA;AACoC;AACG;AACN;AAC1B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AAChD,4BAA4B,6CAAO;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8DAAsB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC4C;AACN;AACA;AACR;AACkB;AACd;AACK;AACsB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA,iFAAiF,0CAAO;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,8CAAO;AACrC;AACA;AACA;AACA;AACA;AACO,wBAAwB,yDAAa;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,yDAAoB;AACzC,QAAQ,8CAAO,6DAA6D,cAAc,cAAc,cAAc;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,6DAA6D,+DAA0B;AACvF;AACA,6EAA6E;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oGAAoG,0CAAO;AAC3G;AACA;AACA;AACA;AACA;AACA,eAAe,0DAAkB;AACjC;AACA;AACA;AACA;AACA;AACA,eAAe,0CAAO;AACtB;AACA;AACA;AACA;AACA;AACA,eAAe,4CAAS;AACxB;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAuB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,4DAAuB;AACnD;AACA;AACA,iCAAiC,4DAAuB;AACxD;AACA;AACA,4BAA4B,4DAAuB;AACnD;AACA;AACA,iCAAiC,4DAAuB;AACxD;AACA;AACA;AACA,0DAA0D,oDAAY,2CAA2C,oDAAY;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uCAAI,GAAG,uBAAuB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,0CAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,WAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,+CAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,0CAAO,GAAG,4CAAS;AACzE;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,0BAA0B,yDAAoB;AAC9C;AACA,0BAA0B,+CAAY,qDAAqD,IAAI;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA,gBAAgB,2CAA2C;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,8DAAyB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,oBAAoB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qDAAW;AAC9B;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,6CAAU;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,8CAAO;AAC9B;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA,gBAAgB,4BAA4B,EAAE,wDAAiB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,0CAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,4CAAS;AACvF;AACA;AACA,kGAAkG,0CAAO;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,0CAAO;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB,kBAAkB,QAAQ;AAC1B,kBAAkB,QAAQ;AAC1B,kBAAkB,aAAa;AAC/B,kBAAkB,aAAa;AAC/B,kBAAkB,QAAQ;AAC1B;AACA,kBAAkB,QAAQ;AAC1B,kBAAkB,cAAc;AAChC;AACA,kBAAkB,cAAc;AAChC,kBAAkB,QAAQ;AAC1B,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yBAAyB,WAAW,IAAI;AACxD;AACA;AACA,iEAAiE,6CAAU;AAC3E;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA,gBAAgB,iKAAiK;AACjL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,4CAAS;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,mBAAmB;AACxF;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uCAAI;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA,+BAA+B,0CAAO;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACzjCA;AACA;AACqD;AACrB;AACgB;AACd;AACK;AAChC,yBAAyB,yDAAa;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2DAAmB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qDAAiB,sDAAsD,4DAAuB,+DAA+D,kBAAkB;AACvL;AACA;AACA;AACA;AACA,QAAQ,qDAAiB,sDAAsD,4DAAuB,iEAAiE,mBAAmB;AAC1L;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4DAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4DAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4DAAuB;AAC/C;AACA;AACA,wBAAwB,4DAAuB;AAC/C;AACA;AACA;AACA,wBAAwB,4DAAuB;AAC/C;AACA;AACA;AACA;AACA,YAAY,4DAAuB;AACnC;AACA,YAAY,qDAAiB,iCAAiC,kBAAkB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAU;AACtB;AACA,YAAY,kDAAe;AAC3B,WAAW,mDAAgB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACjKA;AACA;AACqD;AACL;AACT;AAChC,2BAA2B,yDAAa;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,6DAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kDAAe;AAC3B;AACA,YAAY,kDAAe;AAC3B,WAAW,mDAAgB;AAC3B;;;;;;;;;;;;;;;;;;;;AChEA;AACA;AACqD;AACrB;AACuC;AACrC;AACK;AAChC,yBAAyB,yDAAa;AAC7C;AACA;AACA;AACA,gCAAgC;AAChC;AACA,wBAAwB,uEAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2DAAmB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,oBAAoB,mCAAmC;AAC7G;AACA;AACA;AACA;AACA;AACA,yBAAyB,yDAAoB;AAC7C;AACA,YAAY,qDAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qDAAiB;AACrC;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,4BAA4B,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAU;AACtB;AACA,YAAY,kDAAe;AAC3B,WAAW,mDAAgB;AAC3B;;;;;;;;;;;;;;;;;;;;ACnGA;AACA;AACqD;AACkB;AACd;AAClB;AACD;AAC/B,wBAAwB,yDAAa;AAC5C,4CAA4C;AAC5C;AACA;AACA;AACA;AACA,uCAAuC,uCAAuC,oEAA6B,EAAE;AAC7G;AACA;AACA;AACA,eAAe,0DAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,sEAA0B;AAC3C,iBAAiB,uEAA2B;AAC5C;AACA,sCAAsC,sEAA0B;AAChE;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAA2B;AAC5C,iBAAiB,uEAA2B;AAC5C;AACA,mDAAmD,+DAAwB;AAC3E;AACA;AACA,wDAAwD,8DAAuB;AAC/E;AACA;AACA,sCAAsC,uEAA2B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAU;AACtB;AACA,YAAY,oDAAiB;AAC7B,WAAW,mDAAgB;AAC3B;;;;;;;;;;;;;;;;;;ACpFA;AACA;AACA;AACA;AACoC;AACG;AACD;AAC/B,uBAAuB,6CAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD;AACA;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,qCAAqC,EAAE,uDAAiB;;;;;;;;;;;;;;;;;;;ACjLxD;AACA;AACqD;AACL;AACT;AAChC;AACP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8BAA8B;AACxB,oBAAoB,yDAAa;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sDAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kDAAe;AAC3B;AACA,YAAY,kDAAe;AAC3B,WAAW,mDAAgB;AAC3B;;;;;;;;;;;;;;;;;;;ACtEA;AACA;AACA;AACA;AACA;AACoC;AACF;AACK;AACI;AAC3C;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACO,mBAAmB,6CAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qDAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sDAAiB;AAChC;AACA;AACA,eAAe,uDAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6GAA6G;AAC7G;AACA;AACA;AACA,kBAAkB,+CAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,4DAAuB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,mBAAmB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AClKA;AACA;AACA;AACA;AACA;AACgC;AACF;AACA;AACI;AACK;AACD;AAC/B,4BAA4B,uCAAI;AACvC;AACA;AACA;AACA;AACA,eAAe,8DAAsB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uCAAI;AAC7B;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA,yDAAyD,4CAAS;AAClE,4BAA4B,yCAAK,mDAAmD,UAAU;AAC9F;AACA;AACA;AACA;AACA,wCAAwC,4CAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,8DAAyB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA,wBAAwB,0CAAO;AAC/B,0BAA0B,0CAAO,kBAAkB,4CAAS;AAC5D,sBAAsB,+CAAY,2CAA2C,UAAU;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,4DAAuB,iCAAiC,gBAAgB;AACpG;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,4CAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,0CAAO;AACtD;AACA;AACA;AACA;AACA;AACA,gDAAgD,8CAAW;AAC3D;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uCAAI;AAC7B;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AC/NA;AACA;AACA;AACA;AACA;AACqD;AACG;AAClB;AACR;AACI;AACmC;AAC/B;AAC/B,2BAA2B,+CAAQ;AAC1C;AACA;AACA;AACA,wBAAwB,8DAAuB,EAAE;AACjD;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,2BAA2B;AAC3B,4BAA4B;AAC5B,mBAAmB,gEAAyB,EAAE;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,6DAAqB;AACpC;AACA;AACA;AACA,eAAe,4DAAuB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA,iBAAiB,uDAAW;AAC5B,0BAA0B,+CAAY;AACtC;AACA;AACA;AACA;AACA,2DAA2D,+DAA0B;AACrF;AACA,4BAA4B,6DAAsB;AAClD;AACA;AACA;AACA,iCAAiC,6DAAsB;AACvD;AACA;AACA;AACA;AACA;AACA,gCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6DAAsB;AAC9C;AACA,oDAAoD;AACpD;AACA;AACA,6BAA6B,8DAAuB;AACpD;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gEAAyB,WAAW,gEAAyB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,0CAAO;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,8DAAuB;AACxC;AACA;AACA;AACA,2DAA2D,0CAAO;AAClE;AACA;AACA,mGAAmG,+DAA0B;AAC7H;AACA;AACA,iBAAiB,8DAAuB;AACxC;AACA;AACA;AACA,2DAA2D,4CAAS;AACpE;AACA;AACA,mGAAmG,+DAA0B;AAC7H;AACA;AACA,iBAAiB,6DAAsB;AACvC;AACA;AACA,iBAAiB,8DAAuB;AACxC;AACA;AACA;AACA,0BAA0B,+CAAY,oCAAoC,eAAe;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2DAAe;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAuB;AACvC;AACA;AACA,gBAAgB,8DAAuB;AACvC;AACA;AACA;AACA;AACA,qBAAqB,8DAAuB;AAC5C;AACA;AACA,oBAAoB,8DAAuB;AAC3C;AACA,qBAAqB,gEAAyB;AAC9C;AACA;AACA,oBAAoB,8DAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kDAAe;AAC3B,UAAU,4CAAS;AACnB,YAAY,kDAAe;AAC3B,WAAW,mDAAgB;AAC3B;;;;;;;;;;;;;;;;;;;;ACxPA;AACA;AACA;AACA;AACA;AACqD;AACrB;AACM;AACiC;AACjC;AAC/B,qBAAqB,+CAAQ;AACpC;AACA;AACA,uCAAuC,kBAAkB;AACzD;AACA;AACA;AACA;AACA,wBAAwB,6DAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uDAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uDAAW;AAC3B;AACA,wBAAwB,OAAO;AAC/B;AACA,yBAAyB;AACzB;AACA,qBAAqB,qDAAS;AAC9B;AACA,wBAAwB,cAAc;AACtC,yBAAyB;AACzB;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA,SAAS;AACT;AACA;AACA,oDAAoD,eAAe;AACnE;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA,gBAAgB,kDAAM;AACtB;AACA;AACA;AACA,gCAAgC,eAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uDAAW;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uDAAW;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,0BAA0B,+CAAY,mCAAmC,WAAW;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uDAAW;AAC3B,mCAAmC,WAAW;AAC9C,oBAAoB,qDAAiB;AACrC;AACA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C,oBAAoB,qDAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA,QAAQ,qDAAiB;AACzB,gCAAgC,MAAM,GAAG,WAAW;AACpD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAU;AACtB,UAAU,4CAAS;AACnB,YAAY,kDAAe;AAC3B,WAAW,mDAAgB;AAC3B;;;;;;;;;;;;;;;;;;ACvNA;AACA;AACA;AACqD;AACL;AACc;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACO,yBAAyB,yDAAa;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,2BAA2B,kDAAe;AAC1C,yBAAyB,4CAAS;AAClC,2BAA2B,oDAAiB;AAC5C,0BAA0B,mDAAgB;AAC1C;AACA,qCAAqC,SAAS,cAAc;AAC5D,0CAA0C,iFAAiF;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,6CAAM;AAC9C;AACA,qCAAqC,6CAAM;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF;AACnF,wDAAwD,qBAAqB;AAC7E;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,mDAAmD;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,qDAAc;AAC3C,2BAA2B,qDAAc;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,IAAI,EAAE,IAAI,GAAG,QAAQ,EAAE,QAAQ,QAAQ,IAAI,EAAE,IAAI;AAC9E,6BAA6B,QAAQ,EAAE,QAAQ,QAAQ,IAAI,EAAE,GAAG;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,IAAI,EAAE,IAAI,GAAG,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,eAAe,KAAK,SAAS;AACvE;AACA;AACA;AACA;AACA,uDAAuD,sBAAsB,gBAAgB;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,sBAAsB,4DAA4D;AAC3I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,sBAAsB;AAC/E,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,gDAAa;AACtC,6BAA6B,mDAAgB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACngBA;AACA;AAC4C;AACR;AACI;AACV;AACE;AACO;AACD;AACtC;AACA;AACA;AACA;AACA;AACO,qBAAqB,6CAAO;AACnC,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA,eAAe,uDAAe;AAC9B;AACA;AACA,2BAA2B;AAC3B;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA,qDAAqD,iLAAiL,cAAc,yBAAyB,YAAY,mDAAmD,0BAA0B;AACtW;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,yDAAyD,EAAE;AACpF;AACA;AACA;AACA,yBAAyB;AACzB,yDAAyD,WAAW;AACpE,iDAAiD,aAAa;AAC9D,UAAU,EAAE;AACZ;AACA;AACA;AACA,6CAA6C,iBAAiB;AAC9D,gGAAgG,wFAAwF;AACxL,gDAAgD;AAChD;AACA,2FAA2F,aAAa,uBAAuB;AAC/H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iDAAS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,0BAA0B;AACpE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,mDAAmD,sDAAkB;AACrE,aAAa;AACb;AACA;AACA;AACA;AACA,mEAAmE,wDAAoB;AACvF;AACA;AACA;AACA,wBAAwB,mCAAmC;AAC3D;AACA;AACA;AACA;AACA;AACA,+BAA+B,qDAAW;AAC1C,QAAQ,4DAAwB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA,YAAY,+DAAuB;AACnC;AACA;AACA,yDAAyD,mDAAgB;AACzE,SAAS;AACT;AACA;;;;;;;;;;;;;;;;;;ACnJA;AACsC;AACN;AACM;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ;AACjB,UAAU,QAAQ;AAClB,SAAS,kBAAkB;AAC3B,UAAU,kBAAkB;AAC5B,UAAU,kBAAkB;AAC5B,UAAU,kBAAkB;AAC5B,UAAU,kBAAkB;AAC5B,UAAU,kBAAkB;AAC5B,UAAU,kBAAkB;AAC5B,UAAU,kBAAkB;AAC5B,UAAU,kBAAkB;AAC5B,WAAW,kBAAkB;AAC7B,UAAU,kBAAkB;AAC5B,WAAW,kBAAkB;AAC7B,UAAU,kBAAkB;AAC5B,WAAW,kBAAkB;AAC7B,SAAS,kBAAkB;AAC3B,UAAU,kBAAkB;AAC5B,SAAS,kBAAkB;AAC3B,UAAU,kBAAkB;AAC5B,SAAS,kBAAkB;AAC3B,aAAa,kBAAkB;AAC/B,SAAS,kBAAkB;AAC3B,aAAa,kBAAkB;AAC/B,SAAS,kBAAkB;AAC3B,aAAa,kBAAkB;AAC/B,YAAY,kBAAkB;AAC9B,aAAa,kBAAkB;AAC/B,YAAY,kBAAkB;AAC9B,aAAa,kBAAkB;AAC/B;AACA;AACA,cAAc,eAAe;AAC7B,YAAY,eAAe;AAC3B,aAAa,eAAe;AAC5B,YAAY,eAAe;AAC3B,eAAe,eAAe;AAC9B,kBAAkB,eAAe;AACjC,uBAAuB,eAAe;AACtC,oBAAoB,eAAe;AACnC,oBAAoB,eAAe;AACnC,eAAe,eAAe;AAC9B,cAAc,gBAAgB;AAC9B;AACA;AACA,SAAS,sBAAsB;AAC/B,UAAU,uCAAuC;AACjD,YAAY,uCAAuC;AACnD,aAAa,wCAAwC;AACrD,UAAU,wCAAwC;AAClD,WAAW,yCAAyC;AACpD,SAAS,sBAAsB;AAC/B,UAAU,uCAAuC;AACjD,YAAY,uCAAuC;AACnD,aAAa,wCAAwC;AACrD,UAAU,uCAAuC;AACjD,WAAW,wCAAwC;AACnD,SAAS,sBAAsB;AAC/B,UAAU,uCAAuC;AACjD,YAAY,uCAAuC;AACnD,aAAa,wCAAwC;AACrD,UAAU,uCAAuC;AACjD,WAAW,wCAAwC;AACnD,SAAS,sBAAsB;AAC/B,UAAU,uCAAuC;AACjD,YAAY,uCAAuC;AACnD,aAAa,wCAAwC;AACrD,UAAU,uCAAuC;AACjD,WAAW,wCAAwC;AACnD,SAAS,sBAAsB;AAC/B,UAAU,uCAAuC;AACjD,YAAY,uCAAuC;AACnD,aAAa,wCAAwC;AACrD,UAAU,uCAAuC;AACjD,WAAW,wCAAwC;AACnD,SAAS,sBAAsB;AAC/B,UAAU,uCAAuC;AACjD,YAAY,wCAAwC;AACpD,aAAa,yCAAyC;AACtD,UAAU,uCAAuC;AACjD,WAAW,wCAAwC;AACnD,SAAS,uBAAuB;AAChC,UAAU,wCAAwC;AAClD,YAAY,wCAAwC;AACpD,aAAa,yCAAyC;AACtD,UAAU,wCAAwC;AAClD,WAAW,wCAAwC;AACnD,SAAS,sBAAsB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,SAAS,cAAc;AACvB,SAAS,cAAc;AACvB,SAAS,kBAAkB;AAC3B,SAAS,eAAe;AACxB,SAAS,eAAe;AACxB,SAAS,eAAe;AACxB,SAAS,iBAAiB;AAC1B,SAAS,WAAW;AACpB,UAAU,iBAAiB;AAC3B,UAAU,kBAAkB;AAC5B,UAAU,iBAAiB;AAC3B,UAAU,0BAA0B;AACpC,UAAU,gBAAgB;AAC1B,UAAU,qBAAqB;AAC/B,UAAU,uBAAuB;AACjC;AACA;AACA,WAAW,0DAA0D;AACrE,YAAY,gEAAgE;AAC5E,SAAS,yDAAyD;AAClE,UAAU,+DAA+D;AACzE,SAAS,4DAA4D;AACrE,MAAM,KAAK,+DAA+D;AAC1E,MAAM,KAAK,gEAAgE;AAC3E,UAAU,oFAAoF;AAC9F,SAAS,wEAAwE;AACjF,YAAY,gFAAgF;AAC5F,WAAW,0EAA0E;AACrF,YAAY,uEAAuE;AACnF,UAAU,+DAA+D;AACzE,WAAW,sEAAsE;AACjF,SAAS,yDAAyD;AAClE,SAAS,0DAA0D;AACnE,WAAW,mEAAmE;AAC9E,aAAa,mEAAmE;AAChF,YAAY,mEAAmE;AAC/E,YAAY,mEAAmE;AAC/E,+BAA+B,kEAAkE;AACjG,iCAAiC,oEAAoE;AACrG,2BAA2B,8DAA8D;AACzF,6BAA6B,gEAAgE;AAC7F,2BAA2B,8DAA8D;AACzF,6BAA6B,gEAAgE;AAC7F,kCAAkC,qEAAqE;AACvG,oCAAoC,uEAAuE;AAC3G,mCAAmC,sEAAsE;AACzG,qCAAqC,wEAAwE;AAC7G,mCAAmC,sEAAsE;AACzG,qCAAqC,wEAAwE;AAC7G,kCAAkC,qEAAqE;AACvG,oCAAoC,uEAAuE;AAC3G,kCAAkC,qEAAqE;AACvG,oCAAoC,uEAAuE;AAC3G,+BAA+B,kEAAkE;AACjG,4BAA4B,+DAA+D;AAC3F,8BAA8B,iEAAiE;AAC/F,2BAA2B,8DAA8D;AACzF,8BAA8B,iEAAiE;AAC/F,2BAA2B,8DAA8D;AACzF,gCAAgC,mEAAmE;AACnG,6BAA6B,gEAAgE;AAC7F,wBAAwB,2DAA2D;AACnF,uBAAuB,0DAA0D;AACjF,8BAA8B,iEAAiE;AAC/F,+BAA+B,kEAAkE;AACjG,4BAA4B,+DAA+D;AAC3F,6BAA6B,gEAAgE;AAC7F,4BAA4B,+DAA+D;AAC3F,6BAA6B,gEAAgE;AAC7F,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,qCAAqC,wEAAwE;AAC7G,kCAAkC,qEAAqE;AACvG,oCAAoC,uEAAuE;AAC3G,iCAAiC,oEAAoE;AACrG,oCAAoC,uEAAuE;AAC3G,iCAAiC,oEAAoE;AACrG,sCAAsC,yEAAyE;AAC/G,mCAAmC,sEAAsE;AACzG,8BAA8B,iEAAiE;AAC/F,6BAA6B,gEAAgE;AAC7F,gCAAgC,mEAAmE;AACnG,kCAAkC,qEAAqE;AACvG,4BAA4B,+DAA+D;AAC3F,8BAA8B,iEAAiE;AAC/F,4BAA4B,+DAA+D;AAC3F,8BAA8B,iEAAiE;AAC/F,8BAA8B,iEAAiE;AAC/F,gCAAgC,mEAAmE;AACnG,oCAAoC,uEAAuE;AAC3G,sCAAsC,yEAAyE;AAC/G,iCAAiC,oEAAoE;AACrG,8BAA8B,iEAAiE;AAC/F,iCAAiC,oEAAoE;AACrG,8BAA8B,iEAAiE;AAC/F,+BAA+B,kEAAkE;AACjG,4BAA4B,+DAA+D;AAC3F,+BAA+B,kEAAkE;AACjG,4BAA4B,+DAA+D;AAC3F,iCAAiC,oEAAoE;AACrG,8BAA8B,iEAAiE;AAC/F,+BAA+B,kEAAkE;AACjG,gCAAgC,mEAAmE;AACnG,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,+BAA+B,kEAAkE;AACjG,gCAAgC,mEAAmE;AACnG,+BAA+B,kEAAkE;AACjG,gCAAgC,mEAAmE;AACnG,uCAAuC,0EAA0E;AACjH,oCAAoC,uEAAuE;AAC3G,uCAAuC,0EAA0E;AACjH,oCAAoC,uEAAuE;AAC3G,qCAAqC,wEAAwE;AAC7G,kCAAkC,qEAAqE;AACvG,qCAAqC,wEAAwE;AAC7G,kCAAkC,qEAAqE;AACvG,uCAAuC,0EAA0E;AACjH,oCAAoC,uEAAuE;AAC3G,4BAA4B,+DAA+D;AAC3F,8BAA8B,iEAAiE;AAC/F,8BAA8B,iEAAiE;AAC/F,gCAAgC,mEAAmE;AACnG,oCAAoC,uEAAuE;AAC3G,sCAAsC,yEAAyE;AAC/G,iCAAiC,oEAAoE;AACrG,8BAA8B,iEAAiE;AAC/F,iCAAiC,oEAAoE;AACrG,8BAA8B,iEAAiE;AAC/F,+BAA+B,kEAAkE;AACjG,4BAA4B,+DAA+D;AAC3F,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,+BAA+B,kEAAkE;AACjG,gCAAgC,mEAAmE;AACnG,+BAA+B,kEAAkE;AACjG,gCAAgC,mEAAmE;AACnG,uCAAuC,0EAA0E;AACjH,oCAAoC,uEAAuE;AAC3G,uCAAuC,0EAA0E;AACjH,oCAAoC,uEAAuE;AAC3G,qCAAqC,wEAAwE;AAC7G,kCAAkC,qEAAqE;AACvG,8BAA8B,iEAAiE;AAC/F,gCAAgC,mEAAmE;AACnG,8BAA8B,iEAAiE;AAC/F,gCAAgC,mEAAmE;AACnG,6BAA6B,gEAAgE;AAC7F,+BAA+B,kEAAkE;AACjG,+BAA+B,kEAAkE;AACjG,iCAAiC,oEAAoE;AACrG,4BAA4B,+DAA+D;AAC3F,8BAA8B,iEAAiE;AAC/F,8BAA8B,iEAAiE;AAC/F,gCAAgC,mEAAmE;AACnG,kCAAkC,qEAAqE;AACvG,oCAAoC,uEAAuE;AAC3G,kCAAkC,qEAAqE;AACvG,oCAAoC,uEAAuE;AAC3G,qCAAqC,wEAAwE;AAC7G,uCAAuC,0EAA0E;AACjH,sCAAsC,yEAAyE;AAC/G,wCAAwC,2EAA2E;AACnH,mCAAmC,sEAAsE;AACzG,qCAAqC,wEAAwE;AAC7G,qCAAqC,wEAAwE;AAC7G,uCAAuC,0EAA0E;AACjH,kCAAkC,qEAAqE;AACvG,oCAAoC,uEAAuE;AAC3G,qCAAqC,wEAAwE;AAC7G,uCAAuC,0EAA0E;AACjH,oCAAoC,uEAAuE;AAC3G,sCAAsC,yEAAyE;AAC/G,+BAA+B,kEAAkE;AACjG,4BAA4B,+DAA+D;AAC3F,+BAA+B,kEAAkE;AACjG,4BAA4B,+DAA+D;AAC3F,iCAAiC,oEAAoE;AACrG,8BAA8B,iEAAiE;AAC/F,+BAA+B,kEAAkE;AACjG,4BAA4B,+DAA+D;AAC3F,kCAAkC,qEAAqE;AACvG,+BAA+B,kEAAkE;AACjG,gCAAgC,mEAAmE;AACnG,6BAA6B,gEAAgE;AAC7F,+BAA+B,kEAAkE;AACjG,4BAA4B,+DAA+D;AAC3F,+BAA+B,kEAAkE;AACjG,4BAA4B,+DAA+D;AAC3F,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,8BAA8B,iEAAiE;AAC/F,+BAA+B,kEAAkE;AACjG,gCAAgC,mEAAmE;AACnG,iCAAiC,oEAAoE;AACrG,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,+BAA+B,kEAAkE;AACjG,gCAAgC,mEAAmE;AACnG,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,+BAA+B,kEAAkE;AACjG,gCAAgC,mEAAmE;AACnG,gCAAgC,mEAAmE;AACnG,iCAAiC,oEAAoE;AACrG,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,+BAA+B,kEAAkE;AACjG,gCAAgC,mEAAmE;AACnG,6BAA6B,gEAAgE;AAC7F,8BAA8B,iEAAiE;AAC/F,gCAAgC,mEAAmE;AACnG,iCAAiC,oEAAoE;AACrG,+BAA+B,kEAAkE;AACjG,gCAAgC,mEAAmE;AACnG,qCAAqC,wEAAwE;AAC7G,kCAAkC,qEAAqE;AACvG,qCAAqC,wEAAwE;AAC7G,kCAAkC,qEAAqE;AACvG,uCAAuC,0EAA0E;AACjH,oCAAoC,uEAAuE;AAC3G,qCAAqC,wEAAwE;AAC7G,kCAAkC,qEAAqE;AACvG,wCAAwC,2EAA2E;AACnH,qCAAqC,wEAAwE;AAC7G,sCAAsC,yEAAyE;AAC/G,mCAAmC,sEAAsE;AACzG,qCAAqC,wEAAwE;AAC7G,kCAAkC,qEAAqE;AACvG,qCAAqC,wEAAwE;AAC7G,kCAAkC,qEAAqE;AACvG,0BAA0B,6DAA6D;AACvF,4BAA4B,+DAA+D;AAC3F,wBAAwB,2DAA2D;AACnF,wBAAwB,2DAA2D;AACnF,0BAA0B,6DAA6D;AACvF,4BAA4B,+DAA+D;AAC3F,2BAA2B,8DAA8D;AACzF,6BAA6B,gEAAgE;AAC7F,0BAA0B,6DAA6D;AACvF,4BAA4B,+DAA+D;AAC3F,2BAA2B,8DAA8D;AACzF,6BAA6B,gEAAgE;AAC7F,2BAA2B,8DAA8D;AACzF,6BAA6B,gEAAgE;AAC7F,2BAA2B,8DAA8D;AACzF,6BAA6B,gEAAgE;AAC7F,2BAA2B,8DAA8D;AACzF,6BAA6B,gEAAgE;AAC7F,2BAA2B,8DAA8D;AACzF,6BAA6B,gEAAgE;AAC7F,2BAA2B,8DAA8D;AACzF,6BAA6B,gEAAgE;AAC7F,2BAA2B,8DAA8D;AACzF,6BAA6B,gEAAgE;AAC7F,2BAA2B,8DAA8D;AACzF,6BAA6B,gEAAgE;AAC7F,mCAAmC,sEAAsE;AACzG,qCAAqC,wEAAwE;AAC7G,oCAAoC,uEAAuE;AAC3G;AACA;AACA;AACA,KAAK;AACL,4BAA4B,+DAA+D;AAC3F,6BAA6B,gEAAgE;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,YAAY,8CAA8C;AAC1D;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,YAAY,wDAAwD;AACpE;AACA;AACA;AACA;AACA,KAAK;AACL,UAAU,+CAA+C;AACzD,YAAY,4EAA4E;AACxF,aAAa,4CAA4C;AACzD,aAAa,4CAA4C;AACzD,aAAa,sFAAsF;AACnG,cAAc,iDAAiD;AAC/D,cAAc,iDAAiD;AAC/D,aAAa,oFAAoF;AACjG,cAAc,gDAAgD;AAC9D,cAAc,gDAAgD;AAC9D,cAAc,4FAA4F;AAC1G,eAAe,oDAAoD;AACnE,eAAe,oDAAoD;AACnE,YAAY,4CAA4C;AACxD,UAAU,8CAA8C;AACxD,YAAY,+CAA+C;AAC3D;AACA;AACA,eAAe,4BAA4B;AAC3C,wBAAwB,yBAAyB;AACjD,YAAY,sBAAsB;AAClC,qBAAqB,2BAA2B;AAChD,UAAU,uBAAuB;AACjC,eAAe,6CAA6C;AAC5D,iBAAiB,iDAAiD;AAClE,eAAe,4CAA4C;AAC3D,iBAAiB,yCAAyC;AAC1D,iBAAiB,uCAAuC;AACxD,mBAAmB,qDAAqD;AACxE,iBAAiB,oCAAoC;AACrD,kBAAkB,6BAA6B;AAC/C,aAAa,oBAAoB;AACjC,YAAY,yBAAyB;AACrC,YAAY,2BAA2B;AACvC,gBAAgB,yBAAyB;AACzC,gBAAgB,8BAA8B;AAC9C,YAAY,mBAAmB;AAC/B,qBAAqB,yBAAyB;AAC9C,mBAAmB,uBAAuB;AAC1C,YAAY,mBAAmB;AAC/B,gBAAgB,uBAAuB;AACvC,aAAa,oBAAoB;AACjC;AACO;AACP;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,2EAA2E;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA,gGAAgG,SAAS;AACzG;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,kFAAkF,eAAe;AACnI;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,+CAA+C;AACnF;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA,sBAAsB,+CAAY,8EAA8E,QAAQ;AACxH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,oDAAoD,QAAQ;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,yCAAK;AAC1C;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,gDAAgD,KAAK;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA,4BAA4B,yBAAyB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,wDAAwD,SAAS;AACnG;AACA;AACA;AACA;AACA;AACA,mBAAmB,+CAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,0BAA0B,6CAA6C;AACvI;AACA;AACA;AACA,iEAAiE,kDAAc;AAC/E;AACA,2DAA2D,kBAAkB,oBAAoB;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;;;;;;;;;;;;;;;;;;;;;;;AC30CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC8B;AACE;AACM;AACR;AACkB;AACd;AACY;AACC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,qBAAqB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACO,sBAAsB,yDAAa;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA,0DAA0D,iBAAiB;AAC3E;AACA;AACA,4DAA4D;AAC5D;AACA,8BAA8B,gEAA2B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,4CAAS,CAAC,KAAK,kDAAe,CAAC,GAAG;AACvD,qBAAqB,yDAAoB;AACzC,QAAQ,8CAAO,6DAA6D,cAAc,cAAc,cAAc;AACtH;AACA;AACA;AACA;AACA;AACA,kCAAkC,0CAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wDAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,0CAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA,0BAA0B,sDAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wBAAwB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,WAAW;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA,yBAAyB,6DAAsB;AAC/C,wBAAwB;AACxB;AACA,8BAA8B,8DAAuB;AACrD,gCAAgC;AAChC;AACA,8BAA8B,8DAAuB,iBAAiB,8DAAuB;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,0CAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,+BAA+B,WAAW,IAAI;AAC9D;AACA;AACA;AACA;AACA;AACA,uDAAuD,4CAAS;AAChE;AACA;AACA;AACA;AACA;AACA,sCAAsC,0BAA0B;AAChE;AACA,wFAAwF,0BAA0B;AAClH;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iDAAK;AACrB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAU;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qDAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA,4DAA4D,mBAAmB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACpYA;AACA;AACA;AACA;AACA;AACqD;AACnB;AACK;AACD;AAC/B,uBAAuB,2CAAM;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAU;AACtB;AACA,YAAY,kDAAe;AAC3B,WAAW,mDAAgB;AAC3B;;;;;;;;;;;;;;;;;ACpGA;AACgC;AACO;AAChC,uBAAuB,yCAAK;AACnC;AACA,eAAe,yDAAiB;AAChC;AACA;AACA,4CAA4C,kEAAkE;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACsC;AACC;AAChC,qBAAqB,+CAAQ;AACpC;AACA,eAAe,uDAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;;;;;;;;;;;;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACoC;AACiB;AACf;AACJ;AACK;AACI;AAC3C;AACA;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACO;AACP;AACA;AACA;AACA,CAAC,kDAAkD;AAC5C,0BAA0B,6CAAO;AACxC,kBAAkB,8EAA8E;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,mEAA8B;AACxG;AACA;AACA,0BAA0B,+CAAY,oCAAoC,eAAe;AACzF;AACA;AACA,wBAAwB;AACxB,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8BAA8B;AAC9C;AACA,gCAAgC,iDAAc;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAuB;AACnC;AACA;AACA,gBAAgB,8DAAuB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAU;AACtB;AACA,YAAY,oDAAiB;AAC7B,WAAW,mDAAgB;AAC3B;;;;;;;;;;;;;;;;;;;ACvLA;AACA;AACgC;AACF;AACS;AACa;AACpD;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,2BAA2B,uCAAI;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,0BAA0B,qBAAqB;AAC3G;AACA;AACA;AACA,eAAe,6DAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC,yBAAyB,8CAAO;AAChC,8BAA8B,yCAAK,0BAA0B,sBAAsB;AACnF;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AChHA;AACA;AACqD;AACxB;AAC7B;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,mCAAmC,kDAAe;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,8CAAW;AACpC,2BAA2B,gDAAa;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,+DAA4B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,kDAAe,GAAG,oDAAiB;AACtE,oCAAoC,mDAAgB,GAAG,mDAAgB;AACvE;AACA,2BAA2B,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,wDAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AChRA;AACA;AACqD;AACrB;AACF;AACS;AACD;AAC/B;AACP;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACO,uBAAuB,uCAAI;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC,6BAA6B,yCAAK,oBAAoB,sBAAsB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8BAA8B;AAClD;AACA,oCAAoC,iDAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kDAAe;AAC3B;AACA,YAAY,oDAAiB;AAC7B,WAAW,mDAAgB;AAC3B;AACA;;;;;;;;;;;;;;;;;;;;AChNA;AACA;AACoC;AACE;AACJ;AACK;AACQ;AAC/C;AACA;AACA;AACA;AACO,uBAAuB,6CAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+CAAQ,QAAQ;AACzC,iCAAiC;AACjC,kCAAkC,+CAAQ;AAC1C;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,eAAe,yDAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,sDAAiB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;;;;;;;;;;;;;;;;;AChSA;AACA;AACA;AACA;AACA;AACsC;AACA;AACtC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,+BAA+B,+CAAQ;AACvC,4BAA4B,+CAAQ;AACpC,sCAAsC;AACtC,mCAAmC;AACnC;AACA,0BAA0B;AAC1B;AACA,wBAAwB;AACxB,0BAA0B;AAC1B,6BAA6B;AAC7B,oCAAoC;AACpC;AACA,yBAAyB;AACzB,0BAA0B;AAC1B,sCAAsC;AACtC,uCAAuC;AACvC,4BAA4B;AAC5B,6BAA6B;AAC7B,8BAA8B;AAC9B,+BAA+B;AAC/B,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uHAAuH;AACvI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACjMA;AACA;AACA;AACA;AACA;AACgC;AACC;AAC1B,iCAAiC,yCAAK;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yCAAK;AACtC;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yCAAK;AACtC;AACA,wBAAwB,8CAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA,YAAY,uDAAmB;AAC/B,uBAAuB,8CAAO;AAC9B;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA,YAAY,uDAAmB;AAC/B,uBAAuB,8CAAO;AAC9B;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACgC;AACuC;AACrC;AACkB;AACb;AACQ;AAC/C;AACA;AACA;AACA,kBAAkB,+CAAY,2CAA2C,SAAS;AAClF;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,2CAA2C,SAAS;AACtF;AACA,KAAK;AACL;AACO,4BAA4B,yDAAa;AAChD;AACA;AACA;AACA;AACA,0BAA0B,4DAAuB;AACjD;AACA;AACA;AACA;AACA,yBAAyB,uEAA2B;AACpD;AACA,sBAAsB,8CAAO;AAC7B;AACA;AACA;AACA,eAAe,8DAAsB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA,2BAA2B,yCAAK;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6DAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AChGA;AACA;AAC8B;AACkB;AACT;AAChC,0BAA0B,uCAAI;AACrC;AACA,gBAAgB,eAAe;AAC/B,kCAAkC,yDAAa;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACtCA;AACA;AACA;AACgC;AACQ;AACF;AACR;AACI;AACkB;AACpD;AACO,sBAAsB,+CAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+DAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wDAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uDAAW;AAC9B,2BAA2B,uDAAe;AAC1C,oCAAoC,yBAAyB;AAC7D,0BAA0B,4DAAuB;AACjD,kDAAkD,SAAS;AAC3D;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA,2CAA2C,SAAS;AACpD;AACA,oDAAoD,SAAS;AAC7D,uCAAuC,SAAS,cAAc,kBAAkB,0CAAO,iBAAiB;AACxG,wBAAwB,cAAc;AACtC,YAAY,qDAAiB,oCAAoC,0CAA0C;AAC3G;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACxDA;AACA;AACkC;AACI;AACtC;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,2CAA2C,aAAa;AAC1F;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,wDAAwD,yBAAyB,GAAG,UAAU;AAChI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY,qDAAqD,QAAQ;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,yDAAoB,QAAQ,GAAG,OAAO;AACxD;AACA;;;;;;;;;;;;;;;;;;;;;;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,4BAA4B;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACoC;AACI;AACR;AACF;AACI;AACK;AACQ;AACxC;AACP;AACA;AACA;AACA,CAAC,wCAAwC;AAClC,qBAAqB,6CAAO;AACnC,mCAAmC;AACnC;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,4DAAuB;AAC5C;AACA;AACA;AACA;AACA,QAAQ,mEAA2B;AACnC;AACA;AACA;AACA;AACA,eAAe,uDAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAuB;AACtC;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,yCAAK;AACnD;AACA;AACA;AACA;AACA;AACA,0CAA0C,yCAAK;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,0CAAO;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,4BAA4B,uBAAuB;AACnD;AACA,0EAA0E,0CAAO;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,8CAAO;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4DAAuB;AAC9C;AACA;AACA;AACA,wBAAwB,8CAAO;AAC/B,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8CAAO;AACnC,aAAa;AACb;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;;;;;;;;;;;;;;;;;;;;;;ACtH7B;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qBAAM;AACrB,eAAe,qBAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,MAAM,6BAA6B,MAAM;AACjF;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AChFA;AACA;AACA;AAC8B;AACa;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,gBAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA,sBAAsB,+CAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,uCAAI;;;;;;;;;;;;;;;;;;;ACpEf;AACA;AAC8B;AACQ;AACJ;AACK;AACvC;AACO,sBAAsB,+CAAQ;AACrC;AACA;AACA,wBAAwB,8DAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wDAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gDAAa;AACtD;AACA,yGAAyG,+DAA0B;AACnI;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,8DAAuB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAA4D;AAC5E;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AClHA;AACA;AACA;AACoC;AACG;AACV;AACO;AACpC;AACA;AACA;AACA,QAAQ,0CAAG;AACX;AACA;AACO,6BAA6B,6CAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAuB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,2DAAqB;AAC7B;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACpEA;AACA;AACoC;AACE;AACJ;AACK;AACQ;AACxC;AACP;AACA;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA;AACA;AACO,oBAAoB,6CAAO;AAClC;AACA;AACA;AACA;AACA;AACA,6BAA6B,+CAAQ;AACrC;AACA;AACA;AACA,2BAA2B,0DAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,yCAAyC,sDAAiB,EAAE;AAChG;AACA,8BAA8B,+CAAQ;AACtC;AACA;AACA;AACA,eAAe,sDAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2BAA2B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA,0BAA0B,+CAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,eAAe,8CAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA,YAAY,8CAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACzPA;AACA;AACA;AACA;AACA;AACA;AACsC;AACtC;AACO;AACP;AACA;AACA,mBAAmB,mDAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,mBAAmB,mDAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;;;;;;;UC7BA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACmC;AACuB;AACH;AACvD,sEAAiB;AACjB,wDAAiB;AACjB,mEAAa;AACb;AAC6B;AAC7B;AACwC","sources":["webpack://Vex/webpack/universalModuleDefinition","webpack://Vex/./src/version.ts","webpack://Vex/./src/accidental.ts","webpack://Vex/./src/annotation.ts","webpack://Vex/./src/articulation.ts","webpack://Vex/./src/barnote.ts","webpack://Vex/./src/beam.ts","webpack://Vex/./src/bend.ts","webpack://Vex/./src/boundingbox.ts","webpack://Vex/./src/boundingboxcomputation.ts","webpack://Vex/./src/canvascontext.ts","webpack://Vex/./src/chordsymbol.ts","webpack://Vex/./src/clef.ts","webpack://Vex/./src/clefnote.ts","webpack://Vex/./src/crescendo.ts","webpack://Vex/./src/curve.ts","webpack://Vex/./src/dot.ts","webpack://Vex/./src/easyscore.ts","webpack://Vex/./src/element.ts","webpack://Vex/./src/factory.ts","webpack://Vex/./src/flow.ts","webpack://Vex/./src/font.ts","webpack://Vex/./src/fonts/bravura_glyphs.ts","webpack://Vex/./src/fonts/bravura_metrics.ts","webpack://Vex/./src/fonts/custom_glyphs.ts","webpack://Vex/./src/fonts/custom_metrics.ts","webpack://Vex/./src/fonts/gonville_glyphs.ts","webpack://Vex/./src/fonts/gonville_metrics.ts","webpack://Vex/./src/fonts/leland_glyphs.ts","webpack://Vex/./src/fonts/leland_metrics.ts","webpack://Vex/./src/fonts/load_all.ts","webpack://Vex/./src/fonts/load_bravura.ts","webpack://Vex/./src/fonts/load_custom.ts","webpack://Vex/./src/fonts/load_gonville.ts","webpack://Vex/./src/fonts/load_leland.ts","webpack://Vex/./src/fonts/load_petaluma.ts","webpack://Vex/./src/fonts/petaluma_glyphs.ts","webpack://Vex/./src/fonts/petaluma_metrics.ts","webpack://Vex/./src/fonts/petalumascript_glyphs.ts","webpack://Vex/./src/fonts/robotoslab_glyphs.ts","webpack://Vex/./src/fonts/textfonts.ts","webpack://Vex/./src/formatter.ts","webpack://Vex/./src/fraction.ts","webpack://Vex/./src/frethandfinger.ts","webpack://Vex/./src/ghostnote.ts","webpack://Vex/./src/glyph.ts","webpack://Vex/./src/glyphnote.ts","webpack://Vex/./src/gracenote.ts","webpack://Vex/./src/gracenotegroup.ts","webpack://Vex/./src/gracetabnote.ts","webpack://Vex/./src/index.ts","webpack://Vex/./src/keymanager.ts","webpack://Vex/./src/keysignature.ts","webpack://Vex/./src/keysignote.ts","webpack://Vex/./src/modifier.ts","webpack://Vex/./src/modifiercontext.ts","webpack://Vex/./src/multimeasurerest.ts","webpack://Vex/./src/music.ts","webpack://Vex/./src/note.ts","webpack://Vex/./src/notehead.ts","webpack://Vex/./src/notesubgroup.ts","webpack://Vex/./src/ornament.ts","webpack://Vex/./src/parenthesis.ts","webpack://Vex/./src/parser.ts","webpack://Vex/./src/pedalmarking.ts","webpack://Vex/./src/registry.ts","webpack://Vex/./src/rendercontext.ts","webpack://Vex/./src/renderer.ts","webpack://Vex/./src/repeatnote.ts","webpack://Vex/./src/stave.ts","webpack://Vex/./src/stavebarline.ts","webpack://Vex/./src/staveconnector.ts","webpack://Vex/./src/stavehairpin.ts","webpack://Vex/./src/staveline.ts","webpack://Vex/./src/stavemodifier.ts","webpack://Vex/./src/stavenote.ts","webpack://Vex/./src/staverepetition.ts","webpack://Vex/./src/stavesection.ts","webpack://Vex/./src/stavetempo.ts","webpack://Vex/./src/stavetext.ts","webpack://Vex/./src/stavetie.ts","webpack://Vex/./src/stavevolta.ts","webpack://Vex/./src/stem.ts","webpack://Vex/./src/stemmablenote.ts","webpack://Vex/./src/stringnumber.ts","webpack://Vex/./src/strokes.ts","webpack://Vex/./src/svgcontext.ts","webpack://Vex/./src/system.ts","webpack://Vex/./src/tables.ts","webpack://Vex/./src/tabnote.ts","webpack://Vex/./src/tabslide.ts","webpack://Vex/./src/tabstave.ts","webpack://Vex/./src/tabtie.ts","webpack://Vex/./src/textbracket.ts","webpack://Vex/./src/textdynamics.ts","webpack://Vex/./src/textformatter.ts","webpack://Vex/./src/textnote.ts","webpack://Vex/./src/tickable.ts","webpack://Vex/./src/tickcontext.ts","webpack://Vex/./src/timesigglyph.ts","webpack://Vex/./src/timesignature.ts","webpack://Vex/./src/timesignote.ts","webpack://Vex/./src/tremolo.ts","webpack://Vex/./src/tuning.ts","webpack://Vex/./src/tuplet.ts","webpack://Vex/./src/typeguard.ts","webpack://Vex/./src/util.ts","webpack://Vex/./src/vex.ts","webpack://Vex/./src/vibrato.ts","webpack://Vex/./src/vibratobracket.ts","webpack://Vex/./src/voice.ts","webpack://Vex/./src/web.ts","webpack://Vex/webpack/bootstrap","webpack://Vex/webpack/runtime/define property getters","webpack://Vex/webpack/runtime/global","webpack://Vex/webpack/runtime/hasOwnProperty shorthand","webpack://Vex/webpack/runtime/make namespace object","webpack://Vex/./entry/vexflow-debug.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Vex\"] = factory();\n\telse\n\t\troot[\"Vex\"] = factory();\n})((typeof window !== 'undefined' ? window : typeof globalThis !== 'undefined' ? globalThis : this), function() {\nreturn ","export const VERSION = '4.1.0-alpha.0';\nexport const ID = '847bc9014672858aedc7f8460384f51f98d6bd84';\nexport const DATE = '2022-10-10T04:47:38.237Z';\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// @author Mohit Cheppudira\n// @author Greg Ristow (modifications)\nimport { Fraction } from './fraction';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Music } from './music';\nimport { Tables } from './tables';\nimport { Category, isAccidental, isGraceNote, isGraceNoteGroup, isStaveNote } from './typeguard';\nimport { defined, log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Accidental.DEBUG)\n log('Vex.Flow.Accidental', args);\n}\n/**\n * An `Accidental` inherits from `Modifier`, and is formatted within a\n * `ModifierContext`. Accidentals are modifiers that can be attached to\n * notes. Support is included for both western and microtonal accidentals.\n *\n * See `tests/accidental_tests.ts` for usage examples.\n */\nexport class Accidental extends Modifier {\n /**\n * Create accidental.\n * @param type value from `Vex.Flow.accidentalCodes.accidentals` table in `tables.ts`.\n * For example: `#`, `##`, `b`, `n`, etc.\n */\n constructor(type) {\n super();\n L('New accidental: ', type);\n this.type = type;\n this.position = Modifier.Position.LEFT;\n this.render_options = {\n // Font size for glyphs\n font_scale: 38,\n // Padding between accidental and parentheses on each side\n parenLeftPadding: 2,\n parenRightPadding: 2,\n };\n this.accidental = Tables.accidentalCodes(this.type);\n defined(this.accidental, 'ArgumentError', `Unknown accidental type: ${type}`);\n // Cautionary accidentals have parentheses around them\n this.cautionary = false;\n this.reset();\n }\n /** Accidentals category string. */\n static get CATEGORY() {\n return Category.Accidental;\n }\n /** Arrange accidentals inside a ModifierContext. */\n static format(accidentals, state) {\n // If there are no accidentals, no need to format their positions.\n if (!accidentals || accidentals.length === 0)\n return;\n const musicFont = Tables.currentMusicFont();\n const noteheadAccidentalPadding = musicFont.lookupMetric('accidental.noteheadAccidentalPadding');\n const leftShift = state.left_shift + noteheadAccidentalPadding;\n const accidentalSpacing = musicFont.lookupMetric('accidental.accidentalSpacing');\n const additionalPadding = musicFont.lookupMetric('accidental.leftPadding'); // padding to the left of all accidentals\n const accList = [];\n let prevNote = undefined;\n let shiftL = 0;\n // First determine the accidentals' Y positions from the note.keys\n for (let i = 0; i < accidentals.length; ++i) {\n const acc = accidentals[i];\n const note = acc.getNote();\n const stave = note.getStave();\n const index = acc.checkIndex();\n const props = note.getKeyProps()[index];\n if (note !== prevNote) {\n // Iterate through all notes to get the displaced pixels\n for (let n = 0; n < note.keys.length; ++n) {\n shiftL = Math.max(note.getLeftDisplacedHeadPx() - note.getXShift(), shiftL);\n }\n prevNote = note;\n }\n if (stave) {\n const lineSpace = stave.getSpacingBetweenLines();\n const y = stave.getYForLine(props.line);\n const accLine = Math.round((y / lineSpace) * 2) / 2;\n accList.push({ y, line: accLine, shift: shiftL, acc, lineSpace });\n }\n else {\n accList.push({ line: props.line, shift: shiftL, acc });\n }\n }\n // Sort accidentals by line number.\n accList.sort((a, b) => b.line - a.line);\n // FIXME: Confusing name. Each object in this array has a property called `line`.\n // So if this is a list of lines, you end up with: `line.line` which is very awkward.\n const lineList = [];\n // amount by which all accidentals must be shifted right or left for\n // stem flipping, notehead shifting concerns.\n let accShift = 0;\n let previousLine = undefined;\n // Create an array of unique line numbers (lineList) from accList\n for (let i = 0; i < accList.length; i++) {\n const acc = accList[i];\n // if this is the first line, or a new line, add a lineList\n if (previousLine === undefined || previousLine !== acc.line) {\n lineList.push({\n line: acc.line,\n flatLine: true,\n dblSharpLine: true,\n numAcc: 0,\n width: 0,\n column: 0,\n });\n }\n // if this accidental is not a flat, the accidental needs 3.0 lines lower\n // clearance instead of 2.5 lines for b or bb.\n // FIXME: Naming could use work. acc.acc is very awkward\n if (acc.acc.type !== 'b' && acc.acc.type !== 'bb') {\n lineList[lineList.length - 1].flatLine = false;\n }\n // if this accidental is not a double sharp, the accidental needs 3.0 lines above\n if (acc.acc.type !== '##') {\n lineList[lineList.length - 1].dblSharpLine = false;\n }\n // Track how many accidentals are on this line:\n lineList[lineList.length - 1].numAcc++;\n // Track the total x_offset needed for this line which will be needed\n // for formatting lines w/ multiple accidentals:\n // width = accidental width + universal spacing between accidentals\n lineList[lineList.length - 1].width += acc.acc.getWidth() + accidentalSpacing;\n // if this accShift is larger, use it to keep first column accidentals in the same line\n accShift = acc.shift > accShift ? acc.shift : accShift;\n previousLine = acc.line;\n }\n // ### Place Accidentals in Columns\n //\n // Default to a classic triangular layout (middle accidental farthest left),\n // but follow exceptions as outlined in G. Read's _Music Notation_ and\n // Elaine Gould's _Behind Bars_.\n //\n // Additionally, this implements different vertical collision rules for\n // flats (only need 2.5 lines clearance below) and double sharps (only\n // need 2.5 lines of clearance above or below).\n //\n // Classic layouts and exception patterns are found in the 'tables.js'\n // in 'Tables.accidentalColumnsTable'\n //\n // Beyond 6 vertical accidentals, default to the parallel ascending lines approach,\n // using as few columns as possible for the verticle structure.\n //\n // TODO (?): Allow column to be specified for an accidental at run-time?\n let totalColumns = 0;\n // establish the boundaries for a group of notes with clashing accidentals:\n for (let i = 0; i < lineList.length; i++) {\n let noFurtherConflicts = false;\n const groupStart = i;\n let groupEnd = i;\n while (groupEnd + 1 < lineList.length && !noFurtherConflicts) {\n // if this note conflicts with the next:\n if (this.checkCollision(lineList[groupEnd], lineList[groupEnd + 1])) {\n // include the next note in the group:\n groupEnd++;\n }\n else {\n noFurtherConflicts = true;\n }\n }\n // Gets an a line from the `lineList`, relative to the current group\n const getGroupLine = (index) => lineList[groupStart + index];\n const getGroupLines = (indexes) => indexes.map(getGroupLine);\n const lineDifference = (indexA, indexB) => {\n const [a, b] = getGroupLines([indexA, indexB]).map((item) => item.line);\n return a - b;\n };\n const notColliding = (...indexPairs) => indexPairs.map(getGroupLines).every(([line1, line2]) => !this.checkCollision(line1, line2));\n // Set columns for the lines in this group:\n const groupLength = groupEnd - groupStart + 1;\n // Set the accidental column for each line of the group\n let endCase = this.checkCollision(lineList[groupStart], lineList[groupEnd]) ? 'a' : 'b';\n switch (groupLength) {\n case 3:\n if (endCase === 'a' && lineDifference(1, 2) === 0.5 && lineDifference(0, 1) !== 0.5) {\n endCase = 'second_on_bottom';\n }\n break;\n case 4:\n if (notColliding([0, 2], [1, 3])) {\n endCase = 'spaced_out_tetrachord';\n }\n break;\n case 5:\n if (endCase === 'b' && notColliding([1, 3])) {\n endCase = 'spaced_out_pentachord';\n if (notColliding([0, 2], [2, 4])) {\n endCase = 'very_spaced_out_pentachord';\n }\n }\n break;\n case 6:\n if (notColliding([0, 3], [1, 4], [2, 5])) {\n endCase = 'spaced_out_hexachord';\n }\n if (notColliding([0, 2], [2, 4], [1, 3], [3, 5])) {\n endCase = 'very_spaced_out_hexachord';\n }\n break;\n default:\n break;\n }\n let groupMember;\n let column;\n // If the group contains seven members or more, use ascending parallel lines\n // of accidentals, using as few columns as possible while avoiding collisions.\n if (groupLength >= 7) {\n // First, determine how many columns to use:\n let patternLength = 2;\n let collisionDetected = true;\n while (collisionDetected === true) {\n collisionDetected = false;\n for (let line = 0; line + patternLength < lineList.length; line++) {\n if (this.checkCollision(lineList[line], lineList[line + patternLength])) {\n collisionDetected = true;\n patternLength++;\n break;\n }\n }\n }\n // Then, assign a column to each line of accidentals\n for (groupMember = i; groupMember <= groupEnd; groupMember++) {\n column = ((groupMember - i) % patternLength) + 1;\n lineList[groupMember].column = column;\n totalColumns = totalColumns > column ? totalColumns : column;\n }\n }\n else {\n // If the group contains fewer than seven members, use the layouts from\n // the Tables.accidentalColumnsTable (See: tables.ts).\n for (groupMember = i; groupMember <= groupEnd; groupMember++) {\n column = Tables.accidentalColumnsTable[groupLength][endCase][groupMember - i];\n lineList[groupMember].column = column;\n totalColumns = totalColumns > column ? totalColumns : column;\n }\n }\n // Increment i to the last note that was set, so that if a lower set of notes\n // does not conflict at all with this group, it can have its own classic shape.\n i = groupEnd;\n }\n // ### Convert Columns to x_offsets\n //\n // This keeps columns aligned, even if they have different accidentals within them\n // which sometimes results in a larger x_offset than is an accidental might need\n // to preserve the symmetry of the accidental shape.\n //\n // Neither A.C. Vinci nor G. Read address this, and it typically only happens in\n // music with complex chord clusters.\n //\n // TODO (?): Optionally allow closer compression of accidentals, instead of forcing\n // parallel columns.\n // track each column's max width, which will be used as initial shift of later columns:\n const columnWidths = [];\n const columnXOffsets = [];\n for (let i = 0; i <= totalColumns; i++) {\n columnWidths[i] = 0;\n columnXOffsets[i] = 0;\n }\n columnWidths[0] = accShift + leftShift;\n columnXOffsets[0] = accShift + leftShift;\n // Fill columnWidths with widest needed x-space;\n // this is what keeps the columns parallel.\n lineList.forEach((line) => {\n if (line.width > columnWidths[line.column])\n columnWidths[line.column] = line.width;\n });\n for (let i = 1; i < columnWidths.length; i++) {\n // this column's offset = this column's width + previous column's offset\n columnXOffsets[i] = columnWidths[i] + columnXOffsets[i - 1];\n }\n const totalShift = columnXOffsets[columnXOffsets.length - 1];\n // Set the xShift for each accidental according to column offsets:\n let accCount = 0;\n lineList.forEach((line) => {\n let lineWidth = 0;\n const lastAccOnLine = accCount + line.numAcc;\n // handle all of the accidentals on a given line:\n for (accCount; accCount < lastAccOnLine; accCount++) {\n const xShift = columnXOffsets[line.column - 1] + lineWidth;\n accList[accCount].acc.setXShift(xShift);\n // keep track of the width of accidentals we've added so far, so that when\n // we loop, we add space for them.\n lineWidth += accList[accCount].acc.getWidth() + accidentalSpacing;\n L('Line, accCount, shift: ', line.line, accCount, xShift);\n }\n });\n // update the overall layout with the full width of the accidental shapes:\n state.left_shift += totalShift + additionalPadding;\n }\n /** Helper function to determine whether two lines of accidentals collide vertically */\n static checkCollision(line1, line2) {\n let clearance = line2.line - line1.line;\n let clearanceRequired = 3;\n // But less clearance is required for certain accidentals: b, bb and ##.\n if (clearance > 0) {\n // then line 2 is on top\n clearanceRequired = line2.flatLine || line2.dblSharpLine ? 2.5 : 3.0;\n if (line1.dblSharpLine)\n clearance -= 0.5;\n }\n else {\n // line 1 is on top\n clearanceRequired = line1.flatLine || line1.dblSharpLine ? 2.5 : 3.0;\n if (line2.dblSharpLine)\n clearance -= 0.5;\n }\n const collision = Math.abs(clearance) < clearanceRequired;\n L('Line_1, Line_2, Collision: ', line1.line, line2.line, collision);\n return collision;\n }\n /**\n * Use this method to automatically apply accidentals to a set of `voices`.\n * The accidentals will be remembered between all the voices provided.\n * Optionally, you can also provide an initial `keySignature`.\n */\n static applyAccidentals(voices, keySignature) {\n const tickPositions = [];\n const tickNoteMap = {};\n // Sort the tickables in each voice by their tick position in the voice.\n voices.forEach((voice) => {\n const tickPosition = new Fraction(0, 1);\n const tickable = voice.getTickables();\n tickable.forEach((t) => {\n if (t.shouldIgnoreTicks())\n return;\n const notesAtPosition = tickNoteMap[tickPosition.value()];\n if (!notesAtPosition) {\n tickPositions.push(tickPosition.value());\n tickNoteMap[tickPosition.value()] = [t];\n }\n else {\n notesAtPosition.push(t);\n }\n tickPosition.add(t.getTicks());\n });\n });\n const music = new Music();\n // Default key signature is C major.\n if (!keySignature)\n keySignature = 'C';\n // Get the scale map, which represents the current state of each pitch.\n const scaleMapKey = music.createScaleMap(keySignature);\n const scaleMap = {};\n tickPositions.forEach((tickPos) => {\n const tickables = tickNoteMap[tickPos];\n // Array to store all pitches that modified accidental states\n // at this tick position\n const modifiedPitches = [];\n const processNote = (t) => {\n // Only StaveNote implements .addModifier(), which is used below.\n if (!isStaveNote(t) || t.isRest() || t.shouldIgnoreTicks()) {\n return;\n }\n // Go through each key and determine if an accidental should be applied.\n const staveNote = t;\n staveNote.keys.forEach((keyString, keyIndex) => {\n const key = music.getNoteParts(keyString.split('/')[0]);\n const octave = keyString.split('/')[1];\n // Force a natural for every key without an accidental\n const accidentalString = key.accidental || 'n';\n const pitch = key.root + accidentalString;\n // Determine if the current pitch has the same accidental\n // as the scale state\n if (!scaleMap[key.root + octave])\n scaleMap[key.root + octave] = scaleMapKey[key.root];\n const sameAccidental = scaleMap[key.root + octave] === pitch;\n // Determine if an identical pitch in the chord already\n // modified the accidental state\n const previouslyModified = modifiedPitches.indexOf(keyString) > -1;\n // Remove accidentals\n staveNote.getModifiers().forEach((modifier, index) => {\n if (isAccidental(modifier) && modifier.type == accidentalString && modifier.getIndex() == keyIndex) {\n staveNote.getModifiers().splice(index, 1);\n }\n });\n // Add the accidental to the StaveNote\n if (!sameAccidental || (sameAccidental && previouslyModified)) {\n // Modify the scale map so that the root pitch has an\n // updated state\n scaleMap[key.root + octave] = pitch;\n // Create the accidental\n const accidental = new Accidental(accidentalString);\n // Attach the accidental to the StaveNote\n staveNote.addModifier(accidental, keyIndex);\n // Add the pitch to list of pitches that modified accidentals\n modifiedPitches.push(keyString);\n }\n });\n // process grace notes\n staveNote.getModifiers().forEach((modifier) => {\n if (isGraceNoteGroup(modifier)) {\n modifier.getGraceNotes().forEach(processNote);\n }\n });\n };\n tickables.forEach(processNote);\n });\n }\n reset() {\n const fontScale = this.render_options.font_scale;\n this.glyph = new Glyph(this.accidental.code, fontScale);\n this.glyph.setOriginX(1.0);\n if (this.cautionary) {\n this.parenLeft = new Glyph(Tables.accidentalCodes('{').code, fontScale);\n this.parenRight = new Glyph(Tables.accidentalCodes('}').code, fontScale);\n this.parenLeft.setOriginX(1.0);\n this.parenRight.setOriginX(1.0);\n }\n }\n /** Get width in pixels. */\n getWidth() {\n if (this.cautionary) {\n const parenLeft = defined(this.parenLeft);\n const parenRight = defined(this.parenRight);\n const parenWidth = parenLeft.getMetrics().width +\n parenRight.getMetrics().width +\n this.render_options.parenLeftPadding +\n this.render_options.parenRightPadding;\n return this.glyph.getMetrics().width + parenWidth;\n }\n else {\n return this.glyph.getMetrics().width;\n }\n }\n /** Attach this accidental to `note`, which must be a `StaveNote`. */\n setNote(note) {\n defined(note, 'ArgumentError', `Bad note value: ${note}`);\n this.note = note;\n // Accidentals attached to grace notes are rendered smaller.\n if (isGraceNote(note)) {\n this.render_options.font_scale = 25;\n this.reset();\n }\n return this;\n }\n /** If called, draws parenthesis around accidental. */\n setAsCautionary() {\n this.cautionary = true;\n this.render_options.font_scale = 28;\n this.reset();\n return this;\n }\n /** Render accidental onto canvas. */\n draw() {\n const { type, position, index, cautionary, x_shift, y_shift, glyph, render_options: { parenLeftPadding, parenRightPadding }, } = this;\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n // Figure out the start `x` and `y` coordinates for note and index.\n const start = note.getModifierStartXY(position, index);\n let accX = start.x + x_shift;\n const accY = start.y + y_shift;\n L('Rendering: ', type, accX, accY);\n if (!cautionary) {\n glyph.render(ctx, accX, accY);\n }\n else {\n const parenLeft = defined(this.parenLeft);\n const parenRight = defined(this.parenRight);\n // Render the accidental in parentheses.\n parenRight.render(ctx, accX, accY);\n accX -= parenRight.getMetrics().width;\n accX -= parenRightPadding;\n accX -= this.accidental.parenRightPaddingAdjustment;\n glyph.render(ctx, accX, accY);\n accX -= glyph.getMetrics().width;\n accX -= parenLeftPadding;\n parenLeft.render(ctx, accX, accY);\n }\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Accidental.DEBUG` to `true`. */\nAccidental.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category, isStemmableNote, isTabNote } from './typeguard';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Annotation.DEBUG)\n log('Vex.Flow.Annotation', args);\n}\nexport var AnnotationHorizontalJustify;\n(function (AnnotationHorizontalJustify) {\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"LEFT\"] = 1] = \"LEFT\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"CENTER\"] = 2] = \"CENTER\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"RIGHT\"] = 3] = \"RIGHT\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(AnnotationHorizontalJustify || (AnnotationHorizontalJustify = {}));\nexport var AnnotationVerticalJustify;\n(function (AnnotationVerticalJustify) {\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"TOP\"] = 1] = \"TOP\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"CENTER\"] = 2] = \"CENTER\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"BOTTOM\"] = 3] = \"BOTTOM\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(AnnotationVerticalJustify || (AnnotationVerticalJustify = {}));\n/**\n * Annotations are modifiers that can be attached to\n * notes.\n *\n * See `tests/annotation_tests.ts` for usage examples.\n */\nexport class Annotation extends Modifier {\n /**\n * Annotations inherit from `Modifier` and is positioned correctly when\n * in a `ModifierContext`.\n * Create a new `Annotation` with the string `text`.\n */\n constructor(text) {\n super();\n this.text = text;\n this.horizontalJustification = AnnotationHorizontalJustify.CENTER;\n // warning: the default in the constructor is TOP, but in the factory the default is BOTTOM.\n // this is to support legacy application that may expect this.\n this.verticalJustification = AnnotationVerticalJustify.TOP;\n this.resetFont();\n // The default width is calculated from the text.\n this.setWidth(Tables.textWidth(text));\n }\n /** Annotations category string. */\n static get CATEGORY() {\n return Category.Annotation;\n }\n // Use the same padding for annotations as note head so the\n // words don't run into each other.\n static get minAnnotationPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Arrange annotations within a `ModifierContext` */\n static format(annotations, state) {\n if (!annotations || annotations.length === 0)\n return false;\n let leftWidth = 0;\n let rightWidth = 0;\n let maxLeftGlyphWidth = 0;\n let maxRightGlyphWidth = 0;\n for (let i = 0; i < annotations.length; ++i) {\n const annotation = annotations[i];\n const textFormatter = TextFormatter.create(annotation.textFont);\n // Text height is expressed in fractional stave spaces.\n const textLines = (5 + textFormatter.maxHeight) / Tables.STAVE_LINE_DISTANCE;\n let verticalSpaceNeeded = textLines;\n const note = annotation.checkAttachedNote();\n const glyphWidth = note.getGlyph().getWidth();\n // Get the text width from the font metrics.\n const textWidth = textFormatter.getWidthForTextInPx(annotation.text);\n if (annotation.horizontalJustification === AnnotationHorizontalJustify.LEFT) {\n maxLeftGlyphWidth = Math.max(glyphWidth, maxLeftGlyphWidth);\n leftWidth = Math.max(leftWidth, textWidth) + Annotation.minAnnotationPadding;\n }\n else if (annotation.horizontalJustification === AnnotationHorizontalJustify.RIGHT) {\n maxRightGlyphWidth = Math.max(glyphWidth, maxRightGlyphWidth);\n rightWidth = Math.max(rightWidth, textWidth);\n }\n else {\n leftWidth = Math.max(leftWidth, textWidth / 2) + Annotation.minAnnotationPadding;\n rightWidth = Math.max(rightWidth, textWidth / 2);\n maxLeftGlyphWidth = Math.max(glyphWidth / 2, maxLeftGlyphWidth);\n maxRightGlyphWidth = Math.max(glyphWidth / 2, maxRightGlyphWidth);\n }\n const stave = note.getStave();\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let stemHeight = 0;\n let lines = 5;\n if (isTabNote(note)) {\n if (note.render_options.draw_stem) {\n const stem = note.getStem();\n if (stem) {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n else {\n stemHeight = 0;\n }\n }\n else if (isStemmableNote(note)) {\n const stem = note.getStem();\n if (stem && note.getNoteType() === 'n') {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n if (stave) {\n lines = stave.getNumLines();\n }\n if (annotation.verticalJustification === this.VerticalJustify.TOP) {\n let noteLine = note.getLineNumber(true);\n if (isTabNote(note)) {\n noteLine = lines - (note.leastString() - 0.5);\n }\n if (stemDirection === Stem.UP) {\n noteLine += stemHeight;\n }\n const curTop = noteLine + state.top_text_line + 0.5;\n if (curTop < lines) {\n annotation.setTextLine(lines - noteLine);\n verticalSpaceNeeded += lines - noteLine;\n state.top_text_line = verticalSpaceNeeded;\n }\n else {\n annotation.setTextLine(state.top_text_line);\n state.top_text_line += verticalSpaceNeeded;\n }\n }\n else if (annotation.verticalJustification === this.VerticalJustify.BOTTOM) {\n let noteLine = lines - note.getLineNumber();\n if (isTabNote(note)) {\n noteLine = note.greatestString() - 1;\n }\n if (stemDirection === Stem.DOWN) {\n noteLine += stemHeight;\n }\n const curBottom = noteLine + state.text_line + 1;\n if (curBottom < lines) {\n annotation.setTextLine(lines - curBottom);\n verticalSpaceNeeded += lines - curBottom;\n state.text_line = verticalSpaceNeeded;\n }\n else {\n annotation.setTextLine(state.text_line);\n state.text_line += verticalSpaceNeeded;\n }\n }\n else {\n annotation.setTextLine(state.text_line);\n }\n }\n const rightOverlap = Math.min(Math.max(rightWidth - maxRightGlyphWidth, 0), Math.max(rightWidth - state.right_shift, 0));\n const leftOverlap = Math.min(Math.max(leftWidth - maxLeftGlyphWidth, 0), Math.max(leftWidth - state.left_shift, 0));\n state.left_shift += leftOverlap;\n state.right_shift += rightOverlap;\n return true;\n }\n /**\n * Set vertical position of text (above or below stave).\n * @param just value in `AnnotationVerticalJustify`.\n */\n setVerticalJustification(just) {\n this.verticalJustification = typeof just === 'string' ? Annotation.VerticalJustifyString[just] : just;\n return this;\n }\n /**\n * Get horizontal justification.\n */\n getJustification() {\n return this.horizontalJustification;\n }\n /**\n * Set horizontal justification.\n * @param justification value in `Annotation.Justify`.\n */\n setJustification(just) {\n this.horizontalJustification = typeof just === 'string' ? Annotation.HorizontalJustifyString[just] : just;\n return this;\n }\n /** Render text beside the note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n const textFormatter = TextFormatter.create(this.textFont);\n const start = note.getModifierStartXY(ModifierPosition.ABOVE, this.index);\n this.setRendered();\n // We're changing context parameters. Save current state.\n ctx.save();\n // Apply style might not save context, if this.style is undefined, so we\n // still need to save context state just before this, since we will be\n // changing ctx parameters below.\n this.applyStyle();\n ctx.openGroup('annotation', this.getAttribute('id'));\n ctx.setFont(this.textFont);\n const text_width = ctx.measureText(this.text).width;\n const text_height = textFormatter.maxHeight + 2;\n let x;\n let y;\n if (this.horizontalJustification === AnnotationHorizontalJustify.LEFT) {\n x = start.x;\n }\n else if (this.horizontalJustification === AnnotationHorizontalJustify.RIGHT) {\n x = start.x - text_width;\n }\n else if (this.horizontalJustification === AnnotationHorizontalJustify.CENTER) {\n x = start.x - text_width / 2;\n } /* CENTER_STEM */\n else {\n x = note.getStemX() - text_width / 2;\n }\n let stem_ext = {};\n let spacing = 0;\n const has_stem = note.hasStem();\n const stave = note.checkStave();\n // The position of the text varies based on whether or not the note\n // has a stem.\n if (has_stem) {\n stem_ext = note.checkStem().getExtents();\n spacing = stave.getSpacingBetweenLines();\n }\n if (this.verticalJustification === AnnotationVerticalJustify.BOTTOM) {\n // Use the largest (lowest) Y value\n const ys = note.getYs();\n y = ys.reduce((a, b) => (a > b ? a : b));\n y += (this.text_line + 1) * Tables.STAVE_LINE_DISTANCE + text_height;\n if (has_stem && stemDirection === Stem.DOWN) {\n y = Math.max(y, stem_ext.topY + text_height + spacing * this.text_line);\n }\n }\n else if (this.verticalJustification === AnnotationVerticalJustify.CENTER) {\n const yt = note.getYForTopText(this.text_line) - 1;\n const yb = stave.getYForBottomText(this.text_line);\n y = yt + (yb - yt) / 2 + text_height / 2;\n }\n else if (this.verticalJustification === AnnotationVerticalJustify.TOP) {\n y = note.getYs()[0] - (this.text_line + 1) * Tables.STAVE_LINE_DISTANCE;\n if (has_stem && stemDirection === Stem.UP) {\n // If the stem is above the stave already, go with default line width vs. actual\n // since the lines between don't really matter.\n spacing = stem_ext.topY < stave.getTopLineTopY() ? Tables.STAVE_LINE_DISTANCE : spacing;\n y = Math.min(y, stem_ext.topY - spacing * (this.text_line + 1));\n }\n } /* CENTER_STEM */\n else {\n const extents = note.getStemExtents();\n y = extents.topY + (extents.baseY - extents.topY) / 2 + text_height / 2;\n }\n L('Rendering annotation: ', this.text, x, y);\n ctx.fillText(this.text, x, y);\n ctx.closeGroup();\n this.restoreStyle();\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Annotation.DEBUG` to `true`. */\nAnnotation.DEBUG = false;\nAnnotation.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n/** Text annotations can be positioned and justified relative to the note. */\nAnnotation.HorizontalJustify = AnnotationHorizontalJustify;\nAnnotation.HorizontalJustifyString = {\n left: AnnotationHorizontalJustify.LEFT,\n right: AnnotationHorizontalJustify.RIGHT,\n center: AnnotationHorizontalJustify.CENTER,\n centerStem: AnnotationHorizontalJustify.CENTER_STEM,\n};\nAnnotation.VerticalJustify = AnnotationVerticalJustify;\nAnnotation.VerticalJustifyString = {\n above: AnnotationVerticalJustify.TOP,\n top: AnnotationVerticalJustify.TOP,\n below: AnnotationVerticalJustify.BOTTOM,\n bottom: AnnotationVerticalJustify.BOTTOM,\n center: AnnotationVerticalJustify.CENTER,\n centerStem: AnnotationVerticalJustify.CENTER_STEM,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns.\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isGraceNote, isStaveNote, isStemmableNote, isTabNote } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Articulation.DEBUG)\n log('Vex.Flow.Articulation', args);\n}\nconst { ABOVE, BELOW } = Modifier.Position;\nfunction roundToNearestHalf(mathFn, value) {\n return mathFn(value / 0.5) * 0.5;\n}\n// This includes both staff and ledger lines\nfunction isWithinLines(line, position) {\n return position === ABOVE ? line <= 5 : line >= 1;\n}\nfunction getRoundingFunction(line, position) {\n if (isWithinLines(line, position)) {\n if (position === ABOVE) {\n return Math.ceil;\n }\n else {\n return Math.floor;\n }\n }\n else {\n return Math.round;\n }\n}\nfunction snapLineToStaff(canSitBetweenLines, line, position, offsetDirection) {\n // Initially, snap to nearest staff line or space\n const snappedLine = roundToNearestHalf(getRoundingFunction(line, position), line);\n const canSnapToStaffSpace = canSitBetweenLines && isWithinLines(snappedLine, position);\n const onStaffLine = snappedLine % 1 === 0;\n if (canSnapToStaffSpace && onStaffLine) {\n const HALF_STAFF_SPACE = 0.5;\n return snappedLine + HALF_STAFF_SPACE * -offsetDirection;\n }\n else {\n return snappedLine;\n }\n}\n// Helper function for checking if a Note object is either a StaveNote or a GraceNote.\nconst isStaveOrGraceNote = (note) => isStaveNote(note) || isGraceNote(note);\nfunction getTopY(note, textLine) {\n const stemDirection = note.getStemDirection();\n const { topY: stemTipY, baseY: stemBaseY } = note.getStemExtents();\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemTipY;\n }\n else {\n return stemBaseY;\n }\n }\n else {\n return Math.min(...note.getYs());\n }\n }\n else if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemTipY;\n }\n else {\n return note.checkStave().getYForTopText(textLine);\n }\n }\n else {\n return note.checkStave().getYForTopText(textLine);\n }\n }\n else {\n throw new RuntimeError('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes');\n }\n}\nfunction getBottomY(note, textLine) {\n const stemDirection = note.getStemDirection();\n const { topY: stemTipY, baseY: stemBaseY } = note.getStemExtents();\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemBaseY;\n }\n else {\n return stemTipY;\n }\n }\n else {\n return Math.max(...note.getYs());\n }\n }\n else if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return note.checkStave().getYForBottomText(textLine);\n }\n else {\n return stemTipY;\n }\n }\n else {\n return note.checkStave().getYForBottomText(textLine);\n }\n }\n else {\n throw new RuntimeError('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes');\n }\n}\n/**\n * Get the initial offset of the articulation from the y value of the starting position.\n * This is required because the top/bottom text positions already have spacing applied to\n * provide a \"visually pleasant\" default position. However the y values provided from\n * the stavenote's top/bottom do *not* have any pre-applied spacing. This function\n * normalizes this asymmetry.\n * @param note\n * @param position\n * @returns\n */\nfunction getInitialOffset(note, position) {\n const isOnStemTip = (position === ABOVE && note.getStemDirection() === Stem.UP) ||\n (position === BELOW && note.getStemDirection() === Stem.DOWN);\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem() && isOnStemTip) {\n return 0.5;\n }\n else {\n // this amount is larger than the stem-tip offset because we start from\n // the center of the notehead\n return 1;\n }\n }\n else {\n if (note.hasStem() && isOnStemTip) {\n return 1;\n }\n else {\n return 0;\n }\n }\n}\n/**\n * Articulations and Accents are modifiers that can be\n * attached to notes. The complete list of articulations is available in\n * `tables.ts` under `Vex.Flow.articulationCodes`.\n *\n * See `tests/articulation_tests.ts` for usage examples.\n */\nexport class Articulation extends Modifier {\n /**\n * Create a new articulation.\n * @param type entry in `Vex.Flow.articulationCodes` in `tables.ts`\n */\n constructor(type) {\n super();\n this.type = type;\n this.position = BELOW;\n this.render_options = {\n font_scale: 38,\n };\n this.reset();\n }\n /** Articulations category string. */\n static get CATEGORY() {\n return Category.Articulation;\n }\n /**\n * FIXME:\n * Most of the complex formatting logic (ie: snapping to space) is\n * actually done in .render(). But that logic belongs in this method.\n *\n * Unfortunately, this isn't possible because, by this point, stem lengths\n * have not yet been finalized. Finalized stem lengths are required to determine the\n * initial position of any stem-side articulation.\n *\n * This indicates that all objects should have their stave set before being\n * formatted. It can't be an optional if you want accurate vertical positioning.\n * Consistently positioned articulations that play nice with other modifiers\n * won't be possible until we stop relying on render-time formatting.\n *\n * Ideally, when this function has completed, the vertical articulation positions\n * should be ready to render without further adjustment. But the current state\n * is far from this ideal.\n */\n static format(articulations, state) {\n if (!articulations || articulations.length === 0)\n return false;\n const margin = 0.5;\n let maxGlyphWidth = 0;\n const getIncrement = (articulation, line, position) => roundToNearestHalf(getRoundingFunction(line, position), defined(articulation.glyph.getMetrics().height) / 10 + margin);\n articulations.forEach((articulation) => {\n const note = articulation.checkAttachedNote();\n maxGlyphWidth = Math.max(note.getGlyph().getWidth(), maxGlyphWidth);\n let lines = 5;\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let stemHeight = 0;\n // Decide if we need to consider beam direction in placement.\n if (isStemmableNote(note)) {\n const stem = note.getStem();\n if (stem) {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n const stave = note.getStave();\n if (stave) {\n lines = stave.getNumLines();\n }\n if (articulation.getPosition() === ABOVE) {\n let noteLine = note.getLineNumber(true);\n if (stemDirection === Stem.UP) {\n noteLine += stemHeight;\n }\n let increment = getIncrement(articulation, state.top_text_line, ABOVE);\n const curTop = noteLine + state.top_text_line + 0.5;\n // If articulation must be above stave, add lines between note and stave top\n if (!articulation.articulation.between_lines && curTop < lines) {\n increment += lines - curTop;\n }\n articulation.setTextLine(state.top_text_line);\n state.top_text_line += increment;\n }\n else if (articulation.getPosition() === BELOW) {\n let noteLine = Math.max(lines - note.getLineNumber(), 0);\n if (stemDirection === Stem.DOWN) {\n noteLine += stemHeight;\n }\n let increment = getIncrement(articulation, state.text_line, BELOW);\n const curBottom = noteLine + state.text_line + 0.5;\n // if articulation must be below stave, add lines from note to stave bottom\n if (!articulation.articulation.between_lines && curBottom < lines) {\n increment += lines - curBottom;\n }\n articulation.setTextLine(state.text_line);\n state.text_line += increment;\n }\n });\n const width = articulations\n .map((articulation) => articulation.getWidth())\n .reduce((maxWidth, articWidth) => Math.max(articWidth, maxWidth));\n const overlap = Math.min(Math.max(width - maxGlyphWidth, 0), Math.max(width - (state.left_shift + state.right_shift), 0));\n state.left_shift += overlap / 2;\n state.right_shift += overlap / 2;\n return true;\n }\n static easyScoreHook({ articulations }, note, builder) {\n if (!articulations)\n return;\n const articNameToCode = {\n staccato: 'a.',\n tenuto: 'a-',\n accent: 'a>',\n };\n articulations\n .split(',')\n .map((articString) => articString.trim().split('.'))\n .map(([name, position]) => {\n const artic = { type: articNameToCode[name] };\n if (position)\n artic.position = Modifier.PositionString[position];\n return builder.getFactory().Articulation(artic);\n })\n .map((artic) => note.addModifier(artic, 0));\n }\n reset() {\n this.articulation = Tables.articulationCodes(this.type);\n const articulation = defined(this.articulation, 'ArgumentError', `Articulation not found: ${this.type}`);\n const code = (this.position === ABOVE ? articulation.aboveCode : articulation.belowCode) || articulation.code;\n this.glyph = new Glyph(code !== null && code !== void 0 ? code : '', this.render_options.font_scale);\n this.setWidth(defined(this.glyph.getMetrics().width));\n }\n /** Render articulation in position next to note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const index = this.checkIndex();\n const { position, glyph, text_line: textLine } = this;\n const canSitBetweenLines = this.articulation.between_lines;\n const stave = note.checkStave();\n const staffSpace = stave.getSpacingBetweenLines();\n const isTab = isTabNote(note);\n // Articulations are centered over/under the note head.\n const { x } = note.getModifierStartXY(position, index);\n const shouldSitOutsideStaff = !canSitBetweenLines || isTab;\n const initialOffset = getInitialOffset(note, position);\n const padding = Tables.currentMusicFont().lookupMetric(`articulation.${glyph.getCode()}.padding`, 0);\n let y = {\n [ABOVE]: () => {\n glyph.setOrigin(0.5, 1);\n const y = getTopY(note, textLine) - (textLine + initialOffset) * staffSpace;\n return shouldSitOutsideStaff ? Math.min(stave.getYForTopText(Articulation.INITIAL_OFFSET), y) : y;\n },\n [BELOW]: () => {\n glyph.setOrigin(0.5, 0);\n const y = getBottomY(note, textLine) + (textLine + initialOffset) * staffSpace;\n return shouldSitOutsideStaff ? Math.max(stave.getYForBottomText(Articulation.INITIAL_OFFSET), y) : y;\n },\n }[position]();\n if (!isTab) {\n const offsetDirection = position === ABOVE ? -1 : +1;\n const noteLine = note.getKeyProps()[index].line;\n const distanceFromNote = (note.getYs()[index] - y) / staffSpace;\n const articLine = distanceFromNote + Number(noteLine);\n const snappedLine = snapLineToStaff(canSitBetweenLines, articLine, position, offsetDirection);\n if (isWithinLines(snappedLine, position))\n glyph.setOrigin(0.5, 0.5);\n y += Math.abs(snappedLine - articLine) * staffSpace * offsetDirection + padding * offsetDirection;\n }\n L(`Rendering articulation at (x: ${x}, y: ${y})`);\n glyph.render(ctx, x, y);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Articulation.DEBUG` to `true`. */\nArticulation.DEBUG = false;\nArticulation.INITIAL_OFFSET = -0.5;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Note } from './note';\nimport { Barline, BarlineType } from './stavebarline';\nimport { Category } from './typeguard';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (BarNote.DEBUG)\n log('Vex.Flow.BarNote', args);\n}\n/**\n * A `BarNote` is used to render bar lines (from `barline.ts`). `BarNote`s can\n * be added to a voice and rendered in the middle of a stave. Since it has no\n * duration, it consumes no `tick`s, and is dealt with appropriately by the formatter.\n *\n * See `tests/barnote_tests.ts` for usage examples.\n */\nexport class BarNote extends Note {\n constructor(type = BarlineType.SINGLE) {\n super({ duration: 'b' });\n this.metrics = {\n widths: {},\n };\n const TYPE = BarlineType;\n this.metrics.widths = {\n [TYPE.SINGLE]: 8,\n [TYPE.DOUBLE]: 12,\n [TYPE.END]: 15,\n [TYPE.REPEAT_BEGIN]: 14,\n [TYPE.REPEAT_END]: 14,\n [TYPE.REPEAT_BOTH]: 18,\n [TYPE.NONE]: 0,\n };\n // Tell the formatter that bar notes have no duration.\n this.ignore_ticks = true;\n this.setType(type);\n }\n static get CATEGORY() {\n return Category.BarNote;\n }\n /** Get the type of bar note.*/\n getType() {\n return this.type;\n }\n /** Set the type of bar note. */\n setType(type) {\n this.type = typeof type === 'string' ? Barline.typeString[type] : type;\n // Set width to width of relevant `Barline`.\n this.setWidth(this.metrics.widths[this.type]);\n return this;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n /** Overridden to ignore. */\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n /** Render note to stave. */\n draw() {\n const ctx = this.checkContext();\n L('Rendering bar line at: ', this.getAbsoluteX());\n this.applyStyle(ctx);\n const barline = new Barline(this.type);\n barline.setX(this.getAbsoluteX());\n barline.draw(this.checkStave());\n this.restoreStyle(ctx);\n this.setRendered();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.BarNote.DEBUG` to `true`. */\nBarNote.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TupletLocation } from './tuplet';\nimport { Category, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nfunction calculateStemDirection(notes) {\n let lineSum = 0;\n notes.forEach((note) => {\n if (note.keyProps) {\n note.keyProps.forEach((keyProp) => {\n lineSum += keyProp.line - 3;\n });\n }\n });\n if (lineSum >= 0) {\n return Stem.DOWN;\n }\n return Stem.UP;\n}\nfunction getStemSlope(firstNote, lastNote) {\n const firstStemTipY = firstNote.getStemExtents().topY;\n const firstStemX = firstNote.getStemX();\n const lastStemTipY = lastNote.getStemExtents().topY;\n const lastStemX = lastNote.getStemX();\n return (lastStemTipY - firstStemTipY) / (lastStemX - firstStemX);\n}\nexport const BEAM_LEFT = 'L';\nexport const BEAM_RIGHT = 'R';\nexport const BEAM_BOTH = 'B';\n/** `Beams` span over a set of `StemmableNotes`. */\nexport class Beam extends Element {\n constructor(notes, auto_stem = false) {\n super();\n this.slope = 0;\n this.y_shift = 0;\n /**\n * Overrides to default beam directions for secondary-level beams that do not\n * connect to any other note. See further explanation at\n * `setPartialBeamSideAt`\n */\n this.forcedPartialDirections = {};\n if (!notes || notes.length === 0) {\n throw new RuntimeError('BadArguments', 'No notes provided for beam.');\n }\n if (notes.length === 1) {\n throw new RuntimeError('BadArguments', 'Too few notes for beam.');\n }\n // Validate beam line, direction and ticks.\n this.ticks = notes[0].getIntrinsicTicks();\n if (this.ticks >= Tables.durationToTicks('4')) {\n throw new RuntimeError('BadArguments', 'Beams can only be applied to notes shorter than a quarter note.');\n }\n let i; // shared iterator\n let note;\n this.stem_direction = Stem.UP;\n for (i = 0; i < notes.length; ++i) {\n note = notes[i];\n if (note.hasStem()) {\n this.stem_direction = note.getStemDirection();\n break;\n }\n }\n let stem_direction = this.stem_direction;\n // Figure out optimal stem direction based on given notes\n if (auto_stem && isStaveNote(notes[0])) {\n stem_direction = calculateStemDirection(notes);\n }\n else if (auto_stem && isTabNote(notes[0])) {\n // Auto Stem TabNotes\n const stem_weight = notes.reduce((memo, note) => memo + note.getStemDirection(), 0);\n stem_direction = stem_weight > -1 ? Stem.UP : Stem.DOWN;\n }\n // Apply stem directions and attach beam to notes\n for (i = 0; i < notes.length; ++i) {\n note = notes[i];\n if (auto_stem) {\n note.setStemDirection(stem_direction);\n this.stem_direction = stem_direction;\n }\n note.setBeam(this);\n }\n this.postFormatted = false;\n this.notes = notes;\n this.beam_count = this.getBeamCount();\n this.break_on_indices = [];\n this.render_options = {\n beam_width: 5,\n max_slope: 0.25,\n min_slope: -0.25,\n slope_iterations: 20,\n slope_cost: 100,\n show_stemlets: false,\n stemlet_extension: 7,\n partial_beam_length: 10,\n flat_beams: false,\n min_flat_beam_offset: 15,\n };\n }\n static get CATEGORY() {\n return Category.Beam;\n }\n /** Get the direction of the beam */\n getStemDirection() {\n return this.stem_direction;\n }\n /**\n * Get the default beam groups for a provided time signature.\n * Attempt to guess if the time signature is not found in table.\n * Currently this is fairly naive.\n */\n static getDefaultBeamGroups(time_sig) {\n if (!time_sig || time_sig === 'c') {\n time_sig = '4/4';\n }\n const defaults = {\n '1/2': ['1/2'],\n '2/2': ['1/2'],\n '3/2': ['1/2'],\n '4/2': ['1/2'],\n '1/4': ['1/4'],\n '2/4': ['1/4'],\n '3/4': ['1/4'],\n '4/4': ['1/4'],\n '1/8': ['1/8'],\n '2/8': ['2/8'],\n '3/8': ['3/8'],\n '4/8': ['2/8'],\n '1/16': ['1/16'],\n '2/16': ['2/16'],\n '3/16': ['3/16'],\n '4/16': ['2/16'],\n };\n const groups = defaults[time_sig];\n if (groups === undefined) {\n // If no beam groups found, naively determine\n // the beam groupings from the time signature\n const beatTotal = parseInt(time_sig.split('/')[0], 10);\n const beatValue = parseInt(time_sig.split('/')[1], 10);\n const tripleMeter = beatTotal % 3 === 0;\n if (tripleMeter) {\n return [new Fraction(3, beatValue)];\n }\n else if (beatValue > 4) {\n return [new Fraction(2, beatValue)];\n }\n else if (beatValue <= 4) {\n return [new Fraction(1, beatValue)];\n }\n }\n else {\n return groups.map((group) => new Fraction().parse(group));\n }\n return [new Fraction(1, 4)];\n }\n /**\n * A helper function to automatically build basic beams for a voice. For more\n * complex auto-beaming use `Beam.generateBeams()`.\n * @param voice the voice to generate the beams for\n * @param stem_direction a stem direction to apply to the entire voice\n * @param groups an array of `Fraction` representing beat groupings for the beam\n */\n static applyAndGetBeams(voice, stem_direction, groups) {\n return Beam.generateBeams(voice.getTickables(), { groups, stem_direction });\n }\n /**\n * A helper function to autimatically build beams for a voice with\n * configuration options.\n *\n * Example configuration object:\n *\n * ```\n * config = {\n * groups: [new Vex.Flow.Fraction(2, 8)],\n * stem_direction: -1,\n * beam_rests: true,\n * beam_middle_only: true,\n * show_stemlets: false\n * };\n * ```\n * @param notes an array of notes to create the beams for\n * @param config the configuration object\n * @param config.stem_direction set to apply the same direction to all notes\n * @param config.beam_rests set to `true` to include rests in the beams\n * @param config.beam_middle_only set to `true` to only beam rests in the middle of the beat\n * @param config.show_stemlets set to `true` to draw stemlets for rests\n * @param config.maintain_stem_directions set to `true` to not apply new stem directions\n * @param config.groups array of `Fractions` that represent the beat structure to beam the notes\n *\n */\n static generateBeams(notes, config = {}) {\n if (!config.groups || !config.groups.length) {\n config.groups = [new Fraction(2, 8)];\n }\n // Convert beam groups to tick amounts\n const tickGroups = config.groups.map((group) => {\n if (!group.multiply) {\n throw new RuntimeError('InvalidBeamGroups', 'The beam groups must be an array of Vex.Flow.Fractions');\n }\n return group.clone().multiply(Tables.RESOLUTION, 1);\n });\n const unprocessedNotes = notes;\n let currentTickGroup = 0;\n let noteGroups = [];\n let currentGroup = [];\n function getTotalTicks(vf_notes) {\n return vf_notes.reduce((memo, note) => note.getTicks().clone().add(memo), new Fraction(0, 1));\n }\n function nextTickGroup() {\n if (tickGroups.length - 1 > currentTickGroup) {\n currentTickGroup += 1;\n }\n else {\n currentTickGroup = 0;\n }\n }\n function createGroups() {\n let nextGroup = [];\n // number of ticks in current group\n let currentGroupTotalTicks = new Fraction(0, 1);\n unprocessedNotes.forEach((unprocessedNote) => {\n nextGroup = [];\n if (unprocessedNote.shouldIgnoreTicks()) {\n noteGroups.push(currentGroup);\n currentGroup = nextGroup;\n return; // Ignore untickables (like bar notes)\n }\n currentGroup.push(unprocessedNote);\n const ticksPerGroup = tickGroups[currentTickGroup].clone();\n const totalTicks = getTotalTicks(currentGroup).add(currentGroupTotalTicks);\n // Double the amount of ticks in a group, if it's an unbeamable tuplet\n const unbeamable = Tables.durationToNumber(unprocessedNote.getDuration()) < 8;\n if (unbeamable && unprocessedNote.getTuplet()) {\n ticksPerGroup.numerator *= 2;\n }\n // If the note that was just added overflows the group tick total\n if (totalTicks.greaterThan(ticksPerGroup)) {\n // If the overflow note can be beamed, start the next group\n // with it. Unbeamable notes leave the group overflowed.\n if (!unbeamable) {\n const note = currentGroup.pop();\n if (note)\n nextGroup.push(note);\n }\n noteGroups.push(currentGroup);\n // We have overflown, so we're going to next tick group. As we might have\n // overflown by more than 1 group, we need to go forward as many times as\n // needed, decreasing currentGroupTotalTicks by as many ticks as there are\n // in current groups as we go forward.\n do {\n currentGroupTotalTicks = totalTicks.subtract(tickGroups[currentTickGroup]);\n nextTickGroup();\n } while (currentGroupTotalTicks.greaterThanEquals(tickGroups[currentTickGroup]));\n currentGroup = nextGroup;\n }\n else if (totalTicks.equals(ticksPerGroup)) {\n noteGroups.push(currentGroup);\n currentGroupTotalTicks = new Fraction(0, 1);\n currentGroup = nextGroup;\n nextTickGroup();\n }\n });\n // Adds any remainder notes beam\n if (currentGroup.length > 0) {\n noteGroups.push(currentGroup);\n }\n }\n function getBeamGroups() {\n return noteGroups.filter((group) => {\n if (group.length > 1) {\n let beamable = true;\n group.forEach((note) => {\n if (note.getIntrinsicTicks() >= Tables.durationToTicks('4')) {\n beamable = false;\n }\n });\n return beamable;\n }\n return false;\n });\n }\n // Splits up groups by Rest\n function sanitizeGroups() {\n const sanitizedGroups = [];\n noteGroups.forEach((group) => {\n let tempGroup = [];\n group.forEach((note, index, group) => {\n const isFirstOrLast = index === 0 || index === group.length - 1;\n const prevNote = group[index - 1];\n const breaksOnEachRest = !config.beam_rests && note.isRest();\n const breaksOnFirstOrLastRest = config.beam_rests && config.beam_middle_only && note.isRest() && isFirstOrLast;\n let breakOnStemChange = false;\n if (config.maintain_stem_directions && prevNote && !note.isRest() && !prevNote.isRest()) {\n const prevDirection = prevNote.getStemDirection();\n const currentDirection = note.getStemDirection();\n breakOnStemChange = currentDirection !== prevDirection;\n }\n const isUnbeamableDuration = parseInt(note.getDuration(), 10) < 8;\n // Determine if the group should be broken at this note\n const shouldBreak = breaksOnEachRest || breaksOnFirstOrLastRest || breakOnStemChange || isUnbeamableDuration;\n if (shouldBreak) {\n // Add current group\n if (tempGroup.length > 0) {\n sanitizedGroups.push(tempGroup);\n }\n // Start a new group. Include the current note if the group\n // was broken up by stem direction, as that note needs to start\n // the next group of notes\n tempGroup = breakOnStemChange ? [note] : [];\n }\n else {\n // Add note to group\n tempGroup.push(note);\n }\n });\n // If there is a remaining group, add it as well\n if (tempGroup.length > 0) {\n sanitizedGroups.push(tempGroup);\n }\n });\n noteGroups = sanitizedGroups;\n }\n function formatStems() {\n noteGroups.forEach((group) => {\n let stemDirection;\n if (config.maintain_stem_directions) {\n const note = findFirstNote(group);\n stemDirection = note ? note.getStemDirection() : Stem.UP;\n }\n else {\n if (config.stem_direction) {\n stemDirection = config.stem_direction;\n }\n else {\n stemDirection = calculateStemDirection(group);\n }\n }\n applyStemDirection(group, stemDirection);\n });\n }\n function findFirstNote(group) {\n for (let i = 0; i < group.length; i++) {\n const note = group[i];\n if (!note.isRest()) {\n return note;\n }\n }\n return false;\n }\n function applyStemDirection(group, direction) {\n group.forEach((note) => {\n note.setStemDirection(direction);\n });\n }\n // Get all of the tuplets in all of the note groups\n function getTuplets() {\n const uniqueTuplets = [];\n // Go through all of the note groups and inspect for tuplets\n noteGroups.forEach((group) => {\n let tuplet;\n group.forEach((note) => {\n const noteTuplet = note.getTuplet();\n if (noteTuplet && tuplet !== noteTuplet) {\n tuplet = noteTuplet;\n uniqueTuplets.push(tuplet);\n }\n });\n });\n return uniqueTuplets;\n }\n // Using closures to store the variables throughout the various functions\n // IMO Keeps it this process lot cleaner - but not super consistent with\n // the rest of the API's style - Silverwolf90 (Cyril)\n createGroups();\n sanitizeGroups();\n formatStems();\n // Get the notes to be beamed\n const beamedNoteGroups = getBeamGroups();\n // Get the tuplets in order to format them accurately\n const allTuplets = getTuplets();\n // Create a Vex.Flow.Beam from each group of notes to be beamed\n const beams = [];\n beamedNoteGroups.forEach((group) => {\n const beam = new Beam(group);\n if (config.show_stemlets) {\n beam.render_options.show_stemlets = true;\n }\n if (config.secondary_breaks) {\n beam.render_options.secondary_break_ticks = Tables.durationToTicks(config.secondary_breaks);\n }\n if (config.flat_beams === true) {\n beam.render_options.flat_beams = true;\n beam.render_options.flat_beam_offset = config.flat_beam_offset;\n }\n beams.push(beam);\n });\n // Reformat tuplets\n allTuplets.forEach((tuplet) => {\n // Set the tuplet location based on the stem direction\n const direction = tuplet.notes[0].stem_direction === Stem.DOWN ? TupletLocation.BOTTOM : TupletLocation.TOP;\n tuplet.setTupletLocation(direction);\n // If any of the notes in the tuplet are not beamed, draw a bracket.\n let bracketed = false;\n for (let i = 0; i < tuplet.notes.length; i++) {\n const note = tuplet.notes[i];\n if (!note.hasBeam()) {\n bracketed = true;\n break;\n }\n }\n tuplet.setBracketed(bracketed);\n });\n return beams;\n }\n /** Get the notes in this beam. */\n getNotes() {\n return this.notes;\n }\n /** Get the max number of beams in the set of notes. */\n getBeamCount() {\n const beamCounts = this.notes.map((note) => note.getGlyph().beam_count);\n const maxBeamCount = beamCounts.reduce((max, beamCount) => (beamCount > max ? beamCount : max));\n return maxBeamCount;\n }\n /** Set which note `indices` to break the secondary beam at. */\n breakSecondaryAt(indices) {\n this.break_on_indices = indices;\n return this;\n }\n /**\n * Forces the direction of a partial beam (a secondary-level beam that exists\n * on one note only of the beam group). This is useful in rhythms such as 6/8\n * eighth-sixteenth-eighth-sixteenth, where the direction of the beam on the\n * first sixteenth note can help imply whether the rhythm is to be felt as\n * three groups of eighth notes (typical) or as two groups of three-sixteenths\n * (less common):\n * ```\n * ┌───┬──┬──┐ ┌──┬──┬──┐\n * │ ├─ │ ─┤ vs │ ─┤ │ ─┤\n * │ │ │ │ │ │ │ │\n * ```\n */\n setPartialBeamSideAt(noteIndex, side) {\n this.forcedPartialDirections[noteIndex] = side;\n return this;\n }\n /**\n * Restore the default direction of a partial beam (a secondary-level beam\n * that does not connect to any other notes).\n */\n unsetPartialBeamSideAt(noteIndex) {\n delete this.forcedPartialDirections[noteIndex];\n return this;\n }\n /** Return the y coordinate for linear function. */\n getSlopeY(x, first_x_px, first_y_px, slope) {\n return first_y_px + (x - first_x_px) * slope;\n }\n /** Calculate the best possible slope for the provided notes. */\n calculateSlope() {\n const { notes, stem_direction: stemDirection, render_options: { max_slope, min_slope, slope_iterations, slope_cost }, } = this;\n const firstNote = notes[0];\n const initialSlope = getStemSlope(firstNote, notes[notes.length - 1]);\n const increment = (max_slope - min_slope) / slope_iterations;\n let minCost = Number.MAX_VALUE;\n let bestSlope = 0;\n let yShift = 0;\n // iterate through slope values to find best weighted fit\n for (let slope = min_slope; slope <= max_slope; slope += increment) {\n let totalStemExtension = 0;\n let yShiftTemp = 0;\n // iterate through notes, calculating y shift and stem extension\n for (let i = 1; i < notes.length; ++i) {\n const note = notes[i];\n if (note.hasStem() || note.isRest()) {\n const adjustedStemTipY = this.getSlopeY(note.getStemX(), firstNote.getStemX(), firstNote.getStemExtents().topY, slope) + yShiftTemp;\n const stemTipY = note.getStemExtents().topY;\n // beam needs to be shifted up to accommodate note\n if (stemTipY * stemDirection < adjustedStemTipY * stemDirection) {\n const diff = Math.abs(stemTipY - adjustedStemTipY);\n yShiftTemp += diff * -stemDirection;\n totalStemExtension += diff * i;\n }\n else {\n // beam overshoots note, account for the difference\n totalStemExtension += (stemTipY - adjustedStemTipY) * stemDirection;\n }\n }\n }\n // most engraving books suggest aiming for a slope about half the angle of the\n // difference between the first and last notes' stem length;\n const idealSlope = initialSlope / 2;\n const distanceFromIdeal = Math.abs(idealSlope - slope);\n // This tries to align most beams to something closer to the idealSlope, but\n // doesn't go crazy. To disable, set this.render_options.slope_cost = 0\n const cost = slope_cost * distanceFromIdeal + Math.abs(totalStemExtension);\n // update state when a more ideal slope is found\n if (cost < minCost) {\n minCost = cost;\n bestSlope = slope;\n yShift = yShiftTemp;\n }\n }\n this.slope = bestSlope;\n this.y_shift = yShift;\n }\n /** Calculate a slope and y-shift for flat beams. */\n calculateFlatSlope() {\n const { notes, stem_direction, render_options: { beam_width, min_flat_beam_offset, flat_beam_offset }, } = this;\n // If a flat beam offset has not yet been supplied or calculated,\n // generate one based on the notes in this particular note group\n let total = 0;\n let extremeY = 0; // Store the highest or lowest note here\n let extremeBeamCount = 0; // The beam count of the extreme note\n let currentExtreme = 0;\n for (let i = 0; i < notes.length; i++) {\n // Total up all of the offsets so we can average them out later\n const note = notes[i];\n const stemTipY = note.getStemExtents().topY;\n total += stemTipY;\n // Store the highest (stems-up) or lowest (stems-down) note so the\n // offset can be adjusted in case the average isn't enough\n if (stem_direction === Stem.DOWN && currentExtreme < stemTipY) {\n currentExtreme = stemTipY;\n extremeY = Math.max(...note.getYs());\n extremeBeamCount = note.getBeamCount();\n }\n else if (stem_direction === Stem.UP && (currentExtreme === 0 || currentExtreme > stemTipY)) {\n currentExtreme = stemTipY;\n extremeY = Math.min(...note.getYs());\n extremeBeamCount = note.getBeamCount();\n }\n }\n // Average the offsets to try and come up with a reasonable one that\n // works for all of the notes in the beam group.\n let offset = total / notes.length;\n // In case the average isn't long enough, add or subtract some more\n // based on the highest or lowest note (again, based on the stem\n // direction). This also takes into account the added height due to\n // the width of the beams.\n const beamWidth = beam_width * 1.5;\n const extremeTest = min_flat_beam_offset + extremeBeamCount * beamWidth;\n const newOffset = extremeY + extremeTest * -stem_direction;\n if (stem_direction === Stem.DOWN && offset < newOffset) {\n offset = extremeY + extremeTest;\n }\n else if (stem_direction === Stem.UP && offset > newOffset) {\n offset = extremeY - extremeTest;\n }\n if (!flat_beam_offset) {\n // Set the offset for the group based on the calculations above.\n this.render_options.flat_beam_offset = offset;\n }\n else if (stem_direction === Stem.DOWN && offset > flat_beam_offset) {\n this.render_options.flat_beam_offset = offset;\n }\n else if (stem_direction === Stem.UP && offset < flat_beam_offset) {\n this.render_options.flat_beam_offset = offset;\n }\n // for flat beams, the slope and y_shift are simply 0\n this.slope = 0;\n this.y_shift = 0;\n }\n /** Return the Beam y offset. */\n getBeamYToDraw() {\n const firstNote = this.notes[0];\n const firstStemTipY = firstNote.getStemExtents().topY;\n let beamY = firstStemTipY;\n // For flat beams, set the first and last Y to the offset, rather than\n // using the note's stem extents.\n if (this.render_options.flat_beams && this.render_options.flat_beam_offset) {\n beamY = this.render_options.flat_beam_offset;\n }\n return beamY;\n }\n /**\n * Create new stems for the notes in the beam, so that each stem\n * extends into the beams.\n */\n applyStemExtensions() {\n const { notes, slope, y_shift, stem_direction, beam_count, render_options: { show_stemlets, stemlet_extension, beam_width }, } = this;\n const firstNote = notes[0];\n const firstStemTipY = this.getBeamYToDraw();\n const firstStemX = firstNote.getStemX();\n for (let i = 0; i < notes.length; ++i) {\n const note = notes[i];\n const stem = note.getStem();\n if (stem) {\n const stemX = note.getStemX();\n const { topY: stemTipY } = note.getStemExtents();\n const beamedStemTipY = this.getSlopeY(stemX, firstStemX, firstStemTipY, slope) + y_shift;\n const preBeamExtension = stem.getExtension();\n const beamExtension = stem_direction === Stem.UP ? stemTipY - beamedStemTipY : beamedStemTipY - stemTipY;\n stem.setExtension(preBeamExtension + beamExtension);\n stem.adjustHeightForBeam();\n if (note.isRest() && show_stemlets) {\n const beamWidth = beam_width;\n const totalBeamWidth = (beam_count - 1) * beamWidth * 1.5 + beamWidth;\n stem.setVisibility(true).setStemlet(true, totalBeamWidth + stemlet_extension);\n }\n }\n }\n }\n /** Return upper level beam direction. */\n lookupBeamDirection(duration, prev_tick, tick, next_tick, noteIndex) {\n if (duration === '4') {\n return BEAM_LEFT;\n }\n const forcedBeamDirection = this.forcedPartialDirections[noteIndex];\n if (forcedBeamDirection)\n return forcedBeamDirection;\n const lookup_duration = `${Tables.durationToNumber(duration) / 2}`;\n const prev_note_gets_beam = prev_tick < Tables.durationToTicks(lookup_duration);\n const next_note_gets_beam = next_tick < Tables.durationToTicks(lookup_duration);\n const note_gets_beam = tick < Tables.durationToTicks(lookup_duration);\n if (prev_note_gets_beam && next_note_gets_beam && note_gets_beam) {\n return BEAM_BOTH;\n }\n else if (prev_note_gets_beam && !next_note_gets_beam && note_gets_beam) {\n return BEAM_LEFT;\n }\n else if (!prev_note_gets_beam && next_note_gets_beam && note_gets_beam) {\n return BEAM_RIGHT;\n }\n return this.lookupBeamDirection(lookup_duration, prev_tick, tick, next_tick, noteIndex);\n }\n /** Get the x coordinates for the beam lines of specific `duration`. */\n getBeamLines(duration) {\n const tick_of_duration = Tables.durationToTicks(duration);\n let beam_started = false;\n const beam_lines = [];\n let current_beam = undefined;\n const partial_beam_length = this.render_options.partial_beam_length;\n let previous_should_break = false;\n let tick_tally = 0;\n for (let i = 0; i < this.notes.length; ++i) {\n const note = this.notes[i];\n // See if we need to break secondary beams on this note.\n const ticks = note.getTicks().value();\n tick_tally += ticks;\n let should_break = false;\n // 8th note beams are always drawn.\n if (parseInt(duration, 10) >= 8) {\n // First, check to see if any indices were set up through breakSecondaryAt()\n should_break = this.break_on_indices.indexOf(i) !== -1;\n // If the secondary breaks were auto-configured in the render options,\n // handle that as well.\n if (this.render_options.secondary_break_ticks && tick_tally >= this.render_options.secondary_break_ticks) {\n tick_tally = 0;\n should_break = true;\n }\n }\n const note_gets_beam = note.getIntrinsicTicks() < tick_of_duration;\n const stem_x = note.getStemX() - Stem.WIDTH / 2;\n // Check to see if the next note in the group will get a beam at this\n // level. This will help to inform the partial beam logic below.\n const prev_note = this.notes[i - 1];\n const next_note = this.notes[i + 1];\n const next_note_gets_beam = next_note && next_note.getIntrinsicTicks() < tick_of_duration;\n const prev_note_gets_beam = prev_note && prev_note.getIntrinsicTicks() < tick_of_duration;\n const beam_alone = prev_note && next_note && note_gets_beam && !prev_note_gets_beam && !next_note_gets_beam;\n // const beam_alone = note_gets_beam && !prev_note_gets_beam && !next_note_gets_beam;\n if (note_gets_beam) {\n // This note gets a beam at the current level\n if (beam_started) {\n // We're currently in the middle of a beam. Just continue it on to\n // the stem X of the current note.\n current_beam = beam_lines[beam_lines.length - 1];\n current_beam.end = stem_x;\n // If a secondary beam break is set up, end the beam right now.\n if (should_break) {\n beam_started = false;\n if (next_note && !next_note_gets_beam && current_beam.end === undefined) {\n // This note gets a beam,.but the next one does not. This means\n // we need a partial pointing right.\n current_beam.end = current_beam.start - partial_beam_length;\n }\n }\n }\n else {\n // No beam started yet. Start a new one.\n current_beam = { start: stem_x, end: undefined };\n beam_started = true;\n if (beam_alone) {\n // previous and next beam exists and does not get a beam but current gets it.\n const prev_tick = prev_note.getIntrinsicTicks();\n const next_tick = next_note.getIntrinsicTicks();\n const tick = note.getIntrinsicTicks();\n const beam_direction = this.lookupBeamDirection(duration, prev_tick, tick, next_tick, i);\n if ([BEAM_LEFT, BEAM_BOTH].includes(beam_direction)) {\n current_beam.end = current_beam.start - partial_beam_length;\n }\n else {\n current_beam.end = current_beam.start + partial_beam_length;\n }\n }\n else if (!next_note_gets_beam) {\n // The next note doesn't get a beam. Draw a partial.\n if ((previous_should_break || i === 0) && next_note) {\n // This is the first note (but not the last one), or it is\n // following a secondary break. Draw a partial to the right.\n current_beam.end = current_beam.start + partial_beam_length;\n }\n else {\n // By default, draw a partial to the left.\n current_beam.end = current_beam.start - partial_beam_length;\n }\n }\n else if (should_break) {\n // This note should have a secondary break after it. Even though\n // we just started a beam, it needs to end immediately.\n current_beam.end = current_beam.start - partial_beam_length;\n beam_started = false;\n }\n beam_lines.push(current_beam);\n }\n }\n else {\n // The current note does not get a beam.\n beam_started = false;\n }\n // Store the secondary break flag to inform the partial beam logic in\n // the next iteration of the loop.\n previous_should_break = should_break;\n }\n // Add a partial beam pointing left if this is the last note in the group\n const last_beam = beam_lines[beam_lines.length - 1];\n if (last_beam && last_beam.end === undefined) {\n last_beam.end = last_beam.start - partial_beam_length;\n }\n return beam_lines;\n }\n /** Render the stems for each note. */\n drawStems(ctx) {\n this.notes.forEach((note) => {\n const stem = note.getStem();\n if (stem) {\n const stem_x = note.getStemX();\n stem.setNoteHeadXBounds(stem_x, stem_x);\n stem.setContext(ctx).draw();\n }\n }, this);\n }\n // Render the beam lines\n drawBeamLines(ctx) {\n const valid_beam_durations = ['4', '8', '16', '32', '64'];\n const firstNote = this.notes[0];\n let beamY = this.getBeamYToDraw();\n const firstStemX = firstNote.getStemX();\n const beamThickness = this.render_options.beam_width * this.stem_direction;\n // Draw the beams.\n for (let i = 0; i < valid_beam_durations.length; ++i) {\n const duration = valid_beam_durations[i];\n const beamLines = this.getBeamLines(duration);\n for (let j = 0; j < beamLines.length; ++j) {\n const beam_line = beamLines[j];\n const startBeamX = beam_line.start;\n const startBeamY = this.getSlopeY(startBeamX, firstStemX, beamY, this.slope);\n const lastBeamX = beam_line.end;\n if (lastBeamX) {\n const lastBeamY = this.getSlopeY(lastBeamX, firstStemX, beamY, this.slope);\n ctx.openGroup('beam', this.getAttribute('id'));\n ctx.beginPath();\n ctx.moveTo(startBeamX, startBeamY);\n ctx.lineTo(startBeamX, startBeamY + beamThickness);\n ctx.lineTo(lastBeamX + 1, lastBeamY + beamThickness);\n ctx.lineTo(lastBeamX + 1, lastBeamY);\n ctx.closePath();\n ctx.fill();\n ctx.closeGroup();\n }\n else {\n throw new RuntimeError('NoLastBeamX', 'lastBeamX undefined.');\n }\n }\n beamY += beamThickness * 1.5;\n }\n }\n /** Pre-format the beam. */\n preFormat() {\n return this;\n }\n /**\n * Post-format the beam. This can only be called after\n * the notes in the beam have both `x` and `y` values. ie: they've\n * been formatted and have staves.\n */\n postFormat() {\n if (this.postFormatted)\n return;\n // Calculate a smart slope if we're not forcing the beams to be flat.\n if (isTabNote(this.notes[0]) || this.render_options.flat_beams) {\n this.calculateFlatSlope();\n }\n else {\n this.calculateSlope();\n }\n this.applyStemExtensions();\n this.postFormatted = true;\n }\n /** Render the beam to the canvas context */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n if (this.unbeamable)\n return;\n if (!this.postFormatted) {\n this.postFormat();\n }\n this.drawStems(ctx);\n this.applyStyle();\n this.drawBeamLines(ctx);\n this.restoreStyle();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Modifier } from './modifier';\nimport { TextFormatter } from './textformatter';\nimport { Category, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\n/** Bend implements tablature bends. */\nexport class Bend extends Modifier {\n /**\n * Example of a phrase:\n * ```\n * [{\n * type: UP,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: DOWN,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: UP,\n * text: \"half\"\n * width: 8;\n * },\n * {\n * type: UP,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: DOWN,\n * text: \"1 1/2\"\n * width: 8;\n * }]\n * ```\n * @param text text for bend (\"Full\", \"Half\", etc.) (DEPRECATED)\n * @param release if true, render a release. (DEPRECATED)\n * @param phrase if set, ignore \"text\" and \"release\", and use the more sophisticated phrase specified\n */\n constructor(text, release = false, phrase) {\n super();\n this.text = text;\n this.x_shift = 0;\n this.release = release;\n this.tap = '';\n this.resetFont();\n this.render_options = {\n line_width: 1.5,\n line_style: '#777777',\n bend_width: 8,\n release_width: 8,\n };\n if (phrase) {\n this.phrase = phrase;\n }\n else {\n // Backward compatibility\n this.phrase = [{ type: Bend.UP, text: this.text }];\n if (this.release)\n this.phrase.push({ type: Bend.DOWN, text: '' });\n }\n this.updateWidth();\n }\n static get CATEGORY() {\n return Category.Bend;\n }\n static get UP() {\n return 0;\n }\n static get DOWN() {\n return 1;\n }\n // Arrange bends in `ModifierContext`\n static format(bends, state) {\n if (!bends || bends.length === 0)\n return false;\n let last_width = 0;\n // Format Bends\n for (let i = 0; i < bends.length; ++i) {\n const bend = bends[i];\n const note = bend.checkAttachedNote();\n if (isTabNote(note)) {\n const stringPos = note.leastString() - 1;\n if (state.top_text_line < stringPos) {\n state.top_text_line = stringPos;\n }\n }\n bend.setXShift(last_width);\n last_width = bend.getWidth();\n bend.setTextLine(state.top_text_line);\n }\n state.right_shift += last_width;\n state.top_text_line += 1;\n return true;\n }\n /** Set horizontal shift in pixels. */\n setXShift(value) {\n this.x_shift = value;\n this.updateWidth();\n return this;\n }\n setTap(value) {\n this.tap = value;\n return this;\n }\n /** Get text provided in the constructor. */\n getText() {\n return this.text;\n }\n getTextHeight() {\n const textFormatter = TextFormatter.create(this.textFont);\n return textFormatter.maxHeight;\n }\n /** Recalculate width. */\n updateWidth() {\n const textFormatter = TextFormatter.create(this.textFont);\n const measureText = (text) => {\n return textFormatter.getWidthForTextInPx(text);\n };\n let totalWidth = 0;\n for (let i = 0; i < this.phrase.length; ++i) {\n const bend = this.phrase[i];\n if (bend.width !== undefined) {\n totalWidth += bend.width;\n }\n else {\n const additional_width = bend.type === Bend.UP ? this.render_options.bend_width : this.render_options.release_width;\n bend.width = Math.max(additional_width, measureText(bend.text)) + 3;\n bend.draw_width = bend.width / 2;\n totalWidth += bend.width;\n }\n }\n this.setWidth(totalWidth + this.x_shift);\n return this;\n }\n /** Draw the bend on the rendering context. */\n draw() {\n var _a;\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(Modifier.Position.RIGHT, this.index);\n start.x += 3;\n start.y += 0.5;\n const x_shift = this.x_shift;\n const stave = note.checkStave();\n const spacing = stave.getSpacingBetweenLines();\n const lowestY = note.getYs().reduce((a, b) => (a < b ? a : b));\n // this.text_line is relative to top string in the group.\n const bend_height = start.y - ((this.text_line + 1) * spacing + start.y - lowestY) + 3;\n const annotation_y = start.y - ((this.text_line + 1) * spacing + start.y - lowestY) - 1;\n const renderBend = (x, y, width, height) => {\n const cp_x = x + width;\n const cp_y = y;\n ctx.save();\n ctx.beginPath();\n ctx.setLineWidth(this.render_options.line_width);\n ctx.setStrokeStyle(this.render_options.line_style);\n ctx.setFillStyle(this.render_options.line_style);\n ctx.moveTo(x, y);\n ctx.quadraticCurveTo(cp_x, cp_y, x + width, height);\n ctx.stroke();\n ctx.restore();\n };\n const renderRelease = (x, y, width, height) => {\n ctx.save();\n ctx.beginPath();\n ctx.setLineWidth(this.render_options.line_width);\n ctx.setStrokeStyle(this.render_options.line_style);\n ctx.setFillStyle(this.render_options.line_style);\n ctx.moveTo(x, height);\n ctx.quadraticCurveTo(x + width, height, x + width, y);\n ctx.stroke();\n ctx.restore();\n };\n const renderArrowHead = (x, y, direction) => {\n const width = 4;\n const yBase = y + width * direction;\n ctx.beginPath();\n ctx.moveTo(x, y); // tip of the arrow\n ctx.lineTo(x - width, yBase);\n ctx.lineTo(x + width, yBase);\n ctx.closePath();\n ctx.fill();\n };\n const renderText = (x, text) => {\n ctx.save();\n ctx.setFont(this.textFont);\n const render_x = x - ctx.measureText(text).width / 2;\n ctx.fillText(text, render_x, annotation_y);\n ctx.restore();\n };\n let last_bend = undefined;\n let last_bend_draw_width = 0;\n let last_drawn_width = 0;\n if ((_a = this.tap) === null || _a === void 0 ? void 0 : _a.length) {\n const tapStart = note.getModifierStartXY(Modifier.Position.CENTER, this.index);\n renderText(tapStart.x, this.tap);\n }\n for (let i = 0; i < this.phrase.length; ++i) {\n const bend = this.phrase[i];\n if (!bend.draw_width)\n bend.draw_width = 0;\n if (i === 0)\n bend.draw_width += x_shift;\n last_drawn_width = bend.draw_width + last_bend_draw_width - (i === 1 ? x_shift : 0);\n if (bend.type === Bend.UP) {\n if (last_bend && last_bend.type === Bend.UP) {\n renderArrowHead(start.x, bend_height, +1);\n }\n renderBend(start.x, start.y, last_drawn_width, bend_height);\n }\n if (bend.type === Bend.DOWN) {\n if (last_bend && last_bend.type === Bend.UP) {\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n if (last_bend && last_bend.type === Bend.DOWN) {\n renderArrowHead(start.x, start.y, -1);\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n if (!last_bend) {\n last_drawn_width = bend.draw_width;\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n }\n renderText(start.x + last_drawn_width, bend.text);\n last_bend = bend;\n last_bend_draw_width = bend.draw_width;\n last_bend.x = start.x;\n start.x += last_drawn_width;\n }\n if (!last_bend || last_bend.x == undefined) {\n throw new RuntimeError('NoLastBendForBend', 'Internal error.');\n }\n // Final arrowhead and text\n if (last_bend.type === Bend.UP) {\n renderArrowHead(last_bend.x + last_drawn_width, bend_height, +1);\n }\n else if (last_bend.type === Bend.DOWN) {\n renderArrowHead(last_bend.x + last_drawn_width, start.y, -1);\n }\n }\n}\n/** Default text font. */\nBend.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nexport class BoundingBox {\n constructor(x, y, w, h) {\n this.x = x;\n this.y = y;\n this.w = w;\n this.h = h;\n }\n /**\n * Create a new copy.\n */\n static copy(that) {\n return new BoundingBox(that.x, that.y, that.w, that.h);\n }\n /** Get x position. */\n getX() {\n return this.x;\n }\n /** Get y position. */\n getY() {\n return this.y;\n }\n /** Get width. */\n getW() {\n return this.w;\n }\n /** Get height. */\n getH() {\n return this.h;\n }\n /** Set x position. */\n setX(x) {\n this.x = x;\n return this;\n }\n /** Set y position. */\n setY(y) {\n this.y = y;\n return this;\n }\n /** Set width. */\n setW(w) {\n this.w = w;\n return this;\n }\n /** Set height. */\n setH(h) {\n this.h = h;\n return this;\n }\n /** Move to position. */\n move(x, y) {\n this.x += x;\n this.y += y;\n return this;\n }\n /** Clone. */\n clone() {\n return BoundingBox.copy(this);\n }\n /**\n * Merge my box with given box. Creates a bigger bounding box unless\n * the given box is contained in this one.\n */\n mergeWith(boundingBox) {\n const that = boundingBox;\n const new_x = this.x < that.x ? this.x : that.x;\n const new_y = this.y < that.y ? this.y : that.y;\n const new_w = Math.max(this.x + this.w, that.x + that.w) - new_x;\n const new_h = Math.max(this.y + this.h, that.y + that.h) - new_y;\n this.x = new_x;\n this.y = new_y;\n this.w = new_w;\n this.h = new_h;\n return this;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n/**\n * BoundingBoxComputation computes metrics for a bounding box by continuously\n * taking canvas path commands.\n *\n * Warning: This class is merely a crutch to get bounding box information without\n * explicit metadata. This is likely to get deprecated following SMuFL support.\n *\n * based on: https://github.com/canvg/canvg/blob/master/src/BoundingBox.ts (MIT License)\n */\nexport class BoundingBoxComputation {\n constructor() {\n this.x1 = Number.NaN;\n this.y1 = Number.NaN;\n this.x2 = Number.NaN;\n this.y2 = Number.NaN;\n }\n /** Get calculated X1. */\n getX1() {\n return this.x1;\n }\n /** Get calculated Y1. */\n getY1() {\n return this.y1;\n }\n /** Get calculated width. */\n width() {\n return this.x2 - this.x1;\n }\n /** Get calculated height. */\n height() {\n return this.y2 - this.y1;\n }\n /** Add point to BoundingBox. */\n addPoint(x, y) {\n if (isNaN(this.x1) || x < this.x1)\n this.x1 = x;\n if (isNaN(this.x2) || x > this.x2)\n this.x2 = x;\n if (isNaN(this.y1) || y < this.y1)\n this.y1 = y;\n if (isNaN(this.y2) || y > this.y2)\n this.y2 = y;\n }\n /** Add X to BoundingBox. */\n addX(x) {\n this.addPoint(x, this.y1);\n }\n /** Add Y to BoundingBox. */\n addY(y) {\n this.addPoint(this.x1, y);\n }\n /** Add quadratic curve to BoundingBox. */\n addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {\n this.addPoint(p0x, p0y);\n this.addPoint(p2x, p2y);\n const p01x = p1x - p0x;\n const p12x = p2x - p1x;\n let denom = p01x - p12x;\n if (denom != 0) {\n const t = p01x / denom;\n if (t > 0 && t < 1) {\n const it = 1 - t;\n this.addX(it * it * p0x + 2 * it * t * p1x + t * t * p2x);\n }\n }\n const p01y = p1y - p0y;\n const p12y = p2y - p1y;\n denom = p01y - p12y;\n if (denom != 0) {\n const t = p01y / denom;\n if (t > 0 && t < 1) {\n const it = 1 - t;\n this.addY(it * it * p0y + 2 * it * t * p1y + t * t * p2y);\n }\n }\n }\n /** Add bezier curve to BoundingBox. */\n addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\n // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n const p0 = [p0x, p0y];\n const p1 = [p1x, p1y];\n const p2 = [p2x, p2y];\n const p3 = [p3x, p3y];\n let i;\n this.addPoint(p0[0], p0[1]);\n this.addPoint(p3[0], p3[1]);\n const f = (t, i) => Math.pow(1 - t, 3) * p0[i] +\n 3 * Math.pow(1 - t, 2) * t * p1[i] +\n 3 * (1 - t) * Math.pow(t, 2) * p2[i] +\n Math.pow(t, 3) * p3[i];\n for (i = 0; i <= 1; i++) {\n const b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n const a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n const c = 3 * p1[i] - 3 * p0[i];\n if (a === 0) {\n if (b === 0)\n continue;\n const t = -c / b;\n if (0 < t && t < 1) {\n if (i === 0)\n this.addX(f(t, i));\n if (i === 1)\n this.addY(f(t, i));\n }\n continue;\n }\n const b2ac = Math.pow(b, 2) - 4 * c * a;\n if (b2ac < 0)\n continue;\n const t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n if (0 < t1 && t1 < 1) {\n if (i === 0)\n this.addX(f(t1, i));\n if (i === 1)\n this.addY(f(t1, i));\n }\n const t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n if (0 < t2 && t2 < 1) {\n if (i === 0)\n this.addX(f(t2, i));\n if (i === 1)\n this.addY(f(t2, i));\n }\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from './font';\nimport { RenderContext } from './rendercontext';\nimport { globalObject, warn } from './util';\nimport { isHTMLCanvas } from './web';\n/**\n * A rendering context for the Canvas backend. This class serves as a proxy for the\n * underlying CanvasRenderingContext2D object, part of the browser's API.\n */\nexport class CanvasContext extends RenderContext {\n constructor(context) {\n super();\n /** Height of one line of text (in pixels). */\n this.textHeight = 0;\n this.context2D = context;\n if (!context.canvas) {\n this.canvas = {\n width: CanvasContext.WIDTH,\n height: CanvasContext.HEIGHT,\n };\n }\n else {\n this.canvas = context.canvas;\n }\n }\n static get WIDTH() {\n return 600;\n }\n static get HEIGHT() {\n return 400;\n }\n static get CANVAS_BROWSER_SIZE_LIMIT() {\n return 32767; // Chrome/Firefox. Could be determined more precisely by npm module canvas-size.\n }\n /**\n * Ensure that width and height do not exceed the browser limit.\n * @returns array of [width, height] clamped to the browser limit.\n */\n static sanitizeCanvasDims(width, height) {\n const limit = this.CANVAS_BROWSER_SIZE_LIMIT;\n if (Math.max(width, height) > limit) {\n warn('Canvas dimensions exceed browser limit. Cropping to ' + limit);\n if (width > limit) {\n width = limit;\n }\n if (height > limit) {\n height = limit;\n }\n }\n return [width, height];\n }\n /**\n * Set all pixels to transparent black rgba(0,0,0,0).\n */\n clear() {\n this.context2D.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n // eslint-disable-next-line\n openGroup(cls, id, attrs) {\n // Containers not implemented.\n }\n closeGroup() {\n // Containers not implemented.\n }\n // eslint-disable-next-line\n add(child) {\n // Containers not implemented.\n }\n setFillStyle(style) {\n this.context2D.fillStyle = style;\n return this;\n }\n /** CanvasContext ignores `setBackgroundFillStyle()`. */\n // eslint-disable-next-line\n setBackgroundFillStyle(style) {\n // DO NOTHING\n return this;\n }\n setStrokeStyle(style) {\n this.context2D.strokeStyle = style;\n return this;\n }\n setShadowColor(color) {\n this.context2D.shadowColor = color;\n return this;\n }\n setShadowBlur(blur) {\n // CanvasRenderingContext2D does not scale the shadow blur by the current\n // transform, so we have to do it manually. We assume uniform scaling\n // (though allow for rotation) because the blur can only be scaled\n // uniformly anyway.\n const t = this.context2D.getTransform();\n const scale = Math.sqrt(t.a * t.a + t.b * t.b + t.c * t.c + t.d * t.d);\n this.context2D.shadowBlur = scale * blur;\n return this;\n }\n setLineWidth(width) {\n this.context2D.lineWidth = width;\n return this;\n }\n setLineCap(capType) {\n this.context2D.lineCap = capType;\n return this;\n }\n setLineDash(dash) {\n this.context2D.setLineDash(dash);\n return this;\n }\n scale(x, y) {\n this.context2D.scale(x, y);\n return this;\n }\n resize(width, height) {\n const canvas = this.context2D.canvas;\n const devicePixelRatio = globalObject().devicePixelRatio || 1;\n // Scale the canvas size by the device pixel ratio clamping to the maximum supported size.\n [width, height] = CanvasContext.sanitizeCanvasDims(width * devicePixelRatio, height * devicePixelRatio);\n // Divide back down by the pixel ratio and convert to integers.\n width = (width / devicePixelRatio) | 0;\n height = (height / devicePixelRatio) | 0;\n canvas.width = width * devicePixelRatio;\n canvas.height = height * devicePixelRatio;\n // The canvas could be an instance of either HTMLCanvasElement or an OffscreenCanvas.\n // Only HTMLCanvasElement has a style attribute.\n if (isHTMLCanvas(canvas)) {\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n }\n return this.scale(devicePixelRatio, devicePixelRatio);\n }\n rect(x, y, width, height) {\n this.context2D.rect(x, y, width, height);\n return this;\n }\n fillRect(x, y, width, height) {\n this.context2D.fillRect(x, y, width, height);\n return this;\n }\n /**\n * Set the pixels in a rectangular area to transparent black rgba(0,0,0,0).\n */\n clearRect(x, y, width, height) {\n this.context2D.clearRect(x, y, width, height);\n return this;\n }\n beginPath() {\n this.context2D.beginPath();\n return this;\n }\n moveTo(x, y) {\n this.context2D.moveTo(x, y);\n return this;\n }\n lineTo(x, y) {\n this.context2D.lineTo(x, y);\n return this;\n }\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\n this.context2D.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n return this;\n }\n quadraticCurveTo(cpx, cpy, x, y) {\n this.context2D.quadraticCurveTo(cpx, cpy, x, y);\n return this;\n }\n arc(x, y, radius, startAngle, endAngle, counterclockwise) {\n this.context2D.arc(x, y, radius, startAngle, endAngle, counterclockwise);\n return this;\n }\n fill() {\n this.context2D.fill();\n return this;\n }\n stroke() {\n this.context2D.stroke();\n return this;\n }\n closePath() {\n this.context2D.closePath();\n return this;\n }\n measureText(text) {\n const metrics = this.context2D.measureText(text);\n let y = 0;\n let height = 0;\n if (metrics.fontBoundingBoxAscent) {\n y = -metrics.fontBoundingBoxAscent;\n height = metrics.fontBoundingBoxDescent + metrics.fontBoundingBoxAscent;\n }\n else {\n y = -metrics.actualBoundingBoxAscent;\n height = metrics.actualBoundingBoxDescent + metrics.actualBoundingBoxAscent;\n }\n // Return x, y, width & height in the same manner as svg getBBox\n return {\n x: 0,\n y: y,\n width: metrics.width,\n height: height,\n };\n }\n fillText(text, x, y) {\n this.context2D.fillText(text, x, y);\n return this;\n }\n save() {\n this.context2D.save();\n return this;\n }\n restore() {\n this.context2D.restore();\n return this;\n }\n set fillStyle(style) {\n this.context2D.fillStyle = style;\n }\n get fillStyle() {\n return this.context2D.fillStyle;\n }\n set strokeStyle(style) {\n this.context2D.strokeStyle = style;\n }\n get strokeStyle() {\n return this.context2D.strokeStyle;\n }\n /**\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n */\n setFont(f, size, weight, style) {\n const fontInfo = Font.validate(f, size, weight, style);\n this.context2D.font = Font.toCSSString(fontInfo);\n this.textHeight = Font.convertSizeToPixelValue(fontInfo.size);\n return this;\n }\n /** Return a string of the form `'italic bold 15pt Arial'` */\n getFont() {\n return this.context2D.font;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Author: Aaron (@AaronDavidNewman)\n//\n// This implements chord symbols above/below a chord.\n// Chord symbols are modifiers that can be attached to notes.\n// They can contain multiple 'blocks' which represent text or\n// glyphs with various positioning options.\n//\n// See `tests/chordsymbol_tests.ts` for usage examples.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category, isStemmableNote } from './typeguard';\nimport { log } from './util';\n// To enable logging for this class. Set `Vex.Flow.ChordSymbol.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (ChordSymbol.DEBUG)\n log('Vex.Flow.ChordSymbol', args);\n}\nexport var ChordSymbolHorizontalJustify;\n(function (ChordSymbolHorizontalJustify) {\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"LEFT\"] = 1] = \"LEFT\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"CENTER\"] = 2] = \"CENTER\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"RIGHT\"] = 3] = \"RIGHT\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(ChordSymbolHorizontalJustify || (ChordSymbolHorizontalJustify = {}));\nexport var ChordSymbolVerticalJustify;\n(function (ChordSymbolVerticalJustify) {\n ChordSymbolVerticalJustify[ChordSymbolVerticalJustify[\"TOP\"] = 1] = \"TOP\";\n ChordSymbolVerticalJustify[ChordSymbolVerticalJustify[\"BOTTOM\"] = 2] = \"BOTTOM\";\n})(ChordSymbolVerticalJustify || (ChordSymbolVerticalJustify = {}));\nexport var SymbolTypes;\n(function (SymbolTypes) {\n SymbolTypes[SymbolTypes[\"GLYPH\"] = 1] = \"GLYPH\";\n SymbolTypes[SymbolTypes[\"TEXT\"] = 2] = \"TEXT\";\n SymbolTypes[SymbolTypes[\"LINE\"] = 3] = \"LINE\";\n})(SymbolTypes || (SymbolTypes = {}));\nexport var SymbolModifiers;\n(function (SymbolModifiers) {\n SymbolModifiers[SymbolModifiers[\"NONE\"] = 1] = \"NONE\";\n SymbolModifiers[SymbolModifiers[\"SUBSCRIPT\"] = 2] = \"SUBSCRIPT\";\n SymbolModifiers[SymbolModifiers[\"SUPERSCRIPT\"] = 3] = \"SUPERSCRIPT\";\n})(SymbolModifiers || (SymbolModifiers = {}));\n/**\n * ChordSymbol is a modifier that creates a chord symbol above/below a chord.\n * As a modifier, it is attached to an existing note.\n */\nexport class ChordSymbol extends Modifier {\n constructor() {\n super();\n this.symbolBlocks = [];\n this.horizontal = ChordSymbolHorizontalJustify.LEFT;\n this.vertical = ChordSymbolVerticalJustify.TOP;\n this.useKerning = true;\n this.reportWidth = true;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.ChordSymbol;\n }\n static get superSubRatio() {\n return ChordSymbol.metrics.global.superSubRatio;\n }\n /** Currently unused: Globally turn off text formatting, if the built-in formatting does not work for your font. */\n static set NO_TEXT_FORMAT(val) {\n ChordSymbol.noFormat = val;\n }\n static get NO_TEXT_FORMAT() {\n return ChordSymbol.noFormat;\n }\n // eslint-disable-next-line\n static getMetricForGlyph(glyphCode) {\n if (ChordSymbol.metrics[glyphCode]) {\n return ChordSymbol.metrics[glyphCode];\n }\n return undefined;\n }\n static get engravingFontResolution() {\n return Tables.currentMusicFont().getResolution();\n }\n static get spacingBetweenBlocks() {\n return ChordSymbol.metrics.global.spacing / ChordSymbol.engravingFontResolution;\n }\n static getWidthForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0.65; // probably should do something here.\n }\n return metric.advanceWidth / ChordSymbol.engravingFontResolution;\n }\n static getYShiftForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0;\n }\n return metric.yOffset / ChordSymbol.engravingFontResolution;\n }\n static getXShiftForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0;\n }\n return (-1 * metric.leftSideBearing) / ChordSymbol.engravingFontResolution;\n }\n static get superscriptOffset() {\n return ChordSymbol.metrics.global.superscriptOffset / ChordSymbol.engravingFontResolution;\n }\n static get subscriptOffset() {\n return ChordSymbol.metrics.global.subscriptOffset / ChordSymbol.engravingFontResolution;\n }\n static get kerningOffset() {\n return ChordSymbol.metrics.global.kerningOffset / ChordSymbol.engravingFontResolution;\n }\n // eslint-disable-next-line\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.chordSymbol;\n }\n static get lowerKerningText() {\n // For example, see: `bravura_metrics.ts`\n // BravuraMetrics.glyphs.chordSymbol.global.lowerKerningText, which returns an array of letters.\n // ['D', 'F', 'P', 'T', 'V', 'Y']\n return ChordSymbol.metrics.global.lowerKerningText;\n }\n static get upperKerningText() {\n return ChordSymbol.metrics.global.upperKerningText;\n }\n static isSuperscript(block) {\n return block.symbolModifier !== undefined && block.symbolModifier === SymbolModifiers.SUPERSCRIPT;\n }\n static isSubscript(block) {\n return block.symbolModifier !== undefined && block.symbolModifier === SymbolModifiers.SUBSCRIPT;\n }\n static get minPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /**\n * Estimate the width of the whole chord symbol, based on the sum of the widths of the individual blocks.\n * Estimate how many lines above/below the staff we need.\n */\n static format(symbols, state) {\n var _a;\n if (!symbols || symbols.length === 0)\n return false;\n let width = 0;\n let nonSuperWidth = 0;\n let leftWidth = 0;\n let rightWidth = 0;\n let maxLeftGlyphWidth = 0;\n let maxRightGlyphWidth = 0;\n for (const symbol of symbols) {\n const fontSize = Font.convertSizeToPointValue((_a = symbol.textFont) === null || _a === void 0 ? void 0 : _a.size);\n const fontAdj = Font.scaleSize(fontSize, 0.05);\n const glyphAdj = fontAdj * 2;\n const note = symbol.checkAttachedNote();\n let symbolWidth = 0;\n let lineSpaces = 1;\n let vAlign = false;\n for (let j = 0; j < symbol.symbolBlocks.length; ++j) {\n const block = symbol.symbolBlocks[j];\n const sup = ChordSymbol.isSuperscript(block);\n const sub = ChordSymbol.isSubscript(block);\n const superSubScale = sup || sub ? ChordSymbol.superSubRatio : 1;\n const adj = block.symbolType === SymbolTypes.GLYPH ? glyphAdj * superSubScale : fontAdj * superSubScale;\n // If there are super/subscripts, they extend beyond the line so\n // assume they take up 2 lines\n if (sup || sub) {\n lineSpaces = 2;\n }\n // If there is a symbol-specific offset, add it but consider font\n // size since font and glyphs will be interspersed.\n const fontSize = symbol.textFormatter.fontSizeInPixels;\n const superSubFontSize = fontSize * superSubScale;\n if (block.symbolType === SymbolTypes.GLYPH && block.glyph !== undefined) {\n block.width = ChordSymbol.getWidthForGlyph(block.glyph) * superSubFontSize;\n block.yShift += ChordSymbol.getYShiftForGlyph(block.glyph) * superSubFontSize;\n block.xShift += ChordSymbol.getXShiftForGlyph(block.glyph) * superSubFontSize;\n block.glyph.scale = block.glyph.scale * adj;\n }\n else if (block.symbolType === SymbolTypes.TEXT) {\n block.width = block.width * superSubFontSize;\n block.yShift += symbol.getYOffsetForText(block.text) * adj;\n }\n if (block.symbolType === SymbolTypes.GLYPH &&\n block.glyph !== undefined &&\n block.glyph.code === ChordSymbol.glyphs.over.code) {\n lineSpaces = 2;\n }\n block.width += ChordSymbol.spacingBetweenBlocks * fontSize * superSubScale;\n // If a subscript immediately follows a superscript block, try to\n // overlay them.\n if (sup && j > 0) {\n const prev = symbol.symbolBlocks[j - 1];\n if (!ChordSymbol.isSuperscript(prev)) {\n nonSuperWidth = width;\n }\n }\n if (sub && nonSuperWidth > 0) {\n vAlign = true;\n // slide the symbol over so it lines up with superscript\n block.xShift = block.xShift + (nonSuperWidth - width);\n width = nonSuperWidth;\n nonSuperWidth = 0;\n // If we have vertically lined up, turn kerning off.\n symbol.setEnableKerning(false);\n }\n if (!sup && !sub) {\n nonSuperWidth = 0;\n }\n block.vAlign = vAlign;\n width += block.width;\n symbolWidth = width;\n }\n // make kerning adjustments after computing super/subscripts\n symbol.updateKerningAdjustments();\n symbol.updateOverBarAdjustments();\n if (symbol.getVertical() === ChordSymbolVerticalJustify.TOP) {\n symbol.setTextLine(state.top_text_line);\n state.top_text_line += lineSpaces;\n }\n else {\n symbol.setTextLine(state.text_line + 1);\n state.text_line += lineSpaces + 1;\n }\n if (symbol.getReportWidth() && isStemmableNote(note)) {\n const glyphWidth = note.getGlyph().getWidth();\n if (symbol.getHorizontal() === ChordSymbolHorizontalJustify.LEFT) {\n maxLeftGlyphWidth = Math.max(glyphWidth, maxLeftGlyphWidth);\n leftWidth = Math.max(leftWidth, symbolWidth) + ChordSymbol.minPadding;\n }\n else if (symbol.getHorizontal() === ChordSymbolHorizontalJustify.RIGHT) {\n maxRightGlyphWidth = Math.max(glyphWidth, maxRightGlyphWidth);\n rightWidth = Math.max(rightWidth, symbolWidth);\n }\n else {\n leftWidth = Math.max(leftWidth, symbolWidth / 2) + ChordSymbol.minPadding;\n rightWidth = Math.max(rightWidth, symbolWidth / 2);\n maxLeftGlyphWidth = Math.max(glyphWidth / 2, maxLeftGlyphWidth);\n maxRightGlyphWidth = Math.max(glyphWidth / 2, maxRightGlyphWidth);\n }\n }\n width = 0; // reset symbol width\n }\n const rightOverlap = Math.min(Math.max(rightWidth - maxRightGlyphWidth, 0), Math.max(rightWidth - state.right_shift, 0));\n const leftOverlap = Math.min(Math.max(leftWidth - maxLeftGlyphWidth, 0), Math.max(leftWidth - state.left_shift, 0));\n state.left_shift += leftOverlap;\n state.right_shift += rightOverlap;\n return true;\n }\n /**\n * Default text font.\n * Choose a font family that works well with the current music engraving font.\n * @override `Element.TEXT_FONT`.\n */\n static get TEXT_FONT() {\n let family = 'Roboto Slab, Times, serif';\n if (Tables.currentMusicFont().getName() === 'Petaluma') {\n // Fixes Issue #1180\n family = 'PetalumaScript, Arial, sans-serif';\n }\n return {\n family,\n size: 12,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n };\n }\n /**\n * The offset is specified in `em`. Scale this value by the font size in pixels.\n */\n get superscriptOffset() {\n return ChordSymbol.superscriptOffset * this.textFormatter.fontSizeInPixels;\n }\n get subscriptOffset() {\n return ChordSymbol.subscriptOffset * this.textFormatter.fontSizeInPixels;\n }\n setReportWidth(value) {\n this.reportWidth = value;\n return this;\n }\n getReportWidth() {\n return this.reportWidth;\n }\n updateOverBarAdjustments() {\n const barIndex = this.symbolBlocks.findIndex(({ symbolType, glyph }) => symbolType === SymbolTypes.GLYPH && glyph !== undefined && glyph.code === 'csymDiagonalArrangementSlash');\n if (barIndex < 0) {\n return;\n }\n const bar = this.symbolBlocks[barIndex];\n const xoff = bar.width / 4;\n const yoff = 0.25 * this.textFormatter.fontSizeInPixels;\n let symIndex = 0;\n for (symIndex === 0; symIndex < barIndex; ++symIndex) {\n const symbol = this.symbolBlocks[symIndex];\n symbol.xShift = symbol.xShift + xoff;\n symbol.yShift = symbol.yShift - yoff;\n }\n for (symIndex = barIndex + 1; symIndex < this.symbolBlocks.length; ++symIndex) {\n const symbol = this.symbolBlocks[symIndex];\n symbol.xShift = symbol.xShift - xoff;\n symbol.yShift = symbol.yShift + yoff;\n }\n }\n updateKerningAdjustments() {\n let accum = 0;\n for (let j = 0; j < this.symbolBlocks.length; ++j) {\n const symbol = this.symbolBlocks[j];\n accum += this.getKerningAdjustment(j);\n symbol.xShift += accum;\n }\n }\n /** Do some basic kerning so that letter chords like 'A' don't have the extensions hanging off to the right. */\n getKerningAdjustment(j) {\n if (!this.useKerning) {\n return 0;\n }\n const currSymbol = this.symbolBlocks[j];\n const prevSymbol = j > 0 ? this.symbolBlocks[j - 1] : undefined;\n let adjustment = 0;\n // Move things into the '/' over bar\n if (currSymbol.symbolType === SymbolTypes.GLYPH &&\n currSymbol.glyph !== undefined &&\n currSymbol.glyph.code === ChordSymbol.glyphs.over.code) {\n adjustment += currSymbol.glyph.metrics.x_shift;\n }\n if (prevSymbol !== undefined &&\n prevSymbol.symbolType === SymbolTypes.GLYPH &&\n prevSymbol.glyph !== undefined &&\n prevSymbol.glyph.code === ChordSymbol.glyphs.over.code) {\n adjustment += prevSymbol.glyph.metrics.x_shift;\n }\n // For superscripts that follow a letter without much top part, move it to the left slightly\n let preKernUpper = false;\n let preKernLower = false;\n if (prevSymbol !== undefined && prevSymbol.symbolType === SymbolTypes.TEXT) {\n preKernUpper = ChordSymbol.upperKerningText.some((xx) => xx === prevSymbol.text[prevSymbol.text.length - 1]);\n preKernLower = ChordSymbol.lowerKerningText.some((xx) => xx === prevSymbol.text[prevSymbol.text.length - 1]);\n }\n const kerningOffsetPixels = ChordSymbol.kerningOffset * this.textFormatter.fontSizeInPixels;\n // TODO: adjust kern for font size.\n // Where should this constant live?\n if (preKernUpper && currSymbol.symbolModifier === SymbolModifiers.SUPERSCRIPT) {\n adjustment += kerningOffsetPixels;\n }\n if (preKernLower && currSymbol.symbolType === SymbolTypes.TEXT) {\n if (currSymbol.text[0] >= 'a' && currSymbol.text[0] <= 'z') {\n adjustment += kerningOffsetPixels / 2;\n }\n if (ChordSymbol.upperKerningText.some((xx) => xx === (prevSymbol === null || prevSymbol === void 0 ? void 0 : prevSymbol.text[prevSymbol.text.length - 1]))) {\n adjustment += kerningOffsetPixels / 2;\n }\n }\n return adjustment;\n }\n /**\n * ChordSymbol allows multiple blocks so we can mix glyphs and font text.\n * Each block can have its own vertical orientation.\n */\n // eslint-disable-next-line\n getSymbolBlock(params = {}) {\n var _a, _b, _c;\n const symbolType = (_a = params.symbolType) !== null && _a !== void 0 ? _a : SymbolTypes.TEXT;\n const symbolBlock = {\n text: (_b = params.text) !== null && _b !== void 0 ? _b : '',\n symbolType,\n symbolModifier: (_c = params.symbolModifier) !== null && _c !== void 0 ? _c : SymbolModifiers.NONE,\n xShift: 0,\n yShift: 0,\n vAlign: false,\n width: 0,\n };\n // Note: symbol widths are resolution and font-independent.\n // We convert to pixel values when we know what the font is.\n if (symbolType === SymbolTypes.GLYPH && typeof params.glyph === 'string') {\n const glyphArgs = ChordSymbol.glyphs[params.glyph];\n const glyphPoints = 20;\n symbolBlock.glyph = new Glyph(glyphArgs.code, glyphPoints, { category: 'chordSymbol' });\n // Beware: glyph.metrics is not the same as glyph.getMetrics() !\n // rv.glyph.point = rv.glyph.point * rv.glyph.metrics.scale;\n // rv.width = rv.glyph.getMetrics().width;\n // don't set yShift here, b/c we need to do it at formatting time after the font is set.\n }\n else if (symbolType === SymbolTypes.TEXT) {\n symbolBlock.width = this.textFormatter.getWidthForTextInEm(symbolBlock.text);\n }\n else if (symbolType === SymbolTypes.LINE) {\n symbolBlock.width = params.width;\n }\n return symbolBlock;\n }\n /** Add a symbol to this chord, could be text, glyph or line. */\n // eslint-disable-next-line\n addSymbolBlock(parameters) {\n this.symbolBlocks.push(this.getSymbolBlock(parameters));\n return this;\n }\n // ### Convenience functions for creating different types of chord symbol parts.\n /** Add a text block. */\n // eslint-disable-next-line\n addText(text, parameters = {}) {\n const symbolType = SymbolTypes.TEXT;\n return this.addSymbolBlock(Object.assign(Object.assign({}, parameters), { text, symbolType }));\n }\n /** Add a text block with superscript modifier. */\n addTextSuperscript(text) {\n const symbolType = SymbolTypes.TEXT;\n const symbolModifier = SymbolModifiers.SUPERSCRIPT;\n return this.addSymbolBlock({ text, symbolType, symbolModifier });\n }\n /** Add a text block with subscript modifier. */\n addTextSubscript(text) {\n const symbolType = SymbolTypes.TEXT;\n const symbolModifier = SymbolModifiers.SUBSCRIPT;\n return this.addSymbolBlock({ text, symbolType, symbolModifier });\n }\n /** Add a glyph block with superscript modifier. */\n addGlyphSuperscript(glyph) {\n const symbolType = SymbolTypes.GLYPH;\n const symbolModifier = SymbolModifiers.SUPERSCRIPT;\n return this.addSymbolBlock({ glyph, symbolType, symbolModifier });\n }\n /** Add a glyph block. */\n // eslint-disable-next-line\n addGlyph(glyph, params = {}) {\n const symbolType = SymbolTypes.GLYPH;\n return this.addSymbolBlock(Object.assign(Object.assign({}, params), { glyph, symbolType }));\n }\n /**\n * Add a glyph for each character in 'text'. If the glyph is not available, use text from the font.\n * e.g. `addGlyphOrText('(+5#11)')` will use text for the '5' and '11', and glyphs for everything else.\n */\n // eslint-disable-next-line\n addGlyphOrText(text, params = {}) {\n let str = '';\n for (let i = 0; i < text.length; ++i) {\n const char = text[i];\n if (ChordSymbol.glyphs[char]) {\n if (str.length > 0) {\n this.addText(str, params);\n str = '';\n }\n this.addGlyph(char, params);\n }\n else {\n // Collect consecutive characters with no glyphs.\n str += char;\n }\n }\n if (str.length > 0) {\n this.addText(str, params);\n }\n return this;\n }\n /** Add a line of the given width, used as a continuation of the previous symbol in analysis, or lyrics, etc. */\n // eslint-disable-next-line\n addLine(width, params = {}) {\n const symbolType = SymbolTypes.LINE;\n return this.addSymbolBlock(Object.assign(Object.assign({}, params), { symbolType, width }));\n }\n /**\n * Set the chord symbol's font family, size, weight, style (e.g., `Arial`, `10pt`, `bold`, `italic`).\n *\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n *\n * @override See: Element.\n */\n setFont(f, size, weight, style) {\n super.setFont(f, size, weight, style);\n this.textFormatter = TextFormatter.create(this.textFont);\n return this;\n }\n setEnableKerning(val) {\n this.useKerning = val;\n return this;\n }\n /** Set vertical position of text (above or below stave). */\n setVertical(vj) {\n this.vertical = typeof vj === 'string' ? ChordSymbol.VerticalJustifyString[vj] : vj;\n return this;\n }\n getVertical() {\n return this.vertical;\n }\n /** Set horizontal justification. */\n setHorizontal(hj) {\n this.horizontal = typeof hj === 'string' ? ChordSymbol.HorizontalJustifyString[hj] : hj;\n return this;\n }\n getHorizontal() {\n return this.horizontal;\n }\n getWidth() {\n let width = 0;\n this.symbolBlocks.forEach((symbol) => {\n width += symbol.vAlign ? 0 : symbol.width;\n });\n return width;\n }\n getYOffsetForText(text) {\n var _a;\n let acc = 0;\n let i = 0;\n for (i = 0; i < text.length; ++i) {\n const metrics = this.textFormatter.getGlyphMetrics(text[i]);\n if (metrics) {\n const yMax = (_a = metrics.y_max) !== null && _a !== void 0 ? _a : 0;\n acc = yMax < acc ? yMax : acc;\n }\n }\n const resolution = this.textFormatter.getResolution();\n return i > 0 ? -1 * (acc / resolution) : 0;\n }\n /** Render text and glyphs above/below the note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n // We're changing context parameters. Save current state.\n ctx.save();\n ctx.openGroup('chordsymbol', this.getAttribute('id'));\n const start = note.getModifierStartXY(Modifier.Position.ABOVE, this.index);\n ctx.setFont(this.textFont);\n let y;\n // The position of the text varies based on whether or not the note\n // has a stem.\n const hasStem = note.hasStem();\n const stave = note.checkStave();\n if (this.vertical === ChordSymbolVerticalJustify.BOTTOM) {\n // HACK: We need to compensate for the text's height since its origin is bottom-right.\n y = stave.getYForBottomText(this.text_line + Tables.TEXT_HEIGHT_OFFSET_HACK);\n if (hasStem) {\n const stem_ext = note.checkStem().getExtents();\n const spacing = stave.getSpacingBetweenLines();\n const stem_base = note.getStemDirection() === 1 ? stem_ext.baseY : stem_ext.topY;\n y = Math.max(y, stem_base + spacing * (this.text_line + 2));\n }\n }\n else {\n // (this.vertical === VerticalJustify.TOP)\n y = Math.min(stave.getYForTopText(this.text_line), note.getYs()[0] - 10);\n if (hasStem) {\n const stem_ext = note.checkStem().getExtents();\n const spacing = stave.getSpacingBetweenLines();\n y = Math.min(y, stem_ext.topY - 5 - spacing * this.text_line);\n }\n }\n let x = start.x;\n if (this.horizontal === ChordSymbolHorizontalJustify.LEFT) {\n x = start.x;\n }\n else if (this.horizontal === ChordSymbolHorizontalJustify.RIGHT) {\n x = start.x + this.getWidth();\n }\n else if (this.horizontal === ChordSymbolHorizontalJustify.CENTER) {\n x = start.x - this.getWidth() / 2;\n }\n else {\n // HorizontalJustify.CENTER_STEM\n x = note.getStemX() - this.getWidth() / 2;\n }\n L('Rendering ChordSymbol: ', this.textFormatter, x, y);\n this.symbolBlocks.forEach((symbol) => {\n const isSuper = ChordSymbol.isSuperscript(symbol);\n const isSub = ChordSymbol.isSubscript(symbol);\n let curY = y;\n L('shift was ', symbol.xShift, symbol.yShift);\n L('curY pre sub ', curY);\n if (isSuper) {\n curY += this.superscriptOffset;\n }\n if (isSub) {\n curY += this.subscriptOffset;\n }\n L('curY sup/sub ', curY);\n if (symbol.symbolType === SymbolTypes.TEXT) {\n if (isSuper || isSub) {\n ctx.save();\n if (this.textFont) {\n const { family, size, weight, style } = this.textFont;\n const smallerFontSize = Font.scaleSize(size, ChordSymbol.superSubRatio);\n ctx.setFont(family, smallerFontSize, weight, style);\n }\n }\n // TODO???\n // We estimate the text width, fill it in with the empirical value so the formatting is even.\n // const textDim = ctx.measureText(symbol.text);\n // symbol.width = textDim.width;\n L('Rendering Text: ', symbol.text, x + symbol.xShift, curY + symbol.yShift);\n ctx.fillText(symbol.text, x + symbol.xShift, curY + symbol.yShift);\n if (isSuper || isSub) {\n ctx.restore();\n }\n }\n else if (symbol.symbolType === SymbolTypes.GLYPH && symbol.glyph) {\n curY += symbol.yShift;\n L('Rendering Glyph: ', symbol.glyph.code, x + symbol.xShift, curY);\n symbol.glyph.render(ctx, x + symbol.xShift, curY);\n }\n else if (symbol.symbolType === SymbolTypes.LINE) {\n L('Rendering Line : ', symbol.width, x, curY);\n ctx.beginPath();\n ctx.setLineWidth(1); // ?\n ctx.moveTo(x, y);\n ctx.lineTo(x + symbol.width, curY);\n ctx.stroke();\n }\n x += symbol.width;\n if (symbol.vAlign) {\n x += symbol.xShift;\n }\n });\n ctx.closeGroup();\n ctx.restore();\n }\n}\nChordSymbol.DEBUG = false;\n// Chord symbols can be positioned and justified relative to the note.\nChordSymbol.HorizontalJustify = ChordSymbolHorizontalJustify;\nChordSymbol.HorizontalJustifyString = {\n left: ChordSymbolHorizontalJustify.LEFT,\n right: ChordSymbolHorizontalJustify.RIGHT,\n center: ChordSymbolHorizontalJustify.CENTER,\n centerStem: ChordSymbolHorizontalJustify.CENTER_STEM,\n};\nChordSymbol.VerticalJustify = ChordSymbolVerticalJustify;\nChordSymbol.VerticalJustifyString = {\n top: ChordSymbolVerticalJustify.TOP,\n above: ChordSymbolVerticalJustify.TOP,\n below: ChordSymbolVerticalJustify.BOTTOM,\n bottom: ChordSymbolVerticalJustify.BOTTOM,\n};\n// Glyph data\nChordSymbol.glyphs = {\n diminished: {\n code: 'csymDiminished',\n },\n dim: {\n code: 'csymDiminished',\n },\n halfDiminished: {\n code: 'csymHalfDiminished',\n },\n '+': {\n code: 'csymAugmented',\n },\n augmented: {\n code: 'csymAugmented',\n },\n majorSeventh: {\n code: 'csymMajorSeventh',\n },\n minor: {\n code: 'csymMinor',\n },\n '-': {\n code: 'csymMinor',\n },\n '(': {\n code: 'csymParensLeftTall',\n },\n leftParen: {\n code: 'csymParensLeftTall',\n },\n ')': {\n code: 'csymParensRightTall',\n },\n rightParen: {\n code: 'csymParensRightTall',\n },\n leftBracket: {\n code: 'csymBracketLeftTall',\n },\n rightBracket: {\n code: 'csymBracketRightTall',\n },\n leftParenTall: {\n code: 'csymParensLeftVeryTall',\n },\n rightParenTall: {\n code: 'csymParensRightVeryTall',\n },\n '/': {\n code: 'csymDiagonalArrangementSlash',\n },\n over: {\n code: 'csymDiagonalArrangementSlash',\n },\n '#': {\n code: 'accidentalSharp',\n },\n b: {\n code: 'accidentalFlat',\n },\n};\nChordSymbol.symbolTypes = SymbolTypes;\nChordSymbol.symbolModifiers = SymbolModifiers;\n/** Currently unused. */\nChordSymbol.noFormat = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna Cheppudira 2013.\n// Co-author: Benjamin W. Bohl\n// MIT License\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Clef.DEBUG)\n log('Vex.Flow.Clef', args);\n}\n/**\n * Clef implements various types of clefs that can be rendered on a stave.\n *\n * See `tests/clef_tests.ts` for usage examples.\n */\nexport class Clef extends StaveModifier {\n /** Create a new clef. */\n constructor(type, size, annotation) {\n super();\n /**\n * The attribute `clef` must be a key from\n * `Clef.types`\n */\n this.clef = Clef.types['treble'];\n this.setPosition(StaveModifierPosition.BEGIN);\n this.setType(type, size, annotation);\n this.setWidth(Tables.currentMusicFont().lookupMetric(`clef.${this.size}.width`));\n L('Creating clef:', type);\n }\n static get CATEGORY() {\n return Category.Clef;\n }\n /**\n * Every clef name is associated with a glyph code from the font file\n * and a default stave line number.\n */\n static get types() {\n return {\n treble: {\n code: 'gClef',\n line: 3,\n point: 0,\n },\n bass: {\n code: 'fClef',\n line: 1,\n point: 0,\n },\n alto: {\n code: 'cClef',\n line: 2,\n point: 0,\n },\n tenor: {\n code: 'cClef',\n line: 1,\n point: 0,\n },\n percussion: {\n code: 'restMaxima',\n line: 2,\n point: 0,\n },\n soprano: {\n code: 'cClef',\n line: 4,\n point: 0,\n },\n 'mezzo-soprano': {\n code: 'cClef',\n line: 3,\n point: 0,\n },\n 'baritone-c': {\n code: 'cClef',\n line: 0,\n point: 0,\n },\n 'baritone-f': {\n code: 'fClef',\n line: 2,\n point: 0,\n },\n subbass: {\n code: 'fClef',\n line: 0,\n point: 0,\n },\n french: {\n code: 'gClef',\n line: 4,\n point: 0,\n },\n tab: {\n code: '6stringTabClef',\n point: 0,\n },\n };\n }\n /** Set clef type, size and annotation. */\n setType(type, size, annotation) {\n this.type = type;\n this.clef = Clef.types[type];\n if (size === undefined) {\n this.size = 'default';\n }\n else {\n this.size = size;\n }\n const musicFont = Tables.currentMusicFont();\n this.clef.point = musicFont.lookupMetric(`clef.${this.size}.point`, 0);\n this.glyph = new Glyph(this.clef.code, this.clef.point, {\n category: `clef.${this.clef.code}.${this.size}`,\n });\n // If an annotation, such as 8va, is specified, add it to the Clef object.\n if (annotation !== undefined) {\n const code = musicFont.lookupMetric(`clef.annotations.${annotation}.smuflCode`);\n const point = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.point`);\n const line = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.${this.type}.line`);\n const x_shift = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.${this.type}.shiftX`);\n this.annotation = { code, point, line, x_shift };\n this.attachment = new Glyph(this.annotation.code, this.annotation.point);\n this.attachment.metrics.x_max = 0;\n this.attachment.setXShift(this.annotation.x_shift);\n }\n else {\n this.annotation = undefined;\n }\n return this;\n }\n /** Get clef width. */\n getWidth() {\n if (this.type === 'tab') {\n defined(this.stave, 'ClefError', \"Can't get width without stave.\");\n }\n return this.width;\n }\n /** Set associated stave. */\n setStave(stave) {\n this.stave = stave;\n if (this.type === 'tab') {\n const glyph = defined(this.glyph, 'ClefError', \"Can't set stave without glyph.\");\n const numLines = this.stave.getNumLines();\n const musicFont = Tables.currentMusicFont();\n const point = musicFont.lookupMetric(`clef.lineCount.${numLines}.point`);\n const shiftY = musicFont.lookupMetric(`clef.lineCount.${numLines}.shiftY`);\n glyph.setPoint(point);\n glyph.setYShift(shiftY);\n }\n return this;\n }\n /** Render clef. */\n draw() {\n const glyph = defined(this.glyph, 'ClefError', \"Can't draw clef without glyph.\");\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('clef', this.getAttribute('id'));\n glyph.setStave(stave);\n glyph.setContext(ctx);\n if (this.clef.line !== undefined) {\n this.placeGlyphOnLine(glyph, stave, this.clef.line);\n }\n glyph.renderToStave(this.x);\n if (this.annotation !== undefined && this.attachment !== undefined) {\n this.placeGlyphOnLine(this.attachment, stave, this.annotation.line);\n this.attachment.setStave(stave);\n this.attachment.setContext(ctx);\n this.attachment.renderToStave(this.x);\n }\n ctx.closeGroup();\n }\n}\n/** To enable logging for this class, set `Vex.Flow.Clef.DEBUG` to `true`. */\nClef.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\n// MIT License\nimport { Clef } from './clef';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\n/** ClefNote implements clef annotations in measures. */\nexport class ClefNote extends Note {\n constructor(type, size, annotation) {\n super({ duration: 'b' });\n this.type = type;\n this.clef_obj = new Clef(type, size, annotation);\n this.clef = this.clef_obj.clef;\n this.glyph = new Glyph(this.clef.code, this.clef.point);\n this.setWidth(this.glyph.getMetrics().width);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.ClefNote;\n }\n /** Set clef type, size and annotation. */\n setType(type, size, annotation) {\n this.type = type;\n this.clef_obj = new Clef(type, size, annotation);\n this.clef = this.clef_obj.clef;\n this.glyph = new Glyph(this.clef.code, this.clef.point);\n this.setWidth(this.glyph.getMetrics().width);\n return this;\n }\n /** Get associated clef. */\n getClef() {\n return this.clef;\n }\n /** Set associated context. */\n setContext(context) {\n super.setContext(context);\n this.glyph.setContext(this.getContext());\n return this;\n }\n /** Get bounding box. */\n getBoundingBox() {\n return super.getBoundingBox();\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n /** Render clef note. */\n draw() {\n var _a;\n const stave = this.checkStave();\n if (!this.glyph.getContext()) {\n this.glyph.setContext(this.getContext());\n }\n this.setRendered();\n const abs_x = this.getAbsoluteX();\n this.glyph.setStave(stave);\n this.glyph.setYShift(stave.getYForLine((_a = this.clef.line) !== null && _a !== void 0 ? _a : 0) - stave.getYForGlyphs());\n this.glyph.renderToStave(abs_x);\n // If the Vex.Flow.Clef has an annotation, such as 8va, draw it.\n if (this.clef_obj.annotation !== undefined) {\n const attachment = new Glyph(this.clef_obj.annotation.code, this.clef_obj.annotation.point);\n if (!attachment.getContext()) {\n attachment.setContext(this.getContext());\n }\n attachment.setStave(stave);\n attachment.setYShift(stave.getYForLine(this.clef_obj.annotation.line) - stave.getYForGlyphs());\n attachment.setXShift(this.clef_obj.annotation.x_shift);\n attachment.renderToStave(abs_x);\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This file implements the `Crescendo` object which draws crescendos and\n// decrescendo dynamics markings. A `Crescendo` is initialized with a\n// duration and formatted as part of a `Voice` like any other `Note`\n// type in VexFlow. This object would most likely be formatted in a Voice\n// with `TextNotes` - which are used to represent other dynamics markings.\nimport { Note } from './note';\nimport { TickContext } from './tickcontext';\nimport { Category } from './typeguard';\nimport { log } from './util';\n// To enable logging for this class. Set `Vex.Flow.Crescendo.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (Crescendo.DEBUG)\n log('Vex.Flow.Crescendo', args);\n}\n// Private helper to draw the hairpin\nfunction renderHairpin(ctx, params) {\n const begin_x = params.begin_x;\n const end_x = params.end_x;\n const y = params.y;\n const half_height = params.height / 2;\n ctx.beginPath();\n if (params.reverse) {\n ctx.moveTo(begin_x, y - half_height);\n ctx.lineTo(end_x, y);\n ctx.lineTo(begin_x, y + half_height);\n }\n else {\n ctx.moveTo(end_x, y - half_height);\n ctx.lineTo(begin_x, y);\n ctx.lineTo(end_x, y + half_height);\n }\n ctx.stroke();\n ctx.closePath();\n}\nexport class Crescendo extends Note {\n // Initialize the crescendo's properties\n constructor(noteStruct) {\n super(noteStruct);\n this.options = {\n // Extensions to the length of the crescendo on either side\n extend_left: 0,\n extend_right: 0,\n // Vertical shift\n y_shift: 0,\n };\n // Whether the object is a decrescendo\n this.decrescendo = false;\n // The staff line to be placed on\n this.line = noteStruct.line || 0;\n // The height at the open end of the cresc/decresc\n this.height = 15;\n }\n /** Crescendo category string. */\n static get CATEGORY() {\n return Category.Crescendo;\n }\n // Set the line to center the element on\n setLine(line) {\n this.line = line;\n return this;\n }\n // Set the full height at the open end\n setHeight(height) {\n this.height = height;\n return this;\n }\n // Set whether the sign should be a descresendo by passing a bool\n // to `decresc`\n setDecrescendo(decresc) {\n this.decrescendo = decresc;\n return this;\n }\n // Preformat the note\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n // Render the Crescendo object onto the canvas\n draw() {\n const ctx = this.checkContext();\n const stave = this.checkStave();\n this.setRendered();\n const tick_context = this.getTickContext();\n const next_context = TickContext.getNextContext(tick_context);\n const begin_x = this.getAbsoluteX();\n const end_x = next_context ? next_context.getX() : stave.getX() + stave.getWidth();\n const y = stave.getYForLine(this.line + -3) + 1;\n L('Drawing ', this.decrescendo ? 'decrescendo ' : 'crescendo ', this.height, 'x', begin_x - end_x);\n renderHairpin(ctx, {\n begin_x: begin_x - this.options.extend_left,\n end_x: end_x + this.options.extend_right,\n y: y + this.options.y_shift,\n height: this.height,\n reverse: this.decrescendo,\n });\n }\n}\nCrescendo.DEBUG = false;\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements curves (for slurs)\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport var CurvePosition;\n(function (CurvePosition) {\n CurvePosition[CurvePosition[\"NEAR_HEAD\"] = 1] = \"NEAR_HEAD\";\n CurvePosition[CurvePosition[\"NEAR_TOP\"] = 2] = \"NEAR_TOP\";\n})(CurvePosition || (CurvePosition = {}));\nexport class Curve extends Element {\n // from: Start note\n // to: End note\n // options:\n // cps: List of control points\n // x_shift: pixels to shift\n // y_shift: pixels to shift\n constructor(from, to, options) {\n super();\n this.render_options = Object.assign({ thickness: 2, x_shift: 0, y_shift: 10, position: CurvePosition.NEAR_HEAD, position_end: CurvePosition.NEAR_HEAD, invert: false, cps: [\n { x: 0, y: 10 },\n { x: 0, y: 10 },\n ] }, options);\n this.from = from;\n this.to = to;\n }\n static get CATEGORY() {\n return Category.Curve;\n }\n static get Position() {\n return CurvePosition;\n }\n static get PositionString() {\n return {\n nearHead: CurvePosition.NEAR_HEAD,\n nearTop: CurvePosition.NEAR_TOP,\n };\n }\n setNotes(from, to) {\n if (!from && !to) {\n throw new RuntimeError('BadArguments', 'Curve needs to have either `from` or `to` set.');\n }\n this.from = from;\n this.to = to;\n return this;\n }\n /**\n * @return {boolean} Returns true if this is a partial bar.\n */\n isPartial() {\n return !this.from || !this.to;\n }\n renderCurve(params) {\n const ctx = this.checkContext();\n const x_shift = this.render_options.x_shift;\n const y_shift = this.render_options.y_shift * params.direction;\n const first_x = params.first_x + x_shift;\n const first_y = params.first_y + y_shift;\n const last_x = params.last_x - x_shift;\n const last_y = params.last_y + y_shift;\n const thickness = this.render_options.thickness;\n const cps = this.render_options.cps;\n const { x: cp0x, y: cp0y } = cps[0];\n const { x: cp1x, y: cp1y } = cps[1];\n const cp_spacing = (last_x - first_x) / (cps.length + 2);\n ctx.beginPath();\n ctx.moveTo(first_x, first_y);\n ctx.bezierCurveTo(first_x + cp_spacing + cp0x, first_y + cp0y * params.direction, last_x - cp_spacing + cp1x, last_y + cp1y * params.direction, last_x, last_y);\n ctx.bezierCurveTo(last_x - cp_spacing + cp1x, last_y + (cp1y + thickness) * params.direction, first_x + cp_spacing + cp0x, first_y + (cp0y + thickness) * params.direction, first_x, first_y);\n ctx.stroke();\n ctx.closePath();\n ctx.fill();\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const first_note = this.from;\n const last_note = this.to;\n let first_x;\n let last_x;\n let first_y;\n let last_y;\n let stem_direction = 0;\n let metric = 'baseY';\n let end_metric = 'baseY';\n function getPosition(position) {\n return typeof position === 'string' ? Curve.PositionString[position] : position;\n }\n const position = getPosition(this.render_options.position);\n const position_end = getPosition(this.render_options.position_end);\n if (position === CurvePosition.NEAR_TOP) {\n metric = 'topY';\n end_metric = 'topY';\n }\n if (position_end === CurvePosition.NEAR_HEAD) {\n end_metric = 'baseY';\n }\n else if (position_end === CurvePosition.NEAR_TOP) {\n end_metric = 'topY';\n }\n if (first_note) {\n first_x = first_note.getTieRightX();\n stem_direction = first_note.getStemDirection();\n first_y = first_note.getStemExtents()[metric];\n }\n else {\n const stave = last_note.checkStave();\n first_x = stave.getTieStartX();\n first_y = last_note.getStemExtents()[metric];\n }\n if (last_note) {\n last_x = last_note.getTieLeftX();\n stem_direction = last_note.getStemDirection();\n last_y = last_note.getStemExtents()[end_metric];\n }\n else {\n const stave = first_note.checkStave();\n last_x = stave.getTieEndX();\n last_y = first_note.getStemExtents()[end_metric];\n }\n this.renderCurve({\n first_x,\n last_x,\n first_y,\n last_y,\n direction: stem_direction * (this.render_options.invert === true ? -1 : 1),\n });\n return true;\n }\n}\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements dot modifiers for notes.\nimport { Modifier } from './modifier';\nimport { Category, isGraceNote, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class Dot extends Modifier {\n constructor() {\n super();\n this.position = Modifier.Position.RIGHT;\n this.radius = 2;\n this.setWidth(5);\n this.dot_shiftY = 0;\n }\n static get CATEGORY() {\n return Category.Dot;\n }\n /** Returns the dots associated to a Note. */\n static getDots(note) {\n return note.getModifiersByType(Dot.CATEGORY);\n }\n /** Add a dot on the specified keys to the notes. */\n static buildAndAttach(notes, options) {\n for (const note of notes) {\n if (options === null || options === void 0 ? void 0 : options.all) {\n for (let i = 0; i < note.keys.length; i++) {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, i);\n }\n }\n else if ((options === null || options === void 0 ? void 0 : options.index) != undefined) {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, options === null || options === void 0 ? void 0 : options.index);\n }\n else {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, 0);\n }\n }\n }\n // Arrange dots inside a ModifierContext.\n static format(dots, state) {\n const right_shift = state.right_shift;\n const dot_spacing = 1;\n if (!dots || dots.length === 0)\n return false;\n const dot_list = [];\n const max_shift_map = {};\n for (let i = 0; i < dots.length; ++i) {\n const dot = dots[i];\n const note = dot.getNote();\n let props;\n let shift;\n if (isStaveNote(note)) {\n const index = dot.checkIndex();\n props = note.getKeyProps()[index];\n // consider right displaced head with no previous modifier\n shift = note.getFirstDotPx();\n }\n else if (isTabNote(note)) {\n props = { line: 0.5 }; // Shim key props for dot placement\n shift = right_shift;\n }\n else {\n // note object is not StaveNote or TabNote.\n throw new RuntimeError('Internal', 'Unexpected instance.');\n }\n const note_id = note.getAttribute('id');\n dot_list.push({ line: props.line, note, note_id, dot });\n max_shift_map[note_id] = Math.max(max_shift_map[note_id] || shift, shift);\n }\n // Sort dots by line number.\n dot_list.sort((a, b) => b.line - a.line);\n let dot_shift = right_shift;\n let x_width = 0;\n let last_line = null;\n let last_note = null;\n let prev_dotted_space = null;\n let half_shiftY = 0;\n for (let i = 0; i < dot_list.length; ++i) {\n const { dot, note, note_id, line } = dot_list[i];\n // Reset the position of the dot every line.\n if (line !== last_line || note !== last_note) {\n dot_shift = max_shift_map[note_id];\n }\n if (!note.isRest() && line !== last_line) {\n if (Math.abs(line % 1) === 0.5) {\n // note is on a space, so no dot shift\n half_shiftY = 0;\n }\n else {\n // note is on a line, so shift dot to space above the line\n half_shiftY = 0.5;\n if (last_note != null && !last_note.isRest() && last_line != null && last_line - line === 0.5) {\n // previous note on a space, so shift dot to space below the line\n half_shiftY = -0.5;\n }\n else if (line + half_shiftY === prev_dotted_space) {\n // previous space is dotted, so shift dot to space below the line\n half_shiftY = -0.5;\n }\n }\n }\n // convert half_shiftY to a multiplier for dots.draw()\n if (note.isRest()) {\n dot.dot_shiftY += -half_shiftY;\n }\n else {\n dot.dot_shiftY = -half_shiftY;\n }\n prev_dotted_space = line + half_shiftY;\n dot.setXShift(dot_shift);\n dot_shift += dot.getWidth() + dot_spacing; // spacing\n x_width = dot_shift > x_width ? dot_shift : x_width;\n last_line = line;\n last_note = note;\n }\n // Update state.\n state.right_shift += x_width;\n return true;\n }\n setNote(note) {\n this.note = note;\n if (isGraceNote(note)) {\n this.radius *= 0.5;\n this.setWidth(3);\n }\n return this;\n }\n setDotShiftY(y) {\n this.dot_shiftY = y;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stave = note.checkStave();\n const lineSpace = stave.getSpacingBetweenLines();\n const start = note.getModifierStartXY(this.position, this.index, { forceFlagRight: true });\n // Set the starting y coordinate to the base of the stem for TabNotes.\n if (isTabNote(note)) {\n start.y = note.getStemExtents().baseY;\n }\n const x = start.x + this.x_shift + this.width - this.radius;\n const y = start.y + this.y_shift + this.dot_shiftY * lineSpace;\n ctx.beginPath();\n ctx.arc(x, y, this.radius, 0, Math.PI * 2, false);\n ctx.fill();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Articulation } from './articulation';\nimport { Dot } from './dot';\nimport { FretHandFinger } from './frethandfinger';\nimport { Music } from './music';\nimport { Parser } from './parser';\nimport { Stem } from './stem';\nimport { defined, log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.EasyScore.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (EasyScore.DEBUG)\n log('Vex.Flow.EasyScore', args);\n}\nexport class EasyScoreGrammar {\n constructor(builder) {\n this.builder = builder;\n }\n begin() {\n return this.LINE;\n }\n LINE() {\n return {\n expect: [this.PIECE, this.PIECES, this.EOL],\n };\n }\n PIECE() {\n return {\n expect: [this.CHORDORNOTE, this.PARAMS],\n run: () => this.builder.commitPiece(),\n };\n }\n PIECES() {\n return {\n expect: [this.COMMA, this.PIECE],\n zeroOrMore: true,\n };\n }\n PARAMS() {\n return {\n expect: [this.DURATION, this.TYPE, this.DOTS, this.OPTS],\n };\n }\n CHORDORNOTE() {\n return {\n expect: [this.CHORD, this.SINGLENOTE],\n or: true,\n };\n }\n CHORD() {\n return {\n expect: [this.LPAREN, this.NOTES, this.RPAREN],\n // eslint-disable-next-line\n run: (state) => this.builder.addChord(state.matches[1]),\n };\n }\n NOTES() {\n return {\n expect: [this.NOTE],\n oneOrMore: true,\n };\n }\n NOTE() {\n return {\n expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE],\n };\n }\n SINGLENOTE() {\n return {\n expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE],\n run: (state) => {\n // eslint-disable-next-line\n const s = state;\n this.builder.addSingleNote(s.matches[0], s.matches[1], s.matches[2]);\n },\n };\n }\n ACCIDENTAL() {\n return {\n expect: [this.MICROTONES, this.ACCIDENTALS],\n maybe: true,\n or: true,\n };\n }\n DOTS() {\n return {\n expect: [this.DOT],\n zeroOrMore: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteDots(state.matches),\n };\n }\n TYPE() {\n return {\n expect: [this.SLASH, this.MAYBESLASH, this.TYPES],\n maybe: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteType(state.matches[2]),\n };\n }\n DURATION() {\n return {\n expect: [this.SLASH, this.DURATIONS],\n maybe: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteDuration(state.matches[1]),\n };\n }\n OPTS() {\n return {\n expect: [this.LBRACKET, this.KEYVAL, this.KEYVALS, this.RBRACKET],\n maybe: true,\n };\n }\n KEYVALS() {\n return {\n expect: [this.COMMA, this.KEYVAL],\n zeroOrMore: true,\n };\n }\n KEYVAL() {\n const unquote = (str) => str.slice(1, -1);\n return {\n expect: [this.KEY, this.EQUALS, this.VAL],\n // eslint-disable-next-line\n run: (state) => this.builder.addNoteOption(state.matches[0], unquote(state.matches[2])),\n };\n }\n VAL() {\n return {\n expect: [this.SVAL, this.DVAL],\n or: true,\n };\n }\n KEY() {\n return { token: '[a-zA-Z][a-zA-Z0-9]*' };\n }\n DVAL() {\n return { token: '[\"][^\"]*[\"]' };\n }\n SVAL() {\n return { token: \"['][^']*[']\" };\n }\n NOTENAME() {\n return { token: '[a-gA-G]' };\n }\n OCTAVE() {\n return { token: '[0-9]+' };\n }\n ACCIDENTALS() {\n return { token: 'bb|b|##|#|n' };\n }\n MICROTONES() {\n return { token: 'bbs|bss|bs|db|d|\\\\+\\\\+-|\\\\+-|\\\\+\\\\+|\\\\+|k|o' };\n }\n DURATIONS() {\n return { token: '[0-9whq]+' };\n }\n TYPES() {\n return { token: '[rRsSmMhHgG]' };\n }\n LPAREN() {\n return { token: '[(]' };\n }\n RPAREN() {\n return { token: '[)]' };\n }\n COMMA() {\n return { token: '[,]' };\n }\n DOT() {\n return { token: '[.]' };\n }\n SLASH() {\n return { token: '[/]' };\n }\n MAYBESLASH() {\n return { token: '[/]?' };\n }\n EQUALS() {\n return { token: '[=]' };\n }\n LBRACKET() {\n return { token: '\\\\[' };\n }\n RBRACKET() {\n return { token: '\\\\]' };\n }\n EOL() {\n return { token: '$' };\n }\n}\nexport class Piece {\n constructor(duration) {\n this.chord = [];\n this.dots = 0;\n this.options = {};\n this.duration = duration;\n }\n}\nexport class Builder {\n constructor(factory) {\n this.commitHooks = [];\n this.factory = factory;\n this.reset();\n }\n reset(options) {\n this.options = Object.assign({ stem: 'auto', clef: 'treble' }, options);\n this.elements = { notes: [], accidentals: [] };\n this.rollingDuration = '8';\n this.resetPiece();\n }\n getFactory() {\n return this.factory;\n }\n getElements() {\n return this.elements;\n }\n addCommitHook(commitHook) {\n this.commitHooks.push(commitHook);\n }\n resetPiece() {\n L('resetPiece');\n this.piece = new Piece(this.rollingDuration);\n }\n setNoteDots(dots) {\n L('setNoteDots:', dots);\n if (dots)\n this.piece.dots = dots.length;\n }\n setNoteDuration(duration) {\n L('setNoteDuration:', duration);\n this.rollingDuration = this.piece.duration = duration || this.rollingDuration;\n }\n setNoteType(type) {\n L('setNoteType:', type);\n if (type)\n this.piece.type = type;\n }\n addNoteOption(key, value) {\n L('addNoteOption: key:', key, 'value:', value);\n this.piece.options[key] = value;\n }\n addNote(key, accid, octave) {\n L('addNote:', key, accid, octave);\n this.piece.chord.push({\n key: key,\n accid,\n octave,\n });\n }\n addSingleNote(key, accid, octave) {\n L('addSingleNote:', key, accid, octave);\n this.addNote(key, accid, octave);\n }\n // notes is an array with 3 entries\n addChord(notes) {\n L('startChord');\n if (typeof notes[0] !== 'object') {\n this.addSingleNote(notes[0]);\n }\n else {\n notes.forEach((n) => {\n if (n)\n this.addNote(...n); // n => [string, string | null, string]\n });\n }\n L('endChord');\n }\n commitPiece() {\n L('commitPiece');\n const { factory } = this;\n if (!factory)\n return;\n const options = Object.assign(Object.assign({}, this.options), this.piece.options);\n // reset() sets this.options.stem & this.options.clef but we check to make sure nothing has changed.\n // e.g., auto | up | down\n const stem = defined(options.stem, 'BadArguments', 'options.stem is not defined').toLowerCase();\n // e.g., treble | bass\n const clef = defined(options.clef, 'BadArguments', 'options.clef is not defined').toLowerCase();\n const { chord, duration, dots, type } = this.piece;\n // Create a string[] that will be assigned to the .keys property of the StaveNote.\n // Each string in the array represents a note pitch and is of the form: {NoteName}{Accidental}/{Octave}\n // Only standard accidentals are included in the .keys property. Microtonal accidentals are not included.\n const standardAccidentals = Music.accidentals;\n const keys = chord.map((notePiece) => {\n var _a;\n return notePiece.key +\n (standardAccidentals.includes((_a = notePiece.accid) !== null && _a !== void 0 ? _a : '') ? notePiece.accid : '') +\n '/' +\n notePiece.octave;\n });\n const auto_stem = stem === 'auto'; // StaveNoteStruct expects the underscore & lowercase.\n // Build a GhostNote or StaveNote using the information we gathered.\n const note = (type === null || type === void 0 ? void 0 : type.toLowerCase()) == 'g'\n ? factory.GhostNote({ duration, dots })\n : factory.StaveNote({ keys, duration, dots, type, clef, auto_stem });\n if (!auto_stem)\n note.setStemDirection(stem === 'up' ? Stem.UP : Stem.DOWN);\n // Attach accidentals.\n const accidentals = [];\n chord.forEach((notePiece, index) => {\n const accid = notePiece.accid;\n if (typeof accid === 'string') {\n const accidental = factory.Accidental({ type: accid });\n note.addModifier(accidental, index);\n accidentals.push(accidental);\n }\n else {\n accidentals.push(undefined);\n }\n });\n // Attach dots.\n for (let i = 0; i < dots; i++)\n Dot.buildAndAttach([note], { all: true });\n this.commitHooks.forEach((commitHook) => commitHook(options, note, this));\n this.elements.notes.push(note);\n this.elements.accidentals.push(accidentals);\n this.resetPiece();\n }\n}\n/**\n * Commit hook used by EasyScore.setOptions().\n */\nfunction setId(options, note) {\n if (options.id === undefined)\n return;\n note.setAttribute('id', options.id);\n}\n// Used by setClass() below.\nconst commaSeparatedRegex = /\\s*,\\s*/;\n/**\n * Commit hook used by EasyScore.setOptions().\n */\nfunction setClass(options, note) {\n if (options.class === undefined)\n return;\n options.class.split(commaSeparatedRegex).forEach((className) => note.addClass(className));\n}\n/**\n * EasyScore implements a parser for a simple language to generate VexFlow objects.\n */\nexport class EasyScore {\n constructor(options = {}) {\n this.defaults = {\n clef: 'treble',\n time: '4/4',\n stem: 'auto',\n };\n this.setOptions(options);\n }\n /**\n * Set the score defaults.\n * clef must be set appropriately to avoid errors when adding Staves.\n * @param defaults.clef default clef ( treble | bass ...) see {@link Clef.types}\n * @param defaults.time default time signature ( 4/4 | 9/8 ...)\n * @param defaults.stem default stem arrangement (auto | up | down)\n * @returns this\n */\n set(defaults) {\n this.defaults = Object.assign(Object.assign({}, this.defaults), defaults);\n return this;\n }\n /**\n * @param options.factory is required.\n * @returns this\n */\n setOptions(options) {\n var _a, _b;\n // eslint-disable-next-line\n const factory = options.factory; // ! operator, because options.factory was set in Factory.EasyScore().\n const builder = (_a = options.builder) !== null && _a !== void 0 ? _a : new Builder(factory);\n this.options = Object.assign(Object.assign({ commitHooks: [setId, setClass, Articulation.easyScoreHook, FretHandFinger.easyScoreHook], throwOnError: false }, options), { factory,\n builder });\n this.factory = factory;\n this.builder = builder;\n this.grammar = new EasyScoreGrammar(this.builder);\n this.parser = new Parser(this.grammar);\n (_b = this.options.commitHooks) === null || _b === void 0 ? void 0 : _b.forEach((commitHook) => this.addCommitHook(commitHook));\n return this;\n }\n setContext(context) {\n this.factory.setContext(context);\n return this;\n }\n parse(line, options = {}) {\n this.builder.reset(options);\n const result = this.parser.parse(line);\n if (!result.success && this.options.throwOnError) {\n L(result);\n throw new RuntimeError('Error parsing line: ' + line);\n }\n return result;\n }\n beam(notes, options) {\n this.factory.Beam({ notes, options });\n return notes;\n }\n tuplet(notes, options) {\n this.factory.Tuplet({ notes, options });\n return notes;\n }\n notes(line, options = {}) {\n options = Object.assign({ clef: this.defaults.clef, stem: this.defaults.stem }, options);\n this.parse(line, options);\n return this.builder.getElements().notes;\n }\n voice(notes, options = {}) {\n options = Object.assign({ time: this.defaults.time }, options);\n return this.factory.Voice(options).addTickables(notes);\n }\n addCommitHook(commitHook) {\n this.builder.addCommitHook(commitHook);\n }\n}\nEasyScore.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Registry } from './registry';\nimport { Category } from './typeguard';\nimport { defined, prefix } from './util';\n/**\n * Element implements a generic base class for VexFlow, with implementations\n * of general functions and properties that can be inherited by all VexFlow elements.\n */\nexport class Element {\n constructor() {\n var _a;\n this.children = [];\n this.attrs = {\n id: Element.newID(),\n el: undefined,\n type: this.getCategory(),\n classes: {},\n };\n this.rendered = false;\n // If a default registry exist, then register with it right away.\n (_a = Registry.getDefaultRegistry()) === null || _a === void 0 ? void 0 : _a.register(this);\n }\n static get CATEGORY() {\n return Category.Element;\n }\n static newID() {\n return `auto${Element.ID++}`;\n }\n addChildElement(child) {\n this.children.push(child);\n return this;\n }\n getCategory() {\n return this.constructor.CATEGORY;\n }\n /**\n * Set the element style used to render.\n *\n * Example:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.draw();\n * ```\n * Note: If the element draws additional sub-elements (ie.: Modifiers in a Stave),\n * the style can be applied to all of them by means of the context:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.getContext().setFillStyle('red');\n * element.getContext().setStrokeStyle('red');\n * element.draw();\n * ```\n * or using drawWithStyle:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.drawWithStyle();\n * ```\n */\n setStyle(style) {\n this.style = style;\n return this;\n }\n /** Set the element & associated children style used for rendering. */\n setGroupStyle(style) {\n this.style = style;\n this.children.forEach((child) => child.setGroupStyle(style));\n return this;\n }\n /** Get the element style used for rendering. */\n getStyle() {\n return this.style;\n }\n /** Apply the element style to `context`. */\n applyStyle(context = this.context, style = this.getStyle()) {\n if (!style)\n return this;\n if (!context)\n return this;\n context.save();\n if (style.shadowColor)\n context.setShadowColor(style.shadowColor);\n if (style.shadowBlur)\n context.setShadowBlur(style.shadowBlur);\n if (style.fillStyle)\n context.setFillStyle(style.fillStyle);\n if (style.strokeStyle)\n context.setStrokeStyle(style.strokeStyle);\n if (style.lineWidth)\n context.setLineWidth(style.lineWidth);\n return this;\n }\n /** Restore the style of `context`. */\n restoreStyle(context = this.context, style = this.getStyle()) {\n if (!style)\n return this;\n if (!context)\n return this;\n context.restore();\n return this;\n }\n /**\n * Draw the element and all its sub-elements (ie.: Modifiers in a Stave)\n * with the element style.\n */\n drawWithStyle() {\n this.checkContext();\n this.applyStyle();\n this.draw();\n this.restoreStyle();\n }\n /** Check if it has a class label (An element can have multiple class labels). */\n hasClass(className) {\n return this.attrs.classes[className] === true;\n }\n /** Add a class label (An element can have multiple class labels). */\n addClass(className) {\n var _a;\n this.attrs.classes[className] = true;\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({\n id: this.attrs.id,\n name: 'class',\n value: className,\n oldValue: undefined,\n });\n return this;\n }\n /** Remove a class label (An element can have multiple class labels). */\n removeClass(className) {\n var _a;\n delete this.attrs.classes[className];\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({\n id: this.attrs.id,\n name: 'class',\n value: undefined,\n oldValue: className,\n });\n return this;\n }\n /** Call back from registry after the element is registered. */\n onRegister(registry) {\n this.registry = registry;\n return this;\n }\n /** Return the rendered status. */\n isRendered() {\n return this.rendered;\n }\n /** Set the rendered status. */\n setRendered(rendered = true) {\n this.rendered = rendered;\n return this;\n }\n /** Return the element attributes. */\n getAttributes() {\n return this.attrs;\n }\n /** Return an attribute. */\n // eslint-disable-next-line\n getAttribute(name) {\n return this.attrs[name];\n }\n /** Return associated SVGElement. */\n getSVGElement(suffix = '') {\n const id = prefix(this.attrs.id + suffix);\n const element = document.getElementById(id);\n if (element)\n return element;\n }\n /** Set an attribute. */\n // eslint-disable-next-line\n setAttribute(name, value) {\n var _a;\n const oldID = this.attrs.id;\n const oldValue = this.attrs[name];\n this.attrs[name] = value;\n // Register with old id to support id changes.\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({ id: oldID, name, value, oldValue });\n return this;\n }\n /** Get the boundingBox. */\n getBoundingBox() {\n return this.boundingBox;\n }\n /** Return the context. */\n getContext() {\n return this.context;\n }\n /** Set the context. */\n setContext(context) {\n this.context = context;\n return this;\n }\n /** Validate and return the context. */\n checkContext() {\n return defined(this.context, 'NoContext', 'No rendering context attached to instance.');\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // Font Handling\n /**\n * Provide a CSS compatible font string (e.g., 'bold 16px Arial').\n */\n set font(f) {\n this.setFont(f);\n }\n /** Returns the CSS compatible font string. */\n get font() {\n return Font.toCSSString(this.textFont);\n }\n /**\n * Set the element's font family, size, weight, style (e.g., `Arial`, `10pt`, `bold`, `italic`).\n * @param font is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (at least one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n * If no arguments are provided, then the font is set to the default font.\n * Each Element subclass may specify its own default by overriding the static `TEXT_FONT` property.\n */\n setFont(font, size, weight, style) {\n // Allow subclasses to override `TEXT_FONT`.\n const defaultTextFont = this.constructor.TEXT_FONT;\n const fontIsObject = typeof font === 'object';\n const fontIsString = typeof font === 'string';\n const fontIsUndefined = font === undefined;\n const sizeWeightStyleAreUndefined = size === undefined && weight === undefined && style === undefined;\n if (fontIsObject) {\n // `font` is case 1) a FontInfo object\n this.textFont = Object.assign(Object.assign({}, defaultTextFont), font);\n }\n else if (fontIsString && sizeWeightStyleAreUndefined) {\n // `font` is case 2) CSS font shorthand.\n this.textFont = Font.fromCSSString(font);\n }\n else if (fontIsUndefined && sizeWeightStyleAreUndefined) {\n // All arguments are undefined. Do not check for `arguments.length === 0`,\n // which fails on the edge case: `setFont(undefined)`.\n // TODO: See if we can remove this case entirely without introducing a visual diff.\n // The else case below seems like it should be equivalent to this case.\n this.textFont = Object.assign({}, defaultTextFont);\n }\n else {\n // `font` is case 3) a font family string (e.g., 'Times New Roman').\n // The other parameters represent the size, weight, and style.\n // It is okay for `font` to be undefined while one or more of the other arguments is provided.\n // Following CSS conventions, unspecified params are reset to the default.\n this.textFont = Font.validate(font !== null && font !== void 0 ? font : defaultTextFont.family, size !== null && size !== void 0 ? size : defaultTextFont.size, weight !== null && weight !== void 0 ? weight : defaultTextFont.weight, style !== null && style !== void 0 ? style : defaultTextFont.style);\n }\n return this;\n }\n getFont() {\n if (!this.textFont) {\n this.resetFont();\n }\n return Font.toCSSString(this.textFont);\n }\n /**\n * Reset the text font to the style indicated by the static `TEXT_FONT` property.\n * Subclasses can call this to initialize `textFont` for the first time.\n */\n resetFont() {\n this.setFont();\n }\n /** Return a copy of the current FontInfo object. */\n get fontInfo() {\n if (!this.textFont) {\n this.resetFont();\n }\n // We can cast to Required here, because\n // we just called resetFont() above to ensure this.textFont is set.\n return Object.assign({}, this.textFont);\n }\n set fontInfo(fontInfo) {\n this.setFont(fontInfo);\n }\n /** Change the font size, while keeping everything else the same. */\n setFontSize(size) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, size, fontInfo.weight, fontInfo.style);\n return this;\n }\n /**\n * @returns a CSS font-size string (e.g., '18pt', '12px', '1em').\n * See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.\n */\n getFontSize() {\n return this.fontSize;\n }\n /**\n * The size is 1) a string of the form '10pt' or '16px', compatible with the CSS font-size property.\n * or 2) a number, which is interpreted as a point size (i.e. 12 == '12pt').\n */\n set fontSize(size) {\n this.setFontSize(size);\n }\n /**\n * @returns a CSS font-size string (e.g., '18pt', '12px', '1em').\n */\n get fontSize() {\n let size = this.fontInfo.size;\n if (typeof size === 'number') {\n size = `${size}pt`;\n }\n return size;\n }\n /**\n * @returns the font size in `pt`.\n */\n get fontSizeInPoints() {\n return Font.convertSizeToPointValue(this.fontSize);\n }\n /**\n * @returns the font size in `px`.\n */\n get fontSizeInPixels() {\n return Font.convertSizeToPixelValue(this.fontSize);\n }\n /**\n * @returns a CSS font-style string (e.g., 'italic').\n */\n get fontStyle() {\n return this.fontInfo.style;\n }\n set fontStyle(style) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, fontInfo.size, fontInfo.weight, style);\n }\n /**\n * @returns a CSS font-weight string (e.g., 'bold').\n * As in CSS, font-weight is always returned as a string, even if it was set as a number.\n */\n get fontWeight() {\n return this.fontInfo.weight + '';\n }\n set fontWeight(weight) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, fontInfo.size, weight, fontInfo.style);\n }\n}\nElement.ID = 1000;\n/**\n * Default font for text. This is not related to music engraving. Instead, see `Flow.setMusicFont(...fontNames)`\n * to customize the font for musical symbols placed on the score.\n */\nElement.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: Font.SIZE,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n// MIT License\nimport { Accidental } from './accidental';\nimport { Annotation, AnnotationHorizontalJustify, AnnotationVerticalJustify } from './annotation';\nimport { Articulation } from './articulation';\nimport { BarNote } from './barnote';\nimport { Beam } from './beam';\nimport { ChordSymbol } from './chordsymbol';\nimport { ClefNote } from './clefnote';\nimport { Curve } from './curve';\nimport { EasyScore } from './easyscore';\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { FretHandFinger } from './frethandfinger';\nimport { GhostNote } from './ghostnote';\nimport { GlyphNote } from './glyphnote';\nimport { GraceNote } from './gracenote';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { KeySigNote } from './keysignote';\nimport { ModifierContext } from './modifiercontext';\nimport { MultiMeasureRest } from './multimeasurerest';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { PedalMarking } from './pedalmarking';\nimport { Renderer } from './renderer';\nimport { RepeatNote } from './repeatnote';\nimport { Stave } from './stave';\nimport { StaveConnector } from './staveconnector';\nimport { StaveLine } from './staveline';\nimport { StaveNote } from './stavenote';\nimport { StaveTie } from './stavetie';\nimport { StringNumber } from './stringnumber';\nimport { System } from './system';\nimport { TabNote } from './tabnote';\nimport { TabStave } from './tabstave';\nimport { TextBracket } from './textbracket';\nimport { TextDynamics } from './textdynamics';\nimport { TextNote } from './textnote';\nimport { TickContext } from './tickcontext';\nimport { TimeSigNote } from './timesignote';\nimport { Tuplet } from './tuplet';\nimport { defined, log, RuntimeError } from './util';\nimport { VibratoBracket } from './vibratobracket';\nimport { Voice } from './voice';\nimport { isHTMLCanvas } from './web';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Factory.DEBUG)\n log('Vex.Flow.Factory', args);\n}\n/**\n * Factory implements a high level API around VexFlow.\n */\nexport class Factory {\n /**\n * Example:\n *\n * Create an SVG renderer and attach it to the DIV element named \"boo\" to render using 1200 and 600\n *\n * `const vf: Factory = new Vex.Flow.Factory({renderer: { elementId: 'boo', width: 1200, height: 600 }});`\n */\n constructor(options = {}) {\n L('New factory: ', options);\n this.options = {\n stave: {\n space: 10,\n },\n renderer: {\n elementId: '',\n width: 500,\n height: 200,\n background: '#FFF',\n },\n font: Factory.TEXT_FONT,\n };\n this.setOptions(options);\n }\n /**\n * Static simplified function to access constructor without providing FactoryOptions\n *\n * Example:\n *\n * Create an SVG renderer and attach it to the DIV element named \"boo\" to render using 1200 and 600\n *\n * `const vf: Factory = Vex.Flow.Factory.newFromElementId('boo', 1200, 600 );`\n */\n static newFromElementId(elementId, width = 500, height = 200) {\n return new Factory({ renderer: { elementId, width, height } });\n }\n reset() {\n this.renderQ = [];\n this.systems = [];\n this.staves = [];\n this.voices = [];\n this.stave = undefined; // current stave\n }\n setOptions(options) {\n this.options = Object.assign(Object.assign({}, this.options), options);\n this.initRenderer();\n this.reset();\n }\n initRenderer() {\n const { elementId, width, height, background } = this.options.renderer;\n if (elementId == null) {\n return;\n }\n if (elementId == '') {\n L(this);\n throw new RuntimeError('renderer.elementId not set in FactoryOptions');\n }\n let backend = this.options.renderer.backend;\n if (backend === undefined) {\n const elem = document.getElementById(elementId);\n // We use a custom type check here, because node-canvas mimics canvas,\n // but is not an instance of window.HTMLCanvasElement.\n // In fact, `window` might be undefined here.\n // See: https://www.npmjs.com/package/canvas\n if (isHTMLCanvas(elem)) {\n backend = Renderer.Backends.CANVAS;\n }\n else {\n backend = Renderer.Backends.SVG;\n }\n }\n this.context = Renderer.buildContext(elementId, backend, width, height, background);\n }\n getContext() {\n return this.context;\n }\n setContext(context) {\n this.context = context;\n return this;\n }\n getStave() {\n return this.stave;\n }\n getVoices() {\n return this.voices;\n }\n /** Return pixels from current stave spacing. */\n Stave(params) {\n const staveSpace = this.options.stave.space;\n const p = Object.assign({ x: 0, y: 0, width: this.options.renderer.width - staveSpace * 1.0, options: { spacing_between_lines_px: staveSpace * 1.0 } }, params);\n const stave = new Stave(p.x, p.y, p.width, p.options);\n this.staves.push(stave);\n stave.setContext(this.context);\n this.stave = stave;\n return stave;\n }\n TabStave(params) {\n const staveSpace = this.options.stave.space;\n const p = Object.assign({ x: 0, y: 0, width: this.options.renderer.width - staveSpace * 1.0, options: { spacing_between_lines_px: staveSpace * 1.3 } }, params);\n const stave = new TabStave(p.x, p.y, p.width, p.options);\n this.staves.push(stave);\n stave.setContext(this.context);\n this.stave = stave;\n return stave;\n }\n StaveNote(noteStruct) {\n const note = new StaveNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GlyphNote(glyph, noteStruct, options) {\n const note = new GlyphNote(glyph, noteStruct, options);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n RepeatNote(type, noteStruct, options) {\n const note = new RepeatNote(type, noteStruct, options);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GhostNote(noteStruct) {\n const ghostNote = new GhostNote(noteStruct);\n if (this.stave)\n ghostNote.setStave(this.stave);\n ghostNote.setContext(this.context);\n this.renderQ.push(ghostNote);\n return ghostNote;\n }\n TextNote(noteStruct) {\n const textNote = new TextNote(noteStruct);\n if (this.stave)\n textNote.setStave(this.stave);\n textNote.setContext(this.context);\n this.renderQ.push(textNote);\n return textNote;\n }\n BarNote(params = {}) {\n const barNote = new BarNote(params.type);\n if (this.stave)\n barNote.setStave(this.stave);\n barNote.setContext(this.context);\n this.renderQ.push(barNote);\n return barNote;\n }\n ClefNote(params) {\n const p = Object.assign({ type: 'treble', options: {\n size: 'default',\n annotation: undefined,\n } }, params);\n const clefNote = new ClefNote(p.type, p.options.size, p.options.annotation);\n if (this.stave)\n clefNote.setStave(this.stave);\n clefNote.setContext(this.context);\n this.renderQ.push(clefNote);\n return clefNote;\n }\n TimeSigNote(params) {\n const p = Object.assign({ time: '4/4' }, params);\n const timeSigNote = new TimeSigNote(p.time);\n if (this.stave)\n timeSigNote.setStave(this.stave);\n timeSigNote.setContext(this.context);\n this.renderQ.push(timeSigNote);\n return timeSigNote;\n }\n KeySigNote(params) {\n const keySigNote = new KeySigNote(params.key, params.cancelKey, params.alterKey);\n if (this.stave)\n keySigNote.setStave(this.stave);\n keySigNote.setContext(this.context);\n this.renderQ.push(keySigNote);\n return keySigNote;\n }\n TabNote(noteStruct) {\n const note = new TabNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GraceNote(noteStruct) {\n const note = new GraceNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n return note;\n }\n GraceNoteGroup(params) {\n const group = new GraceNoteGroup(params.notes, params.slur);\n group.setContext(this.context);\n return group;\n }\n Accidental(params) {\n const accid = new Accidental(params.type);\n accid.setContext(this.context);\n return accid;\n }\n Annotation(params) {\n const p = Object.assign({ text: 'p', hJustify: AnnotationHorizontalJustify.CENTER, vJustify: AnnotationVerticalJustify.BOTTOM }, params);\n const annotation = new Annotation(p.text);\n annotation.setJustification(p.hJustify);\n annotation.setVerticalJustification(p.vJustify);\n annotation.setFont(p.font);\n annotation.setContext(this.context);\n return annotation;\n }\n ChordSymbol(params) {\n const p = Object.assign({ vJustify: 'top', hJustify: 'center', kerning: true, reportWidth: true }, params);\n const chordSymbol = new ChordSymbol();\n chordSymbol.setHorizontal(p.hJustify);\n chordSymbol.setVertical(p.vJustify);\n chordSymbol.setEnableKerning(p.kerning);\n chordSymbol.setReportWidth(p.reportWidth);\n // There is a default font based on the engraving font. Only set then\n // font if it is specific, else use the default\n if (typeof p.fontFamily === 'string' && typeof p.fontSize === 'number') {\n if (typeof p.fontWeight === 'string')\n chordSymbol.setFont(p.fontFamily, p.fontSize, p.fontWeight);\n else\n chordSymbol.setFont(p.fontFamily, p.fontSize, '');\n }\n else if (typeof p.fontSize === 'number') {\n chordSymbol.setFontSize(p.fontSize);\n }\n chordSymbol.setContext(this.context);\n return chordSymbol;\n }\n Articulation(params) {\n const p = Object.assign({ type: 'a.', position: 'above' }, params);\n const articulation = new Articulation(p.type);\n articulation.setPosition(p.position);\n articulation.setContext(this.context);\n return articulation;\n }\n Ornament(type, params) {\n const options = Object.assign({ type, position: 0, accidental: '' }, params);\n const ornament = new Ornament(type);\n ornament.setPosition(options.position);\n if (options.upperAccidental) {\n ornament.setUpperAccidental(options.upperAccidental);\n }\n if (options.lowerAccidental) {\n ornament.setLowerAccidental(options.lowerAccidental);\n }\n if (typeof options.delayed !== 'undefined') {\n ornament.setDelayed(options.delayed);\n }\n ornament.setContext(this.context);\n return ornament;\n }\n TextDynamics(params) {\n const p = Object.assign({ text: 'p', duration: 'q', dots: 0, line: 0 }, params);\n const text = new TextDynamics({\n text: p.text,\n line: p.line,\n duration: p.duration,\n dots: p.dots,\n });\n if (this.stave)\n text.setStave(this.stave);\n text.setContext(this.context);\n this.renderQ.push(text);\n return text;\n }\n Fingering(params) {\n const p = Object.assign({ number: '0', position: 'left' }, params);\n const fingering = new FretHandFinger(p.number);\n fingering.setPosition(p.position);\n fingering.setContext(this.context);\n return fingering;\n }\n StringNumber(params, drawCircle = true) {\n const stringNumber = new StringNumber(params.number);\n stringNumber.setPosition(params.position);\n stringNumber.setContext(this.context);\n stringNumber.setDrawCircle(drawCircle);\n return stringNumber;\n }\n TickContext() {\n return new TickContext();\n }\n ModifierContext() {\n return new ModifierContext();\n }\n MultiMeasureRest(params) {\n const numMeasures = defined(params.number_of_measures, 'NoNumberOfMeasures');\n const multiMeasureRest = new MultiMeasureRest(numMeasures, params);\n multiMeasureRest.setContext(this.context);\n this.renderQ.push(multiMeasureRest);\n return multiMeasureRest;\n }\n Voice(params) {\n const p = Object.assign({ time: '4/4' }, params);\n const voice = new Voice(p.time);\n this.voices.push(voice);\n return voice;\n }\n StaveConnector(params) {\n const connector = new StaveConnector(params.top_stave, params.bottom_stave);\n connector.setType(params.type).setContext(this.context);\n this.renderQ.push(connector);\n return connector;\n }\n Formatter(options) {\n return new Formatter(options);\n }\n Tuplet(params) {\n const p = Object.assign({ notes: [], options: {} }, params);\n const tuplet = new Tuplet(p.notes, p.options).setContext(this.context);\n this.renderQ.push(tuplet);\n return tuplet;\n }\n Beam(params) {\n var _a, _b, _c, _d, _e;\n const beam = new Beam(params.notes, (_a = params.options) === null || _a === void 0 ? void 0 : _a.autoStem).setContext(this.context);\n beam.breakSecondaryAt((_c = (_b = params.options) === null || _b === void 0 ? void 0 : _b.secondaryBeamBreaks) !== null && _c !== void 0 ? _c : []);\n if ((_d = params.options) === null || _d === void 0 ? void 0 : _d.partialBeamDirections) {\n Object.entries((_e = params.options) === null || _e === void 0 ? void 0 : _e.partialBeamDirections).forEach(([noteIndex, direction]) => {\n beam.setPartialBeamSideAt(Number(noteIndex), direction);\n });\n }\n this.renderQ.push(beam);\n return beam;\n }\n Curve(params) {\n const curve = new Curve(params.from, params.to, params.options).setContext(this.context);\n this.renderQ.push(curve);\n return curve;\n }\n StaveTie(params) {\n var _a;\n const tie = new StaveTie({\n first_note: params.from,\n last_note: params.to,\n first_indices: params.first_indices,\n last_indices: params.last_indices,\n }, params.text);\n if ((_a = params.options) === null || _a === void 0 ? void 0 : _a.direction)\n tie.setDirection(params.options.direction);\n tie.setContext(this.context);\n this.renderQ.push(tie);\n return tie;\n }\n StaveLine(params) {\n var _a, _b;\n const line = new StaveLine({\n first_note: params.from,\n last_note: params.to,\n first_indices: params.first_indices,\n last_indices: params.last_indices,\n });\n if ((_a = params.options) === null || _a === void 0 ? void 0 : _a.text)\n line.setText(params.options.text);\n if ((_b = params.options) === null || _b === void 0 ? void 0 : _b.font)\n line.setFont(params.options.font);\n line.setContext(this.context);\n this.renderQ.push(line);\n return line;\n }\n VibratoBracket(params) {\n const vibratoBracket = new VibratoBracket({\n start: params.from,\n stop: params.to,\n });\n if (params.options.line)\n vibratoBracket.setLine(params.options.line);\n if (params.options.harsh)\n vibratoBracket.setHarsh(params.options.harsh);\n vibratoBracket.setContext(this.context);\n this.renderQ.push(vibratoBracket);\n return vibratoBracket;\n }\n TextBracket(params) {\n const textBracket = new TextBracket({\n start: params.from,\n stop: params.to,\n text: params.text,\n superscript: params.options.superscript,\n position: params.options.position,\n });\n if (params.options.line)\n textBracket.setLine(params.options.line);\n if (params.options.font)\n textBracket.setFont(params.options.font);\n textBracket.setContext(this.context);\n this.renderQ.push(textBracket);\n return textBracket;\n }\n System(params = {}) {\n params.factory = this;\n const system = new System(params).setContext(this.context);\n this.systems.push(system);\n return system;\n }\n /**\n * Creates EasyScore. Normally the first step after constructing a Factory. For example:\n * ```\n * const vf: Factory = new Vex.Flow.Factory({renderer: { elementId: 'boo', width: 1200, height: 600 }});\n * const score: EasyScore = vf.EasyScore();\n * ```\n * @param options.factory optional instance of Factory\n * @param options.builder instance of Builder\n * @param options.commitHooks function to call after a note element is created\n * @param options.throwOnError throw error in case of parsing error\n */\n EasyScore(options = {}) {\n options.factory = this;\n return new EasyScore(options);\n }\n PedalMarking(params) {\n const p = Object.assign({ notes: [], options: {\n style: 'mixed',\n } }, params);\n const pedal = new PedalMarking(p.notes);\n pedal.setType(PedalMarking.typeString[p.options.style]);\n pedal.setContext(this.context);\n this.renderQ.push(pedal);\n return pedal;\n }\n NoteSubGroup(params) {\n const p = Object.assign({ notes: [] }, params);\n const group = new NoteSubGroup(p.notes);\n group.setContext(this.context);\n return group;\n }\n /** Render the score. */\n draw() {\n const ctx = this.context;\n this.systems.forEach((s) => s.setContext(ctx).format());\n this.staves.forEach((s) => s.setContext(ctx).draw());\n this.voices.forEach((v) => v.setContext(ctx).draw());\n this.renderQ.forEach((e) => {\n if (!e.isRendered())\n e.setContext(ctx).draw();\n });\n this.systems.forEach((s) => s.setContext(ctx).draw());\n this.reset();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Factory.DEBUG` to `true`. */\nFactory.DEBUG = false;\n/** Default text font. */\nFactory.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Accidental } from './accidental';\nimport { Annotation, AnnotationHorizontalJustify, AnnotationVerticalJustify } from './annotation';\nimport { Articulation } from './articulation';\nimport { BarNote } from './barnote';\nimport { Beam } from './beam';\nimport { Bend } from './bend';\nimport { BoundingBox } from './boundingbox';\nimport { BoundingBoxComputation } from './boundingboxcomputation';\nimport { CanvasContext } from './canvascontext';\nimport { ChordSymbol, ChordSymbolHorizontalJustify, ChordSymbolVerticalJustify, SymbolModifiers, SymbolTypes, } from './chordsymbol';\nimport { Clef } from './clef';\nimport { ClefNote } from './clefnote';\nimport { Crescendo } from './crescendo';\nimport { Curve, CurvePosition } from './curve';\nimport { Dot } from './dot';\nimport { EasyScore } from './easyscore';\nimport { Element } from './element';\nimport { Factory } from './factory';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Formatter } from './formatter';\nimport { Fraction } from './fraction';\nimport { FretHandFinger } from './frethandfinger';\nimport { GhostNote } from './ghostnote';\nimport { Glyph } from './glyph';\nimport { GlyphNote } from './glyphnote';\nimport { GraceNote } from './gracenote';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { GraceTabNote } from './gracetabnote';\nimport { KeyManager } from './keymanager';\nimport { KeySignature } from './keysignature';\nimport { KeySigNote } from './keysignote';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { ModifierContext } from './modifiercontext';\nimport { MultiMeasureRest } from './multimeasurerest';\nimport { Music } from './music';\nimport { Note } from './note';\nimport { NoteHead } from './notehead';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { Parenthesis } from './parenthesis';\nimport { Parser } from './parser';\nimport { PedalMarking } from './pedalmarking';\nimport { Registry } from './registry';\nimport { RenderContext } from './rendercontext';\nimport { Renderer, RendererBackends, RendererLineEndType } from './renderer';\nimport { RepeatNote } from './repeatnote';\nimport { Stave } from './stave';\nimport { Barline, BarlineType } from './stavebarline';\nimport { StaveConnector } from './staveconnector';\nimport { StaveHairpin } from './stavehairpin';\nimport { StaveLine } from './staveline';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { StaveNote } from './stavenote';\nimport { Repetition } from './staverepetition';\nimport { StaveTempo } from './stavetempo';\nimport { StaveText } from './stavetext';\nimport { StaveTie } from './stavetie';\nimport { Volta, VoltaType } from './stavevolta';\nimport { Stem } from './stem';\nimport { StringNumber } from './stringnumber';\nimport { Stroke } from './strokes';\nimport { SVGContext } from './svgcontext';\nimport { System } from './system';\nimport { Tables } from './tables';\nimport { TabNote } from './tabnote';\nimport { TabSlide } from './tabslide';\nimport { TabStave } from './tabstave';\nimport { TabTie } from './tabtie';\nimport { TextBracket, TextBracketPosition } from './textbracket';\nimport { TextDynamics } from './textdynamics';\nimport { TextFormatter } from './textformatter';\nimport { TextJustification, TextNote } from './textnote';\nimport { TickContext } from './tickcontext';\nimport { TimeSignature } from './timesignature';\nimport { TimeSigNote } from './timesignote';\nimport { Tremolo } from './tremolo';\nimport { Tuning } from './tuning';\nimport { Tuplet } from './tuplet';\nimport { DATE, ID, VERSION } from './version';\nimport { Vibrato } from './vibrato';\nimport { VibratoBracket } from './vibratobracket';\nimport { Voice, VoiceMode } from './voice';\nexport class Flow {\n static get BUILD() {\n return {\n /** version number. */\n VERSION: VERSION,\n /** git commit ID that this library was built from. */\n ID: ID,\n /** The date when this library was compiled. */\n DATE: DATE,\n };\n }\n /**\n * Examples:\n * ```\n * Vex.Flow.setMusicFont('Petaluma');\n * Vex.Flow.setMusicFont('Bravura', 'Gonville');\n * ```\n *\n * **CASE 1**: You are using `vexflow.js`, which includes all music fonts (Bravura, Gonville, Petaluma, Custom).\n * In this case, calling this method is optional, since VexFlow already defaults to a music font stack of:\n * 'Bravura', 'Gonville', 'Custom'.\n *\n * **CASE 2**: You are using `vexflow-bravura.js` or `vexflow-petaluma.js` or `vexflow-gonville.js`,\n * which includes a single music font. Calling this method is unnecessary.\n *\n * **CASE 3**: You are using the light weight `vexflow-core.js` to take advantage of lazy loading for fonts.\n * In this case, the default music font stack is empty.\n * Example:\n * ```\n * await Vex.Flow.fetchMusicFont('Petaluma');\n * Vex.Flow.setMusicFont('Petaluma');\n * ... (do VexFlow stuff) ...\n * ```\n * See `demos/fonts/` for more examples.\n *\n * @returns an array of Font objects corresponding to the provided `fontNames`.\n */\n static setMusicFont(...fontNames) {\n // Convert the array of font names into an array of Font objects.\n const fonts = fontNames.map((fontName) => Font.load(fontName));\n Tables.MUSIC_FONT_STACK = fonts;\n Glyph.MUSIC_FONT_STACK = fonts.slice();\n Glyph.CURRENT_CACHE_KEY = fontNames.join(',');\n return fonts;\n }\n /**\n * Used with vexflow-core which supports dynamic font loading.\n */\n // eslint-disable-next-line\n static fetchMusicFont(fontName, fontModuleOrPath) {\n return __awaiter(this, void 0, void 0, function* () {\n // The default implementation does nothing.\n // See vexflow-core.ts for the implementation that vexflow-core.js uses.\n });\n }\n static getMusicFont() {\n const fonts = Tables.MUSIC_FONT_STACK;\n return fonts.map((font) => font.getName());\n }\n static get RENDER_PRECISION_PLACES() {\n return Tables.RENDER_PRECISION_PLACES;\n }\n static set RENDER_PRECISION_PLACES(precision) {\n Tables.RENDER_PRECISION_PLACES = precision;\n }\n static get SOFTMAX_FACTOR() {\n return Tables.SOFTMAX_FACTOR;\n }\n static set SOFTMAX_FACTOR(factor) {\n Tables.SOFTMAX_FACTOR = factor;\n }\n static get NOTATION_FONT_SCALE() {\n return Tables.NOTATION_FONT_SCALE;\n }\n static set NOTATION_FONT_SCALE(value) {\n Tables.NOTATION_FONT_SCALE = value;\n }\n static get TABLATURE_FONT_SCALE() {\n return Tables.TABLATURE_FONT_SCALE;\n }\n static set TABLATURE_FONT_SCALE(value) {\n Tables.TABLATURE_FONT_SCALE = value;\n }\n static get RESOLUTION() {\n return Tables.RESOLUTION;\n }\n static set RESOLUTION(value) {\n Tables.RESOLUTION = value;\n }\n static get SLASH_NOTEHEAD_WIDTH() {\n return Tables.SLASH_NOTEHEAD_WIDTH;\n }\n static set SLASH_NOTEHEAD_WIDTH(value) {\n Tables.SLASH_NOTEHEAD_WIDTH = value;\n }\n static get STAVE_LINE_DISTANCE() {\n return Tables.STAVE_LINE_DISTANCE;\n }\n static set STAVE_LINE_DISTANCE(value) {\n Tables.STAVE_LINE_DISTANCE = value;\n }\n static get STAVE_LINE_THICKNESS() {\n return Tables.STAVE_LINE_THICKNESS;\n }\n static set STAVE_LINE_THICKNESS(value) {\n Tables.STAVE_LINE_THICKNESS = value;\n }\n static get STEM_HEIGHT() {\n return Tables.STEM_HEIGHT;\n }\n static set STEM_HEIGHT(value) {\n Tables.STEM_HEIGHT = value;\n }\n static get STEM_WIDTH() {\n return Tables.STEM_WIDTH;\n }\n static set STEM_WIDTH(value) {\n Tables.STEM_WIDTH = value;\n }\n static get TIME4_4() {\n return Tables.TIME4_4;\n }\n static get accidentalMap() {\n return Tables.accidentalMap;\n }\n static get unicode() {\n return Tables.unicode;\n }\n static keySignature(spec) {\n return Tables.keySignature(spec);\n }\n static hasKeySignature(spec) {\n return Tables.hasKeySignature(spec);\n }\n static getKeySignatures() {\n return Tables.getKeySignatures();\n }\n static clefProperties(clef) {\n return Tables.clefProperties(clef);\n }\n // eslint-disable-next-line\n static keyProperties(key, clef, params) {\n return Tables.keyProperties(key, clef, params);\n }\n static durationToTicks(duration) {\n return Tables.durationToTicks(duration);\n }\n}\nFlow.Accidental = Accidental;\nFlow.Annotation = Annotation;\nFlow.Articulation = Articulation;\nFlow.Barline = Barline;\nFlow.BarNote = BarNote;\nFlow.Beam = Beam;\nFlow.Bend = Bend;\nFlow.BoundingBox = BoundingBox;\nFlow.BoundingBoxComputation = BoundingBoxComputation;\nFlow.CanvasContext = CanvasContext;\nFlow.ChordSymbol = ChordSymbol;\nFlow.Clef = Clef;\nFlow.ClefNote = ClefNote;\nFlow.Crescendo = Crescendo;\nFlow.Curve = Curve;\nFlow.Dot = Dot;\nFlow.EasyScore = EasyScore;\nFlow.Element = Element;\nFlow.Factory = Factory;\nFlow.Font = Font;\nFlow.Formatter = Formatter;\nFlow.Fraction = Fraction;\nFlow.FretHandFinger = FretHandFinger;\nFlow.GhostNote = GhostNote;\nFlow.Glyph = Glyph;\nFlow.GlyphNote = GlyphNote;\nFlow.GraceNote = GraceNote;\nFlow.GraceNoteGroup = GraceNoteGroup;\nFlow.GraceTabNote = GraceTabNote;\nFlow.KeyManager = KeyManager;\nFlow.KeySignature = KeySignature;\nFlow.KeySigNote = KeySigNote;\nFlow.Modifier = Modifier;\nFlow.ModifierContext = ModifierContext;\nFlow.MultiMeasureRest = MultiMeasureRest;\nFlow.Music = Music;\nFlow.Note = Note;\nFlow.NoteHead = NoteHead;\nFlow.NoteSubGroup = NoteSubGroup;\nFlow.Ornament = Ornament;\nFlow.Parenthesis = Parenthesis;\nFlow.Parser = Parser;\nFlow.PedalMarking = PedalMarking;\nFlow.Registry = Registry;\nFlow.RenderContext = RenderContext;\nFlow.Renderer = Renderer;\nFlow.RepeatNote = RepeatNote;\nFlow.Repetition = Repetition;\nFlow.Stave = Stave;\nFlow.StaveConnector = StaveConnector;\nFlow.StaveHairpin = StaveHairpin;\nFlow.StaveLine = StaveLine;\nFlow.StaveModifier = StaveModifier;\nFlow.StaveNote = StaveNote;\nFlow.StaveTempo = StaveTempo;\nFlow.StaveText = StaveText;\nFlow.StaveTie = StaveTie;\nFlow.Stem = Stem;\nFlow.StringNumber = StringNumber;\nFlow.Stroke = Stroke;\nFlow.SVGContext = SVGContext;\nFlow.System = System;\nFlow.TabNote = TabNote;\nFlow.TabSlide = TabSlide;\nFlow.TabStave = TabStave;\nFlow.TabTie = TabTie;\nFlow.TextBracket = TextBracket;\nFlow.TextDynamics = TextDynamics;\nFlow.TextFormatter = TextFormatter;\nFlow.TextNote = TextNote;\nFlow.TickContext = TickContext;\nFlow.TimeSignature = TimeSignature;\nFlow.TimeSigNote = TimeSigNote;\nFlow.Tremolo = Tremolo;\nFlow.Tuning = Tuning;\nFlow.Tuplet = Tuplet;\nFlow.Vibrato = Vibrato;\nFlow.VibratoBracket = VibratoBracket;\nFlow.Voice = Voice;\nFlow.Volta = Volta;\n// Exported Enums.\n// Sorted by the module / file they are exported from.\nFlow.AnnotationHorizontalJustify = AnnotationHorizontalJustify;\nFlow.AnnotationVerticalJustify = AnnotationVerticalJustify;\nFlow.ChordSymbolHorizontalJustify = ChordSymbolHorizontalJustify;\nFlow.ChordSymbolVerticalJustify = ChordSymbolVerticalJustify;\nFlow.SymbolTypes = SymbolTypes;\nFlow.SymbolModifiers = SymbolModifiers;\nFlow.CurvePosition = CurvePosition;\nFlow.FontWeight = FontWeight;\nFlow.FontStyle = FontStyle;\nFlow.ModifierPosition = ModifierPosition;\nFlow.RendererBackends = RendererBackends;\nFlow.RendererLineEndType = RendererLineEndType;\nFlow.BarlineType = BarlineType;\nFlow.StaveModifierPosition = StaveModifierPosition;\nFlow.VoltaType = VoltaType;\nFlow.TextBracketPosition = TextBracketPosition;\nFlow.TextJustification = TextJustification;\nFlow.VoiceMode = VoiceMode;\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { defined } from './util';\nexport var FontWeight;\n(function (FontWeight) {\n FontWeight[\"NORMAL\"] = \"normal\";\n FontWeight[\"BOLD\"] = \"bold\";\n})(FontWeight || (FontWeight = {}));\nexport var FontStyle;\n(function (FontStyle) {\n FontStyle[\"NORMAL\"] = \"normal\";\n FontStyle[\"ITALIC\"] = \"italic\";\n})(FontStyle || (FontStyle = {}));\n// Internal element for parsing CSS font shorthand strings.\nlet fontParser;\nconst Fonts = {};\nexport class Font {\n /**\n * Use `Font.load(fontName)` to get a Font object.\n * Do not call this constructor directly.\n */\n constructor(fontName) {\n this.name = fontName;\n }\n /**\n * @param fontSize a font size to convert. Can be specified as a CSS length string (e.g., '16pt', '1em')\n * or as a number (the unit is assumed to be 'pt'). See `Font.scaleToPxFrom` for the supported\n * units (e.g., pt, em, %).\n * @returns the number of pixels that is equivalent to `fontSize`\n */\n static convertSizeToPixelValue(fontSize = Font.SIZE) {\n var _a;\n if (typeof fontSize === 'number') {\n // Assume the numeric fontSize is specified in pt.\n return fontSize * Font.scaleToPxFrom.pt;\n }\n else {\n const value = parseFloat(fontSize);\n if (isNaN(value)) {\n return 0;\n }\n const unit = fontSize.replace(/[\\d.\\s]/g, '').toLowerCase(); // Extract the unit by removing all numbers, dots, spaces.\n const conversionFactor = (_a = Font.scaleToPxFrom[unit]) !== null && _a !== void 0 ? _a : 1;\n return value * conversionFactor;\n }\n }\n /**\n * @param fontSize a font size to convert. Can be specified as a CSS length string (e.g., '16pt', '1em')\n * or as a number (the unit is assumed to be 'pt'). See `Font.scaleToPxFrom` for the supported\n * units (e.g., pt, em, %).\n * @returns the number of points that is equivalent to `fontSize`\n */\n static convertSizeToPointValue(fontSize = Font.SIZE) {\n var _a;\n if (typeof fontSize === 'number') {\n // Assume the numeric fontSize is specified in pt.\n return fontSize;\n }\n else {\n const value = parseFloat(fontSize);\n if (isNaN(value)) {\n return 0;\n }\n const unit = fontSize.replace(/[\\d.\\s]/g, '').toLowerCase(); // Extract the unit by removing all numbers, dots, spaces.\n const conversionFactor = ((_a = Font.scaleToPxFrom[unit]) !== null && _a !== void 0 ? _a : 1) / Font.scaleToPxFrom.pt;\n return value * conversionFactor;\n }\n }\n /**\n * @param f\n * @param size\n * @param weight\n * @param style\n * @returns the `size` field will include the units (e.g., '12pt', '16px').\n */\n static validate(f, size, weight, style) {\n // If f is a string but all other arguments are undefined, we assume that\n // f is CSS font shorthand (e.g., 'italic bold 10pt Arial').\n if (typeof f === 'string' && size === undefined && weight === undefined && style === undefined) {\n return Font.fromCSSString(f);\n }\n let family;\n if (typeof f === 'object') {\n // f is a FontInfo object, so we extract its fields.\n family = f.family;\n size = f.size;\n weight = f.weight;\n style = f.style;\n }\n else {\n // f is a string representing the font family name or undefined.\n family = f;\n }\n family = family !== null && family !== void 0 ? family : Font.SANS_SERIF;\n size = size !== null && size !== void 0 ? size : Font.SIZE + 'pt';\n weight = weight !== null && weight !== void 0 ? weight : FontWeight.NORMAL;\n style = style !== null && style !== void 0 ? style : FontStyle.NORMAL;\n if (weight === '') {\n weight = FontWeight.NORMAL;\n }\n if (style === '') {\n style = FontStyle.NORMAL;\n }\n // If size is a number, we assume the unit is `pt`.\n if (typeof size === 'number') {\n size = `${size}pt`;\n }\n // If weight is a number (e.g., 900), turn it into a string representation of that number.\n if (typeof weight === 'number') {\n weight = weight.toString();\n }\n // At this point, `family`, `size`, `weight`, and `style` are all strings.\n return { family, size, weight, style };\n }\n /**\n * @param cssFontShorthand a string formatted as CSS font shorthand (e.g., 'italic bold 15pt Arial').\n */\n static fromCSSString(cssFontShorthand) {\n // Let the browser parse this string for us.\n // First, create a span element.\n // Then, set its style.font and extract it back out.\n if (!fontParser) {\n fontParser = document.createElement('span');\n }\n fontParser.style.font = cssFontShorthand;\n const { fontFamily, fontSize, fontWeight, fontStyle } = fontParser.style;\n return { family: fontFamily, size: fontSize, weight: fontWeight, style: fontStyle };\n }\n /**\n * @returns a CSS font shorthand string of the form `italic bold 16pt Arial`.\n */\n static toCSSString(fontInfo) {\n var _a;\n if (!fontInfo) {\n return '';\n }\n let style;\n const st = fontInfo.style;\n if (st === FontStyle.NORMAL || st === '' || st === undefined) {\n style = ''; // no space! Omit the style section.\n }\n else {\n style = st.trim() + ' ';\n }\n let weight;\n const wt = fontInfo.weight;\n if (wt === FontWeight.NORMAL || wt === '' || wt === undefined) {\n weight = ''; // no space! Omit the weight section.\n }\n else if (typeof wt === 'number') {\n weight = wt + ' ';\n }\n else {\n weight = wt.trim() + ' ';\n }\n let size;\n const sz = fontInfo.size;\n if (sz === undefined) {\n size = Font.SIZE + 'pt ';\n }\n else if (typeof sz === 'number') {\n size = sz + 'pt ';\n }\n else {\n // size is already a string.\n size = sz.trim() + ' ';\n }\n const family = (_a = fontInfo.family) !== null && _a !== void 0 ? _a : Font.SANS_SERIF;\n return `${style}${weight}${size}${family}`;\n }\n /**\n * @param fontSize a number representing a font size, or a string font size with units.\n * @param scaleFactor multiply the size by this factor.\n * @returns size * scaleFactor (e.g., 16pt * 3 = 48pt, 8px * 0.5 = 4px, 24 * 2 = 48).\n * If the fontSize argument was a number, the return value will be a number.\n * If the fontSize argument was a string, the return value will be a string.\n */\n static scaleSize(fontSize, scaleFactor) {\n if (typeof fontSize === 'number') {\n return (fontSize * scaleFactor);\n }\n else {\n const value = parseFloat(fontSize);\n const unit = fontSize.replace(/[\\d.\\s]/g, ''); // Remove all numbers, dots, spaces.\n return `${value * scaleFactor}${unit}`;\n }\n }\n /**\n * @param weight a string (e.g., 'bold') or a number (e.g., 600 / semi-bold in the OpenType spec).\n * @returns true if the font weight indicates bold.\n */\n static isBold(weight) {\n if (!weight) {\n return false;\n }\n else if (typeof weight === 'number') {\n return weight >= 600;\n }\n else {\n // a string can be 'bold' or '700'\n const parsedWeight = parseInt(weight, 10);\n if (isNaN(parsedWeight)) {\n return weight.toLowerCase() === 'bold';\n }\n else {\n return parsedWeight >= 600;\n }\n }\n }\n /**\n * @param style\n * @returns true if the font style indicates 'italic'.\n */\n static isItalic(style) {\n if (!style) {\n return false;\n }\n else {\n return style.toLowerCase() === FontStyle.ITALIC;\n }\n }\n /**\n * @param fontName\n * @param woffURL The absolute or relative URL to the woff file.\n * @param includeWoff2 If true, we assume that a woff2 file is in\n * the same folder as the woff file, and will append a `2` to the url.\n */\n // Support distributions of the typescript compiler that do not yet include the FontFace API declarations.\n // eslint-disable-next-line\n // @ts-ignore\n static loadWebFont(fontName, woffURL, includeWoff2 = true) {\n return __awaiter(this, void 0, void 0, function* () {\n const woff2URL = includeWoff2 ? `url(${woffURL}2) format('woff2'), ` : '';\n const woff1URL = `url(${woffURL}) format('woff')`;\n const woffURLs = woff2URL + woff1URL;\n // eslint-disable-next-line\n // @ts-ignore\n const fontFace = new FontFace(fontName, woffURLs);\n yield fontFace.load();\n // eslint-disable-next-line\n // @ts-ignore\n document.fonts.add(fontFace);\n return fontFace;\n });\n }\n /**\n * Load the web fonts that are used by ChordSymbol. For example, `flow.html` calls:\n * `await Vex.Flow.Font.loadWebFonts();`\n * Alternatively, you may load web fonts with a stylesheet link (e.g., from Google Fonts),\n * and a @font-face { font-family: ... } rule in your CSS.\n * If you do not load either of these fonts, ChordSymbol will fall back to Times or Arial,\n * depending on the current music engraving font.\n *\n * You can customize `Font.WEB_FONT_HOST` and `Font.WEB_FONT_FILES` to load different fonts\n * for your app.\n */\n static loadWebFonts() {\n return __awaiter(this, void 0, void 0, function* () {\n const host = Font.WEB_FONT_HOST;\n const files = Font.WEB_FONT_FILES;\n for (const fontName in files) {\n const fontPath = files[fontName];\n Font.loadWebFont(fontName, host + fontPath);\n }\n });\n }\n /**\n * @param fontName\n * @param data optionally set the Font object's `.data` property.\n * This is usually done when setting up a font for the first time.\n * @param metrics optionally set the Font object's `.metrics` property.\n * This is usually done when setting up a font for the first time.\n * @returns a Font object with the given `fontName`.\n * Reuse an existing Font object if a matching one is found.\n */\n static load(fontName, data, metrics) {\n let font = Fonts[fontName];\n if (!font) {\n font = new Font(fontName);\n Fonts[fontName] = font;\n }\n if (data) {\n font.setData(data);\n }\n if (metrics) {\n font.setMetrics(metrics);\n }\n return font;\n }\n getName() {\n return this.name;\n }\n getData() {\n return defined(this.data, 'FontError', 'Missing font data');\n }\n getMetrics() {\n return defined(this.metrics, 'FontError', 'Missing metrics');\n }\n setData(data) {\n this.data = data;\n }\n setMetrics(metrics) {\n this.metrics = metrics;\n }\n hasData() {\n return this.data !== undefined;\n }\n getResolution() {\n return this.getData().resolution;\n }\n getGlyphs() {\n return this.getData().glyphs;\n }\n /**\n * Use the provided key to look up a value in this font's metrics file (e.g., bravura_metrics.ts, petaluma_metrics.ts).\n * @param key is a string separated by periods (e.g., stave.endPaddingMax, clef.lineCount.'5'.shiftY).\n * @param defaultValue is returned if the lookup fails.\n * @returns the retrieved value (or `defaultValue` if the lookup fails).\n */\n // eslint-disable-next-line\n lookupMetric(key, defaultValue) {\n const keyParts = key.split('.');\n // Start with the top level font metrics object, and keep looking deeper into the object (via each part of the period-delimited key).\n let currObj = this.getMetrics();\n for (let i = 0; i < keyParts.length; i++) {\n const keyPart = keyParts[i];\n const value = currObj[keyPart];\n if (value === undefined) {\n // If the key lookup fails, we fall back to the defaultValue.\n return defaultValue;\n }\n // The most recent lookup succeeded, so we drill deeper into the object.\n currObj = value;\n }\n // After checking every part of the key (i.e., the loop completed), return the most recently retrieved value.\n return currObj;\n }\n /** For debugging. */\n toString() {\n return '[' + this.name + ' Font]';\n }\n}\n//////////////////////////////////////////////////////////////////////////////////////////////////\n// STATIC MEMBERS\n/** Default sans-serif font family. */\nFont.SANS_SERIF = 'Arial, sans-serif';\n/** Default serif font family. */\nFont.SERIF = 'Times New Roman, serif';\n/** Default font size in `pt`. */\nFont.SIZE = 10;\n// CSS Font Sizes: 36pt == 48px == 3em == 300% == 0.5in\n/** Given a length (for units: pt, px, em, %, in, mm, cm) what is the scale factor to convert it to px? */\nFont.scaleToPxFrom = {\n pt: 4 / 3,\n px: 1,\n em: 16,\n '%': 4 / 25,\n in: 96,\n mm: 96 / 25.4,\n cm: 96 / 2.54,\n};\n/**\n * Customize this field to specify a different CDN for delivering web fonts.\n * Alternative: https://cdn.jsdelivr.net/npm/vexflow-fonts@1.0.3/\n * Or you can use your own host.\n */\nFont.WEB_FONT_HOST = 'https://unpkg.com/vexflow-fonts@1.0.3/';\n/**\n * These font files will be loaded from the CDN specified by `Font.WEB_FONT_HOST` when\n * `await Font.loadWebFonts()` is called. Customize this field to specify a different\n * set of fonts to load. See: `Font.loadWebFonts()`.\n */\nFont.WEB_FONT_FILES = {\n 'Roboto Slab': 'robotoslab/RobotoSlab-Medium_2.001.woff',\n PetalumaScript: 'petaluma/PetalumaScript_1.10_FS.woff',\n};\n","export const BravuraFont = {\n glyphs: {\n bracketTop: {\n x_min: 0,\n x_max: 469,\n y_min: 0,\n y_max: 295,\n ha: 295,\n o: 'm 0 0 l 180 0 b 674 390 410 43 616 150 b 675 405 675 396 675 400 b 664 425 675 416 671 422 b 628 405 651 425 635 415 b 157 179 613 389 432 199 l 12 179 b 0 168 3 179 0 177 z',\n },\n bracketBottom: {\n x_min: 0,\n x_max: 469,\n y_min: -295,\n y_max: 0,\n ha: 295,\n o: 'm 0 -168 b 12 -179 0 -177 3 -179 l 157 -179 b 628 -405 432 -199 613 -389 b 664 -425 635 -415 651 -425 b 675 -405 671 -422 675 -416 b 674 -390 675 -400 675 -396 b 180 0 616 -150 410 -43 l 0 0 z',\n },\n barlineTick: {\n x_min: 0,\n x_max: 36,\n y_min: 868,\n y_max: 1120,\n ha: 252,\n o: 'm 52 1250 l 52 1613 l 0 1613 l 0 1250 z',\n },\n breathMarkTick: {\n x_min: 0,\n x_max: 500,\n y_min: 0,\n y_max: 502,\n ha: 502,\n o: 'm 9 367 b 0 374 6 372 3 374 b 9 334 0 367 0 343 b 179 19 40 312 164 121 b 192 0 179 3 186 0 b 210 19 197 0 207 6 b 698 701 245 197 507 658 b 720 714 714 704 720 711 b 698 723 720 720 711 723 b 197 186 455 714 210 202 b 186 176 194 179 189 176 b 176 186 179 176 176 186 b 9 367 143 266 27 359 z',\n },\n segno: {\n x_min: 4,\n x_max: 550,\n y_min: -27,\n y_max: 759,\n ha: 786,\n o: 'm 194 958 b 217 939 203 958 213 955 l 220 929 b 325 805 230 890 252 805 b 425 901 384 805 425 840 b 413 969 425 923 420 946 b 220 1060 390 1035 294 1060 b 6 793 120 1060 6 936 b 29 687 6 759 13 723 b 295 449 75 582 284 454 b 304 438 301 446 304 444 b 295 415 304 432 301 425 b 78 22 285 395 78 22 b 73 3 75 16 73 9 b 114 -39 73 -20 91 -39 b 150 -17 128 -39 143 -30 b 377 395 150 -17 373 386 b 395 402 377 393 389 402 b 704 176 416 397 704 312 b 621 75 704 120 670 82 l 616 73 b 562 138 586 73 562 94 l 562 154 b 485 249 562 209 526 249 b 468 246 480 249 474 248 b 366 153 415 233 366 210 b 540 -12 366 65 455 -12 b 600 -1 559 -12 579 -9 b 792 251 716 37 792 131 b 789 292 792 264 791 278 b 523 588 768 451 540 579 b 498 611 505 598 498 603 b 501 619 498 613 500 616 b 732 1032 508 631 732 1032 b 737 1053 736 1040 737 1045 b 697 1093 737 1076 719 1093 b 661 1073 683 1093 668 1086 b 423 647 661 1073 432 660 b 410 635 419 639 416 635 b 396 639 406 635 402 636 b 128 792 383 644 166 727 b 108 868 120 808 108 838 b 186 958 108 907 125 948 z m 598 671 b 680 589 598 626 635 589 b 762 671 726 589 762 626 b 680 753 762 717 726 753 b 598 671 635 753 598 717 z m 202 380 b 120 462 202 425 166 462 b 37 380 75 462 37 425 b 120 298 37 334 75 298 b 202 380 166 298 202 334 z',\n },\n coda: {\n x_min: -4,\n x_max: 955,\n y_min: -158,\n y_max: 898,\n ha: 1056,\n o: 'm 1349 576 l 1178 576 b 729 1083 1164 847 962 1064 l 729 1269 b 694 1293 729 1287 713 1293 b 660 1269 675 1293 660 1287 l 660 1083 b 210 576 426 1064 226 848 l 20 576 b -6 541 0 576 -6 560 b 20 507 -6 523 0 507 l 210 507 b 660 0 226 238 426 19 l 660 -202 b 694 -228 660 -222 675 -228 b 729 -202 713 -228 729 -222 l 729 0 b 1178 507 962 19 1164 238 l 1349 507 b 1375 541 1369 507 1375 523 b 1349 576 1375 560 1369 576 z m 940 576 l 729 576 l 729 1002 b 940 576 930 985 940 809 z m 660 1002 l 660 576 l 455 576 b 660 1002 455 809 455 985 z m 455 507 l 660 507 l 660 69 b 455 507 474 91 456 285 z m 729 69 l 729 507 l 940 507 b 729 69 936 287 909 91 z',\n },\n gClef: {\n x_min: 0,\n x_max: 671,\n y_min: -658,\n y_max: 1098,\n ha: 1756,\n o: 'm 541 598 b 550 625 539 615 541 616 b 824 1174 706 770 824 953 b 730 1509 824 1299 789 1423 b 655 1581 708 1541 671 1581 b 562 1512 635 1581 590 1544 b 420 1064 455 1394 420 1214 b 441 828 420 981 431 887 b 428 793 444 811 445 808 b 0 125 220 622 0 416 b 524 -363 0 -125 171 -363 b 624 -354 557 -363 595 -360 b 645 -367 639 -351 642 -350 b 684 -657 662 -464 684 -589 b 455 -896 684 -870 540 -896 b 340 -854 377 -896 340 -873 b 386 -829 340 -844 353 -840 b 482 -694 431 -816 482 -778 b 344 -547 482 -615 432 -547 b 190 -713 248 -547 190 -624 b 464 -948 190 -806 246 -948 b 747 -660 560 -948 747 -904 b 706 -351 747 -577 721 -441 b 724 -327 703 -334 704 -336 b 966 16 870 -269 966 -147 b 619 363 966 200 831 363 b 577 389 582 363 582 363 z m 677 1358 b 763 1240 724 1358 763 1319 b 513 851 763 1080 626 950 b 494 863 503 842 497 844 b 485 995 488 900 485 949 b 677 1358 485 1220 589 1358 z m 520 377 b 498 343 524 350 524 351 b 289 63 372 300 289 186 b 455 -192 289 -66 357 -158 b 494 -200 467 -196 484 -200 b 511 -184 505 -200 511 -193 b 490 -166 511 -174 500 -170 b 386 -12 429 -140 386 -78 b 530 157 386 71 442 132 b 559 145 553 163 556 161 l 631 -284 b 611 -304 634 -300 632 -300 b 530 -311 588 -308 559 -311 b 115 29 278 -311 115 -171 b 249 363 115 114 130 228 b 469 567 336 459 402 513 b 490 562 484 579 487 577 z m 619 148 b 635 168 616 166 618 170 b 848 -66 752 158 848 60 b 713 -271 848 -157 793 -230 b 690 -262 696 -279 693 -279 z',\n },\n cClef: {\n x_min: 0,\n x_max: 699,\n y_min: -506,\n y_max: 506,\n ha: 1012,\n o: 'm 331 694 b 301 724 331 714 321 724 l 300 724 b 269 694 279 724 269 714 l 269 -694 b 300 -724 269 -714 279 -724 l 301 -724 b 331 -694 321 -724 331 -714 l 331 -63 b 344 -55 331 -52 338 -53 b 472 -265 382 -65 442 -102 b 500 -301 477 -288 485 -301 b 530 -262 516 -301 523 -287 b 684 -128 549 -199 582 -128 b 804 -409 778 -128 804 -220 b 651 -683 804 -598 770 -683 b 528 -644 631 -683 528 -674 b 567 -622 528 -636 552 -628 b 625 -528 596 -612 625 -583 b 527 -429 625 -465 583 -429 b 416 -547 465 -429 416 -471 b 667 -729 416 -638 495 -729 b 1007 -413 903 -729 1007 -563 b 706 -76 1007 -215 897 -76 b 618 -89 664 -76 636 -84 b 576 -88 603 -94 589 -96 b 524 0 556 -75 524 -29 b 576 88 524 29 556 75 b 618 89 589 96 603 94 b 706 76 636 84 664 76 b 1007 413 897 76 1007 215 b 667 729 1007 563 903 729 b 416 547 495 729 416 638 b 527 429 416 471 465 429 b 625 528 583 429 625 465 b 567 622 625 583 596 612 b 528 644 552 628 528 636 b 651 683 528 674 631 683 b 804 409 770 683 804 598 b 684 128 804 220 778 128 b 530 262 582 128 549 199 b 500 301 523 287 516 301 b 472 265 485 301 477 288 b 344 55 442 102 382 65 b 331 63 338 53 331 52 z m 30 724 b 0 694 10 724 0 714 l 0 -694 b 30 -724 0 -714 10 -724 l 154 -724 b 184 -694 174 -724 184 -714 l 184 694 b 154 724 184 714 174 724 z',\n },\n fClef: {\n x_min: -5,\n x_max: 684,\n y_min: -635,\n y_max: 262,\n ha: 897,\n o: 'm 363 377 b 0 56 112 377 0 194 b 177 -158 0 -59 60 -158 b 330 -6 268 -158 330 -95 b 192 144 330 86 262 144 b 120 134 153 144 138 134 b 96 160 101 134 96 145 b 330 323 96 217 183 323 b 549 -53 482 323 549 173 b 14 -871 549 -455 350 -680 b -7 -897 1 -878 -7 -886 b 12 -914 -7 -906 -1 -914 b 36 -907 19 -914 27 -912 b 765 -40 390 -734 765 -478 b 363 377 765 210 612 377 z m 906 259 b 827 180 861 259 827 225 b 906 101 827 135 861 101 b 985 180 950 101 985 135 b 906 259 985 225 950 259 z m 907 -102 b 829 -180 863 -102 829 -135 b 907 -258 829 -225 863 -258 b 985 -180 952 -258 985 -225 b 907 -102 985 -135 952 -102 z',\n },\n unpitchedPercussionClef1: {\n x_min: 0,\n x_max: 382,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 230 -338 l 230 338 b 210 360 230 350 222 360 l 20 360 b 0 338 9 360 0 350 l 0 -338 b 20 -360 0 -350 9 -360 l 210 -360 b 230 -338 222 -360 230 -350 z m 550 338 b 530 360 550 350 541 360 l 340 360 b 320 338 328 360 320 350 l 320 -338 b 340 -360 320 -350 328 -360 l 530 -360 b 550 -338 541 -360 550 -350 z',\n },\n '6stringTabClef': {\n x_min: -3,\n x_max: 408,\n y_min: -748,\n y_max: 764,\n ha: 1512,\n o: 'm 557 1024 l 557 1100 l 26 1100 l 26 1024 l 249 1024 l 249 422 l 336 422 l 336 1024 z m 588 -328 l 350 348 l 238 348 l -4 -328 l 88 -328 l 160 -125 l 420 -125 l 491 -328 z m 397 -52 l 181 -52 l 292 256 z m 544 -883 b 420 -719 544 -802 507 -752 b 514 -572 482 -690 514 -639 b 314 -399 514 -472 442 -399 l 39 -399 l 39 -1077 l 344 -1077 b 544 -883 467 -1077 544 -995 z m 428 -583 b 292 -691 428 -652 389 -691 l 125 -691 l 125 -475 l 292 -475 b 428 -583 389 -475 428 -514 z m 458 -884 b 337 -1001 458 -949 418 -1001 l 125 -1001 l 125 -768 l 337 -768 b 458 -884 418 -768 458 -818 z',\n },\n timeSig0: {\n x_min: 20,\n x_max: 450,\n y_min: -250,\n y_max: 251,\n ha: 501,\n o: 'm 648 0 b 338 361 648 200 510 361 b 29 0 167 361 29 200 b 338 -360 29 -199 167 -360 b 648 0 510 -360 648 -199 z m 338 317 b 446 10 397 317 446 180 b 338 -295 446 -158 397 -295 b 230 10 278 -295 230 -158 b 338 317 230 180 278 317 z',\n },\n timeSig1: {\n x_min: 20,\n x_max: 314,\n y_min: -250,\n y_max: 251,\n ha: 501,\n o: 'm 35 19 b 29 0 35 19 29 10 b 45 -20 29 -7 33 -16 b 58 -23 50 -22 56 -23 b 78 -10 72 -23 78 -10 b 156 117 78 -10 140 89 b 170 131 161 127 167 131 b 179 111 176 131 179 120 l 179 -261 b 115 -315 179 -294 145 -315 b 91 -337 105 -315 91 -320 b 122 -360 91 -353 104 -360 l 429 -360 b 452 -337 452 -360 452 -337 b 431 -315 452 -337 452 -315 b 384 -265 410 -315 384 -289 l 384 328 b 356 361 384 351 376 360 b 281 356 336 361 300 356 b 206 360 253 356 228 357 b 199 361 203 360 200 361 b 173 334 184 361 179 347 z',\n },\n timeSig2: {\n x_min: 20,\n x_max: 426,\n y_min: -257,\n y_max: 254,\n ha: 511,\n o: 'm 606 -131 b 589 -111 606 -114 599 -111 b 570 -127 577 -111 573 -117 l 569 -128 b 513 -192 554 -164 543 -192 b 488 -187 505 -192 498 -190 b 445 -171 469 -180 459 -179 b 289 -137 416 -160 348 -137 b 236 -145 271 -137 252 -140 b 422 -42 268 -94 390 -50 b 613 147 523 -14 613 27 b 330 366 613 300 464 366 b 69 275 229 366 140 357 b 29 170 45 245 29 209 b 42 108 29 150 33 130 b 160 29 63 63 108 29 b 261 156 248 29 261 120 b 161 275 261 242 161 246 b 275 330 164 295 190 330 b 405 192 403 330 405 233 b 193 -102 405 60 297 -39 b 33 -317 114 -153 58 -223 l 32 -321 b 69 -370 32 -340 48 -370 b 203 -282 101 -370 118 -282 b 410 -360 261 -282 282 -360 b 606 -131 472 -360 583 -354 z',\n },\n timeSig3: {\n x_min: 20,\n x_max: 401,\n y_min: -251,\n y_max: 249,\n ha: 500,\n o: 'm 307 357 b 301 357 305 357 304 357 l 291 359 b 285 359 289 359 287 359 b 37 200 161 359 37 276 b 154 84 37 153 65 89 l 161 84 b 256 177 225 84 256 130 l 256 189 b 209 248 252 242 216 245 b 180 268 202 251 180 248 l 180 274 b 240 310 183 298 228 310 b 374 199 363 310 374 233 l 374 189 b 199 36 374 82 289 40 b 164 12 184 35 164 27 b 200 -6 164 -6 189 -6 b 379 -137 366 -6 379 -118 b 269 -307 379 -289 301 -307 b 256 -305 264 -307 258 -305 b 216 -282 245 -304 217 -304 l 216 -275 b 249 -180 216 -243 248 -222 b 145 -76 249 -120 207 -76 b 130 -78 140 -76 135 -76 b 60 -115 105 -82 78 -96 b 29 -203 36 -137 29 -171 b 275 -361 32 -315 134 -359 l 288 -361 b 577 -161 431 -361 577 -288 l 577 -151 b 537 -50 575 -109 564 -82 b 503 -20 528 -39 517 -29 l 472 -3 l 425 10 b 410 17 418 12 413 12 b 409 24 409 20 409 22 b 415 37 409 30 410 36 b 459 50 431 42 446 43 b 547 181 517 78 547 115 b 307 357 547 314 367 353 z',\n },\n timeSig4: {\n x_min: 20,\n x_max: 450,\n y_min: -250,\n y_max: 251,\n ha: 501,\n o: 'm 521 -107 l 521 202 b 504 226 521 213 520 226 b 475 213 491 226 484 223 l 338 48 b 325 14 333 40 325 32 l 325 -107 l 131 -107 b 481 336 246 -9 477 318 l 482 340 b 461 361 482 353 472 361 b 363 359 448 361 389 359 b 261 361 337 359 272 361 b 228 334 248 361 228 357 b 43 -105 228 156 86 -45 l 35 -117 b 35 -118 35 -117 35 -118 l 33 -120 b 29 -137 30 -127 29 -132 b 58 -161 29 -151 40 -161 l 325 -161 l 325 -252 b 268 -302 325 -291 294 -302 b 235 -330 245 -302 235 -315 b 262 -360 235 -344 240 -360 l 569 -360 b 598 -330 583 -360 598 -350 b 566 -301 598 -310 580 -301 b 521 -246 552 -301 521 -292 l 521 -161 l 626 -161 b 648 -134 641 -161 648 -151 b 626 -107 648 -117 642 -107 z',\n },\n timeSig5: {\n x_min: 20,\n x_max: 383,\n y_min: -251,\n y_max: 246,\n ha: 497,\n o: 'm 109 85 b 117 179 109 85 115 166 b 138 197 118 190 125 197 l 144 197 b 285 184 158 194 226 184 b 492 323 485 184 492 300 b 472 353 492 341 488 353 b 295 340 454 353 341 340 b 101 354 249 340 125 351 b 66 330 75 354 68 341 l 50 10 l 50 7 b 79 -14 50 -12 65 -14 b 111 14 94 -14 95 -1 b 209 62 125 29 160 62 b 357 -125 258 62 357 35 b 235 -304 357 -284 272 -304 b 202 -300 223 -304 212 -304 b 184 -279 194 -295 186 -289 b 202 -259 184 -269 194 -264 b 256 -163 235 -239 256 -203 b 144 -50 256 -99 206 -50 b 30 -157 66 -50 35 -107 b 29 -183 29 -166 29 -174 b 284 -361 29 -302 107 -361 b 552 -125 456 -361 552 -255 b 314 112 552 6 445 112 b 122 71 230 112 168 98 b 115 69 120 69 117 69 b 109 79 109 69 109 75 z',\n },\n timeSig6: {\n x_min: 20,\n x_max: 414,\n y_min: -249,\n y_max: 251,\n ha: 500,\n o: 'm 439 120 b 554 229 500 120 554 167 b 553 245 554 235 554 239 b 348 361 539 337 426 361 b 85 209 239 360 137 307 b 29 4 53 148 29 72 l 29 -1 b 73 -200 30 -68 42 -143 b 324 -359 132 -307 203 -359 b 513 -307 389 -359 461 -348 b 596 -137 563 -266 596 -202 b 379 72 596 -24 490 72 b 248 22 333 72 285 55 b 239 19 245 19 242 19 b 226 53 230 19 226 30 b 346 327 230 320 315 327 b 393 305 374 327 393 320 b 357 251 393 285 366 268 b 347 209 350 238 347 223 b 369 150 347 187 354 166 b 439 120 379 131 420 120 z m 320 3 b 405 -158 366 3 405 -69 b 320 -320 405 -248 366 -320 b 236 -158 274 -320 236 -248 b 320 3 236 -69 274 3 z',\n },\n timeSig7: {\n x_min: 20,\n x_max: 421,\n y_min: -250,\n y_max: 249,\n ha: 499,\n o: 'm 606 294 b 582 351 606 333 606 351 b 552 336 580 351 557 346 b 485 236 541 318 521 236 b 262 359 449 236 382 359 b 137 307 179 359 157 325 b 98 281 117 288 108 282 b 60 315 86 281 68 301 b 43 325 58 321 50 325 b 29 308 36 325 29 321 l 29 71 b 45 48 29 71 30 48 b 66 76 56 48 60 60 b 164 196 81 112 99 196 b 374 88 222 196 291 88 b 446 118 415 88 435 109 b 459 124 451 121 456 124 b 469 111 465 124 468 120 b 272 -112 469 71 359 -10 b 173 -315 217 -176 173 -259 b 200 -360 173 -346 173 -360 b 294 -347 226 -360 258 -347 b 412 -360 330 -347 397 -360 b 435 -307 426 -360 435 -348 b 606 288 435 -66 606 140 z',\n },\n timeSig8: {\n x_min: 20,\n x_max: 416,\n y_min: -259,\n y_max: 259,\n ha: 518,\n o: 'm 481 52 b 567 204 533 85 567 132 b 317 373 567 351 356 373 b 36 176 150 373 36 297 b 161 -16 36 76 92 23 b 29 -190 86 -52 29 -99 b 301 -373 29 -315 158 -373 b 599 -117 445 -373 599 -311 b 481 52 599 -30 549 17 z m 406 85 b 168 240 291 125 168 150 b 314 331 168 301 251 331 b 482 207 360 331 482 308 b 406 85 482 150 454 112 z m 295 -325 b 111 -183 199 -325 111 -276 b 225 -48 111 -125 161 -72 b 436 -219 330 -94 436 -124 b 295 -325 436 -276 392 -325 z',\n },\n timeSig9: {\n x_min: 20,\n x_max: 414,\n y_min: -249,\n y_max: 251,\n ha: 500,\n o: 'm 186 -117 b 71 -226 125 -117 71 -164 b 72 -242 71 -232 71 -236 b 276 -359 86 -334 199 -359 b 540 -206 386 -357 488 -304 b 596 -1 572 -145 596 -69 l 596 4 b 552 203 595 71 583 145 b 301 361 492 310 422 361 b 112 310 236 361 164 351 b 29 140 62 269 29 204 b 246 -69 29 27 135 -69 b 377 -19 292 -69 340 -52 b 386 -16 380 -16 383 -16 b 399 -50 395 -16 399 -27 b 279 -324 395 -317 310 -324 b 232 -302 251 -324 232 -317 b 268 -248 232 -282 259 -265 b 278 -206 275 -235 278 -220 b 256 -147 278 -184 271 -163 b 186 -117 246 -128 204 -117 z m 305 0 b 220 161 259 0 220 72 b 305 323 220 251 259 323 b 389 161 351 323 389 251 b 305 0 389 72 351 0 z',\n },\n timeSigCommon: {\n x_min: 5,\n x_max: 424,\n y_min: -249,\n y_max: 251,\n ha: 500,\n o: 'm 336 361 b 7 -14 131 361 7 180 b 101 -262 7 -108 42 -190 b 321 -359 156 -328 235 -359 b 611 -88 573 -359 611 -130 b 589 -56 611 -56 595 -56 b 567 -82 577 -56 567 -58 b 363 -311 567 -268 409 -311 b 184 40 246 -311 184 -197 b 372 327 184 278 294 327 b 477 278 446 327 477 292 b 451 246 477 265 472 246 b 360 140 393 246 360 184 b 471 32 360 58 431 32 b 580 156 471 32 580 36 b 336 361 580 344 363 361 z',\n },\n timeSigCutCommon: {\n x_min: 0,\n x_max: 418,\n y_min: -359,\n y_max: 361,\n ha: 720,\n o: 'm 573 -58 b 559 -82 567 -58 559 -60 b 354 -310 559 -266 400 -310 b 317 -305 340 -310 328 -308 b 302 -284 311 -304 302 -295 l 302 287 b 338 323 302 297 328 321 b 363 324 347 324 356 324 b 468 275 436 324 468 289 b 442 243 468 264 464 243 b 351 137 384 243 351 181 b 462 30 351 56 422 30 b 572 154 462 30 572 35 b 318 357 572 295 441 357 b 302 390 310 359 302 383 l 302 495 b 276 520 302 507 292 520 b 252 495 265 520 252 507 l 252 369 b 235 346 252 359 238 346 l 196 331 b 0 -14 66 275 0 122 b 225 -346 0 -150 86 -310 b 252 -382 235 -350 252 -369 l 252 -492 b 276 -517 252 -505 265 -517 b 302 -492 292 -517 302 -505 l 302 -379 b 318 -359 302 -370 308 -363 b 602 -85 563 -354 602 -130 b 579 -58 600 -58 586 -58 z m 252 -235 b 243 -252 252 -248 248 -252 b 236 -248 240 -252 238 -251 b 177 37 197 -193 177 -96 b 232 259 177 147 200 215 b 236 262 233 262 235 262 b 252 239 243 262 252 251 z',\n },\n timeSigPlus: {\n x_min: -1,\n x_max: 499,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 432 53 b 413 79 420 53 413 65 l 413 340 b 392 360 413 350 405 360 l 325 360 b 305 340 312 360 305 350 l 305 79 b 284 53 305 66 292 53 l 19 53 b -1 33 9 53 -1 46 l -1 -33 b 19 -55 -1 -46 9 -55 l 284 -55 b 305 -75 298 -55 305 -68 l 305 -340 b 325 -360 305 -350 312 -360 l 392 -360 b 413 -340 405 -360 413 -350 l 413 -78 b 433 -55 413 -63 423 -55 l 698 -55 b 719 -33 708 -55 719 -46 l 719 33 b 698 53 719 46 708 53 z',\n },\n timeSigPlusSmall: {\n x_min: -1,\n x_max: 255,\n y_min: -133,\n y_max: 123,\n ha: 256,\n o: 'm 220 20 b 210 33 215 20 210 26 l 210 166 b 200 177 210 171 206 177 l 166 177 b 156 166 160 177 156 171 l 156 33 b 145 20 156 27 150 20 l 10 20 b -1 10 4 20 -1 16 l -1 -24 b 10 -35 -1 -30 4 -35 l 145 -35 b 156 -46 153 -35 156 -42 l 156 -180 b 166 -192 156 -186 160 -192 l 200 -192 b 210 -180 206 -192 210 -186 l 210 -48 b 222 -35 210 -39 216 -35 l 356 -35 b 367 -24 361 -35 367 -30 l 367 10 b 356 20 367 16 361 20 z',\n },\n timeSigMinus: {\n x_min: 0,\n x_max: 448,\n y_min: -35,\n y_max: 40,\n ha: 75,\n o: 'm 645 39 b 619 58 645 49 634 58 l 27 58 b 0 39 12 58 0 49 l 0 -32 b 27 -50 0 -42 12 -50 l 619 -50 b 645 -32 634 -50 645 -42 z',\n },\n timeSigParensRight: {\n x_min: 0,\n x_max: 184,\n y_min: -489,\n y_max: 491,\n ha: 980,\n o: 'm 0 -696 b 3 -704 0 -698 1 -704 b 7 -703 4 -704 6 -704 b 265 1 187 -530 265 -282 b 12 701 265 289 187 531 b 4 707 12 701 6 707 b 0 696 1 707 0 703 l 0 665 b 4 644 0 665 0 651 b 167 1 112 503 167 315 b 6 -641 167 -311 109 -497 b 0 -658 3 -644 0 -651 z',\n },\n timeSigParensRightSmall: {\n x_min: 0,\n x_max: 110,\n y_min: -251,\n y_max: 249,\n ha: 500,\n o: 'm 0 -356 b 3 -361 0 -357 1 -361 b 158 0 112 -272 158 -145 b 4 359 158 147 109 272 b 0 353 3 359 0 357 l 0 338 b 3 327 0 338 0 330 b 91 0 60 246 91 160 b 4 -328 91 -160 62 -249 b 0 -337 3 -330 0 -333 z',\n },\n timeSigParensLeft: {\n x_min: 0,\n x_max: 184,\n y_min: -489,\n y_max: 491,\n ha: 980,\n o: 'm 265 -658 b 259 -641 265 -651 262 -644 b 98 1 156 -497 98 -311 b 261 644 98 315 153 503 b 265 665 265 651 265 665 l 265 696 b 261 707 265 703 264 707 b 253 701 259 707 253 701 b 0 1 78 531 0 289 b 258 -703 0 -282 78 -530 b 262 -704 259 -704 261 -704 b 265 -696 264 -704 265 -698 z',\n },\n timeSigParensLeftSmall: {\n x_min: 0,\n x_max: 110,\n y_min: -251,\n y_max: 249,\n ha: 500,\n o: 'm 158 -337 b 154 -328 158 -333 156 -330 b 68 0 96 -249 68 -160 b 156 327 68 160 98 246 b 158 338 158 330 158 338 l 158 353 b 154 359 158 357 156 359 b 0 0 49 272 0 147 b 156 -361 0 -145 46 -272 b 158 -356 157 -361 158 -357 z',\n },\n noteheadDoubleWhole: {\n x_min: 0,\n x_max: 599,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 13 223 b 0 212 4 223 0 217 l 0 -213 b 13 -223 0 -219 4 -223 l 32 -223 b 45 -213 39 -223 45 -219 l 45 212 b 32 223 45 217 39 223 z m 96 223 b 82 212 88 223 82 217 l 82 -213 b 96 -223 82 -219 88 -223 l 114 -223 b 128 -213 121 -223 128 -219 l 128 212 b 114 223 128 217 121 223 z m 747 223 b 733 212 740 223 733 217 l 733 -213 b 747 -223 733 -219 740 -223 l 766 -223 b 780 -213 773 -223 780 -219 l 780 212 b 766 223 780 217 773 223 z m 829 223 b 815 212 824 223 815 217 l 815 -213 b 829 -223 815 -219 824 -223 l 848 -223 b 863 -213 857 -223 863 -219 l 863 212 b 848 223 863 217 857 223 z m 438 180 b 130 1 248 180 130 101 b 423 -180 130 -92 210 -180 b 733 1 657 -180 733 -98 b 438 180 733 104 572 180 z m 469 -145 b 331 -71 409 -145 369 -112 b 284 58 305 -37 284 12 b 400 147 284 131 333 147 b 577 -45 498 147 577 42 b 469 -145 577 -115 533 -145 z',\n },\n noteheadWhole: {\n x_min: 0,\n x_max: 422,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 311 180 b 0 3 120 180 0 101 b 297 -180 0 -94 82 -180 b 608 3 533 -180 608 -98 b 311 180 608 105 445 180 z m 160 91 b 274 148 176 141 229 148 b 452 -45 373 148 452 42 b 386 -141 452 -89 433 -130 b 341 -147 372 -145 356 -147 b 206 -72 289 -147 236 -112 b 156 56 177 -39 156 10 b 160 91 156 68 157 79 z',\n },\n noteheadHalf: {\n x_min: 0,\n x_max: 295,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 140 -180 b 425 60 377 -180 425 13 b 282 180 425 134 366 180 b 0 -60 68 180 0 14 b 140 -180 0 -137 60 -180 z m 108 -125 b 50 -92 78 -125 60 -109 b 42 -63 46 -84 42 -73 b 318 121 42 7 251 121 b 372 91 346 121 361 108 b 380 63 376 82 380 73 b 108 -125 380 1 177 -125 z',\n },\n noteheadBlack: {\n x_min: 0,\n x_max: 295,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 140 -180 b 425 60 268 -180 425 -62 b 285 180 425 134 367 180 b 0 -60 127 180 0 63 b 140 -180 0 -135 62 -180 z',\n },\n noteheadXDoubleWhole: {\n x_min: 0,\n x_max: 546,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 43 213 b 30 223 43 217 39 223 l 13 223 b 0 213 6 223 0 217 l 0 -215 b 13 -223 0 -219 6 -223 l 30 -223 b 43 -215 39 -223 43 -219 z m 704 213 b 693 223 704 217 698 223 l 672 223 b 660 213 667 223 660 217 l 660 163 b 634 180 655 173 645 180 l 505 180 b 484 173 498 180 490 177 l 393 95 l 300 173 b 279 180 294 177 287 180 l 151 180 b 125 163 141 180 130 173 l 125 213 b 112 223 125 217 118 223 l 94 223 b 82 213 86 223 82 217 l 82 -215 b 94 -223 82 -219 86 -223 l 112 -223 b 125 -215 118 -223 125 -219 l 125 -163 b 151 -180 130 -173 140 -180 l 279 -180 b 300 -171 287 -180 294 -177 l 393 -95 l 485 -171 b 505 -180 491 -177 498 -180 l 632 -180 b 660 -163 645 -180 655 -173 l 660 -215 b 672 -223 660 -219 667 -223 l 693 -223 b 704 -215 698 -223 704 -219 z m 786 213 b 772 223 786 217 780 223 l 755 223 b 740 213 747 223 740 217 l 740 -215 b 755 -223 740 -219 747 -223 l 772 -223 b 786 -215 780 -223 786 -219 z m 507 -141 l 393 -45 l 276 -141 l 207 -141 l 364 0 l 207 141 l 276 141 l 393 45 l 507 141 l 577 141 l 420 0 l 577 -141 z m 660 -132 l 518 0 l 660 132 z m 125 131 l 266 0 l 125 -131 z',\n },\n noteheadXWhole: {\n x_min: 0,\n x_max: 377,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 272 -95 l 364 -171 b 384 -180 370 -177 377 -180 l 511 -180 b 543 -148 528 -180 543 -164 b 531 -124 543 -140 539 -131 l 412 0 l 531 124 b 541 148 539 131 541 140 b 513 180 541 164 528 180 l 384 180 b 364 171 377 180 370 177 l 272 94 l 179 171 b 158 180 173 177 166 180 l 30 180 b 0 148 16 180 0 164 b 12 124 0 140 4 131 l 132 0 l 12 -124 b 1 -148 4 -131 1 -140 b 32 -180 1 -164 14 -180 l 158 -180 b 179 -171 166 -180 173 -177 z m 386 -141 l 272 -45 l 157 -141 l 88 -141 l 245 0 l 88 141 l 157 141 l 272 45 l 386 141 l 456 141 l 300 0 l 456 -141 z',\n },\n noteheadXHalf: {\n x_min: 0,\n x_max: 334,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 295 180 b 271 170 287 180 278 177 l 209 98 l 115 171 b 95 180 109 177 104 180 l 36 180 b 4 148 19 180 4 164 b 14 124 4 140 7 132 l 140 22 l 7 -127 b 0 -148 3 -131 0 -138 b 32 -180 0 -166 14 -180 l 184 -180 b 209 -170 193 -180 203 -177 l 271 -99 l 363 -171 b 384 -180 370 -176 377 -180 l 445 -180 b 478 -147 461 -180 478 -163 b 465 -125 478 -138 474 -131 l 341 -22 l 474 127 b 481 148 480 131 481 138 b 448 180 481 166 468 180 z m 36 148 l 95 148 l 233 33 l 334 148 l 410 148 l 274 -6 l 445 -148 l 384 -148 l 248 -35 l 147 -148 l 71 -148 l 206 4 z',\n },\n noteheadXBlack: {\n x_min: 0,\n x_max: 290,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 410 -143 l 239 0 l 410 144 b 418 160 415 147 418 154 b 399 180 418 171 408 180 b 389 177 396 180 392 179 l 207 26 l 29 177 b 17 180 26 179 22 180 b 0 161 7 180 0 170 b 7 144 0 156 3 148 l 179 0 l 7 -143 b 0 -158 1 -147 0 -153 b 19 -180 0 -170 7 -180 b 29 -176 23 -180 26 -179 l 207 -24 l 389 -176 b 399 -180 392 -179 396 -180 b 418 -160 410 -180 418 -168 b 410 -143 418 -153 415 -147 z',\n },\n noteheadCircleXDoubleWhole: {\n x_min: 0,\n x_max: 422,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 576 223 b 563 213 570 223 563 219 l 563 -215 b 576 -223 563 -219 570 -223 l 595 -223 b 608 -215 602 -223 608 -219 l 608 213 b 595 223 608 219 602 223 z m 497 223 b 484 213 491 223 484 219 l 484 -215 b 497 -223 484 -219 491 -223 l 516 -223 b 528 -215 523 -223 528 -219 l 528 213 b 516 223 528 219 523 223 z m 94 223 b 81 213 86 223 81 219 l 81 -215 b 94 -223 81 -219 86 -223 l 111 -223 b 124 -215 118 -223 124 -219 l 124 213 b 111 223 124 219 118 223 z m 13 223 b 0 213 6 223 0 219 l 0 -215 b 13 -223 0 -219 6 -223 l 30 -223 b 45 -215 37 -223 45 -219 l 45 213 b 30 223 45 219 37 223 z m 304 180 b 127 0 206 180 127 101 b 304 -180 127 -99 206 -180 b 482 0 405 -180 482 -99 b 304 180 482 101 405 180 z m 305 32 l 225 112 b 304 140 248 130 275 140 b 387 112 336 140 364 130 z m 278 1 l 193 -82 b 216 0 199 -59 216 -30 b 194 85 216 33 203 50 z m 334 1 l 418 84 b 389 0 402 50 389 23 b 418 -81 389 -30 409 -60 z m 305 -27 l 389 -109 b 304 -138 364 -128 336 -138 b 222 -109 274 -138 246 -128 z',\n },\n noteheadCircleXWhole: {\n x_min: 0,\n x_max: 249,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 179 180 b 0 0 81 180 0 101 b 179 -180 0 -99 81 -180 b 359 0 278 -180 359 -99 b 179 180 359 101 278 180 z m 180 32 l 99 112 b 179 140 121 130 150 140 b 262 112 210 140 238 130 z m 151 1 l 68 -82 b 86 0 73 -59 86 -30 b 68 85 86 33 78 50 z m 209 1 l 291 84 b 269 0 276 50 269 32 b 291 -79 269 -26 282 -58 z m 180 -27 l 264 -111 b 179 -138 239 -128 210 -138 b 96 -111 148 -138 120 -128 z',\n },\n noteheadCircleXHalf: {\n x_min: 0,\n x_max: 250,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 179 180 b 0 0 81 180 0 101 b 179 -180 0 -99 81 -180 b 360 0 278 -180 360 -99 b 179 180 360 101 278 180 z m 186 37 l 131 92 b 220 124 153 109 189 124 b 262 112 236 124 249 121 z m 215 7 l 291 84 b 304 42 300 71 304 58 b 271 -49 304 10 288 -26 z m 145 -6 l 68 -82 b 56 -42 59 -71 56 -58 b 89 52 56 -9 72 27 z m 174 -33 l 230 -89 b 140 -124 206 -108 171 -124 b 96 -111 122 -124 109 -121 z',\n },\n noteheadCircleX: {\n x_min: 0,\n x_max: 249,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 179 180 b 0 0 81 180 0 99 b 179 -180 0 -99 81 -180 b 359 0 278 -180 359 -99 b 179 180 359 99 278 180 z m 261 112 l 180 30 l 98 112 b 179 138 121 128 148 138 b 261 112 210 138 238 128 z m 317 0 b 292 -82 317 -30 308 -59 l 209 1 l 291 84 b 317 0 307 60 317 30 z m 40 0 b 69 84 40 32 50 60 l 151 1 l 68 -84 b 40 0 49 -60 40 -30 z m 95 -111 l 180 -27 l 262 -111 b 179 -138 239 -128 210 -138 b 95 -111 148 -138 120 -128 z',\n },\n noteheadCircledDoubleWhole: {\n x_min: 0,\n x_max: 603,\n y_min: -218,\n y_max: 213,\n ha: 431,\n o: 'm 770 223 l 752 223 b 737 213 744 223 737 219 l 737 59 b 435 307 710 203 582 307 b 128 48 281 307 156 197 l 128 213 b 115 223 128 219 122 223 l 96 223 b 84 213 89 223 84 219 l 84 -215 b 96 -223 84 -220 89 -223 l 115 -223 b 128 -215 122 -223 128 -220 l 128 -56 b 435 -314 156 -206 282 -314 b 654 -223 517 -314 595 -282 b 737 -66 697 -180 726 -125 l 737 -215 b 752 -223 737 -220 744 -223 l 770 -223 b 785 -215 778 -223 785 -220 l 785 213 b 770 223 785 219 778 223 z m 435 274 b 698 85 556 274 661 194 b 439 180 641 143 534 180 b 176 99 320 180 228 148 b 435 274 217 203 318 274 z m 32 223 l 13 223 b 0 213 6 223 0 219 l 0 -215 b 13 -223 0 -220 6 -223 l 32 -223 b 45 -215 40 -223 45 -220 l 45 213 b 32 223 45 219 40 223 z m 852 223 l 835 223 b 819 213 828 223 819 219 l 819 -215 b 835 -223 819 -220 828 -223 l 852 -223 b 868 -215 861 -223 868 -220 l 868 213 b 852 223 868 219 861 223 z m 580 -46 b 514 -143 580 -91 562 -131 b 472 -148 501 -147 487 -148 b 364 -105 433 -148 395 -131 l 334 -73 b 285 58 307 -39 285 10 b 289 91 285 69 287 79 b 403 145 305 140 357 145 b 580 -46 501 145 580 42 z m 435 -282 b 176 -108 318 -282 217 -209 b 425 -180 222 -151 301 -180 b 691 -109 563 -180 647 -153 b 435 -282 651 -210 550 -282 z',\n },\n noteheadCircledWhole: {\n x_min: 0,\n x_max: 437,\n y_min: -225,\n y_max: 211,\n ha: 436,\n o: 'm 314 304 b 0 -10 140 304 0 164 b 314 -324 0 -183 141 -324 b 629 -10 487 -324 629 -183 b 314 304 629 164 488 304 z m 314 275 b 588 73 441 275 549 193 b 321 180 536 137 420 180 b 48 88 190 180 95 143 b 314 275 85 199 199 275 z m 393 -141 b 350 -147 379 -145 364 -147 b 314 -141 337 -147 325 -145 b 167 55 235 -120 167 -26 b 173 91 167 66 168 79 b 284 145 187 138 239 145 b 459 -48 382 145 459 39 b 393 -141 459 -91 438 -131 z m 314 -294 b 40 -86 187 -294 75 -207 b 305 -180 81 -141 164 -180 b 588 -86 464 -180 550 -143 b 314 -294 554 -209 442 -294 z',\n },\n noteheadCircledHalf: {\n x_min: -18,\n x_max: 311,\n y_min: -162,\n y_max: 167,\n ha: 329,\n o: 'm 212 240 b -26 3 81 240 -26 134 b 212 -233 -26 -127 81 -233 b 448 3 341 -233 448 -127 b 212 240 448 134 341 240 z m 212 220 b 363 160 271 220 324 197 b 281 180 341 173 312 180 b 0 -52 76 180 6 26 b -6 3 -4 -35 -6 -16 b 212 220 -6 122 92 220 z m 50 -92 b 42 -63 46 -84 42 -73 b 173 63 42 -33 73 7 b 317 120 243 105 288 120 b 369 89 344 120 359 107 b 377 62 374 81 377 72 b 248 -66 377 33 348 -1 b 108 -125 183 -109 138 -125 b 50 -92 78 -125 60 -109 z m 212 -215 b 84 -171 164 -215 120 -199 b 138 -180 101 -179 120 -180 b 422 56 372 -180 420 7 b 429 3 426 40 429 22 b 212 -215 429 -117 333 -215 z',\n },\n noteheadCircledBlack: {\n x_min: -21,\n x_max: 321,\n y_min: -171,\n y_max: 167,\n ha: 338,\n o: 'm 216 240 b -30 -3 82 240 -30 131 b 216 -246 -30 -137 82 -246 b 462 -3 351 -246 462 -137 b 216 240 462 131 351 240 z m 216 220 b 372 160 276 220 331 197 b 284 180 348 174 317 180 b 0 -59 127 180 0 65 l 0 -66 b -10 -3 -6 -45 -10 -24 b 216 220 -10 120 92 220 z m 216 -226 b 56 -158 153 -226 96 -200 b 140 -180 79 -171 107 -180 b 425 60 268 -180 425 -60 b 422 88 425 71 425 79 b 442 -3 435 60 442 29 b 216 -226 442 -125 341 -226 z',\n },\n noteheadDoubleWholeSquare: {\n x_min: 0,\n x_max: 416,\n y_min: -190,\n y_max: 198,\n ha: 388,\n o: 'm 563 217 b 528 180 563 192 544 180 l 62 180 b 36 215 52 180 36 192 l 36 268 b 17 285 36 278 27 285 b 0 268 7 285 0 278 l 0 -255 b 17 -274 0 -264 7 -274 b 36 -255 27 -274 36 -264 l 36 -213 b 66 -180 36 -197 53 -180 l 528 -180 b 563 -209 549 -180 563 -196 l 563 -255 b 580 -274 563 -264 570 -274 b 599 -255 590 -274 599 -264 l 599 268 b 580 285 599 278 590 285 b 563 268 570 285 563 278 z m 36 23 b 111 71 36 55 58 71 l 487 71 b 563 30 533 71 563 53 l 563 -22 b 487 -68 563 -53 533 -68 l 117 -68 b 36 -22 66 -68 36 -49 z',\n },\n noteheadSquareWhite: {\n x_min: 0,\n x_max: 313,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 451 -180 l 451 180 l 0 180 l 0 -180 z m 40 -138 l 40 140 l 410 140 l 410 -138 z',\n },\n noteheadSquareBlack: {\n x_min: 0,\n x_max: 313,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 451 -180 l 451 180 l 0 180 l 0 -180 z',\n },\n noteheadTriangleDownDoubleWhole: {\n x_min: 0,\n x_max: 483,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 696 213 b 681 223 696 219 690 223 l 662 223 b 648 213 655 223 648 219 l 648 -213 b 662 -223 648 -217 655 -223 l 681 -223 b 696 -213 690 -223 696 -217 z m 619 213 b 605 223 619 219 613 223 l 588 223 b 573 213 580 223 573 219 l 573 174 b 562 180 570 177 566 180 l 134 180 b 122 174 130 180 125 177 l 122 213 b 108 223 122 219 117 223 l 91 223 b 76 213 84 223 76 219 l 76 -213 b 91 -223 76 -217 84 -223 l 108 -223 b 122 -213 117 -223 122 -217 l 122 154 l 334 -173 b 346 -180 337 -177 341 -180 b 357 -173 351 -180 354 -177 l 573 154 l 573 -213 b 588 -223 573 -217 580 -223 l 605 -223 b 619 -213 613 -223 619 -217 z m 32 -223 b 46 -213 40 -223 46 -217 l 46 213 b 32 223 46 219 40 223 l 14 223 b 0 213 7 223 0 219 l 0 -213 b 14 -223 0 -217 7 -223 z m 428 98 b 346 -107 428 17 377 -53 b 265 96 315 -55 265 17 b 289 137 265 109 275 137 l 406 137 b 428 98 419 137 428 111 z',\n },\n noteheadTriangleDownWhole: {\n x_min: 0,\n x_max: 319,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 14 180 b 0 166 6 180 0 173 b 1 158 0 163 1 160 l 216 -173 b 228 -180 219 -177 225 -180 b 239 -173 233 -180 238 -177 l 458 158 b 459 166 458 160 459 163 b 445 180 459 173 454 180 z m 288 137 b 310 98 301 137 310 111 b 228 -108 310 17 259 -55 b 145 96 197 -56 145 17 b 170 137 145 109 157 137 z',\n },\n noteheadTriangleDownHalf: {\n x_min: 0,\n x_max: 285,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 196 -180 b 209 -173 200 -180 206 -177 l 408 157 b 410 166 409 160 410 163 b 396 180 410 173 403 180 l 14 180 b 0 166 4 180 0 173 b 1 158 0 163 0 161 l 183 -173 b 196 -180 184 -174 190 -180 z m 164 138 l 295 138 l 179 -76 l 114 37 z',\n },\n noteheadTriangleDownBlack: {\n x_min: 0,\n x_max: 292,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 207 -180 l 420 180 l 0 180 z',\n },\n noteheadTriangleUpDoubleWhole: {\n x_min: 0,\n x_max: 483,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 696 213 b 681 223 696 217 690 223 l 662 223 b 648 213 655 223 648 217 l 648 -213 b 662 -223 648 -219 655 -223 l 681 -223 b 696 -213 690 -223 696 -219 z m 619 213 b 605 223 619 217 613 223 l 588 223 b 573 213 580 223 573 217 l 573 -154 l 357 173 b 346 180 354 177 351 180 b 334 173 341 180 337 177 l 122 -154 l 122 213 b 108 223 122 217 117 223 l 91 223 b 76 213 84 223 76 217 l 76 -213 b 91 -223 76 -219 84 -223 l 108 -223 b 122 -213 117 -223 122 -219 l 122 -174 b 134 -180 125 -177 130 -180 l 562 -180 b 573 -174 566 -180 570 -177 l 573 -213 b 588 -223 573 -219 580 -223 l 605 -223 b 619 -213 613 -223 619 -219 z m 32 223 l 14 223 b 0 213 7 223 0 217 l 0 -213 b 14 -223 0 -219 7 -223 l 32 -223 b 46 -213 40 -223 46 -219 l 46 213 b 32 223 46 217 40 223 z m 428 -98 b 406 -137 428 -111 419 -137 l 289 -137 b 265 -96 275 -137 265 -109 b 346 107 265 -17 315 55 b 428 -98 377 53 428 -17 z',\n },\n noteheadTriangleUpWhole: {\n x_min: 0,\n x_max: 319,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 445 -180 b 459 -166 454 -180 459 -173 b 458 -158 459 -163 458 -160 l 239 173 b 228 180 238 177 233 180 b 216 173 225 180 219 177 l 1 -158 b 0 -166 1 -160 0 -163 b 14 -180 0 -173 6 -180 z m 170 -137 b 145 -96 157 -137 145 -109 b 228 108 145 -17 197 56 b 310 -98 259 55 310 -17 b 288 -137 310 -111 301 -137 z',\n },\n noteheadTriangleUpHalf: {\n x_min: 0,\n x_max: 285,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 215 180 b 202 173 210 180 204 177 l 3 -157 b 0 -166 1 -160 0 -163 b 14 -180 0 -173 7 -180 l 396 -180 b 410 -166 406 -180 410 -173 b 409 -158 410 -163 410 -161 l 228 173 b 215 180 226 174 220 180 z m 246 -138 l 115 -138 l 232 76 l 297 -37 z',\n },\n noteheadTriangleUpBlack: {\n x_min: 0,\n x_max: 293,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 422 -180 l 207 180 l 0 -180 z',\n },\n noteheadSlashedDoubleWhole1: {\n x_min: 0,\n x_max: 596,\n y_min: -179,\n y_max: 168,\n ha: 347,\n o: 'm 618 135 l 697 206 b 704 222 703 210 704 216 b 698 236 704 226 703 232 b 683 242 694 239 688 242 b 670 238 677 242 674 240 l 575 153 b 435 180 531 168 481 180 b 128 0 246 180 128 98 b 236 -148 128 -58 160 -114 l 153 -222 b 145 -238 148 -226 145 -232 b 151 -252 145 -242 148 -248 b 167 -258 156 -256 161 -258 b 181 -253 171 -258 177 -256 l 282 -164 b 420 -180 320 -173 366 -180 b 729 0 654 -180 729 -98 b 618 135 729 55 681 104 z m 114 223 l 95 223 b 82 212 88 223 82 217 l 82 -215 b 95 -223 82 -219 88 -223 l 114 -223 b 127 -215 121 -223 127 -219 l 127 212 b 114 223 127 217 121 223 z m 32 223 l 13 223 b 0 212 6 223 0 217 l 0 -215 b 13 -223 0 -219 6 -223 l 32 -223 b 45 -215 39 -223 45 -219 l 45 212 b 32 223 45 217 39 223 z m 844 223 l 825 223 b 811 212 819 223 811 217 l 811 -215 b 825 -223 811 -219 819 -223 l 844 -223 b 858 -215 851 -223 858 -219 l 858 212 b 844 223 858 217 851 223 z m 763 223 l 743 223 b 730 212 736 223 730 217 l 730 -215 b 743 -223 730 -219 736 -223 l 763 -223 b 776 -215 769 -223 776 -219 l 776 212 b 763 223 776 217 769 223 z m 282 56 b 285 89 282 68 284 79 b 399 144 301 137 354 144 b 510 95 441 144 480 124 l 327 -68 b 282 56 301 -35 282 13 z m 572 -72 b 508 -141 564 -108 544 -132 b 467 -147 495 -145 481 -147 b 360 -104 428 -147 389 -128 l 356 -98 l 537 63 b 575 -46 560 30 575 -9 b 572 -72 575 -55 573 -65 z',\n },\n noteheadSlashedWhole1: {\n x_min: -22,\n x_max: 433,\n y_min: -157,\n y_max: 148,\n ha: 305,\n o: 'm 484 140 b 308 180 431 166 367 180 b 0 1 118 180 0 99 b 73 -128 0 -48 22 -95 l -22 -190 b -32 -206 -27 -194 -32 -200 b -27 -217 -32 -210 -30 -215 b -12 -226 -23 -223 -17 -226 b 0 -223 -7 -226 -4 -225 l 112 -150 b 294 -180 157 -168 217 -180 b 602 1 526 -180 602 -98 b 523 118 602 48 570 86 l 613 177 b 624 193 619 181 624 187 b 619 204 624 197 622 200 b 603 213 615 209 609 213 b 592 209 599 213 596 212 z m 190 -52 b 154 56 170 -20 154 19 b 160 91 154 68 156 79 b 271 147 174 138 226 147 b 396 82 321 147 364 121 z m 419 50 b 446 -48 436 19 446 -14 b 337 -147 446 -120 402 -147 b 301 -141 327 -147 314 -144 b 235 -104 276 -134 253 -120 b 215 -84 226 -98 220 -91 z',\n },\n noteheadSlashedHalf1: {\n x_min: -67,\n x_max: 386,\n y_min: -142,\n y_max: 160,\n ha: 302,\n o: 'm 552 222 b 536 230 549 228 543 230 b 524 228 533 230 528 230 l 389 140 b 281 180 364 164 327 180 b 0 -60 65 180 0 13 b 7 -105 0 -78 3 -92 l -88 -167 b -96 -184 -94 -171 -96 -177 b -94 -194 -96 -187 -95 -192 b -76 -204 -89 -202 -84 -204 b -66 -202 -73 -204 -69 -203 l 29 -140 b 137 -180 55 -167 92 -180 b 420 59 374 -180 420 13 b 412 107 420 76 419 92 l 546 194 b 556 210 552 197 556 204 b 552 222 556 213 554 217 z m 315 120 b 347 112 328 120 338 117 l 46 -82 b 42 -63 43 -76 42 -69 b 315 120 42 6 248 120 z m 108 -124 b 69 -114 91 -124 79 -120 l 372 81 b 376 63 374 75 376 69 b 108 -124 376 0 174 -124 z',\n },\n noteheadSlashedBlack1: {\n x_min: -80,\n x_max: 375,\n y_min: -165,\n y_max: 167,\n ha: 332,\n o: 'm 518 240 b 507 236 514 240 510 239 l 384 148 b 284 180 359 168 324 180 b 0 -62 127 180 0 63 b 13 -115 0 -82 4 -99 l -107 -202 b -115 -217 -111 -204 -115 -212 b -111 -229 -115 -222 -114 -225 b -95 -238 -108 -235 -101 -238 b -84 -235 -91 -238 -86 -236 l 39 -148 b 140 -180 63 -170 99 -180 b 425 59 268 -180 425 -62 b 410 117 425 81 420 101 l 530 203 b 540 219 536 207 540 213 b 518 240 540 229 528 240 z',\n },\n noteheadSlashedDoubleWhole2: {\n x_min: 0,\n x_max: 596,\n y_min: -178,\n y_max: 169,\n ha: 347,\n o: 'm 729 0 b 435 180 729 102 569 180 b 278 156 374 180 321 170 l 184 239 b 170 243 181 242 176 243 b 154 238 166 243 158 240 b 150 223 151 233 150 228 b 156 207 150 217 153 212 l 233 138 b 128 0 167 107 128 56 b 420 -180 128 -94 210 -180 b 575 -164 482 -180 533 -174 l 672 -252 b 687 -256 677 -255 681 -256 b 703 -251 691 -256 698 -255 b 707 -236 706 -246 707 -240 b 701 -220 707 -230 706 -225 l 619 -150 b 729 0 700 -117 729 -62 z m 114 223 l 95 223 b 82 213 88 223 82 217 l 82 -213 b 95 -223 82 -219 88 -223 l 114 -223 b 127 -213 121 -223 127 -219 l 127 213 b 114 223 127 217 121 223 z m 32 223 l 13 223 b 0 213 6 223 0 217 l 0 -213 b 13 -223 0 -219 6 -223 l 32 -223 b 45 -213 39 -223 45 -219 l 45 213 b 32 223 45 217 39 223 z m 844 223 l 825 223 b 811 213 819 223 811 217 l 811 -213 b 825 -223 811 -219 819 -223 l 844 -223 b 858 -213 851 -223 858 -219 l 858 213 b 844 223 858 217 851 223 z m 763 223 l 743 223 b 730 213 736 223 730 217 l 730 -213 b 743 -223 730 -219 736 -223 l 763 -223 b 776 -213 769 -223 776 -219 l 776 213 b 763 223 776 217 769 223 z m 312 124 b 399 144 336 141 369 144 b 575 -46 495 144 575 40 b 563 -98 575 -65 570 -81 z m 508 -141 b 467 -147 495 -145 481 -147 b 360 -104 428 -147 389 -128 b 330 -72 350 -95 340 -82 b 282 56 304 -37 282 10 b 285 89 282 68 284 79 b 536 -130 287 89 304 75 z',\n },\n noteheadSlashedWhole2: {\n x_min: -18,\n x_max: 436,\n y_min: -154,\n y_max: 151,\n ha: 305,\n o: 'm 531 -128 b 602 1 582 -96 602 -49 b 308 180 602 104 441 180 b 114 144 230 180 164 166 l 4 215 b -6 217 1 217 -3 217 b -22 209 -13 217 -19 215 b -26 197 -24 204 -26 200 b -16 181 -26 192 -22 184 l 75 121 b 0 1 27 91 0 49 b 294 -180 0 -94 82 -180 b 491 -150 379 -180 444 -168 l 598 -219 b 608 -222 600 -222 605 -222 b 624 -213 615 -222 621 -219 b 628 -202 626 -209 628 -206 b 618 -186 628 -196 624 -189 z m 168 108 b 271 147 190 141 233 147 b 446 -48 369 147 446 40 b 445 -72 446 -56 446 -63 z m 154 69 l 429 -109 b 382 -141 419 -125 402 -135 b 337 -147 367 -144 351 -147 b 301 -141 327 -147 314 -144 b 235 -104 276 -134 253 -120 b 203 -72 223 -94 213 -82 b 154 58 177 -39 154 12 z',\n },\n noteheadSlashedHalf2: {\n x_min: -73,\n x_max: 380,\n y_min: -134,\n y_max: 168,\n ha: 302,\n o: 'm 537 -156 l 383 -58 b 422 60 413 -9 422 39 b 281 180 422 134 364 180 b 101 127 203 180 144 157 l -75 239 b -85 242 -78 242 -82 242 b -102 233 -92 242 -98 239 b -105 222 -104 229 -105 225 b -95 206 -105 216 -102 209 l 69 99 b 0 -59 19 46 0 -20 b 138 -180 0 -135 60 -180 b 359 -88 248 -180 317 -138 l 516 -190 b 527 -193 520 -192 524 -193 b 543 -183 534 -193 540 -190 b 547 -173 546 -180 547 -176 b 537 -156 547 -166 543 -160 z m 367 92 b 377 63 374 82 377 73 b 318 -14 377 43 361 20 l 184 72 b 317 121 248 108 289 121 b 367 92 344 121 357 109 z m 248 -66 b 108 -124 181 -108 138 -124 b 50 -92 78 -124 60 -109 b 42 -63 46 -84 42 -73 b 145 49 42 -35 68 0 l 285 -40 b 248 -66 274 -49 261 -56 z',\n },\n noteheadSlashedBlack2: {\n x_min: -79,\n x_max: 376,\n y_min: -164,\n y_max: 168,\n ha: 332,\n o: 'm 531 -200 l 363 -78 b 425 59 402 -37 425 10 b 285 180 425 132 367 180 b 92 114 210 180 144 154 l -81 238 b -94 242 -85 240 -89 242 b -111 232 -99 242 -107 238 b -114 220 -112 229 -114 225 b -105 204 -114 215 -111 207 l 62 85 b 0 -62 23 43 0 -9 b 140 -180 0 -137 62 -180 b 331 -108 204 -180 275 -153 l 507 -233 b 520 -236 511 -236 517 -236 b 537 -228 527 -236 533 -233 b 541 -216 540 -225 541 -220 b 531 -200 541 -210 537 -203 z',\n },\n noteheadDiamondDoubleWhole: {\n x_min: 0,\n x_max: 432,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 592 223 b 580 215 585 223 580 219 l 580 -215 b 592 -223 580 -219 585 -223 l 608 -223 b 622 -215 615 -223 622 -219 l 622 215 b 608 223 622 219 615 223 z m 517 223 b 504 215 510 223 504 219 l 504 -215 b 517 -223 504 -219 510 -223 l 533 -223 b 544 -215 540 -223 544 -219 l 544 215 b 533 223 544 219 540 223 z m 246 179 b 240 180 243 179 242 180 b 232 176 236 180 233 179 l 118 22 b 117 17 117 20 117 19 l 117 215 b 104 223 117 219 111 223 l 88 223 b 75 215 81 223 75 219 l 75 -215 b 88 -223 75 -219 81 -223 l 104 -223 b 117 -215 111 -223 117 -219 l 117 14 l 118 14 b 122 7 118 12 120 10 l 374 -179 b 382 -180 376 -180 379 -180 b 390 -177 384 -180 387 -180 l 503 -23 l 503 -17 b 500 -9 503 -13 503 -10 z m 12 223 b 0 215 4 223 0 219 l 0 -215 b 12 -223 0 -219 4 -223 l 29 -223 b 40 -215 36 -223 40 -219 l 40 215 b 29 223 40 219 36 223 z m 183 39 b 179 46 181 39 179 43 b 229 112 226 112 228 112 b 236 109 229 112 233 111 l 436 -39 b 439 -46 438 -39 439 -42 b 390 -112 393 -111 392 -112 b 383 -109 389 -112 386 -111 z',\n },\n noteheadDiamondWhole: {\n x_min: 0,\n x_max: 270,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 386 -23 b 389 -16 387 -20 389 -19 b 383 -7 389 -13 386 -9 l 130 179 b 122 180 128 180 125 180 b 115 177 120 180 117 180 l 3 23 b 0 17 1 20 0 19 b 4 7 0 16 3 10 l 258 -179 b 264 -180 261 -179 262 -180 b 272 -176 268 -180 271 -179 z m 66 40 b 62 48 65 42 62 45 l 109 111 b 112 112 109 112 111 112 b 118 111 115 112 117 111 l 320 -37 b 324 -46 323 -39 324 -42 b 275 -111 278 -111 276 -111 b 268 -108 272 -111 271 -109 z',\n },\n noteheadDiamondHalf: {\n x_min: 0,\n x_max: 251,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 359 -7 b 361 0 360 -6 361 -3 b 359 7 361 3 360 4 l 189 177 b 180 180 186 179 183 180 b 174 177 179 180 176 179 l 4 7 b 0 0 1 4 0 3 b 4 -7 0 -3 1 -6 l 174 -177 b 180 -180 176 -180 179 -180 b 189 -177 183 -180 186 -180 z m 266 26 b 138 -71 266 -12 176 -71 b 96 -50 121 -71 108 -63 b 88 -24 89 -43 88 -32 b 215 73 88 13 177 73 b 266 26 238 73 266 50 z',\n },\n noteheadDiamondBlack: {\n x_min: 0,\n x_max: 250,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 357 -6 b 360 1 359 -4 360 -1 b 357 9 360 4 359 7 l 189 177 b 180 180 187 179 184 180 b 171 177 177 180 173 179 l 3 9 b 0 1 0 6 0 4 b 4 -7 0 -1 1 -4 l 173 -177 b 180 -180 176 -180 177 -180 b 187 -177 181 -180 184 -180 z',\n },\n noteheadParenthesis: {\n x_min: -73,\n x_max: 368,\n y_min: -180,\n y_max: 182,\n ha: 362,\n o: 'm 52 -249 b -30 -144 3 -212 -14 -190 b -52 4 -45 -102 -52 -56 b 52 252 -52 118 -36 179 l 46 262 b -105 3 -49 197 -105 124 b 45 -259 -105 -109 -48 -200 z m 382 -259 b 530 3 474 -202 530 -108 b 379 262 530 122 474 200 l 373 252 b 478 4 462 180 478 118 b 456 -144 478 -56 471 -102 b 373 -249 439 -190 422 -212 z',\n },\n noteheadParenthesisRight: {\n x_min: -36,\n x_max: 73,\n y_min: -181,\n y_max: 181,\n ha: 362,\n o: 'm -43 -261 b 105 1 49 -203 105 -109 b -46 261 105 121 49 199 l -52 251 b 53 3 37 179 53 117 b 32 -145 53 -58 46 -104 b -52 -251 14 -192 -3 -213 z',\n },\n noteheadParenthesisLeft: {\n x_min: 0,\n x_max: 109,\n y_min: -181,\n y_max: 181,\n ha: 362,\n o: 'm 157 -251 b 75 -145 108 -213 91 -192 b 53 3 60 -104 53 -58 b 157 251 53 117 69 177 l 151 261 b 0 1 56 196 0 122 b 150 -261 0 -111 58 -202 z',\n },\n noteheadMoonBlack: {\n x_min: 0,\n x_max: 315,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 228 -180 b 454 0 343 -180 454 -130 l 454 180 l 0 180 l 0 0 b 228 -180 0 -131 112 -180 z',\n },\n noteheadTriangleLeftBlack: {\n x_min: 0,\n x_max: 339,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 488 -180 l 0 180 l 0 -180 z',\n },\n noteheadTriangleRightBlack: {\n x_min: 0,\n x_max: 339,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 488 180 l 0 -180 l 488 -180 z',\n },\n noteheadTriangleRoundDownBlack: {\n x_min: 0,\n x_max: 278,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 200 -180 l 400 112 l 383 124 b 199 180 327 161 264 180 b 16 124 135 180 73 161 l 0 112 z',\n },\n augmentationDot: {\n x_min: 0,\n x_max: 100,\n y_min: -50,\n y_max: 50,\n ha: 100,\n o: 'm 144 0 b 72 72 144 40 112 72 b 0 0 32 72 0 40 b 72 -72 0 -40 32 -72 b 144 0 112 -72 144 -40 z',\n },\n tremolo1: {\n x_min: -150,\n x_max: 150,\n y_min: -93,\n y_max: 94,\n ha: 187,\n o: 'm 216 -45 l 216 135 l -216 46 l -216 -134 z',\n },\n flag8thUp: {\n x_min: 0,\n x_max: 264,\n y_min: -810.1921176545985,\n y_max: 9,\n ha: 819.1921176545985,\n o: 'm 343 -1138 b 380 -888 343 -1138 380 -1001 b 215 -395 380 -708 305 -539 b 58 -19 141 -281 81 -157 b 27 13 53 4 42 13 b 0 -9 12 13 0 9 l 0 -353 b 284 -688 95 -370 232 -566 b 318 -904 305 -737 318 -819 b 284 -1102 318 -969 308 -1037 b 279 -1123 281 -1110 279 -1117 b 302 -1165 279 -1146 294 -1159 b 343 -1138 311 -1171 336 -1162 z',\n },\n flag8thDown: {\n x_min: 0,\n x_max: 306,\n y_min: -14,\n y_max: 808,\n ha: 822,\n o: 'm 346 1094 b 376 897 366 1034 376 962 b 318 642 376 812 340 691 b 0 340 265 521 193 405 l 0 1 b 23 -20 0 -13 12 -20 b 58 12 36 -20 55 -12 b 262 387 82 148 189 274 b 441 881 353 530 441 701 b 400 1142 441 994 412 1096 b 377 1164 396 1158 387 1164 b 346 1094 356 1164 331 1136 z',\n },\n flag16thUp: {\n x_min: 0,\n x_max: 279,\n y_min: -813,\n y_max: 2,\n ha: 815,\n o: 'm 392 -1146 b 402 -988 397 -1139 402 -1057 l 402 -956 b 360 -783 402 -896 386 -837 b 359 -770 360 -779 359 -776 b 360 -760 359 -768 359 -765 b 396 -577 364 -752 396 -665 b 392 -526 396 -559 395 -543 b 236 -275 377 -428 340 -387 b 53 -16 158 -192 78 -168 b 24 3 50 0 33 3 b 0 -12 16 3 0 -1 l 0 -570 l 7 -570 b 298 -778 96 -573 199 -576 b 344 -992 331 -847 344 -917 b 333 -1120 344 -1034 340 -1077 b 331 -1133 331 -1126 331 -1129 b 363 -1171 331 -1152 343 -1171 b 392 -1146 373 -1171 383 -1165 z m 301 -661 b 223 -562 278 -625 253 -596 b 59 -331 156 -484 89 -449 b 58 -327 58 -330 58 -328 b 78 -312 58 -321 66 -312 l 89 -312 b 302 -464 177 -312 255 -393 b 341 -592 328 -501 341 -546 b 340 -621 341 -602 341 -611 b 330 -658 337 -632 337 -647 b 311 -667 328 -662 318 -667 b 301 -661 307 -667 304 -665 z',\n },\n flag16thDown: {\n x_min: 0,\n x_max: 290.8951581511223,\n y_min: -9,\n y_max: 812.0064,\n ha: 821.0064,\n o: 'm 346 1132 b 312 768 367 1011 367 880 b 7 559 213 566 96 562 l 0 559 l 0 1 b 24 -13 0 -6 10 -13 b 53 6 35 -13 50 -10 b 406 516 88 228 372 289 b 410 567 409 531 410 549 b 374 750 410 655 379 742 b 373 760 373 753 373 756 b 374 773 373 766 374 769 b 405 1138 426 881 428 1022 b 370 1169 397 1171 387 1169 b 346 1132 353 1168 341 1156 z m 325 657 b 344 647 333 657 343 652 b 354 611 351 636 351 622 b 356 582 356 600 356 590 b 317 454 356 534 343 491 b 89 302 269 383 177 302 l 78 302 b 58 317 66 302 58 310 b 59 321 58 318 58 320 b 238 552 89 439 170 472 b 315 651 268 585 292 613 b 325 657 318 655 321 657 z',\n },\n flag32ndUp: {\n x_min: 0,\n x_max: 261,\n y_min: -812,\n y_max: 149,\n ha: 961,\n o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 366 -289 369 -315 369 -302 b 220 -58 350 -202 317 -163 b 46 187 148 20 71 43 b 20 215 45 200 35 215 b 0 197 12 215 0 207 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 56 -390 147 -527 88 -495 b 73 -367 53 -380 60 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z',\n },\n flag32ndDown: {\n x_min: 0,\n x_max: 273,\n y_min: -172,\n y_max: 812,\n ha: 984,\n o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -229 b 20 -248 0 -242 9 -248 b 48 -219 35 -248 46 -232 b 229 36 72 -69 154 -46 b 380 278 330 145 364 186 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z',\n },\n flag64thUp: {\n x_min: 0,\n x_max: 261,\n y_min: -812,\n y_max: 347,\n ha: 1159,\n o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 220 228 350 84 317 122 b 46 472 148 305 71 328 b 20 500 45 485 32 500 b 0 482 10 500 0 492 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 24 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 58 187 148 20 82 43 b 56 193 58 189 58 192 b 300 24 138 193 220 157 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 b 73 -367 52 -376 63 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z',\n },\n flag64thDown: {\n x_min: 0,\n x_max: 273,\n y_min: -376,\n y_max: 812,\n ha: 1188,\n o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -523 b 20 -541 0 -534 9 -541 b 48 -513 35 -541 46 -526 b 229 -258 72 -363 154 -340 b 380 -16 330 -148 364 -108 b 384 27 383 -1 384 13 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z m 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 b 229 36 75 -86 145 -55 b 311 128 264 73 289 102 z',\n },\n flag128thUp: {\n x_min: 0,\n x_max: 261,\n y_min: -812,\n y_max: 533,\n ha: 1345,\n o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 341 75 360 26 353 50 b 369 222 354 111 369 167 b 366 264 369 236 369 251 b 220 495 350 351 317 390 b 46 740 148 573 71 596 b 22 768 45 753 35 768 b 0 750 10 768 0 760 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 292 b 321 223 315 264 321 242 b 317 193 321 212 318 203 b 301 135 314 180 308 158 b 220 228 281 161 255 190 b 55 461 151 304 79 327 b 300 292 134 461 220 426 z m 300 24 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 56 187 148 20 81 43 b 55 193 56 189 56 192 b 300 24 137 193 220 157 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 b 73 -367 53 -376 62 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z',\n },\n flag128thDown: {\n x_min: 0,\n x_max: 273,\n y_min: -580,\n y_max: 812,\n ha: 1392,\n o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -816 b 20 -835 0 -828 7 -835 b 48 -806 33 -835 46 -819 b 229 -552 72 -657 154 -634 b 380 -310 330 -442 364 -402 b 384 -266 383 -295 384 -281 b 351 -105 384 -206 366 -143 b 384 27 372 -66 384 -16 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z m 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 b 229 36 75 -86 145 -55 b 311 128 264 73 289 102 z m 330 -238 b 334 -268 331 -248 334 -256 b 311 -340 334 -287 328 -310 b 56 -516 229 -478 137 -516 b 229 -258 75 -380 145 -348 b 311 -166 264 -220 289 -192 z',\n },\n accidentalFlat: {\n x_min: 0,\n x_max: 226,\n y_min: -175,\n y_max: 439,\n ha: 614,\n o: 'm 17 -245 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 82 -225 117 -186 b 325 82 281 -72 325 16 b 196 220 325 164 262 216 b 117 196 171 220 137 209 b 85 176 108 189 92 176 b 78 177 82 176 81 176 b 62 202 68 181 62 192 b 72 608 63 233 72 579 b 45 632 72 624 59 632 b 0 592 24 632 1 618 b 17 -245 0 592 6 -230 z m 68 -117 b 63 27 68 -117 63 -30 b 66 73 63 50 65 68 b 167 144 76 102 134 144 b 226 60 209 144 226 96 b 98 -134 226 -17 160 -95 b 84 -138 92 -137 88 -138 b 68 -117 71 -138 68 -124 z',\n },\n accidentalNatural: {\n x_min: 0,\n x_max: 168,\n y_min: -335,\n y_max: 341,\n ha: 676,\n o: 'm 203 261 b 197 259 200 261 199 259 b 68 226 197 259 105 226 b 53 233 59 226 53 228 l 53 474 b 36 491 53 484 45 491 l 17 491 b 0 474 7 491 0 484 l 0 -268 b 13 -281 0 -276 4 -281 l 16 -279 b 22 -278 17 -279 20 -279 b 164 -235 42 -269 122 -235 b 189 -251 179 -235 189 -239 l 189 -465 b 206 -482 189 -475 196 -482 l 225 -482 b 242 -465 233 -482 242 -475 l 242 258 b 230 269 242 265 236 269 b 225 268 229 269 226 269 z m 53 56 b 176 114 53 76 141 114 b 189 107 184 114 189 112 l 189 -42 b 71 -101 189 -68 107 -101 b 53 -92 60 -101 53 -98 z',\n },\n accidentalSharp: {\n x_min: 0,\n x_max: 249,\n y_min: -348,\n y_max: 350,\n ha: 698,\n o: 'm 341 170 b 359 194 351 174 359 186 l 359 297 b 348 308 359 304 354 308 b 341 307 346 308 344 308 b 305 294 341 307 312 295 b 285 312 295 294 285 301 l 285 488 b 265 504 285 497 276 504 b 242 488 251 504 242 497 l 242 301 b 223 259 240 287 236 268 b 132 223 206 249 157 229 b 115 252 120 223 115 240 l 115 425 b 95 441 115 433 105 441 b 72 425 81 441 72 433 l 72 230 b 55 192 72 210 63 196 b 17 176 46 187 17 176 b 0 153 7 173 0 161 l 0 50 b 13 37 0 42 4 37 l 16 39 b 50 53 17 39 39 48 l 52 55 b 72 29 63 55 72 40 l 72 -114 b 56 -147 72 -130 65 -143 b 17 -163 48 -150 17 -163 b 0 -186 7 -166 0 -177 l 0 -288 b 13 -301 0 -297 4 -301 l 16 -300 b 50 -287 17 -300 37 -291 b 55 -285 52 -285 53 -285 b 72 -308 65 -285 72 -301 l 72 -485 b 91 -501 72 -494 81 -501 b 115 -485 105 -501 115 -494 l 115 -285 b 130 -253 115 -266 122 -256 l 217 -217 b 219 -217 217 -217 219 -217 l 222 -216 b 242 -242 235 -216 242 -233 l 242 -422 b 261 -438 242 -431 251 -438 b 285 -422 276 -438 285 -431 l 285 -217 b 301 -184 285 -206 291 -189 b 341 -168 311 -180 341 -168 b 359 -144 351 -164 359 -153 l 359 -42 b 348 -30 359 -35 354 -30 b 341 -32 346 -30 344 -30 l 304 -46 b 285 -20 295 -46 285 -37 l 285 114 b 304 156 285 124 292 151 z m 242 -65 b 132 -122 233 -94 166 -122 b 115 -115 124 -122 117 -120 b 111 -43 112 -109 111 -78 b 115 63 111 1 112 52 b 220 118 118 88 184 118 b 242 109 230 118 239 115 b 248 27 245 102 248 66 b 242 -65 248 -12 245 -52 z',\n },\n accidentalDoubleSharp: {\n x_min: 0,\n x_max: 247,\n y_min: -125,\n y_max: 127,\n ha: 252,\n o: 'm 274 -46 b 206 1 258 -37 206 -9 b 274 50 206 22 253 43 b 278 50 275 50 276 50 l 287 49 b 346 63 304 49 331 52 b 356 115 353 71 356 92 b 292 183 356 174 351 183 b 233 173 266 183 240 180 b 226 117 228 168 226 143 b 179 49 219 101 196 49 b 130 117 158 49 135 96 b 118 173 130 141 125 167 b 66 183 112 180 89 183 b 7 173 42 183 16 180 b 0 120 3 170 0 145 b 7 63 0 94 3 68 b 68 49 17 55 43 49 b 82 50 73 49 78 50 b 150 3 98 42 150 13 b 84 -46 150 -16 104 -39 l 69 -46 b 7 -56 43 -46 16 -49 b 0 -111 3 -60 0 -85 b 7 -166 0 -137 3 -163 b 65 -180 17 -174 40 -180 b 118 -166 86 -180 109 -176 b 130 -111 127 -158 130 -134 b 132 -105 130 -109 131 -107 b 177 -45 141 -85 158 -45 b 226 -111 196 -45 220 -91 b 233 -166 226 -137 228 -161 b 291 -180 243 -174 266 -180 b 356 -114 346 -180 356 -166 b 346 -56 356 -89 351 -63 b 288 -46 338 -49 312 -46 z',\n },\n accidentalDoubleFlat: {\n x_min: 0,\n x_max: 411,\n y_min: -175,\n y_max: 437,\n ha: 612,\n o: 'm 452 217 b 384 194 426 217 408 207 b 350 176 374 189 363 176 b 343 177 347 176 344 176 b 328 202 333 180 328 190 b 337 606 328 232 337 579 b 310 629 337 622 324 629 b 265 592 291 629 268 616 b 269 194 265 592 266 395 b 196 217 248 209 223 217 l 187 217 b 120 194 160 217 143 207 b 85 176 108 189 98 176 b 78 177 82 176 81 176 b 62 202 68 180 62 190 b 72 606 62 232 72 579 b 45 629 72 622 59 629 b 0 592 24 629 1 616 b 17 -245 0 592 7 -232 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 84 -226 120 -186 b 274 -50 206 -124 246 -85 b 284 -245 276 -158 279 -240 b 295 -252 288 -251 292 -252 b 304 -249 300 -252 304 -249 b 416 -163 348 -226 383 -186 b 592 82 546 -72 592 16 b 461 217 592 163 528 216 z m 96 -134 b 84 -138 92 -137 86 -138 b 68 -115 72 -138 68 -124 b 63 26 68 -115 63 -30 b 66 72 63 49 65 66 b 168 144 75 101 134 144 b 226 59 212 144 226 95 b 96 -134 226 -22 161 -94 z m 361 -134 b 348 -138 356 -137 351 -138 b 333 -115 337 -138 333 -124 b 328 39 333 -115 328 -16 b 330 72 328 55 328 68 b 433 144 338 101 399 144 b 468 130 448 144 459 140 b 490 59 481 112 490 88 b 361 -134 490 -22 426 -94 z',\n },\n accidentalParensLeft: {\n x_min: 0,\n x_max: 141,\n y_min: -248,\n y_max: 247,\n ha: 495,\n o: 'm 203 331 l 203 351 b 202 356 203 354 203 356 b 0 0 60 281 0 140 b 199 -357 0 -144 60 -269 b 203 -354 200 -357 203 -356 l 203 -333 b 200 -327 203 -330 202 -328 b 86 0 118 -253 86 -160 b 200 324 86 158 120 251 b 203 331 202 325 203 327 z',\n },\n accidentalParensRight: {\n x_min: 0,\n x_max: 141,\n y_min: -248,\n y_max: 247,\n ha: 495,\n o: 'm 0 331 b 3 324 0 327 1 325 b 117 0 84 251 117 158 b 3 -327 117 -160 85 -253 b 0 -333 1 -328 0 -330 l 0 -354 b 4 -357 0 -356 3 -357 b 203 0 143 -269 203 -144 b 1 356 203 140 143 281 b 0 351 0 356 0 354 z',\n },\n accidentalQuarterToneFlatStein: {\n x_min: 1,\n x_max: 227,\n y_min: -175,\n y_max: 439,\n ha: 614,\n o: 'm 310 -245 b 327 592 321 -230 327 592 b 282 632 325 618 302 632 b 255 608 268 632 255 624 b 265 202 255 579 264 233 b 249 177 265 192 259 181 b 242 176 246 176 245 176 b 210 196 235 176 219 189 b 131 220 190 209 156 220 b 1 85 65 216 1 164 b 174 -161 1 16 46 -72 b 288 -249 210 -186 245 -225 b 297 -252 288 -249 292 -252 b 310 -245 301 -252 305 -251 z m 259 -117 b 243 -138 259 -124 256 -138 b 229 -134 239 -138 235 -137 b 101 60 167 -95 101 -17 b 160 144 101 96 118 144 b 261 73 193 144 251 102 b 264 27 262 68 264 50 b 259 -117 264 -30 259 -117 z',\n },\n accidentalThreeQuarterTonesFlatZimmermann: {\n x_min: 1,\n x_max: 466,\n y_min: -175,\n y_max: 439,\n ha: 614,\n o: 'm 363 -245 b 376 -252 367 -251 372 -252 b 384 -249 380 -252 384 -249 b 497 -161 428 -226 464 -186 b 671 84 625 -72 671 16 b 541 220 671 164 606 217 b 513 217 531 220 523 219 b 464 196 495 212 480 206 b 431 176 452 189 442 176 b 423 177 428 176 426 176 b 408 202 413 180 408 190 l 419 608 b 392 632 419 625 406 632 b 346 592 372 632 347 618 b 363 -245 346 592 351 -230 z m 289 -249 b 297 -252 289 -249 292 -252 b 310 -245 300 -252 305 -251 b 328 592 321 -230 328 592 b 282 631 327 618 302 631 b 255 608 268 631 255 624 l 266 202 b 251 177 266 190 261 180 b 243 176 248 176 246 176 b 210 196 232 176 222 189 b 164 216 196 204 180 210 l 163 217 b 132 220 151 219 143 220 b 1 84 65 217 1 163 b 177 -163 1 16 48 -72 b 289 -249 210 -186 245 -226 z m 262 72 b 265 26 264 66 265 49 b 261 -115 265 -30 261 -115 b 245 -138 261 -124 258 -138 b 230 -134 240 -138 236 -137 b 102 60 166 -92 102 -20 b 124 128 102 88 111 112 b 161 144 134 138 147 144 b 199 134 173 144 184 141 b 262 72 219 122 256 92 z m 413 -115 b 409 26 413 -115 409 -30 b 412 72 409 49 410 66 b 514 144 420 102 480 144 b 570 60 557 144 570 96 b 442 -134 570 -23 508 -91 b 429 -138 436 -137 433 -138 b 413 -115 418 -138 413 -124 z',\n },\n accidentalQuarterToneSharpStein: {\n x_min: 0,\n x_max: 179,\n y_min: -353,\n y_max: 307,\n ha: 660,\n o: 'm 258 240 b 246 252 258 248 252 252 b 240 251 245 252 242 252 b 168 225 240 251 171 225 b 150 253 156 225 150 240 l 150 426 b 130 442 150 435 141 442 b 105 418 108 442 105 429 l 105 230 b 91 193 105 219 101 202 b 17 161 65 183 42 171 b 0 138 9 158 0 147 l 0 36 b 13 23 0 27 4 23 l 16 24 b 86 53 17 24 73 49 l 88 55 b 107 30 98 55 107 42 l 107 -114 b 92 -145 107 -130 101 -143 l 17 -177 b 0 -200 9 -180 0 -192 l 0 -302 b 13 -315 0 -311 4 -315 l 16 -314 b 85 -285 17 -314 72 -291 b 105 -312 92 -282 105 -301 l 105 -492 b 125 -508 105 -501 114 -508 b 150 -484 147 -508 150 -498 l 150 -285 b 151 -274 150 -281 150 -278 b 164 -253 153 -265 158 -256 b 240 -225 176 -251 240 -225 b 258 -202 249 -222 258 -210 l 258 -99 b 245 -86 258 -91 253 -86 l 242 -88 b 240 -88 242 -88 240 -88 l 240 -86 b 168 -115 240 -86 174 -114 b 148 -91 158 -115 148 -107 l 148 43 b 167 85 148 55 156 81 b 240 114 180 91 240 114 b 258 138 249 118 258 128 z',\n },\n accidentalThreeQuarterTonesSharpStein: {\n x_min: 3,\n x_max: 317,\n y_min: -347,\n y_max: 369,\n ha: 716,\n o: 'm 456 324 b 448 336 456 330 454 336 b 393 317 445 336 400 320 b 389 315 392 315 390 315 b 383 325 386 315 383 318 l 383 508 b 360 531 383 528 379 531 b 337 508 341 531 337 527 l 337 318 b 325 291 337 300 334 294 b 268 268 320 288 287 276 b 253 281 256 268 253 274 l 253 464 b 230 487 253 484 249 487 b 207 464 212 487 207 482 l 207 264 b 194 240 207 253 204 245 l 132 217 b 131 217 132 217 132 217 l 130 216 b 118 229 122 216 118 220 l 118 420 b 95 444 118 439 114 444 b 72 420 76 444 72 439 l 72 212 b 60 190 72 197 68 193 l 16 173 b 4 161 9 170 4 167 l 4 50 b 13 39 4 45 9 39 b 58 55 16 39 46 49 b 63 56 60 56 62 56 b 72 42 71 56 72 50 l 72 -125 b 58 -150 72 -137 65 -147 l 16 -166 b 4 -177 9 -168 4 -171 l 4 -289 b 14 -301 4 -295 9 -301 b 53 -287 16 -301 40 -291 b 62 -285 56 -285 59 -285 b 72 -298 69 -285 72 -289 l 72 -477 b 95 -500 72 -495 76 -500 b 118 -477 114 -500 118 -495 l 118 -278 b 127 -259 118 -269 121 -261 l 196 -232 b 207 -243 204 -232 207 -235 l 207 -432 b 230 -455 207 -452 212 -455 b 253 -432 249 -455 253 -451 l 253 -228 b 268 -204 253 -216 259 -207 l 320 -186 b 328 -183 323 -184 325 -183 b 337 -194 334 -183 337 -187 l 337 -387 b 360 -410 337 -408 341 -410 b 383 -387 379 -410 383 -406 l 383 -174 b 395 -157 383 -166 390 -158 l 445 -138 b 456 -127 452 -135 456 -132 l 456 -14 b 448 -3 456 -10 454 -3 b 397 -22 445 -3 408 -17 l 396 -23 b 383 -6 387 -23 383 -16 l 383 163 b 392 181 383 173 384 179 b 445 202 397 183 445 202 b 456 213 452 203 456 207 z m 337 -45 b 266 -78 333 -56 287 -78 b 258 -75 262 -78 259 -76 b 253 19 255 -71 253 -27 b 258 130 253 69 255 122 b 333 163 264 141 315 163 b 337 161 334 163 337 161 b 341 78 340 157 341 120 b 337 -45 341 24 340 -37 z m 118 -127 b 114 -48 114 -121 114 -86 b 118 78 114 6 115 68 b 200 114 122 91 180 114 b 207 111 204 114 206 112 b 212 22 210 107 212 66 b 207 -94 212 -29 210 -85 b 127 -130 203 -108 148 -130 b 118 -127 122 -130 120 -128 z',\n },\n accidentalBuyukMucennebFlat: {\n x_min: 1,\n x_max: 287,\n y_min: -174,\n y_max: 438,\n ha: 612,\n o: 'm 379 452 b 370 464 379 458 377 464 b 164 389 366 464 170 392 b 156 396 163 389 156 393 b 157 436 157 409 157 428 b 167 452 157 445 161 449 b 366 526 173 455 366 526 b 379 540 374 528 379 534 l 379 611 b 370 622 379 616 377 622 b 170 550 366 622 174 552 b 160 557 163 550 160 554 b 161 608 160 585 161 602 b 134 631 161 624 148 631 b 89 590 114 631 91 616 l 89 528 b 81 517 89 526 88 518 b 16 491 76 514 16 491 b 1 480 6 490 1 485 l 1 406 b 13 395 1 400 4 395 l 14 396 b 79 419 16 396 72 415 b 89 412 86 419 89 415 b 91 376 89 399 89 386 b 82 359 91 364 89 361 b 16 331 76 356 16 331 b 1 321 6 331 1 328 l 1 248 b 13 236 1 242 4 236 b 79 262 16 236 71 258 b 92 251 89 262 92 256 b 107 -242 95 23 101 -236 b 120 -251 111 -249 115 -251 b 128 -248 124 -251 128 -248 b 240 -160 171 -225 207 -184 b 413 84 367 -71 413 16 b 284 220 413 166 350 216 b 207 196 259 220 229 209 b 170 176 196 190 184 176 l 168 177 b 151 203 157 181 151 192 b 153 269 151 210 151 236 b 163 292 153 275 153 289 b 366 367 173 297 366 367 b 379 383 374 370 379 376 z m 186 -132 b 173 -137 180 -135 176 -137 b 157 -114 161 -137 157 -122 b 153 35 157 -114 153 -22 b 154 73 153 53 153 68 b 219 135 160 92 197 124 b 255 144 232 141 243 144 b 292 130 269 144 282 140 b 314 62 305 114 314 91 b 186 -132 314 -17 251 -94 z',\n },\n accidentalBakiyeFlat: {\n x_min: -1,\n x_max: 286,\n y_min: -175,\n y_max: 439,\n ha: 614,\n o: 'm 377 454 b 369 467 377 458 376 467 b 363 465 367 467 364 467 b 161 390 363 465 167 393 b 153 399 154 390 153 395 b 157 608 154 494 157 593 b 130 632 157 624 144 632 b 86 592 111 632 88 618 b 88 377 86 592 86 501 b 76 356 88 373 88 360 l 12 331 b -1 320 3 330 -1 327 l -1 248 b 9 236 -1 242 1 236 b 81 264 12 236 78 261 b 89 258 86 264 89 261 b 104 -245 92 30 96 -236 b 115 -252 108 -251 112 -252 b 124 -249 120 -252 124 -249 b 239 -161 167 -226 203 -186 b 412 84 367 -72 412 17 b 282 220 412 166 348 216 b 255 216 274 220 264 219 b 203 196 238 212 222 206 b 171 177 193 189 177 177 b 163 179 168 177 166 177 b 147 202 153 181 147 192 b 147 216 147 204 147 209 l 150 262 b 150 276 150 269 150 275 b 158 291 150 287 154 289 b 363 370 163 292 363 370 b 377 384 373 373 377 379 z m 181 -134 b 167 -138 176 -137 171 -138 b 153 -117 156 -138 153 -125 b 148 27 153 -117 148 -30 b 151 73 148 50 150 68 b 255 144 161 105 219 144 b 312 62 298 144 312 99 b 181 -134 312 -19 249 -96 z',\n },\n accidentalKomaSharp: {\n x_min: 0,\n x_max: 229,\n y_min: -337,\n y_max: 322,\n ha: 659,\n o: 'm 312 151 b 330 176 323 156 330 166 l 330 278 b 320 289 330 285 327 289 b 312 288 318 289 315 289 b 200 246 312 288 203 248 b 181 275 187 246 181 264 l 181 448 b 163 464 181 456 173 464 b 138 441 140 464 138 452 l 138 253 b 122 215 137 240 132 225 b 17 177 92 203 45 177 b 0 153 7 173 0 163 l 0 50 b 10 39 0 43 4 39 b 17 40 13 39 14 39 l 128 81 b 138 52 138 81 138 63 l 138 -91 b 124 -124 138 -107 132 -120 b 17 -167 115 -127 17 -167 b 0 -192 7 -171 0 -181 l 0 -294 b 10 -305 0 -301 4 -305 b 17 -304 13 -305 14 -305 b 128 -261 17 -304 117 -264 l 130 -259 b 138 -276 137 -259 138 -268 l 138 -469 b 157 -485 138 -478 147 -485 b 181 -462 179 -485 181 -475 l 181 -262 b 183 -252 181 -258 181 -255 b 197 -232 186 -243 190 -235 b 312 -187 207 -228 312 -187 b 330 -163 323 -183 330 -173 l 330 -60 b 320 -49 330 -53 327 -49 b 312 -50 318 -49 315 -49 l 200 -94 b 193 -95 197 -95 194 -95 b 181 -68 183 -95 181 -85 l 181 66 b 200 108 181 92 189 104 z',\n },\n accidentalKucukMucennebSharp: {\n x_min: -1,\n x_max: 339,\n y_min: -338,\n y_max: 321,\n ha: 659,\n o: 'm 264 92 b 271 102 264 98 265 99 l 395 150 b 412 174 405 154 412 164 l 412 276 b 402 288 412 284 409 288 b 395 287 400 288 397 288 b 282 245 395 287 285 246 b 264 274 269 245 264 262 l 264 446 b 245 462 264 455 255 462 b 220 439 222 462 220 451 l 220 252 b 204 213 219 239 215 223 b 99 176 174 202 127 176 b 82 151 89 171 82 161 l 82 49 b 92 37 82 42 86 37 b 99 39 95 37 96 37 l 210 79 b 216 81 212 81 215 81 b 220 78 219 81 220 79 l 220 56 b 216 46 220 52 220 48 b 16 -29 210 45 16 -29 b -1 -45 4 -32 -1 -36 l -1 -138 b 12 -154 -1 -145 3 -154 l 215 -79 b 220 -84 219 -79 220 -81 l 220 -105 b 210 -122 220 -115 219 -120 b 99 -168 202 -127 99 -168 b 82 -193 89 -173 82 -183 l 82 -295 b 92 -307 82 -302 86 -307 b 99 -305 95 -307 96 -307 b 210 -262 99 -305 199 -265 l 212 -261 b 220 -278 219 -261 220 -269 l 220 -471 b 239 -487 220 -480 229 -487 b 264 -464 261 -487 264 -477 l 264 -264 b 265 -253 264 -259 264 -256 b 279 -233 268 -245 272 -236 b 395 -189 289 -229 395 -189 b 412 -164 405 -184 412 -174 l 412 -62 b 402 -50 412 -55 409 -50 b 395 -52 400 -50 397 -50 l 278 -96 b 264 -86 268 -96 264 -94 l 264 -68 b 269 -59 264 -62 265 -60 b 471 17 274 -58 471 17 b 488 36 484 22 488 27 l 488 127 b 475 144 488 134 487 144 l 472 141 b 471 141 472 141 471 141 l 471 143 b 272 68 471 143 282 71 l 269 66 b 264 71 264 66 264 69 z',\n },\n accidentalKoron: {\n x_min: 0,\n x_max: 300,\n y_min: -472,\n y_max: 157,\n ha: 629,\n o: 'm 432 -4 b 415 10 432 1 418 9 l 4 226 b 0 223 1 226 0 225 l 0 -672 b 7 -680 0 -677 3 -680 l 45 -680 b 52 -672 49 -680 52 -677 l 52 -193 l 415 -22 b 432 -4 418 -20 432 -13 z m 52 -137 l 52 144 l 327 -7 z',\n },\n accidentalSori: {\n x_min: 0,\n x_max: 421,\n y_min: -318,\n y_max: 328,\n ha: 646,\n o: 'm 606 10 b 589 23 606 16 592 22 l 382 109 l 382 465 b 374 472 382 469 379 472 l 337 472 b 330 465 333 472 330 469 l 330 132 l 183 194 l 183 425 b 176 432 183 429 180 432 l 138 432 b 131 425 134 432 131 429 l 131 216 l 3 269 b 0 265 0 269 0 266 l 0 223 b 3 213 0 216 0 215 l 131 160 l 131 -150 l 3 -203 b 0 -212 0 -204 0 -206 l 0 -255 b 3 -259 0 -258 1 -259 l 131 -204 l 131 -451 b 138 -458 131 -455 134 -458 l 176 -458 b 183 -451 180 -458 183 -455 l 183 -183 l 330 -120 l 330 -410 b 337 -418 330 -415 333 -418 l 374 -418 b 382 -410 379 -418 382 -415 l 382 -98 l 589 -9 b 606 10 592 -9 606 0 z m 183 -128 l 183 138 l 330 76 l 330 -66 z m 382 -45 l 382 55 l 501 6 z',\n },\n articAccentAbove: {\n x_min: 0,\n x_max: 339,\n y_min: 1,\n y_max: 245,\n ha: 244,\n o: 'm 469 151 b 488 177 488 156 488 166 b 469 203 488 189 488 197 l 37 350 b 24 353 32 351 26 353 b 3 333 12 353 7 344 b 0 318 1 327 0 323 b 20 298 0 311 4 304 b 346 187 20 298 331 193 b 356 177 353 186 356 181 b 344 167 356 173 353 170 b 20 58 328 163 20 58 b 0 36 4 50 0 43 b 3 23 0 32 1 27 b 23 1 7 13 13 1 b 29 3 24 1 27 1 z',\n },\n articAccentBelow: {\n x_min: 0,\n x_max: 339,\n y_min: -244,\n y_max: 0,\n ha: 244,\n o: 'm 469 -202 b 488 -176 488 -197 488 -187 b 469 -150 488 -164 488 -156 l 37 -3 b 24 0 32 -1 26 0 b 3 -20 12 0 7 -9 b 0 -35 1 -26 0 -30 b 20 -55 0 -42 4 -49 b 346 -166 20 -55 331 -160 b 356 -176 353 -167 356 -171 b 344 -186 356 -180 353 -183 b 20 -295 328 -190 20 -295 b 0 -317 4 -302 0 -310 b 3 -330 0 -321 1 -325 b 23 -351 7 -340 13 -351 b 29 -350 24 -351 27 -351 z',\n },\n articTenutoAbove: {\n x_min: -1,\n x_max: 338,\n y_min: 0,\n y_max: 48,\n ha: 48,\n o: 'm 452 0 b 487 35 485 0 487 16 b 452 69 487 53 487 69 l 33 69 b -1 35 -1 69 -1 53 b 33 0 -1 16 -1 0 z',\n },\n articTenutoBelow: {\n x_min: -1,\n x_max: 338,\n y_min: -48,\n y_max: 0,\n ha: 48,\n o: 'm 452 -69 b 487 -35 485 -69 487 -53 b 452 0 487 -16 487 0 l 33 0 b -1 -35 -1 0 -1 -16 b 33 -69 -1 -53 -1 -69 z',\n },\n articStaccatoAbove: {\n x_min: 0,\n x_max: 84,\n y_min: 0,\n y_max: 84,\n ha: 84,\n o: 'm 121 60 b 60 121 121 94 94 121 b 0 60 27 121 0 94 b 60 0 0 27 27 0 b 121 60 94 0 121 27 z',\n },\n articStaccatoBelow: {\n x_min: 0,\n x_max: 84,\n y_min: -84,\n y_max: 0,\n ha: 84,\n o: 'm 121 -60 b 60 0 121 -27 94 0 b 0 -60 27 0 0 -27 b 60 -121 0 -94 27 -121 b 121 -60 94 -121 121 -94 z',\n },\n articStaccatissimoAbove: {\n x_min: 1,\n x_max: 100,\n y_min: -2,\n y_max: 293,\n ha: 295,\n o: 'm 72 422 b 1 390 35 422 3 409 b 72 -3 1 369 39 -3 b 144 389 108 -3 144 356 b 72 422 144 410 111 422 z',\n },\n articStaccatissimoBelow: {\n x_min: 1,\n x_max: 100,\n y_min: -295,\n y_max: 0,\n ha: 295,\n o: 'm 72 -425 b 144 -392 111 -425 144 -413 b 72 0 144 -359 108 0 b 1 -393 39 0 1 -372 b 72 -425 3 -412 35 -425 z',\n },\n articMarcatoAbove: {\n x_min: -1,\n x_max: 235,\n y_min: -1,\n y_max: 253,\n ha: 254,\n o: 'm 181 356 b 167 364 177 361 173 364 b 153 356 157 364 153 356 l 0 23 b -1 16 -1 20 -1 19 b 9 0 -1 9 1 1 b 16 -1 10 -1 14 -1 b 32 9 22 -1 29 1 b 112 186 32 9 109 180 b 118 190 114 189 115 190 b 127 186 121 190 124 189 b 209 9 128 180 209 9 b 225 0 213 3 219 0 l 323 0 b 338 16 333 1 338 7 b 337 23 338 19 338 22 z',\n },\n articMarcatoBelow: {\n x_min: -1,\n x_max: 235,\n y_min: -254,\n y_max: 0,\n ha: 254,\n o: 'm 156 -357 b 170 -366 160 -363 164 -366 b 184 -357 180 -366 184 -357 l 337 -24 b 338 -17 338 -22 338 -20 b 328 -1 338 -10 336 -3 b 321 0 327 0 323 0 b 305 -10 315 0 308 -3 b 225 -187 305 -10 228 -181 b 219 -192 223 -190 222 -192 b 210 -187 216 -192 213 -190 b 128 -10 209 -181 128 -10 b 112 -1 124 -4 118 -1 l 14 -1 b -1 -17 4 -3 -1 -9 b 0 -24 -1 -20 -1 -23 z',\n },\n fermataAbove: {\n x_min: 3,\n x_max: 605,\n y_min: -3,\n y_max: 329,\n ha: 332,\n o: 'm 435 318 b 818 36 742 318 804 91 b 821 26 819 32 819 27 b 851 -4 831 6 837 -4 b 871 16 864 -4 871 1 b 870 30 871 20 871 24 b 438 474 780 471 480 474 b 6 30 392 474 94 471 b 4 14 4 24 4 19 b 23 -4 4 0 12 -4 b 52 26 36 -4 43 6 b 56 39 53 27 55 33 b 435 318 73 98 138 318 z m 516 75 b 436 153 516 117 480 153 b 359 75 395 153 359 117 b 436 -4 359 32 395 -4 b 516 75 480 -4 516 32 z',\n },\n fermataBelow: {\n x_min: 3,\n x_max: 605,\n y_min: -332,\n y_max: 0,\n ha: 332,\n o: 'm 435 -323 b 56 -43 138 -323 73 -102 b 52 -30 55 -37 53 -32 b 23 0 43 -10 36 0 b 4 -19 12 0 4 -4 b 6 -35 4 -23 4 -29 b 438 -478 94 -475 392 -478 b 870 -35 480 -478 780 -475 b 871 -20 871 -29 871 -24 b 851 0 871 -6 864 0 b 821 -30 837 0 831 -10 b 818 -40 819 -32 819 -36 b 435 -323 804 -95 742 -323 z m 516 -79 b 436 0 516 -36 480 0 b 359 -79 395 0 359 -36 b 436 -157 359 -121 395 -157 b 516 -79 480 -157 516 -121 z',\n },\n fermataLongAbove: {\n x_min: 0,\n x_max: 603,\n y_min: -1,\n y_max: 333,\n ha: 334,\n o: 'm 72 480 b 0 441 32 480 0 462 l 0 19 b 35 0 0 9 16 0 b 71 19 55 0 71 9 l 71 289 b 433 315 71 307 252 315 b 798 289 615 315 798 307 l 798 19 b 832 0 798 9 814 0 b 868 19 852 0 868 9 l 868 441 b 796 480 868 462 837 480 z m 513 78 b 433 156 513 121 478 156 b 356 78 390 156 356 121 b 433 -1 356 35 390 -1 b 513 78 478 -1 513 35 z',\n },\n fermataLongBelow: {\n x_min: 0,\n x_max: 603,\n y_min: -333,\n y_max: 1,\n ha: 334,\n o: 'm 513 -78 b 433 1 513 -35 478 1 b 356 -78 390 1 356 -35 b 433 -156 356 -121 390 -156 b 513 -78 478 -156 513 -121 z m 796 -480 b 868 -441 837 -480 868 -462 l 868 -19 b 832 0 868 -9 852 0 b 798 -19 814 0 798 -9 l 798 -289 b 433 -315 798 -307 615 -315 b 71 -289 252 -315 71 -307 l 71 -19 b 35 0 71 -9 55 0 b 0 -19 16 0 0 -9 l 0 -441 b 72 -480 0 -462 32 -480 z',\n },\n fermataVeryLongAbove: {\n x_min: 0,\n x_max: 715,\n y_min: 0,\n y_max: 408,\n ha: 408,\n o: 'm 76 588 b 0 546 35 588 0 569 l 0 22 b 37 1 0 10 17 1 b 75 22 59 1 75 10 l 75 431 b 514 458 75 449 294 458 b 955 431 734 458 955 449 l 955 22 b 991 1 955 10 971 1 b 1030 22 1012 1 1030 10 l 1030 546 b 953 588 1030 569 995 588 z m 215 389 b 138 347 171 389 138 370 l 138 22 b 174 1 138 10 154 1 b 213 22 196 1 213 10 l 213 217 b 514 245 213 235 363 245 b 816 217 665 245 816 235 l 816 22 b 854 1 816 10 834 1 b 891 22 876 1 891 10 l 891 347 b 815 389 891 370 858 389 z m 606 84 b 521 167 606 130 569 167 b 439 84 475 167 439 130 b 521 0 439 39 475 0 b 606 84 569 0 606 39 z',\n },\n fermataVeryLongBelow: {\n x_min: 0,\n x_max: 715,\n y_min: -408,\n y_max: 0,\n ha: 408,\n o: 'm 606 -84 b 521 0 606 -39 569 0 b 439 -84 475 0 439 -39 b 521 -167 439 -130 475 -167 b 606 -84 569 -167 606 -130 z m 815 -389 b 891 -347 858 -389 891 -370 l 891 -22 b 854 -1 891 -10 876 -1 b 816 -22 834 -1 816 -10 l 816 -217 b 514 -245 816 -235 665 -245 b 213 -217 363 -245 213 -235 l 213 -22 b 174 -1 213 -10 196 -1 b 138 -22 154 -1 138 -10 l 138 -347 b 215 -389 138 -370 171 -389 z m 953 -588 b 1030 -546 995 -588 1030 -569 l 1030 -22 b 991 -1 1030 -10 1012 -1 b 955 -22 971 -1 955 -10 l 955 -431 b 514 -458 955 -449 734 -458 b 75 -431 294 -458 75 -449 l 75 -22 b 37 -1 75 -10 59 -1 b 0 -22 17 -1 0 -10 l 0 -546 b 76 -588 0 -569 35 -588 z',\n },\n fermataShortAbove: {\n x_min: 0,\n x_max: 604,\n y_min: 0,\n y_max: 341,\n ha: 341,\n o: 'm 78 0 b 88 6 81 0 82 3 b 435 328 134 45 412 328 b 783 3 458 328 742 39 b 793 0 786 1 793 0 l 865 0 b 870 4 865 0 870 1 b 867 10 870 6 868 9 b 435 491 805 69 474 491 b 3 10 397 491 69 75 b 0 4 1 9 0 6 b 4 0 0 1 4 0 z m 513 94 b 433 171 513 135 477 171 b 354 94 390 171 354 135 b 433 13 354 49 390 13 b 513 94 477 13 513 49 z',\n },\n fermataShortBelow: {\n x_min: 0,\n x_max: 604,\n y_min: -341,\n y_max: 0,\n ha: 341,\n o: 'm 4 0 b 0 -4 4 0 0 -1 b 3 -10 0 -6 1 -9 b 435 -491 69 -75 397 -491 b 867 -10 474 -491 805 -69 b 870 -4 868 -9 870 -6 b 865 0 870 -1 865 0 l 793 0 b 783 -3 793 0 786 -1 b 435 -328 742 -39 458 -328 b 88 -6 412 -328 134 -45 b 78 0 82 -3 81 0 z m 513 -94 b 433 -13 513 -49 477 -13 b 354 -94 390 -13 354 -49 b 433 -171 354 -135 390 -171 b 513 -94 477 -171 513 -135 z',\n },\n breathMarkComma: {\n x_min: 1,\n x_max: 152,\n y_min: 2,\n y_max: 251,\n ha: 249,\n o: 'm 104 361 b 1 271 42 361 1 321 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 17 32 29 26 26 l 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 z',\n },\n breathMarkUpbow: {\n x_min: 1,\n x_max: 249,\n y_min: 1,\n y_max: 495,\n ha: 494,\n o: 'm 181 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 z',\n },\n caesura: {\n x_min: 0,\n x_max: 384,\n y_min: -1,\n y_max: 532,\n ha: 533,\n o: 'm 40 -1 b 78 26 58 -1 72 9 l 321 713 b 323 726 323 717 323 721 b 282 766 323 747 304 766 b 245 739 265 766 251 756 l 3 52 b 0 37 1 48 0 42 b 27 1 0 22 10 7 b 40 -1 32 -1 36 -1 z m 308 26 l 552 713 b 553 726 553 717 553 721 b 513 766 553 747 534 766 b 475 739 495 766 481 756 l 232 52 b 230 39 230 48 230 43 b 258 1 230 23 240 7 b 271 -1 262 -1 266 -1 b 308 26 287 -1 302 9 z',\n },\n caesuraCurved: {\n x_min: 0,\n x_max: 373,\n y_min: 0,\n y_max: 530,\n ha: 530,\n o: 'm 491 763 b 445 719 468 763 446 744 b 252 98 432 507 340 295 l 226 39 b 223 27 225 35 223 32 b 252 0 223 13 233 0 b 276 16 262 0 272 6 b 537 716 386 230 537 478 b 491 763 537 742 518 763 z m 29 0 b 53 16 39 0 48 6 l 82 69 b 314 716 187 264 314 498 b 268 763 314 742 295 763 b 222 719 245 763 223 744 b 29 98 209 507 117 295 l 3 39 b 0 29 1 36 0 33 b 29 0 0 14 12 0 z',\n },\n restMaxima: {\n x_min: 0,\n x_max: 381,\n y_min: -249,\n y_max: 250,\n ha: 499,\n o: 'm 180 -330 l 180 331 b 156 360 180 356 170 360 l 23 360 b 0 331 10 360 0 356 l 0 -330 b 23 -359 0 -354 10 -359 l 156 -359 b 180 -330 170 -359 180 -354 z m 549 -330 l 549 331 b 524 360 549 356 539 360 l 392 360 b 369 331 379 360 369 356 l 369 -330 b 392 -359 369 -354 379 -359 l 524 -359 b 549 -330 539 -359 549 -354 z',\n },\n restDoubleWhole: {\n x_min: 0,\n x_max: 125,\n y_min: 0,\n y_max: 250,\n ha: 250,\n o: 'm 180 22 l 180 338 b 156 360 180 350 170 360 l 23 360 b 0 338 10 360 0 350 l 0 22 b 23 0 0 10 10 0 l 156 0 b 180 22 170 0 180 10 z',\n },\n restWhole: {\n x_min: 0,\n x_max: 282,\n y_min: -135,\n y_max: 9,\n ha: 144,\n o: 'm 406 -157 l 406 -24 b 369 13 406 -3 389 13 l 37 13 b 0 -24 16 13 0 -3 l 0 -157 b 37 -194 0 -177 16 -194 l 369 -194 b 406 -157 389 -194 406 -177 z',\n },\n restWholeLegerLine: {\n x_min: -117,\n x_max: 399,\n y_min: -135,\n y_max: 20,\n ha: 155,\n o: 'm -143 29 b -168 3 -157 29 -168 17 b -143 -23 -168 -12 -157 -23 l 0 -23 l 0 -157 b 37 -194 0 -177 16 -194 l 369 -194 b 406 -157 389 -194 406 -177 l 406 -24 b 549 -23 406 -23 406 -23 b 575 3 563 -23 575 -12 b 549 29 575 17 563 29 z',\n },\n restHalf: {\n x_min: 0,\n x_max: 282,\n y_min: -2,\n y_max: 142,\n ha: 144,\n o: 'm 406 35 l 406 167 b 369 204 406 189 389 204 l 37 204 b 0 167 16 204 0 189 l 0 35 b 37 -3 0 14 16 -3 l 369 -3 b 406 35 389 -3 406 14 z',\n },\n restHalfLegerLine: {\n x_min: -117,\n x_max: 399,\n y_min: -13,\n y_max: 142,\n ha: 155,\n o: 'm 549 -19 b 575 7 563 -19 575 -7 b 549 33 575 22 563 33 b 406 35 406 33 406 33 l 406 167 b 369 204 406 187 389 204 l 37 204 b 0 167 16 204 0 187 l 0 33 l -143 33 b -168 7 -157 33 -168 22 b -143 -19 -168 -7 -157 -19 z',\n },\n restQuarter: {\n x_min: 1,\n x_max: 270,\n y_min: -375,\n y_max: 373,\n ha: 748,\n o: 'm 112 -55 b 174 -141 135 -84 156 -111 b 183 -161 177 -147 183 -158 b 181 -167 183 -163 183 -166 b 166 -174 179 -173 173 -174 b 143 -170 160 -174 148 -171 b 137 -170 141 -170 138 -170 l 125 -166 b 1 -304 50 -166 1 -233 b 168 -527 1 -376 63 -446 b 206 -540 180 -536 194 -540 b 228 -531 216 -540 226 -537 b 230 -521 229 -527 230 -524 b 207 -487 230 -508 219 -497 b 170 -435 189 -487 173 -448 b 164 -397 166 -423 164 -410 b 255 -292 164 -338 194 -292 b 369 -317 297 -292 344 -308 l 370 -318 b 382 -320 376 -320 379 -320 b 389 -314 386 -320 389 -318 b 336 -232 389 -297 351 -249 b 236 -32 281 -166 236 -112 b 236 -27 236 -30 236 -29 l 238 -17 b 238 -13 238 -16 238 -14 b 333 199 243 71 295 140 b 338 220 337 206 338 213 b 333 248 338 235 333 248 b 95 526 333 248 120 501 b 69 537 88 533 78 537 b 40 507 55 537 40 527 b 46 484 40 500 42 492 b 134 291 52 468 134 395 b 48 108 134 238 112 176 b 27 66 33 94 27 78 b 42 32 27 46 42 32 z',\n },\n rest8th: {\n x_min: 0,\n x_max: 247,\n y_min: -251,\n y_max: 174,\n ha: 425,\n o: 'm 193 154 b 96 251 193 207 150 251 b 0 154 43 251 0 207 b 39 81 0 124 17 98 b 117 56 62 65 89 56 b 173 66 137 56 157 60 b 225 88 193 72 206 78 b 232 89 228 89 230 89 b 239 76 238 89 239 84 b 238 60 239 72 239 66 b 104 -343 233 39 130 -248 b 145 -361 104 -360 137 -361 b 196 -347 161 -361 181 -359 b 341 161 200 -344 341 161 b 356 217 347 187 354 210 b 338 240 356 232 341 239 b 323 235 336 240 331 240 b 193 140 312 226 240 140 z',\n },\n rest16th: {\n x_min: 0,\n x_max: 320,\n y_min: -500,\n y_max: 179,\n ha: 679,\n o: 'm 300 160 b 202 258 300 215 256 258 b 104 160 148 258 104 215 b 219 62 104 101 164 62 b 331 94 258 62 298 75 b 341 96 336 95 338 96 b 348 86 346 96 348 94 b 265 -173 348 63 275 -151 b 194 -217 253 -200 215 -217 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 151 -105 b 0 -203 43 -105 0 -148 b 115 -301 0 -262 60 -301 b 223 -271 153 -301 190 -288 b 229 -279 226 -271 229 -274 l 228 -281 b 228 -282 228 -282 228 -282 l 91 -690 b 91 -691 91 -690 91 -691 l 89 -693 b 134 -720 89 -706 102 -720 b 189 -687 176 -720 183 -703 l 356 -138 b 420 81 393 -16 420 81 b 459 226 420 81 456 207 b 461 232 459 229 461 230 b 446 248 461 240 449 246 b 431 242 439 248 435 245 b 300 145 420 233 348 147 z',\n },\n rest32nd: {\n x_min: 0,\n x_max: 363,\n y_min: -500,\n y_max: 426,\n ha: 926,\n o: 'm 508 603 b 492 598 501 603 497 600 b 361 503 482 590 410 503 l 361 516 b 264 613 361 570 318 613 b 166 516 210 613 166 570 b 206 444 166 487 183 461 b 246 423 217 433 232 428 b 284 418 258 420 269 418 b 393 449 321 418 360 432 b 399 451 395 451 397 451 b 415 426 409 451 415 436 l 413 423 b 413 422 413 423 413 422 l 357 192 b 279 140 350 168 302 140 b 281 153 281 144 281 148 b 183 251 281 207 236 251 b 85 153 128 251 85 207 b 125 81 85 124 102 98 b 164 60 137 71 150 65 b 203 55 176 58 189 55 b 311 86 240 55 278 69 b 315 88 312 88 314 88 b 325 69 323 88 325 76 l 268 -167 b 194 -217 261 -197 216 -216 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 153 -105 b 0 -203 45 -105 0 -148 b 115 -301 0 -262 60 -301 b 228 -269 154 -301 194 -288 b 232 -268 229 -268 230 -268 b 240 -276 236 -268 240 -272 b 138 -688 240 -282 141 -678 b 137 -697 137 -691 137 -694 b 176 -720 137 -708 145 -720 b 232 -690 222 -720 226 -706 b 484 436 236 -672 484 436 b 521 582 484 436 518 564 b 523 588 521 585 523 586 b 508 603 523 600 511 603 z',\n },\n rest64th: {\n x_min: 0,\n x_max: 423,\n y_min: -753,\n y_max: 430,\n ha: 1183,\n o: 'm 596 609 b 580 603 589 609 585 606 b 448 507 569 595 497 507 b 449 521 449 511 449 516 b 351 619 449 575 405 619 b 253 521 297 619 253 575 b 372 422 253 461 317 422 b 481 454 410 422 446 438 b 491 456 484 455 488 456 b 504 441 498 456 504 451 b 501 426 504 436 503 432 b 445 202 500 422 451 217 b 359 144 435 174 383 144 l 359 158 b 261 256 359 212 315 256 b 163 158 207 256 163 212 b 243 65 163 112 202 78 b 279 60 255 62 266 60 b 397 91 320 60 360 73 b 403 92 400 92 402 92 b 412 79 409 92 412 86 b 410 72 412 76 412 75 b 351 -161 408 59 356 -150 b 281 -212 340 -199 301 -212 l 281 -197 b 183 -99 281 -144 238 -99 b 85 -197 130 -99 85 -144 b 125 -271 85 -228 102 -253 b 166 -291 138 -279 151 -287 b 204 -297 177 -294 192 -297 b 262 -287 225 -297 245 -292 b 305 -265 282 -279 287 -274 b 310 -264 307 -264 308 -264 b 318 -284 317 -264 318 -275 b 317 -295 318 -288 317 -294 b 259 -524 315 -302 265 -508 b 194 -567 251 -554 213 -567 b 196 -554 196 -563 196 -559 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 b 40 -626 0 -583 17 -609 b 118 -652 60 -644 92 -652 b 210 -629 145 -652 186 -642 b 216 -628 213 -628 215 -628 b 228 -647 226 -628 228 -639 l 226 -651 b 226 -652 226 -651 226 -652 l 122 -1054 b 121 -1064 121 -1058 121 -1061 b 167 -1084 121 -1077 134 -1084 b 215 -1060 202 -1084 209 -1076 b 402 -278 217 -1047 229 -1021 b 436 -135 403 -278 431 -161 l 570 441 b 609 588 570 441 605 569 b 596 609 609 603 602 608 z',\n },\n rest128th: {\n x_min: 0,\n x_max: 485,\n y_min: -750,\n y_max: 689,\n ha: 1439,\n o: 'm 537 894 b 439 992 537 949 494 992 b 341 894 386 992 341 949 b 382 822 341 865 359 840 b 459 796 402 805 433 796 b 518 806 480 796 501 801 l 520 808 b 569 828 539 814 552 819 b 580 831 572 829 577 831 b 598 812 589 831 598 825 b 596 801 598 809 598 805 b 540 575 590 773 546 595 b 448 510 534 553 475 510 l 448 524 b 350 622 448 577 405 622 b 252 524 297 622 252 577 b 292 451 252 494 269 468 b 369 426 318 433 337 426 b 429 435 389 426 412 429 b 494 464 449 442 475 455 b 498 465 495 465 497 465 b 505 446 504 465 505 456 b 503 426 505 439 504 432 l 446 202 b 366 144 439 173 389 144 l 366 158 b 268 256 366 212 323 256 b 170 158 215 256 170 212 b 289 59 170 98 235 59 b 347 69 310 59 330 63 b 397 91 367 76 379 82 b 406 94 400 92 403 94 b 415 79 412 94 415 88 b 412 63 415 75 413 69 b 357 -157 408 42 364 -134 b 281 -212 346 -196 302 -212 b 282 -197 281 -207 282 -203 b 184 -99 282 -144 238 -99 b 86 -197 130 -99 86 -144 b 204 -297 86 -258 150 -297 b 262 -287 225 -297 245 -292 b 312 -265 282 -279 294 -274 b 318 -264 314 -264 317 -264 b 327 -275 324 -264 327 -269 b 266 -517 324 -287 278 -490 b 200 -569 248 -566 220 -567 l 196 -554 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 b 118 -652 0 -615 63 -652 b 177 -642 138 -652 160 -648 l 179 -641 b 229 -621 197 -635 210 -629 l 230 -619 b 239 -626 236 -619 239 -622 b 238 -632 239 -628 239 -631 b 131 -1057 235 -642 134 -1050 b 173 -1080 131 -1071 140 -1080 b 230 -1057 219 -1080 225 -1074 l 658 815 b 697 960 658 815 694 942 b 698 966 697 963 698 965 b 684 982 698 975 687 981 b 668 976 677 982 672 979 b 537 880 658 969 586 881 z',\n },\n dynamicPiano: {\n x_min: -89,\n x_max: 366,\n y_min: -142,\n y_max: 274,\n ha: 416,\n o: 'm 395 395 b 292 357 350 395 318 380 b 262 328 272 340 268 328 b 246 363 255 328 259 338 b 177 393 236 380 215 393 b 1 251 92 393 46 333 b -9 223 -6 238 -9 230 b 7 207 -9 213 -1 207 b 30 229 17 207 23 216 b 127 338 72 301 101 338 b 143 321 138 338 143 331 b 134 285 143 310 138 295 l -43 -154 b -65 -168 -48 -166 -50 -168 l -109 -168 b -128 -187 -122 -168 -128 -174 b -111 -204 -128 -199 -122 -204 l 167 -204 b 186 -186 180 -204 186 -199 b 168 -168 186 -174 180 -168 l 111 -168 b 98 -164 102 -168 98 -168 b 101 -154 98 -163 99 -158 l 166 7 b 179 24 168 14 171 24 b 213 -1 186 24 190 10 b 276 -14 233 -12 252 -14 b 527 266 415 -14 527 130 b 395 395 527 350 475 395 z m 356 341 b 389 288 380 341 389 320 b 243 35 389 217 312 35 b 207 81 219 35 207 50 b 235 180 207 111 219 140 l 264 251 b 356 341 284 300 321 341 z',\n },\n dynamicMezzo: {\n x_min: -20,\n x_max: 446,\n y_min: -10,\n y_max: 274,\n ha: 284,\n o: 'm 528 395 b 431 350 487 395 454 374 b 409 330 416 336 415 330 b 397 360 402 330 406 341 b 334 395 389 379 370 395 b 236 350 292 395 259 374 b 215 330 222 336 220 330 b 203 360 207 330 212 340 b 147 393 194 379 174 393 b -19 251 71 393 26 331 b -29 223 -26 238 -29 230 b -13 207 -29 213 -22 207 b 9 226 -3 207 1 215 b 107 338 52 300 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 287 323 225 292 255 323 b 308 302 304 323 308 314 b 294 249 308 285 302 269 b 203 24 294 248 292 248 b 199 9 200 17 199 13 b 215 0 199 3 203 0 l 285 0 b 308 17 298 0 302 3 l 402 251 b 481 323 419 292 449 323 b 503 302 498 323 503 314 b 413 43 503 252 413 104 b 478 -14 413 6 436 -14 b 629 102 533 -14 583 26 b 642 132 638 117 642 125 b 629 145 642 141 636 145 b 608 127 619 145 615 138 b 534 49 580 84 553 49 b 523 62 526 49 523 53 b 606 317 523 112 606 238 b 528 395 606 353 588 395 z',\n },\n dynamicForte: {\n x_min: -141,\n x_max: 364,\n y_min: -152,\n y_max: 444,\n ha: 596,\n o: 'm 23 380 b 0 357 7 380 0 373 b 22 336 0 343 7 336 l 105 336 b 117 330 114 336 117 336 b 114 315 117 327 115 323 l 23 0 b -101 -187 -17 -141 -43 -187 b -127 -174 -120 -187 -127 -181 b -92 -156 -127 -163 -114 -170 b -63 -102 -75 -144 -63 -125 b -128 -43 -63 -65 -89 -43 b -203 -122 -171 -43 -203 -78 b -95 -219 -203 -186 -156 -219 b 161 17 14 -219 82 -145 b 269 317 203 105 235 194 l 271 318 b 289 336 271 323 282 336 l 383 336 b 406 359 399 336 406 343 b 384 380 406 373 399 380 l 298 380 b 284 387 288 380 284 380 b 287 405 284 392 285 396 b 419 606 315 530 347 606 b 442 595 431 606 442 603 b 419 580 442 586 435 588 b 389 526 400 572 389 552 b 454 465 389 485 418 465 b 524 543 491 465 524 490 b 400 639 524 596 491 639 b 135 402 261 639 183 540 b 107 380 128 380 127 380 z',\n },\n dynamicRinforzando: {\n x_min: -20,\n x_max: 277,\n y_min: 0,\n y_max: 274,\n ha: 274,\n o: 'm 324 395 b 235 350 287 395 256 374 b 215 330 222 336 220 330 b 203 360 207 330 213 337 b 145 393 194 379 174 393 b -19 251 75 393 27 337 b -29 223 -26 238 -29 230 b -13 207 -29 213 -22 207 b 9 226 -3 207 3 215 b 107 338 52 301 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 304 351 226 298 272 351 b 318 343 312 351 318 348 b 287 285 318 330 287 325 b 338 239 287 256 308 239 b 399 318 373 239 399 268 b 324 395 399 360 377 395 z',\n },\n dynamicSforzando: {\n x_min: 0,\n x_max: 229,\n y_min: -10,\n y_max: 273,\n ha: 283,\n o: 'm 212 393 b 68 274 127 393 68 350 b 145 161 68 223 95 196 b 200 85 187 132 200 114 b 127 20 200 53 173 20 b 66 42 91 20 66 32 b 91 56 66 49 75 46 b 111 98 104 65 111 79 b 59 145 111 127 86 145 b 0 78 24 145 0 117 b 125 -14 0 30 49 -14 b 291 120 219 -14 291 36 b 220 232 291 160 276 190 b 151 314 168 271 151 287 b 213 361 151 337 168 361 b 258 346 238 361 258 356 b 240 333 258 340 251 340 b 226 298 232 325 226 314 b 276 252 226 269 248 252 b 330 307 311 252 330 279 b 212 393 330 360 285 393 z',\n },\n dynamicZ: {\n x_min: -30,\n x_max: 244,\n y_min: -10,\n y_max: 268,\n ha: 278,\n o: 'm 333 386 b 298 377 321 386 314 382 b 239 370 282 373 259 370 b 94 383 153 370 111 383 b 68 364 79 383 72 377 l 33 264 b 29 242 30 255 29 248 b 45 228 29 232 36 228 b 66 249 55 228 60 236 l 81 279 b 96 297 85 288 88 297 b 168 292 102 297 127 292 b 223 302 194 292 215 302 b 196 269 229 302 197 271 l -26 45 b -43 16 -37 33 -43 27 b -24 -1 -43 6 -36 -1 b 4 16 -12 -1 -3 10 b 39 30 16 24 27 30 b 179 -14 79 30 108 -14 b 297 102 259 -14 297 43 b 245 166 297 147 271 166 b 197 115 219 166 197 145 b 236 72 197 88 216 72 b 259 79 251 72 255 79 b 264 75 262 79 264 78 b 258 60 264 72 261 66 b 229 45 252 50 242 45 b 117 95 186 45 173 95 b 85 86 98 95 89 86 b 102 111 85 86 95 104 l 333 338 b 351 370 344 350 351 359 b 333 386 351 380 343 386 z',\n },\n ornamentTrill: {\n x_min: 0,\n x_max: 521,\n y_min: -10,\n y_max: 390,\n ha: 400,\n o: 'm 383 562 b 364 557 377 562 369 559 l 294 534 b 269 511 281 530 275 526 l 217 384 b 206 367 212 370 210 367 b 179 380 200 367 192 374 b 118 393 158 389 140 393 b 0 292 50 393 0 353 b 95 210 0 248 30 210 b 140 213 112 210 131 213 b 144 209 143 213 144 212 b 140 194 144 206 143 202 l 124 156 b 96 58 108 117 96 88 b 179 -14 96 17 124 -14 b 325 153 253 -14 325 46 b 307 251 325 187 320 219 b 302 265 304 258 302 261 b 334 294 302 274 311 281 l 343 298 b 455 348 393 328 428 348 b 474 327 468 348 474 344 b 465 285 474 312 469 295 l 360 24 b 356 9 357 17 356 13 b 372 0 356 3 360 0 l 442 0 b 465 17 455 0 459 3 l 559 251 b 655 351 577 298 624 351 b 670 343 664 351 670 348 b 638 285 670 330 638 325 b 690 239 638 256 660 239 b 750 318 724 239 750 268 b 675 395 750 360 729 395 b 586 350 638 395 608 374 b 566 330 573 336 572 330 b 553 361 559 330 564 340 b 490 393 543 380 521 393 b 347 348 432 393 377 364 b 312 333 328 338 320 333 b 308 337 310 333 308 334 b 315 359 308 343 312 351 l 387 537 b 392 553 390 544 392 549 b 383 562 392 559 389 562 z m 118 360 b 192 325 134 360 192 347 b 186 307 192 321 189 314 l 180 292 b 148 265 173 274 167 269 b 98 258 130 261 112 258 b 39 301 50 258 39 281 b 118 360 39 327 60 360 z m 272 240 b 292 151 285 240 292 164 b 212 30 292 88 253 30 b 196 48 200 30 196 37 b 207 92 196 59 202 78 b 264 230 207 94 209 94 b 272 240 266 238 268 240 z',\n },\n ornamentTurn: {\n x_min: 0,\n x_max: 460,\n y_min: 0,\n y_max: 218,\n ha: 218,\n o: 'm 534 314 b 454 251 490 314 454 294 b 505 199 454 219 475 199 b 579 232 547 199 549 232 b 626 164 603 232 626 202 b 533 72 626 102 583 72 b 377 180 487 72 439 111 b 150 312 307 258 243 312 b 0 148 55 312 0 240 b 128 0 0 45 66 0 b 209 63 173 0 209 20 b 157 115 209 95 187 115 b 84 82 115 115 114 82 b 36 150 59 82 36 112 b 130 242 36 212 79 242 b 285 134 176 242 223 203 b 513 1 356 56 419 1 b 662 166 608 1 662 73 b 534 314 662 269 596 314 z',\n },\n ornamentTurnSlash: {\n x_min: 0,\n x_max: 460,\n y_min: -90,\n y_max: 306,\n ha: 396,\n o: 'm 333 441 b 310 418 315 441 310 433 l 310 274 b 302 252 310 258 308 252 b 261 278 294 252 287 262 b 150 311 228 298 192 311 b 0 147 55 311 0 239 b 128 -1 0 43 66 -1 b 209 62 173 -1 209 19 b 157 114 209 94 187 114 b 84 81 115 114 114 81 b 36 148 59 81 36 111 b 130 240 36 210 79 240 b 285 128 176 240 222 197 b 307 79 304 108 307 105 l 307 -107 b 330 -130 307 -122 312 -130 b 353 -107 347 -130 353 -122 l 353 37 b 360 59 353 53 353 59 b 402 33 369 59 376 49 b 513 0 435 13 471 0 b 662 164 608 0 662 72 b 534 312 662 268 596 312 b 454 249 490 312 454 292 b 505 197 454 217 475 197 b 579 230 547 197 549 230 b 626 163 603 230 626 200 b 533 71 626 101 583 71 b 377 183 487 71 441 114 b 356 232 359 203 356 206 l 356 418 b 333 441 356 433 350 441 z',\n },\n ornamentMordent: {\n x_min: 1,\n x_max: 729,\n y_min: -73,\n y_max: 319,\n ha: 392,\n o: 'm 546 265 l 546 459 l 501 459 l 501 216 l 459 167 b 439 167 454 160 445 160 b 302 327 387 228 310 317 b 258 353 291 338 282 351 b 226 340 245 353 238 348 l 20 107 b 1 73 12 98 1 84 b 30 59 1 65 9 59 b 88 94 53 59 73 79 b 144 143 107 109 124 127 b 176 161 158 154 168 161 b 197 144 183 161 189 156 l 323 10 b 351 0 328 3 340 0 b 377 9 361 0 372 3 b 498 114 392 17 475 94 l 498 -105 l 544 -105 l 544 153 b 562 160 550 157 556 160 b 585 144 569 160 576 156 b 710 10 590 135 697 24 b 737 0 716 3 727 0 b 765 9 749 0 759 3 b 1030 295 776 17 1011 274 l 1032 300 b 1050 328 1041 308 1050 318 b 1012 353 1050 343 1024 353 b 986 343 1002 353 994 348 b 854 190 971 330 871 206 b 828 176 842 180 835 176 b 802 190 818 176 809 183 b 681 333 791 202 696 320 b 645 353 668 344 657 353 b 613 340 634 353 626 350 b 580 304 600 330 590 315 z',\n },\n ornamentShortTrill: {\n x_min: 0,\n x_max: 725,\n y_min: 0,\n y_max: 245,\n ha: 245,\n o: 'm 429 167 l 301 325 b 256 353 291 338 282 350 b 225 340 246 353 238 350 b 16 105 158 268 88 186 b 0 72 9 96 0 86 b 29 58 0 63 7 58 b 71 76 42 58 55 62 l 158 154 b 174 160 163 158 168 160 b 197 143 181 160 187 154 b 321 10 203 135 310 24 b 350 0 327 3 338 0 b 377 7 361 0 372 3 l 533 148 b 554 160 543 158 550 160 b 577 143 562 160 566 156 b 703 10 585 135 690 24 b 732 0 708 3 720 0 b 759 7 743 0 753 3 b 1024 294 769 16 1005 272 b 1044 327 1032 305 1044 321 b 1005 353 1044 341 1018 353 b 979 343 996 353 988 348 b 848 189 963 330 864 204 b 821 174 837 179 828 174 b 796 189 811 174 804 181 b 674 331 783 202 688 318 b 641 351 662 343 651 351 b 606 340 628 351 619 350 b 573 304 593 328 583 315 b 444 167 533 259 491 213 b 429 167 439 161 433 161 z',\n },\n ornamentTremblement: {\n x_min: 1,\n x_max: 985,\n y_min: 0,\n y_max: 244,\n ha: 244,\n o: 'm 678 325 b 634 351 667 338 657 350 b 602 338 621 351 613 348 l 448 167 b 439 167 446 164 441 164 l 302 325 b 258 351 291 338 281 350 b 228 338 245 351 238 348 b 193 304 215 328 204 315 l 19 107 b 1 72 13 96 1 76 b 30 58 1 63 9 58 b 89 92 52 58 73 78 l 144 141 b 148 144 145 143 147 143 b 176 160 160 153 170 160 b 199 143 183 160 189 154 b 324 10 204 134 311 23 b 351 0 330 3 340 0 b 379 7 363 0 373 3 l 530 148 b 552 160 536 154 546 160 b 575 143 559 160 564 154 b 698 10 580 134 687 23 b 727 0 704 3 716 0 b 755 7 739 0 749 3 l 907 147 b 930 160 922 158 923 160 b 952 143 937 160 943 154 l 1077 10 b 1107 0 1084 3 1096 0 b 1133 7 1117 0 1128 3 b 1398 294 1143 16 1380 272 b 1418 327 1407 305 1418 321 b 1381 351 1418 343 1394 351 b 1354 341 1371 351 1362 348 b 1223 189 1338 328 1238 204 b 1195 174 1211 179 1202 174 b 1171 189 1185 174 1178 181 b 1048 331 1158 200 1063 318 b 1012 351 1035 343 1024 351 b 981 338 1002 351 994 350 b 948 304 968 328 958 315 b 827 166 907 258 865 212 b 815 166 824 163 818 163 b 678 325 760 226 732 264 z',\n },\n ornamentPrecompAppoggTrill: {\n x_min: 0,\n x_max: 1119,\n y_min: 0,\n y_max: 481,\n ha: 481,\n o: 'm 1015 163 b 873 328 963 223 880 318 b 828 354 860 344 847 353 b 796 341 816 354 809 351 b 763 305 783 331 773 317 b 642 168 721 261 681 215 b 636 163 641 167 639 164 b 494 328 585 223 501 318 b 449 354 481 344 468 353 b 418 341 438 354 431 351 b 384 305 405 331 395 317 b 264 168 343 261 302 215 l 242 144 b 144 88 232 124 171 88 b 79 197 81 88 79 189 l 79 648 b 60 693 79 683 71 693 b 52 691 58 693 55 693 b 0 616 3 672 0 625 l 0 207 b 121 0 0 40 68 0 b 249 68 168 0 232 53 b 279 94 262 75 271 86 b 336 144 298 111 315 128 b 367 163 350 156 360 163 b 389 145 374 163 380 157 b 514 12 395 137 501 26 b 543 1 520 4 531 1 b 569 9 553 1 563 4 b 636 73 576 14 605 43 l 658 94 b 714 144 677 111 694 128 b 746 163 729 156 739 163 b 768 145 753 163 759 157 b 893 12 773 137 880 26 b 922 1 899 4 910 1 b 948 9 932 1 942 4 l 1012 71 b 1037 94 1022 78 1030 86 b 1092 144 1054 111 1073 128 b 1123 161 1106 156 1115 161 b 1146 145 1130 161 1136 157 b 1270 12 1152 137 1259 26 b 1299 1 1276 4 1287 1 b 1326 9 1310 1 1320 4 b 1591 297 1336 19 1572 275 b 1611 328 1600 307 1611 320 b 1574 354 1611 343 1585 354 b 1548 344 1565 354 1555 350 b 1416 192 1532 331 1431 206 b 1388 177 1404 181 1395 177 b 1365 190 1380 177 1371 184 b 1243 333 1352 203 1256 321 b 1205 354 1228 346 1217 354 b 1174 341 1195 354 1187 351 b 1140 305 1161 330 1152 317 z',\n },\n ornamentPrecompSlideTrillDAnglebert: {\n x_min: 2,\n x_max: 1150,\n y_min: -367,\n y_max: 245,\n ha: 612,\n o: 'm 1058 160 b 916 327 1007 220 923 317 b 871 353 903 343 890 351 b 840 340 860 353 852 350 b 806 304 827 330 816 315 b 685 167 765 259 724 213 l 680 160 l 615 235 b 419 344 582 275 523 344 b 3 -144 258 344 3 26 b 4 -168 3 -153 3 -160 b 246 -482 24 -315 99 -422 b 458 -528 340 -521 410 -528 b 514 -526 485 -528 504 -526 b 552 -508 531 -526 552 -517 b 514 -497 552 -503 541 -498 l 503 -497 b 194 -390 432 -494 298 -488 b 69 -151 194 -390 69 -279 b 184 96 69 -60 128 27 b 328 183 202 118 258 183 b 477 96 413 183 454 118 b 559 10 510 62 552 19 b 588 0 566 3 576 0 b 613 7 598 0 609 3 b 723 112 622 14 681 73 b 789 161 733 122 776 161 b 811 144 796 161 802 156 b 936 10 816 135 923 24 b 965 0 942 3 953 0 b 991 7 975 0 985 3 b 1051 66 996 12 1022 37 b 1081 92 1063 73 1073 84 b 1136 143 1099 109 1117 127 b 1168 160 1151 154 1159 160 b 1191 144 1175 160 1181 156 b 1315 10 1197 135 1303 24 b 1344 0 1320 3 1332 0 b 1371 7 1355 0 1365 3 b 1636 295 1381 17 1617 274 b 1656 327 1644 305 1656 318 b 1619 353 1656 341 1630 353 b 1593 343 1610 353 1600 348 b 1460 190 1577 330 1476 204 b 1433 176 1449 180 1440 176 b 1410 189 1424 176 1416 183 b 1287 331 1397 202 1300 320 b 1250 353 1273 344 1261 353 b 1218 340 1240 353 1231 350 b 1185 304 1205 328 1197 315 z',\n },\n ornamentPrecompSlideTrillBach: {\n x_min: 0,\n x_max: 1048,\n y_min: -367,\n y_max: 331,\n ha: 698,\n o: 'm 1038 477 l 979 477 l 979 238 l 912 160 b 769 327 858 220 775 317 b 724 353 756 343 743 351 b 693 340 713 353 706 350 b 660 304 680 330 670 315 b 539 167 618 259 577 213 b 533 161 536 166 534 163 b 390 327 480 220 396 317 b 346 353 377 343 364 351 l 340 353 b 308 340 330 353 321 350 b 275 304 295 330 285 315 b 117 122 220 243 168 186 b 0 -144 68 62 0 -48 b 1 -168 0 -153 0 -160 b 243 -482 22 -315 96 -422 b 455 -528 337 -521 408 -528 b 511 -526 482 -528 501 -526 b 549 -508 528 -526 549 -517 b 511 -497 549 -503 539 -498 l 500 -497 b 192 -390 429 -494 295 -488 b 68 -177 192 -390 84 -298 b 66 -151 66 -168 66 -160 b 189 105 66 -58 127 35 b 232 143 203 118 216 131 b 264 161 246 154 256 161 b 285 144 271 161 276 156 b 410 10 291 135 397 24 b 439 0 416 3 428 0 b 465 7 449 0 459 3 l 531 72 b 554 92 540 78 547 86 b 611 143 573 109 590 127 b 642 161 625 154 635 161 b 664 144 649 161 655 156 b 789 10 670 135 776 24 b 818 0 795 3 806 0 b 844 7 828 0 838 3 b 904 66 850 12 876 37 b 935 92 916 73 924 84 b 979 134 949 107 963 121 l 979 -88 l 1037 -88 l 1037 151 l 1044 144 b 1168 10 1050 135 1156 24 b 1197 0 1174 3 1185 0 b 1224 7 1208 0 1218 3 b 1489 295 1234 17 1470 274 b 1509 327 1498 305 1509 318 b 1472 353 1509 341 1483 353 b 1446 343 1463 353 1453 348 b 1313 190 1430 330 1329 204 b 1286 176 1302 180 1293 176 b 1263 189 1277 176 1269 183 b 1140 331 1250 202 1153 320 b 1103 353 1126 344 1115 353 b 1071 340 1093 353 1084 350 b 1038 304 1058 328 1050 315 z',\n },\n ornamentPrecompTrillSuffixDandrieu: {\n x_min: 0,\n x_max: 949,\n y_min: 0,\n y_max: 381,\n ha: 381,\n o: 'm 1367 314 b 1250 521 1367 419 1318 482 b 1107 549 1211 537 1145 549 b 1083 546 1096 549 1087 549 b 1066 528 1071 540 1066 534 b 1079 520 1066 524 1070 520 b 1323 351 1187 517 1323 487 b 1201 171 1323 269 1260 219 b 1194 166 1201 171 1198 168 b 1056 327 1142 226 1063 317 b 1011 353 1043 343 1030 351 b 979 340 999 353 992 350 b 946 304 966 330 956 315 b 825 167 904 259 864 213 l 821 161 b 678 327 768 222 685 317 b 634 353 665 343 652 351 b 602 340 622 353 615 350 b 569 304 589 330 579 315 b 448 167 527 259 487 213 l 444 161 b 301 327 390 222 308 317 b 256 353 288 343 275 351 b 225 340 245 353 238 350 b 192 304 212 330 202 315 b 71 167 150 259 109 213 b 17 105 52 147 36 127 b 0 73 10 98 0 84 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 174 161 157 154 167 161 b 196 144 181 161 187 156 b 321 10 202 135 308 24 b 350 0 327 3 338 0 b 376 7 360 0 370 3 b 485 112 384 14 444 73 b 552 161 495 122 539 161 b 573 144 559 161 564 156 b 698 10 579 135 685 24 b 727 0 704 3 716 0 b 753 7 737 0 747 3 b 863 112 762 14 821 73 b 929 161 873 122 916 161 b 950 144 936 161 942 156 b 1076 10 956 135 1063 24 b 1104 0 1081 3 1093 0 b 1130 7 1115 0 1125 3 b 1236 108 1139 14 1195 69 b 1367 314 1297 160 1367 233 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefix: {\n x_min: 0,\n x_max: 1278,\n y_min: 0,\n y_max: 247,\n ha: 247,\n o: 'm 1801 356 b 1776 346 1793 356 1783 351 b 1642 192 1760 333 1659 206 b 1614 177 1630 181 1621 177 b 1591 190 1606 177 1597 184 b 1469 334 1578 203 1482 323 b 1430 356 1453 347 1441 356 b 1398 343 1420 356 1411 353 b 1365 307 1385 331 1377 318 l 1240 164 b 1097 330 1187 226 1104 320 b 1053 356 1084 346 1071 354 b 1021 343 1041 356 1034 353 b 988 307 1008 333 998 318 b 865 168 946 262 904 216 l 861 163 b 717 330 808 223 724 320 b 672 356 704 346 691 354 b 641 343 661 356 654 353 b 608 307 628 333 618 318 b 485 168 566 262 524 216 l 455 134 b 284 46 409 88 351 46 b 16 285 148 46 32 265 b 3 295 9 292 4 295 b 0 291 1 295 0 292 b 1 285 0 288 1 285 b 308 0 42 190 157 0 b 530 120 415 1 482 63 b 559 144 539 128 549 137 b 590 163 573 156 583 163 b 612 145 598 163 603 157 b 739 10 618 137 724 24 b 768 0 744 3 756 0 b 793 7 778 0 788 3 b 903 114 802 14 861 75 l 939 144 b 971 163 953 156 963 163 b 992 145 978 163 984 157 b 1119 10 998 137 1106 24 b 1148 0 1125 3 1136 0 b 1174 7 1158 0 1168 3 b 1284 114 1182 14 1241 75 b 1316 144 1282 115 1312 141 b 1348 161 1331 156 1339 161 b 1371 145 1355 161 1361 157 b 1496 10 1377 137 1485 24 b 1525 0 1502 3 1513 0 b 1552 7 1536 0 1547 3 b 1819 298 1562 17 1800 276 b 1840 330 1829 308 1840 320 b 1832 344 1840 334 1837 340 b 1801 356 1820 351 1810 356 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefixTurn: {\n x_min: 0,\n x_max: 1277,\n y_min: -62,\n y_max: 333,\n ha: 395,\n o: 'm 1273 202 l 1273 480 l 1230 480 l 1230 174 l 1097 328 b 1053 354 1084 344 1071 353 b 1021 341 1041 354 1034 351 b 988 305 1008 331 998 317 b 865 167 945 261 904 215 l 861 161 b 717 328 808 222 724 318 b 672 354 704 344 691 353 b 641 341 661 354 654 351 b 608 305 628 331 618 317 b 485 167 564 261 524 215 b 455 132 474 156 465 144 b 284 45 410 88 350 45 b 14 284 148 45 30 264 b 3 294 9 291 4 294 b 0 289 1 294 0 291 b 1 284 0 287 1 284 b 308 -1 42 189 157 -1 b 530 118 415 0 481 62 b 557 143 539 127 547 135 b 590 161 572 154 582 161 b 612 144 598 161 603 156 b 737 9 618 135 724 24 b 768 -1 743 1 755 -1 b 793 6 778 -1 788 1 b 903 112 802 13 861 73 l 937 143 b 971 161 953 154 963 161 b 992 144 978 161 984 156 b 1117 9 998 135 1104 24 b 1148 -1 1123 1 1136 -1 b 1174 6 1158 -1 1168 1 l 1230 60 l 1230 -89 l 1273 -89 l 1273 102 l 1283 112 b 1348 160 1295 125 1332 160 b 1371 144 1355 160 1361 156 b 1496 9 1377 135 1483 24 b 1525 -1 1502 1 1513 -1 b 1552 6 1536 -1 1547 1 b 1819 297 1562 16 1800 275 b 1839 328 1827 307 1839 320 b 1801 354 1839 343 1813 354 b 1776 344 1793 354 1783 350 b 1642 190 1760 331 1657 206 b 1614 176 1630 180 1621 176 b 1591 189 1606 176 1597 183 b 1467 333 1578 203 1480 321 b 1430 354 1453 346 1441 354 b 1398 341 1420 354 1411 351 b 1365 305 1385 330 1377 317 z',\n },\n ornamentPrecompTrillLowerSuffix: {\n x_min: 0,\n x_max: 859,\n y_min: -222,\n y_max: 246,\n ha: 468,\n o: 'm 1164 217 b 1031 351 1138 259 1063 351 b 1011 337 1020 351 1024 347 b 828 167 952 291 886 217 l 824 164 b 683 328 772 225 690 318 b 638 354 670 344 657 353 b 606 341 626 354 619 351 b 573 305 593 331 583 317 b 451 167 530 261 490 215 l 446 161 b 302 328 393 222 310 318 b 258 354 289 344 276 353 b 226 341 246 354 239 351 b 193 305 213 331 203 317 b 71 167 150 261 109 215 b 17 105 52 147 36 127 b 0 73 10 98 0 84 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 176 161 157 154 168 161 b 197 144 183 161 189 156 b 323 9 203 135 310 23 b 353 -1 328 1 340 -1 b 379 6 363 -1 373 1 b 488 112 387 13 446 73 l 523 143 b 556 161 539 154 549 161 b 577 144 563 161 569 156 b 703 9 583 135 690 23 b 733 -1 708 1 721 -1 b 759 6 743 -1 753 1 b 868 112 768 13 827 73 b 955 183 878 122 943 183 b 1081 107 965 183 1031 153 b 1156 -89 1128 63 1156 6 l 1156 -102 b 948 -297 1156 -204 1048 -297 b 806 -271 904 -297 850 -282 l 792 -266 b 801 -288 792 -268 795 -282 b 948 -320 809 -297 880 -320 b 1237 -50 1092 -320 1237 -199 b 1164 217 1237 75 1218 122 z',\n },\n brassScoop: {\n x_min: 1,\n x_max: 320,\n y_min: -373,\n y_max: 13,\n ha: 386,\n o: 'm 35 -537 b 461 -12 194 -518 461 -289 b 438 19 461 13 451 19 b 410 -9 425 19 413 9 b 35 -425 357 -366 92 -403 b 1 -482 13 -433 1 -438 l 1 -505 b 26 -537 1 -526 3 -537 z',\n },\n brassDoitMedium: {\n x_min: 0,\n x_max: 489,\n y_min: -40,\n y_max: 346,\n ha: 386,\n o: 'm 33 -58 b 704 468 255 -58 683 186 b 681 498 704 494 693 498 b 654 471 668 498 658 488 b 33 55 550 118 91 76 b 0 -3 12 46 0 42 l 0 -26 b 24 -58 0 -46 1 -58 z',\n },\n brassFallLipShort: {\n x_min: 1,\n x_max: 293,\n y_min: -345,\n y_max: 42,\n ha: 387,\n o: 'm 22 60 b 1 35 4 60 1 52 l 1 6 b 26 -50 3 -40 10 -43 b 32 -52 27 -50 30 -50 b 376 -469 85 -73 327 -111 b 400 -497 379 -487 387 -497 b 422 -467 412 -497 422 -491 b 32 60 422 -187 177 40 z',\n },\n brassLiftMedium: {\n x_min: 0,\n x_max: 811,\n y_min: 0,\n y_max: 852,\n ha: 852,\n o: 'm 1138 1220 b 1135 1225 1135 1223 1135 1224 b 1129 1227 1133 1227 1130 1227 b 1117 1207 1122 1227 1117 1212 l 1117 1201 b 1109 1164 1117 1187 1117 1172 b 1100 1156 1107 1161 1104 1158 b 959 1104 1058 1128 995 1140 b 929 1032 936 1081 929 1056 b 932 1007 929 1024 930 1015 b 923 976 932 995 930 985 l 914 971 b 773 919 873 942 809 955 b 743 847 750 896 743 870 b 746 821 743 838 744 829 b 737 791 746 809 744 799 l 729 783 b 588 733 687 756 624 769 b 557 661 564 710 557 684 b 560 635 557 652 559 644 b 552 605 560 624 559 612 l 543 598 b 402 547 501 570 438 583 b 372 475 379 524 372 498 b 374 449 372 467 373 458 b 366 419 374 438 373 426 l 357 412 b 216 361 315 384 252 397 b 186 289 193 338 186 312 b 189 264 186 281 187 272 b 180 233 189 252 187 240 b 171 226 177 232 174 229 b 30 176 130 199 66 212 b 0 104 7 153 0 128 b 33 0 0 88 14 0 b 49 17 40 0 49 10 b 71 63 52 35 56 49 b 212 115 102 95 154 59 b 239 186 230 134 239 160 b 236 210 239 194 238 202 b 256 249 239 225 243 236 b 397 301 288 281 340 245 b 425 372 416 320 425 346 b 422 396 425 380 423 387 b 442 435 425 410 429 422 b 583 487 474 467 526 431 b 611 557 602 505 611 531 b 608 582 611 566 609 573 b 628 621 611 596 615 608 b 769 672 660 652 711 618 b 796 743 788 691 796 717 b 793 768 796 752 795 759 b 814 806 796 782 801 793 b 955 858 845 838 897 804 b 982 929 973 877 982 903 b 979 953 982 937 981 945 b 999 992 982 968 986 979 b 1140 1045 1031 1024 1083 989 b 1168 1116 1161 1066 1168 1090 b 1138 1220 1168 1162 1145 1207 z',\n },\n brassFallRoughMedium: {\n x_min: 0,\n x_max: 811,\n y_min: 0,\n y_max: 852,\n ha: 852,\n o: 'm 30 1220 b 0 1116 23 1207 0 1162 b 27 1045 0 1090 7 1066 b 168 992 85 989 137 1024 b 189 953 181 979 186 968 b 186 929 187 945 186 937 b 213 858 186 903 194 877 b 354 806 271 804 323 838 b 374 768 367 793 372 782 b 372 743 373 759 372 752 b 399 672 372 717 380 691 b 540 621 456 618 508 652 b 560 582 553 608 557 596 b 557 557 559 573 557 566 b 585 487 557 531 566 505 b 726 435 642 431 694 467 b 746 396 739 422 743 410 b 743 372 744 387 743 380 b 770 301 743 346 752 320 b 912 249 828 245 880 281 b 932 210 924 236 929 225 b 929 186 930 202 929 194 b 956 115 929 160 937 134 b 1097 63 1014 59 1066 95 b 1119 17 1112 49 1116 35 b 1135 0 1119 10 1128 0 b 1168 104 1153 0 1168 91 b 1138 176 1168 128 1161 153 b 996 226 1102 212 1038 199 b 988 233 994 229 991 232 b 979 264 981 240 979 252 b 982 289 981 272 982 281 b 952 361 982 312 975 338 b 811 412 916 397 852 384 l 802 419 b 793 449 795 426 793 438 b 796 475 795 458 796 467 b 766 547 796 498 789 524 b 625 598 730 583 667 570 l 616 605 b 608 635 609 612 608 624 b 611 661 609 644 611 652 b 580 733 611 684 603 710 b 439 783 544 769 481 756 l 431 791 b 422 821 423 799 422 809 b 425 847 423 829 425 838 b 395 919 425 870 418 896 b 253 971 359 955 295 942 l 245 976 b 236 1007 238 985 236 995 b 239 1032 238 1015 239 1024 b 209 1104 239 1056 232 1081 b 68 1156 173 1140 109 1128 b 59 1164 63 1158 60 1161 b 50 1201 50 1172 50 1187 l 50 1207 b 39 1227 50 1212 46 1227 b 33 1225 37 1227 35 1227 b 30 1220 33 1224 33 1223 z',\n },\n brassBend: {\n x_min: 0,\n x_max: 392,\n y_min: 0,\n y_max: 282,\n ha: 282,\n o: 'm 282 0 b 552 72 369 0 456 23 b 564 92 560 75 564 84 l 564 383 b 541 406 564 395 554 406 b 518 383 528 406 518 395 l 518 107 b 282 46 435 65 357 46 b 46 107 207 46 130 65 l 46 383 b 23 406 46 395 36 406 b 0 383 10 406 0 395 l 0 92 b 13 72 0 84 4 75 b 282 0 108 23 196 0 z',\n },\n brassMuteClosed: {\n x_min: 0,\n x_max: 272,\n y_min: 0,\n y_max: 272,\n ha: 272,\n o: 'm 392 219 l 219 219 l 219 392 l 173 392 l 173 219 l 0 219 l 0 173 l 173 173 l 173 0 l 219 0 l 219 173 l 392 173 z',\n },\n brassMuteOpen: {\n x_min: 0,\n x_max: 304,\n y_min: 0,\n y_max: 304,\n ha: 304,\n o: 'm 219 0 b 438 219 340 0 438 98 b 219 438 438 340 340 438 b 0 219 98 438 0 340 b 219 0 0 98 98 0 z m 219 392 b 392 219 314 392 392 314 b 219 46 392 124 314 46 b 46 219 124 46 46 124 b 219 392 46 314 124 392 z',\n },\n brassFlip: {\n x_min: 0,\n x_max: 379,\n y_min: 0,\n y_max: 282,\n ha: 282,\n o: 'm 523 0 b 541 9 530 0 536 3 b 546 22 544 13 546 17 b 536 42 546 29 541 36 l 36 402 b 23 406 33 405 27 406 b 0 383 12 406 0 395 l 0 23 b 23 0 0 10 10 0 b 46 23 36 0 46 10 l 46 337 l 508 4 b 523 0 513 1 517 0 z',\n },\n brassJazzTurn: {\n x_min: 0,\n x_max: 620,\n y_min: 0,\n y_max: 245,\n ha: 245,\n o: 'm 792 190 b 765 176 780 179 772 176 b 740 190 755 176 747 183 b 629 325 727 202 644 312 b 593 347 616 338 605 347 b 562 334 583 346 575 344 b 528 298 549 323 539 310 l 406 176 b 389 168 406 176 399 168 b 374 176 384 168 379 170 b 245 325 360 192 245 325 b 200 353 232 343 219 351 b 168 340 190 353 181 350 l 17 156 b 0 121 10 147 0 132 b 16 107 0 114 4 108 b 84 143 26 107 76 137 b 118 160 92 150 108 160 b 141 143 125 160 131 154 b 265 10 147 135 253 24 b 294 0 271 3 282 0 b 321 7 305 0 315 3 b 498 160 321 7 478 158 b 521 143 505 160 513 154 b 647 10 528 135 635 24 b 675 0 652 3 664 0 b 703 7 687 0 697 3 b 874 186 713 16 855 164 b 893 220 881 196 893 212 b 873 245 890 235 883 243 b 796 194 847 245 815 213 z',\n },\n brassSmear: {\n x_min: 1,\n x_max: 306,\n y_min: 0,\n y_max: 170,\n ha: 170,\n o: 'm 193 79 b 308 0 219 50 264 0 b 439 117 396 0 438 102 b 439 120 439 118 439 118 l 441 125 b 441 128 441 127 441 127 b 433 141 441 135 439 141 b 416 130 429 141 423 137 b 343 94 390 107 370 94 b 269 153 315 94 294 121 l 265 158 b 144 245 239 190 180 245 b 6 134 62 245 10 143 b 1 114 3 125 1 118 b 7 107 1 108 4 107 b 36 122 13 107 22 112 b 92 151 55 137 65 151 b 183 89 125 151 161 112 b 189 84 184 88 187 86 z',\n },\n stringsDownBow: {\n x_min: 0,\n x_max: 312,\n y_min: 0,\n y_max: 318,\n ha: 318,\n o: 'm 37 458 b 0 420 17 458 0 441 l 0 17 b 17 0 0 7 9 0 l 37 0 b 55 17 46 0 55 7 l 55 253 b 225 278 55 269 140 278 b 395 253 310 278 395 269 l 395 17 b 413 0 395 7 403 0 l 432 0 b 449 17 441 0 449 7 l 449 420 b 412 458 449 441 432 458 z',\n },\n stringsUpBow: {\n x_min: 1,\n x_max: 249,\n y_min: 1,\n y_max: 495,\n ha: 494,\n o: 'm 181 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 z',\n },\n stringsHarmonic: {\n x_min: 0,\n x_max: 200,\n y_min: 0,\n y_max: 200,\n ha: 200,\n o: 'm 288 144 b 144 288 288 225 223 288 b 0 144 65 288 0 225 b 144 0 0 65 65 0 b 288 144 223 0 288 65 z m 144 249 b 249 144 203 249 249 203 b 144 39 249 86 203 39 b 39 144 86 39 39 86 b 144 249 39 203 86 249 z',\n },\n pluckedSnapPizzicatoAbove: {\n x_min: 0,\n x_max: 200,\n y_min: 0,\n y_max: 300,\n ha: 300,\n o: 'm 0 144 b 144 0 0 63 65 0 b 288 144 223 0 288 63 b 167 285 288 215 235 275 l 167 432 l 121 432 l 121 285 b 0 144 52 275 0 215 z m 121 246 l 121 144 l 167 144 l 167 246 b 249 144 213 236 249 193 b 144 39 249 85 202 39 b 39 144 85 39 39 85 b 121 246 39 193 73 236 z',\n },\n pluckedSnapPizzicatoBelow: {\n x_min: 0,\n x_max: 200,\n y_min: 0,\n y_max: 300,\n ha: 300,\n o: 'm 288 288 b 144 432 288 369 223 432 b 0 288 65 432 0 369 b 121 145 0 216 52 157 l 121 0 l 167 0 l 167 145 b 288 288 235 157 288 216 z m 167 186 l 167 288 l 121 288 l 121 186 b 39 288 75 196 39 238 b 144 393 39 347 86 393 b 249 288 203 393 249 347 b 167 186 249 238 215 196 z',\n },\n pluckedLeftHandPizzicato: {\n x_min: 0,\n x_max: 272,\n y_min: 0,\n y_max: 272,\n ha: 272,\n o: 'm 392 219 l 219 219 l 219 392 l 173 392 l 173 219 l 0 219 l 0 173 l 173 173 l 173 0 l 219 0 l 219 173 l 392 173 z',\n },\n keyboardPedalPed: {\n x_min: 0,\n x_max: 1019,\n y_min: -8,\n y_max: 555,\n ha: 563,\n o: 'm 413 799 b 179 749 327 798 261 789 b 0 517 107 713 0 632 b 122 376 0 454 37 376 b 240 540 189 376 240 452 b 225 586 240 579 233 586 b 204 549 213 586 212 573 b 138 480 199 527 181 480 b 85 549 96 480 85 517 l 85 554 b 353 762 89 690 230 762 b 373 752 364 762 373 760 b 351 708 373 740 360 723 b 274 546 330 675 274 585 b 353 416 274 508 333 444 b 412 304 372 390 412 351 b 382 228 412 275 403 256 b 334 190 363 202 361 200 b 147 29 271 167 147 88 b 196 -12 147 4 171 -12 b 343 108 239 -12 279 33 l 363 132 b 387 150 370 141 376 150 b 543 -4 445 150 467 -4 b 631 42 567 -4 586 0 l 668 78 b 685 89 674 84 680 89 b 696 75 688 89 690 86 b 809 -9 717 29 753 -9 b 946 66 854 -9 894 13 b 988 107 971 92 981 107 b 1002 89 994 107 996 99 b 1152 -4 1030 36 1077 -4 b 1329 248 1238 -4 1329 82 b 792 717 1329 556 1047 665 b 766 720 785 719 775 720 b 747 703 752 720 747 711 b 780 680 747 693 756 685 b 1223 222 1028 621 1223 504 b 1152 39 1223 122 1205 39 b 1073 229 1104 39 1073 132 b 1132 423 1073 314 1086 377 b 1142 442 1140 432 1142 436 b 1126 458 1142 451 1136 458 b 1093 446 1119 458 1109 455 b 975 216 1022 408 975 337 l 975 190 b 943 121 975 160 972 150 b 852 69 899 76 877 69 b 776 148 816 69 786 117 b 773 163 775 154 773 158 b 786 177 773 167 776 170 l 801 187 b 937 366 867 235 937 284 b 844 454 937 422 900 454 b 665 217 711 454 665 331 b 671 153 665 197 667 176 l 671 147 b 662 134 671 143 670 140 b 605 111 639 118 625 111 b 521 160 572 111 546 135 b 451 203 497 184 474 197 b 426 212 435 207 426 206 b 436 230 426 216 429 220 b 510 389 464 269 510 340 b 429 521 510 435 480 462 b 369 629 387 570 369 599 b 402 720 369 648 384 691 b 462 763 425 759 446 763 b 611 624 540 763 611 704 b 564 575 611 592 590 575 b 501 602 540 575 520 582 b 474 622 492 611 487 622 b 459 603 465 622 459 615 b 603 471 459 570 510 471 b 711 588 670 471 711 524 b 422 799 711 742 554 799 z m 815 403 b 848 343 838 403 848 383 b 780 226 848 295 824 261 b 765 217 773 220 768 217 b 759 228 762 217 759 220 b 756 282 757 245 756 262 b 815 403 756 346 772 403 z m 1405 124 b 1344 62 1369 124 1344 98 b 1405 0 1344 26 1369 0 b 1467 62 1441 0 1467 26 b 1405 124 1467 98 1441 124 z',\n },\n keyboardPedalUp: {\n x_min: 0,\n x_max: 450,\n y_min: 0,\n y_max: 450,\n ha: 450,\n o: 'm 582 396 b 516 367 554 396 533 384 b 465 340 495 347 487 340 l 458 340 b 412 377 432 340 412 348 b 432 409 412 387 419 396 l 438 415 b 490 429 451 428 464 429 b 575 501 534 429 575 452 b 501 575 575 541 541 575 b 429 490 452 575 429 534 b 415 438 429 464 428 451 l 409 432 b 377 412 396 419 387 412 b 340 458 348 412 340 432 l 340 465 b 367 516 340 487 347 495 b 396 582 384 533 396 554 b 324 648 396 625 363 648 b 252 582 285 648 252 625 b 281 516 252 554 264 533 b 308 465 301 495 308 487 l 308 458 b 271 412 308 432 300 412 b 239 432 261 412 252 419 l 233 438 b 219 490 220 451 219 464 b 147 575 219 534 196 575 b 73 501 107 575 73 541 b 158 429 73 452 114 429 b 210 415 184 429 197 428 l 216 409 b 236 377 229 396 236 387 b 190 340 236 348 216 340 l 183 340 b 132 367 161 340 153 347 b 66 396 115 384 94 396 b 0 324 23 396 0 363 b 66 252 0 285 23 252 b 132 281 94 252 115 264 b 183 308 153 301 161 308 l 190 308 b 236 271 216 308 236 300 b 216 239 236 261 229 252 l 210 233 b 158 219 197 220 184 219 b 73 147 114 219 73 196 b 147 73 73 107 107 73 b 219 158 196 73 219 114 b 233 210 219 184 220 197 l 239 216 b 271 236 252 229 261 236 b 308 190 300 236 308 216 l 308 183 b 281 132 308 161 301 153 b 252 66 264 115 252 94 b 324 0 252 23 285 0 b 396 66 363 0 396 23 b 367 132 396 94 384 115 b 340 183 347 153 340 161 l 340 190 b 377 236 340 216 348 236 b 409 216 387 236 396 229 l 415 210 b 429 158 428 197 429 184 b 501 73 429 114 452 73 b 575 147 541 73 575 107 b 490 219 575 196 534 219 b 438 233 464 219 451 220 l 432 239 b 412 271 419 252 412 261 b 458 308 412 300 432 308 l 465 308 b 516 281 487 308 495 301 b 582 252 533 264 554 252 b 648 324 625 252 648 285 b 582 396 648 363 625 396 z m 324 271 b 271 324 291 271 271 291 b 324 377 271 357 291 377 b 377 324 357 377 377 357 b 324 271 377 291 357 271 z',\n },\n pictChokeCymbal: {\n x_min: 1,\n x_max: 152,\n y_min: 2,\n y_max: 251,\n ha: 249,\n o: 'm 104 361 b 1 271 42 361 1 321 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 17 32 29 26 26 l 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 z',\n },\n wiggleArpeggiatoUp: {\n x_min: -33,\n x_max: 292,\n y_min: 0,\n y_max: 119,\n ha: 119,\n o: 'm 130 171 b -39 68 16 171 -14 91 b -48 53 -45 62 -48 58 b -29 42 -48 46 -39 42 b -10 46 -23 42 -16 43 b 56 63 12 56 29 63 b 248 0 121 63 135 0 b 419 127 361 0 410 104 b 420 132 420 130 420 131 b 412 140 420 137 416 140 b 386 130 403 140 392 134 b 334 107 367 117 353 107 b 318 108 330 107 324 107 b 240 138 289 112 265 128 b 130 171 209 153 168 171 z',\n },\n arrowheadBlackUp: {\n x_min: 0,\n x_max: 228,\n y_min: 0,\n y_max: 299,\n ha: 299,\n o: 'm 166 431 b 0 20 111 274 0 30 b 16 0 0 12 6 0 l 17 1 b 166 50 43 16 160 50 b 310 1 171 50 289 13 l 311 0 b 328 20 321 0 328 12 b 166 431 328 30 220 274 z',\n },\n arrowheadBlackDown: {\n x_min: 0,\n x_max: 228,\n y_min: 0,\n y_max: 299,\n ha: 299,\n o: 'm 166 0 b 328 410 220 157 328 400 b 311 431 328 419 321 431 l 310 429 b 166 380 289 418 171 380 b 17 429 160 380 43 415 l 16 431 b 0 410 6 431 0 419 b 166 0 0 400 111 157 z',\n },\n arpeggiatoUp: {\n x_min: 1,\n x_max: 229,\n y_min: 7,\n y_max: 1511,\n ha: 1504,\n o: 'm 219 1848 l 330 1848 l 164 2176 l 1 1848 l 121 1848 b 92 1778 115 1822 101 1800 l 89 1773 b 59 1668 75 1741 59 1702 b 96 1555 59 1614 76 1580 b 99 1551 98 1554 99 1551 l 102 1547 b 124 1496 115 1531 124 1515 b 122 1482 124 1492 124 1488 b 92 1404 118 1453 102 1428 b 59 1293 78 1372 59 1332 b 105 1172 59 1234 81 1198 b 124 1120 118 1155 124 1143 l 122 1113 b 122 1110 122 1113 122 1112 b 92 1032 118 1081 102 1057 b 59 922 78 1001 59 960 b 115 792 59 855 86 816 b 124 760 121 782 124 773 b 122 744 124 756 124 750 b 92 667 118 716 102 693 b 59 556 78 635 59 595 b 108 433 59 495 82 458 b 124 389 117 420 124 408 b 122 374 124 384 124 379 b 92 298 118 346 102 323 l 89 292 b 59 186 75 261 59 222 b 163 19 59 73 140 42 b 177 10 168 13 173 10 b 189 29 184 10 189 19 b 184 48 189 35 187 42 b 167 114 174 69 167 85 b 230 305 167 179 229 193 b 181 423 230 357 209 396 b 167 484 173 442 167 458 b 230 675 167 547 229 563 b 179 796 230 729 206 769 b 167 850 171 812 167 827 b 230 1040 167 913 229 929 b 183 1158 230 1092 209 1130 b 167 1220 173 1178 167 1194 b 230 1411 167 1284 229 1300 b 186 1526 230 1462 210 1499 b 167 1594 176 1529 167 1584 b 230 1786 167 1659 229 1673 b 219 1848 230 1809 226 1829 z',\n },\n arpeggiatoDown: {\n x_min: 1,\n x_max: 229,\n y_min: -4,\n y_max: 1500,\n ha: 1504,\n o: 'm 219 323 b 230 384 226 341 230 361 b 167 576 229 497 167 511 b 186 644 167 586 176 641 b 230 759 210 671 230 708 b 167 950 229 870 167 886 b 183 1012 167 976 173 992 b 230 1130 209 1040 230 1079 b 167 1320 229 1241 167 1257 b 179 1374 167 1344 171 1358 b 230 1495 206 1401 230 1441 b 167 1686 229 1607 167 1623 b 181 1747 167 1712 173 1728 b 230 1865 209 1774 230 1813 b 167 2056 229 1977 167 1992 b 184 2123 167 2085 174 2101 b 189 2141 187 2128 189 2136 b 177 2160 189 2151 184 2160 b 163 2151 173 2160 168 2157 b 59 1984 140 2128 59 2097 b 89 1878 59 1948 75 1909 l 92 1872 b 122 1796 102 1848 118 1824 b 124 1781 124 1791 124 1786 b 108 1737 124 1763 117 1750 b 59 1614 82 1712 59 1675 b 92 1503 59 1575 78 1535 b 122 1426 102 1477 118 1454 b 124 1410 124 1420 124 1414 b 115 1378 124 1397 121 1388 b 59 1248 86 1354 59 1315 b 92 1138 59 1210 78 1169 b 122 1060 102 1113 118 1089 b 122 1057 122 1058 122 1058 l 124 1050 b 105 998 124 1027 118 1015 b 59 877 81 972 59 936 b 92 766 59 838 78 798 b 122 688 102 742 118 717 b 124 674 124 683 124 678 b 102 624 124 655 115 639 l 99 619 b 96 615 99 619 98 616 b 59 503 76 590 59 556 b 89 397 59 468 75 429 l 92 392 b 121 323 101 370 115 348 l 1 323 l 164 -6 l 330 323 z',\n },\n repeat1Bar: {\n x_min: 0,\n x_max: 532,\n y_min: -250,\n y_max: 279,\n ha: 529,\n o: 'm 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 675 -71 b 586 -161 626 -71 586 -111 b 675 -251 586 -210 626 -251 b 766 -161 726 -251 766 -210 b 675 -71 766 -111 726 -71 z',\n },\n repeat2Bars: {\n x_min: 0,\n x_max: 762,\n y_min: -250,\n y_max: 279,\n ha: 529,\n o: 'm 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 b 343 -360 331 -356 336 -360 l 485 -360 b 516 -340 498 -360 508 -348 z m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 1007 -71 b 917 -161 958 -71 917 -111 b 1007 -251 917 -210 958 -251 b 1097 -161 1057 -251 1097 -210 b 1007 -71 1097 -111 1057 -71 z',\n },\n repeat4Bars: {\n x_min: 0,\n x_max: 1232,\n y_min: -250,\n y_max: 279,\n ha: 529,\n o: 'm 1767 380 b 1774 395 1771 386 1774 390 b 1765 402 1774 399 1771 402 l 1613 402 b 1587 380 1604 402 1597 393 l 1012 -340 b 1008 -350 1009 -343 1008 -347 b 1020 -360 1008 -356 1012 -360 l 1162 -360 b 1192 -340 1175 -360 1185 -348 z m 1436 380 b 1443 395 1440 386 1443 390 b 1434 402 1443 399 1440 402 l 1282 402 b 1256 380 1273 402 1266 393 l 681 -340 b 677 -350 678 -343 677 -347 b 688 -360 677 -356 681 -360 l 831 -360 b 861 -340 844 -360 854 -348 z m 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 b 343 -360 331 -356 336 -360 l 485 -360 b 516 -340 498 -360 508 -348 z m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 1683 -71 b 1594 -161 1634 -71 1594 -111 b 1683 -251 1594 -210 1634 -251 b 1774 -161 1734 -251 1774 -210 b 1683 -71 1774 -111 1734 -71 z',\n },\n repeatBarSlash: {\n x_min: 0,\n x_max: 532,\n y_min: -250,\n y_max: 279,\n ha: 529,\n o: 'm 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z',\n },\n csymDiminished: {\n x_min: 0,\n x_max: 473,\n y_min: 0,\n y_max: 473,\n ha: 473,\n o: 'm 341 681 b 0 341 153 681 0 530 b 341 0 0 153 153 0 b 681 341 530 0 681 153 b 341 681 681 530 530 681 z m 341 618 b 618 341 495 618 618 495 b 341 63 618 189 494 63 b 63 341 187 63 63 187 b 341 618 63 494 189 618 z',\n },\n csymHalfDiminished: {\n x_min: -16,\n x_max: 488,\n y_min: -15,\n y_max: 489,\n ha: 504,\n o: 'm 703 660 l 658 704 l 557 603 b 340 681 498 652 422 681 b -1 341 151 681 -1 530 b 78 124 -1 259 29 183 l -23 23 l 22 -22 l 122 79 b 340 0 181 30 258 0 b 680 341 528 0 680 153 b 602 559 680 423 651 500 z m 62 341 b 340 618 62 494 187 618 b 513 559 403 618 464 598 l 122 168 b 62 341 84 217 62 278 z m 616 341 b 340 63 616 189 492 63 b 167 124 276 63 216 85 l 557 514 b 616 341 596 465 616 405 z',\n },\n csymAugmented: {\n x_min: 0,\n x_max: 395,\n y_min: 1,\n y_max: 396,\n ha: 395,\n o: 'm 569 318 l 317 318 l 317 570 l 253 570 l 253 318 l 0 318 l 0 255 l 253 255 l 253 1 l 317 1 l 317 255 l 569 255 z',\n },\n csymMajorSeventh: {\n x_min: 0,\n x_max: 558,\n y_min: 1,\n y_max: 477,\n ha: 476,\n o: 'm 402 687 l 0 1 l 804 1 z m 402 562 l 693 65 l 111 65 z',\n },\n csymMinor: {\n x_min: 0,\n x_max: 325,\n y_min: 216,\n y_max: 260,\n ha: 44,\n o: 'm 468 374 l 0 374 l 0 311 l 468 311 z',\n },\n csymParensLeftTall: {\n x_min: 1,\n x_max: 185,\n y_min: 0,\n y_max: 997,\n ha: 997,\n o: 'm 266 48 b 261 65 266 55 264 62 b 92 719 157 212 92 400 b 262 1371 92 1037 154 1228 b 266 1394 266 1378 266 1394 l 266 1424 b 264 1436 266 1431 266 1436 b 259 1434 262 1436 259 1434 b 1 719 84 1261 1 1011 b 259 1 1 429 79 177 b 264 0 261 0 262 0 b 266 9 265 0 266 6 z',\n },\n csymParensRightTall: {\n x_min: -20,\n x_max: 164,\n y_min: 0,\n y_max: 997,\n ha: 997,\n o: 'm -29 9 b -26 0 -29 6 -27 0 b -22 1 -24 0 -23 0 b 236 719 158 177 236 429 b -22 1434 236 1011 154 1261 b -26 1436 -22 1434 -24 1436 b -29 1424 -29 1436 -29 1431 l -29 1394 b -24 1371 -29 1394 -29 1378 b 145 719 84 1228 145 1037 b -23 65 145 400 81 212 b -29 48 -26 62 -29 55 z',\n },\n csymBracketLeftTall: {\n x_min: 0,\n x_max: 155,\n y_min: 0,\n y_max: 1000,\n ha: 1000,\n o: 'm 217 0 b 223 9 220 0 223 4 l 223 37 b 217 46 223 42 220 46 l 92 46 l 92 1394 l 217 1394 b 223 1403 220 1394 223 1398 l 223 1431 b 217 1440 223 1436 220 1440 l 6 1440 b 0 1436 3 1440 0 1439 l 0 4 b 6 0 0 1 3 0 z',\n },\n csymBracketRightTall: {\n x_min: 1,\n x_max: 156,\n y_min: 0,\n y_max: 1000,\n ha: 1000,\n o: 'm 219 0 b 225 4 222 0 225 1 l 225 1436 b 219 1440 225 1439 222 1440 l 7 1440 b 1 1431 4 1440 1 1436 l 1 1403 b 7 1394 1 1398 4 1394 l 132 1394 l 132 46 l 7 46 b 1 37 4 46 1 42 l 1 9 b 7 0 1 4 4 0 z',\n },\n csymParensLeftVeryTall: {\n x_min: 0,\n x_max: 122,\n y_min: 0,\n y_max: 993,\n ha: 993,\n o: 'm 176 32 b 171 49 176 39 174 46 b 60 716 104 194 60 399 b 173 1382 60 1032 101 1241 b 176 1405 176 1390 176 1405 l 176 1427 b 173 1430 176 1428 174 1430 b 0 716 40 1297 0 978 b 170 3 0 428 50 179 b 171 0 170 1 170 0 b 176 6 173 0 176 4 z',\n },\n csymParensRightVeryTall: {\n x_min: -15,\n x_max: 107,\n y_min: 0,\n y_max: 993,\n ha: 993,\n o: 'm -22 6 b -17 0 -22 4 -19 0 b -16 3 -16 0 -16 1 b 154 716 104 179 154 428 b -19 1430 154 978 114 1297 b -22 1427 -20 1430 -22 1428 l -22 1405 b -19 1382 -22 1405 -22 1390 b 94 716 53 1241 94 1032 b -17 49 94 399 50 194 b -22 32 -20 46 -22 39 z',\n },\n csymDiagonalArrangementSlash: {\n x_min: 0,\n x_max: 999,\n y_min: 0,\n y_max: 1000,\n ha: 1000,\n o: 'm 1439 1380 l 1377 1440 l 0 60 l 62 0 z',\n },\n accSagittal5v7KleismaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -35 b 135 -112 68 -86 99 -112 b 225 68 194 -112 225 -53 l 180 68 b 144 -4 180 20 168 -4 b 122 0 138 -4 131 -3 b 23 248 86 14 52 96 l 0 248 z',\n },\n accSagittal5v7KleismaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 b 122 0 52 -96 86 -14 b 144 4 131 3 138 4 b 180 -68 168 4 180 -20 l 225 -68 b 135 112 225 53 194 112 b 45 35 99 112 68 86 l 45 517 l 0 517 z',\n },\n accSagittal5CommaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 225 -517 l 225 248 l 203 248 l 0 -112 l 0 -284 l 180 33 l 180 -517 z',\n },\n accSagittal5CommaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 180 517 l 180 -33 l 0 284 l 0 112 l 203 -248 l 225 -248 l 225 517 z',\n },\n accSagittal7CommaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 248 l 0 -517 l 45 -517 l 45 112 l 89 112 b 180 -68 150 112 180 53 l 180 -248 l 225 -248 l 225 68 b 135 248 225 187 194 248 z',\n },\n accSagittal7CommaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 135 -248 b 225 -68 194 -248 225 -187 l 225 248 l 180 248 l 180 68 b 89 -112 180 -53 150 -112 l 45 -112 l 45 517 l 0 517 l 0 -248 z',\n },\n accSagittal25SmallDiesisUp: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -157 l 0 -259 l 315 -89 l 315 -517 l 360 -517 l 360 248 l 337 248 l 0 68 l 0 -33 l 315 135 l 315 10 z',\n },\n accSagittal25SmallDiesisDown: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 315 -10 l 315 -135 l 0 33 l 0 -68 l 337 -248 l 360 -248 l 360 517 l 315 517 l 315 89 l 0 259 l 0 157 z',\n },\n accSagittal35MediumDiesisUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -68 330 112 360 53 l 360 -248 l 405 -248 l 405 68 b 315 248 405 187 374 248 l 203 248 l 0 -112 z',\n },\n accSagittal35MediumDiesisDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 203 -248 l 315 -248 b 405 -68 374 -248 405 -187 l 405 248 l 360 248 l 360 68 b 271 -112 360 -53 330 -112 l 225 -112 l 225 517 l 180 517 l 180 -33 l 0 284 z',\n },\n accSagittal11MediumDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 225 53 l 225 -517 l 271 -517 l 271 53 l 495 -248 l 495 -89 l 248 248 l 0 -89 l 0 -248 z',\n },\n accSagittal11MediumDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 248 l 0 89 l 248 -248 l 495 89 l 495 248 l 271 -53 l 271 517 l 225 517 l 225 -53 z',\n },\n accSagittal11LargeDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 112 l 315 112 b 449 -68 405 112 449 53 l 449 -248 l 495 -248 l 495 68 b 360 248 495 187 449 248 l 135 248 b 0 68 45 248 0 187 z',\n },\n accSagittal11LargeDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 360 -248 b 495 -68 449 -248 495 -187 l 495 248 l 449 248 l 449 68 b 315 -112 449 -53 405 -112 l 271 -112 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittal35LargeDiesisUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 l 540 112 l 540 274 l 271 -58 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittal35LargeDiesisDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 l 540 112 l 540 274 l 269 -58 l 269 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittalSharp25SDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 112 -112 0 -53 36 -112 l 135 -112 l 135 -517 l 180 -517 l 180 -89 b 248 26 206 -65 229 -27 b 315 -89 264 -27 287 -65 l 315 -517 l 360 -517 l 360 -112 l 383 -112 b 495 68 458 -112 495 -53 l 449 68 b 399 -4 449 20 433 -4 b 248 248 297 -4 261 171 b 122 0 216 96 176 14 b 94 -4 112 -3 102 -4 b 45 68 60 -4 45 20 z',\n },\n accSagittalFlat25SUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 94 4 45 -20 60 4 b 122 0 102 4 112 3 b 248 -248 176 -14 216 -96 b 399 4 261 -171 297 4 b 449 -68 433 4 449 -20 l 495 -68 b 383 112 495 53 458 112 l 360 112 l 360 517 l 315 517 l 315 89 b 248 -26 287 65 264 27 b 180 89 229 27 206 65 l 180 517 l 135 517 l 135 112 l 112 112 b 0 -68 36 112 0 53 z',\n },\n accSagittalSharp7CDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 112 l 89 112 b 180 104 124 112 154 109 l 180 -517 l 225 -517 l 225 89 b 315 -68 285 60 315 9 l 315 -248 l 360 -248 l 360 68 b 135 248 360 187 285 248 l 0 248 z',\n },\n accSagittalFlat7CUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 135 -248 b 360 -68 285 -248 360 -187 l 360 248 l 315 248 l 315 68 b 225 -89 315 -9 285 -60 l 225 517 l 180 517 l 180 -104 b 89 -112 154 -109 124 -112 l 45 -112 l 45 517 l 0 517 z',\n },\n accSagittalSharp5CDown: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -517 l 45 71 l 180 -56 l 180 -517 l 225 -517 l 225 -98 l 405 -268 l 405 -112 l 23 248 l 0 248 l 0 -517 z',\n },\n accSagittalFlat5CUp: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 517 l 0 -248 l 23 -248 l 405 112 l 405 268 l 225 98 l 225 517 l 180 517 l 180 56 l 45 -71 l 45 517 z',\n },\n accSagittalSharp5v7kDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -276 l 135 -82 l 135 -517 l 180 -517 l 180 -17 l 271 112 l 315 112 l 315 -517 l 360 -517 l 360 107 b 449 -68 420 89 449 30 l 449 -248 l 495 -248 l 495 68 b 360 248 495 189 449 248 l 248 248 z',\n },\n accSagittalFlat5v7kUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 248 -248 l 360 -248 b 495 -68 449 -248 495 -189 l 495 248 l 449 248 l 449 68 b 360 -107 449 -30 420 -89 l 360 517 l 315 517 l 315 -112 l 271 -112 l 180 17 l 180 517 l 135 517 l 135 82 l 0 276 l 0 112 z',\n },\n accSagittalSharp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 180 -53 l 180 -517 l 225 -517 l 225 0 l 292 85 l 360 0 l 360 -517 l 405 -517 l 405 -53 l 585 -274 l 585 -112 l 292 248 l 0 -112 l 0 -274 z',\n },\n accSagittalFlat: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 274 l 0 112 l 292 -248 l 585 112 l 585 274 l 405 53 l 405 517 l 360 517 l 360 0 l 292 -85 l 225 0 l 225 517 l 180 517 l 180 53 z',\n },\n accSagittalSharp5v7kUp: {\n x_min: 0,\n x_max: 312,\n y_min: -361,\n y_max: 172,\n ha: 533,\n o: 'm 45 -517 l 45 -10 b 135 -92 68 -48 98 -75 l 135 -520 l 180 -520 l 180 -108 b 248 -115 203 -112 225 -115 b 271 -112 256 -115 264 -115 l 271 -517 l 315 -517 l 315 -107 b 449 68 405 -89 449 -30 l 405 68 b 297 -4 405 19 369 -4 b 23 248 131 -4 56 85 l 0 248 l 0 -517 z',\n },\n accSagittalFlat5v7kDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 361,\n ha: 533,\n o: 'm 0 517 l 0 -248 l 23 -248 b 297 4 56 -85 131 4 b 405 -68 369 4 405 -19 l 449 -68 b 315 107 449 30 405 89 l 315 517 l 271 517 l 271 112 b 248 115 264 115 256 115 b 180 108 225 115 203 112 l 180 520 l 135 520 l 135 92 b 45 10 98 75 68 48 l 45 517 z',\n },\n accSagittalSharp5CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -266 l 135 -153 l 135 -517 l 180 -517 l 180 -115 l 271 -39 l 271 -517 l 315 -517 l 315 0 l 405 75 l 405 -517 l 449 -517 l 449 248 l 428 248 l 0 -112 z',\n },\n accSagittalFlat5CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 428 -248 l 449 -248 l 449 517 l 405 517 l 405 -75 l 315 0 l 315 517 l 271 517 l 271 39 l 180 115 l 180 517 l 135 517 l 135 153 l 0 266 z',\n },\n accSagittalSharp7CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 112 l 135 112 l 135 -517 l 180 -517 l 180 108 b 271 89 213 105 243 99 l 271 -517 l 315 -517 l 315 73 b 405 -68 374 45 405 -3 l 405 -248 l 449 -248 l 449 68 b 135 248 449 187 346 248 l 0 248 z',\n },\n accSagittalFlat7CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 135 -248 b 449 -68 346 -248 449 -187 l 449 248 l 405 248 l 405 68 b 315 -73 405 3 374 -45 l 315 517 l 271 517 l 271 -89 b 180 -108 243 -99 213 -105 l 180 517 l 135 517 l 135 -112 l 45 -112 l 45 517 l 0 517 z',\n },\n accSagittalSharp25SUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -30 l 495 143 l 495 14 l 0 -157 l 0 -255 l 225 -177 l 225 -517 l 271 -517 l 271 -161 l 360 -130 l 360 -517 l 405 -517 l 405 -115 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 517 248 l 0 68 z',\n },\n accSagittalFlat25SDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 l 517 -248 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 115 l 405 517 l 360 517 l 360 130 l 271 161 l 271 517 l 225 517 l 225 177 l 0 255 l 0 157 l 495 -14 l 495 -143 l 0 30 z',\n },\n accSagittalSharp35MUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -274 l 135 -108 l 135 -517 l 180 -517 l 180 -53 l 271 58 l 271 -517 l 315 -517 l 315 112 l 360 112 b 405 109 376 112 390 112 l 405 -517 l 449 -517 l 449 96 b 540 -68 510 72 540 17 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 z',\n },\n accSagittalFlat35MDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 292 -248 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 449 -96 540 -17 510 -72 l 449 517 l 405 517 l 405 -109 b 360 -112 390 -112 376 -112 l 315 -112 l 315 517 l 271 517 l 271 -58 l 180 53 l 180 517 l 135 517 l 135 108 l 0 274 l 0 112 z',\n },\n accSagittalSharp11MUp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -271 l 180 -79 l 180 -517 l 225 -517 l 225 -30 l 315 65 l 315 -517 l 360 -517 l 360 65 l 449 -30 l 449 -517 l 495 -517 l 495 -79 l 675 -271 l 675 -112 l 337 248 z',\n },\n accSagittalFlat11MDown: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 337 -248 l 675 112 l 675 271 l 495 79 l 495 517 l 449 517 l 449 30 l 360 -65 l 360 517 l 315 517 l 315 -65 l 225 30 l 225 517 l 180 517 l 180 79 l 0 271 l 0 112 z',\n },\n accSagittalSharp11LUp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 112 l 449 112 l 449 -517 l 495 -517 l 495 104 b 631 -68 585 82 631 26 l 631 -248 l 675 -248 l 675 68 b 449 248 675 187 600 248 l 225 248 b 0 68 75 248 0 187 z',\n },\n accSagittalFlat11LDown: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 449 -248 b 675 -68 600 -248 675 -187 l 675 248 l 631 248 l 631 68 b 495 -104 631 -26 585 -82 l 495 517 l 449 517 l 449 -112 l 360 -112 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z',\n },\n accSagittalSharp35LUp: {\n x_min: 0,\n x_max: 500,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 71 l 452 -17 l 452 -517 l 495 -517 l 495 -56 l 720 -268 l 720 -112 l 337 248 l 225 248 b 0 68 75 248 0 187 z',\n },\n accSagittalFlat35LDown: {\n x_min: 0,\n x_max: 500,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 l 720 112 l 720 268 l 495 56 l 495 517 l 452 517 l 452 17 l 360 -71 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z',\n },\n accSagittalDoubleSharp25SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 135 -112 0 -53 45 -112 b 243 -62 180 -112 215 -95 l 89 -503 l 143 -517 l 292 -82 l 445 -517 l 495 -503 l 343 -62 b 449 -112 372 -95 408 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 315 148 b 112 -4 274 148 236 -4 b 45 68 68 -4 45 20 z',\n },\n accSagittalDoubleFlat25SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 112 4 45 -20 68 4 b 292 -248 236 4 274 -148 b 475 4 315 -148 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 b 343 62 408 112 372 95 l 495 503 l 445 517 l 292 82 l 143 517 l 89 503 l 243 62 b 135 112 215 95 180 112 b 0 -68 45 112 0 53 z',\n },\n accSagittalDoubleSharp7CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -503 l 52 -517 l 203 -82 l 354 -517 l 405 -503 l 230 0 l 271 108 b 495 -68 420 92 495 35 l 495 -248 l 540 -248 l 540 68 b 225 248 540 187 435 248 l 89 248 l 89 112 l 135 112 l 174 0 z m 213 112 l 203 82 l 192 112 z',\n },\n accSagittalDoubleFlat7CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 174 0 l 135 -112 l 89 -112 l 89 -248 l 225 -248 b 540 -68 435 -248 540 -187 l 540 248 l 495 248 l 495 68 b 271 -108 495 -35 420 -92 l 230 0 l 405 503 l 354 517 l 203 82 l 52 517 l 0 503 z m 192 -112 l 203 -82 l 213 -112 z',\n },\n accSagittalDoubleSharp5CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 405 -503 l 230 0 l 232 4 l 585 -264 l 585 -112 l 112 248 l 89 248 l 89 112 l 151 68 l 174 0 l 0 -503 l 52 -517 l 203 -82 l 354 -517 z',\n },\n accSagittalDoubleFlat5CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 354 517 l 203 82 l 52 517 l 0 503 l 174 0 l 151 -68 l 89 -112 l 89 -248 l 112 -248 l 585 112 l 585 264 l 232 -4 l 230 0 l 405 503 z',\n },\n accSagittalDoubleSharp5v7kDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -274 l 252 35 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 360 112 b 540 -68 480 112 540 53 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 l 0 -112 z',\n },\n accSagittalDoubleFlat5v7kUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 292 -248 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 360 -112 540 -53 480 -112 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 252 -35 l 0 274 z',\n },\n accSagittalDoubleSharp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 540 -503 l 366 0 l 380 45 l 675 -271 l 675 -112 l 337 248 l 0 -112 l 0 -271 l 295 45 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 z',\n },\n accSagittalDoubleFlat: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 295 -45 l 0 271 l 0 112 l 337 -248 l 675 112 l 675 271 l 380 -45 l 366 0 l 540 503 z',\n },\n accSagittal7v11KleismaUp: {\n x_min: 0,\n x_max: 219,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 68 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 -45 b 248 -112 200 -89 225 -112 b 315 68 292 -112 315 -53 l 271 68 b 248 -4 271 20 264 -4 b 236 0 245 -4 240 -3 b 157 248 213 14 187 96 b 78 0 127 96 101 14 b 65 -4 73 -3 68 -4 b 45 68 50 -4 45 20 l 0 68 b 68 -112 0 -53 23 -112 z',\n },\n accSagittal7v11KleismaDown: {\n x_min: 0,\n x_max: 219,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 68 112 b 0 -68 23 112 0 53 l 45 -68 b 65 4 45 -20 50 4 b 78 0 68 4 73 3 b 157 -248 101 -14 127 -96 b 236 0 187 -96 213 -14 b 248 4 240 3 245 4 b 271 -68 264 4 271 -20 l 315 -68 b 248 112 315 53 292 112 b 180 45 225 112 200 89 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 z',\n },\n accSagittal17CommaUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 -40 b 315 -118 248 -92 279 -118 b 405 62 374 -118 405 -59 l 360 62 b 324 -10 360 14 348 -10 b 302 -6 318 -10 311 -9 b 206 217 268 9 235 84 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z',\n },\n accSagittal17CommaDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 206 -217 b 302 6 235 -84 268 -9 b 324 10 311 9 318 10 b 360 -62 348 10 360 -14 l 405 -62 b 315 118 405 59 374 118 b 225 40 279 118 248 92 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal55CommaUp: {\n x_min: 0,\n x_max: 219,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 248 l 0 -517 l 45 -517 l 45 58 l 315 -274 l 315 -112 l 23 248 z',\n },\n accSagittal55CommaDown: {\n x_min: 0,\n x_max: 219,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 23 -248 l 315 112 l 315 274 l 45 -58 l 45 517 l 0 517 l 0 -248 z',\n },\n accSagittal7v11CommaUp: {\n x_min: 0,\n x_max: 188,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 248 l 135 248 b 0 68 45 248 0 187 z',\n },\n accSagittal7v11CommaDown: {\n x_min: 0,\n x_max: 188,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 271 -248 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittal5v11SmallDiesisUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 73 l 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 -40 b 360 -118 295 -92 325 -118 b 449 62 420 -118 449 -59 l 405 62 b 369 -10 405 14 393 -10 b 348 -6 363 -10 356 -9 b 251 217 312 9 279 84 l 248 248 l 135 248 b 0 73 45 248 0 189 z',\n },\n accSagittal5v11SmallDiesisDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -73 b 135 -248 0 -189 45 -248 l 248 -248 l 251 -217 b 348 6 279 -84 312 -9 b 369 10 356 9 363 10 b 405 -62 393 10 405 -14 l 449 -62 b 360 118 449 59 420 118 b 271 40 325 118 295 92 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittalSharp5v11SDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 242 37 203 -23 225 -3 b 315 -89 262 -23 285 -63 l 315 -517 l 360 -517 l 360 -112 l 383 -112 b 495 68 458 -112 495 -53 l 449 68 b 399 -4 449 20 433 -4 b 248 248 297 -4 261 171 b 157 68 222 127 192 68 l 89 68 b 0 -203 30 68 0 -23 z',\n },\n accSagittalFlat5v11SUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -127 b 399 4 261 -171 297 4 b 449 -68 433 4 449 -20 l 495 -68 b 383 112 495 53 458 112 l 360 112 l 360 517 l 315 517 l 315 89 b 242 -37 285 63 262 23 b 180 23 225 3 203 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z',\n },\n accSagittalSharp7v11CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -112 l 89 -517 l 135 -517 l 135 -95 b 206 37 163 -73 187 -30 b 271 -23 225 -3 248 -23 l 271 -517 l 315 -517 l 315 -23 l 383 -23 b 449 -203 428 -23 449 -84 l 495 -203 b 405 68 495 -23 465 68 l 292 68 b 203 248 258 68 228 127 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 20 l 0 68 b 89 -112 0 -52 30 -112 z',\n },\n accSagittalFlat7v11CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 112 b 0 -68 30 112 0 52 l 45 -68 b 81 3 45 -20 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 b 292 -68 228 -127 258 -68 l 405 -68 b 495 203 465 -68 495 23 l 449 203 b 383 23 449 84 428 23 l 315 23 l 315 517 l 271 517 l 271 23 b 206 -37 248 23 225 3 b 135 95 187 30 163 73 l 135 517 l 89 517 z',\n },\n accSagittalSharp55CDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -271 l 135 -125 l 135 -517 l 180 -517 l 180 -78 l 315 65 l 315 -517 l 360 -517 l 360 248 l 337 248 l 0 -112 z',\n },\n accSagittalFlat55CUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 337 -248 l 360 -248 l 360 517 l 315 517 l 315 -65 l 180 78 l 180 517 l 135 517 l 135 125 l 0 271 z',\n },\n accSagittalSharp17CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -248 l 45 -68 b 180 109 45 36 89 95 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -89 292 13 321 -55 l 360 -517 l 405 -517 l 405 -112 l 428 -112 b 540 68 504 -112 540 -53 l 495 68 b 445 -4 495 20 480 -4 b 292 248 343 -4 307 171 l 180 248 b 0 68 60 248 0 187 l 0 -248 z',\n },\n accSagittalFlat17CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 248 l 0 -68 b 180 -248 0 -187 60 -248 l 292 -248 b 445 4 307 -171 343 4 b 495 -68 480 4 495 -20 l 540 -68 b 428 112 540 53 504 112 l 405 112 l 405 517 l 360 517 l 360 89 b 271 -112 321 55 292 -13 l 225 -112 l 225 517 l 180 517 l 180 -109 b 45 68 89 -95 45 -36 l 45 248 z',\n },\n accSagittalSharp7v11kDown: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -32 l 405 138 l 405 13 l 0 -157 l 0 -256 l 225 -161 l 225 -517 l 271 -517 l 271 -144 l 405 -86 l 405 -517 l 449 -517 l 449 248 l 428 248 l 0 68 z',\n },\n accSagittalFlat7v11kUp: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 l 428 -248 l 449 -248 l 449 517 l 405 517 l 405 86 l 271 144 l 271 517 l 225 517 l 225 161 l 0 256 l 0 157 l 405 -13 l 405 -138 l 0 32 z',\n },\n accSagittalSharp7v11kUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 135 -112 l 135 -517 l 180 -517 l 180 -105 b 271 -23 217 -94 248 -65 l 271 -517 l 315 -517 l 315 -23 b 405 -105 337 -65 369 -94 l 405 -517 l 449 -517 l 449 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 315 148 b 112 -4 274 148 236 -4 b 45 68 68 -4 45 20 l 0 68 b 135 -112 0 -53 45 -112 z',\n },\n accSagittalFlat7v11kDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 135 112 b 0 -68 45 112 0 53 l 45 -68 b 112 4 45 -20 68 4 b 292 -248 236 4 274 -148 b 475 4 315 -148 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 l 449 517 l 405 517 l 405 105 b 315 23 369 94 337 65 l 315 517 l 271 517 l 271 23 b 180 105 248 65 217 94 l 180 517 l 135 517 z',\n },\n accSagittalSharp17CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 -23 b 405 -105 337 -65 369 -94 l 405 -517 l 449 -517 l 449 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 312 150 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalFlat17CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 b 475 4 312 -150 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 l 449 517 l 405 517 l 405 105 b 315 23 369 94 337 65 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp55CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -517 l 45 78 l 135 10 l 135 -517 l 180 -517 l 180 -23 l 271 -92 l 271 -517 l 315 -517 l 315 -127 l 495 -264 l 495 -112 l 23 248 l 0 248 l 0 -517 z',\n },\n accSagittalFlat55CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 517 l 0 -248 l 23 -248 l 495 112 l 495 264 l 315 127 l 315 517 l 271 517 l 271 92 l 180 23 l 180 517 l 135 517 l 135 -10 l 45 -78 l 45 517 z',\n },\n accSagittalSharp7v11CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 86 45 6 89 58 l 180 -517 l 225 -517 l 225 98 b 315 109 252 104 282 108 l 315 -517 l 360 -517 l 360 112 l 449 112 l 449 -517 l 495 -517 l 495 248 l 360 248 b 0 68 121 248 0 189 z',\n },\n accSagittalFlat7v11CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 360 -248 0 -189 121 -248 l 495 -248 l 495 517 l 449 517 l 449 -112 l 360 -112 l 360 517 l 315 517 l 315 -109 b 225 -98 282 -108 252 -104 l 225 517 l 180 517 l 180 -86 b 45 68 89 -58 45 -6 l 45 248 l 0 248 z',\n },\n accSagittalSharp5v11SUp: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 -23 b 449 -105 383 -65 415 -94 l 449 -517 l 495 -517 l 495 -112 b 631 68 585 -112 631 -53 l 585 68 b 520 -4 585 20 563 -4 b 337 248 396 -4 360 150 l 225 248 b 0 68 76 248 0 187 z',\n },\n accSagittalFlat5v11SDown: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 76 -248 l 337 -248 b 520 4 360 -150 396 4 b 585 -68 563 4 585 -20 l 631 -68 b 495 112 631 53 585 112 l 495 517 l 449 517 l 449 105 b 360 23 415 94 383 65 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z',\n },\n accSagittalDoubleSharp5v11SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 341 -60 b 449 -112 370 -95 405 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 312 150 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalDoubleFlat5v11SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 b 475 4 312 -150 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 b 341 60 405 112 370 95 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalDoubleSharp7v11CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 112 -112 b 193 -73 143 -112 170 -99 l 45 -501 l 95 -517 l 248 -81 l 397 -517 l 449 -503 l 275 0 l 278 4 b 337 -23 295 -13 315 -23 l 405 -23 b 495 -203 465 -23 495 -84 l 540 -203 b 428 68 540 -23 503 68 l 360 68 b 248 248 310 68 271 127 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 112 -112 0 -52 36 -112 z',\n },\n accSagittalDoubleFlat7v11CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 112 112 b 0 -68 36 112 0 52 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 b 360 -68 271 -127 310 -68 l 428 -68 b 540 203 503 -68 540 23 l 495 203 b 405 23 495 84 465 23 l 337 23 b 278 -4 315 23 295 13 l 275 0 l 449 503 l 397 517 l 248 81 l 95 517 l 45 501 l 193 73 b 112 112 170 99 143 112 z',\n },\n accSagittalDoubleSharp55CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 428 248 l 0 -112 l 0 -266 l 307 -7 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 386 59 l 449 112 l 449 248 z',\n },\n accSagittalDoubleFlat55CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 449 -248 l 449 -112 l 386 -59 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 307 7 l 0 266 l 0 112 l 428 -248 z',\n },\n accSagittalDoubleSharp17CDown: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -248 l 45 -68 b 271 112 45 53 120 112 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 387 -62 b 495 -112 416 -95 452 -112 b 631 68 585 -112 631 -53 l 585 68 b 520 -4 585 20 563 -4 b 337 248 396 -4 360 150 l 225 248 b 0 68 76 248 0 187 l 0 -248 z',\n },\n accSagittalDoubleFlat17CUp: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 248 l 0 -68 b 225 -248 0 -187 76 -248 l 337 -248 b 520 4 360 -150 396 4 b 585 -68 563 4 585 -20 l 631 -68 b 495 112 631 53 585 112 b 387 62 452 112 416 95 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 271 -112 b 45 68 120 -112 45 -53 l 45 248 z',\n },\n accSagittalDoubleSharp7v11kDown: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -30 l 366 96 l 399 0 l 392 -23 l 0 -157 l 0 -255 l 353 -135 l 225 -503 l 276 -517 l 428 -82 l 579 -517 l 631 -503 l 455 0 l 507 145 l 540 157 l 540 248 l 517 248 z m 416 115 l 442 124 l 428 82 z',\n },\n accSagittalDoubleFlat7v11kUp: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 517 -248 l 540 -248 l 540 -157 l 507 -145 l 455 0 l 631 503 l 579 517 l 428 82 l 276 517 l 225 503 l 353 135 l 0 255 l 0 157 l 392 23 l 399 0 l 366 -96 l 0 30 l 0 -68 z m 428 -82 l 442 -124 l 416 -115 z',\n },\n accSagittal23CommaUp: {\n x_min: 0,\n x_max: 188,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -4 b 68 -23 53 -17 60 -23 l 180 -23 b 225 -203 210 -23 225 -82 l 271 -203 b 206 68 271 -23 248 68 l 89 68 b 23 248 71 68 48 127 l 0 248 z',\n },\n accSagittal23CommaDown: {\n x_min: 0,\n x_max: 188,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 b 89 -68 48 -127 71 -68 l 206 -68 b 271 203 248 -68 271 23 l 225 203 b 180 23 225 82 210 23 l 68 23 b 45 4 60 23 53 17 l 45 517 l 0 517 z',\n },\n accSagittal5v19CommaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 248 l 203 248 b 86 112 151 157 112 112 b 45 157 59 112 45 127 l 0 157 b 76 23 0 72 26 27 l 0 -112 z',\n },\n accSagittal5v19CommaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 76 -23 b 0 -157 26 -27 0 -72 l 45 -157 b 86 -112 45 -127 59 -112 b 203 -248 112 -112 151 -157 l 225 -248 l 225 517 l 180 517 l 180 -33 l 0 284 z',\n },\n accSagittal5v23SmallDiesisUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 -4 b 248 -23 233 -17 240 -23 l 360 -23 b 405 -203 390 -23 405 -82 l 449 -203 b 386 68 449 -23 428 68 l 271 68 b 203 248 251 68 228 127 l 0 -112 z',\n },\n accSagittal5v23SmallDiesisDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 203 -248 b 271 -68 228 -127 251 -68 l 386 -68 b 449 203 428 -68 449 23 l 405 203 b 360 23 405 82 390 23 l 248 23 b 225 4 240 23 233 17 l 225 517 l 180 517 l 180 -33 l 0 284 z',\n },\n accSagittalSharp5v23SDown: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 6 b 89 -23 59 -13 73 -23 l 180 -23 l 180 -517 l 225 -517 l 225 -23 l 292 -23 b 360 -203 337 -23 360 -84 l 405 -203 b 315 68 405 -23 374 68 l 112 68 b 23 248 78 68 48 127 l 0 248 z',\n },\n accSagittalFlat5v23SUp: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 b 112 -68 48 -127 78 -68 l 315 -68 b 405 203 374 -68 405 23 l 360 203 b 292 23 360 84 337 23 l 225 23 l 225 517 l 180 517 l 180 23 l 89 23 b 45 -6 73 23 59 13 l 45 517 l 0 517 z',\n },\n accSagittalSharp5v19CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 89 -112 0 -52 30 -112 l 89 -517 l 135 -517 l 135 -95 b 225 112 173 -65 203 4 l 271 112 l 271 -517 l 315 -517 l 315 107 b 405 -68 374 89 405 30 l 405 -248 l 449 -248 l 449 68 b 315 248 449 189 405 248 l 203 248 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 23 z',\n },\n accSagittalFlat5v19CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 81 3 45 -23 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 l 315 -248 b 449 -68 405 -248 449 -189 l 449 248 l 405 248 l 405 68 b 315 -107 405 -30 374 -89 l 315 517 l 271 517 l 271 -112 l 225 -112 b 135 95 203 -4 173 65 l 135 517 l 89 517 l 89 112 b 0 -68 30 112 0 52 z',\n },\n accSagittalSharp23CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 135 -82 l 135 -517 l 180 -517 l 180 -17 l 239 68 b 315 -23 261 7 287 -23 l 315 -517 l 360 -517 l 360 -23 l 428 -23 b 495 -203 472 -23 495 -84 l 540 -203 b 449 68 540 -23 510 68 l 337 68 b 248 248 302 68 271 127 l 0 -112 l 0 -276 z',\n },\n accSagittalFlat23CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 276 l 0 112 l 248 -248 b 337 -68 271 -127 302 -68 l 449 -68 b 540 203 510 -68 540 23 l 495 203 b 428 23 495 84 472 23 l 360 23 l 360 517 l 315 517 l 315 23 b 239 -68 287 23 261 -7 l 180 17 l 180 517 l 135 517 l 135 82 z',\n },\n accSagittalSharp23CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 14 b 112 -23 63 -10 86 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 360 -23 b 449 -203 420 -23 449 -84 l 495 -203 b 383 68 495 -23 458 68 l 135 68 b 23 248 85 68 48 127 l 0 248 z',\n },\n accSagittalFlat23CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 b 135 -68 48 -127 85 -68 l 383 -68 b 495 203 458 -68 495 23 l 449 203 b 360 23 449 84 420 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 -14 86 23 63 10 l 45 517 l 0 517 z',\n },\n accSagittalSharp5v19CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -266 l 135 -153 l 135 -517 l 180 -517 l 180 -115 l 271 -39 l 271 -517 l 315 -517 l 315 0 l 405 75 l 405 -517 l 449 -517 l 449 248 l 428 248 b 130 68 285 127 186 68 b 45 157 73 68 45 98 l 0 157 b 112 -20 0 53 37 -6 z',\n },\n accSagittalFlat5v19CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 112 20 b 0 -157 37 6 0 -53 l 45 -157 b 130 -68 45 -98 73 -68 b 428 -248 186 -68 285 -127 l 449 -248 l 449 517 l 405 517 l 405 -75 l 315 0 l 315 517 l 271 517 l 271 39 l 180 115 l 180 517 l 135 517 l 135 153 l 0 266 l 0 112 z',\n },\n accSagittalSharp5v23SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 135 -108 l 135 -517 l 180 -517 l 180 -53 l 271 58 l 271 -517 l 315 -517 l 315 14 b 383 -23 334 -10 357 -23 l 405 -23 l 405 -517 l 449 -517 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 405 68 b 292 248 356 68 318 127 l 0 -112 l 0 -274 z',\n },\n accSagittalFlat5v23SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 274 l 0 112 l 292 -248 b 405 -68 318 -127 356 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 449 517 l 405 517 l 405 23 l 383 23 b 315 -14 357 23 334 10 l 315 517 l 271 517 l 271 -58 l 180 53 l 180 517 l 135 517 l 135 108 z',\n },\n accSagittalDoubleSharp5v23SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 52 -517 l 203 -81 l 354 -517 l 405 -503 l 239 -23 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 225 68 b 112 248 176 68 138 127 l 89 248 l 89 112 b 170 -14 109 45 135 0 l 0 -501 z',\n },\n accSagittalDoubleFlat5v23SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 501 l 170 14 b 89 -112 135 0 109 -45 l 89 -248 l 112 -248 b 225 -68 138 -127 176 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 239 23 l 405 503 l 354 517 l 203 81 l 52 517 z',\n },\n accSagittalDoubleSharp5v19CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 112 -112 0 -52 36 -112 b 193 -73 143 -112 170 -99 l 45 -501 l 95 -517 l 248 -81 l 397 -517 l 449 -501 l 275 0 l 315 112 b 495 -68 435 112 495 53 l 495 -248 l 540 -248 l 540 68 b 360 248 540 189 480 248 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 z',\n },\n accSagittalDoubleFlat5v19CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 360 -248 b 540 -68 480 -248 540 -189 l 540 248 l 495 248 l 495 68 b 315 -112 495 -53 435 -112 l 275 0 l 449 501 l 397 517 l 248 81 l 95 517 l 45 501 l 193 73 b 112 112 170 99 143 112 b 0 -68 36 112 0 52 z',\n },\n accSagittalDoubleSharp23CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 252 35 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 323 4 b 383 -23 340 -13 360 -23 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 405 68 b 292 248 356 68 318 127 l 0 -112 l 0 -274 z',\n },\n accSagittalDoubleFlat23CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 274 l 0 112 l 292 -248 b 405 -68 318 -127 356 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 383 23 b 323 -4 360 23 340 13 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 252 -35 z',\n },\n accSagittal19SchismaUp: {\n x_min: 0,\n x_max: 125,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 68 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 248 l 157 248 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 l 0 68 b 68 -112 0 -52 23 -112 z',\n },\n accSagittal19SchismaDown: {\n x_min: 0,\n x_max: 125,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 68 112 b 0 -68 23 112 0 52 l 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 l 180 -248 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 z',\n },\n accSagittal17KleismaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 248 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z',\n },\n accSagittal17KleismaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 225 -248 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal143CommaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -203 l 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 248 l 203 248 b 135 68 177 127 154 68 l 105 68 b 45 157 65 68 45 98 l 0 157 b 23 20 0 95 7 50 b 0 -203 7 -23 0 -98 z',\n },\n accSagittal143CommaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 23 -20 0 98 7 23 b 0 -157 7 -50 0 -95 l 45 -157 b 105 -68 45 -98 65 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 225 -248 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal11v49CommaUp: {\n x_min: 0,\n x_max: 188,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -292 b 89 -157 45 -203 60 -157 l 203 -157 b 225 -143 210 -157 217 -153 l 225 -517 l 271 -517 l 271 248 l 248 248 b 180 157 233 187 210 157 l 68 157 b 0 -68 23 157 0 82 l 45 -68 b 89 68 45 23 60 68 l 203 68 b 225 84 209 68 216 72 l 225 -36 b 180 -68 213 -58 199 -68 l 68 -68 b 0 -292 23 -68 0 -143 z',\n },\n accSagittal11v49CommaDown: {\n x_min: 0,\n x_max: 188,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 292 b 68 68 0 143 23 68 l 180 68 b 225 36 199 68 213 58 l 225 -84 b 203 -68 216 -72 209 -68 l 89 -68 b 45 68 60 -68 45 -23 l 0 68 b 68 -157 0 -82 23 -157 l 180 -157 b 248 -248 210 -157 233 -187 l 271 -248 l 271 517 l 225 517 l 225 143 b 203 157 217 153 210 157 l 89 157 b 45 292 60 157 45 203 z',\n },\n accSagittal19CommaUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 68 -112 0 -52 23 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 -4 b 203 -23 187 -17 196 -23 l 315 -23 b 360 -203 346 -23 360 -82 l 405 -203 b 341 68 405 -23 383 68 l 225 68 b 157 248 206 68 183 127 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 z',\n },\n accSagittal19CommaDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 b 225 -68 183 -127 206 -68 l 341 -68 b 405 203 383 -68 405 23 l 360 203 b 315 23 360 82 346 23 l 203 23 b 180 4 196 23 187 17 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 b 0 -68 23 112 0 52 z',\n },\n accSagittal7v19CommaUp: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 68 -112 0 -52 23 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 112 l 225 112 b 315 -68 285 112 315 53 l 315 -248 l 360 -248 l 360 68 b 271 248 360 187 330 248 l 157 248 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 z',\n },\n accSagittal7v19CommaDown: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 l 271 -248 b 360 -68 330 -248 360 -187 l 360 248 l 315 248 l 315 68 b 225 -112 315 -53 285 -112 l 180 -112 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 b 0 -68 23 112 0 52 z',\n },\n accSagittal49SmallDiesisUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -203 l 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -68 330 112 360 53 l 360 -248 l 405 -248 l 405 68 b 315 248 405 187 374 248 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z',\n },\n accSagittal49SmallDiesisDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 315 -248 b 405 -68 374 -248 405 -187 l 405 248 l 360 248 l 360 68 b 271 -112 360 -53 330 -112 l 225 -112 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal23SmallDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 58 l 495 -274 l 495 -112 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z',\n },\n accSagittal23SmallDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 495 112 l 495 274 l 225 -58 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal5v13MediumDiesisUp: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -259 l 315 -89 l 315 -517 l 360 -517 l 360 248 l 337 248 b 128 180 253 203 184 180 b 45 248 73 180 45 203 l 0 248 b 52 95 0 170 17 120 l 0 68 l 0 -33 l 315 135 l 315 10 l 0 -157 z',\n },\n accSagittal5v13MediumDiesisDown: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 157 l 315 -10 l 315 -135 l 0 33 l 0 -68 l 52 -95 b 0 -248 17 -120 0 -170 l 45 -248 b 128 -180 45 -203 73 -180 b 337 -248 184 -180 253 -203 l 360 -248 l 360 517 l 315 517 l 315 89 l 0 259 z',\n },\n accSagittal11v19MediumDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 -4 b 292 -23 278 -17 285 -23 l 405 -23 b 449 -203 435 -23 449 -82 l 495 -203 b 431 68 495 -23 472 68 l 315 68 b 248 248 295 68 271 127 l 135 248 b 0 68 45 248 0 187 l 0 -248 z',\n },\n accSagittal11v19MediumDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 248 l 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 b 315 -68 271 -127 295 -68 l 431 -68 b 495 203 472 -68 495 23 l 449 203 b 405 23 449 82 435 23 l 292 23 b 271 4 285 23 278 17 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 z',\n },\n accSagittal49MediumDiesisUp: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -68 l 0 -248 l 45 -248 l 315 -94 l 315 -517 l 360 -517 l 360 248 l 225 248 b 0 -68 75 248 0 143 z m 45 -68 b 225 112 45 53 105 112 l 315 112 l 315 10 l 45 -145 z',\n },\n accSagittal49MediumDiesisDown: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 68 b 225 -248 0 -143 75 -248 l 360 -248 l 360 517 l 315 517 l 315 94 l 45 248 l 0 248 z m 45 145 l 315 -10 l 315 -112 l 225 -112 b 45 68 105 -112 45 -53 z',\n },\n accSagittal5v49MediumDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -89 l 0 -248 l 225 53 l 225 -517 l 271 -517 l 271 53 l 495 -248 l 495 -89 l 248 248 b 89 89 170 143 118 89 b 45 157 60 89 45 112 l 0 157 b 68 3 0 68 23 16 z',\n },\n accSagittal5v49MediumDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 68 -3 b 0 -157 23 -16 0 -68 l 45 -157 b 89 -89 45 -112 60 -89 b 248 -248 118 -89 170 -143 l 495 89 l 495 248 l 271 -53 l 271 517 l 225 517 l 225 -53 l 0 248 l 0 89 z',\n },\n accSagittal49LargeDiesisUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -89 l 360 -248 l 405 -248 l 405 -68 b 180 248 405 143 330 248 l 0 248 z m 45 12 l 45 112 l 180 112 b 360 -68 300 112 360 53 l 360 -147 z',\n },\n accSagittal49LargeDiesisDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 180 -248 b 405 68 330 -248 405 -143 l 405 248 l 360 248 l 45 89 l 45 517 l 0 517 z m 360 147 l 360 68 b 180 -112 360 -53 300 -112 l 45 -112 l 45 -12 z',\n },\n accSagittal11v19LargeDiesisUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -86 l 449 -256 l 449 -157 l 45 13 l 45 138 l 449 -30 l 449 68 l 23 248 l 0 248 z',\n },\n accSagittal11v19LargeDiesisDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 l 449 -68 l 449 30 l 45 -138 l 45 -13 l 449 157 l 449 256 l 45 86 l 45 517 l 0 517 z',\n },\n accSagittal5v13LargeDiesisUp: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 89 -112 0 -52 30 -112 b 180 -35 125 -112 157 -86 l 180 -517 l 225 -517 l 225 -86 l 631 -256 l 631 -157 l 225 13 l 225 138 l 631 -30 l 631 68 l 203 248 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 20 z',\n },\n accSagittal5v13LargeDiesisDown: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 81 3 45 -20 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 l 631 -68 l 631 30 l 225 -138 l 225 -13 l 631 157 l 631 256 l 225 86 l 225 517 l 180 517 l 180 35 b 89 112 157 86 125 112 b 0 -68 30 112 0 52 z',\n },\n accSagittalSharp23SDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -203 l 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 b 315 6 287 -23 301 -13 l 315 -517 l 360 -517 l 360 248 l 337 248 b 248 68 312 127 282 68 l 194 68 b 89 157 125 68 89 98 l 45 157 b 60 59 45 118 50 85 b 0 -203 20 30 0 -56 z',\n },\n accSagittalFlat23SUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 60 -59 0 56 20 -30 b 45 -157 50 -85 45 -118 l 89 -157 b 194 -68 89 -98 125 -68 l 248 -68 b 337 -248 282 -68 312 -127 l 360 -248 l 360 517 l 315 517 l 315 -6 b 271 23 301 13 287 23 l 180 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z',\n },\n accSagittalSharp49SDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -292 l 45 -292 b 112 -157 45 -203 68 -157 l 135 -157 l 135 -517 l 180 -517 l 180 -157 l 271 -157 b 315 -135 285 -157 300 -150 l 315 -517 l 360 -517 l 360 248 l 337 248 b 248 157 323 187 292 157 l 89 157 b 0 -68 30 157 0 82 l 45 -68 b 112 68 45 23 68 68 l 271 68 b 315 89 284 68 300 75 l 315 -32 b 248 -68 298 -56 275 -68 l 89 -68 b 0 -292 29 -68 0 -143 z',\n },\n accSagittalFlat49SUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 292 b 89 68 0 143 29 68 l 248 68 b 315 32 275 68 298 56 l 315 -89 b 271 -68 300 -75 284 -68 l 112 -68 b 45 68 68 -68 45 -23 l 0 68 b 89 -157 0 -82 30 -157 l 248 -157 b 337 -248 292 -157 323 -187 l 360 -248 l 360 517 l 315 517 l 315 135 b 271 157 300 150 285 157 l 180 157 l 180 517 l 135 517 l 135 157 l 112 157 b 45 292 68 157 45 203 z',\n },\n accSagittalSharp7v19CDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -271 l 135 -125 l 135 -517 l 180 -517 l 180 -78 l 315 65 l 315 -517 l 360 -517 l 360 248 l 337 248 b 118 89 239 143 166 89 b 45 157 68 89 45 112 l 0 157 b 89 -20 0 53 29 -6 z',\n },\n accSagittalFlat7v19CUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 20 b 0 -157 29 6 0 -53 l 45 -157 b 118 -89 45 -112 68 -89 b 337 -248 166 -89 239 -143 l 360 -248 l 360 517 l 315 517 l 315 -65 l 180 78 l 180 517 l 135 517 l 135 125 l 0 271 l 0 112 z',\n },\n accSagittalSharp19CDown: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 96 45 17 89 72 l 180 -517 l 225 -517 l 225 107 b 315 112 252 112 282 112 l 360 112 l 360 -517 l 405 -517 l 405 248 l 271 248 b 0 68 89 248 0 187 z',\n },\n accSagittalFlat19CUp: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 271 -248 0 -187 89 -248 l 405 -248 l 405 517 l 360 517 l 360 -112 l 315 -112 b 225 -107 282 -112 252 -112 l 225 517 l 180 517 l 180 -96 b 45 68 89 -72 45 -17 l 45 248 l 0 248 z',\n },\n accSagittalSharp11v49CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 112 -23 45 -82 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 271 112 215 -23 245 23 l 315 112 l 315 -517 l 360 -517 l 360 107 b 449 -68 420 89 449 30 l 449 -248 l 495 -248 l 495 68 b 360 248 495 189 449 248 l 248 248 b 157 68 222 128 192 68 l 89 68 b 0 -203 30 68 0 -23 z',\n },\n accSagittalFlat11v49CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -128 l 360 -248 b 495 -68 449 -248 495 -189 l 495 248 l 449 248 l 449 68 b 360 -107 449 -30 420 -89 l 360 517 l 315 517 l 315 -112 l 271 -112 b 180 23 245 -23 215 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 82 z',\n },\n accSagittalSharp143CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 259 76 210 -23 236 10 l 315 17 l 315 -517 l 360 -517 l 360 -30 l 585 -271 l 585 -112 l 248 248 b 157 68 222 127 192 68 l 89 68 b 0 -203 30 68 0 -23 z',\n },\n accSagittalFlat143CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -127 l 585 112 l 585 271 l 360 30 l 360 517 l 315 517 l 315 -17 l 259 -76 b 180 23 236 -10 210 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z',\n },\n accSagittalSharp17kDown: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -157 l 0 -256 l 225 -161 l 225 -517 l 271 -517 l 271 -144 l 405 -86 l 405 -517 l 449 -517 l 449 248 l 428 248 b 145 171 305 196 210 171 b 45 248 78 171 45 196 l 0 248 b 79 101 0 170 26 121 l 0 68 l 0 -32 l 405 138 l 405 13 z',\n },\n accSagittalFlat17kUp: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 405 -13 l 405 -138 l 0 32 l 0 -68 l 79 -101 b 0 -248 26 -121 0 -170 l 45 -248 b 145 -171 45 -196 78 -171 b 428 -248 210 -171 305 -196 l 449 -248 l 449 517 l 405 517 l 405 86 l 271 144 l 271 517 l 225 517 l 225 161 l 0 256 l 0 157 z',\n },\n accSagittalSharp19sDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 109 45 36 89 95 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -23 295 23 325 -23 l 360 -517 l 405 -517 l 405 -23 l 472 -23 b 540 -203 517 -23 540 -84 l 585 -203 b 495 68 585 -23 554 68 l 383 68 b 292 248 348 68 318 127 l 180 248 b 0 68 60 248 0 187 z',\n },\n accSagittalFlat19sUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 180 -248 0 -187 60 -248 l 292 -248 b 383 -68 318 -127 348 -68 l 495 -68 b 585 203 554 -68 585 23 l 540 203 b 472 23 540 84 517 23 l 405 23 l 405 517 l 360 517 l 360 23 b 271 -112 325 23 295 -23 l 225 -112 l 225 517 l 180 517 l 180 -109 b 45 68 89 -95 45 -36 l 45 248 l 0 248 z',\n },\n accSagittalSharp19sUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -96 l 89 -517 l 135 -517 l 135 -108 b 180 -112 148 -112 163 -112 b 225 -108 196 -112 210 -112 l 225 -517 l 271 -517 l 271 -94 b 360 -12 305 -78 337 -50 l 360 -517 l 405 -517 l 405 248 l 383 248 b 190 0 353 98 288 16 b 138 -3 171 0 153 -3 b 45 68 75 -3 45 20 l 0 68 b 89 -96 0 -17 30 -72 z',\n },\n accSagittalFlat19sDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 96 b 0 -68 30 72 0 17 l 45 -68 b 138 3 45 -20 75 3 b 190 0 153 3 171 0 b 383 -248 288 -16 353 -98 l 405 -248 l 405 517 l 360 517 l 360 12 b 271 94 337 50 305 78 l 271 517 l 225 517 l 225 108 b 180 112 210 112 196 112 b 135 108 163 112 148 112 l 135 517 l 89 517 z',\n },\n accSagittalSharp17kUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 337 -23 b 405 14 363 -23 386 -10 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 68 402 127 364 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalFlat17kDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 517 l 405 517 l 405 -14 b 337 23 386 10 363 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp143CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 337 -23 b 405 14 363 -23 386 -10 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 68 402 127 364 68 l 240 68 b 89 157 140 68 89 98 l 45 157 b 68 53 45 115 52 81 b 0 -203 23 23 0 -63 z',\n },\n accSagittalFlat143CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -53 0 63 23 -23 b 45 -157 52 -81 45 -115 l 89 -157 b 240 -68 89 -98 140 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 517 l 405 517 l 405 -14 b 337 23 386 10 363 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp11v49CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -68 b 135 68 45 23 76 68 l 337 68 b 405 95 363 68 386 76 l 405 -27 b 315 -68 386 -55 356 -68 l 112 -68 b 0 -292 37 -68 0 -143 l 45 -292 b 135 -157 45 -203 75 -157 l 135 -517 l 180 -517 l 180 -157 l 271 -157 l 271 -517 l 315 -517 l 315 -157 l 337 -157 b 405 -130 360 -157 383 -148 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 157 413 187 376 157 l 112 157 b 0 -68 37 157 0 82 z',\n },\n accSagittalFlat11v49CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 68 b 112 -157 0 -82 37 -157 l 315 -157 b 428 -248 376 -157 413 -187 l 449 -248 l 449 517 l 405 517 l 405 130 b 337 157 383 148 360 157 l 315 157 l 315 517 l 271 517 l 271 157 l 180 157 l 180 517 l 135 517 l 135 157 b 45 292 75 157 45 203 l 0 292 b 112 68 0 143 37 68 l 315 68 b 405 27 356 68 386 55 l 405 -95 b 337 -68 386 -76 363 -68 l 135 -68 b 45 68 76 -68 45 -23 z',\n },\n accSagittalSharp19CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 14 b 337 -23 289 -10 311 -23 l 360 -23 l 360 -517 l 405 -517 l 405 -23 b 495 -203 465 -23 495 -82 l 540 -203 b 428 68 540 -23 503 68 l 360 68 b 248 248 310 68 271 128 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z',\n },\n accSagittalFlat19CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 b 360 -68 271 -128 310 -68 l 428 -68 b 540 203 503 -68 540 23 l 495 203 b 405 23 495 82 465 23 l 405 517 l 360 517 l 360 23 l 337 23 b 271 -14 311 23 289 10 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z',\n },\n accSagittalSharp7v19CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 112 l 315 112 b 360 109 331 112 346 112 l 360 -517 l 405 -517 l 405 98 b 495 -68 465 73 495 19 l 495 -248 l 540 -248 l 540 68 b 360 248 540 189 480 248 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z',\n },\n accSagittalFlat7v19CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 360 -248 b 540 -68 480 -248 540 -189 l 540 248 l 495 248 l 495 68 b 405 -98 495 -19 465 -73 l 405 517 l 360 517 l 360 -109 b 315 -112 346 -112 331 -112 l 271 -112 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z',\n },\n accSagittalSharp49SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 112 l 360 112 b 405 109 376 112 390 112 l 405 -517 l 449 -517 l 449 96 b 540 -68 510 72 540 17 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalFlat49SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 449 -96 540 -17 510 -72 l 449 517 l 405 517 l 405 -109 b 360 -112 390 -112 376 -112 l 315 -112 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp23SUp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 71 l 405 -14 l 405 -517 l 449 -517 l 449 -56 l 675 -268 l 675 -112 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalFlat23SDown: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 675 112 l 675 268 l 449 56 l 449 517 l 405 517 l 405 14 l 315 -71 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp5v13MUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 495 141 l 495 14 l 0 -157 l 0 -256 l 225 -180 l 225 -517 l 271 -517 l 271 -161 l 360 -130 l 360 -517 l 405 -517 l 405 -115 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 517 248 b 167 168 366 194 248 168 b 45 248 85 168 45 194 l 0 248 b 95 99 0 170 30 120 l 0 68 l 0 -30 z',\n },\n accSagittalFlat5v13MDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 30 l 0 -68 l 95 -99 b 0 -248 30 -120 0 -170 l 45 -248 b 167 -168 45 -194 85 -168 b 517 -248 248 -168 366 -194 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 115 l 405 517 l 360 517 l 360 130 l 271 161 l 271 517 l 225 517 l 225 180 l 0 256 l 0 157 l 495 -14 l 495 -141 z',\n },\n accSagittalSharp11v19MUp: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 14 b 428 -23 379 -10 402 -23 l 449 -23 l 449 -517 l 495 -517 l 495 -23 b 585 -203 554 -23 585 -84 l 631 -203 b 517 68 631 -23 593 68 l 449 68 b 337 248 400 68 363 127 l 225 248 b 0 68 75 248 0 187 z',\n },\n accSagittalFlat11v19MDown: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 b 449 -68 363 -127 400 -68 l 517 -68 b 631 203 593 -68 631 23 l 585 203 b 495 23 585 84 554 23 l 495 517 l 449 517 l 449 23 l 428 23 b 360 -14 402 23 379 10 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z',\n },\n accSagittalSharp49MUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 225 -180 l 225 -517 l 271 -517 l 271 -166 l 360 -132 l 360 -517 l 405 -517 l 405 -117 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 360 248 b 0 -68 120 248 0 143 z m 45 -145 l 45 -68 b 360 112 45 53 150 112 l 495 112 l 495 14 z',\n },\n accSagittalFlat49MDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 68 b 360 -248 0 -143 120 -248 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 117 l 405 517 l 360 517 l 360 132 l 271 166 l 271 517 l 225 517 l 225 180 l 45 248 l 0 248 z m 495 -14 l 495 -112 l 360 -112 b 45 68 150 -112 45 -53 l 45 145 z',\n },\n accSagittalSharp5v49MUp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -271 l 180 -79 l 180 -517 l 225 -517 l 225 -30 l 315 65 l 315 -517 l 360 -517 l 360 65 l 449 -30 l 449 -517 l 495 -517 l 495 -79 l 675 -271 l 675 -112 l 337 248 b 118 89 239 143 166 89 b 45 157 68 89 45 112 l 0 157 b 107 0 0 62 36 10 l 0 -112 z',\n },\n accSagittalFlat5v49MDown: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 107 0 b 0 -157 36 -10 0 -62 l 45 -157 b 118 -89 45 -112 68 -89 b 337 -248 166 -89 239 -143 l 675 112 l 675 271 l 495 79 l 495 517 l 449 517 l 449 30 l 360 -65 l 360 517 l 315 517 l 315 -65 l 225 30 l 225 517 l 180 517 l 180 79 l 0 271 z',\n },\n accSagittalSharp49LUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -82 l 135 -112 l 135 -517 l 180 -517 l 180 -127 l 271 -157 l 271 -517 l 315 -517 l 315 -173 l 540 -248 l 585 -248 l 585 -68 b 180 248 585 143 449 248 l 0 248 z m 45 112 l 180 112 b 540 -68 420 112 540 53 l 540 -145 l 45 16 z',\n },\n accSagittalFlat49LDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 180 -248 b 585 68 449 -248 585 -143 l 585 248 l 540 248 l 315 173 l 315 517 l 271 517 l 271 157 l 180 127 l 180 517 l 135 517 l 135 112 l 45 82 l 45 517 l 0 517 z m 45 -16 l 540 145 l 540 68 b 180 -112 540 -53 420 -112 l 45 -112 z',\n },\n accSagittalSharp11v19LUp: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -81 l 135 -108 l 135 -517 l 180 -517 l 180 -121 l 271 -148 l 271 -517 l 315 -517 l 315 -161 l 631 -255 l 631 -157 l 45 16 l 45 144 l 631 -30 l 631 68 l 23 248 l 0 248 z',\n },\n accSagittalFlat11v19LDown: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 l 631 -68 l 631 30 l 45 -144 l 45 -16 l 631 157 l 631 255 l 315 161 l 315 517 l 271 517 l 271 148 l 180 121 l 180 517 l 135 517 l 135 108 l 45 81 l 45 517 l 0 517 z',\n },\n accSagittalSharp5v13LUp: {\n x_min: 0,\n x_max: 500,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 -85 l 360 -120 l 360 -517 l 405 -517 l 405 -135 l 720 -256 l 720 -157 l 271 14 l 271 141 l 720 -30 l 720 68 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z',\n },\n accSagittalFlat5v13LDown: {\n x_min: 0,\n x_max: 500,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 720 -68 l 720 30 l 271 -141 l 271 -14 l 720 157 l 720 256 l 405 135 l 405 517 l 360 517 l 360 120 l 271 85 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z',\n },\n accSagittalDoubleSharp23SDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -203 l 45 -203 b 135 -23 45 -82 76 -23 l 301 -23 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 370 -14 b 449 112 423 10 449 53 l 449 248 l 428 248 b 315 68 402 127 364 68 l 240 68 b 89 157 140 68 89 98 l 45 157 b 68 53 45 115 52 81 b 0 -203 23 23 0 -63 z',\n },\n accSagittalDoubleFlat23SUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -53 0 63 23 -23 b 45 -157 52 -81 45 -115 l 89 -157 b 240 -68 89 -98 140 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 -112 b 370 14 449 -53 423 -10 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 301 23 l 135 23 b 45 203 76 23 45 82 z',\n },\n accSagittalDoubleSharp49SDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -292 l 45 -292 b 112 -157 45 -203 68 -157 l 256 -157 l 135 -503 l 187 -517 l 337 -82 l 490 -517 l 540 -503 l 366 0 l 396 89 b 449 157 416 102 435 125 l 449 248 l 428 248 b 315 157 413 187 376 157 l 112 157 b 0 -68 39 157 0 82 l 45 -68 b 135 68 45 23 76 68 l 287 68 l 311 0 l 288 -68 l 89 -68 b 0 -292 32 -68 0 -144 z',\n },\n accSagittalDoubleFlat49SUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 292 b 89 68 0 144 32 68 l 288 68 l 311 0 l 287 -68 l 135 -68 b 45 68 76 -68 45 -23 l 0 68 b 112 -157 0 -82 39 -157 l 315 -157 b 428 -248 376 -157 413 -187 l 449 -248 l 449 -157 b 396 -89 435 -125 416 -102 l 366 0 l 540 503 l 490 517 l 337 82 l 187 517 l 135 503 l 256 157 l 112 157 b 45 292 68 157 45 203 z',\n },\n accSagittalDoubleSharp7v19CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -266 l 307 -7 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 386 59 l 449 112 l 449 248 l 428 248 b 130 68 285 127 186 68 b 45 157 73 68 45 98 l 0 157 b 112 -20 0 53 37 -6 z',\n },\n accSagittalDoubleFlat7v19CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 112 20 b 0 -157 37 6 0 -53 l 45 -157 b 130 -68 45 -98 73 -68 b 428 -248 186 -68 285 -127 l 449 -248 l 449 -112 l 386 -59 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 307 7 l 0 266 l 0 112 z',\n },\n accSagittalDoubleSharp19CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 315 109 45 36 135 95 l 354 0 l 180 -503 l 232 -517 l 383 -82 l 534 -517 l 585 -503 l 410 0 l 449 112 l 495 112 l 495 248 l 360 248 b 0 68 120 248 0 187 z m 372 112 l 393 112 l 383 82 z',\n },\n accSagittalDoubleFlat19CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 360 -248 0 -187 120 -248 l 495 -248 l 495 -112 l 449 -112 l 410 0 l 585 503 l 534 517 l 383 82 l 232 517 l 180 503 l 354 0 l 315 -109 b 45 68 135 -95 45 -36 l 45 248 l 0 248 z m 383 -82 l 393 -112 l 372 -112 z',\n },\n accSagittalDoubleSharp11v49CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 360 112 b 540 -68 480 112 540 53 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalDoubleFlat11v49CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 360 -112 540 -53 480 -112 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalDoubleSharp143CDown: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 337 49 l 675 -268 l 675 -112 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalDoubleFlat143CUp: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 675 112 l 675 268 l 337 -49 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalDoubleSharp17kDown: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 248 b 95 101 0 170 30 121 l 0 68 l 0 -30 l 364 96 l 399 0 l 390 -23 l 0 -157 l 0 -255 l 353 -135 l 225 -503 l 275 -517 l 428 -82 l 577 -517 l 631 -503 l 455 0 l 507 145 l 540 157 l 540 248 l 517 248 b 167 168 366 194 248 168 b 45 248 85 168 45 194 z m 416 115 l 442 124 l 428 82 z',\n },\n accSagittalDoubleFlat17kUp: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -248 b 167 -168 45 -194 85 -168 b 517 -248 248 -168 366 -194 l 540 -248 l 540 -157 l 507 -145 l 455 0 l 631 503 l 577 517 l 428 82 l 275 517 l 225 503 l 353 135 l 0 255 l 0 157 l 390 23 l 399 0 l 364 -96 l 0 30 l 0 -68 l 95 -101 b 0 -248 30 -121 0 -170 z m 428 -82 l 442 -124 l 416 -115 z',\n },\n accSagittalDoubleSharp19sDown: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 271 112 45 53 120 112 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 367 4 b 428 -23 386 -13 405 -23 l 495 -23 b 585 -203 554 -23 585 -84 l 631 -203 b 517 68 631 -23 593 68 l 449 68 b 337 248 400 68 363 127 l 225 248 b 0 68 75 248 0 187 z',\n },\n accSagittalDoubleFlat19sUp: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 b 449 -68 363 -127 400 -68 l 517 -68 b 631 203 593 -68 631 23 l 585 203 b 495 23 585 84 554 23 l 428 23 b 367 -4 405 23 386 13 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 271 -112 b 45 68 120 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittalShaftUp: {\n x_min: 0,\n x_max: 31,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 112 l 0 -517 l 45 -517 l 45 112 l 23 248 z',\n },\n accSagittalShaftDown: {\n x_min: 0,\n x_max: 31,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 23 -248 l 45 -112 l 45 517 l 0 517 l 0 -112 z',\n },\n accSagittalAcute: {\n x_min: 0,\n x_max: 125,\n y_min: -62,\n y_max: 125,\n ha: 187,\n o: 'm 0 0 l 0 -89 l 180 89 l 180 180 z',\n },\n accSagittalGrave: {\n x_min: 0,\n x_max: 125,\n y_min: -125,\n y_max: 62,\n ha: 187,\n o: 'm 180 -180 l 180 -89 l 0 89 l 0 0 z',\n },\n accSagittal1MinaUp: {\n x_min: -7,\n x_max: 124,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 134 150 179 112 163 135 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal1MinaDown: {\n x_min: -7,\n x_max: 124,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 179 -23 163 -135 179 -112 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittal2MinasUp: {\n x_min: -7,\n x_max: 218,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 269 150 314 112 298 135 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal2MinasDown: {\n x_min: -7,\n x_max: 218,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittal1TinaUp: {\n x_min: 0,\n x_max: 93,\n y_min: 16,\n y_max: 107,\n ha: 91,\n o: 'm 134 154 l 91 154 b 81 76 91 101 91 86 b 0 68 73 69 48 68 l 0 23 b 134 154 122 23 134 36 z',\n },\n accSagittal1TinaDown: {\n x_min: 0,\n x_max: 93,\n y_min: -107,\n y_max: -16,\n ha: 91,\n o: 'm 134 -154 b 0 -23 134 -36 122 -23 l 0 -68 b 81 -76 48 -68 73 -69 b 91 -154 91 -86 91 -101 z',\n },\n accSagittal2TinasUp: {\n x_min: 0,\n x_max: 94,\n y_min: 16,\n y_max: 107,\n ha: 91,\n o: 'm 135 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z',\n },\n accSagittal2TinasDown: {\n x_min: 0,\n x_max: 94,\n y_min: -107,\n y_max: -16,\n ha: 91,\n o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 z',\n },\n accSagittal3TinasUp: {\n x_min: -7,\n x_max: 124,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 134 150 179 112 163 135 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal3TinasDown: {\n x_min: -7,\n x_max: 124,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 179 -23 163 -135 179 -112 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittal4TinasUp: {\n x_min: 0,\n x_max: 187,\n y_min: 16,\n y_max: 106.69999999999997,\n ha: 90.69999999999997,\n o: 'm 0 68 l 0 23 b 143 45 105 23 124 26 b 203 107 153 55 183 107 b 226 23 216 107 226 86 l 269 23 b 225 150 269 112 253 135 b 160 132 207 158 181 153 b 115 81 138 112 124 88 b 0 68 104 71 94 68 z',\n },\n accSagittal4TinasDown: {\n x_min: 0,\n x_max: 187,\n y_min: -106.69999999999999,\n y_max: -16,\n ha: 90.69999999999999,\n o: 'm 0 -68 b 115 -81 94 -68 104 -71 b 160 -132 124 -88 138 -112 b 225 -150 181 -153 207 -158 b 269 -23 253 -135 269 -112 l 226 -23 b 203 -107 226 -86 216 -107 b 143 -45 183 -107 153 -55 b 0 -23 124 -26 105 -23 z',\n },\n accSagittal5TinasUp: {\n x_min: 0,\n x_max: 218,\n y_min: 16,\n y_max: 107,\n ha: 91,\n o: 'm 135 23 b 187 45 156 23 168 26 b 249 107 197 55 228 107 b 271 23 262 107 271 86 l 314 23 b 269 150 314 112 298 135 b 204 132 252 158 226 153 b 160 81 183 112 168 88 b 135 68 148 71 147 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z',\n },\n accSagittal5TinasDown: {\n x_min: 0,\n x_max: 218,\n y_min: -107,\n y_max: -16,\n ha: 91,\n o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 b 160 -81 147 -68 148 -71 b 204 -132 168 -88 183 -112 b 269 -150 226 -153 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 249 -107 271 -86 262 -107 b 187 -45 228 -107 197 -55 b 135 -23 168 -26 156 -23 z',\n },\n accSagittal6TinasUp: {\n x_min: -7,\n x_max: 218,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 269 150 314 112 298 135 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal6TinasDown: {\n x_min: -7,\n x_max: 218,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittal7TinasUp: {\n x_min: 0,\n x_max: 281,\n y_min: 16,\n y_max: 106.69999999999997,\n ha: 90.69999999999997,\n o: 'm 0 68 l 0 23 b 143 45 105 23 124 26 b 203 107 153 55 183 107 b 226 23 216 107 226 86 l 269 23 b 298 65 269 23 291 55 b 343 107 314 86 331 107 b 361 23 354 107 363 86 l 405 23 b 360 150 405 112 389 135 b 294 130 343 158 311 150 b 264 92 281 115 272 104 b 225 150 258 127 245 140 b 160 132 207 158 181 153 b 115 81 138 112 124 88 b 0 68 104 71 94 68 z',\n },\n accSagittal7TinasDown: {\n x_min: 0,\n x_max: 281,\n y_min: -106.69999999999999,\n y_max: -16,\n ha: 90.69999999999999,\n o: 'm 0 -68 b 115 -81 94 -68 104 -71 b 160 -132 124 -88 138 -112 b 225 -150 181 -153 207 -158 b 264 -92 245 -140 258 -127 b 294 -130 272 -104 281 -115 b 360 -150 311 -150 343 -158 b 405 -23 389 -135 405 -112 l 361 -23 b 343 -107 363 -86 354 -107 b 298 -65 331 -107 314 -86 b 269 -23 291 -55 269 -23 l 226 -23 b 203 -107 226 -86 216 -107 b 143 -45 183 -107 153 -55 b 0 -23 124 -26 105 -23 z',\n },\n accSagittal8TinasUp: {\n x_min: 0,\n x_max: 312,\n y_min: 16,\n y_max: 107,\n ha: 91,\n o: 'm 135 23 b 187 45 156 23 168 26 b 249 107 197 55 228 107 b 271 23 262 107 271 86 l 314 23 b 343 65 314 23 336 55 b 387 107 359 86 376 107 b 406 23 399 107 408 86 l 449 23 b 405 150 449 112 433 135 b 338 130 387 158 356 150 b 308 92 325 115 317 104 b 269 150 302 127 289 140 b 204 132 252 158 226 153 b 160 81 183 112 168 88 b 135 68 148 71 147 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z',\n },\n accSagittal8TinasDown: {\n x_min: 0,\n x_max: 312,\n y_min: -107,\n y_max: -16,\n ha: 91,\n o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 b 160 -81 147 -68 148 -71 b 204 -132 168 -88 183 -112 b 269 -150 226 -153 252 -158 b 308 -92 289 -140 302 -127 b 338 -130 317 -104 325 -115 b 405 -150 356 -150 387 -158 b 449 -23 433 -135 449 -112 l 406 -23 b 387 -107 408 -86 399 -107 b 343 -65 376 -107 359 -86 b 314 -23 336 -55 314 -23 l 271 -23 b 249 -107 271 -86 262 -107 b 187 -45 228 -107 197 -55 b 135 -23 168 -26 156 -23 z',\n },\n accSagittal9TinasUp: {\n x_min: -7,\n x_max: 312,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 343 65 314 23 336 55 b 387 107 359 86 376 107 b 406 23 399 107 408 86 l 449 23 b 405 150 449 112 433 135 b 338 130 387 158 356 150 b 308 92 325 115 317 104 b 269 150 302 127 289 140 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal9TinasDown: {\n x_min: -7,\n x_max: 312,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 308 -92 289 -140 302 -127 b 338 -130 317 -104 325 -115 b 405 -150 356 -150 387 -158 b 449 -23 433 -135 449 -112 l 406 -23 b 387 -107 408 -86 399 -107 b 343 -65 376 -107 359 -86 b 314 -23 336 -55 314 -23 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittalFractionalTinaUp: {\n x_min: -3,\n x_max: 35,\n y_min: 73,\n y_max: 111,\n ha: 38,\n o: 'm -4 132 b 23 105 -4 118 9 105 b 50 132 37 105 50 118 b 23 160 50 147 37 160 b -4 132 9 160 -4 147 z',\n },\n accSagittalFractionalTinaDown: {\n x_min: -3,\n x_max: 35,\n y_min: -111,\n y_max: -73,\n ha: 38,\n o: 'm -4 -132 b 23 -160 -4 -147 9 -160 b 50 -132 37 -160 50 -147 b 23 -105 50 -118 37 -105 b -4 -132 9 -105 -4 -118 z',\n },\n accidentalNarrowReversedFlat: {\n x_min: 0,\n x_max: 164,\n y_min: -194,\n y_max: 421,\n ha: 615,\n o: 'm 236 -279 l 236 606 l 192 606 l 192 179 b 85 243 150 222 114 243 b 0 84 23 243 0 134 b 112 -158 0 3 37 -78 z m 192 112 l 192 -163 l 135 -98 b 82 40 101 -50 82 -3 b 138 144 82 73 96 144 b 192 112 153 144 170 132 z',\n },\n accidentalNarrowReversedFlatAndFlat: {\n x_min: 0,\n x_max: 414,\n y_min: -194,\n y_max: 421,\n ha: 615,\n o: 'm 281 606 l 281 -268 l 438 -158 b 596 84 547 -82 596 3 b 475 243 596 154 556 243 b 325 179 435 243 384 222 l 325 606 z m 235 -279 l 235 606 l 190 606 l 190 179 b 85 243 148 222 114 243 b 12 158 52 243 27 215 b 0 84 3 134 0 108 b 112 -158 0 3 37 -78 z m 325 111 b 410 144 359 132 386 144 b 498 36 462 144 498 84 b 413 -107 498 -9 469 -58 l 325 -173 z m 192 112 l 192 -163 l 135 -98 b 81 40 99 -50 81 -3 b 91 94 81 59 84 76 b 137 144 102 127 118 144 b 192 112 153 144 170 132 z',\n },\n accidentalWilsonPlus: {\n x_min: 0,\n x_max: 281,\n y_min: -203,\n y_max: 203,\n ha: 406,\n o: 'm 405 268 l 225 98 l 225 292 l 180 292 l 180 56 l 0 -112 l 0 -268 l 180 -98 l 180 -292 l 225 -292 l 225 -56 l 405 112 z',\n },\n accidentalWilsonMinus: {\n x_min: 0,\n x_max: 281,\n y_min: -186,\n y_max: 186,\n ha: 372,\n o: 'm 0 112 l 405 -268 l 405 -112 l 0 268 z',\n },\n },\n fontFamily: 'Bravura',\n resolution: 1000,\n generatedOn: '2022-06-26T17:36:54.186Z',\n};\n","/**\n * The Bravura font was created by Daniel Spreadbury @ Steinberg.\n * https://github.com/steinbergmedia/bravura/\n */\nexport const BravuraMetrics = {\n name: 'Bravura',\n smufl: true,\n stave: {\n padding: 12,\n endPaddingMax: 10,\n endPaddingMin: 5,\n unalignedNotePadding: 10,\n },\n accidental: {\n noteheadAccidentalPadding: 1,\n leftPadding: 2,\n accidentalSpacing: 3,\n },\n clef: {\n default: {\n point: 32,\n width: 26,\n },\n small: {\n point: 26,\n width: 20,\n },\n annotations: {\n '8va': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: -1.4,\n shiftX: 12,\n },\n },\n small: {\n point: 16,\n treble: {\n line: -0.2,\n shiftX: 8,\n },\n },\n },\n '8vb': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: 6,\n shiftX: 10,\n },\n bass: {\n line: 3.5,\n shiftX: 1,\n },\n },\n small: {\n point: 16,\n treble: {\n line: 5.3,\n shiftX: 6,\n },\n bass: {\n line: 3.1,\n shiftX: 0.5,\n },\n },\n },\n },\n // These may no longer be necessary\n lineCount: {\n '8': { point: 55, shiftY: 14 },\n '7': { point: 47, shiftY: 8 },\n '6': { point: 32, shiftY: 1 },\n '5': { point: 30, shiftY: -6 },\n '4': { point: 23, shiftY: -12 },\n },\n },\n parenthesis: {\n default: {\n point: 39,\n width: 7,\n },\n gracenote: {\n point: (39 * 3) / 5,\n width: 3,\n },\n },\n pedalMarking: {\n up: {\n point: 40,\n },\n down: {\n point: 34,\n },\n },\n // These are for numeric digits, such as in time signatures\n digits: {\n // used by timesig\n shiftLine: -1,\n point: 34,\n // used by tuplets\n tupletPoint: 22,\n shiftY: -6,\n },\n articulation: {\n articStaccatissimoAbove: {\n padding: 2,\n },\n articStaccatissimoBelow: {\n padding: 2,\n },\n },\n tremolo: {\n default: {\n point: 25,\n spacing: 5,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 11,\n offsetXStemDown: 1,\n },\n grace: {\n point: 18,\n spacing: 4,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 7,\n offsetXStemDown: 1,\n },\n },\n staveRepetition: {\n symbolText: {\n offsetX: 12,\n offsetY: 25,\n spacing: 5,\n },\n coda: {\n offsetY: 25,\n },\n segno: {\n offsetY: 10,\n },\n },\n // noteHead: {\n // },\n stem: {\n heightAdjustmentForFlag: -3,\n // These are stem (Y) offsets to the note heads. To shift the\n // noteheads (x-position) themselves, see glyphs.notehead.custom.\n noteHead: {\n noteheadTriangleUpHalf: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpBlack: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpWhole: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadXHalf: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXBlack: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXWhole: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadHalf: {\n offsetYBaseStemUp: -2.55,\n offsetYBaseStemDown: 2.65,\n },\n noteheadBlack: {\n offsetYBaseStemUp: -2,\n offsetYBaseStemDown: 2,\n },\n noteheadSquareWhite: {\n offsetYBaseStemDown: -5,\n offsetYBaseStemUp: 5,\n },\n },\n },\n // Values under here are used by the Glyph class to reposition and rescale\n // glyphs based on their category. This should be the first stop for\n // custom font glyph repositioning.\n //\n // The glyph loader first looks up a specific set of settings based on the\n // glyph code, and if not found, uses the defaults from the category. See\n // glyphs.textNote for an example of this.\n //\n // Details in Glyph.lookupFontMetrics.\n glyphs: {\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n segno: {\n shiftX: -7,\n },\n flag: {\n shiftX: -0.75,\n staveTempo: {\n shiftX: -1,\n },\n },\n clef: {\n gClef: {\n default: { scale: 1.1, shiftY: 1 },\n small: { shiftY: 1.5 },\n },\n fClef: {\n default: { shiftY: -0.5 },\n },\n },\n ornament: {\n ornamentTurn: {\n scale: 1.2,\n },\n ornamentTurnSlash: {\n scale: 1.2,\n },\n },\n stringNumber: {\n verticalPadding: 8,\n stemPadding: 2,\n leftPadding: 5,\n rightPadding: 6,\n },\n stroke: {\n arrowheadBlackDown: {\n straight: {\n shiftX: -4.5,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n arrowheadBlackUp: {\n straight: {\n shiftX: -0.85,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n },\n textNote: {\n point: 34,\n breathMarkTick: {\n point: 36,\n shiftY: 9,\n },\n breathMarkComma: {\n point: 36,\n },\n segno: {\n point: 30,\n shiftX: -7,\n shiftY: 8,\n },\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n ornamentTrill: {\n shiftX: -8,\n shiftY: 8,\n },\n ornamentTurn: {\n point: 42,\n },\n ornamentTurnSlash: {\n point: 42,\n },\n ornamentMordent: {\n shiftX: -8,\n },\n ornamentShortTrill: {\n shiftX: -8,\n },\n },\n noteHead: {\n minPadding: 2,\n standard: {\n restQuarterStemUp: {\n point: 35,\n },\n restQuarterStemDown: {\n point: 35,\n },\n },\n custom: {\n noteheadCircleXStemUp: {\n shiftX: 1.5,\n },\n noteheadCircleXStemDown: {\n shiftX: 0.25,\n },\n noteheadDiamondHalfStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondBlackStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondWholeStemUp: {\n shiftX: 1,\n },\n noteheadXHalfStemUp: {\n shiftX: -2,\n },\n noteheadXHalfStemDown: {\n shiftX: 1,\n },\n noteheadXWholeStemUp: {\n shiftX: -4,\n },\n noteheadXWholeStemDown: {\n shiftX: 1,\n },\n noteheadXDoubleWholeStemUp: {\n shiftX: -4,\n },\n noteheadXDoubleWholeStemDown: {\n shiftX: 1,\n },\n noteheadSquareWhiteStemDown: {\n shiftX: 0.25,\n },\n noteheadSquareWhiteStemUp: {\n shiftX: -0.75,\n },\n noteheadSquareBlackStemUp: {\n shiftX: -0.75,\n },\n noteheadTriangleUpWholeStemUp: {\n shiftX: -0.75,\n },\n },\n },\n chordSymbol: {\n global: {\n superscriptOffset: -400,\n subscriptOffset: 300,\n kerningOffset: -250,\n lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'],\n upperKerningText: ['A', 'L'],\n spacing: 100,\n superSubRatio: 0.66,\n },\n csymDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymHalfDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymAugmented: {\n scale: 1,\n leftSideBearing: 0,\n advanceWidth: 530,\n yOffset: 0,\n },\n csymParensLeftTall: {\n scale: 0.8,\n leftSideBearing: -20,\n advanceWidth: 184,\n yOffset: 250,\n },\n csymParensRightTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 189,\n yOffset: 250,\n },\n csymBracketLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 328,\n yOffset: 0,\n },\n csymBracketRightTall: {\n scale: 0.8,\n leftSideBearing: 1,\n advanceWidth: 600,\n yOffset: 0,\n },\n csymParensLeftVeryTall: {\n scale: 0.9,\n leftSideBearing: 50,\n advanceWidth: 121,\n yOffset: 350,\n },\n csymParensRightVeryTall: {\n scale: 0.9,\n leftSideBearing: 0,\n advanceWidth: 111,\n yOffset: 350,\n },\n csymDiagonalArrangementSlash: {\n scale: 0.6,\n leftSideBearing: -1,\n advanceWidth: 990,\n yOffset: 0,\n },\n csymMinor: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 482,\n yOffset: 0,\n },\n csymMajorSeventh: {\n scale: 0.9,\n leftSideBearing: 200,\n yOffset: 0,\n advanceWidth: 600,\n },\n accidentalSharp: {\n scale: 0.75,\n leftSideBearing: 20,\n advanceWidth: 250,\n yOffset: -302,\n },\n accidentalFlat: {\n scale: 0.9,\n leftSideBearing: -20,\n advanceWidth: 226,\n yOffset: -184,\n },\n },\n jazzOrnaments: {\n brassScoop: {\n scale: 1.0,\n xOffset: -12,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 20,\n },\n brassDoitMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 22,\n },\n brassFallLipShort: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassLiftMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 5,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassFallRoughMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 28,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassBend: {\n scale: 1.0,\n xOffset: 2,\n yOffset: -8,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassMuteClosed: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -8,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassMuteOpen: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -7,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassFlip: {\n scale: 1.0,\n xOffset: 10,\n yOffset: 0,\n stemUpYOffset: 7,\n reportedWidth: 10,\n },\n brassJazzTurn: {\n scale: 1.0,\n xOffset: 0,\n yOffset: 0,\n stemUpYOffset: 8,\n reportedWidth: 31,\n },\n brassSmear: {\n scale: 1.0,\n xOffset: 10,\n yOffset: 0,\n stemUpYOffset: 8,\n reportedWidth: 5,\n },\n },\n tuplet: {\n noteHeadOffset: 20,\n stemOffset: 10,\n bottomLine: 4,\n topModifierOffset: 15,\n },\n },\n};\n","export const CustomFont = {\n resolution: 1000,\n fontFamily: 'VexFlowCustom',\n glyphs: {\n noteheadSquareWhite: {\n x_min: 0,\n x_max: 430.75,\n ha: 386,\n o: 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 l 50 150 l 380 150 l 380 -150 l 50 -150 l 50 150 ',\n },\n noteheadSquareBlack: {\n x_min: 0,\n x_max: 430.75,\n ha: 386,\n o: 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 ',\n },\n accidentalBuyukMucennebFlat: {\n x_min: -171.5,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalBakiyeFlat: {\n x_min: -176.9375,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalKucukMucennebSharp: {\n x_min: -1.359375,\n x_max: 255.890625,\n ha: 261,\n o: 'm 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 ',\n },\n accidentalKoron: {\n x_min: -20,\n x_max: 320,\n ha: 257,\n o: 'm -8 200 b -8 210 8 200 16 200 l 20 148 -199 l 23 -615 b 0 -629 9 -629 6 -629 l -21 -612 l -21 -201 l -21 216 l -20 200 m 16 200 l 310 0 l 240 0 l 16 140 l 16 -120 l 240 0 l 310 0 l 16 -200 ',\n },\n accidentalSori: {\n x_min: -10.890625,\n x_max: 299.4375,\n ha: 294,\n o: 'm 44 174 b 51 174 47 174 49 174 b 68 173 55 174 61 174 l 287 112 l 551 40 b 615 20 617 22 609 23 b 626 0 622 16 626 8 b 615 -22 626 -9 622 -18 b 613 -23 613 -23 613 -23 b 613 -23 613 -23 613 -23 b 287 -113 613 -24 597 -29 l 68 -174 b 53 -176 61 -176 57 -176 b 39 -172 47 -176 43 -174 b 27 -151 31 -167 27 -159 b 39 -129 27 -141 31 -133 b 230 -74 43 -124 20 -131 l 370 -36 l 468 -9 b 498 0 484 -4 498 -1 b 468 8 498 0 484 2 l 370 34 l 230 73 b 40 126 28 129 43 124 b 27 149 31 131 27 140 b 44 174 27 161 34 170 m 205 110 l 205 300 b 205 330 245 330 245 300 l 245 300 l 245 -300 b 245 -330 205 -330 205 -300 l 205 -300 l 205 110 l 345 90 m 345 90 l 345 330 b 345 360 385 360 385 330 l 385 330 l 385 -270 b 385 -300 345 -300 345 -270 l 345 -270 l 345 90 ',\n },\n vexAccidentalMicrotonal2: {\n x_min: -1.359375,\n x_max: 386.5625,\n ha: 394,\n o: 'm 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 ',\n },\n vexAccidentalMicrotonal3: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm -146 537 b -138 538 -143 538 -141 538 b -118 525 -129 538 -121 533 b -117 390 -117 522 -117 521 b -115 259 -117 268 -117 259 b -115 259 -115 259 -115 259 b -59 272 -104 263 -62 272 b -39 259 -50 272 -42 267 b -37 209 -38 257 -37 233 b -39 159 -37 185 -38 162 b -85 138 -43 149 -44 149 l -117 131 l -117 21 b -115 -88 -117 -80 -117 -88 b -115 -88 -115 -88 -115 -88 b -59 -75 -104 -84 -62 -75 b -44 -81 -52 -75 -48 -77 b -38 -124 -38 -87 -38 -85 b -38 -138 -38 -124 -38 -138 b -38 -152 -38 -138 -38 -152 b -44 -195 -38 -191 -38 -190 b -85 -209 -48 -200 -48 -200 l -117 -217 l -117 -349 b -118 -486 -117 -481 -117 -482 b -138 -499 -121 -494 -129 -499 b -153 -493 -143 -499 -149 -497 b -159 -415 -158 -487 -159 -496 b -159 -355 -159 -398 -159 -379 b -159 -227 -159 -284 -159 -227 b -205 -238 -159 -227 -180 -232 b -250 -249 -230 -244 -250 -249 b -251 -386 -251 -249 -251 -311 b -252 -525 -251 -521 -251 -522 b -272 -538 -255 -534 -264 -538 b -287 -532 -277 -538 -283 -536 b -293 -452 -292 -527 -293 -536 b -293 -391 -293 -436 -293 -415 b -294 -260 -293 -269 -293 -260 b -294 -260 -294 -260 -294 -260 b -348 -272 -306 -264 -345 -272 b -368 -259 -357 -272 -365 -267 b -369 -209 -369 -257 -369 -233 b -368 -159 -369 -185 -369 -162 b -323 -139 -364 -149 -362 -148 l -293 -131 l -293 -22 b -294 87 -293 80 -293 87 b -294 87 -294 87 -294 87 b -348 75 -306 84 -345 75 b -368 88 -357 75 -365 80 b -369 138 -369 91 -369 114 b -368 188 -369 162 -369 186 b -323 209 -364 198 -362 199 l -293 216 l -293 349 b -292 486 -293 481 -293 482 b -272 499 -288 494 -280 499 b -257 493 -266 499 -261 497 b -251 414 -251 487 -251 496 b -251 354 -251 398 -251 378 b -251 226 -251 284 -251 226 b -205 238 -250 226 -230 231 b -159 249 -180 244 -159 249 b -159 385 -159 249 -159 310 b -157 525 -159 521 -159 522 b -146 537 -156 530 -151 535 z m -159 11 b -159 120 -159 98 -159 120 l -159 120 b -175 116 -160 120 -167 119 b -221 105 -184 114 -204 109 l -251 98 l -251 -12 b -251 -121 -251 -72 -251 -121 b -205 -110 -250 -121 -230 -116 b -159 -99 -180 -104 -159 -99 b -159 11 -159 -99 -159 -49 z m 89 517 b 97 519 92 518 94 519 b 117 505 106 519 114 513 b 119 376 119 502 119 501 l 119 249 l 145 258 b 176 267 169 266 172 267 b 177 267 176 267 177 267 b 196 255 186 267 192 263 l 197 252 l 197 205 b 197 181 197 195 197 187 b 193 149 197 153 197 153 b 152 131 190 144 187 143 l 119 120 l 119 10 b 119 -100 119 -62 119 -100 b 145 -91 120 -100 131 -96 b 173 -82 159 -86 171 -82 b 176 -81 174 -81 175 -81 b 196 -94 185 -81 193 -87 b 198 -151 197 -97 198 -125 b 197 -194 198 -172 197 -192 b 153 -218 193 -203 192 -204 l 119 -230 l 119 -367 l 118 -504 l 117 -507 b 97 -519 113 -514 105 -519 b 82 -512 92 -519 87 -517 b 76 -434 77 -507 76 -516 b 76 -374 76 -418 76 -398 b 76 -245 76 -303 76 -245 b 52 -254 76 -245 65 -249 b 19 -263 34 -260 25 -263 b 6 -257 13 -263 10 -261 b 0 -214 0 -251 0 -253 b 0 -200 0 -210 0 -205 b 0 -188 0 -196 0 -192 b 6 -143 0 -147 0 -149 b 46 -126 10 -139 10 -139 l 76 -115 l 76 -5 b 76 106 76 56 76 106 b 51 98 76 106 64 102 b 18 89 34 92 25 89 b 6 95 13 89 10 91 b 0 139 0 101 0 99 b 0 153 0 143 0 148 b 0 179 0 163 0 172 b 44 225 0 215 3 211 l 76 236 l 76 369 b 78 505 76 501 76 502 b 89 517 80 510 85 515 z ',\n },\n vexAccidentalMicrotonal4: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 283 633 b 291 634 286 634 289 634 b 311 621 300 634 308 629 b 313 505 313 618 313 617 b 313 393 313 443 313 393 b 378 425 313 393 343 407 l 443 458 l 448 458 b 449 458 449 458 449 458 b 471 437 462 458 471 448 b 469 429 471 434 470 432 b 387 382 466 421 469 423 l 313 344 l 313 247 l 313 150 l 315 152 b 433 201 353 184 394 201 b 479 193 448 201 464 198 b 549 86 524 177 549 135 b 526 1 549 59 541 29 b 395 -143 504 -39 475 -71 b 316 -214 351 -182 341 -191 b 292 -229 302 -228 300 -229 b 272 -216 283 -229 275 -224 b 271 55 271 -212 271 -212 b 270 323 271 203 270 323 b 205 291 270 323 241 308 l 140 258 l 135 258 b 134 258 135 258 134 258 b 112 279 121 258 112 267 b 114 287 112 281 113 284 b 196 334 117 295 114 293 l 271 371 l 271 495 b 272 621 271 617 271 618 b 283 633 274 626 279 631 z m 404 133 b 391 134 400 134 395 134 b 384 134 388 134 386 134 b 318 88 358 130 335 114 l 313 81 l 313 -37 l 313 -156 l 316 -152 b 439 83 391 -71 439 22 l 439 84 b 404 133 439 115 430 128 z m -8 633 l -8 633 b 0 634 -6 634 -3 634 b 20 621 8 634 17 629 b 21 384 21 618 21 617 l 21 150 l 24 152 b 141 201 62 184 102 201 b 187 193 157 201 172 198 b 257 86 232 177 257 135 b 234 1 257 59 250 29 b 103 -143 212 -39 183 -71 b 24 -214 60 -182 49 -191 b 0 -229 10 -228 8 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 203 l -21 618 l -20 621 b -8 633 -18 626 -13 631 z m 113 133 l 113 133 b 99 134 109 134 103 134 b 93 134 97 134 94 134 b 26 88 66 130 43 114 l 21 81 l 21 -37 l 21 -156 l 25 -152 b 148 83 99 -71 148 22 l 148 84 b 113 133 148 115 138 128 z ',\n },\n vexNoteHeadRectBlack: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 ',\n },\n vexNoteHeadRectWhite: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 l 50 100 l 380 100 l 380 -100 l 50 -100 l 50 100',\n },\n },\n};\n","export const CustomMetrics = {\n name: 'VexFlowCustom',\n smufl: false,\n glyphs: {},\n};\n","export const GonvilleFont = {\n glyphs: {\n bracketTop: {\n x_min: 0,\n x_max: 559.421875,\n ha: 571,\n o: 'm 544 204 b 548 204 545 204 547 204 b 559 194 555 204 559 199 b 559 190 559 192 559 191 b 530 156 559 188 556 184 b 462 86 510 134 481 104 b 453 76 458 81 454 77 l 446 70 l 441 65 b 434 59 439 63 436 61 l 427 54 b 409 37 426 51 416 44 b 392 23 398 29 394 26 b 387 19 389 22 387 20 b 379 13 386 19 383 16 l 371 8 l 367 5 l 359 -1 l 337 -16 b 285 -48 319 -29 298 -41 l 279 -52 b 186 -95 255 -66 210 -87 l 175 -99 b 23 -129 127 -117 68 -129 b 17 -129 20 -129 19 -129 b 1 -123 2 -129 2 -129 b 0 -49 0 -122 0 -83 b 0 4 0 -22 0 1 b 27 11 2 9 4 9 b 185 31 78 12 145 20 b 198 34 186 31 193 33 b 314 73 234 44 277 58 b 349 88 328 79 340 84 b 353 90 352 90 353 90 b 363 94 353 90 357 93 b 371 98 367 97 371 98 b 428 129 372 98 413 120 b 461 148 441 136 454 144 b 468 151 464 149 466 151 b 472 154 469 152 470 154 b 481 161 473 155 477 158 b 525 190 490 166 518 186 l 534 197 b 540 201 536 198 539 199 b 544 204 541 202 544 204 ',\n },\n bracketBottom: {\n x_min: 0,\n x_max: 559.421875,\n ha: 571,\n o: 'm 5 127 b 14 127 6 127 9 127 b 51 126 25 127 43 127 b 175 98 93 122 138 112 l 186 94 b 279 51 210 86 255 65 b 285 47 280 51 283 48 b 319 27 291 44 311 31 l 326 22 b 359 0 332 19 352 4 l 367 -6 b 371 -9 368 -6 370 -8 l 379 -15 b 387 -22 383 -18 386 -20 l 398 -30 l 411 -40 l 417 -47 l 427 -55 l 434 -61 b 441 -66 436 -62 439 -65 l 446 -72 l 453 -77 l 462 -87 b 558 -188 490 -113 549 -176 b 559 -195 559 -191 559 -194 b 548 -205 559 -201 555 -205 b 541 -204 547 -205 544 -205 b 534 -198 539 -201 536 -199 l 525 -191 b 481 -162 518 -187 490 -167 b 472 -155 477 -159 472 -156 b 468 -152 470 -155 469 -154 b 461 -149 466 -152 464 -151 b 428 -130 454 -145 441 -137 b 371 -99 413 -122 372 -99 b 363 -95 371 -99 367 -98 b 353 -91 357 -94 353 -91 b 348 -90 353 -91 352 -91 b 332 -81 343 -87 341 -86 b 27 -12 230 -37 127 -13 b 0 -5 4 -11 2 -11 b 0 58 0 -2 0 27 b 0 122 0 88 0 120 b 5 127 1 124 4 126 ',\n },\n barlineTick: {\n x_min: -80.3125,\n x_max: 78.9375,\n ha: 81,\n o: 'm 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 ',\n },\n breathMarkTick: {\n x_min: -80.3125,\n x_max: 78.9375,\n ha: 81,\n o: 'm 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 ',\n },\n segno: {\n x_min: -330.75,\n x_max: 329.390625,\n ha: 336,\n o: 'm -133 483 b -117 484 -127 484 -122 484 b 31 373 -51 484 9 440 b 35 348 34 365 35 356 b -25 285 35 313 10 285 b -87 331 -55 285 -76 302 b -167 402 -100 376 -133 402 b -191 398 -175 402 -183 401 b -227 341 -215 388 -227 369 b -225 320 -227 334 -227 327 b -13 74 -209 230 -125 133 b 6 65 -4 70 5 66 l 9 63 l 10 65 b 117 231 12 68 40 112 l 189 341 l 242 424 b 268 460 262 456 264 458 b 283 464 273 463 277 464 b 308 438 296 464 308 453 l 308 437 b 287 396 308 430 308 428 l 95 98 l 59 43 l 58 41 l 65 37 b 253 -156 151 -8 217 -77 b 281 -285 272 -199 281 -244 b 148 -481 281 -381 231 -463 b 115 -485 137 -484 126 -485 b -32 -376 51 -485 -9 -442 b -36 -349 -35 -366 -36 -358 b 25 -287 -36 -315 -12 -287 b 85 -333 54 -287 74 -302 b 166 -403 99 -377 133 -403 b 190 -399 174 -403 182 -402 b 225 -342 215 -390 225 -370 b 224 -322 225 -335 225 -328 b 12 -76 208 -231 125 -134 b -8 -66 2 -72 -6 -68 l -10 -65 l -12 -66 b -118 -231 -13 -68 -42 -113 l -190 -342 l -243 -426 b -269 -462 -264 -458 -265 -458 b -284 -466 -274 -464 -279 -466 b -310 -440 -298 -466 -310 -455 l -310 -438 b -288 -398 -310 -430 -308 -430 l -96 -99 l -59 -44 l -59 -43 l -66 -38 b -281 284 -198 33 -281 158 l -281 284 b -133 483 -281 392 -220 474 m 254 177 b 266 179 258 177 262 179 b 319 149 287 179 307 167 b 329 115 326 140 329 127 b 319 79 329 102 326 90 b 268 51 307 61 287 51 b 221 72 250 51 234 58 b 205 115 210 84 205 99 b 254 177 205 142 223 170 m -281 -54 b -269 -52 -277 -52 -273 -52 b -223 -73 -253 -52 -235 -59 b -206 -116 -212 -84 -206 -101 b -216 -151 -206 -129 -209 -141 b -269 -179 -228 -170 -249 -179 b -314 -159 -285 -179 -302 -173 b -330 -116 -325 -147 -330 -131 b -281 -54 -330 -88 -313 -61 ',\n },\n coda: {\n x_min: -311.6875,\n x_max: 310.328125,\n ha: 317,\n o: 'm -9 388 b -2 390 -8 390 -5 390 b 5 388 1 390 4 390 b 19 378 10 387 16 383 b 23 333 23 371 23 371 b 24 298 23 299 24 298 b 81 276 34 298 65 285 b 213 91 145 240 190 177 b 224 24 217 76 224 36 b 257 24 224 24 235 24 b 299 19 292 24 292 24 b 310 -1 306 15 310 6 b 299 -23 310 -11 306 -19 b 257 -27 292 -27 292 -27 b 224 -29 235 -27 224 -29 b 213 -95 224 -40 217 -80 b 81 -280 190 -181 145 -244 b 24 -301 65 -290 34 -301 b 23 -335 24 -301 23 -303 l 23 -340 b 17 -381 23 -374 23 -374 b -1 -391 13 -388 5 -391 b -21 -381 -9 -391 -17 -388 b -27 -340 -27 -374 -27 -374 l -27 -335 b -28 -301 -27 -303 -27 -301 b -85 -280 -38 -301 -69 -290 b -217 -95 -149 -244 -194 -181 b -228 -29 -221 -80 -228 -40 b -259 -27 -228 -29 -238 -27 b -300 -23 -294 -27 -294 -27 b -311 -2 -307 -19 -311 -11 b -294 23 -311 8 -304 19 b -259 24 -291 23 -284 24 b -228 24 -239 24 -228 24 b -217 91 -228 36 -221 76 b -85 276 -194 177 -149 240 b -28 298 -69 285 -38 298 b -27 333 -27 298 -27 299 b -27 371 -27 362 -27 369 b -9 388 -24 378 -17 385 m -27 136 b -28 247 -27 197 -28 247 b -61 216 -31 247 -53 226 b -123 33 -95 172 -121 98 l -125 24 l -76 24 l -27 24 l -27 136 m 29 242 b 24 247 27 245 24 247 b 23 136 24 247 23 197 l 23 24 l 72 24 l 121 24 l 119 33 b 29 242 115 116 77 206 m -27 -140 l -27 -27 l -76 -27 l -125 -27 l -123 -36 b -61 -220 -121 -102 -95 -176 b -28 -251 -53 -230 -31 -251 b -27 -140 -28 -251 -27 -201 m 119 -36 l 121 -27 l 72 -27 l 23 -27 l 23 -140 b 24 -251 23 -201 24 -251 b 57 -220 27 -251 49 -230 b 119 -36 91 -176 117 -102 ',\n },\n gClef: {\n x_min: -1.359375,\n x_max: 847.96875,\n ha: 865,\n o: 'm 488 1499 b 495 1500 490 1500 492 1500 b 541 1465 507 1500 521 1490 b 679 1078 622 1372 679 1210 b 677 1050 679 1068 677 1060 b 477 642 668 893 604 764 l 443 609 l 431 596 l 431 592 l 438 562 l 449 508 l 460 458 b 481 355 475 390 481 355 b 481 355 481 355 481 355 b 490 356 481 355 485 355 b 528 358 495 356 511 358 b 558 356 540 358 552 356 b 839 95 699 338 808 237 b 847 22 845 72 847 47 b 631 -303 847 -113 766 -242 b 620 -309 623 -308 620 -309 l 620 -310 b 631 -359 620 -310 626 -333 l 646 -435 l 660 -496 b 672 -588 668 -535 672 -563 b 664 -653 672 -610 669 -630 b 383 -875 630 -792 509 -875 b 201 -810 321 -875 257 -855 b 129 -680 151 -768 129 -730 b 274 -530 129 -592 200 -530 b 351 -553 300 -530 326 -538 b 412 -669 393 -582 412 -626 b 287 -805 412 -735 366 -800 l 279 -805 l 285 -809 b 383 -830 318 -823 351 -830 b 586 -718 464 -830 540 -789 b 626 -584 612 -678 626 -631 b 619 -528 626 -566 623 -548 b 612 -495 619 -526 616 -510 b 577 -324 590 -387 577 -324 b 577 -324 577 -324 577 -324 b 568 -326 575 -324 571 -324 b 528 -334 558 -328 537 -333 b 465 -338 506 -337 485 -338 b 24 -11 269 -338 87 -206 b -1 145 8 41 -1 93 b 96 442 -1 249 32 351 b 322 714 166 541 236 626 l 352 745 l 345 782 l 332 843 l 315 921 b 303 984 310 950 304 978 b 295 1082 298 1017 295 1049 b 413 1426 295 1208 336 1329 b 488 1499 436 1456 477 1496 m 549 1301 b 541 1301 547 1301 544 1301 b 411 1207 500 1301 447 1263 b 355 1004 374 1152 355 1079 b 359 942 355 984 356 963 b 371 881 362 927 363 917 l 385 818 b 392 782 389 799 392 784 l 392 782 b 434 828 393 782 424 816 b 607 1165 534 941 594 1060 b 608 1193 608 1175 608 1183 b 597 1270 608 1224 604 1254 b 549 1301 589 1286 571 1299 m 398 528 b 393 555 396 542 393 553 b 392 555 393 555 393 555 b 317 470 390 555 347 505 b 190 298 266 408 212 334 b 127 70 148 227 127 148 b 155 -77 127 19 137 -30 b 468 -303 209 -216 333 -303 b 519 -299 484 -303 502 -302 b 568 -284 541 -295 568 -287 l 568 -284 b 563 -263 568 -284 566 -274 l 534 -120 l 511 -13 l 496 61 l 480 133 b 469 187 472 176 469 187 b 468 188 469 187 469 188 b 416 162 462 188 430 172 b 337 13 364 126 337 69 b 413 -124 337 -40 363 -93 b 428 -144 424 -131 428 -137 b 428 -149 428 -145 428 -148 b 409 -166 426 -161 419 -166 b 394 -162 405 -166 400 -165 b 240 77 302 -122 240 -27 l 240 77 b 430 342 240 197 315 301 l 436 344 l 426 394 l 398 528 m 548 194 b 526 195 540 195 532 195 b 519 195 524 195 521 195 l 514 195 l 518 177 l 539 79 l 552 15 l 566 -48 l 594 -187 l 605 -240 b 612 -266 609 -254 611 -266 b 612 -266 612 -266 612 -266 b 641 -248 613 -266 630 -256 b 744 -98 692 -212 730 -156 b 751 -40 749 -79 751 -59 b 548 194 751 76 665 181 ',\n },\n cClef: {\n x_min: 0,\n x_max: 873.828125,\n ha: 892,\n o: 'm 0 0 l 0 703 l 81 703 l 164 703 l 164 0 l 164 -705 l 81 -705 l 0 -705 l 0 0 m 225 0 l 225 703 l 246 703 l 268 703 l 268 366 l 268 30 l 274 36 b 314 79 284 44 302 63 b 413 302 357 137 392 213 b 432 327 419 324 421 327 b 449 306 443 327 447 322 b 611 115 457 195 529 115 b 651 122 624 115 638 117 b 728 316 705 140 724 188 b 729 388 728 342 729 366 b 671 635 729 533 711 602 b 581 662 649 652 616 662 b 477 637 545 662 510 653 l 475 635 l 477 634 b 503 627 488 632 495 631 b 545 556 532 612 545 584 b 491 480 545 524 526 491 b 465 474 481 476 473 474 b 379 563 417 474 379 516 b 389 602 379 576 382 588 b 541 691 409 641 479 681 b 582 694 555 692 568 694 b 865 462 714 694 834 598 b 873 392 871 440 873 416 b 865 317 873 367 871 341 b 639 84 839 194 748 101 b 612 83 630 83 620 83 b 511 116 577 83 543 94 b 504 120 509 119 506 120 b 504 120 504 120 504 120 b 469 59 504 120 488 93 l 432 -1 l 469 -61 b 504 -122 488 -94 504 -122 b 504 -122 504 -122 504 -122 b 511 -117 506 -122 509 -120 b 612 -84 543 -95 577 -84 b 665 -91 630 -84 647 -87 b 869 -338 771 -122 850 -216 b 873 -392 872 -356 873 -374 b 798 -595 873 -469 847 -539 b 581 -695 741 -662 660 -695 b 406 -626 517 -695 454 -671 b 381 -563 389 -607 381 -585 b 465 -477 381 -519 413 -477 b 545 -559 514 -477 545 -519 b 503 -628 545 -587 532 -613 b 477 -635 495 -632 488 -634 l 475 -637 l 477 -638 b 581 -663 510 -655 545 -663 b 671 -637 616 -663 649 -653 b 729 -391 711 -603 729 -534 b 728 -317 729 -367 728 -344 b 623 -117 722 -173 698 -124 b 611 -116 619 -116 615 -116 b 449 -308 528 -116 457 -198 b 432 -328 447 -323 443 -328 b 413 -303 421 -328 419 -326 b 314 -80 392 -215 357 -138 b 274 -37 302 -65 284 -45 l 268 -31 l 268 -367 l 268 -705 l 246 -705 l 225 -705 l 225 0 ',\n },\n fClef: {\n x_min: -1.359375,\n x_max: 899.703125,\n ha: 918,\n o: 'm 307 349 b 332 351 315 351 323 351 b 443 340 367 351 408 347 b 741 47 607 306 720 195 b 744 0 743 31 744 16 b 660 -303 744 -90 713 -206 b 28 -755 534 -531 304 -695 b 14 -756 23 -755 19 -756 b -1 -741 4 -756 -1 -750 b 21 -720 -1 -731 1 -728 b 567 -56 337 -601 548 -344 b 568 -11 568 -41 568 -24 b 442 285 568 129 525 233 b 325 319 406 308 367 319 b 93 177 232 319 137 266 b 84 154 91 170 84 155 b 84 154 84 154 84 154 b 88 156 84 154 85 155 b 159 177 110 170 134 177 b 257 134 194 177 231 162 b 294 41 281 108 294 73 b 171 -97 294 -24 246 -90 b 156 -98 166 -97 161 -98 b 6 74 73 -98 6 -22 b 6 80 6 76 6 79 b 307 349 10 223 141 340 m 839 215 b 845 216 841 216 842 216 b 862 213 852 216 860 215 b 899 163 887 206 899 184 b 872 117 899 145 890 127 b 847 111 865 112 856 111 b 808 130 833 111 818 117 b 796 162 800 140 796 151 b 839 215 796 187 812 212 m 839 -112 b 845 -112 841 -112 842 -112 b 862 -115 852 -112 860 -113 b 899 -165 887 -122 899 -144 b 872 -210 899 -183 890 -201 b 847 -217 865 -215 856 -217 b 808 -198 833 -217 818 -210 b 796 -165 800 -188 796 -177 b 839 -112 796 -140 812 -116 ',\n },\n unpitchedPercussionClef1: {\n x_min: 0,\n x_max: 464.140625,\n ha: 474,\n o: 'm 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 ',\n },\n '6stringTabClef': {\n x_min: -1.359375,\n x_max: 680.5625,\n ha: 694,\n o: 'm 597 1042 b 604 1042 600 1042 602 1042 b 642 1002 627 1042 642 1022 b 619 966 642 988 635 974 b 439 927 574 942 503 927 l 426 927 l 426 921 b 430 838 428 893 430 866 b 345 480 430 696 398 560 b 179 391 307 423 249 391 b 156 392 171 391 164 392 b 138 394 149 394 142 394 b 103 434 115 396 103 416 b 129 471 103 451 111 466 b 141 474 133 473 137 474 b 172 459 153 474 164 469 b 181 455 175 456 176 455 b 187 456 182 455 185 455 b 253 520 212 460 234 483 b 315 836 294 605 315 714 b 311 928 315 867 314 898 b 302 945 310 943 311 942 b 245 953 283 950 262 953 b 130 891 193 953 149 931 b 84 860 119 870 102 860 b 36 905 61 860 39 877 b 36 910 36 907 36 909 b 80 970 36 931 50 949 b 249 1017 125 1000 187 1017 b 322 1009 273 1017 299 1014 l 341 1003 b 436 991 372 995 406 991 b 577 1031 495 991 545 1004 b 597 1042 583 1038 590 1041 m 416 360 b 424 360 419 360 421 360 b 481 309 454 360 479 338 b 503 145 484 280 495 199 b 585 -185 525 16 555 -106 b 630 -245 596 -213 613 -237 l 634 -247 l 638 -245 b 647 -244 641 -245 645 -244 b 680 -278 666 -244 680 -262 b 664 -308 680 -290 675 -301 b 638 -312 658 -310 650 -312 b 613 -309 631 -312 623 -310 b 477 -201 555 -303 502 -260 b 417 -2 460 -159 434 -72 b 416 5 417 1 416 5 b 416 5 416 5 416 5 b 411 -5 415 5 413 0 b 359 -97 397 -33 377 -70 b 353 -106 355 -102 353 -105 b 359 -112 353 -108 355 -109 b 409 -130 375 -123 390 -129 b 426 -134 420 -130 421 -131 b 431 -147 428 -137 431 -141 b 420 -162 431 -152 427 -159 b 382 -169 409 -166 396 -169 b 323 -155 363 -169 341 -165 l 317 -152 l 314 -155 b 62 -303 240 -240 148 -295 b 36 -305 55 -305 44 -305 b 23 -303 29 -305 24 -305 b -1 -273 6 -299 -1 -287 b 31 -240 -1 -256 10 -240 b 36 -240 32 -240 34 -240 b 42 -241 38 -241 39 -241 b 134 -204 63 -241 99 -226 b 367 288 265 -115 357 81 b 375 330 368 313 370 320 b 416 360 383 347 400 358 m 360 -359 b 379 -359 363 -359 371 -359 b 424 -360 396 -359 416 -359 b 646 -502 536 -373 624 -430 b 649 -527 649 -510 649 -519 b 530 -673 649 -578 604 -635 l 521 -677 l 529 -681 b 653 -811 592 -714 637 -762 b 660 -853 658 -827 660 -839 b 645 -911 660 -873 656 -892 b 426 -1021 608 -981 519 -1021 b 283 -989 377 -1021 328 -1011 b 235 -949 249 -972 239 -964 b 234 -936 234 -946 234 -941 b 234 -928 234 -934 234 -931 l 235 -925 l 234 -927 l 225 -934 b 87 -982 186 -966 138 -982 b 80 -982 85 -982 83 -982 b 55 -981 70 -981 58 -981 b 17 -943 32 -981 17 -964 b 54 -904 17 -921 35 -904 b 78 -914 62 -904 72 -909 l 83 -918 l 88 -918 b 190 -831 122 -918 166 -881 b 269 -506 242 -727 269 -612 b 268 -462 269 -492 269 -477 b 266 -449 266 -458 266 -452 b 265 -444 266 -445 266 -444 b 257 -446 264 -444 261 -445 b 132 -545 196 -470 152 -505 b 88 -573 122 -563 104 -573 b 39 -523 63 -573 39 -553 b 63 -476 39 -505 44 -494 b 360 -359 136 -408 235 -369 m 419 -424 b 393 -423 411 -423 406 -423 l 375 -423 l 377 -426 b 379 -439 377 -427 378 -434 b 383 -510 382 -463 383 -487 b 314 -811 383 -609 360 -710 b 266 -893 296 -850 285 -870 b 264 -898 265 -896 264 -898 l 264 -898 b 264 -898 264 -898 264 -898 b 268 -898 264 -898 266 -898 b 273 -898 270 -898 272 -898 b 300 -909 283 -898 291 -900 b 426 -957 340 -941 385 -957 b 476 -949 443 -957 460 -954 b 547 -853 522 -931 547 -893 b 485 -745 547 -816 526 -775 b 397 -707 460 -727 432 -714 b 366 -675 375 -703 366 -692 b 396 -642 366 -657 377 -645 b 530 -557 455 -637 511 -601 b 536 -527 534 -548 536 -537 b 419 -424 536 -480 490 -437 ',\n },\n timeSig0: {\n x_min: 0,\n x_max: 514.5,\n ha: 525,\n o: 'm 236 648 b 246 648 238 648 242 648 b 288 646 261 648 283 648 b 472 513 364 634 428 587 b 514 347 502 464 514 413 b 462 163 514 272 499 217 b 257 44 409 83 333 44 b 50 163 181 44 103 83 b 0 347 14 217 0 272 b 40 513 0 413 12 464 b 236 648 87 591 155 638 m 277 614 b 253 616 273 616 261 616 b 242 616 247 616 243 616 b 170 499 193 609 181 589 b 159 348 163 446 159 398 b 166 222 159 308 161 266 b 201 91 174 138 183 106 b 257 76 215 81 235 76 b 311 91 277 76 299 81 b 347 222 330 106 338 138 b 353 348 352 266 353 308 b 344 499 353 398 351 446 b 277 614 333 587 322 606 m 257 -1 l 258 -1 l 255 -1 l 257 -1 m 257 673 l 258 673 l 255 673 l 257 673 ',\n },\n timeSig1: {\n x_min: -1.359375,\n x_max: 344.359375,\n ha: 351,\n o: 'm 126 637 l 129 638 l 198 638 l 266 638 l 269 635 b 274 631 272 634 273 632 l 277 627 l 277 395 b 279 156 277 230 277 161 b 329 88 281 123 295 106 b 344 69 341 81 344 79 b 337 55 344 62 343 59 l 333 54 l 197 54 l 61 54 l 58 55 b 50 69 53 59 50 62 b 65 88 50 79 53 81 b 80 97 72 91 74 93 b 117 156 103 113 112 129 b 117 345 117 161 117 222 l 117 528 l 100 503 l 38 406 b 14 383 24 384 23 383 b -1 398 5 383 -1 390 b 4 415 -1 403 1 409 b 16 437 5 416 10 426 l 72 539 l 100 596 b 121 632 119 631 119 631 b 126 637 122 634 125 635 m 171 -1 l 172 -1 l 170 -1 l 171 -1 m 171 673 l 172 673 l 170 673 l 171 673 ',\n },\n timeSig2: {\n x_min: -1.359375,\n x_max: 458.6875,\n ha: 468,\n o: 'm 197 648 b 216 648 201 648 208 648 b 258 646 232 648 253 648 b 419 546 333 637 393 599 b 432 489 428 528 432 509 b 356 342 432 440 405 384 b 235 278 322 313 288 295 b 69 170 166 256 107 217 b 69 169 69 170 69 169 b 69 169 69 169 69 169 b 74 173 69 169 72 170 b 209 222 112 204 163 222 b 310 195 247 222 274 215 b 371 179 332 184 352 179 b 396 181 379 179 387 179 b 428 202 409 184 423 194 b 442 212 431 209 436 212 b 458 197 450 212 458 206 b 441 148 458 190 449 165 b 299 44 409 84 353 44 b 288 45 295 44 292 44 b 250 61 274 45 268 49 b 122 99 212 86 164 99 b 73 91 104 99 88 97 b 28 63 53 84 34 72 b 14 54 25 56 20 54 b 1 62 9 54 4 56 l -1 65 l -1 79 b 0 99 -1 91 0 95 b 2 113 1 102 2 108 b 164 309 20 197 81 272 b 285 470 232 341 277 398 b 287 487 287 476 287 481 b 171 595 287 551 239 595 b 155 595 166 595 160 595 b 142 592 145 594 142 594 b 145 589 142 592 142 591 b 179 527 168 576 179 551 b 132 455 179 496 163 467 b 104 451 122 452 112 451 b 27 530 62 451 27 487 b 29 555 27 538 27 546 b 197 648 44 601 115 639 m 228 -1 l 230 -1 l 227 -1 l 228 -1 m 228 673 l 230 673 l 227 673 l 228 673 ',\n },\n timeSig3: {\n x_min: -1.359375,\n x_max: 409.6875,\n ha: 418,\n o: 'm 174 648 b 191 648 176 648 183 648 b 225 648 204 648 220 648 b 402 523 317 638 389 588 b 404 503 404 517 404 510 b 402 484 404 495 404 488 b 264 373 389 437 334 394 b 257 370 259 371 257 371 b 257 370 257 370 257 370 b 264 369 258 370 261 369 b 409 202 359 334 409 267 b 318 72 409 152 381 104 b 200 43 281 52 240 43 b 23 113 134 43 69 68 b 0 169 6 129 0 149 b 77 249 0 210 29 249 l 77 249 b 152 174 125 249 152 212 b 103 102 152 145 137 116 b 103 102 103 102 103 102 b 147 94 103 101 132 95 b 153 94 149 94 151 94 b 265 206 219 94 265 141 b 264 226 265 213 265 219 b 147 355 253 299 204 353 b 126 371 133 356 126 362 b 147 388 126 383 132 388 b 254 474 196 391 238 424 b 259 502 258 484 259 494 b 182 592 259 544 228 582 b 156 595 175 595 166 595 b 115 592 142 595 129 594 l 111 591 l 115 588 b 152 524 141 574 152 549 b 92 449 152 491 130 458 b 76 448 87 448 81 448 b -1 530 32 448 -1 488 b 20 581 -1 548 5 566 b 174 648 55 619 108 641 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 ',\n },\n timeSig4: {\n x_min: 0,\n x_max: 468.21875,\n ha: 478,\n o: 'm 174 637 b 232 638 175 638 189 638 b 277 638 245 638 259 638 l 378 638 l 381 635 b 389 623 386 632 389 627 b 382 609 389 617 386 613 b 366 589 381 606 372 598 l 313 528 l 245 451 l 209 410 l 155 348 l 84 267 b 59 240 72 252 59 240 b 59 240 59 240 59 240 b 151 238 59 238 68 238 l 242 238 l 242 303 b 243 371 242 369 242 370 b 289 426 245 374 254 385 l 303 441 l 317 456 l 338 483 l 360 506 l 371 520 b 386 527 375 526 381 527 b 400 519 392 527 397 524 b 401 440 401 516 401 514 b 401 377 401 423 401 402 l 401 238 l 426 238 b 453 237 449 238 450 238 b 465 217 461 234 465 226 b 460 202 465 212 464 206 b 426 197 454 197 453 197 l 401 197 l 401 180 b 451 88 402 129 412 109 b 468 69 465 81 468 79 b 461 55 468 62 466 59 l 458 54 l 321 54 l 185 54 l 182 55 b 175 69 176 59 175 62 b 191 88 175 79 176 81 b 240 180 230 109 240 129 l 240 197 l 125 197 b 73 195 104 195 87 195 b 8 197 10 195 9 197 b 0 212 2 199 0 205 b 0 212 0 212 0 212 b 20 242 0 219 0 219 b 163 610 104 344 163 492 b 174 637 163 628 166 634 m 234 -1 l 235 -1 l 232 -1 l 234 -1 m 234 673 l 235 673 l 232 673 l 234 673 ',\n },\n timeSig5: {\n x_min: 0,\n x_max: 409.6875,\n ha: 418,\n o: 'm 47 637 b 53 638 49 638 50 638 b 69 634 55 638 61 637 b 210 610 114 619 161 610 b 363 634 259 610 311 619 b 382 638 372 637 378 638 b 392 634 386 638 389 637 b 397 623 396 630 397 627 b 393 610 397 620 396 616 b 298 505 368 552 338 520 b 212 494 277 498 246 494 b 65 517 163 494 106 502 b 61 517 62 517 61 517 b 61 517 61 517 61 517 b 51 408 61 517 51 412 b 51 408 51 408 51 408 b 51 408 51 408 51 408 b 61 412 53 408 55 409 b 125 434 80 421 103 430 b 185 441 145 440 166 441 b 409 244 310 441 409 353 b 401 191 409 227 406 209 b 197 43 375 105 287 43 b 159 47 183 43 171 44 b 23 123 112 56 61 86 b 0 180 6 140 0 159 b 76 260 0 220 31 260 b 92 259 81 260 87 259 b 152 183 132 251 152 216 b 100 112 152 152 134 122 b 95 111 98 112 95 111 b 95 111 95 111 95 111 b 129 98 95 109 119 101 b 148 97 136 97 141 97 b 264 235 206 97 261 158 b 265 248 265 240 265 244 b 210 398 265 312 243 373 b 179 408 201 406 194 408 b 174 408 178 408 176 408 b 53 369 130 408 88 394 b 34 359 39 359 38 359 b 17 374 24 359 17 365 b 39 628 17 384 38 625 b 47 637 40 631 43 635 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 ',\n },\n timeSig6: {\n x_min: 0,\n x_max: 475.03125,\n ha: 485,\n o: 'm 255 648 b 274 648 259 648 266 648 b 314 646 288 648 307 648 b 450 555 374 637 438 594 b 454 530 453 546 454 538 b 375 451 454 485 416 451 b 328 467 359 451 343 455 b 300 526 310 483 300 503 b 352 598 300 557 319 589 b 356 599 355 598 356 599 b 352 602 356 599 355 601 b 288 616 330 612 308 616 b 210 584 257 616 230 605 b 164 433 189 559 174 508 b 160 374 163 415 160 381 b 160 374 160 374 160 374 b 160 374 160 374 160 374 b 168 377 160 374 164 376 b 258 395 200 390 228 395 b 366 367 294 395 328 387 b 475 223 436 333 475 283 b 472 197 475 215 473 206 b 349 65 462 141 419 95 b 259 43 317 51 288 43 b 167 69 230 43 200 52 b 4 290 80 113 20 195 b 0 349 1 309 0 328 b 20 467 0 391 6 433 b 255 648 58 563 155 637 m 269 363 b 257 363 265 363 261 363 b 210 345 236 363 220 356 b 186 226 196 324 186 272 b 187 198 186 216 186 206 b 213 95 191 151 202 112 b 257 76 221 83 238 76 b 270 77 261 76 266 76 b 321 156 299 81 310 99 b 329 229 326 183 329 206 b 321 301 329 252 326 274 b 269 363 311 342 298 359 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 ',\n },\n timeSig7: {\n x_min: 0,\n x_max: 442.359375,\n ha: 451,\n o: 'm 147 648 b 166 649 153 649 160 649 b 313 598 217 649 273 630 b 340 587 323 588 328 587 l 341 587 b 412 628 367 587 390 601 b 427 638 416 635 421 638 b 439 632 431 638 435 637 b 442 623 441 630 442 628 b 430 569 442 616 439 603 b 352 369 408 492 377 410 b 300 259 325 324 313 298 b 273 84 283 205 273 140 b 265 55 273 65 272 59 l 261 54 l 181 54 l 99 54 l 96 55 b 91 61 95 56 92 59 l 89 63 l 89 77 b 147 263 89 133 111 202 b 261 401 176 313 212 355 b 378 541 315 449 349 489 l 382 548 l 375 544 b 240 495 333 512 285 495 b 129 535 198 495 160 509 b 84 560 108 552 95 560 b 76 559 81 560 78 560 b 31 487 59 555 43 530 b 14 470 27 473 24 470 b 1 477 8 470 4 471 l 0 480 l 0 553 l 0 627 l 1 630 b 16 638 4 635 9 638 b 23 635 17 638 20 637 b 49 626 36 626 39 626 b 96 638 59 626 80 630 b 104 639 99 638 102 639 b 117 644 107 641 112 642 b 147 648 125 645 137 648 m 220 -1 l 221 -1 l 219 -1 l 220 -1 m 220 673 l 221 673 l 219 673 l 220 673 ',\n },\n timeSig8: {\n x_min: 0,\n x_max: 488.640625,\n ha: 499,\n o: 'm 217 648 b 245 649 225 648 235 649 b 453 516 343 649 430 595 b 458 478 455 503 458 491 b 412 370 458 440 441 398 b 411 369 412 369 411 369 b 415 365 411 367 412 367 b 488 231 462 331 488 281 b 472 165 488 208 483 186 b 243 43 434 86 338 43 b 63 104 178 43 112 62 b 0 233 20 140 0 186 b 73 365 0 283 24 331 l 77 369 l 72 374 b 29 476 42 406 29 441 b 217 648 29 557 103 635 m 258 605 b 242 606 253 605 247 606 b 157 552 198 606 157 580 b 160 541 157 548 159 544 b 319 413 176 503 242 452 l 337 403 l 338 406 b 359 476 352 428 359 452 b 258 605 359 537 318 595 m 138 326 b 130 330 134 328 130 330 b 130 330 130 330 130 330 b 107 305 127 330 112 313 b 84 231 91 281 84 256 b 243 86 84 156 151 86 b 249 87 245 86 246 87 b 347 156 303 88 347 120 b 344 172 347 162 345 167 b 156 319 325 227 257 281 b 138 326 151 322 144 324 m 243 -1 l 245 -1 l 242 -1 l 243 -1 m 243 673 l 245 673 l 242 673 l 243 673 ',\n },\n timeSig9: {\n x_min: 0,\n x_max: 475.03125,\n ha: 485,\n o: 'm 191 646 b 212 649 198 648 205 649 b 255 644 227 649 243 646 b 458 448 348 616 428 539 b 475 342 469 415 475 378 b 460 244 475 308 469 274 b 193 44 421 124 303 44 b 91 69 157 44 122 51 b 19 161 43 97 19 126 b 21 181 19 167 20 174 b 98 241 32 220 65 241 b 170 186 129 241 160 223 b 172 166 171 179 172 173 b 121 94 172 134 152 102 b 117 93 118 94 117 93 b 121 90 117 93 118 91 b 185 76 142 80 164 76 b 270 119 220 76 251 91 b 308 259 287 145 300 194 b 313 317 310 277 313 310 b 313 317 313 317 313 317 b 313 317 313 317 313 317 b 304 315 313 317 308 316 b 216 295 273 302 245 295 b 145 308 193 295 170 299 b 19 398 88 327 42 360 b 0 469 5 420 0 444 b 24 551 0 496 8 526 b 191 646 54 596 125 637 m 227 614 b 215 616 224 616 220 616 b 202 614 210 616 206 616 b 152 535 174 610 163 592 b 144 463 147 509 144 485 b 152 391 144 440 147 417 b 216 328 163 344 179 328 b 280 391 253 328 269 344 b 288 463 285 417 288 440 b 280 535 288 485 285 509 b 227 614 269 594 258 610 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 ',\n },\n timeSigCommon: {\n x_min: -1.359375,\n x_max: 556.6875,\n ha: 568,\n o: 'm 294 322 b 318 323 299 322 308 323 b 360 320 334 323 352 322 b 526 217 430 310 490 273 b 543 166 537 202 543 184 b 447 70 543 117 503 70 b 445 70 447 70 446 70 b 359 159 394 72 359 113 b 368 201 359 173 362 187 b 442 245 382 229 412 245 b 455 244 446 245 451 245 b 460 244 458 244 460 244 b 460 244 460 244 460 244 b 454 248 460 244 458 245 b 325 291 417 276 372 291 b 285 287 313 291 299 290 b 144 -2 183 269 144 190 b 281 -290 144 -208 179 -280 b 304 -291 289 -291 298 -291 b 524 -105 412 -291 506 -212 b 541 -84 526 -88 530 -84 b 556 -101 551 -84 556 -90 b 549 -138 556 -111 553 -122 b 334 -322 521 -237 435 -310 b 302 -324 323 -323 313 -324 b 13 -101 172 -324 54 -234 b -1 -1 4 -68 -1 -34 b 294 322 -1 161 121 303 ',\n },\n timeSigCutCommon: {\n x_min: 0,\n x_max: 556.6875,\n ha: 568,\n o: 'm 289 545 b 298 546 292 545 295 546 b 318 533 306 546 315 541 b 319 428 319 530 319 528 l 319 327 l 334 327 b 526 223 412 326 485 285 b 543 172 537 206 543 190 b 447 76 543 122 503 76 b 445 76 446 76 446 76 b 359 165 394 77 359 119 b 368 205 359 179 362 192 b 441 251 382 233 412 251 b 455 249 446 251 451 251 b 460 248 458 249 460 248 b 460 248 460 248 460 248 b 454 254 460 249 458 251 b 334 295 419 280 378 294 l 319 295 l 319 4 l 319 -287 l 321 -285 b 328 -285 322 -285 325 -285 b 524 -99 424 -277 507 -198 b 541 -79 526 -84 530 -79 b 556 -97 551 -79 556 -84 b 548 -133 556 -105 553 -117 b 334 -317 521 -233 434 -306 b 322 -319 329 -317 323 -317 l 319 -319 l 319 -424 b 319 -471 319 -444 319 -459 b 313 -541 319 -544 318 -535 b 298 -548 308 -545 303 -548 b 279 -534 289 -548 281 -542 b 277 -424 277 -531 277 -530 l 277 -317 l 273 -317 b 13 -95 153 -305 51 -217 b 0 2 4 -62 0 -29 b 182 295 0 126 66 238 b 274 324 210 309 249 320 l 277 324 l 277 427 b 279 533 277 528 277 530 b 289 545 281 538 285 542 m 277 2 b 277 291 277 161 277 291 b 268 288 277 291 273 290 b 144 1 179 265 144 184 b 276 -284 144 -199 175 -267 l 277 -285 l 277 2 ',\n },\n timeSigPlus: {\n x_min: 0,\n x_max: 319.859375,\n ha: 326,\n o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ',\n },\n timeSigPlusSmall: {\n x_min: 0,\n x_max: 319.859375,\n ha: 326,\n o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ',\n },\n timeSigMinus: {\n x_min: 0,\n x_max: 318.5,\n ha: 325,\n o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ',\n },\n timeSigParensRight: {\n x_min: 25.859375,\n x_max: 164.6875,\n ha: 168,\n o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ',\n },\n timeSigParensRightSmall: {\n x_min: 25.859375,\n x_max: 164.6875,\n ha: 168,\n o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ',\n },\n timeSigParensLeft: {\n x_min: -166.0625,\n x_max: -25.859375,\n ha: 0,\n o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ',\n },\n timeSigParensLeftSmall: {\n x_min: -166.0625,\n x_max: -25.859375,\n ha: 0,\n o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ',\n },\n noteheadDoubleWhole: {\n x_min: 0,\n x_max: 902.421875,\n ha: 921,\n o: 'm 17 240 b 24 241 19 241 21 241 b 32 240 28 241 31 241 b 46 229 38 238 43 234 b 50 88 50 223 50 237 b 50 -1 50 63 50 34 b 50 -90 50 -36 50 -65 b 46 -231 50 -238 50 -224 b 25 -242 42 -238 34 -242 b 0 -224 14 -242 4 -235 b 0 2 0 -222 0 -108 b 0 223 0 112 0 220 b 17 240 2 230 9 237 m 110 240 b 118 241 111 241 114 241 b 126 240 121 241 123 241 b 142 223 133 237 140 230 b 144 123 144 220 144 205 b 144 29 144 45 144 29 b 144 29 144 29 144 29 b 393 183 166 106 264 167 b 450 186 412 184 431 186 b 756 29 600 186 732 120 b 756 29 756 29 756 29 b 758 123 758 29 758 45 b 760 227 758 226 758 223 b 784 241 766 237 774 241 b 804 229 792 241 800 237 b 809 88 808 223 809 237 l 809 -1 l 809 -90 b 804 -231 809 -238 808 -224 b 784 -242 800 -238 792 -242 b 762 -231 775 -242 766 -238 b 758 -124 756 -224 758 -231 b 756 -30 758 -47 758 -30 b 756 -30 756 -30 756 -30 b 509 -184 736 -108 637 -169 b 450 -187 488 -187 469 -187 b 144 -30 300 -187 168 -122 b 144 -30 144 -30 144 -30 b 144 -124 144 -30 144 -47 b 140 -231 144 -231 144 -224 b 118 -242 134 -238 126 -242 b 92 -224 107 -242 96 -235 b 92 2 92 -222 92 -108 b 92 223 92 112 92 220 b 110 240 95 230 102 237 m 432 161 b 413 162 426 162 420 162 b 313 41 351 162 313 109 b 347 -73 313 5 323 -34 b 487 -163 385 -133 439 -163 b 578 -97 526 -163 562 -142 b 588 -43 585 -80 588 -62 b 432 161 588 47 518 147 m 868 240 b 876 241 869 241 872 241 b 884 240 879 241 882 241 b 898 229 890 238 894 234 b 902 88 902 223 902 237 l 902 -1 l 902 -90 b 898 -231 902 -238 902 -224 b 876 -242 892 -238 884 -242 b 852 -224 865 -242 854 -235 b 850 2 850 -222 850 -108 b 852 223 850 112 850 220 b 868 240 853 230 860 237 ',\n },\n noteheadWhole: {\n x_min: 0,\n x_max: 619.3125,\n ha: 632,\n o: 'm 274 184 b 307 186 285 186 296 186 b 616 22 465 186 597 116 b 619 -1 617 13 619 5 b 308 -187 619 -104 483 -187 b 0 -1 133 -187 0 -102 b 5 36 0 11 1 23 b 274 184 29 115 141 176 m 289 161 b 272 162 284 162 277 162 b 171 41 209 162 171 108 b 205 -73 171 5 182 -34 b 345 -163 243 -133 298 -163 b 436 -98 385 -163 420 -142 b 446 -43 443 -80 446 -62 b 289 161 446 47 377 147 ',\n },\n noteheadHalf: {\n x_min: 0,\n x_max: 428.75,\n ha: 438,\n o: 'm 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 m 366 131 b 352 134 362 133 357 134 b 219 81 321 134 269 115 b 47 -111 126 23 50 -62 b 47 -112 47 -111 47 -112 b 77 -136 47 -129 58 -136 b 264 -45 118 -136 194 -101 b 382 109 336 12 382 76 b 366 131 382 120 377 129 ',\n },\n noteheadBlack: {\n x_min: 0,\n x_max: 428.75,\n ha: 438,\n o: 'm 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 ',\n },\n noteheadXWhole: {\n x_min: 0,\n x_max: 598.890625,\n ha: 611,\n o: 'm 62 181 b 77 183 66 183 72 183 b 91 181 83 183 88 183 b 202 131 100 180 106 177 l 299 87 l 394 131 b 517 183 499 181 502 183 b 519 183 517 183 518 183 b 598 104 567 183 598 144 b 577 49 598 84 592 65 b 518 15 567 38 563 37 b 484 0 499 6 484 0 b 518 -16 484 -1 499 -8 b 577 -51 563 -38 567 -40 b 598 -105 592 -66 598 -86 b 519 -184 598 -145 567 -184 b 517 -184 518 -184 517 -184 b 394 -133 502 -184 499 -183 l 299 -88 l 202 -133 b 81 -184 99 -183 95 -184 b 77 -184 80 -184 78 -184 b 0 -105 29 -184 0 -145 b 20 -51 0 -86 5 -66 b 80 -16 29 -40 34 -38 b 114 -1 98 -8 114 -1 b 80 15 114 0 98 6 b 20 49 34 37 29 38 b 0 104 6 65 0 84 b 62 181 0 140 23 174 m 88 134 b 74 136 85 134 80 136 b 68 134 72 136 69 136 b 46 104 54 130 46 117 b 55 81 46 95 49 88 b 149 34 59 76 53 80 b 224 -1 190 15 224 0 b 144 -38 224 -1 187 -18 b 54 -84 59 -79 58 -79 b 46 -105 49 -90 46 -98 b 76 -137 46 -122 58 -137 b 78 -137 77 -137 77 -137 b 194 -86 87 -137 76 -141 b 298 -36 250 -58 298 -36 b 298 -36 298 -36 298 -36 b 402 -84 299 -36 345 -58 b 518 -137 522 -141 510 -137 b 521 -137 519 -137 519 -137 b 551 -105 539 -137 551 -122 b 541 -83 551 -98 548 -90 b 447 -36 537 -77 544 -81 b 374 -1 406 -16 374 -1 b 447 34 374 0 406 15 b 541 81 544 80 537 76 b 551 104 548 88 551 97 b 521 136 551 120 539 136 b 518 136 519 136 519 136 b 517 136 518 136 517 136 l 517 136 b 402 83 511 136 511 136 b 298 34 345 56 299 34 b 298 34 298 34 298 34 b 194 84 298 34 250 56 b 88 134 137 111 89 133 ',\n },\n noteheadXHalf: {\n x_min: 0,\n x_max: 406.96875,\n ha: 415,\n o: 'm 55 181 b 70 183 61 183 66 183 b 111 170 85 183 99 179 b 160 130 115 167 137 149 l 202 95 l 245 130 b 319 181 299 176 302 179 b 334 183 325 183 330 183 b 406 109 375 183 406 148 b 401 81 406 99 405 91 b 348 24 394 65 390 59 b 318 -1 332 11 318 0 b 348 -26 318 -1 332 -12 b 401 -83 390 -61 394 -66 b 406 -111 405 -93 406 -101 b 334 -184 406 -149 375 -184 b 319 -183 330 -184 325 -184 b 245 -131 302 -180 299 -177 l 202 -97 l 160 -131 b 85 -183 107 -177 103 -180 b 70 -184 80 -184 76 -184 b 0 -111 31 -184 0 -149 b 4 -83 0 -101 1 -93 b 58 -26 10 -66 16 -61 b 88 -1 74 -12 88 -1 b 58 24 88 0 74 11 b 10 69 23 54 17 59 b 0 109 2 81 0 95 b 55 181 0 142 21 173 m 83 133 b 72 136 78 136 76 136 b 57 131 66 136 61 134 b 46 109 49 126 46 117 b 50 93 46 104 47 98 b 107 45 51 91 77 70 b 160 0 137 20 160 0 b 107 -47 160 -1 137 -22 b 50 -94 77 -72 51 -93 b 46 -111 47 -99 46 -105 b 59 -134 46 -120 50 -130 b 72 -137 62 -136 68 -137 b 83 -136 76 -137 80 -136 b 144 -84 84 -134 107 -116 b 202 -36 176 -58 202 -36 b 261 -84 202 -36 230 -58 b 323 -136 299 -116 321 -134 b 334 -137 326 -136 330 -137 b 345 -134 338 -137 343 -136 b 360 -111 355 -130 360 -120 b 355 -94 360 -105 359 -99 b 299 -47 353 -93 329 -72 b 245 0 269 -22 245 -1 b 299 45 245 0 269 20 b 355 93 329 70 353 91 b 360 109 359 98 360 104 b 345 133 360 119 355 129 b 334 136 343 134 338 136 b 323 134 330 136 326 134 b 261 83 321 133 299 115 b 202 34 230 56 202 34 b 144 83 202 34 176 56 b 83 133 106 115 84 133 ',\n },\n noteheadXBlack: {\n x_min: 0,\n x_max: 406.96875,\n ha: 415,\n o: 'm 21 183 b 28 183 24 183 25 183 b 42 181 34 183 39 183 b 127 108 47 179 47 179 b 202 41 168 72 202 41 b 279 108 204 41 238 72 b 357 177 321 145 356 176 b 375 183 363 181 370 183 b 406 151 392 183 406 169 b 404 137 406 147 405 141 b 322 62 401 131 398 129 b 251 0 284 27 251 0 b 322 -63 251 -1 284 -29 b 404 -138 398 -130 401 -133 b 406 -152 405 -142 406 -148 b 375 -184 406 -170 392 -184 b 357 -179 370 -184 363 -183 b 279 -109 356 -177 321 -147 b 202 -43 238 -73 204 -43 b 127 -109 202 -43 168 -73 b 49 -179 85 -147 50 -177 b 31 -184 43 -183 36 -184 b 0 -152 13 -184 0 -170 b 2 -138 0 -148 0 -142 b 83 -63 5 -133 8 -130 b 155 0 122 -29 155 -1 b 83 62 155 0 122 27 b 8 129 43 97 10 127 b 0 151 2 136 0 144 b 21 183 0 165 8 177 ',\n },\n noteheadTriangleUpWhole: {\n x_min: 0,\n x_max: 630.203125,\n ha: 643,\n o: 'm 308 204 b 314 205 310 205 313 205 b 326 201 319 205 323 204 b 355 154 328 199 338 180 b 401 83 362 142 392 95 l 409 72 b 431 41 412 66 424 49 b 619 -174 498 -51 570 -134 b 630 -192 626 -180 630 -186 b 626 -202 630 -195 628 -199 b 616 -206 623 -205 620 -206 b 552 -188 608 -206 592 -202 b 310 -155 488 -169 392 -155 b 268 -156 295 -155 281 -155 b 77 -188 197 -161 126 -173 b 13 -206 35 -202 20 -206 b 9 -206 12 -206 10 -206 b 0 -191 2 -202 0 -197 b 8 -176 0 -186 2 -180 b 204 49 58 -136 138 -43 l 220 72 l 227 83 b 295 188 245 108 281 166 b 308 204 299 197 304 202 m 315 147 b 314 147 315 147 314 147 b 314 147 314 147 314 147 b 306 129 314 145 310 138 l 296 105 b 281 72 292 97 284 77 l 274 56 b 181 -123 247 -4 212 -72 l 174 -134 l 176 -133 b 314 -123 215 -127 272 -123 b 451 -133 356 -123 413 -127 l 454 -134 l 449 -123 b 353 56 417 -72 381 -4 l 347 72 b 332 105 344 77 336 97 l 322 129 b 315 147 318 138 315 145 ',\n },\n noteheadTriangleUpHalf: {\n x_min: 0,\n x_max: 438.28125,\n ha: 447,\n o: 'm 212 205 b 219 205 213 205 216 205 b 239 183 228 205 231 204 b 421 -163 298 40 363 -83 b 438 -191 434 -180 438 -186 b 436 -197 438 -192 438 -195 b 424 -206 434 -204 431 -206 b 406 -201 420 -206 415 -205 b 216 -156 347 -172 281 -156 b 23 -205 148 -156 80 -173 b 14 -206 20 -206 17 -206 b 0 -191 6 -206 0 -201 b 6 -176 0 -187 1 -183 b 202 192 63 -104 142 45 b 212 205 205 199 208 202 m 264 48 l 249 81 l 243 94 l 242 91 b 89 -126 208 36 137 -66 b 81 -138 85 -133 81 -138 b 81 -138 81 -138 81 -138 b 81 -138 81 -138 81 -138 b 95 -133 81 -138 87 -136 b 280 -94 156 -108 221 -94 b 334 -98 299 -94 317 -95 b 343 -99 338 -99 343 -99 b 343 -99 343 -99 343 -99 b 338 -94 343 -99 341 -97 b 264 48 318 -58 287 1 ',\n },\n noteheadTriangleUpBlack: {\n x_min: -1.359375,\n x_max: 436.921875,\n ha: 446,\n o: 'm 213 205 b 217 205 215 205 216 205 b 234 194 224 205 234 199 b 236 187 234 194 235 190 l 245 167 l 261 129 l 270 106 b 355 -61 294 54 329 -13 b 420 -163 381 -105 402 -138 b 436 -188 435 -184 436 -184 b 436 -191 436 -190 436 -190 b 421 -206 436 -201 431 -206 l 421 -206 l 416 -206 l 405 -201 b 217 -158 347 -172 283 -158 b 31 -201 153 -158 88 -172 l 20 -206 l 14 -206 l 14 -206 b 0 -191 5 -206 0 -201 b -1 -188 0 -190 -1 -190 b 14 -163 -1 -186 0 -184 b 95 -34 36 -136 72 -77 b 166 106 119 8 148 68 l 175 129 l 183 148 l 200 188 b 213 205 205 199 208 202 ',\n },\n noteheadDiamondWhole: {\n x_min: 0,\n x_max: 432.828125,\n ha: 442,\n o: 'm 208 184 b 213 187 209 186 212 187 b 224 176 217 187 221 183 b 245 147 225 172 235 159 b 419 -1 288 90 347 38 b 431 -8 424 -4 431 -8 b 432 -12 432 -9 432 -11 b 430 -18 432 -13 432 -16 b 364 -61 424 -20 383 -47 b 225 -183 307 -102 250 -152 b 223 -187 224 -184 223 -187 b 220 -188 221 -188 220 -188 b 208 -176 216 -188 210 -184 b 187 -148 205 -173 197 -159 b 12 0 144 -90 84 -38 b 0 11 4 5 0 8 b 16 24 0 13 4 18 b 183 158 83 69 141 115 b 208 184 194 169 198 173 m 183 105 b 176 113 181 109 176 113 b 172 109 176 113 175 112 b 92 45 149 90 117 62 l 88 41 l 102 31 b 247 -105 160 -6 210 -55 l 254 -115 l 257 -112 l 269 -102 b 340 -45 287 -87 319 -61 l 344 -43 l 330 -33 b 183 105 272 6 221 54 ',\n },\n noteheadDiamondHalf: {\n x_min: 0,\n x_max: 438.28125,\n ha: 447,\n o: 'm 212 190 b 219 191 213 191 216 191 b 236 176 225 191 228 190 b 419 18 277 105 341 49 b 436 5 431 13 434 11 b 438 -1 438 4 438 1 b 424 -16 438 -8 432 -13 b 356 -49 409 -20 379 -36 b 234 -180 306 -83 258 -133 b 219 -192 230 -188 224 -192 b 200 -176 213 -192 206 -187 b 9 -15 157 -102 89 -45 b 0 0 2 -12 0 -6 b 16 18 0 9 2 12 b 200 176 93 48 159 104 b 212 190 205 186 208 188 m 239 113 b 236 117 238 116 238 117 b 230 108 235 117 234 115 b 92 -15 196 58 140 8 b 88 -18 91 -16 88 -18 b 92 -20 88 -18 91 -19 b 198 -116 130 -43 166 -74 b 200 -117 200 -117 200 -117 b 201 -117 200 -117 201 -117 b 264 -43 212 -98 242 -62 b 345 15 288 -19 321 4 b 348 18 347 16 348 16 b 344 20 348 18 347 19 b 239 113 307 41 266 79 ',\n },\n noteheadDiamondBlack: {\n x_min: 0,\n x_max: 432.828125,\n ha: 442,\n o: 'm 209 186 b 213 187 210 187 212 187 b 216 187 215 187 216 187 b 224 174 216 186 220 180 b 420 -1 269 105 338 43 b 432 -12 431 -8 432 -9 b 421 -23 432 -15 432 -16 b 228 -180 345 -70 264 -137 b 219 -188 221 -188 221 -188 l 219 -188 b 208 -177 215 -188 215 -188 b 10 1 163 -106 93 -44 b 0 11 0 6 0 8 b 10 22 0 13 0 15 b 202 179 87 69 167 136 b 209 186 206 183 209 186 ',\n },\n augmentationDot: {\n x_min: 0,\n x_max: 133.390625,\n ha: 136,\n o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ',\n },\n tremolo1: {\n x_min: -206.890625,\n x_max: 428.75,\n ha: 438,\n o: 'm 389 -351 b 394 -351 390 -351 393 -351 b 428 -385 413 -351 428 -367 b 428 -394 428 -388 428 -391 b 394 -428 426 -406 421 -410 l 332 -473 l 269 -516 l 205 -560 l 141 -603 l 77 -648 l 13 -692 l -50 -737 l -114 -780 l -145 -802 b -171 -813 -157 -810 -163 -813 b -175 -813 -172 -813 -174 -813 b -206 -777 -194 -811 -206 -795 b -202 -760 -206 -771 -205 -766 b -87 -675 -197 -752 -206 -757 l -34 -639 l 83 -557 l 145 -514 l 209 -470 l 272 -427 b 389 -351 375 -356 381 -352 ',\n },\n flag8thUp: {\n x_min: -24.5,\n x_max: 317.140625,\n ha: 324,\n o: 'm -24 -161 l -24 -5 l -20 -5 b 0 -24 -9 -5 -2 -12 b 171 -315 21 -124 84 -233 b 317 -660 268 -406 317 -531 b 187 -1014 317 -782 274 -909 b 161 -1034 172 -1034 171 -1034 b 141 -1013 149 -1034 141 -1025 b 152 -991 141 -1004 142 -1002 b 266 -682 228 -899 266 -788 b 174 -430 266 -588 236 -498 b -23 -317 136 -388 66 -348 b -24 -161 -23 -316 -24 -285 ',\n },\n flag8thDown: {\n x_min: -21.78125,\n x_max: 367.5,\n ha: 375,\n o: 'm 230 1031 b 238 1032 232 1032 235 1032 b 259 1014 245 1032 251 1027 b 367 662 330 906 367 782 b 364 602 367 641 367 621 b 232 317 352 488 304 384 b 57 120 155 245 103 187 b -1 18 31 84 6 40 b -19 4 -4 11 -12 4 l -21 4 l -21 159 l -21 315 l -16 315 b 96 335 10 315 62 324 b 315 695 227 380 315 527 b 313 738 315 709 314 724 b 224 991 304 825 273 916 b 216 1013 219 999 216 1007 b 230 1031 216 1021 220 1028 ',\n },\n flag16thUp: {\n x_min: -24.5,\n x_max: 317.140625,\n ha: 324,\n o: 'm -24 -147 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 58 -123 6 -43 31 -86 b 196 -278 93 -173 134 -219 b 317 -570 274 -356 317 -460 b 294 -713 317 -617 308 -666 l 289 -724 l 294 -735 b 317 -873 308 -780 317 -827 b 235 -1132 317 -963 288 -1054 b 209 -1165 228 -1140 224 -1146 b 189 -1177 204 -1172 196 -1177 b 171 -1164 182 -1177 175 -1172 b 168 -1154 170 -1161 168 -1159 b 181 -1132 168 -1149 172 -1142 b 269 -891 238 -1064 269 -975 b 269 -881 269 -886 269 -884 b 262 -814 269 -857 265 -827 b 258 -800 261 -811 259 -806 b 142 -628 240 -731 198 -667 b -8 -589 112 -606 47 -589 b -20 -589 -13 -589 -19 -589 l -24 -589 l -24 -449 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 58 -424 6 -345 31 -388 b 194 -580 93 -476 136 -523 b 259 -660 221 -606 245 -635 b 261 -663 259 -662 261 -663 b 264 -656 262 -663 262 -660 b 269 -587 268 -632 269 -610 b 264 -521 269 -566 268 -544 b 262 -512 264 -517 262 -513 b 258 -498 261 -509 259 -503 b 142 -326 240 -428 198 -365 b -8 -287 112 -303 47 -288 b -20 -287 -13 -287 -19 -287 l -24 -287 l -24 -147 ',\n },\n flag16thDown: {\n x_min: -21.78125,\n x_max: 362.0625,\n ha: 369,\n o: 'm 302 1031 b 308 1032 304 1032 307 1032 b 330 1016 318 1032 325 1027 b 362 867 351 970 362 920 b 340 738 362 824 353 780 l 336 727 l 340 717 b 362 591 355 677 362 634 b 257 323 362 496 325 401 b 204 272 243 306 227 290 b 20 56 129 206 66 133 b -1 18 12 44 0 22 b -19 4 -4 9 -12 4 l -21 4 l -21 140 l -21 276 l -12 277 b 167 333 61 288 127 309 b 319 598 262 388 319 491 b 311 664 319 620 317 642 l 310 673 l 304 664 b 204 548 279 620 250 587 b 20 333 129 483 66 409 b -1 292 12 320 0 298 b -19 280 -4 285 -12 280 l -21 280 l -21 416 l -21 552 l -12 553 b 167 609 61 564 127 585 b 319 874 264 666 319 770 b 294 992 319 914 311 954 b 288 1011 288 1004 288 1007 b 302 1031 288 1021 294 1028 ',\n },\n flag32ndUp: {\n x_min: -24.5,\n x_max: 315.78125,\n ha: 322,\n o: 'm -24 -145 l -24 -5 l -20 -5 b 1 -26 -10 -5 -6 -9 b 175 -241 31 -86 96 -166 b 314 -548 259 -323 304 -420 b 315 -589 315 -555 315 -571 b 314 -630 315 -606 315 -623 b 298 -730 311 -664 306 -699 l 295 -742 l 296 -748 b 314 -850 304 -778 311 -813 b 315 -892 315 -857 315 -874 b 314 -932 315 -909 315 -925 b 298 -1032 311 -967 306 -1002 l 295 -1045 l 296 -1050 b 314 -1153 304 -1081 311 -1115 b 315 -1193 315 -1160 315 -1177 b 314 -1235 315 -1211 315 -1228 b 217 -1526 306 -1338 270 -1444 b 201 -1533 213 -1532 208 -1533 b 182 -1522 193 -1533 185 -1529 b 179 -1514 181 -1518 179 -1517 b 189 -1489 179 -1508 182 -1501 b 266 -1217 240 -1403 266 -1308 b 262 -1156 266 -1196 265 -1177 b 110 -907 247 -1043 190 -950 b 0 -889 87 -895 50 -889 l -1 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 1 -631 -10 -610 -6 -614 b 175 -846 31 -691 96 -771 b 259 -956 213 -884 236 -914 b 265 -966 262 -961 264 -966 b 265 -966 265 -966 265 -966 b 265 -953 265 -964 265 -959 b 266 -920 266 -943 266 -932 b 262 -853 266 -898 265 -873 b 110 -605 247 -741 190 -648 b 0 -587 87 -592 50 -587 l -1 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 1 -328 -10 -308 -6 -312 b 175 -544 31 -388 96 -469 b 259 -655 213 -581 236 -612 b 265 -663 262 -659 264 -663 b 265 -663 265 -663 265 -663 b 265 -650 265 -663 265 -657 b 266 -617 266 -641 266 -630 b 262 -551 266 -595 265 -570 b 110 -303 247 -438 190 -345 b 0 -284 87 -290 50 -284 l -1 -284 l -24 -284 l -24 -145 ',\n },\n flag32ndDown: {\n x_min: -21.78125,\n x_max: 366.140625,\n ha: 374,\n o: 'm 276 1378 b 284 1379 279 1379 281 1379 b 306 1360 292 1379 298 1374 b 352 1247 326 1326 343 1286 b 366 1139 362 1213 366 1175 b 347 1009 366 1093 359 1049 l 344 1002 l 347 992 b 352 971 348 986 351 977 b 366 863 362 936 366 899 b 347 732 366 818 359 773 l 344 725 l 347 716 b 352 695 348 710 351 700 b 366 588 362 659 366 623 b 223 262 366 464 314 345 b 189 233 212 252 212 252 b 35 76 126 183 73 129 b -1 16 20 56 2 27 b -19 4 -4 9 -12 4 l -21 4 l -21 137 l -21 270 l -17 270 b 186 344 59 281 134 308 b 319 606 270 399 319 499 b 317 650 319 620 319 635 l 315 659 l 314 655 b 223 537 288 607 258 570 b 189 509 212 528 212 528 b 35 352 126 459 73 405 b -1 292 20 333 2 303 b -19 280 -4 285 -12 280 l -21 280 l -21 413 l -21 546 l -17 546 b 186 620 59 557 134 584 b 319 882 270 675 319 775 b 317 925 319 896 319 911 l 315 935 l 314 931 b 223 813 288 884 258 846 b 189 785 212 805 212 805 b 35 628 126 735 73 681 b -1 569 20 609 2 580 b -19 556 -4 562 -12 556 l -21 556 l -21 689 l -21 823 l -17 823 b 202 907 68 835 152 867 b 319 1157 280 968 319 1061 b 270 1338 319 1218 303 1281 b 262 1358 264 1349 262 1353 b 262 1364 262 1360 262 1363 b 276 1378 265 1371 269 1376 ',\n },\n flag64thUp: {\n x_min: -24.5,\n x_max: 314.421875,\n ha: 321,\n o: 'm -24 -145 l -24 -5 l -20 -5 b 0 -23 -9 -5 -2 -12 b 27 -87 4 -38 14 -66 b 138 -220 53 -136 88 -177 b 235 -328 179 -255 208 -288 b 314 -592 287 -409 314 -501 b 292 -732 314 -639 307 -687 l 289 -742 l 294 -756 b 314 -896 307 -802 314 -849 b 292 -1035 314 -943 307 -991 l 289 -1045 l 294 -1057 b 314 -1197 307 -1104 314 -1152 b 292 -1338 314 -1246 307 -1292 l 289 -1347 l 294 -1360 b 314 -1500 307 -1407 314 -1454 b 273 -1689 314 -1565 300 -1628 b 250 -1712 265 -1710 261 -1712 b 228 -1691 236 -1712 228 -1704 l 228 -1685 l 234 -1675 b 270 -1507 258 -1621 270 -1564 b 98 -1193 270 -1381 209 -1261 b 40 -1174 76 -1179 58 -1174 b -10 -1189 24 -1174 8 -1178 b -20 -1192 -14 -1192 -16 -1192 l -24 -1192 l -24 -1052 l -24 -913 l -20 -913 b 0 -931 -9 -913 -2 -920 b 27 -995 4 -946 14 -974 b 138 -1128 53 -1043 88 -1085 b 257 -1275 190 -1172 228 -1220 b 262 -1283 259 -1279 262 -1283 l 262 -1283 b 269 -1249 264 -1282 268 -1260 b 270 -1206 270 -1233 270 -1220 b 98 -891 270 -1075 206 -957 b 40 -871 76 -877 58 -871 b -10 -886 24 -871 8 -875 b -20 -889 -14 -889 -16 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 0 -628 -9 -610 -2 -617 b 27 -692 4 -644 14 -671 b 138 -825 53 -741 88 -782 b 257 -973 190 -870 228 -917 b 262 -981 259 -977 262 -981 l 262 -981 b 269 -946 264 -979 268 -957 b 270 -903 270 -931 270 -917 b 98 -588 270 -774 206 -655 b 40 -569 76 -574 58 -569 b -10 -584 24 -569 8 -574 b -20 -587 -14 -587 -16 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 0 -326 -9 -308 -2 -315 b 27 -390 4 -341 14 -369 b 138 -523 53 -438 88 -480 b 257 -670 190 -567 228 -614 b 262 -678 259 -674 262 -678 b 262 -678 262 -678 262 -678 b 269 -644 264 -677 268 -656 b 270 -601 270 -628 270 -614 b 98 -285 270 -471 206 -352 b 40 -266 76 -273 58 -266 b -10 -281 24 -266 8 -272 b -20 -284 -14 -284 -16 -284 l -24 -284 l -24 -145 ',\n },\n flag64thDown: {\n x_min: -21.78125,\n x_max: 367.5,\n ha: 375,\n o: 'm 259 1553 b 265 1553 261 1553 264 1553 b 288 1540 272 1553 277 1550 b 367 1351 340 1493 367 1424 b 336 1221 367 1308 357 1263 l 332 1211 l 333 1208 b 367 1077 356 1170 367 1124 b 336 945 367 1032 357 986 l 332 935 l 333 932 b 367 800 356 893 367 848 b 336 669 367 756 357 710 l 332 659 l 333 656 b 367 523 356 617 367 571 b 345 412 367 485 360 446 b 231 273 322 356 284 310 b -1 19 121 195 27 93 b -17 4 -4 11 -10 5 l -21 4 l -21 134 l -21 265 l -17 265 b 133 291 20 265 96 278 b 318 537 245 328 318 433 b 307 603 318 559 315 582 b 303 614 304 612 304 614 b 298 609 302 614 300 613 b 231 549 281 589 258 567 b -1 295 121 471 27 369 b -17 280 -4 287 -10 281 l -21 280 l -21 410 l -21 541 l -17 541 b 133 567 20 541 96 555 b 318 813 245 605 318 709 b 307 880 318 835 315 859 b 303 891 304 888 304 891 b 298 885 302 891 300 888 b 231 825 281 866 258 843 b -1 571 121 748 27 645 b -17 556 -4 563 -10 557 l -21 556 l -21 687 l -21 817 l -17 817 b 133 843 20 817 96 830 b 318 1089 245 881 318 985 b 307 1156 318 1111 315 1134 b 303 1167 304 1164 304 1167 b 298 1161 302 1167 300 1164 b 231 1102 281 1140 258 1120 b -1 848 121 1024 27 921 b -17 832 -4 839 -10 834 l -21 832 l -21 963 l -21 1093 l -17 1093 b 114 1113 12 1093 78 1103 b 313 1314 215 1142 289 1218 b 318 1364 317 1331 318 1347 b 255 1511 318 1422 295 1478 b 243 1532 247 1519 243 1525 b 259 1553 243 1540 250 1550 ',\n },\n flag128thUp: {\n x_min: -24.5,\n x_max: 313.0625,\n ha: 319,\n o: 'm -24 -133 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 142 -213 13 -61 74 -144 b 258 -376 196 -269 230 -315 b 313 -605 295 -449 313 -528 b 292 -742 313 -652 306 -699 b 288 -752 289 -748 288 -752 b 288 -752 288 -752 288 -752 b 292 -764 289 -753 291 -757 b 313 -907 306 -811 313 -860 b 292 -1045 313 -954 306 -1002 b 288 -1054 289 -1050 288 -1054 b 288 -1054 288 -1054 288 -1054 b 292 -1067 289 -1054 291 -1060 b 313 -1210 306 -1113 313 -1161 b 292 -1346 313 -1257 306 -1304 b 288 -1357 289 -1353 288 -1357 b 288 -1357 288 -1357 288 -1357 b 292 -1368 289 -1357 291 -1363 b 313 -1512 306 -1415 313 -1464 b 292 -1648 313 -1560 306 -1605 b 288 -1660 289 -1654 288 -1660 b 288 -1660 288 -1660 288 -1660 b 292 -1671 289 -1660 291 -1665 b 313 -1814 306 -1719 313 -1766 b 250 -2040 313 -1897 291 -1977 b 232 -2062 238 -2057 236 -2059 b 221 -2065 230 -2063 225 -2065 b 200 -2045 210 -2065 201 -2057 b 200 -2043 200 -2044 200 -2044 b 208 -2026 200 -2037 202 -2034 b 269 -1826 249 -1966 269 -1897 b 153 -1544 269 -1726 230 -1625 b -9 -1472 115 -1506 58 -1481 b -21 -1471 -14 -1471 -19 -1471 l -24 -1471 l -24 -1343 l -24 -1215 l -20 -1215 b -1 -1229 -12 -1215 -4 -1221 b 142 -1424 13 -1270 74 -1353 b 257 -1582 196 -1478 228 -1524 b 264 -1594 261 -1589 264 -1594 l 264 -1594 b 265 -1582 264 -1594 264 -1589 b 270 -1525 268 -1562 270 -1544 b 153 -1243 270 -1424 228 -1321 b -9 -1170 115 -1203 58 -1178 b -21 -1168 -14 -1170 -19 -1168 l -24 -1168 l -24 -1041 l -24 -913 l -20 -913 b -1 -927 -12 -913 -4 -918 b 142 -1121 13 -967 74 -1050 b 257 -1281 196 -1175 228 -1221 b 264 -1292 261 -1286 264 -1292 l 264 -1292 b 265 -1279 264 -1292 264 -1286 b 270 -1222 268 -1261 270 -1242 b 153 -941 270 -1121 228 -1018 b -9 -867 115 -900 58 -875 b -21 -866 -14 -867 -19 -866 l -24 -866 l -24 -738 l -24 -610 l -20 -610 b -1 -624 -12 -610 -4 -616 b 142 -818 13 -664 74 -749 b 257 -978 196 -873 228 -918 b 264 -989 261 -984 264 -989 l 264 -989 b 265 -977 264 -989 264 -984 b 270 -920 268 -959 270 -939 b 153 -638 270 -818 228 -716 b -9 -564 115 -598 58 -573 b -21 -563 -14 -564 -19 -563 l -24 -563 l -24 -435 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 142 -516 13 -363 74 -446 b 257 -675 196 -571 228 -616 b 264 -687 261 -681 264 -687 l 264 -687 b 265 -674 264 -687 264 -681 b 270 -617 268 -656 270 -637 b 153 -335 270 -516 228 -413 b -9 -262 115 -295 58 -270 b -21 -260 -14 -262 -19 -260 l -24 -260 l -24 -133 ',\n },\n flag128thDown: {\n x_min: -21.78125,\n x_max: 367.5,\n ha: 375,\n o: 'm 276 1900 b 284 1901 279 1900 281 1901 b 306 1883 291 1901 298 1896 b 367 1686 347 1825 367 1757 b 343 1558 367 1643 359 1600 l 338 1549 l 343 1537 b 367 1411 359 1497 367 1454 b 343 1282 367 1367 359 1324 l 338 1272 l 343 1261 b 367 1135 359 1221 367 1178 b 343 1007 367 1090 359 1047 l 338 996 l 343 985 b 367 859 359 945 367 902 b 343 731 367 814 359 771 l 338 720 l 343 709 b 367 582 359 667 367 626 b 289 362 367 503 340 426 b 239 312 276 345 259 330 b 29 77 152 237 76 152 b -1 18 14 54 2 30 b -19 4 -4 11 -12 4 l -21 4 l -21 133 l -20 260 l -13 262 b 98 299 17 269 62 284 b 111 305 103 302 110 305 b 167 334 123 310 156 327 b 319 595 264 391 319 491 b 313 659 319 616 318 638 b 310 667 311 664 311 667 b 307 663 310 667 308 666 b 240 588 289 637 269 614 b 16 331 141 505 62 413 b -1 294 8 316 1 302 b -19 280 -4 287 -12 280 l -21 280 l -21 408 l -20 537 l -13 538 b 98 576 17 545 62 560 b 111 581 103 578 110 581 b 167 610 123 587 156 603 b 319 871 264 667 319 767 b 313 935 319 892 318 913 b 310 942 311 941 311 942 b 307 939 310 942 308 941 b 240 864 289 913 269 889 b 16 607 141 781 62 689 b -1 570 8 592 1 578 b -19 556 -4 563 -12 556 l -21 556 l -21 684 l -20 813 l -13 814 b 98 852 17 821 62 836 b 111 857 103 855 110 857 b 167 886 123 863 156 880 b 319 1147 264 943 319 1043 b 313 1211 319 1168 318 1189 b 310 1218 311 1217 311 1218 b 307 1215 310 1218 308 1217 b 240 1140 289 1188 269 1165 b 16 884 141 1057 62 966 b -1 846 8 868 1 855 b -19 832 -4 839 -12 832 l -21 832 l -21 960 l -20 1089 l -13 1090 b 98 1128 17 1097 62 1111 b 111 1134 103 1131 110 1134 b 167 1163 123 1139 156 1156 b 319 1424 264 1220 319 1320 b 313 1486 319 1444 318 1465 b 310 1494 311 1493 311 1494 b 307 1492 310 1494 308 1493 b 240 1417 289 1464 269 1442 b 16 1160 141 1333 62 1242 b -1 1121 8 1145 1 1131 b -19 1109 -4 1115 -12 1109 l -21 1109 l -21 1236 l -20 1365 l -13 1367 b 98 1404 17 1374 62 1388 b 111 1410 103 1407 110 1410 b 250 1508 172 1437 215 1467 b 319 1701 296 1564 319 1633 b 270 1859 319 1757 303 1814 b 262 1882 265 1868 262 1875 b 276 1900 262 1890 266 1896 ',\n },\n accidentalFlat: {\n x_min: -21.78125,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalNatural: {\n x_min: 0,\n x_max: 239.5625,\n ha: 244,\n o: 'm 10 460 b 20 462 13 462 14 462 b 39 449 28 462 35 458 l 40 446 l 40 326 b 40 205 40 259 40 205 b 127 227 40 205 80 215 b 220 249 196 244 213 249 b 227 247 224 249 225 248 b 238 237 231 245 235 241 l 239 233 l 239 -106 l 239 -448 l 238 -451 b 219 -463 234 -459 225 -463 b 198 -451 210 -463 202 -459 l 197 -448 l 197 -324 b 197 -201 197 -248 197 -201 b 110 -223 196 -201 157 -210 b 17 -245 42 -240 24 -245 b 10 -242 13 -245 13 -244 b 0 -233 6 -241 2 -237 l 0 -230 l 0 108 l 0 446 l 0 449 b 10 460 2 453 6 458 m 197 22 b 197 70 197 41 197 58 b 196 116 197 113 197 116 l 196 116 b 118 97 196 116 160 106 l 40 77 l 40 -18 b 40 -112 40 -69 40 -112 l 119 -93 l 197 -73 l 197 22 ',\n },\n accidentalSharp: {\n x_min: 0,\n x_max: 323.9375,\n ha: 331,\n o: 'm 217 535 b 225 537 220 537 221 537 b 245 524 235 537 242 533 l 246 521 l 247 390 l 247 258 l 273 265 b 306 270 288 269 299 270 b 322 259 315 270 319 267 b 323 208 323 256 323 233 b 322 158 323 184 323 159 b 288 140 318 148 315 147 b 247 130 254 131 247 130 b 247 65 247 130 247 104 b 247 20 247 51 247 36 l 247 -88 l 273 -81 b 306 -76 289 -77 299 -76 b 318 -81 311 -76 315 -77 b 323 -123 323 -87 323 -86 l 323 -138 l 323 -154 b 318 -195 323 -191 323 -190 b 269 -210 314 -199 315 -199 b 249 -216 259 -213 250 -216 l 247 -216 l 247 -349 l 246 -483 l 245 -487 b 225 -499 242 -495 234 -499 b 206 -487 219 -499 210 -495 l 205 -483 l 205 -355 l 205 -227 l 204 -227 l 181 -233 l 138 -244 b 117 -249 127 -247 117 -249 b 115 -385 115 -249 115 -256 l 115 -523 l 114 -526 b 95 -538 110 -534 102 -538 b 74 -526 87 -538 78 -534 l 73 -523 l 73 -391 b 72 -260 73 -269 73 -260 b 72 -260 72 -260 72 -260 b 19 -273 61 -263 23 -273 b 0 -260 10 -273 4 -267 b 0 -209 0 -256 0 -256 l 0 -162 l 1 -158 b 61 -134 5 -148 5 -148 l 73 -131 l 73 -22 b 72 86 73 79 73 86 b 72 86 72 86 72 86 b 19 74 61 83 23 74 b 0 86 10 74 4 79 b 0 137 0 90 0 90 l 0 184 l 1 188 b 61 212 5 198 5 198 l 73 215 l 73 348 l 73 481 l 74 485 b 95 498 78 492 87 498 b 103 495 98 498 100 496 b 114 485 107 494 111 489 l 115 481 l 115 353 l 115 226 l 121 226 b 159 235 123 227 141 231 l 198 247 l 205 248 l 205 384 l 205 521 l 206 524 b 217 535 209 528 212 533 m 205 9 b 205 119 205 70 205 119 l 205 119 b 182 113 204 119 194 116 l 138 102 b 117 97 127 99 117 97 b 115 -12 115 97 115 91 l 115 -122 l 121 -120 b 159 -111 123 -119 141 -115 l 198 -101 l 205 -98 l 205 9 ',\n },\n accidentalDoubleSharp: {\n x_min: 0,\n x_max: 367.5,\n ha: 375,\n o: 'm 0 124 l 0 187 l 61 187 l 122 187 l 122 138 l 122 91 l 153 61 l 183 30 l 213 61 l 243 91 l 243 138 l 243 187 l 306 187 l 367 187 l 367 124 l 367 61 l 321 61 l 274 61 l 243 30 l 213 0 l 243 -31 l 274 -62 l 321 -62 l 367 -62 l 367 -124 l 367 -188 l 306 -188 l 243 -188 l 243 -140 l 243 -93 l 213 -62 l 183 -31 l 153 -62 l 122 -93 l 122 -140 l 122 -188 l 61 -188 l 0 -188 l 0 -124 l 0 -62 l 46 -62 l 92 -62 l 123 -31 l 153 0 l 123 30 l 92 61 l 46 61 l 0 61 l 0 124 ',\n },\n accidentalDoubleFlat: {\n x_min: -21.78125,\n x_max: 483.1875,\n ha: 493,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 179 164 199 187 192 l 210 176 l 210 396 l 210 617 l 212 621 b 231 632 216 628 223 632 b 250 620 239 632 247 628 b 251 383 251 616 251 616 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 ',\n },\n accidentalParensLeft: {\n x_min: -166.0625,\n x_max: -25.859375,\n ha: 0,\n o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ',\n },\n accidentalParensRight: {\n x_min: 25.859375,\n x_max: 164.6875,\n ha: 168,\n o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ',\n },\n accidentalQuarterToneFlatStein: {\n x_min: 0,\n x_max: 272.21875,\n ha: 278,\n o: 'm 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 ',\n },\n accidentalThreeQuarterTonesFlatZimmermann: {\n x_min: 0,\n x_max: 607.0625,\n ha: 619,\n o: 'm 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 m 347 631 b 353 632 348 632 351 632 b 374 620 363 632 371 628 b 375 383 375 616 375 616 l 375 148 l 377 151 b 492 199 415 183 454 199 b 537 191 507 199 522 197 b 607 84 582 176 607 134 b 583 0 607 58 598 29 b 455 -142 562 -40 533 -72 l 378 -215 b 355 -229 364 -229 362 -229 b 334 -216 345 -229 337 -224 l 333 -212 l 333 201 l 333 616 l 334 620 b 347 631 337 624 341 630 m 465 131 b 451 133 461 133 455 133 b 445 133 449 133 446 133 b 379 87 419 129 396 113 l 375 80 l 375 -37 l 375 -156 l 378 -152 b 499 81 451 -72 499 20 l 499 83 b 465 131 499 113 490 126 ',\n },\n accidentalQuarterToneSharpStein: {\n x_min: 0,\n x_max: 193.28125,\n ha: 197,\n o: 'm 85 514 b 95 517 88 517 89 517 b 114 505 103 517 110 513 l 115 502 l 115 376 b 115 249 115 306 115 249 b 141 258 117 249 127 252 l 167 266 l 172 266 b 190 254 181 265 187 262 l 193 251 l 193 202 l 193 188 b 187 147 193 149 191 152 b 147 130 183 142 182 141 l 115 119 l 115 9 b 115 -99 115 -51 115 -99 b 141 -91 115 -99 127 -95 b 171 -81 166 -81 167 -81 l 171 -81 b 191 -94 181 -81 189 -87 b 193 -142 191 -97 193 -120 b 191 -195 193 -167 191 -194 b 125 -227 187 -205 187 -204 l 115 -230 l 115 -366 l 115 -503 l 114 -506 b 95 -519 110 -514 102 -519 b 74 -506 87 -519 78 -514 l 73 -503 l 73 -374 b 73 -245 73 -260 73 -245 b 73 -245 73 -245 73 -245 b 55 -252 72 -245 63 -249 l 32 -260 b 19 -263 27 -262 23 -263 b 4 -256 13 -263 8 -260 b 0 -215 0 -251 0 -254 b 0 -199 0 -210 0 -206 l 0 -152 l 1 -149 b 8 -140 2 -145 5 -141 b 42 -127 9 -140 24 -133 l 73 -116 l 73 -5 b 73 23 73 4 73 15 b 73 105 73 70 73 105 b 49 97 73 105 61 101 b 17 88 32 91 23 88 b 4 95 10 88 8 91 b 0 137 0 101 0 98 b 0 151 0 141 0 145 l 0 199 l 1 202 b 43 224 5 212 5 212 l 73 234 l 73 367 l 73 502 l 74 505 b 85 514 77 509 81 513 ',\n },\n accidentalThreeQuarterTonesSharpStein: {\n x_min: -1.359375,\n x_max: 455.96875,\n ha: 465,\n o: 'm 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 ',\n },\n accidentalBuyukMucennebFlat: {\n x_min: -171.5,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalBakiyeFlat: {\n x_min: -176.9375,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalKomaSharp: {\n x_min: -1.359375,\n x_max: 455.96875,\n ha: 465,\n o: 'm 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 ',\n },\n accidentalKucukMucennebSharp: {\n x_min: -1.359375,\n x_max: 255.890625,\n ha: 261,\n o: 'm 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 ',\n },\n articAccentAbove: {\n x_min: -348.4375,\n x_max: 24.5,\n ha: 25,\n o: 'm -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 ',\n },\n articAccentBelow: {\n x_min: -348.4375,\n x_max: 24.5,\n ha: 25,\n o: 'm -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 ',\n },\n articTenutoAbove: {\n x_min: 0,\n x_max: 318.5,\n ha: 325,\n o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ',\n },\n articTenutoBelow: {\n x_min: 0,\n x_max: 318.5,\n ha: 325,\n o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ',\n },\n articStaccatoAbove: {\n x_min: 0,\n x_max: 133.390625,\n ha: 136,\n o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ',\n },\n articStaccatoBelow: {\n x_min: 0,\n x_max: 133.390625,\n ha: 136,\n o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ',\n },\n articStaccatissimoAbove: {\n x_min: -73.5,\n x_max: 72.140625,\n ha: 74,\n o: 'm -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 ',\n },\n articStaccatissimoBelow: {\n x_min: -73.5,\n x_max: 72.140625,\n ha: 74,\n o: 'm -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 ',\n },\n articMarcatoAbove: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 ',\n },\n articMarcatoBelow: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 ',\n },\n fermataAbove: {\n x_min: -442.359375,\n x_max: 441,\n ha: 450,\n o: 'm -31 487 b -1 488 -21 488 -10 488 b 434 104 216 488 397 330 b 441 27 438 79 441 47 b 439 12 441 20 439 15 b 419 0 435 4 427 0 b 404 5 413 0 408 1 b 398 30 400 11 398 13 b 0 351 390 213 213 351 b -59 348 -20 351 -39 349 b -400 30 -251 324 -393 191 b -405 5 -400 13 -401 11 b -420 0 -409 1 -415 0 b -441 12 -428 0 -436 4 b -442 27 -441 15 -442 20 b -435 104 -442 47 -439 79 b -31 487 -401 316 -235 474 m -13 131 b -1 133 -9 133 -5 133 b 51 105 19 133 39 123 b 61 70 58 95 61 83 b 51 34 61 58 58 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -57 38 -62 54 b -13 131 -62 98 -44 124 ',\n },\n fermataBelow: {\n x_min: -441,\n x_max: 439.640625,\n ha: 449,\n o: 'm -428 -2 b -421 0 -427 -1 -424 0 b -406 -6 -416 0 -409 -2 b -400 -31 -401 -12 -400 -15 b -1 -352 -392 -215 -215 -352 b 58 -349 19 -352 38 -351 b 398 -31 250 -326 392 -192 b 404 -6 398 -15 400 -12 b 419 -1 408 -2 413 -1 b 439 -13 427 -1 435 -5 b 439 -29 439 -16 439 -22 b 434 -105 439 -48 438 -80 b 0 -489 397 -333 213 -489 b -68 -484 -23 -489 -44 -488 b -441 -36 -280 -452 -436 -263 b -441 -30 -441 -34 -441 -31 b -428 -2 -441 -11 -439 -5 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -57 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ',\n },\n fermataLongAbove: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -378 502 l -374 503 l 0 503 l 372 503 l 377 502 b 387 491 381 499 385 496 l 389 488 l 389 251 l 389 15 l 387 12 b 367 0 383 4 375 0 b 348 12 360 0 352 4 l 347 15 l 347 174 l 347 335 l 0 335 l -348 335 l -348 174 l -348 15 l -349 12 b -368 0 -353 4 -362 0 b -389 12 -377 0 -385 4 l -390 15 l -390 251 l -390 488 l -389 491 b -378 502 -386 496 -382 499 m -13 131 b -1 133 -9 133 -5 133 b 50 105 19 133 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -58 38 -62 55 b -13 131 -62 98 -44 124 ',\n },\n fermataLongBelow: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -378 -2 b -368 -1 -375 -1 -374 -1 b -349 -13 -360 -1 -353 -5 l -348 -16 l -348 -176 l -348 -337 l 0 -337 l 347 -337 l 347 -176 l 347 -16 l 348 -13 b 367 0 352 -5 360 0 b 387 -13 375 0 383 -5 l 389 -16 l 389 -252 l 389 -489 l 387 -492 b 377 -503 385 -498 381 -501 l 372 -505 l 0 -505 l -374 -505 l -378 -503 b -389 -492 -382 -501 -386 -498 l -390 -489 l -390 -252 l -390 -16 l -389 -13 b -378 -2 -386 -8 -382 -4 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -58 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ',\n },\n fermataVeryLongAbove: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -378 573 l -374 576 l 0 576 l 372 576 l 377 573 b 387 563 381 571 385 567 l 389 559 l 389 287 l 389 15 l 387 12 b 367 0 383 4 375 0 b 348 12 360 0 352 4 l 347 15 l 347 210 l 347 406 l 0 406 l -348 406 l -348 210 l -348 15 l -349 12 b -368 0 -353 4 -362 0 b -389 12 -377 0 -385 4 l -390 15 l -390 287 l -390 559 l -389 563 b -378 573 -386 567 -382 571 m -274 337 l -270 338 l 0 338 l 269 338 l 273 337 b 284 326 279 334 281 330 l 285 323 l 285 169 l 285 15 l 284 12 b 265 -1 280 4 272 -1 b 245 12 257 -1 249 4 l 245 15 l 243 108 l 243 201 l 0 201 l -245 201 l -245 108 l -245 15 l -246 12 b -266 -1 -250 4 -258 -1 b -285 12 -273 -1 -281 4 l -287 15 l -287 169 l -287 323 l -285 326 b -274 337 -283 330 -280 334 m -13 131 b -1 133 -9 133 -5 133 b 50 105 19 133 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -58 38 -62 55 b -13 131 -62 98 -44 124 ',\n },\n fermataVeryLongBelow: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -378 -2 b -368 -1 -375 -1 -374 -1 b -349 -13 -360 -1 -353 -5 l -348 -16 l -348 -212 l -348 -408 l 0 -408 l 347 -408 l 347 -212 l 347 -16 l 348 -13 b 367 0 352 -5 360 0 b 387 -13 375 0 383 -5 l 389 -16 l 389 -288 l 389 -560 l 387 -564 b 377 -574 385 -569 381 -573 l 372 -577 l 0 -577 l -374 -577 l -378 -574 b -389 -564 -382 -573 -386 -569 l -390 -560 l -390 -288 l -390 -16 l -389 -13 b -378 -2 -386 -8 -382 -4 m -274 -2 b -266 -1 -272 -1 -270 -1 b -246 -13 -257 -1 -250 -5 l -245 -16 l -245 -109 l -245 -202 l 0 -202 l 243 -202 l 243 -109 l 245 -16 l 245 -13 b 265 0 249 -5 257 0 b 284 -13 272 0 280 -5 l 285 -16 l 285 -170 l 285 -324 l 284 -327 b 273 -338 281 -331 279 -335 l 269 -340 l 0 -340 l -270 -340 l -274 -338 b -285 -327 -280 -335 -283 -331 l -287 -324 l -287 -170 l -287 -16 l -285 -13 b -274 -2 -283 -8 -280 -4 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -58 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ',\n },\n fermataShortAbove: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -9 650 b -1 652 -6 650 -4 652 b 19 639 6 652 13 648 l 23 631 b 28 623 24 628 27 626 l 34 614 l 39 606 l 43 598 l 49 588 l 54 580 l 59 571 l 65 563 l 69 555 l 74 546 l 80 537 l 85 528 b 89 520 87 526 89 523 l 95 512 l 100 503 l 106 494 l 111 487 l 115 478 l 121 470 l 126 462 l 130 453 l 136 445 l 141 437 l 147 427 l 151 419 l 156 410 l 161 402 l 167 394 l 172 385 l 176 376 b 182 367 179 374 181 370 l 187 359 l 193 351 l 198 342 l 202 334 l 208 326 l 212 317 l 217 309 l 223 301 l 228 292 l 234 284 l 238 274 l 243 266 l 249 258 l 254 249 l 259 241 l 264 233 l 269 224 b 274 216 270 222 273 217 l 280 206 l 285 198 l 295 180 l 299 174 l 304 165 l 310 156 l 315 148 l 321 140 l 325 131 l 330 123 l 336 113 l 341 105 l 347 97 l 351 88 l 356 80 l 360 72 b 364 66 362 70 363 68 b 370 58 366 65 368 61 l 379 41 b 389 19 386 31 389 24 b 382 4 389 13 386 8 b 347 0 377 0 378 0 b 337 0 344 0 340 0 b 336 0 336 0 336 0 b 287 11 294 0 294 0 l 281 19 l 276 27 l 272 37 l 266 45 l 261 54 l 255 62 l 250 70 l 246 79 l 240 87 l 235 97 l 230 105 l 224 113 l 220 122 l 215 130 l 209 140 l 204 148 l 200 155 l 194 163 b 189 172 193 165 191 169 l 185 180 l 179 188 l 174 198 l 168 206 l 163 215 l 159 223 l 153 231 l 148 240 l 142 249 l 138 258 l 133 266 l 127 274 l 122 283 l 117 292 l 111 301 l 107 308 l 102 316 b 98 324 102 317 99 322 l 92 333 l 87 341 l 81 349 l 77 359 l 72 367 l 66 376 l 61 384 l 55 392 l 51 401 l 46 410 l 40 419 l 35 427 l 31 435 l 24 444 l 20 453 l 14 460 l 10 469 b 5 477 9 470 6 474 l 0 485 l -5 494 l -9 502 l -14 512 b -20 519 -16 513 -19 517 l -24 526 l -28 534 b -31 537 -29 535 -31 537 b -35 533 -32 537 -32 535 l -88 444 l -187 280 l -285 117 l -343 23 b -362 1 -352 6 -356 2 b -368 0 -364 0 -367 0 b -390 20 -381 0 -390 8 l -390 20 b -359 77 -390 27 -390 27 l -80 539 l -25 631 b -9 650 -17 644 -13 648 m -13 133 b -1 134 -9 133 -5 134 b 50 105 19 134 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 70 -57 40 -62 55 b -13 133 -62 98 -44 126 ',\n },\n fermataShortBelow: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -377 -1 b -368 0 -375 -1 -372 0 b -362 -1 -366 0 -363 -1 b -343 -24 -356 -4 -352 -8 l -285 -119 l -187 -280 l -88 -444 l -35 -533 b -31 -538 -32 -537 -32 -538 b -28 -534 -31 -538 -29 -537 l -23 -526 l -19 -517 l -13 -509 l -8 -501 l -2 -492 l 2 -483 l 6 -476 l 17 -458 l 23 -449 l 32 -433 l 38 -424 l 42 -416 l 47 -408 l 53 -399 l 58 -391 l 63 -381 l 68 -373 l 73 -365 l 78 -356 l 84 -348 l 89 -340 l 93 -330 l 99 -322 l 104 -315 l 114 -297 l 125 -280 l 129 -272 l 134 -263 l 140 -255 l 145 -247 l 151 -238 l 155 -230 l 160 -220 l 166 -212 l 171 -204 l 176 -195 l 181 -187 l 186 -177 l 191 -169 l 196 -162 l 201 -154 l 206 -144 l 217 -127 l 221 -119 l 227 -111 l 232 -102 l 238 -94 l 242 -86 l 247 -77 l 253 -69 l 258 -59 l 262 -51 l 268 -43 l 273 -34 l 279 -26 l 283 -18 b 321 -1 292 -2 292 -1 b 338 -1 326 -1 332 -1 b 382 -6 378 -1 375 -1 b 389 -20 386 -9 389 -15 b 382 -38 389 -26 386 -31 l 378 -47 l 372 -55 l 367 -63 l 362 -72 l 356 -80 l 351 -90 l 347 -98 l 341 -106 l 336 -115 l 330 -123 l 325 -131 l 321 -141 l 315 -149 l 310 -158 l 304 -166 l 299 -174 b 295 -183 298 -177 296 -181 l 289 -191 l 285 -199 l 280 -208 l 274 -216 l 269 -224 l 264 -233 l 259 -242 l 254 -251 l 249 -259 l 243 -267 l 238 -276 l 234 -284 l 228 -292 l 223 -302 l 217 -310 l 213 -319 l 208 -327 b 202 -335 206 -330 204 -334 l 197 -344 l 193 -351 l 187 -360 l 182 -369 l 176 -377 l 172 -385 l 167 -394 l 161 -403 l 156 -412 l 152 -420 l 147 -428 l 141 -437 l 136 -445 l 130 -455 l 126 -463 l 121 -471 l 115 -480 b 110 -488 114 -483 111 -487 l 106 -496 l 100 -503 l 96 -512 l 89 -521 l 85 -530 l 80 -538 l 74 -546 l 69 -555 l 65 -564 l 59 -573 l 54 -581 l 49 -589 l 43 -598 l 39 -606 l 34 -616 l 28 -624 l 23 -632 b 19 -641 21 -635 20 -638 b 0 -653 14 -649 8 -653 b -25 -631 -10 -653 -14 -649 l -80 -541 l -359 -79 b -389 -29 -375 -52 -389 -30 b -390 -22 -389 -26 -390 -24 b -377 -1 -390 -13 -385 -5 m -13 -9 b -1 -8 -9 -8 -5 -8 b 51 -36 19 -8 39 -19 b 61 -72 58 -47 61 -59 b 51 -106 61 -84 58 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -127 b -62 -72 -57 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ',\n },\n breathMarkComma: {\n x_min: -1.359375,\n x_max: 193.28125,\n ha: 197,\n o: 'm 78 233 b 87 233 81 233 84 233 b 187 140 132 233 174 195 b 193 102 190 127 193 115 b 43 -113 193 22 136 -62 b 27 -119 36 -116 31 -119 b 19 -108 21 -119 19 -115 b 29 -97 19 -102 20 -101 b 102 13 73 -72 102 -27 b 92 51 102 26 98 40 l 91 54 l 84 54 b 8 104 53 54 21 74 b -1 142 1 116 -1 130 b 78 233 -1 187 31 227 ',\n },\n breathMarkUpbow: {\n x_min: -170.140625,\n x_max: 168.78125,\n ha: 172,\n o: 'm -160 567 b -122 567 -159 567 -149 567 l -87 567 l -84 566 b -74 553 -78 563 -77 560 b -20 366 -73 551 -49 466 b 31 186 8 267 31 186 b 85 371 31 186 55 269 b 140 559 114 473 138 557 b 153 567 141 564 148 567 b 168 559 159 567 166 564 b 168 555 168 557 168 557 b 92 281 168 548 159 513 b 14 13 50 134 14 13 b 0 0 14 6 6 0 b -17 15 -8 0 -17 8 b -93 283 -17 15 -51 136 b -170 552 -166 533 -170 548 b -170 553 -170 552 -170 552 b -160 567 -170 560 -167 564 ',\n },\n caesura: {\n x_min: 0,\n x_max: 622.03125,\n ha: 635,\n o: 'm 398 417 b 406 419 401 419 404 419 b 427 398 417 419 427 409 b 427 391 427 395 427 392 b 34 -274 424 385 38 -272 b 20 -280 29 -278 25 -280 b 0 -259 9 -280 0 -270 b 0 -252 0 -256 0 -254 b 393 413 2 -247 389 410 b 398 417 394 415 397 416 m 592 417 b 600 419 594 419 597 419 b 622 398 611 419 622 409 b 620 391 622 395 620 392 b 227 -274 617 385 231 -272 b 213 -280 223 -278 219 -280 b 193 -259 202 -280 193 -270 b 194 -252 193 -256 193 -254 b 586 413 196 -247 582 410 b 592 417 588 415 590 416 ',\n },\n caesuraCurved: {\n x_min: 0,\n x_max: 503.609375,\n ha: 514,\n o: 'm 274 430 b 277 430 276 430 277 430 b 310 394 296 430 310 415 b 308 383 310 391 308 387 b 306 367 307 381 307 374 b 236 120 298 305 272 210 b 40 -273 189 -5 125 -134 b 20 -287 35 -283 27 -287 b 5 -281 14 -287 9 -285 b 0 -267 1 -277 0 -273 b 9 -242 0 -262 2 -255 b 246 395 137 -12 232 242 b 274 430 249 416 257 427 m 468 430 b 472 430 469 430 470 430 b 503 394 490 430 503 415 b 502 383 503 391 503 387 b 499 367 502 381 500 374 b 431 120 491 305 465 210 b 234 -273 382 -5 318 -134 b 213 -287 228 -283 220 -287 b 198 -281 208 -287 202 -285 b 193 -267 194 -277 193 -273 b 202 -242 193 -262 196 -255 b 439 395 330 -12 426 242 b 468 430 442 416 451 427 ',\n },\n restMaxima: {\n x_min: 0,\n x_max: 464.140625,\n ha: 474,\n o: 'm 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 ',\n },\n restDoubleWhole: {\n x_min: 0,\n x_max: 386.5625,\n ha: 394,\n o: 'm 0 173 l 0 347 l 193 347 l 386 347 l 386 173 l 386 0 l 193 0 l 0 0 l 0 173 ',\n },\n restWhole: {\n x_min: 0,\n x_max: 447.8125,\n ha: 457,\n o: 'm 0 -87 l 0 0 l 223 0 l 447 0 l 447 -87 l 447 -174 l 223 -174 l 0 -174 l 0 -87 ',\n },\n restWholeLegerLine: {\n x_min: 0,\n x_max: 737.71875,\n ha: 753,\n o: 'm 9 13 b 208 15 10 15 51 15 b 368 15 251 15 304 15 l 726 15 l 729 12 b 737 -1 735 9 737 4 b 729 -15 737 -6 735 -11 l 726 -16 l 660 -16 l 592 -16 l 592 -95 l 592 -174 l 368 -174 l 144 -174 l 144 -95 l 144 -16 l 77 -16 l 9 -16 l 6 -15 b 0 -1 1 -11 0 -6 b 9 13 0 5 2 11 ',\n },\n restHalf: {\n x_min: 0,\n x_max: 447.8125,\n ha: 457,\n o: 'm 0 86 l 0 173 l 223 173 l 447 173 l 447 86 l 447 0 l 223 0 l 0 0 l 0 86 ',\n },\n restHalfLegerLine: {\n x_min: 0,\n x_max: 737.71875,\n ha: 753,\n o: 'm 144 94 l 144 173 l 368 173 l 592 173 l 592 94 l 592 15 l 660 15 l 726 15 l 729 12 b 737 -1 735 9 737 4 b 729 -15 737 -6 735 -11 l 726 -16 l 368 -16 l 9 -16 l 6 -15 b 0 -1 1 -11 0 -6 b 6 12 0 4 1 9 l 9 15 l 77 15 l 144 15 l 144 94 ',\n },\n restQuarter: {\n x_min: 0,\n x_max: 300.8125,\n ha: 307,\n o: 'm 49 505 b 53 506 50 505 51 506 b 70 496 58 506 62 503 b 81 485 73 492 78 488 l 96 473 l 111 459 l 122 449 l 134 438 l 182 396 l 255 330 b 292 291 292 298 292 298 l 292 290 l 292 284 l 283 270 b 209 36 234 197 209 113 b 288 -170 209 -44 235 -119 b 299 -184 295 -179 299 -181 b 300 -191 300 -187 300 -188 b 285 -206 300 -199 294 -206 b 280 -206 283 -206 281 -206 b 247 -201 270 -202 259 -201 b 176 -222 223 -201 197 -208 b 114 -340 136 -249 114 -292 b 172 -471 114 -384 134 -433 b 185 -492 182 -481 185 -487 b 181 -502 185 -496 183 -499 b 171 -508 176 -505 174 -508 b 152 -498 166 -508 160 -503 b 0 -284 65 -428 12 -352 b 0 -260 0 -278 0 -270 b 1 -238 0 -252 0 -242 b 148 -140 16 -177 73 -140 b 209 -148 167 -140 189 -142 b 215 -149 212 -148 215 -149 b 215 -149 215 -149 215 -149 l 215 -149 b 201 -136 215 -148 209 -142 l 157 -97 l 96 -41 b 17 34 21 24 17 29 b 17 37 17 36 17 36 b 17 38 17 37 17 38 b 25 56 17 44 17 44 b 110 298 81 131 110 219 b 46 474 110 367 88 431 b 38 491 40 480 38 487 b 49 505 38 498 42 502 ',\n },\n rest8th: {\n x_min: 0,\n x_max: 349.8125,\n ha: 357,\n o: 'm 88 302 b 103 303 93 302 98 303 b 202 224 149 303 191 270 b 205 199 204 216 205 208 b 178 129 205 173 196 147 l 175 126 l 182 127 b 307 249 236 142 284 190 b 313 259 308 254 311 258 b 329 267 317 265 323 267 b 349 247 340 267 349 259 b 201 -263 349 242 204 -258 b 182 -273 197 -270 190 -273 b 163 -260 174 -273 166 -269 b 161 -256 161 -259 161 -258 b 217 -59 161 -248 170 -220 b 272 129 247 43 272 127 b 272 129 272 129 272 129 b 264 122 272 129 268 126 b 140 80 227 94 183 80 b 36 115 102 80 65 91 b 0 194 10 136 0 165 b 88 302 0 244 32 292 ',\n },\n rest16th: {\n x_min: 0,\n x_max: 450.53125,\n ha: 460,\n o: 'm 189 302 b 204 303 193 302 198 303 b 303 224 250 303 292 270 b 306 199 304 216 306 208 b 279 129 306 173 296 147 l 276 126 l 281 127 b 408 249 337 142 385 190 b 412 259 409 254 412 258 b 430 267 417 265 423 267 b 450 247 441 267 450 259 b 200 -605 450 242 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 194 111 136 99 165 b 189 302 99 244 133 292 ',\n },\n rest32nd: {\n x_min: 0,\n x_max: 551.25,\n ha: 563,\n o: 'm 289 644 b 304 645 294 645 299 645 b 404 566 349 645 392 613 b 406 541 405 557 406 549 b 379 471 406 514 397 489 l 377 467 l 382 470 b 509 591 438 485 485 531 b 513 601 510 595 513 599 b 530 609 518 607 524 609 b 551 588 540 609 551 602 b 200 -605 551 584 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 195 112 136 99 165 b 118 256 99 217 106 238 b 204 303 138 287 171 303 b 292 249 238 303 273 285 b 306 199 302 234 306 217 b 279 129 306 173 296 148 l 276 126 l 281 127 b 408 248 336 142 385 190 b 473 470 409 254 473 469 b 473 470 473 470 473 470 b 465 464 473 470 469 467 b 341 421 428 435 383 421 b 236 458 303 421 266 433 b 200 537 212 478 200 508 b 289 644 200 585 234 635 ',\n },\n rest64th: {\n x_min: -1.359375,\n x_max: 651.96875,\n ha: 665,\n o: 'm 389 644 b 405 645 394 645 400 645 b 504 566 450 645 492 613 b 507 541 506 557 507 549 b 480 471 507 514 498 489 l 477 467 l 483 470 b 609 591 539 485 586 531 b 613 601 611 595 613 599 b 631 609 619 607 624 609 b 651 588 641 609 651 602 b 200 -946 651 584 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 537 313 478 300 508 b 389 644 300 585 334 635 ',\n },\n rest128th: {\n x_min: -1.359375,\n x_max: 752.703125,\n ha: 768,\n o: 'm 490 985 b 504 986 495 986 500 986 b 604 907 551 986 593 954 b 607 884 607 900 607 892 b 581 813 607 857 597 831 l 578 810 l 583 811 b 710 932 638 827 687 873 b 714 943 711 936 713 942 b 730 952 720 949 725 952 b 752 931 741 952 752 943 b 200 -946 752 927 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 538 314 477 300 508 b 318 598 300 559 306 580 b 404 645 340 630 372 645 b 494 592 439 645 475 627 b 507 541 502 577 507 559 b 480 471 507 516 498 489 l 477 467 l 483 470 b 608 589 537 485 586 531 b 675 811 611 595 675 810 b 675 811 675 811 675 811 b 666 806 675 811 671 809 b 543 763 628 777 585 763 b 438 799 504 763 468 775 b 401 878 412 820 401 849 b 490 985 401 928 434 977 ',\n },\n dynamicPiano: {\n x_min: -53.078125,\n x_max: 513.140625,\n ha: 485,\n o: 'm 185 383 b 196 384 187 383 191 384 b 277 334 230 384 259 365 b 288 301 281 324 288 306 b 288 297 288 298 288 297 b 294 302 289 297 291 299 b 394 370 323 338 367 367 b 404 371 398 370 401 371 b 510 272 453 371 498 328 b 513 237 513 262 513 251 b 507 172 513 217 511 192 b 326 -34 487 59 412 -26 b 314 -36 322 -36 318 -36 b 274 -24 298 -36 283 -31 l 265 -16 b 224 44 246 -1 232 20 b 223 49 224 47 223 49 b 223 49 223 49 223 49 b 149 -197 221 48 149 -194 b 149 -198 149 -197 149 -198 b 170 -210 149 -202 155 -205 b 187 -215 174 -210 175 -212 b 204 -231 201 -219 204 -222 b 197 -245 204 -240 202 -242 l 194 -248 l 76 -248 l -42 -248 l -46 -245 b -53 -231 -51 -242 -53 -240 b -35 -215 -53 -222 -49 -217 b -13 -210 -21 -212 -20 -212 b -6 -208 -10 -209 -8 -208 b 0 -206 -6 -208 -2 -206 b 25 -188 13 -201 21 -195 b 163 280 28 -183 163 276 b 166 291 163 283 164 287 b 167 302 167 295 167 299 b 155 324 167 315 161 324 b 155 324 155 324 155 324 b 65 230 125 322 85 280 b 53 215 61 217 58 215 b 51 215 53 215 51 215 b 42 224 46 215 42 217 b 57 263 42 231 47 244 b 140 360 77 305 104 337 b 152 370 144 365 149 369 b 185 383 157 376 172 381 m 374 306 b 366 308 371 308 368 308 b 300 273 348 308 321 294 b 284 254 288 262 287 259 b 280 242 283 249 281 245 b 257 169 279 240 270 213 l 236 98 l 236 93 b 251 48 238 77 243 61 b 279 27 258 37 272 27 b 281 27 279 27 280 27 b 291 31 281 27 287 30 b 396 170 334 52 378 109 b 406 247 402 197 406 224 b 401 277 406 259 405 270 b 374 306 397 290 383 303 ',\n },\n dynamicMezzo: {\n x_min: 46.28125,\n x_max: 669.671875,\n ha: 563,\n o: 'm 183 376 b 189 376 185 376 187 376 b 212 374 197 376 208 376 b 265 337 234 369 253 355 b 274 317 268 331 273 320 b 274 316 274 317 274 316 b 280 323 276 316 276 319 b 311 358 288 337 299 348 b 319 366 315 360 318 365 b 356 376 326 373 340 376 b 382 371 364 376 374 374 b 428 337 400 366 417 352 b 436 317 431 331 436 320 b 438 316 436 317 436 316 b 442 323 438 316 439 319 b 475 358 451 337 462 348 b 483 366 477 360 481 365 b 518 376 488 373 503 376 b 544 373 528 376 536 376 b 604 285 579 360 604 326 b 597 249 604 273 601 258 b 543 63 596 247 544 70 b 541 54 543 61 541 55 b 540 44 540 51 540 47 b 552 23 540 33 545 23 b 552 23 552 23 552 23 b 647 126 586 29 627 72 b 658 138 651 136 653 138 b 660 138 660 138 660 138 b 669 129 666 137 669 136 b 654 88 669 122 665 109 b 562 -12 631 43 602 9 l 549 -19 b 521 -27 540 -24 530 -27 b 447 30 490 -27 458 -4 b 443 58 445 38 443 48 b 450 93 443 72 446 84 b 504 278 453 97 504 272 b 507 288 506 283 506 287 b 509 298 507 292 509 295 b 491 326 509 310 502 320 b 487 327 490 327 488 327 b 479 324 484 327 483 326 b 441 270 462 316 443 288 b 435 249 441 265 436 254 b 398 127 434 248 419 195 b 362 4 379 61 362 5 b 328 -1 359 -1 362 -1 b 314 -1 323 -1 319 -1 b 302 -1 310 -1 306 -1 b 266 4 266 -1 269 -1 b 265 6 265 5 265 5 b 303 144 265 13 272 34 b 343 278 325 216 343 276 b 344 288 343 281 344 285 b 345 298 345 291 345 295 b 330 326 345 310 340 320 b 323 327 328 327 325 327 b 317 324 322 327 321 326 b 279 270 300 316 281 288 b 273 249 279 265 274 254 b 236 127 272 248 255 195 b 200 4 216 61 200 5 b 164 -1 197 -1 198 -1 b 151 -1 161 -1 156 -1 b 140 -1 147 -1 142 -1 b 103 4 104 -1 106 -1 b 103 6 103 5 103 5 b 141 144 103 13 108 34 b 181 278 161 216 179 276 b 182 288 181 281 181 285 b 183 298 182 291 183 295 b 168 324 183 310 178 320 b 160 327 166 326 163 327 b 141 320 156 327 151 324 b 69 230 112 305 85 272 b 57 215 65 217 62 215 b 55 215 57 215 55 215 b 46 224 49 215 46 217 b 59 260 46 231 50 242 b 151 363 81 306 112 341 b 161 369 155 365 160 367 b 183 376 166 371 174 374 ',\n },\n dynamicForte: {\n x_min: -118.421875,\n x_max: 597.53125,\n ha: 381,\n o: 'm 460 574 b 464 574 461 574 462 574 b 488 574 470 574 481 574 b 500 573 491 574 498 574 b 594 503 543 570 588 538 b 597 488 596 498 597 494 b 528 417 597 449 564 417 b 502 423 519 417 510 419 b 465 481 477 434 465 458 b 488 528 465 499 472 516 b 490 530 490 530 490 530 b 490 530 490 530 490 530 b 468 517 488 530 475 523 b 349 340 419 485 377 420 b 347 330 348 334 347 330 b 383 328 347 328 363 328 b 428 326 423 328 424 328 b 442 302 438 320 442 312 b 430 281 442 294 438 285 b 385 276 424 277 426 276 l 377 276 l 332 276 l 330 269 b 178 -117 303 126 250 -9 b 1 -249 129 -194 69 -237 b -20 -251 -6 -251 -13 -251 b -114 -187 -65 -251 -100 -227 b -118 -156 -117 -177 -118 -166 b -51 -84 -118 -116 -91 -84 b -31 -87 -46 -84 -39 -86 b 16 -152 0 -95 16 -124 b -12 -205 16 -173 8 -194 b -16 -208 -14 -206 -16 -208 b -14 -208 -16 -208 -14 -208 b -9 -206 -14 -208 -12 -208 b 74 -124 23 -197 54 -166 b 172 224 98 -79 125 22 b 185 276 178 252 183 274 b 185 276 185 276 185 276 b 141 276 185 276 181 276 b 91 280 96 276 96 276 b 77 302 83 285 77 294 b 91 326 77 312 83 320 b 148 328 95 328 96 328 l 198 330 l 202 341 b 460 574 249 473 351 566 ',\n },\n dynamicRinforzando: {\n x_min: 78.9375,\n x_max: 485.921875,\n ha: 417,\n o: 'm 362 378 b 378 380 367 380 372 380 b 472 348 415 380 453 367 b 485 315 481 338 485 327 b 462 273 485 298 477 281 b 439 267 454 269 446 267 b 398 290 424 267 409 274 b 344 319 385 309 364 319 b 281 269 315 319 289 301 b 279 262 280 266 279 262 b 276 256 279 260 277 258 b 274 249 276 254 274 251 b 238 127 273 248 257 192 b 201 4 217 61 201 5 b 166 -1 198 -1 200 -1 b 153 -1 163 -1 157 -1 b 141 -1 148 -1 144 -1 b 104 4 106 -1 107 -1 b 104 6 104 5 104 5 b 142 144 104 13 110 34 b 182 278 164 219 181 276 b 183 288 182 281 182 285 b 185 302 185 292 185 298 b 164 330 185 317 176 328 b 159 330 163 330 161 330 b 102 302 140 330 119 320 b 91 294 95 295 93 294 b 88 294 91 294 89 294 b 78 303 83 294 78 298 b 81 312 78 306 78 309 b 200 373 106 347 160 373 b 215 371 205 373 209 371 b 266 335 235 367 254 353 b 269 331 268 333 269 331 b 269 331 269 331 269 331 b 273 335 269 331 270 334 b 362 378 298 359 330 376 ',\n },\n dynamicSforzando: {\n x_min: 70.78125,\n x_max: 378.390625,\n ha: 315,\n o: 'm 246 373 b 254 373 249 373 251 373 b 372 324 303 373 360 351 b 378 302 377 317 378 309 b 338 251 378 278 362 255 b 328 249 334 249 332 249 b 283 294 303 249 283 270 b 288 315 283 301 284 308 b 289 319 289 317 289 319 b 289 319 289 319 289 319 b 283 320 289 320 287 320 b 270 322 279 322 274 322 b 206 288 242 322 215 308 b 206 283 206 287 206 285 b 257 223 206 267 230 238 b 284 206 272 213 277 210 b 351 90 328 173 351 130 b 340 47 351 74 348 59 b 205 -30 314 -2 264 -30 b 182 -29 198 -30 190 -30 b 84 15 147 -24 103 -5 b 70 48 74 24 70 36 b 108 99 70 70 85 94 b 121 102 112 101 117 102 b 167 56 147 102 167 80 b 159 31 167 48 164 40 l 156 26 l 157 26 b 190 20 167 22 178 20 b 220 26 201 20 212 22 b 258 65 243 34 258 51 b 257 70 258 66 258 69 b 204 126 249 94 234 109 b 114 258 148 158 114 209 b 125 302 114 273 118 288 b 246 373 147 342 193 370 ',\n },\n dynamicZ: {\n x_min: 29.9375,\n x_max: 420.578125,\n ha: 371,\n o: 'm 115 345 b 221 347 117 345 166 347 b 411 345 306 347 409 345 b 420 330 416 342 420 335 b 415 319 420 326 419 321 b 178 118 397 303 179 118 b 178 117 178 118 178 117 b 181 117 178 117 178 117 b 189 117 182 117 185 117 b 193 117 190 117 191 117 b 247 98 215 117 232 111 b 296 75 266 83 280 76 b 302 75 299 75 300 75 b 322 91 311 75 315 79 b 322 91 322 91 322 91 b 322 91 322 91 322 91 b 319 91 322 91 321 91 b 313 90 318 90 315 90 b 283 107 300 90 288 97 b 277 126 279 114 277 121 b 319 167 277 149 295 167 b 319 167 319 167 319 167 b 362 118 347 167 362 147 b 355 82 362 108 359 96 b 311 33 349 65 340 55 b 224 1 284 12 253 1 b 194 5 213 1 204 2 b 168 18 183 8 178 11 b 110 36 151 30 130 36 b 57 15 88 36 68 29 b 47 11 54 12 51 11 b 31 20 40 11 34 13 b 29 26 31 22 29 25 b 68 66 29 36 39 45 b 285 250 73 71 281 248 b 285 250 285 250 285 250 b 231 252 285 252 261 252 b 137 250 190 252 141 250 b 93 227 122 248 110 241 b 78 220 88 222 83 220 b 66 227 74 220 70 222 b 63 234 65 229 63 231 b 85 291 63 241 69 252 b 115 345 108 342 108 344 ',\n },\n ornamentTrill: {\n x_min: -340.28125,\n x_max: 338.921875,\n ha: 346,\n o: 'm -32 520 b -29 521 -31 520 -31 521 b -23 519 -27 521 -24 520 b -20 513 -21 517 -20 516 b -21 506 -20 512 -20 509 b -31 474 -23 502 -27 488 l -53 402 l -66 352 l -68 349 l -57 349 b -32 351 -51 349 -40 351 b 123 370 19 352 74 359 b 137 371 127 370 133 371 b 170 356 152 371 164 366 b 171 355 170 355 170 355 b 216 366 174 355 183 358 b 280 378 268 377 266 377 b 287 378 283 378 284 378 b 332 349 307 378 322 369 b 338 319 336 341 338 330 b 332 301 338 310 336 302 b 242 280 329 299 246 280 b 242 280 242 280 242 280 b 235 288 236 280 235 283 b 235 292 235 290 235 291 b 236 302 236 297 236 299 b 220 337 236 316 230 330 l 216 340 l 210 335 b 159 276 189 322 172 301 b 118 149 152 265 156 274 b 81 34 84 36 85 36 b -8 13 78 33 -4 13 b -8 13 -8 13 -8 13 b -14 20 -12 15 -14 15 b -8 44 -14 24 -12 31 b -2 66 -5 55 -2 65 b -2 66 -2 66 -2 66 l -2 66 b -43 41 -2 66 -21 55 b -114 4 -98 8 -98 8 b -144 0 -123 0 -134 0 b -242 99 -197 0 -242 43 b -242 109 -242 102 -242 105 b -212 219 -240 122 -242 116 b -185 312 -197 270 -185 312 l -185 312 b -189 312 -185 312 -186 312 b -259 312 -200 312 -227 312 b -321 310 -291 312 -310 310 b -334 312 -330 310 -334 312 b -340 319 -338 313 -340 316 b -336 326 -340 322 -338 324 b -291 337 -334 326 -314 331 l -247 347 l -210 348 b -172 348 -190 348 -172 348 b -168 363 -172 348 -171 355 b -145 442 -151 424 -145 441 b -133 452 -144 444 -140 446 l -77 489 b -32 520 -53 506 -32 520 m 57 334 b 53 335 55 335 54 335 b 44 334 50 335 49 335 b -70 316 8 326 -28 320 b -78 309 -78 316 -78 316 b -108 202 -80 305 -88 274 b -141 81 -136 112 -141 93 b -140 74 -141 79 -141 77 b -117 49 -137 59 -127 49 b -107 52 -114 49 -110 51 b 16 127 -106 54 14 126 b 42 217 16 127 42 215 b 49 241 42 222 44 229 b 73 320 53 251 73 317 b 57 334 73 327 65 333 ',\n },\n ornamentTurn: {\n x_min: -423.3125,\n x_max: 421.9375,\n ha: 431,\n o: 'm -262 197 b -247 197 -257 197 -253 197 b -118 162 -210 197 -163 184 b 40 45 -61 134 -13 98 b 277 -95 119 -33 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -55 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 201 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 136 b 421 22 421 37 421 29 b 245 -199 421 -93 338 -199 b 238 -198 243 -199 240 -199 b -44 -47 148 -194 50 -141 b -250 86 -114 22 -183 66 b -295 94 -270 91 -283 94 b -315 91 -302 94 -307 94 b -381 4 -356 81 -381 43 b -355 -56 -381 -18 -372 -40 b -298 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -178 -69 -200 -58 -189 -62 b -151 -122 -160 -81 -151 -101 b -171 -167 -151 -138 -157 -155 b -239 -195 -185 -181 -213 -192 b -257 -197 -245 -197 -250 -197 b -423 -5 -352 -197 -423 -109 b -412 65 -423 16 -419 40 b -262 197 -389 137 -329 188 ',\n },\n ornamentTurnSlash: {\n x_min: -423.3125,\n x_max: 421.9375,\n ha: 431,\n o: 'm -10 276 b -2 277 -8 277 -5 277 b 17 265 5 277 13 273 b 19 163 19 260 19 260 l 19 68 l 39 45 b 277 -95 122 -34 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -54 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 200 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 137 b 421 22 421 37 421 29 b 257 -198 421 -86 347 -188 b 242 -198 251 -198 247 -198 b 20 -105 181 -198 95 -163 l 19 -104 l 19 -183 b 19 -216 19 -195 19 -206 b 12 -273 19 -272 17 -267 b -2 -278 8 -277 2 -278 b -21 -266 -10 -278 -19 -274 b -23 -165 -23 -263 -23 -262 l -23 -69 l -44 -47 b -250 86 -117 23 -183 66 b -295 94 -270 93 -284 94 b -315 91 -302 94 -308 94 b -381 5 -356 81 -381 43 b -355 -56 -381 -16 -372 -40 b -299 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -168 -77 -196 -58 -179 -65 b -151 -122 -156 -90 -151 -105 b -179 -174 -151 -141 -160 -162 b -239 -195 -194 -184 -217 -192 b -257 -197 -245 -195 -250 -197 b -423 -5 -349 -197 -423 -113 b -423 0 -423 -4 -423 -1 b -277 194 -420 97 -362 173 b -247 197 -268 197 -258 197 b -24 104 -185 197 -100 162 l -23 102 l -23 181 b -21 265 -23 260 -23 260 b -10 276 -20 269 -14 274 ',\n },\n ornamentMordent: {\n x_min: -402.890625,\n x_max: 401.53125,\n ha: 410,\n o: 'm -10 273 b -4 274 -9 273 -6 274 b 16 262 4 274 12 269 b 17 158 17 259 17 259 l 17 56 l 62 112 b 117 174 110 172 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b 21 -6 27 0 24 -2 l 17 -12 l 17 -147 b 17 -210 17 -173 17 -194 b 10 -292 17 -297 16 -287 b -2 -299 6 -297 2 -299 b -21 -287 -10 -299 -19 -295 b -24 -174 -23 -284 -23 -284 l -24 -63 l -66 -117 b -121 -176 -110 -170 -114 -176 b -125 -176 -122 -176 -123 -176 b -296 -12 -134 -174 -125 -184 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 170 -398 -43 -231 165 b -212 174 -221 173 -216 174 b -202 173 -208 174 -205 174 b -39 11 -200 172 -151 122 l -28 -1 l -25 1 l -24 4 l -24 130 b -23 260 -24 256 -24 258 b -10 273 -20 266 -16 270 ',\n },\n ornamentShortTrill: {\n x_min: -402.890625,\n x_max: 401.53125,\n ha: 410,\n o: 'm -219 173 b -213 174 -217 174 -215 174 b -202 173 -209 174 -205 173 b -114 86 -200 172 -179 151 b -28 0 -66 37 -28 0 b 40 84 -28 0 2 37 b 117 174 111 173 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b -42 -86 27 0 -4 -38 b -118 -174 -112 -174 -111 -173 b -123 -176 -119 -176 -121 -176 b -133 -174 -126 -176 -130 -174 b -296 -12 -136 -173 -172 -137 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 172 -398 -43 -228 167 b -219 173 -223 172 -220 173 ',\n },\n ornamentTremblement: {\n x_min: -571.671875,\n x_max: 570.3125,\n ha: 582,\n o: 'm -386 173 b -381 174 -385 174 -383 174 b -370 173 -377 174 -372 173 b -281 86 -367 172 -347 151 b -196 0 -235 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 277 172 b 289 174 285 174 288 174 b 299 173 294 174 298 173 b 462 11 303 172 338 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 374 -176 371 -176 b 280 -87 367 -173 345 -152 b 194 0 234 -38 194 0 b 125 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 43 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -141 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -289 -176 b -300 -174 -295 -176 -299 -174 b -464 -12 -304 -173 -340 -137 l -476 0 l -504 -34 b -543 -77 -534 -73 -537 -76 b -549 -79 -545 -79 -547 -79 b -571 -58 -562 -79 -571 -69 b -568 -49 -571 -55 -570 -52 b -392 172 -566 -43 -396 167 b -386 173 -390 172 -387 173 ',\n },\n ornamentPrecompAppoggTrill: {\n x_min: -571.671875,\n x_max: 570.3125,\n ha: 582,\n o: 'm -559 351 b -551 352 -556 352 -553 352 b -530 338 -543 352 -533 348 b -529 169 -530 337 -529 291 l -529 1 l -507 27 l -441 112 b -382 174 -394 169 -390 174 b -378 174 -381 174 -379 174 b -281 86 -370 174 -375 179 b -196 0 -234 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 279 172 b 289 174 285 174 288 174 b 300 173 294 174 298 173 b 462 11 303 172 340 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 375 -176 371 -176 b 280 -87 367 -173 347 -152 b 194 0 234 -38 194 0 b 126 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 44 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -140 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -288 -176 b -300 -174 -294 -176 -298 -174 b -464 -11 -303 -173 -374 -102 l -476 0 l -506 -37 b -539 -76 -528 -65 -537 -74 b -551 -80 -543 -79 -547 -80 b -570 -68 -558 -80 -566 -76 l -571 -65 l -571 136 b -570 340 -571 331 -571 337 b -559 351 -568 344 -564 348 ',\n },\n ornamentPrecompSlideTrillDAnglebert: {\n x_min: -590.71875,\n x_max: 589.359375,\n ha: 601,\n o: 'm -367 173 b -362 174 -366 174 -364 174 b -351 173 -357 174 -353 173 b -262 86 -348 172 -328 151 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 72 86 -13 172 6 151 b 157 0 119 37 157 0 b 227 84 159 0 189 37 b 303 174 298 173 296 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 144 -86 213 0 182 -38 b 68 -174 73 -174 74 -173 b 62 -176 66 -176 65 -176 b 53 -174 59 -176 55 -174 b -35 -87 50 -173 29 -152 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -367 173 -375 169 -372 172 ',\n },\n ornamentPrecompSlideTrillBach: {\n x_min: -590.71875,\n x_max: 589.359375,\n ha: 601,\n o: 'm 175 273 b 182 274 178 273 181 274 b 202 262 190 274 198 269 b 204 158 204 259 204 259 l 204 56 l 250 112 b 303 174 296 172 298 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 208 -6 213 0 210 -2 l 204 -12 l 204 -147 b 204 -210 204 -173 204 -194 b 198 -292 204 -297 204 -287 b 183 -299 194 -297 189 -299 b 164 -287 175 -299 167 -295 b 163 -174 163 -284 163 -284 l 161 -63 l 119 -117 b 65 -176 76 -170 73 -176 b 61 -176 63 -176 62 -176 b -35 -87 51 -174 57 -180 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -363 174 -374 170 -371 174 b -359 174 -362 174 -360 174 b -262 86 -351 174 -356 179 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 147 11 -13 172 35 123 l 157 -1 l 160 1 l 163 4 l 163 130 b 164 260 163 256 163 258 b 175 273 166 266 170 270 ',\n },\n ornamentPrecompTrillSuffixDandrieu: {\n x_min: -590.71875,\n x_max: 589.359375,\n ha: 601,\n o: 'm 544 335 b 553 337 548 337 551 337 b 575 313 563 337 570 330 b 589 226 583 285 589 256 b 517 8 589 152 563 76 b 464 -58 507 -4 503 -9 l 401 -136 b 362 -176 372 -172 370 -176 b 357 -176 360 -176 359 -176 b 261 -87 349 -174 355 -180 b 175 0 215 -38 175 0 b 106 -86 175 0 144 -38 b 29 -174 35 -174 36 -173 b 24 -176 28 -176 27 -176 b 14 -174 21 -176 17 -174 b -73 -87 12 -173 -8 -152 b -159 0 -121 -38 -159 0 b -228 -86 -160 0 -190 -38 b -304 -174 -299 -174 -298 -173 b -310 -176 -306 -176 -308 -176 b -319 -174 -314 -176 -318 -174 b -483 -12 -323 -173 -359 -137 l -495 0 l -524 -34 b -562 -77 -553 -73 -556 -76 b -568 -79 -564 -79 -566 -79 b -590 -58 -581 -79 -590 -69 b -588 -49 -590 -55 -589 -52 b -412 170 -585 -43 -417 165 b -398 174 -408 173 -402 174 b -389 173 -394 174 -392 174 b -300 86 -387 172 -366 151 b -215 -1 -254 37 -215 -1 b -145 84 -215 -1 -183 37 b -69 173 -74 173 -76 172 b -63 174 -68 174 -66 174 b -54 173 -61 174 -57 173 b 34 86 -51 172 -31 151 b 119 -1 81 37 119 -1 b 189 84 121 -1 151 37 b 265 173 259 173 258 172 b 270 174 266 174 269 174 b 280 173 274 174 279 173 b 370 84 283 172 303 151 b 455 -1 416 37 455 -1 l 455 -1 b 476 24 455 -1 469 15 b 547 226 522 87 547 159 b 534 302 547 252 543 278 b 532 317 533 308 532 313 b 544 335 532 326 536 333 ',\n },\n ornamentPrecompDoubleCadenceUpperPrefix: {\n x_min: -597.53125,\n x_max: 596.171875,\n ha: 608,\n o: 'm -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 80 86 -5 172 13 151 b 166 -1 127 37 166 -1 b 235 84 166 -1 197 37 b 311 173 306 173 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 152 -86 221 -1 190 -38 b 76 -176 81 -174 83 -173 b 70 -176 74 -176 73 -176 b 61 -174 66 -176 62 -174 b -27 -87 58 -173 38 -152 b -114 -1 -74 -38 -112 -1 b -182 -86 -114 -1 -145 -38 b -258 -176 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 ',\n },\n ornamentPrecompDoubleCadenceUpperPrefixTurn: {\n x_min: -597.53125,\n x_max: 596.171875,\n ha: 608,\n o: 'm -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 155 11 -5 172 43 123 l 166 -1 l 168 1 l 170 4 l 170 130 b 171 260 170 256 170 258 b 191 274 175 269 183 274 b 205 267 196 274 201 272 b 212 158 212 262 210 273 l 212 56 l 257 112 b 311 173 304 172 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 216 -6 221 -1 219 -2 l 212 -12 l 212 -147 b 212 -210 212 -173 212 -194 b 205 -292 212 -297 210 -287 b 191 -299 201 -297 196 -299 b 172 -287 183 -299 175 -295 b 170 -174 171 -284 171 -284 l 170 -63 l 127 -117 b 73 -176 84 -170 80 -176 b 68 -176 72 -176 70 -176 b -27 -87 59 -174 65 -180 b -114 0 -74 -38 -112 0 b -182 -86 -114 0 -145 -38 b -258 -174 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 ',\n },\n ornamentPrecompTrillLowerSuffix: {\n x_min: -597.53125,\n x_max: 596.171875,\n ha: 608,\n o: 'm -413 173 b -408 174 -412 174 -409 174 b -397 173 -404 174 -400 173 b -308 86 -394 172 -374 151 b -223 0 -261 37 -223 0 b -153 84 -223 0 -191 37 b -77 174 -83 173 -84 172 b -72 174 -76 174 -74 174 b -62 173 -68 174 -63 173 b 25 86 -59 172 -39 151 b 112 0 73 37 111 0 b 181 84 112 0 144 37 b 257 174 251 173 251 172 b 262 174 258 174 261 174 b 273 173 266 174 270 173 b 436 9 276 172 347 101 l 447 -1 l 477 36 b 522 79 511 79 513 79 l 522 79 b 552 51 533 79 539 73 b 596 -112 582 6 596 -51 b 567 -262 596 -161 586 -213 b 539 -322 558 -287 544 -316 b 524 -327 534 -326 529 -327 b 504 -315 515 -327 507 -323 b 503 -308 503 -312 503 -309 b 511 -285 503 -302 504 -297 b 555 -113 540 -227 555 -169 b 544 -34 555 -86 551 -59 b 522 19 540 -16 530 8 l 521 22 l 481 -26 l 405 -122 b 353 -176 366 -172 362 -176 b 349 -176 352 -176 351 -176 b 253 -87 341 -176 347 -180 b 167 0 206 -38 167 0 b 99 -86 167 0 136 -38 b 21 -174 27 -174 28 -173 b 17 -176 20 -176 19 -176 b 6 -174 13 -176 9 -174 b -81 -87 4 -173 -14 -152 b -167 0 -129 -38 -167 0 b -236 -86 -167 0 -198 -38 b -313 -174 -307 -174 -306 -173 b -318 -176 -314 -176 -315 -176 b -328 -174 -321 -176 -325 -174 b -491 -12 -330 -173 -367 -137 l -503 0 l -530 -34 b -570 -77 -562 -73 -564 -76 b -577 -79 -571 -79 -574 -79 b -597 -58 -588 -79 -597 -69 b -596 -49 -597 -55 -597 -52 b -417 172 -593 -43 -423 167 b -413 173 -417 172 -415 173 ',\n },\n stringsDownBow: {\n x_min: -228.671875,\n x_max: 227.3125,\n ha: 232,\n o: 'm -217 487 l -213 488 l 0 488 l 212 488 l 216 487 b 225 476 220 484 224 480 l 227 473 l 227 244 l 227 15 l 225 12 b 206 0 223 4 215 0 b 197 1 204 0 200 0 b 187 12 193 4 189 6 l 186 15 l 186 138 l 186 262 l -1 262 l -187 262 l -187 138 l -187 15 l -189 12 b -208 0 -193 4 -200 0 b -227 12 -216 0 -223 4 l -228 15 l -228 244 l -228 473 l -227 476 b -217 487 -225 480 -221 484 ',\n },\n stringsUpBow: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -137 381 b -130 383 -134 383 -133 383 b -111 371 -122 383 -114 378 b -55 224 -110 370 -85 305 b 0 80 -25 145 -1 80 b 54 224 0 80 24 145 b 112 377 114 384 110 373 b 127 384 118 381 122 384 b 148 362 138 384 148 374 l 148 356 l 83 183 b 16 9 47 88 17 11 b -1 0 12 2 5 0 b -14 5 -5 0 -10 1 b -84 183 -19 9 -13 -6 l -149 356 l -149 362 b -137 381 -149 371 -145 378 ',\n },\n stringsHarmonic: {\n x_min: -122.5,\n x_max: 121.140625,\n ha: 124,\n o: 'm -16 145 b 0 147 -10 147 -5 147 b 121 -1 66 147 121 77 b 114 -49 121 -16 118 -33 b -1 -148 95 -112 47 -148 b -85 -106 -31 -148 -61 -134 b -122 -1 -110 -76 -122 -38 b -16 145 -122 68 -81 134 m 12 111 b 0 113 8 113 4 113 b -68 22 -29 113 -61 73 b -70 0 -69 15 -70 6 b -13 -113 -70 -49 -47 -98 b -1 -115 -9 -115 -5 -115 b 63 -40 24 -115 53 -83 b 68 -1 66 -27 68 -15 b 12 111 68 48 46 97 ',\n },\n pluckedSnapPizzicatoAbove: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 ',\n },\n pluckedSnapPizzicatoBelow: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 ',\n },\n pluckedLeftHandPizzicato: {\n x_min: 0,\n x_max: 319.859375,\n ha: 326,\n o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ',\n },\n keyboardPedalPed: {\n x_min: -1.359375,\n x_max: 1064.390625,\n ha: 1086,\n o: 'm 296 692 b 314 694 302 694 307 694 b 386 685 337 694 366 689 b 548 498 480 660 548 580 b 548 481 548 492 548 487 b 455 395 541 426 499 395 b 370 462 420 395 383 417 b 362 496 364 477 362 488 b 377 514 362 509 367 514 b 393 501 386 514 390 510 b 432 474 397 484 413 474 b 470 487 445 474 458 478 b 491 530 484 496 491 510 b 490 544 491 534 491 539 b 333 660 479 606 411 657 l 323 662 l 315 646 b 269 524 285 591 269 556 b 321 431 269 492 287 466 b 349 395 338 413 343 408 b 363 342 359 378 363 362 b 359 312 363 333 362 322 b 285 158 348 266 318 206 b 281 152 283 155 281 152 b 281 152 281 152 281 152 b 287 154 283 152 284 152 b 318 155 298 154 308 155 b 461 98 371 155 419 136 l 464 97 l 483 112 b 503 129 494 120 503 127 b 504 130 503 129 504 129 b 503 138 504 131 503 134 b 500 180 500 152 500 166 b 553 326 500 238 518 288 b 604 366 560 331 592 358 b 649 381 617 376 632 381 b 696 362 665 381 681 374 b 724 302 714 347 724 324 b 695 238 724 278 714 255 b 660 210 691 234 662 212 b 579 148 658 209 582 151 b 579 148 579 148 579 148 b 596 106 579 144 589 119 b 622 77 604 88 609 83 b 657 69 632 72 645 69 b 748 112 688 69 721 84 b 755 123 754 117 755 120 b 755 127 755 124 755 126 b 751 165 752 137 751 151 b 758 219 751 183 754 202 b 894 387 774 290 820 347 b 896 390 896 388 896 388 b 891 398 896 391 895 392 b 622 560 827 477 730 535 b 600 580 605 564 600 569 b 617 596 600 591 607 596 b 628 595 622 596 624 596 b 1057 248 846 552 1020 412 b 1064 191 1061 229 1064 209 b 922 0 1064 94 1005 9 b 902 -1 916 -1 909 -1 b 774 76 847 -1 800 26 b 769 83 770 81 770 83 b 769 81 769 83 769 83 b 627 -1 733 29 677 -1 b 548 27 597 -1 570 8 b 515 88 537 37 525 61 l 513 95 l 510 93 l 453 45 b 390 0 396 0 396 0 b 390 0 390 0 390 0 b 374 15 381 0 377 4 b 268 105 359 69 314 105 b 250 104 262 105 257 105 l 243 102 l 234 90 b 155 1 201 49 159 2 b 147 -1 152 0 149 -1 b 130 15 138 -1 130 6 b 132 20 130 18 132 19 b 136 31 133 22 134 27 b 220 131 149 74 178 109 b 231 137 225 134 230 136 b 302 278 280 202 302 244 b 265 335 302 299 295 309 b 209 442 234 363 213 402 b 209 455 209 446 209 451 b 279 648 209 502 232 564 l 285 659 l 283 659 b 176 627 238 653 210 645 b 57 477 111 594 66 538 b 55 459 55 471 55 464 b 72 409 55 437 61 415 b 93 403 78 405 87 403 b 152 467 123 403 151 431 b 168 488 153 483 157 488 b 185 462 181 488 185 483 l 185 460 b 137 344 183 409 168 369 b 78 322 119 328 98 322 b 13 360 50 322 25 335 b -1 426 4 380 -1 402 b 89 610 -1 488 32 559 b 296 692 147 659 210 685 m 926 348 b 921 353 924 351 922 353 b 914 348 920 353 918 351 b 823 167 857 306 823 237 b 828 124 823 154 826 138 b 890 31 837 79 862 40 b 896 31 892 31 894 31 b 956 104 916 31 940 59 b 970 191 965 129 970 159 b 966 241 970 208 969 224 b 926 348 959 277 945 313 m 627 326 b 619 326 624 326 622 326 b 598 316 611 326 604 323 b 568 215 579 288 568 255 b 568 208 568 213 568 210 b 571 183 570 195 570 184 l 571 183 b 594 201 571 183 582 191 l 634 231 b 660 259 653 247 656 248 b 664 278 662 266 664 272 b 627 326 664 299 649 320 ',\n },\n keyboardPedalUp: {\n x_min: -1.359375,\n x_max: 592.078125,\n ha: 604,\n o: 'm 280 692 b 295 694 283 692 289 694 b 310 692 300 694 307 692 b 357 630 340 684 357 657 b 336 580 357 612 351 594 b 311 538 321 566 311 549 b 352 492 311 512 330 492 b 366 495 357 492 362 492 b 397 553 390 503 397 517 b 415 603 397 576 402 591 b 460 623 427 617 443 623 b 509 599 479 623 498 614 b 522 559 518 587 522 573 b 494 506 522 538 513 519 b 451 495 481 498 473 496 b 415 488 432 495 426 494 b 394 449 404 483 394 464 b 394 448 394 448 394 448 l 394 440 l 397 433 b 428 409 404 420 413 413 b 438 408 431 408 435 408 b 479 431 450 408 462 415 b 528 455 495 448 510 455 b 548 452 534 455 541 453 b 592 391 577 442 592 416 b 549 331 592 365 577 340 b 528 327 541 328 534 327 b 479 351 510 327 495 335 b 438 374 464 367 450 374 b 417 369 431 374 424 373 b 394 333 402 360 394 348 b 400 312 394 326 396 319 b 451 287 408 294 420 288 b 513 258 484 285 499 278 b 522 223 519 247 522 234 b 461 159 522 190 496 159 b 449 161 457 159 453 159 b 397 229 416 167 397 191 b 366 288 397 265 390 278 b 352 290 362 290 357 290 b 315 262 336 290 321 280 b 311 245 313 256 311 251 b 334 204 311 233 318 220 b 355 170 348 190 351 184 b 357 152 356 166 357 159 b 355 136 357 147 356 140 b 295 88 345 104 321 88 b 232 152 264 88 232 112 b 255 204 232 174 238 186 b 279 244 273 222 279 231 l 279 245 b 238 290 279 270 259 290 b 224 288 234 290 228 290 b 193 229 200 278 193 265 b 141 161 193 191 174 167 b 129 159 137 159 133 159 b 68 223 93 159 68 190 b 77 258 68 234 70 247 b 138 287 91 278 106 285 b 185 302 166 287 175 291 b 196 333 193 312 196 323 b 174 369 196 347 187 360 b 152 374 166 373 159 374 b 111 351 140 374 126 367 b 62 327 95 335 80 327 b 51 328 58 327 54 327 b -1 391 16 334 -1 363 b 53 455 -1 420 17 449 b 62 455 57 455 59 455 b 111 431 80 455 95 448 b 152 408 127 415 140 408 b 161 409 155 408 159 408 b 193 433 176 413 186 420 l 196 440 l 196 448 b 196 451 196 449 196 449 b 190 471 196 459 194 463 b 137 495 182 489 167 495 l 134 495 l 134 495 b 68 560 95 495 68 521 b 129 623 68 596 95 623 b 144 621 134 623 138 623 b 193 553 175 614 193 589 b 224 495 193 517 200 503 b 238 492 228 492 234 492 b 279 538 259 492 279 512 b 254 580 279 549 269 566 b 232 630 239 594 232 612 b 280 692 232 657 250 684 m 307 456 b 295 458 303 458 299 458 b 230 391 258 458 230 426 b 236 360 230 381 231 371 b 295 324 249 337 272 324 b 353 360 318 324 341 337 b 360 391 357 370 360 381 b 307 456 360 421 340 451 ',\n },\n pictChokeCymbal: {\n x_min: 0,\n x_max: 227.3125,\n ha: 232,\n o: 'm 91 213 b 100 215 93 215 96 215 b 227 58 167 215 224 144 b 227 52 227 56 227 54 b 61 -201 227 -43 164 -138 b 29 -216 44 -212 36 -216 b 23 -210 27 -216 24 -213 b 21 -205 21 -208 21 -206 b 34 -192 21 -201 25 -197 b 122 -55 89 -161 122 -106 b 104 6 122 -33 117 -12 l 103 9 l 96 9 b 4 79 57 9 17 38 b 0 112 1 90 0 101 b 91 213 0 163 36 209 ',\n },\n wiggleArpeggiatoUp: {\n x_min: 58.53125,\n x_max: 228.671875,\n ha: 294,\n o: 'm 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 ',\n },\n arrowheadBlackUp: {\n x_min: -10.890625,\n x_max: 299.4375,\n ha: 294,\n o: 'm 136 460 b 142 462 137 462 140 462 b 166 449 152 462 161 456 b 171 428 168 446 168 445 b 288 131 194 322 238 209 b 298 115 295 120 296 117 b 299 106 298 112 299 109 b 273 81 299 91 287 81 b 255 86 268 81 261 83 b 155 116 225 104 183 116 l 152 116 l 149 108 b 141 83 148 102 144 91 b 134 48 137 69 134 58 b 149 9 134 34 140 24 b 153 -1 152 5 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 147 -11 b 122 2 138 -11 133 -6 b 95 61 104 20 95 38 b 107 108 95 74 99 90 b 108 113 107 111 108 112 b 107 113 108 113 108 113 b 102 113 106 113 104 113 b 31 86 76 108 53 98 b 14 80 24 81 20 80 b -10 106 0 80 -10 91 b 0 131 -10 115 -9 116 b 115 430 49 209 91 317 b 136 460 119 451 123 456 ',\n },\n arrowheadBlackDown: {\n x_min: -10.890625,\n x_max: 298.078125,\n ha: 294,\n o: 'm 138 473 b 142 474 140 473 141 474 b 164 459 148 474 153 470 b 191 402 183 442 191 423 b 181 353 191 388 187 371 b 178 349 179 352 178 349 b 179 348 178 348 179 348 b 185 349 181 348 182 348 b 255 376 210 355 234 363 b 272 381 264 381 266 381 b 298 355 287 381 298 370 b 288 330 298 348 298 345 b 171 34 238 254 194 141 b 166 13 168 16 168 16 b 144 1 161 5 152 1 b 121 15 134 1 125 5 b 115 33 119 18 117 24 b 0 330 91 145 49 252 b -10 355 -9 345 -10 348 b 13 381 -10 371 0 381 b 31 376 19 381 25 380 b 132 345 61 358 103 345 l 136 345 l 137 355 b 145 378 138 359 142 370 b 152 415 149 394 152 405 b 137 452 152 427 148 438 b 133 464 134 458 133 460 b 138 473 133 467 134 470 ',\n },\n vexAccidentalMicrotonal1: {\n x_min: -171.5,\n x_max: 483.1875,\n ha: 493,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 495 20 616 20 616 b 20 373 20 427 20 373 b 115 410 20 373 63 390 l 210 448 l 210 531 b 212 620 210 614 210 616 b 231 632 215 628 223 632 b 246 627 236 632 242 631 b 251 541 251 620 251 628 l 251 463 l 315 489 b 387 514 368 509 381 514 b 393 513 390 514 392 514 b 406 494 402 510 406 502 b 397 476 406 487 404 480 b 323 446 396 474 363 462 l 251 417 l 251 283 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -19 -217 -9 -229 -16 -224 l -20 -215 l -21 48 l -21 310 l -83 287 b -152 262 -133 266 -145 262 b -157 263 -153 262 -155 262 b -171 283 -166 266 -171 274 b -161 301 -171 290 -167 297 b -91 328 -160 302 -129 315 l -21 356 l -21 487 l -20 617 l -19 621 b -8 631 -17 626 -12 630 m 210 288 b 210 401 210 351 210 401 b 114 365 209 401 167 384 l 20 327 l 20 238 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 180 164 199 187 192 l 209 177 b 209 177 209 177 209 177 b 210 288 210 177 210 199 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 ',\n },\n vexAccidentalMicrotonal2: {\n x_min: -1.359375,\n x_max: 386.5625,\n ha: 394,\n o: 'm 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 ',\n },\n vexWiggleArpeggioUp: {\n x_min: 58.53125,\n x_max: 228.671875,\n ha: 294,\n o: 'm 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 ',\n },\n vexNoteHeadMutedBreve: {\n x_min: 0,\n x_max: 370.21875,\n ha: 378,\n o: 'm 0 0 l 0 277 l 61 277 l 122 277 l 122 0 l 122 -278 l 61 -278 l 0 -278 l 0 0 m 246 -1 l 246 277 l 308 277 l 370 277 l 370 -1 l 370 -278 l 308 -278 l 246 -278 l 246 -1 ',\n },\n },\n cssFontWeight: 'normal',\n ascender: 1903,\n underlinePosition: -125,\n cssFontStyle: 'normal',\n boundingBox: {\n yMin: -2065.375,\n xMin: -695.53125,\n yMax: 1901.578125,\n xMax: 1159.671875,\n },\n resolution: 1000,\n original_font_information: {\n postscript_name: 'Gonville-18',\n version_string: 'Version 0.1.8904 ',\n vendor_url: '',\n full_font_name: 'Gonville-18',\n font_family_name: 'Gonville-18',\n copyright: 'No copyright is claimed on this font file.',\n description: '',\n trademark: '',\n designer: '',\n designer_url: '',\n unique_font_identifier: 'FontForge 2.0 : Gonville-18 : 17-3-2010',\n license_url: '',\n license_description: '',\n manufacturer_name: '',\n font_sub_family_name: '18',\n },\n descender: -2066,\n fontFamily: 'Gonville-18',\n lineHeight: 4093,\n underlineThickness: 50,\n};\n","/**\n * The Gonville font was created by Simon Tatham.\n * https://www.chiark.greenend.org.uk/~sgtatham/gonville/\n */\nexport const GonvilleMetrics = {\n name: 'Gonville',\n smufl: false,\n stave: {\n padding: 12,\n endPaddingMax: 10,\n endPaddingMin: 5,\n unalignedNotePadding: 10,\n },\n accidental: {\n noteheadAccidentalPadding: 1,\n leftPadding: 2,\n accidentalSpacing: 3,\n },\n clef: {\n default: {\n point: 40,\n width: 26,\n },\n small: {\n point: 32,\n width: 20,\n },\n annotations: {\n '8va': {\n smuflCode: 'timeSig8',\n default: {\n point: 20,\n treble: {\n line: -1.2,\n shiftX: 11,\n },\n },\n small: {\n point: 18,\n treble: {\n line: -0.4,\n shiftX: 8,\n },\n },\n },\n '8vb': {\n smuflCode: 'timeSig8',\n default: {\n point: 20,\n treble: {\n line: 6.3,\n shiftX: 10,\n },\n bass: {\n line: 4,\n shiftX: 1,\n },\n },\n small: {\n point: 18,\n treble: {\n line: 5.8,\n shiftX: 6,\n },\n bass: {\n line: 3.5,\n shiftX: 0.5,\n },\n },\n },\n },\n // May not need these anymore\n lineCount: {\n '8': { point: 55, shiftY: 14 },\n '7': { point: 47, shiftY: 8 },\n '6': { point: 40, shiftY: 1 },\n '5': { point: 30, shiftY: -6 },\n '4': { point: 23, shiftY: -12 },\n },\n },\n parenthesis: {\n default: {\n point: 39,\n width: 7,\n },\n gracenote: {\n point: (39 * 3) / 5,\n width: 3,\n },\n },\n pedalMarking: {\n up: {\n point: 40,\n },\n down: {\n point: 40,\n },\n },\n // These are for numeric digits, such as in time signatures\n digits: {\n point: 40,\n tupletPoint: 28,\n },\n // articulation: {\n // },\n tremolo: {\n default: {\n point: 25,\n spacing: 4,\n offsetYStemUp: -7,\n offsetYStemDown: 7,\n offsetXStemUp: 9,\n offsetXStemDown: -0.5,\n },\n grace: {\n point: 15,\n spacing: 4,\n offsetYStemUp: -7,\n offsetYStemDown: 7,\n offsetXStemUp: 6.5,\n offsetXStemDown: -0.5,\n },\n },\n staveRepetition: {\n symbolText: {\n offsetX: 12,\n offsetY: 25,\n spacing: 5,\n },\n coda: {\n offsetY: 25,\n },\n segno: {\n offsetY: 0,\n },\n },\n // noteHead: {\n // },\n stem: {\n heightAdjustmentForFlag: -3,\n // These are stem (Y) offsets to the note heads. To shift the\n // noteheads (x-position) themselves, see glyphs.notehead.custom.\n noteHead: {\n noteheadTriangleUpHalf: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpBlack: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpWhole: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadXHalf: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXBlack: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXWhole: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadHalf: {\n offsetYBaseStemUp: -1.5,\n offsetYBaseStemDown: 1.5,\n },\n noteheadBlack: {\n offsetYBaseStemUp: -1.5,\n offsetYBaseStemDown: 1.5,\n },\n noteheadSquareWhite: {\n offsetYBaseStemDown: -5,\n offsetYBaseStemUp: 5,\n },\n },\n },\n glyphs: {\n flag: {\n shiftX: -0.08,\n flag8thDown: {\n shiftX: -0.16,\n },\n flag16thDown: {\n shiftX: -0.16,\n },\n flag32ndDown: {\n shiftX: -0.16,\n shiftY: 9,\n },\n flag64thDown: {\n shiftX: -0.16,\n shiftY: 13,\n },\n flag128thDown: {\n shiftX: -0.16,\n shiftY: 22,\n },\n flag32ndUp: {\n shiftY: -9,\n },\n flag64thUp: {\n shiftY: -13,\n },\n flag128thUp: {\n shiftY: -22,\n },\n },\n stringNumber: {\n verticalPadding: 8,\n stemPadding: 2,\n leftPadding: 5,\n rightPadding: 6,\n },\n textNote: {\n point: 40,\n default: {},\n ornamentTrill: {\n shiftX: -5,\n shiftY: 4,\n },\n },\n noteHead: {\n minPadding: 2,\n custom: {\n noteheadCircleXStemUp: {\n shiftX: -1.5,\n },\n noteheadXWholeStemUp: {\n shiftX: -5,\n },\n noteheadTriangleUpWholeStemUp: {\n shiftX: -6,\n },\n },\n },\n chordSymbol: {\n global: {\n superscriptOffset: -400,\n subscriptOffset: 300,\n kerningOffset: -250,\n lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'],\n upperKerningText: ['A', 'L'],\n spacing: 100,\n superSubRatio: 0.66,\n },\n csymDiminished: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymHalfDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymAugmented: {\n scale: 1,\n leftSideBearing: 0,\n advanceWidth: 530,\n yOffset: 0,\n },\n csymParensLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 155,\n yOffset: 250,\n },\n csymParensRightTall: {\n scale: 0.8,\n leftSideBearing: -40,\n advanceWidth: 189,\n yOffset: 250,\n },\n csymBracketLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 328,\n yOffset: 0,\n },\n csymBracketRightTall: {\n scale: 0.8,\n leftSideBearing: 1,\n advanceWidth: 600,\n yOffset: 0,\n },\n csymParensLeftVeryTall: {\n scale: 0.9,\n leftSideBearing: 0,\n advanceWidth: 121,\n yOffset: 350,\n },\n csymParensRightVeryTall: {\n scale: 0.9,\n leftSideBearing: 50,\n advanceWidth: 111,\n yOffset: 350,\n },\n csymDiagonalArrangementSlash: {\n scale: 0.6,\n leftSideBearing: -1,\n advanceWidth: 990,\n yOffset: 0,\n },\n csymMinor: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 482,\n yOffset: 0,\n },\n csymMajorSeventh: {\n scale: 0.9,\n leftSideBearing: 200,\n yOffset: 0,\n advanceWidth: 600,\n },\n accidentalSharp: {\n scale: 0.75,\n leftSideBearing: 40,\n advanceWidth: 250,\n yOffset: -402,\n },\n accidentalFlat: {\n scale: 0.95,\n leftSideBearing: -50,\n advanceWidth: 208,\n yOffset: -184,\n },\n },\n jazzOrnaments: {\n brassScoop: {\n scale: 1.0,\n xOffset: -12,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassDoitMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 22,\n },\n brassFallLipShort: {\n scale: 1.0,\n xOffset: 17,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassLiftMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 5,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassFallRoughMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 28,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassBend: {\n scale: 1.0,\n xOffset: 2,\n yOffset: -8,\n stemUpYOffset: 24,\n reportedWidth: 5,\n },\n brassMuteClosed: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -9,\n stemUpYOffset: 24,\n reportedWidth: 5,\n },\n brassMuteOpen: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -7,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassFlip: {\n scale: 1.0,\n xOffset: 10,\n yOffset: -4,\n stemUpYOffset: 7,\n reportedWidth: 5,\n },\n brassJazzTurn: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -4,\n stemUpYOffset: 10,\n reportedWidth: 28,\n },\n brassSmear: {\n scale: 1.0,\n xOffset: 10,\n yOffset: -4,\n stemUpYOffset: 9,\n reportedWidth: 5,\n },\n },\n tremolo: {\n default: {\n shiftY: -10,\n },\n grace: {\n shiftY: -5,\n },\n },\n tuplet: {\n noteHeadOffset: 20,\n stemOffset: 10,\n bottomLine: 4,\n topModifierOffset: 15,\n },\n },\n};\n","export const LelandFont = {\n glyphs: {\n bracketTop: {\n x_min: 0,\n x_max: 491,\n y_min: 0,\n y_max: 279,\n ha: 279,\n o: 'm 697 399 b 687 402 694 400 690 402 b 671 395 681 402 674 400 b 249 168 668 390 524 168 l 20 168 b 0 150 9 168 0 161 l 0 20 l 0 0 l 176 0 b 706 374 619 0 704 370 b 707 382 706 376 707 379 b 697 399 707 389 703 395 z',\n },\n bracketBottom: {\n x_min: 0,\n x_max: 491,\n y_min: -279,\n y_max: 0,\n ha: 279,\n o: 'm 697 -399 b 707 -382 703 -395 707 -389 b 706 -374 707 -379 706 -376 b 176 0 704 -370 619 0 l 0 0 l 0 -20 l 0 -150 b 20 -168 0 -161 9 -168 l 249 -168 b 671 -395 524 -168 668 -390 b 687 -402 674 -400 681 -402 b 697 -399 690 -402 694 -400 z',\n },\n segno: {\n x_min: 0,\n x_max: 654,\n y_min: 0,\n y_max: 869,\n ha: 869,\n o: 'm 546 690 l 838 1207 b 841 1215 840 1210 841 1212 b 832 1233 841 1221 837 1230 l 809 1248 b 798 1251 806 1250 801 1251 b 780 1241 792 1251 783 1247 l 487 721 l 217 860 b 99 995 147 897 99 924 b 236 1165 99 1120 179 1165 b 343 1073 288 1165 325 1130 b 454 988 357 1022 405 988 b 477 991 461 988 469 989 b 541 1076 526 1002 541 1045 b 540 1089 541 1080 541 1084 b 294 1225 534 1116 514 1225 b 0 939 72 1225 0 1053 b 125 706 0 825 42 753 l 397 563 l 104 45 b 102 35 102 42 102 37 b 111 19 102 29 107 22 l 132 3 b 144 0 135 1 141 0 b 148 0 145 0 147 0 b 161 10 153 1 158 6 l 456 531 l 704 403 b 842 256 780 361 842 318 b 706 86 842 131 763 86 b 599 177 654 86 616 120 b 488 262 585 228 537 262 b 465 259 481 262 472 261 b 402 177 418 248 402 206 b 403 163 402 171 402 167 b 649 26 409 135 429 26 b 942 312 871 26 942 199 b 821 549 942 426 901 507 z m 52 444 b 118 416 69 426 95 416 b 183 444 141 416 166 426 b 210 508 200 461 210 485 b 183 573 210 531 200 556 b 118 600 166 590 141 600 b 52 573 95 600 69 590 b 24 508 35 556 24 531 b 52 444 24 485 35 461 z m 760 730 b 825 703 778 713 802 703 b 890 730 848 703 873 713 b 917 795 907 747 917 772 b 890 861 917 818 907 844 b 825 888 873 878 848 888 b 760 861 802 888 778 878 b 733 795 743 844 733 818 b 760 730 733 772 743 747 z',\n },\n coda: {\n x_min: 0,\n x_max: 745,\n y_min: -113,\n y_max: 735,\n ha: 848,\n o: 'm 924 467 b 560 896 916 697 757 881 l 560 1038 b 540 1058 560 1050 552 1058 l 524 1058 b 505 1038 513 1058 505 1050 l 505 896 b 150 467 311 877 158 693 l 20 467 b 0 446 9 467 0 458 l 0 432 b 20 412 0 420 9 412 l 150 412 b 505 0 166 193 317 17 l 505 -143 b 524 -163 505 -154 513 -163 l 540 -163 b 560 -143 552 -163 560 -154 l 560 0 b 923 412 753 13 907 190 l 1054 412 b 1073 432 1066 412 1073 420 l 1073 446 b 1054 467 1073 458 1066 467 z m 560 467 l 560 852 b 773 467 716 837 773 671 z m 505 467 l 301 467 b 505 851 301 668 357 831 z m 505 412 l 505 45 b 301 412 366 65 301 219 z m 560 412 l 772 412 b 560 45 772 215 706 60 z',\n },\n gClef: {\n x_min: 0,\n x_max: 640,\n y_min: -666,\n y_max: 1112,\n ha: 1778,\n o: 'm 809 -30 b 665 -279 809 -132 768 -238 b 586 186 635 -107 596 122 b 809 -30 716 186 809 98 z m 605 -297 b 521 -305 576 -302 549 -305 b 140 56 315 -305 140 -161 b 390 498 140 232 264 389 b 459 562 415 520 438 540 b 492 357 472 484 482 416 b 272 45 361 318 272 180 b 467 -194 272 -56 351 -194 b 491 -176 478 -194 491 -189 b 459 -144 491 -163 477 -156 b 372 -1 403 -109 372 -72 b 521 177 372 86 436 157 z m 478 1184 b 632 1392 491 1241 557 1392 b 688 1223 654 1392 688 1322 b 478 863 688 1073 577 960 b 462 1037 469 920 462 976 b 478 1184 462 1090 467 1139 z m 176 -739 b 444 -959 176 -834 249 -959 b 622 -910 511 -959 570 -942 b 720 -670 700 -855 720 -760 b 697 -467 720 -613 711 -549 b 675 -338 693 -438 684 -395 b 922 3 816 -292 922 -145 b 557 367 922 220 768 367 b 516 619 543 454 528 539 b 773 1188 668 779 773 959 b 710 1477 773 1319 733 1426 b 608 1601 675 1551 634 1601 b 505 1528 598 1601 553 1584 b 387 1113 413 1418 387 1234 b 419 804 387 1035 395 965 b 312 701 418 802 343 726 b 0 117 181 579 0 405 b 503 -364 0 -153 235 -364 b 616 -354 544 -364 583 -360 b 660 -670 644 -492 660 -593 b 438 -899 660 -819 583 -899 b 370 -891 403 -899 373 -891 b 366 -887 369 -890 366 -888 b 373 -881 366 -884 369 -883 b 508 -721 441 -871 508 -814 b 341 -562 508 -644 449 -562 b 176 -739 240 -562 176 -644 z',\n },\n cClef: {\n x_min: 0,\n x_max: 627,\n y_min: -480,\n y_max: 482,\n ha: 962,\n o: 'm 19 675 b 0 657 9 675 0 667 l 0 -654 b 19 -672 0 -664 9 -672 l 122 -672 b 141 -654 132 -672 141 -664 l 141 657 b 122 675 141 667 132 675 z m 903 -376 b 619 -58 903 -197 808 -58 b 505 -95 586 -58 562 -60 b 426 1 503 -89 474 -32 b 505 98 474 35 503 92 b 641 60 560 65 579 60 b 903 379 816 60 903 223 b 580 694 903 580 755 694 b 318 517 472 694 318 649 b 438 400 318 446 367 400 b 546 510 501 400 546 446 b 425 615 546 589 494 615 b 547 651 458 638 503 651 b 723 400 698 651 723 530 b 593 128 723 289 720 128 b 438 279 467 128 441 265 b 418 300 438 281 438 300 b 396 279 397 300 396 281 b 264 29 383 200 344 62 l 264 657 b 246 675 264 667 256 675 b 228 657 236 675 228 667 l 228 -654 b 246 -672 228 -664 236 -672 b 264 -654 256 -672 264 -664 l 264 -26 b 396 -278 348 -60 380 -197 b 418 -297 396 -279 397 -297 b 438 -278 438 -297 438 -279 b 593 -125 441 -262 467 -125 b 723 -397 720 -125 723 -287 b 547 -648 723 -527 698 -648 b 425 -612 503 -648 458 -635 b 441 -613 426 -612 432 -613 b 546 -507 504 -613 546 -569 b 438 -397 546 -444 501 -397 b 318 -514 367 -397 318 -444 b 580 -691 318 -647 472 -691 b 903 -376 755 -691 903 -577 z',\n },\n fClef: {\n x_min: 0,\n x_max: 664,\n y_min: -617,\n y_max: 251,\n ha: 868,\n o: 'm 366 361 b 167 298 256 361 168 298 b 37 112 84 236 50 163 b 27 36 30 86 27 60 b 46 -58 27 1 33 -30 b 140 -138 63 -96 96 -124 b 194 -147 157 -144 176 -147 b 287 -122 226 -147 259 -138 b 359 10 331 -98 359 -46 b 289 134 359 60 333 107 b 206 160 259 154 230 160 b 160 153 189 160 173 157 b 109 122 145 147 121 132 b 147 215 114 150 131 192 b 219 279 163 238 194 266 b 351 308 255 300 301 308 b 570 -52 498 308 570 190 b 477 -399 570 -186 520 -314 b 310 -635 429 -494 366 -585 b 17 -837 160 -772 19 -837 b 0 -864 17 -837 0 -847 b 1 -871 0 -867 1 -868 b 27 -888 6 -886 19 -888 b 35 -887 29 -888 33 -887 b 331 -717 36 -887 200 -819 b 528 -544 405 -664 471 -606 b 661 -367 580 -488 625 -428 b 760 -50 724 -259 760 -147 b 670 239 760 69 729 168 b 366 361 602 320 500 361 z m 818 179 b 887 107 818 138 850 107 b 956 179 924 107 956 138 b 887 252 956 219 924 252 b 818 179 850 252 818 219 z m 818 -177 b 887 -251 818 -217 850 -251 b 956 -177 924 -251 956 -217 b 887 -104 956 -137 924 -104 b 818 -177 850 -104 818 -137 z',\n },\n unpitchedPercussionClef1: {\n x_min: 0,\n x_max: 352,\n y_min: -252,\n y_max: 252,\n ha: 504,\n o: 'm 19 363 b 0 344 9 363 0 354 l 0 -344 b 19 -363 0 -354 9 -363 l 177 -363 b 196 -344 187 -363 196 -354 l 196 344 b 177 363 196 354 187 363 z m 330 363 b 311 344 320 363 311 354 l 311 -344 b 330 -363 311 -354 320 -363 l 488 -363 b 507 -344 498 -363 507 -354 l 507 344 b 488 363 507 354 498 363 z',\n },\n '6stringTabClef': {\n x_min: 0,\n x_max: 439,\n y_min: -743,\n y_max: 746,\n ha: 1489,\n o: 'm 52 1074 l 52 958 l 249 958 l 249 419 l 387 419 l 387 958 l 583 958 l 583 1074 z m 0 -333 l 145 -333 l 192 -196 l 436 -196 l 481 -333 l 632 -333 l 396 334 l 238 334 z m 315 181 l 400 -81 l 229 -81 z m 566 -474 b 393 -402 531 -428 475 -403 l 71 -402 l 71 -1070 l 372 -1070 b 374 -1070 373 -1070 373 -1070 b 465 -1061 405 -1070 435 -1067 b 541 -1027 494 -1056 520 -1043 b 588 -975 560 -1012 575 -995 b 618 -868 608 -943 618 -907 b 592 -770 618 -829 609 -798 b 514 -711 575 -743 549 -724 b 566 -674 537 -700 554 -688 b 596 -576 586 -649 596 -616 b 566 -474 596 -536 586 -503 z m 348 -518 b 428 -528 380 -518 408 -521 b 464 -590 452 -539 464 -559 b 436 -649 464 -619 455 -638 b 366 -665 418 -661 395 -665 l 203 -665 l 203 -518 z m 367 -776 b 435 -788 396 -776 419 -780 b 477 -858 464 -801 477 -824 b 433 -942 477 -900 462 -927 b 366 -953 418 -949 395 -953 l 203 -953 l 203 -776 z',\n },\n timeSig0: {\n x_min: 15,\n x_max: 389,\n y_min: -254,\n y_max: 255,\n ha: 509,\n o: 'm 291 367 b 22 0 138 367 22 209 b 291 -366 22 -209 138 -366 b 560 0 444 -366 560 -209 b 291 367 560 209 444 367 z m 376 -200 b 291 -308 376 -252 353 -308 b 206 -200 229 -308 206 -252 l 206 200 b 291 308 206 252 229 308 b 376 200 353 308 376 252 z',\n },\n timeSig1: {\n x_min: 15,\n x_max: 336,\n y_min: -243,\n y_max: 245,\n ha: 488,\n o: 'm 359 -284 l 359 336 b 341 353 359 346 351 353 l 199 353 b 190 350 196 353 193 351 b 184 344 189 348 186 346 l 23 65 b 22 56 22 62 22 59 b 30 42 22 50 26 45 l 58 26 b 66 23 60 24 63 23 b 81 32 72 23 78 27 l 183 207 l 183 -284 l 73 -284 b 56 -301 63 -284 56 -291 l 56 -333 b 73 -350 56 -343 63 -350 l 468 -350 b 484 -333 478 -350 484 -343 l 484 -301 b 468 -284 484 -291 478 -284 z',\n },\n timeSig2: {\n x_min: 15,\n x_max: 377,\n y_min: -243,\n y_max: 245,\n ha: 488,\n o: 'm 492 -56 b 382 -192 481 -88 452 -192 b 190 -134 288 -192 268 -134 b 153 -138 179 -134 167 -135 b 341 -36 153 -138 189 -84 b 533 173 494 12 533 86 b 288 353 533 233 505 353 b 30 156 71 353 30 222 b 138 49 30 96 79 49 b 245 156 197 49 245 96 b 179 255 245 196 216 240 b 168 271 174 256 168 264 b 202 297 168 279 176 289 b 251 304 209 300 229 304 b 311 288 271 304 294 300 b 348 180 338 271 348 245 b 65 -150 348 12 148 -24 b 22 -278 65 -150 22 -210 b 73 -350 22 -346 56 -350 b 121 -305 96 -350 121 -331 b 117 -287 121 -300 120 -294 b 105 -239 108 -266 105 -251 b 107 -226 105 -235 105 -230 b 154 -203 108 -217 120 -203 b 238 -289 196 -203 212 -252 b 350 -350 264 -327 304 -350 b 484 -264 396 -350 458 -317 b 543 -63 510 -210 543 -102 b 518 -36 543 -45 531 -36 b 492 -56 508 -36 498 -42 z',\n },\n timeSig3: {\n x_min: 14.984905204685425,\n x_max: 364,\n y_min: -244,\n y_max: 244,\n ha: 488,\n o: 'm 392 23 b 514 168 507 68 514 143 b 514 176 514 171 514 174 b 262 351 514 189 510 351 b 22 176 14 351 22 176 l 23 176 l 22 173 b 115 81 22 121 63 81 b 207 173 167 81 207 121 b 135 264 207 215 176 255 b 140 268 137 265 138 266 b 215 289 160 282 187 289 b 340 176 275 289 340 253 b 255 69 340 85 272 72 b 140 60 238 66 157 60 b 121 40 122 60 121 40 l 121 12 b 140 -6 121 12 124 -4 b 243 -14 164 -7 197 -7 b 340 -167 307 -23 340 -66 b 215 -289 340 -264 275 -289 b 121 -266 174 -289 137 -278 b 207 -174 168 -264 207 -222 b 115 -81 207 -122 167 -81 b 22 -174 63 -81 22 -122 b 22 -180 22 -174 22 -177 b 78 -298 22 -199 26 -251 b 236 -351 134 -350 204 -351 b 524 -147 374 -351 524 -304 b 389 23 524 -42 452 3 z',\n },\n timeSig4: {\n x_min: 14,\n x_max: 442,\n y_min: -248,\n y_max: 249,\n ha: 497,\n o: 'm 300 -183 l 300 -289 l 180 -289 b 160 -310 170 -289 160 -298 l 160 -337 b 180 -357 160 -348 170 -357 l 616 -357 b 636 -337 628 -357 636 -348 l 636 -310 b 616 -289 636 -298 628 -289 l 487 -289 l 487 -183 l 616 -183 b 636 -161 628 -183 636 -173 l 636 -134 b 616 -114 636 -124 628 -114 l 487 -114 l 487 115 b 477 134 487 124 482 131 l 459 143 b 452 144 456 144 455 144 b 449 144 451 144 451 144 b 436 140 445 144 439 143 l 305 20 b 300 4 301 16 300 10 l 300 -114 l 132 -114 b 464 287 132 -114 294 59 b 471 307 469 294 471 301 b 467 321 471 314 468 320 l 435 353 b 420 359 431 356 426 359 b 206 359 412 359 217 359 b 187 341 196 359 189 350 b 143 118 187 341 180 235 b 24 -124 105 1 62 -71 b 20 -140 24 -124 20 -131 b 22 -148 20 -143 20 -145 b 36 -174 26 -158 36 -174 b 52 -183 36 -174 39 -183 z',\n },\n timeSig5: {\n x_min: 15,\n x_max: 362,\n y_min: -244,\n y_max: 246,\n ha: 490,\n o: 'm 39 314 b 46 170 39 314 46 245 b 46 151 46 164 46 157 b 39 -24 45 71 39 -24 b 39 -29 39 -24 39 -26 b 49 -48 39 -35 40 -46 b 99 -59 62 -50 92 -58 b 107 -59 102 -59 104 -59 b 121 -49 112 -59 118 -58 b 235 45 128 -30 144 45 b 356 -112 337 45 356 -43 b 238 -292 356 -184 333 -288 b 226 -292 233 -292 230 -292 b 166 -282 193 -292 174 -288 b 158 -274 161 -281 158 -276 b 164 -264 158 -269 160 -266 b 222 -168 177 -255 222 -239 b 117 -71 222 -98 173 -71 b 22 -171 60 -71 22 -122 b 111 -318 22 -220 36 -275 b 252 -351 147 -338 199 -351 b 456 -275 325 -351 405 -328 b 521 -109 503 -228 521 -167 b 433 79 521 -32 487 43 b 271 124 397 104 336 124 b 131 84 223 124 173 112 b 125 82 130 82 127 82 b 115 92 120 82 115 86 l 115 183 b 131 199 115 192 122 199 l 132 199 b 252 192 154 197 202 192 b 372 209 295 192 340 196 b 474 320 439 236 462 289 b 477 334 475 324 477 330 b 451 354 477 346 469 354 b 431 351 445 354 439 353 b 252 328 360 334 305 328 b 88 343 200 328 150 334 b 71 344 88 343 81 344 b 39 320 56 344 39 340 b 39 314 39 317 39 315 z',\n },\n timeSig6: {\n x_min: 15,\n x_max: 387,\n y_min: -244,\n y_max: 245,\n ha: 489,\n o: 'm 356 69 b 216 22 268 69 236 43 b 209 98 212 52 209 75 b 216 167 209 121 212 141 b 338 287 225 220 261 287 b 410 259 374 287 396 275 b 356 174 380 246 356 207 b 448 82 356 122 396 82 b 541 174 500 82 541 122 l 541 177 b 541 179 541 177 541 177 b 533 225 541 192 539 213 b 310 353 514 276 454 353 b 58 163 180 353 86 229 b 22 -23 43 128 22 58 b 131 -285 22 -111 46 -210 b 318 -351 215 -348 268 -351 b 557 -125 369 -351 557 -292 b 356 69 557 16 446 69 z m 302 -291 b 216 -145 255 -291 216 -226 b 302 1 216 -65 255 1 b 390 -145 350 1 390 -65 b 302 -291 390 -226 350 -291 z',\n },\n timeSig7: {\n x_min: 15,\n x_max: 366,\n y_min: -250,\n y_max: 251,\n ha: 501,\n o: 'm 233 -177 b 160 -336 202 -225 160 -282 b 180 -360 160 -351 164 -360 b 264 -351 203 -360 217 -354 b 278 -350 268 -351 274 -350 b 369 -360 320 -350 359 -360 b 405 -331 382 -360 406 -344 b 405 -327 405 -330 405 -328 b 396 -226 405 -324 396 -279 b 408 -130 396 -196 399 -161 b 503 151 425 -62 471 60 b 527 308 518 196 527 275 b 526 341 527 321 527 327 b 510 361 524 356 518 361 b 484 361 503 361 491 361 b 467 341 477 361 467 356 b 406 228 467 327 464 228 b 235 351 346 228 328 351 b 86 252 145 351 91 261 l 86 321 b 71 337 86 330 79 337 l 37 337 b 22 321 29 337 22 330 l 22 55 b 37 39 22 46 29 39 l 71 39 b 86 55 79 39 86 46 l 86 101 b 158 179 86 134 108 179 b 328 124 209 179 213 124 b 425 143 357 124 410 128 b 233 -177 413 120 266 -130 z',\n },\n timeSig8: {\n x_min: 15,\n x_max: 393,\n y_min: -248,\n y_max: 246,\n ha: 494,\n o: 'm 467 26 b 547 166 514 62 547 108 b 294 354 547 269 433 354 b 40 166 154 354 40 269 b 122 13 40 108 55 56 b 22 -147 58 -24 22 -78 b 294 -357 22 -264 144 -357 b 566 -147 444 -357 566 -264 b 467 26 566 -78 541 -13 z m 294 -276 b 122 -145 202 -276 122 -226 b 197 -26 122 -49 197 -26 b 435 -187 295 -59 435 -108 b 294 -276 435 -226 384 -276 z m 386 65 b 180 209 288 96 180 144 b 294 288 180 265 232 288 b 444 180 383 288 444 246 b 386 65 444 111 412 78 z',\n },\n timeSig9: {\n x_min: 15,\n x_max: 387,\n y_min: -244,\n y_max: 245,\n ha: 489,\n o: 'm 223 -68 b 363 -20 311 -68 343 -42 b 370 -96 367 -50 370 -73 b 363 -166 370 -120 367 -140 b 240 -285 354 -219 318 -285 b 168 -258 204 -285 183 -274 b 223 -173 199 -245 223 -206 b 131 -81 223 -121 183 -81 b 37 -173 79 -81 37 -121 l 37 -176 b 37 -177 37 -176 37 -176 b 46 -223 37 -190 40 -212 b 269 -351 65 -275 125 -351 b 521 -161 399 -351 492 -228 b 557 24 536 -127 557 -56 b 448 287 557 112 533 212 b 261 353 364 350 311 353 b 22 127 210 353 22 294 b 223 -68 22 -14 132 -68 z m 276 294 b 363 147 324 294 363 228 b 276 1 363 66 324 1 b 189 147 229 1 189 66 b 276 294 189 228 229 294 z',\n },\n timeSigCommon: {\n x_min: 0,\n x_max: 463,\n y_min: -256,\n y_max: 258,\n ha: 514,\n o: 'm 468 258 b 406 147 432 235 406 193 b 408 130 406 141 406 135 b 521 17 415 71 462 24 b 537 17 526 17 533 17 b 667 147 609 17 667 75 b 667 156 667 147 667 151 b 664 177 667 161 665 171 b 350 372 651 239 595 372 b 0 17 36 372 0 111 b 382 -369 0 -154 22 -369 b 641 -131 524 -369 635 -285 b 629 -120 641 -124 636 -120 l 611 -120 b 599 -131 605 -120 599 -125 b 382 -323 593 -251 508 -323 b 196 -128 256 -323 196 -255 l 196 147 b 356 320 196 228 228 320 b 469 271 423 320 454 295 b 471 264 471 268 471 266 b 468 258 471 262 471 259 z',\n },\n timeSigCutCommon: {\n x_min: 0,\n x_max: 463,\n y_min: -376,\n y_max: 388,\n ha: 764,\n o: 'm 611 -120 b 599 -131 605 -120 599 -125 b 382 -323 593 -251 508 -323 b 369 -323 377 -323 373 -323 l 369 320 b 469 269 428 317 455 292 b 471 264 471 266 471 265 b 468 258 471 261 471 259 b 406 147 432 235 406 193 b 408 130 406 141 406 135 b 523 17 415 71 464 24 b 537 17 527 17 533 17 b 667 147 609 17 667 75 b 667 156 667 147 667 151 b 664 177 667 161 665 171 b 369 370 651 236 598 364 l 369 543 b 353 559 369 552 361 559 l 314 559 b 298 543 305 559 298 552 l 298 369 b 0 17 32 341 0 105 b 298 -364 0 -140 17 -334 l 298 -526 b 314 -541 298 -534 305 -541 l 353 -541 b 369 -526 361 -541 369 -534 l 369 -369 b 382 -369 373 -369 377 -369 b 641 -131 524 -369 635 -285 b 629 -120 641 -124 636 -120 z m 196 147 b 298 312 196 215 216 289 l 298 -310 b 196 -128 229 -285 196 -223 z',\n },\n timeSigPlus: {\n x_min: 0,\n x_max: 408,\n y_min: -204,\n y_max: 204,\n ha: 408,\n o: 'm 327 33 l 327 275 b 308 294 327 285 318 294 l 279 294 b 261 275 269 294 261 285 l 261 33 l 19 33 b 0 14 9 33 0 24 l 0 -13 b 19 -33 0 -23 9 -33 l 261 -33 l 261 -274 b 279 -294 261 -284 269 -294 l 308 -294 b 327 -274 318 -294 327 -284 l 327 -33 l 567 -33 b 588 -13 577 -33 588 -23 l 588 14 b 567 33 588 24 577 33 z',\n },\n noteheadDoubleWhole: {\n x_min: 0,\n x_max: 538,\n y_min: -178,\n y_max: 179,\n ha: 357,\n o: 'm 33 258 b 20 258 27 258 26 258 b 0 238 9 258 0 249 b 0 -236 0 226 0 -226 b 20 -256 0 -246 9 -256 b 33 -256 26 -256 27 -256 b 53 -236 43 -256 53 -245 b 53 238 53 -228 53 226 b 33 258 53 249 45 258 z m 649 258 b 636 258 644 258 642 258 b 616 238 625 258 616 249 b 616 125 616 235 616 187 b 389 196 573 167 500 196 b 160 125 276 196 203 167 b 160 238 160 187 160 235 b 140 258 160 249 151 258 b 127 258 134 258 132 258 b 107 238 115 258 107 249 b 107 -236 107 226 107 -226 b 127 -256 107 -246 115 -256 b 140 -256 132 -256 134 -256 b 160 -236 150 -256 160 -245 b 160 -122 160 -233 160 -186 b 389 -194 203 -166 276 -194 b 616 -122 500 -194 573 -166 b 616 -236 616 -186 616 -233 b 636 -256 616 -246 625 -256 b 649 -256 642 -256 644 -256 b 670 -236 660 -256 670 -245 b 670 238 670 -228 670 226 b 649 258 670 249 661 258 z m 462 -140 b 400 -148 445 -144 422 -148 b 314 -101 360 -148 333 -135 b 268 68 295 -65 269 29 b 268 76 268 71 268 73 b 314 141 268 109 282 130 b 377 150 331 145 354 150 b 462 102 416 150 442 140 b 510 -66 482 63 510 -29 b 462 -140 510 -104 497 -128 z m 755 258 b 742 258 749 258 747 258 b 721 238 730 258 721 249 b 721 -236 721 226 721 -226 b 742 -256 721 -246 730 -256 b 755 -256 747 -256 749 -256 b 775 -236 765 -256 775 -245 b 775 238 775 -228 775 226 b 755 258 775 249 766 258 z',\n },\n noteheadWhole: {\n x_min: 0,\n x_max: 373,\n y_min: -134,\n y_max: 136,\n ha: 270,\n o: 'm 269 196 b 0 1 71 196 0 95 b 269 -193 0 -92 71 -193 b 537 1 468 -193 537 -92 b 269 196 537 95 468 196 z m 343 -138 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 148 68 176 -63 150 29 b 194 141 145 107 160 130 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 389 -65 363 63 389 -29 b 343 -138 389 -102 377 -128 z',\n },\n noteheadHalf: {\n x_min: 0,\n x_max: 325,\n y_min: -133,\n y_max: 132,\n ha: 265,\n o: 'm 307 190 b 0 -60 167 190 0 73 b 161 -192 0 -122 45 -192 b 468 58 311 -192 468 -69 b 307 190 468 143 396 190 z m 268 -63 b 108 -124 264 -66 158 -124 b 50 -72 60 -124 50 -85 b 200 62 50 -12 194 59 b 360 122 206 65 308 122 b 418 71 395 122 418 102 b 268 -63 418 9 272 -60 z',\n },\n noteheadBlack: {\n x_min: 0,\n x_max: 325,\n y_min: -133,\n y_max: 132,\n ha: 265,\n o: 'm 0 -60 b 161 -192 0 -122 45 -192 b 468 58 311 -192 468 -69 b 307 190 468 143 396 190 b 0 -60 167 190 0 72 z',\n },\n noteheadXBlack: {\n x_min: 0,\n x_max: 325,\n y_min: -132,\n y_max: 132,\n ha: 264,\n o: 'm 461 138 b 468 153 465 141 468 147 l 468 154 b 462 167 468 160 465 164 l 445 184 b 431 190 441 187 436 190 b 418 186 426 190 420 189 l 235 40 l 50 186 b 37 190 48 189 42 190 b 24 184 32 190 29 187 l 6 167 b 0 153 3 164 0 158 b 7 138 0 147 3 141 l 183 0 l 7 -138 b 0 -153 3 -141 0 -147 b 6 -166 0 -157 3 -163 l 23 -184 b 37 -190 26 -189 32 -190 b 50 -186 42 -190 48 -189 l 235 -40 l 418 -186 b 431 -190 420 -189 426 -190 b 445 -184 436 -190 442 -189 l 462 -166 b 468 -153 465 -163 468 -157 b 461 -138 468 -147 465 -141 l 285 0 z',\n },\n noteheadCircleX: {\n x_min: 0,\n x_max: 325,\n y_min: -162,\n y_max: 163,\n ha: 325,\n o: 'm 265 0 l 395 105 b 426 0 415 75 426 39 b 387 -115 426 -43 412 -84 z m 233 -27 l 360 -145 b 235 -192 327 -174 282 -192 b 99 -137 183 -192 134 -171 z m 202 1 l 73 -105 b 42 0 53 -75 42 -39 b 81 115 42 43 56 84 z m 235 29 l 108 145 b 233 193 141 174 186 193 b 369 138 285 193 334 173 z m 233 235 b 0 0 104 235 0 130 b 233 -233 0 -130 104 -233 b 468 0 363 -233 468 -130 b 233 235 468 130 363 235 z',\n },\n noteheadDoubleWholeSquare: {\n x_min: 0,\n x_max: 432,\n y_min: -179,\n y_max: 177,\n ha: 356,\n o: 'm 590 255 b 570 235 579 255 570 246 l 570 203 l 53 203 l 53 235 b 33 255 53 246 45 255 l 20 255 b 0 235 9 255 0 246 l 0 -230 b 20 -251 0 -242 9 -251 l 33 -251 b 53 -230 45 -251 53 -242 l 53 -200 l 570 -200 l 570 -238 b 590 -258 570 -249 579 -258 l 603 -258 b 622 -238 615 -258 622 -249 l 622 235 b 603 255 622 246 615 255 z m 570 -101 l 53 -101 l 53 105 l 570 105 z',\n },\n noteheadSquareWhite: {\n x_min: 0,\n x_max: 310,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 395 128 l 395 -128 l 52 -128 l 52 128 z m 446 180 l 0 180 l 0 -180 l 446 -180 z',\n },\n noteheadSquareBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 446 180 l 0 180 l 0 -180 l 446 -180 z',\n },\n noteheadTriangleUpBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -136,\n y_max: 122,\n ha: 258,\n o: 'm 223 176 l 0 -196 l 446 -196 z',\n },\n noteheadSlashedDoubleWhole1: {\n x_min: -66,\n x_max: 456,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 652 298 b 638 305 649 304 644 305 b 626 301 634 305 629 304 l 560 248 b 543 256 557 253 550 256 b 530 256 537 256 536 256 b 510 236 518 256 510 248 b 510 204 510 235 510 223 l 455 161 b 281 194 413 181 356 194 b 53 124 168 194 96 166 b 53 236 53 186 53 233 b 29 256 53 253 42 256 b 20 256 26 256 23 256 b 0 236 9 256 0 248 b 0 -204 0 228 0 -98 l -88 -272 b -95 -288 -92 -276 -95 -282 b -91 -300 -95 -291 -94 -295 b -76 -307 -86 -304 -82 -307 b -65 -302 -72 -307 -68 -305 l 3 -248 b 20 -258 6 -253 12 -258 b 53 -238 33 -258 52 -255 b 53 -206 53 -236 53 -225 l 107 -161 b 281 -196 148 -183 206 -196 b 510 -124 393 -196 465 -166 b 510 -238 510 -187 510 -235 b 530 -258 510 -248 518 -258 b 563 -238 543 -258 563 -255 b 563 204 563 -229 563 98 l 649 272 b 657 288 655 276 657 282 b 652 298 657 291 655 295 z m 160 75 b 269 148 160 138 219 148 b 356 101 310 148 334 140 b 363 85 357 96 360 91 l 189 -56 b 160 66 174 -14 161 40 b 160 75 160 69 160 72 z m 53 -163 b 53 -124 53 -151 53 -138 b 76 -144 60 -131 68 -138 z m 402 -68 b 292 -148 402 -138 351 -148 b 207 -101 252 -150 226 -137 b 199 -84 204 -96 202 -91 l 373 56 b 402 -68 389 13 402 -40 z m 510 124 b 485 144 503 131 494 137 l 510 163 b 510 124 510 151 510 137 z',\n },\n noteheadSlashedWhole1: {\n x_min: -75,\n x_max: 448,\n y_min: -211,\n y_max: 214,\n ha: 425,\n o: 'm 641 301 b 625 308 636 305 631 308 b 613 304 621 307 618 307 l 439 160 b 269 196 399 181 343 196 b 0 1 71 196 0 95 b 69 -138 0 -49 20 -101 l -101 -271 b -108 -287 -105 -275 -108 -281 b -104 -298 -107 -291 -107 -294 b -88 -304 -99 -302 -94 -304 b -76 -301 -85 -304 -81 -304 l 98 -157 b 269 -193 138 -179 194 -193 b 537 1 468 -193 537 -92 b 468 141 537 52 517 104 l 638 274 b 645 289 642 278 645 284 b 641 301 644 292 644 297 z m 148 68 b 148 78 148 72 148 75 b 194 141 148 111 163 131 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 350 86 346 98 348 92 l 177 -55 b 148 68 163 -12 150 42 z m 389 -65 b 343 -138 389 -102 377 -128 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 187 -82 192 -95 190 -89 l 279 -6 l 361 58 b 389 -65 376 16 389 -39 z',\n },\n noteheadSlashedHalf1: {\n x_min: -98,\n x_max: 424,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 606 298 b 592 305 602 302 598 305 b 580 301 588 305 583 304 l 412 163 b 307 190 383 180 347 190 b 153 148 258 190 204 176 b 0 -60 58 98 0 13 b 14 -120 0 -81 4 -101 b 32 -143 20 -128 26 -135 l -134 -274 b -141 -288 -138 -276 -141 -282 b -137 -300 -141 -292 -140 -297 b -122 -307 -134 -304 -128 -307 b -111 -302 -118 -307 -114 -305 l 56 -164 b 161 -192 85 -181 121 -192 b 315 -151 210 -192 264 -179 b 468 58 410 -101 468 -16 b 454 117 468 78 464 98 b 436 141 449 125 444 134 l 603 272 b 611 287 608 275 611 281 b 606 298 611 291 609 295 z m 56 -98 b 49 -73 52 -91 49 -82 b 75 -23 49 -58 59 -39 b 199 60 99 1 147 32 b 337 118 251 89 302 111 b 359 121 344 120 351 121 b 361 121 360 121 360 121 l 225 9 l 69 -114 b 56 -98 65 -109 60 -104 z m 410 94 b 416 69 415 86 416 78 b 392 19 416 53 408 36 b 266 -65 367 -6 318 -36 b 128 -122 215 -94 163 -115 b 107 -125 121 -124 114 -125 b 104 -125 107 -125 105 -125 l 245 -9 l 396 111 b 410 94 402 107 408 101 z',\n },\n noteheadSlashedBlack1: {\n x_min: -98,\n x_max: 424,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 606 298 b 592 305 602 302 598 305 b 580 301 588 305 583 304 l 412 161 b 307 190 383 180 347 190 b 0 -60 167 190 0 72 b 32 -144 0 -89 10 -120 l -134 -274 b -141 -288 -138 -278 -141 -284 b -137 -301 -141 -292 -140 -297 b -122 -307 -134 -305 -128 -307 b -111 -304 -118 -307 -114 -307 l 56 -164 b 161 -192 82 -181 117 -192 b 468 58 311 -192 468 -71 b 436 141 468 91 456 120 l 603 271 b 611 285 608 275 611 281 b 606 298 611 289 609 294 z',\n },\n noteheadSlashedDoubleWhole2: {\n x_min: -66,\n x_max: 456,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 563 -204 b 563 236 563 -98 563 228 b 543 256 563 249 554 256 b 530 256 537 256 536 256 b 510 236 518 256 510 248 b 510 124 510 233 510 187 b 281 194 467 166 393 194 b 107 161 207 194 150 181 l 53 204 b 53 236 53 223 53 235 b 33 256 53 249 45 256 b 20 256 27 256 26 256 b 3 246 12 256 6 253 l -63 301 b -76 305 -68 304 -72 305 b -91 298 -81 305 -86 304 b -95 287 -94 295 -95 291 b -88 272 -95 281 -92 276 l 0 204 b 0 -238 0 98 0 -229 b 20 -258 0 -248 9 -258 b 33 -258 26 -258 27 -258 b 53 -238 43 -258 53 -246 b 53 -124 53 -235 53 -187 b 281 -196 96 -166 170 -196 b 456 -161 356 -196 413 -183 l 510 -206 b 510 -238 510 -225 510 -236 b 530 -258 510 -248 518 -258 b 543 -258 536 -258 537 -258 b 560 -246 549 -258 556 -252 l 626 -302 b 638 -307 631 -305 634 -307 b 654 -300 645 -307 649 -304 b 657 -288 655 -295 657 -292 b 651 -272 657 -282 655 -276 z m 207 140 b 269 148 225 144 248 148 b 356 101 310 148 336 140 b 402 -68 376 62 402 -30 b 402 -78 402 -71 402 -75 l 292 9 l 168 109 b 207 140 176 124 189 134 z m 78 144 b 53 124 69 137 60 131 b 53 163 53 137 53 150 z m 356 -141 b 294 -148 338 -145 315 -148 b 207 -101 253 -148 226 -137 b 161 66 189 -66 163 27 b 160 72 161 69 160 71 b 161 78 160 75 160 76 l 271 -9 l 395 -109 b 356 -141 387 -124 374 -134 z m 485 -144 b 510 -124 494 -138 503 -131 b 510 -163 510 -138 510 -151 z',\n },\n noteheadSlashedWhole2: {\n x_min: -75,\n x_max: 448,\n y_min: -212,\n y_max: 214,\n ha: 426,\n o: 'm 468 -138 b 537 1 517 -101 537 -49 b 269 196 537 95 468 196 b 98 160 196 196 140 181 l -76 304 b -88 308 -81 307 -84 307 b -104 301 -94 308 -99 305 b -108 289 -107 297 -107 292 b -101 274 -108 284 -105 278 l 69 141 b 0 1 20 104 0 52 b 269 -193 0 -92 71 -193 b 441 -157 343 -193 399 -179 l 613 -301 b 625 -305 618 -304 622 -305 b 641 -298 631 -305 636 -302 b 645 -287 644 -294 644 -291 b 638 -271 645 -281 642 -275 z m 194 141 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 389 -65 363 63 389 -29 b 389 -76 389 -69 389 -73 l 279 10 l 156 112 b 194 141 163 125 176 135 z m 343 -138 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 148 68 176 -63 150 29 b 148 76 148 71 148 73 b 148 81 148 78 148 79 l 258 -6 l 382 -108 b 343 -138 374 -122 361 -132 z',\n },\n noteheadSlashedHalf2: {\n x_min: -98,\n x_max: 424,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 386 -102 b 468 58 438 -55 468 4 b 454 117 468 78 464 98 b 307 190 428 164 373 190 b 153 148 258 190 204 176 b 108 120 137 140 122 130 l -111 301 b -122 305 -114 304 -118 305 b -137 298 -128 305 -134 302 b -141 287 -140 295 -141 291 b -134 272 -141 281 -138 275 l 85 101 b 0 -60 32 53 0 -7 b 14 -120 0 -81 4 -101 b 161 -192 40 -167 95 -192 b 315 -151 210 -192 264 -179 b 361 -122 333 -143 347 -132 l 580 -302 b 592 -307 583 -305 588 -307 b 606 -300 598 -307 602 -304 b 611 -288 609 -297 611 -292 b 603 -274 611 -282 608 -276 z m 199 60 b 337 118 251 89 302 111 b 359 121 344 120 351 121 b 410 94 382 121 400 112 b 416 69 415 86 416 78 b 392 19 416 53 408 36 b 308 -42 374 0 343 -20 l 245 7 l 189 55 b 199 60 192 56 196 58 z m 266 -65 b 128 -122 215 -94 163 -115 b 107 -125 121 -124 114 -125 b 56 -98 84 -125 66 -117 b 49 -73 52 -91 49 -82 b 75 -23 49 -58 59 -39 b 163 39 94 -4 125 17 l 225 -9 l 282 -56 b 266 -65 276 -59 272 -62 z',\n },\n noteheadSlashedBlack2: {\n x_min: -98.44444444444443,\n x_max: 424,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 384 -102 b 468 58 435 -58 468 0 b 307 190 468 143 396 190 b 108 121 239 190 167 163 l -111 301 b -124 305 -115 304 -120 305 b -138 298 -128 305 -134 302 b -141 289 -140 295 -141 292 b -141 287 -141 288 -143 288 b -135 272 -141 281 -140 275 l 84 101 b 0 -60 35 56 0 0 b 161 -192 0 -122 45 -192 b 361 -122 232 -192 304 -164 l 579 -302 b 590 -307 583 -305 588 -307 b 606 -300 596 -307 602 -304 b 611 -288 609 -297 611 -292 b 603 -274 609 -282 608 -276 z',\n },\n noteheadDiamondDoubleWhole: {\n x_min: 0,\n x_max: 373,\n y_min: -178,\n y_max: 179,\n ha: 357,\n o: 'm 504 258 b 484 238 494 258 484 248 l 484 46 b 282 187 415 95 285 186 b 268 192 279 190 275 192 b 255 187 262 192 258 190 l 52 45 l 52 238 b 33 258 52 248 43 258 l 20 258 b 0 238 9 258 0 248 l 0 -236 b 20 -256 0 -248 9 -256 l 33 -256 b 52 -236 43 -256 52 -248 l 52 -45 l 249 -181 b 268 -190 258 -189 264 -190 b 282 -186 274 -190 279 -189 b 484 -43 285 -184 413 -94 l 484 -236 b 504 -256 484 -248 494 -256 l 517 -256 b 537 -236 528 -256 537 -248 l 537 238 b 517 258 537 248 528 258 z m 220 -115 l 102 -33 l 317 117 l 435 35 z',\n },\n noteheadDiamondWhole: {\n x_min: 0,\n x_max: 373,\n y_min: -133,\n y_max: 132,\n ha: 265,\n o: 'm 282 -187 b 530 -13 285 -186 530 -13 b 537 0 534 -10 537 -6 b 530 13 537 4 534 10 b 282 186 530 13 287 183 b 268 190 279 189 275 190 b 255 186 262 190 258 189 l 7 12 b 0 -1 3 9 0 4 b 4 -13 0 -6 1 -10 l 249 -183 b 268 -192 258 -190 264 -192 b 282 -187 274 -192 279 -190 z m 220 -117 l 102 -35 l 317 115 l 435 33 z',\n },\n noteheadDiamondHalf: {\n x_min: 0,\n x_max: 335,\n y_min: -132,\n y_max: 133,\n ha: 265,\n o: 'm 475 -13 b 482 0 480 -10 482 -6 b 475 13 482 4 480 10 l 253 187 b 240 192 251 190 246 192 b 229 187 236 192 232 190 l 7 13 b 0 0 3 10 0 6 b 7 -13 0 -4 3 -10 l 229 -186 b 240 -190 232 -189 236 -190 b 253 -186 246 -190 251 -189 z m 284 -115 l 92 33 l 199 117 l 390 -33 z',\n },\n noteheadDiamondBlack: {\n x_min: 0,\n x_max: 335,\n y_min: -132,\n y_max: 133,\n ha: 265,\n o: 'm 475 -14 b 482 -1 480 -10 482 -6 b 475 13 482 4 480 10 l 253 187 b 240 192 251 190 246 192 b 229 187 236 192 232 190 l 7 13 b 0 0 3 10 0 4 b 7 -14 0 -6 3 -10 l 229 -186 b 240 -190 232 -189 236 -190 b 253 -186 246 -190 251 -189 z',\n },\n noteheadParenthesisRight: {\n x_min: 0,\n x_max: 75,\n y_min: -209.4142135623731,\n y_max: 212,\n ha: 421.4142135623731,\n o: 'm 10 305 b 4 302 7 304 6 304 b 0 295 1 301 0 298 b 1 289 0 294 0 292 b 68 -10 1 288 68 160 b 1 -288 68 -95 50 -192 b 0 -292 0 -289 0 -291 b 4 -300 0 -295 1 -298 b 12 -301 7 -301 9 -302 b 17 -298 14 -301 16 -300 b 108 0 22 -292 108 -174 b 17 301 108 174 22 295 b 10 305 16 304 13 305 z',\n },\n noteheadParenthesisLeft: {\n x_min: 0,\n x_max: 75,\n y_min: -212,\n y_max: 209.4142135623731,\n ha: 421.4142135623731,\n o: 'm 98 -305 b 104 -302 101 -304 102 -304 b 108 -295 107 -301 108 -298 b 107 -289 108 -294 108 -292 b 40 10 107 -288 40 -160 b 107 288 40 95 58 192 b 108 292 108 289 108 291 b 104 300 108 295 107 298 b 96 301 101 301 99 302 b 91 298 94 301 92 300 b 0 0 86 292 0 174 b 91 -301 0 -174 86 -295 b 98 -305 92 -304 95 -305 z',\n },\n noteheadMoonBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 0 180 l 0 0 b 223 -180 0 -99 99 -180 b 446 0 347 -180 446 -99 l 446 180 z',\n },\n noteheadTriangleLeftBlack: {\n x_min: 0,\n x_max: 339,\n y_min: -136,\n y_max: 122,\n ha: 258,\n o: 'm 0 176 l 0 -196 l 488 -196 z',\n },\n noteheadTriangleRightBlack: {\n x_min: 0,\n x_max: 339,\n y_min: -136,\n y_max: 122,\n ha: 258,\n o: 'm 488 176 l 0 -196 l 488 -196 z',\n },\n noteheadTriangleRoundDownBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -136,\n y_max: 122,\n ha: 258,\n o: 'm 226 -196 l 446 63 b 226 176 446 63 384 176 b 0 63 68 176 0 63 z',\n },\n augmentationDot: {\n x_min: 0,\n x_max: 100,\n y_min: -50,\n y_max: 50,\n ha: 100,\n o: 'm 0 0 b 72 -72 0 -40 32 -72 b 144 0 112 -72 144 -40 b 72 72 144 40 112 72 b 0 0 32 72 0 40 z',\n },\n tremolo1: {\n x_min: 0,\n x_max: 290,\n y_min: -93,\n y_max: 96,\n ha: 189,\n o: 'm 0 48 l 0 -134 l 418 -43 l 418 138 z',\n },\n flag8thUp: {\n x_min: 0,\n x_max: 289.04376776750354,\n y_min: -817,\n y_max: 12,\n ha: 829,\n o: 'm 0 -327 b 12 -343 0 -331 1 -338 b 291 -600 73 -363 197 -441 b 359 -827 317 -645 359 -707 b 294 -1140 359 -930 331 -1037 b 289 -1162 291 -1149 288 -1156 b 297 -1175 289 -1168 291 -1172 b 304 -1176 300 -1176 302 -1176 b 327 -1161 314 -1176 321 -1171 b 416 -798 395 -1041 418 -888 b 416 -780 416 -791 416 -786 b 302 -458 409 -595 302 -458 b 131 -220 307 -458 170 -281 b 50 -50 78 -138 53 -56 b 36 6 49 -46 36 6 b 19 17 35 12 27 17 b 0 -1 9 17 0 9 z',\n },\n flag8thDown: {\n x_min: 0,\n x_max: 309,\n y_min: -12,\n y_max: 817,\n ha: 829,\n o: 'm 0 1 b 19 -17 0 -9 9 -17 b 36 -6 26 -17 35 -12 b 50 50 36 -4 49 46 b 117 196 52 56 65 111 b 331 458 173 289 259 357 b 445 780 402 559 445 654 b 338 1161 445 912 415 1021 b 317 1176 334 1171 325 1176 b 310 1175 314 1176 311 1176 b 300 1158 302 1172 300 1166 b 304 1140 300 1153 301 1146 b 384 827 361 1007 384 930 b 317 600 384 707 343 645 b 12 343 223 441 72 363 b 0 327 1 338 0 331 z',\n },\n flag16thUp: {\n x_min: 0,\n x_max: 279,\n y_min: -820,\n y_max: 12,\n ha: 832,\n o: 'm 301 -681 b 148 -514 262 -631 219 -585 b 56 -372 92 -458 66 -409 b 52 -343 55 -364 53 -354 b 271 -510 125 -343 219 -442 b 340 -696 327 -583 340 -641 b 337 -739 340 -710 338 -724 b 301 -681 325 -716 312 -697 z m 0 -549 b 22 -563 0 -553 12 -559 b 258 -776 59 -576 171 -648 b 318 -950 307 -850 318 -901 b 317 -975 318 -959 318 -966 b 285 -1140 317 -1009 307 -1083 b 279 -1164 284 -1148 279 -1156 b 289 -1179 279 -1169 282 -1175 b 297 -1181 292 -1181 294 -1181 b 318 -1161 307 -1181 312 -1169 b 382 -962 344 -1120 382 -1043 b 374 -855 382 -920 379 -886 b 402 -678 389 -802 402 -749 b 333 -471 402 -603 382 -536 b 137 -228 265 -382 192 -307 b 42 0 82 -148 42 0 b 22 17 39 10 37 17 b 0 0 4 17 0 10 z',\n },\n flag16thDown: {\n x_min: 0,\n x_max: 309,\n y_min: -26,\n y_max: 803,\n ha: 829,\n o: 'm 53 346 b 56 363 55 353 56 359 b 163 517 66 399 78 452 b 384 732 246 582 346 662 b 317 503 382 621 354 552 b 53 346 229 395 122 364 z m 0 -14 b 22 -37 0 -26 10 -37 b 43 -14 33 -37 40 -26 b 167 232 65 134 109 177 b 445 683 243 305 445 416 b 432 837 445 730 441 783 b 441 919 438 855 441 881 b 327 1149 441 1032 374 1112 b 304 1156 321 1153 312 1156 b 287 1152 298 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1135 b 382 930 344 1076 382 1027 b 374 876 382 912 380 893 l 373 871 b 373 871 373 871 373 871 b 327 789 366 842 350 815 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z',\n },\n flag32ndUp: {\n x_min: 0,\n x_max: 279,\n y_min: -821,\n y_max: 186,\n ha: 1007,\n o: 'm 301 -683 b 148 -516 262 -632 219 -588 b 56 -373 92 -459 66 -410 b 50 -343 55 -366 53 -354 b 271 -500 125 -343 219 -432 b 340 -687 327 -575 340 -632 b 337 -739 340 -704 338 -721 b 301 -683 325 -716 312 -698 z m 271 -259 b 340 -446 327 -333 340 -392 b 338 -469 340 -455 338 -462 b 333 -461 337 -467 334 -464 b 91 -192 265 -372 145 -271 b 50 -92 69 -160 58 -124 b 271 -259 124 -92 219 -192 z m 0 -550 b 22 -564 0 -554 12 -560 b 258 -778 59 -577 171 -649 b 318 -952 307 -851 318 -903 b 317 -976 318 -960 318 -968 b 285 -1142 317 -1011 307 -1084 b 279 -1165 284 -1149 279 -1158 b 289 -1181 279 -1171 282 -1176 b 297 -1182 292 -1182 294 -1182 b 318 -1162 307 -1182 312 -1171 b 382 -963 344 -1122 382 -1044 b 374 -857 382 -922 379 -887 b 402 -668 389 -802 402 -740 b 386 -563 402 -632 396 -596 b 402 -441 395 -526 402 -487 b 402 -428 402 -436 402 -432 b 333 -220 402 -353 382 -285 b 137 23 265 -131 192 -56 b 42 251 82 102 42 251 b 22 268 39 261 37 268 b 0 251 4 268 0 261 z',\n },\n flag32ndDown: {\n x_min: 0,\n x_max: 309,\n y_min: -216,\n y_max: 803,\n ha: 1019,\n o: 'm 50 73 b 91 171 58 105 71 141 b 347 402 145 251 272 317 b 384 454 361 418 374 435 b 324 239 384 347 361 287 b 50 73 235 130 122 94 z m 163 517 b 366 693 248 589 327 642 b 382 716 372 700 377 708 b 383 693 383 708 383 700 b 314 505 383 621 359 562 b 53 343 258 436 179 390 b 56 363 55 351 56 359 b 163 517 66 400 81 449 z m 0 -288 b 22 -311 0 -298 10 -311 b 43 -288 33 -311 40 -300 b 167 -40 65 -138 109 -95 b 445 409 243 32 445 143 b 431 577 445 462 439 520 b 441 651 435 602 439 626 b 441 675 441 658 441 667 b 441 687 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 305 1156 321 1153 314 1156 b 287 1152 300 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1136 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z',\n },\n flag64thUp: {\n x_min: 0,\n x_max: 279,\n y_min: -822,\n y_max: 373,\n ha: 1195,\n o: 'm 333 -461 b 91 -192 265 -372 145 -271 b 50 -92 69 -161 58 -125 b 271 -251 125 -92 219 -183 b 340 -438 327 -324 340 -383 b 338 -469 340 -448 338 -459 b 333 -461 337 -467 334 -464 z m 301 -683 b 148 -517 262 -632 219 -588 b 56 -374 92 -461 66 -410 b 50 -343 55 -366 53 -356 b 271 -501 125 -343 219 -433 b 340 -688 327 -575 340 -634 b 337 -739 340 -706 338 -721 b 301 -683 325 -717 312 -698 z m 271 10 b 340 -176 327 -63 340 -121 b 337 -217 340 -190 338 -204 b 333 -212 336 -216 334 -213 b 91 65 265 -122 145 -16 b 48 177 66 101 53 143 l 50 177 b 271 10 124 177 217 78 z m 0 -552 b 22 -564 0 -554 12 -562 b 258 -778 59 -579 171 -649 b 318 -952 307 -851 317 -903 b 317 -976 318 -960 318 -968 b 285 -1142 317 -1012 307 -1084 b 279 -1165 284 -1149 279 -1158 b 289 -1181 279 -1172 282 -1178 b 297 -1184 292 -1182 295 -1184 b 318 -1164 307 -1182 312 -1172 b 382 -963 344 -1122 382 -1044 b 374 -857 382 -923 379 -887 b 402 -668 389 -804 402 -740 b 386 -563 402 -632 396 -596 b 402 -432 395 -523 402 -480 b 402 -418 402 -428 402 -423 b 383 -304 402 -379 396 -341 b 402 -170 393 -264 402 -222 b 402 -158 402 -166 402 -163 b 333 49 402 -84 382 -16 b 137 292 265 138 192 213 b 42 520 82 372 42 520 b 22 537 39 530 37 537 b 0 520 4 537 0 530 z',\n },\n flag64thDown: {\n x_min: 0,\n x_max: 309,\n y_min: -403,\n y_max: 804,\n ha: 1207,\n o: 'm 52 -196 b 91 -102 59 -166 71 -131 b 347 128 145 -23 272 45 b 384 180 361 145 374 163 b 324 -30 384 76 361 16 b 52 -196 235 -140 124 -176 z m 163 517 b 366 693 248 589 327 644 b 382 717 372 701 377 708 b 383 693 383 708 383 701 b 314 505 383 621 359 562 b 53 343 258 438 179 390 b 56 363 55 351 56 359 b 163 517 66 400 81 449 z m 314 232 b 50 69 258 163 179 117 b 91 171 56 102 69 140 b 347 402 145 251 272 318 b 382 449 360 416 372 432 b 383 420 383 439 383 429 b 314 232 383 348 359 288 z m 0 -557 b 22 -580 0 -567 10 -580 b 43 -557 33 -580 40 -567 b 167 -310 65 -408 109 -364 b 445 140 243 -238 445 -125 b 431 307 445 192 439 249 b 441 377 436 331 439 354 b 441 406 441 387 441 397 b 441 418 441 410 441 413 b 423 546 441 464 432 507 b 441 651 432 582 438 618 b 441 675 441 660 441 667 b 441 688 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 305 1158 321 1153 314 1156 b 287 1152 300 1158 292 1156 b 279 1145 281 1151 279 1148 b 294 1129 279 1140 288 1136 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 563 z',\n },\n flag128thUp: {\n x_min: 0,\n x_max: 279,\n y_min: -821,\n y_max: 573,\n ha: 1394,\n o: 'm 0 -550 b 22 -563 0 -553 12 -560 b 258 -776 59 -576 171 -648 b 318 -950 307 -850 318 -901 b 317 -975 318 -959 318 -966 b 285 -1140 317 -1011 307 -1083 b 279 -1164 284 -1148 279 -1156 b 289 -1179 279 -1171 282 -1176 b 297 -1182 292 -1181 294 -1181 b 318 -1162 307 -1182 312 -1169 b 382 -962 344 -1120 382 -1043 b 374 -857 382 -922 379 -887 b 402 -668 389 -802 402 -740 b 383 -554 402 -629 396 -590 b 402 -399 396 -503 402 -452 b 382 -284 402 -359 396 -321 b 402 -125 396 -230 402 -180 b 383 -14 402 -86 396 -49 b 402 130 396 35 402 81 b 333 348 402 204 382 284 b 137 592 265 438 192 513 b 42 808 82 671 46 793 b 22 825 39 818 37 825 b 0 808 4 825 0 818 z m 271 310 b 340 111 328 235 340 170 b 338 73 340 98 338 86 b 333 81 336 76 334 79 b 91 357 265 170 145 276 b 48 469 66 393 53 435 l 50 469 b 271 310 124 469 217 377 z m 301 -681 b 148 -523 262 -631 219 -593 b 56 -383 92 -465 66 -420 b 49 -343 55 -374 52 -359 l 50 -343 b 271 -500 124 -343 217 -432 b 340 -688 327 -575 340 -634 b 337 -737 340 -706 338 -721 b 301 -681 325 -716 312 -697 z m 333 -461 b 91 -192 265 -372 145 -271 b 48 -73 66 -154 53 -111 l 48 -73 l 50 -73 b 271 -232 124 -73 217 -163 b 340 -419 327 -305 340 -364 b 337 -468 340 -435 338 -452 b 333 -461 336 -465 334 -464 z m 333 -192 b 91 84 265 -102 145 4 b 48 200 65 121 53 164 l 48 200 l 50 200 b 271 42 124 200 217 109 b 340 -147 327 -32 340 -92 b 337 -197 340 -164 338 -181 b 333 -192 336 -196 334 -194 z',\n },\n flag128thDown: {\n x_min: 0,\n x_max: 309,\n y_min: -591,\n y_max: 803,\n ha: 1394,\n o: 'm 0 -828 b 22 -851 0 -838 10 -851 b 43 -828 33 -851 40 -840 b 167 -580 65 -678 109 -635 b 445 -131 243 -508 445 -397 b 431 36 445 -79 439 -22 b 441 108 436 60 439 85 b 441 137 441 117 441 127 b 441 147 441 140 441 144 b 423 275 441 193 432 236 b 441 377 433 310 438 344 b 441 406 441 387 441 396 b 441 418 441 410 441 413 b 423 546 441 464 432 507 b 441 649 432 582 438 616 b 441 675 441 658 441 667 b 441 687 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 304 1156 321 1153 312 1156 b 287 1152 298 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1135 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z m 314 -37 b 50 -200 258 -107 179 -153 b 91 -102 58 -168 71 -132 b 347 128 145 -23 272 45 b 382 176 360 143 372 160 b 383 151 383 167 383 160 b 314 -37 383 79 359 19 z m 314 232 b 50 69 258 163 179 117 b 91 171 56 101 69 138 b 347 402 145 251 272 317 b 382 449 360 416 372 432 b 383 420 383 439 383 429 b 314 232 383 347 359 288 z m 163 517 b 366 693 248 589 327 642 b 382 716 372 700 377 708 b 383 693 383 708 383 700 b 314 505 382 621 359 560 b 53 343 258 436 179 390 b 56 363 55 350 56 357 b 163 517 66 399 81 449 z m 52 -467 b 91 -372 59 -435 71 -402 b 347 -141 145 -292 272 -225 b 384 -89 361 -125 374 -108 b 324 -301 382 -194 361 -255 b 52 -467 235 -410 122 -446 z',\n },\n accidentalFlat: {\n x_min: 0,\n x_max: 203,\n y_min: -176,\n y_max: 453,\n ha: 629,\n o: 'm 289 114 b 173 223 281 170 246 223 b 52 170 101 223 59 179 l 58 632 b 37 652 58 644 49 652 l 20 652 b 0 632 9 652 0 644 l 7 -233 b 27 -253 7 -245 16 -253 b 39 -251 30 -253 36 -252 b 216 -114 45 -248 138 -202 b 292 78 271 -52 292 19 b 289 114 292 91 291 102 z m 190 58 b 148 -85 190 36 184 -30 b 48 -183 124 -122 75 -161 l 52 98 b 134 153 55 111 76 153 b 190 73 186 153 190 104 b 190 58 190 66 190 62 z',\n },\n accidentalNatural: {\n x_min: 0,\n x_max: 171,\n y_min: -323,\n y_max: 325,\n ha: 648,\n o: 'm 239 264 b 228 268 236 266 232 268 b 222 266 226 268 223 266 l 40 216 l 40 468 l 0 468 l 0 -245 b 20 -264 0 -256 9 -264 b 26 -264 22 -264 24 -264 l 207 -213 l 207 -465 l 246 -465 b 246 248 246 -226 246 1 b 239 264 246 253 243 261 z m 40 -140 l 40 96 l 207 144 l 207 -94 z',\n },\n accidentalSharp: {\n x_min: 0,\n x_max: 244,\n y_min: -333,\n y_max: 334,\n ha: 667,\n o: 'm 336 151 b 351 171 344 153 351 163 l 351 256 b 331 276 351 268 343 276 b 328 276 330 276 330 276 l 281 266 l 281 481 l 240 481 l 240 258 l 112 232 l 112 435 l 72 435 l 72 223 l 16 212 b 0 192 7 210 0 200 l 0 189 l 0 105 l 0 108 b 20 88 0 96 9 88 b 24 88 22 88 23 88 l 72 98 l 72 -140 l 16 -151 b 0 -171 7 -153 0 -163 l 0 -255 b 20 -275 0 -266 9 -275 b 24 -275 22 -275 23 -275 l 72 -265 l 72 -480 l 112 -480 l 112 -256 l 240 -230 l 240 -433 l 281 -433 l 281 -222 l 336 -212 b 351 -192 344 -210 351 -200 l 351 -107 b 331 -86 351 -95 343 -86 b 328 -86 330 -86 330 -86 l 281 -96 l 281 141 z m 112 107 l 240 132 l 240 -105 l 112 -132 z',\n },\n accidentalDoubleSharp: {\n x_min: 0,\n x_max: 275,\n y_min: -137,\n y_max: 138,\n ha: 275,\n o: 'm 360 73 l 376 73 b 396 94 387 73 396 82 l 396 179 b 376 199 396 190 387 199 l 291 199 b 271 179 279 199 271 190 l 271 161 l 271 102 l 200 30 l 196 30 l 124 102 l 124 179 b 105 199 124 190 117 199 l 20 199 b 0 179 9 199 0 190 l 0 94 b 20 73 0 82 9 73 l 35 73 l 36 73 l 96 73 l 167 3 l 167 -1 l 96 -73 l 36 -73 l 35 -73 l 20 -73 b 0 -92 9 -73 0 -81 l 0 -177 b 20 -197 0 -189 9 -197 l 105 -197 b 124 -177 117 -197 124 -189 l 124 -101 l 196 -32 l 200 -32 l 271 -101 l 271 -161 l 271 -163 l 271 -177 b 291 -197 271 -189 279 -197 l 376 -197 b 396 -177 387 -197 396 -189 l 396 -92 b 376 -73 396 -81 387 -73 l 361 -73 l 360 -73 l 300 -73 l 228 -1 l 228 1 l 300 73 z',\n },\n accidentalDoubleFlat: {\n x_min: 0,\n x_max: 371,\n y_min: -176,\n y_max: 453,\n ha: 629,\n o: 'm 531 115 b 415 223 523 171 488 223 b 294 171 343 223 301 180 l 300 632 b 279 652 300 644 291 652 l 262 652 b 242 632 251 652 242 644 l 246 199 b 173 223 228 213 204 223 b 52 170 101 223 59 179 l 58 632 b 37 652 58 644 49 652 l 20 652 b 0 632 9 652 0 644 l 7 -233 b 27 -253 7 -245 16 -253 b 39 -249 30 -253 36 -251 b 216 -114 45 -246 138 -202 b 248 -69 226 -102 239 -82 l 249 -233 b 269 -253 249 -245 258 -253 b 281 -249 272 -253 278 -251 b 458 -112 287 -246 380 -200 b 534 79 513 -50 534 20 b 531 115 534 92 533 104 z m 190 58 b 148 -85 190 36 184 -30 b 48 -183 124 -122 75 -161 l 52 98 b 134 153 55 111 76 153 b 190 73 186 153 190 104 b 190 58 190 66 190 62 z m 432 58 b 390 -85 432 36 426 -30 b 289 -183 366 -122 317 -161 l 294 98 b 376 153 297 111 318 153 b 432 73 428 153 432 104 b 432 58 432 66 432 62 z',\n },\n accidentalParensLeft: {\n x_min: 0,\n x_max: 75,\n y_min: -212,\n y_max: 209.4142135623731,\n ha: 421.4142135623731,\n o: 'm 98 -305 b 104 -302 101 -304 102 -304 b 108 -295 107 -301 108 -298 b 107 -289 108 -294 108 -292 b 40 10 107 -288 40 -160 b 107 288 40 95 58 192 b 108 292 108 289 108 291 b 104 300 108 295 107 298 b 96 301 101 301 99 302 b 91 298 94 301 92 300 b 0 0 86 292 0 174 b 91 -301 0 -174 86 -295 b 98 -305 92 -304 95 -305 z',\n },\n accidentalParensRight: {\n x_min: 0,\n x_max: 75,\n y_min: -209.4142135623731,\n y_max: 212,\n ha: 421.4142135623731,\n o: 'm 10 305 b 4 302 7 304 6 304 b 0 295 1 301 0 298 b 1 289 0 294 0 292 b 68 -10 1 288 68 160 b 1 -288 68 -95 50 -192 b 0 -292 0 -289 0 -291 b 4 -300 0 -295 1 -298 b 12 -301 7 -301 9 -302 b 17 -298 14 -301 16 -300 b 108 0 22 -292 108 -174 b 17 301 108 174 22 295 b 10 305 16 304 13 305 z',\n },\n accidentalQuarterToneFlatStein: {\n x_min: 0,\n x_max: 193,\n y_min: -176,\n y_max: 452,\n ha: 628,\n o: 'm 0 84 b 107 -145 0 -26 65 -105 b 245 -249 166 -202 245 -249 b 253 -253 248 -251 249 -253 b 272 -235 264 -253 272 -245 l 278 632 b 259 651 278 642 269 651 l 248 651 b 229 632 238 651 229 642 l 232 174 b 125 217 223 186 192 217 b 0 84 53 217 0 173 z m 148 154 b 232 102 212 154 232 115 b 233 107 232 99 233 102 l 235 -179 b 134 -72 207 -156 160 -111 b 92 58 98 -17 92 36 b 92 75 92 62 92 68 b 148 154 92 105 96 154 z',\n },\n accidentalThreeQuarterTonesFlatZimmermann: {\n x_min: 0,\n x_max: 422,\n y_min: -176,\n y_max: 452,\n ha: 628,\n o: 'm 608 84 b 482 217 608 173 554 217 b 376 174 416 217 384 186 l 379 632 b 360 651 379 642 370 651 l 348 651 b 330 632 338 651 330 642 l 336 -235 b 354 -253 336 -245 344 -253 b 363 -249 359 -253 360 -251 b 501 -145 363 -249 442 -202 b 608 84 543 -105 608 -26 z m 459 154 b 516 75 511 154 516 105 b 516 58 516 68 516 62 b 474 -72 516 36 510 -17 b 373 -179 448 -111 400 -156 l 374 107 b 376 102 374 102 376 99 b 459 154 376 115 396 154 z m 0 84 b 107 -145 0 -26 65 -105 b 245 -249 166 -202 245 -249 b 253 -253 248 -251 249 -253 b 272 -235 264 -253 272 -245 l 278 632 b 259 651 278 642 269 651 l 248 651 b 229 632 238 651 229 642 l 232 174 b 125 217 223 186 192 217 b 0 84 53 217 0 173 z m 148 154 b 232 102 212 154 232 115 b 233 107 232 99 233 102 l 235 -179 b 134 -72 207 -156 160 -111 b 92 58 98 -17 92 36 b 92 75 92 62 92 68 b 148 154 92 105 96 154 z',\n },\n accidentalQuarterToneSharpStein: {\n x_min: 0,\n x_max: 180,\n y_min: -316,\n y_max: 320,\n ha: 636,\n o: 'm 243 144 b 259 164 252 145 259 156 l 259 249 b 239 269 259 261 251 269 b 235 268 238 269 236 268 l 150 251 l 150 461 l 109 461 l 109 242 l 16 222 b 0 203 7 220 0 212 l 0 120 b 20 99 0 108 9 99 b 24 99 22 99 23 99 l 109 117 l 109 -121 l 16 -141 b 0 -160 7 -143 0 -151 l 0 -243 b 20 -264 0 -255 9 -264 b 24 -264 22 -264 23 -264 l 109 -246 l 109 -455 l 150 -455 l 150 -238 l 243 -219 b 259 -199 252 -217 259 -207 l 259 -114 b 239 -95 259 -102 251 -95 b 235 -95 238 -95 236 -95 l 150 -112 l 150 125 z',\n },\n accidentalThreeQuarterTonesSharpStein: {\n x_min: 0,\n x_max: 290,\n y_min: -328,\n y_max: 339,\n ha: 667,\n o: 'm 400 158 b 416 179 409 160 416 170 l 416 264 b 397 284 416 275 409 284 b 393 284 396 284 395 284 l 348 274 l 348 488 l 308 488 l 308 265 l 223 248 l 223 465 l 184 465 l 184 240 l 108 225 l 108 442 l 69 442 l 69 216 l 16 204 b 0 186 7 203 0 194 l 0 102 b 20 82 0 91 9 82 b 24 82 22 82 23 82 l 69 92 l 69 -147 l 16 -158 b 0 -177 7 -160 0 -168 l 0 -261 b 20 -281 0 -272 9 -281 b 24 -281 22 -281 23 -281 l 69 -272 l 69 -472 l 108 -472 l 108 -264 l 184 -248 l 184 -451 l 223 -451 l 223 -240 l 308 -223 l 308 -426 l 348 -426 l 348 -215 l 400 -204 b 418 -184 409 -203 418 -193 l 418 -99 b 397 -79 418 -88 409 -79 b 393 -79 396 -79 395 -79 l 348 -89 l 348 148 z m 184 -122 l 108 -138 l 108 99 l 184 115 z m 223 122 l 308 140 l 308 -98 l 223 -115 z',\n },\n accidentalBuyukMucennebFlat: {\n x_min: 0,\n x_max: 277,\n y_min: -176,\n y_max: 454,\n ha: 630,\n o: 'm 396 115 b 279 225 387 173 354 225 b 158 171 204 225 164 179 l 160 317 l 336 419 l 336 482 l 161 380 l 161 488 l 336 590 l 336 654 l 163 552 l 164 634 b 144 654 164 645 156 654 l 127 654 b 107 634 115 654 107 645 l 108 520 l 0 456 l 0 393 l 108 456 l 109 350 l 0 285 l 0 222 l 109 287 l 114 -235 b 134 -253 114 -246 122 -253 b 145 -251 138 -253 141 -252 b 323 -114 145 -251 242 -204 b 399 79 377 -52 399 20 b 396 115 399 92 397 104 z m 297 58 b 255 -85 297 36 291 -30 b 154 -184 230 -122 181 -163 l 158 96 b 240 153 161 109 181 153 b 297 73 292 153 297 104 b 297 58 297 66 297 62 z',\n },\n accidentalBakiyeFlat: {\n x_min: 0,\n x_max: 277,\n y_min: -176,\n y_max: 454,\n ha: 630,\n o: 'm 396 115 b 279 225 387 173 354 225 b 158 171 204 225 164 179 l 161 348 l 336 452 l 336 516 l 161 413 l 164 634 b 144 654 164 645 156 654 l 127 654 b 107 634 115 654 107 645 l 109 382 l 0 318 l 0 255 l 109 318 l 114 -235 b 134 -253 114 -246 122 -253 b 145 -251 138 -253 143 -252 b 323 -114 145 -251 242 -204 b 399 79 377 -52 399 20 b 396 115 399 92 397 104 z m 297 58 b 255 -85 297 36 291 -30 b 156 -184 230 -122 183 -163 l 158 96 b 240 153 161 109 181 153 b 297 73 292 153 297 104 b 297 58 297 66 297 62 z',\n },\n accidentalKucukMucennebSharp: {\n x_min: 0,\n x_max: 348,\n y_min: -316,\n y_max: 318,\n ha: 634,\n o: 'm 494 121 b 482 125 491 124 487 125 b 478 124 481 125 480 124 l 269 68 l 269 127 l 412 164 b 425 181 420 167 425 173 l 425 266 b 418 282 425 272 422 279 b 406 285 415 285 410 285 b 402 285 405 285 403 285 l 269 249 l 269 458 l 232 458 l 232 239 l 89 200 b 76 181 81 197 76 190 l 76 98 b 84 84 76 92 79 86 b 95 79 86 81 91 79 b 99 81 96 79 98 81 l 232 115 l 232 58 l 14 -3 b 0 -20 6 -6 0 -12 l 0 -104 b 7 -118 0 -109 3 -115 b 19 -122 10 -121 14 -122 b 23 -122 20 -122 22 -122 l 232 -66 l 232 -124 l 89 -163 b 76 -180 81 -166 76 -171 l 76 -264 b 84 -279 76 -269 79 -276 b 95 -282 86 -282 91 -282 b 99 -282 96 -282 98 -282 l 232 -246 l 232 -455 l 269 -455 l 269 -236 l 412 -199 b 425 -180 420 -196 425 -189 l 425 -95 b 418 -81 425 -89 422 -84 b 406 -76 415 -78 410 -76 b 402 -78 405 -76 403 -78 l 269 -114 l 269 -55 l 487 4 b 501 22 495 7 501 13 l 501 107 b 494 121 501 112 498 118 z',\n },\n articAccentAbove: {\n x_min: 0,\n x_max: 361,\n y_min: 0,\n y_max: 235,\n ha: 235,\n o: 'm 26 337 b 20 338 24 337 22 338 b 0 318 9 338 0 330 l 0 285 b 14 266 0 276 7 269 l 323 170 l 14 72 b 0 53 7 69 0 62 l 0 20 b 20 0 0 9 9 0 b 26 1 22 0 24 1 l 505 150 b 520 170 513 153 520 161 b 505 189 520 179 513 186 z',\n },\n articAccentBelow: {\n x_min: 0,\n x_max: 361,\n y_min: -235,\n y_max: 0,\n ha: 235,\n o: 'm 26 -1 b 20 0 24 -1 22 0 b 0 -20 9 0 0 -9 l 0 -53 b 14 -72 0 -62 7 -69 l 323 -168 l 14 -266 b 0 -285 7 -269 0 -276 l 0 -318 b 20 -338 0 -330 9 -338 b 26 -337 22 -338 24 -337 l 505 -189 b 520 -168 513 -186 520 -177 b 505 -150 520 -160 513 -153 z',\n },\n articTenutoAbove: {\n x_min: 0,\n x_max: 316,\n y_min: 0,\n y_max: 46,\n ha: 46,\n o: 'm 20 66 b 0 46 9 66 0 58 l 0 20 b 20 0 0 9 9 0 l 435 0 b 455 20 446 0 455 9 l 455 46 b 435 66 455 58 446 66 z',\n },\n articTenutoBelow: {\n x_min: 0,\n x_max: 316,\n y_min: -46,\n y_max: 0,\n ha: 46,\n o: 'm 20 0 b 0 -20 9 0 0 -9 l 0 -46 b 20 -66 0 -58 9 -66 l 435 -66 b 455 -46 446 -66 455 -58 l 455 -20 b 435 0 455 -9 446 0 z',\n },\n articStaccatoAbove: {\n x_min: -0.25,\n x_max: 78.25,\n y_min: -0.25,\n y_max: 78,\n ha: 78.25,\n o: 'm 16 16 b 96 16 39 -6 73 -6 b 96 95 118 39 118 73 b 16 95 73 118 39 118 b 16 16 -6 73 -6 39 z',\n },\n articStaccatoBelow: {\n x_min: -0.25,\n x_max: 78.25,\n y_min: -78.25,\n y_max: 0,\n ha: 78.25,\n o: 'm 16 -96 b 96 -96 39 -118 73 -118 b 96 -17 118 -73 118 -39 b 16 -17 73 6 39 6 b 16 -96 -6 -39 -6 -73 z',\n },\n articStaccatissimoAbove: {\n x_min: 0,\n x_max: 127,\n y_min: 0,\n y_max: 248,\n ha: 248,\n o: 'm 163 357 b 150 353 154 357 150 353 l 99 300 b 92 295 96 297 95 295 b 85 300 89 295 88 297 l 35 353 b 22 357 35 353 30 357 b 0 338 13 357 0 351 b 73 22 0 323 73 22 b 92 0 75 16 78 0 b 111 22 107 0 109 16 b 183 338 111 22 183 323 b 163 357 183 351 171 357 z',\n },\n articStaccatissimoBelow: {\n x_min: 0,\n x_max: 127,\n y_min: -248,\n y_max: 0,\n ha: 248,\n o: 'm 20 -357 b 33 -353 29 -357 33 -353 l 84 -300 b 91 -295 86 -297 88 -295 b 98 -300 94 -295 95 -297 l 148 -353 b 161 -357 148 -353 153 -357 b 183 -338 170 -357 183 -351 b 109 -22 183 -323 109 -22 b 91 0 108 -16 105 0 b 72 -22 76 0 73 -16 b 0 -338 72 -22 0 -323 b 20 -357 0 -351 12 -357 z',\n },\n articMarcatoAbove: {\n x_min: 1,\n x_max: 296,\n y_min: 0,\n y_max: 253,\n ha: 253,\n o: 'm 36 10 l 173 239 l 298 10 b 317 0 301 4 310 0 l 408 0 b 426 20 419 0 426 9 b 425 30 426 23 426 27 l 230 356 b 213 364 226 361 222 363 b 196 356 207 364 199 361 l 1 30 z',\n },\n articMarcatoBelow: {\n x_min: 0,\n x_max: 295,\n y_min: -253,\n y_max: 0,\n ha: 253,\n o: 'm 390 -10 l 253 -239 l 128 -10 b 109 0 125 -4 117 0 l 19 0 b 0 -20 7 0 0 -9 b 1 -30 0 -23 0 -27 l 196 -356 b 213 -364 200 -361 204 -363 b 230 -356 219 -364 228 -361 l 425 -30 z',\n },\n fermataAbove: {\n x_min: 0,\n x_max: 622,\n y_min: 0,\n y_max: 368,\n ha: 368,\n o: 'm 778 374 b 448 530 642 521 523 530 b 120 374 373 530 255 521 b 0 65 49 297 0 143 b 20 19 0 37 6 19 b 161 265 60 19 40 143 b 445 373 268 372 410 373 b 448 373 446 373 446 373 b 451 373 449 373 449 373 b 734 265 485 373 628 372 b 876 19 855 143 835 19 b 896 65 890 19 896 36 b 778 374 896 143 848 298 z m 348 99 b 448 0 348 45 393 0 b 547 99 503 0 547 45 b 448 199 547 154 503 199 b 348 99 393 199 348 154 z',\n },\n fermataBelow: {\n x_min: 0,\n x_max: 622,\n y_min: -368,\n y_max: 0,\n ha: 368,\n o: 'm 778 -374 b 896 -65 848 -298 896 -143 b 876 -19 896 -36 890 -19 b 734 -265 835 -19 855 -143 b 451 -373 628 -372 485 -373 b 448 -373 449 -373 449 -373 b 445 -373 446 -373 446 -373 b 161 -265 410 -373 268 -372 b 20 -19 40 -143 60 -19 b 0 -65 6 -19 0 -37 b 120 -374 0 -143 49 -297 b 448 -530 255 -521 373 -530 b 778 -374 523 -530 642 -521 z m 348 -99 b 448 -199 348 -154 393 -199 b 547 -99 503 -199 547 -154 b 448 0 547 -45 503 0 b 348 -99 393 0 348 -45 z',\n },\n fermataLongAbove: {\n x_min: 0,\n x_max: 623,\n y_min: 0,\n y_max: 368,\n ha: 368,\n o: 'm 40 0 l 40 399 l 858 399 l 858 0 l 897 0 l 897 510 b 877 530 897 521 888 530 l 20 530 b 0 510 9 530 0 521 l 0 0 z m 350 148 b 449 49 350 94 395 49 b 547 148 504 49 547 94 b 449 248 547 203 504 248 b 350 148 395 248 350 203 z',\n },\n fermataLongBelow: {\n x_min: 0,\n x_max: 623,\n y_min: -368,\n y_max: 0,\n ha: 368,\n o: 'm 0 -510 b 20 -530 0 -521 9 -530 l 877 -530 b 897 -510 888 -530 897 -521 l 897 0 l 858 0 l 858 -399 l 40 -399 l 40 0 l 0 0 z m 350 -148 b 449 -248 350 -203 395 -248 b 547 -148 504 -248 547 -203 b 449 -49 547 -94 504 -49 b 350 -148 395 -49 350 -94 z',\n },\n fermataVeryLongAbove: {\n x_min: 0,\n x_max: 842,\n y_min: 0,\n y_max: 549,\n ha: 549,\n o: 'm 276 0 l 276 399 l 936 399 l 936 0 l 976 0 l 976 510 b 956 530 976 521 968 530 l 256 530 b 236 510 245 530 236 521 l 236 0 z m 507 148 b 606 49 507 94 552 49 b 706 148 661 49 706 94 b 606 248 706 203 661 248 b 507 148 552 248 507 203 z m 40 0 l 40 661 l 1172 661 l 1172 0 l 1212 0 l 1212 772 b 1192 791 1212 783 1204 791 l 20 791 b 0 772 9 791 0 783 l 0 0 z',\n },\n fermataVeryLongBelow: {\n x_min: 0,\n x_max: 842,\n y_min: -549,\n y_max: 0,\n ha: 549,\n o: 'm 236 -510 b 256 -530 236 -521 245 -530 l 956 -530 b 976 -510 968 -530 976 -521 l 976 0 l 936 0 l 936 -399 l 276 -399 l 276 0 l 236 0 z m 507 -148 b 606 -248 507 -203 552 -248 b 706 -148 661 -248 706 -203 b 606 -49 706 -94 661 -49 b 507 -148 552 -49 507 -94 z m 0 -772 b 20 -791 0 -783 9 -791 l 1192 -791 b 1212 -772 1204 -791 1212 -783 l 1212 0 l 1172 0 l 1172 -661 l 40 -661 l 40 0 l 0 0 z',\n },\n fermataShortAbove: {\n x_min: 0,\n x_max: 642,\n y_min: 0,\n y_max: 454,\n ha: 454,\n o: 'm 363 148 b 462 49 363 94 408 49 b 562 148 517 49 562 94 b 462 248 562 203 517 248 b 363 148 408 248 363 203 z m 477 645 b 461 654 474 649 467 654 b 445 645 455 654 448 649 l 4 32 b 0 20 3 29 0 23 b 20 0 0 9 9 0 l 82 0 b 98 9 88 0 95 4 l 461 514 l 827 9 b 842 0 829 4 837 0 l 904 0 b 924 20 916 0 924 9 b 920 32 924 23 922 29 z',\n },\n fermataShortBelow: {\n x_min: 0,\n x_max: 642,\n y_min: -454,\n y_max: 0,\n ha: 454,\n o: 'm 363 -148 b 462 -248 363 -203 408 -248 b 562 -148 517 -248 562 -203 b 462 -49 562 -94 517 -49 b 363 -148 408 -49 363 -94 z m 920 -32 b 924 -20 922 -29 924 -23 b 904 0 924 -9 916 0 l 842 0 b 827 -9 837 0 829 -4 l 461 -514 l 98 -9 b 82 0 95 -4 88 0 l 20 0 b 0 -20 9 0 0 -9 b 4 -32 0 -23 3 -29 l 445 -645 b 461 -654 448 -649 455 -654 b 477 -645 467 -654 474 -649 z',\n },\n breathMarkComma: {\n x_min: 0,\n x_max: 191,\n y_min: 0,\n y_max: 321,\n ha: 321,\n o: 'm 82 0 b 275 285 215 92 275 183 b 115 462 275 396 212 462 b 0 356 46 462 0 413 b 115 246 0 294 53 246 b 181 258 157 246 177 256 b 192 261 184 259 189 261 b 199 259 194 261 196 261 b 203 245 202 258 203 253 b 48 43 203 183 147 112 z',\n },\n caesura: {\n x_min: 0,\n x_max: 380,\n y_min: 0,\n y_max: 490,\n ha: 490,\n o: 'm 285 706 b 285 706 285 706 285 706 b 271 696 279 706 274 701 l 1 22 b 0 16 0 20 0 17 b 16 0 0 7 7 0 l 50 0 b 65 10 56 0 62 4 l 334 684 b 336 690 334 685 336 688 b 320 706 336 698 328 706 z m 213 22 b 212 16 213 20 212 17 b 228 0 212 7 219 0 l 262 0 b 276 10 268 0 274 4 l 546 684 b 547 690 547 685 547 688 b 531 706 547 698 540 706 l 497 706 b 482 696 491 706 485 701 z',\n },\n caesuraCurved: {\n x_min: 0,\n x_max: 368,\n y_min: 0,\n y_max: 491,\n ha: 491,\n o: 'm 262 707 b 245 693 253 707 246 701 b 1 26 233 603 177 348 b 0 17 0 23 0 20 b 16 0 0 9 6 0 b 30 7 22 0 27 3 b 318 687 259 341 304 602 b 318 690 318 688 318 688 b 301 707 318 698 310 707 z m 474 707 b 458 693 465 707 459 701 b 213 26 446 603 389 348 b 212 19 212 23 212 20 b 229 0 212 9 219 0 b 243 7 235 0 240 3 b 530 687 472 341 516 602 b 530 690 530 688 530 688 b 514 707 530 698 523 707 z',\n },\n restMaxima: {\n x_min: 0,\n x_max: 450,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 158 -360 b 180 -338 170 -360 180 -350 l 180 338 b 158 360 180 350 170 360 l 22 360 b 0 338 9 360 0 350 l 0 -338 b 22 -360 0 -350 9 -360 z m 626 -360 b 648 -338 638 -360 648 -350 l 648 338 b 626 360 648 350 638 360 l 490 360 b 468 338 477 360 468 350 l 468 -338 b 490 -360 468 -350 477 -360 z',\n },\n restDoubleWhole: {\n x_min: 0,\n x_max: 125,\n y_min: -11,\n y_max: 262,\n ha: 273,\n o: 'm 158 -16 b 180 6 171 -16 180 -6 l 180 356 b 158 377 180 367 171 377 l 22 377 b 0 356 10 377 0 367 l 0 6 b 22 -16 0 -6 10 -16 z',\n },\n restWhole: {\n x_min: 0,\n x_max: 325,\n y_min: -131,\n y_max: 5,\n ha: 136,\n o: 'm 20 7 b 0 -13 9 7 0 -1 l 0 -168 b 20 -189 0 -180 9 -189 l 448 -189 b 468 -168 459 -189 468 -180 l 468 -13 b 448 7 468 -1 459 7 z',\n },\n restWholeLegerLine: {\n x_min: -139,\n x_max: 464,\n y_min: -122,\n y_max: 14,\n ha: 136,\n o: 'm 449 20 l 19 20 l -200 20 l -200 -20 l 0 -20 l 0 -156 b 19 -176 0 -167 7 -176 l 449 -176 b 468 -156 461 -176 468 -167 l 468 -20 l 668 -20 l 668 20 z',\n },\n restHalf: {\n x_min: 0,\n x_max: 325,\n y_min: -4,\n y_max: 132,\n ha: 136,\n o: 'm 0 14 b 20 -6 0 -6 0 -6 l 448 -6 b 468 14 468 -6 468 -6 l 468 170 b 448 190 468 190 468 190 l 20 190 b 0 170 0 190 0 190 z',\n },\n restHalfLegerLine: {\n x_min: -139,\n x_max: 464,\n y_min: -14,\n y_max: 122,\n ha: 136,\n o: 'm 668 20 l 468 20 l 468 156 b 449 176 468 167 461 176 l 19 176 b 0 156 7 176 0 167 l 0 20 l -200 20 l -200 -20 l 19 -20 l 449 -20 l 668 -20 z',\n },\n restQuarter: {\n x_min: 0,\n x_max: 235,\n y_min: -331,\n y_max: 401,\n ha: 732,\n o: 'm 331 -239 b 323 -229 330 -238 327 -235 l 157 -24 b 154 -16 156 -23 154 -19 b 157 -3 154 -12 156 -6 l 304 219 b 307 229 305 222 307 226 l 307 242 b 302 253 307 246 305 251 l 69 569 b 55 577 69 569 63 577 b 43 573 50 577 48 576 b 36 559 37 569 36 563 b 40 543 36 550 40 543 l 150 393 b 154 376 153 389 154 383 b 150 359 154 370 153 363 l 4 137 b 1 125 3 134 1 128 l 1 112 b 6 101 1 108 3 104 l 167 -99 b 131 -95 161 -98 148 -95 b 49 -124 107 -95 75 -101 b 0 -229 17 -153 0 -193 b 16 -285 0 -249 4 -269 b 154 -468 46 -331 154 -468 b 171 -477 154 -468 161 -477 b 180 -474 174 -477 177 -477 b 190 -456 187 -468 190 -462 b 186 -444 190 -451 187 -446 b 135 -353 181 -436 135 -353 b 125 -307 135 -353 125 -333 b 150 -246 125 -288 131 -265 b 206 -223 167 -229 187 -223 b 252 -236 225 -223 240 -229 l 308 -272 b 320 -275 308 -272 314 -275 b 334 -268 325 -275 330 -274 b 338 -255 337 -262 338 -259 b 334 -243 338 -251 337 -248 z',\n },\n rest8th: {\n x_min: 0,\n x_max: 276,\n y_min: -255,\n y_max: 204,\n ha: 459,\n o: 'm 384 292 b 379 294 383 292 380 294 b 360 282 370 294 363 289 b 245 141 354 274 310 189 b 180 112 226 127 203 117 b 206 181 196 131 206 154 b 104 284 206 238 160 284 b 0 181 46 284 0 238 b 65 85 0 137 27 101 b 144 68 86 75 115 68 b 269 109 186 68 230 81 b 320 157 287 122 304 140 l 156 -356 l 194 -367 l 396 268 b 397 275 397 269 397 272 b 384 292 397 282 393 288 z',\n },\n rest16th: {\n x_min: 1,\n x_max: 344,\n y_min: -507,\n y_max: 204,\n ha: 711,\n o: 'm 494 268 b 495 275 495 271 495 272 b 482 292 495 282 491 289 b 475 294 480 294 477 294 b 456 282 467 294 461 289 b 285 115 422 213 364 135 b 310 184 302 135 310 158 b 203 284 310 240 259 284 b 104 177 145 281 104 233 b 171 84 105 134 134 98 b 252 69 197 72 225 69 b 423 164 324 72 380 108 l 423 164 l 359 -65 b 183 -245 338 -132 256 -226 b 207 -176 199 -225 207 -200 b 102 -76 207 -118 158 -76 b 1 -183 45 -76 1 -125 b 69 -275 1 -226 32 -262 b 150 -289 96 -287 121 -289 b 321 -194 222 -287 278 -251 l 174 -720 l 213 -730 z',\n },\n rest32nd: {\n x_min: 0,\n x_max: 391,\n y_min: -507,\n y_max: 460,\n ha: 967,\n o: 'm 217 71 b 408 171 348 71 402 161 l 354 -46 b 184 -240 323 -121 268 -217 b 204 -171 200 -220 204 -197 b 102 -76 204 -114 158 -76 b 0 -177 46 -76 0 -120 b 140 -288 0 -252 63 -288 b 320 -186 216 -288 276 -246 l 189 -721 l 228 -730 l 562 638 b 563 644 563 639 563 642 b 549 661 563 652 557 658 b 543 662 547 662 544 662 b 524 649 534 662 528 657 b 361 487 497 589 431 504 b 383 556 379 508 383 530 b 282 652 383 611 338 652 b 179 549 226 652 179 609 b 249 451 179 505 210 464 b 311 439 268 444 288 441 b 330 441 317 439 323 439 b 498 541 400 445 458 485 l 442 310 b 271 117 413 238 351 137 b 292 186 288 138 292 160 b 189 282 292 243 245 282 b 88 180 132 282 88 238 b 217 71 88 112 153 71 z',\n },\n rest64th: {\n x_min: 0,\n x_max: 423,\n y_min: -758,\n y_max: 464,\n ha: 1222,\n o: 'm 207 -1083 l 246 -1092 b 608 644 282 -919 605 634 b 609 649 608 647 609 648 b 595 667 609 658 603 665 b 589 668 593 668 592 668 b 569 654 577 668 575 664 b 474 521 563 644 530 573 b 412 487 456 505 435 494 b 432 546 425 503 432 526 b 328 649 432 606 382 649 b 226 546 275 649 226 608 b 360 438 226 465 300 438 b 501 492 419 438 474 465 b 546 546 527 518 533 526 l 547 547 l 500 323 b 399 161 491 300 452 209 b 337 125 382 144 360 132 b 357 184 350 143 357 134 b 253 288 357 235 317 288 b 151 187 190 288 151 236 b 285 76 151 138 183 76 b 471 184 412 76 465 173 l 423 -45 b 324 -204 413 -69 374 -158 b 262 -240 305 -222 284 -233 b 281 -180 274 -223 281 -212 b 177 -78 281 -147 258 -78 b 75 -180 98 -78 75 -153 b 209 -289 75 -207 88 -289 b 395 -181 330 -289 389 -193 l 350 -397 b 248 -564 337 -449 285 -530 b 186 -599 229 -580 207 -592 b 204 -540 197 -583 204 -563 b 102 -438 204 -501 174 -438 b 0 -540 29 -438 0 -501 b 132 -648 0 -579 24 -648 b 320 -540 266 -648 315 -552 z',\n },\n rest128th: {\n x_min: -1,\n x_max: 475,\n y_min: -759,\n y_max: 717,\n ha: 1476,\n o: 'm 677 1028 b 664 1032 672 1031 667 1032 b 644 1018 654 1032 649 1028 b 549 886 638 1008 605 937 b 487 851 531 870 510 858 b 507 910 500 868 507 890 b 403 1014 507 971 456 1014 b 301 910 350 1014 301 972 b 435 802 301 829 374 802 b 576 857 494 802 549 829 b 621 910 602 883 608 890 l 622 912 l 575 687 b 474 526 566 664 527 573 b 412 490 456 508 435 497 b 432 549 425 507 432 498 b 328 652 432 599 392 652 b 226 552 265 652 226 600 b 360 441 226 503 258 441 b 546 549 487 441 540 537 l 498 320 b 399 160 488 295 449 207 b 337 125 380 143 359 131 b 356 184 348 141 356 153 b 252 287 356 217 333 287 b 150 184 173 287 150 212 b 284 76 150 157 163 76 b 469 183 405 76 464 171 l 425 -33 b 323 -200 412 -85 360 -166 b 261 -235 304 -216 282 -228 b 279 -176 272 -219 279 -199 b 177 -72 279 -137 249 -72 b 75 -176 104 -72 75 -137 b 207 -284 75 -215 99 -284 b 395 -176 341 -284 390 -187 l 347 -409 b 248 -566 330 -461 282 -533 b 186 -600 229 -582 207 -593 b 204 -541 197 -583 204 -564 b 102 -438 204 -501 174 -438 b -1 -541 29 -438 -1 -503 b 132 -649 -1 -580 24 -649 b 318 -546 256 -649 307 -567 l 206 -1084 l 245 -1093 b 683 1008 281 -920 680 996 b 684 1015 683 1009 684 1014 b 677 1028 684 1020 683 1024 z',\n },\n dynamicPiano: {\n x_min: -95,\n x_max: 317,\n y_min: -163,\n y_max: 263,\n ha: 426,\n o: 'm 186 -235 l 186 -206 l 78 -206 l 161 26 l 166 16 b 229 -29 166 16 180 -16 b 256 -32 238 -32 248 -32 b 445 166 336 -32 415 49 b 456 246 454 197 456 223 b 374 373 456 343 396 367 b 356 376 369 374 361 376 b 242 314 311 376 266 338 l 238 310 l 235 315 b 154 377 235 315 204 370 b 138 379 148 377 144 379 b 0 226 91 379 42 346 l 26 213 b 63 301 32 232 46 278 b 102 328 72 314 89 325 b 108 328 104 328 107 328 b 120 325 112 328 117 327 b 127 304 125 321 127 314 b 94 192 127 269 101 206 l -49 -206 l -137 -206 l -137 -235 z m 226 17 b 215 19 223 17 217 17 b 187 81 193 27 187 53 b 204 180 187 125 203 177 b 297 317 217 235 259 295 b 324 325 307 323 315 325 b 336 324 328 325 333 325 b 350 311 341 323 347 317 b 356 278 354 302 356 291 b 333 161 356 239 341 187 b 242 20 314 105 278 37 b 226 17 238 17 230 17 z',\n },\n dynamicMezzo: {\n x_min: -7,\n x_max: 374,\n y_min: -2,\n y_max: 251,\n ha: 253,\n o: 'm 488 63 b 467 48 481 50 474 48 b 459 49 464 48 462 48 b 449 65 452 52 449 58 b 461 112 449 76 455 94 b 474 157 464 121 471 150 b 492 281 482 183 492 242 b 491 301 492 288 492 295 b 436 359 484 340 467 359 b 340 307 399 359 359 331 l 337 301 l 334 308 b 272 359 334 308 311 359 b 177 310 232 359 202 343 l 173 304 l 171 311 b 117 360 171 311 153 353 b 96 361 109 361 102 361 b 29 328 60 361 39 340 b -10 252 20 318 0 284 l 12 240 b 68 318 12 240 36 318 b 75 317 71 318 72 318 b 86 295 84 314 86 307 b 59 194 86 275 75 240 b 1 20 59 193 6 33 b 0 13 1 17 0 16 b 3 4 0 10 1 7 b 14 -1 6 1 9 -1 l 36 -1 b 91 -1 58 -1 86 -1 b 107 22 94 -1 101 -1 b 127 99 114 53 121 79 b 235 310 132 121 186 310 b 243 305 238 310 242 308 b 248 289 246 302 248 297 b 216 160 248 265 233 219 b 173 22 194 89 173 22 b 173 16 173 20 173 19 b 176 3 173 12 173 6 b 187 -1 179 0 183 -1 l 266 -1 b 282 16 272 -1 279 0 b 284 26 282 17 284 22 b 392 302 312 228 359 288 b 396 304 393 302 395 304 l 397 304 b 400 302 399 304 399 302 b 408 289 403 301 408 297 b 369 140 408 275 399 217 b 356 75 360 117 356 95 b 370 23 356 55 360 37 b 428 -3 382 6 408 -3 b 536 99 492 -3 517 49 b 539 108 537 102 537 105 l 514 120 b 488 63 514 120 498 81 z',\n },\n dynamicForte: {\n x_min: -137,\n x_max: 334,\n y_min: -193,\n y_max: 421,\n ha: 614,\n o: 'm -122 -86 b -197 -161 -161 -86 -197 -122 b -81 -278 -197 -236 -147 -278 b 35 -228 -35 -278 -1 -264 b 202 173 98 -164 167 50 b 238 297 215 219 228 264 l 238 300 l 341 300 b 356 314 350 300 356 305 l 356 346 b 341 360 356 354 350 360 l 256 360 l 256 364 b 330 554 297 511 308 537 b 359 566 341 563 351 566 b 366 564 361 566 364 564 b 380 553 373 563 377 559 b 382 546 382 550 382 549 b 373 528 382 539 379 531 b 351 478 359 517 351 498 b 354 458 351 471 353 465 b 384 426 359 445 370 432 b 410 420 390 423 400 420 b 445 431 420 420 432 423 b 478 472 459 438 474 456 b 481 497 481 480 481 488 b 467 550 481 514 477 533 b 376 605 455 572 422 598 b 351 606 369 606 360 606 b 225 553 317 606 272 595 b 122 363 187 520 154 456 l 122 360 l 13 360 b -1 346 4 360 -1 354 l -1 314 b 13 300 -1 305 4 300 l 102 300 l 102 294 b 66 140 88 236 76 187 b 24 -35 55 86 42 32 l 20 -52 b -53 -235 -10 -170 -19 -212 b -78 -242 -60 -239 -69 -242 b -98 -235 -85 -242 -92 -239 b -105 -222 -102 -232 -105 -228 b -105 -219 -105 -220 -105 -220 b -94 -204 -104 -213 -101 -207 b -58 -144 -66 -193 -58 -167 b -122 -86 -58 -124 -71 -86 z',\n },\n dynamicRinforzando: {\n x_min: -12,\n x_max: 230,\n y_min: 0,\n y_max: 254,\n ha: 254,\n o: 'm 272 364 b 200 341 239 364 212 348 b 168 310 187 333 177 321 l 164 304 b 109 363 164 304 151 353 b 88 366 102 364 95 366 b 22 331 52 366 32 343 b -17 255 13 321 -7 287 l 4 243 b 60 321 4 243 29 321 b 68 320 63 321 65 321 b 78 297 75 317 78 308 b 49 180 78 272 65 230 l 0 23 b 0 17 0 22 0 20 b 3 4 0 13 0 7 b 14 0 6 1 10 0 l 94 0 b 109 17 99 0 107 1 b 111 27 109 19 111 23 b 209 302 140 230 186 279 b 225 311 215 308 220 311 b 229 310 226 311 228 311 b 233 304 233 307 233 305 b 233 301 233 302 233 301 b 216 268 220 291 216 279 b 225 243 216 259 219 249 b 262 229 235 232 249 229 b 304 242 279 229 295 235 b 331 308 320 255 331 275 b 272 364 331 341 304 364 z',\n },\n dynamicSforzando: {\n x_min: 0,\n x_max: 208,\n y_min: -5,\n y_max: 263,\n ha: 268,\n o: 'm 242 328 b 217 289 222 317 217 300 b 258 249 217 274 230 249 b 298 284 285 249 295 269 b 300 295 300 287 300 291 b 189 379 300 328 272 379 b 49 259 92 379 49 315 b 99 173 49 229 59 196 b 164 137 117 163 140 151 b 194 88 189 122 194 102 b 124 24 194 73 177 24 b 72 46 82 24 72 39 b 73 49 72 48 72 49 b 96 96 78 52 96 62 b 50 150 96 134 72 150 b 0 91 29 150 0 134 b 124 -7 0 26 49 -7 b 282 111 199 -7 282 24 b 171 239 282 197 207 219 b 128 292 135 259 128 268 b 193 347 128 317 156 347 b 242 328 230 347 242 328 z',\n },\n dynamicZ: {\n x_min: -42,\n x_max: 239,\n y_min: -1,\n y_max: 258,\n ha: 259,\n o: 'm 229 292 b 235 288 232 292 233 291 b 236 284 236 285 236 285 b 233 278 236 281 235 279 b -42 55 232 276 -4 85 b -60 24 -56 43 -60 33 b -50 4 -60 12 -50 4 b -35 0 -45 1 -40 0 b 9 29 -14 0 1 19 b 50 69 17 43 26 69 b 89 35 75 69 81 50 b 170 -1 104 10 137 -1 b 243 22 197 -1 223 6 b 304 147 288 56 304 118 b 264 196 304 176 294 196 b 226 156 239 196 226 174 b 251 117 226 128 249 122 b 251 108 251 114 251 111 b 243 79 251 98 249 88 b 212 56 236 68 223 56 b 202 59 209 56 204 56 b 163 92 194 63 186 75 b 108 122 140 109 114 120 b 105 125 105 124 105 124 b 107 128 105 127 107 128 b 312 304 107 128 302 294 b 341 340 324 315 336 327 b 344 347 343 341 344 346 l 344 356 b 333 369 343 367 336 369 l 331 369 l 262 363 b 217 361 245 361 230 361 b 156 366 193 361 174 363 b 114 372 147 367 125 372 b 107 370 111 372 108 370 b 86 344 98 367 89 360 b 37 222 72 265 42 232 b 37 219 37 220 37 220 b 50 207 37 213 43 207 l 66 207 b 81 225 75 207 76 215 b 108 291 85 235 105 285 b 118 297 111 297 112 297 b 167 289 125 295 144 291 b 181 289 171 289 177 289 b 229 292 202 289 222 291 z',\n },\n ornamentTrill: {\n x_min: -12,\n x_max: 383,\n y_min: 0,\n y_max: 383,\n ha: 383,\n o: 'm 464 396 b 376 359 408 396 376 359 l 364 370 b 346 377 357 377 346 377 l 197 377 l 246 528 b 246 531 246 530 246 531 b 226 552 246 541 236 552 l 213 552 b 199 544 209 552 202 547 b 124 482 196 541 130 487 b 117 471 118 478 117 471 b 84 377 117 471 102 431 l 3 377 b -17 360 -14 377 -17 360 l -17 341 b 3 324 -17 325 3 324 l 66 324 b 0 85 35 229 0 117 b 92 0 0 16 48 0 b 186 35 137 0 186 35 b 194 13 186 35 190 24 b 212 0 199 1 212 0 l 276 0 b 298 16 295 0 298 16 l 298 43 b 321 147 298 75 321 147 l 382 284 b 412 325 382 284 396 311 b 446 341 425 336 438 341 b 452 340 448 341 451 341 b 428 288 432 327 428 305 b 485 233 428 271 446 233 b 552 308 534 233 552 264 b 464 396 552 353 520 396 z m 222 143 b 147 78 210 104 171 78 b 137 79 143 78 140 78 b 121 115 125 85 121 99 b 137 190 121 148 137 190 l 180 324 l 275 324 b 279 320 279 324 279 320 b 222 143 279 320 235 187 z',\n },\n ornamentTurn: {\n x_min: 0,\n x_max: 456,\n y_min: 0,\n y_max: 232,\n ha: 232,\n o: 'm 527 334 b 442 269 488 334 442 312 b 501 204 442 228 468 204 b 570 226 533 204 540 226 b 613 164 598 226 613 204 l 613 163 b 550 98 613 127 586 98 b 448 143 508 98 485 109 l 328 255 l 298 284 b 174 334 262 317 223 334 b 0 170 92 334 0 278 b 131 0 0 68 58 0 b 215 65 170 0 215 22 b 156 130 215 107 189 130 b 86 108 124 130 117 108 b 43 170 59 108 43 130 l 43 171 b 108 236 43 207 72 236 b 209 192 150 236 171 225 l 328 79 l 360 50 b 482 0 396 17 433 0 b 657 164 564 0 657 56 b 527 334 657 266 600 334 z',\n },\n ornamentTurnSlash: {\n x_min: 0,\n x_max: 456,\n y_min: -80,\n y_max: 313,\n ha: 393,\n o: 'm 527 334 b 442 269 488 334 442 312 b 501 204 442 228 468 204 b 570 226 533 204 540 226 b 613 164 598 226 613 204 l 613 163 b 550 98 613 127 586 98 b 448 143 508 98 485 109 l 354 230 l 354 431 b 336 451 354 442 347 451 l 323 451 b 302 431 311 451 302 442 l 302 279 l 298 284 b 174 334 262 317 223 334 b 0 170 92 334 0 278 b 131 0 0 68 58 0 b 215 65 170 0 215 22 b 156 130 215 107 189 130 b 86 108 124 130 117 108 b 43 170 59 108 43 130 l 43 171 b 108 236 43 207 72 236 b 209 192 150 236 171 225 l 302 104 l 302 -96 b 323 -115 302 -108 311 -115 l 336 -115 b 354 -96 347 -115 354 -108 l 354 55 l 360 50 b 482 0 396 17 433 0 b 657 164 564 0 657 56 b 527 334 657 266 600 334 z',\n },\n ornamentMordent: {\n x_min: 0,\n x_max: 473,\n y_min: -77,\n y_max: 316,\n ha: 393,\n o: 'm 647 302 l 562 166 l 446 347 b 429 357 444 353 435 357 b 413 347 423 357 416 353 l 363 262 l 363 435 b 343 455 363 446 354 455 l 331 455 b 311 435 320 455 311 446 l 311 173 l 310 171 l 203 347 b 186 357 200 353 192 357 b 168 347 180 357 171 353 l 0 69 l 35 48 l 120 189 l 226 10 b 243 0 229 4 238 0 b 261 10 249 0 258 4 l 311 95 l 311 -91 b 331 -111 311 -102 320 -111 l 343 -111 b 363 -91 354 -111 363 -102 l 363 184 l 366 189 l 478 10 b 495 0 481 4 490 0 b 513 10 501 0 510 4 l 681 281 z',\n },\n ornamentShortTrill: {\n x_min: 0,\n x_max: 473,\n y_min: 0,\n y_max: 248,\n ha: 248,\n o: 'm 647 302 l 562 166 l 446 347 b 431 357 444 353 436 357 b 413 347 425 357 416 353 l 310 171 l 203 347 b 186 357 200 353 192 357 b 168 347 180 357 173 353 l 0 69 l 35 48 l 120 189 l 226 10 b 243 0 229 4 238 0 b 261 10 249 0 258 4 l 366 189 l 478 9 b 495 0 481 3 490 0 b 513 10 501 0 510 4 l 681 281 z',\n },\n ornamentTremblement: {\n x_min: 0,\n x_max: 654,\n y_min: 0,\n y_max: 248,\n ha: 248,\n o: 'm 907 302 l 822 166 l 708 348 b 691 357 704 354 701 357 b 674 347 685 357 677 353 l 648 302 l 563 166 l 449 348 b 432 357 446 354 438 357 b 415 347 426 357 418 353 l 415 346 l 311 171 l 203 348 b 186 357 200 354 192 357 b 168 348 177 357 171 354 l 168 347 l 0 69 l 35 48 l 120 190 l 226 10 b 243 0 229 4 238 0 l 245 0 b 261 10 251 0 258 4 l 367 189 l 480 10 b 497 0 482 4 491 0 b 513 10 503 0 510 4 l 625 192 l 739 10 b 756 0 742 4 750 0 b 772 10 762 0 769 4 l 942 282 z',\n },\n ornamentPrecompAppoggTrill: {\n x_min: 0,\n x_max: 680,\n y_min: 0,\n y_max: 388,\n ha: 388,\n o: 'm 860 170 l 746 353 b 729 361 743 359 737 361 b 713 351 723 361 716 357 l 685 307 l 600 170 l 487 353 b 481 359 485 356 484 357 b 469 361 478 360 472 361 b 452 351 464 361 455 357 l 348 176 l 240 353 b 223 361 238 359 229 361 b 206 353 215 361 209 359 l 40 76 l 40 541 b 20 559 39 552 30 559 b 0 541 10 559 1 552 l 0 26 b 19 1 0 16 9 4 b 26 0 20 1 24 0 b 48 13 35 0 43 6 l 72 52 l 157 194 l 265 14 b 282 4 268 9 276 4 b 298 14 288 4 295 9 l 405 193 l 517 14 b 534 4 520 9 528 4 b 550 14 540 4 547 9 l 664 196 l 776 14 b 793 4 779 9 788 4 b 811 14 799 4 808 9 l 979 287 l 945 307 z',\n },\n ornamentPrecompSlideTrillDAnglebert: {\n x_min: 0,\n x_max: 662,\n y_min: -158,\n y_max: 248,\n ha: 406,\n o: 'm 834 166 l 720 348 b 704 357 717 354 713 357 b 687 348 697 357 690 353 l 661 302 l 660 302 l 575 166 l 461 348 b 455 354 459 350 456 353 b 444 357 452 356 448 357 b 428 347 438 357 431 353 l 323 171 l 215 347 b 213 350 215 348 215 350 b 213 350 213 350 213 350 l 213 351 l 212 351 l 212 353 l 210 353 l 210 353 l 209 354 b 207 354 209 354 207 354 b 197 357 206 356 200 357 b 197 357 197 357 197 357 b 194 357 196 357 196 357 b 180 347 187 357 183 353 l 180 346 l 69 164 b 0 -50 23 88 0 17 b 49 -219 0 -108 16 -163 b 66 -228 52 -223 59 -228 b 76 -225 69 -228 73 -226 b 86 -207 82 -222 86 -215 b 84 -197 86 -204 85 -200 b 40 -52 55 -150 40 -102 b 104 143 40 10 62 73 l 131 190 l 239 10 b 256 0 242 4 249 0 l 256 0 b 272 10 262 0 269 4 l 379 189 l 491 10 b 508 0 494 4 503 0 b 508 0 508 0 508 0 l 508 0 b 526 10 514 0 521 4 l 638 192 l 750 10 b 768 0 755 4 762 0 l 768 0 b 785 10 773 0 782 4 l 785 10 l 953 282 l 919 302 z',\n },\n ornamentPrecompSlideTrillBach: {\n x_min: 0,\n x_max: 662,\n y_min: -158,\n y_max: 321,\n ha: 479,\n o: 'm 834 166 l 720 348 b 704 357 716 354 713 357 b 687 348 698 357 690 354 l 660 304 l 660 302 l 632 259 l 632 442 b 612 462 632 454 624 462 l 599 462 b 579 442 588 462 579 454 l 579 173 l 575 166 l 461 348 b 455 356 459 351 458 354 b 445 359 452 357 448 359 b 428 348 439 359 431 354 l 323 171 l 215 347 b 213 350 215 348 213 350 l 213 351 l 212 353 l 210 353 l 210 354 l 207 354 b 197 357 204 356 200 357 b 180 348 189 357 183 354 l 179 346 l 69 164 b 0 -49 23 88 0 19 b 49 -217 0 -107 17 -163 b 66 -228 52 -223 60 -228 b 76 -225 69 -228 73 -226 b 86 -207 82 -222 86 -213 b 84 -197 86 -204 85 -200 b 42 -50 56 -148 42 -101 b 104 144 42 12 62 75 l 131 190 l 239 10 b 256 0 242 4 251 0 b 274 10 262 0 271 4 l 379 190 l 491 10 b 508 0 494 4 503 0 b 526 10 514 0 523 4 l 579 98 l 579 -84 b 599 -104 579 -95 588 -104 l 612 -104 b 632 -84 624 -104 632 -95 l 632 183 l 638 192 l 750 10 b 768 0 753 4 762 0 b 785 10 773 0 782 4 l 953 282 l 919 302 z',\n },\n ornamentPrecompTrillSuffixDandrieu: {\n x_min: 0,\n x_max: 662,\n y_min: 0,\n y_max: 406,\n ha: 406,\n o: 'm 904 575 b 887 585 901 580 893 585 b 877 582 884 585 880 583 b 867 564 871 579 867 570 b 870 554 867 562 868 557 b 912 408 897 505 912 458 b 850 213 912 346 891 282 l 822 167 l 714 348 b 697 357 711 354 703 357 b 680 348 691 357 683 354 l 575 168 l 462 348 b 445 357 459 354 451 357 b 428 348 439 357 431 354 l 315 167 l 203 348 b 186 357 200 354 192 357 b 168 348 180 357 171 354 l 0 76 l 35 55 l 120 192 l 233 10 b 249 0 238 4 240 0 b 266 10 255 0 264 4 l 294 55 l 379 192 l 492 9 b 498 3 494 6 495 4 b 508 0 501 1 505 0 b 526 10 514 0 523 4 l 631 186 l 737 13 b 746 3 739 10 743 4 b 756 0 749 1 753 0 b 773 9 762 0 770 3 l 884 193 b 953 406 930 269 953 338 b 904 575 953 464 936 520 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefix: {\n x_min: 0,\n x_max: 857,\n y_min: 0,\n y_max: 248,\n ha: 248,\n o: 'm 383 140 b 413 189 399 166 412 187 b 520 10 423 171 516 16 b 537 0 523 4 530 0 b 554 10 543 0 550 4 b 660 189 557 16 649 171 b 772 10 671 173 766 19 b 791 0 778 1 785 0 b 806 10 796 0 802 4 b 919 192 809 16 907 174 l 1031 10 b 1048 0 1035 4 1043 0 l 1048 0 b 1066 10 1054 1 1063 4 l 1066 10 l 1234 282 l 1200 302 l 1115 166 l 1002 348 b 985 357 998 354 994 357 b 968 348 978 357 971 353 l 855 166 b 742 348 845 183 746 341 b 726 357 737 354 732 357 b 708 348 719 357 711 354 b 603 171 704 341 613 189 b 495 348 593 189 498 343 b 478 357 492 353 487 357 b 461 348 469 357 464 353 b 357 173 459 346 393 235 b 213 79 320 111 284 79 b 66 176 143 79 95 112 b 40 279 43 228 40 275 b 20 300 40 291 30 300 b 0 278 9 300 0 289 b 29 161 0 276 3 219 b 213 39 65 81 130 39 b 383 140 297 39 346 73 z',\n },\n ornamentPrecompTrillLowerSuffix: {\n x_min: 0,\n x_max: 565,\n y_min: -171,\n y_max: 249,\n ha: 420,\n o: 'm 347 168 l 235 348 b 217 359 230 354 226 359 b 200 348 209 359 203 353 b 3 30 197 344 6 35 b 0 20 0 26 0 24 b 22 0 0 9 10 0 b 37 9 27 0 35 3 l 151 192 b 265 10 161 174 262 13 b 281 0 268 6 272 0 b 298 10 289 0 295 3 l 403 186 l 511 10 b 528 0 516 4 521 0 b 546 10 537 0 541 4 l 698 265 b 775 22 744 202 775 112 b 700 -215 775 -60 752 -144 b 696 -226 697 -219 696 -222 b 704 -243 696 -232 700 -239 b 717 -246 708 -246 713 -246 b 733 -239 723 -246 729 -243 b 814 20 789 -160 814 -69 b 711 312 814 132 773 242 b 696 320 707 317 700 320 b 680 310 691 320 684 318 b 595 168 671 297 602 181 l 488 348 b 471 359 484 354 478 359 b 454 348 464 359 456 353 b 347 168 449 343 357 186 z',\n },\n brassMuteClosed: {\n x_min: 0,\n x_max: 312,\n y_min: 0,\n y_max: 312,\n ha: 312,\n o: 'm 22 256 b 0 225 7 256 0 240 b 22 193 0 209 7 193 l 193 193 l 193 22 b 225 0 193 7 209 0 b 256 22 240 0 256 7 l 256 193 l 428 193 b 449 225 442 193 449 209 b 428 256 449 240 442 256 l 256 256 l 256 428 b 225 449 256 442 240 449 b 193 428 209 449 193 442 l 193 256 z',\n },\n brassMuteOpen: {\n x_min: 0,\n x_max: 280,\n y_min: 0,\n y_max: 280,\n ha: 280,\n o: 'm 202 403 b 0 202 91 403 0 312 b 202 0 0 91 91 0 b 403 202 312 0 403 91 b 202 403 403 312 312 403 z m 202 40 b 40 202 112 40 40 112 b 202 363 40 291 112 363 b 363 202 291 363 363 291 b 202 40 363 112 291 40 z',\n },\n stringsDownBow: {\n x_min: 0,\n x_max: 315,\n y_min: 0,\n y_max: 293,\n ha: 293,\n o: 'm 40 0 l 40 291 l 413 291 l 413 0 l 454 0 l 454 402 b 433 422 454 413 445 422 l 20 422 b 0 402 9 422 0 402 l 0 0 z',\n },\n stringsUpBow: {\n x_min: 0,\n x_max: 262,\n y_min: 0,\n y_max: 343,\n ha: 343,\n o: 'm 374 485 b 357 494 372 490 363 494 l 337 494 b 318 481 330 494 321 488 l 189 118 l 59 481 b 40 494 56 488 48 494 l 20 494 b 0 474 9 494 0 485 b 1 467 0 472 1 468 l 170 13 b 189 0 173 6 181 0 b 207 13 196 0 204 6 l 376 467 b 377 474 376 468 377 472 b 374 485 377 477 376 482 z',\n },\n stringsHarmonic: {\n x_min: 0,\n x_max: 181,\n y_min: 0,\n y_max: 181,\n ha: 181,\n o: 'm 131 220 b 220 131 181 220 220 181 b 131 40 220 81 181 40 b 40 131 81 40 40 81 b 131 220 40 181 81 220 z m 131 261 b 0 131 59 261 0 203 b 131 0 0 59 59 0 b 261 131 203 0 261 59 b 131 261 261 203 203 261 z',\n },\n pluckedSnapPizzicatoAbove: {\n x_min: 0,\n x_max: 269,\n y_min: 0,\n y_max: 389,\n ha: 389,\n o: 'm 213 540 b 194 560 213 552 204 560 b 174 540 183 560 174 552 l 174 386 b 0 193 76 376 0 294 b 194 0 0 86 86 0 b 387 193 301 0 387 86 b 213 386 387 294 311 376 z m 194 40 b 40 193 109 40 40 109 b 174 346 40 271 98 336 l 174 193 b 194 173 174 183 183 173 b 213 193 204 173 213 183 l 213 346 b 347 193 289 336 347 271 b 194 40 347 109 278 40 z',\n },\n pluckedSnapPizzicatoBelow: {\n x_min: 0,\n x_max: 269,\n y_min: 0,\n y_max: 389,\n ha: 389,\n o: 'm 213 174 b 387 367 311 184 387 266 b 193 560 387 474 301 560 b 0 367 86 560 0 474 b 174 174 0 266 76 184 l 174 20 b 194 0 174 9 183 0 b 213 20 204 0 213 9 z m 194 520 b 347 367 278 520 347 452 b 213 215 347 289 289 225 l 213 367 b 194 387 213 377 204 387 b 174 367 183 387 174 377 l 174 215 b 40 367 98 225 40 289 b 194 520 40 452 109 520 z',\n },\n keyboardPedalPed: {\n x_min: 0,\n x_max: 981,\n y_min: -10,\n y_max: 545,\n ha: 555,\n o: 'm 1354 12 b 1413 78 1385 12 1413 42 b 1354 145 1413 115 1385 145 b 1293 78 1320 145 1293 115 b 1354 12 1293 42 1320 12 z m 1092 88 b 1080 86 1089 86 1084 86 b 1004 203 1037 86 1004 137 b 1107 376 1004 360 1097 374 b 1149 209 1129 336 1149 287 b 1092 88 1149 117 1130 95 z m 752 393 b 795 344 779 393 795 372 b 770 285 795 325 788 304 b 693 203 737 249 697 207 b 688 264 690 225 688 245 b 752 393 688 347 714 393 z m 245 507 b 220 544 245 533 235 544 b 217 544 219 544 219 544 b 186 510 206 546 192 537 b 143 464 179 478 163 464 b 134 465 140 464 137 464 b 102 516 117 467 102 487 b 141 613 102 541 112 576 b 347 721 212 711 315 721 b 356 721 351 721 354 721 b 275 560 344 701 297 616 b 259 495 274 557 259 528 b 272 452 259 480 264 465 b 373 323 297 416 350 354 b 387 284 382 311 387 298 b 350 222 387 265 376 245 b 230 140 301 180 252 154 b 128 39 215 130 128 92 b 134 12 128 30 130 22 b 173 -14 144 -7 157 -14 b 264 40 204 -14 243 17 b 333 98 281 58 302 98 b 389 39 357 98 373 60 b 478 -10 416 1 435 -10 b 622 96 527 -10 559 43 b 740 -10 626 86 667 -10 b 929 95 827 -10 917 85 b 1086 -12 950 37 1018 -12 b 1120 -7 1097 -12 1109 -10 b 1264 213 1212 17 1264 111 b 1263 248 1264 225 1263 236 b 815 664 1228 544 907 647 b 785 668 805 665 795 668 b 779 668 783 668 782 668 b 757 654 769 668 760 665 b 757 649 757 652 757 651 b 786 618 759 629 783 619 b 818 606 796 613 808 611 b 1071 435 1007 534 1066 445 b 909 181 930 386 909 256 b 910 141 909 164 909 151 b 786 78 899 127 844 78 b 708 151 726 78 710 144 b 799 230 711 154 742 181 b 864 350 845 271 864 312 b 757 456 864 410 815 456 b 599 222 644 456 599 328 b 609 141 599 192 602 164 b 563 104 608 140 595 122 b 540 98 556 99 549 98 b 459 140 513 98 480 118 b 397 184 413 189 399 184 b 475 279 403 189 454 226 b 482 311 480 289 482 300 b 449 410 482 359 452 405 b 361 533 442 419 383 503 b 354 560 356 541 354 550 b 386 651 353 588 372 622 b 429 713 405 693 426 710 b 557 592 521 688 557 628 b 549 569 557 582 554 573 b 523 559 540 562 531 559 b 459 592 495 559 469 583 b 425 613 451 600 438 613 b 409 608 419 613 415 612 b 399 586 402 602 399 595 b 399 583 397 585 399 585 b 409 552 399 573 405 562 b 541 458 441 487 492 458 b 608 480 564 458 588 465 b 648 572 632 497 648 531 b 429 778 648 649 589 749 b 351 785 402 782 376 785 b 0 507 130 785 0 615 b 127 366 0 399 68 366 b 245 507 186 366 245 429 z',\n },\n keyboardPedalUp: {\n x_min: 0,\n x_max: 473,\n y_min: 0,\n y_max: 473,\n ha: 473,\n o: 'm 99 99 b 164 69 120 79 143 69 b 199 82 177 69 190 73 b 210 114 206 89 210 102 b 206 137 210 122 209 130 b 200 160 203 145 200 154 b 210 179 200 166 203 171 l 245 215 b 285 213 255 225 272 219 l 287 213 l 288 212 b 318 183 301 206 318 196 l 318 134 b 291 102 318 112 308 112 b 258 58 274 92 258 76 b 340 0 258 26 294 0 b 423 58 386 0 423 26 b 390 102 423 76 408 92 b 361 134 373 112 361 112 l 361 183 b 392 212 361 196 379 206 b 395 213 393 212 393 213 b 436 215 408 219 426 225 l 471 179 b 480 161 478 171 480 167 b 474 137 480 154 477 147 b 471 115 472 130 471 122 b 482 82 471 102 474 91 b 517 69 491 73 504 69 b 582 99 539 69 562 79 b 612 164 602 120 612 143 b 599 199 612 177 608 190 b 567 210 592 206 579 210 b 544 206 559 210 552 209 b 521 200 536 203 528 200 b 501 210 514 200 508 203 l 467 245 b 468 285 456 255 462 272 l 468 287 b 469 288 468 287 469 287 b 498 318 475 301 485 318 l 547 318 b 579 291 569 318 569 308 b 624 258 589 274 605 258 b 681 340 655 258 681 294 b 624 423 681 386 655 423 b 579 390 605 423 589 408 b 547 361 569 373 569 361 l 498 361 b 469 392 485 361 475 379 b 468 395 469 393 468 393 b 467 436 462 408 456 426 l 501 471 b 520 480 508 478 514 480 b 544 474 527 480 534 477 b 566 471 552 472 559 471 b 599 482 579 471 590 474 b 612 516 608 491 612 503 b 582 580 612 536 602 560 b 516 612 562 600 537 612 b 482 599 503 612 491 608 b 471 566 474 590 471 579 b 474 544 471 559 472 552 b 480 520 477 534 480 527 b 471 501 480 514 478 508 l 436 467 b 395 468 426 456 408 462 b 392 469 393 468 393 469 b 361 498 379 475 361 485 l 361 547 b 390 579 361 569 373 569 b 423 624 408 589 423 605 b 340 681 423 655 386 681 b 258 624 294 681 258 655 b 291 579 258 605 274 589 b 318 547 308 569 318 569 l 318 498 b 288 469 318 485 301 475 l 287 468 l 285 468 b 245 467 272 462 255 456 l 210 501 b 200 521 203 508 200 514 b 206 544 200 528 203 536 b 210 567 209 552 210 559 b 199 599 210 579 206 592 b 164 612 190 608 177 612 b 99 582 143 612 120 602 b 69 517 79 562 69 539 b 82 482 69 504 73 491 b 115 471 91 474 102 471 b 137 474 122 471 130 472 b 161 480 147 477 154 480 b 180 471 167 480 173 478 l 215 436 b 213 395 225 426 219 408 b 212 392 213 393 212 393 b 183 361 206 379 196 361 l 134 361 b 102 390 112 361 112 373 b 58 423 92 408 76 423 b 0 340 26 423 0 386 b 58 258 0 294 26 258 b 102 291 76 258 92 274 b 134 318 112 308 112 318 l 183 318 b 212 288 196 318 206 301 b 213 287 212 287 213 288 l 213 285 b 215 245 219 272 225 255 l 179 210 b 160 200 171 203 166 200 b 137 206 154 200 145 203 b 114 210 130 209 122 210 b 82 199 102 210 89 206 b 69 164 73 190 69 177 b 99 99 69 143 79 120 z m 276 276 b 249 340 262 291 249 320 b 340 432 249 390 289 432 b 432 340 390 432 432 390 b 405 276 432 320 419 291 b 340 249 390 262 360 249 b 276 276 320 249 291 262 z',\n },\n wiggleArpeggiatoUp: {\n x_min: -22,\n x_max: 242,\n y_min: 0,\n y_max: 164,\n ha: 164,\n o: 'm 343 122 b 323 143 343 122 334 132 b 308 148 318 147 312 148 b 298 144 304 148 301 147 b 282 128 295 141 291 137 b 274 124 279 125 276 124 b 265 128 268 124 265 128 b 158 220 265 128 173 207 b 112 236 143 232 127 236 b 43 206 82 236 55 219 l -26 137 b -32 125 -30 132 -32 130 b -26 112 -32 118 -26 112 b -6 92 -26 112 -17 102 b 7 86 -1 88 3 86 b 17 91 12 86 14 88 b 33 107 20 94 24 98 b 42 111 36 109 39 111 b 52 107 48 111 52 107 b 158 16 52 107 144 29 b 204 0 174 4 190 0 b 274 30 235 0 262 17 l 343 99 b 348 111 347 104 348 108 b 343 122 348 118 343 122 z',\n },\n repeat1Bar: {\n x_min: 0,\n x_max: 481,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 693 -181 b 602 -91 693 -131 651 -91 b 511 -181 552 -91 511 -131 b 602 -272 511 -232 552 -272 b 693 -181 651 -272 693 -232 z',\n },\n repeat2Bars: {\n x_min: 0,\n x_max: 735,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 1058 -181 b 968 -91 1058 -131 1017 -91 b 877 -181 917 -91 877 -131 b 968 -272 877 -232 917 -272 b 1058 -181 1017 -272 1058 -232 z m 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 1058 360 l 877 360 l 366 -360 l 547 -360 z',\n },\n repeat4Bars: {\n x_min: 0,\n x_max: 1243,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 1058 360 l 877 360 l 366 -360 l 547 -360 z m 1424 360 l 1243 360 l 732 -360 l 913 -360 z m 1790 360 l 1608 360 l 1097 -360 l 1279 -360 z m 1790 -181 b 1699 -91 1790 -131 1748 -91 b 1608 -181 1649 -91 1608 -131 b 1699 -272 1608 -232 1649 -272 b 1790 -181 1748 -272 1790 -232 z',\n },\n repeatBarSlash: {\n x_min: 0,\n x_max: 481,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 693 360 l 511 360 l 0 -360 l 181 -360 z',\n },\n csymDiminished: {\n x_min: 0,\n x_max: 501,\n y_min: 0,\n y_max: 501,\n ha: 501,\n o: 'm 361 721 b 0 361 161 721 0 560 b 361 0 0 161 161 0 b 721 361 560 0 721 161 b 361 721 721 560 560 721 z m 557 164 b 361 82 505 111 435 82 b 164 164 287 82 216 111 b 82 361 111 216 82 287 b 164 557 82 436 111 505 b 361 639 216 611 287 639 b 557 557 436 639 505 611 b 639 361 611 505 639 436 b 557 164 639 287 609 216 z',\n },\n csymHalfDiminished: {\n x_min: -1,\n x_max: 502,\n y_min: -1,\n y_max: 502,\n ha: 503,\n o: 'm 723 684 l 684 723 l 596 634 b 361 721 533 688 451 721 b 0 361 161 721 0 560 b 88 125 0 271 33 189 l -1 36 l 36 -1 l 125 88 b 361 0 189 33 271 0 b 721 361 560 0 721 161 b 634 596 721 451 688 533 z m 82 361 b 164 557 82 436 111 505 b 361 639 216 611 287 639 b 537 576 426 639 488 616 l 145 184 b 82 361 105 233 82 295 z m 639 361 b 557 164 639 287 609 216 b 361 82 505 111 435 82 b 184 145 295 82 233 105 l 576 537 b 639 361 616 488 639 426 z',\n },\n csymAugmented: {\n x_min: 1,\n x_max: 321,\n y_min: 90,\n y_max: 410,\n ha: 320,\n o: 'm 462 400 l 272 400 l 272 590 l 192 590 l 192 400 l 1 400 l 1 320 l 192 320 l 192 130 l 272 130 l 272 320 l 462 320 z',\n },\n csymMajorSeventh: {\n x_min: 0,\n x_max: 500,\n y_min: 10,\n y_max: 490,\n ha: 480,\n o: 'm 360 528 l 585 96 l 135 96 z m 360 706 l 0 14 l 720 14 z',\n },\n accidentalNarrowReversedFlat: {\n x_min: 0,\n x_max: 160,\n y_min: -176,\n y_max: 452,\n ha: 628,\n o: 'm 0 84 b 101 -153 0 -26 65 -107 b 196 -249 153 -217 196 -249 b 206 -253 199 -251 202 -253 b 225 -235 216 -253 225 -245 l 230 632 b 212 651 230 642 222 651 l 199 651 b 180 632 189 651 180 642 l 184 204 b 125 217 184 204 171 217 b 0 84 53 217 0 173 z m 145 154 b 184 107 181 154 184 120 l 187 -179 b 114 -72 167 -158 132 -112 b 82 58 86 -13 82 36 b 145 154 82 79 82 154 z',\n },\n accidentalNarrowReversedFlatAndFlat: {\n x_min: 0,\n x_max: 416,\n y_min: -176,\n y_max: 452,\n ha: 628,\n o: 'm 462 217 b 330 174 374 217 338 181 l 334 632 b 315 651 334 642 325 651 l 302 651 b 284 632 292 651 284 642 l 289 -235 b 308 -253 289 -245 298 -253 b 320 -249 312 -253 317 -251 b 492 -138 320 -249 433 -194 b 599 84 534 -98 599 -26 b 462 217 599 173 534 217 z m 501 58 b 459 -72 501 36 498 -19 b 327 -179 431 -111 359 -164 l 330 85 l 330 91 b 422 154 330 125 359 154 b 501 58 503 154 501 79 z m 0 84 b 101 -153 0 -26 65 -107 b 196 -249 153 -217 196 -249 b 206 -253 199 -251 202 -253 b 225 -235 216 -253 225 -245 l 230 632 b 212 651 230 642 222 651 l 199 651 b 180 632 189 651 180 642 l 184 204 b 125 217 184 204 171 217 b 0 84 53 217 0 173 z m 145 154 b 184 107 181 154 184 120 l 187 -179 b 114 -72 167 -158 132 -112 b 82 58 86 -13 82 36 b 145 154 82 79 82 154 z',\n },\n },\n fontFamily: 'Leland',\n resolution: 1000,\n generatedOn: '2022-06-26T17:49:33.853Z',\n};\n","export const LelandMetrics = {\n name: 'Leland',\n smufl: true,\n stave: {\n padding: 12,\n endPaddingMax: 10,\n endPaddingMin: 5,\n unalignedNotePadding: 10,\n },\n accidental: {\n noteheadAccidentalPadding: 1,\n leftPadding: 2,\n accidentalSpacing: 3,\n },\n clef: {\n default: {\n point: 32,\n width: 26,\n },\n small: {\n point: 26,\n width: 20,\n },\n annotations: {\n '8va': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: -1.4,\n shiftX: 12,\n },\n },\n small: {\n point: 16,\n treble: {\n line: -0.2,\n shiftX: 8,\n },\n },\n },\n '8vb': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: 6,\n shiftX: 10,\n },\n bass: {\n line: 3.5,\n shiftX: 1,\n },\n },\n small: {\n point: 16,\n treble: {\n line: 5.3,\n shiftX: 6,\n },\n bass: {\n line: 3.1,\n shiftX: 0.5,\n },\n },\n },\n },\n // These may no longer be necessary\n lineCount: {\n '8': { point: 55, shiftY: 14 },\n '7': { point: 47, shiftY: 8 },\n '6': { point: 32, shiftY: 1 },\n '5': { point: 30, shiftY: -6 },\n '4': { point: 23, shiftY: -12 },\n },\n },\n parenthesis: {\n default: {\n point: 39,\n width: 7,\n },\n gracenote: {\n point: (39 * 3) / 5,\n width: 3,\n },\n },\n pedalMarking: {\n up: {\n point: 40,\n },\n down: {\n point: 34,\n },\n },\n // These are for numeric digits, such as in time signatures\n digits: {\n // used by timesig\n shiftLine: -1,\n point: 34,\n // used by tuplets\n tupletPoint: 22,\n shiftY: -6,\n },\n articulation: {\n articStaccatissimoAbove: {\n padding: 2,\n },\n articStaccatissimoBelow: {\n padding: 2,\n },\n },\n tremolo: {\n default: {\n point: 25,\n spacing: 5,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 11,\n offsetXStemDown: 1,\n },\n grace: {\n point: 18,\n spacing: 4,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 7,\n offsetXStemDown: 1,\n },\n },\n staveRepetition: {\n symbolText: {\n offsetX: 12,\n offsetY: 25,\n spacing: 5,\n },\n coda: {\n offsetY: 25,\n },\n segno: {\n offsetY: 10,\n },\n },\n // noteHead: {\n // },\n stem: {\n heightAdjustmentForFlag: -3,\n // These are stem (Y) offsets to the note heads. To shift the\n // noteheads (x-position) themselves, see glyphs.notehead.custom.\n noteHead: {\n noteheadTriangleUpHalf: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpBlack: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpWhole: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadXHalf: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXBlack: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXWhole: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadHalf: {\n offsetYBaseStemUp: -2.55,\n offsetYBaseStemDown: 2.65,\n },\n noteheadBlack: {\n offsetYBaseStemUp: -2,\n offsetYBaseStemDown: 2,\n },\n noteheadSquareWhite: {\n offsetYBaseStemDown: -5,\n offsetYBaseStemUp: 5,\n },\n },\n },\n // Values under here are used by the Glyph class to reposition and rescale\n // glyphs based on their category. This should be the first stop for\n // custom font glyph repositioning.\n //\n // The glyph loader first looks up a specific set of settings based on the\n // glyph code, and if not found, uses the defaults from the category. See\n // glyphs.textNote for an example of this.\n //\n // Details in Glyph.lookupFontMetrics.\n glyphs: {\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n segno: {\n shiftX: -7,\n },\n flag: {\n shiftX: -0.75,\n staveTempo: {\n shiftX: -1,\n },\n },\n clef: {\n gClef: {\n default: { scale: 1.1, shiftY: 1 },\n small: { shiftY: 1.5 },\n },\n fClef: {\n default: { shiftY: -0.5 },\n },\n },\n ornament: {\n ornamentTurn: {\n scale: 1.2,\n },\n ornamentTurnSlash: {\n scale: 1.2,\n },\n },\n stringNumber: {\n verticalPadding: 8,\n stemPadding: 2,\n leftPadding: 5,\n rightPadding: 6,\n },\n stroke: {\n arrowheadBlackDown: {\n straight: {\n shiftX: -4.5,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n arrowheadBlackUp: {\n straight: {\n shiftX: -0.85,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n },\n textNote: {\n point: 34,\n breathMarkTick: {\n point: 36,\n shiftY: 9,\n },\n breathMarkComma: {\n point: 36,\n },\n segno: {\n point: 30,\n shiftX: -7,\n shiftY: 8,\n },\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n ornamentTrill: {\n shiftX: -8,\n shiftY: 8,\n },\n ornamentTurn: {\n point: 42,\n },\n ornamentTurnSlash: {\n point: 42,\n },\n ornamentMordent: {\n shiftX: -8,\n },\n ornamentShortTrill: {\n shiftX: -8,\n },\n },\n noteHead: {\n minPadding: 2,\n standard: {\n restQuarterStemUp: {\n point: 35,\n },\n restQuarterStemDown: {\n point: 35,\n },\n },\n custom: {\n noteheadCircleXStemUp: {\n shiftX: 1.5,\n },\n noteheadCircleXStemDown: {\n shiftX: 0.25,\n },\n noteheadDiamondHalfStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondBlackStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondWholeStemUp: {\n shiftX: 1,\n },\n noteheadXHalfStemUp: {\n shiftX: -2,\n },\n noteheadXHalfStemDown: {\n shiftX: 1,\n },\n noteheadXWholeStemUp: {\n shiftX: -4,\n },\n noteheadXWholeStemDown: {\n shiftX: 1,\n },\n noteheadSquareWhiteStemDown: {\n shiftX: 0.25,\n },\n noteheadSquareWhiteStemUp: {\n shiftX: -0.75,\n },\n noteheadSquareBlackStemUp: {\n shiftX: -0.75,\n },\n noteheadTriangleUpWholeStemUp: {\n shiftX: -0.75,\n },\n },\n },\n chordSymbol: {\n global: {\n superscriptOffset: -400,\n subscriptOffset: 300,\n kerningOffset: -250,\n lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'],\n upperKerningText: ['A', 'L'],\n spacing: 100,\n superSubRatio: 0.66,\n },\n csymDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymHalfDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymAugmented: {\n scale: 1,\n leftSideBearing: 0,\n advanceWidth: 530,\n yOffset: 0,\n },\n csymParensLeftTall: {\n scale: 0.8,\n leftSideBearing: -20,\n advanceWidth: 184,\n yOffset: 250,\n },\n csymParensRightTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 189,\n yOffset: 250,\n },\n csymBracketLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 328,\n yOffset: 0,\n },\n csymBracketRightTall: {\n scale: 0.8,\n leftSideBearing: 1,\n advanceWidth: 600,\n yOffset: 0,\n },\n csymParensLeftVeryTall: {\n scale: 0.9,\n leftSideBearing: 50,\n advanceWidth: 121,\n yOffset: 350,\n },\n csymParensRightVeryTall: {\n scale: 0.9,\n leftSideBearing: 0,\n advanceWidth: 111,\n yOffset: 350,\n },\n csymDiagonalArrangementSlash: {\n scale: 0.6,\n leftSideBearing: -1,\n advanceWidth: 990,\n yOffset: 0,\n },\n csymMinor: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 482,\n yOffset: 0,\n },\n csymMajorSeventh: {\n scale: 0.9,\n leftSideBearing: 200,\n yOffset: 0,\n advanceWidth: 600,\n },\n accidentalSharp: {\n scale: 0.75,\n leftSideBearing: 20,\n advanceWidth: 250,\n yOffset: -302,\n },\n accidentalFlat: {\n scale: 0.9,\n leftSideBearing: -20,\n advanceWidth: 226,\n yOffset: -184,\n },\n },\n jazzOrnaments: {\n brassScoop: {\n scale: 1.0,\n xOffset: -12,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 20,\n },\n brassDoitMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 22,\n },\n brassFallLipShort: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassLiftMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 5,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassFallRoughMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 28,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassBend: {\n scale: 1.0,\n xOffset: 2,\n yOffset: -8,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassMuteClosed: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -8,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassMuteOpen: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -7,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassFlip: {\n scale: 1.0,\n xOffset: 10,\n yOffset: 0,\n stemUpYOffset: 7,\n reportedWidth: 10,\n },\n brassJazzTurn: {\n scale: 1.0,\n xOffset: 0,\n yOffset: 0,\n stemUpYOffset: 8,\n reportedWidth: 31,\n },\n brassSmear: {\n scale: 1.0,\n xOffset: 10,\n yOffset: 0,\n stemUpYOffset: 8,\n reportedWidth: 5,\n },\n },\n tuplet: {\n noteHeadOffset: 20,\n stemOffset: 10,\n bottomLine: 4,\n topModifierOffset: 15,\n },\n },\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// vexflow.js statically bundles & preloads all of our music engraving fonts.\nimport { loadBravura } from './load_bravura';\nimport { loadCustom } from './load_custom';\nimport { loadGonville } from './load_gonville';\nimport { loadLeland } from './load_leland';\nimport { loadPetaluma } from './load_petaluma';\n// ADD_MUSIC_FONT\n// import { loadXXX } from './load_xxx';\n// Populate our font \"database\" with all our music fonts.\nexport function loadAllMusicFonts() {\n loadBravura();\n loadGonville();\n loadPetaluma();\n loadCustom();\n loadLeland();\n // ADD_MUSIC_FONT\n // loadXXX();\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// If you are adding a new music engraving font, search for instances of ADD_MUSIC_FONT throughout the code base.\n// To compile your new font into vexflow.js, take a look at src/fonts/load_all.ts\n// You can export a font module which can be dynamically loaded by vexflow-core.js (see: Gruntfile.js).\n// ADD_MUSIC_FONT\n// To add a new music engraving font XXX, make a copy of this file and name it load_xxx.ts.\n// Then you will need to generate xxx_glyphs.ts and xxx_metrics.ts.\n// xxx_glyphs.ts is created by tools/fonts/fontgen_smufl.js\n// xxx_metrics.ts is created by hand. You could copy bravura_metrics.ts and modify/remove/add entries where necessary.\nimport { Font } from '../font';\nimport { BravuraFont } from './bravura_glyphs';\nimport { BravuraMetrics } from './bravura_metrics';\nexport function loadBravura() {\n Font.load('Bravura', BravuraFont, BravuraMetrics);\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { CustomFont } from './custom_glyphs';\nimport { CustomMetrics } from './custom_metrics';\nexport function loadCustom() {\n Font.load('Custom', CustomFont, CustomMetrics);\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { GonvilleFont } from './gonville_glyphs';\nimport { GonvilleMetrics } from './gonville_metrics';\nexport function loadGonville() {\n Font.load('Gonville', GonvilleFont, GonvilleMetrics);\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { LelandFont } from './leland_glyphs';\nimport { LelandMetrics } from './leland_metrics';\nexport function loadLeland() {\n Font.load('Leland', LelandFont, LelandMetrics);\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { PetalumaFont } from './petaluma_glyphs';\nimport { PetalumaMetrics } from './petaluma_metrics';\nexport function loadPetaluma() {\n Font.load('Petaluma', PetalumaFont, PetalumaMetrics);\n}\n","export const PetalumaFont = {\n glyphs: {\n bracketTop: {\n x_min: 0,\n x_max: 508,\n y_min: 0,\n y_max: 370,\n ha: 370,\n o: 'm 22 0 b 122 0 55 1 89 0 l 157 0 b 713 376 425 0 622 137 b 732 467 724 406 732 436 b 726 514 732 482 730 498 b 711 533 723 528 719 533 b 693 526 707 533 700 530 b 674 498 683 520 678 508 b 635 406 662 467 652 435 b 310 164 560 281 458 193 b 154 151 258 154 206 151 b 39 154 117 151 78 154 b 1 120 17 154 4 145 b 0 84 0 108 0 96 b 0 20 0 63 1 40 b 22 0 0 4 7 0 z',\n },\n bracketBottom: {\n x_min: 0,\n x_max: 496,\n y_min: -393,\n y_max: 0,\n ha: 393,\n o: 'm 696 -566 b 711 -539 713 -566 708 -549 b 714 -521 713 -533 714 -527 b 713 -508 714 -517 713 -513 b 661 -327 706 -445 688 -384 b 392 -42 603 -203 513 -109 b 206 0 331 -7 266 0 b 160 -1 190 0 174 -1 b 26 -1 107 -1 66 -3 b 0 -19 12 -1 0 -4 l 0 -23 b 3 -50 1 -32 3 -42 b 1 -86 3 -62 1 -73 b 4 -118 1 -96 1 -108 b 45 -151 10 -145 23 -154 b 180 -143 89 -144 135 -145 b 621 -419 392 -135 523 -236 b 662 -539 641 -456 655 -497 b 696 -566 667 -557 680 -566 z',\n },\n barlineTick: {\n x_min: 0,\n x_max: 56.036101509664164,\n y_min: 876.905249806889,\n y_max: 1121.5430338167066,\n ha: 244.63778400981766,\n o: 'm 42 1263 b 66 1287 62 1261 66 1272 b 81 1583 65 1387 72 1485 b 35 1614 82 1610 53 1610 b 14 1591 17 1619 16 1604 b 0 1408 7 1525 0 1459 l 0 1292 b 42 1263 1 1263 23 1266 z',\n },\n breathMarkTick: {\n x_min: 0,\n x_max: 568,\n y_min: 0,\n y_max: 621,\n ha: 621,\n o: 'm 258 0 b 278 39 276 0 274 24 b 279 56 279 45 279 50 l 279 73 b 278 117 279 88 278 102 b 281 148 278 127 279 138 b 536 600 312 330 387 487 b 744 719 600 651 670 690 b 815 779 775 730 808 740 b 818 824 818 793 818 808 b 815 868 818 838 818 852 b 796 894 814 881 808 894 b 779 888 791 894 786 893 b 719 864 760 878 739 871 b 372 602 580 806 459 724 b 229 252 298 498 251 383 b 220 268 225 262 222 264 b 209 302 217 279 213 291 b 75 527 181 387 143 467 b 16 563 58 543 39 573 b 0 539 3 557 0 549 b 12 492 0 524 9 507 b 56 400 19 459 22 425 b 163 269 104 367 138 323 b 238 36 197 194 216 115 b 258 0 242 22 243 0 z',\n },\n segno: {\n x_min: 0,\n x_max: 798,\n y_min: -65,\n y_max: 806,\n ha: 871,\n o: 'm 16 -94 b 66 -69 39 -92 53 -85 b 177 59 102 -26 138 17 b 543 456 298 192 420 324 b 726 300 615 420 680 373 b 753 217 744 271 753 243 b 655 112 753 170 719 131 b 599 104 636 107 618 104 b 461 173 544 104 495 128 b 432 190 454 183 444 190 b 409 179 425 190 418 187 b 359 118 390 160 373 141 b 341 72 347 101 341 86 b 373 24 341 56 351 40 b 409 6 384 17 396 10 b 550 -13 454 -12 501 -14 b 599 -6 566 -12 583 -10 b 864 213 720 27 806 104 b 886 300 878 242 886 271 b 857 395 886 331 877 363 b 799 467 840 420 821 445 b 648 572 755 513 704 546 b 1110 1083 802 743 955 914 b 1140 1129 1123 1097 1136 1110 b 1149 1148 1142 1135 1149 1142 b 1145 1153 1149 1149 1148 1152 b 1123 1161 1139 1158 1130 1161 b 1109 1156 1119 1161 1113 1159 b 1089 1138 1102 1151 1094 1145 b 946 988 1040 1089 989 1041 b 595 602 834 855 711 732 l 590 598 l 549 615 b 432 793 462 647 432 723 b 534 888 432 851 474 888 b 671 834 588 888 631 864 b 710 818 684 824 696 818 b 724 821 714 818 719 819 b 809 883 757 834 788 852 b 816 901 814 890 816 896 b 802 923 816 910 812 916 b 706 984 770 945 742 971 b 593 1011 668 998 631 1011 b 516 991 567 1011 541 1005 b 333 799 433 949 380 876 b 302 693 312 765 302 729 b 330 589 302 658 311 624 b 469 488 360 533 415 511 b 485 482 475 487 480 485 b 266 249 412 405 338 327 b 121 88 217 196 170 141 b 9 -65 78 40 37 -7 b 0 -85 4 -72 0 -79 b 16 -94 0 -91 4 -94 z m 861 536 b 927 575 890 539 909 557 b 965 628 952 598 965 613 b 926 680 965 644 952 658 b 865 713 900 701 883 713 b 805 667 845 713 828 698 b 768 611 791 649 770 631 b 812 564 766 589 798 582 b 861 536 824 550 840 537 z m 251 350 b 363 436 285 348 353 403 b 354 456 366 448 360 452 b 271 518 327 477 298 497 b 243 528 261 526 252 528 b 210 513 232 528 222 523 b 157 454 190 494 176 472 b 141 428 147 444 141 436 b 158 406 141 420 147 413 b 216 361 180 393 197 376 b 245 350 225 356 235 350 z',\n },\n coda: {\n x_min: 0,\n x_max: 1380,\n y_min: -196,\n y_max: 1037,\n ha: 1233,\n o: 'm 1028 -282 b 1057 -245 1045 -282 1053 -261 b 1060 -203 1060 -232 1060 -217 b 1063 9 1060 -132 1061 -62 b 1390 194 1192 22 1303 81 b 1531 543 1467 298 1512 415 b 1532 556 1531 547 1532 552 b 1904 559 1656 557 1780 559 b 1950 582 1920 559 1941 569 b 1987 674 1970 609 1987 638 b 1984 698 1987 681 1986 690 b 1950 700 1973 698 1961 700 l 1941 700 l 1545 696 b 1535 776 1545 723 1541 749 b 1103 1113 1477 996 1326 1107 b 1080 1115 1096 1115 1087 1115 b 1081 1322 1080 1184 1080 1253 b 1079 1467 1083 1371 1081 1418 b 1061 1493 1079 1476 1080 1493 l 1060 1493 b 1028 1467 1044 1490 1031 1485 b 1020 1403 1025 1446 1020 1424 b 1017 1110 1020 1305 1018 1208 l 962 1106 b 569 914 808 1087 671 1035 b 451 683 510 844 472 766 l 161 678 b 118 680 148 678 132 680 b 79 670 101 680 86 678 b 0 544 48 636 29 592 l 37 544 l 429 549 b 428 518 428 539 428 528 b 488 285 428 435 458 360 b 681 81 526 192 593 124 b 946 9 763 40 854 19 b 1008 6 966 7 988 6 b 1005 -137 1008 -42 1005 -89 b 1012 -243 1005 -173 1005 -209 b 1028 -282 1015 -258 1011 -282 z m 1074 690 b 1079 935 1077 772 1077 852 b 1326 855 1166 932 1250 909 b 1446 694 1385 814 1426 759 b 1269 693 1387 694 1328 693 b 1074 690 1204 693 1139 691 z m 577 684 b 766 874 618 763 678 828 b 989 932 837 912 913 923 b 1015 933 998 932 1007 933 b 1014 822 1015 896 1014 860 b 1011 688 1012 791 1012 743 z m 1067 184 b 1071 553 1070 307 1068 429 b 1439 556 1194 553 1316 554 b 1437 554 1439 554 1437 554 b 1341 337 1413 478 1387 402 b 1119 192 1286 261 1211 212 b 1067 184 1102 189 1084 186 z m 1008 180 b 660 264 886 181 770 212 b 524 471 570 305 524 374 b 528 524 524 488 526 505 l 533 549 b 792 552 619 550 706 550 b 1009 553 865 553 937 552 b 1008 180 1009 428 1008 288 z',\n },\n gClef: {\n x_min: 0,\n x_max: 664,\n y_min: -559,\n y_max: 1009,\n ha: 1568,\n o: 'm 343 -805 b 366 -801 350 -805 357 -804 b 409 -773 383 -795 397 -786 b 582 -328 528 -648 577 -497 b 583 -294 582 -315 583 -294 b 612 -279 583 -294 603 -282 b 747 -197 660 -256 706 -230 b 949 143 857 -109 920 10 b 956 206 955 164 956 186 b 791 384 956 297 906 363 b 704 393 762 390 733 393 b 498 336 632 393 563 374 b 481 325 490 331 481 325 l 444 465 b 442 485 442 472 442 485 b 609 880 442 485 589 746 b 619 996 616 919 619 958 b 613 1084 619 1027 618 1056 b 534 1387 599 1188 560 1286 b 482 1453 527 1417 517 1453 b 422 1407 456 1453 438 1428 b 305 1063 348 1305 312 1188 b 304 1002 304 1043 304 1022 b 338 654 304 886 323 769 b 343 629 338 645 341 636 b 144 356 278 537 206 451 b 23 144 101 288 53 220 b 0 20 7 107 0 63 b 82 -210 0 -69 30 -160 b 207 -288 112 -239 160 -271 b 410 -328 274 -312 340 -328 b 474 -324 431 -328 452 -327 l 491 -321 b 491 -341 491 -321 492 -334 b 402 -585 475 -428 454 -513 b 294 -668 374 -622 348 -664 b 271 -693 278 -670 271 -680 b 274 -708 271 -698 272 -703 b 302 -775 282 -730 292 -753 b 343 -805 311 -795 325 -805 z m 400 717 b 382 922 389 786 382 854 b 481 1286 382 1047 408 1169 b 507 1125 498 1233 507 1179 b 500 1040 507 1097 504 1068 b 400 717 481 927 455 818 z m 252 -135 b 196 -121 232 -134 215 -127 b 117 -69 158 -108 127 -94 b 111 -32 112 -58 111 -45 b 117 19 111 -16 114 1 b 130 56 118 27 127 52 b 324 337 186 156 253 246 l 384 416 l 395 384 b 416 291 406 348 416 291 b 350 213 416 291 376 239 b 243 -42 278 143 243 55 b 251 -117 243 -66 246 -91 b 252 -135 252 -122 252 -127 z m 563 -91 b 510 168 552 3 530 78 b 513 192 508 179 508 186 b 624 202 550 199 586 202 b 730 192 660 202 694 199 b 850 141 773 183 816 176 b 858 134 852 138 855 135 b 595 -121 801 19 716 -68 l 569 -131 z m 410 -160 b 311 -147 360 -160 311 -147 b 307 -98 311 -147 307 -127 b 314 -33 307 -79 308 -56 b 429 131 328 36 377 85 b 441 138 433 135 438 138 b 449 122 446 138 448 132 b 490 -131 462 37 484 -46 b 490 -153 491 -140 490 -153 b 410 -160 490 -153 452 -163 z',\n },\n cClef: {\n x_min: 0,\n x_max: 731,\n y_min: -543,\n y_max: 543,\n ha: 1086,\n o: 'm 131 -782 b 141 -755 138 -782 140 -773 b 147 -490 143 -667 145 -577 b 160 207 150 -258 153 -24 b 168 618 164 344 158 481 b 81 768 173 690 132 732 b 45 782 66 778 55 782 b 3 740 26 782 13 768 b 0 724 1 736 0 730 l 1 710 b 4 596 4 672 4 634 l 4 382 b 9 102 4 288 4 196 b 17 -301 13 -32 10 -166 l 17 -672 b 50 -736 17 -701 27 -720 b 109 -772 69 -749 91 -759 b 131 -782 120 -778 127 -782 z m 615 -770 b 881 -684 710 -770 801 -739 b 1020 -395 986 -612 1020 -510 b 1017 -334 1020 -374 1018 -354 b 769 -62 1007 -209 896 -75 b 746 -60 762 -60 755 -60 b 639 -73 710 -60 675 -69 b 524 -109 598 -79 560 -92 b 528 -36 526 -85 528 -60 b 527 -4 528 -26 528 -14 b 528 39 527 10 528 24 b 526 99 528 59 527 79 b 592 94 549 95 570 94 b 648 99 611 94 629 95 b 912 157 744 94 844 117 b 1053 377 1009 215 1053 284 b 1050 425 1053 393 1053 409 b 914 665 1037 521 986 602 b 717 753 855 717 791 753 b 626 734 688 753 658 747 l 462 665 b 347 500 374 628 347 580 b 350 449 347 484 348 468 b 392 419 353 428 367 416 b 492 438 425 425 459 428 b 541 498 524 448 541 468 b 540 514 541 503 541 508 b 537 546 537 524 537 536 b 573 639 537 580 550 611 b 606 657 582 649 593 657 l 609 657 b 716 622 647 652 684 647 b 834 372 801 556 834 469 b 831 323 834 356 832 338 b 743 187 825 266 795 217 b 710 176 732 180 720 176 b 694 179 704 176 700 177 b 527 223 638 193 582 206 b 495 229 516 228 505 229 b 454 220 481 229 468 225 b 395 189 432 213 415 200 b 363 180 384 186 374 181 b 348 168 356 179 348 176 b 340 161 343 167 340 164 b 347 150 340 157 343 154 b 356 147 348 148 353 147 b 364 92 361 130 363 111 b 369 -37 367 49 369 6 b 363 -154 369 -76 367 -115 b 357 -236 360 -183 357 -210 b 376 -264 357 -253 361 -259 b 456 -289 402 -284 429 -289 b 521 -282 478 -289 500 -285 b 549 -255 537 -279 546 -271 b 598 -177 556 -225 577 -202 b 622 -164 605 -168 613 -164 b 636 -167 626 -164 631 -166 b 749 -225 678 -177 714 -199 b 848 -405 814 -276 848 -337 b 824 -507 848 -436 840 -471 b 657 -657 792 -582 730 -625 b 608 -668 638 -664 622 -668 b 534 -602 572 -668 547 -645 b 513 -575 530 -589 523 -575 b 507 -576 510 -575 508 -575 b 478 -582 497 -580 488 -582 b 405 -570 454 -582 428 -570 b 389 -572 399 -570 395 -570 l 363 -572 b 321 -575 348 -572 333 -569 l 321 631 b 323 662 323 641 323 652 b 315 716 323 681 321 698 b 304 736 314 723 317 736 l 302 736 b 281 716 294 734 285 729 b 275 665 276 700 275 683 l 275 382 b 276 99 275 288 275 193 b 279 -170 278 10 276 -81 b 284 -399 282 -246 284 -323 b 282 -629 284 -475 282 -553 b 289 -721 282 -660 289 -690 b 300 -736 289 -727 291 -736 b 312 -724 307 -736 310 -730 b 321 -667 323 -706 321 -687 l 321 -632 l 328 -644 l 340 -657 b 510 -757 386 -707 445 -740 b 615 -770 546 -766 580 -770 z',\n },\n fClef: {\n x_min: 0,\n x_max: 776,\n y_min: -496,\n y_max: 216,\n ha: 712,\n o: 'm 402 -706 b 804 -405 592 -678 716 -566 b 876 -53 861 -298 874 -183 b 868 33 876 -32 873 1 b 560 311 845 217 723 311 b 524 310 549 311 536 311 b 131 134 373 297 239 242 b 17 -29 84 86 37 39 b 9 -89 12 -50 9 -71 b 112 -238 9 -154 43 -206 b 124 -243 117 -239 120 -242 b 186 -261 145 -255 166 -261 b 268 -228 215 -261 242 -249 b 351 -59 325 -181 351 -124 b 343 10 351 -36 348 -13 b 340 36 341 19 340 27 b 409 105 340 75 363 102 b 441 107 420 107 431 107 b 624 36 510 107 573 86 b 744 -200 688 -27 724 -109 b 747 -230 747 -210 747 -222 b 717 -323 747 -264 736 -292 b 608 -445 688 -370 654 -410 b 307 -541 518 -513 415 -541 l 213 -541 b 39 -521 154 -541 96 -539 b 0 -552 17 -514 0 -531 b 1 -564 0 -556 0 -560 b 17 -611 6 -580 10 -596 b 101 -694 35 -648 50 -684 b 288 -714 164 -707 225 -714 b 402 -706 325 -714 363 -711 z m 1018 92 b 1080 118 1041 91 1068 96 b 1117 219 1099 150 1117 180 b 1113 252 1117 229 1116 240 b 1045 288 1102 297 1068 276 b 1017 262 1028 297 1024 274 b 984 124 989 220 996 170 b 1008 91 979 108 986 91 z m 972 -281 b 1070 -148 1024 -279 1070 -210 b 1025 -105 1070 -105 1045 -112 b 989 -127 1004 -96 998 -114 b 949 -249 963 -164 963 -209 b 969 -281 943 -265 949 -281 z',\n },\n unpitchedPercussionClef1: {\n x_min: 0,\n x_max: 379.13761966945304,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 481 -360 b 507 -357 491 -360 500 -360 b 546 -295 541 -346 547 -325 b 536 79 543 -170 540 -46 b 523 311 533 157 534 235 b 475 359 518 340 508 359 b 425 360 459 359 442 360 b 400 359 416 360 409 360 b 337 294 348 353 340 347 l 337 -73 b 336 -264 337 -137 337 -200 b 343 -294 336 -274 338 -284 b 481 -360 359 -330 431 -360 z m 144 -341 b 207 -320 167 -341 189 -331 b 217 -301 215 -315 217 -308 b 210 -262 217 -289 210 -275 b 228 187 212 -112 209 37 b 228 287 228 220 229 253 b 174 353 228 336 222 343 b 120 359 157 357 138 359 b 48 357 96 359 72 356 b 17 323 29 357 19 344 b 7 120 16 255 9 187 b 6 -109 6 43 6 -33 l 6 -204 b 0 -251 6 -220 0 -235 b 3 -269 0 -256 0 -262 b 127 -340 24 -330 79 -328 b 144 -341 132 -341 138 -341 z',\n },\n '6stringTabClef': {\n x_min: 0,\n x_max: 438,\n y_min: -768,\n y_max: 767,\n ha: 1535,\n o: 'm 369 438 b 374 439 370 438 372 438 b 384 462 383 444 384 452 l 384 474 b 390 697 386 547 390 622 b 373 1002 390 799 390 901 l 533 1002 b 560 1001 541 1004 552 1001 b 573 1007 567 1001 572 1002 b 546 1050 579 1025 559 1038 b 536 1056 543 1053 539 1053 b 324 1104 472 1102 397 1104 b 72 1090 238 1104 154 1099 b 55 1093 66 1090 60 1092 b 37 1073 46 1093 37 1089 b 60 1045 37 1061 48 1051 b 203 1001 105 1022 151 1001 b 233 1004 213 1001 223 1002 b 246 1005 238 1004 243 1005 b 272 975 264 1005 272 996 l 272 965 b 258 596 264 842 265 719 b 315 474 253 540 272 504 l 343 455 b 369 438 351 448 357 438 z m 114 -320 b 127 -304 120 -320 124 -315 b 171 -174 141 -261 158 -219 b 222 -135 179 -147 196 -137 b 426 -122 289 -131 359 -128 b 498 -164 462 -120 482 -127 b 628 -301 521 -226 575 -264 b 631 -288 631 -295 631 -291 b 628 -269 631 -281 629 -276 b 569 -134 616 -220 589 -179 b 408 225 514 -14 462 107 b 314 357 384 274 351 318 b 278 380 298 372 288 379 b 251 351 268 380 261 372 b 4 -209 156 171 75 -17 b 0 -228 1 -215 0 -222 b 19 -258 0 -240 7 -249 b 102 -314 45 -279 75 -294 b 114 -320 107 -318 111 -320 z m 425 6 b 360 20 403 17 382 20 b 274 14 331 20 302 14 l 246 14 l 340 206 b 425 6 369 137 395 75 z m 245 -1106 b 281 -1104 256 -1106 269 -1106 b 511 -888 400 -1094 511 -1035 b 454 -688 511 -814 504 -744 b 448 -678 449 -685 448 -681 b 454 -667 448 -675 449 -671 b 504 -497 503 -619 507 -559 b 324 -288 500 -383 436 -308 b 295 -287 314 -287 304 -287 l 282 -287 b 115 -330 223 -287 168 -307 b 94 -366 102 -336 94 -348 l 94 -370 b 96 -435 96 -392 96 -413 b 73 -858 89 -576 71 -717 b 78 -919 73 -878 78 -899 b 72 -950 78 -930 76 -940 b 63 -992 66 -965 63 -978 b 66 -1015 63 -999 65 -1008 b 173 -1104 84 -1106 84 -1106 b 245 -1106 197 -1104 220 -1104 z m 161 -622 b 147 -618 156 -622 151 -621 b 140 -600 141 -612 140 -606 b 144 -564 140 -589 144 -575 b 143 -554 144 -560 144 -557 l 143 -546 b 220 -451 144 -467 143 -465 b 278 -445 239 -446 259 -444 b 418 -497 328 -445 376 -461 b 429 -516 426 -504 429 -510 b 415 -533 429 -521 423 -527 b 219 -608 357 -579 287 -590 b 215 -609 217 -608 216 -609 b 161 -622 197 -609 177 -622 z m 154 -953 b 130 -933 135 -953 130 -948 l 130 -865 l 128 -865 b 135 -788 130 -838 124 -808 b 203 -769 145 -769 180 -776 b 259 -762 223 -765 242 -762 b 441 -852 330 -762 386 -805 b 449 -867 446 -858 449 -863 b 436 -884 449 -874 444 -878 b 318 -942 402 -914 363 -935 b 154 -953 264 -950 209 -953 z',\n },\n timeSig0: {\n x_min: 20,\n x_max: 513,\n y_min: -358.159536277652,\n y_max: 359,\n ha: 717.159536277652,\n o: 'm 341 -516 b 420 -510 367 -516 395 -514 b 675 -338 533 -494 622 -448 b 737 -92 716 -256 734 -171 b 739 -35 739 -73 739 -53 b 680 305 739 86 720 207 b 400 517 622 449 537 517 b 337 514 380 517 359 517 b 289 507 321 511 305 513 b 91 317 192 477 127 412 b 29 9 50 212 29 108 b 217 -458 29 -157 88 -312 b 341 -516 251 -494 291 -518 z m 412 -452 b 359 -425 393 -452 376 -444 b 187 14 242 -301 179 -158 b 268 334 193 127 212 235 b 387 448 295 383 330 428 b 406 452 395 451 400 452 b 428 444 413 452 420 449 b 517 324 471 413 497 372 b 586 -29 560 222 586 86 b 556 -271 586 -112 585 -193 b 468 -422 536 -327 508 -377 b 412 -452 449 -442 431 -452 z',\n },\n timeSig1: {\n x_min: 20,\n x_max: 283,\n y_min: -364,\n y_max: 366,\n ha: 730,\n o: 'm 264 -524 b 357 -510 297 -524 325 -516 b 374 -490 369 -508 374 -501 b 380 -438 376 -472 380 -455 l 406 246 b 408 301 408 265 408 282 b 400 445 408 348 405 396 b 288 527 395 491 338 527 b 253 520 276 527 264 526 b 240 508 249 517 245 513 b 49 409 192 445 127 413 b 29 396 33 408 29 403 b 32 380 29 392 30 386 b 59 363 36 366 49 364 b 164 348 95 356 130 348 b 222 357 183 348 203 351 b 238 361 228 360 233 360 b 252 334 248 361 252 353 b 243 59 252 242 249 150 b 219 -490 229 -124 233 -307 b 264 -524 217 -516 232 -524 z',\n },\n timeSig2: {\n x_min: 20,\n x_max: 660.4636303241031,\n y_min: -378.7201231608281,\n y_max: 382,\n ha: 760.720123160828,\n o: 'm 99 -543 b 130 -533 111 -550 121 -540 b 255 -448 168 -501 213 -475 b 338 -425 282 -431 310 -425 b 392 -431 356 -425 374 -426 b 485 -462 423 -438 454 -451 b 648 -497 540 -482 595 -497 b 834 -441 711 -497 773 -480 b 950 -242 906 -395 958 -334 b 942 -210 950 -230 950 -215 b 912 -220 932 -204 920 -213 b 861 -264 894 -235 877 -248 b 775 -317 835 -289 808 -305 b 675 -334 742 -328 708 -334 b 510 -295 619 -334 563 -318 b 372 -264 465 -278 420 -264 b 305 -272 350 -264 328 -266 b 331 -242 318 -256 324 -249 b 490 -73 386 -187 438 -131 b 675 340 595 43 664 180 b 677 369 677 350 677 360 b 556 536 677 461 638 508 b 468 550 526 546 497 550 b 297 508 409 550 353 533 b 111 354 220 475 168 412 b 29 197 65 308 29 261 b 32 164 29 187 29 176 b 29 140 33 157 29 147 b 43 125 29 132 32 125 b 73 147 55 125 65 138 b 86 163 79 153 82 158 b 238 320 134 219 183 272 b 425 389 292 367 360 389 b 575 341 480 389 531 373 b 606 298 590 330 606 317 b 600 278 606 292 603 285 b 501 107 576 217 544 158 b 304 -104 439 33 372 -35 b 111 -356 230 -180 167 -265 b 84 -446 92 -386 84 -415 b 86 -481 84 -458 85 -469 b 88 -514 88 -491 88 -503 b 99 -543 89 -526 91 -537 z',\n },\n timeSig3: {\n x_min: 19.824321427094187,\n x_max: 540,\n y_min: -392,\n y_max: 392,\n ha: 784,\n o: 'm 216 -540 b 354 -564 264 -556 310 -564 b 605 -465 445 -564 530 -530 b 729 -161 697 -383 729 -275 b 724 -82 729 -135 727 -108 b 589 95 716 -1 670 62 b 523 114 567 102 546 108 b 750 418 606 213 677 315 b 778 503 769 444 778 472 b 773 540 778 514 776 527 b 750 564 769 557 762 564 b 736 562 746 564 742 563 b 641 552 704 553 672 552 b 402 554 562 552 481 554 l 346 554 b 84 546 258 554 170 554 b 36 501 55 543 40 531 b 29 412 30 472 32 442 b 52 384 27 393 32 384 l 56 384 b 210 392 107 389 158 392 l 602 392 b 354 108 523 285 445 192 b 246 -65 300 58 246 12 b 252 -108 246 -78 248 -92 l 252 -111 b 264 -141 251 -122 251 -135 b 291 -132 274 -145 284 -140 b 425 -72 328 -95 377 -84 b 475 -65 442 -68 459 -65 b 592 -108 517 -65 557 -79 b 645 -179 615 -125 645 -147 b 642 -194 645 -184 644 -189 b 485 -376 616 -278 569 -344 b 361 -399 444 -392 402 -399 b 151 -340 289 -399 219 -376 b 88 -275 122 -323 98 -310 b 71 -249 86 -268 85 -249 b 63 -251 68 -249 66 -249 b 36 -288 48 -255 36 -266 b 55 -423 33 -336 45 -377 b 101 -482 60 -448 78 -468 b 216 -540 138 -504 174 -526 z',\n },\n timeSig4: {\n x_min: 20,\n x_max: 633.0785282750762,\n y_min: -489.59088556716864,\n y_max: 491.18559127100053,\n ha: 980.7764768381692,\n o: 'm 608 -704 b 641 -684 622 -708 634 -696 b 667 -602 660 -660 662 -631 b 685 -190 683 -465 680 -327 l 685 -176 b 831 -127 736 -166 783 -148 b 912 0 901 -94 913 -76 b 886 53 912 36 904 52 b 848 40 877 53 864 49 l 838 36 b 687 -13 789 14 739 -3 b 681 177 687 50 684 114 b 672 338 678 230 677 285 b 654 373 671 350 672 373 b 622 340 636 373 624 361 b 615 262 621 314 613 288 b 619 -22 616 167 619 72 b 569 -22 602 -23 585 -23 b 305 -3 481 -16 395 -1 b 210 -9 274 -3 242 -4 b 301 163 242 52 268 108 b 513 552 377 288 459 412 b 536 652 526 585 536 618 b 533 683 536 662 534 672 b 520 707 531 691 531 707 b 487 693 508 708 494 704 b 474 668 482 684 477 677 b 384 490 454 603 418 547 b 253 281 343 419 295 351 b 73 -13 194 181 145 78 b 29 -108 50 -42 29 -72 b 37 -147 29 -121 32 -134 b 50 -186 43 -160 50 -173 b 68 -216 52 -207 56 -215 b 92 -207 73 -216 82 -213 b 288 -166 156 -180 220 -166 b 556 -186 377 -166 467 -180 b 586 -189 566 -187 576 -187 b 616 -186 596 -189 606 -189 b 606 -432 613 -268 612 -350 b 596 -625 603 -495 596 -559 b 598 -670 596 -641 596 -655 b 608 -704 598 -683 596 -700 z',\n },\n timeSig5: {\n x_min: 19.663871085403297,\n x_max: 583,\n y_min: -389,\n y_max: 389,\n ha: 778,\n o: 'm 132 -536 b 249 -560 168 -553 209 -559 b 507 -462 351 -560 454 -514 b 677 -183 588 -384 642 -289 b 694 -85 688 -150 694 -117 b 540 138 694 12 642 94 b 422 173 501 154 462 167 b 400 187 408 174 400 177 b 405 202 400 190 402 196 b 428 284 416 228 426 255 b 469 312 431 307 442 312 b 757 372 569 312 662 343 b 840 490 821 392 840 432 b 812 560 840 540 834 560 b 763 546 801 560 785 556 b 757 543 762 546 759 544 b 465 484 665 505 570 484 b 396 484 452 484 425 487 b 353 454 377 482 366 474 b 281 300 323 405 304 351 b 245 164 262 255 245 212 b 246 144 245 158 246 151 b 233 63 249 115 243 89 b 225 35 228 50 225 40 b 264 14 225 22 236 19 b 445 -26 325 7 387 0 b 569 -151 501 -52 547 -89 b 575 -180 573 -161 575 -170 b 527 -275 575 -217 547 -245 b 347 -367 484 -334 419 -367 b 261 -351 318 -367 289 -363 b 95 -300 206 -333 154 -307 b 55 -321 73 -297 65 -302 b 29 -468 29 -367 40 -419 b 56 -505 26 -482 36 -500 b 132 -536 82 -514 108 -524 z',\n },\n timeSig6: {\n x_min: 20,\n x_max: 565,\n y_min: -363,\n y_max: 363,\n ha: 726,\n o: 'm 390 -518 b 621 -458 469 -507 549 -494 b 814 -134 753 -390 814 -281 b 652 59 814 -16 750 58 b 580 48 629 59 606 55 b 233 -334 392 -9 276 -138 b 115 -228 181 -314 143 -278 b 98 -160 104 -206 98 -183 b 107 -109 98 -144 101 -127 b 167 37 124 -59 145 -12 b 508 340 236 189 347 292 b 575 353 530 347 553 353 b 648 327 600 353 625 346 b 665 320 654 321 661 320 b 687 336 674 320 681 325 b 703 405 697 359 703 382 b 684 472 703 429 697 451 b 593 523 664 504 631 521 b 576 521 588 523 582 523 b 297 403 472 508 380 465 b 115 177 217 344 164 264 b 29 -121 60 82 29 -17 b 53 -278 29 -173 36 -225 b 226 -497 82 -374 131 -454 b 347 -523 265 -514 305 -523 b 390 -518 361 -523 376 -521 z m 351 -357 b 312 -351 337 -356 320 -363 b 325 -315 304 -340 320 -327 b 543 -120 373 -222 448 -158 b 622 -104 570 -108 596 -102 b 717 -132 655 -104 687 -112 b 740 -167 732 -143 740 -153 b 730 -196 740 -176 737 -184 b 563 -321 690 -258 634 -300 b 359 -357 497 -341 428 -354 z',\n },\n timeSig7: {\n x_min: 20.3617407597707,\n x_max: 592,\n y_min: -345,\n y_max: 345,\n ha: 690,\n o: 'm 253 -497 b 318 -485 276 -497 297 -487 b 366 -441 348 -482 360 -468 b 487 -104 390 -323 433 -210 b 835 403 580 82 701 246 b 852 436 847 416 852 428 b 815 467 852 451 840 461 b 762 474 798 471 779 474 b 674 445 732 474 701 465 b 603 410 652 431 628 420 b 383 360 533 379 459 360 b 200 435 315 360 249 382 b 88 494 168 469 131 485 b 66 497 81 495 73 497 b 33 484 52 497 39 492 b 50 436 22 469 39 451 b 295 310 114 360 199 324 b 406 301 331 304 369 301 b 593 324 468 301 530 308 b 585 307 589 314 588 310 b 265 -249 451 137 338 -46 b 207 -442 242 -312 223 -377 b 204 -462 206 -449 204 -456 b 253 -497 204 -487 220 -497 z',\n },\n timeSig8: {\n x_min: 20,\n x_max: 504.15101530718516,\n y_min: -428,\n y_max: 428,\n ha: 856,\n o: 'm 265 -616 b 289 -615 274 -616 281 -616 b 710 -271 492 -592 657 -485 b 726 -148 721 -229 727 -187 b 585 108 726 -48 687 42 b 572 127 576 114 573 120 b 576 144 572 132 575 138 b 598 301 590 196 598 249 b 586 413 598 338 593 376 b 356 616 559 531 467 616 b 233 582 317 616 275 606 b 29 233 101 505 29 384 b 104 9 29 153 46 72 b 189 -48 127 -16 160 -27 b 92 -158 141 -73 114 -114 b 37 -343 63 -217 50 -279 b 33 -390 35 -359 33 -374 b 265 -616 33 -524 148 -616 z m 258 105 b 124 148 215 105 167 117 b 96 196 105 163 96 177 b 99 217 96 202 96 209 b 197 384 120 281 151 337 b 350 451 242 429 297 451 b 516 364 412 451 472 422 b 530 331 523 354 530 343 l 530 327 l 530 320 b 468 151 520 261 507 200 b 419 122 455 135 442 125 b 258 105 370 117 320 105 z m 328 -438 b 158 -276 233 -436 160 -359 b 166 -239 158 -264 161 -252 b 230 -157 176 -203 202 -179 b 367 -72 274 -125 320 -98 b 448 -49 396 -56 423 -49 b 562 -118 491 -49 528 -72 b 611 -251 590 -157 611 -199 b 569 -341 611 -288 595 -318 b 328 -438 500 -402 416 -432 z',\n },\n timeSig9: {\n x_min: 20,\n x_max: 494,\n y_min: -421,\n y_max: 421,\n ha: 842,\n o: 'm 235 -606 b 361 -564 275 -606 318 -593 b 619 -229 487 -482 566 -366 b 706 127 664 -114 694 4 b 711 233 708 163 711 197 b 700 346 711 271 708 308 b 389 606 658 517 530 606 b 351 605 376 606 364 606 b 56 272 171 586 56 441 b 96 98 56 216 69 156 b 334 -53 144 -3 238 -53 b 544 36 408 -53 484 -24 b 652 176 586 78 622 124 b 631 71 645 141 639 105 b 467 -302 599 -63 562 -196 b 271 -442 412 -364 354 -422 b 225 -448 255 -446 239 -448 b 95 -305 148 -448 98 -395 b 89 -255 95 -288 94 -271 b 73 -233 86 -246 85 -233 b 52 -248 65 -233 56 -239 b 29 -317 42 -271 30 -291 b 49 -448 29 -361 40 -405 b 235 -606 69 -541 144 -606 z m 340 104 b 144 209 264 108 194 141 b 127 258 132 225 127 240 b 137 297 127 271 130 284 b 366 449 184 396 269 449 b 517 408 415 449 467 436 b 595 348 546 392 572 372 b 616 305 608 336 616 321 b 609 281 616 298 613 289 b 340 104 557 184 477 104 z',\n },\n timeSigCommon: {\n x_min: 20,\n x_max: 585,\n y_min: -298,\n y_max: 294.49658092772603,\n ha: 592.496580927726,\n o: 'm 444 -405 b 829 -45 626 -346 740 -207 b 842 26 842 -23 842 1 b 821 58 842 39 841 58 b 795 40 811 58 802 48 b 765 3 785 29 773 16 b 469 -223 690 -104 596 -183 b 354 -242 431 -235 392 -242 b 180 -177 292 -242 235 -223 b 135 -99 154 -157 140 -131 b 132 -59 134 -85 132 -72 b 141 7 132 -37 135 -16 b 449 274 189 160 297 243 b 477 278 459 276 468 276 b 546 203 517 278 539 253 b 517 157 550 177 533 166 b 485 143 507 153 497 143 l 482 143 b 467 148 478 143 472 144 b 374 183 438 170 406 181 b 264 118 333 183 292 161 b 238 48 246 92 238 69 b 261 -9 238 29 245 10 b 383 -73 287 -39 337 -73 b 412 -68 392 -73 402 -72 b 631 164 526 -27 586 59 b 649 252 644 193 649 222 b 636 328 649 278 645 304 b 504 423 615 400 579 429 b 242 318 408 415 317 387 b 29 -158 104 190 29 33 b 30 -176 29 -164 29 -170 b 115 -364 42 -246 52 -315 b 307 -429 177 -410 240 -429 b 444 -405 351 -429 397 -420 z',\n },\n timeSigCutCommon: {\n x_min: 20,\n x_max: 695,\n y_min: -687.0379164869064,\n y_max: 687,\n ha: 1374.0379164869064,\n o: 'm 564 -989 b 595 -945 585 -991 589 -963 l 599 -922 b 605 -628 600 -824 603 -726 l 609 -399 b 878 -251 706 -363 798 -320 b 996 -85 932 -204 976 -153 b 1001 -63 998 -78 1001 -71 b 989 -46 1001 -56 998 -49 b 978 -43 985 -45 982 -43 b 950 -59 968 -43 959 -49 b 733 -216 894 -132 815 -177 b 611 -259 694 -235 652 -249 b 616 -20 612 -179 615 -99 b 680 29 642 -7 665 9 b 698 43 685 36 690 40 b 870 251 792 82 840 160 b 877 294 874 265 877 279 b 818 410 877 338 855 382 b 683 458 779 442 730 448 b 625 468 664 462 644 465 l 625 514 b 638 958 626 662 636 811 b 626 989 638 979 635 989 b 603 981 621 989 613 986 b 422 840 534 945 481 888 b 412 805 412 832 413 818 b 426 713 410 773 420 743 b 445 678 429 690 435 678 b 474 691 452 678 461 683 b 563 755 503 710 530 732 b 564 724 564 740 564 733 b 559 469 563 639 560 554 b 462 454 526 469 494 464 b 112 143 302 399 199 281 b 33 -94 66 71 45 -10 b 29 -148 30 -112 29 -131 b 105 -351 29 -223 52 -291 b 359 -455 171 -426 258 -451 b 517 -431 409 -451 464 -446 l 539 -422 l 539 -477 b 533 -739 536 -563 539 -651 b 530 -824 531 -768 530 -795 b 546 -948 530 -865 533 -907 b 564 -989 552 -962 543 -989 z m 410 -288 b 193 -197 328 -288 253 -264 b 141 -60 160 -161 141 -108 b 157 6 141 -35 147 -12 b 259 158 189 58 217 112 b 438 291 311 215 364 266 b 528 305 468 301 498 305 b 554 304 537 305 546 304 b 553 212 554 274 554 242 b 426 115 498 199 446 164 b 416 68 419 99 416 84 b 425 12 416 49 420 30 b 474 -39 432 -17 448 -32 b 513 -43 487 -42 498 -43 b 547 -40 524 -43 536 -42 l 543 -272 b 461 -285 516 -278 488 -281 b 410 -288 444 -287 426 -288 z m 694 197 b 668 203 685 197 677 199 b 621 216 654 210 638 215 b 622 294 622 242 622 268 b 706 268 651 287 678 278 b 746 235 721 261 734 249 b 752 222 749 230 752 226 b 743 213 752 219 749 215 b 694 197 727 206 711 197 z',\n },\n timeSigPlus: {\n x_min: 0,\n x_max: 661,\n y_min: -358,\n y_max: 358,\n ha: 716,\n o: 'm 605 -516 b 629 -490 624 -516 629 -507 b 628 -475 629 -485 628 -481 b 613 -131 624 -405 616 -174 b 612 -96 612 -114 612 -96 l 647 -98 b 897 -115 730 -99 814 -109 b 940 -89 919 -117 935 -109 b 952 -24 946 -69 952 -46 b 948 9 952 -14 950 -3 b 912 39 942 26 933 37 b 609 60 822 48 609 60 b 616 392 609 60 608 291 b 567 488 619 436 605 467 b 511 516 550 498 531 514 b 498 511 507 516 503 514 b 478 446 475 501 480 469 b 467 150 474 348 469 249 b 465 59 465 121 465 59 l 372 49 b 73 14 272 36 173 24 b 49 13 65 13 56 13 b 0 -33 9 13 0 6 b 60 -141 0 -117 6 -140 b 112 -135 73 -141 91 -140 b 413 -102 213 -125 314 -112 b 464 -98 441 -99 464 -98 l 464 -145 b 477 -456 464 -249 468 -353 b 526 -510 478 -488 491 -507 b 589 -513 546 -511 569 -510 b 605 -516 595 -514 600 -516 z',\n },\n timeSigPlusSmall: {\n x_min: 0,\n x_max: 418,\n y_min: -197,\n y_max: 199,\n ha: 396,\n o: 'm 301 -284 b 330 -238 320 -284 324 -255 b 348 -46 350 -176 341 -111 b 374 -20 351 -27 356 -23 b 481 -17 409 -16 445 -17 b 566 -9 510 -17 537 -16 b 602 3 579 -7 602 -16 b 566 29 602 19 582 24 b 526 33 553 32 539 33 b 384 39 478 36 432 39 b 356 62 363 39 356 42 l 356 68 b 359 177 359 104 359 141 l 359 251 b 341 287 359 264 361 285 b 311 255 324 287 314 272 b 310 228 311 246 310 236 l 301 69 b 275 39 301 49 295 39 l 271 39 b 210 40 251 40 230 40 b 167 39 196 40 181 40 b 89 40 141 37 115 40 b 24 30 68 40 46 37 b 0 17 17 27 0 30 l 0 13 b 27 -17 3 0 7 -13 b 91 -22 49 -22 71 -22 b 153 -22 115 -22 137 -20 l 275 -22 b 295 -40 289 -22 295 -27 l 295 -48 b 288 -235 288 -109 287 -171 b 287 -264 288 -243 287 -253 b 301 -284 287 -275 289 -284 z',\n },\n timeSigMinus: {\n x_min: 0,\n x_max: 662,\n y_min: -54,\n y_max: 55,\n ha: 109,\n o: 'm 39 -78 b 49 -76 42 -78 45 -76 b 452 -75 94 -75 272 -75 b 861 -76 632 -75 814 -76 b 953 -20 927 -79 953 -66 b 948 27 953 -7 950 9 b 946 37 948 30 948 35 b 896 79 940 63 929 79 b 471 78 827 78 648 78 l 42 78 b 0 37 14 78 0 69 b 23 -66 0 0 17 -32 b 39 -78 24 -75 32 -76 z',\n },\n timeSigParensRight: {\n x_min: 0,\n x_max: 274.26483738379414,\n y_min: -722.6326530612245,\n y_max: 725,\n ha: 1447.6326530612246,\n o: 'm 37 -1038 b 69 -1031 48 -1044 59 -1038 b 88 -1015 76 -1027 82 -1021 b 164 -886 120 -976 147 -933 b 333 -351 233 -711 292 -534 b 395 118 366 -204 399 -59 b 389 245 392 144 392 194 b 120 996 369 521 265 766 b 68 1044 99 1030 84 1044 b 19 988 50 1044 36 1024 b 0 922 7 965 0 945 b 20 858 0 901 6 881 b 259 215 141 660 236 449 b 271 -1 266 143 271 71 b 252 -239 271 -82 265 -161 b 148 -667 228 -384 183 -524 b 39 -1009 120 -785 66 -893 b 33 -1031 37 -1017 33 -1024 b 37 -1038 33 -1034 35 -1037 z',\n },\n timeSigParensRightSmall: {\n x_min: 0,\n x_max: 154.4025307335204,\n y_min: -422,\n y_max: 422,\n ha: 844,\n o: 'm 43 -608 b 60 -598 48 -608 53 -605 b 117 -511 82 -572 102 -543 b 222 23 193 -350 219 -177 b 213 166 225 55 216 109 b 115 531 206 294 174 416 b 45 603 99 562 76 588 b 30 608 39 606 35 608 b 10 598 23 608 17 603 b 0 546 3 590 0 570 b 23 451 0 507 9 458 b 102 351 66 429 84 390 b 167 42 150 252 167 148 b 163 -49 167 12 166 -19 b 35 -449 151 -192 121 -330 b 14 -504 22 -467 14 -485 b 17 -527 14 -511 16 -520 l 30 -590 b 43 -608 33 -603 37 -608 z',\n },\n timeSigParensLeft: {\n x_min: 0.5555555555555556,\n x_max: 399.6216117372966,\n y_min: -728,\n y_max: 728,\n ha: 1456,\n o: 'm 562 -1048 b 573 -1043 566 -1048 570 -1047 b 553 -988 582 -1025 564 -1004 b 472 -884 527 -952 497 -920 b 210 -354 366 -717 275 -541 b 148 -6 170 -240 148 -124 b 160 148 148 45 153 96 b 315 678 189 331 242 508 b 431 901 350 755 380 834 b 459 950 451 926 461 939 b 435 995 459 962 451 972 b 364 1048 405 1034 383 1048 b 305 996 343 1048 325 1028 b 127 624 226 881 174 753 b 1 30 56 432 9 235 b 1 -32 1 9 0 -12 b 180 -629 13 -245 92 -438 b 363 -936 230 -739 298 -835 b 526 -1041 402 -995 448 -1041 b 562 -1048 537 -1040 552 -1048 z',\n },\n timeSigParensLeftSmall: {\n x_min: 0,\n x_max: 173.45497224367904,\n y_min: -405,\n y_max: 404,\n ha: 809,\n o: 'm 197 -583 b 222 -553 212 -582 219 -566 b 229 -497 226 -534 229 -516 b 213 -425 229 -472 225 -448 b 102 -177 173 -344 132 -262 b 62 30 78 -111 58 -42 b 91 183 66 82 75 134 b 215 426 118 271 156 356 b 249 552 246 465 252 505 b 230 582 249 563 246 582 b 197 563 219 582 206 576 b 71 356 144 500 105 429 b 0 50 26 259 3 158 b 13 -112 4 -3 7 -58 b 176 -559 29 -275 105 -416 b 196 -583 180 -569 186 -583 z',\n },\n noteheadDoubleWhole: {\n x_min: -0.4444444444444444,\n x_max: 614.1875,\n y_min: -223.03296670127517,\n y_max: 223,\n ha: 446.0329667012752,\n o: 'm 35 -321 b 62 -266 58 -318 58 -288 l 62 -194 b 63 50 62 -114 63 -32 b 60 189 63 96 63 143 b 43 300 59 226 60 265 b 29 321 40 308 39 321 l 26 321 b 0 292 13 318 0 310 b 0 248 0 278 -1 262 b 6 147 4 215 6 181 b 4 48 6 114 4 81 b 6 0 4 32 6 16 b 7 -36 7 -12 7 -24 l 7 -52 b 6 -156 7 -86 6 -121 b 19 -275 6 -196 9 -236 b 35 -321 23 -291 16 -323 z m 847 -314 b 871 -288 860 -315 867 -300 b 884 -187 881 -255 886 -222 b 876 115 878 -86 876 14 b 877 255 876 161 876 209 b 868 291 877 268 873 279 b 855 304 867 301 863 304 b 844 301 852 304 848 304 b 822 265 825 292 822 278 b 824 251 822 259 822 255 b 822 170 822 225 822 197 l 822 -20 b 835 -284 827 -86 825 -186 b 847 -314 837 -295 835 -311 z m 757 -291 b 793 -171 796 -255 792 -212 b 795 -49 795 -131 795 -91 b 786 207 795 36 791 121 b 779 240 786 217 783 229 b 766 258 776 246 776 258 b 762 256 765 258 763 256 b 739 236 752 253 740 252 b 733 177 737 216 732 197 b 737 20 737 125 739 73 l 737 -107 b 740 -202 737 -138 739 -170 b 757 -291 740 -230 743 -261 z m 128 -261 b 144 -251 135 -264 141 -256 b 158 -203 156 -236 157 -220 b 161 -137 161 -181 161 -158 b 157 30 161 -81 157 -26 b 158 76 157 45 157 60 l 158 101 b 156 225 158 141 158 183 b 137 253 156 235 154 253 l 134 253 b 109 222 120 251 109 242 b 104 91 108 179 104 134 b 108 -58 104 42 109 -9 b 107 -105 108 -73 108 -89 b 105 -127 107 -112 107 -120 b 118 -245 105 -167 114 -204 b 128 -261 118 -252 121 -259 z m 488 -242 b 693 -79 595 -249 685 -166 l 693 -55 b 690 0 693 -36 691 -17 b 540 187 684 84 621 164 b 449 200 508 196 480 200 b 210 104 363 200 282 163 b 186 56 196 92 186 76 b 207 -82 186 9 192 -37 b 300 -204 225 -132 248 -181 b 488 -242 356 -229 415 -240 z m 490 -88 b 449 -86 477 -88 464 -88 b 287 -56 399 -85 341 -78 b 258 -33 275 -52 258 -48 b 282 -7 258 -20 272 -13 b 458 43 340 23 399 43 b 580 14 497 43 537 35 b 618 -20 606 1 619 -9 b 592 -58 618 -30 609 -42 b 490 -88 562 -82 528 -88 z',\n },\n noteheadWhole: {\n x_min: 0,\n x_max: 380.16649762501584,\n y_min: -186.17102907059297,\n y_max: 165,\n ha: 351.17102907059297,\n o: 'm 547 40 b 223 -268 543 -151 367 -259 b 102 -233 180 -271 143 -248 l 62 -216 b 0 -127 22 -197 0 -166 b 6 -91 0 -115 1 -104 b 122 141 33 -9 69 71 b 327 238 170 204 249 238 b 514 158 397 238 467 212 b 547 40 544 125 549 84 z m 248 -107 b 384 -63 295 -102 341 -88 b 426 -23 402 -53 415 -40 b 435 3 432 -14 435 -6 b 413 32 435 14 428 24 b 301 73 376 49 343 73 b 272 69 291 73 282 72 b 121 -35 207 53 157 20 b 111 -58 117 -42 111 -50 b 125 -75 111 -65 115 -71 b 248 -107 164 -89 202 -107 z',\n },\n noteheadHalf: {\n x_min: 0,\n x_max: 334,\n y_min: -174,\n y_max: 175,\n ha: 349,\n o: 'm 480 56 b 167 -251 478 -115 331 -251 b 94 -242 143 -251 118 -248 b 9 -141 43 -229 20 -192 b 0 -68 3 -115 0 -91 b 284 249 0 95 127 200 b 304 252 289 251 297 252 b 481 78 374 252 481 170 b 480 56 481 71 481 63 z m 213 -102 b 399 6 274 -81 341 -48 b 402 17 400 7 402 13 b 399 27 402 22 400 26 b 311 94 373 53 353 88 b 292 95 305 95 300 95 b 130 27 230 95 181 55 b 69 -62 98 9 62 -29 b 161 -98 76 -98 128 -91 b 213 -102 174 -101 186 -101 z',\n },\n noteheadBlack: {\n x_min: 0,\n x_max: 334.04644433966797,\n y_min: -164,\n y_max: 164,\n ha: 328,\n o: 'm 112 -233 b 141 -236 122 -235 131 -236 b 481 104 279 -236 485 -48 b 403 222 477 141 478 192 b 334 236 382 232 359 236 b 1 -59 180 236 13 59 b 0 -85 1 -68 0 -76 b 112 -233 0 -157 32 -215 z',\n },\n noteheadXDoubleWhole: {\n x_min: 0,\n x_max: 730,\n y_min: -266,\n y_max: 267,\n ha: 533,\n o: 'm 1018 -373 b 1032 -361 1025 -376 1028 -367 b 1051 -287 1047 -338 1051 -314 b 1050 -252 1051 -276 1051 -264 b 1030 186 1031 -107 1037 40 b 1031 266 1028 213 1031 239 b 1018 363 1031 300 1028 331 b 1005 384 1015 373 1017 384 l 1004 384 b 984 363 992 384 986 373 b 982 343 982 356 982 348 b 981 235 982 307 981 271 b 996 -285 981 60 986 -112 b 1009 -360 998 -311 1005 -336 b 1018 -373 1011 -364 1014 -373 z m 16 -383 b 49 -328 39 -367 48 -350 b 69 56 58 -202 62 -73 b 75 212 72 107 72 160 b 78 278 76 233 78 255 b 59 382 78 312 73 347 b 29 328 33 372 29 350 b 13 -29 29 209 23 88 b 3 -222 7 -95 10 -157 b 0 -265 1 -236 0 -252 b 16 -383 0 -304 6 -343 z m 923 -314 b 955 -240 948 -289 952 -265 b 965 -65 962 -181 965 -125 b 963 0 965 -45 965 -22 b 962 111 960 37 962 73 b 953 240 962 154 960 197 b 939 275 952 253 952 275 b 913 239 924 274 913 258 b 913 173 914 217 913 194 b 914 135 913 160 913 147 b 920 27 919 98 920 63 b 909 -128 920 -26 917 -78 b 906 -179 906 -147 906 -163 b 923 -314 906 -223 913 -266 z m 121 -301 b 143 -272 134 -301 138 -284 b 147 -255 145 -268 145 -261 b 173 160 161 -117 166 22 b 173 233 173 184 174 209 b 157 264 171 243 171 264 b 137 235 143 264 138 249 b 132 207 135 226 132 216 b 121 43 128 153 124 96 b 105 -186 117 -36 105 -111 b 111 -269 105 -215 107 -242 b 121 -301 114 -281 104 -300 z m 210 -238 b 376 -193 274 -239 327 -226 b 471 -134 406 -173 439 -154 b 534 -94 491 -120 513 -107 b 671 -192 579 -127 624 -161 b 733 -226 691 -204 708 -228 b 746 -225 737 -228 742 -226 b 845 -204 782 -226 814 -213 b 868 -194 854 -203 865 -203 b 852 -173 871 -183 860 -179 b 661 -40 789 -128 724 -84 b 642 -27 654 -36 648 -32 b 861 114 716 17 791 63 b 886 132 870 120 886 121 l 886 137 b 852 164 883 151 867 161 b 776 176 827 170 801 176 b 685 145 744 176 714 168 b 530 45 638 107 583 76 b 403 132 487 73 444 101 b 279 176 364 161 324 171 b 223 160 259 176 229 176 b 258 115 215 141 242 127 b 431 -17 314 71 372 26 b 173 -196 341 -73 253 -130 b 157 -209 168 -200 157 -203 b 158 -215 157 -212 157 -215 b 183 -236 166 -223 168 -235 b 210 -238 194 -236 206 -239 z m 768 -207 b 533 -40 687 -150 609 -94 b 321 -173 462 -85 392 -130 b 261 -194 304 -184 287 -196 b 239 -193 253 -196 246 -194 b 387 -95 294 -157 340 -125 b 505 -20 426 -71 465 -45 l 484 -4 b 353 89 441 27 396 56 b 320 115 341 96 330 107 b 297 141 311 124 297 132 b 300 148 297 144 298 145 b 336 135 311 164 324 143 b 528 -4 400 89 464 42 l 723 121 b 770 140 737 131 753 138 b 792 132 779 140 789 141 b 778 115 795 122 783 120 b 586 -6 714 75 651 35 b 557 -24 576 -13 567 -19 b 726 -147 613 -66 670 -109 b 768 -207 744 -161 765 -173 z',\n },\n noteheadXWhole: {\n x_min: 0,\n x_max: 506,\n y_min: -143.0823320899293,\n y_max: 144,\n ha: 287.0823320899293,\n o: 'm 53 -206 b 219 -163 117 -207 170 -196 b 314 -102 249 -141 282 -122 b 377 -63 334 -89 356 -76 b 514 -161 422 -96 468 -128 b 576 -196 534 -174 552 -196 b 589 -193 580 -196 585 -196 b 688 -174 625 -194 657 -181 b 711 -158 698 -171 711 -173 b 696 -143 711 -151 701 -147 b 503 -9 632 -98 567 -52 l 485 4 b 704 145 559 49 634 95 b 729 164 711 150 729 151 l 729 168 b 696 196 726 183 710 193 b 621 207 671 202 645 207 b 528 177 589 207 557 200 b 373 76 480 140 426 108 b 246 164 330 104 287 132 b 122 206 207 193 167 203 b 66 192 102 207 72 207 b 99 147 58 173 85 158 b 274 14 157 102 215 58 b 16 -164 184 -42 96 -98 b 0 -179 12 -168 0 -170 b 1 -183 0 -180 0 -183 b 26 -204 6 -193 12 -204 b 53 -206 37 -206 49 -206 z m 611 -177 b 376 -9 530 -118 452 -63 l 164 -143 b 104 -164 147 -154 130 -164 b 82 -161 96 -164 89 -164 b 230 -65 137 -125 183 -95 l 347 12 b 327 26 341 16 334 22 l 196 121 b 163 147 184 128 173 137 b 140 173 154 154 140 163 b 143 180 140 176 141 177 b 179 166 154 194 167 174 l 372 27 l 566 153 b 613 171 580 161 596 170 b 635 160 624 171 635 174 b 621 147 635 153 626 150 l 429 24 b 400 6 419 19 409 13 b 569 -117 456 -35 513 -75 b 611 -177 588 -130 608 -143 z',\n },\n noteheadXHalf: {\n x_min: 0,\n x_max: 421,\n y_min: -145.51844828189743,\n y_max: 151,\n ha: 296.51844828189746,\n o: 'm 490 -209 b 539 -207 505 -207 521 -207 b 606 -209 560 -207 583 -209 b 598 -196 602 -203 600 -199 l 406 -19 l 540 130 b 547 144 546 135 547 140 b 536 156 547 148 543 153 b 488 192 518 166 503 176 b 416 217 471 209 444 217 b 323 180 380 217 344 204 l 264 115 b 239 138 256 122 248 131 b 33 197 180 196 108 200 b 3 186 23 197 6 193 b 19 154 -1 174 10 163 b 171 12 69 107 120 59 b 19 -157 120 -45 69 -101 b 0 -177 14 -163 0 -166 b 1 -181 0 -179 0 -180 b 39 -203 9 -197 22 -203 l 186 -203 b 197 -202 190 -202 193 -200 l 213 -202 b 262 -180 228 -202 246 -199 l 314 -122 b 490 -209 363 -170 412 -216 z m 435 -148 b 291 -30 379 -112 337 -69 l 213 -118 b 190 -137 207 -125 202 -137 b 145 -111 173 -130 154 -127 b 160 -79 137 -98 151 -88 b 238 16 184 -48 212 -16 b 141 99 204 43 173 72 l 124 117 b 115 132 121 121 115 127 b 118 137 115 134 117 137 b 141 132 127 147 135 138 l 253 36 b 347 150 285 75 315 112 b 370 164 354 160 363 163 b 403 145 382 164 393 156 b 416 127 412 140 416 132 b 405 102 416 118 412 111 l 307 -10 b 413 -105 343 -42 379 -73 b 435 -148 425 -115 436 -125 z',\n },\n noteheadXBlack: {\n x_min: 0,\n x_max: 289,\n y_min: -156,\n y_max: 157,\n ha: 313,\n o: 'm 23 -225 b 69 -204 40 -223 56 -219 b 137 -131 92 -180 115 -157 l 209 -50 b 377 -197 264 -101 321 -148 b 403 -210 384 -203 393 -210 l 408 -210 b 416 -192 416 -207 416 -199 l 416 -186 b 403 -148 416 -171 413 -158 b 344 -81 384 -125 367 -101 b 252 -1 312 -55 282 -29 b 377 157 297 49 340 101 b 402 202 387 170 402 187 b 395 217 402 207 400 213 b 376 226 389 223 382 226 b 334 192 360 226 346 204 b 206 42 289 143 248 94 b 96 161 167 81 131 120 b 60 193 86 174 76 189 b 33 206 52 196 42 206 b 22 199 29 206 26 204 b 10 173 14 190 10 181 b 22 147 10 166 14 157 b 148 7 62 98 104 52 b 164 -7 154 1 158 -3 b 10 -189 111 -66 55 -122 b 0 -212 6 -197 0 -203 b 1 -217 0 -213 0 -216 b 23 -225 4 -226 14 -222 z',\n },\n noteheadCircleXDoubleWhole: {\n x_min: 0,\n x_max: 437,\n y_min: -220,\n y_max: 219.03988406941295,\n ha: 439.03988406941295,\n o: 'm 10 -304 b 40 -206 43 -275 37 -239 b 55 168 48 -81 50 45 b 53 269 56 202 55 236 b 33 315 52 287 46 314 b 3 269 9 317 4 291 b 0 239 1 259 0 249 l 0 -196 b 10 -304 1 -232 7 -268 z m 592 -317 b 621 -220 619 -287 621 -253 b 622 -121 622 -187 622 -154 b 625 -20 622 -88 622 -55 b 629 101 628 20 629 60 b 628 220 629 141 628 181 b 618 253 628 232 625 243 b 608 275 613 259 616 274 b 602 272 606 275 603 275 b 575 249 590 269 575 266 l 575 246 b 573 222 575 239 573 230 l 573 -50 b 592 -317 575 -137 570 -225 z m 79 -285 b 114 -6 96 -261 109 -131 b 117 -63 114 -24 114 -45 b 249 -242 124 -151 166 -212 b 324 -256 275 -252 300 -256 b 504 -137 406 -256 478 -209 b 505 -265 504 -180 505 -222 b 513 -282 505 -269 510 -275 b 533 -248 526 -272 528 -261 b 540 -174 539 -223 540 -199 l 540 -127 b 553 207 546 -16 549 95 b 543 232 553 216 554 232 b 518 207 530 233 518 222 b 511 118 520 177 510 148 l 511 92 b 330 216 488 174 420 223 b 301 215 320 216 311 216 b 122 65 202 204 151 163 b 114 9 117 46 114 27 b 115 75 114 32 115 53 b 101 248 115 157 109 228 b 76 206 78 242 76 225 l 76 91 b 75 -26 76 52 76 13 b 69 -189 72 -81 66 -134 b 79 -285 71 -219 76 -249 z m 317 4 b 219 109 285 40 252 75 l 209 120 b 331 153 248 141 289 151 b 420 137 360 153 390 147 b 446 120 435 131 442 127 l 436 108 l 328 -7 z m 215 -131 b 216 -101 215 -122 215 -114 b 219 -45 217 -82 219 -63 b 197 94 219 3 213 49 l 197 95 b 199 94 199 95 199 94 l 310 -27 b 233 -108 285 -55 259 -81 z m 442 -141 b 432 -122 441 -134 436 -128 l 344 -26 l 426 58 l 445 81 b 444 75 445 78 444 76 b 428 -13 433 46 428 16 b 446 -104 428 -45 433 -75 b 452 -122 449 -111 452 -117 b 442 -141 452 -131 448 -137 z m 323 -190 b 272 -180 305 -187 288 -184 b 217 -158 239 -173 225 -168 l 327 -45 b 330 -48 328 -46 328 -48 b 432 -150 363 -82 393 -121 b 323 -190 400 -174 364 -189 z',\n },\n noteheadCircleXWhole: {\n x_min: 0,\n x_max: 323,\n y_min: -190,\n y_max: 184.44625787787314,\n ha: 374.4462578778731,\n o: 'm 156 -258 b 240 -274 184 -268 213 -274 b 455 -101 347 -274 441 -202 b 465 19 462 -60 465 -22 b 464 71 465 36 465 52 b 246 265 455 194 370 274 b 216 264 236 265 226 264 b 12 94 102 251 45 203 b 0 13 3 66 1 40 b 4 -55 0 -10 3 -32 b 156 -258 14 -154 60 -222 z m 245 10 b 233 23 242 14 238 19 b 121 144 196 65 158 104 l 109 154 b 249 192 156 179 202 192 b 351 174 284 192 317 186 b 380 154 366 168 376 163 b 379 153 380 154 380 153 b 369 141 376 148 372 145 b 245 10 327 98 287 53 z m 115 -131 b 118 -96 117 -121 117 -111 b 121 -27 120 -73 121 -50 b 98 124 121 24 115 75 b 96 127 96 125 98 125 b 99 125 98 127 98 125 b 225 -12 140 79 181 33 l 138 -105 b 115 -131 131 -114 122 -121 z m 376 -143 b 363 -121 374 -134 369 -128 b 265 -12 331 -85 298 -48 l 357 85 b 379 111 364 94 372 101 b 377 102 379 108 377 105 b 359 4 364 71 359 37 b 382 -99 359 -32 366 -66 b 387 -121 384 -108 386 -115 b 376 -143 387 -130 382 -135 z m 239 -197 b 181 -187 220 -194 200 -192 b 121 -161 145 -177 128 -173 b 243 -33 161 -118 203 -75 l 248 -36 b 364 -153 285 -75 320 -118 b 239 -197 327 -180 287 -197 z',\n },\n noteheadCircleXHalf: {\n x_min: 0,\n x_max: 309,\n y_min: -179,\n y_max: 179,\n ha: 358,\n o: 'm 232 -258 b 435 -94 328 -258 412 -196 b 445 6 444 -60 445 -27 b 444 69 445 27 445 48 b 258 258 439 170 374 258 l 230 258 l 207 256 b 14 107 111 248 45 202 b 0 12 4 75 0 43 b 12 -82 0 -20 4 -50 b 144 -242 27 -160 69 -212 b 232 -258 174 -252 203 -258 z m 192 60 b 115 141 166 88 141 115 l 108 150 b 226 189 141 173 186 189 b 253 186 236 189 245 187 b 305 180 271 183 288 183 b 192 60 268 140 229 101 z m 56 -78 b 45 6 43 -56 45 -23 b 65 84 49 39 50 45 b 85 121 72 96 78 107 b 95 124 88 124 92 127 b 171 39 120 95 145 68 z m 360 -132 b 348 -112 359 -124 353 -118 l 300 -58 l 387 37 b 410 63 397 48 405 56 b 413 26 412 52 413 40 b 360 -132 413 -42 393 -95 z m 232 -183 b 184 -177 217 -183 202 -181 l 281 -78 b 348 -143 301 -101 323 -122 b 232 -183 318 -168 279 -183 z',\n },\n noteheadCircleX: {\n x_min: 0,\n x_max: 344,\n y_min: -179,\n y_max: 175.12551922594866,\n ha: 354.12551922594866,\n o: 'm 99 -210 b 236 -258 137 -242 186 -258 b 418 -183 305 -258 374 -230 b 495 33 475 -120 495 -48 b 494 66 495 45 494 55 b 302 252 487 183 405 256 b 181 243 262 249 222 248 b 46 171 128 236 79 219 b 0 19 14 127 0 73 b 99 -210 0 -68 35 -156 z m 245 42 l 124 156 b 200 176 145 166 170 173 b 337 183 245 181 291 184 b 377 176 351 183 364 180 b 245 42 333 131 288 86 z m 392 -99 l 285 3 l 400 121 b 418 154 409 131 418 140 b 465 50 448 130 465 94 b 405 -112 462 -17 439 -73 z m 89 -120 b 48 0 56 -82 48 -42 b 89 112 48 35 59 76 b 109 101 96 111 102 108 l 210 7 l 187 -17 b 89 -120 151 -53 125 -82 z m 176 -183 b 127 -163 158 -179 141 -171 l 252 -32 l 372 -144 b 233 -189 334 -173 285 -189 b 176 -183 215 -189 196 -187 z',\n },\n noteheadCircledDoubleWhole: {\n x_min: 0,\n x_max: 672,\n y_min: -291,\n y_max: 291,\n ha: 582,\n o: 'm 27 -419 b 43 -369 37 -403 43 -387 b 49 -82 45 -272 49 -177 b 50 370 50 69 50 219 b 30 419 50 389 50 419 b 7 369 7 419 7 389 b 0 -284 4 151 1 -66 b 16 -418 0 -328 10 -373 z m 945 -374 b 968 -282 963 -343 968 -312 b 966 -245 968 -269 968 -258 b 958 -45 959 -179 962 -111 b 948 262 949 56 952 160 b 936 377 946 301 946 340 b 922 399 933 386 933 399 l 919 397 b 897 374 909 396 899 389 b 894 308 897 353 893 331 b 904 120 899 246 903 183 b 913 -111 907 43 909 -35 b 927 -297 916 -173 919 -235 b 945 -374 930 -320 927 -347 z m 95 -347 b 120 -292 115 -325 117 -310 b 124 -223 122 -269 124 -246 b 122 -141 124 -196 122 -168 b 121 -85 121 -122 121 -104 b 462 -297 170 -209 300 -297 b 727 -219 543 -294 639 -271 b 828 -118 773 -190 808 -157 b 842 -268 831 -168 834 -219 b 851 -288 844 -275 840 -287 b 865 -272 861 -289 863 -279 b 873 -225 871 -256 873 -240 b 873 -171 873 -207 871 -190 b 858 196 868 -48 863 75 b 848 295 857 229 854 262 b 840 315 848 301 850 315 l 837 315 b 816 295 827 314 816 307 b 809 216 815 268 808 243 b 815 102 812 179 814 140 b 672 295 780 176 733 240 b 500 370 621 340 566 370 b 436 361 480 370 459 367 b 120 95 288 321 183 233 l 120 256 b 115 287 120 266 118 276 b 104 305 112 292 115 305 l 101 305 b 82 284 91 304 82 297 b 76 216 81 262 76 239 b 84 -253 78 59 79 -96 b 95 -347 84 -282 89 -311 z m 780 -33 b 779 -24 780 -30 779 -27 b 704 92 766 22 743 62 b 544 173 655 128 599 147 b 400 206 497 194 448 204 b 307 193 369 206 338 202 b 202 118 264 181 226 153 b 235 168 212 135 222 151 b 505 337 302 262 396 312 b 523 338 511 337 517 338 b 611 288 559 338 586 312 b 763 62 678 225 733 151 b 780 -33 776 26 782 -4 z m 435 -88 b 337 -23 387 -88 354 -65 b 333 6 334 -14 333 -6 b 366 86 333 35 344 66 b 456 122 390 111 423 121 b 602 27 517 122 582 88 b 606 1 605 19 606 10 b 575 -49 606 -20 596 -36 b 435 -88 530 -76 481 -82 z m 441 -269 b 194 -96 327 -262 249 -194 b 167 1 176 -62 167 -30 b 177 59 167 22 171 42 b 174 39 176 52 174 46 b 266 -104 174 -27 210 -73 b 511 -151 346 -148 435 -144 l 552 -151 b 740 -104 616 -145 683 -141 b 776 -66 756 -94 769 -81 b 700 -174 766 -105 740 -140 b 441 -269 632 -232 533 -268 z',\n },\n noteheadCircledWhole: {\n x_min: -50,\n x_max: 472,\n y_min: -231.00750990437078,\n y_max: 232,\n ha: 463.00750990437075,\n o: 'm 289 -333 b 553 -255 370 -330 465 -307 b 680 -62 635 -206 680 -138 b 662 22 680 -36 674 -7 b 500 259 626 112 573 193 b 327 334 448 304 393 334 b 264 325 307 334 287 331 b -59 49 111 284 4 193 b -72 -19 -68 26 -72 4 b 289 -333 -72 -192 84 -334 z m 608 -69 b 605 -60 606 -66 606 -63 b 530 56 592 -14 570 26 b 372 137 482 92 425 111 b 228 170 324 158 275 168 b 134 157 196 170 166 166 b 29 82 91 145 53 117 b 60 132 37 99 49 115 b 333 301 128 226 223 276 b 350 302 338 301 344 302 b 438 252 386 302 413 276 b 590 26 505 189 560 115 b 608 -69 603 -10 608 -40 z m 262 -124 b 164 -59 215 -124 180 -101 b 160 -32 161 -50 160 -42 b 193 50 160 -3 171 30 b 284 86 217 75 251 85 b 429 -9 344 86 409 52 b 433 -36 432 -17 433 -26 b 402 -85 433 -56 423 -72 b 262 -124 357 -112 307 -118 z m 268 -305 b 22 -132 154 -298 76 -230 b -6 -33 3 -98 -6 -65 b 3 23 -6 -14 -3 6 b 1 3 1 16 1 10 b 94 -140 1 -63 37 -109 b 338 -187 173 -184 261 -180 l 379 -187 b 566 -140 444 -181 510 -177 b 602 -102 582 -130 595 -117 b 526 -210 592 -141 567 -176 b 268 -305 459 -268 360 -304 z',\n },\n noteheadCircledHalf: {\n x_min: -50,\n x_max: 393,\n y_min: -175,\n y_max: 175,\n ha: 350,\n o: 'm 540 39 b 408 187 503 94 464 148 b 259 252 356 223 301 252 b 35 192 160 252 95 229 b -68 50 -17 160 -53 112 b -72 13 -71 37 -72 24 b 69 -204 -72 -79 -1 -161 b 246 -252 125 -238 186 -252 b 500 -164 336 -252 426 -219 b 566 -42 543 -132 566 -88 b 540 39 566 -14 557 14 z m 9 -42 b 12 -68 10 -50 10 -59 b -7 6 3 -46 -4 -22 b 131 189 1 98 55 153 b 243 220 167 206 204 215 b 261 222 249 222 255 222 b 377 161 308 222 341 189 b 435 89 402 141 420 117 b 431 92 433 89 432 91 b 346 120 402 102 372 107 b 253 143 314 135 282 143 b 85 79 193 143 138 115 b 9 -42 45 52 10 13 z m 356 39 b 343 1 356 24 351 12 b 206 -111 304 -46 259 -84 b 181 -118 196 -115 189 -118 b 156 -71 163 -118 154 -102 b 238 35 164 -22 199 9 b 324 66 264 52 294 59 b 356 39 348 71 356 62 z m 488 -78 b 392 -176 471 -125 433 -154 b 246 -225 346 -200 297 -217 b 230 -226 240 -226 235 -226 b 157 -204 203 -226 180 -215 b 78 -154 128 -190 101 -174 b 232 -184 128 -171 180 -184 b 344 -161 269 -184 307 -179 b 491 -39 405 -135 455 -94 b 500 -23 495 -33 497 -29 b 488 -78 500 -40 494 -59 z',\n },\n noteheadCircledBlack: {\n x_min: -70,\n x_max: 326,\n y_min: -168,\n y_max: 192,\n ha: 360,\n o: 'm 176 -239 b 190 -242 180 -240 186 -240 b 262 -232 213 -242 238 -235 b 469 -19 384 -225 469 -131 b 467 22 469 -6 468 9 b 383 194 455 86 436 151 b 183 276 315 249 251 275 b 32 236 134 276 85 264 b -94 88 -30 207 -75 160 b -101 30 -98 69 -101 49 b 176 -239 -101 -107 9 -251 z m 177 -212 b -30 -27 81 -213 -13 -131 b -33 17 -33 -13 -33 3 b 127 226 -33 111 14 187 b 194 239 151 233 173 238 b 301 203 232 239 266 226 b 364 134 330 184 350 160 b 233 181 341 160 279 180 b 192 171 216 181 202 179 b 13 1 117 131 46 86 b 3 -48 6 -17 3 -33 b 60 -115 3 -79 20 -101 b 203 -135 105 -131 151 -138 b 229 -138 212 -137 220 -137 b 295 -122 251 -138 274 -135 b 400 -33 337 -99 373 -71 b 228 -206 393 -125 330 -192 b 177 -212 209 -209 192 -213 z',\n },\n noteheadDoubleWholeSquare: {\n x_min: 0,\n x_max: 474,\n y_min: -209.39230484541326,\n y_max: 211,\n ha: 420.39230484541326,\n o: 'm 648 -301 b 668 -287 658 -304 665 -295 b 683 -209 678 -262 683 -235 b 677 258 681 -55 678 102 b 672 284 677 266 677 276 b 661 304 670 291 672 304 l 658 304 b 635 279 647 301 635 297 b 629 240 635 266 629 252 l 629 236 b 631 225 629 232 631 228 b 583 194 631 197 611 194 l 528 194 b 125 207 393 194 259 202 b 89 207 114 209 101 206 b 63 210 79 207 71 207 b 52 229 55 213 52 220 b 55 258 52 238 55 248 b 53 266 55 261 55 264 b 36 298 48 276 53 298 l 35 298 b 4 264 14 298 7 284 b 0 187 0 238 0 213 b 4 50 0 143 3 96 b 6 -10 6 30 6 10 b 4 -130 6 -50 4 -91 b 12 -268 4 -176 6 -222 b 19 -287 13 -275 10 -284 b 35 -275 26 -288 30 -281 b 52 -220 50 -261 48 -239 b 75 -199 55 -206 58 -199 l 141 -197 l 274 -197 l 634 -197 b 639 -281 635 -219 636 -251 b 648 -301 641 -288 638 -300 z m 72 -66 b 55 -56 59 -69 55 -65 l 55 -50 b 53 53 55 -16 55 20 b 69 73 53 69 60 72 l 79 72 b 330 65 163 66 246 63 l 592 65 b 634 81 606 65 618 71 b 635 -30 634 39 635 6 b 605 -58 635 -49 628 -58 b 451 -60 553 -60 503 -60 b 219 -59 373 -60 295 -59 l 166 -59 b 72 -66 134 -59 104 -60 z',\n },\n noteheadSquareWhite: {\n x_min: 0,\n x_max: 350,\n y_min: -131,\n y_max: 131,\n ha: 262,\n o: 'm 468 -189 b 485 -187 474 -189 480 -189 b 500 -176 495 -187 500 -183 b 498 -168 500 -174 498 -171 b 497 -166 498 -167 497 -167 l 498 -164 b 504 -154 503 -163 504 -158 b 503 -138 504 -150 503 -144 l 503 -135 l 503 -94 b 492 66 500 -45 494 10 b 488 135 492 89 488 112 b 484 150 488 141 485 145 b 482 154 482 151 482 153 b 429 189 472 177 456 189 b 53 184 304 186 179 186 l 39 184 b 33 181 36 183 35 183 b 12 160 20 181 12 177 b 0 -109 9 71 4 -19 b 19 -137 0 -125 7 -134 b 23 -151 19 -141 20 -145 b 85 -187 37 -173 55 -187 b 468 -189 212 -187 340 -187 z m 246 -125 l 63 -125 b 66 -111 65 -122 66 -117 b 73 72 69 -50 71 10 l 73 130 b 88 128 78 128 82 128 b 148 130 108 130 128 130 b 271 128 190 130 230 128 l 271 130 l 420 130 b 428 20 425 92 425 56 l 436 -127 l 246 -127 z',\n },\n noteheadSquareBlack: {\n x_min: 0,\n x_max: 342,\n y_min: -129.98961937716263,\n y_max: 132.44444444444446,\n ha: 262.4340638216071,\n o: 'm 217 190 b 439 186 304 190 372 190 b 467 180 448 184 458 183 b 492 145 484 176 492 167 b 490 -124 490 56 490 -33 b 488 -141 490 -130 488 -135 b 456 -170 488 -163 478 -168 b 118 -183 344 -176 230 -181 b 29 -184 89 -183 60 -192 b 0 -148 4 -180 0 -168 b 1 29 1 -89 1 -30 l 1 156 b 36 190 3 187 4 190 b 217 190 102 192 168 190 z',\n },\n noteheadTriangleDownDoubleWhole: {\n x_min: 0,\n x_max: 510,\n y_min: -213,\n y_max: 213,\n ha: 426,\n o: 'm 16 -307 b 30 -289 26 -307 29 -297 b 43 -236 36 -272 42 -253 l 65 219 b 59 285 62 240 69 264 b 46 307 55 294 58 307 l 43 307 b 19 279 30 304 20 295 b 13 184 17 248 14 216 b 1 -125 9 81 7 -23 b 0 -163 0 -138 0 -150 b 6 -287 0 -204 4 -245 b 16 -307 6 -295 7 -305 z m 707 -294 b 734 -213 733 -271 734 -242 b 729 245 733 -60 730 92 b 719 285 729 259 724 272 b 707 298 716 291 714 298 l 703 298 b 685 284 696 297 687 292 b 683 253 683 274 683 264 b 691 -181 685 108 685 -36 b 707 -294 693 -217 690 -256 z m 108 -238 b 125 -203 125 -238 121 -216 b 127 -190 127 -199 127 -194 b 120 -138 127 -173 120 -156 l 120 -66 b 114 167 120 12 118 89 l 118 161 b 314 -153 184 58 248 -48 b 350 -184 327 -173 338 -184 b 387 -154 361 -184 374 -174 b 567 108 449 -68 508 20 b 626 193 588 137 608 164 b 615 -132 622 85 619 -24 l 615 -166 b 619 -207 615 -180 615 -194 b 638 -226 622 -217 629 -225 b 651 -209 648 -226 649 -216 b 658 -177 655 -199 658 -187 l 658 -171 b 667 49 655 -98 667 -23 b 665 88 667 62 667 75 b 665 220 665 135 667 179 b 641 265 664 238 660 265 b 626 243 629 265 626 255 b 628 222 626 236 628 228 b 612 225 624 223 619 225 b 384 223 537 223 461 223 l 384 225 l 170 225 b 131 215 157 225 144 222 b 112 200 122 210 117 206 b 88 266 111 225 108 249 b 75 239 76 259 75 249 b 73 147 75 207 73 179 b 82 -189 73 35 79 -78 b 84 -203 82 -194 82 -199 b 108 -238 86 -219 91 -238 z m 361 -79 b 295 78 336 -26 314 26 b 284 151 287 101 284 125 b 310 177 284 171 291 177 b 419 176 346 176 383 174 l 423 176 b 445 153 441 176 445 168 l 445 147 b 361 -79 442 65 415 -10 z',\n },\n noteheadTriangleDownWhole: {\n x_min: 0,\n x_max: 366,\n y_min: -145,\n y_max: 138,\n ha: 283,\n o: 'm 242 -209 b 279 -180 253 -209 266 -200 b 459 84 341 -92 400 -4 b 520 170 480 112 501 141 b 527 189 524 177 527 183 b 504 199 527 196 520 199 l 55 199 b 23 190 45 199 33 196 b 0 161 9 181 0 173 b 10 135 0 154 3 145 b 206 -177 76 32 140 -73 b 242 -209 219 -199 230 -209 z m 253 -105 b 187 52 228 -52 206 0 b 176 127 179 76 176 101 b 197 151 176 144 181 151 l 202 151 b 256 150 220 151 238 150 b 311 151 275 150 294 151 b 337 128 331 151 337 144 l 337 122 b 253 -105 334 39 307 -35 z',\n },\n noteheadTriangleDownHalf: {\n x_min: -0.0833130378007211,\n x_max: 341,\n y_min: -159,\n y_max: 159,\n ha: 318,\n o: 'm 266 -229 b 282 -215 274 -229 278 -225 b 487 153 350 -92 418 30 b 491 170 490 158 491 164 b 480 189 491 177 487 183 b 425 215 464 202 448 213 b 33 226 297 217 168 222 b 13 229 29 223 22 229 b 1 222 9 229 4 228 b 14 184 -4 207 7 196 b 210 -176 81 65 145 -56 b 253 -225 222 -194 230 -213 b 266 -229 259 -226 264 -228 z m 134 22 b 147 43 138 27 141 37 b 206 163 174 79 179 127 b 213 170 209 166 212 167 l 340 167 b 193 -75 287 89 251 1 b 190 -82 192 -76 190 -79 z',\n },\n noteheadTriangleDownBlack: {\n x_min: 0,\n x_max: 346,\n y_min: -149,\n y_max: 149,\n ha: 298,\n o: 'm 229 -215 b 259 -202 238 -215 248 -210 b 284 -173 269 -194 278 -184 l 482 173 b 498 209 488 184 498 194 b 481 215 492 215 487 215 b 63 213 343 215 203 213 b 12 197 45 213 29 206 b 0 180 4 193 0 187 b 3 168 0 177 1 173 b 13 150 6 163 9 156 l 196 -189 b 229 -215 206 -206 216 -215 z',\n },\n noteheadTriangleUpDoubleWhole: {\n x_min: 0,\n x_max: 510,\n y_min: -213,\n y_max: 213,\n ha: 426,\n o: 'm 16 -307 b 30 -289 26 -307 29 -297 b 43 -236 36 -272 42 -253 l 65 219 b 59 285 62 240 69 264 b 46 307 55 294 58 307 l 43 307 b 19 279 30 304 20 295 b 13 184 17 248 14 216 b 1 -125 9 81 7 -23 b 0 -163 0 -138 0 -150 b 6 -287 0 -204 4 -245 b 16 -307 6 -295 7 -305 z m 707 -298 b 734 -217 733 -275 734 -246 b 729 240 733 -65 730 88 b 719 281 729 255 724 268 b 707 294 716 287 714 294 l 703 294 b 685 279 696 292 687 288 b 683 249 683 269 683 259 b 691 -186 685 104 685 -40 b 707 -298 693 -222 690 -261 z m 88 -266 b 112 -200 108 -249 111 -225 b 131 -215 117 -206 122 -210 b 170 -225 144 -222 157 -225 l 384 -225 l 384 -223 b 612 -225 461 -223 537 -223 b 628 -222 619 -225 624 -223 b 641 -265 628 -238 622 -265 b 665 -220 660 -265 664 -238 b 665 -88 667 -179 665 -135 b 667 -49 667 -75 667 -62 b 658 171 667 23 655 98 b 651 209 660 184 655 197 b 638 226 649 216 648 226 b 619 207 629 225 622 217 b 615 166 615 194 615 180 l 615 132 b 626 -193 619 24 622 -85 b 567 -108 608 -164 588 -137 b 387 154 508 -20 449 68 b 350 184 374 174 361 184 b 314 153 338 184 327 173 b 118 -161 248 48 184 -58 l 114 -167 b 120 66 118 -89 120 -12 l 120 138 b 127 190 120 156 127 173 b 125 203 127 194 127 199 b 108 238 121 216 125 238 b 84 203 91 238 86 219 b 82 189 82 199 82 194 b 73 -147 79 78 73 -35 b 75 -239 73 -179 75 -207 b 88 -266 75 -249 76 -259 z m 310 -177 b 284 -151 291 -177 284 -171 b 295 -78 284 -125 287 -101 b 361 79 314 -26 336 26 b 445 -147 415 10 442 -65 b 423 -176 446 -166 442 -176 l 419 -176 b 310 -177 383 -174 346 -176 z',\n },\n noteheadTriangleUpWhole: {\n x_min: 0,\n x_max: 366,\n y_min: -145,\n y_max: 138,\n ha: 283,\n o: 'm 504 -209 b 527 -199 520 -209 527 -206 b 520 -180 527 -193 524 -187 b 459 -94 501 -151 480 -122 b 279 170 400 -6 341 82 b 242 199 266 190 253 199 b 206 167 230 199 219 189 b 10 -145 140 63 76 -42 b 0 -171 3 -156 0 -164 b 23 -200 0 -183 9 -192 b 55 -209 33 -206 45 -209 z m 202 -161 b 176 -137 183 -163 176 -156 b 187 -62 176 -111 179 -86 b 253 95 206 -10 228 42 b 337 -132 307 24 334 -49 b 311 -161 338 -153 334 -161 b 256 -160 294 -161 275 -160 b 202 -161 238 -160 220 -161 z',\n },\n noteheadTriangleUpHalf: {\n x_min: 0,\n x_max: 341.0833130378007,\n y_min: -159,\n y_max: 159,\n ha: 318,\n o: 'm 458 -226 b 478 -229 462 -223 469 -229 b 490 -222 482 -229 487 -228 b 477 -184 495 -207 484 -196 b 281 176 410 -65 346 56 b 238 225 269 194 261 213 b 225 229 232 226 228 228 b 209 215 217 229 213 225 b 4 -153 141 92 73 -30 b 0 -170 1 -158 0 -164 b 12 -189 0 -177 4 -183 b 66 -215 27 -202 43 -213 b 458 -226 194 -217 323 -222 z m 151 -167 b 298 75 204 -89 240 -1 b 301 82 300 76 301 79 l 357 -22 b 344 -43 353 -27 350 -37 b 285 -163 317 -79 312 -127 b 278 -170 282 -166 279 -167 z',\n },\n noteheadTriangleUpBlack: {\n x_min: 0,\n x_max: 346,\n y_min: -149,\n y_max: 149,\n ha: 298,\n o: 'm 481 -215 b 498 -209 487 -215 492 -215 b 482 -173 498 -194 488 -184 l 284 173 b 259 202 278 184 269 194 b 229 215 248 210 238 215 b 196 189 216 215 206 206 l 13 -150 b 3 -168 9 -156 6 -163 b 0 -180 1 -173 0 -177 b 12 -197 0 -187 4 -193 b 63 -213 29 -206 45 -213 b 481 -215 203 -213 343 -215 z',\n },\n noteheadSlashedDoubleWhole1: {\n x_min: 0,\n x_max: 697,\n y_min: -290,\n y_max: 290,\n ha: 580,\n o: 'm 20 -418 b 42 -376 40 -418 37 -392 b 43 -356 45 -370 43 -363 l 43 -348 b 50 -197 43 -298 49 -248 b 78 317 58 -24 69 147 b 72 387 75 343 82 366 b 52 418 68 397 69 418 l 49 416 b 24 380 33 413 24 399 b 19 235 23 333 20 284 b 7 -82 14 130 10 24 b 0 -264 6 -143 0 -203 b 10 -382 0 -302 1 -343 b 20 -418 13 -393 6 -418 z m 976 -344 b 991 -331 985 -346 988 -337 b 1004 -271 999 -312 1004 -292 l 1004 -194 b 996 184 1004 -68 1001 59 b 996 281 996 216 998 249 b 984 379 995 314 991 347 b 971 397 981 392 976 396 b 952 386 965 397 959 392 b 943 361 943 380 945 370 b 937 288 939 337 937 312 b 945 158 937 245 942 203 b 959 -248 950 23 953 -112 b 966 -325 960 -274 963 -300 b 976 -344 966 -334 968 -344 z m 102 -331 b 124 -272 120 -314 122 -294 b 135 -278 127 -276 131 -278 l 141 -278 b 320 -199 206 -262 272 -252 b 348 -171 328 -189 338 -180 b 482 -199 392 -190 436 -199 b 704 -173 576 -199 641 -187 b 847 -82 760 -158 809 -130 l 855 -69 l 855 -73 b 863 -229 857 -125 860 -177 b 876 -255 863 -239 863 -255 b 893 -233 886 -255 888 -242 b 900 -189 899 -219 900 -203 l 900 66 b 900 192 899 108 900 150 b 893 301 900 228 899 265 b 877 325 890 310 893 325 l 876 325 b 855 301 865 324 855 315 b 850 202 852 268 847 235 b 854 50 854 151 854 101 b 821 99 847 68 835 85 b 733 167 795 127 765 148 b 831 253 766 196 799 225 b 851 265 837 258 844 261 b 829 282 840 275 835 279 b 772 295 815 291 795 295 b 685 271 739 295 704 287 b 624 215 665 252 645 233 l 566 232 b 527 239 553 236 540 239 b 490 228 514 239 501 236 b 451 219 475 217 467 219 b 275 176 389 219 331 200 b 184 53 216 150 184 105 b 199 -14 184 32 189 10 b 262 -108 215 -52 236 -82 l 125 -230 b 134 225 130 -78 132 73 b 135 269 134 239 135 255 b 121 330 135 291 132 311 b 95 287 99 323 95 307 b 92 124 94 233 95 179 b 85 -143 88 36 85 -53 b 89 -300 85 -196 86 -248 b 102 -331 89 -311 89 -323 z m 367 -14 b 350 43 359 3 351 22 b 392 122 350 82 363 107 b 544 171 439 150 492 160 b 572 168 554 174 563 171 z m 564 -132 b 467 -105 528 -138 497 -121 b 442 -89 458 -101 449 -95 l 658 101 b 690 30 677 82 690 59 b 688 10 690 24 690 17 b 564 -132 678 -45 611 -127 z',\n },\n noteheadSlashedWhole1: {\n x_min: -76,\n x_max: 498,\n y_min: -168,\n y_max: 168,\n ha: 336,\n o: 'm -79 -242 b 55 -202 -32 -236 14 -228 l 145 -143 b 333 -171 203 -166 265 -171 b 429 -164 361 -174 395 -168 b 582 -130 481 -158 534 -154 b 657 -20 631 -105 657 -65 b 619 68 657 9 644 40 b 552 120 599 89 577 107 b 582 138 562 127 572 132 b 717 226 625 167 668 194 b 638 242 688 236 662 242 b 543 213 603 242 573 232 b 455 154 514 194 484 174 b 325 199 412 167 367 179 b 233 215 298 210 265 215 b 75 156 173 215 124 186 b 0 27 24 122 0 76 b 66 -98 0 -17 22 -63 b 72 -102 69 -99 71 -101 b -89 -209 17 -137 -36 -173 b -109 -225 -95 -213 -109 -216 b -108 -229 -109 -226 -108 -228 b -85 -242 -104 -239 -95 -242 z m 181 -29 b 167 14 171 -13 167 1 b 187 62 167 30 173 46 b 301 137 217 99 258 118 b 312 138 304 138 308 138 l 317 138 b 389 109 340 125 364 118 l 383 105 z m 337 -109 b 239 -82 301 -107 268 -99 l 468 65 b 482 24 477 53 482 40 b 480 4 482 19 481 12 b 337 -109 467 -56 399 -111 z',\n },\n noteheadSlashedHalf1: {\n x_min: -79.3435119522494,\n x_max: 471,\n y_min: -184,\n y_max: 184,\n ha: 368,\n o: 'm -112 -251 b -94 -265 -107 -261 -101 -264 b -52 -242 -79 -265 -63 -249 l 89 -148 b 212 -180 125 -170 167 -179 b 238 -177 220 -180 229 -179 l 262 -180 b 346 -171 289 -180 318 -176 b 576 -91 431 -166 507 -140 b 641 4 619 -60 641 -29 b 592 96 641 35 625 65 l 583 104 b 533 147 567 121 550 134 l 613 200 b 678 261 636 216 664 232 b 658 265 671 264 664 265 b 611 248 641 265 625 258 l 491 171 b 337 204 444 194 392 204 b 281 200 318 204 300 204 b 27 62 180 187 92 145 b -1 -19 9 37 -1 10 b 36 -107 -1 -50 12 -82 b 52 -121 42 -112 46 -117 l -72 -203 b -112 -251 -91 -216 -122 -233 z m 161 -49 b 158 -29 160 -42 158 -35 b 183 33 158 -7 167 16 b 395 137 239 95 311 122 b 420 125 405 134 413 130 z m 276 -128 b 261 -131 271 -130 266 -131 b 181 -86 233 -131 203 -114 l 454 94 l 468 72 b 481 36 477 60 481 49 b 469 1 481 26 477 14 b 276 -128 422 -66 354 -105 z',\n },\n noteheadSlashedBlack1: {\n x_min: -110,\n x_max: 452,\n y_min: -190,\n y_max: 190,\n ha: 380,\n o: 'm -131 -274 b -102 -262 -121 -272 -111 -266 b 7 -186 -65 -239 -29 -212 b 50 -157 22 -176 36 -166 b 105 -176 65 -166 84 -173 b 207 -183 140 -181 173 -183 b 239 -184 219 -184 229 -184 b 428 -91 327 -184 377 -150 b 487 43 461 -52 487 -7 b 482 76 487 53 485 65 b 459 128 478 95 469 112 b 507 161 475 138 491 150 l 651 262 b 622 274 641 271 632 274 b 605 271 616 274 611 272 b 514 233 573 262 541 252 l 422 167 b 317 203 392 190 354 203 b 271 196 301 203 285 200 b 168 157 236 186 200 173 b 6 -16 94 120 33 68 b -1 -62 1 -32 -1 -48 b 17 -125 -1 -86 4 -108 b -81 -196 -16 -148 -48 -173 b -145 -242 -102 -212 -128 -219 b -158 -256 -150 -246 -158 -251 b -157 -261 -158 -258 -157 -259 b -131 -274 -153 -269 -141 -274 z',\n },\n noteheadSlashedDoubleWhole2: {\n x_min: -0.12386605641055257,\n x_max: 697.4733477320805,\n y_min: -295,\n y_max: 295,\n ha: 590,\n o: 'm 870 -338 b 891 -315 884 -341 887 -325 b 906 -183 907 -274 903 -228 b 914 186 912 -60 904 62 b 914 240 914 203 916 222 b 916 276 913 251 916 265 b 899 300 916 289 913 300 b 871 253 874 300 871 274 b 858 -168 871 111 858 -27 b 860 -235 858 -190 860 -213 l 736 -131 b 834 -20 799 -111 834 -69 b 789 85 834 13 819 49 b 683 160 760 118 723 140 b 383 216 589 209 487 215 b 330 213 364 217 347 216 b 228 300 295 242 261 271 b 86 347 184 337 138 348 b 58 343 76 347 63 350 l 58 360 b 35 425 58 384 53 423 b 6 382 9 425 6 403 l 6 131 b 0 -164 6 33 4 -66 b 24 -327 -1 -216 6 -271 b 50 -262 46 -305 50 -284 l 50 -154 b 52 -45 50 -118 50 -81 b 58 325 55 79 58 202 b 73 310 60 320 68 315 b 94 294 79 304 86 298 b 89 271 89 287 89 278 l 89 94 b 104 -194 101 -20 88 -108 b 118 -245 107 -213 104 -248 b 140 -190 140 -243 140 -212 l 140 -62 b 132 258 140 46 138 153 l 132 259 l 235 173 b 193 132 219 161 204 148 b 153 26 167 101 153 63 b 164 -35 153 7 157 -16 b 341 -170 196 -114 261 -158 b 433 -177 372 -174 403 -177 b 619 -157 497 -177 559 -170 l 706 -230 b 799 -276 736 -258 765 -276 b 818 -274 806 -276 812 -276 l 861 -274 b 863 -312 861 -287 863 -300 b 870 -338 864 -321 858 -337 z m 966 -425 b 986 -397 979 -425 982 -408 b 991 -373 989 -390 989 -382 b 995 -239 991 -328 995 -284 b 1004 334 1001 -49 1002 143 b 995 380 1005 350 1005 367 b 982 402 989 386 992 402 l 978 400 b 949 374 965 396 950 390 b 948 333 948 360 948 346 l 948 -37 b 949 -84 949 -52 949 -68 b 946 -248 949 -132 946 -189 b 953 -396 946 -297 948 -346 b 966 -425 955 -408 950 -425 z m 624 -36 b 416 140 554 22 485 81 b 482 156 439 150 461 154 b 625 81 537 156 588 124 b 647 27 639 63 647 46 b 624 -36 647 7 638 -14 z m 469 -117 b 320 14 386 -118 320 -60 b 343 81 320 37 327 60 l 547 -95 b 469 -117 521 -105 494 -111 z',\n },\n noteheadSlashedWhole2: {\n x_min: -83,\n x_max: 510,\n y_min: -201,\n y_max: 198,\n ha: 399,\n o: 'm 734 -289 b 696 -245 726 -266 710 -256 b 586 -164 660 -217 622 -192 l 589 -161 b 654 -50 631 -135 654 -94 b 616 40 654 -19 641 13 b 305 174 536 127 420 174 b 171 151 261 174 215 167 b 166 150 170 151 168 150 b 86 209 140 170 112 189 b -94 284 32 249 -22 289 l -108 285 b -120 274 -114 285 -120 284 b -104 251 -120 266 -112 258 b 71 124 -46 209 12 166 l 85 114 b 36 72 66 102 50 89 b 0 -30 12 40 0 4 b 122 -186 0 -96 45 -160 b 343 -222 194 -210 268 -222 b 514 -197 410 -220 467 -213 l 554 -228 b 734 -289 609 -268 668 -275 z m 477 -82 b 268 73 408 -30 338 22 l 301 91 b 336 101 314 96 324 101 b 370 88 347 101 359 96 b 459 9 405 66 436 43 b 481 -56 474 -13 481 -35 b 477 -82 481 -65 480 -73 z m 310 -161 b 216 -143 276 -161 246 -156 b 166 -72 181 -128 166 -105 b 168 -46 166 -65 167 -55 b 206 26 176 -16 189 7 b 436 -140 282 -29 360 -84 b 382 -158 420 -150 402 -157 b 310 -161 357 -161 333 -161 z',\n },\n noteheadSlashedHalf2: {\n x_min: -73,\n x_max: 454,\n y_min: -188,\n y_max: 188,\n ha: 376,\n o: 'm 654 -271 b 603 -202 649 -233 625 -217 b 481 -115 563 -173 523 -144 b 564 -60 510 -101 539 -82 b 615 40 596 -33 615 4 b 609 69 615 50 613 60 b 505 167 590 120 554 151 b 336 190 451 184 392 190 b 124 134 259 190 189 171 l -42 248 b -88 271 -56 256 -75 271 b -101 265 -94 271 -98 269 b -105 252 -104 259 -105 255 b -66 210 -105 235 -82 222 l 85 107 b 0 -24 42 73 0 35 b 183 -183 0 -118 75 -184 b 262 -176 206 -180 233 -177 b 438 -135 324 -171 383 -158 b 570 -228 482 -166 527 -197 b 654 -271 595 -243 621 -259 z m 393 -53 l 311 4 l 225 65 b 392 134 274 102 331 122 b 455 50 425 141 455 101 b 439 -3 455 35 451 14 b 393 -53 425 -22 409 -37 z m 287 -121 b 246 -130 272 -127 259 -130 b 171 -89 215 -130 189 -115 b 156 -40 161 -73 156 -58 b 186 29 156 -17 166 7 l 192 35 l 359 -82 b 287 -121 337 -98 312 -111 z',\n },\n noteheadSlashedBlack2: {\n x_min: -84,\n x_max: 405,\n y_min: -189,\n y_max: 189,\n ha: 378,\n o: 'm 557 -265 b 573 -272 562 -268 567 -272 b 583 -261 577 -272 580 -269 b 575 -242 580 -253 579 -248 b 524 -190 563 -220 544 -204 b 405 -99 485 -160 445 -130 b 497 50 449 -60 482 -9 b 500 72 498 58 500 65 b 478 122 500 91 492 107 b 331 186 438 167 387 186 b 120 131 258 186 186 167 l 107 124 b -52 242 53 163 1 203 b -89 265 -63 251 -76 259 b -107 272 -95 268 -101 272 b -117 266 -109 272 -114 271 b -121 251 -120 262 -121 256 b -114 235 -121 245 -120 239 b -60 186 -96 217 -81 199 b 63 95 -20 156 22 125 b -1 -35 26 66 -1 27 b 137 -183 -1 -130 46 -183 b 174 -180 148 -183 161 -181 l 245 -171 b 366 -128 289 -166 331 -150 l 426 -171 b 557 -265 469 -203 514 -233 z',\n },\n noteheadDiamondDoubleWhole: {\n x_min: 0,\n x_max: 429,\n y_min: -221,\n y_max: 221,\n ha: 442,\n o: 'm 22 -318 b 42 -294 33 -318 37 -302 b 46 -266 45 -285 45 -275 b 50 -219 49 -249 50 -233 b 48 -153 50 -197 49 -176 b 43 120 43 -62 43 29 l 43 253 b 37 298 43 269 45 284 b 26 318 35 305 35 318 l 24 318 b 1 295 13 317 3 308 b 0 268 0 285 0 276 l 0 -121 b 10 -291 0 -177 1 -235 b 22 -318 12 -301 10 -318 z m 593 -312 b 618 -256 611 -294 616 -276 l 618 -186 b 611 253 618 -40 612 108 b 605 276 611 261 608 268 b 589 295 600 284 600 297 b 567 272 577 294 569 285 l 567 251 b 575 -197 573 102 575 -48 b 593 -312 575 -233 579 -271 z m 99 -268 b 114 -256 107 -269 111 -262 b 127 -196 124 -238 125 -217 b 128 -144 128 -179 128 -161 b 122 -9 128 -99 125 -55 l 135 -19 b 344 -179 206 -71 276 -122 b 370 -190 354 -186 363 -190 b 395 -173 379 -190 386 -184 b 492 -33 426 -127 459 -79 b 491 -86 491 -50 491 -68 b 507 -251 491 -138 495 -193 b 534 -184 530 -228 533 -206 b 541 144 537 -75 539 35 b 530 204 541 164 539 186 b 520 220 528 210 528 220 b 500 203 511 219 503 213 b 498 192 498 200 498 194 l 498 176 b 494 7 497 120 497 63 l 490 12 l 287 176 b 258 190 279 181 274 190 b 212 153 239 186 225 168 l 127 40 b 121 32 124 37 122 35 b 118 114 120 59 118 86 b 102 249 117 158 122 206 b 75 219 85 246 79 236 b 72 187 72 209 72 197 b 76 117 72 164 75 141 b 85 -151 79 27 79 -62 b 91 -251 86 -184 91 -217 b 99 -268 91 -258 92 -266 z m 392 -128 b 374 -122 387 -134 380 -127 l 180 29 b 170 45 173 35 170 39 b 176 56 170 48 173 52 b 236 122 204 101 219 122 b 308 76 252 122 272 107 l 433 -26 b 449 -50 439 -32 449 -36 b 392 -128 432 -75 413 -102 z',\n },\n noteheadDiamondWhole: {\n x_min: 0,\n x_max: 271,\n y_min: -132,\n y_max: 132,\n ha: 264,\n o: 'm 230 -177 b 256 -190 240 -186 249 -190 b 281 -173 265 -190 272 -184 b 382 -29 314 -124 347 -76 b 390 -10 387 -22 390 -14 b 376 12 390 -3 386 4 b 173 177 308 66 240 121 b 144 190 166 183 160 190 b 98 153 127 186 112 170 b 13 40 69 115 42 76 b 0 13 4 29 0 20 b 22 -19 0 3 7 -9 b 230 -177 92 -69 163 -122 z m 279 -128 b 261 -122 274 -134 266 -127 l 66 30 b 56 45 59 35 56 39 b 62 56 56 48 59 52 b 122 122 91 101 105 122 b 194 76 138 122 158 107 l 320 -26 b 336 -50 325 -32 336 -35 b 279 -128 318 -75 300 -102 z',\n },\n noteheadDiamondHalf: {\n x_min: 0,\n x_max: 295,\n y_min: -148,\n y_max: 148,\n ha: 296,\n o: 'm 228 -207 b 245 -213 235 -210 240 -213 b 264 -203 252 -213 258 -210 b 415 -46 314 -150 364 -98 b 425 -27 420 -40 425 -35 b 416 -10 425 -22 422 -16 b 217 200 350 60 284 131 b 194 213 212 207 204 213 b 170 196 181 213 177 203 b 14 33 118 143 68 86 b 0 7 4 23 0 16 b 17 -20 0 -1 6 -10 b 118 -114 52 -50 82 -85 b 228 -207 156 -144 184 -184 z m 209 -157 b 134 -69 177 -138 141 -115 b 130 -26 131 -55 130 -40 b 215 148 130 42 160 99 b 225 156 217 151 220 156 b 230 153 226 156 228 156 b 323 -26 276 104 321 55 b 298 -75 324 -42 315 -59 b 265 -109 287 -86 276 -99 b 209 -157 245 -125 228 -167 z',\n },\n noteheadDiamondBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -146,\n y_max: 146,\n ha: 292,\n o: 'm 266 -210 b 289 -194 278 -209 284 -200 b 406 -76 330 -156 367 -115 b 446 -23 433 -49 446 -36 b 412 29 446 -10 435 3 b 405 36 409 30 408 33 b 252 196 354 89 304 143 b 225 210 243 204 235 210 b 204 202 219 210 212 209 b 10 24 141 141 75 82 b 0 9 4 19 0 14 b 9 -6 0 4 3 0 l 232 -192 b 266 -210 242 -200 256 -204 z',\n },\n noteheadParenthesis: {\n x_min: -70.190112022022,\n x_max: 329,\n y_min: -196,\n y_max: 201,\n ha: 397,\n o: 'm 344 -279 b 382 -262 361 -288 370 -272 b 405 -233 390 -255 399 -245 b 474 9 455 -158 468 -73 b 416 228 474 78 448 174 b 364 282 403 249 387 271 b 344 289 359 285 350 288 b 331 279 338 289 333 287 b 325 248 328 269 325 258 b 338 225 325 238 328 229 b 412 138 379 207 396 174 b 445 1 433 92 445 45 b 346 -217 445 -81 410 -154 b 336 -252 340 -223 336 -238 b 344 -279 336 -265 338 -276 z m 19 -274 b 35 -282 24 -279 30 -281 b 49 -265 42 -282 46 -275 b 52 -243 50 -256 52 -249 b 36 -210 52 -230 49 -220 b -60 -59 -16 -173 -35 -114 b -73 9 -69 -39 -73 -16 b 33 223 -73 92 -24 189 b 50 265 43 229 50 249 b 33 288 50 278 46 289 b 4 272 23 288 14 275 b -9 261 0 269 -4 265 b -101 23 -58 193 -105 124 b -37 -206 -104 -52 -75 -130 b 19 -274 -23 -232 -6 -255 z',\n },\n noteheadParenthesisRight: {\n x_min: -30,\n x_max: 82,\n y_min: -199.08429092881173,\n y_max: 206,\n ha: 405.0842909288117,\n o: 'm -17 -282 b 24 -264 -6 -297 12 -272 b 60 -219 40 -253 52 -236 b 117 1 96 -150 112 -75 b 118 16 118 6 118 12 b 109 73 118 36 112 55 b 4 279 99 154 68 226 b -23 297 -4 287 -13 297 b -37 289 -27 297 -32 294 b -43 266 -42 285 -43 276 b -32 225 -43 251 -37 229 b 84 -7 48 170 84 82 b 32 -184 84 -69 65 -132 b -10 -222 22 -200 4 -209 b -24 -258 -20 -232 -24 -245 b -17 -282 -24 -266 -22 -276 z',\n },\n noteheadParenthesisLeft: {\n x_min: 0,\n x_max: 106,\n y_min: -197,\n y_max: 197,\n ha: 394,\n o: 'm 134 -284 b 138 -281 135 -284 137 -284 b 145 -268 144 -278 145 -274 l 144 -253 b 107 -180 138 -225 121 -204 b 42 13 71 -120 42 -56 b 49 73 42 32 43 52 b 137 210 62 128 95 171 b 153 255 147 219 153 239 b 145 278 153 265 151 274 b 130 284 140 281 135 284 b 98 259 117 284 108 268 b 0 37 35 203 1 131 b 118 -268 9 -69 53 -173 b 134 -284 121 -274 127 -284 z',\n },\n noteheadMoonBlack: {\n x_min: 0,\n x_max: 328,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 353 -160 b 465 -40 412 -140 451 -102 b 472 30 471 -17 472 6 b 469 124 472 60 469 92 b 406 179 469 170 459 177 l 128 179 b 37 180 98 179 68 179 b 0 141 7 180 0 170 b 3 -20 3 88 3 33 b 69 -134 3 -72 26 -109 b 240 -180 125 -164 181 -180 b 353 -160 278 -180 315 -174 z',\n },\n noteheadTriangleLeftBlack: {\n x_min: 0,\n x_max: 391.1554175279994,\n y_min: -142,\n y_max: 142,\n ha: 284,\n o: 'm 138 -204 b 318 -197 197 -199 258 -197 l 431 -197 b 544 -192 469 -196 507 -193 b 563 -184 552 -190 560 -193 b 553 -167 564 -177 559 -171 l 540 -157 b 232 60 436 -85 334 -12 l 50 190 b 20 204 42 197 32 204 b 10 202 17 204 14 204 b 0 184 1 197 0 192 b 1 164 0 177 1 170 b 6 -150 3 59 6 -45 b 39 -193 7 -176 17 -186 b 138 -204 72 -204 105 -204 z',\n },\n noteheadTriangleRightBlack: {\n x_min: -0.3332953162522517,\n x_max: 398,\n y_min: -139,\n y_max: 140,\n ha: 279,\n o: 'm 543 -200 b 573 -176 566 -200 573 -194 l 573 -168 b 554 141 566 -66 560 37 b 520 197 553 167 546 187 b 495 202 511 200 504 202 b 454 184 481 202 467 196 l 35 -137 b 0 -171 22 -147 -4 -154 b 52 -199 6 -193 33 -193 b 69 -199 58 -200 63 -199 z',\n },\n noteheadTriangleRoundDownBlack: {\n x_min: 0,\n x_max: 334,\n y_min: -133.78604087938328,\n y_max: 136,\n ha: 269.7860408793833,\n o: 'm 252 -192 b 285 -176 269 -196 276 -187 b 468 52 346 -99 406 -23 b 481 79 477 62 481 71 b 465 104 481 88 475 95 b 441 124 456 109 449 117 b 249 196 380 174 314 194 b 13 104 157 196 69 154 b 0 86 6 98 0 92 b 7 69 0 82 3 76 b 202 -164 73 -7 137 -85 b 252 -192 216 -181 235 -186 z',\n },\n augmentationDot: {\n x_min: 0,\n x_max: 96,\n y_min: -57,\n y_max: 57,\n ha: 114,\n o: 'm 13 -82 b 16 -81 14 -82 14 -82 b 105 -73 46 -76 75 -76 b 131 -48 121 -72 131 -60 b 138 26 134 -24 138 0 b 137 48 138 33 138 40 b 108 82 134 71 125 82 b 95 81 104 82 99 82 b 33 71 75 78 53 75 b 4 46 20 68 6 62 b 0 -66 1 9 0 -29 b 13 -82 0 -73 1 -82 z',\n },\n tremolo1: {\n x_min: -158,\n x_max: 156.19381479578487,\n y_min: -88,\n y_max: 88,\n ha: 176,\n o: 'm -206 -127 b -194 -125 -203 -127 -199 -127 b 173 -36 -72 -94 50 -65 b 220 16 202 -29 215 -12 b 225 50 223 30 225 45 b 216 107 226 76 222 91 b 194 127 210 120 204 127 b 183 124 192 127 189 127 l -192 33 b -226 -9 -213 27 -222 14 b -228 -32 -226 -16 -228 -23 b -222 -108 -228 -58 -222 -82 b -206 -127 -222 -120 -217 -127 z',\n },\n flag8thUp: {\n x_min: 0,\n x_max: 261,\n y_min: -819,\n y_max: 0,\n ha: 819,\n o: 'm 265 -1171 b 351 -1035 301 -1130 336 -1087 b 376 -867 369 -979 376 -923 b 367 -755 376 -829 373 -792 b 233 -422 350 -632 311 -520 b 131 -291 199 -379 166 -334 b 65 -125 91 -239 66 -192 b 62 -75 65 -112 62 -91 b 42 0 62 -49 52 -24 l 35 0 b 0 -63 6 -13 0 -36 l 0 -144 b 96 -445 0 -255 29 -356 b 177 -547 124 -478 150 -514 b 308 -831 246 -629 298 -721 b 317 -890 310 -851 317 -871 b 311 -919 317 -900 315 -910 b 256 -1005 297 -950 282 -984 b 228 -1068 233 -1024 228 -1045 b 230 -1106 228 -1080 229 -1093 b 240 -1162 232 -1125 239 -1143 b 251 -1179 242 -1174 246 -1179 b 265 -1171 255 -1179 259 -1176 z',\n },\n flag8thDown: {\n x_min: 0,\n x_max: 261,\n y_min: 0,\n y_max: 819,\n ha: 819,\n o: 'm 265 1171 b 251 1179 259 1176 255 1179 b 240 1162 246 1179 242 1174 b 230 1106 239 1143 232 1125 b 228 1068 229 1093 228 1080 b 256 1005 228 1045 233 1024 b 311 919 282 984 297 950 b 317 890 315 910 317 900 b 308 831 317 871 310 851 b 177 547 298 721 246 629 b 96 445 150 514 124 478 b 0 144 29 356 0 255 l 0 63 b 35 0 0 36 6 13 l 42 0 b 62 75 52 24 62 49 b 59 117 62 91 59 104 b 131 291 60 183 91 239 b 233 422 166 334 199 379 b 367 755 311 520 350 632 b 376 867 373 792 376 829 b 351 1035 376 923 369 979 b 265 1171 336 1087 301 1130 z',\n },\n flag16thUp: {\n x_min: 0,\n x_max: 327.1591498636094,\n y_min: -819.3972596310256,\n y_max: 0,\n ha: 819.3972596310256,\n o: 'm 415 -1179 b 435 -1168 423 -1182 429 -1174 b 451 -1138 442 -1159 446 -1149 b 465 -1020 464 -1102 467 -1064 b 461 -962 464 -1004 464 -984 b 471 -821 467 -916 472 -870 b 465 -721 472 -791 467 -756 b 415 -520 459 -651 441 -585 b 200 -245 370 -408 284 -327 b 96 -114 160 -206 118 -168 b 75 -24 84 -85 85 -53 b 59 0 72 -16 72 0 b 53 -1 58 0 56 -1 b 27 -32 40 -6 27 -10 b 29 -68 27 -43 29 -55 b 10 -79 20 -69 13 -72 b 1 -109 6 -89 1 -99 b 0 -170 0 -130 0 -148 b 35 -410 0 -252 12 -333 b 258 -793 76 -557 156 -681 b 409 -1158 350 -896 410 -1014 b 415 -1179 409 -1165 405 -1175 z m 413 -816 b 331 -681 392 -769 364 -723 b 145 -420 266 -596 189 -521 b 86 -281 125 -374 102 -330 b 156 -370 105 -312 128 -343 b 318 -539 210 -425 269 -478 b 413 -816 383 -621 420 -713 z',\n },\n flag16thDown: {\n x_min: 0,\n x_max: 327.1591498636094,\n y_min: 0,\n y_max: 819,\n ha: 819,\n o: 'm 59 0 b 75 24 72 0 72 16 b 96 114 85 53 84 85 b 200 245 118 168 160 206 b 415 520 284 327 370 408 b 465 721 441 585 459 651 b 471 821 467 756 472 791 b 461 962 472 870 467 916 b 465 1020 464 984 464 1004 b 451 1138 467 1064 464 1102 b 435 1168 446 1149 442 1159 b 418 1179 431 1172 425 1179 l 415 1179 b 408 1169 409 1176 408 1174 b 409 1158 408 1165 409 1161 b 258 793 410 1014 350 896 b 35 410 156 681 76 557 b 0 170 12 333 0 252 l 0 88 b 29 7 0 71 6 23 b 59 0 33 4 58 0 z m 86 281 b 145 420 102 330 125 374 b 331 681 189 521 266 596 b 413 816 364 723 392 769 b 415 791 413 808 415 799 b 318 539 415 698 377 613 b 156 370 269 478 210 425 b 86 281 128 343 105 312 z',\n },\n flag32ndUp: {\n x_min: -0.19862981551275186,\n x_max: 268.0942440943661,\n y_min: -849.4710740978672,\n y_max: 149.0769891455102,\n ha: 998.5480632433774,\n o: 'm 323 -1223 b 351 -1198 337 -1227 344 -1210 b 359 -1184 354 -1194 356 -1188 b 386 -999 377 -1122 387 -1060 b 341 -783 386 -927 372 -855 b 330 -736 334 -769 330 -753 b 333 -708 330 -727 330 -717 b 344 -621 340 -678 344 -649 b 341 -579 344 -608 343 -593 b 328 -500 338 -553 328 -526 b 331 -475 328 -491 328 -484 b 347 -370 343 -438 348 -402 b 151 27 348 -212 288 -56 b 53 176 98 59 50 102 b 45 197 53 183 48 192 b 33 215 40 203 40 216 l 30 215 b 6 194 22 212 9 209 b 0 120 3 170 -1 145 b 0 -43 4 65 0 13 b 0 -98 0 -60 1 -79 b 4 -276 0 -157 6 -216 b 7 -456 4 -337 7 -397 b 66 -638 7 -523 22 -585 b 158 -724 94 -671 127 -697 b 318 -1011 246 -801 295 -899 b 321 -1044 321 -1021 321 -1032 b 312 -1152 321 -1080 312 -1116 b 317 -1192 312 -1165 314 -1179 b 323 -1223 320 -1202 311 -1220 z m 285 -376 b 121 -180 249 -289 173 -245 b 91 -105 104 -158 92 -135 b 288 -354 181 -144 288 -269 b 285 -376 288 -363 287 -370 z m 275 -657 b 111 -492 226 -589 163 -547 b 65 -376 78 -456 66 -418 b 71 -323 65 -360 68 -341 b 275 -657 164 -418 265 -504 z',\n },\n flag32ndDown: {\n x_min: -2.800802874905624,\n x_max: 268.09424409436605,\n y_min: -169.07698914551014,\n y_max: 829.4710740978672,\n ha: 998.5480632433773,\n o: 'm 323 1194 b 317 1164 311 1191 320 1174 b 312 1123 314 1151 312 1136 b 321 1015 312 1087 321 1051 b 318 982 321 1004 321 992 b 158 696 295 870 246 772 b 66 609 127 668 94 642 b 7 428 22 556 7 494 b 4 248 7 369 4 308 b -1 78 6 187 -10 137 b 0 14 0 59 0 32 l 0 -148 b 6 -223 0 -174 3 -199 b 30 -243 9 -238 22 -240 l 33 -243 b 45 -226 40 -245 40 -232 b 53 -204 48 -220 53 -212 b 151 -56 50 -131 98 -88 b 347 341 288 27 348 183 b 331 446 348 373 343 409 b 328 471 328 455 328 462 b 341 550 328 497 338 524 b 344 592 343 564 344 579 b 333 680 344 621 340 649 b 330 707 330 688 330 698 b 341 755 330 724 334 740 b 386 971 372 827 386 899 b 359 1155 387 1031 377 1093 b 351 1169 356 1159 354 1165 b 323 1194 344 1181 337 1198 z m 275 628 b 71 294 265 475 164 389 b 65 347 68 312 65 331 b 111 464 66 389 78 428 b 275 628 163 518 226 560 z m 285 347 b 288 325 287 341 288 334 b 91 76 288 240 181 115 b 121 151 92 107 104 130 b 285 347 173 216 249 261 z',\n },\n flag64thUp: {\n x_min: -4,\n x_max: 282,\n y_min: -823.5430338167067,\n y_max: 347,\n ha: 1170.5430338167066,\n o: 'm 350 -1185 b 380 -1162 364 -1189 374 -1175 b 406 -1022 399 -1119 406 -1071 b 359 -798 406 -945 384 -871 b 348 -756 353 -785 348 -772 b 350 -744 348 -753 350 -749 b 363 -621 356 -704 363 -664 b 360 -580 363 -608 363 -593 b 359 -560 359 -573 359 -567 b 373 -490 359 -536 366 -513 b 393 -346 386 -444 393 -395 b 387 -269 393 -320 390 -294 b 348 -127 382 -219 348 -173 b 351 -104 348 -120 348 -111 b 353 -65 351 -91 353 -78 b 341 37 353 -26 348 6 b 226 215 323 108 278 164 b 86 336 181 258 127 288 b 62 395 72 353 62 370 b 42 481 62 423 55 454 b 27 500 37 488 36 500 b 24 498 26 500 26 500 b -1 480 14 497 1 492 b -6 444 -4 467 -6 455 l -6 435 b -1 341 -1 403 -1 372 l -1 266 b 6 156 -1 230 0 193 b 13 35 12 117 13 75 l 13 -35 b 14 -85 13 -52 14 -68 b 29 -276 19 -150 33 -213 b 20 -448 24 -334 20 -392 b 24 -534 20 -477 22 -505 b 114 -708 30 -605 59 -664 b 197 -780 143 -732 171 -755 b 344 -1153 301 -884 341 -1011 b 343 -1172 344 -1159 343 -1166 b 350 -1185 343 -1176 344 -1182 z m 287 -88 b 62 193 186 -17 79 48 b 229 52 121 144 174 98 b 289 -33 256 29 274 -3 b 295 -56 294 -42 295 -49 b 287 -88 295 -66 292 -76 z m 298 -410 b 118 -235 238 -351 176 -295 b 76 -88 82 -197 78 -147 b 268 -252 137 -153 203 -202 b 330 -360 304 -279 330 -315 b 323 -402 330 -373 327 -387 b 311 -418 318 -413 315 -418 b 298 -410 307 -418 302 -415 z m 300 -691 b 117 -508 243 -616 168 -575 b 82 -408 94 -480 82 -448 b 84 -379 82 -397 82 -387 b 259 -553 135 -451 206 -492 b 301 -667 287 -583 301 -619 b 300 -691 301 -674 301 -683 z',\n },\n flag64thDown: {\n x_min: -5,\n x_max: 281,\n y_min: -375,\n y_max: 795.5430338167066,\n ha: 1170.5430338167066,\n o: 'm 348 1145 b 341 1132 343 1142 341 1136 b 343 1113 341 1126 343 1119 b 196 740 340 971 300 844 b 112 668 170 714 141 691 b 23 494 58 624 29 564 b 19 408 20 465 19 436 b 27 236 19 351 23 294 b 13 45 32 173 17 109 b 12 -6 13 27 12 12 l 12 -75 b 4 -196 12 -115 10 -157 b -3 -307 -1 -233 -3 -271 l -3 -382 b -7 -475 -3 -412 -3 -444 l -7 -484 b -3 -520 -7 -495 -6 -507 b 23 -539 0 -533 13 -537 b 26 -540 24 -540 24 -540 b 40 -521 35 -540 36 -528 b 60 -435 53 -494 60 -464 b 85 -376 60 -410 71 -393 b 225 -255 125 -328 180 -298 b 340 -78 276 -204 321 -148 b 351 24 347 -46 351 -14 b 350 63 351 37 350 50 b 347 86 347 71 347 79 b 386 229 347 132 380 179 b 392 305 389 253 392 279 b 372 449 392 354 384 403 b 357 520 364 472 357 495 b 359 540 357 527 357 533 b 361 580 361 553 361 567 b 348 704 361 624 354 664 b 347 716 348 708 347 713 b 357 757 347 732 351 744 b 405 982 383 831 405 904 b 379 1122 405 1031 397 1079 b 348 1145 373 1135 363 1149 z m 298 651 b 300 626 300 642 300 634 b 258 513 300 579 285 543 b 82 338 204 452 134 410 b 81 367 81 347 81 357 b 115 468 81 408 92 439 b 298 651 167 534 242 576 z m 297 370 b 310 377 301 374 305 377 b 321 361 314 377 317 373 b 328 320 325 347 328 333 b 266 212 328 275 302 239 b 75 48 202 161 135 112 b 117 194 76 107 81 157 b 297 370 174 255 236 311 z m 285 48 b 294 16 291 36 294 26 b 288 -7 294 9 292 1 b 228 -92 272 -37 255 -69 b 60 -233 173 -138 120 -184 b 285 48 78 -88 184 -23 z',\n },\n flag128thUp: {\n x_min: 0,\n x_max: 252,\n y_min: -804,\n y_max: 530,\n ha: 1334,\n o: 'm 298 -1158 b 328 -1126 312 -1158 320 -1139 b 330 -1116 330 -1123 330 -1119 b 347 -996 343 -1076 347 -1037 b 328 -837 347 -943 338 -890 b 320 -778 324 -816 320 -798 b 330 -733 320 -763 323 -749 b 340 -665 338 -714 337 -688 b 341 -645 340 -660 341 -652 b 333 -534 341 -609 333 -572 b 343 -471 333 -513 334 -492 b 361 -366 356 -436 361 -402 b 331 -202 361 -311 348 -256 b 328 -187 330 -197 328 -193 b 331 -179 328 -184 328 -181 b 363 -55 353 -137 363 -96 b 337 79 363 -12 351 33 b 327 114 333 92 327 104 b 344 144 327 124 331 132 b 359 174 353 150 357 163 b 361 228 360 193 361 210 b 243 517 361 337 325 435 b 147 596 213 546 179 569 b 75 708 111 626 75 655 b 62 744 75 723 68 733 b 50 763 58 752 58 763 b 46 762 49 763 48 762 b 17 742 36 757 22 757 b 0 697 14 726 0 711 b 1 595 0 662 3 631 b 0 469 0 552 0 511 b 1 429 0 456 0 442 b 22 289 6 382 22 337 b 24 128 22 238 24 184 b 22 66 24 108 23 86 b 19 -19 20 37 19 10 b 20 -132 19 -56 20 -95 b 13 -276 20 -180 19 -229 b 9 -359 10 -304 9 -330 b 12 -487 9 -402 12 -445 b 56 -582 12 -526 29 -554 b 197 -742 107 -632 160 -681 b 288 -1100 265 -851 276 -976 b 288 -1122 288 -1107 287 -1115 b 287 -1145 289 -1129 287 -1138 b 298 -1158 287 -1153 288 -1158 z m 304 150 b 75 475 229 256 112 334 b 304 150 233 357 305 287 z m 271 -73 b 127 72 233 -14 179 26 b 81 167 96 98 81 127 b 84 194 81 176 82 184 b 271 -73 148 102 242 39 z m 279 -396 b 132 -223 233 -330 180 -279 b 81 -112 104 -192 81 -156 b 82 -91 81 -105 81 -98 b 279 -396 167 -125 269 -281 z m 249 -609 b 69 -357 197 -520 88 -471 b 249 -609 131 -441 229 -498 z',\n },\n flag128thDown: {\n x_min: -0.8888888888888888,\n x_max: 252,\n y_min: -580,\n y_max: 754,\n ha: 1334,\n o: 'm 298 1086 b 287 1073 288 1086 287 1081 b 288 1050 287 1066 289 1057 b 288 1028 287 1043 288 1035 b 197 670 276 904 265 779 b 56 510 160 609 107 560 b 12 415 29 482 12 454 b 9 287 12 373 9 330 b 13 204 9 258 10 232 b 20 60 19 157 20 108 b 19 -53 20 23 19 -16 b 22 -138 19 -82 20 -109 b 24 -200 23 -158 24 -180 b 22 -361 24 -256 22 -310 b 1 -501 22 -409 6 -454 b 0 -541 0 -514 0 -528 b 0 -667 0 -583 -3 -624 b 0 -809 0 -675 -3 -791 b 46 -834 4 -825 36 -829 b 50 -835 48 -834 49 -835 b 62 -816 58 -835 58 -824 b 75 -780 68 -805 75 -795 b 147 -668 75 -727 111 -698 b 243 -589 179 -641 213 -618 b 361 -300 325 -507 361 -409 b 359 -246 361 -282 360 -265 b 344 -216 357 -235 353 -222 b 327 -186 331 -204 327 -196 b 337 -151 327 -176 333 -164 b 363 -17 351 -105 363 -60 b 331 107 363 24 353 65 b 328 115 328 109 328 112 b 331 130 328 121 330 125 b 361 294 348 184 361 239 b 343 399 361 330 356 364 b 333 462 334 420 333 441 b 341 573 333 500 341 537 b 340 593 341 580 340 588 b 330 661 337 616 338 642 b 320 706 323 677 320 691 b 328 765 320 726 324 744 b 347 924 338 818 347 871 b 330 1044 347 965 343 1004 b 328 1054 330 1047 330 1051 b 298 1086 320 1067 312 1086 z m 249 537 b 69 285 229 426 131 369 b 249 537 88 399 197 448 z m 279 324 b 82 19 269 209 167 53 b 81 40 81 26 81 33 b 132 151 81 84 104 120 b 279 324 180 207 233 258 z m 271 1 b 84 -266 242 -111 148 -174 b 81 -239 82 -256 81 -248 b 127 -144 81 -199 96 -170 b 271 1 179 -98 233 -58 z m 304 -222 b 75 -547 305 -359 233 -429 b 304 -222 112 -406 229 -328 z',\n },\n accidentalFlat: {\n x_min: 1,\n x_max: 209,\n y_min: -208,\n y_max: 472,\n ha: 680,\n o: 'm 29 -300 b 46 -289 33 -300 39 -297 b 107 -243 65 -274 86 -258 b 301 127 233 -153 301 -30 b 298 186 301 147 301 166 b 190 297 291 256 251 297 b 147 289 177 297 163 294 b 86 265 127 284 107 274 l 85 264 l 85 301 b 91 465 85 356 88 410 b 94 559 91 497 94 527 b 84 651 94 589 91 621 b 66 680 81 661 81 680 l 65 680 b 37 645 49 678 37 665 b 33 523 36 605 32 563 l 33 478 b 26 223 33 393 29 308 b 1 -141 22 101 1 -19 b 17 -287 1 -189 4 -239 b 29 -300 20 -295 23 -300 z m 68 -105 b 76 12 71 -68 72 -29 b 81 107 79 43 81 75 l 86 109 b 171 135 114 121 141 135 b 204 128 181 135 193 132 b 238 92 228 120 239 108 b 230 63 238 84 236 75 b 68 -105 193 -10 132 -59 z',\n },\n accidentalNatural: {\n x_min: 0,\n x_max: 213.5,\n y_min: -456,\n y_max: 462,\n ha: 918,\n o: 'm 255 -657 b 281 -624 271 -657 275 -636 b 285 -599 282 -615 285 -608 b 292 -300 288 -500 289 -400 b 289 -161 292 -253 289 -207 b 300 128 292 -65 297 32 b 304 168 300 128 302 150 l 304 173 l 305 190 l 305 199 l 307 225 b 304 259 307 229 310 246 b 272 298 297 274 302 305 b 63 266 204 279 134 272 b 72 514 68 348 72 432 b 71 595 72 541 72 567 b 56 665 71 619 66 642 b 17 579 9 651 17 608 b 3 144 19 433 7 289 b 0 -7 1 94 0 43 b 3 -134 0 -50 1 -92 b 7 -219 3 -163 7 -192 b 35 -251 7 -243 17 -251 b 49 -249 39 -251 43 -251 l 223 -223 l 230 -222 l 230 -359 b 223 -516 230 -410 223 -464 b 236 -619 223 -550 226 -585 b 255 -657 240 -634 236 -657 z m 58 -63 b 55 81 56 -14 53 33 l 56 99 b 85 99 65 99 75 98 b 232 108 134 104 183 107 l 240 109 l 236 66 b 232 -48 235 29 232 -10 b 58 -81 174 -63 115 -73 z',\n },\n accidentalSharp: {\n x_min: -22,\n x_max: 390,\n y_min: -384,\n y_max: 383,\n ha: 767,\n o: 'm 202 -553 b 219 -526 213 -552 216 -536 b 226 -471 225 -507 226 -488 b 225 -425 226 -455 225 -441 b 226 -392 225 -415 225 -402 b 233 -305 229 -363 232 -334 l 297 -292 b 331 -469 300 -353 311 -412 b 347 -485 333 -477 338 -485 b 363 -469 356 -487 359 -477 b 374 -418 373 -454 374 -435 b 376 -382 376 -405 376 -393 b 372 -276 376 -347 373 -311 l 455 -259 b 550 -156 534 -243 544 -232 b 550 -109 550 -137 552 -124 b 526 -78 549 -91 541 -78 l 523 -78 b 507 -79 517 -78 513 -78 b 403 -101 474 -88 438 -95 l 379 -105 b 382 -42 380 -85 380 -63 b 384 96 383 4 384 50 b 503 131 425 107 464 118 b 549 173 524 138 543 150 b 562 249 554 199 562 223 b 554 294 562 264 560 279 b 536 315 549 308 544 315 l 533 315 b 517 312 528 315 523 315 b 382 266 472 294 428 279 l 377 344 b 359 531 374 406 372 469 b 348 552 356 539 357 552 l 347 552 l 343 552 b 315 528 331 549 317 544 l 315 501 b 320 249 315 416 318 333 l 243 232 b 239 361 243 275 242 318 b 226 425 238 383 238 403 b 199 359 194 409 199 382 b 193 223 196 312 194 268 b 72 202 153 215 112 209 b 4 118 13 192 4 183 b 10 66 0 102 12 84 b 33 29 7 39 14 30 b 48 32 37 29 42 30 b 187 55 95 39 141 46 l 183 -75 b 176 -145 181 -99 179 -122 b 16 -179 122 -156 69 -166 b -32 -232 -14 -186 -32 -197 b -17 -331 -32 -266 -19 -298 b -1 -356 -17 -347 -13 -354 b 12 -353 1 -356 6 -354 b 167 -320 63 -341 115 -331 b 166 -377 166 -338 166 -357 b 189 -526 166 -428 171 -477 b 202 -553 192 -536 189 -553 z m 240 -132 b 243 -37 242 -101 242 -69 b 245 65 245 -3 245 30 b 315 79 269 69 292 73 b 301 -120 308 13 305 -53 z',\n },\n accidentalDoubleSharp: {\n x_min: 0,\n x_max: 287,\n y_min: -159,\n y_max: 159,\n ha: 318,\n o: 'm 84 -229 b 107 -216 91 -229 98 -225 b 200 -125 138 -186 167 -154 b 232 -95 212 -115 222 -105 b 347 -189 271 -125 310 -157 b 370 -200 356 -196 363 -200 b 396 -179 380 -200 389 -192 b 412 -102 410 -154 406 -125 b 377 -27 410 -69 400 -46 l 325 14 b 402 91 350 42 374 68 b 413 127 410 96 413 107 b 382 200 409 148 397 176 b 350 229 370 220 360 229 b 314 210 340 229 328 223 b 274 174 300 199 285 187 b 212 104 252 151 232 128 b 92 187 173 132 132 161 b 78 193 86 192 82 193 b 68 190 75 193 72 193 b 48 179 62 186 53 187 b 40 137 43 168 40 154 b 81 16 40 92 56 32 b 107 -3 89 10 98 4 b 14 -94 76 -32 45 -62 b 0 -124 6 -102 0 -114 b 12 -154 0 -134 3 -144 b 62 -215 26 -176 48 -193 b 84 -229 69 -225 76 -229 z',\n },\n accidentalDoubleFlat: {\n x_min: 0,\n x_max: 359,\n y_min: -220,\n y_max: 446,\n ha: 666,\n o: 'm 43 -317 b 72 -301 55 -317 63 -310 b 160 -186 108 -268 134 -226 b 236 -60 186 -145 212 -102 b 233 -131 235 -85 233 -108 b 239 -220 233 -161 235 -190 b 259 -246 240 -233 239 -240 b 301 -228 284 -252 291 -238 b 465 -7 369 -163 416 -85 b 517 173 500 48 517 108 b 451 307 517 229 505 284 b 409 315 436 312 422 315 b 331 287 382 315 356 305 b 311 274 324 282 320 274 l 310 274 l 310 566 b 305 621 310 585 312 603 b 294 642 301 628 305 642 l 292 642 b 264 622 282 641 266 636 b 253 575 259 606 256 590 b 246 418 248 523 246 471 b 248 243 246 360 248 302 l 248 187 b 164 238 220 225 193 238 b 85 213 140 238 112 226 b 84 229 85 220 84 225 b 86 315 85 258 86 287 b 81 528 86 386 82 458 b 71 582 81 547 78 566 b 56 603 66 590 68 603 l 53 603 b 23 580 40 600 26 598 b 19 537 20 566 19 552 b 20 514 19 530 19 521 b 26 390 24 472 26 432 b 14 66 26 282 16 174 b 0 -168 13 -12 0 -91 b 12 -279 0 -206 3 -242 b 30 -314 16 -294 14 -308 b 43 -317 35 -317 39 -317 z m 301 -72 b 302 7 302 -45 302 -19 l 302 86 b 351 158 304 121 321 145 b 383 166 361 163 373 166 b 435 143 402 166 419 157 b 445 127 441 138 445 132 b 441 114 445 122 444 118 b 301 -72 397 49 354 -14 z m 75 -147 b 73 30 75 -86 75 -29 b 118 82 73 62 92 76 b 132 84 124 84 128 84 b 190 52 156 84 174 69 b 193 40 192 49 193 45 b 192 33 193 37 193 35 b 75 -147 157 -30 125 -95 z',\n },\n accidentalParensLeft: {\n x_min: 0,\n x_max: 130.18934911242604,\n y_min: -270,\n y_max: 267.6082500723851,\n ha: 537.6082500723851,\n o: 'm 107 -389 b 127 -374 114 -389 120 -384 b 141 -347 132 -367 137 -357 b 151 -294 148 -330 151 -311 b 122 -207 151 -265 141 -236 b 63 -65 94 -164 72 -117 b 59 -10 60 -46 59 -27 b 145 223 59 78 94 153 b 187 354 176 262 189 305 b 177 384 187 364 190 380 b 143 373 166 387 153 383 b 124 354 137 367 130 361 b 0 -35 33 240 0 108 l 0 -92 b 85 -372 4 -193 27 -287 b 107 -389 92 -383 99 -389 z',\n },\n accidentalParensRight: {\n x_min: -0.4444444444444445,\n x_max: 139,\n y_min: -275,\n y_max: 277,\n ha: 552,\n o: 'm 58 -396 b 96 -354 75 -396 85 -370 b 200 13 168 -238 200 -111 b 153 268 200 109 184 190 b 49 392 131 320 101 364 b 26 399 40 397 33 399 b 0 366 10 399 0 387 b 0 318 -1 350 0 334 l 0 291 b 27 238 -3 266 7 253 b 143 9 105 180 143 98 b 141 -20 143 -1 143 -10 b 63 -225 135 -92 108 -164 b 36 -307 45 -251 36 -278 b 40 -344 36 -320 37 -331 b 42 -356 42 -347 42 -351 b 58 -396 42 -374 37 -396 z',\n },\n accidentalQuarterToneFlatStein: {\n x_min: 0,\n x_max: 208,\n y_min: -240,\n y_max: 440,\n ha: 680,\n o: 'm 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z',\n },\n accidentalThreeQuarterTonesFlatZimmermann: {\n x_min: 0,\n x_max: 422,\n y_min: -240,\n y_max: 440,\n ha: 680,\n o: 'm 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 336 -346 b 353 -336 340 -346 346 -343 b 413 -289 372 -320 393 -304 b 608 81 540 -199 608 -76 b 605 140 608 101 608 120 b 497 251 598 210 557 251 b 454 243 484 251 469 248 b 393 219 433 238 413 228 l 392 217 l 392 255 b 397 419 392 310 395 364 b 400 513 397 451 400 481 b 390 605 400 543 397 575 b 373 634 387 615 387 634 l 372 634 b 344 599 356 632 344 619 b 340 477 343 559 338 517 l 340 432 b 333 177 340 347 336 262 b 308 -187 328 55 308 -65 b 324 -333 308 -235 311 -285 b 336 -346 327 -341 330 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z m 374 -151 b 383 -35 377 -114 379 -75 b 387 60 386 -3 387 29 l 393 63 b 478 89 420 75 448 89 b 511 82 488 89 500 86 b 544 46 534 73 546 62 b 537 17 544 37 543 29 b 374 -151 500 -56 439 -105 z',\n },\n accidentalQuarterToneSharpStein: {\n x_min: 0,\n x_max: 300,\n y_min: -338,\n y_max: 351,\n ha: 689,\n o: 'm 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 l 35 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z',\n },\n accidentalThreeQuarterTonesSharpStein: {\n x_min: -23,\n x_max: 388,\n y_min: -373,\n y_max: 445,\n ha: 818,\n o: 'm 114 -537 b 138 -475 137 -518 138 -495 b 147 -292 138 -413 144 -353 b 212 -278 168 -287 190 -282 b 243 -444 215 -333 225 -389 b 261 -467 248 -454 251 -465 b 281 -446 272 -469 276 -455 b 292 -347 292 -416 288 -384 b 288 -262 289 -320 288 -291 l 374 -245 b 376 -311 374 -266 374 -288 b 390 -456 379 -357 379 -405 b 416 -396 412 -436 415 -418 b 423 -287 420 -360 423 -323 b 422 -235 423 -269 423 -252 b 451 -229 432 -233 441 -232 b 547 -98 524 -215 547 -199 l 547 -89 b 521 -49 546 -59 540 -49 b 497 -52 516 -49 507 -49 b 418 -68 469 -56 444 -63 b 423 52 419 -29 422 12 b 426 140 425 81 425 109 b 495 160 449 145 472 153 b 552 219 526 170 546 189 b 559 279 557 240 553 262 b 530 341 559 324 552 341 b 490 331 520 341 507 338 b 432 311 471 324 452 318 b 449 552 436 392 442 471 b 452 588 451 563 452 575 b 446 622 452 599 451 611 b 436 641 444 629 448 641 b 418 628 428 641 420 636 b 409 602 413 621 410 611 b 386 297 396 501 390 399 b 297 274 356 288 327 281 b 291 403 295 317 294 360 b 274 550 288 452 284 501 b 259 569 271 564 265 569 b 240 559 253 569 248 563 b 230 537 232 554 230 546 l 230 488 b 233 369 230 448 232 409 b 236 261 236 333 238 297 b 156 245 210 255 183 251 b 154 396 154 295 154 346 b 150 416 154 403 153 410 b 140 438 145 423 150 438 l 138 438 b 118 413 128 436 118 428 b 112 354 118 393 114 374 b 109 238 109 315 109 276 b 49 226 89 233 69 230 b 3 163 16 222 3 202 b 7 91 3 138 9 114 b 29 62 7 69 13 62 b 39 63 32 62 35 63 b 104 73 60 66 82 71 b 101 -10 104 46 102 17 l 92 -132 l 10 -150 b -33 -204 -19 -157 -33 -170 b -19 -310 -32 -240 -19 -274 b -6 -324 -19 -321 -13 -324 b 6 -323 -1 -324 1 -324 b 82 -307 32 -317 58 -311 b 81 -376 82 -330 81 -353 b 114 -537 81 -431 94 -484 z m 294 -92 b 297 -37 295 -73 295 -56 b 300 49 300 -9 300 20 l 300 108 b 379 127 325 114 353 120 b 374 -76 376 59 374 -9 b 294 -92 347 -82 320 -86 z m 154 -120 b 157 20 154 -73 156 -26 b 158 82 158 40 158 62 b 230 95 183 86 206 89 b 225 0 229 63 226 32 b 217 -107 223 -35 220 -71 z',\n },\n accidentalBuyukMucennebFlat: {\n x_min: 1.8692317181955784,\n x_max: 287,\n y_min: -248,\n y_max: 432.4720949426819,\n ha: 680.4720949426819,\n o: 'm 410 128 b 302 239 403 199 363 239 b 259 232 289 239 275 236 b 199 207 239 226 219 216 l 197 206 l 197 243 l 197 251 b 347 317 248 272 298 295 b 376 347 360 324 372 334 b 389 435 387 376 393 405 b 348 454 384 462 377 465 b 202 387 300 432 251 409 b 203 408 203 395 203 402 l 203 431 b 347 490 252 451 300 469 b 376 517 360 495 372 505 b 389 599 387 546 393 572 b 348 616 384 625 377 628 l 203 556 b 196 593 202 569 199 582 b 179 622 193 603 193 622 l 177 622 b 150 588 161 621 150 608 b 147 533 150 570 148 552 b 29 488 108 517 69 503 b 3 455 12 482 3 472 b 12 353 1 422 9 389 b 145 408 56 372 101 389 b 145 363 145 392 145 377 l 29 315 b 3 281 12 310 3 298 b 12 170 1 245 9 209 l 141 226 b 138 166 140 206 138 186 b 114 -199 134 43 115 -76 b 130 -344 114 -246 117 -297 b 141 -357 132 -353 135 -357 b 158 -347 145 -357 151 -354 b 219 -301 177 -331 199 -315 b 413 69 346 -210 413 -88 b 410 128 413 89 413 108 z m 350 35 b 343 6 350 26 348 17 b 180 -163 308 -69 245 -117 b 189 -46 183 -125 184 -86 b 193 49 192 -14 193 17 l 199 52 b 284 78 226 63 253 78 b 317 71 294 78 305 75 b 350 35 340 62 351 50 z',\n },\n accidentalBakiyeFlat: {\n x_min: 1.8692317181955784,\n x_max: 287,\n y_min: -236,\n y_max: 444,\n ha: 680,\n o: 'm 141 -340 b 158 -330 145 -340 151 -337 b 219 -284 177 -314 199 -298 b 413 86 346 -193 413 -71 b 410 145 413 107 413 125 b 302 256 403 216 363 256 b 259 249 289 256 275 253 b 199 225 239 243 219 233 l 197 223 l 197 261 b 199 334 197 285 199 310 b 347 406 249 357 298 382 b 376 439 360 413 372 425 b 390 516 384 465 390 490 b 389 537 390 523 390 530 b 372 564 384 556 382 564 b 348 557 367 564 359 562 b 204 487 300 537 253 510 b 206 518 206 497 206 507 b 196 611 206 549 203 580 b 179 639 193 621 193 639 l 177 639 b 150 605 161 638 150 625 b 145 482 148 564 144 523 l 145 458 b 29 405 107 439 68 420 b 3 366 12 397 3 386 b 12 243 1 325 9 287 b 143 307 56 265 99 285 l 138 183 b 114 -181 134 60 114 -59 b 130 -327 114 -229 117 -279 b 141 -340 132 -336 135 -340 z m 180 -145 b 189 -29 183 -108 184 -69 b 193 66 192 3 193 35 l 199 69 b 284 95 226 81 253 95 b 317 88 294 95 305 92 b 350 52 340 79 351 68 b 343 23 350 43 348 35 b 180 -145 305 -50 245 -99 z',\n },\n accidentalKomaSharp: {\n x_min: 0,\n x_max: 300,\n y_min: -338,\n y_max: 351,\n ha: 689,\n o: 'm 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 l 35 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z',\n },\n accidentalKucukMucennebSharp: {\n x_min: -0.15206251809627475,\n x_max: 359,\n y_min: -420,\n y_max: 343,\n ha: 763,\n o: 'm 236 -605 b 262 -543 256 -583 261 -564 b 269 -423 268 -503 269 -464 b 266 -340 269 -396 268 -367 l 361 -318 b 405 -276 384 -312 399 -298 b 413 -189 412 -248 416 -219 b 395 -164 412 -171 409 -164 b 382 -166 392 -164 387 -164 b 264 -193 343 -176 304 -184 b 269 -102 265 -163 268 -132 b 454 -62 331 -89 392 -78 b 501 -23 477 -58 494 -45 b 517 62 511 6 517 33 b 487 112 517 95 513 112 b 471 111 482 112 477 112 b 274 66 406 95 340 81 b 276 138 275 91 276 114 b 350 154 301 144 325 148 b 402 203 377 160 396 176 b 412 284 408 230 412 258 b 392 311 412 302 406 311 b 372 308 386 311 379 310 b 287 291 343 301 314 297 l 295 405 b 298 441 297 416 298 428 b 292 475 298 452 297 464 b 282 494 289 482 294 494 b 264 481 274 494 266 490 b 255 455 259 474 256 464 b 239 282 248 397 243 340 b 148 268 209 278 179 274 b 62 164 62 252 62 253 l 62 132 b 79 108 60 117 65 108 l 86 108 l 230 130 b 229 92 230 118 229 105 b 228 56 228 79 228 68 b 66 20 173 43 120 32 b 0 -59 6 7 3 1 l 0 -138 b 14 -160 -1 -156 4 -160 b 27 -158 19 -160 23 -160 b 222 -112 92 -141 157 -127 b 220 -203 220 -143 220 -173 b 147 -217 196 -207 171 -213 b 89 -288 92 -228 89 -229 b 95 -347 85 -305 96 -325 b 112 -374 92 -366 98 -374 b 125 -373 117 -374 121 -374 l 220 -351 b 222 -458 220 -386 220 -422 b 236 -605 223 -504 225 -552 z',\n },\n accidentalKoron: {\n x_min: 0,\n x_max: 303,\n y_min: -462.4598053473055,\n y_max: 180,\n ha: 642.4598053473055,\n o: 'm 59 -665 b 72 -649 69 -662 72 -657 b 69 -626 72 -642 69 -634 b 69 -622 69 -625 69 -624 l 69 -600 b 55 -156 60 -456 68 -311 b 86 -170 66 -166 76 -170 b 112 -163 95 -170 104 -166 b 390 -35 204 -120 298 -78 b 436 -1 409 -27 436 -27 b 396 46 436 22 413 33 l 382 55 b 46 243 271 121 157 179 b 12 259 29 253 17 259 b 0 219 1 259 0 248 b 3 -372 0 22 3 -176 b 6 -616 3 -454 6 -536 b 59 -665 6 -638 40 -671 z m 55 199 b 363 24 156 141 258 84 b 55 -118 259 -24 160 -69 z',\n },\n accidentalSori: {\n x_min: 0,\n x_max: 434,\n y_min: -295,\n y_max: 325,\n ha: 620,\n o: 'm 194 -425 b 196 -409 194 -418 196 -413 b 194 -194 196 -337 196 -266 b 364 -127 251 -171 308 -150 b 361 -321 363 -192 364 -256 b 410 -387 360 -357 373 -377 b 413 -373 412 -382 413 -377 b 418 -114 418 -287 418 -200 l 418 -105 b 595 -35 477 -82 536 -59 b 625 0 612 -27 625 -22 b 593 48 624 23 618 39 l 419 117 b 423 370 419 202 423 285 b 426 403 423 382 426 393 b 418 436 426 415 425 426 b 384 468 409 449 399 468 b 369 448 370 468 369 459 b 369 436 369 444 369 441 l 369 428 l 369 423 b 367 138 369 328 367 233 l 353 143 l 192 207 l 192 367 b 173 406 192 383 184 396 b 151 422 167 413 160 422 b 144 420 148 422 147 422 b 137 403 138 416 137 410 l 137 392 l 137 229 b 33 271 102 243 68 256 b 13 276 26 274 19 276 b 0 262 6 276 0 272 b 35 199 1 239 0 212 l 138 160 b 140 -148 138 58 138 -45 b 56 -181 111 -158 84 -170 b 24 -215 35 -189 24 -199 b 29 -235 24 -220 26 -228 b 49 -253 35 -249 42 -253 b 78 -240 59 -253 69 -243 b 140 -216 98 -233 120 -225 l 140 -356 b 194 -425 140 -406 141 -406 z m 194 -125 b 193 138 194 -37 193 50 b 315 89 233 122 275 107 b 366 71 333 84 350 76 b 364 -58 366 27 366 -16 b 194 -125 308 -81 251 -104 z m 419 49 l 526 7 l 485 -10 l 419 -36 z',\n },\n articAccentAbove: {\n x_min: 0,\n x_max: 425,\n y_min: 0,\n y_max: 326,\n ha: 326,\n o: 'm 27 1 b 78 12 46 0 62 6 b 347 112 168 45 253 91 b 521 184 409 128 459 167 b 608 259 557 194 589 220 b 612 274 611 265 612 271 b 598 292 612 281 608 287 b 477 347 559 312 518 331 b 176 465 374 384 275 425 b 156 469 168 468 161 469 b 125 456 145 469 137 465 b 53 370 96 432 78 399 b 45 353 48 363 45 357 b 68 333 45 344 52 337 b 360 225 166 298 262 261 b 192 154 302 203 249 171 b 13 36 120 132 53 105 b 0 13 9 29 0 22 l 0 9 b 16 0 3 1 10 0 l 26 0 b 27 1 27 0 27 0 z',\n },\n articAccentBelow: {\n x_min: 0,\n x_max: 425,\n y_min: -326,\n y_max: 0,\n ha: 326,\n o: 'm 26 -469 l 27 -469 b 78 -458 46 -469 62 -464 b 347 -357 168 -426 253 -380 b 521 -285 409 -341 459 -302 b 608 -210 557 -276 589 -249 b 612 -196 611 -204 612 -200 b 598 -179 612 -189 608 -183 b 477 -122 559 -157 518 -138 b 176 -4 374 -85 275 -45 b 156 0 168 -1 161 0 b 125 -13 145 0 137 -4 b 53 -99 96 -37 78 -71 b 45 -117 48 -107 45 -112 b 68 -137 45 -125 52 -132 b 360 -245 166 -171 262 -209 b 192 -315 302 -266 249 -300 b 13 -433 120 -337 53 -366 b 0 -456 9 -442 0 -448 l 0 -461 b 16 -469 3 -468 10 -469 z',\n },\n articTenutoAbove: {\n x_min: 0.35192668236256364,\n x_max: 471.1238660564107,\n y_min: 0,\n y_max: 56,\n ha: 56,\n o: 'm 137 0 b 197 1 156 0 179 1 b 409 6 268 1 338 6 b 482 4 432 6 459 6 b 556 0 508 3 534 0 b 651 10 588 0 621 3 b 678 27 662 12 678 10 b 654 59 680 45 672 53 b 511 75 606 73 560 73 b 255 81 426 78 341 81 b 160 79 222 81 193 79 l 36 79 b 1 71 24 78 7 85 b 19 32 -3 56 9 43 b 45 16 26 24 36 20 b 137 0 76 3 108 0 z',\n },\n articTenutoBelow: {\n x_min: 0.35192668236256364,\n x_max: 471.1238660564107,\n y_min: -59,\n y_max: -3,\n ha: 56,\n o: 'm 137 -85 b 197 -84 156 -85 179 -84 b 409 -79 268 -84 338 -79 b 482 -81 432 -79 459 -79 b 556 -85 508 -82 534 -85 b 651 -75 588 -85 621 -82 b 678 -58 662 -73 678 -75 b 654 -26 680 -40 672 -32 b 511 -10 606 -12 560 -12 b 255 -4 426 -7 341 -4 b 160 -6 222 -4 193 -6 l 36 -6 b 1 -14 24 -7 7 0 b 19 -53 -3 -29 9 -42 b 45 -69 26 -60 36 -65 b 137 -85 76 -82 108 -85 z',\n },\n articStaccatoAbove: {\n x_min: 1.4151102965496913,\n x_max: 112,\n y_min: 0,\n y_max: 156,\n ha: 156,\n o: 'm 98 0 b 132 23 109 0 122 7 b 161 112 150 50 161 79 b 158 148 161 124 161 137 b 125 186 154 167 131 167 b 63 225 117 215 85 216 b 23 197 45 222 30 219 b 3 91 12 163 12 127 b 19 66 0 79 4 69 b 65 27 40 62 53 46 b 98 0 76 9 88 0 z',\n },\n articStaccatoBelow: {\n x_min: 1.4151102965496913,\n x_max: 112.08403222864916,\n y_min: -156,\n y_max: 0,\n ha: 156,\n o: 'm 132 -202 b 161 -112 151 -174 163 -145 b 158 -76 161 -101 161 -88 b 125 -39 153 -58 131 -58 b 63 0 115 -10 85 -9 b 23 -27 45 -3 30 -6 b 3 -134 12 -62 10 -98 b 19 -158 0 -145 4 -156 b 65 -197 40 -164 53 -179 b 98 -225 75 -216 88 -225 b 132 -202 109 -225 122 -217 z',\n },\n articStaccatissimoAbove: {\n x_min: 0,\n x_max: 139,\n y_min: 0,\n y_max: 411,\n ha: 411,\n o: 'm 104 0 b 144 115 143 29 138 75 b 197 423 158 217 180 320 b 200 454 199 433 200 444 b 181 540 200 482 193 513 b 112 592 167 573 141 592 b 55 567 92 592 72 585 b 0 490 32 546 3 527 l 0 484 b 27 279 14 416 14 347 b 84 20 43 193 52 104 b 96 0 86 13 92 6 z',\n },\n articStaccatissimoBelow: {\n x_min: 0,\n x_max: 139,\n y_min: -411,\n y_max: 0,\n ha: 411,\n o: 'm 88 -592 b 145 -567 108 -592 128 -585 b 200 -490 168 -546 197 -527 l 200 -484 b 173 -279 186 -416 186 -347 b 117 -20 157 -193 148 -104 b 104 0 114 -13 108 -6 l 96 0 b 56 -115 58 -29 62 -75 b 3 -423 42 -217 20 -320 b 0 -454 1 -433 0 -444 b 19 -540 0 -482 7 -513 b 88 -592 33 -573 59 -592 z',\n },\n articMarcatoAbove: {\n x_min: 0.04121419527862119,\n x_max: 396,\n y_min: 0,\n y_max: 328.0000000000001,\n ha: 328.0000000000001,\n o: 'm 477 0 b 510 13 488 0 500 6 b 570 124 546 40 563 81 b 547 183 570 147 560 166 b 356 422 487 265 405 330 b 346 442 354 429 350 436 l 346 444 b 318 465 340 456 330 464 l 312 469 b 274 449 294 480 284 461 b 242 413 262 438 253 425 b 56 196 177 343 112 274 b 1 56 26 154 13 105 b 27 20 -4 35 9 20 b 42 23 32 20 37 20 b 84 53 59 29 72 39 b 255 269 141 125 193 200 b 275 229 262 255 266 242 b 448 14 324 151 390 86 b 477 0 456 4 467 0 z',\n },\n articMarcatoBelow: {\n x_min: 0,\n x_max: 395.9587858047214,\n y_min: -328.0000000000001,\n y_max: 0,\n ha: 328.0000000000001,\n o: 'm 258 -469 b 297 -449 276 -480 287 -461 b 328 -413 308 -438 317 -425 b 514 -196 393 -343 458 -274 b 569 -56 544 -154 557 -105 b 543 -20 575 -35 562 -20 b 528 -23 539 -20 533 -20 b 487 -53 511 -29 498 -39 b 315 -269 429 -125 377 -200 b 295 -229 308 -255 304 -242 b 122 -14 246 -151 180 -86 b 94 0 114 -4 104 0 b 60 -13 82 0 71 -6 b 0 -124 24 -40 7 -81 b 23 -183 0 -147 10 -166 b 215 -422 84 -265 166 -330 b 225 -442 216 -429 220 -436 l 225 -444 b 252 -465 230 -456 240 -464 z',\n },\n fermataAbove: {\n x_min: -0.04550444040404433,\n x_max: 472,\n y_min: 2.015071727506986,\n y_max: 454,\n ha: 451.984928272493,\n o: 'm 39 10 b 78 108 66 37 71 73 b 163 311 92 181 111 252 b 284 423 199 353 239 392 b 373 458 312 444 340 454 b 433 431 395 458 410 446 b 603 153 530 361 596 276 b 595 121 603 144 595 131 l 595 88 b 602 50 596 75 589 55 b 639 73 619 43 631 60 b 651 102 645 82 648 92 b 667 194 660 132 662 163 b 680 278 671 222 672 248 b 560 567 680 386 638 481 b 396 654 508 625 452 649 b 291 632 364 654 325 644 b 161 526 235 613 200 566 b 4 249 85 446 26 357 b 4 174 0 222 -3 196 b 10 19 4 124 4 69 b 29 4 12 6 16 0 b 39 10 35 4 33 4 z m 338 37 b 370 40 350 36 357 36 b 380 75 387 40 380 43 b 389 94 382 79 382 85 b 356 132 389 111 374 122 b 269 154 328 147 300 156 b 225 125 252 154 228 157 b 261 48 222 81 232 56 b 338 37 287 40 312 40 z',\n },\n fermataBelow: {\n x_min: -0.310835055998654,\n x_max: 518.570567335755,\n y_min: -430,\n y_max: -0.9161449836506543,\n ha: 429.08385501634933,\n o: 'm 344 -615 b 500 -543 402 -602 452 -576 b 713 -253 605 -471 661 -364 b 746 -98 737 -204 750 -153 b 727 -59 744 -82 744 -59 b 688 -88 711 -59 694 -68 b 678 -109 687 -96 683 -102 b 562 -314 648 -183 611 -252 b 387 -439 516 -373 458 -416 b 328 -449 367 -446 347 -449 b 180 -386 274 -449 225 -423 b 69 -179 111 -330 69 -262 b 75 -121 69 -160 71 -141 b 84 -58 78 -101 84 -79 b 82 -39 84 -52 84 -45 b 68 -1 79 -26 82 -4 b 26 -32 49 0 33 -12 b 20 -52 24 -39 22 -45 b 0 -223 9 -107 -3 -161 b 141 -553 1 -348 27 -468 b 304 -619 192 -590 243 -619 b 344 -615 317 -619 330 -618 z m 415 -190 b 435 -157 429 -192 435 -184 b 308 -27 435 -86 379 -27 b 271 -46 287 -27 272 -35 b 269 -69 269 -55 269 -62 b 364 -183 269 -128 302 -170 z',\n },\n fermataLongAbove: {\n x_min: 0,\n x_max: 591.4911182523068,\n y_min: -6,\n y_max: 337.10134960318186,\n ha: 343.10134960318186,\n o: 'm 20 -9 b 36 14 29 -9 35 3 b 49 109 45 45 49 78 b 48 143 49 121 49 131 b 42 312 40 200 45 256 b 63 338 42 331 46 338 b 68 340 65 338 66 338 b 279 333 138 336 209 334 b 760 317 439 330 599 323 b 783 298 775 317 782 315 l 796 161 b 814 17 801 115 802 68 b 851 144 840 45 855 102 b 824 396 842 228 834 312 b 760 468 816 459 812 467 l 55 485 b 1 433 12 487 1 478 l 1 387 b 0 203 1 325 0 264 b 9 17 0 141 3 79 b 20 -9 9 7 6 -9 z m 403 3 b 439 6 413 3 425 4 b 477 42 464 9 474 22 b 478 62 478 49 478 55 l 478 84 b 465 160 478 109 478 135 b 449 173 461 167 459 173 b 354 105 386 179 354 156 b 359 71 354 95 356 84 b 360 65 360 69 360 66 b 403 3 372 14 373 3 z',\n },\n fermataLongBelow: {\n x_min: 0,\n x_max: 602,\n y_min: -335,\n y_max: 7,\n ha: 342,\n o: 'm 793 -482 b 851 -444 822 -482 842 -471 b 867 -357 860 -416 867 -387 b 865 -336 867 -350 867 -343 b 851 -189 858 -287 855 -238 b 832 -32 847 -135 840 -84 b 824 -17 832 -26 832 -17 l 822 -17 b 805 -30 816 -19 806 -20 b 798 -88 802 -50 798 -69 b 805 -292 798 -157 801 -225 b 772 -327 806 -318 801 -327 b 360 -324 635 -327 497 -325 b 78 -327 265 -323 171 -327 b 50 -304 59 -327 50 -320 l 50 -297 b 62 -187 55 -261 60 -225 b 71 -60 62 -144 71 -102 b 68 -20 71 -48 71 -33 b 53 10 66 -10 69 10 l 52 10 b 22 -22 37 9 24 -1 b 14 -121 17 -55 16 -89 b 0 -359 10 -200 0 -279 b 6 -452 0 -390 3 -420 b 42 -481 9 -478 20 -481 l 415 -481 l 415 -482 z m 409 -183 b 454 -179 420 -183 435 -181 b 505 -124 487 -176 504 -158 b 505 -89 507 -112 505 -101 b 507 -58 505 -79 507 -68 b 505 -42 507 -52 507 -48 b 485 -10 503 -29 501 -10 b 448 -9 472 -9 461 -9 b 380 -22 425 -9 402 -12 b 363 -46 372 -27 363 -35 l 363 -49 b 364 -114 363 -71 361 -94 b 409 -183 374 -168 377 -183 z',\n },\n fermataVeryLongAbove: {\n x_min: 0,\n x_max: 715,\n y_min: -14.096346766617495,\n y_max: 437,\n ha: 451.0963467666175,\n o: 'm 26 -20 b 42 -4 36 -22 39 -12 b 49 53 49 14 49 33 l 49 448 b 69 478 49 467 52 478 l 72 478 b 81 480 75 478 78 478 b 144 477 102 477 122 477 l 207 477 b 943 471 452 477 698 471 b 978 442 966 471 976 467 b 989 99 985 327 985 213 b 999 -19 991 60 995 22 b 1030 62 1028 6 1030 35 b 1021 507 1028 210 1025 359 b 1012 596 1021 537 1017 567 b 976 624 1009 618 998 624 b 507 626 819 624 662 625 b 46 629 353 628 200 629 b 7 590 19 629 7 618 b 0 101 7 428 0 264 b 16 -4 0 65 13 32 b 26 -20 17 -10 22 -19 z m 187 -9 b 207 30 206 -7 204 14 b 207 55 209 37 207 46 b 200 240 210 117 197 179 b 219 262 200 256 203 262 l 223 262 b 456 252 301 258 379 255 l 772 239 b 804 209 792 238 802 235 b 818 69 806 163 809 115 b 834 -4 821 46 816 19 b 857 56 852 13 857 35 b 851 183 857 99 858 141 b 827 360 841 242 841 301 b 786 390 821 383 809 389 b 189 409 588 403 387 402 b 153 377 163 409 153 400 b 173 27 153 259 150 143 b 187 -9 176 13 177 -9 z m 478 3 b 536 10 491 3 510 6 b 582 60 569 14 580 32 l 582 89 l 580 89 b 580 117 580 98 582 107 b 540 171 577 158 572 171 b 521 171 534 171 528 170 b 459 166 500 170 480 168 b 423 132 436 164 423 154 b 428 88 423 118 425 102 b 478 3 438 22 439 4 z',\n },\n fermataVeryLongBelow: {\n x_min: -0.012345679012345682,\n x_max: 686.4443937550029,\n y_min: -427,\n y_max: 30,\n ha: 457,\n o: 'm 56 -615 b 282 -612 132 -612 207 -613 b 924 -606 497 -608 710 -606 b 973 -570 953 -606 968 -593 b 988 -455 984 -533 991 -494 b 982 -262 984 -390 982 -327 b 976 -69 982 -197 981 -134 b 976 -14 975 -50 976 -33 b 966 43 976 4 975 23 b 940 20 953 37 943 35 b 933 -76 936 -12 933 -45 b 935 -121 933 -91 933 -107 b 940 -307 940 -183 940 -245 l 940 -435 b 919 -458 940 -451 935 -458 b 894 -459 910 -458 903 -458 b 206 -467 665 -461 435 -467 b 88 -467 167 -467 127 -468 b 45 -425 45 -467 42 -465 b 46 -400 46 -416 46 -408 b 43 -325 46 -376 43 -350 b 42 -59 42 -236 42 -148 b 22 17 42 -32 36 -6 b 0 -27 -1 7 0 -10 b 7 -420 0 -158 7 -289 l 7 -474 b 16 -579 7 -510 7 -544 b 56 -615 22 -603 27 -615 z m 789 -390 b 835 -357 816 -392 829 -380 b 850 -256 844 -324 850 -291 b 848 -230 850 -248 850 -239 b 845 -135 845 -199 845 -167 l 845 -72 b 837 23 845 -40 848 -9 b 809 -27 809 14 809 -7 l 809 -222 b 788 -242 809 -238 805 -242 l 203 -229 b 180 -209 186 -229 180 -223 l 180 -160 b 179 -115 180 -145 180 -131 b 179 -50 177 -94 179 -72 b 163 24 179 -26 176 0 b 137 -6 145 19 140 10 b 134 -39 134 -17 134 -27 b 138 -105 134 -60 137 -82 l 138 -197 b 145 -343 138 -246 138 -294 b 179 -377 148 -364 151 -377 b 789 -390 383 -377 586 -380 z m 480 -164 b 566 -65 549 -164 566 -140 b 527 1 566 -10 564 1 b 436 -71 426 1 436 -9 l 436 -88 l 436 -143 b 454 -163 436 -153 439 -161 b 480 -164 464 -163 472 -164 z',\n },\n fermataShortAbove: {\n x_min: 0,\n x_max: 545,\n y_min: -18.08551453529649,\n y_max: 348,\n ha: 366.0855145352965,\n o: 'm 16 -26 b 36 -9 26 -27 30 -16 b 354 340 143 107 249 223 b 369 348 360 346 364 348 b 382 341 373 348 377 346 l 530 199 b 743 0 599 131 672 68 b 753 -7 747 -3 750 -7 b 762 -1 756 -7 759 -6 b 785 84 776 10 785 48 b 768 150 785 112 779 138 l 399 491 b 379 501 392 498 384 501 b 357 488 372 501 364 495 b 27 137 248 370 141 251 b 1 84 12 121 1 105 b 3 69 1 79 1 75 b 0 55 1 65 0 59 b 9 1 0 36 9 20 b 16 -26 10 -7 3 -22 z m 357 24 b 367 27 360 24 363 24 b 431 118 422 42 431 49 b 429 151 431 130 431 141 b 400 193 428 171 429 193 b 333 147 359 193 333 176 b 341 42 333 111 337 78 b 357 24 343 30 346 24 z',\n },\n fermataShortBelow: {\n x_min: 0,\n x_max: 565,\n y_min: -335,\n y_max: 10,\n ha: 345,\n o: 'm 386 -482 b 422 -455 395 -482 405 -474 b 732 -117 526 -343 631 -232 b 814 12 765 -79 799 -42 b 752 -22 780 14 768 -7 b 436 -320 645 -120 540 -219 b 419 -328 429 -325 425 -328 b 400 -318 413 -328 408 -325 b 35 0 279 -212 157 -105 b 16 14 29 4 23 14 b 7 12 13 14 10 14 b 0 -3 1 7 0 1 b 7 -23 0 -10 3 -17 b 20 -48 12 -30 14 -39 b 167 -238 60 -117 115 -177 b 351 -455 229 -310 289 -383 b 386 -482 367 -474 377 -482 z m 382 -213 b 406 -207 389 -213 396 -210 b 452 -156 431 -199 446 -180 b 461 -85 456 -132 458 -108 b 448 -32 461 -66 454 -49 b 418 -6 442 -12 431 -6 b 397 -9 410 -6 405 -7 b 348 -50 376 -14 350 -14 b 356 -170 348 -91 354 -130 b 382 -213 357 -199 363 -213 z',\n },\n breathMarkComma: {\n x_min: 0,\n x_max: 148,\n y_min: 0,\n y_max: 275,\n ha: 275,\n o: 'm 120 0 b 187 78 156 20 174 48 b 213 209 206 121 213 164 b 206 294 213 238 210 265 b 140 390 200 337 171 367 b 122 396 134 395 128 396 b 68 382 105 396 85 384 b 46 379 60 382 53 382 b 0 328 12 369 0 357 b 1 311 0 323 1 317 b 30 210 4 275 22 243 b 66 167 39 179 46 167 b 94 171 73 167 82 168 b 143 180 109 174 124 180 b 160 179 148 180 154 180 b 120 66 124 145 120 107 b 120 0 120 45 121 23 z',\n },\n breathMarkUpbow: {\n x_min: 0,\n x_max: 254,\n y_min: 0,\n y_max: 595,\n ha: 595,\n o: 'm 233 0 b 256 48 251 14 253 30 b 272 183 264 92 265 138 b 311 455 289 274 295 364 b 350 716 327 541 341 628 b 366 815 354 749 366 782 b 359 857 366 829 363 842 b 327 815 334 852 330 832 b 302 674 315 769 310 721 b 248 357 288 567 269 462 b 225 226 240 314 242 268 b 210 251 212 232 213 243 b 69 721 163 408 117 564 b 32 835 58 760 53 801 b 20 851 29 841 27 851 b 14 850 19 851 16 851 b 0 828 6 847 0 838 l 0 825 b 12 765 1 804 7 785 b 194 125 73 552 132 338 b 233 0 206 84 213 42 z',\n },\n caesura: {\n x_min: 0,\n x_max: 565.5831864753837,\n y_min: -0.09016994374947417,\n y_max: 562.4481112129314,\n ha: 562.5382811566809,\n o: 'm 0 76 b 49 122 24 92 37 107 b 444 613 180 287 305 455 b 528 770 484 660 518 708 b 531 792 530 778 531 785 b 524 808 531 799 530 805 b 490 792 513 815 498 802 b 390 683 456 756 420 721 b 48 262 275 543 164 400 b 0 76 0 207 7 145 z m 226 1 b 248 13 238 -4 243 7 l 353 137 b 759 638 490 302 632 464 b 814 805 795 688 819 740 b 779 786 796 805 788 796 b 628 609 724 732 678 668 b 310 242 523 485 416 363 b 217 69 265 190 217 140 b 222 30 217 58 219 45 b 222 23 222 29 220 26 b 220 12 222 20 220 16 b 226 1 220 7 222 3 z',\n },\n caesuraCurved: {\n x_min: 0,\n x_max: 386,\n y_min: -10,\n y_max: 584,\n ha: 594,\n o: 'm 180 -14 b 246 14 213 -13 230 0 b 347 144 288 52 315 99 b 526 471 420 246 488 350 b 556 671 546 537 556 603 b 543 798 556 713 553 756 b 504 837 537 822 521 828 b 490 841 500 840 494 841 b 472 832 482 841 477 838 b 406 678 436 785 406 737 b 410 638 406 665 408 652 b 425 511 419 595 425 553 b 315 186 425 395 387 287 b 180 -14 271 122 228 58 z m 14 24 b 49 39 29 24 40 32 b 120 114 76 60 99 85 b 216 276 156 166 184 223 b 317 626 281 384 317 501 b 315 664 317 639 317 651 b 301 773 314 701 311 737 b 262 808 295 795 278 808 b 245 799 256 808 249 805 b 170 641 209 750 170 706 b 171 621 170 634 170 628 b 177 511 176 585 177 549 b 114 229 177 415 160 320 b 0 26 79 161 42 95 b 14 24 6 24 10 24 z',\n },\n restMaxima: {\n x_min: 0,\n x_max: 366,\n y_min: -255,\n y_max: 255,\n ha: 510,\n o: 'm 397 -367 b 504 -343 436 -367 468 -347 b 518 -318 516 -341 518 -330 b 527 -30 518 -217 527 -117 b 526 33 527 -7 527 13 l 526 301 b 501 350 526 323 520 341 b 428 367 477 361 452 367 b 374 359 410 367 393 364 b 357 333 361 354 357 347 b 356 91 357 252 356 171 l 356 30 b 340 -307 357 -82 346 -194 b 397 -367 337 -354 350 -367 z m 46 -357 b 58 -356 49 -357 53 -357 b 154 -333 91 -351 121 -338 b 173 -305 168 -330 173 -320 l 173 302 b 132 356 173 330 157 348 b 68 364 112 363 89 364 b 3 304 19 363 1 348 l 3 4 l 0 4 b 1 -302 0 -98 0 -200 b 46 -357 1 -331 16 -357 z',\n },\n restDoubleWhole: {\n x_min: 0,\n x_max: 122,\n y_min: 0,\n y_max: 249,\n ha: 249,\n o: 'm 43 0 b 58 1 48 0 52 0 b 124 20 81 6 102 17 b 176 96 173 27 176 58 b 173 220 174 138 173 179 b 176 304 173 248 176 276 b 140 353 176 331 163 346 b 95 359 125 356 111 359 b 32 346 73 359 52 354 b 0 315 20 340 0 337 b 1 243 0 291 1 268 l 1 174 l 4 174 l 4 48 b 43 0 4 16 17 0 z',\n },\n restWhole: {\n x_min: 0.8908513171538642,\n x_max: 500,\n y_min: -120,\n y_max: 14,\n ha: 134,\n o: 'm 356 -173 l 356 -171 l 642 -171 b 719 -115 680 -171 717 -145 b 720 -82 719 -104 720 -92 b 711 -20 720 -60 719 -40 b 672 17 704 0 694 10 b 649 20 664 20 657 20 b 605 17 634 20 621 17 b 92 19 433 17 262 17 b 29 7 69 20 49 12 b 9 -17 12 4 9 -6 b 10 -43 9 -26 10 -35 b 1 -84 10 -58 3 -72 b 76 -173 0 -147 7 -173 z',\n },\n restWholeLegerLine: {\n x_min: -196.7269258015421,\n x_max: 685,\n y_min: -157,\n y_max: 29,\n ha: 186,\n o: 'm 96 -226 b 167 -223 121 -226 144 -225 b 300 -222 207 -222 252 -222 l 444 -222 b 660 -217 520 -222 595 -222 b 746 -131 703 -216 746 -200 b 744 -62 746 -108 747 -85 b 743 -39 743 -53 743 -46 b 789 -14 743 -16 752 -17 b 883 -16 821 -13 851 -16 b 965 -9 910 -16 937 -14 b 986 3 972 -7 986 -10 l 986 6 b 963 35 984 17 982 32 b 887 42 937 39 913 42 b 39 27 605 42 321 33 l -76 27 b -261 20 -138 27 -200 26 b -282 14 -269 20 -279 23 b -271 -7 -287 4 -276 -1 b -209 -27 -253 -23 -230 -24 b -153 -30 -190 -30 -173 -30 b -48 -29 -118 -30 -82 -27 b 6 -32 -22 -29 -6 -27 b 1 -72 3 -43 1 -58 b 4 -167 1 -105 7 -140 b 53 -223 3 -207 14 -217 b 96 -226 68 -226 82 -226 z',\n },\n restHalf: {\n x_min: 0,\n x_max: 518.3998530468286,\n y_min: 0,\n y_max: 162,\n ha: 162,\n o: 'm 98 0 l 556 0 b 665 1 592 0 629 0 b 746 82 720 3 743 29 b 736 174 749 114 740 144 b 670 232 729 215 708 232 b 570 229 636 232 603 229 b 356 233 498 229 426 233 l 73 233 b 0 179 19 233 0 220 b 1 154 0 171 0 164 b 6 95 4 135 6 115 b 98 0 3 27 29 0 z',\n },\n restHalfLegerLine: {\n x_min: -120,\n x_max: 448.2056815990121,\n y_min: -20,\n y_max: 143,\n ha: 163,\n o: 'm 397 -29 b 482 -23 426 -29 455 -27 b 526 -24 497 -24 511 -24 b 608 -17 554 -24 582 -23 b 645 -1 622 -14 644 -17 b 615 26 648 13 629 20 b 595 32 608 29 602 30 b 526 37 572 35 549 37 b 498 36 517 37 507 37 b 471 35 487 35 478 35 b 445 53 451 35 445 39 b 449 89 445 60 446 73 l 454 117 b 373 206 456 173 428 206 b 324 204 356 206 340 206 b 209 203 287 203 248 203 b 46 193 156 203 101 202 b 16 170 32 190 19 187 b 9 112 13 151 9 131 b 14 78 9 101 10 89 b 19 59 17 71 19 63 b -4 45 19 49 12 45 l -10 45 b -150 33 -58 45 -104 46 b -173 22 -158 32 -173 33 l -173 19 b -151 -13 -170 6 -168 -10 b -117 -17 -140 -16 -128 -17 b 118 -13 -37 -17 39 -13 b 397 -29 213 -13 308 -29 z',\n },\n restQuarter: {\n x_min: -0.3784452492533808,\n x_max: 263,\n y_min: -415,\n y_max: 415,\n ha: 830,\n o: 'm 151 -596 b 164 -563 163 -589 161 -575 b 160 -546 164 -557 161 -552 b 124 -396 148 -495 135 -446 b 122 -380 122 -390 122 -384 b 199 -255 122 -331 158 -272 b 228 -256 209 -249 217 -253 b 324 -346 274 -271 298 -310 b 353 -369 331 -356 341 -369 b 360 -367 356 -369 357 -369 b 379 -336 373 -361 379 -348 l 377 -325 b 344 -232 372 -292 366 -258 b 249 -58 301 -180 278 -117 b 242 -36 245 -49 242 -42 b 258 -7 242 -26 248 -17 b 328 78 284 20 311 45 b 354 158 344 104 354 131 b 337 216 354 177 350 196 b 213 435 294 288 249 359 b 115 575 189 487 158 536 b 78 598 105 585 92 598 b 59 592 72 598 66 596 b 39 562 45 583 39 572 b 53 527 39 550 45 539 b 168 344 98 469 125 402 b 187 307 181 328 187 317 b 153 269 187 294 176 284 b 62 213 122 252 91 235 b 40 180 48 203 40 192 b 46 158 40 173 43 166 b 99 65 60 125 79 95 b 183 -79 131 20 160 -29 b 156 -86 173 -88 164 -85 b 0 -261 58 -99 -7 -173 b 96 -557 10 -366 49 -464 b 124 -585 102 -569 109 -580 b 145 -598 132 -588 138 -598 b 151 -596 147 -598 150 -598 z',\n },\n rest8th: {\n x_min: 0,\n x_max: 289,\n y_min: -260,\n y_max: 261,\n ha: 521,\n o: 'm 164 -374 b 212 -340 190 -373 203 -357 b 276 -190 238 -292 258 -242 b 410 285 333 -36 359 128 b 416 314 413 294 416 304 l 416 321 b 393 354 415 341 410 354 b 382 353 389 354 386 354 b 292 311 347 347 315 333 b 174 225 256 276 216 251 b 157 219 168 222 163 219 b 140 228 151 219 145 222 b 131 246 134 233 131 240 b 135 262 131 252 132 256 b 147 298 141 272 147 285 b 127 367 147 323 154 354 b 94 376 114 373 102 376 b 48 336 75 376 63 363 b 3 181 20 288 12 235 b 0 150 1 170 0 160 b 109 24 0 84 35 24 b 171 36 127 24 148 27 b 289 101 213 52 248 75 b 164 -374 256 -62 193 -213 z',\n },\n rest16th: {\n x_min: 0,\n x_max: 333,\n y_min: -328.283950617284,\n y_max: 244,\n ha: 572.2839506172841,\n o: 'm 209 -471 b 246 -458 222 -477 236 -468 b 307 -338 279 -425 300 -384 b 324 -226 312 -301 317 -262 b 428 161 350 -94 386 35 b 480 318 445 215 480 259 b 467 347 480 331 477 341 b 445 351 461 350 454 351 b 408 337 432 351 419 347 b 402 333 405 336 403 334 b 223 215 344 294 294 245 b 236 259 229 233 235 246 b 238 276 238 265 238 271 b 212 338 238 302 226 334 b 193 341 206 340 199 341 b 86 289 156 341 104 317 b 59 180 66 255 59 217 b 156 27 59 76 92 27 b 236 46 179 27 204 35 b 338 101 271 59 298 82 b 289 -49 312 49 302 0 b 196 -122 276 -99 235 -107 b 176 -114 187 -127 176 -127 l 176 -111 b 157 -53 177 -88 164 -72 b 69 -9 141 -7 101 -16 b 17 -48 43 -3 29 -27 b 0 -127 4 -73 0 -99 b 6 -186 0 -147 1 -167 b 82 -294 17 -262 37 -294 b 160 -276 102 -294 128 -289 b 219 -242 181 -268 203 -259 b 236 -230 223 -236 229 -230 b 243 -232 239 -230 240 -230 b 235 -275 248 -246 239 -261 b 202 -456 220 -334 202 -395 b 209 -471 202 -462 203 -468 z',\n },\n rest32nd: {\n x_min: 0,\n x_max: 347,\n y_min: -497.5023916875033,\n y_max: 483,\n ha: 980.5023916875033,\n o: 'm 177 -716 b 217 -690 194 -720 209 -704 b 233 -655 225 -680 230 -668 b 292 -390 253 -567 275 -480 b 361 -48 312 -275 336 -161 b 452 400 393 102 422 252 b 497 629 467 477 482 553 b 500 647 498 635 500 641 b 480 691 500 665 492 684 b 464 696 475 694 469 696 b 418 674 448 696 431 685 l 361 626 b 333 611 353 618 343 612 b 308 629 325 611 317 616 b 239 667 292 651 265 661 b 204 670 228 668 216 670 b 86 559 141 670 95 628 b 85 537 86 552 85 544 b 107 416 85 495 95 455 b 161 372 114 389 134 372 b 174 373 166 372 170 372 b 226 383 192 374 209 377 b 387 478 285 402 330 444 b 364 386 379 444 364 415 b 276 271 364 323 320 298 b 265 266 272 268 268 266 b 252 276 261 266 256 269 b 143 333 229 311 186 333 b 107 327 130 333 118 330 b 43 243 62 314 46 291 b 58 145 43 210 52 179 b 150 63 68 92 99 63 b 315 132 213 63 259 98 b 266 -58 297 63 281 4 b 207 -101 259 -91 230 -96 b 186 -66 186 -107 199 -75 b 180 -50 181 -63 183 -55 b 101 -3 160 -23 135 -3 b 9 -66 59 -3 20 -32 b 0 -118 3 -84 0 -101 b 10 -196 0 -144 6 -170 b 104 -287 20 -256 52 -287 b 137 -282 114 -287 125 -287 b 184 -269 151 -281 171 -269 b 196 -275 190 -269 193 -271 b 199 -287 197 -278 199 -282 b 184 -343 199 -304 189 -325 b 181 -348 184 -346 183 -347 b 134 -595 158 -429 131 -508 b 156 -677 134 -624 150 -648 b 177 -716 158 -693 160 -713 z',\n },\n rest64th: {\n x_min: 0,\n x_max: 428,\n y_min: -720,\n y_max: 473.6797408388932,\n ha: 1193.6797408388932,\n o: 'm 200 -1037 b 229 -1012 215 -1037 222 -1025 b 238 -984 233 -1004 236 -994 b 282 -780 248 -914 265 -848 b 386 -369 317 -644 354 -507 b 491 104 422 -212 451 -53 b 600 541 528 249 550 399 b 616 629 611 570 616 599 b 600 680 616 648 615 671 b 550 665 586 687 566 677 b 480 618 527 649 501 635 b 464 611 474 613 468 611 b 448 622 458 611 454 615 b 366 662 425 651 397 662 b 331 658 354 662 343 661 b 242 572 285 647 253 619 b 236 528 239 557 236 543 b 266 400 236 484 251 442 b 325 373 274 377 301 373 b 436 409 366 373 403 383 l 494 452 b 474 360 485 416 474 389 b 383 248 474 297 435 269 b 320 328 377 288 351 310 b 276 341 305 337 291 341 b 186 269 235 341 194 311 b 181 230 183 256 181 243 b 187 153 181 204 186 179 b 279 63 192 86 233 63 b 304 65 288 63 295 63 b 416 115 344 72 379 92 b 387 -14 406 69 397 27 b 320 -95 380 -52 369 -86 b 318 -79 320 -89 320 -84 b 223 0 305 -29 271 0 b 122 -81 171 0 135 -30 b 118 -127 120 -96 118 -112 l 118 -196 b 137 -242 118 -215 125 -229 b 209 -275 157 -266 181 -275 b 249 -269 222 -275 235 -274 b 318 -248 272 -264 294 -255 b 281 -390 315 -301 292 -344 b 276 -400 279 -393 279 -397 b 259 -420 272 -408 266 -416 b 246 -429 255 -425 251 -429 b 233 -415 242 -429 238 -426 b 176 -359 225 -389 200 -372 b 121 -346 158 -348 140 -346 b 14 -408 73 -346 27 -370 b 0 -498 4 -438 0 -468 b 6 -564 0 -520 3 -543 b 91 -635 12 -611 45 -635 b 131 -629 104 -635 117 -634 b 223 -590 163 -622 190 -603 b 166 -824 203 -671 189 -747 b 148 -912 157 -852 148 -881 b 156 -955 148 -926 150 -940 b 177 -1008 161 -972 170 -991 b 200 -1037 181 -1020 183 -1037 z',\n },\n rest128th: {\n x_min: 0.6717818579024267,\n x_max: 491,\n y_min: -711,\n y_max: 719,\n ha: 1430,\n o: 'm 233 -1015 b 271 -956 256 -1002 266 -981 l 314 -723 b 393 -350 337 -598 366 -474 b 543 312 442 -128 492 91 b 687 841 583 490 635 665 b 707 958 698 880 707 919 b 706 986 707 968 707 976 b 688 1025 704 999 704 1024 b 670 1027 683 1025 677 1027 b 629 1007 655 1027 639 1022 b 559 945 613 981 586 968 b 541 1004 553 968 559 991 b 456 1035 516 1024 488 1035 b 419 1030 444 1035 431 1034 b 344 953 379 1018 353 995 b 340 900 341 936 340 917 b 341 847 340 881 341 864 b 380 779 340 815 354 793 b 464 763 406 765 435 762 b 592 814 510 763 549 786 b 546 660 575 757 556 710 b 480 585 537 619 517 598 b 478 599 480 590 478 595 b 386 678 472 641 428 678 b 294 612 343 678 304 651 b 279 477 282 567 278 521 b 363 395 281 428 317 395 b 380 396 369 395 374 395 b 488 436 416 403 449 419 b 384 233 469 357 468 275 b 359 291 373 252 377 276 b 282 318 337 310 310 318 b 181 264 243 318 203 298 b 154 107 153 216 154 161 b 242 6 154 42 187 6 b 278 10 253 6 265 7 b 408 88 330 22 366 55 b 387 -1 400 56 393 27 b 301 -112 379 -55 354 -94 b 289 -65 297 -95 302 -79 b 219 -32 269 -42 245 -32 b 183 -37 207 -32 196 -35 b 112 -109 144 -46 121 -71 b 105 -219 104 -145 108 -183 b 186 -315 101 -276 134 -315 b 230 -307 199 -315 215 -312 b 324 -256 264 -295 292 -275 b 180 -491 323 -383 266 -471 b 183 -459 180 -480 180 -469 b 184 -442 184 -454 184 -448 l 184 -436 b 135 -369 184 -403 170 -383 b 102 -363 125 -364 114 -363 b 29 -399 73 -363 45 -376 b 1 -556 -4 -448 6 -503 b 109 -670 -4 -625 43 -670 b 140 -667 118 -670 130 -668 b 253 -616 180 -658 213 -638 b 238 -688 248 -644 242 -665 b 192 -959 220 -779 192 -867 b 193 -992 192 -971 192 -981 b 210 -1024 194 -1014 199 -1024 b 233 -1015 216 -1024 223 -1021 z',\n },\n dynamicPiano: {\n x_min: -49,\n x_max: 326.5019318364244,\n y_min: -142,\n y_max: 515,\n ha: 657,\n o: 'm -56 -204 b -42 -202 -52 -204 -46 -203 b -19 -194 -35 -202 -26 -197 b 147 -138 35 -170 91 -151 b 249 -58 194 -127 223 -95 b 262 -29 255 -50 262 -39 b 258 -17 262 -24 261 -20 b 232 -7 252 -10 242 -7 b 210 -12 225 -7 217 -9 b 125 -40 184 -23 157 -30 b 183 140 153 19 171 79 b 251 167 207 144 230 153 b 469 518 383 262 480 382 b 357 687 472 626 420 687 b 315 678 344 687 330 684 b 204 600 279 664 240 634 b 210 704 206 635 209 670 b 215 721 212 710 215 716 b 206 733 215 727 212 730 b 180 742 197 736 189 742 b 164 734 176 742 170 740 b 1 575 108 684 36 645 b -7 557 -1 569 -7 563 b -6 553 -7 556 -7 554 b 7 547 -3 547 3 547 l 17 547 b 82 575 43 547 59 567 l 82 452 b 56 46 82 317 81 180 b 17 -66 49 7 46 -36 b -62 -173 -13 -99 -37 -135 b -71 -192 -66 -179 -71 -184 b -68 -199 -71 -193 -69 -196 b -56 -204 -65 -203 -60 -204 z m 196 258 b 197 266 197 261 197 264 b 200 510 200 347 199 429 b 233 543 210 521 222 533 b 281 560 249 554 266 560 b 340 503 310 560 333 540 b 344 461 343 488 344 474 b 321 323 344 413 333 369 b 268 272 315 300 295 281 b 196 258 245 265 220 261 z',\n },\n dynamicMezzo: {\n x_min: -18,\n x_max: 559,\n y_min: -50,\n y_max: 365,\n ha: 415,\n o: 'm 43 -71 b 160 19 86 -71 143 -26 b 230 264 189 99 200 184 b 282 363 243 297 259 327 b 287 320 285 347 287 333 b 284 279 287 305 285 292 l 249 -12 b 275 -43 248 -29 245 -43 b 395 45 321 -43 389 3 b 462 271 406 124 436 197 b 523 387 475 310 490 348 l 523 346 b 504 130 521 274 513 202 b 501 81 501 114 501 98 b 510 3 501 55 504 29 b 580 -72 521 -48 543 -72 b 625 -63 593 -72 608 -69 b 789 50 690 -43 744 -3 b 805 72 795 56 805 63 b 798 85 805 76 802 81 b 778 94 792 91 785 94 b 755 85 770 94 763 91 l 693 40 b 675 33 685 36 680 33 b 658 52 668 33 662 39 b 645 144 651 82 645 112 b 658 448 641 246 660 346 b 606 507 658 485 638 507 b 583 504 599 507 592 505 b 495 446 547 497 521 471 b 420 373 471 423 448 399 b 413 458 418 406 418 432 b 361 507 408 490 386 507 b 320 491 347 507 333 501 b 160 307 256 444 207 382 l 160 337 b 174 488 160 387 174 438 b 156 521 174 501 173 513 b 137 526 148 524 143 526 b 109 513 127 526 118 520 b -16 399 66 477 23 439 b -26 383 -20 395 -26 389 l -26 379 b -14 370 -24 372 -20 370 b -6 372 -12 370 -9 372 b 19 376 4 374 12 376 b 36 359 32 376 36 370 b 30 330 36 350 35 341 l 30 323 b 9 -35 23 203 17 85 b 43 -71 6 -65 19 -71 z',\n },\n dynamicForte: {\n x_min: -144,\n x_max: 311.30112136775,\n y_min: -115.3876295915697,\n y_max: 504,\n ha: 619.3876295915697,\n o: 'm -101 -166 b 173 76 7 -153 150 -30 b 206 344 192 164 202 253 b 268 338 226 343 246 341 b 384 395 317 333 353 361 b 397 419 393 405 397 412 b 367 442 397 429 387 436 b 350 444 361 444 356 444 b 206 455 302 449 255 454 l 206 474 b 202 540 204 495 202 518 b 209 593 202 557 203 576 b 236 624 215 613 225 624 b 265 612 245 624 253 619 b 308 552 287 596 302 577 b 336 533 312 534 323 533 b 448 611 366 533 444 583 b 399 696 452 648 423 671 b 382 706 395 700 387 703 b 308 726 357 720 333 726 b 207 684 272 726 239 711 b 60 455 135 622 60 560 l 10 455 b -23 448 -1 455 -13 454 b -102 372 -55 426 -76 397 b -109 357 -108 367 -109 361 b -95 347 -109 353 -105 348 b -63 346 -84 346 -73 346 b 0 344 -43 344 -22 344 l 63 344 b 53 186 63 291 59 239 b 23 0 46 124 42 60 b -35 -60 10 -42 -6 -60 b -73 -52 -45 -60 -58 -58 b -91 -48 -79 -49 -85 -48 b -109 -53 -96 -48 -102 -49 b -199 -124 -143 -72 -168 -99 b -207 -137 -203 -128 -207 -132 b -194 -148 -207 -141 -203 -145 b -101 -166 -164 -160 -132 -168 z',\n },\n dynamicRinforzando: {\n x_min: -75,\n x_max: 322.0960720195126,\n y_min: -90,\n y_max: 325,\n ha: 415,\n o: 'm 23 -130 b 40 -125 27 -130 33 -128 b 128 -9 81 -114 125 -53 b 145 200 132 62 141 130 b 148 238 147 212 148 225 b 308 321 184 291 245 321 b 363 314 325 321 344 318 b 377 310 369 312 373 310 b 384 311 380 310 382 310 b 464 415 410 317 464 389 b 446 433 465 429 455 429 b 390 445 428 441 409 445 b 305 429 361 445 334 438 b 167 346 252 413 202 393 b 153 325 163 338 158 333 b 148 438 154 363 151 399 b 121 468 147 456 134 468 b 101 458 115 468 108 465 b -63 310 46 409 -16 367 b -108 240 -78 289 -98 271 b 32 330 -50 256 -13 297 b 37 304 37 320 37 312 l 37 292 b 10 -101 27 161 20 30 b 23 -130 9 -120 12 -130 z',\n },\n dynamicSforzando: {\n x_min: 0,\n x_max: 296,\n y_min: 0,\n y_max: 379,\n ha: 379,\n o: 'm 151 0 b 174 1 160 0 166 0 b 392 158 272 14 346 71 b 405 207 400 174 405 190 b 359 287 405 236 389 265 b 261 325 328 308 294 315 b 168 413 216 340 181 366 b 166 426 167 418 166 423 b 176 438 166 432 167 436 b 199 441 183 441 190 441 b 310 393 238 441 295 422 b 334 370 317 376 325 370 b 363 386 343 370 353 379 b 422 445 386 402 408 420 b 426 458 425 449 426 454 b 422 469 426 462 425 465 b 274 546 395 518 333 546 b 161 503 232 546 190 531 b 86 405 132 472 108 439 b 71 347 75 387 71 367 b 112 256 71 312 85 279 b 209 215 141 232 176 226 b 284 168 238 206 266 197 b 300 131 291 157 300 144 b 298 120 300 127 298 122 b 278 107 294 109 285 108 b 262 108 271 107 266 108 l 259 108 b 114 157 200 107 156 125 b 96 181 104 163 96 170 l 96 184 b 102 202 96 190 102 196 b 96 209 102 204 101 207 b 63 194 82 215 72 204 b 7 109 42 168 26 138 b 0 86 3 101 0 94 b 13 60 0 78 4 68 b 151 0 53 23 101 0 z',\n },\n dynamicZ: {\n x_min: -42.73880183193087,\n x_max: 331,\n y_min: 0,\n y_max: 328,\n ha: 328,\n o: 'm -45 0 b -6 16 -32 0 -17 10 b 3 20 -3 16 0 19 b 144 60 49 48 96 60 b 284 22 190 60 238 46 b 348 4 305 10 327 4 b 461 75 393 4 435 30 b 468 91 464 81 467 86 b 456 104 468 95 465 99 b 287 173 402 131 348 167 b 239 176 271 174 255 176 b 168 174 217 176 194 174 b 367 340 236 236 298 294 b 459 423 402 363 432 392 b 477 454 467 431 475 442 b 474 462 477 456 475 459 b 454 472 469 469 462 472 b 432 468 446 472 439 469 b 356 448 406 461 380 455 b 210 422 307 433 258 422 b 109 442 177 422 144 428 b 94 445 104 444 99 445 b 69 433 85 445 76 442 b 27 390 56 419 39 406 b -9 343 16 373 -17 357 b 63 311 3 320 36 314 l 78 311 b 132 307 95 308 114 307 b 240 314 168 307 203 311 l 193 271 b -37 50 117 196 19 145 b -59 7 -46 36 -69 20 b -45 0 -55 3 -50 0 z',\n },\n ornamentTrill: {\n x_min: 1,\n x_max: 551,\n y_min: -18,\n y_max: 539,\n ha: 557,\n o: 'm 321 612 b 190 602 278 605 235 605 l 190 638 b 187 693 190 652 190 667 b 161 776 184 717 193 776 b 137 747 150 776 137 766 b 130 654 135 716 131 685 l 130 596 l 52 588 b 4 539 23 585 7 570 b 1 477 3 530 1 500 b 3 448 1 461 3 448 l 3 452 b 53 432 6 436 23 432 b 134 435 75 432 102 433 b 151 117 138 328 147 223 b 170 13 153 82 157 46 b 209 -26 179 -10 193 -26 b 222 -22 213 -26 217 -24 b 269 -17 233 -16 253 -27 b 343 135 325 19 346 66 b 343 158 343 147 344 147 b 323 192 341 171 337 187 b 291 176 311 194 300 184 l 264 148 b 229 131 261 145 238 131 b 212 170 209 131 213 154 b 194 438 203 259 199 348 l 272 442 b 284 452 276 441 279 441 b 305 462 287 461 295 462 l 312 462 b 346 477 325 462 340 464 b 366 560 357 503 366 531 b 321 612 366 598 356 618 z m 759 588 b 711 560 749 592 733 570 b 588 500 671 541 631 521 b 583 533 586 514 586 524 b 560 576 577 549 577 572 b 517 550 541 582 528 564 b 416 423 482 508 452 462 b 382 353 392 397 384 370 b 387 305 380 341 386 318 b 392 275 389 295 392 285 b 409 243 393 262 393 243 b 431 262 419 243 425 255 b 521 373 459 298 488 333 b 523 354 521 366 523 360 b 520 337 523 346 521 340 b 508 295 513 323 508 310 b 530 102 508 279 524 122 b 549 66 533 88 530 66 b 577 99 563 66 572 84 b 580 131 580 109 580 121 l 580 302 b 600 347 580 318 582 337 b 701 392 632 364 665 384 b 793 518 785 409 793 435 b 759 588 793 559 785 576 z',\n },\n ornamentTurn: {\n x_min: 0,\n x_max: 574,\n y_min: 0,\n y_max: 312,\n ha: 312,\n o: 'm 651 0 b 816 132 727 0 796 46 b 827 223 822 163 827 193 b 808 340 827 262 821 301 b 665 449 785 408 729 449 b 636 446 655 449 647 448 b 589 384 600 441 586 422 l 602 300 b 611 285 603 291 605 285 b 621 288 613 285 616 287 b 655 295 632 294 644 295 b 711 284 674 295 693 289 b 773 209 740 275 773 232 b 697 156 773 184 734 160 b 664 154 685 154 675 154 b 579 168 635 154 608 158 b 455 242 533 186 495 213 b 261 400 387 291 331 354 b 160 432 225 422 190 432 b 20 328 98 432 49 392 b 0 229 6 295 0 262 b 30 71 0 176 14 122 b 144 3 43 29 96 3 b 168 6 153 3 160 4 b 248 122 233 20 248 39 b 246 147 248 124 248 135 b 226 177 243 164 239 177 b 206 170 220 177 215 174 b 144 154 186 158 166 154 b 79 170 122 154 101 160 b 53 202 62 179 53 189 b 60 228 53 209 55 217 b 161 281 81 261 120 281 b 183 279 168 281 176 281 b 325 190 243 269 284 229 b 572 16 402 124 475 53 b 651 0 598 6 625 0 z',\n },\n ornamentTurnSlash: {\n x_min: 0,\n x_max: 574,\n y_min: -106,\n y_max: 405,\n ha: 511,\n o: 'm 441 -153 b 456 -60 455 -118 456 -89 b 455 81 455 -14 455 33 b 572 14 491 55 530 30 b 651 -1 598 4 625 -1 b 816 131 727 -1 796 45 b 827 222 822 161 827 192 b 808 338 827 261 821 300 b 665 448 785 406 729 448 b 636 445 655 448 647 446 b 589 383 600 439 586 420 l 602 298 b 611 284 603 289 605 284 b 621 287 613 284 616 285 b 655 294 632 292 644 294 b 711 282 674 294 693 288 b 773 207 740 274 773 230 b 697 154 773 183 734 158 b 664 153 685 153 675 153 b 579 167 635 153 608 157 b 455 240 533 183 495 212 b 454 242 455 240 455 242 l 454 337 b 452 488 454 386 452 439 b 433 570 452 517 451 546 b 425 583 431 575 431 583 l 422 583 b 403 566 415 582 408 573 b 402 546 400 560 402 553 l 397 287 b 261 399 353 325 310 366 b 160 431 225 420 190 431 b 20 327 98 431 48 390 b 0 228 6 294 0 261 b 30 69 0 174 14 121 b 144 1 43 27 96 1 b 168 4 153 1 160 3 b 248 121 233 19 248 37 b 246 145 248 122 248 134 b 226 176 243 163 239 176 b 206 168 220 176 215 173 b 144 153 186 157 166 153 b 79 168 122 153 101 158 b 53 200 62 177 53 187 b 60 226 53 207 55 216 b 161 279 79 259 120 279 b 183 278 168 279 176 279 b 325 189 243 266 282 226 b 395 130 348 168 372 148 b 393 71 393 109 393 89 b 441 -153 390 -6 402 -78 z',\n },\n ornamentMordent: {\n x_min: 0,\n x_max: 700,\n y_min: 0,\n y_max: 497,\n ha: 497,\n o: 'm 513 0 b 528 39 526 14 527 27 b 531 72 531 50 531 60 b 528 138 531 94 528 117 l 528 347 b 552 359 537 354 544 359 b 579 338 560 359 569 353 b 674 217 609 297 639 255 b 719 190 690 200 704 190 b 759 215 732 190 744 197 b 940 395 815 279 877 337 b 1001 490 968 422 986 455 b 1008 513 1004 495 1008 505 b 1002 524 1008 517 1007 521 b 968 516 994 530 978 524 b 960 508 965 513 963 510 b 798 356 900 464 848 410 b 778 341 791 347 783 341 b 757 354 772 341 765 346 b 661 475 720 392 690 432 b 611 517 644 504 629 517 b 563 498 598 517 583 511 b 527 471 550 490 539 481 l 527 570 b 492 716 526 619 523 671 b 472 677 480 704 472 694 b 465 399 474 585 468 491 b 439 366 456 387 448 376 b 384 320 415 336 399 320 b 330 367 369 320 354 336 b 325 376 328 369 327 373 b 226 490 291 413 265 456 b 189 505 213 500 202 505 b 157 491 177 505 167 500 b 0 229 75 420 0 346 b 1 202 0 220 0 212 b 22 215 12 203 16 209 b 124 327 55 252 89 289 b 147 343 132 337 140 343 b 171 323 156 343 164 336 b 266 197 196 276 232 236 b 337 157 291 170 314 157 b 410 207 361 157 386 174 b 461 274 428 229 444 252 b 462 166 461 238 461 202 b 513 0 465 108 487 55 z',\n },\n ornamentShortTrill: {\n x_min: 0,\n x_max: 747,\n y_min: 0,\n y_max: 243,\n ha: 243,\n o: 'm 379 0 b 428 14 395 0 410 4 b 474 56 445 26 461 39 b 552 157 500 89 526 122 b 566 168 556 163 560 168 b 575 157 569 168 572 166 b 664 36 592 107 628 72 b 733 1 685 13 710 1 b 802 35 757 1 780 13 b 1007 249 871 105 940 177 b 1067 324 1028 272 1054 295 b 1076 340 1068 330 1076 334 b 1073 346 1076 341 1076 343 b 1057 350 1068 348 1063 350 b 1047 347 1053 350 1050 350 b 1001 310 1031 336 1015 324 l 857 157 b 844 143 852 153 848 143 b 835 150 841 143 838 144 b 757 242 815 186 780 209 b 685 298 739 268 713 284 b 641 310 670 305 655 310 b 590 288 625 310 608 304 b 497 179 554 256 527 215 b 480 164 490 170 485 164 b 462 179 474 164 469 168 b 372 295 436 220 405 258 b 278 344 346 324 312 344 b 199 310 252 344 226 334 b 92 196 161 274 128 233 b 0 24 46 148 23 89 b 42 48 22 27 32 37 b 156 168 84 85 114 132 b 196 192 174 184 186 192 b 228 158 206 192 215 181 b 312 36 252 114 282 75 b 379 0 331 12 354 0 z',\n },\n ornamentTremblement: {\n x_min: 0,\n x_max: 982.17691453624,\n y_min: 0,\n y_max: 224,\n ha: 224,\n o: 'm 0 0 b 63 36 30 12 48 23 b 157 124 94 66 125 94 b 177 135 164 131 170 135 b 196 122 183 135 189 131 b 268 40 217 94 245 68 b 323 6 288 16 304 6 b 369 20 336 6 350 10 b 412 53 384 29 399 40 b 501 145 442 84 472 114 b 523 158 508 154 516 158 b 543 145 528 158 536 154 b 641 45 576 112 608 78 b 698 17 658 27 677 17 b 729 23 708 17 719 20 b 804 65 756 32 780 46 b 904 154 837 95 871 124 b 920 163 910 160 916 163 b 936 153 924 163 930 160 b 1024 60 965 121 996 92 b 1112 13 1053 29 1080 13 b 1184 39 1135 13 1158 22 b 1359 194 1248 84 1305 138 b 1413 301 1388 223 1403 261 b 1404 323 1417 315 1413 323 b 1391 320 1400 323 1395 321 b 1344 294 1375 314 1358 307 b 1224 186 1305 258 1269 216 b 1194 173 1212 179 1202 173 b 1165 193 1184 173 1175 179 b 1096 271 1145 222 1122 248 b 1001 318 1061 302 1031 318 b 903 268 969 318 937 301 b 806 186 871 239 841 210 b 782 174 796 179 789 174 b 756 193 773 174 765 180 b 652 291 729 232 693 266 b 596 308 634 302 615 308 b 530 278 573 308 552 298 l 415 168 b 393 157 408 161 400 157 b 373 171 387 157 380 161 b 305 245 353 197 330 222 b 248 276 285 266 266 278 b 189 245 229 276 210 266 b 81 144 156 209 120 174 b 0 0 33 109 26 56 z',\n },\n ornamentPrecompAppoggTrill: {\n x_min: -0.11067192132025548,\n x_max: 1066,\n y_min: -50,\n y_max: 533.1706452421108,\n ha: 583.1706452421108,\n o: 'm 187 -46 b 213 -14 197 -37 204 -26 b 285 151 251 36 266 94 b 304 189 294 177 297 189 b 337 168 311 189 320 181 b 458 33 386 131 415 76 b 495 12 472 19 484 12 b 531 40 508 12 518 22 b 580 168 557 79 569 124 b 622 235 592 213 603 235 b 683 194 636 235 655 222 b 838 26 737 140 791 86 b 919 -33 860 -1 881 -39 b 984 53 960 -27 971 19 b 1022 156 998 86 1008 122 b 1054 190 1032 179 1041 190 b 1089 167 1063 190 1074 183 b 1208 32 1129 122 1171 78 b 1244 10 1221 17 1231 10 b 1273 22 1253 10 1263 14 b 1496 206 1352 78 1427 137 b 1535 310 1526 236 1535 272 b 1531 359 1535 325 1534 343 b 1496 343 1515 360 1506 351 l 1309 192 b 1269 167 1289 176 1279 167 b 1234 199 1260 167 1251 177 b 1122 324 1200 243 1168 289 b 1074 344 1106 337 1089 344 b 1014 301 1051 344 1030 328 b 952 144 985 252 971 197 b 933 121 946 128 940 121 b 910 137 927 121 920 125 b 850 210 888 161 870 186 b 687 369 799 266 750 325 b 631 390 665 383 647 390 b 567 327 602 390 580 369 b 527 199 554 284 543 242 b 508 168 520 179 514 168 b 482 192 503 168 495 177 b 353 328 444 240 405 292 b 312 343 338 338 324 343 b 266 297 292 343 276 327 b 204 125 248 239 232 180 b 143 79 193 102 173 79 b 92 122 117 79 105 102 b 81 154 86 131 84 143 b 48 423 59 242 50 333 b 45 544 46 464 45 504 b 53 730 45 606 48 668 b 40 768 55 744 52 766 b 13 730 19 770 14 747 b 0 514 7 658 -1 586 b 26 122 3 383 6 252 b 75 -36 35 66 40 10 b 134 -72 92 -59 112 -72 b 187 -46 151 -72 170 -63 z',\n },\n ornamentPrecompSlideTrillDAnglebert: {\n x_min: 0,\n x_max: 1088,\n y_min: -380,\n y_max: 252,\n ha: 632,\n o: 'm 560 -539 b 439 -481 527 -497 484 -485 b 354 -461 409 -478 380 -477 b 131 -154 236 -389 161 -285 b 124 -98 127 -135 124 -117 b 196 55 124 -40 148 10 b 308 99 230 86 268 99 b 399 81 337 99 367 92 b 514 22 441 66 477 43 b 619 -30 567 -9 590 -30 b 719 17 642 -30 670 -16 b 861 131 769 52 818 88 b 899 150 874 144 887 150 b 936 117 913 150 926 138 b 965 43 948 94 956 68 b 1007 -1 973 24 978 -1 b 1048 30 1025 -1 1037 16 b 1070 65 1057 40 1064 52 b 1110 148 1084 92 1096 121 b 1145 190 1120 164 1120 190 b 1191 153 1169 192 1179 168 b 1256 29 1218 115 1231 68 b 1292 1 1267 10 1277 1 b 1320 10 1300 1 1309 4 b 1369 48 1339 19 1355 33 b 1515 196 1418 96 1464 148 b 1567 343 1558 238 1567 287 b 1555 363 1565 357 1562 363 b 1539 356 1551 363 1547 360 b 1433 268 1502 330 1466 301 b 1335 171 1401 236 1374 199 b 1310 163 1325 166 1318 163 b 1286 183 1302 163 1293 168 b 1218 311 1264 226 1247 272 b 1164 351 1200 337 1182 351 b 1110 308 1146 351 1128 337 b 1031 176 1084 265 1058 219 b 1015 161 1025 166 1021 161 b 999 179 1009 161 1005 167 b 955 279 985 213 973 248 b 913 307 943 300 930 307 b 887 302 904 307 896 305 b 852 281 874 298 863 291 b 693 167 804 236 747 204 b 612 140 667 150 639 140 b 549 157 592 140 570 145 b 403 220 503 181 452 202 b 271 248 360 236 315 248 b 179 229 239 248 209 242 b 0 -29 65 180 0 85 b 9 -104 0 -53 3 -78 b 397 -526 56 -317 183 -464 b 505 -547 432 -536 468 -547 b 560 -539 524 -547 541 -544 z',\n },\n ornamentPrecompSlideTrillBach: {\n x_min: 0,\n x_max: 1185,\n y_min: -380,\n y_max: 465,\n ha: 845,\n o: 'm 624 -544 b 642 -528 638 -543 642 -537 b 639 -514 642 -524 642 -520 b 590 -444 629 -487 609 -467 b 523 -413 573 -422 553 -410 b 498 -415 514 -415 507 -415 b 399 -389 464 -415 431 -405 b 89 -157 281 -330 176 -255 b 72 -117 78 -144 72 -131 b 73 -101 72 -111 72 -107 b 187 186 91 3 147 91 b 246 230 200 216 222 230 b 300 209 262 230 281 223 b 456 48 359 163 403 101 b 540 -10 494 10 518 -10 b 625 59 566 -10 589 13 b 690 148 648 88 668 118 b 711 167 697 160 704 167 b 733 153 719 167 724 163 b 844 14 769 105 808 60 b 903 -42 873 -23 886 -42 b 973 -1 919 -42 937 -27 b 1008 33 986 7 996 20 b 1048 81 1021 48 1035 65 b 1050 37 1048 66 1050 52 b 1047 -24 1050 17 1048 -3 b 1038 -275 1038 -108 1040 -192 l 1037 -289 b 1045 -302 1037 -295 1038 -301 b 1068 -284 1056 -304 1064 -292 b 1084 -242 1076 -271 1081 -256 b 1099 -109 1096 -199 1099 -154 b 1106 158 1099 -19 1106 71 b 1128 187 1113 167 1120 177 b 1168 223 1143 212 1155 223 b 1210 193 1179 223 1191 213 b 1220 183 1214 190 1215 186 b 1329 36 1261 138 1292 84 b 1374 7 1345 16 1358 7 b 1411 20 1384 7 1395 12 b 1479 84 1437 37 1459 59 b 1610 235 1521 135 1564 186 b 1706 403 1655 282 1695 334 b 1614 346 1663 400 1637 373 b 1464 170 1564 287 1515 228 b 1440 150 1453 156 1447 150 b 1414 173 1433 150 1426 158 b 1283 336 1371 228 1333 288 b 1220 366 1261 356 1240 366 b 1148 318 1194 366 1169 350 b 1103 255 1133 297 1119 275 b 1097 301 1102 271 1100 285 b 1099 334 1099 312 1099 324 b 1092 428 1099 367 1094 397 b 1071 647 1087 501 1079 575 b 1058 670 1071 657 1071 670 b 1035 648 1047 670 1038 661 b 1018 516 1024 605 1015 560 b 1041 203 1025 412 1037 307 b 1043 180 1041 196 1043 187 b 992 127 1027 161 1009 143 b 965 111 981 117 972 111 b 936 132 955 111 946 120 b 829 268 900 179 867 225 b 760 317 801 301 780 317 b 691 258 739 317 719 297 b 605 147 664 219 641 177 b 589 138 599 141 593 138 b 572 148 583 138 579 141 b 415 317 520 206 467 261 b 327 372 390 343 366 366 b 300 373 317 373 308 373 b 154 295 239 373 190 348 b 55 138 120 243 85 192 b 0 -53 22 79 0 13 b 160 -317 0 -156 49 -252 b 209 -354 177 -327 192 -343 b 510 -531 305 -419 397 -495 b 593 -547 537 -540 564 -547 b 624 -544 603 -547 613 -546 z',\n },\n ornamentPrecompTrillSuffixDandrieu: {\n x_min: 0,\n x_max: 1003,\n y_min: -20,\n y_max: 521,\n ha: 541,\n o: 'm 791 -16 b 844 33 812 -3 829 14 b 981 271 900 107 937 190 b 994 288 984 278 985 288 b 1009 269 1004 288 1007 278 b 1077 112 1034 217 1051 163 b 1158 43 1103 62 1129 43 b 1231 69 1179 43 1204 55 b 1348 189 1280 98 1315 143 b 1444 451 1407 271 1444 357 b 1431 547 1444 482 1440 514 b 1188 750 1401 665 1299 750 b 1158 747 1178 750 1168 749 b 1079 684 1119 742 1089 727 b 1063 632 1076 665 1071 648 b 1056 609 1058 622 1056 615 b 1071 599 1056 602 1060 599 b 1086 600 1076 599 1080 600 b 1130 605 1102 603 1116 605 b 1244 569 1171 605 1210 595 b 1349 346 1322 511 1349 433 b 1348 312 1349 334 1349 324 b 1289 197 1345 266 1325 228 b 1238 174 1270 181 1253 174 b 1188 215 1220 174 1202 187 b 1145 308 1172 245 1159 276 b 1096 413 1129 343 1120 382 b 1053 438 1084 431 1068 438 b 1011 413 1038 438 1022 431 b 955 324 989 384 971 354 b 850 127 920 258 886 192 b 838 112 847 121 842 112 b 824 128 828 109 825 121 b 802 193 815 150 809 171 b 730 400 779 264 766 337 b 688 431 719 420 703 431 b 647 403 674 431 660 422 b 606 338 632 383 619 361 b 513 167 575 282 546 223 b 480 122 503 150 498 122 b 452 171 459 122 459 153 b 420 255 442 199 432 228 b 337 408 399 308 380 364 b 276 436 317 428 297 436 b 215 397 253 436 230 423 b 23 72 148 289 81 184 b 0 29 17 59 0 40 b 7 17 0 23 1 20 b 59 58 26 7 46 39 b 190 276 111 127 143 206 b 216 301 202 292 207 301 b 245 279 223 301 232 294 b 311 166 278 248 292 206 b 367 16 331 117 346 65 b 402 -19 377 -7 387 -19 b 438 -4 412 -19 423 -13 b 518 88 474 17 495 55 b 628 284 562 150 592 216 b 657 223 648 266 651 243 b 717 13 677 154 696 84 b 755 -29 726 -16 737 -29 b 791 -16 765 -29 776 -24 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefix: {\n x_min: 0,\n x_max: 1246,\n y_min: -30,\n y_max: 296.0302860502196,\n ha: 326.0302860502196,\n o: 'm 360 -43 b 559 59 445 -43 503 7 b 698 236 615 111 652 179 b 714 248 704 243 710 248 b 727 235 719 248 721 243 l 848 42 b 883 12 860 22 870 12 b 917 32 891 12 903 19 b 946 62 927 42 939 50 b 1037 192 972 108 1009 147 b 1057 210 1044 204 1051 210 b 1076 190 1063 210 1068 203 l 1176 12 b 1215 -19 1188 -9 1201 -19 b 1250 -6 1225 -19 1237 -14 b 1284 27 1264 3 1274 16 b 1380 190 1323 78 1351 135 b 1395 210 1384 197 1385 210 b 1413 190 1405 210 1410 197 b 1508 40 1436 134 1467 85 b 1564 3 1529 14 1547 3 b 1617 32 1580 3 1597 12 b 1767 238 1678 92 1719 167 b 1794 310 1781 259 1791 282 b 1752 294 1776 317 1764 304 b 1656 164 1711 258 1689 206 b 1629 144 1646 151 1637 144 b 1603 161 1620 144 1613 150 b 1502 315 1562 207 1525 258 b 1452 357 1490 344 1470 357 b 1397 320 1431 357 1411 344 b 1316 170 1368 271 1345 219 b 1280 127 1306 154 1303 127 b 1244 171 1256 127 1254 154 b 1145 337 1210 226 1179 282 b 1110 363 1135 354 1122 363 b 1070 338 1097 363 1084 354 b 1050 311 1063 330 1057 320 b 959 181 1017 271 992 223 b 939 167 950 173 945 167 b 920 184 933 167 927 173 b 818 343 887 238 852 291 b 759 395 795 377 778 395 b 701 344 742 395 724 377 b 698 338 700 341 700 340 b 544 154 652 272 605 207 b 412 98 501 117 458 98 b 304 130 377 98 341 108 b 95 373 204 187 144 275 b 58 426 85 393 82 428 b 19 366 26 426 26 389 b 0 307 13 346 0 327 b 4 287 0 300 1 294 b 174 36 49 194 91 102 b 360 -43 230 -9 289 -43 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefixTurn: {\n x_min: 0,\n x_max: 1226,\n y_min: -237,\n y_max: 436,\n ha: 673,\n o: 'm 1279 -341 b 1293 -252 1293 -307 1295 -278 b 1277 36 1287 -156 1282 -59 l 1273 118 b 1318 176 1289 137 1303 157 b 1349 203 1332 193 1342 203 b 1378 168 1359 203 1367 192 b 1456 35 1401 122 1428 78 b 1511 -12 1476 3 1493 -12 b 1568 23 1526 -12 1544 0 b 1597 53 1578 32 1588 42 b 1705 186 1629 101 1669 143 b 1761 284 1728 216 1751 246 b 1765 300 1763 288 1765 295 b 1763 307 1765 302 1765 305 b 1737 302 1754 311 1744 308 b 1718 287 1729 298 1725 292 b 1598 145 1673 245 1637 194 b 1578 130 1590 135 1584 130 b 1557 147 1571 130 1565 135 b 1447 321 1516 202 1488 265 b 1403 351 1433 341 1417 351 b 1358 323 1388 351 1372 341 b 1269 209 1329 285 1299 248 b 1254 521 1264 314 1259 418 b 1228 616 1253 554 1247 588 b 1218 628 1224 621 1223 628 l 1215 628 b 1201 613 1210 626 1202 619 b 1200 600 1200 609 1200 605 l 1200 586 b 1211 348 1204 507 1207 428 b 1217 166 1214 288 1215 226 b 1202 181 1212 168 1208 174 b 1094 334 1168 233 1130 284 b 1048 366 1079 356 1064 366 b 1004 331 1034 366 1018 354 b 904 154 969 275 930 220 b 873 202 887 171 880 187 b 778 356 845 256 819 311 b 737 379 763 372 750 379 b 698 353 724 379 711 370 l 621 232 b 415 114 570 154 495 114 b 302 138 377 114 340 121 b 73 400 187 192 117 284 b 55 420 69 415 62 420 b 42 410 50 420 45 416 b 0 292 23 373 0 334 b 4 262 0 282 1 272 b 168 39 32 168 92 99 b 359 -26 225 -6 292 -26 b 585 76 446 -26 530 10 b 668 202 616 115 641 160 b 693 228 680 219 687 228 b 720 203 700 228 707 219 b 801 63 752 160 775 111 b 844 7 812 42 818 7 b 910 66 877 6 894 39 b 923 94 916 75 919 85 b 995 219 945 137 968 179 b 1025 184 1009 210 1017 197 b 1119 56 1054 141 1087 98 b 1166 20 1138 32 1152 20 b 1215 50 1181 20 1195 30 b 1221 56 1217 52 1218 55 b 1228 -163 1223 -17 1225 -89 b 1279 -341 1231 -223 1251 -278 z',\n },\n ornamentPrecompTrillLowerSuffix: {\n x_min: 0,\n x_max: 833,\n y_min: -309,\n y_max: 319,\n ha: 628,\n o: 'm 778 -444 b 801 -445 785 -444 793 -445 b 1037 -338 894 -445 969 -397 b 1200 37 1149 -240 1200 -109 b 1084 406 1200 171 1172 300 b 1024 444 1064 431 1043 444 b 960 390 999 444 978 426 b 841 163 923 314 886 236 b 812 128 832 150 827 128 b 786 167 796 130 793 153 b 660 418 744 251 716 341 b 599 459 639 445 619 459 b 541 410 577 459 557 444 b 439 197 507 340 474 269 b 422 179 435 190 435 179 b 338 393 392 251 379 328 b 275 439 320 423 298 439 b 212 396 253 439 230 425 b 71 219 170 333 128 268 b 0 45 17 173 16 112 b 68 98 32 62 50 78 b 194 264 112 150 153 209 b 230 292 209 282 219 292 b 264 261 240 292 251 282 b 274 242 268 255 269 248 b 346 46 304 179 325 112 b 376 10 351 32 354 10 b 412 35 392 10 403 22 b 452 107 429 56 441 82 b 541 291 481 168 511 230 b 556 307 547 302 552 307 b 573 295 562 307 567 302 b 624 217 595 272 611 246 b 721 1 657 145 685 72 b 755 -27 732 -19 742 -27 b 786 -16 765 -27 775 -24 b 857 73 819 7 840 39 b 952 256 887 134 920 194 b 978 289 963 279 969 289 b 1009 262 985 289 994 281 b 1030 235 1017 253 1024 245 b 1110 -4 1071 161 1099 81 b 1116 -68 1113 -26 1116 -48 b 1009 -243 1116 -140 1090 -200 b 848 -291 956 -272 901 -291 b 730 -261 809 -291 770 -282 b 696 -248 714 -252 703 -248 b 671 -284 684 -248 678 -258 l 662 -312 b 657 -357 658 -330 657 -344 b 744 -439 657 -403 683 -425 z',\n },\n brassScoop: {\n x_min: -0.4444444444444445,\n x_max: 312,\n y_min: -390,\n y_max: 28,\n ha: 418,\n o: 'm 0 -562 b 393 -256 171 -504 307 -412 b 449 -39 431 -189 449 -115 b 448 -1 449 -26 449 -14 b 433 40 446 14 448 40 b 408 -3 410 40 412 14 b 396 -66 403 -23 402 -46 b 45 -397 346 -243 209 -337 b 0 -451 13 -409 1 -423 b 0 -562 -1 -485 0 -520 z',\n },\n brassDoitMedium: {\n x_min: -0.32815253965710617,\n x_max: 476.21251177608565,\n y_min: -50,\n y_max: 333.1535583875376,\n ha: 383.1535583875376,\n o: 'm 16 -72 b 27 -71 19 -72 23 -72 b 215 -33 89 -56 153 -48 b 521 114 327 -7 435 35 b 685 432 615 199 691 295 b 670 480 684 449 688 475 b 642 441 654 482 648 456 b 403 183 599 321 513 240 b 79 89 301 130 192 105 b 0 -1 -12 76 0 76 b 0 -50 0 -17 1 -33 b 16 -72 0 -65 3 -72 z',\n },\n brassFallLipShort: {\n x_min: 0,\n x_max: 298,\n y_min: -344,\n y_max: 65,\n ha: 409,\n o: 'm 396 -495 b 420 -461 412 -487 418 -474 b 429 -382 428 -435 429 -409 b 426 -330 429 -364 428 -347 b 285 -6 410 -209 356 -104 b 98 94 239 59 173 94 b 39 86 79 94 58 92 b 0 49 20 81 0 73 l 0 -52 b 10 -69 0 -62 1 -69 b 20 -68 13 -69 16 -69 b 88 -56 45 -59 66 -56 b 261 -160 156 -56 213 -95 b 396 -495 333 -259 382 -369 z',\n },\n brassLiftMedium: {\n x_min: 0,\n x_max: 807,\n y_min: 0,\n y_max: 838,\n ha: 838,\n o: 'm 50 0 b 55 1 52 0 53 0 b 58 23 65 7 59 16 b 55 58 56 36 55 48 b 130 117 55 99 75 112 b 220 213 202 121 220 141 b 315 308 220 289 238 308 l 336 308 b 408 380 393 310 406 321 b 461 452 409 438 416 452 b 485 451 468 452 477 451 b 569 510 531 448 556 464 b 573 543 572 520 572 531 b 657 619 580 605 595 618 b 698 621 670 619 684 619 b 788 700 749 625 778 649 b 798 778 792 726 793 752 b 873 857 806 841 809 845 b 985 950 927 867 973 887 b 1084 1047 1002 1035 1004 1034 b 1162 1128 1133 1056 1162 1087 b 1146 1182 1162 1145 1158 1164 b 1125 1207 1140 1191 1136 1207 l 1122 1207 b 1110 1191 1113 1205 1110 1198 b 1112 1174 1110 1185 1112 1178 b 1048 1110 1109 1126 1096 1113 b 1028 1109 1043 1110 1035 1109 b 939 1022 969 1102 948 1081 b 845 922 929 949 917 936 b 746 812 773 909 753 886 b 744 780 744 802 744 791 b 635 681 737 700 717 683 b 524 583 553 680 536 665 b 439 510 514 520 503 510 b 357 431 377 510 360 492 l 357 406 b 314 364 356 379 343 364 b 238 361 288 364 264 364 b 173 300 202 357 180 334 b 167 245 168 281 167 262 b 105 174 166 192 157 180 b 75 171 95 173 85 171 b 6 112 30 166 14 153 b 0 73 1 98 0 85 b 37 10 0 45 13 26 b 50 0 42 7 46 0 z',\n },\n brassFallRoughMedium: {\n x_min: 0,\n x_max: 791,\n y_min: 0,\n y_max: 819,\n ha: 819,\n o: 'm 1117 0 b 1139 101 1129 26 1139 71 b 1138 121 1139 109 1139 115 b 1084 193 1125 171 1110 193 b 1044 183 1073 193 1060 189 b 1022 177 1035 179 1028 177 b 1007 209 1012 177 1008 186 b 876 324 1004 292 959 330 b 799 317 850 321 825 320 b 759 354 772 314 755 320 b 760 373 760 360 760 366 b 759 392 760 379 760 384 b 681 477 753 451 730 477 b 654 474 672 477 664 475 b 606 467 638 471 622 468 b 586 465 599 465 592 465 b 564 481 570 465 564 469 b 569 505 564 487 566 495 b 575 553 572 521 575 537 b 572 585 575 564 573 575 b 481 665 560 657 539 668 b 412 665 458 664 435 665 b 382 690 392 667 382 672 b 383 700 382 693 383 696 b 386 773 387 724 387 749 b 297 858 382 828 351 857 b 229 861 274 858 251 858 b 190 897 207 863 193 871 b 163 1012 186 936 180 976 b 79 1084 145 1050 124 1084 b 66 1083 75 1084 71 1083 b 43 1096 49 1081 43 1087 b 48 1112 43 1100 45 1106 b 53 1130 52 1119 53 1125 b 39 1169 53 1145 45 1158 b 26 1179 36 1175 30 1179 b 16 1171 22 1179 17 1176 b 0 1103 10 1149 0 1126 b 9 1067 0 1092 1 1079 b 91 1021 26 1031 52 1018 b 145 978 122 1024 141 1011 b 156 913 147 956 151 935 b 291 795 170 831 210 795 b 346 768 337 795 346 796 b 344 743 346 760 344 753 b 343 716 344 733 343 724 b 455 600 343 651 390 602 b 505 605 471 599 490 605 b 528 598 514 605 523 603 b 536 579 534 592 536 586 b 524 523 536 562 526 541 b 523 505 524 517 523 511 b 621 405 523 442 560 405 b 639 406 626 405 634 406 b 677 413 652 408 664 410 b 701 416 687 415 696 416 b 721 392 716 416 721 410 b 720 373 721 386 720 380 b 831 255 714 301 759 252 b 897 261 854 255 876 261 b 926 262 909 261 919 262 b 969 197 963 262 965 252 b 971 184 969 193 971 189 b 1031 115 979 137 998 115 b 1071 122 1043 115 1056 118 b 1096 130 1079 125 1086 127 b 1087 59 1094 107 1087 82 b 1117 0 1087 37 1094 17 z',\n },\n brassBend: {\n x_min: 0,\n x_max: 381,\n y_min: 0,\n y_max: 367,\n ha: 367,\n o: 'm 298 0 b 472 50 359 0 418 14 b 537 135 501 71 530 92 b 543 216 543 163 543 190 l 543 266 b 544 308 543 281 543 295 b 549 433 546 354 549 395 b 543 507 549 459 547 482 b 533 528 541 516 544 528 b 511 508 524 528 514 520 b 508 478 510 498 508 488 b 504 318 507 425 504 372 b 505 264 504 300 505 282 b 446 181 505 220 484 199 b 294 150 396 160 344 150 b 92 194 226 150 158 167 b 45 269 62 207 45 230 b 46 359 46 300 46 328 b 37 497 46 405 45 451 b 27 523 36 507 37 523 b 4 498 14 524 6 513 b 3 481 3 492 3 487 b 0 409 1 456 0 433 b 4 228 0 348 4 288 b 3 177 4 210 4 194 b 68 53 1 125 20 84 b 200 10 108 27 154 17 b 298 0 233 4 266 0 z',\n },\n brassMuteClosed: {\n x_min: 0,\n x_max: 274,\n y_min: 0,\n y_max: 260,\n ha: 260,\n o: 'm 203 0 b 209 1 206 0 207 0 b 216 13 215 4 216 9 l 215 27 l 215 153 b 216 161 216 156 216 158 b 372 164 268 163 318 164 b 395 184 383 164 395 166 l 395 189 b 357 229 392 209 386 229 b 219 228 311 229 265 228 l 223 310 b 209 357 225 328 219 344 b 189 374 203 364 197 374 b 184 373 187 374 186 373 b 177 359 179 372 177 366 l 177 348 l 173 222 l 39 222 b 0 206 12 222 0 219 b 10 174 0 199 3 189 b 46 157 19 157 30 157 b 108 160 68 158 88 160 b 171 161 130 161 150 161 l 167 58 b 184 16 167 40 171 26 b 203 0 192 12 196 0 z',\n },\n brassMuteOpen: {\n x_min: 1,\n x_max: 313.01193341111656,\n y_min: 0,\n y_max: 309,\n ha: 309,\n o: 'm 265 0 b 451 189 363 7 452 88 l 451 215 b 348 383 441 285 405 343 b 209 445 288 426 248 445 b 84 379 168 445 132 420 b 69 364 79 373 73 369 b 1 213 30 323 1 275 b 230 0 1 88 94 0 z m 210 62 b 128 73 181 62 154 66 b 40 171 71 91 42 125 b 52 226 40 187 45 206 b 197 374 79 295 130 344 b 228 382 207 380 217 382 b 300 361 252 382 276 370 b 374 308 328 350 353 331 b 410 223 397 284 410 253 b 393 163 410 202 405 181 b 210 62 354 91 288 63 z',\n },\n brassFlip: {\n x_min: 0,\n x_max: 402,\n y_min: 0,\n y_max: 361,\n ha: 361,\n o: 'm 579 0 b 511 153 579 68 557 117 b 52 504 359 271 206 387 b 29 520 45 510 39 520 b 20 517 26 520 23 518 b 0 477 3 510 0 494 l 0 125 b 17 20 1 92 1 56 b 40 84 37 40 40 60 b 42 287 40 151 42 219 l 42 363 z',\n },\n brassJazzTurn: {\n x_min: 0,\n x_max: 646,\n y_min: 0,\n y_max: 212,\n ha: 212,\n o: 'm 310 0 b 367 33 327 0 344 10 b 389 55 374 40 382 49 b 490 145 423 85 456 114 b 507 154 495 151 501 154 b 524 144 513 154 517 151 b 598 72 547 120 575 98 b 700 24 625 42 662 24 b 765 43 721 24 744 30 b 893 147 812 72 855 105 b 930 212 910 166 923 186 b 912 215 923 213 917 215 b 871 199 896 215 883 209 b 812 153 852 183 832 167 b 789 144 805 148 796 144 b 773 156 782 144 776 147 b 691 251 757 199 720 222 b 603 301 658 282 631 301 b 527 258 580 301 556 288 b 420 156 494 222 455 190 b 399 143 412 147 405 143 b 377 157 392 143 386 147 b 259 282 340 200 300 242 b 219 305 245 298 232 305 b 177 279 204 305 192 297 b 55 127 137 228 95 177 b 0 52 36 104 20 79 b 14 50 6 50 10 50 b 53 66 32 50 45 58 b 115 131 75 88 98 108 b 135 148 124 143 130 148 b 157 132 141 148 148 143 b 252 33 186 96 219 65 b 310 0 275 12 292 0 z',\n },\n brassSmear: {\n x_min: 0,\n x_max: 334,\n y_min: 0,\n y_max: 151,\n ha: 151,\n o: 'm 321 0 b 475 125 390 0 436 43 b 481 143 478 131 481 137 b 475 154 481 147 480 151 b 449 148 468 158 458 154 b 395 132 432 137 413 132 b 343 140 377 132 360 137 b 229 194 301 148 266 173 b 168 217 206 209 186 217 b 109 192 148 217 130 209 b 0 26 59 148 32 89 b 59 63 32 29 45 48 b 98 84 72 78 84 84 b 130 73 108 84 118 81 b 213 26 157 58 183 37 b 321 0 255 9 289 0 z',\n },\n stringsDownBow: {\n x_min: 0,\n x_max: 306,\n y_min: -0.09607201951262866,\n y_max: 366,\n ha: 366.09607201951263,\n o: 'm 405 0 b 425 17 413 -1 420 9 b 439 66 435 32 439 48 b 441 268 439 137 441 202 b 436 412 441 314 439 361 l 435 413 b 423 469 435 436 431 456 b 344 508 406 501 373 501 b 204 527 298 520 251 527 b 60 498 156 527 108 518 b 7 438 32 485 10 468 l 7 426 b 4 337 7 396 7 367 b 0 140 0 272 0 206 b 1 42 0 107 0 73 b 13 3 1 27 -3 4 b 40 39 29 3 35 24 b 42 53 42 43 40 49 b 49 141 48 84 49 112 b 48 215 49 167 48 192 b 49 252 48 228 48 240 l 49 312 b 130 343 72 331 99 340 b 206 347 156 346 180 347 b 372 314 262 347 318 338 l 390 307 l 390 245 b 390 138 392 212 390 176 b 397 23 390 101 392 62 b 405 0 399 14 393 1 z',\n },\n stringsUpBow: {\n x_min: 0,\n x_max: 219.2842808242076,\n y_min: 0,\n y_max: 489,\n ha: 489,\n o: 'm 151 0 b 184 42 170 12 180 26 b 297 554 223 212 261 382 b 315 690 305 598 318 645 b 304 704 315 697 311 704 b 276 670 288 704 282 697 b 157 131 236 490 196 311 l 157 144 b 73 526 134 276 104 396 b 30 677 60 576 52 638 b 13 694 26 684 22 694 b 0 674 9 694 0 691 l 0 671 b 10 603 3 649 6 626 b 105 174 42 461 72 317 b 150 0 117 117 128 58 z',\n },\n stringsHarmonic: {\n x_min: 0,\n x_max: 191,\n y_min: 0,\n y_max: 202,\n ha: 202,\n o: 'm 143 0 b 275 122 217 0 275 53 b 127 291 275 206 202 291 b 0 154 63 291 0 222 b 143 0 0 76 71 0 z m 122 68 b 43 105 89 66 59 75 b 39 124 40 111 39 117 b 79 199 39 148 56 180 b 145 226 101 216 122 226 b 199 210 163 226 180 220 b 235 150 223 196 235 173 b 203 92 235 128 225 107 b 122 68 181 76 150 68 z',\n },\n pluckedSnapPizzicatoAbove: {\n x_min: 0,\n x_max: 201,\n y_min: 0,\n y_max: 325,\n ha: 325,\n o: 'm 171 0 b 289 99 240 0 289 45 b 258 183 289 130 274 156 b 174 269 236 217 203 240 l 174 408 b 174 429 174 415 176 422 b 131 468 168 451 153 468 b 117 451 120 468 117 461 b 118 429 117 444 118 435 b 115 307 117 389 115 347 b 0 166 59 295 0 223 b 171 0 0 85 89 0 z m 134 55 b 52 131 84 55 52 85 b 115 233 52 179 81 209 b 114 192 114 220 114 206 b 174 120 114 137 114 137 l 174 228 b 233 148 200 207 223 183 b 236 130 235 143 236 135 b 197 72 236 105 223 85 b 134 55 177 60 157 55 z',\n },\n pluckedSnapPizzicatoBelow: {\n x_min: 0,\n x_max: 211,\n y_min: 0,\n y_max: 307,\n ha: 307,\n o: 'm 145 7 b 163 0 153 3 158 0 b 173 23 170 0 173 7 l 173 140 l 170 140 l 170 163 l 171 163 b 206 170 179 164 193 166 b 304 287 264 186 304 233 b 281 354 304 308 297 333 b 118 442 240 412 186 439 b 0 324 69 442 0 370 b 115 176 0 266 55 202 l 115 56 b 145 7 114 33 125 19 z m 115 220 b 62 256 92 223 73 230 b 53 292 56 269 53 281 b 78 344 53 311 60 328 b 168 384 105 372 135 384 b 213 376 183 384 199 382 b 253 321 239 366 253 346 b 246 291 253 311 251 301 b 170 226 230 256 203 236 l 170 258 b 148 305 171 278 163 292 b 128 315 143 310 135 315 l 124 315 b 115 301 117 314 115 308 z',\n },\n pluckedLeftHandPizzicato: {\n x_min: 0,\n x_max: 271,\n y_min: 0,\n y_max: 284,\n ha: 284,\n o: 'm 213 0 b 223 14 222 0 223 7 b 222 35 223 22 222 29 l 222 176 b 373 170 272 174 323 170 b 390 180 382 170 390 171 l 390 184 b 347 232 386 207 382 232 b 219 238 307 233 266 235 l 219 364 b 171 409 219 395 193 409 b 156 393 160 409 156 402 b 158 370 156 384 158 376 l 158 240 b 16 239 115 240 66 239 b 0 226 7 239 0 238 l 0 223 b 50 179 1 203 29 179 b 158 177 86 179 122 179 l 158 63 b 161 29 158 52 158 40 b 213 0 166 -1 194 1 z',\n },\n keyboardPedalPed: {\n x_min: 0,\n x_max: 944,\n y_min: -13,\n y_max: 550,\n ha: 563,\n o: 'm 22 0 b 109 78 53 0 105 46 l 144 333 b 163 376 147 347 140 372 b 364 465 238 390 301 426 b 454 599 416 497 454 540 b 452 618 454 605 454 612 b 320 770 442 694 396 747 b 248 779 295 778 272 779 b 193 778 229 779 212 779 b 160 780 181 778 167 775 b 137 792 153 789 144 791 b 109 789 128 792 118 789 b 7 719 59 789 48 737 b 23 708 16 714 20 708 b 36 710 29 710 33 710 b 53 684 52 710 53 698 l 53 674 b 43 386 53 577 53 482 b 20 164 36 312 30 238 b 1 30 14 120 7 75 b 0 19 0 26 0 22 b 22 0 0 9 4 0 z m 171 425 b 156 442 160 425 156 429 b 157 475 157 452 157 464 b 164 602 161 517 164 560 b 161 698 164 635 163 667 b 184 729 161 720 167 729 l 193 729 b 348 563 278 719 348 641 b 346 539 348 554 347 547 b 171 425 328 459 229 422 z m 979 6 b 1008 13 986 6 995 9 b 1081 101 1047 29 1079 46 b 1116 449 1087 217 1104 333 b 1143 654 1123 518 1133 586 b 1148 685 1145 664 1148 675 b 1140 704 1148 693 1146 700 b 1107 716 1130 713 1119 716 b 1056 706 1092 716 1073 710 b 1037 671 1035 703 1038 685 b 1004 439 1025 595 1014 517 b 986 419 1001 428 999 419 b 979 419 985 419 982 420 b 935 426 965 423 949 425 b 795 376 884 426 838 405 b 664 153 714 323 664 249 b 665 130 664 145 665 138 b 753 29 671 65 704 29 b 815 40 773 29 792 33 b 975 147 873 65 923 101 b 965 45 971 108 968 76 b 979 6 963 17 966 6 z m 393 -17 b 634 145 494 16 579 52 b 638 160 636 151 638 156 b 625 168 638 166 634 168 b 621 167 624 168 622 168 b 524 118 582 164 544 160 b 495 79 517 104 505 92 b 435 33 471 49 452 33 b 380 96 416 33 397 55 b 369 145 373 114 369 131 b 442 225 369 186 395 213 b 468 232 451 228 459 229 b 654 344 539 255 606 285 b 677 395 667 360 677 376 b 672 415 677 402 675 408 b 612 459 661 442 639 455 b 589 461 602 461 592 461 b 348 328 500 461 409 408 b 269 120 302 268 269 199 b 379 -19 269 45 318 -19 b 393 -17 383 -19 389 -19 z m 395 240 b 494 383 418 300 452 344 l 521 405 b 544 419 528 409 536 418 b 554 415 547 419 550 418 b 570 383 564 406 570 396 l 570 379 b 552 331 570 360 562 344 b 395 240 511 285 462 253 z m 827 89 b 792 111 815 89 804 96 b 766 204 775 131 766 158 b 845 360 772 256 799 314 b 871 372 854 369 863 372 b 897 366 880 372 888 369 b 978 279 942 353 963 320 b 976 259 981 272 981 265 b 858 104 942 203 909 147 b 827 89 847 94 837 89 z m 1282 12 b 1336 35 1303 14 1320 23 b 1359 71 1351 45 1359 58 b 1338 102 1359 82 1352 95 b 1254 130 1312 118 1284 130 b 1187 88 1223 130 1202 109 b 1178 65 1182 81 1178 72 b 1195 37 1178 55 1182 45 b 1282 12 1223 23 1253 19 z',\n },\n keyboardPedalUp: {\n x_min: 0,\n x_max: 436.6015132318337,\n y_min: 0,\n y_max: 461,\n ha: 461,\n o: 'm 330 0 b 334 1 331 0 333 0 b 340 12 338 4 340 7 l 338 26 b 340 264 338 105 338 184 b 526 95 400 206 461 148 b 559 71 536 88 547 71 b 564 72 560 71 563 71 b 580 121 580 79 580 102 l 580 127 b 543 203 585 158 573 184 b 472 259 518 219 495 238 l 445 285 b 590 292 494 288 541 291 b 622 318 609 294 618 302 b 628 359 625 331 626 346 b 586 402 632 393 621 405 b 464 395 546 399 504 396 l 559 491 b 567 524 567 500 567 510 b 564 543 567 527 567 536 b 539 596 559 563 560 590 b 494 564 521 600 508 577 b 340 413 442 514 390 464 l 340 560 b 287 664 340 600 321 632 b 271 518 274 612 272 566 b 268 445 269 494 269 469 b 117 569 219 488 168 530 b 96 579 109 575 102 579 b 85 560 89 579 85 573 b 124 446 85 518 82 477 b 209 380 153 426 181 403 b 45 374 154 377 99 376 b 0 324 9 374 0 359 b 63 266 0 265 1 265 b 144 272 89 269 117 272 l 196 272 b 108 193 167 246 138 219 b 60 135 76 164 60 151 b 99 73 60 121 73 105 b 104 68 101 72 102 71 b 114 58 107 60 111 58 b 130 66 120 58 124 62 b 259 186 173 107 217 145 b 256 117 259 163 256 140 b 311 13 256 72 271 37 b 330 0 317 10 323 0 z',\n },\n pictChokeCymbal: {\n x_min: 1,\n x_max: 147,\n y_min: 0,\n y_max: 242,\n ha: 242,\n o: 'm 79 4 b 207 158 153 32 192 88 b 212 200 210 173 212 187 b 143 336 212 253 187 298 b 98 348 131 344 115 348 b 4 295 60 348 16 327 b 1 276 1 289 1 282 b 9 249 1 266 3 258 b 121 183 35 206 72 183 b 156 186 132 183 144 183 b 26 53 134 115 91 73 b 7 39 13 49 7 45 b 19 20 7 33 12 27 b 59 0 30 9 43 0 b 79 4 65 0 72 1 z',\n },\n wiggleArpeggiatoUp: {\n x_min: -22,\n x_max: 300,\n y_min: 0,\n y_max: 176,\n ha: 176,\n o: 'm 173 4 b 196 0 180 1 189 0 b 246 26 215 0 230 9 b 301 117 271 53 285 85 b 312 131 305 125 307 131 b 327 124 315 131 321 128 b 373 86 341 112 353 101 b 412 69 389 75 402 69 b 432 94 425 69 432 79 b 373 181 432 117 413 154 b 235 252 323 216 285 245 b 220 253 229 253 225 253 b 168 215 196 253 181 240 b 111 112 151 180 140 141 b 94 102 105 105 99 102 b 78 111 89 102 84 105 b 0 181 55 135 35 160 b -32 153 -20 194 -32 168 b 0 86 -32 124 -32 109 b 94 36 22 71 73 46 b 173 4 134 16 131 17 z',\n },\n arpeggiatoUp: {\n x_min: 0,\n x_max: 262,\n y_min: 0,\n y_max: 1459,\n ha: 1459,\n o: 'm 190 0 b 160 63 187 29 170 45 b 145 108 150 81 145 95 b 183 163 145 128 157 145 b 300 246 222 190 262 216 b 347 318 333 272 347 295 b 301 393 347 341 331 364 b 258 413 289 403 272 408 b 145 449 220 425 183 436 b 117 464 135 452 120 452 b 140 491 115 477 128 484 b 294 593 192 526 243 557 b 330 647 318 611 330 626 b 314 693 330 660 324 675 b 262 736 302 714 285 729 b 170 763 230 744 200 753 b 122 783 153 768 125 768 b 160 831 120 804 143 818 b 288 922 202 861 246 890 b 333 999 318 945 333 972 b 266 1083 333 1032 310 1064 b 189 1115 240 1094 215 1103 b 122 1178 145 1133 122 1153 b 168 1250 122 1200 138 1223 l 180 1257 b 269 1333 210 1283 240 1306 b 305 1405 294 1356 305 1381 b 284 1469 305 1426 298 1447 b 228 1525 269 1492 251 1511 b 183 1600 197 1545 183 1571 b 190 1640 183 1613 184 1626 b 197 1670 193 1650 194 1660 b 272 1735 213 1719 230 1735 b 295 1734 279 1735 287 1735 b 323 1732 305 1732 314 1732 b 350 1731 333 1732 341 1732 b 377 1742 369 1729 377 1732 b 370 1761 377 1747 374 1754 l 301 1898 b 217 2066 274 1954 248 2012 b 186 2101 204 2089 196 2101 b 154 2069 177 2101 167 2091 b 12 1824 105 1987 59 1907 b 0 1787 4 1810 0 1797 b 59 1744 0 1761 20 1745 b 160 1738 92 1744 125 1740 b 145 1692 156 1721 151 1706 b 135 1633 138 1672 135 1652 b 184 1518 135 1591 151 1552 b 229 1475 199 1503 213 1488 b 259 1431 249 1456 259 1444 b 229 1388 259 1420 249 1407 b 151 1325 203 1365 177 1345 b 105 1279 134 1310 118 1296 b 73 1202 84 1251 73 1227 b 108 1123 73 1176 85 1152 b 255 1031 148 1077 199 1051 b 282 1014 274 1025 282 1021 b 262 991 282 1008 275 1001 b 151 914 226 963 189 939 b 79 851 125 896 99 877 b 63 809 69 837 63 824 b 79 769 63 796 68 783 b 202 697 111 729 154 710 b 266 670 225 690 266 688 b 210 622 266 648 232 635 b 82 534 167 593 120 570 b 55 491 63 518 55 505 b 79 448 55 478 63 465 b 255 361 127 395 192 380 b 288 343 269 359 288 357 b 266 312 288 331 275 320 b 144 223 229 278 184 253 b 85 134 104 193 85 166 b 118 53 85 111 96 85 b 190 0 135 29 160 14 z',\n },\n arpeggiatoDown: {\n x_min: 0,\n x_max: 218,\n y_min: 0,\n y_max: 1440,\n ha: 1440,\n o: 'm 161 16 b 310 261 210 98 259 180 b 314 275 312 266 314 271 b 302 295 314 282 310 289 b 252 311 287 308 269 311 b 217 310 240 311 229 310 b 190 333 202 310 194 315 b 151 412 186 363 171 389 b 102 501 120 452 102 477 b 150 588 102 524 118 547 b 161 603 154 592 158 598 b 181 661 176 622 181 641 b 173 704 181 675 179 690 b 86 795 156 746 121 770 b 53 829 63 811 53 819 b 78 868 53 840 62 851 b 102 888 85 876 94 883 b 180 956 128 912 156 933 b 216 1028 204 979 216 1002 b 203 1081 216 1044 212 1061 b 115 1171 186 1123 148 1145 b 75 1221 88 1191 75 1207 b 114 1272 75 1237 88 1251 b 173 1308 132 1284 154 1296 b 226 1339 190 1318 209 1328 b 265 1405 253 1359 265 1380 b 258 1447 265 1418 264 1431 b 154 1541 242 1499 199 1521 b 109 1581 124 1555 109 1567 b 141 1627 109 1594 121 1608 b 204 1680 163 1646 184 1662 b 233 1742 223 1699 233 1719 b 226 1777 233 1752 230 1764 b 135 1862 210 1822 173 1840 b 104 1895 114 1875 104 1884 b 118 1930 104 1904 109 1914 b 192 2006 135 1961 161 1986 b 206 2029 203 2013 206 2022 b 192 2064 206 2040 197 2052 b 180 2074 187 2071 184 2074 b 156 2061 171 2074 163 2065 b 84 1983 125 2040 102 2013 b 65 1921 71 1961 65 1941 b 88 1853 65 1899 72 1876 b 171 1784 108 1820 138 1801 b 190 1764 184 1777 190 1770 b 174 1741 190 1757 184 1750 b 107 1683 153 1722 128 1704 b 68 1610 81 1659 68 1636 b 88 1548 68 1591 75 1571 b 177 1470 109 1512 141 1489 b 223 1431 209 1453 223 1443 b 179 1390 223 1420 209 1408 b 128 1361 163 1380 145 1371 b 71 1322 108 1348 88 1338 b 32 1253 45 1300 32 1277 b 48 1198 32 1236 37 1218 b 147 1090 71 1152 108 1120 b 174 1057 166 1076 174 1067 b 153 1022 174 1047 167 1037 b 109 982 140 1008 124 995 b 37 919 85 962 59 942 b 9 860 17 899 9 880 b 26 806 9 844 14 827 b 120 717 50 769 84 740 b 138 691 132 708 138 700 b 130 668 138 684 135 677 b 92 618 118 651 105 635 b 59 531 71 589 59 560 b 84 455 59 507 68 481 b 132 386 98 431 115 408 b 148 341 144 372 148 357 b 144 317 148 333 147 324 b 121 305 140 307 131 305 l 98 305 b 82 304 94 304 88 304 l 32 304 b 0 292 10 304 0 302 b 12 266 0 287 4 279 b 60 164 32 233 46 199 b 127 20 84 117 105 68 b 144 0 132 9 137 0 b 161 16 150 0 154 4 z',\n },\n repeat1Bar: {\n x_min: 0,\n x_max: 599.1057280164835,\n y_min: -250,\n y_max: 175,\n ha: 425,\n o: 'm 216 98 b 255 75 236 84 246 75 b 291 104 265 75 274 85 b 323 147 304 117 327 125 b 289 215 323 168 314 184 b 238 252 269 239 253 252 b 187 222 222 252 207 242 b 173 206 183 216 177 212 b 157 170 163 194 157 183 b 174 138 157 160 161 150 b 216 98 189 127 200 109 z m 76 -334 b 181 -285 111 -315 148 -302 b 831 52 396 -168 613 -58 b 863 114 855 63 864 82 b 828 202 855 140 855 176 b 808 213 821 209 815 213 b 793 209 804 213 799 212 l 422 19 b 26 -179 291 -48 164 -124 b 0 -213 10 -186 0 -196 b 3 -232 0 -219 0 -225 b 52 -325 14 -265 37 -294 b 66 -337 55 -331 59 -337 b 76 -334 69 -337 72 -336 z m 769 -360 b 829 -264 779 -360 829 -284 b 769 -176 822 -232 799 -200 b 742 -163 760 -167 750 -163 b 716 -184 733 -163 723 -168 b 683 -228 708 -202 693 -213 b 672 -253 675 -236 672 -245 b 683 -281 672 -262 675 -271 b 752 -353 703 -308 732 -327 b 769 -360 756 -357 763 -360 z',\n },\n repeat2Bars: {\n x_min: 0.008571918423331715,\n x_max: 775,\n y_min: -246.92374029115243,\n y_max: 362.82068246705313,\n ha: 609.7444227582056,\n o: 'm 909 412 b 873 351 906 384 893 367 b 436 50 729 249 585 147 l 91 -179 b 62 -174 76 -189 68 -183 b 12 -96 48 -147 24 -125 b 36 -16 -7 -53 -6 -43 b 220 104 96 24 158 65 b 819 507 425 232 624 369 b 881 495 852 530 861 528 b 909 412 899 469 900 439 z m 333 338 b 302 240 330 307 317 274 b 276 235 297 225 287 228 l 233 269 b 203 376 186 307 183 318 b 225 441 212 397 217 419 b 246 454 228 452 232 458 b 333 338 284 441 333 380 z m 1116 228 b 1067 158 1115 192 1092 174 b 910 59 1015 125 963 92 b 478 -240 762 -33 622 -140 b 311 -350 423 -279 366 -314 b 285 -344 298 -360 289 -356 b 239 -258 272 -314 251 -288 b 261 -196 228 -228 235 -210 b 517 -29 348 -144 436 -91 b 1030 321 681 98 861 202 b 1093 307 1060 343 1076 340 b 1116 228 1107 281 1109 252 z m 1070 -105 b 1020 -210 1057 -143 1038 -176 b 998 -210 1014 -219 1004 -215 l 924 -153 b 913 -88 899 -135 897 -112 b 949 -22 926 -66 939 -45 b 998 -7 960 6 976 9 b 1070 -105 1032 -32 1058 -63 z',\n },\n repeat4Bars: {\n x_min: 0,\n x_max: 1374,\n y_min: -304,\n y_max: 304,\n ha: 608,\n o: 'm 78 -266 b 92 -258 82 -266 88 -264 b 114 -240 98 -251 107 -246 b 638 107 289 -125 467 -14 b 873 271 716 161 793 216 b 907 337 894 285 906 305 b 887 400 901 354 897 379 b 852 438 877 426 867 438 b 814 420 842 438 829 432 b 135 -33 592 262 366 111 b 12 -121 92 -60 48 -84 b 0 -144 4 -128 0 -135 b 4 -160 0 -148 1 -154 b 63 -255 17 -196 45 -223 b 78 -266 68 -262 72 -266 z m 291 148 b 325 223 302 148 308 170 b 333 256 328 235 330 246 b 264 363 330 305 298 336 b 242 373 255 369 248 373 b 220 347 232 373 225 364 b 202 288 216 327 213 305 b 190 252 193 275 190 262 b 222 200 190 232 202 215 b 291 148 264 170 279 148 z m 815 -367 b 829 -359 819 -367 824 -364 b 851 -343 835 -353 844 -347 b 1375 6 1027 -228 1205 -117 l 1610 170 b 1644 235 1632 184 1643 203 b 1626 300 1639 253 1634 276 b 1590 337 1614 325 1604 337 b 1551 320 1580 337 1567 330 b 873 -135 1329 161 1103 10 b 749 -222 829 -161 785 -184 b 737 -245 742 -230 737 -238 b 742 -261 737 -249 739 -255 b 802 -357 755 -297 782 -325 b 815 -367 805 -363 809 -367 z m 396 -360 b 408 -356 400 -360 403 -359 b 609 -223 471 -307 543 -269 b 896 -19 706 -156 795 -81 b 1164 154 985 37 1074 96 b 1214 223 1189 170 1211 187 b 1176 321 1204 253 1205 292 b 1159 330 1169 327 1165 330 b 1145 324 1155 330 1151 328 b 1048 258 1113 302 1081 278 b 357 -202 809 117 598 -65 b 333 -238 341 -212 333 -223 b 338 -262 333 -245 334 -253 b 384 -350 350 -294 372 -318 b 396 -360 386 -354 390 -360 z m 1162 -438 b 1174 -433 1166 -438 1169 -436 b 1374 -300 1237 -384 1309 -346 b 1660 -96 1470 -233 1561 -158 b 1930 76 1751 -39 1840 19 b 1979 147 1954 92 1977 109 b 1943 243 1968 177 1971 216 b 1924 253 1935 251 1930 253 b 1911 248 1920 253 1915 252 b 1814 181 1878 225 1848 202 b 1123 -279 1575 40 1364 -141 b 1099 -315 1106 -289 1099 -300 b 1103 -338 1099 -321 1100 -330 b 1149 -426 1115 -370 1138 -396 b 1162 -438 1151 -432 1156 -438 z m 1875 -295 b 1882 -291 1878 -295 1879 -294 b 1934 -189 1904 -258 1921 -223 b 1872 -96 1925 -147 1901 -120 b 1840 -78 1858 -84 1848 -78 b 1812 -109 1830 -78 1823 -88 l 1777 -173 b 1770 -199 1773 -181 1770 -190 b 1786 -230 1770 -210 1774 -220 b 1862 -289 1809 -253 1837 -269 b 1875 -295 1865 -292 1871 -295 z',\n },\n repeatBarSlash: {\n x_min: 0,\n x_max: 630,\n y_min: -225.19160170741762,\n y_max: 265.12618221237005,\n ha: 490.31778391978764,\n o: 'm 78 -324 b 92 -314 82 -325 88 -321 b 114 -298 96 -307 107 -302 b 638 49 289 -183 467 -72 b 873 215 716 104 792 161 b 907 279 894 229 906 248 b 887 344 901 298 897 321 b 852 382 877 369 867 380 b 814 363 842 383 829 376 b 135 -91 603 192 364 55 b 12 -177 92 -118 45 -137 b 0 -202 4 -186 0 -192 b 4 -217 0 -206 1 -212 b 63 -312 17 -253 42 -284 b 78 -324 68 -318 72 -323 z',\n },\n csymDiminished: {\n x_min: 0,\n x_max: 506,\n y_min: -0.011036179317259481,\n y_max: 500,\n ha: 500.0110361793173,\n o: 'm 397 0 b 729 265 576 -1 729 95 b 711 367 729 297 723 331 b 472 670 668 498 586 595 b 315 720 423 701 372 720 b 253 713 295 720 275 719 b 32 514 144 687 75 615 b 0 374 12 468 0 420 b 27 251 0 333 9 292 b 140 117 52 196 92 153 b 397 0 223 52 317 4 z m 340 95 b 132 314 233 84 122 216 b 324 589 145 438 200 539 b 415 611 360 603 389 611 b 544 505 469 611 505 576 b 590 392 564 471 583 432 b 596 343 593 374 596 359 b 340 95 596 210 485 96 z',\n },\n csymHalfDiminished: {\n x_min: -32,\n x_max: 496,\n y_min: -33,\n y_max: 492,\n ha: 525,\n o: 'm -29 -48 b 0 -36 -19 -48 -9 -40 b 17 -20 7 -32 12 -24 b 134 94 56 19 95 56 b 372 0 207 43 282 0 b 455 13 397 0 426 4 b 677 258 556 45 671 141 b 678 289 677 268 678 278 b 593 539 678 380 654 467 b 592 541 593 540 592 540 l 684 632 b 713 678 700 647 711 665 b 714 691 714 684 714 688 b 707 704 714 698 711 701 b 691 708 701 707 696 708 b 660 691 680 708 670 701 l 552 585 b 478 634 530 606 507 624 b 361 684 438 648 397 661 b 301 703 341 697 320 703 b 226 677 275 703 251 693 b 27 449 140 618 72 543 b 0 324 9 410 -4 370 b 88 128 -1 243 30 177 b -30 -7 43 86 0 46 b -46 -33 -35 -16 -46 -24 b -42 -42 -46 -36 -45 -39 b -29 -48 -37 -46 -33 -48 z m 141 179 b 121 251 128 200 121 225 b 128 297 121 265 124 281 b 351 575 163 420 248 505 b 377 582 359 579 369 580 b 501 536 422 586 468 567 b 141 179 382 416 261 298 z m 281 105 b 179 137 240 105 206 117 b 210 168 189 147 200 157 l 537 487 b 547 455 541 477 544 467 b 556 370 552 426 556 397 b 429 154 556 274 503 207 b 281 105 384 122 336 105 z',\n },\n csymAugmented: {\n x_min: 0,\n x_max: 530,\n y_min: 0,\n y_max: 539,\n ha: 539,\n o: 'm 380 0 b 393 14 384 4 390 9 b 397 46 397 24 397 36 l 397 333 b 736 327 511 331 624 330 b 763 343 755 327 763 333 b 755 361 763 348 760 354 b 635 431 726 402 688 431 l 390 431 l 390 485 b 386 606 392 526 386 566 b 392 664 386 625 387 645 b 395 690 393 672 395 681 b 376 753 395 711 389 734 b 357 776 372 762 369 776 b 350 775 354 776 353 776 b 327 740 337 769 327 759 b 327 621 328 700 327 661 b 330 438 328 559 328 498 l 29 438 b 4 431 20 438 7 442 b 0 413 3 425 0 419 b 7 399 0 408 1 403 b 131 338 45 369 85 340 b 331 334 199 336 265 334 b 333 163 333 276 333 220 b 366 13 333 109 348 63 b 380 0 367 7 374 4 z',\n },\n csymMajorSeventh: {\n x_min: 0,\n x_max: 593.1050509327923,\n y_min: 0,\n y_max: 569,\n ha: 569,\n o: 'm 124 1 l 497 27 b 819 50 605 35 711 43 b 854 98 847 52 855 63 b 812 200 845 128 835 166 b 564 585 730 328 648 456 b 435 786 521 652 480 720 b 397 819 419 809 408 819 b 369 792 387 819 379 811 b 7 173 248 585 128 379 b 0 150 3 166 0 158 b 7 128 0 143 3 135 b 89 10 30 86 65 50 b 109 0 95 1 102 0 z m 163 147 b 153 153 158 147 156 148 b 164 179 147 163 158 170 b 426 644 251 334 338 488 b 442 660 432 655 436 660 b 458 645 446 660 452 655 b 727 220 547 503 636 361 b 736 202 732 213 736 206 b 714 190 736 196 730 192 b 179 148 537 177 359 163 b 163 147 174 150 168 147 z',\n },\n csymMinor: {\n x_min: 0,\n x_max: 481.64484584675915,\n y_min: 193,\n y_max: 265.20435472429375,\n ha: 72.20435472429375,\n o: 'm 168 278 b 197 279 177 278 187 278 b 431 292 275 287 353 288 l 431 291 b 661 302 508 295 585 300 b 693 311 672 304 688 300 b 674 346 697 324 685 338 b 564 382 641 366 606 384 l 27 360 b 0 347 17 360 1 366 b 19 314 0 333 3 321 b 168 278 66 291 115 278 z',\n },\n csymParensLeftTall: {\n x_min: 0,\n x_max: 185,\n y_min: 0,\n y_max: 1034,\n ha: 1034,\n o: 'm 215 0 b 226 17 223 1 223 10 b 229 37 229 24 229 32 b 220 81 229 52 225 66 b 167 203 206 124 181 160 b 86 616 124 338 89 474 b 82 765 85 665 82 716 b 91 886 82 805 84 845 b 245 1319 120 1038 171 1184 b 266 1397 259 1346 266 1371 b 259 1443 266 1411 264 1427 b 226 1489 253 1463 248 1489 b 193 1454 212 1489 203 1467 b 114 1292 158 1404 140 1346 b 0 806 40 1138 0 978 b 3 721 0 779 0 750 b 1 677 1 707 1 693 b 36 418 1 593 16 504 b 144 96 62 307 95 199 b 196 12 158 66 179 39 b 212 0 200 7 204 0 z',\n },\n csymParensRightTall: {\n x_min: -40,\n x_max: 188.5411603861406,\n y_min: 0.20204102886728756,\n y_max: 1058,\n ha: 1057.7979589711326,\n o: 'm 30 1 b 63 14 42 -3 55 6 b 122 99 86 40 108 68 b 189 258 145 153 166 204 b 271 667 239 379 268 503 b 246 852 275 708 261 780 b 10 1495 197 1077 128 1295 b -14 1524 4 1505 1 1524 b -16 1522 -14 1524 -16 1524 b -46 1489 -33 1521 -43 1503 b -58 1417 -53 1464 -58 1440 b -36 1335 -58 1390 -52 1364 b 68 1138 0 1270 35 1204 b 163 883 108 1056 137 969 b 206 668 184 814 200 742 b 207 631 207 655 207 642 b 166 426 207 560 192 492 b 46 143 130 330 111 228 b 19 29 19 109 17 69 b 30 1 20 19 24 3 z',\n },\n csymBracketLeftTall: {\n x_min: 0,\n x_max: 328,\n y_min: 2,\n y_max: 807,\n ha: 805,\n o: 'm 68 3 b 76 4 71 3 73 3 b 186 13 112 12 150 13 b 240 13 204 13 222 13 l 287 13 b 379 17 317 13 348 13 b 472 121 435 24 472 69 b 467 156 472 132 469 144 b 446 174 462 168 456 174 l 439 174 b 327 166 402 167 364 166 b 265 167 307 166 285 167 l 209 167 b 187 475 199 269 189 372 b 166 985 186 645 187 815 l 377 1002 b 415 1001 389 1002 402 1001 b 456 1027 432 1001 448 1005 b 472 1096 467 1048 472 1073 b 464 1146 472 1113 469 1130 b 439 1162 459 1161 452 1162 b 40 1129 305 1151 173 1139 b 1 1093 17 1128 1 1120 b 0 1009 0 1064 0 1037 b 13 975 0 991 3 981 b 30 670 23 873 30 772 b 29 608 30 649 29 628 l 29 563 b 56 88 29 405 49 246 b 53 22 55 66 55 43 b 68 3 53 12 56 3 z',\n },\n csymBracketRightTall: {\n x_min: 0.8519422934604696,\n x_max: 306,\n y_min: -0.17180889215212544,\n y_max: 829.1037519824849,\n ha: 829.2755608746371,\n o: 'm 117 0 b 372 29 203 -3 287 20 l 373 29 b 406 32 383 30 395 30 b 436 60 428 33 432 43 b 441 109 439 76 441 92 b 433 200 441 140 436 170 b 409 696 422 366 409 530 b 416 887 409 763 416 831 b 415 920 416 899 415 910 l 415 1106 b 412 1135 415 1116 415 1126 l 412 1145 b 373 1189 413 1171 408 1192 b 321 1189 356 1189 338 1189 l 215 1189 l 215 1194 l 56 1194 b 6 1153 27 1195 10 1187 b 1 1064 3 1123 4 1093 b 22 1043 0 1050 6 1043 b 84 1044 42 1044 63 1044 b 264 1038 144 1044 203 1040 b 265 958 264 1011 265 985 b 262 845 265 920 264 883 b 259 710 259 801 259 755 b 279 243 259 554 271 399 b 285 170 281 219 284 194 b 95 151 222 161 158 156 b 29 81 27 147 27 147 l 29 73 b 105 0 33 0 33 0 z',\n },\n csymParensLeftVeryTall: {\n x_min: 0,\n x_max: 116,\n y_min: 0,\n y_max: 934.1531437146923,\n ha: 934.1531437146923,\n o: 'm 128 0 b 147 17 137 0 144 9 b 167 102 160 45 167 73 b 158 154 167 120 164 137 b 117 307 141 204 130 256 b 63 698 84 435 71 567 b 62 788 62 729 62 757 b 69 916 62 829 63 873 b 109 1172 81 1001 94 1087 b 132 1320 118 1221 137 1269 b 124 1345 131 1329 134 1342 b 96 1332 114 1346 102 1341 b 71 1269 82 1313 75 1292 b 39 1104 59 1214 48 1159 b 0 742 19 988 0 871 b 10 559 3 688 6 624 b 58 226 16 446 33 336 b 112 20 73 157 94 89 b 128 0 115 13 118 0 z',\n },\n csymParensRightVeryTall: {\n x_min: -20,\n x_max: 111.4332498248095,\n y_min: -0.07657185734616112,\n y_max: 1009,\n ha: 1009.0765718573462,\n o: 'm -3 0 b 20 22 9 -1 14 12 b 36 56 26 33 32 45 b 99 274 58 128 84 199 b 160 788 135 439 163 605 b 122 1181 164 912 145 1047 b 50 1431 108 1267 86 1351 b 36 1453 48 1439 46 1453 l 35 1453 l 30 1453 b 7 1423 17 1449 7 1440 b 27 1287 9 1377 10 1331 b 96 963 71 1184 85 1074 b 105 818 102 914 105 867 b 91 624 105 753 99 688 b -4 213 72 484 48 344 b -29 101 -19 174 -29 138 b -16 27 -29 76 -24 52 b -3 0 -13 17 -14 3 z',\n },\n csymDiagonalArrangementSlash: {\n x_min: -0.19862981551275186,\n x_max: 990,\n y_min: -26.946823529189132,\n y_max: 1027.5514326488437,\n ha: 1054.4982561780328,\n o: 'm 14 -37 b 58 -9 35 -45 46 -22 b 392 333 170 105 279 217 l 765 711 b 1372 1329 968 916 1168 1125 b 1424 1439 1403 1359 1417 1397 b 1426 1457 1424 1444 1426 1450 b 1416 1477 1426 1466 1423 1475 b 1374 1462 1400 1485 1385 1473 b 1181 1269 1309 1397 1246 1331 b 736 831 1031 1122 884 979 b 356 452 609 704 485 576 b 32 132 246 347 143 236 b 0 50 7 109 1 84 b 6 9 -1 37 3 23 b 14 -37 10 -9 0 -32 z',\n },\n accidentalNarrowReversedFlat: {\n x_min: 0,\n x_max: 208,\n y_min: -231,\n y_max: 449,\n ha: 680,\n o: 'm 272 -333 b 284 -320 278 -333 281 -328 b 300 -174 297 -272 300 -222 b 275 190 298 -52 279 68 b 268 445 272 275 268 360 l 268 490 b 264 612 269 530 265 572 b 236 647 264 632 252 645 l 235 647 b 217 618 220 647 220 628 b 207 526 210 588 207 556 b 210 432 207 494 210 464 b 216 268 213 377 215 323 l 216 230 l 215 232 b 154 256 194 240 174 251 b 111 264 138 261 124 264 b 3 153 50 264 10 223 b 0 94 0 132 0 114 b 194 -276 0 -63 68 -186 b 255 -323 215 -291 236 -307 b 272 -333 262 -330 268 -333 z m 233 -138 b 71 30 168 -92 105 -45 b 63 59 65 42 63 50 b 96 95 62 75 73 86 b 130 102 108 99 120 102 b 215 76 160 102 187 88 l 220 73 b 225 -22 220 42 222 10 b 233 -138 229 -62 230 -101 z',\n },\n accidentalNarrowReversedFlatAndFlat: {\n x_min: 0,\n x_max: 335,\n y_min: -231,\n y_max: 449,\n ha: 680,\n o: 'm 151 490 b 148 612 151 530 150 572 b 132 647 148 632 141 645 b 122 618 124 647 124 628 b 117 526 118 588 117 556 b 118 432 117 494 118 464 b 121 268 120 377 121 323 l 121 232 b 86 256 109 240 98 251 b 62 264 78 261 69 264 b 1 153 29 264 6 223 b 0 94 0 132 0 114 b 109 -276 0 -63 37 -186 b 144 -323 121 -291 132 -307 b 153 -333 147 -330 151 -333 b 160 -320 157 -333 158 -328 b 168 -174 167 -272 168 -222 b 154 190 168 -52 157 68 b 151 445 153 275 151 360 z m 480 153 b 372 264 472 223 432 264 b 328 256 359 264 344 261 b 268 232 308 251 288 240 l 266 230 l 266 268 b 272 432 266 323 269 377 b 275 526 272 464 275 494 b 265 618 275 556 272 588 b 248 647 262 628 262 647 l 246 647 b 219 612 230 645 219 632 b 215 490 217 572 213 530 l 215 445 b 207 190 215 360 210 275 b 183 -174 203 68 183 -52 b 199 -320 183 -222 186 -272 b 210 -333 202 -328 204 -333 b 228 -323 215 -333 220 -330 b 288 -276 246 -307 268 -291 b 482 94 415 -186 482 -63 b 480 153 482 114 482 132 z m 40 30 b 36 59 36 42 36 50 b 55 95 35 75 42 86 b 73 102 60 99 68 102 b 121 76 89 102 105 88 l 124 73 b 127 -22 124 42 125 10 l 131 -138 b 40 30 95 -92 60 -43 z m 419 59 b 412 30 419 50 418 42 b 249 -138 374 -43 314 -92 b 258 -22 252 -101 253 -62 b 262 73 261 10 262 42 l 268 76 b 353 102 295 88 323 102 b 386 95 363 102 374 99 b 419 59 409 86 420 75 z',\n },\n accidentalWilsonPlus: {\n x_min: 0,\n x_max: 298,\n y_min: -218,\n y_max: 218,\n ha: 436,\n o: 'm 232 -314 b 236 -301 236 -310 236 -305 l 236 -295 b 243 -52 239 -213 242 -132 l 369 62 b 429 200 413 101 425 147 b 416 243 429 216 428 236 b 383 225 406 251 393 232 l 377 220 b 246 98 336 177 291 138 b 249 242 248 145 246 193 b 225 304 251 265 242 287 b 209 314 220 308 215 314 b 204 312 207 314 206 312 b 196 292 196 310 196 300 b 193 184 194 256 194 220 b 187 48 192 140 190 94 b 46 -72 141 7 94 -32 b 0 -163 13 -98 0 -127 b 1 -187 0 -170 0 -179 b 10 -235 4 -203 6 -219 b 20 -255 12 -242 14 -251 b 36 -245 26 -259 30 -249 b 181 -109 85 -200 132 -154 b 176 -258 180 -158 176 -209 b 232 -314 176 -298 186 -307 z',\n },\n accidentalWilsonMinus: {\n x_min: 0,\n x_max: 284.2093390143919,\n y_min: -163,\n y_max: 163,\n ha: 326,\n o: 'm 386 -232 b 409 -163 415 -222 408 -180 b 382 -69 410 -120 408 -89 b 32 228 264 30 141 118 b 17 235 26 233 22 235 b 3 219 9 235 3 228 b 0 157 3 199 0 179 b 29 69 0 125 6 95 b 323 -194 115 -29 222 -111 b 374 -235 338 -206 353 -235 b 386 -232 377 -235 382 -233 z',\n },\n },\n fontFamily: 'Petaluma',\n resolution: 1000,\n generatedOn: '2022-06-26T17:47:23.560Z',\n};\n","/**\n * The Petaluma font was created by Steinberg Media.\n * https://github.com/steinbergmedia/petaluma\n */\nexport const PetalumaMetrics = {\n name: 'Petaluma',\n smufl: true,\n stave: {\n padding: 15,\n endPaddingMax: 15,\n endPaddingMin: 7,\n unalignedNotePadding: 12,\n },\n accidental: {\n noteheadAccidentalPadding: 1,\n leftPadding: 2,\n accidentalSpacing: 3,\n },\n clef: {\n default: {\n point: 32,\n width: 26,\n },\n small: {\n point: 26,\n width: 20,\n },\n annotations: {\n '8va': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: -1.4,\n shiftX: 12,\n },\n },\n small: {\n point: 16,\n treble: {\n line: -0.2,\n shiftX: 8,\n },\n },\n },\n '8vb': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: 6,\n shiftX: 10,\n },\n bass: {\n line: 3.5,\n shiftX: 1,\n },\n },\n small: {\n point: 16,\n treble: {\n line: 5.3,\n shiftX: 6,\n },\n bass: {\n line: 3.1,\n shiftX: 0.5,\n },\n },\n },\n },\n // These may no longer be necessary\n lineCount: {\n '8': { point: 55, shiftY: 14 },\n '7': { point: 47, shiftY: 8 },\n '6': { point: 32, shiftY: 1 },\n '5': { point: 30, shiftY: -6 },\n '4': { point: 23, shiftY: -12 },\n },\n },\n parenthesis: {\n default: {\n point: 39,\n width: 7,\n },\n gracenote: {\n point: (39 * 3) / 5,\n width: 3,\n },\n },\n pedalMarking: {\n up: {\n point: 40,\n },\n down: {\n point: 34,\n },\n },\n // These are for numeric digits, such as in time signatures\n digits: {\n // used by timesig\n shiftLine: -1,\n point: 22,\n // used by tuplets\n tupletPoint: 16,\n shiftY: -2,\n },\n articulation: {\n articStaccatissimoAbove: {\n padding: 2,\n },\n articStaccatissimoBelow: {\n padding: 2,\n },\n },\n tremolo: {\n default: {\n point: 25,\n spacing: 5,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 13,\n offsetXStemDown: 1,\n },\n grace: {\n point: 18,\n spacing: 4,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 8,\n offsetXStemDown: 1,\n },\n },\n staveRepetition: {\n symbolText: {\n offsetX: 12,\n offsetY: 25,\n spacing: 5,\n },\n coda: {\n offsetY: 25,\n },\n segno: {\n offsetY: 10,\n },\n },\n noteHead: {\n displaced: {\n shiftX: -2,\n },\n },\n stem: {\n heightAdjustmentForFlag: -3,\n // These are stem (Y) offsets to the note heads. To shift the\n // noteheads (x-position) themselves, see glyphs.notehead.custom.\n noteHead: {\n noteheadTriangleUpHalf: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpBlack: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpWhole: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadXHalf: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXBlack: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXWhole: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadHalf: {\n offsetYBaseStemDown: 1.8,\n offsetYBaseStemUp: -1.8,\n },\n noteheadBlack: {\n offsetYBaseStemDown: 2,\n offsetYBaseStemUp: -2,\n },\n noteheadSquareWhite: {\n offsetYBaseStemDown: -5,\n offsetYBaseStemUp: 5,\n },\n },\n },\n // Values under here are used by the Glyph class to reposition and rescale\n // glyphs based on their category. This should be the first stop for\n // custom font glyph repositioning.\n //\n // The glyph loader first looks up a specific set of settings based on the\n // glyph code, and if not found, uses the defaults from the category. See\n // glyphs.textNote for an example of this.\n //\n // Details in Glyph.lookupFontMetrics.\n glyphs: {\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n segno: {\n shiftX: -7,\n },\n flag: {\n shiftX: -0.77,\n flag16thUp: {\n shiftX: -0.75,\n },\n flag32ndUp: {\n shiftX: -0.85,\n },\n flag64thUp: {\n shiftX: -1.55,\n },\n flag128thUp: {\n shiftX: -1.3,\n },\n flag16thDown: {\n shiftX: -0.75,\n },\n flag32ndDown: {\n shiftX: -0.76,\n },\n flag64thDown: {\n shiftX: -1.5,\n },\n flag128thDown: {\n shiftX: -1.2,\n },\n staveTempo: {\n shiftX: -1,\n },\n },\n clef: {\n gClef: {\n default: { scale: 1.1, shiftY: 1 },\n small: { shiftY: 1.5 },\n },\n fClef: {\n default: { shiftY: -0.5 },\n },\n },\n ornament: {\n ornamentTurn: {\n scale: 1.2,\n },\n ornamentTurnSlash: {\n scale: 1.2,\n },\n },\n stringNumber: {\n verticalPadding: 8,\n stemPadding: 2,\n leftPadding: 5,\n rightPadding: 6,\n },\n stroke: {\n arrowheadBlackDown: {\n straight: {\n shiftX: -4.5,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n arrowheadBlackUp: {\n straight: {\n shiftX: -0.85,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n },\n textNote: {\n point: 34,\n breathMarkTick: {\n point: 36,\n shiftY: 9,\n },\n breathMarkComma: {\n point: 36,\n },\n segno: {\n point: 30,\n shiftX: -7,\n shiftY: 8,\n },\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n ornamentTrill: {\n shiftX: -10,\n shiftY: 8,\n },\n ornamentMordent: {\n shiftX: -8,\n },\n ornamentShortTrill: {\n shiftX: -8,\n },\n },\n noteHead: {\n minPadding: 2,\n standard: {\n noteheadBlackStemUp: {\n shiftX: 0.5,\n },\n noteheadHalfStemUp: {\n shiftX: 0.725,\n },\n noteheadWholeStemUp: {\n shiftX: 1,\n },\n },\n custom: {\n noteheadCircleXStemUp: {\n shiftX: -1,\n },\n noteheadCircleXStemDown: {\n shiftX: 0.25,\n },\n noteheadDiamondHalfStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondBlackStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondWholeStemUp: {\n shiftX: 1,\n },\n noteheadXBlackStemUp: {\n shiftX: 1,\n },\n noteheadXHalfStemUp: {\n shiftX: -3,\n },\n noteheadXHalfStemDown: {\n shiftX: 1,\n },\n noteheadXWholeStemUp: {\n shiftX: -7,\n },\n noteheadXWholeStemDown: {\n shiftX: 1,\n },\n noteheadXDoubleWholeStemUp: {\n shiftX: -12,\n },\n noteheadXDoubleWholeStemDown: {\n shiftX: -4,\n },\n noteheadSquareWhiteStemDown: {\n shiftX: 0.25,\n },\n noteheadSquareWhiteStemUp: {\n shiftX: -0.75,\n },\n noteheadSquareBlackStemUp: {\n shiftX: -0.75,\n },\n noteheadTriangleUpWholeStemUp: {\n shiftX: -0.75,\n },\n },\n },\n chordSymbol: {\n global: {\n superscriptOffset: -400,\n subscriptOffset: 300,\n kerningOffset: -150,\n lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'],\n upperKerningText: ['L'],\n spacing: 20,\n superSubRatio: 0.73,\n },\n csymDiminished: {\n scale: 0.8,\n leftSideBearing: -95,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymHalfDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymAugmented: {\n scale: 1,\n leftSideBearing: -25,\n advanceWidth: 530,\n yOffset: 0,\n },\n csymParensLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 155,\n yOffset: 150,\n },\n csymParensRightTall: {\n scale: 0.8,\n leftSideBearing: 40,\n advanceWidth: 189,\n yOffset: 150,\n },\n csymBracketLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 328,\n yOffset: 0,\n },\n csymBracketRightTall: {\n scale: 0.8,\n leftSideBearing: 1,\n advanceWidth: 600,\n yOffset: 0,\n },\n csymParensLeftVeryTall: {\n scale: 0.95,\n leftSideBearing: 0,\n advanceWidth: 210,\n yOffset: 250,\n },\n csymParensRightVeryTall: {\n scale: 0.9,\n leftSideBearing: -100,\n advanceWidth: 111,\n yOffset: 250,\n },\n csymDiagonalArrangementSlash: {\n scale: 0.6,\n leftSideBearing: -1,\n advanceWidth: 990,\n yOffset: 0,\n },\n csymMinor: {\n scale: 0.7,\n leftSideBearing: 0,\n advanceWidth: 482,\n yOffset: 0,\n },\n csymMajorSeventh: {\n scale: 0.8,\n leftSideBearing: 100,\n yOffset: 0,\n advanceWidth: 600,\n },\n accidentalSharp: {\n scale: 0.7,\n leftSideBearing: 0,\n advanceWidth: 425,\n yOffset: -422,\n },\n accidentalFlat: {\n scale: 0.8,\n leftSideBearing: -10,\n advanceWidth: 228,\n yOffset: -284,\n },\n },\n jazzOrnaments: {\n brassScoop: {\n scale: 1.0,\n xOffset: -12,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassDoitMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 19,\n },\n brassFallLipShort: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 19,\n },\n brassLiftMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 5,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassFallRoughMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 26,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassBend: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -8,\n stemUpYOffset: 28,\n reportedWidth: 5,\n },\n brassMuteClosed: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -8,\n stemUpYOffset: 26,\n reportedWidth: 5,\n },\n brassMuteOpen: {\n scale: 1.0,\n xOffset: 4,\n yOffset: -8,\n stemUpYOffset: 27,\n reportedWidth: 5,\n },\n brassFlip: {\n scale: 1.0,\n xOffset: 10,\n yOffset: -4,\n stemUpYOffset: 7,\n reportedWidth: 5,\n },\n brassJazzTurn: {\n scale: 1.0,\n xOffset: 6,\n yOffset: -4,\n stemUpYOffset: 5,\n reportedWidth: 30,\n },\n brassSmear: {\n scale: 1.0,\n xOffset: 10,\n yOffset: -4,\n stemUpYOffset: 5,\n reportedWidth: 5,\n },\n },\n tuplet: {\n noteHeadOffset: 20,\n stemOffset: 10,\n bottomLine: 4,\n topModifierOffset: 20,\n },\n },\n};\n","export const PetalumaScriptFont = {\n spacing: 50,\n glyphs: {\n ' ': {\n x_min: 0,\n x_max: 250,\n y_min: 0,\n y_max: 500,\n ha: 500,\n leftSideBearing: 0,\n advanceWidth: 250,\n },\n '0': {\n x_min: 33,\n x_max: 534,\n y_min: -13,\n y_max: 751,\n ha: 764,\n leftSideBearing: 33,\n advanceWidth: 570,\n },\n '1': {\n x_min: 48,\n x_max: 235,\n y_min: -17,\n y_max: 734,\n ha: 751,\n leftSideBearing: 48,\n advanceWidth: 286,\n },\n '2': {\n x_min: 56,\n x_max: 571,\n y_min: -19,\n y_max: 741,\n ha: 760,\n leftSideBearing: 56,\n advanceWidth: 626,\n },\n '3': {\n x_min: 50,\n x_max: 528,\n y_min: -7,\n y_max: 731,\n ha: 738,\n leftSideBearing: 50,\n advanceWidth: 589,\n },\n '4': {\n x_min: 38,\n x_max: 564,\n y_min: -13,\n y_max: 743,\n ha: 756,\n leftSideBearing: 38,\n advanceWidth: 614,\n },\n '5': {\n x_min: 42,\n x_max: 601,\n y_min: -34,\n y_max: 743,\n ha: 777,\n leftSideBearing: 42,\n advanceWidth: 648,\n },\n '6': {\n x_min: 47,\n x_max: 606,\n y_min: -16,\n y_max: 743,\n ha: 759,\n leftSideBearing: 47,\n advanceWidth: 667,\n },\n '7': {\n x_min: 47,\n x_max: 567,\n y_min: 5,\n y_max: 739,\n ha: 734,\n leftSideBearing: 0,\n advanceWidth: 615,\n },\n '8': {\n x_min: 40,\n x_max: 541,\n y_min: -15,\n y_max: 752,\n ha: 767,\n leftSideBearing: 40,\n advanceWidth: 585,\n },\n '9': {\n x_min: 40,\n x_max: 537,\n y_min: -52,\n y_max: 736,\n ha: 788,\n leftSideBearing: 40,\n advanceWidth: 592,\n },\n '!': {\n x_min: 49,\n x_max: 180,\n y_min: -7,\n y_max: 761,\n ha: 768,\n leftSideBearing: 49,\n advanceWidth: 230,\n },\n '\"': {\n x_min: 39,\n x_max: 304,\n y_min: 596,\n y_max: 804,\n ha: 208,\n leftSideBearing: 39,\n advanceWidth: 353,\n },\n '#': {\n x_min: 33,\n x_max: 599,\n y_min: -8,\n y_max: 765,\n ha: 773,\n leftSideBearing: 33,\n advanceWidth: 648,\n },\n $: {\n x_min: 53,\n x_max: 495,\n y_min: -111,\n y_max: 823,\n ha: 934,\n leftSideBearing: 53,\n advanceWidth: 560,\n },\n '%': {\n x_min: 35,\n x_max: 656,\n y_min: -128,\n y_max: 808,\n ha: 936,\n leftSideBearing: 35,\n advanceWidth: 711,\n },\n '&': {\n x_min: 53,\n x_max: 441,\n y_min: -3,\n y_max: 753,\n ha: 756,\n leftSideBearing: 53,\n advanceWidth: 500,\n },\n \"'\": {\n x_min: 43,\n x_max: 161,\n y_min: 590,\n y_max: 811,\n ha: 221,\n leftSideBearing: 43,\n advanceWidth: 217,\n },\n '(': {\n x_min: 41,\n x_max: 311,\n y_min: -36,\n y_max: 845,\n ha: 881,\n leftSideBearing: 41,\n advanceWidth: 308,\n },\n ')': {\n x_min: -8,\n x_max: 257,\n y_min: -21,\n y_max: 852,\n ha: 873,\n leftSideBearing: -8,\n advanceWidth: 280,\n },\n '*': {\n x_min: 59,\n x_max: 539,\n y_min: 175,\n y_max: 589,\n ha: 414,\n leftSideBearing: 59,\n advanceWidth: 601,\n },\n '+': {\n x_min: 33,\n x_max: 361,\n y_min: 180,\n y_max: 587,\n ha: 407,\n leftSideBearing: 33,\n advanceWidth: 400,\n },\n ',': {\n x_min: 15,\n x_max: 176,\n y_min: -129,\n y_max: 92,\n ha: 221,\n leftSideBearing: 15,\n advanceWidth: 205,\n },\n '-': {\n x_min: 40,\n x_max: 380,\n y_min: 317,\n y_max: 452,\n ha: 135,\n leftSideBearing: 40,\n advanceWidth: 422,\n },\n '.': {\n x_min: 48,\n x_max: 185,\n y_min: -56,\n y_max: 84,\n ha: 140,\n leftSideBearing: 48,\n advanceWidth: 227,\n },\n '/': {\n x_min: -58,\n x_max: 654,\n y_min: -122,\n y_max: 844,\n ha: 966,\n leftSideBearing: -58,\n advanceWidth: 626,\n },\n ':': {\n x_min: 65,\n x_max: 225,\n y_min: 97,\n y_max: 536,\n ha: 439,\n leftSideBearing: 65,\n advanceWidth: 302,\n },\n ';': {\n x_min: 13,\n x_max: 295,\n y_min: -139,\n y_max: 536,\n ha: 675,\n leftSideBearing: 13,\n advanceWidth: 334,\n },\n '<': {\n x_min: 28,\n x_max: 438,\n y_min: -1,\n y_max: 607,\n ha: 608,\n leftSideBearing: 28,\n advanceWidth: 475,\n },\n '=': {\n x_min: 40,\n x_max: 383,\n y_min: 199.9598640852289,\n y_max: 541,\n ha: 341.0401359147711,\n leftSideBearing: 40,\n advanceWidth: 422,\n },\n '>': {\n x_min: 35,\n x_max: 421,\n y_min: 28,\n y_max: 632,\n ha: 604,\n leftSideBearing: 35,\n advanceWidth: 466,\n },\n '?': {\n x_min: 45,\n x_max: 548,\n y_min: -17,\n y_max: 767,\n ha: 784,\n leftSideBearing: 45,\n advanceWidth: 592,\n },\n '@': {\n x_min: 51,\n x_max: 730,\n y_min: -78,\n y_max: 753,\n ha: 831,\n leftSideBearing: 51,\n advanceWidth: 781,\n },\n A: {\n x_min: 37,\n x_max: 554,\n y_min: -4,\n y_max: 746,\n ha: 750,\n leftSideBearing: 37,\n advanceWidth: 617,\n },\n B: {\n x_min: 37,\n x_max: 532,\n y_min: 3,\n y_max: 783,\n ha: 780,\n leftSideBearing: 37,\n advanceWidth: 579,\n },\n C: {\n x_min: 37,\n x_max: 583,\n y_min: -3,\n y_max: 775,\n ha: 778,\n leftSideBearing: 37,\n advanceWidth: 623,\n },\n D: {\n x_min: 50,\n x_max: 530,\n y_min: -15,\n y_max: 749,\n ha: 764,\n leftSideBearing: 50,\n advanceWidth: 579,\n },\n E: {\n x_min: 45,\n x_max: 531,\n y_min: -1,\n y_max: 743,\n ha: 744,\n leftSideBearing: 45,\n advanceWidth: 585,\n },\n F: {\n x_min: 45,\n x_max: 459,\n y_min: 23,\n y_max: 727,\n ha: 704,\n leftSideBearing: 45,\n advanceWidth: 510,\n },\n G: {\n x_min: 31,\n x_max: 577,\n y_min: -8,\n y_max: 733,\n ha: 741,\n leftSideBearing: 31,\n advanceWidth: 611,\n },\n H: {\n x_min: 37,\n x_max: 493,\n y_min: -22,\n y_max: 758,\n ha: 780,\n leftSideBearing: 37,\n advanceWidth: 535,\n },\n I: {\n x_min: 47,\n x_max: 501,\n y_min: -3,\n y_max: 731,\n ha: 734,\n leftSideBearing: 47,\n advanceWidth: 541,\n },\n J: {\n x_min: 33,\n x_max: 531,\n y_min: -23,\n y_max: 725,\n ha: 748,\n leftSideBearing: 33,\n advanceWidth: 573,\n },\n K: {\n x_min: 43,\n x_max: 505,\n y_min: -10,\n y_max: 740,\n ha: 750,\n leftSideBearing: 43,\n advanceWidth: 560,\n },\n L: {\n x_min: 49,\n x_max: 457,\n y_min: -2,\n y_max: 746,\n ha: 748,\n leftSideBearing: 49,\n advanceWidth: 510,\n },\n M: {\n x_min: 35,\n x_max: 699,\n y_min: 1,\n y_max: 744,\n ha: 743,\n leftSideBearing: 35,\n advanceWidth: 743,\n },\n N: {\n x_min: 34,\n x_max: 533,\n y_min: -17,\n y_max: 761,\n ha: 778,\n leftSideBearing: 34,\n advanceWidth: 579,\n },\n O: {\n x_min: 41,\n x_max: 608,\n y_min: -5,\n y_max: 735,\n ha: 740,\n leftSideBearing: 41,\n advanceWidth: 667,\n },\n P: {\n x_min: 53,\n x_max: 451,\n y_min: -18,\n y_max: 735,\n ha: 753,\n leftSideBearing: 53,\n advanceWidth: 497,\n },\n Q: {\n x_min: 40,\n x_max: 599,\n y_min: -67,\n y_max: 744,\n ha: 811,\n leftSideBearing: 40,\n advanceWidth: 648,\n },\n R: {\n x_min: 39,\n x_max: 487,\n y_min: 16,\n y_max: 735,\n ha: 719,\n leftSideBearing: 39,\n advanceWidth: 535,\n },\n S: {\n x_min: 35,\n x_max: 552,\n y_min: -47,\n y_max: 708,\n ha: 755,\n leftSideBearing: 35,\n advanceWidth: 604,\n },\n T: {\n x_min: 26,\n x_max: 656,\n y_min: -13,\n y_max: 718,\n ha: 731,\n leftSideBearing: 26,\n advanceWidth: 705,\n },\n U: {\n x_min: 41,\n x_max: 518,\n y_min: -20,\n y_max: 748,\n ha: 768,\n leftSideBearing: 41,\n advanceWidth: 567,\n },\n V: {\n x_min: 47,\n x_max: 509,\n y_min: -26,\n y_max: 744,\n ha: 770,\n leftSideBearing: 47,\n advanceWidth: 567,\n },\n W: {\n x_min: 44,\n x_max: 789,\n y_min: -35,\n y_max: 720,\n ha: 755,\n leftSideBearing: 44,\n advanceWidth: 833,\n },\n X: {\n x_min: 63,\n x_max: 635,\n y_min: -10,\n y_max: 745,\n ha: 755,\n leftSideBearing: 63,\n advanceWidth: 680,\n },\n Y: {\n x_min: 43,\n x_max: 503,\n y_min: -21,\n y_max: 734,\n ha: 755,\n leftSideBearing: 43,\n advanceWidth: 541,\n },\n Z: {\n x_min: 42,\n x_max: 584,\n y_min: -10,\n y_max: 739,\n ha: 749,\n leftSideBearing: 42,\n advanceWidth: 629,\n },\n '[': {\n x_min: 46,\n x_max: 346,\n y_min: -150,\n y_max: 884,\n ha: 1034,\n leftSideBearing: 46,\n advanceWidth: 291,\n },\n '\\\\': {\n x_min: 20,\n x_max: 616,\n y_min: -100,\n y_max: 797,\n ha: 897,\n leftSideBearing: 20,\n advanceWidth: 645,\n },\n ']': {\n x_min: -76,\n x_max: 226,\n y_min: -150,\n y_max: 881,\n ha: 1031,\n leftSideBearing: -76,\n advanceWidth: 297,\n },\n '^': {\n x_min: 43,\n x_max: 437,\n y_min: 517,\n y_max: 812,\n ha: 295,\n leftSideBearing: 43,\n advanceWidth: 478,\n },\n _: {\n x_min: 29,\n x_max: 563,\n y_min: -110,\n y_max: -1,\n ha: 109,\n leftSideBearing: 29,\n advanceWidth: 598,\n },\n '`': {\n x_min: 54,\n x_max: 321,\n y_min: 540,\n y_max: 747,\n ha: 207,\n leftSideBearing: 54,\n advanceWidth: 368,\n },\n a: {\n x_min: 20,\n x_max: 447,\n y_min: -17,\n y_max: 495,\n ha: 512,\n leftSideBearing: 20,\n advanceWidth: 494,\n },\n b: {\n x_min: 37,\n x_max: 466,\n y_min: -27,\n y_max: 770,\n ha: 797,\n leftSideBearing: 37,\n advanceWidth: 510,\n },\n c: {\n x_min: 35,\n x_max: 456,\n y_min: -9,\n y_max: 507,\n ha: 516,\n leftSideBearing: 35,\n advanceWidth: 460,\n },\n d: {\n x_min: 45,\n x_max: 520,\n y_min: -15,\n y_max: 764,\n ha: 779,\n leftSideBearing: 45,\n advanceWidth: 560,\n },\n e: {\n x_min: 33,\n x_max: 370,\n y_min: -5,\n y_max: 501,\n ha: 506,\n leftSideBearing: 33,\n advanceWidth: 397,\n },\n f: {\n x_min: 35,\n x_max: 411,\n y_min: -13,\n y_max: 695,\n ha: 708,\n leftSideBearing: 35,\n advanceWidth: 453,\n },\n g: {\n x_min: 33,\n x_max: 551,\n y_min: -257,\n y_max: 505,\n ha: 762,\n leftSideBearing: 33,\n advanceWidth: 611,\n },\n h: {\n x_min: 32,\n x_max: 458,\n y_min: -29,\n y_max: 743,\n ha: 772,\n leftSideBearing: 32,\n advanceWidth: 491,\n },\n i: {\n x_min: 45,\n x_max: 167,\n y_min: -13,\n y_max: 631,\n ha: 644,\n leftSideBearing: 45,\n advanceWidth: 220,\n },\n j: {\n x_min: -127,\n x_max: 261,\n y_min: -231,\n y_max: 601,\n ha: 832,\n leftSideBearing: -127,\n advanceWidth: 308,\n },\n k: {\n x_min: 39,\n x_max: 443,\n y_min: -3,\n y_max: 700,\n ha: 703,\n leftSideBearing: 39,\n advanceWidth: 497,\n },\n l: {\n x_min: 58,\n x_max: 168,\n y_min: -8,\n y_max: 686,\n ha: 694,\n leftSideBearing: 58,\n advanceWidth: 227,\n },\n m: {\n x_min: 39,\n x_max: 688,\n y_min: -14,\n y_max: 501,\n ha: 515,\n leftSideBearing: 39,\n advanceWidth: 718,\n },\n n: {\n x_min: 45,\n x_max: 491,\n y_min: -32,\n y_max: 512,\n ha: 544,\n leftSideBearing: 45,\n advanceWidth: 541,\n },\n o: {\n x_min: 41,\n x_max: 424,\n y_min: -12,\n y_max: 493,\n ha: 505,\n leftSideBearing: 41,\n advanceWidth: 447,\n },\n p: {\n x_min: 25,\n x_max: 529,\n y_min: -260,\n y_max: 500,\n ha: 760,\n leftSideBearing: 25,\n advanceWidth: 573,\n },\n q: {\n x_min: 53,\n x_max: 603,\n y_min: -235,\n y_max: 514,\n ha: 749,\n leftSideBearing: 53,\n advanceWidth: 623,\n },\n r: {\n x_min: 32,\n x_max: 407,\n y_min: -7,\n y_max: 492,\n ha: 499,\n leftSideBearing: 32,\n advanceWidth: 460,\n },\n s: {\n x_min: 49,\n x_max: 416,\n y_min: -12,\n y_max: 519,\n ha: 531,\n leftSideBearing: 49,\n advanceWidth: 460,\n },\n t: {\n x_min: 32,\n x_max: 442,\n y_min: -5,\n y_max: 684,\n ha: 689,\n leftSideBearing: 32,\n advanceWidth: 469,\n },\n u: {\n x_min: 41,\n x_max: 487,\n y_min: -5,\n y_max: 507,\n ha: 512,\n leftSideBearing: 41,\n advanceWidth: 510,\n },\n v: {\n x_min: 16,\n x_max: 441,\n y_min: -20,\n y_max: 542,\n ha: 562,\n leftSideBearing: 16,\n advanceWidth: 456,\n },\n w: {\n x_min: 39,\n x_max: 639,\n y_min: -22,\n y_max: 505,\n ha: 527,\n leftSideBearing: 39,\n advanceWidth: 661,\n },\n x: {\n x_min: 15,\n x_max: 505,\n y_min: -39,\n y_max: 539,\n ha: 578,\n leftSideBearing: 15,\n advanceWidth: 541,\n },\n y: {\n x_min: -98,\n x_max: 501,\n y_min: -242,\n y_max: 511,\n ha: 753,\n leftSideBearing: -98,\n advanceWidth: 548,\n },\n z: {\n x_min: 27,\n x_max: 479,\n y_min: -3,\n y_max: 494,\n ha: 497,\n leftSideBearing: 27,\n advanceWidth: 494,\n },\n '{': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '|': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '}': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '~': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n },\n fontFamily: 'PetalumaScript',\n resolution: 1000,\n generatedOn: '2020-06-14T18:33:25.407Z',\n};\n","export const RobotoSlabFont = {\n spacing: 50,\n glyphs: {\n ' ': {\n x_min: 0,\n x_max: 509,\n y_min: 0,\n y_max: 2000,\n ha: 2000,\n leftSideBearing: 0,\n advanceWidth: 509,\n },\n '0': {\n x_min: 121,\n x_max: 1048,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 121,\n advanceWidth: 1168,\n },\n '1': {\n x_min: 117,\n x_max: 767,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 117,\n advanceWidth: 844,\n },\n '2': {\n x_min: 75.8474576645637,\n x_max: 1040,\n y_min: 0,\n y_max: 1477,\n ha: 1477,\n leftSideBearing: 75,\n advanceWidth: 1131,\n },\n '3': {\n x_min: 74.85365853658536,\n x_max: 994,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 74,\n advanceWidth: 1106,\n },\n '4': {\n x_min: 63,\n x_max: 1114,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 63,\n advanceWidth: 1187,\n },\n '5': {\n x_min: 96.8448275474953,\n x_max: 982,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 96,\n advanceWidth: 1081,\n },\n '6': {\n x_min: 121,\n x_max: 1067,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 121,\n advanceWidth: 1144,\n },\n '7': {\n x_min: 76,\n x_max: 1060,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: -30,\n advanceWidth: 1128,\n },\n '8': {\n x_min: 92,\n x_max: 1039,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 92,\n advanceWidth: 1131,\n },\n '9': {\n x_min: 84,\n x_max: 1026,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 84,\n advanceWidth: 1154,\n },\n '!': {\n x_min: 143,\n x_max: 340,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 143,\n advanceWidth: 483,\n },\n '\"': {\n x_min: 166,\n x_max: 634,\n y_min: 1055,\n y_max: 1560,\n ha: 505,\n leftSideBearing: 166,\n advanceWidth: 770,\n },\n '#': {\n x_min: 63,\n x_max: 1179,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 63,\n advanceWidth: 1246,\n },\n $: {\n x_min: 81.92156915727656,\n x_max: 1012,\n y_min: -208,\n y_max: 1693,\n ha: 1901,\n leftSideBearing: 81,\n advanceWidth: 1110,\n },\n '%': {\n x_min: 77,\n x_max: 1384,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 77,\n advanceWidth: 1460,\n },\n '&': {\n x_min: 74,\n x_max: 1242,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 74,\n advanceWidth: 1289,\n },\n \"'\": {\n x_min: 166,\n x_max: 324,\n y_min: 1055,\n y_max: 1560,\n ha: 505,\n leftSideBearing: 166,\n advanceWidth: 460,\n },\n '(': {\n x_min: 114,\n x_max: 650,\n y_min: -463,\n y_max: 1636,\n ha: 2099,\n leftSideBearing: 114,\n advanceWidth: 662,\n },\n ')': {\n x_min: 11,\n x_max: 547,\n y_min: -463,\n y_max: 1636,\n ha: 2099,\n leftSideBearing: 11,\n advanceWidth: 654,\n },\n '*': {\n x_min: 66,\n x_max: 893,\n y_min: 607,\n y_max: 1456,\n ha: 849,\n leftSideBearing: 66,\n advanceWidth: 958,\n },\n '+': {\n x_min: 73,\n x_max: 1071,\n y_min: 146,\n y_max: 1206,\n ha: 1060,\n leftSideBearing: 73,\n advanceWidth: 1145,\n },\n ',': {\n x_min: 23,\n x_max: 315,\n y_min: -311,\n y_max: 221,\n ha: 532,\n leftSideBearing: 23,\n advanceWidth: 404,\n },\n '-': {\n x_min: 154,\n x_max: 643,\n y_min: 538,\n y_max: 692,\n ha: 154,\n leftSideBearing: 154,\n advanceWidth: 797,\n },\n '.': {\n x_min: 145,\n x_max: 342,\n y_min: 0,\n y_max: 202,\n ha: 202,\n leftSideBearing: 145,\n advanceWidth: 493,\n },\n '/': {\n x_min: 0,\n x_max: 774,\n y_min: -125,\n y_max: 1456,\n ha: 1581,\n leftSideBearing: 0,\n advanceWidth: 824,\n },\n ':': {\n x_min: 145,\n x_max: 342,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 145,\n advanceWidth: 419,\n },\n ';': {\n x_min: 53,\n x_max: 345,\n y_min: -311,\n y_max: 1082,\n ha: 1393,\n leftSideBearing: 53,\n advanceWidth: 424,\n },\n '<': {\n x_min: 76,\n x_max: 892,\n y_min: 107,\n y_max: 1013,\n ha: 906,\n leftSideBearing: 76,\n advanceWidth: 1017,\n },\n '=': {\n x_min: 147,\n x_max: 981,\n y_min: 407,\n y_max: 987,\n ha: 580,\n leftSideBearing: 147,\n advanceWidth: 1127,\n },\n '>': {\n x_min: 125,\n x_max: 980,\n y_min: 87,\n y_max: 993,\n ha: 906,\n leftSideBearing: 125,\n advanceWidth: 1060,\n },\n '?': {\n x_min: 65.92660602419838,\n x_max: 890,\n y_min: 0,\n y_max: 1477,\n ha: 1477,\n leftSideBearing: 65,\n advanceWidth: 953,\n },\n '@': {\n x_min: 84.3592218305664,\n x_max: 1705.2346925277395,\n y_min: -453,\n y_max: 1431,\n ha: 1884,\n leftSideBearing: 84,\n advanceWidth: 1821,\n },\n A: {\n x_min: 70,\n x_max: 1463,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 70,\n advanceWidth: 1533,\n },\n B: {\n x_min: 81,\n x_max: 1253,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1322,\n },\n C: {\n x_min: 80,\n x_max: 1174,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 80,\n advanceWidth: 1290,\n },\n D: {\n x_min: 81,\n x_max: 1291,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1356,\n },\n E: {\n x_min: 81,\n x_max: 1190,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1306,\n },\n F: {\n x_min: 81,\n x_max: 1176,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1256,\n },\n G: {\n x_min: 80,\n x_max: 1226,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 80,\n advanceWidth: 1346,\n },\n H: {\n x_min: 81,\n x_max: 1497,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1578,\n },\n I: {\n x_min: 81,\n x_max: 604,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 685,\n },\n J: {\n x_min: 60,\n x_max: 1100,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 60,\n advanceWidth: 1169,\n },\n K: {\n x_min: 81,\n x_max: 1427,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1501,\n },\n L: {\n x_min: 81,\n x_max: 1130,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1210,\n },\n M: {\n x_min: 94,\n x_max: 1888,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 94,\n advanceWidth: 1982,\n },\n N: {\n x_min: 83,\n x_max: 1509,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 83,\n advanceWidth: 1592,\n },\n O: {\n x_min: 70,\n x_max: 1281,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 70,\n advanceWidth: 1351,\n },\n P: {\n x_min: 81,\n x_max: 1242,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1297,\n },\n Q: {\n x_min: 70,\n x_max: 1348,\n y_min: -245,\n y_max: 1477,\n ha: 1722,\n leftSideBearing: 70,\n advanceWidth: 1376,\n },\n R: {\n x_min: 81,\n x_max: 1285,\n y_min: 0,\n y_max: 1455,\n ha: 1455,\n leftSideBearing: 81,\n advanceWidth: 1385,\n },\n S: {\n x_min: 115,\n x_max: 1116,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 115,\n advanceWidth: 1206,\n },\n T: {\n x_min: 96,\n x_max: 1306,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 96,\n advanceWidth: 1406,\n },\n U: {\n x_min: 70,\n x_max: 1452,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 70,\n advanceWidth: 1522,\n },\n V: {\n x_min: 65,\n x_max: 1443,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 65,\n advanceWidth: 1508,\n },\n W: {\n x_min: 72,\n x_max: 2057,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 72,\n advanceWidth: 2129,\n },\n X: {\n x_min: 80,\n x_max: 1449,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 80,\n advanceWidth: 1529,\n },\n Y: {\n x_min: 65,\n x_max: 1396,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 65,\n advanceWidth: 1461,\n },\n Z: {\n x_min: 90,\n x_max: 1107,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 90,\n advanceWidth: 1197,\n },\n '[': {\n x_min: 157,\n x_max: 541,\n y_min: -312,\n y_max: 1664,\n ha: 1976,\n leftSideBearing: 157,\n advanceWidth: 573,\n },\n '\\\\': {\n x_min: 36,\n x_max: 830,\n y_min: -125,\n y_max: 1456,\n ha: 1581,\n leftSideBearing: 36,\n advanceWidth: 841,\n },\n ']': {\n x_min: 23,\n x_max: 408,\n y_min: -312,\n y_max: 1664,\n ha: 1976,\n leftSideBearing: 23,\n advanceWidth: 552,\n },\n '^': {\n x_min: 71,\n x_max: 802,\n y_min: 729,\n y_max: 1456,\n ha: 727,\n leftSideBearing: 71,\n advanceWidth: 864,\n },\n _: {\n x_min: 119,\n x_max: 1041,\n y_min: -154,\n y_max: 0,\n ha: 154,\n leftSideBearing: 119,\n advanceWidth: 1168,\n },\n '`': {\n x_min: 40,\n x_max: 456,\n y_min: 1288,\n y_max: 1560,\n ha: 272,\n leftSideBearing: 40,\n advanceWidth: 496,\n },\n a: {\n x_min: 79,\n x_max: 1053,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 79,\n advanceWidth: 1132,\n },\n b: {\n x_min: -16,\n x_max: 1071,\n y_min: -21,\n y_max: 1560,\n ha: 1581,\n leftSideBearing: -16,\n advanceWidth: 1145,\n },\n c: {\n x_min: 78,\n x_max: 988,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 78,\n advanceWidth: 1067,\n },\n d: {\n x_min: 78,\n x_max: 1156,\n y_min: -21,\n y_max: 1560,\n ha: 1581,\n leftSideBearing: 78,\n advanceWidth: 1218,\n },\n e: {\n x_min: 74,\n x_max: 980,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 74,\n advanceWidth: 1059,\n },\n f: {\n x_min: 64,\n x_max: 731,\n y_min: 0,\n y_max: 1581,\n ha: 1581,\n leftSideBearing: 64,\n advanceWidth: 725,\n },\n g: {\n x_min: 78,\n x_max: 1133,\n y_min: -437,\n y_max: 1102,\n ha: 1539,\n leftSideBearing: 78,\n advanceWidth: 1157,\n },\n h: {\n x_min: 49,\n x_max: 1255,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 49,\n advanceWidth: 1315,\n },\n i: {\n x_min: 67,\n x_max: 590,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 67,\n advanceWidth: 652,\n },\n j: {\n x_min: -56,\n x_max: 381,\n y_min: -437,\n y_max: 1560,\n ha: 1997,\n leftSideBearing: -56,\n advanceWidth: 525,\n },\n k: {\n x_min: 64,\n x_max: 1248,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 64,\n advanceWidth: 1287,\n },\n l: {\n x_min: 64,\n x_max: 587,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 64,\n advanceWidth: 653,\n },\n m: {\n x_min: 74,\n x_max: 1905,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 74,\n advanceWidth: 1977,\n },\n n: {\n x_min: 74,\n x_max: 1278,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 74,\n advanceWidth: 1343,\n },\n o: {\n x_min: 78,\n x_max: 1046,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 78,\n advanceWidth: 1124,\n },\n p: {\n x_min: 34,\n x_max: 1119,\n y_min: -416,\n y_max: 1102,\n ha: 1518,\n leftSideBearing: 34,\n advanceWidth: 1197,\n },\n q: {\n x_min: 78,\n x_max: 1135,\n y_min: -416,\n y_max: 1102,\n ha: 1518,\n leftSideBearing: 78,\n advanceWidth: 1139,\n },\n r: {\n x_min: 72,\n x_max: 808,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 72,\n advanceWidth: 854,\n },\n s: {\n x_min: 104,\n x_max: 933,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 104,\n advanceWidth: 1022,\n },\n t: {\n x_min: 24,\n x_max: 678,\n y_min: -17,\n y_max: 1343,\n ha: 1360,\n leftSideBearing: 24,\n advanceWidth: 730,\n },\n u: {\n x_min: 52,\n x_max: 1181,\n y_min: -21,\n y_max: 1082,\n ha: 1103,\n leftSideBearing: 52,\n advanceWidth: 1245,\n },\n v: {\n x_min: 26,\n x_max: 1176,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 26,\n advanceWidth: 1206,\n },\n w: {\n x_min: 52,\n x_max: 1777,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 52,\n advanceWidth: 1823,\n },\n x: {\n x_min: 42,\n x_max: 1163,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 42,\n advanceWidth: 1203,\n },\n y: {\n x_min: 24,\n x_max: 1172,\n y_min: -437,\n y_max: 1082,\n ha: 1519,\n leftSideBearing: 24,\n advanceWidth: 1192,\n },\n z: {\n x_min: 88,\n x_max: 960,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 88,\n advanceWidth: 1032,\n },\n '{': {\n x_min: 63,\n x_max: 671,\n y_min: -364,\n y_max: 1597,\n ha: 1961,\n leftSideBearing: 63,\n advanceWidth: 701,\n },\n '|': {\n x_min: 150,\n x_max: 307,\n y_min: -270,\n y_max: 1456,\n ha: 1726,\n leftSideBearing: 150,\n advanceWidth: 451,\n },\n '}': {\n x_min: 27,\n x_max: 635,\n y_min: -364,\n y_max: 1597,\n ha: 1961,\n leftSideBearing: 27,\n advanceWidth: 701,\n },\n '~': {\n x_min: 121,\n x_max: 1257,\n y_min: 401,\n y_max: 803,\n ha: 402,\n leftSideBearing: 121,\n advanceWidth: 1386,\n },\n },\n fontFamily: 'Roboto Slab',\n resolution: 2048,\n generatedOn: '2020-06-15T19:12:58.120Z',\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { TextFormatter } from '../textformatter';\nimport { PetalumaScriptFont } from './petalumascript_glyphs';\nimport { RobotoSlabFont } from './robotoslab_glyphs';\nexport function loadTextFonts() {\n // Roboto Slab\n {\n const fontData = RobotoSlabFont;\n const { fontFamily, resolution, glyphs } = fontData;\n Font.load(fontFamily, fontData);\n // Previously we used 'H', but it isn't actually the tallest or the widest.\n // Interestingly, the lowercase 'b' is the tallest glyph.\n const maxSizeGlyph = 'b';\n TextFormatter.registerInfo({\n family: fontFamily,\n resolution,\n glyphs,\n maxSizeGlyph,\n monospaced: false,\n bold: false,\n italic: false,\n superscriptOffset: 0.66,\n subscriptOffset: 0.66,\n serifs: true,\n description: 'Text font to pair with the Bravura / Gonville music fonts.',\n });\n }\n // PetalumaScript\n {\n const fontData = PetalumaScriptFont;\n const { fontFamily, resolution, glyphs } = fontData;\n Font.load(fontFamily, fontData);\n // M is wider, but H is taller. :-)\n // Lowercase b is also taller in this font.\n const maxSizeGlyph = 'b';\n TextFormatter.registerInfo({\n family: fontFamily,\n resolution,\n glyphs,\n maxSizeGlyph,\n monospaced: false,\n bold: false,\n italic: false,\n superscriptOffset: 0.66,\n subscriptOffset: 0.66,\n serifs: false,\n description: 'Text font to pair with the Petaluma music font.',\n });\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Beam } from './beam';\nimport { Font } from './font';\nimport { Fraction } from './fraction';\nimport { ModifierContext } from './modifiercontext';\nimport { Stave } from './stave';\nimport { StaveConnector } from './staveconnector';\nimport { Tables } from './tables';\nimport { TickContext } from './tickcontext';\nimport { isNote, isStaveNote } from './typeguard';\nimport { defined, log, midLine, RuntimeError } from './util';\nimport { Voice } from './voice';\n// Helper function\nconst sumArray = (arr) => arr.reduce((a, b) => a + b, 0);\n/**\n * Create `Alignment`s for each tick in `voices`. Also calculate the\n * total number of ticks in voices.\n */\nfunction createContexts(voices, makeContext, addToContext) {\n if (voices.length == 0)\n return {\n map: {},\n array: [],\n list: [],\n resolutionMultiplier: 0,\n };\n // Initialize tick maps.\n const tickToContextMap = {};\n const tickList = [];\n const contexts = [];\n const resolutionMultiplier = Formatter.getResolutionMultiplier(voices);\n // For each voice, extract notes and create a context for every\n // new tick that hasn't been seen before.\n voices.forEach((voice, voiceIndex) => {\n // Use resolution multiplier as denominator so that no additional expansion\n // of fractional tick values is needed.\n const ticksUsed = new Fraction(0, resolutionMultiplier);\n voice.getTickables().forEach((tickable) => {\n const integerTicks = ticksUsed.numerator;\n // If we have no tick context for this tick, create one.\n if (!tickToContextMap[integerTicks]) {\n const newContext = makeContext({ tickID: integerTicks });\n contexts.push(newContext);\n tickToContextMap[integerTicks] = newContext;\n // Maintain a list of unique integerTicks.\n tickList.push(integerTicks);\n }\n // Add this tickable to the TickContext.\n addToContext(tickable, tickToContextMap[integerTicks], voiceIndex);\n ticksUsed.add(tickable.getTicks());\n });\n });\n return {\n map: tickToContextMap,\n array: contexts,\n list: tickList.sort((a, b) => a - b),\n resolutionMultiplier,\n };\n}\n// eslint-disable-next-line\nfunction L(...args) {\n if (Formatter.DEBUG)\n log('Vex.Flow.Formatter', args);\n}\n/**\n * Get the rest line number of the next non-rest note(s).\n * @param notes array of Notes\n * @param currRestLine\n * @param currNoteIndex current note index\n * @param compare if true, return the midpoint between the current rest line and the next rest line\n * @returns a line number, which determines the vertical position of a rest.\n */\nfunction getRestLineForNextNoteGroup(notes, currRestLine, currNoteIndex, compare) {\n // If no valid next note group, nextRestLine is same as current.\n let nextRestLine = currRestLine;\n // Start with the next note and keep going until we find a valid non-rest note group.\n for (let noteIndex = currNoteIndex + 1; noteIndex < notes.length; noteIndex++) {\n const note = notes[noteIndex];\n if (isNote(note) && !note.isRest() && !note.shouldIgnoreTicks()) {\n nextRestLine = note.getLineForRest();\n break;\n }\n }\n // Locate the mid point between two lines.\n if (compare && currRestLine !== nextRestLine) {\n const top = Math.max(currRestLine, nextRestLine);\n const bot = Math.min(currRestLine, nextRestLine);\n nextRestLine = midLine(top, bot);\n }\n return nextRestLine;\n}\n/**\n * Format implements the formatting and layout algorithms that are used\n * to position notes in a voice. The algorithm can align multiple voices both\n * within a stave, and across multiple staves.\n *\n * To do this, the formatter breaks up voices into a grid of rational-valued\n * `ticks`, to which each note is assigned. Then, minimum widths are assigned\n * to each tick based on the widths of the notes and modifiers in that tick. This\n * establishes the smallest amount of space required for each tick.\n *\n * Finally, the formatter distributes the left over space proportionally to\n * all the ticks, setting the `x` values of the notes in each tick.\n *\n * See `tests/formatter_tests.ts` for usage examples. The helper functions included\n * here (`FormatAndDraw`, `FormatAndDrawTab`) also serve as useful usage examples.\n */\nexport class Formatter {\n constructor(options) {\n this.formatterOptions = Object.assign({ globalSoftmax: false, softmaxFactor: Tables.SOFTMAX_FACTOR, maxIterations: 5 }, options);\n this.justifyWidth = 0;\n this.totalCost = 0;\n this.totalShift = 0;\n this.durationStats = {};\n // Minimum width required to render all the notes in the voices.\n this.minTotalWidth = 0;\n // This is set to `true` after `minTotalWidth` is calculated.\n this.hasMinTotalWidth = false;\n // Arrays of tick and modifier contexts.\n this.tickContexts = {\n map: {},\n array: [],\n list: [],\n resolutionMultiplier: 0,\n };\n this.modifierContexts = [];\n // Gaps between contexts, for free movement of notes post\n // formatting.\n this.contextGaps = {\n total: 0,\n gaps: [],\n };\n this.voices = [];\n this.lossHistory = [];\n }\n /**\n * Helper function to layout \"notes\" one after the other without\n * regard for proportions. Useful for tests and debugging.\n */\n static SimpleFormat(notes, x = 0, { paddingBetween = 10 } = {}) {\n notes.reduce((accumulator, note) => {\n note.addToModifierContext(new ModifierContext());\n const tick = new TickContext().addTickable(note).preFormat();\n const metrics = tick.getMetrics();\n tick.setX(accumulator + metrics.totalLeftPx);\n return accumulator + tick.getWidth() + metrics.totalRightPx + paddingBetween;\n }, x);\n }\n /** Helper function to plot formatter debug info. */\n static plotDebugging(ctx, formatter, xPos, y1, y2, options) {\n options = Object.assign({ stavePadding: Tables.currentMusicFont().lookupMetric('stave.padding') }, options);\n const x = xPos + options.stavePadding;\n const contextGaps = formatter.contextGaps;\n function stroke(x1, x2, color) {\n ctx.beginPath();\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n ctx.setLineWidth(1);\n ctx.fillRect(x1, y1, Math.max(x2 - x1, 0), y2 - y1);\n }\n ctx.save();\n ctx.setFont(Font.SANS_SERIF, 8);\n contextGaps.gaps.forEach((gap) => {\n stroke(x + gap.x1, x + gap.x2, 'rgba(100,200,100,0.4)');\n ctx.setFillStyle('green');\n ctx.fillText(Math.round(gap.x2 - gap.x1).toString(), x + gap.x1, y2 + 12);\n });\n ctx.setFillStyle('red');\n ctx.fillText(`Loss: ${(formatter.totalCost || 0).toFixed(2)} Shift: ${(formatter.totalShift || 0).toFixed(2)} Gap: ${contextGaps.total.toFixed(2)}`, x - 20, y2 + 27);\n ctx.restore();\n }\n /**\n * Helper function to format and draw a single voice. Returns a bounding\n * box for the notation.\n * @param ctx the rendering context\n * @param stave the stave to which to draw (`Stave` or `TabStave`)\n * @param notes array of `Note` instances (`Note`, `TextNote`, `TabNote`, etc.)\n * @param params one of below:\n * * Setting `autobeam` only `(context, stave, notes, true)` or\n * `(ctx, stave, notes, {autobeam: true})`\n * * Setting `align_rests` a struct is needed `(context, stave, notes, {align_rests: true})`\n * * Setting both a struct is needed `(context, stave, notes, {\n * autobeam: true, align_rests: true})`\n * * `autobeam` automatically generates beams for the notes.\n * * `align_rests` aligns rests with nearby notes.\n */\n static FormatAndDraw(ctx, stave, notes, params) {\n let options = {\n auto_beam: false,\n align_rests: false,\n };\n if (typeof params === 'object') {\n options = Object.assign(Object.assign({}, options), params);\n }\n else if (typeof params === 'boolean') {\n options.auto_beam = params;\n }\n // Start by creating a voice and adding all the notes to it.\n const voice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(notes);\n // Then create beams, if requested.\n const beams = options.auto_beam ? Beam.applyAndGetBeams(voice) : [];\n // Instantiate a `Formatter` and format the notes.\n new Formatter()\n .joinVoices([voice]) // , { align_rests: options.align_rests })\n .formatToStave([voice], stave, { align_rests: options.align_rests, stave });\n // Render the voice and beams to the stave.\n voice.setStave(stave).draw(ctx, stave);\n beams.forEach((beam) => beam.setContext(ctx).draw());\n // Return the bounding box of the voice.\n return voice.getBoundingBox();\n }\n /**\n * Helper function to format and draw aligned tab and stave notes in two\n * separate staves.\n * @param ctx the rendering context\n * @param tabstave a `TabStave` instance on which to render `TabNote`s.\n * @param stave a `Stave` instance on which to render `Note`s.\n * @param notes array of `Note` instances for the stave (`Note`, `BarNote`, etc.)\n * @param tabnotes array of `Note` instances for the tab stave (`TabNote`, `BarNote`, etc.)\n * @param autobeam automatically generate beams.\n * @param params a configuration object:\n * * `autobeam` automatically generates beams for the notes.\n * * `align_rests` aligns rests with nearby notes.\n */\n static FormatAndDrawTab(ctx, tabstave, stave, tabnotes, notes, autobeam, params) {\n let opts = {\n auto_beam: autobeam,\n align_rests: false,\n };\n if (typeof params === 'object') {\n opts = Object.assign(Object.assign({}, opts), params);\n }\n else if (typeof params === 'boolean') {\n opts.auto_beam = params;\n }\n // Create a `4/4` voice for `notes`.\n const notevoice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(notes);\n // Create a `4/4` voice for `tabnotes`.\n const tabvoice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(tabnotes);\n // Then create beams, if requested.\n const beams = opts.auto_beam ? Beam.applyAndGetBeams(notevoice) : [];\n // Instantiate a `Formatter` and align tab and stave notes.\n new Formatter()\n .joinVoices([notevoice]) // , { align_rests: opts.align_rests })\n .joinVoices([tabvoice])\n .formatToStave([notevoice, tabvoice], stave, { align_rests: opts.align_rests });\n // Render voices and beams to staves.\n notevoice.draw(ctx, stave);\n tabvoice.draw(ctx, tabstave);\n beams.forEach((beam) => beam.setContext(ctx).draw());\n // Draw a connector between tab and note staves.\n new StaveConnector(stave, tabstave).setContext(ctx).draw();\n }\n /**\n * Automatically set the vertical position of rests based on previous/next note positions.\n * @param tickables an array of Tickables.\n * @param alignAllNotes If `false`, only align rests that are within a group of beamed notes.\n * @param alignTuplets If `false`, ignores tuplets.\n */\n static AlignRestsToNotes(tickables, alignAllNotes, alignTuplets) {\n tickables.forEach((currTickable, index) => {\n if (isStaveNote(currTickable) && currTickable.isRest()) {\n if (currTickable.getTuplet() && !alignTuplets) {\n return;\n }\n // If activated rests not on default can be rendered as specified.\n const position = currTickable.getGlyph().position.toUpperCase();\n if (position !== 'R/4' && position !== 'B/4') {\n return;\n }\n if (alignAllNotes || currTickable.getBeam()) {\n // Align rests with previous/next notes.\n const props = currTickable.getKeyProps()[0];\n if (index === 0) {\n props.line = getRestLineForNextNoteGroup(tickables, props.line, index, false);\n }\n else if (index > 0 && index < tickables.length) {\n // If previous tickable is a rest, use its line number.\n const prevTickable = tickables[index - 1];\n if (isStaveNote(prevTickable)) {\n if (prevTickable.isRest()) {\n props.line = prevTickable.getKeyProps()[0].line;\n }\n else {\n const restLine = prevTickable.getLineForRest();\n // Get the rest line for next valid non-rest note group.\n props.line = getRestLineForNextNoteGroup(tickables, restLine, index, true);\n }\n }\n }\n currTickable.setKeyLine(0, props.line);\n }\n }\n });\n }\n /**\n * Find all the rests in each of the `voices` and align them to neighboring notes.\n *\n * @param voices\n * @param alignAllNotes If `false`, only align rests within beamed groups of notes. If `true`, align all rests.\n */\n alignRests(voices, alignAllNotes) {\n if (!voices || !voices.length) {\n throw new RuntimeError('BadArgument', 'No voices to format rests');\n }\n voices.forEach((voice) => Formatter.AlignRestsToNotes(voice.getTickables(), alignAllNotes));\n }\n /**\n * Estimate the width required to render 'voices'. This is done by:\n * 1. Sum the widths of all the tick contexts\n * 2. Estimate the padding.\n * The latter is done by calculating the padding 3 different ways, and taking the\n * greatest value:\n * 1. the padding required for unaligned notes in different voices\n * 2. the padding based on the stddev of the tickable widths\n * 3. the padding based on the stddev of the tickable durations.\n *\n * The last 2 quantities estimate a 'width entropy', where notes might need more\n * room than the proportional formatting gives them. A measure of all same duration\n * and width will need no extra padding, and all these quantities will be\n * zero in that case.\n *\n * Note: joinVoices has to be called before calling preCalculateMinTotalWidth.\n *\n * @param voices the voices that contain the notes\n * @returns the estimated width in pixels\n */\n preCalculateMinTotalWidth(voices) {\n const unalignedPadding = Tables.currentMusicFont().lookupMetric('stave.unalignedNotePadding');\n // Calculate additional padding based on 3 methods:\n // 1) unaligned beats in voices, 2) variance of width, 3) variance of durations\n let unalignedCtxCount = 0;\n let wsum = 0;\n let dsum = 0;\n const widths = [];\n const durations = [];\n // Cache results.\n if (this.hasMinTotalWidth)\n return this.minTotalWidth;\n // Create tick contexts.\n if (!voices) {\n throw new RuntimeError('BadArgument', \"'voices' required to run preCalculateMinTotalWidth\");\n }\n this.createTickContexts(voices);\n // eslint-disable-next-line\n const { list: contextList, map: contextMap } = this.tickContexts;\n this.minTotalWidth = 0;\n // Go through each tick context and calculate total width,\n // and also accumulate values used in padding hints\n contextList.forEach((tick) => {\n const context = contextMap[tick];\n context.preFormat();\n // If this TC doesn't have all the voices on it, it's unaligned.\n // so increment the unaligned padding accumulator\n if (context.getTickables().length < voices.length) {\n unalignedCtxCount += 1;\n }\n // Calculate the 'width entropy' over all the Tickables.\n context.getTickables().forEach((t) => {\n wsum += t.getMetrics().width;\n dsum += t.getTicks().value();\n widths.push(t.getMetrics().width);\n durations.push(t.getTicks().value());\n });\n const width = context.getWidth();\n this.minTotalWidth += width;\n });\n this.hasMinTotalWidth = true;\n // normalized (0-1) STDDEV of widths/durations gives us padding hints.\n const wavg = wsum > 0 ? wsum / widths.length : 1 / widths.length;\n const wvar = sumArray(widths.map((ll) => Math.pow(ll - wavg, 2)));\n const wpads = Math.pow(wvar / widths.length, 0.5) / wavg;\n const davg = dsum / durations.length;\n const dvar = sumArray(durations.map((ll) => Math.pow(ll - davg, 2)));\n const dpads = Math.pow(dvar / durations.length, 0.5) / davg;\n // Find max of 3 methods pad the width with that\n const padmax = Math.max(dpads, wpads) * contextList.length * unalignedPadding;\n const unalignedPad = unalignedPadding * unalignedCtxCount;\n return this.minTotalWidth + Math.max(unalignedPad, padmax);\n }\n /**\n * Get minimum width required to render all voices. Either `format` or\n * `preCalculateMinTotalWidth` must be called before this method.\n */\n getMinTotalWidth() {\n if (!this.hasMinTotalWidth) {\n throw new RuntimeError('NoMinTotalWidth', \"Call 'preCalculateMinTotalWidth' or 'preFormat' before calling 'getMinTotalWidth'\");\n }\n return this.minTotalWidth;\n }\n /** Calculate the resolution multiplier for `voices`. */\n static getResolutionMultiplier(voices) {\n if (!voices || !voices.length) {\n throw new RuntimeError('BadArgument', 'No voices to format');\n }\n const totalTicks = voices[0].getTotalTicks();\n const resolutionMultiplier = voices.reduce((accumulator, voice) => {\n if (!voice.getTotalTicks().equals(totalTicks)) {\n throw new RuntimeError('TickMismatch', 'Voices should have same total note duration in ticks.');\n }\n if (voice.getMode() === Voice.Mode.STRICT && !voice.isComplete()) {\n throw new RuntimeError('IncompleteVoice', 'Voice does not have enough notes.');\n }\n return Math.max(accumulator, Fraction.LCM(accumulator, voice.getResolutionMultiplier()));\n }, 1);\n return resolutionMultiplier;\n }\n /** Create a `ModifierContext` for each tick in `voices`. */\n createModifierContexts(voices) {\n if (voices.length == 0)\n return;\n const resolutionMultiplier = Formatter.getResolutionMultiplier(voices);\n // Initialize tick maps.\n const tickToContextMap = new Map();\n const contexts = [];\n // For each voice, extract notes and create a context for every\n // new tick that hasn't been seen before.\n voices.forEach((voice) => {\n // Use resolution multiplier as denominator so that no additional expansion\n // of fractional tick values is needed.\n const ticksUsed = new Fraction(0, resolutionMultiplier);\n voice.getTickables().forEach((tickable) => {\n const integerTicks = ticksUsed.numerator;\n let staveTickToContextMap = tickToContextMap.get(tickable.getStave());\n // If we have no tick context for this tick, create one.\n if (!staveTickToContextMap) {\n tickToContextMap.set(tickable.getStave(), {});\n staveTickToContextMap = tickToContextMap.get(tickable.getStave());\n }\n if (!(staveTickToContextMap ? staveTickToContextMap[integerTicks] : undefined)) {\n const newContext = new ModifierContext();\n contexts.push(newContext);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n staveTickToContextMap[integerTicks] = newContext;\n }\n // Add this tickable to the TickContext.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n tickable.addToModifierContext(staveTickToContextMap[integerTicks]);\n ticksUsed.add(tickable.getTicks());\n });\n });\n this.modifierContexts.push({\n map: tickToContextMap,\n array: contexts,\n resolutionMultiplier,\n });\n }\n /**\n * Create a `TickContext` for each tick in `voices`. Also calculate the\n * total number of ticks in voices.\n */\n createTickContexts(voices) {\n const fn = (tickable, context, voiceIndex) => context.addTickable(tickable, voiceIndex);\n const contexts = createContexts(voices, (tick) => new TickContext(tick), fn);\n this.tickContexts = contexts;\n const contextArray = this.tickContexts.array;\n contextArray.forEach((context) => {\n context.tContexts = contextArray;\n });\n return contexts;\n }\n /**\n * Get the AlignmentContexts of TickContexts that were created by createTickContexts.\n * Returns undefined if createTickContexts has not yet been run.\n */\n getTickContexts() {\n return this.tickContexts;\n }\n /**\n * This is the core formatter logic. Format voices and justify them\n * to `justifyWidth` pixels. `renderingContext` is required to justify elements\n * that can't retrieve widths without a canvas. This method sets the `x` positions\n * of all the tickables/notes in the formatter.\n */\n preFormat(justifyWidth = 0, renderingContext, voicesParam, stave) {\n // Initialize context maps.\n const contexts = this.tickContexts;\n if (!contexts) {\n throw new RuntimeError('NoTickContexts', 'preFormat requires TickContexts');\n }\n const { list: contextList, map: contextMap } = contexts;\n // Reset loss history for evaluator.\n this.lossHistory = [];\n // If voices and a stave were provided, set the Stave for each voice\n // and preFormat to apply Y values to the notes;\n if (voicesParam && stave) {\n voicesParam.forEach((voice) => voice.setStave(stave).preFormat());\n }\n // Now distribute the ticks to each tick context, and assign them their\n // own X positions.\n let x = 0;\n let shift = 0;\n this.minTotalWidth = 0;\n let totalTicks = 0;\n // Pass 1: Give each note maximum width requested by context.\n contextList.forEach((tick) => {\n const context = contextMap[tick];\n // Make sure that all tickables in this context have calculated their\n // space requirements.\n context.preFormat();\n const width = context.getWidth();\n this.minTotalWidth += width;\n const maxTicks = context.getMaxTicks().value();\n totalTicks += maxTicks;\n const metrics = context.getMetrics();\n x = x + shift + metrics.totalLeftPx;\n context.setX(x);\n // Calculate shift for the next tick.\n shift = width - metrics.totalLeftPx;\n });\n // Use softmax based on all notes across all staves. (options.globalSoftmax)\n const { globalSoftmax, softmaxFactor, maxIterations } = this.formatterOptions;\n const exp = (tick) => Math.pow(softmaxFactor, (contextMap[tick].getMaxTicks().value() / totalTicks));\n const expTicksUsed = sumArray(contextList.map(exp));\n this.minTotalWidth = x + shift;\n this.hasMinTotalWidth = true;\n // No justification needed. End formatting.\n if (justifyWidth <= 0)\n return this.evaluate();\n // Start justification. Subtract the right extra pixels of the final context because the formatter\n // justifies based on the context's X position, which is the left-most part of the note head.\n const firstContext = contextMap[contextList[0]];\n const lastContext = contextMap[contextList[contextList.length - 1]];\n // Calculate the \"distance error\" between the tick contexts. The expected distance is the spacing proportional to\n // the softmax of the ticks.\n function calculateIdealDistances(adjustedJustifyWidth) {\n const distances = contextList.map((tick, i) => {\n const context = contextMap[tick];\n const voices = context.getTickablesByVoice();\n let backTickable;\n if (i > 0) {\n const prevContext = contextMap[contextList[i - 1]];\n // Go through each tickable and search backwards for another tickable\n // in the same voice. If found, use that duration (ticks) to calculate\n // the expected distance.\n for (let j = i - 1; j >= 0; j--) {\n const backTick = contextMap[contextList[j]];\n const backVoices = backTick.getTickablesByVoice();\n // Look for matching voices between tick contexts.\n const matchingVoices = [];\n Object.keys(voices).forEach((v) => {\n if (backVoices[v]) {\n matchingVoices.push(v);\n }\n });\n if (matchingVoices.length > 0) {\n // Found matching voices, get largest duration\n let maxTicks = 0;\n let maxNegativeShiftPx = Infinity;\n let expectedDistance = 0;\n matchingVoices.forEach((v) => {\n const ticks = backVoices[v].getTicks().value();\n if (ticks > maxTicks) {\n backTickable = backVoices[v];\n maxTicks = ticks;\n }\n // Calculate the limits of the shift based on modifiers, etc.\n const thisTickable = voices[v];\n const insideLeftEdge = thisTickable.getX() -\n (thisTickable.getMetrics().modLeftPx + thisTickable.getMetrics().leftDisplacedHeadPx);\n const backMetrics = backVoices[v].getMetrics();\n const insideRightEdge = backVoices[v].getX() + backMetrics.notePx + backMetrics.modRightPx + backMetrics.rightDisplacedHeadPx;\n // Don't allow shifting if notes in the same voice can collide\n maxNegativeShiftPx = Math.min(maxNegativeShiftPx, insideLeftEdge - insideRightEdge);\n });\n // Don't shift further left than the notehead of the last context. Actually, stay at most 5% to the right\n // so that two different tick contexts don't align across staves.\n maxNegativeShiftPx = Math.min(maxNegativeShiftPx, context.getX() - (prevContext.getX() + adjustedJustifyWidth * 0.05));\n // Calculate the expected distance of the current context from the last matching tickable. The\n // distance is scaled down by the softmax for the voice.\n if (globalSoftmax) {\n const t = totalTicks;\n expectedDistance = (Math.pow(softmaxFactor, (maxTicks / t)) / expTicksUsed) * adjustedJustifyWidth;\n }\n else if (typeof backTickable !== 'undefined') {\n expectedDistance = backTickable.getVoice().softmax(maxTicks) * adjustedJustifyWidth;\n }\n return {\n expectedDistance,\n maxNegativeShiftPx,\n fromTickable: backTickable,\n };\n }\n }\n }\n return { expectedDistance: 0, fromTickablePx: 0, maxNegativeShiftPx: 0 };\n });\n return distances;\n }\n function shiftToIdealDistances(idealDistances) {\n // Distribute ticks to the contexts based on the calculated distance error.\n const centerX = adjustedJustifyWidth / 2;\n let spaceAccum = 0;\n contextList.forEach((tick, index) => {\n const context = contextMap[tick];\n if (index > 0) {\n const contextX = context.getX();\n const ideal = idealDistances[index];\n const errorPx = defined(ideal.fromTickable).getX() + ideal.expectedDistance - (contextX + spaceAccum);\n let negativeShiftPx = 0;\n if (errorPx > 0) {\n spaceAccum += errorPx;\n }\n else if (errorPx < 0) {\n negativeShiftPx = Math.min(ideal.maxNegativeShiftPx, Math.abs(errorPx));\n spaceAccum += -negativeShiftPx;\n }\n context.setX(contextX + spaceAccum);\n }\n // Move center aligned tickables to middle\n context.getCenterAlignedTickables().forEach((tickable) => {\n tickable.setCenterXShift(centerX - context.getX());\n });\n });\n return lastContext.getX() - firstContext.getX();\n }\n const adjustedJustifyWidth = justifyWidth -\n lastContext.getMetrics().notePx -\n lastContext.getMetrics().totalRightPx -\n firstContext.getMetrics().totalLeftPx;\n const musicFont = Tables.currentMusicFont();\n const configMinPadding = musicFont.lookupMetric('stave.endPaddingMin');\n const configMaxPadding = musicFont.lookupMetric('stave.endPaddingMax');\n const leftPadding = musicFont.lookupMetric('stave.padding');\n let targetWidth = adjustedJustifyWidth;\n const distances = calculateIdealDistances(targetWidth);\n let actualWidth = shiftToIdealDistances(distances);\n // Just one context. Done formatting.\n if (contextList.length === 1)\n return 0;\n const calcMinDistance = (targetWidth, distances) => {\n let mdCalc = targetWidth / 2;\n if (distances.length > 1) {\n for (let di = 1; di < distances.length; ++di) {\n mdCalc = Math.min(distances[di].expectedDistance / 2, mdCalc);\n }\n }\n return mdCalc;\n };\n const minDistance = calcMinDistance(targetWidth, distances);\n // right justify to either the configured padding, or the min distance between notes, whichever is greatest.\n // This * 2 keeps the existing formatting unless there is 'a lot' of extra whitespace, which won't break\n // existing visual regression tests.\n const paddingMaxCalc = (curTargetWidth) => {\n let lastTickablePadding = 0;\n const lastTickable = lastContext && lastContext.getMaxTickable();\n if (lastTickable) {\n const voice = lastTickable.getVoice();\n // If the number of actual ticks in the measure <> configured ticks, right-justify\n // because the softmax won't yield the correct value\n if (voice.getTicksUsed().value() > voice.getTotalTicks().value()) {\n return configMaxPadding * 2 < minDistance ? minDistance : configMaxPadding;\n }\n const tickWidth = lastTickable.getWidth();\n lastTickablePadding =\n voice.softmax(lastContext.getMaxTicks().value()) * curTargetWidth - (tickWidth + leftPadding);\n }\n return configMaxPadding * 2 < lastTickablePadding ? lastTickablePadding : configMaxPadding;\n };\n let paddingMax = paddingMaxCalc(targetWidth);\n let paddingMin = paddingMax - (configMaxPadding - configMinPadding);\n const maxX = adjustedJustifyWidth - paddingMin;\n let iterations = maxIterations;\n // Adjust justification width until the right margin is as close as possible to the calculated padding,\n // without going over\n while ((actualWidth > maxX && iterations > 0) || (actualWidth + paddingMax < maxX && iterations > 1)) {\n targetWidth -= actualWidth - maxX;\n paddingMax = paddingMaxCalc(targetWidth);\n paddingMin = paddingMax - (configMaxPadding - configMinPadding);\n actualWidth = shiftToIdealDistances(calculateIdealDistances(targetWidth));\n iterations--;\n }\n this.justifyWidth = justifyWidth;\n return this.evaluate();\n }\n /** Calculate the total cost of this formatting decision. */\n evaluate() {\n const contexts = this.tickContexts;\n const justifyWidth = this.justifyWidth;\n // Calculate available slack per tick context. This works out how much freedom\n // to move a context has in either direction, without affecting other notes.\n this.contextGaps = { total: 0, gaps: [] };\n contexts.list.forEach((tick, index) => {\n if (index === 0)\n return;\n const prevTick = contexts.list[index - 1];\n const prevContext = contexts.map[prevTick];\n const context = contexts.map[tick];\n const prevMetrics = prevContext.getMetrics();\n const currMetrics = context.getMetrics();\n // Calculate X position of right edge of previous note\n const insideRightEdge = prevContext.getX() + prevMetrics.notePx + prevMetrics.totalRightPx;\n // Calculate X position of left edge of current note\n const insideLeftEdge = context.getX() - currMetrics.totalLeftPx;\n const gap = insideLeftEdge - insideRightEdge;\n this.contextGaps.total += gap;\n this.contextGaps.gaps.push({ x1: insideRightEdge, x2: insideLeftEdge });\n // Tell the tick contexts how much they can reposition themselves.\n context.getFormatterMetrics().freedom.left = gap;\n prevContext.getFormatterMetrics().freedom.right = gap;\n });\n // Calculate mean distance in each voice for each duration type, then calculate\n // how far each note is from the mean.\n this.durationStats = {};\n const durationStats = this.durationStats;\n function updateStats(duration, space) {\n const stats = durationStats[duration];\n if (stats === undefined) {\n durationStats[duration] = { mean: space, count: 1 };\n }\n else {\n stats.count += 1;\n stats.mean = (stats.mean + space) / 2;\n }\n }\n this.voices.forEach((voice) => {\n voice.getTickables().forEach((note, i, notes) => {\n const duration = note.getTicks().clone().simplify().toString();\n const metrics = note.getMetrics();\n const formatterMetrics = note.getFormatterMetrics();\n const leftNoteEdge = note.getX() + metrics.notePx + metrics.modRightPx + metrics.rightDisplacedHeadPx;\n let space = 0;\n if (i < notes.length - 1) {\n const rightNote = notes[i + 1];\n const rightMetrics = rightNote.getMetrics();\n const rightNoteEdge = rightNote.getX() - rightMetrics.modLeftPx - rightMetrics.leftDisplacedHeadPx;\n space = rightNoteEdge - leftNoteEdge;\n formatterMetrics.space.used = rightNote.getX() - note.getX();\n rightNote.getFormatterMetrics().freedom.left = space;\n }\n else {\n space = justifyWidth - leftNoteEdge;\n formatterMetrics.space.used = justifyWidth - note.getX();\n }\n formatterMetrics.freedom.right = space;\n updateStats(duration, formatterMetrics.space.used);\n });\n });\n // Calculate how much each note deviates from the mean. Loss function is square\n // root of the sum of squared deviations.\n let totalDeviation = 0;\n this.voices.forEach((voice) => {\n voice.getTickables().forEach((note) => {\n const duration = note.getTicks().clone().simplify().toString();\n const metrics = note.getFormatterMetrics();\n metrics.space.mean = durationStats[duration].mean;\n metrics.duration = duration;\n metrics.iterations += 1;\n metrics.space.deviation = metrics.space.used - metrics.space.mean;\n totalDeviation += Math.pow(metrics.space.deviation, 2);\n });\n });\n this.totalCost = Math.sqrt(totalDeviation);\n this.lossHistory.push(this.totalCost);\n return this.totalCost;\n }\n /**\n * Run a single iteration of rejustification. At a high level, this method calculates\n * the overall \"loss\" (or cost) of this layout, and repositions tickcontexts in an\n * attempt to reduce the cost. You can call this method multiple times until it finds\n * and oscillates around a global minimum.\n * @param options[alpha] the \"learning rate\" for the formatter. It determines how much of a shift\n * the formatter should make based on its cost function.\n */\n tune(options) {\n var _a;\n const contexts = this.tickContexts;\n if (!contexts) {\n return 0;\n }\n const alpha = (_a = options === null || options === void 0 ? void 0 : options.alpha) !== null && _a !== void 0 ? _a : 0.5;\n // Move `current` tickcontext by `shift` pixels, and adjust the freedom\n // on adjacent tickcontexts.\n function move(current, shift, prev, next) {\n current.setX(current.getX() + shift);\n current.getFormatterMetrics().freedom.left += shift;\n current.getFormatterMetrics().freedom.right -= shift;\n if (prev)\n prev.getFormatterMetrics().freedom.right += shift;\n if (next)\n next.getFormatterMetrics().freedom.left -= shift;\n }\n let shift = 0;\n this.totalShift = 0;\n contexts.list.forEach((tick, index, list) => {\n const context = contexts.map[tick];\n const prevContext = index > 0 ? contexts.map[list[index - 1]] : undefined;\n const nextContext = index < list.length - 1 ? contexts.map[list[index + 1]] : undefined;\n move(context, shift, prevContext, nextContext);\n const cost = -sumArray(context.getTickables().map((t) => t.getFormatterMetrics().space.deviation));\n if (cost > 0) {\n shift = -Math.min(context.getFormatterMetrics().freedom.right, Math.abs(cost));\n }\n else if (cost < 0) {\n if (nextContext) {\n shift = Math.min(nextContext.getFormatterMetrics().freedom.right, Math.abs(cost));\n }\n else {\n shift = 0;\n }\n }\n shift *= alpha;\n this.totalShift += shift;\n });\n return this.evaluate();\n }\n /**\n * This is the top-level call for all formatting logic completed\n * after `x` *and* `y` values have been computed for the notes\n * in the voices.\n */\n postFormat() {\n this.modifierContexts.forEach((modifierContexts) => {\n modifierContexts.array.forEach((mc) => mc.postFormat());\n });\n this.tickContexts.list.forEach((tick) => {\n this.tickContexts.map[tick].postFormat();\n });\n return this;\n }\n /**\n * Take all `voices` and create `ModifierContext`s out of them. This tells\n * the formatters that the voices belong on a single stave.\n */\n joinVoices(voices) {\n this.createModifierContexts(voices);\n this.hasMinTotalWidth = false;\n return this;\n }\n /**\n * Align rests in voices, justify the contexts, and position the notes\n * so voices are aligned and ready to render onto the stave. This method\n * mutates the `x` positions of all tickables in `voices`.\n *\n * Voices are full justified to fit in `justifyWidth` pixels.\n *\n * Set `options.context` to the rendering context. Set `options.align_rests`\n * to true to enable rest alignment.\n */\n format(voices, justifyWidth, options) {\n const opts = Object.assign({ align_rests: false }, options);\n this.voices = voices;\n const softmaxFactor = this.formatterOptions.softmaxFactor;\n if (softmaxFactor) {\n this.voices.forEach((v) => v.setSoftmaxFactor(softmaxFactor));\n }\n this.alignRests(voices, opts.align_rests);\n this.createTickContexts(voices);\n this.preFormat(justifyWidth, opts.context, voices, opts.stave);\n // Only postFormat if a stave was supplied for y value formatting\n if (opts.stave)\n this.postFormat();\n return this;\n }\n // This method is just like `format` except that the `justifyWidth` is inferred from the `stave`.\n formatToStave(voices, stave, optionsParam) {\n const options = Object.assign({ context: stave.getContext() }, optionsParam);\n // eslint-disable-next-line\n const justifyWidth = stave.getNoteEndX() - stave.getNoteStartX() - Stave.defaultPadding;\n L('Formatting voices to width: ', justifyWidth);\n return this.format(voices, justifyWidth, options);\n }\n getTickContext(tick) {\n var _a;\n return (_a = this.tickContexts) === null || _a === void 0 ? void 0 : _a.map[tick];\n }\n}\n// To enable logging for this class. Set `Vex.Flow.Formatter.DEBUG` to `true`.\nFormatter.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Author: Joshua Koo / @zz85\n// Author: @incompleteopus\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n/** Fraction represents a rational number. */\nexport class Fraction {\n /** Set the numerator and denominator. */\n constructor(numerator, denominator) {\n this.numerator = 1;\n this.denominator = 1;\n this.set(numerator, denominator);\n }\n static get CATEGORY() {\n return Category.Fraction;\n }\n /**\n * GCD: Greatest common divisor using the Euclidean algorithm.\n * Note: GCD(0, 0) => 0 and GCD(0, n) => n.\n */\n static GCD(a, b) {\n if (typeof a !== 'number' || Number.isNaN(a) || typeof b !== 'number' || Number.isNaN(b)) {\n throw new RuntimeError('BadArgument', `Invalid numbers: ${a}, ${b}`);\n }\n let t;\n while (b !== 0) {\n t = b;\n b = a % b;\n a = t;\n }\n return a;\n }\n /** LCM: Lowest common multiple. */\n static LCM(a, b) {\n return (a * b) / Fraction.GCD(a, b);\n }\n /** Lowest common multiple for more than two numbers. */\n static LCMM(args) {\n if (args.length === 0) {\n return 0;\n }\n else if (args.length === 1) {\n return args[0];\n }\n else if (args.length === 2) {\n return Fraction.LCM(args[0], args[1]);\n }\n else {\n // args.shift() removes the first number.\n // LCM the first number with the rest of the numbers.\n return Fraction.LCM(args.shift(), Fraction.LCMM(args));\n }\n }\n /** Set the numerator and denominator. */\n set(numerator = 1, denominator = 1) {\n this.numerator = numerator;\n this.denominator = denominator;\n return this;\n }\n /** Return the value of the fraction. */\n value() {\n return this.numerator / this.denominator;\n }\n /** Simplify numerator and denominator using GCD. */\n simplify() {\n let u = this.numerator;\n let d = this.denominator;\n const gcd = Fraction.GCD(u, d);\n u /= gcd;\n d /= gcd;\n if (d < 0) {\n d = -d;\n u = -u;\n }\n return this.set(u, d);\n }\n /** Add value of another fraction. */\n add(param1 = 0, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n const lcm = Fraction.LCM(this.denominator, otherDenominator);\n const a = lcm / this.denominator;\n const b = lcm / otherDenominator;\n const u = this.numerator * a + otherNumerator * b;\n return this.set(u, lcm);\n }\n /** Substract value of another fraction. */\n subtract(param1 = 0, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n const lcm = Fraction.LCM(this.denominator, otherDenominator);\n const a = lcm / this.denominator;\n const b = lcm / otherDenominator;\n const u = this.numerator * a - otherNumerator * b;\n return this.set(u, lcm);\n }\n /** Multiply by value of another fraction. */\n multiply(param1 = 1, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n return this.set(this.numerator * otherNumerator, this.denominator * otherDenominator);\n }\n /** Divide by value of another Fraction. */\n divide(param1 = 1, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n return this.set(this.numerator * otherDenominator, this.denominator * otherNumerator);\n }\n /** Simplify both sides and check if they are equal. */\n equals(compare) {\n const a = Fraction.__staticFractionA.copy(compare).simplify();\n const b = Fraction.__staticFractionB.copy(this).simplify();\n return a.numerator === b.numerator && a.denominator === b.denominator;\n }\n /** Greater than operator. */\n greaterThan(compare) {\n const a = Fraction.__staticFractionB.copy(this);\n a.subtract(compare);\n return a.numerator > 0;\n }\n /** Greater than or equals operator. */\n greaterThanEquals(compare) {\n const a = Fraction.__staticFractionB.copy(this);\n a.subtract(compare);\n return a.numerator >= 0;\n }\n /** Less than operator. */\n lessThan(compare) {\n return !this.greaterThanEquals(compare);\n }\n /** Less than or equals operator. */\n lessThanEquals(compare) {\n return !this.greaterThan(compare);\n }\n /** Return a new copy with current values. */\n clone() {\n return new Fraction(this.numerator, this.denominator);\n }\n /** Copy value of another fraction. */\n copy(other) {\n if (typeof other === 'number') {\n return this.set(other, 1);\n }\n else {\n return this.set(other.numerator, other.denominator);\n }\n }\n /** Return the integer component (eg. 5/2 => 2). */\n quotient() {\n return Math.floor(this.numerator / this.denominator);\n }\n /** Return the remainder component (eg. 5/2 => 1). */\n remainder() {\n return this.numerator % this.denominator;\n }\n /** Calculate absolute value. */\n makeAbs() {\n this.denominator = Math.abs(this.denominator);\n this.numerator = Math.abs(this.numerator);\n return this;\n }\n /** Return a raw string representation (eg. \"5/2\"). */\n toString() {\n return `${this.numerator}/${this.denominator}`;\n }\n /** Return a simplified string respresentation. */\n toSimplifiedString() {\n return Fraction.__staticFractionTmp.copy(this).simplify().toString();\n }\n /** Return string representation in mixed form. */\n toMixedString() {\n let s = '';\n const q = this.quotient();\n const f = Fraction.__staticFractionTmp.copy(this);\n if (q < 0) {\n f.makeAbs();\n }\n if (q !== 0) {\n s += q;\n if (f.numerator !== 0) {\n s += ` ${f.toSimplifiedString()}`;\n }\n }\n else if (f.numerator === 0) {\n s = '0';\n }\n else {\n s = f.toSimplifiedString();\n }\n return s;\n }\n /** Parse a fraction string. */\n parse(str) {\n const i = str.split('/');\n const n = parseInt(i[0], 10);\n const d = i[1] ? parseInt(i[1], 10) : 1;\n return this.set(n, d);\n }\n}\n// Cached objects for comparisons.\nFraction.__staticFractionA = new Fraction();\nFraction.__staticFractionB = new Fraction();\nFraction.__staticFractionTmp = new Fraction();\n/** Helper function to extract the numerator and denominator from another fraction. */\nfunction getNumeratorAndDenominator(n, d = 1) {\n if (typeof n === 'number') {\n // Both params are numbers, so we return them as [numerator, denominator].\n return [n, d];\n }\n else {\n // First param is a Fraction object. We ignore the second param.\n return [n.numerator, n.denominator];\n }\n}\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n// Author Larry Kuhns 2013\n// Class to draws string numbers into the notation.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class FretHandFinger extends Modifier {\n constructor(finger) {\n super();\n this.finger = finger;\n this.width = 7;\n this.position = Modifier.Position.LEFT; // Default position above stem or note head\n this.x_shift = 0;\n this.y_shift = 0;\n this.x_offset = 0; // Horizontal offset from default\n this.y_offset = 0; // Vertical offset from default\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.FretHandFinger;\n }\n // Arrange fingerings inside a ModifierContext.\n static format(nums, state) {\n const { left_shift, right_shift } = state;\n const num_spacing = 1;\n if (!nums || nums.length === 0)\n return false;\n const nums_list = [];\n let prev_note = null;\n let shiftLeft = 0;\n let shiftRight = 0;\n for (let i = 0; i < nums.length; ++i) {\n const num = nums[i];\n const note = num.getNote();\n const pos = num.getPosition();\n const index = num.checkIndex();\n const props = note.getKeyProps()[index];\n const textFormatter = TextFormatter.create(num.textFont);\n const textHeight = textFormatter.maxHeight;\n if (num.position === ModifierPosition.ABOVE) {\n state.top_text_line += textHeight / Tables.STAVE_LINE_DISTANCE + 0.5;\n }\n if (num.position === ModifierPosition.BELOW) {\n state.text_line += textHeight / Tables.STAVE_LINE_DISTANCE + 0.5;\n }\n if (note !== prev_note) {\n for (let n = 0; n < note.keys.length; ++n) {\n if (left_shift === 0) {\n shiftLeft = Math.max(note.getLeftDisplacedHeadPx(), shiftLeft);\n }\n if (right_shift === 0) {\n shiftRight = Math.max(note.getRightDisplacedHeadPx(), shiftRight);\n }\n }\n prev_note = note;\n }\n nums_list.push({\n note,\n num,\n pos,\n line: props.line,\n shiftL: shiftLeft,\n shiftR: shiftRight,\n });\n }\n // Sort fingernumbers by line number.\n nums_list.sort((a, b) => b.line - a.line);\n let numShiftL = 0;\n let numShiftR = 0;\n let xWidthL = 0;\n let xWidthR = 0;\n let lastLine = null;\n let lastNote = null;\n for (let i = 0; i < nums_list.length; ++i) {\n let num_shift = 0;\n const { note, pos, num, line, shiftL, shiftR } = nums_list[i];\n // Reset the position of the string number every line.\n if (line !== lastLine || note !== lastNote) {\n numShiftL = left_shift + shiftL;\n numShiftR = right_shift + shiftR;\n }\n const numWidth = num.getWidth() + num_spacing;\n if (pos === Modifier.Position.LEFT) {\n num.setXShift(left_shift + numShiftL);\n num_shift = left_shift + numWidth; // spacing\n xWidthL = num_shift > xWidthL ? num_shift : xWidthL;\n }\n else if (pos === Modifier.Position.RIGHT) {\n num.setXShift(numShiftR);\n num_shift = shiftRight + numWidth; // spacing\n xWidthR = num_shift > xWidthR ? num_shift : xWidthR;\n }\n lastLine = line;\n lastNote = note;\n }\n state.left_shift += xWidthL;\n state.right_shift += xWidthR;\n return true;\n }\n static easyScoreHook({ fingerings } = {}, note, builder) {\n fingerings === null || fingerings === void 0 ? void 0 : fingerings.split(',').map((fingeringString) => {\n const split = fingeringString.trim().split('.');\n const params = { number: split[0] };\n if (split[1])\n params.position = split[1];\n return builder.getFactory().Fingering(params);\n }).map((fingering, index) => note.addModifier(fingering, index));\n }\n setFretHandFinger(finger) {\n this.finger = finger;\n return this;\n }\n getFretHandFinger() {\n return this.finger;\n }\n setOffsetX(x) {\n this.x_offset = x;\n return this;\n }\n setOffsetY(y) {\n this.y_offset = y;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n let dot_x = start.x + this.x_shift + this.x_offset;\n let dot_y = start.y + this.y_shift + this.y_offset + 5;\n switch (this.position) {\n case Modifier.Position.ABOVE:\n dot_x -= 4;\n dot_y -= 12;\n break;\n case Modifier.Position.BELOW:\n dot_x -= 2;\n dot_y += 10;\n break;\n case Modifier.Position.LEFT:\n dot_x -= this.width;\n break;\n case Modifier.Position.RIGHT:\n dot_x += 1;\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} does not exist`);\n }\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText('' + this.finger, dot_x, dot_y);\n ctx.restore();\n }\n}\nFretHandFinger.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 9,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\nimport { StemmableNote } from './stemmablenote';\nimport { Category, isAnnotation } from './typeguard';\nimport { RuntimeError } from './util';\nconst ERROR_MSG = 'Ghost note must have valid initialization data to identify duration.';\nexport class GhostNote extends StemmableNote {\n static get CATEGORY() {\n return Category.GhostNote;\n }\n constructor(parameter) {\n if (!parameter) {\n throw new RuntimeError('BadArguments', ERROR_MSG);\n }\n let noteStruct;\n if (typeof parameter === 'string') {\n // Preserve backwards-compatibility\n noteStruct = { duration: parameter };\n }\n else if (typeof parameter === 'object') {\n noteStruct = parameter;\n }\n else {\n throw new RuntimeError('BadArguments', ERROR_MSG);\n }\n super(noteStruct);\n // Note properties\n this.setWidth(0);\n }\n /**\n * @returns true if this note is a type of rest. Rests don't have pitches, but take up space in the score.\n */\n isRest() {\n return true;\n }\n setStave(stave) {\n super.setStave(stave);\n return this;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n draw() {\n // Draw Annotations\n this.setRendered();\n for (let i = 0; i < this.modifiers.length; ++i) {\n const modifier = this.modifiers[i];\n if (isAnnotation(modifier)) {\n modifier.setContext(this.getContext());\n modifier.drawWithStyle();\n }\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { BoundingBoxComputation } from './boundingboxcomputation';\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var OutlineCode;\n(function (OutlineCode) {\n OutlineCode[OutlineCode[\"MOVE\"] = 0] = \"MOVE\";\n OutlineCode[OutlineCode[\"LINE\"] = 1] = \"LINE\";\n OutlineCode[OutlineCode[\"QUADRATIC\"] = 2] = \"QUADRATIC\";\n OutlineCode[OutlineCode[\"BEZIER\"] = 3] = \"BEZIER\";\n})(OutlineCode || (OutlineCode = {}));\nclass GlyphCacheEntry {\n constructor(fontStack, code, category) {\n this.point = -1;\n this.metrics = Glyph.loadMetrics(fontStack, code, category);\n this.bbox = Glyph.getOutlineBoundingBox(this.metrics.outline, this.metrics.scale, this.metrics.x_shift, this.metrics.y_shift);\n if (category) {\n this.point = Glyph.lookupFontMetric(this.metrics.font, category, code, 'point', -1);\n }\n }\n}\nclass GlyphCache {\n constructor() {\n this.cache = new Map();\n }\n lookup(code, category) {\n let entries = this.cache.get(Glyph.CURRENT_CACHE_KEY);\n if (entries === undefined) {\n entries = {};\n this.cache.set(Glyph.CURRENT_CACHE_KEY, entries);\n }\n const key = category ? `${code}%${category}` : code;\n let entry = entries[key];\n if (entry === undefined) {\n entry = new GlyphCacheEntry(Glyph.MUSIC_FONT_STACK, code, category);\n entries[key] = entry;\n }\n return entry;\n }\n}\nclass GlyphOutline {\n constructor(outline, originX, originY, scale) {\n this.outline = outline;\n this.originX = originX;\n this.originY = originY;\n this.scale = scale;\n this.i = 0;\n this.precision = 1;\n // Automatically assign private properties: this.outline, this.originX, this.originY, and this.scale.\n this.precision = Math.pow(10, Tables.RENDER_PRECISION_PLACES);\n }\n done() {\n return this.i >= this.outline.length;\n }\n next() {\n return Math.round((this.outline[this.i++] * this.precision) / this.precision);\n }\n nextX() {\n return Math.round((this.originX + this.outline[this.i++] * this.scale) * this.precision) / this.precision;\n }\n nextY() {\n return Math.round((this.originY - this.outline[this.i++] * this.scale) * this.precision) / this.precision;\n }\n static parse(str) {\n const result = [];\n const parts = str.split(' ');\n let i = 0;\n while (i < parts.length) {\n switch (parts[i++]) {\n case 'm':\n result.push(OutlineCode.MOVE, parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'l':\n result.push(OutlineCode.LINE, parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'q':\n result.push(OutlineCode.QUADRATIC, parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'b':\n result.push(OutlineCode.BEZIER, parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n }\n }\n return result;\n }\n}\nexport class Glyph extends Element {\n /**\n * @param code\n * @param point\n * @param options\n */\n constructor(code, point, options) {\n super();\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // INSTANCE MEMBERS\n this.bbox = new BoundingBox(0, 0, 0, 0);\n this.topGlyphs = [];\n this.botGlyphs = [];\n this.options = {};\n this.scale = 1;\n this.code = code;\n this.point = point;\n this.originShift = { x: 0, y: 0 };\n this.x_shift = 0;\n this.y_shift = 0;\n if (options) {\n this.setOptions(options);\n }\n else {\n this.reset();\n }\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // STATIC MEMBERS\n static get CATEGORY() {\n return Category.Glyph;\n }\n /**\n * Pass a key of the form `glyphs.{category}.{code}.{key}` to Font.lookupMetric(). If the initial lookup fails,\n * try again with the path `glyphs.{category}.{key}`. If the second lookup fails, return the defaultValue.\n *\n * @param font\n * @param category any metric path under 'glyphs', so 'stem.up' could resolve to glyphs.stem.up.shiftX, glyphs.stem.up.shiftY, etc.\n * @param code\n * @param key\n * @param defaultValue\n */\n static lookupFontMetric(font, category, code, key, defaultValue) {\n let value = font.lookupMetric(`glyphs.${category}.${code}.${key}`, undefined);\n if (value === undefined) {\n // The first lookup failed, so we omit .${code} and try again (with a defaultValue this time).\n value = font.lookupMetric(`glyphs.${category}.${key}`, defaultValue);\n }\n return value;\n }\n static lookupGlyph(fontStack, code) {\n defined(fontStack, 'BadFontStack', 'Font stack is misconfigured');\n let glyph;\n let font;\n for (let i = 0; i < fontStack.length; i++) {\n font = fontStack[i];\n glyph = font.getGlyphs()[code];\n if (glyph)\n return { glyph, font };\n }\n throw new RuntimeError('BadGlyph', `Glyph ${code} does not exist in font.`);\n }\n static loadMetrics(fontStack, code, category) {\n const { glyph, font } = Glyph.lookupGlyph(fontStack, code);\n if (!glyph.o)\n throw new RuntimeError('BadGlyph', `Glyph ${code} has no outline defined.`);\n let x_shift = 0;\n let y_shift = 0;\n let scale = 1;\n if (category && font) {\n x_shift = Glyph.lookupFontMetric(font, category, code, 'shiftX', 0);\n y_shift = Glyph.lookupFontMetric(font, category, code, 'shiftY', 0);\n scale = Glyph.lookupFontMetric(font, category, code, 'scale', 1);\n }\n const x_min = glyph.x_min;\n const x_max = glyph.x_max;\n const ha = glyph.ha;\n if (!glyph.cached_outline) {\n glyph.cached_outline = GlyphOutline.parse(glyph.o);\n }\n return {\n x_min,\n x_max,\n x_shift,\n y_shift,\n scale,\n ha,\n outline: glyph.cached_outline,\n font,\n width: x_max - x_min,\n height: ha,\n };\n }\n /**\n * Renders glyphs from the default font stack.\n *\n * @param ctx Canvas or SVG context\n * @param x_pos x coordinate\n * @param y_pos y coordinate\n * @param point the point size of the font\n * @param code the glyph code in font.getGlyphs()\n * @param options\n * @returns\n */\n static renderGlyph(ctx, x_pos, y_pos, point, code, options) {\n var _a;\n const data = Glyph.cache.lookup(code, options === null || options === void 0 ? void 0 : options.category);\n const metrics = data.metrics;\n if (data.point != -1) {\n point = data.point;\n }\n const customScale = (_a = options === null || options === void 0 ? void 0 : options.scale) !== null && _a !== void 0 ? _a : 1;\n const scale = ((point * 72.0) / (metrics.font.getResolution() * 100.0)) * metrics.scale * customScale;\n Glyph.renderOutline(ctx, metrics.outline, scale, x_pos + metrics.x_shift * customScale, y_pos + metrics.y_shift * customScale);\n return metrics;\n }\n static renderOutline(ctx, outline, scale, x_pos, y_pos) {\n const go = new GlyphOutline(outline, x_pos, y_pos, scale);\n ctx.beginPath();\n let x, y;\n while (!go.done()) {\n switch (go.next()) {\n case OutlineCode.MOVE:\n ctx.moveTo(go.nextX(), go.nextY());\n break;\n case OutlineCode.LINE:\n ctx.lineTo(go.nextX(), go.nextY());\n break;\n case OutlineCode.QUADRATIC:\n x = go.nextX();\n y = go.nextY();\n ctx.quadraticCurveTo(go.nextX(), go.nextY(), x, y);\n break;\n case OutlineCode.BEZIER:\n x = go.nextX();\n y = go.nextY();\n ctx.bezierCurveTo(go.nextX(), go.nextY(), go.nextX(), go.nextY(), x, y);\n break;\n }\n }\n ctx.fill();\n }\n static getOutlineBoundingBox(outline, scale, x_pos, y_pos) {\n const go = new GlyphOutline(outline, x_pos, y_pos, scale);\n const bboxComp = new BoundingBoxComputation();\n // (penX, penY) hold the pen position: the start of each stroke.\n let penX = x_pos;\n let penY = y_pos;\n let x, y;\n while (!go.done()) {\n switch (go.next()) {\n case OutlineCode.MOVE:\n // Note that we don't add any points to the bounding box until a srroke is actually drawn.\n penX = go.nextX();\n penY = go.nextY();\n break;\n case OutlineCode.LINE:\n bboxComp.addPoint(penX, penY);\n penX = go.nextX();\n penY = go.nextY();\n bboxComp.addPoint(penX, penY);\n break;\n case OutlineCode.QUADRATIC:\n x = go.nextX();\n y = go.nextY();\n bboxComp.addQuadraticCurve(penX, penY, go.nextX(), go.nextY(), x, y);\n penX = x;\n penY = y;\n break;\n case OutlineCode.BEZIER:\n x = go.nextX();\n y = go.nextY();\n bboxComp.addBezierCurve(penX, penY, go.nextX(), go.nextY(), go.nextX(), go.nextY(), x, y);\n penX = x;\n penY = y;\n break;\n }\n }\n return new BoundingBox(bboxComp.getX1(), bboxComp.getY1(), bboxComp.width(), bboxComp.height());\n }\n static getWidth(code, point, category) {\n const data = Glyph.cache.lookup(code, category);\n if (data.point != -1) {\n point = data.point;\n }\n const scale = (point * 72) / (data.metrics.font.getResolution() * 100);\n return data.bbox.getW() * scale;\n }\n // eslint-disable-next-line\n draw(...args) {\n // DO NOTHING.\n }\n getCode() {\n return this.code;\n }\n // eslint-disable-next-line\n setOptions(options) {\n this.options = Object.assign(Object.assign({}, this.options), options);\n this.reset();\n }\n setPoint(point) {\n this.point = point;\n return this;\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getXShift() {\n return this.x_shift;\n }\n setXShift(x_shift) {\n this.x_shift = x_shift;\n return this;\n }\n getYshift() {\n return this.y_shift;\n }\n setYShift(y_shift) {\n this.y_shift = y_shift;\n return this;\n }\n reset() {\n const data = Glyph.cache.lookup(this.code, this.options.category);\n this.metrics = data.metrics;\n // Override point from metrics file\n if (data.point != -1) {\n this.point = data.point;\n }\n this.scale = (this.point * 72) / (this.metrics.font.getResolution() * 100);\n this.bbox = new BoundingBox(data.bbox.getX() * this.scale, data.bbox.getY() * this.scale, data.bbox.getW() * this.scale, data.bbox.getH() * this.scale);\n }\n checkMetrics() {\n return defined(this.metrics, 'BadGlyph', `Glyph ${this.code} is not initialized.`);\n }\n getMetrics() {\n const metrics = this.checkMetrics();\n const metricsScale = metrics.scale;\n return {\n x_min: metrics.x_min * this.scale * metricsScale,\n x_max: metrics.x_max * this.scale * metricsScale,\n width: this.bbox.getW(),\n height: this.bbox.getH(),\n scale: this.scale * metricsScale,\n x_shift: metrics.x_shift,\n y_shift: metrics.y_shift,\n outline: metrics.outline,\n font: metrics.font,\n ha: metrics.ha,\n };\n }\n setOriginX(x) {\n const { bbox } = this;\n const originX = Math.abs(bbox.getX() / bbox.getW());\n const xShift = (x - originX) * bbox.getW();\n this.originShift.x = -xShift;\n }\n setOriginY(y) {\n const { bbox } = this;\n const originY = Math.abs(bbox.getY() / bbox.getH());\n const yShift = (y - originY) * bbox.getH();\n this.originShift.y = -yShift;\n }\n setOrigin(x, y) {\n this.setOriginX(x);\n this.setOriginY(y);\n }\n render(ctx, x, y) {\n const metrics = this.checkMetrics();\n const outline = metrics.outline;\n const scale = this.scale * metrics.scale;\n this.setRendered();\n this.applyStyle(ctx);\n const xPos = x + this.originShift.x + metrics.x_shift;\n const yPos = y + this.originShift.y + metrics.y_shift;\n Glyph.renderOutline(ctx, outline, scale, xPos, yPos);\n this.restoreStyle(ctx);\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n renderToStave(x) {\n const context = this.checkContext();\n const metrics = this.checkMetrics();\n const stave = this.checkStave();\n const outline = metrics.outline;\n const scale = this.scale * metrics.scale;\n this.setRendered();\n this.applyStyle();\n const xPos = x + this.x_shift + metrics.x_shift;\n const yPos = stave.getYForGlyphs() + this.y_shift + metrics.y_shift;\n Glyph.renderOutline(context, outline, scale, xPos, yPos);\n this.restoreStyle();\n }\n}\nGlyph.cache = new GlyphCache();\n// The current cache key for GlyphCache above.\n// Computed when Flow.setMusicFont(...) is called.\n// It is set to a comma separated list of font names.\nGlyph.CURRENT_CACHE_KEY = '';\n// Used by the GlyphCache above.\n// Set when Flow.setMusicFont(...) is called.\nGlyph.MUSIC_FONT_STACK = [];\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Note } from './note';\nimport { Category } from './typeguard';\nexport class GlyphNote extends Note {\n constructor(glyph, noteStruct, options) {\n super(noteStruct);\n this.options = Object.assign({ ignoreTicks: false, line: 2 }, options);\n // Note properties\n this.ignore_ticks = this.options.ignoreTicks;\n if (glyph) {\n this.setGlyph(glyph);\n }\n }\n static get CATEGORY() {\n return Category.GlyphNote;\n }\n setGlyph(glyph) {\n this.glyph = glyph;\n this.setWidth(this.glyph.getMetrics().width);\n return this;\n }\n getBoundingBox() {\n return this.glyph.getBoundingBox();\n }\n preFormat() {\n if (!this.preFormatted && this.modifierContext) {\n this.modifierContext.preFormat();\n }\n this.preFormatted = true;\n return this;\n }\n drawModifiers() {\n const ctx = this.checkContext();\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n modifier.setContext(ctx);\n modifier.drawWithStyle();\n }\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('glyphNote', this.getAttribute('id'));\n // Context is set when setStave is called on Note\n const glyph = this.glyph;\n if (!glyph.getContext()) {\n glyph.setContext(ctx);\n }\n glyph.setStave(stave);\n glyph.setYShift(stave.getYForLine(this.options.line) - stave.getYForGlyphs());\n const x = this.isCenterAligned() ? this.getAbsoluteX() - this.getWidth() / 2 : this.getAbsoluteX();\n glyph.renderToStave(x);\n this.drawModifiers();\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { StaveNote } from './stavenote';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class GraceNote extends StaveNote {\n constructor(noteStruct) {\n super(Object.assign({ glyph_font_scale: Tables.NOTATION_FONT_SCALE * GraceNote.SCALE, stroke_px: GraceNote.LEDGER_LINE_OFFSET }, noteStruct));\n this.slash = noteStruct.slash || false;\n this.slur = true;\n this.buildNoteHeads();\n this.width = 3;\n }\n static get CATEGORY() {\n return Category.GraceNote;\n }\n static get LEDGER_LINE_OFFSET() {\n return 2;\n }\n static get SCALE() {\n return 0.66;\n }\n getStemExtension() {\n if (this.stem_extension_override) {\n return this.stem_extension_override;\n }\n const glyph = this.getGlyph();\n if (glyph) {\n let ret = super.getStemExtension();\n if (glyph.stem) {\n const staveNoteScale = this.getStaveNoteScale();\n ret = (Stem.HEIGHT + ret) * staveNoteScale - Stem.HEIGHT;\n }\n return ret;\n }\n return 0;\n }\n getStaveNoteScale() {\n return this.render_options.glyph_font_scale / Tables.NOTATION_FONT_SCALE;\n }\n draw() {\n super.draw();\n this.setRendered();\n const stem = this.stem;\n if (this.slash && stem) {\n const staveNoteScale = this.getStaveNoteScale();\n // some magic numbers are based on the staveNoteScale 0.66.\n const offsetScale = staveNoteScale / 0.66;\n let slashBBox = undefined;\n const beam = this.beam;\n if (beam) {\n // FIXME: should render slash after beam?\n if (!beam.postFormatted) {\n beam.postFormat();\n }\n slashBBox = this.calcBeamedNotesSlashBBox(8 * offsetScale, 8 * offsetScale, {\n stem: 6 * offsetScale,\n beam: 5 * offsetScale,\n });\n }\n else {\n const stem_direction = this.getStemDirection();\n const noteHeadBounds = this.getNoteHeadBounds();\n const noteStemHeight = stem.getHeight();\n let x = this.getAbsoluteX();\n let y = stem_direction === Stem.DOWN\n ? noteHeadBounds.y_top - noteStemHeight\n : noteHeadBounds.y_bottom - noteStemHeight;\n const defaultStemExtention = stem_direction === Stem.DOWN ? this.glyph.stem_down_extension : this.glyph.stem_up_extension;\n let defaultOffsetY = Tables.STEM_HEIGHT;\n defaultOffsetY -= defaultOffsetY / 2.8;\n defaultOffsetY += defaultStemExtention;\n y += defaultOffsetY * staveNoteScale * stem_direction;\n const offsets = stem_direction === Stem.UP\n ? {\n x1: 1,\n y1: 0,\n x2: 13,\n y2: -9,\n }\n : {\n x1: -4,\n y1: 1,\n x2: 13,\n y2: 9,\n };\n x += offsets.x1 * offsetScale;\n y += offsets.y1 * offsetScale;\n slashBBox = {\n x1: x,\n y1: y,\n x2: x + offsets.x2 * offsetScale,\n y2: y + offsets.y2 * offsetScale,\n };\n }\n // FIXME: avoid staff lines, ledger lines or others.\n const ctx = this.checkContext();\n ctx.save();\n ctx.setLineWidth(1 * offsetScale); // FIXME: use more appropriate value.\n ctx.beginPath();\n ctx.moveTo(slashBBox.x1, slashBBox.y1);\n ctx.lineTo(slashBBox.x2, slashBBox.y2);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n }\n }\n calcBeamedNotesSlashBBox(slashStemOffset, slashBeamOffset, protrusions) {\n const beam = this.beam;\n if (!beam)\n throw new RuntimeError('NoBeam', \"Can't calculate without a beam.\");\n const beam_slope = beam.slope;\n const isBeamEndNote = beam.notes[beam.notes.length - 1] === this;\n const scaleX = isBeamEndNote ? -1 : 1;\n const beam_angle = Math.atan(beam_slope * scaleX);\n // slash line intersecting point on beam.\n const iPointOnBeam = {\n dx: Math.cos(beam_angle) * slashBeamOffset,\n dy: Math.sin(beam_angle) * slashBeamOffset,\n };\n slashStemOffset *= this.getStemDirection();\n const slash_angle = Math.atan((iPointOnBeam.dy - slashStemOffset) / iPointOnBeam.dx);\n const protrusion_stem_dx = Math.cos(slash_angle) * protrusions.stem * scaleX;\n const protrusion_stem_dy = Math.sin(slash_angle) * protrusions.stem;\n const protrusion_beam_dx = Math.cos(slash_angle) * protrusions.beam * scaleX;\n const protrusion_beam_dy = Math.sin(slash_angle) * protrusions.beam;\n const stemX = this.getStemX();\n const stem0X = beam.notes[0].getStemX();\n const stemY = beam.getBeamYToDraw() + (stemX - stem0X) * beam_slope;\n const ret = {\n x1: stemX - protrusion_stem_dx,\n y1: stemY + slashStemOffset - protrusion_stem_dy,\n x2: stemX + iPointOnBeam.dx * scaleX + protrusion_beam_dx,\n y2: stemY + iPointOnBeam.dy + protrusion_beam_dy,\n };\n return ret;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This file implements `GraceNoteGroup` which is used to format and\n// render grace notes.\nimport { Beam } from './beam';\nimport { Formatter } from './formatter';\nimport { Modifier } from './modifier';\nimport { StaveNote } from './stavenote';\nimport { StaveTie } from './stavetie';\nimport { Tables } from './tables';\nimport { TabTie } from './tabtie';\nimport { Category, isStaveNote } from './typeguard';\nimport { log } from './util';\nimport { Voice } from './voice';\n// To enable logging for this class. Set `GraceNoteGroup.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (GraceNoteGroup.DEBUG)\n log('Vex.Flow.GraceNoteGroup', args);\n}\n/** GraceNoteGroup is used to format and render grace notes. */\nexport class GraceNoteGroup extends Modifier {\n //** `GraceNoteGroup` inherits from `Modifier` and is placed inside a `ModifierContext`. */\n constructor(grace_notes, show_slur) {\n super();\n this.preFormatted = false;\n this.position = Modifier.Position.LEFT;\n this.grace_notes = grace_notes;\n this.width = 0;\n this.show_slur = show_slur;\n this.slur = undefined;\n this.voice = new Voice({\n num_beats: 4,\n beat_value: 4,\n resolution: Tables.RESOLUTION,\n }).setStrict(false);\n this.render_options = {\n slur_y_shift: 0,\n };\n this.beams = [];\n this.voice.addTickables(this.grace_notes);\n return this;\n }\n static get CATEGORY() {\n return Category.GraceNoteGroup;\n }\n /** Arranges groups inside a `ModifierContext`. */\n static format(gracenote_groups, state) {\n const group_spacing_stave = 4;\n const group_spacing_tab = 0;\n if (!gracenote_groups || gracenote_groups.length === 0)\n return false;\n const group_list = [];\n let prev_note = null;\n let shiftL = 0;\n for (let i = 0; i < gracenote_groups.length; ++i) {\n const gracenote_group = gracenote_groups[i];\n const note = gracenote_group.getNote();\n const is_stavenote = isStaveNote(note);\n const spacing = is_stavenote ? group_spacing_stave : group_spacing_tab;\n if (is_stavenote && note !== prev_note) {\n // Iterate through all notes to get the displaced pixels\n for (let n = 0; n < note.keys.length; ++n) {\n shiftL = Math.max(note.getLeftDisplacedHeadPx(), shiftL);\n }\n prev_note = note;\n }\n group_list.push({ shift: shiftL, gracenote_group, spacing });\n }\n // If first note left shift in case it is displaced\n let group_shift = group_list[0].shift;\n let formatWidth;\n for (let i = 0; i < group_list.length; ++i) {\n const gracenote_group = group_list[i].gracenote_group;\n gracenote_group.preFormat();\n formatWidth = gracenote_group.getWidth() + group_list[i].spacing;\n group_shift = Math.max(formatWidth, group_shift);\n }\n for (let i = 0; i < group_list.length; ++i) {\n const gracenote_group = group_list[i].gracenote_group;\n formatWidth = gracenote_group.getWidth() + group_list[i].spacing;\n gracenote_group.setSpacingFromNextModifier(group_shift - Math.min(formatWidth, group_shift) + StaveNote.minNoteheadPadding);\n }\n state.left_shift += group_shift;\n return true;\n }\n preFormat() {\n if (this.preFormatted)\n return;\n if (!this.formatter) {\n this.formatter = new Formatter();\n }\n this.formatter.joinVoices([this.voice]).format([this.voice], 0, {});\n this.setWidth(this.formatter.getMinTotalWidth());\n this.preFormatted = true;\n }\n beamNotes(grace_notes) {\n grace_notes = grace_notes || this.grace_notes;\n if (grace_notes.length > 1) {\n const beam = new Beam(grace_notes);\n beam.render_options.beam_width = 3;\n beam.render_options.partial_beam_length = 4;\n this.beams.push(beam);\n }\n return this;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getWidth() {\n return this.width + StaveNote.minNoteheadPadding;\n }\n getGraceNotes() {\n return this.grace_notes;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n L('Drawing grace note group for:', note);\n this.alignSubNotesWithNote(this.getGraceNotes(), note); // Modifier function\n // Draw grace notes.\n this.grace_notes.forEach((graceNote) => graceNote.setContext(ctx).draw());\n // Draw beams.\n this.beams.forEach((beam) => beam.setContext(ctx).draw());\n if (this.show_slur) {\n // Create and draw slur.\n const is_stavenote = isStaveNote(note);\n const TieClass = is_stavenote ? StaveTie : TabTie;\n this.slur = new TieClass({\n last_note: this.grace_notes[0],\n first_note: note,\n first_indices: [0],\n last_indices: [0],\n });\n this.slur.render_options.cp2 = 12;\n this.slur.render_options.y_shift = (is_stavenote ? 7 : 5) + this.render_options.slur_y_shift;\n this.slur.setContext(ctx).draw();\n }\n }\n}\nGraceNoteGroup.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Balazs Forian-Szabo\n//\n// ## Description\n//\n// A basic implementation of grace notes\n// to be rendered on a tab stave.\n//\n// See `tests/gracetabnote_tests.ts` for usage examples.\nimport { Font } from './font';\nimport { TabNote } from './tabnote';\nimport { Category } from './typeguard';\nexport class GraceTabNote extends TabNote {\n static get CATEGORY() {\n return Category.GraceTabNote;\n }\n constructor(noteStruct) {\n super(noteStruct, false);\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // vertical shift from stave line\n y_shift: 0.3, \n // grace glyph scale\n scale: 0.6, \n // grace tablature font\n font: `7.5pt ${Font.SANS_SERIF}` });\n this.updateWidth();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nexport * from './accidental';\nexport * from './annotation';\nexport * from './articulation';\nexport * from './barnote';\nexport * from './beam';\nexport * from './bend';\nexport * from './boundingbox';\nexport * from './boundingboxcomputation';\nexport * from './canvascontext';\nexport * from './chordsymbol';\nexport * from './clef';\nexport * from './clefnote';\nexport * from './crescendo';\nexport * from './curve';\nexport * from './dot';\nexport * from './easyscore';\nexport * from './element';\nexport * from './factory';\nexport * from './flow';\nexport * from './font';\n// Do not export './fonts/*' because they are used by the entry/* files.\nexport * from './formatter';\nexport * from './fraction';\nexport * from './frethandfinger';\nexport * from './ghostnote';\nexport * from './glyph';\nexport * from './glyphnote';\nexport * from './gracenote';\nexport * from './gracenotegroup';\nexport * from './gracetabnote';\nexport * from './keymanager';\nexport * from './keysignature';\nexport * from './keysignote';\nexport * from './modifier';\nexport * from './modifiercontext';\nexport * from './multimeasurerest';\nexport * from './music';\nexport * from './note';\nexport * from './notehead';\nexport * from './notesubgroup';\nexport * from './ornament';\nexport * from './parenthesis';\nexport * from './parser';\nexport * from './pedalmarking';\nexport * from './registry';\nexport * from './rendercontext';\nexport * from './renderer';\nexport * from './repeatnote';\nexport * from './stave';\nexport * from './stavebarline';\nexport * from './staveconnector';\nexport * from './stavehairpin';\nexport * from './staveline';\nexport * from './stavemodifier';\nexport * from './stavenote';\nexport * from './staverepetition';\nexport * from './stavesection';\nexport * from './stavetempo';\nexport * from './stavetext';\nexport * from './stavetie';\nexport * from './stavevolta';\nexport * from './stem';\nexport * from './stemmablenote';\nexport * from './stringnumber';\nexport * from './strokes';\nexport * from './svgcontext';\nexport * from './system';\n// Do not export './tables' because it is internal. Its public API is accessible via Vex.Flow.*.\nexport * from './tabnote';\nexport * from './tabslide';\nexport * from './tabstave';\nexport * from './tabtie';\nexport * from './textbracket';\nexport * from './textdynamics';\nexport * from './textformatter';\nexport * from './textnote';\nexport * from './tickable';\nexport * from './tickcontext';\nexport * from './timesigglyph';\nexport * from './timesignature';\nexport * from './timesignote';\nexport * from './tremolo';\nexport * from './tuning';\nexport * from './tuplet';\nexport * from './typeguard';\nexport * from './util';\n// Do not export './version'. It is accessible via Vex.Flow.BUILD.\nexport * from './vex';\nexport * from './vibrato';\nexport * from './vibratobracket';\nexport * from './voice';\nexport * from './web';\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This class implements diatonic key management.\nimport { Music } from './music';\nimport { RuntimeError } from './util';\nexport class KeyManager {\n constructor(key) {\n this.music = new Music();\n this.setKey(key);\n }\n setKey(key) {\n this.key = key;\n this.reset();\n return this;\n }\n getKey() {\n return this.key;\n }\n reset() {\n this.keyParts = this.music.getKeyParts(this.key);\n this.keyString = this.keyParts.root;\n if (this.keyParts.accidental)\n this.keyString += this.keyParts.accidental;\n const is_supported_type = Music.scaleTypes[this.keyParts.type];\n if (!is_supported_type) {\n throw new RuntimeError('BadArguments', `Unsupported key type: ${this.key}`);\n }\n this.scale = this.music.getScaleTones(this.music.getNoteValue(this.keyString), Music.scaleTypes[this.keyParts.type]);\n this.scaleMap = {};\n this.scaleMapByValue = {};\n this.originalScaleMapByValue = {};\n const noteLocation = Music.root_indices[this.keyParts.root];\n for (let i = 0; i < Music.roots.length; ++i) {\n const index = (noteLocation + i) % Music.roots.length;\n const rootName = Music.roots[index];\n const noteName = this.music.getRelativeNoteName(rootName, this.scale[i]);\n this.scaleMap[rootName] = noteName;\n this.scaleMapByValue[this.scale[i]] = noteName;\n this.originalScaleMapByValue[this.scale[i]] = noteName;\n }\n return this;\n }\n getAccidental(key) {\n const root = this.music.getKeyParts(key).root;\n const parts = this.music.getNoteParts(this.scaleMap[root]);\n return {\n note: this.scaleMap[root],\n accidental: parts.accidental,\n };\n }\n selectNote(note) {\n note = note.toLowerCase();\n const parts = this.music.getNoteParts(note);\n // First look for matching note in our altered scale\n const scaleNote = this.scaleMap[parts.root];\n const modparts = this.music.getNoteParts(scaleNote);\n if (scaleNote === note) {\n return {\n note: scaleNote,\n accidental: parts.accidental,\n change: false,\n };\n }\n // Then search for a note of equivalent value in our altered scale\n const valueNote = this.scaleMapByValue[this.music.getNoteValue(note)];\n if (valueNote != null) {\n return {\n note: valueNote,\n accidental: this.music.getNoteParts(valueNote).accidental,\n change: false,\n };\n }\n // Then search for a note of equivalent value in the original scale\n const originalValueNote = this.originalScaleMapByValue[this.music.getNoteValue(note)];\n if (originalValueNote != null) {\n this.scaleMap[modparts.root] = originalValueNote;\n delete this.scaleMapByValue[this.music.getNoteValue(scaleNote)];\n this.scaleMapByValue[this.music.getNoteValue(note)] = originalValueNote;\n return {\n note: originalValueNote,\n accidental: this.music.getNoteParts(originalValueNote).accidental,\n change: true,\n };\n }\n // Then try to unmodify a currently modified note.\n if (modparts.root === note) {\n delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])];\n this.scaleMapByValue[this.music.getNoteValue(modparts.root)] = modparts.root;\n this.scaleMap[modparts.root] = modparts.root;\n return {\n note: modparts.root,\n accidental: undefined,\n change: true,\n };\n }\n // Last resort -- shitshoot\n delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])];\n this.scaleMapByValue[this.music.getNoteValue(note)] = note;\n delete this.scaleMap[modparts.root];\n this.scaleMap[modparts.root] = note;\n return {\n note,\n accidental: parts.accidental,\n change: true,\n };\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n//\n// ## Description\n//\n// This file implements key signatures. A key signature sits on a stave\n// and indicates the notes with implicit accidentals.\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined } from './util';\nexport class KeySignature extends StaveModifier {\n // Create a new Key Signature based on a `key_spec`\n constructor(keySpec, cancelKeySpec, alterKeySpec) {\n super();\n this.accList = [];\n this.setKeySig(keySpec, cancelKeySpec, alterKeySpec);\n this.setPosition(StaveModifierPosition.BEGIN);\n this.glyphFontScale = 38; // TODO(0xFE): Should this match StaveNote?\n this.glyphs = [];\n this.xPositions = []; // relative to this.x\n this.paddingForced = false;\n }\n static get CATEGORY() {\n return Category.KeySignature;\n }\n // Add an accidental glyph to the `KeySignature` instance which represents\n // the provided `acc`. If `nextAcc` is also provided, the appropriate\n // spacing will be included in the glyph's position\n convertToGlyph(acc, nextAcc) {\n const accGlyphData = Tables.accidentalCodes(acc.type);\n const glyph = new Glyph(accGlyphData.code, this.glyphFontScale);\n // Determine spacing between current accidental and the next accidental\n let extraWidth = 1;\n if (acc.type === 'n' && nextAcc) {\n const spacing = KeySignature.accidentalSpacing[nextAcc.type];\n if (spacing) {\n const isAbove = nextAcc.line >= acc.line;\n extraWidth = isAbove ? spacing.above : spacing.below;\n }\n }\n // Place the glyph on the stave\n this.placeGlyphOnLine(glyph, this.checkStave(), acc.line);\n this.glyphs.push(glyph);\n const xPosition = this.xPositions[this.xPositions.length - 1];\n const glyphWidth = glyph.getMetrics().width + extraWidth;\n // Store the next accidental's x position\n this.xPositions.push(xPosition + glyphWidth);\n // Expand size of key signature\n this.width += glyphWidth;\n }\n // Cancel out a key signature provided in the `spec` parameter. This will\n // place appropriate natural accidentals before the key signature.\n cancelKey(spec) {\n this.formatted = false;\n this.cancelKeySpec = spec;\n return this;\n }\n convertToCancelAccList(spec) {\n // Get the accidental list for the cancelled key signature\n const cancel_accList = Tables.keySignature(spec);\n // If the cancelled key has a different accidental type, ie: # vs b\n const different_types = this.accList.length > 0 && cancel_accList.length > 0 && cancel_accList[0].type !== this.accList[0].type;\n // Determine how many naturals needed to add\n const naturals = different_types ? cancel_accList.length : cancel_accList.length - this.accList.length;\n // Return if no naturals needed\n if (naturals < 1)\n return undefined;\n // Get the line position for each natural\n const cancelled = [];\n for (let i = 0; i < naturals; i++) {\n let index = i;\n if (!different_types) {\n index = cancel_accList.length - naturals + i;\n }\n const acc = cancel_accList[index];\n cancelled.push({ type: 'n', line: acc.line });\n }\n // Combine naturals with main accidental list for the key signature\n this.accList = cancelled.concat(this.accList);\n return {\n accList: cancelled,\n type: cancel_accList[0].type,\n };\n }\n // Deprecated\n addToStave(stave) {\n this.paddingForced = true;\n stave.addModifier(this);\n return this;\n }\n // Apply the accidental staff line placement based on the `clef` and\n // the accidental `type` for the key signature ('# or 'b').\n convertAccLines(clef, type, accList = this.accList) {\n let offset = 0.0; // if clef === \"treble\"\n let customLines; // when clef doesn't follow treble key sig shape\n switch (clef) {\n // Treble & Subbass both have offsets of 0, so are not included.\n case 'soprano':\n if (type === '#')\n customLines = [2.5, 0.5, 2, 0, 1.5, -0.5, 1];\n else\n offset = -1;\n break;\n case 'mezzo-soprano':\n if (type === 'b')\n customLines = [0, 2, 0.5, 2.5, 1, 3, 1.5];\n else\n offset = 1.5;\n break;\n case 'alto':\n offset = 0.5;\n break;\n case 'tenor':\n if (type === '#')\n customLines = [3, 1, 2.5, 0.5, 2, 0, 1.5];\n else\n offset = -0.5;\n break;\n case 'baritone-f':\n case 'baritone-c':\n if (type === 'b')\n customLines = [0.5, 2.5, 1, 3, 1.5, 3.5, 2];\n else\n offset = 2;\n break;\n case 'bass':\n case 'french':\n offset = 1;\n break;\n default:\n break;\n }\n // If there's a special case, assign those lines/spaces:\n let i;\n if (typeof customLines !== 'undefined') {\n for (i = 0; i < accList.length; ++i) {\n accList[i].line = customLines[i];\n }\n }\n else if (offset !== 0) {\n for (i = 0; i < accList.length; ++i) {\n accList[i].line += offset;\n }\n }\n }\n getPadding(index) {\n if (!this.formatted)\n this.format();\n return this.glyphs.length === 0 || (!this.paddingForced && index < 2) ? 0 : this.padding;\n }\n getWidth() {\n if (!this.formatted)\n this.format();\n return this.width;\n }\n setKeySig(keySpec, cancelKeySpec, alterKeySpec) {\n this.formatted = false;\n this.keySpec = keySpec;\n this.cancelKeySpec = cancelKeySpec;\n this.alterKeySpec = alterKeySpec;\n return this;\n }\n // Alter the accidentals of a key spec one by one.\n // Each alteration is a new accidental that replaces the\n // original accidental (or the canceled one).\n alterKey(alterKeySpec) {\n this.formatted = false;\n this.alterKeySpec = alterKeySpec;\n return this;\n }\n convertToAlterAccList(alterKeySpec) {\n const max = Math.min(alterKeySpec.length, this.accList.length);\n for (let i = 0; i < max; ++i) {\n if (alterKeySpec[i]) {\n this.accList[i].type = alterKeySpec[i];\n }\n }\n }\n format() {\n const stave = this.checkStave();\n this.width = 0;\n this.glyphs = [];\n this.xPositions = [0]; // initialize with initial x position\n this.accList = Tables.keySignature(defined(this.keySpec));\n const accList = this.accList;\n const firstAccidentalType = accList.length > 0 ? accList[0].type : undefined;\n let cancelAccList;\n if (this.cancelKeySpec) {\n cancelAccList = this.convertToCancelAccList(this.cancelKeySpec);\n }\n if (this.alterKeySpec) {\n this.convertToAlterAccList(this.alterKeySpec);\n }\n if (this.accList.length > 0) {\n const clef = (this.position === StaveModifierPosition.END ? stave.getEndClef() : stave.getClef()) || stave.getClef();\n if (cancelAccList) {\n this.convertAccLines(clef, cancelAccList.type, cancelAccList.accList);\n }\n this.convertAccLines(clef, firstAccidentalType, accList);\n for (let i = 0; i < this.accList.length; ++i) {\n this.convertToGlyph(this.accList[i], this.accList[i + 1]);\n }\n }\n this.formatted = true;\n }\n /**\n * Return the Glyph objects making up this KeySignature.\n */\n getGlyphs() {\n if (!this.formatted)\n this.format();\n return this.glyphs;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n if (!this.formatted)\n this.format();\n this.setRendered();\n ctx.openGroup('keysignature', this.getAttribute('id'));\n for (let i = 0; i < this.glyphs.length; i++) {\n const glyph = this.glyphs[i];\n const x = this.x + this.xPositions[i];\n glyph.setStave(stave);\n glyph.setContext(ctx);\n glyph.renderToStave(x);\n }\n ctx.closeGroup();\n }\n}\n// Space between natural and following accidental depending\n// on vertical position\nKeySignature.accidentalSpacing = {\n '#': {\n above: 6,\n below: 4,\n },\n b: {\n above: 4,\n below: 7,\n },\n n: {\n above: 4,\n below: 1,\n },\n '##': {\n above: 6,\n below: 4,\n },\n bb: {\n above: 4,\n below: 7,\n },\n db: {\n above: 4,\n below: 7,\n },\n d: {\n above: 4,\n below: 7,\n },\n bbs: {\n above: 4,\n below: 7,\n },\n '++': {\n above: 6,\n below: 4,\n },\n '+': {\n above: 6,\n below: 4,\n },\n '+-': {\n above: 6,\n below: 4,\n },\n '++-': {\n above: 6,\n below: 4,\n },\n bs: {\n above: 4,\n below: 10,\n },\n bss: {\n above: 4,\n below: 10,\n },\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Mark Meeus 2019\nimport { KeySignature } from './keysignature';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nexport class KeySigNote extends Note {\n constructor(keySpec, cancelKeySpec, alterKeySpec) {\n super({ duration: 'b' });\n this.keySignature = new KeySignature(keySpec, cancelKeySpec, alterKeySpec);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.KeySigNote;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n this.keySignature.setStave(this.checkStave());\n this.setWidth(this.keySignature.getWidth());\n return this;\n }\n draw() {\n const ctx = this.checkStave().checkContext();\n this.setRendered();\n this.keySignature.setX(this.getAbsoluteX());\n this.keySignature.setContext(ctx);\n this.keySignature.draw();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var ModifierPosition;\n(function (ModifierPosition) {\n ModifierPosition[ModifierPosition[\"CENTER\"] = 0] = \"CENTER\";\n ModifierPosition[ModifierPosition[\"LEFT\"] = 1] = \"LEFT\";\n ModifierPosition[ModifierPosition[\"RIGHT\"] = 2] = \"RIGHT\";\n ModifierPosition[ModifierPosition[\"ABOVE\"] = 3] = \"ABOVE\";\n ModifierPosition[ModifierPosition[\"BELOW\"] = 4] = \"BELOW\";\n})(ModifierPosition || (ModifierPosition = {}));\n// To enable logging for this class. Set `Vex.Flow.Modifier.DEBUG` to `true`.\n// function L(...args) { if (Modifier.DEBUG) log('Vex.Flow.Modifier', args); }\n/**\n * `Modifier` is an abstract interface for notational elements that modify\n * a `Note`. Examples of modifiers are `Accidental`, `Annotation`, `Stroke`, etc.\n *\n * For a `Modifier` instance to be positioned correctly, it must be part of\n * a `ModifierContext`. All modifiers in the same context are rendered relative to\n * one another.\n *\n * Typically, all modifiers to a note are part of the same `ModifierContext` instance. Also,\n * in multi-voice staves, all modifiers to notes on the same `tick` are part of the same\n * `ModifierContext`. This ensures that multiple voices don't trample all over each other.\n */\nexport class Modifier extends Element {\n constructor() {\n super();\n this.width = 0;\n // The `text_line` is reserved space above or below a stave.\n this.text_line = 0;\n this.position = Modifier.Position.LEFT;\n this.x_shift = 0;\n this.y_shift = 0;\n this.spacingFromNextModifier = 0;\n }\n /**\n * Modifiers category string. Every modifier has a different category.\n * The `ModifierContext` uses this to determine the type and order of the modifiers.\n */\n static get CATEGORY() {\n return Category.Modifier;\n }\n /** Modifiers can be positioned almost anywhere, relative to a note. */\n static get Position() {\n return ModifierPosition;\n }\n static get PositionString() {\n return {\n center: ModifierPosition.CENTER,\n above: ModifierPosition.ABOVE,\n below: ModifierPosition.BELOW,\n left: ModifierPosition.LEFT,\n right: ModifierPosition.RIGHT,\n };\n }\n /** Called when position changes. */\n reset() {\n // DO NOTHING.\n }\n /** Get modifier widths. */\n getWidth() {\n return this.width;\n }\n /** Set modifier widths. */\n setWidth(width) {\n this.width = width;\n return this;\n }\n /** Get attached note (`StaveNote`, `TabNote`, etc.) */\n getNote() {\n return defined(this.note, 'NoNote', 'Modifier has no note.');\n }\n /**\n * Used in draw() to check and get the attached note (`StaveNote`, `TabNote`, etc.).\n * Also verifies that the index is valid.\n */\n checkAttachedNote() {\n const category = this.getCategory();\n defined(this.index, 'NoIndex', `Can't draw ${category} without an index.`);\n return defined(this.note, 'NoNote', `Can't draw ${category} without a note.`);\n }\n /**\n * Set attached note.\n * @param note (`StaveNote`, `TabNote`, etc.)\n */\n setNote(note) {\n this.note = note;\n return this;\n }\n /** Get note index, which is a specific note in a chord. */\n getIndex() {\n return this.index;\n }\n /** Check and get note index, which is a specific note in a chord. */\n checkIndex() {\n return defined(this.index, 'NoIndex', 'Modifier has an invalid index.');\n }\n /** Set note index, which is a specific note in a chord. */\n setIndex(index) {\n this.index = index;\n return this;\n }\n /** Get `ModifierContext`. */\n getModifierContext() {\n return this.modifierContext;\n }\n /** Check and get `ModifierContext`. */\n checkModifierContext() {\n return defined(this.modifierContext, 'NoModifierContext', 'Modifier Context Required');\n }\n /** Every modifier must be part of a `ModifierContext`. */\n setModifierContext(c) {\n this.modifierContext = c;\n return this;\n }\n /** Get position. */\n getPosition() {\n return this.position;\n }\n /**\n * Set position.\n * @param position CENTER | LEFT | RIGHT | ABOVE | BELOW\n */\n setPosition(position) {\n this.position = typeof position === 'string' ? Modifier.PositionString[position] : position;\n this.reset();\n return this;\n }\n /** Set the `text_line` for the modifier. */\n setTextLine(line) {\n this.text_line = line;\n return this;\n }\n /** Shift modifier down `y` pixels. Negative values shift up. */\n setYShift(y) {\n this.y_shift = y;\n return this;\n }\n /** Set spacing from next modifier. */\n setSpacingFromNextModifier(x) {\n this.spacingFromNextModifier = x;\n }\n /** Get spacing from next modifier. */\n getSpacingFromNextModifier() {\n return this.spacingFromNextModifier;\n }\n /**\n * Shift modifier `x` pixels in the direction of the modifier. Negative values\n * shift reverse.\n */\n setXShift(x) {\n this.x_shift = 0;\n if (this.position === Modifier.Position.LEFT) {\n this.x_shift -= x;\n }\n else {\n this.x_shift += x;\n }\n return this;\n }\n /** Get shift modifier `x` */\n getXShift() {\n return this.x_shift;\n }\n /** Render the modifier onto the canvas. */\n draw() {\n this.checkContext();\n throw new RuntimeError('NotImplemented', 'draw() not implemented for this modifier.');\n }\n // aligns sub notes of NoteSubGroup (or GraceNoteGroup) to the main note with correct x-offset\n alignSubNotesWithNote(subNotes, note) {\n // Shift over the tick contexts of each note\n const tickContext = note.getTickContext();\n const metrics = tickContext.getMetrics();\n const stave = note.getStave();\n const subNoteXOffset = tickContext.getX() - metrics.modLeftPx - metrics.modRightPx + this.getSpacingFromNextModifier();\n subNotes.forEach((subNote) => {\n const subTickContext = subNote.getTickContext();\n if (stave)\n subNote.setStave(stave);\n subTickContext.setXOffset(subNoteXOffset); // don't touch baseX to avoid shift each render\n });\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This class implements various types of members to notes (e.g. bends,\n// fingering positions etc.)\nimport { Accidental } from './accidental';\nimport { Annotation } from './annotation';\nimport { Articulation } from './articulation';\nimport { Bend } from './bend';\nimport { ChordSymbol } from './chordsymbol';\nimport { Dot } from './dot';\nimport { FretHandFinger } from './frethandfinger';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { Parenthesis } from './parenthesis';\nimport { StaveNote } from './stavenote';\nimport { StringNumber } from './stringnumber';\nimport { Stroke } from './strokes';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\nimport { Vibrato } from './vibrato';\n// To enable logging for this class. Set `Vex.Flow.ModifierContext.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (ModifierContext.DEBUG)\n log('Vex.Flow.ModifierContext', args);\n}\nexport class ModifierContext {\n constructor() {\n // Formatting data.\n this.state = {\n left_shift: 0,\n right_shift: 0,\n text_line: 0,\n top_text_line: 0,\n };\n // Current members\n this.members = {};\n this.preFormatted = false;\n this.postFormatted = false;\n this.formatted = false;\n this.width = 0;\n this.spacing = 0;\n }\n addModifier(member) {\n L('addModifier is deprecated, use addMember instead.');\n return this.addMember(member);\n }\n /**\n * this.members maps CATEGORY strings to arrays of Tickable | Modifier | StaveNote | TabNote.\n * Here we add a new member to this.members, and create a new array if needed.\n * @param member\n * @returns this\n */\n addMember(member) {\n const category = member.getCategory();\n if (!this.members[category]) {\n this.members[category] = [];\n }\n this.members[category].push(member);\n member.setModifierContext(this);\n this.preFormatted = false;\n return this;\n }\n /**\n * @deprecated\n */\n getModifiers(category) {\n L('getModifiers is deprecated, use getMembers instead.');\n return this.getMembers(category);\n }\n getMembers(category) {\n var _a;\n return (_a = this.members[category]) !== null && _a !== void 0 ? _a : [];\n }\n getWidth() {\n return this.width;\n }\n getLeftShift() {\n return this.state.left_shift;\n }\n getRightShift() {\n return this.state.right_shift;\n }\n getState() {\n return this.state;\n }\n getMetrics() {\n if (!this.formatted) {\n throw new RuntimeError('UnformattedMember', 'Unformatted member has no metrics.');\n }\n return {\n width: this.state.left_shift + this.state.right_shift + this.spacing,\n spacing: this.spacing,\n };\n }\n preFormat() {\n if (this.preFormatted)\n return;\n L('Preformatting ModifierContext');\n const state = this.state;\n const members = this.members;\n // The ordering below determines when different members are formatted and rendered.\n StaveNote.format(members[Category.StaveNote], state);\n Parenthesis.format(members[Category.Parenthesis], state);\n Dot.format(members[Category.Dot], state);\n FretHandFinger.format(members[Category.FretHandFinger], state);\n Accidental.format(members[Category.Accidental], state);\n Stroke.format(members[Category.Stroke], state);\n GraceNoteGroup.format(members[Category.GraceNoteGroup], state);\n NoteSubGroup.format(members[Category.NoteSubGroup], state);\n StringNumber.format(members[Category.StringNumber], state);\n Articulation.format(members[Category.Articulation], state);\n Ornament.format(members[Category.Ornament], state);\n Annotation.format(members[Category.Annotation], state);\n ChordSymbol.format(members[Category.ChordSymbol], state);\n Bend.format(members[Category.Bend], state);\n Vibrato.format(members[Category.Vibrato], state, this);\n // Update width of this member context\n this.width = state.left_shift + state.right_shift;\n this.preFormatted = true;\n }\n postFormat() {\n if (this.postFormatted)\n return;\n L('Postformatting ModifierContext');\n // If post-formatting is required for an element, add more lines below.\n StaveNote.postFormat(this.getMembers(Category.StaveNote));\n }\n}\nModifierContext.DEBUG = false;\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements multiple measure rests.\nimport { Element } from './element';\nimport { Glyph } from './glyph';\nimport { NoteHead } from './notehead';\nimport { StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { TimeSignature } from './timesignature';\nimport { Category, isBarline } from './typeguard';\nimport { defined } from './util';\nlet semibreve_rest;\nfunction get_semibreve_rest() {\n if (!semibreve_rest) {\n const noteHead = new NoteHead({ duration: 'w', note_type: 'r' });\n semibreve_rest = {\n glyph_font_scale: noteHead.render_options.glyph_font_scale,\n glyph_code: noteHead.glyph_code,\n width: noteHead.getWidth(),\n };\n }\n return semibreve_rest;\n}\nexport class MultiMeasureRest extends Element {\n /**\n *\n * @param number_of_measures Number of measures.\n * @param options The options object.\n */\n constructor(number_of_measures, options) {\n super();\n this.xs = { left: NaN, right: NaN };\n this.hasPaddingLeft = false;\n this.hasPaddingRight = false;\n this.hasLineThickness = false;\n this.hasSymbolSpacing = false;\n this.number_of_measures = number_of_measures;\n // Keep track of whether these four options were provided.\n this.hasPaddingLeft = typeof options.padding_left === 'number';\n this.hasPaddingRight = typeof options.padding_right === 'number';\n this.hasLineThickness = typeof options.line_thickness === 'number';\n this.hasSymbolSpacing = typeof options.symbol_spacing === 'number';\n const musicFont = Tables.currentMusicFont();\n this.render_options = Object.assign({ use_symbols: false, show_number: true, number_line: -0.5, number_glyph_point: musicFont.lookupMetric('digits.point'), line: 2, spacing_between_lines_px: Tables.STAVE_LINE_DISTANCE, serif_thickness: 2, semibreve_rest_glyph_scale: Tables.NOTATION_FONT_SCALE, padding_left: 0, padding_right: 0, line_thickness: 5, symbol_spacing: 0 }, options);\n const fontLineShift = musicFont.lookupMetric('digits.shiftLine', 0);\n this.render_options.number_line += fontLineShift;\n }\n static get CATEGORY() {\n return Category.MultiMeasureRest;\n }\n getXs() {\n return this.xs;\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getStave() {\n return this.stave;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n drawLine(stave, ctx, left, right, spacingBetweenLines) {\n const options = this.render_options;\n const y = stave.getYForLine(options.line);\n const padding = (right - left) * 0.1;\n left += padding;\n right -= padding;\n let lineThicknessHalf;\n if (this.hasLineThickness) {\n lineThicknessHalf = options.line_thickness * 0.5;\n }\n else {\n lineThicknessHalf = spacingBetweenLines * 0.25;\n }\n const serifThickness = options.serif_thickness;\n const top = y - spacingBetweenLines;\n const bot = y + spacingBetweenLines;\n const leftIndented = left + serifThickness;\n const rightIndented = right - serifThickness;\n const lineTop = y - lineThicknessHalf;\n const lineBottom = y + lineThicknessHalf;\n ctx.save();\n ctx.beginPath();\n ctx.moveTo(left, top);\n ctx.lineTo(leftIndented, top);\n ctx.lineTo(leftIndented, lineTop);\n ctx.lineTo(rightIndented, lineTop);\n ctx.lineTo(rightIndented, top);\n ctx.lineTo(right, top);\n ctx.lineTo(right, bot);\n ctx.lineTo(rightIndented, bot);\n ctx.lineTo(rightIndented, lineBottom);\n ctx.lineTo(leftIndented, lineBottom);\n ctx.lineTo(leftIndented, bot);\n ctx.lineTo(left, bot);\n ctx.closePath();\n ctx.fill();\n }\n drawSymbols(stave, ctx, left, right, spacingBetweenLines) {\n const n4 = Math.floor(this.number_of_measures / 4);\n const n = this.number_of_measures % 4;\n const n2 = Math.floor(n / 2);\n const n1 = n % 2;\n const options = this.render_options;\n // FIXME: TODO: invalidate semibreve_rest at the appropriate time\n // (e.g., if the system font settings are changed).\n semibreve_rest = undefined;\n const rest = get_semibreve_rest();\n const rest_scale = options.semibreve_rest_glyph_scale;\n const rest_width = rest.width * (rest_scale / rest.glyph_font_scale);\n const glyphs = {\n 2: {\n width: rest_width * 0.5,\n height: spacingBetweenLines,\n },\n 1: {\n width: rest_width,\n },\n };\n /* 10: normal spacingBetweenLines */\n const spacing = this.hasSymbolSpacing ? options.symbol_spacing : 10;\n const width = n4 * glyphs[2].width + n2 * glyphs[2].width + n1 * glyphs[1].width + (n4 + n2 + n1 - 1) * spacing;\n let x = left + (right - left) * 0.5 - width * 0.5;\n const line = options.line;\n const yTop = stave.getYForLine(line - 1);\n const yMiddle = stave.getYForLine(line);\n const yBottom = stave.getYForLine(line + 1);\n ctx.save();\n ctx.setStrokeStyle('none');\n ctx.setLineWidth(0);\n for (let i = 0; i < n4; ++i) {\n ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n ctx.fillRect(x, yBottom - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n x += glyphs[2].width + spacing;\n }\n for (let i = 0; i < n2; ++i) {\n ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n x += glyphs[2].width + spacing;\n }\n for (let i = 0; i < n1; ++i) {\n Glyph.renderGlyph(ctx, x, yTop, rest_scale, rest.glyph_code);\n x += glyphs[1].width + spacing;\n }\n ctx.restore();\n }\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const stave = this.checkStave();\n let left = stave.getNoteStartX();\n let right = stave.getNoteEndX();\n // FIXME: getNoteStartX() returns x + 5(barline width)\n // getNoteEndX() returns x + width(no barline width)\n // See Stave constructor. How do we fix this?\n // Here, we subtract the barline width.\n const begModifiers = stave.getModifiers(StaveModifierPosition.BEGIN);\n if (begModifiers.length === 1 && isBarline(begModifiers[0])) {\n left -= begModifiers[0].getWidth();\n }\n const options = this.render_options;\n if (this.hasPaddingLeft) {\n left = stave.getX() + options.padding_left;\n }\n if (this.hasPaddingRight) {\n right = stave.getX() + stave.getWidth() - options.padding_right;\n }\n this.xs.left = left;\n this.xs.right = right;\n const spacingBetweenLines = options.spacing_between_lines_px;\n if (options.use_symbols) {\n this.drawSymbols(stave, ctx, left, right, spacingBetweenLines);\n }\n else {\n this.drawLine(stave, ctx, left, right, spacingBetweenLines);\n }\n if (options.show_number) {\n const timeSpec = '/' + this.number_of_measures;\n const timeSig = new TimeSignature(timeSpec, 0, false);\n timeSig.point = options.number_glyph_point;\n timeSig.setTimeSig(timeSpec);\n timeSig.setStave(stave);\n timeSig.setX(left + (right - left) * 0.5 - timeSig.getInfo().glyph.getMetrics().width * 0.5);\n timeSig.bottomLine = options.number_line;\n timeSig.setContext(ctx).draw();\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { RuntimeError } from './util';\n/** Music implements some standard music theory routines. */\nexport class Music {\n /** Number of an canonical notes (12). */\n static get NUM_TONES() {\n return this.canonical_notes.length;\n }\n /** Names of root notes ('c', 'd',...) */\n static get roots() {\n return ['c', 'd', 'e', 'f', 'g', 'a', 'b'];\n }\n /** Values of the root notes.*/\n static get root_values() {\n return [0, 2, 4, 5, 7, 9, 11];\n }\n /** Indices of the root notes.*/\n static get root_indices() {\n return {\n c: 0,\n d: 1,\n e: 2,\n f: 3,\n g: 4,\n a: 5,\n b: 6,\n };\n }\n /** Names of canonical notes ('c', 'c#', 'd',...). */\n static get canonical_notes() {\n return ['c', 'c#', 'd', 'd#', 'e', 'f', 'f#', 'g', 'g#', 'a', 'a#', 'b'];\n }\n /** Names of diatonic intervals ('unison', 'm2', 'M2',...). */\n static get diatonic_intervals() {\n return ['unison', 'm2', 'M2', 'm3', 'M3', 'p4', 'dim5', 'p5', 'm6', 'M6', 'b7', 'M7', 'octave'];\n }\n /** NoteAccidental associated to diatonic intervals. */\n static get diatonic_accidentals() {\n return {\n unison: { note: 0, accidental: 0 },\n m2: { note: 1, accidental: -1 },\n M2: { note: 1, accidental: 0 },\n m3: { note: 2, accidental: -1 },\n M3: { note: 2, accidental: 0 },\n p4: { note: 3, accidental: 0 },\n dim5: { note: 4, accidental: -1 },\n p5: { note: 4, accidental: 0 },\n m6: { note: 5, accidental: -1 },\n M6: { note: 5, accidental: 0 },\n b7: { note: 6, accidental: -1 },\n M7: { note: 6, accidental: 0 },\n octave: { note: 7, accidental: 0 },\n };\n }\n /** Semitones shift associated to intervals .*/\n static get intervals() {\n return {\n u: 0,\n unison: 0,\n m2: 1,\n b2: 1,\n min2: 1,\n S: 1,\n H: 1,\n 2: 2,\n M2: 2,\n maj2: 2,\n T: 2,\n W: 2,\n m3: 3,\n b3: 3,\n min3: 3,\n M3: 4,\n 3: 4,\n maj3: 4,\n 4: 5,\n p4: 5,\n '#4': 6,\n b5: 6,\n aug4: 6,\n dim5: 6,\n 5: 7,\n p5: 7,\n '#5': 8,\n b6: 8,\n aug5: 8,\n 6: 9,\n M6: 9,\n maj6: 9,\n b7: 10,\n m7: 10,\n min7: 10,\n dom7: 10,\n M7: 11,\n maj7: 11,\n 8: 12,\n octave: 12,\n };\n }\n /** Semitones shifts associated with scales. */\n static get scales() {\n return {\n major: [2, 2, 1, 2, 2, 2, 1],\n minor: [2, 1, 2, 2, 1, 2, 2],\n ionian: [2, 2, 1, 2, 2, 2, 1],\n dorian: [2, 1, 2, 2, 2, 1, 2],\n phyrgian: [1, 2, 2, 2, 1, 2, 2],\n lydian: [2, 2, 2, 1, 2, 2, 1],\n mixolydian: [2, 2, 1, 2, 2, 1, 2],\n aeolian: [2, 1, 2, 2, 1, 2, 2],\n locrian: [1, 2, 2, 1, 2, 2, 2],\n };\n }\n /** Scales associated with m (minor) and M (major). */\n static get scaleTypes() {\n return {\n M: Music.scales.major,\n m: Music.scales.minor,\n };\n }\n /** Accidentals abbreviations. */\n static get accidentals() {\n return ['bb', 'b', 'n', '#', '##'];\n }\n /** Note values. */\n static get noteValues() {\n return {\n c: { root_index: 0, int_val: 0 },\n cn: { root_index: 0, int_val: 0 },\n 'c#': { root_index: 0, int_val: 1 },\n 'c##': { root_index: 0, int_val: 2 },\n cb: { root_index: 0, int_val: 11 },\n cbb: { root_index: 0, int_val: 10 },\n d: { root_index: 1, int_val: 2 },\n dn: { root_index: 1, int_val: 2 },\n 'd#': { root_index: 1, int_val: 3 },\n 'd##': { root_index: 1, int_val: 4 },\n db: { root_index: 1, int_val: 1 },\n dbb: { root_index: 1, int_val: 0 },\n e: { root_index: 2, int_val: 4 },\n en: { root_index: 2, int_val: 4 },\n 'e#': { root_index: 2, int_val: 5 },\n 'e##': { root_index: 2, int_val: 6 },\n eb: { root_index: 2, int_val: 3 },\n ebb: { root_index: 2, int_val: 2 },\n f: { root_index: 3, int_val: 5 },\n fn: { root_index: 3, int_val: 5 },\n 'f#': { root_index: 3, int_val: 6 },\n 'f##': { root_index: 3, int_val: 7 },\n fb: { root_index: 3, int_val: 4 },\n fbb: { root_index: 3, int_val: 3 },\n g: { root_index: 4, int_val: 7 },\n gn: { root_index: 4, int_val: 7 },\n 'g#': { root_index: 4, int_val: 8 },\n 'g##': { root_index: 4, int_val: 9 },\n gb: { root_index: 4, int_val: 6 },\n gbb: { root_index: 4, int_val: 5 },\n a: { root_index: 5, int_val: 9 },\n an: { root_index: 5, int_val: 9 },\n 'a#': { root_index: 5, int_val: 10 },\n 'a##': { root_index: 5, int_val: 11 },\n ab: { root_index: 5, int_val: 8 },\n abb: { root_index: 5, int_val: 7 },\n b: { root_index: 6, int_val: 11 },\n bn: { root_index: 6, int_val: 11 },\n 'b#': { root_index: 6, int_val: 0 },\n 'b##': { root_index: 6, int_val: 1 },\n bb: { root_index: 6, int_val: 10 },\n bbb: { root_index: 6, int_val: 9 },\n };\n }\n isValidNoteValue(note) {\n return note >= 0 && note < Music.canonical_notes.length;\n }\n isValidIntervalValue(interval) {\n return interval >= 0 && interval < Music.diatonic_intervals.length;\n }\n /** Return root and accidental associated to a note. */\n getNoteParts(noteString) {\n if (!noteString || noteString.length < 1) {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n if (noteString.length > 3) {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n const note = noteString.toLowerCase();\n const regex = /^([cdefgab])(b|bb|n|#|##)?$/;\n const match = regex.exec(note);\n if (match !== null) {\n const root = match[1];\n const accidental = match[2];\n return {\n root,\n accidental,\n };\n }\n else {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n }\n /** Return root, accidental and type associated to a key. */\n getKeyParts(keyString) {\n if (!keyString || keyString.length < 1) {\n throw new RuntimeError('BadArguments', 'Invalid key: ' + keyString);\n }\n const key = keyString.toLowerCase();\n // Support Major, Minor, Melodic Minor, and Harmonic Minor key types.\n const regex = /^([cdefgab])(b|#)?(mel|harm|m|M)?$/;\n const match = regex.exec(key);\n if (match !== null) {\n const root = match[1];\n const accidental = match[2];\n let type = match[3];\n // Unspecified type implies major\n if (!type)\n type = 'M';\n return {\n root,\n accidental,\n type,\n };\n }\n else {\n throw new RuntimeError('BadArguments', `Invalid key: ${keyString}`);\n }\n }\n /** Note value associated to a note name. */\n getNoteValue(noteString) {\n const value = Music.noteValues[noteString];\n if (value === undefined) {\n throw new RuntimeError('BadArguments', `Invalid note name: ${noteString}`);\n }\n return value.int_val;\n }\n /** Interval value associated to an interval name. */\n getIntervalValue(intervalString) {\n const value = Music.intervals[intervalString];\n if (value === undefined) {\n throw new RuntimeError('BadArguments', `Invalid interval name: ${intervalString}`);\n }\n return value;\n }\n /** Canonical note name associated to a value. */\n getCanonicalNoteName(noteValue) {\n if (!this.isValidNoteValue(noteValue)) {\n throw new RuntimeError('BadArguments', `Invalid note value: ${noteValue}`);\n }\n return Music.canonical_notes[noteValue];\n }\n /** Interval name associated to a value. */\n getCanonicalIntervalName(intervalValue) {\n if (!this.isValidIntervalValue(intervalValue)) {\n throw new RuntimeError('BadArguments', `Invalid interval value: ${intervalValue}`);\n }\n return Music.diatonic_intervals[intervalValue];\n }\n /**\n * Given a note, interval, and interval direction, produce the relative note.\n */\n getRelativeNoteValue(noteValue, intervalValue, direction = 1) {\n if (direction !== 1 && direction !== -1) {\n throw new RuntimeError('BadArguments', `Invalid direction: ${direction}`);\n }\n let sum = (noteValue + direction * intervalValue) % Music.NUM_TONES;\n if (sum < 0)\n sum += Music.NUM_TONES;\n return sum;\n }\n /**\n * Given a root and note value, produce the relative note name.\n */\n getRelativeNoteName(root, noteValue) {\n const parts = this.getNoteParts(root);\n const rootValue = this.getNoteValue(parts.root);\n let interval = noteValue - rootValue;\n if (Math.abs(interval) > Music.NUM_TONES - 3) {\n let multiplier = 1;\n if (interval > 0)\n multiplier = -1;\n // Possibly wrap around. (Add +1 for modulo operator)\n const reverse_interval = ((noteValue + 1 + (rootValue + 1)) % Music.NUM_TONES) * multiplier;\n if (Math.abs(reverse_interval) > 2) {\n throw new RuntimeError('BadArguments', `Notes not related: ${root}, ${noteValue})`);\n }\n else {\n interval = reverse_interval;\n }\n }\n if (Math.abs(interval) > 2) {\n throw new RuntimeError('BadArguments', `Notes not related: ${root}, ${noteValue})`);\n }\n let relativeNoteName = parts.root;\n if (interval > 0) {\n for (let i = 1; i <= interval; ++i) {\n relativeNoteName += '#';\n }\n }\n else if (interval < 0) {\n for (let i = -1; i >= interval; --i) {\n relativeNoteName += 'b';\n }\n }\n return relativeNoteName;\n }\n /**\n * Return scale tones, given intervals. Each successive interval is\n * relative to the previous one, e.g., Major Scale:\n *\n * TTSTTTS = [2,2,1,2,2,2,1]\n *\n * When used with key = 0, returns C scale (which is isomorphic to\n * interval list).\n */\n getScaleTones(key, intervals) {\n const tones = [key];\n let nextNote = key;\n for (let i = 0; i < intervals.length; i++) {\n nextNote = this.getRelativeNoteValue(nextNote, intervals[i]);\n if (nextNote !== key)\n tones.push(nextNote);\n }\n return tones;\n }\n /**\n * Return the interval of a note, given a diatonic scale.\n * e.g., given the scale C, and the note E, returns M3.\n */\n getIntervalBetween(note1, note2, direction = 1) {\n if (direction !== 1 && direction !== -1) {\n throw new RuntimeError('BadArguments', `Invalid direction: ${direction}`);\n }\n if (!this.isValidNoteValue(note1) || !this.isValidNoteValue(note2)) {\n throw new RuntimeError('BadArguments', `Invalid notes: ${note1}, ${note2}`);\n }\n let difference = direction === 1 ? note2 - note1 : note1 - note2;\n if (difference < 0)\n difference += Music.NUM_TONES;\n return difference;\n }\n /**\n * Create a scale map that represents the pitch state for a\n * `keySignature`. For example, passing a `G` to `keySignature` would\n * return a scale map with every note naturalized except for `F` which\n * has an `F#` state.\n */\n createScaleMap(keySignature) {\n const keySigParts = this.getKeyParts(keySignature);\n if (!keySigParts.type)\n throw new RuntimeError('BadArguments', 'Unsupported key type: undefined');\n const scaleName = Music.scaleTypes[keySigParts.type];\n let keySigString = keySigParts.root;\n if (keySigParts.accidental)\n keySigString += keySigParts.accidental;\n if (!scaleName)\n throw new RuntimeError('BadArguments', 'Unsupported key type: ' + keySignature);\n const scale = this.getScaleTones(this.getNoteValue(keySigString), scaleName);\n const noteLocation = Music.root_indices[keySigParts.root];\n const scaleMap = {};\n for (let i = 0; i < Music.roots.length; ++i) {\n const index = (noteLocation + i) % Music.roots.length;\n const rootName = Music.roots[index];\n let noteName = this.getRelativeNoteName(rootName, scale[i]);\n if (noteName.length === 1) {\n noteName += 'n';\n }\n scaleMap[rootName] = noteName;\n }\n return scaleMap;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from './font';\nimport { drawDot } from './rendercontext';\nimport { Tables } from './tables';\nimport { Tickable } from './tickable';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\n/**\n * Note implements an abstract interface for notes and chords that\n * are rendered on a stave. Notes have some common properties: All of them\n * have a value (e.g., pitch, fret, etc.) and a duration (quarter, half, etc.)\n *\n * Some notes have stems, heads, dots, etc. Most notational elements that\n * surround a note are called *modifiers*, and every note has an associated\n * array of them. All notes also have a rendering context and belong to a stave.\n */\nexport class Note extends Tickable {\n /**\n * Every note is a tickable, i.e., it can be mutated by the `Formatter` class for\n * positioning and layout.\n *\n * @param noteStruct To create a new note you need to provide a `noteStruct`.\n */\n constructor(noteStruct) {\n super();\n if (!noteStruct) {\n throw new RuntimeError('BadArguments', 'Note must have valid initialization data to identify duration and type.');\n }\n /** Parses `noteStruct` and get note properties. */\n const parsedNoteStruct = Note.parseNoteStruct(noteStruct);\n if (!parsedNoteStruct) {\n throw new RuntimeError('BadArguments', `Invalid note initialization object: ${JSON.stringify(noteStruct)}`);\n }\n // Set note properties from parameters.\n this.keys = noteStruct.keys || [];\n // per-pitch properties\n this.keyProps = [];\n this.duration = parsedNoteStruct.duration;\n this.noteType = parsedNoteStruct.type;\n this.customTypes = parsedNoteStruct.customTypes;\n if (noteStruct.duration_override) {\n // Custom duration\n this.setDuration(noteStruct.duration_override);\n }\n else {\n // Default duration\n this.setIntrinsicTicks(parsedNoteStruct.ticks);\n }\n this.modifiers = [];\n // Get the glyph code for this note from the font.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n this.customGlyphs = this.customTypes.map((t) => Tables.getGlyphProps(this.duration, t));\n // Note to play for audio players.\n this.playNote = undefined;\n // Positioning contexts used by the Formatter.\n this.ignore_ticks = false;\n // Positioning variables\n this.width = 0; // Width in pixels calculated after preFormat\n this.leftDisplacedHeadPx = 0; // Extra room on left for displaced note head\n this.rightDisplacedHeadPx = 0; // Extra room on right for displaced note head\n this.x_shift = 0; // X shift from tick context X\n this.ys = []; // list of y coordinates for each note\n // we need to hold on to these for ties and beams.\n if (noteStruct.align_center) {\n this.setCenterAlignment(noteStruct.align_center);\n }\n // The render surface.\n this.render_options = {\n annotation_spacing: 5,\n glyph_font_scale: 1,\n stroke_px: 1,\n scale: 1,\n font: '',\n y_shift: 0,\n };\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // STATIC MEMBERS\n static get CATEGORY() {\n return Category.Note;\n }\n /** Debug helper. Displays various note metrics for the given note. */\n static plotMetrics(ctx, note, yPos) {\n const metrics = note.getMetrics();\n const xStart = note.getAbsoluteX() - metrics.modLeftPx - metrics.leftDisplacedHeadPx;\n const xPre1 = note.getAbsoluteX() - metrics.leftDisplacedHeadPx;\n const xAbs = note.getAbsoluteX();\n const xPost1 = note.getAbsoluteX() + metrics.notePx;\n const xPost2 = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx;\n const xEnd = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx + metrics.modRightPx;\n const xFreedomRight = xEnd + (note.getFormatterMetrics().freedom.right || 0);\n const xWidth = xEnd - xStart;\n ctx.save();\n ctx.setFont(Font.SANS_SERIF, 8);\n ctx.fillText(Math.round(xWidth) + 'px', xStart + note.getXShift(), yPos);\n const y = yPos + 7;\n function stroke(x1, x2, color, yy = y) {\n ctx.beginPath();\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n ctx.setLineWidth(3);\n ctx.moveTo(x1 + note.getXShift(), yy);\n ctx.lineTo(x2 + note.getXShift(), yy);\n ctx.stroke();\n }\n stroke(xStart, xPre1, 'red');\n stroke(xPre1, xAbs, '#999');\n stroke(xAbs, xPost1, 'green');\n stroke(xPost1, xPost2, '#999');\n stroke(xPost2, xEnd, 'red');\n stroke(xEnd, xFreedomRight, '#DD0');\n stroke(xStart - note.getXShift(), xStart, '#BBB'); // Shift\n drawDot(ctx, xAbs + note.getXShift(), y, 'blue');\n const formatterMetrics = note.getFormatterMetrics();\n if (formatterMetrics.iterations > 0) {\n const spaceDeviation = formatterMetrics.space.deviation;\n const prefix = spaceDeviation >= 0 ? '+' : '';\n ctx.setFillStyle('red');\n ctx.fillText(prefix + Math.round(spaceDeviation), xAbs + note.getXShift(), yPos - 10);\n }\n ctx.restore();\n }\n static parseDuration(durationString) {\n if (!durationString) {\n return undefined;\n }\n const regexp = /(\\d*\\/?\\d+|[a-z])(d*)([nrhms]|$)/;\n const result = regexp.exec(durationString);\n if (!result) {\n return undefined;\n }\n const duration = result[1];\n const dots = result[2].length;\n const type = result[3] || 'n';\n return { duration, dots, type };\n }\n static parseNoteStruct(noteStruct) {\n // Preserve backwards-compatibility\n const durationProps = Note.parseDuration(noteStruct.duration);\n if (!durationProps) {\n return undefined;\n }\n // If specified type is invalid, return undefined.\n let type = noteStruct.type;\n if (type && !Tables.validTypes[type]) {\n return undefined;\n }\n // If no type specified, check duration or custom types\n const customTypes = [];\n if (!type) {\n type = durationProps.type || 'n';\n // If we have keys, try and check if we've got a custom glyph\n if (noteStruct.keys !== undefined) {\n noteStruct.keys.forEach((k, i) => {\n const result = k.split('/');\n // We have a custom glyph specified after the note eg. /X2\n customTypes[i] = (result && result.length === 3 ? result[2] : type);\n });\n }\n }\n // Calculate the tick duration of the note\n let ticks = Tables.durationToTicks(durationProps.duration);\n if (!ticks) {\n return undefined;\n }\n // Are there any dots?\n const dots = noteStruct.dots ? noteStruct.dots : durationProps.dots;\n if (typeof dots !== 'number') {\n return undefined;\n }\n // Add ticks as necessary depending on the numbr of dots\n let currentTicks = ticks;\n for (let i = 0; i < dots; i++) {\n if (currentTicks <= 1)\n return undefined;\n currentTicks = currentTicks / 2;\n ticks += currentTicks;\n }\n return {\n duration: durationProps.duration,\n type,\n customTypes,\n dots,\n ticks,\n };\n }\n /**\n * Get the play note, which is arbitrary data that can be used by an\n * audio player.\n */\n getPlayNote() {\n return this.playNote;\n }\n /**\n * Set the play note, which is arbitrary data that can be used by an\n * audio player.\n */\n setPlayNote(note) {\n this.playNote = note;\n return this;\n }\n /**\n * @returns true if this note is a type of rest.\n *\n * Rests don't have pitches, but take up space in the score.\n * Subclasses should override this default implementation.\n */\n isRest() {\n return false;\n }\n /** Add stroke. */\n addStroke(index, stroke) {\n stroke.setNote(this);\n stroke.setIndex(index);\n this.modifiers.push(stroke);\n this.preFormatted = false;\n return this;\n }\n /** Get the target stave. */\n getStave() {\n return this.stave;\n }\n /** Check and get the target stave. */\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n /** Set the target stave. */\n setStave(stave) {\n this.stave = stave;\n this.setYs([stave.getYForLine(0)]); // Update Y values if the stave is changed.\n this.setContext(this.stave.getContext());\n return this;\n }\n /** Get spacing to the left of the notes. */\n getLeftDisplacedHeadPx() {\n return this.leftDisplacedHeadPx;\n }\n /** Get spacing to the right of the notes. */\n getRightDisplacedHeadPx() {\n return this.rightDisplacedHeadPx;\n }\n /** Set spacing to the left of the notes. */\n setLeftDisplacedHeadPx(x) {\n this.leftDisplacedHeadPx = x;\n return this;\n }\n /** Set spacing to the right of the notes. */\n setRightDisplacedHeadPx(x) {\n this.rightDisplacedHeadPx = x;\n return this;\n }\n /** True if this note has no duration (e.g., bar notes, spacers, etc.). */\n shouldIgnoreTicks() {\n return this.ignore_ticks;\n }\n /** Get the stave line number for the note. */\n // eslint-disable-next-line\n getLineNumber(isTopNote) {\n return 0;\n }\n /** Get the stave line number for rest. */\n getLineForRest() {\n return 0;\n }\n /** Get the glyph associated with this note. */\n // eslint-disable-next-line\n getGlyph() {\n return this.glyph;\n }\n /** Get the glyph width. */\n getGlyphWidth() {\n // TODO: FIXME (multiple potential values for this.glyph)\n if (this.glyph) {\n if (this.glyph.getMetrics) {\n return this.glyph.getMetrics().width;\n }\n else if (this.glyph.getWidth) {\n return this.glyph.getWidth(this.render_options.glyph_font_scale);\n }\n }\n return 0;\n }\n /**\n * Set Y positions for this note. Each Y value is associated with\n * an individual pitch/key within the note/chord.\n */\n setYs(ys) {\n this.ys = ys;\n return this;\n }\n /**\n * Get Y positions for this note. Each Y value is associated with\n * an individual pitch/key within the note/chord.\n */\n getYs() {\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-values calculated for this note.');\n }\n return this.ys;\n }\n /**\n * Get the Y position of the space above the stave onto which text can\n * be rendered.\n */\n getYForTopText(text_line) {\n return this.checkStave().getYForTopText(text_line);\n }\n /** Return the voice that this note belongs in. */\n getVoice() {\n if (!this.voice)\n throw new RuntimeError('NoVoice', 'Note has no voice.');\n return this.voice;\n }\n /** Attach this note to `voice`. */\n setVoice(voice) {\n this.voice = voice;\n this.preFormatted = false;\n return this;\n }\n /** Get the `TickContext` for this note. */\n getTickContext() {\n return this.checkTickContext();\n }\n /** Set the `TickContext` for this note. */\n setTickContext(tc) {\n this.tickContext = tc;\n this.preFormatted = false;\n return this;\n }\n /** Accessor to duration. */\n getDuration() {\n return this.duration;\n }\n /** Accessor to isDotted. */\n isDotted() {\n return this.getModifiersByType('Dot').length > 0;\n }\n /** Accessor to hasStem. */\n hasStem() {\n return false;\n }\n /** Accessor to note type. */\n getNoteType() {\n return this.noteType;\n }\n /** Get the beam. */\n getBeam() {\n return this.beam;\n }\n /** Check and get the beam. */\n checkBeam() {\n return defined(this.beam, 'NoBeam', 'No beam attached to instance');\n }\n /** Check it has a beam. */\n hasBeam() {\n return this.beam != undefined;\n }\n /** Set the beam. */\n setBeam(beam) {\n this.beam = beam;\n return this;\n }\n /**\n * Attach a modifier to this note.\n * @param modifier the Modifier to add.\n * @param index of the key to modify.\n * @returns this\n */\n addModifier(modifier, index = 0) {\n const signature = 'Note.addModifier(modifier: Modifier, index: number=0)';\n // Backwards compatibility with 3.0.9.\n if (typeof index === 'string') {\n index = parseInt(index);\n // eslint-disable-next-line\n console.warn(signature + ' expected a number for `index`, but received a string.');\n }\n // Some versions of VexFlow had the two parameters reversed.\n // Check here and throw an error if the argument types are not correct.\n if (typeof modifier !== 'object' || typeof index !== 'number') {\n throw new RuntimeError('WrongParams', 'Incorrect call signature. Use ' + signature + ' instead.');\n }\n modifier.setNote(this);\n modifier.setIndex(index);\n super.addModifier(modifier);\n return this;\n }\n /** Get all modifiers of a specific type in `this.modifiers`. */\n getModifiersByType(type) {\n return this.modifiers.filter((modifier) => modifier.getCategory() === type);\n }\n /** Get the coordinates for where modifiers begin. */\n // eslint-disable-next-line\n getModifierStartXY(position, index, options) {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n return {\n x: this.getAbsoluteX(),\n y: this.ys[0],\n };\n }\n getRightParenthesisPx(index) {\n const props = this.getKeyProps()[index];\n return props.displaced ? this.getRightDisplacedHeadPx() : 0;\n }\n getLeftParenthesisPx(index) {\n const props = this.getKeyProps()[index];\n return props.displaced ? this.getLeftDisplacedHeadPx() - this.x_shift : -this.x_shift;\n }\n getFirstDotPx() {\n let px = this.getRightDisplacedHeadPx();\n if (this.checkModifierContext().getMembers('Parenthesis').length !== 0)\n px += Tables.currentMusicFont().lookupMetric('parenthesis.default.width');\n return px;\n }\n /** Get the metrics for this note. */\n getMetrics() {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getMetrics on an unformatted note.\");\n }\n const modLeftPx = this.modifierContext ? this.modifierContext.getState().left_shift : 0;\n const modRightPx = this.modifierContext ? this.modifierContext.getState().right_shift : 0;\n const width = this.getWidth();\n const glyphWidth = this.getGlyphWidth();\n const notePx = width -\n modLeftPx - // subtract left modifiers\n modRightPx - // subtract right modifiers\n this.leftDisplacedHeadPx - // subtract left displaced head\n this.rightDisplacedHeadPx; // subtract right displaced head\n // NOTE: If you change this, remember to update MockTickable.getMetrics() in the tests/ directory.\n return {\n width,\n glyphWidth,\n notePx,\n // Modifier spacing.\n modLeftPx,\n modRightPx,\n // Displaced note head on left or right.\n leftDisplacedHeadPx: this.leftDisplacedHeadPx,\n rightDisplacedHeadPx: this.rightDisplacedHeadPx,\n glyphPx: 0,\n };\n }\n /**\n * Get the absolute `X` position of this note's tick context. This\n * excludes x_shift, so you'll need to factor it in if you're\n * looking for the post-formatted x-position.\n */\n getAbsoluteX() {\n const tickContext = this.checkTickContext(`Can't getAbsoluteX() without a TickContext.`);\n // Position note to left edge of tick context.\n let x = tickContext.getX();\n if (this.stave) {\n x += this.stave.getNoteStartX() + Tables.currentMusicFont().lookupMetric('stave.padding');\n }\n if (this.isCenterAligned()) {\n x += this.getCenterXShift();\n }\n return x;\n }\n /** Get the direction of the stem. */\n getStemDirection() {\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n }\n /** Get the top and bottom `y` values of the stem. */\n getStemExtents() {\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n }\n /** Get the `x` coordinate to the right of the note. */\n getTieRightX() {\n let tieStartX = this.getAbsoluteX();\n const note_glyph_width = this.glyph.getWidth();\n tieStartX += note_glyph_width / 2;\n tieStartX += -this.width / 2 + this.width + 2;\n return tieStartX;\n }\n /** Get the `x` coordinate to the left of the note. */\n getTieLeftX() {\n let tieEndX = this.getAbsoluteX();\n const note_glyph_width = this.glyph.getWidth();\n tieEndX += note_glyph_width / 2;\n tieEndX -= this.width / 2 + 2;\n return tieEndX;\n }\n // Get the pitches in the note\n getKeys() {\n return this.keys;\n }\n // Get the properties for all the keys in the note\n getKeyProps() {\n return this.keyProps;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (NoteHead.DEBUG)\n log('Vex.Flow.NoteHead', args);\n}\n/**\n * Draw slashnote head manually. No glyph exists for this.\n * @param ctx the Canvas context\n * @param duration the duration of the note. ex: \"4\"\n * @param x the x coordinate to draw at\n * @param y the y coordinate to draw at\n * @param stem_direction the direction of the stem\n */\nfunction drawSlashNoteHead(ctx, duration, x, y, stem_direction, staveSpace) {\n const width = Tables.SLASH_NOTEHEAD_WIDTH;\n ctx.save();\n ctx.setLineWidth(Tables.STEM_WIDTH);\n let fill = false;\n if (Tables.durationToNumber(duration) > 2) {\n fill = true;\n }\n if (!fill)\n x -= (Tables.STEM_WIDTH / 2) * stem_direction;\n ctx.beginPath();\n ctx.moveTo(x, y + staveSpace);\n ctx.lineTo(x, y + 1);\n ctx.lineTo(x + width, y - staveSpace);\n ctx.lineTo(x + width, y);\n ctx.lineTo(x, y + staveSpace);\n ctx.closePath();\n if (fill) {\n ctx.fill();\n }\n else {\n ctx.stroke();\n }\n if (Tables.durationToFraction(duration).equals(0.5)) {\n const breve_lines = [-3, -1, width + 1, width + 3];\n for (let i = 0; i < breve_lines.length; i++) {\n ctx.beginPath();\n ctx.moveTo(x + breve_lines[i], y - 10);\n ctx.lineTo(x + breve_lines[i], y + 11);\n ctx.stroke();\n }\n }\n ctx.restore();\n}\n/**\n * `NoteHeads` are typically not manipulated\n * directly, but used internally in `StaveNote`.\n *\n * See `tests/notehead_tests.ts` for usage examples.\n */\nexport class NoteHead extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n this.custom_glyph = false;\n this.stem_up_x_offset = 0;\n this.stem_down_x_offset = 0;\n this.index = noteStruct.index;\n this.x = noteStruct.x || 0;\n this.y = noteStruct.y || 0;\n if (noteStruct.note_type)\n this.noteType = noteStruct.note_type;\n this.displaced = noteStruct.displaced || false;\n this.stem_direction = noteStruct.stem_direction || Stem.UP;\n this.line = noteStruct.line || 0;\n // Get glyph code based on duration and note type. This could be\n // regular notes, rests, or other custom codes.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n // Swap out the glyph with leger lines\n if ((this.line > 5 || this.line < 0) && this.glyph.leger_code_head) {\n this.glyph.code_head = this.glyph.leger_code_head;\n }\n this.glyph_code = this.glyph.code_head;\n this.x_shift = noteStruct.x_shift || 0;\n if (noteStruct.custom_glyph_code) {\n this.custom_glyph = true;\n this.glyph_code = noteStruct.custom_glyph_code;\n this.stem_up_x_offset = noteStruct.stem_up_x_offset || 0;\n this.stem_down_x_offset = noteStruct.stem_down_x_offset || 0;\n }\n this.setStyle(noteStruct.style);\n this.slashed = noteStruct.slashed || false;\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads\n glyph_font_scale: noteStruct.glyph_font_scale || Tables.NOTATION_FONT_SCALE });\n this.setWidth(this.glyph.getWidth(this.render_options.glyph_font_scale));\n }\n static get CATEGORY() {\n return Category.NoteHead;\n }\n /** Get the width of the notehead. */\n getWidth() {\n return this.width;\n }\n /** Determine if the notehead is displaced. */\n isDisplaced() {\n return this.displaced === true;\n }\n /** Get the glyph data. */\n getGlyph() {\n return this.glyph;\n }\n /** Set the X coordinate. */\n setX(x) {\n this.x = x;\n return this;\n }\n /** Get the Y coordinate. */\n getY() {\n return this.y;\n }\n /** Set the Y coordinate. */\n setY(y) {\n this.y = y;\n return this;\n }\n /** Get the stave line the notehead is placed on. */\n getLine() {\n return this.line;\n }\n /** Set the stave line the notehead is placed on. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Get the canvas `x` coordinate position of the notehead. */\n getAbsoluteX() {\n // If the note has not been preformatted, then get the static x value\n // Otherwise, it's been formatted and we should use it's x value relative\n // to its tick context\n const x = !this.preFormatted ? this.x : super.getAbsoluteX();\n // For a more natural displaced notehead, we adjust the displacement amount\n // by half the stem width in order to maintain a slight overlap with the stem\n const displacementStemAdjustment = Stem.WIDTH / 2;\n const musicFont = Tables.currentMusicFont();\n const fontShift = musicFont.lookupMetric('notehead.shiftX', 0) * this.stem_direction;\n const displacedFontShift = musicFont.lookupMetric('noteHead.displaced.shiftX', 0) * this.stem_direction;\n return (x +\n fontShift +\n (this.displaced ? (this.width - displacementStemAdjustment) * this.stem_direction + displacedFontShift : 0));\n }\n /** Get the `BoundingBox` for the `NoteHead`. */\n getBoundingBox() {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getBoundingBox on an unformatted note.\");\n }\n const spacing = this.checkStave().getSpacingBetweenLines();\n const half_spacing = spacing / 2;\n const min_y = this.y - half_spacing;\n return new BoundingBox(this.getAbsoluteX(), min_y, this.width, spacing);\n }\n /** Set notehead to a provided `stave`. */\n setStave(stave) {\n const line = this.getLine();\n this.stave = stave;\n if (this.stave) {\n this.setY(this.stave.getYForNote(line));\n this.setContext(this.stave.getContext());\n }\n return this;\n }\n /** Pre-render formatting. */\n preFormat() {\n if (this.preFormatted)\n return this;\n const width = this.getWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx;\n this.setWidth(width);\n this.preFormatted = true;\n return this;\n }\n /** Draw the notehead. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let head_x = this.getAbsoluteX();\n if (this.custom_glyph) {\n // head_x += this.x_shift;\n head_x += this.stem_direction === Stem.UP ? this.stem_up_x_offset : this.stem_down_x_offset;\n }\n const y = this.y;\n L(\"Drawing note head '\", this.noteType, this.duration, \"' at\", head_x, y);\n // Begin and end positions for head.\n const stem_direction = this.stem_direction;\n const glyph_font_scale = this.render_options.glyph_font_scale;\n this.applyStyle(ctx);\n const categorySuffix = `${this.glyph_code}Stem${stem_direction === Stem.UP ? 'Up' : 'Down'}`;\n if (this.noteType === 's') {\n const staveSpace = this.checkStave().getSpacingBetweenLines();\n drawSlashNoteHead(ctx, this.duration, head_x, y, stem_direction, staveSpace);\n }\n else {\n Glyph.renderGlyph(ctx, head_x, y, glyph_font_scale, this.glyph_code, {\n category: this.custom_glyph ? `noteHead.custom.${categorySuffix}` : `noteHead.standard.${categorySuffix}`,\n });\n }\n this.restoreStyle(ctx);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.NoteHead.DEBUG` to `true`. */\nNoteHead.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2016\n//\n// ## Description\n//\n// This file implements `NoteSubGroup` which is used to format and\n// render notes as a `Modifier`\n// ex) ClefNote, TimeSigNote and BarNote.\nimport { Formatter } from './formatter';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { Voice } from './voice';\nexport class NoteSubGroup extends Modifier {\n constructor(subNotes) {\n super();\n this.preFormatted = false;\n this.position = Modifier.Position.LEFT;\n this.subNotes = subNotes;\n this.subNotes.forEach((subNote) => {\n subNote.setIgnoreTicks(false);\n });\n this.width = 0;\n this.formatter = new Formatter();\n this.voice = new Voice({\n num_beats: 4,\n beat_value: 4,\n resolution: Tables.RESOLUTION,\n }).setStrict(false);\n this.voice.addTickables(this.subNotes);\n }\n static get CATEGORY() {\n return Category.NoteSubGroup;\n }\n // Arrange groups inside a `ModifierContext`\n static format(groups, state) {\n if (!groups || groups.length === 0)\n return false;\n let width = 0;\n for (let i = 0; i < groups.length; ++i) {\n const group = groups[i];\n group.preFormat();\n width += group.getWidth();\n }\n state.left_shift += width;\n return true;\n }\n preFormat() {\n if (this.preFormatted)\n return;\n this.formatter.joinVoices([this.voice]).format([this.voice], 0);\n this.setWidth(this.formatter.getMinTotalWidth());\n this.preFormatted = true;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getWidth() {\n return this.width;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n this.alignSubNotesWithNote(this.subNotes, note); // Modifier function\n this.subNotes.forEach((subNote) => subNote.setContext(ctx).drawWithStyle());\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TickContext } from './tickcontext';\nimport { Category, isTabNote } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Ornament.DEBUG)\n log('Vex.Flow.Ornament', args);\n}\n/**\n * Ornament implements ornaments as modifiers that can be\n * attached to notes. The complete list of ornaments is available in\n * `tables.ts` under `Vex.Flow.ornamentCodes`.\n *\n * See `tests/ornament_tests.ts` for usage examples.\n */\nexport class Ornament extends Modifier {\n /**\n * Create a new ornament of type `type`, which is an entry in\n * `Vex.Flow.ornamentCodes` in `tables.ts`.\n */\n constructor(type) {\n super();\n this.type = type;\n this.delayed = false;\n this.render_options = {\n font_scale: 38,\n accidentalLowerPadding: 3,\n accidentalUpperPadding: 3,\n };\n this.ornament = Tables.ornamentCodes(this.type);\n // new ornaments have their origin at the origin, and have more specific\n // metrics. Legacy ornaments do some\n // x scaling, and have hard-coded metrics\n const metrics = this.getMetrics();\n // some jazz ornaments are above or below depending on stem direction.\n this.adjustForStemDirection = false;\n // some jazz ornaments like falls are supposed to overlap with future bars\n // and so we report a different width than they actually take up.\n this.reportedWidth = metrics && metrics.reportedWidth ? metrics.reportedWidth : 0;\n this.stemUpYOffset = metrics && metrics.stemUpYOffset ? metrics.stemUpYOffset : 0;\n this.ornamentAlignWithNoteHead = Ornament.ornamentAlignWithNoteHead.indexOf(this.type) >= 0;\n if (!this.ornament) {\n throw new RuntimeError('ArgumentError', `Ornament not found: '${this.type}'`);\n }\n this.x_shift = metrics ? metrics.xOffset : 0;\n this.y_shift = metrics ? metrics.yOffset : 0;\n this.glyph = new Glyph(this.ornament.code, this.render_options.font_scale, {\n category: `ornament.${this.ornament.code}`,\n });\n // Is this a jazz ornament that goes between this note and the next note.\n if (Ornament.ornamentNoteTransition.indexOf(this.type) >= 0) {\n this.delayed = true;\n }\n // Legacy ornaments need this. I don't know why, but horizontal spacing issues\n // happen if I don't set it.\n if (!metrics) {\n this.glyph.setOrigin(0.5, 1.0); // FIXME: SMuFL won't require a vertical origin shift\n }\n }\n /** Ornaments category string. */\n static get CATEGORY() {\n return Category.Ornament;\n }\n static get minPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Arrange ornaments inside `ModifierContext` */\n static format(ornaments, state) {\n if (!ornaments || ornaments.length === 0)\n return false;\n let width = 0; // width is used by ornaments, which are always centered on the note head\n let right_shift = state.right_shift; // jazz ornaments calculate r/l shift separately\n let left_shift = state.left_shift;\n let yOffset = 0;\n for (let i = 0; i < ornaments.length; ++i) {\n const ornament = ornaments[i];\n const increment = 2;\n if (Ornament.ornamentRelease.indexOf(ornament.type) >= 0) {\n ornament.x_shift += right_shift + 2;\n }\n if (Ornament.ornamentAttack.indexOf(ornament.type) >= 0) {\n ornament.x_shift -= left_shift + 2;\n }\n if (ornament.reportedWidth && ornament.x_shift < 0) {\n left_shift += ornament.reportedWidth;\n }\n else if (ornament.reportedWidth && ornament.x_shift >= 0) {\n right_shift += ornament.reportedWidth + Ornament.minPadding;\n }\n else {\n width = Math.max(ornament.getWidth(), width);\n }\n // articulations above/below the line can be stacked.\n if (Ornament.ornamentArticulation.indexOf(ornament.type) >= 0) {\n // Unfortunately we don't know the stem direction. So we base it\n // on the line number, but also allow it to be overridden.\n const ornamentNote = defined(ornament.note, 'NoAttachedNote');\n if (ornamentNote.getLineNumber() >= 3 || ornament.getPosition() === Modifier.Position.ABOVE) {\n state.top_text_line += increment;\n ornament.y_shift += yOffset;\n yOffset -= ornament.glyph.bbox.getH();\n }\n else {\n state.text_line += increment;\n ornament.y_shift += yOffset;\n yOffset += ornament.glyph.bbox.getH();\n }\n }\n else {\n if (ornament.getPosition() === Modifier.Position.ABOVE) {\n ornament.setTextLine(state.top_text_line);\n state.top_text_line += increment;\n }\n else {\n ornament.setTextLine(state.text_line);\n state.text_line += increment;\n }\n }\n }\n // Note: 'legit' ornaments don't consider other modifiers when calculating their\n // X position, but jazz ornaments sometimes need to.\n state.left_shift = left_shift + width / 2;\n state.right_shift = right_shift + width / 2;\n return true;\n }\n /**\n * ornamentNoteTransition means the jazz ornament represents an effect from one note to another,\n * these are generally on the top of the staff.\n */\n static get ornamentNoteTransition() {\n return ['flip', 'jazzTurn', 'smear'];\n }\n /**\n * ornamentAttack indicates something that happens in the attach, placed before the note and\n * any accidentals\n */\n static get ornamentAttack() {\n return ['scoop'];\n }\n /**\n * The ornament is aligned based on the note head, but without regard to whether the\n * stem goes up or down.\n */\n static get ornamentAlignWithNoteHead() {\n return ['doit', 'fall', 'fallLong', 'doitLong', 'bend', 'plungerClosed', 'plungerOpen', 'scoop'];\n }\n /**\n * An ornament that happens on the release of the note, generally placed after the\n * note and overlapping the next beat/measure..\n */\n static get ornamentRelease() {\n return ['doit', 'fall', 'fallLong', 'doitLong', 'jazzTurn', 'smear', 'flip'];\n }\n /** ornamentArticulation goes above/below the note based on space availablity */\n static get ornamentArticulation() {\n return ['bend', 'plungerClosed', 'plungerOpen'];\n }\n /**\n * Legacy ornaments have hard-coded metrics. If additional ornament types are\n * added, get their metrics here.\n */\n // eslint-disable-next-line\n getMetrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.jazzOrnaments[this.ornament.code];\n }\n /** Set whether the ornament is to be delayed. */\n setDelayed(delayed) {\n this.delayed = delayed;\n return this;\n }\n /** Set the upper accidental for the ornament. */\n setUpperAccidental(accid) {\n const scale = this.render_options.font_scale / 1.3;\n this.accidentalUpper = new Glyph(Tables.accidentalCodes(accid).code, scale);\n this.accidentalUpper.setOrigin(0.5, 1.0);\n return this;\n }\n /** Set the lower accidental for the ornament. */\n setLowerAccidental(accid) {\n const scale = this.render_options.font_scale / 1.3;\n this.accidentalLower = new Glyph(Tables.accidentalCodes(accid).code, scale);\n this.accidentalLower.setOrigin(0.5, 1.0);\n return this;\n }\n /** Render ornament in position next to note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stemDir = note.getStemDirection();\n const stave = note.checkStave();\n ctx.openGroup('ornament', this.getAttribute('id'));\n // Get stem extents\n const stemExtents = note.checkStem().getExtents();\n let y = stemDir === Stem.DOWN ? stemExtents.baseY : stemExtents.topY;\n // TabNotes don't have stems attached to them. Tab stems are rendered outside the stave.\n if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDir === Stem.DOWN) {\n y = stave.getYForTopText(this.text_line);\n }\n }\n else {\n // Without a stem\n y = stave.getYForTopText(this.text_line);\n }\n }\n const isPlacedOnNoteheadSide = stemDir === Stem.DOWN;\n const spacing = stave.getSpacingBetweenLines();\n let lineSpacing = 1;\n // Beamed stems are longer than quarter note stems, adjust accordingly\n if (!isPlacedOnNoteheadSide && note.hasBeam()) {\n lineSpacing += 0.5;\n }\n const totalSpacing = spacing * (this.text_line + lineSpacing);\n const glyphYBetweenLines = y - totalSpacing;\n // Get initial coordinates for the modifier position\n const start = note.getModifierStartXY(this.position, this.index);\n let glyphX = start.x;\n // If the ornament is aligned with the note head, don't consider the stave y\n // but use the 'natural' modifier y\n let glyphY = this.ornamentAlignWithNoteHead\n ? start.y\n : Math.min(stave.getYForTopText(this.text_line), glyphYBetweenLines);\n glyphY += this.y_shift;\n // Ajdust x position if ornament is delayed\n if (this.delayed) {\n let delayXShift = 0;\n const startX = glyphX - (stave.getX() - 10);\n if (this.delayXShift !== undefined) {\n delayXShift = this.delayXShift;\n }\n else {\n delayXShift += this.glyph.getMetrics().width / 2;\n const nextContext = TickContext.getNextContext(note.getTickContext());\n if (nextContext) {\n delayXShift += (nextContext.getX() - startX) * 0.5;\n }\n else {\n delayXShift += (stave.getX() + stave.getWidth() - startX) * 0.5;\n }\n this.delayXShift = delayXShift;\n }\n glyphX += delayXShift;\n }\n L('Rendering ornament: ', this.ornament, glyphX, glyphY);\n if (this.accidentalLower) {\n this.accidentalLower.render(ctx, glyphX, glyphY);\n glyphY -= this.accidentalLower.getMetrics().height;\n glyphY -= this.render_options.accidentalLowerPadding;\n }\n if (this.stemUpYOffset && note.hasStem() && note.getStemDirection() === 1) {\n glyphY += this.stemUpYOffset;\n }\n if (note.getLineNumber() < 5 && Ornament.ornamentNoteTransition.indexOf(this.type) >= 0) {\n glyphY = note.checkStave().getBoundingBox().getY() + 40;\n }\n this.glyph.render(ctx, glyphX + this.x_shift, glyphY);\n if (this.accidentalUpper) {\n glyphY -= this.glyph.getMetrics().height + this.render_options.accidentalUpperPadding;\n this.accidentalUpper.render(ctx, glyphX, glyphY);\n }\n ctx.closeGroup();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Ornament.DEBUG` to `true`. */\nOrnament.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Rodrigo Vilar\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Tables } from './tables';\nimport { Category, isGraceNote } from './typeguard';\n/** Parenthesis implements parenthesis modifiers for notes. */\nexport class Parenthesis extends Modifier {\n /**\n * Constructor\n *\n * @param position Modifier.Position.LEFT (default) or Modifier.Position.RIGHT\n */\n constructor(position) {\n super();\n this.position = position !== null && position !== void 0 ? position : Modifier.Position.LEFT;\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.default.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.default.width'));\n }\n static get CATEGORY() {\n return Category.Parenthesis;\n }\n /** Add parentheses to the notes. */\n static buildAndAttach(notes) {\n for (const note of notes) {\n for (let i = 0; i < note.keys.length; i++) {\n note.addModifier(new Parenthesis(ModifierPosition.LEFT), i);\n note.addModifier(new Parenthesis(ModifierPosition.RIGHT), i);\n }\n }\n }\n /** Arrange parentheses inside a ModifierContext. */\n static format(parentheses, state) {\n if (!parentheses || parentheses.length === 0)\n return false;\n let x_widthL = 0;\n let x_widthR = 0;\n for (let i = 0; i < parentheses.length; ++i) {\n const parenthesis = parentheses[i];\n const note = parenthesis.getNote();\n const pos = parenthesis.getPosition();\n const index = parenthesis.checkIndex();\n let shift = 0;\n if (pos === ModifierPosition.RIGHT) {\n shift = note.getRightParenthesisPx(index);\n x_widthR = x_widthR > shift + parenthesis.width ? x_widthR : shift + parenthesis.width;\n }\n if (pos === ModifierPosition.LEFT) {\n shift = note.getLeftParenthesisPx(index);\n x_widthL = x_widthL > shift + parenthesis.width ? x_widthL : shift + parenthesis.width;\n }\n parenthesis.setXShift(shift);\n }\n state.left_shift += x_widthL;\n state.right_shift += x_widthR;\n return true;\n }\n /** Set the associated note. */\n setNote(note) {\n this.note = note;\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.default.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.default.width'));\n if (isGraceNote(note)) {\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.gracenote.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.gracenote.width'));\n }\n return this;\n }\n /** Render the parenthesis. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index, { forceFlagRight: true });\n const x = start.x + this.x_shift;\n const y = start.y + this.y_shift;\n if (this.position == Modifier.Position.RIGHT) {\n Glyph.renderGlyph(ctx, x + 1, y, this.point, 'noteheadParenthesisRight', {\n category: `noteHead.standard.noteheadParenthesisRight`,\n });\n }\n else if (this.position == Modifier.Position.LEFT) {\n Glyph.renderGlyph(ctx, x - 2, y, this.point, 'noteheadParenthesisLeft', {\n category: `noteHead.standard.noteheadParenthesisLeft`,\n });\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// A generic text parsing class for VexFlow.\nimport { log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.Parser.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (Parser.DEBUG)\n log('Vex.Flow.Parser', args);\n}\nconst NO_ERROR_POS = -1;\n// Converts parser results into an easy to reference list that can be\n// used in triggers. This function returns:\n// - nested array in which the leaf elements are string or null\n// - string (including empty strings)\n// - null\nfunction flattenMatches(r) {\n if ('matchedString' in r)\n return r.matchedString; // string\n if ('results' in r)\n return flattenMatches(r.results);\n const results = r;\n if (results.length === 1)\n return flattenMatches(results[0]);\n if (results.length === 0)\n return null;\n return results.map(flattenMatches); // nested array\n}\n// This is the base parser class. Given an arbitrary context-free grammar, it\n// can parse any line and execute code when specific rules are met (e.g.,\n// when a string is terminated.)\nexport class Parser {\n // For an example of a simple grammar, take a look at tests/parser_tests.ts or\n // the EasyScore grammar in easyscore.ts.\n constructor(grammar) {\n this.grammar = grammar;\n this.line = '';\n this.pos = 0;\n this.errorPos = NO_ERROR_POS;\n }\n // Parse `line` using current grammar. Returns `{success: true}` if the\n // line parsed correctly, otherwise returns `{success: false, errorPos: N}`\n // where `errorPos` is the location of the error in the string.\n parse(line) {\n this.line = line;\n this.pos = 0;\n this.errorPos = NO_ERROR_POS;\n const result = this.expect(this.grammar.begin());\n result.errorPos = this.errorPos;\n return result;\n }\n matchFail(returnPos) {\n if (this.errorPos === NO_ERROR_POS)\n this.errorPos = this.pos;\n this.pos = returnPos;\n }\n matchSuccess() {\n this.errorPos = NO_ERROR_POS;\n }\n // Look for `token` in this.line[this.pos], and return success\n // if one is found. `token` is specified as a regular expression.\n matchToken(token, noSpace = false) {\n const regexp = noSpace ? new RegExp('^((' + token + '))') : new RegExp('^((' + token + ')\\\\s*)');\n const workingLine = this.line.slice(this.pos);\n const result = workingLine.match(regexp);\n if (result !== null) {\n return {\n success: true,\n matchedString: result[2],\n incrementPos: result[1].length,\n pos: this.pos,\n };\n }\n else {\n return { success: false, pos: this.pos };\n }\n }\n // Execute rule to match a sequence of tokens (or rules). If `maybe` is\n // set, then return success even if the token is not found, but reset\n // the position before exiting.\n // TODO: expectOne(...) is never called with the `maybe` parameter.\n expectOne(rule, maybe = false) {\n const results = [];\n const pos = this.pos;\n let allMatches = true;\n let oneMatch = false;\n maybe = maybe === true || rule.maybe === true;\n // Execute all sub rules in sequence.\n if (rule.expect) {\n for (const next of rule.expect) {\n const localPos = this.pos;\n const result = this.expect(next);\n // If `rule.or` is set, then return success if any one\n // of the subrules match, else all subrules must match.\n if (result.success) {\n results.push(result);\n oneMatch = true;\n if (rule.or)\n break;\n }\n else {\n allMatches = false;\n if (!rule.or) {\n this.pos = localPos;\n break;\n }\n }\n }\n }\n const gotOne = (rule.or && oneMatch) || allMatches;\n const success = gotOne || maybe === true;\n const numMatches = gotOne ? 1 : 0;\n if (maybe && !gotOne)\n this.pos = pos;\n if (success) {\n this.matchSuccess();\n }\n else {\n this.matchFail(pos);\n }\n return { success, results, numMatches };\n }\n // Try to match multiple (one or more) instances of the rule. If `maybe` is set,\n // then a failed match is also a success (but the position is reset).\n expectOneOrMore(rule, maybe = false) {\n const results = [];\n const pos = this.pos;\n let numMatches = 0;\n let more = true;\n do {\n const result = this.expectOne(rule);\n if (result.success && result.results) {\n numMatches++;\n results.push(result.results);\n }\n else {\n more = false;\n }\n } while (more);\n const success = numMatches > 0 || maybe === true;\n if (maybe && !(numMatches > 0))\n this.pos = pos;\n if (success) {\n this.matchSuccess();\n }\n else {\n this.matchFail(pos);\n }\n return { success, results, numMatches };\n }\n // Match zero or more instances of `rule`. Offloads to `expectOneOrMore`.\n expectZeroOrMore(rule) {\n return this.expectOneOrMore(rule, true);\n }\n // Execute the rule produced by the provided `rules` function. This\n // offloads to one of the above matchers and consolidates the results. It is also\n // responsible for executing any code triggered by the rule (in `rule.run`.)\n expect(ruleFunc) {\n L('Evaluating rule function:', ruleFunc);\n if (!ruleFunc) {\n throw new RuntimeError('Invalid rule function');\n }\n let result;\n // Get rule from Grammar class.\n // expect(...) handles both lexing & parsing:\n // - lexer rules produce tokens.\n // - parser rules produce expressions which may trigger code via the\n // { run: () => ... } trigger functions in easyscore.ts.\n // These functions build the VexFlow objects that are displayed on screen.\n const rule = ruleFunc.bind(this.grammar)();\n if (rule.token) {\n // A lexer rule has a `token` property.\n // Base case: parse the regex and throw an error if the\n // line doesn't match.\n result = this.matchToken(rule.token, rule.noSpace === true);\n if (result.success) {\n // Token match! Update position and throw away parsed portion\n // of string.\n this.pos += result.incrementPos;\n }\n }\n else if (rule.expect) {\n // A parser rule has an `expect` property.\n if (rule.oneOrMore) {\n result = this.expectOneOrMore(rule);\n }\n else if (rule.zeroOrMore) {\n result = this.expectZeroOrMore(rule);\n }\n else {\n result = this.expectOne(rule);\n }\n }\n else {\n L(rule);\n throw new RuntimeError('Bad grammar! No `token` or `expect` property ' + rule);\n }\n // If there's a trigger attached to this rule, then run it.\n // Make the matches accessible through `state.matches` in the\n // `run: (state) => ...` trigger.\n const matches = [];\n result.matches = matches;\n if (result.results) {\n result.results.forEach((r) => matches.push(flattenMatches(r)));\n }\n if (rule.run && result.success) {\n rule.run({ matches });\n }\n return result;\n }\n}\nParser.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (PedalMarking.DEBUG)\n log('Vex.Flow.PedalMarking', args);\n}\n/**\n * Draws a pedal glyph with the provided `name` on a rendering `context`\n * at the coordinates `x` and `y. Takes into account the glyph data\n * coordinate shifts.\n */\nfunction drawPedalGlyph(name, context, x, y, point) {\n const glyph_data = PedalMarking.GLYPHS[name];\n const glyph = new Glyph(glyph_data.code, point, { category: 'pedalMarking' });\n glyph.render(context, x + glyph_data.x_shift, y + glyph_data.y_shift);\n}\n/**\n * PedalMarking implements different types of pedal markings. These notation\n * elements indicate to the performer when to depress and release the a pedal.\n *\n * In order to create \"Sostenuto\", and \"una corda\" markings, you must set\n * custom text for the release/depress pedal markings.\n */\nexport class PedalMarking extends Element {\n constructor(notes) {\n super();\n this.notes = notes;\n this.type = PedalMarking.type.TEXT;\n this.line = 0;\n // Custom text for the release/depress markings\n this.custom_depress_text = '';\n this.custom_release_text = '';\n this.resetFont();\n this.render_options = {\n bracket_height: 10,\n text_margin_right: 6,\n bracket_line_width: 1,\n color: 'black',\n };\n }\n static get CATEGORY() {\n return Category.PedalMarking;\n }\n /**\n * Create a sustain pedal marking. Returns the defaults PedalMarking.\n * Which uses the traditional \"Ped\" and \"*\"\" markings.\n */\n static createSustain(notes) {\n const pedal = new PedalMarking(notes);\n return pedal;\n }\n /** Create a sostenuto pedal marking */\n static createSostenuto(notes) {\n const pedal = new PedalMarking(notes);\n pedal.setType(PedalMarking.type.MIXED);\n pedal.setCustomText('Sost. Ped.');\n return pedal;\n }\n /** Create an una corda pedal marking */\n static createUnaCorda(notes) {\n const pedal = new PedalMarking(notes);\n pedal.setType(PedalMarking.type.TEXT);\n pedal.setCustomText('una corda', 'tre corda');\n return pedal;\n }\n /** Set pedal type. */\n setType(type) {\n type = typeof type === 'string' ? PedalMarking.typeString[type] : type;\n if (type >= PedalMarking.type.TEXT && type <= PedalMarking.type.MIXED) {\n this.type = type;\n }\n return this;\n }\n /**\n * Set custom text for the `depress`/`release` pedal markings. No text is\n * set if the parameter is falsy.\n */\n setCustomText(depress, release) {\n this.custom_depress_text = depress || '';\n this.custom_release_text = release || '';\n return this;\n }\n /** Set the staff line to render the markings on. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Draw the bracket based pedal markings. */\n drawBracketed() {\n const ctx = this.checkContext();\n let is_pedal_depressed = false;\n let prev_x;\n let prev_y;\n // Iterate through each note\n this.notes.forEach((note, index, notes) => {\n // Each note triggers the opposite pedal action\n is_pedal_depressed = !is_pedal_depressed;\n // Get the initial coordinates for the note\n const x = note.getAbsoluteX();\n const y = note.checkStave().getYForBottomText(this.line + 3);\n // Throw if current note is positioned before the previous note\n if (x < prev_x) {\n throw new RuntimeError('InvalidConfiguration', 'The notes provided must be in order of ascending x positions');\n }\n // Determine if the previous or next note are the same\n // as the current note. We need to keep track of this for\n // when adjustments are made for the release+depress action\n const next_is_same = notes[index + 1] === note;\n const prev_is_same = notes[index - 1] === note;\n let x_shift = 0;\n const point = Tables.currentMusicFont().lookupMetric(`pedalMarking.${is_pedal_depressed ? 'down' : 'up'}.point`);\n if (is_pedal_depressed) {\n // Adjustment for release+depress\n x_shift = prev_is_same ? 5 : 0;\n if (this.type === PedalMarking.type.MIXED && !prev_is_same) {\n // For MIXED style, start with text instead of bracket\n if (this.custom_depress_text) {\n // If we have custom text, use instead of the default \"Ped\" glyph\n const text_width = ctx.measureText(this.custom_depress_text).width;\n ctx.fillText(this.custom_depress_text, x - text_width / 2, y);\n x_shift = text_width / 2 + this.render_options.text_margin_right;\n }\n else {\n // Render the Ped glyph in position\n drawPedalGlyph('pedal_depress', ctx, x, y, point);\n x_shift = 20 + this.render_options.text_margin_right;\n }\n }\n else {\n // Draw start bracket\n ctx.beginPath();\n ctx.moveTo(x, y - this.render_options.bracket_height);\n ctx.lineTo(x + x_shift, y);\n ctx.stroke();\n ctx.closePath();\n }\n }\n else {\n // Adjustment for release+depress\n x_shift = next_is_same ? -5 : 0;\n // Draw end bracket\n ctx.beginPath();\n ctx.moveTo(prev_x, prev_y);\n ctx.lineTo(x + x_shift, y);\n ctx.lineTo(x, y - this.render_options.bracket_height);\n ctx.stroke();\n ctx.closePath();\n }\n // Store previous coordinates\n prev_x = x + x_shift;\n prev_y = y;\n });\n }\n /**\n * Draw the text based pedal markings. This defaults to the traditional\n * \"Ped\" and \"*\"\" symbols if no custom text has been provided.\n */\n drawText() {\n const ctx = this.checkContext();\n let is_pedal_depressed = false;\n // Iterate through each note, placing glyphs or custom text accordingly\n this.notes.forEach((note) => {\n is_pedal_depressed = !is_pedal_depressed;\n const stave = note.checkStave();\n const x = note.getAbsoluteX();\n const y = stave.getYForBottomText(this.line + 3);\n const point = Tables.currentMusicFont().lookupMetric(`pedalMarking.${is_pedal_depressed ? 'down' : 'up'}.point`);\n let text_width = 0;\n if (is_pedal_depressed) {\n if (this.custom_depress_text) {\n text_width = ctx.measureText(this.custom_depress_text).width;\n ctx.fillText(this.custom_depress_text, x - text_width / 2, y);\n }\n else {\n drawPedalGlyph('pedal_depress', ctx, x, y, point);\n }\n }\n else {\n if (this.custom_release_text) {\n text_width = ctx.measureText(this.custom_release_text).width;\n ctx.fillText(this.custom_release_text, x - text_width / 2, y);\n }\n else {\n drawPedalGlyph('pedal_release', ctx, x, y, point);\n }\n }\n });\n }\n /** Render the pedal marking in position on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setStrokeStyle(this.render_options.color);\n ctx.setFillStyle(this.render_options.color);\n ctx.setFont(this.textFont);\n L('Rendering Pedal Marking');\n if (this.type === PedalMarking.type.BRACKET || this.type === PedalMarking.type.MIXED) {\n ctx.setLineWidth(this.render_options.bracket_line_width);\n this.drawBracketed();\n }\n else if (this.type === PedalMarking.type.TEXT) {\n this.drawText();\n }\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.PedalMarking.DEBUG` to `true`. */\nPedalMarking.DEBUG = false;\nPedalMarking.TEXT_FONT = {\n family: Font.SERIF,\n size: 12,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n/** Glyph data */\nPedalMarking.GLYPHS = {\n pedal_depress: {\n code: 'keyboardPedalPed',\n x_shift: -10,\n y_shift: 0,\n },\n pedal_release: {\n code: 'keyboardPedalUp',\n x_shift: -2,\n y_shift: 3,\n },\n};\n/** Pedal type as number. */\nPedalMarking.type = {\n TEXT: 1,\n BRACKET: 2,\n MIXED: 3,\n};\n/** Pedal type as string. */\nPedalMarking.typeString = {\n text: PedalMarking.type.TEXT,\n bracket: PedalMarking.type.BRACKET,\n mixed: PedalMarking.type.MIXED,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n//\n// ## Description\n//\n// This file implements a registry for VexFlow elements. It allows users\n// to track, query, and manage some subset of generated elements, and\n// dynamically get and set attributes.\n//\n// There are two ways to register with a registry:\n//\n// 1) Explicitly call `registry.register(elem:Element, id?:string)`, or,\n// 2) Call `Registry.enableDefaultRegistry(registry)` when ready, and all future\n// elements will automatically register with it.\n//\n// Once an element is registered, selected attributes are tracked and indexed by\n// the registry. This allows fast look up of elements by attributes like id, type,\n// and class.\nimport { RuntimeError } from './util';\n// Indexes are represented as maps of maps of maps. This allows\n// for both multi-labeling (e.g., an element can have multiple classes)\n// and efficient lookup.\nclass Index {\n constructor() {\n this.id = {};\n this.type = {};\n this.class = {};\n }\n}\nexport class Registry {\n constructor() {\n this.index = new Index();\n }\n static getDefaultRegistry() {\n return Registry.defaultRegistry;\n }\n // If you call `enableDefaultRegistry`, any new elements will auto-register with\n // the provided registry as soon as they're constructed.\n static enableDefaultRegistry(registry) {\n Registry.defaultRegistry = registry;\n }\n static disableDefaultRegistry() {\n Registry.defaultRegistry = undefined;\n }\n clear() {\n this.index = new Index();\n return this;\n }\n setIndexValue(name, value, id, elem) {\n const index = this.index;\n if (!index[name][value]) {\n index[name][value] = {};\n }\n index[name][value][id] = elem;\n }\n // Updates the indexes for element 'id'. If an element's attribute changes\n // from A -> B, make sure to remove the element from A.\n updateIndex({ id, name, value, oldValue }) {\n const elem = this.getElementById(id);\n if (oldValue !== undefined && this.index[name][oldValue]) {\n delete this.index[name][oldValue][id];\n }\n if (value && elem) {\n this.setIndexValue(name, value, elem.getAttribute('id'), elem);\n }\n }\n /**\n * Register element `elem` with this registry.\n * This adds the element to its index and watches it for attribute changes.\n * @param elem\n * @param id\n * @returns this\n */\n register(elem, id) {\n id = id || elem.getAttribute('id');\n if (!id) {\n throw new RuntimeError(\"Can't add element without `id` attribute to registry\");\n }\n // Manually add id to index, then update other indexes.\n elem.setAttribute('id', id);\n this.setIndexValue('id', id, id, elem);\n this.updateIndex({ id, name: 'type', value: elem.getAttribute('type'), oldValue: undefined });\n elem.onRegister(this);\n return this;\n }\n getElementById(id) {\n var _a, _b;\n return (_b = (_a = this.index.id) === null || _a === void 0 ? void 0 : _a[id]) === null || _b === void 0 ? void 0 : _b[id]; // return undefined if the id is not found.\n }\n getElementsByAttribute(attribute, value) {\n const index_attr = this.index[attribute];\n if (index_attr) {\n const index_attr_val = index_attr[value];\n if (index_attr_val) {\n const keys = Object.keys(index_attr_val);\n return keys.map((k) => index_attr_val[k]);\n }\n }\n return [];\n }\n getElementsByType(type) {\n return this.getElementsByAttribute('type', type);\n }\n getElementsByClass(className) {\n return this.getElementsByAttribute('class', className);\n }\n // This is called by the element when an attribute value changes. If an indexed\n // attribute changes, then update the local index.\n onUpdate(info) {\n const allowedNames = ['id', 'type', 'class'];\n if (allowedNames.includes(info.name)) {\n this.updateIndex(info);\n }\n return this;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2021.\n// MIT License\nimport { Category } from './typeguard';\nexport class RenderContext {\n static get CATEGORY() {\n return Category.RenderContext;\n }\n set font(f) {\n this.setFont(f);\n }\n get font() {\n return this.getFont();\n }\n /**\n * This is kept for backwards compatibility with 3.0.9.\n * @deprecated use `setFont(...)` instead since it now supports CSS font shorthand.\n */\n setRawFont(f) {\n this.setFont(f);\n return this;\n }\n}\n/**\n * Draw a tiny dot marker on the specified context. A great debugging aid.\n * @param ctx context\n * @param x dot x coordinate\n * @param y dot y coordinate\n * @param color\n */\nexport function drawDot(ctx, x, y, color = '#F55') {\n ctx.save();\n ctx.setFillStyle(color);\n // draw a circle\n ctx.beginPath();\n ctx.arc(x, y, 3, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n ctx.restore();\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { CanvasContext } from './canvascontext';\nimport { SVGContext } from './svgcontext';\nimport { isRenderContext } from './typeguard';\nimport { RuntimeError } from './util';\nimport { isHTMLCanvas, isHTMLDiv } from './web';\nexport var RendererBackends;\n(function (RendererBackends) {\n RendererBackends[RendererBackends[\"CANVAS\"] = 1] = \"CANVAS\";\n RendererBackends[RendererBackends[\"SVG\"] = 2] = \"SVG\";\n})(RendererBackends || (RendererBackends = {}));\n// End of line types\nexport var RendererLineEndType;\n(function (RendererLineEndType) {\n RendererLineEndType[RendererLineEndType[\"NONE\"] = 1] = \"NONE\";\n RendererLineEndType[RendererLineEndType[\"UP\"] = 2] = \"UP\";\n RendererLineEndType[RendererLineEndType[\"DOWN\"] = 3] = \"DOWN\";\n})(RendererLineEndType || (RendererLineEndType = {}));\n/**\n * Support Canvas & SVG rendering contexts.\n */\nexport class Renderer {\n constructor(arg0, arg1) {\n if (isRenderContext(arg0)) {\n // The user has provided what looks like a RenderContext, let's just use it.\n this.ctx = arg0;\n }\n else {\n if (arg1 === undefined) {\n // The backend must be specified if the render context isn't directly provided.\n throw new RuntimeError('InvalidArgument', 'Missing backend argument');\n }\n const backend = arg1;\n let element;\n if (typeof arg0 == 'string') {\n const maybeElement = document.getElementById(arg0);\n if (!maybeElement) {\n throw new RuntimeError('BadElementId', `Can't find element with ID \"${maybeElement}\"`);\n }\n element = maybeElement;\n }\n else {\n element = arg0;\n }\n // Verify backend and create context\n if (backend === Renderer.Backends.CANVAS) {\n if (!isHTMLCanvas(element)) {\n throw new RuntimeError('BadElement', 'CANVAS context requires an HTMLCanvasElement.');\n }\n const context = element.getContext('2d');\n if (!context) {\n throw new RuntimeError('BadElement', \"Can't get canvas context\");\n }\n this.ctx = new CanvasContext(context);\n }\n else if (backend === Renderer.Backends.SVG) {\n if (!isHTMLDiv(element)) {\n throw new RuntimeError('BadElement', 'SVG context requires an HTMLDivElement.');\n }\n this.ctx = new SVGContext(element);\n }\n else {\n throw new RuntimeError('InvalidBackend', `No support for backend: ${backend}`);\n }\n }\n }\n static buildContext(elementId, backend, width, height, background = '#FFF') {\n const renderer = new Renderer(elementId, backend);\n if (width && height) {\n renderer.resize(width, height);\n }\n const ctx = renderer.getContext();\n ctx.setBackgroundFillStyle(background);\n Renderer.lastContext = ctx;\n return ctx;\n }\n static getCanvasContext(elementId, width, height, background) {\n return Renderer.buildContext(elementId, Renderer.Backends.CANVAS, width, height, background);\n }\n static getSVGContext(elementId, width, height, background) {\n return Renderer.buildContext(elementId, Renderer.Backends.SVG, width, height, background);\n }\n // Draw a dashed line (horizontal, vertical or diagonal\n // dashPattern = [3,3] draws a 3 pixel dash followed by a three pixel space.\n // setting the second number to 0 draws a solid line.\n static drawDashedLine(context, fromX, fromY, toX, toY, dashPattern) {\n context.beginPath();\n const dx = toX - fromX;\n const dy = toY - fromY;\n const angle = Math.atan2(dy, dx);\n let x = fromX;\n let y = fromY;\n context.moveTo(fromX, fromY);\n let idx = 0;\n let draw = true;\n while (!((dx < 0 ? x <= toX : x >= toX) && (dy < 0 ? y <= toY : y >= toY))) {\n const dashLength = dashPattern[idx++ % dashPattern.length];\n const nx = x + Math.cos(angle) * dashLength;\n x = dx < 0 ? Math.max(toX, nx) : Math.min(toX, nx);\n const ny = y + Math.sin(angle) * dashLength;\n y = dy < 0 ? Math.max(toY, ny) : Math.min(toY, ny);\n if (draw) {\n context.lineTo(x, y);\n }\n else {\n context.moveTo(x, y);\n }\n draw = !draw;\n }\n context.closePath();\n context.stroke();\n }\n resize(width, height) {\n this.ctx.resize(width, height);\n return this;\n }\n getContext() {\n return this.ctx;\n }\n}\nRenderer.Backends = RendererBackends;\nRenderer.LineEndType = RendererLineEndType;\n// Used by vexflow_test_helpers.ts\n// Should this be private?\n// Can we do this in a cleaner way?\nRenderer.lastContext = undefined;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Glyph } from './glyph';\nimport { GlyphNote } from './glyphnote';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\n// Map `type` to SMuFL glyph code.\nconst CODES = {\n '1': 'repeat1Bar',\n '2': 'repeat2Bars',\n '4': 'repeat4Bars',\n slash: 'repeatBarSlash',\n};\nexport class RepeatNote extends GlyphNote {\n static get CATEGORY() {\n return Category.RepeatNote;\n }\n constructor(type, noteStruct, options) {\n super(undefined, Object.assign({ duration: 'q', align_center: type !== 'slash' }, noteStruct), options);\n const glyphCode = CODES[type] || 'repeat1Bar';\n const glyph = new Glyph(glyphCode, Tables.currentMusicFont().lookupMetric('repeatNote.point', 40), {\n category: 'repeatNote',\n });\n this.setGlyph(glyph);\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Clef } from './clef';\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { KeySignature } from './keysignature';\nimport { Barline, BarlineType } from './stavebarline';\nimport { StaveModifierPosition } from './stavemodifier';\nimport { Repetition } from './staverepetition';\nimport { StaveSection } from './stavesection';\nimport { StaveTempo } from './stavetempo';\nimport { StaveText } from './stavetext';\nimport { Volta } from './stavevolta';\nimport { Tables } from './tables';\nimport { TimeSignature } from './timesignature';\nimport { Category, isBarline } from './typeguard';\nimport { RuntimeError } from './util';\n// Used by Stave.format() to sort the modifiers at the beginning and end of a stave.\n// The keys (computed property names) match the CATEGORY property in the\n// Barline, Clef, KeySignature, TimeSignature classes.\nconst SORT_ORDER_BEG_MODIFIERS = {\n [Barline.CATEGORY]: 0,\n [Clef.CATEGORY]: 1,\n [KeySignature.CATEGORY]: 2,\n [TimeSignature.CATEGORY]: 3,\n};\nconst SORT_ORDER_END_MODIFIERS = {\n [TimeSignature.CATEGORY]: 0,\n [KeySignature.CATEGORY]: 1,\n [Barline.CATEGORY]: 2,\n [Clef.CATEGORY]: 3,\n};\nexport class Stave extends Element {\n constructor(x, y, width, options) {\n super();\n // Initialized by the constructor via this.resetLines().\n this.height = 0;\n this.x = x;\n this.y = y;\n this.width = width;\n this.formatted = false;\n this.start_x = x + 5;\n this.end_x = x + width;\n this.modifiers = []; // stave modifiers (clef, key, time, barlines, coda, segno, etc.)\n this.measure = 0;\n this.clef = 'treble';\n this.endClef = undefined;\n this.resetFont();\n this.options = Object.assign({ vertical_bar_width: 10, num_lines: 5, fill_style: '#999999', left_bar: true, right_bar: true, spacing_between_lines_px: Tables.STAVE_LINE_DISTANCE, space_above_staff_ln: 4, space_below_staff_ln: 4, top_text_position: 1, bottom_text_position: 4, line_config: [] }, options);\n this.bounds = { x: this.x, y: this.y, w: this.width, h: 0 };\n this.defaultLedgerLineStyle = { strokeStyle: '#444', lineWidth: 1.4 };\n this.resetLines();\n // beg bar\n this.addModifier(new Barline(this.options.left_bar ? BarlineType.SINGLE : BarlineType.NONE));\n // end bar\n this.addEndModifier(new Barline(this.options.right_bar ? BarlineType.SINGLE : BarlineType.NONE));\n }\n static get CATEGORY() {\n return Category.Stave;\n }\n // This is the sum of the padding that normally goes on left + right of a stave during\n // drawing. Used to size staves correctly with content width.\n static get defaultPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('stave.padding') + musicFont.lookupMetric('stave.endPaddingMax');\n }\n // Right padding, used by system if startX is already determined.\n static get rightPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('stave.endPaddingMax');\n }\n /** Set default style for ledger lines. */\n setDefaultLedgerLineStyle(style) {\n this.defaultLedgerLineStyle = style;\n }\n /** Get default style for ledger lines. */\n getDefaultLedgerLineStyle() {\n return Object.assign(Object.assign({}, this.getStyle()), this.defaultLedgerLineStyle);\n }\n space(spacing) {\n return this.options.spacing_between_lines_px * spacing;\n }\n resetLines() {\n this.options.line_config = [];\n for (let i = 0; i < this.options.num_lines; i++) {\n this.options.line_config.push({ visible: true });\n }\n this.height = (this.options.num_lines + this.options.space_above_staff_ln) * this.options.spacing_between_lines_px;\n this.options.bottom_text_position = this.options.num_lines;\n }\n setNoteStartX(x) {\n if (!this.formatted)\n this.format();\n this.start_x = x;\n return this;\n }\n getNoteStartX() {\n if (!this.formatted)\n this.format();\n return this.start_x;\n }\n getNoteEndX() {\n if (!this.formatted)\n this.format();\n return this.end_x;\n }\n getTieStartX() {\n return this.start_x;\n }\n getTieEndX() {\n return this.end_x;\n }\n getX() {\n return this.x;\n }\n getNumLines() {\n return this.options.num_lines;\n }\n setNumLines(n) {\n this.options.num_lines = n;\n this.resetLines();\n return this;\n }\n setY(y) {\n this.y = y;\n return this;\n }\n getY() {\n return this.y;\n }\n getTopLineTopY() {\n return this.getYForLine(0) - Tables.STAVE_LINE_THICKNESS / 2;\n }\n getBottomLineBottomY() {\n return this.getYForLine(this.getNumLines() - 1) + Tables.STAVE_LINE_THICKNESS / 2;\n }\n setX(x) {\n const shift = x - this.x;\n this.formatted = false;\n this.x = x;\n this.start_x += shift;\n this.end_x += shift;\n for (let i = 0; i < this.modifiers.length; i++) {\n const mod = this.modifiers[i];\n mod.setX(mod.getX() + shift);\n }\n return this;\n }\n setWidth(width) {\n this.formatted = false;\n this.width = width;\n this.end_x = this.x + width;\n // reset the x position of the end barline (TODO(0xfe): This makes no sense)\n // this.modifiers[1].setX(this.end_x);\n return this;\n }\n getWidth() {\n return this.width;\n }\n getStyle() {\n return Object.assign({ fillStyle: this.options.fill_style, strokeStyle: this.options.fill_style, lineWidth: Tables.STAVE_LINE_THICKNESS }, super.getStyle());\n }\n /**\n * Set the measure number of this Stave.\n */\n setMeasure(measure) {\n this.measure = measure;\n return this;\n }\n /**\n * Return the measure number of this Stave.\n */\n getMeasure() {\n return this.measure;\n }\n /**\n * Gets the pixels to shift from the beginning of the stave\n * following the modifier at the provided index\n * @param {Number} index The index from which to determine the shift\n * @return {Number} The amount of pixels shifted\n */\n getModifierXShift(index = 0) {\n if (typeof index !== 'number') {\n throw new RuntimeError('InvalidIndex', 'Must be of number type');\n }\n if (!this.formatted)\n this.format();\n if (this.getModifiers(StaveModifierPosition.BEGIN).length === 1) {\n return 0;\n }\n // for right position modifiers zero shift seems correct, see 'Volta + Modifier Measure Test'\n if (this.modifiers[index].getPosition() === StaveModifierPosition.RIGHT) {\n return 0;\n }\n let start_x = this.start_x - this.x;\n const begBarline = this.modifiers[0];\n if (begBarline.getType() === BarlineType.REPEAT_BEGIN && start_x > begBarline.getWidth()) {\n start_x -= begBarline.getWidth();\n }\n return start_x;\n }\n /** Coda & Segno Symbol functions */\n setRepetitionType(type, yShift = 0) {\n this.modifiers.push(new Repetition(type, this.x, yShift));\n return this;\n }\n // Volta functions\n setVoltaType(type, number_t, y) {\n this.modifiers.push(new Volta(type, number_t, this.x, y));\n return this;\n }\n // Section functions\n setSection(section, y, xOffset = 0, fontSize, drawRect = true) {\n const staveSection = new StaveSection(section, this.x + xOffset, y, drawRect);\n if (fontSize)\n staveSection.setFontSize(fontSize);\n this.modifiers.push(staveSection);\n return this;\n }\n // Tempo functions\n setTempo(tempo, y) {\n this.modifiers.push(new StaveTempo(tempo, this.x, y));\n return this;\n }\n // Text functions\n setText(text, position, options = {}) {\n this.modifiers.push(new StaveText(text, position, options));\n return this;\n }\n getHeight() {\n return this.height;\n }\n getSpacingBetweenLines() {\n return this.options.spacing_between_lines_px;\n }\n getBoundingBox() {\n return new BoundingBox(this.x, this.y, this.width, this.getBottomY() - this.y);\n }\n getBottomY() {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const score_bottom = this.getYForLine(options.num_lines) + options.space_below_staff_ln * spacing;\n return score_bottom;\n }\n getBottomLineY() {\n return this.getYForLine(this.options.num_lines);\n }\n // This returns\n /** @returns the y for the *center* of a staff line */\n getYForLine(line) {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n const y = this.y + line * spacing + headroom * spacing;\n return y;\n }\n getLineForY(y) {\n // Does the reverse of getYForLine - somewhat dumb and just calls\n // getYForLine until the right value is reaches\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n return (y - this.y) / spacing - headroom;\n }\n getYForTopText(line = 0) {\n return this.getYForLine(-line - this.options.top_text_position);\n }\n getYForBottomText(line = 0) {\n return this.getYForLine(this.options.bottom_text_position + line);\n }\n getYForNote(line) {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n return this.y + headroom * spacing + 5 * spacing - line * spacing;\n }\n getYForGlyphs() {\n return this.getYForLine(3);\n }\n // This method adds a stave modifier to the stave. Note that the first two\n // modifiers (BarLines) are automatically added upon construction.\n addModifier(modifier, position) {\n if (position !== undefined) {\n modifier.setPosition(position);\n }\n modifier.setStave(this);\n this.formatted = false;\n this.modifiers.push(modifier);\n return this;\n }\n addEndModifier(modifier) {\n this.addModifier(modifier, StaveModifierPosition.END);\n return this;\n }\n // Bar Line functions\n setBegBarType(type) {\n // Only valid bar types at beginning of stave is none, single or begin repeat\n const { SINGLE, REPEAT_BEGIN, NONE } = BarlineType;\n if (type === SINGLE || type === REPEAT_BEGIN || type === NONE) {\n this.modifiers[0].setType(type);\n this.formatted = false;\n }\n return this;\n }\n setEndBarType(type) {\n // Repeat end not valid at end of stave\n if (type !== BarlineType.REPEAT_BEGIN) {\n this.modifiers[1].setType(type);\n this.formatted = false;\n }\n return this;\n }\n setClef(clefSpec, size, annotation, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n if (position === StaveModifierPosition.END) {\n this.endClef = clefSpec;\n }\n else {\n this.clef = clefSpec;\n }\n const clefs = this.getModifiers(position, Clef.CATEGORY);\n if (clefs.length === 0) {\n this.addClef(clefSpec, size, annotation, position);\n }\n else {\n clefs[0].setType(clefSpec, size, annotation);\n }\n return this;\n }\n getClef() {\n return this.clef;\n }\n setEndClef(clefSpec, size, annotation) {\n this.setClef(clefSpec, size, annotation, StaveModifierPosition.END);\n return this;\n }\n getEndClef() {\n return this.endClef;\n }\n setKeySignature(keySpec, cancelKeySpec, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n const keySignatures = this.getModifiers(position, KeySignature.CATEGORY);\n if (keySignatures.length === 0) {\n this.addKeySignature(keySpec, cancelKeySpec, position);\n }\n else {\n keySignatures[0].setKeySig(keySpec, cancelKeySpec);\n }\n return this;\n }\n setEndKeySignature(keySpec, cancelKeySpec) {\n this.setKeySignature(keySpec, cancelKeySpec, StaveModifierPosition.END);\n return this;\n }\n setTimeSignature(timeSpec, customPadding, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n const timeSignatures = this.getModifiers(position, TimeSignature.CATEGORY);\n if (timeSignatures.length === 0) {\n this.addTimeSignature(timeSpec, customPadding, position);\n }\n else {\n timeSignatures[0].setTimeSig(timeSpec);\n }\n return this;\n }\n setEndTimeSignature(timeSpec, customPadding) {\n this.setTimeSignature(timeSpec, customPadding, StaveModifierPosition.END);\n return this;\n }\n /**\n * Add a key signature to the stave.\n *\n * Example:\n * `stave.addKeySignature('Db');`\n * @param keySpec new key specification `[A-G][b|#]?`\n * @param cancelKeySpec\n * @param position\n * @returns\n */\n addKeySignature(keySpec, cancelKeySpec, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n this.addModifier(new KeySignature(keySpec, cancelKeySpec).setPosition(position), position);\n return this;\n }\n /**\n * Add a clef to the stave.\n *\n * Example:\n *\n * stave.addClef('treble')\n * @param clef clef (treble|bass|...) see {@link Clef.types}\n * @param size\n * @param annotation\n * @param position\n * @returns\n */\n addClef(clef, size, annotation, position) {\n if (position === undefined || position === StaveModifierPosition.BEGIN) {\n this.clef = clef;\n }\n else if (position === StaveModifierPosition.END) {\n this.endClef = clef;\n }\n this.addModifier(new Clef(clef, size, annotation), position);\n return this;\n }\n addEndClef(clef, size, annotation) {\n this.addClef(clef, size, annotation, StaveModifierPosition.END);\n return this;\n }\n /**\n * Add a time signature to the stave\n *\n * Example:\n *\n * `stave.addTimeSignature('4/4');`\n * @param timeSpec time signature specification `(C\\||C|\\d\\/\\d)`\n * @param customPadding\n * @param position\n * @returns\n */\n addTimeSignature(timeSpec, customPadding, position) {\n this.addModifier(new TimeSignature(timeSpec, customPadding), position);\n return this;\n }\n addEndTimeSignature(timeSpec, customPadding) {\n this.addTimeSignature(timeSpec, customPadding, StaveModifierPosition.END);\n return this;\n }\n // Deprecated\n addTrebleGlyph() {\n this.addClef('treble');\n return this;\n }\n /**\n * @param position\n * @param category\n * @returns array of StaveModifiers that match the provided position and category.\n */\n getModifiers(position, category) {\n const noPosition = position === undefined;\n const noCategory = category === undefined;\n if (noPosition && noCategory) {\n return this.modifiers;\n }\n else if (noPosition) {\n // A category was provided.\n return this.modifiers.filter((m) => category === m.getCategory());\n }\n else if (noCategory) {\n // A position was provided.\n return this.modifiers.filter((m) => position === m.getPosition());\n }\n else {\n // Both position and category were provided!\n return this.modifiers.filter((m) => position === m.getPosition() && category === m.getCategory());\n }\n }\n /**\n * Use the modifier's `getCategory()` as a key for the `order` array.\n * The retrieved value is used to sort modifiers from left to right (0 to to 3).\n */\n sortByCategory(items, order) {\n for (let i = items.length - 1; i >= 0; i--) {\n for (let j = 0; j < i; j++) {\n if (order[items[j].getCategory()] > order[items[j + 1].getCategory()]) {\n const temp = items[j];\n items[j] = items[j + 1];\n items[j + 1] = temp;\n }\n }\n }\n }\n format() {\n const begBarline = this.modifiers[0];\n const endBarline = this.modifiers[1];\n const begModifiers = this.getModifiers(StaveModifierPosition.BEGIN);\n const endModifiers = this.getModifiers(StaveModifierPosition.END);\n this.sortByCategory(begModifiers, SORT_ORDER_BEG_MODIFIERS);\n this.sortByCategory(endModifiers, SORT_ORDER_END_MODIFIERS);\n if (begModifiers.length > 1 && begBarline.getType() === BarlineType.REPEAT_BEGIN) {\n begModifiers.push(begModifiers.splice(0, 1)[0]);\n begModifiers.splice(0, 0, new Barline(BarlineType.SINGLE));\n }\n if (endModifiers.indexOf(endBarline) > 0) {\n endModifiers.splice(0, 0, new Barline(BarlineType.NONE));\n }\n let width;\n let padding;\n let modifier;\n let offset = 0;\n let x = this.x;\n for (let i = 0; i < begModifiers.length; i++) {\n modifier = begModifiers[i];\n padding = modifier.getPadding(i + offset);\n width = modifier.getWidth();\n x += padding;\n modifier.setX(x);\n x += width;\n if (padding + width === 0)\n offset--;\n }\n this.start_x = x;\n x = this.x + this.width;\n const widths = {\n left: 0,\n right: 0,\n paddingRight: 0,\n paddingLeft: 0,\n };\n let lastBarlineIdx = 0;\n for (let i = 0; i < endModifiers.length; i++) {\n modifier = endModifiers[i];\n lastBarlineIdx = isBarline(modifier) ? i : lastBarlineIdx;\n widths.right = 0;\n widths.left = 0;\n widths.paddingRight = 0;\n widths.paddingLeft = 0;\n const layoutMetrics = modifier.getLayoutMetrics();\n if (layoutMetrics) {\n if (i !== 0) {\n widths.right = layoutMetrics.xMax || 0;\n widths.paddingRight = layoutMetrics.paddingRight || 0;\n }\n widths.left = -layoutMetrics.xMin || 0;\n widths.paddingLeft = layoutMetrics.paddingLeft || 0;\n if (i === endModifiers.length - 1) {\n widths.paddingLeft = 0;\n }\n }\n else {\n widths.paddingRight = modifier.getPadding(i - lastBarlineIdx);\n if (i !== 0) {\n widths.right = modifier.getWidth();\n }\n if (i === 0) {\n widths.left = modifier.getWidth();\n }\n }\n x -= widths.paddingRight;\n x -= widths.right;\n modifier.setX(x);\n x -= widths.left;\n x -= widths.paddingLeft;\n }\n this.end_x = endModifiers.length === 1 ? this.x + this.width : x;\n this.formatted = true;\n }\n /**\n * All drawing functions below need the context to be set.\n */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n ctx.openGroup('stave', this.getAttribute('id'));\n if (!this.formatted)\n this.format();\n const num_lines = this.options.num_lines;\n const width = this.width;\n const x = this.x;\n let y;\n // Render lines\n for (let line = 0; line < num_lines; line++) {\n y = this.getYForLine(line);\n this.applyStyle();\n if (this.options.line_config[line].visible) {\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.lineTo(x + width, y);\n ctx.stroke();\n }\n this.restoreStyle();\n }\n // Draw the modifiers (bar lines, coda, segno, repeat brackets, etc.)\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n // Only draw modifier if it has a draw function\n if (typeof modifier.draw === 'function') {\n modifier.applyStyle(ctx);\n modifier.draw(this, this.getModifierXShift(i));\n modifier.restoreStyle(ctx);\n }\n }\n // Render measure numbers\n if (this.measure > 0) {\n ctx.save();\n ctx.setFont(this.textFont);\n const textWidth = ctx.measureText('' + this.measure).width;\n y = this.getYForTopText(0) + 3;\n ctx.fillText('' + this.measure, this.x - textWidth / 2, y);\n ctx.restore();\n }\n ctx.closeGroup();\n return this;\n }\n getVerticalBarWidth() {\n return this.options.vertical_bar_width;\n }\n /**\n * Get the current configuration for the Stave.\n * @return {Array} An array of configuration objects.\n */\n getConfigForLines() {\n return this.options.line_config;\n }\n /**\n * Configure properties of the lines in the Stave\n * @param line_number The index of the line to configure.\n * @param line_config An configuration object for the specified line.\n * @throws RuntimeError \"StaveConfigError\" When the specified line number is out of\n * range of the number of lines specified in the constructor.\n */\n setConfigForLine(line_number, line_config) {\n if (line_number >= this.options.num_lines || line_number < 0) {\n throw new RuntimeError('StaveConfigError', 'The line number must be within the range of the number of lines in the Stave.');\n }\n if (line_config.visible === undefined) {\n throw new RuntimeError('StaveConfigError', \"The line configuration object is missing the 'visible' property.\");\n }\n if (typeof line_config.visible !== 'boolean') {\n throw new RuntimeError('StaveConfigError', \"The line configuration objects 'visible' property must be true or false.\");\n }\n this.options.line_config[line_number] = line_config;\n return this;\n }\n /**\n * Set the staff line configuration array for all of the lines at once.\n * @param lines_configuration An array of line configuration objects. These objects\n * are of the same format as the single one passed in to setLineConfiguration().\n * The caller can set null for any line config entry if it is desired that the default be used\n * @throws RuntimeError \"StaveConfigError\" When the lines_configuration array does not have\n * exactly the same number of elements as the num_lines configuration object set in\n * the constructor.\n */\n setConfigForLines(lines_configuration) {\n if (lines_configuration.length !== this.options.num_lines) {\n throw new RuntimeError('StaveConfigError', 'The length of the lines configuration array must match the number of lines in the Stave');\n }\n // Make sure the defaults are present in case an incomplete set of\n // configuration options were supplied.\n // eslint-disable-next-line\n for (const line_config in lines_configuration) {\n // Allow '{}' to be used if the caller just wants the default for a particular node.\n if (lines_configuration[line_config].visible == undefined) {\n lines_configuration[line_config] = this.options.line_config[line_config];\n }\n this.options.line_config[line_config] = Object.assign(Object.assign({}, this.options.line_config[line_config]), lines_configuration[line_config]);\n }\n this.options.line_config = lines_configuration;\n return this;\n }\n static formatBegModifiers(staves) {\n let maxX = 0;\n // align note start\n staves.forEach((stave) => {\n if (stave.getNoteStartX() > maxX)\n maxX = stave.getNoteStartX();\n });\n staves.forEach((stave) => {\n stave.setNoteStartX(maxX);\n });\n maxX = 0;\n // align REPEAT_BEGIN\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.Barline);\n modifiers.forEach((modifier) => {\n if (modifier.getType() == BarlineType.REPEAT_BEGIN)\n if (modifier.getX() > maxX)\n maxX = modifier.getX();\n });\n });\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.Barline);\n modifiers.forEach((modifier) => {\n if (modifier.getType() == BarlineType.REPEAT_BEGIN)\n modifier.setX(maxX);\n });\n });\n maxX = 0;\n // Align time signatures\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.TimeSignature);\n modifiers.forEach((modifier) => {\n if (modifier.getX() > maxX)\n maxX = modifier.getX();\n });\n });\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.TimeSignature);\n modifiers.forEach((modifier) => {\n modifier.setX(maxX);\n });\n });\n }\n}\nStave.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 8,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Author Larry Kuhns 2011\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport var BarlineType;\n(function (BarlineType) {\n BarlineType[BarlineType[\"SINGLE\"] = 1] = \"SINGLE\";\n BarlineType[BarlineType[\"DOUBLE\"] = 2] = \"DOUBLE\";\n BarlineType[BarlineType[\"END\"] = 3] = \"END\";\n BarlineType[BarlineType[\"REPEAT_BEGIN\"] = 4] = \"REPEAT_BEGIN\";\n BarlineType[BarlineType[\"REPEAT_END\"] = 5] = \"REPEAT_END\";\n BarlineType[BarlineType[\"REPEAT_BOTH\"] = 6] = \"REPEAT_BOTH\";\n BarlineType[BarlineType[\"NONE\"] = 7] = \"NONE\";\n})(BarlineType || (BarlineType = {}));\nexport class Barline extends StaveModifier {\n constructor(type) {\n super();\n this.thickness = Tables.STAVE_LINE_THICKNESS;\n const TYPE = BarlineType;\n this.widths = {};\n this.widths[TYPE.SINGLE] = 5;\n this.widths[TYPE.DOUBLE] = 5;\n this.widths[TYPE.END] = 5;\n this.widths[TYPE.REPEAT_BEGIN] = 5;\n this.widths[TYPE.REPEAT_END] = 5;\n this.widths[TYPE.REPEAT_BOTH] = 5;\n this.widths[TYPE.NONE] = 5;\n this.paddings = {};\n this.paddings[TYPE.SINGLE] = 0;\n this.paddings[TYPE.DOUBLE] = 0;\n this.paddings[TYPE.END] = 0;\n this.paddings[TYPE.REPEAT_BEGIN] = 15;\n this.paddings[TYPE.REPEAT_END] = 15;\n this.paddings[TYPE.REPEAT_BOTH] = 15;\n this.paddings[TYPE.NONE] = 0;\n this.layoutMetricsMap = {};\n this.layoutMetricsMap[TYPE.SINGLE] = {\n xMin: 0,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.DOUBLE] = {\n xMin: -3,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.END] = {\n xMin: -5,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_END] = {\n xMin: -10,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_BEGIN] = {\n xMin: -2,\n xMax: 10,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_BOTH] = {\n xMin: -10,\n xMax: 10,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.NONE] = {\n xMin: 0,\n xMax: 0,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.setPosition(StaveModifierPosition.BEGIN);\n this.setType(type);\n }\n static get CATEGORY() {\n return Category.Barline;\n }\n static get type() {\n return BarlineType;\n }\n static get typeString() {\n return {\n single: BarlineType.SINGLE,\n double: BarlineType.DOUBLE,\n end: BarlineType.END,\n repeatBegin: BarlineType.REPEAT_BEGIN,\n repeatEnd: BarlineType.REPEAT_END,\n repeatBoth: BarlineType.REPEAT_BOTH,\n none: BarlineType.NONE,\n };\n }\n getType() {\n return this.type;\n }\n setType(type) {\n this.type = typeof type === 'string' ? Barline.typeString[type] : type;\n this.setWidth(this.widths[this.type]);\n this.setPadding(this.paddings[this.type]);\n this.setLayoutMetrics(this.layoutMetricsMap[this.type]);\n return this;\n }\n // Draw barlines\n draw(stave) {\n stave.checkContext();\n this.setRendered();\n switch (this.type) {\n case BarlineType.SINGLE:\n this.drawVerticalBar(stave, this.x, false);\n break;\n case BarlineType.DOUBLE:\n this.drawVerticalBar(stave, this.x, true);\n break;\n case BarlineType.END:\n this.drawVerticalEndBar(stave, this.x);\n break;\n case BarlineType.REPEAT_BEGIN:\n // If the barline is shifted over (in front of clef/time/key)\n // Draw vertical bar at the beginning.\n this.drawRepeatBar(stave, this.x, true);\n if (stave.getX() !== this.x) {\n this.drawVerticalBar(stave, stave.getX());\n }\n break;\n case BarlineType.REPEAT_END:\n this.drawRepeatBar(stave, this.x, false);\n break;\n case BarlineType.REPEAT_BOTH:\n this.drawRepeatBar(stave, this.x, false);\n this.drawRepeatBar(stave, this.x, true);\n break;\n default:\n // Default is NONE, so nothing to draw\n break;\n }\n }\n drawVerticalBar(stave, x, double_bar) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n if (double_bar) {\n staveCtx.fillRect(x - 3, topY, 1, botY - topY);\n }\n staveCtx.fillRect(x, topY, 1, botY - topY);\n }\n drawVerticalEndBar(stave, x) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n staveCtx.fillRect(x - 5, topY, 1, botY - topY);\n staveCtx.fillRect(x - 2, topY, 3, botY - topY);\n }\n drawRepeatBar(stave, x, begin) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n let x_shift = 3;\n if (!begin) {\n x_shift = -5;\n }\n staveCtx.fillRect(x + x_shift, topY, 1, botY - topY);\n staveCtx.fillRect(x - 2, topY, 3, botY - topY);\n const dot_radius = 2;\n // Shift dots left or right\n if (begin) {\n x_shift += 4;\n }\n else {\n x_shift -= 4;\n }\n const dot_x = x + x_shift + dot_radius / 2;\n // calculate the y offset based on number of stave lines\n let y_offset = (stave.getNumLines() - 1) * stave.getSpacingBetweenLines();\n y_offset = y_offset / 2 - stave.getSpacingBetweenLines() / 2;\n let dot_y = topY + y_offset + dot_radius / 2;\n // draw the top repeat dot\n staveCtx.beginPath();\n staveCtx.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false);\n staveCtx.fill();\n // draw the bottom repeat dot\n dot_y += stave.getSpacingBetweenLines();\n staveCtx.beginPath();\n staveCtx.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false);\n staveCtx.fill();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nfunction drawBoldDoubleLine(ctx, type, topX, topY, botY) {\n if (type !== StaveConnector.type.BOLD_DOUBLE_LEFT && type !== StaveConnector.type.BOLD_DOUBLE_RIGHT) {\n throw new RuntimeError('InvalidConnector', 'A REPEAT_BEGIN or REPEAT_END type must be provided.');\n }\n let x_shift = 3;\n let variableWidth = 3.5; // Width for avoiding anti-aliasing width issues\n const thickLineOffset = 2; // For aesthetics\n if (type === StaveConnector.type.BOLD_DOUBLE_RIGHT) {\n x_shift = -5; // Flips the side of the thin line\n variableWidth = 3;\n }\n // Thin line\n ctx.fillRect(topX + x_shift, topY, 1, botY - topY);\n // Thick line\n ctx.fillRect(topX - thickLineOffset, topY, variableWidth, botY - topY);\n}\n/** StaveConnector implements the connector lines between staves of a system. */\nexport class StaveConnector extends Element {\n constructor(top_stave, bottom_stave) {\n super();\n this.thickness = Tables.STAVE_LINE_THICKNESS;\n this.width = 3;\n this.top_stave = top_stave;\n this.bottom_stave = bottom_stave;\n this.type = StaveConnector.type.DOUBLE;\n this.resetFont();\n // 1. Offset Bold Double Left to align with offset Repeat Begin bars\n // 2. Offset BRACE type not to overlap with another StaveConnector\n this.x_shift = 0;\n this.texts = [];\n }\n static get CATEGORY() {\n return Category.StaveConnector;\n }\n /**\n * Set type.\n * @param type see {@link StaveConnector.type} & {@link StaveConnector.typeString}\n */\n setType(type) {\n const newType = typeof type === 'string' ? StaveConnector.typeString[type] : type;\n // Be certain that the type is a valid type:\n if (Object.values(StaveConnector.type).includes(newType)) {\n this.type = newType;\n }\n return this;\n }\n /**\n * Get type.\n * @returns number {@link StaveConnector.type}\n */\n getType() {\n return this.type;\n }\n /** Set optional associated Text. */\n setText(text, options = {}) {\n this.texts.push({\n content: text,\n options: Object.assign({ shift_x: 0, shift_y: 0 }, options),\n });\n return this;\n }\n setXShift(x_shift) {\n if (typeof x_shift !== 'number') {\n throw new RuntimeError('InvalidType', 'x_shift must be a Number');\n }\n this.x_shift = x_shift;\n return this;\n }\n getXShift() {\n return this.x_shift;\n }\n /** Render connector and associated text. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let topY = this.top_stave.getYForLine(0);\n let botY = this.bottom_stave.getYForLine(this.bottom_stave.getNumLines() - 1) + this.thickness;\n let width = this.width;\n let topX = this.top_stave.getX();\n const isRightSidedConnector = this.type === StaveConnector.type.SINGLE_RIGHT ||\n this.type === StaveConnector.type.BOLD_DOUBLE_RIGHT ||\n this.type === StaveConnector.type.THIN_DOUBLE;\n if (isRightSidedConnector) {\n topX = this.top_stave.getX() + this.top_stave.getWidth();\n }\n let attachment_height = botY - topY;\n switch (this.type) {\n case StaveConnector.type.SINGLE:\n width = 1;\n break;\n case StaveConnector.type.SINGLE_LEFT:\n width = 1;\n break;\n case StaveConnector.type.SINGLE_RIGHT:\n width = 1;\n break;\n case StaveConnector.type.DOUBLE:\n topX -= this.width + 2;\n topY -= this.thickness;\n attachment_height += 0.5;\n break;\n case StaveConnector.type.BRACE: {\n width = 12;\n // May need additional code to draw brace\n const x1 = this.top_stave.getX() - 2 + this.x_shift;\n const y1 = topY;\n const x3 = x1;\n const y3 = botY;\n const x2 = x1 - width;\n const y2 = y1 + attachment_height / 2.0;\n const cpx1 = x2 - 0.9 * width;\n const cpy1 = y1 + 0.2 * attachment_height;\n const cpx2 = x1 + 1.1 * width;\n const cpy2 = y2 - 0.135 * attachment_height;\n const cpx3 = cpx2;\n const cpy3 = y2 + 0.135 * attachment_height;\n const cpx4 = cpx1;\n const cpy4 = y3 - 0.2 * attachment_height;\n const cpx5 = x2 - width;\n const cpy5 = cpy4;\n const cpx6 = x1 + 0.4 * width;\n const cpy6 = y2 + 0.135 * attachment_height;\n const cpx7 = cpx6;\n const cpy7 = y2 - 0.135 * attachment_height;\n const cpx8 = cpx5;\n const cpy8 = cpy1;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);\n ctx.bezierCurveTo(cpx3, cpy3, cpx4, cpy4, x3, y3);\n ctx.bezierCurveTo(cpx5, cpy5, cpx6, cpy6, x2, y2);\n ctx.bezierCurveTo(cpx7, cpy7, cpx8, cpy8, x1, y1);\n ctx.fill();\n ctx.stroke();\n break;\n }\n case StaveConnector.type.BRACKET:\n topY -= 6;\n botY += 6;\n attachment_height = botY - topY;\n Glyph.renderGlyph(ctx, topX - 5, topY, 40, 'bracketTop');\n Glyph.renderGlyph(ctx, topX - 5, botY, 40, 'bracketBottom');\n topX -= this.width + 2;\n break;\n case StaveConnector.type.BOLD_DOUBLE_LEFT:\n drawBoldDoubleLine(ctx, this.type, topX + this.x_shift, topY, botY - this.thickness);\n break;\n case StaveConnector.type.BOLD_DOUBLE_RIGHT:\n drawBoldDoubleLine(ctx, this.type, topX, topY, botY - this.thickness);\n break;\n case StaveConnector.type.THIN_DOUBLE:\n width = 1;\n attachment_height -= this.thickness;\n break;\n case StaveConnector.type.NONE:\n break;\n default:\n throw new RuntimeError('InvalidType', `The provided StaveConnector.type (${this.type}) is invalid.`);\n }\n if (this.type !== StaveConnector.type.BRACE &&\n this.type !== StaveConnector.type.BOLD_DOUBLE_LEFT &&\n this.type !== StaveConnector.type.BOLD_DOUBLE_RIGHT &&\n this.type !== StaveConnector.type.NONE) {\n ctx.fillRect(topX, topY, width, attachment_height);\n }\n // If the connector is a thin double barline, draw the paralell line\n if (this.type === StaveConnector.type.THIN_DOUBLE) {\n ctx.fillRect(topX - 3, topY, width, attachment_height);\n }\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n // Add stave connector text\n for (let i = 0; i < this.texts.length; i++) {\n const text = this.texts[i];\n const text_width = ctx.measureText('' + text.content).width;\n const x = this.top_stave.getX() - text_width - 24 + text.options.shift_x;\n const y = (this.top_stave.getYForLine(0) + this.bottom_stave.getBottomLineY()) / 2 + text.options.shift_y;\n ctx.fillText('' + text.content, x, y + 4);\n }\n ctx.restore();\n }\n}\nStaveConnector.TEXT_FONT = {\n family: Font.SERIF,\n size: 16,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n/**\n * SINGLE_LEFT and SINGLE are the same value for compatibility\n * with older versions of vexflow which didn't have right sided\n * stave connectors.\n */\nStaveConnector.type = {\n SINGLE_RIGHT: 0,\n SINGLE_LEFT: 1,\n SINGLE: 1,\n DOUBLE: 2,\n BRACE: 3,\n BRACKET: 4,\n BOLD_DOUBLE_LEFT: 5,\n BOLD_DOUBLE_RIGHT: 6,\n THIN_DOUBLE: 7,\n NONE: 8,\n};\n/**\n * Connector type:\n * * \"singleRight\"\n * * \"singleLeft\"\n * * \"single\"\n * * \"double\"\n * * \"brace\"\n * * \"bracket\"\n * * \"boldDoubleLeft\"\n * * \"boldDoubleRight\"\n * * \"thinDouble\"\n * * \"none\"\n */\nStaveConnector.typeString = {\n singleRight: StaveConnector.type.SINGLE_RIGHT,\n singleLeft: StaveConnector.type.SINGLE_LEFT,\n single: StaveConnector.type.SINGLE,\n double: StaveConnector.type.DOUBLE,\n brace: StaveConnector.type.BRACE,\n bracket: StaveConnector.type.BRACKET,\n boldDoubleLeft: StaveConnector.type.BOLD_DOUBLE_LEFT,\n boldDoubleRight: StaveConnector.type.BOLD_DOUBLE_RIGHT,\n thinDouble: StaveConnector.type.THIN_DOUBLE,\n none: StaveConnector.type.NONE,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Author: Raffaele Viglianti, 2012 http://itisnotsound.wordpress.com/\n//\n// This class implements hairpins between notes.\n// Hairpins can be either crescendo or decrescendo.\nimport { Element } from './element';\nimport { Modifier } from './modifier';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveHairpin extends Element {\n /**\n * Create a new hairpin from the specified notes.\n *\n * @param {!Object} notes The notes to tie up.\n * Notes is a struct that has:\n *\n * {\n * first_note: Note,\n * last_note: Note,\n * }\n * @param {!Object} type The type of hairpin\n */\n constructor(notes, type) {\n super();\n this.setNotes(notes);\n this.hairpin = type;\n this.position = Modifier.Position.BELOW;\n this.render_options = {\n height: 10,\n y_shift: 0,\n left_shift_px: 0,\n right_shift_px: 0,\n right_shift_ticks: 0,\n left_shift_ticks: 0,\n };\n }\n static get CATEGORY() {\n return Category.StaveHairpin;\n }\n /* Helper function to convert ticks into pixels.\n * Requires a Formatter with voices joined and formatted (to\n * get pixels per tick)\n *\n * options is struct that has:\n *\n * {\n * height: px,\n * y_shift: px, // vertical offset\n * left_shift_ticks: 0, // left horizontal offset expressed in ticks\n * right_shift_ticks: 0 // right horizontal offset expressed in ticks\n * }\n *\n **/\n static FormatByTicksAndDraw(ctx, formatter, notes, type, position, options) {\n var _a, _b;\n const ppt = formatter.pixelsPerTick;\n if (ppt == null) {\n throw new RuntimeError('BadArguments', 'A valid Formatter must be provide to draw offsets by ticks.');\n }\n const l_shift_px = ppt * ((_a = options.left_shift_ticks) !== null && _a !== void 0 ? _a : 0);\n const r_shift_px = ppt * ((_b = options.right_shift_ticks) !== null && _b !== void 0 ? _b : 0);\n const hairpin_options = {\n height: options.height,\n y_shift: options.y_shift,\n left_shift_px: l_shift_px,\n right_shift_px: r_shift_px,\n right_shift_ticks: 0,\n left_shift_ticks: 0,\n };\n new StaveHairpin({\n first_note: notes.first_note,\n last_note: notes.last_note,\n }, type)\n .setContext(ctx)\n .setRenderOptions(hairpin_options)\n .setPosition(position)\n .draw();\n }\n setPosition(position) {\n if (position === Modifier.Position.ABOVE || position === Modifier.Position.BELOW) {\n this.position = position;\n }\n return this;\n }\n setRenderOptions(options) {\n if (options.height != null &&\n options.y_shift != null &&\n options.left_shift_px != null &&\n options.right_shift_px != null) {\n this.render_options = options;\n }\n return this;\n }\n /**\n * Set the notes to attach this hairpin to.\n *\n * @param {!Object} notes The start and end notes.\n */\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Hairpin needs to have either first_note or last_note set.');\n }\n this.notes = notes;\n this.first_note = notes.first_note;\n this.last_note = notes.last_note;\n return this;\n }\n renderHairpin(params) {\n const ctx = this.checkContext();\n let dis = this.render_options.y_shift + 20;\n let y_shift = params.first_y;\n if (this.position === Modifier.Position.ABOVE) {\n dis = -dis + 30;\n y_shift = params.first_y - params.staff_height;\n }\n const l_shift = this.render_options.left_shift_px;\n const r_shift = this.render_options.right_shift_px;\n ctx.beginPath();\n switch (this.hairpin) {\n case StaveHairpin.type.CRESC:\n ctx.moveTo(params.last_x + r_shift, y_shift + dis);\n ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height / 2 + dis);\n ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height + dis);\n break;\n case StaveHairpin.type.DECRESC:\n ctx.moveTo(params.first_x + l_shift, y_shift + dis);\n ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height / 2 + dis);\n ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height + dis);\n break;\n default:\n // Default is NONE, so nothing to draw\n break;\n }\n ctx.stroke();\n ctx.closePath();\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const firstNote = this.first_note;\n const lastNote = this.last_note;\n if (!firstNote || !lastNote)\n throw new RuntimeError('NoNote', 'Notes required to draw');\n const start = firstNote.getModifierStartXY(this.position, 0);\n const end = lastNote.getModifierStartXY(this.position, 0);\n this.renderHairpin({\n first_x: start.x,\n last_x: end.x,\n first_y: firstNote.checkStave().getY() + firstNote.checkStave().getHeight(),\n last_y: lastNote.checkStave().getY() + lastNote.checkStave().getHeight(),\n staff_height: firstNote.checkStave().getHeight(),\n });\n }\n}\nStaveHairpin.type = {\n CRESC: 1,\n DECRESC: 2,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This file implements `StaveLine` which are simply lines that connect\n// two notes. This object is highly configurable, see the `render_options`.\n// A simple line is often used for notating glissando articulations, but you\n// can format a `StaveLine` with arrows or colors for more pedagogical\n// purposes, such as diagrams.\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { TextJustification } from './textnote';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n// Attribution: Arrow rendering implementations based off of\n// Patrick Horgan's article, \"Drawing lines and arcs with\n// arrow heads on HTML5 Canvas\"\n//\n// Draw an arrow head that connects between 3 coordinates.\nfunction drawArrowHead(ctx, x0, y0, x1, y1, x2, y2) {\n // all cases do this.\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.lineTo(x0, y0);\n ctx.closePath();\n ctx.fill();\n}\nexport class StaveLine extends Element {\n // Initialize the StaveLine with the given `notes`.\n //\n // `notes` is a struct that has:\n //\n // ```\n // {\n // first_note: Note,\n // last_note: Note,\n // first_indices: [n1, n2, n3],\n // last_indices: [n1, n2, n3]\n // }\n // ```\n constructor(notes) {\n super();\n this.setNotes(notes);\n this.text = '';\n this.resetFont();\n this.render_options = {\n // Space to add to the left or the right\n padding_left: 4,\n padding_right: 3,\n // The width of the line in pixels\n line_width: 1,\n // An array of line/space lengths. (TODO/QUESTION: Is this supported in SVG?).\n line_dash: undefined,\n // Can draw rounded line end, instead of a square. (TODO/QUESTION: Is this supported in SVG?).\n rounded_end: true,\n // The color of the line and arrowheads\n color: undefined,\n // Flags to draw arrows on each end of the line\n draw_start_arrow: false,\n draw_end_arrow: false,\n // The length of the arrowhead sides\n arrowhead_length: 10,\n // The angle of the arrowhead\n arrowhead_angle: Math.PI / 8,\n // The position of the text\n text_position_vertical: StaveLine.TextVerticalPosition.TOP,\n text_justification: StaveLine.TextJustification.CENTER,\n };\n }\n static get CATEGORY() {\n return Category.StaveLine;\n }\n // The the annotation for the `StaveLine`\n setText(text) {\n this.text = text;\n return this;\n }\n // Set the notes for the `StaveLine`\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Notes needs to have either first_note or last_note set.');\n }\n if (!notes.first_indices)\n notes.first_indices = [0];\n if (!notes.last_indices)\n notes.last_indices = [0];\n if (notes.first_indices.length !== notes.last_indices.length) {\n throw new RuntimeError('BadArguments', 'Connected notes must have same number of indices.');\n }\n this.notes = notes;\n this.first_note = notes.first_note;\n this.first_indices = notes.first_indices;\n this.last_note = notes.last_note;\n this.last_indices = notes.last_indices;\n return this;\n }\n // Apply the style of the `StaveLine` to the context\n applyLineStyle() {\n const ctx = this.checkContext();\n const render_options = this.render_options;\n if (render_options.line_dash) {\n ctx.setLineDash(render_options.line_dash);\n }\n if (render_options.line_width) {\n ctx.setLineWidth(render_options.line_width);\n }\n if (render_options.rounded_end) {\n ctx.setLineCap('round');\n }\n else {\n ctx.setLineCap('square');\n }\n }\n // Apply the text styling to the context\n applyFontStyle() {\n const ctx = this.checkContext();\n ctx.setFont(this.textFont);\n const render_options = this.render_options;\n const color = render_options.color;\n if (color) {\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n }\n }\n // Helper function to draw a line with arrow heads\n drawArrowLine(ctx, pt1, pt2) {\n const both_arrows = this.render_options.draw_start_arrow && this.render_options.draw_end_arrow;\n const x1 = pt1.x;\n const y1 = pt1.y;\n const x2 = pt2.x;\n const y2 = pt2.y;\n // For ends with arrow we actually want to stop before we get to the arrow\n // so that wide lines won't put a flat end on the arrow.\n const distance = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n const ratio = (distance - this.render_options.arrowhead_length / 3) / distance;\n let end_x;\n let end_y;\n let start_x;\n let start_y;\n if (this.render_options.draw_end_arrow || both_arrows) {\n end_x = Math.round(x1 + (x2 - x1) * ratio);\n end_y = Math.round(y1 + (y2 - y1) * ratio);\n }\n else {\n end_x = x2;\n end_y = y2;\n }\n if (this.render_options.draw_start_arrow || both_arrows) {\n start_x = x1 + (x2 - x1) * (1 - ratio);\n start_y = y1 + (y2 - y1) * (1 - ratio);\n }\n else {\n start_x = x1;\n start_y = y1;\n }\n if (this.render_options.color) {\n ctx.setStrokeStyle(this.render_options.color);\n ctx.setFillStyle(this.render_options.color);\n }\n // Draw the shaft of the arrow\n ctx.beginPath();\n ctx.moveTo(start_x, start_y);\n ctx.lineTo(end_x, end_y);\n ctx.stroke();\n ctx.closePath();\n // calculate the angle of the line\n const line_angle = Math.atan2(y2 - y1, x2 - x1);\n // h is the line length of a side of the arrow head\n const h = Math.abs(this.render_options.arrowhead_length / Math.cos(this.render_options.arrowhead_angle));\n let angle1;\n let angle2;\n let top_x;\n let top_y;\n let bottom_x;\n let bottom_y;\n if (this.render_options.draw_end_arrow || both_arrows) {\n angle1 = line_angle + Math.PI + this.render_options.arrowhead_angle;\n top_x = x2 + Math.cos(angle1) * h;\n top_y = y2 + Math.sin(angle1) * h;\n angle2 = line_angle + Math.PI - this.render_options.arrowhead_angle;\n bottom_x = x2 + Math.cos(angle2) * h;\n bottom_y = y2 + Math.sin(angle2) * h;\n drawArrowHead(ctx, top_x, top_y, x2, y2, bottom_x, bottom_y);\n }\n if (this.render_options.draw_start_arrow || both_arrows) {\n angle1 = line_angle + this.render_options.arrowhead_angle;\n top_x = x1 + Math.cos(angle1) * h;\n top_y = y1 + Math.sin(angle1) * h;\n angle2 = line_angle - this.render_options.arrowhead_angle;\n bottom_x = x1 + Math.cos(angle2) * h;\n bottom_y = y1 + Math.sin(angle2) * h;\n drawArrowHead(ctx, top_x, top_y, x1, y1, bottom_x, bottom_y);\n }\n }\n // Renders the `StaveLine` on the context\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const first_note = this.first_note;\n const last_note = this.last_note;\n const render_options = this.render_options;\n ctx.save();\n this.applyLineStyle();\n // Cycle through each set of indices and draw lines\n let start_position = { x: 0, y: 0 };\n let end_position = { x: 0, y: 0 };\n this.first_indices.forEach((first_index, i) => {\n const last_index = this.last_indices[i];\n // Get initial coordinates for the start/end of the line\n start_position = first_note.getModifierStartXY(2, first_index);\n end_position = last_note.getModifierStartXY(1, last_index);\n const upwards_slope = start_position.y > end_position.y;\n // Adjust `x` coordinates for modifiers\n start_position.x += first_note.getMetrics().modRightPx + render_options.padding_left;\n end_position.x -= last_note.getMetrics().modLeftPx + render_options.padding_right;\n // Adjust first `x` coordinates for displacements\n const notehead_width = first_note.getGlyph().getWidth();\n const first_displaced = first_note.getKeyProps()[first_index].displaced;\n if (first_displaced && first_note.getStemDirection() === 1) {\n start_position.x += notehead_width + render_options.padding_left;\n }\n // Adjust last `x` coordinates for displacements\n const last_displaced = last_note.getKeyProps()[last_index].displaced;\n if (last_displaced && last_note.getStemDirection() === -1) {\n end_position.x -= notehead_width + render_options.padding_right;\n }\n // Adjust y position better if it's not coming from the center of the note\n start_position.y += upwards_slope ? -3 : 1;\n end_position.y += upwards_slope ? 2 : 0;\n this.drawArrowLine(ctx, start_position, end_position);\n });\n ctx.restore();\n // Determine the x coordinate where to start the text\n const text_width = ctx.measureText(this.text).width;\n const justification = render_options.text_justification;\n let x = 0;\n if (justification === StaveLine.TextJustification.LEFT) {\n x = start_position.x;\n }\n else if (justification === StaveLine.TextJustification.CENTER) {\n const delta_x = end_position.x - start_position.x;\n const center_x = delta_x / 2 + start_position.x;\n x = center_x - text_width / 2;\n }\n else if (justification === StaveLine.TextJustification.RIGHT) {\n x = end_position.x - text_width;\n }\n // Determine the y value to start the text\n let y = 0;\n const vertical_position = render_options.text_position_vertical;\n if (vertical_position === StaveLine.TextVerticalPosition.TOP) {\n y = first_note.checkStave().getYForTopText();\n }\n else if (vertical_position === StaveLine.TextVerticalPosition.BOTTOM) {\n y = first_note.checkStave().getYForBottomText(Tables.TEXT_HEIGHT_OFFSET_HACK);\n }\n // Draw the text\n ctx.save();\n this.applyFontStyle();\n ctx.fillText(this.text, x, y);\n ctx.restore();\n return this;\n }\n}\n/** Default text font. */\nStaveLine.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n// Text Positioning\nStaveLine.TextVerticalPosition = {\n TOP: 1,\n BOTTOM: 2,\n};\nStaveLine.TextJustification = TextJustification;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// A base class for stave modifiers (e.g. clefs, key signatures)\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { defined } from './util';\nexport var StaveModifierPosition;\n(function (StaveModifierPosition) {\n StaveModifierPosition[StaveModifierPosition[\"CENTER\"] = 0] = \"CENTER\";\n StaveModifierPosition[StaveModifierPosition[\"LEFT\"] = 1] = \"LEFT\";\n StaveModifierPosition[StaveModifierPosition[\"RIGHT\"] = 2] = \"RIGHT\";\n StaveModifierPosition[StaveModifierPosition[\"ABOVE\"] = 3] = \"ABOVE\";\n StaveModifierPosition[StaveModifierPosition[\"BELOW\"] = 4] = \"BELOW\";\n StaveModifierPosition[StaveModifierPosition[\"BEGIN\"] = 5] = \"BEGIN\";\n StaveModifierPosition[StaveModifierPosition[\"END\"] = 6] = \"END\";\n})(StaveModifierPosition || (StaveModifierPosition = {}));\nexport class StaveModifier extends Element {\n constructor() {\n super();\n this.width = 0;\n this.x = 0;\n this.padding = 10;\n this.position = StaveModifierPosition.ABOVE;\n }\n static get CATEGORY() {\n return Category.StaveModifier;\n }\n static get Position() {\n return StaveModifierPosition;\n }\n getPosition() {\n return this.position;\n }\n setPosition(position) {\n this.position = position;\n return this;\n }\n getStave() {\n return this.stave;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getWidth() {\n return this.width;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getX() {\n return this.x;\n }\n setX(x) {\n this.x = x;\n return this;\n }\n placeGlyphOnLine(glyph, stave, line, customShift = 0) {\n glyph.setYShift(stave.getYForLine(line !== null && line !== void 0 ? line : 0) - stave.getYForGlyphs() + customShift);\n }\n getPadding(index) {\n return index !== undefined && index < 2 ? 0 : this.padding;\n }\n setPadding(padding) {\n this.padding = padding;\n return this;\n }\n setLayoutMetrics(layoutMetrics) {\n this.layoutMetrics = layoutMetrics;\n return this;\n }\n getLayoutMetrics() {\n return this.layoutMetrics;\n }\n // eslint-disable-next-line\n draw(...args) {\n // DO NOTHING.\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This file implements notes for standard notation. This consists of one or\n// more `NoteHeads`, an optional stem, and an optional flag.\n//\n// Throughout these comments, a \"note\" refers to the entire `StaveNote`,\n// and a \"key\" refers to a specific pitch/notehead within a note.\n//\n// See `tests/stavenote_tests.ts` for usage examples.\nimport { BoundingBox } from './boundingbox';\nimport { Modifier } from './modifier';\nimport { NoteHead } from './notehead';\nimport { Stem } from './stem';\nimport { StemmableNote } from './stemmablenote';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log, midLine, RuntimeError } from './util';\nfunction showDeprecationWarningForNoteHeads() {\n // eslint-disable-next-line\n console.warn('StaveNote.note_heads is deprecated. Use StaveNote.noteHeads instead.', 'This accessor will be removed in VexFlow 5.0.');\n}\n// To enable logging for this class. Set `Vex.Flow.StaveNote.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (StaveNote.DEBUG)\n log('Vex.Flow.StaveNote', args);\n}\nconst isInnerNoteIndex = (note, index) => index === (note.getStemDirection() === Stem.UP ? note.keyProps.length - 1 : 0);\n// Helper methods for rest positioning in ModifierContext.\nfunction shiftRestVertical(rest, note, dir) {\n const delta = dir;\n rest.line += delta;\n rest.maxLine += delta;\n rest.minLine += delta;\n rest.note.setKeyLine(0, rest.note.getKeyLine(0) + delta);\n}\n// Called from formatNotes :: center a rest between two notes\nfunction centerRest(rest, noteU, noteL) {\n const delta = rest.line - midLine(noteU.minLine, noteL.maxLine);\n rest.note.setKeyLine(0, rest.note.getKeyLine(0) - delta);\n rest.line -= delta;\n rest.maxLine -= delta;\n rest.minLine -= delta;\n}\nexport class StaveNote extends StemmableNote {\n constructor(noteStruct) {\n var _a, _b, _c;\n super(noteStruct);\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // INSTANCE MEMBERS\n this.minLine = 0;\n this.maxLine = 0;\n // Sorted variant of keyProps used internally\n this.sortedKeyProps = [];\n this.ledgerLineStyle = {};\n this.clef = (_a = noteStruct.clef) !== null && _a !== void 0 ? _a : 'treble';\n this.octave_shift = (_b = noteStruct.octave_shift) !== null && _b !== void 0 ? _b : 0;\n // Pull note rendering properties.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n // if true, displace note to right\n this.displaced = false;\n this.dot_shiftY = 0;\n // for displaced ledger lines\n this.use_default_head_x = false;\n // Drawing\n this._noteHeads = [];\n this.modifiers = [];\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads and rests\n glyph_font_scale: noteStruct.glyph_font_scale || Tables.NOTATION_FONT_SCALE, \n // number of stroke px to the left and right of head\n stroke_px: noteStruct.stroke_px || StaveNote.LEDGER_LINE_OFFSET });\n this.calculateKeyProps();\n this.buildStem();\n // Set the stem direction\n if (noteStruct.auto_stem) {\n this.autoStem();\n }\n else {\n this.setStemDirection((_c = noteStruct.stem_direction) !== null && _c !== void 0 ? _c : Stem.UP);\n }\n this.reset();\n this.buildFlag();\n }\n static get CATEGORY() {\n return Category.StaveNote;\n }\n /**\n * @deprecated Use Stem.UP.\n */\n static get STEM_UP() {\n return Stem.UP;\n }\n /**\n * @deprecated Use Stem.DOWN.\n */\n static get STEM_DOWN() {\n return Stem.DOWN;\n }\n static get LEDGER_LINE_OFFSET() {\n return 3;\n }\n static get minNoteheadPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Format notes inside a ModifierContext. */\n static format(notes, state) {\n if (!notes || notes.length < 2)\n return false;\n const notesList = [];\n for (let i = 0; i < notes.length; i++) {\n // Formatting uses sortedKeyProps to calculate line and minL.\n const props = notes[i].sortedKeyProps;\n const line = props[0].keyProps.line;\n let minL = props[props.length - 1].keyProps.line;\n const stemDirection = notes[i].getStemDirection();\n const stemMax = notes[i].getStemLength() / 10;\n const stemMin = notes[i].getStemMinimumLength() / 10;\n let maxL;\n if (notes[i].isRest()) {\n maxL = line + notes[i].glyph.line_above;\n minL = line - notes[i].glyph.line_below;\n }\n else {\n maxL =\n stemDirection === 1 ? props[props.length - 1].keyProps.line + stemMax : props[props.length - 1].keyProps.line;\n minL = stemDirection === 1 ? props[0].keyProps.line : props[0].keyProps.line - stemMax;\n }\n notesList.push({\n line: props[0].keyProps.line,\n maxLine: maxL,\n minLine: minL,\n isrest: notes[i].isRest(),\n stemDirection: stemDirection,\n stemMax,\n stemMin,\n voice_shift: notes[i].getVoiceShiftWidth(),\n is_displaced: notes[i].isDisplaced(),\n note: notes[i],\n });\n }\n let voices = 0;\n let noteU = undefined;\n let noteM = undefined;\n let noteL = undefined;\n const draw = [false, false, false];\n for (let i = 0; i < notesList.length; i++) {\n draw[i] = notesList[i].note.render_options.draw == false ? false : true;\n }\n if (draw[0] && draw[1] && draw[2]) {\n // Three visible notes\n voices = 3;\n noteU = notesList[0];\n noteM = notesList[1];\n noteL = notesList[2];\n }\n else if (draw[0] && draw[1]) {\n // Two visible notes, 0 & 1\n voices = 2;\n noteU = notesList[0];\n noteL = notesList[1];\n }\n else if (draw[0] && draw[2]) {\n // Two visible notes, 0 & 2\n voices = 2;\n noteU = notesList[0];\n noteL = notesList[2];\n }\n else if (draw[1] && draw[2]) {\n // Two visible notes, 1 & 2\n voices = 2;\n noteU = notesList[1];\n noteL = notesList[2];\n }\n else {\n // No shift required for less than 2 visible notes\n return true;\n }\n // for two voice backward compatibility, ensure upper voice is stems up\n // for three voices, the voices must be in order (upper, middle, lower)\n if (voices === 2 && noteU.stemDirection === -1 && noteL.stemDirection === 1) {\n noteU = notesList[1];\n noteL = notesList[0];\n }\n const voiceXShift = Math.max(noteU.voice_shift, noteL.voice_shift);\n let xShift = 0;\n // Test for two voice note intersection\n if (voices === 2) {\n const lineSpacing = noteU.note.hasStem() && noteL.note.hasStem() && noteU.stemDirection === noteL.stemDirection ? 0.0 : 0.5;\n if (noteL.isrest && noteU.isrest && noteU.note.duration === noteL.note.duration) {\n noteL.note.render_options.draw = false;\n }\n else if (noteU.minLine <= noteL.maxLine + lineSpacing) {\n if (noteU.isrest) {\n // shift rest up\n shiftRestVertical(noteU, noteL, 1);\n }\n else if (noteL.isrest) {\n // shift rest down\n shiftRestVertical(noteL, noteU, -1);\n }\n else {\n //Instead of shifting notes, remove the appropriate flag\n //If we are sharing a line, switch one notes stem direction.\n //If we are sharing a line and in the same voice, only then offset one note\n const lineDiff = Math.abs(noteU.line - noteL.line);\n if (noteU.note.hasStem() && noteL.note.hasStem()) {\n //If we have different dot values, must offset\n //Or If we have a white mixed with a black notehead, must offset\n let whiteNoteHeadCount = 0;\n let blackNoteHeadCount = 0;\n if (Tables.durationToNumber(noteU.note.duration) === 2) {\n whiteNoteHeadCount++;\n }\n else if (Tables.durationToNumber(noteU.note.duration) > 2) {\n blackNoteHeadCount++;\n }\n if (Tables.durationToNumber(noteL.note.duration) === 2) {\n whiteNoteHeadCount++;\n }\n else if (Tables.durationToNumber(noteL.note.duration) > 2) {\n blackNoteHeadCount++;\n }\n if ((whiteNoteHeadCount !== 2 && blackNoteHeadCount !== 2) ||\n noteU.note.getModifiersByType(Category.Dot).length !== noteL.note.getModifiersByType(Category.Dot).length) {\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (lineDiff < 1 && lineDiff > 0) {\n //if the notes are quite close but not on the same line, shift\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (noteU.note.voice !== noteL.note.voice) {\n //If we are not in the same voice\n if (noteU.stemDirection === noteL.stemDirection) {\n if (noteU.line != noteL.line) {\n xShift = voiceXShift + 2;\n noteU.note.setXShift(xShift);\n }\n else {\n //same line, swap stem direction for one note\n if (noteL.stemDirection === 1) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n }\n }\n } //Very close whole notes\n }\n else if (lineDiff < 1) {\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (noteU.note.hasStem()) {\n noteU.stemDirection = -noteU.note.getStemDirection();\n noteU.note.setStemDirection(noteU.stemDirection);\n }\n else if (noteL.note.hasStem()) {\n noteL.stemDirection = -noteL.note.getStemDirection();\n noteL.note.setStemDirection(noteL.stemDirection);\n }\n }\n }\n // format complete\n state.right_shift += xShift;\n return true;\n }\n if (!noteM)\n throw new RuntimeError('InvalidState', 'noteM not defined.');\n // For three voices, test if rests can be repositioned\n //\n // Special case 1 :: middle voice rest between two notes\n //\n if (noteM.isrest && !noteU.isrest && !noteL.isrest) {\n if (noteU.minLine <= noteM.maxLine || noteM.minLine <= noteL.maxLine) {\n const restHeight = noteM.maxLine - noteM.minLine;\n const space = noteU.minLine - noteL.maxLine;\n if (restHeight < space) {\n // center middle voice rest between the upper and lower voices\n centerRest(noteM, noteU, noteL);\n }\n else {\n xShift = voiceXShift + 2; // shift middle rest right\n noteM.note.setXShift(xShift);\n if (noteL.note.hasBeam() === false) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n if (noteU.minLine <= noteL.maxLine && noteU.note.hasBeam() === false) {\n noteU.stemDirection = 1;\n noteU.note.setStemDirection(1);\n }\n }\n // format complete\n state.right_shift += xShift;\n return true;\n }\n }\n // Special case 2 :: all voices are rests\n if (noteU.isrest && noteM.isrest && noteL.isrest) {\n // Hide upper voice rest\n noteU.note.render_options.draw = false;\n // Hide lower voice rest\n noteL.note.render_options.draw = false;\n // format complete\n state.right_shift += xShift;\n return true;\n }\n // Test if any other rests can be repositioned\n if (noteM.isrest && noteU.isrest && noteM.minLine <= noteL.maxLine) {\n // Hide middle voice rest\n noteM.note.render_options.draw = false;\n }\n if (noteM.isrest && noteL.isrest && noteU.minLine <= noteM.maxLine) {\n // Hide middle voice rest\n noteM.note.render_options.draw = false;\n }\n if (noteU.isrest && noteU.minLine <= noteM.maxLine) {\n // shift upper voice rest up;\n shiftRestVertical(noteU, noteM, 1);\n }\n if (noteL.isrest && noteM.minLine <= noteL.maxLine) {\n // shift lower voice rest down\n shiftRestVertical(noteL, noteM, -1);\n }\n // If middle voice intersects upper or lower voice\n if (noteU.minLine <= noteM.maxLine + 0.5 || noteM.minLine <= noteL.maxLine) {\n // shift middle note right\n xShift = voiceXShift + 2;\n noteM.note.setXShift(xShift);\n if (noteL.note.hasBeam() === false) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n if (noteU.minLine <= noteL.maxLine && noteU.note.hasBeam() === false) {\n noteU.stemDirection = 1;\n noteU.note.setStemDirection(1);\n }\n }\n state.right_shift += xShift;\n return true;\n }\n static postFormat(notes) {\n if (!notes)\n return false;\n notes.forEach((note) => note.postFormat());\n return true;\n }\n reset() {\n super.reset();\n // Save prior noteHead styles & reapply them after making new noteheads.\n const noteHeadStyles = this._noteHeads.map((noteHead) => noteHead.getStyle());\n this.buildNoteHeads();\n this._noteHeads.forEach((noteHead, index) => {\n const noteHeadStyle = noteHeadStyles[index];\n if (noteHeadStyle)\n noteHead.setStyle(noteHeadStyle);\n });\n const stave = this.stave;\n if (stave) {\n this._noteHeads.forEach((head) => head.setStave(stave));\n }\n this.calcNoteDisplacements();\n return this;\n }\n setBeam(beam) {\n this.beam = beam;\n this.calcNoteDisplacements();\n // Update stem extension if a beam is assigned.\n if (this.stem) {\n this.stem.setExtension(this.getStemExtension());\n }\n return this;\n }\n // Builds a `Stem` for the note\n buildStem() {\n this.setStem(new Stem({ hide: !!this.isRest() }));\n return this;\n }\n // Builds a `NoteHead` for each key in the note\n buildNoteHeads() {\n this._noteHeads = [];\n const stemDirection = this.getStemDirection();\n const keys = this.getKeys();\n let lastLine = undefined;\n let lineDiff = undefined;\n let displaced = false;\n // Draw notes from bottom to top.\n // For down-stem notes, we draw from top to bottom.\n let start;\n let end;\n let step;\n if (stemDirection === Stem.UP) {\n start = 0;\n end = keys.length;\n step = 1;\n }\n else {\n start = keys.length - 1;\n end = -1;\n step = -1;\n }\n for (let i = start; i !== end; i += step) {\n // Building noteheads rely on sortedKeNotes in order to calculate the displacements\n const noteProps = this.sortedKeyProps[i].keyProps;\n const line = noteProps.line;\n // Keep track of last line with a note head, so that consecutive heads\n // are correctly displaced.\n if (lastLine === undefined) {\n lastLine = line;\n }\n else {\n lineDiff = Math.abs(lastLine - line);\n if (lineDiff === 0 || lineDiff === 0.5) {\n displaced = !displaced;\n }\n else {\n displaced = false;\n this.use_default_head_x = true;\n }\n }\n lastLine = line;\n const notehead = new NoteHead({\n duration: this.duration,\n note_type: this.noteType,\n displaced,\n stem_direction: stemDirection,\n custom_glyph_code: noteProps.code,\n glyph_font_scale: this.render_options.glyph_font_scale,\n x_shift: noteProps.shift_right,\n stem_up_x_offset: noteProps.stem_up_x_offset,\n stem_down_x_offset: noteProps.stem_down_x_offset,\n line: noteProps.line,\n });\n this.addChildElement(notehead);\n this._noteHeads[this.sortedKeyProps[i].index] = notehead;\n }\n }\n // Automatically sets the stem direction based on the keys in the note\n autoStem() {\n this.setStemDirection(this.calculateOptimalStemDirection());\n }\n calculateOptimalStemDirection() {\n // Figure out optimal stem direction based on given notes\n // minLine & maxLine rely on sortedKeyProps\n this.minLine = this.sortedKeyProps[0].keyProps.line;\n this.maxLine = this.sortedKeyProps[this.keyProps.length - 1].keyProps.line;\n const MIDDLE_LINE = 3;\n const decider = (this.minLine + this.maxLine) / 2;\n const stemDirection = decider < MIDDLE_LINE ? Stem.UP : Stem.DOWN;\n return stemDirection;\n }\n // Calculates and stores the properties for each key in the note\n calculateKeyProps() {\n let lastLine;\n for (let i = 0; i < this.keys.length; ++i) {\n const key = this.keys[i];\n // All rests use the same position on the line.\n // if (this.glyph.rest) key = this.glyph.position;\n if (this.glyph.rest)\n this.glyph.position = key;\n const options = { octave_shift: this.octave_shift || 0, duration: this.duration };\n const props = Tables.keyProperties(key, this.clef, options);\n if (!props) {\n throw new RuntimeError('BadArguments', `Invalid key for note properties: ${key}`);\n }\n // Override line placement for default rests\n if (props.key === 'R') {\n if (this.duration === '1' || this.duration === 'w') {\n props.line = 4;\n }\n else {\n props.line = 3;\n }\n }\n // Calculate displacement of this note\n const line = props.line;\n if (lastLine == undefined) {\n lastLine = line;\n }\n else {\n if (Math.abs(lastLine - line) === 0.5) {\n this.displaced = true;\n props.displaced = true;\n // Have to mark the previous note as\n // displaced as well, for modifier placement\n if (this.keyProps.length > 0) {\n this.keyProps[i - 1].displaced = true;\n }\n }\n }\n lastLine = line;\n this.keyProps.push(props);\n }\n // Sort the notes from lowest line to highest line in sortedKeyProps\n // Warn no longer required as keyProps remains unsorted\n this.keyProps.forEach((keyProps, index) => {\n this.sortedKeyProps.push({ keyProps, index });\n });\n this.sortedKeyProps.sort((a, b) => a.keyProps.line - b.keyProps.line);\n }\n // Get the `BoundingBox` for the entire note\n getBoundingBox() {\n var _a, _b;\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getBoundingBox on an unformatted note.\");\n }\n const { width: w, modLeftPx, leftDisplacedHeadPx } = this.getMetrics();\n const x = this.getAbsoluteX() - modLeftPx - leftDisplacedHeadPx;\n let minY = 0;\n let maxY = 0;\n const halfLineSpacing = ((_b = (_a = this.getStave()) === null || _a === void 0 ? void 0 : _a.getSpacingBetweenLines()) !== null && _b !== void 0 ? _b : 0) / 2;\n const lineSpacing = halfLineSpacing * 2;\n if (this.isRest()) {\n const y = this.ys[0];\n const frac = Tables.durationToFraction(this.duration);\n if (frac.equals(1) || frac.equals(2)) {\n minY = y - halfLineSpacing;\n maxY = y + halfLineSpacing;\n }\n else {\n minY = y - this.glyph.line_above * lineSpacing;\n maxY = y + this.glyph.line_below * lineSpacing;\n }\n }\n else if (this.glyph.stem) {\n const ys = this.getStemExtents();\n ys.baseY += halfLineSpacing * this.getStemDirection();\n minY = Math.min(ys.topY, ys.baseY);\n maxY = Math.max(ys.topY, ys.baseY);\n }\n else {\n minY = 0;\n maxY = 0;\n for (let i = 0; i < this.ys.length; ++i) {\n const yy = this.ys[i];\n if (i === 0) {\n minY = yy;\n maxY = yy;\n }\n else {\n minY = Math.min(yy, minY);\n maxY = Math.max(yy, maxY);\n }\n }\n minY -= halfLineSpacing;\n maxY += halfLineSpacing;\n }\n return new BoundingBox(x, minY, w, maxY - minY);\n }\n // Gets the line number of the bottom note in the chord.\n // If `isTopNote` is `true` then get the top note's line number instead\n getLineNumber(isTopNote) {\n if (!this.keyProps.length) {\n throw new RuntimeError('NoKeyProps', \"Can't get bottom note line, because note is not initialized properly.\");\n }\n let resultLine = this.keyProps[0].line;\n // No precondition assumed for sortedness of keyProps array\n for (let i = 0; i < this.keyProps.length; i++) {\n const thisLine = this.keyProps[i].line;\n if (isTopNote) {\n if (thisLine > resultLine)\n resultLine = thisLine;\n }\n else {\n if (thisLine < resultLine)\n resultLine = thisLine;\n }\n }\n return resultLine;\n }\n /**\n * @returns true if this note is a type of rest. Rests don't have pitches, but take up space in the score.\n */\n isRest() {\n return this.glyph.rest;\n }\n // Determine if the current note is a chord\n isChord() {\n return !this.isRest() && this.keys.length > 1;\n }\n // Determine if the `StaveNote` has a stem\n hasStem() {\n return this.glyph.stem;\n }\n hasFlag() {\n return super.hasFlag() && !this.isRest();\n }\n getStemX() {\n if (this.noteType === 'r') {\n return this.getCenterGlyphX();\n }\n else {\n // We adjust the origin of the stem because we want the stem left-aligned\n // with the notehead if stemmed-down, and right-aligned if stemmed-up\n return super.getStemX() + (this.stem_direction ? Stem.WIDTH / (2 * -this.stem_direction) : 0);\n }\n }\n // Get the `y` coordinate for text placed on the top/bottom of a\n // note at a desired `text_line`\n getYForTopText(textLine) {\n const extents = this.getStemExtents();\n return Math.min(this.checkStave().getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1));\n }\n getYForBottomText(textLine) {\n const extents = this.getStemExtents();\n return Math.max(this.checkStave().getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine);\n }\n // Sets the current note to the provided `stave`. This applies\n // `y` values to the `NoteHeads`.\n setStave(stave) {\n super.setStave(stave);\n const ys = this._noteHeads.map((notehead) => {\n notehead.setStave(stave);\n return notehead.getY();\n });\n this.setYs(ys);\n if (this.stem) {\n const { y_top, y_bottom } = this.getNoteHeadBounds();\n this.stem.setYBounds(y_top, y_bottom);\n }\n return this;\n }\n // Check if note is shifted to the right\n isDisplaced() {\n return this.displaced;\n }\n // Sets whether shift note to the right. `displaced` is a `boolean`\n setNoteDisplaced(displaced) {\n this.displaced = displaced;\n return this;\n }\n // Get the starting `x` coordinate for a `StaveTie`\n getTieRightX() {\n let tieStartX = this.getAbsoluteX();\n tieStartX += this.getGlyphWidth() + this.x_shift + this.rightDisplacedHeadPx;\n if (this.modifierContext)\n tieStartX += this.modifierContext.getRightShift();\n return tieStartX;\n }\n // Get the ending `x` coordinate for a `StaveTie`\n getTieLeftX() {\n let tieEndX = this.getAbsoluteX();\n tieEndX += this.x_shift - this.leftDisplacedHeadPx;\n return tieEndX;\n }\n // Get the stave line on which to place a rest\n getLineForRest() {\n let restLine = this.keyProps[0].line;\n if (this.keyProps.length > 1) {\n const lastLine = this.keyProps[this.keyProps.length - 1].line;\n const top = Math.max(restLine, lastLine);\n const bot = Math.min(restLine, lastLine);\n restLine = midLine(top, bot);\n }\n return restLine;\n }\n // Get the default `x` and `y` coordinates for the provided `position`\n // and key `index`\n getModifierStartXY(position, index, options = {}) {\n var _a, _b;\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-Values calculated for this note.');\n }\n const { ABOVE, BELOW, LEFT, RIGHT } = Modifier.Position;\n let x = 0;\n if (position === LEFT) {\n // FIXME: Left modifier padding, move to font file\n x = -1 * 2;\n }\n else if (position === RIGHT) {\n // FIXME: Right modifier padding, move to font file\n x = this.getGlyphWidth() + this.x_shift + 2;\n if (this.stem_direction === Stem.UP &&\n this.hasFlag() &&\n (options.forceFlagRight || isInnerNoteIndex(this, index))) {\n x += (_b = (_a = this === null || this === void 0 ? void 0 : this.flag) === null || _a === void 0 ? void 0 : _a.getMetrics().width) !== null && _b !== void 0 ? _b : 0;\n }\n }\n else if (position === BELOW || position === ABOVE) {\n x = this.getGlyphWidth() / 2;\n }\n return {\n x: this.getAbsoluteX() + x,\n y: this.ys[index],\n };\n }\n // Sets the style of the complete StaveNote, including all keys\n // and the stem.\n setStyle(style) {\n return super.setGroupStyle(style);\n }\n setStemStyle(style) {\n const stem = this.getStem();\n if (stem)\n stem.setStyle(style);\n return this;\n }\n getStemStyle() {\n var _a;\n return (_a = this.stem) === null || _a === void 0 ? void 0 : _a.getStyle();\n }\n setLedgerLineStyle(style) {\n this.ledgerLineStyle = style;\n }\n getLedgerLineStyle() {\n return this.ledgerLineStyle;\n }\n setFlagStyle(style) {\n var _a;\n (_a = this.flag) === null || _a === void 0 ? void 0 : _a.setStyle(style);\n }\n getFlagStyle() {\n var _a;\n return (_a = this.flag) === null || _a === void 0 ? void 0 : _a.getStyle();\n }\n // Sets the notehead at `index` to the provided coloring `style`.\n //\n // `style` is an `object` with the following properties: `shadowColor`,\n // `shadowBlur`, `fillStyle`, `strokeStyle`\n setKeyStyle(index, style) {\n this._noteHeads[index].setStyle(style);\n return this;\n }\n setKeyLine(index, line) {\n this.keyProps[index].line = line;\n this.reset();\n return this;\n }\n getKeyLine(index) {\n return this.keyProps[index].line;\n }\n // Get the width of the note if it is displaced. Used for `Voice`\n // formatting\n getVoiceShiftWidth() {\n // TODO: may need to accommodate for dot here.\n return this.getGlyphWidth() * (this.displaced ? 2 : 1);\n }\n // Calculates and sets the extra pixels to the left or right\n // if the note is displaced.\n calcNoteDisplacements() {\n this.setLeftDisplacedHeadPx(this.displaced && this.stem_direction === Stem.DOWN ? this.getGlyphWidth() : 0);\n // For upstems with flags, the extra space is unnecessary, since it's taken\n // up by the flag.\n this.setRightDisplacedHeadPx(!this.hasFlag() && this.displaced && this.stem_direction === Stem.UP ? this.getGlyphWidth() : 0);\n }\n // Pre-render formatting\n preFormat() {\n if (this.preFormatted)\n return;\n let noteHeadPadding = 0;\n if (this.modifierContext) {\n this.modifierContext.preFormat();\n // If there are no modifiers on this note, make sure there is adequate padding\n // between the notes.\n if (this.modifierContext.getWidth() === 0) {\n noteHeadPadding = StaveNote.minNoteheadPadding;\n }\n }\n let width = this.getGlyphWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx + noteHeadPadding;\n // For upward flagged notes, the width of the flag needs to be added\n if (this.shouldDrawFlag() && this.stem_direction === Stem.UP) {\n width += this.getGlyphWidth();\n // TODO: Add flag width as a separate metric\n }\n this.setWidth(width);\n this.preFormatted = true;\n }\n /**\n * @typedef {Object} noteHeadBounds\n * @property {number} y_top the highest notehead bound\n * @property {number} y_bottom the lowest notehead bound\n * @property {number|Null} displaced_x the starting x for displaced noteheads\n * @property {number|Null} non_displaced_x the starting x for non-displaced noteheads\n * @property {number} highest_line the highest notehead line in traditional music line\n * numbering (bottom line = 1, top line = 5)\n * @property {number} lowest_line the lowest notehead line\n * @property {number|false} highest_displaced_line the highest staff line number\n * for a displaced notehead\n * @property {number|false} lowest_displaced_line\n * @property {number} highest_non_displaced_line\n * @property {number} lowest_non_displaced_line\n */\n /**\n * Get the staff line and y value for the highest & lowest noteheads\n * @returns {noteHeadBounds}\n */\n getNoteHeadBounds() {\n // Top and bottom Y values for stem.\n let yTop = +Infinity;\n let yBottom = -Infinity;\n let nonDisplacedX;\n let displacedX;\n let highestLine = this.checkStave().getNumLines();\n let lowestLine = 1;\n let highestDisplacedLine;\n let lowestDisplacedLine;\n let highestNonDisplacedLine = highestLine;\n let lowestNonDisplacedLine = lowestLine;\n this._noteHeads.forEach((notehead) => {\n const line = notehead.getLine();\n const y = notehead.getY();\n yTop = Math.min(y, yTop);\n yBottom = Math.max(y, yBottom);\n if (displacedX === undefined && notehead.isDisplaced()) {\n displacedX = notehead.getAbsoluteX();\n }\n if (nonDisplacedX === undefined && !notehead.isDisplaced()) {\n nonDisplacedX = notehead.getAbsoluteX();\n }\n highestLine = Math.max(line, highestLine);\n lowestLine = Math.min(line, lowestLine);\n if (notehead.isDisplaced()) {\n highestDisplacedLine = highestDisplacedLine === undefined ? line : Math.max(line, highestDisplacedLine);\n lowestDisplacedLine = lowestDisplacedLine === undefined ? line : Math.min(line, lowestDisplacedLine);\n }\n else {\n highestNonDisplacedLine = Math.max(line, highestNonDisplacedLine);\n lowestNonDisplacedLine = Math.min(line, lowestNonDisplacedLine);\n }\n }, this);\n return {\n y_top: yTop,\n y_bottom: yBottom,\n displaced_x: displacedX,\n non_displaced_x: nonDisplacedX,\n highest_line: highestLine,\n lowest_line: lowestLine,\n highest_displaced_line: highestDisplacedLine,\n lowest_displaced_line: lowestDisplacedLine,\n highest_non_displaced_line: highestNonDisplacedLine,\n lowest_non_displaced_line: lowestNonDisplacedLine,\n };\n }\n // Get the starting `x` coordinate for the noteheads\n getNoteHeadBeginX() {\n return this.getAbsoluteX() + this.x_shift;\n }\n // Get the ending `x` coordinate for the noteheads\n getNoteHeadEndX() {\n const xBegin = this.getNoteHeadBeginX();\n return xBegin + this.getGlyphWidth();\n }\n get noteHeads() {\n return this._noteHeads.slice();\n }\n /** @deprecated use StaveNote.noteHeads instead. */\n get note_heads() {\n showDeprecationWarningForNoteHeads();\n return this.noteHeads;\n }\n // Draw the ledger lines between the stave and the highest/lowest keys\n drawLedgerLines() {\n const stave = this.checkStave();\n const { glyph, render_options: { stroke_px }, } = this;\n const ctx = this.checkContext();\n const width = glyph.getWidth() + stroke_px * 2;\n const doubleWidth = 2 * (glyph.getWidth() + stroke_px) - Stem.WIDTH / 2;\n if (this.isRest())\n return;\n if (!ctx) {\n throw new RuntimeError('NoCanvasContext', \"Can't draw without a canvas context.\");\n }\n const { highest_line, lowest_line, highest_displaced_line, highest_non_displaced_line, lowest_displaced_line, lowest_non_displaced_line, displaced_x, non_displaced_x, } = this.getNoteHeadBounds();\n // Early out if there are no ledger lines to draw.\n if (highest_line < 6 && lowest_line > 0)\n return;\n const min_x = Math.min(displaced_x !== null && displaced_x !== void 0 ? displaced_x : 0, non_displaced_x !== null && non_displaced_x !== void 0 ? non_displaced_x : 0);\n const drawLedgerLine = (y, normal, displaced) => {\n let x;\n if (displaced && normal)\n x = min_x - stroke_px;\n else if (normal)\n x = (non_displaced_x !== null && non_displaced_x !== void 0 ? non_displaced_x : 0) - stroke_px;\n else\n x = (displaced_x !== null && displaced_x !== void 0 ? displaced_x : 0) - stroke_px;\n const ledgerWidth = normal && displaced ? doubleWidth : width;\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.lineTo(x + ledgerWidth, y);\n ctx.stroke();\n };\n const style = Object.assign(Object.assign({}, stave.getDefaultLedgerLineStyle()), this.getLedgerLineStyle());\n this.applyStyle(ctx, style);\n // Draw ledger lines below the staff:\n for (let line = 6; line <= highest_line; ++line) {\n const normal = non_displaced_x !== undefined && line <= highest_non_displaced_line;\n const displaced = highest_displaced_line !== undefined && line <= highest_displaced_line;\n drawLedgerLine(stave.getYForNote(line), normal, displaced);\n }\n // Draw ledger lines above the staff:\n for (let line = 0; line >= lowest_line; --line) {\n const normal = non_displaced_x !== undefined && line >= lowest_non_displaced_line;\n const displaced = lowest_displaced_line !== undefined && line >= lowest_displaced_line;\n drawLedgerLine(stave.getYForNote(line), normal, displaced);\n }\n this.restoreStyle(ctx, style);\n }\n // Draw all key modifiers\n drawModifiers(noteheadParam) {\n const ctx = this.checkContext();\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n const index = modifier.checkIndex();\n const notehead = this._noteHeads[index];\n if (notehead == noteheadParam) {\n const noteheadStyle = notehead.getStyle();\n notehead.applyStyle(ctx, noteheadStyle);\n modifier.setContext(ctx);\n modifier.drawWithStyle();\n notehead.restoreStyle(ctx, noteheadStyle);\n }\n }\n }\n shouldDrawFlag() {\n const hasStem = this.stem !== undefined;\n const hasFlag = this.glyph.flag; // specified in tables.js\n const hasNoBeam = this.beam === undefined;\n return hasStem && hasFlag && hasNoBeam;\n }\n // Draw the flag for the note\n drawFlag() {\n var _a, _b, _c, _d, _e;\n const ctx = this.checkContext();\n if (!ctx) {\n throw new RuntimeError('NoCanvasContext', \"Can't draw without a canvas context.\");\n }\n if (this.shouldDrawFlag()) {\n const { y_top, y_bottom } = this.getNoteHeadBounds();\n // eslint-disable-next-line\n const noteStemHeight = this.stem.getHeight();\n const flagX = this.getStemX();\n // What's with the magic +/- 2\n // ANSWER: a corner of the note stem pokes out beyond the tip of the flag.\n // The extra +/- 2 pushes the flag glyph outward so it covers the stem entirely.\n // Alternatively, we could shorten the stem.\n const flagY = this.getStemDirection() === Stem.DOWN\n ? // Down stems are below the note head and have flags on the right.\n y_top -\n noteStemHeight +\n 2 -\n (this.glyph ? this.glyph.stem_down_extension : 0) * this.getStaveNoteScale() -\n ((_b = (_a = this.flag) === null || _a === void 0 ? void 0 : _a.getMetrics().y_shift) !== null && _b !== void 0 ? _b : 0) * (1 - this.getStaveNoteScale())\n : // Up stems are above the note head and have flags on the right.\n y_bottom -\n noteStemHeight -\n 2 +\n (this.glyph ? this.glyph.stem_up_extension : 0) * this.getStaveNoteScale() -\n ((_d = (_c = this.flag) === null || _c === void 0 ? void 0 : _c.getMetrics().y_shift) !== null && _d !== void 0 ? _d : 0) * (1 - this.getStaveNoteScale());\n // Draw the Flag\n (_e = this.flag) === null || _e === void 0 ? void 0 : _e.render(ctx, flagX, flagY);\n }\n }\n // Draw the NoteHeads\n drawNoteHeads() {\n const ctx = this.checkContext();\n this._noteHeads.forEach((notehead) => {\n ctx.openGroup('notehead', notehead.getAttribute('id'), { pointerBBox: true });\n notehead.setContext(ctx).draw();\n this.drawModifiers(notehead);\n ctx.closeGroup();\n });\n }\n drawStem(stemOptions) {\n // GCR TODO: I can't find any context in which this is called with the stemStruct\n // argument in the codebase or tests. Nor can I find a case where super.drawStem\n // is called at all. Perhaps these should be removed?\n const ctx = this.checkContext();\n if (stemOptions) {\n this.setStem(new Stem(stemOptions));\n }\n // If we will render a flag, we shorten the stem so that the tip\n // does not poke through the flag.\n if (this.shouldDrawFlag() && this.stem) {\n this.stem.adjustHeightForFlag();\n }\n if (this.stem) {\n this.stem.setContext(ctx).draw();\n }\n }\n /** Primarily used as the scaling factor for grace notes, GraceNote will return the required scale. */\n getStaveNoteScale() {\n return 1.0;\n }\n /**\n * Override stemmablenote stem extension to adjust for distance from middle line.\n */\n getStemExtension() {\n const super_stem_extension = super.getStemExtension();\n if (!this.glyph.stem) {\n return super_stem_extension;\n }\n const stem_direction = this.getStemDirection();\n if (stem_direction !== this.calculateOptimalStemDirection()) {\n return super_stem_extension; // no adjustment for manually set stem direction.\n }\n let mid_line_distance;\n const MIDDLE_LINE = 3;\n if (stem_direction === Stem.UP) {\n // Note that the use of maxLine here instead of minLine might\n // seem counterintuitive, but in the case of (say) treble clef\n // chord(F2, E4) stem up, we do not want to extend the stem because\n // of F2, when a normal octave-length stem above E4 is fine.\n //\n // maxLine and minLine are set in calculateOptimalStemDirection() so\n // will be known.\n mid_line_distance = MIDDLE_LINE - this.maxLine;\n }\n else {\n mid_line_distance = this.minLine - MIDDLE_LINE;\n }\n // how many lines more than an octave is the relevant notehead?\n const lines_over_octave_from_mid_line = mid_line_distance - 3.5;\n if (lines_over_octave_from_mid_line <= 0) {\n return super_stem_extension;\n }\n const stave = this.getStave();\n let spacing_between_lines = 10;\n if (stave != undefined) {\n spacing_between_lines = stave.getSpacingBetweenLines();\n }\n return super_stem_extension + lines_over_octave_from_mid_line * spacing_between_lines;\n }\n // Draws all the `StaveNote` parts. This is the main drawing method.\n draw() {\n if (this.render_options.draw === false)\n return;\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', \"Can't draw note without Y values.\");\n }\n const ctx = this.checkContext();\n const xBegin = this.getNoteHeadBeginX();\n const shouldRenderStem = this.hasStem() && !this.beam;\n // Format note head x positions\n this._noteHeads.forEach((notehead) => notehead.setX(xBegin));\n if (this.stem) {\n // Format stem x positions\n const stemX = this.getStemX();\n this.stem.setNoteHeadXBounds(stemX, stemX);\n }\n L('Rendering ', this.isChord() ? 'chord :' : 'note :', this.keys);\n // Apply the overall style -- may be contradicted by local settings:\n this.applyStyle();\n ctx.openGroup('stavenote', this.getAttribute('id'));\n this.drawLedgerLines();\n if (shouldRenderStem)\n this.drawStem();\n this.drawNoteHeads();\n this.drawFlag();\n ctx.closeGroup();\n this.restoreStyle();\n this.setRendered();\n }\n}\nStaveNote.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { StaveModifier } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport class Repetition extends StaveModifier {\n constructor(type, x, y_shift) {\n super();\n this.symbol_type = type;\n this.x = x;\n this.x_shift = 0;\n this.y_shift = y_shift;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.Repetition;\n }\n setShiftX(x) {\n this.x_shift = x;\n return this;\n }\n setShiftY(y) {\n this.y_shift = y;\n return this;\n }\n draw(stave, x) {\n this.setRendered();\n switch (this.symbol_type) {\n case Repetition.type.CODA_RIGHT:\n this.drawCodaFixed(stave, x + stave.getWidth());\n break;\n case Repetition.type.CODA_LEFT:\n this.drawSymbolText(stave, x, 'Coda', true);\n break;\n case Repetition.type.SEGNO_LEFT:\n this.drawSignoFixed(stave, x);\n break;\n case Repetition.type.SEGNO_RIGHT:\n this.drawSignoFixed(stave, x + stave.getWidth());\n break;\n case Repetition.type.DC:\n this.drawSymbolText(stave, x, 'D.C.', false);\n break;\n case Repetition.type.DC_AL_CODA:\n this.drawSymbolText(stave, x, 'D.C. al', true);\n break;\n case Repetition.type.DC_AL_FINE:\n this.drawSymbolText(stave, x, 'D.C. al Fine', false);\n break;\n case Repetition.type.DS:\n this.drawSymbolText(stave, x, 'D.S.', false);\n break;\n case Repetition.type.DS_AL_CODA:\n this.drawSymbolText(stave, x, 'D.S. al', true);\n break;\n case Repetition.type.DS_AL_FINE:\n this.drawSymbolText(stave, x, 'D.S. al Fine', false);\n break;\n case Repetition.type.FINE:\n this.drawSymbolText(stave, x, 'Fine', false);\n break;\n case Repetition.type.TO_CODA:\n this.drawSymbolText(stave, x, 'To', true);\n break;\n default:\n break;\n }\n return this;\n }\n drawCodaFixed(stave, x) {\n const y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n Glyph.renderGlyph(stave.checkContext(), this.x + x + this.x_shift, y + Tables.currentMusicFont().lookupMetric('staveRepetition.coda.offsetY'), 40, 'coda', { category: 'coda' });\n return this;\n }\n drawSignoFixed(stave, x) {\n const y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n Glyph.renderGlyph(stave.checkContext(), this.x + x + this.x_shift, y + Tables.currentMusicFont().lookupMetric('staveRepetition.segno.offsetY'), 30, 'segno', { category: 'segno' });\n return this;\n }\n drawSymbolText(stave, x, text, draw_coda) {\n const ctx = stave.checkContext();\n ctx.save();\n ctx.setFont(this.textFont);\n let text_x = 0;\n let symbol_x = 0;\n const modifierWidth = stave.getNoteStartX() - this.x;\n switch (this.symbol_type) {\n // To the left with symbol\n case Repetition.type.CODA_LEFT:\n // Offset Coda text to right of stave beginning\n text_x = this.x + stave.getVerticalBarWidth();\n symbol_x =\n text_x +\n ctx.measureText(text).width +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n break;\n // To the right without symbol\n case Repetition.type.DC:\n case Repetition.type.DC_AL_FINE:\n case Repetition.type.DS:\n case Repetition.type.DS_AL_FINE:\n case Repetition.type.FINE:\n text_x =\n this.x +\n x +\n this.x_shift +\n stave.getWidth() -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.spacing') -\n modifierWidth -\n ctx.measureText(text).width;\n break;\n // To the right with symbol\n default:\n text_x =\n this.x +\n x +\n this.x_shift +\n stave.getWidth() -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.spacing') -\n modifierWidth -\n ctx.measureText(text).width -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n symbol_x =\n text_x +\n ctx.measureText(text).width +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n break;\n }\n const y = stave.getYForTopText(stave.getNumLines()) +\n this.y_shift +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetY');\n if (draw_coda) {\n Glyph.renderGlyph(ctx, symbol_x, y, 40, 'coda', { category: 'coda' });\n }\n ctx.fillText(text, text_x, y + 5);\n ctx.restore();\n return this;\n }\n}\nRepetition.TEXT_FONT = {\n family: Font.SERIF,\n size: 12,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\nRepetition.type = {\n NONE: 1,\n CODA_LEFT: 2,\n CODA_RIGHT: 3,\n SEGNO_LEFT: 4,\n SEGNO_RIGHT: 5,\n DC: 6,\n DC_AL_CODA: 7,\n DC_AL_FINE: 8,\n DS: 9,\n DS_AL_CODA: 10,\n DS_AL_FINE: 11,\n FINE: 12,\n TO_CODA: 13, // To Coda at end of stave\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier } from './stavemodifier';\nimport { Category } from './typeguard';\nexport class StaveSection extends StaveModifier {\n constructor(section, x, shift_y, drawRect = true) {\n super();\n this.setWidth(16);\n this.section = section;\n this.x = x;\n this.shift_x = 0;\n this.shift_y = shift_y;\n this.drawRect = drawRect;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveSection;\n }\n setStaveSection(section) {\n this.section = section;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n draw(stave, shift_x) {\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n const paddingX = 2;\n const paddingY = 2;\n const rectWidth = 2;\n const textMeasurements = ctx.measureText(this.section);\n const textWidth = textMeasurements.width;\n const textHeight = textMeasurements.height;\n const width = textWidth + 2 * paddingX; // add left & right padding\n const height = textHeight + 2 * paddingY; // add top & bottom padding\n // Seems to be a good default y\n const y = stave.getYForTopText(1.5) + this.shift_y;\n const x = this.x + shift_x;\n if (this.drawRect) {\n ctx.beginPath();\n ctx.setLineWidth(rectWidth);\n ctx.rect(x, y + textMeasurements.y - paddingY, width, height);\n ctx.stroke();\n }\n ctx.fillText(this.section, x + paddingX, y);\n ctx.restore();\n return this;\n }\n}\nStaveSection.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 10,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Radosaw Eichler 2012\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport class StaveTempo extends StaveModifier {\n constructor(tempo, x, shift_y) {\n super();\n /** Font size for note. */\n this.render_options = { glyph_font_scale: 30 };\n this.tempo = tempo;\n this.position = StaveModifierPosition.ABOVE;\n this.x = x;\n this.shift_x = 10;\n this.shift_y = shift_y;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveTempo;\n }\n setTempo(tempo) {\n this.tempo = tempo;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n draw(stave, shift_x) {\n const ctx = stave.checkContext();\n this.setRendered();\n const options = this.render_options;\n // FIXME: What does the '38' mean? Why 38? Is that supposed to\n // be the default font size for standard notation?\n const scale = options.glyph_font_scale / 38;\n const name = this.tempo.name;\n const duration = this.tempo.duration;\n const dots = this.tempo.dots || 0;\n const bpm = this.tempo.bpm;\n let x = this.x + this.shift_x + shift_x;\n const y = stave.getYForTopText(1) + this.shift_y;\n ctx.save();\n if (name) {\n ctx.setFont(this.textFont);\n ctx.fillText(name, x, y);\n x += ctx.measureText(name).width;\n }\n if (duration && bpm) {\n // Override the weight and style.\n ctx.setFont(Object.assign(Object.assign({}, this.textFont), { weight: 'normal', style: 'normal' }));\n if (name) {\n x += ctx.measureText(' ').width;\n ctx.fillText('(', x, y);\n x += ctx.measureText('(').width;\n }\n const code = Tables.getGlyphProps(duration);\n x += 3 * scale;\n Glyph.renderGlyph(ctx, x, y, options.glyph_font_scale, code.code_head);\n x += code.getWidth() * scale;\n // Draw stem and flags\n if (code.stem) {\n let stem_height = 30;\n if (code.beam_count)\n stem_height += 3 * (code.beam_count - 1);\n stem_height *= scale;\n const y_top = y - stem_height;\n ctx.fillRect(x - scale, y_top, scale, stem_height);\n if (code.flag) {\n Glyph.renderGlyph(ctx, x, y_top, options.glyph_font_scale, code.code_flag_upstem, {\n category: 'flag.staveTempo',\n });\n if (!dots)\n x += 6 * scale;\n }\n }\n // Draw dot\n for (let i = 0; i < dots; i++) {\n x += 6 * scale;\n ctx.beginPath();\n ctx.arc(x, y + 2 * scale, 2 * scale, 0, Math.PI * 2, false);\n ctx.fill();\n }\n ctx.fillText(' = ' + bpm + (name ? ')' : ''), x + 3 * scale, y);\n }\n ctx.restore();\n return this;\n }\n}\nStaveTempo.TEXT_FONT = {\n family: Font.SERIF,\n size: 14,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { TextJustification, TextNote } from './textnote';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveText extends StaveModifier {\n constructor(text, position, options = {}) {\n super();\n this.setWidth(16);\n this.text = text;\n this.position = position;\n this.options = Object.assign({ shift_x: 0, shift_y: 0, justification: TextNote.Justification.CENTER }, options);\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveText;\n }\n setStaveText(text) {\n this.text = text;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n setText(text) {\n this.text = text;\n return this;\n }\n draw(stave) {\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n const text_width = ctx.measureText('' + this.text).width;\n let x;\n let y;\n switch (this.position) {\n case StaveModifierPosition.LEFT:\n case StaveModifierPosition.RIGHT:\n y = (stave.getYForLine(0) + stave.getBottomLineY()) / 2 + this.options.shift_y;\n if (this.position === StaveModifierPosition.LEFT) {\n x = stave.getX() - text_width - 24 + this.options.shift_x;\n }\n else {\n x = stave.getX() + stave.getWidth() + 24 + this.options.shift_x;\n }\n break;\n case StaveModifierPosition.ABOVE:\n case StaveModifierPosition.BELOW:\n x = stave.getX() + this.options.shift_x;\n if (this.options.justification === TextJustification.CENTER) {\n x += stave.getWidth() / 2 - text_width / 2;\n }\n else if (this.options.justification === TextJustification.RIGHT) {\n x += stave.getWidth() - text_width;\n }\n if (this.position === StaveModifierPosition.ABOVE) {\n y = stave.getYForTopText(2) + this.options.shift_y;\n }\n else {\n y = stave.getYForBottomText(2) + this.options.shift_y;\n }\n break;\n default:\n throw new RuntimeError('InvalidPosition', 'Value Must be in Modifier.Position.');\n }\n ctx.fillText('' + this.text, x, y + 4);\n ctx.restore();\n return this;\n }\n}\nStaveText.TEXT_FONT = {\n family: Font.SERIF,\n size: 16,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveTie extends Element {\n /**\n * @param notes is a struct that has:\n *\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n *\n * @param text\n */\n constructor(notes, text) {\n super();\n this.setNotes(notes);\n this.text = text;\n this.render_options = {\n cp1: 8,\n cp2: 12,\n text_shift_x: 0,\n first_x_shift: 0,\n last_x_shift: 0,\n y_shift: 7,\n tie_spacing: 0,\n };\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveTie;\n }\n setDirection(direction) {\n this.direction = direction;\n return this;\n }\n /**\n * Set the notes to attach this tie to.\n *\n * @param {!Object} notes The notes to tie up.\n */\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Tie needs to have either first_note or last_note set.');\n }\n if (!notes.first_indices) {\n notes.first_indices = [0];\n }\n if (!notes.last_indices) {\n notes.last_indices = [0];\n }\n if (notes.first_indices.length !== notes.last_indices.length) {\n throw new RuntimeError('BadArguments', 'Tied notes must have same number of indices.');\n }\n this.notes = notes;\n return this;\n }\n /**\n * @return {boolean} Returns true if this is a partial bar.\n */\n isPartial() {\n return !this.notes.first_note || !this.notes.last_note;\n }\n renderTie(params) {\n if (params.first_ys.length === 0 || params.last_ys.length === 0) {\n throw new RuntimeError('BadArguments', 'No Y-values to render');\n }\n const ctx = this.checkContext();\n let cp1 = this.render_options.cp1;\n let cp2 = this.render_options.cp2;\n if (Math.abs(params.last_x_px - params.first_x_px) < 10) {\n cp1 = 2;\n cp2 = 8;\n }\n const first_x_shift = this.render_options.first_x_shift;\n const last_x_shift = this.render_options.last_x_shift;\n const y_shift = this.render_options.y_shift * params.direction;\n // setNotes(...) verified that first_indices and last_indices are not undefined.\n // As a result, we use the ! non-null assertion operator here.\n // eslint-disable-next-line\n const first_indices = this.notes.first_indices;\n // eslint-disable-next-line\n const last_indices = this.notes.last_indices;\n for (let i = 0; i < first_indices.length; ++i) {\n const cp_x = (params.last_x_px + last_x_shift + (params.first_x_px + first_x_shift)) / 2;\n const first_y_px = params.first_ys[first_indices[i]] + y_shift;\n const last_y_px = params.last_ys[last_indices[i]] + y_shift;\n if (isNaN(first_y_px) || isNaN(last_y_px)) {\n throw new RuntimeError('BadArguments', 'Bad indices for tie rendering.');\n }\n const top_cp_y = (first_y_px + last_y_px) / 2 + cp1 * params.direction;\n const bottom_cp_y = (first_y_px + last_y_px) / 2 + cp2 * params.direction;\n ctx.openGroup('stavetie', this.getAttribute('id'));\n ctx.beginPath();\n ctx.moveTo(params.first_x_px + first_x_shift, first_y_px);\n ctx.quadraticCurveTo(cp_x, top_cp_y, params.last_x_px + last_x_shift, last_y_px);\n ctx.quadraticCurveTo(cp_x, bottom_cp_y, params.first_x_px + first_x_shift, first_y_px);\n ctx.closePath();\n ctx.fill();\n ctx.closeGroup();\n }\n }\n renderText(first_x_px, last_x_px) {\n var _a, _b, _c;\n if (!this.text)\n return;\n const ctx = this.checkContext();\n let center_x = (first_x_px + last_x_px) / 2;\n center_x -= ctx.measureText(this.text).width / 2;\n const stave = (_b = (_a = this.notes.first_note) === null || _a === void 0 ? void 0 : _a.checkStave()) !== null && _b !== void 0 ? _b : (_c = this.notes.last_note) === null || _c === void 0 ? void 0 : _c.checkStave();\n if (stave) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText(this.text, center_x + this.render_options.text_shift_x, stave.getYForTopText() - 1);\n ctx.restore();\n }\n }\n /**\n * Returns the TieNotes structure of the first and last note this tie connects.\n */\n getNotes() {\n return this.notes;\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const first_note = this.notes.first_note;\n const last_note = this.notes.last_note;\n // Provide some default values so the compiler doesn't complain.\n let first_x_px = 0;\n let last_x_px = 0;\n let first_ys = [0];\n let last_ys = [0];\n let stem_direction = 0;\n if (first_note) {\n first_x_px = first_note.getTieRightX() + this.render_options.tie_spacing;\n stem_direction = first_note.getStemDirection();\n first_ys = first_note.getYs();\n }\n else if (last_note) {\n const stave = last_note.checkStave();\n first_x_px = stave.getTieStartX();\n first_ys = last_note.getYs();\n this.notes.first_indices = this.notes.last_indices;\n }\n if (last_note) {\n last_x_px = last_note.getTieLeftX() + this.render_options.tie_spacing;\n stem_direction = last_note.getStemDirection();\n last_ys = last_note.getYs();\n }\n else if (first_note) {\n const stave = first_note.checkStave();\n last_x_px = stave.getTieEndX();\n last_ys = first_note.getYs();\n this.notes.last_indices = this.notes.first_indices;\n }\n if (this.direction) {\n stem_direction = this.direction;\n }\n this.renderTie({\n first_x_px,\n last_x_px,\n first_ys,\n last_ys,\n direction: stem_direction,\n });\n this.renderText(first_x_px, last_x_px);\n return true;\n }\n}\n/** Default text font. */\nStaveTie.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier } from './stavemodifier';\nimport { Category } from './typeguard';\nexport var VoltaType;\n(function (VoltaType) {\n VoltaType[VoltaType[\"NONE\"] = 1] = \"NONE\";\n VoltaType[VoltaType[\"BEGIN\"] = 2] = \"BEGIN\";\n VoltaType[VoltaType[\"MID\"] = 3] = \"MID\";\n VoltaType[VoltaType[\"END\"] = 4] = \"END\";\n VoltaType[VoltaType[\"BEGIN_END\"] = 5] = \"BEGIN_END\";\n})(VoltaType || (VoltaType = {}));\nexport class Volta extends StaveModifier {\n constructor(type, number, x, y_shift) {\n super();\n this.volta = type;\n this.x = x;\n this.y_shift = y_shift;\n this.number = number;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.Volta;\n }\n static get type() {\n return VoltaType;\n }\n setShiftY(y) {\n this.y_shift = y;\n return this;\n }\n draw(stave, x) {\n const ctx = stave.checkContext();\n this.setRendered();\n let width = stave.getWidth() - x; // don't include x (offset) for width\n const top_y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n const vert_height = 1.5 * stave.getSpacingBetweenLines();\n switch (this.volta) {\n case VoltaType.BEGIN:\n ctx.fillRect(this.x + x, top_y, 1, vert_height);\n break;\n case VoltaType.END:\n width -= 5;\n ctx.fillRect(this.x + x + width, top_y, 1, vert_height);\n break;\n case VoltaType.BEGIN_END:\n width -= 3;\n ctx.fillRect(this.x + x, top_y, 1, vert_height);\n ctx.fillRect(this.x + x + width, top_y, 1, vert_height);\n break;\n default:\n break;\n }\n // If the beginning of a volta, draw measure number\n if (this.volta === VoltaType.BEGIN || this.volta === VoltaType.BEGIN_END) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText(this.number, this.x + x + 5, top_y + 15);\n ctx.restore();\n }\n ctx.fillRect(this.x + x, top_y, width, 1);\n return this;\n }\n}\nVolta.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 9,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// This file implements the `Stem` object. Generally this object is handled\n// by its parent `StemmableNote`.\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Stem.DEBUG)\n log('Vex.Flow.Stem', args);\n}\nexport class Stem extends Element {\n constructor(options) {\n super();\n this.stem_up_y_offset = 0;\n this.stem_down_y_offset = 0;\n this.stem_up_y_base_offset = 0;\n this.stem_down_y_base_offset = 0;\n // Default notehead x bounds\n this.x_begin = (options === null || options === void 0 ? void 0 : options.x_begin) || 0;\n this.x_end = (options === null || options === void 0 ? void 0 : options.x_end) || 0;\n // Y bounds for top/bottom most notehead\n this.y_top = (options === null || options === void 0 ? void 0 : options.y_top) || 0;\n this.y_bottom = (options === null || options === void 0 ? void 0 : options.y_bottom) || 0;\n // Stem top extension\n this.stem_extension = (options === null || options === void 0 ? void 0 : options.stem_extension) || 0;\n // Direction of the stem\n this.stem_direction = (options === null || options === void 0 ? void 0 : options.stem_direction) || 0;\n // Flag to override all draw calls\n this.hide = (options === null || options === void 0 ? void 0 : options.hide) || false;\n this.isStemlet = (options === null || options === void 0 ? void 0 : options.isStemlet) || false;\n this.stemletHeight = (options === null || options === void 0 ? void 0 : options.stemletHeight) || 0;\n // Use to adjust the rendered height without affecting\n // the results of `.getExtents()`\n this.renderHeightAdjustment = 0;\n this.setOptions(options);\n }\n static get CATEGORY() {\n return Category.Stem;\n }\n // Stem directions\n static get UP() {\n return 1;\n }\n static get DOWN() {\n return -1;\n }\n // Theme\n static get WIDTH() {\n return Tables.STEM_WIDTH;\n }\n static get HEIGHT() {\n return Tables.STEM_HEIGHT;\n }\n setOptions(options) {\n // Changing where the stem meets the head\n this.stem_up_y_offset = (options === null || options === void 0 ? void 0 : options.stem_up_y_offset) || 0;\n this.stem_down_y_offset = (options === null || options === void 0 ? void 0 : options.stem_down_y_offset) || 0;\n this.stem_up_y_base_offset = (options === null || options === void 0 ? void 0 : options.stem_up_y_base_offset) || 0;\n this.stem_down_y_base_offset = (options === null || options === void 0 ? void 0 : options.stem_down_y_base_offset) || 0;\n }\n // Set the x bounds for the default notehead\n setNoteHeadXBounds(x_begin, x_end) {\n this.x_begin = x_begin;\n this.x_end = x_end;\n return this;\n }\n // Set the direction of the stem in relation to the noteheads\n setDirection(direction) {\n this.stem_direction = direction;\n }\n // Set the extension for the stem, generally for flags or beams\n setExtension(ext) {\n this.stem_extension = ext;\n }\n getExtension() {\n return this.stem_extension;\n }\n // The the y bounds for the top and bottom noteheads\n setYBounds(y_top, y_bottom) {\n this.y_top = y_top;\n this.y_bottom = y_bottom;\n }\n // Gets the entire height for the stem\n getHeight() {\n const y_offset = this.stem_direction === Stem.UP ? this.stem_up_y_offset : this.stem_down_y_offset;\n const unsigned_height = this.y_bottom - this.y_top + (Stem.HEIGHT - y_offset + this.stem_extension); // parentheses just for grouping.\n return unsigned_height * this.stem_direction;\n }\n getBoundingBox() {\n throw new RuntimeError('NotImplemented', 'getBoundingBox() not implemented.');\n }\n // Get the y coordinates for the very base of the stem to the top of\n // the extension\n getExtents() {\n const isStemUp = this.stem_direction === Stem.UP;\n const ys = [this.y_top, this.y_bottom];\n const stemHeight = Stem.HEIGHT + this.stem_extension;\n const innerMostNoteheadY = (isStemUp ? Math.min : Math.max)(...ys);\n const outerMostNoteheadY = (isStemUp ? Math.max : Math.min)(...ys);\n const stemTipY = innerMostNoteheadY + stemHeight * -this.stem_direction;\n return { topY: stemTipY, baseY: outerMostNoteheadY };\n }\n setVisibility(isVisible) {\n this.hide = !isVisible;\n return this;\n }\n setStemlet(isStemlet, stemletHeight) {\n this.isStemlet = isStemlet;\n this.stemletHeight = stemletHeight;\n return this;\n }\n adjustHeightForFlag() {\n this.renderHeightAdjustment = Tables.currentMusicFont().lookupMetric('stem.heightAdjustmentForFlag', -3);\n }\n adjustHeightForBeam() {\n this.renderHeightAdjustment = -Stem.WIDTH / 2;\n }\n // Render the stem onto the canvas\n draw() {\n this.setRendered();\n if (this.hide)\n return;\n const ctx = this.checkContext();\n let stem_x;\n let stem_y;\n const stem_direction = this.stem_direction;\n let y_base_offset = 0;\n if (stem_direction === Stem.DOWN) {\n // Down stems are rendered to the left of the head.\n stem_x = this.x_begin;\n stem_y = this.y_top + this.stem_down_y_offset;\n y_base_offset = this.stem_down_y_base_offset;\n }\n else {\n // Up stems are rendered to the right of the head.\n stem_x = this.x_end;\n stem_y = this.y_bottom - this.stem_up_y_offset;\n y_base_offset = this.stem_up_y_base_offset;\n }\n const stemHeight = this.getHeight();\n L('Rendering stem - ', 'Top Y: ', this.y_top, 'Bottom Y: ', this.y_bottom);\n // The offset from the stem's base which is required fo satisfy the stemlet height\n const stemletYOffset = this.isStemlet ? stemHeight - this.stemletHeight * this.stem_direction : 0;\n // Draw the stem\n ctx.save();\n ctx.openGroup('stem', this.getAttribute('id'), { pointerBBox: true });\n this.applyStyle(ctx);\n ctx.beginPath();\n ctx.setLineWidth(Stem.WIDTH);\n ctx.moveTo(stem_x, stem_y - stemletYOffset + y_base_offset);\n ctx.lineTo(stem_x, stem_y - stemHeight - this.renderHeightAdjustment * stem_direction);\n ctx.stroke();\n this.restoreStyle(ctx);\n ctx.closeGroup();\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Stem.DEBUG` to `true`. */\nStem.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// `StemmableNote` is an abstract interface for notes with optional stems.\n// Examples of stemmable notes are `StaveNote` and `TabNote`\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StemmableNote extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n }\n static get CATEGORY() {\n return Category.StemmableNote;\n }\n // Get and set the note's `Stem`\n getStem() {\n return this.stem;\n }\n checkStem() {\n if (!this.stem) {\n throw new RuntimeError('NoStem', 'No stem attached to instance');\n }\n return this.stem;\n }\n setStem(stem) {\n this.stem = stem;\n this.addChildElement(stem);\n return this;\n }\n // Builds and sets a new stem\n buildStem() {\n const stem = new Stem();\n this.setStem(stem);\n return this;\n }\n buildFlag(category = 'flag') {\n const { glyph } = this;\n if (this.hasFlag()) {\n const flagCode = this.getStemDirection() === Stem.DOWN ? glyph.code_flag_downstem : glyph.code_flag_upstem;\n this.flag = new Glyph(flagCode, this.render_options.glyph_font_scale, { category });\n }\n }\n // Get the custom glyph associated with the outer note head on the base of the stem.\n getBaseCustomNoteHeadGlyph() {\n if (this.getStemDirection() === Stem.DOWN) {\n return this.customGlyphs[this.customGlyphs.length - 1];\n }\n else {\n return this.customGlyphs[0];\n }\n }\n // Get the full length of stem\n getStemLength() {\n return Stem.HEIGHT + this.getStemExtension();\n }\n // Get the number of beams for this duration\n getBeamCount() {\n const glyph = this.getGlyph();\n if (glyph) {\n return glyph.beam_count;\n }\n else {\n return 0;\n }\n }\n // Get the minimum length of stem\n getStemMinimumLength() {\n const frac = Tables.durationToFraction(this.duration);\n let length = frac.value() <= 1 ? 0 : 20;\n // if note is flagged, cannot shorten beam\n switch (this.duration) {\n case '8':\n if (this.beam == undefined)\n length = 35;\n break;\n case '16':\n length = this.beam == undefined ? 35 : 25;\n break;\n case '32':\n length = this.beam == undefined ? 45 : 35;\n break;\n case '64':\n length = this.beam == undefined ? 50 : 40;\n break;\n case '128':\n length = this.beam == undefined ? 55 : 45;\n break;\n default:\n break;\n }\n return length;\n }\n // Get/set the direction of the stem\n getStemDirection() {\n if (!this.stem_direction)\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n return this.stem_direction;\n }\n setStemDirection(direction) {\n if (!direction)\n direction = Stem.UP;\n if (direction !== Stem.UP && direction !== Stem.DOWN) {\n throw new RuntimeError('BadArgument', `Invalid stem direction: ${direction}`);\n }\n this.stem_direction = direction;\n // Reset and reformat everything. Flag has to be built before calling getStemExtension.\n this.reset();\n if (this.hasFlag()) {\n this.buildFlag();\n }\n this.beam = undefined;\n if (this.stem) {\n this.stem.setDirection(direction);\n this.stem.setExtension(this.getStemExtension());\n // Lookup the base custom notehead (closest to the base of the stem) to extend or shorten\n // the stem appropriately. If there's no custom note head, lookup the standard notehead.\n const glyph = this.getBaseCustomNoteHeadGlyph() || this.getGlyph();\n // Get the font-specific customizations for the note heads.\n const offsets = Tables.currentMusicFont().lookupMetric(`stem.noteHead.${glyph.code_head}`, {\n offsetYBaseStemUp: 0,\n offsetYTopStemUp: 0,\n offsetYBaseStemDown: 0,\n offsetYTopStemDown: 0,\n });\n // Configure the stem to use these offsets.\n this.stem.setOptions({\n stem_up_y_offset: offsets.offsetYTopStemUp,\n stem_down_y_offset: offsets.offsetYTopStemDown,\n stem_up_y_base_offset: offsets.offsetYBaseStemUp,\n stem_down_y_base_offset: offsets.offsetYBaseStemDown, // glyph.stem_down_y_base_offset,\n });\n }\n if (this.preFormatted) {\n this.preFormat();\n }\n return this;\n }\n // Get the `x` coordinate of the stem\n getStemX() {\n const x_begin = this.getAbsoluteX() + this.x_shift;\n const x_end = this.getAbsoluteX() + this.x_shift + this.getGlyphWidth();\n const stem_x = this.stem_direction === Stem.DOWN ? x_begin : x_end;\n return stem_x;\n }\n // Get the `x` coordinate for the center of the glyph.\n // Used for `TabNote` stems and stemlets over rests\n getCenterGlyphX() {\n return this.getAbsoluteX() + this.x_shift + this.getGlyphWidth() / 2;\n }\n // Get the stem extension for the current duration\n getStemExtension() {\n const glyph = this.getGlyph();\n if (this.stem_extension_override != undefined) {\n return this.stem_extension_override;\n }\n // Use stem_beam_extension with beams\n if (this.beam) {\n return glyph.stem_beam_extension;\n }\n if (glyph) {\n return this.getStemDirection() === Stem.UP ? glyph.stem_up_extension : glyph.stem_down_extension;\n }\n return 0;\n }\n // Set the stem length to a specific. Will override the default length.\n setStemLength(height) {\n this.stem_extension_override = height - Stem.HEIGHT;\n return this;\n }\n // Get the top and bottom `y` values of the stem.\n getStemExtents() {\n if (!this.stem)\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n return this.stem.getExtents();\n }\n /** Gets the `y` value for the top modifiers at a specific `textLine`. */\n getYForTopText(textLine) {\n const stave = this.checkStave();\n if (this.hasStem()) {\n const extents = this.getStemExtents();\n if (!extents)\n throw new RuntimeError('InvalidState', 'Stem does not have extents.');\n return Math.min(stave.getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1));\n }\n else {\n return stave.getYForTopText(textLine);\n }\n }\n /** Gets the `y` value for the bottom modifiers at a specific `textLine`. */\n getYForBottomText(textLine) {\n const stave = this.checkStave();\n if (this.hasStem()) {\n const extents = this.getStemExtents();\n if (!extents)\n throw new RuntimeError('InvalidState', 'Stem does not have extents.');\n return Math.max(stave.getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine);\n }\n else {\n return stave.getYForBottomText(textLine);\n }\n }\n hasFlag() {\n return Tables.getGlyphProps(this.duration).flag && !this.beam;\n }\n /** Post formats the note. */\n postFormat() {\n var _a;\n (_a = this.beam) === null || _a === void 0 ? void 0 : _a.postFormat();\n this.postFormatted = true;\n return this;\n }\n /** Renders the stem onto the canvas. */\n drawStem(stemOptions) {\n var _a;\n this.checkContext();\n this.setRendered();\n this.setStem(new Stem(stemOptions));\n (_a = this.stem) === null || _a === void 0 ? void 0 : _a.setContext(this.getContext()).draw();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns\n//\n// This file implements the `StringNumber` class which renders string\n// number annotations beside notes.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Renderer } from './renderer';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isStaveNote, isStemmableNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StringNumber extends Modifier {\n constructor(number) {\n super();\n this.string_number = number;\n this.position = Modifier.Position.ABOVE; // Default position above stem or note head\n this.x_shift = 0;\n this.y_shift = 0;\n this.text_line = 0;\n this.stem_offset = 0;\n this.x_offset = 0; // Horizontal offset from default\n this.y_offset = 0; // Vertical offset from default\n this.dashed = true; // true - draw dashed extension false - no extension\n this.leg = Renderer.LineEndType.NONE; // draw upward/downward leg at the of extension line\n this.radius = 8;\n this.drawCircle = true;\n this.setWidth(this.radius * 2 + 4);\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StringNumber;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.stringNumber;\n }\n // ## Static Methods\n // Arrange string numbers inside a `ModifierContext`\n static format(nums, state) {\n const left_shift = state.left_shift;\n const right_shift = state.right_shift;\n const num_spacing = 1;\n if (!nums || nums.length === 0)\n return false;\n const nums_list = [];\n let prev_note = null;\n let shift_left = 0;\n let shift_right = 0;\n const modLines = 0;\n for (let i = 0; i < nums.length; ++i) {\n const num = nums[i];\n const note = num.getNote();\n const pos = num.getPosition();\n if (!isStaveNote(note)) {\n throw new RuntimeError('NoStaveNote');\n }\n const index = num.checkIndex();\n const props = note.getKeyProps()[index];\n const mc = note.getModifierContext();\n const verticalSpaceNeeded = (num.radius * 2) / Tables.STAVE_LINE_DISTANCE + 0.5;\n if (mc) {\n if (pos === ModifierPosition.ABOVE) {\n num.text_line = mc.getState().top_text_line;\n state.top_text_line += verticalSpaceNeeded;\n }\n else if (pos === ModifierPosition.BELOW) {\n num.text_line = mc.getState().text_line;\n state.text_line += verticalSpaceNeeded;\n }\n }\n if (note !== prev_note) {\n for (let n = 0; n < note.keys.length; ++n) {\n if (left_shift === 0) {\n shift_left = Math.max(note.getLeftDisplacedHeadPx(), shift_left);\n }\n if (right_shift === 0) {\n shift_right = Math.max(note.getRightDisplacedHeadPx(), shift_right);\n }\n }\n prev_note = note;\n }\n const glyphLine = modLines === 0 ? props.line : modLines;\n nums_list.push({\n pos,\n note,\n num,\n line: glyphLine,\n shiftL: shift_left,\n shiftR: shift_right,\n });\n }\n // Sort string numbers by line number.\n nums_list.sort((a, b) => b.line - a.line);\n let num_shiftR = 0;\n let x_widthL = 0;\n let x_widthR = 0;\n let last_line = null;\n let last_note = null;\n for (let i = 0; i < nums_list.length; ++i) {\n let num_shift = 0;\n const note = nums_list[i].note;\n const pos = nums_list[i].pos;\n const num = nums_list[i].num;\n const line = nums_list[i].line;\n const shiftR = nums_list[i].shiftR;\n // Reset the position of the string number every line.\n if (line !== last_line || note !== last_note) {\n num_shiftR = right_shift + shiftR;\n }\n const num_width = num.getWidth() + num_spacing;\n if (pos === Modifier.Position.LEFT) {\n num.setXShift(left_shift);\n num_shift = shift_left + num_width; // spacing\n x_widthL = num_shift > x_widthL ? num_shift : x_widthL;\n }\n else if (pos === Modifier.Position.RIGHT) {\n num.setXShift(num_shiftR);\n num_shift += num_width; // spacing\n x_widthR = num_shift > x_widthR ? num_shift : x_widthR;\n }\n last_line = line;\n last_note = note;\n }\n state.left_shift += x_widthL;\n state.right_shift += x_widthR;\n return true;\n }\n setLineEndType(leg) {\n if (leg >= Renderer.LineEndType.NONE && leg <= Renderer.LineEndType.DOWN) {\n this.leg = leg;\n }\n return this;\n }\n setStringNumber(number) {\n this.string_number = number;\n return this;\n }\n setOffsetX(x) {\n this.x_offset = x;\n return this;\n }\n setOffsetY(y) {\n this.y_offset = y;\n return this;\n }\n setLastNote(note) {\n this.last_note = note;\n return this;\n }\n setDashed(dashed) {\n this.dashed = dashed;\n return this;\n }\n setDrawCircle(drawCircle) {\n this.drawCircle = drawCircle;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let dot_x = start.x + this.x_shift + this.x_offset;\n let stem_ext = {};\n if (note.hasStem()) {\n stem_ext = note.checkStem().getExtents();\n }\n let dot_y = start.y + this.y_shift + this.y_offset;\n switch (this.position) {\n case Modifier.Position.ABOVE:\n {\n const ys = note.getYs();\n dot_y = ys.reduce((a, b) => (a < b ? a : b));\n if (note.hasStem() && stemDirection == Stem.UP) {\n dot_y = stem_ext.topY + StringNumber.metrics.stemPadding;\n }\n dot_y -= this.radius + StringNumber.metrics.verticalPadding + this.text_line * Tables.STAVE_LINE_DISTANCE;\n }\n break;\n case Modifier.Position.BELOW:\n {\n const ys = note.getYs();\n dot_y = ys.reduce((a, b) => (a > b ? a : b));\n if (note.hasStem() && stemDirection == Stem.DOWN) {\n dot_y = stem_ext.topY - StringNumber.metrics.stemPadding;\n }\n dot_y += this.radius + StringNumber.metrics.verticalPadding + this.text_line * Tables.STAVE_LINE_DISTANCE;\n }\n break;\n case Modifier.Position.LEFT:\n dot_x -= this.radius / 2 + StringNumber.metrics.leftPadding;\n break;\n case Modifier.Position.RIGHT:\n dot_x += this.radius / 2 + StringNumber.metrics.rightPadding;\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} is invalid`);\n }\n ctx.save();\n if (this.drawCircle) {\n ctx.beginPath();\n ctx.arc(dot_x, dot_y, this.radius, 0, Math.PI * 2, false);\n ctx.setLineWidth(1.5);\n ctx.stroke();\n }\n ctx.setFont(this.textFont);\n const x = dot_x - ctx.measureText(this.string_number).width / 2;\n ctx.fillText('' + this.string_number, x, dot_y + 4.5);\n const lastNote = this.last_note;\n if (isStemmableNote(lastNote)) {\n // Only StemmableNote objects have getStemX().\n const end = lastNote.getStemX() - note.getX() + 5;\n ctx.setStrokeStyle('#000000');\n ctx.setLineCap('round');\n ctx.setLineWidth(0.6);\n if (this.dashed) {\n Renderer.drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 3]);\n }\n else {\n Renderer.drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 0]);\n }\n let len;\n let pattern;\n switch (this.leg) {\n case Renderer.LineEndType.UP:\n len = -10;\n pattern = this.dashed ? [3, 3] : [3, 0];\n Renderer.drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern);\n break;\n case Renderer.LineEndType.DOWN:\n len = 10;\n pattern = this.dashed ? [3, 3] : [3, 0];\n Renderer.drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern);\n break;\n default:\n break;\n }\n }\n ctx.restore();\n }\n}\nStringNumber.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: Font.SIZE,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns\n//\n// This file implements the `Stroke` class which renders chord strokes\n// that can be arpeggiated, brushed, rasquedo, etc.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Category, isNote, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class Stroke extends Modifier {\n constructor(type, options) {\n super();\n this.options = Object.assign({ all_voices: true }, options);\n // multi voice - span stroke across all voices if true\n this.all_voices = this.options.all_voices;\n // multi voice - end note of stroke, set in draw()\n this.type = type;\n this.position = Modifier.Position.LEFT;\n this.render_options = {\n font_scale: 38,\n };\n this.resetFont();\n this.setXShift(0);\n this.setWidth(10);\n }\n static get CATEGORY() {\n return Category.Stroke;\n }\n // Arrange strokes inside `ModifierContext`\n static format(strokes, state) {\n const left_shift = state.left_shift;\n const stroke_spacing = 0;\n if (!strokes || strokes.length === 0)\n return false;\n const strokeList = strokes.map((stroke) => {\n const note = stroke.getNote();\n const index = stroke.checkIndex();\n if (isStaveNote(note)) {\n // Only StaveNote objects have getKeyProps().\n const { line } = note.getKeyProps()[index];\n const shift = note.getLeftDisplacedHeadPx();\n return { line, shift, stroke };\n }\n else if (isTabNote(note)) {\n // Only TabNote objects have getPositions().\n const { str: string } = note.getPositions()[index];\n return { line: string, shift: 0, stroke };\n }\n else {\n throw new RuntimeError('Internal', 'Unexpected instance.');\n }\n });\n const strokeShift = left_shift;\n // There can only be one stroke .. if more than one, they overlay each other\n const xShift = strokeList.reduce((xShift, { stroke, shift }) => {\n stroke.setXShift(strokeShift + shift);\n return Math.max(stroke.getWidth() + stroke_spacing, xShift);\n }, 0);\n state.left_shift += xShift;\n return true;\n }\n getPosition() {\n return this.position;\n }\n addEndNote(note) {\n this.note_end = note;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n let ys = note.getYs();\n let topY = start.y;\n let botY = start.y;\n const x = start.x - 5;\n const line_space = note.checkStave().getSpacingBetweenLines();\n const notes = this.checkModifierContext().getMembers(note.getCategory());\n for (let i = 0; i < notes.length; i++) {\n const note = notes[i];\n if (isNote(note)) {\n // Only Note objects have getYs().\n // note is an instance of either StaveNote or TabNote.\n ys = note.getYs();\n for (let n = 0; n < ys.length; n++) {\n if (this.note === notes[i] || this.all_voices) {\n topY = Math.min(topY, ys[n]);\n botY = Math.max(botY, ys[n]);\n }\n }\n }\n }\n let arrow = '';\n let arrow_shift_x = 0;\n let arrow_y = 0;\n let text_shift_x = 0;\n let text_y = 0;\n switch (this.type) {\n case Stroke.Type.BRUSH_DOWN:\n arrow = 'arrowheadBlackUp';\n arrow_shift_x = -3;\n arrow_y = topY - line_space / 2 + 10;\n botY += line_space / 2;\n break;\n case Stroke.Type.BRUSH_UP:\n arrow = 'arrowheadBlackDown';\n arrow_shift_x = 0.5;\n arrow_y = botY + line_space / 2;\n topY -= line_space / 2;\n break;\n case Stroke.Type.ROLL_DOWN:\n case Stroke.Type.RASQUEDO_DOWN:\n arrow = 'arrowheadBlackUp';\n arrow_shift_x = -3;\n text_shift_x = this.x_shift + arrow_shift_x - 2;\n if (isStaveNote(note)) {\n topY += 1.5 * line_space;\n if ((botY - topY) % 2 !== 0) {\n botY += 0.5 * line_space;\n }\n else {\n botY += line_space;\n }\n arrow_y = topY - line_space;\n text_y = botY + line_space + 2;\n }\n else {\n topY += 1.5 * line_space;\n botY += line_space;\n arrow_y = topY - 0.75 * line_space;\n text_y = botY + 0.25 * line_space;\n }\n break;\n case Stroke.Type.ROLL_UP:\n case Stroke.Type.RASQUEDO_UP:\n arrow = 'arrowheadBlackDown';\n arrow_shift_x = -4;\n text_shift_x = this.x_shift + arrow_shift_x - 1;\n if (isStaveNote(note)) {\n arrow_y = line_space / 2;\n topY += 0.5 * line_space;\n if ((botY - topY) % 2 === 0) {\n botY += line_space / 2;\n }\n arrow_y = botY + 0.5 * line_space;\n text_y = topY - 1.25 * line_space;\n }\n else {\n topY += 0.25 * line_space;\n botY += 0.5 * line_space;\n arrow_y = botY + 0.25 * line_space;\n text_y = topY - line_space;\n }\n break;\n case Stroke.Type.ARPEGGIO_DIRECTIONLESS:\n topY += 0.5 * line_space;\n botY += line_space; // * 0.5 can lead to slight underlap instead of overlap sometimes\n break;\n default:\n throw new RuntimeError('InvalidType', `The stroke type ${this.type} does not exist`);\n }\n let strokeLine = 'straight';\n // Draw the stroke\n if (this.type === Stroke.Type.BRUSH_DOWN || this.type === Stroke.Type.BRUSH_UP) {\n ctx.fillRect(x + this.x_shift, topY, 1, botY - topY);\n }\n else {\n strokeLine = 'wiggly';\n if (isStaveNote(note)) {\n for (let i = topY; i <= botY; i += line_space) {\n Glyph.renderGlyph(ctx, x + this.x_shift - 4, i, this.render_options.font_scale, 'vexWiggleArpeggioUp');\n }\n }\n else {\n let i;\n for (i = topY; i <= botY; i += 10) {\n Glyph.renderGlyph(ctx, x + this.x_shift - 4, i, this.render_options.font_scale, 'vexWiggleArpeggioUp');\n }\n if (this.type === Stroke.Type.RASQUEDO_DOWN) {\n text_y = i + 0.25 * line_space;\n }\n }\n }\n if (this.type === Stroke.Type.ARPEGGIO_DIRECTIONLESS) {\n return; // skip drawing arrow heads or text\n }\n // Draw the arrow head\n Glyph.renderGlyph(ctx, x + this.x_shift + arrow_shift_x, arrow_y, this.render_options.font_scale, arrow, {\n category: `stroke.${arrow}.${strokeLine}`,\n });\n // Draw the rasquedo \"R\"\n if (this.type === Stroke.Type.RASQUEDO_DOWN || this.type === Stroke.Type.RASQUEDO_UP) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText('R', x + text_shift_x, text_y);\n ctx.restore();\n }\n }\n}\nStroke.Type = {\n BRUSH_DOWN: 1,\n BRUSH_UP: 2,\n ROLL_DOWN: 3,\n ROLL_UP: 4,\n RASQUEDO_DOWN: 5,\n RASQUEDO_UP: 6,\n ARPEGGIO_DIRECTIONLESS: 7, // Arpeggiated chord without upwards or downwards arrow\n};\nStroke.TEXT_FONT = {\n family: Font.SERIF,\n size: Font.SIZE,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// @author Gregory Ristow (2015)\nimport { Font, FontStyle, FontWeight } from './font';\nimport { RenderContext } from './rendercontext';\nimport { normalizeAngle, prefix, RuntimeError } from './util';\n/** For a particular element type (e.g., rect), we will not apply certain presentation attributes. */\nconst ATTRIBUTES_TO_IGNORE = {\n path: {\n x: true,\n y: true,\n width: true,\n height: true,\n 'font-family': true,\n 'font-weight': true,\n 'font-style': true,\n 'font-size': true,\n },\n rect: {\n 'font-family': true,\n 'font-weight': true,\n 'font-style': true,\n 'font-size': true,\n },\n text: {\n width: true,\n height: true,\n },\n};\n/** Create the SVG in the SVG namespace. */\nconst SVG_NS = 'http://www.w3.org/2000/svg';\nconst TWO_PI = 2 * Math.PI;\nclass MeasureTextCache {\n constructor() {\n // The cache is keyed first by the text string, then by the font attributes\n // joined together.\n this.cache = {};\n }\n lookup(text, svg, attributes) {\n let entries = this.cache[text];\n if (entries === undefined) {\n entries = {};\n this.cache[text] = entries;\n }\n const family = attributes['font-family'];\n const size = attributes['font-size'];\n const weight = attributes['font-weight'];\n const style = attributes['font-style'];\n const key = `${family}%${size}%${weight}%${style}`;\n let entry = entries[key];\n if (entry === undefined) {\n entry = this.measureImpl(text, svg, attributes);\n entries[key] = entry;\n }\n return entry;\n }\n measureImpl(text, svg, attributes) {\n let txt = this.txt;\n if (!txt) {\n // Create the SVG text element that will be used to measure text in the event\n // of a cache miss.\n txt = document.createElementNS(SVG_NS, 'text');\n this.txt = txt;\n }\n txt.textContent = text;\n txt.setAttributeNS(null, 'font-family', attributes['font-family']);\n txt.setAttributeNS(null, 'font-size', attributes['font-size']);\n txt.setAttributeNS(null, 'font-style', attributes['font-style']);\n txt.setAttributeNS(null, 'font-weight', attributes['font-weight']);\n svg.appendChild(txt);\n const bbox = txt.getBBox();\n svg.removeChild(txt);\n return { x: bbox.x, y: bbox.y, width: bbox.width, height: bbox.height };\n }\n}\n/**\n * SVG rendering context with an API similar to CanvasRenderingContext2D.\n */\nexport class SVGContext extends RenderContext {\n constructor(element) {\n super();\n this.width = 0;\n this.height = 0;\n this.backgroundFillStyle = 'white';\n /** Formatted as CSS font shorthand (e.g., 'italic bold 12pt Arial') */\n this.fontCSSString = '';\n this.element = element;\n // Create a SVG element and add it to the container element.\n const svg = this.create('svg');\n this.element.appendChild(svg);\n this.svg = svg;\n this.parent = this.svg;\n this.groups = [this.svg];\n this.path = '';\n this.pen = { x: NaN, y: NaN };\n this.lineWidth = 1.0;\n const defaultFontAttributes = {\n 'font-family': Font.SANS_SERIF,\n 'font-size': Font.SIZE + 'pt',\n 'font-weight': FontWeight.NORMAL,\n 'font-style': FontStyle.NORMAL,\n };\n this.state = Object.assign({ scale: { x: 1, y: 1 } }, defaultFontAttributes);\n this.attributes = Object.assign({ 'stroke-width': 0.3, 'stroke-dasharray': 'none', fill: 'black', stroke: 'black' }, defaultFontAttributes);\n this.shadow_attributes = {\n width: 0,\n color: 'black',\n };\n this.state_stack = [];\n }\n create(svgElementType) {\n return document.createElementNS(SVG_NS, svgElementType);\n }\n // Allow grouping elements in containers for interactivity.\n openGroup(cls, id, attrs) {\n const group = this.create('g');\n this.groups.push(group);\n this.parent.appendChild(group);\n this.parent = group;\n if (cls)\n group.setAttribute('class', prefix(cls));\n if (id)\n group.setAttribute('id', prefix(id));\n if (attrs && attrs.pointerBBox) {\n group.setAttribute('pointer-events', 'bounding-box');\n }\n return group;\n }\n closeGroup() {\n this.groups.pop();\n this.parent = this.groups[this.groups.length - 1];\n }\n add(elem) {\n this.parent.appendChild(elem);\n }\n setFillStyle(style) {\n this.attributes.fill = style;\n return this;\n }\n /**\n * Used to set the fill color for `clearRect()`. This allows us to simulate\n * cutting a \"hole\" into the SVG drawing.\n */\n setBackgroundFillStyle(style) {\n this.backgroundFillStyle = style;\n return this;\n }\n setStrokeStyle(style) {\n this.attributes.stroke = style;\n return this;\n }\n setShadowColor(color) {\n this.shadow_attributes.color = color;\n return this;\n }\n /**\n * @param blur A non-negative float specifying the level of shadow blur, where 0\n * represents no blur and larger numbers represent increasingly more blur.\n * @returns this\n */\n setShadowBlur(blur) {\n this.shadow_attributes.width = blur;\n return this;\n }\n /**\n * @param width\n * @returns this\n */\n setLineWidth(width) {\n this.attributes['stroke-width'] = width;\n this.lineWidth = width;\n return this;\n }\n /**\n * @param lineDash an array of integers in the form of [dash, space, dash, space, etc...]\n * @returns this\n *\n * See: [SVG `stroke-dasharray` attribute](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray)\n */\n setLineDash(lineDash) {\n if (Object.prototype.toString.call(lineDash) === '[object Array]') {\n this.attributes['stroke-dasharray'] = lineDash.join(',');\n return this;\n }\n else {\n throw new RuntimeError('ArgumentError', 'lineDash must be an array of integers.');\n }\n }\n /**\n * @param capType\n * @returns this\n */\n setLineCap(capType) {\n this.attributes['stroke-linecap'] = capType;\n return this;\n }\n // ### Sizing & Scaling Methods:\n // TODO (GCR): See note at scale() -- separate our internal\n // conception of pixel-based width/height from the style.width\n // and style.height properties eventually to allow users to\n // apply responsive sizing attributes to the SVG.\n resize(width, height) {\n this.width = width;\n this.height = height;\n this.element.style.width = width.toString();\n this.svg.style.width = width.toString();\n this.svg.style.height = height.toString();\n const attributes = {\n width,\n height,\n };\n this.applyAttributes(this.svg, attributes);\n this.scale(this.state.scale.x, this.state.scale.y);\n return this;\n }\n scale(x, y) {\n // uses viewBox to scale\n // TODO (GCR): we may at some point want to distinguish the\n // style.width / style.height properties that are applied to\n // the SVG object from our internal conception of the SVG\n // width/height. This would allow us to create automatically\n // scaling SVG's that filled their containers, for instance.\n //\n // As this isn't implemented in Canvas contexts,\n // I've left as is for now, but in using the viewBox to\n // handle internal scaling, am trying to make it possible\n // for us to eventually move in that direction.\n this.state.scale = { x, y };\n const visibleWidth = this.width / x;\n const visibleHeight = this.height / y;\n this.setViewBox(0, 0, visibleWidth, visibleHeight);\n return this;\n }\n /**\n * 1 arg: string in the \"x y w h\" format\n * 4 args: x:number, y:number, w:number, h:number\n */\n setViewBox(viewBox_or_minX, minY, width, height) {\n if (typeof viewBox_or_minX === 'string') {\n this.svg.setAttribute('viewBox', viewBox_or_minX);\n }\n else {\n const viewBoxString = viewBox_or_minX + ' ' + minY + ' ' + width + ' ' + height;\n this.svg.setAttribute('viewBox', viewBoxString);\n }\n }\n // ### Drawing helper methods:\n applyAttributes(element, attributes) {\n const attrNamesToIgnore = ATTRIBUTES_TO_IGNORE[element.nodeName];\n for (const attrName in attributes) {\n if (attrNamesToIgnore && attrNamesToIgnore[attrName]) {\n continue;\n }\n element.setAttributeNS(null, attrName, attributes[attrName]);\n }\n return element;\n }\n // ### Shape & Path Methods:\n clear() {\n // Clear the SVG by removing all inner children.\n // (This approach is usually slightly more efficient\n // than removing the old SVG & adding a new one to\n // the container element, since it does not cause the\n // container to resize twice. Also, the resize\n // triggered by removing the entire SVG can trigger\n // a touchcancel event when the element resizes away\n // from a touch point.)\n while (this.svg.lastChild) {\n this.svg.removeChild(this.svg.lastChild);\n }\n // Replace the viewbox attribute we just removed.\n this.scale(this.state.scale.x, this.state.scale.y);\n }\n // ## Rectangles:\n rect(x, y, width, height, attributes) {\n // Avoid invalid negative height attributes by flipping the rectangle on its head:\n if (height < 0) {\n y += height;\n height *= -1;\n }\n const rectangle = this.create('rect');\n attributes = attributes !== null && attributes !== void 0 ? attributes : { fill: 'none', 'stroke-width': this.lineWidth, stroke: 'black' };\n this.applyAttributes(rectangle, Object.assign({ x, y, width, height }, attributes));\n this.add(rectangle);\n return this;\n }\n fillRect(x, y, width, height) {\n const attributes = { fill: this.attributes.fill };\n this.rect(x, y, width, height, attributes);\n return this;\n }\n clearRect(x, y, width, height) {\n // Currently this fills a rect with the backgroundFillStyle, rather\n // than \"cut a hole\" into the existing shapes.\n //\n // Since tabNote seems to be the only module that makes use of this\n // it may be worth creating a separate tabStave that would\n // draw lines around locations of tablature fingering.\n this.rect(x, y, width, height, { 'stroke-width': 0, fill: this.backgroundFillStyle });\n return this;\n }\n // ## Paths:\n beginPath() {\n this.path = '';\n this.pen.x = NaN;\n this.pen.y = NaN;\n return this;\n }\n moveTo(x, y) {\n this.path += 'M' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n lineTo(x, y) {\n this.path += 'L' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this.path += 'C' + x1 + ' ' + y1 + ',' + x2 + ' ' + y2 + ',' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this.path += 'Q' + x1 + ' ' + y1 + ',' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n arc(x, y, radius, startAngle, endAngle, counterclockwise) {\n const x0 = x + radius * Math.cos(startAngle);\n const y0 = y + radius * Math.sin(startAngle);\n // svg behavior different from canvas. Don't normalize angles if\n // we are drawing a circle because they both normalize to 0\n const tmpStartTest = normalizeAngle(startAngle);\n const tmpEndTest = normalizeAngle(endAngle);\n if ((!counterclockwise && endAngle - startAngle >= TWO_PI) ||\n (counterclockwise && startAngle - endAngle >= TWO_PI) ||\n tmpStartTest === tmpEndTest) {\n const x1 = x + radius * Math.cos(startAngle + Math.PI);\n const y1 = y + radius * Math.sin(startAngle + Math.PI);\n // There's no way to specify a completely circular arc in SVG so we have to\n // use two semi-circular arcs.\n this.path += `M${x0} ${y0} A${radius} ${radius} 0 0 0 ${x1} ${y1} `;\n this.path += `A${radius} ${radius} 0 0 0 ${x0} ${y0}`;\n this.pen.x = x0;\n this.pen.y = y0;\n }\n else {\n const x1 = x + radius * Math.cos(endAngle);\n const y1 = y + radius * Math.sin(endAngle);\n startAngle = tmpStartTest;\n endAngle = tmpEndTest;\n let large;\n if (Math.abs(endAngle - startAngle) < Math.PI) {\n large = counterclockwise;\n }\n else {\n large = !counterclockwise;\n }\n if (startAngle > endAngle) {\n large = !large;\n }\n const sweep = !counterclockwise;\n this.path += `M${x0} ${y0} A${radius} ${radius} 0 ${+large} ${+sweep} ${x1} ${y1}`;\n this.pen.x = x1;\n this.pen.y = y1;\n }\n return this;\n }\n closePath() {\n this.path += 'Z';\n return this;\n }\n getShadowStyle() {\n const sa = this.shadow_attributes;\n // A CSS drop-shadow filter blur looks different than a canvas shadowBlur\n // of the same radius, so we scale the drop-shadow radius here to make it\n // look close to the canvas shadow.\n return `filter: drop-shadow(0 0 ${sa.width / 1.5}px ${sa.color})`;\n }\n fill(attributes) {\n const path = this.create('path');\n if (typeof attributes === 'undefined') {\n attributes = Object.assign(Object.assign({}, this.attributes), { stroke: 'none' });\n }\n attributes.d = this.path;\n if (this.shadow_attributes.width > 0) {\n attributes.style = this.getShadowStyle();\n }\n this.applyAttributes(path, attributes);\n this.add(path);\n return this;\n }\n stroke() {\n const path = this.create('path');\n const attributes = Object.assign(Object.assign({}, this.attributes), { fill: 'none', 'stroke-width': this.lineWidth, d: this.path });\n if (this.shadow_attributes.width > 0) {\n attributes.style = this.getShadowStyle();\n }\n this.applyAttributes(path, attributes);\n this.add(path);\n return this;\n }\n // ## Text Methods:\n measureText(text) {\n return SVGContext.measureTextCache.lookup(text, this.svg, this.attributes);\n }\n fillText(text, x, y) {\n if (!text || text.length <= 0) {\n return this;\n }\n const attributes = Object.assign(Object.assign({}, this.attributes), { stroke: 'none', x,\n y });\n const txt = this.create('text');\n txt.textContent = text;\n this.applyAttributes(txt, attributes);\n this.add(txt);\n return this;\n }\n // TODO: State should be deep-copied.\n save() {\n this.state_stack.push({\n state: {\n 'font-family': this.state['font-family'],\n 'font-weight': this.state['font-weight'],\n 'font-style': this.state['font-style'],\n 'font-size': this.state['font-size'],\n scale: this.state.scale,\n },\n attributes: {\n 'font-family': this.attributes['font-family'],\n 'font-weight': this.attributes['font-weight'],\n 'font-style': this.attributes['font-style'],\n 'font-size': this.attributes['font-size'],\n fill: this.attributes.fill,\n stroke: this.attributes.stroke,\n 'stroke-width': this.attributes['stroke-width'],\n 'stroke-dasharray': this.attributes['stroke-dasharray'],\n },\n shadow_attributes: {\n width: this.shadow_attributes.width,\n color: this.shadow_attributes.color,\n },\n lineWidth: this.lineWidth,\n });\n return this;\n }\n // TODO: State should be deep-restored.\n restore() {\n const savedState = this.state_stack.pop();\n if (savedState) {\n const state = savedState;\n this.state['font-family'] = state.state['font-family'];\n this.state['font-weight'] = state.state['font-weight'];\n this.state['font-style'] = state.state['font-style'];\n this.state['font-size'] = state.state['font-size'];\n this.state.scale = state.state.scale;\n this.attributes['font-family'] = state.attributes['font-family'];\n this.attributes['font-weight'] = state.attributes['font-weight'];\n this.attributes['font-style'] = state.attributes['font-style'];\n this.attributes['font-size'] = state.attributes['font-size'];\n this.attributes.fill = state.attributes.fill;\n this.attributes.stroke = state.attributes.stroke;\n this.attributes['stroke-width'] = state.attributes['stroke-width'];\n this.attributes['stroke-dasharray'] = state.attributes['stroke-dasharray'];\n this.shadow_attributes.width = state.shadow_attributes.width;\n this.shadow_attributes.color = state.shadow_attributes.color;\n this.lineWidth = state.lineWidth;\n }\n return this;\n }\n set fillStyle(style) {\n this.setFillStyle(style);\n }\n get fillStyle() {\n return this.attributes.fill;\n }\n set strokeStyle(style) {\n this.setStrokeStyle(style);\n }\n get strokeStyle() {\n return this.attributes.stroke;\n }\n /**\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900). It is inserted\n * into the font-weight attribute (e.g., font-weight=\"bold\")\n * @param style is a string (e.g., 'italic', 'normal') that is inserted into the\n * font-style attribute (e.g., font-style=\"italic\")\n */\n setFont(f, size, weight, style) {\n const fontInfo = Font.validate(f, size, weight, style);\n this.fontCSSString = Font.toCSSString(fontInfo);\n const fontAttributes = {\n 'font-family': fontInfo.family,\n 'font-size': fontInfo.size,\n 'font-weight': fontInfo.weight,\n 'font-style': fontInfo.style,\n };\n this.attributes = Object.assign(Object.assign({}, this.attributes), fontAttributes);\n this.state = Object.assign(Object.assign({}, this.state), fontAttributes);\n return this;\n }\n /** Return a string of the form `'italic bold 15pt Arial'` */\n getFont() {\n return this.fontCSSString;\n }\n}\nSVGContext.measureTextCache = new MeasureTextCache();\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { Note } from './note';\nimport { Stave } from './stave';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n/**\n * System implements a musical system, which is a collection of staves,\n * each which can have one or more voices. All voices across all staves in\n * the system are formatted together.\n */\nexport class System extends Element {\n constructor(params = {}) {\n super();\n this.setOptions(params);\n this.parts = [];\n }\n static get CATEGORY() {\n return Category.System;\n }\n /** Set formatting options. */\n setOptions(options = {}) {\n if (!options.factory) {\n throw new RuntimeError('NoFactory', 'System.setOptions(options) requires a factory.');\n }\n this.factory = options.factory;\n this.options = Object.assign(Object.assign({ factory: this.factory, x: 10, y: 10, width: 500, spaceBetweenStaves: 12, autoWidth: false, noJustification: false, debugFormatter: false, formatIterations: 0, noPadding: false }, options), { details: Object.assign({ alpha: 0.5 }, options.details), formatOptions: Object.assign({}, options.formatOptions) });\n if (this.options.noJustification === false && typeof options.width === 'undefined') {\n this.options.autoWidth = true;\n }\n }\n /** Set associated context. */\n setContext(context) {\n super.setContext(context);\n this.factory.setContext(context);\n return this;\n }\n /**\n * Add connector between staves.\n * @param type see {@link StaveConnector.typeString}\n */\n addConnector(type = 'double') {\n this.connector = this.factory.StaveConnector({\n top_stave: this.parts[0].stave,\n bottom_stave: this.parts[this.parts.length - 1].stave,\n type,\n });\n return this.connector;\n }\n /**\n * Add a stave to the system.\n *\n * Example (one voice):\n *\n * `system.addStave({voices: [score.voice(score.notes('C#5/q, B4, A4, G#4'))]});`\n *\n * Example (two voices):\n *\n * `system.addStave({voices: [`\n * `score.voice(score.notes('C#5/q, B4, A4, G#4', {stem: 'up'})),`\n * `score.voice(score.notes('C#4/h, C#4', {stem: 'down'}))`\n * `]});`\n */\n addStave(params) {\n var _a;\n const staveOptions = Object.assign({ left_bar: false }, params.options);\n const stave = (_a = params.stave) !== null && _a !== void 0 ? _a : this.factory.Stave({ x: this.options.x, y: this.options.y, width: this.options.width, options: staveOptions });\n const p = Object.assign(Object.assign({ stave, \n /* voices: [], */\n spaceAbove: 0, spaceBelow: 0, debugNoteMetrics: false, noJustification: false }, params), { options: staveOptions });\n const ctx = this.getContext();\n p.voices.forEach((voice) => voice\n .setContext(ctx)\n .setStave(stave)\n .getTickables()\n .forEach((tickable) => tickable.setStave(stave)));\n this.parts.push(p);\n return stave;\n }\n /** Format the system. */\n format() {\n const options_details = this.options.details;\n let justifyWidth = 0;\n const formatter = new Formatter(options_details);\n this.formatter = formatter;\n let y = this.options.y;\n let startX = 0;\n let allVoices = [];\n let allStaves = [];\n const debugNoteMetricsYs = [];\n // Join the voices for each stave.\n this.parts.forEach((part) => {\n y = y + part.stave.space(part.spaceAbove);\n part.stave.setY(y);\n formatter.joinVoices(part.voices);\n y = y + part.stave.space(part.spaceBelow);\n y = y + part.stave.space(this.options.spaceBetweenStaves);\n if (part.debugNoteMetrics) {\n debugNoteMetricsYs.push({ y, voice: part.voices[0] });\n y += 15;\n }\n allVoices = allVoices.concat(part.voices);\n allStaves = allStaves.concat(part.stave);\n startX = Math.max(startX, part.stave.getNoteStartX());\n });\n // Update the start position of all staves.\n this.parts.forEach((part) => part.stave.setNoteStartX(startX));\n if (this.options.autoWidth) {\n justifyWidth = formatter.preCalculateMinTotalWidth(allVoices);\n this.parts.forEach((part) => {\n part.stave.setWidth(justifyWidth + Stave.rightPadding + (startX - this.options.x));\n });\n }\n else {\n justifyWidth = this.options.noPadding\n ? this.options.width - (startX - this.options.x)\n : this.options.width - (startX - this.options.x) - Stave.defaultPadding;\n }\n formatter.format(allVoices, this.options.noJustification ? 0 : justifyWidth, this.options.formatOptions);\n formatter.postFormat();\n for (let i = 0; i < this.options.formatIterations; i++) {\n formatter.tune(options_details);\n }\n this.startX = startX;\n this.debugNoteMetricsYs = debugNoteMetricsYs;\n this.lastY = y;\n this.boundingBox = new BoundingBox(this.options.x, this.options.y, this.options.width, this.lastY - this.options.y);\n Stave.formatBegModifiers(allStaves);\n }\n /** Render the system. */\n draw() {\n // Render debugging information, if requested.\n const ctx = this.checkContext();\n if (!this.formatter || !this.startX || !this.lastY || !this.debugNoteMetricsYs) {\n throw new RuntimeError('NoFormatter', 'format() must be called before draw()');\n }\n this.setRendered();\n if (this.options.debugFormatter) {\n Formatter.plotDebugging(ctx, this.formatter, this.startX, this.options.y, this.lastY);\n }\n this.debugNoteMetricsYs.forEach((d) => {\n d.voice.getTickables().forEach((tickable) => Note.plotMetrics(ctx, tickable, d.y));\n });\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Fraction } from './fraction';\nimport { Glyph } from './glyph';\nimport { RuntimeError } from './util';\nconst RESOLUTION = 16384;\n/**\n * Map duration numbers to 'ticks', the unit of duration used throughout VexFlow.\n * For example, a quarter note is 4, so it maps to RESOLUTION / 4 = 4096 ticks.\n */\nconst durations = {\n '1/2': RESOLUTION * 2,\n 1: RESOLUTION / 1,\n 2: RESOLUTION / 2,\n 4: RESOLUTION / 4,\n 8: RESOLUTION / 8,\n 16: RESOLUTION / 16,\n 32: RESOLUTION / 32,\n 64: RESOLUTION / 64,\n 128: RESOLUTION / 128,\n 256: RESOLUTION / 256,\n};\nconst durationAliases = {\n w: '1',\n h: '2',\n q: '4',\n // This is the default duration used to render bars (BarNote). Bars no longer\n // consume ticks, so this should be a no-op.\n // TODO(0xfe): This needs to be cleaned up.\n b: '256',\n};\nconst keySignatures = {\n C: { num: 0 },\n Am: { num: 0 },\n F: { acc: 'b', num: 1 },\n Dm: { acc: 'b', num: 1 },\n Bb: { acc: 'b', num: 2 },\n Gm: { acc: 'b', num: 2 },\n Eb: { acc: 'b', num: 3 },\n Cm: { acc: 'b', num: 3 },\n Ab: { acc: 'b', num: 4 },\n Fm: { acc: 'b', num: 4 },\n Db: { acc: 'b', num: 5 },\n Bbm: { acc: 'b', num: 5 },\n Gb: { acc: 'b', num: 6 },\n Ebm: { acc: 'b', num: 6 },\n Cb: { acc: 'b', num: 7 },\n Abm: { acc: 'b', num: 7 },\n G: { acc: '#', num: 1 },\n Em: { acc: '#', num: 1 },\n D: { acc: '#', num: 2 },\n Bm: { acc: '#', num: 2 },\n A: { acc: '#', num: 3 },\n 'F#m': { acc: '#', num: 3 },\n E: { acc: '#', num: 4 },\n 'C#m': { acc: '#', num: 4 },\n B: { acc: '#', num: 5 },\n 'G#m': { acc: '#', num: 5 },\n 'F#': { acc: '#', num: 6 },\n 'D#m': { acc: '#', num: 6 },\n 'C#': { acc: '#', num: 7 },\n 'A#m': { acc: '#', num: 7 },\n};\nconst clefs = {\n treble: { line_shift: 0 },\n bass: { line_shift: 6 },\n tenor: { line_shift: 4 },\n alto: { line_shift: 3 },\n soprano: { line_shift: 1 },\n percussion: { line_shift: 0 },\n 'mezzo-soprano': { line_shift: 2 },\n 'baritone-c': { line_shift: 5 },\n 'baritone-f': { line_shift: 5 },\n subbass: { line_shift: 7 },\n french: { line_shift: -1 },\n};\nconst notesInfo = {\n C: { index: 0, int_val: 0 },\n CN: { index: 0, int_val: 0, accidental: 'n' },\n 'C#': { index: 0, int_val: 1, accidental: '#' },\n 'C##': { index: 0, int_val: 2, accidental: '##' },\n CB: { index: 0, int_val: 11, accidental: 'b' },\n CBB: { index: 0, int_val: 10, accidental: 'bb' },\n D: { index: 1, int_val: 2 },\n DN: { index: 1, int_val: 2, accidental: 'n' },\n 'D#': { index: 1, int_val: 3, accidental: '#' },\n 'D##': { index: 1, int_val: 4, accidental: '##' },\n DB: { index: 1, int_val: 1, accidental: 'b' },\n DBB: { index: 1, int_val: 0, accidental: 'bb' },\n E: { index: 2, int_val: 4 },\n EN: { index: 2, int_val: 4, accidental: 'n' },\n 'E#': { index: 2, int_val: 5, accidental: '#' },\n 'E##': { index: 2, int_val: 6, accidental: '##' },\n EB: { index: 2, int_val: 3, accidental: 'b' },\n EBB: { index: 2, int_val: 2, accidental: 'bb' },\n F: { index: 3, int_val: 5 },\n FN: { index: 3, int_val: 5, accidental: 'n' },\n 'F#': { index: 3, int_val: 6, accidental: '#' },\n 'F##': { index: 3, int_val: 7, accidental: '##' },\n FB: { index: 3, int_val: 4, accidental: 'b' },\n FBB: { index: 3, int_val: 3, accidental: 'bb' },\n G: { index: 4, int_val: 7 },\n GN: { index: 4, int_val: 7, accidental: 'n' },\n 'G#': { index: 4, int_val: 8, accidental: '#' },\n 'G##': { index: 4, int_val: 9, accidental: '##' },\n GB: { index: 4, int_val: 6, accidental: 'b' },\n GBB: { index: 4, int_val: 5, accidental: 'bb' },\n A: { index: 5, int_val: 9 },\n AN: { index: 5, int_val: 9, accidental: 'n' },\n 'A#': { index: 5, int_val: 10, accidental: '#' },\n 'A##': { index: 5, int_val: 11, accidental: '##' },\n AB: { index: 5, int_val: 8, accidental: 'b' },\n ABB: { index: 5, int_val: 7, accidental: 'bb' },\n B: { index: 6, int_val: 11 },\n BN: { index: 6, int_val: 11, accidental: 'n' },\n 'B#': { index: 6, int_val: 12, accidental: '#' },\n 'B##': { index: 6, int_val: 13, accidental: '##' },\n BB: { index: 6, int_val: 10, accidental: 'b' },\n BBB: { index: 6, int_val: 9, accidental: 'bb' },\n R: { index: 6, rest: true },\n X: {\n index: 6,\n accidental: '',\n octave: 4,\n code: 'noteheadXBlack',\n shift_right: 5.5,\n },\n};\nconst validNoteTypes = {\n n: { name: 'note' },\n r: { name: 'rest' },\n h: { name: 'harmonic' },\n m: { name: 'muted' },\n s: { name: 'slash' },\n g: { name: 'ghost' },\n d: { name: 'diamond' },\n x: { name: 'x' },\n ci: { name: 'circled' },\n cx: { name: 'circle x' },\n sf: { name: 'slashed' },\n sb: { name: 'slashed backward' },\n sq: { name: 'square' },\n tu: { name: 'triangle up' },\n td: { name: 'triangle down' },\n};\nconst accidentals = {\n '#': { code: 'accidentalSharp', parenRightPaddingAdjustment: -1 },\n '##': { code: 'accidentalDoubleSharp', parenRightPaddingAdjustment: -1 },\n b: { code: 'accidentalFlat', parenRightPaddingAdjustment: -2 },\n bb: { code: 'accidentalDoubleFlat', parenRightPaddingAdjustment: -2 },\n n: { code: 'accidentalNatural', parenRightPaddingAdjustment: -1 },\n '{': { code: 'accidentalParensLeft', parenRightPaddingAdjustment: -1 },\n '}': { code: 'accidentalParensRight', parenRightPaddingAdjustment: -1 },\n db: { code: 'accidentalThreeQuarterTonesFlatZimmermann', parenRightPaddingAdjustment: -1 },\n d: { code: 'accidentalQuarterToneFlatStein', parenRightPaddingAdjustment: 0 },\n '++': { code: 'accidentalThreeQuarterTonesSharpStein', parenRightPaddingAdjustment: -1 },\n '+': { code: 'accidentalQuarterToneSharpStein', parenRightPaddingAdjustment: -1 },\n '+-': { code: 'accidentalKucukMucennebSharp', parenRightPaddingAdjustment: -1 },\n bs: { code: 'accidentalBakiyeFlat', parenRightPaddingAdjustment: -1 },\n bss: { code: 'accidentalBuyukMucennebFlat', parenRightPaddingAdjustment: -1 },\n o: { code: 'accidentalSori', parenRightPaddingAdjustment: -1 },\n k: { code: 'accidentalKoron', parenRightPaddingAdjustment: -1 },\n bbs: { code: 'vexAccidentalMicrotonal1', parenRightPaddingAdjustment: -1 },\n '++-': { code: 'vexAccidentalMicrotonal2', parenRightPaddingAdjustment: -1 },\n ashs: { code: 'vexAccidentalMicrotonal3', parenRightPaddingAdjustment: -1 },\n afhf: { code: 'vexAccidentalMicrotonal4', parenRightPaddingAdjustment: -1 },\n accSagittal5v7KleismaUp: { code: 'accSagittal5v7KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v7KleismaDown: { code: 'accSagittal5v7KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5CommaUp: { code: 'accSagittal5CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5CommaDown: { code: 'accSagittal5CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7CommaUp: { code: 'accSagittal7CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7CommaDown: { code: 'accSagittal7CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal25SmallDiesisUp: { code: 'accSagittal25SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal25SmallDiesisDown: { code: 'accSagittal25SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal35MediumDiesisUp: { code: 'accSagittal35MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal35MediumDiesisDown: { code: 'accSagittal35MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11MediumDiesisUp: { code: 'accSagittal11MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11MediumDiesisDown: { code: 'accSagittal11MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11LargeDiesisUp: { code: 'accSagittal11LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11LargeDiesisDown: { code: 'accSagittal11LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal35LargeDiesisUp: { code: 'accSagittal35LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal35LargeDiesisDown: { code: 'accSagittal35LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp25SDown: { code: 'accSagittalSharp25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat25SUp: { code: 'accSagittalFlat25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7CDown: { code: 'accSagittalSharp7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7CUp: { code: 'accSagittalFlat7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5CDown: { code: 'accSagittalSharp5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5CUp: { code: 'accSagittalFlat5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v7kDown: { code: 'accSagittalSharp5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v7kUp: { code: 'accSagittalFlat5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp: { code: 'accSagittalSharp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat: { code: 'accSagittalFlat', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v7kUp: { code: 'accSagittalSharp5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v7kDown: { code: 'accSagittalFlat5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5CUp: { code: 'accSagittalSharp5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5CDown: { code: 'accSagittalFlat5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7CUp: { code: 'accSagittalSharp7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7CDown: { code: 'accSagittalFlat7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp25SUp: { code: 'accSagittalSharp25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat25SDown: { code: 'accSagittalFlat25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp35MUp: { code: 'accSagittalSharp35MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat35MDown: { code: 'accSagittalFlat35MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11MUp: { code: 'accSagittalSharp11MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11MDown: { code: 'accSagittalFlat11MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11LUp: { code: 'accSagittalSharp11LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11LDown: { code: 'accSagittalFlat11LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp35LUp: { code: 'accSagittalSharp35LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat35LDown: { code: 'accSagittalFlat35LDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp25SDown: { code: 'accSagittalDoubleSharp25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat25SUp: { code: 'accSagittalDoubleFlat25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7CDown: { code: 'accSagittalDoubleSharp7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7CUp: { code: 'accSagittalDoubleFlat7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5CDown: { code: 'accSagittalDoubleSharp5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5CUp: { code: 'accSagittalDoubleFlat5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v7kDown: { code: 'accSagittalDoubleSharp5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v7kUp: { code: 'accSagittalDoubleFlat5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp: { code: 'accSagittalDoubleSharp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat: { code: 'accSagittalDoubleFlat', parenRightPaddingAdjustment: -1 },\n accSagittal7v11KleismaUp: { code: 'accSagittal7v11KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v11KleismaDown: { code: 'accSagittal7v11KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal17CommaUp: { code: 'accSagittal17CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal17CommaDown: { code: 'accSagittal17CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal55CommaUp: { code: 'accSagittal55CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal55CommaDown: { code: 'accSagittal55CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7v11CommaUp: { code: 'accSagittal7v11CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v11CommaDown: { code: 'accSagittal7v11CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v11SmallDiesisUp: { code: 'accSagittal5v11SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v11SmallDiesisDown: { code: 'accSagittal5v11SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v11SDown: { code: 'accSagittalSharp5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v11SUp: { code: 'accSagittalFlat5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11CDown: { code: 'accSagittalSharp7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11CUp: { code: 'accSagittalFlat7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp55CDown: { code: 'accSagittalSharp55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat55CUp: { code: 'accSagittalFlat55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17CDown: { code: 'accSagittalSharp17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17CUp: { code: 'accSagittalFlat17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11kDown: { code: 'accSagittalSharp7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11kUp: { code: 'accSagittalFlat7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11kUp: { code: 'accSagittalSharp7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11kDown: { code: 'accSagittalFlat7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17CUp: { code: 'accSagittalSharp17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17CDown: { code: 'accSagittalFlat17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp55CUp: { code: 'accSagittalSharp55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat55CDown: { code: 'accSagittalFlat55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11CUp: { code: 'accSagittalSharp7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11CDown: { code: 'accSagittalFlat7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v11SUp: { code: 'accSagittalSharp5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v11SDown: { code: 'accSagittalFlat5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v11SDown: { code: 'accSagittalDoubleSharp5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v11SUp: { code: 'accSagittalDoubleFlat5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v11CDown: { code: 'accSagittalDoubleSharp7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v11CUp: { code: 'accSagittalDoubleFlat7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp55CDown: { code: 'accSagittalDoubleSharp55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat55CUp: { code: 'accSagittalDoubleFlat55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp17CDown: { code: 'accSagittalDoubleSharp17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat17CUp: { code: 'accSagittalDoubleFlat17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v11kDown: { code: 'accSagittalDoubleSharp7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v11kUp: { code: 'accSagittalDoubleFlat7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittal23CommaUp: { code: 'accSagittal23CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal23CommaDown: { code: 'accSagittal23CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v19CommaUp: { code: 'accSagittal5v19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v19CommaDown: { code: 'accSagittal5v19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v23SmallDiesisUp: { code: 'accSagittal5v23SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v23SmallDiesisDown: { code: 'accSagittal5v23SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v23SDown: { code: 'accSagittalSharp5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v23SUp: { code: 'accSagittalFlat5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v19CDown: { code: 'accSagittalSharp5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v19CUp: { code: 'accSagittalFlat5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23CDown: { code: 'accSagittalSharp23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23CUp: { code: 'accSagittalFlat23CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23CUp: { code: 'accSagittalSharp23CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23CDown: { code: 'accSagittalFlat23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v19CUp: { code: 'accSagittalSharp5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v19CDown: { code: 'accSagittalFlat5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v23SUp: { code: 'accSagittalSharp5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v23SDown: { code: 'accSagittalFlat5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v23SDown: { code: 'accSagittalDoubleSharp5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v23SUp: { code: 'accSagittalDoubleFlat5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v19CDown: { code: 'accSagittalDoubleSharp5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v19CUp: { code: 'accSagittalDoubleFlat5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp23CDown: { code: 'accSagittalDoubleSharp23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat23CUp: { code: 'accSagittalDoubleFlat23CUp', parenRightPaddingAdjustment: -1 },\n accSagittal19SchismaUp: { code: 'accSagittal19SchismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal19SchismaDown: { code: 'accSagittal19SchismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal17KleismaUp: { code: 'accSagittal17KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal17KleismaDown: { code: 'accSagittal17KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal143CommaUp: { code: 'accSagittal143CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal143CommaDown: { code: 'accSagittal143CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v49CommaUp: { code: 'accSagittal11v49CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v49CommaDown: { code: 'accSagittal11v49CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal19CommaUp: { code: 'accSagittal19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal19CommaDown: { code: 'accSagittal19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7v19CommaUp: { code: 'accSagittal7v19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v19CommaDown: { code: 'accSagittal7v19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal49SmallDiesisUp: { code: 'accSagittal49SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49SmallDiesisDown: { code: 'accSagittal49SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal23SmallDiesisUp: { code: 'accSagittal23SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal23SmallDiesisDown: { code: 'accSagittal23SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v13MediumDiesisUp: { code: 'accSagittal5v13MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v13MediumDiesisDown: { code: 'accSagittal5v13MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v19MediumDiesisUp: { code: 'accSagittal11v19MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v19MediumDiesisDown: { code: 'accSagittal11v19MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal49MediumDiesisUp: { code: 'accSagittal49MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49MediumDiesisDown: { code: 'accSagittal49MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v49MediumDiesisUp: { code: 'accSagittal5v49MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v49MediumDiesisDown: { code: 'accSagittal5v49MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal49LargeDiesisUp: { code: 'accSagittal49LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49LargeDiesisDown: { code: 'accSagittal49LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v19LargeDiesisUp: { code: 'accSagittal11v19LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v19LargeDiesisDown: { code: 'accSagittal11v19LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v13LargeDiesisUp: { code: 'accSagittal5v13LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v13LargeDiesisDown: { code: 'accSagittal5v13LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23SDown: { code: 'accSagittalSharp23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23SUp: { code: 'accSagittalFlat23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49SDown: { code: 'accSagittalSharp49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49SUp: { code: 'accSagittalFlat49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v19CDown: { code: 'accSagittalSharp7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v19CUp: { code: 'accSagittalFlat7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19CDown: { code: 'accSagittalSharp19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19CUp: { code: 'accSagittalFlat19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v49CDown: { code: 'accSagittalSharp11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v49CUp: { code: 'accSagittalFlat11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp143CDown: { code: 'accSagittalSharp143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat143CUp: { code: 'accSagittalFlat143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17kDown: { code: 'accSagittalSharp17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17kUp: { code: 'accSagittalFlat17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19sDown: { code: 'accSagittalSharp19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19sUp: { code: 'accSagittalFlat19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19sUp: { code: 'accSagittalSharp19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19sDown: { code: 'accSagittalFlat19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17kUp: { code: 'accSagittalSharp17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17kDown: { code: 'accSagittalFlat17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp143CUp: { code: 'accSagittalSharp143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat143CDown: { code: 'accSagittalFlat143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v49CUp: { code: 'accSagittalSharp11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v49CDown: { code: 'accSagittalFlat11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19CUp: { code: 'accSagittalSharp19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19CDown: { code: 'accSagittalFlat19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v19CUp: { code: 'accSagittalSharp7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v19CDown: { code: 'accSagittalFlat7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49SUp: { code: 'accSagittalSharp49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49SDown: { code: 'accSagittalFlat49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23SUp: { code: 'accSagittalSharp23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23SDown: { code: 'accSagittalFlat23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v13MUp: { code: 'accSagittalSharp5v13MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v13MDown: { code: 'accSagittalFlat5v13MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v19MUp: { code: 'accSagittalSharp11v19MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v19MDown: { code: 'accSagittalFlat11v19MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49MUp: { code: 'accSagittalSharp49MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49MDown: { code: 'accSagittalFlat49MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v49MUp: { code: 'accSagittalSharp5v49MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v49MDown: { code: 'accSagittalFlat5v49MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49LUp: { code: 'accSagittalSharp49LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49LDown: { code: 'accSagittalFlat49LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v19LUp: { code: 'accSagittalSharp11v19LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v19LDown: { code: 'accSagittalFlat11v19LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v13LUp: { code: 'accSagittalSharp5v13LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v13LDown: { code: 'accSagittalFlat5v13LDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp23SDown: { code: 'accSagittalDoubleSharp23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat23SUp: { code: 'accSagittalDoubleFlat23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp49SDown: { code: 'accSagittalDoubleSharp49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat49SUp: { code: 'accSagittalDoubleFlat49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v19CDown: { code: 'accSagittalDoubleSharp7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v19CUp: { code: 'accSagittalDoubleFlat7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp19CDown: { code: 'accSagittalDoubleSharp19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat19CUp: { code: 'accSagittalDoubleFlat19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp11v49CDown: { code: 'accSagittalDoubleSharp11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat11v49CUp: { code: 'accSagittalDoubleFlat11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp143CDown: { code: 'accSagittalDoubleSharp143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat143CUp: { code: 'accSagittalDoubleFlat143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp17kDown: { code: 'accSagittalDoubleSharp17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat17kUp: { code: 'accSagittalDoubleFlat17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp19sDown: { code: 'accSagittalDoubleSharp19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat19sUp: { code: 'accSagittalDoubleFlat19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalShaftUp: { code: 'accSagittalShaftUp', parenRightPaddingAdjustment: -1 },\n accSagittalShaftDown: { code: 'accSagittalShaftDown', parenRightPaddingAdjustment: -1 },\n accSagittalAcute: { code: 'accSagittalAcute', parenRightPaddingAdjustment: -1 },\n accSagittalGrave: { code: 'accSagittalGrave', parenRightPaddingAdjustment: -1 },\n accSagittal1MinaUp: { code: 'accSagittal1MinaUp', parenRightPaddingAdjustment: -1 },\n accSagittal1MinaDown: { code: 'accSagittal1MinaDown', parenRightPaddingAdjustment: -1 },\n accSagittal2MinasUp: { code: 'accSagittal2MinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal2MinasDown: { code: 'accSagittal2MinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal1TinaUp: { code: 'accSagittal1TinaUp', parenRightPaddingAdjustment: -1 },\n accSagittal1TinaDown: { code: 'accSagittal1TinaDown', parenRightPaddingAdjustment: -1 },\n accSagittal2TinasUp: { code: 'accSagittal2TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal2TinasDown: { code: 'accSagittal2TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal3TinasUp: { code: 'accSagittal3TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal3TinasDown: { code: 'accSagittal3TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal4TinasUp: { code: 'accSagittal4TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal4TinasDown: { code: 'accSagittal4TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal5TinasUp: { code: 'accSagittal5TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal5TinasDown: { code: 'accSagittal5TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal6TinasUp: { code: 'accSagittal6TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal6TinasDown: { code: 'accSagittal6TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal7TinasUp: { code: 'accSagittal7TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal7TinasDown: { code: 'accSagittal7TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal8TinasUp: { code: 'accSagittal8TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal8TinasDown: { code: 'accSagittal8TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal9TinasUp: { code: 'accSagittal9TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal9TinasDown: { code: 'accSagittal9TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittalFractionalTinaUp: { code: 'accSagittalFractionalTinaUp', parenRightPaddingAdjustment: -1 },\n accSagittalFractionalTinaDown: { code: 'accSagittalFractionalTinaDown', parenRightPaddingAdjustment: -1 },\n accidentalNarrowReversedFlat: { code: 'accidentalNarrowReversedFlat', parenRightPaddingAdjustment: -1 },\n accidentalNarrowReversedFlatAndFlat: {\n code: 'accidentalNarrowReversedFlatAndFlat',\n parenRightPaddingAdjustment: -1,\n },\n accidentalWilsonPlus: { code: 'accidentalWilsonPlus', parenRightPaddingAdjustment: -1 },\n accidentalWilsonMinus: { code: 'accidentalWilsonMinus', parenRightPaddingAdjustment: -1 },\n};\n// Helps determine the layout of accidentals.\nconst accidentalColumns = {\n 1: {\n a: [1],\n b: [1],\n },\n 2: {\n a: [1, 2],\n },\n 3: {\n a: [1, 3, 2],\n b: [1, 2, 1],\n second_on_bottom: [1, 2, 3],\n },\n 4: {\n a: [1, 3, 4, 2],\n b: [1, 2, 3, 1],\n spaced_out_tetrachord: [1, 2, 1, 2],\n },\n 5: {\n a: [1, 3, 5, 4, 2],\n b: [1, 2, 4, 3, 1],\n spaced_out_pentachord: [1, 2, 3, 2, 1],\n very_spaced_out_pentachord: [1, 2, 1, 2, 1],\n },\n 6: {\n a: [1, 3, 5, 6, 4, 2],\n b: [1, 2, 4, 5, 3, 1],\n spaced_out_hexachord: [1, 3, 2, 1, 3, 2],\n very_spaced_out_hexachord: [1, 2, 1, 2, 1, 2],\n },\n};\nconst articulations = {\n 'a.': { code: 'augmentationDot', between_lines: true },\n av: {\n aboveCode: 'articStaccatissimoAbove',\n belowCode: 'articStaccatissimoBelow',\n between_lines: true,\n },\n 'a>': {\n aboveCode: 'articAccentAbove',\n belowCode: 'articAccentBelow',\n between_lines: true,\n },\n 'a-': {\n aboveCode: 'articTenutoAbove',\n belowCode: 'articTenutoBelow',\n between_lines: true,\n },\n 'a^': {\n aboveCode: 'articMarcatoAbove',\n belowCode: 'articMarcatoBelow',\n between_lines: false,\n },\n 'a+': { code: 'pluckedLeftHandPizzicato', between_lines: false },\n ao: {\n aboveCode: 'pluckedSnapPizzicatoAbove',\n belowCode: 'pluckedSnapPizzicatoBelow',\n between_lines: false,\n },\n ah: { code: 'stringsHarmonic', between_lines: false },\n 'a@': { aboveCode: 'fermataAbove', belowCode: 'fermataBelow', between_lines: false },\n 'a@a': { code: 'fermataAbove', between_lines: false },\n 'a@u': { code: 'fermataBelow', between_lines: false },\n 'a@s': { aboveCode: 'fermataShortAbove', belowCode: 'fermataShortBelow', between_lines: false },\n 'a@as': { code: 'fermataShortAbove', between_lines: false },\n 'a@us': { code: 'fermataShortBelow', between_lines: false },\n 'a@l': { aboveCode: 'fermataLongAbove', belowCode: 'fermataLongBelow', between_lines: false },\n 'a@al': { code: 'fermataLongAbove', between_lines: false },\n 'a@ul': { code: 'fermataLongBelow', between_lines: false },\n 'a@vl': { aboveCode: 'fermataVeryLongAbove', belowCode: 'fermataVeryLongBelow', between_lines: false },\n 'a@avl': { code: 'fermataVeryLongAbove', between_lines: false },\n 'a@uvl': { code: 'fermataVeryLongBelow', between_lines: false },\n 'a|': { code: 'stringsUpBow', between_lines: false },\n am: { code: 'stringsDownBow', between_lines: false },\n 'a,': { code: 'pictChokeCymbal', between_lines: false }, // Choked\n};\nconst ornaments = {\n mordent: { code: 'ornamentShortTrill' },\n mordent_inverted: { code: 'ornamentMordent' },\n turn: { code: 'ornamentTurn' },\n turn_inverted: { code: 'ornamentTurnSlash' },\n tr: { code: 'ornamentTrill' },\n upprall: { code: 'ornamentPrecompSlideTrillDAnglebert' },\n downprall: { code: 'ornamentPrecompDoubleCadenceUpperPrefix' },\n prallup: { code: 'ornamentPrecompTrillSuffixDandrieu' },\n pralldown: { code: 'ornamentPrecompTrillLowerSuffix' },\n upmordent: { code: 'ornamentPrecompSlideTrillBach' },\n downmordent: { code: 'ornamentPrecompDoubleCadenceUpperPrefixTurn' },\n lineprall: { code: 'ornamentPrecompAppoggTrill' },\n prallprall: { code: 'ornamentTremblement' },\n scoop: { code: 'brassScoop' },\n doit: { code: 'brassDoitMedium' },\n fall: { code: 'brassFallLipShort' },\n doitLong: { code: 'brassLiftMedium' },\n fallLong: { code: 'brassFallRoughMedium' },\n bend: { code: 'brassBend' },\n plungerClosed: { code: 'brassMuteClosed' },\n plungerOpen: { code: 'brassMuteOpen' },\n flip: { code: 'brassFlip' },\n jazzTurn: { code: 'brassJazzTurn' },\n smear: { code: 'brassSmear' },\n};\nexport class Tables {\n /**\n * @returns the `Font` object at the head of the music font stack.\n */\n static currentMusicFont() {\n if (Tables.MUSIC_FONT_STACK.length === 0) {\n throw new RuntimeError('NoFonts', 'The font stack is empty. See: await Flow.fetchMusicFont(...); Flow.setMusicFont(...).');\n }\n else {\n return Tables.MUSIC_FONT_STACK[0];\n }\n }\n static clefProperties(clef) {\n if (!clef || !(clef in clefs))\n throw new RuntimeError('BadArgument', 'Invalid clef: ' + clef);\n return clefs[clef];\n }\n /**\n * @param keyOctaveGlyph a string in the format \"key/octave\" (e.g., \"c/5\") or \"key/octave/custom-note-head-code\" (e.g., \"g/5/t3\").\n * @param clef\n * @param params a struct with one option, `octave_shift` for clef ottavation (0 = default; 1 = 8va; -1 = 8vb, etc.).\n * @returns properties for the specified note.\n */\n // eslint-disable-next-line\n static keyProperties(keyOctaveGlyph, clef = 'treble', params) {\n let options = { octave_shift: 0, duration: '4' };\n if (typeof params === 'object') {\n options = Object.assign(Object.assign({}, options), params);\n }\n const duration = Tables.sanitizeDuration(options.duration);\n const pieces = keyOctaveGlyph.split('/');\n if (pieces.length < 2) {\n throw new RuntimeError('BadArguments', `First argument must be note/octave or note/octave/glyph-code: ${keyOctaveGlyph}`);\n }\n const key = pieces[0].toUpperCase();\n const value = notesInfo[key];\n if (!value)\n throw new RuntimeError('BadArguments', 'Invalid key name: ' + key);\n if (value.octave)\n pieces[1] = value.octave.toString();\n let octave = parseInt(pieces[1], 10);\n // Octave_shift is the shift to compensate for clef 8va/8vb.\n octave += -1 * options.octave_shift;\n const baseIndex = octave * 7 - 4 * 7;\n let line = (baseIndex + value.index) / 2;\n line += Tables.clefProperties(clef).line_shift;\n let stroke = 0;\n if (line <= 0 && (line * 2) % 2 === 0)\n stroke = 1; // stroke up\n if (line >= 6 && (line * 2) % 2 === 0)\n stroke = -1; // stroke down\n // Integer value for note arithmetic.\n const int_value = typeof value.int_val !== 'undefined' ? octave * 12 + value.int_val : undefined;\n // If the user specified a glyph, overwrite the glyph code.\n const code = value.code;\n const shift_right = value.shift_right;\n let customNoteHeadProps = {};\n if (pieces.length > 2 && pieces[2]) {\n const glyphName = pieces[2].toUpperCase();\n customNoteHeadProps = { code: this.codeNoteHead(glyphName, duration) } || {};\n }\n return Object.assign({ key,\n octave,\n line,\n int_value, accidental: value.accidental, code,\n stroke,\n shift_right, displaced: false }, customNoteHeadProps);\n }\n static integerToNote(integer) {\n if (typeof integer === 'undefined' || integer < 0 || integer > 11) {\n throw new RuntimeError('BadArguments', `integerToNote() requires an integer in the range [0, 11]: ${integer}`);\n }\n const table = {\n 0: 'C',\n 1: 'C#',\n 2: 'D',\n 3: 'D#',\n 4: 'E',\n 5: 'F',\n 6: 'F#',\n 7: 'G',\n 8: 'G#',\n 9: 'A',\n 10: 'A#',\n 11: 'B',\n };\n const noteValue = table[integer];\n if (!noteValue) {\n throw new RuntimeError('BadArguments', `Unknown note value for integer: ${integer}`);\n }\n return noteValue;\n }\n static tabToGlyph(fret, scale = 1.0) {\n let glyph = undefined;\n let width = 0;\n let shift_y = 0;\n if (fret.toUpperCase() === 'X') {\n const glyphMetrics = new Glyph('accidentalDoubleSharp', Tables.TABLATURE_FONT_SCALE).getMetrics();\n glyph = 'accidentalDoubleSharp';\n if (glyphMetrics.width == undefined || glyphMetrics.height == undefined)\n throw new RuntimeError('InvalidMetrics', 'Width and height required');\n width = glyphMetrics.width;\n shift_y = -glyphMetrics.height / 2;\n }\n else {\n width = Tables.textWidth(fret);\n }\n return {\n text: fret,\n code: glyph,\n getWidth: () => width * scale,\n shift_y,\n };\n }\n // Used by annotation.ts and bend.ts. Clearly this implementation only works for the default font size.\n // TODO: The actual width depends on the font family, size, weight, style.\n static textWidth(text) {\n return 7 * text.toString().length;\n }\n static articulationCodes(artic) {\n return articulations[artic];\n }\n static accidentalCodes(acc) {\n return accidentals[acc];\n }\n static ornamentCodes(acc) {\n return ornaments[acc];\n }\n static keySignature(spec) {\n const keySpec = keySignatures[spec];\n if (!keySpec) {\n throw new RuntimeError('BadKeySignature', `Bad key signature spec: '${spec}'`);\n }\n if (!keySpec.acc) {\n return [];\n }\n const accidentalList = {\n b: [2, 0.5, 2.5, 1, 3, 1.5, 3.5],\n '#': [0, 1.5, -0.5, 1, 2.5, 0.5, 2],\n };\n const notes = accidentalList[keySpec.acc];\n const acc_list = [];\n for (let i = 0; i < keySpec.num; ++i) {\n const line = notes[i];\n acc_list.push({ type: keySpec.acc, line });\n }\n return acc_list;\n }\n static getKeySignatures() {\n return keySignatures;\n }\n static hasKeySignature(spec) {\n return spec in keySignatures;\n }\n /**\n * Convert duration aliases to the number based duration.\n * If the input isn't an alias, simply return the input.\n * @param duration\n * @returns Example: 'q' -> '4', '8' -> '8'\n */\n static sanitizeDuration(duration) {\n const durationNumber = durationAliases[duration];\n if (durationNumber !== undefined) {\n duration = durationNumber;\n }\n if (durations[duration] === undefined) {\n throw new RuntimeError('BadArguments', `The provided duration is not valid: ${duration}`);\n }\n return duration;\n }\n /** Convert the `duration` to a fraction. */\n static durationToFraction(duration) {\n return new Fraction().parse(Tables.sanitizeDuration(duration));\n }\n /** Convert the `duration` to a number. */\n static durationToNumber(duration) {\n return Tables.durationToFraction(duration).value();\n }\n /* Convert the `duration` to total ticks. */\n static durationToTicks(duration) {\n duration = Tables.sanitizeDuration(duration);\n const ticks = durations[duration];\n if (ticks === undefined) {\n throw new RuntimeError('InvalidDuration');\n }\n return ticks;\n }\n static codeNoteHead(type, duration) {\n let code = '';\n switch (type) {\n /* Diamond */\n case 'D0':\n code = 'noteheadDiamondWhole';\n break;\n case 'D1':\n code = 'noteheadDiamondHalf';\n break;\n case 'D2':\n code = 'noteheadDiamondBlack';\n break;\n case 'D3':\n code = 'noteheadDiamondBlack';\n break;\n /* Triangle */\n case 'T0':\n code = 'noteheadTriangleUpWhole';\n break;\n case 'T1':\n code = 'noteheadTriangleUpHalf';\n break;\n case 'T2':\n code = 'noteheadTriangleUpBlack';\n break;\n case 'T3':\n code = 'noteheadTriangleUpBlack';\n break;\n /* Cross */\n case 'X0':\n code = 'noteheadXWhole';\n break;\n case 'X1':\n code = 'noteheadXHalf';\n break;\n case 'X2':\n code = 'noteheadXBlack';\n break;\n case 'X3':\n code = 'noteheadCircleX';\n break;\n /* Square */\n case 'S1':\n code = 'noteheadSquareWhite';\n break;\n case 'S2':\n code = 'noteheadSquareBlack';\n break;\n /* Rectangle */\n case 'R1':\n code = 'vexNoteHeadRectWhite'; // no smufl code\n break;\n case 'R2':\n code = 'vexNoteHeadRectBlack'; // no smufl code\n break;\n case 'DO':\n code = 'noteheadTriangleUpBlack';\n break;\n case 'RE':\n code = 'noteheadMoonBlack';\n break;\n case 'MI':\n code = 'noteheadDiamondBlack';\n break;\n case 'FA':\n code = 'noteheadTriangleLeftBlack';\n break;\n case 'FAUP':\n code = 'noteheadTriangleRightBlack';\n break;\n case 'SO':\n code = 'noteheadBlack';\n break;\n case 'LA':\n code = 'noteheadSquareBlack';\n break;\n case 'TI':\n code = 'noteheadTriangleRoundDownBlack';\n break;\n case 'D':\n case 'H': // left for backwards compatibility\n switch (duration) {\n case '1/2':\n code = 'noteheadDiamondDoubleWhole';\n break;\n case '1':\n code = 'noteheadDiamondWhole';\n break;\n case '2':\n code = 'noteheadDiamondHalf';\n break;\n default:\n code = 'noteheadDiamondBlack';\n break;\n }\n break;\n case 'N':\n case 'G':\n switch (duration) {\n case '1/2':\n code = 'noteheadDoubleWhole';\n break;\n case '1':\n code = 'noteheadWhole';\n break;\n case '2':\n code = 'noteheadHalf';\n break;\n default:\n code = 'noteheadBlack';\n break;\n }\n break;\n case 'M': // left for backwards compatibility\n case 'X':\n switch (duration) {\n case '1/2':\n code = 'noteheadXDoubleWhole';\n break;\n case '1':\n code = 'noteheadXWhole';\n break;\n case '2':\n code = 'noteheadXHalf';\n break;\n default:\n code = 'noteheadXBlack';\n break;\n }\n break;\n case 'CX':\n switch (duration) {\n case '1/2':\n code = 'noteheadCircleXDoubleWhole';\n break;\n case '1':\n code = 'noteheadCircleXWhole';\n break;\n case '2':\n code = 'noteheadCircleXHalf';\n break;\n default:\n code = 'noteheadCircleX';\n break;\n }\n break;\n case 'CI':\n switch (duration) {\n case '1/2':\n code = 'noteheadCircledDoubleWhole';\n break;\n case '1':\n code = 'noteheadCircledWhole';\n break;\n case '2':\n code = 'noteheadCircledHalf';\n break;\n default:\n code = 'noteheadCircledBlack';\n break;\n }\n break;\n case 'SQ':\n switch (duration) {\n case '1/2':\n code = 'noteheadDoubleWholeSquare';\n break;\n case '1':\n code = 'noteheadSquareWhite';\n break;\n case '2':\n code = 'noteheadSquareWhite';\n break;\n default:\n code = 'noteheadSquareBlack';\n break;\n }\n break;\n case 'TU':\n switch (duration) {\n case '1/2':\n code = 'noteheadTriangleUpDoubleWhole';\n break;\n case '1':\n code = 'noteheadTriangleUpWhole';\n break;\n case '2':\n code = 'noteheadTriangleUpHalf';\n break;\n default:\n code = 'noteheadTriangleUpBlack';\n break;\n }\n break;\n case 'TD':\n switch (duration) {\n case '1/2':\n code = 'noteheadTriangleDownDoubleWhole';\n break;\n case '1':\n code = 'noteheadTriangleDownWhole';\n break;\n case '2':\n code = 'noteheadTriangleDownHalf';\n break;\n default:\n code = 'noteheadTriangleDownBlack';\n break;\n }\n break;\n case 'SF':\n switch (duration) {\n case '1/2':\n code = 'noteheadSlashedDoubleWhole1';\n break;\n case '1':\n code = 'noteheadSlashedWhole1';\n break;\n case '2':\n code = 'noteheadSlashedHalf1';\n break;\n default:\n code = 'noteheadSlashedBlack1';\n }\n break;\n case 'SB':\n switch (duration) {\n case '1/2':\n code = 'noteheadSlashedDoubleWhole2';\n break;\n case '1':\n code = 'noteheadSlashedWhole2';\n break;\n case '2':\n code = 'noteheadSlashedHalf2';\n break;\n default:\n code = 'noteheadSlashedBlack2';\n }\n break;\n }\n return code;\n }\n // Return a glyph given duration and type. The type can be a custom glyph code from customNoteHeads.\n // The default type is a regular note ('n').\n // eslint-disable-next-line\n static getGlyphProps(duration, type = 'n') {\n duration = Tables.sanitizeDuration(duration);\n // Lookup duration for default glyph head code\n const code = durationCodes[duration];\n if (code === undefined) {\n return undefined;\n }\n // Get glyph properties for 'type' from duration string (note, rest, harmonic, muted, slash)\n let glyphTypeProperties = code.type[type];\n // Try and get it from the custom list of note heads\n const codeNoteHead = Tables.codeNoteHead(type.toUpperCase(), duration);\n if (codeNoteHead != '')\n glyphTypeProperties = Object.assign(Object.assign({}, glyphTypeProperties), { code_head: codeNoteHead, code: codeNoteHead });\n const code_head = glyphTypeProperties.code_head;\n // The default implementation of getWidth() calls Glyph.getWidth(code_head, scale).\n // This can be overridden by an individual glyph type (see slash noteheads below: Tables.SLASH_NOTEHEAD_WIDTH).\n const getWidth = (scale = Tables.NOTATION_FONT_SCALE) => Glyph.getWidth(code_head, scale);\n // Merge duration props for 'duration' with the note head properties.\n return Object.assign(Object.assign(Object.assign({}, code.common), { getWidth: getWidth }), glyphTypeProperties);\n }\n}\nTables.SOFTMAX_FACTOR = 100;\nTables.STEM_WIDTH = 1.5;\nTables.STEM_HEIGHT = 35;\nTables.STAVE_LINE_THICKNESS = 1;\nTables.RENDER_PRECISION_PLACES = 3;\nTables.RESOLUTION = RESOLUTION;\n/**\n * Customize this by calling Flow.setMusicFont(...fontNames);\n */\nTables.MUSIC_FONT_STACK = [];\nTables.NOTATION_FONT_SCALE = 39;\nTables.TABLATURE_FONT_SCALE = 39;\nTables.SLASH_NOTEHEAD_WIDTH = 15;\nTables.STAVE_LINE_DISTANCE = 10;\n// HACK:\n// Since text origins are positioned at the baseline, we must\n// compensate for the ascender of the text. Of course, 1 staff space is\n// a very poor approximation.\n//\n// This will be deprecated in the future. This is a temporary solution until\n// we have more robust text metrics.\nTables.TEXT_HEIGHT_OFFSET_HACK = 1;\nTables.accidentalMap = accidentals;\nTables.accidentalColumnsTable = accidentalColumns;\nTables.unicode = {\n // ♯ accidental sharp\n sharp: String.fromCharCode(0x266f),\n // ♭ accidental flat\n flat: String.fromCharCode(0x266d),\n // ♮ accidental natural\n natural: String.fromCharCode(0x266e),\n // △ major seventh\n triangle: String.fromCharCode(0x25b3),\n // ø half-diminished\n 'o-with-slash': String.fromCharCode(0x00f8),\n // ° diminished\n degrees: String.fromCharCode(0x00b0),\n // ○ diminished\n circle: String.fromCharCode(0x25cb),\n};\n/* The list of valid note types. Used by note.ts during parseNoteStruct(). */\nTables.validTypes = validNoteTypes;\n// Default time signature.\nTables.TIME4_4 = {\n num_beats: 4,\n beat_value: 4,\n resolution: RESOLUTION,\n};\n// 1/2, 1, 2, 4, 8, 16, 32, 64, 128\n// NOTE: There is no 256 here! However, there are other mentions of 256 in this file.\n// For example, in durations has a 256 key, and sanitizeDuration() can return 256.\n// The sanitizeDuration() bit may need to be removed by 0xfe.\n// eslint-disable-next-line\nconst durationCodes = {\n '1/2': {\n common: {\n stem: false,\n stem_offset: 0,\n flag: false,\n stem_up_extension: -Tables.STEM_HEIGHT,\n stem_down_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_up_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_down_extension: -Tables.STEM_HEIGHT,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Breve rest\n code_head: 'restDoubleWhole',\n rest: true,\n position: 'B/5',\n dot_shiftY: 0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restDoubleWhole', scale);\n // },\n },\n s: {\n // Breve note slash -\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 1: {\n common: {\n stem: false,\n stem_offset: 0,\n flag: false,\n stem_up_extension: -Tables.STEM_HEIGHT,\n stem_down_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_up_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_down_extension: -Tables.STEM_HEIGHT,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Whole rest\n code_head: 'restWhole',\n leger_code_head: 'restWholeLegerLine',\n rest: true,\n position: 'D/5',\n dot_shiftY: 0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restWhole', scale);\n // },\n },\n s: {\n // Whole note slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 2: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: false,\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Half rest\n code_head: 'restHalf',\n leger_code_head: 'restHalfLegerLine',\n stem: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restHalf', scale);\n // },\n },\n s: {\n // Half note slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 4: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: false,\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Quarter rest\n code_head: 'restQuarter',\n stem: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.5,\n line_below: 1.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restQuarter', scale);\n // },\n },\n s: {\n // Quarter slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 8: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: true,\n beam_count: 1,\n stem_beam_extension: 0,\n code_flag_upstem: 'flag8thUp',\n code_flag_downstem: 'flag8thDown',\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Eighth rest\n code_head: 'rest8th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.0,\n line_below: 1.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest8th', scale);\n // },\n },\n s: {\n // Eighth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 16: {\n common: {\n beam_count: 2,\n stem_beam_extension: 0,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag16thUp',\n code_flag_downstem: 'flag16thDown',\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Sixteenth rest\n code_head: 'rest16th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.0,\n line_below: 2.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest16th', scale);\n // },\n },\n s: {\n // Sixteenth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 32: {\n common: {\n beam_count: 3,\n stem_beam_extension: 7.5,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag32ndUp',\n code_flag_downstem: 'flag32ndDown',\n stem_up_extension: 9,\n stem_down_extension: 9,\n tabnote_stem_up_extension: 9,\n tabnote_stem_down_extension: 9,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Thirty-second rest\n code_head: 'rest32nd',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -1.5,\n line_above: 2.0,\n line_below: 2.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest32nd', scale);\n // },\n },\n s: {\n // Thirty-second slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 64: {\n common: {\n beam_count: 4,\n stem_beam_extension: 15,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag64thUp',\n code_flag_downstem: 'flag64thDown',\n stem_up_extension: 13,\n stem_down_extension: 13,\n tabnote_stem_up_extension: 13,\n tabnote_stem_down_extension: 13,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Sixty-fourth rest\n code_head: 'rest64th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -1.5,\n line_above: 2.0,\n line_below: 3.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest64th', scale);\n // },\n },\n s: {\n // Sixty-fourth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 128: {\n common: {\n beam_count: 5,\n stem_beam_extension: 22.5,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag128thUp',\n code_flag_downstem: 'flag128thDown',\n stem_up_extension: 22,\n stem_down_extension: 22,\n tabnote_stem_up_extension: 22,\n tabnote_stem_down_extension: 22,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Hundred-twenty-eight rest\n code_head: 'rest128th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -2.5,\n line_above: 3.0,\n line_below: 3.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest128th', scale);\n // },\n },\n s: {\n // Hundred-twenty-eight slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// The file implements notes for Tablature notation. This consists of one or\n// more fret positions, and can either be drawn with or without stems.\n//\n// See `tests/tabnote_tests.ts` for usage examples.\nimport { Font } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { StemmableNote } from './stemmablenote';\nimport { Tables } from './tables';\nimport { Category, isDot } from './typeguard';\nimport { defined, RuntimeError } from './util';\n// Gets the unused strings grouped together if consecutive.\n//\n// Parameters:\n// * num_lines - The number of lines\n// * strings_used - An array of numbers representing which strings have fret positions\nfunction getUnusedStringGroups(num_lines, strings_used) {\n const stem_through = [];\n let group = [];\n for (let string = 1; string <= num_lines; string++) {\n const is_used = strings_used.indexOf(string) > -1;\n if (!is_used) {\n group.push(string);\n }\n else {\n stem_through.push(group);\n group = [];\n }\n }\n if (group.length > 0)\n stem_through.push(group);\n return stem_through;\n}\n// Gets groups of points that outline the partial stem lines\n// between fret positions\n//\n// Parameters:\n// * stem_Y - The `y` coordinate the stem is located on\n// * unused_strings - An array of groups of unused strings\n// * stave - The stave to use for reference\n// * stem_direction - The direction of the stem\nfunction getPartialStemLines(stem_y, unused_strings, stave, stem_direction) {\n const up_stem = stem_direction !== 1;\n const down_stem = stem_direction !== -1;\n const line_spacing = stave.getSpacingBetweenLines();\n const total_lines = stave.getNumLines();\n const stem_lines = [];\n unused_strings.forEach((strings) => {\n const containsLastString = strings.indexOf(total_lines) > -1;\n const containsFirstString = strings.indexOf(1) > -1;\n if ((up_stem && containsFirstString) || (down_stem && containsLastString)) {\n return;\n }\n // If there's only one string in the group, push a duplicate value.\n // We do this because we need 2 strings to convert into upper/lower y\n // values.\n if (strings.length === 1) {\n strings.push(strings[0]);\n }\n const line_ys = [];\n // Iterate through each group string and store it's y position\n strings.forEach((string, index, strings) => {\n const isTopBound = string === 1;\n const isBottomBound = string === total_lines;\n // Get the y value for the appropriate staff line,\n // we adjust for a 0 index array, since string numbers are index 1\n let y = stave.getYForLine(string - 1);\n // Unless the string is the first or last, add padding to each side\n // of the line\n if (index === 0 && !isTopBound) {\n y -= line_spacing / 2 - 1;\n }\n else if (index === strings.length - 1 && !isBottomBound) {\n y += line_spacing / 2 - 1;\n }\n // Store the y value\n line_ys.push(y);\n // Store a subsequent y value connecting this group to the main\n // stem above/below the stave if it's the top/bottom string\n if (stem_direction === 1 && isTopBound) {\n line_ys.push(stem_y - 2);\n }\n else if (stem_direction === -1 && isBottomBound) {\n line_ys.push(stem_y + 2);\n }\n });\n // Add the sorted y values to the\n stem_lines.push(line_ys.sort((a, b) => a - b));\n });\n return stem_lines;\n}\nexport class TabNote extends StemmableNote {\n // Initialize the TabNote with a `noteStruct` full of properties\n // and whether to `draw_stem` when rendering the note\n constructor(noteStruct, draw_stem = false) {\n super(noteStruct);\n this.glyphs = [];\n // Return the number of the greatest string, which is the string lowest on the display\n this.greatestString = () => {\n return this.positions.map((x) => x.str).reduce((a, b) => (a > b ? a : b));\n };\n // Return the number of the least string, which is the string highest on the display\n this.leastString = () => {\n return this.positions.map((x) => x.str).reduce((a, b) => (a < b ? a : b));\n };\n this.ghost = false; // Renders parenthesis around notes\n // Note properties\n // The fret positions in the note. An array of `{ str: X, fret: X }`\n this.positions = noteStruct.positions || [];\n // Render Options\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads and rests\n glyph_font_scale: Tables.TABLATURE_FONT_SCALE, \n // Flag to draw a stem\n draw_stem, \n // Flag to draw dot modifiers\n draw_dots: draw_stem, \n // Flag to extend the main stem through the stave and fret positions\n draw_stem_through_stave: false, \n // vertical shift from stave line\n y_shift: 0, \n // normal glyph scale\n scale: 1.0, \n // default tablature font\n font: `${Font.SIZE}pt ${Font.SANS_SERIF}` });\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n this.buildStem();\n if (noteStruct.stem_direction) {\n this.setStemDirection(noteStruct.stem_direction);\n }\n else {\n this.setStemDirection(Stem.UP);\n }\n // Renders parenthesis around notes\n this.ghost = false;\n this.updateWidth();\n }\n static get CATEGORY() {\n return Category.TabNote;\n }\n reset() {\n super.reset();\n if (this.stave)\n this.setStave(this.stave);\n return this;\n }\n // Set as ghost `TabNote`, surrounds the fret positions with parenthesis.\n // Often used for indicating frets that are being bent to\n setGhost(ghost) {\n this.ghost = ghost;\n this.updateWidth();\n return this;\n }\n // Determine if the note has a stem\n hasStem() {\n if (this.render_options.draw_stem)\n return true;\n return false;\n }\n // Get the default stem extension for the note\n getStemExtension() {\n const glyph = this.getGlyph();\n if (this.stem_extension_override != null) {\n return this.stem_extension_override;\n }\n if (glyph) {\n return this.getStemDirection() === Stem.UP ? glyph.tabnote_stem_up_extension : glyph.tabnote_stem_down_extension;\n }\n return 0;\n }\n // Calculate and store the width of the note\n updateWidth() {\n this.glyphs = [];\n this.width = 0;\n for (let i = 0; i < this.positions.length; ++i) {\n let fret = this.positions[i].fret;\n if (this.ghost)\n fret = '(' + fret + ')';\n const glyph = Tables.tabToGlyph(fret.toString(), this.render_options.scale);\n this.glyphs.push(glyph);\n this.width = Math.max(glyph.getWidth(), this.width);\n }\n // For some reason we associate a notehead glyph with a TabNote, and this\n // glyph is used for certain width calculations. Of course, this is totally\n // incorrect since a notehead is a poor approximation for the dimensions of\n // a fret number which can have multiple digits. As a result, we must\n // overwrite getWidth() to return the correct width\n this.glyph.getWidth = () => this.width;\n }\n // Set the `stave` to the note\n setStave(stave) {\n super.setStave(stave);\n const ctx = stave.getContext();\n this.setContext(ctx);\n // Calculate the fret number width based on font used\n if (ctx) {\n this.width = 0;\n for (let i = 0; i < this.glyphs.length; ++i) {\n const glyph = this.glyphs[i];\n const text = '' + glyph.text;\n if (text.toUpperCase() !== 'X') {\n ctx.save();\n ctx.setFont(this.render_options.font);\n glyph.width = ctx.measureText(text).width;\n ctx.restore();\n glyph.getWidth = () => glyph.width;\n }\n this.width = Math.max(glyph.getWidth(), this.width);\n }\n this.glyph.getWidth = () => this.width;\n }\n // we subtract 1 from `line` because getYForLine expects a 0-based index,\n // while the position.str is a 1-based index\n const ys = this.positions.map(({ str: line }) => stave.getYForLine(Number(line) - 1));\n this.setYs(ys);\n if (this.stem) {\n this.stem.setYBounds(this.getStemY(), this.getStemY());\n }\n return this;\n }\n // Get the fret positions for the note\n getPositions() {\n return this.positions;\n }\n // Get the default `x` and `y` coordinates for a modifier at a specific\n // `position` at a fret position `index`\n getModifierStartXY(position, index) {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-Values calculated for this note.');\n }\n let x = 0;\n if (position === Modifier.Position.LEFT) {\n x = -1 * 2; // FIXME: modifier padding, move to font file\n }\n else if (position === Modifier.Position.RIGHT) {\n x = this.width + 2; // FIXME: modifier padding, move to font file\n }\n else if (position === Modifier.Position.BELOW || position === Modifier.Position.ABOVE) {\n const note_glyph_width = this.glyph.getWidth();\n x = note_glyph_width / 2;\n }\n return {\n x: this.getAbsoluteX() + x,\n y: this.ys[index],\n };\n }\n // Get the default line for rest\n getLineForRest() {\n return Number(this.positions[0].str);\n }\n // Pre-render formatting\n preFormat() {\n if (this.preFormatted)\n return;\n if (this.modifierContext)\n this.modifierContext.preFormat();\n // width is already set during init()\n this.preFormatted = true;\n }\n // Get the x position for the stem\n getStemX() {\n return this.getCenterGlyphX();\n }\n // Get the y position for the stem\n getStemY() {\n const num_lines = this.checkStave().getNumLines();\n // The decimal staff line amounts provide optimal spacing between the\n // fret number and the stem\n const stemUpLine = -0.5;\n const stemDownLine = num_lines - 0.5;\n const stemStartLine = Stem.UP === this.stem_direction ? stemUpLine : stemDownLine;\n return this.checkStave().getYForLine(stemStartLine);\n }\n // Get the stem extents for the tabnote\n getStemExtents() {\n return this.checkStem().getExtents();\n }\n // Draw the fal onto the context\n drawFlag() {\n var _a;\n const { beam, glyph, render_options: { draw_stem }, } = this;\n const context = this.checkContext();\n const shouldDrawFlag = beam == undefined && draw_stem;\n // Now it's the flag's turn.\n if (glyph.flag && shouldDrawFlag) {\n const flag_x = this.getStemX();\n const flag_y = this.getStemDirection() === Stem.DOWN\n ? // Down stems are below the note head and have flags on the right.\n this.getStemY() - this.checkStem().getHeight() - (this.glyph ? this.glyph.stem_down_extension : 0)\n : // Up stems are above the note head and have flags on the right.\n this.getStemY() - this.checkStem().getHeight() + (this.glyph ? this.glyph.stem_up_extension : 0);\n // Draw the Flag\n //this.flag?.setOptions({ category: 'flag.tabStem' });\n (_a = this.flag) === null || _a === void 0 ? void 0 : _a.render(context, flag_x, flag_y);\n //Glyph.renderGlyph(context, flag_x, flag_y, glyph_font_scale, flag_code, { category: 'flag.tabStem' });\n }\n }\n // Render the modifiers onto the context.\n drawModifiers() {\n this.modifiers.forEach((modifier) => {\n // Only draw the dots if enabled.\n if (isDot(modifier) && !this.render_options.draw_dots) {\n return;\n }\n modifier.setContext(this.getContext());\n modifier.drawWithStyle();\n });\n }\n // Render the stem extension through the fret positions\n drawStemThrough() {\n const stemX = this.getStemX();\n const stemY = this.getStemY();\n const ctx = this.checkContext();\n const drawStem = this.render_options.draw_stem;\n const stemThrough = this.render_options.draw_stem_through_stave;\n if (drawStem && stemThrough) {\n const numLines = this.checkStave().getNumLines();\n const stringsUsed = this.positions.map((position) => Number(position.str));\n const unusedStrings = getUnusedStringGroups(numLines, stringsUsed);\n const stemLines = getPartialStemLines(stemY, unusedStrings, this.checkStave(), this.getStemDirection());\n ctx.save();\n ctx.setLineWidth(Stem.WIDTH);\n stemLines.forEach((bounds) => {\n if (bounds.length === 0)\n return;\n ctx.beginPath();\n ctx.moveTo(stemX, bounds[0]);\n ctx.lineTo(stemX, bounds[bounds.length - 1]);\n ctx.stroke();\n ctx.closePath();\n });\n ctx.restore();\n }\n }\n // Render the fret positions onto the context\n drawPositions() {\n const ctx = this.checkContext();\n const x = this.getAbsoluteX();\n const ys = this.ys;\n for (let i = 0; i < this.positions.length; ++i) {\n const y = ys[i] + this.render_options.y_shift;\n const glyph = this.glyphs[i];\n // Center the fret text beneath the notation note head\n const note_glyph_width = this.glyph.getWidth();\n const tab_x = x + note_glyph_width / 2 - glyph.getWidth() / 2;\n // FIXME: Magic numbers.\n ctx.clearRect(tab_x - 2, y - 3, glyph.getWidth() + 4, 6);\n if (glyph.code) {\n Glyph.renderGlyph(ctx, tab_x, y, this.render_options.glyph_font_scale * this.render_options.scale, glyph.code);\n }\n else {\n ctx.save();\n ctx.setFont(this.render_options.font);\n const text = glyph.text.toString();\n ctx.fillText(text, tab_x, y + 5 * this.render_options.scale);\n ctx.restore();\n }\n }\n }\n // The main rendering function for the entire note.\n draw() {\n const ctx = this.checkContext();\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', \"Can't draw note without Y values.\");\n }\n this.setRendered();\n const render_stem = this.beam == undefined && this.render_options.draw_stem;\n ctx.openGroup('tabnote', this.getAttribute('id'), { pointerBBox: true });\n this.drawPositions();\n this.drawStemThrough();\n if (this.stem && render_stem) {\n const stem_x = this.getStemX();\n this.stem.setNoteHeadXBounds(stem_x, stem_x);\n this.stem.setContext(ctx).draw();\n }\n this.drawFlag();\n this.drawModifiers();\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { TabTie } from './tabtie';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class TabSlide extends TabTie {\n /**\n * @param notes is a struct of the form:\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n * @param notes.first_note the starting note of the slide\n * @param notes.last_note the ending note of the slide\n * @param notes.first_indices specifies which string + fret positions of the TabNote are used in this slide. zero indexed.\n * @param notes.last_indices currently unused. we assume it's the same as first_indices.\n *\n * @param direction TabSlide.SLIDE_UP or TabSlide.SLIDE_DOWN\n */\n constructor(notes, direction) {\n super(notes, 'sl.');\n // Determine the direction automatically if it is not provided.\n if (!direction) {\n let first_fret = notes.first_note.getPositions()[0].fret;\n if (typeof first_fret === 'string') {\n first_fret = parseInt(first_fret, 10);\n }\n let last_fret = notes.last_note.getPositions()[0].fret;\n if (typeof last_fret === 'string') {\n last_fret = parseInt(last_fret, 10);\n }\n // If either of the frets are 'X', parseInt() above will return NaN.\n // Choose TabSlide.SLIDE_UP by default.\n if (isNaN(first_fret) || isNaN(last_fret)) {\n direction = TabSlide.SLIDE_UP;\n }\n else {\n direction = first_fret > last_fret ? TabSlide.SLIDE_DOWN : TabSlide.SLIDE_UP;\n }\n }\n this.direction = direction;\n this.render_options.cp1 = 11;\n this.render_options.cp2 = 14;\n this.render_options.y_shift = 0.5;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.TabSlide;\n }\n static get SLIDE_UP() {\n return 1;\n }\n static get SLIDE_DOWN() {\n return -1;\n }\n static createSlideUp(notes) {\n return new TabSlide(notes, TabSlide.SLIDE_UP);\n }\n static createSlideDown(notes) {\n return new TabSlide(notes, TabSlide.SLIDE_DOWN);\n }\n renderTie(params) {\n if (params.first_ys.length === 0 || params.last_ys.length === 0) {\n throw new RuntimeError('BadArguments', 'No Y-values to render');\n }\n const ctx = this.checkContext();\n const first_x_px = params.first_x_px;\n const first_ys = params.first_ys;\n const last_x_px = params.last_x_px;\n const direction = params.direction;\n if (direction !== TabSlide.SLIDE_UP && direction !== TabSlide.SLIDE_DOWN) {\n throw new RuntimeError('BadSlide', 'Invalid slide direction');\n }\n // eslint-disable-next-line\n const first_indices = this.notes.first_indices;\n for (let i = 0; i < first_indices.length; ++i) {\n const slide_y = first_ys[first_indices[i]] + this.render_options.y_shift;\n if (isNaN(slide_y)) {\n throw new RuntimeError('BadArguments', 'Bad indices for slide rendering.');\n }\n ctx.beginPath();\n ctx.moveTo(first_x_px, slide_y + 3 * direction);\n ctx.lineTo(last_x_px, slide_y - 3 * direction);\n ctx.closePath();\n ctx.stroke();\n }\n this.setRendered();\n }\n}\nTabSlide.TEXT_FONT = {\n family: Font.SERIF,\n size: 10,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Stave } from './stave';\nimport { Category } from './typeguard';\nexport class TabStave extends Stave {\n static get CATEGORY() {\n return Category.TabStave;\n }\n constructor(x, y, width, options) {\n const tab_options = Object.assign({ spacing_between_lines_px: 13, num_lines: 6, top_text_position: 1 }, options);\n super(x, y, width, tab_options);\n }\n getYForGlyphs() {\n return this.getYForLine(2.5);\n }\n // Deprecated\n addTabGlyph() {\n this.addClef('tab');\n return this;\n }\n}\n","// / [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { StaveTie } from './stavetie';\nimport { Category } from './typeguard';\nexport class TabTie extends StaveTie {\n static get CATEGORY() {\n return Category.TabTie;\n }\n static createHammeron(notes) {\n return new TabTie(notes, 'H');\n }\n static createPulloff(notes) {\n return new TabTie(notes, 'P');\n }\n /**\n * @param notes is a struct that has:\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n *\n * @param text\n */\n constructor(notes, text) {\n super(notes, text);\n this.render_options.cp1 = 9;\n this.render_options.cp2 = 11;\n this.render_options.y_shift = 3;\n this.direction = -1; // Tab tie's are always face up.\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n//\n// This file implements `TextBrackets` which extend between two notes.\n// The octave transposition markings (8va, 8vb, 15va, 15vb) can be created\n// using this class.\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Renderer } from './renderer';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.TextBracket.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextBracket.DEBUG)\n log('Vex.Flow.TextBracket', args);\n}\nexport var TextBracketPosition;\n(function (TextBracketPosition) {\n TextBracketPosition[TextBracketPosition[\"TOP\"] = 1] = \"TOP\";\n TextBracketPosition[TextBracketPosition[\"BOTTOM\"] = -1] = \"BOTTOM\";\n})(TextBracketPosition || (TextBracketPosition = {}));\nexport class TextBracket extends Element {\n constructor({ start, stop, text = '', superscript = '', position = TextBracketPosition.TOP }) {\n super();\n this.start = start;\n this.stop = stop;\n this.text = text;\n this.superscript = superscript;\n this.position = typeof position === 'string' ? TextBracket.PositionString[position] : position;\n this.line = 1;\n this.resetFont();\n this.render_options = {\n dashed: true,\n dash: [5],\n color: 'black',\n line_width: 1,\n show_bracket: true,\n bracket_height: 8,\n // In the BOTTOM position, the bracket line can extend\n // under the superscript.\n underline_superscript: true,\n };\n }\n static get CATEGORY() {\n return Category.TextBracket;\n }\n static get Position() {\n return TextBracketPosition;\n }\n static get PositionString() {\n return {\n top: TextBracketPosition.TOP,\n bottom: TextBracketPosition.BOTTOM,\n };\n }\n /**\n * @deprecated Use `TextBracket.Position` instead.\n */\n static get Positions() {\n L('Positions is deprecated, use TextBracketPosition instead.');\n return TextBracketPosition;\n }\n /**\n * @deprecated Use `TextBracket.PositionString` instead.\n */\n static get PositionsString() {\n L('PositionsString is deprecated, use PositionString instead.');\n return TextBracket.PositionString;\n }\n /**\n * Apply the text backet styling to the provided context.\n * @param ctx\n * @returns this\n */\n applyStyle(ctx) {\n ctx.setFont(this.font);\n const options = this.render_options;\n ctx.setStrokeStyle(options.color);\n ctx.setFillStyle(options.color);\n ctx.setLineWidth(options.line_width);\n return this;\n }\n // Set whether the bracket line should be `dashed`. You can also\n // optionally set the `dash` pattern by passing in an array of numbers\n setDashed(dashed, dash) {\n this.render_options.dashed = dashed;\n if (dash)\n this.render_options.dash = dash;\n return this;\n }\n // Set the rendering `context` for the octave bracket\n setLine(line) {\n this.line = line;\n return this;\n }\n // Draw the octave bracket on the rendering context\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let y = 0;\n switch (this.position) {\n case TextBracketPosition.TOP:\n y = this.start.checkStave().getYForTopText(this.line);\n break;\n case TextBracketPosition.BOTTOM:\n y = this.start.checkStave().getYForBottomText(this.line + Tables.TEXT_HEIGHT_OFFSET_HACK);\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} is invalid.`);\n }\n // Get the preliminary start and stop coordintates for the bracket\n const start = { x: this.start.getAbsoluteX(), y };\n const stop = { x: this.stop.getAbsoluteX(), y };\n L('Rendering TextBracket: start:', start, 'stop:', stop, 'y:', y);\n const bracket_height = this.render_options.bracket_height * this.position;\n ctx.save();\n this.applyStyle(ctx);\n // Draw text\n ctx.fillText(this.text, start.x, start.y);\n // Get the width and height for the octave number\n const main_measure = ctx.measureText(this.text);\n const main_width = main_measure.width;\n const main_height = main_measure.height;\n // Calculate the y position for the super script\n const super_y = start.y - main_height / 2.5;\n // We called this.resetFont() in the constructor, so we know this.textFont is available.\n // eslint-disable-next-line\n const { family, size, weight, style } = this.textFont;\n // To draw the superscript, we scale the font size by 1/1.4.\n const smallerFontSize = Font.scaleSize(size, 0.714286);\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.superscript, start.x + main_width + 1, super_y);\n // Determine width and height of the superscript\n const super_measure = ctx.measureText(this.superscript);\n const super_width = super_measure.width;\n const super_height = super_measure.height;\n // Setup initial coordinates for the bracket line\n let start_x = start.x;\n let line_y = super_y;\n const end_x = stop.x + this.stop.getGlyph().getWidth();\n // Adjust x and y coordinates based on position\n if (this.position === TextBracketPosition.TOP) {\n start_x += main_width + super_width + 5;\n line_y -= super_height / 2.7;\n }\n else if (this.position === TextBracketPosition.BOTTOM) {\n line_y += super_height / 2.7;\n start_x += main_width + 2;\n if (!this.render_options.underline_superscript) {\n start_x += super_width;\n }\n }\n if (this.render_options.dashed) {\n // Main line\n Renderer.drawDashedLine(ctx, start_x, line_y, end_x, line_y, this.render_options.dash);\n // Ending Bracket\n if (this.render_options.show_bracket) {\n Renderer.drawDashedLine(ctx, end_x, line_y + 1 * this.position, end_x, line_y + bracket_height, this.render_options.dash);\n }\n }\n else {\n ctx.beginPath();\n ctx.moveTo(start_x, line_y);\n // Main line\n ctx.lineTo(end_x, line_y);\n if (this.render_options.show_bracket) {\n // Ending bracket\n ctx.lineTo(end_x, line_y + bracket_height);\n }\n ctx.stroke();\n ctx.closePath();\n }\n ctx.restore();\n }\n}\nTextBracket.DEBUG = false;\nTextBracket.TEXT_FONT = {\n family: Font.SERIF,\n size: 15,\n weight: FontWeight.NORMAL,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextDynamics.DEBUG)\n log('Vex.Flow.TextDynamics', args);\n}\n/**\n * `TextDynamics` renders traditional\n * text dynamics markings, **ie: p, f, sfz, rfz, ppp**\n *\n * You can render any dynamics string that contains a combination of\n * the following letters: P, M, F, Z, R, S\n */\nexport class TextDynamics extends Note {\n /**\n * Create the dynamics marking.\n *\n * A `TextDynamics` object inherits from `Note` so that it can be formatted\n * within a `Voice`.\n *\n * @param noteStruct an object that contains a `duration` property and a\n * `sequence` of letters that represents the letters to render.\n */\n constructor(noteStruct) {\n super(noteStruct);\n this.sequence = (noteStruct.text || '').toLowerCase();\n this.line = noteStruct.line || 0;\n this.glyphs = [];\n this.render_options = Object.assign(Object.assign({}, this.render_options), { glyph_font_size: 40 });\n L('New Dynamics Text: ', this.sequence);\n }\n static get CATEGORY() {\n return Category.TextDynamics;\n }\n /** The glyph data for each dynamics letter. */\n static get GLYPHS() {\n return {\n f: {\n code: 'dynamicForte',\n width: 12,\n },\n p: {\n code: 'dynamicPiano',\n width: 14,\n },\n m: {\n code: 'dynamicMezzo',\n width: 17,\n },\n s: {\n code: 'dynamicSforzando',\n width: 10,\n },\n z: {\n code: 'dynamicZ',\n width: 12,\n },\n r: {\n code: 'dynamicRinforzando',\n width: 12,\n },\n };\n }\n /** Set the Stave line on which the note should be placed. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Preformat the dynamics text. */\n preFormat() {\n let total_width = 0;\n // length of this.glyphs must be <=\n // length of this.sequence, so if we're formatted before\n // create new glyphs.\n this.glyphs = [];\n // Iterate through each letter\n this.sequence.split('').forEach((letter) => {\n // Get the glyph data for the letter\n const glyph_data = TextDynamics.GLYPHS[letter];\n if (!glyph_data)\n throw new RuntimeError('Invalid dynamics character: ' + letter);\n const size = defined(this.render_options.glyph_font_size);\n const glyph = new Glyph(glyph_data.code, size, { category: 'textNote' });\n // Add the glyph\n this.glyphs.push(glyph);\n total_width += glyph_data.width;\n });\n // Store the width of the text\n this.setWidth(total_width);\n this.preFormatted = true;\n return this;\n }\n /** Draw the dynamics text on the rendering context. */\n draw() {\n this.setRendered();\n const x = this.getAbsoluteX();\n const y = this.checkStave().getYForLine(this.line + -3);\n L('Rendering Dynamics: ', this.sequence);\n let letter_x = x;\n this.glyphs.forEach((glyph, index) => {\n const current_letter = this.sequence[index];\n glyph.render(this.checkContext(), letter_x, y);\n letter_x += TextDynamics.GLYPHS[current_letter].width;\n });\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.TextDynamics.DEBUG` to `true`. */\nTextDynamics.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextFormatter.DEBUG)\n log('Vex.Flow.TextFormatter', args);\n}\n/**\n * Text widths are stored in a cache, so we don't have to recompute widths\n * for the same font + string combination.\n *\n * The cache is first keyed by the font information. The key is of the form:\n * `${family}-${size}-${weight}-${style}`\n * The second level key is the specific text to be measured.\n *\n * The stored value is the measured width in `em` units.\n * textWidth == textWidthCache[cacheKey][textToMeasure]\n */\nconst textWidthCache = {};\n/**\n * Applications may register additional fonts via `TextFormatter.registerInfo(info)`.\n * The metrics for those fonts will be made available to the application.\n */\nconst registry = {};\nexport class TextFormatter {\n /**\n * Use `TextFormatter.create(...)` to build an instance from information previously\n * registered via `TextFormatter.registerInfo(info)`.\n */\n constructor(formatterInfo) {\n /** Font family. */\n this.family = '';\n /** Specified in `pt` units. */\n this.size = 14;\n /** Font metrics are extracted at 1000 upem (units per em). */\n this.resolution = 1000;\n /**\n * For text formatting, we do not require glyph outlines, but instead rely on glyph\n * bounding box metrics such as:\n * ```\n * {\n * x_min: 48,\n * x_max: 235,\n * y_min: -17,\n * y_max: 734,\n * ha: 751,\n * leftSideBearing: 48,\n * advanceWidth: 286,\n * }\n * ```\n */\n this.glyphs = {};\n this.serifs = false;\n this.monospaced = false;\n this.italic = false;\n this.bold = false;\n this.superscriptOffset = 0;\n this.subscriptOffset = 0;\n this.maxSizeGlyph = 'H';\n // This is an internal key used to index the `textWidthCache`.\n this.cacheKey = '';\n this.updateParams(formatterInfo);\n }\n /**\n * Return all registered font families.\n */\n static getFontFamilies() {\n const registeredFonts = [];\n for (const fontFamily in registry) {\n const formatterInfo = registry[fontFamily];\n registeredFonts.push(Object.assign({}, formatterInfo));\n }\n return registeredFonts;\n }\n /**\n * Call `TextFormatter.registerInfo(info)` to register font information before using this method.\n *\n * This method creates a formatter for the font that most closely matches the requested font.\n * We compare font family, bold, and italic attributes.\n * This method will return a fallback formatter if there are no matches.\n */\n static create(requestedFont = {}) {\n L('create: ', requestedFont);\n if (!requestedFont.family) {\n requestedFont.family = Font.SANS_SERIF;\n }\n // TODO: One potential (small) optimization is to cache the TextFormatter object\n // returned for each font info. We would probably want to clear the cache if\n // the registry is ever updated.\n const candidates = [];\n // The incoming font family is a string of comma-separated font family names.\n // (e.g., `PetalumaScript, Arial, sans-serif`).\n const requestedFamilies = requestedFont.family.split(/\\s*,\\s*/);\n for (const requestedFamily of requestedFamilies) {\n for (const fontFamily in registry) {\n // Support cases where the registry contains 'Roboto Slab Medium',\n // but the requestedFont.family is 'Roboto Slab'.\n if (fontFamily.startsWith(requestedFamily)) {\n candidates.push(registry[fontFamily]);\n }\n }\n if (candidates.length > 0) {\n break;\n }\n }\n let formatter;\n if (candidates.length === 0) {\n // No match, so return a fallback text formatter.\n formatter = new TextFormatter(Object.values(registry)[0]);\n }\n else if (candidates.length === 1) {\n formatter = new TextFormatter(candidates[0]);\n }\n else {\n const bold = Font.isBold(requestedFont.weight);\n const italic = Font.isItalic(requestedFont.style);\n const perfectMatch = candidates.find((f) => f.bold === bold && f.italic === italic);\n if (perfectMatch) {\n formatter = new TextFormatter(perfectMatch);\n }\n else {\n const partialMatch = candidates.find((f) => f.italic === italic || f.bold === bold);\n if (partialMatch) {\n formatter = new TextFormatter(partialMatch);\n }\n else {\n formatter = new TextFormatter(candidates[0]);\n }\n }\n }\n const fontSize = requestedFont.size;\n if (typeof fontSize !== 'undefined') {\n const fontSizeInPt = Font.convertSizeToPointValue(fontSize);\n formatter.setFontSize(fontSizeInPt);\n }\n return formatter;\n }\n /**\n * @param fontFamily used as a key to the font registry.\n * @returns the same info object that was passed in via `TextFormatter.registerInfo(info)`\n */\n static getInfo(fontFamily) {\n return registry[fontFamily];\n }\n /**\n * Apps may register their own fonts and metrics, and those metrics\n * will be available to the app for formatting.\n *\n * Metrics can be generated from a font file using fontgen_text.js in the tools/fonts directory.\n * @param info\n * @param overwrite\n */\n static registerInfo(info, overwrite = false) {\n L('registerInfo: ', info, overwrite);\n const fontFamily = info.family;\n const currFontInfo = registry[fontFamily];\n if (currFontInfo === undefined || overwrite) {\n registry[fontFamily] = info;\n }\n }\n updateParams(params) {\n if (params.family)\n this.family = params.family;\n if (params.resolution)\n this.resolution = params.resolution;\n if (params.glyphs)\n this.glyphs = params.glyphs;\n if (params.serifs)\n this.serifs = params.serifs;\n if (params.monospaced)\n this.monospaced = params.monospaced;\n if (params.italic)\n this.italic = params.italic;\n if (params.bold)\n this.bold = params.bold;\n if (params.maxSizeGlyph)\n this.maxSizeGlyph = params.maxSizeGlyph;\n if (params.superscriptOffset)\n this.superscriptOffset = params.superscriptOffset;\n if (params.subscriptOffset)\n this.subscriptOffset = params.subscriptOffset;\n this.updateCacheKey();\n }\n /** Create a hash with the current font data, so we can cache computed widths. */\n updateCacheKey() {\n const family = this.family.replace(/\\s+/g, '_');\n const size = this.size;\n const weight = this.bold ? FontWeight.BOLD : FontWeight.NORMAL;\n const style = this.italic ? FontStyle.ITALIC : FontStyle.NORMAL;\n // Use the same key format as SVGContext.\n this.cacheKey = `${family}%${size}%${weight}%${style}`;\n }\n /**\n * The glyphs table is indexed by the character (e.g., 'C', '@').\n * See: robotoslab_glyphs.ts & petalumascript_glyphs.ts.\n */\n getGlyphMetrics(character) {\n if (this.glyphs[character]) {\n return this.glyphs[character];\n }\n else {\n return this.glyphs[this.maxSizeGlyph];\n }\n }\n get maxHeight() {\n const metrics = this.getGlyphMetrics(this.maxSizeGlyph);\n return (metrics.ha / this.resolution) * this.fontSizeInPixels;\n }\n /**\n * Retrieve the character's advanceWidth as a fraction of an `em` unit.\n * For the space character ' ' as defined in the:\n * petalumascript_glyphs.ts: 250 advanceWidth in the 1000 unitsPerEm font returns 0.25.\n * robotoslab_glyphs.ts: 509 advanceWidth in the 2048 unitsPerEm font returns 0.2485.\n */\n getWidthForCharacterInEm(c) {\n var _a;\n const metrics = this.getGlyphMetrics(c);\n if (!metrics) {\n // An arbitrary number, close to the `em` width of the '#' and '5' characters in PetalumaScript.\n return 0.65;\n }\n else {\n const advanceWidth = (_a = metrics.advanceWidth) !== null && _a !== void 0 ? _a : 0;\n return advanceWidth / this.resolution;\n }\n }\n /**\n * Retrieve the total width of `text` in `em` units.\n */\n getWidthForTextInEm(text) {\n const key = this.cacheKey;\n // Get the cache for this specific font family, size, weight, style combination.\n // The cache contains previously computed widths for different `text` strings.\n let cachedWidths = textWidthCache[key];\n if (cachedWidths === undefined) {\n cachedWidths = {};\n textWidthCache[key] = cachedWidths;\n }\n let width = cachedWidths[text];\n if (width === undefined) {\n width = 0;\n for (let i = 0; i < text.length; ++i) {\n width += this.getWidthForCharacterInEm(text[i]);\n }\n cachedWidths[text] = width;\n }\n return width;\n }\n /** The width of the text (in `em`) is scaled by the font size (in `px`). */\n getWidthForTextInPx(text) {\n return this.getWidthForTextInEm(text) * this.fontSizeInPixels;\n }\n /**\n * @param size in pt.\n */\n setFontSize(size) {\n this.size = size;\n // The width cache key depends on the current font size.\n this.updateCacheKey();\n return this;\n }\n /** `this.size` is specified in points. Convert to pixels. */\n get fontSizeInPixels() {\n return this.size * Font.scaleToPxFrom.pt;\n }\n getResolution() {\n return this.resolution;\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.TextFormatter.DEBUG` to `true`. */\nTextFormatter.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport var TextJustification;\n(function (TextJustification) {\n TextJustification[TextJustification[\"LEFT\"] = 1] = \"LEFT\";\n TextJustification[TextJustification[\"CENTER\"] = 2] = \"CENTER\";\n TextJustification[TextJustification[\"RIGHT\"] = 3] = \"RIGHT\";\n})(TextJustification || (TextJustification = {}));\n/**\n * `TextNote` is a notation element that is positioned in time. Generally\n * meant for objects that sit above/below the staff and inline with each other.\n * `TextNote` has to be assigned to a `Stave` before rendering by means of `setStave`.\n * Examples of this would be such as dynamics, lyrics, chord changes, etc.\n */\nexport class TextNote extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n this.text = noteStruct.text || '';\n this.superscript = noteStruct.superscript;\n this.subscript = noteStruct.subscript;\n this.setFont(noteStruct.font);\n this.line = noteStruct.line || 0;\n this.smooth = noteStruct.smooth || false;\n this.ignore_ticks = noteStruct.ignore_ticks || false;\n this.justification = TextJustification.LEFT;\n // Determine and set initial note width. Note that the text width is\n // an approximation and isn't very accurate. The only way to accurately\n // measure the length of text is with `CanvasRenderingContext2D.measureText()`.\n if (noteStruct.glyph) {\n const struct = TextNote.GLYPHS[noteStruct.glyph];\n if (!struct)\n throw new RuntimeError('Invalid glyph type: ' + noteStruct.glyph);\n this.glyph = new Glyph(struct.code, 40, { category: 'textNote' });\n this.setWidth(this.glyph.getMetrics().width);\n }\n else {\n this.glyph = undefined;\n }\n }\n static get CATEGORY() {\n return Category.TextNote;\n }\n /** Glyph data. */\n static get GLYPHS() {\n return {\n segno: {\n code: 'segno',\n },\n tr: {\n code: 'ornamentTrill',\n },\n mordent: {\n code: 'ornamentMordent',\n },\n mordent_upper: {\n code: 'ornamentShortTrill',\n },\n mordent_lower: {\n code: 'ornamentMordent',\n },\n f: {\n code: 'dynamicForte',\n },\n p: {\n code: 'dynamicPiano',\n },\n m: {\n code: 'dynamicMezzo',\n },\n s: {\n code: 'dynamicSforzando',\n },\n z: {\n code: 'dynamicZ',\n },\n coda: {\n code: 'coda',\n },\n pedal_open: {\n code: 'keyboardPedalPed',\n },\n pedal_close: {\n code: 'keyboardPedalUp',\n },\n caesura_straight: {\n code: 'caesura',\n },\n caesura_curved: {\n code: 'caesuraCurved',\n },\n breath: {\n code: 'breathMarkComma',\n },\n tick: {\n code: 'breathMarkTick',\n },\n turn: {\n code: 'ornamentTurn',\n },\n turn_inverted: {\n code: 'ornamentTurnSlash',\n },\n };\n }\n /** Set the horizontal justification of the TextNote. */\n setJustification(just) {\n this.justification = just;\n return this;\n }\n /** Set the Stave line on which the note should be placed. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Return the Stave line on which the TextNote is placed. */\n getLine() {\n return this.line;\n }\n /** Return the unformatted text of this TextNote. */\n getText() {\n return this.text;\n }\n /** Pre-render formatting. */\n preFormat() {\n if (this.preFormatted)\n return;\n const tickContext = this.checkTickContext(`Can't preformat without a TickContext.`);\n if (this.smooth) {\n this.setWidth(0);\n }\n else {\n if (this.glyph) {\n // Width already set.\n }\n else {\n const ctx = this.checkContext();\n ctx.setFont(this.textFont);\n this.setWidth(ctx.measureText(this.text).width);\n }\n }\n if (this.justification === TextJustification.CENTER) {\n this.leftDisplacedHeadPx = this.width / 2;\n }\n else if (this.justification === TextJustification.RIGHT) {\n this.leftDisplacedHeadPx = this.width;\n }\n // We reposition to the center of the note head\n this.rightDisplacedHeadPx = tickContext.getMetrics().glyphPx / 2;\n this.preFormatted = true;\n }\n /**\n * Renders the TextNote.\n * `TextNote` has to be assigned to a `Stave` before rendering by means of `setStave`.\n */\n draw() {\n const ctx = this.checkContext();\n const stave = this.checkStave();\n const tickContext = this.checkTickContext(`Can't draw without a TickContext.`);\n this.setRendered();\n // Reposition to center of note head\n let x = this.getAbsoluteX() + tickContext.getMetrics().glyphPx / 2;\n // Align based on tick-context width.\n const width = this.getWidth();\n if (this.justification === TextJustification.CENTER) {\n x -= width / 2;\n }\n else if (this.justification === TextJustification.RIGHT) {\n x -= width;\n }\n let y;\n if (this.glyph) {\n y = stave.getYForLine(this.line + -3);\n this.glyph.render(ctx, x, y);\n }\n else {\n y = stave.getYForLine(this.line + -3);\n this.applyStyle(ctx);\n ctx.setFont(this.textFont);\n ctx.fillText(this.text, x, y);\n const height = ctx.measureText(this.text).height;\n // We called this.setFont(...) in the constructor, so we know this.textFont is available.\n // eslint-disable-next-line\n const { family, size, weight, style } = this.textFont;\n // Scale the font size by 1/1.3.\n const smallerFontSize = Font.scaleSize(size, 0.769231);\n if (this.superscript) {\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.superscript, x + this.width + 2, y - height / 2.2);\n }\n if (this.subscript) {\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.subscript, x + this.width + 2, y + height / 2.2 - 1);\n }\n this.restoreStyle(ctx);\n }\n }\n}\nTextNote.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 12,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\nTextNote.Justification = TextJustification;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\n/**\n * Tickable represents a element that sit on a score and\n * has a duration, i.e., Tickables occupy space in the musical rendering dimension.\n */\nexport class Tickable extends Element {\n constructor() {\n super();\n this._preFormatted = false;\n this._postFormatted = false;\n // These properties represent the duration of\n // this tickable element.\n this.ticks = new Fraction(0, 1); // Fractional value of ticks\n this.intrinsicTicks = 0; // Floating point value of ticks\n this.tickMultiplier = new Fraction(1, 1);\n // Formatter metrics\n this.width = 0;\n this.x_shift = 0; // Shift from tick context\n this.modifiers = [];\n this.tupletStack = [];\n this.align_center = false;\n this.center_x_shift = 0; // Shift from tick context if center aligned\n // This flag tells the formatter to ignore this tickable during\n // formatting and justification. It is set by tickables such as BarNote.\n this.ignore_ticks = false;\n // This is a space for an external formatting class or function to maintain\n // metrics.\n this.formatterMetrics = {\n // The freedom of a tickable is the distance it can move without colliding\n // with neighboring elements. A formatter can set these values during its\n // formatting pass, which a different formatter can then use to fine tune.\n freedom: { left: 0, right: 0 },\n // The simplified rational duration of this tick as a string. It can be\n // used as an index to a map or hashtable.\n duration: '',\n // The number of formatting iterations undergone.\n iterations: 0,\n // The space in pixels allocated by this formatter, along with the mean space\n // for tickables of this duration, and the deviation from the mean.\n space: {\n used: 0,\n mean: 0,\n deviation: 0,\n },\n };\n }\n static get CATEGORY() {\n return Category.Tickable;\n }\n /** Reset the Tickable, this function will be overloaded. */\n reset() {\n return this;\n }\n /** Return the ticks. */\n getTicks() {\n return this.ticks;\n }\n /** Check if it ignores the ticks. */\n shouldIgnoreTicks() {\n return this.ignore_ticks;\n }\n /** Ignore the ticks. */\n setIgnoreTicks(flag) {\n this.ignore_ticks = flag;\n return this;\n }\n /** Set width of note. Used by the formatter for positioning. */\n setWidth(width) {\n this.width = width;\n }\n /** Get width of note. Used by the formatter for positioning. */\n getWidth() {\n if (!this._preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetWidth on an unformatted note.\");\n }\n return this.width + (this.modifierContext ? this.modifierContext.getWidth() : 0);\n }\n /** Displace note by `x` pixels. Used by the formatter. */\n setXShift(x) {\n this.x_shift = x;\n return this;\n }\n /** Get the `x` displaced pixels of the note. */\n getXShift() {\n return this.x_shift;\n }\n /** Get `x` position of this tick context. */\n getX() {\n const tickContext = this.checkTickContext(`Can't getX() without a TickContext.`);\n return tickContext.getX() + this.x_shift;\n }\n /** Return the formatterMetrics. */\n getFormatterMetrics() {\n return this.formatterMetrics;\n }\n /** Return the center `x` shift. */\n getCenterXShift() {\n if (this.isCenterAligned()) {\n return this.center_x_shift;\n }\n return 0;\n }\n /** Set the center `x` shift. */\n setCenterXShift(centerXShift) {\n this.center_x_shift = centerXShift;\n return this;\n }\n // Check if tickable is center aligned. */\n isCenterAligned() {\n return this.align_center;\n }\n // Set/unset center alignment. */\n setCenterAlignment(align_center) {\n this.align_center = align_center;\n return this;\n }\n /**\n * Return the associated voice. Every tickable must be associated with a voice.\n * This allows formatters and preFormatter to associate them with the right modifierContexts.\n */\n getVoice() {\n return defined(this.voice, 'NoVoice', 'Tickable has no voice.');\n }\n /** Set the associated voice. */\n setVoice(voice) {\n this.voice = voice;\n }\n /** Get the tuplet. */\n getTuplet() {\n return this.tuplet;\n }\n /** Return the intrinsic ticks. */\n getTupletStack() {\n return this.tupletStack;\n }\n /**\n * Reset the specific Tuplet if this is not provided, all tuplets are reset.\n * Remove any prior tuplets from the tick calculation and\n * reset the intrinsic tick value.\n */\n resetTuplet(tuplet) {\n let noteCount;\n let notesOccupied;\n if (tuplet) {\n const i = this.tupletStack.indexOf(tuplet);\n if (i !== -1) {\n this.tupletStack.splice(i, 1);\n noteCount = tuplet.getNoteCount();\n notesOccupied = tuplet.getNotesOccupied();\n // Revert old multiplier by inverting numerator & denom.:\n this.applyTickMultiplier(noteCount, notesOccupied);\n }\n return this;\n }\n while (this.tupletStack.length) {\n tuplet = this.tupletStack.pop();\n noteCount = tuplet.getNoteCount();\n notesOccupied = tuplet.getNotesOccupied();\n // Revert old multiplier by inverting numerator & denom.:\n this.applyTickMultiplier(noteCount, notesOccupied);\n }\n return this;\n }\n /** Attach to new tuplet. */\n setTuplet(tuplet) {\n if (tuplet) {\n this.tupletStack.push(tuplet);\n const noteCount = tuplet.getNoteCount();\n const notesOccupied = tuplet.getNotesOccupied();\n this.applyTickMultiplier(notesOccupied, noteCount);\n }\n this.tuplet = tuplet;\n return this;\n }\n /**\n * Add self to the provided ModifierContext `mc`.\n * If this tickable has modifiers, set modifierContext.\n * @returns this\n */\n addToModifierContext(mc) {\n this.modifierContext = mc;\n for (let i = 0; i < this.modifiers.length; ++i) {\n this.modifierContext.addMember(this.modifiers[i]);\n }\n this.modifierContext.addMember(this);\n this._preFormatted = false;\n return this;\n }\n /**\n * Optional, if tickable has modifiers, associate a Modifier.\n * @param mod the modifier\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n addModifier(modifier, index = 0) {\n this.modifiers.push(modifier);\n this._preFormatted = false;\n return this;\n }\n /** Get the list of associated modifiers. */\n getModifiers() {\n return this.modifiers;\n }\n /** Set the Tick Context. */\n setTickContext(tc) {\n this.tickContext = tc;\n this._preFormatted = false;\n }\n checkTickContext(message = 'Tickable has no tick context.') {\n return defined(this.tickContext, 'NoTickContext', message);\n }\n /** Preformat the Tickable. */\n preFormat() {\n if (this._preFormatted)\n return;\n this.width = 0;\n if (this.modifierContext) {\n this.modifierContext.preFormat();\n this.width += this.modifierContext.getWidth();\n }\n }\n /** Set preformatted status. */\n set preFormatted(value) {\n this._preFormatted = value;\n }\n get preFormatted() {\n return this._preFormatted;\n }\n /** Postformat the Tickable. */\n postFormat() {\n if (this._postFormatted)\n return this;\n this._postFormatted = true;\n return this;\n }\n /** Set postformatted status. */\n set postFormatted(value) {\n this._postFormatted = value;\n }\n get postFormatted() {\n return this._postFormatted;\n }\n /** Return the intrinsic ticks. */\n getIntrinsicTicks() {\n return this.intrinsicTicks;\n }\n /** Set the intrinsic ticks. */\n setIntrinsicTicks(intrinsicTicks) {\n this.intrinsicTicks = intrinsicTicks;\n this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks);\n }\n /** Get the tick multiplier. */\n getTickMultiplier() {\n return this.tickMultiplier;\n }\n /** Apply a tick multiplier. */\n applyTickMultiplier(numerator, denominator) {\n this.tickMultiplier.multiply(numerator, denominator);\n this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks);\n }\n /** Set the duration. */\n setDuration(duration) {\n const ticks = duration.numerator * (Tables.RESOLUTION / duration.denominator);\n this.ticks = this.tickMultiplier.clone().multiply(ticks);\n this.intrinsicTicks = this.ticks.value();\n }\n getAbsoluteX() {\n const tickContext = this.checkTickContext(`Can't getAbsoluteX() without a TickContext.`);\n return tickContext.getX();\n }\n /** Attach this note to a modifier context. */\n setModifierContext(mc) {\n this.modifierContext = mc;\n return this;\n }\n /** Get `ModifierContext`. */\n getModifierContext() {\n return this.modifierContext;\n }\n /** Check and get `ModifierContext`. */\n checkModifierContext() {\n return defined(this.modifierContext, 'NoModifierContext', 'No modifier context attached to this tickable.');\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// A formatter for abstract tickable objects, such as notes, chords,\n// tabs, etc.\nimport { Fraction } from './fraction';\nimport { RuntimeError } from './util';\n/**\n * TickContext formats abstract tickable objects, such as notes, chords, tabs, etc.\n */\nexport class TickContext {\n constructor(options) {\n this.preFormatted = false;\n this.postFormatted = false;\n this.tickID = options && options.tickID ? options.tickID : 0;\n this.currentTick = new Fraction(0, 1);\n this.maxTicks = new Fraction(0, 1);\n this.maxTickable = undefined; // Biggest tickable\n this.minTicks = undefined; // this can remian null if all tickables have ignore_ticks\n this.minTickable = undefined;\n this.padding = 1; // padding on each side (width += padding * 2)\n this.x = 0;\n this.xBase = 0; // base x position without xOffset\n this.xOffset = 0; // xBase and xOffset are an alternative way to describe x (x = xB + xO)\n this.tickables = []; // Notes, tabs, chords, lyrics.\n this.tickablesByVoice = {}; // Tickables indexed by voice number\n // Formatting metrics\n this.notePx = 0; // width of widest note in this context\n this.glyphPx = 0; // width of glyph (note head)\n this.leftDisplacedHeadPx = 0; // Extra left pixels for displaced notes\n this.rightDisplacedHeadPx = 0; // Extra right pixels for displaced notes\n this.modLeftPx = 0; // Left modifier pixels\n this.modRightPx = 0; // Right modifier pixels\n this.totalLeftPx = 0; // Total left pixels\n this.totalRightPx = 0; // Total right pixels\n this.tContexts = []; // Parent array of tick contexts\n this.width = 0;\n this.formatterMetrics = {\n // The freedom of a tickcontext is the distance it can move without colliding\n // with neighboring elements. A formatter can set these values during its\n // formatting pass, which a different formatter can then use to fine tune.\n freedom: { left: 0, right: 0 },\n };\n }\n static getNextContext(tContext) {\n const contexts = tContext.tContexts;\n const index = contexts.indexOf(tContext);\n if (index + 1 < contexts.length)\n return contexts[index + 1];\n }\n getTickID() {\n return this.tickID;\n }\n getX() {\n return this.x;\n }\n setX(x) {\n this.x = x;\n this.xBase = x;\n this.xOffset = 0;\n return this;\n }\n getXBase() {\n return this.xBase;\n } // use of xBase and xOffset is optional, avoids offset creep\n setXBase(xBase) {\n this.xBase = xBase;\n this.x = xBase + this.xOffset;\n }\n getXOffset() {\n return this.xOffset;\n }\n setXOffset(xOffset) {\n this.xOffset = xOffset;\n this.x = this.xBase + xOffset;\n }\n getWidth() {\n return this.width + this.padding * 2;\n }\n setPadding(padding) {\n this.padding = padding;\n return this;\n }\n getMaxTicks() {\n return this.maxTicks;\n }\n getMinTicks() {\n return this.minTicks;\n }\n getMaxTickable() {\n return this.maxTickable;\n }\n getMinTickable() {\n return this.minTickable;\n }\n getTickables() {\n return this.tickables;\n }\n /**\n * Introduced on 2020-04-17 as getTickablesForVoice(voiceIndex).\n * https://github.com/0xfe/vexflow/blame/dc97b0cc5bb93171c0038638c34362dc958222ca/src/tickcontext.js#L63\n * Renamed on 2021-08-05 to getTickableForVoice(voiceIndex). Method renamed to singular, since it returns one Tickable.\n */\n getTickableForVoice(voiceIndex) {\n return this.tickablesByVoice[voiceIndex];\n }\n getTickablesByVoice() {\n return this.tickablesByVoice;\n }\n getCenterAlignedTickables() {\n return this.tickables.filter((tickable) => tickable.isCenterAligned());\n }\n /** Gets widths context, note and left/right modifiers for formatting. */\n getMetrics() {\n const { width, glyphPx, notePx, leftDisplacedHeadPx, rightDisplacedHeadPx, modLeftPx, modRightPx, totalLeftPx, totalRightPx, } = this;\n return {\n width,\n glyphPx,\n notePx,\n leftDisplacedHeadPx,\n rightDisplacedHeadPx,\n modLeftPx,\n modRightPx,\n totalLeftPx,\n totalRightPx,\n };\n }\n getCurrentTick() {\n return this.currentTick;\n }\n setCurrentTick(tick) {\n this.currentTick = tick;\n this.preFormatted = false;\n }\n addTickable(tickable, voiceIndex) {\n if (!tickable) {\n throw new RuntimeError('BadArgument', 'Invalid tickable added.');\n }\n if (!tickable.shouldIgnoreTicks()) {\n const ticks = tickable.getTicks();\n if (ticks.greaterThan(this.maxTicks)) {\n this.maxTicks = ticks.clone();\n this.maxTickable = tickable;\n }\n if (this.minTicks == null) {\n this.minTicks = ticks.clone();\n this.minTickable = tickable;\n }\n else if (ticks.lessThan(this.minTicks)) {\n this.minTicks = ticks.clone();\n this.minTickable = tickable;\n }\n }\n tickable.setTickContext(this);\n this.tickables.push(tickable);\n this.tickablesByVoice[voiceIndex || 0] = tickable;\n this.preFormatted = false;\n return this;\n }\n preFormat() {\n if (this.preFormatted)\n return this;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n tickable.preFormat();\n const metrics = tickable.getMetrics();\n // Maintain max displaced head pixels from all tickables in the context\n this.leftDisplacedHeadPx = Math.max(this.leftDisplacedHeadPx, metrics.leftDisplacedHeadPx);\n this.rightDisplacedHeadPx = Math.max(this.rightDisplacedHeadPx, metrics.rightDisplacedHeadPx);\n // Maintain the widest note for all tickables in the context\n this.notePx = Math.max(this.notePx, metrics.notePx);\n // Maintain the widest note head\n this.glyphPx = Math.max(this.glyphPx, metrics.glyphWidth || 0);\n // Total modifier shift\n this.modLeftPx = Math.max(this.modLeftPx, metrics.modLeftPx);\n this.modRightPx = Math.max(this.modRightPx, metrics.modRightPx);\n // Total shift\n this.totalLeftPx = Math.max(this.totalLeftPx, metrics.modLeftPx + metrics.leftDisplacedHeadPx);\n this.totalRightPx = Math.max(this.totalRightPx, metrics.modRightPx + metrics.rightDisplacedHeadPx);\n // Recalculate the tick context total width\n this.width = this.notePx + this.totalLeftPx + this.totalRightPx;\n }\n return this;\n }\n postFormat() {\n if (this.postFormatted)\n return this;\n this.postFormatted = true;\n return this;\n }\n getFormatterMetrics() {\n return this.formatterMetrics;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Renders time signatures glyphs for staffs\n// This class is used by TimeSignature to render the associated glyphs\nimport { Glyph } from './glyph';\nimport { defined } from './util';\nexport class TimeSignatureGlyph extends Glyph {\n constructor(timeSignature, topDigits, botDigits, code, point, options) {\n var _a;\n super(code, point, options);\n this.timeSignature = timeSignature;\n this.topGlyphs = [];\n this.botGlyphs = [];\n let topWidth = 0;\n for (let i = 0; i < topDigits.length; ++i) {\n let timeSigType = topDigits[i];\n switch (topDigits[i]) {\n case '-':\n timeSigType = 'Minus';\n break;\n case '+':\n timeSigType = botDigits.length > 0 ? 'PlusSmall' : 'Plus';\n break;\n case '(':\n timeSigType = botDigits.length > 0 ? 'ParensLeftSmall' : 'ParensLeft';\n break;\n case ')':\n timeSigType = botDigits.length > 0 ? 'ParensRightSmall' : 'ParensRight';\n break;\n }\n const topGlyph = new Glyph('timeSig' + timeSigType, this.timeSignature.point);\n this.topGlyphs.push(topGlyph);\n topWidth += (_a = topGlyph.getMetrics().width) !== null && _a !== void 0 ? _a : 0;\n }\n let botWidth = 0;\n for (let i = 0; i < botDigits.length; ++i) {\n let timeSigType = botDigits[i];\n switch (botDigits[i]) {\n case '+':\n timeSigType = 'PlusSmall';\n break;\n case '(':\n timeSigType = 'ParensLeftSmall';\n break;\n case ')':\n timeSigType = 'ParensRightSmall';\n break;\n }\n const botGlyph = new Glyph('timeSig' + timeSigType, this.timeSignature.point);\n this.botGlyphs.push(botGlyph);\n botWidth += defined(botGlyph.getMetrics().width);\n }\n this.width = Math.max(topWidth, botWidth);\n this.xMin = this.getMetrics().x_min;\n this.topStartX = (this.width - topWidth) / 2.0;\n this.botStartX = (this.width - botWidth) / 2.0;\n this.reset();\n }\n getMetrics() {\n return {\n x_min: this.xMin,\n x_max: this.xMin + this.width,\n width: this.width,\n };\n }\n renderToStave(x) {\n const stave = this.checkStave();\n const ctx = this.checkContext();\n let start_x = x + this.topStartX;\n let y = 0;\n if (this.botGlyphs.length > 0)\n y = stave.getYForLine(this.timeSignature.topLine);\n else\n y = (stave.getYForLine(this.timeSignature.topLine) + stave.getYForLine(this.timeSignature.bottomLine)) / 2;\n for (let i = 0; i < this.topGlyphs.length; ++i) {\n const glyph = this.topGlyphs[i];\n Glyph.renderOutline(ctx, glyph.getMetrics().outline, this.scale, start_x + this.x_shift, y);\n start_x += defined(glyph.getMetrics().width);\n }\n start_x = x + this.botStartX;\n y = stave.getYForLine(this.timeSignature.bottomLine);\n for (let i = 0; i < this.botGlyphs.length; ++i) {\n const glyph = this.botGlyphs[i];\n this.timeSignature.placeGlyphOnLine(glyph, stave, 0);\n Glyph.renderOutline(ctx, glyph.getMetrics().outline, this.scale, start_x + glyph.getMetrics().x_shift, y);\n start_x += defined(glyph.getMetrics().width);\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Implements time signatures glyphs for staffs\n// See tables.js for the internal time signatures\n// representation\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { TimeSignatureGlyph } from './timesigglyph';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nconst assertIsValidTimeSig = (timeSpec) => {\n const numbers = timeSpec.split('/');\n if (numbers.length !== 2 && numbers[0] !== '+' && numbers[0] !== '-') {\n throw new RuntimeError('BadTimeSignature', `Invalid time spec: ${timeSpec}. Must be in the form \"/\"`);\n }\n numbers.forEach((number) => {\n // Characters consisting in number 0..9, '+', '-', '(' or ')'\n if (/^[0-9+\\-()]+$/.test(number) == false) {\n throw new RuntimeError('BadTimeSignature', `Invalid time spec: ${timeSpec}. Must contain valid signatures.`);\n }\n });\n};\nexport class TimeSignature extends StaveModifier {\n constructor(timeSpec = '4/4', customPadding = 15, validate_args = true) {\n super();\n this.validate_args = validate_args;\n const padding = customPadding;\n const musicFont = Tables.currentMusicFont();\n this.point = musicFont.lookupMetric('digits.point');\n const fontLineShift = musicFont.lookupMetric('digits.shiftLine', 0);\n this.topLine = 2 + fontLineShift;\n this.bottomLine = 4 + fontLineShift;\n this.setPosition(StaveModifierPosition.BEGIN);\n this.info = this.parseTimeSpec(timeSpec);\n this.setWidth(defined(this.info.glyph.getMetrics().width));\n this.setPadding(padding);\n }\n static get CATEGORY() {\n return Category.TimeSignature;\n }\n static get glyphs() {\n return {\n C: {\n code: 'timeSigCommon',\n point: 40,\n line: 2,\n },\n 'C|': {\n code: 'timeSigCutCommon',\n point: 40,\n line: 2,\n },\n };\n }\n parseTimeSpec(timeSpec) {\n var _a, _b;\n if (timeSpec === 'C' || timeSpec === 'C|') {\n const { line, code, point } = TimeSignature.glyphs[timeSpec];\n return {\n line,\n num: false,\n glyph: new Glyph(code, point),\n };\n }\n if (this.validate_args) {\n assertIsValidTimeSig(timeSpec);\n }\n const parts = timeSpec.split('/');\n return {\n num: true,\n glyph: this.makeTimeSignatureGlyph((_a = parts[0]) !== null && _a !== void 0 ? _a : '', (_b = parts[1]) !== null && _b !== void 0 ? _b : ''),\n };\n }\n makeTimeSignatureGlyph(topDigits, botDigits) {\n return new TimeSignatureGlyph(this, topDigits, botDigits, 'timeSig0', this.point);\n }\n getInfo() {\n return this.info;\n }\n setTimeSig(timeSpec) {\n this.info = this.parseTimeSpec(timeSpec);\n return this;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('timesignature', this.getAttribute('id'));\n this.info.glyph.setStave(stave);\n this.info.glyph.setContext(ctx);\n this.placeGlyphOnLine(this.info.glyph, stave, this.info.line);\n this.info.glyph.renderToStave(this.x);\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\nimport { Note } from './note';\nimport { TimeSignature } from './timesignature';\nimport { Category } from './typeguard';\nexport class TimeSigNote extends Note {\n constructor(timeSpec, customPadding) {\n super({ duration: 'b' });\n const timeSignature = new TimeSignature(timeSpec, customPadding);\n this.timeSigInfo = timeSignature.getInfo();\n this.setWidth(this.timeSigInfo.glyph.getMetrics().width);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.TimeSigNote;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = this.checkContext();\n this.setRendered();\n if (!this.timeSigInfo.glyph.getContext()) {\n this.timeSigInfo.glyph.setContext(ctx);\n }\n this.timeSigInfo.glyph.setStave(stave);\n this.timeSigInfo.glyph.setYShift(stave.getYForLine(2) - stave.getYForGlyphs());\n this.timeSigInfo.glyph.renderToStave(this.getAbsoluteX());\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Mike Corrigan \n// MIT License\nimport { Glyph } from './glyph';\nimport { GraceNote } from './gracenote';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isGraceNote } from './typeguard';\n/** Tremolo implements tremolo notation. */\nexport class Tremolo extends Modifier {\n /**\n * @param num number of bars\n */\n constructor(num) {\n super();\n this.num = num;\n this.position = Modifier.Position.CENTER;\n this.code = 'tremolo1';\n // big strokes scales initialised to 1 (no scale)\n this.y_spacing_scale = 1;\n this.extra_stroke_scale = 1;\n }\n static get CATEGORY() {\n return Category.Tremolo;\n }\n /** Draw the tremolo on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stemDirection = note.getStemDirection();\n const start = note.getModifierStartXY(this.position, this.index);\n let x = start.x;\n const gn = isGraceNote(note);\n const scale = gn ? GraceNote.SCALE : 1;\n const category = `tremolo.${gn ? 'grace' : 'default'}`;\n const musicFont = Tables.currentMusicFont();\n let y_spacing = musicFont.lookupMetric(`${category}.spacing`) * stemDirection;\n // add y_spacing_scale for big strokes (#1258)\n y_spacing *= this.y_spacing_scale;\n const height = this.num * y_spacing;\n let y = note.getStemExtents().baseY - height;\n if (stemDirection < 0) {\n y += musicFont.lookupMetric(`${category}.offsetYStemDown`) * scale;\n }\n else {\n y += musicFont.lookupMetric(`${category}.offsetYStemUp`) * scale;\n }\n const fontScale = musicFont.lookupMetric(`${category}.point`);\n x += musicFont.lookupMetric(`${category}.offsetXStem${stemDirection === Stem.UP ? 'Up' : 'Down'}`);\n for (let i = 0; i < this.num; ++i) {\n Glyph.renderGlyph(ctx, x, y, fontScale, this.code, { category, scale: this.extra_stroke_scale });\n y += y_spacing;\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Tables } from './tables';\nimport { RuntimeError } from './util';\n/** `Tuning` implements varies types of tunings for tablature. */\nexport class Tuning {\n /**\n * Constructor.\n * @param tuningString tuning name (eg. 'dagdad') or comma separated note strings\n */\n constructor(tuningString = 'E/5,B/4,G/4,D/4,A/3,E/3,B/2,E/2') {\n this.tuningValues = [];\n // Default to standard tuning.\n this.setTuning(tuningString);\n }\n static get names() {\n return {\n standard: 'E/5,B/4,G/4,D/4,A/3,E/3',\n dagdad: 'D/5,A/4,G/4,D/4,A/3,D/3',\n dropd: 'E/5,B/4,G/4,D/4,A/3,D/3',\n eb: 'Eb/5,Bb/4,Gb/4,Db/4,Ab/3,Db/3',\n standardBanjo: 'D/5,B/4,G/4,D/4,G/5',\n };\n }\n /** Return the note number associated to the note string. */\n noteToInteger(noteString) {\n return Tables.keyProperties(noteString).int_value;\n }\n /**\n * Set tuning identified by tuning name (eg. 'dagdad')\n * @param tuningString tuning name (eg. 'dagdad') or comma separated note strings\n */\n setTuning(tuningString) {\n if (Tuning.names[tuningString]) {\n tuningString = Tuning.names[tuningString];\n }\n this.tuningValues = [];\n const keys = tuningString.split(/\\s*,\\s*/);\n if (keys.length === 0) {\n throw new RuntimeError('BadArguments', `Invalid tuning string: ${tuningString}`);\n }\n for (let i = 0; i < keys.length; ++i) {\n this.tuningValues[i] = this.noteToInteger(keys[i]);\n }\n }\n /** Return the note number associated with a tablature string. */\n getValueForString(stringNum) {\n const s = Number(stringNum);\n if (s < 1 || s > this.tuningValues.length) {\n throw new RuntimeError('BadArguments', `String number must be between 1 and ${this.tuningValues.length}:${stringNum}`);\n }\n return this.tuningValues[s - 1];\n }\n /** Return the note number associated with a tablature string and fret. */\n getValueForFret(fretNum, stringNum) {\n const stringValue = this.getValueForString(stringNum);\n const f = Number(fretNum);\n if (f < 0) {\n throw new RuntimeError('BadArguments', `Fret number must be 0 or higher: ${fretNum}`);\n }\n return stringValue + f;\n }\n /** Return the note string associated with tablature string and fret. */\n getNoteForFret(fretNum, stringNum) {\n const noteValue = this.getValueForFret(fretNum, stringNum);\n const octave = Math.floor(noteValue / 12);\n const value = noteValue % 12;\n return `${Tables.integerToNote(value)}/${octave}`;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n/**\n * ## Description\n *\n * Create a new tuplet from the specified notes. The notes must\n * be part of the same voice. If they are of different rhythmic\n * values, then options.num_notes must be set.\n *\n * @constructor\n * @param {Array.} A set of notes: staveNotes,\n * notes, etc... any class that inherits stemmableNote at some\n * point in its prototype chain.\n * @param options: object {\n *\n * num_notes: fit this many notes into...\n * notes_occupied: ...the space of this many notes\n *\n * Together, these two properties make up the tuplet ratio\n * in the form of num_notes : notes_occupied.\n * num_notes defaults to the number of notes passed in, so\n * it is important that if you omit this property, all of\n * the notes passed should be of the same note value.\n * notes_occupied defaults to 2 -- so you should almost\n * certainly pass this parameter for anything other than\n * a basic triplet.\n *\n * location:\n * default 1, which is above the notes: ┌─── 3 ───┐\n * -1 is below the notes └─── 3 ───┘\n *\n * bracketed: boolean, draw a bracket around the tuplet number\n * when true: ┌─── 3 ───┐ when false: 3\n * defaults to true if notes are not beamed, false otherwise\n *\n * ratioed: boolean\n * when true: ┌─── 7:8 ───┐, when false: ┌─── 7 ───┐\n * defaults to true if the difference between num_notes and\n * notes_occupied is greater than 1.\n *\n * y_offset: int, default 0\n * manually offset a tuplet, for instance to avoid collisions\n * with articulations, etc...\n * }\n */\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { Glyph } from './glyph';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var TupletLocation;\n(function (TupletLocation) {\n TupletLocation[TupletLocation[\"BOTTOM\"] = -1] = \"BOTTOM\";\n TupletLocation[TupletLocation[\"TOP\"] = 1] = \"TOP\";\n})(TupletLocation || (TupletLocation = {}));\nexport class Tuplet extends Element {\n constructor(notes, options = {}) {\n super();\n this.numerator_glyphs = [];\n this.denom_glyphs = [];\n if (!notes || !notes.length) {\n throw new RuntimeError('BadArguments', 'No notes provided for tuplet.');\n }\n this.options = options;\n this.notes = notes;\n this.num_notes = this.options.num_notes != undefined ? this.options.num_notes : notes.length;\n // We accept beats_occupied, but warn that it's deprecated:\n // the preferred property name is now notes_occupied.\n if (this.options.beats_occupied) {\n this.beatsOccupiedDeprecationWarning();\n }\n this.notes_occupied = this.options.notes_occupied || this.options.beats_occupied || 2;\n if (this.options.bracketed != undefined) {\n this.bracketed = this.options.bracketed;\n }\n else {\n this.bracketed = notes.some((note) => !note.hasBeam());\n }\n this.ratioed =\n this.options.ratioed != undefined ? this.options.ratioed : Math.abs(this.notes_occupied - this.num_notes) > 1;\n this.point = Tables.currentMusicFont().lookupMetric('digits.tupletPoint');\n this.y_pos = 16;\n this.x_pos = 100;\n this.width = 200;\n this.setTupletLocation(this.options.location || Tuplet.LOCATION_TOP);\n Formatter.AlignRestsToNotes(notes, true, true);\n this.resolveGlyphs();\n this.attach();\n }\n static get CATEGORY() {\n return Category.Tuplet;\n }\n static get LOCATION_TOP() {\n return TupletLocation.TOP;\n }\n static get LOCATION_BOTTOM() {\n return TupletLocation.BOTTOM;\n }\n static get NESTING_OFFSET() {\n return 15;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.tuplet;\n }\n attach() {\n for (let i = 0; i < this.notes.length; i++) {\n const note = this.notes[i];\n note.setTuplet(this);\n }\n }\n detach() {\n for (let i = 0; i < this.notes.length; i++) {\n const note = this.notes[i];\n note.resetTuplet(this);\n }\n }\n /**\n * Set whether or not the bracket is drawn.\n */\n setBracketed(bracketed) {\n this.bracketed = !!bracketed;\n return this;\n }\n /**\n * Set whether or not the ratio is shown.\n */\n setRatioed(ratioed) {\n this.ratioed = !!ratioed;\n return this;\n }\n /**\n * Set the tuplet indicator to be displayed either on the top or bottom of the stave.\n */\n setTupletLocation(location) {\n if (location !== Tuplet.LOCATION_TOP && location !== Tuplet.LOCATION_BOTTOM) {\n // eslint-disable-next-line\n console.warn(`Invalid tuplet location [${location}]. Using Tuplet.LOCATION_TOP.`);\n location = Tuplet.LOCATION_TOP;\n }\n this.location = location;\n return this;\n }\n getNotes() {\n return this.notes;\n }\n getNoteCount() {\n return this.num_notes;\n }\n beatsOccupiedDeprecationWarning() {\n // eslint-disable-next-line\n console.warn('beats_occupied has been deprecated as an option for tuplets. Please use notes_occupied instead.', 'Calls to getBeatsOccupied / setBeatsOccupied should now be routed to getNotesOccupied / setNotesOccupied.', 'The old methods will be removed in VexFlow 5.0.');\n }\n getBeatsOccupied() {\n this.beatsOccupiedDeprecationWarning();\n return this.getNotesOccupied();\n }\n setBeatsOccupied(beats) {\n this.beatsOccupiedDeprecationWarning();\n return this.setNotesOccupied(beats);\n }\n getNotesOccupied() {\n return this.notes_occupied;\n }\n setNotesOccupied(notes) {\n this.detach();\n this.notes_occupied = notes;\n this.resolveGlyphs();\n this.attach();\n }\n resolveGlyphs() {\n this.numerator_glyphs = [];\n let n = this.num_notes;\n while (n >= 1) {\n this.numerator_glyphs.unshift(new Glyph('timeSig' + (n % 10), this.point));\n n = parseInt((n / 10).toString(), 10);\n }\n this.denom_glyphs = [];\n n = this.notes_occupied;\n while (n >= 1) {\n this.denom_glyphs.unshift(new Glyph('timeSig' + (n % 10), this.point));\n n = parseInt((n / 10).toString(), 10);\n }\n }\n // determine how many tuplets are nested within this tuplet\n // on the same side (above/below), to calculate a y\n // offset for this tuplet:\n getNestedTupletCount() {\n const location = this.location;\n const first_note = this.notes[0];\n let maxTupletCount = countTuplets(first_note, location);\n let minTupletCount = countTuplets(first_note, location);\n // Count the tuplets that are on the same side (above/below)\n // as this tuplet:\n function countTuplets(note, location) {\n return note.getTupletStack().filter((tuplet) => tuplet.location === location).length;\n }\n this.notes.forEach((note) => {\n const tupletCount = countTuplets(note, location);\n maxTupletCount = tupletCount > maxTupletCount ? tupletCount : maxTupletCount;\n minTupletCount = tupletCount < minTupletCount ? tupletCount : minTupletCount;\n });\n return maxTupletCount - minTupletCount;\n }\n // determine the y position of the tuplet:\n getYPosition() {\n // offset the tuplet for any nested tuplets between\n // it and the notes:\n const nested_tuplet_y_offset = this.getNestedTupletCount() * Tuplet.NESTING_OFFSET * -this.location;\n // offset the tuplet for any manual y_offset:\n const y_offset = this.options.y_offset || 0;\n // now iterate through the notes and find our highest\n // or lowest locations, to form a base y_pos\n const first_note = this.notes[0];\n let y_pos;\n if (this.location === Tuplet.LOCATION_TOP) {\n y_pos = first_note.checkStave().getYForLine(0) - Tuplet.metrics.topModifierOffset;\n // check modifiers above note to see if they will collide with tuplet beam\n for (let i = 0; i < this.notes.length; ++i) {\n const note = this.notes[i];\n let modLines = 0;\n const mc = note.getModifierContext();\n if (mc) {\n modLines = Math.max(modLines, mc.getState().top_text_line);\n }\n const modY = note.getYForTopText(modLines) - Tuplet.metrics.noteHeadOffset;\n if (note.hasStem() || note.isRest()) {\n const top_y = note.getStemDirection() === Stem.UP\n ? note.getStemExtents().topY - Tuplet.metrics.stemOffset\n : note.getStemExtents().baseY - Tuplet.metrics.noteHeadOffset;\n y_pos = Math.min(top_y, y_pos);\n if (modLines > 0) {\n y_pos = Math.min(modY, y_pos);\n }\n }\n }\n }\n else {\n let lineCheck = Tuplet.metrics.bottomLine; // tuplet default on line 4\n // check modifiers below note to see if they will collide with tuplet beam\n this.notes.forEach((nn) => {\n const mc = nn.getModifierContext();\n if (mc) {\n lineCheck = Math.max(lineCheck, mc.getState().text_line + 1);\n }\n });\n y_pos = first_note.checkStave().getYForLine(lineCheck) + Tuplet.metrics.noteHeadOffset;\n for (let i = 0; i < this.notes.length; ++i) {\n if (this.notes[i].hasStem() || this.notes[i].isRest()) {\n const bottom_y = this.notes[i].getStemDirection() === Stem.UP\n ? this.notes[i].getStemExtents().baseY + Tuplet.metrics.noteHeadOffset\n : this.notes[i].getStemExtents().topY + Tuplet.metrics.stemOffset;\n if (bottom_y > y_pos) {\n y_pos = bottom_y;\n }\n }\n }\n }\n return y_pos + nested_tuplet_y_offset + y_offset;\n }\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n // determine x value of left bound of tuplet\n const first_note = this.notes[0];\n const last_note = this.notes[this.notes.length - 1];\n if (!this.bracketed) {\n this.x_pos = first_note.getStemX();\n this.width = last_note.getStemX() - this.x_pos;\n }\n else {\n this.x_pos = first_note.getTieLeftX() - 5;\n this.width = last_note.getTieRightX() - this.x_pos + 5;\n }\n // determine y value for tuplet\n this.y_pos = this.getYPosition();\n const addGlyphWidth = (width, glyph) => width + defined(glyph.getMetrics().width);\n // calculate total width of tuplet notation\n let width = this.numerator_glyphs.reduce(addGlyphWidth, 0);\n if (this.ratioed) {\n width = this.denom_glyphs.reduce(addGlyphWidth, width);\n width += this.point * 0.32;\n }\n const notation_center_x = this.x_pos + this.width / 2;\n const notation_start_x = notation_center_x - width / 2;\n // draw bracket if the tuplet is not beamed\n if (this.bracketed) {\n const line_width = this.width / 2 - width / 2 - 5;\n // only draw the bracket if it has positive length\n if (line_width > 0) {\n ctx.fillRect(this.x_pos, this.y_pos, line_width, 1);\n ctx.fillRect(this.x_pos + this.width / 2 + width / 2 + 5, this.y_pos, line_width, 1);\n ctx.fillRect(this.x_pos, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM ? 1 : 0), 1, this.location * 10);\n ctx.fillRect(this.x_pos + this.width, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM ? 1 : 0), 1, this.location * 10);\n }\n }\n // draw numerator glyphs\n const shiftY = Tables.currentMusicFont().lookupMetric('digits.shiftY', 0);\n let x_offset = 0;\n this.numerator_glyphs.forEach((glyph) => {\n glyph.render(ctx, notation_start_x + x_offset, this.y_pos + this.point / 3 - 2 + shiftY);\n x_offset += defined(glyph.getMetrics().width);\n });\n // display colon and denominator if the ratio is to be shown\n if (this.ratioed) {\n const colon_x = notation_start_x + x_offset + this.point * 0.16;\n const colon_radius = this.point * 0.06;\n ctx.beginPath();\n ctx.arc(colon_x, this.y_pos - this.point * 0.08, colon_radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n ctx.beginPath();\n ctx.arc(colon_x, this.y_pos + this.point * 0.12, colon_radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n x_offset += this.point * 0.32;\n this.denom_glyphs.forEach((glyph) => {\n glyph.render(ctx, notation_start_x + x_offset, this.y_pos + this.point / 3 - 2 + shiftY);\n x_offset += defined(glyph.getMetrics().width);\n });\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Ron B. Yeh\n// MIT License\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Use instead of `instanceof` as a more flexible type guard.\n * @param obj check if this object's CATEGORY matches the provided category.\n * @param category a string representing a category of VexFlow objects.\n * @param checkAncestors defaults to `true`, so we walk up the prototype chain to look for a matching `CATEGORY`.\n * If `false`, we do not check the superclass or other ancestors.\n * @returns true if `obj` has a static `CATEGORY` property that matches `category`.\n */\nexport function isCategory(obj, category, checkAncestors = true) {\n // obj is undefined, a number, a primitive string, or null.\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n // `obj.constructor` is a reference to the constructor function that created the `obj` instance.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor\n let constructorFcn = obj.constructor;\n // Check if the object's static .CATEGORY matches the provided category.\n if (checkAncestors) {\n // Walk up the prototype chain to look for a matching obj.constructor.CATEGORY.\n while (obj !== null) {\n constructorFcn = obj.constructor;\n if ('CATEGORY' in constructorFcn && constructorFcn.CATEGORY === category) {\n return true;\n }\n obj = Object.getPrototypeOf(obj);\n }\n return false;\n }\n else {\n // Do not walk up the prototype chain. Just check this particular object's static .CATEGORY string.\n return 'CATEGORY' in constructorFcn && constructorFcn.CATEGORY === category;\n }\n}\nexport const isAccidental = (obj) => isCategory(obj, Category.Accidental);\nexport const isAnnotation = (obj) => isCategory(obj, Category.Annotation);\nexport const isBarline = (obj) => isCategory(obj, Category.Barline);\nexport const isDot = (obj) => isCategory(obj, Category.Dot);\nexport const isGraceNote = (obj) => isCategory(obj, Category.GraceNote);\nexport const isGraceNoteGroup = (obj) => isCategory(obj, Category.GraceNoteGroup);\nexport const isNote = (obj) => isCategory(obj, Category.Note);\nexport const isRenderContext = (obj) => isCategory(obj, Category.RenderContext);\nexport const isStaveNote = (obj) => isCategory(obj, Category.StaveNote);\nexport const isStemmableNote = (obj) => isCategory(obj, Category.StemmableNote);\nexport const isTabNote = (obj) => isCategory(obj, Category.TabNote);\n// 'const' enums are erased by the TypeScript compiler. The string values are inlined at all the use sites.\n// See: https://www.typescriptlang.org/docs/handbook/enums.html#const-enums\nexport var Category;\n(function (Category) {\n Category[\"Accidental\"] = \"Accidental\";\n Category[\"Annotation\"] = \"Annotation\";\n Category[\"Articulation\"] = \"Articulation\";\n Category[\"Barline\"] = \"Barline\";\n Category[\"BarNote\"] = \"BarNote\";\n Category[\"Beam\"] = \"Beam\";\n Category[\"Bend\"] = \"Bend\";\n Category[\"ChordSymbol\"] = \"ChordSymbol\";\n Category[\"Clef\"] = \"Clef\";\n Category[\"ClefNote\"] = \"ClefNote\";\n Category[\"Crescendo\"] = \"Crescendo\";\n Category[\"Curve\"] = \"Curve\";\n Category[\"Dot\"] = \"Dot\";\n Category[\"Element\"] = \"Element\";\n Category[\"Fraction\"] = \"Fraction\";\n Category[\"FretHandFinger\"] = \"FretHandFinger\";\n Category[\"GhostNote\"] = \"GhostNote\";\n Category[\"Glyph\"] = \"Glyph\";\n Category[\"GlyphNote\"] = \"GlyphNote\";\n Category[\"GraceNote\"] = \"GraceNote\";\n Category[\"GraceNoteGroup\"] = \"GraceNoteGroup\";\n Category[\"GraceTabNote\"] = \"GraceTabNote\";\n Category[\"KeySignature\"] = \"KeySignature\";\n Category[\"KeySigNote\"] = \"KeySigNote\";\n Category[\"Modifier\"] = \"Modifier\";\n Category[\"MultiMeasureRest\"] = \"MultiMeasureRest\";\n Category[\"Note\"] = \"Note\";\n Category[\"NoteHead\"] = \"NoteHead\";\n Category[\"NoteSubGroup\"] = \"NoteSubGroup\";\n Category[\"Ornament\"] = \"Ornament\";\n Category[\"Parenthesis\"] = \"Parenthesis\";\n Category[\"PedalMarking\"] = \"PedalMarking\";\n Category[\"RenderContext\"] = \"RenderContext\";\n Category[\"RepeatNote\"] = \"RepeatNote\";\n Category[\"Repetition\"] = \"Repetition\";\n Category[\"Stave\"] = \"Stave\";\n Category[\"StaveConnector\"] = \"StaveConnector\";\n Category[\"StaveHairpin\"] = \"StaveHairpin\";\n Category[\"StaveLine\"] = \"StaveLine\";\n Category[\"StaveModifier\"] = \"StaveModifier\";\n Category[\"StaveNote\"] = \"StaveNote\";\n Category[\"StaveSection\"] = \"StaveSection\";\n Category[\"StaveTempo\"] = \"StaveTempo\";\n Category[\"StaveText\"] = \"StaveText\";\n Category[\"StaveTie\"] = \"StaveTie\";\n Category[\"Stem\"] = \"Stem\";\n Category[\"StemmableNote\"] = \"StemmableNote\";\n Category[\"StringNumber\"] = \"StringNumber\";\n Category[\"Stroke\"] = \"Stroke\";\n Category[\"System\"] = \"System\";\n Category[\"TabNote\"] = \"TabNote\";\n Category[\"TabSlide\"] = \"TabSlide\";\n Category[\"TabStave\"] = \"TabStave\";\n Category[\"TabTie\"] = \"TabTie\";\n Category[\"TextBracket\"] = \"TextBracket\";\n Category[\"TextDynamics\"] = \"TextDynamics\";\n Category[\"TextNote\"] = \"TextNote\";\n Category[\"Tickable\"] = \"Tickable\";\n Category[\"TimeSignature\"] = \"TimeSignature\";\n Category[\"TimeSigNote\"] = \"TimeSigNote\";\n Category[\"Tremolo\"] = \"Tremolo\";\n Category[\"Tuplet\"] = \"Tuplet\";\n Category[\"Vibrato\"] = \"Vibrato\";\n Category[\"VibratoBracket\"] = \"VibratoBracket\";\n Category[\"Voice\"] = \"Voice\";\n Category[\"Volta\"] = \"Volta\";\n})(Category || (Category = {}));\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// Note: Keep this module free of imports to reduce the chance of circular dependencies.\n/** `RuntimeError` will be thrown by VexFlow classes in case of error. */\nexport class RuntimeError extends Error {\n constructor(code, message = '') {\n super('[RuntimeError] ' + code + ': ' + message);\n this.code = code;\n }\n}\n/** VexFlow can be used outside of the browser (e.g., Node) where `window` may not be defined. */\n// eslint-disable-next-line\nexport function globalObject() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return Function('return this')();\n}\n/**\n * Check that `x` is of type `T` and not `undefined`.\n * If `x` is `undefined`, throw a RuntimeError with the optionally provided error code and message.\n */\nexport function defined(x, code = 'undefined', message = '') {\n if (x === undefined) {\n throw new RuntimeError(code, message);\n }\n return x;\n}\n/** Default log function sends all arguments to console. */\n// eslint-disable-next-line\nexport function log(block, ...args) {\n if (!args)\n return;\n const line = Array.prototype.slice.call(args).join(' ');\n globalObject().console.log(block + ': ' + line);\n}\n/** Dump warning to console. */\n// eslint-disable-next-line\nexport function warn(...args) {\n const line = args.join(' ');\n const err = new Error();\n globalObject().console.log('Warning: ', line, err.stack);\n}\n/** Round number to nearest fractional value (`.5`, `.25`, etc.) */\nfunction roundN(x, n) {\n return x % n >= n / 2 ? parseInt(`${x / n}`, 10) * n + n : parseInt(`${x / n}`, 10) * n;\n}\n/** Locate the mid point between stave lines. Returns a fractional line if a space. */\nexport function midLine(a, b) {\n let mid_line = b + (a - b) / 2;\n if (mid_line % 2 > 0) {\n mid_line = roundN(mid_line * 10, 5) / 10;\n }\n return mid_line;\n}\n/**\n * Used by various classes (e.g., SVGContext) to provide a\n * unique prefix to element names (or other keys in shared namespaces).\n */\nexport function prefix(text) {\n return `vf-${text}`;\n}\n/**\n * Convert an arbitrary angle in radians to the equivalent one in the range [0, pi).\n */\nexport function normalizeAngle(a) {\n a = a % (2 * Math.PI);\n if (a < 0) {\n a += 2 * Math.PI;\n }\n return a;\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Utility methods used by the rest of the VexFlow codebase.\nimport { Flow } from './flow';\nimport { log, RuntimeError } from './util';\nexport class Vex {\n // Users of `Vex.forEach(a, fn)` should use `Array.prototype.forEach()` instead.\n // static forEach(arr: T[], callbackFn: (value: T, index: number, array: T[]) => void) {\n // arr.forEach(callbackFn);\n // }\n /**\n * Take `arr` and return a new list consisting of the sorted, unique,\n * contents of arr. Does not modify `arr`.\n */\n // eslint-disable-next-line\n static sortAndUnique(arr, cmp, eq) {\n if (arr.length > 1) {\n const newArr = [];\n let last;\n arr.sort(cmp);\n for (let i = 0; i < arr.length; ++i) {\n if (i === 0 || !eq(arr[i], last)) {\n newArr.push(arr[i]);\n }\n last = arr[i];\n }\n return newArr;\n }\n else {\n return arr;\n }\n }\n /** Check if array `arr` contains `obj`. */\n // eslint-disable-next-line\n static contains(arr, obj) {\n let i = arr.length;\n while (i--) {\n if (arr[i] === obj) {\n return true;\n }\n }\n return false;\n }\n // Get the 2D Canvas context from DOM element `canvas_sel`.\n static getCanvasContext(canvasSelector) {\n if (!canvasSelector) {\n throw new RuntimeError('BadArgument', 'Invalid canvas selector: ' + canvasSelector);\n }\n const canvas = document.getElementById(canvasSelector);\n if (!(canvas && canvas.getContext)) {\n throw new RuntimeError('UnsupportedBrowserError', 'This browser does not support HTML5 Canvas');\n }\n return canvas.getContext('2d');\n }\n /** Benchmark. Run function `f` once and report time elapsed shifted by `s` milliseconds. */\n // eslint-disable-next-line\n static benchmark(s, f) {\n const start_time = new Date().getTime();\n f();\n const elapsed = new Date().getTime() - start_time;\n log(s, elapsed + 'ms');\n }\n // Get stack trace.\n static stackTrace() {\n const err = new Error();\n return err.stack;\n }\n}\nVex.Flow = Flow;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Bend } from './bend';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\n/** `Vibrato` implements diverse vibratos. */\nexport class Vibrato extends Modifier {\n constructor() {\n super();\n this.position = Modifier.Position.RIGHT;\n this.render_options = {\n harsh: false,\n vibrato_width: 20,\n wave_height: 6,\n wave_width: 4,\n wave_girth: 2,\n };\n this.setVibratoWidth(this.render_options.vibrato_width);\n }\n static get CATEGORY() {\n return Category.Vibrato;\n }\n /** Arrange vibratos inside a `ModifierContext`. */\n static format(vibratos, state, context) {\n if (!vibratos || vibratos.length === 0)\n return false;\n // Vibratos are always on top.\n let text_line = state.top_text_line;\n let width = 0;\n let shift = state.right_shift - 7;\n // If there's a bend, drop the text line\n const bends = context.getMembers(Bend.CATEGORY);\n if (bends && bends.length > 0) {\n const bendHeight = bends.map((bb) => bb.getTextHeight()).reduce((a, b) => (a > b ? a : b)) / Tables.STAVE_LINE_DISTANCE;\n text_line = text_line - (bendHeight + 1);\n }\n else {\n state.top_text_line += 1;\n }\n // Format Vibratos\n for (let i = 0; i < vibratos.length; ++i) {\n const vibrato = vibratos[i];\n vibrato.setXShift(shift);\n vibrato.setTextLine(text_line);\n width += vibrato.getWidth();\n shift += width;\n }\n state.right_shift += width;\n return true;\n }\n /** Set harsh vibrato. */\n setHarsh(harsh) {\n this.render_options.harsh = harsh;\n return this;\n }\n /** Set vibrato width in pixels. */\n setVibratoWidth(width) {\n this.render_options.vibrato_width = width;\n this.setWidth(width);\n return this;\n }\n /** Draw the vibrato on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(Modifier.Position.RIGHT, this.index);\n const vx = start.x + this.x_shift;\n const vy = note.getYForTopText(this.text_line) + 2;\n Vibrato.renderVibrato(ctx, vx, vy, this.render_options);\n }\n /**\n * Static rendering method that can be called from\n * other classes (e.g. VibratoBracket).\n */\n static renderVibrato(ctx, x, y, opts) {\n const { harsh, vibrato_width, wave_width, wave_girth, wave_height } = opts;\n const num_waves = vibrato_width / wave_width;\n ctx.beginPath();\n let i;\n if (harsh) {\n ctx.moveTo(x, y + wave_girth + 1);\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.lineTo(x + wave_width, y - wave_height / 2);\n x += wave_width;\n ctx.lineTo(x + wave_width, y + wave_height / 2);\n x += wave_width;\n }\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.lineTo(x - wave_width, y - wave_height / 2 + wave_girth + 1);\n x -= wave_width;\n ctx.lineTo(x - wave_width, y + wave_height / 2 + wave_girth + 1);\n x -= wave_width;\n }\n ctx.fill();\n }\n else {\n ctx.moveTo(x, y + wave_girth);\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.quadraticCurveTo(x + wave_width / 2, y - wave_height / 2, x + wave_width, y);\n x += wave_width;\n ctx.quadraticCurveTo(x + wave_width / 2, y + wave_height / 2, x + wave_width, y);\n x += wave_width;\n }\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.quadraticCurveTo(x - wave_width / 2, y + wave_height / 2 + wave_girth, x - wave_width, y + wave_girth);\n x -= wave_width;\n ctx.quadraticCurveTo(x - wave_width / 2, y - wave_height / 2 + wave_girth, x - wave_width, y + wave_girth);\n x -= wave_width;\n }\n ctx.fill();\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Balazs Forian-Szabo\n// MIT License\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { log } from './util';\nimport { Vibrato } from './vibrato';\n// eslint-disable-next-line\nfunction L(...args) {\n if (VibratoBracket.DEBUG)\n log('Vex.Flow.VibratoBracket', args);\n}\n/** `VibratoBracket` renders vibrato effect between two notes. */\nexport class VibratoBracket extends Element {\n /**\n * Either the stop or start note must be set, or both of them.\n * An undefined value for the start or stop note indicates that the vibrato\n * is drawn from the beginning or until the end of the stave accordingly.\n */\n constructor(bracket_data) {\n super();\n if (bracket_data.start)\n this.start = bracket_data.start;\n if (bracket_data.stop)\n this.stop = bracket_data.stop;\n this.line = 1;\n this.render_options = {\n harsh: false,\n wave_height: 6,\n wave_width: 4,\n wave_girth: 2,\n vibrato_width: 0,\n };\n }\n static get CATEGORY() {\n return Category.VibratoBracket;\n }\n /** Set line position of the vibrato bracket. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Set harsh vibrato bracket. */\n setHarsh(harsh) {\n this.render_options.harsh = harsh;\n return this;\n }\n /** Draw the vibrato bracket on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const y = (this.start && this.start.checkStave().getYForTopText(this.line)) ||\n (this.stop && this.stop.checkStave().getYForTopText(this.line)) ||\n 0;\n // If start note is not set then vibrato will be drawn\n // from the beginning of the stave\n const start_x = (this.start && this.start.getAbsoluteX()) || (this.stop && this.stop.checkStave().getTieStartX()) || 0;\n // If stop note is not set then vibrato will be drawn\n // until the end of the stave\n const stop_x = (this.stop && this.stop.getAbsoluteX() - this.stop.getWidth() - 5) ||\n (this.start && this.start.checkStave().getTieEndX() - 10) ||\n 0;\n this.render_options.vibrato_width = stop_x - start_x;\n L('Rendering VibratoBracket: start_x:', start_x, 'stop_x:', stop_x, 'y:', y);\n Vibrato.renderVibrato(ctx, start_x, y, this.render_options);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.VibratoBracket.DEBUG` to `true`. */\nVibratoBracket.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var VoiceMode;\n(function (VoiceMode) {\n VoiceMode[VoiceMode[\"STRICT\"] = 1] = \"STRICT\";\n VoiceMode[VoiceMode[\"SOFT\"] = 2] = \"SOFT\";\n VoiceMode[VoiceMode[\"FULL\"] = 3] = \"FULL\";\n})(VoiceMode || (VoiceMode = {}));\n/**\n * `Voice` is mainly a container object to group `Tickables` for formatting.\n */\nexport class Voice extends Element {\n constructor(time) {\n super();\n this.resolutionMultiplier = 1;\n this.mode = VoiceMode.STRICT;\n this.preFormatted = false;\n this.ticksUsed = new Fraction(0, 1);\n this.largestTickWidth = 0;\n this.tickables = [];\n this.options = {\n softmaxFactor: Tables.SOFTMAX_FACTOR,\n };\n // Convert the `time` string into a VoiceTime object if necessary.\n let voiceTime;\n if (typeof time === 'string') {\n // Time signature shortcut: \"4/4\", \"3/8\", etc.\n const match = time.match(/(\\d+)\\/(\\d+)/);\n if (match) {\n voiceTime = {\n num_beats: parseInt(match[1]),\n beat_value: parseInt(match[2]),\n };\n }\n }\n else {\n voiceTime = time;\n }\n // Default time signature is 4/4.\n this.time = Object.assign({ num_beats: 4, beat_value: 4, resolution: Tables.RESOLUTION }, voiceTime);\n // Recalculate total ticks.\n this.totalTicks = new Fraction(this.time.num_beats * (this.time.resolution / this.time.beat_value), 1);\n this.smallestTickCount = this.totalTicks.clone();\n }\n static get CATEGORY() {\n return Category.Voice;\n }\n /**\n * Modes allow the addition of ticks in three different ways:\n * - STRICT: This is the default. Ticks must fill the voice.\n * - SOFT: Ticks can be added without restrictions.\n * - FULL: Ticks do not need to fill the voice, but can't exceed the maximum tick length.\n */\n static get Mode() {\n return VoiceMode;\n }\n /** Get the total ticks in the voice. */\n getTotalTicks() {\n return this.totalTicks;\n }\n /** Get the total ticks used in the voice by all the tickables. */\n getTicksUsed() {\n return this.ticksUsed;\n }\n /** Get the largest width of all the tickables. */\n getLargestTickWidth() {\n return this.largestTickWidth;\n }\n /** Get the tick count for the shortest tickable */\n getSmallestTickCount() {\n return this.smallestTickCount;\n }\n /** Get the tickables in the voice. */\n getTickables() {\n return this.tickables;\n }\n /** Get the voice mode. */\n getMode() {\n return this.mode;\n }\n /**\n * Set the voice mode.\n * @param mode value from `VoiceMode`\n */\n setMode(mode) {\n this.mode = mode;\n return this;\n }\n /** Get the resolution multiplier for the voice. */\n getResolutionMultiplier() {\n return this.resolutionMultiplier;\n }\n /** Get the actual tick resolution for the voice. */\n getActualResolution() {\n return this.resolutionMultiplier * this.time.resolution;\n }\n /** Set the voice's stave. */\n setStave(stave) {\n this.stave = stave;\n // Reset the bounding box so we can reformat.\n this.boundingBox = undefined;\n return this;\n }\n getStave() {\n return this.stave;\n }\n /** Get the bounding box for the voice. */\n getBoundingBox() {\n if (!this.boundingBox) {\n const stave = this.checkStave();\n let boundingBox = undefined;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n tickable.setStave(stave);\n const bb = tickable.getBoundingBox();\n if (bb) {\n boundingBox = boundingBox ? boundingBox.mergeWith(bb) : bb;\n }\n }\n this.boundingBox = boundingBox;\n }\n return this.boundingBox;\n }\n /** Set the voice mode to strict or soft. */\n setStrict(strict) {\n this.mode = strict ? VoiceMode.STRICT : VoiceMode.SOFT;\n return this;\n }\n /** Determine if the voice is complete according to the voice mode. */\n isComplete() {\n if (this.mode === VoiceMode.STRICT || this.mode === VoiceMode.FULL) {\n return this.ticksUsed.equals(this.totalTicks);\n }\n else {\n return true;\n }\n }\n /**\n * We use softmax to layout the tickables proportional to the exponent of\n * their duration. The softmax factor is used to determine the 'linearness' of\n * the layout.\n *\n * The softmax of all the tickables in this voice should sum to 1.\n */\n setSoftmaxFactor(factor) {\n this.options.softmaxFactor = factor;\n return this;\n }\n /**\n * Calculate the sum of the exponents of all the ticks in this voice to use\n * as the denominator of softmax.\n */\n reCalculateExpTicksUsed() {\n const totalTicks = this.ticksUsed.value();\n const exp = (tickable) => Math.pow(this.options.softmaxFactor, tickable.getTicks().value() / totalTicks);\n this.expTicksUsed = this.tickables.map(exp).reduce((a, b) => a + b, 0);\n return this.expTicksUsed;\n }\n /** Get the softmax-scaled value of a tick duration. 'tickValue' is a number. */\n softmax(tickValue) {\n if (!this.expTicksUsed) {\n this.expTicksUsed = this.reCalculateExpTicksUsed();\n }\n const totalTicks = this.ticksUsed.value();\n const exp = (v) => Math.pow(this.options.softmaxFactor, v / totalTicks);\n const sm = exp(tickValue) / this.expTicksUsed;\n return sm;\n }\n /** Add a tickable to the voice. */\n addTickable(tickable) {\n if (!tickable.shouldIgnoreTicks()) {\n const ticks = tickable.getTicks();\n // Update the total ticks for this line.\n this.ticksUsed.add(ticks);\n this.expTicksUsed = 0; // reset\n if ((this.mode === VoiceMode.STRICT || this.mode === VoiceMode.FULL) &&\n this.ticksUsed.greaterThan(this.totalTicks)) {\n this.ticksUsed.subtract(ticks);\n throw new RuntimeError('BadArgument', 'Too many ticks.');\n }\n // Track the smallest tickable for formatting.\n if (ticks.lessThan(this.smallestTickCount)) {\n this.smallestTickCount = ticks.clone();\n }\n this.resolutionMultiplier = this.ticksUsed.denominator;\n // Expand total ticks using denominator from ticks used.\n this.totalTicks.add(0, this.ticksUsed.denominator);\n }\n // Add the tickable to the line.\n this.tickables.push(tickable);\n tickable.setVoice(this);\n return this;\n }\n /** Add an array of tickables to the voice. */\n addTickables(tickables) {\n for (let i = 0; i < tickables.length; ++i) {\n this.addTickable(tickables[i]);\n }\n return this;\n }\n /** Preformat the voice by applying the voice's stave to each note. */\n preFormat() {\n if (this.preFormatted)\n return this;\n const stave = this.checkStave();\n this.tickables.forEach((tickable) => {\n if (!tickable.getStave()) {\n tickable.setStave(stave);\n }\n });\n this.preFormatted = true;\n return this;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n /**\n * Render the voice onto the canvas `context` and an optional `stave`.\n * If `stave` is omitted, it is expected that the notes have staves\n * already set.\n *\n * This method also calculates the voice's boundingBox while drawing\n * the notes. Note the similarities with this.getBoundingBox().\n */\n draw(context = this.checkContext(), stave) {\n stave = stave !== null && stave !== void 0 ? stave : this.stave;\n this.setRendered();\n let boundingBox = undefined;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n // Set the stave if provided.\n if (stave) {\n tickable.setStave(stave);\n }\n defined(tickable.getStave(), 'MissingStave', 'The voice cannot draw tickables without staves.');\n const bb = tickable.getBoundingBox();\n if (bb) {\n boundingBox = boundingBox ? boundingBox.mergeWith(bb) : bb;\n }\n tickable.setContext(context);\n tickable.drawWithStyle();\n }\n this.boundingBox = boundingBox;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Ron B. Yeh\n// MIT License\n//\n// Utilities for working with Web APIs.\n// See: https://developer.mozilla.org/en-US/docs/Web/API\nimport { globalObject } from './util';\n// eslint-disable-next-line\nexport function isHTMLCanvas(element) {\n if (!element)\n return false;\n const global = globalObject();\n return (\n // It's either an instance of the HTMLCanvasElement class,\n (typeof global.HTMLCanvasElement === 'function' && element instanceof global.HTMLCanvasElement) ||\n // OR it's pretending to be a element. Good enough!\n // Do not rely on .tagName, because node-canvas doesn't provide a tagName.\n (typeof element.getContext === 'function' && typeof element.toDataURL === 'function'));\n}\n// eslint-disable-next-line\nexport function isHTMLDiv(element) {\n if (!element)\n return false;\n const global = globalObject();\n return (\n // It's either an instance of the HTMLDivElement class.\n (typeof global.HTMLDivElement === 'function' && element instanceof global.HTMLDivElement) ||\n // OR it's pretending to be a
. See: svgcontext.ts.\n (typeof element.appendChild === 'function' && typeof element.style === 'object'));\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// vexflow-debug.ts is the entry point for the build output file vexflow-debug.js.\n// It statically bundles all the music engraving fonts.\n// Currently, it is identical to vexflow.ts, but the webpack config inside Gruntfile.js\n// sets the webpack mode to 'development' to produce an unminified build.\n// In the future, we could do something different with this entry file, such as turn on flags for logging.\nimport { Flow } from '../src/flow';\nimport { loadAllMusicFonts } from '../src/fonts/load_all';\nimport { loadTextFonts } from '../src/fonts/textfonts';\nloadAllMusicFonts();\nFlow.setMusicFont('Bravura', 'Gonville', 'Custom');\nloadTextFonts();\n// Re-export all exports from index.ts.\nexport * from '../src/index';\n// Also collect all exports into a default export for CJS projects.\nexport * as default from '../src/index';\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/build/cjs/vexflow-font-bravura.js b/build/cjs/vexflow-font-bravura.js new file mode 100644 index 0000000000..002b89713d --- /dev/null +++ b/build/cjs/vexflow-font-bravura.js @@ -0,0 +1,2 @@ +!function(b,l){"object"==typeof exports&&"object"==typeof module?module.exports=l():"function"==typeof define&&define.amd?define([],l):"object"==typeof exports?exports.VexFlowFont=l():(b.VexFlowFont=b.VexFlowFont||{},b.VexFlowFont.Bravura=l())}("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:this,(function(){return(()=>{"use strict";var b={d:(l,a)=>{for(var m in a)b.o(a,m)&&!b.o(l,m)&&Object.defineProperty(l,m,{enumerable:!0,get:a[m]})},o:(b,l)=>Object.prototype.hasOwnProperty.call(b,l)},l={};b.d(l,{default:()=>a});const a={data:{glyphs:{bracketTop:{x_min:0,x_max:469,y_min:0,y_max:295,ha:295,o:"m 0 0 l 180 0 b 674 390 410 43 616 150 b 675 405 675 396 675 400 b 664 425 675 416 671 422 b 628 405 651 425 635 415 b 157 179 613 389 432 199 l 12 179 b 0 168 3 179 0 177 z"},bracketBottom:{x_min:0,x_max:469,y_min:-295,y_max:0,ha:295,o:"m 0 -168 b 12 -179 0 -177 3 -179 l 157 -179 b 628 -405 432 -199 613 -389 b 664 -425 635 -415 651 -425 b 675 -405 671 -422 675 -416 b 674 -390 675 -400 675 -396 b 180 0 616 -150 410 -43 l 0 0 z"},barlineTick:{x_min:0,x_max:36,y_min:868,y_max:1120,ha:252,o:"m 52 1250 l 52 1613 l 0 1613 l 0 1250 z"},breathMarkTick:{x_min:0,x_max:500,y_min:0,y_max:502,ha:502,o:"m 9 367 b 0 374 6 372 3 374 b 9 334 0 367 0 343 b 179 19 40 312 164 121 b 192 0 179 3 186 0 b 210 19 197 0 207 6 b 698 701 245 197 507 658 b 720 714 714 704 720 711 b 698 723 720 720 711 723 b 197 186 455 714 210 202 b 186 176 194 179 189 176 b 176 186 179 176 176 186 b 9 367 143 266 27 359 z"},segno:{x_min:4,x_max:550,y_min:-27,y_max:759,ha:786,o:"m 194 958 b 217 939 203 958 213 955 l 220 929 b 325 805 230 890 252 805 b 425 901 384 805 425 840 b 413 969 425 923 420 946 b 220 1060 390 1035 294 1060 b 6 793 120 1060 6 936 b 29 687 6 759 13 723 b 295 449 75 582 284 454 b 304 438 301 446 304 444 b 295 415 304 432 301 425 b 78 22 285 395 78 22 b 73 3 75 16 73 9 b 114 -39 73 -20 91 -39 b 150 -17 128 -39 143 -30 b 377 395 150 -17 373 386 b 395 402 377 393 389 402 b 704 176 416 397 704 312 b 621 75 704 120 670 82 l 616 73 b 562 138 586 73 562 94 l 562 154 b 485 249 562 209 526 249 b 468 246 480 249 474 248 b 366 153 415 233 366 210 b 540 -12 366 65 455 -12 b 600 -1 559 -12 579 -9 b 792 251 716 37 792 131 b 789 292 792 264 791 278 b 523 588 768 451 540 579 b 498 611 505 598 498 603 b 501 619 498 613 500 616 b 732 1032 508 631 732 1032 b 737 1053 736 1040 737 1045 b 697 1093 737 1076 719 1093 b 661 1073 683 1093 668 1086 b 423 647 661 1073 432 660 b 410 635 419 639 416 635 b 396 639 406 635 402 636 b 128 792 383 644 166 727 b 108 868 120 808 108 838 b 186 958 108 907 125 948 z m 598 671 b 680 589 598 626 635 589 b 762 671 726 589 762 626 b 680 753 762 717 726 753 b 598 671 635 753 598 717 z m 202 380 b 120 462 202 425 166 462 b 37 380 75 462 37 425 b 120 298 37 334 75 298 b 202 380 166 298 202 334 z"},coda:{x_min:-4,x_max:955,y_min:-158,y_max:898,ha:1056,o:"m 1349 576 l 1178 576 b 729 1083 1164 847 962 1064 l 729 1269 b 694 1293 729 1287 713 1293 b 660 1269 675 1293 660 1287 l 660 1083 b 210 576 426 1064 226 848 l 20 576 b -6 541 0 576 -6 560 b 20 507 -6 523 0 507 l 210 507 b 660 0 226 238 426 19 l 660 -202 b 694 -228 660 -222 675 -228 b 729 -202 713 -228 729 -222 l 729 0 b 1178 507 962 19 1164 238 l 1349 507 b 1375 541 1369 507 1375 523 b 1349 576 1375 560 1369 576 z m 940 576 l 729 576 l 729 1002 b 940 576 930 985 940 809 z m 660 1002 l 660 576 l 455 576 b 660 1002 455 809 455 985 z m 455 507 l 660 507 l 660 69 b 455 507 474 91 456 285 z m 729 69 l 729 507 l 940 507 b 729 69 936 287 909 91 z"},gClef:{x_min:0,x_max:671,y_min:-658,y_max:1098,ha:1756,o:"m 541 598 b 550 625 539 615 541 616 b 824 1174 706 770 824 953 b 730 1509 824 1299 789 1423 b 655 1581 708 1541 671 1581 b 562 1512 635 1581 590 1544 b 420 1064 455 1394 420 1214 b 441 828 420 981 431 887 b 428 793 444 811 445 808 b 0 125 220 622 0 416 b 524 -363 0 -125 171 -363 b 624 -354 557 -363 595 -360 b 645 -367 639 -351 642 -350 b 684 -657 662 -464 684 -589 b 455 -896 684 -870 540 -896 b 340 -854 377 -896 340 -873 b 386 -829 340 -844 353 -840 b 482 -694 431 -816 482 -778 b 344 -547 482 -615 432 -547 b 190 -713 248 -547 190 -624 b 464 -948 190 -806 246 -948 b 747 -660 560 -948 747 -904 b 706 -351 747 -577 721 -441 b 724 -327 703 -334 704 -336 b 966 16 870 -269 966 -147 b 619 363 966 200 831 363 b 577 389 582 363 582 363 z m 677 1358 b 763 1240 724 1358 763 1319 b 513 851 763 1080 626 950 b 494 863 503 842 497 844 b 485 995 488 900 485 949 b 677 1358 485 1220 589 1358 z m 520 377 b 498 343 524 350 524 351 b 289 63 372 300 289 186 b 455 -192 289 -66 357 -158 b 494 -200 467 -196 484 -200 b 511 -184 505 -200 511 -193 b 490 -166 511 -174 500 -170 b 386 -12 429 -140 386 -78 b 530 157 386 71 442 132 b 559 145 553 163 556 161 l 631 -284 b 611 -304 634 -300 632 -300 b 530 -311 588 -308 559 -311 b 115 29 278 -311 115 -171 b 249 363 115 114 130 228 b 469 567 336 459 402 513 b 490 562 484 579 487 577 z m 619 148 b 635 168 616 166 618 170 b 848 -66 752 158 848 60 b 713 -271 848 -157 793 -230 b 690 -262 696 -279 693 -279 z"},cClef:{x_min:0,x_max:699,y_min:-506,y_max:506,ha:1012,o:"m 331 694 b 301 724 331 714 321 724 l 300 724 b 269 694 279 724 269 714 l 269 -694 b 300 -724 269 -714 279 -724 l 301 -724 b 331 -694 321 -724 331 -714 l 331 -63 b 344 -55 331 -52 338 -53 b 472 -265 382 -65 442 -102 b 500 -301 477 -288 485 -301 b 530 -262 516 -301 523 -287 b 684 -128 549 -199 582 -128 b 804 -409 778 -128 804 -220 b 651 -683 804 -598 770 -683 b 528 -644 631 -683 528 -674 b 567 -622 528 -636 552 -628 b 625 -528 596 -612 625 -583 b 527 -429 625 -465 583 -429 b 416 -547 465 -429 416 -471 b 667 -729 416 -638 495 -729 b 1007 -413 903 -729 1007 -563 b 706 -76 1007 -215 897 -76 b 618 -89 664 -76 636 -84 b 576 -88 603 -94 589 -96 b 524 0 556 -75 524 -29 b 576 88 524 29 556 75 b 618 89 589 96 603 94 b 706 76 636 84 664 76 b 1007 413 897 76 1007 215 b 667 729 1007 563 903 729 b 416 547 495 729 416 638 b 527 429 416 471 465 429 b 625 528 583 429 625 465 b 567 622 625 583 596 612 b 528 644 552 628 528 636 b 651 683 528 674 631 683 b 804 409 770 683 804 598 b 684 128 804 220 778 128 b 530 262 582 128 549 199 b 500 301 523 287 516 301 b 472 265 485 301 477 288 b 344 55 442 102 382 65 b 331 63 338 53 331 52 z m 30 724 b 0 694 10 724 0 714 l 0 -694 b 30 -724 0 -714 10 -724 l 154 -724 b 184 -694 174 -724 184 -714 l 184 694 b 154 724 184 714 174 724 z"},fClef:{x_min:-5,x_max:684,y_min:-635,y_max:262,ha:897,o:"m 363 377 b 0 56 112 377 0 194 b 177 -158 0 -59 60 -158 b 330 -6 268 -158 330 -95 b 192 144 330 86 262 144 b 120 134 153 144 138 134 b 96 160 101 134 96 145 b 330 323 96 217 183 323 b 549 -53 482 323 549 173 b 14 -871 549 -455 350 -680 b -7 -897 1 -878 -7 -886 b 12 -914 -7 -906 -1 -914 b 36 -907 19 -914 27 -912 b 765 -40 390 -734 765 -478 b 363 377 765 210 612 377 z m 906 259 b 827 180 861 259 827 225 b 906 101 827 135 861 101 b 985 180 950 101 985 135 b 906 259 985 225 950 259 z m 907 -102 b 829 -180 863 -102 829 -135 b 907 -258 829 -225 863 -258 b 985 -180 952 -258 985 -225 b 907 -102 985 -135 952 -102 z"},unpitchedPercussionClef1:{x_min:0,x_max:382,y_min:-250,y_max:250,ha:500,o:"m 230 -338 l 230 338 b 210 360 230 350 222 360 l 20 360 b 0 338 9 360 0 350 l 0 -338 b 20 -360 0 -350 9 -360 l 210 -360 b 230 -338 222 -360 230 -350 z m 550 338 b 530 360 550 350 541 360 l 340 360 b 320 338 328 360 320 350 l 320 -338 b 340 -360 320 -350 328 -360 l 530 -360 b 550 -338 541 -360 550 -350 z"},"6stringTabClef":{x_min:-3,x_max:408,y_min:-748,y_max:764,ha:1512,o:"m 557 1024 l 557 1100 l 26 1100 l 26 1024 l 249 1024 l 249 422 l 336 422 l 336 1024 z m 588 -328 l 350 348 l 238 348 l -4 -328 l 88 -328 l 160 -125 l 420 -125 l 491 -328 z m 397 -52 l 181 -52 l 292 256 z m 544 -883 b 420 -719 544 -802 507 -752 b 514 -572 482 -690 514 -639 b 314 -399 514 -472 442 -399 l 39 -399 l 39 -1077 l 344 -1077 b 544 -883 467 -1077 544 -995 z m 428 -583 b 292 -691 428 -652 389 -691 l 125 -691 l 125 -475 l 292 -475 b 428 -583 389 -475 428 -514 z m 458 -884 b 337 -1001 458 -949 418 -1001 l 125 -1001 l 125 -768 l 337 -768 b 458 -884 418 -768 458 -818 z"},timeSig0:{x_min:20,x_max:450,y_min:-250,y_max:251,ha:501,o:"m 648 0 b 338 361 648 200 510 361 b 29 0 167 361 29 200 b 338 -360 29 -199 167 -360 b 648 0 510 -360 648 -199 z m 338 317 b 446 10 397 317 446 180 b 338 -295 446 -158 397 -295 b 230 10 278 -295 230 -158 b 338 317 230 180 278 317 z"},timeSig1:{x_min:20,x_max:314,y_min:-250,y_max:251,ha:501,o:"m 35 19 b 29 0 35 19 29 10 b 45 -20 29 -7 33 -16 b 58 -23 50 -22 56 -23 b 78 -10 72 -23 78 -10 b 156 117 78 -10 140 89 b 170 131 161 127 167 131 b 179 111 176 131 179 120 l 179 -261 b 115 -315 179 -294 145 -315 b 91 -337 105 -315 91 -320 b 122 -360 91 -353 104 -360 l 429 -360 b 452 -337 452 -360 452 -337 b 431 -315 452 -337 452 -315 b 384 -265 410 -315 384 -289 l 384 328 b 356 361 384 351 376 360 b 281 356 336 361 300 356 b 206 360 253 356 228 357 b 199 361 203 360 200 361 b 173 334 184 361 179 347 z"},timeSig2:{x_min:20,x_max:426,y_min:-257,y_max:254,ha:511,o:"m 606 -131 b 589 -111 606 -114 599 -111 b 570 -127 577 -111 573 -117 l 569 -128 b 513 -192 554 -164 543 -192 b 488 -187 505 -192 498 -190 b 445 -171 469 -180 459 -179 b 289 -137 416 -160 348 -137 b 236 -145 271 -137 252 -140 b 422 -42 268 -94 390 -50 b 613 147 523 -14 613 27 b 330 366 613 300 464 366 b 69 275 229 366 140 357 b 29 170 45 245 29 209 b 42 108 29 150 33 130 b 160 29 63 63 108 29 b 261 156 248 29 261 120 b 161 275 261 242 161 246 b 275 330 164 295 190 330 b 405 192 403 330 405 233 b 193 -102 405 60 297 -39 b 33 -317 114 -153 58 -223 l 32 -321 b 69 -370 32 -340 48 -370 b 203 -282 101 -370 118 -282 b 410 -360 261 -282 282 -360 b 606 -131 472 -360 583 -354 z"},timeSig3:{x_min:20,x_max:401,y_min:-251,y_max:249,ha:500,o:"m 307 357 b 301 357 305 357 304 357 l 291 359 b 285 359 289 359 287 359 b 37 200 161 359 37 276 b 154 84 37 153 65 89 l 161 84 b 256 177 225 84 256 130 l 256 189 b 209 248 252 242 216 245 b 180 268 202 251 180 248 l 180 274 b 240 310 183 298 228 310 b 374 199 363 310 374 233 l 374 189 b 199 36 374 82 289 40 b 164 12 184 35 164 27 b 200 -6 164 -6 189 -6 b 379 -137 366 -6 379 -118 b 269 -307 379 -289 301 -307 b 256 -305 264 -307 258 -305 b 216 -282 245 -304 217 -304 l 216 -275 b 249 -180 216 -243 248 -222 b 145 -76 249 -120 207 -76 b 130 -78 140 -76 135 -76 b 60 -115 105 -82 78 -96 b 29 -203 36 -137 29 -171 b 275 -361 32 -315 134 -359 l 288 -361 b 577 -161 431 -361 577 -288 l 577 -151 b 537 -50 575 -109 564 -82 b 503 -20 528 -39 517 -29 l 472 -3 l 425 10 b 410 17 418 12 413 12 b 409 24 409 20 409 22 b 415 37 409 30 410 36 b 459 50 431 42 446 43 b 547 181 517 78 547 115 b 307 357 547 314 367 353 z"},timeSig4:{x_min:20,x_max:450,y_min:-250,y_max:251,ha:501,o:"m 521 -107 l 521 202 b 504 226 521 213 520 226 b 475 213 491 226 484 223 l 338 48 b 325 14 333 40 325 32 l 325 -107 l 131 -107 b 481 336 246 -9 477 318 l 482 340 b 461 361 482 353 472 361 b 363 359 448 361 389 359 b 261 361 337 359 272 361 b 228 334 248 361 228 357 b 43 -105 228 156 86 -45 l 35 -117 b 35 -118 35 -117 35 -118 l 33 -120 b 29 -137 30 -127 29 -132 b 58 -161 29 -151 40 -161 l 325 -161 l 325 -252 b 268 -302 325 -291 294 -302 b 235 -330 245 -302 235 -315 b 262 -360 235 -344 240 -360 l 569 -360 b 598 -330 583 -360 598 -350 b 566 -301 598 -310 580 -301 b 521 -246 552 -301 521 -292 l 521 -161 l 626 -161 b 648 -134 641 -161 648 -151 b 626 -107 648 -117 642 -107 z"},timeSig5:{x_min:20,x_max:383,y_min:-251,y_max:246,ha:497,o:"m 109 85 b 117 179 109 85 115 166 b 138 197 118 190 125 197 l 144 197 b 285 184 158 194 226 184 b 492 323 485 184 492 300 b 472 353 492 341 488 353 b 295 340 454 353 341 340 b 101 354 249 340 125 351 b 66 330 75 354 68 341 l 50 10 l 50 7 b 79 -14 50 -12 65 -14 b 111 14 94 -14 95 -1 b 209 62 125 29 160 62 b 357 -125 258 62 357 35 b 235 -304 357 -284 272 -304 b 202 -300 223 -304 212 -304 b 184 -279 194 -295 186 -289 b 202 -259 184 -269 194 -264 b 256 -163 235 -239 256 -203 b 144 -50 256 -99 206 -50 b 30 -157 66 -50 35 -107 b 29 -183 29 -166 29 -174 b 284 -361 29 -302 107 -361 b 552 -125 456 -361 552 -255 b 314 112 552 6 445 112 b 122 71 230 112 168 98 b 115 69 120 69 117 69 b 109 79 109 69 109 75 z"},timeSig6:{x_min:20,x_max:414,y_min:-249,y_max:251,ha:500,o:"m 439 120 b 554 229 500 120 554 167 b 553 245 554 235 554 239 b 348 361 539 337 426 361 b 85 209 239 360 137 307 b 29 4 53 148 29 72 l 29 -1 b 73 -200 30 -68 42 -143 b 324 -359 132 -307 203 -359 b 513 -307 389 -359 461 -348 b 596 -137 563 -266 596 -202 b 379 72 596 -24 490 72 b 248 22 333 72 285 55 b 239 19 245 19 242 19 b 226 53 230 19 226 30 b 346 327 230 320 315 327 b 393 305 374 327 393 320 b 357 251 393 285 366 268 b 347 209 350 238 347 223 b 369 150 347 187 354 166 b 439 120 379 131 420 120 z m 320 3 b 405 -158 366 3 405 -69 b 320 -320 405 -248 366 -320 b 236 -158 274 -320 236 -248 b 320 3 236 -69 274 3 z"},timeSig7:{x_min:20,x_max:421,y_min:-250,y_max:249,ha:499,o:"m 606 294 b 582 351 606 333 606 351 b 552 336 580 351 557 346 b 485 236 541 318 521 236 b 262 359 449 236 382 359 b 137 307 179 359 157 325 b 98 281 117 288 108 282 b 60 315 86 281 68 301 b 43 325 58 321 50 325 b 29 308 36 325 29 321 l 29 71 b 45 48 29 71 30 48 b 66 76 56 48 60 60 b 164 196 81 112 99 196 b 374 88 222 196 291 88 b 446 118 415 88 435 109 b 459 124 451 121 456 124 b 469 111 465 124 468 120 b 272 -112 469 71 359 -10 b 173 -315 217 -176 173 -259 b 200 -360 173 -346 173 -360 b 294 -347 226 -360 258 -347 b 412 -360 330 -347 397 -360 b 435 -307 426 -360 435 -348 b 606 288 435 -66 606 140 z"},timeSig8:{x_min:20,x_max:416,y_min:-259,y_max:259,ha:518,o:"m 481 52 b 567 204 533 85 567 132 b 317 373 567 351 356 373 b 36 176 150 373 36 297 b 161 -16 36 76 92 23 b 29 -190 86 -52 29 -99 b 301 -373 29 -315 158 -373 b 599 -117 445 -373 599 -311 b 481 52 599 -30 549 17 z m 406 85 b 168 240 291 125 168 150 b 314 331 168 301 251 331 b 482 207 360 331 482 308 b 406 85 482 150 454 112 z m 295 -325 b 111 -183 199 -325 111 -276 b 225 -48 111 -125 161 -72 b 436 -219 330 -94 436 -124 b 295 -325 436 -276 392 -325 z"},timeSig9:{x_min:20,x_max:414,y_min:-249,y_max:251,ha:500,o:"m 186 -117 b 71 -226 125 -117 71 -164 b 72 -242 71 -232 71 -236 b 276 -359 86 -334 199 -359 b 540 -206 386 -357 488 -304 b 596 -1 572 -145 596 -69 l 596 4 b 552 203 595 71 583 145 b 301 361 492 310 422 361 b 112 310 236 361 164 351 b 29 140 62 269 29 204 b 246 -69 29 27 135 -69 b 377 -19 292 -69 340 -52 b 386 -16 380 -16 383 -16 b 399 -50 395 -16 399 -27 b 279 -324 395 -317 310 -324 b 232 -302 251 -324 232 -317 b 268 -248 232 -282 259 -265 b 278 -206 275 -235 278 -220 b 256 -147 278 -184 271 -163 b 186 -117 246 -128 204 -117 z m 305 0 b 220 161 259 0 220 72 b 305 323 220 251 259 323 b 389 161 351 323 389 251 b 305 0 389 72 351 0 z"},timeSigCommon:{x_min:5,x_max:424,y_min:-249,y_max:251,ha:500,o:"m 336 361 b 7 -14 131 361 7 180 b 101 -262 7 -108 42 -190 b 321 -359 156 -328 235 -359 b 611 -88 573 -359 611 -130 b 589 -56 611 -56 595 -56 b 567 -82 577 -56 567 -58 b 363 -311 567 -268 409 -311 b 184 40 246 -311 184 -197 b 372 327 184 278 294 327 b 477 278 446 327 477 292 b 451 246 477 265 472 246 b 360 140 393 246 360 184 b 471 32 360 58 431 32 b 580 156 471 32 580 36 b 336 361 580 344 363 361 z"},timeSigCutCommon:{x_min:0,x_max:418,y_min:-359,y_max:361,ha:720,o:"m 573 -58 b 559 -82 567 -58 559 -60 b 354 -310 559 -266 400 -310 b 317 -305 340 -310 328 -308 b 302 -284 311 -304 302 -295 l 302 287 b 338 323 302 297 328 321 b 363 324 347 324 356 324 b 468 275 436 324 468 289 b 442 243 468 264 464 243 b 351 137 384 243 351 181 b 462 30 351 56 422 30 b 572 154 462 30 572 35 b 318 357 572 295 441 357 b 302 390 310 359 302 383 l 302 495 b 276 520 302 507 292 520 b 252 495 265 520 252 507 l 252 369 b 235 346 252 359 238 346 l 196 331 b 0 -14 66 275 0 122 b 225 -346 0 -150 86 -310 b 252 -382 235 -350 252 -369 l 252 -492 b 276 -517 252 -505 265 -517 b 302 -492 292 -517 302 -505 l 302 -379 b 318 -359 302 -370 308 -363 b 602 -85 563 -354 602 -130 b 579 -58 600 -58 586 -58 z m 252 -235 b 243 -252 252 -248 248 -252 b 236 -248 240 -252 238 -251 b 177 37 197 -193 177 -96 b 232 259 177 147 200 215 b 236 262 233 262 235 262 b 252 239 243 262 252 251 z"},timeSigPlus:{x_min:-1,x_max:499,y_min:-250,y_max:250,ha:500,o:"m 432 53 b 413 79 420 53 413 65 l 413 340 b 392 360 413 350 405 360 l 325 360 b 305 340 312 360 305 350 l 305 79 b 284 53 305 66 292 53 l 19 53 b -1 33 9 53 -1 46 l -1 -33 b 19 -55 -1 -46 9 -55 l 284 -55 b 305 -75 298 -55 305 -68 l 305 -340 b 325 -360 305 -350 312 -360 l 392 -360 b 413 -340 405 -360 413 -350 l 413 -78 b 433 -55 413 -63 423 -55 l 698 -55 b 719 -33 708 -55 719 -46 l 719 33 b 698 53 719 46 708 53 z"},timeSigPlusSmall:{x_min:-1,x_max:255,y_min:-133,y_max:123,ha:256,o:"m 220 20 b 210 33 215 20 210 26 l 210 166 b 200 177 210 171 206 177 l 166 177 b 156 166 160 177 156 171 l 156 33 b 145 20 156 27 150 20 l 10 20 b -1 10 4 20 -1 16 l -1 -24 b 10 -35 -1 -30 4 -35 l 145 -35 b 156 -46 153 -35 156 -42 l 156 -180 b 166 -192 156 -186 160 -192 l 200 -192 b 210 -180 206 -192 210 -186 l 210 -48 b 222 -35 210 -39 216 -35 l 356 -35 b 367 -24 361 -35 367 -30 l 367 10 b 356 20 367 16 361 20 z"},timeSigMinus:{x_min:0,x_max:448,y_min:-35,y_max:40,ha:75,o:"m 645 39 b 619 58 645 49 634 58 l 27 58 b 0 39 12 58 0 49 l 0 -32 b 27 -50 0 -42 12 -50 l 619 -50 b 645 -32 634 -50 645 -42 z"},timeSigParensRight:{x_min:0,x_max:184,y_min:-489,y_max:491,ha:980,o:"m 0 -696 b 3 -704 0 -698 1 -704 b 7 -703 4 -704 6 -704 b 265 1 187 -530 265 -282 b 12 701 265 289 187 531 b 4 707 12 701 6 707 b 0 696 1 707 0 703 l 0 665 b 4 644 0 665 0 651 b 167 1 112 503 167 315 b 6 -641 167 -311 109 -497 b 0 -658 3 -644 0 -651 z"},timeSigParensRightSmall:{x_min:0,x_max:110,y_min:-251,y_max:249,ha:500,o:"m 0 -356 b 3 -361 0 -357 1 -361 b 158 0 112 -272 158 -145 b 4 359 158 147 109 272 b 0 353 3 359 0 357 l 0 338 b 3 327 0 338 0 330 b 91 0 60 246 91 160 b 4 -328 91 -160 62 -249 b 0 -337 3 -330 0 -333 z"},timeSigParensLeft:{x_min:0,x_max:184,y_min:-489,y_max:491,ha:980,o:"m 265 -658 b 259 -641 265 -651 262 -644 b 98 1 156 -497 98 -311 b 261 644 98 315 153 503 b 265 665 265 651 265 665 l 265 696 b 261 707 265 703 264 707 b 253 701 259 707 253 701 b 0 1 78 531 0 289 b 258 -703 0 -282 78 -530 b 262 -704 259 -704 261 -704 b 265 -696 264 -704 265 -698 z"},timeSigParensLeftSmall:{x_min:0,x_max:110,y_min:-251,y_max:249,ha:500,o:"m 158 -337 b 154 -328 158 -333 156 -330 b 68 0 96 -249 68 -160 b 156 327 68 160 98 246 b 158 338 158 330 158 338 l 158 353 b 154 359 158 357 156 359 b 0 0 49 272 0 147 b 156 -361 0 -145 46 -272 b 158 -356 157 -361 158 -357 z"},noteheadDoubleWhole:{x_min:0,x_max:599,y_min:-155,y_max:155,ha:310,o:"m 13 223 b 0 212 4 223 0 217 l 0 -213 b 13 -223 0 -219 4 -223 l 32 -223 b 45 -213 39 -223 45 -219 l 45 212 b 32 223 45 217 39 223 z m 96 223 b 82 212 88 223 82 217 l 82 -213 b 96 -223 82 -219 88 -223 l 114 -223 b 128 -213 121 -223 128 -219 l 128 212 b 114 223 128 217 121 223 z m 747 223 b 733 212 740 223 733 217 l 733 -213 b 747 -223 733 -219 740 -223 l 766 -223 b 780 -213 773 -223 780 -219 l 780 212 b 766 223 780 217 773 223 z m 829 223 b 815 212 824 223 815 217 l 815 -213 b 829 -223 815 -219 824 -223 l 848 -223 b 863 -213 857 -223 863 -219 l 863 212 b 848 223 863 217 857 223 z m 438 180 b 130 1 248 180 130 101 b 423 -180 130 -92 210 -180 b 733 1 657 -180 733 -98 b 438 180 733 104 572 180 z m 469 -145 b 331 -71 409 -145 369 -112 b 284 58 305 -37 284 12 b 400 147 284 131 333 147 b 577 -45 498 147 577 42 b 469 -145 577 -115 533 -145 z"},noteheadWhole:{x_min:0,x_max:422,y_min:-125,y_max:125,ha:250,o:"m 311 180 b 0 3 120 180 0 101 b 297 -180 0 -94 82 -180 b 608 3 533 -180 608 -98 b 311 180 608 105 445 180 z m 160 91 b 274 148 176 141 229 148 b 452 -45 373 148 452 42 b 386 -141 452 -89 433 -130 b 341 -147 372 -145 356 -147 b 206 -72 289 -147 236 -112 b 156 56 177 -39 156 10 b 160 91 156 68 157 79 z"},noteheadHalf:{x_min:0,x_max:295,y_min:-125,y_max:125,ha:250,o:"m 140 -180 b 425 60 377 -180 425 13 b 282 180 425 134 366 180 b 0 -60 68 180 0 14 b 140 -180 0 -137 60 -180 z m 108 -125 b 50 -92 78 -125 60 -109 b 42 -63 46 -84 42 -73 b 318 121 42 7 251 121 b 372 91 346 121 361 108 b 380 63 376 82 380 73 b 108 -125 380 1 177 -125 z"},noteheadBlack:{x_min:0,x_max:295,y_min:-125,y_max:125,ha:250,o:"m 140 -180 b 425 60 268 -180 425 -62 b 285 180 425 134 367 180 b 0 -60 127 180 0 63 b 140 -180 0 -135 62 -180 z"},noteheadXDoubleWhole:{x_min:0,x_max:546,y_min:-155,y_max:155,ha:310,o:"m 43 213 b 30 223 43 217 39 223 l 13 223 b 0 213 6 223 0 217 l 0 -215 b 13 -223 0 -219 6 -223 l 30 -223 b 43 -215 39 -223 43 -219 z m 704 213 b 693 223 704 217 698 223 l 672 223 b 660 213 667 223 660 217 l 660 163 b 634 180 655 173 645 180 l 505 180 b 484 173 498 180 490 177 l 393 95 l 300 173 b 279 180 294 177 287 180 l 151 180 b 125 163 141 180 130 173 l 125 213 b 112 223 125 217 118 223 l 94 223 b 82 213 86 223 82 217 l 82 -215 b 94 -223 82 -219 86 -223 l 112 -223 b 125 -215 118 -223 125 -219 l 125 -163 b 151 -180 130 -173 140 -180 l 279 -180 b 300 -171 287 -180 294 -177 l 393 -95 l 485 -171 b 505 -180 491 -177 498 -180 l 632 -180 b 660 -163 645 -180 655 -173 l 660 -215 b 672 -223 660 -219 667 -223 l 693 -223 b 704 -215 698 -223 704 -219 z m 786 213 b 772 223 786 217 780 223 l 755 223 b 740 213 747 223 740 217 l 740 -215 b 755 -223 740 -219 747 -223 l 772 -223 b 786 -215 780 -223 786 -219 z m 507 -141 l 393 -45 l 276 -141 l 207 -141 l 364 0 l 207 141 l 276 141 l 393 45 l 507 141 l 577 141 l 420 0 l 577 -141 z m 660 -132 l 518 0 l 660 132 z m 125 131 l 266 0 l 125 -131 z"},noteheadXWhole:{x_min:0,x_max:377,y_min:-125,y_max:125,ha:250,o:"m 272 -95 l 364 -171 b 384 -180 370 -177 377 -180 l 511 -180 b 543 -148 528 -180 543 -164 b 531 -124 543 -140 539 -131 l 412 0 l 531 124 b 541 148 539 131 541 140 b 513 180 541 164 528 180 l 384 180 b 364 171 377 180 370 177 l 272 94 l 179 171 b 158 180 173 177 166 180 l 30 180 b 0 148 16 180 0 164 b 12 124 0 140 4 131 l 132 0 l 12 -124 b 1 -148 4 -131 1 -140 b 32 -180 1 -164 14 -180 l 158 -180 b 179 -171 166 -180 173 -177 z m 386 -141 l 272 -45 l 157 -141 l 88 -141 l 245 0 l 88 141 l 157 141 l 272 45 l 386 141 l 456 141 l 300 0 l 456 -141 z"},noteheadXHalf:{x_min:0,x_max:334,y_min:-125,y_max:125,ha:250,o:"m 295 180 b 271 170 287 180 278 177 l 209 98 l 115 171 b 95 180 109 177 104 180 l 36 180 b 4 148 19 180 4 164 b 14 124 4 140 7 132 l 140 22 l 7 -127 b 0 -148 3 -131 0 -138 b 32 -180 0 -166 14 -180 l 184 -180 b 209 -170 193 -180 203 -177 l 271 -99 l 363 -171 b 384 -180 370 -176 377 -180 l 445 -180 b 478 -147 461 -180 478 -163 b 465 -125 478 -138 474 -131 l 341 -22 l 474 127 b 481 148 480 131 481 138 b 448 180 481 166 468 180 z m 36 148 l 95 148 l 233 33 l 334 148 l 410 148 l 274 -6 l 445 -148 l 384 -148 l 248 -35 l 147 -148 l 71 -148 l 206 4 z"},noteheadXBlack:{x_min:0,x_max:290,y_min:-125,y_max:125,ha:250,o:"m 410 -143 l 239 0 l 410 144 b 418 160 415 147 418 154 b 399 180 418 171 408 180 b 389 177 396 180 392 179 l 207 26 l 29 177 b 17 180 26 179 22 180 b 0 161 7 180 0 170 b 7 144 0 156 3 148 l 179 0 l 7 -143 b 0 -158 1 -147 0 -153 b 19 -180 0 -170 7 -180 b 29 -176 23 -180 26 -179 l 207 -24 l 389 -176 b 399 -180 392 -179 396 -180 b 418 -160 410 -180 418 -168 b 410 -143 418 -153 415 -147 z"},noteheadCircleXDoubleWhole:{x_min:0,x_max:422,y_min:-155,y_max:155,ha:310,o:"m 576 223 b 563 213 570 223 563 219 l 563 -215 b 576 -223 563 -219 570 -223 l 595 -223 b 608 -215 602 -223 608 -219 l 608 213 b 595 223 608 219 602 223 z m 497 223 b 484 213 491 223 484 219 l 484 -215 b 497 -223 484 -219 491 -223 l 516 -223 b 528 -215 523 -223 528 -219 l 528 213 b 516 223 528 219 523 223 z m 94 223 b 81 213 86 223 81 219 l 81 -215 b 94 -223 81 -219 86 -223 l 111 -223 b 124 -215 118 -223 124 -219 l 124 213 b 111 223 124 219 118 223 z m 13 223 b 0 213 6 223 0 219 l 0 -215 b 13 -223 0 -219 6 -223 l 30 -223 b 45 -215 37 -223 45 -219 l 45 213 b 30 223 45 219 37 223 z m 304 180 b 127 0 206 180 127 101 b 304 -180 127 -99 206 -180 b 482 0 405 -180 482 -99 b 304 180 482 101 405 180 z m 305 32 l 225 112 b 304 140 248 130 275 140 b 387 112 336 140 364 130 z m 278 1 l 193 -82 b 216 0 199 -59 216 -30 b 194 85 216 33 203 50 z m 334 1 l 418 84 b 389 0 402 50 389 23 b 418 -81 389 -30 409 -60 z m 305 -27 l 389 -109 b 304 -138 364 -128 336 -138 b 222 -109 274 -138 246 -128 z"},noteheadCircleXWhole:{x_min:0,x_max:249,y_min:-125,y_max:125,ha:250,o:"m 179 180 b 0 0 81 180 0 101 b 179 -180 0 -99 81 -180 b 359 0 278 -180 359 -99 b 179 180 359 101 278 180 z m 180 32 l 99 112 b 179 140 121 130 150 140 b 262 112 210 140 238 130 z m 151 1 l 68 -82 b 86 0 73 -59 86 -30 b 68 85 86 33 78 50 z m 209 1 l 291 84 b 269 0 276 50 269 32 b 291 -79 269 -26 282 -58 z m 180 -27 l 264 -111 b 179 -138 239 -128 210 -138 b 96 -111 148 -138 120 -128 z"},noteheadCircleXHalf:{x_min:0,x_max:250,y_min:-125,y_max:125,ha:250,o:"m 179 180 b 0 0 81 180 0 101 b 179 -180 0 -99 81 -180 b 360 0 278 -180 360 -99 b 179 180 360 101 278 180 z m 186 37 l 131 92 b 220 124 153 109 189 124 b 262 112 236 124 249 121 z m 215 7 l 291 84 b 304 42 300 71 304 58 b 271 -49 304 10 288 -26 z m 145 -6 l 68 -82 b 56 -42 59 -71 56 -58 b 89 52 56 -9 72 27 z m 174 -33 l 230 -89 b 140 -124 206 -108 171 -124 b 96 -111 122 -124 109 -121 z"},noteheadCircleX:{x_min:0,x_max:249,y_min:-125,y_max:125,ha:250,o:"m 179 180 b 0 0 81 180 0 99 b 179 -180 0 -99 81 -180 b 359 0 278 -180 359 -99 b 179 180 359 99 278 180 z m 261 112 l 180 30 l 98 112 b 179 138 121 128 148 138 b 261 112 210 138 238 128 z m 317 0 b 292 -82 317 -30 308 -59 l 209 1 l 291 84 b 317 0 307 60 317 30 z m 40 0 b 69 84 40 32 50 60 l 151 1 l 68 -84 b 40 0 49 -60 40 -30 z m 95 -111 l 180 -27 l 262 -111 b 179 -138 239 -128 210 -138 b 95 -111 148 -138 120 -128 z"},noteheadCircledDoubleWhole:{x_min:0,x_max:603,y_min:-218,y_max:213,ha:431,o:"m 770 223 l 752 223 b 737 213 744 223 737 219 l 737 59 b 435 307 710 203 582 307 b 128 48 281 307 156 197 l 128 213 b 115 223 128 219 122 223 l 96 223 b 84 213 89 223 84 219 l 84 -215 b 96 -223 84 -220 89 -223 l 115 -223 b 128 -215 122 -223 128 -220 l 128 -56 b 435 -314 156 -206 282 -314 b 654 -223 517 -314 595 -282 b 737 -66 697 -180 726 -125 l 737 -215 b 752 -223 737 -220 744 -223 l 770 -223 b 785 -215 778 -223 785 -220 l 785 213 b 770 223 785 219 778 223 z m 435 274 b 698 85 556 274 661 194 b 439 180 641 143 534 180 b 176 99 320 180 228 148 b 435 274 217 203 318 274 z m 32 223 l 13 223 b 0 213 6 223 0 219 l 0 -215 b 13 -223 0 -220 6 -223 l 32 -223 b 45 -215 40 -223 45 -220 l 45 213 b 32 223 45 219 40 223 z m 852 223 l 835 223 b 819 213 828 223 819 219 l 819 -215 b 835 -223 819 -220 828 -223 l 852 -223 b 868 -215 861 -223 868 -220 l 868 213 b 852 223 868 219 861 223 z m 580 -46 b 514 -143 580 -91 562 -131 b 472 -148 501 -147 487 -148 b 364 -105 433 -148 395 -131 l 334 -73 b 285 58 307 -39 285 10 b 289 91 285 69 287 79 b 403 145 305 140 357 145 b 580 -46 501 145 580 42 z m 435 -282 b 176 -108 318 -282 217 -209 b 425 -180 222 -151 301 -180 b 691 -109 563 -180 647 -153 b 435 -282 651 -210 550 -282 z"},noteheadCircledWhole:{x_min:0,x_max:437,y_min:-225,y_max:211,ha:436,o:"m 314 304 b 0 -10 140 304 0 164 b 314 -324 0 -183 141 -324 b 629 -10 487 -324 629 -183 b 314 304 629 164 488 304 z m 314 275 b 588 73 441 275 549 193 b 321 180 536 137 420 180 b 48 88 190 180 95 143 b 314 275 85 199 199 275 z m 393 -141 b 350 -147 379 -145 364 -147 b 314 -141 337 -147 325 -145 b 167 55 235 -120 167 -26 b 173 91 167 66 168 79 b 284 145 187 138 239 145 b 459 -48 382 145 459 39 b 393 -141 459 -91 438 -131 z m 314 -294 b 40 -86 187 -294 75 -207 b 305 -180 81 -141 164 -180 b 588 -86 464 -180 550 -143 b 314 -294 554 -209 442 -294 z"},noteheadCircledHalf:{x_min:-18,x_max:311,y_min:-162,y_max:167,ha:329,o:"m 212 240 b -26 3 81 240 -26 134 b 212 -233 -26 -127 81 -233 b 448 3 341 -233 448 -127 b 212 240 448 134 341 240 z m 212 220 b 363 160 271 220 324 197 b 281 180 341 173 312 180 b 0 -52 76 180 6 26 b -6 3 -4 -35 -6 -16 b 212 220 -6 122 92 220 z m 50 -92 b 42 -63 46 -84 42 -73 b 173 63 42 -33 73 7 b 317 120 243 105 288 120 b 369 89 344 120 359 107 b 377 62 374 81 377 72 b 248 -66 377 33 348 -1 b 108 -125 183 -109 138 -125 b 50 -92 78 -125 60 -109 z m 212 -215 b 84 -171 164 -215 120 -199 b 138 -180 101 -179 120 -180 b 422 56 372 -180 420 7 b 429 3 426 40 429 22 b 212 -215 429 -117 333 -215 z"},noteheadCircledBlack:{x_min:-21,x_max:321,y_min:-171,y_max:167,ha:338,o:"m 216 240 b -30 -3 82 240 -30 131 b 216 -246 -30 -137 82 -246 b 462 -3 351 -246 462 -137 b 216 240 462 131 351 240 z m 216 220 b 372 160 276 220 331 197 b 284 180 348 174 317 180 b 0 -59 127 180 0 65 l 0 -66 b -10 -3 -6 -45 -10 -24 b 216 220 -10 120 92 220 z m 216 -226 b 56 -158 153 -226 96 -200 b 140 -180 79 -171 107 -180 b 425 60 268 -180 425 -60 b 422 88 425 71 425 79 b 442 -3 435 60 442 29 b 216 -226 442 -125 341 -226 z"},noteheadDoubleWholeSquare:{x_min:0,x_max:416,y_min:-190,y_max:198,ha:388,o:"m 563 217 b 528 180 563 192 544 180 l 62 180 b 36 215 52 180 36 192 l 36 268 b 17 285 36 278 27 285 b 0 268 7 285 0 278 l 0 -255 b 17 -274 0 -264 7 -274 b 36 -255 27 -274 36 -264 l 36 -213 b 66 -180 36 -197 53 -180 l 528 -180 b 563 -209 549 -180 563 -196 l 563 -255 b 580 -274 563 -264 570 -274 b 599 -255 590 -274 599 -264 l 599 268 b 580 285 599 278 590 285 b 563 268 570 285 563 278 z m 36 23 b 111 71 36 55 58 71 l 487 71 b 563 30 533 71 563 53 l 563 -22 b 487 -68 563 -53 533 -68 l 117 -68 b 36 -22 66 -68 36 -49 z"},noteheadSquareWhite:{x_min:0,x_max:313,y_min:-125,y_max:125,ha:250,o:"m 451 -180 l 451 180 l 0 180 l 0 -180 z m 40 -138 l 40 140 l 410 140 l 410 -138 z"},noteheadSquareBlack:{x_min:0,x_max:313,y_min:-125,y_max:125,ha:250,o:"m 451 -180 l 451 180 l 0 180 l 0 -180 z"},noteheadTriangleDownDoubleWhole:{x_min:0,x_max:483,y_min:-155,y_max:155,ha:310,o:"m 696 213 b 681 223 696 219 690 223 l 662 223 b 648 213 655 223 648 219 l 648 -213 b 662 -223 648 -217 655 -223 l 681 -223 b 696 -213 690 -223 696 -217 z m 619 213 b 605 223 619 219 613 223 l 588 223 b 573 213 580 223 573 219 l 573 174 b 562 180 570 177 566 180 l 134 180 b 122 174 130 180 125 177 l 122 213 b 108 223 122 219 117 223 l 91 223 b 76 213 84 223 76 219 l 76 -213 b 91 -223 76 -217 84 -223 l 108 -223 b 122 -213 117 -223 122 -217 l 122 154 l 334 -173 b 346 -180 337 -177 341 -180 b 357 -173 351 -180 354 -177 l 573 154 l 573 -213 b 588 -223 573 -217 580 -223 l 605 -223 b 619 -213 613 -223 619 -217 z m 32 -223 b 46 -213 40 -223 46 -217 l 46 213 b 32 223 46 219 40 223 l 14 223 b 0 213 7 223 0 219 l 0 -213 b 14 -223 0 -217 7 -223 z m 428 98 b 346 -107 428 17 377 -53 b 265 96 315 -55 265 17 b 289 137 265 109 275 137 l 406 137 b 428 98 419 137 428 111 z"},noteheadTriangleDownWhole:{x_min:0,x_max:319,y_min:-125,y_max:125,ha:250,o:"m 14 180 b 0 166 6 180 0 173 b 1 158 0 163 1 160 l 216 -173 b 228 -180 219 -177 225 -180 b 239 -173 233 -180 238 -177 l 458 158 b 459 166 458 160 459 163 b 445 180 459 173 454 180 z m 288 137 b 310 98 301 137 310 111 b 228 -108 310 17 259 -55 b 145 96 197 -56 145 17 b 170 137 145 109 157 137 z"},noteheadTriangleDownHalf:{x_min:0,x_max:285,y_min:-125,y_max:125,ha:250,o:"m 196 -180 b 209 -173 200 -180 206 -177 l 408 157 b 410 166 409 160 410 163 b 396 180 410 173 403 180 l 14 180 b 0 166 4 180 0 173 b 1 158 0 163 0 161 l 183 -173 b 196 -180 184 -174 190 -180 z m 164 138 l 295 138 l 179 -76 l 114 37 z"},noteheadTriangleDownBlack:{x_min:0,x_max:292,y_min:-125,y_max:125,ha:250,o:"m 207 -180 l 420 180 l 0 180 z"},noteheadTriangleUpDoubleWhole:{x_min:0,x_max:483,y_min:-155,y_max:155,ha:310,o:"m 696 213 b 681 223 696 217 690 223 l 662 223 b 648 213 655 223 648 217 l 648 -213 b 662 -223 648 -219 655 -223 l 681 -223 b 696 -213 690 -223 696 -219 z m 619 213 b 605 223 619 217 613 223 l 588 223 b 573 213 580 223 573 217 l 573 -154 l 357 173 b 346 180 354 177 351 180 b 334 173 341 180 337 177 l 122 -154 l 122 213 b 108 223 122 217 117 223 l 91 223 b 76 213 84 223 76 217 l 76 -213 b 91 -223 76 -219 84 -223 l 108 -223 b 122 -213 117 -223 122 -219 l 122 -174 b 134 -180 125 -177 130 -180 l 562 -180 b 573 -174 566 -180 570 -177 l 573 -213 b 588 -223 573 -219 580 -223 l 605 -223 b 619 -213 613 -223 619 -219 z m 32 223 l 14 223 b 0 213 7 223 0 217 l 0 -213 b 14 -223 0 -219 7 -223 l 32 -223 b 46 -213 40 -223 46 -219 l 46 213 b 32 223 46 217 40 223 z m 428 -98 b 406 -137 428 -111 419 -137 l 289 -137 b 265 -96 275 -137 265 -109 b 346 107 265 -17 315 55 b 428 -98 377 53 428 -17 z"},noteheadTriangleUpWhole:{x_min:0,x_max:319,y_min:-125,y_max:125,ha:250,o:"m 445 -180 b 459 -166 454 -180 459 -173 b 458 -158 459 -163 458 -160 l 239 173 b 228 180 238 177 233 180 b 216 173 225 180 219 177 l 1 -158 b 0 -166 1 -160 0 -163 b 14 -180 0 -173 6 -180 z m 170 -137 b 145 -96 157 -137 145 -109 b 228 108 145 -17 197 56 b 310 -98 259 55 310 -17 b 288 -137 310 -111 301 -137 z"},noteheadTriangleUpHalf:{x_min:0,x_max:285,y_min:-125,y_max:125,ha:250,o:"m 215 180 b 202 173 210 180 204 177 l 3 -157 b 0 -166 1 -160 0 -163 b 14 -180 0 -173 7 -180 l 396 -180 b 410 -166 406 -180 410 -173 b 409 -158 410 -163 410 -161 l 228 173 b 215 180 226 174 220 180 z m 246 -138 l 115 -138 l 232 76 l 297 -37 z"},noteheadTriangleUpBlack:{x_min:0,x_max:293,y_min:-125,y_max:125,ha:250,o:"m 422 -180 l 207 180 l 0 -180 z"},noteheadSlashedDoubleWhole1:{x_min:0,x_max:596,y_min:-179,y_max:168,ha:347,o:"m 618 135 l 697 206 b 704 222 703 210 704 216 b 698 236 704 226 703 232 b 683 242 694 239 688 242 b 670 238 677 242 674 240 l 575 153 b 435 180 531 168 481 180 b 128 0 246 180 128 98 b 236 -148 128 -58 160 -114 l 153 -222 b 145 -238 148 -226 145 -232 b 151 -252 145 -242 148 -248 b 167 -258 156 -256 161 -258 b 181 -253 171 -258 177 -256 l 282 -164 b 420 -180 320 -173 366 -180 b 729 0 654 -180 729 -98 b 618 135 729 55 681 104 z m 114 223 l 95 223 b 82 212 88 223 82 217 l 82 -215 b 95 -223 82 -219 88 -223 l 114 -223 b 127 -215 121 -223 127 -219 l 127 212 b 114 223 127 217 121 223 z m 32 223 l 13 223 b 0 212 6 223 0 217 l 0 -215 b 13 -223 0 -219 6 -223 l 32 -223 b 45 -215 39 -223 45 -219 l 45 212 b 32 223 45 217 39 223 z m 844 223 l 825 223 b 811 212 819 223 811 217 l 811 -215 b 825 -223 811 -219 819 -223 l 844 -223 b 858 -215 851 -223 858 -219 l 858 212 b 844 223 858 217 851 223 z m 763 223 l 743 223 b 730 212 736 223 730 217 l 730 -215 b 743 -223 730 -219 736 -223 l 763 -223 b 776 -215 769 -223 776 -219 l 776 212 b 763 223 776 217 769 223 z m 282 56 b 285 89 282 68 284 79 b 399 144 301 137 354 144 b 510 95 441 144 480 124 l 327 -68 b 282 56 301 -35 282 13 z m 572 -72 b 508 -141 564 -108 544 -132 b 467 -147 495 -145 481 -147 b 360 -104 428 -147 389 -128 l 356 -98 l 537 63 b 575 -46 560 30 575 -9 b 572 -72 575 -55 573 -65 z"},noteheadSlashedWhole1:{x_min:-22,x_max:433,y_min:-157,y_max:148,ha:305,o:"m 484 140 b 308 180 431 166 367 180 b 0 1 118 180 0 99 b 73 -128 0 -48 22 -95 l -22 -190 b -32 -206 -27 -194 -32 -200 b -27 -217 -32 -210 -30 -215 b -12 -226 -23 -223 -17 -226 b 0 -223 -7 -226 -4 -225 l 112 -150 b 294 -180 157 -168 217 -180 b 602 1 526 -180 602 -98 b 523 118 602 48 570 86 l 613 177 b 624 193 619 181 624 187 b 619 204 624 197 622 200 b 603 213 615 209 609 213 b 592 209 599 213 596 212 z m 190 -52 b 154 56 170 -20 154 19 b 160 91 154 68 156 79 b 271 147 174 138 226 147 b 396 82 321 147 364 121 z m 419 50 b 446 -48 436 19 446 -14 b 337 -147 446 -120 402 -147 b 301 -141 327 -147 314 -144 b 235 -104 276 -134 253 -120 b 215 -84 226 -98 220 -91 z"},noteheadSlashedHalf1:{x_min:-67,x_max:386,y_min:-142,y_max:160,ha:302,o:"m 552 222 b 536 230 549 228 543 230 b 524 228 533 230 528 230 l 389 140 b 281 180 364 164 327 180 b 0 -60 65 180 0 13 b 7 -105 0 -78 3 -92 l -88 -167 b -96 -184 -94 -171 -96 -177 b -94 -194 -96 -187 -95 -192 b -76 -204 -89 -202 -84 -204 b -66 -202 -73 -204 -69 -203 l 29 -140 b 137 -180 55 -167 92 -180 b 420 59 374 -180 420 13 b 412 107 420 76 419 92 l 546 194 b 556 210 552 197 556 204 b 552 222 556 213 554 217 z m 315 120 b 347 112 328 120 338 117 l 46 -82 b 42 -63 43 -76 42 -69 b 315 120 42 6 248 120 z m 108 -124 b 69 -114 91 -124 79 -120 l 372 81 b 376 63 374 75 376 69 b 108 -124 376 0 174 -124 z"},noteheadSlashedBlack1:{x_min:-80,x_max:375,y_min:-165,y_max:167,ha:332,o:"m 518 240 b 507 236 514 240 510 239 l 384 148 b 284 180 359 168 324 180 b 0 -62 127 180 0 63 b 13 -115 0 -82 4 -99 l -107 -202 b -115 -217 -111 -204 -115 -212 b -111 -229 -115 -222 -114 -225 b -95 -238 -108 -235 -101 -238 b -84 -235 -91 -238 -86 -236 l 39 -148 b 140 -180 63 -170 99 -180 b 425 59 268 -180 425 -62 b 410 117 425 81 420 101 l 530 203 b 540 219 536 207 540 213 b 518 240 540 229 528 240 z"},noteheadSlashedDoubleWhole2:{x_min:0,x_max:596,y_min:-178,y_max:169,ha:347,o:"m 729 0 b 435 180 729 102 569 180 b 278 156 374 180 321 170 l 184 239 b 170 243 181 242 176 243 b 154 238 166 243 158 240 b 150 223 151 233 150 228 b 156 207 150 217 153 212 l 233 138 b 128 0 167 107 128 56 b 420 -180 128 -94 210 -180 b 575 -164 482 -180 533 -174 l 672 -252 b 687 -256 677 -255 681 -256 b 703 -251 691 -256 698 -255 b 707 -236 706 -246 707 -240 b 701 -220 707 -230 706 -225 l 619 -150 b 729 0 700 -117 729 -62 z m 114 223 l 95 223 b 82 213 88 223 82 217 l 82 -213 b 95 -223 82 -219 88 -223 l 114 -223 b 127 -213 121 -223 127 -219 l 127 213 b 114 223 127 217 121 223 z m 32 223 l 13 223 b 0 213 6 223 0 217 l 0 -213 b 13 -223 0 -219 6 -223 l 32 -223 b 45 -213 39 -223 45 -219 l 45 213 b 32 223 45 217 39 223 z m 844 223 l 825 223 b 811 213 819 223 811 217 l 811 -213 b 825 -223 811 -219 819 -223 l 844 -223 b 858 -213 851 -223 858 -219 l 858 213 b 844 223 858 217 851 223 z m 763 223 l 743 223 b 730 213 736 223 730 217 l 730 -213 b 743 -223 730 -219 736 -223 l 763 -223 b 776 -213 769 -223 776 -219 l 776 213 b 763 223 776 217 769 223 z m 312 124 b 399 144 336 141 369 144 b 575 -46 495 144 575 40 b 563 -98 575 -65 570 -81 z m 508 -141 b 467 -147 495 -145 481 -147 b 360 -104 428 -147 389 -128 b 330 -72 350 -95 340 -82 b 282 56 304 -37 282 10 b 285 89 282 68 284 79 b 536 -130 287 89 304 75 z"},noteheadSlashedWhole2:{x_min:-18,x_max:436,y_min:-154,y_max:151,ha:305,o:"m 531 -128 b 602 1 582 -96 602 -49 b 308 180 602 104 441 180 b 114 144 230 180 164 166 l 4 215 b -6 217 1 217 -3 217 b -22 209 -13 217 -19 215 b -26 197 -24 204 -26 200 b -16 181 -26 192 -22 184 l 75 121 b 0 1 27 91 0 49 b 294 -180 0 -94 82 -180 b 491 -150 379 -180 444 -168 l 598 -219 b 608 -222 600 -222 605 -222 b 624 -213 615 -222 621 -219 b 628 -202 626 -209 628 -206 b 618 -186 628 -196 624 -189 z m 168 108 b 271 147 190 141 233 147 b 446 -48 369 147 446 40 b 445 -72 446 -56 446 -63 z m 154 69 l 429 -109 b 382 -141 419 -125 402 -135 b 337 -147 367 -144 351 -147 b 301 -141 327 -147 314 -144 b 235 -104 276 -134 253 -120 b 203 -72 223 -94 213 -82 b 154 58 177 -39 154 12 z"},noteheadSlashedHalf2:{x_min:-73,x_max:380,y_min:-134,y_max:168,ha:302,o:"m 537 -156 l 383 -58 b 422 60 413 -9 422 39 b 281 180 422 134 364 180 b 101 127 203 180 144 157 l -75 239 b -85 242 -78 242 -82 242 b -102 233 -92 242 -98 239 b -105 222 -104 229 -105 225 b -95 206 -105 216 -102 209 l 69 99 b 0 -59 19 46 0 -20 b 138 -180 0 -135 60 -180 b 359 -88 248 -180 317 -138 l 516 -190 b 527 -193 520 -192 524 -193 b 543 -183 534 -193 540 -190 b 547 -173 546 -180 547 -176 b 537 -156 547 -166 543 -160 z m 367 92 b 377 63 374 82 377 73 b 318 -14 377 43 361 20 l 184 72 b 317 121 248 108 289 121 b 367 92 344 121 357 109 z m 248 -66 b 108 -124 181 -108 138 -124 b 50 -92 78 -124 60 -109 b 42 -63 46 -84 42 -73 b 145 49 42 -35 68 0 l 285 -40 b 248 -66 274 -49 261 -56 z"},noteheadSlashedBlack2:{x_min:-79,x_max:376,y_min:-164,y_max:168,ha:332,o:"m 531 -200 l 363 -78 b 425 59 402 -37 425 10 b 285 180 425 132 367 180 b 92 114 210 180 144 154 l -81 238 b -94 242 -85 240 -89 242 b -111 232 -99 242 -107 238 b -114 220 -112 229 -114 225 b -105 204 -114 215 -111 207 l 62 85 b 0 -62 23 43 0 -9 b 140 -180 0 -137 62 -180 b 331 -108 204 -180 275 -153 l 507 -233 b 520 -236 511 -236 517 -236 b 537 -228 527 -236 533 -233 b 541 -216 540 -225 541 -220 b 531 -200 541 -210 537 -203 z"},noteheadDiamondDoubleWhole:{x_min:0,x_max:432,y_min:-155,y_max:155,ha:310,o:"m 592 223 b 580 215 585 223 580 219 l 580 -215 b 592 -223 580 -219 585 -223 l 608 -223 b 622 -215 615 -223 622 -219 l 622 215 b 608 223 622 219 615 223 z m 517 223 b 504 215 510 223 504 219 l 504 -215 b 517 -223 504 -219 510 -223 l 533 -223 b 544 -215 540 -223 544 -219 l 544 215 b 533 223 544 219 540 223 z m 246 179 b 240 180 243 179 242 180 b 232 176 236 180 233 179 l 118 22 b 117 17 117 20 117 19 l 117 215 b 104 223 117 219 111 223 l 88 223 b 75 215 81 223 75 219 l 75 -215 b 88 -223 75 -219 81 -223 l 104 -223 b 117 -215 111 -223 117 -219 l 117 14 l 118 14 b 122 7 118 12 120 10 l 374 -179 b 382 -180 376 -180 379 -180 b 390 -177 384 -180 387 -180 l 503 -23 l 503 -17 b 500 -9 503 -13 503 -10 z m 12 223 b 0 215 4 223 0 219 l 0 -215 b 12 -223 0 -219 4 -223 l 29 -223 b 40 -215 36 -223 40 -219 l 40 215 b 29 223 40 219 36 223 z m 183 39 b 179 46 181 39 179 43 b 229 112 226 112 228 112 b 236 109 229 112 233 111 l 436 -39 b 439 -46 438 -39 439 -42 b 390 -112 393 -111 392 -112 b 383 -109 389 -112 386 -111 z"},noteheadDiamondWhole:{x_min:0,x_max:270,y_min:-125,y_max:125,ha:250,o:"m 386 -23 b 389 -16 387 -20 389 -19 b 383 -7 389 -13 386 -9 l 130 179 b 122 180 128 180 125 180 b 115 177 120 180 117 180 l 3 23 b 0 17 1 20 0 19 b 4 7 0 16 3 10 l 258 -179 b 264 -180 261 -179 262 -180 b 272 -176 268 -180 271 -179 z m 66 40 b 62 48 65 42 62 45 l 109 111 b 112 112 109 112 111 112 b 118 111 115 112 117 111 l 320 -37 b 324 -46 323 -39 324 -42 b 275 -111 278 -111 276 -111 b 268 -108 272 -111 271 -109 z"},noteheadDiamondHalf:{x_min:0,x_max:251,y_min:-125,y_max:125,ha:250,o:"m 359 -7 b 361 0 360 -6 361 -3 b 359 7 361 3 360 4 l 189 177 b 180 180 186 179 183 180 b 174 177 179 180 176 179 l 4 7 b 0 0 1 4 0 3 b 4 -7 0 -3 1 -6 l 174 -177 b 180 -180 176 -180 179 -180 b 189 -177 183 -180 186 -180 z m 266 26 b 138 -71 266 -12 176 -71 b 96 -50 121 -71 108 -63 b 88 -24 89 -43 88 -32 b 215 73 88 13 177 73 b 266 26 238 73 266 50 z"},noteheadDiamondBlack:{x_min:0,x_max:250,y_min:-125,y_max:125,ha:250,o:"m 357 -6 b 360 1 359 -4 360 -1 b 357 9 360 4 359 7 l 189 177 b 180 180 187 179 184 180 b 171 177 177 180 173 179 l 3 9 b 0 1 0 6 0 4 b 4 -7 0 -1 1 -4 l 173 -177 b 180 -180 176 -180 177 -180 b 187 -177 181 -180 184 -180 z"},noteheadParenthesis:{x_min:-73,x_max:368,y_min:-180,y_max:182,ha:362,o:"m 52 -249 b -30 -144 3 -212 -14 -190 b -52 4 -45 -102 -52 -56 b 52 252 -52 118 -36 179 l 46 262 b -105 3 -49 197 -105 124 b 45 -259 -105 -109 -48 -200 z m 382 -259 b 530 3 474 -202 530 -108 b 379 262 530 122 474 200 l 373 252 b 478 4 462 180 478 118 b 456 -144 478 -56 471 -102 b 373 -249 439 -190 422 -212 z"},noteheadParenthesisRight:{x_min:-36,x_max:73,y_min:-181,y_max:181,ha:362,o:"m -43 -261 b 105 1 49 -203 105 -109 b -46 261 105 121 49 199 l -52 251 b 53 3 37 179 53 117 b 32 -145 53 -58 46 -104 b -52 -251 14 -192 -3 -213 z"},noteheadParenthesisLeft:{x_min:0,x_max:109,y_min:-181,y_max:181,ha:362,o:"m 157 -251 b 75 -145 108 -213 91 -192 b 53 3 60 -104 53 -58 b 157 251 53 117 69 177 l 151 261 b 0 1 56 196 0 122 b 150 -261 0 -111 58 -202 z"},noteheadMoonBlack:{x_min:0,x_max:315,y_min:-125,y_max:125,ha:250,o:"m 228 -180 b 454 0 343 -180 454 -130 l 454 180 l 0 180 l 0 0 b 228 -180 0 -131 112 -180 z"},noteheadTriangleLeftBlack:{x_min:0,x_max:339,y_min:-125,y_max:125,ha:250,o:"m 488 -180 l 0 180 l 0 -180 z"},noteheadTriangleRightBlack:{x_min:0,x_max:339,y_min:-125,y_max:125,ha:250,o:"m 488 180 l 0 -180 l 488 -180 z"},noteheadTriangleRoundDownBlack:{x_min:0,x_max:278,y_min:-125,y_max:125,ha:250,o:"m 200 -180 l 400 112 l 383 124 b 199 180 327 161 264 180 b 16 124 135 180 73 161 l 0 112 z"},augmentationDot:{x_min:0,x_max:100,y_min:-50,y_max:50,ha:100,o:"m 144 0 b 72 72 144 40 112 72 b 0 0 32 72 0 40 b 72 -72 0 -40 32 -72 b 144 0 112 -72 144 -40 z"},tremolo1:{x_min:-150,x_max:150,y_min:-93,y_max:94,ha:187,o:"m 216 -45 l 216 135 l -216 46 l -216 -134 z"},flag8thUp:{x_min:0,x_max:264,y_min:-810.1921176545985,y_max:9,ha:819.1921176545985,o:"m 343 -1138 b 380 -888 343 -1138 380 -1001 b 215 -395 380 -708 305 -539 b 58 -19 141 -281 81 -157 b 27 13 53 4 42 13 b 0 -9 12 13 0 9 l 0 -353 b 284 -688 95 -370 232 -566 b 318 -904 305 -737 318 -819 b 284 -1102 318 -969 308 -1037 b 279 -1123 281 -1110 279 -1117 b 302 -1165 279 -1146 294 -1159 b 343 -1138 311 -1171 336 -1162 z"},flag8thDown:{x_min:0,x_max:306,y_min:-14,y_max:808,ha:822,o:"m 346 1094 b 376 897 366 1034 376 962 b 318 642 376 812 340 691 b 0 340 265 521 193 405 l 0 1 b 23 -20 0 -13 12 -20 b 58 12 36 -20 55 -12 b 262 387 82 148 189 274 b 441 881 353 530 441 701 b 400 1142 441 994 412 1096 b 377 1164 396 1158 387 1164 b 346 1094 356 1164 331 1136 z"},flag16thUp:{x_min:0,x_max:279,y_min:-813,y_max:2,ha:815,o:"m 392 -1146 b 402 -988 397 -1139 402 -1057 l 402 -956 b 360 -783 402 -896 386 -837 b 359 -770 360 -779 359 -776 b 360 -760 359 -768 359 -765 b 396 -577 364 -752 396 -665 b 392 -526 396 -559 395 -543 b 236 -275 377 -428 340 -387 b 53 -16 158 -192 78 -168 b 24 3 50 0 33 3 b 0 -12 16 3 0 -1 l 0 -570 l 7 -570 b 298 -778 96 -573 199 -576 b 344 -992 331 -847 344 -917 b 333 -1120 344 -1034 340 -1077 b 331 -1133 331 -1126 331 -1129 b 363 -1171 331 -1152 343 -1171 b 392 -1146 373 -1171 383 -1165 z m 301 -661 b 223 -562 278 -625 253 -596 b 59 -331 156 -484 89 -449 b 58 -327 58 -330 58 -328 b 78 -312 58 -321 66 -312 l 89 -312 b 302 -464 177 -312 255 -393 b 341 -592 328 -501 341 -546 b 340 -621 341 -602 341 -611 b 330 -658 337 -632 337 -647 b 311 -667 328 -662 318 -667 b 301 -661 307 -667 304 -665 z"},flag16thDown:{x_min:0,x_max:290.8951581511223,y_min:-9,y_max:812.0064,ha:821.0064,o:"m 346 1132 b 312 768 367 1011 367 880 b 7 559 213 566 96 562 l 0 559 l 0 1 b 24 -13 0 -6 10 -13 b 53 6 35 -13 50 -10 b 406 516 88 228 372 289 b 410 567 409 531 410 549 b 374 750 410 655 379 742 b 373 760 373 753 373 756 b 374 773 373 766 374 769 b 405 1138 426 881 428 1022 b 370 1169 397 1171 387 1169 b 346 1132 353 1168 341 1156 z m 325 657 b 344 647 333 657 343 652 b 354 611 351 636 351 622 b 356 582 356 600 356 590 b 317 454 356 534 343 491 b 89 302 269 383 177 302 l 78 302 b 58 317 66 302 58 310 b 59 321 58 318 58 320 b 238 552 89 439 170 472 b 315 651 268 585 292 613 b 325 657 318 655 321 657 z"},flag32ndUp:{x_min:0,x_max:261,y_min:-812,y_max:149,ha:961,o:"m 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 366 -289 369 -315 369 -302 b 220 -58 350 -202 317 -163 b 46 187 148 20 71 43 b 20 215 45 200 35 215 b 0 197 12 215 0 207 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 56 -390 147 -527 88 -495 b 73 -367 53 -380 60 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z"},flag32ndDown:{x_min:0,x_max:273,y_min:-172,y_max:812,ha:984,o:"m 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -229 b 20 -248 0 -242 9 -248 b 48 -219 35 -248 46 -232 b 229 36 72 -69 154 -46 b 380 278 330 145 364 186 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z"},flag64thUp:{x_min:0,x_max:261,y_min:-812,y_max:347,ha:1159,o:"m 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 220 228 350 84 317 122 b 46 472 148 305 71 328 b 20 500 45 485 32 500 b 0 482 10 500 0 492 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 24 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 58 187 148 20 82 43 b 56 193 58 189 58 192 b 300 24 138 193 220 157 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 b 73 -367 52 -376 63 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z"},flag64thDown:{x_min:0,x_max:273,y_min:-376,y_max:812,ha:1188,o:"m 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -523 b 20 -541 0 -534 9 -541 b 48 -513 35 -541 46 -526 b 229 -258 72 -363 154 -340 b 380 -16 330 -148 364 -108 b 384 27 383 -1 384 13 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z m 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 b 229 36 75 -86 145 -55 b 311 128 264 73 289 102 z"},flag128thUp:{x_min:0,x_max:261,y_min:-812,y_max:533,ha:1345,o:"m 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 341 75 360 26 353 50 b 369 222 354 111 369 167 b 366 264 369 236 369 251 b 220 495 350 351 317 390 b 46 740 148 573 71 596 b 22 768 45 753 35 768 b 0 750 10 768 0 760 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 292 b 321 223 315 264 321 242 b 317 193 321 212 318 203 b 301 135 314 180 308 158 b 220 228 281 161 255 190 b 55 461 151 304 79 327 b 300 292 134 461 220 426 z m 300 24 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 56 187 148 20 81 43 b 55 193 56 189 56 192 b 300 24 137 193 220 157 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 b 73 -367 53 -376 62 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z"},flag128thDown:{x_min:0,x_max:273,y_min:-580,y_max:812,ha:1392,o:"m 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -816 b 20 -835 0 -828 7 -835 b 48 -806 33 -835 46 -819 b 229 -552 72 -657 154 -634 b 380 -310 330 -442 364 -402 b 384 -266 383 -295 384 -281 b 351 -105 384 -206 366 -143 b 384 27 372 -66 384 -16 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z m 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 b 229 36 75 -86 145 -55 b 311 128 264 73 289 102 z m 330 -238 b 334 -268 331 -248 334 -256 b 311 -340 334 -287 328 -310 b 56 -516 229 -478 137 -516 b 229 -258 75 -380 145 -348 b 311 -166 264 -220 289 -192 z"},accidentalFlat:{x_min:0,x_max:226,y_min:-175,y_max:439,ha:614,o:"m 17 -245 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 82 -225 117 -186 b 325 82 281 -72 325 16 b 196 220 325 164 262 216 b 117 196 171 220 137 209 b 85 176 108 189 92 176 b 78 177 82 176 81 176 b 62 202 68 181 62 192 b 72 608 63 233 72 579 b 45 632 72 624 59 632 b 0 592 24 632 1 618 b 17 -245 0 592 6 -230 z m 68 -117 b 63 27 68 -117 63 -30 b 66 73 63 50 65 68 b 167 144 76 102 134 144 b 226 60 209 144 226 96 b 98 -134 226 -17 160 -95 b 84 -138 92 -137 88 -138 b 68 -117 71 -138 68 -124 z"},accidentalNatural:{x_min:0,x_max:168,y_min:-335,y_max:341,ha:676,o:"m 203 261 b 197 259 200 261 199 259 b 68 226 197 259 105 226 b 53 233 59 226 53 228 l 53 474 b 36 491 53 484 45 491 l 17 491 b 0 474 7 491 0 484 l 0 -268 b 13 -281 0 -276 4 -281 l 16 -279 b 22 -278 17 -279 20 -279 b 164 -235 42 -269 122 -235 b 189 -251 179 -235 189 -239 l 189 -465 b 206 -482 189 -475 196 -482 l 225 -482 b 242 -465 233 -482 242 -475 l 242 258 b 230 269 242 265 236 269 b 225 268 229 269 226 269 z m 53 56 b 176 114 53 76 141 114 b 189 107 184 114 189 112 l 189 -42 b 71 -101 189 -68 107 -101 b 53 -92 60 -101 53 -98 z"},accidentalSharp:{x_min:0,x_max:249,y_min:-348,y_max:350,ha:698,o:"m 341 170 b 359 194 351 174 359 186 l 359 297 b 348 308 359 304 354 308 b 341 307 346 308 344 308 b 305 294 341 307 312 295 b 285 312 295 294 285 301 l 285 488 b 265 504 285 497 276 504 b 242 488 251 504 242 497 l 242 301 b 223 259 240 287 236 268 b 132 223 206 249 157 229 b 115 252 120 223 115 240 l 115 425 b 95 441 115 433 105 441 b 72 425 81 441 72 433 l 72 230 b 55 192 72 210 63 196 b 17 176 46 187 17 176 b 0 153 7 173 0 161 l 0 50 b 13 37 0 42 4 37 l 16 39 b 50 53 17 39 39 48 l 52 55 b 72 29 63 55 72 40 l 72 -114 b 56 -147 72 -130 65 -143 b 17 -163 48 -150 17 -163 b 0 -186 7 -166 0 -177 l 0 -288 b 13 -301 0 -297 4 -301 l 16 -300 b 50 -287 17 -300 37 -291 b 55 -285 52 -285 53 -285 b 72 -308 65 -285 72 -301 l 72 -485 b 91 -501 72 -494 81 -501 b 115 -485 105 -501 115 -494 l 115 -285 b 130 -253 115 -266 122 -256 l 217 -217 b 219 -217 217 -217 219 -217 l 222 -216 b 242 -242 235 -216 242 -233 l 242 -422 b 261 -438 242 -431 251 -438 b 285 -422 276 -438 285 -431 l 285 -217 b 301 -184 285 -206 291 -189 b 341 -168 311 -180 341 -168 b 359 -144 351 -164 359 -153 l 359 -42 b 348 -30 359 -35 354 -30 b 341 -32 346 -30 344 -30 l 304 -46 b 285 -20 295 -46 285 -37 l 285 114 b 304 156 285 124 292 151 z m 242 -65 b 132 -122 233 -94 166 -122 b 115 -115 124 -122 117 -120 b 111 -43 112 -109 111 -78 b 115 63 111 1 112 52 b 220 118 118 88 184 118 b 242 109 230 118 239 115 b 248 27 245 102 248 66 b 242 -65 248 -12 245 -52 z"},accidentalDoubleSharp:{x_min:0,x_max:247,y_min:-125,y_max:127,ha:252,o:"m 274 -46 b 206 1 258 -37 206 -9 b 274 50 206 22 253 43 b 278 50 275 50 276 50 l 287 49 b 346 63 304 49 331 52 b 356 115 353 71 356 92 b 292 183 356 174 351 183 b 233 173 266 183 240 180 b 226 117 228 168 226 143 b 179 49 219 101 196 49 b 130 117 158 49 135 96 b 118 173 130 141 125 167 b 66 183 112 180 89 183 b 7 173 42 183 16 180 b 0 120 3 170 0 145 b 7 63 0 94 3 68 b 68 49 17 55 43 49 b 82 50 73 49 78 50 b 150 3 98 42 150 13 b 84 -46 150 -16 104 -39 l 69 -46 b 7 -56 43 -46 16 -49 b 0 -111 3 -60 0 -85 b 7 -166 0 -137 3 -163 b 65 -180 17 -174 40 -180 b 118 -166 86 -180 109 -176 b 130 -111 127 -158 130 -134 b 132 -105 130 -109 131 -107 b 177 -45 141 -85 158 -45 b 226 -111 196 -45 220 -91 b 233 -166 226 -137 228 -161 b 291 -180 243 -174 266 -180 b 356 -114 346 -180 356 -166 b 346 -56 356 -89 351 -63 b 288 -46 338 -49 312 -46 z"},accidentalDoubleFlat:{x_min:0,x_max:411,y_min:-175,y_max:437,ha:612,o:"m 452 217 b 384 194 426 217 408 207 b 350 176 374 189 363 176 b 343 177 347 176 344 176 b 328 202 333 180 328 190 b 337 606 328 232 337 579 b 310 629 337 622 324 629 b 265 592 291 629 268 616 b 269 194 265 592 266 395 b 196 217 248 209 223 217 l 187 217 b 120 194 160 217 143 207 b 85 176 108 189 98 176 b 78 177 82 176 81 176 b 62 202 68 180 62 190 b 72 606 62 232 72 579 b 45 629 72 622 59 629 b 0 592 24 629 1 616 b 17 -245 0 592 7 -232 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 84 -226 120 -186 b 274 -50 206 -124 246 -85 b 284 -245 276 -158 279 -240 b 295 -252 288 -251 292 -252 b 304 -249 300 -252 304 -249 b 416 -163 348 -226 383 -186 b 592 82 546 -72 592 16 b 461 217 592 163 528 216 z m 96 -134 b 84 -138 92 -137 86 -138 b 68 -115 72 -138 68 -124 b 63 26 68 -115 63 -30 b 66 72 63 49 65 66 b 168 144 75 101 134 144 b 226 59 212 144 226 95 b 96 -134 226 -22 161 -94 z m 361 -134 b 348 -138 356 -137 351 -138 b 333 -115 337 -138 333 -124 b 328 39 333 -115 328 -16 b 330 72 328 55 328 68 b 433 144 338 101 399 144 b 468 130 448 144 459 140 b 490 59 481 112 490 88 b 361 -134 490 -22 426 -94 z"},accidentalParensLeft:{x_min:0,x_max:141,y_min:-248,y_max:247,ha:495,o:"m 203 331 l 203 351 b 202 356 203 354 203 356 b 0 0 60 281 0 140 b 199 -357 0 -144 60 -269 b 203 -354 200 -357 203 -356 l 203 -333 b 200 -327 203 -330 202 -328 b 86 0 118 -253 86 -160 b 200 324 86 158 120 251 b 203 331 202 325 203 327 z"},accidentalParensRight:{x_min:0,x_max:141,y_min:-248,y_max:247,ha:495,o:"m 0 331 b 3 324 0 327 1 325 b 117 0 84 251 117 158 b 3 -327 117 -160 85 -253 b 0 -333 1 -328 0 -330 l 0 -354 b 4 -357 0 -356 3 -357 b 203 0 143 -269 203 -144 b 1 356 203 140 143 281 b 0 351 0 356 0 354 z"},accidentalQuarterToneFlatStein:{x_min:1,x_max:227,y_min:-175,y_max:439,ha:614,o:"m 310 -245 b 327 592 321 -230 327 592 b 282 632 325 618 302 632 b 255 608 268 632 255 624 b 265 202 255 579 264 233 b 249 177 265 192 259 181 b 242 176 246 176 245 176 b 210 196 235 176 219 189 b 131 220 190 209 156 220 b 1 85 65 216 1 164 b 174 -161 1 16 46 -72 b 288 -249 210 -186 245 -225 b 297 -252 288 -249 292 -252 b 310 -245 301 -252 305 -251 z m 259 -117 b 243 -138 259 -124 256 -138 b 229 -134 239 -138 235 -137 b 101 60 167 -95 101 -17 b 160 144 101 96 118 144 b 261 73 193 144 251 102 b 264 27 262 68 264 50 b 259 -117 264 -30 259 -117 z"},accidentalThreeQuarterTonesFlatZimmermann:{x_min:1,x_max:466,y_min:-175,y_max:439,ha:614,o:"m 363 -245 b 376 -252 367 -251 372 -252 b 384 -249 380 -252 384 -249 b 497 -161 428 -226 464 -186 b 671 84 625 -72 671 16 b 541 220 671 164 606 217 b 513 217 531 220 523 219 b 464 196 495 212 480 206 b 431 176 452 189 442 176 b 423 177 428 176 426 176 b 408 202 413 180 408 190 l 419 608 b 392 632 419 625 406 632 b 346 592 372 632 347 618 b 363 -245 346 592 351 -230 z m 289 -249 b 297 -252 289 -249 292 -252 b 310 -245 300 -252 305 -251 b 328 592 321 -230 328 592 b 282 631 327 618 302 631 b 255 608 268 631 255 624 l 266 202 b 251 177 266 190 261 180 b 243 176 248 176 246 176 b 210 196 232 176 222 189 b 164 216 196 204 180 210 l 163 217 b 132 220 151 219 143 220 b 1 84 65 217 1 163 b 177 -163 1 16 48 -72 b 289 -249 210 -186 245 -226 z m 262 72 b 265 26 264 66 265 49 b 261 -115 265 -30 261 -115 b 245 -138 261 -124 258 -138 b 230 -134 240 -138 236 -137 b 102 60 166 -92 102 -20 b 124 128 102 88 111 112 b 161 144 134 138 147 144 b 199 134 173 144 184 141 b 262 72 219 122 256 92 z m 413 -115 b 409 26 413 -115 409 -30 b 412 72 409 49 410 66 b 514 144 420 102 480 144 b 570 60 557 144 570 96 b 442 -134 570 -23 508 -91 b 429 -138 436 -137 433 -138 b 413 -115 418 -138 413 -124 z"},accidentalQuarterToneSharpStein:{x_min:0,x_max:179,y_min:-353,y_max:307,ha:660,o:"m 258 240 b 246 252 258 248 252 252 b 240 251 245 252 242 252 b 168 225 240 251 171 225 b 150 253 156 225 150 240 l 150 426 b 130 442 150 435 141 442 b 105 418 108 442 105 429 l 105 230 b 91 193 105 219 101 202 b 17 161 65 183 42 171 b 0 138 9 158 0 147 l 0 36 b 13 23 0 27 4 23 l 16 24 b 86 53 17 24 73 49 l 88 55 b 107 30 98 55 107 42 l 107 -114 b 92 -145 107 -130 101 -143 l 17 -177 b 0 -200 9 -180 0 -192 l 0 -302 b 13 -315 0 -311 4 -315 l 16 -314 b 85 -285 17 -314 72 -291 b 105 -312 92 -282 105 -301 l 105 -492 b 125 -508 105 -501 114 -508 b 150 -484 147 -508 150 -498 l 150 -285 b 151 -274 150 -281 150 -278 b 164 -253 153 -265 158 -256 b 240 -225 176 -251 240 -225 b 258 -202 249 -222 258 -210 l 258 -99 b 245 -86 258 -91 253 -86 l 242 -88 b 240 -88 242 -88 240 -88 l 240 -86 b 168 -115 240 -86 174 -114 b 148 -91 158 -115 148 -107 l 148 43 b 167 85 148 55 156 81 b 240 114 180 91 240 114 b 258 138 249 118 258 128 z"},accidentalThreeQuarterTonesSharpStein:{x_min:3,x_max:317,y_min:-347,y_max:369,ha:716,o:"m 456 324 b 448 336 456 330 454 336 b 393 317 445 336 400 320 b 389 315 392 315 390 315 b 383 325 386 315 383 318 l 383 508 b 360 531 383 528 379 531 b 337 508 341 531 337 527 l 337 318 b 325 291 337 300 334 294 b 268 268 320 288 287 276 b 253 281 256 268 253 274 l 253 464 b 230 487 253 484 249 487 b 207 464 212 487 207 482 l 207 264 b 194 240 207 253 204 245 l 132 217 b 131 217 132 217 132 217 l 130 216 b 118 229 122 216 118 220 l 118 420 b 95 444 118 439 114 444 b 72 420 76 444 72 439 l 72 212 b 60 190 72 197 68 193 l 16 173 b 4 161 9 170 4 167 l 4 50 b 13 39 4 45 9 39 b 58 55 16 39 46 49 b 63 56 60 56 62 56 b 72 42 71 56 72 50 l 72 -125 b 58 -150 72 -137 65 -147 l 16 -166 b 4 -177 9 -168 4 -171 l 4 -289 b 14 -301 4 -295 9 -301 b 53 -287 16 -301 40 -291 b 62 -285 56 -285 59 -285 b 72 -298 69 -285 72 -289 l 72 -477 b 95 -500 72 -495 76 -500 b 118 -477 114 -500 118 -495 l 118 -278 b 127 -259 118 -269 121 -261 l 196 -232 b 207 -243 204 -232 207 -235 l 207 -432 b 230 -455 207 -452 212 -455 b 253 -432 249 -455 253 -451 l 253 -228 b 268 -204 253 -216 259 -207 l 320 -186 b 328 -183 323 -184 325 -183 b 337 -194 334 -183 337 -187 l 337 -387 b 360 -410 337 -408 341 -410 b 383 -387 379 -410 383 -406 l 383 -174 b 395 -157 383 -166 390 -158 l 445 -138 b 456 -127 452 -135 456 -132 l 456 -14 b 448 -3 456 -10 454 -3 b 397 -22 445 -3 408 -17 l 396 -23 b 383 -6 387 -23 383 -16 l 383 163 b 392 181 383 173 384 179 b 445 202 397 183 445 202 b 456 213 452 203 456 207 z m 337 -45 b 266 -78 333 -56 287 -78 b 258 -75 262 -78 259 -76 b 253 19 255 -71 253 -27 b 258 130 253 69 255 122 b 333 163 264 141 315 163 b 337 161 334 163 337 161 b 341 78 340 157 341 120 b 337 -45 341 24 340 -37 z m 118 -127 b 114 -48 114 -121 114 -86 b 118 78 114 6 115 68 b 200 114 122 91 180 114 b 207 111 204 114 206 112 b 212 22 210 107 212 66 b 207 -94 212 -29 210 -85 b 127 -130 203 -108 148 -130 b 118 -127 122 -130 120 -128 z"},accidentalBuyukMucennebFlat:{x_min:1,x_max:287,y_min:-174,y_max:438,ha:612,o:"m 379 452 b 370 464 379 458 377 464 b 164 389 366 464 170 392 b 156 396 163 389 156 393 b 157 436 157 409 157 428 b 167 452 157 445 161 449 b 366 526 173 455 366 526 b 379 540 374 528 379 534 l 379 611 b 370 622 379 616 377 622 b 170 550 366 622 174 552 b 160 557 163 550 160 554 b 161 608 160 585 161 602 b 134 631 161 624 148 631 b 89 590 114 631 91 616 l 89 528 b 81 517 89 526 88 518 b 16 491 76 514 16 491 b 1 480 6 490 1 485 l 1 406 b 13 395 1 400 4 395 l 14 396 b 79 419 16 396 72 415 b 89 412 86 419 89 415 b 91 376 89 399 89 386 b 82 359 91 364 89 361 b 16 331 76 356 16 331 b 1 321 6 331 1 328 l 1 248 b 13 236 1 242 4 236 b 79 262 16 236 71 258 b 92 251 89 262 92 256 b 107 -242 95 23 101 -236 b 120 -251 111 -249 115 -251 b 128 -248 124 -251 128 -248 b 240 -160 171 -225 207 -184 b 413 84 367 -71 413 16 b 284 220 413 166 350 216 b 207 196 259 220 229 209 b 170 176 196 190 184 176 l 168 177 b 151 203 157 181 151 192 b 153 269 151 210 151 236 b 163 292 153 275 153 289 b 366 367 173 297 366 367 b 379 383 374 370 379 376 z m 186 -132 b 173 -137 180 -135 176 -137 b 157 -114 161 -137 157 -122 b 153 35 157 -114 153 -22 b 154 73 153 53 153 68 b 219 135 160 92 197 124 b 255 144 232 141 243 144 b 292 130 269 144 282 140 b 314 62 305 114 314 91 b 186 -132 314 -17 251 -94 z"},accidentalBakiyeFlat:{x_min:-1,x_max:286,y_min:-175,y_max:439,ha:614,o:"m 377 454 b 369 467 377 458 376 467 b 363 465 367 467 364 467 b 161 390 363 465 167 393 b 153 399 154 390 153 395 b 157 608 154 494 157 593 b 130 632 157 624 144 632 b 86 592 111 632 88 618 b 88 377 86 592 86 501 b 76 356 88 373 88 360 l 12 331 b -1 320 3 330 -1 327 l -1 248 b 9 236 -1 242 1 236 b 81 264 12 236 78 261 b 89 258 86 264 89 261 b 104 -245 92 30 96 -236 b 115 -252 108 -251 112 -252 b 124 -249 120 -252 124 -249 b 239 -161 167 -226 203 -186 b 412 84 367 -72 412 17 b 282 220 412 166 348 216 b 255 216 274 220 264 219 b 203 196 238 212 222 206 b 171 177 193 189 177 177 b 163 179 168 177 166 177 b 147 202 153 181 147 192 b 147 216 147 204 147 209 l 150 262 b 150 276 150 269 150 275 b 158 291 150 287 154 289 b 363 370 163 292 363 370 b 377 384 373 373 377 379 z m 181 -134 b 167 -138 176 -137 171 -138 b 153 -117 156 -138 153 -125 b 148 27 153 -117 148 -30 b 151 73 148 50 150 68 b 255 144 161 105 219 144 b 312 62 298 144 312 99 b 181 -134 312 -19 249 -96 z"},accidentalKomaSharp:{x_min:0,x_max:229,y_min:-337,y_max:322,ha:659,o:"m 312 151 b 330 176 323 156 330 166 l 330 278 b 320 289 330 285 327 289 b 312 288 318 289 315 289 b 200 246 312 288 203 248 b 181 275 187 246 181 264 l 181 448 b 163 464 181 456 173 464 b 138 441 140 464 138 452 l 138 253 b 122 215 137 240 132 225 b 17 177 92 203 45 177 b 0 153 7 173 0 163 l 0 50 b 10 39 0 43 4 39 b 17 40 13 39 14 39 l 128 81 b 138 52 138 81 138 63 l 138 -91 b 124 -124 138 -107 132 -120 b 17 -167 115 -127 17 -167 b 0 -192 7 -171 0 -181 l 0 -294 b 10 -305 0 -301 4 -305 b 17 -304 13 -305 14 -305 b 128 -261 17 -304 117 -264 l 130 -259 b 138 -276 137 -259 138 -268 l 138 -469 b 157 -485 138 -478 147 -485 b 181 -462 179 -485 181 -475 l 181 -262 b 183 -252 181 -258 181 -255 b 197 -232 186 -243 190 -235 b 312 -187 207 -228 312 -187 b 330 -163 323 -183 330 -173 l 330 -60 b 320 -49 330 -53 327 -49 b 312 -50 318 -49 315 -49 l 200 -94 b 193 -95 197 -95 194 -95 b 181 -68 183 -95 181 -85 l 181 66 b 200 108 181 92 189 104 z"},accidentalKucukMucennebSharp:{x_min:-1,x_max:339,y_min:-338,y_max:321,ha:659,o:"m 264 92 b 271 102 264 98 265 99 l 395 150 b 412 174 405 154 412 164 l 412 276 b 402 288 412 284 409 288 b 395 287 400 288 397 288 b 282 245 395 287 285 246 b 264 274 269 245 264 262 l 264 446 b 245 462 264 455 255 462 b 220 439 222 462 220 451 l 220 252 b 204 213 219 239 215 223 b 99 176 174 202 127 176 b 82 151 89 171 82 161 l 82 49 b 92 37 82 42 86 37 b 99 39 95 37 96 37 l 210 79 b 216 81 212 81 215 81 b 220 78 219 81 220 79 l 220 56 b 216 46 220 52 220 48 b 16 -29 210 45 16 -29 b -1 -45 4 -32 -1 -36 l -1 -138 b 12 -154 -1 -145 3 -154 l 215 -79 b 220 -84 219 -79 220 -81 l 220 -105 b 210 -122 220 -115 219 -120 b 99 -168 202 -127 99 -168 b 82 -193 89 -173 82 -183 l 82 -295 b 92 -307 82 -302 86 -307 b 99 -305 95 -307 96 -307 b 210 -262 99 -305 199 -265 l 212 -261 b 220 -278 219 -261 220 -269 l 220 -471 b 239 -487 220 -480 229 -487 b 264 -464 261 -487 264 -477 l 264 -264 b 265 -253 264 -259 264 -256 b 279 -233 268 -245 272 -236 b 395 -189 289 -229 395 -189 b 412 -164 405 -184 412 -174 l 412 -62 b 402 -50 412 -55 409 -50 b 395 -52 400 -50 397 -50 l 278 -96 b 264 -86 268 -96 264 -94 l 264 -68 b 269 -59 264 -62 265 -60 b 471 17 274 -58 471 17 b 488 36 484 22 488 27 l 488 127 b 475 144 488 134 487 144 l 472 141 b 471 141 472 141 471 141 l 471 143 b 272 68 471 143 282 71 l 269 66 b 264 71 264 66 264 69 z"},accidentalKoron:{x_min:0,x_max:300,y_min:-472,y_max:157,ha:629,o:"m 432 -4 b 415 10 432 1 418 9 l 4 226 b 0 223 1 226 0 225 l 0 -672 b 7 -680 0 -677 3 -680 l 45 -680 b 52 -672 49 -680 52 -677 l 52 -193 l 415 -22 b 432 -4 418 -20 432 -13 z m 52 -137 l 52 144 l 327 -7 z"},accidentalSori:{x_min:0,x_max:421,y_min:-318,y_max:328,ha:646,o:"m 606 10 b 589 23 606 16 592 22 l 382 109 l 382 465 b 374 472 382 469 379 472 l 337 472 b 330 465 333 472 330 469 l 330 132 l 183 194 l 183 425 b 176 432 183 429 180 432 l 138 432 b 131 425 134 432 131 429 l 131 216 l 3 269 b 0 265 0 269 0 266 l 0 223 b 3 213 0 216 0 215 l 131 160 l 131 -150 l 3 -203 b 0 -212 0 -204 0 -206 l 0 -255 b 3 -259 0 -258 1 -259 l 131 -204 l 131 -451 b 138 -458 131 -455 134 -458 l 176 -458 b 183 -451 180 -458 183 -455 l 183 -183 l 330 -120 l 330 -410 b 337 -418 330 -415 333 -418 l 374 -418 b 382 -410 379 -418 382 -415 l 382 -98 l 589 -9 b 606 10 592 -9 606 0 z m 183 -128 l 183 138 l 330 76 l 330 -66 z m 382 -45 l 382 55 l 501 6 z"},articAccentAbove:{x_min:0,x_max:339,y_min:1,y_max:245,ha:244,o:"m 469 151 b 488 177 488 156 488 166 b 469 203 488 189 488 197 l 37 350 b 24 353 32 351 26 353 b 3 333 12 353 7 344 b 0 318 1 327 0 323 b 20 298 0 311 4 304 b 346 187 20 298 331 193 b 356 177 353 186 356 181 b 344 167 356 173 353 170 b 20 58 328 163 20 58 b 0 36 4 50 0 43 b 3 23 0 32 1 27 b 23 1 7 13 13 1 b 29 3 24 1 27 1 z"},articAccentBelow:{x_min:0,x_max:339,y_min:-244,y_max:0,ha:244,o:"m 469 -202 b 488 -176 488 -197 488 -187 b 469 -150 488 -164 488 -156 l 37 -3 b 24 0 32 -1 26 0 b 3 -20 12 0 7 -9 b 0 -35 1 -26 0 -30 b 20 -55 0 -42 4 -49 b 346 -166 20 -55 331 -160 b 356 -176 353 -167 356 -171 b 344 -186 356 -180 353 -183 b 20 -295 328 -190 20 -295 b 0 -317 4 -302 0 -310 b 3 -330 0 -321 1 -325 b 23 -351 7 -340 13 -351 b 29 -350 24 -351 27 -351 z"},articTenutoAbove:{x_min:-1,x_max:338,y_min:0,y_max:48,ha:48,o:"m 452 0 b 487 35 485 0 487 16 b 452 69 487 53 487 69 l 33 69 b -1 35 -1 69 -1 53 b 33 0 -1 16 -1 0 z"},articTenutoBelow:{x_min:-1,x_max:338,y_min:-48,y_max:0,ha:48,o:"m 452 -69 b 487 -35 485 -69 487 -53 b 452 0 487 -16 487 0 l 33 0 b -1 -35 -1 0 -1 -16 b 33 -69 -1 -53 -1 -69 z"},articStaccatoAbove:{x_min:0,x_max:84,y_min:0,y_max:84,ha:84,o:"m 121 60 b 60 121 121 94 94 121 b 0 60 27 121 0 94 b 60 0 0 27 27 0 b 121 60 94 0 121 27 z"},articStaccatoBelow:{x_min:0,x_max:84,y_min:-84,y_max:0,ha:84,o:"m 121 -60 b 60 0 121 -27 94 0 b 0 -60 27 0 0 -27 b 60 -121 0 -94 27 -121 b 121 -60 94 -121 121 -94 z"},articStaccatissimoAbove:{x_min:1,x_max:100,y_min:-2,y_max:293,ha:295,o:"m 72 422 b 1 390 35 422 3 409 b 72 -3 1 369 39 -3 b 144 389 108 -3 144 356 b 72 422 144 410 111 422 z"},articStaccatissimoBelow:{x_min:1,x_max:100,y_min:-295,y_max:0,ha:295,o:"m 72 -425 b 144 -392 111 -425 144 -413 b 72 0 144 -359 108 0 b 1 -393 39 0 1 -372 b 72 -425 3 -412 35 -425 z"},articMarcatoAbove:{x_min:-1,x_max:235,y_min:-1,y_max:253,ha:254,o:"m 181 356 b 167 364 177 361 173 364 b 153 356 157 364 153 356 l 0 23 b -1 16 -1 20 -1 19 b 9 0 -1 9 1 1 b 16 -1 10 -1 14 -1 b 32 9 22 -1 29 1 b 112 186 32 9 109 180 b 118 190 114 189 115 190 b 127 186 121 190 124 189 b 209 9 128 180 209 9 b 225 0 213 3 219 0 l 323 0 b 338 16 333 1 338 7 b 337 23 338 19 338 22 z"},articMarcatoBelow:{x_min:-1,x_max:235,y_min:-254,y_max:0,ha:254,o:"m 156 -357 b 170 -366 160 -363 164 -366 b 184 -357 180 -366 184 -357 l 337 -24 b 338 -17 338 -22 338 -20 b 328 -1 338 -10 336 -3 b 321 0 327 0 323 0 b 305 -10 315 0 308 -3 b 225 -187 305 -10 228 -181 b 219 -192 223 -190 222 -192 b 210 -187 216 -192 213 -190 b 128 -10 209 -181 128 -10 b 112 -1 124 -4 118 -1 l 14 -1 b -1 -17 4 -3 -1 -9 b 0 -24 -1 -20 -1 -23 z"},fermataAbove:{x_min:3,x_max:605,y_min:-3,y_max:329,ha:332,o:"m 435 318 b 818 36 742 318 804 91 b 821 26 819 32 819 27 b 851 -4 831 6 837 -4 b 871 16 864 -4 871 1 b 870 30 871 20 871 24 b 438 474 780 471 480 474 b 6 30 392 474 94 471 b 4 14 4 24 4 19 b 23 -4 4 0 12 -4 b 52 26 36 -4 43 6 b 56 39 53 27 55 33 b 435 318 73 98 138 318 z m 516 75 b 436 153 516 117 480 153 b 359 75 395 153 359 117 b 436 -4 359 32 395 -4 b 516 75 480 -4 516 32 z"},fermataBelow:{x_min:3,x_max:605,y_min:-332,y_max:0,ha:332,o:"m 435 -323 b 56 -43 138 -323 73 -102 b 52 -30 55 -37 53 -32 b 23 0 43 -10 36 0 b 4 -19 12 0 4 -4 b 6 -35 4 -23 4 -29 b 438 -478 94 -475 392 -478 b 870 -35 480 -478 780 -475 b 871 -20 871 -29 871 -24 b 851 0 871 -6 864 0 b 821 -30 837 0 831 -10 b 818 -40 819 -32 819 -36 b 435 -323 804 -95 742 -323 z m 516 -79 b 436 0 516 -36 480 0 b 359 -79 395 0 359 -36 b 436 -157 359 -121 395 -157 b 516 -79 480 -157 516 -121 z"},fermataLongAbove:{x_min:0,x_max:603,y_min:-1,y_max:333,ha:334,o:"m 72 480 b 0 441 32 480 0 462 l 0 19 b 35 0 0 9 16 0 b 71 19 55 0 71 9 l 71 289 b 433 315 71 307 252 315 b 798 289 615 315 798 307 l 798 19 b 832 0 798 9 814 0 b 868 19 852 0 868 9 l 868 441 b 796 480 868 462 837 480 z m 513 78 b 433 156 513 121 478 156 b 356 78 390 156 356 121 b 433 -1 356 35 390 -1 b 513 78 478 -1 513 35 z"},fermataLongBelow:{x_min:0,x_max:603,y_min:-333,y_max:1,ha:334,o:"m 513 -78 b 433 1 513 -35 478 1 b 356 -78 390 1 356 -35 b 433 -156 356 -121 390 -156 b 513 -78 478 -156 513 -121 z m 796 -480 b 868 -441 837 -480 868 -462 l 868 -19 b 832 0 868 -9 852 0 b 798 -19 814 0 798 -9 l 798 -289 b 433 -315 798 -307 615 -315 b 71 -289 252 -315 71 -307 l 71 -19 b 35 0 71 -9 55 0 b 0 -19 16 0 0 -9 l 0 -441 b 72 -480 0 -462 32 -480 z"},fermataVeryLongAbove:{x_min:0,x_max:715,y_min:0,y_max:408,ha:408,o:"m 76 588 b 0 546 35 588 0 569 l 0 22 b 37 1 0 10 17 1 b 75 22 59 1 75 10 l 75 431 b 514 458 75 449 294 458 b 955 431 734 458 955 449 l 955 22 b 991 1 955 10 971 1 b 1030 22 1012 1 1030 10 l 1030 546 b 953 588 1030 569 995 588 z m 215 389 b 138 347 171 389 138 370 l 138 22 b 174 1 138 10 154 1 b 213 22 196 1 213 10 l 213 217 b 514 245 213 235 363 245 b 816 217 665 245 816 235 l 816 22 b 854 1 816 10 834 1 b 891 22 876 1 891 10 l 891 347 b 815 389 891 370 858 389 z m 606 84 b 521 167 606 130 569 167 b 439 84 475 167 439 130 b 521 0 439 39 475 0 b 606 84 569 0 606 39 z"},fermataVeryLongBelow:{x_min:0,x_max:715,y_min:-408,y_max:0,ha:408,o:"m 606 -84 b 521 0 606 -39 569 0 b 439 -84 475 0 439 -39 b 521 -167 439 -130 475 -167 b 606 -84 569 -167 606 -130 z m 815 -389 b 891 -347 858 -389 891 -370 l 891 -22 b 854 -1 891 -10 876 -1 b 816 -22 834 -1 816 -10 l 816 -217 b 514 -245 816 -235 665 -245 b 213 -217 363 -245 213 -235 l 213 -22 b 174 -1 213 -10 196 -1 b 138 -22 154 -1 138 -10 l 138 -347 b 215 -389 138 -370 171 -389 z m 953 -588 b 1030 -546 995 -588 1030 -569 l 1030 -22 b 991 -1 1030 -10 1012 -1 b 955 -22 971 -1 955 -10 l 955 -431 b 514 -458 955 -449 734 -458 b 75 -431 294 -458 75 -449 l 75 -22 b 37 -1 75 -10 59 -1 b 0 -22 17 -1 0 -10 l 0 -546 b 76 -588 0 -569 35 -588 z"},fermataShortAbove:{x_min:0,x_max:604,y_min:0,y_max:341,ha:341,o:"m 78 0 b 88 6 81 0 82 3 b 435 328 134 45 412 328 b 783 3 458 328 742 39 b 793 0 786 1 793 0 l 865 0 b 870 4 865 0 870 1 b 867 10 870 6 868 9 b 435 491 805 69 474 491 b 3 10 397 491 69 75 b 0 4 1 9 0 6 b 4 0 0 1 4 0 z m 513 94 b 433 171 513 135 477 171 b 354 94 390 171 354 135 b 433 13 354 49 390 13 b 513 94 477 13 513 49 z"},fermataShortBelow:{x_min:0,x_max:604,y_min:-341,y_max:0,ha:341,o:"m 4 0 b 0 -4 4 0 0 -1 b 3 -10 0 -6 1 -9 b 435 -491 69 -75 397 -491 b 867 -10 474 -491 805 -69 b 870 -4 868 -9 870 -6 b 865 0 870 -1 865 0 l 793 0 b 783 -3 793 0 786 -1 b 435 -328 742 -39 458 -328 b 88 -6 412 -328 134 -45 b 78 0 82 -3 81 0 z m 513 -94 b 433 -13 513 -49 477 -13 b 354 -94 390 -13 354 -49 b 433 -171 354 -135 390 -171 b 513 -94 477 -171 513 -135 z"},breathMarkComma:{x_min:1,x_max:152,y_min:2,y_max:251,ha:249,o:"m 104 361 b 1 271 42 361 1 321 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 17 32 29 26 26 l 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 z"},breathMarkUpbow:{x_min:1,x_max:249,y_min:1,y_max:495,ha:494,o:"m 181 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 z"},caesura:{x_min:0,x_max:384,y_min:-1,y_max:532,ha:533,o:"m 40 -1 b 78 26 58 -1 72 9 l 321 713 b 323 726 323 717 323 721 b 282 766 323 747 304 766 b 245 739 265 766 251 756 l 3 52 b 0 37 1 48 0 42 b 27 1 0 22 10 7 b 40 -1 32 -1 36 -1 z m 308 26 l 552 713 b 553 726 553 717 553 721 b 513 766 553 747 534 766 b 475 739 495 766 481 756 l 232 52 b 230 39 230 48 230 43 b 258 1 230 23 240 7 b 271 -1 262 -1 266 -1 b 308 26 287 -1 302 9 z"},caesuraCurved:{x_min:0,x_max:373,y_min:0,y_max:530,ha:530,o:"m 491 763 b 445 719 468 763 446 744 b 252 98 432 507 340 295 l 226 39 b 223 27 225 35 223 32 b 252 0 223 13 233 0 b 276 16 262 0 272 6 b 537 716 386 230 537 478 b 491 763 537 742 518 763 z m 29 0 b 53 16 39 0 48 6 l 82 69 b 314 716 187 264 314 498 b 268 763 314 742 295 763 b 222 719 245 763 223 744 b 29 98 209 507 117 295 l 3 39 b 0 29 1 36 0 33 b 29 0 0 14 12 0 z"},restMaxima:{x_min:0,x_max:381,y_min:-249,y_max:250,ha:499,o:"m 180 -330 l 180 331 b 156 360 180 356 170 360 l 23 360 b 0 331 10 360 0 356 l 0 -330 b 23 -359 0 -354 10 -359 l 156 -359 b 180 -330 170 -359 180 -354 z m 549 -330 l 549 331 b 524 360 549 356 539 360 l 392 360 b 369 331 379 360 369 356 l 369 -330 b 392 -359 369 -354 379 -359 l 524 -359 b 549 -330 539 -359 549 -354 z"},restDoubleWhole:{x_min:0,x_max:125,y_min:0,y_max:250,ha:250,o:"m 180 22 l 180 338 b 156 360 180 350 170 360 l 23 360 b 0 338 10 360 0 350 l 0 22 b 23 0 0 10 10 0 l 156 0 b 180 22 170 0 180 10 z"},restWhole:{x_min:0,x_max:282,y_min:-135,y_max:9,ha:144,o:"m 406 -157 l 406 -24 b 369 13 406 -3 389 13 l 37 13 b 0 -24 16 13 0 -3 l 0 -157 b 37 -194 0 -177 16 -194 l 369 -194 b 406 -157 389 -194 406 -177 z"},restWholeLegerLine:{x_min:-117,x_max:399,y_min:-135,y_max:20,ha:155,o:"m -143 29 b -168 3 -157 29 -168 17 b -143 -23 -168 -12 -157 -23 l 0 -23 l 0 -157 b 37 -194 0 -177 16 -194 l 369 -194 b 406 -157 389 -194 406 -177 l 406 -24 b 549 -23 406 -23 406 -23 b 575 3 563 -23 575 -12 b 549 29 575 17 563 29 z"},restHalf:{x_min:0,x_max:282,y_min:-2,y_max:142,ha:144,o:"m 406 35 l 406 167 b 369 204 406 189 389 204 l 37 204 b 0 167 16 204 0 189 l 0 35 b 37 -3 0 14 16 -3 l 369 -3 b 406 35 389 -3 406 14 z"},restHalfLegerLine:{x_min:-117,x_max:399,y_min:-13,y_max:142,ha:155,o:"m 549 -19 b 575 7 563 -19 575 -7 b 549 33 575 22 563 33 b 406 35 406 33 406 33 l 406 167 b 369 204 406 187 389 204 l 37 204 b 0 167 16 204 0 187 l 0 33 l -143 33 b -168 7 -157 33 -168 22 b -143 -19 -168 -7 -157 -19 z"},restQuarter:{x_min:1,x_max:270,y_min:-375,y_max:373,ha:748,o:"m 112 -55 b 174 -141 135 -84 156 -111 b 183 -161 177 -147 183 -158 b 181 -167 183 -163 183 -166 b 166 -174 179 -173 173 -174 b 143 -170 160 -174 148 -171 b 137 -170 141 -170 138 -170 l 125 -166 b 1 -304 50 -166 1 -233 b 168 -527 1 -376 63 -446 b 206 -540 180 -536 194 -540 b 228 -531 216 -540 226 -537 b 230 -521 229 -527 230 -524 b 207 -487 230 -508 219 -497 b 170 -435 189 -487 173 -448 b 164 -397 166 -423 164 -410 b 255 -292 164 -338 194 -292 b 369 -317 297 -292 344 -308 l 370 -318 b 382 -320 376 -320 379 -320 b 389 -314 386 -320 389 -318 b 336 -232 389 -297 351 -249 b 236 -32 281 -166 236 -112 b 236 -27 236 -30 236 -29 l 238 -17 b 238 -13 238 -16 238 -14 b 333 199 243 71 295 140 b 338 220 337 206 338 213 b 333 248 338 235 333 248 b 95 526 333 248 120 501 b 69 537 88 533 78 537 b 40 507 55 537 40 527 b 46 484 40 500 42 492 b 134 291 52 468 134 395 b 48 108 134 238 112 176 b 27 66 33 94 27 78 b 42 32 27 46 42 32 z"},rest8th:{x_min:0,x_max:247,y_min:-251,y_max:174,ha:425,o:"m 193 154 b 96 251 193 207 150 251 b 0 154 43 251 0 207 b 39 81 0 124 17 98 b 117 56 62 65 89 56 b 173 66 137 56 157 60 b 225 88 193 72 206 78 b 232 89 228 89 230 89 b 239 76 238 89 239 84 b 238 60 239 72 239 66 b 104 -343 233 39 130 -248 b 145 -361 104 -360 137 -361 b 196 -347 161 -361 181 -359 b 341 161 200 -344 341 161 b 356 217 347 187 354 210 b 338 240 356 232 341 239 b 323 235 336 240 331 240 b 193 140 312 226 240 140 z"},rest16th:{x_min:0,x_max:320,y_min:-500,y_max:179,ha:679,o:"m 300 160 b 202 258 300 215 256 258 b 104 160 148 258 104 215 b 219 62 104 101 164 62 b 331 94 258 62 298 75 b 341 96 336 95 338 96 b 348 86 346 96 348 94 b 265 -173 348 63 275 -151 b 194 -217 253 -200 215 -217 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 151 -105 b 0 -203 43 -105 0 -148 b 115 -301 0 -262 60 -301 b 223 -271 153 -301 190 -288 b 229 -279 226 -271 229 -274 l 228 -281 b 228 -282 228 -282 228 -282 l 91 -690 b 91 -691 91 -690 91 -691 l 89 -693 b 134 -720 89 -706 102 -720 b 189 -687 176 -720 183 -703 l 356 -138 b 420 81 393 -16 420 81 b 459 226 420 81 456 207 b 461 232 459 229 461 230 b 446 248 461 240 449 246 b 431 242 439 248 435 245 b 300 145 420 233 348 147 z"},rest32nd:{x_min:0,x_max:363,y_min:-500,y_max:426,ha:926,o:"m 508 603 b 492 598 501 603 497 600 b 361 503 482 590 410 503 l 361 516 b 264 613 361 570 318 613 b 166 516 210 613 166 570 b 206 444 166 487 183 461 b 246 423 217 433 232 428 b 284 418 258 420 269 418 b 393 449 321 418 360 432 b 399 451 395 451 397 451 b 415 426 409 451 415 436 l 413 423 b 413 422 413 423 413 422 l 357 192 b 279 140 350 168 302 140 b 281 153 281 144 281 148 b 183 251 281 207 236 251 b 85 153 128 251 85 207 b 125 81 85 124 102 98 b 164 60 137 71 150 65 b 203 55 176 58 189 55 b 311 86 240 55 278 69 b 315 88 312 88 314 88 b 325 69 323 88 325 76 l 268 -167 b 194 -217 261 -197 216 -216 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 153 -105 b 0 -203 45 -105 0 -148 b 115 -301 0 -262 60 -301 b 228 -269 154 -301 194 -288 b 232 -268 229 -268 230 -268 b 240 -276 236 -268 240 -272 b 138 -688 240 -282 141 -678 b 137 -697 137 -691 137 -694 b 176 -720 137 -708 145 -720 b 232 -690 222 -720 226 -706 b 484 436 236 -672 484 436 b 521 582 484 436 518 564 b 523 588 521 585 523 586 b 508 603 523 600 511 603 z"},rest64th:{x_min:0,x_max:423,y_min:-753,y_max:430,ha:1183,o:"m 596 609 b 580 603 589 609 585 606 b 448 507 569 595 497 507 b 449 521 449 511 449 516 b 351 619 449 575 405 619 b 253 521 297 619 253 575 b 372 422 253 461 317 422 b 481 454 410 422 446 438 b 491 456 484 455 488 456 b 504 441 498 456 504 451 b 501 426 504 436 503 432 b 445 202 500 422 451 217 b 359 144 435 174 383 144 l 359 158 b 261 256 359 212 315 256 b 163 158 207 256 163 212 b 243 65 163 112 202 78 b 279 60 255 62 266 60 b 397 91 320 60 360 73 b 403 92 400 92 402 92 b 412 79 409 92 412 86 b 410 72 412 76 412 75 b 351 -161 408 59 356 -150 b 281 -212 340 -199 301 -212 l 281 -197 b 183 -99 281 -144 238 -99 b 85 -197 130 -99 85 -144 b 125 -271 85 -228 102 -253 b 166 -291 138 -279 151 -287 b 204 -297 177 -294 192 -297 b 262 -287 225 -297 245 -292 b 305 -265 282 -279 287 -274 b 310 -264 307 -264 308 -264 b 318 -284 317 -264 318 -275 b 317 -295 318 -288 317 -294 b 259 -524 315 -302 265 -508 b 194 -567 251 -554 213 -567 b 196 -554 196 -563 196 -559 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 b 40 -626 0 -583 17 -609 b 118 -652 60 -644 92 -652 b 210 -629 145 -652 186 -642 b 216 -628 213 -628 215 -628 b 228 -647 226 -628 228 -639 l 226 -651 b 226 -652 226 -651 226 -652 l 122 -1054 b 121 -1064 121 -1058 121 -1061 b 167 -1084 121 -1077 134 -1084 b 215 -1060 202 -1084 209 -1076 b 402 -278 217 -1047 229 -1021 b 436 -135 403 -278 431 -161 l 570 441 b 609 588 570 441 605 569 b 596 609 609 603 602 608 z"},rest128th:{x_min:0,x_max:485,y_min:-750,y_max:689,ha:1439,o:"m 537 894 b 439 992 537 949 494 992 b 341 894 386 992 341 949 b 382 822 341 865 359 840 b 459 796 402 805 433 796 b 518 806 480 796 501 801 l 520 808 b 569 828 539 814 552 819 b 580 831 572 829 577 831 b 598 812 589 831 598 825 b 596 801 598 809 598 805 b 540 575 590 773 546 595 b 448 510 534 553 475 510 l 448 524 b 350 622 448 577 405 622 b 252 524 297 622 252 577 b 292 451 252 494 269 468 b 369 426 318 433 337 426 b 429 435 389 426 412 429 b 494 464 449 442 475 455 b 498 465 495 465 497 465 b 505 446 504 465 505 456 b 503 426 505 439 504 432 l 446 202 b 366 144 439 173 389 144 l 366 158 b 268 256 366 212 323 256 b 170 158 215 256 170 212 b 289 59 170 98 235 59 b 347 69 310 59 330 63 b 397 91 367 76 379 82 b 406 94 400 92 403 94 b 415 79 412 94 415 88 b 412 63 415 75 413 69 b 357 -157 408 42 364 -134 b 281 -212 346 -196 302 -212 b 282 -197 281 -207 282 -203 b 184 -99 282 -144 238 -99 b 86 -197 130 -99 86 -144 b 204 -297 86 -258 150 -297 b 262 -287 225 -297 245 -292 b 312 -265 282 -279 294 -274 b 318 -264 314 -264 317 -264 b 327 -275 324 -264 327 -269 b 266 -517 324 -287 278 -490 b 200 -569 248 -566 220 -567 l 196 -554 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 b 118 -652 0 -615 63 -652 b 177 -642 138 -652 160 -648 l 179 -641 b 229 -621 197 -635 210 -629 l 230 -619 b 239 -626 236 -619 239 -622 b 238 -632 239 -628 239 -631 b 131 -1057 235 -642 134 -1050 b 173 -1080 131 -1071 140 -1080 b 230 -1057 219 -1080 225 -1074 l 658 815 b 697 960 658 815 694 942 b 698 966 697 963 698 965 b 684 982 698 975 687 981 b 668 976 677 982 672 979 b 537 880 658 969 586 881 z"},dynamicPiano:{x_min:-89,x_max:366,y_min:-142,y_max:274,ha:416,o:"m 395 395 b 292 357 350 395 318 380 b 262 328 272 340 268 328 b 246 363 255 328 259 338 b 177 393 236 380 215 393 b 1 251 92 393 46 333 b -9 223 -6 238 -9 230 b 7 207 -9 213 -1 207 b 30 229 17 207 23 216 b 127 338 72 301 101 338 b 143 321 138 338 143 331 b 134 285 143 310 138 295 l -43 -154 b -65 -168 -48 -166 -50 -168 l -109 -168 b -128 -187 -122 -168 -128 -174 b -111 -204 -128 -199 -122 -204 l 167 -204 b 186 -186 180 -204 186 -199 b 168 -168 186 -174 180 -168 l 111 -168 b 98 -164 102 -168 98 -168 b 101 -154 98 -163 99 -158 l 166 7 b 179 24 168 14 171 24 b 213 -1 186 24 190 10 b 276 -14 233 -12 252 -14 b 527 266 415 -14 527 130 b 395 395 527 350 475 395 z m 356 341 b 389 288 380 341 389 320 b 243 35 389 217 312 35 b 207 81 219 35 207 50 b 235 180 207 111 219 140 l 264 251 b 356 341 284 300 321 341 z"},dynamicMezzo:{x_min:-20,x_max:446,y_min:-10,y_max:274,ha:284,o:"m 528 395 b 431 350 487 395 454 374 b 409 330 416 336 415 330 b 397 360 402 330 406 341 b 334 395 389 379 370 395 b 236 350 292 395 259 374 b 215 330 222 336 220 330 b 203 360 207 330 212 340 b 147 393 194 379 174 393 b -19 251 71 393 26 331 b -29 223 -26 238 -29 230 b -13 207 -29 213 -22 207 b 9 226 -3 207 1 215 b 107 338 52 300 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 287 323 225 292 255 323 b 308 302 304 323 308 314 b 294 249 308 285 302 269 b 203 24 294 248 292 248 b 199 9 200 17 199 13 b 215 0 199 3 203 0 l 285 0 b 308 17 298 0 302 3 l 402 251 b 481 323 419 292 449 323 b 503 302 498 323 503 314 b 413 43 503 252 413 104 b 478 -14 413 6 436 -14 b 629 102 533 -14 583 26 b 642 132 638 117 642 125 b 629 145 642 141 636 145 b 608 127 619 145 615 138 b 534 49 580 84 553 49 b 523 62 526 49 523 53 b 606 317 523 112 606 238 b 528 395 606 353 588 395 z"},dynamicForte:{x_min:-141,x_max:364,y_min:-152,y_max:444,ha:596,o:"m 23 380 b 0 357 7 380 0 373 b 22 336 0 343 7 336 l 105 336 b 117 330 114 336 117 336 b 114 315 117 327 115 323 l 23 0 b -101 -187 -17 -141 -43 -187 b -127 -174 -120 -187 -127 -181 b -92 -156 -127 -163 -114 -170 b -63 -102 -75 -144 -63 -125 b -128 -43 -63 -65 -89 -43 b -203 -122 -171 -43 -203 -78 b -95 -219 -203 -186 -156 -219 b 161 17 14 -219 82 -145 b 269 317 203 105 235 194 l 271 318 b 289 336 271 323 282 336 l 383 336 b 406 359 399 336 406 343 b 384 380 406 373 399 380 l 298 380 b 284 387 288 380 284 380 b 287 405 284 392 285 396 b 419 606 315 530 347 606 b 442 595 431 606 442 603 b 419 580 442 586 435 588 b 389 526 400 572 389 552 b 454 465 389 485 418 465 b 524 543 491 465 524 490 b 400 639 524 596 491 639 b 135 402 261 639 183 540 b 107 380 128 380 127 380 z"},dynamicRinforzando:{x_min:-20,x_max:277,y_min:0,y_max:274,ha:274,o:"m 324 395 b 235 350 287 395 256 374 b 215 330 222 336 220 330 b 203 360 207 330 213 337 b 145 393 194 379 174 393 b -19 251 75 393 27 337 b -29 223 -26 238 -29 230 b -13 207 -29 213 -22 207 b 9 226 -3 207 3 215 b 107 338 52 301 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 304 351 226 298 272 351 b 318 343 312 351 318 348 b 287 285 318 330 287 325 b 338 239 287 256 308 239 b 399 318 373 239 399 268 b 324 395 399 360 377 395 z"},dynamicSforzando:{x_min:0,x_max:229,y_min:-10,y_max:273,ha:283,o:"m 212 393 b 68 274 127 393 68 350 b 145 161 68 223 95 196 b 200 85 187 132 200 114 b 127 20 200 53 173 20 b 66 42 91 20 66 32 b 91 56 66 49 75 46 b 111 98 104 65 111 79 b 59 145 111 127 86 145 b 0 78 24 145 0 117 b 125 -14 0 30 49 -14 b 291 120 219 -14 291 36 b 220 232 291 160 276 190 b 151 314 168 271 151 287 b 213 361 151 337 168 361 b 258 346 238 361 258 356 b 240 333 258 340 251 340 b 226 298 232 325 226 314 b 276 252 226 269 248 252 b 330 307 311 252 330 279 b 212 393 330 360 285 393 z"},dynamicZ:{x_min:-30,x_max:244,y_min:-10,y_max:268,ha:278,o:"m 333 386 b 298 377 321 386 314 382 b 239 370 282 373 259 370 b 94 383 153 370 111 383 b 68 364 79 383 72 377 l 33 264 b 29 242 30 255 29 248 b 45 228 29 232 36 228 b 66 249 55 228 60 236 l 81 279 b 96 297 85 288 88 297 b 168 292 102 297 127 292 b 223 302 194 292 215 302 b 196 269 229 302 197 271 l -26 45 b -43 16 -37 33 -43 27 b -24 -1 -43 6 -36 -1 b 4 16 -12 -1 -3 10 b 39 30 16 24 27 30 b 179 -14 79 30 108 -14 b 297 102 259 -14 297 43 b 245 166 297 147 271 166 b 197 115 219 166 197 145 b 236 72 197 88 216 72 b 259 79 251 72 255 79 b 264 75 262 79 264 78 b 258 60 264 72 261 66 b 229 45 252 50 242 45 b 117 95 186 45 173 95 b 85 86 98 95 89 86 b 102 111 85 86 95 104 l 333 338 b 351 370 344 350 351 359 b 333 386 351 380 343 386 z"},ornamentTrill:{x_min:0,x_max:521,y_min:-10,y_max:390,ha:400,o:"m 383 562 b 364 557 377 562 369 559 l 294 534 b 269 511 281 530 275 526 l 217 384 b 206 367 212 370 210 367 b 179 380 200 367 192 374 b 118 393 158 389 140 393 b 0 292 50 393 0 353 b 95 210 0 248 30 210 b 140 213 112 210 131 213 b 144 209 143 213 144 212 b 140 194 144 206 143 202 l 124 156 b 96 58 108 117 96 88 b 179 -14 96 17 124 -14 b 325 153 253 -14 325 46 b 307 251 325 187 320 219 b 302 265 304 258 302 261 b 334 294 302 274 311 281 l 343 298 b 455 348 393 328 428 348 b 474 327 468 348 474 344 b 465 285 474 312 469 295 l 360 24 b 356 9 357 17 356 13 b 372 0 356 3 360 0 l 442 0 b 465 17 455 0 459 3 l 559 251 b 655 351 577 298 624 351 b 670 343 664 351 670 348 b 638 285 670 330 638 325 b 690 239 638 256 660 239 b 750 318 724 239 750 268 b 675 395 750 360 729 395 b 586 350 638 395 608 374 b 566 330 573 336 572 330 b 553 361 559 330 564 340 b 490 393 543 380 521 393 b 347 348 432 393 377 364 b 312 333 328 338 320 333 b 308 337 310 333 308 334 b 315 359 308 343 312 351 l 387 537 b 392 553 390 544 392 549 b 383 562 392 559 389 562 z m 118 360 b 192 325 134 360 192 347 b 186 307 192 321 189 314 l 180 292 b 148 265 173 274 167 269 b 98 258 130 261 112 258 b 39 301 50 258 39 281 b 118 360 39 327 60 360 z m 272 240 b 292 151 285 240 292 164 b 212 30 292 88 253 30 b 196 48 200 30 196 37 b 207 92 196 59 202 78 b 264 230 207 94 209 94 b 272 240 266 238 268 240 z"},ornamentTurn:{x_min:0,x_max:460,y_min:0,y_max:218,ha:218,o:"m 534 314 b 454 251 490 314 454 294 b 505 199 454 219 475 199 b 579 232 547 199 549 232 b 626 164 603 232 626 202 b 533 72 626 102 583 72 b 377 180 487 72 439 111 b 150 312 307 258 243 312 b 0 148 55 312 0 240 b 128 0 0 45 66 0 b 209 63 173 0 209 20 b 157 115 209 95 187 115 b 84 82 115 115 114 82 b 36 150 59 82 36 112 b 130 242 36 212 79 242 b 285 134 176 242 223 203 b 513 1 356 56 419 1 b 662 166 608 1 662 73 b 534 314 662 269 596 314 z"},ornamentTurnSlash:{x_min:0,x_max:460,y_min:-90,y_max:306,ha:396,o:"m 333 441 b 310 418 315 441 310 433 l 310 274 b 302 252 310 258 308 252 b 261 278 294 252 287 262 b 150 311 228 298 192 311 b 0 147 55 311 0 239 b 128 -1 0 43 66 -1 b 209 62 173 -1 209 19 b 157 114 209 94 187 114 b 84 81 115 114 114 81 b 36 148 59 81 36 111 b 130 240 36 210 79 240 b 285 128 176 240 222 197 b 307 79 304 108 307 105 l 307 -107 b 330 -130 307 -122 312 -130 b 353 -107 347 -130 353 -122 l 353 37 b 360 59 353 53 353 59 b 402 33 369 59 376 49 b 513 0 435 13 471 0 b 662 164 608 0 662 72 b 534 312 662 268 596 312 b 454 249 490 312 454 292 b 505 197 454 217 475 197 b 579 230 547 197 549 230 b 626 163 603 230 626 200 b 533 71 626 101 583 71 b 377 183 487 71 441 114 b 356 232 359 203 356 206 l 356 418 b 333 441 356 433 350 441 z"},ornamentMordent:{x_min:1,x_max:729,y_min:-73,y_max:319,ha:392,o:"m 546 265 l 546 459 l 501 459 l 501 216 l 459 167 b 439 167 454 160 445 160 b 302 327 387 228 310 317 b 258 353 291 338 282 351 b 226 340 245 353 238 348 l 20 107 b 1 73 12 98 1 84 b 30 59 1 65 9 59 b 88 94 53 59 73 79 b 144 143 107 109 124 127 b 176 161 158 154 168 161 b 197 144 183 161 189 156 l 323 10 b 351 0 328 3 340 0 b 377 9 361 0 372 3 b 498 114 392 17 475 94 l 498 -105 l 544 -105 l 544 153 b 562 160 550 157 556 160 b 585 144 569 160 576 156 b 710 10 590 135 697 24 b 737 0 716 3 727 0 b 765 9 749 0 759 3 b 1030 295 776 17 1011 274 l 1032 300 b 1050 328 1041 308 1050 318 b 1012 353 1050 343 1024 353 b 986 343 1002 353 994 348 b 854 190 971 330 871 206 b 828 176 842 180 835 176 b 802 190 818 176 809 183 b 681 333 791 202 696 320 b 645 353 668 344 657 353 b 613 340 634 353 626 350 b 580 304 600 330 590 315 z"},ornamentShortTrill:{x_min:0,x_max:725,y_min:0,y_max:245,ha:245,o:"m 429 167 l 301 325 b 256 353 291 338 282 350 b 225 340 246 353 238 350 b 16 105 158 268 88 186 b 0 72 9 96 0 86 b 29 58 0 63 7 58 b 71 76 42 58 55 62 l 158 154 b 174 160 163 158 168 160 b 197 143 181 160 187 154 b 321 10 203 135 310 24 b 350 0 327 3 338 0 b 377 7 361 0 372 3 l 533 148 b 554 160 543 158 550 160 b 577 143 562 160 566 156 b 703 10 585 135 690 24 b 732 0 708 3 720 0 b 759 7 743 0 753 3 b 1024 294 769 16 1005 272 b 1044 327 1032 305 1044 321 b 1005 353 1044 341 1018 353 b 979 343 996 353 988 348 b 848 189 963 330 864 204 b 821 174 837 179 828 174 b 796 189 811 174 804 181 b 674 331 783 202 688 318 b 641 351 662 343 651 351 b 606 340 628 351 619 350 b 573 304 593 328 583 315 b 444 167 533 259 491 213 b 429 167 439 161 433 161 z"},ornamentTremblement:{x_min:1,x_max:985,y_min:0,y_max:244,ha:244,o:"m 678 325 b 634 351 667 338 657 350 b 602 338 621 351 613 348 l 448 167 b 439 167 446 164 441 164 l 302 325 b 258 351 291 338 281 350 b 228 338 245 351 238 348 b 193 304 215 328 204 315 l 19 107 b 1 72 13 96 1 76 b 30 58 1 63 9 58 b 89 92 52 58 73 78 l 144 141 b 148 144 145 143 147 143 b 176 160 160 153 170 160 b 199 143 183 160 189 154 b 324 10 204 134 311 23 b 351 0 330 3 340 0 b 379 7 363 0 373 3 l 530 148 b 552 160 536 154 546 160 b 575 143 559 160 564 154 b 698 10 580 134 687 23 b 727 0 704 3 716 0 b 755 7 739 0 749 3 l 907 147 b 930 160 922 158 923 160 b 952 143 937 160 943 154 l 1077 10 b 1107 0 1084 3 1096 0 b 1133 7 1117 0 1128 3 b 1398 294 1143 16 1380 272 b 1418 327 1407 305 1418 321 b 1381 351 1418 343 1394 351 b 1354 341 1371 351 1362 348 b 1223 189 1338 328 1238 204 b 1195 174 1211 179 1202 174 b 1171 189 1185 174 1178 181 b 1048 331 1158 200 1063 318 b 1012 351 1035 343 1024 351 b 981 338 1002 351 994 350 b 948 304 968 328 958 315 b 827 166 907 258 865 212 b 815 166 824 163 818 163 b 678 325 760 226 732 264 z"},ornamentPrecompAppoggTrill:{x_min:0,x_max:1119,y_min:0,y_max:481,ha:481,o:"m 1015 163 b 873 328 963 223 880 318 b 828 354 860 344 847 353 b 796 341 816 354 809 351 b 763 305 783 331 773 317 b 642 168 721 261 681 215 b 636 163 641 167 639 164 b 494 328 585 223 501 318 b 449 354 481 344 468 353 b 418 341 438 354 431 351 b 384 305 405 331 395 317 b 264 168 343 261 302 215 l 242 144 b 144 88 232 124 171 88 b 79 197 81 88 79 189 l 79 648 b 60 693 79 683 71 693 b 52 691 58 693 55 693 b 0 616 3 672 0 625 l 0 207 b 121 0 0 40 68 0 b 249 68 168 0 232 53 b 279 94 262 75 271 86 b 336 144 298 111 315 128 b 367 163 350 156 360 163 b 389 145 374 163 380 157 b 514 12 395 137 501 26 b 543 1 520 4 531 1 b 569 9 553 1 563 4 b 636 73 576 14 605 43 l 658 94 b 714 144 677 111 694 128 b 746 163 729 156 739 163 b 768 145 753 163 759 157 b 893 12 773 137 880 26 b 922 1 899 4 910 1 b 948 9 932 1 942 4 l 1012 71 b 1037 94 1022 78 1030 86 b 1092 144 1054 111 1073 128 b 1123 161 1106 156 1115 161 b 1146 145 1130 161 1136 157 b 1270 12 1152 137 1259 26 b 1299 1 1276 4 1287 1 b 1326 9 1310 1 1320 4 b 1591 297 1336 19 1572 275 b 1611 328 1600 307 1611 320 b 1574 354 1611 343 1585 354 b 1548 344 1565 354 1555 350 b 1416 192 1532 331 1431 206 b 1388 177 1404 181 1395 177 b 1365 190 1380 177 1371 184 b 1243 333 1352 203 1256 321 b 1205 354 1228 346 1217 354 b 1174 341 1195 354 1187 351 b 1140 305 1161 330 1152 317 z"},ornamentPrecompSlideTrillDAnglebert:{x_min:2,x_max:1150,y_min:-367,y_max:245,ha:612,o:"m 1058 160 b 916 327 1007 220 923 317 b 871 353 903 343 890 351 b 840 340 860 353 852 350 b 806 304 827 330 816 315 b 685 167 765 259 724 213 l 680 160 l 615 235 b 419 344 582 275 523 344 b 3 -144 258 344 3 26 b 4 -168 3 -153 3 -160 b 246 -482 24 -315 99 -422 b 458 -528 340 -521 410 -528 b 514 -526 485 -528 504 -526 b 552 -508 531 -526 552 -517 b 514 -497 552 -503 541 -498 l 503 -497 b 194 -390 432 -494 298 -488 b 69 -151 194 -390 69 -279 b 184 96 69 -60 128 27 b 328 183 202 118 258 183 b 477 96 413 183 454 118 b 559 10 510 62 552 19 b 588 0 566 3 576 0 b 613 7 598 0 609 3 b 723 112 622 14 681 73 b 789 161 733 122 776 161 b 811 144 796 161 802 156 b 936 10 816 135 923 24 b 965 0 942 3 953 0 b 991 7 975 0 985 3 b 1051 66 996 12 1022 37 b 1081 92 1063 73 1073 84 b 1136 143 1099 109 1117 127 b 1168 160 1151 154 1159 160 b 1191 144 1175 160 1181 156 b 1315 10 1197 135 1303 24 b 1344 0 1320 3 1332 0 b 1371 7 1355 0 1365 3 b 1636 295 1381 17 1617 274 b 1656 327 1644 305 1656 318 b 1619 353 1656 341 1630 353 b 1593 343 1610 353 1600 348 b 1460 190 1577 330 1476 204 b 1433 176 1449 180 1440 176 b 1410 189 1424 176 1416 183 b 1287 331 1397 202 1300 320 b 1250 353 1273 344 1261 353 b 1218 340 1240 353 1231 350 b 1185 304 1205 328 1197 315 z"},ornamentPrecompSlideTrillBach:{x_min:0,x_max:1048,y_min:-367,y_max:331,ha:698,o:"m 1038 477 l 979 477 l 979 238 l 912 160 b 769 327 858 220 775 317 b 724 353 756 343 743 351 b 693 340 713 353 706 350 b 660 304 680 330 670 315 b 539 167 618 259 577 213 b 533 161 536 166 534 163 b 390 327 480 220 396 317 b 346 353 377 343 364 351 l 340 353 b 308 340 330 353 321 350 b 275 304 295 330 285 315 b 117 122 220 243 168 186 b 0 -144 68 62 0 -48 b 1 -168 0 -153 0 -160 b 243 -482 22 -315 96 -422 b 455 -528 337 -521 408 -528 b 511 -526 482 -528 501 -526 b 549 -508 528 -526 549 -517 b 511 -497 549 -503 539 -498 l 500 -497 b 192 -390 429 -494 295 -488 b 68 -177 192 -390 84 -298 b 66 -151 66 -168 66 -160 b 189 105 66 -58 127 35 b 232 143 203 118 216 131 b 264 161 246 154 256 161 b 285 144 271 161 276 156 b 410 10 291 135 397 24 b 439 0 416 3 428 0 b 465 7 449 0 459 3 l 531 72 b 554 92 540 78 547 86 b 611 143 573 109 590 127 b 642 161 625 154 635 161 b 664 144 649 161 655 156 b 789 10 670 135 776 24 b 818 0 795 3 806 0 b 844 7 828 0 838 3 b 904 66 850 12 876 37 b 935 92 916 73 924 84 b 979 134 949 107 963 121 l 979 -88 l 1037 -88 l 1037 151 l 1044 144 b 1168 10 1050 135 1156 24 b 1197 0 1174 3 1185 0 b 1224 7 1208 0 1218 3 b 1489 295 1234 17 1470 274 b 1509 327 1498 305 1509 318 b 1472 353 1509 341 1483 353 b 1446 343 1463 353 1453 348 b 1313 190 1430 330 1329 204 b 1286 176 1302 180 1293 176 b 1263 189 1277 176 1269 183 b 1140 331 1250 202 1153 320 b 1103 353 1126 344 1115 353 b 1071 340 1093 353 1084 350 b 1038 304 1058 328 1050 315 z"},ornamentPrecompTrillSuffixDandrieu:{x_min:0,x_max:949,y_min:0,y_max:381,ha:381,o:"m 1367 314 b 1250 521 1367 419 1318 482 b 1107 549 1211 537 1145 549 b 1083 546 1096 549 1087 549 b 1066 528 1071 540 1066 534 b 1079 520 1066 524 1070 520 b 1323 351 1187 517 1323 487 b 1201 171 1323 269 1260 219 b 1194 166 1201 171 1198 168 b 1056 327 1142 226 1063 317 b 1011 353 1043 343 1030 351 b 979 340 999 353 992 350 b 946 304 966 330 956 315 b 825 167 904 259 864 213 l 821 161 b 678 327 768 222 685 317 b 634 353 665 343 652 351 b 602 340 622 353 615 350 b 569 304 589 330 579 315 b 448 167 527 259 487 213 l 444 161 b 301 327 390 222 308 317 b 256 353 288 343 275 351 b 225 340 245 353 238 350 b 192 304 212 330 202 315 b 71 167 150 259 109 213 b 17 105 52 147 36 127 b 0 73 10 98 0 84 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 174 161 157 154 167 161 b 196 144 181 161 187 156 b 321 10 202 135 308 24 b 350 0 327 3 338 0 b 376 7 360 0 370 3 b 485 112 384 14 444 73 b 552 161 495 122 539 161 b 573 144 559 161 564 156 b 698 10 579 135 685 24 b 727 0 704 3 716 0 b 753 7 737 0 747 3 b 863 112 762 14 821 73 b 929 161 873 122 916 161 b 950 144 936 161 942 156 b 1076 10 956 135 1063 24 b 1104 0 1081 3 1093 0 b 1130 7 1115 0 1125 3 b 1236 108 1139 14 1195 69 b 1367 314 1297 160 1367 233 z"},ornamentPrecompDoubleCadenceUpperPrefix:{x_min:0,x_max:1278,y_min:0,y_max:247,ha:247,o:"m 1801 356 b 1776 346 1793 356 1783 351 b 1642 192 1760 333 1659 206 b 1614 177 1630 181 1621 177 b 1591 190 1606 177 1597 184 b 1469 334 1578 203 1482 323 b 1430 356 1453 347 1441 356 b 1398 343 1420 356 1411 353 b 1365 307 1385 331 1377 318 l 1240 164 b 1097 330 1187 226 1104 320 b 1053 356 1084 346 1071 354 b 1021 343 1041 356 1034 353 b 988 307 1008 333 998 318 b 865 168 946 262 904 216 l 861 163 b 717 330 808 223 724 320 b 672 356 704 346 691 354 b 641 343 661 356 654 353 b 608 307 628 333 618 318 b 485 168 566 262 524 216 l 455 134 b 284 46 409 88 351 46 b 16 285 148 46 32 265 b 3 295 9 292 4 295 b 0 291 1 295 0 292 b 1 285 0 288 1 285 b 308 0 42 190 157 0 b 530 120 415 1 482 63 b 559 144 539 128 549 137 b 590 163 573 156 583 163 b 612 145 598 163 603 157 b 739 10 618 137 724 24 b 768 0 744 3 756 0 b 793 7 778 0 788 3 b 903 114 802 14 861 75 l 939 144 b 971 163 953 156 963 163 b 992 145 978 163 984 157 b 1119 10 998 137 1106 24 b 1148 0 1125 3 1136 0 b 1174 7 1158 0 1168 3 b 1284 114 1182 14 1241 75 b 1316 144 1282 115 1312 141 b 1348 161 1331 156 1339 161 b 1371 145 1355 161 1361 157 b 1496 10 1377 137 1485 24 b 1525 0 1502 3 1513 0 b 1552 7 1536 0 1547 3 b 1819 298 1562 17 1800 276 b 1840 330 1829 308 1840 320 b 1832 344 1840 334 1837 340 b 1801 356 1820 351 1810 356 z"},ornamentPrecompDoubleCadenceUpperPrefixTurn:{x_min:0,x_max:1277,y_min:-62,y_max:333,ha:395,o:"m 1273 202 l 1273 480 l 1230 480 l 1230 174 l 1097 328 b 1053 354 1084 344 1071 353 b 1021 341 1041 354 1034 351 b 988 305 1008 331 998 317 b 865 167 945 261 904 215 l 861 161 b 717 328 808 222 724 318 b 672 354 704 344 691 353 b 641 341 661 354 654 351 b 608 305 628 331 618 317 b 485 167 564 261 524 215 b 455 132 474 156 465 144 b 284 45 410 88 350 45 b 14 284 148 45 30 264 b 3 294 9 291 4 294 b 0 289 1 294 0 291 b 1 284 0 287 1 284 b 308 -1 42 189 157 -1 b 530 118 415 0 481 62 b 557 143 539 127 547 135 b 590 161 572 154 582 161 b 612 144 598 161 603 156 b 737 9 618 135 724 24 b 768 -1 743 1 755 -1 b 793 6 778 -1 788 1 b 903 112 802 13 861 73 l 937 143 b 971 161 953 154 963 161 b 992 144 978 161 984 156 b 1117 9 998 135 1104 24 b 1148 -1 1123 1 1136 -1 b 1174 6 1158 -1 1168 1 l 1230 60 l 1230 -89 l 1273 -89 l 1273 102 l 1283 112 b 1348 160 1295 125 1332 160 b 1371 144 1355 160 1361 156 b 1496 9 1377 135 1483 24 b 1525 -1 1502 1 1513 -1 b 1552 6 1536 -1 1547 1 b 1819 297 1562 16 1800 275 b 1839 328 1827 307 1839 320 b 1801 354 1839 343 1813 354 b 1776 344 1793 354 1783 350 b 1642 190 1760 331 1657 206 b 1614 176 1630 180 1621 176 b 1591 189 1606 176 1597 183 b 1467 333 1578 203 1480 321 b 1430 354 1453 346 1441 354 b 1398 341 1420 354 1411 351 b 1365 305 1385 330 1377 317 z"},ornamentPrecompTrillLowerSuffix:{x_min:0,x_max:859,y_min:-222,y_max:246,ha:468,o:"m 1164 217 b 1031 351 1138 259 1063 351 b 1011 337 1020 351 1024 347 b 828 167 952 291 886 217 l 824 164 b 683 328 772 225 690 318 b 638 354 670 344 657 353 b 606 341 626 354 619 351 b 573 305 593 331 583 317 b 451 167 530 261 490 215 l 446 161 b 302 328 393 222 310 318 b 258 354 289 344 276 353 b 226 341 246 354 239 351 b 193 305 213 331 203 317 b 71 167 150 261 109 215 b 17 105 52 147 36 127 b 0 73 10 98 0 84 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 176 161 157 154 168 161 b 197 144 183 161 189 156 b 323 9 203 135 310 23 b 353 -1 328 1 340 -1 b 379 6 363 -1 373 1 b 488 112 387 13 446 73 l 523 143 b 556 161 539 154 549 161 b 577 144 563 161 569 156 b 703 9 583 135 690 23 b 733 -1 708 1 721 -1 b 759 6 743 -1 753 1 b 868 112 768 13 827 73 b 955 183 878 122 943 183 b 1081 107 965 183 1031 153 b 1156 -89 1128 63 1156 6 l 1156 -102 b 948 -297 1156 -204 1048 -297 b 806 -271 904 -297 850 -282 l 792 -266 b 801 -288 792 -268 795 -282 b 948 -320 809 -297 880 -320 b 1237 -50 1092 -320 1237 -199 b 1164 217 1237 75 1218 122 z"},brassScoop:{x_min:1,x_max:320,y_min:-373,y_max:13,ha:386,o:"m 35 -537 b 461 -12 194 -518 461 -289 b 438 19 461 13 451 19 b 410 -9 425 19 413 9 b 35 -425 357 -366 92 -403 b 1 -482 13 -433 1 -438 l 1 -505 b 26 -537 1 -526 3 -537 z"},brassDoitMedium:{x_min:0,x_max:489,y_min:-40,y_max:346,ha:386,o:"m 33 -58 b 704 468 255 -58 683 186 b 681 498 704 494 693 498 b 654 471 668 498 658 488 b 33 55 550 118 91 76 b 0 -3 12 46 0 42 l 0 -26 b 24 -58 0 -46 1 -58 z"},brassFallLipShort:{x_min:1,x_max:293,y_min:-345,y_max:42,ha:387,o:"m 22 60 b 1 35 4 60 1 52 l 1 6 b 26 -50 3 -40 10 -43 b 32 -52 27 -50 30 -50 b 376 -469 85 -73 327 -111 b 400 -497 379 -487 387 -497 b 422 -467 412 -497 422 -491 b 32 60 422 -187 177 40 z"},brassLiftMedium:{x_min:0,x_max:811,y_min:0,y_max:852,ha:852,o:"m 1138 1220 b 1135 1225 1135 1223 1135 1224 b 1129 1227 1133 1227 1130 1227 b 1117 1207 1122 1227 1117 1212 l 1117 1201 b 1109 1164 1117 1187 1117 1172 b 1100 1156 1107 1161 1104 1158 b 959 1104 1058 1128 995 1140 b 929 1032 936 1081 929 1056 b 932 1007 929 1024 930 1015 b 923 976 932 995 930 985 l 914 971 b 773 919 873 942 809 955 b 743 847 750 896 743 870 b 746 821 743 838 744 829 b 737 791 746 809 744 799 l 729 783 b 588 733 687 756 624 769 b 557 661 564 710 557 684 b 560 635 557 652 559 644 b 552 605 560 624 559 612 l 543 598 b 402 547 501 570 438 583 b 372 475 379 524 372 498 b 374 449 372 467 373 458 b 366 419 374 438 373 426 l 357 412 b 216 361 315 384 252 397 b 186 289 193 338 186 312 b 189 264 186 281 187 272 b 180 233 189 252 187 240 b 171 226 177 232 174 229 b 30 176 130 199 66 212 b 0 104 7 153 0 128 b 33 0 0 88 14 0 b 49 17 40 0 49 10 b 71 63 52 35 56 49 b 212 115 102 95 154 59 b 239 186 230 134 239 160 b 236 210 239 194 238 202 b 256 249 239 225 243 236 b 397 301 288 281 340 245 b 425 372 416 320 425 346 b 422 396 425 380 423 387 b 442 435 425 410 429 422 b 583 487 474 467 526 431 b 611 557 602 505 611 531 b 608 582 611 566 609 573 b 628 621 611 596 615 608 b 769 672 660 652 711 618 b 796 743 788 691 796 717 b 793 768 796 752 795 759 b 814 806 796 782 801 793 b 955 858 845 838 897 804 b 982 929 973 877 982 903 b 979 953 982 937 981 945 b 999 992 982 968 986 979 b 1140 1045 1031 1024 1083 989 b 1168 1116 1161 1066 1168 1090 b 1138 1220 1168 1162 1145 1207 z"},brassFallRoughMedium:{x_min:0,x_max:811,y_min:0,y_max:852,ha:852,o:"m 30 1220 b 0 1116 23 1207 0 1162 b 27 1045 0 1090 7 1066 b 168 992 85 989 137 1024 b 189 953 181 979 186 968 b 186 929 187 945 186 937 b 213 858 186 903 194 877 b 354 806 271 804 323 838 b 374 768 367 793 372 782 b 372 743 373 759 372 752 b 399 672 372 717 380 691 b 540 621 456 618 508 652 b 560 582 553 608 557 596 b 557 557 559 573 557 566 b 585 487 557 531 566 505 b 726 435 642 431 694 467 b 746 396 739 422 743 410 b 743 372 744 387 743 380 b 770 301 743 346 752 320 b 912 249 828 245 880 281 b 932 210 924 236 929 225 b 929 186 930 202 929 194 b 956 115 929 160 937 134 b 1097 63 1014 59 1066 95 b 1119 17 1112 49 1116 35 b 1135 0 1119 10 1128 0 b 1168 104 1153 0 1168 91 b 1138 176 1168 128 1161 153 b 996 226 1102 212 1038 199 b 988 233 994 229 991 232 b 979 264 981 240 979 252 b 982 289 981 272 982 281 b 952 361 982 312 975 338 b 811 412 916 397 852 384 l 802 419 b 793 449 795 426 793 438 b 796 475 795 458 796 467 b 766 547 796 498 789 524 b 625 598 730 583 667 570 l 616 605 b 608 635 609 612 608 624 b 611 661 609 644 611 652 b 580 733 611 684 603 710 b 439 783 544 769 481 756 l 431 791 b 422 821 423 799 422 809 b 425 847 423 829 425 838 b 395 919 425 870 418 896 b 253 971 359 955 295 942 l 245 976 b 236 1007 238 985 236 995 b 239 1032 238 1015 239 1024 b 209 1104 239 1056 232 1081 b 68 1156 173 1140 109 1128 b 59 1164 63 1158 60 1161 b 50 1201 50 1172 50 1187 l 50 1207 b 39 1227 50 1212 46 1227 b 33 1225 37 1227 35 1227 b 30 1220 33 1224 33 1223 z"},brassBend:{x_min:0,x_max:392,y_min:0,y_max:282,ha:282,o:"m 282 0 b 552 72 369 0 456 23 b 564 92 560 75 564 84 l 564 383 b 541 406 564 395 554 406 b 518 383 528 406 518 395 l 518 107 b 282 46 435 65 357 46 b 46 107 207 46 130 65 l 46 383 b 23 406 46 395 36 406 b 0 383 10 406 0 395 l 0 92 b 13 72 0 84 4 75 b 282 0 108 23 196 0 z"},brassMuteClosed:{x_min:0,x_max:272,y_min:0,y_max:272,ha:272,o:"m 392 219 l 219 219 l 219 392 l 173 392 l 173 219 l 0 219 l 0 173 l 173 173 l 173 0 l 219 0 l 219 173 l 392 173 z"},brassMuteOpen:{x_min:0,x_max:304,y_min:0,y_max:304,ha:304,o:"m 219 0 b 438 219 340 0 438 98 b 219 438 438 340 340 438 b 0 219 98 438 0 340 b 219 0 0 98 98 0 z m 219 392 b 392 219 314 392 392 314 b 219 46 392 124 314 46 b 46 219 124 46 46 124 b 219 392 46 314 124 392 z"},brassFlip:{x_min:0,x_max:379,y_min:0,y_max:282,ha:282,o:"m 523 0 b 541 9 530 0 536 3 b 546 22 544 13 546 17 b 536 42 546 29 541 36 l 36 402 b 23 406 33 405 27 406 b 0 383 12 406 0 395 l 0 23 b 23 0 0 10 10 0 b 46 23 36 0 46 10 l 46 337 l 508 4 b 523 0 513 1 517 0 z"},brassJazzTurn:{x_min:0,x_max:620,y_min:0,y_max:245,ha:245,o:"m 792 190 b 765 176 780 179 772 176 b 740 190 755 176 747 183 b 629 325 727 202 644 312 b 593 347 616 338 605 347 b 562 334 583 346 575 344 b 528 298 549 323 539 310 l 406 176 b 389 168 406 176 399 168 b 374 176 384 168 379 170 b 245 325 360 192 245 325 b 200 353 232 343 219 351 b 168 340 190 353 181 350 l 17 156 b 0 121 10 147 0 132 b 16 107 0 114 4 108 b 84 143 26 107 76 137 b 118 160 92 150 108 160 b 141 143 125 160 131 154 b 265 10 147 135 253 24 b 294 0 271 3 282 0 b 321 7 305 0 315 3 b 498 160 321 7 478 158 b 521 143 505 160 513 154 b 647 10 528 135 635 24 b 675 0 652 3 664 0 b 703 7 687 0 697 3 b 874 186 713 16 855 164 b 893 220 881 196 893 212 b 873 245 890 235 883 243 b 796 194 847 245 815 213 z"},brassSmear:{x_min:1,x_max:306,y_min:0,y_max:170,ha:170,o:"m 193 79 b 308 0 219 50 264 0 b 439 117 396 0 438 102 b 439 120 439 118 439 118 l 441 125 b 441 128 441 127 441 127 b 433 141 441 135 439 141 b 416 130 429 141 423 137 b 343 94 390 107 370 94 b 269 153 315 94 294 121 l 265 158 b 144 245 239 190 180 245 b 6 134 62 245 10 143 b 1 114 3 125 1 118 b 7 107 1 108 4 107 b 36 122 13 107 22 112 b 92 151 55 137 65 151 b 183 89 125 151 161 112 b 189 84 184 88 187 86 z"},stringsDownBow:{x_min:0,x_max:312,y_min:0,y_max:318,ha:318,o:"m 37 458 b 0 420 17 458 0 441 l 0 17 b 17 0 0 7 9 0 l 37 0 b 55 17 46 0 55 7 l 55 253 b 225 278 55 269 140 278 b 395 253 310 278 395 269 l 395 17 b 413 0 395 7 403 0 l 432 0 b 449 17 441 0 449 7 l 449 420 b 412 458 449 441 432 458 z"},stringsUpBow:{x_min:1,x_max:249,y_min:1,y_max:495,ha:494,o:"m 181 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 z"},stringsHarmonic:{x_min:0,x_max:200,y_min:0,y_max:200,ha:200,o:"m 288 144 b 144 288 288 225 223 288 b 0 144 65 288 0 225 b 144 0 0 65 65 0 b 288 144 223 0 288 65 z m 144 249 b 249 144 203 249 249 203 b 144 39 249 86 203 39 b 39 144 86 39 39 86 b 144 249 39 203 86 249 z"},pluckedSnapPizzicatoAbove:{x_min:0,x_max:200,y_min:0,y_max:300,ha:300,o:"m 0 144 b 144 0 0 63 65 0 b 288 144 223 0 288 63 b 167 285 288 215 235 275 l 167 432 l 121 432 l 121 285 b 0 144 52 275 0 215 z m 121 246 l 121 144 l 167 144 l 167 246 b 249 144 213 236 249 193 b 144 39 249 85 202 39 b 39 144 85 39 39 85 b 121 246 39 193 73 236 z"},pluckedSnapPizzicatoBelow:{x_min:0,x_max:200,y_min:0,y_max:300,ha:300,o:"m 288 288 b 144 432 288 369 223 432 b 0 288 65 432 0 369 b 121 145 0 216 52 157 l 121 0 l 167 0 l 167 145 b 288 288 235 157 288 216 z m 167 186 l 167 288 l 121 288 l 121 186 b 39 288 75 196 39 238 b 144 393 39 347 86 393 b 249 288 203 393 249 347 b 167 186 249 238 215 196 z"},pluckedLeftHandPizzicato:{x_min:0,x_max:272,y_min:0,y_max:272,ha:272,o:"m 392 219 l 219 219 l 219 392 l 173 392 l 173 219 l 0 219 l 0 173 l 173 173 l 173 0 l 219 0 l 219 173 l 392 173 z"},keyboardPedalPed:{x_min:0,x_max:1019,y_min:-8,y_max:555,ha:563,o:"m 413 799 b 179 749 327 798 261 789 b 0 517 107 713 0 632 b 122 376 0 454 37 376 b 240 540 189 376 240 452 b 225 586 240 579 233 586 b 204 549 213 586 212 573 b 138 480 199 527 181 480 b 85 549 96 480 85 517 l 85 554 b 353 762 89 690 230 762 b 373 752 364 762 373 760 b 351 708 373 740 360 723 b 274 546 330 675 274 585 b 353 416 274 508 333 444 b 412 304 372 390 412 351 b 382 228 412 275 403 256 b 334 190 363 202 361 200 b 147 29 271 167 147 88 b 196 -12 147 4 171 -12 b 343 108 239 -12 279 33 l 363 132 b 387 150 370 141 376 150 b 543 -4 445 150 467 -4 b 631 42 567 -4 586 0 l 668 78 b 685 89 674 84 680 89 b 696 75 688 89 690 86 b 809 -9 717 29 753 -9 b 946 66 854 -9 894 13 b 988 107 971 92 981 107 b 1002 89 994 107 996 99 b 1152 -4 1030 36 1077 -4 b 1329 248 1238 -4 1329 82 b 792 717 1329 556 1047 665 b 766 720 785 719 775 720 b 747 703 752 720 747 711 b 780 680 747 693 756 685 b 1223 222 1028 621 1223 504 b 1152 39 1223 122 1205 39 b 1073 229 1104 39 1073 132 b 1132 423 1073 314 1086 377 b 1142 442 1140 432 1142 436 b 1126 458 1142 451 1136 458 b 1093 446 1119 458 1109 455 b 975 216 1022 408 975 337 l 975 190 b 943 121 975 160 972 150 b 852 69 899 76 877 69 b 776 148 816 69 786 117 b 773 163 775 154 773 158 b 786 177 773 167 776 170 l 801 187 b 937 366 867 235 937 284 b 844 454 937 422 900 454 b 665 217 711 454 665 331 b 671 153 665 197 667 176 l 671 147 b 662 134 671 143 670 140 b 605 111 639 118 625 111 b 521 160 572 111 546 135 b 451 203 497 184 474 197 b 426 212 435 207 426 206 b 436 230 426 216 429 220 b 510 389 464 269 510 340 b 429 521 510 435 480 462 b 369 629 387 570 369 599 b 402 720 369 648 384 691 b 462 763 425 759 446 763 b 611 624 540 763 611 704 b 564 575 611 592 590 575 b 501 602 540 575 520 582 b 474 622 492 611 487 622 b 459 603 465 622 459 615 b 603 471 459 570 510 471 b 711 588 670 471 711 524 b 422 799 711 742 554 799 z m 815 403 b 848 343 838 403 848 383 b 780 226 848 295 824 261 b 765 217 773 220 768 217 b 759 228 762 217 759 220 b 756 282 757 245 756 262 b 815 403 756 346 772 403 z m 1405 124 b 1344 62 1369 124 1344 98 b 1405 0 1344 26 1369 0 b 1467 62 1441 0 1467 26 b 1405 124 1467 98 1441 124 z"},keyboardPedalUp:{x_min:0,x_max:450,y_min:0,y_max:450,ha:450,o:"m 582 396 b 516 367 554 396 533 384 b 465 340 495 347 487 340 l 458 340 b 412 377 432 340 412 348 b 432 409 412 387 419 396 l 438 415 b 490 429 451 428 464 429 b 575 501 534 429 575 452 b 501 575 575 541 541 575 b 429 490 452 575 429 534 b 415 438 429 464 428 451 l 409 432 b 377 412 396 419 387 412 b 340 458 348 412 340 432 l 340 465 b 367 516 340 487 347 495 b 396 582 384 533 396 554 b 324 648 396 625 363 648 b 252 582 285 648 252 625 b 281 516 252 554 264 533 b 308 465 301 495 308 487 l 308 458 b 271 412 308 432 300 412 b 239 432 261 412 252 419 l 233 438 b 219 490 220 451 219 464 b 147 575 219 534 196 575 b 73 501 107 575 73 541 b 158 429 73 452 114 429 b 210 415 184 429 197 428 l 216 409 b 236 377 229 396 236 387 b 190 340 236 348 216 340 l 183 340 b 132 367 161 340 153 347 b 66 396 115 384 94 396 b 0 324 23 396 0 363 b 66 252 0 285 23 252 b 132 281 94 252 115 264 b 183 308 153 301 161 308 l 190 308 b 236 271 216 308 236 300 b 216 239 236 261 229 252 l 210 233 b 158 219 197 220 184 219 b 73 147 114 219 73 196 b 147 73 73 107 107 73 b 219 158 196 73 219 114 b 233 210 219 184 220 197 l 239 216 b 271 236 252 229 261 236 b 308 190 300 236 308 216 l 308 183 b 281 132 308 161 301 153 b 252 66 264 115 252 94 b 324 0 252 23 285 0 b 396 66 363 0 396 23 b 367 132 396 94 384 115 b 340 183 347 153 340 161 l 340 190 b 377 236 340 216 348 236 b 409 216 387 236 396 229 l 415 210 b 429 158 428 197 429 184 b 501 73 429 114 452 73 b 575 147 541 73 575 107 b 490 219 575 196 534 219 b 438 233 464 219 451 220 l 432 239 b 412 271 419 252 412 261 b 458 308 412 300 432 308 l 465 308 b 516 281 487 308 495 301 b 582 252 533 264 554 252 b 648 324 625 252 648 285 b 582 396 648 363 625 396 z m 324 271 b 271 324 291 271 271 291 b 324 377 271 357 291 377 b 377 324 357 377 377 357 b 324 271 377 291 357 271 z"},pictChokeCymbal:{x_min:1,x_max:152,y_min:2,y_max:251,ha:249,o:"m 104 361 b 1 271 42 361 1 321 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 17 32 29 26 26 l 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 z"},wiggleArpeggiatoUp:{x_min:-33,x_max:292,y_min:0,y_max:119,ha:119,o:"m 130 171 b -39 68 16 171 -14 91 b -48 53 -45 62 -48 58 b -29 42 -48 46 -39 42 b -10 46 -23 42 -16 43 b 56 63 12 56 29 63 b 248 0 121 63 135 0 b 419 127 361 0 410 104 b 420 132 420 130 420 131 b 412 140 420 137 416 140 b 386 130 403 140 392 134 b 334 107 367 117 353 107 b 318 108 330 107 324 107 b 240 138 289 112 265 128 b 130 171 209 153 168 171 z"},arrowheadBlackUp:{x_min:0,x_max:228,y_min:0,y_max:299,ha:299,o:"m 166 431 b 0 20 111 274 0 30 b 16 0 0 12 6 0 l 17 1 b 166 50 43 16 160 50 b 310 1 171 50 289 13 l 311 0 b 328 20 321 0 328 12 b 166 431 328 30 220 274 z"},arrowheadBlackDown:{x_min:0,x_max:228,y_min:0,y_max:299,ha:299,o:"m 166 0 b 328 410 220 157 328 400 b 311 431 328 419 321 431 l 310 429 b 166 380 289 418 171 380 b 17 429 160 380 43 415 l 16 431 b 0 410 6 431 0 419 b 166 0 0 400 111 157 z"},arpeggiatoUp:{x_min:1,x_max:229,y_min:7,y_max:1511,ha:1504,o:"m 219 1848 l 330 1848 l 164 2176 l 1 1848 l 121 1848 b 92 1778 115 1822 101 1800 l 89 1773 b 59 1668 75 1741 59 1702 b 96 1555 59 1614 76 1580 b 99 1551 98 1554 99 1551 l 102 1547 b 124 1496 115 1531 124 1515 b 122 1482 124 1492 124 1488 b 92 1404 118 1453 102 1428 b 59 1293 78 1372 59 1332 b 105 1172 59 1234 81 1198 b 124 1120 118 1155 124 1143 l 122 1113 b 122 1110 122 1113 122 1112 b 92 1032 118 1081 102 1057 b 59 922 78 1001 59 960 b 115 792 59 855 86 816 b 124 760 121 782 124 773 b 122 744 124 756 124 750 b 92 667 118 716 102 693 b 59 556 78 635 59 595 b 108 433 59 495 82 458 b 124 389 117 420 124 408 b 122 374 124 384 124 379 b 92 298 118 346 102 323 l 89 292 b 59 186 75 261 59 222 b 163 19 59 73 140 42 b 177 10 168 13 173 10 b 189 29 184 10 189 19 b 184 48 189 35 187 42 b 167 114 174 69 167 85 b 230 305 167 179 229 193 b 181 423 230 357 209 396 b 167 484 173 442 167 458 b 230 675 167 547 229 563 b 179 796 230 729 206 769 b 167 850 171 812 167 827 b 230 1040 167 913 229 929 b 183 1158 230 1092 209 1130 b 167 1220 173 1178 167 1194 b 230 1411 167 1284 229 1300 b 186 1526 230 1462 210 1499 b 167 1594 176 1529 167 1584 b 230 1786 167 1659 229 1673 b 219 1848 230 1809 226 1829 z"},arpeggiatoDown:{x_min:1,x_max:229,y_min:-4,y_max:1500,ha:1504,o:"m 219 323 b 230 384 226 341 230 361 b 167 576 229 497 167 511 b 186 644 167 586 176 641 b 230 759 210 671 230 708 b 167 950 229 870 167 886 b 183 1012 167 976 173 992 b 230 1130 209 1040 230 1079 b 167 1320 229 1241 167 1257 b 179 1374 167 1344 171 1358 b 230 1495 206 1401 230 1441 b 167 1686 229 1607 167 1623 b 181 1747 167 1712 173 1728 b 230 1865 209 1774 230 1813 b 167 2056 229 1977 167 1992 b 184 2123 167 2085 174 2101 b 189 2141 187 2128 189 2136 b 177 2160 189 2151 184 2160 b 163 2151 173 2160 168 2157 b 59 1984 140 2128 59 2097 b 89 1878 59 1948 75 1909 l 92 1872 b 122 1796 102 1848 118 1824 b 124 1781 124 1791 124 1786 b 108 1737 124 1763 117 1750 b 59 1614 82 1712 59 1675 b 92 1503 59 1575 78 1535 b 122 1426 102 1477 118 1454 b 124 1410 124 1420 124 1414 b 115 1378 124 1397 121 1388 b 59 1248 86 1354 59 1315 b 92 1138 59 1210 78 1169 b 122 1060 102 1113 118 1089 b 122 1057 122 1058 122 1058 l 124 1050 b 105 998 124 1027 118 1015 b 59 877 81 972 59 936 b 92 766 59 838 78 798 b 122 688 102 742 118 717 b 124 674 124 683 124 678 b 102 624 124 655 115 639 l 99 619 b 96 615 99 619 98 616 b 59 503 76 590 59 556 b 89 397 59 468 75 429 l 92 392 b 121 323 101 370 115 348 l 1 323 l 164 -6 l 330 323 z"},repeat1Bar:{x_min:0,x_max:532,y_min:-250,y_max:279,ha:529,o:"m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 675 -71 b 586 -161 626 -71 586 -111 b 675 -251 586 -210 626 -251 b 766 -161 726 -251 766 -210 b 675 -71 766 -111 726 -71 z"},repeat2Bars:{x_min:0,x_max:762,y_min:-250,y_max:279,ha:529,o:"m 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 b 343 -360 331 -356 336 -360 l 485 -360 b 516 -340 498 -360 508 -348 z m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 1007 -71 b 917 -161 958 -71 917 -111 b 1007 -251 917 -210 958 -251 b 1097 -161 1057 -251 1097 -210 b 1007 -71 1097 -111 1057 -71 z"},repeat4Bars:{x_min:0,x_max:1232,y_min:-250,y_max:279,ha:529,o:"m 1767 380 b 1774 395 1771 386 1774 390 b 1765 402 1774 399 1771 402 l 1613 402 b 1587 380 1604 402 1597 393 l 1012 -340 b 1008 -350 1009 -343 1008 -347 b 1020 -360 1008 -356 1012 -360 l 1162 -360 b 1192 -340 1175 -360 1185 -348 z m 1436 380 b 1443 395 1440 386 1443 390 b 1434 402 1443 399 1440 402 l 1282 402 b 1256 380 1273 402 1266 393 l 681 -340 b 677 -350 678 -343 677 -347 b 688 -360 677 -356 681 -360 l 831 -360 b 861 -340 844 -360 854 -348 z m 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 b 343 -360 331 -356 336 -360 l 485 -360 b 516 -340 498 -360 508 -348 z m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 1683 -71 b 1594 -161 1634 -71 1594 -111 b 1683 -251 1594 -210 1634 -251 b 1774 -161 1734 -251 1774 -210 b 1683 -71 1774 -111 1734 -71 z"},repeatBarSlash:{x_min:0,x_max:532,y_min:-250,y_max:279,ha:529,o:"m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z"},csymDiminished:{x_min:0,x_max:473,y_min:0,y_max:473,ha:473,o:"m 341 681 b 0 341 153 681 0 530 b 341 0 0 153 153 0 b 681 341 530 0 681 153 b 341 681 681 530 530 681 z m 341 618 b 618 341 495 618 618 495 b 341 63 618 189 494 63 b 63 341 187 63 63 187 b 341 618 63 494 189 618 z"},csymHalfDiminished:{x_min:-16,x_max:488,y_min:-15,y_max:489,ha:504,o:"m 703 660 l 658 704 l 557 603 b 340 681 498 652 422 681 b -1 341 151 681 -1 530 b 78 124 -1 259 29 183 l -23 23 l 22 -22 l 122 79 b 340 0 181 30 258 0 b 680 341 528 0 680 153 b 602 559 680 423 651 500 z m 62 341 b 340 618 62 494 187 618 b 513 559 403 618 464 598 l 122 168 b 62 341 84 217 62 278 z m 616 341 b 340 63 616 189 492 63 b 167 124 276 63 216 85 l 557 514 b 616 341 596 465 616 405 z"},csymAugmented:{x_min:0,x_max:395,y_min:1,y_max:396,ha:395,o:"m 569 318 l 317 318 l 317 570 l 253 570 l 253 318 l 0 318 l 0 255 l 253 255 l 253 1 l 317 1 l 317 255 l 569 255 z"},csymMajorSeventh:{x_min:0,x_max:558,y_min:1,y_max:477,ha:476,o:"m 402 687 l 0 1 l 804 1 z m 402 562 l 693 65 l 111 65 z"},csymMinor:{x_min:0,x_max:325,y_min:216,y_max:260,ha:44,o:"m 468 374 l 0 374 l 0 311 l 468 311 z"},csymParensLeftTall:{x_min:1,x_max:185,y_min:0,y_max:997,ha:997,o:"m 266 48 b 261 65 266 55 264 62 b 92 719 157 212 92 400 b 262 1371 92 1037 154 1228 b 266 1394 266 1378 266 1394 l 266 1424 b 264 1436 266 1431 266 1436 b 259 1434 262 1436 259 1434 b 1 719 84 1261 1 1011 b 259 1 1 429 79 177 b 264 0 261 0 262 0 b 266 9 265 0 266 6 z"},csymParensRightTall:{x_min:-20,x_max:164,y_min:0,y_max:997,ha:997,o:"m -29 9 b -26 0 -29 6 -27 0 b -22 1 -24 0 -23 0 b 236 719 158 177 236 429 b -22 1434 236 1011 154 1261 b -26 1436 -22 1434 -24 1436 b -29 1424 -29 1436 -29 1431 l -29 1394 b -24 1371 -29 1394 -29 1378 b 145 719 84 1228 145 1037 b -23 65 145 400 81 212 b -29 48 -26 62 -29 55 z"},csymBracketLeftTall:{x_min:0,x_max:155,y_min:0,y_max:1e3,ha:1e3,o:"m 217 0 b 223 9 220 0 223 4 l 223 37 b 217 46 223 42 220 46 l 92 46 l 92 1394 l 217 1394 b 223 1403 220 1394 223 1398 l 223 1431 b 217 1440 223 1436 220 1440 l 6 1440 b 0 1436 3 1440 0 1439 l 0 4 b 6 0 0 1 3 0 z"},csymBracketRightTall:{x_min:1,x_max:156,y_min:0,y_max:1e3,ha:1e3,o:"m 219 0 b 225 4 222 0 225 1 l 225 1436 b 219 1440 225 1439 222 1440 l 7 1440 b 1 1431 4 1440 1 1436 l 1 1403 b 7 1394 1 1398 4 1394 l 132 1394 l 132 46 l 7 46 b 1 37 4 46 1 42 l 1 9 b 7 0 1 4 4 0 z"},csymParensLeftVeryTall:{x_min:0,x_max:122,y_min:0,y_max:993,ha:993,o:"m 176 32 b 171 49 176 39 174 46 b 60 716 104 194 60 399 b 173 1382 60 1032 101 1241 b 176 1405 176 1390 176 1405 l 176 1427 b 173 1430 176 1428 174 1430 b 0 716 40 1297 0 978 b 170 3 0 428 50 179 b 171 0 170 1 170 0 b 176 6 173 0 176 4 z"},csymParensRightVeryTall:{x_min:-15,x_max:107,y_min:0,y_max:993,ha:993,o:"m -22 6 b -17 0 -22 4 -19 0 b -16 3 -16 0 -16 1 b 154 716 104 179 154 428 b -19 1430 154 978 114 1297 b -22 1427 -20 1430 -22 1428 l -22 1405 b -19 1382 -22 1405 -22 1390 b 94 716 53 1241 94 1032 b -17 49 94 399 50 194 b -22 32 -20 46 -22 39 z"},csymDiagonalArrangementSlash:{x_min:0,x_max:999,y_min:0,y_max:1e3,ha:1e3,o:"m 1439 1380 l 1377 1440 l 0 60 l 62 0 z"},accSagittal5v7KleismaUp:{x_min:0,x_max:156,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 -35 b 135 -112 68 -86 99 -112 b 225 68 194 -112 225 -53 l 180 68 b 144 -4 180 20 168 -4 b 122 0 138 -4 131 -3 b 23 248 86 14 52 96 l 0 248 z"},accSagittal5v7KleismaDown:{x_min:0,x_max:156,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 23 -248 b 122 0 52 -96 86 -14 b 144 4 131 3 138 4 b 180 -68 168 4 180 -20 l 225 -68 b 135 112 225 53 194 112 b 45 35 99 112 68 86 l 45 517 l 0 517 z"},accSagittal5CommaUp:{x_min:0,x_max:156,y_min:-359,y_max:172,ha:531,o:"m 225 -517 l 225 248 l 203 248 l 0 -112 l 0 -284 l 180 33 l 180 -517 z"},accSagittal5CommaDown:{x_min:0,x_max:156,y_min:-172,y_max:359,ha:531,o:"m 180 517 l 180 -33 l 0 284 l 0 112 l 203 -248 l 225 -248 l 225 517 z"},accSagittal7CommaUp:{x_min:0,x_max:156,y_min:-359,y_max:172,ha:531,o:"m 0 248 l 0 -517 l 45 -517 l 45 112 l 89 112 b 180 -68 150 112 180 53 l 180 -248 l 225 -248 l 225 68 b 135 248 225 187 194 248 z"},accSagittal7CommaDown:{x_min:0,x_max:156,y_min:-172,y_max:359,ha:531,o:"m 135 -248 b 225 -68 194 -248 225 -187 l 225 248 l 180 248 l 180 68 b 89 -112 180 -53 150 -112 l 45 -112 l 45 517 l 0 517 l 0 -248 z"},accSagittal25SmallDiesisUp:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -157 l 0 -259 l 315 -89 l 315 -517 l 360 -517 l 360 248 l 337 248 l 0 68 l 0 -33 l 315 135 l 315 10 z"},accSagittal25SmallDiesisDown:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 315 -10 l 315 -135 l 0 33 l 0 -68 l 337 -248 l 360 -248 l 360 517 l 315 517 l 315 89 l 0 259 l 0 157 z"},accSagittal35MediumDiesisUp:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -68 330 112 360 53 l 360 -248 l 405 -248 l 405 68 b 315 248 405 187 374 248 l 203 248 l 0 -112 z"},accSagittal35MediumDiesisDown:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 0 112 l 203 -248 l 315 -248 b 405 -68 374 -248 405 -187 l 405 248 l 360 248 l 360 68 b 271 -112 360 -53 330 -112 l 225 -112 l 225 517 l 180 517 l 180 -33 l 0 284 z"},accSagittal11MediumDiesisUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 225 53 l 225 -517 l 271 -517 l 271 53 l 495 -248 l 495 -89 l 248 248 l 0 -89 l 0 -248 z"},accSagittal11MediumDiesisDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 248 l 0 89 l 248 -248 l 495 89 l 495 248 l 271 -53 l 271 517 l 225 517 l 225 -53 z"},accSagittal11LargeDiesisUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 112 l 315 112 b 449 -68 405 112 449 53 l 449 -248 l 495 -248 l 495 68 b 360 248 495 187 449 248 l 135 248 b 0 68 45 248 0 187 z"},accSagittal11LargeDiesisDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 135 -248 0 -187 45 -248 l 360 -248 b 495 -68 449 -248 495 -187 l 495 248 l 449 248 l 449 68 b 315 -112 449 -53 405 -112 l 271 -112 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z"},accSagittal35LargeDiesisUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 l 540 112 l 540 274 l 271 -58 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z"},accSagittal35LargeDiesisDown:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 l 540 112 l 540 274 l 269 -58 l 269 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z"},accSagittalSharp25SDown:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 0 68 b 112 -112 0 -53 36 -112 l 135 -112 l 135 -517 l 180 -517 l 180 -89 b 248 26 206 -65 229 -27 b 315 -89 264 -27 287 -65 l 315 -517 l 360 -517 l 360 -112 l 383 -112 b 495 68 458 -112 495 -53 l 449 68 b 399 -4 449 20 433 -4 b 248 248 297 -4 261 171 b 122 0 216 96 176 14 b 94 -4 112 -3 102 -4 b 45 68 60 -4 45 20 z"},accSagittalFlat25SUp:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 45 -68 b 94 4 45 -20 60 4 b 122 0 102 4 112 3 b 248 -248 176 -14 216 -96 b 399 4 261 -171 297 4 b 449 -68 433 4 449 -20 l 495 -68 b 383 112 495 53 458 112 l 360 112 l 360 517 l 315 517 l 315 89 b 248 -26 287 65 264 27 b 180 89 229 27 206 65 l 180 517 l 135 517 l 135 112 l 112 112 b 0 -68 36 112 0 53 z"},accSagittalSharp7CDown:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 112 l 89 112 b 180 104 124 112 154 109 l 180 -517 l 225 -517 l 225 89 b 315 -68 285 60 315 9 l 315 -248 l 360 -248 l 360 68 b 135 248 360 187 285 248 l 0 248 z"},accSagittalFlat7CUp:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 135 -248 b 360 -68 285 -248 360 -187 l 360 248 l 315 248 l 315 68 b 225 -89 315 -9 285 -60 l 225 517 l 180 517 l 180 -104 b 89 -112 154 -109 124 -112 l 45 -112 l 45 517 l 0 517 z"},accSagittalSharp5CDown:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 45 -517 l 45 71 l 180 -56 l 180 -517 l 225 -517 l 225 -98 l 405 -268 l 405 -112 l 23 248 l 0 248 l 0 -517 z"},accSagittalFlat5CUp:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 0 517 l 0 -248 l 23 -248 l 405 112 l 405 268 l 225 98 l 225 517 l 180 517 l 180 56 l 45 -71 l 45 517 z"},accSagittalSharp5v7kDown:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 0 -112 l 0 -276 l 135 -82 l 135 -517 l 180 -517 l 180 -17 l 271 112 l 315 112 l 315 -517 l 360 -517 l 360 107 b 449 -68 420 89 449 30 l 449 -248 l 495 -248 l 495 68 b 360 248 495 189 449 248 l 248 248 z"},accSagittalFlat5v7kUp:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 248 -248 l 360 -248 b 495 -68 449 -248 495 -189 l 495 248 l 449 248 l 449 68 b 360 -107 449 -30 420 -89 l 360 517 l 315 517 l 315 -112 l 271 -112 l 180 17 l 180 517 l 135 517 l 135 82 l 0 276 l 0 112 z"},accSagittalSharp:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 180 -53 l 180 -517 l 225 -517 l 225 0 l 292 85 l 360 0 l 360 -517 l 405 -517 l 405 -53 l 585 -274 l 585 -112 l 292 248 l 0 -112 l 0 -274 z"},accSagittalFlat:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 274 l 0 112 l 292 -248 l 585 112 l 585 274 l 405 53 l 405 517 l 360 517 l 360 0 l 292 -85 l 225 0 l 225 517 l 180 517 l 180 53 z"},accSagittalSharp5v7kUp:{x_min:0,x_max:312,y_min:-361,y_max:172,ha:533,o:"m 45 -517 l 45 -10 b 135 -92 68 -48 98 -75 l 135 -520 l 180 -520 l 180 -108 b 248 -115 203 -112 225 -115 b 271 -112 256 -115 264 -115 l 271 -517 l 315 -517 l 315 -107 b 449 68 405 -89 449 -30 l 405 68 b 297 -4 405 19 369 -4 b 23 248 131 -4 56 85 l 0 248 l 0 -517 z"},accSagittalFlat5v7kDown:{x_min:0,x_max:312,y_min:-172,y_max:361,ha:533,o:"m 0 517 l 0 -248 l 23 -248 b 297 4 56 -85 131 4 b 405 -68 369 4 405 -19 l 449 -68 b 315 107 449 30 405 89 l 315 517 l 271 517 l 271 112 b 248 115 264 115 256 115 b 180 108 225 115 203 112 l 180 520 l 135 520 l 135 92 b 45 10 98 75 68 48 l 45 517 z"},accSagittalSharp5CUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 -266 l 135 -153 l 135 -517 l 180 -517 l 180 -115 l 271 -39 l 271 -517 l 315 -517 l 315 0 l 405 75 l 405 -517 l 449 -517 l 449 248 l 428 248 l 0 -112 z"},accSagittalFlat5CDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 112 l 428 -248 l 449 -248 l 449 517 l 405 517 l 405 -75 l 315 0 l 315 517 l 271 517 l 271 39 l 180 115 l 180 517 l 135 517 l 135 153 l 0 266 z"},accSagittalSharp7CUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 112 l 135 112 l 135 -517 l 180 -517 l 180 108 b 271 89 213 105 243 99 l 271 -517 l 315 -517 l 315 73 b 405 -68 374 45 405 -3 l 405 -248 l 449 -248 l 449 68 b 135 248 449 187 346 248 l 0 248 z"},accSagittalFlat7CDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 135 -248 b 449 -68 346 -248 449 -187 l 449 248 l 405 248 l 405 68 b 315 -73 405 3 374 -45 l 315 517 l 271 517 l 271 -89 b 180 -108 243 -99 213 -105 l 180 517 l 135 517 l 135 -112 l 45 -112 l 45 517 l 0 517 z"},accSagittalSharp25SUp:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 0 -30 l 495 143 l 495 14 l 0 -157 l 0 -255 l 225 -177 l 225 -517 l 271 -517 l 271 -161 l 360 -130 l 360 -517 l 405 -517 l 405 -115 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 517 248 l 0 68 z"},accSagittalFlat25SDown:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 -68 l 517 -248 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 115 l 405 517 l 360 517 l 360 130 l 271 161 l 271 517 l 225 517 l 225 177 l 0 255 l 0 157 l 495 -14 l 495 -143 l 0 30 z"},accSagittalSharp35MUp:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 0 -112 l 0 -274 l 135 -108 l 135 -517 l 180 -517 l 180 -53 l 271 58 l 271 -517 l 315 -517 l 315 112 l 360 112 b 405 109 376 112 390 112 l 405 -517 l 449 -517 l 449 96 b 540 -68 510 72 540 17 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 z"},accSagittalFlat35MDown:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 292 -248 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 449 -96 540 -17 510 -72 l 449 517 l 405 517 l 405 -109 b 360 -112 390 -112 376 -112 l 315 -112 l 315 517 l 271 517 l 271 -58 l 180 53 l 180 517 l 135 517 l 135 108 l 0 274 l 0 112 z"},accSagittalSharp11MUp:{x_min:0,x_max:469,y_min:-359,y_max:172,ha:531,o:"m 0 -112 l 0 -271 l 180 -79 l 180 -517 l 225 -517 l 225 -30 l 315 65 l 315 -517 l 360 -517 l 360 65 l 449 -30 l 449 -517 l 495 -517 l 495 -79 l 675 -271 l 675 -112 l 337 248 z"},accSagittalFlat11MDown:{x_min:0,x_max:469,y_min:-172,y_max:359,ha:531,o:"m 337 -248 l 675 112 l 675 271 l 495 79 l 495 517 l 449 517 l 449 30 l 360 -65 l 360 517 l 315 517 l 315 -65 l 225 30 l 225 517 l 180 517 l 180 79 l 0 271 l 0 112 z"},accSagittalSharp11LUp:{x_min:0,x_max:469,y_min:-359,y_max:172,ha:531,o:"m 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 112 l 449 112 l 449 -517 l 495 -517 l 495 104 b 631 -68 585 82 631 26 l 631 -248 l 675 -248 l 675 68 b 449 248 675 187 600 248 l 225 248 b 0 68 75 248 0 187 z"},accSagittalFlat11LDown:{x_min:0,x_max:469,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 225 -248 0 -187 75 -248 l 449 -248 b 675 -68 600 -248 675 -187 l 675 248 l 631 248 l 631 68 b 495 -104 631 -26 585 -82 l 495 517 l 449 517 l 449 -112 l 360 -112 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z"},accSagittalSharp35LUp:{x_min:0,x_max:500,y_min:-359,y_max:172,ha:531,o:"m 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 71 l 452 -17 l 452 -517 l 495 -517 l 495 -56 l 720 -268 l 720 -112 l 337 248 l 225 248 b 0 68 75 248 0 187 z"},accSagittalFlat35LDown:{x_min:0,x_max:500,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 l 720 112 l 720 268 l 495 56 l 495 517 l 452 517 l 452 17 l 360 -71 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z"},accSagittalDoubleSharp25SDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 0 68 b 135 -112 0 -53 45 -112 b 243 -62 180 -112 215 -95 l 89 -503 l 143 -517 l 292 -82 l 445 -517 l 495 -503 l 343 -62 b 449 -112 372 -95 408 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 315 148 b 112 -4 274 148 236 -4 b 45 68 68 -4 45 20 z"},accSagittalDoubleFlat25SUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 45 -68 b 112 4 45 -20 68 4 b 292 -248 236 4 274 -148 b 475 4 315 -148 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 b 343 62 408 112 372 95 l 495 503 l 445 517 l 292 82 l 143 517 l 89 503 l 243 62 b 135 112 215 95 180 112 b 0 -68 45 112 0 53 z"},accSagittalDoubleSharp7CDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 0 -503 l 52 -517 l 203 -82 l 354 -517 l 405 -503 l 230 0 l 271 108 b 495 -68 420 92 495 35 l 495 -248 l 540 -248 l 540 68 b 225 248 540 187 435 248 l 89 248 l 89 112 l 135 112 l 174 0 z m 213 112 l 203 82 l 192 112 z"},accSagittalDoubleFlat7CUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 174 0 l 135 -112 l 89 -112 l 89 -248 l 225 -248 b 540 -68 435 -248 540 -187 l 540 248 l 495 248 l 495 68 b 271 -108 495 -35 420 -92 l 230 0 l 405 503 l 354 517 l 203 82 l 52 517 l 0 503 z m 192 -112 l 203 -82 l 213 -112 z"},accSagittalDoubleSharp5CDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 405 -503 l 230 0 l 232 4 l 585 -264 l 585 -112 l 112 248 l 89 248 l 89 112 l 151 68 l 174 0 l 0 -503 l 52 -517 l 203 -82 l 354 -517 z"},accSagittalDoubleFlat5CUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 354 517 l 203 82 l 52 517 l 0 503 l 174 0 l 151 -68 l 89 -112 l 89 -248 l 112 -248 l 585 112 l 585 264 l 232 -4 l 230 0 l 405 503 z"},accSagittalDoubleSharp5v7kDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 0 -274 l 252 35 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 360 112 b 540 -68 480 112 540 53 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 l 0 -112 z"},accSagittalDoubleFlat5v7kUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 112 l 292 -248 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 360 -112 540 -53 480 -112 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 252 -35 l 0 274 z"},accSagittalDoubleSharp:{x_min:0,x_max:469,y_min:-359,y_max:172,ha:531,o:"m 540 -503 l 366 0 l 380 45 l 675 -271 l 675 -112 l 337 248 l 0 -112 l 0 -271 l 295 45 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 z"},accSagittalDoubleFlat:{x_min:0,x_max:469,y_min:-172,y_max:359,ha:531,o:"m 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 295 -45 l 0 271 l 0 112 l 337 -248 l 675 112 l 675 271 l 380 -45 l 366 0 l 540 503 z"},accSagittal7v11KleismaUp:{x_min:0,x_max:219,y_min:-359,y_max:172,ha:531,o:"m 68 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 -45 b 248 -112 200 -89 225 -112 b 315 68 292 -112 315 -53 l 271 68 b 248 -4 271 20 264 -4 b 236 0 245 -4 240 -3 b 157 248 213 14 187 96 b 78 0 127 96 101 14 b 65 -4 73 -3 68 -4 b 45 68 50 -4 45 20 l 0 68 b 68 -112 0 -53 23 -112 z"},accSagittal7v11KleismaDown:{x_min:0,x_max:219,y_min:-172,y_max:359,ha:531,o:"m 68 112 b 0 -68 23 112 0 53 l 45 -68 b 65 4 45 -20 50 4 b 78 0 68 4 73 3 b 157 -248 101 -14 127 -96 b 236 0 187 -96 213 -14 b 248 4 240 3 245 4 b 271 -68 264 4 271 -20 l 315 -68 b 248 112 315 53 292 112 b 180 45 225 112 200 89 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 z"},accSagittal17CommaUp:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 -40 b 315 -118 248 -92 279 -118 b 405 62 374 -118 405 -59 l 360 62 b 324 -10 360 14 348 -10 b 302 -6 318 -10 311 -9 b 206 217 268 9 235 84 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z"},accSagittal17CommaDown:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 206 -217 b 302 6 235 -84 268 -9 b 324 10 311 9 318 10 b 360 -62 348 10 360 -14 l 405 -62 b 315 118 405 59 374 118 b 225 40 279 118 248 92 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z"},accSagittal55CommaUp:{x_min:0,x_max:219,y_min:-359,y_max:172,ha:531,o:"m 0 248 l 0 -517 l 45 -517 l 45 58 l 315 -274 l 315 -112 l 23 248 z"},accSagittal55CommaDown:{x_min:0,x_max:219,y_min:-172,y_max:359,ha:531,o:"m 23 -248 l 315 112 l 315 274 l 45 -58 l 45 517 l 0 517 l 0 -248 z"},accSagittal7v11CommaUp:{x_min:0,x_max:188,y_min:-359,y_max:172,ha:531,o:"m 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 248 l 135 248 b 0 68 45 248 0 187 z"},accSagittal7v11CommaDown:{x_min:0,x_max:188,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 135 -248 0 -187 45 -248 l 271 -248 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z"},accSagittal5v11SmallDiesisUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 73 l 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 -40 b 360 -118 295 -92 325 -118 b 449 62 420 -118 449 -59 l 405 62 b 369 -10 405 14 393 -10 b 348 -6 363 -10 356 -9 b 251 217 312 9 279 84 l 248 248 l 135 248 b 0 73 45 248 0 189 z"},accSagittal5v11SmallDiesisDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 -73 b 135 -248 0 -189 45 -248 l 248 -248 l 251 -217 b 348 6 279 -84 312 -9 b 369 10 356 9 363 10 b 405 -62 393 10 405 -14 l 449 -62 b 360 118 449 59 420 118 b 271 40 325 118 295 92 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z"},accSagittalSharp5v11SDown:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 242 37 203 -23 225 -3 b 315 -89 262 -23 285 -63 l 315 -517 l 360 -517 l 360 -112 l 383 -112 b 495 68 458 -112 495 -53 l 449 68 b 399 -4 449 20 433 -4 b 248 248 297 -4 261 171 b 157 68 222 127 192 68 l 89 68 b 0 -203 30 68 0 -23 z"},accSagittalFlat5v11SUp:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -127 b 399 4 261 -171 297 4 b 449 -68 433 4 449 -20 l 495 -68 b 383 112 495 53 458 112 l 360 112 l 360 517 l 315 517 l 315 89 b 242 -37 285 63 262 23 b 180 23 225 3 203 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z"},accSagittalSharp7v11CDown:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 89 -112 l 89 -517 l 135 -517 l 135 -95 b 206 37 163 -73 187 -30 b 271 -23 225 -3 248 -23 l 271 -517 l 315 -517 l 315 -23 l 383 -23 b 449 -203 428 -23 449 -84 l 495 -203 b 405 68 495 -23 465 68 l 292 68 b 203 248 258 68 228 127 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 20 l 0 68 b 89 -112 0 -52 30 -112 z"},accSagittalFlat7v11CUp:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 89 112 b 0 -68 30 112 0 52 l 45 -68 b 81 3 45 -20 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 b 292 -68 228 -127 258 -68 l 405 -68 b 495 203 465 -68 495 23 l 449 203 b 383 23 449 84 428 23 l 315 23 l 315 517 l 271 517 l 271 23 b 206 -37 248 23 225 3 b 135 95 187 30 163 73 l 135 517 l 89 517 z"},accSagittalSharp55CDown:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -271 l 135 -125 l 135 -517 l 180 -517 l 180 -78 l 315 65 l 315 -517 l 360 -517 l 360 248 l 337 248 l 0 -112 z"},accSagittalFlat55CUp:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 0 112 l 337 -248 l 360 -248 l 360 517 l 315 517 l 315 -65 l 180 78 l 180 517 l 135 517 l 135 125 l 0 271 z"},accSagittalSharp17CDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 45 -248 l 45 -68 b 180 109 45 36 89 95 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -89 292 13 321 -55 l 360 -517 l 405 -517 l 405 -112 l 428 -112 b 540 68 504 -112 540 -53 l 495 68 b 445 -4 495 20 480 -4 b 292 248 343 -4 307 171 l 180 248 b 0 68 60 248 0 187 l 0 -248 z"},accSagittalFlat17CUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 248 l 0 -68 b 180 -248 0 -187 60 -248 l 292 -248 b 445 4 307 -171 343 4 b 495 -68 480 4 495 -20 l 540 -68 b 428 112 540 53 504 112 l 405 112 l 405 517 l 360 517 l 360 89 b 271 -112 321 55 292 -13 l 225 -112 l 225 517 l 180 517 l 180 -109 b 45 68 89 -95 45 -36 l 45 248 z"},accSagittalSharp7v11kDown:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 -32 l 405 138 l 405 13 l 0 -157 l 0 -256 l 225 -161 l 225 -517 l 271 -517 l 271 -144 l 405 -86 l 405 -517 l 449 -517 l 449 248 l 428 248 l 0 68 z"},accSagittalFlat7v11kUp:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 -68 l 428 -248 l 449 -248 l 449 517 l 405 517 l 405 86 l 271 144 l 271 517 l 225 517 l 225 161 l 0 256 l 0 157 l 405 -13 l 405 -138 l 0 32 z"},accSagittalSharp7v11kUp:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 135 -112 l 135 -517 l 180 -517 l 180 -105 b 271 -23 217 -94 248 -65 l 271 -517 l 315 -517 l 315 -23 b 405 -105 337 -65 369 -94 l 405 -517 l 449 -517 l 449 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 315 148 b 112 -4 274 148 236 -4 b 45 68 68 -4 45 20 l 0 68 b 135 -112 0 -53 45 -112 z"},accSagittalFlat7v11kDown:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 135 112 b 0 -68 45 112 0 53 l 45 -68 b 112 4 45 -20 68 4 b 292 -248 236 4 274 -148 b 475 4 315 -148 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 l 449 517 l 405 517 l 405 105 b 315 23 369 94 337 65 l 315 517 l 271 517 l 271 23 b 180 105 248 65 217 94 l 180 517 l 135 517 z"},accSagittalSharp17CUp:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 -23 b 405 -105 337 -65 369 -94 l 405 -517 l 449 -517 l 449 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 312 150 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z"},accSagittalFlat17CDown:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 b 475 4 312 -150 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 l 449 517 l 405 517 l 405 105 b 315 23 369 94 337 65 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z"},accSagittalSharp55CUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 45 -517 l 45 78 l 135 10 l 135 -517 l 180 -517 l 180 -23 l 271 -92 l 271 -517 l 315 -517 l 315 -127 l 495 -264 l 495 -112 l 23 248 l 0 248 l 0 -517 z"},accSagittalFlat55CDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 517 l 0 -248 l 23 -248 l 495 112 l 495 264 l 315 127 l 315 517 l 271 517 l 271 92 l 180 23 l 180 517 l 135 517 l 135 -10 l 45 -78 l 45 517 z"},accSagittalSharp7v11CUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 86 45 6 89 58 l 180 -517 l 225 -517 l 225 98 b 315 109 252 104 282 108 l 315 -517 l 360 -517 l 360 112 l 449 112 l 449 -517 l 495 -517 l 495 248 l 360 248 b 0 68 121 248 0 189 z"},accSagittalFlat7v11CDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 360 -248 0 -189 121 -248 l 495 -248 l 495 517 l 449 517 l 449 -112 l 360 -112 l 360 517 l 315 517 l 315 -109 b 225 -98 282 -108 252 -104 l 225 517 l 180 517 l 180 -86 b 45 68 89 -58 45 -6 l 45 248 l 0 248 z"},accSagittalSharp5v11SUp:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 -23 b 449 -105 383 -65 415 -94 l 449 -517 l 495 -517 l 495 -112 b 631 68 585 -112 631 -53 l 585 68 b 520 -4 585 20 563 -4 b 337 248 396 -4 360 150 l 225 248 b 0 68 76 248 0 187 z"},accSagittalFlat5v11SDown:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 225 -248 0 -187 76 -248 l 337 -248 b 520 4 360 -150 396 4 b 585 -68 563 4 585 -20 l 631 -68 b 495 112 631 53 585 112 l 495 517 l 449 517 l 449 105 b 360 23 415 94 383 65 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z"},accSagittalDoubleSharp5v11SDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 341 -60 b 449 -112 370 -95 405 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 312 150 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z"},accSagittalDoubleFlat5v11SUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 b 475 4 312 -150 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 b 341 60 405 112 370 95 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z"},accSagittalDoubleSharp7v11CDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 112 -112 b 193 -73 143 -112 170 -99 l 45 -501 l 95 -517 l 248 -81 l 397 -517 l 449 -503 l 275 0 l 278 4 b 337 -23 295 -13 315 -23 l 405 -23 b 495 -203 465 -23 495 -84 l 540 -203 b 428 68 540 -23 503 68 l 360 68 b 248 248 310 68 271 127 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 112 -112 0 -52 36 -112 z"},accSagittalDoubleFlat7v11CUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 112 112 b 0 -68 36 112 0 52 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 b 360 -68 271 -127 310 -68 l 428 -68 b 540 203 503 -68 540 23 l 495 203 b 405 23 495 84 465 23 l 337 23 b 278 -4 315 23 295 13 l 275 0 l 449 503 l 397 517 l 248 81 l 95 517 l 45 501 l 193 73 b 112 112 170 99 143 112 z"},accSagittalDoubleSharp55CDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 428 248 l 0 -112 l 0 -266 l 307 -7 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 386 59 l 449 112 l 449 248 z"},accSagittalDoubleFlat55CUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 449 -248 l 449 -112 l 386 -59 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 307 7 l 0 266 l 0 112 l 428 -248 z"},accSagittalDoubleSharp17CDown:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 45 -248 l 45 -68 b 271 112 45 53 120 112 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 387 -62 b 495 -112 416 -95 452 -112 b 631 68 585 -112 631 -53 l 585 68 b 520 -4 585 20 563 -4 b 337 248 396 -4 360 150 l 225 248 b 0 68 76 248 0 187 l 0 -248 z"},accSagittalDoubleFlat17CUp:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 0 248 l 0 -68 b 225 -248 0 -187 76 -248 l 337 -248 b 520 4 360 -150 396 4 b 585 -68 563 4 585 -20 l 631 -68 b 495 112 631 53 585 112 b 387 62 452 112 416 95 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 271 -112 b 45 68 120 -112 45 -53 l 45 248 z"},accSagittalDoubleSharp7v11kDown:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 0 68 l 0 -30 l 366 96 l 399 0 l 392 -23 l 0 -157 l 0 -255 l 353 -135 l 225 -503 l 276 -517 l 428 -82 l 579 -517 l 631 -503 l 455 0 l 507 145 l 540 157 l 540 248 l 517 248 z m 416 115 l 442 124 l 428 82 z"},accSagittalDoubleFlat7v11kUp:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 517 -248 l 540 -248 l 540 -157 l 507 -145 l 455 0 l 631 503 l 579 517 l 428 82 l 276 517 l 225 503 l 353 135 l 0 255 l 0 157 l 392 23 l 399 0 l 366 -96 l 0 30 l 0 -68 z m 428 -82 l 442 -124 l 416 -115 z"},accSagittal23CommaUp:{x_min:0,x_max:188,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 -4 b 68 -23 53 -17 60 -23 l 180 -23 b 225 -203 210 -23 225 -82 l 271 -203 b 206 68 271 -23 248 68 l 89 68 b 23 248 71 68 48 127 l 0 248 z"},accSagittal23CommaDown:{x_min:0,x_max:188,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 23 -248 b 89 -68 48 -127 71 -68 l 206 -68 b 271 203 248 -68 271 23 l 225 203 b 180 23 225 82 210 23 l 68 23 b 45 4 60 23 53 17 l 45 517 l 0 517 z"},accSagittal5v19CommaUp:{x_min:0,x_max:156,y_min:-359,y_max:172,ha:531,o:"m 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 248 l 203 248 b 86 112 151 157 112 112 b 45 157 59 112 45 127 l 0 157 b 76 23 0 72 26 27 l 0 -112 z"},accSagittal5v19CommaDown:{x_min:0,x_max:156,y_min:-172,y_max:359,ha:531,o:"m 0 112 l 76 -23 b 0 -157 26 -27 0 -72 l 45 -157 b 86 -112 45 -127 59 -112 b 203 -248 112 -112 151 -157 l 225 -248 l 225 517 l 180 517 l 180 -33 l 0 284 z"},accSagittal5v23SmallDiesisUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 -4 b 248 -23 233 -17 240 -23 l 360 -23 b 405 -203 390 -23 405 -82 l 449 -203 b 386 68 449 -23 428 68 l 271 68 b 203 248 251 68 228 127 l 0 -112 z"},accSagittal5v23SmallDiesisDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 112 l 203 -248 b 271 -68 228 -127 251 -68 l 386 -68 b 449 203 428 -68 449 23 l 405 203 b 360 23 405 82 390 23 l 248 23 b 225 4 240 23 233 17 l 225 517 l 180 517 l 180 -33 l 0 284 z"},accSagittalSharp5v23SDown:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 6 b 89 -23 59 -13 73 -23 l 180 -23 l 180 -517 l 225 -517 l 225 -23 l 292 -23 b 360 -203 337 -23 360 -84 l 405 -203 b 315 68 405 -23 374 68 l 112 68 b 23 248 78 68 48 127 l 0 248 z"},accSagittalFlat5v23SUp:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 23 -248 b 112 -68 48 -127 78 -68 l 315 -68 b 405 203 374 -68 405 23 l 360 203 b 292 23 360 84 337 23 l 225 23 l 225 517 l 180 517 l 180 23 l 89 23 b 45 -6 73 23 59 13 l 45 517 l 0 517 z"},accSagittalSharp5v19CDown:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 68 b 89 -112 0 -52 30 -112 l 89 -517 l 135 -517 l 135 -95 b 225 112 173 -65 203 4 l 271 112 l 271 -517 l 315 -517 l 315 107 b 405 -68 374 89 405 30 l 405 -248 l 449 -248 l 449 68 b 315 248 449 189 405 248 l 203 248 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 23 z"},accSagittalFlat5v19CUp:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 45 -68 b 81 3 45 -23 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 l 315 -248 b 449 -68 405 -248 449 -189 l 449 248 l 405 248 l 405 68 b 315 -107 405 -30 374 -89 l 315 517 l 271 517 l 271 -112 l 225 -112 b 135 95 203 -4 173 65 l 135 517 l 89 517 l 89 112 b 0 -68 30 112 0 52 z"},accSagittalSharp23CDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 135 -82 l 135 -517 l 180 -517 l 180 -17 l 239 68 b 315 -23 261 7 287 -23 l 315 -517 l 360 -517 l 360 -23 l 428 -23 b 495 -203 472 -23 495 -84 l 540 -203 b 449 68 540 -23 510 68 l 337 68 b 248 248 302 68 271 127 l 0 -112 l 0 -276 z"},accSagittalFlat23CUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 276 l 0 112 l 248 -248 b 337 -68 271 -127 302 -68 l 449 -68 b 540 203 510 -68 540 23 l 495 203 b 428 23 495 84 472 23 l 360 23 l 360 517 l 315 517 l 315 23 b 239 -68 287 23 261 -7 l 180 17 l 180 517 l 135 517 l 135 82 z"},accSagittalSharp23CUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 14 b 112 -23 63 -10 86 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 360 -23 b 449 -203 420 -23 449 -84 l 495 -203 b 383 68 495 -23 458 68 l 135 68 b 23 248 85 68 48 127 l 0 248 z"},accSagittalFlat23CDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 23 -248 b 135 -68 48 -127 85 -68 l 383 -68 b 495 203 458 -68 495 23 l 449 203 b 360 23 449 84 420 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 -14 86 23 63 10 l 45 517 l 0 517 z"},accSagittalSharp5v19CUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 -112 l 0 -266 l 135 -153 l 135 -517 l 180 -517 l 180 -115 l 271 -39 l 271 -517 l 315 -517 l 315 0 l 405 75 l 405 -517 l 449 -517 l 449 248 l 428 248 b 130 68 285 127 186 68 b 45 157 73 68 45 98 l 0 157 b 112 -20 0 53 37 -6 z"},accSagittalFlat5v19CDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 112 20 b 0 -157 37 6 0 -53 l 45 -157 b 130 -68 45 -98 73 -68 b 428 -248 186 -68 285 -127 l 449 -248 l 449 517 l 405 517 l 405 -75 l 315 0 l 315 517 l 271 517 l 271 39 l 180 115 l 180 517 l 135 517 l 135 153 l 0 266 l 0 112 z"},accSagittalSharp5v23SUp:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 135 -108 l 135 -517 l 180 -517 l 180 -53 l 271 58 l 271 -517 l 315 -517 l 315 14 b 383 -23 334 -10 357 -23 l 405 -23 l 405 -517 l 449 -517 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 405 68 b 292 248 356 68 318 127 l 0 -112 l 0 -274 z"},accSagittalFlat5v23SDown:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 274 l 0 112 l 292 -248 b 405 -68 318 -127 356 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 449 517 l 405 517 l 405 23 l 383 23 b 315 -14 357 23 334 10 l 315 517 l 271 517 l 271 -58 l 180 53 l 180 517 l 135 517 l 135 108 z"},accSagittalDoubleSharp5v23SDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 52 -517 l 203 -81 l 354 -517 l 405 -503 l 239 -23 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 225 68 b 112 248 176 68 138 127 l 89 248 l 89 112 b 170 -14 109 45 135 0 l 0 -501 z"},accSagittalDoubleFlat5v23SUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 501 l 170 14 b 89 -112 135 0 109 -45 l 89 -248 l 112 -248 b 225 -68 138 -127 176 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 239 23 l 405 503 l 354 517 l 203 81 l 52 517 z"},accSagittalDoubleSharp5v19CDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 0 68 b 112 -112 0 -52 36 -112 b 193 -73 143 -112 170 -99 l 45 -501 l 95 -517 l 248 -81 l 397 -517 l 449 -501 l 275 0 l 315 112 b 495 -68 435 112 495 53 l 495 -248 l 540 -248 l 540 68 b 360 248 540 189 480 248 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 z"},accSagittalDoubleFlat5v19CUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 360 -248 b 540 -68 480 -248 540 -189 l 540 248 l 495 248 l 495 68 b 315 -112 495 -53 435 -112 l 275 0 l 449 501 l 397 517 l 248 81 l 95 517 l 45 501 l 193 73 b 112 112 170 99 143 112 b 0 -68 36 112 0 52 z"},accSagittalDoubleSharp23CDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 252 35 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 323 4 b 383 -23 340 -13 360 -23 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 405 68 b 292 248 356 68 318 127 l 0 -112 l 0 -274 z"},accSagittalDoubleFlat23CUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 274 l 0 112 l 292 -248 b 405 -68 318 -127 356 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 383 23 b 323 -4 360 23 340 13 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 252 -35 z"},accSagittal19SchismaUp:{x_min:0,x_max:125,y_min:-359,y_max:172,ha:531,o:"m 68 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 248 l 157 248 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 l 0 68 b 68 -112 0 -52 23 -112 z"},accSagittal19SchismaDown:{x_min:0,x_max:125,y_min:-172,y_max:359,ha:531,o:"m 68 112 b 0 -68 23 112 0 52 l 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 l 180 -248 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 z"},accSagittal17KleismaUp:{x_min:0,x_max:156,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 248 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z"},accSagittal17KleismaDown:{x_min:0,x_max:156,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 225 -248 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z"},accSagittal143CommaUp:{x_min:0,x_max:156,y_min:-359,y_max:172,ha:531,o:"m 0 -203 l 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 248 l 203 248 b 135 68 177 127 154 68 l 105 68 b 45 157 65 68 45 98 l 0 157 b 23 20 0 95 7 50 b 0 -203 7 -23 0 -98 z"},accSagittal143CommaDown:{x_min:0,x_max:156,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 23 -20 0 98 7 23 b 0 -157 7 -50 0 -95 l 45 -157 b 105 -68 45 -98 65 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 225 -248 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z"},accSagittal11v49CommaUp:{x_min:0,x_max:188,y_min:-359,y_max:172,ha:531,o:"m 45 -292 b 89 -157 45 -203 60 -157 l 203 -157 b 225 -143 210 -157 217 -153 l 225 -517 l 271 -517 l 271 248 l 248 248 b 180 157 233 187 210 157 l 68 157 b 0 -68 23 157 0 82 l 45 -68 b 89 68 45 23 60 68 l 203 68 b 225 84 209 68 216 72 l 225 -36 b 180 -68 213 -58 199 -68 l 68 -68 b 0 -292 23 -68 0 -143 z"},accSagittal11v49CommaDown:{x_min:0,x_max:188,y_min:-172,y_max:359,ha:531,o:"m 0 292 b 68 68 0 143 23 68 l 180 68 b 225 36 199 68 213 58 l 225 -84 b 203 -68 216 -72 209 -68 l 89 -68 b 45 68 60 -68 45 -23 l 0 68 b 68 -157 0 -82 23 -157 l 180 -157 b 248 -248 210 -157 233 -187 l 271 -248 l 271 517 l 225 517 l 225 143 b 203 157 217 153 210 157 l 89 157 b 45 292 60 157 45 203 z"},accSagittal19CommaUp:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 0 68 b 68 -112 0 -52 23 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 -4 b 203 -23 187 -17 196 -23 l 315 -23 b 360 -203 346 -23 360 -82 l 405 -203 b 341 68 405 -23 383 68 l 225 68 b 157 248 206 68 183 127 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 z"},accSagittal19CommaDown:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 b 225 -68 183 -127 206 -68 l 341 -68 b 405 203 383 -68 405 23 l 360 203 b 315 23 360 82 346 23 l 203 23 b 180 4 196 23 187 17 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 b 0 -68 23 112 0 52 z"},accSagittal7v19CommaUp:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 68 b 68 -112 0 -52 23 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 112 l 225 112 b 315 -68 285 112 315 53 l 315 -248 l 360 -248 l 360 68 b 271 248 360 187 330 248 l 157 248 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 z"},accSagittal7v19CommaDown:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 l 271 -248 b 360 -68 330 -248 360 -187 l 360 248 l 315 248 l 315 68 b 225 -112 315 -53 285 -112 l 180 -112 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 b 0 -68 23 112 0 52 z"},accSagittal49SmallDiesisUp:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 0 -203 l 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -68 330 112 360 53 l 360 -248 l 405 -248 l 405 68 b 315 248 405 187 374 248 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z"},accSagittal49SmallDiesisDown:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 315 -248 b 405 -68 374 -248 405 -187 l 405 248 l 360 248 l 360 68 b 271 -112 360 -53 330 -112 l 225 -112 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z"},accSagittal23SmallDiesisUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 58 l 495 -274 l 495 -112 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z"},accSagittal23SmallDiesisDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 495 112 l 495 274 l 225 -58 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z"},accSagittal5v13MediumDiesisUp:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -259 l 315 -89 l 315 -517 l 360 -517 l 360 248 l 337 248 b 128 180 253 203 184 180 b 45 248 73 180 45 203 l 0 248 b 52 95 0 170 17 120 l 0 68 l 0 -33 l 315 135 l 315 10 l 0 -157 z"},accSagittal5v13MediumDiesisDown:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 0 157 l 315 -10 l 315 -135 l 0 33 l 0 -68 l 52 -95 b 0 -248 17 -120 0 -170 l 45 -248 b 128 -180 45 -203 73 -180 b 337 -248 184 -180 253 -203 l 360 -248 l 360 517 l 315 517 l 315 89 l 0 259 z"},accSagittal11v19MediumDiesisUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 -4 b 292 -23 278 -17 285 -23 l 405 -23 b 449 -203 435 -23 449 -82 l 495 -203 b 431 68 495 -23 472 68 l 315 68 b 248 248 295 68 271 127 l 135 248 b 0 68 45 248 0 187 l 0 -248 z"},accSagittal11v19MediumDiesisDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 248 l 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 b 315 -68 271 -127 295 -68 l 431 -68 b 495 203 472 -68 495 23 l 449 203 b 405 23 449 82 435 23 l 292 23 b 271 4 285 23 278 17 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 z"},accSagittal49MediumDiesisUp:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -68 l 0 -248 l 45 -248 l 315 -94 l 315 -517 l 360 -517 l 360 248 l 225 248 b 0 -68 75 248 0 143 z m 45 -68 b 225 112 45 53 105 112 l 315 112 l 315 10 l 45 -145 z"},accSagittal49MediumDiesisDown:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 0 68 b 225 -248 0 -143 75 -248 l 360 -248 l 360 517 l 315 517 l 315 94 l 45 248 l 0 248 z m 45 145 l 315 -10 l 315 -112 l 225 -112 b 45 68 105 -112 45 -53 z"},accSagittal5v49MediumDiesisUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 0 -89 l 0 -248 l 225 53 l 225 -517 l 271 -517 l 271 53 l 495 -248 l 495 -89 l 248 248 b 89 89 170 143 118 89 b 45 157 60 89 45 112 l 0 157 b 68 3 0 68 23 16 z"},accSagittal5v49MediumDiesisDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 68 -3 b 0 -157 23 -16 0 -68 l 45 -157 b 89 -89 45 -112 60 -89 b 248 -248 118 -89 170 -143 l 495 89 l 495 248 l 271 -53 l 271 517 l 225 517 l 225 -53 l 0 248 l 0 89 z"},accSagittal49LargeDiesisUp:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 -89 l 360 -248 l 405 -248 l 405 -68 b 180 248 405 143 330 248 l 0 248 z m 45 12 l 45 112 l 180 112 b 360 -68 300 112 360 53 l 360 -147 z"},accSagittal49LargeDiesisDown:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 180 -248 b 405 68 330 -248 405 -143 l 405 248 l 360 248 l 45 89 l 45 517 l 0 517 z m 360 147 l 360 68 b 180 -112 360 -53 300 -112 l 45 -112 l 45 -12 z"},accSagittal11v19LargeDiesisUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 -86 l 449 -256 l 449 -157 l 45 13 l 45 138 l 449 -30 l 449 68 l 23 248 l 0 248 z"},accSagittal11v19LargeDiesisDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 23 -248 l 449 -68 l 449 30 l 45 -138 l 45 -13 l 449 157 l 449 256 l 45 86 l 45 517 l 0 517 z"},accSagittal5v13LargeDiesisUp:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 0 68 b 89 -112 0 -52 30 -112 b 180 -35 125 -112 157 -86 l 180 -517 l 225 -517 l 225 -86 l 631 -256 l 631 -157 l 225 13 l 225 138 l 631 -30 l 631 68 l 203 248 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 20 z"},accSagittal5v13LargeDiesisDown:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 45 -68 b 81 3 45 -20 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 l 631 -68 l 631 30 l 225 -138 l 225 -13 l 631 157 l 631 256 l 225 86 l 225 517 l 180 517 l 180 35 b 89 112 157 86 125 112 b 0 -68 30 112 0 52 z"},accSagittalSharp23SDown:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -203 l 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 b 315 6 287 -23 301 -13 l 315 -517 l 360 -517 l 360 248 l 337 248 b 248 68 312 127 282 68 l 194 68 b 89 157 125 68 89 98 l 45 157 b 60 59 45 118 50 85 b 0 -203 20 30 0 -56 z"},accSagittalFlat23SUp:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 60 -59 0 56 20 -30 b 45 -157 50 -85 45 -118 l 89 -157 b 194 -68 89 -98 125 -68 l 248 -68 b 337 -248 282 -68 312 -127 l 360 -248 l 360 517 l 315 517 l 315 -6 b 271 23 301 13 287 23 l 180 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z"},accSagittalSharp49SDown:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -292 l 45 -292 b 112 -157 45 -203 68 -157 l 135 -157 l 135 -517 l 180 -517 l 180 -157 l 271 -157 b 315 -135 285 -157 300 -150 l 315 -517 l 360 -517 l 360 248 l 337 248 b 248 157 323 187 292 157 l 89 157 b 0 -68 30 157 0 82 l 45 -68 b 112 68 45 23 68 68 l 271 68 b 315 89 284 68 300 75 l 315 -32 b 248 -68 298 -56 275 -68 l 89 -68 b 0 -292 29 -68 0 -143 z"},accSagittalFlat49SUp:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 0 292 b 89 68 0 143 29 68 l 248 68 b 315 32 275 68 298 56 l 315 -89 b 271 -68 300 -75 284 -68 l 112 -68 b 45 68 68 -68 45 -23 l 0 68 b 89 -157 0 -82 30 -157 l 248 -157 b 337 -248 292 -157 323 -187 l 360 -248 l 360 517 l 315 517 l 315 135 b 271 157 300 150 285 157 l 180 157 l 180 517 l 135 517 l 135 157 l 112 157 b 45 292 68 157 45 203 z"},accSagittalSharp7v19CDown:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -112 l 0 -271 l 135 -125 l 135 -517 l 180 -517 l 180 -78 l 315 65 l 315 -517 l 360 -517 l 360 248 l 337 248 b 118 89 239 143 166 89 b 45 157 68 89 45 112 l 0 157 b 89 -20 0 53 29 -6 z"},accSagittalFlat7v19CUp:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 89 20 b 0 -157 29 6 0 -53 l 45 -157 b 118 -89 45 -112 68 -89 b 337 -248 166 -89 239 -143 l 360 -248 l 360 517 l 315 517 l 315 -65 l 180 78 l 180 517 l 135 517 l 135 125 l 0 271 l 0 112 z"},accSagittalSharp19CDown:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 0 -248 l 45 -248 l 45 -68 b 180 96 45 17 89 72 l 180 -517 l 225 -517 l 225 107 b 315 112 252 112 282 112 l 360 112 l 360 -517 l 405 -517 l 405 248 l 271 248 b 0 68 89 248 0 187 z"},accSagittalFlat19CUp:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 271 -248 0 -187 89 -248 l 405 -248 l 405 517 l 360 517 l 360 -112 l 315 -112 b 225 -107 282 -112 252 -112 l 225 517 l 180 517 l 180 -96 b 45 68 89 -72 45 -17 l 45 248 l 0 248 z"},accSagittalSharp11v49CDown:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 112 -23 45 -82 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 271 112 215 -23 245 23 l 315 112 l 315 -517 l 360 -517 l 360 107 b 449 -68 420 89 449 30 l 449 -248 l 495 -248 l 495 68 b 360 248 495 189 449 248 l 248 248 b 157 68 222 128 192 68 l 89 68 b 0 -203 30 68 0 -23 z"},accSagittalFlat11v49CUp:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -128 l 360 -248 b 495 -68 449 -248 495 -189 l 495 248 l 449 248 l 449 68 b 360 -107 449 -30 420 -89 l 360 517 l 315 517 l 315 -112 l 271 -112 b 180 23 245 -23 215 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 82 z"},accSagittalSharp143CDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 259 76 210 -23 236 10 l 315 17 l 315 -517 l 360 -517 l 360 -30 l 585 -271 l 585 -112 l 248 248 b 157 68 222 127 192 68 l 89 68 b 0 -203 30 68 0 -23 z"},accSagittalFlat143CUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -127 l 585 112 l 585 271 l 360 30 l 360 517 l 315 517 l 315 -17 l 259 -76 b 180 23 236 -10 210 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z"},accSagittalSharp17kDown:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 -157 l 0 -256 l 225 -161 l 225 -517 l 271 -517 l 271 -144 l 405 -86 l 405 -517 l 449 -517 l 449 248 l 428 248 b 145 171 305 196 210 171 b 45 248 78 171 45 196 l 0 248 b 79 101 0 170 26 121 l 0 68 l 0 -32 l 405 138 l 405 13 z"},accSagittalFlat17kUp:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 405 -13 l 405 -138 l 0 32 l 0 -68 l 79 -101 b 0 -248 26 -121 0 -170 l 45 -248 b 145 -171 45 -196 78 -171 b 428 -248 210 -171 305 -196 l 449 -248 l 449 517 l 405 517 l 405 86 l 271 144 l 271 517 l 225 517 l 225 161 l 0 256 l 0 157 z"},accSagittalSharp19sDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 0 -248 l 45 -248 l 45 -68 b 180 109 45 36 89 95 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -23 295 23 325 -23 l 360 -517 l 405 -517 l 405 -23 l 472 -23 b 540 -203 517 -23 540 -84 l 585 -203 b 495 68 585 -23 554 68 l 383 68 b 292 248 348 68 318 127 l 180 248 b 0 68 60 248 0 187 z"},accSagittalFlat19sUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 180 -248 0 -187 60 -248 l 292 -248 b 383 -68 318 -127 348 -68 l 495 -68 b 585 203 554 -68 585 23 l 540 203 b 472 23 540 84 517 23 l 405 23 l 405 517 l 360 517 l 360 23 b 271 -112 325 23 295 -23 l 225 -112 l 225 517 l 180 517 l 180 -109 b 45 68 89 -95 45 -36 l 45 248 l 0 248 z"},accSagittalSharp19sUp:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 89 -96 l 89 -517 l 135 -517 l 135 -108 b 180 -112 148 -112 163 -112 b 225 -108 196 -112 210 -112 l 225 -517 l 271 -517 l 271 -94 b 360 -12 305 -78 337 -50 l 360 -517 l 405 -517 l 405 248 l 383 248 b 190 0 353 98 288 16 b 138 -3 171 0 153 -3 b 45 68 75 -3 45 20 l 0 68 b 89 -96 0 -17 30 -72 z"},accSagittalFlat19sDown:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 89 96 b 0 -68 30 72 0 17 l 45 -68 b 138 3 45 -20 75 3 b 190 0 153 3 171 0 b 383 -248 288 -16 353 -98 l 405 -248 l 405 517 l 360 517 l 360 12 b 271 94 337 50 305 78 l 271 517 l 225 517 l 225 108 b 180 112 210 112 196 112 b 135 108 163 112 148 112 l 135 517 l 89 517 z"},accSagittalSharp17kUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 337 -23 b 405 14 363 -23 386 -10 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 68 402 127 364 68 l 112 68 b 0 -203 37 68 0 -23 z"},accSagittalFlat17kDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 112 -68 0 23 37 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 517 l 405 517 l 405 -14 b 337 23 386 10 363 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z"},accSagittalSharp143CUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 337 -23 b 405 14 363 -23 386 -10 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 68 402 127 364 68 l 240 68 b 89 157 140 68 89 98 l 45 157 b 68 53 45 115 52 81 b 0 -203 23 23 0 -63 z"},accSagittalFlat143CDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 68 -53 0 63 23 -23 b 45 -157 52 -81 45 -115 l 89 -157 b 240 -68 89 -98 140 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 517 l 405 517 l 405 -14 b 337 23 386 10 363 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z"},accSagittalSharp11v49CUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 45 -68 b 135 68 45 23 76 68 l 337 68 b 405 95 363 68 386 76 l 405 -27 b 315 -68 386 -55 356 -68 l 112 -68 b 0 -292 37 -68 0 -143 l 45 -292 b 135 -157 45 -203 75 -157 l 135 -517 l 180 -517 l 180 -157 l 271 -157 l 271 -517 l 315 -517 l 315 -157 l 337 -157 b 405 -130 360 -157 383 -148 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 157 413 187 376 157 l 112 157 b 0 -68 37 157 0 82 z"},accSagittalFlat11v49CDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 68 b 112 -157 0 -82 37 -157 l 315 -157 b 428 -248 376 -157 413 -187 l 449 -248 l 449 517 l 405 517 l 405 130 b 337 157 383 148 360 157 l 315 157 l 315 517 l 271 517 l 271 157 l 180 157 l 180 517 l 135 517 l 135 157 b 45 292 75 157 45 203 l 0 292 b 112 68 0 143 37 68 l 315 68 b 405 27 356 68 386 55 l 405 -95 b 337 -68 386 -76 363 -68 l 135 -68 b 45 68 76 -68 45 -23 z"},accSagittalSharp19CUp:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 14 b 337 -23 289 -10 311 -23 l 360 -23 l 360 -517 l 405 -517 l 405 -23 b 495 -203 465 -23 495 -82 l 540 -203 b 428 68 540 -23 503 68 l 360 68 b 248 248 310 68 271 128 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z"},accSagittalFlat19CDown:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 b 360 -68 271 -128 310 -68 l 428 -68 b 540 203 503 -68 540 23 l 495 203 b 405 23 495 82 465 23 l 405 517 l 360 517 l 360 23 l 337 23 b 271 -14 311 23 289 10 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z"},accSagittalSharp7v19CUp:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 112 l 315 112 b 360 109 331 112 346 112 l 360 -517 l 405 -517 l 405 98 b 495 -68 465 73 495 19 l 495 -248 l 540 -248 l 540 68 b 360 248 540 189 480 248 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z"},accSagittalFlat7v19CDown:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 360 -248 b 540 -68 480 -248 540 -189 l 540 248 l 495 248 l 495 68 b 405 -98 495 -19 465 -73 l 405 517 l 360 517 l 360 -109 b 315 -112 346 -112 331 -112 l 271 -112 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z"},accSagittalSharp49SUp:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 112 l 360 112 b 405 109 376 112 390 112 l 405 -517 l 449 -517 l 449 96 b 540 -68 510 72 540 17 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z"},accSagittalFlat49SDown:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 449 -96 540 -17 510 -72 l 449 517 l 405 517 l 405 -109 b 360 -112 390 -112 376 -112 l 315 -112 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z"},accSagittalSharp23SUp:{x_min:0,x_max:469,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 71 l 405 -14 l 405 -517 l 449 -517 l 449 -56 l 675 -268 l 675 -112 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z"},accSagittalFlat23SDown:{x_min:0,x_max:469,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 675 112 l 675 268 l 449 56 l 449 517 l 405 517 l 405 14 l 315 -71 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z"},accSagittalSharp5v13MUp:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 495 141 l 495 14 l 0 -157 l 0 -256 l 225 -180 l 225 -517 l 271 -517 l 271 -161 l 360 -130 l 360 -517 l 405 -517 l 405 -115 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 517 248 b 167 168 366 194 248 168 b 45 248 85 168 45 194 l 0 248 b 95 99 0 170 30 120 l 0 68 l 0 -30 z"},accSagittalFlat5v13MDown:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 30 l 0 -68 l 95 -99 b 0 -248 30 -120 0 -170 l 45 -248 b 167 -168 45 -194 85 -168 b 517 -248 248 -168 366 -194 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 115 l 405 517 l 360 517 l 360 130 l 271 161 l 271 517 l 225 517 l 225 180 l 0 256 l 0 157 l 495 -14 l 495 -141 z"},accSagittalSharp11v19MUp:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 14 b 428 -23 379 -10 402 -23 l 449 -23 l 449 -517 l 495 -517 l 495 -23 b 585 -203 554 -23 585 -84 l 631 -203 b 517 68 631 -23 593 68 l 449 68 b 337 248 400 68 363 127 l 225 248 b 0 68 75 248 0 187 z"},accSagittalFlat11v19MDown:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 b 449 -68 363 -127 400 -68 l 517 -68 b 631 203 593 -68 631 23 l 585 203 b 495 23 585 84 554 23 l 495 517 l 449 517 l 449 23 l 428 23 b 360 -14 402 23 379 10 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z"},accSagittalSharp49MUp:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 0 -248 l 45 -248 l 225 -180 l 225 -517 l 271 -517 l 271 -166 l 360 -132 l 360 -517 l 405 -517 l 405 -117 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 360 248 b 0 -68 120 248 0 143 z m 45 -145 l 45 -68 b 360 112 45 53 150 112 l 495 112 l 495 14 z"},accSagittalFlat49MDown:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 68 b 360 -248 0 -143 120 -248 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 117 l 405 517 l 360 517 l 360 132 l 271 166 l 271 517 l 225 517 l 225 180 l 45 248 l 0 248 z m 495 -14 l 495 -112 l 360 -112 b 45 68 150 -112 45 -53 l 45 145 z"},accSagittalSharp5v49MUp:{x_min:0,x_max:469,y_min:-359,y_max:172,ha:531,o:"m 0 -271 l 180 -79 l 180 -517 l 225 -517 l 225 -30 l 315 65 l 315 -517 l 360 -517 l 360 65 l 449 -30 l 449 -517 l 495 -517 l 495 -79 l 675 -271 l 675 -112 l 337 248 b 118 89 239 143 166 89 b 45 157 68 89 45 112 l 0 157 b 107 0 0 62 36 10 l 0 -112 z"},accSagittalFlat5v49MDown:{x_min:0,x_max:469,y_min:-172,y_max:359,ha:531,o:"m 0 112 l 107 0 b 0 -157 36 -10 0 -62 l 45 -157 b 118 -89 45 -112 68 -89 b 337 -248 166 -89 239 -143 l 675 112 l 675 271 l 495 79 l 495 517 l 449 517 l 449 30 l 360 -65 l 360 517 l 315 517 l 315 -65 l 225 30 l 225 517 l 180 517 l 180 79 l 0 271 z"},accSagittalSharp49LUp:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 -82 l 135 -112 l 135 -517 l 180 -517 l 180 -127 l 271 -157 l 271 -517 l 315 -517 l 315 -173 l 540 -248 l 585 -248 l 585 -68 b 180 248 585 143 449 248 l 0 248 z m 45 112 l 180 112 b 540 -68 420 112 540 53 l 540 -145 l 45 16 z"},accSagittalFlat49LDown:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 180 -248 b 585 68 449 -248 585 -143 l 585 248 l 540 248 l 315 173 l 315 517 l 271 517 l 271 157 l 180 127 l 180 517 l 135 517 l 135 112 l 45 82 l 45 517 l 0 517 z m 45 -16 l 540 145 l 540 68 b 180 -112 540 -53 420 -112 l 45 -112 z"},accSagittalSharp11v19LUp:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 -81 l 135 -108 l 135 -517 l 180 -517 l 180 -121 l 271 -148 l 271 -517 l 315 -517 l 315 -161 l 631 -255 l 631 -157 l 45 16 l 45 144 l 631 -30 l 631 68 l 23 248 l 0 248 z"},accSagittalFlat11v19LDown:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 23 -248 l 631 -68 l 631 30 l 45 -144 l 45 -16 l 631 157 l 631 255 l 315 161 l 315 517 l 271 517 l 271 148 l 180 121 l 180 517 l 135 517 l 135 108 l 45 81 l 45 517 l 0 517 z"},accSagittalSharp5v13LUp:{x_min:0,x_max:500,y_min:-359,y_max:172,ha:531,o:"m 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 -85 l 360 -120 l 360 -517 l 405 -517 l 405 -135 l 720 -256 l 720 -157 l 271 14 l 271 141 l 720 -30 l 720 68 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z"},accSagittalFlat5v13LDown:{x_min:0,x_max:500,y_min:-172,y_max:359,ha:531,o:"m 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 720 -68 l 720 30 l 271 -141 l 271 -14 l 720 157 l 720 256 l 405 135 l 405 517 l 360 517 l 360 120 l 271 85 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z"},accSagittalDoubleSharp23SDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 0 -203 l 45 -203 b 135 -23 45 -82 76 -23 l 301 -23 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 370 -14 b 449 112 423 10 449 53 l 449 248 l 428 248 b 315 68 402 127 364 68 l 240 68 b 89 157 140 68 89 98 l 45 157 b 68 53 45 115 52 81 b 0 -203 23 23 0 -63 z"},accSagittalDoubleFlat23SUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 68 -53 0 63 23 -23 b 45 -157 52 -81 45 -115 l 89 -157 b 240 -68 89 -98 140 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 -112 b 370 14 449 -53 423 -10 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 301 23 l 135 23 b 45 203 76 23 45 82 z"},accSagittalDoubleSharp49SDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 0 -292 l 45 -292 b 112 -157 45 -203 68 -157 l 256 -157 l 135 -503 l 187 -517 l 337 -82 l 490 -517 l 540 -503 l 366 0 l 396 89 b 449 157 416 102 435 125 l 449 248 l 428 248 b 315 157 413 187 376 157 l 112 157 b 0 -68 39 157 0 82 l 45 -68 b 135 68 45 23 76 68 l 287 68 l 311 0 l 288 -68 l 89 -68 b 0 -292 32 -68 0 -144 z"},accSagittalDoubleFlat49SUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 292 b 89 68 0 144 32 68 l 288 68 l 311 0 l 287 -68 l 135 -68 b 45 68 76 -68 45 -23 l 0 68 b 112 -157 0 -82 39 -157 l 315 -157 b 428 -248 376 -157 413 -187 l 449 -248 l 449 -157 b 396 -89 435 -125 416 -102 l 366 0 l 540 503 l 490 517 l 337 82 l 187 517 l 135 503 l 256 157 l 112 157 b 45 292 68 157 45 203 z"},accSagittalDoubleSharp7v19CDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 0 -112 l 0 -266 l 307 -7 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 386 59 l 449 112 l 449 248 l 428 248 b 130 68 285 127 186 68 b 45 157 73 68 45 98 l 0 157 b 112 -20 0 53 37 -6 z"},accSagittalDoubleFlat7v19CUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 112 20 b 0 -157 37 6 0 -53 l 45 -157 b 130 -68 45 -98 73 -68 b 428 -248 186 -68 285 -127 l 449 -248 l 449 -112 l 386 -59 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 307 7 l 0 266 l 0 112 z"},accSagittalDoubleSharp19CDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 0 68 l 0 -248 l 45 -248 l 45 -68 b 315 109 45 36 135 95 l 354 0 l 180 -503 l 232 -517 l 383 -82 l 534 -517 l 585 -503 l 410 0 l 449 112 l 495 112 l 495 248 l 360 248 b 0 68 120 248 0 187 z m 372 112 l 393 112 l 383 82 z"},accSagittalDoubleFlat19CUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 360 -248 0 -187 120 -248 l 495 -248 l 495 -112 l 449 -112 l 410 0 l 585 503 l 534 517 l 383 82 l 232 517 l 180 503 l 354 0 l 315 -109 b 45 68 135 -95 45 -36 l 45 248 l 0 248 z m 383 -82 l 393 -112 l 372 -112 z"},accSagittalDoubleSharp11v49CDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 360 112 b 540 -68 480 112 540 53 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z"},accSagittalDoubleFlat11v49CUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 360 -112 540 -53 480 -112 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z"},accSagittalDoubleSharp143CDown:{x_min:0,x_max:469,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 337 49 l 675 -268 l 675 -112 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z"},accSagittalDoubleFlat143CUp:{x_min:0,x_max:469,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 675 112 l 675 268 l 337 -49 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z"},accSagittalDoubleSharp17kDown:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 0 248 b 95 101 0 170 30 121 l 0 68 l 0 -30 l 364 96 l 399 0 l 390 -23 l 0 -157 l 0 -255 l 353 -135 l 225 -503 l 275 -517 l 428 -82 l 577 -517 l 631 -503 l 455 0 l 507 145 l 540 157 l 540 248 l 517 248 b 167 168 366 194 248 168 b 45 248 85 168 45 194 z m 416 115 l 442 124 l 428 82 z"},accSagittalDoubleFlat17kUp:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 45 -248 b 167 -168 45 -194 85 -168 b 517 -248 248 -168 366 -194 l 540 -248 l 540 -157 l 507 -145 l 455 0 l 631 503 l 577 517 l 428 82 l 275 517 l 225 503 l 353 135 l 0 255 l 0 157 l 390 23 l 399 0 l 364 -96 l 0 30 l 0 -68 l 95 -101 b 0 -248 30 -121 0 -170 z m 428 -82 l 442 -124 l 416 -115 z"},accSagittalDoubleSharp19sDown:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 0 -248 l 45 -248 l 45 -68 b 271 112 45 53 120 112 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 367 4 b 428 -23 386 -13 405 -23 l 495 -23 b 585 -203 554 -23 585 -84 l 631 -203 b 517 68 631 -23 593 68 l 449 68 b 337 248 400 68 363 127 l 225 248 b 0 68 75 248 0 187 z"},accSagittalDoubleFlat19sUp:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 b 449 -68 363 -127 400 -68 l 517 -68 b 631 203 593 -68 631 23 l 585 203 b 495 23 585 84 554 23 l 428 23 b 367 -4 405 23 386 13 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 271 -112 b 45 68 120 -112 45 -53 l 45 248 l 0 248 z"},accSagittalShaftUp:{x_min:0,x_max:31,y_min:-359,y_max:172,ha:531,o:"m 0 112 l 0 -517 l 45 -517 l 45 112 l 23 248 z"},accSagittalShaftDown:{x_min:0,x_max:31,y_min:-172,y_max:359,ha:531,o:"m 23 -248 l 45 -112 l 45 517 l 0 517 l 0 -112 z"},accSagittalAcute:{x_min:0,x_max:125,y_min:-62,y_max:125,ha:187,o:"m 0 0 l 0 -89 l 180 89 l 180 180 z"},accSagittalGrave:{x_min:0,x_max:125,y_min:-125,y_max:62,ha:187,o:"m 180 -180 l 180 -89 l 0 89 l 0 0 z"},accSagittal1MinaUp:{x_min:-7,x_max:124,y_min:16,y_max:106.31676725154982,ha:90.31676725154982,o:"m -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 134 150 179 112 163 135 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z"},accSagittal1MinaDown:{x_min:-7,x_max:124,y_min:-106.31676725154983,y_max:-16,ha:90.31676725154983,o:"m -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 179 -23 163 -135 179 -112 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z"},accSagittal2MinasUp:{x_min:-7,x_max:218,y_min:16,y_max:106.31676725154982,ha:90.31676725154982,o:"m -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 269 150 314 112 298 135 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z"},accSagittal2MinasDown:{x_min:-7,x_max:218,y_min:-106.31676725154983,y_max:-16,ha:90.31676725154983,o:"m -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z"},accSagittal1TinaUp:{x_min:0,x_max:93,y_min:16,y_max:107,ha:91,o:"m 134 154 l 91 154 b 81 76 91 101 91 86 b 0 68 73 69 48 68 l 0 23 b 134 154 122 23 134 36 z"},accSagittal1TinaDown:{x_min:0,x_max:93,y_min:-107,y_max:-16,ha:91,o:"m 134 -154 b 0 -23 134 -36 122 -23 l 0 -68 b 81 -76 48 -68 73 -69 b 91 -154 91 -86 91 -101 z"},accSagittal2TinasUp:{x_min:0,x_max:94,y_min:16,y_max:107,ha:91,o:"m 135 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z"},accSagittal2TinasDown:{x_min:0,x_max:94,y_min:-107,y_max:-16,ha:91,o:"m 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 z"},accSagittal3TinasUp:{x_min:-7,x_max:124,y_min:16,y_max:106.31676725154982,ha:90.31676725154982,o:"m -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 134 150 179 112 163 135 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z"},accSagittal3TinasDown:{x_min:-7,x_max:124,y_min:-106.31676725154983,y_max:-16,ha:90.31676725154983,o:"m -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 179 -23 163 -135 179 -112 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z"},accSagittal4TinasUp:{x_min:0,x_max:187,y_min:16,y_max:106.69999999999997,ha:90.69999999999997,o:"m 0 68 l 0 23 b 143 45 105 23 124 26 b 203 107 153 55 183 107 b 226 23 216 107 226 86 l 269 23 b 225 150 269 112 253 135 b 160 132 207 158 181 153 b 115 81 138 112 124 88 b 0 68 104 71 94 68 z"},accSagittal4TinasDown:{x_min:0,x_max:187,y_min:-106.69999999999999,y_max:-16,ha:90.69999999999999,o:"m 0 -68 b 115 -81 94 -68 104 -71 b 160 -132 124 -88 138 -112 b 225 -150 181 -153 207 -158 b 269 -23 253 -135 269 -112 l 226 -23 b 203 -107 226 -86 216 -107 b 143 -45 183 -107 153 -55 b 0 -23 124 -26 105 -23 z"},accSagittal5TinasUp:{x_min:0,x_max:218,y_min:16,y_max:107,ha:91,o:"m 135 23 b 187 45 156 23 168 26 b 249 107 197 55 228 107 b 271 23 262 107 271 86 l 314 23 b 269 150 314 112 298 135 b 204 132 252 158 226 153 b 160 81 183 112 168 88 b 135 68 148 71 147 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z"},accSagittal5TinasDown:{x_min:0,x_max:218,y_min:-107,y_max:-16,ha:91,o:"m 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 b 160 -81 147 -68 148 -71 b 204 -132 168 -88 183 -112 b 269 -150 226 -153 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 249 -107 271 -86 262 -107 b 187 -45 228 -107 197 -55 b 135 -23 168 -26 156 -23 z"},accSagittal6TinasUp:{x_min:-7,x_max:218,y_min:16,y_max:106.31676725154982,ha:90.31676725154982,o:"m -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 269 150 314 112 298 135 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z"},accSagittal6TinasDown:{x_min:-7,x_max:218,y_min:-106.31676725154983,y_max:-16,ha:90.31676725154983,o:"m -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z"},accSagittal7TinasUp:{x_min:0,x_max:281,y_min:16,y_max:106.69999999999997,ha:90.69999999999997,o:"m 0 68 l 0 23 b 143 45 105 23 124 26 b 203 107 153 55 183 107 b 226 23 216 107 226 86 l 269 23 b 298 65 269 23 291 55 b 343 107 314 86 331 107 b 361 23 354 107 363 86 l 405 23 b 360 150 405 112 389 135 b 294 130 343 158 311 150 b 264 92 281 115 272 104 b 225 150 258 127 245 140 b 160 132 207 158 181 153 b 115 81 138 112 124 88 b 0 68 104 71 94 68 z"},accSagittal7TinasDown:{x_min:0,x_max:281,y_min:-106.69999999999999,y_max:-16,ha:90.69999999999999,o:"m 0 -68 b 115 -81 94 -68 104 -71 b 160 -132 124 -88 138 -112 b 225 -150 181 -153 207 -158 b 264 -92 245 -140 258 -127 b 294 -130 272 -104 281 -115 b 360 -150 311 -150 343 -158 b 405 -23 389 -135 405 -112 l 361 -23 b 343 -107 363 -86 354 -107 b 298 -65 331 -107 314 -86 b 269 -23 291 -55 269 -23 l 226 -23 b 203 -107 226 -86 216 -107 b 143 -45 183 -107 153 -55 b 0 -23 124 -26 105 -23 z"},accSagittal8TinasUp:{x_min:0,x_max:312,y_min:16,y_max:107,ha:91,o:"m 135 23 b 187 45 156 23 168 26 b 249 107 197 55 228 107 b 271 23 262 107 271 86 l 314 23 b 343 65 314 23 336 55 b 387 107 359 86 376 107 b 406 23 399 107 408 86 l 449 23 b 405 150 449 112 433 135 b 338 130 387 158 356 150 b 308 92 325 115 317 104 b 269 150 302 127 289 140 b 204 132 252 158 226 153 b 160 81 183 112 168 88 b 135 68 148 71 147 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z"},accSagittal8TinasDown:{x_min:0,x_max:312,y_min:-107,y_max:-16,ha:91,o:"m 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 b 160 -81 147 -68 148 -71 b 204 -132 168 -88 183 -112 b 269 -150 226 -153 252 -158 b 308 -92 289 -140 302 -127 b 338 -130 317 -104 325 -115 b 405 -150 356 -150 387 -158 b 449 -23 433 -135 449 -112 l 406 -23 b 387 -107 408 -86 399 -107 b 343 -65 376 -107 359 -86 b 314 -23 336 -55 314 -23 l 271 -23 b 249 -107 271 -86 262 -107 b 187 -45 228 -107 197 -55 b 135 -23 168 -26 156 -23 z"},accSagittal9TinasUp:{x_min:-7,x_max:312,y_min:16,y_max:106.31676725154982,ha:90.31676725154982,o:"m -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 343 65 314 23 336 55 b 387 107 359 86 376 107 b 406 23 399 107 408 86 l 449 23 b 405 150 449 112 433 135 b 338 130 387 158 356 150 b 308 92 325 115 317 104 b 269 150 302 127 289 140 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z"},accSagittal9TinasDown:{x_min:-7,x_max:312,y_min:-106.31676725154983,y_max:-16,ha:90.31676725154983,o:"m -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 308 -92 289 -140 302 -127 b 338 -130 317 -104 325 -115 b 405 -150 356 -150 387 -158 b 449 -23 433 -135 449 -112 l 406 -23 b 387 -107 408 -86 399 -107 b 343 -65 376 -107 359 -86 b 314 -23 336 -55 314 -23 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z"},accSagittalFractionalTinaUp:{x_min:-3,x_max:35,y_min:73,y_max:111,ha:38,o:"m -4 132 b 23 105 -4 118 9 105 b 50 132 37 105 50 118 b 23 160 50 147 37 160 b -4 132 9 160 -4 147 z"},accSagittalFractionalTinaDown:{x_min:-3,x_max:35,y_min:-111,y_max:-73,ha:38,o:"m -4 -132 b 23 -160 -4 -147 9 -160 b 50 -132 37 -160 50 -147 b 23 -105 50 -118 37 -105 b -4 -132 9 -105 -4 -118 z"},accidentalNarrowReversedFlat:{x_min:0,x_max:164,y_min:-194,y_max:421,ha:615,o:"m 236 -279 l 236 606 l 192 606 l 192 179 b 85 243 150 222 114 243 b 0 84 23 243 0 134 b 112 -158 0 3 37 -78 z m 192 112 l 192 -163 l 135 -98 b 82 40 101 -50 82 -3 b 138 144 82 73 96 144 b 192 112 153 144 170 132 z"},accidentalNarrowReversedFlatAndFlat:{x_min:0,x_max:414,y_min:-194,y_max:421,ha:615,o:"m 281 606 l 281 -268 l 438 -158 b 596 84 547 -82 596 3 b 475 243 596 154 556 243 b 325 179 435 243 384 222 l 325 606 z m 235 -279 l 235 606 l 190 606 l 190 179 b 85 243 148 222 114 243 b 12 158 52 243 27 215 b 0 84 3 134 0 108 b 112 -158 0 3 37 -78 z m 325 111 b 410 144 359 132 386 144 b 498 36 462 144 498 84 b 413 -107 498 -9 469 -58 l 325 -173 z m 192 112 l 192 -163 l 135 -98 b 81 40 99 -50 81 -3 b 91 94 81 59 84 76 b 137 144 102 127 118 144 b 192 112 153 144 170 132 z"},accidentalWilsonPlus:{x_min:0,x_max:281,y_min:-203,y_max:203,ha:406,o:"m 405 268 l 225 98 l 225 292 l 180 292 l 180 56 l 0 -112 l 0 -268 l 180 -98 l 180 -292 l 225 -292 l 225 -56 l 405 112 z"},accidentalWilsonMinus:{x_min:0,x_max:281,y_min:-186,y_max:186,ha:372,o:"m 0 112 l 405 -268 l 405 -112 l 0 268 z"}},fontFamily:"Bravura",resolution:1e3,generatedOn:"2022-06-26T17:36:54.186Z"},metrics:{name:"Bravura",smufl:!0,stave:{padding:12,endPaddingMax:10,endPaddingMin:5,unalignedNotePadding:10},accidental:{noteheadAccidentalPadding:1,leftPadding:2,accidentalSpacing:3},clef:{default:{point:32,width:26},small:{point:26,width:20},annotations:{"8va":{smuflCode:"timeSig8",default:{point:18,treble:{line:-1.4,shiftX:12}},small:{point:16,treble:{line:-.2,shiftX:8}}},"8vb":{smuflCode:"timeSig8",default:{point:18,treble:{line:6,shiftX:10},bass:{line:3.5,shiftX:1}},small:{point:16,treble:{line:5.3,shiftX:6},bass:{line:3.1,shiftX:.5}}}},lineCount:{8:{point:55,shiftY:14},7:{point:47,shiftY:8},6:{point:32,shiftY:1},5:{point:30,shiftY:-6},4:{point:23,shiftY:-12}}},parenthesis:{default:{point:39,width:7},gracenote:{point:23.4,width:3}},pedalMarking:{up:{point:40},down:{point:34}},digits:{shiftLine:-1,point:34,tupletPoint:22,shiftY:-6},articulation:{articStaccatissimoAbove:{padding:2},articStaccatissimoBelow:{padding:2}},tremolo:{default:{point:25,spacing:5,offsetYStemUp:-5,offsetYStemDown:5,offsetXStemUp:11,offsetXStemDown:1},grace:{point:18,spacing:4,offsetYStemUp:-5,offsetYStemDown:5,offsetXStemUp:7,offsetXStemDown:1}},staveRepetition:{symbolText:{offsetX:12,offsetY:25,spacing:5},coda:{offsetY:25},segno:{offsetY:10}},stem:{heightAdjustmentForFlag:-3,noteHead:{noteheadTriangleUpHalf:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpBlack:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpWhole:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadXHalf:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXBlack:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXWhole:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadHalf:{offsetYBaseStemUp:-2.55,offsetYBaseStemDown:2.65},noteheadBlack:{offsetYBaseStemUp:-2,offsetYBaseStemDown:2},noteheadSquareWhite:{offsetYBaseStemDown:-5,offsetYBaseStemUp:5}}},glyphs:{coda:{point:20,shiftX:-7,shiftY:8},segno:{shiftX:-7},flag:{shiftX:-.75,staveTempo:{shiftX:-1}},clef:{gClef:{default:{scale:1.1,shiftY:1},small:{shiftY:1.5}},fClef:{default:{shiftY:-.5}}},ornament:{ornamentTurn:{scale:1.2},ornamentTurnSlash:{scale:1.2}},stringNumber:{verticalPadding:8,stemPadding:2,leftPadding:5,rightPadding:6},stroke:{arrowheadBlackDown:{straight:{shiftX:-4.5},wiggly:{shiftX:-1,shiftY:1}},arrowheadBlackUp:{straight:{shiftX:-.85},wiggly:{shiftX:-1,shiftY:1}}},textNote:{point:34,breathMarkTick:{point:36,shiftY:9},breathMarkComma:{point:36},segno:{point:30,shiftX:-7,shiftY:8},coda:{point:20,shiftX:-7,shiftY:8},ornamentTrill:{shiftX:-8,shiftY:8},ornamentTurn:{point:42},ornamentTurnSlash:{point:42},ornamentMordent:{shiftX:-8},ornamentShortTrill:{shiftX:-8}},noteHead:{minPadding:2,standard:{restQuarterStemUp:{point:35},restQuarterStemDown:{point:35}},custom:{noteheadCircleXStemUp:{shiftX:1.5},noteheadCircleXStemDown:{shiftX:.25},noteheadDiamondHalfStemUp:{shiftX:1.5},noteheadDiamondBlackStemUp:{shiftX:1.5},noteheadDiamondWholeStemUp:{shiftX:1},noteheadXHalfStemUp:{shiftX:-2},noteheadXHalfStemDown:{shiftX:1},noteheadXWholeStemUp:{shiftX:-4},noteheadXWholeStemDown:{shiftX:1},noteheadXDoubleWholeStemUp:{shiftX:-4},noteheadXDoubleWholeStemDown:{shiftX:1},noteheadSquareWhiteStemDown:{shiftX:.25},noteheadSquareWhiteStemUp:{shiftX:-.75},noteheadSquareBlackStemUp:{shiftX:-.75},noteheadTriangleUpWholeStemUp:{shiftX:-.75}}},chordSymbol:{global:{superscriptOffset:-400,subscriptOffset:300,kerningOffset:-250,lowerKerningText:["D","F","P","T","V","Y"],upperKerningText:["A","L"],spacing:100,superSubRatio:.66},csymDiminished:{scale:.8,leftSideBearing:-32,advanceWidth:506,yOffset:0},csymHalfDiminished:{scale:.8,leftSideBearing:-32,advanceWidth:506,yOffset:0},csymAugmented:{scale:1,leftSideBearing:0,advanceWidth:530,yOffset:0},csymParensLeftTall:{scale:.8,leftSideBearing:-20,advanceWidth:184,yOffset:250},csymParensRightTall:{scale:.8,leftSideBearing:0,advanceWidth:189,yOffset:250},csymBracketLeftTall:{scale:.8,leftSideBearing:0,advanceWidth:328,yOffset:0},csymBracketRightTall:{scale:.8,leftSideBearing:1,advanceWidth:600,yOffset:0},csymParensLeftVeryTall:{scale:.9,leftSideBearing:50,advanceWidth:121,yOffset:350},csymParensRightVeryTall:{scale:.9,leftSideBearing:0,advanceWidth:111,yOffset:350},csymDiagonalArrangementSlash:{scale:.6,leftSideBearing:-1,advanceWidth:990,yOffset:0},csymMinor:{scale:.8,leftSideBearing:0,advanceWidth:482,yOffset:0},csymMajorSeventh:{scale:.9,leftSideBearing:200,yOffset:0,advanceWidth:600},accidentalSharp:{scale:.75,leftSideBearing:20,advanceWidth:250,yOffset:-302},accidentalFlat:{scale:.9,leftSideBearing:-20,advanceWidth:226,yOffset:-184}},jazzOrnaments:{brassScoop:{scale:1,xOffset:-12,yOffset:0,stemUpYOffset:0,reportedWidth:20},brassDoitMedium:{scale:1,xOffset:16,yOffset:0,stemUpYOffset:0,reportedWidth:22},brassFallLipShort:{scale:1,xOffset:16,yOffset:0,stemUpYOffset:0,reportedWidth:15},brassLiftMedium:{scale:1,xOffset:16,yOffset:5,stemUpYOffset:0,reportedWidth:5},brassFallRoughMedium:{scale:1,xOffset:16,yOffset:28,stemUpYOffset:0,reportedWidth:5},brassBend:{scale:1,xOffset:2,yOffset:-8,stemUpYOffset:25,reportedWidth:5},brassMuteClosed:{scale:1,xOffset:3,yOffset:-8,stemUpYOffset:25,reportedWidth:5},brassMuteOpen:{scale:1,xOffset:3,yOffset:-7,stemUpYOffset:25,reportedWidth:5},brassFlip:{scale:1,xOffset:10,yOffset:0,stemUpYOffset:7,reportedWidth:10},brassJazzTurn:{scale:1,xOffset:0,yOffset:0,stemUpYOffset:8,reportedWidth:31},brassSmear:{scale:1,xOffset:10,yOffset:0,stemUpYOffset:8,reportedWidth:5}},tuplet:{noteHeadOffset:20,stemOffset:10,bottomLine:4,topModifierOffset:15}}}};return l=l.default})()})); +//# sourceMappingURL=vexflow-font-bravura.js.map \ No newline at end of file diff --git a/build/cjs/vexflow-font-bravura.js.map b/build/cjs/vexflow-font-bravura.js.map new file mode 100644 index 0000000000..8f977e2e08 --- /dev/null +++ b/build/cjs/vexflow-font-bravura.js.map @@ -0,0 +1 @@ +{"version":3,"file":"vexflow-font-bravura.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAqB,YAAID,KAEzBD,EAAkB,YAAIA,EAAkB,aAAK,GAAIA,EAAkB,YAAW,QAAIC,KARpF,CASsB,oBAAXK,OAAyBA,OAA+B,oBAAfC,WAA6BA,WAAaC,MAAO,WACrG,M,mBCTA,IAAIC,EAAsB,CCA1BA,EAAwB,CAACP,EAASQ,KACjC,IAAI,IAAIC,KAAOD,EACXD,EAAoBG,EAAEF,EAAYC,KAASF,EAAoBG,EAAEV,EAASS,IAC5EE,OAAOC,eAAeZ,EAASS,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,MCJ3EF,EAAwB,CAACQ,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,I,4BCA3E,MCaP,EAJoB,CAChBI,KDVuB,CACvBC,OAAQ,CACJC,WAAY,CACRC,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,iLAEPkB,cAAe,CACXL,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,oMAEPmB,YAAa,CACTN,MAAO,EACPC,MAAO,GACPC,MAAO,IACPC,MAAO,KACPC,GAAI,IACJjB,EAAG,2CAEPoB,eAAgB,CACZP,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,ySAEPqB,MAAO,CACHR,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,svCAEPsB,KAAM,CACFT,OAAQ,EACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,4oBAEPuB,MAAO,CACHV,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,KACPC,GAAI,KACJjB,EAAG,k6CAEPwB,MAAO,CACHX,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,yvCAEPyB,MAAO,CACHZ,OAAQ,EACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ymBAEP0B,yBAA0B,CACtBb,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oTAEP,iBAAkB,CACda,OAAQ,EACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,qkBAEP2B,SAAU,CACNd,MAAO,GACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0OAEP4B,SAAU,CACNf,MAAO,GACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6fAEP6B,SAAU,CACNhB,MAAO,GACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,uqBAEP8B,SAAU,CACNjB,MAAO,GACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,+4BAEP+B,SAAU,CACNlB,MAAO,GACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,yqBAEPgC,SAAU,CACNnB,MAAO,GACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qsBAEPiC,SAAU,CACNpB,MAAO,GACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8mBAEPkC,SAAU,CACNrB,MAAO,GACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,imBAEPmC,SAAU,CACNtB,MAAO,GACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wcAEPoC,SAAU,CACNvB,MAAO,GACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,koBAEPqC,cAAe,CACXxB,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qZAEPsC,iBAAkB,CACdzB,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,y3BAEPuC,YAAa,CACT1B,OAAQ,EACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,maAEPwC,iBAAkB,CACd3B,OAAQ,EACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,maAEPyC,aAAc,CACV5B,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,GACPC,GAAI,GACJjB,EAAG,iIAEP0C,mBAAoB,CAChB7B,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8PAEP2C,wBAAyB,CACrB9B,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4MAEP4C,kBAAmB,CACf/B,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6RAEP6C,uBAAwB,CACpBhC,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oOAEP8C,oBAAqB,CACjBjC,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,i1BAEP+C,cAAe,CACXlC,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,iTAEPgD,aAAc,CACVnC,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,+QAEPiD,cAAe,CACXpC,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mHAEPkD,qBAAsB,CAClBrC,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qkCAEPmD,eAAgB,CACZtC,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,uiBAEPoD,cAAe,CACXvC,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wiBAEPqD,eAAgB,CACZxC,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,uYAEPsD,2BAA4B,CACxBzC,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,g+BAEPuD,qBAAsB,CAClB1C,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qYAEPwD,oBAAqB,CACjB3C,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,uYAEPyD,gBAAiB,CACb5C,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,saAEP0D,2BAA4B,CACxB7C,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qsCAEP2D,qBAAsB,CAClB9C,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wiBAEP4D,oBAAqB,CACjB/C,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ulBAEP6D,qBAAsB,CAClBhD,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,+aAEP8D,0BAA2B,CACvBjD,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2gBAEP+D,oBAAqB,CACjBlD,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qFAEPgE,oBAAqB,CACjBnD,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2CAEPiE,gCAAiC,CAC7BpD,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,s2BAEPkE,0BAA2B,CACvBrD,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0SAEPmE,yBAA0B,CACtBtD,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6OAEPoE,0BAA2B,CACvBvD,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,kCAEPqE,8BAA+B,CAC3BxD,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,03BAEPsE,wBAAyB,CACrBzD,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wTAEPuE,uBAAwB,CACpB1D,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qPAEPwE,wBAAyB,CACrB3D,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mCAEPyE,4BAA6B,CACzB5D,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,i0CAEP0E,sBAAuB,CACnB7D,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4pBAEP2E,qBAAsB,CAClB9D,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,imBAEP4E,sBAAuB,CACnB/D,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,sZAEP6E,4BAA6B,CACzBhE,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,myCAEP8E,sBAAuB,CACnBjE,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4qBAEP+E,qBAAsB,CAClBlE,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,srBAEPgF,sBAAuB,CACnBnE,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gbAEPiF,2BAA4B,CACxBpE,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,y/BAEPkF,qBAAsB,CAClBrE,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,saAEPmF,oBAAqB,CACjBtE,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,kWAEPoF,qBAAsB,CAClBvE,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gOAEPqF,oBAAqB,CACjBxE,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wTAEPsF,yBAA0B,CACtBzE,OAAQ,GACRC,MAAO,GACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qJAEPuF,wBAAyB,CACrB1E,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gJAEPwF,kBAAmB,CACf3E,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6FAEPyF,0BAA2B,CACvB5E,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,iCAEP0F,2BAA4B,CACxB7E,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mCAEP2F,+BAAgC,CAC5B9E,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8FAEP4F,gBAAiB,CACb/E,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,GACPC,GAAI,IACJjB,EAAG,kGAEP6F,SAAU,CACNhF,OAAQ,IACRC,MAAO,IACPC,OAAQ,GACRC,MAAO,GACPC,GAAI,IACJjB,EAAG,+CAEP8F,UAAW,CACPjF,MAAO,EACPC,MAAO,IACPC,OAAQ,kBACRC,MAAO,EACPC,GAAI,kBACJjB,EAAG,4UAEP+F,YAAa,CACTlF,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wRAEPgG,WAAY,CACRnF,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,kyBAEPiG,aAAc,CACVpF,MAAO,EACPC,MAAO,kBACPC,OAAQ,EACRC,MAAO,SACPC,GAAI,SACJjB,EAAG,kmBAEPkG,WAAY,CACRrF,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mhCAEPmG,aAAc,CACVtF,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,85BAEPoG,WAAY,CACRvF,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,ivCAEPqG,aAAc,CACVxF,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,qnCAEPsG,YAAa,CACTzF,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,m+CAEPuG,cAAe,CACX1F,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,80CAEPwG,eAAgB,CACZ3F,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,igBAEPyG,kBAAmB,CACf5F,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2hBAEP0G,gBAAiB,CACb7F,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,s5CAEP2G,sBAAuB,CACnB9F,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,w0BAEP4G,qBAAsB,CAClB/F,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mmCAEP6G,qBAAsB,CAClBhG,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gPAEP8G,sBAAuB,CACnBjG,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,+MAEP+G,+BAAgC,CAC5BlG,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wiBAEPgH,0CAA2C,CACvCnG,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oqCAEPiH,gCAAiC,CAC7BpG,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,g6BAEPkH,sCAAuC,CACnCrG,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,03DAEPmH,4BAA6B,CACzBtG,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,uwCAEPoH,qBAAsB,CAClBvG,OAAQ,EACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,i9BAEPqH,oBAAqB,CACjBxG,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,+6BAEPsH,6BAA8B,CAC1BzG,OAAQ,EACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2yCAEPuH,gBAAiB,CACb1G,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8MAEPwH,eAAgB,CACZ3G,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2pBAEPyH,iBAAkB,CACd5G,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,wUAEP0H,iBAAkB,CACd7G,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,gXAEP2H,iBAAkB,CACd9G,OAAQ,EACRC,MAAO,IACPC,MAAO,EACPC,MAAO,GACPC,GAAI,GACJjB,EAAG,wGAEP4H,iBAAkB,CACd/G,OAAQ,EACRC,MAAO,IACPC,OAAQ,GACRC,MAAO,EACPC,GAAI,GACJjB,EAAG,kHAEP6H,mBAAoB,CAChBhH,MAAO,EACPC,MAAO,GACPC,MAAO,EACPC,MAAO,GACPC,GAAI,GACJjB,EAAG,8FAEP8H,mBAAoB,CAChBjH,MAAO,EACPC,MAAO,GACPC,OAAQ,GACRC,MAAO,EACPC,GAAI,GACJjB,EAAG,wGAEP+H,wBAAyB,CACrBlH,MAAO,EACPC,MAAO,IACPC,OAAQ,EACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,yGAEPgI,wBAAyB,CACrBnH,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,gHAEPiI,kBAAmB,CACfpH,OAAQ,EACRC,MAAO,IACPC,OAAQ,EACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4TAEPkI,kBAAmB,CACfrH,OAAQ,EACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,2WAEPmI,aAAc,CACVtH,MAAO,EACPC,MAAO,IACPC,OAAQ,EACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,+XAEPoI,aAAc,CACVvH,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,kaAEPqI,iBAAkB,CACdxH,MAAO,EACPC,MAAO,IACPC,OAAQ,EACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0UAEPsI,iBAAkB,CACdzH,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,wWAEPuI,qBAAsB,CAClB1H,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,gkBAEPwI,qBAAsB,CAClB3H,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,ooBAEPyI,kBAAmB,CACf5H,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,wUAEP0I,kBAAmB,CACf7H,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,6WAEP2I,gBAAiB,CACb9H,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,4RAEP4I,gBAAiB,CACb/H,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,+OAEP6I,QAAS,CACLhI,MAAO,EACPC,MAAO,IACPC,OAAQ,EACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0XAEP8I,cAAe,CACXjI,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,kXAEP+I,WAAY,CACRlI,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,iUAEPgJ,gBAAiB,CACbnI,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,sIAEPiJ,UAAW,CACPpI,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,sJAEPkJ,mBAAoB,CAChBrI,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,GACPC,GAAI,IACJjB,EAAG,0OAEPmJ,SAAU,CACNtI,MAAO,EACPC,MAAO,IACPC,OAAQ,EACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0IAEPoJ,kBAAmB,CACfvI,OAAQ,IACRC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4NAEPqJ,YAAa,CACTxI,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,k6BAEPsJ,QAAS,CACLzI,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ibAEPuJ,SAAU,CACN1I,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,grBAEPwJ,SAAU,CACN3I,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,kgCAEPyJ,SAAU,CACN5I,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,m5CAEP0J,UAAW,CACP7I,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,yjDAEP2J,aAAc,CACV9I,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,+yBAEP4J,aAAc,CACV/I,OAAQ,GACRC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,87BAEP6J,aAAc,CACVhJ,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2wBAEP8J,mBAAoB,CAChBjJ,OAAQ,GACRC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,4gBAEP+J,iBAAkB,CACdlJ,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mfAEPgK,SAAU,CACNnJ,OAAQ,GACRC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,quBAEPiK,cAAe,CACXpJ,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,k2CAEPkK,aAAc,CACVrJ,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,6bAEPmK,kBAAmB,CACftJ,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2uBAEPoK,gBAAiB,CACbvJ,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4zBAEPqK,mBAAoB,CAChBxJ,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,ivBAEPsK,oBAAqB,CACjBzJ,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,mhCAEPuK,2BAA4B,CACxB1J,MAAO,EACPC,MAAO,KACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,szCAEPwK,oCAAqC,CACjC3J,MAAO,EACPC,MAAO,KACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,suCAEPyK,8BAA+B,CAC3B5J,MAAO,EACPC,MAAO,KACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,47CAEP0K,mCAAoC,CAChC7J,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,4sCAEP2K,wCAAyC,CACrC9J,MAAO,EACPC,MAAO,KACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,qxCAEP4K,4CAA6C,CACzC/J,MAAO,EACPC,MAAO,KACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,kxCAEP6K,gCAAiC,CAC7BhK,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,kiCAEP8K,WAAY,CACRjK,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,GACPC,GAAI,IACJjB,EAAG,4KAEP+K,gBAAiB,CACblK,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,iKAEPgL,kBAAmB,CACfnK,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,GACPC,GAAI,IACJjB,EAAG,8LAEPiL,gBAAiB,CACbpK,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,09CAEPkL,qBAAsB,CAClBrK,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,q8CAEPmL,UAAW,CACPtK,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,mRAEPoL,gBAAiB,CACbvK,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,qHAEPqL,cAAe,CACXxK,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,mNAEPsL,UAAW,CACPzK,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,oNAEPuL,cAAe,CACX1K,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,6sBAEPwL,WAAY,CACR3K,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,8ZAEPyL,eAAgB,CACZ5K,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,4OAEP0L,aAAc,CACV7K,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,+OAEP2L,gBAAiB,CACb9K,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,iNAEP4L,0BAA2B,CACvB/K,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,2QAEP6L,0BAA2B,CACvBhL,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,sRAEP8L,yBAA0B,CACtBjL,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,qHAEP+L,iBAAkB,CACdlL,MAAO,EACPC,MAAO,KACPC,OAAQ,EACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gnEAEPgM,gBAAiB,CACbnL,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,uxDAEPiM,gBAAiB,CACbpL,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,4RAEPkM,mBAAoB,CAChBrL,OAAQ,GACRC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,kWAEPmM,iBAAkB,CACdtL,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,6JAEPoM,mBAAoB,CAChBvL,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,gLAEPqM,aAAc,CACVxL,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,KACPC,GAAI,KACJjB,EAAG,mrCAEPsM,eAAgB,CACZzL,MAAO,EACPC,MAAO,IACPC,OAAQ,EACRC,MAAO,KACPC,GAAI,KACJjB,EAAG,ssCAEPuM,WAAY,CACR1L,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6aAEPwM,YAAa,CACT3L,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6oBAEPyM,YAAa,CACT5L,MAAO,EACPC,MAAO,KACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qlCAEP0M,eAAgB,CACZ7L,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,uMAEP2M,eAAgB,CACZ9L,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,yNAEP4M,mBAAoB,CAChB/L,OAAQ,GACRC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6YAEP6M,cAAe,CACXhM,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,qHAEP8M,iBAAkB,CACdjM,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,2DAEP+M,UAAW,CACPlM,MAAO,EACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,GAAI,GACJjB,EAAG,yCAEPgN,mBAAoB,CAChBnM,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,+QAEPiN,oBAAqB,CACjBpM,OAAQ,GACRC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,wRAEPkN,oBAAqB,CACjBrM,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,uNAEPmN,qBAAsB,CAClBtM,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,yMAEPoN,uBAAwB,CACpBvM,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,iPAEPqN,wBAAyB,CACrBxM,OAAQ,GACRC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,uPAEPsN,6BAA8B,CAC1BzM,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,2CAEPuN,wBAAyB,CACrB1M,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wKAEPwN,0BAA2B,CACvB3M,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mKAEPyN,oBAAqB,CACjB5M,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0EAEP0N,sBAAuB,CACnB7M,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,yEAEP2N,oBAAqB,CACjB9M,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oIAEP4N,sBAAuB,CACnB/M,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wIAEP6N,2BAA4B,CACxBhN,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6GAEP8N,6BAA8B,CAC1BjN,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4GAEP+N,4BAA6B,CACzBlN,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,sKAEPgO,8BAA+B,CAC3BnN,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,yKAEPiO,4BAA6B,CACzBpN,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6FAEPkO,8BAA+B,CAC3BrN,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0FAEPmO,2BAA4B,CACxBtN,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mOAEPoO,6BAA8B,CAC1BvN,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oOAEPqO,2BAA4B,CACxBxN,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,kKAEPsO,6BAA8B,CAC1BzN,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,kKAEPuO,wBAAyB,CACrB1N,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,kUAEPwO,qBAAsB,CAClB3N,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oTAEPyO,uBAAwB,CACpB5N,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2LAEP0O,oBAAqB,CACjB7N,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,iMAEP2O,uBAAwB,CACpB9N,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,iHAEP4O,oBAAqB,CACjB/N,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4GAEP6O,yBAA0B,CACtBhO,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gNAEP8O,sBAAuB,CACnBjO,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,+MAEP+O,iBAAkB,CACdlO,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gJAEPgP,gBAAiB,CACbnO,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wIAEPiP,uBAAwB,CACpBpO,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4QAEPkP,wBAAyB,CACrBrO,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2PAEPmP,qBAAsB,CAClBtO,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8JAEPoP,sBAAuB,CACnBvO,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,sJAEPqP,qBAAsB,CAClBxO,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2NAEPsP,sBAAuB,CACnBzO,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8NAEPuP,sBAAuB,CACnB1O,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qMAEPwP,uBAAwB,CACpB3O,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4LAEPyP,sBAAuB,CACnB5O,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,yQAEP0P,uBAAwB,CACpB7O,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0QAEP2P,sBAAuB,CACnB9O,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mLAEP4P,uBAAwB,CACpB/O,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wKAEP6P,sBAAuB,CACnBhP,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,iSAEP8P,uBAAwB,CACpBjP,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gSAEP+P,sBAAuB,CACnBlP,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wOAEPgQ,uBAAwB,CACpBnP,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,sOAEPiQ,8BAA+B,CAC3BpP,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0RAEPkQ,2BAA4B,CACxBrP,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4QAEPmQ,6BAA8B,CAC1BtP,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8NAEPoQ,0BAA2B,CACvBvP,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mOAEPqQ,6BAA8B,CAC1BxP,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2IAEPsQ,0BAA2B,CACvBzP,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,yIAEPuQ,+BAAgC,CAC5B1P,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2MAEPwQ,4BAA6B,CACzB3P,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0MAEPyQ,uBAAwB,CACpB5P,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,+IAEP0Q,sBAAuB,CACnB7P,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,yIAEP2Q,yBAA0B,CACtB9P,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ySAEP4Q,2BAA4B,CACxB/P,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6RAEP6Q,qBAAsB,CAClBhQ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,+SAEP8Q,uBAAwB,CACpBjQ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oSAEP+Q,qBAAsB,CAClBlQ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,uEAEPgR,uBAAwB,CACpBnQ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,sEAEPiR,uBAAwB,CACpBpQ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gIAEPkR,yBAA0B,CACtBrQ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oIAEPmR,6BAA8B,CAC1BtQ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wRAEPoR,+BAAgC,CAC5BvQ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gRAEPqR,0BAA2B,CACvBxQ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,uTAEPsR,uBAAwB,CACpBzQ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0SAEPuR,0BAA2B,CACvB1Q,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,sUAEPwR,uBAAwB,CACpB3Q,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,iTAEPyR,wBAAyB,CACrB5Q,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qHAEP0R,qBAAsB,CAClB7Q,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gHAEP2R,wBAAyB,CACrB9Q,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,uRAEP4R,qBAAsB,CAClB/Q,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,sRAEP6R,0BAA2B,CACvBhR,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,yJAEP8R,uBAAwB,CACpBjR,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oJAEP+R,wBAAyB,CACrBlR,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,sUAEPgS,yBAA0B,CACtBnR,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0SAEPiS,sBAAuB,CACnBpR,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,+UAEPkS,uBAAwB,CACpBrR,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gUAEPmS,sBAAuB,CACnBtR,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2JAEPoS,uBAAwB,CACpBvR,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oJAEPqS,wBAAyB,CACrBxR,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8NAEPsS,yBAA0B,CACtBzR,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4NAEPuS,wBAAyB,CACrB1R,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8SAEPwS,yBAA0B,CACtB3R,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ySAEPyS,gCAAiC,CAC7B5R,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qTAEP0S,6BAA8B,CAC1B7R,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ySAEP2S,gCAAiC,CAC7B9R,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,kVAEP4S,6BAA8B,CAC1B/R,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,sUAEP6S,8BAA+B,CAC3BhS,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qIAEP8S,2BAA4B,CACxBjS,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,iIAEP+S,8BAA+B,CAC3BlS,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8QAEPgT,2BAA4B,CACxBnS,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,yQAEPiT,gCAAiC,CAC7BpS,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,iNAEPkT,6BAA8B,CAC1BrS,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gNAEPmT,qBAAsB,CAClBtS,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qKAEPoT,uBAAwB,CACpBvS,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gKAEPqT,uBAAwB,CACpBxS,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qJAEPsT,yBAA0B,CACtBzS,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8JAEPuT,6BAA8B,CAC1B1S,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mMAEPwT,+BAAgC,CAC5B3S,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4LAEPyT,0BAA2B,CACvB5S,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,+MAEP0T,uBAAwB,CACpB7S,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wMAEP2T,0BAA2B,CACvB9S,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6RAEP4T,uBAAwB,CACpB/S,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8RAEP6T,wBAAyB,CACrBhT,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4OAEP8T,qBAAsB,CAClBjT,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mOAEP+T,sBAAuB,CACnBlT,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2PAEPgU,uBAAwB,CACpBnT,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gPAEPiU,wBAAyB,CACrBpT,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wOAEPkU,yBAA0B,CACtBrT,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,sOAEPmU,wBAAyB,CACrBtT,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8QAEPoU,yBAA0B,CACtBvT,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,kQAEPqU,gCAAiC,CAC7BxT,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qNAEPsU,6BAA8B,CAC1BzT,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,iNAEPuU,gCAAiC,CAC7B1T,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,iSAEPwU,6BAA8B,CAC1B3T,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6RAEPyU,8BAA+B,CAC3B5T,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,iPAEP0U,2BAA4B,CACxB7T,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,yOAEP2U,uBAAwB,CACpB9T,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8KAEP4U,yBAA0B,CACtB/T,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,yKAEP6U,uBAAwB,CACpBhU,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wKAEP8U,yBAA0B,CACtBjU,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mKAEP+U,sBAAuB,CACnBlU,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,iOAEPgV,wBAAyB,CACrBnU,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wNAEPiV,wBAAyB,CACrBpU,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mTAEPkV,0BAA2B,CACvBrU,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8SAEPmV,qBAAsB,CAClBtU,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6RAEPoV,uBAAwB,CACpBvU,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mRAEPqV,uBAAwB,CACpBxU,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gQAEPsV,yBAA0B,CACtBzU,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gQAEPuV,2BAA4B,CACxB1U,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6QAEPwV,6BAA8B,CAC1B3U,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mQAEPyV,2BAA4B,CACxB5U,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6LAEP0V,6BAA8B,CAC1B7U,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,sLAEP2V,8BAA+B,CAC3B9U,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2LAEP4V,gCAAiC,CAC7B/U,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oMAEP6V,+BAAgC,CAC5BhV,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mQAEP8V,iCAAkC,CAC9BjV,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,kQAEP+V,4BAA6B,CACzBlV,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,yKAEPgW,8BAA+B,CAC3BnV,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,kKAEPiW,8BAA+B,CAC3BpV,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oKAEPkW,gCAAiC,CAC7BrV,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2KAEPmW,2BAA4B,CACxBtV,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oKAEPoW,6BAA8B,CAC1BvV,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qKAEPqW,8BAA+B,CAC3BxV,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4GAEPsW,gCAAiC,CAC7BzV,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2GAEPuW,6BAA8B,CAC1B1V,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,kOAEPwW,+BAAgC,CAC5B3V,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4NAEPyW,wBAAyB,CACrB5V,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gRAEP0W,qBAAsB,CAClB7V,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,uQAEP2W,wBAAyB,CACrB9V,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0WAEP4W,qBAAsB,CAClB/V,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wVAEP6W,0BAA2B,CACvBhW,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,+LAEP8W,uBAAwB,CACpBjW,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gMAEP+W,wBAAyB,CACrBlW,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wLAEPgX,qBAAsB,CAClBnW,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8LAEPiX,2BAA4B,CACxBpW,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oSAEPkX,wBAAyB,CACrBrW,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oSAEPmX,yBAA0B,CACtBtW,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,uOAEPoX,sBAAuB,CACnBvW,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gOAEPqX,wBAAyB,CACrBxW,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wOAEPsX,qBAAsB,CAClBzW,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6OAEPuX,wBAAyB,CACrB1W,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,kSAEPwX,qBAAsB,CAClB3W,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,kSAEPyX,sBAAuB,CACnB5W,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ySAEP0X,uBAAwB,CACpB7W,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gRAEP2X,sBAAuB,CACnB9W,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oPAEP4X,uBAAwB,CACpB/W,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0OAEP6X,uBAAwB,CACpBhX,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wSAEP8X,wBAAyB,CACrBjX,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qSAEP+X,yBAA0B,CACtBlX,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oYAEPgY,0BAA2B,CACvBnX,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wXAEPiY,sBAAuB,CACnBpX,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0WAEPkY,uBAAwB,CACpBrX,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,kVAEPmY,wBAAyB,CACrBtX,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qWAEPoY,yBAA0B,CACtBvX,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0VAEPqY,sBAAuB,CACnBxX,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8VAEPsY,uBAAwB,CACpBzX,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8VAEPuY,sBAAuB,CACnB1X,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,yQAEPwY,uBAAwB,CACpB3X,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6PAEPyY,wBAAyB,CACrB5X,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mRAEP0Y,yBAA0B,CACtB7X,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oRAEP2Y,yBAA0B,CACtB9X,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,yUAEP4Y,0BAA2B,CACvB/X,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,+TAEP6Y,sBAAuB,CACnBhY,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0PAEP8Y,uBAAwB,CACpBjY,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mPAEP+Y,wBAAyB,CACrBlY,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4PAEPgZ,yBAA0B,CACtBnY,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0PAEPiZ,sBAAuB,CACnBpY,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4PAEPkZ,uBAAwB,CACpBrY,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qPAEPmZ,yBAA0B,CACtBtY,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oMAEPoZ,0BAA2B,CACvBvY,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2LAEPqZ,wBAAyB,CACrBxY,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,yTAEPsZ,yBAA0B,CACtBzY,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,kSAEPuZ,8BAA+B,CAC3B1Y,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gRAEPwZ,2BAA4B,CACxB3Y,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2QAEPyZ,8BAA+B,CAC3B5Y,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oUAEP0Z,2BAA4B,CACxB7Y,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0TAEP2Z,gCAAiC,CAC7B9Y,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,+MAEP4Z,6BAA8B,CAC1B/Y,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,iNAEP6Z,8BAA+B,CAC3BhZ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,iOAEP8Z,2BAA4B,CACxBjZ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,+NAEP+Z,iCAAkC,CAC9BlZ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0SAEPga,8BAA+B,CAC3BnZ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,uSAEPia,+BAAgC,CAC5BpZ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6OAEPka,4BAA6B,CACzBrZ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qOAEPma,8BAA+B,CAC3BtZ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gSAEPoa,2BAA4B,CACxBvZ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ySAEPqa,8BAA+B,CAC3BxZ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ySAEPsa,2BAA4B,CACxBzZ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,sSAEPua,mBAAoB,CAChB1Z,MAAO,EACPC,MAAO,GACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,kDAEPwa,qBAAsB,CAClB3Z,MAAO,EACPC,MAAO,GACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mDAEPya,iBAAkB,CACd5Z,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,sCAEP0a,iBAAkB,CACd7Z,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,GACPC,GAAI,IACJjB,EAAG,uCAEP2a,mBAAoB,CAChB9Z,OAAQ,EACRC,MAAO,IACPC,MAAO,GACPC,MAAO,mBACPC,GAAI,kBACJjB,EAAG,2KAEP4a,qBAAsB,CAClB/Z,OAAQ,EACRC,MAAO,IACPC,OAAQ,mBACRC,OAAQ,GACRC,GAAI,kBACJjB,EAAG,sLAEP6a,oBAAqB,CACjBha,OAAQ,EACRC,MAAO,IACPC,MAAO,GACPC,MAAO,mBACPC,GAAI,kBACJjB,EAAG,yUAEP8a,sBAAuB,CACnBja,OAAQ,EACRC,MAAO,IACPC,OAAQ,mBACRC,OAAQ,GACRC,GAAI,kBACJjB,EAAG,uWAEP+a,mBAAoB,CAChBla,MAAO,EACPC,MAAO,GACPC,MAAO,GACPC,MAAO,IACPC,GAAI,GACJjB,EAAG,+FAEPgb,qBAAsB,CAClBna,MAAO,EACPC,MAAO,GACPC,OAAQ,IACRC,OAAQ,GACRC,GAAI,GACJjB,EAAG,gGAEPib,oBAAqB,CACjBpa,MAAO,EACPC,MAAO,GACPC,MAAO,GACPC,MAAO,IACPC,GAAI,GACJjB,EAAG,uIAEPkb,sBAAuB,CACnBra,MAAO,EACPC,MAAO,GACPC,OAAQ,IACRC,OAAQ,GACRC,GAAI,GACJjB,EAAG,yJAEPmb,oBAAqB,CACjBta,OAAQ,EACRC,MAAO,IACPC,MAAO,GACPC,MAAO,mBACPC,GAAI,kBACJjB,EAAG,2KAEPob,sBAAuB,CACnBva,OAAQ,EACRC,MAAO,IACPC,OAAQ,mBACRC,OAAQ,GACRC,GAAI,kBACJjB,EAAG,sLAEPqb,oBAAqB,CACjBxa,MAAO,EACPC,MAAO,IACPC,MAAO,GACPC,MAAO,mBACPC,GAAI,kBACJjB,EAAG,oMAEPsb,sBAAuB,CACnBza,MAAO,EACPC,MAAO,IACPC,OAAQ,mBACRC,OAAQ,GACRC,GAAI,kBACJjB,EAAG,oNAEPub,oBAAqB,CACjB1a,MAAO,EACPC,MAAO,IACPC,MAAO,GACPC,MAAO,IACPC,GAAI,GACJjB,EAAG,2TAEPwb,sBAAuB,CACnB3a,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,GACRC,GAAI,GACJjB,EAAG,mWAEPyb,oBAAqB,CACjB5a,OAAQ,EACRC,MAAO,IACPC,MAAO,GACPC,MAAO,mBACPC,GAAI,kBACJjB,EAAG,yUAEP0b,sBAAuB,CACnB7a,OAAQ,EACRC,MAAO,IACPC,OAAQ,mBACRC,OAAQ,GACRC,GAAI,kBACJjB,EAAG,uWAEP2b,oBAAqB,CACjB9a,MAAO,EACPC,MAAO,IACPC,MAAO,GACPC,MAAO,mBACPC,GAAI,kBACJjB,EAAG,kWAEP4b,sBAAuB,CACnB/a,MAAO,EACPC,MAAO,IACPC,OAAQ,mBACRC,OAAQ,GACRC,GAAI,kBACJjB,EAAG,qYAEP6b,oBAAqB,CACjBhb,MAAO,EACPC,MAAO,IACPC,MAAO,GACPC,MAAO,IACPC,GAAI,GACJjB,EAAG,ydAEP8b,sBAAuB,CACnBjb,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,GACRC,GAAI,GACJjB,EAAG,ohBAEP+b,oBAAqB,CACjBlb,OAAQ,EACRC,MAAO,IACPC,MAAO,GACPC,MAAO,mBACPC,GAAI,kBACJjB,EAAG,ueAEPgc,sBAAuB,CACnBnb,OAAQ,EACRC,MAAO,IACPC,OAAQ,mBACRC,OAAQ,GACRC,GAAI,kBACJjB,EAAG,whBAEPic,4BAA6B,CACzBpb,OAAQ,EACRC,MAAO,GACPC,MAAO,GACPC,MAAO,IACPC,GAAI,GACJjB,EAAG,wGAEPkc,8BAA+B,CAC3Brb,OAAQ,EACRC,MAAO,GACPC,OAAQ,IACRC,OAAQ,GACRC,GAAI,GACJjB,EAAG,qHAEPmc,6BAA8B,CAC1Btb,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,yNAEPoc,oCAAqC,CACjCvb,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,+dAEPqc,qBAAsB,CAClBxb,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2HAEPsc,sBAAuB,CACnBzb,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4CAGXuc,WAAY,UACZC,WAAY,IACZC,YAAa,4BCl7GbC,QCP0B,CAC1BC,KAAM,UACNC,OAAO,EACPC,MAAO,CACHC,QAAS,GACTC,cAAe,GACfC,cAAe,EACfC,qBAAsB,IAE1BC,WAAY,CACRC,0BAA2B,EAC3BC,YAAa,EACbC,kBAAmB,GAEvBC,KAAM,CACFC,QAAS,CACLC,MAAO,GACPC,MAAO,IAEXC,MAAO,CACHF,MAAO,GACPC,MAAO,IAEXE,YAAa,CACT,MAAO,CACHC,UAAW,WACXL,QAAS,CACLC,MAAO,GACPK,OAAQ,CACJC,MAAO,IACPC,OAAQ,KAGhBL,MAAO,CACHF,MAAO,GACPK,OAAQ,CACJC,MAAO,GACPC,OAAQ,KAIpB,MAAO,CACHH,UAAW,WACXL,QAAS,CACLC,MAAO,GACPK,OAAQ,CACJC,KAAM,EACNC,OAAQ,IAEZC,KAAM,CACFF,KAAM,IACNC,OAAQ,IAGhBL,MAAO,CACHF,MAAO,GACPK,OAAQ,CACJC,KAAM,IACNC,OAAQ,GAEZC,KAAM,CACFF,KAAM,IACNC,OAAQ,OAMxBE,UAAW,CACP,EAAK,CAAET,MAAO,GAAIU,OAAQ,IAC1B,EAAK,CAAEV,MAAO,GAAIU,OAAQ,GAC1B,EAAK,CAAEV,MAAO,GAAIU,OAAQ,GAC1B,EAAK,CAAEV,MAAO,GAAIU,QAAS,GAC3B,EAAK,CAAEV,MAAO,GAAIU,QAAS,MAGnCC,YAAa,CACTZ,QAAS,CACLC,MAAO,GACPC,MAAO,GAEXW,UAAW,CACPZ,MAAO,KACPC,MAAO,IAGfY,aAAc,CACVC,GAAI,CACAd,MAAO,IAEXe,KAAM,CACFf,MAAO,KAIfgB,OAAQ,CAEJC,WAAY,EACZjB,MAAO,GAEPkB,YAAa,GACbR,QAAS,GAEbS,aAAc,CACV5W,wBAAyB,CACrB+U,QAAS,GAEb9U,wBAAyB,CACrB8U,QAAS,IAGjB8B,QAAS,CACLrB,QAAS,CACLC,MAAO,GACPqB,QAAS,EACTC,eAAgB,EAChBC,gBAAiB,EACjBC,cAAe,GACfC,gBAAiB,GAErBC,MAAO,CACH1B,MAAO,GACPqB,QAAS,EACTC,eAAgB,EAChBC,gBAAiB,EACjBC,cAAe,EACfC,gBAAiB,IAGzBE,gBAAiB,CACbC,WAAY,CACRC,QAAS,GACTC,QAAS,GACTT,QAAS,GAEbvd,KAAM,CACFge,QAAS,IAEbje,MAAO,CACHie,QAAS,KAKjBC,KAAM,CACFC,yBAA0B,EAG1BC,SAAU,CACNlb,uBAAwB,CACpBmb,kBAAmB,EACnBC,oBAAqB,GAEzBnb,wBAAyB,CACrBkb,kBAAmB,EACnBC,oBAAqB,GAEzBrb,wBAAyB,CACrBob,kBAAmB,EACnBC,oBAAqB,GAEzBvc,cAAe,CACXsc,mBAAoB,EACpBC,oBAAqB,GAEzBtc,eAAgB,CACZqc,mBAAoB,EACpBC,oBAAqB,GAEzBxc,eAAgB,CACZuc,mBAAoB,EACpBC,oBAAqB,GAEzB3c,aAAc,CACV0c,mBAAoB,KACpBC,oBAAqB,MAEzB1c,cAAe,CACXyc,mBAAoB,EACpBC,oBAAqB,GAEzB5b,oBAAqB,CACjB4b,qBAAsB,EACtBD,kBAAmB,KAa/B/e,OAAQ,CACJW,KAAM,CACFkc,MAAO,GACPO,QAAS,EACTG,OAAQ,GAEZ7c,MAAO,CACH0c,QAAS,GAEb6B,KAAM,CACF7B,QAAS,IACT8B,WAAY,CACR9B,QAAS,IAGjBT,KAAM,CACF/b,MAAO,CACHgc,QAAS,CAAEuC,MAAO,IAAK5B,OAAQ,GAC/BR,MAAO,CAAEQ,OAAQ,MAErBzc,MAAO,CACH8b,QAAS,CAAEW,QAAS,MAG5B6B,SAAU,CACN7V,aAAc,CACV4V,MAAO,KAEX3V,kBAAmB,CACf2V,MAAO,MAGfE,aAAc,CACVC,gBAAiB,EACjBC,YAAa,EACb9C,YAAa,EACb+C,aAAc,GAElBC,OAAQ,CACJhU,mBAAoB,CAChBiU,SAAU,CACNtC,QAAS,KAEbuC,OAAQ,CACJvC,QAAS,EACTG,OAAQ,IAGhB/R,iBAAkB,CACdkU,SAAU,CACNtC,QAAS,KAEbuC,OAAQ,CACJvC,QAAS,EACTG,OAAQ,KAIpBqC,SAAU,CACN/C,MAAO,GACPpc,eAAgB,CACZoc,MAAO,GACPU,OAAQ,GAEZvV,gBAAiB,CACb6U,MAAO,IAEXnc,MAAO,CACHmc,MAAO,GACPO,QAAS,EACTG,OAAQ,GAEZ5c,KAAM,CACFkc,MAAO,GACPO,QAAS,EACTG,OAAQ,GAEZjU,cAAe,CACX8T,QAAS,EACTG,OAAQ,GAEZhU,aAAc,CACVsT,MAAO,IAEXrT,kBAAmB,CACfqT,MAAO,IAEXpT,gBAAiB,CACb2T,QAAS,GAEb1T,mBAAoB,CAChB0T,QAAS,IAGjB0B,SAAU,CACNe,WAAY,EACZC,SAAU,CACNC,kBAAmB,CACflD,MAAO,IAEXmD,oBAAqB,CACjBnD,MAAO,KAGfoD,OAAQ,CACJC,sBAAuB,CACnB9C,OAAQ,KAEZ+C,wBAAyB,CACrB/C,OAAQ,KAEZgD,0BAA2B,CACvBhD,OAAQ,KAEZiD,2BAA4B,CACxBjD,OAAQ,KAEZkD,2BAA4B,CACxBlD,OAAQ,GAEZmD,oBAAqB,CACjBnD,QAAS,GAEboD,sBAAuB,CACnBpD,OAAQ,GAEZqD,qBAAsB,CAClBrD,QAAS,GAEbsD,uBAAwB,CACpBtD,OAAQ,GAEZuD,2BAA4B,CACxBvD,QAAS,GAEbwD,6BAA8B,CAC1BxD,OAAQ,GAEZyD,4BAA6B,CACzBzD,OAAQ,KAEZ0D,0BAA2B,CACvB1D,QAAS,KAEb2D,0BAA2B,CACvB3D,QAAS,KAEb4D,8BAA+B,CAC3B5D,QAAS,OAIrB6D,YAAa,CACTC,OAAQ,CACJC,mBAAoB,IACpBC,gBAAiB,IACjBC,eAAgB,IAChBC,iBAAkB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,KAC5CC,iBAAkB,CAAC,IAAK,KACxBrD,QAAS,IACTsD,cAAe,KAEnBxV,eAAgB,CACZmT,MAAO,GACPsC,iBAAkB,GAClBC,aAAc,IACdC,QAAS,GAEb1V,mBAAoB,CAChBkT,MAAO,GACPsC,iBAAkB,GAClBC,aAAc,IACdC,QAAS,GAEbzV,cAAe,CACXiT,MAAO,EACPsC,gBAAiB,EACjBC,aAAc,IACdC,QAAS,GAEbtV,mBAAoB,CAChB8S,MAAO,GACPsC,iBAAkB,GAClBC,aAAc,IACdC,QAAS,KAEbrV,oBAAqB,CACjB6S,MAAO,GACPsC,gBAAiB,EACjBC,aAAc,IACdC,QAAS,KAEbpV,oBAAqB,CACjB4S,MAAO,GACPsC,gBAAiB,EACjBC,aAAc,IACdC,QAAS,GAEbnV,qBAAsB,CAClB2S,MAAO,GACPsC,gBAAiB,EACjBC,aAAc,IACdC,QAAS,GAEblV,uBAAwB,CACpB0S,MAAO,GACPsC,gBAAiB,GACjBC,aAAc,IACdC,QAAS,KAEbjV,wBAAyB,CACrByS,MAAO,GACPsC,gBAAiB,EACjBC,aAAc,IACdC,QAAS,KAEbhV,6BAA8B,CAC1BwS,MAAO,GACPsC,iBAAkB,EAClBC,aAAc,IACdC,QAAS,GAEbvV,UAAW,CACP+S,MAAO,GACPsC,gBAAiB,EACjBC,aAAc,IACdC,QAAS,GAEbxV,iBAAkB,CACdgT,MAAO,GACPsC,gBAAiB,IACjBE,QAAS,EACTD,aAAc,KAElB3b,gBAAiB,CACboZ,MAAO,IACPsC,gBAAiB,GACjBC,aAAc,IACdC,SAAU,KAEd9b,eAAgB,CACZsZ,MAAO,GACPsC,iBAAkB,GAClBC,aAAc,IACdC,SAAU,MAGlBC,cAAe,CACXzX,WAAY,CACRgV,MAAO,EACP0C,SAAU,GACVF,QAAS,EACTG,cAAe,EACfC,cAAe,IAEnB3X,gBAAiB,CACb+U,MAAO,EACP0C,QAAS,GACTF,QAAS,EACTG,cAAe,EACfC,cAAe,IAEnB1X,kBAAmB,CACf8U,MAAO,EACP0C,QAAS,GACTF,QAAS,EACTG,cAAe,EACfC,cAAe,IAEnBzX,gBAAiB,CACb6U,MAAO,EACP0C,QAAS,GACTF,QAAS,EACTG,cAAe,EACfC,cAAe,GAEnBxX,qBAAsB,CAClB4U,MAAO,EACP0C,QAAS,GACTF,QAAS,GACTG,cAAe,EACfC,cAAe,GAEnBvX,UAAW,CACP2U,MAAO,EACP0C,QAAS,EACTF,SAAU,EACVG,cAAe,GACfC,cAAe,GAEnBtX,gBAAiB,CACb0U,MAAO,EACP0C,QAAS,EACTF,SAAU,EACVG,cAAe,GACfC,cAAe,GAEnBrX,cAAe,CACXyU,MAAO,EACP0C,QAAS,EACTF,SAAU,EACVG,cAAe,GACfC,cAAe,GAEnBpX,UAAW,CACPwU,MAAO,EACP0C,QAAS,GACTF,QAAS,EACTG,cAAe,EACfC,cAAe,IAEnBnX,cAAe,CACXuU,MAAO,EACP0C,QAAS,EACTF,QAAS,EACTG,cAAe,EACfC,cAAe,IAEnBlX,WAAY,CACRsU,MAAO,EACP0C,QAAS,GACTF,QAAS,EACTG,cAAe,EACfC,cAAe,IAGvBC,OAAQ,CACJC,eAAgB,GAChBC,WAAY,GACZC,WAAY,EACZC,kBAAmB,O","sources":["webpack://VexFlowFont.Bravura/webpack/universalModuleDefinition","webpack://VexFlowFont.Bravura/webpack/bootstrap","webpack://VexFlowFont.Bravura/webpack/runtime/define property getters","webpack://VexFlowFont.Bravura/webpack/runtime/hasOwnProperty shorthand","webpack://VexFlowFont.Bravura/./src/fonts/bravura_glyphs.ts","webpack://VexFlowFont.Bravura/./entry/vexflow-font-bravura.ts","webpack://VexFlowFont.Bravura/./src/fonts/bravura_metrics.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VexFlowFont\"] = factory();\n\telse\n\t\troot[\"VexFlowFont\"] = root[\"VexFlowFont\"] || {}, root[\"VexFlowFont\"][\"Bravura\"] = factory();\n})((typeof window !== 'undefined' ? window : typeof globalThis !== 'undefined' ? globalThis : this), function() {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","export const BravuraFont = {\n glyphs: {\n bracketTop: {\n x_min: 0,\n x_max: 469,\n y_min: 0,\n y_max: 295,\n ha: 295,\n o: 'm 0 0 l 180 0 b 674 390 410 43 616 150 b 675 405 675 396 675 400 b 664 425 675 416 671 422 b 628 405 651 425 635 415 b 157 179 613 389 432 199 l 12 179 b 0 168 3 179 0 177 z',\n },\n bracketBottom: {\n x_min: 0,\n x_max: 469,\n y_min: -295,\n y_max: 0,\n ha: 295,\n o: 'm 0 -168 b 12 -179 0 -177 3 -179 l 157 -179 b 628 -405 432 -199 613 -389 b 664 -425 635 -415 651 -425 b 675 -405 671 -422 675 -416 b 674 -390 675 -400 675 -396 b 180 0 616 -150 410 -43 l 0 0 z',\n },\n barlineTick: {\n x_min: 0,\n x_max: 36,\n y_min: 868,\n y_max: 1120,\n ha: 252,\n o: 'm 52 1250 l 52 1613 l 0 1613 l 0 1250 z',\n },\n breathMarkTick: {\n x_min: 0,\n x_max: 500,\n y_min: 0,\n y_max: 502,\n ha: 502,\n o: 'm 9 367 b 0 374 6 372 3 374 b 9 334 0 367 0 343 b 179 19 40 312 164 121 b 192 0 179 3 186 0 b 210 19 197 0 207 6 b 698 701 245 197 507 658 b 720 714 714 704 720 711 b 698 723 720 720 711 723 b 197 186 455 714 210 202 b 186 176 194 179 189 176 b 176 186 179 176 176 186 b 9 367 143 266 27 359 z',\n },\n segno: {\n x_min: 4,\n x_max: 550,\n y_min: -27,\n y_max: 759,\n ha: 786,\n o: 'm 194 958 b 217 939 203 958 213 955 l 220 929 b 325 805 230 890 252 805 b 425 901 384 805 425 840 b 413 969 425 923 420 946 b 220 1060 390 1035 294 1060 b 6 793 120 1060 6 936 b 29 687 6 759 13 723 b 295 449 75 582 284 454 b 304 438 301 446 304 444 b 295 415 304 432 301 425 b 78 22 285 395 78 22 b 73 3 75 16 73 9 b 114 -39 73 -20 91 -39 b 150 -17 128 -39 143 -30 b 377 395 150 -17 373 386 b 395 402 377 393 389 402 b 704 176 416 397 704 312 b 621 75 704 120 670 82 l 616 73 b 562 138 586 73 562 94 l 562 154 b 485 249 562 209 526 249 b 468 246 480 249 474 248 b 366 153 415 233 366 210 b 540 -12 366 65 455 -12 b 600 -1 559 -12 579 -9 b 792 251 716 37 792 131 b 789 292 792 264 791 278 b 523 588 768 451 540 579 b 498 611 505 598 498 603 b 501 619 498 613 500 616 b 732 1032 508 631 732 1032 b 737 1053 736 1040 737 1045 b 697 1093 737 1076 719 1093 b 661 1073 683 1093 668 1086 b 423 647 661 1073 432 660 b 410 635 419 639 416 635 b 396 639 406 635 402 636 b 128 792 383 644 166 727 b 108 868 120 808 108 838 b 186 958 108 907 125 948 z m 598 671 b 680 589 598 626 635 589 b 762 671 726 589 762 626 b 680 753 762 717 726 753 b 598 671 635 753 598 717 z m 202 380 b 120 462 202 425 166 462 b 37 380 75 462 37 425 b 120 298 37 334 75 298 b 202 380 166 298 202 334 z',\n },\n coda: {\n x_min: -4,\n x_max: 955,\n y_min: -158,\n y_max: 898,\n ha: 1056,\n o: 'm 1349 576 l 1178 576 b 729 1083 1164 847 962 1064 l 729 1269 b 694 1293 729 1287 713 1293 b 660 1269 675 1293 660 1287 l 660 1083 b 210 576 426 1064 226 848 l 20 576 b -6 541 0 576 -6 560 b 20 507 -6 523 0 507 l 210 507 b 660 0 226 238 426 19 l 660 -202 b 694 -228 660 -222 675 -228 b 729 -202 713 -228 729 -222 l 729 0 b 1178 507 962 19 1164 238 l 1349 507 b 1375 541 1369 507 1375 523 b 1349 576 1375 560 1369 576 z m 940 576 l 729 576 l 729 1002 b 940 576 930 985 940 809 z m 660 1002 l 660 576 l 455 576 b 660 1002 455 809 455 985 z m 455 507 l 660 507 l 660 69 b 455 507 474 91 456 285 z m 729 69 l 729 507 l 940 507 b 729 69 936 287 909 91 z',\n },\n gClef: {\n x_min: 0,\n x_max: 671,\n y_min: -658,\n y_max: 1098,\n ha: 1756,\n o: 'm 541 598 b 550 625 539 615 541 616 b 824 1174 706 770 824 953 b 730 1509 824 1299 789 1423 b 655 1581 708 1541 671 1581 b 562 1512 635 1581 590 1544 b 420 1064 455 1394 420 1214 b 441 828 420 981 431 887 b 428 793 444 811 445 808 b 0 125 220 622 0 416 b 524 -363 0 -125 171 -363 b 624 -354 557 -363 595 -360 b 645 -367 639 -351 642 -350 b 684 -657 662 -464 684 -589 b 455 -896 684 -870 540 -896 b 340 -854 377 -896 340 -873 b 386 -829 340 -844 353 -840 b 482 -694 431 -816 482 -778 b 344 -547 482 -615 432 -547 b 190 -713 248 -547 190 -624 b 464 -948 190 -806 246 -948 b 747 -660 560 -948 747 -904 b 706 -351 747 -577 721 -441 b 724 -327 703 -334 704 -336 b 966 16 870 -269 966 -147 b 619 363 966 200 831 363 b 577 389 582 363 582 363 z m 677 1358 b 763 1240 724 1358 763 1319 b 513 851 763 1080 626 950 b 494 863 503 842 497 844 b 485 995 488 900 485 949 b 677 1358 485 1220 589 1358 z m 520 377 b 498 343 524 350 524 351 b 289 63 372 300 289 186 b 455 -192 289 -66 357 -158 b 494 -200 467 -196 484 -200 b 511 -184 505 -200 511 -193 b 490 -166 511 -174 500 -170 b 386 -12 429 -140 386 -78 b 530 157 386 71 442 132 b 559 145 553 163 556 161 l 631 -284 b 611 -304 634 -300 632 -300 b 530 -311 588 -308 559 -311 b 115 29 278 -311 115 -171 b 249 363 115 114 130 228 b 469 567 336 459 402 513 b 490 562 484 579 487 577 z m 619 148 b 635 168 616 166 618 170 b 848 -66 752 158 848 60 b 713 -271 848 -157 793 -230 b 690 -262 696 -279 693 -279 z',\n },\n cClef: {\n x_min: 0,\n x_max: 699,\n y_min: -506,\n y_max: 506,\n ha: 1012,\n o: 'm 331 694 b 301 724 331 714 321 724 l 300 724 b 269 694 279 724 269 714 l 269 -694 b 300 -724 269 -714 279 -724 l 301 -724 b 331 -694 321 -724 331 -714 l 331 -63 b 344 -55 331 -52 338 -53 b 472 -265 382 -65 442 -102 b 500 -301 477 -288 485 -301 b 530 -262 516 -301 523 -287 b 684 -128 549 -199 582 -128 b 804 -409 778 -128 804 -220 b 651 -683 804 -598 770 -683 b 528 -644 631 -683 528 -674 b 567 -622 528 -636 552 -628 b 625 -528 596 -612 625 -583 b 527 -429 625 -465 583 -429 b 416 -547 465 -429 416 -471 b 667 -729 416 -638 495 -729 b 1007 -413 903 -729 1007 -563 b 706 -76 1007 -215 897 -76 b 618 -89 664 -76 636 -84 b 576 -88 603 -94 589 -96 b 524 0 556 -75 524 -29 b 576 88 524 29 556 75 b 618 89 589 96 603 94 b 706 76 636 84 664 76 b 1007 413 897 76 1007 215 b 667 729 1007 563 903 729 b 416 547 495 729 416 638 b 527 429 416 471 465 429 b 625 528 583 429 625 465 b 567 622 625 583 596 612 b 528 644 552 628 528 636 b 651 683 528 674 631 683 b 804 409 770 683 804 598 b 684 128 804 220 778 128 b 530 262 582 128 549 199 b 500 301 523 287 516 301 b 472 265 485 301 477 288 b 344 55 442 102 382 65 b 331 63 338 53 331 52 z m 30 724 b 0 694 10 724 0 714 l 0 -694 b 30 -724 0 -714 10 -724 l 154 -724 b 184 -694 174 -724 184 -714 l 184 694 b 154 724 184 714 174 724 z',\n },\n fClef: {\n x_min: -5,\n x_max: 684,\n y_min: -635,\n y_max: 262,\n ha: 897,\n o: 'm 363 377 b 0 56 112 377 0 194 b 177 -158 0 -59 60 -158 b 330 -6 268 -158 330 -95 b 192 144 330 86 262 144 b 120 134 153 144 138 134 b 96 160 101 134 96 145 b 330 323 96 217 183 323 b 549 -53 482 323 549 173 b 14 -871 549 -455 350 -680 b -7 -897 1 -878 -7 -886 b 12 -914 -7 -906 -1 -914 b 36 -907 19 -914 27 -912 b 765 -40 390 -734 765 -478 b 363 377 765 210 612 377 z m 906 259 b 827 180 861 259 827 225 b 906 101 827 135 861 101 b 985 180 950 101 985 135 b 906 259 985 225 950 259 z m 907 -102 b 829 -180 863 -102 829 -135 b 907 -258 829 -225 863 -258 b 985 -180 952 -258 985 -225 b 907 -102 985 -135 952 -102 z',\n },\n unpitchedPercussionClef1: {\n x_min: 0,\n x_max: 382,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 230 -338 l 230 338 b 210 360 230 350 222 360 l 20 360 b 0 338 9 360 0 350 l 0 -338 b 20 -360 0 -350 9 -360 l 210 -360 b 230 -338 222 -360 230 -350 z m 550 338 b 530 360 550 350 541 360 l 340 360 b 320 338 328 360 320 350 l 320 -338 b 340 -360 320 -350 328 -360 l 530 -360 b 550 -338 541 -360 550 -350 z',\n },\n '6stringTabClef': {\n x_min: -3,\n x_max: 408,\n y_min: -748,\n y_max: 764,\n ha: 1512,\n o: 'm 557 1024 l 557 1100 l 26 1100 l 26 1024 l 249 1024 l 249 422 l 336 422 l 336 1024 z m 588 -328 l 350 348 l 238 348 l -4 -328 l 88 -328 l 160 -125 l 420 -125 l 491 -328 z m 397 -52 l 181 -52 l 292 256 z m 544 -883 b 420 -719 544 -802 507 -752 b 514 -572 482 -690 514 -639 b 314 -399 514 -472 442 -399 l 39 -399 l 39 -1077 l 344 -1077 b 544 -883 467 -1077 544 -995 z m 428 -583 b 292 -691 428 -652 389 -691 l 125 -691 l 125 -475 l 292 -475 b 428 -583 389 -475 428 -514 z m 458 -884 b 337 -1001 458 -949 418 -1001 l 125 -1001 l 125 -768 l 337 -768 b 458 -884 418 -768 458 -818 z',\n },\n timeSig0: {\n x_min: 20,\n x_max: 450,\n y_min: -250,\n y_max: 251,\n ha: 501,\n o: 'm 648 0 b 338 361 648 200 510 361 b 29 0 167 361 29 200 b 338 -360 29 -199 167 -360 b 648 0 510 -360 648 -199 z m 338 317 b 446 10 397 317 446 180 b 338 -295 446 -158 397 -295 b 230 10 278 -295 230 -158 b 338 317 230 180 278 317 z',\n },\n timeSig1: {\n x_min: 20,\n x_max: 314,\n y_min: -250,\n y_max: 251,\n ha: 501,\n o: 'm 35 19 b 29 0 35 19 29 10 b 45 -20 29 -7 33 -16 b 58 -23 50 -22 56 -23 b 78 -10 72 -23 78 -10 b 156 117 78 -10 140 89 b 170 131 161 127 167 131 b 179 111 176 131 179 120 l 179 -261 b 115 -315 179 -294 145 -315 b 91 -337 105 -315 91 -320 b 122 -360 91 -353 104 -360 l 429 -360 b 452 -337 452 -360 452 -337 b 431 -315 452 -337 452 -315 b 384 -265 410 -315 384 -289 l 384 328 b 356 361 384 351 376 360 b 281 356 336 361 300 356 b 206 360 253 356 228 357 b 199 361 203 360 200 361 b 173 334 184 361 179 347 z',\n },\n timeSig2: {\n x_min: 20,\n x_max: 426,\n y_min: -257,\n y_max: 254,\n ha: 511,\n o: 'm 606 -131 b 589 -111 606 -114 599 -111 b 570 -127 577 -111 573 -117 l 569 -128 b 513 -192 554 -164 543 -192 b 488 -187 505 -192 498 -190 b 445 -171 469 -180 459 -179 b 289 -137 416 -160 348 -137 b 236 -145 271 -137 252 -140 b 422 -42 268 -94 390 -50 b 613 147 523 -14 613 27 b 330 366 613 300 464 366 b 69 275 229 366 140 357 b 29 170 45 245 29 209 b 42 108 29 150 33 130 b 160 29 63 63 108 29 b 261 156 248 29 261 120 b 161 275 261 242 161 246 b 275 330 164 295 190 330 b 405 192 403 330 405 233 b 193 -102 405 60 297 -39 b 33 -317 114 -153 58 -223 l 32 -321 b 69 -370 32 -340 48 -370 b 203 -282 101 -370 118 -282 b 410 -360 261 -282 282 -360 b 606 -131 472 -360 583 -354 z',\n },\n timeSig3: {\n x_min: 20,\n x_max: 401,\n y_min: -251,\n y_max: 249,\n ha: 500,\n o: 'm 307 357 b 301 357 305 357 304 357 l 291 359 b 285 359 289 359 287 359 b 37 200 161 359 37 276 b 154 84 37 153 65 89 l 161 84 b 256 177 225 84 256 130 l 256 189 b 209 248 252 242 216 245 b 180 268 202 251 180 248 l 180 274 b 240 310 183 298 228 310 b 374 199 363 310 374 233 l 374 189 b 199 36 374 82 289 40 b 164 12 184 35 164 27 b 200 -6 164 -6 189 -6 b 379 -137 366 -6 379 -118 b 269 -307 379 -289 301 -307 b 256 -305 264 -307 258 -305 b 216 -282 245 -304 217 -304 l 216 -275 b 249 -180 216 -243 248 -222 b 145 -76 249 -120 207 -76 b 130 -78 140 -76 135 -76 b 60 -115 105 -82 78 -96 b 29 -203 36 -137 29 -171 b 275 -361 32 -315 134 -359 l 288 -361 b 577 -161 431 -361 577 -288 l 577 -151 b 537 -50 575 -109 564 -82 b 503 -20 528 -39 517 -29 l 472 -3 l 425 10 b 410 17 418 12 413 12 b 409 24 409 20 409 22 b 415 37 409 30 410 36 b 459 50 431 42 446 43 b 547 181 517 78 547 115 b 307 357 547 314 367 353 z',\n },\n timeSig4: {\n x_min: 20,\n x_max: 450,\n y_min: -250,\n y_max: 251,\n ha: 501,\n o: 'm 521 -107 l 521 202 b 504 226 521 213 520 226 b 475 213 491 226 484 223 l 338 48 b 325 14 333 40 325 32 l 325 -107 l 131 -107 b 481 336 246 -9 477 318 l 482 340 b 461 361 482 353 472 361 b 363 359 448 361 389 359 b 261 361 337 359 272 361 b 228 334 248 361 228 357 b 43 -105 228 156 86 -45 l 35 -117 b 35 -118 35 -117 35 -118 l 33 -120 b 29 -137 30 -127 29 -132 b 58 -161 29 -151 40 -161 l 325 -161 l 325 -252 b 268 -302 325 -291 294 -302 b 235 -330 245 -302 235 -315 b 262 -360 235 -344 240 -360 l 569 -360 b 598 -330 583 -360 598 -350 b 566 -301 598 -310 580 -301 b 521 -246 552 -301 521 -292 l 521 -161 l 626 -161 b 648 -134 641 -161 648 -151 b 626 -107 648 -117 642 -107 z',\n },\n timeSig5: {\n x_min: 20,\n x_max: 383,\n y_min: -251,\n y_max: 246,\n ha: 497,\n o: 'm 109 85 b 117 179 109 85 115 166 b 138 197 118 190 125 197 l 144 197 b 285 184 158 194 226 184 b 492 323 485 184 492 300 b 472 353 492 341 488 353 b 295 340 454 353 341 340 b 101 354 249 340 125 351 b 66 330 75 354 68 341 l 50 10 l 50 7 b 79 -14 50 -12 65 -14 b 111 14 94 -14 95 -1 b 209 62 125 29 160 62 b 357 -125 258 62 357 35 b 235 -304 357 -284 272 -304 b 202 -300 223 -304 212 -304 b 184 -279 194 -295 186 -289 b 202 -259 184 -269 194 -264 b 256 -163 235 -239 256 -203 b 144 -50 256 -99 206 -50 b 30 -157 66 -50 35 -107 b 29 -183 29 -166 29 -174 b 284 -361 29 -302 107 -361 b 552 -125 456 -361 552 -255 b 314 112 552 6 445 112 b 122 71 230 112 168 98 b 115 69 120 69 117 69 b 109 79 109 69 109 75 z',\n },\n timeSig6: {\n x_min: 20,\n x_max: 414,\n y_min: -249,\n y_max: 251,\n ha: 500,\n o: 'm 439 120 b 554 229 500 120 554 167 b 553 245 554 235 554 239 b 348 361 539 337 426 361 b 85 209 239 360 137 307 b 29 4 53 148 29 72 l 29 -1 b 73 -200 30 -68 42 -143 b 324 -359 132 -307 203 -359 b 513 -307 389 -359 461 -348 b 596 -137 563 -266 596 -202 b 379 72 596 -24 490 72 b 248 22 333 72 285 55 b 239 19 245 19 242 19 b 226 53 230 19 226 30 b 346 327 230 320 315 327 b 393 305 374 327 393 320 b 357 251 393 285 366 268 b 347 209 350 238 347 223 b 369 150 347 187 354 166 b 439 120 379 131 420 120 z m 320 3 b 405 -158 366 3 405 -69 b 320 -320 405 -248 366 -320 b 236 -158 274 -320 236 -248 b 320 3 236 -69 274 3 z',\n },\n timeSig7: {\n x_min: 20,\n x_max: 421,\n y_min: -250,\n y_max: 249,\n ha: 499,\n o: 'm 606 294 b 582 351 606 333 606 351 b 552 336 580 351 557 346 b 485 236 541 318 521 236 b 262 359 449 236 382 359 b 137 307 179 359 157 325 b 98 281 117 288 108 282 b 60 315 86 281 68 301 b 43 325 58 321 50 325 b 29 308 36 325 29 321 l 29 71 b 45 48 29 71 30 48 b 66 76 56 48 60 60 b 164 196 81 112 99 196 b 374 88 222 196 291 88 b 446 118 415 88 435 109 b 459 124 451 121 456 124 b 469 111 465 124 468 120 b 272 -112 469 71 359 -10 b 173 -315 217 -176 173 -259 b 200 -360 173 -346 173 -360 b 294 -347 226 -360 258 -347 b 412 -360 330 -347 397 -360 b 435 -307 426 -360 435 -348 b 606 288 435 -66 606 140 z',\n },\n timeSig8: {\n x_min: 20,\n x_max: 416,\n y_min: -259,\n y_max: 259,\n ha: 518,\n o: 'm 481 52 b 567 204 533 85 567 132 b 317 373 567 351 356 373 b 36 176 150 373 36 297 b 161 -16 36 76 92 23 b 29 -190 86 -52 29 -99 b 301 -373 29 -315 158 -373 b 599 -117 445 -373 599 -311 b 481 52 599 -30 549 17 z m 406 85 b 168 240 291 125 168 150 b 314 331 168 301 251 331 b 482 207 360 331 482 308 b 406 85 482 150 454 112 z m 295 -325 b 111 -183 199 -325 111 -276 b 225 -48 111 -125 161 -72 b 436 -219 330 -94 436 -124 b 295 -325 436 -276 392 -325 z',\n },\n timeSig9: {\n x_min: 20,\n x_max: 414,\n y_min: -249,\n y_max: 251,\n ha: 500,\n o: 'm 186 -117 b 71 -226 125 -117 71 -164 b 72 -242 71 -232 71 -236 b 276 -359 86 -334 199 -359 b 540 -206 386 -357 488 -304 b 596 -1 572 -145 596 -69 l 596 4 b 552 203 595 71 583 145 b 301 361 492 310 422 361 b 112 310 236 361 164 351 b 29 140 62 269 29 204 b 246 -69 29 27 135 -69 b 377 -19 292 -69 340 -52 b 386 -16 380 -16 383 -16 b 399 -50 395 -16 399 -27 b 279 -324 395 -317 310 -324 b 232 -302 251 -324 232 -317 b 268 -248 232 -282 259 -265 b 278 -206 275 -235 278 -220 b 256 -147 278 -184 271 -163 b 186 -117 246 -128 204 -117 z m 305 0 b 220 161 259 0 220 72 b 305 323 220 251 259 323 b 389 161 351 323 389 251 b 305 0 389 72 351 0 z',\n },\n timeSigCommon: {\n x_min: 5,\n x_max: 424,\n y_min: -249,\n y_max: 251,\n ha: 500,\n o: 'm 336 361 b 7 -14 131 361 7 180 b 101 -262 7 -108 42 -190 b 321 -359 156 -328 235 -359 b 611 -88 573 -359 611 -130 b 589 -56 611 -56 595 -56 b 567 -82 577 -56 567 -58 b 363 -311 567 -268 409 -311 b 184 40 246 -311 184 -197 b 372 327 184 278 294 327 b 477 278 446 327 477 292 b 451 246 477 265 472 246 b 360 140 393 246 360 184 b 471 32 360 58 431 32 b 580 156 471 32 580 36 b 336 361 580 344 363 361 z',\n },\n timeSigCutCommon: {\n x_min: 0,\n x_max: 418,\n y_min: -359,\n y_max: 361,\n ha: 720,\n o: 'm 573 -58 b 559 -82 567 -58 559 -60 b 354 -310 559 -266 400 -310 b 317 -305 340 -310 328 -308 b 302 -284 311 -304 302 -295 l 302 287 b 338 323 302 297 328 321 b 363 324 347 324 356 324 b 468 275 436 324 468 289 b 442 243 468 264 464 243 b 351 137 384 243 351 181 b 462 30 351 56 422 30 b 572 154 462 30 572 35 b 318 357 572 295 441 357 b 302 390 310 359 302 383 l 302 495 b 276 520 302 507 292 520 b 252 495 265 520 252 507 l 252 369 b 235 346 252 359 238 346 l 196 331 b 0 -14 66 275 0 122 b 225 -346 0 -150 86 -310 b 252 -382 235 -350 252 -369 l 252 -492 b 276 -517 252 -505 265 -517 b 302 -492 292 -517 302 -505 l 302 -379 b 318 -359 302 -370 308 -363 b 602 -85 563 -354 602 -130 b 579 -58 600 -58 586 -58 z m 252 -235 b 243 -252 252 -248 248 -252 b 236 -248 240 -252 238 -251 b 177 37 197 -193 177 -96 b 232 259 177 147 200 215 b 236 262 233 262 235 262 b 252 239 243 262 252 251 z',\n },\n timeSigPlus: {\n x_min: -1,\n x_max: 499,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 432 53 b 413 79 420 53 413 65 l 413 340 b 392 360 413 350 405 360 l 325 360 b 305 340 312 360 305 350 l 305 79 b 284 53 305 66 292 53 l 19 53 b -1 33 9 53 -1 46 l -1 -33 b 19 -55 -1 -46 9 -55 l 284 -55 b 305 -75 298 -55 305 -68 l 305 -340 b 325 -360 305 -350 312 -360 l 392 -360 b 413 -340 405 -360 413 -350 l 413 -78 b 433 -55 413 -63 423 -55 l 698 -55 b 719 -33 708 -55 719 -46 l 719 33 b 698 53 719 46 708 53 z',\n },\n timeSigPlusSmall: {\n x_min: -1,\n x_max: 255,\n y_min: -133,\n y_max: 123,\n ha: 256,\n o: 'm 220 20 b 210 33 215 20 210 26 l 210 166 b 200 177 210 171 206 177 l 166 177 b 156 166 160 177 156 171 l 156 33 b 145 20 156 27 150 20 l 10 20 b -1 10 4 20 -1 16 l -1 -24 b 10 -35 -1 -30 4 -35 l 145 -35 b 156 -46 153 -35 156 -42 l 156 -180 b 166 -192 156 -186 160 -192 l 200 -192 b 210 -180 206 -192 210 -186 l 210 -48 b 222 -35 210 -39 216 -35 l 356 -35 b 367 -24 361 -35 367 -30 l 367 10 b 356 20 367 16 361 20 z',\n },\n timeSigMinus: {\n x_min: 0,\n x_max: 448,\n y_min: -35,\n y_max: 40,\n ha: 75,\n o: 'm 645 39 b 619 58 645 49 634 58 l 27 58 b 0 39 12 58 0 49 l 0 -32 b 27 -50 0 -42 12 -50 l 619 -50 b 645 -32 634 -50 645 -42 z',\n },\n timeSigParensRight: {\n x_min: 0,\n x_max: 184,\n y_min: -489,\n y_max: 491,\n ha: 980,\n o: 'm 0 -696 b 3 -704 0 -698 1 -704 b 7 -703 4 -704 6 -704 b 265 1 187 -530 265 -282 b 12 701 265 289 187 531 b 4 707 12 701 6 707 b 0 696 1 707 0 703 l 0 665 b 4 644 0 665 0 651 b 167 1 112 503 167 315 b 6 -641 167 -311 109 -497 b 0 -658 3 -644 0 -651 z',\n },\n timeSigParensRightSmall: {\n x_min: 0,\n x_max: 110,\n y_min: -251,\n y_max: 249,\n ha: 500,\n o: 'm 0 -356 b 3 -361 0 -357 1 -361 b 158 0 112 -272 158 -145 b 4 359 158 147 109 272 b 0 353 3 359 0 357 l 0 338 b 3 327 0 338 0 330 b 91 0 60 246 91 160 b 4 -328 91 -160 62 -249 b 0 -337 3 -330 0 -333 z',\n },\n timeSigParensLeft: {\n x_min: 0,\n x_max: 184,\n y_min: -489,\n y_max: 491,\n ha: 980,\n o: 'm 265 -658 b 259 -641 265 -651 262 -644 b 98 1 156 -497 98 -311 b 261 644 98 315 153 503 b 265 665 265 651 265 665 l 265 696 b 261 707 265 703 264 707 b 253 701 259 707 253 701 b 0 1 78 531 0 289 b 258 -703 0 -282 78 -530 b 262 -704 259 -704 261 -704 b 265 -696 264 -704 265 -698 z',\n },\n timeSigParensLeftSmall: {\n x_min: 0,\n x_max: 110,\n y_min: -251,\n y_max: 249,\n ha: 500,\n o: 'm 158 -337 b 154 -328 158 -333 156 -330 b 68 0 96 -249 68 -160 b 156 327 68 160 98 246 b 158 338 158 330 158 338 l 158 353 b 154 359 158 357 156 359 b 0 0 49 272 0 147 b 156 -361 0 -145 46 -272 b 158 -356 157 -361 158 -357 z',\n },\n noteheadDoubleWhole: {\n x_min: 0,\n x_max: 599,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 13 223 b 0 212 4 223 0 217 l 0 -213 b 13 -223 0 -219 4 -223 l 32 -223 b 45 -213 39 -223 45 -219 l 45 212 b 32 223 45 217 39 223 z m 96 223 b 82 212 88 223 82 217 l 82 -213 b 96 -223 82 -219 88 -223 l 114 -223 b 128 -213 121 -223 128 -219 l 128 212 b 114 223 128 217 121 223 z m 747 223 b 733 212 740 223 733 217 l 733 -213 b 747 -223 733 -219 740 -223 l 766 -223 b 780 -213 773 -223 780 -219 l 780 212 b 766 223 780 217 773 223 z m 829 223 b 815 212 824 223 815 217 l 815 -213 b 829 -223 815 -219 824 -223 l 848 -223 b 863 -213 857 -223 863 -219 l 863 212 b 848 223 863 217 857 223 z m 438 180 b 130 1 248 180 130 101 b 423 -180 130 -92 210 -180 b 733 1 657 -180 733 -98 b 438 180 733 104 572 180 z m 469 -145 b 331 -71 409 -145 369 -112 b 284 58 305 -37 284 12 b 400 147 284 131 333 147 b 577 -45 498 147 577 42 b 469 -145 577 -115 533 -145 z',\n },\n noteheadWhole: {\n x_min: 0,\n x_max: 422,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 311 180 b 0 3 120 180 0 101 b 297 -180 0 -94 82 -180 b 608 3 533 -180 608 -98 b 311 180 608 105 445 180 z m 160 91 b 274 148 176 141 229 148 b 452 -45 373 148 452 42 b 386 -141 452 -89 433 -130 b 341 -147 372 -145 356 -147 b 206 -72 289 -147 236 -112 b 156 56 177 -39 156 10 b 160 91 156 68 157 79 z',\n },\n noteheadHalf: {\n x_min: 0,\n x_max: 295,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 140 -180 b 425 60 377 -180 425 13 b 282 180 425 134 366 180 b 0 -60 68 180 0 14 b 140 -180 0 -137 60 -180 z m 108 -125 b 50 -92 78 -125 60 -109 b 42 -63 46 -84 42 -73 b 318 121 42 7 251 121 b 372 91 346 121 361 108 b 380 63 376 82 380 73 b 108 -125 380 1 177 -125 z',\n },\n noteheadBlack: {\n x_min: 0,\n x_max: 295,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 140 -180 b 425 60 268 -180 425 -62 b 285 180 425 134 367 180 b 0 -60 127 180 0 63 b 140 -180 0 -135 62 -180 z',\n },\n noteheadXDoubleWhole: {\n x_min: 0,\n x_max: 546,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 43 213 b 30 223 43 217 39 223 l 13 223 b 0 213 6 223 0 217 l 0 -215 b 13 -223 0 -219 6 -223 l 30 -223 b 43 -215 39 -223 43 -219 z m 704 213 b 693 223 704 217 698 223 l 672 223 b 660 213 667 223 660 217 l 660 163 b 634 180 655 173 645 180 l 505 180 b 484 173 498 180 490 177 l 393 95 l 300 173 b 279 180 294 177 287 180 l 151 180 b 125 163 141 180 130 173 l 125 213 b 112 223 125 217 118 223 l 94 223 b 82 213 86 223 82 217 l 82 -215 b 94 -223 82 -219 86 -223 l 112 -223 b 125 -215 118 -223 125 -219 l 125 -163 b 151 -180 130 -173 140 -180 l 279 -180 b 300 -171 287 -180 294 -177 l 393 -95 l 485 -171 b 505 -180 491 -177 498 -180 l 632 -180 b 660 -163 645 -180 655 -173 l 660 -215 b 672 -223 660 -219 667 -223 l 693 -223 b 704 -215 698 -223 704 -219 z m 786 213 b 772 223 786 217 780 223 l 755 223 b 740 213 747 223 740 217 l 740 -215 b 755 -223 740 -219 747 -223 l 772 -223 b 786 -215 780 -223 786 -219 z m 507 -141 l 393 -45 l 276 -141 l 207 -141 l 364 0 l 207 141 l 276 141 l 393 45 l 507 141 l 577 141 l 420 0 l 577 -141 z m 660 -132 l 518 0 l 660 132 z m 125 131 l 266 0 l 125 -131 z',\n },\n noteheadXWhole: {\n x_min: 0,\n x_max: 377,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 272 -95 l 364 -171 b 384 -180 370 -177 377 -180 l 511 -180 b 543 -148 528 -180 543 -164 b 531 -124 543 -140 539 -131 l 412 0 l 531 124 b 541 148 539 131 541 140 b 513 180 541 164 528 180 l 384 180 b 364 171 377 180 370 177 l 272 94 l 179 171 b 158 180 173 177 166 180 l 30 180 b 0 148 16 180 0 164 b 12 124 0 140 4 131 l 132 0 l 12 -124 b 1 -148 4 -131 1 -140 b 32 -180 1 -164 14 -180 l 158 -180 b 179 -171 166 -180 173 -177 z m 386 -141 l 272 -45 l 157 -141 l 88 -141 l 245 0 l 88 141 l 157 141 l 272 45 l 386 141 l 456 141 l 300 0 l 456 -141 z',\n },\n noteheadXHalf: {\n x_min: 0,\n x_max: 334,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 295 180 b 271 170 287 180 278 177 l 209 98 l 115 171 b 95 180 109 177 104 180 l 36 180 b 4 148 19 180 4 164 b 14 124 4 140 7 132 l 140 22 l 7 -127 b 0 -148 3 -131 0 -138 b 32 -180 0 -166 14 -180 l 184 -180 b 209 -170 193 -180 203 -177 l 271 -99 l 363 -171 b 384 -180 370 -176 377 -180 l 445 -180 b 478 -147 461 -180 478 -163 b 465 -125 478 -138 474 -131 l 341 -22 l 474 127 b 481 148 480 131 481 138 b 448 180 481 166 468 180 z m 36 148 l 95 148 l 233 33 l 334 148 l 410 148 l 274 -6 l 445 -148 l 384 -148 l 248 -35 l 147 -148 l 71 -148 l 206 4 z',\n },\n noteheadXBlack: {\n x_min: 0,\n x_max: 290,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 410 -143 l 239 0 l 410 144 b 418 160 415 147 418 154 b 399 180 418 171 408 180 b 389 177 396 180 392 179 l 207 26 l 29 177 b 17 180 26 179 22 180 b 0 161 7 180 0 170 b 7 144 0 156 3 148 l 179 0 l 7 -143 b 0 -158 1 -147 0 -153 b 19 -180 0 -170 7 -180 b 29 -176 23 -180 26 -179 l 207 -24 l 389 -176 b 399 -180 392 -179 396 -180 b 418 -160 410 -180 418 -168 b 410 -143 418 -153 415 -147 z',\n },\n noteheadCircleXDoubleWhole: {\n x_min: 0,\n x_max: 422,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 576 223 b 563 213 570 223 563 219 l 563 -215 b 576 -223 563 -219 570 -223 l 595 -223 b 608 -215 602 -223 608 -219 l 608 213 b 595 223 608 219 602 223 z m 497 223 b 484 213 491 223 484 219 l 484 -215 b 497 -223 484 -219 491 -223 l 516 -223 b 528 -215 523 -223 528 -219 l 528 213 b 516 223 528 219 523 223 z m 94 223 b 81 213 86 223 81 219 l 81 -215 b 94 -223 81 -219 86 -223 l 111 -223 b 124 -215 118 -223 124 -219 l 124 213 b 111 223 124 219 118 223 z m 13 223 b 0 213 6 223 0 219 l 0 -215 b 13 -223 0 -219 6 -223 l 30 -223 b 45 -215 37 -223 45 -219 l 45 213 b 30 223 45 219 37 223 z m 304 180 b 127 0 206 180 127 101 b 304 -180 127 -99 206 -180 b 482 0 405 -180 482 -99 b 304 180 482 101 405 180 z m 305 32 l 225 112 b 304 140 248 130 275 140 b 387 112 336 140 364 130 z m 278 1 l 193 -82 b 216 0 199 -59 216 -30 b 194 85 216 33 203 50 z m 334 1 l 418 84 b 389 0 402 50 389 23 b 418 -81 389 -30 409 -60 z m 305 -27 l 389 -109 b 304 -138 364 -128 336 -138 b 222 -109 274 -138 246 -128 z',\n },\n noteheadCircleXWhole: {\n x_min: 0,\n x_max: 249,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 179 180 b 0 0 81 180 0 101 b 179 -180 0 -99 81 -180 b 359 0 278 -180 359 -99 b 179 180 359 101 278 180 z m 180 32 l 99 112 b 179 140 121 130 150 140 b 262 112 210 140 238 130 z m 151 1 l 68 -82 b 86 0 73 -59 86 -30 b 68 85 86 33 78 50 z m 209 1 l 291 84 b 269 0 276 50 269 32 b 291 -79 269 -26 282 -58 z m 180 -27 l 264 -111 b 179 -138 239 -128 210 -138 b 96 -111 148 -138 120 -128 z',\n },\n noteheadCircleXHalf: {\n x_min: 0,\n x_max: 250,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 179 180 b 0 0 81 180 0 101 b 179 -180 0 -99 81 -180 b 360 0 278 -180 360 -99 b 179 180 360 101 278 180 z m 186 37 l 131 92 b 220 124 153 109 189 124 b 262 112 236 124 249 121 z m 215 7 l 291 84 b 304 42 300 71 304 58 b 271 -49 304 10 288 -26 z m 145 -6 l 68 -82 b 56 -42 59 -71 56 -58 b 89 52 56 -9 72 27 z m 174 -33 l 230 -89 b 140 -124 206 -108 171 -124 b 96 -111 122 -124 109 -121 z',\n },\n noteheadCircleX: {\n x_min: 0,\n x_max: 249,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 179 180 b 0 0 81 180 0 99 b 179 -180 0 -99 81 -180 b 359 0 278 -180 359 -99 b 179 180 359 99 278 180 z m 261 112 l 180 30 l 98 112 b 179 138 121 128 148 138 b 261 112 210 138 238 128 z m 317 0 b 292 -82 317 -30 308 -59 l 209 1 l 291 84 b 317 0 307 60 317 30 z m 40 0 b 69 84 40 32 50 60 l 151 1 l 68 -84 b 40 0 49 -60 40 -30 z m 95 -111 l 180 -27 l 262 -111 b 179 -138 239 -128 210 -138 b 95 -111 148 -138 120 -128 z',\n },\n noteheadCircledDoubleWhole: {\n x_min: 0,\n x_max: 603,\n y_min: -218,\n y_max: 213,\n ha: 431,\n o: 'm 770 223 l 752 223 b 737 213 744 223 737 219 l 737 59 b 435 307 710 203 582 307 b 128 48 281 307 156 197 l 128 213 b 115 223 128 219 122 223 l 96 223 b 84 213 89 223 84 219 l 84 -215 b 96 -223 84 -220 89 -223 l 115 -223 b 128 -215 122 -223 128 -220 l 128 -56 b 435 -314 156 -206 282 -314 b 654 -223 517 -314 595 -282 b 737 -66 697 -180 726 -125 l 737 -215 b 752 -223 737 -220 744 -223 l 770 -223 b 785 -215 778 -223 785 -220 l 785 213 b 770 223 785 219 778 223 z m 435 274 b 698 85 556 274 661 194 b 439 180 641 143 534 180 b 176 99 320 180 228 148 b 435 274 217 203 318 274 z m 32 223 l 13 223 b 0 213 6 223 0 219 l 0 -215 b 13 -223 0 -220 6 -223 l 32 -223 b 45 -215 40 -223 45 -220 l 45 213 b 32 223 45 219 40 223 z m 852 223 l 835 223 b 819 213 828 223 819 219 l 819 -215 b 835 -223 819 -220 828 -223 l 852 -223 b 868 -215 861 -223 868 -220 l 868 213 b 852 223 868 219 861 223 z m 580 -46 b 514 -143 580 -91 562 -131 b 472 -148 501 -147 487 -148 b 364 -105 433 -148 395 -131 l 334 -73 b 285 58 307 -39 285 10 b 289 91 285 69 287 79 b 403 145 305 140 357 145 b 580 -46 501 145 580 42 z m 435 -282 b 176 -108 318 -282 217 -209 b 425 -180 222 -151 301 -180 b 691 -109 563 -180 647 -153 b 435 -282 651 -210 550 -282 z',\n },\n noteheadCircledWhole: {\n x_min: 0,\n x_max: 437,\n y_min: -225,\n y_max: 211,\n ha: 436,\n o: 'm 314 304 b 0 -10 140 304 0 164 b 314 -324 0 -183 141 -324 b 629 -10 487 -324 629 -183 b 314 304 629 164 488 304 z m 314 275 b 588 73 441 275 549 193 b 321 180 536 137 420 180 b 48 88 190 180 95 143 b 314 275 85 199 199 275 z m 393 -141 b 350 -147 379 -145 364 -147 b 314 -141 337 -147 325 -145 b 167 55 235 -120 167 -26 b 173 91 167 66 168 79 b 284 145 187 138 239 145 b 459 -48 382 145 459 39 b 393 -141 459 -91 438 -131 z m 314 -294 b 40 -86 187 -294 75 -207 b 305 -180 81 -141 164 -180 b 588 -86 464 -180 550 -143 b 314 -294 554 -209 442 -294 z',\n },\n noteheadCircledHalf: {\n x_min: -18,\n x_max: 311,\n y_min: -162,\n y_max: 167,\n ha: 329,\n o: 'm 212 240 b -26 3 81 240 -26 134 b 212 -233 -26 -127 81 -233 b 448 3 341 -233 448 -127 b 212 240 448 134 341 240 z m 212 220 b 363 160 271 220 324 197 b 281 180 341 173 312 180 b 0 -52 76 180 6 26 b -6 3 -4 -35 -6 -16 b 212 220 -6 122 92 220 z m 50 -92 b 42 -63 46 -84 42 -73 b 173 63 42 -33 73 7 b 317 120 243 105 288 120 b 369 89 344 120 359 107 b 377 62 374 81 377 72 b 248 -66 377 33 348 -1 b 108 -125 183 -109 138 -125 b 50 -92 78 -125 60 -109 z m 212 -215 b 84 -171 164 -215 120 -199 b 138 -180 101 -179 120 -180 b 422 56 372 -180 420 7 b 429 3 426 40 429 22 b 212 -215 429 -117 333 -215 z',\n },\n noteheadCircledBlack: {\n x_min: -21,\n x_max: 321,\n y_min: -171,\n y_max: 167,\n ha: 338,\n o: 'm 216 240 b -30 -3 82 240 -30 131 b 216 -246 -30 -137 82 -246 b 462 -3 351 -246 462 -137 b 216 240 462 131 351 240 z m 216 220 b 372 160 276 220 331 197 b 284 180 348 174 317 180 b 0 -59 127 180 0 65 l 0 -66 b -10 -3 -6 -45 -10 -24 b 216 220 -10 120 92 220 z m 216 -226 b 56 -158 153 -226 96 -200 b 140 -180 79 -171 107 -180 b 425 60 268 -180 425 -60 b 422 88 425 71 425 79 b 442 -3 435 60 442 29 b 216 -226 442 -125 341 -226 z',\n },\n noteheadDoubleWholeSquare: {\n x_min: 0,\n x_max: 416,\n y_min: -190,\n y_max: 198,\n ha: 388,\n o: 'm 563 217 b 528 180 563 192 544 180 l 62 180 b 36 215 52 180 36 192 l 36 268 b 17 285 36 278 27 285 b 0 268 7 285 0 278 l 0 -255 b 17 -274 0 -264 7 -274 b 36 -255 27 -274 36 -264 l 36 -213 b 66 -180 36 -197 53 -180 l 528 -180 b 563 -209 549 -180 563 -196 l 563 -255 b 580 -274 563 -264 570 -274 b 599 -255 590 -274 599 -264 l 599 268 b 580 285 599 278 590 285 b 563 268 570 285 563 278 z m 36 23 b 111 71 36 55 58 71 l 487 71 b 563 30 533 71 563 53 l 563 -22 b 487 -68 563 -53 533 -68 l 117 -68 b 36 -22 66 -68 36 -49 z',\n },\n noteheadSquareWhite: {\n x_min: 0,\n x_max: 313,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 451 -180 l 451 180 l 0 180 l 0 -180 z m 40 -138 l 40 140 l 410 140 l 410 -138 z',\n },\n noteheadSquareBlack: {\n x_min: 0,\n x_max: 313,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 451 -180 l 451 180 l 0 180 l 0 -180 z',\n },\n noteheadTriangleDownDoubleWhole: {\n x_min: 0,\n x_max: 483,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 696 213 b 681 223 696 219 690 223 l 662 223 b 648 213 655 223 648 219 l 648 -213 b 662 -223 648 -217 655 -223 l 681 -223 b 696 -213 690 -223 696 -217 z m 619 213 b 605 223 619 219 613 223 l 588 223 b 573 213 580 223 573 219 l 573 174 b 562 180 570 177 566 180 l 134 180 b 122 174 130 180 125 177 l 122 213 b 108 223 122 219 117 223 l 91 223 b 76 213 84 223 76 219 l 76 -213 b 91 -223 76 -217 84 -223 l 108 -223 b 122 -213 117 -223 122 -217 l 122 154 l 334 -173 b 346 -180 337 -177 341 -180 b 357 -173 351 -180 354 -177 l 573 154 l 573 -213 b 588 -223 573 -217 580 -223 l 605 -223 b 619 -213 613 -223 619 -217 z m 32 -223 b 46 -213 40 -223 46 -217 l 46 213 b 32 223 46 219 40 223 l 14 223 b 0 213 7 223 0 219 l 0 -213 b 14 -223 0 -217 7 -223 z m 428 98 b 346 -107 428 17 377 -53 b 265 96 315 -55 265 17 b 289 137 265 109 275 137 l 406 137 b 428 98 419 137 428 111 z',\n },\n noteheadTriangleDownWhole: {\n x_min: 0,\n x_max: 319,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 14 180 b 0 166 6 180 0 173 b 1 158 0 163 1 160 l 216 -173 b 228 -180 219 -177 225 -180 b 239 -173 233 -180 238 -177 l 458 158 b 459 166 458 160 459 163 b 445 180 459 173 454 180 z m 288 137 b 310 98 301 137 310 111 b 228 -108 310 17 259 -55 b 145 96 197 -56 145 17 b 170 137 145 109 157 137 z',\n },\n noteheadTriangleDownHalf: {\n x_min: 0,\n x_max: 285,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 196 -180 b 209 -173 200 -180 206 -177 l 408 157 b 410 166 409 160 410 163 b 396 180 410 173 403 180 l 14 180 b 0 166 4 180 0 173 b 1 158 0 163 0 161 l 183 -173 b 196 -180 184 -174 190 -180 z m 164 138 l 295 138 l 179 -76 l 114 37 z',\n },\n noteheadTriangleDownBlack: {\n x_min: 0,\n x_max: 292,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 207 -180 l 420 180 l 0 180 z',\n },\n noteheadTriangleUpDoubleWhole: {\n x_min: 0,\n x_max: 483,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 696 213 b 681 223 696 217 690 223 l 662 223 b 648 213 655 223 648 217 l 648 -213 b 662 -223 648 -219 655 -223 l 681 -223 b 696 -213 690 -223 696 -219 z m 619 213 b 605 223 619 217 613 223 l 588 223 b 573 213 580 223 573 217 l 573 -154 l 357 173 b 346 180 354 177 351 180 b 334 173 341 180 337 177 l 122 -154 l 122 213 b 108 223 122 217 117 223 l 91 223 b 76 213 84 223 76 217 l 76 -213 b 91 -223 76 -219 84 -223 l 108 -223 b 122 -213 117 -223 122 -219 l 122 -174 b 134 -180 125 -177 130 -180 l 562 -180 b 573 -174 566 -180 570 -177 l 573 -213 b 588 -223 573 -219 580 -223 l 605 -223 b 619 -213 613 -223 619 -219 z m 32 223 l 14 223 b 0 213 7 223 0 217 l 0 -213 b 14 -223 0 -219 7 -223 l 32 -223 b 46 -213 40 -223 46 -219 l 46 213 b 32 223 46 217 40 223 z m 428 -98 b 406 -137 428 -111 419 -137 l 289 -137 b 265 -96 275 -137 265 -109 b 346 107 265 -17 315 55 b 428 -98 377 53 428 -17 z',\n },\n noteheadTriangleUpWhole: {\n x_min: 0,\n x_max: 319,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 445 -180 b 459 -166 454 -180 459 -173 b 458 -158 459 -163 458 -160 l 239 173 b 228 180 238 177 233 180 b 216 173 225 180 219 177 l 1 -158 b 0 -166 1 -160 0 -163 b 14 -180 0 -173 6 -180 z m 170 -137 b 145 -96 157 -137 145 -109 b 228 108 145 -17 197 56 b 310 -98 259 55 310 -17 b 288 -137 310 -111 301 -137 z',\n },\n noteheadTriangleUpHalf: {\n x_min: 0,\n x_max: 285,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 215 180 b 202 173 210 180 204 177 l 3 -157 b 0 -166 1 -160 0 -163 b 14 -180 0 -173 7 -180 l 396 -180 b 410 -166 406 -180 410 -173 b 409 -158 410 -163 410 -161 l 228 173 b 215 180 226 174 220 180 z m 246 -138 l 115 -138 l 232 76 l 297 -37 z',\n },\n noteheadTriangleUpBlack: {\n x_min: 0,\n x_max: 293,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 422 -180 l 207 180 l 0 -180 z',\n },\n noteheadSlashedDoubleWhole1: {\n x_min: 0,\n x_max: 596,\n y_min: -179,\n y_max: 168,\n ha: 347,\n o: 'm 618 135 l 697 206 b 704 222 703 210 704 216 b 698 236 704 226 703 232 b 683 242 694 239 688 242 b 670 238 677 242 674 240 l 575 153 b 435 180 531 168 481 180 b 128 0 246 180 128 98 b 236 -148 128 -58 160 -114 l 153 -222 b 145 -238 148 -226 145 -232 b 151 -252 145 -242 148 -248 b 167 -258 156 -256 161 -258 b 181 -253 171 -258 177 -256 l 282 -164 b 420 -180 320 -173 366 -180 b 729 0 654 -180 729 -98 b 618 135 729 55 681 104 z m 114 223 l 95 223 b 82 212 88 223 82 217 l 82 -215 b 95 -223 82 -219 88 -223 l 114 -223 b 127 -215 121 -223 127 -219 l 127 212 b 114 223 127 217 121 223 z m 32 223 l 13 223 b 0 212 6 223 0 217 l 0 -215 b 13 -223 0 -219 6 -223 l 32 -223 b 45 -215 39 -223 45 -219 l 45 212 b 32 223 45 217 39 223 z m 844 223 l 825 223 b 811 212 819 223 811 217 l 811 -215 b 825 -223 811 -219 819 -223 l 844 -223 b 858 -215 851 -223 858 -219 l 858 212 b 844 223 858 217 851 223 z m 763 223 l 743 223 b 730 212 736 223 730 217 l 730 -215 b 743 -223 730 -219 736 -223 l 763 -223 b 776 -215 769 -223 776 -219 l 776 212 b 763 223 776 217 769 223 z m 282 56 b 285 89 282 68 284 79 b 399 144 301 137 354 144 b 510 95 441 144 480 124 l 327 -68 b 282 56 301 -35 282 13 z m 572 -72 b 508 -141 564 -108 544 -132 b 467 -147 495 -145 481 -147 b 360 -104 428 -147 389 -128 l 356 -98 l 537 63 b 575 -46 560 30 575 -9 b 572 -72 575 -55 573 -65 z',\n },\n noteheadSlashedWhole1: {\n x_min: -22,\n x_max: 433,\n y_min: -157,\n y_max: 148,\n ha: 305,\n o: 'm 484 140 b 308 180 431 166 367 180 b 0 1 118 180 0 99 b 73 -128 0 -48 22 -95 l -22 -190 b -32 -206 -27 -194 -32 -200 b -27 -217 -32 -210 -30 -215 b -12 -226 -23 -223 -17 -226 b 0 -223 -7 -226 -4 -225 l 112 -150 b 294 -180 157 -168 217 -180 b 602 1 526 -180 602 -98 b 523 118 602 48 570 86 l 613 177 b 624 193 619 181 624 187 b 619 204 624 197 622 200 b 603 213 615 209 609 213 b 592 209 599 213 596 212 z m 190 -52 b 154 56 170 -20 154 19 b 160 91 154 68 156 79 b 271 147 174 138 226 147 b 396 82 321 147 364 121 z m 419 50 b 446 -48 436 19 446 -14 b 337 -147 446 -120 402 -147 b 301 -141 327 -147 314 -144 b 235 -104 276 -134 253 -120 b 215 -84 226 -98 220 -91 z',\n },\n noteheadSlashedHalf1: {\n x_min: -67,\n x_max: 386,\n y_min: -142,\n y_max: 160,\n ha: 302,\n o: 'm 552 222 b 536 230 549 228 543 230 b 524 228 533 230 528 230 l 389 140 b 281 180 364 164 327 180 b 0 -60 65 180 0 13 b 7 -105 0 -78 3 -92 l -88 -167 b -96 -184 -94 -171 -96 -177 b -94 -194 -96 -187 -95 -192 b -76 -204 -89 -202 -84 -204 b -66 -202 -73 -204 -69 -203 l 29 -140 b 137 -180 55 -167 92 -180 b 420 59 374 -180 420 13 b 412 107 420 76 419 92 l 546 194 b 556 210 552 197 556 204 b 552 222 556 213 554 217 z m 315 120 b 347 112 328 120 338 117 l 46 -82 b 42 -63 43 -76 42 -69 b 315 120 42 6 248 120 z m 108 -124 b 69 -114 91 -124 79 -120 l 372 81 b 376 63 374 75 376 69 b 108 -124 376 0 174 -124 z',\n },\n noteheadSlashedBlack1: {\n x_min: -80,\n x_max: 375,\n y_min: -165,\n y_max: 167,\n ha: 332,\n o: 'm 518 240 b 507 236 514 240 510 239 l 384 148 b 284 180 359 168 324 180 b 0 -62 127 180 0 63 b 13 -115 0 -82 4 -99 l -107 -202 b -115 -217 -111 -204 -115 -212 b -111 -229 -115 -222 -114 -225 b -95 -238 -108 -235 -101 -238 b -84 -235 -91 -238 -86 -236 l 39 -148 b 140 -180 63 -170 99 -180 b 425 59 268 -180 425 -62 b 410 117 425 81 420 101 l 530 203 b 540 219 536 207 540 213 b 518 240 540 229 528 240 z',\n },\n noteheadSlashedDoubleWhole2: {\n x_min: 0,\n x_max: 596,\n y_min: -178,\n y_max: 169,\n ha: 347,\n o: 'm 729 0 b 435 180 729 102 569 180 b 278 156 374 180 321 170 l 184 239 b 170 243 181 242 176 243 b 154 238 166 243 158 240 b 150 223 151 233 150 228 b 156 207 150 217 153 212 l 233 138 b 128 0 167 107 128 56 b 420 -180 128 -94 210 -180 b 575 -164 482 -180 533 -174 l 672 -252 b 687 -256 677 -255 681 -256 b 703 -251 691 -256 698 -255 b 707 -236 706 -246 707 -240 b 701 -220 707 -230 706 -225 l 619 -150 b 729 0 700 -117 729 -62 z m 114 223 l 95 223 b 82 213 88 223 82 217 l 82 -213 b 95 -223 82 -219 88 -223 l 114 -223 b 127 -213 121 -223 127 -219 l 127 213 b 114 223 127 217 121 223 z m 32 223 l 13 223 b 0 213 6 223 0 217 l 0 -213 b 13 -223 0 -219 6 -223 l 32 -223 b 45 -213 39 -223 45 -219 l 45 213 b 32 223 45 217 39 223 z m 844 223 l 825 223 b 811 213 819 223 811 217 l 811 -213 b 825 -223 811 -219 819 -223 l 844 -223 b 858 -213 851 -223 858 -219 l 858 213 b 844 223 858 217 851 223 z m 763 223 l 743 223 b 730 213 736 223 730 217 l 730 -213 b 743 -223 730 -219 736 -223 l 763 -223 b 776 -213 769 -223 776 -219 l 776 213 b 763 223 776 217 769 223 z m 312 124 b 399 144 336 141 369 144 b 575 -46 495 144 575 40 b 563 -98 575 -65 570 -81 z m 508 -141 b 467 -147 495 -145 481 -147 b 360 -104 428 -147 389 -128 b 330 -72 350 -95 340 -82 b 282 56 304 -37 282 10 b 285 89 282 68 284 79 b 536 -130 287 89 304 75 z',\n },\n noteheadSlashedWhole2: {\n x_min: -18,\n x_max: 436,\n y_min: -154,\n y_max: 151,\n ha: 305,\n o: 'm 531 -128 b 602 1 582 -96 602 -49 b 308 180 602 104 441 180 b 114 144 230 180 164 166 l 4 215 b -6 217 1 217 -3 217 b -22 209 -13 217 -19 215 b -26 197 -24 204 -26 200 b -16 181 -26 192 -22 184 l 75 121 b 0 1 27 91 0 49 b 294 -180 0 -94 82 -180 b 491 -150 379 -180 444 -168 l 598 -219 b 608 -222 600 -222 605 -222 b 624 -213 615 -222 621 -219 b 628 -202 626 -209 628 -206 b 618 -186 628 -196 624 -189 z m 168 108 b 271 147 190 141 233 147 b 446 -48 369 147 446 40 b 445 -72 446 -56 446 -63 z m 154 69 l 429 -109 b 382 -141 419 -125 402 -135 b 337 -147 367 -144 351 -147 b 301 -141 327 -147 314 -144 b 235 -104 276 -134 253 -120 b 203 -72 223 -94 213 -82 b 154 58 177 -39 154 12 z',\n },\n noteheadSlashedHalf2: {\n x_min: -73,\n x_max: 380,\n y_min: -134,\n y_max: 168,\n ha: 302,\n o: 'm 537 -156 l 383 -58 b 422 60 413 -9 422 39 b 281 180 422 134 364 180 b 101 127 203 180 144 157 l -75 239 b -85 242 -78 242 -82 242 b -102 233 -92 242 -98 239 b -105 222 -104 229 -105 225 b -95 206 -105 216 -102 209 l 69 99 b 0 -59 19 46 0 -20 b 138 -180 0 -135 60 -180 b 359 -88 248 -180 317 -138 l 516 -190 b 527 -193 520 -192 524 -193 b 543 -183 534 -193 540 -190 b 547 -173 546 -180 547 -176 b 537 -156 547 -166 543 -160 z m 367 92 b 377 63 374 82 377 73 b 318 -14 377 43 361 20 l 184 72 b 317 121 248 108 289 121 b 367 92 344 121 357 109 z m 248 -66 b 108 -124 181 -108 138 -124 b 50 -92 78 -124 60 -109 b 42 -63 46 -84 42 -73 b 145 49 42 -35 68 0 l 285 -40 b 248 -66 274 -49 261 -56 z',\n },\n noteheadSlashedBlack2: {\n x_min: -79,\n x_max: 376,\n y_min: -164,\n y_max: 168,\n ha: 332,\n o: 'm 531 -200 l 363 -78 b 425 59 402 -37 425 10 b 285 180 425 132 367 180 b 92 114 210 180 144 154 l -81 238 b -94 242 -85 240 -89 242 b -111 232 -99 242 -107 238 b -114 220 -112 229 -114 225 b -105 204 -114 215 -111 207 l 62 85 b 0 -62 23 43 0 -9 b 140 -180 0 -137 62 -180 b 331 -108 204 -180 275 -153 l 507 -233 b 520 -236 511 -236 517 -236 b 537 -228 527 -236 533 -233 b 541 -216 540 -225 541 -220 b 531 -200 541 -210 537 -203 z',\n },\n noteheadDiamondDoubleWhole: {\n x_min: 0,\n x_max: 432,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 592 223 b 580 215 585 223 580 219 l 580 -215 b 592 -223 580 -219 585 -223 l 608 -223 b 622 -215 615 -223 622 -219 l 622 215 b 608 223 622 219 615 223 z m 517 223 b 504 215 510 223 504 219 l 504 -215 b 517 -223 504 -219 510 -223 l 533 -223 b 544 -215 540 -223 544 -219 l 544 215 b 533 223 544 219 540 223 z m 246 179 b 240 180 243 179 242 180 b 232 176 236 180 233 179 l 118 22 b 117 17 117 20 117 19 l 117 215 b 104 223 117 219 111 223 l 88 223 b 75 215 81 223 75 219 l 75 -215 b 88 -223 75 -219 81 -223 l 104 -223 b 117 -215 111 -223 117 -219 l 117 14 l 118 14 b 122 7 118 12 120 10 l 374 -179 b 382 -180 376 -180 379 -180 b 390 -177 384 -180 387 -180 l 503 -23 l 503 -17 b 500 -9 503 -13 503 -10 z m 12 223 b 0 215 4 223 0 219 l 0 -215 b 12 -223 0 -219 4 -223 l 29 -223 b 40 -215 36 -223 40 -219 l 40 215 b 29 223 40 219 36 223 z m 183 39 b 179 46 181 39 179 43 b 229 112 226 112 228 112 b 236 109 229 112 233 111 l 436 -39 b 439 -46 438 -39 439 -42 b 390 -112 393 -111 392 -112 b 383 -109 389 -112 386 -111 z',\n },\n noteheadDiamondWhole: {\n x_min: 0,\n x_max: 270,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 386 -23 b 389 -16 387 -20 389 -19 b 383 -7 389 -13 386 -9 l 130 179 b 122 180 128 180 125 180 b 115 177 120 180 117 180 l 3 23 b 0 17 1 20 0 19 b 4 7 0 16 3 10 l 258 -179 b 264 -180 261 -179 262 -180 b 272 -176 268 -180 271 -179 z m 66 40 b 62 48 65 42 62 45 l 109 111 b 112 112 109 112 111 112 b 118 111 115 112 117 111 l 320 -37 b 324 -46 323 -39 324 -42 b 275 -111 278 -111 276 -111 b 268 -108 272 -111 271 -109 z',\n },\n noteheadDiamondHalf: {\n x_min: 0,\n x_max: 251,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 359 -7 b 361 0 360 -6 361 -3 b 359 7 361 3 360 4 l 189 177 b 180 180 186 179 183 180 b 174 177 179 180 176 179 l 4 7 b 0 0 1 4 0 3 b 4 -7 0 -3 1 -6 l 174 -177 b 180 -180 176 -180 179 -180 b 189 -177 183 -180 186 -180 z m 266 26 b 138 -71 266 -12 176 -71 b 96 -50 121 -71 108 -63 b 88 -24 89 -43 88 -32 b 215 73 88 13 177 73 b 266 26 238 73 266 50 z',\n },\n noteheadDiamondBlack: {\n x_min: 0,\n x_max: 250,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 357 -6 b 360 1 359 -4 360 -1 b 357 9 360 4 359 7 l 189 177 b 180 180 187 179 184 180 b 171 177 177 180 173 179 l 3 9 b 0 1 0 6 0 4 b 4 -7 0 -1 1 -4 l 173 -177 b 180 -180 176 -180 177 -180 b 187 -177 181 -180 184 -180 z',\n },\n noteheadParenthesis: {\n x_min: -73,\n x_max: 368,\n y_min: -180,\n y_max: 182,\n ha: 362,\n o: 'm 52 -249 b -30 -144 3 -212 -14 -190 b -52 4 -45 -102 -52 -56 b 52 252 -52 118 -36 179 l 46 262 b -105 3 -49 197 -105 124 b 45 -259 -105 -109 -48 -200 z m 382 -259 b 530 3 474 -202 530 -108 b 379 262 530 122 474 200 l 373 252 b 478 4 462 180 478 118 b 456 -144 478 -56 471 -102 b 373 -249 439 -190 422 -212 z',\n },\n noteheadParenthesisRight: {\n x_min: -36,\n x_max: 73,\n y_min: -181,\n y_max: 181,\n ha: 362,\n o: 'm -43 -261 b 105 1 49 -203 105 -109 b -46 261 105 121 49 199 l -52 251 b 53 3 37 179 53 117 b 32 -145 53 -58 46 -104 b -52 -251 14 -192 -3 -213 z',\n },\n noteheadParenthesisLeft: {\n x_min: 0,\n x_max: 109,\n y_min: -181,\n y_max: 181,\n ha: 362,\n o: 'm 157 -251 b 75 -145 108 -213 91 -192 b 53 3 60 -104 53 -58 b 157 251 53 117 69 177 l 151 261 b 0 1 56 196 0 122 b 150 -261 0 -111 58 -202 z',\n },\n noteheadMoonBlack: {\n x_min: 0,\n x_max: 315,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 228 -180 b 454 0 343 -180 454 -130 l 454 180 l 0 180 l 0 0 b 228 -180 0 -131 112 -180 z',\n },\n noteheadTriangleLeftBlack: {\n x_min: 0,\n x_max: 339,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 488 -180 l 0 180 l 0 -180 z',\n },\n noteheadTriangleRightBlack: {\n x_min: 0,\n x_max: 339,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 488 180 l 0 -180 l 488 -180 z',\n },\n noteheadTriangleRoundDownBlack: {\n x_min: 0,\n x_max: 278,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 200 -180 l 400 112 l 383 124 b 199 180 327 161 264 180 b 16 124 135 180 73 161 l 0 112 z',\n },\n augmentationDot: {\n x_min: 0,\n x_max: 100,\n y_min: -50,\n y_max: 50,\n ha: 100,\n o: 'm 144 0 b 72 72 144 40 112 72 b 0 0 32 72 0 40 b 72 -72 0 -40 32 -72 b 144 0 112 -72 144 -40 z',\n },\n tremolo1: {\n x_min: -150,\n x_max: 150,\n y_min: -93,\n y_max: 94,\n ha: 187,\n o: 'm 216 -45 l 216 135 l -216 46 l -216 -134 z',\n },\n flag8thUp: {\n x_min: 0,\n x_max: 264,\n y_min: -810.1921176545985,\n y_max: 9,\n ha: 819.1921176545985,\n o: 'm 343 -1138 b 380 -888 343 -1138 380 -1001 b 215 -395 380 -708 305 -539 b 58 -19 141 -281 81 -157 b 27 13 53 4 42 13 b 0 -9 12 13 0 9 l 0 -353 b 284 -688 95 -370 232 -566 b 318 -904 305 -737 318 -819 b 284 -1102 318 -969 308 -1037 b 279 -1123 281 -1110 279 -1117 b 302 -1165 279 -1146 294 -1159 b 343 -1138 311 -1171 336 -1162 z',\n },\n flag8thDown: {\n x_min: 0,\n x_max: 306,\n y_min: -14,\n y_max: 808,\n ha: 822,\n o: 'm 346 1094 b 376 897 366 1034 376 962 b 318 642 376 812 340 691 b 0 340 265 521 193 405 l 0 1 b 23 -20 0 -13 12 -20 b 58 12 36 -20 55 -12 b 262 387 82 148 189 274 b 441 881 353 530 441 701 b 400 1142 441 994 412 1096 b 377 1164 396 1158 387 1164 b 346 1094 356 1164 331 1136 z',\n },\n flag16thUp: {\n x_min: 0,\n x_max: 279,\n y_min: -813,\n y_max: 2,\n ha: 815,\n o: 'm 392 -1146 b 402 -988 397 -1139 402 -1057 l 402 -956 b 360 -783 402 -896 386 -837 b 359 -770 360 -779 359 -776 b 360 -760 359 -768 359 -765 b 396 -577 364 -752 396 -665 b 392 -526 396 -559 395 -543 b 236 -275 377 -428 340 -387 b 53 -16 158 -192 78 -168 b 24 3 50 0 33 3 b 0 -12 16 3 0 -1 l 0 -570 l 7 -570 b 298 -778 96 -573 199 -576 b 344 -992 331 -847 344 -917 b 333 -1120 344 -1034 340 -1077 b 331 -1133 331 -1126 331 -1129 b 363 -1171 331 -1152 343 -1171 b 392 -1146 373 -1171 383 -1165 z m 301 -661 b 223 -562 278 -625 253 -596 b 59 -331 156 -484 89 -449 b 58 -327 58 -330 58 -328 b 78 -312 58 -321 66 -312 l 89 -312 b 302 -464 177 -312 255 -393 b 341 -592 328 -501 341 -546 b 340 -621 341 -602 341 -611 b 330 -658 337 -632 337 -647 b 311 -667 328 -662 318 -667 b 301 -661 307 -667 304 -665 z',\n },\n flag16thDown: {\n x_min: 0,\n x_max: 290.8951581511223,\n y_min: -9,\n y_max: 812.0064,\n ha: 821.0064,\n o: 'm 346 1132 b 312 768 367 1011 367 880 b 7 559 213 566 96 562 l 0 559 l 0 1 b 24 -13 0 -6 10 -13 b 53 6 35 -13 50 -10 b 406 516 88 228 372 289 b 410 567 409 531 410 549 b 374 750 410 655 379 742 b 373 760 373 753 373 756 b 374 773 373 766 374 769 b 405 1138 426 881 428 1022 b 370 1169 397 1171 387 1169 b 346 1132 353 1168 341 1156 z m 325 657 b 344 647 333 657 343 652 b 354 611 351 636 351 622 b 356 582 356 600 356 590 b 317 454 356 534 343 491 b 89 302 269 383 177 302 l 78 302 b 58 317 66 302 58 310 b 59 321 58 318 58 320 b 238 552 89 439 170 472 b 315 651 268 585 292 613 b 325 657 318 655 321 657 z',\n },\n flag32ndUp: {\n x_min: 0,\n x_max: 261,\n y_min: -812,\n y_max: 149,\n ha: 961,\n o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 366 -289 369 -315 369 -302 b 220 -58 350 -202 317 -163 b 46 187 148 20 71 43 b 20 215 45 200 35 215 b 0 197 12 215 0 207 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 56 -390 147 -527 88 -495 b 73 -367 53 -380 60 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z',\n },\n flag32ndDown: {\n x_min: 0,\n x_max: 273,\n y_min: -172,\n y_max: 812,\n ha: 984,\n o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -229 b 20 -248 0 -242 9 -248 b 48 -219 35 -248 46 -232 b 229 36 72 -69 154 -46 b 380 278 330 145 364 186 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z',\n },\n flag64thUp: {\n x_min: 0,\n x_max: 261,\n y_min: -812,\n y_max: 347,\n ha: 1159,\n o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 220 228 350 84 317 122 b 46 472 148 305 71 328 b 20 500 45 485 32 500 b 0 482 10 500 0 492 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 24 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 58 187 148 20 82 43 b 56 193 58 189 58 192 b 300 24 138 193 220 157 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 b 73 -367 52 -376 63 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z',\n },\n flag64thDown: {\n x_min: 0,\n x_max: 273,\n y_min: -376,\n y_max: 812,\n ha: 1188,\n o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -523 b 20 -541 0 -534 9 -541 b 48 -513 35 -541 46 -526 b 229 -258 72 -363 154 -340 b 380 -16 330 -148 364 -108 b 384 27 383 -1 384 13 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z m 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 b 229 36 75 -86 145 -55 b 311 128 264 73 289 102 z',\n },\n flag128thUp: {\n x_min: 0,\n x_max: 261,\n y_min: -812,\n y_max: 533,\n ha: 1345,\n o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 341 75 360 26 353 50 b 369 222 354 111 369 167 b 366 264 369 236 369 251 b 220 495 350 351 317 390 b 46 740 148 573 71 596 b 22 768 45 753 35 768 b 0 750 10 768 0 760 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 292 b 321 223 315 264 321 242 b 317 193 321 212 318 203 b 301 135 314 180 308 158 b 220 228 281 161 255 190 b 55 461 151 304 79 327 b 300 292 134 461 220 426 z m 300 24 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 56 187 148 20 81 43 b 55 193 56 189 56 192 b 300 24 137 193 220 157 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 b 73 -367 53 -376 62 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z',\n },\n flag128thDown: {\n x_min: 0,\n x_max: 273,\n y_min: -580,\n y_max: 812,\n ha: 1392,\n o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -816 b 20 -835 0 -828 7 -835 b 48 -806 33 -835 46 -819 b 229 -552 72 -657 154 -634 b 380 -310 330 -442 364 -402 b 384 -266 383 -295 384 -281 b 351 -105 384 -206 366 -143 b 384 27 372 -66 384 -16 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z m 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 b 229 36 75 -86 145 -55 b 311 128 264 73 289 102 z m 330 -238 b 334 -268 331 -248 334 -256 b 311 -340 334 -287 328 -310 b 56 -516 229 -478 137 -516 b 229 -258 75 -380 145 -348 b 311 -166 264 -220 289 -192 z',\n },\n accidentalFlat: {\n x_min: 0,\n x_max: 226,\n y_min: -175,\n y_max: 439,\n ha: 614,\n o: 'm 17 -245 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 82 -225 117 -186 b 325 82 281 -72 325 16 b 196 220 325 164 262 216 b 117 196 171 220 137 209 b 85 176 108 189 92 176 b 78 177 82 176 81 176 b 62 202 68 181 62 192 b 72 608 63 233 72 579 b 45 632 72 624 59 632 b 0 592 24 632 1 618 b 17 -245 0 592 6 -230 z m 68 -117 b 63 27 68 -117 63 -30 b 66 73 63 50 65 68 b 167 144 76 102 134 144 b 226 60 209 144 226 96 b 98 -134 226 -17 160 -95 b 84 -138 92 -137 88 -138 b 68 -117 71 -138 68 -124 z',\n },\n accidentalNatural: {\n x_min: 0,\n x_max: 168,\n y_min: -335,\n y_max: 341,\n ha: 676,\n o: 'm 203 261 b 197 259 200 261 199 259 b 68 226 197 259 105 226 b 53 233 59 226 53 228 l 53 474 b 36 491 53 484 45 491 l 17 491 b 0 474 7 491 0 484 l 0 -268 b 13 -281 0 -276 4 -281 l 16 -279 b 22 -278 17 -279 20 -279 b 164 -235 42 -269 122 -235 b 189 -251 179 -235 189 -239 l 189 -465 b 206 -482 189 -475 196 -482 l 225 -482 b 242 -465 233 -482 242 -475 l 242 258 b 230 269 242 265 236 269 b 225 268 229 269 226 269 z m 53 56 b 176 114 53 76 141 114 b 189 107 184 114 189 112 l 189 -42 b 71 -101 189 -68 107 -101 b 53 -92 60 -101 53 -98 z',\n },\n accidentalSharp: {\n x_min: 0,\n x_max: 249,\n y_min: -348,\n y_max: 350,\n ha: 698,\n o: 'm 341 170 b 359 194 351 174 359 186 l 359 297 b 348 308 359 304 354 308 b 341 307 346 308 344 308 b 305 294 341 307 312 295 b 285 312 295 294 285 301 l 285 488 b 265 504 285 497 276 504 b 242 488 251 504 242 497 l 242 301 b 223 259 240 287 236 268 b 132 223 206 249 157 229 b 115 252 120 223 115 240 l 115 425 b 95 441 115 433 105 441 b 72 425 81 441 72 433 l 72 230 b 55 192 72 210 63 196 b 17 176 46 187 17 176 b 0 153 7 173 0 161 l 0 50 b 13 37 0 42 4 37 l 16 39 b 50 53 17 39 39 48 l 52 55 b 72 29 63 55 72 40 l 72 -114 b 56 -147 72 -130 65 -143 b 17 -163 48 -150 17 -163 b 0 -186 7 -166 0 -177 l 0 -288 b 13 -301 0 -297 4 -301 l 16 -300 b 50 -287 17 -300 37 -291 b 55 -285 52 -285 53 -285 b 72 -308 65 -285 72 -301 l 72 -485 b 91 -501 72 -494 81 -501 b 115 -485 105 -501 115 -494 l 115 -285 b 130 -253 115 -266 122 -256 l 217 -217 b 219 -217 217 -217 219 -217 l 222 -216 b 242 -242 235 -216 242 -233 l 242 -422 b 261 -438 242 -431 251 -438 b 285 -422 276 -438 285 -431 l 285 -217 b 301 -184 285 -206 291 -189 b 341 -168 311 -180 341 -168 b 359 -144 351 -164 359 -153 l 359 -42 b 348 -30 359 -35 354 -30 b 341 -32 346 -30 344 -30 l 304 -46 b 285 -20 295 -46 285 -37 l 285 114 b 304 156 285 124 292 151 z m 242 -65 b 132 -122 233 -94 166 -122 b 115 -115 124 -122 117 -120 b 111 -43 112 -109 111 -78 b 115 63 111 1 112 52 b 220 118 118 88 184 118 b 242 109 230 118 239 115 b 248 27 245 102 248 66 b 242 -65 248 -12 245 -52 z',\n },\n accidentalDoubleSharp: {\n x_min: 0,\n x_max: 247,\n y_min: -125,\n y_max: 127,\n ha: 252,\n o: 'm 274 -46 b 206 1 258 -37 206 -9 b 274 50 206 22 253 43 b 278 50 275 50 276 50 l 287 49 b 346 63 304 49 331 52 b 356 115 353 71 356 92 b 292 183 356 174 351 183 b 233 173 266 183 240 180 b 226 117 228 168 226 143 b 179 49 219 101 196 49 b 130 117 158 49 135 96 b 118 173 130 141 125 167 b 66 183 112 180 89 183 b 7 173 42 183 16 180 b 0 120 3 170 0 145 b 7 63 0 94 3 68 b 68 49 17 55 43 49 b 82 50 73 49 78 50 b 150 3 98 42 150 13 b 84 -46 150 -16 104 -39 l 69 -46 b 7 -56 43 -46 16 -49 b 0 -111 3 -60 0 -85 b 7 -166 0 -137 3 -163 b 65 -180 17 -174 40 -180 b 118 -166 86 -180 109 -176 b 130 -111 127 -158 130 -134 b 132 -105 130 -109 131 -107 b 177 -45 141 -85 158 -45 b 226 -111 196 -45 220 -91 b 233 -166 226 -137 228 -161 b 291 -180 243 -174 266 -180 b 356 -114 346 -180 356 -166 b 346 -56 356 -89 351 -63 b 288 -46 338 -49 312 -46 z',\n },\n accidentalDoubleFlat: {\n x_min: 0,\n x_max: 411,\n y_min: -175,\n y_max: 437,\n ha: 612,\n o: 'm 452 217 b 384 194 426 217 408 207 b 350 176 374 189 363 176 b 343 177 347 176 344 176 b 328 202 333 180 328 190 b 337 606 328 232 337 579 b 310 629 337 622 324 629 b 265 592 291 629 268 616 b 269 194 265 592 266 395 b 196 217 248 209 223 217 l 187 217 b 120 194 160 217 143 207 b 85 176 108 189 98 176 b 78 177 82 176 81 176 b 62 202 68 180 62 190 b 72 606 62 232 72 579 b 45 629 72 622 59 629 b 0 592 24 629 1 616 b 17 -245 0 592 7 -232 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 84 -226 120 -186 b 274 -50 206 -124 246 -85 b 284 -245 276 -158 279 -240 b 295 -252 288 -251 292 -252 b 304 -249 300 -252 304 -249 b 416 -163 348 -226 383 -186 b 592 82 546 -72 592 16 b 461 217 592 163 528 216 z m 96 -134 b 84 -138 92 -137 86 -138 b 68 -115 72 -138 68 -124 b 63 26 68 -115 63 -30 b 66 72 63 49 65 66 b 168 144 75 101 134 144 b 226 59 212 144 226 95 b 96 -134 226 -22 161 -94 z m 361 -134 b 348 -138 356 -137 351 -138 b 333 -115 337 -138 333 -124 b 328 39 333 -115 328 -16 b 330 72 328 55 328 68 b 433 144 338 101 399 144 b 468 130 448 144 459 140 b 490 59 481 112 490 88 b 361 -134 490 -22 426 -94 z',\n },\n accidentalParensLeft: {\n x_min: 0,\n x_max: 141,\n y_min: -248,\n y_max: 247,\n ha: 495,\n o: 'm 203 331 l 203 351 b 202 356 203 354 203 356 b 0 0 60 281 0 140 b 199 -357 0 -144 60 -269 b 203 -354 200 -357 203 -356 l 203 -333 b 200 -327 203 -330 202 -328 b 86 0 118 -253 86 -160 b 200 324 86 158 120 251 b 203 331 202 325 203 327 z',\n },\n accidentalParensRight: {\n x_min: 0,\n x_max: 141,\n y_min: -248,\n y_max: 247,\n ha: 495,\n o: 'm 0 331 b 3 324 0 327 1 325 b 117 0 84 251 117 158 b 3 -327 117 -160 85 -253 b 0 -333 1 -328 0 -330 l 0 -354 b 4 -357 0 -356 3 -357 b 203 0 143 -269 203 -144 b 1 356 203 140 143 281 b 0 351 0 356 0 354 z',\n },\n accidentalQuarterToneFlatStein: {\n x_min: 1,\n x_max: 227,\n y_min: -175,\n y_max: 439,\n ha: 614,\n o: 'm 310 -245 b 327 592 321 -230 327 592 b 282 632 325 618 302 632 b 255 608 268 632 255 624 b 265 202 255 579 264 233 b 249 177 265 192 259 181 b 242 176 246 176 245 176 b 210 196 235 176 219 189 b 131 220 190 209 156 220 b 1 85 65 216 1 164 b 174 -161 1 16 46 -72 b 288 -249 210 -186 245 -225 b 297 -252 288 -249 292 -252 b 310 -245 301 -252 305 -251 z m 259 -117 b 243 -138 259 -124 256 -138 b 229 -134 239 -138 235 -137 b 101 60 167 -95 101 -17 b 160 144 101 96 118 144 b 261 73 193 144 251 102 b 264 27 262 68 264 50 b 259 -117 264 -30 259 -117 z',\n },\n accidentalThreeQuarterTonesFlatZimmermann: {\n x_min: 1,\n x_max: 466,\n y_min: -175,\n y_max: 439,\n ha: 614,\n o: 'm 363 -245 b 376 -252 367 -251 372 -252 b 384 -249 380 -252 384 -249 b 497 -161 428 -226 464 -186 b 671 84 625 -72 671 16 b 541 220 671 164 606 217 b 513 217 531 220 523 219 b 464 196 495 212 480 206 b 431 176 452 189 442 176 b 423 177 428 176 426 176 b 408 202 413 180 408 190 l 419 608 b 392 632 419 625 406 632 b 346 592 372 632 347 618 b 363 -245 346 592 351 -230 z m 289 -249 b 297 -252 289 -249 292 -252 b 310 -245 300 -252 305 -251 b 328 592 321 -230 328 592 b 282 631 327 618 302 631 b 255 608 268 631 255 624 l 266 202 b 251 177 266 190 261 180 b 243 176 248 176 246 176 b 210 196 232 176 222 189 b 164 216 196 204 180 210 l 163 217 b 132 220 151 219 143 220 b 1 84 65 217 1 163 b 177 -163 1 16 48 -72 b 289 -249 210 -186 245 -226 z m 262 72 b 265 26 264 66 265 49 b 261 -115 265 -30 261 -115 b 245 -138 261 -124 258 -138 b 230 -134 240 -138 236 -137 b 102 60 166 -92 102 -20 b 124 128 102 88 111 112 b 161 144 134 138 147 144 b 199 134 173 144 184 141 b 262 72 219 122 256 92 z m 413 -115 b 409 26 413 -115 409 -30 b 412 72 409 49 410 66 b 514 144 420 102 480 144 b 570 60 557 144 570 96 b 442 -134 570 -23 508 -91 b 429 -138 436 -137 433 -138 b 413 -115 418 -138 413 -124 z',\n },\n accidentalQuarterToneSharpStein: {\n x_min: 0,\n x_max: 179,\n y_min: -353,\n y_max: 307,\n ha: 660,\n o: 'm 258 240 b 246 252 258 248 252 252 b 240 251 245 252 242 252 b 168 225 240 251 171 225 b 150 253 156 225 150 240 l 150 426 b 130 442 150 435 141 442 b 105 418 108 442 105 429 l 105 230 b 91 193 105 219 101 202 b 17 161 65 183 42 171 b 0 138 9 158 0 147 l 0 36 b 13 23 0 27 4 23 l 16 24 b 86 53 17 24 73 49 l 88 55 b 107 30 98 55 107 42 l 107 -114 b 92 -145 107 -130 101 -143 l 17 -177 b 0 -200 9 -180 0 -192 l 0 -302 b 13 -315 0 -311 4 -315 l 16 -314 b 85 -285 17 -314 72 -291 b 105 -312 92 -282 105 -301 l 105 -492 b 125 -508 105 -501 114 -508 b 150 -484 147 -508 150 -498 l 150 -285 b 151 -274 150 -281 150 -278 b 164 -253 153 -265 158 -256 b 240 -225 176 -251 240 -225 b 258 -202 249 -222 258 -210 l 258 -99 b 245 -86 258 -91 253 -86 l 242 -88 b 240 -88 242 -88 240 -88 l 240 -86 b 168 -115 240 -86 174 -114 b 148 -91 158 -115 148 -107 l 148 43 b 167 85 148 55 156 81 b 240 114 180 91 240 114 b 258 138 249 118 258 128 z',\n },\n accidentalThreeQuarterTonesSharpStein: {\n x_min: 3,\n x_max: 317,\n y_min: -347,\n y_max: 369,\n ha: 716,\n o: 'm 456 324 b 448 336 456 330 454 336 b 393 317 445 336 400 320 b 389 315 392 315 390 315 b 383 325 386 315 383 318 l 383 508 b 360 531 383 528 379 531 b 337 508 341 531 337 527 l 337 318 b 325 291 337 300 334 294 b 268 268 320 288 287 276 b 253 281 256 268 253 274 l 253 464 b 230 487 253 484 249 487 b 207 464 212 487 207 482 l 207 264 b 194 240 207 253 204 245 l 132 217 b 131 217 132 217 132 217 l 130 216 b 118 229 122 216 118 220 l 118 420 b 95 444 118 439 114 444 b 72 420 76 444 72 439 l 72 212 b 60 190 72 197 68 193 l 16 173 b 4 161 9 170 4 167 l 4 50 b 13 39 4 45 9 39 b 58 55 16 39 46 49 b 63 56 60 56 62 56 b 72 42 71 56 72 50 l 72 -125 b 58 -150 72 -137 65 -147 l 16 -166 b 4 -177 9 -168 4 -171 l 4 -289 b 14 -301 4 -295 9 -301 b 53 -287 16 -301 40 -291 b 62 -285 56 -285 59 -285 b 72 -298 69 -285 72 -289 l 72 -477 b 95 -500 72 -495 76 -500 b 118 -477 114 -500 118 -495 l 118 -278 b 127 -259 118 -269 121 -261 l 196 -232 b 207 -243 204 -232 207 -235 l 207 -432 b 230 -455 207 -452 212 -455 b 253 -432 249 -455 253 -451 l 253 -228 b 268 -204 253 -216 259 -207 l 320 -186 b 328 -183 323 -184 325 -183 b 337 -194 334 -183 337 -187 l 337 -387 b 360 -410 337 -408 341 -410 b 383 -387 379 -410 383 -406 l 383 -174 b 395 -157 383 -166 390 -158 l 445 -138 b 456 -127 452 -135 456 -132 l 456 -14 b 448 -3 456 -10 454 -3 b 397 -22 445 -3 408 -17 l 396 -23 b 383 -6 387 -23 383 -16 l 383 163 b 392 181 383 173 384 179 b 445 202 397 183 445 202 b 456 213 452 203 456 207 z m 337 -45 b 266 -78 333 -56 287 -78 b 258 -75 262 -78 259 -76 b 253 19 255 -71 253 -27 b 258 130 253 69 255 122 b 333 163 264 141 315 163 b 337 161 334 163 337 161 b 341 78 340 157 341 120 b 337 -45 341 24 340 -37 z m 118 -127 b 114 -48 114 -121 114 -86 b 118 78 114 6 115 68 b 200 114 122 91 180 114 b 207 111 204 114 206 112 b 212 22 210 107 212 66 b 207 -94 212 -29 210 -85 b 127 -130 203 -108 148 -130 b 118 -127 122 -130 120 -128 z',\n },\n accidentalBuyukMucennebFlat: {\n x_min: 1,\n x_max: 287,\n y_min: -174,\n y_max: 438,\n ha: 612,\n o: 'm 379 452 b 370 464 379 458 377 464 b 164 389 366 464 170 392 b 156 396 163 389 156 393 b 157 436 157 409 157 428 b 167 452 157 445 161 449 b 366 526 173 455 366 526 b 379 540 374 528 379 534 l 379 611 b 370 622 379 616 377 622 b 170 550 366 622 174 552 b 160 557 163 550 160 554 b 161 608 160 585 161 602 b 134 631 161 624 148 631 b 89 590 114 631 91 616 l 89 528 b 81 517 89 526 88 518 b 16 491 76 514 16 491 b 1 480 6 490 1 485 l 1 406 b 13 395 1 400 4 395 l 14 396 b 79 419 16 396 72 415 b 89 412 86 419 89 415 b 91 376 89 399 89 386 b 82 359 91 364 89 361 b 16 331 76 356 16 331 b 1 321 6 331 1 328 l 1 248 b 13 236 1 242 4 236 b 79 262 16 236 71 258 b 92 251 89 262 92 256 b 107 -242 95 23 101 -236 b 120 -251 111 -249 115 -251 b 128 -248 124 -251 128 -248 b 240 -160 171 -225 207 -184 b 413 84 367 -71 413 16 b 284 220 413 166 350 216 b 207 196 259 220 229 209 b 170 176 196 190 184 176 l 168 177 b 151 203 157 181 151 192 b 153 269 151 210 151 236 b 163 292 153 275 153 289 b 366 367 173 297 366 367 b 379 383 374 370 379 376 z m 186 -132 b 173 -137 180 -135 176 -137 b 157 -114 161 -137 157 -122 b 153 35 157 -114 153 -22 b 154 73 153 53 153 68 b 219 135 160 92 197 124 b 255 144 232 141 243 144 b 292 130 269 144 282 140 b 314 62 305 114 314 91 b 186 -132 314 -17 251 -94 z',\n },\n accidentalBakiyeFlat: {\n x_min: -1,\n x_max: 286,\n y_min: -175,\n y_max: 439,\n ha: 614,\n o: 'm 377 454 b 369 467 377 458 376 467 b 363 465 367 467 364 467 b 161 390 363 465 167 393 b 153 399 154 390 153 395 b 157 608 154 494 157 593 b 130 632 157 624 144 632 b 86 592 111 632 88 618 b 88 377 86 592 86 501 b 76 356 88 373 88 360 l 12 331 b -1 320 3 330 -1 327 l -1 248 b 9 236 -1 242 1 236 b 81 264 12 236 78 261 b 89 258 86 264 89 261 b 104 -245 92 30 96 -236 b 115 -252 108 -251 112 -252 b 124 -249 120 -252 124 -249 b 239 -161 167 -226 203 -186 b 412 84 367 -72 412 17 b 282 220 412 166 348 216 b 255 216 274 220 264 219 b 203 196 238 212 222 206 b 171 177 193 189 177 177 b 163 179 168 177 166 177 b 147 202 153 181 147 192 b 147 216 147 204 147 209 l 150 262 b 150 276 150 269 150 275 b 158 291 150 287 154 289 b 363 370 163 292 363 370 b 377 384 373 373 377 379 z m 181 -134 b 167 -138 176 -137 171 -138 b 153 -117 156 -138 153 -125 b 148 27 153 -117 148 -30 b 151 73 148 50 150 68 b 255 144 161 105 219 144 b 312 62 298 144 312 99 b 181 -134 312 -19 249 -96 z',\n },\n accidentalKomaSharp: {\n x_min: 0,\n x_max: 229,\n y_min: -337,\n y_max: 322,\n ha: 659,\n o: 'm 312 151 b 330 176 323 156 330 166 l 330 278 b 320 289 330 285 327 289 b 312 288 318 289 315 289 b 200 246 312 288 203 248 b 181 275 187 246 181 264 l 181 448 b 163 464 181 456 173 464 b 138 441 140 464 138 452 l 138 253 b 122 215 137 240 132 225 b 17 177 92 203 45 177 b 0 153 7 173 0 163 l 0 50 b 10 39 0 43 4 39 b 17 40 13 39 14 39 l 128 81 b 138 52 138 81 138 63 l 138 -91 b 124 -124 138 -107 132 -120 b 17 -167 115 -127 17 -167 b 0 -192 7 -171 0 -181 l 0 -294 b 10 -305 0 -301 4 -305 b 17 -304 13 -305 14 -305 b 128 -261 17 -304 117 -264 l 130 -259 b 138 -276 137 -259 138 -268 l 138 -469 b 157 -485 138 -478 147 -485 b 181 -462 179 -485 181 -475 l 181 -262 b 183 -252 181 -258 181 -255 b 197 -232 186 -243 190 -235 b 312 -187 207 -228 312 -187 b 330 -163 323 -183 330 -173 l 330 -60 b 320 -49 330 -53 327 -49 b 312 -50 318 -49 315 -49 l 200 -94 b 193 -95 197 -95 194 -95 b 181 -68 183 -95 181 -85 l 181 66 b 200 108 181 92 189 104 z',\n },\n accidentalKucukMucennebSharp: {\n x_min: -1,\n x_max: 339,\n y_min: -338,\n y_max: 321,\n ha: 659,\n o: 'm 264 92 b 271 102 264 98 265 99 l 395 150 b 412 174 405 154 412 164 l 412 276 b 402 288 412 284 409 288 b 395 287 400 288 397 288 b 282 245 395 287 285 246 b 264 274 269 245 264 262 l 264 446 b 245 462 264 455 255 462 b 220 439 222 462 220 451 l 220 252 b 204 213 219 239 215 223 b 99 176 174 202 127 176 b 82 151 89 171 82 161 l 82 49 b 92 37 82 42 86 37 b 99 39 95 37 96 37 l 210 79 b 216 81 212 81 215 81 b 220 78 219 81 220 79 l 220 56 b 216 46 220 52 220 48 b 16 -29 210 45 16 -29 b -1 -45 4 -32 -1 -36 l -1 -138 b 12 -154 -1 -145 3 -154 l 215 -79 b 220 -84 219 -79 220 -81 l 220 -105 b 210 -122 220 -115 219 -120 b 99 -168 202 -127 99 -168 b 82 -193 89 -173 82 -183 l 82 -295 b 92 -307 82 -302 86 -307 b 99 -305 95 -307 96 -307 b 210 -262 99 -305 199 -265 l 212 -261 b 220 -278 219 -261 220 -269 l 220 -471 b 239 -487 220 -480 229 -487 b 264 -464 261 -487 264 -477 l 264 -264 b 265 -253 264 -259 264 -256 b 279 -233 268 -245 272 -236 b 395 -189 289 -229 395 -189 b 412 -164 405 -184 412 -174 l 412 -62 b 402 -50 412 -55 409 -50 b 395 -52 400 -50 397 -50 l 278 -96 b 264 -86 268 -96 264 -94 l 264 -68 b 269 -59 264 -62 265 -60 b 471 17 274 -58 471 17 b 488 36 484 22 488 27 l 488 127 b 475 144 488 134 487 144 l 472 141 b 471 141 472 141 471 141 l 471 143 b 272 68 471 143 282 71 l 269 66 b 264 71 264 66 264 69 z',\n },\n accidentalKoron: {\n x_min: 0,\n x_max: 300,\n y_min: -472,\n y_max: 157,\n ha: 629,\n o: 'm 432 -4 b 415 10 432 1 418 9 l 4 226 b 0 223 1 226 0 225 l 0 -672 b 7 -680 0 -677 3 -680 l 45 -680 b 52 -672 49 -680 52 -677 l 52 -193 l 415 -22 b 432 -4 418 -20 432 -13 z m 52 -137 l 52 144 l 327 -7 z',\n },\n accidentalSori: {\n x_min: 0,\n x_max: 421,\n y_min: -318,\n y_max: 328,\n ha: 646,\n o: 'm 606 10 b 589 23 606 16 592 22 l 382 109 l 382 465 b 374 472 382 469 379 472 l 337 472 b 330 465 333 472 330 469 l 330 132 l 183 194 l 183 425 b 176 432 183 429 180 432 l 138 432 b 131 425 134 432 131 429 l 131 216 l 3 269 b 0 265 0 269 0 266 l 0 223 b 3 213 0 216 0 215 l 131 160 l 131 -150 l 3 -203 b 0 -212 0 -204 0 -206 l 0 -255 b 3 -259 0 -258 1 -259 l 131 -204 l 131 -451 b 138 -458 131 -455 134 -458 l 176 -458 b 183 -451 180 -458 183 -455 l 183 -183 l 330 -120 l 330 -410 b 337 -418 330 -415 333 -418 l 374 -418 b 382 -410 379 -418 382 -415 l 382 -98 l 589 -9 b 606 10 592 -9 606 0 z m 183 -128 l 183 138 l 330 76 l 330 -66 z m 382 -45 l 382 55 l 501 6 z',\n },\n articAccentAbove: {\n x_min: 0,\n x_max: 339,\n y_min: 1,\n y_max: 245,\n ha: 244,\n o: 'm 469 151 b 488 177 488 156 488 166 b 469 203 488 189 488 197 l 37 350 b 24 353 32 351 26 353 b 3 333 12 353 7 344 b 0 318 1 327 0 323 b 20 298 0 311 4 304 b 346 187 20 298 331 193 b 356 177 353 186 356 181 b 344 167 356 173 353 170 b 20 58 328 163 20 58 b 0 36 4 50 0 43 b 3 23 0 32 1 27 b 23 1 7 13 13 1 b 29 3 24 1 27 1 z',\n },\n articAccentBelow: {\n x_min: 0,\n x_max: 339,\n y_min: -244,\n y_max: 0,\n ha: 244,\n o: 'm 469 -202 b 488 -176 488 -197 488 -187 b 469 -150 488 -164 488 -156 l 37 -3 b 24 0 32 -1 26 0 b 3 -20 12 0 7 -9 b 0 -35 1 -26 0 -30 b 20 -55 0 -42 4 -49 b 346 -166 20 -55 331 -160 b 356 -176 353 -167 356 -171 b 344 -186 356 -180 353 -183 b 20 -295 328 -190 20 -295 b 0 -317 4 -302 0 -310 b 3 -330 0 -321 1 -325 b 23 -351 7 -340 13 -351 b 29 -350 24 -351 27 -351 z',\n },\n articTenutoAbove: {\n x_min: -1,\n x_max: 338,\n y_min: 0,\n y_max: 48,\n ha: 48,\n o: 'm 452 0 b 487 35 485 0 487 16 b 452 69 487 53 487 69 l 33 69 b -1 35 -1 69 -1 53 b 33 0 -1 16 -1 0 z',\n },\n articTenutoBelow: {\n x_min: -1,\n x_max: 338,\n y_min: -48,\n y_max: 0,\n ha: 48,\n o: 'm 452 -69 b 487 -35 485 -69 487 -53 b 452 0 487 -16 487 0 l 33 0 b -1 -35 -1 0 -1 -16 b 33 -69 -1 -53 -1 -69 z',\n },\n articStaccatoAbove: {\n x_min: 0,\n x_max: 84,\n y_min: 0,\n y_max: 84,\n ha: 84,\n o: 'm 121 60 b 60 121 121 94 94 121 b 0 60 27 121 0 94 b 60 0 0 27 27 0 b 121 60 94 0 121 27 z',\n },\n articStaccatoBelow: {\n x_min: 0,\n x_max: 84,\n y_min: -84,\n y_max: 0,\n ha: 84,\n o: 'm 121 -60 b 60 0 121 -27 94 0 b 0 -60 27 0 0 -27 b 60 -121 0 -94 27 -121 b 121 -60 94 -121 121 -94 z',\n },\n articStaccatissimoAbove: {\n x_min: 1,\n x_max: 100,\n y_min: -2,\n y_max: 293,\n ha: 295,\n o: 'm 72 422 b 1 390 35 422 3 409 b 72 -3 1 369 39 -3 b 144 389 108 -3 144 356 b 72 422 144 410 111 422 z',\n },\n articStaccatissimoBelow: {\n x_min: 1,\n x_max: 100,\n y_min: -295,\n y_max: 0,\n ha: 295,\n o: 'm 72 -425 b 144 -392 111 -425 144 -413 b 72 0 144 -359 108 0 b 1 -393 39 0 1 -372 b 72 -425 3 -412 35 -425 z',\n },\n articMarcatoAbove: {\n x_min: -1,\n x_max: 235,\n y_min: -1,\n y_max: 253,\n ha: 254,\n o: 'm 181 356 b 167 364 177 361 173 364 b 153 356 157 364 153 356 l 0 23 b -1 16 -1 20 -1 19 b 9 0 -1 9 1 1 b 16 -1 10 -1 14 -1 b 32 9 22 -1 29 1 b 112 186 32 9 109 180 b 118 190 114 189 115 190 b 127 186 121 190 124 189 b 209 9 128 180 209 9 b 225 0 213 3 219 0 l 323 0 b 338 16 333 1 338 7 b 337 23 338 19 338 22 z',\n },\n articMarcatoBelow: {\n x_min: -1,\n x_max: 235,\n y_min: -254,\n y_max: 0,\n ha: 254,\n o: 'm 156 -357 b 170 -366 160 -363 164 -366 b 184 -357 180 -366 184 -357 l 337 -24 b 338 -17 338 -22 338 -20 b 328 -1 338 -10 336 -3 b 321 0 327 0 323 0 b 305 -10 315 0 308 -3 b 225 -187 305 -10 228 -181 b 219 -192 223 -190 222 -192 b 210 -187 216 -192 213 -190 b 128 -10 209 -181 128 -10 b 112 -1 124 -4 118 -1 l 14 -1 b -1 -17 4 -3 -1 -9 b 0 -24 -1 -20 -1 -23 z',\n },\n fermataAbove: {\n x_min: 3,\n x_max: 605,\n y_min: -3,\n y_max: 329,\n ha: 332,\n o: 'm 435 318 b 818 36 742 318 804 91 b 821 26 819 32 819 27 b 851 -4 831 6 837 -4 b 871 16 864 -4 871 1 b 870 30 871 20 871 24 b 438 474 780 471 480 474 b 6 30 392 474 94 471 b 4 14 4 24 4 19 b 23 -4 4 0 12 -4 b 52 26 36 -4 43 6 b 56 39 53 27 55 33 b 435 318 73 98 138 318 z m 516 75 b 436 153 516 117 480 153 b 359 75 395 153 359 117 b 436 -4 359 32 395 -4 b 516 75 480 -4 516 32 z',\n },\n fermataBelow: {\n x_min: 3,\n x_max: 605,\n y_min: -332,\n y_max: 0,\n ha: 332,\n o: 'm 435 -323 b 56 -43 138 -323 73 -102 b 52 -30 55 -37 53 -32 b 23 0 43 -10 36 0 b 4 -19 12 0 4 -4 b 6 -35 4 -23 4 -29 b 438 -478 94 -475 392 -478 b 870 -35 480 -478 780 -475 b 871 -20 871 -29 871 -24 b 851 0 871 -6 864 0 b 821 -30 837 0 831 -10 b 818 -40 819 -32 819 -36 b 435 -323 804 -95 742 -323 z m 516 -79 b 436 0 516 -36 480 0 b 359 -79 395 0 359 -36 b 436 -157 359 -121 395 -157 b 516 -79 480 -157 516 -121 z',\n },\n fermataLongAbove: {\n x_min: 0,\n x_max: 603,\n y_min: -1,\n y_max: 333,\n ha: 334,\n o: 'm 72 480 b 0 441 32 480 0 462 l 0 19 b 35 0 0 9 16 0 b 71 19 55 0 71 9 l 71 289 b 433 315 71 307 252 315 b 798 289 615 315 798 307 l 798 19 b 832 0 798 9 814 0 b 868 19 852 0 868 9 l 868 441 b 796 480 868 462 837 480 z m 513 78 b 433 156 513 121 478 156 b 356 78 390 156 356 121 b 433 -1 356 35 390 -1 b 513 78 478 -1 513 35 z',\n },\n fermataLongBelow: {\n x_min: 0,\n x_max: 603,\n y_min: -333,\n y_max: 1,\n ha: 334,\n o: 'm 513 -78 b 433 1 513 -35 478 1 b 356 -78 390 1 356 -35 b 433 -156 356 -121 390 -156 b 513 -78 478 -156 513 -121 z m 796 -480 b 868 -441 837 -480 868 -462 l 868 -19 b 832 0 868 -9 852 0 b 798 -19 814 0 798 -9 l 798 -289 b 433 -315 798 -307 615 -315 b 71 -289 252 -315 71 -307 l 71 -19 b 35 0 71 -9 55 0 b 0 -19 16 0 0 -9 l 0 -441 b 72 -480 0 -462 32 -480 z',\n },\n fermataVeryLongAbove: {\n x_min: 0,\n x_max: 715,\n y_min: 0,\n y_max: 408,\n ha: 408,\n o: 'm 76 588 b 0 546 35 588 0 569 l 0 22 b 37 1 0 10 17 1 b 75 22 59 1 75 10 l 75 431 b 514 458 75 449 294 458 b 955 431 734 458 955 449 l 955 22 b 991 1 955 10 971 1 b 1030 22 1012 1 1030 10 l 1030 546 b 953 588 1030 569 995 588 z m 215 389 b 138 347 171 389 138 370 l 138 22 b 174 1 138 10 154 1 b 213 22 196 1 213 10 l 213 217 b 514 245 213 235 363 245 b 816 217 665 245 816 235 l 816 22 b 854 1 816 10 834 1 b 891 22 876 1 891 10 l 891 347 b 815 389 891 370 858 389 z m 606 84 b 521 167 606 130 569 167 b 439 84 475 167 439 130 b 521 0 439 39 475 0 b 606 84 569 0 606 39 z',\n },\n fermataVeryLongBelow: {\n x_min: 0,\n x_max: 715,\n y_min: -408,\n y_max: 0,\n ha: 408,\n o: 'm 606 -84 b 521 0 606 -39 569 0 b 439 -84 475 0 439 -39 b 521 -167 439 -130 475 -167 b 606 -84 569 -167 606 -130 z m 815 -389 b 891 -347 858 -389 891 -370 l 891 -22 b 854 -1 891 -10 876 -1 b 816 -22 834 -1 816 -10 l 816 -217 b 514 -245 816 -235 665 -245 b 213 -217 363 -245 213 -235 l 213 -22 b 174 -1 213 -10 196 -1 b 138 -22 154 -1 138 -10 l 138 -347 b 215 -389 138 -370 171 -389 z m 953 -588 b 1030 -546 995 -588 1030 -569 l 1030 -22 b 991 -1 1030 -10 1012 -1 b 955 -22 971 -1 955 -10 l 955 -431 b 514 -458 955 -449 734 -458 b 75 -431 294 -458 75 -449 l 75 -22 b 37 -1 75 -10 59 -1 b 0 -22 17 -1 0 -10 l 0 -546 b 76 -588 0 -569 35 -588 z',\n },\n fermataShortAbove: {\n x_min: 0,\n x_max: 604,\n y_min: 0,\n y_max: 341,\n ha: 341,\n o: 'm 78 0 b 88 6 81 0 82 3 b 435 328 134 45 412 328 b 783 3 458 328 742 39 b 793 0 786 1 793 0 l 865 0 b 870 4 865 0 870 1 b 867 10 870 6 868 9 b 435 491 805 69 474 491 b 3 10 397 491 69 75 b 0 4 1 9 0 6 b 4 0 0 1 4 0 z m 513 94 b 433 171 513 135 477 171 b 354 94 390 171 354 135 b 433 13 354 49 390 13 b 513 94 477 13 513 49 z',\n },\n fermataShortBelow: {\n x_min: 0,\n x_max: 604,\n y_min: -341,\n y_max: 0,\n ha: 341,\n o: 'm 4 0 b 0 -4 4 0 0 -1 b 3 -10 0 -6 1 -9 b 435 -491 69 -75 397 -491 b 867 -10 474 -491 805 -69 b 870 -4 868 -9 870 -6 b 865 0 870 -1 865 0 l 793 0 b 783 -3 793 0 786 -1 b 435 -328 742 -39 458 -328 b 88 -6 412 -328 134 -45 b 78 0 82 -3 81 0 z m 513 -94 b 433 -13 513 -49 477 -13 b 354 -94 390 -13 354 -49 b 433 -171 354 -135 390 -171 b 513 -94 477 -171 513 -135 z',\n },\n breathMarkComma: {\n x_min: 1,\n x_max: 152,\n y_min: 2,\n y_max: 251,\n ha: 249,\n o: 'm 104 361 b 1 271 42 361 1 321 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 17 32 29 26 26 l 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 z',\n },\n breathMarkUpbow: {\n x_min: 1,\n x_max: 249,\n y_min: 1,\n y_max: 495,\n ha: 494,\n o: 'm 181 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 z',\n },\n caesura: {\n x_min: 0,\n x_max: 384,\n y_min: -1,\n y_max: 532,\n ha: 533,\n o: 'm 40 -1 b 78 26 58 -1 72 9 l 321 713 b 323 726 323 717 323 721 b 282 766 323 747 304 766 b 245 739 265 766 251 756 l 3 52 b 0 37 1 48 0 42 b 27 1 0 22 10 7 b 40 -1 32 -1 36 -1 z m 308 26 l 552 713 b 553 726 553 717 553 721 b 513 766 553 747 534 766 b 475 739 495 766 481 756 l 232 52 b 230 39 230 48 230 43 b 258 1 230 23 240 7 b 271 -1 262 -1 266 -1 b 308 26 287 -1 302 9 z',\n },\n caesuraCurved: {\n x_min: 0,\n x_max: 373,\n y_min: 0,\n y_max: 530,\n ha: 530,\n o: 'm 491 763 b 445 719 468 763 446 744 b 252 98 432 507 340 295 l 226 39 b 223 27 225 35 223 32 b 252 0 223 13 233 0 b 276 16 262 0 272 6 b 537 716 386 230 537 478 b 491 763 537 742 518 763 z m 29 0 b 53 16 39 0 48 6 l 82 69 b 314 716 187 264 314 498 b 268 763 314 742 295 763 b 222 719 245 763 223 744 b 29 98 209 507 117 295 l 3 39 b 0 29 1 36 0 33 b 29 0 0 14 12 0 z',\n },\n restMaxima: {\n x_min: 0,\n x_max: 381,\n y_min: -249,\n y_max: 250,\n ha: 499,\n o: 'm 180 -330 l 180 331 b 156 360 180 356 170 360 l 23 360 b 0 331 10 360 0 356 l 0 -330 b 23 -359 0 -354 10 -359 l 156 -359 b 180 -330 170 -359 180 -354 z m 549 -330 l 549 331 b 524 360 549 356 539 360 l 392 360 b 369 331 379 360 369 356 l 369 -330 b 392 -359 369 -354 379 -359 l 524 -359 b 549 -330 539 -359 549 -354 z',\n },\n restDoubleWhole: {\n x_min: 0,\n x_max: 125,\n y_min: 0,\n y_max: 250,\n ha: 250,\n o: 'm 180 22 l 180 338 b 156 360 180 350 170 360 l 23 360 b 0 338 10 360 0 350 l 0 22 b 23 0 0 10 10 0 l 156 0 b 180 22 170 0 180 10 z',\n },\n restWhole: {\n x_min: 0,\n x_max: 282,\n y_min: -135,\n y_max: 9,\n ha: 144,\n o: 'm 406 -157 l 406 -24 b 369 13 406 -3 389 13 l 37 13 b 0 -24 16 13 0 -3 l 0 -157 b 37 -194 0 -177 16 -194 l 369 -194 b 406 -157 389 -194 406 -177 z',\n },\n restWholeLegerLine: {\n x_min: -117,\n x_max: 399,\n y_min: -135,\n y_max: 20,\n ha: 155,\n o: 'm -143 29 b -168 3 -157 29 -168 17 b -143 -23 -168 -12 -157 -23 l 0 -23 l 0 -157 b 37 -194 0 -177 16 -194 l 369 -194 b 406 -157 389 -194 406 -177 l 406 -24 b 549 -23 406 -23 406 -23 b 575 3 563 -23 575 -12 b 549 29 575 17 563 29 z',\n },\n restHalf: {\n x_min: 0,\n x_max: 282,\n y_min: -2,\n y_max: 142,\n ha: 144,\n o: 'm 406 35 l 406 167 b 369 204 406 189 389 204 l 37 204 b 0 167 16 204 0 189 l 0 35 b 37 -3 0 14 16 -3 l 369 -3 b 406 35 389 -3 406 14 z',\n },\n restHalfLegerLine: {\n x_min: -117,\n x_max: 399,\n y_min: -13,\n y_max: 142,\n ha: 155,\n o: 'm 549 -19 b 575 7 563 -19 575 -7 b 549 33 575 22 563 33 b 406 35 406 33 406 33 l 406 167 b 369 204 406 187 389 204 l 37 204 b 0 167 16 204 0 187 l 0 33 l -143 33 b -168 7 -157 33 -168 22 b -143 -19 -168 -7 -157 -19 z',\n },\n restQuarter: {\n x_min: 1,\n x_max: 270,\n y_min: -375,\n y_max: 373,\n ha: 748,\n o: 'm 112 -55 b 174 -141 135 -84 156 -111 b 183 -161 177 -147 183 -158 b 181 -167 183 -163 183 -166 b 166 -174 179 -173 173 -174 b 143 -170 160 -174 148 -171 b 137 -170 141 -170 138 -170 l 125 -166 b 1 -304 50 -166 1 -233 b 168 -527 1 -376 63 -446 b 206 -540 180 -536 194 -540 b 228 -531 216 -540 226 -537 b 230 -521 229 -527 230 -524 b 207 -487 230 -508 219 -497 b 170 -435 189 -487 173 -448 b 164 -397 166 -423 164 -410 b 255 -292 164 -338 194 -292 b 369 -317 297 -292 344 -308 l 370 -318 b 382 -320 376 -320 379 -320 b 389 -314 386 -320 389 -318 b 336 -232 389 -297 351 -249 b 236 -32 281 -166 236 -112 b 236 -27 236 -30 236 -29 l 238 -17 b 238 -13 238 -16 238 -14 b 333 199 243 71 295 140 b 338 220 337 206 338 213 b 333 248 338 235 333 248 b 95 526 333 248 120 501 b 69 537 88 533 78 537 b 40 507 55 537 40 527 b 46 484 40 500 42 492 b 134 291 52 468 134 395 b 48 108 134 238 112 176 b 27 66 33 94 27 78 b 42 32 27 46 42 32 z',\n },\n rest8th: {\n x_min: 0,\n x_max: 247,\n y_min: -251,\n y_max: 174,\n ha: 425,\n o: 'm 193 154 b 96 251 193 207 150 251 b 0 154 43 251 0 207 b 39 81 0 124 17 98 b 117 56 62 65 89 56 b 173 66 137 56 157 60 b 225 88 193 72 206 78 b 232 89 228 89 230 89 b 239 76 238 89 239 84 b 238 60 239 72 239 66 b 104 -343 233 39 130 -248 b 145 -361 104 -360 137 -361 b 196 -347 161 -361 181 -359 b 341 161 200 -344 341 161 b 356 217 347 187 354 210 b 338 240 356 232 341 239 b 323 235 336 240 331 240 b 193 140 312 226 240 140 z',\n },\n rest16th: {\n x_min: 0,\n x_max: 320,\n y_min: -500,\n y_max: 179,\n ha: 679,\n o: 'm 300 160 b 202 258 300 215 256 258 b 104 160 148 258 104 215 b 219 62 104 101 164 62 b 331 94 258 62 298 75 b 341 96 336 95 338 96 b 348 86 346 96 348 94 b 265 -173 348 63 275 -151 b 194 -217 253 -200 215 -217 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 151 -105 b 0 -203 43 -105 0 -148 b 115 -301 0 -262 60 -301 b 223 -271 153 -301 190 -288 b 229 -279 226 -271 229 -274 l 228 -281 b 228 -282 228 -282 228 -282 l 91 -690 b 91 -691 91 -690 91 -691 l 89 -693 b 134 -720 89 -706 102 -720 b 189 -687 176 -720 183 -703 l 356 -138 b 420 81 393 -16 420 81 b 459 226 420 81 456 207 b 461 232 459 229 461 230 b 446 248 461 240 449 246 b 431 242 439 248 435 245 b 300 145 420 233 348 147 z',\n },\n rest32nd: {\n x_min: 0,\n x_max: 363,\n y_min: -500,\n y_max: 426,\n ha: 926,\n o: 'm 508 603 b 492 598 501 603 497 600 b 361 503 482 590 410 503 l 361 516 b 264 613 361 570 318 613 b 166 516 210 613 166 570 b 206 444 166 487 183 461 b 246 423 217 433 232 428 b 284 418 258 420 269 418 b 393 449 321 418 360 432 b 399 451 395 451 397 451 b 415 426 409 451 415 436 l 413 423 b 413 422 413 423 413 422 l 357 192 b 279 140 350 168 302 140 b 281 153 281 144 281 148 b 183 251 281 207 236 251 b 85 153 128 251 85 207 b 125 81 85 124 102 98 b 164 60 137 71 150 65 b 203 55 176 58 189 55 b 311 86 240 55 278 69 b 315 88 312 88 314 88 b 325 69 323 88 325 76 l 268 -167 b 194 -217 261 -197 216 -216 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 153 -105 b 0 -203 45 -105 0 -148 b 115 -301 0 -262 60 -301 b 228 -269 154 -301 194 -288 b 232 -268 229 -268 230 -268 b 240 -276 236 -268 240 -272 b 138 -688 240 -282 141 -678 b 137 -697 137 -691 137 -694 b 176 -720 137 -708 145 -720 b 232 -690 222 -720 226 -706 b 484 436 236 -672 484 436 b 521 582 484 436 518 564 b 523 588 521 585 523 586 b 508 603 523 600 511 603 z',\n },\n rest64th: {\n x_min: 0,\n x_max: 423,\n y_min: -753,\n y_max: 430,\n ha: 1183,\n o: 'm 596 609 b 580 603 589 609 585 606 b 448 507 569 595 497 507 b 449 521 449 511 449 516 b 351 619 449 575 405 619 b 253 521 297 619 253 575 b 372 422 253 461 317 422 b 481 454 410 422 446 438 b 491 456 484 455 488 456 b 504 441 498 456 504 451 b 501 426 504 436 503 432 b 445 202 500 422 451 217 b 359 144 435 174 383 144 l 359 158 b 261 256 359 212 315 256 b 163 158 207 256 163 212 b 243 65 163 112 202 78 b 279 60 255 62 266 60 b 397 91 320 60 360 73 b 403 92 400 92 402 92 b 412 79 409 92 412 86 b 410 72 412 76 412 75 b 351 -161 408 59 356 -150 b 281 -212 340 -199 301 -212 l 281 -197 b 183 -99 281 -144 238 -99 b 85 -197 130 -99 85 -144 b 125 -271 85 -228 102 -253 b 166 -291 138 -279 151 -287 b 204 -297 177 -294 192 -297 b 262 -287 225 -297 245 -292 b 305 -265 282 -279 287 -274 b 310 -264 307 -264 308 -264 b 318 -284 317 -264 318 -275 b 317 -295 318 -288 317 -294 b 259 -524 315 -302 265 -508 b 194 -567 251 -554 213 -567 b 196 -554 196 -563 196 -559 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 b 40 -626 0 -583 17 -609 b 118 -652 60 -644 92 -652 b 210 -629 145 -652 186 -642 b 216 -628 213 -628 215 -628 b 228 -647 226 -628 228 -639 l 226 -651 b 226 -652 226 -651 226 -652 l 122 -1054 b 121 -1064 121 -1058 121 -1061 b 167 -1084 121 -1077 134 -1084 b 215 -1060 202 -1084 209 -1076 b 402 -278 217 -1047 229 -1021 b 436 -135 403 -278 431 -161 l 570 441 b 609 588 570 441 605 569 b 596 609 609 603 602 608 z',\n },\n rest128th: {\n x_min: 0,\n x_max: 485,\n y_min: -750,\n y_max: 689,\n ha: 1439,\n o: 'm 537 894 b 439 992 537 949 494 992 b 341 894 386 992 341 949 b 382 822 341 865 359 840 b 459 796 402 805 433 796 b 518 806 480 796 501 801 l 520 808 b 569 828 539 814 552 819 b 580 831 572 829 577 831 b 598 812 589 831 598 825 b 596 801 598 809 598 805 b 540 575 590 773 546 595 b 448 510 534 553 475 510 l 448 524 b 350 622 448 577 405 622 b 252 524 297 622 252 577 b 292 451 252 494 269 468 b 369 426 318 433 337 426 b 429 435 389 426 412 429 b 494 464 449 442 475 455 b 498 465 495 465 497 465 b 505 446 504 465 505 456 b 503 426 505 439 504 432 l 446 202 b 366 144 439 173 389 144 l 366 158 b 268 256 366 212 323 256 b 170 158 215 256 170 212 b 289 59 170 98 235 59 b 347 69 310 59 330 63 b 397 91 367 76 379 82 b 406 94 400 92 403 94 b 415 79 412 94 415 88 b 412 63 415 75 413 69 b 357 -157 408 42 364 -134 b 281 -212 346 -196 302 -212 b 282 -197 281 -207 282 -203 b 184 -99 282 -144 238 -99 b 86 -197 130 -99 86 -144 b 204 -297 86 -258 150 -297 b 262 -287 225 -297 245 -292 b 312 -265 282 -279 294 -274 b 318 -264 314 -264 317 -264 b 327 -275 324 -264 327 -269 b 266 -517 324 -287 278 -490 b 200 -569 248 -566 220 -567 l 196 -554 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 b 118 -652 0 -615 63 -652 b 177 -642 138 -652 160 -648 l 179 -641 b 229 -621 197 -635 210 -629 l 230 -619 b 239 -626 236 -619 239 -622 b 238 -632 239 -628 239 -631 b 131 -1057 235 -642 134 -1050 b 173 -1080 131 -1071 140 -1080 b 230 -1057 219 -1080 225 -1074 l 658 815 b 697 960 658 815 694 942 b 698 966 697 963 698 965 b 684 982 698 975 687 981 b 668 976 677 982 672 979 b 537 880 658 969 586 881 z',\n },\n dynamicPiano: {\n x_min: -89,\n x_max: 366,\n y_min: -142,\n y_max: 274,\n ha: 416,\n o: 'm 395 395 b 292 357 350 395 318 380 b 262 328 272 340 268 328 b 246 363 255 328 259 338 b 177 393 236 380 215 393 b 1 251 92 393 46 333 b -9 223 -6 238 -9 230 b 7 207 -9 213 -1 207 b 30 229 17 207 23 216 b 127 338 72 301 101 338 b 143 321 138 338 143 331 b 134 285 143 310 138 295 l -43 -154 b -65 -168 -48 -166 -50 -168 l -109 -168 b -128 -187 -122 -168 -128 -174 b -111 -204 -128 -199 -122 -204 l 167 -204 b 186 -186 180 -204 186 -199 b 168 -168 186 -174 180 -168 l 111 -168 b 98 -164 102 -168 98 -168 b 101 -154 98 -163 99 -158 l 166 7 b 179 24 168 14 171 24 b 213 -1 186 24 190 10 b 276 -14 233 -12 252 -14 b 527 266 415 -14 527 130 b 395 395 527 350 475 395 z m 356 341 b 389 288 380 341 389 320 b 243 35 389 217 312 35 b 207 81 219 35 207 50 b 235 180 207 111 219 140 l 264 251 b 356 341 284 300 321 341 z',\n },\n dynamicMezzo: {\n x_min: -20,\n x_max: 446,\n y_min: -10,\n y_max: 274,\n ha: 284,\n o: 'm 528 395 b 431 350 487 395 454 374 b 409 330 416 336 415 330 b 397 360 402 330 406 341 b 334 395 389 379 370 395 b 236 350 292 395 259 374 b 215 330 222 336 220 330 b 203 360 207 330 212 340 b 147 393 194 379 174 393 b -19 251 71 393 26 331 b -29 223 -26 238 -29 230 b -13 207 -29 213 -22 207 b 9 226 -3 207 1 215 b 107 338 52 300 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 287 323 225 292 255 323 b 308 302 304 323 308 314 b 294 249 308 285 302 269 b 203 24 294 248 292 248 b 199 9 200 17 199 13 b 215 0 199 3 203 0 l 285 0 b 308 17 298 0 302 3 l 402 251 b 481 323 419 292 449 323 b 503 302 498 323 503 314 b 413 43 503 252 413 104 b 478 -14 413 6 436 -14 b 629 102 533 -14 583 26 b 642 132 638 117 642 125 b 629 145 642 141 636 145 b 608 127 619 145 615 138 b 534 49 580 84 553 49 b 523 62 526 49 523 53 b 606 317 523 112 606 238 b 528 395 606 353 588 395 z',\n },\n dynamicForte: {\n x_min: -141,\n x_max: 364,\n y_min: -152,\n y_max: 444,\n ha: 596,\n o: 'm 23 380 b 0 357 7 380 0 373 b 22 336 0 343 7 336 l 105 336 b 117 330 114 336 117 336 b 114 315 117 327 115 323 l 23 0 b -101 -187 -17 -141 -43 -187 b -127 -174 -120 -187 -127 -181 b -92 -156 -127 -163 -114 -170 b -63 -102 -75 -144 -63 -125 b -128 -43 -63 -65 -89 -43 b -203 -122 -171 -43 -203 -78 b -95 -219 -203 -186 -156 -219 b 161 17 14 -219 82 -145 b 269 317 203 105 235 194 l 271 318 b 289 336 271 323 282 336 l 383 336 b 406 359 399 336 406 343 b 384 380 406 373 399 380 l 298 380 b 284 387 288 380 284 380 b 287 405 284 392 285 396 b 419 606 315 530 347 606 b 442 595 431 606 442 603 b 419 580 442 586 435 588 b 389 526 400 572 389 552 b 454 465 389 485 418 465 b 524 543 491 465 524 490 b 400 639 524 596 491 639 b 135 402 261 639 183 540 b 107 380 128 380 127 380 z',\n },\n dynamicRinforzando: {\n x_min: -20,\n x_max: 277,\n y_min: 0,\n y_max: 274,\n ha: 274,\n o: 'm 324 395 b 235 350 287 395 256 374 b 215 330 222 336 220 330 b 203 360 207 330 213 337 b 145 393 194 379 174 393 b -19 251 75 393 27 337 b -29 223 -26 238 -29 230 b -13 207 -29 213 -22 207 b 9 226 -3 207 3 215 b 107 338 52 301 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 304 351 226 298 272 351 b 318 343 312 351 318 348 b 287 285 318 330 287 325 b 338 239 287 256 308 239 b 399 318 373 239 399 268 b 324 395 399 360 377 395 z',\n },\n dynamicSforzando: {\n x_min: 0,\n x_max: 229,\n y_min: -10,\n y_max: 273,\n ha: 283,\n o: 'm 212 393 b 68 274 127 393 68 350 b 145 161 68 223 95 196 b 200 85 187 132 200 114 b 127 20 200 53 173 20 b 66 42 91 20 66 32 b 91 56 66 49 75 46 b 111 98 104 65 111 79 b 59 145 111 127 86 145 b 0 78 24 145 0 117 b 125 -14 0 30 49 -14 b 291 120 219 -14 291 36 b 220 232 291 160 276 190 b 151 314 168 271 151 287 b 213 361 151 337 168 361 b 258 346 238 361 258 356 b 240 333 258 340 251 340 b 226 298 232 325 226 314 b 276 252 226 269 248 252 b 330 307 311 252 330 279 b 212 393 330 360 285 393 z',\n },\n dynamicZ: {\n x_min: -30,\n x_max: 244,\n y_min: -10,\n y_max: 268,\n ha: 278,\n o: 'm 333 386 b 298 377 321 386 314 382 b 239 370 282 373 259 370 b 94 383 153 370 111 383 b 68 364 79 383 72 377 l 33 264 b 29 242 30 255 29 248 b 45 228 29 232 36 228 b 66 249 55 228 60 236 l 81 279 b 96 297 85 288 88 297 b 168 292 102 297 127 292 b 223 302 194 292 215 302 b 196 269 229 302 197 271 l -26 45 b -43 16 -37 33 -43 27 b -24 -1 -43 6 -36 -1 b 4 16 -12 -1 -3 10 b 39 30 16 24 27 30 b 179 -14 79 30 108 -14 b 297 102 259 -14 297 43 b 245 166 297 147 271 166 b 197 115 219 166 197 145 b 236 72 197 88 216 72 b 259 79 251 72 255 79 b 264 75 262 79 264 78 b 258 60 264 72 261 66 b 229 45 252 50 242 45 b 117 95 186 45 173 95 b 85 86 98 95 89 86 b 102 111 85 86 95 104 l 333 338 b 351 370 344 350 351 359 b 333 386 351 380 343 386 z',\n },\n ornamentTrill: {\n x_min: 0,\n x_max: 521,\n y_min: -10,\n y_max: 390,\n ha: 400,\n o: 'm 383 562 b 364 557 377 562 369 559 l 294 534 b 269 511 281 530 275 526 l 217 384 b 206 367 212 370 210 367 b 179 380 200 367 192 374 b 118 393 158 389 140 393 b 0 292 50 393 0 353 b 95 210 0 248 30 210 b 140 213 112 210 131 213 b 144 209 143 213 144 212 b 140 194 144 206 143 202 l 124 156 b 96 58 108 117 96 88 b 179 -14 96 17 124 -14 b 325 153 253 -14 325 46 b 307 251 325 187 320 219 b 302 265 304 258 302 261 b 334 294 302 274 311 281 l 343 298 b 455 348 393 328 428 348 b 474 327 468 348 474 344 b 465 285 474 312 469 295 l 360 24 b 356 9 357 17 356 13 b 372 0 356 3 360 0 l 442 0 b 465 17 455 0 459 3 l 559 251 b 655 351 577 298 624 351 b 670 343 664 351 670 348 b 638 285 670 330 638 325 b 690 239 638 256 660 239 b 750 318 724 239 750 268 b 675 395 750 360 729 395 b 586 350 638 395 608 374 b 566 330 573 336 572 330 b 553 361 559 330 564 340 b 490 393 543 380 521 393 b 347 348 432 393 377 364 b 312 333 328 338 320 333 b 308 337 310 333 308 334 b 315 359 308 343 312 351 l 387 537 b 392 553 390 544 392 549 b 383 562 392 559 389 562 z m 118 360 b 192 325 134 360 192 347 b 186 307 192 321 189 314 l 180 292 b 148 265 173 274 167 269 b 98 258 130 261 112 258 b 39 301 50 258 39 281 b 118 360 39 327 60 360 z m 272 240 b 292 151 285 240 292 164 b 212 30 292 88 253 30 b 196 48 200 30 196 37 b 207 92 196 59 202 78 b 264 230 207 94 209 94 b 272 240 266 238 268 240 z',\n },\n ornamentTurn: {\n x_min: 0,\n x_max: 460,\n y_min: 0,\n y_max: 218,\n ha: 218,\n o: 'm 534 314 b 454 251 490 314 454 294 b 505 199 454 219 475 199 b 579 232 547 199 549 232 b 626 164 603 232 626 202 b 533 72 626 102 583 72 b 377 180 487 72 439 111 b 150 312 307 258 243 312 b 0 148 55 312 0 240 b 128 0 0 45 66 0 b 209 63 173 0 209 20 b 157 115 209 95 187 115 b 84 82 115 115 114 82 b 36 150 59 82 36 112 b 130 242 36 212 79 242 b 285 134 176 242 223 203 b 513 1 356 56 419 1 b 662 166 608 1 662 73 b 534 314 662 269 596 314 z',\n },\n ornamentTurnSlash: {\n x_min: 0,\n x_max: 460,\n y_min: -90,\n y_max: 306,\n ha: 396,\n o: 'm 333 441 b 310 418 315 441 310 433 l 310 274 b 302 252 310 258 308 252 b 261 278 294 252 287 262 b 150 311 228 298 192 311 b 0 147 55 311 0 239 b 128 -1 0 43 66 -1 b 209 62 173 -1 209 19 b 157 114 209 94 187 114 b 84 81 115 114 114 81 b 36 148 59 81 36 111 b 130 240 36 210 79 240 b 285 128 176 240 222 197 b 307 79 304 108 307 105 l 307 -107 b 330 -130 307 -122 312 -130 b 353 -107 347 -130 353 -122 l 353 37 b 360 59 353 53 353 59 b 402 33 369 59 376 49 b 513 0 435 13 471 0 b 662 164 608 0 662 72 b 534 312 662 268 596 312 b 454 249 490 312 454 292 b 505 197 454 217 475 197 b 579 230 547 197 549 230 b 626 163 603 230 626 200 b 533 71 626 101 583 71 b 377 183 487 71 441 114 b 356 232 359 203 356 206 l 356 418 b 333 441 356 433 350 441 z',\n },\n ornamentMordent: {\n x_min: 1,\n x_max: 729,\n y_min: -73,\n y_max: 319,\n ha: 392,\n o: 'm 546 265 l 546 459 l 501 459 l 501 216 l 459 167 b 439 167 454 160 445 160 b 302 327 387 228 310 317 b 258 353 291 338 282 351 b 226 340 245 353 238 348 l 20 107 b 1 73 12 98 1 84 b 30 59 1 65 9 59 b 88 94 53 59 73 79 b 144 143 107 109 124 127 b 176 161 158 154 168 161 b 197 144 183 161 189 156 l 323 10 b 351 0 328 3 340 0 b 377 9 361 0 372 3 b 498 114 392 17 475 94 l 498 -105 l 544 -105 l 544 153 b 562 160 550 157 556 160 b 585 144 569 160 576 156 b 710 10 590 135 697 24 b 737 0 716 3 727 0 b 765 9 749 0 759 3 b 1030 295 776 17 1011 274 l 1032 300 b 1050 328 1041 308 1050 318 b 1012 353 1050 343 1024 353 b 986 343 1002 353 994 348 b 854 190 971 330 871 206 b 828 176 842 180 835 176 b 802 190 818 176 809 183 b 681 333 791 202 696 320 b 645 353 668 344 657 353 b 613 340 634 353 626 350 b 580 304 600 330 590 315 z',\n },\n ornamentShortTrill: {\n x_min: 0,\n x_max: 725,\n y_min: 0,\n y_max: 245,\n ha: 245,\n o: 'm 429 167 l 301 325 b 256 353 291 338 282 350 b 225 340 246 353 238 350 b 16 105 158 268 88 186 b 0 72 9 96 0 86 b 29 58 0 63 7 58 b 71 76 42 58 55 62 l 158 154 b 174 160 163 158 168 160 b 197 143 181 160 187 154 b 321 10 203 135 310 24 b 350 0 327 3 338 0 b 377 7 361 0 372 3 l 533 148 b 554 160 543 158 550 160 b 577 143 562 160 566 156 b 703 10 585 135 690 24 b 732 0 708 3 720 0 b 759 7 743 0 753 3 b 1024 294 769 16 1005 272 b 1044 327 1032 305 1044 321 b 1005 353 1044 341 1018 353 b 979 343 996 353 988 348 b 848 189 963 330 864 204 b 821 174 837 179 828 174 b 796 189 811 174 804 181 b 674 331 783 202 688 318 b 641 351 662 343 651 351 b 606 340 628 351 619 350 b 573 304 593 328 583 315 b 444 167 533 259 491 213 b 429 167 439 161 433 161 z',\n },\n ornamentTremblement: {\n x_min: 1,\n x_max: 985,\n y_min: 0,\n y_max: 244,\n ha: 244,\n o: 'm 678 325 b 634 351 667 338 657 350 b 602 338 621 351 613 348 l 448 167 b 439 167 446 164 441 164 l 302 325 b 258 351 291 338 281 350 b 228 338 245 351 238 348 b 193 304 215 328 204 315 l 19 107 b 1 72 13 96 1 76 b 30 58 1 63 9 58 b 89 92 52 58 73 78 l 144 141 b 148 144 145 143 147 143 b 176 160 160 153 170 160 b 199 143 183 160 189 154 b 324 10 204 134 311 23 b 351 0 330 3 340 0 b 379 7 363 0 373 3 l 530 148 b 552 160 536 154 546 160 b 575 143 559 160 564 154 b 698 10 580 134 687 23 b 727 0 704 3 716 0 b 755 7 739 0 749 3 l 907 147 b 930 160 922 158 923 160 b 952 143 937 160 943 154 l 1077 10 b 1107 0 1084 3 1096 0 b 1133 7 1117 0 1128 3 b 1398 294 1143 16 1380 272 b 1418 327 1407 305 1418 321 b 1381 351 1418 343 1394 351 b 1354 341 1371 351 1362 348 b 1223 189 1338 328 1238 204 b 1195 174 1211 179 1202 174 b 1171 189 1185 174 1178 181 b 1048 331 1158 200 1063 318 b 1012 351 1035 343 1024 351 b 981 338 1002 351 994 350 b 948 304 968 328 958 315 b 827 166 907 258 865 212 b 815 166 824 163 818 163 b 678 325 760 226 732 264 z',\n },\n ornamentPrecompAppoggTrill: {\n x_min: 0,\n x_max: 1119,\n y_min: 0,\n y_max: 481,\n ha: 481,\n o: 'm 1015 163 b 873 328 963 223 880 318 b 828 354 860 344 847 353 b 796 341 816 354 809 351 b 763 305 783 331 773 317 b 642 168 721 261 681 215 b 636 163 641 167 639 164 b 494 328 585 223 501 318 b 449 354 481 344 468 353 b 418 341 438 354 431 351 b 384 305 405 331 395 317 b 264 168 343 261 302 215 l 242 144 b 144 88 232 124 171 88 b 79 197 81 88 79 189 l 79 648 b 60 693 79 683 71 693 b 52 691 58 693 55 693 b 0 616 3 672 0 625 l 0 207 b 121 0 0 40 68 0 b 249 68 168 0 232 53 b 279 94 262 75 271 86 b 336 144 298 111 315 128 b 367 163 350 156 360 163 b 389 145 374 163 380 157 b 514 12 395 137 501 26 b 543 1 520 4 531 1 b 569 9 553 1 563 4 b 636 73 576 14 605 43 l 658 94 b 714 144 677 111 694 128 b 746 163 729 156 739 163 b 768 145 753 163 759 157 b 893 12 773 137 880 26 b 922 1 899 4 910 1 b 948 9 932 1 942 4 l 1012 71 b 1037 94 1022 78 1030 86 b 1092 144 1054 111 1073 128 b 1123 161 1106 156 1115 161 b 1146 145 1130 161 1136 157 b 1270 12 1152 137 1259 26 b 1299 1 1276 4 1287 1 b 1326 9 1310 1 1320 4 b 1591 297 1336 19 1572 275 b 1611 328 1600 307 1611 320 b 1574 354 1611 343 1585 354 b 1548 344 1565 354 1555 350 b 1416 192 1532 331 1431 206 b 1388 177 1404 181 1395 177 b 1365 190 1380 177 1371 184 b 1243 333 1352 203 1256 321 b 1205 354 1228 346 1217 354 b 1174 341 1195 354 1187 351 b 1140 305 1161 330 1152 317 z',\n },\n ornamentPrecompSlideTrillDAnglebert: {\n x_min: 2,\n x_max: 1150,\n y_min: -367,\n y_max: 245,\n ha: 612,\n o: 'm 1058 160 b 916 327 1007 220 923 317 b 871 353 903 343 890 351 b 840 340 860 353 852 350 b 806 304 827 330 816 315 b 685 167 765 259 724 213 l 680 160 l 615 235 b 419 344 582 275 523 344 b 3 -144 258 344 3 26 b 4 -168 3 -153 3 -160 b 246 -482 24 -315 99 -422 b 458 -528 340 -521 410 -528 b 514 -526 485 -528 504 -526 b 552 -508 531 -526 552 -517 b 514 -497 552 -503 541 -498 l 503 -497 b 194 -390 432 -494 298 -488 b 69 -151 194 -390 69 -279 b 184 96 69 -60 128 27 b 328 183 202 118 258 183 b 477 96 413 183 454 118 b 559 10 510 62 552 19 b 588 0 566 3 576 0 b 613 7 598 0 609 3 b 723 112 622 14 681 73 b 789 161 733 122 776 161 b 811 144 796 161 802 156 b 936 10 816 135 923 24 b 965 0 942 3 953 0 b 991 7 975 0 985 3 b 1051 66 996 12 1022 37 b 1081 92 1063 73 1073 84 b 1136 143 1099 109 1117 127 b 1168 160 1151 154 1159 160 b 1191 144 1175 160 1181 156 b 1315 10 1197 135 1303 24 b 1344 0 1320 3 1332 0 b 1371 7 1355 0 1365 3 b 1636 295 1381 17 1617 274 b 1656 327 1644 305 1656 318 b 1619 353 1656 341 1630 353 b 1593 343 1610 353 1600 348 b 1460 190 1577 330 1476 204 b 1433 176 1449 180 1440 176 b 1410 189 1424 176 1416 183 b 1287 331 1397 202 1300 320 b 1250 353 1273 344 1261 353 b 1218 340 1240 353 1231 350 b 1185 304 1205 328 1197 315 z',\n },\n ornamentPrecompSlideTrillBach: {\n x_min: 0,\n x_max: 1048,\n y_min: -367,\n y_max: 331,\n ha: 698,\n o: 'm 1038 477 l 979 477 l 979 238 l 912 160 b 769 327 858 220 775 317 b 724 353 756 343 743 351 b 693 340 713 353 706 350 b 660 304 680 330 670 315 b 539 167 618 259 577 213 b 533 161 536 166 534 163 b 390 327 480 220 396 317 b 346 353 377 343 364 351 l 340 353 b 308 340 330 353 321 350 b 275 304 295 330 285 315 b 117 122 220 243 168 186 b 0 -144 68 62 0 -48 b 1 -168 0 -153 0 -160 b 243 -482 22 -315 96 -422 b 455 -528 337 -521 408 -528 b 511 -526 482 -528 501 -526 b 549 -508 528 -526 549 -517 b 511 -497 549 -503 539 -498 l 500 -497 b 192 -390 429 -494 295 -488 b 68 -177 192 -390 84 -298 b 66 -151 66 -168 66 -160 b 189 105 66 -58 127 35 b 232 143 203 118 216 131 b 264 161 246 154 256 161 b 285 144 271 161 276 156 b 410 10 291 135 397 24 b 439 0 416 3 428 0 b 465 7 449 0 459 3 l 531 72 b 554 92 540 78 547 86 b 611 143 573 109 590 127 b 642 161 625 154 635 161 b 664 144 649 161 655 156 b 789 10 670 135 776 24 b 818 0 795 3 806 0 b 844 7 828 0 838 3 b 904 66 850 12 876 37 b 935 92 916 73 924 84 b 979 134 949 107 963 121 l 979 -88 l 1037 -88 l 1037 151 l 1044 144 b 1168 10 1050 135 1156 24 b 1197 0 1174 3 1185 0 b 1224 7 1208 0 1218 3 b 1489 295 1234 17 1470 274 b 1509 327 1498 305 1509 318 b 1472 353 1509 341 1483 353 b 1446 343 1463 353 1453 348 b 1313 190 1430 330 1329 204 b 1286 176 1302 180 1293 176 b 1263 189 1277 176 1269 183 b 1140 331 1250 202 1153 320 b 1103 353 1126 344 1115 353 b 1071 340 1093 353 1084 350 b 1038 304 1058 328 1050 315 z',\n },\n ornamentPrecompTrillSuffixDandrieu: {\n x_min: 0,\n x_max: 949,\n y_min: 0,\n y_max: 381,\n ha: 381,\n o: 'm 1367 314 b 1250 521 1367 419 1318 482 b 1107 549 1211 537 1145 549 b 1083 546 1096 549 1087 549 b 1066 528 1071 540 1066 534 b 1079 520 1066 524 1070 520 b 1323 351 1187 517 1323 487 b 1201 171 1323 269 1260 219 b 1194 166 1201 171 1198 168 b 1056 327 1142 226 1063 317 b 1011 353 1043 343 1030 351 b 979 340 999 353 992 350 b 946 304 966 330 956 315 b 825 167 904 259 864 213 l 821 161 b 678 327 768 222 685 317 b 634 353 665 343 652 351 b 602 340 622 353 615 350 b 569 304 589 330 579 315 b 448 167 527 259 487 213 l 444 161 b 301 327 390 222 308 317 b 256 353 288 343 275 351 b 225 340 245 353 238 350 b 192 304 212 330 202 315 b 71 167 150 259 109 213 b 17 105 52 147 36 127 b 0 73 10 98 0 84 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 174 161 157 154 167 161 b 196 144 181 161 187 156 b 321 10 202 135 308 24 b 350 0 327 3 338 0 b 376 7 360 0 370 3 b 485 112 384 14 444 73 b 552 161 495 122 539 161 b 573 144 559 161 564 156 b 698 10 579 135 685 24 b 727 0 704 3 716 0 b 753 7 737 0 747 3 b 863 112 762 14 821 73 b 929 161 873 122 916 161 b 950 144 936 161 942 156 b 1076 10 956 135 1063 24 b 1104 0 1081 3 1093 0 b 1130 7 1115 0 1125 3 b 1236 108 1139 14 1195 69 b 1367 314 1297 160 1367 233 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefix: {\n x_min: 0,\n x_max: 1278,\n y_min: 0,\n y_max: 247,\n ha: 247,\n o: 'm 1801 356 b 1776 346 1793 356 1783 351 b 1642 192 1760 333 1659 206 b 1614 177 1630 181 1621 177 b 1591 190 1606 177 1597 184 b 1469 334 1578 203 1482 323 b 1430 356 1453 347 1441 356 b 1398 343 1420 356 1411 353 b 1365 307 1385 331 1377 318 l 1240 164 b 1097 330 1187 226 1104 320 b 1053 356 1084 346 1071 354 b 1021 343 1041 356 1034 353 b 988 307 1008 333 998 318 b 865 168 946 262 904 216 l 861 163 b 717 330 808 223 724 320 b 672 356 704 346 691 354 b 641 343 661 356 654 353 b 608 307 628 333 618 318 b 485 168 566 262 524 216 l 455 134 b 284 46 409 88 351 46 b 16 285 148 46 32 265 b 3 295 9 292 4 295 b 0 291 1 295 0 292 b 1 285 0 288 1 285 b 308 0 42 190 157 0 b 530 120 415 1 482 63 b 559 144 539 128 549 137 b 590 163 573 156 583 163 b 612 145 598 163 603 157 b 739 10 618 137 724 24 b 768 0 744 3 756 0 b 793 7 778 0 788 3 b 903 114 802 14 861 75 l 939 144 b 971 163 953 156 963 163 b 992 145 978 163 984 157 b 1119 10 998 137 1106 24 b 1148 0 1125 3 1136 0 b 1174 7 1158 0 1168 3 b 1284 114 1182 14 1241 75 b 1316 144 1282 115 1312 141 b 1348 161 1331 156 1339 161 b 1371 145 1355 161 1361 157 b 1496 10 1377 137 1485 24 b 1525 0 1502 3 1513 0 b 1552 7 1536 0 1547 3 b 1819 298 1562 17 1800 276 b 1840 330 1829 308 1840 320 b 1832 344 1840 334 1837 340 b 1801 356 1820 351 1810 356 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefixTurn: {\n x_min: 0,\n x_max: 1277,\n y_min: -62,\n y_max: 333,\n ha: 395,\n o: 'm 1273 202 l 1273 480 l 1230 480 l 1230 174 l 1097 328 b 1053 354 1084 344 1071 353 b 1021 341 1041 354 1034 351 b 988 305 1008 331 998 317 b 865 167 945 261 904 215 l 861 161 b 717 328 808 222 724 318 b 672 354 704 344 691 353 b 641 341 661 354 654 351 b 608 305 628 331 618 317 b 485 167 564 261 524 215 b 455 132 474 156 465 144 b 284 45 410 88 350 45 b 14 284 148 45 30 264 b 3 294 9 291 4 294 b 0 289 1 294 0 291 b 1 284 0 287 1 284 b 308 -1 42 189 157 -1 b 530 118 415 0 481 62 b 557 143 539 127 547 135 b 590 161 572 154 582 161 b 612 144 598 161 603 156 b 737 9 618 135 724 24 b 768 -1 743 1 755 -1 b 793 6 778 -1 788 1 b 903 112 802 13 861 73 l 937 143 b 971 161 953 154 963 161 b 992 144 978 161 984 156 b 1117 9 998 135 1104 24 b 1148 -1 1123 1 1136 -1 b 1174 6 1158 -1 1168 1 l 1230 60 l 1230 -89 l 1273 -89 l 1273 102 l 1283 112 b 1348 160 1295 125 1332 160 b 1371 144 1355 160 1361 156 b 1496 9 1377 135 1483 24 b 1525 -1 1502 1 1513 -1 b 1552 6 1536 -1 1547 1 b 1819 297 1562 16 1800 275 b 1839 328 1827 307 1839 320 b 1801 354 1839 343 1813 354 b 1776 344 1793 354 1783 350 b 1642 190 1760 331 1657 206 b 1614 176 1630 180 1621 176 b 1591 189 1606 176 1597 183 b 1467 333 1578 203 1480 321 b 1430 354 1453 346 1441 354 b 1398 341 1420 354 1411 351 b 1365 305 1385 330 1377 317 z',\n },\n ornamentPrecompTrillLowerSuffix: {\n x_min: 0,\n x_max: 859,\n y_min: -222,\n y_max: 246,\n ha: 468,\n o: 'm 1164 217 b 1031 351 1138 259 1063 351 b 1011 337 1020 351 1024 347 b 828 167 952 291 886 217 l 824 164 b 683 328 772 225 690 318 b 638 354 670 344 657 353 b 606 341 626 354 619 351 b 573 305 593 331 583 317 b 451 167 530 261 490 215 l 446 161 b 302 328 393 222 310 318 b 258 354 289 344 276 353 b 226 341 246 354 239 351 b 193 305 213 331 203 317 b 71 167 150 261 109 215 b 17 105 52 147 36 127 b 0 73 10 98 0 84 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 176 161 157 154 168 161 b 197 144 183 161 189 156 b 323 9 203 135 310 23 b 353 -1 328 1 340 -1 b 379 6 363 -1 373 1 b 488 112 387 13 446 73 l 523 143 b 556 161 539 154 549 161 b 577 144 563 161 569 156 b 703 9 583 135 690 23 b 733 -1 708 1 721 -1 b 759 6 743 -1 753 1 b 868 112 768 13 827 73 b 955 183 878 122 943 183 b 1081 107 965 183 1031 153 b 1156 -89 1128 63 1156 6 l 1156 -102 b 948 -297 1156 -204 1048 -297 b 806 -271 904 -297 850 -282 l 792 -266 b 801 -288 792 -268 795 -282 b 948 -320 809 -297 880 -320 b 1237 -50 1092 -320 1237 -199 b 1164 217 1237 75 1218 122 z',\n },\n brassScoop: {\n x_min: 1,\n x_max: 320,\n y_min: -373,\n y_max: 13,\n ha: 386,\n o: 'm 35 -537 b 461 -12 194 -518 461 -289 b 438 19 461 13 451 19 b 410 -9 425 19 413 9 b 35 -425 357 -366 92 -403 b 1 -482 13 -433 1 -438 l 1 -505 b 26 -537 1 -526 3 -537 z',\n },\n brassDoitMedium: {\n x_min: 0,\n x_max: 489,\n y_min: -40,\n y_max: 346,\n ha: 386,\n o: 'm 33 -58 b 704 468 255 -58 683 186 b 681 498 704 494 693 498 b 654 471 668 498 658 488 b 33 55 550 118 91 76 b 0 -3 12 46 0 42 l 0 -26 b 24 -58 0 -46 1 -58 z',\n },\n brassFallLipShort: {\n x_min: 1,\n x_max: 293,\n y_min: -345,\n y_max: 42,\n ha: 387,\n o: 'm 22 60 b 1 35 4 60 1 52 l 1 6 b 26 -50 3 -40 10 -43 b 32 -52 27 -50 30 -50 b 376 -469 85 -73 327 -111 b 400 -497 379 -487 387 -497 b 422 -467 412 -497 422 -491 b 32 60 422 -187 177 40 z',\n },\n brassLiftMedium: {\n x_min: 0,\n x_max: 811,\n y_min: 0,\n y_max: 852,\n ha: 852,\n o: 'm 1138 1220 b 1135 1225 1135 1223 1135 1224 b 1129 1227 1133 1227 1130 1227 b 1117 1207 1122 1227 1117 1212 l 1117 1201 b 1109 1164 1117 1187 1117 1172 b 1100 1156 1107 1161 1104 1158 b 959 1104 1058 1128 995 1140 b 929 1032 936 1081 929 1056 b 932 1007 929 1024 930 1015 b 923 976 932 995 930 985 l 914 971 b 773 919 873 942 809 955 b 743 847 750 896 743 870 b 746 821 743 838 744 829 b 737 791 746 809 744 799 l 729 783 b 588 733 687 756 624 769 b 557 661 564 710 557 684 b 560 635 557 652 559 644 b 552 605 560 624 559 612 l 543 598 b 402 547 501 570 438 583 b 372 475 379 524 372 498 b 374 449 372 467 373 458 b 366 419 374 438 373 426 l 357 412 b 216 361 315 384 252 397 b 186 289 193 338 186 312 b 189 264 186 281 187 272 b 180 233 189 252 187 240 b 171 226 177 232 174 229 b 30 176 130 199 66 212 b 0 104 7 153 0 128 b 33 0 0 88 14 0 b 49 17 40 0 49 10 b 71 63 52 35 56 49 b 212 115 102 95 154 59 b 239 186 230 134 239 160 b 236 210 239 194 238 202 b 256 249 239 225 243 236 b 397 301 288 281 340 245 b 425 372 416 320 425 346 b 422 396 425 380 423 387 b 442 435 425 410 429 422 b 583 487 474 467 526 431 b 611 557 602 505 611 531 b 608 582 611 566 609 573 b 628 621 611 596 615 608 b 769 672 660 652 711 618 b 796 743 788 691 796 717 b 793 768 796 752 795 759 b 814 806 796 782 801 793 b 955 858 845 838 897 804 b 982 929 973 877 982 903 b 979 953 982 937 981 945 b 999 992 982 968 986 979 b 1140 1045 1031 1024 1083 989 b 1168 1116 1161 1066 1168 1090 b 1138 1220 1168 1162 1145 1207 z',\n },\n brassFallRoughMedium: {\n x_min: 0,\n x_max: 811,\n y_min: 0,\n y_max: 852,\n ha: 852,\n o: 'm 30 1220 b 0 1116 23 1207 0 1162 b 27 1045 0 1090 7 1066 b 168 992 85 989 137 1024 b 189 953 181 979 186 968 b 186 929 187 945 186 937 b 213 858 186 903 194 877 b 354 806 271 804 323 838 b 374 768 367 793 372 782 b 372 743 373 759 372 752 b 399 672 372 717 380 691 b 540 621 456 618 508 652 b 560 582 553 608 557 596 b 557 557 559 573 557 566 b 585 487 557 531 566 505 b 726 435 642 431 694 467 b 746 396 739 422 743 410 b 743 372 744 387 743 380 b 770 301 743 346 752 320 b 912 249 828 245 880 281 b 932 210 924 236 929 225 b 929 186 930 202 929 194 b 956 115 929 160 937 134 b 1097 63 1014 59 1066 95 b 1119 17 1112 49 1116 35 b 1135 0 1119 10 1128 0 b 1168 104 1153 0 1168 91 b 1138 176 1168 128 1161 153 b 996 226 1102 212 1038 199 b 988 233 994 229 991 232 b 979 264 981 240 979 252 b 982 289 981 272 982 281 b 952 361 982 312 975 338 b 811 412 916 397 852 384 l 802 419 b 793 449 795 426 793 438 b 796 475 795 458 796 467 b 766 547 796 498 789 524 b 625 598 730 583 667 570 l 616 605 b 608 635 609 612 608 624 b 611 661 609 644 611 652 b 580 733 611 684 603 710 b 439 783 544 769 481 756 l 431 791 b 422 821 423 799 422 809 b 425 847 423 829 425 838 b 395 919 425 870 418 896 b 253 971 359 955 295 942 l 245 976 b 236 1007 238 985 236 995 b 239 1032 238 1015 239 1024 b 209 1104 239 1056 232 1081 b 68 1156 173 1140 109 1128 b 59 1164 63 1158 60 1161 b 50 1201 50 1172 50 1187 l 50 1207 b 39 1227 50 1212 46 1227 b 33 1225 37 1227 35 1227 b 30 1220 33 1224 33 1223 z',\n },\n brassBend: {\n x_min: 0,\n x_max: 392,\n y_min: 0,\n y_max: 282,\n ha: 282,\n o: 'm 282 0 b 552 72 369 0 456 23 b 564 92 560 75 564 84 l 564 383 b 541 406 564 395 554 406 b 518 383 528 406 518 395 l 518 107 b 282 46 435 65 357 46 b 46 107 207 46 130 65 l 46 383 b 23 406 46 395 36 406 b 0 383 10 406 0 395 l 0 92 b 13 72 0 84 4 75 b 282 0 108 23 196 0 z',\n },\n brassMuteClosed: {\n x_min: 0,\n x_max: 272,\n y_min: 0,\n y_max: 272,\n ha: 272,\n o: 'm 392 219 l 219 219 l 219 392 l 173 392 l 173 219 l 0 219 l 0 173 l 173 173 l 173 0 l 219 0 l 219 173 l 392 173 z',\n },\n brassMuteOpen: {\n x_min: 0,\n x_max: 304,\n y_min: 0,\n y_max: 304,\n ha: 304,\n o: 'm 219 0 b 438 219 340 0 438 98 b 219 438 438 340 340 438 b 0 219 98 438 0 340 b 219 0 0 98 98 0 z m 219 392 b 392 219 314 392 392 314 b 219 46 392 124 314 46 b 46 219 124 46 46 124 b 219 392 46 314 124 392 z',\n },\n brassFlip: {\n x_min: 0,\n x_max: 379,\n y_min: 0,\n y_max: 282,\n ha: 282,\n o: 'm 523 0 b 541 9 530 0 536 3 b 546 22 544 13 546 17 b 536 42 546 29 541 36 l 36 402 b 23 406 33 405 27 406 b 0 383 12 406 0 395 l 0 23 b 23 0 0 10 10 0 b 46 23 36 0 46 10 l 46 337 l 508 4 b 523 0 513 1 517 0 z',\n },\n brassJazzTurn: {\n x_min: 0,\n x_max: 620,\n y_min: 0,\n y_max: 245,\n ha: 245,\n o: 'm 792 190 b 765 176 780 179 772 176 b 740 190 755 176 747 183 b 629 325 727 202 644 312 b 593 347 616 338 605 347 b 562 334 583 346 575 344 b 528 298 549 323 539 310 l 406 176 b 389 168 406 176 399 168 b 374 176 384 168 379 170 b 245 325 360 192 245 325 b 200 353 232 343 219 351 b 168 340 190 353 181 350 l 17 156 b 0 121 10 147 0 132 b 16 107 0 114 4 108 b 84 143 26 107 76 137 b 118 160 92 150 108 160 b 141 143 125 160 131 154 b 265 10 147 135 253 24 b 294 0 271 3 282 0 b 321 7 305 0 315 3 b 498 160 321 7 478 158 b 521 143 505 160 513 154 b 647 10 528 135 635 24 b 675 0 652 3 664 0 b 703 7 687 0 697 3 b 874 186 713 16 855 164 b 893 220 881 196 893 212 b 873 245 890 235 883 243 b 796 194 847 245 815 213 z',\n },\n brassSmear: {\n x_min: 1,\n x_max: 306,\n y_min: 0,\n y_max: 170,\n ha: 170,\n o: 'm 193 79 b 308 0 219 50 264 0 b 439 117 396 0 438 102 b 439 120 439 118 439 118 l 441 125 b 441 128 441 127 441 127 b 433 141 441 135 439 141 b 416 130 429 141 423 137 b 343 94 390 107 370 94 b 269 153 315 94 294 121 l 265 158 b 144 245 239 190 180 245 b 6 134 62 245 10 143 b 1 114 3 125 1 118 b 7 107 1 108 4 107 b 36 122 13 107 22 112 b 92 151 55 137 65 151 b 183 89 125 151 161 112 b 189 84 184 88 187 86 z',\n },\n stringsDownBow: {\n x_min: 0,\n x_max: 312,\n y_min: 0,\n y_max: 318,\n ha: 318,\n o: 'm 37 458 b 0 420 17 458 0 441 l 0 17 b 17 0 0 7 9 0 l 37 0 b 55 17 46 0 55 7 l 55 253 b 225 278 55 269 140 278 b 395 253 310 278 395 269 l 395 17 b 413 0 395 7 403 0 l 432 0 b 449 17 441 0 449 7 l 449 420 b 412 458 449 441 432 458 z',\n },\n stringsUpBow: {\n x_min: 1,\n x_max: 249,\n y_min: 1,\n y_max: 495,\n ha: 494,\n o: 'm 181 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 z',\n },\n stringsHarmonic: {\n x_min: 0,\n x_max: 200,\n y_min: 0,\n y_max: 200,\n ha: 200,\n o: 'm 288 144 b 144 288 288 225 223 288 b 0 144 65 288 0 225 b 144 0 0 65 65 0 b 288 144 223 0 288 65 z m 144 249 b 249 144 203 249 249 203 b 144 39 249 86 203 39 b 39 144 86 39 39 86 b 144 249 39 203 86 249 z',\n },\n pluckedSnapPizzicatoAbove: {\n x_min: 0,\n x_max: 200,\n y_min: 0,\n y_max: 300,\n ha: 300,\n o: 'm 0 144 b 144 0 0 63 65 0 b 288 144 223 0 288 63 b 167 285 288 215 235 275 l 167 432 l 121 432 l 121 285 b 0 144 52 275 0 215 z m 121 246 l 121 144 l 167 144 l 167 246 b 249 144 213 236 249 193 b 144 39 249 85 202 39 b 39 144 85 39 39 85 b 121 246 39 193 73 236 z',\n },\n pluckedSnapPizzicatoBelow: {\n x_min: 0,\n x_max: 200,\n y_min: 0,\n y_max: 300,\n ha: 300,\n o: 'm 288 288 b 144 432 288 369 223 432 b 0 288 65 432 0 369 b 121 145 0 216 52 157 l 121 0 l 167 0 l 167 145 b 288 288 235 157 288 216 z m 167 186 l 167 288 l 121 288 l 121 186 b 39 288 75 196 39 238 b 144 393 39 347 86 393 b 249 288 203 393 249 347 b 167 186 249 238 215 196 z',\n },\n pluckedLeftHandPizzicato: {\n x_min: 0,\n x_max: 272,\n y_min: 0,\n y_max: 272,\n ha: 272,\n o: 'm 392 219 l 219 219 l 219 392 l 173 392 l 173 219 l 0 219 l 0 173 l 173 173 l 173 0 l 219 0 l 219 173 l 392 173 z',\n },\n keyboardPedalPed: {\n x_min: 0,\n x_max: 1019,\n y_min: -8,\n y_max: 555,\n ha: 563,\n o: 'm 413 799 b 179 749 327 798 261 789 b 0 517 107 713 0 632 b 122 376 0 454 37 376 b 240 540 189 376 240 452 b 225 586 240 579 233 586 b 204 549 213 586 212 573 b 138 480 199 527 181 480 b 85 549 96 480 85 517 l 85 554 b 353 762 89 690 230 762 b 373 752 364 762 373 760 b 351 708 373 740 360 723 b 274 546 330 675 274 585 b 353 416 274 508 333 444 b 412 304 372 390 412 351 b 382 228 412 275 403 256 b 334 190 363 202 361 200 b 147 29 271 167 147 88 b 196 -12 147 4 171 -12 b 343 108 239 -12 279 33 l 363 132 b 387 150 370 141 376 150 b 543 -4 445 150 467 -4 b 631 42 567 -4 586 0 l 668 78 b 685 89 674 84 680 89 b 696 75 688 89 690 86 b 809 -9 717 29 753 -9 b 946 66 854 -9 894 13 b 988 107 971 92 981 107 b 1002 89 994 107 996 99 b 1152 -4 1030 36 1077 -4 b 1329 248 1238 -4 1329 82 b 792 717 1329 556 1047 665 b 766 720 785 719 775 720 b 747 703 752 720 747 711 b 780 680 747 693 756 685 b 1223 222 1028 621 1223 504 b 1152 39 1223 122 1205 39 b 1073 229 1104 39 1073 132 b 1132 423 1073 314 1086 377 b 1142 442 1140 432 1142 436 b 1126 458 1142 451 1136 458 b 1093 446 1119 458 1109 455 b 975 216 1022 408 975 337 l 975 190 b 943 121 975 160 972 150 b 852 69 899 76 877 69 b 776 148 816 69 786 117 b 773 163 775 154 773 158 b 786 177 773 167 776 170 l 801 187 b 937 366 867 235 937 284 b 844 454 937 422 900 454 b 665 217 711 454 665 331 b 671 153 665 197 667 176 l 671 147 b 662 134 671 143 670 140 b 605 111 639 118 625 111 b 521 160 572 111 546 135 b 451 203 497 184 474 197 b 426 212 435 207 426 206 b 436 230 426 216 429 220 b 510 389 464 269 510 340 b 429 521 510 435 480 462 b 369 629 387 570 369 599 b 402 720 369 648 384 691 b 462 763 425 759 446 763 b 611 624 540 763 611 704 b 564 575 611 592 590 575 b 501 602 540 575 520 582 b 474 622 492 611 487 622 b 459 603 465 622 459 615 b 603 471 459 570 510 471 b 711 588 670 471 711 524 b 422 799 711 742 554 799 z m 815 403 b 848 343 838 403 848 383 b 780 226 848 295 824 261 b 765 217 773 220 768 217 b 759 228 762 217 759 220 b 756 282 757 245 756 262 b 815 403 756 346 772 403 z m 1405 124 b 1344 62 1369 124 1344 98 b 1405 0 1344 26 1369 0 b 1467 62 1441 0 1467 26 b 1405 124 1467 98 1441 124 z',\n },\n keyboardPedalUp: {\n x_min: 0,\n x_max: 450,\n y_min: 0,\n y_max: 450,\n ha: 450,\n o: 'm 582 396 b 516 367 554 396 533 384 b 465 340 495 347 487 340 l 458 340 b 412 377 432 340 412 348 b 432 409 412 387 419 396 l 438 415 b 490 429 451 428 464 429 b 575 501 534 429 575 452 b 501 575 575 541 541 575 b 429 490 452 575 429 534 b 415 438 429 464 428 451 l 409 432 b 377 412 396 419 387 412 b 340 458 348 412 340 432 l 340 465 b 367 516 340 487 347 495 b 396 582 384 533 396 554 b 324 648 396 625 363 648 b 252 582 285 648 252 625 b 281 516 252 554 264 533 b 308 465 301 495 308 487 l 308 458 b 271 412 308 432 300 412 b 239 432 261 412 252 419 l 233 438 b 219 490 220 451 219 464 b 147 575 219 534 196 575 b 73 501 107 575 73 541 b 158 429 73 452 114 429 b 210 415 184 429 197 428 l 216 409 b 236 377 229 396 236 387 b 190 340 236 348 216 340 l 183 340 b 132 367 161 340 153 347 b 66 396 115 384 94 396 b 0 324 23 396 0 363 b 66 252 0 285 23 252 b 132 281 94 252 115 264 b 183 308 153 301 161 308 l 190 308 b 236 271 216 308 236 300 b 216 239 236 261 229 252 l 210 233 b 158 219 197 220 184 219 b 73 147 114 219 73 196 b 147 73 73 107 107 73 b 219 158 196 73 219 114 b 233 210 219 184 220 197 l 239 216 b 271 236 252 229 261 236 b 308 190 300 236 308 216 l 308 183 b 281 132 308 161 301 153 b 252 66 264 115 252 94 b 324 0 252 23 285 0 b 396 66 363 0 396 23 b 367 132 396 94 384 115 b 340 183 347 153 340 161 l 340 190 b 377 236 340 216 348 236 b 409 216 387 236 396 229 l 415 210 b 429 158 428 197 429 184 b 501 73 429 114 452 73 b 575 147 541 73 575 107 b 490 219 575 196 534 219 b 438 233 464 219 451 220 l 432 239 b 412 271 419 252 412 261 b 458 308 412 300 432 308 l 465 308 b 516 281 487 308 495 301 b 582 252 533 264 554 252 b 648 324 625 252 648 285 b 582 396 648 363 625 396 z m 324 271 b 271 324 291 271 271 291 b 324 377 271 357 291 377 b 377 324 357 377 377 357 b 324 271 377 291 357 271 z',\n },\n pictChokeCymbal: {\n x_min: 1,\n x_max: 152,\n y_min: 2,\n y_max: 251,\n ha: 249,\n o: 'm 104 361 b 1 271 42 361 1 321 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 17 32 29 26 26 l 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 z',\n },\n wiggleArpeggiatoUp: {\n x_min: -33,\n x_max: 292,\n y_min: 0,\n y_max: 119,\n ha: 119,\n o: 'm 130 171 b -39 68 16 171 -14 91 b -48 53 -45 62 -48 58 b -29 42 -48 46 -39 42 b -10 46 -23 42 -16 43 b 56 63 12 56 29 63 b 248 0 121 63 135 0 b 419 127 361 0 410 104 b 420 132 420 130 420 131 b 412 140 420 137 416 140 b 386 130 403 140 392 134 b 334 107 367 117 353 107 b 318 108 330 107 324 107 b 240 138 289 112 265 128 b 130 171 209 153 168 171 z',\n },\n arrowheadBlackUp: {\n x_min: 0,\n x_max: 228,\n y_min: 0,\n y_max: 299,\n ha: 299,\n o: 'm 166 431 b 0 20 111 274 0 30 b 16 0 0 12 6 0 l 17 1 b 166 50 43 16 160 50 b 310 1 171 50 289 13 l 311 0 b 328 20 321 0 328 12 b 166 431 328 30 220 274 z',\n },\n arrowheadBlackDown: {\n x_min: 0,\n x_max: 228,\n y_min: 0,\n y_max: 299,\n ha: 299,\n o: 'm 166 0 b 328 410 220 157 328 400 b 311 431 328 419 321 431 l 310 429 b 166 380 289 418 171 380 b 17 429 160 380 43 415 l 16 431 b 0 410 6 431 0 419 b 166 0 0 400 111 157 z',\n },\n arpeggiatoUp: {\n x_min: 1,\n x_max: 229,\n y_min: 7,\n y_max: 1511,\n ha: 1504,\n o: 'm 219 1848 l 330 1848 l 164 2176 l 1 1848 l 121 1848 b 92 1778 115 1822 101 1800 l 89 1773 b 59 1668 75 1741 59 1702 b 96 1555 59 1614 76 1580 b 99 1551 98 1554 99 1551 l 102 1547 b 124 1496 115 1531 124 1515 b 122 1482 124 1492 124 1488 b 92 1404 118 1453 102 1428 b 59 1293 78 1372 59 1332 b 105 1172 59 1234 81 1198 b 124 1120 118 1155 124 1143 l 122 1113 b 122 1110 122 1113 122 1112 b 92 1032 118 1081 102 1057 b 59 922 78 1001 59 960 b 115 792 59 855 86 816 b 124 760 121 782 124 773 b 122 744 124 756 124 750 b 92 667 118 716 102 693 b 59 556 78 635 59 595 b 108 433 59 495 82 458 b 124 389 117 420 124 408 b 122 374 124 384 124 379 b 92 298 118 346 102 323 l 89 292 b 59 186 75 261 59 222 b 163 19 59 73 140 42 b 177 10 168 13 173 10 b 189 29 184 10 189 19 b 184 48 189 35 187 42 b 167 114 174 69 167 85 b 230 305 167 179 229 193 b 181 423 230 357 209 396 b 167 484 173 442 167 458 b 230 675 167 547 229 563 b 179 796 230 729 206 769 b 167 850 171 812 167 827 b 230 1040 167 913 229 929 b 183 1158 230 1092 209 1130 b 167 1220 173 1178 167 1194 b 230 1411 167 1284 229 1300 b 186 1526 230 1462 210 1499 b 167 1594 176 1529 167 1584 b 230 1786 167 1659 229 1673 b 219 1848 230 1809 226 1829 z',\n },\n arpeggiatoDown: {\n x_min: 1,\n x_max: 229,\n y_min: -4,\n y_max: 1500,\n ha: 1504,\n o: 'm 219 323 b 230 384 226 341 230 361 b 167 576 229 497 167 511 b 186 644 167 586 176 641 b 230 759 210 671 230 708 b 167 950 229 870 167 886 b 183 1012 167 976 173 992 b 230 1130 209 1040 230 1079 b 167 1320 229 1241 167 1257 b 179 1374 167 1344 171 1358 b 230 1495 206 1401 230 1441 b 167 1686 229 1607 167 1623 b 181 1747 167 1712 173 1728 b 230 1865 209 1774 230 1813 b 167 2056 229 1977 167 1992 b 184 2123 167 2085 174 2101 b 189 2141 187 2128 189 2136 b 177 2160 189 2151 184 2160 b 163 2151 173 2160 168 2157 b 59 1984 140 2128 59 2097 b 89 1878 59 1948 75 1909 l 92 1872 b 122 1796 102 1848 118 1824 b 124 1781 124 1791 124 1786 b 108 1737 124 1763 117 1750 b 59 1614 82 1712 59 1675 b 92 1503 59 1575 78 1535 b 122 1426 102 1477 118 1454 b 124 1410 124 1420 124 1414 b 115 1378 124 1397 121 1388 b 59 1248 86 1354 59 1315 b 92 1138 59 1210 78 1169 b 122 1060 102 1113 118 1089 b 122 1057 122 1058 122 1058 l 124 1050 b 105 998 124 1027 118 1015 b 59 877 81 972 59 936 b 92 766 59 838 78 798 b 122 688 102 742 118 717 b 124 674 124 683 124 678 b 102 624 124 655 115 639 l 99 619 b 96 615 99 619 98 616 b 59 503 76 590 59 556 b 89 397 59 468 75 429 l 92 392 b 121 323 101 370 115 348 l 1 323 l 164 -6 l 330 323 z',\n },\n repeat1Bar: {\n x_min: 0,\n x_max: 532,\n y_min: -250,\n y_max: 279,\n ha: 529,\n o: 'm 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 675 -71 b 586 -161 626 -71 586 -111 b 675 -251 586 -210 626 -251 b 766 -161 726 -251 766 -210 b 675 -71 766 -111 726 -71 z',\n },\n repeat2Bars: {\n x_min: 0,\n x_max: 762,\n y_min: -250,\n y_max: 279,\n ha: 529,\n o: 'm 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 b 343 -360 331 -356 336 -360 l 485 -360 b 516 -340 498 -360 508 -348 z m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 1007 -71 b 917 -161 958 -71 917 -111 b 1007 -251 917 -210 958 -251 b 1097 -161 1057 -251 1097 -210 b 1007 -71 1097 -111 1057 -71 z',\n },\n repeat4Bars: {\n x_min: 0,\n x_max: 1232,\n y_min: -250,\n y_max: 279,\n ha: 529,\n o: 'm 1767 380 b 1774 395 1771 386 1774 390 b 1765 402 1774 399 1771 402 l 1613 402 b 1587 380 1604 402 1597 393 l 1012 -340 b 1008 -350 1009 -343 1008 -347 b 1020 -360 1008 -356 1012 -360 l 1162 -360 b 1192 -340 1175 -360 1185 -348 z m 1436 380 b 1443 395 1440 386 1443 390 b 1434 402 1443 399 1440 402 l 1282 402 b 1256 380 1273 402 1266 393 l 681 -340 b 677 -350 678 -343 677 -347 b 688 -360 677 -356 681 -360 l 831 -360 b 861 -340 844 -360 854 -348 z m 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 b 343 -360 331 -356 336 -360 l 485 -360 b 516 -340 498 -360 508 -348 z m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 1683 -71 b 1594 -161 1634 -71 1594 -111 b 1683 -251 1594 -210 1634 -251 b 1774 -161 1734 -251 1774 -210 b 1683 -71 1774 -111 1734 -71 z',\n },\n repeatBarSlash: {\n x_min: 0,\n x_max: 532,\n y_min: -250,\n y_max: 279,\n ha: 529,\n o: 'm 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z',\n },\n csymDiminished: {\n x_min: 0,\n x_max: 473,\n y_min: 0,\n y_max: 473,\n ha: 473,\n o: 'm 341 681 b 0 341 153 681 0 530 b 341 0 0 153 153 0 b 681 341 530 0 681 153 b 341 681 681 530 530 681 z m 341 618 b 618 341 495 618 618 495 b 341 63 618 189 494 63 b 63 341 187 63 63 187 b 341 618 63 494 189 618 z',\n },\n csymHalfDiminished: {\n x_min: -16,\n x_max: 488,\n y_min: -15,\n y_max: 489,\n ha: 504,\n o: 'm 703 660 l 658 704 l 557 603 b 340 681 498 652 422 681 b -1 341 151 681 -1 530 b 78 124 -1 259 29 183 l -23 23 l 22 -22 l 122 79 b 340 0 181 30 258 0 b 680 341 528 0 680 153 b 602 559 680 423 651 500 z m 62 341 b 340 618 62 494 187 618 b 513 559 403 618 464 598 l 122 168 b 62 341 84 217 62 278 z m 616 341 b 340 63 616 189 492 63 b 167 124 276 63 216 85 l 557 514 b 616 341 596 465 616 405 z',\n },\n csymAugmented: {\n x_min: 0,\n x_max: 395,\n y_min: 1,\n y_max: 396,\n ha: 395,\n o: 'm 569 318 l 317 318 l 317 570 l 253 570 l 253 318 l 0 318 l 0 255 l 253 255 l 253 1 l 317 1 l 317 255 l 569 255 z',\n },\n csymMajorSeventh: {\n x_min: 0,\n x_max: 558,\n y_min: 1,\n y_max: 477,\n ha: 476,\n o: 'm 402 687 l 0 1 l 804 1 z m 402 562 l 693 65 l 111 65 z',\n },\n csymMinor: {\n x_min: 0,\n x_max: 325,\n y_min: 216,\n y_max: 260,\n ha: 44,\n o: 'm 468 374 l 0 374 l 0 311 l 468 311 z',\n },\n csymParensLeftTall: {\n x_min: 1,\n x_max: 185,\n y_min: 0,\n y_max: 997,\n ha: 997,\n o: 'm 266 48 b 261 65 266 55 264 62 b 92 719 157 212 92 400 b 262 1371 92 1037 154 1228 b 266 1394 266 1378 266 1394 l 266 1424 b 264 1436 266 1431 266 1436 b 259 1434 262 1436 259 1434 b 1 719 84 1261 1 1011 b 259 1 1 429 79 177 b 264 0 261 0 262 0 b 266 9 265 0 266 6 z',\n },\n csymParensRightTall: {\n x_min: -20,\n x_max: 164,\n y_min: 0,\n y_max: 997,\n ha: 997,\n o: 'm -29 9 b -26 0 -29 6 -27 0 b -22 1 -24 0 -23 0 b 236 719 158 177 236 429 b -22 1434 236 1011 154 1261 b -26 1436 -22 1434 -24 1436 b -29 1424 -29 1436 -29 1431 l -29 1394 b -24 1371 -29 1394 -29 1378 b 145 719 84 1228 145 1037 b -23 65 145 400 81 212 b -29 48 -26 62 -29 55 z',\n },\n csymBracketLeftTall: {\n x_min: 0,\n x_max: 155,\n y_min: 0,\n y_max: 1000,\n ha: 1000,\n o: 'm 217 0 b 223 9 220 0 223 4 l 223 37 b 217 46 223 42 220 46 l 92 46 l 92 1394 l 217 1394 b 223 1403 220 1394 223 1398 l 223 1431 b 217 1440 223 1436 220 1440 l 6 1440 b 0 1436 3 1440 0 1439 l 0 4 b 6 0 0 1 3 0 z',\n },\n csymBracketRightTall: {\n x_min: 1,\n x_max: 156,\n y_min: 0,\n y_max: 1000,\n ha: 1000,\n o: 'm 219 0 b 225 4 222 0 225 1 l 225 1436 b 219 1440 225 1439 222 1440 l 7 1440 b 1 1431 4 1440 1 1436 l 1 1403 b 7 1394 1 1398 4 1394 l 132 1394 l 132 46 l 7 46 b 1 37 4 46 1 42 l 1 9 b 7 0 1 4 4 0 z',\n },\n csymParensLeftVeryTall: {\n x_min: 0,\n x_max: 122,\n y_min: 0,\n y_max: 993,\n ha: 993,\n o: 'm 176 32 b 171 49 176 39 174 46 b 60 716 104 194 60 399 b 173 1382 60 1032 101 1241 b 176 1405 176 1390 176 1405 l 176 1427 b 173 1430 176 1428 174 1430 b 0 716 40 1297 0 978 b 170 3 0 428 50 179 b 171 0 170 1 170 0 b 176 6 173 0 176 4 z',\n },\n csymParensRightVeryTall: {\n x_min: -15,\n x_max: 107,\n y_min: 0,\n y_max: 993,\n ha: 993,\n o: 'm -22 6 b -17 0 -22 4 -19 0 b -16 3 -16 0 -16 1 b 154 716 104 179 154 428 b -19 1430 154 978 114 1297 b -22 1427 -20 1430 -22 1428 l -22 1405 b -19 1382 -22 1405 -22 1390 b 94 716 53 1241 94 1032 b -17 49 94 399 50 194 b -22 32 -20 46 -22 39 z',\n },\n csymDiagonalArrangementSlash: {\n x_min: 0,\n x_max: 999,\n y_min: 0,\n y_max: 1000,\n ha: 1000,\n o: 'm 1439 1380 l 1377 1440 l 0 60 l 62 0 z',\n },\n accSagittal5v7KleismaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -35 b 135 -112 68 -86 99 -112 b 225 68 194 -112 225 -53 l 180 68 b 144 -4 180 20 168 -4 b 122 0 138 -4 131 -3 b 23 248 86 14 52 96 l 0 248 z',\n },\n accSagittal5v7KleismaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 b 122 0 52 -96 86 -14 b 144 4 131 3 138 4 b 180 -68 168 4 180 -20 l 225 -68 b 135 112 225 53 194 112 b 45 35 99 112 68 86 l 45 517 l 0 517 z',\n },\n accSagittal5CommaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 225 -517 l 225 248 l 203 248 l 0 -112 l 0 -284 l 180 33 l 180 -517 z',\n },\n accSagittal5CommaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 180 517 l 180 -33 l 0 284 l 0 112 l 203 -248 l 225 -248 l 225 517 z',\n },\n accSagittal7CommaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 248 l 0 -517 l 45 -517 l 45 112 l 89 112 b 180 -68 150 112 180 53 l 180 -248 l 225 -248 l 225 68 b 135 248 225 187 194 248 z',\n },\n accSagittal7CommaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 135 -248 b 225 -68 194 -248 225 -187 l 225 248 l 180 248 l 180 68 b 89 -112 180 -53 150 -112 l 45 -112 l 45 517 l 0 517 l 0 -248 z',\n },\n accSagittal25SmallDiesisUp: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -157 l 0 -259 l 315 -89 l 315 -517 l 360 -517 l 360 248 l 337 248 l 0 68 l 0 -33 l 315 135 l 315 10 z',\n },\n accSagittal25SmallDiesisDown: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 315 -10 l 315 -135 l 0 33 l 0 -68 l 337 -248 l 360 -248 l 360 517 l 315 517 l 315 89 l 0 259 l 0 157 z',\n },\n accSagittal35MediumDiesisUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -68 330 112 360 53 l 360 -248 l 405 -248 l 405 68 b 315 248 405 187 374 248 l 203 248 l 0 -112 z',\n },\n accSagittal35MediumDiesisDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 203 -248 l 315 -248 b 405 -68 374 -248 405 -187 l 405 248 l 360 248 l 360 68 b 271 -112 360 -53 330 -112 l 225 -112 l 225 517 l 180 517 l 180 -33 l 0 284 z',\n },\n accSagittal11MediumDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 225 53 l 225 -517 l 271 -517 l 271 53 l 495 -248 l 495 -89 l 248 248 l 0 -89 l 0 -248 z',\n },\n accSagittal11MediumDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 248 l 0 89 l 248 -248 l 495 89 l 495 248 l 271 -53 l 271 517 l 225 517 l 225 -53 z',\n },\n accSagittal11LargeDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 112 l 315 112 b 449 -68 405 112 449 53 l 449 -248 l 495 -248 l 495 68 b 360 248 495 187 449 248 l 135 248 b 0 68 45 248 0 187 z',\n },\n accSagittal11LargeDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 360 -248 b 495 -68 449 -248 495 -187 l 495 248 l 449 248 l 449 68 b 315 -112 449 -53 405 -112 l 271 -112 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittal35LargeDiesisUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 l 540 112 l 540 274 l 271 -58 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittal35LargeDiesisDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 l 540 112 l 540 274 l 269 -58 l 269 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittalSharp25SDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 112 -112 0 -53 36 -112 l 135 -112 l 135 -517 l 180 -517 l 180 -89 b 248 26 206 -65 229 -27 b 315 -89 264 -27 287 -65 l 315 -517 l 360 -517 l 360 -112 l 383 -112 b 495 68 458 -112 495 -53 l 449 68 b 399 -4 449 20 433 -4 b 248 248 297 -4 261 171 b 122 0 216 96 176 14 b 94 -4 112 -3 102 -4 b 45 68 60 -4 45 20 z',\n },\n accSagittalFlat25SUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 94 4 45 -20 60 4 b 122 0 102 4 112 3 b 248 -248 176 -14 216 -96 b 399 4 261 -171 297 4 b 449 -68 433 4 449 -20 l 495 -68 b 383 112 495 53 458 112 l 360 112 l 360 517 l 315 517 l 315 89 b 248 -26 287 65 264 27 b 180 89 229 27 206 65 l 180 517 l 135 517 l 135 112 l 112 112 b 0 -68 36 112 0 53 z',\n },\n accSagittalSharp7CDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 112 l 89 112 b 180 104 124 112 154 109 l 180 -517 l 225 -517 l 225 89 b 315 -68 285 60 315 9 l 315 -248 l 360 -248 l 360 68 b 135 248 360 187 285 248 l 0 248 z',\n },\n accSagittalFlat7CUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 135 -248 b 360 -68 285 -248 360 -187 l 360 248 l 315 248 l 315 68 b 225 -89 315 -9 285 -60 l 225 517 l 180 517 l 180 -104 b 89 -112 154 -109 124 -112 l 45 -112 l 45 517 l 0 517 z',\n },\n accSagittalSharp5CDown: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -517 l 45 71 l 180 -56 l 180 -517 l 225 -517 l 225 -98 l 405 -268 l 405 -112 l 23 248 l 0 248 l 0 -517 z',\n },\n accSagittalFlat5CUp: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 517 l 0 -248 l 23 -248 l 405 112 l 405 268 l 225 98 l 225 517 l 180 517 l 180 56 l 45 -71 l 45 517 z',\n },\n accSagittalSharp5v7kDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -276 l 135 -82 l 135 -517 l 180 -517 l 180 -17 l 271 112 l 315 112 l 315 -517 l 360 -517 l 360 107 b 449 -68 420 89 449 30 l 449 -248 l 495 -248 l 495 68 b 360 248 495 189 449 248 l 248 248 z',\n },\n accSagittalFlat5v7kUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 248 -248 l 360 -248 b 495 -68 449 -248 495 -189 l 495 248 l 449 248 l 449 68 b 360 -107 449 -30 420 -89 l 360 517 l 315 517 l 315 -112 l 271 -112 l 180 17 l 180 517 l 135 517 l 135 82 l 0 276 l 0 112 z',\n },\n accSagittalSharp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 180 -53 l 180 -517 l 225 -517 l 225 0 l 292 85 l 360 0 l 360 -517 l 405 -517 l 405 -53 l 585 -274 l 585 -112 l 292 248 l 0 -112 l 0 -274 z',\n },\n accSagittalFlat: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 274 l 0 112 l 292 -248 l 585 112 l 585 274 l 405 53 l 405 517 l 360 517 l 360 0 l 292 -85 l 225 0 l 225 517 l 180 517 l 180 53 z',\n },\n accSagittalSharp5v7kUp: {\n x_min: 0,\n x_max: 312,\n y_min: -361,\n y_max: 172,\n ha: 533,\n o: 'm 45 -517 l 45 -10 b 135 -92 68 -48 98 -75 l 135 -520 l 180 -520 l 180 -108 b 248 -115 203 -112 225 -115 b 271 -112 256 -115 264 -115 l 271 -517 l 315 -517 l 315 -107 b 449 68 405 -89 449 -30 l 405 68 b 297 -4 405 19 369 -4 b 23 248 131 -4 56 85 l 0 248 l 0 -517 z',\n },\n accSagittalFlat5v7kDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 361,\n ha: 533,\n o: 'm 0 517 l 0 -248 l 23 -248 b 297 4 56 -85 131 4 b 405 -68 369 4 405 -19 l 449 -68 b 315 107 449 30 405 89 l 315 517 l 271 517 l 271 112 b 248 115 264 115 256 115 b 180 108 225 115 203 112 l 180 520 l 135 520 l 135 92 b 45 10 98 75 68 48 l 45 517 z',\n },\n accSagittalSharp5CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -266 l 135 -153 l 135 -517 l 180 -517 l 180 -115 l 271 -39 l 271 -517 l 315 -517 l 315 0 l 405 75 l 405 -517 l 449 -517 l 449 248 l 428 248 l 0 -112 z',\n },\n accSagittalFlat5CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 428 -248 l 449 -248 l 449 517 l 405 517 l 405 -75 l 315 0 l 315 517 l 271 517 l 271 39 l 180 115 l 180 517 l 135 517 l 135 153 l 0 266 z',\n },\n accSagittalSharp7CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 112 l 135 112 l 135 -517 l 180 -517 l 180 108 b 271 89 213 105 243 99 l 271 -517 l 315 -517 l 315 73 b 405 -68 374 45 405 -3 l 405 -248 l 449 -248 l 449 68 b 135 248 449 187 346 248 l 0 248 z',\n },\n accSagittalFlat7CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 135 -248 b 449 -68 346 -248 449 -187 l 449 248 l 405 248 l 405 68 b 315 -73 405 3 374 -45 l 315 517 l 271 517 l 271 -89 b 180 -108 243 -99 213 -105 l 180 517 l 135 517 l 135 -112 l 45 -112 l 45 517 l 0 517 z',\n },\n accSagittalSharp25SUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -30 l 495 143 l 495 14 l 0 -157 l 0 -255 l 225 -177 l 225 -517 l 271 -517 l 271 -161 l 360 -130 l 360 -517 l 405 -517 l 405 -115 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 517 248 l 0 68 z',\n },\n accSagittalFlat25SDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 l 517 -248 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 115 l 405 517 l 360 517 l 360 130 l 271 161 l 271 517 l 225 517 l 225 177 l 0 255 l 0 157 l 495 -14 l 495 -143 l 0 30 z',\n },\n accSagittalSharp35MUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -274 l 135 -108 l 135 -517 l 180 -517 l 180 -53 l 271 58 l 271 -517 l 315 -517 l 315 112 l 360 112 b 405 109 376 112 390 112 l 405 -517 l 449 -517 l 449 96 b 540 -68 510 72 540 17 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 z',\n },\n accSagittalFlat35MDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 292 -248 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 449 -96 540 -17 510 -72 l 449 517 l 405 517 l 405 -109 b 360 -112 390 -112 376 -112 l 315 -112 l 315 517 l 271 517 l 271 -58 l 180 53 l 180 517 l 135 517 l 135 108 l 0 274 l 0 112 z',\n },\n accSagittalSharp11MUp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -271 l 180 -79 l 180 -517 l 225 -517 l 225 -30 l 315 65 l 315 -517 l 360 -517 l 360 65 l 449 -30 l 449 -517 l 495 -517 l 495 -79 l 675 -271 l 675 -112 l 337 248 z',\n },\n accSagittalFlat11MDown: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 337 -248 l 675 112 l 675 271 l 495 79 l 495 517 l 449 517 l 449 30 l 360 -65 l 360 517 l 315 517 l 315 -65 l 225 30 l 225 517 l 180 517 l 180 79 l 0 271 l 0 112 z',\n },\n accSagittalSharp11LUp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 112 l 449 112 l 449 -517 l 495 -517 l 495 104 b 631 -68 585 82 631 26 l 631 -248 l 675 -248 l 675 68 b 449 248 675 187 600 248 l 225 248 b 0 68 75 248 0 187 z',\n },\n accSagittalFlat11LDown: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 449 -248 b 675 -68 600 -248 675 -187 l 675 248 l 631 248 l 631 68 b 495 -104 631 -26 585 -82 l 495 517 l 449 517 l 449 -112 l 360 -112 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z',\n },\n accSagittalSharp35LUp: {\n x_min: 0,\n x_max: 500,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 71 l 452 -17 l 452 -517 l 495 -517 l 495 -56 l 720 -268 l 720 -112 l 337 248 l 225 248 b 0 68 75 248 0 187 z',\n },\n accSagittalFlat35LDown: {\n x_min: 0,\n x_max: 500,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 l 720 112 l 720 268 l 495 56 l 495 517 l 452 517 l 452 17 l 360 -71 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z',\n },\n accSagittalDoubleSharp25SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 135 -112 0 -53 45 -112 b 243 -62 180 -112 215 -95 l 89 -503 l 143 -517 l 292 -82 l 445 -517 l 495 -503 l 343 -62 b 449 -112 372 -95 408 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 315 148 b 112 -4 274 148 236 -4 b 45 68 68 -4 45 20 z',\n },\n accSagittalDoubleFlat25SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 112 4 45 -20 68 4 b 292 -248 236 4 274 -148 b 475 4 315 -148 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 b 343 62 408 112 372 95 l 495 503 l 445 517 l 292 82 l 143 517 l 89 503 l 243 62 b 135 112 215 95 180 112 b 0 -68 45 112 0 53 z',\n },\n accSagittalDoubleSharp7CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -503 l 52 -517 l 203 -82 l 354 -517 l 405 -503 l 230 0 l 271 108 b 495 -68 420 92 495 35 l 495 -248 l 540 -248 l 540 68 b 225 248 540 187 435 248 l 89 248 l 89 112 l 135 112 l 174 0 z m 213 112 l 203 82 l 192 112 z',\n },\n accSagittalDoubleFlat7CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 174 0 l 135 -112 l 89 -112 l 89 -248 l 225 -248 b 540 -68 435 -248 540 -187 l 540 248 l 495 248 l 495 68 b 271 -108 495 -35 420 -92 l 230 0 l 405 503 l 354 517 l 203 82 l 52 517 l 0 503 z m 192 -112 l 203 -82 l 213 -112 z',\n },\n accSagittalDoubleSharp5CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 405 -503 l 230 0 l 232 4 l 585 -264 l 585 -112 l 112 248 l 89 248 l 89 112 l 151 68 l 174 0 l 0 -503 l 52 -517 l 203 -82 l 354 -517 z',\n },\n accSagittalDoubleFlat5CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 354 517 l 203 82 l 52 517 l 0 503 l 174 0 l 151 -68 l 89 -112 l 89 -248 l 112 -248 l 585 112 l 585 264 l 232 -4 l 230 0 l 405 503 z',\n },\n accSagittalDoubleSharp5v7kDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -274 l 252 35 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 360 112 b 540 -68 480 112 540 53 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 l 0 -112 z',\n },\n accSagittalDoubleFlat5v7kUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 292 -248 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 360 -112 540 -53 480 -112 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 252 -35 l 0 274 z',\n },\n accSagittalDoubleSharp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 540 -503 l 366 0 l 380 45 l 675 -271 l 675 -112 l 337 248 l 0 -112 l 0 -271 l 295 45 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 z',\n },\n accSagittalDoubleFlat: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 295 -45 l 0 271 l 0 112 l 337 -248 l 675 112 l 675 271 l 380 -45 l 366 0 l 540 503 z',\n },\n accSagittal7v11KleismaUp: {\n x_min: 0,\n x_max: 219,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 68 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 -45 b 248 -112 200 -89 225 -112 b 315 68 292 -112 315 -53 l 271 68 b 248 -4 271 20 264 -4 b 236 0 245 -4 240 -3 b 157 248 213 14 187 96 b 78 0 127 96 101 14 b 65 -4 73 -3 68 -4 b 45 68 50 -4 45 20 l 0 68 b 68 -112 0 -53 23 -112 z',\n },\n accSagittal7v11KleismaDown: {\n x_min: 0,\n x_max: 219,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 68 112 b 0 -68 23 112 0 53 l 45 -68 b 65 4 45 -20 50 4 b 78 0 68 4 73 3 b 157 -248 101 -14 127 -96 b 236 0 187 -96 213 -14 b 248 4 240 3 245 4 b 271 -68 264 4 271 -20 l 315 -68 b 248 112 315 53 292 112 b 180 45 225 112 200 89 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 z',\n },\n accSagittal17CommaUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 -40 b 315 -118 248 -92 279 -118 b 405 62 374 -118 405 -59 l 360 62 b 324 -10 360 14 348 -10 b 302 -6 318 -10 311 -9 b 206 217 268 9 235 84 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z',\n },\n accSagittal17CommaDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 206 -217 b 302 6 235 -84 268 -9 b 324 10 311 9 318 10 b 360 -62 348 10 360 -14 l 405 -62 b 315 118 405 59 374 118 b 225 40 279 118 248 92 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal55CommaUp: {\n x_min: 0,\n x_max: 219,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 248 l 0 -517 l 45 -517 l 45 58 l 315 -274 l 315 -112 l 23 248 z',\n },\n accSagittal55CommaDown: {\n x_min: 0,\n x_max: 219,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 23 -248 l 315 112 l 315 274 l 45 -58 l 45 517 l 0 517 l 0 -248 z',\n },\n accSagittal7v11CommaUp: {\n x_min: 0,\n x_max: 188,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 248 l 135 248 b 0 68 45 248 0 187 z',\n },\n accSagittal7v11CommaDown: {\n x_min: 0,\n x_max: 188,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 271 -248 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittal5v11SmallDiesisUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 73 l 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 -40 b 360 -118 295 -92 325 -118 b 449 62 420 -118 449 -59 l 405 62 b 369 -10 405 14 393 -10 b 348 -6 363 -10 356 -9 b 251 217 312 9 279 84 l 248 248 l 135 248 b 0 73 45 248 0 189 z',\n },\n accSagittal5v11SmallDiesisDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -73 b 135 -248 0 -189 45 -248 l 248 -248 l 251 -217 b 348 6 279 -84 312 -9 b 369 10 356 9 363 10 b 405 -62 393 10 405 -14 l 449 -62 b 360 118 449 59 420 118 b 271 40 325 118 295 92 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittalSharp5v11SDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 242 37 203 -23 225 -3 b 315 -89 262 -23 285 -63 l 315 -517 l 360 -517 l 360 -112 l 383 -112 b 495 68 458 -112 495 -53 l 449 68 b 399 -4 449 20 433 -4 b 248 248 297 -4 261 171 b 157 68 222 127 192 68 l 89 68 b 0 -203 30 68 0 -23 z',\n },\n accSagittalFlat5v11SUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -127 b 399 4 261 -171 297 4 b 449 -68 433 4 449 -20 l 495 -68 b 383 112 495 53 458 112 l 360 112 l 360 517 l 315 517 l 315 89 b 242 -37 285 63 262 23 b 180 23 225 3 203 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z',\n },\n accSagittalSharp7v11CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -112 l 89 -517 l 135 -517 l 135 -95 b 206 37 163 -73 187 -30 b 271 -23 225 -3 248 -23 l 271 -517 l 315 -517 l 315 -23 l 383 -23 b 449 -203 428 -23 449 -84 l 495 -203 b 405 68 495 -23 465 68 l 292 68 b 203 248 258 68 228 127 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 20 l 0 68 b 89 -112 0 -52 30 -112 z',\n },\n accSagittalFlat7v11CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 112 b 0 -68 30 112 0 52 l 45 -68 b 81 3 45 -20 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 b 292 -68 228 -127 258 -68 l 405 -68 b 495 203 465 -68 495 23 l 449 203 b 383 23 449 84 428 23 l 315 23 l 315 517 l 271 517 l 271 23 b 206 -37 248 23 225 3 b 135 95 187 30 163 73 l 135 517 l 89 517 z',\n },\n accSagittalSharp55CDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -271 l 135 -125 l 135 -517 l 180 -517 l 180 -78 l 315 65 l 315 -517 l 360 -517 l 360 248 l 337 248 l 0 -112 z',\n },\n accSagittalFlat55CUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 337 -248 l 360 -248 l 360 517 l 315 517 l 315 -65 l 180 78 l 180 517 l 135 517 l 135 125 l 0 271 z',\n },\n accSagittalSharp17CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -248 l 45 -68 b 180 109 45 36 89 95 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -89 292 13 321 -55 l 360 -517 l 405 -517 l 405 -112 l 428 -112 b 540 68 504 -112 540 -53 l 495 68 b 445 -4 495 20 480 -4 b 292 248 343 -4 307 171 l 180 248 b 0 68 60 248 0 187 l 0 -248 z',\n },\n accSagittalFlat17CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 248 l 0 -68 b 180 -248 0 -187 60 -248 l 292 -248 b 445 4 307 -171 343 4 b 495 -68 480 4 495 -20 l 540 -68 b 428 112 540 53 504 112 l 405 112 l 405 517 l 360 517 l 360 89 b 271 -112 321 55 292 -13 l 225 -112 l 225 517 l 180 517 l 180 -109 b 45 68 89 -95 45 -36 l 45 248 z',\n },\n accSagittalSharp7v11kDown: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -32 l 405 138 l 405 13 l 0 -157 l 0 -256 l 225 -161 l 225 -517 l 271 -517 l 271 -144 l 405 -86 l 405 -517 l 449 -517 l 449 248 l 428 248 l 0 68 z',\n },\n accSagittalFlat7v11kUp: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 l 428 -248 l 449 -248 l 449 517 l 405 517 l 405 86 l 271 144 l 271 517 l 225 517 l 225 161 l 0 256 l 0 157 l 405 -13 l 405 -138 l 0 32 z',\n },\n accSagittalSharp7v11kUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 135 -112 l 135 -517 l 180 -517 l 180 -105 b 271 -23 217 -94 248 -65 l 271 -517 l 315 -517 l 315 -23 b 405 -105 337 -65 369 -94 l 405 -517 l 449 -517 l 449 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 315 148 b 112 -4 274 148 236 -4 b 45 68 68 -4 45 20 l 0 68 b 135 -112 0 -53 45 -112 z',\n },\n accSagittalFlat7v11kDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 135 112 b 0 -68 45 112 0 53 l 45 -68 b 112 4 45 -20 68 4 b 292 -248 236 4 274 -148 b 475 4 315 -148 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 l 449 517 l 405 517 l 405 105 b 315 23 369 94 337 65 l 315 517 l 271 517 l 271 23 b 180 105 248 65 217 94 l 180 517 l 135 517 z',\n },\n accSagittalSharp17CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 -23 b 405 -105 337 -65 369 -94 l 405 -517 l 449 -517 l 449 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 312 150 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalFlat17CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 b 475 4 312 -150 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 l 449 517 l 405 517 l 405 105 b 315 23 369 94 337 65 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp55CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -517 l 45 78 l 135 10 l 135 -517 l 180 -517 l 180 -23 l 271 -92 l 271 -517 l 315 -517 l 315 -127 l 495 -264 l 495 -112 l 23 248 l 0 248 l 0 -517 z',\n },\n accSagittalFlat55CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 517 l 0 -248 l 23 -248 l 495 112 l 495 264 l 315 127 l 315 517 l 271 517 l 271 92 l 180 23 l 180 517 l 135 517 l 135 -10 l 45 -78 l 45 517 z',\n },\n accSagittalSharp7v11CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 86 45 6 89 58 l 180 -517 l 225 -517 l 225 98 b 315 109 252 104 282 108 l 315 -517 l 360 -517 l 360 112 l 449 112 l 449 -517 l 495 -517 l 495 248 l 360 248 b 0 68 121 248 0 189 z',\n },\n accSagittalFlat7v11CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 360 -248 0 -189 121 -248 l 495 -248 l 495 517 l 449 517 l 449 -112 l 360 -112 l 360 517 l 315 517 l 315 -109 b 225 -98 282 -108 252 -104 l 225 517 l 180 517 l 180 -86 b 45 68 89 -58 45 -6 l 45 248 l 0 248 z',\n },\n accSagittalSharp5v11SUp: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 -23 b 449 -105 383 -65 415 -94 l 449 -517 l 495 -517 l 495 -112 b 631 68 585 -112 631 -53 l 585 68 b 520 -4 585 20 563 -4 b 337 248 396 -4 360 150 l 225 248 b 0 68 76 248 0 187 z',\n },\n accSagittalFlat5v11SDown: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 76 -248 l 337 -248 b 520 4 360 -150 396 4 b 585 -68 563 4 585 -20 l 631 -68 b 495 112 631 53 585 112 l 495 517 l 449 517 l 449 105 b 360 23 415 94 383 65 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z',\n },\n accSagittalDoubleSharp5v11SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 341 -60 b 449 -112 370 -95 405 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 312 150 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalDoubleFlat5v11SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 b 475 4 312 -150 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 b 341 60 405 112 370 95 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalDoubleSharp7v11CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 112 -112 b 193 -73 143 -112 170 -99 l 45 -501 l 95 -517 l 248 -81 l 397 -517 l 449 -503 l 275 0 l 278 4 b 337 -23 295 -13 315 -23 l 405 -23 b 495 -203 465 -23 495 -84 l 540 -203 b 428 68 540 -23 503 68 l 360 68 b 248 248 310 68 271 127 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 112 -112 0 -52 36 -112 z',\n },\n accSagittalDoubleFlat7v11CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 112 112 b 0 -68 36 112 0 52 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 b 360 -68 271 -127 310 -68 l 428 -68 b 540 203 503 -68 540 23 l 495 203 b 405 23 495 84 465 23 l 337 23 b 278 -4 315 23 295 13 l 275 0 l 449 503 l 397 517 l 248 81 l 95 517 l 45 501 l 193 73 b 112 112 170 99 143 112 z',\n },\n accSagittalDoubleSharp55CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 428 248 l 0 -112 l 0 -266 l 307 -7 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 386 59 l 449 112 l 449 248 z',\n },\n accSagittalDoubleFlat55CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 449 -248 l 449 -112 l 386 -59 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 307 7 l 0 266 l 0 112 l 428 -248 z',\n },\n accSagittalDoubleSharp17CDown: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -248 l 45 -68 b 271 112 45 53 120 112 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 387 -62 b 495 -112 416 -95 452 -112 b 631 68 585 -112 631 -53 l 585 68 b 520 -4 585 20 563 -4 b 337 248 396 -4 360 150 l 225 248 b 0 68 76 248 0 187 l 0 -248 z',\n },\n accSagittalDoubleFlat17CUp: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 248 l 0 -68 b 225 -248 0 -187 76 -248 l 337 -248 b 520 4 360 -150 396 4 b 585 -68 563 4 585 -20 l 631 -68 b 495 112 631 53 585 112 b 387 62 452 112 416 95 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 271 -112 b 45 68 120 -112 45 -53 l 45 248 z',\n },\n accSagittalDoubleSharp7v11kDown: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -30 l 366 96 l 399 0 l 392 -23 l 0 -157 l 0 -255 l 353 -135 l 225 -503 l 276 -517 l 428 -82 l 579 -517 l 631 -503 l 455 0 l 507 145 l 540 157 l 540 248 l 517 248 z m 416 115 l 442 124 l 428 82 z',\n },\n accSagittalDoubleFlat7v11kUp: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 517 -248 l 540 -248 l 540 -157 l 507 -145 l 455 0 l 631 503 l 579 517 l 428 82 l 276 517 l 225 503 l 353 135 l 0 255 l 0 157 l 392 23 l 399 0 l 366 -96 l 0 30 l 0 -68 z m 428 -82 l 442 -124 l 416 -115 z',\n },\n accSagittal23CommaUp: {\n x_min: 0,\n x_max: 188,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -4 b 68 -23 53 -17 60 -23 l 180 -23 b 225 -203 210 -23 225 -82 l 271 -203 b 206 68 271 -23 248 68 l 89 68 b 23 248 71 68 48 127 l 0 248 z',\n },\n accSagittal23CommaDown: {\n x_min: 0,\n x_max: 188,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 b 89 -68 48 -127 71 -68 l 206 -68 b 271 203 248 -68 271 23 l 225 203 b 180 23 225 82 210 23 l 68 23 b 45 4 60 23 53 17 l 45 517 l 0 517 z',\n },\n accSagittal5v19CommaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 248 l 203 248 b 86 112 151 157 112 112 b 45 157 59 112 45 127 l 0 157 b 76 23 0 72 26 27 l 0 -112 z',\n },\n accSagittal5v19CommaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 76 -23 b 0 -157 26 -27 0 -72 l 45 -157 b 86 -112 45 -127 59 -112 b 203 -248 112 -112 151 -157 l 225 -248 l 225 517 l 180 517 l 180 -33 l 0 284 z',\n },\n accSagittal5v23SmallDiesisUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 -4 b 248 -23 233 -17 240 -23 l 360 -23 b 405 -203 390 -23 405 -82 l 449 -203 b 386 68 449 -23 428 68 l 271 68 b 203 248 251 68 228 127 l 0 -112 z',\n },\n accSagittal5v23SmallDiesisDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 203 -248 b 271 -68 228 -127 251 -68 l 386 -68 b 449 203 428 -68 449 23 l 405 203 b 360 23 405 82 390 23 l 248 23 b 225 4 240 23 233 17 l 225 517 l 180 517 l 180 -33 l 0 284 z',\n },\n accSagittalSharp5v23SDown: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 6 b 89 -23 59 -13 73 -23 l 180 -23 l 180 -517 l 225 -517 l 225 -23 l 292 -23 b 360 -203 337 -23 360 -84 l 405 -203 b 315 68 405 -23 374 68 l 112 68 b 23 248 78 68 48 127 l 0 248 z',\n },\n accSagittalFlat5v23SUp: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 b 112 -68 48 -127 78 -68 l 315 -68 b 405 203 374 -68 405 23 l 360 203 b 292 23 360 84 337 23 l 225 23 l 225 517 l 180 517 l 180 23 l 89 23 b 45 -6 73 23 59 13 l 45 517 l 0 517 z',\n },\n accSagittalSharp5v19CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 89 -112 0 -52 30 -112 l 89 -517 l 135 -517 l 135 -95 b 225 112 173 -65 203 4 l 271 112 l 271 -517 l 315 -517 l 315 107 b 405 -68 374 89 405 30 l 405 -248 l 449 -248 l 449 68 b 315 248 449 189 405 248 l 203 248 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 23 z',\n },\n accSagittalFlat5v19CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 81 3 45 -23 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 l 315 -248 b 449 -68 405 -248 449 -189 l 449 248 l 405 248 l 405 68 b 315 -107 405 -30 374 -89 l 315 517 l 271 517 l 271 -112 l 225 -112 b 135 95 203 -4 173 65 l 135 517 l 89 517 l 89 112 b 0 -68 30 112 0 52 z',\n },\n accSagittalSharp23CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 135 -82 l 135 -517 l 180 -517 l 180 -17 l 239 68 b 315 -23 261 7 287 -23 l 315 -517 l 360 -517 l 360 -23 l 428 -23 b 495 -203 472 -23 495 -84 l 540 -203 b 449 68 540 -23 510 68 l 337 68 b 248 248 302 68 271 127 l 0 -112 l 0 -276 z',\n },\n accSagittalFlat23CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 276 l 0 112 l 248 -248 b 337 -68 271 -127 302 -68 l 449 -68 b 540 203 510 -68 540 23 l 495 203 b 428 23 495 84 472 23 l 360 23 l 360 517 l 315 517 l 315 23 b 239 -68 287 23 261 -7 l 180 17 l 180 517 l 135 517 l 135 82 z',\n },\n accSagittalSharp23CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 14 b 112 -23 63 -10 86 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 360 -23 b 449 -203 420 -23 449 -84 l 495 -203 b 383 68 495 -23 458 68 l 135 68 b 23 248 85 68 48 127 l 0 248 z',\n },\n accSagittalFlat23CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 b 135 -68 48 -127 85 -68 l 383 -68 b 495 203 458 -68 495 23 l 449 203 b 360 23 449 84 420 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 -14 86 23 63 10 l 45 517 l 0 517 z',\n },\n accSagittalSharp5v19CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -266 l 135 -153 l 135 -517 l 180 -517 l 180 -115 l 271 -39 l 271 -517 l 315 -517 l 315 0 l 405 75 l 405 -517 l 449 -517 l 449 248 l 428 248 b 130 68 285 127 186 68 b 45 157 73 68 45 98 l 0 157 b 112 -20 0 53 37 -6 z',\n },\n accSagittalFlat5v19CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 112 20 b 0 -157 37 6 0 -53 l 45 -157 b 130 -68 45 -98 73 -68 b 428 -248 186 -68 285 -127 l 449 -248 l 449 517 l 405 517 l 405 -75 l 315 0 l 315 517 l 271 517 l 271 39 l 180 115 l 180 517 l 135 517 l 135 153 l 0 266 l 0 112 z',\n },\n accSagittalSharp5v23SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 135 -108 l 135 -517 l 180 -517 l 180 -53 l 271 58 l 271 -517 l 315 -517 l 315 14 b 383 -23 334 -10 357 -23 l 405 -23 l 405 -517 l 449 -517 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 405 68 b 292 248 356 68 318 127 l 0 -112 l 0 -274 z',\n },\n accSagittalFlat5v23SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 274 l 0 112 l 292 -248 b 405 -68 318 -127 356 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 449 517 l 405 517 l 405 23 l 383 23 b 315 -14 357 23 334 10 l 315 517 l 271 517 l 271 -58 l 180 53 l 180 517 l 135 517 l 135 108 z',\n },\n accSagittalDoubleSharp5v23SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 52 -517 l 203 -81 l 354 -517 l 405 -503 l 239 -23 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 225 68 b 112 248 176 68 138 127 l 89 248 l 89 112 b 170 -14 109 45 135 0 l 0 -501 z',\n },\n accSagittalDoubleFlat5v23SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 501 l 170 14 b 89 -112 135 0 109 -45 l 89 -248 l 112 -248 b 225 -68 138 -127 176 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 239 23 l 405 503 l 354 517 l 203 81 l 52 517 z',\n },\n accSagittalDoubleSharp5v19CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 112 -112 0 -52 36 -112 b 193 -73 143 -112 170 -99 l 45 -501 l 95 -517 l 248 -81 l 397 -517 l 449 -501 l 275 0 l 315 112 b 495 -68 435 112 495 53 l 495 -248 l 540 -248 l 540 68 b 360 248 540 189 480 248 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 z',\n },\n accSagittalDoubleFlat5v19CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 360 -248 b 540 -68 480 -248 540 -189 l 540 248 l 495 248 l 495 68 b 315 -112 495 -53 435 -112 l 275 0 l 449 501 l 397 517 l 248 81 l 95 517 l 45 501 l 193 73 b 112 112 170 99 143 112 b 0 -68 36 112 0 52 z',\n },\n accSagittalDoubleSharp23CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 252 35 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 323 4 b 383 -23 340 -13 360 -23 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 405 68 b 292 248 356 68 318 127 l 0 -112 l 0 -274 z',\n },\n accSagittalDoubleFlat23CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 274 l 0 112 l 292 -248 b 405 -68 318 -127 356 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 383 23 b 323 -4 360 23 340 13 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 252 -35 z',\n },\n accSagittal19SchismaUp: {\n x_min: 0,\n x_max: 125,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 68 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 248 l 157 248 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 l 0 68 b 68 -112 0 -52 23 -112 z',\n },\n accSagittal19SchismaDown: {\n x_min: 0,\n x_max: 125,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 68 112 b 0 -68 23 112 0 52 l 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 l 180 -248 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 z',\n },\n accSagittal17KleismaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 248 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z',\n },\n accSagittal17KleismaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 225 -248 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal143CommaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -203 l 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 248 l 203 248 b 135 68 177 127 154 68 l 105 68 b 45 157 65 68 45 98 l 0 157 b 23 20 0 95 7 50 b 0 -203 7 -23 0 -98 z',\n },\n accSagittal143CommaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 23 -20 0 98 7 23 b 0 -157 7 -50 0 -95 l 45 -157 b 105 -68 45 -98 65 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 225 -248 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal11v49CommaUp: {\n x_min: 0,\n x_max: 188,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -292 b 89 -157 45 -203 60 -157 l 203 -157 b 225 -143 210 -157 217 -153 l 225 -517 l 271 -517 l 271 248 l 248 248 b 180 157 233 187 210 157 l 68 157 b 0 -68 23 157 0 82 l 45 -68 b 89 68 45 23 60 68 l 203 68 b 225 84 209 68 216 72 l 225 -36 b 180 -68 213 -58 199 -68 l 68 -68 b 0 -292 23 -68 0 -143 z',\n },\n accSagittal11v49CommaDown: {\n x_min: 0,\n x_max: 188,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 292 b 68 68 0 143 23 68 l 180 68 b 225 36 199 68 213 58 l 225 -84 b 203 -68 216 -72 209 -68 l 89 -68 b 45 68 60 -68 45 -23 l 0 68 b 68 -157 0 -82 23 -157 l 180 -157 b 248 -248 210 -157 233 -187 l 271 -248 l 271 517 l 225 517 l 225 143 b 203 157 217 153 210 157 l 89 157 b 45 292 60 157 45 203 z',\n },\n accSagittal19CommaUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 68 -112 0 -52 23 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 -4 b 203 -23 187 -17 196 -23 l 315 -23 b 360 -203 346 -23 360 -82 l 405 -203 b 341 68 405 -23 383 68 l 225 68 b 157 248 206 68 183 127 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 z',\n },\n accSagittal19CommaDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 b 225 -68 183 -127 206 -68 l 341 -68 b 405 203 383 -68 405 23 l 360 203 b 315 23 360 82 346 23 l 203 23 b 180 4 196 23 187 17 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 b 0 -68 23 112 0 52 z',\n },\n accSagittal7v19CommaUp: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 68 -112 0 -52 23 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 112 l 225 112 b 315 -68 285 112 315 53 l 315 -248 l 360 -248 l 360 68 b 271 248 360 187 330 248 l 157 248 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 z',\n },\n accSagittal7v19CommaDown: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 l 271 -248 b 360 -68 330 -248 360 -187 l 360 248 l 315 248 l 315 68 b 225 -112 315 -53 285 -112 l 180 -112 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 b 0 -68 23 112 0 52 z',\n },\n accSagittal49SmallDiesisUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -203 l 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -68 330 112 360 53 l 360 -248 l 405 -248 l 405 68 b 315 248 405 187 374 248 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z',\n },\n accSagittal49SmallDiesisDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 315 -248 b 405 -68 374 -248 405 -187 l 405 248 l 360 248 l 360 68 b 271 -112 360 -53 330 -112 l 225 -112 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal23SmallDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 58 l 495 -274 l 495 -112 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z',\n },\n accSagittal23SmallDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 495 112 l 495 274 l 225 -58 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal5v13MediumDiesisUp: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -259 l 315 -89 l 315 -517 l 360 -517 l 360 248 l 337 248 b 128 180 253 203 184 180 b 45 248 73 180 45 203 l 0 248 b 52 95 0 170 17 120 l 0 68 l 0 -33 l 315 135 l 315 10 l 0 -157 z',\n },\n accSagittal5v13MediumDiesisDown: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 157 l 315 -10 l 315 -135 l 0 33 l 0 -68 l 52 -95 b 0 -248 17 -120 0 -170 l 45 -248 b 128 -180 45 -203 73 -180 b 337 -248 184 -180 253 -203 l 360 -248 l 360 517 l 315 517 l 315 89 l 0 259 z',\n },\n accSagittal11v19MediumDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 -4 b 292 -23 278 -17 285 -23 l 405 -23 b 449 -203 435 -23 449 -82 l 495 -203 b 431 68 495 -23 472 68 l 315 68 b 248 248 295 68 271 127 l 135 248 b 0 68 45 248 0 187 l 0 -248 z',\n },\n accSagittal11v19MediumDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 248 l 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 b 315 -68 271 -127 295 -68 l 431 -68 b 495 203 472 -68 495 23 l 449 203 b 405 23 449 82 435 23 l 292 23 b 271 4 285 23 278 17 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 z',\n },\n accSagittal49MediumDiesisUp: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -68 l 0 -248 l 45 -248 l 315 -94 l 315 -517 l 360 -517 l 360 248 l 225 248 b 0 -68 75 248 0 143 z m 45 -68 b 225 112 45 53 105 112 l 315 112 l 315 10 l 45 -145 z',\n },\n accSagittal49MediumDiesisDown: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 68 b 225 -248 0 -143 75 -248 l 360 -248 l 360 517 l 315 517 l 315 94 l 45 248 l 0 248 z m 45 145 l 315 -10 l 315 -112 l 225 -112 b 45 68 105 -112 45 -53 z',\n },\n accSagittal5v49MediumDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -89 l 0 -248 l 225 53 l 225 -517 l 271 -517 l 271 53 l 495 -248 l 495 -89 l 248 248 b 89 89 170 143 118 89 b 45 157 60 89 45 112 l 0 157 b 68 3 0 68 23 16 z',\n },\n accSagittal5v49MediumDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 68 -3 b 0 -157 23 -16 0 -68 l 45 -157 b 89 -89 45 -112 60 -89 b 248 -248 118 -89 170 -143 l 495 89 l 495 248 l 271 -53 l 271 517 l 225 517 l 225 -53 l 0 248 l 0 89 z',\n },\n accSagittal49LargeDiesisUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -89 l 360 -248 l 405 -248 l 405 -68 b 180 248 405 143 330 248 l 0 248 z m 45 12 l 45 112 l 180 112 b 360 -68 300 112 360 53 l 360 -147 z',\n },\n accSagittal49LargeDiesisDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 180 -248 b 405 68 330 -248 405 -143 l 405 248 l 360 248 l 45 89 l 45 517 l 0 517 z m 360 147 l 360 68 b 180 -112 360 -53 300 -112 l 45 -112 l 45 -12 z',\n },\n accSagittal11v19LargeDiesisUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -86 l 449 -256 l 449 -157 l 45 13 l 45 138 l 449 -30 l 449 68 l 23 248 l 0 248 z',\n },\n accSagittal11v19LargeDiesisDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 l 449 -68 l 449 30 l 45 -138 l 45 -13 l 449 157 l 449 256 l 45 86 l 45 517 l 0 517 z',\n },\n accSagittal5v13LargeDiesisUp: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 89 -112 0 -52 30 -112 b 180 -35 125 -112 157 -86 l 180 -517 l 225 -517 l 225 -86 l 631 -256 l 631 -157 l 225 13 l 225 138 l 631 -30 l 631 68 l 203 248 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 20 z',\n },\n accSagittal5v13LargeDiesisDown: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 81 3 45 -20 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 l 631 -68 l 631 30 l 225 -138 l 225 -13 l 631 157 l 631 256 l 225 86 l 225 517 l 180 517 l 180 35 b 89 112 157 86 125 112 b 0 -68 30 112 0 52 z',\n },\n accSagittalSharp23SDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -203 l 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 b 315 6 287 -23 301 -13 l 315 -517 l 360 -517 l 360 248 l 337 248 b 248 68 312 127 282 68 l 194 68 b 89 157 125 68 89 98 l 45 157 b 60 59 45 118 50 85 b 0 -203 20 30 0 -56 z',\n },\n accSagittalFlat23SUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 60 -59 0 56 20 -30 b 45 -157 50 -85 45 -118 l 89 -157 b 194 -68 89 -98 125 -68 l 248 -68 b 337 -248 282 -68 312 -127 l 360 -248 l 360 517 l 315 517 l 315 -6 b 271 23 301 13 287 23 l 180 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z',\n },\n accSagittalSharp49SDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -292 l 45 -292 b 112 -157 45 -203 68 -157 l 135 -157 l 135 -517 l 180 -517 l 180 -157 l 271 -157 b 315 -135 285 -157 300 -150 l 315 -517 l 360 -517 l 360 248 l 337 248 b 248 157 323 187 292 157 l 89 157 b 0 -68 30 157 0 82 l 45 -68 b 112 68 45 23 68 68 l 271 68 b 315 89 284 68 300 75 l 315 -32 b 248 -68 298 -56 275 -68 l 89 -68 b 0 -292 29 -68 0 -143 z',\n },\n accSagittalFlat49SUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 292 b 89 68 0 143 29 68 l 248 68 b 315 32 275 68 298 56 l 315 -89 b 271 -68 300 -75 284 -68 l 112 -68 b 45 68 68 -68 45 -23 l 0 68 b 89 -157 0 -82 30 -157 l 248 -157 b 337 -248 292 -157 323 -187 l 360 -248 l 360 517 l 315 517 l 315 135 b 271 157 300 150 285 157 l 180 157 l 180 517 l 135 517 l 135 157 l 112 157 b 45 292 68 157 45 203 z',\n },\n accSagittalSharp7v19CDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -271 l 135 -125 l 135 -517 l 180 -517 l 180 -78 l 315 65 l 315 -517 l 360 -517 l 360 248 l 337 248 b 118 89 239 143 166 89 b 45 157 68 89 45 112 l 0 157 b 89 -20 0 53 29 -6 z',\n },\n accSagittalFlat7v19CUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 20 b 0 -157 29 6 0 -53 l 45 -157 b 118 -89 45 -112 68 -89 b 337 -248 166 -89 239 -143 l 360 -248 l 360 517 l 315 517 l 315 -65 l 180 78 l 180 517 l 135 517 l 135 125 l 0 271 l 0 112 z',\n },\n accSagittalSharp19CDown: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 96 45 17 89 72 l 180 -517 l 225 -517 l 225 107 b 315 112 252 112 282 112 l 360 112 l 360 -517 l 405 -517 l 405 248 l 271 248 b 0 68 89 248 0 187 z',\n },\n accSagittalFlat19CUp: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 271 -248 0 -187 89 -248 l 405 -248 l 405 517 l 360 517 l 360 -112 l 315 -112 b 225 -107 282 -112 252 -112 l 225 517 l 180 517 l 180 -96 b 45 68 89 -72 45 -17 l 45 248 l 0 248 z',\n },\n accSagittalSharp11v49CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 112 -23 45 -82 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 271 112 215 -23 245 23 l 315 112 l 315 -517 l 360 -517 l 360 107 b 449 -68 420 89 449 30 l 449 -248 l 495 -248 l 495 68 b 360 248 495 189 449 248 l 248 248 b 157 68 222 128 192 68 l 89 68 b 0 -203 30 68 0 -23 z',\n },\n accSagittalFlat11v49CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -128 l 360 -248 b 495 -68 449 -248 495 -189 l 495 248 l 449 248 l 449 68 b 360 -107 449 -30 420 -89 l 360 517 l 315 517 l 315 -112 l 271 -112 b 180 23 245 -23 215 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 82 z',\n },\n accSagittalSharp143CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 259 76 210 -23 236 10 l 315 17 l 315 -517 l 360 -517 l 360 -30 l 585 -271 l 585 -112 l 248 248 b 157 68 222 127 192 68 l 89 68 b 0 -203 30 68 0 -23 z',\n },\n accSagittalFlat143CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -127 l 585 112 l 585 271 l 360 30 l 360 517 l 315 517 l 315 -17 l 259 -76 b 180 23 236 -10 210 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z',\n },\n accSagittalSharp17kDown: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -157 l 0 -256 l 225 -161 l 225 -517 l 271 -517 l 271 -144 l 405 -86 l 405 -517 l 449 -517 l 449 248 l 428 248 b 145 171 305 196 210 171 b 45 248 78 171 45 196 l 0 248 b 79 101 0 170 26 121 l 0 68 l 0 -32 l 405 138 l 405 13 z',\n },\n accSagittalFlat17kUp: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 405 -13 l 405 -138 l 0 32 l 0 -68 l 79 -101 b 0 -248 26 -121 0 -170 l 45 -248 b 145 -171 45 -196 78 -171 b 428 -248 210 -171 305 -196 l 449 -248 l 449 517 l 405 517 l 405 86 l 271 144 l 271 517 l 225 517 l 225 161 l 0 256 l 0 157 z',\n },\n accSagittalSharp19sDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 109 45 36 89 95 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -23 295 23 325 -23 l 360 -517 l 405 -517 l 405 -23 l 472 -23 b 540 -203 517 -23 540 -84 l 585 -203 b 495 68 585 -23 554 68 l 383 68 b 292 248 348 68 318 127 l 180 248 b 0 68 60 248 0 187 z',\n },\n accSagittalFlat19sUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 180 -248 0 -187 60 -248 l 292 -248 b 383 -68 318 -127 348 -68 l 495 -68 b 585 203 554 -68 585 23 l 540 203 b 472 23 540 84 517 23 l 405 23 l 405 517 l 360 517 l 360 23 b 271 -112 325 23 295 -23 l 225 -112 l 225 517 l 180 517 l 180 -109 b 45 68 89 -95 45 -36 l 45 248 l 0 248 z',\n },\n accSagittalSharp19sUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -96 l 89 -517 l 135 -517 l 135 -108 b 180 -112 148 -112 163 -112 b 225 -108 196 -112 210 -112 l 225 -517 l 271 -517 l 271 -94 b 360 -12 305 -78 337 -50 l 360 -517 l 405 -517 l 405 248 l 383 248 b 190 0 353 98 288 16 b 138 -3 171 0 153 -3 b 45 68 75 -3 45 20 l 0 68 b 89 -96 0 -17 30 -72 z',\n },\n accSagittalFlat19sDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 96 b 0 -68 30 72 0 17 l 45 -68 b 138 3 45 -20 75 3 b 190 0 153 3 171 0 b 383 -248 288 -16 353 -98 l 405 -248 l 405 517 l 360 517 l 360 12 b 271 94 337 50 305 78 l 271 517 l 225 517 l 225 108 b 180 112 210 112 196 112 b 135 108 163 112 148 112 l 135 517 l 89 517 z',\n },\n accSagittalSharp17kUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 337 -23 b 405 14 363 -23 386 -10 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 68 402 127 364 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalFlat17kDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 517 l 405 517 l 405 -14 b 337 23 386 10 363 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp143CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 337 -23 b 405 14 363 -23 386 -10 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 68 402 127 364 68 l 240 68 b 89 157 140 68 89 98 l 45 157 b 68 53 45 115 52 81 b 0 -203 23 23 0 -63 z',\n },\n accSagittalFlat143CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -53 0 63 23 -23 b 45 -157 52 -81 45 -115 l 89 -157 b 240 -68 89 -98 140 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 517 l 405 517 l 405 -14 b 337 23 386 10 363 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp11v49CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -68 b 135 68 45 23 76 68 l 337 68 b 405 95 363 68 386 76 l 405 -27 b 315 -68 386 -55 356 -68 l 112 -68 b 0 -292 37 -68 0 -143 l 45 -292 b 135 -157 45 -203 75 -157 l 135 -517 l 180 -517 l 180 -157 l 271 -157 l 271 -517 l 315 -517 l 315 -157 l 337 -157 b 405 -130 360 -157 383 -148 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 157 413 187 376 157 l 112 157 b 0 -68 37 157 0 82 z',\n },\n accSagittalFlat11v49CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 68 b 112 -157 0 -82 37 -157 l 315 -157 b 428 -248 376 -157 413 -187 l 449 -248 l 449 517 l 405 517 l 405 130 b 337 157 383 148 360 157 l 315 157 l 315 517 l 271 517 l 271 157 l 180 157 l 180 517 l 135 517 l 135 157 b 45 292 75 157 45 203 l 0 292 b 112 68 0 143 37 68 l 315 68 b 405 27 356 68 386 55 l 405 -95 b 337 -68 386 -76 363 -68 l 135 -68 b 45 68 76 -68 45 -23 z',\n },\n accSagittalSharp19CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 14 b 337 -23 289 -10 311 -23 l 360 -23 l 360 -517 l 405 -517 l 405 -23 b 495 -203 465 -23 495 -82 l 540 -203 b 428 68 540 -23 503 68 l 360 68 b 248 248 310 68 271 128 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z',\n },\n accSagittalFlat19CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 b 360 -68 271 -128 310 -68 l 428 -68 b 540 203 503 -68 540 23 l 495 203 b 405 23 495 82 465 23 l 405 517 l 360 517 l 360 23 l 337 23 b 271 -14 311 23 289 10 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z',\n },\n accSagittalSharp7v19CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 112 l 315 112 b 360 109 331 112 346 112 l 360 -517 l 405 -517 l 405 98 b 495 -68 465 73 495 19 l 495 -248 l 540 -248 l 540 68 b 360 248 540 189 480 248 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z',\n },\n accSagittalFlat7v19CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 360 -248 b 540 -68 480 -248 540 -189 l 540 248 l 495 248 l 495 68 b 405 -98 495 -19 465 -73 l 405 517 l 360 517 l 360 -109 b 315 -112 346 -112 331 -112 l 271 -112 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z',\n },\n accSagittalSharp49SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 112 l 360 112 b 405 109 376 112 390 112 l 405 -517 l 449 -517 l 449 96 b 540 -68 510 72 540 17 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalFlat49SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 449 -96 540 -17 510 -72 l 449 517 l 405 517 l 405 -109 b 360 -112 390 -112 376 -112 l 315 -112 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp23SUp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 71 l 405 -14 l 405 -517 l 449 -517 l 449 -56 l 675 -268 l 675 -112 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalFlat23SDown: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 675 112 l 675 268 l 449 56 l 449 517 l 405 517 l 405 14 l 315 -71 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp5v13MUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 495 141 l 495 14 l 0 -157 l 0 -256 l 225 -180 l 225 -517 l 271 -517 l 271 -161 l 360 -130 l 360 -517 l 405 -517 l 405 -115 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 517 248 b 167 168 366 194 248 168 b 45 248 85 168 45 194 l 0 248 b 95 99 0 170 30 120 l 0 68 l 0 -30 z',\n },\n accSagittalFlat5v13MDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 30 l 0 -68 l 95 -99 b 0 -248 30 -120 0 -170 l 45 -248 b 167 -168 45 -194 85 -168 b 517 -248 248 -168 366 -194 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 115 l 405 517 l 360 517 l 360 130 l 271 161 l 271 517 l 225 517 l 225 180 l 0 256 l 0 157 l 495 -14 l 495 -141 z',\n },\n accSagittalSharp11v19MUp: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 14 b 428 -23 379 -10 402 -23 l 449 -23 l 449 -517 l 495 -517 l 495 -23 b 585 -203 554 -23 585 -84 l 631 -203 b 517 68 631 -23 593 68 l 449 68 b 337 248 400 68 363 127 l 225 248 b 0 68 75 248 0 187 z',\n },\n accSagittalFlat11v19MDown: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 b 449 -68 363 -127 400 -68 l 517 -68 b 631 203 593 -68 631 23 l 585 203 b 495 23 585 84 554 23 l 495 517 l 449 517 l 449 23 l 428 23 b 360 -14 402 23 379 10 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z',\n },\n accSagittalSharp49MUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 225 -180 l 225 -517 l 271 -517 l 271 -166 l 360 -132 l 360 -517 l 405 -517 l 405 -117 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 360 248 b 0 -68 120 248 0 143 z m 45 -145 l 45 -68 b 360 112 45 53 150 112 l 495 112 l 495 14 z',\n },\n accSagittalFlat49MDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 68 b 360 -248 0 -143 120 -248 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 117 l 405 517 l 360 517 l 360 132 l 271 166 l 271 517 l 225 517 l 225 180 l 45 248 l 0 248 z m 495 -14 l 495 -112 l 360 -112 b 45 68 150 -112 45 -53 l 45 145 z',\n },\n accSagittalSharp5v49MUp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -271 l 180 -79 l 180 -517 l 225 -517 l 225 -30 l 315 65 l 315 -517 l 360 -517 l 360 65 l 449 -30 l 449 -517 l 495 -517 l 495 -79 l 675 -271 l 675 -112 l 337 248 b 118 89 239 143 166 89 b 45 157 68 89 45 112 l 0 157 b 107 0 0 62 36 10 l 0 -112 z',\n },\n accSagittalFlat5v49MDown: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 107 0 b 0 -157 36 -10 0 -62 l 45 -157 b 118 -89 45 -112 68 -89 b 337 -248 166 -89 239 -143 l 675 112 l 675 271 l 495 79 l 495 517 l 449 517 l 449 30 l 360 -65 l 360 517 l 315 517 l 315 -65 l 225 30 l 225 517 l 180 517 l 180 79 l 0 271 z',\n },\n accSagittalSharp49LUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -82 l 135 -112 l 135 -517 l 180 -517 l 180 -127 l 271 -157 l 271 -517 l 315 -517 l 315 -173 l 540 -248 l 585 -248 l 585 -68 b 180 248 585 143 449 248 l 0 248 z m 45 112 l 180 112 b 540 -68 420 112 540 53 l 540 -145 l 45 16 z',\n },\n accSagittalFlat49LDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 180 -248 b 585 68 449 -248 585 -143 l 585 248 l 540 248 l 315 173 l 315 517 l 271 517 l 271 157 l 180 127 l 180 517 l 135 517 l 135 112 l 45 82 l 45 517 l 0 517 z m 45 -16 l 540 145 l 540 68 b 180 -112 540 -53 420 -112 l 45 -112 z',\n },\n accSagittalSharp11v19LUp: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -81 l 135 -108 l 135 -517 l 180 -517 l 180 -121 l 271 -148 l 271 -517 l 315 -517 l 315 -161 l 631 -255 l 631 -157 l 45 16 l 45 144 l 631 -30 l 631 68 l 23 248 l 0 248 z',\n },\n accSagittalFlat11v19LDown: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 l 631 -68 l 631 30 l 45 -144 l 45 -16 l 631 157 l 631 255 l 315 161 l 315 517 l 271 517 l 271 148 l 180 121 l 180 517 l 135 517 l 135 108 l 45 81 l 45 517 l 0 517 z',\n },\n accSagittalSharp5v13LUp: {\n x_min: 0,\n x_max: 500,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 -85 l 360 -120 l 360 -517 l 405 -517 l 405 -135 l 720 -256 l 720 -157 l 271 14 l 271 141 l 720 -30 l 720 68 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z',\n },\n accSagittalFlat5v13LDown: {\n x_min: 0,\n x_max: 500,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 720 -68 l 720 30 l 271 -141 l 271 -14 l 720 157 l 720 256 l 405 135 l 405 517 l 360 517 l 360 120 l 271 85 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z',\n },\n accSagittalDoubleSharp23SDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -203 l 45 -203 b 135 -23 45 -82 76 -23 l 301 -23 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 370 -14 b 449 112 423 10 449 53 l 449 248 l 428 248 b 315 68 402 127 364 68 l 240 68 b 89 157 140 68 89 98 l 45 157 b 68 53 45 115 52 81 b 0 -203 23 23 0 -63 z',\n },\n accSagittalDoubleFlat23SUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -53 0 63 23 -23 b 45 -157 52 -81 45 -115 l 89 -157 b 240 -68 89 -98 140 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 -112 b 370 14 449 -53 423 -10 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 301 23 l 135 23 b 45 203 76 23 45 82 z',\n },\n accSagittalDoubleSharp49SDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -292 l 45 -292 b 112 -157 45 -203 68 -157 l 256 -157 l 135 -503 l 187 -517 l 337 -82 l 490 -517 l 540 -503 l 366 0 l 396 89 b 449 157 416 102 435 125 l 449 248 l 428 248 b 315 157 413 187 376 157 l 112 157 b 0 -68 39 157 0 82 l 45 -68 b 135 68 45 23 76 68 l 287 68 l 311 0 l 288 -68 l 89 -68 b 0 -292 32 -68 0 -144 z',\n },\n accSagittalDoubleFlat49SUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 292 b 89 68 0 144 32 68 l 288 68 l 311 0 l 287 -68 l 135 -68 b 45 68 76 -68 45 -23 l 0 68 b 112 -157 0 -82 39 -157 l 315 -157 b 428 -248 376 -157 413 -187 l 449 -248 l 449 -157 b 396 -89 435 -125 416 -102 l 366 0 l 540 503 l 490 517 l 337 82 l 187 517 l 135 503 l 256 157 l 112 157 b 45 292 68 157 45 203 z',\n },\n accSagittalDoubleSharp7v19CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -266 l 307 -7 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 386 59 l 449 112 l 449 248 l 428 248 b 130 68 285 127 186 68 b 45 157 73 68 45 98 l 0 157 b 112 -20 0 53 37 -6 z',\n },\n accSagittalDoubleFlat7v19CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 112 20 b 0 -157 37 6 0 -53 l 45 -157 b 130 -68 45 -98 73 -68 b 428 -248 186 -68 285 -127 l 449 -248 l 449 -112 l 386 -59 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 307 7 l 0 266 l 0 112 z',\n },\n accSagittalDoubleSharp19CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 315 109 45 36 135 95 l 354 0 l 180 -503 l 232 -517 l 383 -82 l 534 -517 l 585 -503 l 410 0 l 449 112 l 495 112 l 495 248 l 360 248 b 0 68 120 248 0 187 z m 372 112 l 393 112 l 383 82 z',\n },\n accSagittalDoubleFlat19CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 360 -248 0 -187 120 -248 l 495 -248 l 495 -112 l 449 -112 l 410 0 l 585 503 l 534 517 l 383 82 l 232 517 l 180 503 l 354 0 l 315 -109 b 45 68 135 -95 45 -36 l 45 248 l 0 248 z m 383 -82 l 393 -112 l 372 -112 z',\n },\n accSagittalDoubleSharp11v49CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 360 112 b 540 -68 480 112 540 53 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalDoubleFlat11v49CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 360 -112 540 -53 480 -112 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalDoubleSharp143CDown: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 337 49 l 675 -268 l 675 -112 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalDoubleFlat143CUp: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 675 112 l 675 268 l 337 -49 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalDoubleSharp17kDown: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 248 b 95 101 0 170 30 121 l 0 68 l 0 -30 l 364 96 l 399 0 l 390 -23 l 0 -157 l 0 -255 l 353 -135 l 225 -503 l 275 -517 l 428 -82 l 577 -517 l 631 -503 l 455 0 l 507 145 l 540 157 l 540 248 l 517 248 b 167 168 366 194 248 168 b 45 248 85 168 45 194 z m 416 115 l 442 124 l 428 82 z',\n },\n accSagittalDoubleFlat17kUp: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -248 b 167 -168 45 -194 85 -168 b 517 -248 248 -168 366 -194 l 540 -248 l 540 -157 l 507 -145 l 455 0 l 631 503 l 577 517 l 428 82 l 275 517 l 225 503 l 353 135 l 0 255 l 0 157 l 390 23 l 399 0 l 364 -96 l 0 30 l 0 -68 l 95 -101 b 0 -248 30 -121 0 -170 z m 428 -82 l 442 -124 l 416 -115 z',\n },\n accSagittalDoubleSharp19sDown: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 271 112 45 53 120 112 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 367 4 b 428 -23 386 -13 405 -23 l 495 -23 b 585 -203 554 -23 585 -84 l 631 -203 b 517 68 631 -23 593 68 l 449 68 b 337 248 400 68 363 127 l 225 248 b 0 68 75 248 0 187 z',\n },\n accSagittalDoubleFlat19sUp: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 b 449 -68 363 -127 400 -68 l 517 -68 b 631 203 593 -68 631 23 l 585 203 b 495 23 585 84 554 23 l 428 23 b 367 -4 405 23 386 13 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 271 -112 b 45 68 120 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittalShaftUp: {\n x_min: 0,\n x_max: 31,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 112 l 0 -517 l 45 -517 l 45 112 l 23 248 z',\n },\n accSagittalShaftDown: {\n x_min: 0,\n x_max: 31,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 23 -248 l 45 -112 l 45 517 l 0 517 l 0 -112 z',\n },\n accSagittalAcute: {\n x_min: 0,\n x_max: 125,\n y_min: -62,\n y_max: 125,\n ha: 187,\n o: 'm 0 0 l 0 -89 l 180 89 l 180 180 z',\n },\n accSagittalGrave: {\n x_min: 0,\n x_max: 125,\n y_min: -125,\n y_max: 62,\n ha: 187,\n o: 'm 180 -180 l 180 -89 l 0 89 l 0 0 z',\n },\n accSagittal1MinaUp: {\n x_min: -7,\n x_max: 124,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 134 150 179 112 163 135 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal1MinaDown: {\n x_min: -7,\n x_max: 124,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 179 -23 163 -135 179 -112 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittal2MinasUp: {\n x_min: -7,\n x_max: 218,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 269 150 314 112 298 135 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal2MinasDown: {\n x_min: -7,\n x_max: 218,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittal1TinaUp: {\n x_min: 0,\n x_max: 93,\n y_min: 16,\n y_max: 107,\n ha: 91,\n o: 'm 134 154 l 91 154 b 81 76 91 101 91 86 b 0 68 73 69 48 68 l 0 23 b 134 154 122 23 134 36 z',\n },\n accSagittal1TinaDown: {\n x_min: 0,\n x_max: 93,\n y_min: -107,\n y_max: -16,\n ha: 91,\n o: 'm 134 -154 b 0 -23 134 -36 122 -23 l 0 -68 b 81 -76 48 -68 73 -69 b 91 -154 91 -86 91 -101 z',\n },\n accSagittal2TinasUp: {\n x_min: 0,\n x_max: 94,\n y_min: 16,\n y_max: 107,\n ha: 91,\n o: 'm 135 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z',\n },\n accSagittal2TinasDown: {\n x_min: 0,\n x_max: 94,\n y_min: -107,\n y_max: -16,\n ha: 91,\n o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 z',\n },\n accSagittal3TinasUp: {\n x_min: -7,\n x_max: 124,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 134 150 179 112 163 135 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal3TinasDown: {\n x_min: -7,\n x_max: 124,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 179 -23 163 -135 179 -112 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittal4TinasUp: {\n x_min: 0,\n x_max: 187,\n y_min: 16,\n y_max: 106.69999999999997,\n ha: 90.69999999999997,\n o: 'm 0 68 l 0 23 b 143 45 105 23 124 26 b 203 107 153 55 183 107 b 226 23 216 107 226 86 l 269 23 b 225 150 269 112 253 135 b 160 132 207 158 181 153 b 115 81 138 112 124 88 b 0 68 104 71 94 68 z',\n },\n accSagittal4TinasDown: {\n x_min: 0,\n x_max: 187,\n y_min: -106.69999999999999,\n y_max: -16,\n ha: 90.69999999999999,\n o: 'm 0 -68 b 115 -81 94 -68 104 -71 b 160 -132 124 -88 138 -112 b 225 -150 181 -153 207 -158 b 269 -23 253 -135 269 -112 l 226 -23 b 203 -107 226 -86 216 -107 b 143 -45 183 -107 153 -55 b 0 -23 124 -26 105 -23 z',\n },\n accSagittal5TinasUp: {\n x_min: 0,\n x_max: 218,\n y_min: 16,\n y_max: 107,\n ha: 91,\n o: 'm 135 23 b 187 45 156 23 168 26 b 249 107 197 55 228 107 b 271 23 262 107 271 86 l 314 23 b 269 150 314 112 298 135 b 204 132 252 158 226 153 b 160 81 183 112 168 88 b 135 68 148 71 147 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z',\n },\n accSagittal5TinasDown: {\n x_min: 0,\n x_max: 218,\n y_min: -107,\n y_max: -16,\n ha: 91,\n o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 b 160 -81 147 -68 148 -71 b 204 -132 168 -88 183 -112 b 269 -150 226 -153 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 249 -107 271 -86 262 -107 b 187 -45 228 -107 197 -55 b 135 -23 168 -26 156 -23 z',\n },\n accSagittal6TinasUp: {\n x_min: -7,\n x_max: 218,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 269 150 314 112 298 135 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal6TinasDown: {\n x_min: -7,\n x_max: 218,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittal7TinasUp: {\n x_min: 0,\n x_max: 281,\n y_min: 16,\n y_max: 106.69999999999997,\n ha: 90.69999999999997,\n o: 'm 0 68 l 0 23 b 143 45 105 23 124 26 b 203 107 153 55 183 107 b 226 23 216 107 226 86 l 269 23 b 298 65 269 23 291 55 b 343 107 314 86 331 107 b 361 23 354 107 363 86 l 405 23 b 360 150 405 112 389 135 b 294 130 343 158 311 150 b 264 92 281 115 272 104 b 225 150 258 127 245 140 b 160 132 207 158 181 153 b 115 81 138 112 124 88 b 0 68 104 71 94 68 z',\n },\n accSagittal7TinasDown: {\n x_min: 0,\n x_max: 281,\n y_min: -106.69999999999999,\n y_max: -16,\n ha: 90.69999999999999,\n o: 'm 0 -68 b 115 -81 94 -68 104 -71 b 160 -132 124 -88 138 -112 b 225 -150 181 -153 207 -158 b 264 -92 245 -140 258 -127 b 294 -130 272 -104 281 -115 b 360 -150 311 -150 343 -158 b 405 -23 389 -135 405 -112 l 361 -23 b 343 -107 363 -86 354 -107 b 298 -65 331 -107 314 -86 b 269 -23 291 -55 269 -23 l 226 -23 b 203 -107 226 -86 216 -107 b 143 -45 183 -107 153 -55 b 0 -23 124 -26 105 -23 z',\n },\n accSagittal8TinasUp: {\n x_min: 0,\n x_max: 312,\n y_min: 16,\n y_max: 107,\n ha: 91,\n o: 'm 135 23 b 187 45 156 23 168 26 b 249 107 197 55 228 107 b 271 23 262 107 271 86 l 314 23 b 343 65 314 23 336 55 b 387 107 359 86 376 107 b 406 23 399 107 408 86 l 449 23 b 405 150 449 112 433 135 b 338 130 387 158 356 150 b 308 92 325 115 317 104 b 269 150 302 127 289 140 b 204 132 252 158 226 153 b 160 81 183 112 168 88 b 135 68 148 71 147 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z',\n },\n accSagittal8TinasDown: {\n x_min: 0,\n x_max: 312,\n y_min: -107,\n y_max: -16,\n ha: 91,\n o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 b 160 -81 147 -68 148 -71 b 204 -132 168 -88 183 -112 b 269 -150 226 -153 252 -158 b 308 -92 289 -140 302 -127 b 338 -130 317 -104 325 -115 b 405 -150 356 -150 387 -158 b 449 -23 433 -135 449 -112 l 406 -23 b 387 -107 408 -86 399 -107 b 343 -65 376 -107 359 -86 b 314 -23 336 -55 314 -23 l 271 -23 b 249 -107 271 -86 262 -107 b 187 -45 228 -107 197 -55 b 135 -23 168 -26 156 -23 z',\n },\n accSagittal9TinasUp: {\n x_min: -7,\n x_max: 312,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 343 65 314 23 336 55 b 387 107 359 86 376 107 b 406 23 399 107 408 86 l 449 23 b 405 150 449 112 433 135 b 338 130 387 158 356 150 b 308 92 325 115 317 104 b 269 150 302 127 289 140 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal9TinasDown: {\n x_min: -7,\n x_max: 312,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 308 -92 289 -140 302 -127 b 338 -130 317 -104 325 -115 b 405 -150 356 -150 387 -158 b 449 -23 433 -135 449 -112 l 406 -23 b 387 -107 408 -86 399 -107 b 343 -65 376 -107 359 -86 b 314 -23 336 -55 314 -23 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittalFractionalTinaUp: {\n x_min: -3,\n x_max: 35,\n y_min: 73,\n y_max: 111,\n ha: 38,\n o: 'm -4 132 b 23 105 -4 118 9 105 b 50 132 37 105 50 118 b 23 160 50 147 37 160 b -4 132 9 160 -4 147 z',\n },\n accSagittalFractionalTinaDown: {\n x_min: -3,\n x_max: 35,\n y_min: -111,\n y_max: -73,\n ha: 38,\n o: 'm -4 -132 b 23 -160 -4 -147 9 -160 b 50 -132 37 -160 50 -147 b 23 -105 50 -118 37 -105 b -4 -132 9 -105 -4 -118 z',\n },\n accidentalNarrowReversedFlat: {\n x_min: 0,\n x_max: 164,\n y_min: -194,\n y_max: 421,\n ha: 615,\n o: 'm 236 -279 l 236 606 l 192 606 l 192 179 b 85 243 150 222 114 243 b 0 84 23 243 0 134 b 112 -158 0 3 37 -78 z m 192 112 l 192 -163 l 135 -98 b 82 40 101 -50 82 -3 b 138 144 82 73 96 144 b 192 112 153 144 170 132 z',\n },\n accidentalNarrowReversedFlatAndFlat: {\n x_min: 0,\n x_max: 414,\n y_min: -194,\n y_max: 421,\n ha: 615,\n o: 'm 281 606 l 281 -268 l 438 -158 b 596 84 547 -82 596 3 b 475 243 596 154 556 243 b 325 179 435 243 384 222 l 325 606 z m 235 -279 l 235 606 l 190 606 l 190 179 b 85 243 148 222 114 243 b 12 158 52 243 27 215 b 0 84 3 134 0 108 b 112 -158 0 3 37 -78 z m 325 111 b 410 144 359 132 386 144 b 498 36 462 144 498 84 b 413 -107 498 -9 469 -58 l 325 -173 z m 192 112 l 192 -163 l 135 -98 b 81 40 99 -50 81 -3 b 91 94 81 59 84 76 b 137 144 102 127 118 144 b 192 112 153 144 170 132 z',\n },\n accidentalWilsonPlus: {\n x_min: 0,\n x_max: 281,\n y_min: -203,\n y_max: 203,\n ha: 406,\n o: 'm 405 268 l 225 98 l 225 292 l 180 292 l 180 56 l 0 -112 l 0 -268 l 180 -98 l 180 -292 l 225 -292 l 225 -56 l 405 112 z',\n },\n accidentalWilsonMinus: {\n x_min: 0,\n x_max: 281,\n y_min: -186,\n y_max: 186,\n ha: 372,\n o: 'm 0 112 l 405 -268 l 405 -112 l 0 268 z',\n },\n },\n fontFamily: 'Bravura',\n resolution: 1000,\n generatedOn: '2022-06-26T17:36:54.186Z',\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// This entry file will be exported as a font module that can be dynamically loaded by vexflow-core.js.\n// Search for 'vexflow-font-bravura' in Gruntfile.js.\n// ADD_MUSIC_FONT\n// To add a new music engraving font named XXX, make a copy of this file and name it vexflow-font-xxx.ts.\n// Then you will need to import the xxx_glyphs.ts and xxx_metrics.ts files.\nimport { BravuraFont } from '../src/fonts/bravura_glyphs';\nimport { BravuraMetrics } from '../src/fonts/bravura_metrics';\nexport const Font = {\n data: BravuraFont,\n metrics: BravuraMetrics,\n};\nexport default Font;\n","/**\n * The Bravura font was created by Daniel Spreadbury @ Steinberg.\n * https://github.com/steinbergmedia/bravura/\n */\nexport const BravuraMetrics = {\n name: 'Bravura',\n smufl: true,\n stave: {\n padding: 12,\n endPaddingMax: 10,\n endPaddingMin: 5,\n unalignedNotePadding: 10,\n },\n accidental: {\n noteheadAccidentalPadding: 1,\n leftPadding: 2,\n accidentalSpacing: 3,\n },\n clef: {\n default: {\n point: 32,\n width: 26,\n },\n small: {\n point: 26,\n width: 20,\n },\n annotations: {\n '8va': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: -1.4,\n shiftX: 12,\n },\n },\n small: {\n point: 16,\n treble: {\n line: -0.2,\n shiftX: 8,\n },\n },\n },\n '8vb': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: 6,\n shiftX: 10,\n },\n bass: {\n line: 3.5,\n shiftX: 1,\n },\n },\n small: {\n point: 16,\n treble: {\n line: 5.3,\n shiftX: 6,\n },\n bass: {\n line: 3.1,\n shiftX: 0.5,\n },\n },\n },\n },\n // These may no longer be necessary\n lineCount: {\n '8': { point: 55, shiftY: 14 },\n '7': { point: 47, shiftY: 8 },\n '6': { point: 32, shiftY: 1 },\n '5': { point: 30, shiftY: -6 },\n '4': { point: 23, shiftY: -12 },\n },\n },\n parenthesis: {\n default: {\n point: 39,\n width: 7,\n },\n gracenote: {\n point: (39 * 3) / 5,\n width: 3,\n },\n },\n pedalMarking: {\n up: {\n point: 40,\n },\n down: {\n point: 34,\n },\n },\n // These are for numeric digits, such as in time signatures\n digits: {\n // used by timesig\n shiftLine: -1,\n point: 34,\n // used by tuplets\n tupletPoint: 22,\n shiftY: -6,\n },\n articulation: {\n articStaccatissimoAbove: {\n padding: 2,\n },\n articStaccatissimoBelow: {\n padding: 2,\n },\n },\n tremolo: {\n default: {\n point: 25,\n spacing: 5,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 11,\n offsetXStemDown: 1,\n },\n grace: {\n point: 18,\n spacing: 4,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 7,\n offsetXStemDown: 1,\n },\n },\n staveRepetition: {\n symbolText: {\n offsetX: 12,\n offsetY: 25,\n spacing: 5,\n },\n coda: {\n offsetY: 25,\n },\n segno: {\n offsetY: 10,\n },\n },\n // noteHead: {\n // },\n stem: {\n heightAdjustmentForFlag: -3,\n // These are stem (Y) offsets to the note heads. To shift the\n // noteheads (x-position) themselves, see glyphs.notehead.custom.\n noteHead: {\n noteheadTriangleUpHalf: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpBlack: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpWhole: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadXHalf: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXBlack: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXWhole: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadHalf: {\n offsetYBaseStemUp: -2.55,\n offsetYBaseStemDown: 2.65,\n },\n noteheadBlack: {\n offsetYBaseStemUp: -2,\n offsetYBaseStemDown: 2,\n },\n noteheadSquareWhite: {\n offsetYBaseStemDown: -5,\n offsetYBaseStemUp: 5,\n },\n },\n },\n // Values under here are used by the Glyph class to reposition and rescale\n // glyphs based on their category. This should be the first stop for\n // custom font glyph repositioning.\n //\n // The glyph loader first looks up a specific set of settings based on the\n // glyph code, and if not found, uses the defaults from the category. See\n // glyphs.textNote for an example of this.\n //\n // Details in Glyph.lookupFontMetrics.\n glyphs: {\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n segno: {\n shiftX: -7,\n },\n flag: {\n shiftX: -0.75,\n staveTempo: {\n shiftX: -1,\n },\n },\n clef: {\n gClef: {\n default: { scale: 1.1, shiftY: 1 },\n small: { shiftY: 1.5 },\n },\n fClef: {\n default: { shiftY: -0.5 },\n },\n },\n ornament: {\n ornamentTurn: {\n scale: 1.2,\n },\n ornamentTurnSlash: {\n scale: 1.2,\n },\n },\n stringNumber: {\n verticalPadding: 8,\n stemPadding: 2,\n leftPadding: 5,\n rightPadding: 6,\n },\n stroke: {\n arrowheadBlackDown: {\n straight: {\n shiftX: -4.5,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n arrowheadBlackUp: {\n straight: {\n shiftX: -0.85,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n },\n textNote: {\n point: 34,\n breathMarkTick: {\n point: 36,\n shiftY: 9,\n },\n breathMarkComma: {\n point: 36,\n },\n segno: {\n point: 30,\n shiftX: -7,\n shiftY: 8,\n },\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n ornamentTrill: {\n shiftX: -8,\n shiftY: 8,\n },\n ornamentTurn: {\n point: 42,\n },\n ornamentTurnSlash: {\n point: 42,\n },\n ornamentMordent: {\n shiftX: -8,\n },\n ornamentShortTrill: {\n shiftX: -8,\n },\n },\n noteHead: {\n minPadding: 2,\n standard: {\n restQuarterStemUp: {\n point: 35,\n },\n restQuarterStemDown: {\n point: 35,\n },\n },\n custom: {\n noteheadCircleXStemUp: {\n shiftX: 1.5,\n },\n noteheadCircleXStemDown: {\n shiftX: 0.25,\n },\n noteheadDiamondHalfStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondBlackStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondWholeStemUp: {\n shiftX: 1,\n },\n noteheadXHalfStemUp: {\n shiftX: -2,\n },\n noteheadXHalfStemDown: {\n shiftX: 1,\n },\n noteheadXWholeStemUp: {\n shiftX: -4,\n },\n noteheadXWholeStemDown: {\n shiftX: 1,\n },\n noteheadXDoubleWholeStemUp: {\n shiftX: -4,\n },\n noteheadXDoubleWholeStemDown: {\n shiftX: 1,\n },\n noteheadSquareWhiteStemDown: {\n shiftX: 0.25,\n },\n noteheadSquareWhiteStemUp: {\n shiftX: -0.75,\n },\n noteheadSquareBlackStemUp: {\n shiftX: -0.75,\n },\n noteheadTriangleUpWholeStemUp: {\n shiftX: -0.75,\n },\n },\n },\n chordSymbol: {\n global: {\n superscriptOffset: -400,\n subscriptOffset: 300,\n kerningOffset: -250,\n lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'],\n upperKerningText: ['A', 'L'],\n spacing: 100,\n superSubRatio: 0.66,\n },\n csymDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymHalfDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymAugmented: {\n scale: 1,\n leftSideBearing: 0,\n advanceWidth: 530,\n yOffset: 0,\n },\n csymParensLeftTall: {\n scale: 0.8,\n leftSideBearing: -20,\n advanceWidth: 184,\n yOffset: 250,\n },\n csymParensRightTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 189,\n yOffset: 250,\n },\n csymBracketLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 328,\n yOffset: 0,\n },\n csymBracketRightTall: {\n scale: 0.8,\n leftSideBearing: 1,\n advanceWidth: 600,\n yOffset: 0,\n },\n csymParensLeftVeryTall: {\n scale: 0.9,\n leftSideBearing: 50,\n advanceWidth: 121,\n yOffset: 350,\n },\n csymParensRightVeryTall: {\n scale: 0.9,\n leftSideBearing: 0,\n advanceWidth: 111,\n yOffset: 350,\n },\n csymDiagonalArrangementSlash: {\n scale: 0.6,\n leftSideBearing: -1,\n advanceWidth: 990,\n yOffset: 0,\n },\n csymMinor: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 482,\n yOffset: 0,\n },\n csymMajorSeventh: {\n scale: 0.9,\n leftSideBearing: 200,\n yOffset: 0,\n advanceWidth: 600,\n },\n accidentalSharp: {\n scale: 0.75,\n leftSideBearing: 20,\n advanceWidth: 250,\n yOffset: -302,\n },\n accidentalFlat: {\n scale: 0.9,\n leftSideBearing: -20,\n advanceWidth: 226,\n yOffset: -184,\n },\n },\n jazzOrnaments: {\n brassScoop: {\n scale: 1.0,\n xOffset: -12,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 20,\n },\n brassDoitMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 22,\n },\n brassFallLipShort: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassLiftMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 5,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassFallRoughMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 28,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassBend: {\n scale: 1.0,\n xOffset: 2,\n yOffset: -8,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassMuteClosed: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -8,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassMuteOpen: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -7,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassFlip: {\n scale: 1.0,\n xOffset: 10,\n yOffset: 0,\n stemUpYOffset: 7,\n reportedWidth: 10,\n },\n brassJazzTurn: {\n scale: 1.0,\n xOffset: 0,\n yOffset: 0,\n stemUpYOffset: 8,\n reportedWidth: 31,\n },\n brassSmear: {\n scale: 1.0,\n xOffset: 10,\n yOffset: 0,\n stemUpYOffset: 8,\n reportedWidth: 5,\n },\n },\n tuplet: {\n noteHeadOffset: 20,\n stemOffset: 10,\n bottomLine: 4,\n topModifierOffset: 15,\n },\n },\n};\n"],"names":["root","factory","exports","module","define","amd","window","globalThis","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","data","glyphs","bracketTop","x_min","x_max","y_min","y_max","ha","bracketBottom","barlineTick","breathMarkTick","segno","coda","gClef","cClef","fClef","unpitchedPercussionClef1","timeSig0","timeSig1","timeSig2","timeSig3","timeSig4","timeSig5","timeSig6","timeSig7","timeSig8","timeSig9","timeSigCommon","timeSigCutCommon","timeSigPlus","timeSigPlusSmall","timeSigMinus","timeSigParensRight","timeSigParensRightSmall","timeSigParensLeft","timeSigParensLeftSmall","noteheadDoubleWhole","noteheadWhole","noteheadHalf","noteheadBlack","noteheadXDoubleWhole","noteheadXWhole","noteheadXHalf","noteheadXBlack","noteheadCircleXDoubleWhole","noteheadCircleXWhole","noteheadCircleXHalf","noteheadCircleX","noteheadCircledDoubleWhole","noteheadCircledWhole","noteheadCircledHalf","noteheadCircledBlack","noteheadDoubleWholeSquare","noteheadSquareWhite","noteheadSquareBlack","noteheadTriangleDownDoubleWhole","noteheadTriangleDownWhole","noteheadTriangleDownHalf","noteheadTriangleDownBlack","noteheadTriangleUpDoubleWhole","noteheadTriangleUpWhole","noteheadTriangleUpHalf","noteheadTriangleUpBlack","noteheadSlashedDoubleWhole1","noteheadSlashedWhole1","noteheadSlashedHalf1","noteheadSlashedBlack1","noteheadSlashedDoubleWhole2","noteheadSlashedWhole2","noteheadSlashedHalf2","noteheadSlashedBlack2","noteheadDiamondDoubleWhole","noteheadDiamondWhole","noteheadDiamondHalf","noteheadDiamondBlack","noteheadParenthesis","noteheadParenthesisRight","noteheadParenthesisLeft","noteheadMoonBlack","noteheadTriangleLeftBlack","noteheadTriangleRightBlack","noteheadTriangleRoundDownBlack","augmentationDot","tremolo1","flag8thUp","flag8thDown","flag16thUp","flag16thDown","flag32ndUp","flag32ndDown","flag64thUp","flag64thDown","flag128thUp","flag128thDown","accidentalFlat","accidentalNatural","accidentalSharp","accidentalDoubleSharp","accidentalDoubleFlat","accidentalParensLeft","accidentalParensRight","accidentalQuarterToneFlatStein","accidentalThreeQuarterTonesFlatZimmermann","accidentalQuarterToneSharpStein","accidentalThreeQuarterTonesSharpStein","accidentalBuyukMucennebFlat","accidentalBakiyeFlat","accidentalKomaSharp","accidentalKucukMucennebSharp","accidentalKoron","accidentalSori","articAccentAbove","articAccentBelow","articTenutoAbove","articTenutoBelow","articStaccatoAbove","articStaccatoBelow","articStaccatissimoAbove","articStaccatissimoBelow","articMarcatoAbove","articMarcatoBelow","fermataAbove","fermataBelow","fermataLongAbove","fermataLongBelow","fermataVeryLongAbove","fermataVeryLongBelow","fermataShortAbove","fermataShortBelow","breathMarkComma","breathMarkUpbow","caesura","caesuraCurved","restMaxima","restDoubleWhole","restWhole","restWholeLegerLine","restHalf","restHalfLegerLine","restQuarter","rest8th","rest16th","rest32nd","rest64th","rest128th","dynamicPiano","dynamicMezzo","dynamicForte","dynamicRinforzando","dynamicSforzando","dynamicZ","ornamentTrill","ornamentTurn","ornamentTurnSlash","ornamentMordent","ornamentShortTrill","ornamentTremblement","ornamentPrecompAppoggTrill","ornamentPrecompSlideTrillDAnglebert","ornamentPrecompSlideTrillBach","ornamentPrecompTrillSuffixDandrieu","ornamentPrecompDoubleCadenceUpperPrefix","ornamentPrecompDoubleCadenceUpperPrefixTurn","ornamentPrecompTrillLowerSuffix","brassScoop","brassDoitMedium","brassFallLipShort","brassLiftMedium","brassFallRoughMedium","brassBend","brassMuteClosed","brassMuteOpen","brassFlip","brassJazzTurn","brassSmear","stringsDownBow","stringsUpBow","stringsHarmonic","pluckedSnapPizzicatoAbove","pluckedSnapPizzicatoBelow","pluckedLeftHandPizzicato","keyboardPedalPed","keyboardPedalUp","pictChokeCymbal","wiggleArpeggiatoUp","arrowheadBlackUp","arrowheadBlackDown","arpeggiatoUp","arpeggiatoDown","repeat1Bar","repeat2Bars","repeat4Bars","repeatBarSlash","csymDiminished","csymHalfDiminished","csymAugmented","csymMajorSeventh","csymMinor","csymParensLeftTall","csymParensRightTall","csymBracketLeftTall","csymBracketRightTall","csymParensLeftVeryTall","csymParensRightVeryTall","csymDiagonalArrangementSlash","accSagittal5v7KleismaUp","accSagittal5v7KleismaDown","accSagittal5CommaUp","accSagittal5CommaDown","accSagittal7CommaUp","accSagittal7CommaDown","accSagittal25SmallDiesisUp","accSagittal25SmallDiesisDown","accSagittal35MediumDiesisUp","accSagittal35MediumDiesisDown","accSagittal11MediumDiesisUp","accSagittal11MediumDiesisDown","accSagittal11LargeDiesisUp","accSagittal11LargeDiesisDown","accSagittal35LargeDiesisUp","accSagittal35LargeDiesisDown","accSagittalSharp25SDown","accSagittalFlat25SUp","accSagittalSharp7CDown","accSagittalFlat7CUp","accSagittalSharp5CDown","accSagittalFlat5CUp","accSagittalSharp5v7kDown","accSagittalFlat5v7kUp","accSagittalSharp","accSagittalFlat","accSagittalSharp5v7kUp","accSagittalFlat5v7kDown","accSagittalSharp5CUp","accSagittalFlat5CDown","accSagittalSharp7CUp","accSagittalFlat7CDown","accSagittalSharp25SUp","accSagittalFlat25SDown","accSagittalSharp35MUp","accSagittalFlat35MDown","accSagittalSharp11MUp","accSagittalFlat11MDown","accSagittalSharp11LUp","accSagittalFlat11LDown","accSagittalSharp35LUp","accSagittalFlat35LDown","accSagittalDoubleSharp25SDown","accSagittalDoubleFlat25SUp","accSagittalDoubleSharp7CDown","accSagittalDoubleFlat7CUp","accSagittalDoubleSharp5CDown","accSagittalDoubleFlat5CUp","accSagittalDoubleSharp5v7kDown","accSagittalDoubleFlat5v7kUp","accSagittalDoubleSharp","accSagittalDoubleFlat","accSagittal7v11KleismaUp","accSagittal7v11KleismaDown","accSagittal17CommaUp","accSagittal17CommaDown","accSagittal55CommaUp","accSagittal55CommaDown","accSagittal7v11CommaUp","accSagittal7v11CommaDown","accSagittal5v11SmallDiesisUp","accSagittal5v11SmallDiesisDown","accSagittalSharp5v11SDown","accSagittalFlat5v11SUp","accSagittalSharp7v11CDown","accSagittalFlat7v11CUp","accSagittalSharp55CDown","accSagittalFlat55CUp","accSagittalSharp17CDown","accSagittalFlat17CUp","accSagittalSharp7v11kDown","accSagittalFlat7v11kUp","accSagittalSharp7v11kUp","accSagittalFlat7v11kDown","accSagittalSharp17CUp","accSagittalFlat17CDown","accSagittalSharp55CUp","accSagittalFlat55CDown","accSagittalSharp7v11CUp","accSagittalFlat7v11CDown","accSagittalSharp5v11SUp","accSagittalFlat5v11SDown","accSagittalDoubleSharp5v11SDown","accSagittalDoubleFlat5v11SUp","accSagittalDoubleSharp7v11CDown","accSagittalDoubleFlat7v11CUp","accSagittalDoubleSharp55CDown","accSagittalDoubleFlat55CUp","accSagittalDoubleSharp17CDown","accSagittalDoubleFlat17CUp","accSagittalDoubleSharp7v11kDown","accSagittalDoubleFlat7v11kUp","accSagittal23CommaUp","accSagittal23CommaDown","accSagittal5v19CommaUp","accSagittal5v19CommaDown","accSagittal5v23SmallDiesisUp","accSagittal5v23SmallDiesisDown","accSagittalSharp5v23SDown","accSagittalFlat5v23SUp","accSagittalSharp5v19CDown","accSagittalFlat5v19CUp","accSagittalSharp23CDown","accSagittalFlat23CUp","accSagittalSharp23CUp","accSagittalFlat23CDown","accSagittalSharp5v19CUp","accSagittalFlat5v19CDown","accSagittalSharp5v23SUp","accSagittalFlat5v23SDown","accSagittalDoubleSharp5v23SDown","accSagittalDoubleFlat5v23SUp","accSagittalDoubleSharp5v19CDown","accSagittalDoubleFlat5v19CUp","accSagittalDoubleSharp23CDown","accSagittalDoubleFlat23CUp","accSagittal19SchismaUp","accSagittal19SchismaDown","accSagittal17KleismaUp","accSagittal17KleismaDown","accSagittal143CommaUp","accSagittal143CommaDown","accSagittal11v49CommaUp","accSagittal11v49CommaDown","accSagittal19CommaUp","accSagittal19CommaDown","accSagittal7v19CommaUp","accSagittal7v19CommaDown","accSagittal49SmallDiesisUp","accSagittal49SmallDiesisDown","accSagittal23SmallDiesisUp","accSagittal23SmallDiesisDown","accSagittal5v13MediumDiesisUp","accSagittal5v13MediumDiesisDown","accSagittal11v19MediumDiesisUp","accSagittal11v19MediumDiesisDown","accSagittal49MediumDiesisUp","accSagittal49MediumDiesisDown","accSagittal5v49MediumDiesisUp","accSagittal5v49MediumDiesisDown","accSagittal49LargeDiesisUp","accSagittal49LargeDiesisDown","accSagittal11v19LargeDiesisUp","accSagittal11v19LargeDiesisDown","accSagittal5v13LargeDiesisUp","accSagittal5v13LargeDiesisDown","accSagittalSharp23SDown","accSagittalFlat23SUp","accSagittalSharp49SDown","accSagittalFlat49SUp","accSagittalSharp7v19CDown","accSagittalFlat7v19CUp","accSagittalSharp19CDown","accSagittalFlat19CUp","accSagittalSharp11v49CDown","accSagittalFlat11v49CUp","accSagittalSharp143CDown","accSagittalFlat143CUp","accSagittalSharp17kDown","accSagittalFlat17kUp","accSagittalSharp19sDown","accSagittalFlat19sUp","accSagittalSharp19sUp","accSagittalFlat19sDown","accSagittalSharp17kUp","accSagittalFlat17kDown","accSagittalSharp143CUp","accSagittalFlat143CDown","accSagittalSharp11v49CUp","accSagittalFlat11v49CDown","accSagittalSharp19CUp","accSagittalFlat19CDown","accSagittalSharp7v19CUp","accSagittalFlat7v19CDown","accSagittalSharp49SUp","accSagittalFlat49SDown","accSagittalSharp23SUp","accSagittalFlat23SDown","accSagittalSharp5v13MUp","accSagittalFlat5v13MDown","accSagittalSharp11v19MUp","accSagittalFlat11v19MDown","accSagittalSharp49MUp","accSagittalFlat49MDown","accSagittalSharp5v49MUp","accSagittalFlat5v49MDown","accSagittalSharp49LUp","accSagittalFlat49LDown","accSagittalSharp11v19LUp","accSagittalFlat11v19LDown","accSagittalSharp5v13LUp","accSagittalFlat5v13LDown","accSagittalDoubleSharp23SDown","accSagittalDoubleFlat23SUp","accSagittalDoubleSharp49SDown","accSagittalDoubleFlat49SUp","accSagittalDoubleSharp7v19CDown","accSagittalDoubleFlat7v19CUp","accSagittalDoubleSharp19CDown","accSagittalDoubleFlat19CUp","accSagittalDoubleSharp11v49CDown","accSagittalDoubleFlat11v49CUp","accSagittalDoubleSharp143CDown","accSagittalDoubleFlat143CUp","accSagittalDoubleSharp17kDown","accSagittalDoubleFlat17kUp","accSagittalDoubleSharp19sDown","accSagittalDoubleFlat19sUp","accSagittalShaftUp","accSagittalShaftDown","accSagittalAcute","accSagittalGrave","accSagittal1MinaUp","accSagittal1MinaDown","accSagittal2MinasUp","accSagittal2MinasDown","accSagittal1TinaUp","accSagittal1TinaDown","accSagittal2TinasUp","accSagittal2TinasDown","accSagittal3TinasUp","accSagittal3TinasDown","accSagittal4TinasUp","accSagittal4TinasDown","accSagittal5TinasUp","accSagittal5TinasDown","accSagittal6TinasUp","accSagittal6TinasDown","accSagittal7TinasUp","accSagittal7TinasDown","accSagittal8TinasUp","accSagittal8TinasDown","accSagittal9TinasUp","accSagittal9TinasDown","accSagittalFractionalTinaUp","accSagittalFractionalTinaDown","accidentalNarrowReversedFlat","accidentalNarrowReversedFlatAndFlat","accidentalWilsonPlus","accidentalWilsonMinus","fontFamily","resolution","generatedOn","metrics","name","smufl","stave","padding","endPaddingMax","endPaddingMin","unalignedNotePadding","accidental","noteheadAccidentalPadding","leftPadding","accidentalSpacing","clef","default","point","width","small","annotations","smuflCode","treble","line","shiftX","bass","lineCount","shiftY","parenthesis","gracenote","pedalMarking","up","down","digits","shiftLine","tupletPoint","articulation","tremolo","spacing","offsetYStemUp","offsetYStemDown","offsetXStemUp","offsetXStemDown","grace","staveRepetition","symbolText","offsetX","offsetY","stem","heightAdjustmentForFlag","noteHead","offsetYBaseStemUp","offsetYBaseStemDown","flag","staveTempo","scale","ornament","stringNumber","verticalPadding","stemPadding","rightPadding","stroke","straight","wiggly","textNote","minPadding","standard","restQuarterStemUp","restQuarterStemDown","custom","noteheadCircleXStemUp","noteheadCircleXStemDown","noteheadDiamondHalfStemUp","noteheadDiamondBlackStemUp","noteheadDiamondWholeStemUp","noteheadXHalfStemUp","noteheadXHalfStemDown","noteheadXWholeStemUp","noteheadXWholeStemDown","noteheadXDoubleWholeStemUp","noteheadXDoubleWholeStemDown","noteheadSquareWhiteStemDown","noteheadSquareWhiteStemUp","noteheadSquareBlackStemUp","noteheadTriangleUpWholeStemUp","chordSymbol","global","superscriptOffset","subscriptOffset","kerningOffset","lowerKerningText","upperKerningText","superSubRatio","leftSideBearing","advanceWidth","yOffset","jazzOrnaments","xOffset","stemUpYOffset","reportedWidth","tuplet","noteHeadOffset","stemOffset","bottomLine","topModifierOffset"],"sourceRoot":""} \ No newline at end of file diff --git a/build/cjs/vexflow-font-custom.js b/build/cjs/vexflow-font-custom.js new file mode 100644 index 0000000000..3027b2a1ec --- /dev/null +++ b/build/cjs/vexflow-font-custom.js @@ -0,0 +1,2 @@ +!function(b,l){"object"==typeof exports&&"object"==typeof module?module.exports=l():"function"==typeof define&&define.amd?define([],l):"object"==typeof exports?exports.VexFlowFont=l():(b.VexFlowFont=b.VexFlowFont||{},b.VexFlowFont.Custom=l())}("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:this,(function(){return(()=>{"use strict";var b={d:(l,e)=>{for(var o in e)b.o(e,o)&&!b.o(l,o)&&Object.defineProperty(l,o,{enumerable:!0,get:e[o]})},o:(b,l)=>Object.prototype.hasOwnProperty.call(b,l)},l={};b.d(l,{default:()=>e});const e={data:{resolution:1e3,fontFamily:"VexFlowCustom",glyphs:{noteheadSquareWhite:{x_min:0,x_max:430.75,ha:386,o:"m 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 l 50 150 l 380 150 l 380 -150 l 50 -150 l 50 150 "},noteheadSquareBlack:{x_min:0,x_max:430.75,ha:386,o:"m 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 "},accidentalBuyukMucennebFlat:{x_min:-171.5,x_max:251.8125,ha:257,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 "},accidentalBakiyeFlat:{x_min:-176.9375,x_max:251.8125,ha:257,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 "},accidentalKucukMucennebSharp:{x_min:-1.359375,x_max:255.890625,ha:261,o:"m 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 "},accidentalKoron:{x_min:-20,x_max:320,ha:257,o:"m -8 200 b -8 210 8 200 16 200 l 20 148 -199 l 23 -615 b 0 -629 9 -629 6 -629 l -21 -612 l -21 -201 l -21 216 l -20 200 m 16 200 l 310 0 l 240 0 l 16 140 l 16 -120 l 240 0 l 310 0 l 16 -200 "},accidentalSori:{x_min:-10.890625,x_max:299.4375,ha:294,o:"m 44 174 b 51 174 47 174 49 174 b 68 173 55 174 61 174 l 287 112 l 551 40 b 615 20 617 22 609 23 b 626 0 622 16 626 8 b 615 -22 626 -9 622 -18 b 613 -23 613 -23 613 -23 b 613 -23 613 -23 613 -23 b 287 -113 613 -24 597 -29 l 68 -174 b 53 -176 61 -176 57 -176 b 39 -172 47 -176 43 -174 b 27 -151 31 -167 27 -159 b 39 -129 27 -141 31 -133 b 230 -74 43 -124 20 -131 l 370 -36 l 468 -9 b 498 0 484 -4 498 -1 b 468 8 498 0 484 2 l 370 34 l 230 73 b 40 126 28 129 43 124 b 27 149 31 131 27 140 b 44 174 27 161 34 170 m 205 110 l 205 300 b 205 330 245 330 245 300 l 245 300 l 245 -300 b 245 -330 205 -330 205 -300 l 205 -300 l 205 110 l 345 90 m 345 90 l 345 330 b 345 360 385 360 385 330 l 385 330 l 385 -270 b 385 -300 345 -300 345 -270 l 345 -270 l 345 90 "},vexAccidentalMicrotonal2:{x_min:-1.359375,x_max:386.5625,ha:394,o:"m 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 "},vexAccidentalMicrotonal3:{x_min:0,x_max:430.75,ha:360,o:"m -146 537 b -138 538 -143 538 -141 538 b -118 525 -129 538 -121 533 b -117 390 -117 522 -117 521 b -115 259 -117 268 -117 259 b -115 259 -115 259 -115 259 b -59 272 -104 263 -62 272 b -39 259 -50 272 -42 267 b -37 209 -38 257 -37 233 b -39 159 -37 185 -38 162 b -85 138 -43 149 -44 149 l -117 131 l -117 21 b -115 -88 -117 -80 -117 -88 b -115 -88 -115 -88 -115 -88 b -59 -75 -104 -84 -62 -75 b -44 -81 -52 -75 -48 -77 b -38 -124 -38 -87 -38 -85 b -38 -138 -38 -124 -38 -138 b -38 -152 -38 -138 -38 -152 b -44 -195 -38 -191 -38 -190 b -85 -209 -48 -200 -48 -200 l -117 -217 l -117 -349 b -118 -486 -117 -481 -117 -482 b -138 -499 -121 -494 -129 -499 b -153 -493 -143 -499 -149 -497 b -159 -415 -158 -487 -159 -496 b -159 -355 -159 -398 -159 -379 b -159 -227 -159 -284 -159 -227 b -205 -238 -159 -227 -180 -232 b -250 -249 -230 -244 -250 -249 b -251 -386 -251 -249 -251 -311 b -252 -525 -251 -521 -251 -522 b -272 -538 -255 -534 -264 -538 b -287 -532 -277 -538 -283 -536 b -293 -452 -292 -527 -293 -536 b -293 -391 -293 -436 -293 -415 b -294 -260 -293 -269 -293 -260 b -294 -260 -294 -260 -294 -260 b -348 -272 -306 -264 -345 -272 b -368 -259 -357 -272 -365 -267 b -369 -209 -369 -257 -369 -233 b -368 -159 -369 -185 -369 -162 b -323 -139 -364 -149 -362 -148 l -293 -131 l -293 -22 b -294 87 -293 80 -293 87 b -294 87 -294 87 -294 87 b -348 75 -306 84 -345 75 b -368 88 -357 75 -365 80 b -369 138 -369 91 -369 114 b -368 188 -369 162 -369 186 b -323 209 -364 198 -362 199 l -293 216 l -293 349 b -292 486 -293 481 -293 482 b -272 499 -288 494 -280 499 b -257 493 -266 499 -261 497 b -251 414 -251 487 -251 496 b -251 354 -251 398 -251 378 b -251 226 -251 284 -251 226 b -205 238 -250 226 -230 231 b -159 249 -180 244 -159 249 b -159 385 -159 249 -159 310 b -157 525 -159 521 -159 522 b -146 537 -156 530 -151 535 z m -159 11 b -159 120 -159 98 -159 120 l -159 120 b -175 116 -160 120 -167 119 b -221 105 -184 114 -204 109 l -251 98 l -251 -12 b -251 -121 -251 -72 -251 -121 b -205 -110 -250 -121 -230 -116 b -159 -99 -180 -104 -159 -99 b -159 11 -159 -99 -159 -49 z m 89 517 b 97 519 92 518 94 519 b 117 505 106 519 114 513 b 119 376 119 502 119 501 l 119 249 l 145 258 b 176 267 169 266 172 267 b 177 267 176 267 177 267 b 196 255 186 267 192 263 l 197 252 l 197 205 b 197 181 197 195 197 187 b 193 149 197 153 197 153 b 152 131 190 144 187 143 l 119 120 l 119 10 b 119 -100 119 -62 119 -100 b 145 -91 120 -100 131 -96 b 173 -82 159 -86 171 -82 b 176 -81 174 -81 175 -81 b 196 -94 185 -81 193 -87 b 198 -151 197 -97 198 -125 b 197 -194 198 -172 197 -192 b 153 -218 193 -203 192 -204 l 119 -230 l 119 -367 l 118 -504 l 117 -507 b 97 -519 113 -514 105 -519 b 82 -512 92 -519 87 -517 b 76 -434 77 -507 76 -516 b 76 -374 76 -418 76 -398 b 76 -245 76 -303 76 -245 b 52 -254 76 -245 65 -249 b 19 -263 34 -260 25 -263 b 6 -257 13 -263 10 -261 b 0 -214 0 -251 0 -253 b 0 -200 0 -210 0 -205 b 0 -188 0 -196 0 -192 b 6 -143 0 -147 0 -149 b 46 -126 10 -139 10 -139 l 76 -115 l 76 -5 b 76 106 76 56 76 106 b 51 98 76 106 64 102 b 18 89 34 92 25 89 b 6 95 13 89 10 91 b 0 139 0 101 0 99 b 0 153 0 143 0 148 b 0 179 0 163 0 172 b 44 225 0 215 3 211 l 76 236 l 76 369 b 78 505 76 501 76 502 b 89 517 80 510 85 515 z "},vexAccidentalMicrotonal4:{x_min:0,x_max:430.75,ha:360,o:"m 283 633 b 291 634 286 634 289 634 b 311 621 300 634 308 629 b 313 505 313 618 313 617 b 313 393 313 443 313 393 b 378 425 313 393 343 407 l 443 458 l 448 458 b 449 458 449 458 449 458 b 471 437 462 458 471 448 b 469 429 471 434 470 432 b 387 382 466 421 469 423 l 313 344 l 313 247 l 313 150 l 315 152 b 433 201 353 184 394 201 b 479 193 448 201 464 198 b 549 86 524 177 549 135 b 526 1 549 59 541 29 b 395 -143 504 -39 475 -71 b 316 -214 351 -182 341 -191 b 292 -229 302 -228 300 -229 b 272 -216 283 -229 275 -224 b 271 55 271 -212 271 -212 b 270 323 271 203 270 323 b 205 291 270 323 241 308 l 140 258 l 135 258 b 134 258 135 258 134 258 b 112 279 121 258 112 267 b 114 287 112 281 113 284 b 196 334 117 295 114 293 l 271 371 l 271 495 b 272 621 271 617 271 618 b 283 633 274 626 279 631 z m 404 133 b 391 134 400 134 395 134 b 384 134 388 134 386 134 b 318 88 358 130 335 114 l 313 81 l 313 -37 l 313 -156 l 316 -152 b 439 83 391 -71 439 22 l 439 84 b 404 133 439 115 430 128 z m -8 633 l -8 633 b 0 634 -6 634 -3 634 b 20 621 8 634 17 629 b 21 384 21 618 21 617 l 21 150 l 24 152 b 141 201 62 184 102 201 b 187 193 157 201 172 198 b 257 86 232 177 257 135 b 234 1 257 59 250 29 b 103 -143 212 -39 183 -71 b 24 -214 60 -182 49 -191 b 0 -229 10 -228 8 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 203 l -21 618 l -20 621 b -8 633 -18 626 -13 631 z m 113 133 l 113 133 b 99 134 109 134 103 134 b 93 134 97 134 94 134 b 26 88 66 130 43 114 l 21 81 l 21 -37 l 21 -156 l 25 -152 b 148 83 99 -71 148 22 l 148 84 b 113 133 148 115 138 128 z "},vexNoteHeadRectBlack:{x_min:0,x_max:430.75,ha:360,o:"m 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 "},vexNoteHeadRectWhite:{x_min:0,x_max:430.75,ha:360,o:"m 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 l 50 100 l 380 100 l 380 -100 l 50 -100 l 50 100"}}},metrics:{name:"VexFlowCustom",smufl:!1,glyphs:{}}};return l=l.default})()})); +//# sourceMappingURL=vexflow-font-custom.js.map \ No newline at end of file diff --git a/build/cjs/vexflow-font-custom.js.map b/build/cjs/vexflow-font-custom.js.map new file mode 100644 index 0000000000..43527eb659 --- /dev/null +++ b/build/cjs/vexflow-font-custom.js.map @@ -0,0 +1 @@ +{"version":3,"file":"vexflow-font-custom.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAqB,YAAID,KAEzBD,EAAkB,YAAIA,EAAkB,aAAK,GAAIA,EAAkB,YAAU,OAAIC,KARnF,CASsB,oBAAXK,OAAyBA,OAA+B,oBAAfC,WAA6BA,WAAaC,MAAO,WACrG,M,mBCTA,IAAIC,EAAsB,CCA1BA,EAAwB,CAACP,EAASQ,KACjC,IAAI,IAAIC,KAAOD,EACXD,EAAoBG,EAAEF,EAAYC,KAASF,EAAoBG,EAAEV,EAASS,IAC5EE,OAAOC,eAAeZ,EAASS,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,MCJ3EF,EAAwB,CAACQ,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,I,4BCA3E,MCQP,EAJoB,CAChBI,KDLsB,CACtBC,WAAY,IACZC,WAAY,gBACZC,OAAQ,CACJC,oBAAqB,CACjBC,MAAO,EACPC,MAAO,OACPC,GAAI,IACJjB,EAAG,mGAEPkB,oBAAqB,CACjBH,MAAO,EACPC,MAAO,OACPC,GAAI,IACJjB,EAAG,kDAEPmB,4BAA6B,CACzBJ,OAAQ,MACRC,MAAO,SACPC,GAAI,IACJjB,EAAG,+wCAEPoB,qBAAsB,CAClBL,OAAQ,SACRC,MAAO,SACPC,GAAI,IACJjB,EAAG,q6BAEPqB,6BAA8B,CAC1BN,OAAQ,SACRC,MAAO,WACPC,GAAI,IACJjB,EAAG,skDAEPsB,gBAAiB,CACbP,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,kMAEPuB,eAAgB,CACZR,OAAQ,UACRC,MAAO,SACPC,GAAI,IACJjB,EAAG,mvBAEPwB,yBAA0B,CACtBT,OAAQ,SACRC,MAAO,SACPC,GAAI,IACJjB,EAAG,23EAEPyB,yBAA0B,CACtBV,MAAO,EACPC,MAAO,OACPC,GAAI,IACJjB,EAAG,qoGAEP0B,yBAA0B,CACtBX,MAAO,EACPC,MAAO,OACPC,GAAI,IACJjB,EAAG,4gDAEP2B,qBAAsB,CAClBZ,MAAO,EACPC,MAAO,OACPC,GAAI,IACJjB,EAAG,kDAEP4B,qBAAsB,CAClBb,MAAO,EACPC,MAAO,OACPC,GAAI,IACJjB,EAAG,oGCpEX6B,QCNyB,CACzBC,KAAM,gBACNC,OAAO,EACPlB,OAAQ,K","sources":["webpack://VexFlowFont.Custom/webpack/universalModuleDefinition","webpack://VexFlowFont.Custom/webpack/bootstrap","webpack://VexFlowFont.Custom/webpack/runtime/define property getters","webpack://VexFlowFont.Custom/webpack/runtime/hasOwnProperty shorthand","webpack://VexFlowFont.Custom/./src/fonts/custom_glyphs.ts","webpack://VexFlowFont.Custom/./entry/vexflow-font-custom.ts","webpack://VexFlowFont.Custom/./src/fonts/custom_metrics.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VexFlowFont\"] = factory();\n\telse\n\t\troot[\"VexFlowFont\"] = root[\"VexFlowFont\"] || {}, root[\"VexFlowFont\"][\"Custom\"] = factory();\n})((typeof window !== 'undefined' ? window : typeof globalThis !== 'undefined' ? globalThis : this), function() {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","export const CustomFont = {\n resolution: 1000,\n fontFamily: 'VexFlowCustom',\n glyphs: {\n noteheadSquareWhite: {\n x_min: 0,\n x_max: 430.75,\n ha: 386,\n o: 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 l 50 150 l 380 150 l 380 -150 l 50 -150 l 50 150 ',\n },\n noteheadSquareBlack: {\n x_min: 0,\n x_max: 430.75,\n ha: 386,\n o: 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 ',\n },\n accidentalBuyukMucennebFlat: {\n x_min: -171.5,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalBakiyeFlat: {\n x_min: -176.9375,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalKucukMucennebSharp: {\n x_min: -1.359375,\n x_max: 255.890625,\n ha: 261,\n o: 'm 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 ',\n },\n accidentalKoron: {\n x_min: -20,\n x_max: 320,\n ha: 257,\n o: 'm -8 200 b -8 210 8 200 16 200 l 20 148 -199 l 23 -615 b 0 -629 9 -629 6 -629 l -21 -612 l -21 -201 l -21 216 l -20 200 m 16 200 l 310 0 l 240 0 l 16 140 l 16 -120 l 240 0 l 310 0 l 16 -200 ',\n },\n accidentalSori: {\n x_min: -10.890625,\n x_max: 299.4375,\n ha: 294,\n o: 'm 44 174 b 51 174 47 174 49 174 b 68 173 55 174 61 174 l 287 112 l 551 40 b 615 20 617 22 609 23 b 626 0 622 16 626 8 b 615 -22 626 -9 622 -18 b 613 -23 613 -23 613 -23 b 613 -23 613 -23 613 -23 b 287 -113 613 -24 597 -29 l 68 -174 b 53 -176 61 -176 57 -176 b 39 -172 47 -176 43 -174 b 27 -151 31 -167 27 -159 b 39 -129 27 -141 31 -133 b 230 -74 43 -124 20 -131 l 370 -36 l 468 -9 b 498 0 484 -4 498 -1 b 468 8 498 0 484 2 l 370 34 l 230 73 b 40 126 28 129 43 124 b 27 149 31 131 27 140 b 44 174 27 161 34 170 m 205 110 l 205 300 b 205 330 245 330 245 300 l 245 300 l 245 -300 b 245 -330 205 -330 205 -300 l 205 -300 l 205 110 l 345 90 m 345 90 l 345 330 b 345 360 385 360 385 330 l 385 330 l 385 -270 b 385 -300 345 -300 345 -270 l 345 -270 l 345 90 ',\n },\n vexAccidentalMicrotonal2: {\n x_min: -1.359375,\n x_max: 386.5625,\n ha: 394,\n o: 'm 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 ',\n },\n vexAccidentalMicrotonal3: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm -146 537 b -138 538 -143 538 -141 538 b -118 525 -129 538 -121 533 b -117 390 -117 522 -117 521 b -115 259 -117 268 -117 259 b -115 259 -115 259 -115 259 b -59 272 -104 263 -62 272 b -39 259 -50 272 -42 267 b -37 209 -38 257 -37 233 b -39 159 -37 185 -38 162 b -85 138 -43 149 -44 149 l -117 131 l -117 21 b -115 -88 -117 -80 -117 -88 b -115 -88 -115 -88 -115 -88 b -59 -75 -104 -84 -62 -75 b -44 -81 -52 -75 -48 -77 b -38 -124 -38 -87 -38 -85 b -38 -138 -38 -124 -38 -138 b -38 -152 -38 -138 -38 -152 b -44 -195 -38 -191 -38 -190 b -85 -209 -48 -200 -48 -200 l -117 -217 l -117 -349 b -118 -486 -117 -481 -117 -482 b -138 -499 -121 -494 -129 -499 b -153 -493 -143 -499 -149 -497 b -159 -415 -158 -487 -159 -496 b -159 -355 -159 -398 -159 -379 b -159 -227 -159 -284 -159 -227 b -205 -238 -159 -227 -180 -232 b -250 -249 -230 -244 -250 -249 b -251 -386 -251 -249 -251 -311 b -252 -525 -251 -521 -251 -522 b -272 -538 -255 -534 -264 -538 b -287 -532 -277 -538 -283 -536 b -293 -452 -292 -527 -293 -536 b -293 -391 -293 -436 -293 -415 b -294 -260 -293 -269 -293 -260 b -294 -260 -294 -260 -294 -260 b -348 -272 -306 -264 -345 -272 b -368 -259 -357 -272 -365 -267 b -369 -209 -369 -257 -369 -233 b -368 -159 -369 -185 -369 -162 b -323 -139 -364 -149 -362 -148 l -293 -131 l -293 -22 b -294 87 -293 80 -293 87 b -294 87 -294 87 -294 87 b -348 75 -306 84 -345 75 b -368 88 -357 75 -365 80 b -369 138 -369 91 -369 114 b -368 188 -369 162 -369 186 b -323 209 -364 198 -362 199 l -293 216 l -293 349 b -292 486 -293 481 -293 482 b -272 499 -288 494 -280 499 b -257 493 -266 499 -261 497 b -251 414 -251 487 -251 496 b -251 354 -251 398 -251 378 b -251 226 -251 284 -251 226 b -205 238 -250 226 -230 231 b -159 249 -180 244 -159 249 b -159 385 -159 249 -159 310 b -157 525 -159 521 -159 522 b -146 537 -156 530 -151 535 z m -159 11 b -159 120 -159 98 -159 120 l -159 120 b -175 116 -160 120 -167 119 b -221 105 -184 114 -204 109 l -251 98 l -251 -12 b -251 -121 -251 -72 -251 -121 b -205 -110 -250 -121 -230 -116 b -159 -99 -180 -104 -159 -99 b -159 11 -159 -99 -159 -49 z m 89 517 b 97 519 92 518 94 519 b 117 505 106 519 114 513 b 119 376 119 502 119 501 l 119 249 l 145 258 b 176 267 169 266 172 267 b 177 267 176 267 177 267 b 196 255 186 267 192 263 l 197 252 l 197 205 b 197 181 197 195 197 187 b 193 149 197 153 197 153 b 152 131 190 144 187 143 l 119 120 l 119 10 b 119 -100 119 -62 119 -100 b 145 -91 120 -100 131 -96 b 173 -82 159 -86 171 -82 b 176 -81 174 -81 175 -81 b 196 -94 185 -81 193 -87 b 198 -151 197 -97 198 -125 b 197 -194 198 -172 197 -192 b 153 -218 193 -203 192 -204 l 119 -230 l 119 -367 l 118 -504 l 117 -507 b 97 -519 113 -514 105 -519 b 82 -512 92 -519 87 -517 b 76 -434 77 -507 76 -516 b 76 -374 76 -418 76 -398 b 76 -245 76 -303 76 -245 b 52 -254 76 -245 65 -249 b 19 -263 34 -260 25 -263 b 6 -257 13 -263 10 -261 b 0 -214 0 -251 0 -253 b 0 -200 0 -210 0 -205 b 0 -188 0 -196 0 -192 b 6 -143 0 -147 0 -149 b 46 -126 10 -139 10 -139 l 76 -115 l 76 -5 b 76 106 76 56 76 106 b 51 98 76 106 64 102 b 18 89 34 92 25 89 b 6 95 13 89 10 91 b 0 139 0 101 0 99 b 0 153 0 143 0 148 b 0 179 0 163 0 172 b 44 225 0 215 3 211 l 76 236 l 76 369 b 78 505 76 501 76 502 b 89 517 80 510 85 515 z ',\n },\n vexAccidentalMicrotonal4: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 283 633 b 291 634 286 634 289 634 b 311 621 300 634 308 629 b 313 505 313 618 313 617 b 313 393 313 443 313 393 b 378 425 313 393 343 407 l 443 458 l 448 458 b 449 458 449 458 449 458 b 471 437 462 458 471 448 b 469 429 471 434 470 432 b 387 382 466 421 469 423 l 313 344 l 313 247 l 313 150 l 315 152 b 433 201 353 184 394 201 b 479 193 448 201 464 198 b 549 86 524 177 549 135 b 526 1 549 59 541 29 b 395 -143 504 -39 475 -71 b 316 -214 351 -182 341 -191 b 292 -229 302 -228 300 -229 b 272 -216 283 -229 275 -224 b 271 55 271 -212 271 -212 b 270 323 271 203 270 323 b 205 291 270 323 241 308 l 140 258 l 135 258 b 134 258 135 258 134 258 b 112 279 121 258 112 267 b 114 287 112 281 113 284 b 196 334 117 295 114 293 l 271 371 l 271 495 b 272 621 271 617 271 618 b 283 633 274 626 279 631 z m 404 133 b 391 134 400 134 395 134 b 384 134 388 134 386 134 b 318 88 358 130 335 114 l 313 81 l 313 -37 l 313 -156 l 316 -152 b 439 83 391 -71 439 22 l 439 84 b 404 133 439 115 430 128 z m -8 633 l -8 633 b 0 634 -6 634 -3 634 b 20 621 8 634 17 629 b 21 384 21 618 21 617 l 21 150 l 24 152 b 141 201 62 184 102 201 b 187 193 157 201 172 198 b 257 86 232 177 257 135 b 234 1 257 59 250 29 b 103 -143 212 -39 183 -71 b 24 -214 60 -182 49 -191 b 0 -229 10 -228 8 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 203 l -21 618 l -20 621 b -8 633 -18 626 -13 631 z m 113 133 l 113 133 b 99 134 109 134 103 134 b 93 134 97 134 94 134 b 26 88 66 130 43 114 l 21 81 l 21 -37 l 21 -156 l 25 -152 b 148 83 99 -71 148 22 l 148 84 b 113 133 148 115 138 128 z ',\n },\n vexNoteHeadRectBlack: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 ',\n },\n vexNoteHeadRectWhite: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 l 50 100 l 380 100 l 380 -100 l 50 -100 l 50 100',\n },\n },\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { CustomFont } from '../src/fonts/custom_glyphs';\nimport { CustomMetrics } from '../src/fonts/custom_metrics';\nexport const Font = {\n data: CustomFont,\n metrics: CustomMetrics,\n};\nexport default Font;\n","export const CustomMetrics = {\n name: 'VexFlowCustom',\n smufl: false,\n glyphs: {},\n};\n"],"names":["root","factory","exports","module","define","amd","window","globalThis","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","data","resolution","fontFamily","glyphs","noteheadSquareWhite","x_min","x_max","ha","noteheadSquareBlack","accidentalBuyukMucennebFlat","accidentalBakiyeFlat","accidentalKucukMucennebSharp","accidentalKoron","accidentalSori","vexAccidentalMicrotonal2","vexAccidentalMicrotonal3","vexAccidentalMicrotonal4","vexNoteHeadRectBlack","vexNoteHeadRectWhite","metrics","name","smufl"],"sourceRoot":""} \ No newline at end of file diff --git a/build/cjs/vexflow-font-gonville.js b/build/cjs/vexflow-font-gonville.js new file mode 100644 index 0000000000..3d0220a8bb --- /dev/null +++ b/build/cjs/vexflow-font-gonville.js @@ -0,0 +1,2 @@ +!function(b,l){"object"==typeof exports&&"object"==typeof module?module.exports=l():"function"==typeof define&&define.amd?define([],l):"object"==typeof exports?exports.VexFlowFont=l():(b.VexFlowFont=b.VexFlowFont||{},b.VexFlowFont.Gonville=l())}("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:this,(function(){return(()=>{"use strict";var b={d:(l,a)=>{for(var e in a)b.o(a,e)&&!b.o(l,e)&&Object.defineProperty(l,e,{enumerable:!0,get:a[e]})},o:(b,l)=>Object.prototype.hasOwnProperty.call(b,l)},l={};b.d(l,{default:()=>a});const a={data:{glyphs:{bracketTop:{x_min:0,x_max:559.421875,ha:571,o:"m 544 204 b 548 204 545 204 547 204 b 559 194 555 204 559 199 b 559 190 559 192 559 191 b 530 156 559 188 556 184 b 462 86 510 134 481 104 b 453 76 458 81 454 77 l 446 70 l 441 65 b 434 59 439 63 436 61 l 427 54 b 409 37 426 51 416 44 b 392 23 398 29 394 26 b 387 19 389 22 387 20 b 379 13 386 19 383 16 l 371 8 l 367 5 l 359 -1 l 337 -16 b 285 -48 319 -29 298 -41 l 279 -52 b 186 -95 255 -66 210 -87 l 175 -99 b 23 -129 127 -117 68 -129 b 17 -129 20 -129 19 -129 b 1 -123 2 -129 2 -129 b 0 -49 0 -122 0 -83 b 0 4 0 -22 0 1 b 27 11 2 9 4 9 b 185 31 78 12 145 20 b 198 34 186 31 193 33 b 314 73 234 44 277 58 b 349 88 328 79 340 84 b 353 90 352 90 353 90 b 363 94 353 90 357 93 b 371 98 367 97 371 98 b 428 129 372 98 413 120 b 461 148 441 136 454 144 b 468 151 464 149 466 151 b 472 154 469 152 470 154 b 481 161 473 155 477 158 b 525 190 490 166 518 186 l 534 197 b 540 201 536 198 539 199 b 544 204 541 202 544 204 "},bracketBottom:{x_min:0,x_max:559.421875,ha:571,o:"m 5 127 b 14 127 6 127 9 127 b 51 126 25 127 43 127 b 175 98 93 122 138 112 l 186 94 b 279 51 210 86 255 65 b 285 47 280 51 283 48 b 319 27 291 44 311 31 l 326 22 b 359 0 332 19 352 4 l 367 -6 b 371 -9 368 -6 370 -8 l 379 -15 b 387 -22 383 -18 386 -20 l 398 -30 l 411 -40 l 417 -47 l 427 -55 l 434 -61 b 441 -66 436 -62 439 -65 l 446 -72 l 453 -77 l 462 -87 b 558 -188 490 -113 549 -176 b 559 -195 559 -191 559 -194 b 548 -205 559 -201 555 -205 b 541 -204 547 -205 544 -205 b 534 -198 539 -201 536 -199 l 525 -191 b 481 -162 518 -187 490 -167 b 472 -155 477 -159 472 -156 b 468 -152 470 -155 469 -154 b 461 -149 466 -152 464 -151 b 428 -130 454 -145 441 -137 b 371 -99 413 -122 372 -99 b 363 -95 371 -99 367 -98 b 353 -91 357 -94 353 -91 b 348 -90 353 -91 352 -91 b 332 -81 343 -87 341 -86 b 27 -12 230 -37 127 -13 b 0 -5 4 -11 2 -11 b 0 58 0 -2 0 27 b 0 122 0 88 0 120 b 5 127 1 124 4 126 "},barlineTick:{x_min:-80.3125,x_max:78.9375,ha:81,o:"m 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 "},breathMarkTick:{x_min:-80.3125,x_max:78.9375,ha:81,o:"m 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 "},segno:{x_min:-330.75,x_max:329.390625,ha:336,o:"m -133 483 b -117 484 -127 484 -122 484 b 31 373 -51 484 9 440 b 35 348 34 365 35 356 b -25 285 35 313 10 285 b -87 331 -55 285 -76 302 b -167 402 -100 376 -133 402 b -191 398 -175 402 -183 401 b -227 341 -215 388 -227 369 b -225 320 -227 334 -227 327 b -13 74 -209 230 -125 133 b 6 65 -4 70 5 66 l 9 63 l 10 65 b 117 231 12 68 40 112 l 189 341 l 242 424 b 268 460 262 456 264 458 b 283 464 273 463 277 464 b 308 438 296 464 308 453 l 308 437 b 287 396 308 430 308 428 l 95 98 l 59 43 l 58 41 l 65 37 b 253 -156 151 -8 217 -77 b 281 -285 272 -199 281 -244 b 148 -481 281 -381 231 -463 b 115 -485 137 -484 126 -485 b -32 -376 51 -485 -9 -442 b -36 -349 -35 -366 -36 -358 b 25 -287 -36 -315 -12 -287 b 85 -333 54 -287 74 -302 b 166 -403 99 -377 133 -403 b 190 -399 174 -403 182 -402 b 225 -342 215 -390 225 -370 b 224 -322 225 -335 225 -328 b 12 -76 208 -231 125 -134 b -8 -66 2 -72 -6 -68 l -10 -65 l -12 -66 b -118 -231 -13 -68 -42 -113 l -190 -342 l -243 -426 b -269 -462 -264 -458 -265 -458 b -284 -466 -274 -464 -279 -466 b -310 -440 -298 -466 -310 -455 l -310 -438 b -288 -398 -310 -430 -308 -430 l -96 -99 l -59 -44 l -59 -43 l -66 -38 b -281 284 -198 33 -281 158 l -281 284 b -133 483 -281 392 -220 474 m 254 177 b 266 179 258 177 262 179 b 319 149 287 179 307 167 b 329 115 326 140 329 127 b 319 79 329 102 326 90 b 268 51 307 61 287 51 b 221 72 250 51 234 58 b 205 115 210 84 205 99 b 254 177 205 142 223 170 m -281 -54 b -269 -52 -277 -52 -273 -52 b -223 -73 -253 -52 -235 -59 b -206 -116 -212 -84 -206 -101 b -216 -151 -206 -129 -209 -141 b -269 -179 -228 -170 -249 -179 b -314 -159 -285 -179 -302 -173 b -330 -116 -325 -147 -330 -131 b -281 -54 -330 -88 -313 -61 "},coda:{x_min:-311.6875,x_max:310.328125,ha:317,o:"m -9 388 b -2 390 -8 390 -5 390 b 5 388 1 390 4 390 b 19 378 10 387 16 383 b 23 333 23 371 23 371 b 24 298 23 299 24 298 b 81 276 34 298 65 285 b 213 91 145 240 190 177 b 224 24 217 76 224 36 b 257 24 224 24 235 24 b 299 19 292 24 292 24 b 310 -1 306 15 310 6 b 299 -23 310 -11 306 -19 b 257 -27 292 -27 292 -27 b 224 -29 235 -27 224 -29 b 213 -95 224 -40 217 -80 b 81 -280 190 -181 145 -244 b 24 -301 65 -290 34 -301 b 23 -335 24 -301 23 -303 l 23 -340 b 17 -381 23 -374 23 -374 b -1 -391 13 -388 5 -391 b -21 -381 -9 -391 -17 -388 b -27 -340 -27 -374 -27 -374 l -27 -335 b -28 -301 -27 -303 -27 -301 b -85 -280 -38 -301 -69 -290 b -217 -95 -149 -244 -194 -181 b -228 -29 -221 -80 -228 -40 b -259 -27 -228 -29 -238 -27 b -300 -23 -294 -27 -294 -27 b -311 -2 -307 -19 -311 -11 b -294 23 -311 8 -304 19 b -259 24 -291 23 -284 24 b -228 24 -239 24 -228 24 b -217 91 -228 36 -221 76 b -85 276 -194 177 -149 240 b -28 298 -69 285 -38 298 b -27 333 -27 298 -27 299 b -27 371 -27 362 -27 369 b -9 388 -24 378 -17 385 m -27 136 b -28 247 -27 197 -28 247 b -61 216 -31 247 -53 226 b -123 33 -95 172 -121 98 l -125 24 l -76 24 l -27 24 l -27 136 m 29 242 b 24 247 27 245 24 247 b 23 136 24 247 23 197 l 23 24 l 72 24 l 121 24 l 119 33 b 29 242 115 116 77 206 m -27 -140 l -27 -27 l -76 -27 l -125 -27 l -123 -36 b -61 -220 -121 -102 -95 -176 b -28 -251 -53 -230 -31 -251 b -27 -140 -28 -251 -27 -201 m 119 -36 l 121 -27 l 72 -27 l 23 -27 l 23 -140 b 24 -251 23 -201 24 -251 b 57 -220 27 -251 49 -230 b 119 -36 91 -176 117 -102 "},gClef:{x_min:-1.359375,x_max:847.96875,ha:865,o:"m 488 1499 b 495 1500 490 1500 492 1500 b 541 1465 507 1500 521 1490 b 679 1078 622 1372 679 1210 b 677 1050 679 1068 677 1060 b 477 642 668 893 604 764 l 443 609 l 431 596 l 431 592 l 438 562 l 449 508 l 460 458 b 481 355 475 390 481 355 b 481 355 481 355 481 355 b 490 356 481 355 485 355 b 528 358 495 356 511 358 b 558 356 540 358 552 356 b 839 95 699 338 808 237 b 847 22 845 72 847 47 b 631 -303 847 -113 766 -242 b 620 -309 623 -308 620 -309 l 620 -310 b 631 -359 620 -310 626 -333 l 646 -435 l 660 -496 b 672 -588 668 -535 672 -563 b 664 -653 672 -610 669 -630 b 383 -875 630 -792 509 -875 b 201 -810 321 -875 257 -855 b 129 -680 151 -768 129 -730 b 274 -530 129 -592 200 -530 b 351 -553 300 -530 326 -538 b 412 -669 393 -582 412 -626 b 287 -805 412 -735 366 -800 l 279 -805 l 285 -809 b 383 -830 318 -823 351 -830 b 586 -718 464 -830 540 -789 b 626 -584 612 -678 626 -631 b 619 -528 626 -566 623 -548 b 612 -495 619 -526 616 -510 b 577 -324 590 -387 577 -324 b 577 -324 577 -324 577 -324 b 568 -326 575 -324 571 -324 b 528 -334 558 -328 537 -333 b 465 -338 506 -337 485 -338 b 24 -11 269 -338 87 -206 b -1 145 8 41 -1 93 b 96 442 -1 249 32 351 b 322 714 166 541 236 626 l 352 745 l 345 782 l 332 843 l 315 921 b 303 984 310 950 304 978 b 295 1082 298 1017 295 1049 b 413 1426 295 1208 336 1329 b 488 1499 436 1456 477 1496 m 549 1301 b 541 1301 547 1301 544 1301 b 411 1207 500 1301 447 1263 b 355 1004 374 1152 355 1079 b 359 942 355 984 356 963 b 371 881 362 927 363 917 l 385 818 b 392 782 389 799 392 784 l 392 782 b 434 828 393 782 424 816 b 607 1165 534 941 594 1060 b 608 1193 608 1175 608 1183 b 597 1270 608 1224 604 1254 b 549 1301 589 1286 571 1299 m 398 528 b 393 555 396 542 393 553 b 392 555 393 555 393 555 b 317 470 390 555 347 505 b 190 298 266 408 212 334 b 127 70 148 227 127 148 b 155 -77 127 19 137 -30 b 468 -303 209 -216 333 -303 b 519 -299 484 -303 502 -302 b 568 -284 541 -295 568 -287 l 568 -284 b 563 -263 568 -284 566 -274 l 534 -120 l 511 -13 l 496 61 l 480 133 b 469 187 472 176 469 187 b 468 188 469 187 469 188 b 416 162 462 188 430 172 b 337 13 364 126 337 69 b 413 -124 337 -40 363 -93 b 428 -144 424 -131 428 -137 b 428 -149 428 -145 428 -148 b 409 -166 426 -161 419 -166 b 394 -162 405 -166 400 -165 b 240 77 302 -122 240 -27 l 240 77 b 430 342 240 197 315 301 l 436 344 l 426 394 l 398 528 m 548 194 b 526 195 540 195 532 195 b 519 195 524 195 521 195 l 514 195 l 518 177 l 539 79 l 552 15 l 566 -48 l 594 -187 l 605 -240 b 612 -266 609 -254 611 -266 b 612 -266 612 -266 612 -266 b 641 -248 613 -266 630 -256 b 744 -98 692 -212 730 -156 b 751 -40 749 -79 751 -59 b 548 194 751 76 665 181 "},cClef:{x_min:0,x_max:873.828125,ha:892,o:"m 0 0 l 0 703 l 81 703 l 164 703 l 164 0 l 164 -705 l 81 -705 l 0 -705 l 0 0 m 225 0 l 225 703 l 246 703 l 268 703 l 268 366 l 268 30 l 274 36 b 314 79 284 44 302 63 b 413 302 357 137 392 213 b 432 327 419 324 421 327 b 449 306 443 327 447 322 b 611 115 457 195 529 115 b 651 122 624 115 638 117 b 728 316 705 140 724 188 b 729 388 728 342 729 366 b 671 635 729 533 711 602 b 581 662 649 652 616 662 b 477 637 545 662 510 653 l 475 635 l 477 634 b 503 627 488 632 495 631 b 545 556 532 612 545 584 b 491 480 545 524 526 491 b 465 474 481 476 473 474 b 379 563 417 474 379 516 b 389 602 379 576 382 588 b 541 691 409 641 479 681 b 582 694 555 692 568 694 b 865 462 714 694 834 598 b 873 392 871 440 873 416 b 865 317 873 367 871 341 b 639 84 839 194 748 101 b 612 83 630 83 620 83 b 511 116 577 83 543 94 b 504 120 509 119 506 120 b 504 120 504 120 504 120 b 469 59 504 120 488 93 l 432 -1 l 469 -61 b 504 -122 488 -94 504 -122 b 504 -122 504 -122 504 -122 b 511 -117 506 -122 509 -120 b 612 -84 543 -95 577 -84 b 665 -91 630 -84 647 -87 b 869 -338 771 -122 850 -216 b 873 -392 872 -356 873 -374 b 798 -595 873 -469 847 -539 b 581 -695 741 -662 660 -695 b 406 -626 517 -695 454 -671 b 381 -563 389 -607 381 -585 b 465 -477 381 -519 413 -477 b 545 -559 514 -477 545 -519 b 503 -628 545 -587 532 -613 b 477 -635 495 -632 488 -634 l 475 -637 l 477 -638 b 581 -663 510 -655 545 -663 b 671 -637 616 -663 649 -653 b 729 -391 711 -603 729 -534 b 728 -317 729 -367 728 -344 b 623 -117 722 -173 698 -124 b 611 -116 619 -116 615 -116 b 449 -308 528 -116 457 -198 b 432 -328 447 -323 443 -328 b 413 -303 421 -328 419 -326 b 314 -80 392 -215 357 -138 b 274 -37 302 -65 284 -45 l 268 -31 l 268 -367 l 268 -705 l 246 -705 l 225 -705 l 225 0 "},fClef:{x_min:-1.359375,x_max:899.703125,ha:918,o:"m 307 349 b 332 351 315 351 323 351 b 443 340 367 351 408 347 b 741 47 607 306 720 195 b 744 0 743 31 744 16 b 660 -303 744 -90 713 -206 b 28 -755 534 -531 304 -695 b 14 -756 23 -755 19 -756 b -1 -741 4 -756 -1 -750 b 21 -720 -1 -731 1 -728 b 567 -56 337 -601 548 -344 b 568 -11 568 -41 568 -24 b 442 285 568 129 525 233 b 325 319 406 308 367 319 b 93 177 232 319 137 266 b 84 154 91 170 84 155 b 84 154 84 154 84 154 b 88 156 84 154 85 155 b 159 177 110 170 134 177 b 257 134 194 177 231 162 b 294 41 281 108 294 73 b 171 -97 294 -24 246 -90 b 156 -98 166 -97 161 -98 b 6 74 73 -98 6 -22 b 6 80 6 76 6 79 b 307 349 10 223 141 340 m 839 215 b 845 216 841 216 842 216 b 862 213 852 216 860 215 b 899 163 887 206 899 184 b 872 117 899 145 890 127 b 847 111 865 112 856 111 b 808 130 833 111 818 117 b 796 162 800 140 796 151 b 839 215 796 187 812 212 m 839 -112 b 845 -112 841 -112 842 -112 b 862 -115 852 -112 860 -113 b 899 -165 887 -122 899 -144 b 872 -210 899 -183 890 -201 b 847 -217 865 -215 856 -217 b 808 -198 833 -217 818 -210 b 796 -165 800 -188 796 -177 b 839 -112 796 -140 812 -116 "},unpitchedPercussionClef1:{x_min:0,x_max:464.140625,ha:474,o:"m 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 "},"6stringTabClef":{x_min:-1.359375,x_max:680.5625,ha:694,o:"m 597 1042 b 604 1042 600 1042 602 1042 b 642 1002 627 1042 642 1022 b 619 966 642 988 635 974 b 439 927 574 942 503 927 l 426 927 l 426 921 b 430 838 428 893 430 866 b 345 480 430 696 398 560 b 179 391 307 423 249 391 b 156 392 171 391 164 392 b 138 394 149 394 142 394 b 103 434 115 396 103 416 b 129 471 103 451 111 466 b 141 474 133 473 137 474 b 172 459 153 474 164 469 b 181 455 175 456 176 455 b 187 456 182 455 185 455 b 253 520 212 460 234 483 b 315 836 294 605 315 714 b 311 928 315 867 314 898 b 302 945 310 943 311 942 b 245 953 283 950 262 953 b 130 891 193 953 149 931 b 84 860 119 870 102 860 b 36 905 61 860 39 877 b 36 910 36 907 36 909 b 80 970 36 931 50 949 b 249 1017 125 1000 187 1017 b 322 1009 273 1017 299 1014 l 341 1003 b 436 991 372 995 406 991 b 577 1031 495 991 545 1004 b 597 1042 583 1038 590 1041 m 416 360 b 424 360 419 360 421 360 b 481 309 454 360 479 338 b 503 145 484 280 495 199 b 585 -185 525 16 555 -106 b 630 -245 596 -213 613 -237 l 634 -247 l 638 -245 b 647 -244 641 -245 645 -244 b 680 -278 666 -244 680 -262 b 664 -308 680 -290 675 -301 b 638 -312 658 -310 650 -312 b 613 -309 631 -312 623 -310 b 477 -201 555 -303 502 -260 b 417 -2 460 -159 434 -72 b 416 5 417 1 416 5 b 416 5 416 5 416 5 b 411 -5 415 5 413 0 b 359 -97 397 -33 377 -70 b 353 -106 355 -102 353 -105 b 359 -112 353 -108 355 -109 b 409 -130 375 -123 390 -129 b 426 -134 420 -130 421 -131 b 431 -147 428 -137 431 -141 b 420 -162 431 -152 427 -159 b 382 -169 409 -166 396 -169 b 323 -155 363 -169 341 -165 l 317 -152 l 314 -155 b 62 -303 240 -240 148 -295 b 36 -305 55 -305 44 -305 b 23 -303 29 -305 24 -305 b -1 -273 6 -299 -1 -287 b 31 -240 -1 -256 10 -240 b 36 -240 32 -240 34 -240 b 42 -241 38 -241 39 -241 b 134 -204 63 -241 99 -226 b 367 288 265 -115 357 81 b 375 330 368 313 370 320 b 416 360 383 347 400 358 m 360 -359 b 379 -359 363 -359 371 -359 b 424 -360 396 -359 416 -359 b 646 -502 536 -373 624 -430 b 649 -527 649 -510 649 -519 b 530 -673 649 -578 604 -635 l 521 -677 l 529 -681 b 653 -811 592 -714 637 -762 b 660 -853 658 -827 660 -839 b 645 -911 660 -873 656 -892 b 426 -1021 608 -981 519 -1021 b 283 -989 377 -1021 328 -1011 b 235 -949 249 -972 239 -964 b 234 -936 234 -946 234 -941 b 234 -928 234 -934 234 -931 l 235 -925 l 234 -927 l 225 -934 b 87 -982 186 -966 138 -982 b 80 -982 85 -982 83 -982 b 55 -981 70 -981 58 -981 b 17 -943 32 -981 17 -964 b 54 -904 17 -921 35 -904 b 78 -914 62 -904 72 -909 l 83 -918 l 88 -918 b 190 -831 122 -918 166 -881 b 269 -506 242 -727 269 -612 b 268 -462 269 -492 269 -477 b 266 -449 266 -458 266 -452 b 265 -444 266 -445 266 -444 b 257 -446 264 -444 261 -445 b 132 -545 196 -470 152 -505 b 88 -573 122 -563 104 -573 b 39 -523 63 -573 39 -553 b 63 -476 39 -505 44 -494 b 360 -359 136 -408 235 -369 m 419 -424 b 393 -423 411 -423 406 -423 l 375 -423 l 377 -426 b 379 -439 377 -427 378 -434 b 383 -510 382 -463 383 -487 b 314 -811 383 -609 360 -710 b 266 -893 296 -850 285 -870 b 264 -898 265 -896 264 -898 l 264 -898 b 264 -898 264 -898 264 -898 b 268 -898 264 -898 266 -898 b 273 -898 270 -898 272 -898 b 300 -909 283 -898 291 -900 b 426 -957 340 -941 385 -957 b 476 -949 443 -957 460 -954 b 547 -853 522 -931 547 -893 b 485 -745 547 -816 526 -775 b 397 -707 460 -727 432 -714 b 366 -675 375 -703 366 -692 b 396 -642 366 -657 377 -645 b 530 -557 455 -637 511 -601 b 536 -527 534 -548 536 -537 b 419 -424 536 -480 490 -437 "},timeSig0:{x_min:0,x_max:514.5,ha:525,o:"m 236 648 b 246 648 238 648 242 648 b 288 646 261 648 283 648 b 472 513 364 634 428 587 b 514 347 502 464 514 413 b 462 163 514 272 499 217 b 257 44 409 83 333 44 b 50 163 181 44 103 83 b 0 347 14 217 0 272 b 40 513 0 413 12 464 b 236 648 87 591 155 638 m 277 614 b 253 616 273 616 261 616 b 242 616 247 616 243 616 b 170 499 193 609 181 589 b 159 348 163 446 159 398 b 166 222 159 308 161 266 b 201 91 174 138 183 106 b 257 76 215 81 235 76 b 311 91 277 76 299 81 b 347 222 330 106 338 138 b 353 348 352 266 353 308 b 344 499 353 398 351 446 b 277 614 333 587 322 606 m 257 -1 l 258 -1 l 255 -1 l 257 -1 m 257 673 l 258 673 l 255 673 l 257 673 "},timeSig1:{x_min:-1.359375,x_max:344.359375,ha:351,o:"m 126 637 l 129 638 l 198 638 l 266 638 l 269 635 b 274 631 272 634 273 632 l 277 627 l 277 395 b 279 156 277 230 277 161 b 329 88 281 123 295 106 b 344 69 341 81 344 79 b 337 55 344 62 343 59 l 333 54 l 197 54 l 61 54 l 58 55 b 50 69 53 59 50 62 b 65 88 50 79 53 81 b 80 97 72 91 74 93 b 117 156 103 113 112 129 b 117 345 117 161 117 222 l 117 528 l 100 503 l 38 406 b 14 383 24 384 23 383 b -1 398 5 383 -1 390 b 4 415 -1 403 1 409 b 16 437 5 416 10 426 l 72 539 l 100 596 b 121 632 119 631 119 631 b 126 637 122 634 125 635 m 171 -1 l 172 -1 l 170 -1 l 171 -1 m 171 673 l 172 673 l 170 673 l 171 673 "},timeSig2:{x_min:-1.359375,x_max:458.6875,ha:468,o:"m 197 648 b 216 648 201 648 208 648 b 258 646 232 648 253 648 b 419 546 333 637 393 599 b 432 489 428 528 432 509 b 356 342 432 440 405 384 b 235 278 322 313 288 295 b 69 170 166 256 107 217 b 69 169 69 170 69 169 b 69 169 69 169 69 169 b 74 173 69 169 72 170 b 209 222 112 204 163 222 b 310 195 247 222 274 215 b 371 179 332 184 352 179 b 396 181 379 179 387 179 b 428 202 409 184 423 194 b 442 212 431 209 436 212 b 458 197 450 212 458 206 b 441 148 458 190 449 165 b 299 44 409 84 353 44 b 288 45 295 44 292 44 b 250 61 274 45 268 49 b 122 99 212 86 164 99 b 73 91 104 99 88 97 b 28 63 53 84 34 72 b 14 54 25 56 20 54 b 1 62 9 54 4 56 l -1 65 l -1 79 b 0 99 -1 91 0 95 b 2 113 1 102 2 108 b 164 309 20 197 81 272 b 285 470 232 341 277 398 b 287 487 287 476 287 481 b 171 595 287 551 239 595 b 155 595 166 595 160 595 b 142 592 145 594 142 594 b 145 589 142 592 142 591 b 179 527 168 576 179 551 b 132 455 179 496 163 467 b 104 451 122 452 112 451 b 27 530 62 451 27 487 b 29 555 27 538 27 546 b 197 648 44 601 115 639 m 228 -1 l 230 -1 l 227 -1 l 228 -1 m 228 673 l 230 673 l 227 673 l 228 673 "},timeSig3:{x_min:-1.359375,x_max:409.6875,ha:418,o:"m 174 648 b 191 648 176 648 183 648 b 225 648 204 648 220 648 b 402 523 317 638 389 588 b 404 503 404 517 404 510 b 402 484 404 495 404 488 b 264 373 389 437 334 394 b 257 370 259 371 257 371 b 257 370 257 370 257 370 b 264 369 258 370 261 369 b 409 202 359 334 409 267 b 318 72 409 152 381 104 b 200 43 281 52 240 43 b 23 113 134 43 69 68 b 0 169 6 129 0 149 b 77 249 0 210 29 249 l 77 249 b 152 174 125 249 152 212 b 103 102 152 145 137 116 b 103 102 103 102 103 102 b 147 94 103 101 132 95 b 153 94 149 94 151 94 b 265 206 219 94 265 141 b 264 226 265 213 265 219 b 147 355 253 299 204 353 b 126 371 133 356 126 362 b 147 388 126 383 132 388 b 254 474 196 391 238 424 b 259 502 258 484 259 494 b 182 592 259 544 228 582 b 156 595 175 595 166 595 b 115 592 142 595 129 594 l 111 591 l 115 588 b 152 524 141 574 152 549 b 92 449 152 491 130 458 b 76 448 87 448 81 448 b -1 530 32 448 -1 488 b 20 581 -1 548 5 566 b 174 648 55 619 108 641 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 "},timeSig4:{x_min:0,x_max:468.21875,ha:478,o:"m 174 637 b 232 638 175 638 189 638 b 277 638 245 638 259 638 l 378 638 l 381 635 b 389 623 386 632 389 627 b 382 609 389 617 386 613 b 366 589 381 606 372 598 l 313 528 l 245 451 l 209 410 l 155 348 l 84 267 b 59 240 72 252 59 240 b 59 240 59 240 59 240 b 151 238 59 238 68 238 l 242 238 l 242 303 b 243 371 242 369 242 370 b 289 426 245 374 254 385 l 303 441 l 317 456 l 338 483 l 360 506 l 371 520 b 386 527 375 526 381 527 b 400 519 392 527 397 524 b 401 440 401 516 401 514 b 401 377 401 423 401 402 l 401 238 l 426 238 b 453 237 449 238 450 238 b 465 217 461 234 465 226 b 460 202 465 212 464 206 b 426 197 454 197 453 197 l 401 197 l 401 180 b 451 88 402 129 412 109 b 468 69 465 81 468 79 b 461 55 468 62 466 59 l 458 54 l 321 54 l 185 54 l 182 55 b 175 69 176 59 175 62 b 191 88 175 79 176 81 b 240 180 230 109 240 129 l 240 197 l 125 197 b 73 195 104 195 87 195 b 8 197 10 195 9 197 b 0 212 2 199 0 205 b 0 212 0 212 0 212 b 20 242 0 219 0 219 b 163 610 104 344 163 492 b 174 637 163 628 166 634 m 234 -1 l 235 -1 l 232 -1 l 234 -1 m 234 673 l 235 673 l 232 673 l 234 673 "},timeSig5:{x_min:0,x_max:409.6875,ha:418,o:"m 47 637 b 53 638 49 638 50 638 b 69 634 55 638 61 637 b 210 610 114 619 161 610 b 363 634 259 610 311 619 b 382 638 372 637 378 638 b 392 634 386 638 389 637 b 397 623 396 630 397 627 b 393 610 397 620 396 616 b 298 505 368 552 338 520 b 212 494 277 498 246 494 b 65 517 163 494 106 502 b 61 517 62 517 61 517 b 61 517 61 517 61 517 b 51 408 61 517 51 412 b 51 408 51 408 51 408 b 51 408 51 408 51 408 b 61 412 53 408 55 409 b 125 434 80 421 103 430 b 185 441 145 440 166 441 b 409 244 310 441 409 353 b 401 191 409 227 406 209 b 197 43 375 105 287 43 b 159 47 183 43 171 44 b 23 123 112 56 61 86 b 0 180 6 140 0 159 b 76 260 0 220 31 260 b 92 259 81 260 87 259 b 152 183 132 251 152 216 b 100 112 152 152 134 122 b 95 111 98 112 95 111 b 95 111 95 111 95 111 b 129 98 95 109 119 101 b 148 97 136 97 141 97 b 264 235 206 97 261 158 b 265 248 265 240 265 244 b 210 398 265 312 243 373 b 179 408 201 406 194 408 b 174 408 178 408 176 408 b 53 369 130 408 88 394 b 34 359 39 359 38 359 b 17 374 24 359 17 365 b 39 628 17 384 38 625 b 47 637 40 631 43 635 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 "},timeSig6:{x_min:0,x_max:475.03125,ha:485,o:"m 255 648 b 274 648 259 648 266 648 b 314 646 288 648 307 648 b 450 555 374 637 438 594 b 454 530 453 546 454 538 b 375 451 454 485 416 451 b 328 467 359 451 343 455 b 300 526 310 483 300 503 b 352 598 300 557 319 589 b 356 599 355 598 356 599 b 352 602 356 599 355 601 b 288 616 330 612 308 616 b 210 584 257 616 230 605 b 164 433 189 559 174 508 b 160 374 163 415 160 381 b 160 374 160 374 160 374 b 160 374 160 374 160 374 b 168 377 160 374 164 376 b 258 395 200 390 228 395 b 366 367 294 395 328 387 b 475 223 436 333 475 283 b 472 197 475 215 473 206 b 349 65 462 141 419 95 b 259 43 317 51 288 43 b 167 69 230 43 200 52 b 4 290 80 113 20 195 b 0 349 1 309 0 328 b 20 467 0 391 6 433 b 255 648 58 563 155 637 m 269 363 b 257 363 265 363 261 363 b 210 345 236 363 220 356 b 186 226 196 324 186 272 b 187 198 186 216 186 206 b 213 95 191 151 202 112 b 257 76 221 83 238 76 b 270 77 261 76 266 76 b 321 156 299 81 310 99 b 329 229 326 183 329 206 b 321 301 329 252 326 274 b 269 363 311 342 298 359 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 "},timeSig7:{x_min:0,x_max:442.359375,ha:451,o:"m 147 648 b 166 649 153 649 160 649 b 313 598 217 649 273 630 b 340 587 323 588 328 587 l 341 587 b 412 628 367 587 390 601 b 427 638 416 635 421 638 b 439 632 431 638 435 637 b 442 623 441 630 442 628 b 430 569 442 616 439 603 b 352 369 408 492 377 410 b 300 259 325 324 313 298 b 273 84 283 205 273 140 b 265 55 273 65 272 59 l 261 54 l 181 54 l 99 54 l 96 55 b 91 61 95 56 92 59 l 89 63 l 89 77 b 147 263 89 133 111 202 b 261 401 176 313 212 355 b 378 541 315 449 349 489 l 382 548 l 375 544 b 240 495 333 512 285 495 b 129 535 198 495 160 509 b 84 560 108 552 95 560 b 76 559 81 560 78 560 b 31 487 59 555 43 530 b 14 470 27 473 24 470 b 1 477 8 470 4 471 l 0 480 l 0 553 l 0 627 l 1 630 b 16 638 4 635 9 638 b 23 635 17 638 20 637 b 49 626 36 626 39 626 b 96 638 59 626 80 630 b 104 639 99 638 102 639 b 117 644 107 641 112 642 b 147 648 125 645 137 648 m 220 -1 l 221 -1 l 219 -1 l 220 -1 m 220 673 l 221 673 l 219 673 l 220 673 "},timeSig8:{x_min:0,x_max:488.640625,ha:499,o:"m 217 648 b 245 649 225 648 235 649 b 453 516 343 649 430 595 b 458 478 455 503 458 491 b 412 370 458 440 441 398 b 411 369 412 369 411 369 b 415 365 411 367 412 367 b 488 231 462 331 488 281 b 472 165 488 208 483 186 b 243 43 434 86 338 43 b 63 104 178 43 112 62 b 0 233 20 140 0 186 b 73 365 0 283 24 331 l 77 369 l 72 374 b 29 476 42 406 29 441 b 217 648 29 557 103 635 m 258 605 b 242 606 253 605 247 606 b 157 552 198 606 157 580 b 160 541 157 548 159 544 b 319 413 176 503 242 452 l 337 403 l 338 406 b 359 476 352 428 359 452 b 258 605 359 537 318 595 m 138 326 b 130 330 134 328 130 330 b 130 330 130 330 130 330 b 107 305 127 330 112 313 b 84 231 91 281 84 256 b 243 86 84 156 151 86 b 249 87 245 86 246 87 b 347 156 303 88 347 120 b 344 172 347 162 345 167 b 156 319 325 227 257 281 b 138 326 151 322 144 324 m 243 -1 l 245 -1 l 242 -1 l 243 -1 m 243 673 l 245 673 l 242 673 l 243 673 "},timeSig9:{x_min:0,x_max:475.03125,ha:485,o:"m 191 646 b 212 649 198 648 205 649 b 255 644 227 649 243 646 b 458 448 348 616 428 539 b 475 342 469 415 475 378 b 460 244 475 308 469 274 b 193 44 421 124 303 44 b 91 69 157 44 122 51 b 19 161 43 97 19 126 b 21 181 19 167 20 174 b 98 241 32 220 65 241 b 170 186 129 241 160 223 b 172 166 171 179 172 173 b 121 94 172 134 152 102 b 117 93 118 94 117 93 b 121 90 117 93 118 91 b 185 76 142 80 164 76 b 270 119 220 76 251 91 b 308 259 287 145 300 194 b 313 317 310 277 313 310 b 313 317 313 317 313 317 b 313 317 313 317 313 317 b 304 315 313 317 308 316 b 216 295 273 302 245 295 b 145 308 193 295 170 299 b 19 398 88 327 42 360 b 0 469 5 420 0 444 b 24 551 0 496 8 526 b 191 646 54 596 125 637 m 227 614 b 215 616 224 616 220 616 b 202 614 210 616 206 616 b 152 535 174 610 163 592 b 144 463 147 509 144 485 b 152 391 144 440 147 417 b 216 328 163 344 179 328 b 280 391 253 328 269 344 b 288 463 285 417 288 440 b 280 535 288 485 285 509 b 227 614 269 594 258 610 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 "},timeSigCommon:{x_min:-1.359375,x_max:556.6875,ha:568,o:"m 294 322 b 318 323 299 322 308 323 b 360 320 334 323 352 322 b 526 217 430 310 490 273 b 543 166 537 202 543 184 b 447 70 543 117 503 70 b 445 70 447 70 446 70 b 359 159 394 72 359 113 b 368 201 359 173 362 187 b 442 245 382 229 412 245 b 455 244 446 245 451 245 b 460 244 458 244 460 244 b 460 244 460 244 460 244 b 454 248 460 244 458 245 b 325 291 417 276 372 291 b 285 287 313 291 299 290 b 144 -2 183 269 144 190 b 281 -290 144 -208 179 -280 b 304 -291 289 -291 298 -291 b 524 -105 412 -291 506 -212 b 541 -84 526 -88 530 -84 b 556 -101 551 -84 556 -90 b 549 -138 556 -111 553 -122 b 334 -322 521 -237 435 -310 b 302 -324 323 -323 313 -324 b 13 -101 172 -324 54 -234 b -1 -1 4 -68 -1 -34 b 294 322 -1 161 121 303 "},timeSigCutCommon:{x_min:0,x_max:556.6875,ha:568,o:"m 289 545 b 298 546 292 545 295 546 b 318 533 306 546 315 541 b 319 428 319 530 319 528 l 319 327 l 334 327 b 526 223 412 326 485 285 b 543 172 537 206 543 190 b 447 76 543 122 503 76 b 445 76 446 76 446 76 b 359 165 394 77 359 119 b 368 205 359 179 362 192 b 441 251 382 233 412 251 b 455 249 446 251 451 251 b 460 248 458 249 460 248 b 460 248 460 248 460 248 b 454 254 460 249 458 251 b 334 295 419 280 378 294 l 319 295 l 319 4 l 319 -287 l 321 -285 b 328 -285 322 -285 325 -285 b 524 -99 424 -277 507 -198 b 541 -79 526 -84 530 -79 b 556 -97 551 -79 556 -84 b 548 -133 556 -105 553 -117 b 334 -317 521 -233 434 -306 b 322 -319 329 -317 323 -317 l 319 -319 l 319 -424 b 319 -471 319 -444 319 -459 b 313 -541 319 -544 318 -535 b 298 -548 308 -545 303 -548 b 279 -534 289 -548 281 -542 b 277 -424 277 -531 277 -530 l 277 -317 l 273 -317 b 13 -95 153 -305 51 -217 b 0 2 4 -62 0 -29 b 182 295 0 126 66 238 b 274 324 210 309 249 320 l 277 324 l 277 427 b 279 533 277 528 277 530 b 289 545 281 538 285 542 m 277 2 b 277 291 277 161 277 291 b 268 288 277 291 273 290 b 144 1 179 265 144 184 b 276 -284 144 -199 175 -267 l 277 -285 l 277 2 "},timeSigPlus:{x_min:0,x_max:319.859375,ha:326,o:"m 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 "},timeSigPlusSmall:{x_min:0,x_max:319.859375,ha:326,o:"m 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 "},timeSigMinus:{x_min:0,x_max:318.5,ha:325,o:"m 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 "},timeSigParensRight:{x_min:25.859375,x_max:164.6875,ha:168,o:"m 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 "},timeSigParensRightSmall:{x_min:25.859375,x_max:164.6875,ha:168,o:"m 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 "},timeSigParensLeft:{x_min:-166.0625,x_max:-25.859375,ha:0,o:"m -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 "},timeSigParensLeftSmall:{x_min:-166.0625,x_max:-25.859375,ha:0,o:"m -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 "},noteheadDoubleWhole:{x_min:0,x_max:902.421875,ha:921,o:"m 17 240 b 24 241 19 241 21 241 b 32 240 28 241 31 241 b 46 229 38 238 43 234 b 50 88 50 223 50 237 b 50 -1 50 63 50 34 b 50 -90 50 -36 50 -65 b 46 -231 50 -238 50 -224 b 25 -242 42 -238 34 -242 b 0 -224 14 -242 4 -235 b 0 2 0 -222 0 -108 b 0 223 0 112 0 220 b 17 240 2 230 9 237 m 110 240 b 118 241 111 241 114 241 b 126 240 121 241 123 241 b 142 223 133 237 140 230 b 144 123 144 220 144 205 b 144 29 144 45 144 29 b 144 29 144 29 144 29 b 393 183 166 106 264 167 b 450 186 412 184 431 186 b 756 29 600 186 732 120 b 756 29 756 29 756 29 b 758 123 758 29 758 45 b 760 227 758 226 758 223 b 784 241 766 237 774 241 b 804 229 792 241 800 237 b 809 88 808 223 809 237 l 809 -1 l 809 -90 b 804 -231 809 -238 808 -224 b 784 -242 800 -238 792 -242 b 762 -231 775 -242 766 -238 b 758 -124 756 -224 758 -231 b 756 -30 758 -47 758 -30 b 756 -30 756 -30 756 -30 b 509 -184 736 -108 637 -169 b 450 -187 488 -187 469 -187 b 144 -30 300 -187 168 -122 b 144 -30 144 -30 144 -30 b 144 -124 144 -30 144 -47 b 140 -231 144 -231 144 -224 b 118 -242 134 -238 126 -242 b 92 -224 107 -242 96 -235 b 92 2 92 -222 92 -108 b 92 223 92 112 92 220 b 110 240 95 230 102 237 m 432 161 b 413 162 426 162 420 162 b 313 41 351 162 313 109 b 347 -73 313 5 323 -34 b 487 -163 385 -133 439 -163 b 578 -97 526 -163 562 -142 b 588 -43 585 -80 588 -62 b 432 161 588 47 518 147 m 868 240 b 876 241 869 241 872 241 b 884 240 879 241 882 241 b 898 229 890 238 894 234 b 902 88 902 223 902 237 l 902 -1 l 902 -90 b 898 -231 902 -238 902 -224 b 876 -242 892 -238 884 -242 b 852 -224 865 -242 854 -235 b 850 2 850 -222 850 -108 b 852 223 850 112 850 220 b 868 240 853 230 860 237 "},noteheadWhole:{x_min:0,x_max:619.3125,ha:632,o:"m 274 184 b 307 186 285 186 296 186 b 616 22 465 186 597 116 b 619 -1 617 13 619 5 b 308 -187 619 -104 483 -187 b 0 -1 133 -187 0 -102 b 5 36 0 11 1 23 b 274 184 29 115 141 176 m 289 161 b 272 162 284 162 277 162 b 171 41 209 162 171 108 b 205 -73 171 5 182 -34 b 345 -163 243 -133 298 -163 b 436 -98 385 -163 420 -142 b 446 -43 443 -80 446 -62 b 289 161 446 47 377 147 "},noteheadHalf:{x_min:0,x_max:428.75,ha:438,o:"m 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 m 366 131 b 352 134 362 133 357 134 b 219 81 321 134 269 115 b 47 -111 126 23 50 -62 b 47 -112 47 -111 47 -112 b 77 -136 47 -129 58 -136 b 264 -45 118 -136 194 -101 b 382 109 336 12 382 76 b 366 131 382 120 377 129 "},noteheadBlack:{x_min:0,x_max:428.75,ha:438,o:"m 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 "},noteheadXWhole:{x_min:0,x_max:598.890625,ha:611,o:"m 62 181 b 77 183 66 183 72 183 b 91 181 83 183 88 183 b 202 131 100 180 106 177 l 299 87 l 394 131 b 517 183 499 181 502 183 b 519 183 517 183 518 183 b 598 104 567 183 598 144 b 577 49 598 84 592 65 b 518 15 567 38 563 37 b 484 0 499 6 484 0 b 518 -16 484 -1 499 -8 b 577 -51 563 -38 567 -40 b 598 -105 592 -66 598 -86 b 519 -184 598 -145 567 -184 b 517 -184 518 -184 517 -184 b 394 -133 502 -184 499 -183 l 299 -88 l 202 -133 b 81 -184 99 -183 95 -184 b 77 -184 80 -184 78 -184 b 0 -105 29 -184 0 -145 b 20 -51 0 -86 5 -66 b 80 -16 29 -40 34 -38 b 114 -1 98 -8 114 -1 b 80 15 114 0 98 6 b 20 49 34 37 29 38 b 0 104 6 65 0 84 b 62 181 0 140 23 174 m 88 134 b 74 136 85 134 80 136 b 68 134 72 136 69 136 b 46 104 54 130 46 117 b 55 81 46 95 49 88 b 149 34 59 76 53 80 b 224 -1 190 15 224 0 b 144 -38 224 -1 187 -18 b 54 -84 59 -79 58 -79 b 46 -105 49 -90 46 -98 b 76 -137 46 -122 58 -137 b 78 -137 77 -137 77 -137 b 194 -86 87 -137 76 -141 b 298 -36 250 -58 298 -36 b 298 -36 298 -36 298 -36 b 402 -84 299 -36 345 -58 b 518 -137 522 -141 510 -137 b 521 -137 519 -137 519 -137 b 551 -105 539 -137 551 -122 b 541 -83 551 -98 548 -90 b 447 -36 537 -77 544 -81 b 374 -1 406 -16 374 -1 b 447 34 374 0 406 15 b 541 81 544 80 537 76 b 551 104 548 88 551 97 b 521 136 551 120 539 136 b 518 136 519 136 519 136 b 517 136 518 136 517 136 l 517 136 b 402 83 511 136 511 136 b 298 34 345 56 299 34 b 298 34 298 34 298 34 b 194 84 298 34 250 56 b 88 134 137 111 89 133 "},noteheadXHalf:{x_min:0,x_max:406.96875,ha:415,o:"m 55 181 b 70 183 61 183 66 183 b 111 170 85 183 99 179 b 160 130 115 167 137 149 l 202 95 l 245 130 b 319 181 299 176 302 179 b 334 183 325 183 330 183 b 406 109 375 183 406 148 b 401 81 406 99 405 91 b 348 24 394 65 390 59 b 318 -1 332 11 318 0 b 348 -26 318 -1 332 -12 b 401 -83 390 -61 394 -66 b 406 -111 405 -93 406 -101 b 334 -184 406 -149 375 -184 b 319 -183 330 -184 325 -184 b 245 -131 302 -180 299 -177 l 202 -97 l 160 -131 b 85 -183 107 -177 103 -180 b 70 -184 80 -184 76 -184 b 0 -111 31 -184 0 -149 b 4 -83 0 -101 1 -93 b 58 -26 10 -66 16 -61 b 88 -1 74 -12 88 -1 b 58 24 88 0 74 11 b 10 69 23 54 17 59 b 0 109 2 81 0 95 b 55 181 0 142 21 173 m 83 133 b 72 136 78 136 76 136 b 57 131 66 136 61 134 b 46 109 49 126 46 117 b 50 93 46 104 47 98 b 107 45 51 91 77 70 b 160 0 137 20 160 0 b 107 -47 160 -1 137 -22 b 50 -94 77 -72 51 -93 b 46 -111 47 -99 46 -105 b 59 -134 46 -120 50 -130 b 72 -137 62 -136 68 -137 b 83 -136 76 -137 80 -136 b 144 -84 84 -134 107 -116 b 202 -36 176 -58 202 -36 b 261 -84 202 -36 230 -58 b 323 -136 299 -116 321 -134 b 334 -137 326 -136 330 -137 b 345 -134 338 -137 343 -136 b 360 -111 355 -130 360 -120 b 355 -94 360 -105 359 -99 b 299 -47 353 -93 329 -72 b 245 0 269 -22 245 -1 b 299 45 245 0 269 20 b 355 93 329 70 353 91 b 360 109 359 98 360 104 b 345 133 360 119 355 129 b 334 136 343 134 338 136 b 323 134 330 136 326 134 b 261 83 321 133 299 115 b 202 34 230 56 202 34 b 144 83 202 34 176 56 b 83 133 106 115 84 133 "},noteheadXBlack:{x_min:0,x_max:406.96875,ha:415,o:"m 21 183 b 28 183 24 183 25 183 b 42 181 34 183 39 183 b 127 108 47 179 47 179 b 202 41 168 72 202 41 b 279 108 204 41 238 72 b 357 177 321 145 356 176 b 375 183 363 181 370 183 b 406 151 392 183 406 169 b 404 137 406 147 405 141 b 322 62 401 131 398 129 b 251 0 284 27 251 0 b 322 -63 251 -1 284 -29 b 404 -138 398 -130 401 -133 b 406 -152 405 -142 406 -148 b 375 -184 406 -170 392 -184 b 357 -179 370 -184 363 -183 b 279 -109 356 -177 321 -147 b 202 -43 238 -73 204 -43 b 127 -109 202 -43 168 -73 b 49 -179 85 -147 50 -177 b 31 -184 43 -183 36 -184 b 0 -152 13 -184 0 -170 b 2 -138 0 -148 0 -142 b 83 -63 5 -133 8 -130 b 155 0 122 -29 155 -1 b 83 62 155 0 122 27 b 8 129 43 97 10 127 b 0 151 2 136 0 144 b 21 183 0 165 8 177 "},noteheadTriangleUpWhole:{x_min:0,x_max:630.203125,ha:643,o:"m 308 204 b 314 205 310 205 313 205 b 326 201 319 205 323 204 b 355 154 328 199 338 180 b 401 83 362 142 392 95 l 409 72 b 431 41 412 66 424 49 b 619 -174 498 -51 570 -134 b 630 -192 626 -180 630 -186 b 626 -202 630 -195 628 -199 b 616 -206 623 -205 620 -206 b 552 -188 608 -206 592 -202 b 310 -155 488 -169 392 -155 b 268 -156 295 -155 281 -155 b 77 -188 197 -161 126 -173 b 13 -206 35 -202 20 -206 b 9 -206 12 -206 10 -206 b 0 -191 2 -202 0 -197 b 8 -176 0 -186 2 -180 b 204 49 58 -136 138 -43 l 220 72 l 227 83 b 295 188 245 108 281 166 b 308 204 299 197 304 202 m 315 147 b 314 147 315 147 314 147 b 314 147 314 147 314 147 b 306 129 314 145 310 138 l 296 105 b 281 72 292 97 284 77 l 274 56 b 181 -123 247 -4 212 -72 l 174 -134 l 176 -133 b 314 -123 215 -127 272 -123 b 451 -133 356 -123 413 -127 l 454 -134 l 449 -123 b 353 56 417 -72 381 -4 l 347 72 b 332 105 344 77 336 97 l 322 129 b 315 147 318 138 315 145 "},noteheadTriangleUpHalf:{x_min:0,x_max:438.28125,ha:447,o:"m 212 205 b 219 205 213 205 216 205 b 239 183 228 205 231 204 b 421 -163 298 40 363 -83 b 438 -191 434 -180 438 -186 b 436 -197 438 -192 438 -195 b 424 -206 434 -204 431 -206 b 406 -201 420 -206 415 -205 b 216 -156 347 -172 281 -156 b 23 -205 148 -156 80 -173 b 14 -206 20 -206 17 -206 b 0 -191 6 -206 0 -201 b 6 -176 0 -187 1 -183 b 202 192 63 -104 142 45 b 212 205 205 199 208 202 m 264 48 l 249 81 l 243 94 l 242 91 b 89 -126 208 36 137 -66 b 81 -138 85 -133 81 -138 b 81 -138 81 -138 81 -138 b 81 -138 81 -138 81 -138 b 95 -133 81 -138 87 -136 b 280 -94 156 -108 221 -94 b 334 -98 299 -94 317 -95 b 343 -99 338 -99 343 -99 b 343 -99 343 -99 343 -99 b 338 -94 343 -99 341 -97 b 264 48 318 -58 287 1 "},noteheadTriangleUpBlack:{x_min:-1.359375,x_max:436.921875,ha:446,o:"m 213 205 b 217 205 215 205 216 205 b 234 194 224 205 234 199 b 236 187 234 194 235 190 l 245 167 l 261 129 l 270 106 b 355 -61 294 54 329 -13 b 420 -163 381 -105 402 -138 b 436 -188 435 -184 436 -184 b 436 -191 436 -190 436 -190 b 421 -206 436 -201 431 -206 l 421 -206 l 416 -206 l 405 -201 b 217 -158 347 -172 283 -158 b 31 -201 153 -158 88 -172 l 20 -206 l 14 -206 l 14 -206 b 0 -191 5 -206 0 -201 b -1 -188 0 -190 -1 -190 b 14 -163 -1 -186 0 -184 b 95 -34 36 -136 72 -77 b 166 106 119 8 148 68 l 175 129 l 183 148 l 200 188 b 213 205 205 199 208 202 "},noteheadDiamondWhole:{x_min:0,x_max:432.828125,ha:442,o:"m 208 184 b 213 187 209 186 212 187 b 224 176 217 187 221 183 b 245 147 225 172 235 159 b 419 -1 288 90 347 38 b 431 -8 424 -4 431 -8 b 432 -12 432 -9 432 -11 b 430 -18 432 -13 432 -16 b 364 -61 424 -20 383 -47 b 225 -183 307 -102 250 -152 b 223 -187 224 -184 223 -187 b 220 -188 221 -188 220 -188 b 208 -176 216 -188 210 -184 b 187 -148 205 -173 197 -159 b 12 0 144 -90 84 -38 b 0 11 4 5 0 8 b 16 24 0 13 4 18 b 183 158 83 69 141 115 b 208 184 194 169 198 173 m 183 105 b 176 113 181 109 176 113 b 172 109 176 113 175 112 b 92 45 149 90 117 62 l 88 41 l 102 31 b 247 -105 160 -6 210 -55 l 254 -115 l 257 -112 l 269 -102 b 340 -45 287 -87 319 -61 l 344 -43 l 330 -33 b 183 105 272 6 221 54 "},noteheadDiamondHalf:{x_min:0,x_max:438.28125,ha:447,o:"m 212 190 b 219 191 213 191 216 191 b 236 176 225 191 228 190 b 419 18 277 105 341 49 b 436 5 431 13 434 11 b 438 -1 438 4 438 1 b 424 -16 438 -8 432 -13 b 356 -49 409 -20 379 -36 b 234 -180 306 -83 258 -133 b 219 -192 230 -188 224 -192 b 200 -176 213 -192 206 -187 b 9 -15 157 -102 89 -45 b 0 0 2 -12 0 -6 b 16 18 0 9 2 12 b 200 176 93 48 159 104 b 212 190 205 186 208 188 m 239 113 b 236 117 238 116 238 117 b 230 108 235 117 234 115 b 92 -15 196 58 140 8 b 88 -18 91 -16 88 -18 b 92 -20 88 -18 91 -19 b 198 -116 130 -43 166 -74 b 200 -117 200 -117 200 -117 b 201 -117 200 -117 201 -117 b 264 -43 212 -98 242 -62 b 345 15 288 -19 321 4 b 348 18 347 16 348 16 b 344 20 348 18 347 19 b 239 113 307 41 266 79 "},noteheadDiamondBlack:{x_min:0,x_max:432.828125,ha:442,o:"m 209 186 b 213 187 210 187 212 187 b 216 187 215 187 216 187 b 224 174 216 186 220 180 b 420 -1 269 105 338 43 b 432 -12 431 -8 432 -9 b 421 -23 432 -15 432 -16 b 228 -180 345 -70 264 -137 b 219 -188 221 -188 221 -188 l 219 -188 b 208 -177 215 -188 215 -188 b 10 1 163 -106 93 -44 b 0 11 0 6 0 8 b 10 22 0 13 0 15 b 202 179 87 69 167 136 b 209 186 206 183 209 186 "},augmentationDot:{x_min:0,x_max:133.390625,ha:136,o:"m 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 "},tremolo1:{x_min:-206.890625,x_max:428.75,ha:438,o:"m 389 -351 b 394 -351 390 -351 393 -351 b 428 -385 413 -351 428 -367 b 428 -394 428 -388 428 -391 b 394 -428 426 -406 421 -410 l 332 -473 l 269 -516 l 205 -560 l 141 -603 l 77 -648 l 13 -692 l -50 -737 l -114 -780 l -145 -802 b -171 -813 -157 -810 -163 -813 b -175 -813 -172 -813 -174 -813 b -206 -777 -194 -811 -206 -795 b -202 -760 -206 -771 -205 -766 b -87 -675 -197 -752 -206 -757 l -34 -639 l 83 -557 l 145 -514 l 209 -470 l 272 -427 b 389 -351 375 -356 381 -352 "},flag8thUp:{x_min:-24.5,x_max:317.140625,ha:324,o:"m -24 -161 l -24 -5 l -20 -5 b 0 -24 -9 -5 -2 -12 b 171 -315 21 -124 84 -233 b 317 -660 268 -406 317 -531 b 187 -1014 317 -782 274 -909 b 161 -1034 172 -1034 171 -1034 b 141 -1013 149 -1034 141 -1025 b 152 -991 141 -1004 142 -1002 b 266 -682 228 -899 266 -788 b 174 -430 266 -588 236 -498 b -23 -317 136 -388 66 -348 b -24 -161 -23 -316 -24 -285 "},flag8thDown:{x_min:-21.78125,x_max:367.5,ha:375,o:"m 230 1031 b 238 1032 232 1032 235 1032 b 259 1014 245 1032 251 1027 b 367 662 330 906 367 782 b 364 602 367 641 367 621 b 232 317 352 488 304 384 b 57 120 155 245 103 187 b -1 18 31 84 6 40 b -19 4 -4 11 -12 4 l -21 4 l -21 159 l -21 315 l -16 315 b 96 335 10 315 62 324 b 315 695 227 380 315 527 b 313 738 315 709 314 724 b 224 991 304 825 273 916 b 216 1013 219 999 216 1007 b 230 1031 216 1021 220 1028 "},flag16thUp:{x_min:-24.5,x_max:317.140625,ha:324,o:"m -24 -147 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 58 -123 6 -43 31 -86 b 196 -278 93 -173 134 -219 b 317 -570 274 -356 317 -460 b 294 -713 317 -617 308 -666 l 289 -724 l 294 -735 b 317 -873 308 -780 317 -827 b 235 -1132 317 -963 288 -1054 b 209 -1165 228 -1140 224 -1146 b 189 -1177 204 -1172 196 -1177 b 171 -1164 182 -1177 175 -1172 b 168 -1154 170 -1161 168 -1159 b 181 -1132 168 -1149 172 -1142 b 269 -891 238 -1064 269 -975 b 269 -881 269 -886 269 -884 b 262 -814 269 -857 265 -827 b 258 -800 261 -811 259 -806 b 142 -628 240 -731 198 -667 b -8 -589 112 -606 47 -589 b -20 -589 -13 -589 -19 -589 l -24 -589 l -24 -449 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 58 -424 6 -345 31 -388 b 194 -580 93 -476 136 -523 b 259 -660 221 -606 245 -635 b 261 -663 259 -662 261 -663 b 264 -656 262 -663 262 -660 b 269 -587 268 -632 269 -610 b 264 -521 269 -566 268 -544 b 262 -512 264 -517 262 -513 b 258 -498 261 -509 259 -503 b 142 -326 240 -428 198 -365 b -8 -287 112 -303 47 -288 b -20 -287 -13 -287 -19 -287 l -24 -287 l -24 -147 "},flag16thDown:{x_min:-21.78125,x_max:362.0625,ha:369,o:"m 302 1031 b 308 1032 304 1032 307 1032 b 330 1016 318 1032 325 1027 b 362 867 351 970 362 920 b 340 738 362 824 353 780 l 336 727 l 340 717 b 362 591 355 677 362 634 b 257 323 362 496 325 401 b 204 272 243 306 227 290 b 20 56 129 206 66 133 b -1 18 12 44 0 22 b -19 4 -4 9 -12 4 l -21 4 l -21 140 l -21 276 l -12 277 b 167 333 61 288 127 309 b 319 598 262 388 319 491 b 311 664 319 620 317 642 l 310 673 l 304 664 b 204 548 279 620 250 587 b 20 333 129 483 66 409 b -1 292 12 320 0 298 b -19 280 -4 285 -12 280 l -21 280 l -21 416 l -21 552 l -12 553 b 167 609 61 564 127 585 b 319 874 264 666 319 770 b 294 992 319 914 311 954 b 288 1011 288 1004 288 1007 b 302 1031 288 1021 294 1028 "},flag32ndUp:{x_min:-24.5,x_max:315.78125,ha:322,o:"m -24 -145 l -24 -5 l -20 -5 b 1 -26 -10 -5 -6 -9 b 175 -241 31 -86 96 -166 b 314 -548 259 -323 304 -420 b 315 -589 315 -555 315 -571 b 314 -630 315 -606 315 -623 b 298 -730 311 -664 306 -699 l 295 -742 l 296 -748 b 314 -850 304 -778 311 -813 b 315 -892 315 -857 315 -874 b 314 -932 315 -909 315 -925 b 298 -1032 311 -967 306 -1002 l 295 -1045 l 296 -1050 b 314 -1153 304 -1081 311 -1115 b 315 -1193 315 -1160 315 -1177 b 314 -1235 315 -1211 315 -1228 b 217 -1526 306 -1338 270 -1444 b 201 -1533 213 -1532 208 -1533 b 182 -1522 193 -1533 185 -1529 b 179 -1514 181 -1518 179 -1517 b 189 -1489 179 -1508 182 -1501 b 266 -1217 240 -1403 266 -1308 b 262 -1156 266 -1196 265 -1177 b 110 -907 247 -1043 190 -950 b 0 -889 87 -895 50 -889 l -1 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 1 -631 -10 -610 -6 -614 b 175 -846 31 -691 96 -771 b 259 -956 213 -884 236 -914 b 265 -966 262 -961 264 -966 b 265 -966 265 -966 265 -966 b 265 -953 265 -964 265 -959 b 266 -920 266 -943 266 -932 b 262 -853 266 -898 265 -873 b 110 -605 247 -741 190 -648 b 0 -587 87 -592 50 -587 l -1 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 1 -328 -10 -308 -6 -312 b 175 -544 31 -388 96 -469 b 259 -655 213 -581 236 -612 b 265 -663 262 -659 264 -663 b 265 -663 265 -663 265 -663 b 265 -650 265 -663 265 -657 b 266 -617 266 -641 266 -630 b 262 -551 266 -595 265 -570 b 110 -303 247 -438 190 -345 b 0 -284 87 -290 50 -284 l -1 -284 l -24 -284 l -24 -145 "},flag32ndDown:{x_min:-21.78125,x_max:366.140625,ha:374,o:"m 276 1378 b 284 1379 279 1379 281 1379 b 306 1360 292 1379 298 1374 b 352 1247 326 1326 343 1286 b 366 1139 362 1213 366 1175 b 347 1009 366 1093 359 1049 l 344 1002 l 347 992 b 352 971 348 986 351 977 b 366 863 362 936 366 899 b 347 732 366 818 359 773 l 344 725 l 347 716 b 352 695 348 710 351 700 b 366 588 362 659 366 623 b 223 262 366 464 314 345 b 189 233 212 252 212 252 b 35 76 126 183 73 129 b -1 16 20 56 2 27 b -19 4 -4 9 -12 4 l -21 4 l -21 137 l -21 270 l -17 270 b 186 344 59 281 134 308 b 319 606 270 399 319 499 b 317 650 319 620 319 635 l 315 659 l 314 655 b 223 537 288 607 258 570 b 189 509 212 528 212 528 b 35 352 126 459 73 405 b -1 292 20 333 2 303 b -19 280 -4 285 -12 280 l -21 280 l -21 413 l -21 546 l -17 546 b 186 620 59 557 134 584 b 319 882 270 675 319 775 b 317 925 319 896 319 911 l 315 935 l 314 931 b 223 813 288 884 258 846 b 189 785 212 805 212 805 b 35 628 126 735 73 681 b -1 569 20 609 2 580 b -19 556 -4 562 -12 556 l -21 556 l -21 689 l -21 823 l -17 823 b 202 907 68 835 152 867 b 319 1157 280 968 319 1061 b 270 1338 319 1218 303 1281 b 262 1358 264 1349 262 1353 b 262 1364 262 1360 262 1363 b 276 1378 265 1371 269 1376 "},flag64thUp:{x_min:-24.5,x_max:314.421875,ha:321,o:"m -24 -145 l -24 -5 l -20 -5 b 0 -23 -9 -5 -2 -12 b 27 -87 4 -38 14 -66 b 138 -220 53 -136 88 -177 b 235 -328 179 -255 208 -288 b 314 -592 287 -409 314 -501 b 292 -732 314 -639 307 -687 l 289 -742 l 294 -756 b 314 -896 307 -802 314 -849 b 292 -1035 314 -943 307 -991 l 289 -1045 l 294 -1057 b 314 -1197 307 -1104 314 -1152 b 292 -1338 314 -1246 307 -1292 l 289 -1347 l 294 -1360 b 314 -1500 307 -1407 314 -1454 b 273 -1689 314 -1565 300 -1628 b 250 -1712 265 -1710 261 -1712 b 228 -1691 236 -1712 228 -1704 l 228 -1685 l 234 -1675 b 270 -1507 258 -1621 270 -1564 b 98 -1193 270 -1381 209 -1261 b 40 -1174 76 -1179 58 -1174 b -10 -1189 24 -1174 8 -1178 b -20 -1192 -14 -1192 -16 -1192 l -24 -1192 l -24 -1052 l -24 -913 l -20 -913 b 0 -931 -9 -913 -2 -920 b 27 -995 4 -946 14 -974 b 138 -1128 53 -1043 88 -1085 b 257 -1275 190 -1172 228 -1220 b 262 -1283 259 -1279 262 -1283 l 262 -1283 b 269 -1249 264 -1282 268 -1260 b 270 -1206 270 -1233 270 -1220 b 98 -891 270 -1075 206 -957 b 40 -871 76 -877 58 -871 b -10 -886 24 -871 8 -875 b -20 -889 -14 -889 -16 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 0 -628 -9 -610 -2 -617 b 27 -692 4 -644 14 -671 b 138 -825 53 -741 88 -782 b 257 -973 190 -870 228 -917 b 262 -981 259 -977 262 -981 l 262 -981 b 269 -946 264 -979 268 -957 b 270 -903 270 -931 270 -917 b 98 -588 270 -774 206 -655 b 40 -569 76 -574 58 -569 b -10 -584 24 -569 8 -574 b -20 -587 -14 -587 -16 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 0 -326 -9 -308 -2 -315 b 27 -390 4 -341 14 -369 b 138 -523 53 -438 88 -480 b 257 -670 190 -567 228 -614 b 262 -678 259 -674 262 -678 b 262 -678 262 -678 262 -678 b 269 -644 264 -677 268 -656 b 270 -601 270 -628 270 -614 b 98 -285 270 -471 206 -352 b 40 -266 76 -273 58 -266 b -10 -281 24 -266 8 -272 b -20 -284 -14 -284 -16 -284 l -24 -284 l -24 -145 "},flag64thDown:{x_min:-21.78125,x_max:367.5,ha:375,o:"m 259 1553 b 265 1553 261 1553 264 1553 b 288 1540 272 1553 277 1550 b 367 1351 340 1493 367 1424 b 336 1221 367 1308 357 1263 l 332 1211 l 333 1208 b 367 1077 356 1170 367 1124 b 336 945 367 1032 357 986 l 332 935 l 333 932 b 367 800 356 893 367 848 b 336 669 367 756 357 710 l 332 659 l 333 656 b 367 523 356 617 367 571 b 345 412 367 485 360 446 b 231 273 322 356 284 310 b -1 19 121 195 27 93 b -17 4 -4 11 -10 5 l -21 4 l -21 134 l -21 265 l -17 265 b 133 291 20 265 96 278 b 318 537 245 328 318 433 b 307 603 318 559 315 582 b 303 614 304 612 304 614 b 298 609 302 614 300 613 b 231 549 281 589 258 567 b -1 295 121 471 27 369 b -17 280 -4 287 -10 281 l -21 280 l -21 410 l -21 541 l -17 541 b 133 567 20 541 96 555 b 318 813 245 605 318 709 b 307 880 318 835 315 859 b 303 891 304 888 304 891 b 298 885 302 891 300 888 b 231 825 281 866 258 843 b -1 571 121 748 27 645 b -17 556 -4 563 -10 557 l -21 556 l -21 687 l -21 817 l -17 817 b 133 843 20 817 96 830 b 318 1089 245 881 318 985 b 307 1156 318 1111 315 1134 b 303 1167 304 1164 304 1167 b 298 1161 302 1167 300 1164 b 231 1102 281 1140 258 1120 b -1 848 121 1024 27 921 b -17 832 -4 839 -10 834 l -21 832 l -21 963 l -21 1093 l -17 1093 b 114 1113 12 1093 78 1103 b 313 1314 215 1142 289 1218 b 318 1364 317 1331 318 1347 b 255 1511 318 1422 295 1478 b 243 1532 247 1519 243 1525 b 259 1553 243 1540 250 1550 "},flag128thUp:{x_min:-24.5,x_max:313.0625,ha:319,o:"m -24 -133 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 142 -213 13 -61 74 -144 b 258 -376 196 -269 230 -315 b 313 -605 295 -449 313 -528 b 292 -742 313 -652 306 -699 b 288 -752 289 -748 288 -752 b 288 -752 288 -752 288 -752 b 292 -764 289 -753 291 -757 b 313 -907 306 -811 313 -860 b 292 -1045 313 -954 306 -1002 b 288 -1054 289 -1050 288 -1054 b 288 -1054 288 -1054 288 -1054 b 292 -1067 289 -1054 291 -1060 b 313 -1210 306 -1113 313 -1161 b 292 -1346 313 -1257 306 -1304 b 288 -1357 289 -1353 288 -1357 b 288 -1357 288 -1357 288 -1357 b 292 -1368 289 -1357 291 -1363 b 313 -1512 306 -1415 313 -1464 b 292 -1648 313 -1560 306 -1605 b 288 -1660 289 -1654 288 -1660 b 288 -1660 288 -1660 288 -1660 b 292 -1671 289 -1660 291 -1665 b 313 -1814 306 -1719 313 -1766 b 250 -2040 313 -1897 291 -1977 b 232 -2062 238 -2057 236 -2059 b 221 -2065 230 -2063 225 -2065 b 200 -2045 210 -2065 201 -2057 b 200 -2043 200 -2044 200 -2044 b 208 -2026 200 -2037 202 -2034 b 269 -1826 249 -1966 269 -1897 b 153 -1544 269 -1726 230 -1625 b -9 -1472 115 -1506 58 -1481 b -21 -1471 -14 -1471 -19 -1471 l -24 -1471 l -24 -1343 l -24 -1215 l -20 -1215 b -1 -1229 -12 -1215 -4 -1221 b 142 -1424 13 -1270 74 -1353 b 257 -1582 196 -1478 228 -1524 b 264 -1594 261 -1589 264 -1594 l 264 -1594 b 265 -1582 264 -1594 264 -1589 b 270 -1525 268 -1562 270 -1544 b 153 -1243 270 -1424 228 -1321 b -9 -1170 115 -1203 58 -1178 b -21 -1168 -14 -1170 -19 -1168 l -24 -1168 l -24 -1041 l -24 -913 l -20 -913 b -1 -927 -12 -913 -4 -918 b 142 -1121 13 -967 74 -1050 b 257 -1281 196 -1175 228 -1221 b 264 -1292 261 -1286 264 -1292 l 264 -1292 b 265 -1279 264 -1292 264 -1286 b 270 -1222 268 -1261 270 -1242 b 153 -941 270 -1121 228 -1018 b -9 -867 115 -900 58 -875 b -21 -866 -14 -867 -19 -866 l -24 -866 l -24 -738 l -24 -610 l -20 -610 b -1 -624 -12 -610 -4 -616 b 142 -818 13 -664 74 -749 b 257 -978 196 -873 228 -918 b 264 -989 261 -984 264 -989 l 264 -989 b 265 -977 264 -989 264 -984 b 270 -920 268 -959 270 -939 b 153 -638 270 -818 228 -716 b -9 -564 115 -598 58 -573 b -21 -563 -14 -564 -19 -563 l -24 -563 l -24 -435 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 142 -516 13 -363 74 -446 b 257 -675 196 -571 228 -616 b 264 -687 261 -681 264 -687 l 264 -687 b 265 -674 264 -687 264 -681 b 270 -617 268 -656 270 -637 b 153 -335 270 -516 228 -413 b -9 -262 115 -295 58 -270 b -21 -260 -14 -262 -19 -260 l -24 -260 l -24 -133 "},flag128thDown:{x_min:-21.78125,x_max:367.5,ha:375,o:"m 276 1900 b 284 1901 279 1900 281 1901 b 306 1883 291 1901 298 1896 b 367 1686 347 1825 367 1757 b 343 1558 367 1643 359 1600 l 338 1549 l 343 1537 b 367 1411 359 1497 367 1454 b 343 1282 367 1367 359 1324 l 338 1272 l 343 1261 b 367 1135 359 1221 367 1178 b 343 1007 367 1090 359 1047 l 338 996 l 343 985 b 367 859 359 945 367 902 b 343 731 367 814 359 771 l 338 720 l 343 709 b 367 582 359 667 367 626 b 289 362 367 503 340 426 b 239 312 276 345 259 330 b 29 77 152 237 76 152 b -1 18 14 54 2 30 b -19 4 -4 11 -12 4 l -21 4 l -21 133 l -20 260 l -13 262 b 98 299 17 269 62 284 b 111 305 103 302 110 305 b 167 334 123 310 156 327 b 319 595 264 391 319 491 b 313 659 319 616 318 638 b 310 667 311 664 311 667 b 307 663 310 667 308 666 b 240 588 289 637 269 614 b 16 331 141 505 62 413 b -1 294 8 316 1 302 b -19 280 -4 287 -12 280 l -21 280 l -21 408 l -20 537 l -13 538 b 98 576 17 545 62 560 b 111 581 103 578 110 581 b 167 610 123 587 156 603 b 319 871 264 667 319 767 b 313 935 319 892 318 913 b 310 942 311 941 311 942 b 307 939 310 942 308 941 b 240 864 289 913 269 889 b 16 607 141 781 62 689 b -1 570 8 592 1 578 b -19 556 -4 563 -12 556 l -21 556 l -21 684 l -20 813 l -13 814 b 98 852 17 821 62 836 b 111 857 103 855 110 857 b 167 886 123 863 156 880 b 319 1147 264 943 319 1043 b 313 1211 319 1168 318 1189 b 310 1218 311 1217 311 1218 b 307 1215 310 1218 308 1217 b 240 1140 289 1188 269 1165 b 16 884 141 1057 62 966 b -1 846 8 868 1 855 b -19 832 -4 839 -12 832 l -21 832 l -21 960 l -20 1089 l -13 1090 b 98 1128 17 1097 62 1111 b 111 1134 103 1131 110 1134 b 167 1163 123 1139 156 1156 b 319 1424 264 1220 319 1320 b 313 1486 319 1444 318 1465 b 310 1494 311 1493 311 1494 b 307 1492 310 1494 308 1493 b 240 1417 289 1464 269 1442 b 16 1160 141 1333 62 1242 b -1 1121 8 1145 1 1131 b -19 1109 -4 1115 -12 1109 l -21 1109 l -21 1236 l -20 1365 l -13 1367 b 98 1404 17 1374 62 1388 b 111 1410 103 1407 110 1410 b 250 1508 172 1437 215 1467 b 319 1701 296 1564 319 1633 b 270 1859 319 1757 303 1814 b 262 1882 265 1868 262 1875 b 276 1900 262 1890 266 1896 "},accidentalFlat:{x_min:-21.78125,x_max:251.8125,ha:257,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 "},accidentalNatural:{x_min:0,x_max:239.5625,ha:244,o:"m 10 460 b 20 462 13 462 14 462 b 39 449 28 462 35 458 l 40 446 l 40 326 b 40 205 40 259 40 205 b 127 227 40 205 80 215 b 220 249 196 244 213 249 b 227 247 224 249 225 248 b 238 237 231 245 235 241 l 239 233 l 239 -106 l 239 -448 l 238 -451 b 219 -463 234 -459 225 -463 b 198 -451 210 -463 202 -459 l 197 -448 l 197 -324 b 197 -201 197 -248 197 -201 b 110 -223 196 -201 157 -210 b 17 -245 42 -240 24 -245 b 10 -242 13 -245 13 -244 b 0 -233 6 -241 2 -237 l 0 -230 l 0 108 l 0 446 l 0 449 b 10 460 2 453 6 458 m 197 22 b 197 70 197 41 197 58 b 196 116 197 113 197 116 l 196 116 b 118 97 196 116 160 106 l 40 77 l 40 -18 b 40 -112 40 -69 40 -112 l 119 -93 l 197 -73 l 197 22 "},accidentalSharp:{x_min:0,x_max:323.9375,ha:331,o:"m 217 535 b 225 537 220 537 221 537 b 245 524 235 537 242 533 l 246 521 l 247 390 l 247 258 l 273 265 b 306 270 288 269 299 270 b 322 259 315 270 319 267 b 323 208 323 256 323 233 b 322 158 323 184 323 159 b 288 140 318 148 315 147 b 247 130 254 131 247 130 b 247 65 247 130 247 104 b 247 20 247 51 247 36 l 247 -88 l 273 -81 b 306 -76 289 -77 299 -76 b 318 -81 311 -76 315 -77 b 323 -123 323 -87 323 -86 l 323 -138 l 323 -154 b 318 -195 323 -191 323 -190 b 269 -210 314 -199 315 -199 b 249 -216 259 -213 250 -216 l 247 -216 l 247 -349 l 246 -483 l 245 -487 b 225 -499 242 -495 234 -499 b 206 -487 219 -499 210 -495 l 205 -483 l 205 -355 l 205 -227 l 204 -227 l 181 -233 l 138 -244 b 117 -249 127 -247 117 -249 b 115 -385 115 -249 115 -256 l 115 -523 l 114 -526 b 95 -538 110 -534 102 -538 b 74 -526 87 -538 78 -534 l 73 -523 l 73 -391 b 72 -260 73 -269 73 -260 b 72 -260 72 -260 72 -260 b 19 -273 61 -263 23 -273 b 0 -260 10 -273 4 -267 b 0 -209 0 -256 0 -256 l 0 -162 l 1 -158 b 61 -134 5 -148 5 -148 l 73 -131 l 73 -22 b 72 86 73 79 73 86 b 72 86 72 86 72 86 b 19 74 61 83 23 74 b 0 86 10 74 4 79 b 0 137 0 90 0 90 l 0 184 l 1 188 b 61 212 5 198 5 198 l 73 215 l 73 348 l 73 481 l 74 485 b 95 498 78 492 87 498 b 103 495 98 498 100 496 b 114 485 107 494 111 489 l 115 481 l 115 353 l 115 226 l 121 226 b 159 235 123 227 141 231 l 198 247 l 205 248 l 205 384 l 205 521 l 206 524 b 217 535 209 528 212 533 m 205 9 b 205 119 205 70 205 119 l 205 119 b 182 113 204 119 194 116 l 138 102 b 117 97 127 99 117 97 b 115 -12 115 97 115 91 l 115 -122 l 121 -120 b 159 -111 123 -119 141 -115 l 198 -101 l 205 -98 l 205 9 "},accidentalDoubleSharp:{x_min:0,x_max:367.5,ha:375,o:"m 0 124 l 0 187 l 61 187 l 122 187 l 122 138 l 122 91 l 153 61 l 183 30 l 213 61 l 243 91 l 243 138 l 243 187 l 306 187 l 367 187 l 367 124 l 367 61 l 321 61 l 274 61 l 243 30 l 213 0 l 243 -31 l 274 -62 l 321 -62 l 367 -62 l 367 -124 l 367 -188 l 306 -188 l 243 -188 l 243 -140 l 243 -93 l 213 -62 l 183 -31 l 153 -62 l 122 -93 l 122 -140 l 122 -188 l 61 -188 l 0 -188 l 0 -124 l 0 -62 l 46 -62 l 92 -62 l 123 -31 l 153 0 l 123 30 l 92 61 l 46 61 l 0 61 l 0 124 "},accidentalDoubleFlat:{x_min:-21.78125,x_max:483.1875,ha:493,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 179 164 199 187 192 l 210 176 l 210 396 l 210 617 l 212 621 b 231 632 216 628 223 632 b 250 620 239 632 247 628 b 251 383 251 616 251 616 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 "},accidentalParensLeft:{x_min:-166.0625,x_max:-25.859375,ha:0,o:"m -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 "},accidentalParensRight:{x_min:25.859375,x_max:164.6875,ha:168,o:"m 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 "},accidentalQuarterToneFlatStein:{x_min:0,x_max:272.21875,ha:278,o:"m 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 "},accidentalThreeQuarterTonesFlatZimmermann:{x_min:0,x_max:607.0625,ha:619,o:"m 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 m 347 631 b 353 632 348 632 351 632 b 374 620 363 632 371 628 b 375 383 375 616 375 616 l 375 148 l 377 151 b 492 199 415 183 454 199 b 537 191 507 199 522 197 b 607 84 582 176 607 134 b 583 0 607 58 598 29 b 455 -142 562 -40 533 -72 l 378 -215 b 355 -229 364 -229 362 -229 b 334 -216 345 -229 337 -224 l 333 -212 l 333 201 l 333 616 l 334 620 b 347 631 337 624 341 630 m 465 131 b 451 133 461 133 455 133 b 445 133 449 133 446 133 b 379 87 419 129 396 113 l 375 80 l 375 -37 l 375 -156 l 378 -152 b 499 81 451 -72 499 20 l 499 83 b 465 131 499 113 490 126 "},accidentalQuarterToneSharpStein:{x_min:0,x_max:193.28125,ha:197,o:"m 85 514 b 95 517 88 517 89 517 b 114 505 103 517 110 513 l 115 502 l 115 376 b 115 249 115 306 115 249 b 141 258 117 249 127 252 l 167 266 l 172 266 b 190 254 181 265 187 262 l 193 251 l 193 202 l 193 188 b 187 147 193 149 191 152 b 147 130 183 142 182 141 l 115 119 l 115 9 b 115 -99 115 -51 115 -99 b 141 -91 115 -99 127 -95 b 171 -81 166 -81 167 -81 l 171 -81 b 191 -94 181 -81 189 -87 b 193 -142 191 -97 193 -120 b 191 -195 193 -167 191 -194 b 125 -227 187 -205 187 -204 l 115 -230 l 115 -366 l 115 -503 l 114 -506 b 95 -519 110 -514 102 -519 b 74 -506 87 -519 78 -514 l 73 -503 l 73 -374 b 73 -245 73 -260 73 -245 b 73 -245 73 -245 73 -245 b 55 -252 72 -245 63 -249 l 32 -260 b 19 -263 27 -262 23 -263 b 4 -256 13 -263 8 -260 b 0 -215 0 -251 0 -254 b 0 -199 0 -210 0 -206 l 0 -152 l 1 -149 b 8 -140 2 -145 5 -141 b 42 -127 9 -140 24 -133 l 73 -116 l 73 -5 b 73 23 73 4 73 15 b 73 105 73 70 73 105 b 49 97 73 105 61 101 b 17 88 32 91 23 88 b 4 95 10 88 8 91 b 0 137 0 101 0 98 b 0 151 0 141 0 145 l 0 199 l 1 202 b 43 224 5 212 5 212 l 73 234 l 73 367 l 73 502 l 74 505 b 85 514 77 509 81 513 "},accidentalThreeQuarterTonesSharpStein:{x_min:-1.359375,x_max:455.96875,ha:465,o:"m 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 "},accidentalBuyukMucennebFlat:{x_min:-171.5,x_max:251.8125,ha:257,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 "},accidentalBakiyeFlat:{x_min:-176.9375,x_max:251.8125,ha:257,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 "},accidentalKomaSharp:{x_min:-1.359375,x_max:455.96875,ha:465,o:"m 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 "},accidentalKucukMucennebSharp:{x_min:-1.359375,x_max:255.890625,ha:261,o:"m 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 "},articAccentAbove:{x_min:-348.4375,x_max:24.5,ha:25,o:"m -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 "},articAccentBelow:{x_min:-348.4375,x_max:24.5,ha:25,o:"m -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 "},articTenutoAbove:{x_min:0,x_max:318.5,ha:325,o:"m 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 "},articTenutoBelow:{x_min:0,x_max:318.5,ha:325,o:"m 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 "},articStaccatoAbove:{x_min:0,x_max:133.390625,ha:136,o:"m 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 "},articStaccatoBelow:{x_min:0,x_max:133.390625,ha:136,o:"m 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 "},articStaccatissimoAbove:{x_min:-73.5,x_max:72.140625,ha:74,o:"m -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 "},articStaccatissimoBelow:{x_min:-73.5,x_max:72.140625,ha:74,o:"m -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 "},articMarcatoAbove:{x_min:-149.71875,x_max:148.359375,ha:151,o:"m -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 "},articMarcatoBelow:{x_min:-149.71875,x_max:148.359375,ha:151,o:"m -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 "},fermataAbove:{x_min:-442.359375,x_max:441,ha:450,o:"m -31 487 b -1 488 -21 488 -10 488 b 434 104 216 488 397 330 b 441 27 438 79 441 47 b 439 12 441 20 439 15 b 419 0 435 4 427 0 b 404 5 413 0 408 1 b 398 30 400 11 398 13 b 0 351 390 213 213 351 b -59 348 -20 351 -39 349 b -400 30 -251 324 -393 191 b -405 5 -400 13 -401 11 b -420 0 -409 1 -415 0 b -441 12 -428 0 -436 4 b -442 27 -441 15 -442 20 b -435 104 -442 47 -439 79 b -31 487 -401 316 -235 474 m -13 131 b -1 133 -9 133 -5 133 b 51 105 19 133 39 123 b 61 70 58 95 61 83 b 51 34 61 58 58 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -57 38 -62 54 b -13 131 -62 98 -44 124 "},fermataBelow:{x_min:-441,x_max:439.640625,ha:449,o:"m -428 -2 b -421 0 -427 -1 -424 0 b -406 -6 -416 0 -409 -2 b -400 -31 -401 -12 -400 -15 b -1 -352 -392 -215 -215 -352 b 58 -349 19 -352 38 -351 b 398 -31 250 -326 392 -192 b 404 -6 398 -15 400 -12 b 419 -1 408 -2 413 -1 b 439 -13 427 -1 435 -5 b 439 -29 439 -16 439 -22 b 434 -105 439 -48 438 -80 b 0 -489 397 -333 213 -489 b -68 -484 -23 -489 -44 -488 b -441 -36 -280 -452 -436 -263 b -441 -30 -441 -34 -441 -31 b -428 -2 -441 -11 -439 -5 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -57 -102 -62 -87 b -13 -9 -62 -44 -44 -16 "},fermataLongAbove:{x_min:-390.640625,x_max:389.28125,ha:397,o:"m -378 502 l -374 503 l 0 503 l 372 503 l 377 502 b 387 491 381 499 385 496 l 389 488 l 389 251 l 389 15 l 387 12 b 367 0 383 4 375 0 b 348 12 360 0 352 4 l 347 15 l 347 174 l 347 335 l 0 335 l -348 335 l -348 174 l -348 15 l -349 12 b -368 0 -353 4 -362 0 b -389 12 -377 0 -385 4 l -390 15 l -390 251 l -390 488 l -389 491 b -378 502 -386 496 -382 499 m -13 131 b -1 133 -9 133 -5 133 b 50 105 19 133 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -58 38 -62 55 b -13 131 -62 98 -44 124 "},fermataLongBelow:{x_min:-390.640625,x_max:389.28125,ha:397,o:"m -378 -2 b -368 -1 -375 -1 -374 -1 b -349 -13 -360 -1 -353 -5 l -348 -16 l -348 -176 l -348 -337 l 0 -337 l 347 -337 l 347 -176 l 347 -16 l 348 -13 b 367 0 352 -5 360 0 b 387 -13 375 0 383 -5 l 389 -16 l 389 -252 l 389 -489 l 387 -492 b 377 -503 385 -498 381 -501 l 372 -505 l 0 -505 l -374 -505 l -378 -503 b -389 -492 -382 -501 -386 -498 l -390 -489 l -390 -252 l -390 -16 l -389 -13 b -378 -2 -386 -8 -382 -4 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -58 -102 -62 -87 b -13 -9 -62 -44 -44 -16 "},fermataVeryLongAbove:{x_min:-390.640625,x_max:389.28125,ha:397,o:"m -378 573 l -374 576 l 0 576 l 372 576 l 377 573 b 387 563 381 571 385 567 l 389 559 l 389 287 l 389 15 l 387 12 b 367 0 383 4 375 0 b 348 12 360 0 352 4 l 347 15 l 347 210 l 347 406 l 0 406 l -348 406 l -348 210 l -348 15 l -349 12 b -368 0 -353 4 -362 0 b -389 12 -377 0 -385 4 l -390 15 l -390 287 l -390 559 l -389 563 b -378 573 -386 567 -382 571 m -274 337 l -270 338 l 0 338 l 269 338 l 273 337 b 284 326 279 334 281 330 l 285 323 l 285 169 l 285 15 l 284 12 b 265 -1 280 4 272 -1 b 245 12 257 -1 249 4 l 245 15 l 243 108 l 243 201 l 0 201 l -245 201 l -245 108 l -245 15 l -246 12 b -266 -1 -250 4 -258 -1 b -285 12 -273 -1 -281 4 l -287 15 l -287 169 l -287 323 l -285 326 b -274 337 -283 330 -280 334 m -13 131 b -1 133 -9 133 -5 133 b 50 105 19 133 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -58 38 -62 55 b -13 131 -62 98 -44 124 "},fermataVeryLongBelow:{x_min:-390.640625,x_max:389.28125,ha:397,o:"m -378 -2 b -368 -1 -375 -1 -374 -1 b -349 -13 -360 -1 -353 -5 l -348 -16 l -348 -212 l -348 -408 l 0 -408 l 347 -408 l 347 -212 l 347 -16 l 348 -13 b 367 0 352 -5 360 0 b 387 -13 375 0 383 -5 l 389 -16 l 389 -288 l 389 -560 l 387 -564 b 377 -574 385 -569 381 -573 l 372 -577 l 0 -577 l -374 -577 l -378 -574 b -389 -564 -382 -573 -386 -569 l -390 -560 l -390 -288 l -390 -16 l -389 -13 b -378 -2 -386 -8 -382 -4 m -274 -2 b -266 -1 -272 -1 -270 -1 b -246 -13 -257 -1 -250 -5 l -245 -16 l -245 -109 l -245 -202 l 0 -202 l 243 -202 l 243 -109 l 245 -16 l 245 -13 b 265 0 249 -5 257 0 b 284 -13 272 0 280 -5 l 285 -16 l 285 -170 l 285 -324 l 284 -327 b 273 -338 281 -331 279 -335 l 269 -340 l 0 -340 l -270 -340 l -274 -338 b -285 -327 -280 -335 -283 -331 l -287 -324 l -287 -170 l -287 -16 l -285 -13 b -274 -2 -283 -8 -280 -4 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -58 -102 -62 -87 b -13 -9 -62 -44 -44 -16 "},fermataShortAbove:{x_min:-390.640625,x_max:389.28125,ha:397,o:"m -9 650 b -1 652 -6 650 -4 652 b 19 639 6 652 13 648 l 23 631 b 28 623 24 628 27 626 l 34 614 l 39 606 l 43 598 l 49 588 l 54 580 l 59 571 l 65 563 l 69 555 l 74 546 l 80 537 l 85 528 b 89 520 87 526 89 523 l 95 512 l 100 503 l 106 494 l 111 487 l 115 478 l 121 470 l 126 462 l 130 453 l 136 445 l 141 437 l 147 427 l 151 419 l 156 410 l 161 402 l 167 394 l 172 385 l 176 376 b 182 367 179 374 181 370 l 187 359 l 193 351 l 198 342 l 202 334 l 208 326 l 212 317 l 217 309 l 223 301 l 228 292 l 234 284 l 238 274 l 243 266 l 249 258 l 254 249 l 259 241 l 264 233 l 269 224 b 274 216 270 222 273 217 l 280 206 l 285 198 l 295 180 l 299 174 l 304 165 l 310 156 l 315 148 l 321 140 l 325 131 l 330 123 l 336 113 l 341 105 l 347 97 l 351 88 l 356 80 l 360 72 b 364 66 362 70 363 68 b 370 58 366 65 368 61 l 379 41 b 389 19 386 31 389 24 b 382 4 389 13 386 8 b 347 0 377 0 378 0 b 337 0 344 0 340 0 b 336 0 336 0 336 0 b 287 11 294 0 294 0 l 281 19 l 276 27 l 272 37 l 266 45 l 261 54 l 255 62 l 250 70 l 246 79 l 240 87 l 235 97 l 230 105 l 224 113 l 220 122 l 215 130 l 209 140 l 204 148 l 200 155 l 194 163 b 189 172 193 165 191 169 l 185 180 l 179 188 l 174 198 l 168 206 l 163 215 l 159 223 l 153 231 l 148 240 l 142 249 l 138 258 l 133 266 l 127 274 l 122 283 l 117 292 l 111 301 l 107 308 l 102 316 b 98 324 102 317 99 322 l 92 333 l 87 341 l 81 349 l 77 359 l 72 367 l 66 376 l 61 384 l 55 392 l 51 401 l 46 410 l 40 419 l 35 427 l 31 435 l 24 444 l 20 453 l 14 460 l 10 469 b 5 477 9 470 6 474 l 0 485 l -5 494 l -9 502 l -14 512 b -20 519 -16 513 -19 517 l -24 526 l -28 534 b -31 537 -29 535 -31 537 b -35 533 -32 537 -32 535 l -88 444 l -187 280 l -285 117 l -343 23 b -362 1 -352 6 -356 2 b -368 0 -364 0 -367 0 b -390 20 -381 0 -390 8 l -390 20 b -359 77 -390 27 -390 27 l -80 539 l -25 631 b -9 650 -17 644 -13 648 m -13 133 b -1 134 -9 133 -5 134 b 50 105 19 134 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 70 -57 40 -62 55 b -13 133 -62 98 -44 126 "},fermataShortBelow:{x_min:-390.640625,x_max:389.28125,ha:397,o:"m -377 -1 b -368 0 -375 -1 -372 0 b -362 -1 -366 0 -363 -1 b -343 -24 -356 -4 -352 -8 l -285 -119 l -187 -280 l -88 -444 l -35 -533 b -31 -538 -32 -537 -32 -538 b -28 -534 -31 -538 -29 -537 l -23 -526 l -19 -517 l -13 -509 l -8 -501 l -2 -492 l 2 -483 l 6 -476 l 17 -458 l 23 -449 l 32 -433 l 38 -424 l 42 -416 l 47 -408 l 53 -399 l 58 -391 l 63 -381 l 68 -373 l 73 -365 l 78 -356 l 84 -348 l 89 -340 l 93 -330 l 99 -322 l 104 -315 l 114 -297 l 125 -280 l 129 -272 l 134 -263 l 140 -255 l 145 -247 l 151 -238 l 155 -230 l 160 -220 l 166 -212 l 171 -204 l 176 -195 l 181 -187 l 186 -177 l 191 -169 l 196 -162 l 201 -154 l 206 -144 l 217 -127 l 221 -119 l 227 -111 l 232 -102 l 238 -94 l 242 -86 l 247 -77 l 253 -69 l 258 -59 l 262 -51 l 268 -43 l 273 -34 l 279 -26 l 283 -18 b 321 -1 292 -2 292 -1 b 338 -1 326 -1 332 -1 b 382 -6 378 -1 375 -1 b 389 -20 386 -9 389 -15 b 382 -38 389 -26 386 -31 l 378 -47 l 372 -55 l 367 -63 l 362 -72 l 356 -80 l 351 -90 l 347 -98 l 341 -106 l 336 -115 l 330 -123 l 325 -131 l 321 -141 l 315 -149 l 310 -158 l 304 -166 l 299 -174 b 295 -183 298 -177 296 -181 l 289 -191 l 285 -199 l 280 -208 l 274 -216 l 269 -224 l 264 -233 l 259 -242 l 254 -251 l 249 -259 l 243 -267 l 238 -276 l 234 -284 l 228 -292 l 223 -302 l 217 -310 l 213 -319 l 208 -327 b 202 -335 206 -330 204 -334 l 197 -344 l 193 -351 l 187 -360 l 182 -369 l 176 -377 l 172 -385 l 167 -394 l 161 -403 l 156 -412 l 152 -420 l 147 -428 l 141 -437 l 136 -445 l 130 -455 l 126 -463 l 121 -471 l 115 -480 b 110 -488 114 -483 111 -487 l 106 -496 l 100 -503 l 96 -512 l 89 -521 l 85 -530 l 80 -538 l 74 -546 l 69 -555 l 65 -564 l 59 -573 l 54 -581 l 49 -589 l 43 -598 l 39 -606 l 34 -616 l 28 -624 l 23 -632 b 19 -641 21 -635 20 -638 b 0 -653 14 -649 8 -653 b -25 -631 -10 -653 -14 -649 l -80 -541 l -359 -79 b -389 -29 -375 -52 -389 -30 b -390 -22 -389 -26 -390 -24 b -377 -1 -390 -13 -385 -5 m -13 -9 b -1 -8 -9 -8 -5 -8 b 51 -36 19 -8 39 -19 b 61 -72 58 -47 61 -59 b 51 -106 61 -84 58 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -127 b -62 -72 -57 -102 -62 -87 b -13 -9 -62 -44 -44 -16 "},breathMarkComma:{x_min:-1.359375,x_max:193.28125,ha:197,o:"m 78 233 b 87 233 81 233 84 233 b 187 140 132 233 174 195 b 193 102 190 127 193 115 b 43 -113 193 22 136 -62 b 27 -119 36 -116 31 -119 b 19 -108 21 -119 19 -115 b 29 -97 19 -102 20 -101 b 102 13 73 -72 102 -27 b 92 51 102 26 98 40 l 91 54 l 84 54 b 8 104 53 54 21 74 b -1 142 1 116 -1 130 b 78 233 -1 187 31 227 "},breathMarkUpbow:{x_min:-170.140625,x_max:168.78125,ha:172,o:"m -160 567 b -122 567 -159 567 -149 567 l -87 567 l -84 566 b -74 553 -78 563 -77 560 b -20 366 -73 551 -49 466 b 31 186 8 267 31 186 b 85 371 31 186 55 269 b 140 559 114 473 138 557 b 153 567 141 564 148 567 b 168 559 159 567 166 564 b 168 555 168 557 168 557 b 92 281 168 548 159 513 b 14 13 50 134 14 13 b 0 0 14 6 6 0 b -17 15 -8 0 -17 8 b -93 283 -17 15 -51 136 b -170 552 -166 533 -170 548 b -170 553 -170 552 -170 552 b -160 567 -170 560 -167 564 "},caesura:{x_min:0,x_max:622.03125,ha:635,o:"m 398 417 b 406 419 401 419 404 419 b 427 398 417 419 427 409 b 427 391 427 395 427 392 b 34 -274 424 385 38 -272 b 20 -280 29 -278 25 -280 b 0 -259 9 -280 0 -270 b 0 -252 0 -256 0 -254 b 393 413 2 -247 389 410 b 398 417 394 415 397 416 m 592 417 b 600 419 594 419 597 419 b 622 398 611 419 622 409 b 620 391 622 395 620 392 b 227 -274 617 385 231 -272 b 213 -280 223 -278 219 -280 b 193 -259 202 -280 193 -270 b 194 -252 193 -256 193 -254 b 586 413 196 -247 582 410 b 592 417 588 415 590 416 "},caesuraCurved:{x_min:0,x_max:503.609375,ha:514,o:"m 274 430 b 277 430 276 430 277 430 b 310 394 296 430 310 415 b 308 383 310 391 308 387 b 306 367 307 381 307 374 b 236 120 298 305 272 210 b 40 -273 189 -5 125 -134 b 20 -287 35 -283 27 -287 b 5 -281 14 -287 9 -285 b 0 -267 1 -277 0 -273 b 9 -242 0 -262 2 -255 b 246 395 137 -12 232 242 b 274 430 249 416 257 427 m 468 430 b 472 430 469 430 470 430 b 503 394 490 430 503 415 b 502 383 503 391 503 387 b 499 367 502 381 500 374 b 431 120 491 305 465 210 b 234 -273 382 -5 318 -134 b 213 -287 228 -283 220 -287 b 198 -281 208 -287 202 -285 b 193 -267 194 -277 193 -273 b 202 -242 193 -262 196 -255 b 439 395 330 -12 426 242 b 468 430 442 416 451 427 "},restMaxima:{x_min:0,x_max:464.140625,ha:474,o:"m 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 "},restDoubleWhole:{x_min:0,x_max:386.5625,ha:394,o:"m 0 173 l 0 347 l 193 347 l 386 347 l 386 173 l 386 0 l 193 0 l 0 0 l 0 173 "},restWhole:{x_min:0,x_max:447.8125,ha:457,o:"m 0 -87 l 0 0 l 223 0 l 447 0 l 447 -87 l 447 -174 l 223 -174 l 0 -174 l 0 -87 "},restWholeLegerLine:{x_min:0,x_max:737.71875,ha:753,o:"m 9 13 b 208 15 10 15 51 15 b 368 15 251 15 304 15 l 726 15 l 729 12 b 737 -1 735 9 737 4 b 729 -15 737 -6 735 -11 l 726 -16 l 660 -16 l 592 -16 l 592 -95 l 592 -174 l 368 -174 l 144 -174 l 144 -95 l 144 -16 l 77 -16 l 9 -16 l 6 -15 b 0 -1 1 -11 0 -6 b 9 13 0 5 2 11 "},restHalf:{x_min:0,x_max:447.8125,ha:457,o:"m 0 86 l 0 173 l 223 173 l 447 173 l 447 86 l 447 0 l 223 0 l 0 0 l 0 86 "},restHalfLegerLine:{x_min:0,x_max:737.71875,ha:753,o:"m 144 94 l 144 173 l 368 173 l 592 173 l 592 94 l 592 15 l 660 15 l 726 15 l 729 12 b 737 -1 735 9 737 4 b 729 -15 737 -6 735 -11 l 726 -16 l 368 -16 l 9 -16 l 6 -15 b 0 -1 1 -11 0 -6 b 6 12 0 4 1 9 l 9 15 l 77 15 l 144 15 l 144 94 "},restQuarter:{x_min:0,x_max:300.8125,ha:307,o:"m 49 505 b 53 506 50 505 51 506 b 70 496 58 506 62 503 b 81 485 73 492 78 488 l 96 473 l 111 459 l 122 449 l 134 438 l 182 396 l 255 330 b 292 291 292 298 292 298 l 292 290 l 292 284 l 283 270 b 209 36 234 197 209 113 b 288 -170 209 -44 235 -119 b 299 -184 295 -179 299 -181 b 300 -191 300 -187 300 -188 b 285 -206 300 -199 294 -206 b 280 -206 283 -206 281 -206 b 247 -201 270 -202 259 -201 b 176 -222 223 -201 197 -208 b 114 -340 136 -249 114 -292 b 172 -471 114 -384 134 -433 b 185 -492 182 -481 185 -487 b 181 -502 185 -496 183 -499 b 171 -508 176 -505 174 -508 b 152 -498 166 -508 160 -503 b 0 -284 65 -428 12 -352 b 0 -260 0 -278 0 -270 b 1 -238 0 -252 0 -242 b 148 -140 16 -177 73 -140 b 209 -148 167 -140 189 -142 b 215 -149 212 -148 215 -149 b 215 -149 215 -149 215 -149 l 215 -149 b 201 -136 215 -148 209 -142 l 157 -97 l 96 -41 b 17 34 21 24 17 29 b 17 37 17 36 17 36 b 17 38 17 37 17 38 b 25 56 17 44 17 44 b 110 298 81 131 110 219 b 46 474 110 367 88 431 b 38 491 40 480 38 487 b 49 505 38 498 42 502 "},rest8th:{x_min:0,x_max:349.8125,ha:357,o:"m 88 302 b 103 303 93 302 98 303 b 202 224 149 303 191 270 b 205 199 204 216 205 208 b 178 129 205 173 196 147 l 175 126 l 182 127 b 307 249 236 142 284 190 b 313 259 308 254 311 258 b 329 267 317 265 323 267 b 349 247 340 267 349 259 b 201 -263 349 242 204 -258 b 182 -273 197 -270 190 -273 b 163 -260 174 -273 166 -269 b 161 -256 161 -259 161 -258 b 217 -59 161 -248 170 -220 b 272 129 247 43 272 127 b 272 129 272 129 272 129 b 264 122 272 129 268 126 b 140 80 227 94 183 80 b 36 115 102 80 65 91 b 0 194 10 136 0 165 b 88 302 0 244 32 292 "},rest16th:{x_min:0,x_max:450.53125,ha:460,o:"m 189 302 b 204 303 193 302 198 303 b 303 224 250 303 292 270 b 306 199 304 216 306 208 b 279 129 306 173 296 147 l 276 126 l 281 127 b 408 249 337 142 385 190 b 412 259 409 254 412 258 b 430 267 417 265 423 267 b 450 247 441 267 450 259 b 200 -605 450 242 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 194 111 136 99 165 b 189 302 99 244 133 292 "},rest32nd:{x_min:0,x_max:551.25,ha:563,o:"m 289 644 b 304 645 294 645 299 645 b 404 566 349 645 392 613 b 406 541 405 557 406 549 b 379 471 406 514 397 489 l 377 467 l 382 470 b 509 591 438 485 485 531 b 513 601 510 595 513 599 b 530 609 518 607 524 609 b 551 588 540 609 551 602 b 200 -605 551 584 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 195 112 136 99 165 b 118 256 99 217 106 238 b 204 303 138 287 171 303 b 292 249 238 303 273 285 b 306 199 302 234 306 217 b 279 129 306 173 296 148 l 276 126 l 281 127 b 408 248 336 142 385 190 b 473 470 409 254 473 469 b 473 470 473 470 473 470 b 465 464 473 470 469 467 b 341 421 428 435 383 421 b 236 458 303 421 266 433 b 200 537 212 478 200 508 b 289 644 200 585 234 635 "},rest64th:{x_min:-1.359375,x_max:651.96875,ha:665,o:"m 389 644 b 405 645 394 645 400 645 b 504 566 450 645 492 613 b 507 541 506 557 507 549 b 480 471 507 514 498 489 l 477 467 l 483 470 b 609 591 539 485 586 531 b 613 601 611 595 613 599 b 631 609 619 607 624 609 b 651 588 641 609 651 602 b 200 -946 651 584 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 537 313 478 300 508 b 389 644 300 585 334 635 "},rest128th:{x_min:-1.359375,x_max:752.703125,ha:768,o:"m 490 985 b 504 986 495 986 500 986 b 604 907 551 986 593 954 b 607 884 607 900 607 892 b 581 813 607 857 597 831 l 578 810 l 583 811 b 710 932 638 827 687 873 b 714 943 711 936 713 942 b 730 952 720 949 725 952 b 752 931 741 952 752 943 b 200 -946 752 927 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 538 314 477 300 508 b 318 598 300 559 306 580 b 404 645 340 630 372 645 b 494 592 439 645 475 627 b 507 541 502 577 507 559 b 480 471 507 516 498 489 l 477 467 l 483 470 b 608 589 537 485 586 531 b 675 811 611 595 675 810 b 675 811 675 811 675 811 b 666 806 675 811 671 809 b 543 763 628 777 585 763 b 438 799 504 763 468 775 b 401 878 412 820 401 849 b 490 985 401 928 434 977 "},dynamicPiano:{x_min:-53.078125,x_max:513.140625,ha:485,o:"m 185 383 b 196 384 187 383 191 384 b 277 334 230 384 259 365 b 288 301 281 324 288 306 b 288 297 288 298 288 297 b 294 302 289 297 291 299 b 394 370 323 338 367 367 b 404 371 398 370 401 371 b 510 272 453 371 498 328 b 513 237 513 262 513 251 b 507 172 513 217 511 192 b 326 -34 487 59 412 -26 b 314 -36 322 -36 318 -36 b 274 -24 298 -36 283 -31 l 265 -16 b 224 44 246 -1 232 20 b 223 49 224 47 223 49 b 223 49 223 49 223 49 b 149 -197 221 48 149 -194 b 149 -198 149 -197 149 -198 b 170 -210 149 -202 155 -205 b 187 -215 174 -210 175 -212 b 204 -231 201 -219 204 -222 b 197 -245 204 -240 202 -242 l 194 -248 l 76 -248 l -42 -248 l -46 -245 b -53 -231 -51 -242 -53 -240 b -35 -215 -53 -222 -49 -217 b -13 -210 -21 -212 -20 -212 b -6 -208 -10 -209 -8 -208 b 0 -206 -6 -208 -2 -206 b 25 -188 13 -201 21 -195 b 163 280 28 -183 163 276 b 166 291 163 283 164 287 b 167 302 167 295 167 299 b 155 324 167 315 161 324 b 155 324 155 324 155 324 b 65 230 125 322 85 280 b 53 215 61 217 58 215 b 51 215 53 215 51 215 b 42 224 46 215 42 217 b 57 263 42 231 47 244 b 140 360 77 305 104 337 b 152 370 144 365 149 369 b 185 383 157 376 172 381 m 374 306 b 366 308 371 308 368 308 b 300 273 348 308 321 294 b 284 254 288 262 287 259 b 280 242 283 249 281 245 b 257 169 279 240 270 213 l 236 98 l 236 93 b 251 48 238 77 243 61 b 279 27 258 37 272 27 b 281 27 279 27 280 27 b 291 31 281 27 287 30 b 396 170 334 52 378 109 b 406 247 402 197 406 224 b 401 277 406 259 405 270 b 374 306 397 290 383 303 "},dynamicMezzo:{x_min:46.28125,x_max:669.671875,ha:563,o:"m 183 376 b 189 376 185 376 187 376 b 212 374 197 376 208 376 b 265 337 234 369 253 355 b 274 317 268 331 273 320 b 274 316 274 317 274 316 b 280 323 276 316 276 319 b 311 358 288 337 299 348 b 319 366 315 360 318 365 b 356 376 326 373 340 376 b 382 371 364 376 374 374 b 428 337 400 366 417 352 b 436 317 431 331 436 320 b 438 316 436 317 436 316 b 442 323 438 316 439 319 b 475 358 451 337 462 348 b 483 366 477 360 481 365 b 518 376 488 373 503 376 b 544 373 528 376 536 376 b 604 285 579 360 604 326 b 597 249 604 273 601 258 b 543 63 596 247 544 70 b 541 54 543 61 541 55 b 540 44 540 51 540 47 b 552 23 540 33 545 23 b 552 23 552 23 552 23 b 647 126 586 29 627 72 b 658 138 651 136 653 138 b 660 138 660 138 660 138 b 669 129 666 137 669 136 b 654 88 669 122 665 109 b 562 -12 631 43 602 9 l 549 -19 b 521 -27 540 -24 530 -27 b 447 30 490 -27 458 -4 b 443 58 445 38 443 48 b 450 93 443 72 446 84 b 504 278 453 97 504 272 b 507 288 506 283 506 287 b 509 298 507 292 509 295 b 491 326 509 310 502 320 b 487 327 490 327 488 327 b 479 324 484 327 483 326 b 441 270 462 316 443 288 b 435 249 441 265 436 254 b 398 127 434 248 419 195 b 362 4 379 61 362 5 b 328 -1 359 -1 362 -1 b 314 -1 323 -1 319 -1 b 302 -1 310 -1 306 -1 b 266 4 266 -1 269 -1 b 265 6 265 5 265 5 b 303 144 265 13 272 34 b 343 278 325 216 343 276 b 344 288 343 281 344 285 b 345 298 345 291 345 295 b 330 326 345 310 340 320 b 323 327 328 327 325 327 b 317 324 322 327 321 326 b 279 270 300 316 281 288 b 273 249 279 265 274 254 b 236 127 272 248 255 195 b 200 4 216 61 200 5 b 164 -1 197 -1 198 -1 b 151 -1 161 -1 156 -1 b 140 -1 147 -1 142 -1 b 103 4 104 -1 106 -1 b 103 6 103 5 103 5 b 141 144 103 13 108 34 b 181 278 161 216 179 276 b 182 288 181 281 181 285 b 183 298 182 291 183 295 b 168 324 183 310 178 320 b 160 327 166 326 163 327 b 141 320 156 327 151 324 b 69 230 112 305 85 272 b 57 215 65 217 62 215 b 55 215 57 215 55 215 b 46 224 49 215 46 217 b 59 260 46 231 50 242 b 151 363 81 306 112 341 b 161 369 155 365 160 367 b 183 376 166 371 174 374 "},dynamicForte:{x_min:-118.421875,x_max:597.53125,ha:381,o:"m 460 574 b 464 574 461 574 462 574 b 488 574 470 574 481 574 b 500 573 491 574 498 574 b 594 503 543 570 588 538 b 597 488 596 498 597 494 b 528 417 597 449 564 417 b 502 423 519 417 510 419 b 465 481 477 434 465 458 b 488 528 465 499 472 516 b 490 530 490 530 490 530 b 490 530 490 530 490 530 b 468 517 488 530 475 523 b 349 340 419 485 377 420 b 347 330 348 334 347 330 b 383 328 347 328 363 328 b 428 326 423 328 424 328 b 442 302 438 320 442 312 b 430 281 442 294 438 285 b 385 276 424 277 426 276 l 377 276 l 332 276 l 330 269 b 178 -117 303 126 250 -9 b 1 -249 129 -194 69 -237 b -20 -251 -6 -251 -13 -251 b -114 -187 -65 -251 -100 -227 b -118 -156 -117 -177 -118 -166 b -51 -84 -118 -116 -91 -84 b -31 -87 -46 -84 -39 -86 b 16 -152 0 -95 16 -124 b -12 -205 16 -173 8 -194 b -16 -208 -14 -206 -16 -208 b -14 -208 -16 -208 -14 -208 b -9 -206 -14 -208 -12 -208 b 74 -124 23 -197 54 -166 b 172 224 98 -79 125 22 b 185 276 178 252 183 274 b 185 276 185 276 185 276 b 141 276 185 276 181 276 b 91 280 96 276 96 276 b 77 302 83 285 77 294 b 91 326 77 312 83 320 b 148 328 95 328 96 328 l 198 330 l 202 341 b 460 574 249 473 351 566 "},dynamicRinforzando:{x_min:78.9375,x_max:485.921875,ha:417,o:"m 362 378 b 378 380 367 380 372 380 b 472 348 415 380 453 367 b 485 315 481 338 485 327 b 462 273 485 298 477 281 b 439 267 454 269 446 267 b 398 290 424 267 409 274 b 344 319 385 309 364 319 b 281 269 315 319 289 301 b 279 262 280 266 279 262 b 276 256 279 260 277 258 b 274 249 276 254 274 251 b 238 127 273 248 257 192 b 201 4 217 61 201 5 b 166 -1 198 -1 200 -1 b 153 -1 163 -1 157 -1 b 141 -1 148 -1 144 -1 b 104 4 106 -1 107 -1 b 104 6 104 5 104 5 b 142 144 104 13 110 34 b 182 278 164 219 181 276 b 183 288 182 281 182 285 b 185 302 185 292 185 298 b 164 330 185 317 176 328 b 159 330 163 330 161 330 b 102 302 140 330 119 320 b 91 294 95 295 93 294 b 88 294 91 294 89 294 b 78 303 83 294 78 298 b 81 312 78 306 78 309 b 200 373 106 347 160 373 b 215 371 205 373 209 371 b 266 335 235 367 254 353 b 269 331 268 333 269 331 b 269 331 269 331 269 331 b 273 335 269 331 270 334 b 362 378 298 359 330 376 "},dynamicSforzando:{x_min:70.78125,x_max:378.390625,ha:315,o:"m 246 373 b 254 373 249 373 251 373 b 372 324 303 373 360 351 b 378 302 377 317 378 309 b 338 251 378 278 362 255 b 328 249 334 249 332 249 b 283 294 303 249 283 270 b 288 315 283 301 284 308 b 289 319 289 317 289 319 b 289 319 289 319 289 319 b 283 320 289 320 287 320 b 270 322 279 322 274 322 b 206 288 242 322 215 308 b 206 283 206 287 206 285 b 257 223 206 267 230 238 b 284 206 272 213 277 210 b 351 90 328 173 351 130 b 340 47 351 74 348 59 b 205 -30 314 -2 264 -30 b 182 -29 198 -30 190 -30 b 84 15 147 -24 103 -5 b 70 48 74 24 70 36 b 108 99 70 70 85 94 b 121 102 112 101 117 102 b 167 56 147 102 167 80 b 159 31 167 48 164 40 l 156 26 l 157 26 b 190 20 167 22 178 20 b 220 26 201 20 212 22 b 258 65 243 34 258 51 b 257 70 258 66 258 69 b 204 126 249 94 234 109 b 114 258 148 158 114 209 b 125 302 114 273 118 288 b 246 373 147 342 193 370 "},dynamicZ:{x_min:29.9375,x_max:420.578125,ha:371,o:"m 115 345 b 221 347 117 345 166 347 b 411 345 306 347 409 345 b 420 330 416 342 420 335 b 415 319 420 326 419 321 b 178 118 397 303 179 118 b 178 117 178 118 178 117 b 181 117 178 117 178 117 b 189 117 182 117 185 117 b 193 117 190 117 191 117 b 247 98 215 117 232 111 b 296 75 266 83 280 76 b 302 75 299 75 300 75 b 322 91 311 75 315 79 b 322 91 322 91 322 91 b 322 91 322 91 322 91 b 319 91 322 91 321 91 b 313 90 318 90 315 90 b 283 107 300 90 288 97 b 277 126 279 114 277 121 b 319 167 277 149 295 167 b 319 167 319 167 319 167 b 362 118 347 167 362 147 b 355 82 362 108 359 96 b 311 33 349 65 340 55 b 224 1 284 12 253 1 b 194 5 213 1 204 2 b 168 18 183 8 178 11 b 110 36 151 30 130 36 b 57 15 88 36 68 29 b 47 11 54 12 51 11 b 31 20 40 11 34 13 b 29 26 31 22 29 25 b 68 66 29 36 39 45 b 285 250 73 71 281 248 b 285 250 285 250 285 250 b 231 252 285 252 261 252 b 137 250 190 252 141 250 b 93 227 122 248 110 241 b 78 220 88 222 83 220 b 66 227 74 220 70 222 b 63 234 65 229 63 231 b 85 291 63 241 69 252 b 115 345 108 342 108 344 "},ornamentTrill:{x_min:-340.28125,x_max:338.921875,ha:346,o:"m -32 520 b -29 521 -31 520 -31 521 b -23 519 -27 521 -24 520 b -20 513 -21 517 -20 516 b -21 506 -20 512 -20 509 b -31 474 -23 502 -27 488 l -53 402 l -66 352 l -68 349 l -57 349 b -32 351 -51 349 -40 351 b 123 370 19 352 74 359 b 137 371 127 370 133 371 b 170 356 152 371 164 366 b 171 355 170 355 170 355 b 216 366 174 355 183 358 b 280 378 268 377 266 377 b 287 378 283 378 284 378 b 332 349 307 378 322 369 b 338 319 336 341 338 330 b 332 301 338 310 336 302 b 242 280 329 299 246 280 b 242 280 242 280 242 280 b 235 288 236 280 235 283 b 235 292 235 290 235 291 b 236 302 236 297 236 299 b 220 337 236 316 230 330 l 216 340 l 210 335 b 159 276 189 322 172 301 b 118 149 152 265 156 274 b 81 34 84 36 85 36 b -8 13 78 33 -4 13 b -8 13 -8 13 -8 13 b -14 20 -12 15 -14 15 b -8 44 -14 24 -12 31 b -2 66 -5 55 -2 65 b -2 66 -2 66 -2 66 l -2 66 b -43 41 -2 66 -21 55 b -114 4 -98 8 -98 8 b -144 0 -123 0 -134 0 b -242 99 -197 0 -242 43 b -242 109 -242 102 -242 105 b -212 219 -240 122 -242 116 b -185 312 -197 270 -185 312 l -185 312 b -189 312 -185 312 -186 312 b -259 312 -200 312 -227 312 b -321 310 -291 312 -310 310 b -334 312 -330 310 -334 312 b -340 319 -338 313 -340 316 b -336 326 -340 322 -338 324 b -291 337 -334 326 -314 331 l -247 347 l -210 348 b -172 348 -190 348 -172 348 b -168 363 -172 348 -171 355 b -145 442 -151 424 -145 441 b -133 452 -144 444 -140 446 l -77 489 b -32 520 -53 506 -32 520 m 57 334 b 53 335 55 335 54 335 b 44 334 50 335 49 335 b -70 316 8 326 -28 320 b -78 309 -78 316 -78 316 b -108 202 -80 305 -88 274 b -141 81 -136 112 -141 93 b -140 74 -141 79 -141 77 b -117 49 -137 59 -127 49 b -107 52 -114 49 -110 51 b 16 127 -106 54 14 126 b 42 217 16 127 42 215 b 49 241 42 222 44 229 b 73 320 53 251 73 317 b 57 334 73 327 65 333 "},ornamentTurn:{x_min:-423.3125,x_max:421.9375,ha:431,o:"m -262 197 b -247 197 -257 197 -253 197 b -118 162 -210 197 -163 184 b 40 45 -61 134 -13 98 b 277 -95 119 -33 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -55 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 201 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 136 b 421 22 421 37 421 29 b 245 -199 421 -93 338 -199 b 238 -198 243 -199 240 -199 b -44 -47 148 -194 50 -141 b -250 86 -114 22 -183 66 b -295 94 -270 91 -283 94 b -315 91 -302 94 -307 94 b -381 4 -356 81 -381 43 b -355 -56 -381 -18 -372 -40 b -298 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -178 -69 -200 -58 -189 -62 b -151 -122 -160 -81 -151 -101 b -171 -167 -151 -138 -157 -155 b -239 -195 -185 -181 -213 -192 b -257 -197 -245 -197 -250 -197 b -423 -5 -352 -197 -423 -109 b -412 65 -423 16 -419 40 b -262 197 -389 137 -329 188 "},ornamentTurnSlash:{x_min:-423.3125,x_max:421.9375,ha:431,o:"m -10 276 b -2 277 -8 277 -5 277 b 17 265 5 277 13 273 b 19 163 19 260 19 260 l 19 68 l 39 45 b 277 -95 122 -34 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -54 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 200 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 137 b 421 22 421 37 421 29 b 257 -198 421 -86 347 -188 b 242 -198 251 -198 247 -198 b 20 -105 181 -198 95 -163 l 19 -104 l 19 -183 b 19 -216 19 -195 19 -206 b 12 -273 19 -272 17 -267 b -2 -278 8 -277 2 -278 b -21 -266 -10 -278 -19 -274 b -23 -165 -23 -263 -23 -262 l -23 -69 l -44 -47 b -250 86 -117 23 -183 66 b -295 94 -270 93 -284 94 b -315 91 -302 94 -308 94 b -381 5 -356 81 -381 43 b -355 -56 -381 -16 -372 -40 b -299 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -168 -77 -196 -58 -179 -65 b -151 -122 -156 -90 -151 -105 b -179 -174 -151 -141 -160 -162 b -239 -195 -194 -184 -217 -192 b -257 -197 -245 -195 -250 -197 b -423 -5 -349 -197 -423 -113 b -423 0 -423 -4 -423 -1 b -277 194 -420 97 -362 173 b -247 197 -268 197 -258 197 b -24 104 -185 197 -100 162 l -23 102 l -23 181 b -21 265 -23 260 -23 260 b -10 276 -20 269 -14 274 "},ornamentMordent:{x_min:-402.890625,x_max:401.53125,ha:410,o:"m -10 273 b -4 274 -9 273 -6 274 b 16 262 4 274 12 269 b 17 158 17 259 17 259 l 17 56 l 62 112 b 117 174 110 172 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b 21 -6 27 0 24 -2 l 17 -12 l 17 -147 b 17 -210 17 -173 17 -194 b 10 -292 17 -297 16 -287 b -2 -299 6 -297 2 -299 b -21 -287 -10 -299 -19 -295 b -24 -174 -23 -284 -23 -284 l -24 -63 l -66 -117 b -121 -176 -110 -170 -114 -176 b -125 -176 -122 -176 -123 -176 b -296 -12 -134 -174 -125 -184 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 170 -398 -43 -231 165 b -212 174 -221 173 -216 174 b -202 173 -208 174 -205 174 b -39 11 -200 172 -151 122 l -28 -1 l -25 1 l -24 4 l -24 130 b -23 260 -24 256 -24 258 b -10 273 -20 266 -16 270 "},ornamentShortTrill:{x_min:-402.890625,x_max:401.53125,ha:410,o:"m -219 173 b -213 174 -217 174 -215 174 b -202 173 -209 174 -205 173 b -114 86 -200 172 -179 151 b -28 0 -66 37 -28 0 b 40 84 -28 0 2 37 b 117 174 111 173 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b -42 -86 27 0 -4 -38 b -118 -174 -112 -174 -111 -173 b -123 -176 -119 -176 -121 -176 b -133 -174 -126 -176 -130 -174 b -296 -12 -136 -173 -172 -137 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 172 -398 -43 -228 167 b -219 173 -223 172 -220 173 "},ornamentTremblement:{x_min:-571.671875,x_max:570.3125,ha:582,o:"m -386 173 b -381 174 -385 174 -383 174 b -370 173 -377 174 -372 173 b -281 86 -367 172 -347 151 b -196 0 -235 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 277 172 b 289 174 285 174 288 174 b 299 173 294 174 298 173 b 462 11 303 172 338 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 374 -176 371 -176 b 280 -87 367 -173 345 -152 b 194 0 234 -38 194 0 b 125 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 43 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -141 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -289 -176 b -300 -174 -295 -176 -299 -174 b -464 -12 -304 -173 -340 -137 l -476 0 l -504 -34 b -543 -77 -534 -73 -537 -76 b -549 -79 -545 -79 -547 -79 b -571 -58 -562 -79 -571 -69 b -568 -49 -571 -55 -570 -52 b -392 172 -566 -43 -396 167 b -386 173 -390 172 -387 173 "},ornamentPrecompAppoggTrill:{x_min:-571.671875,x_max:570.3125,ha:582,o:"m -559 351 b -551 352 -556 352 -553 352 b -530 338 -543 352 -533 348 b -529 169 -530 337 -529 291 l -529 1 l -507 27 l -441 112 b -382 174 -394 169 -390 174 b -378 174 -381 174 -379 174 b -281 86 -370 174 -375 179 b -196 0 -234 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 279 172 b 289 174 285 174 288 174 b 300 173 294 174 298 173 b 462 11 303 172 340 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 375 -176 371 -176 b 280 -87 367 -173 347 -152 b 194 0 234 -38 194 0 b 126 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 44 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -140 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -288 -176 b -300 -174 -294 -176 -298 -174 b -464 -11 -303 -173 -374 -102 l -476 0 l -506 -37 b -539 -76 -528 -65 -537 -74 b -551 -80 -543 -79 -547 -80 b -570 -68 -558 -80 -566 -76 l -571 -65 l -571 136 b -570 340 -571 331 -571 337 b -559 351 -568 344 -564 348 "},ornamentPrecompSlideTrillDAnglebert:{x_min:-590.71875,x_max:589.359375,ha:601,o:"m -367 173 b -362 174 -366 174 -364 174 b -351 173 -357 174 -353 173 b -262 86 -348 172 -328 151 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 72 86 -13 172 6 151 b 157 0 119 37 157 0 b 227 84 159 0 189 37 b 303 174 298 173 296 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 144 -86 213 0 182 -38 b 68 -174 73 -174 74 -173 b 62 -176 66 -176 65 -176 b 53 -174 59 -176 55 -174 b -35 -87 50 -173 29 -152 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -367 173 -375 169 -372 172 "},ornamentPrecompSlideTrillBach:{x_min:-590.71875,x_max:589.359375,ha:601,o:"m 175 273 b 182 274 178 273 181 274 b 202 262 190 274 198 269 b 204 158 204 259 204 259 l 204 56 l 250 112 b 303 174 296 172 298 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 208 -6 213 0 210 -2 l 204 -12 l 204 -147 b 204 -210 204 -173 204 -194 b 198 -292 204 -297 204 -287 b 183 -299 194 -297 189 -299 b 164 -287 175 -299 167 -295 b 163 -174 163 -284 163 -284 l 161 -63 l 119 -117 b 65 -176 76 -170 73 -176 b 61 -176 63 -176 62 -176 b -35 -87 51 -174 57 -180 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -363 174 -374 170 -371 174 b -359 174 -362 174 -360 174 b -262 86 -351 174 -356 179 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 147 11 -13 172 35 123 l 157 -1 l 160 1 l 163 4 l 163 130 b 164 260 163 256 163 258 b 175 273 166 266 170 270 "},ornamentPrecompTrillSuffixDandrieu:{x_min:-590.71875,x_max:589.359375,ha:601,o:"m 544 335 b 553 337 548 337 551 337 b 575 313 563 337 570 330 b 589 226 583 285 589 256 b 517 8 589 152 563 76 b 464 -58 507 -4 503 -9 l 401 -136 b 362 -176 372 -172 370 -176 b 357 -176 360 -176 359 -176 b 261 -87 349 -174 355 -180 b 175 0 215 -38 175 0 b 106 -86 175 0 144 -38 b 29 -174 35 -174 36 -173 b 24 -176 28 -176 27 -176 b 14 -174 21 -176 17 -174 b -73 -87 12 -173 -8 -152 b -159 0 -121 -38 -159 0 b -228 -86 -160 0 -190 -38 b -304 -174 -299 -174 -298 -173 b -310 -176 -306 -176 -308 -176 b -319 -174 -314 -176 -318 -174 b -483 -12 -323 -173 -359 -137 l -495 0 l -524 -34 b -562 -77 -553 -73 -556 -76 b -568 -79 -564 -79 -566 -79 b -590 -58 -581 -79 -590 -69 b -588 -49 -590 -55 -589 -52 b -412 170 -585 -43 -417 165 b -398 174 -408 173 -402 174 b -389 173 -394 174 -392 174 b -300 86 -387 172 -366 151 b -215 -1 -254 37 -215 -1 b -145 84 -215 -1 -183 37 b -69 173 -74 173 -76 172 b -63 174 -68 174 -66 174 b -54 173 -61 174 -57 173 b 34 86 -51 172 -31 151 b 119 -1 81 37 119 -1 b 189 84 121 -1 151 37 b 265 173 259 173 258 172 b 270 174 266 174 269 174 b 280 173 274 174 279 173 b 370 84 283 172 303 151 b 455 -1 416 37 455 -1 l 455 -1 b 476 24 455 -1 469 15 b 547 226 522 87 547 159 b 534 302 547 252 543 278 b 532 317 533 308 532 313 b 544 335 532 326 536 333 "},ornamentPrecompDoubleCadenceUpperPrefix:{x_min:-597.53125,x_max:596.171875,ha:608,o:"m -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 80 86 -5 172 13 151 b 166 -1 127 37 166 -1 b 235 84 166 -1 197 37 b 311 173 306 173 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 152 -86 221 -1 190 -38 b 76 -176 81 -174 83 -173 b 70 -176 74 -176 73 -176 b 61 -174 66 -176 62 -174 b -27 -87 58 -173 38 -152 b -114 -1 -74 -38 -112 -1 b -182 -86 -114 -1 -145 -38 b -258 -176 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 "},ornamentPrecompDoubleCadenceUpperPrefixTurn:{x_min:-597.53125,x_max:596.171875,ha:608,o:"m -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 155 11 -5 172 43 123 l 166 -1 l 168 1 l 170 4 l 170 130 b 171 260 170 256 170 258 b 191 274 175 269 183 274 b 205 267 196 274 201 272 b 212 158 212 262 210 273 l 212 56 l 257 112 b 311 173 304 172 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 216 -6 221 -1 219 -2 l 212 -12 l 212 -147 b 212 -210 212 -173 212 -194 b 205 -292 212 -297 210 -287 b 191 -299 201 -297 196 -299 b 172 -287 183 -299 175 -295 b 170 -174 171 -284 171 -284 l 170 -63 l 127 -117 b 73 -176 84 -170 80 -176 b 68 -176 72 -176 70 -176 b -27 -87 59 -174 65 -180 b -114 0 -74 -38 -112 0 b -182 -86 -114 0 -145 -38 b -258 -174 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 "},ornamentPrecompTrillLowerSuffix:{x_min:-597.53125,x_max:596.171875,ha:608,o:"m -413 173 b -408 174 -412 174 -409 174 b -397 173 -404 174 -400 173 b -308 86 -394 172 -374 151 b -223 0 -261 37 -223 0 b -153 84 -223 0 -191 37 b -77 174 -83 173 -84 172 b -72 174 -76 174 -74 174 b -62 173 -68 174 -63 173 b 25 86 -59 172 -39 151 b 112 0 73 37 111 0 b 181 84 112 0 144 37 b 257 174 251 173 251 172 b 262 174 258 174 261 174 b 273 173 266 174 270 173 b 436 9 276 172 347 101 l 447 -1 l 477 36 b 522 79 511 79 513 79 l 522 79 b 552 51 533 79 539 73 b 596 -112 582 6 596 -51 b 567 -262 596 -161 586 -213 b 539 -322 558 -287 544 -316 b 524 -327 534 -326 529 -327 b 504 -315 515 -327 507 -323 b 503 -308 503 -312 503 -309 b 511 -285 503 -302 504 -297 b 555 -113 540 -227 555 -169 b 544 -34 555 -86 551 -59 b 522 19 540 -16 530 8 l 521 22 l 481 -26 l 405 -122 b 353 -176 366 -172 362 -176 b 349 -176 352 -176 351 -176 b 253 -87 341 -176 347 -180 b 167 0 206 -38 167 0 b 99 -86 167 0 136 -38 b 21 -174 27 -174 28 -173 b 17 -176 20 -176 19 -176 b 6 -174 13 -176 9 -174 b -81 -87 4 -173 -14 -152 b -167 0 -129 -38 -167 0 b -236 -86 -167 0 -198 -38 b -313 -174 -307 -174 -306 -173 b -318 -176 -314 -176 -315 -176 b -328 -174 -321 -176 -325 -174 b -491 -12 -330 -173 -367 -137 l -503 0 l -530 -34 b -570 -77 -562 -73 -564 -76 b -577 -79 -571 -79 -574 -79 b -597 -58 -588 -79 -597 -69 b -596 -49 -597 -55 -597 -52 b -417 172 -593 -43 -423 167 b -413 173 -417 172 -415 173 "},stringsDownBow:{x_min:-228.671875,x_max:227.3125,ha:232,o:"m -217 487 l -213 488 l 0 488 l 212 488 l 216 487 b 225 476 220 484 224 480 l 227 473 l 227 244 l 227 15 l 225 12 b 206 0 223 4 215 0 b 197 1 204 0 200 0 b 187 12 193 4 189 6 l 186 15 l 186 138 l 186 262 l -1 262 l -187 262 l -187 138 l -187 15 l -189 12 b -208 0 -193 4 -200 0 b -227 12 -216 0 -223 4 l -228 15 l -228 244 l -228 473 l -227 476 b -217 487 -225 480 -221 484 "},stringsUpBow:{x_min:-149.71875,x_max:148.359375,ha:151,o:"m -137 381 b -130 383 -134 383 -133 383 b -111 371 -122 383 -114 378 b -55 224 -110 370 -85 305 b 0 80 -25 145 -1 80 b 54 224 0 80 24 145 b 112 377 114 384 110 373 b 127 384 118 381 122 384 b 148 362 138 384 148 374 l 148 356 l 83 183 b 16 9 47 88 17 11 b -1 0 12 2 5 0 b -14 5 -5 0 -10 1 b -84 183 -19 9 -13 -6 l -149 356 l -149 362 b -137 381 -149 371 -145 378 "},stringsHarmonic:{x_min:-122.5,x_max:121.140625,ha:124,o:"m -16 145 b 0 147 -10 147 -5 147 b 121 -1 66 147 121 77 b 114 -49 121 -16 118 -33 b -1 -148 95 -112 47 -148 b -85 -106 -31 -148 -61 -134 b -122 -1 -110 -76 -122 -38 b -16 145 -122 68 -81 134 m 12 111 b 0 113 8 113 4 113 b -68 22 -29 113 -61 73 b -70 0 -69 15 -70 6 b -13 -113 -70 -49 -47 -98 b -1 -115 -9 -115 -5 -115 b 63 -40 24 -115 53 -83 b 68 -1 66 -27 68 -15 b 12 111 68 48 46 97 "},pluckedSnapPizzicatoAbove:{x_min:-149.71875,x_max:148.359375,ha:151,o:"m -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 "},pluckedSnapPizzicatoBelow:{x_min:-149.71875,x_max:148.359375,ha:151,o:"m -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 "},pluckedLeftHandPizzicato:{x_min:0,x_max:319.859375,ha:326,o:"m 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 "},keyboardPedalPed:{x_min:-1.359375,x_max:1064.390625,ha:1086,o:"m 296 692 b 314 694 302 694 307 694 b 386 685 337 694 366 689 b 548 498 480 660 548 580 b 548 481 548 492 548 487 b 455 395 541 426 499 395 b 370 462 420 395 383 417 b 362 496 364 477 362 488 b 377 514 362 509 367 514 b 393 501 386 514 390 510 b 432 474 397 484 413 474 b 470 487 445 474 458 478 b 491 530 484 496 491 510 b 490 544 491 534 491 539 b 333 660 479 606 411 657 l 323 662 l 315 646 b 269 524 285 591 269 556 b 321 431 269 492 287 466 b 349 395 338 413 343 408 b 363 342 359 378 363 362 b 359 312 363 333 362 322 b 285 158 348 266 318 206 b 281 152 283 155 281 152 b 281 152 281 152 281 152 b 287 154 283 152 284 152 b 318 155 298 154 308 155 b 461 98 371 155 419 136 l 464 97 l 483 112 b 503 129 494 120 503 127 b 504 130 503 129 504 129 b 503 138 504 131 503 134 b 500 180 500 152 500 166 b 553 326 500 238 518 288 b 604 366 560 331 592 358 b 649 381 617 376 632 381 b 696 362 665 381 681 374 b 724 302 714 347 724 324 b 695 238 724 278 714 255 b 660 210 691 234 662 212 b 579 148 658 209 582 151 b 579 148 579 148 579 148 b 596 106 579 144 589 119 b 622 77 604 88 609 83 b 657 69 632 72 645 69 b 748 112 688 69 721 84 b 755 123 754 117 755 120 b 755 127 755 124 755 126 b 751 165 752 137 751 151 b 758 219 751 183 754 202 b 894 387 774 290 820 347 b 896 390 896 388 896 388 b 891 398 896 391 895 392 b 622 560 827 477 730 535 b 600 580 605 564 600 569 b 617 596 600 591 607 596 b 628 595 622 596 624 596 b 1057 248 846 552 1020 412 b 1064 191 1061 229 1064 209 b 922 0 1064 94 1005 9 b 902 -1 916 -1 909 -1 b 774 76 847 -1 800 26 b 769 83 770 81 770 83 b 769 81 769 83 769 83 b 627 -1 733 29 677 -1 b 548 27 597 -1 570 8 b 515 88 537 37 525 61 l 513 95 l 510 93 l 453 45 b 390 0 396 0 396 0 b 390 0 390 0 390 0 b 374 15 381 0 377 4 b 268 105 359 69 314 105 b 250 104 262 105 257 105 l 243 102 l 234 90 b 155 1 201 49 159 2 b 147 -1 152 0 149 -1 b 130 15 138 -1 130 6 b 132 20 130 18 132 19 b 136 31 133 22 134 27 b 220 131 149 74 178 109 b 231 137 225 134 230 136 b 302 278 280 202 302 244 b 265 335 302 299 295 309 b 209 442 234 363 213 402 b 209 455 209 446 209 451 b 279 648 209 502 232 564 l 285 659 l 283 659 b 176 627 238 653 210 645 b 57 477 111 594 66 538 b 55 459 55 471 55 464 b 72 409 55 437 61 415 b 93 403 78 405 87 403 b 152 467 123 403 151 431 b 168 488 153 483 157 488 b 185 462 181 488 185 483 l 185 460 b 137 344 183 409 168 369 b 78 322 119 328 98 322 b 13 360 50 322 25 335 b -1 426 4 380 -1 402 b 89 610 -1 488 32 559 b 296 692 147 659 210 685 m 926 348 b 921 353 924 351 922 353 b 914 348 920 353 918 351 b 823 167 857 306 823 237 b 828 124 823 154 826 138 b 890 31 837 79 862 40 b 896 31 892 31 894 31 b 956 104 916 31 940 59 b 970 191 965 129 970 159 b 966 241 970 208 969 224 b 926 348 959 277 945 313 m 627 326 b 619 326 624 326 622 326 b 598 316 611 326 604 323 b 568 215 579 288 568 255 b 568 208 568 213 568 210 b 571 183 570 195 570 184 l 571 183 b 594 201 571 183 582 191 l 634 231 b 660 259 653 247 656 248 b 664 278 662 266 664 272 b 627 326 664 299 649 320 "},keyboardPedalUp:{x_min:-1.359375,x_max:592.078125,ha:604,o:"m 280 692 b 295 694 283 692 289 694 b 310 692 300 694 307 692 b 357 630 340 684 357 657 b 336 580 357 612 351 594 b 311 538 321 566 311 549 b 352 492 311 512 330 492 b 366 495 357 492 362 492 b 397 553 390 503 397 517 b 415 603 397 576 402 591 b 460 623 427 617 443 623 b 509 599 479 623 498 614 b 522 559 518 587 522 573 b 494 506 522 538 513 519 b 451 495 481 498 473 496 b 415 488 432 495 426 494 b 394 449 404 483 394 464 b 394 448 394 448 394 448 l 394 440 l 397 433 b 428 409 404 420 413 413 b 438 408 431 408 435 408 b 479 431 450 408 462 415 b 528 455 495 448 510 455 b 548 452 534 455 541 453 b 592 391 577 442 592 416 b 549 331 592 365 577 340 b 528 327 541 328 534 327 b 479 351 510 327 495 335 b 438 374 464 367 450 374 b 417 369 431 374 424 373 b 394 333 402 360 394 348 b 400 312 394 326 396 319 b 451 287 408 294 420 288 b 513 258 484 285 499 278 b 522 223 519 247 522 234 b 461 159 522 190 496 159 b 449 161 457 159 453 159 b 397 229 416 167 397 191 b 366 288 397 265 390 278 b 352 290 362 290 357 290 b 315 262 336 290 321 280 b 311 245 313 256 311 251 b 334 204 311 233 318 220 b 355 170 348 190 351 184 b 357 152 356 166 357 159 b 355 136 357 147 356 140 b 295 88 345 104 321 88 b 232 152 264 88 232 112 b 255 204 232 174 238 186 b 279 244 273 222 279 231 l 279 245 b 238 290 279 270 259 290 b 224 288 234 290 228 290 b 193 229 200 278 193 265 b 141 161 193 191 174 167 b 129 159 137 159 133 159 b 68 223 93 159 68 190 b 77 258 68 234 70 247 b 138 287 91 278 106 285 b 185 302 166 287 175 291 b 196 333 193 312 196 323 b 174 369 196 347 187 360 b 152 374 166 373 159 374 b 111 351 140 374 126 367 b 62 327 95 335 80 327 b 51 328 58 327 54 327 b -1 391 16 334 -1 363 b 53 455 -1 420 17 449 b 62 455 57 455 59 455 b 111 431 80 455 95 448 b 152 408 127 415 140 408 b 161 409 155 408 159 408 b 193 433 176 413 186 420 l 196 440 l 196 448 b 196 451 196 449 196 449 b 190 471 196 459 194 463 b 137 495 182 489 167 495 l 134 495 l 134 495 b 68 560 95 495 68 521 b 129 623 68 596 95 623 b 144 621 134 623 138 623 b 193 553 175 614 193 589 b 224 495 193 517 200 503 b 238 492 228 492 234 492 b 279 538 259 492 279 512 b 254 580 279 549 269 566 b 232 630 239 594 232 612 b 280 692 232 657 250 684 m 307 456 b 295 458 303 458 299 458 b 230 391 258 458 230 426 b 236 360 230 381 231 371 b 295 324 249 337 272 324 b 353 360 318 324 341 337 b 360 391 357 370 360 381 b 307 456 360 421 340 451 "},pictChokeCymbal:{x_min:0,x_max:227.3125,ha:232,o:"m 91 213 b 100 215 93 215 96 215 b 227 58 167 215 224 144 b 227 52 227 56 227 54 b 61 -201 227 -43 164 -138 b 29 -216 44 -212 36 -216 b 23 -210 27 -216 24 -213 b 21 -205 21 -208 21 -206 b 34 -192 21 -201 25 -197 b 122 -55 89 -161 122 -106 b 104 6 122 -33 117 -12 l 103 9 l 96 9 b 4 79 57 9 17 38 b 0 112 1 90 0 101 b 91 213 0 163 36 209 "},wiggleArpeggiatoUp:{x_min:58.53125,x_max:228.671875,ha:294,o:"m 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 "},arrowheadBlackUp:{x_min:-10.890625,x_max:299.4375,ha:294,o:"m 136 460 b 142 462 137 462 140 462 b 166 449 152 462 161 456 b 171 428 168 446 168 445 b 288 131 194 322 238 209 b 298 115 295 120 296 117 b 299 106 298 112 299 109 b 273 81 299 91 287 81 b 255 86 268 81 261 83 b 155 116 225 104 183 116 l 152 116 l 149 108 b 141 83 148 102 144 91 b 134 48 137 69 134 58 b 149 9 134 34 140 24 b 153 -1 152 5 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 147 -11 b 122 2 138 -11 133 -6 b 95 61 104 20 95 38 b 107 108 95 74 99 90 b 108 113 107 111 108 112 b 107 113 108 113 108 113 b 102 113 106 113 104 113 b 31 86 76 108 53 98 b 14 80 24 81 20 80 b -10 106 0 80 -10 91 b 0 131 -10 115 -9 116 b 115 430 49 209 91 317 b 136 460 119 451 123 456 "},arrowheadBlackDown:{x_min:-10.890625,x_max:298.078125,ha:294,o:"m 138 473 b 142 474 140 473 141 474 b 164 459 148 474 153 470 b 191 402 183 442 191 423 b 181 353 191 388 187 371 b 178 349 179 352 178 349 b 179 348 178 348 179 348 b 185 349 181 348 182 348 b 255 376 210 355 234 363 b 272 381 264 381 266 381 b 298 355 287 381 298 370 b 288 330 298 348 298 345 b 171 34 238 254 194 141 b 166 13 168 16 168 16 b 144 1 161 5 152 1 b 121 15 134 1 125 5 b 115 33 119 18 117 24 b 0 330 91 145 49 252 b -10 355 -9 345 -10 348 b 13 381 -10 371 0 381 b 31 376 19 381 25 380 b 132 345 61 358 103 345 l 136 345 l 137 355 b 145 378 138 359 142 370 b 152 415 149 394 152 405 b 137 452 152 427 148 438 b 133 464 134 458 133 460 b 138 473 133 467 134 470 "},vexAccidentalMicrotonal1:{x_min:-171.5,x_max:483.1875,ha:493,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 495 20 616 20 616 b 20 373 20 427 20 373 b 115 410 20 373 63 390 l 210 448 l 210 531 b 212 620 210 614 210 616 b 231 632 215 628 223 632 b 246 627 236 632 242 631 b 251 541 251 620 251 628 l 251 463 l 315 489 b 387 514 368 509 381 514 b 393 513 390 514 392 514 b 406 494 402 510 406 502 b 397 476 406 487 404 480 b 323 446 396 474 363 462 l 251 417 l 251 283 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -19 -217 -9 -229 -16 -224 l -20 -215 l -21 48 l -21 310 l -83 287 b -152 262 -133 266 -145 262 b -157 263 -153 262 -155 262 b -171 283 -166 266 -171 274 b -161 301 -171 290 -167 297 b -91 328 -160 302 -129 315 l -21 356 l -21 487 l -20 617 l -19 621 b -8 631 -17 626 -12 630 m 210 288 b 210 401 210 351 210 401 b 114 365 209 401 167 384 l 20 327 l 20 238 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 180 164 199 187 192 l 209 177 b 209 177 209 177 209 177 b 210 288 210 177 210 199 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 "},vexAccidentalMicrotonal2:{x_min:-1.359375,x_max:386.5625,ha:394,o:"m 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 "},vexWiggleArpeggioUp:{x_min:58.53125,x_max:228.671875,ha:294,o:"m 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 "},vexNoteHeadMutedBreve:{x_min:0,x_max:370.21875,ha:378,o:"m 0 0 l 0 277 l 61 277 l 122 277 l 122 0 l 122 -278 l 61 -278 l 0 -278 l 0 0 m 246 -1 l 246 277 l 308 277 l 370 277 l 370 -1 l 370 -278 l 308 -278 l 246 -278 l 246 -1 "}},cssFontWeight:"normal",ascender:1903,underlinePosition:-125,cssFontStyle:"normal",boundingBox:{yMin:-2065.375,xMin:-695.53125,yMax:1901.578125,xMax:1159.671875},resolution:1e3,original_font_information:{postscript_name:"Gonville-18",version_string:"Version 0.1.8904 ",vendor_url:"",full_font_name:"Gonville-18",font_family_name:"Gonville-18",copyright:"No copyright is claimed on this font file.",description:"",trademark:"",designer:"",designer_url:"",unique_font_identifier:"FontForge 2.0 : Gonville-18 : 17-3-2010",license_url:"",license_description:"",manufacturer_name:"",font_sub_family_name:"18"},descender:-2066,fontFamily:"Gonville-18",lineHeight:4093,underlineThickness:50},metrics:{name:"Gonville",smufl:!1,stave:{padding:12,endPaddingMax:10,endPaddingMin:5,unalignedNotePadding:10},accidental:{noteheadAccidentalPadding:1,leftPadding:2,accidentalSpacing:3},clef:{default:{point:40,width:26},small:{point:32,width:20},annotations:{"8va":{smuflCode:"timeSig8",default:{point:20,treble:{line:-1.2,shiftX:11}},small:{point:18,treble:{line:-.4,shiftX:8}}},"8vb":{smuflCode:"timeSig8",default:{point:20,treble:{line:6.3,shiftX:10},bass:{line:4,shiftX:1}},small:{point:18,treble:{line:5.8,shiftX:6},bass:{line:3.5,shiftX:.5}}}},lineCount:{8:{point:55,shiftY:14},7:{point:47,shiftY:8},6:{point:40,shiftY:1},5:{point:30,shiftY:-6},4:{point:23,shiftY:-12}}},parenthesis:{default:{point:39,width:7},gracenote:{point:23.4,width:3}},pedalMarking:{up:{point:40},down:{point:40}},digits:{point:40,tupletPoint:28},tremolo:{default:{point:25,spacing:4,offsetYStemUp:-7,offsetYStemDown:7,offsetXStemUp:9,offsetXStemDown:-.5},grace:{point:15,spacing:4,offsetYStemUp:-7,offsetYStemDown:7,offsetXStemUp:6.5,offsetXStemDown:-.5}},staveRepetition:{symbolText:{offsetX:12,offsetY:25,spacing:5},coda:{offsetY:25},segno:{offsetY:0}},stem:{heightAdjustmentForFlag:-3,noteHead:{noteheadTriangleUpHalf:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpBlack:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpWhole:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadXHalf:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXBlack:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXWhole:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadHalf:{offsetYBaseStemUp:-1.5,offsetYBaseStemDown:1.5},noteheadBlack:{offsetYBaseStemUp:-1.5,offsetYBaseStemDown:1.5},noteheadSquareWhite:{offsetYBaseStemDown:-5,offsetYBaseStemUp:5}}},glyphs:{flag:{shiftX:-.08,flag8thDown:{shiftX:-.16},flag16thDown:{shiftX:-.16},flag32ndDown:{shiftX:-.16,shiftY:9},flag64thDown:{shiftX:-.16,shiftY:13},flag128thDown:{shiftX:-.16,shiftY:22},flag32ndUp:{shiftY:-9},flag64thUp:{shiftY:-13},flag128thUp:{shiftY:-22}},stringNumber:{verticalPadding:8,stemPadding:2,leftPadding:5,rightPadding:6},textNote:{point:40,default:{},ornamentTrill:{shiftX:-5,shiftY:4}},noteHead:{minPadding:2,custom:{noteheadCircleXStemUp:{shiftX:-1.5},noteheadXWholeStemUp:{shiftX:-5},noteheadTriangleUpWholeStemUp:{shiftX:-6}}},chordSymbol:{global:{superscriptOffset:-400,subscriptOffset:300,kerningOffset:-250,lowerKerningText:["D","F","P","T","V","Y"],upperKerningText:["A","L"],spacing:100,superSubRatio:.66},csymDiminished:{scale:.8,leftSideBearing:0,advanceWidth:506,yOffset:0},csymHalfDiminished:{scale:.8,leftSideBearing:-32,advanceWidth:506,yOffset:0},csymAugmented:{scale:1,leftSideBearing:0,advanceWidth:530,yOffset:0},csymParensLeftTall:{scale:.8,leftSideBearing:0,advanceWidth:155,yOffset:250},csymParensRightTall:{scale:.8,leftSideBearing:-40,advanceWidth:189,yOffset:250},csymBracketLeftTall:{scale:.8,leftSideBearing:0,advanceWidth:328,yOffset:0},csymBracketRightTall:{scale:.8,leftSideBearing:1,advanceWidth:600,yOffset:0},csymParensLeftVeryTall:{scale:.9,leftSideBearing:0,advanceWidth:121,yOffset:350},csymParensRightVeryTall:{scale:.9,leftSideBearing:50,advanceWidth:111,yOffset:350},csymDiagonalArrangementSlash:{scale:.6,leftSideBearing:-1,advanceWidth:990,yOffset:0},csymMinor:{scale:.8,leftSideBearing:0,advanceWidth:482,yOffset:0},csymMajorSeventh:{scale:.9,leftSideBearing:200,yOffset:0,advanceWidth:600},accidentalSharp:{scale:.75,leftSideBearing:40,advanceWidth:250,yOffset:-402},accidentalFlat:{scale:.95,leftSideBearing:-50,advanceWidth:208,yOffset:-184}},jazzOrnaments:{brassScoop:{scale:1,xOffset:-12,yOffset:0,stemUpYOffset:0,reportedWidth:15},brassDoitMedium:{scale:1,xOffset:16,yOffset:0,stemUpYOffset:0,reportedWidth:22},brassFallLipShort:{scale:1,xOffset:17,yOffset:0,stemUpYOffset:0,reportedWidth:15},brassLiftMedium:{scale:1,xOffset:16,yOffset:5,stemUpYOffset:0,reportedWidth:5},brassFallRoughMedium:{scale:1,xOffset:16,yOffset:28,stemUpYOffset:0,reportedWidth:5},brassBend:{scale:1,xOffset:2,yOffset:-8,stemUpYOffset:24,reportedWidth:5},brassMuteClosed:{scale:1,xOffset:3,yOffset:-9,stemUpYOffset:24,reportedWidth:5},brassMuteOpen:{scale:1,xOffset:3,yOffset:-7,stemUpYOffset:25,reportedWidth:5},brassFlip:{scale:1,xOffset:10,yOffset:-4,stemUpYOffset:7,reportedWidth:5},brassJazzTurn:{scale:1,xOffset:3,yOffset:-4,stemUpYOffset:10,reportedWidth:28},brassSmear:{scale:1,xOffset:10,yOffset:-4,stemUpYOffset:9,reportedWidth:5}},tremolo:{default:{shiftY:-10},grace:{shiftY:-5}},tuplet:{noteHeadOffset:20,stemOffset:10,bottomLine:4,topModifierOffset:15}}}};return l=l.default})()})); +//# sourceMappingURL=vexflow-font-gonville.js.map \ No newline at end of file diff --git a/build/cjs/vexflow-font-gonville.js.map b/build/cjs/vexflow-font-gonville.js.map new file mode 100644 index 0000000000..82e0628a1d --- /dev/null +++ b/build/cjs/vexflow-font-gonville.js.map @@ -0,0 +1 @@ +{"version":3,"file":"vexflow-font-gonville.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAqB,YAAID,KAEzBD,EAAkB,YAAIA,EAAkB,aAAK,GAAIA,EAAkB,YAAY,SAAIC,KARrF,CASsB,oBAAXK,OAAyBA,OAA+B,oBAAfC,WAA6BA,WAAaC,MAAO,WACrG,M,mBCTA,IAAIC,EAAsB,CCA1BA,EAAwB,CAACP,EAASQ,KACjC,IAAI,IAAIC,KAAOD,EACXD,EAAoBG,EAAEF,EAAYC,KAASF,EAAoBG,EAAEV,EAASS,IAC5EE,OAAOC,eAAeZ,EAASS,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,MCJ3EF,EAAwB,CAACQ,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,I,4BCA3E,MCQP,EAJoB,CAChBI,KDLwB,CACxBC,OAAQ,CACJC,WAAY,CACRC,MAAO,EACPC,MAAO,WACPC,GAAI,IACJf,EAAG,y5BAEPgB,cAAe,CACXH,MAAO,EACPC,MAAO,WACPC,GAAI,IACJf,EAAG,83BAEPiB,YAAa,CACTJ,OAAQ,QACRC,MAAO,QACPC,GAAI,GACJf,EAAG,mTAEPkB,eAAgB,CACZL,OAAQ,QACRC,MAAO,QACPC,GAAI,GACJf,EAAG,mTAEPmB,MAAO,CACHN,OAAQ,OACRC,MAAO,WACPC,GAAI,IACJf,EAAG,8oDAEPoB,KAAM,CACFP,OAAQ,SACRC,MAAO,WACPC,GAAI,IACJf,EAAG,k/CAEPqB,MAAO,CACHR,OAAQ,SACRC,MAAO,UACPC,GAAI,IACJf,EAAG,8kFAEPsB,MAAO,CACHT,MAAO,EACPC,MAAO,WACPC,GAAI,IACJf,EAAG,ksDAEPuB,MAAO,CACHV,OAAQ,SACRC,MAAO,WACPC,GAAI,IACJf,EAAG,wkCAEPwB,yBAA0B,CACtBX,MAAO,EACPC,MAAO,WACPC,GAAI,IACJf,EAAG,2KAEP,iBAAkB,CACda,OAAQ,SACRC,MAAO,SACPC,GAAI,IACJf,EAAG,6zGAEPyB,SAAU,CACNZ,MAAO,EACPC,MAAO,MACPC,GAAI,IACJf,EAAG,yoBAEP0B,SAAU,CACNb,OAAQ,SACRC,MAAO,WACPC,GAAI,IACJf,EAAG,+lBAEP2B,SAAU,CACNd,OAAQ,SACRC,MAAO,SACPC,GAAI,IACJf,EAAG,6kCAEP4B,SAAU,CACNf,OAAQ,SACRC,MAAO,SACPC,GAAI,IACJf,EAAG,2/BAEP6B,SAAU,CACNhB,MAAO,EACPC,MAAO,UACPC,GAAI,IACJf,EAAG,8jCAEP8B,SAAU,CACNjB,MAAO,EACPC,MAAO,SACPC,GAAI,IACJf,EAAG,6mCAEP+B,SAAU,CACNlB,MAAO,EACPC,MAAO,UACPC,GAAI,IACJf,EAAG,yjCAEPgC,SAAU,CACNnB,MAAO,EACPC,MAAO,WACPC,GAAI,IACJf,EAAG,26BAEPiC,SAAU,CACNpB,MAAO,EACPC,MAAO,WACPC,GAAI,IACJf,EAAG,m4BAEPkC,SAAU,CACNrB,MAAO,EACPC,MAAO,UACPC,GAAI,IACJf,EAAG,qhCAEPmC,cAAe,CACXtB,OAAQ,SACRC,MAAO,SACPC,GAAI,IACJf,EAAG,mtBAEPoC,iBAAkB,CACdvB,MAAO,EACPC,MAAO,SACPC,GAAI,IACJf,EAAG,onCAEPqC,YAAa,CACTxB,MAAO,EACPC,MAAO,WACPC,GAAI,IACJf,EAAG,olBAEPsC,iBAAkB,CACdzB,MAAO,EACPC,MAAO,WACPC,GAAI,IACJf,EAAG,olBAEPuC,aAAc,CACV1B,MAAO,EACPC,MAAO,MACPC,GAAI,IACJf,EAAG,6MAEPwC,mBAAoB,CAChB3B,MAAO,UACPC,MAAO,SACPC,GAAI,IACJf,EAAG,oWAEPyC,wBAAyB,CACrB5B,MAAO,UACPC,MAAO,SACPC,GAAI,IACJf,EAAG,oWAEP0C,kBAAmB,CACf7B,OAAQ,SACRC,OAAQ,UACRC,GAAI,EACJf,EAAG,+bAEP2C,uBAAwB,CACpB9B,OAAQ,SACRC,OAAQ,UACRC,GAAI,EACJf,EAAG,+bAEP4C,oBAAqB,CACjB/B,MAAO,EACPC,MAAO,WACPC,GAAI,IACJf,EAAG,2mDAEP6C,cAAe,CACXhC,MAAO,EACPC,MAAO,SACPC,GAAI,IACJf,EAAG,sXAEP8C,aAAc,CACVjC,MAAO,EACPC,MAAO,OACPC,GAAI,IACJf,EAAG,ucAEP+C,cAAe,CACXlC,MAAO,EACPC,MAAO,OACPC,GAAI,IACJf,EAAG,gPAEPgD,eAAgB,CACZnC,MAAO,EACPC,MAAO,WACPC,GAAI,IACJf,EAAG,q7CAEPiD,cAAe,CACXpC,MAAO,EACPC,MAAO,UACPC,GAAI,IACJf,EAAG,07CAEPkD,eAAgB,CACZrC,MAAO,EACPC,MAAO,UACPC,GAAI,IACJf,EAAG,2tBAEPmD,wBAAyB,CACrBtC,MAAO,EACPC,MAAO,WACPC,GAAI,IACJf,EAAG,y5BAEPoD,uBAAwB,CACpBvC,MAAO,EACPC,MAAO,UACPC,GAAI,IACJf,EAAG,ksBAEPqD,wBAAyB,CACrBxC,OAAQ,SACRC,MAAO,WACPC,GAAI,IACJf,EAAG,8iBAEPsD,qBAAsB,CAClBzC,MAAO,EACPC,MAAO,WACPC,GAAI,IACJf,EAAG,srBAEPuD,oBAAqB,CACjB1C,MAAO,EACPC,MAAO,UACPC,GAAI,IACJf,EAAG,wsBAEPwD,qBAAsB,CAClB3C,MAAO,EACPC,MAAO,WACPC,GAAI,IACJf,EAAG,iXAEPyD,gBAAiB,CACb5C,MAAO,EACPC,MAAO,WACPC,GAAI,IACJf,EAAG,2LAEP0D,SAAU,CACN7C,OAAQ,WACRC,MAAO,OACPC,GAAI,IACJf,EAAG,wdAEP2D,UAAW,CACP9C,OAAQ,KACRC,MAAO,WACPC,GAAI,IACJf,EAAG,8VAEP4D,YAAa,CACT/C,OAAQ,SACRC,MAAO,MACPC,GAAI,IACJf,EAAG,2ZAEP6D,WAAY,CACRhD,OAAQ,KACRC,MAAO,WACPC,GAAI,IACJf,EAAG,mhCAEP8D,aAAc,CACVjD,OAAQ,SACRC,MAAO,SACPC,GAAI,IACJf,EAAG,mrBAEP+D,WAAY,CACRlD,OAAQ,KACRC,MAAO,UACPC,GAAI,IACJf,EAAG,65CAEPgE,aAAc,CACVnD,OAAQ,SACRC,MAAO,WACPC,GAAI,IACJf,EAAG,mpCAEPiE,WAAY,CACRpD,OAAQ,KACRC,MAAO,WACPC,GAAI,IACJf,EAAG,0xDAEPkE,aAAc,CACVrD,OAAQ,SACRC,MAAO,MACPC,GAAI,IACJf,EAAG,g2CAEPmE,YAAa,CACTtD,OAAQ,KACRC,MAAO,SACPC,GAAI,IACJf,EAAG,21EAEPoE,cAAe,CACXvD,OAAQ,SACRC,MAAO,MACPC,GAAI,IACJf,EAAG,2hEAEPqE,eAAgB,CACZxD,OAAQ,SACRC,MAAO,SACPC,GAAI,IACJf,EAAG,6gBAEPsE,kBAAmB,CACfzD,MAAO,EACPC,MAAO,SACPC,GAAI,IACJf,EAAG,oqBAEPuE,gBAAiB,CACb1D,MAAO,EACPC,MAAO,SACPC,GAAI,IACJf,EAAG,ilDAEPwE,sBAAuB,CACnB3D,MAAO,EACPC,MAAO,MACPC,GAAI,IACJf,EAAG,mdAEPyE,qBAAsB,CAClB5D,OAAQ,SACRC,MAAO,SACPC,GAAI,IACJf,EAAG,sjCAEP0E,qBAAsB,CAClB7D,OAAQ,SACRC,OAAQ,UACRC,GAAI,EACJf,EAAG,+bAEP2E,sBAAuB,CACnB9D,MAAO,UACPC,MAAO,SACPC,GAAI,IACJf,EAAG,oWAEP4E,+BAAgC,CAC5B/D,MAAO,EACPC,MAAO,UACPC,GAAI,IACJf,EAAG,ojBAEP6E,0CAA2C,CACvChE,MAAO,EACPC,MAAO,SACPC,GAAI,IACJf,EAAG,imCAEP8E,gCAAiC,CAC7BjE,MAAO,EACPC,MAAO,UACPC,GAAI,IACJf,EAAG,8kCAEP+E,sCAAuC,CACnClE,OAAQ,SACRC,MAAO,UACPC,GAAI,IACJf,EAAG,goEAEPgF,4BAA6B,CACzBnE,OAAQ,MACRC,MAAO,SACPC,GAAI,IACJf,EAAG,+wCAEPiF,qBAAsB,CAClBpE,OAAQ,SACRC,MAAO,SACPC,GAAI,IACJf,EAAG,q6BAEPkF,oBAAqB,CACjBrE,OAAQ,SACRC,MAAO,UACPC,GAAI,IACJf,EAAG,goEAEPmF,6BAA8B,CAC1BtE,OAAQ,SACRC,MAAO,WACPC,GAAI,IACJf,EAAG,skDAEPoF,iBAAkB,CACdvE,OAAQ,SACRC,MAAO,KACPC,GAAI,GACJf,EAAG,shBAEPqF,iBAAkB,CACdxE,OAAQ,SACRC,MAAO,KACPC,GAAI,GACJf,EAAG,shBAEPsF,iBAAkB,CACdzE,MAAO,EACPC,MAAO,MACPC,GAAI,IACJf,EAAG,6MAEPuF,iBAAkB,CACd1E,MAAO,EACPC,MAAO,MACPC,GAAI,IACJf,EAAG,6MAEPwF,mBAAoB,CAChB3E,MAAO,EACPC,MAAO,WACPC,GAAI,IACJf,EAAG,2LAEPyF,mBAAoB,CAChB5E,MAAO,EACPC,MAAO,WACPC,GAAI,IACJf,EAAG,2LAEP0F,wBAAyB,CACrB7E,OAAQ,KACRC,MAAO,UACPC,GAAI,GACJf,EAAG,6FAEP2F,wBAAyB,CACrB9E,OAAQ,KACRC,MAAO,UACPC,GAAI,GACJf,EAAG,6FAEP4F,kBAAmB,CACf/E,OAAQ,UACRC,MAAO,WACPC,GAAI,IACJf,EAAG,6YAEP6F,kBAAmB,CACfhF,OAAQ,UACRC,MAAO,WACPC,GAAI,IACJf,EAAG,6YAEP8F,aAAc,CACVjF,OAAQ,WACRC,MAAO,IACPC,GAAI,IACJf,EAAG,6kBAEP+F,aAAc,CACVlF,OAAQ,IACRC,MAAO,WACPC,GAAI,IACJf,EAAG,yoBAEPgG,iBAAkB,CACdnF,OAAQ,WACRC,MAAO,UACPC,GAAI,IACJf,EAAG,6hBAEPiG,iBAAkB,CACdpF,OAAQ,WACRC,MAAO,UACPC,GAAI,IACJf,EAAG,8mBAEPkG,qBAAsB,CAClBrF,OAAQ,WACRC,MAAO,UACPC,GAAI,IACJf,EAAG,o4BAEPmG,qBAAsB,CAClBtF,OAAQ,WACRC,MAAO,UACPC,GAAI,IACJf,EAAG,2gCAEPoG,kBAAmB,CACfvF,OAAQ,WACRC,MAAO,UACPC,GAAI,IACJf,EAAG,69DAEPqG,kBAAmB,CACfxF,OAAQ,WACRC,MAAO,UACPC,GAAI,IACJf,EAAG,2iEAEPsG,gBAAiB,CACbzF,OAAQ,SACRC,MAAO,UACPC,GAAI,IACJf,EAAG,4TAEPuG,gBAAiB,CACb1F,OAAQ,WACRC,MAAO,UACPC,GAAI,IACJf,EAAG,0cAEPwG,QAAS,CACL3F,MAAO,EACPC,MAAO,UACPC,GAAI,IACJf,EAAG,ifAEPyG,cAAe,CACX5F,MAAO,EACPC,MAAO,WACPC,GAAI,IACJf,EAAG,6oBAEP0G,WAAY,CACR7F,MAAO,EACPC,MAAO,WACPC,GAAI,IACJf,EAAG,2KAEP2G,gBAAiB,CACb9F,MAAO,EACPC,MAAO,SACPC,GAAI,IACJf,EAAG,gFAEP4G,UAAW,CACP/F,MAAO,EACPC,MAAO,SACPC,GAAI,IACJf,EAAG,mFAEP6G,mBAAoB,CAChBhG,MAAO,EACPC,MAAO,UACPC,GAAI,IACJf,EAAG,+QAEP8G,SAAU,CACNjG,MAAO,EACPC,MAAO,SACPC,GAAI,IACJf,EAAG,6EAEP+G,kBAAmB,CACflG,MAAO,EACPC,MAAO,UACPC,GAAI,IACJf,EAAG,4OAEPgH,YAAa,CACTnG,MAAO,EACPC,MAAO,SACPC,GAAI,IACJf,EAAG,y/BAEPiH,QAAS,CACLpG,MAAO,EACPC,MAAO,SACPC,GAAI,IACJf,EAAG,miBAEPkH,SAAU,CACNrG,MAAO,EACPC,MAAO,UACPC,GAAI,IACJf,EAAG,44BAEPmH,SAAU,CACNtG,MAAO,EACPC,MAAO,OACPC,GAAI,IACJf,EAAG,wtCAEPoH,SAAU,CACNvG,OAAQ,SACRC,MAAO,UACPC,GAAI,IACJf,EAAG,6kDAEPqH,UAAW,CACPxG,OAAQ,SACRC,MAAO,WACPC,GAAI,IACJf,EAAG,y5DAEPsH,aAAc,CACVzG,OAAQ,UACRC,MAAO,WACPC,GAAI,IACJf,EAAG,88CAEPuH,aAAc,CACV1G,MAAO,SACPC,MAAO,WACPC,GAAI,IACJf,EAAG,k/DAEPwH,aAAc,CACV3G,OAAQ,WACRC,MAAO,UACPC,GAAI,IACJf,EAAG,knCAEPyH,mBAAoB,CAChB5G,MAAO,QACPC,MAAO,WACPC,GAAI,IACJf,EAAG,g5BAEP0H,iBAAkB,CACd7G,MAAO,SACPC,MAAO,WACPC,GAAI,IACJf,EAAG,q1BAEP2H,SAAU,CACN9G,MAAO,QACPC,MAAO,WACPC,GAAI,IACJf,EAAG,ghCAEP4H,cAAe,CACX/G,OAAQ,UACRC,MAAO,WACPC,GAAI,IACJf,EAAG,wuDAEP6H,aAAc,CACVhH,OAAQ,SACRC,MAAO,SACPC,GAAI,IACJf,EAAG,k6BAEP8H,kBAAmB,CACfjH,OAAQ,SACRC,MAAO,SACPC,GAAI,IACJf,EAAG,itCAEP+H,gBAAiB,CACblH,OAAQ,WACRC,MAAO,UACPC,GAAI,IACJf,EAAG,6iCAEPgI,mBAAoB,CAChBnH,OAAQ,WACRC,MAAO,UACPC,GAAI,IACJf,EAAG,6zBAEPiI,oBAAqB,CACjBpH,OAAQ,WACRC,MAAO,SACPC,GAAI,IACJf,EAAG,wnCAEPkI,2BAA4B,CACxBrH,OAAQ,WACRC,MAAO,SACPC,GAAI,IACJf,EAAG,suCAEPmI,oCAAqC,CACjCtH,OAAQ,UACRC,MAAO,WACPC,GAAI,IACJf,EAAG,4wCAEPoI,8BAA+B,CAC3BvH,OAAQ,UACRC,MAAO,WACPC,GAAI,IACJf,EAAG,4hDAEPqI,mCAAoC,CAChCxH,OAAQ,UACRC,MAAO,WACPC,GAAI,IACJf,EAAG,4vCAEPsI,wCAAyC,CACrCzH,OAAQ,UACRC,MAAO,WACPC,GAAI,IACJf,EAAG,k1CAEPuI,4CAA6C,CACzC1H,OAAQ,UACRC,MAAO,WACPC,GAAI,IACJf,EAAG,+lDAEPwI,gCAAiC,CAC7B3H,OAAQ,UACRC,MAAO,WACPC,GAAI,IACJf,EAAG,s2CAEPyI,eAAgB,CACZ5H,OAAQ,WACRC,MAAO,SACPC,GAAI,IACJf,EAAG,0XAEP0I,aAAc,CACV7H,OAAQ,UACRC,MAAO,WACPC,GAAI,IACJf,EAAG,+WAEP2I,gBAAiB,CACb9H,OAAQ,MACRC,MAAO,WACPC,GAAI,IACJf,EAAG,qYAEP4I,0BAA2B,CACvB/H,OAAQ,UACRC,MAAO,WACPC,GAAI,IACJf,EAAG,iqBAEP6I,0BAA2B,CACvBhI,OAAQ,UACRC,MAAO,WACPC,GAAI,IACJf,EAAG,iqBAEP8I,yBAA0B,CACtBjI,MAAO,EACPC,MAAO,WACPC,GAAI,IACJf,EAAG,olBAEP+I,iBAAkB,CACdlI,OAAQ,SACRC,MAAO,YACPC,GAAI,KACJf,EAAG,i8FAEPgJ,gBAAiB,CACbnI,OAAQ,SACRC,MAAO,WACPC,GAAI,IACJf,EAAG,k2EAEPiJ,gBAAiB,CACbpI,MAAO,EACPC,MAAO,SACPC,GAAI,IACJf,EAAG,qVAEPkJ,mBAAoB,CAChBrI,MAAO,SACPC,MAAO,WACPC,GAAI,IACJf,EAAG,khBAEPmJ,iBAAkB,CACdtI,OAAQ,UACRC,MAAO,SACPC,GAAI,IACJf,EAAG,yqBAEPoJ,mBAAoB,CAChBvI,OAAQ,UACRC,MAAO,WACPC,GAAI,IACJf,EAAG,wqBAEPqJ,yBAA0B,CACtBxI,OAAQ,MACRC,MAAO,SACPC,GAAI,IACJf,EAAG,0lDAEPsJ,yBAA0B,CACtBzI,OAAQ,SACRC,MAAO,SACPC,GAAI,IACJf,EAAG,23EAEPuJ,oBAAqB,CACjB1I,MAAO,SACPC,MAAO,WACPC,GAAI,IACJf,EAAG,khBAEPwJ,sBAAuB,CACnB3I,MAAO,EACPC,MAAO,UACPC,GAAI,IACJf,EAAG,4KAGXyJ,cAAe,SACfC,SAAU,KACVC,mBAAoB,IACpBC,aAAc,SACdC,YAAa,CACTC,MAAO,SACPC,MAAO,UACPC,KAAM,YACNC,KAAM,aAEVC,WAAY,IACZC,0BAA2B,CACvBC,gBAAiB,cACjBC,eAAgB,oBAChBC,WAAY,GACZC,eAAgB,cAChBC,iBAAkB,cAClBC,UAAW,6CACXC,YAAa,GACbC,UAAW,GACXC,SAAU,GACVC,aAAc,GACdC,uBAAwB,0CACxBC,YAAa,GACbC,oBAAqB,GACrBC,kBAAmB,GACnBC,qBAAsB,MAE1BC,WAAY,KACZC,WAAY,cACZC,WAAY,KACZC,mBAAoB,IC91BpBC,QCF2B,CAC3BC,KAAM,WACNC,OAAO,EACPC,MAAO,CACHC,QAAS,GACTC,cAAe,GACfC,cAAe,EACfC,qBAAsB,IAE1BC,WAAY,CACRC,0BAA2B,EAC3BC,YAAa,EACbC,kBAAmB,GAEvBC,KAAM,CACFC,QAAS,CACLC,MAAO,GACPC,MAAO,IAEXC,MAAO,CACHF,MAAO,GACPC,MAAO,IAEXE,YAAa,CACT,MAAO,CACHC,UAAW,WACXL,QAAS,CACLC,MAAO,GACPK,OAAQ,CACJC,MAAO,IACPC,OAAQ,KAGhBL,MAAO,CACHF,MAAO,GACPK,OAAQ,CACJC,MAAO,GACPC,OAAQ,KAIpB,MAAO,CACHH,UAAW,WACXL,QAAS,CACLC,MAAO,GACPK,OAAQ,CACJC,KAAM,IACNC,OAAQ,IAEZC,KAAM,CACFF,KAAM,EACNC,OAAQ,IAGhBL,MAAO,CACHF,MAAO,GACPK,OAAQ,CACJC,KAAM,IACNC,OAAQ,GAEZC,KAAM,CACFF,KAAM,IACNC,OAAQ,OAMxBE,UAAW,CACP,EAAK,CAAET,MAAO,GAAIU,OAAQ,IAC1B,EAAK,CAAEV,MAAO,GAAIU,OAAQ,GAC1B,EAAK,CAAEV,MAAO,GAAIU,OAAQ,GAC1B,EAAK,CAAEV,MAAO,GAAIU,QAAS,GAC3B,EAAK,CAAEV,MAAO,GAAIU,QAAS,MAGnCC,YAAa,CACTZ,QAAS,CACLC,MAAO,GACPC,MAAO,GAEXW,UAAW,CACPZ,MAAO,KACPC,MAAO,IAGfY,aAAc,CACVC,GAAI,CACAd,MAAO,IAEXe,KAAM,CACFf,MAAO,KAIfgB,OAAQ,CACJhB,MAAO,GACPiB,YAAa,IAIjBC,QAAS,CACLnB,QAAS,CACLC,MAAO,GACPmB,QAAS,EACTC,eAAgB,EAChBC,gBAAiB,EACjBC,cAAe,EACfC,iBAAkB,IAEtBC,MAAO,CACHxB,MAAO,GACPmB,QAAS,EACTC,eAAgB,EAChBC,gBAAiB,EACjBC,cAAe,IACfC,iBAAkB,KAG1BE,gBAAiB,CACbC,WAAY,CACRC,QAAS,GACTC,QAAS,GACTT,QAAS,GAEbpM,KAAM,CACF6M,QAAS,IAEb9M,MAAO,CACH8M,QAAS,IAKjBC,KAAM,CACFC,yBAA0B,EAG1BC,SAAU,CACNhL,uBAAwB,CACpBiL,kBAAmB,EACnBC,oBAAqB,GAEzBjL,wBAAyB,CACrBgL,kBAAmB,EACnBC,oBAAqB,GAEzBnL,wBAAyB,CACrBkL,kBAAmB,EACnBC,oBAAqB,GAEzBrL,cAAe,CACXoL,mBAAoB,EACpBC,oBAAqB,GAEzBpL,eAAgB,CACZmL,mBAAoB,EACpBC,oBAAqB,GAEzBtL,eAAgB,CACZqL,mBAAoB,EACpBC,oBAAqB,GAEzBxL,aAAc,CACVuL,mBAAoB,IACpBC,oBAAqB,KAEzBvL,cAAe,CACXsL,mBAAoB,IACpBC,oBAAqB,KAEzBC,oBAAqB,CACjBD,qBAAsB,EACtBD,kBAAmB,KAI/B1N,OAAQ,CACJ6N,KAAM,CACF5B,QAAS,IACThJ,YAAa,CACTgJ,QAAS,KAEb9I,aAAc,CACV8I,QAAS,KAEb5I,aAAc,CACV4I,QAAS,IACTG,OAAQ,GAEZ7I,aAAc,CACV0I,QAAS,IACTG,OAAQ,IAEZ3I,cAAe,CACXwI,QAAS,IACTG,OAAQ,IAEZhJ,WAAY,CACRgJ,QAAS,GAEb9I,WAAY,CACR8I,QAAS,IAEb5I,YAAa,CACT4I,QAAS,KAGjB0B,aAAc,CACVC,gBAAiB,EACjBC,YAAa,EACb1C,YAAa,EACb2C,aAAc,GAElBC,SAAU,CACNxC,MAAO,GACPD,QAAS,GACTxE,cAAe,CACXgF,QAAS,EACTG,OAAQ,IAGhBqB,SAAU,CACNU,WAAY,EACZC,OAAQ,CACJC,sBAAuB,CACnBpC,QAAS,KAEbqC,qBAAsB,CAClBrC,QAAS,GAEbsC,8BAA+B,CAC3BtC,QAAS,KAIrBuC,YAAa,CACTC,OAAQ,CACJC,mBAAoB,IACpBC,gBAAiB,IACjBC,eAAgB,IAChBC,iBAAkB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,KAC5CC,iBAAkB,CAAC,IAAK,KACxBjC,QAAS,IACTkC,cAAe,KAEnBC,eAAgB,CACZC,MAAO,GACPC,gBAAiB,EACjBC,aAAc,IACdC,QAAS,GAEbC,mBAAoB,CAChBJ,MAAO,GACPC,iBAAkB,GAClBC,aAAc,IACdC,QAAS,GAEbE,cAAe,CACXL,MAAO,EACPC,gBAAiB,EACjBC,aAAc,IACdC,QAAS,GAEbG,mBAAoB,CAChBN,MAAO,GACPC,gBAAiB,EACjBC,aAAc,IACdC,QAAS,KAEbI,oBAAqB,CACjBP,MAAO,GACPC,iBAAkB,GAClBC,aAAc,IACdC,QAAS,KAEbK,oBAAqB,CACjBR,MAAO,GACPC,gBAAiB,EACjBC,aAAc,IACdC,QAAS,GAEbM,qBAAsB,CAClBT,MAAO,GACPC,gBAAiB,EACjBC,aAAc,IACdC,QAAS,GAEbO,uBAAwB,CACpBV,MAAO,GACPC,gBAAiB,EACjBC,aAAc,IACdC,QAAS,KAEbQ,wBAAyB,CACrBX,MAAO,GACPC,gBAAiB,GACjBC,aAAc,IACdC,QAAS,KAEbS,6BAA8B,CAC1BZ,MAAO,GACPC,iBAAkB,EAClBC,aAAc,IACdC,QAAS,GAEbU,UAAW,CACPb,MAAO,GACPC,gBAAiB,EACjBC,aAAc,IACdC,QAAS,GAEbW,iBAAkB,CACdd,MAAO,GACPC,gBAAiB,IACjBE,QAAS,EACTD,aAAc,KAElBvL,gBAAiB,CACbqL,MAAO,IACPC,gBAAiB,GACjBC,aAAc,IACdC,SAAU,KAEd1L,eAAgB,CACZuL,MAAO,IACPC,iBAAkB,GAClBC,aAAc,IACdC,SAAU,MAGlBY,cAAe,CACXC,WAAY,CACRhB,MAAO,EACPiB,SAAU,GACVd,QAAS,EACTe,cAAe,EACfC,cAAe,IAEnBC,gBAAiB,CACbpB,MAAO,EACPiB,QAAS,GACTd,QAAS,EACTe,cAAe,EACfC,cAAe,IAEnBE,kBAAmB,CACfrB,MAAO,EACPiB,QAAS,GACTd,QAAS,EACTe,cAAe,EACfC,cAAe,IAEnBG,gBAAiB,CACbtB,MAAO,EACPiB,QAAS,GACTd,QAAS,EACTe,cAAe,EACfC,cAAe,GAEnBI,qBAAsB,CAClBvB,MAAO,EACPiB,QAAS,GACTd,QAAS,GACTe,cAAe,EACfC,cAAe,GAEnBK,UAAW,CACPxB,MAAO,EACPiB,QAAS,EACTd,SAAU,EACVe,cAAe,GACfC,cAAe,GAEnBM,gBAAiB,CACbzB,MAAO,EACPiB,QAAS,EACTd,SAAU,EACVe,cAAe,GACfC,cAAe,GAEnBO,cAAe,CACX1B,MAAO,EACPiB,QAAS,EACTd,SAAU,EACVe,cAAe,GACfC,cAAe,GAEnBQ,UAAW,CACP3B,MAAO,EACPiB,QAAS,GACTd,SAAU,EACVe,cAAe,EACfC,cAAe,GAEnBS,cAAe,CACX5B,MAAO,EACPiB,QAAS,EACTd,SAAU,EACVe,cAAe,GACfC,cAAe,IAEnBU,WAAY,CACR7B,MAAO,EACPiB,QAAS,GACTd,SAAU,EACVe,cAAe,EACfC,cAAe,IAGvBxD,QAAS,CACLnB,QAAS,CACLW,QAAS,IAEbc,MAAO,CACHd,QAAS,IAGjB2E,OAAQ,CACJC,eAAgB,GAChBC,WAAY,GACZC,WAAY,EACZC,kBAAmB,O","sources":["webpack://VexFlowFont.Gonville/webpack/universalModuleDefinition","webpack://VexFlowFont.Gonville/webpack/bootstrap","webpack://VexFlowFont.Gonville/webpack/runtime/define property getters","webpack://VexFlowFont.Gonville/webpack/runtime/hasOwnProperty shorthand","webpack://VexFlowFont.Gonville/./src/fonts/gonville_glyphs.ts","webpack://VexFlowFont.Gonville/./entry/vexflow-font-gonville.ts","webpack://VexFlowFont.Gonville/./src/fonts/gonville_metrics.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VexFlowFont\"] = factory();\n\telse\n\t\troot[\"VexFlowFont\"] = root[\"VexFlowFont\"] || {}, root[\"VexFlowFont\"][\"Gonville\"] = factory();\n})((typeof window !== 'undefined' ? window : typeof globalThis !== 'undefined' ? globalThis : this), function() {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","export const GonvilleFont = {\n glyphs: {\n bracketTop: {\n x_min: 0,\n x_max: 559.421875,\n ha: 571,\n o: 'm 544 204 b 548 204 545 204 547 204 b 559 194 555 204 559 199 b 559 190 559 192 559 191 b 530 156 559 188 556 184 b 462 86 510 134 481 104 b 453 76 458 81 454 77 l 446 70 l 441 65 b 434 59 439 63 436 61 l 427 54 b 409 37 426 51 416 44 b 392 23 398 29 394 26 b 387 19 389 22 387 20 b 379 13 386 19 383 16 l 371 8 l 367 5 l 359 -1 l 337 -16 b 285 -48 319 -29 298 -41 l 279 -52 b 186 -95 255 -66 210 -87 l 175 -99 b 23 -129 127 -117 68 -129 b 17 -129 20 -129 19 -129 b 1 -123 2 -129 2 -129 b 0 -49 0 -122 0 -83 b 0 4 0 -22 0 1 b 27 11 2 9 4 9 b 185 31 78 12 145 20 b 198 34 186 31 193 33 b 314 73 234 44 277 58 b 349 88 328 79 340 84 b 353 90 352 90 353 90 b 363 94 353 90 357 93 b 371 98 367 97 371 98 b 428 129 372 98 413 120 b 461 148 441 136 454 144 b 468 151 464 149 466 151 b 472 154 469 152 470 154 b 481 161 473 155 477 158 b 525 190 490 166 518 186 l 534 197 b 540 201 536 198 539 199 b 544 204 541 202 544 204 ',\n },\n bracketBottom: {\n x_min: 0,\n x_max: 559.421875,\n ha: 571,\n o: 'm 5 127 b 14 127 6 127 9 127 b 51 126 25 127 43 127 b 175 98 93 122 138 112 l 186 94 b 279 51 210 86 255 65 b 285 47 280 51 283 48 b 319 27 291 44 311 31 l 326 22 b 359 0 332 19 352 4 l 367 -6 b 371 -9 368 -6 370 -8 l 379 -15 b 387 -22 383 -18 386 -20 l 398 -30 l 411 -40 l 417 -47 l 427 -55 l 434 -61 b 441 -66 436 -62 439 -65 l 446 -72 l 453 -77 l 462 -87 b 558 -188 490 -113 549 -176 b 559 -195 559 -191 559 -194 b 548 -205 559 -201 555 -205 b 541 -204 547 -205 544 -205 b 534 -198 539 -201 536 -199 l 525 -191 b 481 -162 518 -187 490 -167 b 472 -155 477 -159 472 -156 b 468 -152 470 -155 469 -154 b 461 -149 466 -152 464 -151 b 428 -130 454 -145 441 -137 b 371 -99 413 -122 372 -99 b 363 -95 371 -99 367 -98 b 353 -91 357 -94 353 -91 b 348 -90 353 -91 352 -91 b 332 -81 343 -87 341 -86 b 27 -12 230 -37 127 -13 b 0 -5 4 -11 2 -11 b 0 58 0 -2 0 27 b 0 122 0 88 0 120 b 5 127 1 124 4 126 ',\n },\n barlineTick: {\n x_min: -80.3125,\n x_max: 78.9375,\n ha: 81,\n o: 'm 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 ',\n },\n breathMarkTick: {\n x_min: -80.3125,\n x_max: 78.9375,\n ha: 81,\n o: 'm 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 ',\n },\n segno: {\n x_min: -330.75,\n x_max: 329.390625,\n ha: 336,\n o: 'm -133 483 b -117 484 -127 484 -122 484 b 31 373 -51 484 9 440 b 35 348 34 365 35 356 b -25 285 35 313 10 285 b -87 331 -55 285 -76 302 b -167 402 -100 376 -133 402 b -191 398 -175 402 -183 401 b -227 341 -215 388 -227 369 b -225 320 -227 334 -227 327 b -13 74 -209 230 -125 133 b 6 65 -4 70 5 66 l 9 63 l 10 65 b 117 231 12 68 40 112 l 189 341 l 242 424 b 268 460 262 456 264 458 b 283 464 273 463 277 464 b 308 438 296 464 308 453 l 308 437 b 287 396 308 430 308 428 l 95 98 l 59 43 l 58 41 l 65 37 b 253 -156 151 -8 217 -77 b 281 -285 272 -199 281 -244 b 148 -481 281 -381 231 -463 b 115 -485 137 -484 126 -485 b -32 -376 51 -485 -9 -442 b -36 -349 -35 -366 -36 -358 b 25 -287 -36 -315 -12 -287 b 85 -333 54 -287 74 -302 b 166 -403 99 -377 133 -403 b 190 -399 174 -403 182 -402 b 225 -342 215 -390 225 -370 b 224 -322 225 -335 225 -328 b 12 -76 208 -231 125 -134 b -8 -66 2 -72 -6 -68 l -10 -65 l -12 -66 b -118 -231 -13 -68 -42 -113 l -190 -342 l -243 -426 b -269 -462 -264 -458 -265 -458 b -284 -466 -274 -464 -279 -466 b -310 -440 -298 -466 -310 -455 l -310 -438 b -288 -398 -310 -430 -308 -430 l -96 -99 l -59 -44 l -59 -43 l -66 -38 b -281 284 -198 33 -281 158 l -281 284 b -133 483 -281 392 -220 474 m 254 177 b 266 179 258 177 262 179 b 319 149 287 179 307 167 b 329 115 326 140 329 127 b 319 79 329 102 326 90 b 268 51 307 61 287 51 b 221 72 250 51 234 58 b 205 115 210 84 205 99 b 254 177 205 142 223 170 m -281 -54 b -269 -52 -277 -52 -273 -52 b -223 -73 -253 -52 -235 -59 b -206 -116 -212 -84 -206 -101 b -216 -151 -206 -129 -209 -141 b -269 -179 -228 -170 -249 -179 b -314 -159 -285 -179 -302 -173 b -330 -116 -325 -147 -330 -131 b -281 -54 -330 -88 -313 -61 ',\n },\n coda: {\n x_min: -311.6875,\n x_max: 310.328125,\n ha: 317,\n o: 'm -9 388 b -2 390 -8 390 -5 390 b 5 388 1 390 4 390 b 19 378 10 387 16 383 b 23 333 23 371 23 371 b 24 298 23 299 24 298 b 81 276 34 298 65 285 b 213 91 145 240 190 177 b 224 24 217 76 224 36 b 257 24 224 24 235 24 b 299 19 292 24 292 24 b 310 -1 306 15 310 6 b 299 -23 310 -11 306 -19 b 257 -27 292 -27 292 -27 b 224 -29 235 -27 224 -29 b 213 -95 224 -40 217 -80 b 81 -280 190 -181 145 -244 b 24 -301 65 -290 34 -301 b 23 -335 24 -301 23 -303 l 23 -340 b 17 -381 23 -374 23 -374 b -1 -391 13 -388 5 -391 b -21 -381 -9 -391 -17 -388 b -27 -340 -27 -374 -27 -374 l -27 -335 b -28 -301 -27 -303 -27 -301 b -85 -280 -38 -301 -69 -290 b -217 -95 -149 -244 -194 -181 b -228 -29 -221 -80 -228 -40 b -259 -27 -228 -29 -238 -27 b -300 -23 -294 -27 -294 -27 b -311 -2 -307 -19 -311 -11 b -294 23 -311 8 -304 19 b -259 24 -291 23 -284 24 b -228 24 -239 24 -228 24 b -217 91 -228 36 -221 76 b -85 276 -194 177 -149 240 b -28 298 -69 285 -38 298 b -27 333 -27 298 -27 299 b -27 371 -27 362 -27 369 b -9 388 -24 378 -17 385 m -27 136 b -28 247 -27 197 -28 247 b -61 216 -31 247 -53 226 b -123 33 -95 172 -121 98 l -125 24 l -76 24 l -27 24 l -27 136 m 29 242 b 24 247 27 245 24 247 b 23 136 24 247 23 197 l 23 24 l 72 24 l 121 24 l 119 33 b 29 242 115 116 77 206 m -27 -140 l -27 -27 l -76 -27 l -125 -27 l -123 -36 b -61 -220 -121 -102 -95 -176 b -28 -251 -53 -230 -31 -251 b -27 -140 -28 -251 -27 -201 m 119 -36 l 121 -27 l 72 -27 l 23 -27 l 23 -140 b 24 -251 23 -201 24 -251 b 57 -220 27 -251 49 -230 b 119 -36 91 -176 117 -102 ',\n },\n gClef: {\n x_min: -1.359375,\n x_max: 847.96875,\n ha: 865,\n o: 'm 488 1499 b 495 1500 490 1500 492 1500 b 541 1465 507 1500 521 1490 b 679 1078 622 1372 679 1210 b 677 1050 679 1068 677 1060 b 477 642 668 893 604 764 l 443 609 l 431 596 l 431 592 l 438 562 l 449 508 l 460 458 b 481 355 475 390 481 355 b 481 355 481 355 481 355 b 490 356 481 355 485 355 b 528 358 495 356 511 358 b 558 356 540 358 552 356 b 839 95 699 338 808 237 b 847 22 845 72 847 47 b 631 -303 847 -113 766 -242 b 620 -309 623 -308 620 -309 l 620 -310 b 631 -359 620 -310 626 -333 l 646 -435 l 660 -496 b 672 -588 668 -535 672 -563 b 664 -653 672 -610 669 -630 b 383 -875 630 -792 509 -875 b 201 -810 321 -875 257 -855 b 129 -680 151 -768 129 -730 b 274 -530 129 -592 200 -530 b 351 -553 300 -530 326 -538 b 412 -669 393 -582 412 -626 b 287 -805 412 -735 366 -800 l 279 -805 l 285 -809 b 383 -830 318 -823 351 -830 b 586 -718 464 -830 540 -789 b 626 -584 612 -678 626 -631 b 619 -528 626 -566 623 -548 b 612 -495 619 -526 616 -510 b 577 -324 590 -387 577 -324 b 577 -324 577 -324 577 -324 b 568 -326 575 -324 571 -324 b 528 -334 558 -328 537 -333 b 465 -338 506 -337 485 -338 b 24 -11 269 -338 87 -206 b -1 145 8 41 -1 93 b 96 442 -1 249 32 351 b 322 714 166 541 236 626 l 352 745 l 345 782 l 332 843 l 315 921 b 303 984 310 950 304 978 b 295 1082 298 1017 295 1049 b 413 1426 295 1208 336 1329 b 488 1499 436 1456 477 1496 m 549 1301 b 541 1301 547 1301 544 1301 b 411 1207 500 1301 447 1263 b 355 1004 374 1152 355 1079 b 359 942 355 984 356 963 b 371 881 362 927 363 917 l 385 818 b 392 782 389 799 392 784 l 392 782 b 434 828 393 782 424 816 b 607 1165 534 941 594 1060 b 608 1193 608 1175 608 1183 b 597 1270 608 1224 604 1254 b 549 1301 589 1286 571 1299 m 398 528 b 393 555 396 542 393 553 b 392 555 393 555 393 555 b 317 470 390 555 347 505 b 190 298 266 408 212 334 b 127 70 148 227 127 148 b 155 -77 127 19 137 -30 b 468 -303 209 -216 333 -303 b 519 -299 484 -303 502 -302 b 568 -284 541 -295 568 -287 l 568 -284 b 563 -263 568 -284 566 -274 l 534 -120 l 511 -13 l 496 61 l 480 133 b 469 187 472 176 469 187 b 468 188 469 187 469 188 b 416 162 462 188 430 172 b 337 13 364 126 337 69 b 413 -124 337 -40 363 -93 b 428 -144 424 -131 428 -137 b 428 -149 428 -145 428 -148 b 409 -166 426 -161 419 -166 b 394 -162 405 -166 400 -165 b 240 77 302 -122 240 -27 l 240 77 b 430 342 240 197 315 301 l 436 344 l 426 394 l 398 528 m 548 194 b 526 195 540 195 532 195 b 519 195 524 195 521 195 l 514 195 l 518 177 l 539 79 l 552 15 l 566 -48 l 594 -187 l 605 -240 b 612 -266 609 -254 611 -266 b 612 -266 612 -266 612 -266 b 641 -248 613 -266 630 -256 b 744 -98 692 -212 730 -156 b 751 -40 749 -79 751 -59 b 548 194 751 76 665 181 ',\n },\n cClef: {\n x_min: 0,\n x_max: 873.828125,\n ha: 892,\n o: 'm 0 0 l 0 703 l 81 703 l 164 703 l 164 0 l 164 -705 l 81 -705 l 0 -705 l 0 0 m 225 0 l 225 703 l 246 703 l 268 703 l 268 366 l 268 30 l 274 36 b 314 79 284 44 302 63 b 413 302 357 137 392 213 b 432 327 419 324 421 327 b 449 306 443 327 447 322 b 611 115 457 195 529 115 b 651 122 624 115 638 117 b 728 316 705 140 724 188 b 729 388 728 342 729 366 b 671 635 729 533 711 602 b 581 662 649 652 616 662 b 477 637 545 662 510 653 l 475 635 l 477 634 b 503 627 488 632 495 631 b 545 556 532 612 545 584 b 491 480 545 524 526 491 b 465 474 481 476 473 474 b 379 563 417 474 379 516 b 389 602 379 576 382 588 b 541 691 409 641 479 681 b 582 694 555 692 568 694 b 865 462 714 694 834 598 b 873 392 871 440 873 416 b 865 317 873 367 871 341 b 639 84 839 194 748 101 b 612 83 630 83 620 83 b 511 116 577 83 543 94 b 504 120 509 119 506 120 b 504 120 504 120 504 120 b 469 59 504 120 488 93 l 432 -1 l 469 -61 b 504 -122 488 -94 504 -122 b 504 -122 504 -122 504 -122 b 511 -117 506 -122 509 -120 b 612 -84 543 -95 577 -84 b 665 -91 630 -84 647 -87 b 869 -338 771 -122 850 -216 b 873 -392 872 -356 873 -374 b 798 -595 873 -469 847 -539 b 581 -695 741 -662 660 -695 b 406 -626 517 -695 454 -671 b 381 -563 389 -607 381 -585 b 465 -477 381 -519 413 -477 b 545 -559 514 -477 545 -519 b 503 -628 545 -587 532 -613 b 477 -635 495 -632 488 -634 l 475 -637 l 477 -638 b 581 -663 510 -655 545 -663 b 671 -637 616 -663 649 -653 b 729 -391 711 -603 729 -534 b 728 -317 729 -367 728 -344 b 623 -117 722 -173 698 -124 b 611 -116 619 -116 615 -116 b 449 -308 528 -116 457 -198 b 432 -328 447 -323 443 -328 b 413 -303 421 -328 419 -326 b 314 -80 392 -215 357 -138 b 274 -37 302 -65 284 -45 l 268 -31 l 268 -367 l 268 -705 l 246 -705 l 225 -705 l 225 0 ',\n },\n fClef: {\n x_min: -1.359375,\n x_max: 899.703125,\n ha: 918,\n o: 'm 307 349 b 332 351 315 351 323 351 b 443 340 367 351 408 347 b 741 47 607 306 720 195 b 744 0 743 31 744 16 b 660 -303 744 -90 713 -206 b 28 -755 534 -531 304 -695 b 14 -756 23 -755 19 -756 b -1 -741 4 -756 -1 -750 b 21 -720 -1 -731 1 -728 b 567 -56 337 -601 548 -344 b 568 -11 568 -41 568 -24 b 442 285 568 129 525 233 b 325 319 406 308 367 319 b 93 177 232 319 137 266 b 84 154 91 170 84 155 b 84 154 84 154 84 154 b 88 156 84 154 85 155 b 159 177 110 170 134 177 b 257 134 194 177 231 162 b 294 41 281 108 294 73 b 171 -97 294 -24 246 -90 b 156 -98 166 -97 161 -98 b 6 74 73 -98 6 -22 b 6 80 6 76 6 79 b 307 349 10 223 141 340 m 839 215 b 845 216 841 216 842 216 b 862 213 852 216 860 215 b 899 163 887 206 899 184 b 872 117 899 145 890 127 b 847 111 865 112 856 111 b 808 130 833 111 818 117 b 796 162 800 140 796 151 b 839 215 796 187 812 212 m 839 -112 b 845 -112 841 -112 842 -112 b 862 -115 852 -112 860 -113 b 899 -165 887 -122 899 -144 b 872 -210 899 -183 890 -201 b 847 -217 865 -215 856 -217 b 808 -198 833 -217 818 -210 b 796 -165 800 -188 796 -177 b 839 -112 796 -140 812 -116 ',\n },\n unpitchedPercussionClef1: {\n x_min: 0,\n x_max: 464.140625,\n ha: 474,\n o: 'm 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 ',\n },\n '6stringTabClef': {\n x_min: -1.359375,\n x_max: 680.5625,\n ha: 694,\n o: 'm 597 1042 b 604 1042 600 1042 602 1042 b 642 1002 627 1042 642 1022 b 619 966 642 988 635 974 b 439 927 574 942 503 927 l 426 927 l 426 921 b 430 838 428 893 430 866 b 345 480 430 696 398 560 b 179 391 307 423 249 391 b 156 392 171 391 164 392 b 138 394 149 394 142 394 b 103 434 115 396 103 416 b 129 471 103 451 111 466 b 141 474 133 473 137 474 b 172 459 153 474 164 469 b 181 455 175 456 176 455 b 187 456 182 455 185 455 b 253 520 212 460 234 483 b 315 836 294 605 315 714 b 311 928 315 867 314 898 b 302 945 310 943 311 942 b 245 953 283 950 262 953 b 130 891 193 953 149 931 b 84 860 119 870 102 860 b 36 905 61 860 39 877 b 36 910 36 907 36 909 b 80 970 36 931 50 949 b 249 1017 125 1000 187 1017 b 322 1009 273 1017 299 1014 l 341 1003 b 436 991 372 995 406 991 b 577 1031 495 991 545 1004 b 597 1042 583 1038 590 1041 m 416 360 b 424 360 419 360 421 360 b 481 309 454 360 479 338 b 503 145 484 280 495 199 b 585 -185 525 16 555 -106 b 630 -245 596 -213 613 -237 l 634 -247 l 638 -245 b 647 -244 641 -245 645 -244 b 680 -278 666 -244 680 -262 b 664 -308 680 -290 675 -301 b 638 -312 658 -310 650 -312 b 613 -309 631 -312 623 -310 b 477 -201 555 -303 502 -260 b 417 -2 460 -159 434 -72 b 416 5 417 1 416 5 b 416 5 416 5 416 5 b 411 -5 415 5 413 0 b 359 -97 397 -33 377 -70 b 353 -106 355 -102 353 -105 b 359 -112 353 -108 355 -109 b 409 -130 375 -123 390 -129 b 426 -134 420 -130 421 -131 b 431 -147 428 -137 431 -141 b 420 -162 431 -152 427 -159 b 382 -169 409 -166 396 -169 b 323 -155 363 -169 341 -165 l 317 -152 l 314 -155 b 62 -303 240 -240 148 -295 b 36 -305 55 -305 44 -305 b 23 -303 29 -305 24 -305 b -1 -273 6 -299 -1 -287 b 31 -240 -1 -256 10 -240 b 36 -240 32 -240 34 -240 b 42 -241 38 -241 39 -241 b 134 -204 63 -241 99 -226 b 367 288 265 -115 357 81 b 375 330 368 313 370 320 b 416 360 383 347 400 358 m 360 -359 b 379 -359 363 -359 371 -359 b 424 -360 396 -359 416 -359 b 646 -502 536 -373 624 -430 b 649 -527 649 -510 649 -519 b 530 -673 649 -578 604 -635 l 521 -677 l 529 -681 b 653 -811 592 -714 637 -762 b 660 -853 658 -827 660 -839 b 645 -911 660 -873 656 -892 b 426 -1021 608 -981 519 -1021 b 283 -989 377 -1021 328 -1011 b 235 -949 249 -972 239 -964 b 234 -936 234 -946 234 -941 b 234 -928 234 -934 234 -931 l 235 -925 l 234 -927 l 225 -934 b 87 -982 186 -966 138 -982 b 80 -982 85 -982 83 -982 b 55 -981 70 -981 58 -981 b 17 -943 32 -981 17 -964 b 54 -904 17 -921 35 -904 b 78 -914 62 -904 72 -909 l 83 -918 l 88 -918 b 190 -831 122 -918 166 -881 b 269 -506 242 -727 269 -612 b 268 -462 269 -492 269 -477 b 266 -449 266 -458 266 -452 b 265 -444 266 -445 266 -444 b 257 -446 264 -444 261 -445 b 132 -545 196 -470 152 -505 b 88 -573 122 -563 104 -573 b 39 -523 63 -573 39 -553 b 63 -476 39 -505 44 -494 b 360 -359 136 -408 235 -369 m 419 -424 b 393 -423 411 -423 406 -423 l 375 -423 l 377 -426 b 379 -439 377 -427 378 -434 b 383 -510 382 -463 383 -487 b 314 -811 383 -609 360 -710 b 266 -893 296 -850 285 -870 b 264 -898 265 -896 264 -898 l 264 -898 b 264 -898 264 -898 264 -898 b 268 -898 264 -898 266 -898 b 273 -898 270 -898 272 -898 b 300 -909 283 -898 291 -900 b 426 -957 340 -941 385 -957 b 476 -949 443 -957 460 -954 b 547 -853 522 -931 547 -893 b 485 -745 547 -816 526 -775 b 397 -707 460 -727 432 -714 b 366 -675 375 -703 366 -692 b 396 -642 366 -657 377 -645 b 530 -557 455 -637 511 -601 b 536 -527 534 -548 536 -537 b 419 -424 536 -480 490 -437 ',\n },\n timeSig0: {\n x_min: 0,\n x_max: 514.5,\n ha: 525,\n o: 'm 236 648 b 246 648 238 648 242 648 b 288 646 261 648 283 648 b 472 513 364 634 428 587 b 514 347 502 464 514 413 b 462 163 514 272 499 217 b 257 44 409 83 333 44 b 50 163 181 44 103 83 b 0 347 14 217 0 272 b 40 513 0 413 12 464 b 236 648 87 591 155 638 m 277 614 b 253 616 273 616 261 616 b 242 616 247 616 243 616 b 170 499 193 609 181 589 b 159 348 163 446 159 398 b 166 222 159 308 161 266 b 201 91 174 138 183 106 b 257 76 215 81 235 76 b 311 91 277 76 299 81 b 347 222 330 106 338 138 b 353 348 352 266 353 308 b 344 499 353 398 351 446 b 277 614 333 587 322 606 m 257 -1 l 258 -1 l 255 -1 l 257 -1 m 257 673 l 258 673 l 255 673 l 257 673 ',\n },\n timeSig1: {\n x_min: -1.359375,\n x_max: 344.359375,\n ha: 351,\n o: 'm 126 637 l 129 638 l 198 638 l 266 638 l 269 635 b 274 631 272 634 273 632 l 277 627 l 277 395 b 279 156 277 230 277 161 b 329 88 281 123 295 106 b 344 69 341 81 344 79 b 337 55 344 62 343 59 l 333 54 l 197 54 l 61 54 l 58 55 b 50 69 53 59 50 62 b 65 88 50 79 53 81 b 80 97 72 91 74 93 b 117 156 103 113 112 129 b 117 345 117 161 117 222 l 117 528 l 100 503 l 38 406 b 14 383 24 384 23 383 b -1 398 5 383 -1 390 b 4 415 -1 403 1 409 b 16 437 5 416 10 426 l 72 539 l 100 596 b 121 632 119 631 119 631 b 126 637 122 634 125 635 m 171 -1 l 172 -1 l 170 -1 l 171 -1 m 171 673 l 172 673 l 170 673 l 171 673 ',\n },\n timeSig2: {\n x_min: -1.359375,\n x_max: 458.6875,\n ha: 468,\n o: 'm 197 648 b 216 648 201 648 208 648 b 258 646 232 648 253 648 b 419 546 333 637 393 599 b 432 489 428 528 432 509 b 356 342 432 440 405 384 b 235 278 322 313 288 295 b 69 170 166 256 107 217 b 69 169 69 170 69 169 b 69 169 69 169 69 169 b 74 173 69 169 72 170 b 209 222 112 204 163 222 b 310 195 247 222 274 215 b 371 179 332 184 352 179 b 396 181 379 179 387 179 b 428 202 409 184 423 194 b 442 212 431 209 436 212 b 458 197 450 212 458 206 b 441 148 458 190 449 165 b 299 44 409 84 353 44 b 288 45 295 44 292 44 b 250 61 274 45 268 49 b 122 99 212 86 164 99 b 73 91 104 99 88 97 b 28 63 53 84 34 72 b 14 54 25 56 20 54 b 1 62 9 54 4 56 l -1 65 l -1 79 b 0 99 -1 91 0 95 b 2 113 1 102 2 108 b 164 309 20 197 81 272 b 285 470 232 341 277 398 b 287 487 287 476 287 481 b 171 595 287 551 239 595 b 155 595 166 595 160 595 b 142 592 145 594 142 594 b 145 589 142 592 142 591 b 179 527 168 576 179 551 b 132 455 179 496 163 467 b 104 451 122 452 112 451 b 27 530 62 451 27 487 b 29 555 27 538 27 546 b 197 648 44 601 115 639 m 228 -1 l 230 -1 l 227 -1 l 228 -1 m 228 673 l 230 673 l 227 673 l 228 673 ',\n },\n timeSig3: {\n x_min: -1.359375,\n x_max: 409.6875,\n ha: 418,\n o: 'm 174 648 b 191 648 176 648 183 648 b 225 648 204 648 220 648 b 402 523 317 638 389 588 b 404 503 404 517 404 510 b 402 484 404 495 404 488 b 264 373 389 437 334 394 b 257 370 259 371 257 371 b 257 370 257 370 257 370 b 264 369 258 370 261 369 b 409 202 359 334 409 267 b 318 72 409 152 381 104 b 200 43 281 52 240 43 b 23 113 134 43 69 68 b 0 169 6 129 0 149 b 77 249 0 210 29 249 l 77 249 b 152 174 125 249 152 212 b 103 102 152 145 137 116 b 103 102 103 102 103 102 b 147 94 103 101 132 95 b 153 94 149 94 151 94 b 265 206 219 94 265 141 b 264 226 265 213 265 219 b 147 355 253 299 204 353 b 126 371 133 356 126 362 b 147 388 126 383 132 388 b 254 474 196 391 238 424 b 259 502 258 484 259 494 b 182 592 259 544 228 582 b 156 595 175 595 166 595 b 115 592 142 595 129 594 l 111 591 l 115 588 b 152 524 141 574 152 549 b 92 449 152 491 130 458 b 76 448 87 448 81 448 b -1 530 32 448 -1 488 b 20 581 -1 548 5 566 b 174 648 55 619 108 641 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 ',\n },\n timeSig4: {\n x_min: 0,\n x_max: 468.21875,\n ha: 478,\n o: 'm 174 637 b 232 638 175 638 189 638 b 277 638 245 638 259 638 l 378 638 l 381 635 b 389 623 386 632 389 627 b 382 609 389 617 386 613 b 366 589 381 606 372 598 l 313 528 l 245 451 l 209 410 l 155 348 l 84 267 b 59 240 72 252 59 240 b 59 240 59 240 59 240 b 151 238 59 238 68 238 l 242 238 l 242 303 b 243 371 242 369 242 370 b 289 426 245 374 254 385 l 303 441 l 317 456 l 338 483 l 360 506 l 371 520 b 386 527 375 526 381 527 b 400 519 392 527 397 524 b 401 440 401 516 401 514 b 401 377 401 423 401 402 l 401 238 l 426 238 b 453 237 449 238 450 238 b 465 217 461 234 465 226 b 460 202 465 212 464 206 b 426 197 454 197 453 197 l 401 197 l 401 180 b 451 88 402 129 412 109 b 468 69 465 81 468 79 b 461 55 468 62 466 59 l 458 54 l 321 54 l 185 54 l 182 55 b 175 69 176 59 175 62 b 191 88 175 79 176 81 b 240 180 230 109 240 129 l 240 197 l 125 197 b 73 195 104 195 87 195 b 8 197 10 195 9 197 b 0 212 2 199 0 205 b 0 212 0 212 0 212 b 20 242 0 219 0 219 b 163 610 104 344 163 492 b 174 637 163 628 166 634 m 234 -1 l 235 -1 l 232 -1 l 234 -1 m 234 673 l 235 673 l 232 673 l 234 673 ',\n },\n timeSig5: {\n x_min: 0,\n x_max: 409.6875,\n ha: 418,\n o: 'm 47 637 b 53 638 49 638 50 638 b 69 634 55 638 61 637 b 210 610 114 619 161 610 b 363 634 259 610 311 619 b 382 638 372 637 378 638 b 392 634 386 638 389 637 b 397 623 396 630 397 627 b 393 610 397 620 396 616 b 298 505 368 552 338 520 b 212 494 277 498 246 494 b 65 517 163 494 106 502 b 61 517 62 517 61 517 b 61 517 61 517 61 517 b 51 408 61 517 51 412 b 51 408 51 408 51 408 b 51 408 51 408 51 408 b 61 412 53 408 55 409 b 125 434 80 421 103 430 b 185 441 145 440 166 441 b 409 244 310 441 409 353 b 401 191 409 227 406 209 b 197 43 375 105 287 43 b 159 47 183 43 171 44 b 23 123 112 56 61 86 b 0 180 6 140 0 159 b 76 260 0 220 31 260 b 92 259 81 260 87 259 b 152 183 132 251 152 216 b 100 112 152 152 134 122 b 95 111 98 112 95 111 b 95 111 95 111 95 111 b 129 98 95 109 119 101 b 148 97 136 97 141 97 b 264 235 206 97 261 158 b 265 248 265 240 265 244 b 210 398 265 312 243 373 b 179 408 201 406 194 408 b 174 408 178 408 176 408 b 53 369 130 408 88 394 b 34 359 39 359 38 359 b 17 374 24 359 17 365 b 39 628 17 384 38 625 b 47 637 40 631 43 635 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 ',\n },\n timeSig6: {\n x_min: 0,\n x_max: 475.03125,\n ha: 485,\n o: 'm 255 648 b 274 648 259 648 266 648 b 314 646 288 648 307 648 b 450 555 374 637 438 594 b 454 530 453 546 454 538 b 375 451 454 485 416 451 b 328 467 359 451 343 455 b 300 526 310 483 300 503 b 352 598 300 557 319 589 b 356 599 355 598 356 599 b 352 602 356 599 355 601 b 288 616 330 612 308 616 b 210 584 257 616 230 605 b 164 433 189 559 174 508 b 160 374 163 415 160 381 b 160 374 160 374 160 374 b 160 374 160 374 160 374 b 168 377 160 374 164 376 b 258 395 200 390 228 395 b 366 367 294 395 328 387 b 475 223 436 333 475 283 b 472 197 475 215 473 206 b 349 65 462 141 419 95 b 259 43 317 51 288 43 b 167 69 230 43 200 52 b 4 290 80 113 20 195 b 0 349 1 309 0 328 b 20 467 0 391 6 433 b 255 648 58 563 155 637 m 269 363 b 257 363 265 363 261 363 b 210 345 236 363 220 356 b 186 226 196 324 186 272 b 187 198 186 216 186 206 b 213 95 191 151 202 112 b 257 76 221 83 238 76 b 270 77 261 76 266 76 b 321 156 299 81 310 99 b 329 229 326 183 329 206 b 321 301 329 252 326 274 b 269 363 311 342 298 359 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 ',\n },\n timeSig7: {\n x_min: 0,\n x_max: 442.359375,\n ha: 451,\n o: 'm 147 648 b 166 649 153 649 160 649 b 313 598 217 649 273 630 b 340 587 323 588 328 587 l 341 587 b 412 628 367 587 390 601 b 427 638 416 635 421 638 b 439 632 431 638 435 637 b 442 623 441 630 442 628 b 430 569 442 616 439 603 b 352 369 408 492 377 410 b 300 259 325 324 313 298 b 273 84 283 205 273 140 b 265 55 273 65 272 59 l 261 54 l 181 54 l 99 54 l 96 55 b 91 61 95 56 92 59 l 89 63 l 89 77 b 147 263 89 133 111 202 b 261 401 176 313 212 355 b 378 541 315 449 349 489 l 382 548 l 375 544 b 240 495 333 512 285 495 b 129 535 198 495 160 509 b 84 560 108 552 95 560 b 76 559 81 560 78 560 b 31 487 59 555 43 530 b 14 470 27 473 24 470 b 1 477 8 470 4 471 l 0 480 l 0 553 l 0 627 l 1 630 b 16 638 4 635 9 638 b 23 635 17 638 20 637 b 49 626 36 626 39 626 b 96 638 59 626 80 630 b 104 639 99 638 102 639 b 117 644 107 641 112 642 b 147 648 125 645 137 648 m 220 -1 l 221 -1 l 219 -1 l 220 -1 m 220 673 l 221 673 l 219 673 l 220 673 ',\n },\n timeSig8: {\n x_min: 0,\n x_max: 488.640625,\n ha: 499,\n o: 'm 217 648 b 245 649 225 648 235 649 b 453 516 343 649 430 595 b 458 478 455 503 458 491 b 412 370 458 440 441 398 b 411 369 412 369 411 369 b 415 365 411 367 412 367 b 488 231 462 331 488 281 b 472 165 488 208 483 186 b 243 43 434 86 338 43 b 63 104 178 43 112 62 b 0 233 20 140 0 186 b 73 365 0 283 24 331 l 77 369 l 72 374 b 29 476 42 406 29 441 b 217 648 29 557 103 635 m 258 605 b 242 606 253 605 247 606 b 157 552 198 606 157 580 b 160 541 157 548 159 544 b 319 413 176 503 242 452 l 337 403 l 338 406 b 359 476 352 428 359 452 b 258 605 359 537 318 595 m 138 326 b 130 330 134 328 130 330 b 130 330 130 330 130 330 b 107 305 127 330 112 313 b 84 231 91 281 84 256 b 243 86 84 156 151 86 b 249 87 245 86 246 87 b 347 156 303 88 347 120 b 344 172 347 162 345 167 b 156 319 325 227 257 281 b 138 326 151 322 144 324 m 243 -1 l 245 -1 l 242 -1 l 243 -1 m 243 673 l 245 673 l 242 673 l 243 673 ',\n },\n timeSig9: {\n x_min: 0,\n x_max: 475.03125,\n ha: 485,\n o: 'm 191 646 b 212 649 198 648 205 649 b 255 644 227 649 243 646 b 458 448 348 616 428 539 b 475 342 469 415 475 378 b 460 244 475 308 469 274 b 193 44 421 124 303 44 b 91 69 157 44 122 51 b 19 161 43 97 19 126 b 21 181 19 167 20 174 b 98 241 32 220 65 241 b 170 186 129 241 160 223 b 172 166 171 179 172 173 b 121 94 172 134 152 102 b 117 93 118 94 117 93 b 121 90 117 93 118 91 b 185 76 142 80 164 76 b 270 119 220 76 251 91 b 308 259 287 145 300 194 b 313 317 310 277 313 310 b 313 317 313 317 313 317 b 313 317 313 317 313 317 b 304 315 313 317 308 316 b 216 295 273 302 245 295 b 145 308 193 295 170 299 b 19 398 88 327 42 360 b 0 469 5 420 0 444 b 24 551 0 496 8 526 b 191 646 54 596 125 637 m 227 614 b 215 616 224 616 220 616 b 202 614 210 616 206 616 b 152 535 174 610 163 592 b 144 463 147 509 144 485 b 152 391 144 440 147 417 b 216 328 163 344 179 328 b 280 391 253 328 269 344 b 288 463 285 417 288 440 b 280 535 288 485 285 509 b 227 614 269 594 258 610 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 ',\n },\n timeSigCommon: {\n x_min: -1.359375,\n x_max: 556.6875,\n ha: 568,\n o: 'm 294 322 b 318 323 299 322 308 323 b 360 320 334 323 352 322 b 526 217 430 310 490 273 b 543 166 537 202 543 184 b 447 70 543 117 503 70 b 445 70 447 70 446 70 b 359 159 394 72 359 113 b 368 201 359 173 362 187 b 442 245 382 229 412 245 b 455 244 446 245 451 245 b 460 244 458 244 460 244 b 460 244 460 244 460 244 b 454 248 460 244 458 245 b 325 291 417 276 372 291 b 285 287 313 291 299 290 b 144 -2 183 269 144 190 b 281 -290 144 -208 179 -280 b 304 -291 289 -291 298 -291 b 524 -105 412 -291 506 -212 b 541 -84 526 -88 530 -84 b 556 -101 551 -84 556 -90 b 549 -138 556 -111 553 -122 b 334 -322 521 -237 435 -310 b 302 -324 323 -323 313 -324 b 13 -101 172 -324 54 -234 b -1 -1 4 -68 -1 -34 b 294 322 -1 161 121 303 ',\n },\n timeSigCutCommon: {\n x_min: 0,\n x_max: 556.6875,\n ha: 568,\n o: 'm 289 545 b 298 546 292 545 295 546 b 318 533 306 546 315 541 b 319 428 319 530 319 528 l 319 327 l 334 327 b 526 223 412 326 485 285 b 543 172 537 206 543 190 b 447 76 543 122 503 76 b 445 76 446 76 446 76 b 359 165 394 77 359 119 b 368 205 359 179 362 192 b 441 251 382 233 412 251 b 455 249 446 251 451 251 b 460 248 458 249 460 248 b 460 248 460 248 460 248 b 454 254 460 249 458 251 b 334 295 419 280 378 294 l 319 295 l 319 4 l 319 -287 l 321 -285 b 328 -285 322 -285 325 -285 b 524 -99 424 -277 507 -198 b 541 -79 526 -84 530 -79 b 556 -97 551 -79 556 -84 b 548 -133 556 -105 553 -117 b 334 -317 521 -233 434 -306 b 322 -319 329 -317 323 -317 l 319 -319 l 319 -424 b 319 -471 319 -444 319 -459 b 313 -541 319 -544 318 -535 b 298 -548 308 -545 303 -548 b 279 -534 289 -548 281 -542 b 277 -424 277 -531 277 -530 l 277 -317 l 273 -317 b 13 -95 153 -305 51 -217 b 0 2 4 -62 0 -29 b 182 295 0 126 66 238 b 274 324 210 309 249 320 l 277 324 l 277 427 b 279 533 277 528 277 530 b 289 545 281 538 285 542 m 277 2 b 277 291 277 161 277 291 b 268 288 277 291 273 290 b 144 1 179 265 144 184 b 276 -284 144 -199 175 -267 l 277 -285 l 277 2 ',\n },\n timeSigPlus: {\n x_min: 0,\n x_max: 319.859375,\n ha: 326,\n o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ',\n },\n timeSigPlusSmall: {\n x_min: 0,\n x_max: 319.859375,\n ha: 326,\n o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ',\n },\n timeSigMinus: {\n x_min: 0,\n x_max: 318.5,\n ha: 325,\n o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ',\n },\n timeSigParensRight: {\n x_min: 25.859375,\n x_max: 164.6875,\n ha: 168,\n o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ',\n },\n timeSigParensRightSmall: {\n x_min: 25.859375,\n x_max: 164.6875,\n ha: 168,\n o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ',\n },\n timeSigParensLeft: {\n x_min: -166.0625,\n x_max: -25.859375,\n ha: 0,\n o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ',\n },\n timeSigParensLeftSmall: {\n x_min: -166.0625,\n x_max: -25.859375,\n ha: 0,\n o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ',\n },\n noteheadDoubleWhole: {\n x_min: 0,\n x_max: 902.421875,\n ha: 921,\n o: 'm 17 240 b 24 241 19 241 21 241 b 32 240 28 241 31 241 b 46 229 38 238 43 234 b 50 88 50 223 50 237 b 50 -1 50 63 50 34 b 50 -90 50 -36 50 -65 b 46 -231 50 -238 50 -224 b 25 -242 42 -238 34 -242 b 0 -224 14 -242 4 -235 b 0 2 0 -222 0 -108 b 0 223 0 112 0 220 b 17 240 2 230 9 237 m 110 240 b 118 241 111 241 114 241 b 126 240 121 241 123 241 b 142 223 133 237 140 230 b 144 123 144 220 144 205 b 144 29 144 45 144 29 b 144 29 144 29 144 29 b 393 183 166 106 264 167 b 450 186 412 184 431 186 b 756 29 600 186 732 120 b 756 29 756 29 756 29 b 758 123 758 29 758 45 b 760 227 758 226 758 223 b 784 241 766 237 774 241 b 804 229 792 241 800 237 b 809 88 808 223 809 237 l 809 -1 l 809 -90 b 804 -231 809 -238 808 -224 b 784 -242 800 -238 792 -242 b 762 -231 775 -242 766 -238 b 758 -124 756 -224 758 -231 b 756 -30 758 -47 758 -30 b 756 -30 756 -30 756 -30 b 509 -184 736 -108 637 -169 b 450 -187 488 -187 469 -187 b 144 -30 300 -187 168 -122 b 144 -30 144 -30 144 -30 b 144 -124 144 -30 144 -47 b 140 -231 144 -231 144 -224 b 118 -242 134 -238 126 -242 b 92 -224 107 -242 96 -235 b 92 2 92 -222 92 -108 b 92 223 92 112 92 220 b 110 240 95 230 102 237 m 432 161 b 413 162 426 162 420 162 b 313 41 351 162 313 109 b 347 -73 313 5 323 -34 b 487 -163 385 -133 439 -163 b 578 -97 526 -163 562 -142 b 588 -43 585 -80 588 -62 b 432 161 588 47 518 147 m 868 240 b 876 241 869 241 872 241 b 884 240 879 241 882 241 b 898 229 890 238 894 234 b 902 88 902 223 902 237 l 902 -1 l 902 -90 b 898 -231 902 -238 902 -224 b 876 -242 892 -238 884 -242 b 852 -224 865 -242 854 -235 b 850 2 850 -222 850 -108 b 852 223 850 112 850 220 b 868 240 853 230 860 237 ',\n },\n noteheadWhole: {\n x_min: 0,\n x_max: 619.3125,\n ha: 632,\n o: 'm 274 184 b 307 186 285 186 296 186 b 616 22 465 186 597 116 b 619 -1 617 13 619 5 b 308 -187 619 -104 483 -187 b 0 -1 133 -187 0 -102 b 5 36 0 11 1 23 b 274 184 29 115 141 176 m 289 161 b 272 162 284 162 277 162 b 171 41 209 162 171 108 b 205 -73 171 5 182 -34 b 345 -163 243 -133 298 -163 b 436 -98 385 -163 420 -142 b 446 -43 443 -80 446 -62 b 289 161 446 47 377 147 ',\n },\n noteheadHalf: {\n x_min: 0,\n x_max: 428.75,\n ha: 438,\n o: 'm 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 m 366 131 b 352 134 362 133 357 134 b 219 81 321 134 269 115 b 47 -111 126 23 50 -62 b 47 -112 47 -111 47 -112 b 77 -136 47 -129 58 -136 b 264 -45 118 -136 194 -101 b 382 109 336 12 382 76 b 366 131 382 120 377 129 ',\n },\n noteheadBlack: {\n x_min: 0,\n x_max: 428.75,\n ha: 438,\n o: 'm 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 ',\n },\n noteheadXWhole: {\n x_min: 0,\n x_max: 598.890625,\n ha: 611,\n o: 'm 62 181 b 77 183 66 183 72 183 b 91 181 83 183 88 183 b 202 131 100 180 106 177 l 299 87 l 394 131 b 517 183 499 181 502 183 b 519 183 517 183 518 183 b 598 104 567 183 598 144 b 577 49 598 84 592 65 b 518 15 567 38 563 37 b 484 0 499 6 484 0 b 518 -16 484 -1 499 -8 b 577 -51 563 -38 567 -40 b 598 -105 592 -66 598 -86 b 519 -184 598 -145 567 -184 b 517 -184 518 -184 517 -184 b 394 -133 502 -184 499 -183 l 299 -88 l 202 -133 b 81 -184 99 -183 95 -184 b 77 -184 80 -184 78 -184 b 0 -105 29 -184 0 -145 b 20 -51 0 -86 5 -66 b 80 -16 29 -40 34 -38 b 114 -1 98 -8 114 -1 b 80 15 114 0 98 6 b 20 49 34 37 29 38 b 0 104 6 65 0 84 b 62 181 0 140 23 174 m 88 134 b 74 136 85 134 80 136 b 68 134 72 136 69 136 b 46 104 54 130 46 117 b 55 81 46 95 49 88 b 149 34 59 76 53 80 b 224 -1 190 15 224 0 b 144 -38 224 -1 187 -18 b 54 -84 59 -79 58 -79 b 46 -105 49 -90 46 -98 b 76 -137 46 -122 58 -137 b 78 -137 77 -137 77 -137 b 194 -86 87 -137 76 -141 b 298 -36 250 -58 298 -36 b 298 -36 298 -36 298 -36 b 402 -84 299 -36 345 -58 b 518 -137 522 -141 510 -137 b 521 -137 519 -137 519 -137 b 551 -105 539 -137 551 -122 b 541 -83 551 -98 548 -90 b 447 -36 537 -77 544 -81 b 374 -1 406 -16 374 -1 b 447 34 374 0 406 15 b 541 81 544 80 537 76 b 551 104 548 88 551 97 b 521 136 551 120 539 136 b 518 136 519 136 519 136 b 517 136 518 136 517 136 l 517 136 b 402 83 511 136 511 136 b 298 34 345 56 299 34 b 298 34 298 34 298 34 b 194 84 298 34 250 56 b 88 134 137 111 89 133 ',\n },\n noteheadXHalf: {\n x_min: 0,\n x_max: 406.96875,\n ha: 415,\n o: 'm 55 181 b 70 183 61 183 66 183 b 111 170 85 183 99 179 b 160 130 115 167 137 149 l 202 95 l 245 130 b 319 181 299 176 302 179 b 334 183 325 183 330 183 b 406 109 375 183 406 148 b 401 81 406 99 405 91 b 348 24 394 65 390 59 b 318 -1 332 11 318 0 b 348 -26 318 -1 332 -12 b 401 -83 390 -61 394 -66 b 406 -111 405 -93 406 -101 b 334 -184 406 -149 375 -184 b 319 -183 330 -184 325 -184 b 245 -131 302 -180 299 -177 l 202 -97 l 160 -131 b 85 -183 107 -177 103 -180 b 70 -184 80 -184 76 -184 b 0 -111 31 -184 0 -149 b 4 -83 0 -101 1 -93 b 58 -26 10 -66 16 -61 b 88 -1 74 -12 88 -1 b 58 24 88 0 74 11 b 10 69 23 54 17 59 b 0 109 2 81 0 95 b 55 181 0 142 21 173 m 83 133 b 72 136 78 136 76 136 b 57 131 66 136 61 134 b 46 109 49 126 46 117 b 50 93 46 104 47 98 b 107 45 51 91 77 70 b 160 0 137 20 160 0 b 107 -47 160 -1 137 -22 b 50 -94 77 -72 51 -93 b 46 -111 47 -99 46 -105 b 59 -134 46 -120 50 -130 b 72 -137 62 -136 68 -137 b 83 -136 76 -137 80 -136 b 144 -84 84 -134 107 -116 b 202 -36 176 -58 202 -36 b 261 -84 202 -36 230 -58 b 323 -136 299 -116 321 -134 b 334 -137 326 -136 330 -137 b 345 -134 338 -137 343 -136 b 360 -111 355 -130 360 -120 b 355 -94 360 -105 359 -99 b 299 -47 353 -93 329 -72 b 245 0 269 -22 245 -1 b 299 45 245 0 269 20 b 355 93 329 70 353 91 b 360 109 359 98 360 104 b 345 133 360 119 355 129 b 334 136 343 134 338 136 b 323 134 330 136 326 134 b 261 83 321 133 299 115 b 202 34 230 56 202 34 b 144 83 202 34 176 56 b 83 133 106 115 84 133 ',\n },\n noteheadXBlack: {\n x_min: 0,\n x_max: 406.96875,\n ha: 415,\n o: 'm 21 183 b 28 183 24 183 25 183 b 42 181 34 183 39 183 b 127 108 47 179 47 179 b 202 41 168 72 202 41 b 279 108 204 41 238 72 b 357 177 321 145 356 176 b 375 183 363 181 370 183 b 406 151 392 183 406 169 b 404 137 406 147 405 141 b 322 62 401 131 398 129 b 251 0 284 27 251 0 b 322 -63 251 -1 284 -29 b 404 -138 398 -130 401 -133 b 406 -152 405 -142 406 -148 b 375 -184 406 -170 392 -184 b 357 -179 370 -184 363 -183 b 279 -109 356 -177 321 -147 b 202 -43 238 -73 204 -43 b 127 -109 202 -43 168 -73 b 49 -179 85 -147 50 -177 b 31 -184 43 -183 36 -184 b 0 -152 13 -184 0 -170 b 2 -138 0 -148 0 -142 b 83 -63 5 -133 8 -130 b 155 0 122 -29 155 -1 b 83 62 155 0 122 27 b 8 129 43 97 10 127 b 0 151 2 136 0 144 b 21 183 0 165 8 177 ',\n },\n noteheadTriangleUpWhole: {\n x_min: 0,\n x_max: 630.203125,\n ha: 643,\n o: 'm 308 204 b 314 205 310 205 313 205 b 326 201 319 205 323 204 b 355 154 328 199 338 180 b 401 83 362 142 392 95 l 409 72 b 431 41 412 66 424 49 b 619 -174 498 -51 570 -134 b 630 -192 626 -180 630 -186 b 626 -202 630 -195 628 -199 b 616 -206 623 -205 620 -206 b 552 -188 608 -206 592 -202 b 310 -155 488 -169 392 -155 b 268 -156 295 -155 281 -155 b 77 -188 197 -161 126 -173 b 13 -206 35 -202 20 -206 b 9 -206 12 -206 10 -206 b 0 -191 2 -202 0 -197 b 8 -176 0 -186 2 -180 b 204 49 58 -136 138 -43 l 220 72 l 227 83 b 295 188 245 108 281 166 b 308 204 299 197 304 202 m 315 147 b 314 147 315 147 314 147 b 314 147 314 147 314 147 b 306 129 314 145 310 138 l 296 105 b 281 72 292 97 284 77 l 274 56 b 181 -123 247 -4 212 -72 l 174 -134 l 176 -133 b 314 -123 215 -127 272 -123 b 451 -133 356 -123 413 -127 l 454 -134 l 449 -123 b 353 56 417 -72 381 -4 l 347 72 b 332 105 344 77 336 97 l 322 129 b 315 147 318 138 315 145 ',\n },\n noteheadTriangleUpHalf: {\n x_min: 0,\n x_max: 438.28125,\n ha: 447,\n o: 'm 212 205 b 219 205 213 205 216 205 b 239 183 228 205 231 204 b 421 -163 298 40 363 -83 b 438 -191 434 -180 438 -186 b 436 -197 438 -192 438 -195 b 424 -206 434 -204 431 -206 b 406 -201 420 -206 415 -205 b 216 -156 347 -172 281 -156 b 23 -205 148 -156 80 -173 b 14 -206 20 -206 17 -206 b 0 -191 6 -206 0 -201 b 6 -176 0 -187 1 -183 b 202 192 63 -104 142 45 b 212 205 205 199 208 202 m 264 48 l 249 81 l 243 94 l 242 91 b 89 -126 208 36 137 -66 b 81 -138 85 -133 81 -138 b 81 -138 81 -138 81 -138 b 81 -138 81 -138 81 -138 b 95 -133 81 -138 87 -136 b 280 -94 156 -108 221 -94 b 334 -98 299 -94 317 -95 b 343 -99 338 -99 343 -99 b 343 -99 343 -99 343 -99 b 338 -94 343 -99 341 -97 b 264 48 318 -58 287 1 ',\n },\n noteheadTriangleUpBlack: {\n x_min: -1.359375,\n x_max: 436.921875,\n ha: 446,\n o: 'm 213 205 b 217 205 215 205 216 205 b 234 194 224 205 234 199 b 236 187 234 194 235 190 l 245 167 l 261 129 l 270 106 b 355 -61 294 54 329 -13 b 420 -163 381 -105 402 -138 b 436 -188 435 -184 436 -184 b 436 -191 436 -190 436 -190 b 421 -206 436 -201 431 -206 l 421 -206 l 416 -206 l 405 -201 b 217 -158 347 -172 283 -158 b 31 -201 153 -158 88 -172 l 20 -206 l 14 -206 l 14 -206 b 0 -191 5 -206 0 -201 b -1 -188 0 -190 -1 -190 b 14 -163 -1 -186 0 -184 b 95 -34 36 -136 72 -77 b 166 106 119 8 148 68 l 175 129 l 183 148 l 200 188 b 213 205 205 199 208 202 ',\n },\n noteheadDiamondWhole: {\n x_min: 0,\n x_max: 432.828125,\n ha: 442,\n o: 'm 208 184 b 213 187 209 186 212 187 b 224 176 217 187 221 183 b 245 147 225 172 235 159 b 419 -1 288 90 347 38 b 431 -8 424 -4 431 -8 b 432 -12 432 -9 432 -11 b 430 -18 432 -13 432 -16 b 364 -61 424 -20 383 -47 b 225 -183 307 -102 250 -152 b 223 -187 224 -184 223 -187 b 220 -188 221 -188 220 -188 b 208 -176 216 -188 210 -184 b 187 -148 205 -173 197 -159 b 12 0 144 -90 84 -38 b 0 11 4 5 0 8 b 16 24 0 13 4 18 b 183 158 83 69 141 115 b 208 184 194 169 198 173 m 183 105 b 176 113 181 109 176 113 b 172 109 176 113 175 112 b 92 45 149 90 117 62 l 88 41 l 102 31 b 247 -105 160 -6 210 -55 l 254 -115 l 257 -112 l 269 -102 b 340 -45 287 -87 319 -61 l 344 -43 l 330 -33 b 183 105 272 6 221 54 ',\n },\n noteheadDiamondHalf: {\n x_min: 0,\n x_max: 438.28125,\n ha: 447,\n o: 'm 212 190 b 219 191 213 191 216 191 b 236 176 225 191 228 190 b 419 18 277 105 341 49 b 436 5 431 13 434 11 b 438 -1 438 4 438 1 b 424 -16 438 -8 432 -13 b 356 -49 409 -20 379 -36 b 234 -180 306 -83 258 -133 b 219 -192 230 -188 224 -192 b 200 -176 213 -192 206 -187 b 9 -15 157 -102 89 -45 b 0 0 2 -12 0 -6 b 16 18 0 9 2 12 b 200 176 93 48 159 104 b 212 190 205 186 208 188 m 239 113 b 236 117 238 116 238 117 b 230 108 235 117 234 115 b 92 -15 196 58 140 8 b 88 -18 91 -16 88 -18 b 92 -20 88 -18 91 -19 b 198 -116 130 -43 166 -74 b 200 -117 200 -117 200 -117 b 201 -117 200 -117 201 -117 b 264 -43 212 -98 242 -62 b 345 15 288 -19 321 4 b 348 18 347 16 348 16 b 344 20 348 18 347 19 b 239 113 307 41 266 79 ',\n },\n noteheadDiamondBlack: {\n x_min: 0,\n x_max: 432.828125,\n ha: 442,\n o: 'm 209 186 b 213 187 210 187 212 187 b 216 187 215 187 216 187 b 224 174 216 186 220 180 b 420 -1 269 105 338 43 b 432 -12 431 -8 432 -9 b 421 -23 432 -15 432 -16 b 228 -180 345 -70 264 -137 b 219 -188 221 -188 221 -188 l 219 -188 b 208 -177 215 -188 215 -188 b 10 1 163 -106 93 -44 b 0 11 0 6 0 8 b 10 22 0 13 0 15 b 202 179 87 69 167 136 b 209 186 206 183 209 186 ',\n },\n augmentationDot: {\n x_min: 0,\n x_max: 133.390625,\n ha: 136,\n o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ',\n },\n tremolo1: {\n x_min: -206.890625,\n x_max: 428.75,\n ha: 438,\n o: 'm 389 -351 b 394 -351 390 -351 393 -351 b 428 -385 413 -351 428 -367 b 428 -394 428 -388 428 -391 b 394 -428 426 -406 421 -410 l 332 -473 l 269 -516 l 205 -560 l 141 -603 l 77 -648 l 13 -692 l -50 -737 l -114 -780 l -145 -802 b -171 -813 -157 -810 -163 -813 b -175 -813 -172 -813 -174 -813 b -206 -777 -194 -811 -206 -795 b -202 -760 -206 -771 -205 -766 b -87 -675 -197 -752 -206 -757 l -34 -639 l 83 -557 l 145 -514 l 209 -470 l 272 -427 b 389 -351 375 -356 381 -352 ',\n },\n flag8thUp: {\n x_min: -24.5,\n x_max: 317.140625,\n ha: 324,\n o: 'm -24 -161 l -24 -5 l -20 -5 b 0 -24 -9 -5 -2 -12 b 171 -315 21 -124 84 -233 b 317 -660 268 -406 317 -531 b 187 -1014 317 -782 274 -909 b 161 -1034 172 -1034 171 -1034 b 141 -1013 149 -1034 141 -1025 b 152 -991 141 -1004 142 -1002 b 266 -682 228 -899 266 -788 b 174 -430 266 -588 236 -498 b -23 -317 136 -388 66 -348 b -24 -161 -23 -316 -24 -285 ',\n },\n flag8thDown: {\n x_min: -21.78125,\n x_max: 367.5,\n ha: 375,\n o: 'm 230 1031 b 238 1032 232 1032 235 1032 b 259 1014 245 1032 251 1027 b 367 662 330 906 367 782 b 364 602 367 641 367 621 b 232 317 352 488 304 384 b 57 120 155 245 103 187 b -1 18 31 84 6 40 b -19 4 -4 11 -12 4 l -21 4 l -21 159 l -21 315 l -16 315 b 96 335 10 315 62 324 b 315 695 227 380 315 527 b 313 738 315 709 314 724 b 224 991 304 825 273 916 b 216 1013 219 999 216 1007 b 230 1031 216 1021 220 1028 ',\n },\n flag16thUp: {\n x_min: -24.5,\n x_max: 317.140625,\n ha: 324,\n o: 'm -24 -147 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 58 -123 6 -43 31 -86 b 196 -278 93 -173 134 -219 b 317 -570 274 -356 317 -460 b 294 -713 317 -617 308 -666 l 289 -724 l 294 -735 b 317 -873 308 -780 317 -827 b 235 -1132 317 -963 288 -1054 b 209 -1165 228 -1140 224 -1146 b 189 -1177 204 -1172 196 -1177 b 171 -1164 182 -1177 175 -1172 b 168 -1154 170 -1161 168 -1159 b 181 -1132 168 -1149 172 -1142 b 269 -891 238 -1064 269 -975 b 269 -881 269 -886 269 -884 b 262 -814 269 -857 265 -827 b 258 -800 261 -811 259 -806 b 142 -628 240 -731 198 -667 b -8 -589 112 -606 47 -589 b -20 -589 -13 -589 -19 -589 l -24 -589 l -24 -449 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 58 -424 6 -345 31 -388 b 194 -580 93 -476 136 -523 b 259 -660 221 -606 245 -635 b 261 -663 259 -662 261 -663 b 264 -656 262 -663 262 -660 b 269 -587 268 -632 269 -610 b 264 -521 269 -566 268 -544 b 262 -512 264 -517 262 -513 b 258 -498 261 -509 259 -503 b 142 -326 240 -428 198 -365 b -8 -287 112 -303 47 -288 b -20 -287 -13 -287 -19 -287 l -24 -287 l -24 -147 ',\n },\n flag16thDown: {\n x_min: -21.78125,\n x_max: 362.0625,\n ha: 369,\n o: 'm 302 1031 b 308 1032 304 1032 307 1032 b 330 1016 318 1032 325 1027 b 362 867 351 970 362 920 b 340 738 362 824 353 780 l 336 727 l 340 717 b 362 591 355 677 362 634 b 257 323 362 496 325 401 b 204 272 243 306 227 290 b 20 56 129 206 66 133 b -1 18 12 44 0 22 b -19 4 -4 9 -12 4 l -21 4 l -21 140 l -21 276 l -12 277 b 167 333 61 288 127 309 b 319 598 262 388 319 491 b 311 664 319 620 317 642 l 310 673 l 304 664 b 204 548 279 620 250 587 b 20 333 129 483 66 409 b -1 292 12 320 0 298 b -19 280 -4 285 -12 280 l -21 280 l -21 416 l -21 552 l -12 553 b 167 609 61 564 127 585 b 319 874 264 666 319 770 b 294 992 319 914 311 954 b 288 1011 288 1004 288 1007 b 302 1031 288 1021 294 1028 ',\n },\n flag32ndUp: {\n x_min: -24.5,\n x_max: 315.78125,\n ha: 322,\n o: 'm -24 -145 l -24 -5 l -20 -5 b 1 -26 -10 -5 -6 -9 b 175 -241 31 -86 96 -166 b 314 -548 259 -323 304 -420 b 315 -589 315 -555 315 -571 b 314 -630 315 -606 315 -623 b 298 -730 311 -664 306 -699 l 295 -742 l 296 -748 b 314 -850 304 -778 311 -813 b 315 -892 315 -857 315 -874 b 314 -932 315 -909 315 -925 b 298 -1032 311 -967 306 -1002 l 295 -1045 l 296 -1050 b 314 -1153 304 -1081 311 -1115 b 315 -1193 315 -1160 315 -1177 b 314 -1235 315 -1211 315 -1228 b 217 -1526 306 -1338 270 -1444 b 201 -1533 213 -1532 208 -1533 b 182 -1522 193 -1533 185 -1529 b 179 -1514 181 -1518 179 -1517 b 189 -1489 179 -1508 182 -1501 b 266 -1217 240 -1403 266 -1308 b 262 -1156 266 -1196 265 -1177 b 110 -907 247 -1043 190 -950 b 0 -889 87 -895 50 -889 l -1 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 1 -631 -10 -610 -6 -614 b 175 -846 31 -691 96 -771 b 259 -956 213 -884 236 -914 b 265 -966 262 -961 264 -966 b 265 -966 265 -966 265 -966 b 265 -953 265 -964 265 -959 b 266 -920 266 -943 266 -932 b 262 -853 266 -898 265 -873 b 110 -605 247 -741 190 -648 b 0 -587 87 -592 50 -587 l -1 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 1 -328 -10 -308 -6 -312 b 175 -544 31 -388 96 -469 b 259 -655 213 -581 236 -612 b 265 -663 262 -659 264 -663 b 265 -663 265 -663 265 -663 b 265 -650 265 -663 265 -657 b 266 -617 266 -641 266 -630 b 262 -551 266 -595 265 -570 b 110 -303 247 -438 190 -345 b 0 -284 87 -290 50 -284 l -1 -284 l -24 -284 l -24 -145 ',\n },\n flag32ndDown: {\n x_min: -21.78125,\n x_max: 366.140625,\n ha: 374,\n o: 'm 276 1378 b 284 1379 279 1379 281 1379 b 306 1360 292 1379 298 1374 b 352 1247 326 1326 343 1286 b 366 1139 362 1213 366 1175 b 347 1009 366 1093 359 1049 l 344 1002 l 347 992 b 352 971 348 986 351 977 b 366 863 362 936 366 899 b 347 732 366 818 359 773 l 344 725 l 347 716 b 352 695 348 710 351 700 b 366 588 362 659 366 623 b 223 262 366 464 314 345 b 189 233 212 252 212 252 b 35 76 126 183 73 129 b -1 16 20 56 2 27 b -19 4 -4 9 -12 4 l -21 4 l -21 137 l -21 270 l -17 270 b 186 344 59 281 134 308 b 319 606 270 399 319 499 b 317 650 319 620 319 635 l 315 659 l 314 655 b 223 537 288 607 258 570 b 189 509 212 528 212 528 b 35 352 126 459 73 405 b -1 292 20 333 2 303 b -19 280 -4 285 -12 280 l -21 280 l -21 413 l -21 546 l -17 546 b 186 620 59 557 134 584 b 319 882 270 675 319 775 b 317 925 319 896 319 911 l 315 935 l 314 931 b 223 813 288 884 258 846 b 189 785 212 805 212 805 b 35 628 126 735 73 681 b -1 569 20 609 2 580 b -19 556 -4 562 -12 556 l -21 556 l -21 689 l -21 823 l -17 823 b 202 907 68 835 152 867 b 319 1157 280 968 319 1061 b 270 1338 319 1218 303 1281 b 262 1358 264 1349 262 1353 b 262 1364 262 1360 262 1363 b 276 1378 265 1371 269 1376 ',\n },\n flag64thUp: {\n x_min: -24.5,\n x_max: 314.421875,\n ha: 321,\n o: 'm -24 -145 l -24 -5 l -20 -5 b 0 -23 -9 -5 -2 -12 b 27 -87 4 -38 14 -66 b 138 -220 53 -136 88 -177 b 235 -328 179 -255 208 -288 b 314 -592 287 -409 314 -501 b 292 -732 314 -639 307 -687 l 289 -742 l 294 -756 b 314 -896 307 -802 314 -849 b 292 -1035 314 -943 307 -991 l 289 -1045 l 294 -1057 b 314 -1197 307 -1104 314 -1152 b 292 -1338 314 -1246 307 -1292 l 289 -1347 l 294 -1360 b 314 -1500 307 -1407 314 -1454 b 273 -1689 314 -1565 300 -1628 b 250 -1712 265 -1710 261 -1712 b 228 -1691 236 -1712 228 -1704 l 228 -1685 l 234 -1675 b 270 -1507 258 -1621 270 -1564 b 98 -1193 270 -1381 209 -1261 b 40 -1174 76 -1179 58 -1174 b -10 -1189 24 -1174 8 -1178 b -20 -1192 -14 -1192 -16 -1192 l -24 -1192 l -24 -1052 l -24 -913 l -20 -913 b 0 -931 -9 -913 -2 -920 b 27 -995 4 -946 14 -974 b 138 -1128 53 -1043 88 -1085 b 257 -1275 190 -1172 228 -1220 b 262 -1283 259 -1279 262 -1283 l 262 -1283 b 269 -1249 264 -1282 268 -1260 b 270 -1206 270 -1233 270 -1220 b 98 -891 270 -1075 206 -957 b 40 -871 76 -877 58 -871 b -10 -886 24 -871 8 -875 b -20 -889 -14 -889 -16 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 0 -628 -9 -610 -2 -617 b 27 -692 4 -644 14 -671 b 138 -825 53 -741 88 -782 b 257 -973 190 -870 228 -917 b 262 -981 259 -977 262 -981 l 262 -981 b 269 -946 264 -979 268 -957 b 270 -903 270 -931 270 -917 b 98 -588 270 -774 206 -655 b 40 -569 76 -574 58 -569 b -10 -584 24 -569 8 -574 b -20 -587 -14 -587 -16 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 0 -326 -9 -308 -2 -315 b 27 -390 4 -341 14 -369 b 138 -523 53 -438 88 -480 b 257 -670 190 -567 228 -614 b 262 -678 259 -674 262 -678 b 262 -678 262 -678 262 -678 b 269 -644 264 -677 268 -656 b 270 -601 270 -628 270 -614 b 98 -285 270 -471 206 -352 b 40 -266 76 -273 58 -266 b -10 -281 24 -266 8 -272 b -20 -284 -14 -284 -16 -284 l -24 -284 l -24 -145 ',\n },\n flag64thDown: {\n x_min: -21.78125,\n x_max: 367.5,\n ha: 375,\n o: 'm 259 1553 b 265 1553 261 1553 264 1553 b 288 1540 272 1553 277 1550 b 367 1351 340 1493 367 1424 b 336 1221 367 1308 357 1263 l 332 1211 l 333 1208 b 367 1077 356 1170 367 1124 b 336 945 367 1032 357 986 l 332 935 l 333 932 b 367 800 356 893 367 848 b 336 669 367 756 357 710 l 332 659 l 333 656 b 367 523 356 617 367 571 b 345 412 367 485 360 446 b 231 273 322 356 284 310 b -1 19 121 195 27 93 b -17 4 -4 11 -10 5 l -21 4 l -21 134 l -21 265 l -17 265 b 133 291 20 265 96 278 b 318 537 245 328 318 433 b 307 603 318 559 315 582 b 303 614 304 612 304 614 b 298 609 302 614 300 613 b 231 549 281 589 258 567 b -1 295 121 471 27 369 b -17 280 -4 287 -10 281 l -21 280 l -21 410 l -21 541 l -17 541 b 133 567 20 541 96 555 b 318 813 245 605 318 709 b 307 880 318 835 315 859 b 303 891 304 888 304 891 b 298 885 302 891 300 888 b 231 825 281 866 258 843 b -1 571 121 748 27 645 b -17 556 -4 563 -10 557 l -21 556 l -21 687 l -21 817 l -17 817 b 133 843 20 817 96 830 b 318 1089 245 881 318 985 b 307 1156 318 1111 315 1134 b 303 1167 304 1164 304 1167 b 298 1161 302 1167 300 1164 b 231 1102 281 1140 258 1120 b -1 848 121 1024 27 921 b -17 832 -4 839 -10 834 l -21 832 l -21 963 l -21 1093 l -17 1093 b 114 1113 12 1093 78 1103 b 313 1314 215 1142 289 1218 b 318 1364 317 1331 318 1347 b 255 1511 318 1422 295 1478 b 243 1532 247 1519 243 1525 b 259 1553 243 1540 250 1550 ',\n },\n flag128thUp: {\n x_min: -24.5,\n x_max: 313.0625,\n ha: 319,\n o: 'm -24 -133 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 142 -213 13 -61 74 -144 b 258 -376 196 -269 230 -315 b 313 -605 295 -449 313 -528 b 292 -742 313 -652 306 -699 b 288 -752 289 -748 288 -752 b 288 -752 288 -752 288 -752 b 292 -764 289 -753 291 -757 b 313 -907 306 -811 313 -860 b 292 -1045 313 -954 306 -1002 b 288 -1054 289 -1050 288 -1054 b 288 -1054 288 -1054 288 -1054 b 292 -1067 289 -1054 291 -1060 b 313 -1210 306 -1113 313 -1161 b 292 -1346 313 -1257 306 -1304 b 288 -1357 289 -1353 288 -1357 b 288 -1357 288 -1357 288 -1357 b 292 -1368 289 -1357 291 -1363 b 313 -1512 306 -1415 313 -1464 b 292 -1648 313 -1560 306 -1605 b 288 -1660 289 -1654 288 -1660 b 288 -1660 288 -1660 288 -1660 b 292 -1671 289 -1660 291 -1665 b 313 -1814 306 -1719 313 -1766 b 250 -2040 313 -1897 291 -1977 b 232 -2062 238 -2057 236 -2059 b 221 -2065 230 -2063 225 -2065 b 200 -2045 210 -2065 201 -2057 b 200 -2043 200 -2044 200 -2044 b 208 -2026 200 -2037 202 -2034 b 269 -1826 249 -1966 269 -1897 b 153 -1544 269 -1726 230 -1625 b -9 -1472 115 -1506 58 -1481 b -21 -1471 -14 -1471 -19 -1471 l -24 -1471 l -24 -1343 l -24 -1215 l -20 -1215 b -1 -1229 -12 -1215 -4 -1221 b 142 -1424 13 -1270 74 -1353 b 257 -1582 196 -1478 228 -1524 b 264 -1594 261 -1589 264 -1594 l 264 -1594 b 265 -1582 264 -1594 264 -1589 b 270 -1525 268 -1562 270 -1544 b 153 -1243 270 -1424 228 -1321 b -9 -1170 115 -1203 58 -1178 b -21 -1168 -14 -1170 -19 -1168 l -24 -1168 l -24 -1041 l -24 -913 l -20 -913 b -1 -927 -12 -913 -4 -918 b 142 -1121 13 -967 74 -1050 b 257 -1281 196 -1175 228 -1221 b 264 -1292 261 -1286 264 -1292 l 264 -1292 b 265 -1279 264 -1292 264 -1286 b 270 -1222 268 -1261 270 -1242 b 153 -941 270 -1121 228 -1018 b -9 -867 115 -900 58 -875 b -21 -866 -14 -867 -19 -866 l -24 -866 l -24 -738 l -24 -610 l -20 -610 b -1 -624 -12 -610 -4 -616 b 142 -818 13 -664 74 -749 b 257 -978 196 -873 228 -918 b 264 -989 261 -984 264 -989 l 264 -989 b 265 -977 264 -989 264 -984 b 270 -920 268 -959 270 -939 b 153 -638 270 -818 228 -716 b -9 -564 115 -598 58 -573 b -21 -563 -14 -564 -19 -563 l -24 -563 l -24 -435 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 142 -516 13 -363 74 -446 b 257 -675 196 -571 228 -616 b 264 -687 261 -681 264 -687 l 264 -687 b 265 -674 264 -687 264 -681 b 270 -617 268 -656 270 -637 b 153 -335 270 -516 228 -413 b -9 -262 115 -295 58 -270 b -21 -260 -14 -262 -19 -260 l -24 -260 l -24 -133 ',\n },\n flag128thDown: {\n x_min: -21.78125,\n x_max: 367.5,\n ha: 375,\n o: 'm 276 1900 b 284 1901 279 1900 281 1901 b 306 1883 291 1901 298 1896 b 367 1686 347 1825 367 1757 b 343 1558 367 1643 359 1600 l 338 1549 l 343 1537 b 367 1411 359 1497 367 1454 b 343 1282 367 1367 359 1324 l 338 1272 l 343 1261 b 367 1135 359 1221 367 1178 b 343 1007 367 1090 359 1047 l 338 996 l 343 985 b 367 859 359 945 367 902 b 343 731 367 814 359 771 l 338 720 l 343 709 b 367 582 359 667 367 626 b 289 362 367 503 340 426 b 239 312 276 345 259 330 b 29 77 152 237 76 152 b -1 18 14 54 2 30 b -19 4 -4 11 -12 4 l -21 4 l -21 133 l -20 260 l -13 262 b 98 299 17 269 62 284 b 111 305 103 302 110 305 b 167 334 123 310 156 327 b 319 595 264 391 319 491 b 313 659 319 616 318 638 b 310 667 311 664 311 667 b 307 663 310 667 308 666 b 240 588 289 637 269 614 b 16 331 141 505 62 413 b -1 294 8 316 1 302 b -19 280 -4 287 -12 280 l -21 280 l -21 408 l -20 537 l -13 538 b 98 576 17 545 62 560 b 111 581 103 578 110 581 b 167 610 123 587 156 603 b 319 871 264 667 319 767 b 313 935 319 892 318 913 b 310 942 311 941 311 942 b 307 939 310 942 308 941 b 240 864 289 913 269 889 b 16 607 141 781 62 689 b -1 570 8 592 1 578 b -19 556 -4 563 -12 556 l -21 556 l -21 684 l -20 813 l -13 814 b 98 852 17 821 62 836 b 111 857 103 855 110 857 b 167 886 123 863 156 880 b 319 1147 264 943 319 1043 b 313 1211 319 1168 318 1189 b 310 1218 311 1217 311 1218 b 307 1215 310 1218 308 1217 b 240 1140 289 1188 269 1165 b 16 884 141 1057 62 966 b -1 846 8 868 1 855 b -19 832 -4 839 -12 832 l -21 832 l -21 960 l -20 1089 l -13 1090 b 98 1128 17 1097 62 1111 b 111 1134 103 1131 110 1134 b 167 1163 123 1139 156 1156 b 319 1424 264 1220 319 1320 b 313 1486 319 1444 318 1465 b 310 1494 311 1493 311 1494 b 307 1492 310 1494 308 1493 b 240 1417 289 1464 269 1442 b 16 1160 141 1333 62 1242 b -1 1121 8 1145 1 1131 b -19 1109 -4 1115 -12 1109 l -21 1109 l -21 1236 l -20 1365 l -13 1367 b 98 1404 17 1374 62 1388 b 111 1410 103 1407 110 1410 b 250 1508 172 1437 215 1467 b 319 1701 296 1564 319 1633 b 270 1859 319 1757 303 1814 b 262 1882 265 1868 262 1875 b 276 1900 262 1890 266 1896 ',\n },\n accidentalFlat: {\n x_min: -21.78125,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalNatural: {\n x_min: 0,\n x_max: 239.5625,\n ha: 244,\n o: 'm 10 460 b 20 462 13 462 14 462 b 39 449 28 462 35 458 l 40 446 l 40 326 b 40 205 40 259 40 205 b 127 227 40 205 80 215 b 220 249 196 244 213 249 b 227 247 224 249 225 248 b 238 237 231 245 235 241 l 239 233 l 239 -106 l 239 -448 l 238 -451 b 219 -463 234 -459 225 -463 b 198 -451 210 -463 202 -459 l 197 -448 l 197 -324 b 197 -201 197 -248 197 -201 b 110 -223 196 -201 157 -210 b 17 -245 42 -240 24 -245 b 10 -242 13 -245 13 -244 b 0 -233 6 -241 2 -237 l 0 -230 l 0 108 l 0 446 l 0 449 b 10 460 2 453 6 458 m 197 22 b 197 70 197 41 197 58 b 196 116 197 113 197 116 l 196 116 b 118 97 196 116 160 106 l 40 77 l 40 -18 b 40 -112 40 -69 40 -112 l 119 -93 l 197 -73 l 197 22 ',\n },\n accidentalSharp: {\n x_min: 0,\n x_max: 323.9375,\n ha: 331,\n o: 'm 217 535 b 225 537 220 537 221 537 b 245 524 235 537 242 533 l 246 521 l 247 390 l 247 258 l 273 265 b 306 270 288 269 299 270 b 322 259 315 270 319 267 b 323 208 323 256 323 233 b 322 158 323 184 323 159 b 288 140 318 148 315 147 b 247 130 254 131 247 130 b 247 65 247 130 247 104 b 247 20 247 51 247 36 l 247 -88 l 273 -81 b 306 -76 289 -77 299 -76 b 318 -81 311 -76 315 -77 b 323 -123 323 -87 323 -86 l 323 -138 l 323 -154 b 318 -195 323 -191 323 -190 b 269 -210 314 -199 315 -199 b 249 -216 259 -213 250 -216 l 247 -216 l 247 -349 l 246 -483 l 245 -487 b 225 -499 242 -495 234 -499 b 206 -487 219 -499 210 -495 l 205 -483 l 205 -355 l 205 -227 l 204 -227 l 181 -233 l 138 -244 b 117 -249 127 -247 117 -249 b 115 -385 115 -249 115 -256 l 115 -523 l 114 -526 b 95 -538 110 -534 102 -538 b 74 -526 87 -538 78 -534 l 73 -523 l 73 -391 b 72 -260 73 -269 73 -260 b 72 -260 72 -260 72 -260 b 19 -273 61 -263 23 -273 b 0 -260 10 -273 4 -267 b 0 -209 0 -256 0 -256 l 0 -162 l 1 -158 b 61 -134 5 -148 5 -148 l 73 -131 l 73 -22 b 72 86 73 79 73 86 b 72 86 72 86 72 86 b 19 74 61 83 23 74 b 0 86 10 74 4 79 b 0 137 0 90 0 90 l 0 184 l 1 188 b 61 212 5 198 5 198 l 73 215 l 73 348 l 73 481 l 74 485 b 95 498 78 492 87 498 b 103 495 98 498 100 496 b 114 485 107 494 111 489 l 115 481 l 115 353 l 115 226 l 121 226 b 159 235 123 227 141 231 l 198 247 l 205 248 l 205 384 l 205 521 l 206 524 b 217 535 209 528 212 533 m 205 9 b 205 119 205 70 205 119 l 205 119 b 182 113 204 119 194 116 l 138 102 b 117 97 127 99 117 97 b 115 -12 115 97 115 91 l 115 -122 l 121 -120 b 159 -111 123 -119 141 -115 l 198 -101 l 205 -98 l 205 9 ',\n },\n accidentalDoubleSharp: {\n x_min: 0,\n x_max: 367.5,\n ha: 375,\n o: 'm 0 124 l 0 187 l 61 187 l 122 187 l 122 138 l 122 91 l 153 61 l 183 30 l 213 61 l 243 91 l 243 138 l 243 187 l 306 187 l 367 187 l 367 124 l 367 61 l 321 61 l 274 61 l 243 30 l 213 0 l 243 -31 l 274 -62 l 321 -62 l 367 -62 l 367 -124 l 367 -188 l 306 -188 l 243 -188 l 243 -140 l 243 -93 l 213 -62 l 183 -31 l 153 -62 l 122 -93 l 122 -140 l 122 -188 l 61 -188 l 0 -188 l 0 -124 l 0 -62 l 46 -62 l 92 -62 l 123 -31 l 153 0 l 123 30 l 92 61 l 46 61 l 0 61 l 0 124 ',\n },\n accidentalDoubleFlat: {\n x_min: -21.78125,\n x_max: 483.1875,\n ha: 493,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 179 164 199 187 192 l 210 176 l 210 396 l 210 617 l 212 621 b 231 632 216 628 223 632 b 250 620 239 632 247 628 b 251 383 251 616 251 616 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 ',\n },\n accidentalParensLeft: {\n x_min: -166.0625,\n x_max: -25.859375,\n ha: 0,\n o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ',\n },\n accidentalParensRight: {\n x_min: 25.859375,\n x_max: 164.6875,\n ha: 168,\n o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ',\n },\n accidentalQuarterToneFlatStein: {\n x_min: 0,\n x_max: 272.21875,\n ha: 278,\n o: 'm 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 ',\n },\n accidentalThreeQuarterTonesFlatZimmermann: {\n x_min: 0,\n x_max: 607.0625,\n ha: 619,\n o: 'm 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 m 347 631 b 353 632 348 632 351 632 b 374 620 363 632 371 628 b 375 383 375 616 375 616 l 375 148 l 377 151 b 492 199 415 183 454 199 b 537 191 507 199 522 197 b 607 84 582 176 607 134 b 583 0 607 58 598 29 b 455 -142 562 -40 533 -72 l 378 -215 b 355 -229 364 -229 362 -229 b 334 -216 345 -229 337 -224 l 333 -212 l 333 201 l 333 616 l 334 620 b 347 631 337 624 341 630 m 465 131 b 451 133 461 133 455 133 b 445 133 449 133 446 133 b 379 87 419 129 396 113 l 375 80 l 375 -37 l 375 -156 l 378 -152 b 499 81 451 -72 499 20 l 499 83 b 465 131 499 113 490 126 ',\n },\n accidentalQuarterToneSharpStein: {\n x_min: 0,\n x_max: 193.28125,\n ha: 197,\n o: 'm 85 514 b 95 517 88 517 89 517 b 114 505 103 517 110 513 l 115 502 l 115 376 b 115 249 115 306 115 249 b 141 258 117 249 127 252 l 167 266 l 172 266 b 190 254 181 265 187 262 l 193 251 l 193 202 l 193 188 b 187 147 193 149 191 152 b 147 130 183 142 182 141 l 115 119 l 115 9 b 115 -99 115 -51 115 -99 b 141 -91 115 -99 127 -95 b 171 -81 166 -81 167 -81 l 171 -81 b 191 -94 181 -81 189 -87 b 193 -142 191 -97 193 -120 b 191 -195 193 -167 191 -194 b 125 -227 187 -205 187 -204 l 115 -230 l 115 -366 l 115 -503 l 114 -506 b 95 -519 110 -514 102 -519 b 74 -506 87 -519 78 -514 l 73 -503 l 73 -374 b 73 -245 73 -260 73 -245 b 73 -245 73 -245 73 -245 b 55 -252 72 -245 63 -249 l 32 -260 b 19 -263 27 -262 23 -263 b 4 -256 13 -263 8 -260 b 0 -215 0 -251 0 -254 b 0 -199 0 -210 0 -206 l 0 -152 l 1 -149 b 8 -140 2 -145 5 -141 b 42 -127 9 -140 24 -133 l 73 -116 l 73 -5 b 73 23 73 4 73 15 b 73 105 73 70 73 105 b 49 97 73 105 61 101 b 17 88 32 91 23 88 b 4 95 10 88 8 91 b 0 137 0 101 0 98 b 0 151 0 141 0 145 l 0 199 l 1 202 b 43 224 5 212 5 212 l 73 234 l 73 367 l 73 502 l 74 505 b 85 514 77 509 81 513 ',\n },\n accidentalThreeQuarterTonesSharpStein: {\n x_min: -1.359375,\n x_max: 455.96875,\n ha: 465,\n o: 'm 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 ',\n },\n accidentalBuyukMucennebFlat: {\n x_min: -171.5,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalBakiyeFlat: {\n x_min: -176.9375,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalKomaSharp: {\n x_min: -1.359375,\n x_max: 455.96875,\n ha: 465,\n o: 'm 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 ',\n },\n accidentalKucukMucennebSharp: {\n x_min: -1.359375,\n x_max: 255.890625,\n ha: 261,\n o: 'm 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 ',\n },\n articAccentAbove: {\n x_min: -348.4375,\n x_max: 24.5,\n ha: 25,\n o: 'm -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 ',\n },\n articAccentBelow: {\n x_min: -348.4375,\n x_max: 24.5,\n ha: 25,\n o: 'm -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 ',\n },\n articTenutoAbove: {\n x_min: 0,\n x_max: 318.5,\n ha: 325,\n o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ',\n },\n articTenutoBelow: {\n x_min: 0,\n x_max: 318.5,\n ha: 325,\n o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ',\n },\n articStaccatoAbove: {\n x_min: 0,\n x_max: 133.390625,\n ha: 136,\n o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ',\n },\n articStaccatoBelow: {\n x_min: 0,\n x_max: 133.390625,\n ha: 136,\n o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ',\n },\n articStaccatissimoAbove: {\n x_min: -73.5,\n x_max: 72.140625,\n ha: 74,\n o: 'm -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 ',\n },\n articStaccatissimoBelow: {\n x_min: -73.5,\n x_max: 72.140625,\n ha: 74,\n o: 'm -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 ',\n },\n articMarcatoAbove: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 ',\n },\n articMarcatoBelow: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 ',\n },\n fermataAbove: {\n x_min: -442.359375,\n x_max: 441,\n ha: 450,\n o: 'm -31 487 b -1 488 -21 488 -10 488 b 434 104 216 488 397 330 b 441 27 438 79 441 47 b 439 12 441 20 439 15 b 419 0 435 4 427 0 b 404 5 413 0 408 1 b 398 30 400 11 398 13 b 0 351 390 213 213 351 b -59 348 -20 351 -39 349 b -400 30 -251 324 -393 191 b -405 5 -400 13 -401 11 b -420 0 -409 1 -415 0 b -441 12 -428 0 -436 4 b -442 27 -441 15 -442 20 b -435 104 -442 47 -439 79 b -31 487 -401 316 -235 474 m -13 131 b -1 133 -9 133 -5 133 b 51 105 19 133 39 123 b 61 70 58 95 61 83 b 51 34 61 58 58 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -57 38 -62 54 b -13 131 -62 98 -44 124 ',\n },\n fermataBelow: {\n x_min: -441,\n x_max: 439.640625,\n ha: 449,\n o: 'm -428 -2 b -421 0 -427 -1 -424 0 b -406 -6 -416 0 -409 -2 b -400 -31 -401 -12 -400 -15 b -1 -352 -392 -215 -215 -352 b 58 -349 19 -352 38 -351 b 398 -31 250 -326 392 -192 b 404 -6 398 -15 400 -12 b 419 -1 408 -2 413 -1 b 439 -13 427 -1 435 -5 b 439 -29 439 -16 439 -22 b 434 -105 439 -48 438 -80 b 0 -489 397 -333 213 -489 b -68 -484 -23 -489 -44 -488 b -441 -36 -280 -452 -436 -263 b -441 -30 -441 -34 -441 -31 b -428 -2 -441 -11 -439 -5 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -57 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ',\n },\n fermataLongAbove: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -378 502 l -374 503 l 0 503 l 372 503 l 377 502 b 387 491 381 499 385 496 l 389 488 l 389 251 l 389 15 l 387 12 b 367 0 383 4 375 0 b 348 12 360 0 352 4 l 347 15 l 347 174 l 347 335 l 0 335 l -348 335 l -348 174 l -348 15 l -349 12 b -368 0 -353 4 -362 0 b -389 12 -377 0 -385 4 l -390 15 l -390 251 l -390 488 l -389 491 b -378 502 -386 496 -382 499 m -13 131 b -1 133 -9 133 -5 133 b 50 105 19 133 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -58 38 -62 55 b -13 131 -62 98 -44 124 ',\n },\n fermataLongBelow: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -378 -2 b -368 -1 -375 -1 -374 -1 b -349 -13 -360 -1 -353 -5 l -348 -16 l -348 -176 l -348 -337 l 0 -337 l 347 -337 l 347 -176 l 347 -16 l 348 -13 b 367 0 352 -5 360 0 b 387 -13 375 0 383 -5 l 389 -16 l 389 -252 l 389 -489 l 387 -492 b 377 -503 385 -498 381 -501 l 372 -505 l 0 -505 l -374 -505 l -378 -503 b -389 -492 -382 -501 -386 -498 l -390 -489 l -390 -252 l -390 -16 l -389 -13 b -378 -2 -386 -8 -382 -4 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -58 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ',\n },\n fermataVeryLongAbove: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -378 573 l -374 576 l 0 576 l 372 576 l 377 573 b 387 563 381 571 385 567 l 389 559 l 389 287 l 389 15 l 387 12 b 367 0 383 4 375 0 b 348 12 360 0 352 4 l 347 15 l 347 210 l 347 406 l 0 406 l -348 406 l -348 210 l -348 15 l -349 12 b -368 0 -353 4 -362 0 b -389 12 -377 0 -385 4 l -390 15 l -390 287 l -390 559 l -389 563 b -378 573 -386 567 -382 571 m -274 337 l -270 338 l 0 338 l 269 338 l 273 337 b 284 326 279 334 281 330 l 285 323 l 285 169 l 285 15 l 284 12 b 265 -1 280 4 272 -1 b 245 12 257 -1 249 4 l 245 15 l 243 108 l 243 201 l 0 201 l -245 201 l -245 108 l -245 15 l -246 12 b -266 -1 -250 4 -258 -1 b -285 12 -273 -1 -281 4 l -287 15 l -287 169 l -287 323 l -285 326 b -274 337 -283 330 -280 334 m -13 131 b -1 133 -9 133 -5 133 b 50 105 19 133 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -58 38 -62 55 b -13 131 -62 98 -44 124 ',\n },\n fermataVeryLongBelow: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -378 -2 b -368 -1 -375 -1 -374 -1 b -349 -13 -360 -1 -353 -5 l -348 -16 l -348 -212 l -348 -408 l 0 -408 l 347 -408 l 347 -212 l 347 -16 l 348 -13 b 367 0 352 -5 360 0 b 387 -13 375 0 383 -5 l 389 -16 l 389 -288 l 389 -560 l 387 -564 b 377 -574 385 -569 381 -573 l 372 -577 l 0 -577 l -374 -577 l -378 -574 b -389 -564 -382 -573 -386 -569 l -390 -560 l -390 -288 l -390 -16 l -389 -13 b -378 -2 -386 -8 -382 -4 m -274 -2 b -266 -1 -272 -1 -270 -1 b -246 -13 -257 -1 -250 -5 l -245 -16 l -245 -109 l -245 -202 l 0 -202 l 243 -202 l 243 -109 l 245 -16 l 245 -13 b 265 0 249 -5 257 0 b 284 -13 272 0 280 -5 l 285 -16 l 285 -170 l 285 -324 l 284 -327 b 273 -338 281 -331 279 -335 l 269 -340 l 0 -340 l -270 -340 l -274 -338 b -285 -327 -280 -335 -283 -331 l -287 -324 l -287 -170 l -287 -16 l -285 -13 b -274 -2 -283 -8 -280 -4 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -58 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ',\n },\n fermataShortAbove: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -9 650 b -1 652 -6 650 -4 652 b 19 639 6 652 13 648 l 23 631 b 28 623 24 628 27 626 l 34 614 l 39 606 l 43 598 l 49 588 l 54 580 l 59 571 l 65 563 l 69 555 l 74 546 l 80 537 l 85 528 b 89 520 87 526 89 523 l 95 512 l 100 503 l 106 494 l 111 487 l 115 478 l 121 470 l 126 462 l 130 453 l 136 445 l 141 437 l 147 427 l 151 419 l 156 410 l 161 402 l 167 394 l 172 385 l 176 376 b 182 367 179 374 181 370 l 187 359 l 193 351 l 198 342 l 202 334 l 208 326 l 212 317 l 217 309 l 223 301 l 228 292 l 234 284 l 238 274 l 243 266 l 249 258 l 254 249 l 259 241 l 264 233 l 269 224 b 274 216 270 222 273 217 l 280 206 l 285 198 l 295 180 l 299 174 l 304 165 l 310 156 l 315 148 l 321 140 l 325 131 l 330 123 l 336 113 l 341 105 l 347 97 l 351 88 l 356 80 l 360 72 b 364 66 362 70 363 68 b 370 58 366 65 368 61 l 379 41 b 389 19 386 31 389 24 b 382 4 389 13 386 8 b 347 0 377 0 378 0 b 337 0 344 0 340 0 b 336 0 336 0 336 0 b 287 11 294 0 294 0 l 281 19 l 276 27 l 272 37 l 266 45 l 261 54 l 255 62 l 250 70 l 246 79 l 240 87 l 235 97 l 230 105 l 224 113 l 220 122 l 215 130 l 209 140 l 204 148 l 200 155 l 194 163 b 189 172 193 165 191 169 l 185 180 l 179 188 l 174 198 l 168 206 l 163 215 l 159 223 l 153 231 l 148 240 l 142 249 l 138 258 l 133 266 l 127 274 l 122 283 l 117 292 l 111 301 l 107 308 l 102 316 b 98 324 102 317 99 322 l 92 333 l 87 341 l 81 349 l 77 359 l 72 367 l 66 376 l 61 384 l 55 392 l 51 401 l 46 410 l 40 419 l 35 427 l 31 435 l 24 444 l 20 453 l 14 460 l 10 469 b 5 477 9 470 6 474 l 0 485 l -5 494 l -9 502 l -14 512 b -20 519 -16 513 -19 517 l -24 526 l -28 534 b -31 537 -29 535 -31 537 b -35 533 -32 537 -32 535 l -88 444 l -187 280 l -285 117 l -343 23 b -362 1 -352 6 -356 2 b -368 0 -364 0 -367 0 b -390 20 -381 0 -390 8 l -390 20 b -359 77 -390 27 -390 27 l -80 539 l -25 631 b -9 650 -17 644 -13 648 m -13 133 b -1 134 -9 133 -5 134 b 50 105 19 134 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 70 -57 40 -62 55 b -13 133 -62 98 -44 126 ',\n },\n fermataShortBelow: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -377 -1 b -368 0 -375 -1 -372 0 b -362 -1 -366 0 -363 -1 b -343 -24 -356 -4 -352 -8 l -285 -119 l -187 -280 l -88 -444 l -35 -533 b -31 -538 -32 -537 -32 -538 b -28 -534 -31 -538 -29 -537 l -23 -526 l -19 -517 l -13 -509 l -8 -501 l -2 -492 l 2 -483 l 6 -476 l 17 -458 l 23 -449 l 32 -433 l 38 -424 l 42 -416 l 47 -408 l 53 -399 l 58 -391 l 63 -381 l 68 -373 l 73 -365 l 78 -356 l 84 -348 l 89 -340 l 93 -330 l 99 -322 l 104 -315 l 114 -297 l 125 -280 l 129 -272 l 134 -263 l 140 -255 l 145 -247 l 151 -238 l 155 -230 l 160 -220 l 166 -212 l 171 -204 l 176 -195 l 181 -187 l 186 -177 l 191 -169 l 196 -162 l 201 -154 l 206 -144 l 217 -127 l 221 -119 l 227 -111 l 232 -102 l 238 -94 l 242 -86 l 247 -77 l 253 -69 l 258 -59 l 262 -51 l 268 -43 l 273 -34 l 279 -26 l 283 -18 b 321 -1 292 -2 292 -1 b 338 -1 326 -1 332 -1 b 382 -6 378 -1 375 -1 b 389 -20 386 -9 389 -15 b 382 -38 389 -26 386 -31 l 378 -47 l 372 -55 l 367 -63 l 362 -72 l 356 -80 l 351 -90 l 347 -98 l 341 -106 l 336 -115 l 330 -123 l 325 -131 l 321 -141 l 315 -149 l 310 -158 l 304 -166 l 299 -174 b 295 -183 298 -177 296 -181 l 289 -191 l 285 -199 l 280 -208 l 274 -216 l 269 -224 l 264 -233 l 259 -242 l 254 -251 l 249 -259 l 243 -267 l 238 -276 l 234 -284 l 228 -292 l 223 -302 l 217 -310 l 213 -319 l 208 -327 b 202 -335 206 -330 204 -334 l 197 -344 l 193 -351 l 187 -360 l 182 -369 l 176 -377 l 172 -385 l 167 -394 l 161 -403 l 156 -412 l 152 -420 l 147 -428 l 141 -437 l 136 -445 l 130 -455 l 126 -463 l 121 -471 l 115 -480 b 110 -488 114 -483 111 -487 l 106 -496 l 100 -503 l 96 -512 l 89 -521 l 85 -530 l 80 -538 l 74 -546 l 69 -555 l 65 -564 l 59 -573 l 54 -581 l 49 -589 l 43 -598 l 39 -606 l 34 -616 l 28 -624 l 23 -632 b 19 -641 21 -635 20 -638 b 0 -653 14 -649 8 -653 b -25 -631 -10 -653 -14 -649 l -80 -541 l -359 -79 b -389 -29 -375 -52 -389 -30 b -390 -22 -389 -26 -390 -24 b -377 -1 -390 -13 -385 -5 m -13 -9 b -1 -8 -9 -8 -5 -8 b 51 -36 19 -8 39 -19 b 61 -72 58 -47 61 -59 b 51 -106 61 -84 58 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -127 b -62 -72 -57 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ',\n },\n breathMarkComma: {\n x_min: -1.359375,\n x_max: 193.28125,\n ha: 197,\n o: 'm 78 233 b 87 233 81 233 84 233 b 187 140 132 233 174 195 b 193 102 190 127 193 115 b 43 -113 193 22 136 -62 b 27 -119 36 -116 31 -119 b 19 -108 21 -119 19 -115 b 29 -97 19 -102 20 -101 b 102 13 73 -72 102 -27 b 92 51 102 26 98 40 l 91 54 l 84 54 b 8 104 53 54 21 74 b -1 142 1 116 -1 130 b 78 233 -1 187 31 227 ',\n },\n breathMarkUpbow: {\n x_min: -170.140625,\n x_max: 168.78125,\n ha: 172,\n o: 'm -160 567 b -122 567 -159 567 -149 567 l -87 567 l -84 566 b -74 553 -78 563 -77 560 b -20 366 -73 551 -49 466 b 31 186 8 267 31 186 b 85 371 31 186 55 269 b 140 559 114 473 138 557 b 153 567 141 564 148 567 b 168 559 159 567 166 564 b 168 555 168 557 168 557 b 92 281 168 548 159 513 b 14 13 50 134 14 13 b 0 0 14 6 6 0 b -17 15 -8 0 -17 8 b -93 283 -17 15 -51 136 b -170 552 -166 533 -170 548 b -170 553 -170 552 -170 552 b -160 567 -170 560 -167 564 ',\n },\n caesura: {\n x_min: 0,\n x_max: 622.03125,\n ha: 635,\n o: 'm 398 417 b 406 419 401 419 404 419 b 427 398 417 419 427 409 b 427 391 427 395 427 392 b 34 -274 424 385 38 -272 b 20 -280 29 -278 25 -280 b 0 -259 9 -280 0 -270 b 0 -252 0 -256 0 -254 b 393 413 2 -247 389 410 b 398 417 394 415 397 416 m 592 417 b 600 419 594 419 597 419 b 622 398 611 419 622 409 b 620 391 622 395 620 392 b 227 -274 617 385 231 -272 b 213 -280 223 -278 219 -280 b 193 -259 202 -280 193 -270 b 194 -252 193 -256 193 -254 b 586 413 196 -247 582 410 b 592 417 588 415 590 416 ',\n },\n caesuraCurved: {\n x_min: 0,\n x_max: 503.609375,\n ha: 514,\n o: 'm 274 430 b 277 430 276 430 277 430 b 310 394 296 430 310 415 b 308 383 310 391 308 387 b 306 367 307 381 307 374 b 236 120 298 305 272 210 b 40 -273 189 -5 125 -134 b 20 -287 35 -283 27 -287 b 5 -281 14 -287 9 -285 b 0 -267 1 -277 0 -273 b 9 -242 0 -262 2 -255 b 246 395 137 -12 232 242 b 274 430 249 416 257 427 m 468 430 b 472 430 469 430 470 430 b 503 394 490 430 503 415 b 502 383 503 391 503 387 b 499 367 502 381 500 374 b 431 120 491 305 465 210 b 234 -273 382 -5 318 -134 b 213 -287 228 -283 220 -287 b 198 -281 208 -287 202 -285 b 193 -267 194 -277 193 -273 b 202 -242 193 -262 196 -255 b 439 395 330 -12 426 242 b 468 430 442 416 451 427 ',\n },\n restMaxima: {\n x_min: 0,\n x_max: 464.140625,\n ha: 474,\n o: 'm 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 ',\n },\n restDoubleWhole: {\n x_min: 0,\n x_max: 386.5625,\n ha: 394,\n o: 'm 0 173 l 0 347 l 193 347 l 386 347 l 386 173 l 386 0 l 193 0 l 0 0 l 0 173 ',\n },\n restWhole: {\n x_min: 0,\n x_max: 447.8125,\n ha: 457,\n o: 'm 0 -87 l 0 0 l 223 0 l 447 0 l 447 -87 l 447 -174 l 223 -174 l 0 -174 l 0 -87 ',\n },\n restWholeLegerLine: {\n x_min: 0,\n x_max: 737.71875,\n ha: 753,\n o: 'm 9 13 b 208 15 10 15 51 15 b 368 15 251 15 304 15 l 726 15 l 729 12 b 737 -1 735 9 737 4 b 729 -15 737 -6 735 -11 l 726 -16 l 660 -16 l 592 -16 l 592 -95 l 592 -174 l 368 -174 l 144 -174 l 144 -95 l 144 -16 l 77 -16 l 9 -16 l 6 -15 b 0 -1 1 -11 0 -6 b 9 13 0 5 2 11 ',\n },\n restHalf: {\n x_min: 0,\n x_max: 447.8125,\n ha: 457,\n o: 'm 0 86 l 0 173 l 223 173 l 447 173 l 447 86 l 447 0 l 223 0 l 0 0 l 0 86 ',\n },\n restHalfLegerLine: {\n x_min: 0,\n x_max: 737.71875,\n ha: 753,\n o: 'm 144 94 l 144 173 l 368 173 l 592 173 l 592 94 l 592 15 l 660 15 l 726 15 l 729 12 b 737 -1 735 9 737 4 b 729 -15 737 -6 735 -11 l 726 -16 l 368 -16 l 9 -16 l 6 -15 b 0 -1 1 -11 0 -6 b 6 12 0 4 1 9 l 9 15 l 77 15 l 144 15 l 144 94 ',\n },\n restQuarter: {\n x_min: 0,\n x_max: 300.8125,\n ha: 307,\n o: 'm 49 505 b 53 506 50 505 51 506 b 70 496 58 506 62 503 b 81 485 73 492 78 488 l 96 473 l 111 459 l 122 449 l 134 438 l 182 396 l 255 330 b 292 291 292 298 292 298 l 292 290 l 292 284 l 283 270 b 209 36 234 197 209 113 b 288 -170 209 -44 235 -119 b 299 -184 295 -179 299 -181 b 300 -191 300 -187 300 -188 b 285 -206 300 -199 294 -206 b 280 -206 283 -206 281 -206 b 247 -201 270 -202 259 -201 b 176 -222 223 -201 197 -208 b 114 -340 136 -249 114 -292 b 172 -471 114 -384 134 -433 b 185 -492 182 -481 185 -487 b 181 -502 185 -496 183 -499 b 171 -508 176 -505 174 -508 b 152 -498 166 -508 160 -503 b 0 -284 65 -428 12 -352 b 0 -260 0 -278 0 -270 b 1 -238 0 -252 0 -242 b 148 -140 16 -177 73 -140 b 209 -148 167 -140 189 -142 b 215 -149 212 -148 215 -149 b 215 -149 215 -149 215 -149 l 215 -149 b 201 -136 215 -148 209 -142 l 157 -97 l 96 -41 b 17 34 21 24 17 29 b 17 37 17 36 17 36 b 17 38 17 37 17 38 b 25 56 17 44 17 44 b 110 298 81 131 110 219 b 46 474 110 367 88 431 b 38 491 40 480 38 487 b 49 505 38 498 42 502 ',\n },\n rest8th: {\n x_min: 0,\n x_max: 349.8125,\n ha: 357,\n o: 'm 88 302 b 103 303 93 302 98 303 b 202 224 149 303 191 270 b 205 199 204 216 205 208 b 178 129 205 173 196 147 l 175 126 l 182 127 b 307 249 236 142 284 190 b 313 259 308 254 311 258 b 329 267 317 265 323 267 b 349 247 340 267 349 259 b 201 -263 349 242 204 -258 b 182 -273 197 -270 190 -273 b 163 -260 174 -273 166 -269 b 161 -256 161 -259 161 -258 b 217 -59 161 -248 170 -220 b 272 129 247 43 272 127 b 272 129 272 129 272 129 b 264 122 272 129 268 126 b 140 80 227 94 183 80 b 36 115 102 80 65 91 b 0 194 10 136 0 165 b 88 302 0 244 32 292 ',\n },\n rest16th: {\n x_min: 0,\n x_max: 450.53125,\n ha: 460,\n o: 'm 189 302 b 204 303 193 302 198 303 b 303 224 250 303 292 270 b 306 199 304 216 306 208 b 279 129 306 173 296 147 l 276 126 l 281 127 b 408 249 337 142 385 190 b 412 259 409 254 412 258 b 430 267 417 265 423 267 b 450 247 441 267 450 259 b 200 -605 450 242 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 194 111 136 99 165 b 189 302 99 244 133 292 ',\n },\n rest32nd: {\n x_min: 0,\n x_max: 551.25,\n ha: 563,\n o: 'm 289 644 b 304 645 294 645 299 645 b 404 566 349 645 392 613 b 406 541 405 557 406 549 b 379 471 406 514 397 489 l 377 467 l 382 470 b 509 591 438 485 485 531 b 513 601 510 595 513 599 b 530 609 518 607 524 609 b 551 588 540 609 551 602 b 200 -605 551 584 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 195 112 136 99 165 b 118 256 99 217 106 238 b 204 303 138 287 171 303 b 292 249 238 303 273 285 b 306 199 302 234 306 217 b 279 129 306 173 296 148 l 276 126 l 281 127 b 408 248 336 142 385 190 b 473 470 409 254 473 469 b 473 470 473 470 473 470 b 465 464 473 470 469 467 b 341 421 428 435 383 421 b 236 458 303 421 266 433 b 200 537 212 478 200 508 b 289 644 200 585 234 635 ',\n },\n rest64th: {\n x_min: -1.359375,\n x_max: 651.96875,\n ha: 665,\n o: 'm 389 644 b 405 645 394 645 400 645 b 504 566 450 645 492 613 b 507 541 506 557 507 549 b 480 471 507 514 498 489 l 477 467 l 483 470 b 609 591 539 485 586 531 b 613 601 611 595 613 599 b 631 609 619 607 624 609 b 651 588 641 609 651 602 b 200 -946 651 584 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 537 313 478 300 508 b 389 644 300 585 334 635 ',\n },\n rest128th: {\n x_min: -1.359375,\n x_max: 752.703125,\n ha: 768,\n o: 'm 490 985 b 504 986 495 986 500 986 b 604 907 551 986 593 954 b 607 884 607 900 607 892 b 581 813 607 857 597 831 l 578 810 l 583 811 b 710 932 638 827 687 873 b 714 943 711 936 713 942 b 730 952 720 949 725 952 b 752 931 741 952 752 943 b 200 -946 752 927 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 538 314 477 300 508 b 318 598 300 559 306 580 b 404 645 340 630 372 645 b 494 592 439 645 475 627 b 507 541 502 577 507 559 b 480 471 507 516 498 489 l 477 467 l 483 470 b 608 589 537 485 586 531 b 675 811 611 595 675 810 b 675 811 675 811 675 811 b 666 806 675 811 671 809 b 543 763 628 777 585 763 b 438 799 504 763 468 775 b 401 878 412 820 401 849 b 490 985 401 928 434 977 ',\n },\n dynamicPiano: {\n x_min: -53.078125,\n x_max: 513.140625,\n ha: 485,\n o: 'm 185 383 b 196 384 187 383 191 384 b 277 334 230 384 259 365 b 288 301 281 324 288 306 b 288 297 288 298 288 297 b 294 302 289 297 291 299 b 394 370 323 338 367 367 b 404 371 398 370 401 371 b 510 272 453 371 498 328 b 513 237 513 262 513 251 b 507 172 513 217 511 192 b 326 -34 487 59 412 -26 b 314 -36 322 -36 318 -36 b 274 -24 298 -36 283 -31 l 265 -16 b 224 44 246 -1 232 20 b 223 49 224 47 223 49 b 223 49 223 49 223 49 b 149 -197 221 48 149 -194 b 149 -198 149 -197 149 -198 b 170 -210 149 -202 155 -205 b 187 -215 174 -210 175 -212 b 204 -231 201 -219 204 -222 b 197 -245 204 -240 202 -242 l 194 -248 l 76 -248 l -42 -248 l -46 -245 b -53 -231 -51 -242 -53 -240 b -35 -215 -53 -222 -49 -217 b -13 -210 -21 -212 -20 -212 b -6 -208 -10 -209 -8 -208 b 0 -206 -6 -208 -2 -206 b 25 -188 13 -201 21 -195 b 163 280 28 -183 163 276 b 166 291 163 283 164 287 b 167 302 167 295 167 299 b 155 324 167 315 161 324 b 155 324 155 324 155 324 b 65 230 125 322 85 280 b 53 215 61 217 58 215 b 51 215 53 215 51 215 b 42 224 46 215 42 217 b 57 263 42 231 47 244 b 140 360 77 305 104 337 b 152 370 144 365 149 369 b 185 383 157 376 172 381 m 374 306 b 366 308 371 308 368 308 b 300 273 348 308 321 294 b 284 254 288 262 287 259 b 280 242 283 249 281 245 b 257 169 279 240 270 213 l 236 98 l 236 93 b 251 48 238 77 243 61 b 279 27 258 37 272 27 b 281 27 279 27 280 27 b 291 31 281 27 287 30 b 396 170 334 52 378 109 b 406 247 402 197 406 224 b 401 277 406 259 405 270 b 374 306 397 290 383 303 ',\n },\n dynamicMezzo: {\n x_min: 46.28125,\n x_max: 669.671875,\n ha: 563,\n o: 'm 183 376 b 189 376 185 376 187 376 b 212 374 197 376 208 376 b 265 337 234 369 253 355 b 274 317 268 331 273 320 b 274 316 274 317 274 316 b 280 323 276 316 276 319 b 311 358 288 337 299 348 b 319 366 315 360 318 365 b 356 376 326 373 340 376 b 382 371 364 376 374 374 b 428 337 400 366 417 352 b 436 317 431 331 436 320 b 438 316 436 317 436 316 b 442 323 438 316 439 319 b 475 358 451 337 462 348 b 483 366 477 360 481 365 b 518 376 488 373 503 376 b 544 373 528 376 536 376 b 604 285 579 360 604 326 b 597 249 604 273 601 258 b 543 63 596 247 544 70 b 541 54 543 61 541 55 b 540 44 540 51 540 47 b 552 23 540 33 545 23 b 552 23 552 23 552 23 b 647 126 586 29 627 72 b 658 138 651 136 653 138 b 660 138 660 138 660 138 b 669 129 666 137 669 136 b 654 88 669 122 665 109 b 562 -12 631 43 602 9 l 549 -19 b 521 -27 540 -24 530 -27 b 447 30 490 -27 458 -4 b 443 58 445 38 443 48 b 450 93 443 72 446 84 b 504 278 453 97 504 272 b 507 288 506 283 506 287 b 509 298 507 292 509 295 b 491 326 509 310 502 320 b 487 327 490 327 488 327 b 479 324 484 327 483 326 b 441 270 462 316 443 288 b 435 249 441 265 436 254 b 398 127 434 248 419 195 b 362 4 379 61 362 5 b 328 -1 359 -1 362 -1 b 314 -1 323 -1 319 -1 b 302 -1 310 -1 306 -1 b 266 4 266 -1 269 -1 b 265 6 265 5 265 5 b 303 144 265 13 272 34 b 343 278 325 216 343 276 b 344 288 343 281 344 285 b 345 298 345 291 345 295 b 330 326 345 310 340 320 b 323 327 328 327 325 327 b 317 324 322 327 321 326 b 279 270 300 316 281 288 b 273 249 279 265 274 254 b 236 127 272 248 255 195 b 200 4 216 61 200 5 b 164 -1 197 -1 198 -1 b 151 -1 161 -1 156 -1 b 140 -1 147 -1 142 -1 b 103 4 104 -1 106 -1 b 103 6 103 5 103 5 b 141 144 103 13 108 34 b 181 278 161 216 179 276 b 182 288 181 281 181 285 b 183 298 182 291 183 295 b 168 324 183 310 178 320 b 160 327 166 326 163 327 b 141 320 156 327 151 324 b 69 230 112 305 85 272 b 57 215 65 217 62 215 b 55 215 57 215 55 215 b 46 224 49 215 46 217 b 59 260 46 231 50 242 b 151 363 81 306 112 341 b 161 369 155 365 160 367 b 183 376 166 371 174 374 ',\n },\n dynamicForte: {\n x_min: -118.421875,\n x_max: 597.53125,\n ha: 381,\n o: 'm 460 574 b 464 574 461 574 462 574 b 488 574 470 574 481 574 b 500 573 491 574 498 574 b 594 503 543 570 588 538 b 597 488 596 498 597 494 b 528 417 597 449 564 417 b 502 423 519 417 510 419 b 465 481 477 434 465 458 b 488 528 465 499 472 516 b 490 530 490 530 490 530 b 490 530 490 530 490 530 b 468 517 488 530 475 523 b 349 340 419 485 377 420 b 347 330 348 334 347 330 b 383 328 347 328 363 328 b 428 326 423 328 424 328 b 442 302 438 320 442 312 b 430 281 442 294 438 285 b 385 276 424 277 426 276 l 377 276 l 332 276 l 330 269 b 178 -117 303 126 250 -9 b 1 -249 129 -194 69 -237 b -20 -251 -6 -251 -13 -251 b -114 -187 -65 -251 -100 -227 b -118 -156 -117 -177 -118 -166 b -51 -84 -118 -116 -91 -84 b -31 -87 -46 -84 -39 -86 b 16 -152 0 -95 16 -124 b -12 -205 16 -173 8 -194 b -16 -208 -14 -206 -16 -208 b -14 -208 -16 -208 -14 -208 b -9 -206 -14 -208 -12 -208 b 74 -124 23 -197 54 -166 b 172 224 98 -79 125 22 b 185 276 178 252 183 274 b 185 276 185 276 185 276 b 141 276 185 276 181 276 b 91 280 96 276 96 276 b 77 302 83 285 77 294 b 91 326 77 312 83 320 b 148 328 95 328 96 328 l 198 330 l 202 341 b 460 574 249 473 351 566 ',\n },\n dynamicRinforzando: {\n x_min: 78.9375,\n x_max: 485.921875,\n ha: 417,\n o: 'm 362 378 b 378 380 367 380 372 380 b 472 348 415 380 453 367 b 485 315 481 338 485 327 b 462 273 485 298 477 281 b 439 267 454 269 446 267 b 398 290 424 267 409 274 b 344 319 385 309 364 319 b 281 269 315 319 289 301 b 279 262 280 266 279 262 b 276 256 279 260 277 258 b 274 249 276 254 274 251 b 238 127 273 248 257 192 b 201 4 217 61 201 5 b 166 -1 198 -1 200 -1 b 153 -1 163 -1 157 -1 b 141 -1 148 -1 144 -1 b 104 4 106 -1 107 -1 b 104 6 104 5 104 5 b 142 144 104 13 110 34 b 182 278 164 219 181 276 b 183 288 182 281 182 285 b 185 302 185 292 185 298 b 164 330 185 317 176 328 b 159 330 163 330 161 330 b 102 302 140 330 119 320 b 91 294 95 295 93 294 b 88 294 91 294 89 294 b 78 303 83 294 78 298 b 81 312 78 306 78 309 b 200 373 106 347 160 373 b 215 371 205 373 209 371 b 266 335 235 367 254 353 b 269 331 268 333 269 331 b 269 331 269 331 269 331 b 273 335 269 331 270 334 b 362 378 298 359 330 376 ',\n },\n dynamicSforzando: {\n x_min: 70.78125,\n x_max: 378.390625,\n ha: 315,\n o: 'm 246 373 b 254 373 249 373 251 373 b 372 324 303 373 360 351 b 378 302 377 317 378 309 b 338 251 378 278 362 255 b 328 249 334 249 332 249 b 283 294 303 249 283 270 b 288 315 283 301 284 308 b 289 319 289 317 289 319 b 289 319 289 319 289 319 b 283 320 289 320 287 320 b 270 322 279 322 274 322 b 206 288 242 322 215 308 b 206 283 206 287 206 285 b 257 223 206 267 230 238 b 284 206 272 213 277 210 b 351 90 328 173 351 130 b 340 47 351 74 348 59 b 205 -30 314 -2 264 -30 b 182 -29 198 -30 190 -30 b 84 15 147 -24 103 -5 b 70 48 74 24 70 36 b 108 99 70 70 85 94 b 121 102 112 101 117 102 b 167 56 147 102 167 80 b 159 31 167 48 164 40 l 156 26 l 157 26 b 190 20 167 22 178 20 b 220 26 201 20 212 22 b 258 65 243 34 258 51 b 257 70 258 66 258 69 b 204 126 249 94 234 109 b 114 258 148 158 114 209 b 125 302 114 273 118 288 b 246 373 147 342 193 370 ',\n },\n dynamicZ: {\n x_min: 29.9375,\n x_max: 420.578125,\n ha: 371,\n o: 'm 115 345 b 221 347 117 345 166 347 b 411 345 306 347 409 345 b 420 330 416 342 420 335 b 415 319 420 326 419 321 b 178 118 397 303 179 118 b 178 117 178 118 178 117 b 181 117 178 117 178 117 b 189 117 182 117 185 117 b 193 117 190 117 191 117 b 247 98 215 117 232 111 b 296 75 266 83 280 76 b 302 75 299 75 300 75 b 322 91 311 75 315 79 b 322 91 322 91 322 91 b 322 91 322 91 322 91 b 319 91 322 91 321 91 b 313 90 318 90 315 90 b 283 107 300 90 288 97 b 277 126 279 114 277 121 b 319 167 277 149 295 167 b 319 167 319 167 319 167 b 362 118 347 167 362 147 b 355 82 362 108 359 96 b 311 33 349 65 340 55 b 224 1 284 12 253 1 b 194 5 213 1 204 2 b 168 18 183 8 178 11 b 110 36 151 30 130 36 b 57 15 88 36 68 29 b 47 11 54 12 51 11 b 31 20 40 11 34 13 b 29 26 31 22 29 25 b 68 66 29 36 39 45 b 285 250 73 71 281 248 b 285 250 285 250 285 250 b 231 252 285 252 261 252 b 137 250 190 252 141 250 b 93 227 122 248 110 241 b 78 220 88 222 83 220 b 66 227 74 220 70 222 b 63 234 65 229 63 231 b 85 291 63 241 69 252 b 115 345 108 342 108 344 ',\n },\n ornamentTrill: {\n x_min: -340.28125,\n x_max: 338.921875,\n ha: 346,\n o: 'm -32 520 b -29 521 -31 520 -31 521 b -23 519 -27 521 -24 520 b -20 513 -21 517 -20 516 b -21 506 -20 512 -20 509 b -31 474 -23 502 -27 488 l -53 402 l -66 352 l -68 349 l -57 349 b -32 351 -51 349 -40 351 b 123 370 19 352 74 359 b 137 371 127 370 133 371 b 170 356 152 371 164 366 b 171 355 170 355 170 355 b 216 366 174 355 183 358 b 280 378 268 377 266 377 b 287 378 283 378 284 378 b 332 349 307 378 322 369 b 338 319 336 341 338 330 b 332 301 338 310 336 302 b 242 280 329 299 246 280 b 242 280 242 280 242 280 b 235 288 236 280 235 283 b 235 292 235 290 235 291 b 236 302 236 297 236 299 b 220 337 236 316 230 330 l 216 340 l 210 335 b 159 276 189 322 172 301 b 118 149 152 265 156 274 b 81 34 84 36 85 36 b -8 13 78 33 -4 13 b -8 13 -8 13 -8 13 b -14 20 -12 15 -14 15 b -8 44 -14 24 -12 31 b -2 66 -5 55 -2 65 b -2 66 -2 66 -2 66 l -2 66 b -43 41 -2 66 -21 55 b -114 4 -98 8 -98 8 b -144 0 -123 0 -134 0 b -242 99 -197 0 -242 43 b -242 109 -242 102 -242 105 b -212 219 -240 122 -242 116 b -185 312 -197 270 -185 312 l -185 312 b -189 312 -185 312 -186 312 b -259 312 -200 312 -227 312 b -321 310 -291 312 -310 310 b -334 312 -330 310 -334 312 b -340 319 -338 313 -340 316 b -336 326 -340 322 -338 324 b -291 337 -334 326 -314 331 l -247 347 l -210 348 b -172 348 -190 348 -172 348 b -168 363 -172 348 -171 355 b -145 442 -151 424 -145 441 b -133 452 -144 444 -140 446 l -77 489 b -32 520 -53 506 -32 520 m 57 334 b 53 335 55 335 54 335 b 44 334 50 335 49 335 b -70 316 8 326 -28 320 b -78 309 -78 316 -78 316 b -108 202 -80 305 -88 274 b -141 81 -136 112 -141 93 b -140 74 -141 79 -141 77 b -117 49 -137 59 -127 49 b -107 52 -114 49 -110 51 b 16 127 -106 54 14 126 b 42 217 16 127 42 215 b 49 241 42 222 44 229 b 73 320 53 251 73 317 b 57 334 73 327 65 333 ',\n },\n ornamentTurn: {\n x_min: -423.3125,\n x_max: 421.9375,\n ha: 431,\n o: 'm -262 197 b -247 197 -257 197 -253 197 b -118 162 -210 197 -163 184 b 40 45 -61 134 -13 98 b 277 -95 119 -33 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -55 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 201 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 136 b 421 22 421 37 421 29 b 245 -199 421 -93 338 -199 b 238 -198 243 -199 240 -199 b -44 -47 148 -194 50 -141 b -250 86 -114 22 -183 66 b -295 94 -270 91 -283 94 b -315 91 -302 94 -307 94 b -381 4 -356 81 -381 43 b -355 -56 -381 -18 -372 -40 b -298 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -178 -69 -200 -58 -189 -62 b -151 -122 -160 -81 -151 -101 b -171 -167 -151 -138 -157 -155 b -239 -195 -185 -181 -213 -192 b -257 -197 -245 -197 -250 -197 b -423 -5 -352 -197 -423 -109 b -412 65 -423 16 -419 40 b -262 197 -389 137 -329 188 ',\n },\n ornamentTurnSlash: {\n x_min: -423.3125,\n x_max: 421.9375,\n ha: 431,\n o: 'm -10 276 b -2 277 -8 277 -5 277 b 17 265 5 277 13 273 b 19 163 19 260 19 260 l 19 68 l 39 45 b 277 -95 122 -34 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -54 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 200 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 137 b 421 22 421 37 421 29 b 257 -198 421 -86 347 -188 b 242 -198 251 -198 247 -198 b 20 -105 181 -198 95 -163 l 19 -104 l 19 -183 b 19 -216 19 -195 19 -206 b 12 -273 19 -272 17 -267 b -2 -278 8 -277 2 -278 b -21 -266 -10 -278 -19 -274 b -23 -165 -23 -263 -23 -262 l -23 -69 l -44 -47 b -250 86 -117 23 -183 66 b -295 94 -270 93 -284 94 b -315 91 -302 94 -308 94 b -381 5 -356 81 -381 43 b -355 -56 -381 -16 -372 -40 b -299 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -168 -77 -196 -58 -179 -65 b -151 -122 -156 -90 -151 -105 b -179 -174 -151 -141 -160 -162 b -239 -195 -194 -184 -217 -192 b -257 -197 -245 -195 -250 -197 b -423 -5 -349 -197 -423 -113 b -423 0 -423 -4 -423 -1 b -277 194 -420 97 -362 173 b -247 197 -268 197 -258 197 b -24 104 -185 197 -100 162 l -23 102 l -23 181 b -21 265 -23 260 -23 260 b -10 276 -20 269 -14 274 ',\n },\n ornamentMordent: {\n x_min: -402.890625,\n x_max: 401.53125,\n ha: 410,\n o: 'm -10 273 b -4 274 -9 273 -6 274 b 16 262 4 274 12 269 b 17 158 17 259 17 259 l 17 56 l 62 112 b 117 174 110 172 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b 21 -6 27 0 24 -2 l 17 -12 l 17 -147 b 17 -210 17 -173 17 -194 b 10 -292 17 -297 16 -287 b -2 -299 6 -297 2 -299 b -21 -287 -10 -299 -19 -295 b -24 -174 -23 -284 -23 -284 l -24 -63 l -66 -117 b -121 -176 -110 -170 -114 -176 b -125 -176 -122 -176 -123 -176 b -296 -12 -134 -174 -125 -184 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 170 -398 -43 -231 165 b -212 174 -221 173 -216 174 b -202 173 -208 174 -205 174 b -39 11 -200 172 -151 122 l -28 -1 l -25 1 l -24 4 l -24 130 b -23 260 -24 256 -24 258 b -10 273 -20 266 -16 270 ',\n },\n ornamentShortTrill: {\n x_min: -402.890625,\n x_max: 401.53125,\n ha: 410,\n o: 'm -219 173 b -213 174 -217 174 -215 174 b -202 173 -209 174 -205 173 b -114 86 -200 172 -179 151 b -28 0 -66 37 -28 0 b 40 84 -28 0 2 37 b 117 174 111 173 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b -42 -86 27 0 -4 -38 b -118 -174 -112 -174 -111 -173 b -123 -176 -119 -176 -121 -176 b -133 -174 -126 -176 -130 -174 b -296 -12 -136 -173 -172 -137 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 172 -398 -43 -228 167 b -219 173 -223 172 -220 173 ',\n },\n ornamentTremblement: {\n x_min: -571.671875,\n x_max: 570.3125,\n ha: 582,\n o: 'm -386 173 b -381 174 -385 174 -383 174 b -370 173 -377 174 -372 173 b -281 86 -367 172 -347 151 b -196 0 -235 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 277 172 b 289 174 285 174 288 174 b 299 173 294 174 298 173 b 462 11 303 172 338 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 374 -176 371 -176 b 280 -87 367 -173 345 -152 b 194 0 234 -38 194 0 b 125 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 43 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -141 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -289 -176 b -300 -174 -295 -176 -299 -174 b -464 -12 -304 -173 -340 -137 l -476 0 l -504 -34 b -543 -77 -534 -73 -537 -76 b -549 -79 -545 -79 -547 -79 b -571 -58 -562 -79 -571 -69 b -568 -49 -571 -55 -570 -52 b -392 172 -566 -43 -396 167 b -386 173 -390 172 -387 173 ',\n },\n ornamentPrecompAppoggTrill: {\n x_min: -571.671875,\n x_max: 570.3125,\n ha: 582,\n o: 'm -559 351 b -551 352 -556 352 -553 352 b -530 338 -543 352 -533 348 b -529 169 -530 337 -529 291 l -529 1 l -507 27 l -441 112 b -382 174 -394 169 -390 174 b -378 174 -381 174 -379 174 b -281 86 -370 174 -375 179 b -196 0 -234 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 279 172 b 289 174 285 174 288 174 b 300 173 294 174 298 173 b 462 11 303 172 340 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 375 -176 371 -176 b 280 -87 367 -173 347 -152 b 194 0 234 -38 194 0 b 126 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 44 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -140 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -288 -176 b -300 -174 -294 -176 -298 -174 b -464 -11 -303 -173 -374 -102 l -476 0 l -506 -37 b -539 -76 -528 -65 -537 -74 b -551 -80 -543 -79 -547 -80 b -570 -68 -558 -80 -566 -76 l -571 -65 l -571 136 b -570 340 -571 331 -571 337 b -559 351 -568 344 -564 348 ',\n },\n ornamentPrecompSlideTrillDAnglebert: {\n x_min: -590.71875,\n x_max: 589.359375,\n ha: 601,\n o: 'm -367 173 b -362 174 -366 174 -364 174 b -351 173 -357 174 -353 173 b -262 86 -348 172 -328 151 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 72 86 -13 172 6 151 b 157 0 119 37 157 0 b 227 84 159 0 189 37 b 303 174 298 173 296 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 144 -86 213 0 182 -38 b 68 -174 73 -174 74 -173 b 62 -176 66 -176 65 -176 b 53 -174 59 -176 55 -174 b -35 -87 50 -173 29 -152 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -367 173 -375 169 -372 172 ',\n },\n ornamentPrecompSlideTrillBach: {\n x_min: -590.71875,\n x_max: 589.359375,\n ha: 601,\n o: 'm 175 273 b 182 274 178 273 181 274 b 202 262 190 274 198 269 b 204 158 204 259 204 259 l 204 56 l 250 112 b 303 174 296 172 298 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 208 -6 213 0 210 -2 l 204 -12 l 204 -147 b 204 -210 204 -173 204 -194 b 198 -292 204 -297 204 -287 b 183 -299 194 -297 189 -299 b 164 -287 175 -299 167 -295 b 163 -174 163 -284 163 -284 l 161 -63 l 119 -117 b 65 -176 76 -170 73 -176 b 61 -176 63 -176 62 -176 b -35 -87 51 -174 57 -180 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -363 174 -374 170 -371 174 b -359 174 -362 174 -360 174 b -262 86 -351 174 -356 179 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 147 11 -13 172 35 123 l 157 -1 l 160 1 l 163 4 l 163 130 b 164 260 163 256 163 258 b 175 273 166 266 170 270 ',\n },\n ornamentPrecompTrillSuffixDandrieu: {\n x_min: -590.71875,\n x_max: 589.359375,\n ha: 601,\n o: 'm 544 335 b 553 337 548 337 551 337 b 575 313 563 337 570 330 b 589 226 583 285 589 256 b 517 8 589 152 563 76 b 464 -58 507 -4 503 -9 l 401 -136 b 362 -176 372 -172 370 -176 b 357 -176 360 -176 359 -176 b 261 -87 349 -174 355 -180 b 175 0 215 -38 175 0 b 106 -86 175 0 144 -38 b 29 -174 35 -174 36 -173 b 24 -176 28 -176 27 -176 b 14 -174 21 -176 17 -174 b -73 -87 12 -173 -8 -152 b -159 0 -121 -38 -159 0 b -228 -86 -160 0 -190 -38 b -304 -174 -299 -174 -298 -173 b -310 -176 -306 -176 -308 -176 b -319 -174 -314 -176 -318 -174 b -483 -12 -323 -173 -359 -137 l -495 0 l -524 -34 b -562 -77 -553 -73 -556 -76 b -568 -79 -564 -79 -566 -79 b -590 -58 -581 -79 -590 -69 b -588 -49 -590 -55 -589 -52 b -412 170 -585 -43 -417 165 b -398 174 -408 173 -402 174 b -389 173 -394 174 -392 174 b -300 86 -387 172 -366 151 b -215 -1 -254 37 -215 -1 b -145 84 -215 -1 -183 37 b -69 173 -74 173 -76 172 b -63 174 -68 174 -66 174 b -54 173 -61 174 -57 173 b 34 86 -51 172 -31 151 b 119 -1 81 37 119 -1 b 189 84 121 -1 151 37 b 265 173 259 173 258 172 b 270 174 266 174 269 174 b 280 173 274 174 279 173 b 370 84 283 172 303 151 b 455 -1 416 37 455 -1 l 455 -1 b 476 24 455 -1 469 15 b 547 226 522 87 547 159 b 534 302 547 252 543 278 b 532 317 533 308 532 313 b 544 335 532 326 536 333 ',\n },\n ornamentPrecompDoubleCadenceUpperPrefix: {\n x_min: -597.53125,\n x_max: 596.171875,\n ha: 608,\n o: 'm -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 80 86 -5 172 13 151 b 166 -1 127 37 166 -1 b 235 84 166 -1 197 37 b 311 173 306 173 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 152 -86 221 -1 190 -38 b 76 -176 81 -174 83 -173 b 70 -176 74 -176 73 -176 b 61 -174 66 -176 62 -174 b -27 -87 58 -173 38 -152 b -114 -1 -74 -38 -112 -1 b -182 -86 -114 -1 -145 -38 b -258 -176 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 ',\n },\n ornamentPrecompDoubleCadenceUpperPrefixTurn: {\n x_min: -597.53125,\n x_max: 596.171875,\n ha: 608,\n o: 'm -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 155 11 -5 172 43 123 l 166 -1 l 168 1 l 170 4 l 170 130 b 171 260 170 256 170 258 b 191 274 175 269 183 274 b 205 267 196 274 201 272 b 212 158 212 262 210 273 l 212 56 l 257 112 b 311 173 304 172 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 216 -6 221 -1 219 -2 l 212 -12 l 212 -147 b 212 -210 212 -173 212 -194 b 205 -292 212 -297 210 -287 b 191 -299 201 -297 196 -299 b 172 -287 183 -299 175 -295 b 170 -174 171 -284 171 -284 l 170 -63 l 127 -117 b 73 -176 84 -170 80 -176 b 68 -176 72 -176 70 -176 b -27 -87 59 -174 65 -180 b -114 0 -74 -38 -112 0 b -182 -86 -114 0 -145 -38 b -258 -174 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 ',\n },\n ornamentPrecompTrillLowerSuffix: {\n x_min: -597.53125,\n x_max: 596.171875,\n ha: 608,\n o: 'm -413 173 b -408 174 -412 174 -409 174 b -397 173 -404 174 -400 173 b -308 86 -394 172 -374 151 b -223 0 -261 37 -223 0 b -153 84 -223 0 -191 37 b -77 174 -83 173 -84 172 b -72 174 -76 174 -74 174 b -62 173 -68 174 -63 173 b 25 86 -59 172 -39 151 b 112 0 73 37 111 0 b 181 84 112 0 144 37 b 257 174 251 173 251 172 b 262 174 258 174 261 174 b 273 173 266 174 270 173 b 436 9 276 172 347 101 l 447 -1 l 477 36 b 522 79 511 79 513 79 l 522 79 b 552 51 533 79 539 73 b 596 -112 582 6 596 -51 b 567 -262 596 -161 586 -213 b 539 -322 558 -287 544 -316 b 524 -327 534 -326 529 -327 b 504 -315 515 -327 507 -323 b 503 -308 503 -312 503 -309 b 511 -285 503 -302 504 -297 b 555 -113 540 -227 555 -169 b 544 -34 555 -86 551 -59 b 522 19 540 -16 530 8 l 521 22 l 481 -26 l 405 -122 b 353 -176 366 -172 362 -176 b 349 -176 352 -176 351 -176 b 253 -87 341 -176 347 -180 b 167 0 206 -38 167 0 b 99 -86 167 0 136 -38 b 21 -174 27 -174 28 -173 b 17 -176 20 -176 19 -176 b 6 -174 13 -176 9 -174 b -81 -87 4 -173 -14 -152 b -167 0 -129 -38 -167 0 b -236 -86 -167 0 -198 -38 b -313 -174 -307 -174 -306 -173 b -318 -176 -314 -176 -315 -176 b -328 -174 -321 -176 -325 -174 b -491 -12 -330 -173 -367 -137 l -503 0 l -530 -34 b -570 -77 -562 -73 -564 -76 b -577 -79 -571 -79 -574 -79 b -597 -58 -588 -79 -597 -69 b -596 -49 -597 -55 -597 -52 b -417 172 -593 -43 -423 167 b -413 173 -417 172 -415 173 ',\n },\n stringsDownBow: {\n x_min: -228.671875,\n x_max: 227.3125,\n ha: 232,\n o: 'm -217 487 l -213 488 l 0 488 l 212 488 l 216 487 b 225 476 220 484 224 480 l 227 473 l 227 244 l 227 15 l 225 12 b 206 0 223 4 215 0 b 197 1 204 0 200 0 b 187 12 193 4 189 6 l 186 15 l 186 138 l 186 262 l -1 262 l -187 262 l -187 138 l -187 15 l -189 12 b -208 0 -193 4 -200 0 b -227 12 -216 0 -223 4 l -228 15 l -228 244 l -228 473 l -227 476 b -217 487 -225 480 -221 484 ',\n },\n stringsUpBow: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -137 381 b -130 383 -134 383 -133 383 b -111 371 -122 383 -114 378 b -55 224 -110 370 -85 305 b 0 80 -25 145 -1 80 b 54 224 0 80 24 145 b 112 377 114 384 110 373 b 127 384 118 381 122 384 b 148 362 138 384 148 374 l 148 356 l 83 183 b 16 9 47 88 17 11 b -1 0 12 2 5 0 b -14 5 -5 0 -10 1 b -84 183 -19 9 -13 -6 l -149 356 l -149 362 b -137 381 -149 371 -145 378 ',\n },\n stringsHarmonic: {\n x_min: -122.5,\n x_max: 121.140625,\n ha: 124,\n o: 'm -16 145 b 0 147 -10 147 -5 147 b 121 -1 66 147 121 77 b 114 -49 121 -16 118 -33 b -1 -148 95 -112 47 -148 b -85 -106 -31 -148 -61 -134 b -122 -1 -110 -76 -122 -38 b -16 145 -122 68 -81 134 m 12 111 b 0 113 8 113 4 113 b -68 22 -29 113 -61 73 b -70 0 -69 15 -70 6 b -13 -113 -70 -49 -47 -98 b -1 -115 -9 -115 -5 -115 b 63 -40 24 -115 53 -83 b 68 -1 66 -27 68 -15 b 12 111 68 48 46 97 ',\n },\n pluckedSnapPizzicatoAbove: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 ',\n },\n pluckedSnapPizzicatoBelow: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 ',\n },\n pluckedLeftHandPizzicato: {\n x_min: 0,\n x_max: 319.859375,\n ha: 326,\n o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ',\n },\n keyboardPedalPed: {\n x_min: -1.359375,\n x_max: 1064.390625,\n ha: 1086,\n o: 'm 296 692 b 314 694 302 694 307 694 b 386 685 337 694 366 689 b 548 498 480 660 548 580 b 548 481 548 492 548 487 b 455 395 541 426 499 395 b 370 462 420 395 383 417 b 362 496 364 477 362 488 b 377 514 362 509 367 514 b 393 501 386 514 390 510 b 432 474 397 484 413 474 b 470 487 445 474 458 478 b 491 530 484 496 491 510 b 490 544 491 534 491 539 b 333 660 479 606 411 657 l 323 662 l 315 646 b 269 524 285 591 269 556 b 321 431 269 492 287 466 b 349 395 338 413 343 408 b 363 342 359 378 363 362 b 359 312 363 333 362 322 b 285 158 348 266 318 206 b 281 152 283 155 281 152 b 281 152 281 152 281 152 b 287 154 283 152 284 152 b 318 155 298 154 308 155 b 461 98 371 155 419 136 l 464 97 l 483 112 b 503 129 494 120 503 127 b 504 130 503 129 504 129 b 503 138 504 131 503 134 b 500 180 500 152 500 166 b 553 326 500 238 518 288 b 604 366 560 331 592 358 b 649 381 617 376 632 381 b 696 362 665 381 681 374 b 724 302 714 347 724 324 b 695 238 724 278 714 255 b 660 210 691 234 662 212 b 579 148 658 209 582 151 b 579 148 579 148 579 148 b 596 106 579 144 589 119 b 622 77 604 88 609 83 b 657 69 632 72 645 69 b 748 112 688 69 721 84 b 755 123 754 117 755 120 b 755 127 755 124 755 126 b 751 165 752 137 751 151 b 758 219 751 183 754 202 b 894 387 774 290 820 347 b 896 390 896 388 896 388 b 891 398 896 391 895 392 b 622 560 827 477 730 535 b 600 580 605 564 600 569 b 617 596 600 591 607 596 b 628 595 622 596 624 596 b 1057 248 846 552 1020 412 b 1064 191 1061 229 1064 209 b 922 0 1064 94 1005 9 b 902 -1 916 -1 909 -1 b 774 76 847 -1 800 26 b 769 83 770 81 770 83 b 769 81 769 83 769 83 b 627 -1 733 29 677 -1 b 548 27 597 -1 570 8 b 515 88 537 37 525 61 l 513 95 l 510 93 l 453 45 b 390 0 396 0 396 0 b 390 0 390 0 390 0 b 374 15 381 0 377 4 b 268 105 359 69 314 105 b 250 104 262 105 257 105 l 243 102 l 234 90 b 155 1 201 49 159 2 b 147 -1 152 0 149 -1 b 130 15 138 -1 130 6 b 132 20 130 18 132 19 b 136 31 133 22 134 27 b 220 131 149 74 178 109 b 231 137 225 134 230 136 b 302 278 280 202 302 244 b 265 335 302 299 295 309 b 209 442 234 363 213 402 b 209 455 209 446 209 451 b 279 648 209 502 232 564 l 285 659 l 283 659 b 176 627 238 653 210 645 b 57 477 111 594 66 538 b 55 459 55 471 55 464 b 72 409 55 437 61 415 b 93 403 78 405 87 403 b 152 467 123 403 151 431 b 168 488 153 483 157 488 b 185 462 181 488 185 483 l 185 460 b 137 344 183 409 168 369 b 78 322 119 328 98 322 b 13 360 50 322 25 335 b -1 426 4 380 -1 402 b 89 610 -1 488 32 559 b 296 692 147 659 210 685 m 926 348 b 921 353 924 351 922 353 b 914 348 920 353 918 351 b 823 167 857 306 823 237 b 828 124 823 154 826 138 b 890 31 837 79 862 40 b 896 31 892 31 894 31 b 956 104 916 31 940 59 b 970 191 965 129 970 159 b 966 241 970 208 969 224 b 926 348 959 277 945 313 m 627 326 b 619 326 624 326 622 326 b 598 316 611 326 604 323 b 568 215 579 288 568 255 b 568 208 568 213 568 210 b 571 183 570 195 570 184 l 571 183 b 594 201 571 183 582 191 l 634 231 b 660 259 653 247 656 248 b 664 278 662 266 664 272 b 627 326 664 299 649 320 ',\n },\n keyboardPedalUp: {\n x_min: -1.359375,\n x_max: 592.078125,\n ha: 604,\n o: 'm 280 692 b 295 694 283 692 289 694 b 310 692 300 694 307 692 b 357 630 340 684 357 657 b 336 580 357 612 351 594 b 311 538 321 566 311 549 b 352 492 311 512 330 492 b 366 495 357 492 362 492 b 397 553 390 503 397 517 b 415 603 397 576 402 591 b 460 623 427 617 443 623 b 509 599 479 623 498 614 b 522 559 518 587 522 573 b 494 506 522 538 513 519 b 451 495 481 498 473 496 b 415 488 432 495 426 494 b 394 449 404 483 394 464 b 394 448 394 448 394 448 l 394 440 l 397 433 b 428 409 404 420 413 413 b 438 408 431 408 435 408 b 479 431 450 408 462 415 b 528 455 495 448 510 455 b 548 452 534 455 541 453 b 592 391 577 442 592 416 b 549 331 592 365 577 340 b 528 327 541 328 534 327 b 479 351 510 327 495 335 b 438 374 464 367 450 374 b 417 369 431 374 424 373 b 394 333 402 360 394 348 b 400 312 394 326 396 319 b 451 287 408 294 420 288 b 513 258 484 285 499 278 b 522 223 519 247 522 234 b 461 159 522 190 496 159 b 449 161 457 159 453 159 b 397 229 416 167 397 191 b 366 288 397 265 390 278 b 352 290 362 290 357 290 b 315 262 336 290 321 280 b 311 245 313 256 311 251 b 334 204 311 233 318 220 b 355 170 348 190 351 184 b 357 152 356 166 357 159 b 355 136 357 147 356 140 b 295 88 345 104 321 88 b 232 152 264 88 232 112 b 255 204 232 174 238 186 b 279 244 273 222 279 231 l 279 245 b 238 290 279 270 259 290 b 224 288 234 290 228 290 b 193 229 200 278 193 265 b 141 161 193 191 174 167 b 129 159 137 159 133 159 b 68 223 93 159 68 190 b 77 258 68 234 70 247 b 138 287 91 278 106 285 b 185 302 166 287 175 291 b 196 333 193 312 196 323 b 174 369 196 347 187 360 b 152 374 166 373 159 374 b 111 351 140 374 126 367 b 62 327 95 335 80 327 b 51 328 58 327 54 327 b -1 391 16 334 -1 363 b 53 455 -1 420 17 449 b 62 455 57 455 59 455 b 111 431 80 455 95 448 b 152 408 127 415 140 408 b 161 409 155 408 159 408 b 193 433 176 413 186 420 l 196 440 l 196 448 b 196 451 196 449 196 449 b 190 471 196 459 194 463 b 137 495 182 489 167 495 l 134 495 l 134 495 b 68 560 95 495 68 521 b 129 623 68 596 95 623 b 144 621 134 623 138 623 b 193 553 175 614 193 589 b 224 495 193 517 200 503 b 238 492 228 492 234 492 b 279 538 259 492 279 512 b 254 580 279 549 269 566 b 232 630 239 594 232 612 b 280 692 232 657 250 684 m 307 456 b 295 458 303 458 299 458 b 230 391 258 458 230 426 b 236 360 230 381 231 371 b 295 324 249 337 272 324 b 353 360 318 324 341 337 b 360 391 357 370 360 381 b 307 456 360 421 340 451 ',\n },\n pictChokeCymbal: {\n x_min: 0,\n x_max: 227.3125,\n ha: 232,\n o: 'm 91 213 b 100 215 93 215 96 215 b 227 58 167 215 224 144 b 227 52 227 56 227 54 b 61 -201 227 -43 164 -138 b 29 -216 44 -212 36 -216 b 23 -210 27 -216 24 -213 b 21 -205 21 -208 21 -206 b 34 -192 21 -201 25 -197 b 122 -55 89 -161 122 -106 b 104 6 122 -33 117 -12 l 103 9 l 96 9 b 4 79 57 9 17 38 b 0 112 1 90 0 101 b 91 213 0 163 36 209 ',\n },\n wiggleArpeggiatoUp: {\n x_min: 58.53125,\n x_max: 228.671875,\n ha: 294,\n o: 'm 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 ',\n },\n arrowheadBlackUp: {\n x_min: -10.890625,\n x_max: 299.4375,\n ha: 294,\n o: 'm 136 460 b 142 462 137 462 140 462 b 166 449 152 462 161 456 b 171 428 168 446 168 445 b 288 131 194 322 238 209 b 298 115 295 120 296 117 b 299 106 298 112 299 109 b 273 81 299 91 287 81 b 255 86 268 81 261 83 b 155 116 225 104 183 116 l 152 116 l 149 108 b 141 83 148 102 144 91 b 134 48 137 69 134 58 b 149 9 134 34 140 24 b 153 -1 152 5 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 147 -11 b 122 2 138 -11 133 -6 b 95 61 104 20 95 38 b 107 108 95 74 99 90 b 108 113 107 111 108 112 b 107 113 108 113 108 113 b 102 113 106 113 104 113 b 31 86 76 108 53 98 b 14 80 24 81 20 80 b -10 106 0 80 -10 91 b 0 131 -10 115 -9 116 b 115 430 49 209 91 317 b 136 460 119 451 123 456 ',\n },\n arrowheadBlackDown: {\n x_min: -10.890625,\n x_max: 298.078125,\n ha: 294,\n o: 'm 138 473 b 142 474 140 473 141 474 b 164 459 148 474 153 470 b 191 402 183 442 191 423 b 181 353 191 388 187 371 b 178 349 179 352 178 349 b 179 348 178 348 179 348 b 185 349 181 348 182 348 b 255 376 210 355 234 363 b 272 381 264 381 266 381 b 298 355 287 381 298 370 b 288 330 298 348 298 345 b 171 34 238 254 194 141 b 166 13 168 16 168 16 b 144 1 161 5 152 1 b 121 15 134 1 125 5 b 115 33 119 18 117 24 b 0 330 91 145 49 252 b -10 355 -9 345 -10 348 b 13 381 -10 371 0 381 b 31 376 19 381 25 380 b 132 345 61 358 103 345 l 136 345 l 137 355 b 145 378 138 359 142 370 b 152 415 149 394 152 405 b 137 452 152 427 148 438 b 133 464 134 458 133 460 b 138 473 133 467 134 470 ',\n },\n vexAccidentalMicrotonal1: {\n x_min: -171.5,\n x_max: 483.1875,\n ha: 493,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 495 20 616 20 616 b 20 373 20 427 20 373 b 115 410 20 373 63 390 l 210 448 l 210 531 b 212 620 210 614 210 616 b 231 632 215 628 223 632 b 246 627 236 632 242 631 b 251 541 251 620 251 628 l 251 463 l 315 489 b 387 514 368 509 381 514 b 393 513 390 514 392 514 b 406 494 402 510 406 502 b 397 476 406 487 404 480 b 323 446 396 474 363 462 l 251 417 l 251 283 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -19 -217 -9 -229 -16 -224 l -20 -215 l -21 48 l -21 310 l -83 287 b -152 262 -133 266 -145 262 b -157 263 -153 262 -155 262 b -171 283 -166 266 -171 274 b -161 301 -171 290 -167 297 b -91 328 -160 302 -129 315 l -21 356 l -21 487 l -20 617 l -19 621 b -8 631 -17 626 -12 630 m 210 288 b 210 401 210 351 210 401 b 114 365 209 401 167 384 l 20 327 l 20 238 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 180 164 199 187 192 l 209 177 b 209 177 209 177 209 177 b 210 288 210 177 210 199 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 ',\n },\n vexAccidentalMicrotonal2: {\n x_min: -1.359375,\n x_max: 386.5625,\n ha: 394,\n o: 'm 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 ',\n },\n vexWiggleArpeggioUp: {\n x_min: 58.53125,\n x_max: 228.671875,\n ha: 294,\n o: 'm 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 ',\n },\n vexNoteHeadMutedBreve: {\n x_min: 0,\n x_max: 370.21875,\n ha: 378,\n o: 'm 0 0 l 0 277 l 61 277 l 122 277 l 122 0 l 122 -278 l 61 -278 l 0 -278 l 0 0 m 246 -1 l 246 277 l 308 277 l 370 277 l 370 -1 l 370 -278 l 308 -278 l 246 -278 l 246 -1 ',\n },\n },\n cssFontWeight: 'normal',\n ascender: 1903,\n underlinePosition: -125,\n cssFontStyle: 'normal',\n boundingBox: {\n yMin: -2065.375,\n xMin: -695.53125,\n yMax: 1901.578125,\n xMax: 1159.671875,\n },\n resolution: 1000,\n original_font_information: {\n postscript_name: 'Gonville-18',\n version_string: 'Version 0.1.8904 ',\n vendor_url: '',\n full_font_name: 'Gonville-18',\n font_family_name: 'Gonville-18',\n copyright: 'No copyright is claimed on this font file.',\n description: '',\n trademark: '',\n designer: '',\n designer_url: '',\n unique_font_identifier: 'FontForge 2.0 : Gonville-18 : 17-3-2010',\n license_url: '',\n license_description: '',\n manufacturer_name: '',\n font_sub_family_name: '18',\n },\n descender: -2066,\n fontFamily: 'Gonville-18',\n lineHeight: 4093,\n underlineThickness: 50,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { GonvilleFont } from '../src/fonts/gonville_glyphs';\nimport { GonvilleMetrics } from '../src/fonts/gonville_metrics';\nexport const Font = {\n data: GonvilleFont,\n metrics: GonvilleMetrics,\n};\nexport default Font;\n","/**\n * The Gonville font was created by Simon Tatham.\n * https://www.chiark.greenend.org.uk/~sgtatham/gonville/\n */\nexport const GonvilleMetrics = {\n name: 'Gonville',\n smufl: false,\n stave: {\n padding: 12,\n endPaddingMax: 10,\n endPaddingMin: 5,\n unalignedNotePadding: 10,\n },\n accidental: {\n noteheadAccidentalPadding: 1,\n leftPadding: 2,\n accidentalSpacing: 3,\n },\n clef: {\n default: {\n point: 40,\n width: 26,\n },\n small: {\n point: 32,\n width: 20,\n },\n annotations: {\n '8va': {\n smuflCode: 'timeSig8',\n default: {\n point: 20,\n treble: {\n line: -1.2,\n shiftX: 11,\n },\n },\n small: {\n point: 18,\n treble: {\n line: -0.4,\n shiftX: 8,\n },\n },\n },\n '8vb': {\n smuflCode: 'timeSig8',\n default: {\n point: 20,\n treble: {\n line: 6.3,\n shiftX: 10,\n },\n bass: {\n line: 4,\n shiftX: 1,\n },\n },\n small: {\n point: 18,\n treble: {\n line: 5.8,\n shiftX: 6,\n },\n bass: {\n line: 3.5,\n shiftX: 0.5,\n },\n },\n },\n },\n // May not need these anymore\n lineCount: {\n '8': { point: 55, shiftY: 14 },\n '7': { point: 47, shiftY: 8 },\n '6': { point: 40, shiftY: 1 },\n '5': { point: 30, shiftY: -6 },\n '4': { point: 23, shiftY: -12 },\n },\n },\n parenthesis: {\n default: {\n point: 39,\n width: 7,\n },\n gracenote: {\n point: (39 * 3) / 5,\n width: 3,\n },\n },\n pedalMarking: {\n up: {\n point: 40,\n },\n down: {\n point: 40,\n },\n },\n // These are for numeric digits, such as in time signatures\n digits: {\n point: 40,\n tupletPoint: 28,\n },\n // articulation: {\n // },\n tremolo: {\n default: {\n point: 25,\n spacing: 4,\n offsetYStemUp: -7,\n offsetYStemDown: 7,\n offsetXStemUp: 9,\n offsetXStemDown: -0.5,\n },\n grace: {\n point: 15,\n spacing: 4,\n offsetYStemUp: -7,\n offsetYStemDown: 7,\n offsetXStemUp: 6.5,\n offsetXStemDown: -0.5,\n },\n },\n staveRepetition: {\n symbolText: {\n offsetX: 12,\n offsetY: 25,\n spacing: 5,\n },\n coda: {\n offsetY: 25,\n },\n segno: {\n offsetY: 0,\n },\n },\n // noteHead: {\n // },\n stem: {\n heightAdjustmentForFlag: -3,\n // These are stem (Y) offsets to the note heads. To shift the\n // noteheads (x-position) themselves, see glyphs.notehead.custom.\n noteHead: {\n noteheadTriangleUpHalf: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpBlack: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpWhole: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadXHalf: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXBlack: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXWhole: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadHalf: {\n offsetYBaseStemUp: -1.5,\n offsetYBaseStemDown: 1.5,\n },\n noteheadBlack: {\n offsetYBaseStemUp: -1.5,\n offsetYBaseStemDown: 1.5,\n },\n noteheadSquareWhite: {\n offsetYBaseStemDown: -5,\n offsetYBaseStemUp: 5,\n },\n },\n },\n glyphs: {\n flag: {\n shiftX: -0.08,\n flag8thDown: {\n shiftX: -0.16,\n },\n flag16thDown: {\n shiftX: -0.16,\n },\n flag32ndDown: {\n shiftX: -0.16,\n shiftY: 9,\n },\n flag64thDown: {\n shiftX: -0.16,\n shiftY: 13,\n },\n flag128thDown: {\n shiftX: -0.16,\n shiftY: 22,\n },\n flag32ndUp: {\n shiftY: -9,\n },\n flag64thUp: {\n shiftY: -13,\n },\n flag128thUp: {\n shiftY: -22,\n },\n },\n stringNumber: {\n verticalPadding: 8,\n stemPadding: 2,\n leftPadding: 5,\n rightPadding: 6,\n },\n textNote: {\n point: 40,\n default: {},\n ornamentTrill: {\n shiftX: -5,\n shiftY: 4,\n },\n },\n noteHead: {\n minPadding: 2,\n custom: {\n noteheadCircleXStemUp: {\n shiftX: -1.5,\n },\n noteheadXWholeStemUp: {\n shiftX: -5,\n },\n noteheadTriangleUpWholeStemUp: {\n shiftX: -6,\n },\n },\n },\n chordSymbol: {\n global: {\n superscriptOffset: -400,\n subscriptOffset: 300,\n kerningOffset: -250,\n lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'],\n upperKerningText: ['A', 'L'],\n spacing: 100,\n superSubRatio: 0.66,\n },\n csymDiminished: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymHalfDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymAugmented: {\n scale: 1,\n leftSideBearing: 0,\n advanceWidth: 530,\n yOffset: 0,\n },\n csymParensLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 155,\n yOffset: 250,\n },\n csymParensRightTall: {\n scale: 0.8,\n leftSideBearing: -40,\n advanceWidth: 189,\n yOffset: 250,\n },\n csymBracketLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 328,\n yOffset: 0,\n },\n csymBracketRightTall: {\n scale: 0.8,\n leftSideBearing: 1,\n advanceWidth: 600,\n yOffset: 0,\n },\n csymParensLeftVeryTall: {\n scale: 0.9,\n leftSideBearing: 0,\n advanceWidth: 121,\n yOffset: 350,\n },\n csymParensRightVeryTall: {\n scale: 0.9,\n leftSideBearing: 50,\n advanceWidth: 111,\n yOffset: 350,\n },\n csymDiagonalArrangementSlash: {\n scale: 0.6,\n leftSideBearing: -1,\n advanceWidth: 990,\n yOffset: 0,\n },\n csymMinor: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 482,\n yOffset: 0,\n },\n csymMajorSeventh: {\n scale: 0.9,\n leftSideBearing: 200,\n yOffset: 0,\n advanceWidth: 600,\n },\n accidentalSharp: {\n scale: 0.75,\n leftSideBearing: 40,\n advanceWidth: 250,\n yOffset: -402,\n },\n accidentalFlat: {\n scale: 0.95,\n leftSideBearing: -50,\n advanceWidth: 208,\n yOffset: -184,\n },\n },\n jazzOrnaments: {\n brassScoop: {\n scale: 1.0,\n xOffset: -12,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassDoitMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 22,\n },\n brassFallLipShort: {\n scale: 1.0,\n xOffset: 17,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassLiftMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 5,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassFallRoughMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 28,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassBend: {\n scale: 1.0,\n xOffset: 2,\n yOffset: -8,\n stemUpYOffset: 24,\n reportedWidth: 5,\n },\n brassMuteClosed: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -9,\n stemUpYOffset: 24,\n reportedWidth: 5,\n },\n brassMuteOpen: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -7,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassFlip: {\n scale: 1.0,\n xOffset: 10,\n yOffset: -4,\n stemUpYOffset: 7,\n reportedWidth: 5,\n },\n brassJazzTurn: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -4,\n stemUpYOffset: 10,\n reportedWidth: 28,\n },\n brassSmear: {\n scale: 1.0,\n xOffset: 10,\n yOffset: -4,\n stemUpYOffset: 9,\n reportedWidth: 5,\n },\n },\n tremolo: {\n default: {\n shiftY: -10,\n },\n grace: {\n shiftY: -5,\n },\n },\n tuplet: {\n noteHeadOffset: 20,\n stemOffset: 10,\n bottomLine: 4,\n topModifierOffset: 15,\n },\n },\n};\n"],"names":["root","factory","exports","module","define","amd","window","globalThis","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","data","glyphs","bracketTop","x_min","x_max","ha","bracketBottom","barlineTick","breathMarkTick","segno","coda","gClef","cClef","fClef","unpitchedPercussionClef1","timeSig0","timeSig1","timeSig2","timeSig3","timeSig4","timeSig5","timeSig6","timeSig7","timeSig8","timeSig9","timeSigCommon","timeSigCutCommon","timeSigPlus","timeSigPlusSmall","timeSigMinus","timeSigParensRight","timeSigParensRightSmall","timeSigParensLeft","timeSigParensLeftSmall","noteheadDoubleWhole","noteheadWhole","noteheadHalf","noteheadBlack","noteheadXWhole","noteheadXHalf","noteheadXBlack","noteheadTriangleUpWhole","noteheadTriangleUpHalf","noteheadTriangleUpBlack","noteheadDiamondWhole","noteheadDiamondHalf","noteheadDiamondBlack","augmentationDot","tremolo1","flag8thUp","flag8thDown","flag16thUp","flag16thDown","flag32ndUp","flag32ndDown","flag64thUp","flag64thDown","flag128thUp","flag128thDown","accidentalFlat","accidentalNatural","accidentalSharp","accidentalDoubleSharp","accidentalDoubleFlat","accidentalParensLeft","accidentalParensRight","accidentalQuarterToneFlatStein","accidentalThreeQuarterTonesFlatZimmermann","accidentalQuarterToneSharpStein","accidentalThreeQuarterTonesSharpStein","accidentalBuyukMucennebFlat","accidentalBakiyeFlat","accidentalKomaSharp","accidentalKucukMucennebSharp","articAccentAbove","articAccentBelow","articTenutoAbove","articTenutoBelow","articStaccatoAbove","articStaccatoBelow","articStaccatissimoAbove","articStaccatissimoBelow","articMarcatoAbove","articMarcatoBelow","fermataAbove","fermataBelow","fermataLongAbove","fermataLongBelow","fermataVeryLongAbove","fermataVeryLongBelow","fermataShortAbove","fermataShortBelow","breathMarkComma","breathMarkUpbow","caesura","caesuraCurved","restMaxima","restDoubleWhole","restWhole","restWholeLegerLine","restHalf","restHalfLegerLine","restQuarter","rest8th","rest16th","rest32nd","rest64th","rest128th","dynamicPiano","dynamicMezzo","dynamicForte","dynamicRinforzando","dynamicSforzando","dynamicZ","ornamentTrill","ornamentTurn","ornamentTurnSlash","ornamentMordent","ornamentShortTrill","ornamentTremblement","ornamentPrecompAppoggTrill","ornamentPrecompSlideTrillDAnglebert","ornamentPrecompSlideTrillBach","ornamentPrecompTrillSuffixDandrieu","ornamentPrecompDoubleCadenceUpperPrefix","ornamentPrecompDoubleCadenceUpperPrefixTurn","ornamentPrecompTrillLowerSuffix","stringsDownBow","stringsUpBow","stringsHarmonic","pluckedSnapPizzicatoAbove","pluckedSnapPizzicatoBelow","pluckedLeftHandPizzicato","keyboardPedalPed","keyboardPedalUp","pictChokeCymbal","wiggleArpeggiatoUp","arrowheadBlackUp","arrowheadBlackDown","vexAccidentalMicrotonal1","vexAccidentalMicrotonal2","vexWiggleArpeggioUp","vexNoteHeadMutedBreve","cssFontWeight","ascender","underlinePosition","cssFontStyle","boundingBox","yMin","xMin","yMax","xMax","resolution","original_font_information","postscript_name","version_string","vendor_url","full_font_name","font_family_name","copyright","description","trademark","designer","designer_url","unique_font_identifier","license_url","license_description","manufacturer_name","font_sub_family_name","descender","fontFamily","lineHeight","underlineThickness","metrics","name","smufl","stave","padding","endPaddingMax","endPaddingMin","unalignedNotePadding","accidental","noteheadAccidentalPadding","leftPadding","accidentalSpacing","clef","default","point","width","small","annotations","smuflCode","treble","line","shiftX","bass","lineCount","shiftY","parenthesis","gracenote","pedalMarking","up","down","digits","tupletPoint","tremolo","spacing","offsetYStemUp","offsetYStemDown","offsetXStemUp","offsetXStemDown","grace","staveRepetition","symbolText","offsetX","offsetY","stem","heightAdjustmentForFlag","noteHead","offsetYBaseStemUp","offsetYBaseStemDown","noteheadSquareWhite","flag","stringNumber","verticalPadding","stemPadding","rightPadding","textNote","minPadding","custom","noteheadCircleXStemUp","noteheadXWholeStemUp","noteheadTriangleUpWholeStemUp","chordSymbol","global","superscriptOffset","subscriptOffset","kerningOffset","lowerKerningText","upperKerningText","superSubRatio","csymDiminished","scale","leftSideBearing","advanceWidth","yOffset","csymHalfDiminished","csymAugmented","csymParensLeftTall","csymParensRightTall","csymBracketLeftTall","csymBracketRightTall","csymParensLeftVeryTall","csymParensRightVeryTall","csymDiagonalArrangementSlash","csymMinor","csymMajorSeventh","jazzOrnaments","brassScoop","xOffset","stemUpYOffset","reportedWidth","brassDoitMedium","brassFallLipShort","brassLiftMedium","brassFallRoughMedium","brassBend","brassMuteClosed","brassMuteOpen","brassFlip","brassJazzTurn","brassSmear","tuplet","noteHeadOffset","stemOffset","bottomLine","topModifierOffset"],"sourceRoot":""} \ No newline at end of file diff --git a/build/cjs/vexflow-font-leland.js b/build/cjs/vexflow-font-leland.js new file mode 100644 index 0000000000..142f7a0b89 --- /dev/null +++ b/build/cjs/vexflow-font-leland.js @@ -0,0 +1,2 @@ +!function(b,l){"object"==typeof exports&&"object"==typeof module?module.exports=l():"function"==typeof define&&define.amd?define([],l):"object"==typeof exports?exports.VexFlowFont=l():(b.VexFlowFont=b.VexFlowFont||{},b.VexFlowFont.Leland=l())}("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:this,(function(){return(()=>{"use strict";var b={d:(l,m)=>{for(var a in m)b.o(m,a)&&!b.o(l,a)&&Object.defineProperty(l,a,{enumerable:!0,get:m[a]})},o:(b,l)=>Object.prototype.hasOwnProperty.call(b,l)},l={};b.d(l,{default:()=>m});const m={data:{glyphs:{bracketTop:{x_min:0,x_max:491,y_min:0,y_max:279,ha:279,o:"m 697 399 b 687 402 694 400 690 402 b 671 395 681 402 674 400 b 249 168 668 390 524 168 l 20 168 b 0 150 9 168 0 161 l 0 20 l 0 0 l 176 0 b 706 374 619 0 704 370 b 707 382 706 376 707 379 b 697 399 707 389 703 395 z"},bracketBottom:{x_min:0,x_max:491,y_min:-279,y_max:0,ha:279,o:"m 697 -399 b 707 -382 703 -395 707 -389 b 706 -374 707 -379 706 -376 b 176 0 704 -370 619 0 l 0 0 l 0 -20 l 0 -150 b 20 -168 0 -161 9 -168 l 249 -168 b 671 -395 524 -168 668 -390 b 687 -402 674 -400 681 -402 b 697 -399 690 -402 694 -400 z"},segno:{x_min:0,x_max:654,y_min:0,y_max:869,ha:869,o:"m 546 690 l 838 1207 b 841 1215 840 1210 841 1212 b 832 1233 841 1221 837 1230 l 809 1248 b 798 1251 806 1250 801 1251 b 780 1241 792 1251 783 1247 l 487 721 l 217 860 b 99 995 147 897 99 924 b 236 1165 99 1120 179 1165 b 343 1073 288 1165 325 1130 b 454 988 357 1022 405 988 b 477 991 461 988 469 989 b 541 1076 526 1002 541 1045 b 540 1089 541 1080 541 1084 b 294 1225 534 1116 514 1225 b 0 939 72 1225 0 1053 b 125 706 0 825 42 753 l 397 563 l 104 45 b 102 35 102 42 102 37 b 111 19 102 29 107 22 l 132 3 b 144 0 135 1 141 0 b 148 0 145 0 147 0 b 161 10 153 1 158 6 l 456 531 l 704 403 b 842 256 780 361 842 318 b 706 86 842 131 763 86 b 599 177 654 86 616 120 b 488 262 585 228 537 262 b 465 259 481 262 472 261 b 402 177 418 248 402 206 b 403 163 402 171 402 167 b 649 26 409 135 429 26 b 942 312 871 26 942 199 b 821 549 942 426 901 507 z m 52 444 b 118 416 69 426 95 416 b 183 444 141 416 166 426 b 210 508 200 461 210 485 b 183 573 210 531 200 556 b 118 600 166 590 141 600 b 52 573 95 600 69 590 b 24 508 35 556 24 531 b 52 444 24 485 35 461 z m 760 730 b 825 703 778 713 802 703 b 890 730 848 703 873 713 b 917 795 907 747 917 772 b 890 861 917 818 907 844 b 825 888 873 878 848 888 b 760 861 802 888 778 878 b 733 795 743 844 733 818 b 760 730 733 772 743 747 z"},coda:{x_min:0,x_max:745,y_min:-113,y_max:735,ha:848,o:"m 924 467 b 560 896 916 697 757 881 l 560 1038 b 540 1058 560 1050 552 1058 l 524 1058 b 505 1038 513 1058 505 1050 l 505 896 b 150 467 311 877 158 693 l 20 467 b 0 446 9 467 0 458 l 0 432 b 20 412 0 420 9 412 l 150 412 b 505 0 166 193 317 17 l 505 -143 b 524 -163 505 -154 513 -163 l 540 -163 b 560 -143 552 -163 560 -154 l 560 0 b 923 412 753 13 907 190 l 1054 412 b 1073 432 1066 412 1073 420 l 1073 446 b 1054 467 1073 458 1066 467 z m 560 467 l 560 852 b 773 467 716 837 773 671 z m 505 467 l 301 467 b 505 851 301 668 357 831 z m 505 412 l 505 45 b 301 412 366 65 301 219 z m 560 412 l 772 412 b 560 45 772 215 706 60 z"},gClef:{x_min:0,x_max:640,y_min:-666,y_max:1112,ha:1778,o:"m 809 -30 b 665 -279 809 -132 768 -238 b 586 186 635 -107 596 122 b 809 -30 716 186 809 98 z m 605 -297 b 521 -305 576 -302 549 -305 b 140 56 315 -305 140 -161 b 390 498 140 232 264 389 b 459 562 415 520 438 540 b 492 357 472 484 482 416 b 272 45 361 318 272 180 b 467 -194 272 -56 351 -194 b 491 -176 478 -194 491 -189 b 459 -144 491 -163 477 -156 b 372 -1 403 -109 372 -72 b 521 177 372 86 436 157 z m 478 1184 b 632 1392 491 1241 557 1392 b 688 1223 654 1392 688 1322 b 478 863 688 1073 577 960 b 462 1037 469 920 462 976 b 478 1184 462 1090 467 1139 z m 176 -739 b 444 -959 176 -834 249 -959 b 622 -910 511 -959 570 -942 b 720 -670 700 -855 720 -760 b 697 -467 720 -613 711 -549 b 675 -338 693 -438 684 -395 b 922 3 816 -292 922 -145 b 557 367 922 220 768 367 b 516 619 543 454 528 539 b 773 1188 668 779 773 959 b 710 1477 773 1319 733 1426 b 608 1601 675 1551 634 1601 b 505 1528 598 1601 553 1584 b 387 1113 413 1418 387 1234 b 419 804 387 1035 395 965 b 312 701 418 802 343 726 b 0 117 181 579 0 405 b 503 -364 0 -153 235 -364 b 616 -354 544 -364 583 -360 b 660 -670 644 -492 660 -593 b 438 -899 660 -819 583 -899 b 370 -891 403 -899 373 -891 b 366 -887 369 -890 366 -888 b 373 -881 366 -884 369 -883 b 508 -721 441 -871 508 -814 b 341 -562 508 -644 449 -562 b 176 -739 240 -562 176 -644 z"},cClef:{x_min:0,x_max:627,y_min:-480,y_max:482,ha:962,o:"m 19 675 b 0 657 9 675 0 667 l 0 -654 b 19 -672 0 -664 9 -672 l 122 -672 b 141 -654 132 -672 141 -664 l 141 657 b 122 675 141 667 132 675 z m 903 -376 b 619 -58 903 -197 808 -58 b 505 -95 586 -58 562 -60 b 426 1 503 -89 474 -32 b 505 98 474 35 503 92 b 641 60 560 65 579 60 b 903 379 816 60 903 223 b 580 694 903 580 755 694 b 318 517 472 694 318 649 b 438 400 318 446 367 400 b 546 510 501 400 546 446 b 425 615 546 589 494 615 b 547 651 458 638 503 651 b 723 400 698 651 723 530 b 593 128 723 289 720 128 b 438 279 467 128 441 265 b 418 300 438 281 438 300 b 396 279 397 300 396 281 b 264 29 383 200 344 62 l 264 657 b 246 675 264 667 256 675 b 228 657 236 675 228 667 l 228 -654 b 246 -672 228 -664 236 -672 b 264 -654 256 -672 264 -664 l 264 -26 b 396 -278 348 -60 380 -197 b 418 -297 396 -279 397 -297 b 438 -278 438 -297 438 -279 b 593 -125 441 -262 467 -125 b 723 -397 720 -125 723 -287 b 547 -648 723 -527 698 -648 b 425 -612 503 -648 458 -635 b 441 -613 426 -612 432 -613 b 546 -507 504 -613 546 -569 b 438 -397 546 -444 501 -397 b 318 -514 367 -397 318 -444 b 580 -691 318 -647 472 -691 b 903 -376 755 -691 903 -577 z"},fClef:{x_min:0,x_max:664,y_min:-617,y_max:251,ha:868,o:"m 366 361 b 167 298 256 361 168 298 b 37 112 84 236 50 163 b 27 36 30 86 27 60 b 46 -58 27 1 33 -30 b 140 -138 63 -96 96 -124 b 194 -147 157 -144 176 -147 b 287 -122 226 -147 259 -138 b 359 10 331 -98 359 -46 b 289 134 359 60 333 107 b 206 160 259 154 230 160 b 160 153 189 160 173 157 b 109 122 145 147 121 132 b 147 215 114 150 131 192 b 219 279 163 238 194 266 b 351 308 255 300 301 308 b 570 -52 498 308 570 190 b 477 -399 570 -186 520 -314 b 310 -635 429 -494 366 -585 b 17 -837 160 -772 19 -837 b 0 -864 17 -837 0 -847 b 1 -871 0 -867 1 -868 b 27 -888 6 -886 19 -888 b 35 -887 29 -888 33 -887 b 331 -717 36 -887 200 -819 b 528 -544 405 -664 471 -606 b 661 -367 580 -488 625 -428 b 760 -50 724 -259 760 -147 b 670 239 760 69 729 168 b 366 361 602 320 500 361 z m 818 179 b 887 107 818 138 850 107 b 956 179 924 107 956 138 b 887 252 956 219 924 252 b 818 179 850 252 818 219 z m 818 -177 b 887 -251 818 -217 850 -251 b 956 -177 924 -251 956 -217 b 887 -104 956 -137 924 -104 b 818 -177 850 -104 818 -137 z"},unpitchedPercussionClef1:{x_min:0,x_max:352,y_min:-252,y_max:252,ha:504,o:"m 19 363 b 0 344 9 363 0 354 l 0 -344 b 19 -363 0 -354 9 -363 l 177 -363 b 196 -344 187 -363 196 -354 l 196 344 b 177 363 196 354 187 363 z m 330 363 b 311 344 320 363 311 354 l 311 -344 b 330 -363 311 -354 320 -363 l 488 -363 b 507 -344 498 -363 507 -354 l 507 344 b 488 363 507 354 498 363 z"},"6stringTabClef":{x_min:0,x_max:439,y_min:-743,y_max:746,ha:1489,o:"m 52 1074 l 52 958 l 249 958 l 249 419 l 387 419 l 387 958 l 583 958 l 583 1074 z m 0 -333 l 145 -333 l 192 -196 l 436 -196 l 481 -333 l 632 -333 l 396 334 l 238 334 z m 315 181 l 400 -81 l 229 -81 z m 566 -474 b 393 -402 531 -428 475 -403 l 71 -402 l 71 -1070 l 372 -1070 b 374 -1070 373 -1070 373 -1070 b 465 -1061 405 -1070 435 -1067 b 541 -1027 494 -1056 520 -1043 b 588 -975 560 -1012 575 -995 b 618 -868 608 -943 618 -907 b 592 -770 618 -829 609 -798 b 514 -711 575 -743 549 -724 b 566 -674 537 -700 554 -688 b 596 -576 586 -649 596 -616 b 566 -474 596 -536 586 -503 z m 348 -518 b 428 -528 380 -518 408 -521 b 464 -590 452 -539 464 -559 b 436 -649 464 -619 455 -638 b 366 -665 418 -661 395 -665 l 203 -665 l 203 -518 z m 367 -776 b 435 -788 396 -776 419 -780 b 477 -858 464 -801 477 -824 b 433 -942 477 -900 462 -927 b 366 -953 418 -949 395 -953 l 203 -953 l 203 -776 z"},timeSig0:{x_min:15,x_max:389,y_min:-254,y_max:255,ha:509,o:"m 291 367 b 22 0 138 367 22 209 b 291 -366 22 -209 138 -366 b 560 0 444 -366 560 -209 b 291 367 560 209 444 367 z m 376 -200 b 291 -308 376 -252 353 -308 b 206 -200 229 -308 206 -252 l 206 200 b 291 308 206 252 229 308 b 376 200 353 308 376 252 z"},timeSig1:{x_min:15,x_max:336,y_min:-243,y_max:245,ha:488,o:"m 359 -284 l 359 336 b 341 353 359 346 351 353 l 199 353 b 190 350 196 353 193 351 b 184 344 189 348 186 346 l 23 65 b 22 56 22 62 22 59 b 30 42 22 50 26 45 l 58 26 b 66 23 60 24 63 23 b 81 32 72 23 78 27 l 183 207 l 183 -284 l 73 -284 b 56 -301 63 -284 56 -291 l 56 -333 b 73 -350 56 -343 63 -350 l 468 -350 b 484 -333 478 -350 484 -343 l 484 -301 b 468 -284 484 -291 478 -284 z"},timeSig2:{x_min:15,x_max:377,y_min:-243,y_max:245,ha:488,o:"m 492 -56 b 382 -192 481 -88 452 -192 b 190 -134 288 -192 268 -134 b 153 -138 179 -134 167 -135 b 341 -36 153 -138 189 -84 b 533 173 494 12 533 86 b 288 353 533 233 505 353 b 30 156 71 353 30 222 b 138 49 30 96 79 49 b 245 156 197 49 245 96 b 179 255 245 196 216 240 b 168 271 174 256 168 264 b 202 297 168 279 176 289 b 251 304 209 300 229 304 b 311 288 271 304 294 300 b 348 180 338 271 348 245 b 65 -150 348 12 148 -24 b 22 -278 65 -150 22 -210 b 73 -350 22 -346 56 -350 b 121 -305 96 -350 121 -331 b 117 -287 121 -300 120 -294 b 105 -239 108 -266 105 -251 b 107 -226 105 -235 105 -230 b 154 -203 108 -217 120 -203 b 238 -289 196 -203 212 -252 b 350 -350 264 -327 304 -350 b 484 -264 396 -350 458 -317 b 543 -63 510 -210 543 -102 b 518 -36 543 -45 531 -36 b 492 -56 508 -36 498 -42 z"},timeSig3:{x_min:14.984905204685425,x_max:364,y_min:-244,y_max:244,ha:488,o:"m 392 23 b 514 168 507 68 514 143 b 514 176 514 171 514 174 b 262 351 514 189 510 351 b 22 176 14 351 22 176 l 23 176 l 22 173 b 115 81 22 121 63 81 b 207 173 167 81 207 121 b 135 264 207 215 176 255 b 140 268 137 265 138 266 b 215 289 160 282 187 289 b 340 176 275 289 340 253 b 255 69 340 85 272 72 b 140 60 238 66 157 60 b 121 40 122 60 121 40 l 121 12 b 140 -6 121 12 124 -4 b 243 -14 164 -7 197 -7 b 340 -167 307 -23 340 -66 b 215 -289 340 -264 275 -289 b 121 -266 174 -289 137 -278 b 207 -174 168 -264 207 -222 b 115 -81 207 -122 167 -81 b 22 -174 63 -81 22 -122 b 22 -180 22 -174 22 -177 b 78 -298 22 -199 26 -251 b 236 -351 134 -350 204 -351 b 524 -147 374 -351 524 -304 b 389 23 524 -42 452 3 z"},timeSig4:{x_min:14,x_max:442,y_min:-248,y_max:249,ha:497,o:"m 300 -183 l 300 -289 l 180 -289 b 160 -310 170 -289 160 -298 l 160 -337 b 180 -357 160 -348 170 -357 l 616 -357 b 636 -337 628 -357 636 -348 l 636 -310 b 616 -289 636 -298 628 -289 l 487 -289 l 487 -183 l 616 -183 b 636 -161 628 -183 636 -173 l 636 -134 b 616 -114 636 -124 628 -114 l 487 -114 l 487 115 b 477 134 487 124 482 131 l 459 143 b 452 144 456 144 455 144 b 449 144 451 144 451 144 b 436 140 445 144 439 143 l 305 20 b 300 4 301 16 300 10 l 300 -114 l 132 -114 b 464 287 132 -114 294 59 b 471 307 469 294 471 301 b 467 321 471 314 468 320 l 435 353 b 420 359 431 356 426 359 b 206 359 412 359 217 359 b 187 341 196 359 189 350 b 143 118 187 341 180 235 b 24 -124 105 1 62 -71 b 20 -140 24 -124 20 -131 b 22 -148 20 -143 20 -145 b 36 -174 26 -158 36 -174 b 52 -183 36 -174 39 -183 z"},timeSig5:{x_min:15,x_max:362,y_min:-244,y_max:246,ha:490,o:"m 39 314 b 46 170 39 314 46 245 b 46 151 46 164 46 157 b 39 -24 45 71 39 -24 b 39 -29 39 -24 39 -26 b 49 -48 39 -35 40 -46 b 99 -59 62 -50 92 -58 b 107 -59 102 -59 104 -59 b 121 -49 112 -59 118 -58 b 235 45 128 -30 144 45 b 356 -112 337 45 356 -43 b 238 -292 356 -184 333 -288 b 226 -292 233 -292 230 -292 b 166 -282 193 -292 174 -288 b 158 -274 161 -281 158 -276 b 164 -264 158 -269 160 -266 b 222 -168 177 -255 222 -239 b 117 -71 222 -98 173 -71 b 22 -171 60 -71 22 -122 b 111 -318 22 -220 36 -275 b 252 -351 147 -338 199 -351 b 456 -275 325 -351 405 -328 b 521 -109 503 -228 521 -167 b 433 79 521 -32 487 43 b 271 124 397 104 336 124 b 131 84 223 124 173 112 b 125 82 130 82 127 82 b 115 92 120 82 115 86 l 115 183 b 131 199 115 192 122 199 l 132 199 b 252 192 154 197 202 192 b 372 209 295 192 340 196 b 474 320 439 236 462 289 b 477 334 475 324 477 330 b 451 354 477 346 469 354 b 431 351 445 354 439 353 b 252 328 360 334 305 328 b 88 343 200 328 150 334 b 71 344 88 343 81 344 b 39 320 56 344 39 340 b 39 314 39 317 39 315 z"},timeSig6:{x_min:15,x_max:387,y_min:-244,y_max:245,ha:489,o:"m 356 69 b 216 22 268 69 236 43 b 209 98 212 52 209 75 b 216 167 209 121 212 141 b 338 287 225 220 261 287 b 410 259 374 287 396 275 b 356 174 380 246 356 207 b 448 82 356 122 396 82 b 541 174 500 82 541 122 l 541 177 b 541 179 541 177 541 177 b 533 225 541 192 539 213 b 310 353 514 276 454 353 b 58 163 180 353 86 229 b 22 -23 43 128 22 58 b 131 -285 22 -111 46 -210 b 318 -351 215 -348 268 -351 b 557 -125 369 -351 557 -292 b 356 69 557 16 446 69 z m 302 -291 b 216 -145 255 -291 216 -226 b 302 1 216 -65 255 1 b 390 -145 350 1 390 -65 b 302 -291 390 -226 350 -291 z"},timeSig7:{x_min:15,x_max:366,y_min:-250,y_max:251,ha:501,o:"m 233 -177 b 160 -336 202 -225 160 -282 b 180 -360 160 -351 164 -360 b 264 -351 203 -360 217 -354 b 278 -350 268 -351 274 -350 b 369 -360 320 -350 359 -360 b 405 -331 382 -360 406 -344 b 405 -327 405 -330 405 -328 b 396 -226 405 -324 396 -279 b 408 -130 396 -196 399 -161 b 503 151 425 -62 471 60 b 527 308 518 196 527 275 b 526 341 527 321 527 327 b 510 361 524 356 518 361 b 484 361 503 361 491 361 b 467 341 477 361 467 356 b 406 228 467 327 464 228 b 235 351 346 228 328 351 b 86 252 145 351 91 261 l 86 321 b 71 337 86 330 79 337 l 37 337 b 22 321 29 337 22 330 l 22 55 b 37 39 22 46 29 39 l 71 39 b 86 55 79 39 86 46 l 86 101 b 158 179 86 134 108 179 b 328 124 209 179 213 124 b 425 143 357 124 410 128 b 233 -177 413 120 266 -130 z"},timeSig8:{x_min:15,x_max:393,y_min:-248,y_max:246,ha:494,o:"m 467 26 b 547 166 514 62 547 108 b 294 354 547 269 433 354 b 40 166 154 354 40 269 b 122 13 40 108 55 56 b 22 -147 58 -24 22 -78 b 294 -357 22 -264 144 -357 b 566 -147 444 -357 566 -264 b 467 26 566 -78 541 -13 z m 294 -276 b 122 -145 202 -276 122 -226 b 197 -26 122 -49 197 -26 b 435 -187 295 -59 435 -108 b 294 -276 435 -226 384 -276 z m 386 65 b 180 209 288 96 180 144 b 294 288 180 265 232 288 b 444 180 383 288 444 246 b 386 65 444 111 412 78 z"},timeSig9:{x_min:15,x_max:387,y_min:-244,y_max:245,ha:489,o:"m 223 -68 b 363 -20 311 -68 343 -42 b 370 -96 367 -50 370 -73 b 363 -166 370 -120 367 -140 b 240 -285 354 -219 318 -285 b 168 -258 204 -285 183 -274 b 223 -173 199 -245 223 -206 b 131 -81 223 -121 183 -81 b 37 -173 79 -81 37 -121 l 37 -176 b 37 -177 37 -176 37 -176 b 46 -223 37 -190 40 -212 b 269 -351 65 -275 125 -351 b 521 -161 399 -351 492 -228 b 557 24 536 -127 557 -56 b 448 287 557 112 533 212 b 261 353 364 350 311 353 b 22 127 210 353 22 294 b 223 -68 22 -14 132 -68 z m 276 294 b 363 147 324 294 363 228 b 276 1 363 66 324 1 b 189 147 229 1 189 66 b 276 294 189 228 229 294 z"},timeSigCommon:{x_min:0,x_max:463,y_min:-256,y_max:258,ha:514,o:"m 468 258 b 406 147 432 235 406 193 b 408 130 406 141 406 135 b 521 17 415 71 462 24 b 537 17 526 17 533 17 b 667 147 609 17 667 75 b 667 156 667 147 667 151 b 664 177 667 161 665 171 b 350 372 651 239 595 372 b 0 17 36 372 0 111 b 382 -369 0 -154 22 -369 b 641 -131 524 -369 635 -285 b 629 -120 641 -124 636 -120 l 611 -120 b 599 -131 605 -120 599 -125 b 382 -323 593 -251 508 -323 b 196 -128 256 -323 196 -255 l 196 147 b 356 320 196 228 228 320 b 469 271 423 320 454 295 b 471 264 471 268 471 266 b 468 258 471 262 471 259 z"},timeSigCutCommon:{x_min:0,x_max:463,y_min:-376,y_max:388,ha:764,o:"m 611 -120 b 599 -131 605 -120 599 -125 b 382 -323 593 -251 508 -323 b 369 -323 377 -323 373 -323 l 369 320 b 469 269 428 317 455 292 b 471 264 471 266 471 265 b 468 258 471 261 471 259 b 406 147 432 235 406 193 b 408 130 406 141 406 135 b 523 17 415 71 464 24 b 537 17 527 17 533 17 b 667 147 609 17 667 75 b 667 156 667 147 667 151 b 664 177 667 161 665 171 b 369 370 651 236 598 364 l 369 543 b 353 559 369 552 361 559 l 314 559 b 298 543 305 559 298 552 l 298 369 b 0 17 32 341 0 105 b 298 -364 0 -140 17 -334 l 298 -526 b 314 -541 298 -534 305 -541 l 353 -541 b 369 -526 361 -541 369 -534 l 369 -369 b 382 -369 373 -369 377 -369 b 641 -131 524 -369 635 -285 b 629 -120 641 -124 636 -120 z m 196 147 b 298 312 196 215 216 289 l 298 -310 b 196 -128 229 -285 196 -223 z"},timeSigPlus:{x_min:0,x_max:408,y_min:-204,y_max:204,ha:408,o:"m 327 33 l 327 275 b 308 294 327 285 318 294 l 279 294 b 261 275 269 294 261 285 l 261 33 l 19 33 b 0 14 9 33 0 24 l 0 -13 b 19 -33 0 -23 9 -33 l 261 -33 l 261 -274 b 279 -294 261 -284 269 -294 l 308 -294 b 327 -274 318 -294 327 -284 l 327 -33 l 567 -33 b 588 -13 577 -33 588 -23 l 588 14 b 567 33 588 24 577 33 z"},noteheadDoubleWhole:{x_min:0,x_max:538,y_min:-178,y_max:179,ha:357,o:"m 33 258 b 20 258 27 258 26 258 b 0 238 9 258 0 249 b 0 -236 0 226 0 -226 b 20 -256 0 -246 9 -256 b 33 -256 26 -256 27 -256 b 53 -236 43 -256 53 -245 b 53 238 53 -228 53 226 b 33 258 53 249 45 258 z m 649 258 b 636 258 644 258 642 258 b 616 238 625 258 616 249 b 616 125 616 235 616 187 b 389 196 573 167 500 196 b 160 125 276 196 203 167 b 160 238 160 187 160 235 b 140 258 160 249 151 258 b 127 258 134 258 132 258 b 107 238 115 258 107 249 b 107 -236 107 226 107 -226 b 127 -256 107 -246 115 -256 b 140 -256 132 -256 134 -256 b 160 -236 150 -256 160 -245 b 160 -122 160 -233 160 -186 b 389 -194 203 -166 276 -194 b 616 -122 500 -194 573 -166 b 616 -236 616 -186 616 -233 b 636 -256 616 -246 625 -256 b 649 -256 642 -256 644 -256 b 670 -236 660 -256 670 -245 b 670 238 670 -228 670 226 b 649 258 670 249 661 258 z m 462 -140 b 400 -148 445 -144 422 -148 b 314 -101 360 -148 333 -135 b 268 68 295 -65 269 29 b 268 76 268 71 268 73 b 314 141 268 109 282 130 b 377 150 331 145 354 150 b 462 102 416 150 442 140 b 510 -66 482 63 510 -29 b 462 -140 510 -104 497 -128 z m 755 258 b 742 258 749 258 747 258 b 721 238 730 258 721 249 b 721 -236 721 226 721 -226 b 742 -256 721 -246 730 -256 b 755 -256 747 -256 749 -256 b 775 -236 765 -256 775 -245 b 775 238 775 -228 775 226 b 755 258 775 249 766 258 z"},noteheadWhole:{x_min:0,x_max:373,y_min:-134,y_max:136,ha:270,o:"m 269 196 b 0 1 71 196 0 95 b 269 -193 0 -92 71 -193 b 537 1 468 -193 537 -92 b 269 196 537 95 468 196 z m 343 -138 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 148 68 176 -63 150 29 b 194 141 145 107 160 130 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 389 -65 363 63 389 -29 b 343 -138 389 -102 377 -128 z"},noteheadHalf:{x_min:0,x_max:325,y_min:-133,y_max:132,ha:265,o:"m 307 190 b 0 -60 167 190 0 73 b 161 -192 0 -122 45 -192 b 468 58 311 -192 468 -69 b 307 190 468 143 396 190 z m 268 -63 b 108 -124 264 -66 158 -124 b 50 -72 60 -124 50 -85 b 200 62 50 -12 194 59 b 360 122 206 65 308 122 b 418 71 395 122 418 102 b 268 -63 418 9 272 -60 z"},noteheadBlack:{x_min:0,x_max:325,y_min:-133,y_max:132,ha:265,o:"m 0 -60 b 161 -192 0 -122 45 -192 b 468 58 311 -192 468 -69 b 307 190 468 143 396 190 b 0 -60 167 190 0 72 z"},noteheadXBlack:{x_min:0,x_max:325,y_min:-132,y_max:132,ha:264,o:"m 461 138 b 468 153 465 141 468 147 l 468 154 b 462 167 468 160 465 164 l 445 184 b 431 190 441 187 436 190 b 418 186 426 190 420 189 l 235 40 l 50 186 b 37 190 48 189 42 190 b 24 184 32 190 29 187 l 6 167 b 0 153 3 164 0 158 b 7 138 0 147 3 141 l 183 0 l 7 -138 b 0 -153 3 -141 0 -147 b 6 -166 0 -157 3 -163 l 23 -184 b 37 -190 26 -189 32 -190 b 50 -186 42 -190 48 -189 l 235 -40 l 418 -186 b 431 -190 420 -189 426 -190 b 445 -184 436 -190 442 -189 l 462 -166 b 468 -153 465 -163 468 -157 b 461 -138 468 -147 465 -141 l 285 0 z"},noteheadCircleX:{x_min:0,x_max:325,y_min:-162,y_max:163,ha:325,o:"m 265 0 l 395 105 b 426 0 415 75 426 39 b 387 -115 426 -43 412 -84 z m 233 -27 l 360 -145 b 235 -192 327 -174 282 -192 b 99 -137 183 -192 134 -171 z m 202 1 l 73 -105 b 42 0 53 -75 42 -39 b 81 115 42 43 56 84 z m 235 29 l 108 145 b 233 193 141 174 186 193 b 369 138 285 193 334 173 z m 233 235 b 0 0 104 235 0 130 b 233 -233 0 -130 104 -233 b 468 0 363 -233 468 -130 b 233 235 468 130 363 235 z"},noteheadDoubleWholeSquare:{x_min:0,x_max:432,y_min:-179,y_max:177,ha:356,o:"m 590 255 b 570 235 579 255 570 246 l 570 203 l 53 203 l 53 235 b 33 255 53 246 45 255 l 20 255 b 0 235 9 255 0 246 l 0 -230 b 20 -251 0 -242 9 -251 l 33 -251 b 53 -230 45 -251 53 -242 l 53 -200 l 570 -200 l 570 -238 b 590 -258 570 -249 579 -258 l 603 -258 b 622 -238 615 -258 622 -249 l 622 235 b 603 255 622 246 615 255 z m 570 -101 l 53 -101 l 53 105 l 570 105 z"},noteheadSquareWhite:{x_min:0,x_max:310,y_min:-125,y_max:125,ha:250,o:"m 395 128 l 395 -128 l 52 -128 l 52 128 z m 446 180 l 0 180 l 0 -180 l 446 -180 z"},noteheadSquareBlack:{x_min:0,x_max:310,y_min:-125,y_max:125,ha:250,o:"m 446 180 l 0 180 l 0 -180 l 446 -180 z"},noteheadTriangleUpBlack:{x_min:0,x_max:310,y_min:-136,y_max:122,ha:258,o:"m 223 176 l 0 -196 l 446 -196 z"},noteheadSlashedDoubleWhole1:{x_min:-66,x_max:456,y_min:-213,y_max:212,ha:425,o:"m 652 298 b 638 305 649 304 644 305 b 626 301 634 305 629 304 l 560 248 b 543 256 557 253 550 256 b 530 256 537 256 536 256 b 510 236 518 256 510 248 b 510 204 510 235 510 223 l 455 161 b 281 194 413 181 356 194 b 53 124 168 194 96 166 b 53 236 53 186 53 233 b 29 256 53 253 42 256 b 20 256 26 256 23 256 b 0 236 9 256 0 248 b 0 -204 0 228 0 -98 l -88 -272 b -95 -288 -92 -276 -95 -282 b -91 -300 -95 -291 -94 -295 b -76 -307 -86 -304 -82 -307 b -65 -302 -72 -307 -68 -305 l 3 -248 b 20 -258 6 -253 12 -258 b 53 -238 33 -258 52 -255 b 53 -206 53 -236 53 -225 l 107 -161 b 281 -196 148 -183 206 -196 b 510 -124 393 -196 465 -166 b 510 -238 510 -187 510 -235 b 530 -258 510 -248 518 -258 b 563 -238 543 -258 563 -255 b 563 204 563 -229 563 98 l 649 272 b 657 288 655 276 657 282 b 652 298 657 291 655 295 z m 160 75 b 269 148 160 138 219 148 b 356 101 310 148 334 140 b 363 85 357 96 360 91 l 189 -56 b 160 66 174 -14 161 40 b 160 75 160 69 160 72 z m 53 -163 b 53 -124 53 -151 53 -138 b 76 -144 60 -131 68 -138 z m 402 -68 b 292 -148 402 -138 351 -148 b 207 -101 252 -150 226 -137 b 199 -84 204 -96 202 -91 l 373 56 b 402 -68 389 13 402 -40 z m 510 124 b 485 144 503 131 494 137 l 510 163 b 510 124 510 151 510 137 z"},noteheadSlashedWhole1:{x_min:-75,x_max:448,y_min:-211,y_max:214,ha:425,o:"m 641 301 b 625 308 636 305 631 308 b 613 304 621 307 618 307 l 439 160 b 269 196 399 181 343 196 b 0 1 71 196 0 95 b 69 -138 0 -49 20 -101 l -101 -271 b -108 -287 -105 -275 -108 -281 b -104 -298 -107 -291 -107 -294 b -88 -304 -99 -302 -94 -304 b -76 -301 -85 -304 -81 -304 l 98 -157 b 269 -193 138 -179 194 -193 b 537 1 468 -193 537 -92 b 468 141 537 52 517 104 l 638 274 b 645 289 642 278 645 284 b 641 301 644 292 644 297 z m 148 68 b 148 78 148 72 148 75 b 194 141 148 111 163 131 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 350 86 346 98 348 92 l 177 -55 b 148 68 163 -12 150 42 z m 389 -65 b 343 -138 389 -102 377 -128 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 187 -82 192 -95 190 -89 l 279 -6 l 361 58 b 389 -65 376 16 389 -39 z"},noteheadSlashedHalf1:{x_min:-98,x_max:424,y_min:-213,y_max:212,ha:425,o:"m 606 298 b 592 305 602 302 598 305 b 580 301 588 305 583 304 l 412 163 b 307 190 383 180 347 190 b 153 148 258 190 204 176 b 0 -60 58 98 0 13 b 14 -120 0 -81 4 -101 b 32 -143 20 -128 26 -135 l -134 -274 b -141 -288 -138 -276 -141 -282 b -137 -300 -141 -292 -140 -297 b -122 -307 -134 -304 -128 -307 b -111 -302 -118 -307 -114 -305 l 56 -164 b 161 -192 85 -181 121 -192 b 315 -151 210 -192 264 -179 b 468 58 410 -101 468 -16 b 454 117 468 78 464 98 b 436 141 449 125 444 134 l 603 272 b 611 287 608 275 611 281 b 606 298 611 291 609 295 z m 56 -98 b 49 -73 52 -91 49 -82 b 75 -23 49 -58 59 -39 b 199 60 99 1 147 32 b 337 118 251 89 302 111 b 359 121 344 120 351 121 b 361 121 360 121 360 121 l 225 9 l 69 -114 b 56 -98 65 -109 60 -104 z m 410 94 b 416 69 415 86 416 78 b 392 19 416 53 408 36 b 266 -65 367 -6 318 -36 b 128 -122 215 -94 163 -115 b 107 -125 121 -124 114 -125 b 104 -125 107 -125 105 -125 l 245 -9 l 396 111 b 410 94 402 107 408 101 z"},noteheadSlashedBlack1:{x_min:-98,x_max:424,y_min:-213,y_max:212,ha:425,o:"m 606 298 b 592 305 602 302 598 305 b 580 301 588 305 583 304 l 412 161 b 307 190 383 180 347 190 b 0 -60 167 190 0 72 b 32 -144 0 -89 10 -120 l -134 -274 b -141 -288 -138 -278 -141 -284 b -137 -301 -141 -292 -140 -297 b -122 -307 -134 -305 -128 -307 b -111 -304 -118 -307 -114 -307 l 56 -164 b 161 -192 82 -181 117 -192 b 468 58 311 -192 468 -71 b 436 141 468 91 456 120 l 603 271 b 611 285 608 275 611 281 b 606 298 611 289 609 294 z"},noteheadSlashedDoubleWhole2:{x_min:-66,x_max:456,y_min:-213,y_max:212,ha:425,o:"m 563 -204 b 563 236 563 -98 563 228 b 543 256 563 249 554 256 b 530 256 537 256 536 256 b 510 236 518 256 510 248 b 510 124 510 233 510 187 b 281 194 467 166 393 194 b 107 161 207 194 150 181 l 53 204 b 53 236 53 223 53 235 b 33 256 53 249 45 256 b 20 256 27 256 26 256 b 3 246 12 256 6 253 l -63 301 b -76 305 -68 304 -72 305 b -91 298 -81 305 -86 304 b -95 287 -94 295 -95 291 b -88 272 -95 281 -92 276 l 0 204 b 0 -238 0 98 0 -229 b 20 -258 0 -248 9 -258 b 33 -258 26 -258 27 -258 b 53 -238 43 -258 53 -246 b 53 -124 53 -235 53 -187 b 281 -196 96 -166 170 -196 b 456 -161 356 -196 413 -183 l 510 -206 b 510 -238 510 -225 510 -236 b 530 -258 510 -248 518 -258 b 543 -258 536 -258 537 -258 b 560 -246 549 -258 556 -252 l 626 -302 b 638 -307 631 -305 634 -307 b 654 -300 645 -307 649 -304 b 657 -288 655 -295 657 -292 b 651 -272 657 -282 655 -276 z m 207 140 b 269 148 225 144 248 148 b 356 101 310 148 336 140 b 402 -68 376 62 402 -30 b 402 -78 402 -71 402 -75 l 292 9 l 168 109 b 207 140 176 124 189 134 z m 78 144 b 53 124 69 137 60 131 b 53 163 53 137 53 150 z m 356 -141 b 294 -148 338 -145 315 -148 b 207 -101 253 -148 226 -137 b 161 66 189 -66 163 27 b 160 72 161 69 160 71 b 161 78 160 75 160 76 l 271 -9 l 395 -109 b 356 -141 387 -124 374 -134 z m 485 -144 b 510 -124 494 -138 503 -131 b 510 -163 510 -138 510 -151 z"},noteheadSlashedWhole2:{x_min:-75,x_max:448,y_min:-212,y_max:214,ha:426,o:"m 468 -138 b 537 1 517 -101 537 -49 b 269 196 537 95 468 196 b 98 160 196 196 140 181 l -76 304 b -88 308 -81 307 -84 307 b -104 301 -94 308 -99 305 b -108 289 -107 297 -107 292 b -101 274 -108 284 -105 278 l 69 141 b 0 1 20 104 0 52 b 269 -193 0 -92 71 -193 b 441 -157 343 -193 399 -179 l 613 -301 b 625 -305 618 -304 622 -305 b 641 -298 631 -305 636 -302 b 645 -287 644 -294 644 -291 b 638 -271 645 -281 642 -275 z m 194 141 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 389 -65 363 63 389 -29 b 389 -76 389 -69 389 -73 l 279 10 l 156 112 b 194 141 163 125 176 135 z m 343 -138 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 148 68 176 -63 150 29 b 148 76 148 71 148 73 b 148 81 148 78 148 79 l 258 -6 l 382 -108 b 343 -138 374 -122 361 -132 z"},noteheadSlashedHalf2:{x_min:-98,x_max:424,y_min:-213,y_max:212,ha:425,o:"m 386 -102 b 468 58 438 -55 468 4 b 454 117 468 78 464 98 b 307 190 428 164 373 190 b 153 148 258 190 204 176 b 108 120 137 140 122 130 l -111 301 b -122 305 -114 304 -118 305 b -137 298 -128 305 -134 302 b -141 287 -140 295 -141 291 b -134 272 -141 281 -138 275 l 85 101 b 0 -60 32 53 0 -7 b 14 -120 0 -81 4 -101 b 161 -192 40 -167 95 -192 b 315 -151 210 -192 264 -179 b 361 -122 333 -143 347 -132 l 580 -302 b 592 -307 583 -305 588 -307 b 606 -300 598 -307 602 -304 b 611 -288 609 -297 611 -292 b 603 -274 611 -282 608 -276 z m 199 60 b 337 118 251 89 302 111 b 359 121 344 120 351 121 b 410 94 382 121 400 112 b 416 69 415 86 416 78 b 392 19 416 53 408 36 b 308 -42 374 0 343 -20 l 245 7 l 189 55 b 199 60 192 56 196 58 z m 266 -65 b 128 -122 215 -94 163 -115 b 107 -125 121 -124 114 -125 b 56 -98 84 -125 66 -117 b 49 -73 52 -91 49 -82 b 75 -23 49 -58 59 -39 b 163 39 94 -4 125 17 l 225 -9 l 282 -56 b 266 -65 276 -59 272 -62 z"},noteheadSlashedBlack2:{x_min:-98.44444444444443,x_max:424,y_min:-213,y_max:212,ha:425,o:"m 384 -102 b 468 58 435 -58 468 0 b 307 190 468 143 396 190 b 108 121 239 190 167 163 l -111 301 b -124 305 -115 304 -120 305 b -138 298 -128 305 -134 302 b -141 289 -140 295 -141 292 b -141 287 -141 288 -143 288 b -135 272 -141 281 -140 275 l 84 101 b 0 -60 35 56 0 0 b 161 -192 0 -122 45 -192 b 361 -122 232 -192 304 -164 l 579 -302 b 590 -307 583 -305 588 -307 b 606 -300 596 -307 602 -304 b 611 -288 609 -297 611 -292 b 603 -274 609 -282 608 -276 z"},noteheadDiamondDoubleWhole:{x_min:0,x_max:373,y_min:-178,y_max:179,ha:357,o:"m 504 258 b 484 238 494 258 484 248 l 484 46 b 282 187 415 95 285 186 b 268 192 279 190 275 192 b 255 187 262 192 258 190 l 52 45 l 52 238 b 33 258 52 248 43 258 l 20 258 b 0 238 9 258 0 248 l 0 -236 b 20 -256 0 -248 9 -256 l 33 -256 b 52 -236 43 -256 52 -248 l 52 -45 l 249 -181 b 268 -190 258 -189 264 -190 b 282 -186 274 -190 279 -189 b 484 -43 285 -184 413 -94 l 484 -236 b 504 -256 484 -248 494 -256 l 517 -256 b 537 -236 528 -256 537 -248 l 537 238 b 517 258 537 248 528 258 z m 220 -115 l 102 -33 l 317 117 l 435 35 z"},noteheadDiamondWhole:{x_min:0,x_max:373,y_min:-133,y_max:132,ha:265,o:"m 282 -187 b 530 -13 285 -186 530 -13 b 537 0 534 -10 537 -6 b 530 13 537 4 534 10 b 282 186 530 13 287 183 b 268 190 279 189 275 190 b 255 186 262 190 258 189 l 7 12 b 0 -1 3 9 0 4 b 4 -13 0 -6 1 -10 l 249 -183 b 268 -192 258 -190 264 -192 b 282 -187 274 -192 279 -190 z m 220 -117 l 102 -35 l 317 115 l 435 33 z"},noteheadDiamondHalf:{x_min:0,x_max:335,y_min:-132,y_max:133,ha:265,o:"m 475 -13 b 482 0 480 -10 482 -6 b 475 13 482 4 480 10 l 253 187 b 240 192 251 190 246 192 b 229 187 236 192 232 190 l 7 13 b 0 0 3 10 0 6 b 7 -13 0 -4 3 -10 l 229 -186 b 240 -190 232 -189 236 -190 b 253 -186 246 -190 251 -189 z m 284 -115 l 92 33 l 199 117 l 390 -33 z"},noteheadDiamondBlack:{x_min:0,x_max:335,y_min:-132,y_max:133,ha:265,o:"m 475 -14 b 482 -1 480 -10 482 -6 b 475 13 482 4 480 10 l 253 187 b 240 192 251 190 246 192 b 229 187 236 192 232 190 l 7 13 b 0 0 3 10 0 4 b 7 -14 0 -6 3 -10 l 229 -186 b 240 -190 232 -189 236 -190 b 253 -186 246 -190 251 -189 z"},noteheadParenthesisRight:{x_min:0,x_max:75,y_min:-209.4142135623731,y_max:212,ha:421.4142135623731,o:"m 10 305 b 4 302 7 304 6 304 b 0 295 1 301 0 298 b 1 289 0 294 0 292 b 68 -10 1 288 68 160 b 1 -288 68 -95 50 -192 b 0 -292 0 -289 0 -291 b 4 -300 0 -295 1 -298 b 12 -301 7 -301 9 -302 b 17 -298 14 -301 16 -300 b 108 0 22 -292 108 -174 b 17 301 108 174 22 295 b 10 305 16 304 13 305 z"},noteheadParenthesisLeft:{x_min:0,x_max:75,y_min:-212,y_max:209.4142135623731,ha:421.4142135623731,o:"m 98 -305 b 104 -302 101 -304 102 -304 b 108 -295 107 -301 108 -298 b 107 -289 108 -294 108 -292 b 40 10 107 -288 40 -160 b 107 288 40 95 58 192 b 108 292 108 289 108 291 b 104 300 108 295 107 298 b 96 301 101 301 99 302 b 91 298 94 301 92 300 b 0 0 86 292 0 174 b 91 -301 0 -174 86 -295 b 98 -305 92 -304 95 -305 z"},noteheadMoonBlack:{x_min:0,x_max:310,y_min:-125,y_max:125,ha:250,o:"m 0 180 l 0 0 b 223 -180 0 -99 99 -180 b 446 0 347 -180 446 -99 l 446 180 z"},noteheadTriangleLeftBlack:{x_min:0,x_max:339,y_min:-136,y_max:122,ha:258,o:"m 0 176 l 0 -196 l 488 -196 z"},noteheadTriangleRightBlack:{x_min:0,x_max:339,y_min:-136,y_max:122,ha:258,o:"m 488 176 l 0 -196 l 488 -196 z"},noteheadTriangleRoundDownBlack:{x_min:0,x_max:310,y_min:-136,y_max:122,ha:258,o:"m 226 -196 l 446 63 b 226 176 446 63 384 176 b 0 63 68 176 0 63 z"},augmentationDot:{x_min:0,x_max:100,y_min:-50,y_max:50,ha:100,o:"m 0 0 b 72 -72 0 -40 32 -72 b 144 0 112 -72 144 -40 b 72 72 144 40 112 72 b 0 0 32 72 0 40 z"},tremolo1:{x_min:0,x_max:290,y_min:-93,y_max:96,ha:189,o:"m 0 48 l 0 -134 l 418 -43 l 418 138 z"},flag8thUp:{x_min:0,x_max:289.04376776750354,y_min:-817,y_max:12,ha:829,o:"m 0 -327 b 12 -343 0 -331 1 -338 b 291 -600 73 -363 197 -441 b 359 -827 317 -645 359 -707 b 294 -1140 359 -930 331 -1037 b 289 -1162 291 -1149 288 -1156 b 297 -1175 289 -1168 291 -1172 b 304 -1176 300 -1176 302 -1176 b 327 -1161 314 -1176 321 -1171 b 416 -798 395 -1041 418 -888 b 416 -780 416 -791 416 -786 b 302 -458 409 -595 302 -458 b 131 -220 307 -458 170 -281 b 50 -50 78 -138 53 -56 b 36 6 49 -46 36 6 b 19 17 35 12 27 17 b 0 -1 9 17 0 9 z"},flag8thDown:{x_min:0,x_max:309,y_min:-12,y_max:817,ha:829,o:"m 0 1 b 19 -17 0 -9 9 -17 b 36 -6 26 -17 35 -12 b 50 50 36 -4 49 46 b 117 196 52 56 65 111 b 331 458 173 289 259 357 b 445 780 402 559 445 654 b 338 1161 445 912 415 1021 b 317 1176 334 1171 325 1176 b 310 1175 314 1176 311 1176 b 300 1158 302 1172 300 1166 b 304 1140 300 1153 301 1146 b 384 827 361 1007 384 930 b 317 600 384 707 343 645 b 12 343 223 441 72 363 b 0 327 1 338 0 331 z"},flag16thUp:{x_min:0,x_max:279,y_min:-820,y_max:12,ha:832,o:"m 301 -681 b 148 -514 262 -631 219 -585 b 56 -372 92 -458 66 -409 b 52 -343 55 -364 53 -354 b 271 -510 125 -343 219 -442 b 340 -696 327 -583 340 -641 b 337 -739 340 -710 338 -724 b 301 -681 325 -716 312 -697 z m 0 -549 b 22 -563 0 -553 12 -559 b 258 -776 59 -576 171 -648 b 318 -950 307 -850 318 -901 b 317 -975 318 -959 318 -966 b 285 -1140 317 -1009 307 -1083 b 279 -1164 284 -1148 279 -1156 b 289 -1179 279 -1169 282 -1175 b 297 -1181 292 -1181 294 -1181 b 318 -1161 307 -1181 312 -1169 b 382 -962 344 -1120 382 -1043 b 374 -855 382 -920 379 -886 b 402 -678 389 -802 402 -749 b 333 -471 402 -603 382 -536 b 137 -228 265 -382 192 -307 b 42 0 82 -148 42 0 b 22 17 39 10 37 17 b 0 0 4 17 0 10 z"},flag16thDown:{x_min:0,x_max:309,y_min:-26,y_max:803,ha:829,o:"m 53 346 b 56 363 55 353 56 359 b 163 517 66 399 78 452 b 384 732 246 582 346 662 b 317 503 382 621 354 552 b 53 346 229 395 122 364 z m 0 -14 b 22 -37 0 -26 10 -37 b 43 -14 33 -37 40 -26 b 167 232 65 134 109 177 b 445 683 243 305 445 416 b 432 837 445 730 441 783 b 441 919 438 855 441 881 b 327 1149 441 1032 374 1112 b 304 1156 321 1153 312 1156 b 287 1152 298 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1135 b 382 930 344 1076 382 1027 b 374 876 382 912 380 893 l 373 871 b 373 871 373 871 373 871 b 327 789 366 842 350 815 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z"},flag32ndUp:{x_min:0,x_max:279,y_min:-821,y_max:186,ha:1007,o:"m 301 -683 b 148 -516 262 -632 219 -588 b 56 -373 92 -459 66 -410 b 50 -343 55 -366 53 -354 b 271 -500 125 -343 219 -432 b 340 -687 327 -575 340 -632 b 337 -739 340 -704 338 -721 b 301 -683 325 -716 312 -698 z m 271 -259 b 340 -446 327 -333 340 -392 b 338 -469 340 -455 338 -462 b 333 -461 337 -467 334 -464 b 91 -192 265 -372 145 -271 b 50 -92 69 -160 58 -124 b 271 -259 124 -92 219 -192 z m 0 -550 b 22 -564 0 -554 12 -560 b 258 -778 59 -577 171 -649 b 318 -952 307 -851 318 -903 b 317 -976 318 -960 318 -968 b 285 -1142 317 -1011 307 -1084 b 279 -1165 284 -1149 279 -1158 b 289 -1181 279 -1171 282 -1176 b 297 -1182 292 -1182 294 -1182 b 318 -1162 307 -1182 312 -1171 b 382 -963 344 -1122 382 -1044 b 374 -857 382 -922 379 -887 b 402 -668 389 -802 402 -740 b 386 -563 402 -632 396 -596 b 402 -441 395 -526 402 -487 b 402 -428 402 -436 402 -432 b 333 -220 402 -353 382 -285 b 137 23 265 -131 192 -56 b 42 251 82 102 42 251 b 22 268 39 261 37 268 b 0 251 4 268 0 261 z"},flag32ndDown:{x_min:0,x_max:309,y_min:-216,y_max:803,ha:1019,o:"m 50 73 b 91 171 58 105 71 141 b 347 402 145 251 272 317 b 384 454 361 418 374 435 b 324 239 384 347 361 287 b 50 73 235 130 122 94 z m 163 517 b 366 693 248 589 327 642 b 382 716 372 700 377 708 b 383 693 383 708 383 700 b 314 505 383 621 359 562 b 53 343 258 436 179 390 b 56 363 55 351 56 359 b 163 517 66 400 81 449 z m 0 -288 b 22 -311 0 -298 10 -311 b 43 -288 33 -311 40 -300 b 167 -40 65 -138 109 -95 b 445 409 243 32 445 143 b 431 577 445 462 439 520 b 441 651 435 602 439 626 b 441 675 441 658 441 667 b 441 687 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 305 1156 321 1153 314 1156 b 287 1152 300 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1136 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z"},flag64thUp:{x_min:0,x_max:279,y_min:-822,y_max:373,ha:1195,o:"m 333 -461 b 91 -192 265 -372 145 -271 b 50 -92 69 -161 58 -125 b 271 -251 125 -92 219 -183 b 340 -438 327 -324 340 -383 b 338 -469 340 -448 338 -459 b 333 -461 337 -467 334 -464 z m 301 -683 b 148 -517 262 -632 219 -588 b 56 -374 92 -461 66 -410 b 50 -343 55 -366 53 -356 b 271 -501 125 -343 219 -433 b 340 -688 327 -575 340 -634 b 337 -739 340 -706 338 -721 b 301 -683 325 -717 312 -698 z m 271 10 b 340 -176 327 -63 340 -121 b 337 -217 340 -190 338 -204 b 333 -212 336 -216 334 -213 b 91 65 265 -122 145 -16 b 48 177 66 101 53 143 l 50 177 b 271 10 124 177 217 78 z m 0 -552 b 22 -564 0 -554 12 -562 b 258 -778 59 -579 171 -649 b 318 -952 307 -851 317 -903 b 317 -976 318 -960 318 -968 b 285 -1142 317 -1012 307 -1084 b 279 -1165 284 -1149 279 -1158 b 289 -1181 279 -1172 282 -1178 b 297 -1184 292 -1182 295 -1184 b 318 -1164 307 -1182 312 -1172 b 382 -963 344 -1122 382 -1044 b 374 -857 382 -923 379 -887 b 402 -668 389 -804 402 -740 b 386 -563 402 -632 396 -596 b 402 -432 395 -523 402 -480 b 402 -418 402 -428 402 -423 b 383 -304 402 -379 396 -341 b 402 -170 393 -264 402 -222 b 402 -158 402 -166 402 -163 b 333 49 402 -84 382 -16 b 137 292 265 138 192 213 b 42 520 82 372 42 520 b 22 537 39 530 37 537 b 0 520 4 537 0 530 z"},flag64thDown:{x_min:0,x_max:309,y_min:-403,y_max:804,ha:1207,o:"m 52 -196 b 91 -102 59 -166 71 -131 b 347 128 145 -23 272 45 b 384 180 361 145 374 163 b 324 -30 384 76 361 16 b 52 -196 235 -140 124 -176 z m 163 517 b 366 693 248 589 327 644 b 382 717 372 701 377 708 b 383 693 383 708 383 701 b 314 505 383 621 359 562 b 53 343 258 438 179 390 b 56 363 55 351 56 359 b 163 517 66 400 81 449 z m 314 232 b 50 69 258 163 179 117 b 91 171 56 102 69 140 b 347 402 145 251 272 318 b 382 449 360 416 372 432 b 383 420 383 439 383 429 b 314 232 383 348 359 288 z m 0 -557 b 22 -580 0 -567 10 -580 b 43 -557 33 -580 40 -567 b 167 -310 65 -408 109 -364 b 445 140 243 -238 445 -125 b 431 307 445 192 439 249 b 441 377 436 331 439 354 b 441 406 441 387 441 397 b 441 418 441 410 441 413 b 423 546 441 464 432 507 b 441 651 432 582 438 618 b 441 675 441 660 441 667 b 441 688 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 305 1158 321 1153 314 1156 b 287 1152 300 1158 292 1156 b 279 1145 281 1151 279 1148 b 294 1129 279 1140 288 1136 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 563 z"},flag128thUp:{x_min:0,x_max:279,y_min:-821,y_max:573,ha:1394,o:"m 0 -550 b 22 -563 0 -553 12 -560 b 258 -776 59 -576 171 -648 b 318 -950 307 -850 318 -901 b 317 -975 318 -959 318 -966 b 285 -1140 317 -1011 307 -1083 b 279 -1164 284 -1148 279 -1156 b 289 -1179 279 -1171 282 -1176 b 297 -1182 292 -1181 294 -1181 b 318 -1162 307 -1182 312 -1169 b 382 -962 344 -1120 382 -1043 b 374 -857 382 -922 379 -887 b 402 -668 389 -802 402 -740 b 383 -554 402 -629 396 -590 b 402 -399 396 -503 402 -452 b 382 -284 402 -359 396 -321 b 402 -125 396 -230 402 -180 b 383 -14 402 -86 396 -49 b 402 130 396 35 402 81 b 333 348 402 204 382 284 b 137 592 265 438 192 513 b 42 808 82 671 46 793 b 22 825 39 818 37 825 b 0 808 4 825 0 818 z m 271 310 b 340 111 328 235 340 170 b 338 73 340 98 338 86 b 333 81 336 76 334 79 b 91 357 265 170 145 276 b 48 469 66 393 53 435 l 50 469 b 271 310 124 469 217 377 z m 301 -681 b 148 -523 262 -631 219 -593 b 56 -383 92 -465 66 -420 b 49 -343 55 -374 52 -359 l 50 -343 b 271 -500 124 -343 217 -432 b 340 -688 327 -575 340 -634 b 337 -737 340 -706 338 -721 b 301 -681 325 -716 312 -697 z m 333 -461 b 91 -192 265 -372 145 -271 b 48 -73 66 -154 53 -111 l 48 -73 l 50 -73 b 271 -232 124 -73 217 -163 b 340 -419 327 -305 340 -364 b 337 -468 340 -435 338 -452 b 333 -461 336 -465 334 -464 z m 333 -192 b 91 84 265 -102 145 4 b 48 200 65 121 53 164 l 48 200 l 50 200 b 271 42 124 200 217 109 b 340 -147 327 -32 340 -92 b 337 -197 340 -164 338 -181 b 333 -192 336 -196 334 -194 z"},flag128thDown:{x_min:0,x_max:309,y_min:-591,y_max:803,ha:1394,o:"m 0 -828 b 22 -851 0 -838 10 -851 b 43 -828 33 -851 40 -840 b 167 -580 65 -678 109 -635 b 445 -131 243 -508 445 -397 b 431 36 445 -79 439 -22 b 441 108 436 60 439 85 b 441 137 441 117 441 127 b 441 147 441 140 441 144 b 423 275 441 193 432 236 b 441 377 433 310 438 344 b 441 406 441 387 441 396 b 441 418 441 410 441 413 b 423 546 441 464 432 507 b 441 649 432 582 438 616 b 441 675 441 658 441 667 b 441 687 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 304 1156 321 1153 312 1156 b 287 1152 298 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1135 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z m 314 -37 b 50 -200 258 -107 179 -153 b 91 -102 58 -168 71 -132 b 347 128 145 -23 272 45 b 382 176 360 143 372 160 b 383 151 383 167 383 160 b 314 -37 383 79 359 19 z m 314 232 b 50 69 258 163 179 117 b 91 171 56 101 69 138 b 347 402 145 251 272 317 b 382 449 360 416 372 432 b 383 420 383 439 383 429 b 314 232 383 347 359 288 z m 163 517 b 366 693 248 589 327 642 b 382 716 372 700 377 708 b 383 693 383 708 383 700 b 314 505 382 621 359 560 b 53 343 258 436 179 390 b 56 363 55 350 56 357 b 163 517 66 399 81 449 z m 52 -467 b 91 -372 59 -435 71 -402 b 347 -141 145 -292 272 -225 b 384 -89 361 -125 374 -108 b 324 -301 382 -194 361 -255 b 52 -467 235 -410 122 -446 z"},accidentalFlat:{x_min:0,x_max:203,y_min:-176,y_max:453,ha:629,o:"m 289 114 b 173 223 281 170 246 223 b 52 170 101 223 59 179 l 58 632 b 37 652 58 644 49 652 l 20 652 b 0 632 9 652 0 644 l 7 -233 b 27 -253 7 -245 16 -253 b 39 -251 30 -253 36 -252 b 216 -114 45 -248 138 -202 b 292 78 271 -52 292 19 b 289 114 292 91 291 102 z m 190 58 b 148 -85 190 36 184 -30 b 48 -183 124 -122 75 -161 l 52 98 b 134 153 55 111 76 153 b 190 73 186 153 190 104 b 190 58 190 66 190 62 z"},accidentalNatural:{x_min:0,x_max:171,y_min:-323,y_max:325,ha:648,o:"m 239 264 b 228 268 236 266 232 268 b 222 266 226 268 223 266 l 40 216 l 40 468 l 0 468 l 0 -245 b 20 -264 0 -256 9 -264 b 26 -264 22 -264 24 -264 l 207 -213 l 207 -465 l 246 -465 b 246 248 246 -226 246 1 b 239 264 246 253 243 261 z m 40 -140 l 40 96 l 207 144 l 207 -94 z"},accidentalSharp:{x_min:0,x_max:244,y_min:-333,y_max:334,ha:667,o:"m 336 151 b 351 171 344 153 351 163 l 351 256 b 331 276 351 268 343 276 b 328 276 330 276 330 276 l 281 266 l 281 481 l 240 481 l 240 258 l 112 232 l 112 435 l 72 435 l 72 223 l 16 212 b 0 192 7 210 0 200 l 0 189 l 0 105 l 0 108 b 20 88 0 96 9 88 b 24 88 22 88 23 88 l 72 98 l 72 -140 l 16 -151 b 0 -171 7 -153 0 -163 l 0 -255 b 20 -275 0 -266 9 -275 b 24 -275 22 -275 23 -275 l 72 -265 l 72 -480 l 112 -480 l 112 -256 l 240 -230 l 240 -433 l 281 -433 l 281 -222 l 336 -212 b 351 -192 344 -210 351 -200 l 351 -107 b 331 -86 351 -95 343 -86 b 328 -86 330 -86 330 -86 l 281 -96 l 281 141 z m 112 107 l 240 132 l 240 -105 l 112 -132 z"},accidentalDoubleSharp:{x_min:0,x_max:275,y_min:-137,y_max:138,ha:275,o:"m 360 73 l 376 73 b 396 94 387 73 396 82 l 396 179 b 376 199 396 190 387 199 l 291 199 b 271 179 279 199 271 190 l 271 161 l 271 102 l 200 30 l 196 30 l 124 102 l 124 179 b 105 199 124 190 117 199 l 20 199 b 0 179 9 199 0 190 l 0 94 b 20 73 0 82 9 73 l 35 73 l 36 73 l 96 73 l 167 3 l 167 -1 l 96 -73 l 36 -73 l 35 -73 l 20 -73 b 0 -92 9 -73 0 -81 l 0 -177 b 20 -197 0 -189 9 -197 l 105 -197 b 124 -177 117 -197 124 -189 l 124 -101 l 196 -32 l 200 -32 l 271 -101 l 271 -161 l 271 -163 l 271 -177 b 291 -197 271 -189 279 -197 l 376 -197 b 396 -177 387 -197 396 -189 l 396 -92 b 376 -73 396 -81 387 -73 l 361 -73 l 360 -73 l 300 -73 l 228 -1 l 228 1 l 300 73 z"},accidentalDoubleFlat:{x_min:0,x_max:371,y_min:-176,y_max:453,ha:629,o:"m 531 115 b 415 223 523 171 488 223 b 294 171 343 223 301 180 l 300 632 b 279 652 300 644 291 652 l 262 652 b 242 632 251 652 242 644 l 246 199 b 173 223 228 213 204 223 b 52 170 101 223 59 179 l 58 632 b 37 652 58 644 49 652 l 20 652 b 0 632 9 652 0 644 l 7 -233 b 27 -253 7 -245 16 -253 b 39 -249 30 -253 36 -251 b 216 -114 45 -246 138 -202 b 248 -69 226 -102 239 -82 l 249 -233 b 269 -253 249 -245 258 -253 b 281 -249 272 -253 278 -251 b 458 -112 287 -246 380 -200 b 534 79 513 -50 534 20 b 531 115 534 92 533 104 z m 190 58 b 148 -85 190 36 184 -30 b 48 -183 124 -122 75 -161 l 52 98 b 134 153 55 111 76 153 b 190 73 186 153 190 104 b 190 58 190 66 190 62 z m 432 58 b 390 -85 432 36 426 -30 b 289 -183 366 -122 317 -161 l 294 98 b 376 153 297 111 318 153 b 432 73 428 153 432 104 b 432 58 432 66 432 62 z"},accidentalParensLeft:{x_min:0,x_max:75,y_min:-212,y_max:209.4142135623731,ha:421.4142135623731,o:"m 98 -305 b 104 -302 101 -304 102 -304 b 108 -295 107 -301 108 -298 b 107 -289 108 -294 108 -292 b 40 10 107 -288 40 -160 b 107 288 40 95 58 192 b 108 292 108 289 108 291 b 104 300 108 295 107 298 b 96 301 101 301 99 302 b 91 298 94 301 92 300 b 0 0 86 292 0 174 b 91 -301 0 -174 86 -295 b 98 -305 92 -304 95 -305 z"},accidentalParensRight:{x_min:0,x_max:75,y_min:-209.4142135623731,y_max:212,ha:421.4142135623731,o:"m 10 305 b 4 302 7 304 6 304 b 0 295 1 301 0 298 b 1 289 0 294 0 292 b 68 -10 1 288 68 160 b 1 -288 68 -95 50 -192 b 0 -292 0 -289 0 -291 b 4 -300 0 -295 1 -298 b 12 -301 7 -301 9 -302 b 17 -298 14 -301 16 -300 b 108 0 22 -292 108 -174 b 17 301 108 174 22 295 b 10 305 16 304 13 305 z"},accidentalQuarterToneFlatStein:{x_min:0,x_max:193,y_min:-176,y_max:452,ha:628,o:"m 0 84 b 107 -145 0 -26 65 -105 b 245 -249 166 -202 245 -249 b 253 -253 248 -251 249 -253 b 272 -235 264 -253 272 -245 l 278 632 b 259 651 278 642 269 651 l 248 651 b 229 632 238 651 229 642 l 232 174 b 125 217 223 186 192 217 b 0 84 53 217 0 173 z m 148 154 b 232 102 212 154 232 115 b 233 107 232 99 233 102 l 235 -179 b 134 -72 207 -156 160 -111 b 92 58 98 -17 92 36 b 92 75 92 62 92 68 b 148 154 92 105 96 154 z"},accidentalThreeQuarterTonesFlatZimmermann:{x_min:0,x_max:422,y_min:-176,y_max:452,ha:628,o:"m 608 84 b 482 217 608 173 554 217 b 376 174 416 217 384 186 l 379 632 b 360 651 379 642 370 651 l 348 651 b 330 632 338 651 330 642 l 336 -235 b 354 -253 336 -245 344 -253 b 363 -249 359 -253 360 -251 b 501 -145 363 -249 442 -202 b 608 84 543 -105 608 -26 z m 459 154 b 516 75 511 154 516 105 b 516 58 516 68 516 62 b 474 -72 516 36 510 -17 b 373 -179 448 -111 400 -156 l 374 107 b 376 102 374 102 376 99 b 459 154 376 115 396 154 z m 0 84 b 107 -145 0 -26 65 -105 b 245 -249 166 -202 245 -249 b 253 -253 248 -251 249 -253 b 272 -235 264 -253 272 -245 l 278 632 b 259 651 278 642 269 651 l 248 651 b 229 632 238 651 229 642 l 232 174 b 125 217 223 186 192 217 b 0 84 53 217 0 173 z m 148 154 b 232 102 212 154 232 115 b 233 107 232 99 233 102 l 235 -179 b 134 -72 207 -156 160 -111 b 92 58 98 -17 92 36 b 92 75 92 62 92 68 b 148 154 92 105 96 154 z"},accidentalQuarterToneSharpStein:{x_min:0,x_max:180,y_min:-316,y_max:320,ha:636,o:"m 243 144 b 259 164 252 145 259 156 l 259 249 b 239 269 259 261 251 269 b 235 268 238 269 236 268 l 150 251 l 150 461 l 109 461 l 109 242 l 16 222 b 0 203 7 220 0 212 l 0 120 b 20 99 0 108 9 99 b 24 99 22 99 23 99 l 109 117 l 109 -121 l 16 -141 b 0 -160 7 -143 0 -151 l 0 -243 b 20 -264 0 -255 9 -264 b 24 -264 22 -264 23 -264 l 109 -246 l 109 -455 l 150 -455 l 150 -238 l 243 -219 b 259 -199 252 -217 259 -207 l 259 -114 b 239 -95 259 -102 251 -95 b 235 -95 238 -95 236 -95 l 150 -112 l 150 125 z"},accidentalThreeQuarterTonesSharpStein:{x_min:0,x_max:290,y_min:-328,y_max:339,ha:667,o:"m 400 158 b 416 179 409 160 416 170 l 416 264 b 397 284 416 275 409 284 b 393 284 396 284 395 284 l 348 274 l 348 488 l 308 488 l 308 265 l 223 248 l 223 465 l 184 465 l 184 240 l 108 225 l 108 442 l 69 442 l 69 216 l 16 204 b 0 186 7 203 0 194 l 0 102 b 20 82 0 91 9 82 b 24 82 22 82 23 82 l 69 92 l 69 -147 l 16 -158 b 0 -177 7 -160 0 -168 l 0 -261 b 20 -281 0 -272 9 -281 b 24 -281 22 -281 23 -281 l 69 -272 l 69 -472 l 108 -472 l 108 -264 l 184 -248 l 184 -451 l 223 -451 l 223 -240 l 308 -223 l 308 -426 l 348 -426 l 348 -215 l 400 -204 b 418 -184 409 -203 418 -193 l 418 -99 b 397 -79 418 -88 409 -79 b 393 -79 396 -79 395 -79 l 348 -89 l 348 148 z m 184 -122 l 108 -138 l 108 99 l 184 115 z m 223 122 l 308 140 l 308 -98 l 223 -115 z"},accidentalBuyukMucennebFlat:{x_min:0,x_max:277,y_min:-176,y_max:454,ha:630,o:"m 396 115 b 279 225 387 173 354 225 b 158 171 204 225 164 179 l 160 317 l 336 419 l 336 482 l 161 380 l 161 488 l 336 590 l 336 654 l 163 552 l 164 634 b 144 654 164 645 156 654 l 127 654 b 107 634 115 654 107 645 l 108 520 l 0 456 l 0 393 l 108 456 l 109 350 l 0 285 l 0 222 l 109 287 l 114 -235 b 134 -253 114 -246 122 -253 b 145 -251 138 -253 141 -252 b 323 -114 145 -251 242 -204 b 399 79 377 -52 399 20 b 396 115 399 92 397 104 z m 297 58 b 255 -85 297 36 291 -30 b 154 -184 230 -122 181 -163 l 158 96 b 240 153 161 109 181 153 b 297 73 292 153 297 104 b 297 58 297 66 297 62 z"},accidentalBakiyeFlat:{x_min:0,x_max:277,y_min:-176,y_max:454,ha:630,o:"m 396 115 b 279 225 387 173 354 225 b 158 171 204 225 164 179 l 161 348 l 336 452 l 336 516 l 161 413 l 164 634 b 144 654 164 645 156 654 l 127 654 b 107 634 115 654 107 645 l 109 382 l 0 318 l 0 255 l 109 318 l 114 -235 b 134 -253 114 -246 122 -253 b 145 -251 138 -253 143 -252 b 323 -114 145 -251 242 -204 b 399 79 377 -52 399 20 b 396 115 399 92 397 104 z m 297 58 b 255 -85 297 36 291 -30 b 156 -184 230 -122 183 -163 l 158 96 b 240 153 161 109 181 153 b 297 73 292 153 297 104 b 297 58 297 66 297 62 z"},accidentalKucukMucennebSharp:{x_min:0,x_max:348,y_min:-316,y_max:318,ha:634,o:"m 494 121 b 482 125 491 124 487 125 b 478 124 481 125 480 124 l 269 68 l 269 127 l 412 164 b 425 181 420 167 425 173 l 425 266 b 418 282 425 272 422 279 b 406 285 415 285 410 285 b 402 285 405 285 403 285 l 269 249 l 269 458 l 232 458 l 232 239 l 89 200 b 76 181 81 197 76 190 l 76 98 b 84 84 76 92 79 86 b 95 79 86 81 91 79 b 99 81 96 79 98 81 l 232 115 l 232 58 l 14 -3 b 0 -20 6 -6 0 -12 l 0 -104 b 7 -118 0 -109 3 -115 b 19 -122 10 -121 14 -122 b 23 -122 20 -122 22 -122 l 232 -66 l 232 -124 l 89 -163 b 76 -180 81 -166 76 -171 l 76 -264 b 84 -279 76 -269 79 -276 b 95 -282 86 -282 91 -282 b 99 -282 96 -282 98 -282 l 232 -246 l 232 -455 l 269 -455 l 269 -236 l 412 -199 b 425 -180 420 -196 425 -189 l 425 -95 b 418 -81 425 -89 422 -84 b 406 -76 415 -78 410 -76 b 402 -78 405 -76 403 -78 l 269 -114 l 269 -55 l 487 4 b 501 22 495 7 501 13 l 501 107 b 494 121 501 112 498 118 z"},articAccentAbove:{x_min:0,x_max:361,y_min:0,y_max:235,ha:235,o:"m 26 337 b 20 338 24 337 22 338 b 0 318 9 338 0 330 l 0 285 b 14 266 0 276 7 269 l 323 170 l 14 72 b 0 53 7 69 0 62 l 0 20 b 20 0 0 9 9 0 b 26 1 22 0 24 1 l 505 150 b 520 170 513 153 520 161 b 505 189 520 179 513 186 z"},articAccentBelow:{x_min:0,x_max:361,y_min:-235,y_max:0,ha:235,o:"m 26 -1 b 20 0 24 -1 22 0 b 0 -20 9 0 0 -9 l 0 -53 b 14 -72 0 -62 7 -69 l 323 -168 l 14 -266 b 0 -285 7 -269 0 -276 l 0 -318 b 20 -338 0 -330 9 -338 b 26 -337 22 -338 24 -337 l 505 -189 b 520 -168 513 -186 520 -177 b 505 -150 520 -160 513 -153 z"},articTenutoAbove:{x_min:0,x_max:316,y_min:0,y_max:46,ha:46,o:"m 20 66 b 0 46 9 66 0 58 l 0 20 b 20 0 0 9 9 0 l 435 0 b 455 20 446 0 455 9 l 455 46 b 435 66 455 58 446 66 z"},articTenutoBelow:{x_min:0,x_max:316,y_min:-46,y_max:0,ha:46,o:"m 20 0 b 0 -20 9 0 0 -9 l 0 -46 b 20 -66 0 -58 9 -66 l 435 -66 b 455 -46 446 -66 455 -58 l 455 -20 b 435 0 455 -9 446 0 z"},articStaccatoAbove:{x_min:-.25,x_max:78.25,y_min:-.25,y_max:78,ha:78.25,o:"m 16 16 b 96 16 39 -6 73 -6 b 96 95 118 39 118 73 b 16 95 73 118 39 118 b 16 16 -6 73 -6 39 z"},articStaccatoBelow:{x_min:-.25,x_max:78.25,y_min:-78.25,y_max:0,ha:78.25,o:"m 16 -96 b 96 -96 39 -118 73 -118 b 96 -17 118 -73 118 -39 b 16 -17 73 6 39 6 b 16 -96 -6 -39 -6 -73 z"},articStaccatissimoAbove:{x_min:0,x_max:127,y_min:0,y_max:248,ha:248,o:"m 163 357 b 150 353 154 357 150 353 l 99 300 b 92 295 96 297 95 295 b 85 300 89 295 88 297 l 35 353 b 22 357 35 353 30 357 b 0 338 13 357 0 351 b 73 22 0 323 73 22 b 92 0 75 16 78 0 b 111 22 107 0 109 16 b 183 338 111 22 183 323 b 163 357 183 351 171 357 z"},articStaccatissimoBelow:{x_min:0,x_max:127,y_min:-248,y_max:0,ha:248,o:"m 20 -357 b 33 -353 29 -357 33 -353 l 84 -300 b 91 -295 86 -297 88 -295 b 98 -300 94 -295 95 -297 l 148 -353 b 161 -357 148 -353 153 -357 b 183 -338 170 -357 183 -351 b 109 -22 183 -323 109 -22 b 91 0 108 -16 105 0 b 72 -22 76 0 73 -16 b 0 -338 72 -22 0 -323 b 20 -357 0 -351 12 -357 z"},articMarcatoAbove:{x_min:1,x_max:296,y_min:0,y_max:253,ha:253,o:"m 36 10 l 173 239 l 298 10 b 317 0 301 4 310 0 l 408 0 b 426 20 419 0 426 9 b 425 30 426 23 426 27 l 230 356 b 213 364 226 361 222 363 b 196 356 207 364 199 361 l 1 30 z"},articMarcatoBelow:{x_min:0,x_max:295,y_min:-253,y_max:0,ha:253,o:"m 390 -10 l 253 -239 l 128 -10 b 109 0 125 -4 117 0 l 19 0 b 0 -20 7 0 0 -9 b 1 -30 0 -23 0 -27 l 196 -356 b 213 -364 200 -361 204 -363 b 230 -356 219 -364 228 -361 l 425 -30 z"},fermataAbove:{x_min:0,x_max:622,y_min:0,y_max:368,ha:368,o:"m 778 374 b 448 530 642 521 523 530 b 120 374 373 530 255 521 b 0 65 49 297 0 143 b 20 19 0 37 6 19 b 161 265 60 19 40 143 b 445 373 268 372 410 373 b 448 373 446 373 446 373 b 451 373 449 373 449 373 b 734 265 485 373 628 372 b 876 19 855 143 835 19 b 896 65 890 19 896 36 b 778 374 896 143 848 298 z m 348 99 b 448 0 348 45 393 0 b 547 99 503 0 547 45 b 448 199 547 154 503 199 b 348 99 393 199 348 154 z"},fermataBelow:{x_min:0,x_max:622,y_min:-368,y_max:0,ha:368,o:"m 778 -374 b 896 -65 848 -298 896 -143 b 876 -19 896 -36 890 -19 b 734 -265 835 -19 855 -143 b 451 -373 628 -372 485 -373 b 448 -373 449 -373 449 -373 b 445 -373 446 -373 446 -373 b 161 -265 410 -373 268 -372 b 20 -19 40 -143 60 -19 b 0 -65 6 -19 0 -37 b 120 -374 0 -143 49 -297 b 448 -530 255 -521 373 -530 b 778 -374 523 -530 642 -521 z m 348 -99 b 448 -199 348 -154 393 -199 b 547 -99 503 -199 547 -154 b 448 0 547 -45 503 0 b 348 -99 393 0 348 -45 z"},fermataLongAbove:{x_min:0,x_max:623,y_min:0,y_max:368,ha:368,o:"m 40 0 l 40 399 l 858 399 l 858 0 l 897 0 l 897 510 b 877 530 897 521 888 530 l 20 530 b 0 510 9 530 0 521 l 0 0 z m 350 148 b 449 49 350 94 395 49 b 547 148 504 49 547 94 b 449 248 547 203 504 248 b 350 148 395 248 350 203 z"},fermataLongBelow:{x_min:0,x_max:623,y_min:-368,y_max:0,ha:368,o:"m 0 -510 b 20 -530 0 -521 9 -530 l 877 -530 b 897 -510 888 -530 897 -521 l 897 0 l 858 0 l 858 -399 l 40 -399 l 40 0 l 0 0 z m 350 -148 b 449 -248 350 -203 395 -248 b 547 -148 504 -248 547 -203 b 449 -49 547 -94 504 -49 b 350 -148 395 -49 350 -94 z"},fermataVeryLongAbove:{x_min:0,x_max:842,y_min:0,y_max:549,ha:549,o:"m 276 0 l 276 399 l 936 399 l 936 0 l 976 0 l 976 510 b 956 530 976 521 968 530 l 256 530 b 236 510 245 530 236 521 l 236 0 z m 507 148 b 606 49 507 94 552 49 b 706 148 661 49 706 94 b 606 248 706 203 661 248 b 507 148 552 248 507 203 z m 40 0 l 40 661 l 1172 661 l 1172 0 l 1212 0 l 1212 772 b 1192 791 1212 783 1204 791 l 20 791 b 0 772 9 791 0 783 l 0 0 z"},fermataVeryLongBelow:{x_min:0,x_max:842,y_min:-549,y_max:0,ha:549,o:"m 236 -510 b 256 -530 236 -521 245 -530 l 956 -530 b 976 -510 968 -530 976 -521 l 976 0 l 936 0 l 936 -399 l 276 -399 l 276 0 l 236 0 z m 507 -148 b 606 -248 507 -203 552 -248 b 706 -148 661 -248 706 -203 b 606 -49 706 -94 661 -49 b 507 -148 552 -49 507 -94 z m 0 -772 b 20 -791 0 -783 9 -791 l 1192 -791 b 1212 -772 1204 -791 1212 -783 l 1212 0 l 1172 0 l 1172 -661 l 40 -661 l 40 0 l 0 0 z"},fermataShortAbove:{x_min:0,x_max:642,y_min:0,y_max:454,ha:454,o:"m 363 148 b 462 49 363 94 408 49 b 562 148 517 49 562 94 b 462 248 562 203 517 248 b 363 148 408 248 363 203 z m 477 645 b 461 654 474 649 467 654 b 445 645 455 654 448 649 l 4 32 b 0 20 3 29 0 23 b 20 0 0 9 9 0 l 82 0 b 98 9 88 0 95 4 l 461 514 l 827 9 b 842 0 829 4 837 0 l 904 0 b 924 20 916 0 924 9 b 920 32 924 23 922 29 z"},fermataShortBelow:{x_min:0,x_max:642,y_min:-454,y_max:0,ha:454,o:"m 363 -148 b 462 -248 363 -203 408 -248 b 562 -148 517 -248 562 -203 b 462 -49 562 -94 517 -49 b 363 -148 408 -49 363 -94 z m 920 -32 b 924 -20 922 -29 924 -23 b 904 0 924 -9 916 0 l 842 0 b 827 -9 837 0 829 -4 l 461 -514 l 98 -9 b 82 0 95 -4 88 0 l 20 0 b 0 -20 9 0 0 -9 b 4 -32 0 -23 3 -29 l 445 -645 b 461 -654 448 -649 455 -654 b 477 -645 467 -654 474 -649 z"},breathMarkComma:{x_min:0,x_max:191,y_min:0,y_max:321,ha:321,o:"m 82 0 b 275 285 215 92 275 183 b 115 462 275 396 212 462 b 0 356 46 462 0 413 b 115 246 0 294 53 246 b 181 258 157 246 177 256 b 192 261 184 259 189 261 b 199 259 194 261 196 261 b 203 245 202 258 203 253 b 48 43 203 183 147 112 z"},caesura:{x_min:0,x_max:380,y_min:0,y_max:490,ha:490,o:"m 285 706 b 285 706 285 706 285 706 b 271 696 279 706 274 701 l 1 22 b 0 16 0 20 0 17 b 16 0 0 7 7 0 l 50 0 b 65 10 56 0 62 4 l 334 684 b 336 690 334 685 336 688 b 320 706 336 698 328 706 z m 213 22 b 212 16 213 20 212 17 b 228 0 212 7 219 0 l 262 0 b 276 10 268 0 274 4 l 546 684 b 547 690 547 685 547 688 b 531 706 547 698 540 706 l 497 706 b 482 696 491 706 485 701 z"},caesuraCurved:{x_min:0,x_max:368,y_min:0,y_max:491,ha:491,o:"m 262 707 b 245 693 253 707 246 701 b 1 26 233 603 177 348 b 0 17 0 23 0 20 b 16 0 0 9 6 0 b 30 7 22 0 27 3 b 318 687 259 341 304 602 b 318 690 318 688 318 688 b 301 707 318 698 310 707 z m 474 707 b 458 693 465 707 459 701 b 213 26 446 603 389 348 b 212 19 212 23 212 20 b 229 0 212 9 219 0 b 243 7 235 0 240 3 b 530 687 472 341 516 602 b 530 690 530 688 530 688 b 514 707 530 698 523 707 z"},restMaxima:{x_min:0,x_max:450,y_min:-250,y_max:250,ha:500,o:"m 158 -360 b 180 -338 170 -360 180 -350 l 180 338 b 158 360 180 350 170 360 l 22 360 b 0 338 9 360 0 350 l 0 -338 b 22 -360 0 -350 9 -360 z m 626 -360 b 648 -338 638 -360 648 -350 l 648 338 b 626 360 648 350 638 360 l 490 360 b 468 338 477 360 468 350 l 468 -338 b 490 -360 468 -350 477 -360 z"},restDoubleWhole:{x_min:0,x_max:125,y_min:-11,y_max:262,ha:273,o:"m 158 -16 b 180 6 171 -16 180 -6 l 180 356 b 158 377 180 367 171 377 l 22 377 b 0 356 10 377 0 367 l 0 6 b 22 -16 0 -6 10 -16 z"},restWhole:{x_min:0,x_max:325,y_min:-131,y_max:5,ha:136,o:"m 20 7 b 0 -13 9 7 0 -1 l 0 -168 b 20 -189 0 -180 9 -189 l 448 -189 b 468 -168 459 -189 468 -180 l 468 -13 b 448 7 468 -1 459 7 z"},restWholeLegerLine:{x_min:-139,x_max:464,y_min:-122,y_max:14,ha:136,o:"m 449 20 l 19 20 l -200 20 l -200 -20 l 0 -20 l 0 -156 b 19 -176 0 -167 7 -176 l 449 -176 b 468 -156 461 -176 468 -167 l 468 -20 l 668 -20 l 668 20 z"},restHalf:{x_min:0,x_max:325,y_min:-4,y_max:132,ha:136,o:"m 0 14 b 20 -6 0 -6 0 -6 l 448 -6 b 468 14 468 -6 468 -6 l 468 170 b 448 190 468 190 468 190 l 20 190 b 0 170 0 190 0 190 z"},restHalfLegerLine:{x_min:-139,x_max:464,y_min:-14,y_max:122,ha:136,o:"m 668 20 l 468 20 l 468 156 b 449 176 468 167 461 176 l 19 176 b 0 156 7 176 0 167 l 0 20 l -200 20 l -200 -20 l 19 -20 l 449 -20 l 668 -20 z"},restQuarter:{x_min:0,x_max:235,y_min:-331,y_max:401,ha:732,o:"m 331 -239 b 323 -229 330 -238 327 -235 l 157 -24 b 154 -16 156 -23 154 -19 b 157 -3 154 -12 156 -6 l 304 219 b 307 229 305 222 307 226 l 307 242 b 302 253 307 246 305 251 l 69 569 b 55 577 69 569 63 577 b 43 573 50 577 48 576 b 36 559 37 569 36 563 b 40 543 36 550 40 543 l 150 393 b 154 376 153 389 154 383 b 150 359 154 370 153 363 l 4 137 b 1 125 3 134 1 128 l 1 112 b 6 101 1 108 3 104 l 167 -99 b 131 -95 161 -98 148 -95 b 49 -124 107 -95 75 -101 b 0 -229 17 -153 0 -193 b 16 -285 0 -249 4 -269 b 154 -468 46 -331 154 -468 b 171 -477 154 -468 161 -477 b 180 -474 174 -477 177 -477 b 190 -456 187 -468 190 -462 b 186 -444 190 -451 187 -446 b 135 -353 181 -436 135 -353 b 125 -307 135 -353 125 -333 b 150 -246 125 -288 131 -265 b 206 -223 167 -229 187 -223 b 252 -236 225 -223 240 -229 l 308 -272 b 320 -275 308 -272 314 -275 b 334 -268 325 -275 330 -274 b 338 -255 337 -262 338 -259 b 334 -243 338 -251 337 -248 z"},rest8th:{x_min:0,x_max:276,y_min:-255,y_max:204,ha:459,o:"m 384 292 b 379 294 383 292 380 294 b 360 282 370 294 363 289 b 245 141 354 274 310 189 b 180 112 226 127 203 117 b 206 181 196 131 206 154 b 104 284 206 238 160 284 b 0 181 46 284 0 238 b 65 85 0 137 27 101 b 144 68 86 75 115 68 b 269 109 186 68 230 81 b 320 157 287 122 304 140 l 156 -356 l 194 -367 l 396 268 b 397 275 397 269 397 272 b 384 292 397 282 393 288 z"},rest16th:{x_min:1,x_max:344,y_min:-507,y_max:204,ha:711,o:"m 494 268 b 495 275 495 271 495 272 b 482 292 495 282 491 289 b 475 294 480 294 477 294 b 456 282 467 294 461 289 b 285 115 422 213 364 135 b 310 184 302 135 310 158 b 203 284 310 240 259 284 b 104 177 145 281 104 233 b 171 84 105 134 134 98 b 252 69 197 72 225 69 b 423 164 324 72 380 108 l 423 164 l 359 -65 b 183 -245 338 -132 256 -226 b 207 -176 199 -225 207 -200 b 102 -76 207 -118 158 -76 b 1 -183 45 -76 1 -125 b 69 -275 1 -226 32 -262 b 150 -289 96 -287 121 -289 b 321 -194 222 -287 278 -251 l 174 -720 l 213 -730 z"},rest32nd:{x_min:0,x_max:391,y_min:-507,y_max:460,ha:967,o:"m 217 71 b 408 171 348 71 402 161 l 354 -46 b 184 -240 323 -121 268 -217 b 204 -171 200 -220 204 -197 b 102 -76 204 -114 158 -76 b 0 -177 46 -76 0 -120 b 140 -288 0 -252 63 -288 b 320 -186 216 -288 276 -246 l 189 -721 l 228 -730 l 562 638 b 563 644 563 639 563 642 b 549 661 563 652 557 658 b 543 662 547 662 544 662 b 524 649 534 662 528 657 b 361 487 497 589 431 504 b 383 556 379 508 383 530 b 282 652 383 611 338 652 b 179 549 226 652 179 609 b 249 451 179 505 210 464 b 311 439 268 444 288 441 b 330 441 317 439 323 439 b 498 541 400 445 458 485 l 442 310 b 271 117 413 238 351 137 b 292 186 288 138 292 160 b 189 282 292 243 245 282 b 88 180 132 282 88 238 b 217 71 88 112 153 71 z"},rest64th:{x_min:0,x_max:423,y_min:-758,y_max:464,ha:1222,o:"m 207 -1083 l 246 -1092 b 608 644 282 -919 605 634 b 609 649 608 647 609 648 b 595 667 609 658 603 665 b 589 668 593 668 592 668 b 569 654 577 668 575 664 b 474 521 563 644 530 573 b 412 487 456 505 435 494 b 432 546 425 503 432 526 b 328 649 432 606 382 649 b 226 546 275 649 226 608 b 360 438 226 465 300 438 b 501 492 419 438 474 465 b 546 546 527 518 533 526 l 547 547 l 500 323 b 399 161 491 300 452 209 b 337 125 382 144 360 132 b 357 184 350 143 357 134 b 253 288 357 235 317 288 b 151 187 190 288 151 236 b 285 76 151 138 183 76 b 471 184 412 76 465 173 l 423 -45 b 324 -204 413 -69 374 -158 b 262 -240 305 -222 284 -233 b 281 -180 274 -223 281 -212 b 177 -78 281 -147 258 -78 b 75 -180 98 -78 75 -153 b 209 -289 75 -207 88 -289 b 395 -181 330 -289 389 -193 l 350 -397 b 248 -564 337 -449 285 -530 b 186 -599 229 -580 207 -592 b 204 -540 197 -583 204 -563 b 102 -438 204 -501 174 -438 b 0 -540 29 -438 0 -501 b 132 -648 0 -579 24 -648 b 320 -540 266 -648 315 -552 z"},rest128th:{x_min:-1,x_max:475,y_min:-759,y_max:717,ha:1476,o:"m 677 1028 b 664 1032 672 1031 667 1032 b 644 1018 654 1032 649 1028 b 549 886 638 1008 605 937 b 487 851 531 870 510 858 b 507 910 500 868 507 890 b 403 1014 507 971 456 1014 b 301 910 350 1014 301 972 b 435 802 301 829 374 802 b 576 857 494 802 549 829 b 621 910 602 883 608 890 l 622 912 l 575 687 b 474 526 566 664 527 573 b 412 490 456 508 435 497 b 432 549 425 507 432 498 b 328 652 432 599 392 652 b 226 552 265 652 226 600 b 360 441 226 503 258 441 b 546 549 487 441 540 537 l 498 320 b 399 160 488 295 449 207 b 337 125 380 143 359 131 b 356 184 348 141 356 153 b 252 287 356 217 333 287 b 150 184 173 287 150 212 b 284 76 150 157 163 76 b 469 183 405 76 464 171 l 425 -33 b 323 -200 412 -85 360 -166 b 261 -235 304 -216 282 -228 b 279 -176 272 -219 279 -199 b 177 -72 279 -137 249 -72 b 75 -176 104 -72 75 -137 b 207 -284 75 -215 99 -284 b 395 -176 341 -284 390 -187 l 347 -409 b 248 -566 330 -461 282 -533 b 186 -600 229 -582 207 -593 b 204 -541 197 -583 204 -564 b 102 -438 204 -501 174 -438 b -1 -541 29 -438 -1 -503 b 132 -649 -1 -580 24 -649 b 318 -546 256 -649 307 -567 l 206 -1084 l 245 -1093 b 683 1008 281 -920 680 996 b 684 1015 683 1009 684 1014 b 677 1028 684 1020 683 1024 z"},dynamicPiano:{x_min:-95,x_max:317,y_min:-163,y_max:263,ha:426,o:"m 186 -235 l 186 -206 l 78 -206 l 161 26 l 166 16 b 229 -29 166 16 180 -16 b 256 -32 238 -32 248 -32 b 445 166 336 -32 415 49 b 456 246 454 197 456 223 b 374 373 456 343 396 367 b 356 376 369 374 361 376 b 242 314 311 376 266 338 l 238 310 l 235 315 b 154 377 235 315 204 370 b 138 379 148 377 144 379 b 0 226 91 379 42 346 l 26 213 b 63 301 32 232 46 278 b 102 328 72 314 89 325 b 108 328 104 328 107 328 b 120 325 112 328 117 327 b 127 304 125 321 127 314 b 94 192 127 269 101 206 l -49 -206 l -137 -206 l -137 -235 z m 226 17 b 215 19 223 17 217 17 b 187 81 193 27 187 53 b 204 180 187 125 203 177 b 297 317 217 235 259 295 b 324 325 307 323 315 325 b 336 324 328 325 333 325 b 350 311 341 323 347 317 b 356 278 354 302 356 291 b 333 161 356 239 341 187 b 242 20 314 105 278 37 b 226 17 238 17 230 17 z"},dynamicMezzo:{x_min:-7,x_max:374,y_min:-2,y_max:251,ha:253,o:"m 488 63 b 467 48 481 50 474 48 b 459 49 464 48 462 48 b 449 65 452 52 449 58 b 461 112 449 76 455 94 b 474 157 464 121 471 150 b 492 281 482 183 492 242 b 491 301 492 288 492 295 b 436 359 484 340 467 359 b 340 307 399 359 359 331 l 337 301 l 334 308 b 272 359 334 308 311 359 b 177 310 232 359 202 343 l 173 304 l 171 311 b 117 360 171 311 153 353 b 96 361 109 361 102 361 b 29 328 60 361 39 340 b -10 252 20 318 0 284 l 12 240 b 68 318 12 240 36 318 b 75 317 71 318 72 318 b 86 295 84 314 86 307 b 59 194 86 275 75 240 b 1 20 59 193 6 33 b 0 13 1 17 0 16 b 3 4 0 10 1 7 b 14 -1 6 1 9 -1 l 36 -1 b 91 -1 58 -1 86 -1 b 107 22 94 -1 101 -1 b 127 99 114 53 121 79 b 235 310 132 121 186 310 b 243 305 238 310 242 308 b 248 289 246 302 248 297 b 216 160 248 265 233 219 b 173 22 194 89 173 22 b 173 16 173 20 173 19 b 176 3 173 12 173 6 b 187 -1 179 0 183 -1 l 266 -1 b 282 16 272 -1 279 0 b 284 26 282 17 284 22 b 392 302 312 228 359 288 b 396 304 393 302 395 304 l 397 304 b 400 302 399 304 399 302 b 408 289 403 301 408 297 b 369 140 408 275 399 217 b 356 75 360 117 356 95 b 370 23 356 55 360 37 b 428 -3 382 6 408 -3 b 536 99 492 -3 517 49 b 539 108 537 102 537 105 l 514 120 b 488 63 514 120 498 81 z"},dynamicForte:{x_min:-137,x_max:334,y_min:-193,y_max:421,ha:614,o:"m -122 -86 b -197 -161 -161 -86 -197 -122 b -81 -278 -197 -236 -147 -278 b 35 -228 -35 -278 -1 -264 b 202 173 98 -164 167 50 b 238 297 215 219 228 264 l 238 300 l 341 300 b 356 314 350 300 356 305 l 356 346 b 341 360 356 354 350 360 l 256 360 l 256 364 b 330 554 297 511 308 537 b 359 566 341 563 351 566 b 366 564 361 566 364 564 b 380 553 373 563 377 559 b 382 546 382 550 382 549 b 373 528 382 539 379 531 b 351 478 359 517 351 498 b 354 458 351 471 353 465 b 384 426 359 445 370 432 b 410 420 390 423 400 420 b 445 431 420 420 432 423 b 478 472 459 438 474 456 b 481 497 481 480 481 488 b 467 550 481 514 477 533 b 376 605 455 572 422 598 b 351 606 369 606 360 606 b 225 553 317 606 272 595 b 122 363 187 520 154 456 l 122 360 l 13 360 b -1 346 4 360 -1 354 l -1 314 b 13 300 -1 305 4 300 l 102 300 l 102 294 b 66 140 88 236 76 187 b 24 -35 55 86 42 32 l 20 -52 b -53 -235 -10 -170 -19 -212 b -78 -242 -60 -239 -69 -242 b -98 -235 -85 -242 -92 -239 b -105 -222 -102 -232 -105 -228 b -105 -219 -105 -220 -105 -220 b -94 -204 -104 -213 -101 -207 b -58 -144 -66 -193 -58 -167 b -122 -86 -58 -124 -71 -86 z"},dynamicRinforzando:{x_min:-12,x_max:230,y_min:0,y_max:254,ha:254,o:"m 272 364 b 200 341 239 364 212 348 b 168 310 187 333 177 321 l 164 304 b 109 363 164 304 151 353 b 88 366 102 364 95 366 b 22 331 52 366 32 343 b -17 255 13 321 -7 287 l 4 243 b 60 321 4 243 29 321 b 68 320 63 321 65 321 b 78 297 75 317 78 308 b 49 180 78 272 65 230 l 0 23 b 0 17 0 22 0 20 b 3 4 0 13 0 7 b 14 0 6 1 10 0 l 94 0 b 109 17 99 0 107 1 b 111 27 109 19 111 23 b 209 302 140 230 186 279 b 225 311 215 308 220 311 b 229 310 226 311 228 311 b 233 304 233 307 233 305 b 233 301 233 302 233 301 b 216 268 220 291 216 279 b 225 243 216 259 219 249 b 262 229 235 232 249 229 b 304 242 279 229 295 235 b 331 308 320 255 331 275 b 272 364 331 341 304 364 z"},dynamicSforzando:{x_min:0,x_max:208,y_min:-5,y_max:263,ha:268,o:"m 242 328 b 217 289 222 317 217 300 b 258 249 217 274 230 249 b 298 284 285 249 295 269 b 300 295 300 287 300 291 b 189 379 300 328 272 379 b 49 259 92 379 49 315 b 99 173 49 229 59 196 b 164 137 117 163 140 151 b 194 88 189 122 194 102 b 124 24 194 73 177 24 b 72 46 82 24 72 39 b 73 49 72 48 72 49 b 96 96 78 52 96 62 b 50 150 96 134 72 150 b 0 91 29 150 0 134 b 124 -7 0 26 49 -7 b 282 111 199 -7 282 24 b 171 239 282 197 207 219 b 128 292 135 259 128 268 b 193 347 128 317 156 347 b 242 328 230 347 242 328 z"},dynamicZ:{x_min:-42,x_max:239,y_min:-1,y_max:258,ha:259,o:"m 229 292 b 235 288 232 292 233 291 b 236 284 236 285 236 285 b 233 278 236 281 235 279 b -42 55 232 276 -4 85 b -60 24 -56 43 -60 33 b -50 4 -60 12 -50 4 b -35 0 -45 1 -40 0 b 9 29 -14 0 1 19 b 50 69 17 43 26 69 b 89 35 75 69 81 50 b 170 -1 104 10 137 -1 b 243 22 197 -1 223 6 b 304 147 288 56 304 118 b 264 196 304 176 294 196 b 226 156 239 196 226 174 b 251 117 226 128 249 122 b 251 108 251 114 251 111 b 243 79 251 98 249 88 b 212 56 236 68 223 56 b 202 59 209 56 204 56 b 163 92 194 63 186 75 b 108 122 140 109 114 120 b 105 125 105 124 105 124 b 107 128 105 127 107 128 b 312 304 107 128 302 294 b 341 340 324 315 336 327 b 344 347 343 341 344 346 l 344 356 b 333 369 343 367 336 369 l 331 369 l 262 363 b 217 361 245 361 230 361 b 156 366 193 361 174 363 b 114 372 147 367 125 372 b 107 370 111 372 108 370 b 86 344 98 367 89 360 b 37 222 72 265 42 232 b 37 219 37 220 37 220 b 50 207 37 213 43 207 l 66 207 b 81 225 75 207 76 215 b 108 291 85 235 105 285 b 118 297 111 297 112 297 b 167 289 125 295 144 291 b 181 289 171 289 177 289 b 229 292 202 289 222 291 z"},ornamentTrill:{x_min:-12,x_max:383,y_min:0,y_max:383,ha:383,o:"m 464 396 b 376 359 408 396 376 359 l 364 370 b 346 377 357 377 346 377 l 197 377 l 246 528 b 246 531 246 530 246 531 b 226 552 246 541 236 552 l 213 552 b 199 544 209 552 202 547 b 124 482 196 541 130 487 b 117 471 118 478 117 471 b 84 377 117 471 102 431 l 3 377 b -17 360 -14 377 -17 360 l -17 341 b 3 324 -17 325 3 324 l 66 324 b 0 85 35 229 0 117 b 92 0 0 16 48 0 b 186 35 137 0 186 35 b 194 13 186 35 190 24 b 212 0 199 1 212 0 l 276 0 b 298 16 295 0 298 16 l 298 43 b 321 147 298 75 321 147 l 382 284 b 412 325 382 284 396 311 b 446 341 425 336 438 341 b 452 340 448 341 451 341 b 428 288 432 327 428 305 b 485 233 428 271 446 233 b 552 308 534 233 552 264 b 464 396 552 353 520 396 z m 222 143 b 147 78 210 104 171 78 b 137 79 143 78 140 78 b 121 115 125 85 121 99 b 137 190 121 148 137 190 l 180 324 l 275 324 b 279 320 279 324 279 320 b 222 143 279 320 235 187 z"},ornamentTurn:{x_min:0,x_max:456,y_min:0,y_max:232,ha:232,o:"m 527 334 b 442 269 488 334 442 312 b 501 204 442 228 468 204 b 570 226 533 204 540 226 b 613 164 598 226 613 204 l 613 163 b 550 98 613 127 586 98 b 448 143 508 98 485 109 l 328 255 l 298 284 b 174 334 262 317 223 334 b 0 170 92 334 0 278 b 131 0 0 68 58 0 b 215 65 170 0 215 22 b 156 130 215 107 189 130 b 86 108 124 130 117 108 b 43 170 59 108 43 130 l 43 171 b 108 236 43 207 72 236 b 209 192 150 236 171 225 l 328 79 l 360 50 b 482 0 396 17 433 0 b 657 164 564 0 657 56 b 527 334 657 266 600 334 z"},ornamentTurnSlash:{x_min:0,x_max:456,y_min:-80,y_max:313,ha:393,o:"m 527 334 b 442 269 488 334 442 312 b 501 204 442 228 468 204 b 570 226 533 204 540 226 b 613 164 598 226 613 204 l 613 163 b 550 98 613 127 586 98 b 448 143 508 98 485 109 l 354 230 l 354 431 b 336 451 354 442 347 451 l 323 451 b 302 431 311 451 302 442 l 302 279 l 298 284 b 174 334 262 317 223 334 b 0 170 92 334 0 278 b 131 0 0 68 58 0 b 215 65 170 0 215 22 b 156 130 215 107 189 130 b 86 108 124 130 117 108 b 43 170 59 108 43 130 l 43 171 b 108 236 43 207 72 236 b 209 192 150 236 171 225 l 302 104 l 302 -96 b 323 -115 302 -108 311 -115 l 336 -115 b 354 -96 347 -115 354 -108 l 354 55 l 360 50 b 482 0 396 17 433 0 b 657 164 564 0 657 56 b 527 334 657 266 600 334 z"},ornamentMordent:{x_min:0,x_max:473,y_min:-77,y_max:316,ha:393,o:"m 647 302 l 562 166 l 446 347 b 429 357 444 353 435 357 b 413 347 423 357 416 353 l 363 262 l 363 435 b 343 455 363 446 354 455 l 331 455 b 311 435 320 455 311 446 l 311 173 l 310 171 l 203 347 b 186 357 200 353 192 357 b 168 347 180 357 171 353 l 0 69 l 35 48 l 120 189 l 226 10 b 243 0 229 4 238 0 b 261 10 249 0 258 4 l 311 95 l 311 -91 b 331 -111 311 -102 320 -111 l 343 -111 b 363 -91 354 -111 363 -102 l 363 184 l 366 189 l 478 10 b 495 0 481 4 490 0 b 513 10 501 0 510 4 l 681 281 z"},ornamentShortTrill:{x_min:0,x_max:473,y_min:0,y_max:248,ha:248,o:"m 647 302 l 562 166 l 446 347 b 431 357 444 353 436 357 b 413 347 425 357 416 353 l 310 171 l 203 347 b 186 357 200 353 192 357 b 168 347 180 357 173 353 l 0 69 l 35 48 l 120 189 l 226 10 b 243 0 229 4 238 0 b 261 10 249 0 258 4 l 366 189 l 478 9 b 495 0 481 3 490 0 b 513 10 501 0 510 4 l 681 281 z"},ornamentTremblement:{x_min:0,x_max:654,y_min:0,y_max:248,ha:248,o:"m 907 302 l 822 166 l 708 348 b 691 357 704 354 701 357 b 674 347 685 357 677 353 l 648 302 l 563 166 l 449 348 b 432 357 446 354 438 357 b 415 347 426 357 418 353 l 415 346 l 311 171 l 203 348 b 186 357 200 354 192 357 b 168 348 177 357 171 354 l 168 347 l 0 69 l 35 48 l 120 190 l 226 10 b 243 0 229 4 238 0 l 245 0 b 261 10 251 0 258 4 l 367 189 l 480 10 b 497 0 482 4 491 0 b 513 10 503 0 510 4 l 625 192 l 739 10 b 756 0 742 4 750 0 b 772 10 762 0 769 4 l 942 282 z"},ornamentPrecompAppoggTrill:{x_min:0,x_max:680,y_min:0,y_max:388,ha:388,o:"m 860 170 l 746 353 b 729 361 743 359 737 361 b 713 351 723 361 716 357 l 685 307 l 600 170 l 487 353 b 481 359 485 356 484 357 b 469 361 478 360 472 361 b 452 351 464 361 455 357 l 348 176 l 240 353 b 223 361 238 359 229 361 b 206 353 215 361 209 359 l 40 76 l 40 541 b 20 559 39 552 30 559 b 0 541 10 559 1 552 l 0 26 b 19 1 0 16 9 4 b 26 0 20 1 24 0 b 48 13 35 0 43 6 l 72 52 l 157 194 l 265 14 b 282 4 268 9 276 4 b 298 14 288 4 295 9 l 405 193 l 517 14 b 534 4 520 9 528 4 b 550 14 540 4 547 9 l 664 196 l 776 14 b 793 4 779 9 788 4 b 811 14 799 4 808 9 l 979 287 l 945 307 z"},ornamentPrecompSlideTrillDAnglebert:{x_min:0,x_max:662,y_min:-158,y_max:248,ha:406,o:"m 834 166 l 720 348 b 704 357 717 354 713 357 b 687 348 697 357 690 353 l 661 302 l 660 302 l 575 166 l 461 348 b 455 354 459 350 456 353 b 444 357 452 356 448 357 b 428 347 438 357 431 353 l 323 171 l 215 347 b 213 350 215 348 215 350 b 213 350 213 350 213 350 l 213 351 l 212 351 l 212 353 l 210 353 l 210 353 l 209 354 b 207 354 209 354 207 354 b 197 357 206 356 200 357 b 197 357 197 357 197 357 b 194 357 196 357 196 357 b 180 347 187 357 183 353 l 180 346 l 69 164 b 0 -50 23 88 0 17 b 49 -219 0 -108 16 -163 b 66 -228 52 -223 59 -228 b 76 -225 69 -228 73 -226 b 86 -207 82 -222 86 -215 b 84 -197 86 -204 85 -200 b 40 -52 55 -150 40 -102 b 104 143 40 10 62 73 l 131 190 l 239 10 b 256 0 242 4 249 0 l 256 0 b 272 10 262 0 269 4 l 379 189 l 491 10 b 508 0 494 4 503 0 b 508 0 508 0 508 0 l 508 0 b 526 10 514 0 521 4 l 638 192 l 750 10 b 768 0 755 4 762 0 l 768 0 b 785 10 773 0 782 4 l 785 10 l 953 282 l 919 302 z"},ornamentPrecompSlideTrillBach:{x_min:0,x_max:662,y_min:-158,y_max:321,ha:479,o:"m 834 166 l 720 348 b 704 357 716 354 713 357 b 687 348 698 357 690 354 l 660 304 l 660 302 l 632 259 l 632 442 b 612 462 632 454 624 462 l 599 462 b 579 442 588 462 579 454 l 579 173 l 575 166 l 461 348 b 455 356 459 351 458 354 b 445 359 452 357 448 359 b 428 348 439 359 431 354 l 323 171 l 215 347 b 213 350 215 348 213 350 l 213 351 l 212 353 l 210 353 l 210 354 l 207 354 b 197 357 204 356 200 357 b 180 348 189 357 183 354 l 179 346 l 69 164 b 0 -49 23 88 0 19 b 49 -217 0 -107 17 -163 b 66 -228 52 -223 60 -228 b 76 -225 69 -228 73 -226 b 86 -207 82 -222 86 -213 b 84 -197 86 -204 85 -200 b 42 -50 56 -148 42 -101 b 104 144 42 12 62 75 l 131 190 l 239 10 b 256 0 242 4 251 0 b 274 10 262 0 271 4 l 379 190 l 491 10 b 508 0 494 4 503 0 b 526 10 514 0 523 4 l 579 98 l 579 -84 b 599 -104 579 -95 588 -104 l 612 -104 b 632 -84 624 -104 632 -95 l 632 183 l 638 192 l 750 10 b 768 0 753 4 762 0 b 785 10 773 0 782 4 l 953 282 l 919 302 z"},ornamentPrecompTrillSuffixDandrieu:{x_min:0,x_max:662,y_min:0,y_max:406,ha:406,o:"m 904 575 b 887 585 901 580 893 585 b 877 582 884 585 880 583 b 867 564 871 579 867 570 b 870 554 867 562 868 557 b 912 408 897 505 912 458 b 850 213 912 346 891 282 l 822 167 l 714 348 b 697 357 711 354 703 357 b 680 348 691 357 683 354 l 575 168 l 462 348 b 445 357 459 354 451 357 b 428 348 439 357 431 354 l 315 167 l 203 348 b 186 357 200 354 192 357 b 168 348 180 357 171 354 l 0 76 l 35 55 l 120 192 l 233 10 b 249 0 238 4 240 0 b 266 10 255 0 264 4 l 294 55 l 379 192 l 492 9 b 498 3 494 6 495 4 b 508 0 501 1 505 0 b 526 10 514 0 523 4 l 631 186 l 737 13 b 746 3 739 10 743 4 b 756 0 749 1 753 0 b 773 9 762 0 770 3 l 884 193 b 953 406 930 269 953 338 b 904 575 953 464 936 520 z"},ornamentPrecompDoubleCadenceUpperPrefix:{x_min:0,x_max:857,y_min:0,y_max:248,ha:248,o:"m 383 140 b 413 189 399 166 412 187 b 520 10 423 171 516 16 b 537 0 523 4 530 0 b 554 10 543 0 550 4 b 660 189 557 16 649 171 b 772 10 671 173 766 19 b 791 0 778 1 785 0 b 806 10 796 0 802 4 b 919 192 809 16 907 174 l 1031 10 b 1048 0 1035 4 1043 0 l 1048 0 b 1066 10 1054 1 1063 4 l 1066 10 l 1234 282 l 1200 302 l 1115 166 l 1002 348 b 985 357 998 354 994 357 b 968 348 978 357 971 353 l 855 166 b 742 348 845 183 746 341 b 726 357 737 354 732 357 b 708 348 719 357 711 354 b 603 171 704 341 613 189 b 495 348 593 189 498 343 b 478 357 492 353 487 357 b 461 348 469 357 464 353 b 357 173 459 346 393 235 b 213 79 320 111 284 79 b 66 176 143 79 95 112 b 40 279 43 228 40 275 b 20 300 40 291 30 300 b 0 278 9 300 0 289 b 29 161 0 276 3 219 b 213 39 65 81 130 39 b 383 140 297 39 346 73 z"},ornamentPrecompTrillLowerSuffix:{x_min:0,x_max:565,y_min:-171,y_max:249,ha:420,o:"m 347 168 l 235 348 b 217 359 230 354 226 359 b 200 348 209 359 203 353 b 3 30 197 344 6 35 b 0 20 0 26 0 24 b 22 0 0 9 10 0 b 37 9 27 0 35 3 l 151 192 b 265 10 161 174 262 13 b 281 0 268 6 272 0 b 298 10 289 0 295 3 l 403 186 l 511 10 b 528 0 516 4 521 0 b 546 10 537 0 541 4 l 698 265 b 775 22 744 202 775 112 b 700 -215 775 -60 752 -144 b 696 -226 697 -219 696 -222 b 704 -243 696 -232 700 -239 b 717 -246 708 -246 713 -246 b 733 -239 723 -246 729 -243 b 814 20 789 -160 814 -69 b 711 312 814 132 773 242 b 696 320 707 317 700 320 b 680 310 691 320 684 318 b 595 168 671 297 602 181 l 488 348 b 471 359 484 354 478 359 b 454 348 464 359 456 353 b 347 168 449 343 357 186 z"},brassMuteClosed:{x_min:0,x_max:312,y_min:0,y_max:312,ha:312,o:"m 22 256 b 0 225 7 256 0 240 b 22 193 0 209 7 193 l 193 193 l 193 22 b 225 0 193 7 209 0 b 256 22 240 0 256 7 l 256 193 l 428 193 b 449 225 442 193 449 209 b 428 256 449 240 442 256 l 256 256 l 256 428 b 225 449 256 442 240 449 b 193 428 209 449 193 442 l 193 256 z"},brassMuteOpen:{x_min:0,x_max:280,y_min:0,y_max:280,ha:280,o:"m 202 403 b 0 202 91 403 0 312 b 202 0 0 91 91 0 b 403 202 312 0 403 91 b 202 403 403 312 312 403 z m 202 40 b 40 202 112 40 40 112 b 202 363 40 291 112 363 b 363 202 291 363 363 291 b 202 40 363 112 291 40 z"},stringsDownBow:{x_min:0,x_max:315,y_min:0,y_max:293,ha:293,o:"m 40 0 l 40 291 l 413 291 l 413 0 l 454 0 l 454 402 b 433 422 454 413 445 422 l 20 422 b 0 402 9 422 0 402 l 0 0 z"},stringsUpBow:{x_min:0,x_max:262,y_min:0,y_max:343,ha:343,o:"m 374 485 b 357 494 372 490 363 494 l 337 494 b 318 481 330 494 321 488 l 189 118 l 59 481 b 40 494 56 488 48 494 l 20 494 b 0 474 9 494 0 485 b 1 467 0 472 1 468 l 170 13 b 189 0 173 6 181 0 b 207 13 196 0 204 6 l 376 467 b 377 474 376 468 377 472 b 374 485 377 477 376 482 z"},stringsHarmonic:{x_min:0,x_max:181,y_min:0,y_max:181,ha:181,o:"m 131 220 b 220 131 181 220 220 181 b 131 40 220 81 181 40 b 40 131 81 40 40 81 b 131 220 40 181 81 220 z m 131 261 b 0 131 59 261 0 203 b 131 0 0 59 59 0 b 261 131 203 0 261 59 b 131 261 261 203 203 261 z"},pluckedSnapPizzicatoAbove:{x_min:0,x_max:269,y_min:0,y_max:389,ha:389,o:"m 213 540 b 194 560 213 552 204 560 b 174 540 183 560 174 552 l 174 386 b 0 193 76 376 0 294 b 194 0 0 86 86 0 b 387 193 301 0 387 86 b 213 386 387 294 311 376 z m 194 40 b 40 193 109 40 40 109 b 174 346 40 271 98 336 l 174 193 b 194 173 174 183 183 173 b 213 193 204 173 213 183 l 213 346 b 347 193 289 336 347 271 b 194 40 347 109 278 40 z"},pluckedSnapPizzicatoBelow:{x_min:0,x_max:269,y_min:0,y_max:389,ha:389,o:"m 213 174 b 387 367 311 184 387 266 b 193 560 387 474 301 560 b 0 367 86 560 0 474 b 174 174 0 266 76 184 l 174 20 b 194 0 174 9 183 0 b 213 20 204 0 213 9 z m 194 520 b 347 367 278 520 347 452 b 213 215 347 289 289 225 l 213 367 b 194 387 213 377 204 387 b 174 367 183 387 174 377 l 174 215 b 40 367 98 225 40 289 b 194 520 40 452 109 520 z"},keyboardPedalPed:{x_min:0,x_max:981,y_min:-10,y_max:545,ha:555,o:"m 1354 12 b 1413 78 1385 12 1413 42 b 1354 145 1413 115 1385 145 b 1293 78 1320 145 1293 115 b 1354 12 1293 42 1320 12 z m 1092 88 b 1080 86 1089 86 1084 86 b 1004 203 1037 86 1004 137 b 1107 376 1004 360 1097 374 b 1149 209 1129 336 1149 287 b 1092 88 1149 117 1130 95 z m 752 393 b 795 344 779 393 795 372 b 770 285 795 325 788 304 b 693 203 737 249 697 207 b 688 264 690 225 688 245 b 752 393 688 347 714 393 z m 245 507 b 220 544 245 533 235 544 b 217 544 219 544 219 544 b 186 510 206 546 192 537 b 143 464 179 478 163 464 b 134 465 140 464 137 464 b 102 516 117 467 102 487 b 141 613 102 541 112 576 b 347 721 212 711 315 721 b 356 721 351 721 354 721 b 275 560 344 701 297 616 b 259 495 274 557 259 528 b 272 452 259 480 264 465 b 373 323 297 416 350 354 b 387 284 382 311 387 298 b 350 222 387 265 376 245 b 230 140 301 180 252 154 b 128 39 215 130 128 92 b 134 12 128 30 130 22 b 173 -14 144 -7 157 -14 b 264 40 204 -14 243 17 b 333 98 281 58 302 98 b 389 39 357 98 373 60 b 478 -10 416 1 435 -10 b 622 96 527 -10 559 43 b 740 -10 626 86 667 -10 b 929 95 827 -10 917 85 b 1086 -12 950 37 1018 -12 b 1120 -7 1097 -12 1109 -10 b 1264 213 1212 17 1264 111 b 1263 248 1264 225 1263 236 b 815 664 1228 544 907 647 b 785 668 805 665 795 668 b 779 668 783 668 782 668 b 757 654 769 668 760 665 b 757 649 757 652 757 651 b 786 618 759 629 783 619 b 818 606 796 613 808 611 b 1071 435 1007 534 1066 445 b 909 181 930 386 909 256 b 910 141 909 164 909 151 b 786 78 899 127 844 78 b 708 151 726 78 710 144 b 799 230 711 154 742 181 b 864 350 845 271 864 312 b 757 456 864 410 815 456 b 599 222 644 456 599 328 b 609 141 599 192 602 164 b 563 104 608 140 595 122 b 540 98 556 99 549 98 b 459 140 513 98 480 118 b 397 184 413 189 399 184 b 475 279 403 189 454 226 b 482 311 480 289 482 300 b 449 410 482 359 452 405 b 361 533 442 419 383 503 b 354 560 356 541 354 550 b 386 651 353 588 372 622 b 429 713 405 693 426 710 b 557 592 521 688 557 628 b 549 569 557 582 554 573 b 523 559 540 562 531 559 b 459 592 495 559 469 583 b 425 613 451 600 438 613 b 409 608 419 613 415 612 b 399 586 402 602 399 595 b 399 583 397 585 399 585 b 409 552 399 573 405 562 b 541 458 441 487 492 458 b 608 480 564 458 588 465 b 648 572 632 497 648 531 b 429 778 648 649 589 749 b 351 785 402 782 376 785 b 0 507 130 785 0 615 b 127 366 0 399 68 366 b 245 507 186 366 245 429 z"},keyboardPedalUp:{x_min:0,x_max:473,y_min:0,y_max:473,ha:473,o:"m 99 99 b 164 69 120 79 143 69 b 199 82 177 69 190 73 b 210 114 206 89 210 102 b 206 137 210 122 209 130 b 200 160 203 145 200 154 b 210 179 200 166 203 171 l 245 215 b 285 213 255 225 272 219 l 287 213 l 288 212 b 318 183 301 206 318 196 l 318 134 b 291 102 318 112 308 112 b 258 58 274 92 258 76 b 340 0 258 26 294 0 b 423 58 386 0 423 26 b 390 102 423 76 408 92 b 361 134 373 112 361 112 l 361 183 b 392 212 361 196 379 206 b 395 213 393 212 393 213 b 436 215 408 219 426 225 l 471 179 b 480 161 478 171 480 167 b 474 137 480 154 477 147 b 471 115 472 130 471 122 b 482 82 471 102 474 91 b 517 69 491 73 504 69 b 582 99 539 69 562 79 b 612 164 602 120 612 143 b 599 199 612 177 608 190 b 567 210 592 206 579 210 b 544 206 559 210 552 209 b 521 200 536 203 528 200 b 501 210 514 200 508 203 l 467 245 b 468 285 456 255 462 272 l 468 287 b 469 288 468 287 469 287 b 498 318 475 301 485 318 l 547 318 b 579 291 569 318 569 308 b 624 258 589 274 605 258 b 681 340 655 258 681 294 b 624 423 681 386 655 423 b 579 390 605 423 589 408 b 547 361 569 373 569 361 l 498 361 b 469 392 485 361 475 379 b 468 395 469 393 468 393 b 467 436 462 408 456 426 l 501 471 b 520 480 508 478 514 480 b 544 474 527 480 534 477 b 566 471 552 472 559 471 b 599 482 579 471 590 474 b 612 516 608 491 612 503 b 582 580 612 536 602 560 b 516 612 562 600 537 612 b 482 599 503 612 491 608 b 471 566 474 590 471 579 b 474 544 471 559 472 552 b 480 520 477 534 480 527 b 471 501 480 514 478 508 l 436 467 b 395 468 426 456 408 462 b 392 469 393 468 393 469 b 361 498 379 475 361 485 l 361 547 b 390 579 361 569 373 569 b 423 624 408 589 423 605 b 340 681 423 655 386 681 b 258 624 294 681 258 655 b 291 579 258 605 274 589 b 318 547 308 569 318 569 l 318 498 b 288 469 318 485 301 475 l 287 468 l 285 468 b 245 467 272 462 255 456 l 210 501 b 200 521 203 508 200 514 b 206 544 200 528 203 536 b 210 567 209 552 210 559 b 199 599 210 579 206 592 b 164 612 190 608 177 612 b 99 582 143 612 120 602 b 69 517 79 562 69 539 b 82 482 69 504 73 491 b 115 471 91 474 102 471 b 137 474 122 471 130 472 b 161 480 147 477 154 480 b 180 471 167 480 173 478 l 215 436 b 213 395 225 426 219 408 b 212 392 213 393 212 393 b 183 361 206 379 196 361 l 134 361 b 102 390 112 361 112 373 b 58 423 92 408 76 423 b 0 340 26 423 0 386 b 58 258 0 294 26 258 b 102 291 76 258 92 274 b 134 318 112 308 112 318 l 183 318 b 212 288 196 318 206 301 b 213 287 212 287 213 288 l 213 285 b 215 245 219 272 225 255 l 179 210 b 160 200 171 203 166 200 b 137 206 154 200 145 203 b 114 210 130 209 122 210 b 82 199 102 210 89 206 b 69 164 73 190 69 177 b 99 99 69 143 79 120 z m 276 276 b 249 340 262 291 249 320 b 340 432 249 390 289 432 b 432 340 390 432 432 390 b 405 276 432 320 419 291 b 340 249 390 262 360 249 b 276 276 320 249 291 262 z"},wiggleArpeggiatoUp:{x_min:-22,x_max:242,y_min:0,y_max:164,ha:164,o:"m 343 122 b 323 143 343 122 334 132 b 308 148 318 147 312 148 b 298 144 304 148 301 147 b 282 128 295 141 291 137 b 274 124 279 125 276 124 b 265 128 268 124 265 128 b 158 220 265 128 173 207 b 112 236 143 232 127 236 b 43 206 82 236 55 219 l -26 137 b -32 125 -30 132 -32 130 b -26 112 -32 118 -26 112 b -6 92 -26 112 -17 102 b 7 86 -1 88 3 86 b 17 91 12 86 14 88 b 33 107 20 94 24 98 b 42 111 36 109 39 111 b 52 107 48 111 52 107 b 158 16 52 107 144 29 b 204 0 174 4 190 0 b 274 30 235 0 262 17 l 343 99 b 348 111 347 104 348 108 b 343 122 348 118 343 122 z"},repeat1Bar:{x_min:0,x_max:481,y_min:-250,y_max:250,ha:500,o:"m 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 693 -181 b 602 -91 693 -131 651 -91 b 511 -181 552 -91 511 -131 b 602 -272 511 -232 552 -272 b 693 -181 651 -272 693 -232 z"},repeat2Bars:{x_min:0,x_max:735,y_min:-250,y_max:250,ha:500,o:"m 1058 -181 b 968 -91 1058 -131 1017 -91 b 877 -181 917 -91 877 -131 b 968 -272 877 -232 917 -272 b 1058 -181 1017 -272 1058 -232 z m 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 1058 360 l 877 360 l 366 -360 l 547 -360 z"},repeat4Bars:{x_min:0,x_max:1243,y_min:-250,y_max:250,ha:500,o:"m 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 1058 360 l 877 360 l 366 -360 l 547 -360 z m 1424 360 l 1243 360 l 732 -360 l 913 -360 z m 1790 360 l 1608 360 l 1097 -360 l 1279 -360 z m 1790 -181 b 1699 -91 1790 -131 1748 -91 b 1608 -181 1649 -91 1608 -131 b 1699 -272 1608 -232 1649 -272 b 1790 -181 1748 -272 1790 -232 z"},repeatBarSlash:{x_min:0,x_max:481,y_min:-250,y_max:250,ha:500,o:"m 693 360 l 511 360 l 0 -360 l 181 -360 z"},csymDiminished:{x_min:0,x_max:501,y_min:0,y_max:501,ha:501,o:"m 361 721 b 0 361 161 721 0 560 b 361 0 0 161 161 0 b 721 361 560 0 721 161 b 361 721 721 560 560 721 z m 557 164 b 361 82 505 111 435 82 b 164 164 287 82 216 111 b 82 361 111 216 82 287 b 164 557 82 436 111 505 b 361 639 216 611 287 639 b 557 557 436 639 505 611 b 639 361 611 505 639 436 b 557 164 639 287 609 216 z"},csymHalfDiminished:{x_min:-1,x_max:502,y_min:-1,y_max:502,ha:503,o:"m 723 684 l 684 723 l 596 634 b 361 721 533 688 451 721 b 0 361 161 721 0 560 b 88 125 0 271 33 189 l -1 36 l 36 -1 l 125 88 b 361 0 189 33 271 0 b 721 361 560 0 721 161 b 634 596 721 451 688 533 z m 82 361 b 164 557 82 436 111 505 b 361 639 216 611 287 639 b 537 576 426 639 488 616 l 145 184 b 82 361 105 233 82 295 z m 639 361 b 557 164 639 287 609 216 b 361 82 505 111 435 82 b 184 145 295 82 233 105 l 576 537 b 639 361 616 488 639 426 z"},csymAugmented:{x_min:1,x_max:321,y_min:90,y_max:410,ha:320,o:"m 462 400 l 272 400 l 272 590 l 192 590 l 192 400 l 1 400 l 1 320 l 192 320 l 192 130 l 272 130 l 272 320 l 462 320 z"},csymMajorSeventh:{x_min:0,x_max:500,y_min:10,y_max:490,ha:480,o:"m 360 528 l 585 96 l 135 96 z m 360 706 l 0 14 l 720 14 z"},accidentalNarrowReversedFlat:{x_min:0,x_max:160,y_min:-176,y_max:452,ha:628,o:"m 0 84 b 101 -153 0 -26 65 -107 b 196 -249 153 -217 196 -249 b 206 -253 199 -251 202 -253 b 225 -235 216 -253 225 -245 l 230 632 b 212 651 230 642 222 651 l 199 651 b 180 632 189 651 180 642 l 184 204 b 125 217 184 204 171 217 b 0 84 53 217 0 173 z m 145 154 b 184 107 181 154 184 120 l 187 -179 b 114 -72 167 -158 132 -112 b 82 58 86 -13 82 36 b 145 154 82 79 82 154 z"},accidentalNarrowReversedFlatAndFlat:{x_min:0,x_max:416,y_min:-176,y_max:452,ha:628,o:"m 462 217 b 330 174 374 217 338 181 l 334 632 b 315 651 334 642 325 651 l 302 651 b 284 632 292 651 284 642 l 289 -235 b 308 -253 289 -245 298 -253 b 320 -249 312 -253 317 -251 b 492 -138 320 -249 433 -194 b 599 84 534 -98 599 -26 b 462 217 599 173 534 217 z m 501 58 b 459 -72 501 36 498 -19 b 327 -179 431 -111 359 -164 l 330 85 l 330 91 b 422 154 330 125 359 154 b 501 58 503 154 501 79 z m 0 84 b 101 -153 0 -26 65 -107 b 196 -249 153 -217 196 -249 b 206 -253 199 -251 202 -253 b 225 -235 216 -253 225 -245 l 230 632 b 212 651 230 642 222 651 l 199 651 b 180 632 189 651 180 642 l 184 204 b 125 217 184 204 171 217 b 0 84 53 217 0 173 z m 145 154 b 184 107 181 154 184 120 l 187 -179 b 114 -72 167 -158 132 -112 b 82 58 86 -13 82 36 b 145 154 82 79 82 154 z"}},fontFamily:"Leland",resolution:1e3,generatedOn:"2022-06-26T17:49:33.853Z"},metrics:{name:"Leland",smufl:!0,stave:{padding:12,endPaddingMax:10,endPaddingMin:5,unalignedNotePadding:10},accidental:{noteheadAccidentalPadding:1,leftPadding:2,accidentalSpacing:3},clef:{default:{point:32,width:26},small:{point:26,width:20},annotations:{"8va":{smuflCode:"timeSig8",default:{point:18,treble:{line:-1.4,shiftX:12}},small:{point:16,treble:{line:-.2,shiftX:8}}},"8vb":{smuflCode:"timeSig8",default:{point:18,treble:{line:6,shiftX:10},bass:{line:3.5,shiftX:1}},small:{point:16,treble:{line:5.3,shiftX:6},bass:{line:3.1,shiftX:.5}}}},lineCount:{8:{point:55,shiftY:14},7:{point:47,shiftY:8},6:{point:32,shiftY:1},5:{point:30,shiftY:-6},4:{point:23,shiftY:-12}}},parenthesis:{default:{point:39,width:7},gracenote:{point:23.4,width:3}},pedalMarking:{up:{point:40},down:{point:34}},digits:{shiftLine:-1,point:34,tupletPoint:22,shiftY:-6},articulation:{articStaccatissimoAbove:{padding:2},articStaccatissimoBelow:{padding:2}},tremolo:{default:{point:25,spacing:5,offsetYStemUp:-5,offsetYStemDown:5,offsetXStemUp:11,offsetXStemDown:1},grace:{point:18,spacing:4,offsetYStemUp:-5,offsetYStemDown:5,offsetXStemUp:7,offsetXStemDown:1}},staveRepetition:{symbolText:{offsetX:12,offsetY:25,spacing:5},coda:{offsetY:25},segno:{offsetY:10}},stem:{heightAdjustmentForFlag:-3,noteHead:{noteheadTriangleUpHalf:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpBlack:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpWhole:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadXHalf:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXBlack:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXWhole:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadHalf:{offsetYBaseStemUp:-2.55,offsetYBaseStemDown:2.65},noteheadBlack:{offsetYBaseStemUp:-2,offsetYBaseStemDown:2},noteheadSquareWhite:{offsetYBaseStemDown:-5,offsetYBaseStemUp:5}}},glyphs:{coda:{point:20,shiftX:-7,shiftY:8},segno:{shiftX:-7},flag:{shiftX:-.75,staveTempo:{shiftX:-1}},clef:{gClef:{default:{scale:1.1,shiftY:1},small:{shiftY:1.5}},fClef:{default:{shiftY:-.5}}},ornament:{ornamentTurn:{scale:1.2},ornamentTurnSlash:{scale:1.2}},stringNumber:{verticalPadding:8,stemPadding:2,leftPadding:5,rightPadding:6},stroke:{arrowheadBlackDown:{straight:{shiftX:-4.5},wiggly:{shiftX:-1,shiftY:1}},arrowheadBlackUp:{straight:{shiftX:-.85},wiggly:{shiftX:-1,shiftY:1}}},textNote:{point:34,breathMarkTick:{point:36,shiftY:9},breathMarkComma:{point:36},segno:{point:30,shiftX:-7,shiftY:8},coda:{point:20,shiftX:-7,shiftY:8},ornamentTrill:{shiftX:-8,shiftY:8},ornamentTurn:{point:42},ornamentTurnSlash:{point:42},ornamentMordent:{shiftX:-8},ornamentShortTrill:{shiftX:-8}},noteHead:{minPadding:2,standard:{restQuarterStemUp:{point:35},restQuarterStemDown:{point:35}},custom:{noteheadCircleXStemUp:{shiftX:1.5},noteheadCircleXStemDown:{shiftX:.25},noteheadDiamondHalfStemUp:{shiftX:1.5},noteheadDiamondBlackStemUp:{shiftX:1.5},noteheadDiamondWholeStemUp:{shiftX:1},noteheadXHalfStemUp:{shiftX:-2},noteheadXHalfStemDown:{shiftX:1},noteheadXWholeStemUp:{shiftX:-4},noteheadXWholeStemDown:{shiftX:1},noteheadSquareWhiteStemDown:{shiftX:.25},noteheadSquareWhiteStemUp:{shiftX:-.75},noteheadSquareBlackStemUp:{shiftX:-.75},noteheadTriangleUpWholeStemUp:{shiftX:-.75}}},chordSymbol:{global:{superscriptOffset:-400,subscriptOffset:300,kerningOffset:-250,lowerKerningText:["D","F","P","T","V","Y"],upperKerningText:["A","L"],spacing:100,superSubRatio:.66},csymDiminished:{scale:.8,leftSideBearing:-32,advanceWidth:506,yOffset:0},csymHalfDiminished:{scale:.8,leftSideBearing:-32,advanceWidth:506,yOffset:0},csymAugmented:{scale:1,leftSideBearing:0,advanceWidth:530,yOffset:0},csymParensLeftTall:{scale:.8,leftSideBearing:-20,advanceWidth:184,yOffset:250},csymParensRightTall:{scale:.8,leftSideBearing:0,advanceWidth:189,yOffset:250},csymBracketLeftTall:{scale:.8,leftSideBearing:0,advanceWidth:328,yOffset:0},csymBracketRightTall:{scale:.8,leftSideBearing:1,advanceWidth:600,yOffset:0},csymParensLeftVeryTall:{scale:.9,leftSideBearing:50,advanceWidth:121,yOffset:350},csymParensRightVeryTall:{scale:.9,leftSideBearing:0,advanceWidth:111,yOffset:350},csymDiagonalArrangementSlash:{scale:.6,leftSideBearing:-1,advanceWidth:990,yOffset:0},csymMinor:{scale:.8,leftSideBearing:0,advanceWidth:482,yOffset:0},csymMajorSeventh:{scale:.9,leftSideBearing:200,yOffset:0,advanceWidth:600},accidentalSharp:{scale:.75,leftSideBearing:20,advanceWidth:250,yOffset:-302},accidentalFlat:{scale:.9,leftSideBearing:-20,advanceWidth:226,yOffset:-184}},jazzOrnaments:{brassScoop:{scale:1,xOffset:-12,yOffset:0,stemUpYOffset:0,reportedWidth:20},brassDoitMedium:{scale:1,xOffset:16,yOffset:0,stemUpYOffset:0,reportedWidth:22},brassFallLipShort:{scale:1,xOffset:16,yOffset:0,stemUpYOffset:0,reportedWidth:15},brassLiftMedium:{scale:1,xOffset:16,yOffset:5,stemUpYOffset:0,reportedWidth:5},brassFallRoughMedium:{scale:1,xOffset:16,yOffset:28,stemUpYOffset:0,reportedWidth:5},brassBend:{scale:1,xOffset:2,yOffset:-8,stemUpYOffset:25,reportedWidth:5},brassMuteClosed:{scale:1,xOffset:3,yOffset:-8,stemUpYOffset:25,reportedWidth:5},brassMuteOpen:{scale:1,xOffset:3,yOffset:-7,stemUpYOffset:25,reportedWidth:5},brassFlip:{scale:1,xOffset:10,yOffset:0,stemUpYOffset:7,reportedWidth:10},brassJazzTurn:{scale:1,xOffset:0,yOffset:0,stemUpYOffset:8,reportedWidth:31},brassSmear:{scale:1,xOffset:10,yOffset:0,stemUpYOffset:8,reportedWidth:5}},tuplet:{noteHeadOffset:20,stemOffset:10,bottomLine:4,topModifierOffset:15}}}};return l=l.default})()})); +//# sourceMappingURL=vexflow-font-leland.js.map \ No newline at end of file diff --git a/build/cjs/vexflow-font-leland.js.map b/build/cjs/vexflow-font-leland.js.map new file mode 100644 index 0000000000..44fdfc7e4a --- /dev/null +++ b/build/cjs/vexflow-font-leland.js.map @@ -0,0 +1 @@ +{"version":3,"file":"vexflow-font-leland.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAqB,YAAID,KAEzBD,EAAkB,YAAIA,EAAkB,aAAK,GAAIA,EAAkB,YAAU,OAAIC,KARnF,CASsB,oBAAXK,OAAyBA,OAA+B,oBAAfC,WAA6BA,WAAaC,MAAO,WACrG,M,mBCTA,IAAIC,EAAsB,CCA1BA,EAAwB,CAACP,EAASQ,KACjC,IAAI,IAAIC,KAAOD,EACXD,EAAoBG,EAAEF,EAAYC,KAASF,EAAoBG,EAAEV,EAASS,IAC5EE,OAAOC,eAAeZ,EAASS,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,MCJ3EF,EAAwB,CAACQ,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,I,4BCA3E,MCQP,EAJoB,CAChBI,KDLsB,CACtBC,OAAQ,CACJC,WAAY,CACRC,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,2NAEPkB,cAAe,CACXL,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,kPAEPmB,MAAO,CACHN,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,4vCAEPoB,KAAM,CACFP,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qnBAEPqB,MAAO,CACHR,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,KACPC,GAAI,KACJjB,EAAG,qxCAEPsB,MAAO,CACHT,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2mCAEPuB,MAAO,CACHV,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,s/BAEPwB,yBAA0B,CACtBX,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ySAEP,iBAAkB,CACda,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,g3BAEPyB,SAAU,CACNZ,MAAO,GACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0PAEP0B,SAAU,CACNb,MAAO,GACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,+XAEP2B,SAAU,CACNd,MAAO,GACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,sxBAEP4B,SAAU,CACNf,MAAO,mBACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,msBAEP6B,SAAU,CACNhB,MAAO,GACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4xBAEP8B,SAAU,CACNjB,MAAO,GACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2gCAEP+B,SAAU,CACNlB,MAAO,GACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6jBAEPgC,SAAU,CACNnB,MAAO,GACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,suBAEPiC,SAAU,CACNpB,MAAO,GACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,scAEPkC,SAAU,CACNrB,MAAO,GACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6kBAEPmC,cAAe,CACXtB,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mhBAEPoC,iBAAkB,CACdvB,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,uwBAEPqC,YAAa,CACTxB,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6TAEPsC,oBAAqB,CACjBzB,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qxCAEPuC,cAAe,CACX1B,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8UAEPwC,aAAc,CACV3B,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mRAEPyC,cAAe,CACX5B,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gHAEP0C,eAAgB,CACZ7B,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ohBAEP2C,gBAAiB,CACb9B,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8YAEP4C,0BAA2B,CACvB/B,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,iXAEP6C,oBAAqB,CACjBhC,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qFAEP8C,oBAAqB,CACjBjC,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2CAEP+C,wBAAyB,CACrBlC,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mCAEPgD,4BAA6B,CACzBnC,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,msCAEPiD,sBAAuB,CACnBpC,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8vBAEPkD,qBAAsB,CAClBrC,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,w7BAEPmD,sBAAuB,CACnBtC,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ubAEPoD,4BAA6B,CACzBvC,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,kzCAEPqD,sBAAuB,CACnBxC,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,iwBAEPsD,qBAAsB,CAClBzC,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,u6BAEPuD,sBAAuB,CACnB1C,OAAQ,kBACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wcAEPwD,2BAA4B,CACxB3C,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ghBAEPyD,qBAAsB,CAClB5C,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6TAEP0D,oBAAqB,CACjB7C,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,iRAEP2D,qBAAsB,CAClB9C,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,yOAEP4D,yBAA0B,CACtB/C,MAAO,EACPC,MAAO,GACPC,OAAQ,kBACRC,MAAO,IACPC,GAAI,kBACJjB,EAAG,gSAEP6D,wBAAyB,CACrBhD,MAAO,EACPC,MAAO,GACPC,OAAQ,IACRC,MAAO,kBACPC,GAAI,kBACJjB,EAAG,+TAEP8D,kBAAmB,CACfjD,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,+EAEP+D,0BAA2B,CACvBlD,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,iCAEPgE,2BAA4B,CACxBnD,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mCAEPiE,+BAAgC,CAC5BpD,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qEAEPkE,gBAAiB,CACbrD,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,GACPC,GAAI,IACJjB,EAAG,gGAEPmE,SAAU,CACNtD,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,GACPC,GAAI,IACJjB,EAAG,yCAEPoE,UAAW,CACPvD,MAAO,EACPC,MAAO,mBACPC,OAAQ,IACRC,MAAO,GACPC,GAAI,IACJjB,EAAG,kcAEPqE,YAAa,CACTxD,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qYAEPsE,WAAY,CACRzD,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,GACPC,GAAI,IACJjB,EAAG,0rBAEPuE,aAAc,CACV1D,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0lBAEPwE,WAAY,CACR3D,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,68BAEPyE,aAAc,CACV5D,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,s0BAEP0E,WAAY,CACR7D,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,ktCAEP2E,aAAc,CACV9D,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,6lCAEP4E,YAAa,CACT/D,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,u5CAEP6E,cAAe,CACXhE,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,q3CAEP8E,eAAgB,CACZjE,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,sZAEP+E,kBAAmB,CACflE,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oRAEPgF,gBAAiB,CACbnE,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2nBAEPiF,sBAAuB,CACnBpE,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,spBAEPkF,qBAAsB,CAClBrE,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6yBAEPmF,qBAAsB,CAClBtE,MAAO,EACPC,MAAO,GACPC,OAAQ,IACRC,MAAO,kBACPC,GAAI,kBACJjB,EAAG,+TAEPoF,sBAAuB,CACnBvE,MAAO,EACPC,MAAO,GACPC,OAAQ,kBACRC,MAAO,IACPC,GAAI,kBACJjB,EAAG,gSAEPqF,+BAAgC,CAC5BxE,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,maAEPsF,0CAA2C,CACvCzE,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,q1BAEPuF,gCAAiC,CAC7B1E,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qfAEPwF,sCAAuC,CACnC3E,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wuBAEPyF,4BAA6B,CACzB5E,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0kBAEP0F,qBAAsB,CAClB7E,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8fAEP2F,6BAA8B,CAC1B9E,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,o3BAEP4F,iBAAkB,CACd/E,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,8NAEP6F,iBAAkB,CACdhF,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,yPAEP8F,iBAAkB,CACdjF,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,GACPC,GAAI,GACJjB,EAAG,iHAEP+F,iBAAkB,CACdlF,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,EACPC,GAAI,GACJjB,EAAG,6HAEPgG,mBAAoB,CAChBnF,OAAQ,IACRC,MAAO,MACPC,OAAQ,IACRC,MAAO,GACPC,GAAI,MACJjB,EAAG,iGAEPiG,mBAAoB,CAChBpF,OAAQ,IACRC,MAAO,MACPC,OAAQ,MACRC,MAAO,EACPC,GAAI,MACJjB,EAAG,0GAEPkG,wBAAyB,CACrBrF,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,oQAEPmG,wBAAyB,CACrBtF,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,iSAEPoG,kBAAmB,CACfvF,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,6KAEPqG,kBAAmB,CACfxF,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,oLAEPsG,aAAc,CACVzF,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,0ZAEPuG,aAAc,CACV1F,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,ycAEPwG,iBAAkB,CACd3F,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,qOAEPyG,iBAAkB,CACd5F,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,4PAEP0G,qBAAsB,CAClB7F,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,0WAEP2G,qBAAsB,CAClB9F,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,2YAEP4G,kBAAmB,CACf/F,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,2UAEP6G,kBAAmB,CACfhG,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,8WAEP8G,gBAAiB,CACbjG,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,2OAEP+G,QAAS,CACLlG,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,sXAEPgH,cAAe,CACXnG,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,2YAEPiH,WAAY,CACRpG,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ySAEPkH,gBAAiB,CACbrG,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mIAEPmH,UAAW,CACPtG,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,qIAEPoH,mBAAoB,CAChBvG,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,GACPC,GAAI,IACJjB,EAAG,yJAEPqH,SAAU,CACNxG,MAAO,EACPC,MAAO,IACPC,OAAQ,EACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,+HAEPsH,kBAAmB,CACfzG,OAAQ,IACRC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,iJAEPuH,YAAa,CACT1G,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,05BAEPwH,QAAS,CACL3G,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,iXAEPyH,SAAU,CACN5G,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,+gBAEP0H,SAAU,CACN7G,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mrBAEP2H,SAAU,CACN9G,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,i9BAEP4H,UAAW,CACP/G,OAAQ,EACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,irCAEP6H,aAAc,CACVhH,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,yyBAEP8H,aAAc,CACVjH,OAAQ,EACRC,MAAO,IACPC,OAAQ,EACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,urCAEP+H,aAAc,CACVlH,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,slCAEPgI,mBAAoB,CAChBnH,OAAQ,GACRC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,wpBAEPiI,iBAAkB,CACdpH,MAAO,EACPC,MAAO,IACPC,OAAQ,EACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ogBAEPkI,SAAU,CACNrH,OAAQ,GACRC,MAAO,IACPC,OAAQ,EACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ijCAEPmI,cAAe,CACXtH,OAAQ,GACRC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,42BAEPoI,aAAc,CACVvH,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,0fAEPqI,kBAAmB,CACfxH,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oqBAEPsI,gBAAiB,CACbzH,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6eAEPuI,mBAAoB,CAChB1H,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,+SAEPwI,oBAAqB,CACjB3H,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,0dAEPyI,2BAA4B,CACxB5H,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,wkBAEP0I,oCAAqC,CACjC7H,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,45BAEP2I,8BAA+B,CAC3B9H,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,g7BAEP4I,mCAAoC,CAChC/H,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,orBAEP6I,wCAAyC,CACrChI,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,uxBAEP8I,gCAAiC,CAC7BjI,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,uqBAEP+I,gBAAiB,CACblI,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,6QAEPgJ,cAAe,CACXnI,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,oNAEPiJ,eAAgB,CACZpI,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,sHAEPkJ,aAAc,CACVrI,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,wRAEPmJ,gBAAiB,CACbtI,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,iNAEPoJ,0BAA2B,CACvBvI,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,yVAEPqJ,0BAA2B,CACvBxI,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,yVAEPsJ,iBAAkB,CACdzI,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ozEAEPuJ,gBAAiB,CACb1I,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,iuFAEPwJ,mBAAoB,CAChB3I,OAAQ,GACRC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,mjBAEPyJ,WAAY,CACR5I,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,kRAEP0J,YAAa,CACT7I,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qUAEP2J,YAAa,CACT9I,MAAO,EACPC,MAAO,KACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0aAEP4J,eAAgB,CACZ/I,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6CAEP6J,eAAgB,CACZhJ,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,iUAEP8J,mBAAoB,CAChBjJ,OAAQ,EACRC,MAAO,IACPC,OAAQ,EACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8bAEP+J,cAAe,CACXlJ,MAAO,EACPC,MAAO,IACPC,MAAO,GACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,yHAEPgK,iBAAkB,CACdnJ,MAAO,EACPC,MAAO,IACPC,MAAO,GACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,6DAEPiK,6BAA8B,CAC1BpJ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qXAEPkK,oCAAqC,CACjCrJ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8vBAGXmK,WAAY,SACZC,WAAY,IACZC,YAAa,4BCvpCbC,QCNyB,CACzBC,KAAM,SACNC,OAAO,EACPC,MAAO,CACHC,QAAS,GACTC,cAAe,GACfC,cAAe,EACfC,qBAAsB,IAE1BC,WAAY,CACRC,0BAA2B,EAC3BC,YAAa,EACbC,kBAAmB,GAEvBC,KAAM,CACFC,QAAS,CACLC,MAAO,GACPC,MAAO,IAEXC,MAAO,CACHF,MAAO,GACPC,MAAO,IAEXE,YAAa,CACT,MAAO,CACHC,UAAW,WACXL,QAAS,CACLC,MAAO,GACPK,OAAQ,CACJC,MAAO,IACPC,OAAQ,KAGhBL,MAAO,CACHF,MAAO,GACPK,OAAQ,CACJC,MAAO,GACPC,OAAQ,KAIpB,MAAO,CACHH,UAAW,WACXL,QAAS,CACLC,MAAO,GACPK,OAAQ,CACJC,KAAM,EACNC,OAAQ,IAEZC,KAAM,CACFF,KAAM,IACNC,OAAQ,IAGhBL,MAAO,CACHF,MAAO,GACPK,OAAQ,CACJC,KAAM,IACNC,OAAQ,GAEZC,KAAM,CACFF,KAAM,IACNC,OAAQ,OAMxBE,UAAW,CACP,EAAK,CAAET,MAAO,GAAIU,OAAQ,IAC1B,EAAK,CAAEV,MAAO,GAAIU,OAAQ,GAC1B,EAAK,CAAEV,MAAO,GAAIU,OAAQ,GAC1B,EAAK,CAAEV,MAAO,GAAIU,QAAS,GAC3B,EAAK,CAAEV,MAAO,GAAIU,QAAS,MAGnCC,YAAa,CACTZ,QAAS,CACLC,MAAO,GACPC,MAAO,GAEXW,UAAW,CACPZ,MAAO,KACPC,MAAO,IAGfY,aAAc,CACVC,GAAI,CACAd,MAAO,IAEXe,KAAM,CACFf,MAAO,KAIfgB,OAAQ,CAEJC,WAAY,EACZjB,MAAO,GAEPkB,YAAa,GACbR,QAAS,GAEbS,aAAc,CACVrG,wBAAyB,CACrBwE,QAAS,GAEbvE,wBAAyB,CACrBuE,QAAS,IAGjB8B,QAAS,CACLrB,QAAS,CACLC,MAAO,GACPqB,QAAS,EACTC,eAAgB,EAChBC,gBAAiB,EACjBC,cAAe,GACfC,gBAAiB,GAErBC,MAAO,CACH1B,MAAO,GACPqB,QAAS,EACTC,eAAgB,EAChBC,gBAAiB,EACjBC,cAAe,EACfC,gBAAiB,IAGzBE,gBAAiB,CACbC,WAAY,CACRC,QAAS,GACTC,QAAS,GACTT,QAAS,GAEbrL,KAAM,CACF8L,QAAS,IAEb/L,MAAO,CACH+L,QAAS,KAKjBC,KAAM,CACFC,yBAA0B,EAG1BC,SAAU,CACNC,uBAAwB,CACpBC,kBAAmB,EACnBC,oBAAqB,GAEzBzK,wBAAyB,CACrBwK,kBAAmB,EACnBC,oBAAqB,GAEzBC,wBAAyB,CACrBF,kBAAmB,EACnBC,oBAAqB,GAEzBE,cAAe,CACXH,mBAAoB,EACpBC,oBAAqB,GAEzB9K,eAAgB,CACZ6K,mBAAoB,EACpBC,oBAAqB,GAEzBG,eAAgB,CACZJ,mBAAoB,EACpBC,oBAAqB,GAEzBhL,aAAc,CACV+K,mBAAoB,KACpBC,oBAAqB,MAEzB/K,cAAe,CACX8K,mBAAoB,EACpBC,oBAAqB,GAEzB3K,oBAAqB,CACjB2K,qBAAsB,EACtBD,kBAAmB,KAa/B5M,OAAQ,CACJS,KAAM,CACFgK,MAAO,GACPO,QAAS,EACTG,OAAQ,GAEZ3K,MAAO,CACHwK,QAAS,GAEbiC,KAAM,CACFjC,QAAS,IACTkC,WAAY,CACRlC,QAAS,IAGjBT,KAAM,CACF7J,MAAO,CACH8J,QAAS,CAAE2C,MAAO,IAAKhC,OAAQ,GAC/BR,MAAO,CAAEQ,OAAQ,MAErBvK,MAAO,CACH4J,QAAS,CAAEW,QAAS,MAG5BiC,SAAU,CACN3F,aAAc,CACV0F,MAAO,KAEXzF,kBAAmB,CACfyF,MAAO,MAGfE,aAAc,CACVC,gBAAiB,EACjBC,YAAa,EACblD,YAAa,EACbmD,aAAc,GAElBC,OAAQ,CACJC,mBAAoB,CAChBC,SAAU,CACN3C,QAAS,KAEb4C,OAAQ,CACJ5C,QAAS,EACTG,OAAQ,IAGhB0C,iBAAkB,CACdF,SAAU,CACN3C,QAAS,KAEb4C,OAAQ,CACJ5C,QAAS,EACTG,OAAQ,KAIpB2C,SAAU,CACNrD,MAAO,GACPsD,eAAgB,CACZtD,MAAO,GACPU,OAAQ,GAEZhF,gBAAiB,CACbsE,MAAO,IAEXjK,MAAO,CACHiK,MAAO,GACPO,QAAS,EACTG,OAAQ,GAEZ1K,KAAM,CACFgK,MAAO,GACPO,QAAS,EACTG,OAAQ,GAEZ3D,cAAe,CACXwD,QAAS,EACTG,OAAQ,GAEZ1D,aAAc,CACVgD,MAAO,IAEX/C,kBAAmB,CACf+C,MAAO,IAEX9C,gBAAiB,CACbqD,QAAS,GAEbpD,mBAAoB,CAChBoD,QAAS,IAGjB0B,SAAU,CACNsB,WAAY,EACZC,SAAU,CACNC,kBAAmB,CACfzD,MAAO,IAEX0D,oBAAqB,CACjB1D,MAAO,KAGf2D,OAAQ,CACJC,sBAAuB,CACnBrD,OAAQ,KAEZsD,wBAAyB,CACrBtD,OAAQ,KAEZuD,0BAA2B,CACvBvD,OAAQ,KAEZwD,2BAA4B,CACxBxD,OAAQ,KAEZyD,2BAA4B,CACxBzD,OAAQ,GAEZ0D,oBAAqB,CACjB1D,QAAS,GAEb2D,sBAAuB,CACnB3D,OAAQ,GAEZ4D,qBAAsB,CAClB5D,QAAS,GAEb6D,uBAAwB,CACpB7D,OAAQ,GAEZ8D,4BAA6B,CACzB9D,OAAQ,KAEZ+D,0BAA2B,CACvB/D,QAAS,KAEbgE,0BAA2B,CACvBhE,QAAS,KAEbiE,8BAA+B,CAC3BjE,QAAS,OAIrBkE,YAAa,CACTC,OAAQ,CACJC,mBAAoB,IACpBC,gBAAiB,IACjBC,eAAgB,IAChBC,iBAAkB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,KAC5CC,iBAAkB,CAAC,IAAK,KACxB1D,QAAS,IACT2D,cAAe,KAEnBvG,eAAgB,CACZiE,MAAO,GACPuC,iBAAkB,GAClBC,aAAc,IACdC,QAAS,GAEbzG,mBAAoB,CAChBgE,MAAO,GACPuC,iBAAkB,GAClBC,aAAc,IACdC,QAAS,GAEbxG,cAAe,CACX+D,MAAO,EACPuC,gBAAiB,EACjBC,aAAc,IACdC,QAAS,GAEbC,mBAAoB,CAChB1C,MAAO,GACPuC,iBAAkB,GAClBC,aAAc,IACdC,QAAS,KAEbE,oBAAqB,CACjB3C,MAAO,GACPuC,gBAAiB,EACjBC,aAAc,IACdC,QAAS,KAEbG,oBAAqB,CACjB5C,MAAO,GACPuC,gBAAiB,EACjBC,aAAc,IACdC,QAAS,GAEbI,qBAAsB,CAClB7C,MAAO,GACPuC,gBAAiB,EACjBC,aAAc,IACdC,QAAS,GAEbK,uBAAwB,CACpB9C,MAAO,GACPuC,gBAAiB,GACjBC,aAAc,IACdC,QAAS,KAEbM,wBAAyB,CACrB/C,MAAO,GACPuC,gBAAiB,EACjBC,aAAc,IACdC,QAAS,KAEbO,6BAA8B,CAC1BhD,MAAO,GACPuC,iBAAkB,EAClBC,aAAc,IACdC,QAAS,GAEbQ,UAAW,CACPjD,MAAO,GACPuC,gBAAiB,EACjBC,aAAc,IACdC,QAAS,GAEbvG,iBAAkB,CACd8D,MAAO,GACPuC,gBAAiB,IACjBE,QAAS,EACTD,aAAc,KAElBtL,gBAAiB,CACb8I,MAAO,IACPuC,gBAAiB,GACjBC,aAAc,IACdC,SAAU,KAEdzL,eAAgB,CACZgJ,MAAO,GACPuC,iBAAkB,GAClBC,aAAc,IACdC,SAAU,MAGlBS,cAAe,CACXC,WAAY,CACRnD,MAAO,EACPoD,SAAU,GACVX,QAAS,EACTY,cAAe,EACfC,cAAe,IAEnBC,gBAAiB,CACbvD,MAAO,EACPoD,QAAS,GACTX,QAAS,EACTY,cAAe,EACfC,cAAe,IAEnBE,kBAAmB,CACfxD,MAAO,EACPoD,QAAS,GACTX,QAAS,EACTY,cAAe,EACfC,cAAe,IAEnBG,gBAAiB,CACbzD,MAAO,EACPoD,QAAS,GACTX,QAAS,EACTY,cAAe,EACfC,cAAe,GAEnBI,qBAAsB,CAClB1D,MAAO,EACPoD,QAAS,GACTX,QAAS,GACTY,cAAe,EACfC,cAAe,GAEnBK,UAAW,CACP3D,MAAO,EACPoD,QAAS,EACTX,SAAU,EACVY,cAAe,GACfC,cAAe,GAEnBrI,gBAAiB,CACb+E,MAAO,EACPoD,QAAS,EACTX,SAAU,EACVY,cAAe,GACfC,cAAe,GAEnBpI,cAAe,CACX8E,MAAO,EACPoD,QAAS,EACTX,SAAU,EACVY,cAAe,GACfC,cAAe,GAEnBM,UAAW,CACP5D,MAAO,EACPoD,QAAS,GACTX,QAAS,EACTY,cAAe,EACfC,cAAe,IAEnBO,cAAe,CACX7D,MAAO,EACPoD,QAAS,EACTX,QAAS,EACTY,cAAe,EACfC,cAAe,IAEnBQ,WAAY,CACR9D,MAAO,EACPoD,QAAS,GACTX,QAAS,EACTY,cAAe,EACfC,cAAe,IAGvBS,OAAQ,CACJC,eAAgB,GAChBC,WAAY,GACZC,WAAY,EACZC,kBAAmB,O","sources":["webpack://VexFlowFont.Leland/webpack/universalModuleDefinition","webpack://VexFlowFont.Leland/webpack/bootstrap","webpack://VexFlowFont.Leland/webpack/runtime/define property getters","webpack://VexFlowFont.Leland/webpack/runtime/hasOwnProperty shorthand","webpack://VexFlowFont.Leland/./src/fonts/leland_glyphs.ts","webpack://VexFlowFont.Leland/./entry/vexflow-font-leland.ts","webpack://VexFlowFont.Leland/./src/fonts/leland_metrics.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VexFlowFont\"] = factory();\n\telse\n\t\troot[\"VexFlowFont\"] = root[\"VexFlowFont\"] || {}, root[\"VexFlowFont\"][\"Leland\"] = factory();\n})((typeof window !== 'undefined' ? window : typeof globalThis !== 'undefined' ? globalThis : this), function() {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","export const LelandFont = {\n glyphs: {\n bracketTop: {\n x_min: 0,\n x_max: 491,\n y_min: 0,\n y_max: 279,\n ha: 279,\n o: 'm 697 399 b 687 402 694 400 690 402 b 671 395 681 402 674 400 b 249 168 668 390 524 168 l 20 168 b 0 150 9 168 0 161 l 0 20 l 0 0 l 176 0 b 706 374 619 0 704 370 b 707 382 706 376 707 379 b 697 399 707 389 703 395 z',\n },\n bracketBottom: {\n x_min: 0,\n x_max: 491,\n y_min: -279,\n y_max: 0,\n ha: 279,\n o: 'm 697 -399 b 707 -382 703 -395 707 -389 b 706 -374 707 -379 706 -376 b 176 0 704 -370 619 0 l 0 0 l 0 -20 l 0 -150 b 20 -168 0 -161 9 -168 l 249 -168 b 671 -395 524 -168 668 -390 b 687 -402 674 -400 681 -402 b 697 -399 690 -402 694 -400 z',\n },\n segno: {\n x_min: 0,\n x_max: 654,\n y_min: 0,\n y_max: 869,\n ha: 869,\n o: 'm 546 690 l 838 1207 b 841 1215 840 1210 841 1212 b 832 1233 841 1221 837 1230 l 809 1248 b 798 1251 806 1250 801 1251 b 780 1241 792 1251 783 1247 l 487 721 l 217 860 b 99 995 147 897 99 924 b 236 1165 99 1120 179 1165 b 343 1073 288 1165 325 1130 b 454 988 357 1022 405 988 b 477 991 461 988 469 989 b 541 1076 526 1002 541 1045 b 540 1089 541 1080 541 1084 b 294 1225 534 1116 514 1225 b 0 939 72 1225 0 1053 b 125 706 0 825 42 753 l 397 563 l 104 45 b 102 35 102 42 102 37 b 111 19 102 29 107 22 l 132 3 b 144 0 135 1 141 0 b 148 0 145 0 147 0 b 161 10 153 1 158 6 l 456 531 l 704 403 b 842 256 780 361 842 318 b 706 86 842 131 763 86 b 599 177 654 86 616 120 b 488 262 585 228 537 262 b 465 259 481 262 472 261 b 402 177 418 248 402 206 b 403 163 402 171 402 167 b 649 26 409 135 429 26 b 942 312 871 26 942 199 b 821 549 942 426 901 507 z m 52 444 b 118 416 69 426 95 416 b 183 444 141 416 166 426 b 210 508 200 461 210 485 b 183 573 210 531 200 556 b 118 600 166 590 141 600 b 52 573 95 600 69 590 b 24 508 35 556 24 531 b 52 444 24 485 35 461 z m 760 730 b 825 703 778 713 802 703 b 890 730 848 703 873 713 b 917 795 907 747 917 772 b 890 861 917 818 907 844 b 825 888 873 878 848 888 b 760 861 802 888 778 878 b 733 795 743 844 733 818 b 760 730 733 772 743 747 z',\n },\n coda: {\n x_min: 0,\n x_max: 745,\n y_min: -113,\n y_max: 735,\n ha: 848,\n o: 'm 924 467 b 560 896 916 697 757 881 l 560 1038 b 540 1058 560 1050 552 1058 l 524 1058 b 505 1038 513 1058 505 1050 l 505 896 b 150 467 311 877 158 693 l 20 467 b 0 446 9 467 0 458 l 0 432 b 20 412 0 420 9 412 l 150 412 b 505 0 166 193 317 17 l 505 -143 b 524 -163 505 -154 513 -163 l 540 -163 b 560 -143 552 -163 560 -154 l 560 0 b 923 412 753 13 907 190 l 1054 412 b 1073 432 1066 412 1073 420 l 1073 446 b 1054 467 1073 458 1066 467 z m 560 467 l 560 852 b 773 467 716 837 773 671 z m 505 467 l 301 467 b 505 851 301 668 357 831 z m 505 412 l 505 45 b 301 412 366 65 301 219 z m 560 412 l 772 412 b 560 45 772 215 706 60 z',\n },\n gClef: {\n x_min: 0,\n x_max: 640,\n y_min: -666,\n y_max: 1112,\n ha: 1778,\n o: 'm 809 -30 b 665 -279 809 -132 768 -238 b 586 186 635 -107 596 122 b 809 -30 716 186 809 98 z m 605 -297 b 521 -305 576 -302 549 -305 b 140 56 315 -305 140 -161 b 390 498 140 232 264 389 b 459 562 415 520 438 540 b 492 357 472 484 482 416 b 272 45 361 318 272 180 b 467 -194 272 -56 351 -194 b 491 -176 478 -194 491 -189 b 459 -144 491 -163 477 -156 b 372 -1 403 -109 372 -72 b 521 177 372 86 436 157 z m 478 1184 b 632 1392 491 1241 557 1392 b 688 1223 654 1392 688 1322 b 478 863 688 1073 577 960 b 462 1037 469 920 462 976 b 478 1184 462 1090 467 1139 z m 176 -739 b 444 -959 176 -834 249 -959 b 622 -910 511 -959 570 -942 b 720 -670 700 -855 720 -760 b 697 -467 720 -613 711 -549 b 675 -338 693 -438 684 -395 b 922 3 816 -292 922 -145 b 557 367 922 220 768 367 b 516 619 543 454 528 539 b 773 1188 668 779 773 959 b 710 1477 773 1319 733 1426 b 608 1601 675 1551 634 1601 b 505 1528 598 1601 553 1584 b 387 1113 413 1418 387 1234 b 419 804 387 1035 395 965 b 312 701 418 802 343 726 b 0 117 181 579 0 405 b 503 -364 0 -153 235 -364 b 616 -354 544 -364 583 -360 b 660 -670 644 -492 660 -593 b 438 -899 660 -819 583 -899 b 370 -891 403 -899 373 -891 b 366 -887 369 -890 366 -888 b 373 -881 366 -884 369 -883 b 508 -721 441 -871 508 -814 b 341 -562 508 -644 449 -562 b 176 -739 240 -562 176 -644 z',\n },\n cClef: {\n x_min: 0,\n x_max: 627,\n y_min: -480,\n y_max: 482,\n ha: 962,\n o: 'm 19 675 b 0 657 9 675 0 667 l 0 -654 b 19 -672 0 -664 9 -672 l 122 -672 b 141 -654 132 -672 141 -664 l 141 657 b 122 675 141 667 132 675 z m 903 -376 b 619 -58 903 -197 808 -58 b 505 -95 586 -58 562 -60 b 426 1 503 -89 474 -32 b 505 98 474 35 503 92 b 641 60 560 65 579 60 b 903 379 816 60 903 223 b 580 694 903 580 755 694 b 318 517 472 694 318 649 b 438 400 318 446 367 400 b 546 510 501 400 546 446 b 425 615 546 589 494 615 b 547 651 458 638 503 651 b 723 400 698 651 723 530 b 593 128 723 289 720 128 b 438 279 467 128 441 265 b 418 300 438 281 438 300 b 396 279 397 300 396 281 b 264 29 383 200 344 62 l 264 657 b 246 675 264 667 256 675 b 228 657 236 675 228 667 l 228 -654 b 246 -672 228 -664 236 -672 b 264 -654 256 -672 264 -664 l 264 -26 b 396 -278 348 -60 380 -197 b 418 -297 396 -279 397 -297 b 438 -278 438 -297 438 -279 b 593 -125 441 -262 467 -125 b 723 -397 720 -125 723 -287 b 547 -648 723 -527 698 -648 b 425 -612 503 -648 458 -635 b 441 -613 426 -612 432 -613 b 546 -507 504 -613 546 -569 b 438 -397 546 -444 501 -397 b 318 -514 367 -397 318 -444 b 580 -691 318 -647 472 -691 b 903 -376 755 -691 903 -577 z',\n },\n fClef: {\n x_min: 0,\n x_max: 664,\n y_min: -617,\n y_max: 251,\n ha: 868,\n o: 'm 366 361 b 167 298 256 361 168 298 b 37 112 84 236 50 163 b 27 36 30 86 27 60 b 46 -58 27 1 33 -30 b 140 -138 63 -96 96 -124 b 194 -147 157 -144 176 -147 b 287 -122 226 -147 259 -138 b 359 10 331 -98 359 -46 b 289 134 359 60 333 107 b 206 160 259 154 230 160 b 160 153 189 160 173 157 b 109 122 145 147 121 132 b 147 215 114 150 131 192 b 219 279 163 238 194 266 b 351 308 255 300 301 308 b 570 -52 498 308 570 190 b 477 -399 570 -186 520 -314 b 310 -635 429 -494 366 -585 b 17 -837 160 -772 19 -837 b 0 -864 17 -837 0 -847 b 1 -871 0 -867 1 -868 b 27 -888 6 -886 19 -888 b 35 -887 29 -888 33 -887 b 331 -717 36 -887 200 -819 b 528 -544 405 -664 471 -606 b 661 -367 580 -488 625 -428 b 760 -50 724 -259 760 -147 b 670 239 760 69 729 168 b 366 361 602 320 500 361 z m 818 179 b 887 107 818 138 850 107 b 956 179 924 107 956 138 b 887 252 956 219 924 252 b 818 179 850 252 818 219 z m 818 -177 b 887 -251 818 -217 850 -251 b 956 -177 924 -251 956 -217 b 887 -104 956 -137 924 -104 b 818 -177 850 -104 818 -137 z',\n },\n unpitchedPercussionClef1: {\n x_min: 0,\n x_max: 352,\n y_min: -252,\n y_max: 252,\n ha: 504,\n o: 'm 19 363 b 0 344 9 363 0 354 l 0 -344 b 19 -363 0 -354 9 -363 l 177 -363 b 196 -344 187 -363 196 -354 l 196 344 b 177 363 196 354 187 363 z m 330 363 b 311 344 320 363 311 354 l 311 -344 b 330 -363 311 -354 320 -363 l 488 -363 b 507 -344 498 -363 507 -354 l 507 344 b 488 363 507 354 498 363 z',\n },\n '6stringTabClef': {\n x_min: 0,\n x_max: 439,\n y_min: -743,\n y_max: 746,\n ha: 1489,\n o: 'm 52 1074 l 52 958 l 249 958 l 249 419 l 387 419 l 387 958 l 583 958 l 583 1074 z m 0 -333 l 145 -333 l 192 -196 l 436 -196 l 481 -333 l 632 -333 l 396 334 l 238 334 z m 315 181 l 400 -81 l 229 -81 z m 566 -474 b 393 -402 531 -428 475 -403 l 71 -402 l 71 -1070 l 372 -1070 b 374 -1070 373 -1070 373 -1070 b 465 -1061 405 -1070 435 -1067 b 541 -1027 494 -1056 520 -1043 b 588 -975 560 -1012 575 -995 b 618 -868 608 -943 618 -907 b 592 -770 618 -829 609 -798 b 514 -711 575 -743 549 -724 b 566 -674 537 -700 554 -688 b 596 -576 586 -649 596 -616 b 566 -474 596 -536 586 -503 z m 348 -518 b 428 -528 380 -518 408 -521 b 464 -590 452 -539 464 -559 b 436 -649 464 -619 455 -638 b 366 -665 418 -661 395 -665 l 203 -665 l 203 -518 z m 367 -776 b 435 -788 396 -776 419 -780 b 477 -858 464 -801 477 -824 b 433 -942 477 -900 462 -927 b 366 -953 418 -949 395 -953 l 203 -953 l 203 -776 z',\n },\n timeSig0: {\n x_min: 15,\n x_max: 389,\n y_min: -254,\n y_max: 255,\n ha: 509,\n o: 'm 291 367 b 22 0 138 367 22 209 b 291 -366 22 -209 138 -366 b 560 0 444 -366 560 -209 b 291 367 560 209 444 367 z m 376 -200 b 291 -308 376 -252 353 -308 b 206 -200 229 -308 206 -252 l 206 200 b 291 308 206 252 229 308 b 376 200 353 308 376 252 z',\n },\n timeSig1: {\n x_min: 15,\n x_max: 336,\n y_min: -243,\n y_max: 245,\n ha: 488,\n o: 'm 359 -284 l 359 336 b 341 353 359 346 351 353 l 199 353 b 190 350 196 353 193 351 b 184 344 189 348 186 346 l 23 65 b 22 56 22 62 22 59 b 30 42 22 50 26 45 l 58 26 b 66 23 60 24 63 23 b 81 32 72 23 78 27 l 183 207 l 183 -284 l 73 -284 b 56 -301 63 -284 56 -291 l 56 -333 b 73 -350 56 -343 63 -350 l 468 -350 b 484 -333 478 -350 484 -343 l 484 -301 b 468 -284 484 -291 478 -284 z',\n },\n timeSig2: {\n x_min: 15,\n x_max: 377,\n y_min: -243,\n y_max: 245,\n ha: 488,\n o: 'm 492 -56 b 382 -192 481 -88 452 -192 b 190 -134 288 -192 268 -134 b 153 -138 179 -134 167 -135 b 341 -36 153 -138 189 -84 b 533 173 494 12 533 86 b 288 353 533 233 505 353 b 30 156 71 353 30 222 b 138 49 30 96 79 49 b 245 156 197 49 245 96 b 179 255 245 196 216 240 b 168 271 174 256 168 264 b 202 297 168 279 176 289 b 251 304 209 300 229 304 b 311 288 271 304 294 300 b 348 180 338 271 348 245 b 65 -150 348 12 148 -24 b 22 -278 65 -150 22 -210 b 73 -350 22 -346 56 -350 b 121 -305 96 -350 121 -331 b 117 -287 121 -300 120 -294 b 105 -239 108 -266 105 -251 b 107 -226 105 -235 105 -230 b 154 -203 108 -217 120 -203 b 238 -289 196 -203 212 -252 b 350 -350 264 -327 304 -350 b 484 -264 396 -350 458 -317 b 543 -63 510 -210 543 -102 b 518 -36 543 -45 531 -36 b 492 -56 508 -36 498 -42 z',\n },\n timeSig3: {\n x_min: 14.984905204685425,\n x_max: 364,\n y_min: -244,\n y_max: 244,\n ha: 488,\n o: 'm 392 23 b 514 168 507 68 514 143 b 514 176 514 171 514 174 b 262 351 514 189 510 351 b 22 176 14 351 22 176 l 23 176 l 22 173 b 115 81 22 121 63 81 b 207 173 167 81 207 121 b 135 264 207 215 176 255 b 140 268 137 265 138 266 b 215 289 160 282 187 289 b 340 176 275 289 340 253 b 255 69 340 85 272 72 b 140 60 238 66 157 60 b 121 40 122 60 121 40 l 121 12 b 140 -6 121 12 124 -4 b 243 -14 164 -7 197 -7 b 340 -167 307 -23 340 -66 b 215 -289 340 -264 275 -289 b 121 -266 174 -289 137 -278 b 207 -174 168 -264 207 -222 b 115 -81 207 -122 167 -81 b 22 -174 63 -81 22 -122 b 22 -180 22 -174 22 -177 b 78 -298 22 -199 26 -251 b 236 -351 134 -350 204 -351 b 524 -147 374 -351 524 -304 b 389 23 524 -42 452 3 z',\n },\n timeSig4: {\n x_min: 14,\n x_max: 442,\n y_min: -248,\n y_max: 249,\n ha: 497,\n o: 'm 300 -183 l 300 -289 l 180 -289 b 160 -310 170 -289 160 -298 l 160 -337 b 180 -357 160 -348 170 -357 l 616 -357 b 636 -337 628 -357 636 -348 l 636 -310 b 616 -289 636 -298 628 -289 l 487 -289 l 487 -183 l 616 -183 b 636 -161 628 -183 636 -173 l 636 -134 b 616 -114 636 -124 628 -114 l 487 -114 l 487 115 b 477 134 487 124 482 131 l 459 143 b 452 144 456 144 455 144 b 449 144 451 144 451 144 b 436 140 445 144 439 143 l 305 20 b 300 4 301 16 300 10 l 300 -114 l 132 -114 b 464 287 132 -114 294 59 b 471 307 469 294 471 301 b 467 321 471 314 468 320 l 435 353 b 420 359 431 356 426 359 b 206 359 412 359 217 359 b 187 341 196 359 189 350 b 143 118 187 341 180 235 b 24 -124 105 1 62 -71 b 20 -140 24 -124 20 -131 b 22 -148 20 -143 20 -145 b 36 -174 26 -158 36 -174 b 52 -183 36 -174 39 -183 z',\n },\n timeSig5: {\n x_min: 15,\n x_max: 362,\n y_min: -244,\n y_max: 246,\n ha: 490,\n o: 'm 39 314 b 46 170 39 314 46 245 b 46 151 46 164 46 157 b 39 -24 45 71 39 -24 b 39 -29 39 -24 39 -26 b 49 -48 39 -35 40 -46 b 99 -59 62 -50 92 -58 b 107 -59 102 -59 104 -59 b 121 -49 112 -59 118 -58 b 235 45 128 -30 144 45 b 356 -112 337 45 356 -43 b 238 -292 356 -184 333 -288 b 226 -292 233 -292 230 -292 b 166 -282 193 -292 174 -288 b 158 -274 161 -281 158 -276 b 164 -264 158 -269 160 -266 b 222 -168 177 -255 222 -239 b 117 -71 222 -98 173 -71 b 22 -171 60 -71 22 -122 b 111 -318 22 -220 36 -275 b 252 -351 147 -338 199 -351 b 456 -275 325 -351 405 -328 b 521 -109 503 -228 521 -167 b 433 79 521 -32 487 43 b 271 124 397 104 336 124 b 131 84 223 124 173 112 b 125 82 130 82 127 82 b 115 92 120 82 115 86 l 115 183 b 131 199 115 192 122 199 l 132 199 b 252 192 154 197 202 192 b 372 209 295 192 340 196 b 474 320 439 236 462 289 b 477 334 475 324 477 330 b 451 354 477 346 469 354 b 431 351 445 354 439 353 b 252 328 360 334 305 328 b 88 343 200 328 150 334 b 71 344 88 343 81 344 b 39 320 56 344 39 340 b 39 314 39 317 39 315 z',\n },\n timeSig6: {\n x_min: 15,\n x_max: 387,\n y_min: -244,\n y_max: 245,\n ha: 489,\n o: 'm 356 69 b 216 22 268 69 236 43 b 209 98 212 52 209 75 b 216 167 209 121 212 141 b 338 287 225 220 261 287 b 410 259 374 287 396 275 b 356 174 380 246 356 207 b 448 82 356 122 396 82 b 541 174 500 82 541 122 l 541 177 b 541 179 541 177 541 177 b 533 225 541 192 539 213 b 310 353 514 276 454 353 b 58 163 180 353 86 229 b 22 -23 43 128 22 58 b 131 -285 22 -111 46 -210 b 318 -351 215 -348 268 -351 b 557 -125 369 -351 557 -292 b 356 69 557 16 446 69 z m 302 -291 b 216 -145 255 -291 216 -226 b 302 1 216 -65 255 1 b 390 -145 350 1 390 -65 b 302 -291 390 -226 350 -291 z',\n },\n timeSig7: {\n x_min: 15,\n x_max: 366,\n y_min: -250,\n y_max: 251,\n ha: 501,\n o: 'm 233 -177 b 160 -336 202 -225 160 -282 b 180 -360 160 -351 164 -360 b 264 -351 203 -360 217 -354 b 278 -350 268 -351 274 -350 b 369 -360 320 -350 359 -360 b 405 -331 382 -360 406 -344 b 405 -327 405 -330 405 -328 b 396 -226 405 -324 396 -279 b 408 -130 396 -196 399 -161 b 503 151 425 -62 471 60 b 527 308 518 196 527 275 b 526 341 527 321 527 327 b 510 361 524 356 518 361 b 484 361 503 361 491 361 b 467 341 477 361 467 356 b 406 228 467 327 464 228 b 235 351 346 228 328 351 b 86 252 145 351 91 261 l 86 321 b 71 337 86 330 79 337 l 37 337 b 22 321 29 337 22 330 l 22 55 b 37 39 22 46 29 39 l 71 39 b 86 55 79 39 86 46 l 86 101 b 158 179 86 134 108 179 b 328 124 209 179 213 124 b 425 143 357 124 410 128 b 233 -177 413 120 266 -130 z',\n },\n timeSig8: {\n x_min: 15,\n x_max: 393,\n y_min: -248,\n y_max: 246,\n ha: 494,\n o: 'm 467 26 b 547 166 514 62 547 108 b 294 354 547 269 433 354 b 40 166 154 354 40 269 b 122 13 40 108 55 56 b 22 -147 58 -24 22 -78 b 294 -357 22 -264 144 -357 b 566 -147 444 -357 566 -264 b 467 26 566 -78 541 -13 z m 294 -276 b 122 -145 202 -276 122 -226 b 197 -26 122 -49 197 -26 b 435 -187 295 -59 435 -108 b 294 -276 435 -226 384 -276 z m 386 65 b 180 209 288 96 180 144 b 294 288 180 265 232 288 b 444 180 383 288 444 246 b 386 65 444 111 412 78 z',\n },\n timeSig9: {\n x_min: 15,\n x_max: 387,\n y_min: -244,\n y_max: 245,\n ha: 489,\n o: 'm 223 -68 b 363 -20 311 -68 343 -42 b 370 -96 367 -50 370 -73 b 363 -166 370 -120 367 -140 b 240 -285 354 -219 318 -285 b 168 -258 204 -285 183 -274 b 223 -173 199 -245 223 -206 b 131 -81 223 -121 183 -81 b 37 -173 79 -81 37 -121 l 37 -176 b 37 -177 37 -176 37 -176 b 46 -223 37 -190 40 -212 b 269 -351 65 -275 125 -351 b 521 -161 399 -351 492 -228 b 557 24 536 -127 557 -56 b 448 287 557 112 533 212 b 261 353 364 350 311 353 b 22 127 210 353 22 294 b 223 -68 22 -14 132 -68 z m 276 294 b 363 147 324 294 363 228 b 276 1 363 66 324 1 b 189 147 229 1 189 66 b 276 294 189 228 229 294 z',\n },\n timeSigCommon: {\n x_min: 0,\n x_max: 463,\n y_min: -256,\n y_max: 258,\n ha: 514,\n o: 'm 468 258 b 406 147 432 235 406 193 b 408 130 406 141 406 135 b 521 17 415 71 462 24 b 537 17 526 17 533 17 b 667 147 609 17 667 75 b 667 156 667 147 667 151 b 664 177 667 161 665 171 b 350 372 651 239 595 372 b 0 17 36 372 0 111 b 382 -369 0 -154 22 -369 b 641 -131 524 -369 635 -285 b 629 -120 641 -124 636 -120 l 611 -120 b 599 -131 605 -120 599 -125 b 382 -323 593 -251 508 -323 b 196 -128 256 -323 196 -255 l 196 147 b 356 320 196 228 228 320 b 469 271 423 320 454 295 b 471 264 471 268 471 266 b 468 258 471 262 471 259 z',\n },\n timeSigCutCommon: {\n x_min: 0,\n x_max: 463,\n y_min: -376,\n y_max: 388,\n ha: 764,\n o: 'm 611 -120 b 599 -131 605 -120 599 -125 b 382 -323 593 -251 508 -323 b 369 -323 377 -323 373 -323 l 369 320 b 469 269 428 317 455 292 b 471 264 471 266 471 265 b 468 258 471 261 471 259 b 406 147 432 235 406 193 b 408 130 406 141 406 135 b 523 17 415 71 464 24 b 537 17 527 17 533 17 b 667 147 609 17 667 75 b 667 156 667 147 667 151 b 664 177 667 161 665 171 b 369 370 651 236 598 364 l 369 543 b 353 559 369 552 361 559 l 314 559 b 298 543 305 559 298 552 l 298 369 b 0 17 32 341 0 105 b 298 -364 0 -140 17 -334 l 298 -526 b 314 -541 298 -534 305 -541 l 353 -541 b 369 -526 361 -541 369 -534 l 369 -369 b 382 -369 373 -369 377 -369 b 641 -131 524 -369 635 -285 b 629 -120 641 -124 636 -120 z m 196 147 b 298 312 196 215 216 289 l 298 -310 b 196 -128 229 -285 196 -223 z',\n },\n timeSigPlus: {\n x_min: 0,\n x_max: 408,\n y_min: -204,\n y_max: 204,\n ha: 408,\n o: 'm 327 33 l 327 275 b 308 294 327 285 318 294 l 279 294 b 261 275 269 294 261 285 l 261 33 l 19 33 b 0 14 9 33 0 24 l 0 -13 b 19 -33 0 -23 9 -33 l 261 -33 l 261 -274 b 279 -294 261 -284 269 -294 l 308 -294 b 327 -274 318 -294 327 -284 l 327 -33 l 567 -33 b 588 -13 577 -33 588 -23 l 588 14 b 567 33 588 24 577 33 z',\n },\n noteheadDoubleWhole: {\n x_min: 0,\n x_max: 538,\n y_min: -178,\n y_max: 179,\n ha: 357,\n o: 'm 33 258 b 20 258 27 258 26 258 b 0 238 9 258 0 249 b 0 -236 0 226 0 -226 b 20 -256 0 -246 9 -256 b 33 -256 26 -256 27 -256 b 53 -236 43 -256 53 -245 b 53 238 53 -228 53 226 b 33 258 53 249 45 258 z m 649 258 b 636 258 644 258 642 258 b 616 238 625 258 616 249 b 616 125 616 235 616 187 b 389 196 573 167 500 196 b 160 125 276 196 203 167 b 160 238 160 187 160 235 b 140 258 160 249 151 258 b 127 258 134 258 132 258 b 107 238 115 258 107 249 b 107 -236 107 226 107 -226 b 127 -256 107 -246 115 -256 b 140 -256 132 -256 134 -256 b 160 -236 150 -256 160 -245 b 160 -122 160 -233 160 -186 b 389 -194 203 -166 276 -194 b 616 -122 500 -194 573 -166 b 616 -236 616 -186 616 -233 b 636 -256 616 -246 625 -256 b 649 -256 642 -256 644 -256 b 670 -236 660 -256 670 -245 b 670 238 670 -228 670 226 b 649 258 670 249 661 258 z m 462 -140 b 400 -148 445 -144 422 -148 b 314 -101 360 -148 333 -135 b 268 68 295 -65 269 29 b 268 76 268 71 268 73 b 314 141 268 109 282 130 b 377 150 331 145 354 150 b 462 102 416 150 442 140 b 510 -66 482 63 510 -29 b 462 -140 510 -104 497 -128 z m 755 258 b 742 258 749 258 747 258 b 721 238 730 258 721 249 b 721 -236 721 226 721 -226 b 742 -256 721 -246 730 -256 b 755 -256 747 -256 749 -256 b 775 -236 765 -256 775 -245 b 775 238 775 -228 775 226 b 755 258 775 249 766 258 z',\n },\n noteheadWhole: {\n x_min: 0,\n x_max: 373,\n y_min: -134,\n y_max: 136,\n ha: 270,\n o: 'm 269 196 b 0 1 71 196 0 95 b 269 -193 0 -92 71 -193 b 537 1 468 -193 537 -92 b 269 196 537 95 468 196 z m 343 -138 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 148 68 176 -63 150 29 b 194 141 145 107 160 130 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 389 -65 363 63 389 -29 b 343 -138 389 -102 377 -128 z',\n },\n noteheadHalf: {\n x_min: 0,\n x_max: 325,\n y_min: -133,\n y_max: 132,\n ha: 265,\n o: 'm 307 190 b 0 -60 167 190 0 73 b 161 -192 0 -122 45 -192 b 468 58 311 -192 468 -69 b 307 190 468 143 396 190 z m 268 -63 b 108 -124 264 -66 158 -124 b 50 -72 60 -124 50 -85 b 200 62 50 -12 194 59 b 360 122 206 65 308 122 b 418 71 395 122 418 102 b 268 -63 418 9 272 -60 z',\n },\n noteheadBlack: {\n x_min: 0,\n x_max: 325,\n y_min: -133,\n y_max: 132,\n ha: 265,\n o: 'm 0 -60 b 161 -192 0 -122 45 -192 b 468 58 311 -192 468 -69 b 307 190 468 143 396 190 b 0 -60 167 190 0 72 z',\n },\n noteheadXBlack: {\n x_min: 0,\n x_max: 325,\n y_min: -132,\n y_max: 132,\n ha: 264,\n o: 'm 461 138 b 468 153 465 141 468 147 l 468 154 b 462 167 468 160 465 164 l 445 184 b 431 190 441 187 436 190 b 418 186 426 190 420 189 l 235 40 l 50 186 b 37 190 48 189 42 190 b 24 184 32 190 29 187 l 6 167 b 0 153 3 164 0 158 b 7 138 0 147 3 141 l 183 0 l 7 -138 b 0 -153 3 -141 0 -147 b 6 -166 0 -157 3 -163 l 23 -184 b 37 -190 26 -189 32 -190 b 50 -186 42 -190 48 -189 l 235 -40 l 418 -186 b 431 -190 420 -189 426 -190 b 445 -184 436 -190 442 -189 l 462 -166 b 468 -153 465 -163 468 -157 b 461 -138 468 -147 465 -141 l 285 0 z',\n },\n noteheadCircleX: {\n x_min: 0,\n x_max: 325,\n y_min: -162,\n y_max: 163,\n ha: 325,\n o: 'm 265 0 l 395 105 b 426 0 415 75 426 39 b 387 -115 426 -43 412 -84 z m 233 -27 l 360 -145 b 235 -192 327 -174 282 -192 b 99 -137 183 -192 134 -171 z m 202 1 l 73 -105 b 42 0 53 -75 42 -39 b 81 115 42 43 56 84 z m 235 29 l 108 145 b 233 193 141 174 186 193 b 369 138 285 193 334 173 z m 233 235 b 0 0 104 235 0 130 b 233 -233 0 -130 104 -233 b 468 0 363 -233 468 -130 b 233 235 468 130 363 235 z',\n },\n noteheadDoubleWholeSquare: {\n x_min: 0,\n x_max: 432,\n y_min: -179,\n y_max: 177,\n ha: 356,\n o: 'm 590 255 b 570 235 579 255 570 246 l 570 203 l 53 203 l 53 235 b 33 255 53 246 45 255 l 20 255 b 0 235 9 255 0 246 l 0 -230 b 20 -251 0 -242 9 -251 l 33 -251 b 53 -230 45 -251 53 -242 l 53 -200 l 570 -200 l 570 -238 b 590 -258 570 -249 579 -258 l 603 -258 b 622 -238 615 -258 622 -249 l 622 235 b 603 255 622 246 615 255 z m 570 -101 l 53 -101 l 53 105 l 570 105 z',\n },\n noteheadSquareWhite: {\n x_min: 0,\n x_max: 310,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 395 128 l 395 -128 l 52 -128 l 52 128 z m 446 180 l 0 180 l 0 -180 l 446 -180 z',\n },\n noteheadSquareBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 446 180 l 0 180 l 0 -180 l 446 -180 z',\n },\n noteheadTriangleUpBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -136,\n y_max: 122,\n ha: 258,\n o: 'm 223 176 l 0 -196 l 446 -196 z',\n },\n noteheadSlashedDoubleWhole1: {\n x_min: -66,\n x_max: 456,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 652 298 b 638 305 649 304 644 305 b 626 301 634 305 629 304 l 560 248 b 543 256 557 253 550 256 b 530 256 537 256 536 256 b 510 236 518 256 510 248 b 510 204 510 235 510 223 l 455 161 b 281 194 413 181 356 194 b 53 124 168 194 96 166 b 53 236 53 186 53 233 b 29 256 53 253 42 256 b 20 256 26 256 23 256 b 0 236 9 256 0 248 b 0 -204 0 228 0 -98 l -88 -272 b -95 -288 -92 -276 -95 -282 b -91 -300 -95 -291 -94 -295 b -76 -307 -86 -304 -82 -307 b -65 -302 -72 -307 -68 -305 l 3 -248 b 20 -258 6 -253 12 -258 b 53 -238 33 -258 52 -255 b 53 -206 53 -236 53 -225 l 107 -161 b 281 -196 148 -183 206 -196 b 510 -124 393 -196 465 -166 b 510 -238 510 -187 510 -235 b 530 -258 510 -248 518 -258 b 563 -238 543 -258 563 -255 b 563 204 563 -229 563 98 l 649 272 b 657 288 655 276 657 282 b 652 298 657 291 655 295 z m 160 75 b 269 148 160 138 219 148 b 356 101 310 148 334 140 b 363 85 357 96 360 91 l 189 -56 b 160 66 174 -14 161 40 b 160 75 160 69 160 72 z m 53 -163 b 53 -124 53 -151 53 -138 b 76 -144 60 -131 68 -138 z m 402 -68 b 292 -148 402 -138 351 -148 b 207 -101 252 -150 226 -137 b 199 -84 204 -96 202 -91 l 373 56 b 402 -68 389 13 402 -40 z m 510 124 b 485 144 503 131 494 137 l 510 163 b 510 124 510 151 510 137 z',\n },\n noteheadSlashedWhole1: {\n x_min: -75,\n x_max: 448,\n y_min: -211,\n y_max: 214,\n ha: 425,\n o: 'm 641 301 b 625 308 636 305 631 308 b 613 304 621 307 618 307 l 439 160 b 269 196 399 181 343 196 b 0 1 71 196 0 95 b 69 -138 0 -49 20 -101 l -101 -271 b -108 -287 -105 -275 -108 -281 b -104 -298 -107 -291 -107 -294 b -88 -304 -99 -302 -94 -304 b -76 -301 -85 -304 -81 -304 l 98 -157 b 269 -193 138 -179 194 -193 b 537 1 468 -193 537 -92 b 468 141 537 52 517 104 l 638 274 b 645 289 642 278 645 284 b 641 301 644 292 644 297 z m 148 68 b 148 78 148 72 148 75 b 194 141 148 111 163 131 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 350 86 346 98 348 92 l 177 -55 b 148 68 163 -12 150 42 z m 389 -65 b 343 -138 389 -102 377 -128 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 187 -82 192 -95 190 -89 l 279 -6 l 361 58 b 389 -65 376 16 389 -39 z',\n },\n noteheadSlashedHalf1: {\n x_min: -98,\n x_max: 424,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 606 298 b 592 305 602 302 598 305 b 580 301 588 305 583 304 l 412 163 b 307 190 383 180 347 190 b 153 148 258 190 204 176 b 0 -60 58 98 0 13 b 14 -120 0 -81 4 -101 b 32 -143 20 -128 26 -135 l -134 -274 b -141 -288 -138 -276 -141 -282 b -137 -300 -141 -292 -140 -297 b -122 -307 -134 -304 -128 -307 b -111 -302 -118 -307 -114 -305 l 56 -164 b 161 -192 85 -181 121 -192 b 315 -151 210 -192 264 -179 b 468 58 410 -101 468 -16 b 454 117 468 78 464 98 b 436 141 449 125 444 134 l 603 272 b 611 287 608 275 611 281 b 606 298 611 291 609 295 z m 56 -98 b 49 -73 52 -91 49 -82 b 75 -23 49 -58 59 -39 b 199 60 99 1 147 32 b 337 118 251 89 302 111 b 359 121 344 120 351 121 b 361 121 360 121 360 121 l 225 9 l 69 -114 b 56 -98 65 -109 60 -104 z m 410 94 b 416 69 415 86 416 78 b 392 19 416 53 408 36 b 266 -65 367 -6 318 -36 b 128 -122 215 -94 163 -115 b 107 -125 121 -124 114 -125 b 104 -125 107 -125 105 -125 l 245 -9 l 396 111 b 410 94 402 107 408 101 z',\n },\n noteheadSlashedBlack1: {\n x_min: -98,\n x_max: 424,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 606 298 b 592 305 602 302 598 305 b 580 301 588 305 583 304 l 412 161 b 307 190 383 180 347 190 b 0 -60 167 190 0 72 b 32 -144 0 -89 10 -120 l -134 -274 b -141 -288 -138 -278 -141 -284 b -137 -301 -141 -292 -140 -297 b -122 -307 -134 -305 -128 -307 b -111 -304 -118 -307 -114 -307 l 56 -164 b 161 -192 82 -181 117 -192 b 468 58 311 -192 468 -71 b 436 141 468 91 456 120 l 603 271 b 611 285 608 275 611 281 b 606 298 611 289 609 294 z',\n },\n noteheadSlashedDoubleWhole2: {\n x_min: -66,\n x_max: 456,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 563 -204 b 563 236 563 -98 563 228 b 543 256 563 249 554 256 b 530 256 537 256 536 256 b 510 236 518 256 510 248 b 510 124 510 233 510 187 b 281 194 467 166 393 194 b 107 161 207 194 150 181 l 53 204 b 53 236 53 223 53 235 b 33 256 53 249 45 256 b 20 256 27 256 26 256 b 3 246 12 256 6 253 l -63 301 b -76 305 -68 304 -72 305 b -91 298 -81 305 -86 304 b -95 287 -94 295 -95 291 b -88 272 -95 281 -92 276 l 0 204 b 0 -238 0 98 0 -229 b 20 -258 0 -248 9 -258 b 33 -258 26 -258 27 -258 b 53 -238 43 -258 53 -246 b 53 -124 53 -235 53 -187 b 281 -196 96 -166 170 -196 b 456 -161 356 -196 413 -183 l 510 -206 b 510 -238 510 -225 510 -236 b 530 -258 510 -248 518 -258 b 543 -258 536 -258 537 -258 b 560 -246 549 -258 556 -252 l 626 -302 b 638 -307 631 -305 634 -307 b 654 -300 645 -307 649 -304 b 657 -288 655 -295 657 -292 b 651 -272 657 -282 655 -276 z m 207 140 b 269 148 225 144 248 148 b 356 101 310 148 336 140 b 402 -68 376 62 402 -30 b 402 -78 402 -71 402 -75 l 292 9 l 168 109 b 207 140 176 124 189 134 z m 78 144 b 53 124 69 137 60 131 b 53 163 53 137 53 150 z m 356 -141 b 294 -148 338 -145 315 -148 b 207 -101 253 -148 226 -137 b 161 66 189 -66 163 27 b 160 72 161 69 160 71 b 161 78 160 75 160 76 l 271 -9 l 395 -109 b 356 -141 387 -124 374 -134 z m 485 -144 b 510 -124 494 -138 503 -131 b 510 -163 510 -138 510 -151 z',\n },\n noteheadSlashedWhole2: {\n x_min: -75,\n x_max: 448,\n y_min: -212,\n y_max: 214,\n ha: 426,\n o: 'm 468 -138 b 537 1 517 -101 537 -49 b 269 196 537 95 468 196 b 98 160 196 196 140 181 l -76 304 b -88 308 -81 307 -84 307 b -104 301 -94 308 -99 305 b -108 289 -107 297 -107 292 b -101 274 -108 284 -105 278 l 69 141 b 0 1 20 104 0 52 b 269 -193 0 -92 71 -193 b 441 -157 343 -193 399 -179 l 613 -301 b 625 -305 618 -304 622 -305 b 641 -298 631 -305 636 -302 b 645 -287 644 -294 644 -291 b 638 -271 645 -281 642 -275 z m 194 141 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 389 -65 363 63 389 -29 b 389 -76 389 -69 389 -73 l 279 10 l 156 112 b 194 141 163 125 176 135 z m 343 -138 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 148 68 176 -63 150 29 b 148 76 148 71 148 73 b 148 81 148 78 148 79 l 258 -6 l 382 -108 b 343 -138 374 -122 361 -132 z',\n },\n noteheadSlashedHalf2: {\n x_min: -98,\n x_max: 424,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 386 -102 b 468 58 438 -55 468 4 b 454 117 468 78 464 98 b 307 190 428 164 373 190 b 153 148 258 190 204 176 b 108 120 137 140 122 130 l -111 301 b -122 305 -114 304 -118 305 b -137 298 -128 305 -134 302 b -141 287 -140 295 -141 291 b -134 272 -141 281 -138 275 l 85 101 b 0 -60 32 53 0 -7 b 14 -120 0 -81 4 -101 b 161 -192 40 -167 95 -192 b 315 -151 210 -192 264 -179 b 361 -122 333 -143 347 -132 l 580 -302 b 592 -307 583 -305 588 -307 b 606 -300 598 -307 602 -304 b 611 -288 609 -297 611 -292 b 603 -274 611 -282 608 -276 z m 199 60 b 337 118 251 89 302 111 b 359 121 344 120 351 121 b 410 94 382 121 400 112 b 416 69 415 86 416 78 b 392 19 416 53 408 36 b 308 -42 374 0 343 -20 l 245 7 l 189 55 b 199 60 192 56 196 58 z m 266 -65 b 128 -122 215 -94 163 -115 b 107 -125 121 -124 114 -125 b 56 -98 84 -125 66 -117 b 49 -73 52 -91 49 -82 b 75 -23 49 -58 59 -39 b 163 39 94 -4 125 17 l 225 -9 l 282 -56 b 266 -65 276 -59 272 -62 z',\n },\n noteheadSlashedBlack2: {\n x_min: -98.44444444444443,\n x_max: 424,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 384 -102 b 468 58 435 -58 468 0 b 307 190 468 143 396 190 b 108 121 239 190 167 163 l -111 301 b -124 305 -115 304 -120 305 b -138 298 -128 305 -134 302 b -141 289 -140 295 -141 292 b -141 287 -141 288 -143 288 b -135 272 -141 281 -140 275 l 84 101 b 0 -60 35 56 0 0 b 161 -192 0 -122 45 -192 b 361 -122 232 -192 304 -164 l 579 -302 b 590 -307 583 -305 588 -307 b 606 -300 596 -307 602 -304 b 611 -288 609 -297 611 -292 b 603 -274 609 -282 608 -276 z',\n },\n noteheadDiamondDoubleWhole: {\n x_min: 0,\n x_max: 373,\n y_min: -178,\n y_max: 179,\n ha: 357,\n o: 'm 504 258 b 484 238 494 258 484 248 l 484 46 b 282 187 415 95 285 186 b 268 192 279 190 275 192 b 255 187 262 192 258 190 l 52 45 l 52 238 b 33 258 52 248 43 258 l 20 258 b 0 238 9 258 0 248 l 0 -236 b 20 -256 0 -248 9 -256 l 33 -256 b 52 -236 43 -256 52 -248 l 52 -45 l 249 -181 b 268 -190 258 -189 264 -190 b 282 -186 274 -190 279 -189 b 484 -43 285 -184 413 -94 l 484 -236 b 504 -256 484 -248 494 -256 l 517 -256 b 537 -236 528 -256 537 -248 l 537 238 b 517 258 537 248 528 258 z m 220 -115 l 102 -33 l 317 117 l 435 35 z',\n },\n noteheadDiamondWhole: {\n x_min: 0,\n x_max: 373,\n y_min: -133,\n y_max: 132,\n ha: 265,\n o: 'm 282 -187 b 530 -13 285 -186 530 -13 b 537 0 534 -10 537 -6 b 530 13 537 4 534 10 b 282 186 530 13 287 183 b 268 190 279 189 275 190 b 255 186 262 190 258 189 l 7 12 b 0 -1 3 9 0 4 b 4 -13 0 -6 1 -10 l 249 -183 b 268 -192 258 -190 264 -192 b 282 -187 274 -192 279 -190 z m 220 -117 l 102 -35 l 317 115 l 435 33 z',\n },\n noteheadDiamondHalf: {\n x_min: 0,\n x_max: 335,\n y_min: -132,\n y_max: 133,\n ha: 265,\n o: 'm 475 -13 b 482 0 480 -10 482 -6 b 475 13 482 4 480 10 l 253 187 b 240 192 251 190 246 192 b 229 187 236 192 232 190 l 7 13 b 0 0 3 10 0 6 b 7 -13 0 -4 3 -10 l 229 -186 b 240 -190 232 -189 236 -190 b 253 -186 246 -190 251 -189 z m 284 -115 l 92 33 l 199 117 l 390 -33 z',\n },\n noteheadDiamondBlack: {\n x_min: 0,\n x_max: 335,\n y_min: -132,\n y_max: 133,\n ha: 265,\n o: 'm 475 -14 b 482 -1 480 -10 482 -6 b 475 13 482 4 480 10 l 253 187 b 240 192 251 190 246 192 b 229 187 236 192 232 190 l 7 13 b 0 0 3 10 0 4 b 7 -14 0 -6 3 -10 l 229 -186 b 240 -190 232 -189 236 -190 b 253 -186 246 -190 251 -189 z',\n },\n noteheadParenthesisRight: {\n x_min: 0,\n x_max: 75,\n y_min: -209.4142135623731,\n y_max: 212,\n ha: 421.4142135623731,\n o: 'm 10 305 b 4 302 7 304 6 304 b 0 295 1 301 0 298 b 1 289 0 294 0 292 b 68 -10 1 288 68 160 b 1 -288 68 -95 50 -192 b 0 -292 0 -289 0 -291 b 4 -300 0 -295 1 -298 b 12 -301 7 -301 9 -302 b 17 -298 14 -301 16 -300 b 108 0 22 -292 108 -174 b 17 301 108 174 22 295 b 10 305 16 304 13 305 z',\n },\n noteheadParenthesisLeft: {\n x_min: 0,\n x_max: 75,\n y_min: -212,\n y_max: 209.4142135623731,\n ha: 421.4142135623731,\n o: 'm 98 -305 b 104 -302 101 -304 102 -304 b 108 -295 107 -301 108 -298 b 107 -289 108 -294 108 -292 b 40 10 107 -288 40 -160 b 107 288 40 95 58 192 b 108 292 108 289 108 291 b 104 300 108 295 107 298 b 96 301 101 301 99 302 b 91 298 94 301 92 300 b 0 0 86 292 0 174 b 91 -301 0 -174 86 -295 b 98 -305 92 -304 95 -305 z',\n },\n noteheadMoonBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 0 180 l 0 0 b 223 -180 0 -99 99 -180 b 446 0 347 -180 446 -99 l 446 180 z',\n },\n noteheadTriangleLeftBlack: {\n x_min: 0,\n x_max: 339,\n y_min: -136,\n y_max: 122,\n ha: 258,\n o: 'm 0 176 l 0 -196 l 488 -196 z',\n },\n noteheadTriangleRightBlack: {\n x_min: 0,\n x_max: 339,\n y_min: -136,\n y_max: 122,\n ha: 258,\n o: 'm 488 176 l 0 -196 l 488 -196 z',\n },\n noteheadTriangleRoundDownBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -136,\n y_max: 122,\n ha: 258,\n o: 'm 226 -196 l 446 63 b 226 176 446 63 384 176 b 0 63 68 176 0 63 z',\n },\n augmentationDot: {\n x_min: 0,\n x_max: 100,\n y_min: -50,\n y_max: 50,\n ha: 100,\n o: 'm 0 0 b 72 -72 0 -40 32 -72 b 144 0 112 -72 144 -40 b 72 72 144 40 112 72 b 0 0 32 72 0 40 z',\n },\n tremolo1: {\n x_min: 0,\n x_max: 290,\n y_min: -93,\n y_max: 96,\n ha: 189,\n o: 'm 0 48 l 0 -134 l 418 -43 l 418 138 z',\n },\n flag8thUp: {\n x_min: 0,\n x_max: 289.04376776750354,\n y_min: -817,\n y_max: 12,\n ha: 829,\n o: 'm 0 -327 b 12 -343 0 -331 1 -338 b 291 -600 73 -363 197 -441 b 359 -827 317 -645 359 -707 b 294 -1140 359 -930 331 -1037 b 289 -1162 291 -1149 288 -1156 b 297 -1175 289 -1168 291 -1172 b 304 -1176 300 -1176 302 -1176 b 327 -1161 314 -1176 321 -1171 b 416 -798 395 -1041 418 -888 b 416 -780 416 -791 416 -786 b 302 -458 409 -595 302 -458 b 131 -220 307 -458 170 -281 b 50 -50 78 -138 53 -56 b 36 6 49 -46 36 6 b 19 17 35 12 27 17 b 0 -1 9 17 0 9 z',\n },\n flag8thDown: {\n x_min: 0,\n x_max: 309,\n y_min: -12,\n y_max: 817,\n ha: 829,\n o: 'm 0 1 b 19 -17 0 -9 9 -17 b 36 -6 26 -17 35 -12 b 50 50 36 -4 49 46 b 117 196 52 56 65 111 b 331 458 173 289 259 357 b 445 780 402 559 445 654 b 338 1161 445 912 415 1021 b 317 1176 334 1171 325 1176 b 310 1175 314 1176 311 1176 b 300 1158 302 1172 300 1166 b 304 1140 300 1153 301 1146 b 384 827 361 1007 384 930 b 317 600 384 707 343 645 b 12 343 223 441 72 363 b 0 327 1 338 0 331 z',\n },\n flag16thUp: {\n x_min: 0,\n x_max: 279,\n y_min: -820,\n y_max: 12,\n ha: 832,\n o: 'm 301 -681 b 148 -514 262 -631 219 -585 b 56 -372 92 -458 66 -409 b 52 -343 55 -364 53 -354 b 271 -510 125 -343 219 -442 b 340 -696 327 -583 340 -641 b 337 -739 340 -710 338 -724 b 301 -681 325 -716 312 -697 z m 0 -549 b 22 -563 0 -553 12 -559 b 258 -776 59 -576 171 -648 b 318 -950 307 -850 318 -901 b 317 -975 318 -959 318 -966 b 285 -1140 317 -1009 307 -1083 b 279 -1164 284 -1148 279 -1156 b 289 -1179 279 -1169 282 -1175 b 297 -1181 292 -1181 294 -1181 b 318 -1161 307 -1181 312 -1169 b 382 -962 344 -1120 382 -1043 b 374 -855 382 -920 379 -886 b 402 -678 389 -802 402 -749 b 333 -471 402 -603 382 -536 b 137 -228 265 -382 192 -307 b 42 0 82 -148 42 0 b 22 17 39 10 37 17 b 0 0 4 17 0 10 z',\n },\n flag16thDown: {\n x_min: 0,\n x_max: 309,\n y_min: -26,\n y_max: 803,\n ha: 829,\n o: 'm 53 346 b 56 363 55 353 56 359 b 163 517 66 399 78 452 b 384 732 246 582 346 662 b 317 503 382 621 354 552 b 53 346 229 395 122 364 z m 0 -14 b 22 -37 0 -26 10 -37 b 43 -14 33 -37 40 -26 b 167 232 65 134 109 177 b 445 683 243 305 445 416 b 432 837 445 730 441 783 b 441 919 438 855 441 881 b 327 1149 441 1032 374 1112 b 304 1156 321 1153 312 1156 b 287 1152 298 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1135 b 382 930 344 1076 382 1027 b 374 876 382 912 380 893 l 373 871 b 373 871 373 871 373 871 b 327 789 366 842 350 815 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z',\n },\n flag32ndUp: {\n x_min: 0,\n x_max: 279,\n y_min: -821,\n y_max: 186,\n ha: 1007,\n o: 'm 301 -683 b 148 -516 262 -632 219 -588 b 56 -373 92 -459 66 -410 b 50 -343 55 -366 53 -354 b 271 -500 125 -343 219 -432 b 340 -687 327 -575 340 -632 b 337 -739 340 -704 338 -721 b 301 -683 325 -716 312 -698 z m 271 -259 b 340 -446 327 -333 340 -392 b 338 -469 340 -455 338 -462 b 333 -461 337 -467 334 -464 b 91 -192 265 -372 145 -271 b 50 -92 69 -160 58 -124 b 271 -259 124 -92 219 -192 z m 0 -550 b 22 -564 0 -554 12 -560 b 258 -778 59 -577 171 -649 b 318 -952 307 -851 318 -903 b 317 -976 318 -960 318 -968 b 285 -1142 317 -1011 307 -1084 b 279 -1165 284 -1149 279 -1158 b 289 -1181 279 -1171 282 -1176 b 297 -1182 292 -1182 294 -1182 b 318 -1162 307 -1182 312 -1171 b 382 -963 344 -1122 382 -1044 b 374 -857 382 -922 379 -887 b 402 -668 389 -802 402 -740 b 386 -563 402 -632 396 -596 b 402 -441 395 -526 402 -487 b 402 -428 402 -436 402 -432 b 333 -220 402 -353 382 -285 b 137 23 265 -131 192 -56 b 42 251 82 102 42 251 b 22 268 39 261 37 268 b 0 251 4 268 0 261 z',\n },\n flag32ndDown: {\n x_min: 0,\n x_max: 309,\n y_min: -216,\n y_max: 803,\n ha: 1019,\n o: 'm 50 73 b 91 171 58 105 71 141 b 347 402 145 251 272 317 b 384 454 361 418 374 435 b 324 239 384 347 361 287 b 50 73 235 130 122 94 z m 163 517 b 366 693 248 589 327 642 b 382 716 372 700 377 708 b 383 693 383 708 383 700 b 314 505 383 621 359 562 b 53 343 258 436 179 390 b 56 363 55 351 56 359 b 163 517 66 400 81 449 z m 0 -288 b 22 -311 0 -298 10 -311 b 43 -288 33 -311 40 -300 b 167 -40 65 -138 109 -95 b 445 409 243 32 445 143 b 431 577 445 462 439 520 b 441 651 435 602 439 626 b 441 675 441 658 441 667 b 441 687 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 305 1156 321 1153 314 1156 b 287 1152 300 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1136 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z',\n },\n flag64thUp: {\n x_min: 0,\n x_max: 279,\n y_min: -822,\n y_max: 373,\n ha: 1195,\n o: 'm 333 -461 b 91 -192 265 -372 145 -271 b 50 -92 69 -161 58 -125 b 271 -251 125 -92 219 -183 b 340 -438 327 -324 340 -383 b 338 -469 340 -448 338 -459 b 333 -461 337 -467 334 -464 z m 301 -683 b 148 -517 262 -632 219 -588 b 56 -374 92 -461 66 -410 b 50 -343 55 -366 53 -356 b 271 -501 125 -343 219 -433 b 340 -688 327 -575 340 -634 b 337 -739 340 -706 338 -721 b 301 -683 325 -717 312 -698 z m 271 10 b 340 -176 327 -63 340 -121 b 337 -217 340 -190 338 -204 b 333 -212 336 -216 334 -213 b 91 65 265 -122 145 -16 b 48 177 66 101 53 143 l 50 177 b 271 10 124 177 217 78 z m 0 -552 b 22 -564 0 -554 12 -562 b 258 -778 59 -579 171 -649 b 318 -952 307 -851 317 -903 b 317 -976 318 -960 318 -968 b 285 -1142 317 -1012 307 -1084 b 279 -1165 284 -1149 279 -1158 b 289 -1181 279 -1172 282 -1178 b 297 -1184 292 -1182 295 -1184 b 318 -1164 307 -1182 312 -1172 b 382 -963 344 -1122 382 -1044 b 374 -857 382 -923 379 -887 b 402 -668 389 -804 402 -740 b 386 -563 402 -632 396 -596 b 402 -432 395 -523 402 -480 b 402 -418 402 -428 402 -423 b 383 -304 402 -379 396 -341 b 402 -170 393 -264 402 -222 b 402 -158 402 -166 402 -163 b 333 49 402 -84 382 -16 b 137 292 265 138 192 213 b 42 520 82 372 42 520 b 22 537 39 530 37 537 b 0 520 4 537 0 530 z',\n },\n flag64thDown: {\n x_min: 0,\n x_max: 309,\n y_min: -403,\n y_max: 804,\n ha: 1207,\n o: 'm 52 -196 b 91 -102 59 -166 71 -131 b 347 128 145 -23 272 45 b 384 180 361 145 374 163 b 324 -30 384 76 361 16 b 52 -196 235 -140 124 -176 z m 163 517 b 366 693 248 589 327 644 b 382 717 372 701 377 708 b 383 693 383 708 383 701 b 314 505 383 621 359 562 b 53 343 258 438 179 390 b 56 363 55 351 56 359 b 163 517 66 400 81 449 z m 314 232 b 50 69 258 163 179 117 b 91 171 56 102 69 140 b 347 402 145 251 272 318 b 382 449 360 416 372 432 b 383 420 383 439 383 429 b 314 232 383 348 359 288 z m 0 -557 b 22 -580 0 -567 10 -580 b 43 -557 33 -580 40 -567 b 167 -310 65 -408 109 -364 b 445 140 243 -238 445 -125 b 431 307 445 192 439 249 b 441 377 436 331 439 354 b 441 406 441 387 441 397 b 441 418 441 410 441 413 b 423 546 441 464 432 507 b 441 651 432 582 438 618 b 441 675 441 660 441 667 b 441 688 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 305 1158 321 1153 314 1156 b 287 1152 300 1158 292 1156 b 279 1145 281 1151 279 1148 b 294 1129 279 1140 288 1136 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 563 z',\n },\n flag128thUp: {\n x_min: 0,\n x_max: 279,\n y_min: -821,\n y_max: 573,\n ha: 1394,\n o: 'm 0 -550 b 22 -563 0 -553 12 -560 b 258 -776 59 -576 171 -648 b 318 -950 307 -850 318 -901 b 317 -975 318 -959 318 -966 b 285 -1140 317 -1011 307 -1083 b 279 -1164 284 -1148 279 -1156 b 289 -1179 279 -1171 282 -1176 b 297 -1182 292 -1181 294 -1181 b 318 -1162 307 -1182 312 -1169 b 382 -962 344 -1120 382 -1043 b 374 -857 382 -922 379 -887 b 402 -668 389 -802 402 -740 b 383 -554 402 -629 396 -590 b 402 -399 396 -503 402 -452 b 382 -284 402 -359 396 -321 b 402 -125 396 -230 402 -180 b 383 -14 402 -86 396 -49 b 402 130 396 35 402 81 b 333 348 402 204 382 284 b 137 592 265 438 192 513 b 42 808 82 671 46 793 b 22 825 39 818 37 825 b 0 808 4 825 0 818 z m 271 310 b 340 111 328 235 340 170 b 338 73 340 98 338 86 b 333 81 336 76 334 79 b 91 357 265 170 145 276 b 48 469 66 393 53 435 l 50 469 b 271 310 124 469 217 377 z m 301 -681 b 148 -523 262 -631 219 -593 b 56 -383 92 -465 66 -420 b 49 -343 55 -374 52 -359 l 50 -343 b 271 -500 124 -343 217 -432 b 340 -688 327 -575 340 -634 b 337 -737 340 -706 338 -721 b 301 -681 325 -716 312 -697 z m 333 -461 b 91 -192 265 -372 145 -271 b 48 -73 66 -154 53 -111 l 48 -73 l 50 -73 b 271 -232 124 -73 217 -163 b 340 -419 327 -305 340 -364 b 337 -468 340 -435 338 -452 b 333 -461 336 -465 334 -464 z m 333 -192 b 91 84 265 -102 145 4 b 48 200 65 121 53 164 l 48 200 l 50 200 b 271 42 124 200 217 109 b 340 -147 327 -32 340 -92 b 337 -197 340 -164 338 -181 b 333 -192 336 -196 334 -194 z',\n },\n flag128thDown: {\n x_min: 0,\n x_max: 309,\n y_min: -591,\n y_max: 803,\n ha: 1394,\n o: 'm 0 -828 b 22 -851 0 -838 10 -851 b 43 -828 33 -851 40 -840 b 167 -580 65 -678 109 -635 b 445 -131 243 -508 445 -397 b 431 36 445 -79 439 -22 b 441 108 436 60 439 85 b 441 137 441 117 441 127 b 441 147 441 140 441 144 b 423 275 441 193 432 236 b 441 377 433 310 438 344 b 441 406 441 387 441 396 b 441 418 441 410 441 413 b 423 546 441 464 432 507 b 441 649 432 582 438 616 b 441 675 441 658 441 667 b 441 687 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 304 1156 321 1153 312 1156 b 287 1152 298 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1135 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z m 314 -37 b 50 -200 258 -107 179 -153 b 91 -102 58 -168 71 -132 b 347 128 145 -23 272 45 b 382 176 360 143 372 160 b 383 151 383 167 383 160 b 314 -37 383 79 359 19 z m 314 232 b 50 69 258 163 179 117 b 91 171 56 101 69 138 b 347 402 145 251 272 317 b 382 449 360 416 372 432 b 383 420 383 439 383 429 b 314 232 383 347 359 288 z m 163 517 b 366 693 248 589 327 642 b 382 716 372 700 377 708 b 383 693 383 708 383 700 b 314 505 382 621 359 560 b 53 343 258 436 179 390 b 56 363 55 350 56 357 b 163 517 66 399 81 449 z m 52 -467 b 91 -372 59 -435 71 -402 b 347 -141 145 -292 272 -225 b 384 -89 361 -125 374 -108 b 324 -301 382 -194 361 -255 b 52 -467 235 -410 122 -446 z',\n },\n accidentalFlat: {\n x_min: 0,\n x_max: 203,\n y_min: -176,\n y_max: 453,\n ha: 629,\n o: 'm 289 114 b 173 223 281 170 246 223 b 52 170 101 223 59 179 l 58 632 b 37 652 58 644 49 652 l 20 652 b 0 632 9 652 0 644 l 7 -233 b 27 -253 7 -245 16 -253 b 39 -251 30 -253 36 -252 b 216 -114 45 -248 138 -202 b 292 78 271 -52 292 19 b 289 114 292 91 291 102 z m 190 58 b 148 -85 190 36 184 -30 b 48 -183 124 -122 75 -161 l 52 98 b 134 153 55 111 76 153 b 190 73 186 153 190 104 b 190 58 190 66 190 62 z',\n },\n accidentalNatural: {\n x_min: 0,\n x_max: 171,\n y_min: -323,\n y_max: 325,\n ha: 648,\n o: 'm 239 264 b 228 268 236 266 232 268 b 222 266 226 268 223 266 l 40 216 l 40 468 l 0 468 l 0 -245 b 20 -264 0 -256 9 -264 b 26 -264 22 -264 24 -264 l 207 -213 l 207 -465 l 246 -465 b 246 248 246 -226 246 1 b 239 264 246 253 243 261 z m 40 -140 l 40 96 l 207 144 l 207 -94 z',\n },\n accidentalSharp: {\n x_min: 0,\n x_max: 244,\n y_min: -333,\n y_max: 334,\n ha: 667,\n o: 'm 336 151 b 351 171 344 153 351 163 l 351 256 b 331 276 351 268 343 276 b 328 276 330 276 330 276 l 281 266 l 281 481 l 240 481 l 240 258 l 112 232 l 112 435 l 72 435 l 72 223 l 16 212 b 0 192 7 210 0 200 l 0 189 l 0 105 l 0 108 b 20 88 0 96 9 88 b 24 88 22 88 23 88 l 72 98 l 72 -140 l 16 -151 b 0 -171 7 -153 0 -163 l 0 -255 b 20 -275 0 -266 9 -275 b 24 -275 22 -275 23 -275 l 72 -265 l 72 -480 l 112 -480 l 112 -256 l 240 -230 l 240 -433 l 281 -433 l 281 -222 l 336 -212 b 351 -192 344 -210 351 -200 l 351 -107 b 331 -86 351 -95 343 -86 b 328 -86 330 -86 330 -86 l 281 -96 l 281 141 z m 112 107 l 240 132 l 240 -105 l 112 -132 z',\n },\n accidentalDoubleSharp: {\n x_min: 0,\n x_max: 275,\n y_min: -137,\n y_max: 138,\n ha: 275,\n o: 'm 360 73 l 376 73 b 396 94 387 73 396 82 l 396 179 b 376 199 396 190 387 199 l 291 199 b 271 179 279 199 271 190 l 271 161 l 271 102 l 200 30 l 196 30 l 124 102 l 124 179 b 105 199 124 190 117 199 l 20 199 b 0 179 9 199 0 190 l 0 94 b 20 73 0 82 9 73 l 35 73 l 36 73 l 96 73 l 167 3 l 167 -1 l 96 -73 l 36 -73 l 35 -73 l 20 -73 b 0 -92 9 -73 0 -81 l 0 -177 b 20 -197 0 -189 9 -197 l 105 -197 b 124 -177 117 -197 124 -189 l 124 -101 l 196 -32 l 200 -32 l 271 -101 l 271 -161 l 271 -163 l 271 -177 b 291 -197 271 -189 279 -197 l 376 -197 b 396 -177 387 -197 396 -189 l 396 -92 b 376 -73 396 -81 387 -73 l 361 -73 l 360 -73 l 300 -73 l 228 -1 l 228 1 l 300 73 z',\n },\n accidentalDoubleFlat: {\n x_min: 0,\n x_max: 371,\n y_min: -176,\n y_max: 453,\n ha: 629,\n o: 'm 531 115 b 415 223 523 171 488 223 b 294 171 343 223 301 180 l 300 632 b 279 652 300 644 291 652 l 262 652 b 242 632 251 652 242 644 l 246 199 b 173 223 228 213 204 223 b 52 170 101 223 59 179 l 58 632 b 37 652 58 644 49 652 l 20 652 b 0 632 9 652 0 644 l 7 -233 b 27 -253 7 -245 16 -253 b 39 -249 30 -253 36 -251 b 216 -114 45 -246 138 -202 b 248 -69 226 -102 239 -82 l 249 -233 b 269 -253 249 -245 258 -253 b 281 -249 272 -253 278 -251 b 458 -112 287 -246 380 -200 b 534 79 513 -50 534 20 b 531 115 534 92 533 104 z m 190 58 b 148 -85 190 36 184 -30 b 48 -183 124 -122 75 -161 l 52 98 b 134 153 55 111 76 153 b 190 73 186 153 190 104 b 190 58 190 66 190 62 z m 432 58 b 390 -85 432 36 426 -30 b 289 -183 366 -122 317 -161 l 294 98 b 376 153 297 111 318 153 b 432 73 428 153 432 104 b 432 58 432 66 432 62 z',\n },\n accidentalParensLeft: {\n x_min: 0,\n x_max: 75,\n y_min: -212,\n y_max: 209.4142135623731,\n ha: 421.4142135623731,\n o: 'm 98 -305 b 104 -302 101 -304 102 -304 b 108 -295 107 -301 108 -298 b 107 -289 108 -294 108 -292 b 40 10 107 -288 40 -160 b 107 288 40 95 58 192 b 108 292 108 289 108 291 b 104 300 108 295 107 298 b 96 301 101 301 99 302 b 91 298 94 301 92 300 b 0 0 86 292 0 174 b 91 -301 0 -174 86 -295 b 98 -305 92 -304 95 -305 z',\n },\n accidentalParensRight: {\n x_min: 0,\n x_max: 75,\n y_min: -209.4142135623731,\n y_max: 212,\n ha: 421.4142135623731,\n o: 'm 10 305 b 4 302 7 304 6 304 b 0 295 1 301 0 298 b 1 289 0 294 0 292 b 68 -10 1 288 68 160 b 1 -288 68 -95 50 -192 b 0 -292 0 -289 0 -291 b 4 -300 0 -295 1 -298 b 12 -301 7 -301 9 -302 b 17 -298 14 -301 16 -300 b 108 0 22 -292 108 -174 b 17 301 108 174 22 295 b 10 305 16 304 13 305 z',\n },\n accidentalQuarterToneFlatStein: {\n x_min: 0,\n x_max: 193,\n y_min: -176,\n y_max: 452,\n ha: 628,\n o: 'm 0 84 b 107 -145 0 -26 65 -105 b 245 -249 166 -202 245 -249 b 253 -253 248 -251 249 -253 b 272 -235 264 -253 272 -245 l 278 632 b 259 651 278 642 269 651 l 248 651 b 229 632 238 651 229 642 l 232 174 b 125 217 223 186 192 217 b 0 84 53 217 0 173 z m 148 154 b 232 102 212 154 232 115 b 233 107 232 99 233 102 l 235 -179 b 134 -72 207 -156 160 -111 b 92 58 98 -17 92 36 b 92 75 92 62 92 68 b 148 154 92 105 96 154 z',\n },\n accidentalThreeQuarterTonesFlatZimmermann: {\n x_min: 0,\n x_max: 422,\n y_min: -176,\n y_max: 452,\n ha: 628,\n o: 'm 608 84 b 482 217 608 173 554 217 b 376 174 416 217 384 186 l 379 632 b 360 651 379 642 370 651 l 348 651 b 330 632 338 651 330 642 l 336 -235 b 354 -253 336 -245 344 -253 b 363 -249 359 -253 360 -251 b 501 -145 363 -249 442 -202 b 608 84 543 -105 608 -26 z m 459 154 b 516 75 511 154 516 105 b 516 58 516 68 516 62 b 474 -72 516 36 510 -17 b 373 -179 448 -111 400 -156 l 374 107 b 376 102 374 102 376 99 b 459 154 376 115 396 154 z m 0 84 b 107 -145 0 -26 65 -105 b 245 -249 166 -202 245 -249 b 253 -253 248 -251 249 -253 b 272 -235 264 -253 272 -245 l 278 632 b 259 651 278 642 269 651 l 248 651 b 229 632 238 651 229 642 l 232 174 b 125 217 223 186 192 217 b 0 84 53 217 0 173 z m 148 154 b 232 102 212 154 232 115 b 233 107 232 99 233 102 l 235 -179 b 134 -72 207 -156 160 -111 b 92 58 98 -17 92 36 b 92 75 92 62 92 68 b 148 154 92 105 96 154 z',\n },\n accidentalQuarterToneSharpStein: {\n x_min: 0,\n x_max: 180,\n y_min: -316,\n y_max: 320,\n ha: 636,\n o: 'm 243 144 b 259 164 252 145 259 156 l 259 249 b 239 269 259 261 251 269 b 235 268 238 269 236 268 l 150 251 l 150 461 l 109 461 l 109 242 l 16 222 b 0 203 7 220 0 212 l 0 120 b 20 99 0 108 9 99 b 24 99 22 99 23 99 l 109 117 l 109 -121 l 16 -141 b 0 -160 7 -143 0 -151 l 0 -243 b 20 -264 0 -255 9 -264 b 24 -264 22 -264 23 -264 l 109 -246 l 109 -455 l 150 -455 l 150 -238 l 243 -219 b 259 -199 252 -217 259 -207 l 259 -114 b 239 -95 259 -102 251 -95 b 235 -95 238 -95 236 -95 l 150 -112 l 150 125 z',\n },\n accidentalThreeQuarterTonesSharpStein: {\n x_min: 0,\n x_max: 290,\n y_min: -328,\n y_max: 339,\n ha: 667,\n o: 'm 400 158 b 416 179 409 160 416 170 l 416 264 b 397 284 416 275 409 284 b 393 284 396 284 395 284 l 348 274 l 348 488 l 308 488 l 308 265 l 223 248 l 223 465 l 184 465 l 184 240 l 108 225 l 108 442 l 69 442 l 69 216 l 16 204 b 0 186 7 203 0 194 l 0 102 b 20 82 0 91 9 82 b 24 82 22 82 23 82 l 69 92 l 69 -147 l 16 -158 b 0 -177 7 -160 0 -168 l 0 -261 b 20 -281 0 -272 9 -281 b 24 -281 22 -281 23 -281 l 69 -272 l 69 -472 l 108 -472 l 108 -264 l 184 -248 l 184 -451 l 223 -451 l 223 -240 l 308 -223 l 308 -426 l 348 -426 l 348 -215 l 400 -204 b 418 -184 409 -203 418 -193 l 418 -99 b 397 -79 418 -88 409 -79 b 393 -79 396 -79 395 -79 l 348 -89 l 348 148 z m 184 -122 l 108 -138 l 108 99 l 184 115 z m 223 122 l 308 140 l 308 -98 l 223 -115 z',\n },\n accidentalBuyukMucennebFlat: {\n x_min: 0,\n x_max: 277,\n y_min: -176,\n y_max: 454,\n ha: 630,\n o: 'm 396 115 b 279 225 387 173 354 225 b 158 171 204 225 164 179 l 160 317 l 336 419 l 336 482 l 161 380 l 161 488 l 336 590 l 336 654 l 163 552 l 164 634 b 144 654 164 645 156 654 l 127 654 b 107 634 115 654 107 645 l 108 520 l 0 456 l 0 393 l 108 456 l 109 350 l 0 285 l 0 222 l 109 287 l 114 -235 b 134 -253 114 -246 122 -253 b 145 -251 138 -253 141 -252 b 323 -114 145 -251 242 -204 b 399 79 377 -52 399 20 b 396 115 399 92 397 104 z m 297 58 b 255 -85 297 36 291 -30 b 154 -184 230 -122 181 -163 l 158 96 b 240 153 161 109 181 153 b 297 73 292 153 297 104 b 297 58 297 66 297 62 z',\n },\n accidentalBakiyeFlat: {\n x_min: 0,\n x_max: 277,\n y_min: -176,\n y_max: 454,\n ha: 630,\n o: 'm 396 115 b 279 225 387 173 354 225 b 158 171 204 225 164 179 l 161 348 l 336 452 l 336 516 l 161 413 l 164 634 b 144 654 164 645 156 654 l 127 654 b 107 634 115 654 107 645 l 109 382 l 0 318 l 0 255 l 109 318 l 114 -235 b 134 -253 114 -246 122 -253 b 145 -251 138 -253 143 -252 b 323 -114 145 -251 242 -204 b 399 79 377 -52 399 20 b 396 115 399 92 397 104 z m 297 58 b 255 -85 297 36 291 -30 b 156 -184 230 -122 183 -163 l 158 96 b 240 153 161 109 181 153 b 297 73 292 153 297 104 b 297 58 297 66 297 62 z',\n },\n accidentalKucukMucennebSharp: {\n x_min: 0,\n x_max: 348,\n y_min: -316,\n y_max: 318,\n ha: 634,\n o: 'm 494 121 b 482 125 491 124 487 125 b 478 124 481 125 480 124 l 269 68 l 269 127 l 412 164 b 425 181 420 167 425 173 l 425 266 b 418 282 425 272 422 279 b 406 285 415 285 410 285 b 402 285 405 285 403 285 l 269 249 l 269 458 l 232 458 l 232 239 l 89 200 b 76 181 81 197 76 190 l 76 98 b 84 84 76 92 79 86 b 95 79 86 81 91 79 b 99 81 96 79 98 81 l 232 115 l 232 58 l 14 -3 b 0 -20 6 -6 0 -12 l 0 -104 b 7 -118 0 -109 3 -115 b 19 -122 10 -121 14 -122 b 23 -122 20 -122 22 -122 l 232 -66 l 232 -124 l 89 -163 b 76 -180 81 -166 76 -171 l 76 -264 b 84 -279 76 -269 79 -276 b 95 -282 86 -282 91 -282 b 99 -282 96 -282 98 -282 l 232 -246 l 232 -455 l 269 -455 l 269 -236 l 412 -199 b 425 -180 420 -196 425 -189 l 425 -95 b 418 -81 425 -89 422 -84 b 406 -76 415 -78 410 -76 b 402 -78 405 -76 403 -78 l 269 -114 l 269 -55 l 487 4 b 501 22 495 7 501 13 l 501 107 b 494 121 501 112 498 118 z',\n },\n articAccentAbove: {\n x_min: 0,\n x_max: 361,\n y_min: 0,\n y_max: 235,\n ha: 235,\n o: 'm 26 337 b 20 338 24 337 22 338 b 0 318 9 338 0 330 l 0 285 b 14 266 0 276 7 269 l 323 170 l 14 72 b 0 53 7 69 0 62 l 0 20 b 20 0 0 9 9 0 b 26 1 22 0 24 1 l 505 150 b 520 170 513 153 520 161 b 505 189 520 179 513 186 z',\n },\n articAccentBelow: {\n x_min: 0,\n x_max: 361,\n y_min: -235,\n y_max: 0,\n ha: 235,\n o: 'm 26 -1 b 20 0 24 -1 22 0 b 0 -20 9 0 0 -9 l 0 -53 b 14 -72 0 -62 7 -69 l 323 -168 l 14 -266 b 0 -285 7 -269 0 -276 l 0 -318 b 20 -338 0 -330 9 -338 b 26 -337 22 -338 24 -337 l 505 -189 b 520 -168 513 -186 520 -177 b 505 -150 520 -160 513 -153 z',\n },\n articTenutoAbove: {\n x_min: 0,\n x_max: 316,\n y_min: 0,\n y_max: 46,\n ha: 46,\n o: 'm 20 66 b 0 46 9 66 0 58 l 0 20 b 20 0 0 9 9 0 l 435 0 b 455 20 446 0 455 9 l 455 46 b 435 66 455 58 446 66 z',\n },\n articTenutoBelow: {\n x_min: 0,\n x_max: 316,\n y_min: -46,\n y_max: 0,\n ha: 46,\n o: 'm 20 0 b 0 -20 9 0 0 -9 l 0 -46 b 20 -66 0 -58 9 -66 l 435 -66 b 455 -46 446 -66 455 -58 l 455 -20 b 435 0 455 -9 446 0 z',\n },\n articStaccatoAbove: {\n x_min: -0.25,\n x_max: 78.25,\n y_min: -0.25,\n y_max: 78,\n ha: 78.25,\n o: 'm 16 16 b 96 16 39 -6 73 -6 b 96 95 118 39 118 73 b 16 95 73 118 39 118 b 16 16 -6 73 -6 39 z',\n },\n articStaccatoBelow: {\n x_min: -0.25,\n x_max: 78.25,\n y_min: -78.25,\n y_max: 0,\n ha: 78.25,\n o: 'm 16 -96 b 96 -96 39 -118 73 -118 b 96 -17 118 -73 118 -39 b 16 -17 73 6 39 6 b 16 -96 -6 -39 -6 -73 z',\n },\n articStaccatissimoAbove: {\n x_min: 0,\n x_max: 127,\n y_min: 0,\n y_max: 248,\n ha: 248,\n o: 'm 163 357 b 150 353 154 357 150 353 l 99 300 b 92 295 96 297 95 295 b 85 300 89 295 88 297 l 35 353 b 22 357 35 353 30 357 b 0 338 13 357 0 351 b 73 22 0 323 73 22 b 92 0 75 16 78 0 b 111 22 107 0 109 16 b 183 338 111 22 183 323 b 163 357 183 351 171 357 z',\n },\n articStaccatissimoBelow: {\n x_min: 0,\n x_max: 127,\n y_min: -248,\n y_max: 0,\n ha: 248,\n o: 'm 20 -357 b 33 -353 29 -357 33 -353 l 84 -300 b 91 -295 86 -297 88 -295 b 98 -300 94 -295 95 -297 l 148 -353 b 161 -357 148 -353 153 -357 b 183 -338 170 -357 183 -351 b 109 -22 183 -323 109 -22 b 91 0 108 -16 105 0 b 72 -22 76 0 73 -16 b 0 -338 72 -22 0 -323 b 20 -357 0 -351 12 -357 z',\n },\n articMarcatoAbove: {\n x_min: 1,\n x_max: 296,\n y_min: 0,\n y_max: 253,\n ha: 253,\n o: 'm 36 10 l 173 239 l 298 10 b 317 0 301 4 310 0 l 408 0 b 426 20 419 0 426 9 b 425 30 426 23 426 27 l 230 356 b 213 364 226 361 222 363 b 196 356 207 364 199 361 l 1 30 z',\n },\n articMarcatoBelow: {\n x_min: 0,\n x_max: 295,\n y_min: -253,\n y_max: 0,\n ha: 253,\n o: 'm 390 -10 l 253 -239 l 128 -10 b 109 0 125 -4 117 0 l 19 0 b 0 -20 7 0 0 -9 b 1 -30 0 -23 0 -27 l 196 -356 b 213 -364 200 -361 204 -363 b 230 -356 219 -364 228 -361 l 425 -30 z',\n },\n fermataAbove: {\n x_min: 0,\n x_max: 622,\n y_min: 0,\n y_max: 368,\n ha: 368,\n o: 'm 778 374 b 448 530 642 521 523 530 b 120 374 373 530 255 521 b 0 65 49 297 0 143 b 20 19 0 37 6 19 b 161 265 60 19 40 143 b 445 373 268 372 410 373 b 448 373 446 373 446 373 b 451 373 449 373 449 373 b 734 265 485 373 628 372 b 876 19 855 143 835 19 b 896 65 890 19 896 36 b 778 374 896 143 848 298 z m 348 99 b 448 0 348 45 393 0 b 547 99 503 0 547 45 b 448 199 547 154 503 199 b 348 99 393 199 348 154 z',\n },\n fermataBelow: {\n x_min: 0,\n x_max: 622,\n y_min: -368,\n y_max: 0,\n ha: 368,\n o: 'm 778 -374 b 896 -65 848 -298 896 -143 b 876 -19 896 -36 890 -19 b 734 -265 835 -19 855 -143 b 451 -373 628 -372 485 -373 b 448 -373 449 -373 449 -373 b 445 -373 446 -373 446 -373 b 161 -265 410 -373 268 -372 b 20 -19 40 -143 60 -19 b 0 -65 6 -19 0 -37 b 120 -374 0 -143 49 -297 b 448 -530 255 -521 373 -530 b 778 -374 523 -530 642 -521 z m 348 -99 b 448 -199 348 -154 393 -199 b 547 -99 503 -199 547 -154 b 448 0 547 -45 503 0 b 348 -99 393 0 348 -45 z',\n },\n fermataLongAbove: {\n x_min: 0,\n x_max: 623,\n y_min: 0,\n y_max: 368,\n ha: 368,\n o: 'm 40 0 l 40 399 l 858 399 l 858 0 l 897 0 l 897 510 b 877 530 897 521 888 530 l 20 530 b 0 510 9 530 0 521 l 0 0 z m 350 148 b 449 49 350 94 395 49 b 547 148 504 49 547 94 b 449 248 547 203 504 248 b 350 148 395 248 350 203 z',\n },\n fermataLongBelow: {\n x_min: 0,\n x_max: 623,\n y_min: -368,\n y_max: 0,\n ha: 368,\n o: 'm 0 -510 b 20 -530 0 -521 9 -530 l 877 -530 b 897 -510 888 -530 897 -521 l 897 0 l 858 0 l 858 -399 l 40 -399 l 40 0 l 0 0 z m 350 -148 b 449 -248 350 -203 395 -248 b 547 -148 504 -248 547 -203 b 449 -49 547 -94 504 -49 b 350 -148 395 -49 350 -94 z',\n },\n fermataVeryLongAbove: {\n x_min: 0,\n x_max: 842,\n y_min: 0,\n y_max: 549,\n ha: 549,\n o: 'm 276 0 l 276 399 l 936 399 l 936 0 l 976 0 l 976 510 b 956 530 976 521 968 530 l 256 530 b 236 510 245 530 236 521 l 236 0 z m 507 148 b 606 49 507 94 552 49 b 706 148 661 49 706 94 b 606 248 706 203 661 248 b 507 148 552 248 507 203 z m 40 0 l 40 661 l 1172 661 l 1172 0 l 1212 0 l 1212 772 b 1192 791 1212 783 1204 791 l 20 791 b 0 772 9 791 0 783 l 0 0 z',\n },\n fermataVeryLongBelow: {\n x_min: 0,\n x_max: 842,\n y_min: -549,\n y_max: 0,\n ha: 549,\n o: 'm 236 -510 b 256 -530 236 -521 245 -530 l 956 -530 b 976 -510 968 -530 976 -521 l 976 0 l 936 0 l 936 -399 l 276 -399 l 276 0 l 236 0 z m 507 -148 b 606 -248 507 -203 552 -248 b 706 -148 661 -248 706 -203 b 606 -49 706 -94 661 -49 b 507 -148 552 -49 507 -94 z m 0 -772 b 20 -791 0 -783 9 -791 l 1192 -791 b 1212 -772 1204 -791 1212 -783 l 1212 0 l 1172 0 l 1172 -661 l 40 -661 l 40 0 l 0 0 z',\n },\n fermataShortAbove: {\n x_min: 0,\n x_max: 642,\n y_min: 0,\n y_max: 454,\n ha: 454,\n o: 'm 363 148 b 462 49 363 94 408 49 b 562 148 517 49 562 94 b 462 248 562 203 517 248 b 363 148 408 248 363 203 z m 477 645 b 461 654 474 649 467 654 b 445 645 455 654 448 649 l 4 32 b 0 20 3 29 0 23 b 20 0 0 9 9 0 l 82 0 b 98 9 88 0 95 4 l 461 514 l 827 9 b 842 0 829 4 837 0 l 904 0 b 924 20 916 0 924 9 b 920 32 924 23 922 29 z',\n },\n fermataShortBelow: {\n x_min: 0,\n x_max: 642,\n y_min: -454,\n y_max: 0,\n ha: 454,\n o: 'm 363 -148 b 462 -248 363 -203 408 -248 b 562 -148 517 -248 562 -203 b 462 -49 562 -94 517 -49 b 363 -148 408 -49 363 -94 z m 920 -32 b 924 -20 922 -29 924 -23 b 904 0 924 -9 916 0 l 842 0 b 827 -9 837 0 829 -4 l 461 -514 l 98 -9 b 82 0 95 -4 88 0 l 20 0 b 0 -20 9 0 0 -9 b 4 -32 0 -23 3 -29 l 445 -645 b 461 -654 448 -649 455 -654 b 477 -645 467 -654 474 -649 z',\n },\n breathMarkComma: {\n x_min: 0,\n x_max: 191,\n y_min: 0,\n y_max: 321,\n ha: 321,\n o: 'm 82 0 b 275 285 215 92 275 183 b 115 462 275 396 212 462 b 0 356 46 462 0 413 b 115 246 0 294 53 246 b 181 258 157 246 177 256 b 192 261 184 259 189 261 b 199 259 194 261 196 261 b 203 245 202 258 203 253 b 48 43 203 183 147 112 z',\n },\n caesura: {\n x_min: 0,\n x_max: 380,\n y_min: 0,\n y_max: 490,\n ha: 490,\n o: 'm 285 706 b 285 706 285 706 285 706 b 271 696 279 706 274 701 l 1 22 b 0 16 0 20 0 17 b 16 0 0 7 7 0 l 50 0 b 65 10 56 0 62 4 l 334 684 b 336 690 334 685 336 688 b 320 706 336 698 328 706 z m 213 22 b 212 16 213 20 212 17 b 228 0 212 7 219 0 l 262 0 b 276 10 268 0 274 4 l 546 684 b 547 690 547 685 547 688 b 531 706 547 698 540 706 l 497 706 b 482 696 491 706 485 701 z',\n },\n caesuraCurved: {\n x_min: 0,\n x_max: 368,\n y_min: 0,\n y_max: 491,\n ha: 491,\n o: 'm 262 707 b 245 693 253 707 246 701 b 1 26 233 603 177 348 b 0 17 0 23 0 20 b 16 0 0 9 6 0 b 30 7 22 0 27 3 b 318 687 259 341 304 602 b 318 690 318 688 318 688 b 301 707 318 698 310 707 z m 474 707 b 458 693 465 707 459 701 b 213 26 446 603 389 348 b 212 19 212 23 212 20 b 229 0 212 9 219 0 b 243 7 235 0 240 3 b 530 687 472 341 516 602 b 530 690 530 688 530 688 b 514 707 530 698 523 707 z',\n },\n restMaxima: {\n x_min: 0,\n x_max: 450,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 158 -360 b 180 -338 170 -360 180 -350 l 180 338 b 158 360 180 350 170 360 l 22 360 b 0 338 9 360 0 350 l 0 -338 b 22 -360 0 -350 9 -360 z m 626 -360 b 648 -338 638 -360 648 -350 l 648 338 b 626 360 648 350 638 360 l 490 360 b 468 338 477 360 468 350 l 468 -338 b 490 -360 468 -350 477 -360 z',\n },\n restDoubleWhole: {\n x_min: 0,\n x_max: 125,\n y_min: -11,\n y_max: 262,\n ha: 273,\n o: 'm 158 -16 b 180 6 171 -16 180 -6 l 180 356 b 158 377 180 367 171 377 l 22 377 b 0 356 10 377 0 367 l 0 6 b 22 -16 0 -6 10 -16 z',\n },\n restWhole: {\n x_min: 0,\n x_max: 325,\n y_min: -131,\n y_max: 5,\n ha: 136,\n o: 'm 20 7 b 0 -13 9 7 0 -1 l 0 -168 b 20 -189 0 -180 9 -189 l 448 -189 b 468 -168 459 -189 468 -180 l 468 -13 b 448 7 468 -1 459 7 z',\n },\n restWholeLegerLine: {\n x_min: -139,\n x_max: 464,\n y_min: -122,\n y_max: 14,\n ha: 136,\n o: 'm 449 20 l 19 20 l -200 20 l -200 -20 l 0 -20 l 0 -156 b 19 -176 0 -167 7 -176 l 449 -176 b 468 -156 461 -176 468 -167 l 468 -20 l 668 -20 l 668 20 z',\n },\n restHalf: {\n x_min: 0,\n x_max: 325,\n y_min: -4,\n y_max: 132,\n ha: 136,\n o: 'm 0 14 b 20 -6 0 -6 0 -6 l 448 -6 b 468 14 468 -6 468 -6 l 468 170 b 448 190 468 190 468 190 l 20 190 b 0 170 0 190 0 190 z',\n },\n restHalfLegerLine: {\n x_min: -139,\n x_max: 464,\n y_min: -14,\n y_max: 122,\n ha: 136,\n o: 'm 668 20 l 468 20 l 468 156 b 449 176 468 167 461 176 l 19 176 b 0 156 7 176 0 167 l 0 20 l -200 20 l -200 -20 l 19 -20 l 449 -20 l 668 -20 z',\n },\n restQuarter: {\n x_min: 0,\n x_max: 235,\n y_min: -331,\n y_max: 401,\n ha: 732,\n o: 'm 331 -239 b 323 -229 330 -238 327 -235 l 157 -24 b 154 -16 156 -23 154 -19 b 157 -3 154 -12 156 -6 l 304 219 b 307 229 305 222 307 226 l 307 242 b 302 253 307 246 305 251 l 69 569 b 55 577 69 569 63 577 b 43 573 50 577 48 576 b 36 559 37 569 36 563 b 40 543 36 550 40 543 l 150 393 b 154 376 153 389 154 383 b 150 359 154 370 153 363 l 4 137 b 1 125 3 134 1 128 l 1 112 b 6 101 1 108 3 104 l 167 -99 b 131 -95 161 -98 148 -95 b 49 -124 107 -95 75 -101 b 0 -229 17 -153 0 -193 b 16 -285 0 -249 4 -269 b 154 -468 46 -331 154 -468 b 171 -477 154 -468 161 -477 b 180 -474 174 -477 177 -477 b 190 -456 187 -468 190 -462 b 186 -444 190 -451 187 -446 b 135 -353 181 -436 135 -353 b 125 -307 135 -353 125 -333 b 150 -246 125 -288 131 -265 b 206 -223 167 -229 187 -223 b 252 -236 225 -223 240 -229 l 308 -272 b 320 -275 308 -272 314 -275 b 334 -268 325 -275 330 -274 b 338 -255 337 -262 338 -259 b 334 -243 338 -251 337 -248 z',\n },\n rest8th: {\n x_min: 0,\n x_max: 276,\n y_min: -255,\n y_max: 204,\n ha: 459,\n o: 'm 384 292 b 379 294 383 292 380 294 b 360 282 370 294 363 289 b 245 141 354 274 310 189 b 180 112 226 127 203 117 b 206 181 196 131 206 154 b 104 284 206 238 160 284 b 0 181 46 284 0 238 b 65 85 0 137 27 101 b 144 68 86 75 115 68 b 269 109 186 68 230 81 b 320 157 287 122 304 140 l 156 -356 l 194 -367 l 396 268 b 397 275 397 269 397 272 b 384 292 397 282 393 288 z',\n },\n rest16th: {\n x_min: 1,\n x_max: 344,\n y_min: -507,\n y_max: 204,\n ha: 711,\n o: 'm 494 268 b 495 275 495 271 495 272 b 482 292 495 282 491 289 b 475 294 480 294 477 294 b 456 282 467 294 461 289 b 285 115 422 213 364 135 b 310 184 302 135 310 158 b 203 284 310 240 259 284 b 104 177 145 281 104 233 b 171 84 105 134 134 98 b 252 69 197 72 225 69 b 423 164 324 72 380 108 l 423 164 l 359 -65 b 183 -245 338 -132 256 -226 b 207 -176 199 -225 207 -200 b 102 -76 207 -118 158 -76 b 1 -183 45 -76 1 -125 b 69 -275 1 -226 32 -262 b 150 -289 96 -287 121 -289 b 321 -194 222 -287 278 -251 l 174 -720 l 213 -730 z',\n },\n rest32nd: {\n x_min: 0,\n x_max: 391,\n y_min: -507,\n y_max: 460,\n ha: 967,\n o: 'm 217 71 b 408 171 348 71 402 161 l 354 -46 b 184 -240 323 -121 268 -217 b 204 -171 200 -220 204 -197 b 102 -76 204 -114 158 -76 b 0 -177 46 -76 0 -120 b 140 -288 0 -252 63 -288 b 320 -186 216 -288 276 -246 l 189 -721 l 228 -730 l 562 638 b 563 644 563 639 563 642 b 549 661 563 652 557 658 b 543 662 547 662 544 662 b 524 649 534 662 528 657 b 361 487 497 589 431 504 b 383 556 379 508 383 530 b 282 652 383 611 338 652 b 179 549 226 652 179 609 b 249 451 179 505 210 464 b 311 439 268 444 288 441 b 330 441 317 439 323 439 b 498 541 400 445 458 485 l 442 310 b 271 117 413 238 351 137 b 292 186 288 138 292 160 b 189 282 292 243 245 282 b 88 180 132 282 88 238 b 217 71 88 112 153 71 z',\n },\n rest64th: {\n x_min: 0,\n x_max: 423,\n y_min: -758,\n y_max: 464,\n ha: 1222,\n o: 'm 207 -1083 l 246 -1092 b 608 644 282 -919 605 634 b 609 649 608 647 609 648 b 595 667 609 658 603 665 b 589 668 593 668 592 668 b 569 654 577 668 575 664 b 474 521 563 644 530 573 b 412 487 456 505 435 494 b 432 546 425 503 432 526 b 328 649 432 606 382 649 b 226 546 275 649 226 608 b 360 438 226 465 300 438 b 501 492 419 438 474 465 b 546 546 527 518 533 526 l 547 547 l 500 323 b 399 161 491 300 452 209 b 337 125 382 144 360 132 b 357 184 350 143 357 134 b 253 288 357 235 317 288 b 151 187 190 288 151 236 b 285 76 151 138 183 76 b 471 184 412 76 465 173 l 423 -45 b 324 -204 413 -69 374 -158 b 262 -240 305 -222 284 -233 b 281 -180 274 -223 281 -212 b 177 -78 281 -147 258 -78 b 75 -180 98 -78 75 -153 b 209 -289 75 -207 88 -289 b 395 -181 330 -289 389 -193 l 350 -397 b 248 -564 337 -449 285 -530 b 186 -599 229 -580 207 -592 b 204 -540 197 -583 204 -563 b 102 -438 204 -501 174 -438 b 0 -540 29 -438 0 -501 b 132 -648 0 -579 24 -648 b 320 -540 266 -648 315 -552 z',\n },\n rest128th: {\n x_min: -1,\n x_max: 475,\n y_min: -759,\n y_max: 717,\n ha: 1476,\n o: 'm 677 1028 b 664 1032 672 1031 667 1032 b 644 1018 654 1032 649 1028 b 549 886 638 1008 605 937 b 487 851 531 870 510 858 b 507 910 500 868 507 890 b 403 1014 507 971 456 1014 b 301 910 350 1014 301 972 b 435 802 301 829 374 802 b 576 857 494 802 549 829 b 621 910 602 883 608 890 l 622 912 l 575 687 b 474 526 566 664 527 573 b 412 490 456 508 435 497 b 432 549 425 507 432 498 b 328 652 432 599 392 652 b 226 552 265 652 226 600 b 360 441 226 503 258 441 b 546 549 487 441 540 537 l 498 320 b 399 160 488 295 449 207 b 337 125 380 143 359 131 b 356 184 348 141 356 153 b 252 287 356 217 333 287 b 150 184 173 287 150 212 b 284 76 150 157 163 76 b 469 183 405 76 464 171 l 425 -33 b 323 -200 412 -85 360 -166 b 261 -235 304 -216 282 -228 b 279 -176 272 -219 279 -199 b 177 -72 279 -137 249 -72 b 75 -176 104 -72 75 -137 b 207 -284 75 -215 99 -284 b 395 -176 341 -284 390 -187 l 347 -409 b 248 -566 330 -461 282 -533 b 186 -600 229 -582 207 -593 b 204 -541 197 -583 204 -564 b 102 -438 204 -501 174 -438 b -1 -541 29 -438 -1 -503 b 132 -649 -1 -580 24 -649 b 318 -546 256 -649 307 -567 l 206 -1084 l 245 -1093 b 683 1008 281 -920 680 996 b 684 1015 683 1009 684 1014 b 677 1028 684 1020 683 1024 z',\n },\n dynamicPiano: {\n x_min: -95,\n x_max: 317,\n y_min: -163,\n y_max: 263,\n ha: 426,\n o: 'm 186 -235 l 186 -206 l 78 -206 l 161 26 l 166 16 b 229 -29 166 16 180 -16 b 256 -32 238 -32 248 -32 b 445 166 336 -32 415 49 b 456 246 454 197 456 223 b 374 373 456 343 396 367 b 356 376 369 374 361 376 b 242 314 311 376 266 338 l 238 310 l 235 315 b 154 377 235 315 204 370 b 138 379 148 377 144 379 b 0 226 91 379 42 346 l 26 213 b 63 301 32 232 46 278 b 102 328 72 314 89 325 b 108 328 104 328 107 328 b 120 325 112 328 117 327 b 127 304 125 321 127 314 b 94 192 127 269 101 206 l -49 -206 l -137 -206 l -137 -235 z m 226 17 b 215 19 223 17 217 17 b 187 81 193 27 187 53 b 204 180 187 125 203 177 b 297 317 217 235 259 295 b 324 325 307 323 315 325 b 336 324 328 325 333 325 b 350 311 341 323 347 317 b 356 278 354 302 356 291 b 333 161 356 239 341 187 b 242 20 314 105 278 37 b 226 17 238 17 230 17 z',\n },\n dynamicMezzo: {\n x_min: -7,\n x_max: 374,\n y_min: -2,\n y_max: 251,\n ha: 253,\n o: 'm 488 63 b 467 48 481 50 474 48 b 459 49 464 48 462 48 b 449 65 452 52 449 58 b 461 112 449 76 455 94 b 474 157 464 121 471 150 b 492 281 482 183 492 242 b 491 301 492 288 492 295 b 436 359 484 340 467 359 b 340 307 399 359 359 331 l 337 301 l 334 308 b 272 359 334 308 311 359 b 177 310 232 359 202 343 l 173 304 l 171 311 b 117 360 171 311 153 353 b 96 361 109 361 102 361 b 29 328 60 361 39 340 b -10 252 20 318 0 284 l 12 240 b 68 318 12 240 36 318 b 75 317 71 318 72 318 b 86 295 84 314 86 307 b 59 194 86 275 75 240 b 1 20 59 193 6 33 b 0 13 1 17 0 16 b 3 4 0 10 1 7 b 14 -1 6 1 9 -1 l 36 -1 b 91 -1 58 -1 86 -1 b 107 22 94 -1 101 -1 b 127 99 114 53 121 79 b 235 310 132 121 186 310 b 243 305 238 310 242 308 b 248 289 246 302 248 297 b 216 160 248 265 233 219 b 173 22 194 89 173 22 b 173 16 173 20 173 19 b 176 3 173 12 173 6 b 187 -1 179 0 183 -1 l 266 -1 b 282 16 272 -1 279 0 b 284 26 282 17 284 22 b 392 302 312 228 359 288 b 396 304 393 302 395 304 l 397 304 b 400 302 399 304 399 302 b 408 289 403 301 408 297 b 369 140 408 275 399 217 b 356 75 360 117 356 95 b 370 23 356 55 360 37 b 428 -3 382 6 408 -3 b 536 99 492 -3 517 49 b 539 108 537 102 537 105 l 514 120 b 488 63 514 120 498 81 z',\n },\n dynamicForte: {\n x_min: -137,\n x_max: 334,\n y_min: -193,\n y_max: 421,\n ha: 614,\n o: 'm -122 -86 b -197 -161 -161 -86 -197 -122 b -81 -278 -197 -236 -147 -278 b 35 -228 -35 -278 -1 -264 b 202 173 98 -164 167 50 b 238 297 215 219 228 264 l 238 300 l 341 300 b 356 314 350 300 356 305 l 356 346 b 341 360 356 354 350 360 l 256 360 l 256 364 b 330 554 297 511 308 537 b 359 566 341 563 351 566 b 366 564 361 566 364 564 b 380 553 373 563 377 559 b 382 546 382 550 382 549 b 373 528 382 539 379 531 b 351 478 359 517 351 498 b 354 458 351 471 353 465 b 384 426 359 445 370 432 b 410 420 390 423 400 420 b 445 431 420 420 432 423 b 478 472 459 438 474 456 b 481 497 481 480 481 488 b 467 550 481 514 477 533 b 376 605 455 572 422 598 b 351 606 369 606 360 606 b 225 553 317 606 272 595 b 122 363 187 520 154 456 l 122 360 l 13 360 b -1 346 4 360 -1 354 l -1 314 b 13 300 -1 305 4 300 l 102 300 l 102 294 b 66 140 88 236 76 187 b 24 -35 55 86 42 32 l 20 -52 b -53 -235 -10 -170 -19 -212 b -78 -242 -60 -239 -69 -242 b -98 -235 -85 -242 -92 -239 b -105 -222 -102 -232 -105 -228 b -105 -219 -105 -220 -105 -220 b -94 -204 -104 -213 -101 -207 b -58 -144 -66 -193 -58 -167 b -122 -86 -58 -124 -71 -86 z',\n },\n dynamicRinforzando: {\n x_min: -12,\n x_max: 230,\n y_min: 0,\n y_max: 254,\n ha: 254,\n o: 'm 272 364 b 200 341 239 364 212 348 b 168 310 187 333 177 321 l 164 304 b 109 363 164 304 151 353 b 88 366 102 364 95 366 b 22 331 52 366 32 343 b -17 255 13 321 -7 287 l 4 243 b 60 321 4 243 29 321 b 68 320 63 321 65 321 b 78 297 75 317 78 308 b 49 180 78 272 65 230 l 0 23 b 0 17 0 22 0 20 b 3 4 0 13 0 7 b 14 0 6 1 10 0 l 94 0 b 109 17 99 0 107 1 b 111 27 109 19 111 23 b 209 302 140 230 186 279 b 225 311 215 308 220 311 b 229 310 226 311 228 311 b 233 304 233 307 233 305 b 233 301 233 302 233 301 b 216 268 220 291 216 279 b 225 243 216 259 219 249 b 262 229 235 232 249 229 b 304 242 279 229 295 235 b 331 308 320 255 331 275 b 272 364 331 341 304 364 z',\n },\n dynamicSforzando: {\n x_min: 0,\n x_max: 208,\n y_min: -5,\n y_max: 263,\n ha: 268,\n o: 'm 242 328 b 217 289 222 317 217 300 b 258 249 217 274 230 249 b 298 284 285 249 295 269 b 300 295 300 287 300 291 b 189 379 300 328 272 379 b 49 259 92 379 49 315 b 99 173 49 229 59 196 b 164 137 117 163 140 151 b 194 88 189 122 194 102 b 124 24 194 73 177 24 b 72 46 82 24 72 39 b 73 49 72 48 72 49 b 96 96 78 52 96 62 b 50 150 96 134 72 150 b 0 91 29 150 0 134 b 124 -7 0 26 49 -7 b 282 111 199 -7 282 24 b 171 239 282 197 207 219 b 128 292 135 259 128 268 b 193 347 128 317 156 347 b 242 328 230 347 242 328 z',\n },\n dynamicZ: {\n x_min: -42,\n x_max: 239,\n y_min: -1,\n y_max: 258,\n ha: 259,\n o: 'm 229 292 b 235 288 232 292 233 291 b 236 284 236 285 236 285 b 233 278 236 281 235 279 b -42 55 232 276 -4 85 b -60 24 -56 43 -60 33 b -50 4 -60 12 -50 4 b -35 0 -45 1 -40 0 b 9 29 -14 0 1 19 b 50 69 17 43 26 69 b 89 35 75 69 81 50 b 170 -1 104 10 137 -1 b 243 22 197 -1 223 6 b 304 147 288 56 304 118 b 264 196 304 176 294 196 b 226 156 239 196 226 174 b 251 117 226 128 249 122 b 251 108 251 114 251 111 b 243 79 251 98 249 88 b 212 56 236 68 223 56 b 202 59 209 56 204 56 b 163 92 194 63 186 75 b 108 122 140 109 114 120 b 105 125 105 124 105 124 b 107 128 105 127 107 128 b 312 304 107 128 302 294 b 341 340 324 315 336 327 b 344 347 343 341 344 346 l 344 356 b 333 369 343 367 336 369 l 331 369 l 262 363 b 217 361 245 361 230 361 b 156 366 193 361 174 363 b 114 372 147 367 125 372 b 107 370 111 372 108 370 b 86 344 98 367 89 360 b 37 222 72 265 42 232 b 37 219 37 220 37 220 b 50 207 37 213 43 207 l 66 207 b 81 225 75 207 76 215 b 108 291 85 235 105 285 b 118 297 111 297 112 297 b 167 289 125 295 144 291 b 181 289 171 289 177 289 b 229 292 202 289 222 291 z',\n },\n ornamentTrill: {\n x_min: -12,\n x_max: 383,\n y_min: 0,\n y_max: 383,\n ha: 383,\n o: 'm 464 396 b 376 359 408 396 376 359 l 364 370 b 346 377 357 377 346 377 l 197 377 l 246 528 b 246 531 246 530 246 531 b 226 552 246 541 236 552 l 213 552 b 199 544 209 552 202 547 b 124 482 196 541 130 487 b 117 471 118 478 117 471 b 84 377 117 471 102 431 l 3 377 b -17 360 -14 377 -17 360 l -17 341 b 3 324 -17 325 3 324 l 66 324 b 0 85 35 229 0 117 b 92 0 0 16 48 0 b 186 35 137 0 186 35 b 194 13 186 35 190 24 b 212 0 199 1 212 0 l 276 0 b 298 16 295 0 298 16 l 298 43 b 321 147 298 75 321 147 l 382 284 b 412 325 382 284 396 311 b 446 341 425 336 438 341 b 452 340 448 341 451 341 b 428 288 432 327 428 305 b 485 233 428 271 446 233 b 552 308 534 233 552 264 b 464 396 552 353 520 396 z m 222 143 b 147 78 210 104 171 78 b 137 79 143 78 140 78 b 121 115 125 85 121 99 b 137 190 121 148 137 190 l 180 324 l 275 324 b 279 320 279 324 279 320 b 222 143 279 320 235 187 z',\n },\n ornamentTurn: {\n x_min: 0,\n x_max: 456,\n y_min: 0,\n y_max: 232,\n ha: 232,\n o: 'm 527 334 b 442 269 488 334 442 312 b 501 204 442 228 468 204 b 570 226 533 204 540 226 b 613 164 598 226 613 204 l 613 163 b 550 98 613 127 586 98 b 448 143 508 98 485 109 l 328 255 l 298 284 b 174 334 262 317 223 334 b 0 170 92 334 0 278 b 131 0 0 68 58 0 b 215 65 170 0 215 22 b 156 130 215 107 189 130 b 86 108 124 130 117 108 b 43 170 59 108 43 130 l 43 171 b 108 236 43 207 72 236 b 209 192 150 236 171 225 l 328 79 l 360 50 b 482 0 396 17 433 0 b 657 164 564 0 657 56 b 527 334 657 266 600 334 z',\n },\n ornamentTurnSlash: {\n x_min: 0,\n x_max: 456,\n y_min: -80,\n y_max: 313,\n ha: 393,\n o: 'm 527 334 b 442 269 488 334 442 312 b 501 204 442 228 468 204 b 570 226 533 204 540 226 b 613 164 598 226 613 204 l 613 163 b 550 98 613 127 586 98 b 448 143 508 98 485 109 l 354 230 l 354 431 b 336 451 354 442 347 451 l 323 451 b 302 431 311 451 302 442 l 302 279 l 298 284 b 174 334 262 317 223 334 b 0 170 92 334 0 278 b 131 0 0 68 58 0 b 215 65 170 0 215 22 b 156 130 215 107 189 130 b 86 108 124 130 117 108 b 43 170 59 108 43 130 l 43 171 b 108 236 43 207 72 236 b 209 192 150 236 171 225 l 302 104 l 302 -96 b 323 -115 302 -108 311 -115 l 336 -115 b 354 -96 347 -115 354 -108 l 354 55 l 360 50 b 482 0 396 17 433 0 b 657 164 564 0 657 56 b 527 334 657 266 600 334 z',\n },\n ornamentMordent: {\n x_min: 0,\n x_max: 473,\n y_min: -77,\n y_max: 316,\n ha: 393,\n o: 'm 647 302 l 562 166 l 446 347 b 429 357 444 353 435 357 b 413 347 423 357 416 353 l 363 262 l 363 435 b 343 455 363 446 354 455 l 331 455 b 311 435 320 455 311 446 l 311 173 l 310 171 l 203 347 b 186 357 200 353 192 357 b 168 347 180 357 171 353 l 0 69 l 35 48 l 120 189 l 226 10 b 243 0 229 4 238 0 b 261 10 249 0 258 4 l 311 95 l 311 -91 b 331 -111 311 -102 320 -111 l 343 -111 b 363 -91 354 -111 363 -102 l 363 184 l 366 189 l 478 10 b 495 0 481 4 490 0 b 513 10 501 0 510 4 l 681 281 z',\n },\n ornamentShortTrill: {\n x_min: 0,\n x_max: 473,\n y_min: 0,\n y_max: 248,\n ha: 248,\n o: 'm 647 302 l 562 166 l 446 347 b 431 357 444 353 436 357 b 413 347 425 357 416 353 l 310 171 l 203 347 b 186 357 200 353 192 357 b 168 347 180 357 173 353 l 0 69 l 35 48 l 120 189 l 226 10 b 243 0 229 4 238 0 b 261 10 249 0 258 4 l 366 189 l 478 9 b 495 0 481 3 490 0 b 513 10 501 0 510 4 l 681 281 z',\n },\n ornamentTremblement: {\n x_min: 0,\n x_max: 654,\n y_min: 0,\n y_max: 248,\n ha: 248,\n o: 'm 907 302 l 822 166 l 708 348 b 691 357 704 354 701 357 b 674 347 685 357 677 353 l 648 302 l 563 166 l 449 348 b 432 357 446 354 438 357 b 415 347 426 357 418 353 l 415 346 l 311 171 l 203 348 b 186 357 200 354 192 357 b 168 348 177 357 171 354 l 168 347 l 0 69 l 35 48 l 120 190 l 226 10 b 243 0 229 4 238 0 l 245 0 b 261 10 251 0 258 4 l 367 189 l 480 10 b 497 0 482 4 491 0 b 513 10 503 0 510 4 l 625 192 l 739 10 b 756 0 742 4 750 0 b 772 10 762 0 769 4 l 942 282 z',\n },\n ornamentPrecompAppoggTrill: {\n x_min: 0,\n x_max: 680,\n y_min: 0,\n y_max: 388,\n ha: 388,\n o: 'm 860 170 l 746 353 b 729 361 743 359 737 361 b 713 351 723 361 716 357 l 685 307 l 600 170 l 487 353 b 481 359 485 356 484 357 b 469 361 478 360 472 361 b 452 351 464 361 455 357 l 348 176 l 240 353 b 223 361 238 359 229 361 b 206 353 215 361 209 359 l 40 76 l 40 541 b 20 559 39 552 30 559 b 0 541 10 559 1 552 l 0 26 b 19 1 0 16 9 4 b 26 0 20 1 24 0 b 48 13 35 0 43 6 l 72 52 l 157 194 l 265 14 b 282 4 268 9 276 4 b 298 14 288 4 295 9 l 405 193 l 517 14 b 534 4 520 9 528 4 b 550 14 540 4 547 9 l 664 196 l 776 14 b 793 4 779 9 788 4 b 811 14 799 4 808 9 l 979 287 l 945 307 z',\n },\n ornamentPrecompSlideTrillDAnglebert: {\n x_min: 0,\n x_max: 662,\n y_min: -158,\n y_max: 248,\n ha: 406,\n o: 'm 834 166 l 720 348 b 704 357 717 354 713 357 b 687 348 697 357 690 353 l 661 302 l 660 302 l 575 166 l 461 348 b 455 354 459 350 456 353 b 444 357 452 356 448 357 b 428 347 438 357 431 353 l 323 171 l 215 347 b 213 350 215 348 215 350 b 213 350 213 350 213 350 l 213 351 l 212 351 l 212 353 l 210 353 l 210 353 l 209 354 b 207 354 209 354 207 354 b 197 357 206 356 200 357 b 197 357 197 357 197 357 b 194 357 196 357 196 357 b 180 347 187 357 183 353 l 180 346 l 69 164 b 0 -50 23 88 0 17 b 49 -219 0 -108 16 -163 b 66 -228 52 -223 59 -228 b 76 -225 69 -228 73 -226 b 86 -207 82 -222 86 -215 b 84 -197 86 -204 85 -200 b 40 -52 55 -150 40 -102 b 104 143 40 10 62 73 l 131 190 l 239 10 b 256 0 242 4 249 0 l 256 0 b 272 10 262 0 269 4 l 379 189 l 491 10 b 508 0 494 4 503 0 b 508 0 508 0 508 0 l 508 0 b 526 10 514 0 521 4 l 638 192 l 750 10 b 768 0 755 4 762 0 l 768 0 b 785 10 773 0 782 4 l 785 10 l 953 282 l 919 302 z',\n },\n ornamentPrecompSlideTrillBach: {\n x_min: 0,\n x_max: 662,\n y_min: -158,\n y_max: 321,\n ha: 479,\n o: 'm 834 166 l 720 348 b 704 357 716 354 713 357 b 687 348 698 357 690 354 l 660 304 l 660 302 l 632 259 l 632 442 b 612 462 632 454 624 462 l 599 462 b 579 442 588 462 579 454 l 579 173 l 575 166 l 461 348 b 455 356 459 351 458 354 b 445 359 452 357 448 359 b 428 348 439 359 431 354 l 323 171 l 215 347 b 213 350 215 348 213 350 l 213 351 l 212 353 l 210 353 l 210 354 l 207 354 b 197 357 204 356 200 357 b 180 348 189 357 183 354 l 179 346 l 69 164 b 0 -49 23 88 0 19 b 49 -217 0 -107 17 -163 b 66 -228 52 -223 60 -228 b 76 -225 69 -228 73 -226 b 86 -207 82 -222 86 -213 b 84 -197 86 -204 85 -200 b 42 -50 56 -148 42 -101 b 104 144 42 12 62 75 l 131 190 l 239 10 b 256 0 242 4 251 0 b 274 10 262 0 271 4 l 379 190 l 491 10 b 508 0 494 4 503 0 b 526 10 514 0 523 4 l 579 98 l 579 -84 b 599 -104 579 -95 588 -104 l 612 -104 b 632 -84 624 -104 632 -95 l 632 183 l 638 192 l 750 10 b 768 0 753 4 762 0 b 785 10 773 0 782 4 l 953 282 l 919 302 z',\n },\n ornamentPrecompTrillSuffixDandrieu: {\n x_min: 0,\n x_max: 662,\n y_min: 0,\n y_max: 406,\n ha: 406,\n o: 'm 904 575 b 887 585 901 580 893 585 b 877 582 884 585 880 583 b 867 564 871 579 867 570 b 870 554 867 562 868 557 b 912 408 897 505 912 458 b 850 213 912 346 891 282 l 822 167 l 714 348 b 697 357 711 354 703 357 b 680 348 691 357 683 354 l 575 168 l 462 348 b 445 357 459 354 451 357 b 428 348 439 357 431 354 l 315 167 l 203 348 b 186 357 200 354 192 357 b 168 348 180 357 171 354 l 0 76 l 35 55 l 120 192 l 233 10 b 249 0 238 4 240 0 b 266 10 255 0 264 4 l 294 55 l 379 192 l 492 9 b 498 3 494 6 495 4 b 508 0 501 1 505 0 b 526 10 514 0 523 4 l 631 186 l 737 13 b 746 3 739 10 743 4 b 756 0 749 1 753 0 b 773 9 762 0 770 3 l 884 193 b 953 406 930 269 953 338 b 904 575 953 464 936 520 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefix: {\n x_min: 0,\n x_max: 857,\n y_min: 0,\n y_max: 248,\n ha: 248,\n o: 'm 383 140 b 413 189 399 166 412 187 b 520 10 423 171 516 16 b 537 0 523 4 530 0 b 554 10 543 0 550 4 b 660 189 557 16 649 171 b 772 10 671 173 766 19 b 791 0 778 1 785 0 b 806 10 796 0 802 4 b 919 192 809 16 907 174 l 1031 10 b 1048 0 1035 4 1043 0 l 1048 0 b 1066 10 1054 1 1063 4 l 1066 10 l 1234 282 l 1200 302 l 1115 166 l 1002 348 b 985 357 998 354 994 357 b 968 348 978 357 971 353 l 855 166 b 742 348 845 183 746 341 b 726 357 737 354 732 357 b 708 348 719 357 711 354 b 603 171 704 341 613 189 b 495 348 593 189 498 343 b 478 357 492 353 487 357 b 461 348 469 357 464 353 b 357 173 459 346 393 235 b 213 79 320 111 284 79 b 66 176 143 79 95 112 b 40 279 43 228 40 275 b 20 300 40 291 30 300 b 0 278 9 300 0 289 b 29 161 0 276 3 219 b 213 39 65 81 130 39 b 383 140 297 39 346 73 z',\n },\n ornamentPrecompTrillLowerSuffix: {\n x_min: 0,\n x_max: 565,\n y_min: -171,\n y_max: 249,\n ha: 420,\n o: 'm 347 168 l 235 348 b 217 359 230 354 226 359 b 200 348 209 359 203 353 b 3 30 197 344 6 35 b 0 20 0 26 0 24 b 22 0 0 9 10 0 b 37 9 27 0 35 3 l 151 192 b 265 10 161 174 262 13 b 281 0 268 6 272 0 b 298 10 289 0 295 3 l 403 186 l 511 10 b 528 0 516 4 521 0 b 546 10 537 0 541 4 l 698 265 b 775 22 744 202 775 112 b 700 -215 775 -60 752 -144 b 696 -226 697 -219 696 -222 b 704 -243 696 -232 700 -239 b 717 -246 708 -246 713 -246 b 733 -239 723 -246 729 -243 b 814 20 789 -160 814 -69 b 711 312 814 132 773 242 b 696 320 707 317 700 320 b 680 310 691 320 684 318 b 595 168 671 297 602 181 l 488 348 b 471 359 484 354 478 359 b 454 348 464 359 456 353 b 347 168 449 343 357 186 z',\n },\n brassMuteClosed: {\n x_min: 0,\n x_max: 312,\n y_min: 0,\n y_max: 312,\n ha: 312,\n o: 'm 22 256 b 0 225 7 256 0 240 b 22 193 0 209 7 193 l 193 193 l 193 22 b 225 0 193 7 209 0 b 256 22 240 0 256 7 l 256 193 l 428 193 b 449 225 442 193 449 209 b 428 256 449 240 442 256 l 256 256 l 256 428 b 225 449 256 442 240 449 b 193 428 209 449 193 442 l 193 256 z',\n },\n brassMuteOpen: {\n x_min: 0,\n x_max: 280,\n y_min: 0,\n y_max: 280,\n ha: 280,\n o: 'm 202 403 b 0 202 91 403 0 312 b 202 0 0 91 91 0 b 403 202 312 0 403 91 b 202 403 403 312 312 403 z m 202 40 b 40 202 112 40 40 112 b 202 363 40 291 112 363 b 363 202 291 363 363 291 b 202 40 363 112 291 40 z',\n },\n stringsDownBow: {\n x_min: 0,\n x_max: 315,\n y_min: 0,\n y_max: 293,\n ha: 293,\n o: 'm 40 0 l 40 291 l 413 291 l 413 0 l 454 0 l 454 402 b 433 422 454 413 445 422 l 20 422 b 0 402 9 422 0 402 l 0 0 z',\n },\n stringsUpBow: {\n x_min: 0,\n x_max: 262,\n y_min: 0,\n y_max: 343,\n ha: 343,\n o: 'm 374 485 b 357 494 372 490 363 494 l 337 494 b 318 481 330 494 321 488 l 189 118 l 59 481 b 40 494 56 488 48 494 l 20 494 b 0 474 9 494 0 485 b 1 467 0 472 1 468 l 170 13 b 189 0 173 6 181 0 b 207 13 196 0 204 6 l 376 467 b 377 474 376 468 377 472 b 374 485 377 477 376 482 z',\n },\n stringsHarmonic: {\n x_min: 0,\n x_max: 181,\n y_min: 0,\n y_max: 181,\n ha: 181,\n o: 'm 131 220 b 220 131 181 220 220 181 b 131 40 220 81 181 40 b 40 131 81 40 40 81 b 131 220 40 181 81 220 z m 131 261 b 0 131 59 261 0 203 b 131 0 0 59 59 0 b 261 131 203 0 261 59 b 131 261 261 203 203 261 z',\n },\n pluckedSnapPizzicatoAbove: {\n x_min: 0,\n x_max: 269,\n y_min: 0,\n y_max: 389,\n ha: 389,\n o: 'm 213 540 b 194 560 213 552 204 560 b 174 540 183 560 174 552 l 174 386 b 0 193 76 376 0 294 b 194 0 0 86 86 0 b 387 193 301 0 387 86 b 213 386 387 294 311 376 z m 194 40 b 40 193 109 40 40 109 b 174 346 40 271 98 336 l 174 193 b 194 173 174 183 183 173 b 213 193 204 173 213 183 l 213 346 b 347 193 289 336 347 271 b 194 40 347 109 278 40 z',\n },\n pluckedSnapPizzicatoBelow: {\n x_min: 0,\n x_max: 269,\n y_min: 0,\n y_max: 389,\n ha: 389,\n o: 'm 213 174 b 387 367 311 184 387 266 b 193 560 387 474 301 560 b 0 367 86 560 0 474 b 174 174 0 266 76 184 l 174 20 b 194 0 174 9 183 0 b 213 20 204 0 213 9 z m 194 520 b 347 367 278 520 347 452 b 213 215 347 289 289 225 l 213 367 b 194 387 213 377 204 387 b 174 367 183 387 174 377 l 174 215 b 40 367 98 225 40 289 b 194 520 40 452 109 520 z',\n },\n keyboardPedalPed: {\n x_min: 0,\n x_max: 981,\n y_min: -10,\n y_max: 545,\n ha: 555,\n o: 'm 1354 12 b 1413 78 1385 12 1413 42 b 1354 145 1413 115 1385 145 b 1293 78 1320 145 1293 115 b 1354 12 1293 42 1320 12 z m 1092 88 b 1080 86 1089 86 1084 86 b 1004 203 1037 86 1004 137 b 1107 376 1004 360 1097 374 b 1149 209 1129 336 1149 287 b 1092 88 1149 117 1130 95 z m 752 393 b 795 344 779 393 795 372 b 770 285 795 325 788 304 b 693 203 737 249 697 207 b 688 264 690 225 688 245 b 752 393 688 347 714 393 z m 245 507 b 220 544 245 533 235 544 b 217 544 219 544 219 544 b 186 510 206 546 192 537 b 143 464 179 478 163 464 b 134 465 140 464 137 464 b 102 516 117 467 102 487 b 141 613 102 541 112 576 b 347 721 212 711 315 721 b 356 721 351 721 354 721 b 275 560 344 701 297 616 b 259 495 274 557 259 528 b 272 452 259 480 264 465 b 373 323 297 416 350 354 b 387 284 382 311 387 298 b 350 222 387 265 376 245 b 230 140 301 180 252 154 b 128 39 215 130 128 92 b 134 12 128 30 130 22 b 173 -14 144 -7 157 -14 b 264 40 204 -14 243 17 b 333 98 281 58 302 98 b 389 39 357 98 373 60 b 478 -10 416 1 435 -10 b 622 96 527 -10 559 43 b 740 -10 626 86 667 -10 b 929 95 827 -10 917 85 b 1086 -12 950 37 1018 -12 b 1120 -7 1097 -12 1109 -10 b 1264 213 1212 17 1264 111 b 1263 248 1264 225 1263 236 b 815 664 1228 544 907 647 b 785 668 805 665 795 668 b 779 668 783 668 782 668 b 757 654 769 668 760 665 b 757 649 757 652 757 651 b 786 618 759 629 783 619 b 818 606 796 613 808 611 b 1071 435 1007 534 1066 445 b 909 181 930 386 909 256 b 910 141 909 164 909 151 b 786 78 899 127 844 78 b 708 151 726 78 710 144 b 799 230 711 154 742 181 b 864 350 845 271 864 312 b 757 456 864 410 815 456 b 599 222 644 456 599 328 b 609 141 599 192 602 164 b 563 104 608 140 595 122 b 540 98 556 99 549 98 b 459 140 513 98 480 118 b 397 184 413 189 399 184 b 475 279 403 189 454 226 b 482 311 480 289 482 300 b 449 410 482 359 452 405 b 361 533 442 419 383 503 b 354 560 356 541 354 550 b 386 651 353 588 372 622 b 429 713 405 693 426 710 b 557 592 521 688 557 628 b 549 569 557 582 554 573 b 523 559 540 562 531 559 b 459 592 495 559 469 583 b 425 613 451 600 438 613 b 409 608 419 613 415 612 b 399 586 402 602 399 595 b 399 583 397 585 399 585 b 409 552 399 573 405 562 b 541 458 441 487 492 458 b 608 480 564 458 588 465 b 648 572 632 497 648 531 b 429 778 648 649 589 749 b 351 785 402 782 376 785 b 0 507 130 785 0 615 b 127 366 0 399 68 366 b 245 507 186 366 245 429 z',\n },\n keyboardPedalUp: {\n x_min: 0,\n x_max: 473,\n y_min: 0,\n y_max: 473,\n ha: 473,\n o: 'm 99 99 b 164 69 120 79 143 69 b 199 82 177 69 190 73 b 210 114 206 89 210 102 b 206 137 210 122 209 130 b 200 160 203 145 200 154 b 210 179 200 166 203 171 l 245 215 b 285 213 255 225 272 219 l 287 213 l 288 212 b 318 183 301 206 318 196 l 318 134 b 291 102 318 112 308 112 b 258 58 274 92 258 76 b 340 0 258 26 294 0 b 423 58 386 0 423 26 b 390 102 423 76 408 92 b 361 134 373 112 361 112 l 361 183 b 392 212 361 196 379 206 b 395 213 393 212 393 213 b 436 215 408 219 426 225 l 471 179 b 480 161 478 171 480 167 b 474 137 480 154 477 147 b 471 115 472 130 471 122 b 482 82 471 102 474 91 b 517 69 491 73 504 69 b 582 99 539 69 562 79 b 612 164 602 120 612 143 b 599 199 612 177 608 190 b 567 210 592 206 579 210 b 544 206 559 210 552 209 b 521 200 536 203 528 200 b 501 210 514 200 508 203 l 467 245 b 468 285 456 255 462 272 l 468 287 b 469 288 468 287 469 287 b 498 318 475 301 485 318 l 547 318 b 579 291 569 318 569 308 b 624 258 589 274 605 258 b 681 340 655 258 681 294 b 624 423 681 386 655 423 b 579 390 605 423 589 408 b 547 361 569 373 569 361 l 498 361 b 469 392 485 361 475 379 b 468 395 469 393 468 393 b 467 436 462 408 456 426 l 501 471 b 520 480 508 478 514 480 b 544 474 527 480 534 477 b 566 471 552 472 559 471 b 599 482 579 471 590 474 b 612 516 608 491 612 503 b 582 580 612 536 602 560 b 516 612 562 600 537 612 b 482 599 503 612 491 608 b 471 566 474 590 471 579 b 474 544 471 559 472 552 b 480 520 477 534 480 527 b 471 501 480 514 478 508 l 436 467 b 395 468 426 456 408 462 b 392 469 393 468 393 469 b 361 498 379 475 361 485 l 361 547 b 390 579 361 569 373 569 b 423 624 408 589 423 605 b 340 681 423 655 386 681 b 258 624 294 681 258 655 b 291 579 258 605 274 589 b 318 547 308 569 318 569 l 318 498 b 288 469 318 485 301 475 l 287 468 l 285 468 b 245 467 272 462 255 456 l 210 501 b 200 521 203 508 200 514 b 206 544 200 528 203 536 b 210 567 209 552 210 559 b 199 599 210 579 206 592 b 164 612 190 608 177 612 b 99 582 143 612 120 602 b 69 517 79 562 69 539 b 82 482 69 504 73 491 b 115 471 91 474 102 471 b 137 474 122 471 130 472 b 161 480 147 477 154 480 b 180 471 167 480 173 478 l 215 436 b 213 395 225 426 219 408 b 212 392 213 393 212 393 b 183 361 206 379 196 361 l 134 361 b 102 390 112 361 112 373 b 58 423 92 408 76 423 b 0 340 26 423 0 386 b 58 258 0 294 26 258 b 102 291 76 258 92 274 b 134 318 112 308 112 318 l 183 318 b 212 288 196 318 206 301 b 213 287 212 287 213 288 l 213 285 b 215 245 219 272 225 255 l 179 210 b 160 200 171 203 166 200 b 137 206 154 200 145 203 b 114 210 130 209 122 210 b 82 199 102 210 89 206 b 69 164 73 190 69 177 b 99 99 69 143 79 120 z m 276 276 b 249 340 262 291 249 320 b 340 432 249 390 289 432 b 432 340 390 432 432 390 b 405 276 432 320 419 291 b 340 249 390 262 360 249 b 276 276 320 249 291 262 z',\n },\n wiggleArpeggiatoUp: {\n x_min: -22,\n x_max: 242,\n y_min: 0,\n y_max: 164,\n ha: 164,\n o: 'm 343 122 b 323 143 343 122 334 132 b 308 148 318 147 312 148 b 298 144 304 148 301 147 b 282 128 295 141 291 137 b 274 124 279 125 276 124 b 265 128 268 124 265 128 b 158 220 265 128 173 207 b 112 236 143 232 127 236 b 43 206 82 236 55 219 l -26 137 b -32 125 -30 132 -32 130 b -26 112 -32 118 -26 112 b -6 92 -26 112 -17 102 b 7 86 -1 88 3 86 b 17 91 12 86 14 88 b 33 107 20 94 24 98 b 42 111 36 109 39 111 b 52 107 48 111 52 107 b 158 16 52 107 144 29 b 204 0 174 4 190 0 b 274 30 235 0 262 17 l 343 99 b 348 111 347 104 348 108 b 343 122 348 118 343 122 z',\n },\n repeat1Bar: {\n x_min: 0,\n x_max: 481,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 693 -181 b 602 -91 693 -131 651 -91 b 511 -181 552 -91 511 -131 b 602 -272 511 -232 552 -272 b 693 -181 651 -272 693 -232 z',\n },\n repeat2Bars: {\n x_min: 0,\n x_max: 735,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 1058 -181 b 968 -91 1058 -131 1017 -91 b 877 -181 917 -91 877 -131 b 968 -272 877 -232 917 -272 b 1058 -181 1017 -272 1058 -232 z m 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 1058 360 l 877 360 l 366 -360 l 547 -360 z',\n },\n repeat4Bars: {\n x_min: 0,\n x_max: 1243,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 1058 360 l 877 360 l 366 -360 l 547 -360 z m 1424 360 l 1243 360 l 732 -360 l 913 -360 z m 1790 360 l 1608 360 l 1097 -360 l 1279 -360 z m 1790 -181 b 1699 -91 1790 -131 1748 -91 b 1608 -181 1649 -91 1608 -131 b 1699 -272 1608 -232 1649 -272 b 1790 -181 1748 -272 1790 -232 z',\n },\n repeatBarSlash: {\n x_min: 0,\n x_max: 481,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 693 360 l 511 360 l 0 -360 l 181 -360 z',\n },\n csymDiminished: {\n x_min: 0,\n x_max: 501,\n y_min: 0,\n y_max: 501,\n ha: 501,\n o: 'm 361 721 b 0 361 161 721 0 560 b 361 0 0 161 161 0 b 721 361 560 0 721 161 b 361 721 721 560 560 721 z m 557 164 b 361 82 505 111 435 82 b 164 164 287 82 216 111 b 82 361 111 216 82 287 b 164 557 82 436 111 505 b 361 639 216 611 287 639 b 557 557 436 639 505 611 b 639 361 611 505 639 436 b 557 164 639 287 609 216 z',\n },\n csymHalfDiminished: {\n x_min: -1,\n x_max: 502,\n y_min: -1,\n y_max: 502,\n ha: 503,\n o: 'm 723 684 l 684 723 l 596 634 b 361 721 533 688 451 721 b 0 361 161 721 0 560 b 88 125 0 271 33 189 l -1 36 l 36 -1 l 125 88 b 361 0 189 33 271 0 b 721 361 560 0 721 161 b 634 596 721 451 688 533 z m 82 361 b 164 557 82 436 111 505 b 361 639 216 611 287 639 b 537 576 426 639 488 616 l 145 184 b 82 361 105 233 82 295 z m 639 361 b 557 164 639 287 609 216 b 361 82 505 111 435 82 b 184 145 295 82 233 105 l 576 537 b 639 361 616 488 639 426 z',\n },\n csymAugmented: {\n x_min: 1,\n x_max: 321,\n y_min: 90,\n y_max: 410,\n ha: 320,\n o: 'm 462 400 l 272 400 l 272 590 l 192 590 l 192 400 l 1 400 l 1 320 l 192 320 l 192 130 l 272 130 l 272 320 l 462 320 z',\n },\n csymMajorSeventh: {\n x_min: 0,\n x_max: 500,\n y_min: 10,\n y_max: 490,\n ha: 480,\n o: 'm 360 528 l 585 96 l 135 96 z m 360 706 l 0 14 l 720 14 z',\n },\n accidentalNarrowReversedFlat: {\n x_min: 0,\n x_max: 160,\n y_min: -176,\n y_max: 452,\n ha: 628,\n o: 'm 0 84 b 101 -153 0 -26 65 -107 b 196 -249 153 -217 196 -249 b 206 -253 199 -251 202 -253 b 225 -235 216 -253 225 -245 l 230 632 b 212 651 230 642 222 651 l 199 651 b 180 632 189 651 180 642 l 184 204 b 125 217 184 204 171 217 b 0 84 53 217 0 173 z m 145 154 b 184 107 181 154 184 120 l 187 -179 b 114 -72 167 -158 132 -112 b 82 58 86 -13 82 36 b 145 154 82 79 82 154 z',\n },\n accidentalNarrowReversedFlatAndFlat: {\n x_min: 0,\n x_max: 416,\n y_min: -176,\n y_max: 452,\n ha: 628,\n o: 'm 462 217 b 330 174 374 217 338 181 l 334 632 b 315 651 334 642 325 651 l 302 651 b 284 632 292 651 284 642 l 289 -235 b 308 -253 289 -245 298 -253 b 320 -249 312 -253 317 -251 b 492 -138 320 -249 433 -194 b 599 84 534 -98 599 -26 b 462 217 599 173 534 217 z m 501 58 b 459 -72 501 36 498 -19 b 327 -179 431 -111 359 -164 l 330 85 l 330 91 b 422 154 330 125 359 154 b 501 58 503 154 501 79 z m 0 84 b 101 -153 0 -26 65 -107 b 196 -249 153 -217 196 -249 b 206 -253 199 -251 202 -253 b 225 -235 216 -253 225 -245 l 230 632 b 212 651 230 642 222 651 l 199 651 b 180 632 189 651 180 642 l 184 204 b 125 217 184 204 171 217 b 0 84 53 217 0 173 z m 145 154 b 184 107 181 154 184 120 l 187 -179 b 114 -72 167 -158 132 -112 b 82 58 86 -13 82 36 b 145 154 82 79 82 154 z',\n },\n },\n fontFamily: 'Leland',\n resolution: 1000,\n generatedOn: '2022-06-26T17:49:33.853Z',\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { LelandFont } from '../src/fonts/leland_glyphs';\nimport { LelandMetrics } from '../src/fonts/leland_metrics';\nexport const Font = {\n data: LelandFont,\n metrics: LelandMetrics,\n};\nexport default Font;\n","export const LelandMetrics = {\n name: 'Leland',\n smufl: true,\n stave: {\n padding: 12,\n endPaddingMax: 10,\n endPaddingMin: 5,\n unalignedNotePadding: 10,\n },\n accidental: {\n noteheadAccidentalPadding: 1,\n leftPadding: 2,\n accidentalSpacing: 3,\n },\n clef: {\n default: {\n point: 32,\n width: 26,\n },\n small: {\n point: 26,\n width: 20,\n },\n annotations: {\n '8va': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: -1.4,\n shiftX: 12,\n },\n },\n small: {\n point: 16,\n treble: {\n line: -0.2,\n shiftX: 8,\n },\n },\n },\n '8vb': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: 6,\n shiftX: 10,\n },\n bass: {\n line: 3.5,\n shiftX: 1,\n },\n },\n small: {\n point: 16,\n treble: {\n line: 5.3,\n shiftX: 6,\n },\n bass: {\n line: 3.1,\n shiftX: 0.5,\n },\n },\n },\n },\n // These may no longer be necessary\n lineCount: {\n '8': { point: 55, shiftY: 14 },\n '7': { point: 47, shiftY: 8 },\n '6': { point: 32, shiftY: 1 },\n '5': { point: 30, shiftY: -6 },\n '4': { point: 23, shiftY: -12 },\n },\n },\n parenthesis: {\n default: {\n point: 39,\n width: 7,\n },\n gracenote: {\n point: (39 * 3) / 5,\n width: 3,\n },\n },\n pedalMarking: {\n up: {\n point: 40,\n },\n down: {\n point: 34,\n },\n },\n // These are for numeric digits, such as in time signatures\n digits: {\n // used by timesig\n shiftLine: -1,\n point: 34,\n // used by tuplets\n tupletPoint: 22,\n shiftY: -6,\n },\n articulation: {\n articStaccatissimoAbove: {\n padding: 2,\n },\n articStaccatissimoBelow: {\n padding: 2,\n },\n },\n tremolo: {\n default: {\n point: 25,\n spacing: 5,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 11,\n offsetXStemDown: 1,\n },\n grace: {\n point: 18,\n spacing: 4,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 7,\n offsetXStemDown: 1,\n },\n },\n staveRepetition: {\n symbolText: {\n offsetX: 12,\n offsetY: 25,\n spacing: 5,\n },\n coda: {\n offsetY: 25,\n },\n segno: {\n offsetY: 10,\n },\n },\n // noteHead: {\n // },\n stem: {\n heightAdjustmentForFlag: -3,\n // These are stem (Y) offsets to the note heads. To shift the\n // noteheads (x-position) themselves, see glyphs.notehead.custom.\n noteHead: {\n noteheadTriangleUpHalf: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpBlack: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpWhole: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadXHalf: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXBlack: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXWhole: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadHalf: {\n offsetYBaseStemUp: -2.55,\n offsetYBaseStemDown: 2.65,\n },\n noteheadBlack: {\n offsetYBaseStemUp: -2,\n offsetYBaseStemDown: 2,\n },\n noteheadSquareWhite: {\n offsetYBaseStemDown: -5,\n offsetYBaseStemUp: 5,\n },\n },\n },\n // Values under here are used by the Glyph class to reposition and rescale\n // glyphs based on their category. This should be the first stop for\n // custom font glyph repositioning.\n //\n // The glyph loader first looks up a specific set of settings based on the\n // glyph code, and if not found, uses the defaults from the category. See\n // glyphs.textNote for an example of this.\n //\n // Details in Glyph.lookupFontMetrics.\n glyphs: {\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n segno: {\n shiftX: -7,\n },\n flag: {\n shiftX: -0.75,\n staveTempo: {\n shiftX: -1,\n },\n },\n clef: {\n gClef: {\n default: { scale: 1.1, shiftY: 1 },\n small: { shiftY: 1.5 },\n },\n fClef: {\n default: { shiftY: -0.5 },\n },\n },\n ornament: {\n ornamentTurn: {\n scale: 1.2,\n },\n ornamentTurnSlash: {\n scale: 1.2,\n },\n },\n stringNumber: {\n verticalPadding: 8,\n stemPadding: 2,\n leftPadding: 5,\n rightPadding: 6,\n },\n stroke: {\n arrowheadBlackDown: {\n straight: {\n shiftX: -4.5,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n arrowheadBlackUp: {\n straight: {\n shiftX: -0.85,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n },\n textNote: {\n point: 34,\n breathMarkTick: {\n point: 36,\n shiftY: 9,\n },\n breathMarkComma: {\n point: 36,\n },\n segno: {\n point: 30,\n shiftX: -7,\n shiftY: 8,\n },\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n ornamentTrill: {\n shiftX: -8,\n shiftY: 8,\n },\n ornamentTurn: {\n point: 42,\n },\n ornamentTurnSlash: {\n point: 42,\n },\n ornamentMordent: {\n shiftX: -8,\n },\n ornamentShortTrill: {\n shiftX: -8,\n },\n },\n noteHead: {\n minPadding: 2,\n standard: {\n restQuarterStemUp: {\n point: 35,\n },\n restQuarterStemDown: {\n point: 35,\n },\n },\n custom: {\n noteheadCircleXStemUp: {\n shiftX: 1.5,\n },\n noteheadCircleXStemDown: {\n shiftX: 0.25,\n },\n noteheadDiamondHalfStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondBlackStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondWholeStemUp: {\n shiftX: 1,\n },\n noteheadXHalfStemUp: {\n shiftX: -2,\n },\n noteheadXHalfStemDown: {\n shiftX: 1,\n },\n noteheadXWholeStemUp: {\n shiftX: -4,\n },\n noteheadXWholeStemDown: {\n shiftX: 1,\n },\n noteheadSquareWhiteStemDown: {\n shiftX: 0.25,\n },\n noteheadSquareWhiteStemUp: {\n shiftX: -0.75,\n },\n noteheadSquareBlackStemUp: {\n shiftX: -0.75,\n },\n noteheadTriangleUpWholeStemUp: {\n shiftX: -0.75,\n },\n },\n },\n chordSymbol: {\n global: {\n superscriptOffset: -400,\n subscriptOffset: 300,\n kerningOffset: -250,\n lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'],\n upperKerningText: ['A', 'L'],\n spacing: 100,\n superSubRatio: 0.66,\n },\n csymDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymHalfDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymAugmented: {\n scale: 1,\n leftSideBearing: 0,\n advanceWidth: 530,\n yOffset: 0,\n },\n csymParensLeftTall: {\n scale: 0.8,\n leftSideBearing: -20,\n advanceWidth: 184,\n yOffset: 250,\n },\n csymParensRightTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 189,\n yOffset: 250,\n },\n csymBracketLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 328,\n yOffset: 0,\n },\n csymBracketRightTall: {\n scale: 0.8,\n leftSideBearing: 1,\n advanceWidth: 600,\n yOffset: 0,\n },\n csymParensLeftVeryTall: {\n scale: 0.9,\n leftSideBearing: 50,\n advanceWidth: 121,\n yOffset: 350,\n },\n csymParensRightVeryTall: {\n scale: 0.9,\n leftSideBearing: 0,\n advanceWidth: 111,\n yOffset: 350,\n },\n csymDiagonalArrangementSlash: {\n scale: 0.6,\n leftSideBearing: -1,\n advanceWidth: 990,\n yOffset: 0,\n },\n csymMinor: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 482,\n yOffset: 0,\n },\n csymMajorSeventh: {\n scale: 0.9,\n leftSideBearing: 200,\n yOffset: 0,\n advanceWidth: 600,\n },\n accidentalSharp: {\n scale: 0.75,\n leftSideBearing: 20,\n advanceWidth: 250,\n yOffset: -302,\n },\n accidentalFlat: {\n scale: 0.9,\n leftSideBearing: -20,\n advanceWidth: 226,\n yOffset: -184,\n },\n },\n jazzOrnaments: {\n brassScoop: {\n scale: 1.0,\n xOffset: -12,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 20,\n },\n brassDoitMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 22,\n },\n brassFallLipShort: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassLiftMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 5,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassFallRoughMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 28,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassBend: {\n scale: 1.0,\n xOffset: 2,\n yOffset: -8,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassMuteClosed: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -8,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassMuteOpen: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -7,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassFlip: {\n scale: 1.0,\n xOffset: 10,\n yOffset: 0,\n stemUpYOffset: 7,\n reportedWidth: 10,\n },\n brassJazzTurn: {\n scale: 1.0,\n xOffset: 0,\n yOffset: 0,\n stemUpYOffset: 8,\n reportedWidth: 31,\n },\n brassSmear: {\n scale: 1.0,\n xOffset: 10,\n yOffset: 0,\n stemUpYOffset: 8,\n reportedWidth: 5,\n },\n },\n tuplet: {\n noteHeadOffset: 20,\n stemOffset: 10,\n bottomLine: 4,\n topModifierOffset: 15,\n },\n },\n};\n"],"names":["root","factory","exports","module","define","amd","window","globalThis","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","data","glyphs","bracketTop","x_min","x_max","y_min","y_max","ha","bracketBottom","segno","coda","gClef","cClef","fClef","unpitchedPercussionClef1","timeSig0","timeSig1","timeSig2","timeSig3","timeSig4","timeSig5","timeSig6","timeSig7","timeSig8","timeSig9","timeSigCommon","timeSigCutCommon","timeSigPlus","noteheadDoubleWhole","noteheadWhole","noteheadHalf","noteheadBlack","noteheadXBlack","noteheadCircleX","noteheadDoubleWholeSquare","noteheadSquareWhite","noteheadSquareBlack","noteheadTriangleUpBlack","noteheadSlashedDoubleWhole1","noteheadSlashedWhole1","noteheadSlashedHalf1","noteheadSlashedBlack1","noteheadSlashedDoubleWhole2","noteheadSlashedWhole2","noteheadSlashedHalf2","noteheadSlashedBlack2","noteheadDiamondDoubleWhole","noteheadDiamondWhole","noteheadDiamondHalf","noteheadDiamondBlack","noteheadParenthesisRight","noteheadParenthesisLeft","noteheadMoonBlack","noteheadTriangleLeftBlack","noteheadTriangleRightBlack","noteheadTriangleRoundDownBlack","augmentationDot","tremolo1","flag8thUp","flag8thDown","flag16thUp","flag16thDown","flag32ndUp","flag32ndDown","flag64thUp","flag64thDown","flag128thUp","flag128thDown","accidentalFlat","accidentalNatural","accidentalSharp","accidentalDoubleSharp","accidentalDoubleFlat","accidentalParensLeft","accidentalParensRight","accidentalQuarterToneFlatStein","accidentalThreeQuarterTonesFlatZimmermann","accidentalQuarterToneSharpStein","accidentalThreeQuarterTonesSharpStein","accidentalBuyukMucennebFlat","accidentalBakiyeFlat","accidentalKucukMucennebSharp","articAccentAbove","articAccentBelow","articTenutoAbove","articTenutoBelow","articStaccatoAbove","articStaccatoBelow","articStaccatissimoAbove","articStaccatissimoBelow","articMarcatoAbove","articMarcatoBelow","fermataAbove","fermataBelow","fermataLongAbove","fermataLongBelow","fermataVeryLongAbove","fermataVeryLongBelow","fermataShortAbove","fermataShortBelow","breathMarkComma","caesura","caesuraCurved","restMaxima","restDoubleWhole","restWhole","restWholeLegerLine","restHalf","restHalfLegerLine","restQuarter","rest8th","rest16th","rest32nd","rest64th","rest128th","dynamicPiano","dynamicMezzo","dynamicForte","dynamicRinforzando","dynamicSforzando","dynamicZ","ornamentTrill","ornamentTurn","ornamentTurnSlash","ornamentMordent","ornamentShortTrill","ornamentTremblement","ornamentPrecompAppoggTrill","ornamentPrecompSlideTrillDAnglebert","ornamentPrecompSlideTrillBach","ornamentPrecompTrillSuffixDandrieu","ornamentPrecompDoubleCadenceUpperPrefix","ornamentPrecompTrillLowerSuffix","brassMuteClosed","brassMuteOpen","stringsDownBow","stringsUpBow","stringsHarmonic","pluckedSnapPizzicatoAbove","pluckedSnapPizzicatoBelow","keyboardPedalPed","keyboardPedalUp","wiggleArpeggiatoUp","repeat1Bar","repeat2Bars","repeat4Bars","repeatBarSlash","csymDiminished","csymHalfDiminished","csymAugmented","csymMajorSeventh","accidentalNarrowReversedFlat","accidentalNarrowReversedFlatAndFlat","fontFamily","resolution","generatedOn","metrics","name","smufl","stave","padding","endPaddingMax","endPaddingMin","unalignedNotePadding","accidental","noteheadAccidentalPadding","leftPadding","accidentalSpacing","clef","default","point","width","small","annotations","smuflCode","treble","line","shiftX","bass","lineCount","shiftY","parenthesis","gracenote","pedalMarking","up","down","digits","shiftLine","tupletPoint","articulation","tremolo","spacing","offsetYStemUp","offsetYStemDown","offsetXStemUp","offsetXStemDown","grace","staveRepetition","symbolText","offsetX","offsetY","stem","heightAdjustmentForFlag","noteHead","noteheadTriangleUpHalf","offsetYBaseStemUp","offsetYBaseStemDown","noteheadTriangleUpWhole","noteheadXHalf","noteheadXWhole","flag","staveTempo","scale","ornament","stringNumber","verticalPadding","stemPadding","rightPadding","stroke","arrowheadBlackDown","straight","wiggly","arrowheadBlackUp","textNote","breathMarkTick","minPadding","standard","restQuarterStemUp","restQuarterStemDown","custom","noteheadCircleXStemUp","noteheadCircleXStemDown","noteheadDiamondHalfStemUp","noteheadDiamondBlackStemUp","noteheadDiamondWholeStemUp","noteheadXHalfStemUp","noteheadXHalfStemDown","noteheadXWholeStemUp","noteheadXWholeStemDown","noteheadSquareWhiteStemDown","noteheadSquareWhiteStemUp","noteheadSquareBlackStemUp","noteheadTriangleUpWholeStemUp","chordSymbol","global","superscriptOffset","subscriptOffset","kerningOffset","lowerKerningText","upperKerningText","superSubRatio","leftSideBearing","advanceWidth","yOffset","csymParensLeftTall","csymParensRightTall","csymBracketLeftTall","csymBracketRightTall","csymParensLeftVeryTall","csymParensRightVeryTall","csymDiagonalArrangementSlash","csymMinor","jazzOrnaments","brassScoop","xOffset","stemUpYOffset","reportedWidth","brassDoitMedium","brassFallLipShort","brassLiftMedium","brassFallRoughMedium","brassBend","brassFlip","brassJazzTurn","brassSmear","tuplet","noteHeadOffset","stemOffset","bottomLine","topModifierOffset"],"sourceRoot":""} \ No newline at end of file diff --git a/build/cjs/vexflow-font-petaluma.js b/build/cjs/vexflow-font-petaluma.js new file mode 100644 index 0000000000..c3fc86b3db --- /dev/null +++ b/build/cjs/vexflow-font-petaluma.js @@ -0,0 +1,2 @@ +!function(b,m){"object"==typeof exports&&"object"==typeof module?module.exports=m():"function"==typeof define&&define.amd?define([],m):"object"==typeof exports?exports.VexFlowFont=m():(b.VexFlowFont=b.VexFlowFont||{},b.VexFlowFont.Petaluma=m())}("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:this,(function(){return(()=>{"use strict";var b={d:(m,a)=>{for(var l in a)b.o(a,l)&&!b.o(m,l)&&Object.defineProperty(m,l,{enumerable:!0,get:a[l]})},o:(b,m)=>Object.prototype.hasOwnProperty.call(b,m)},m={};b.d(m,{default:()=>a});const a={data:{glyphs:{bracketTop:{x_min:0,x_max:508,y_min:0,y_max:370,ha:370,o:"m 22 0 b 122 0 55 1 89 0 l 157 0 b 713 376 425 0 622 137 b 732 467 724 406 732 436 b 726 514 732 482 730 498 b 711 533 723 528 719 533 b 693 526 707 533 700 530 b 674 498 683 520 678 508 b 635 406 662 467 652 435 b 310 164 560 281 458 193 b 154 151 258 154 206 151 b 39 154 117 151 78 154 b 1 120 17 154 4 145 b 0 84 0 108 0 96 b 0 20 0 63 1 40 b 22 0 0 4 7 0 z"},bracketBottom:{x_min:0,x_max:496,y_min:-393,y_max:0,ha:393,o:"m 696 -566 b 711 -539 713 -566 708 -549 b 714 -521 713 -533 714 -527 b 713 -508 714 -517 713 -513 b 661 -327 706 -445 688 -384 b 392 -42 603 -203 513 -109 b 206 0 331 -7 266 0 b 160 -1 190 0 174 -1 b 26 -1 107 -1 66 -3 b 0 -19 12 -1 0 -4 l 0 -23 b 3 -50 1 -32 3 -42 b 1 -86 3 -62 1 -73 b 4 -118 1 -96 1 -108 b 45 -151 10 -145 23 -154 b 180 -143 89 -144 135 -145 b 621 -419 392 -135 523 -236 b 662 -539 641 -456 655 -497 b 696 -566 667 -557 680 -566 z"},barlineTick:{x_min:0,x_max:56.036101509664164,y_min:876.905249806889,y_max:1121.5430338167066,ha:244.63778400981766,o:"m 42 1263 b 66 1287 62 1261 66 1272 b 81 1583 65 1387 72 1485 b 35 1614 82 1610 53 1610 b 14 1591 17 1619 16 1604 b 0 1408 7 1525 0 1459 l 0 1292 b 42 1263 1 1263 23 1266 z"},breathMarkTick:{x_min:0,x_max:568,y_min:0,y_max:621,ha:621,o:"m 258 0 b 278 39 276 0 274 24 b 279 56 279 45 279 50 l 279 73 b 278 117 279 88 278 102 b 281 148 278 127 279 138 b 536 600 312 330 387 487 b 744 719 600 651 670 690 b 815 779 775 730 808 740 b 818 824 818 793 818 808 b 815 868 818 838 818 852 b 796 894 814 881 808 894 b 779 888 791 894 786 893 b 719 864 760 878 739 871 b 372 602 580 806 459 724 b 229 252 298 498 251 383 b 220 268 225 262 222 264 b 209 302 217 279 213 291 b 75 527 181 387 143 467 b 16 563 58 543 39 573 b 0 539 3 557 0 549 b 12 492 0 524 9 507 b 56 400 19 459 22 425 b 163 269 104 367 138 323 b 238 36 197 194 216 115 b 258 0 242 22 243 0 z"},segno:{x_min:0,x_max:798,y_min:-65,y_max:806,ha:871,o:"m 16 -94 b 66 -69 39 -92 53 -85 b 177 59 102 -26 138 17 b 543 456 298 192 420 324 b 726 300 615 420 680 373 b 753 217 744 271 753 243 b 655 112 753 170 719 131 b 599 104 636 107 618 104 b 461 173 544 104 495 128 b 432 190 454 183 444 190 b 409 179 425 190 418 187 b 359 118 390 160 373 141 b 341 72 347 101 341 86 b 373 24 341 56 351 40 b 409 6 384 17 396 10 b 550 -13 454 -12 501 -14 b 599 -6 566 -12 583 -10 b 864 213 720 27 806 104 b 886 300 878 242 886 271 b 857 395 886 331 877 363 b 799 467 840 420 821 445 b 648 572 755 513 704 546 b 1110 1083 802 743 955 914 b 1140 1129 1123 1097 1136 1110 b 1149 1148 1142 1135 1149 1142 b 1145 1153 1149 1149 1148 1152 b 1123 1161 1139 1158 1130 1161 b 1109 1156 1119 1161 1113 1159 b 1089 1138 1102 1151 1094 1145 b 946 988 1040 1089 989 1041 b 595 602 834 855 711 732 l 590 598 l 549 615 b 432 793 462 647 432 723 b 534 888 432 851 474 888 b 671 834 588 888 631 864 b 710 818 684 824 696 818 b 724 821 714 818 719 819 b 809 883 757 834 788 852 b 816 901 814 890 816 896 b 802 923 816 910 812 916 b 706 984 770 945 742 971 b 593 1011 668 998 631 1011 b 516 991 567 1011 541 1005 b 333 799 433 949 380 876 b 302 693 312 765 302 729 b 330 589 302 658 311 624 b 469 488 360 533 415 511 b 485 482 475 487 480 485 b 266 249 412 405 338 327 b 121 88 217 196 170 141 b 9 -65 78 40 37 -7 b 0 -85 4 -72 0 -79 b 16 -94 0 -91 4 -94 z m 861 536 b 927 575 890 539 909 557 b 965 628 952 598 965 613 b 926 680 965 644 952 658 b 865 713 900 701 883 713 b 805 667 845 713 828 698 b 768 611 791 649 770 631 b 812 564 766 589 798 582 b 861 536 824 550 840 537 z m 251 350 b 363 436 285 348 353 403 b 354 456 366 448 360 452 b 271 518 327 477 298 497 b 243 528 261 526 252 528 b 210 513 232 528 222 523 b 157 454 190 494 176 472 b 141 428 147 444 141 436 b 158 406 141 420 147 413 b 216 361 180 393 197 376 b 245 350 225 356 235 350 z"},coda:{x_min:0,x_max:1380,y_min:-196,y_max:1037,ha:1233,o:"m 1028 -282 b 1057 -245 1045 -282 1053 -261 b 1060 -203 1060 -232 1060 -217 b 1063 9 1060 -132 1061 -62 b 1390 194 1192 22 1303 81 b 1531 543 1467 298 1512 415 b 1532 556 1531 547 1532 552 b 1904 559 1656 557 1780 559 b 1950 582 1920 559 1941 569 b 1987 674 1970 609 1987 638 b 1984 698 1987 681 1986 690 b 1950 700 1973 698 1961 700 l 1941 700 l 1545 696 b 1535 776 1545 723 1541 749 b 1103 1113 1477 996 1326 1107 b 1080 1115 1096 1115 1087 1115 b 1081 1322 1080 1184 1080 1253 b 1079 1467 1083 1371 1081 1418 b 1061 1493 1079 1476 1080 1493 l 1060 1493 b 1028 1467 1044 1490 1031 1485 b 1020 1403 1025 1446 1020 1424 b 1017 1110 1020 1305 1018 1208 l 962 1106 b 569 914 808 1087 671 1035 b 451 683 510 844 472 766 l 161 678 b 118 680 148 678 132 680 b 79 670 101 680 86 678 b 0 544 48 636 29 592 l 37 544 l 429 549 b 428 518 428 539 428 528 b 488 285 428 435 458 360 b 681 81 526 192 593 124 b 946 9 763 40 854 19 b 1008 6 966 7 988 6 b 1005 -137 1008 -42 1005 -89 b 1012 -243 1005 -173 1005 -209 b 1028 -282 1015 -258 1011 -282 z m 1074 690 b 1079 935 1077 772 1077 852 b 1326 855 1166 932 1250 909 b 1446 694 1385 814 1426 759 b 1269 693 1387 694 1328 693 b 1074 690 1204 693 1139 691 z m 577 684 b 766 874 618 763 678 828 b 989 932 837 912 913 923 b 1015 933 998 932 1007 933 b 1014 822 1015 896 1014 860 b 1011 688 1012 791 1012 743 z m 1067 184 b 1071 553 1070 307 1068 429 b 1439 556 1194 553 1316 554 b 1437 554 1439 554 1437 554 b 1341 337 1413 478 1387 402 b 1119 192 1286 261 1211 212 b 1067 184 1102 189 1084 186 z m 1008 180 b 660 264 886 181 770 212 b 524 471 570 305 524 374 b 528 524 524 488 526 505 l 533 549 b 792 552 619 550 706 550 b 1009 553 865 553 937 552 b 1008 180 1009 428 1008 288 z"},gClef:{x_min:0,x_max:664,y_min:-559,y_max:1009,ha:1568,o:"m 343 -805 b 366 -801 350 -805 357 -804 b 409 -773 383 -795 397 -786 b 582 -328 528 -648 577 -497 b 583 -294 582 -315 583 -294 b 612 -279 583 -294 603 -282 b 747 -197 660 -256 706 -230 b 949 143 857 -109 920 10 b 956 206 955 164 956 186 b 791 384 956 297 906 363 b 704 393 762 390 733 393 b 498 336 632 393 563 374 b 481 325 490 331 481 325 l 444 465 b 442 485 442 472 442 485 b 609 880 442 485 589 746 b 619 996 616 919 619 958 b 613 1084 619 1027 618 1056 b 534 1387 599 1188 560 1286 b 482 1453 527 1417 517 1453 b 422 1407 456 1453 438 1428 b 305 1063 348 1305 312 1188 b 304 1002 304 1043 304 1022 b 338 654 304 886 323 769 b 343 629 338 645 341 636 b 144 356 278 537 206 451 b 23 144 101 288 53 220 b 0 20 7 107 0 63 b 82 -210 0 -69 30 -160 b 207 -288 112 -239 160 -271 b 410 -328 274 -312 340 -328 b 474 -324 431 -328 452 -327 l 491 -321 b 491 -341 491 -321 492 -334 b 402 -585 475 -428 454 -513 b 294 -668 374 -622 348 -664 b 271 -693 278 -670 271 -680 b 274 -708 271 -698 272 -703 b 302 -775 282 -730 292 -753 b 343 -805 311 -795 325 -805 z m 400 717 b 382 922 389 786 382 854 b 481 1286 382 1047 408 1169 b 507 1125 498 1233 507 1179 b 500 1040 507 1097 504 1068 b 400 717 481 927 455 818 z m 252 -135 b 196 -121 232 -134 215 -127 b 117 -69 158 -108 127 -94 b 111 -32 112 -58 111 -45 b 117 19 111 -16 114 1 b 130 56 118 27 127 52 b 324 337 186 156 253 246 l 384 416 l 395 384 b 416 291 406 348 416 291 b 350 213 416 291 376 239 b 243 -42 278 143 243 55 b 251 -117 243 -66 246 -91 b 252 -135 252 -122 252 -127 z m 563 -91 b 510 168 552 3 530 78 b 513 192 508 179 508 186 b 624 202 550 199 586 202 b 730 192 660 202 694 199 b 850 141 773 183 816 176 b 858 134 852 138 855 135 b 595 -121 801 19 716 -68 l 569 -131 z m 410 -160 b 311 -147 360 -160 311 -147 b 307 -98 311 -147 307 -127 b 314 -33 307 -79 308 -56 b 429 131 328 36 377 85 b 441 138 433 135 438 138 b 449 122 446 138 448 132 b 490 -131 462 37 484 -46 b 490 -153 491 -140 490 -153 b 410 -160 490 -153 452 -163 z"},cClef:{x_min:0,x_max:731,y_min:-543,y_max:543,ha:1086,o:"m 131 -782 b 141 -755 138 -782 140 -773 b 147 -490 143 -667 145 -577 b 160 207 150 -258 153 -24 b 168 618 164 344 158 481 b 81 768 173 690 132 732 b 45 782 66 778 55 782 b 3 740 26 782 13 768 b 0 724 1 736 0 730 l 1 710 b 4 596 4 672 4 634 l 4 382 b 9 102 4 288 4 196 b 17 -301 13 -32 10 -166 l 17 -672 b 50 -736 17 -701 27 -720 b 109 -772 69 -749 91 -759 b 131 -782 120 -778 127 -782 z m 615 -770 b 881 -684 710 -770 801 -739 b 1020 -395 986 -612 1020 -510 b 1017 -334 1020 -374 1018 -354 b 769 -62 1007 -209 896 -75 b 746 -60 762 -60 755 -60 b 639 -73 710 -60 675 -69 b 524 -109 598 -79 560 -92 b 528 -36 526 -85 528 -60 b 527 -4 528 -26 528 -14 b 528 39 527 10 528 24 b 526 99 528 59 527 79 b 592 94 549 95 570 94 b 648 99 611 94 629 95 b 912 157 744 94 844 117 b 1053 377 1009 215 1053 284 b 1050 425 1053 393 1053 409 b 914 665 1037 521 986 602 b 717 753 855 717 791 753 b 626 734 688 753 658 747 l 462 665 b 347 500 374 628 347 580 b 350 449 347 484 348 468 b 392 419 353 428 367 416 b 492 438 425 425 459 428 b 541 498 524 448 541 468 b 540 514 541 503 541 508 b 537 546 537 524 537 536 b 573 639 537 580 550 611 b 606 657 582 649 593 657 l 609 657 b 716 622 647 652 684 647 b 834 372 801 556 834 469 b 831 323 834 356 832 338 b 743 187 825 266 795 217 b 710 176 732 180 720 176 b 694 179 704 176 700 177 b 527 223 638 193 582 206 b 495 229 516 228 505 229 b 454 220 481 229 468 225 b 395 189 432 213 415 200 b 363 180 384 186 374 181 b 348 168 356 179 348 176 b 340 161 343 167 340 164 b 347 150 340 157 343 154 b 356 147 348 148 353 147 b 364 92 361 130 363 111 b 369 -37 367 49 369 6 b 363 -154 369 -76 367 -115 b 357 -236 360 -183 357 -210 b 376 -264 357 -253 361 -259 b 456 -289 402 -284 429 -289 b 521 -282 478 -289 500 -285 b 549 -255 537 -279 546 -271 b 598 -177 556 -225 577 -202 b 622 -164 605 -168 613 -164 b 636 -167 626 -164 631 -166 b 749 -225 678 -177 714 -199 b 848 -405 814 -276 848 -337 b 824 -507 848 -436 840 -471 b 657 -657 792 -582 730 -625 b 608 -668 638 -664 622 -668 b 534 -602 572 -668 547 -645 b 513 -575 530 -589 523 -575 b 507 -576 510 -575 508 -575 b 478 -582 497 -580 488 -582 b 405 -570 454 -582 428 -570 b 389 -572 399 -570 395 -570 l 363 -572 b 321 -575 348 -572 333 -569 l 321 631 b 323 662 323 641 323 652 b 315 716 323 681 321 698 b 304 736 314 723 317 736 l 302 736 b 281 716 294 734 285 729 b 275 665 276 700 275 683 l 275 382 b 276 99 275 288 275 193 b 279 -170 278 10 276 -81 b 284 -399 282 -246 284 -323 b 282 -629 284 -475 282 -553 b 289 -721 282 -660 289 -690 b 300 -736 289 -727 291 -736 b 312 -724 307 -736 310 -730 b 321 -667 323 -706 321 -687 l 321 -632 l 328 -644 l 340 -657 b 510 -757 386 -707 445 -740 b 615 -770 546 -766 580 -770 z"},fClef:{x_min:0,x_max:776,y_min:-496,y_max:216,ha:712,o:"m 402 -706 b 804 -405 592 -678 716 -566 b 876 -53 861 -298 874 -183 b 868 33 876 -32 873 1 b 560 311 845 217 723 311 b 524 310 549 311 536 311 b 131 134 373 297 239 242 b 17 -29 84 86 37 39 b 9 -89 12 -50 9 -71 b 112 -238 9 -154 43 -206 b 124 -243 117 -239 120 -242 b 186 -261 145 -255 166 -261 b 268 -228 215 -261 242 -249 b 351 -59 325 -181 351 -124 b 343 10 351 -36 348 -13 b 340 36 341 19 340 27 b 409 105 340 75 363 102 b 441 107 420 107 431 107 b 624 36 510 107 573 86 b 744 -200 688 -27 724 -109 b 747 -230 747 -210 747 -222 b 717 -323 747 -264 736 -292 b 608 -445 688 -370 654 -410 b 307 -541 518 -513 415 -541 l 213 -541 b 39 -521 154 -541 96 -539 b 0 -552 17 -514 0 -531 b 1 -564 0 -556 0 -560 b 17 -611 6 -580 10 -596 b 101 -694 35 -648 50 -684 b 288 -714 164 -707 225 -714 b 402 -706 325 -714 363 -711 z m 1018 92 b 1080 118 1041 91 1068 96 b 1117 219 1099 150 1117 180 b 1113 252 1117 229 1116 240 b 1045 288 1102 297 1068 276 b 1017 262 1028 297 1024 274 b 984 124 989 220 996 170 b 1008 91 979 108 986 91 z m 972 -281 b 1070 -148 1024 -279 1070 -210 b 1025 -105 1070 -105 1045 -112 b 989 -127 1004 -96 998 -114 b 949 -249 963 -164 963 -209 b 969 -281 943 -265 949 -281 z"},unpitchedPercussionClef1:{x_min:0,x_max:379.13761966945304,y_min:-250,y_max:250,ha:500,o:"m 481 -360 b 507 -357 491 -360 500 -360 b 546 -295 541 -346 547 -325 b 536 79 543 -170 540 -46 b 523 311 533 157 534 235 b 475 359 518 340 508 359 b 425 360 459 359 442 360 b 400 359 416 360 409 360 b 337 294 348 353 340 347 l 337 -73 b 336 -264 337 -137 337 -200 b 343 -294 336 -274 338 -284 b 481 -360 359 -330 431 -360 z m 144 -341 b 207 -320 167 -341 189 -331 b 217 -301 215 -315 217 -308 b 210 -262 217 -289 210 -275 b 228 187 212 -112 209 37 b 228 287 228 220 229 253 b 174 353 228 336 222 343 b 120 359 157 357 138 359 b 48 357 96 359 72 356 b 17 323 29 357 19 344 b 7 120 16 255 9 187 b 6 -109 6 43 6 -33 l 6 -204 b 0 -251 6 -220 0 -235 b 3 -269 0 -256 0 -262 b 127 -340 24 -330 79 -328 b 144 -341 132 -341 138 -341 z"},"6stringTabClef":{x_min:0,x_max:438,y_min:-768,y_max:767,ha:1535,o:"m 369 438 b 374 439 370 438 372 438 b 384 462 383 444 384 452 l 384 474 b 390 697 386 547 390 622 b 373 1002 390 799 390 901 l 533 1002 b 560 1001 541 1004 552 1001 b 573 1007 567 1001 572 1002 b 546 1050 579 1025 559 1038 b 536 1056 543 1053 539 1053 b 324 1104 472 1102 397 1104 b 72 1090 238 1104 154 1099 b 55 1093 66 1090 60 1092 b 37 1073 46 1093 37 1089 b 60 1045 37 1061 48 1051 b 203 1001 105 1022 151 1001 b 233 1004 213 1001 223 1002 b 246 1005 238 1004 243 1005 b 272 975 264 1005 272 996 l 272 965 b 258 596 264 842 265 719 b 315 474 253 540 272 504 l 343 455 b 369 438 351 448 357 438 z m 114 -320 b 127 -304 120 -320 124 -315 b 171 -174 141 -261 158 -219 b 222 -135 179 -147 196 -137 b 426 -122 289 -131 359 -128 b 498 -164 462 -120 482 -127 b 628 -301 521 -226 575 -264 b 631 -288 631 -295 631 -291 b 628 -269 631 -281 629 -276 b 569 -134 616 -220 589 -179 b 408 225 514 -14 462 107 b 314 357 384 274 351 318 b 278 380 298 372 288 379 b 251 351 268 380 261 372 b 4 -209 156 171 75 -17 b 0 -228 1 -215 0 -222 b 19 -258 0 -240 7 -249 b 102 -314 45 -279 75 -294 b 114 -320 107 -318 111 -320 z m 425 6 b 360 20 403 17 382 20 b 274 14 331 20 302 14 l 246 14 l 340 206 b 425 6 369 137 395 75 z m 245 -1106 b 281 -1104 256 -1106 269 -1106 b 511 -888 400 -1094 511 -1035 b 454 -688 511 -814 504 -744 b 448 -678 449 -685 448 -681 b 454 -667 448 -675 449 -671 b 504 -497 503 -619 507 -559 b 324 -288 500 -383 436 -308 b 295 -287 314 -287 304 -287 l 282 -287 b 115 -330 223 -287 168 -307 b 94 -366 102 -336 94 -348 l 94 -370 b 96 -435 96 -392 96 -413 b 73 -858 89 -576 71 -717 b 78 -919 73 -878 78 -899 b 72 -950 78 -930 76 -940 b 63 -992 66 -965 63 -978 b 66 -1015 63 -999 65 -1008 b 173 -1104 84 -1106 84 -1106 b 245 -1106 197 -1104 220 -1104 z m 161 -622 b 147 -618 156 -622 151 -621 b 140 -600 141 -612 140 -606 b 144 -564 140 -589 144 -575 b 143 -554 144 -560 144 -557 l 143 -546 b 220 -451 144 -467 143 -465 b 278 -445 239 -446 259 -444 b 418 -497 328 -445 376 -461 b 429 -516 426 -504 429 -510 b 415 -533 429 -521 423 -527 b 219 -608 357 -579 287 -590 b 215 -609 217 -608 216 -609 b 161 -622 197 -609 177 -622 z m 154 -953 b 130 -933 135 -953 130 -948 l 130 -865 l 128 -865 b 135 -788 130 -838 124 -808 b 203 -769 145 -769 180 -776 b 259 -762 223 -765 242 -762 b 441 -852 330 -762 386 -805 b 449 -867 446 -858 449 -863 b 436 -884 449 -874 444 -878 b 318 -942 402 -914 363 -935 b 154 -953 264 -950 209 -953 z"},timeSig0:{x_min:20,x_max:513,y_min:-358.159536277652,y_max:359,ha:717.159536277652,o:"m 341 -516 b 420 -510 367 -516 395 -514 b 675 -338 533 -494 622 -448 b 737 -92 716 -256 734 -171 b 739 -35 739 -73 739 -53 b 680 305 739 86 720 207 b 400 517 622 449 537 517 b 337 514 380 517 359 517 b 289 507 321 511 305 513 b 91 317 192 477 127 412 b 29 9 50 212 29 108 b 217 -458 29 -157 88 -312 b 341 -516 251 -494 291 -518 z m 412 -452 b 359 -425 393 -452 376 -444 b 187 14 242 -301 179 -158 b 268 334 193 127 212 235 b 387 448 295 383 330 428 b 406 452 395 451 400 452 b 428 444 413 452 420 449 b 517 324 471 413 497 372 b 586 -29 560 222 586 86 b 556 -271 586 -112 585 -193 b 468 -422 536 -327 508 -377 b 412 -452 449 -442 431 -452 z"},timeSig1:{x_min:20,x_max:283,y_min:-364,y_max:366,ha:730,o:"m 264 -524 b 357 -510 297 -524 325 -516 b 374 -490 369 -508 374 -501 b 380 -438 376 -472 380 -455 l 406 246 b 408 301 408 265 408 282 b 400 445 408 348 405 396 b 288 527 395 491 338 527 b 253 520 276 527 264 526 b 240 508 249 517 245 513 b 49 409 192 445 127 413 b 29 396 33 408 29 403 b 32 380 29 392 30 386 b 59 363 36 366 49 364 b 164 348 95 356 130 348 b 222 357 183 348 203 351 b 238 361 228 360 233 360 b 252 334 248 361 252 353 b 243 59 252 242 249 150 b 219 -490 229 -124 233 -307 b 264 -524 217 -516 232 -524 z"},timeSig2:{x_min:20,x_max:660.4636303241031,y_min:-378.7201231608281,y_max:382,ha:760.720123160828,o:"m 99 -543 b 130 -533 111 -550 121 -540 b 255 -448 168 -501 213 -475 b 338 -425 282 -431 310 -425 b 392 -431 356 -425 374 -426 b 485 -462 423 -438 454 -451 b 648 -497 540 -482 595 -497 b 834 -441 711 -497 773 -480 b 950 -242 906 -395 958 -334 b 942 -210 950 -230 950 -215 b 912 -220 932 -204 920 -213 b 861 -264 894 -235 877 -248 b 775 -317 835 -289 808 -305 b 675 -334 742 -328 708 -334 b 510 -295 619 -334 563 -318 b 372 -264 465 -278 420 -264 b 305 -272 350 -264 328 -266 b 331 -242 318 -256 324 -249 b 490 -73 386 -187 438 -131 b 675 340 595 43 664 180 b 677 369 677 350 677 360 b 556 536 677 461 638 508 b 468 550 526 546 497 550 b 297 508 409 550 353 533 b 111 354 220 475 168 412 b 29 197 65 308 29 261 b 32 164 29 187 29 176 b 29 140 33 157 29 147 b 43 125 29 132 32 125 b 73 147 55 125 65 138 b 86 163 79 153 82 158 b 238 320 134 219 183 272 b 425 389 292 367 360 389 b 575 341 480 389 531 373 b 606 298 590 330 606 317 b 600 278 606 292 603 285 b 501 107 576 217 544 158 b 304 -104 439 33 372 -35 b 111 -356 230 -180 167 -265 b 84 -446 92 -386 84 -415 b 86 -481 84 -458 85 -469 b 88 -514 88 -491 88 -503 b 99 -543 89 -526 91 -537 z"},timeSig3:{x_min:19.824321427094187,x_max:540,y_min:-392,y_max:392,ha:784,o:"m 216 -540 b 354 -564 264 -556 310 -564 b 605 -465 445 -564 530 -530 b 729 -161 697 -383 729 -275 b 724 -82 729 -135 727 -108 b 589 95 716 -1 670 62 b 523 114 567 102 546 108 b 750 418 606 213 677 315 b 778 503 769 444 778 472 b 773 540 778 514 776 527 b 750 564 769 557 762 564 b 736 562 746 564 742 563 b 641 552 704 553 672 552 b 402 554 562 552 481 554 l 346 554 b 84 546 258 554 170 554 b 36 501 55 543 40 531 b 29 412 30 472 32 442 b 52 384 27 393 32 384 l 56 384 b 210 392 107 389 158 392 l 602 392 b 354 108 523 285 445 192 b 246 -65 300 58 246 12 b 252 -108 246 -78 248 -92 l 252 -111 b 264 -141 251 -122 251 -135 b 291 -132 274 -145 284 -140 b 425 -72 328 -95 377 -84 b 475 -65 442 -68 459 -65 b 592 -108 517 -65 557 -79 b 645 -179 615 -125 645 -147 b 642 -194 645 -184 644 -189 b 485 -376 616 -278 569 -344 b 361 -399 444 -392 402 -399 b 151 -340 289 -399 219 -376 b 88 -275 122 -323 98 -310 b 71 -249 86 -268 85 -249 b 63 -251 68 -249 66 -249 b 36 -288 48 -255 36 -266 b 55 -423 33 -336 45 -377 b 101 -482 60 -448 78 -468 b 216 -540 138 -504 174 -526 z"},timeSig4:{x_min:20,x_max:633.0785282750762,y_min:-489.59088556716864,y_max:491.18559127100053,ha:980.7764768381692,o:"m 608 -704 b 641 -684 622 -708 634 -696 b 667 -602 660 -660 662 -631 b 685 -190 683 -465 680 -327 l 685 -176 b 831 -127 736 -166 783 -148 b 912 0 901 -94 913 -76 b 886 53 912 36 904 52 b 848 40 877 53 864 49 l 838 36 b 687 -13 789 14 739 -3 b 681 177 687 50 684 114 b 672 338 678 230 677 285 b 654 373 671 350 672 373 b 622 340 636 373 624 361 b 615 262 621 314 613 288 b 619 -22 616 167 619 72 b 569 -22 602 -23 585 -23 b 305 -3 481 -16 395 -1 b 210 -9 274 -3 242 -4 b 301 163 242 52 268 108 b 513 552 377 288 459 412 b 536 652 526 585 536 618 b 533 683 536 662 534 672 b 520 707 531 691 531 707 b 487 693 508 708 494 704 b 474 668 482 684 477 677 b 384 490 454 603 418 547 b 253 281 343 419 295 351 b 73 -13 194 181 145 78 b 29 -108 50 -42 29 -72 b 37 -147 29 -121 32 -134 b 50 -186 43 -160 50 -173 b 68 -216 52 -207 56 -215 b 92 -207 73 -216 82 -213 b 288 -166 156 -180 220 -166 b 556 -186 377 -166 467 -180 b 586 -189 566 -187 576 -187 b 616 -186 596 -189 606 -189 b 606 -432 613 -268 612 -350 b 596 -625 603 -495 596 -559 b 598 -670 596 -641 596 -655 b 608 -704 598 -683 596 -700 z"},timeSig5:{x_min:19.663871085403297,x_max:583,y_min:-389,y_max:389,ha:778,o:"m 132 -536 b 249 -560 168 -553 209 -559 b 507 -462 351 -560 454 -514 b 677 -183 588 -384 642 -289 b 694 -85 688 -150 694 -117 b 540 138 694 12 642 94 b 422 173 501 154 462 167 b 400 187 408 174 400 177 b 405 202 400 190 402 196 b 428 284 416 228 426 255 b 469 312 431 307 442 312 b 757 372 569 312 662 343 b 840 490 821 392 840 432 b 812 560 840 540 834 560 b 763 546 801 560 785 556 b 757 543 762 546 759 544 b 465 484 665 505 570 484 b 396 484 452 484 425 487 b 353 454 377 482 366 474 b 281 300 323 405 304 351 b 245 164 262 255 245 212 b 246 144 245 158 246 151 b 233 63 249 115 243 89 b 225 35 228 50 225 40 b 264 14 225 22 236 19 b 445 -26 325 7 387 0 b 569 -151 501 -52 547 -89 b 575 -180 573 -161 575 -170 b 527 -275 575 -217 547 -245 b 347 -367 484 -334 419 -367 b 261 -351 318 -367 289 -363 b 95 -300 206 -333 154 -307 b 55 -321 73 -297 65 -302 b 29 -468 29 -367 40 -419 b 56 -505 26 -482 36 -500 b 132 -536 82 -514 108 -524 z"},timeSig6:{x_min:20,x_max:565,y_min:-363,y_max:363,ha:726,o:"m 390 -518 b 621 -458 469 -507 549 -494 b 814 -134 753 -390 814 -281 b 652 59 814 -16 750 58 b 580 48 629 59 606 55 b 233 -334 392 -9 276 -138 b 115 -228 181 -314 143 -278 b 98 -160 104 -206 98 -183 b 107 -109 98 -144 101 -127 b 167 37 124 -59 145 -12 b 508 340 236 189 347 292 b 575 353 530 347 553 353 b 648 327 600 353 625 346 b 665 320 654 321 661 320 b 687 336 674 320 681 325 b 703 405 697 359 703 382 b 684 472 703 429 697 451 b 593 523 664 504 631 521 b 576 521 588 523 582 523 b 297 403 472 508 380 465 b 115 177 217 344 164 264 b 29 -121 60 82 29 -17 b 53 -278 29 -173 36 -225 b 226 -497 82 -374 131 -454 b 347 -523 265 -514 305 -523 b 390 -518 361 -523 376 -521 z m 351 -357 b 312 -351 337 -356 320 -363 b 325 -315 304 -340 320 -327 b 543 -120 373 -222 448 -158 b 622 -104 570 -108 596 -102 b 717 -132 655 -104 687 -112 b 740 -167 732 -143 740 -153 b 730 -196 740 -176 737 -184 b 563 -321 690 -258 634 -300 b 359 -357 497 -341 428 -354 z"},timeSig7:{x_min:20.3617407597707,x_max:592,y_min:-345,y_max:345,ha:690,o:"m 253 -497 b 318 -485 276 -497 297 -487 b 366 -441 348 -482 360 -468 b 487 -104 390 -323 433 -210 b 835 403 580 82 701 246 b 852 436 847 416 852 428 b 815 467 852 451 840 461 b 762 474 798 471 779 474 b 674 445 732 474 701 465 b 603 410 652 431 628 420 b 383 360 533 379 459 360 b 200 435 315 360 249 382 b 88 494 168 469 131 485 b 66 497 81 495 73 497 b 33 484 52 497 39 492 b 50 436 22 469 39 451 b 295 310 114 360 199 324 b 406 301 331 304 369 301 b 593 324 468 301 530 308 b 585 307 589 314 588 310 b 265 -249 451 137 338 -46 b 207 -442 242 -312 223 -377 b 204 -462 206 -449 204 -456 b 253 -497 204 -487 220 -497 z"},timeSig8:{x_min:20,x_max:504.15101530718516,y_min:-428,y_max:428,ha:856,o:"m 265 -616 b 289 -615 274 -616 281 -616 b 710 -271 492 -592 657 -485 b 726 -148 721 -229 727 -187 b 585 108 726 -48 687 42 b 572 127 576 114 573 120 b 576 144 572 132 575 138 b 598 301 590 196 598 249 b 586 413 598 338 593 376 b 356 616 559 531 467 616 b 233 582 317 616 275 606 b 29 233 101 505 29 384 b 104 9 29 153 46 72 b 189 -48 127 -16 160 -27 b 92 -158 141 -73 114 -114 b 37 -343 63 -217 50 -279 b 33 -390 35 -359 33 -374 b 265 -616 33 -524 148 -616 z m 258 105 b 124 148 215 105 167 117 b 96 196 105 163 96 177 b 99 217 96 202 96 209 b 197 384 120 281 151 337 b 350 451 242 429 297 451 b 516 364 412 451 472 422 b 530 331 523 354 530 343 l 530 327 l 530 320 b 468 151 520 261 507 200 b 419 122 455 135 442 125 b 258 105 370 117 320 105 z m 328 -438 b 158 -276 233 -436 160 -359 b 166 -239 158 -264 161 -252 b 230 -157 176 -203 202 -179 b 367 -72 274 -125 320 -98 b 448 -49 396 -56 423 -49 b 562 -118 491 -49 528 -72 b 611 -251 590 -157 611 -199 b 569 -341 611 -288 595 -318 b 328 -438 500 -402 416 -432 z"},timeSig9:{x_min:20,x_max:494,y_min:-421,y_max:421,ha:842,o:"m 235 -606 b 361 -564 275 -606 318 -593 b 619 -229 487 -482 566 -366 b 706 127 664 -114 694 4 b 711 233 708 163 711 197 b 700 346 711 271 708 308 b 389 606 658 517 530 606 b 351 605 376 606 364 606 b 56 272 171 586 56 441 b 96 98 56 216 69 156 b 334 -53 144 -3 238 -53 b 544 36 408 -53 484 -24 b 652 176 586 78 622 124 b 631 71 645 141 639 105 b 467 -302 599 -63 562 -196 b 271 -442 412 -364 354 -422 b 225 -448 255 -446 239 -448 b 95 -305 148 -448 98 -395 b 89 -255 95 -288 94 -271 b 73 -233 86 -246 85 -233 b 52 -248 65 -233 56 -239 b 29 -317 42 -271 30 -291 b 49 -448 29 -361 40 -405 b 235 -606 69 -541 144 -606 z m 340 104 b 144 209 264 108 194 141 b 127 258 132 225 127 240 b 137 297 127 271 130 284 b 366 449 184 396 269 449 b 517 408 415 449 467 436 b 595 348 546 392 572 372 b 616 305 608 336 616 321 b 609 281 616 298 613 289 b 340 104 557 184 477 104 z"},timeSigCommon:{x_min:20,x_max:585,y_min:-298,y_max:294.49658092772603,ha:592.496580927726,o:"m 444 -405 b 829 -45 626 -346 740 -207 b 842 26 842 -23 842 1 b 821 58 842 39 841 58 b 795 40 811 58 802 48 b 765 3 785 29 773 16 b 469 -223 690 -104 596 -183 b 354 -242 431 -235 392 -242 b 180 -177 292 -242 235 -223 b 135 -99 154 -157 140 -131 b 132 -59 134 -85 132 -72 b 141 7 132 -37 135 -16 b 449 274 189 160 297 243 b 477 278 459 276 468 276 b 546 203 517 278 539 253 b 517 157 550 177 533 166 b 485 143 507 153 497 143 l 482 143 b 467 148 478 143 472 144 b 374 183 438 170 406 181 b 264 118 333 183 292 161 b 238 48 246 92 238 69 b 261 -9 238 29 245 10 b 383 -73 287 -39 337 -73 b 412 -68 392 -73 402 -72 b 631 164 526 -27 586 59 b 649 252 644 193 649 222 b 636 328 649 278 645 304 b 504 423 615 400 579 429 b 242 318 408 415 317 387 b 29 -158 104 190 29 33 b 30 -176 29 -164 29 -170 b 115 -364 42 -246 52 -315 b 307 -429 177 -410 240 -429 b 444 -405 351 -429 397 -420 z"},timeSigCutCommon:{x_min:20,x_max:695,y_min:-687.0379164869064,y_max:687,ha:1374.0379164869064,o:"m 564 -989 b 595 -945 585 -991 589 -963 l 599 -922 b 605 -628 600 -824 603 -726 l 609 -399 b 878 -251 706 -363 798 -320 b 996 -85 932 -204 976 -153 b 1001 -63 998 -78 1001 -71 b 989 -46 1001 -56 998 -49 b 978 -43 985 -45 982 -43 b 950 -59 968 -43 959 -49 b 733 -216 894 -132 815 -177 b 611 -259 694 -235 652 -249 b 616 -20 612 -179 615 -99 b 680 29 642 -7 665 9 b 698 43 685 36 690 40 b 870 251 792 82 840 160 b 877 294 874 265 877 279 b 818 410 877 338 855 382 b 683 458 779 442 730 448 b 625 468 664 462 644 465 l 625 514 b 638 958 626 662 636 811 b 626 989 638 979 635 989 b 603 981 621 989 613 986 b 422 840 534 945 481 888 b 412 805 412 832 413 818 b 426 713 410 773 420 743 b 445 678 429 690 435 678 b 474 691 452 678 461 683 b 563 755 503 710 530 732 b 564 724 564 740 564 733 b 559 469 563 639 560 554 b 462 454 526 469 494 464 b 112 143 302 399 199 281 b 33 -94 66 71 45 -10 b 29 -148 30 -112 29 -131 b 105 -351 29 -223 52 -291 b 359 -455 171 -426 258 -451 b 517 -431 409 -451 464 -446 l 539 -422 l 539 -477 b 533 -739 536 -563 539 -651 b 530 -824 531 -768 530 -795 b 546 -948 530 -865 533 -907 b 564 -989 552 -962 543 -989 z m 410 -288 b 193 -197 328 -288 253 -264 b 141 -60 160 -161 141 -108 b 157 6 141 -35 147 -12 b 259 158 189 58 217 112 b 438 291 311 215 364 266 b 528 305 468 301 498 305 b 554 304 537 305 546 304 b 553 212 554 274 554 242 b 426 115 498 199 446 164 b 416 68 419 99 416 84 b 425 12 416 49 420 30 b 474 -39 432 -17 448 -32 b 513 -43 487 -42 498 -43 b 547 -40 524 -43 536 -42 l 543 -272 b 461 -285 516 -278 488 -281 b 410 -288 444 -287 426 -288 z m 694 197 b 668 203 685 197 677 199 b 621 216 654 210 638 215 b 622 294 622 242 622 268 b 706 268 651 287 678 278 b 746 235 721 261 734 249 b 752 222 749 230 752 226 b 743 213 752 219 749 215 b 694 197 727 206 711 197 z"},timeSigPlus:{x_min:0,x_max:661,y_min:-358,y_max:358,ha:716,o:"m 605 -516 b 629 -490 624 -516 629 -507 b 628 -475 629 -485 628 -481 b 613 -131 624 -405 616 -174 b 612 -96 612 -114 612 -96 l 647 -98 b 897 -115 730 -99 814 -109 b 940 -89 919 -117 935 -109 b 952 -24 946 -69 952 -46 b 948 9 952 -14 950 -3 b 912 39 942 26 933 37 b 609 60 822 48 609 60 b 616 392 609 60 608 291 b 567 488 619 436 605 467 b 511 516 550 498 531 514 b 498 511 507 516 503 514 b 478 446 475 501 480 469 b 467 150 474 348 469 249 b 465 59 465 121 465 59 l 372 49 b 73 14 272 36 173 24 b 49 13 65 13 56 13 b 0 -33 9 13 0 6 b 60 -141 0 -117 6 -140 b 112 -135 73 -141 91 -140 b 413 -102 213 -125 314 -112 b 464 -98 441 -99 464 -98 l 464 -145 b 477 -456 464 -249 468 -353 b 526 -510 478 -488 491 -507 b 589 -513 546 -511 569 -510 b 605 -516 595 -514 600 -516 z"},timeSigPlusSmall:{x_min:0,x_max:418,y_min:-197,y_max:199,ha:396,o:"m 301 -284 b 330 -238 320 -284 324 -255 b 348 -46 350 -176 341 -111 b 374 -20 351 -27 356 -23 b 481 -17 409 -16 445 -17 b 566 -9 510 -17 537 -16 b 602 3 579 -7 602 -16 b 566 29 602 19 582 24 b 526 33 553 32 539 33 b 384 39 478 36 432 39 b 356 62 363 39 356 42 l 356 68 b 359 177 359 104 359 141 l 359 251 b 341 287 359 264 361 285 b 311 255 324 287 314 272 b 310 228 311 246 310 236 l 301 69 b 275 39 301 49 295 39 l 271 39 b 210 40 251 40 230 40 b 167 39 196 40 181 40 b 89 40 141 37 115 40 b 24 30 68 40 46 37 b 0 17 17 27 0 30 l 0 13 b 27 -17 3 0 7 -13 b 91 -22 49 -22 71 -22 b 153 -22 115 -22 137 -20 l 275 -22 b 295 -40 289 -22 295 -27 l 295 -48 b 288 -235 288 -109 287 -171 b 287 -264 288 -243 287 -253 b 301 -284 287 -275 289 -284 z"},timeSigMinus:{x_min:0,x_max:662,y_min:-54,y_max:55,ha:109,o:"m 39 -78 b 49 -76 42 -78 45 -76 b 452 -75 94 -75 272 -75 b 861 -76 632 -75 814 -76 b 953 -20 927 -79 953 -66 b 948 27 953 -7 950 9 b 946 37 948 30 948 35 b 896 79 940 63 929 79 b 471 78 827 78 648 78 l 42 78 b 0 37 14 78 0 69 b 23 -66 0 0 17 -32 b 39 -78 24 -75 32 -76 z"},timeSigParensRight:{x_min:0,x_max:274.26483738379414,y_min:-722.6326530612245,y_max:725,ha:1447.6326530612246,o:"m 37 -1038 b 69 -1031 48 -1044 59 -1038 b 88 -1015 76 -1027 82 -1021 b 164 -886 120 -976 147 -933 b 333 -351 233 -711 292 -534 b 395 118 366 -204 399 -59 b 389 245 392 144 392 194 b 120 996 369 521 265 766 b 68 1044 99 1030 84 1044 b 19 988 50 1044 36 1024 b 0 922 7 965 0 945 b 20 858 0 901 6 881 b 259 215 141 660 236 449 b 271 -1 266 143 271 71 b 252 -239 271 -82 265 -161 b 148 -667 228 -384 183 -524 b 39 -1009 120 -785 66 -893 b 33 -1031 37 -1017 33 -1024 b 37 -1038 33 -1034 35 -1037 z"},timeSigParensRightSmall:{x_min:0,x_max:154.4025307335204,y_min:-422,y_max:422,ha:844,o:"m 43 -608 b 60 -598 48 -608 53 -605 b 117 -511 82 -572 102 -543 b 222 23 193 -350 219 -177 b 213 166 225 55 216 109 b 115 531 206 294 174 416 b 45 603 99 562 76 588 b 30 608 39 606 35 608 b 10 598 23 608 17 603 b 0 546 3 590 0 570 b 23 451 0 507 9 458 b 102 351 66 429 84 390 b 167 42 150 252 167 148 b 163 -49 167 12 166 -19 b 35 -449 151 -192 121 -330 b 14 -504 22 -467 14 -485 b 17 -527 14 -511 16 -520 l 30 -590 b 43 -608 33 -603 37 -608 z"},timeSigParensLeft:{x_min:.5555555555555556,x_max:399.6216117372966,y_min:-728,y_max:728,ha:1456,o:"m 562 -1048 b 573 -1043 566 -1048 570 -1047 b 553 -988 582 -1025 564 -1004 b 472 -884 527 -952 497 -920 b 210 -354 366 -717 275 -541 b 148 -6 170 -240 148 -124 b 160 148 148 45 153 96 b 315 678 189 331 242 508 b 431 901 350 755 380 834 b 459 950 451 926 461 939 b 435 995 459 962 451 972 b 364 1048 405 1034 383 1048 b 305 996 343 1048 325 1028 b 127 624 226 881 174 753 b 1 30 56 432 9 235 b 1 -32 1 9 0 -12 b 180 -629 13 -245 92 -438 b 363 -936 230 -739 298 -835 b 526 -1041 402 -995 448 -1041 b 562 -1048 537 -1040 552 -1048 z"},timeSigParensLeftSmall:{x_min:0,x_max:173.45497224367904,y_min:-405,y_max:404,ha:809,o:"m 197 -583 b 222 -553 212 -582 219 -566 b 229 -497 226 -534 229 -516 b 213 -425 229 -472 225 -448 b 102 -177 173 -344 132 -262 b 62 30 78 -111 58 -42 b 91 183 66 82 75 134 b 215 426 118 271 156 356 b 249 552 246 465 252 505 b 230 582 249 563 246 582 b 197 563 219 582 206 576 b 71 356 144 500 105 429 b 0 50 26 259 3 158 b 13 -112 4 -3 7 -58 b 176 -559 29 -275 105 -416 b 196 -583 180 -569 186 -583 z"},noteheadDoubleWhole:{x_min:-.4444444444444444,x_max:614.1875,y_min:-223.03296670127517,y_max:223,ha:446.0329667012752,o:"m 35 -321 b 62 -266 58 -318 58 -288 l 62 -194 b 63 50 62 -114 63 -32 b 60 189 63 96 63 143 b 43 300 59 226 60 265 b 29 321 40 308 39 321 l 26 321 b 0 292 13 318 0 310 b 0 248 0 278 -1 262 b 6 147 4 215 6 181 b 4 48 6 114 4 81 b 6 0 4 32 6 16 b 7 -36 7 -12 7 -24 l 7 -52 b 6 -156 7 -86 6 -121 b 19 -275 6 -196 9 -236 b 35 -321 23 -291 16 -323 z m 847 -314 b 871 -288 860 -315 867 -300 b 884 -187 881 -255 886 -222 b 876 115 878 -86 876 14 b 877 255 876 161 876 209 b 868 291 877 268 873 279 b 855 304 867 301 863 304 b 844 301 852 304 848 304 b 822 265 825 292 822 278 b 824 251 822 259 822 255 b 822 170 822 225 822 197 l 822 -20 b 835 -284 827 -86 825 -186 b 847 -314 837 -295 835 -311 z m 757 -291 b 793 -171 796 -255 792 -212 b 795 -49 795 -131 795 -91 b 786 207 795 36 791 121 b 779 240 786 217 783 229 b 766 258 776 246 776 258 b 762 256 765 258 763 256 b 739 236 752 253 740 252 b 733 177 737 216 732 197 b 737 20 737 125 739 73 l 737 -107 b 740 -202 737 -138 739 -170 b 757 -291 740 -230 743 -261 z m 128 -261 b 144 -251 135 -264 141 -256 b 158 -203 156 -236 157 -220 b 161 -137 161 -181 161 -158 b 157 30 161 -81 157 -26 b 158 76 157 45 157 60 l 158 101 b 156 225 158 141 158 183 b 137 253 156 235 154 253 l 134 253 b 109 222 120 251 109 242 b 104 91 108 179 104 134 b 108 -58 104 42 109 -9 b 107 -105 108 -73 108 -89 b 105 -127 107 -112 107 -120 b 118 -245 105 -167 114 -204 b 128 -261 118 -252 121 -259 z m 488 -242 b 693 -79 595 -249 685 -166 l 693 -55 b 690 0 693 -36 691 -17 b 540 187 684 84 621 164 b 449 200 508 196 480 200 b 210 104 363 200 282 163 b 186 56 196 92 186 76 b 207 -82 186 9 192 -37 b 300 -204 225 -132 248 -181 b 488 -242 356 -229 415 -240 z m 490 -88 b 449 -86 477 -88 464 -88 b 287 -56 399 -85 341 -78 b 258 -33 275 -52 258 -48 b 282 -7 258 -20 272 -13 b 458 43 340 23 399 43 b 580 14 497 43 537 35 b 618 -20 606 1 619 -9 b 592 -58 618 -30 609 -42 b 490 -88 562 -82 528 -88 z"},noteheadWhole:{x_min:0,x_max:380.16649762501584,y_min:-186.17102907059297,y_max:165,ha:351.17102907059297,o:"m 547 40 b 223 -268 543 -151 367 -259 b 102 -233 180 -271 143 -248 l 62 -216 b 0 -127 22 -197 0 -166 b 6 -91 0 -115 1 -104 b 122 141 33 -9 69 71 b 327 238 170 204 249 238 b 514 158 397 238 467 212 b 547 40 544 125 549 84 z m 248 -107 b 384 -63 295 -102 341 -88 b 426 -23 402 -53 415 -40 b 435 3 432 -14 435 -6 b 413 32 435 14 428 24 b 301 73 376 49 343 73 b 272 69 291 73 282 72 b 121 -35 207 53 157 20 b 111 -58 117 -42 111 -50 b 125 -75 111 -65 115 -71 b 248 -107 164 -89 202 -107 z"},noteheadHalf:{x_min:0,x_max:334,y_min:-174,y_max:175,ha:349,o:"m 480 56 b 167 -251 478 -115 331 -251 b 94 -242 143 -251 118 -248 b 9 -141 43 -229 20 -192 b 0 -68 3 -115 0 -91 b 284 249 0 95 127 200 b 304 252 289 251 297 252 b 481 78 374 252 481 170 b 480 56 481 71 481 63 z m 213 -102 b 399 6 274 -81 341 -48 b 402 17 400 7 402 13 b 399 27 402 22 400 26 b 311 94 373 53 353 88 b 292 95 305 95 300 95 b 130 27 230 95 181 55 b 69 -62 98 9 62 -29 b 161 -98 76 -98 128 -91 b 213 -102 174 -101 186 -101 z"},noteheadBlack:{x_min:0,x_max:334.04644433966797,y_min:-164,y_max:164,ha:328,o:"m 112 -233 b 141 -236 122 -235 131 -236 b 481 104 279 -236 485 -48 b 403 222 477 141 478 192 b 334 236 382 232 359 236 b 1 -59 180 236 13 59 b 0 -85 1 -68 0 -76 b 112 -233 0 -157 32 -215 z"},noteheadXDoubleWhole:{x_min:0,x_max:730,y_min:-266,y_max:267,ha:533,o:"m 1018 -373 b 1032 -361 1025 -376 1028 -367 b 1051 -287 1047 -338 1051 -314 b 1050 -252 1051 -276 1051 -264 b 1030 186 1031 -107 1037 40 b 1031 266 1028 213 1031 239 b 1018 363 1031 300 1028 331 b 1005 384 1015 373 1017 384 l 1004 384 b 984 363 992 384 986 373 b 982 343 982 356 982 348 b 981 235 982 307 981 271 b 996 -285 981 60 986 -112 b 1009 -360 998 -311 1005 -336 b 1018 -373 1011 -364 1014 -373 z m 16 -383 b 49 -328 39 -367 48 -350 b 69 56 58 -202 62 -73 b 75 212 72 107 72 160 b 78 278 76 233 78 255 b 59 382 78 312 73 347 b 29 328 33 372 29 350 b 13 -29 29 209 23 88 b 3 -222 7 -95 10 -157 b 0 -265 1 -236 0 -252 b 16 -383 0 -304 6 -343 z m 923 -314 b 955 -240 948 -289 952 -265 b 965 -65 962 -181 965 -125 b 963 0 965 -45 965 -22 b 962 111 960 37 962 73 b 953 240 962 154 960 197 b 939 275 952 253 952 275 b 913 239 924 274 913 258 b 913 173 914 217 913 194 b 914 135 913 160 913 147 b 920 27 919 98 920 63 b 909 -128 920 -26 917 -78 b 906 -179 906 -147 906 -163 b 923 -314 906 -223 913 -266 z m 121 -301 b 143 -272 134 -301 138 -284 b 147 -255 145 -268 145 -261 b 173 160 161 -117 166 22 b 173 233 173 184 174 209 b 157 264 171 243 171 264 b 137 235 143 264 138 249 b 132 207 135 226 132 216 b 121 43 128 153 124 96 b 105 -186 117 -36 105 -111 b 111 -269 105 -215 107 -242 b 121 -301 114 -281 104 -300 z m 210 -238 b 376 -193 274 -239 327 -226 b 471 -134 406 -173 439 -154 b 534 -94 491 -120 513 -107 b 671 -192 579 -127 624 -161 b 733 -226 691 -204 708 -228 b 746 -225 737 -228 742 -226 b 845 -204 782 -226 814 -213 b 868 -194 854 -203 865 -203 b 852 -173 871 -183 860 -179 b 661 -40 789 -128 724 -84 b 642 -27 654 -36 648 -32 b 861 114 716 17 791 63 b 886 132 870 120 886 121 l 886 137 b 852 164 883 151 867 161 b 776 176 827 170 801 176 b 685 145 744 176 714 168 b 530 45 638 107 583 76 b 403 132 487 73 444 101 b 279 176 364 161 324 171 b 223 160 259 176 229 176 b 258 115 215 141 242 127 b 431 -17 314 71 372 26 b 173 -196 341 -73 253 -130 b 157 -209 168 -200 157 -203 b 158 -215 157 -212 157 -215 b 183 -236 166 -223 168 -235 b 210 -238 194 -236 206 -239 z m 768 -207 b 533 -40 687 -150 609 -94 b 321 -173 462 -85 392 -130 b 261 -194 304 -184 287 -196 b 239 -193 253 -196 246 -194 b 387 -95 294 -157 340 -125 b 505 -20 426 -71 465 -45 l 484 -4 b 353 89 441 27 396 56 b 320 115 341 96 330 107 b 297 141 311 124 297 132 b 300 148 297 144 298 145 b 336 135 311 164 324 143 b 528 -4 400 89 464 42 l 723 121 b 770 140 737 131 753 138 b 792 132 779 140 789 141 b 778 115 795 122 783 120 b 586 -6 714 75 651 35 b 557 -24 576 -13 567 -19 b 726 -147 613 -66 670 -109 b 768 -207 744 -161 765 -173 z"},noteheadXWhole:{x_min:0,x_max:506,y_min:-143.0823320899293,y_max:144,ha:287.0823320899293,o:"m 53 -206 b 219 -163 117 -207 170 -196 b 314 -102 249 -141 282 -122 b 377 -63 334 -89 356 -76 b 514 -161 422 -96 468 -128 b 576 -196 534 -174 552 -196 b 589 -193 580 -196 585 -196 b 688 -174 625 -194 657 -181 b 711 -158 698 -171 711 -173 b 696 -143 711 -151 701 -147 b 503 -9 632 -98 567 -52 l 485 4 b 704 145 559 49 634 95 b 729 164 711 150 729 151 l 729 168 b 696 196 726 183 710 193 b 621 207 671 202 645 207 b 528 177 589 207 557 200 b 373 76 480 140 426 108 b 246 164 330 104 287 132 b 122 206 207 193 167 203 b 66 192 102 207 72 207 b 99 147 58 173 85 158 b 274 14 157 102 215 58 b 16 -164 184 -42 96 -98 b 0 -179 12 -168 0 -170 b 1 -183 0 -180 0 -183 b 26 -204 6 -193 12 -204 b 53 -206 37 -206 49 -206 z m 611 -177 b 376 -9 530 -118 452 -63 l 164 -143 b 104 -164 147 -154 130 -164 b 82 -161 96 -164 89 -164 b 230 -65 137 -125 183 -95 l 347 12 b 327 26 341 16 334 22 l 196 121 b 163 147 184 128 173 137 b 140 173 154 154 140 163 b 143 180 140 176 141 177 b 179 166 154 194 167 174 l 372 27 l 566 153 b 613 171 580 161 596 170 b 635 160 624 171 635 174 b 621 147 635 153 626 150 l 429 24 b 400 6 419 19 409 13 b 569 -117 456 -35 513 -75 b 611 -177 588 -130 608 -143 z"},noteheadXHalf:{x_min:0,x_max:421,y_min:-145.51844828189743,y_max:151,ha:296.51844828189746,o:"m 490 -209 b 539 -207 505 -207 521 -207 b 606 -209 560 -207 583 -209 b 598 -196 602 -203 600 -199 l 406 -19 l 540 130 b 547 144 546 135 547 140 b 536 156 547 148 543 153 b 488 192 518 166 503 176 b 416 217 471 209 444 217 b 323 180 380 217 344 204 l 264 115 b 239 138 256 122 248 131 b 33 197 180 196 108 200 b 3 186 23 197 6 193 b 19 154 -1 174 10 163 b 171 12 69 107 120 59 b 19 -157 120 -45 69 -101 b 0 -177 14 -163 0 -166 b 1 -181 0 -179 0 -180 b 39 -203 9 -197 22 -203 l 186 -203 b 197 -202 190 -202 193 -200 l 213 -202 b 262 -180 228 -202 246 -199 l 314 -122 b 490 -209 363 -170 412 -216 z m 435 -148 b 291 -30 379 -112 337 -69 l 213 -118 b 190 -137 207 -125 202 -137 b 145 -111 173 -130 154 -127 b 160 -79 137 -98 151 -88 b 238 16 184 -48 212 -16 b 141 99 204 43 173 72 l 124 117 b 115 132 121 121 115 127 b 118 137 115 134 117 137 b 141 132 127 147 135 138 l 253 36 b 347 150 285 75 315 112 b 370 164 354 160 363 163 b 403 145 382 164 393 156 b 416 127 412 140 416 132 b 405 102 416 118 412 111 l 307 -10 b 413 -105 343 -42 379 -73 b 435 -148 425 -115 436 -125 z"},noteheadXBlack:{x_min:0,x_max:289,y_min:-156,y_max:157,ha:313,o:"m 23 -225 b 69 -204 40 -223 56 -219 b 137 -131 92 -180 115 -157 l 209 -50 b 377 -197 264 -101 321 -148 b 403 -210 384 -203 393 -210 l 408 -210 b 416 -192 416 -207 416 -199 l 416 -186 b 403 -148 416 -171 413 -158 b 344 -81 384 -125 367 -101 b 252 -1 312 -55 282 -29 b 377 157 297 49 340 101 b 402 202 387 170 402 187 b 395 217 402 207 400 213 b 376 226 389 223 382 226 b 334 192 360 226 346 204 b 206 42 289 143 248 94 b 96 161 167 81 131 120 b 60 193 86 174 76 189 b 33 206 52 196 42 206 b 22 199 29 206 26 204 b 10 173 14 190 10 181 b 22 147 10 166 14 157 b 148 7 62 98 104 52 b 164 -7 154 1 158 -3 b 10 -189 111 -66 55 -122 b 0 -212 6 -197 0 -203 b 1 -217 0 -213 0 -216 b 23 -225 4 -226 14 -222 z"},noteheadCircleXDoubleWhole:{x_min:0,x_max:437,y_min:-220,y_max:219.03988406941295,ha:439.03988406941295,o:"m 10 -304 b 40 -206 43 -275 37 -239 b 55 168 48 -81 50 45 b 53 269 56 202 55 236 b 33 315 52 287 46 314 b 3 269 9 317 4 291 b 0 239 1 259 0 249 l 0 -196 b 10 -304 1 -232 7 -268 z m 592 -317 b 621 -220 619 -287 621 -253 b 622 -121 622 -187 622 -154 b 625 -20 622 -88 622 -55 b 629 101 628 20 629 60 b 628 220 629 141 628 181 b 618 253 628 232 625 243 b 608 275 613 259 616 274 b 602 272 606 275 603 275 b 575 249 590 269 575 266 l 575 246 b 573 222 575 239 573 230 l 573 -50 b 592 -317 575 -137 570 -225 z m 79 -285 b 114 -6 96 -261 109 -131 b 117 -63 114 -24 114 -45 b 249 -242 124 -151 166 -212 b 324 -256 275 -252 300 -256 b 504 -137 406 -256 478 -209 b 505 -265 504 -180 505 -222 b 513 -282 505 -269 510 -275 b 533 -248 526 -272 528 -261 b 540 -174 539 -223 540 -199 l 540 -127 b 553 207 546 -16 549 95 b 543 232 553 216 554 232 b 518 207 530 233 518 222 b 511 118 520 177 510 148 l 511 92 b 330 216 488 174 420 223 b 301 215 320 216 311 216 b 122 65 202 204 151 163 b 114 9 117 46 114 27 b 115 75 114 32 115 53 b 101 248 115 157 109 228 b 76 206 78 242 76 225 l 76 91 b 75 -26 76 52 76 13 b 69 -189 72 -81 66 -134 b 79 -285 71 -219 76 -249 z m 317 4 b 219 109 285 40 252 75 l 209 120 b 331 153 248 141 289 151 b 420 137 360 153 390 147 b 446 120 435 131 442 127 l 436 108 l 328 -7 z m 215 -131 b 216 -101 215 -122 215 -114 b 219 -45 217 -82 219 -63 b 197 94 219 3 213 49 l 197 95 b 199 94 199 95 199 94 l 310 -27 b 233 -108 285 -55 259 -81 z m 442 -141 b 432 -122 441 -134 436 -128 l 344 -26 l 426 58 l 445 81 b 444 75 445 78 444 76 b 428 -13 433 46 428 16 b 446 -104 428 -45 433 -75 b 452 -122 449 -111 452 -117 b 442 -141 452 -131 448 -137 z m 323 -190 b 272 -180 305 -187 288 -184 b 217 -158 239 -173 225 -168 l 327 -45 b 330 -48 328 -46 328 -48 b 432 -150 363 -82 393 -121 b 323 -190 400 -174 364 -189 z"},noteheadCircleXWhole:{x_min:0,x_max:323,y_min:-190,y_max:184.44625787787314,ha:374.4462578778731,o:"m 156 -258 b 240 -274 184 -268 213 -274 b 455 -101 347 -274 441 -202 b 465 19 462 -60 465 -22 b 464 71 465 36 465 52 b 246 265 455 194 370 274 b 216 264 236 265 226 264 b 12 94 102 251 45 203 b 0 13 3 66 1 40 b 4 -55 0 -10 3 -32 b 156 -258 14 -154 60 -222 z m 245 10 b 233 23 242 14 238 19 b 121 144 196 65 158 104 l 109 154 b 249 192 156 179 202 192 b 351 174 284 192 317 186 b 380 154 366 168 376 163 b 379 153 380 154 380 153 b 369 141 376 148 372 145 b 245 10 327 98 287 53 z m 115 -131 b 118 -96 117 -121 117 -111 b 121 -27 120 -73 121 -50 b 98 124 121 24 115 75 b 96 127 96 125 98 125 b 99 125 98 127 98 125 b 225 -12 140 79 181 33 l 138 -105 b 115 -131 131 -114 122 -121 z m 376 -143 b 363 -121 374 -134 369 -128 b 265 -12 331 -85 298 -48 l 357 85 b 379 111 364 94 372 101 b 377 102 379 108 377 105 b 359 4 364 71 359 37 b 382 -99 359 -32 366 -66 b 387 -121 384 -108 386 -115 b 376 -143 387 -130 382 -135 z m 239 -197 b 181 -187 220 -194 200 -192 b 121 -161 145 -177 128 -173 b 243 -33 161 -118 203 -75 l 248 -36 b 364 -153 285 -75 320 -118 b 239 -197 327 -180 287 -197 z"},noteheadCircleXHalf:{x_min:0,x_max:309,y_min:-179,y_max:179,ha:358,o:"m 232 -258 b 435 -94 328 -258 412 -196 b 445 6 444 -60 445 -27 b 444 69 445 27 445 48 b 258 258 439 170 374 258 l 230 258 l 207 256 b 14 107 111 248 45 202 b 0 12 4 75 0 43 b 12 -82 0 -20 4 -50 b 144 -242 27 -160 69 -212 b 232 -258 174 -252 203 -258 z m 192 60 b 115 141 166 88 141 115 l 108 150 b 226 189 141 173 186 189 b 253 186 236 189 245 187 b 305 180 271 183 288 183 b 192 60 268 140 229 101 z m 56 -78 b 45 6 43 -56 45 -23 b 65 84 49 39 50 45 b 85 121 72 96 78 107 b 95 124 88 124 92 127 b 171 39 120 95 145 68 z m 360 -132 b 348 -112 359 -124 353 -118 l 300 -58 l 387 37 b 410 63 397 48 405 56 b 413 26 412 52 413 40 b 360 -132 413 -42 393 -95 z m 232 -183 b 184 -177 217 -183 202 -181 l 281 -78 b 348 -143 301 -101 323 -122 b 232 -183 318 -168 279 -183 z"},noteheadCircleX:{x_min:0,x_max:344,y_min:-179,y_max:175.12551922594866,ha:354.12551922594866,o:"m 99 -210 b 236 -258 137 -242 186 -258 b 418 -183 305 -258 374 -230 b 495 33 475 -120 495 -48 b 494 66 495 45 494 55 b 302 252 487 183 405 256 b 181 243 262 249 222 248 b 46 171 128 236 79 219 b 0 19 14 127 0 73 b 99 -210 0 -68 35 -156 z m 245 42 l 124 156 b 200 176 145 166 170 173 b 337 183 245 181 291 184 b 377 176 351 183 364 180 b 245 42 333 131 288 86 z m 392 -99 l 285 3 l 400 121 b 418 154 409 131 418 140 b 465 50 448 130 465 94 b 405 -112 462 -17 439 -73 z m 89 -120 b 48 0 56 -82 48 -42 b 89 112 48 35 59 76 b 109 101 96 111 102 108 l 210 7 l 187 -17 b 89 -120 151 -53 125 -82 z m 176 -183 b 127 -163 158 -179 141 -171 l 252 -32 l 372 -144 b 233 -189 334 -173 285 -189 b 176 -183 215 -189 196 -187 z"},noteheadCircledDoubleWhole:{x_min:0,x_max:672,y_min:-291,y_max:291,ha:582,o:"m 27 -419 b 43 -369 37 -403 43 -387 b 49 -82 45 -272 49 -177 b 50 370 50 69 50 219 b 30 419 50 389 50 419 b 7 369 7 419 7 389 b 0 -284 4 151 1 -66 b 16 -418 0 -328 10 -373 z m 945 -374 b 968 -282 963 -343 968 -312 b 966 -245 968 -269 968 -258 b 958 -45 959 -179 962 -111 b 948 262 949 56 952 160 b 936 377 946 301 946 340 b 922 399 933 386 933 399 l 919 397 b 897 374 909 396 899 389 b 894 308 897 353 893 331 b 904 120 899 246 903 183 b 913 -111 907 43 909 -35 b 927 -297 916 -173 919 -235 b 945 -374 930 -320 927 -347 z m 95 -347 b 120 -292 115 -325 117 -310 b 124 -223 122 -269 124 -246 b 122 -141 124 -196 122 -168 b 121 -85 121 -122 121 -104 b 462 -297 170 -209 300 -297 b 727 -219 543 -294 639 -271 b 828 -118 773 -190 808 -157 b 842 -268 831 -168 834 -219 b 851 -288 844 -275 840 -287 b 865 -272 861 -289 863 -279 b 873 -225 871 -256 873 -240 b 873 -171 873 -207 871 -190 b 858 196 868 -48 863 75 b 848 295 857 229 854 262 b 840 315 848 301 850 315 l 837 315 b 816 295 827 314 816 307 b 809 216 815 268 808 243 b 815 102 812 179 814 140 b 672 295 780 176 733 240 b 500 370 621 340 566 370 b 436 361 480 370 459 367 b 120 95 288 321 183 233 l 120 256 b 115 287 120 266 118 276 b 104 305 112 292 115 305 l 101 305 b 82 284 91 304 82 297 b 76 216 81 262 76 239 b 84 -253 78 59 79 -96 b 95 -347 84 -282 89 -311 z m 780 -33 b 779 -24 780 -30 779 -27 b 704 92 766 22 743 62 b 544 173 655 128 599 147 b 400 206 497 194 448 204 b 307 193 369 206 338 202 b 202 118 264 181 226 153 b 235 168 212 135 222 151 b 505 337 302 262 396 312 b 523 338 511 337 517 338 b 611 288 559 338 586 312 b 763 62 678 225 733 151 b 780 -33 776 26 782 -4 z m 435 -88 b 337 -23 387 -88 354 -65 b 333 6 334 -14 333 -6 b 366 86 333 35 344 66 b 456 122 390 111 423 121 b 602 27 517 122 582 88 b 606 1 605 19 606 10 b 575 -49 606 -20 596 -36 b 435 -88 530 -76 481 -82 z m 441 -269 b 194 -96 327 -262 249 -194 b 167 1 176 -62 167 -30 b 177 59 167 22 171 42 b 174 39 176 52 174 46 b 266 -104 174 -27 210 -73 b 511 -151 346 -148 435 -144 l 552 -151 b 740 -104 616 -145 683 -141 b 776 -66 756 -94 769 -81 b 700 -174 766 -105 740 -140 b 441 -269 632 -232 533 -268 z"},noteheadCircledWhole:{x_min:-50,x_max:472,y_min:-231.00750990437078,y_max:232,ha:463.00750990437075,o:"m 289 -333 b 553 -255 370 -330 465 -307 b 680 -62 635 -206 680 -138 b 662 22 680 -36 674 -7 b 500 259 626 112 573 193 b 327 334 448 304 393 334 b 264 325 307 334 287 331 b -59 49 111 284 4 193 b -72 -19 -68 26 -72 4 b 289 -333 -72 -192 84 -334 z m 608 -69 b 605 -60 606 -66 606 -63 b 530 56 592 -14 570 26 b 372 137 482 92 425 111 b 228 170 324 158 275 168 b 134 157 196 170 166 166 b 29 82 91 145 53 117 b 60 132 37 99 49 115 b 333 301 128 226 223 276 b 350 302 338 301 344 302 b 438 252 386 302 413 276 b 590 26 505 189 560 115 b 608 -69 603 -10 608 -40 z m 262 -124 b 164 -59 215 -124 180 -101 b 160 -32 161 -50 160 -42 b 193 50 160 -3 171 30 b 284 86 217 75 251 85 b 429 -9 344 86 409 52 b 433 -36 432 -17 433 -26 b 402 -85 433 -56 423 -72 b 262 -124 357 -112 307 -118 z m 268 -305 b 22 -132 154 -298 76 -230 b -6 -33 3 -98 -6 -65 b 3 23 -6 -14 -3 6 b 1 3 1 16 1 10 b 94 -140 1 -63 37 -109 b 338 -187 173 -184 261 -180 l 379 -187 b 566 -140 444 -181 510 -177 b 602 -102 582 -130 595 -117 b 526 -210 592 -141 567 -176 b 268 -305 459 -268 360 -304 z"},noteheadCircledHalf:{x_min:-50,x_max:393,y_min:-175,y_max:175,ha:350,o:"m 540 39 b 408 187 503 94 464 148 b 259 252 356 223 301 252 b 35 192 160 252 95 229 b -68 50 -17 160 -53 112 b -72 13 -71 37 -72 24 b 69 -204 -72 -79 -1 -161 b 246 -252 125 -238 186 -252 b 500 -164 336 -252 426 -219 b 566 -42 543 -132 566 -88 b 540 39 566 -14 557 14 z m 9 -42 b 12 -68 10 -50 10 -59 b -7 6 3 -46 -4 -22 b 131 189 1 98 55 153 b 243 220 167 206 204 215 b 261 222 249 222 255 222 b 377 161 308 222 341 189 b 435 89 402 141 420 117 b 431 92 433 89 432 91 b 346 120 402 102 372 107 b 253 143 314 135 282 143 b 85 79 193 143 138 115 b 9 -42 45 52 10 13 z m 356 39 b 343 1 356 24 351 12 b 206 -111 304 -46 259 -84 b 181 -118 196 -115 189 -118 b 156 -71 163 -118 154 -102 b 238 35 164 -22 199 9 b 324 66 264 52 294 59 b 356 39 348 71 356 62 z m 488 -78 b 392 -176 471 -125 433 -154 b 246 -225 346 -200 297 -217 b 230 -226 240 -226 235 -226 b 157 -204 203 -226 180 -215 b 78 -154 128 -190 101 -174 b 232 -184 128 -171 180 -184 b 344 -161 269 -184 307 -179 b 491 -39 405 -135 455 -94 b 500 -23 495 -33 497 -29 b 488 -78 500 -40 494 -59 z"},noteheadCircledBlack:{x_min:-70,x_max:326,y_min:-168,y_max:192,ha:360,o:"m 176 -239 b 190 -242 180 -240 186 -240 b 262 -232 213 -242 238 -235 b 469 -19 384 -225 469 -131 b 467 22 469 -6 468 9 b 383 194 455 86 436 151 b 183 276 315 249 251 275 b 32 236 134 276 85 264 b -94 88 -30 207 -75 160 b -101 30 -98 69 -101 49 b 176 -239 -101 -107 9 -251 z m 177 -212 b -30 -27 81 -213 -13 -131 b -33 17 -33 -13 -33 3 b 127 226 -33 111 14 187 b 194 239 151 233 173 238 b 301 203 232 239 266 226 b 364 134 330 184 350 160 b 233 181 341 160 279 180 b 192 171 216 181 202 179 b 13 1 117 131 46 86 b 3 -48 6 -17 3 -33 b 60 -115 3 -79 20 -101 b 203 -135 105 -131 151 -138 b 229 -138 212 -137 220 -137 b 295 -122 251 -138 274 -135 b 400 -33 337 -99 373 -71 b 228 -206 393 -125 330 -192 b 177 -212 209 -209 192 -213 z"},noteheadDoubleWholeSquare:{x_min:0,x_max:474,y_min:-209.39230484541326,y_max:211,ha:420.39230484541326,o:"m 648 -301 b 668 -287 658 -304 665 -295 b 683 -209 678 -262 683 -235 b 677 258 681 -55 678 102 b 672 284 677 266 677 276 b 661 304 670 291 672 304 l 658 304 b 635 279 647 301 635 297 b 629 240 635 266 629 252 l 629 236 b 631 225 629 232 631 228 b 583 194 631 197 611 194 l 528 194 b 125 207 393 194 259 202 b 89 207 114 209 101 206 b 63 210 79 207 71 207 b 52 229 55 213 52 220 b 55 258 52 238 55 248 b 53 266 55 261 55 264 b 36 298 48 276 53 298 l 35 298 b 4 264 14 298 7 284 b 0 187 0 238 0 213 b 4 50 0 143 3 96 b 6 -10 6 30 6 10 b 4 -130 6 -50 4 -91 b 12 -268 4 -176 6 -222 b 19 -287 13 -275 10 -284 b 35 -275 26 -288 30 -281 b 52 -220 50 -261 48 -239 b 75 -199 55 -206 58 -199 l 141 -197 l 274 -197 l 634 -197 b 639 -281 635 -219 636 -251 b 648 -301 641 -288 638 -300 z m 72 -66 b 55 -56 59 -69 55 -65 l 55 -50 b 53 53 55 -16 55 20 b 69 73 53 69 60 72 l 79 72 b 330 65 163 66 246 63 l 592 65 b 634 81 606 65 618 71 b 635 -30 634 39 635 6 b 605 -58 635 -49 628 -58 b 451 -60 553 -60 503 -60 b 219 -59 373 -60 295 -59 l 166 -59 b 72 -66 134 -59 104 -60 z"},noteheadSquareWhite:{x_min:0,x_max:350,y_min:-131,y_max:131,ha:262,o:"m 468 -189 b 485 -187 474 -189 480 -189 b 500 -176 495 -187 500 -183 b 498 -168 500 -174 498 -171 b 497 -166 498 -167 497 -167 l 498 -164 b 504 -154 503 -163 504 -158 b 503 -138 504 -150 503 -144 l 503 -135 l 503 -94 b 492 66 500 -45 494 10 b 488 135 492 89 488 112 b 484 150 488 141 485 145 b 482 154 482 151 482 153 b 429 189 472 177 456 189 b 53 184 304 186 179 186 l 39 184 b 33 181 36 183 35 183 b 12 160 20 181 12 177 b 0 -109 9 71 4 -19 b 19 -137 0 -125 7 -134 b 23 -151 19 -141 20 -145 b 85 -187 37 -173 55 -187 b 468 -189 212 -187 340 -187 z m 246 -125 l 63 -125 b 66 -111 65 -122 66 -117 b 73 72 69 -50 71 10 l 73 130 b 88 128 78 128 82 128 b 148 130 108 130 128 130 b 271 128 190 130 230 128 l 271 130 l 420 130 b 428 20 425 92 425 56 l 436 -127 l 246 -127 z"},noteheadSquareBlack:{x_min:0,x_max:342,y_min:-129.98961937716263,y_max:132.44444444444446,ha:262.4340638216071,o:"m 217 190 b 439 186 304 190 372 190 b 467 180 448 184 458 183 b 492 145 484 176 492 167 b 490 -124 490 56 490 -33 b 488 -141 490 -130 488 -135 b 456 -170 488 -163 478 -168 b 118 -183 344 -176 230 -181 b 29 -184 89 -183 60 -192 b 0 -148 4 -180 0 -168 b 1 29 1 -89 1 -30 l 1 156 b 36 190 3 187 4 190 b 217 190 102 192 168 190 z"},noteheadTriangleDownDoubleWhole:{x_min:0,x_max:510,y_min:-213,y_max:213,ha:426,o:"m 16 -307 b 30 -289 26 -307 29 -297 b 43 -236 36 -272 42 -253 l 65 219 b 59 285 62 240 69 264 b 46 307 55 294 58 307 l 43 307 b 19 279 30 304 20 295 b 13 184 17 248 14 216 b 1 -125 9 81 7 -23 b 0 -163 0 -138 0 -150 b 6 -287 0 -204 4 -245 b 16 -307 6 -295 7 -305 z m 707 -294 b 734 -213 733 -271 734 -242 b 729 245 733 -60 730 92 b 719 285 729 259 724 272 b 707 298 716 291 714 298 l 703 298 b 685 284 696 297 687 292 b 683 253 683 274 683 264 b 691 -181 685 108 685 -36 b 707 -294 693 -217 690 -256 z m 108 -238 b 125 -203 125 -238 121 -216 b 127 -190 127 -199 127 -194 b 120 -138 127 -173 120 -156 l 120 -66 b 114 167 120 12 118 89 l 118 161 b 314 -153 184 58 248 -48 b 350 -184 327 -173 338 -184 b 387 -154 361 -184 374 -174 b 567 108 449 -68 508 20 b 626 193 588 137 608 164 b 615 -132 622 85 619 -24 l 615 -166 b 619 -207 615 -180 615 -194 b 638 -226 622 -217 629 -225 b 651 -209 648 -226 649 -216 b 658 -177 655 -199 658 -187 l 658 -171 b 667 49 655 -98 667 -23 b 665 88 667 62 667 75 b 665 220 665 135 667 179 b 641 265 664 238 660 265 b 626 243 629 265 626 255 b 628 222 626 236 628 228 b 612 225 624 223 619 225 b 384 223 537 223 461 223 l 384 225 l 170 225 b 131 215 157 225 144 222 b 112 200 122 210 117 206 b 88 266 111 225 108 249 b 75 239 76 259 75 249 b 73 147 75 207 73 179 b 82 -189 73 35 79 -78 b 84 -203 82 -194 82 -199 b 108 -238 86 -219 91 -238 z m 361 -79 b 295 78 336 -26 314 26 b 284 151 287 101 284 125 b 310 177 284 171 291 177 b 419 176 346 176 383 174 l 423 176 b 445 153 441 176 445 168 l 445 147 b 361 -79 442 65 415 -10 z"},noteheadTriangleDownWhole:{x_min:0,x_max:366,y_min:-145,y_max:138,ha:283,o:"m 242 -209 b 279 -180 253 -209 266 -200 b 459 84 341 -92 400 -4 b 520 170 480 112 501 141 b 527 189 524 177 527 183 b 504 199 527 196 520 199 l 55 199 b 23 190 45 199 33 196 b 0 161 9 181 0 173 b 10 135 0 154 3 145 b 206 -177 76 32 140 -73 b 242 -209 219 -199 230 -209 z m 253 -105 b 187 52 228 -52 206 0 b 176 127 179 76 176 101 b 197 151 176 144 181 151 l 202 151 b 256 150 220 151 238 150 b 311 151 275 150 294 151 b 337 128 331 151 337 144 l 337 122 b 253 -105 334 39 307 -35 z"},noteheadTriangleDownHalf:{x_min:-.0833130378007211,x_max:341,y_min:-159,y_max:159,ha:318,o:"m 266 -229 b 282 -215 274 -229 278 -225 b 487 153 350 -92 418 30 b 491 170 490 158 491 164 b 480 189 491 177 487 183 b 425 215 464 202 448 213 b 33 226 297 217 168 222 b 13 229 29 223 22 229 b 1 222 9 229 4 228 b 14 184 -4 207 7 196 b 210 -176 81 65 145 -56 b 253 -225 222 -194 230 -213 b 266 -229 259 -226 264 -228 z m 134 22 b 147 43 138 27 141 37 b 206 163 174 79 179 127 b 213 170 209 166 212 167 l 340 167 b 193 -75 287 89 251 1 b 190 -82 192 -76 190 -79 z"},noteheadTriangleDownBlack:{x_min:0,x_max:346,y_min:-149,y_max:149,ha:298,o:"m 229 -215 b 259 -202 238 -215 248 -210 b 284 -173 269 -194 278 -184 l 482 173 b 498 209 488 184 498 194 b 481 215 492 215 487 215 b 63 213 343 215 203 213 b 12 197 45 213 29 206 b 0 180 4 193 0 187 b 3 168 0 177 1 173 b 13 150 6 163 9 156 l 196 -189 b 229 -215 206 -206 216 -215 z"},noteheadTriangleUpDoubleWhole:{x_min:0,x_max:510,y_min:-213,y_max:213,ha:426,o:"m 16 -307 b 30 -289 26 -307 29 -297 b 43 -236 36 -272 42 -253 l 65 219 b 59 285 62 240 69 264 b 46 307 55 294 58 307 l 43 307 b 19 279 30 304 20 295 b 13 184 17 248 14 216 b 1 -125 9 81 7 -23 b 0 -163 0 -138 0 -150 b 6 -287 0 -204 4 -245 b 16 -307 6 -295 7 -305 z m 707 -298 b 734 -217 733 -275 734 -246 b 729 240 733 -65 730 88 b 719 281 729 255 724 268 b 707 294 716 287 714 294 l 703 294 b 685 279 696 292 687 288 b 683 249 683 269 683 259 b 691 -186 685 104 685 -40 b 707 -298 693 -222 690 -261 z m 88 -266 b 112 -200 108 -249 111 -225 b 131 -215 117 -206 122 -210 b 170 -225 144 -222 157 -225 l 384 -225 l 384 -223 b 612 -225 461 -223 537 -223 b 628 -222 619 -225 624 -223 b 641 -265 628 -238 622 -265 b 665 -220 660 -265 664 -238 b 665 -88 667 -179 665 -135 b 667 -49 667 -75 667 -62 b 658 171 667 23 655 98 b 651 209 660 184 655 197 b 638 226 649 216 648 226 b 619 207 629 225 622 217 b 615 166 615 194 615 180 l 615 132 b 626 -193 619 24 622 -85 b 567 -108 608 -164 588 -137 b 387 154 508 -20 449 68 b 350 184 374 174 361 184 b 314 153 338 184 327 173 b 118 -161 248 48 184 -58 l 114 -167 b 120 66 118 -89 120 -12 l 120 138 b 127 190 120 156 127 173 b 125 203 127 194 127 199 b 108 238 121 216 125 238 b 84 203 91 238 86 219 b 82 189 82 199 82 194 b 73 -147 79 78 73 -35 b 75 -239 73 -179 75 -207 b 88 -266 75 -249 76 -259 z m 310 -177 b 284 -151 291 -177 284 -171 b 295 -78 284 -125 287 -101 b 361 79 314 -26 336 26 b 445 -147 415 10 442 -65 b 423 -176 446 -166 442 -176 l 419 -176 b 310 -177 383 -174 346 -176 z"},noteheadTriangleUpWhole:{x_min:0,x_max:366,y_min:-145,y_max:138,ha:283,o:"m 504 -209 b 527 -199 520 -209 527 -206 b 520 -180 527 -193 524 -187 b 459 -94 501 -151 480 -122 b 279 170 400 -6 341 82 b 242 199 266 190 253 199 b 206 167 230 199 219 189 b 10 -145 140 63 76 -42 b 0 -171 3 -156 0 -164 b 23 -200 0 -183 9 -192 b 55 -209 33 -206 45 -209 z m 202 -161 b 176 -137 183 -163 176 -156 b 187 -62 176 -111 179 -86 b 253 95 206 -10 228 42 b 337 -132 307 24 334 -49 b 311 -161 338 -153 334 -161 b 256 -160 294 -161 275 -160 b 202 -161 238 -160 220 -161 z"},noteheadTriangleUpHalf:{x_min:0,x_max:341.0833130378007,y_min:-159,y_max:159,ha:318,o:"m 458 -226 b 478 -229 462 -223 469 -229 b 490 -222 482 -229 487 -228 b 477 -184 495 -207 484 -196 b 281 176 410 -65 346 56 b 238 225 269 194 261 213 b 225 229 232 226 228 228 b 209 215 217 229 213 225 b 4 -153 141 92 73 -30 b 0 -170 1 -158 0 -164 b 12 -189 0 -177 4 -183 b 66 -215 27 -202 43 -213 b 458 -226 194 -217 323 -222 z m 151 -167 b 298 75 204 -89 240 -1 b 301 82 300 76 301 79 l 357 -22 b 344 -43 353 -27 350 -37 b 285 -163 317 -79 312 -127 b 278 -170 282 -166 279 -167 z"},noteheadTriangleUpBlack:{x_min:0,x_max:346,y_min:-149,y_max:149,ha:298,o:"m 481 -215 b 498 -209 487 -215 492 -215 b 482 -173 498 -194 488 -184 l 284 173 b 259 202 278 184 269 194 b 229 215 248 210 238 215 b 196 189 216 215 206 206 l 13 -150 b 3 -168 9 -156 6 -163 b 0 -180 1 -173 0 -177 b 12 -197 0 -187 4 -193 b 63 -213 29 -206 45 -213 b 481 -215 203 -213 343 -215 z"},noteheadSlashedDoubleWhole1:{x_min:0,x_max:697,y_min:-290,y_max:290,ha:580,o:"m 20 -418 b 42 -376 40 -418 37 -392 b 43 -356 45 -370 43 -363 l 43 -348 b 50 -197 43 -298 49 -248 b 78 317 58 -24 69 147 b 72 387 75 343 82 366 b 52 418 68 397 69 418 l 49 416 b 24 380 33 413 24 399 b 19 235 23 333 20 284 b 7 -82 14 130 10 24 b 0 -264 6 -143 0 -203 b 10 -382 0 -302 1 -343 b 20 -418 13 -393 6 -418 z m 976 -344 b 991 -331 985 -346 988 -337 b 1004 -271 999 -312 1004 -292 l 1004 -194 b 996 184 1004 -68 1001 59 b 996 281 996 216 998 249 b 984 379 995 314 991 347 b 971 397 981 392 976 396 b 952 386 965 397 959 392 b 943 361 943 380 945 370 b 937 288 939 337 937 312 b 945 158 937 245 942 203 b 959 -248 950 23 953 -112 b 966 -325 960 -274 963 -300 b 976 -344 966 -334 968 -344 z m 102 -331 b 124 -272 120 -314 122 -294 b 135 -278 127 -276 131 -278 l 141 -278 b 320 -199 206 -262 272 -252 b 348 -171 328 -189 338 -180 b 482 -199 392 -190 436 -199 b 704 -173 576 -199 641 -187 b 847 -82 760 -158 809 -130 l 855 -69 l 855 -73 b 863 -229 857 -125 860 -177 b 876 -255 863 -239 863 -255 b 893 -233 886 -255 888 -242 b 900 -189 899 -219 900 -203 l 900 66 b 900 192 899 108 900 150 b 893 301 900 228 899 265 b 877 325 890 310 893 325 l 876 325 b 855 301 865 324 855 315 b 850 202 852 268 847 235 b 854 50 854 151 854 101 b 821 99 847 68 835 85 b 733 167 795 127 765 148 b 831 253 766 196 799 225 b 851 265 837 258 844 261 b 829 282 840 275 835 279 b 772 295 815 291 795 295 b 685 271 739 295 704 287 b 624 215 665 252 645 233 l 566 232 b 527 239 553 236 540 239 b 490 228 514 239 501 236 b 451 219 475 217 467 219 b 275 176 389 219 331 200 b 184 53 216 150 184 105 b 199 -14 184 32 189 10 b 262 -108 215 -52 236 -82 l 125 -230 b 134 225 130 -78 132 73 b 135 269 134 239 135 255 b 121 330 135 291 132 311 b 95 287 99 323 95 307 b 92 124 94 233 95 179 b 85 -143 88 36 85 -53 b 89 -300 85 -196 86 -248 b 102 -331 89 -311 89 -323 z m 367 -14 b 350 43 359 3 351 22 b 392 122 350 82 363 107 b 544 171 439 150 492 160 b 572 168 554 174 563 171 z m 564 -132 b 467 -105 528 -138 497 -121 b 442 -89 458 -101 449 -95 l 658 101 b 690 30 677 82 690 59 b 688 10 690 24 690 17 b 564 -132 678 -45 611 -127 z"},noteheadSlashedWhole1:{x_min:-76,x_max:498,y_min:-168,y_max:168,ha:336,o:"m -79 -242 b 55 -202 -32 -236 14 -228 l 145 -143 b 333 -171 203 -166 265 -171 b 429 -164 361 -174 395 -168 b 582 -130 481 -158 534 -154 b 657 -20 631 -105 657 -65 b 619 68 657 9 644 40 b 552 120 599 89 577 107 b 582 138 562 127 572 132 b 717 226 625 167 668 194 b 638 242 688 236 662 242 b 543 213 603 242 573 232 b 455 154 514 194 484 174 b 325 199 412 167 367 179 b 233 215 298 210 265 215 b 75 156 173 215 124 186 b 0 27 24 122 0 76 b 66 -98 0 -17 22 -63 b 72 -102 69 -99 71 -101 b -89 -209 17 -137 -36 -173 b -109 -225 -95 -213 -109 -216 b -108 -229 -109 -226 -108 -228 b -85 -242 -104 -239 -95 -242 z m 181 -29 b 167 14 171 -13 167 1 b 187 62 167 30 173 46 b 301 137 217 99 258 118 b 312 138 304 138 308 138 l 317 138 b 389 109 340 125 364 118 l 383 105 z m 337 -109 b 239 -82 301 -107 268 -99 l 468 65 b 482 24 477 53 482 40 b 480 4 482 19 481 12 b 337 -109 467 -56 399 -111 z"},noteheadSlashedHalf1:{x_min:-79.3435119522494,x_max:471,y_min:-184,y_max:184,ha:368,o:"m -112 -251 b -94 -265 -107 -261 -101 -264 b -52 -242 -79 -265 -63 -249 l 89 -148 b 212 -180 125 -170 167 -179 b 238 -177 220 -180 229 -179 l 262 -180 b 346 -171 289 -180 318 -176 b 576 -91 431 -166 507 -140 b 641 4 619 -60 641 -29 b 592 96 641 35 625 65 l 583 104 b 533 147 567 121 550 134 l 613 200 b 678 261 636 216 664 232 b 658 265 671 264 664 265 b 611 248 641 265 625 258 l 491 171 b 337 204 444 194 392 204 b 281 200 318 204 300 204 b 27 62 180 187 92 145 b -1 -19 9 37 -1 10 b 36 -107 -1 -50 12 -82 b 52 -121 42 -112 46 -117 l -72 -203 b -112 -251 -91 -216 -122 -233 z m 161 -49 b 158 -29 160 -42 158 -35 b 183 33 158 -7 167 16 b 395 137 239 95 311 122 b 420 125 405 134 413 130 z m 276 -128 b 261 -131 271 -130 266 -131 b 181 -86 233 -131 203 -114 l 454 94 l 468 72 b 481 36 477 60 481 49 b 469 1 481 26 477 14 b 276 -128 422 -66 354 -105 z"},noteheadSlashedBlack1:{x_min:-110,x_max:452,y_min:-190,y_max:190,ha:380,o:"m -131 -274 b -102 -262 -121 -272 -111 -266 b 7 -186 -65 -239 -29 -212 b 50 -157 22 -176 36 -166 b 105 -176 65 -166 84 -173 b 207 -183 140 -181 173 -183 b 239 -184 219 -184 229 -184 b 428 -91 327 -184 377 -150 b 487 43 461 -52 487 -7 b 482 76 487 53 485 65 b 459 128 478 95 469 112 b 507 161 475 138 491 150 l 651 262 b 622 274 641 271 632 274 b 605 271 616 274 611 272 b 514 233 573 262 541 252 l 422 167 b 317 203 392 190 354 203 b 271 196 301 203 285 200 b 168 157 236 186 200 173 b 6 -16 94 120 33 68 b -1 -62 1 -32 -1 -48 b 17 -125 -1 -86 4 -108 b -81 -196 -16 -148 -48 -173 b -145 -242 -102 -212 -128 -219 b -158 -256 -150 -246 -158 -251 b -157 -261 -158 -258 -157 -259 b -131 -274 -153 -269 -141 -274 z"},noteheadSlashedDoubleWhole2:{x_min:-.12386605641055257,x_max:697.4733477320805,y_min:-295,y_max:295,ha:590,o:"m 870 -338 b 891 -315 884 -341 887 -325 b 906 -183 907 -274 903 -228 b 914 186 912 -60 904 62 b 914 240 914 203 916 222 b 916 276 913 251 916 265 b 899 300 916 289 913 300 b 871 253 874 300 871 274 b 858 -168 871 111 858 -27 b 860 -235 858 -190 860 -213 l 736 -131 b 834 -20 799 -111 834 -69 b 789 85 834 13 819 49 b 683 160 760 118 723 140 b 383 216 589 209 487 215 b 330 213 364 217 347 216 b 228 300 295 242 261 271 b 86 347 184 337 138 348 b 58 343 76 347 63 350 l 58 360 b 35 425 58 384 53 423 b 6 382 9 425 6 403 l 6 131 b 0 -164 6 33 4 -66 b 24 -327 -1 -216 6 -271 b 50 -262 46 -305 50 -284 l 50 -154 b 52 -45 50 -118 50 -81 b 58 325 55 79 58 202 b 73 310 60 320 68 315 b 94 294 79 304 86 298 b 89 271 89 287 89 278 l 89 94 b 104 -194 101 -20 88 -108 b 118 -245 107 -213 104 -248 b 140 -190 140 -243 140 -212 l 140 -62 b 132 258 140 46 138 153 l 132 259 l 235 173 b 193 132 219 161 204 148 b 153 26 167 101 153 63 b 164 -35 153 7 157 -16 b 341 -170 196 -114 261 -158 b 433 -177 372 -174 403 -177 b 619 -157 497 -177 559 -170 l 706 -230 b 799 -276 736 -258 765 -276 b 818 -274 806 -276 812 -276 l 861 -274 b 863 -312 861 -287 863 -300 b 870 -338 864 -321 858 -337 z m 966 -425 b 986 -397 979 -425 982 -408 b 991 -373 989 -390 989 -382 b 995 -239 991 -328 995 -284 b 1004 334 1001 -49 1002 143 b 995 380 1005 350 1005 367 b 982 402 989 386 992 402 l 978 400 b 949 374 965 396 950 390 b 948 333 948 360 948 346 l 948 -37 b 949 -84 949 -52 949 -68 b 946 -248 949 -132 946 -189 b 953 -396 946 -297 948 -346 b 966 -425 955 -408 950 -425 z m 624 -36 b 416 140 554 22 485 81 b 482 156 439 150 461 154 b 625 81 537 156 588 124 b 647 27 639 63 647 46 b 624 -36 647 7 638 -14 z m 469 -117 b 320 14 386 -118 320 -60 b 343 81 320 37 327 60 l 547 -95 b 469 -117 521 -105 494 -111 z"},noteheadSlashedWhole2:{x_min:-83,x_max:510,y_min:-201,y_max:198,ha:399,o:"m 734 -289 b 696 -245 726 -266 710 -256 b 586 -164 660 -217 622 -192 l 589 -161 b 654 -50 631 -135 654 -94 b 616 40 654 -19 641 13 b 305 174 536 127 420 174 b 171 151 261 174 215 167 b 166 150 170 151 168 150 b 86 209 140 170 112 189 b -94 284 32 249 -22 289 l -108 285 b -120 274 -114 285 -120 284 b -104 251 -120 266 -112 258 b 71 124 -46 209 12 166 l 85 114 b 36 72 66 102 50 89 b 0 -30 12 40 0 4 b 122 -186 0 -96 45 -160 b 343 -222 194 -210 268 -222 b 514 -197 410 -220 467 -213 l 554 -228 b 734 -289 609 -268 668 -275 z m 477 -82 b 268 73 408 -30 338 22 l 301 91 b 336 101 314 96 324 101 b 370 88 347 101 359 96 b 459 9 405 66 436 43 b 481 -56 474 -13 481 -35 b 477 -82 481 -65 480 -73 z m 310 -161 b 216 -143 276 -161 246 -156 b 166 -72 181 -128 166 -105 b 168 -46 166 -65 167 -55 b 206 26 176 -16 189 7 b 436 -140 282 -29 360 -84 b 382 -158 420 -150 402 -157 b 310 -161 357 -161 333 -161 z"},noteheadSlashedHalf2:{x_min:-73,x_max:454,y_min:-188,y_max:188,ha:376,o:"m 654 -271 b 603 -202 649 -233 625 -217 b 481 -115 563 -173 523 -144 b 564 -60 510 -101 539 -82 b 615 40 596 -33 615 4 b 609 69 615 50 613 60 b 505 167 590 120 554 151 b 336 190 451 184 392 190 b 124 134 259 190 189 171 l -42 248 b -88 271 -56 256 -75 271 b -101 265 -94 271 -98 269 b -105 252 -104 259 -105 255 b -66 210 -105 235 -82 222 l 85 107 b 0 -24 42 73 0 35 b 183 -183 0 -118 75 -184 b 262 -176 206 -180 233 -177 b 438 -135 324 -171 383 -158 b 570 -228 482 -166 527 -197 b 654 -271 595 -243 621 -259 z m 393 -53 l 311 4 l 225 65 b 392 134 274 102 331 122 b 455 50 425 141 455 101 b 439 -3 455 35 451 14 b 393 -53 425 -22 409 -37 z m 287 -121 b 246 -130 272 -127 259 -130 b 171 -89 215 -130 189 -115 b 156 -40 161 -73 156 -58 b 186 29 156 -17 166 7 l 192 35 l 359 -82 b 287 -121 337 -98 312 -111 z"},noteheadSlashedBlack2:{x_min:-84,x_max:405,y_min:-189,y_max:189,ha:378,o:"m 557 -265 b 573 -272 562 -268 567 -272 b 583 -261 577 -272 580 -269 b 575 -242 580 -253 579 -248 b 524 -190 563 -220 544 -204 b 405 -99 485 -160 445 -130 b 497 50 449 -60 482 -9 b 500 72 498 58 500 65 b 478 122 500 91 492 107 b 331 186 438 167 387 186 b 120 131 258 186 186 167 l 107 124 b -52 242 53 163 1 203 b -89 265 -63 251 -76 259 b -107 272 -95 268 -101 272 b -117 266 -109 272 -114 271 b -121 251 -120 262 -121 256 b -114 235 -121 245 -120 239 b -60 186 -96 217 -81 199 b 63 95 -20 156 22 125 b -1 -35 26 66 -1 27 b 137 -183 -1 -130 46 -183 b 174 -180 148 -183 161 -181 l 245 -171 b 366 -128 289 -166 331 -150 l 426 -171 b 557 -265 469 -203 514 -233 z"},noteheadDiamondDoubleWhole:{x_min:0,x_max:429,y_min:-221,y_max:221,ha:442,o:"m 22 -318 b 42 -294 33 -318 37 -302 b 46 -266 45 -285 45 -275 b 50 -219 49 -249 50 -233 b 48 -153 50 -197 49 -176 b 43 120 43 -62 43 29 l 43 253 b 37 298 43 269 45 284 b 26 318 35 305 35 318 l 24 318 b 1 295 13 317 3 308 b 0 268 0 285 0 276 l 0 -121 b 10 -291 0 -177 1 -235 b 22 -318 12 -301 10 -318 z m 593 -312 b 618 -256 611 -294 616 -276 l 618 -186 b 611 253 618 -40 612 108 b 605 276 611 261 608 268 b 589 295 600 284 600 297 b 567 272 577 294 569 285 l 567 251 b 575 -197 573 102 575 -48 b 593 -312 575 -233 579 -271 z m 99 -268 b 114 -256 107 -269 111 -262 b 127 -196 124 -238 125 -217 b 128 -144 128 -179 128 -161 b 122 -9 128 -99 125 -55 l 135 -19 b 344 -179 206 -71 276 -122 b 370 -190 354 -186 363 -190 b 395 -173 379 -190 386 -184 b 492 -33 426 -127 459 -79 b 491 -86 491 -50 491 -68 b 507 -251 491 -138 495 -193 b 534 -184 530 -228 533 -206 b 541 144 537 -75 539 35 b 530 204 541 164 539 186 b 520 220 528 210 528 220 b 500 203 511 219 503 213 b 498 192 498 200 498 194 l 498 176 b 494 7 497 120 497 63 l 490 12 l 287 176 b 258 190 279 181 274 190 b 212 153 239 186 225 168 l 127 40 b 121 32 124 37 122 35 b 118 114 120 59 118 86 b 102 249 117 158 122 206 b 75 219 85 246 79 236 b 72 187 72 209 72 197 b 76 117 72 164 75 141 b 85 -151 79 27 79 -62 b 91 -251 86 -184 91 -217 b 99 -268 91 -258 92 -266 z m 392 -128 b 374 -122 387 -134 380 -127 l 180 29 b 170 45 173 35 170 39 b 176 56 170 48 173 52 b 236 122 204 101 219 122 b 308 76 252 122 272 107 l 433 -26 b 449 -50 439 -32 449 -36 b 392 -128 432 -75 413 -102 z"},noteheadDiamondWhole:{x_min:0,x_max:271,y_min:-132,y_max:132,ha:264,o:"m 230 -177 b 256 -190 240 -186 249 -190 b 281 -173 265 -190 272 -184 b 382 -29 314 -124 347 -76 b 390 -10 387 -22 390 -14 b 376 12 390 -3 386 4 b 173 177 308 66 240 121 b 144 190 166 183 160 190 b 98 153 127 186 112 170 b 13 40 69 115 42 76 b 0 13 4 29 0 20 b 22 -19 0 3 7 -9 b 230 -177 92 -69 163 -122 z m 279 -128 b 261 -122 274 -134 266 -127 l 66 30 b 56 45 59 35 56 39 b 62 56 56 48 59 52 b 122 122 91 101 105 122 b 194 76 138 122 158 107 l 320 -26 b 336 -50 325 -32 336 -35 b 279 -128 318 -75 300 -102 z"},noteheadDiamondHalf:{x_min:0,x_max:295,y_min:-148,y_max:148,ha:296,o:"m 228 -207 b 245 -213 235 -210 240 -213 b 264 -203 252 -213 258 -210 b 415 -46 314 -150 364 -98 b 425 -27 420 -40 425 -35 b 416 -10 425 -22 422 -16 b 217 200 350 60 284 131 b 194 213 212 207 204 213 b 170 196 181 213 177 203 b 14 33 118 143 68 86 b 0 7 4 23 0 16 b 17 -20 0 -1 6 -10 b 118 -114 52 -50 82 -85 b 228 -207 156 -144 184 -184 z m 209 -157 b 134 -69 177 -138 141 -115 b 130 -26 131 -55 130 -40 b 215 148 130 42 160 99 b 225 156 217 151 220 156 b 230 153 226 156 228 156 b 323 -26 276 104 321 55 b 298 -75 324 -42 315 -59 b 265 -109 287 -86 276 -99 b 209 -157 245 -125 228 -167 z"},noteheadDiamondBlack:{x_min:0,x_max:310,y_min:-146,y_max:146,ha:292,o:"m 266 -210 b 289 -194 278 -209 284 -200 b 406 -76 330 -156 367 -115 b 446 -23 433 -49 446 -36 b 412 29 446 -10 435 3 b 405 36 409 30 408 33 b 252 196 354 89 304 143 b 225 210 243 204 235 210 b 204 202 219 210 212 209 b 10 24 141 141 75 82 b 0 9 4 19 0 14 b 9 -6 0 4 3 0 l 232 -192 b 266 -210 242 -200 256 -204 z"},noteheadParenthesis:{x_min:-70.190112022022,x_max:329,y_min:-196,y_max:201,ha:397,o:"m 344 -279 b 382 -262 361 -288 370 -272 b 405 -233 390 -255 399 -245 b 474 9 455 -158 468 -73 b 416 228 474 78 448 174 b 364 282 403 249 387 271 b 344 289 359 285 350 288 b 331 279 338 289 333 287 b 325 248 328 269 325 258 b 338 225 325 238 328 229 b 412 138 379 207 396 174 b 445 1 433 92 445 45 b 346 -217 445 -81 410 -154 b 336 -252 340 -223 336 -238 b 344 -279 336 -265 338 -276 z m 19 -274 b 35 -282 24 -279 30 -281 b 49 -265 42 -282 46 -275 b 52 -243 50 -256 52 -249 b 36 -210 52 -230 49 -220 b -60 -59 -16 -173 -35 -114 b -73 9 -69 -39 -73 -16 b 33 223 -73 92 -24 189 b 50 265 43 229 50 249 b 33 288 50 278 46 289 b 4 272 23 288 14 275 b -9 261 0 269 -4 265 b -101 23 -58 193 -105 124 b -37 -206 -104 -52 -75 -130 b 19 -274 -23 -232 -6 -255 z"},noteheadParenthesisRight:{x_min:-30,x_max:82,y_min:-199.08429092881173,y_max:206,ha:405.0842909288117,o:"m -17 -282 b 24 -264 -6 -297 12 -272 b 60 -219 40 -253 52 -236 b 117 1 96 -150 112 -75 b 118 16 118 6 118 12 b 109 73 118 36 112 55 b 4 279 99 154 68 226 b -23 297 -4 287 -13 297 b -37 289 -27 297 -32 294 b -43 266 -42 285 -43 276 b -32 225 -43 251 -37 229 b 84 -7 48 170 84 82 b 32 -184 84 -69 65 -132 b -10 -222 22 -200 4 -209 b -24 -258 -20 -232 -24 -245 b -17 -282 -24 -266 -22 -276 z"},noteheadParenthesisLeft:{x_min:0,x_max:106,y_min:-197,y_max:197,ha:394,o:"m 134 -284 b 138 -281 135 -284 137 -284 b 145 -268 144 -278 145 -274 l 144 -253 b 107 -180 138 -225 121 -204 b 42 13 71 -120 42 -56 b 49 73 42 32 43 52 b 137 210 62 128 95 171 b 153 255 147 219 153 239 b 145 278 153 265 151 274 b 130 284 140 281 135 284 b 98 259 117 284 108 268 b 0 37 35 203 1 131 b 118 -268 9 -69 53 -173 b 134 -284 121 -274 127 -284 z"},noteheadMoonBlack:{x_min:0,x_max:328,y_min:-125,y_max:125,ha:250,o:"m 353 -160 b 465 -40 412 -140 451 -102 b 472 30 471 -17 472 6 b 469 124 472 60 469 92 b 406 179 469 170 459 177 l 128 179 b 37 180 98 179 68 179 b 0 141 7 180 0 170 b 3 -20 3 88 3 33 b 69 -134 3 -72 26 -109 b 240 -180 125 -164 181 -180 b 353 -160 278 -180 315 -174 z"},noteheadTriangleLeftBlack:{x_min:0,x_max:391.1554175279994,y_min:-142,y_max:142,ha:284,o:"m 138 -204 b 318 -197 197 -199 258 -197 l 431 -197 b 544 -192 469 -196 507 -193 b 563 -184 552 -190 560 -193 b 553 -167 564 -177 559 -171 l 540 -157 b 232 60 436 -85 334 -12 l 50 190 b 20 204 42 197 32 204 b 10 202 17 204 14 204 b 0 184 1 197 0 192 b 1 164 0 177 1 170 b 6 -150 3 59 6 -45 b 39 -193 7 -176 17 -186 b 138 -204 72 -204 105 -204 z"},noteheadTriangleRightBlack:{x_min:-.3332953162522517,x_max:398,y_min:-139,y_max:140,ha:279,o:"m 543 -200 b 573 -176 566 -200 573 -194 l 573 -168 b 554 141 566 -66 560 37 b 520 197 553 167 546 187 b 495 202 511 200 504 202 b 454 184 481 202 467 196 l 35 -137 b 0 -171 22 -147 -4 -154 b 52 -199 6 -193 33 -193 b 69 -199 58 -200 63 -199 z"},noteheadTriangleRoundDownBlack:{x_min:0,x_max:334,y_min:-133.78604087938328,y_max:136,ha:269.7860408793833,o:"m 252 -192 b 285 -176 269 -196 276 -187 b 468 52 346 -99 406 -23 b 481 79 477 62 481 71 b 465 104 481 88 475 95 b 441 124 456 109 449 117 b 249 196 380 174 314 194 b 13 104 157 196 69 154 b 0 86 6 98 0 92 b 7 69 0 82 3 76 b 202 -164 73 -7 137 -85 b 252 -192 216 -181 235 -186 z"},augmentationDot:{x_min:0,x_max:96,y_min:-57,y_max:57,ha:114,o:"m 13 -82 b 16 -81 14 -82 14 -82 b 105 -73 46 -76 75 -76 b 131 -48 121 -72 131 -60 b 138 26 134 -24 138 0 b 137 48 138 33 138 40 b 108 82 134 71 125 82 b 95 81 104 82 99 82 b 33 71 75 78 53 75 b 4 46 20 68 6 62 b 0 -66 1 9 0 -29 b 13 -82 0 -73 1 -82 z"},tremolo1:{x_min:-158,x_max:156.19381479578487,y_min:-88,y_max:88,ha:176,o:"m -206 -127 b -194 -125 -203 -127 -199 -127 b 173 -36 -72 -94 50 -65 b 220 16 202 -29 215 -12 b 225 50 223 30 225 45 b 216 107 226 76 222 91 b 194 127 210 120 204 127 b 183 124 192 127 189 127 l -192 33 b -226 -9 -213 27 -222 14 b -228 -32 -226 -16 -228 -23 b -222 -108 -228 -58 -222 -82 b -206 -127 -222 -120 -217 -127 z"},flag8thUp:{x_min:0,x_max:261,y_min:-819,y_max:0,ha:819,o:"m 265 -1171 b 351 -1035 301 -1130 336 -1087 b 376 -867 369 -979 376 -923 b 367 -755 376 -829 373 -792 b 233 -422 350 -632 311 -520 b 131 -291 199 -379 166 -334 b 65 -125 91 -239 66 -192 b 62 -75 65 -112 62 -91 b 42 0 62 -49 52 -24 l 35 0 b 0 -63 6 -13 0 -36 l 0 -144 b 96 -445 0 -255 29 -356 b 177 -547 124 -478 150 -514 b 308 -831 246 -629 298 -721 b 317 -890 310 -851 317 -871 b 311 -919 317 -900 315 -910 b 256 -1005 297 -950 282 -984 b 228 -1068 233 -1024 228 -1045 b 230 -1106 228 -1080 229 -1093 b 240 -1162 232 -1125 239 -1143 b 251 -1179 242 -1174 246 -1179 b 265 -1171 255 -1179 259 -1176 z"},flag8thDown:{x_min:0,x_max:261,y_min:0,y_max:819,ha:819,o:"m 265 1171 b 251 1179 259 1176 255 1179 b 240 1162 246 1179 242 1174 b 230 1106 239 1143 232 1125 b 228 1068 229 1093 228 1080 b 256 1005 228 1045 233 1024 b 311 919 282 984 297 950 b 317 890 315 910 317 900 b 308 831 317 871 310 851 b 177 547 298 721 246 629 b 96 445 150 514 124 478 b 0 144 29 356 0 255 l 0 63 b 35 0 0 36 6 13 l 42 0 b 62 75 52 24 62 49 b 59 117 62 91 59 104 b 131 291 60 183 91 239 b 233 422 166 334 199 379 b 367 755 311 520 350 632 b 376 867 373 792 376 829 b 351 1035 376 923 369 979 b 265 1171 336 1087 301 1130 z"},flag16thUp:{x_min:0,x_max:327.1591498636094,y_min:-819.3972596310256,y_max:0,ha:819.3972596310256,o:"m 415 -1179 b 435 -1168 423 -1182 429 -1174 b 451 -1138 442 -1159 446 -1149 b 465 -1020 464 -1102 467 -1064 b 461 -962 464 -1004 464 -984 b 471 -821 467 -916 472 -870 b 465 -721 472 -791 467 -756 b 415 -520 459 -651 441 -585 b 200 -245 370 -408 284 -327 b 96 -114 160 -206 118 -168 b 75 -24 84 -85 85 -53 b 59 0 72 -16 72 0 b 53 -1 58 0 56 -1 b 27 -32 40 -6 27 -10 b 29 -68 27 -43 29 -55 b 10 -79 20 -69 13 -72 b 1 -109 6 -89 1 -99 b 0 -170 0 -130 0 -148 b 35 -410 0 -252 12 -333 b 258 -793 76 -557 156 -681 b 409 -1158 350 -896 410 -1014 b 415 -1179 409 -1165 405 -1175 z m 413 -816 b 331 -681 392 -769 364 -723 b 145 -420 266 -596 189 -521 b 86 -281 125 -374 102 -330 b 156 -370 105 -312 128 -343 b 318 -539 210 -425 269 -478 b 413 -816 383 -621 420 -713 z"},flag16thDown:{x_min:0,x_max:327.1591498636094,y_min:0,y_max:819,ha:819,o:"m 59 0 b 75 24 72 0 72 16 b 96 114 85 53 84 85 b 200 245 118 168 160 206 b 415 520 284 327 370 408 b 465 721 441 585 459 651 b 471 821 467 756 472 791 b 461 962 472 870 467 916 b 465 1020 464 984 464 1004 b 451 1138 467 1064 464 1102 b 435 1168 446 1149 442 1159 b 418 1179 431 1172 425 1179 l 415 1179 b 408 1169 409 1176 408 1174 b 409 1158 408 1165 409 1161 b 258 793 410 1014 350 896 b 35 410 156 681 76 557 b 0 170 12 333 0 252 l 0 88 b 29 7 0 71 6 23 b 59 0 33 4 58 0 z m 86 281 b 145 420 102 330 125 374 b 331 681 189 521 266 596 b 413 816 364 723 392 769 b 415 791 413 808 415 799 b 318 539 415 698 377 613 b 156 370 269 478 210 425 b 86 281 128 343 105 312 z"},flag32ndUp:{x_min:-.19862981551275186,x_max:268.0942440943661,y_min:-849.4710740978672,y_max:149.0769891455102,ha:998.5480632433774,o:"m 323 -1223 b 351 -1198 337 -1227 344 -1210 b 359 -1184 354 -1194 356 -1188 b 386 -999 377 -1122 387 -1060 b 341 -783 386 -927 372 -855 b 330 -736 334 -769 330 -753 b 333 -708 330 -727 330 -717 b 344 -621 340 -678 344 -649 b 341 -579 344 -608 343 -593 b 328 -500 338 -553 328 -526 b 331 -475 328 -491 328 -484 b 347 -370 343 -438 348 -402 b 151 27 348 -212 288 -56 b 53 176 98 59 50 102 b 45 197 53 183 48 192 b 33 215 40 203 40 216 l 30 215 b 6 194 22 212 9 209 b 0 120 3 170 -1 145 b 0 -43 4 65 0 13 b 0 -98 0 -60 1 -79 b 4 -276 0 -157 6 -216 b 7 -456 4 -337 7 -397 b 66 -638 7 -523 22 -585 b 158 -724 94 -671 127 -697 b 318 -1011 246 -801 295 -899 b 321 -1044 321 -1021 321 -1032 b 312 -1152 321 -1080 312 -1116 b 317 -1192 312 -1165 314 -1179 b 323 -1223 320 -1202 311 -1220 z m 285 -376 b 121 -180 249 -289 173 -245 b 91 -105 104 -158 92 -135 b 288 -354 181 -144 288 -269 b 285 -376 288 -363 287 -370 z m 275 -657 b 111 -492 226 -589 163 -547 b 65 -376 78 -456 66 -418 b 71 -323 65 -360 68 -341 b 275 -657 164 -418 265 -504 z"},flag32ndDown:{x_min:-2.800802874905624,x_max:268.09424409436605,y_min:-169.07698914551014,y_max:829.4710740978672,ha:998.5480632433773,o:"m 323 1194 b 317 1164 311 1191 320 1174 b 312 1123 314 1151 312 1136 b 321 1015 312 1087 321 1051 b 318 982 321 1004 321 992 b 158 696 295 870 246 772 b 66 609 127 668 94 642 b 7 428 22 556 7 494 b 4 248 7 369 4 308 b -1 78 6 187 -10 137 b 0 14 0 59 0 32 l 0 -148 b 6 -223 0 -174 3 -199 b 30 -243 9 -238 22 -240 l 33 -243 b 45 -226 40 -245 40 -232 b 53 -204 48 -220 53 -212 b 151 -56 50 -131 98 -88 b 347 341 288 27 348 183 b 331 446 348 373 343 409 b 328 471 328 455 328 462 b 341 550 328 497 338 524 b 344 592 343 564 344 579 b 333 680 344 621 340 649 b 330 707 330 688 330 698 b 341 755 330 724 334 740 b 386 971 372 827 386 899 b 359 1155 387 1031 377 1093 b 351 1169 356 1159 354 1165 b 323 1194 344 1181 337 1198 z m 275 628 b 71 294 265 475 164 389 b 65 347 68 312 65 331 b 111 464 66 389 78 428 b 275 628 163 518 226 560 z m 285 347 b 288 325 287 341 288 334 b 91 76 288 240 181 115 b 121 151 92 107 104 130 b 285 347 173 216 249 261 z"},flag64thUp:{x_min:-4,x_max:282,y_min:-823.5430338167067,y_max:347,ha:1170.5430338167066,o:"m 350 -1185 b 380 -1162 364 -1189 374 -1175 b 406 -1022 399 -1119 406 -1071 b 359 -798 406 -945 384 -871 b 348 -756 353 -785 348 -772 b 350 -744 348 -753 350 -749 b 363 -621 356 -704 363 -664 b 360 -580 363 -608 363 -593 b 359 -560 359 -573 359 -567 b 373 -490 359 -536 366 -513 b 393 -346 386 -444 393 -395 b 387 -269 393 -320 390 -294 b 348 -127 382 -219 348 -173 b 351 -104 348 -120 348 -111 b 353 -65 351 -91 353 -78 b 341 37 353 -26 348 6 b 226 215 323 108 278 164 b 86 336 181 258 127 288 b 62 395 72 353 62 370 b 42 481 62 423 55 454 b 27 500 37 488 36 500 b 24 498 26 500 26 500 b -1 480 14 497 1 492 b -6 444 -4 467 -6 455 l -6 435 b -1 341 -1 403 -1 372 l -1 266 b 6 156 -1 230 0 193 b 13 35 12 117 13 75 l 13 -35 b 14 -85 13 -52 14 -68 b 29 -276 19 -150 33 -213 b 20 -448 24 -334 20 -392 b 24 -534 20 -477 22 -505 b 114 -708 30 -605 59 -664 b 197 -780 143 -732 171 -755 b 344 -1153 301 -884 341 -1011 b 343 -1172 344 -1159 343 -1166 b 350 -1185 343 -1176 344 -1182 z m 287 -88 b 62 193 186 -17 79 48 b 229 52 121 144 174 98 b 289 -33 256 29 274 -3 b 295 -56 294 -42 295 -49 b 287 -88 295 -66 292 -76 z m 298 -410 b 118 -235 238 -351 176 -295 b 76 -88 82 -197 78 -147 b 268 -252 137 -153 203 -202 b 330 -360 304 -279 330 -315 b 323 -402 330 -373 327 -387 b 311 -418 318 -413 315 -418 b 298 -410 307 -418 302 -415 z m 300 -691 b 117 -508 243 -616 168 -575 b 82 -408 94 -480 82 -448 b 84 -379 82 -397 82 -387 b 259 -553 135 -451 206 -492 b 301 -667 287 -583 301 -619 b 300 -691 301 -674 301 -683 z"},flag64thDown:{x_min:-5,x_max:281,y_min:-375,y_max:795.5430338167066,ha:1170.5430338167066,o:"m 348 1145 b 341 1132 343 1142 341 1136 b 343 1113 341 1126 343 1119 b 196 740 340 971 300 844 b 112 668 170 714 141 691 b 23 494 58 624 29 564 b 19 408 20 465 19 436 b 27 236 19 351 23 294 b 13 45 32 173 17 109 b 12 -6 13 27 12 12 l 12 -75 b 4 -196 12 -115 10 -157 b -3 -307 -1 -233 -3 -271 l -3 -382 b -7 -475 -3 -412 -3 -444 l -7 -484 b -3 -520 -7 -495 -6 -507 b 23 -539 0 -533 13 -537 b 26 -540 24 -540 24 -540 b 40 -521 35 -540 36 -528 b 60 -435 53 -494 60 -464 b 85 -376 60 -410 71 -393 b 225 -255 125 -328 180 -298 b 340 -78 276 -204 321 -148 b 351 24 347 -46 351 -14 b 350 63 351 37 350 50 b 347 86 347 71 347 79 b 386 229 347 132 380 179 b 392 305 389 253 392 279 b 372 449 392 354 384 403 b 357 520 364 472 357 495 b 359 540 357 527 357 533 b 361 580 361 553 361 567 b 348 704 361 624 354 664 b 347 716 348 708 347 713 b 357 757 347 732 351 744 b 405 982 383 831 405 904 b 379 1122 405 1031 397 1079 b 348 1145 373 1135 363 1149 z m 298 651 b 300 626 300 642 300 634 b 258 513 300 579 285 543 b 82 338 204 452 134 410 b 81 367 81 347 81 357 b 115 468 81 408 92 439 b 298 651 167 534 242 576 z m 297 370 b 310 377 301 374 305 377 b 321 361 314 377 317 373 b 328 320 325 347 328 333 b 266 212 328 275 302 239 b 75 48 202 161 135 112 b 117 194 76 107 81 157 b 297 370 174 255 236 311 z m 285 48 b 294 16 291 36 294 26 b 288 -7 294 9 292 1 b 228 -92 272 -37 255 -69 b 60 -233 173 -138 120 -184 b 285 48 78 -88 184 -23 z"},flag128thUp:{x_min:0,x_max:252,y_min:-804,y_max:530,ha:1334,o:"m 298 -1158 b 328 -1126 312 -1158 320 -1139 b 330 -1116 330 -1123 330 -1119 b 347 -996 343 -1076 347 -1037 b 328 -837 347 -943 338 -890 b 320 -778 324 -816 320 -798 b 330 -733 320 -763 323 -749 b 340 -665 338 -714 337 -688 b 341 -645 340 -660 341 -652 b 333 -534 341 -609 333 -572 b 343 -471 333 -513 334 -492 b 361 -366 356 -436 361 -402 b 331 -202 361 -311 348 -256 b 328 -187 330 -197 328 -193 b 331 -179 328 -184 328 -181 b 363 -55 353 -137 363 -96 b 337 79 363 -12 351 33 b 327 114 333 92 327 104 b 344 144 327 124 331 132 b 359 174 353 150 357 163 b 361 228 360 193 361 210 b 243 517 361 337 325 435 b 147 596 213 546 179 569 b 75 708 111 626 75 655 b 62 744 75 723 68 733 b 50 763 58 752 58 763 b 46 762 49 763 48 762 b 17 742 36 757 22 757 b 0 697 14 726 0 711 b 1 595 0 662 3 631 b 0 469 0 552 0 511 b 1 429 0 456 0 442 b 22 289 6 382 22 337 b 24 128 22 238 24 184 b 22 66 24 108 23 86 b 19 -19 20 37 19 10 b 20 -132 19 -56 20 -95 b 13 -276 20 -180 19 -229 b 9 -359 10 -304 9 -330 b 12 -487 9 -402 12 -445 b 56 -582 12 -526 29 -554 b 197 -742 107 -632 160 -681 b 288 -1100 265 -851 276 -976 b 288 -1122 288 -1107 287 -1115 b 287 -1145 289 -1129 287 -1138 b 298 -1158 287 -1153 288 -1158 z m 304 150 b 75 475 229 256 112 334 b 304 150 233 357 305 287 z m 271 -73 b 127 72 233 -14 179 26 b 81 167 96 98 81 127 b 84 194 81 176 82 184 b 271 -73 148 102 242 39 z m 279 -396 b 132 -223 233 -330 180 -279 b 81 -112 104 -192 81 -156 b 82 -91 81 -105 81 -98 b 279 -396 167 -125 269 -281 z m 249 -609 b 69 -357 197 -520 88 -471 b 249 -609 131 -441 229 -498 z"},flag128thDown:{x_min:-.8888888888888888,x_max:252,y_min:-580,y_max:754,ha:1334,o:"m 298 1086 b 287 1073 288 1086 287 1081 b 288 1050 287 1066 289 1057 b 288 1028 287 1043 288 1035 b 197 670 276 904 265 779 b 56 510 160 609 107 560 b 12 415 29 482 12 454 b 9 287 12 373 9 330 b 13 204 9 258 10 232 b 20 60 19 157 20 108 b 19 -53 20 23 19 -16 b 22 -138 19 -82 20 -109 b 24 -200 23 -158 24 -180 b 22 -361 24 -256 22 -310 b 1 -501 22 -409 6 -454 b 0 -541 0 -514 0 -528 b 0 -667 0 -583 -3 -624 b 0 -809 0 -675 -3 -791 b 46 -834 4 -825 36 -829 b 50 -835 48 -834 49 -835 b 62 -816 58 -835 58 -824 b 75 -780 68 -805 75 -795 b 147 -668 75 -727 111 -698 b 243 -589 179 -641 213 -618 b 361 -300 325 -507 361 -409 b 359 -246 361 -282 360 -265 b 344 -216 357 -235 353 -222 b 327 -186 331 -204 327 -196 b 337 -151 327 -176 333 -164 b 363 -17 351 -105 363 -60 b 331 107 363 24 353 65 b 328 115 328 109 328 112 b 331 130 328 121 330 125 b 361 294 348 184 361 239 b 343 399 361 330 356 364 b 333 462 334 420 333 441 b 341 573 333 500 341 537 b 340 593 341 580 340 588 b 330 661 337 616 338 642 b 320 706 323 677 320 691 b 328 765 320 726 324 744 b 347 924 338 818 347 871 b 330 1044 347 965 343 1004 b 328 1054 330 1047 330 1051 b 298 1086 320 1067 312 1086 z m 249 537 b 69 285 229 426 131 369 b 249 537 88 399 197 448 z m 279 324 b 82 19 269 209 167 53 b 81 40 81 26 81 33 b 132 151 81 84 104 120 b 279 324 180 207 233 258 z m 271 1 b 84 -266 242 -111 148 -174 b 81 -239 82 -256 81 -248 b 127 -144 81 -199 96 -170 b 271 1 179 -98 233 -58 z m 304 -222 b 75 -547 305 -359 233 -429 b 304 -222 112 -406 229 -328 z"},accidentalFlat:{x_min:1,x_max:209,y_min:-208,y_max:472,ha:680,o:"m 29 -300 b 46 -289 33 -300 39 -297 b 107 -243 65 -274 86 -258 b 301 127 233 -153 301 -30 b 298 186 301 147 301 166 b 190 297 291 256 251 297 b 147 289 177 297 163 294 b 86 265 127 284 107 274 l 85 264 l 85 301 b 91 465 85 356 88 410 b 94 559 91 497 94 527 b 84 651 94 589 91 621 b 66 680 81 661 81 680 l 65 680 b 37 645 49 678 37 665 b 33 523 36 605 32 563 l 33 478 b 26 223 33 393 29 308 b 1 -141 22 101 1 -19 b 17 -287 1 -189 4 -239 b 29 -300 20 -295 23 -300 z m 68 -105 b 76 12 71 -68 72 -29 b 81 107 79 43 81 75 l 86 109 b 171 135 114 121 141 135 b 204 128 181 135 193 132 b 238 92 228 120 239 108 b 230 63 238 84 236 75 b 68 -105 193 -10 132 -59 z"},accidentalNatural:{x_min:0,x_max:213.5,y_min:-456,y_max:462,ha:918,o:"m 255 -657 b 281 -624 271 -657 275 -636 b 285 -599 282 -615 285 -608 b 292 -300 288 -500 289 -400 b 289 -161 292 -253 289 -207 b 300 128 292 -65 297 32 b 304 168 300 128 302 150 l 304 173 l 305 190 l 305 199 l 307 225 b 304 259 307 229 310 246 b 272 298 297 274 302 305 b 63 266 204 279 134 272 b 72 514 68 348 72 432 b 71 595 72 541 72 567 b 56 665 71 619 66 642 b 17 579 9 651 17 608 b 3 144 19 433 7 289 b 0 -7 1 94 0 43 b 3 -134 0 -50 1 -92 b 7 -219 3 -163 7 -192 b 35 -251 7 -243 17 -251 b 49 -249 39 -251 43 -251 l 223 -223 l 230 -222 l 230 -359 b 223 -516 230 -410 223 -464 b 236 -619 223 -550 226 -585 b 255 -657 240 -634 236 -657 z m 58 -63 b 55 81 56 -14 53 33 l 56 99 b 85 99 65 99 75 98 b 232 108 134 104 183 107 l 240 109 l 236 66 b 232 -48 235 29 232 -10 b 58 -81 174 -63 115 -73 z"},accidentalSharp:{x_min:-22,x_max:390,y_min:-384,y_max:383,ha:767,o:"m 202 -553 b 219 -526 213 -552 216 -536 b 226 -471 225 -507 226 -488 b 225 -425 226 -455 225 -441 b 226 -392 225 -415 225 -402 b 233 -305 229 -363 232 -334 l 297 -292 b 331 -469 300 -353 311 -412 b 347 -485 333 -477 338 -485 b 363 -469 356 -487 359 -477 b 374 -418 373 -454 374 -435 b 376 -382 376 -405 376 -393 b 372 -276 376 -347 373 -311 l 455 -259 b 550 -156 534 -243 544 -232 b 550 -109 550 -137 552 -124 b 526 -78 549 -91 541 -78 l 523 -78 b 507 -79 517 -78 513 -78 b 403 -101 474 -88 438 -95 l 379 -105 b 382 -42 380 -85 380 -63 b 384 96 383 4 384 50 b 503 131 425 107 464 118 b 549 173 524 138 543 150 b 562 249 554 199 562 223 b 554 294 562 264 560 279 b 536 315 549 308 544 315 l 533 315 b 517 312 528 315 523 315 b 382 266 472 294 428 279 l 377 344 b 359 531 374 406 372 469 b 348 552 356 539 357 552 l 347 552 l 343 552 b 315 528 331 549 317 544 l 315 501 b 320 249 315 416 318 333 l 243 232 b 239 361 243 275 242 318 b 226 425 238 383 238 403 b 199 359 194 409 199 382 b 193 223 196 312 194 268 b 72 202 153 215 112 209 b 4 118 13 192 4 183 b 10 66 0 102 12 84 b 33 29 7 39 14 30 b 48 32 37 29 42 30 b 187 55 95 39 141 46 l 183 -75 b 176 -145 181 -99 179 -122 b 16 -179 122 -156 69 -166 b -32 -232 -14 -186 -32 -197 b -17 -331 -32 -266 -19 -298 b -1 -356 -17 -347 -13 -354 b 12 -353 1 -356 6 -354 b 167 -320 63 -341 115 -331 b 166 -377 166 -338 166 -357 b 189 -526 166 -428 171 -477 b 202 -553 192 -536 189 -553 z m 240 -132 b 243 -37 242 -101 242 -69 b 245 65 245 -3 245 30 b 315 79 269 69 292 73 b 301 -120 308 13 305 -53 z"},accidentalDoubleSharp:{x_min:0,x_max:287,y_min:-159,y_max:159,ha:318,o:"m 84 -229 b 107 -216 91 -229 98 -225 b 200 -125 138 -186 167 -154 b 232 -95 212 -115 222 -105 b 347 -189 271 -125 310 -157 b 370 -200 356 -196 363 -200 b 396 -179 380 -200 389 -192 b 412 -102 410 -154 406 -125 b 377 -27 410 -69 400 -46 l 325 14 b 402 91 350 42 374 68 b 413 127 410 96 413 107 b 382 200 409 148 397 176 b 350 229 370 220 360 229 b 314 210 340 229 328 223 b 274 174 300 199 285 187 b 212 104 252 151 232 128 b 92 187 173 132 132 161 b 78 193 86 192 82 193 b 68 190 75 193 72 193 b 48 179 62 186 53 187 b 40 137 43 168 40 154 b 81 16 40 92 56 32 b 107 -3 89 10 98 4 b 14 -94 76 -32 45 -62 b 0 -124 6 -102 0 -114 b 12 -154 0 -134 3 -144 b 62 -215 26 -176 48 -193 b 84 -229 69 -225 76 -229 z"},accidentalDoubleFlat:{x_min:0,x_max:359,y_min:-220,y_max:446,ha:666,o:"m 43 -317 b 72 -301 55 -317 63 -310 b 160 -186 108 -268 134 -226 b 236 -60 186 -145 212 -102 b 233 -131 235 -85 233 -108 b 239 -220 233 -161 235 -190 b 259 -246 240 -233 239 -240 b 301 -228 284 -252 291 -238 b 465 -7 369 -163 416 -85 b 517 173 500 48 517 108 b 451 307 517 229 505 284 b 409 315 436 312 422 315 b 331 287 382 315 356 305 b 311 274 324 282 320 274 l 310 274 l 310 566 b 305 621 310 585 312 603 b 294 642 301 628 305 642 l 292 642 b 264 622 282 641 266 636 b 253 575 259 606 256 590 b 246 418 248 523 246 471 b 248 243 246 360 248 302 l 248 187 b 164 238 220 225 193 238 b 85 213 140 238 112 226 b 84 229 85 220 84 225 b 86 315 85 258 86 287 b 81 528 86 386 82 458 b 71 582 81 547 78 566 b 56 603 66 590 68 603 l 53 603 b 23 580 40 600 26 598 b 19 537 20 566 19 552 b 20 514 19 530 19 521 b 26 390 24 472 26 432 b 14 66 26 282 16 174 b 0 -168 13 -12 0 -91 b 12 -279 0 -206 3 -242 b 30 -314 16 -294 14 -308 b 43 -317 35 -317 39 -317 z m 301 -72 b 302 7 302 -45 302 -19 l 302 86 b 351 158 304 121 321 145 b 383 166 361 163 373 166 b 435 143 402 166 419 157 b 445 127 441 138 445 132 b 441 114 445 122 444 118 b 301 -72 397 49 354 -14 z m 75 -147 b 73 30 75 -86 75 -29 b 118 82 73 62 92 76 b 132 84 124 84 128 84 b 190 52 156 84 174 69 b 193 40 192 49 193 45 b 192 33 193 37 193 35 b 75 -147 157 -30 125 -95 z"},accidentalParensLeft:{x_min:0,x_max:130.18934911242604,y_min:-270,y_max:267.6082500723851,ha:537.6082500723851,o:"m 107 -389 b 127 -374 114 -389 120 -384 b 141 -347 132 -367 137 -357 b 151 -294 148 -330 151 -311 b 122 -207 151 -265 141 -236 b 63 -65 94 -164 72 -117 b 59 -10 60 -46 59 -27 b 145 223 59 78 94 153 b 187 354 176 262 189 305 b 177 384 187 364 190 380 b 143 373 166 387 153 383 b 124 354 137 367 130 361 b 0 -35 33 240 0 108 l 0 -92 b 85 -372 4 -193 27 -287 b 107 -389 92 -383 99 -389 z"},accidentalParensRight:{x_min:-.4444444444444445,x_max:139,y_min:-275,y_max:277,ha:552,o:"m 58 -396 b 96 -354 75 -396 85 -370 b 200 13 168 -238 200 -111 b 153 268 200 109 184 190 b 49 392 131 320 101 364 b 26 399 40 397 33 399 b 0 366 10 399 0 387 b 0 318 -1 350 0 334 l 0 291 b 27 238 -3 266 7 253 b 143 9 105 180 143 98 b 141 -20 143 -1 143 -10 b 63 -225 135 -92 108 -164 b 36 -307 45 -251 36 -278 b 40 -344 36 -320 37 -331 b 42 -356 42 -347 42 -351 b 58 -396 42 -374 37 -396 z"},accidentalQuarterToneFlatStein:{x_min:0,x_max:208,y_min:-240,y_max:440,ha:680,o:"m 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z"},accidentalThreeQuarterTonesFlatZimmermann:{x_min:0,x_max:422,y_min:-240,y_max:440,ha:680,o:"m 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 336 -346 b 353 -336 340 -346 346 -343 b 413 -289 372 -320 393 -304 b 608 81 540 -199 608 -76 b 605 140 608 101 608 120 b 497 251 598 210 557 251 b 454 243 484 251 469 248 b 393 219 433 238 413 228 l 392 217 l 392 255 b 397 419 392 310 395 364 b 400 513 397 451 400 481 b 390 605 400 543 397 575 b 373 634 387 615 387 634 l 372 634 b 344 599 356 632 344 619 b 340 477 343 559 338 517 l 340 432 b 333 177 340 347 336 262 b 308 -187 328 55 308 -65 b 324 -333 308 -235 311 -285 b 336 -346 327 -341 330 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z m 374 -151 b 383 -35 377 -114 379 -75 b 387 60 386 -3 387 29 l 393 63 b 478 89 420 75 448 89 b 511 82 488 89 500 86 b 544 46 534 73 546 62 b 537 17 544 37 543 29 b 374 -151 500 -56 439 -105 z"},accidentalQuarterToneSharpStein:{x_min:0,x_max:300,y_min:-338,y_max:351,ha:689,o:"m 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 l 35 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z"},accidentalThreeQuarterTonesSharpStein:{x_min:-23,x_max:388,y_min:-373,y_max:445,ha:818,o:"m 114 -537 b 138 -475 137 -518 138 -495 b 147 -292 138 -413 144 -353 b 212 -278 168 -287 190 -282 b 243 -444 215 -333 225 -389 b 261 -467 248 -454 251 -465 b 281 -446 272 -469 276 -455 b 292 -347 292 -416 288 -384 b 288 -262 289 -320 288 -291 l 374 -245 b 376 -311 374 -266 374 -288 b 390 -456 379 -357 379 -405 b 416 -396 412 -436 415 -418 b 423 -287 420 -360 423 -323 b 422 -235 423 -269 423 -252 b 451 -229 432 -233 441 -232 b 547 -98 524 -215 547 -199 l 547 -89 b 521 -49 546 -59 540 -49 b 497 -52 516 -49 507 -49 b 418 -68 469 -56 444 -63 b 423 52 419 -29 422 12 b 426 140 425 81 425 109 b 495 160 449 145 472 153 b 552 219 526 170 546 189 b 559 279 557 240 553 262 b 530 341 559 324 552 341 b 490 331 520 341 507 338 b 432 311 471 324 452 318 b 449 552 436 392 442 471 b 452 588 451 563 452 575 b 446 622 452 599 451 611 b 436 641 444 629 448 641 b 418 628 428 641 420 636 b 409 602 413 621 410 611 b 386 297 396 501 390 399 b 297 274 356 288 327 281 b 291 403 295 317 294 360 b 274 550 288 452 284 501 b 259 569 271 564 265 569 b 240 559 253 569 248 563 b 230 537 232 554 230 546 l 230 488 b 233 369 230 448 232 409 b 236 261 236 333 238 297 b 156 245 210 255 183 251 b 154 396 154 295 154 346 b 150 416 154 403 153 410 b 140 438 145 423 150 438 l 138 438 b 118 413 128 436 118 428 b 112 354 118 393 114 374 b 109 238 109 315 109 276 b 49 226 89 233 69 230 b 3 163 16 222 3 202 b 7 91 3 138 9 114 b 29 62 7 69 13 62 b 39 63 32 62 35 63 b 104 73 60 66 82 71 b 101 -10 104 46 102 17 l 92 -132 l 10 -150 b -33 -204 -19 -157 -33 -170 b -19 -310 -32 -240 -19 -274 b -6 -324 -19 -321 -13 -324 b 6 -323 -1 -324 1 -324 b 82 -307 32 -317 58 -311 b 81 -376 82 -330 81 -353 b 114 -537 81 -431 94 -484 z m 294 -92 b 297 -37 295 -73 295 -56 b 300 49 300 -9 300 20 l 300 108 b 379 127 325 114 353 120 b 374 -76 376 59 374 -9 b 294 -92 347 -82 320 -86 z m 154 -120 b 157 20 154 -73 156 -26 b 158 82 158 40 158 62 b 230 95 183 86 206 89 b 225 0 229 63 226 32 b 217 -107 223 -35 220 -71 z"},accidentalBuyukMucennebFlat:{x_min:1.8692317181955784,x_max:287,y_min:-248,y_max:432.4720949426819,ha:680.4720949426819,o:"m 410 128 b 302 239 403 199 363 239 b 259 232 289 239 275 236 b 199 207 239 226 219 216 l 197 206 l 197 243 l 197 251 b 347 317 248 272 298 295 b 376 347 360 324 372 334 b 389 435 387 376 393 405 b 348 454 384 462 377 465 b 202 387 300 432 251 409 b 203 408 203 395 203 402 l 203 431 b 347 490 252 451 300 469 b 376 517 360 495 372 505 b 389 599 387 546 393 572 b 348 616 384 625 377 628 l 203 556 b 196 593 202 569 199 582 b 179 622 193 603 193 622 l 177 622 b 150 588 161 621 150 608 b 147 533 150 570 148 552 b 29 488 108 517 69 503 b 3 455 12 482 3 472 b 12 353 1 422 9 389 b 145 408 56 372 101 389 b 145 363 145 392 145 377 l 29 315 b 3 281 12 310 3 298 b 12 170 1 245 9 209 l 141 226 b 138 166 140 206 138 186 b 114 -199 134 43 115 -76 b 130 -344 114 -246 117 -297 b 141 -357 132 -353 135 -357 b 158 -347 145 -357 151 -354 b 219 -301 177 -331 199 -315 b 413 69 346 -210 413 -88 b 410 128 413 89 413 108 z m 350 35 b 343 6 350 26 348 17 b 180 -163 308 -69 245 -117 b 189 -46 183 -125 184 -86 b 193 49 192 -14 193 17 l 199 52 b 284 78 226 63 253 78 b 317 71 294 78 305 75 b 350 35 340 62 351 50 z"},accidentalBakiyeFlat:{x_min:1.8692317181955784,x_max:287,y_min:-236,y_max:444,ha:680,o:"m 141 -340 b 158 -330 145 -340 151 -337 b 219 -284 177 -314 199 -298 b 413 86 346 -193 413 -71 b 410 145 413 107 413 125 b 302 256 403 216 363 256 b 259 249 289 256 275 253 b 199 225 239 243 219 233 l 197 223 l 197 261 b 199 334 197 285 199 310 b 347 406 249 357 298 382 b 376 439 360 413 372 425 b 390 516 384 465 390 490 b 389 537 390 523 390 530 b 372 564 384 556 382 564 b 348 557 367 564 359 562 b 204 487 300 537 253 510 b 206 518 206 497 206 507 b 196 611 206 549 203 580 b 179 639 193 621 193 639 l 177 639 b 150 605 161 638 150 625 b 145 482 148 564 144 523 l 145 458 b 29 405 107 439 68 420 b 3 366 12 397 3 386 b 12 243 1 325 9 287 b 143 307 56 265 99 285 l 138 183 b 114 -181 134 60 114 -59 b 130 -327 114 -229 117 -279 b 141 -340 132 -336 135 -340 z m 180 -145 b 189 -29 183 -108 184 -69 b 193 66 192 3 193 35 l 199 69 b 284 95 226 81 253 95 b 317 88 294 95 305 92 b 350 52 340 79 351 68 b 343 23 350 43 348 35 b 180 -145 305 -50 245 -99 z"},accidentalKomaSharp:{x_min:0,x_max:300,y_min:-338,y_max:351,ha:689,o:"m 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 l 35 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z"},accidentalKucukMucennebSharp:{x_min:-.15206251809627475,x_max:359,y_min:-420,y_max:343,ha:763,o:"m 236 -605 b 262 -543 256 -583 261 -564 b 269 -423 268 -503 269 -464 b 266 -340 269 -396 268 -367 l 361 -318 b 405 -276 384 -312 399 -298 b 413 -189 412 -248 416 -219 b 395 -164 412 -171 409 -164 b 382 -166 392 -164 387 -164 b 264 -193 343 -176 304 -184 b 269 -102 265 -163 268 -132 b 454 -62 331 -89 392 -78 b 501 -23 477 -58 494 -45 b 517 62 511 6 517 33 b 487 112 517 95 513 112 b 471 111 482 112 477 112 b 274 66 406 95 340 81 b 276 138 275 91 276 114 b 350 154 301 144 325 148 b 402 203 377 160 396 176 b 412 284 408 230 412 258 b 392 311 412 302 406 311 b 372 308 386 311 379 310 b 287 291 343 301 314 297 l 295 405 b 298 441 297 416 298 428 b 292 475 298 452 297 464 b 282 494 289 482 294 494 b 264 481 274 494 266 490 b 255 455 259 474 256 464 b 239 282 248 397 243 340 b 148 268 209 278 179 274 b 62 164 62 252 62 253 l 62 132 b 79 108 60 117 65 108 l 86 108 l 230 130 b 229 92 230 118 229 105 b 228 56 228 79 228 68 b 66 20 173 43 120 32 b 0 -59 6 7 3 1 l 0 -138 b 14 -160 -1 -156 4 -160 b 27 -158 19 -160 23 -160 b 222 -112 92 -141 157 -127 b 220 -203 220 -143 220 -173 b 147 -217 196 -207 171 -213 b 89 -288 92 -228 89 -229 b 95 -347 85 -305 96 -325 b 112 -374 92 -366 98 -374 b 125 -373 117 -374 121 -374 l 220 -351 b 222 -458 220 -386 220 -422 b 236 -605 223 -504 225 -552 z"},accidentalKoron:{x_min:0,x_max:303,y_min:-462.4598053473055,y_max:180,ha:642.4598053473055,o:"m 59 -665 b 72 -649 69 -662 72 -657 b 69 -626 72 -642 69 -634 b 69 -622 69 -625 69 -624 l 69 -600 b 55 -156 60 -456 68 -311 b 86 -170 66 -166 76 -170 b 112 -163 95 -170 104 -166 b 390 -35 204 -120 298 -78 b 436 -1 409 -27 436 -27 b 396 46 436 22 413 33 l 382 55 b 46 243 271 121 157 179 b 12 259 29 253 17 259 b 0 219 1 259 0 248 b 3 -372 0 22 3 -176 b 6 -616 3 -454 6 -536 b 59 -665 6 -638 40 -671 z m 55 199 b 363 24 156 141 258 84 b 55 -118 259 -24 160 -69 z"},accidentalSori:{x_min:0,x_max:434,y_min:-295,y_max:325,ha:620,o:"m 194 -425 b 196 -409 194 -418 196 -413 b 194 -194 196 -337 196 -266 b 364 -127 251 -171 308 -150 b 361 -321 363 -192 364 -256 b 410 -387 360 -357 373 -377 b 413 -373 412 -382 413 -377 b 418 -114 418 -287 418 -200 l 418 -105 b 595 -35 477 -82 536 -59 b 625 0 612 -27 625 -22 b 593 48 624 23 618 39 l 419 117 b 423 370 419 202 423 285 b 426 403 423 382 426 393 b 418 436 426 415 425 426 b 384 468 409 449 399 468 b 369 448 370 468 369 459 b 369 436 369 444 369 441 l 369 428 l 369 423 b 367 138 369 328 367 233 l 353 143 l 192 207 l 192 367 b 173 406 192 383 184 396 b 151 422 167 413 160 422 b 144 420 148 422 147 422 b 137 403 138 416 137 410 l 137 392 l 137 229 b 33 271 102 243 68 256 b 13 276 26 274 19 276 b 0 262 6 276 0 272 b 35 199 1 239 0 212 l 138 160 b 140 -148 138 58 138 -45 b 56 -181 111 -158 84 -170 b 24 -215 35 -189 24 -199 b 29 -235 24 -220 26 -228 b 49 -253 35 -249 42 -253 b 78 -240 59 -253 69 -243 b 140 -216 98 -233 120 -225 l 140 -356 b 194 -425 140 -406 141 -406 z m 194 -125 b 193 138 194 -37 193 50 b 315 89 233 122 275 107 b 366 71 333 84 350 76 b 364 -58 366 27 366 -16 b 194 -125 308 -81 251 -104 z m 419 49 l 526 7 l 485 -10 l 419 -36 z"},articAccentAbove:{x_min:0,x_max:425,y_min:0,y_max:326,ha:326,o:"m 27 1 b 78 12 46 0 62 6 b 347 112 168 45 253 91 b 521 184 409 128 459 167 b 608 259 557 194 589 220 b 612 274 611 265 612 271 b 598 292 612 281 608 287 b 477 347 559 312 518 331 b 176 465 374 384 275 425 b 156 469 168 468 161 469 b 125 456 145 469 137 465 b 53 370 96 432 78 399 b 45 353 48 363 45 357 b 68 333 45 344 52 337 b 360 225 166 298 262 261 b 192 154 302 203 249 171 b 13 36 120 132 53 105 b 0 13 9 29 0 22 l 0 9 b 16 0 3 1 10 0 l 26 0 b 27 1 27 0 27 0 z"},articAccentBelow:{x_min:0,x_max:425,y_min:-326,y_max:0,ha:326,o:"m 26 -469 l 27 -469 b 78 -458 46 -469 62 -464 b 347 -357 168 -426 253 -380 b 521 -285 409 -341 459 -302 b 608 -210 557 -276 589 -249 b 612 -196 611 -204 612 -200 b 598 -179 612 -189 608 -183 b 477 -122 559 -157 518 -138 b 176 -4 374 -85 275 -45 b 156 0 168 -1 161 0 b 125 -13 145 0 137 -4 b 53 -99 96 -37 78 -71 b 45 -117 48 -107 45 -112 b 68 -137 45 -125 52 -132 b 360 -245 166 -171 262 -209 b 192 -315 302 -266 249 -300 b 13 -433 120 -337 53 -366 b 0 -456 9 -442 0 -448 l 0 -461 b 16 -469 3 -468 10 -469 z"},articTenutoAbove:{x_min:.35192668236256364,x_max:471.1238660564107,y_min:0,y_max:56,ha:56,o:"m 137 0 b 197 1 156 0 179 1 b 409 6 268 1 338 6 b 482 4 432 6 459 6 b 556 0 508 3 534 0 b 651 10 588 0 621 3 b 678 27 662 12 678 10 b 654 59 680 45 672 53 b 511 75 606 73 560 73 b 255 81 426 78 341 81 b 160 79 222 81 193 79 l 36 79 b 1 71 24 78 7 85 b 19 32 -3 56 9 43 b 45 16 26 24 36 20 b 137 0 76 3 108 0 z"},articTenutoBelow:{x_min:.35192668236256364,x_max:471.1238660564107,y_min:-59,y_max:-3,ha:56,o:"m 137 -85 b 197 -84 156 -85 179 -84 b 409 -79 268 -84 338 -79 b 482 -81 432 -79 459 -79 b 556 -85 508 -82 534 -85 b 651 -75 588 -85 621 -82 b 678 -58 662 -73 678 -75 b 654 -26 680 -40 672 -32 b 511 -10 606 -12 560 -12 b 255 -4 426 -7 341 -4 b 160 -6 222 -4 193 -6 l 36 -6 b 1 -14 24 -7 7 0 b 19 -53 -3 -29 9 -42 b 45 -69 26 -60 36 -65 b 137 -85 76 -82 108 -85 z"},articStaccatoAbove:{x_min:1.4151102965496913,x_max:112,y_min:0,y_max:156,ha:156,o:"m 98 0 b 132 23 109 0 122 7 b 161 112 150 50 161 79 b 158 148 161 124 161 137 b 125 186 154 167 131 167 b 63 225 117 215 85 216 b 23 197 45 222 30 219 b 3 91 12 163 12 127 b 19 66 0 79 4 69 b 65 27 40 62 53 46 b 98 0 76 9 88 0 z"},articStaccatoBelow:{x_min:1.4151102965496913,x_max:112.08403222864916,y_min:-156,y_max:0,ha:156,o:"m 132 -202 b 161 -112 151 -174 163 -145 b 158 -76 161 -101 161 -88 b 125 -39 153 -58 131 -58 b 63 0 115 -10 85 -9 b 23 -27 45 -3 30 -6 b 3 -134 12 -62 10 -98 b 19 -158 0 -145 4 -156 b 65 -197 40 -164 53 -179 b 98 -225 75 -216 88 -225 b 132 -202 109 -225 122 -217 z"},articStaccatissimoAbove:{x_min:0,x_max:139,y_min:0,y_max:411,ha:411,o:"m 104 0 b 144 115 143 29 138 75 b 197 423 158 217 180 320 b 200 454 199 433 200 444 b 181 540 200 482 193 513 b 112 592 167 573 141 592 b 55 567 92 592 72 585 b 0 490 32 546 3 527 l 0 484 b 27 279 14 416 14 347 b 84 20 43 193 52 104 b 96 0 86 13 92 6 z"},articStaccatissimoBelow:{x_min:0,x_max:139,y_min:-411,y_max:0,ha:411,o:"m 88 -592 b 145 -567 108 -592 128 -585 b 200 -490 168 -546 197 -527 l 200 -484 b 173 -279 186 -416 186 -347 b 117 -20 157 -193 148 -104 b 104 0 114 -13 108 -6 l 96 0 b 56 -115 58 -29 62 -75 b 3 -423 42 -217 20 -320 b 0 -454 1 -433 0 -444 b 19 -540 0 -482 7 -513 b 88 -592 33 -573 59 -592 z"},articMarcatoAbove:{x_min:.04121419527862119,x_max:396,y_min:0,y_max:328.0000000000001,ha:328.0000000000001,o:"m 477 0 b 510 13 488 0 500 6 b 570 124 546 40 563 81 b 547 183 570 147 560 166 b 356 422 487 265 405 330 b 346 442 354 429 350 436 l 346 444 b 318 465 340 456 330 464 l 312 469 b 274 449 294 480 284 461 b 242 413 262 438 253 425 b 56 196 177 343 112 274 b 1 56 26 154 13 105 b 27 20 -4 35 9 20 b 42 23 32 20 37 20 b 84 53 59 29 72 39 b 255 269 141 125 193 200 b 275 229 262 255 266 242 b 448 14 324 151 390 86 b 477 0 456 4 467 0 z"},articMarcatoBelow:{x_min:0,x_max:395.9587858047214,y_min:-328.0000000000001,y_max:0,ha:328.0000000000001,o:"m 258 -469 b 297 -449 276 -480 287 -461 b 328 -413 308 -438 317 -425 b 514 -196 393 -343 458 -274 b 569 -56 544 -154 557 -105 b 543 -20 575 -35 562 -20 b 528 -23 539 -20 533 -20 b 487 -53 511 -29 498 -39 b 315 -269 429 -125 377 -200 b 295 -229 308 -255 304 -242 b 122 -14 246 -151 180 -86 b 94 0 114 -4 104 0 b 60 -13 82 0 71 -6 b 0 -124 24 -40 7 -81 b 23 -183 0 -147 10 -166 b 215 -422 84 -265 166 -330 b 225 -442 216 -429 220 -436 l 225 -444 b 252 -465 230 -456 240 -464 z"},fermataAbove:{x_min:-.04550444040404433,x_max:472,y_min:2.015071727506986,y_max:454,ha:451.984928272493,o:"m 39 10 b 78 108 66 37 71 73 b 163 311 92 181 111 252 b 284 423 199 353 239 392 b 373 458 312 444 340 454 b 433 431 395 458 410 446 b 603 153 530 361 596 276 b 595 121 603 144 595 131 l 595 88 b 602 50 596 75 589 55 b 639 73 619 43 631 60 b 651 102 645 82 648 92 b 667 194 660 132 662 163 b 680 278 671 222 672 248 b 560 567 680 386 638 481 b 396 654 508 625 452 649 b 291 632 364 654 325 644 b 161 526 235 613 200 566 b 4 249 85 446 26 357 b 4 174 0 222 -3 196 b 10 19 4 124 4 69 b 29 4 12 6 16 0 b 39 10 35 4 33 4 z m 338 37 b 370 40 350 36 357 36 b 380 75 387 40 380 43 b 389 94 382 79 382 85 b 356 132 389 111 374 122 b 269 154 328 147 300 156 b 225 125 252 154 228 157 b 261 48 222 81 232 56 b 338 37 287 40 312 40 z"},fermataBelow:{x_min:-.310835055998654,x_max:518.570567335755,y_min:-430,y_max:-.9161449836506543,ha:429.08385501634933,o:"m 344 -615 b 500 -543 402 -602 452 -576 b 713 -253 605 -471 661 -364 b 746 -98 737 -204 750 -153 b 727 -59 744 -82 744 -59 b 688 -88 711 -59 694 -68 b 678 -109 687 -96 683 -102 b 562 -314 648 -183 611 -252 b 387 -439 516 -373 458 -416 b 328 -449 367 -446 347 -449 b 180 -386 274 -449 225 -423 b 69 -179 111 -330 69 -262 b 75 -121 69 -160 71 -141 b 84 -58 78 -101 84 -79 b 82 -39 84 -52 84 -45 b 68 -1 79 -26 82 -4 b 26 -32 49 0 33 -12 b 20 -52 24 -39 22 -45 b 0 -223 9 -107 -3 -161 b 141 -553 1 -348 27 -468 b 304 -619 192 -590 243 -619 b 344 -615 317 -619 330 -618 z m 415 -190 b 435 -157 429 -192 435 -184 b 308 -27 435 -86 379 -27 b 271 -46 287 -27 272 -35 b 269 -69 269 -55 269 -62 b 364 -183 269 -128 302 -170 z"},fermataLongAbove:{x_min:0,x_max:591.4911182523068,y_min:-6,y_max:337.10134960318186,ha:343.10134960318186,o:"m 20 -9 b 36 14 29 -9 35 3 b 49 109 45 45 49 78 b 48 143 49 121 49 131 b 42 312 40 200 45 256 b 63 338 42 331 46 338 b 68 340 65 338 66 338 b 279 333 138 336 209 334 b 760 317 439 330 599 323 b 783 298 775 317 782 315 l 796 161 b 814 17 801 115 802 68 b 851 144 840 45 855 102 b 824 396 842 228 834 312 b 760 468 816 459 812 467 l 55 485 b 1 433 12 487 1 478 l 1 387 b 0 203 1 325 0 264 b 9 17 0 141 3 79 b 20 -9 9 7 6 -9 z m 403 3 b 439 6 413 3 425 4 b 477 42 464 9 474 22 b 478 62 478 49 478 55 l 478 84 b 465 160 478 109 478 135 b 449 173 461 167 459 173 b 354 105 386 179 354 156 b 359 71 354 95 356 84 b 360 65 360 69 360 66 b 403 3 372 14 373 3 z"},fermataLongBelow:{x_min:0,x_max:602,y_min:-335,y_max:7,ha:342,o:"m 793 -482 b 851 -444 822 -482 842 -471 b 867 -357 860 -416 867 -387 b 865 -336 867 -350 867 -343 b 851 -189 858 -287 855 -238 b 832 -32 847 -135 840 -84 b 824 -17 832 -26 832 -17 l 822 -17 b 805 -30 816 -19 806 -20 b 798 -88 802 -50 798 -69 b 805 -292 798 -157 801 -225 b 772 -327 806 -318 801 -327 b 360 -324 635 -327 497 -325 b 78 -327 265 -323 171 -327 b 50 -304 59 -327 50 -320 l 50 -297 b 62 -187 55 -261 60 -225 b 71 -60 62 -144 71 -102 b 68 -20 71 -48 71 -33 b 53 10 66 -10 69 10 l 52 10 b 22 -22 37 9 24 -1 b 14 -121 17 -55 16 -89 b 0 -359 10 -200 0 -279 b 6 -452 0 -390 3 -420 b 42 -481 9 -478 20 -481 l 415 -481 l 415 -482 z m 409 -183 b 454 -179 420 -183 435 -181 b 505 -124 487 -176 504 -158 b 505 -89 507 -112 505 -101 b 507 -58 505 -79 507 -68 b 505 -42 507 -52 507 -48 b 485 -10 503 -29 501 -10 b 448 -9 472 -9 461 -9 b 380 -22 425 -9 402 -12 b 363 -46 372 -27 363 -35 l 363 -49 b 364 -114 363 -71 361 -94 b 409 -183 374 -168 377 -183 z"},fermataVeryLongAbove:{x_min:0,x_max:715,y_min:-14.096346766617495,y_max:437,ha:451.0963467666175,o:"m 26 -20 b 42 -4 36 -22 39 -12 b 49 53 49 14 49 33 l 49 448 b 69 478 49 467 52 478 l 72 478 b 81 480 75 478 78 478 b 144 477 102 477 122 477 l 207 477 b 943 471 452 477 698 471 b 978 442 966 471 976 467 b 989 99 985 327 985 213 b 999 -19 991 60 995 22 b 1030 62 1028 6 1030 35 b 1021 507 1028 210 1025 359 b 1012 596 1021 537 1017 567 b 976 624 1009 618 998 624 b 507 626 819 624 662 625 b 46 629 353 628 200 629 b 7 590 19 629 7 618 b 0 101 7 428 0 264 b 16 -4 0 65 13 32 b 26 -20 17 -10 22 -19 z m 187 -9 b 207 30 206 -7 204 14 b 207 55 209 37 207 46 b 200 240 210 117 197 179 b 219 262 200 256 203 262 l 223 262 b 456 252 301 258 379 255 l 772 239 b 804 209 792 238 802 235 b 818 69 806 163 809 115 b 834 -4 821 46 816 19 b 857 56 852 13 857 35 b 851 183 857 99 858 141 b 827 360 841 242 841 301 b 786 390 821 383 809 389 b 189 409 588 403 387 402 b 153 377 163 409 153 400 b 173 27 153 259 150 143 b 187 -9 176 13 177 -9 z m 478 3 b 536 10 491 3 510 6 b 582 60 569 14 580 32 l 582 89 l 580 89 b 580 117 580 98 582 107 b 540 171 577 158 572 171 b 521 171 534 171 528 170 b 459 166 500 170 480 168 b 423 132 436 164 423 154 b 428 88 423 118 425 102 b 478 3 438 22 439 4 z"},fermataVeryLongBelow:{x_min:-.012345679012345682,x_max:686.4443937550029,y_min:-427,y_max:30,ha:457,o:"m 56 -615 b 282 -612 132 -612 207 -613 b 924 -606 497 -608 710 -606 b 973 -570 953 -606 968 -593 b 988 -455 984 -533 991 -494 b 982 -262 984 -390 982 -327 b 976 -69 982 -197 981 -134 b 976 -14 975 -50 976 -33 b 966 43 976 4 975 23 b 940 20 953 37 943 35 b 933 -76 936 -12 933 -45 b 935 -121 933 -91 933 -107 b 940 -307 940 -183 940 -245 l 940 -435 b 919 -458 940 -451 935 -458 b 894 -459 910 -458 903 -458 b 206 -467 665 -461 435 -467 b 88 -467 167 -467 127 -468 b 45 -425 45 -467 42 -465 b 46 -400 46 -416 46 -408 b 43 -325 46 -376 43 -350 b 42 -59 42 -236 42 -148 b 22 17 42 -32 36 -6 b 0 -27 -1 7 0 -10 b 7 -420 0 -158 7 -289 l 7 -474 b 16 -579 7 -510 7 -544 b 56 -615 22 -603 27 -615 z m 789 -390 b 835 -357 816 -392 829 -380 b 850 -256 844 -324 850 -291 b 848 -230 850 -248 850 -239 b 845 -135 845 -199 845 -167 l 845 -72 b 837 23 845 -40 848 -9 b 809 -27 809 14 809 -7 l 809 -222 b 788 -242 809 -238 805 -242 l 203 -229 b 180 -209 186 -229 180 -223 l 180 -160 b 179 -115 180 -145 180 -131 b 179 -50 177 -94 179 -72 b 163 24 179 -26 176 0 b 137 -6 145 19 140 10 b 134 -39 134 -17 134 -27 b 138 -105 134 -60 137 -82 l 138 -197 b 145 -343 138 -246 138 -294 b 179 -377 148 -364 151 -377 b 789 -390 383 -377 586 -380 z m 480 -164 b 566 -65 549 -164 566 -140 b 527 1 566 -10 564 1 b 436 -71 426 1 436 -9 l 436 -88 l 436 -143 b 454 -163 436 -153 439 -161 b 480 -164 464 -163 472 -164 z"},fermataShortAbove:{x_min:0,x_max:545,y_min:-18.08551453529649,y_max:348,ha:366.0855145352965,o:"m 16 -26 b 36 -9 26 -27 30 -16 b 354 340 143 107 249 223 b 369 348 360 346 364 348 b 382 341 373 348 377 346 l 530 199 b 743 0 599 131 672 68 b 753 -7 747 -3 750 -7 b 762 -1 756 -7 759 -6 b 785 84 776 10 785 48 b 768 150 785 112 779 138 l 399 491 b 379 501 392 498 384 501 b 357 488 372 501 364 495 b 27 137 248 370 141 251 b 1 84 12 121 1 105 b 3 69 1 79 1 75 b 0 55 1 65 0 59 b 9 1 0 36 9 20 b 16 -26 10 -7 3 -22 z m 357 24 b 367 27 360 24 363 24 b 431 118 422 42 431 49 b 429 151 431 130 431 141 b 400 193 428 171 429 193 b 333 147 359 193 333 176 b 341 42 333 111 337 78 b 357 24 343 30 346 24 z"},fermataShortBelow:{x_min:0,x_max:565,y_min:-335,y_max:10,ha:345,o:"m 386 -482 b 422 -455 395 -482 405 -474 b 732 -117 526 -343 631 -232 b 814 12 765 -79 799 -42 b 752 -22 780 14 768 -7 b 436 -320 645 -120 540 -219 b 419 -328 429 -325 425 -328 b 400 -318 413 -328 408 -325 b 35 0 279 -212 157 -105 b 16 14 29 4 23 14 b 7 12 13 14 10 14 b 0 -3 1 7 0 1 b 7 -23 0 -10 3 -17 b 20 -48 12 -30 14 -39 b 167 -238 60 -117 115 -177 b 351 -455 229 -310 289 -383 b 386 -482 367 -474 377 -482 z m 382 -213 b 406 -207 389 -213 396 -210 b 452 -156 431 -199 446 -180 b 461 -85 456 -132 458 -108 b 448 -32 461 -66 454 -49 b 418 -6 442 -12 431 -6 b 397 -9 410 -6 405 -7 b 348 -50 376 -14 350 -14 b 356 -170 348 -91 354 -130 b 382 -213 357 -199 363 -213 z"},breathMarkComma:{x_min:0,x_max:148,y_min:0,y_max:275,ha:275,o:"m 120 0 b 187 78 156 20 174 48 b 213 209 206 121 213 164 b 206 294 213 238 210 265 b 140 390 200 337 171 367 b 122 396 134 395 128 396 b 68 382 105 396 85 384 b 46 379 60 382 53 382 b 0 328 12 369 0 357 b 1 311 0 323 1 317 b 30 210 4 275 22 243 b 66 167 39 179 46 167 b 94 171 73 167 82 168 b 143 180 109 174 124 180 b 160 179 148 180 154 180 b 120 66 124 145 120 107 b 120 0 120 45 121 23 z"},breathMarkUpbow:{x_min:0,x_max:254,y_min:0,y_max:595,ha:595,o:"m 233 0 b 256 48 251 14 253 30 b 272 183 264 92 265 138 b 311 455 289 274 295 364 b 350 716 327 541 341 628 b 366 815 354 749 366 782 b 359 857 366 829 363 842 b 327 815 334 852 330 832 b 302 674 315 769 310 721 b 248 357 288 567 269 462 b 225 226 240 314 242 268 b 210 251 212 232 213 243 b 69 721 163 408 117 564 b 32 835 58 760 53 801 b 20 851 29 841 27 851 b 14 850 19 851 16 851 b 0 828 6 847 0 838 l 0 825 b 12 765 1 804 7 785 b 194 125 73 552 132 338 b 233 0 206 84 213 42 z"},caesura:{x_min:0,x_max:565.5831864753837,y_min:-.09016994374947417,y_max:562.4481112129314,ha:562.5382811566809,o:"m 0 76 b 49 122 24 92 37 107 b 444 613 180 287 305 455 b 528 770 484 660 518 708 b 531 792 530 778 531 785 b 524 808 531 799 530 805 b 490 792 513 815 498 802 b 390 683 456 756 420 721 b 48 262 275 543 164 400 b 0 76 0 207 7 145 z m 226 1 b 248 13 238 -4 243 7 l 353 137 b 759 638 490 302 632 464 b 814 805 795 688 819 740 b 779 786 796 805 788 796 b 628 609 724 732 678 668 b 310 242 523 485 416 363 b 217 69 265 190 217 140 b 222 30 217 58 219 45 b 222 23 222 29 220 26 b 220 12 222 20 220 16 b 226 1 220 7 222 3 z"},caesuraCurved:{x_min:0,x_max:386,y_min:-10,y_max:584,ha:594,o:"m 180 -14 b 246 14 213 -13 230 0 b 347 144 288 52 315 99 b 526 471 420 246 488 350 b 556 671 546 537 556 603 b 543 798 556 713 553 756 b 504 837 537 822 521 828 b 490 841 500 840 494 841 b 472 832 482 841 477 838 b 406 678 436 785 406 737 b 410 638 406 665 408 652 b 425 511 419 595 425 553 b 315 186 425 395 387 287 b 180 -14 271 122 228 58 z m 14 24 b 49 39 29 24 40 32 b 120 114 76 60 99 85 b 216 276 156 166 184 223 b 317 626 281 384 317 501 b 315 664 317 639 317 651 b 301 773 314 701 311 737 b 262 808 295 795 278 808 b 245 799 256 808 249 805 b 170 641 209 750 170 706 b 171 621 170 634 170 628 b 177 511 176 585 177 549 b 114 229 177 415 160 320 b 0 26 79 161 42 95 b 14 24 6 24 10 24 z"},restMaxima:{x_min:0,x_max:366,y_min:-255,y_max:255,ha:510,o:"m 397 -367 b 504 -343 436 -367 468 -347 b 518 -318 516 -341 518 -330 b 527 -30 518 -217 527 -117 b 526 33 527 -7 527 13 l 526 301 b 501 350 526 323 520 341 b 428 367 477 361 452 367 b 374 359 410 367 393 364 b 357 333 361 354 357 347 b 356 91 357 252 356 171 l 356 30 b 340 -307 357 -82 346 -194 b 397 -367 337 -354 350 -367 z m 46 -357 b 58 -356 49 -357 53 -357 b 154 -333 91 -351 121 -338 b 173 -305 168 -330 173 -320 l 173 302 b 132 356 173 330 157 348 b 68 364 112 363 89 364 b 3 304 19 363 1 348 l 3 4 l 0 4 b 1 -302 0 -98 0 -200 b 46 -357 1 -331 16 -357 z"},restDoubleWhole:{x_min:0,x_max:122,y_min:0,y_max:249,ha:249,o:"m 43 0 b 58 1 48 0 52 0 b 124 20 81 6 102 17 b 176 96 173 27 176 58 b 173 220 174 138 173 179 b 176 304 173 248 176 276 b 140 353 176 331 163 346 b 95 359 125 356 111 359 b 32 346 73 359 52 354 b 0 315 20 340 0 337 b 1 243 0 291 1 268 l 1 174 l 4 174 l 4 48 b 43 0 4 16 17 0 z"},restWhole:{x_min:.8908513171538642,x_max:500,y_min:-120,y_max:14,ha:134,o:"m 356 -173 l 356 -171 l 642 -171 b 719 -115 680 -171 717 -145 b 720 -82 719 -104 720 -92 b 711 -20 720 -60 719 -40 b 672 17 704 0 694 10 b 649 20 664 20 657 20 b 605 17 634 20 621 17 b 92 19 433 17 262 17 b 29 7 69 20 49 12 b 9 -17 12 4 9 -6 b 10 -43 9 -26 10 -35 b 1 -84 10 -58 3 -72 b 76 -173 0 -147 7 -173 z"},restWholeLegerLine:{x_min:-196.7269258015421,x_max:685,y_min:-157,y_max:29,ha:186,o:"m 96 -226 b 167 -223 121 -226 144 -225 b 300 -222 207 -222 252 -222 l 444 -222 b 660 -217 520 -222 595 -222 b 746 -131 703 -216 746 -200 b 744 -62 746 -108 747 -85 b 743 -39 743 -53 743 -46 b 789 -14 743 -16 752 -17 b 883 -16 821 -13 851 -16 b 965 -9 910 -16 937 -14 b 986 3 972 -7 986 -10 l 986 6 b 963 35 984 17 982 32 b 887 42 937 39 913 42 b 39 27 605 42 321 33 l -76 27 b -261 20 -138 27 -200 26 b -282 14 -269 20 -279 23 b -271 -7 -287 4 -276 -1 b -209 -27 -253 -23 -230 -24 b -153 -30 -190 -30 -173 -30 b -48 -29 -118 -30 -82 -27 b 6 -32 -22 -29 -6 -27 b 1 -72 3 -43 1 -58 b 4 -167 1 -105 7 -140 b 53 -223 3 -207 14 -217 b 96 -226 68 -226 82 -226 z"},restHalf:{x_min:0,x_max:518.3998530468286,y_min:0,y_max:162,ha:162,o:"m 98 0 l 556 0 b 665 1 592 0 629 0 b 746 82 720 3 743 29 b 736 174 749 114 740 144 b 670 232 729 215 708 232 b 570 229 636 232 603 229 b 356 233 498 229 426 233 l 73 233 b 0 179 19 233 0 220 b 1 154 0 171 0 164 b 6 95 4 135 6 115 b 98 0 3 27 29 0 z"},restHalfLegerLine:{x_min:-120,x_max:448.2056815990121,y_min:-20,y_max:143,ha:163,o:"m 397 -29 b 482 -23 426 -29 455 -27 b 526 -24 497 -24 511 -24 b 608 -17 554 -24 582 -23 b 645 -1 622 -14 644 -17 b 615 26 648 13 629 20 b 595 32 608 29 602 30 b 526 37 572 35 549 37 b 498 36 517 37 507 37 b 471 35 487 35 478 35 b 445 53 451 35 445 39 b 449 89 445 60 446 73 l 454 117 b 373 206 456 173 428 206 b 324 204 356 206 340 206 b 209 203 287 203 248 203 b 46 193 156 203 101 202 b 16 170 32 190 19 187 b 9 112 13 151 9 131 b 14 78 9 101 10 89 b 19 59 17 71 19 63 b -4 45 19 49 12 45 l -10 45 b -150 33 -58 45 -104 46 b -173 22 -158 32 -173 33 l -173 19 b -151 -13 -170 6 -168 -10 b -117 -17 -140 -16 -128 -17 b 118 -13 -37 -17 39 -13 b 397 -29 213 -13 308 -29 z"},restQuarter:{x_min:-.3784452492533808,x_max:263,y_min:-415,y_max:415,ha:830,o:"m 151 -596 b 164 -563 163 -589 161 -575 b 160 -546 164 -557 161 -552 b 124 -396 148 -495 135 -446 b 122 -380 122 -390 122 -384 b 199 -255 122 -331 158 -272 b 228 -256 209 -249 217 -253 b 324 -346 274 -271 298 -310 b 353 -369 331 -356 341 -369 b 360 -367 356 -369 357 -369 b 379 -336 373 -361 379 -348 l 377 -325 b 344 -232 372 -292 366 -258 b 249 -58 301 -180 278 -117 b 242 -36 245 -49 242 -42 b 258 -7 242 -26 248 -17 b 328 78 284 20 311 45 b 354 158 344 104 354 131 b 337 216 354 177 350 196 b 213 435 294 288 249 359 b 115 575 189 487 158 536 b 78 598 105 585 92 598 b 59 592 72 598 66 596 b 39 562 45 583 39 572 b 53 527 39 550 45 539 b 168 344 98 469 125 402 b 187 307 181 328 187 317 b 153 269 187 294 176 284 b 62 213 122 252 91 235 b 40 180 48 203 40 192 b 46 158 40 173 43 166 b 99 65 60 125 79 95 b 183 -79 131 20 160 -29 b 156 -86 173 -88 164 -85 b 0 -261 58 -99 -7 -173 b 96 -557 10 -366 49 -464 b 124 -585 102 -569 109 -580 b 145 -598 132 -588 138 -598 b 151 -596 147 -598 150 -598 z"},rest8th:{x_min:0,x_max:289,y_min:-260,y_max:261,ha:521,o:"m 164 -374 b 212 -340 190 -373 203 -357 b 276 -190 238 -292 258 -242 b 410 285 333 -36 359 128 b 416 314 413 294 416 304 l 416 321 b 393 354 415 341 410 354 b 382 353 389 354 386 354 b 292 311 347 347 315 333 b 174 225 256 276 216 251 b 157 219 168 222 163 219 b 140 228 151 219 145 222 b 131 246 134 233 131 240 b 135 262 131 252 132 256 b 147 298 141 272 147 285 b 127 367 147 323 154 354 b 94 376 114 373 102 376 b 48 336 75 376 63 363 b 3 181 20 288 12 235 b 0 150 1 170 0 160 b 109 24 0 84 35 24 b 171 36 127 24 148 27 b 289 101 213 52 248 75 b 164 -374 256 -62 193 -213 z"},rest16th:{x_min:0,x_max:333,y_min:-328.283950617284,y_max:244,ha:572.2839506172841,o:"m 209 -471 b 246 -458 222 -477 236 -468 b 307 -338 279 -425 300 -384 b 324 -226 312 -301 317 -262 b 428 161 350 -94 386 35 b 480 318 445 215 480 259 b 467 347 480 331 477 341 b 445 351 461 350 454 351 b 408 337 432 351 419 347 b 402 333 405 336 403 334 b 223 215 344 294 294 245 b 236 259 229 233 235 246 b 238 276 238 265 238 271 b 212 338 238 302 226 334 b 193 341 206 340 199 341 b 86 289 156 341 104 317 b 59 180 66 255 59 217 b 156 27 59 76 92 27 b 236 46 179 27 204 35 b 338 101 271 59 298 82 b 289 -49 312 49 302 0 b 196 -122 276 -99 235 -107 b 176 -114 187 -127 176 -127 l 176 -111 b 157 -53 177 -88 164 -72 b 69 -9 141 -7 101 -16 b 17 -48 43 -3 29 -27 b 0 -127 4 -73 0 -99 b 6 -186 0 -147 1 -167 b 82 -294 17 -262 37 -294 b 160 -276 102 -294 128 -289 b 219 -242 181 -268 203 -259 b 236 -230 223 -236 229 -230 b 243 -232 239 -230 240 -230 b 235 -275 248 -246 239 -261 b 202 -456 220 -334 202 -395 b 209 -471 202 -462 203 -468 z"},rest32nd:{x_min:0,x_max:347,y_min:-497.5023916875033,y_max:483,ha:980.5023916875033,o:"m 177 -716 b 217 -690 194 -720 209 -704 b 233 -655 225 -680 230 -668 b 292 -390 253 -567 275 -480 b 361 -48 312 -275 336 -161 b 452 400 393 102 422 252 b 497 629 467 477 482 553 b 500 647 498 635 500 641 b 480 691 500 665 492 684 b 464 696 475 694 469 696 b 418 674 448 696 431 685 l 361 626 b 333 611 353 618 343 612 b 308 629 325 611 317 616 b 239 667 292 651 265 661 b 204 670 228 668 216 670 b 86 559 141 670 95 628 b 85 537 86 552 85 544 b 107 416 85 495 95 455 b 161 372 114 389 134 372 b 174 373 166 372 170 372 b 226 383 192 374 209 377 b 387 478 285 402 330 444 b 364 386 379 444 364 415 b 276 271 364 323 320 298 b 265 266 272 268 268 266 b 252 276 261 266 256 269 b 143 333 229 311 186 333 b 107 327 130 333 118 330 b 43 243 62 314 46 291 b 58 145 43 210 52 179 b 150 63 68 92 99 63 b 315 132 213 63 259 98 b 266 -58 297 63 281 4 b 207 -101 259 -91 230 -96 b 186 -66 186 -107 199 -75 b 180 -50 181 -63 183 -55 b 101 -3 160 -23 135 -3 b 9 -66 59 -3 20 -32 b 0 -118 3 -84 0 -101 b 10 -196 0 -144 6 -170 b 104 -287 20 -256 52 -287 b 137 -282 114 -287 125 -287 b 184 -269 151 -281 171 -269 b 196 -275 190 -269 193 -271 b 199 -287 197 -278 199 -282 b 184 -343 199 -304 189 -325 b 181 -348 184 -346 183 -347 b 134 -595 158 -429 131 -508 b 156 -677 134 -624 150 -648 b 177 -716 158 -693 160 -713 z"},rest64th:{x_min:0,x_max:428,y_min:-720,y_max:473.6797408388932,ha:1193.6797408388932,o:"m 200 -1037 b 229 -1012 215 -1037 222 -1025 b 238 -984 233 -1004 236 -994 b 282 -780 248 -914 265 -848 b 386 -369 317 -644 354 -507 b 491 104 422 -212 451 -53 b 600 541 528 249 550 399 b 616 629 611 570 616 599 b 600 680 616 648 615 671 b 550 665 586 687 566 677 b 480 618 527 649 501 635 b 464 611 474 613 468 611 b 448 622 458 611 454 615 b 366 662 425 651 397 662 b 331 658 354 662 343 661 b 242 572 285 647 253 619 b 236 528 239 557 236 543 b 266 400 236 484 251 442 b 325 373 274 377 301 373 b 436 409 366 373 403 383 l 494 452 b 474 360 485 416 474 389 b 383 248 474 297 435 269 b 320 328 377 288 351 310 b 276 341 305 337 291 341 b 186 269 235 341 194 311 b 181 230 183 256 181 243 b 187 153 181 204 186 179 b 279 63 192 86 233 63 b 304 65 288 63 295 63 b 416 115 344 72 379 92 b 387 -14 406 69 397 27 b 320 -95 380 -52 369 -86 b 318 -79 320 -89 320 -84 b 223 0 305 -29 271 0 b 122 -81 171 0 135 -30 b 118 -127 120 -96 118 -112 l 118 -196 b 137 -242 118 -215 125 -229 b 209 -275 157 -266 181 -275 b 249 -269 222 -275 235 -274 b 318 -248 272 -264 294 -255 b 281 -390 315 -301 292 -344 b 276 -400 279 -393 279 -397 b 259 -420 272 -408 266 -416 b 246 -429 255 -425 251 -429 b 233 -415 242 -429 238 -426 b 176 -359 225 -389 200 -372 b 121 -346 158 -348 140 -346 b 14 -408 73 -346 27 -370 b 0 -498 4 -438 0 -468 b 6 -564 0 -520 3 -543 b 91 -635 12 -611 45 -635 b 131 -629 104 -635 117 -634 b 223 -590 163 -622 190 -603 b 166 -824 203 -671 189 -747 b 148 -912 157 -852 148 -881 b 156 -955 148 -926 150 -940 b 177 -1008 161 -972 170 -991 b 200 -1037 181 -1020 183 -1037 z"},rest128th:{x_min:.6717818579024267,x_max:491,y_min:-711,y_max:719,ha:1430,o:"m 233 -1015 b 271 -956 256 -1002 266 -981 l 314 -723 b 393 -350 337 -598 366 -474 b 543 312 442 -128 492 91 b 687 841 583 490 635 665 b 707 958 698 880 707 919 b 706 986 707 968 707 976 b 688 1025 704 999 704 1024 b 670 1027 683 1025 677 1027 b 629 1007 655 1027 639 1022 b 559 945 613 981 586 968 b 541 1004 553 968 559 991 b 456 1035 516 1024 488 1035 b 419 1030 444 1035 431 1034 b 344 953 379 1018 353 995 b 340 900 341 936 340 917 b 341 847 340 881 341 864 b 380 779 340 815 354 793 b 464 763 406 765 435 762 b 592 814 510 763 549 786 b 546 660 575 757 556 710 b 480 585 537 619 517 598 b 478 599 480 590 478 595 b 386 678 472 641 428 678 b 294 612 343 678 304 651 b 279 477 282 567 278 521 b 363 395 281 428 317 395 b 380 396 369 395 374 395 b 488 436 416 403 449 419 b 384 233 469 357 468 275 b 359 291 373 252 377 276 b 282 318 337 310 310 318 b 181 264 243 318 203 298 b 154 107 153 216 154 161 b 242 6 154 42 187 6 b 278 10 253 6 265 7 b 408 88 330 22 366 55 b 387 -1 400 56 393 27 b 301 -112 379 -55 354 -94 b 289 -65 297 -95 302 -79 b 219 -32 269 -42 245 -32 b 183 -37 207 -32 196 -35 b 112 -109 144 -46 121 -71 b 105 -219 104 -145 108 -183 b 186 -315 101 -276 134 -315 b 230 -307 199 -315 215 -312 b 324 -256 264 -295 292 -275 b 180 -491 323 -383 266 -471 b 183 -459 180 -480 180 -469 b 184 -442 184 -454 184 -448 l 184 -436 b 135 -369 184 -403 170 -383 b 102 -363 125 -364 114 -363 b 29 -399 73 -363 45 -376 b 1 -556 -4 -448 6 -503 b 109 -670 -4 -625 43 -670 b 140 -667 118 -670 130 -668 b 253 -616 180 -658 213 -638 b 238 -688 248 -644 242 -665 b 192 -959 220 -779 192 -867 b 193 -992 192 -971 192 -981 b 210 -1024 194 -1014 199 -1024 b 233 -1015 216 -1024 223 -1021 z"},dynamicPiano:{x_min:-49,x_max:326.5019318364244,y_min:-142,y_max:515,ha:657,o:"m -56 -204 b -42 -202 -52 -204 -46 -203 b -19 -194 -35 -202 -26 -197 b 147 -138 35 -170 91 -151 b 249 -58 194 -127 223 -95 b 262 -29 255 -50 262 -39 b 258 -17 262 -24 261 -20 b 232 -7 252 -10 242 -7 b 210 -12 225 -7 217 -9 b 125 -40 184 -23 157 -30 b 183 140 153 19 171 79 b 251 167 207 144 230 153 b 469 518 383 262 480 382 b 357 687 472 626 420 687 b 315 678 344 687 330 684 b 204 600 279 664 240 634 b 210 704 206 635 209 670 b 215 721 212 710 215 716 b 206 733 215 727 212 730 b 180 742 197 736 189 742 b 164 734 176 742 170 740 b 1 575 108 684 36 645 b -7 557 -1 569 -7 563 b -6 553 -7 556 -7 554 b 7 547 -3 547 3 547 l 17 547 b 82 575 43 547 59 567 l 82 452 b 56 46 82 317 81 180 b 17 -66 49 7 46 -36 b -62 -173 -13 -99 -37 -135 b -71 -192 -66 -179 -71 -184 b -68 -199 -71 -193 -69 -196 b -56 -204 -65 -203 -60 -204 z m 196 258 b 197 266 197 261 197 264 b 200 510 200 347 199 429 b 233 543 210 521 222 533 b 281 560 249 554 266 560 b 340 503 310 560 333 540 b 344 461 343 488 344 474 b 321 323 344 413 333 369 b 268 272 315 300 295 281 b 196 258 245 265 220 261 z"},dynamicMezzo:{x_min:-18,x_max:559,y_min:-50,y_max:365,ha:415,o:"m 43 -71 b 160 19 86 -71 143 -26 b 230 264 189 99 200 184 b 282 363 243 297 259 327 b 287 320 285 347 287 333 b 284 279 287 305 285 292 l 249 -12 b 275 -43 248 -29 245 -43 b 395 45 321 -43 389 3 b 462 271 406 124 436 197 b 523 387 475 310 490 348 l 523 346 b 504 130 521 274 513 202 b 501 81 501 114 501 98 b 510 3 501 55 504 29 b 580 -72 521 -48 543 -72 b 625 -63 593 -72 608 -69 b 789 50 690 -43 744 -3 b 805 72 795 56 805 63 b 798 85 805 76 802 81 b 778 94 792 91 785 94 b 755 85 770 94 763 91 l 693 40 b 675 33 685 36 680 33 b 658 52 668 33 662 39 b 645 144 651 82 645 112 b 658 448 641 246 660 346 b 606 507 658 485 638 507 b 583 504 599 507 592 505 b 495 446 547 497 521 471 b 420 373 471 423 448 399 b 413 458 418 406 418 432 b 361 507 408 490 386 507 b 320 491 347 507 333 501 b 160 307 256 444 207 382 l 160 337 b 174 488 160 387 174 438 b 156 521 174 501 173 513 b 137 526 148 524 143 526 b 109 513 127 526 118 520 b -16 399 66 477 23 439 b -26 383 -20 395 -26 389 l -26 379 b -14 370 -24 372 -20 370 b -6 372 -12 370 -9 372 b 19 376 4 374 12 376 b 36 359 32 376 36 370 b 30 330 36 350 35 341 l 30 323 b 9 -35 23 203 17 85 b 43 -71 6 -65 19 -71 z"},dynamicForte:{x_min:-144,x_max:311.30112136775,y_min:-115.3876295915697,y_max:504,ha:619.3876295915697,o:"m -101 -166 b 173 76 7 -153 150 -30 b 206 344 192 164 202 253 b 268 338 226 343 246 341 b 384 395 317 333 353 361 b 397 419 393 405 397 412 b 367 442 397 429 387 436 b 350 444 361 444 356 444 b 206 455 302 449 255 454 l 206 474 b 202 540 204 495 202 518 b 209 593 202 557 203 576 b 236 624 215 613 225 624 b 265 612 245 624 253 619 b 308 552 287 596 302 577 b 336 533 312 534 323 533 b 448 611 366 533 444 583 b 399 696 452 648 423 671 b 382 706 395 700 387 703 b 308 726 357 720 333 726 b 207 684 272 726 239 711 b 60 455 135 622 60 560 l 10 455 b -23 448 -1 455 -13 454 b -102 372 -55 426 -76 397 b -109 357 -108 367 -109 361 b -95 347 -109 353 -105 348 b -63 346 -84 346 -73 346 b 0 344 -43 344 -22 344 l 63 344 b 53 186 63 291 59 239 b 23 0 46 124 42 60 b -35 -60 10 -42 -6 -60 b -73 -52 -45 -60 -58 -58 b -91 -48 -79 -49 -85 -48 b -109 -53 -96 -48 -102 -49 b -199 -124 -143 -72 -168 -99 b -207 -137 -203 -128 -207 -132 b -194 -148 -207 -141 -203 -145 b -101 -166 -164 -160 -132 -168 z"},dynamicRinforzando:{x_min:-75,x_max:322.0960720195126,y_min:-90,y_max:325,ha:415,o:"m 23 -130 b 40 -125 27 -130 33 -128 b 128 -9 81 -114 125 -53 b 145 200 132 62 141 130 b 148 238 147 212 148 225 b 308 321 184 291 245 321 b 363 314 325 321 344 318 b 377 310 369 312 373 310 b 384 311 380 310 382 310 b 464 415 410 317 464 389 b 446 433 465 429 455 429 b 390 445 428 441 409 445 b 305 429 361 445 334 438 b 167 346 252 413 202 393 b 153 325 163 338 158 333 b 148 438 154 363 151 399 b 121 468 147 456 134 468 b 101 458 115 468 108 465 b -63 310 46 409 -16 367 b -108 240 -78 289 -98 271 b 32 330 -50 256 -13 297 b 37 304 37 320 37 312 l 37 292 b 10 -101 27 161 20 30 b 23 -130 9 -120 12 -130 z"},dynamicSforzando:{x_min:0,x_max:296,y_min:0,y_max:379,ha:379,o:"m 151 0 b 174 1 160 0 166 0 b 392 158 272 14 346 71 b 405 207 400 174 405 190 b 359 287 405 236 389 265 b 261 325 328 308 294 315 b 168 413 216 340 181 366 b 166 426 167 418 166 423 b 176 438 166 432 167 436 b 199 441 183 441 190 441 b 310 393 238 441 295 422 b 334 370 317 376 325 370 b 363 386 343 370 353 379 b 422 445 386 402 408 420 b 426 458 425 449 426 454 b 422 469 426 462 425 465 b 274 546 395 518 333 546 b 161 503 232 546 190 531 b 86 405 132 472 108 439 b 71 347 75 387 71 367 b 112 256 71 312 85 279 b 209 215 141 232 176 226 b 284 168 238 206 266 197 b 300 131 291 157 300 144 b 298 120 300 127 298 122 b 278 107 294 109 285 108 b 262 108 271 107 266 108 l 259 108 b 114 157 200 107 156 125 b 96 181 104 163 96 170 l 96 184 b 102 202 96 190 102 196 b 96 209 102 204 101 207 b 63 194 82 215 72 204 b 7 109 42 168 26 138 b 0 86 3 101 0 94 b 13 60 0 78 4 68 b 151 0 53 23 101 0 z"},dynamicZ:{x_min:-42.73880183193087,x_max:331,y_min:0,y_max:328,ha:328,o:"m -45 0 b -6 16 -32 0 -17 10 b 3 20 -3 16 0 19 b 144 60 49 48 96 60 b 284 22 190 60 238 46 b 348 4 305 10 327 4 b 461 75 393 4 435 30 b 468 91 464 81 467 86 b 456 104 468 95 465 99 b 287 173 402 131 348 167 b 239 176 271 174 255 176 b 168 174 217 176 194 174 b 367 340 236 236 298 294 b 459 423 402 363 432 392 b 477 454 467 431 475 442 b 474 462 477 456 475 459 b 454 472 469 469 462 472 b 432 468 446 472 439 469 b 356 448 406 461 380 455 b 210 422 307 433 258 422 b 109 442 177 422 144 428 b 94 445 104 444 99 445 b 69 433 85 445 76 442 b 27 390 56 419 39 406 b -9 343 16 373 -17 357 b 63 311 3 320 36 314 l 78 311 b 132 307 95 308 114 307 b 240 314 168 307 203 311 l 193 271 b -37 50 117 196 19 145 b -59 7 -46 36 -69 20 b -45 0 -55 3 -50 0 z"},ornamentTrill:{x_min:1,x_max:551,y_min:-18,y_max:539,ha:557,o:"m 321 612 b 190 602 278 605 235 605 l 190 638 b 187 693 190 652 190 667 b 161 776 184 717 193 776 b 137 747 150 776 137 766 b 130 654 135 716 131 685 l 130 596 l 52 588 b 4 539 23 585 7 570 b 1 477 3 530 1 500 b 3 448 1 461 3 448 l 3 452 b 53 432 6 436 23 432 b 134 435 75 432 102 433 b 151 117 138 328 147 223 b 170 13 153 82 157 46 b 209 -26 179 -10 193 -26 b 222 -22 213 -26 217 -24 b 269 -17 233 -16 253 -27 b 343 135 325 19 346 66 b 343 158 343 147 344 147 b 323 192 341 171 337 187 b 291 176 311 194 300 184 l 264 148 b 229 131 261 145 238 131 b 212 170 209 131 213 154 b 194 438 203 259 199 348 l 272 442 b 284 452 276 441 279 441 b 305 462 287 461 295 462 l 312 462 b 346 477 325 462 340 464 b 366 560 357 503 366 531 b 321 612 366 598 356 618 z m 759 588 b 711 560 749 592 733 570 b 588 500 671 541 631 521 b 583 533 586 514 586 524 b 560 576 577 549 577 572 b 517 550 541 582 528 564 b 416 423 482 508 452 462 b 382 353 392 397 384 370 b 387 305 380 341 386 318 b 392 275 389 295 392 285 b 409 243 393 262 393 243 b 431 262 419 243 425 255 b 521 373 459 298 488 333 b 523 354 521 366 523 360 b 520 337 523 346 521 340 b 508 295 513 323 508 310 b 530 102 508 279 524 122 b 549 66 533 88 530 66 b 577 99 563 66 572 84 b 580 131 580 109 580 121 l 580 302 b 600 347 580 318 582 337 b 701 392 632 364 665 384 b 793 518 785 409 793 435 b 759 588 793 559 785 576 z"},ornamentTurn:{x_min:0,x_max:574,y_min:0,y_max:312,ha:312,o:"m 651 0 b 816 132 727 0 796 46 b 827 223 822 163 827 193 b 808 340 827 262 821 301 b 665 449 785 408 729 449 b 636 446 655 449 647 448 b 589 384 600 441 586 422 l 602 300 b 611 285 603 291 605 285 b 621 288 613 285 616 287 b 655 295 632 294 644 295 b 711 284 674 295 693 289 b 773 209 740 275 773 232 b 697 156 773 184 734 160 b 664 154 685 154 675 154 b 579 168 635 154 608 158 b 455 242 533 186 495 213 b 261 400 387 291 331 354 b 160 432 225 422 190 432 b 20 328 98 432 49 392 b 0 229 6 295 0 262 b 30 71 0 176 14 122 b 144 3 43 29 96 3 b 168 6 153 3 160 4 b 248 122 233 20 248 39 b 246 147 248 124 248 135 b 226 177 243 164 239 177 b 206 170 220 177 215 174 b 144 154 186 158 166 154 b 79 170 122 154 101 160 b 53 202 62 179 53 189 b 60 228 53 209 55 217 b 161 281 81 261 120 281 b 183 279 168 281 176 281 b 325 190 243 269 284 229 b 572 16 402 124 475 53 b 651 0 598 6 625 0 z"},ornamentTurnSlash:{x_min:0,x_max:574,y_min:-106,y_max:405,ha:511,o:"m 441 -153 b 456 -60 455 -118 456 -89 b 455 81 455 -14 455 33 b 572 14 491 55 530 30 b 651 -1 598 4 625 -1 b 816 131 727 -1 796 45 b 827 222 822 161 827 192 b 808 338 827 261 821 300 b 665 448 785 406 729 448 b 636 445 655 448 647 446 b 589 383 600 439 586 420 l 602 298 b 611 284 603 289 605 284 b 621 287 613 284 616 285 b 655 294 632 292 644 294 b 711 282 674 294 693 288 b 773 207 740 274 773 230 b 697 154 773 183 734 158 b 664 153 685 153 675 153 b 579 167 635 153 608 157 b 455 240 533 183 495 212 b 454 242 455 240 455 242 l 454 337 b 452 488 454 386 452 439 b 433 570 452 517 451 546 b 425 583 431 575 431 583 l 422 583 b 403 566 415 582 408 573 b 402 546 400 560 402 553 l 397 287 b 261 399 353 325 310 366 b 160 431 225 420 190 431 b 20 327 98 431 48 390 b 0 228 6 294 0 261 b 30 69 0 174 14 121 b 144 1 43 27 96 1 b 168 4 153 1 160 3 b 248 121 233 19 248 37 b 246 145 248 122 248 134 b 226 176 243 163 239 176 b 206 168 220 176 215 173 b 144 153 186 157 166 153 b 79 168 122 153 101 158 b 53 200 62 177 53 187 b 60 226 53 207 55 216 b 161 279 79 259 120 279 b 183 278 168 279 176 279 b 325 189 243 266 282 226 b 395 130 348 168 372 148 b 393 71 393 109 393 89 b 441 -153 390 -6 402 -78 z"},ornamentMordent:{x_min:0,x_max:700,y_min:0,y_max:497,ha:497,o:"m 513 0 b 528 39 526 14 527 27 b 531 72 531 50 531 60 b 528 138 531 94 528 117 l 528 347 b 552 359 537 354 544 359 b 579 338 560 359 569 353 b 674 217 609 297 639 255 b 719 190 690 200 704 190 b 759 215 732 190 744 197 b 940 395 815 279 877 337 b 1001 490 968 422 986 455 b 1008 513 1004 495 1008 505 b 1002 524 1008 517 1007 521 b 968 516 994 530 978 524 b 960 508 965 513 963 510 b 798 356 900 464 848 410 b 778 341 791 347 783 341 b 757 354 772 341 765 346 b 661 475 720 392 690 432 b 611 517 644 504 629 517 b 563 498 598 517 583 511 b 527 471 550 490 539 481 l 527 570 b 492 716 526 619 523 671 b 472 677 480 704 472 694 b 465 399 474 585 468 491 b 439 366 456 387 448 376 b 384 320 415 336 399 320 b 330 367 369 320 354 336 b 325 376 328 369 327 373 b 226 490 291 413 265 456 b 189 505 213 500 202 505 b 157 491 177 505 167 500 b 0 229 75 420 0 346 b 1 202 0 220 0 212 b 22 215 12 203 16 209 b 124 327 55 252 89 289 b 147 343 132 337 140 343 b 171 323 156 343 164 336 b 266 197 196 276 232 236 b 337 157 291 170 314 157 b 410 207 361 157 386 174 b 461 274 428 229 444 252 b 462 166 461 238 461 202 b 513 0 465 108 487 55 z"},ornamentShortTrill:{x_min:0,x_max:747,y_min:0,y_max:243,ha:243,o:"m 379 0 b 428 14 395 0 410 4 b 474 56 445 26 461 39 b 552 157 500 89 526 122 b 566 168 556 163 560 168 b 575 157 569 168 572 166 b 664 36 592 107 628 72 b 733 1 685 13 710 1 b 802 35 757 1 780 13 b 1007 249 871 105 940 177 b 1067 324 1028 272 1054 295 b 1076 340 1068 330 1076 334 b 1073 346 1076 341 1076 343 b 1057 350 1068 348 1063 350 b 1047 347 1053 350 1050 350 b 1001 310 1031 336 1015 324 l 857 157 b 844 143 852 153 848 143 b 835 150 841 143 838 144 b 757 242 815 186 780 209 b 685 298 739 268 713 284 b 641 310 670 305 655 310 b 590 288 625 310 608 304 b 497 179 554 256 527 215 b 480 164 490 170 485 164 b 462 179 474 164 469 168 b 372 295 436 220 405 258 b 278 344 346 324 312 344 b 199 310 252 344 226 334 b 92 196 161 274 128 233 b 0 24 46 148 23 89 b 42 48 22 27 32 37 b 156 168 84 85 114 132 b 196 192 174 184 186 192 b 228 158 206 192 215 181 b 312 36 252 114 282 75 b 379 0 331 12 354 0 z"},ornamentTremblement:{x_min:0,x_max:982.17691453624,y_min:0,y_max:224,ha:224,o:"m 0 0 b 63 36 30 12 48 23 b 157 124 94 66 125 94 b 177 135 164 131 170 135 b 196 122 183 135 189 131 b 268 40 217 94 245 68 b 323 6 288 16 304 6 b 369 20 336 6 350 10 b 412 53 384 29 399 40 b 501 145 442 84 472 114 b 523 158 508 154 516 158 b 543 145 528 158 536 154 b 641 45 576 112 608 78 b 698 17 658 27 677 17 b 729 23 708 17 719 20 b 804 65 756 32 780 46 b 904 154 837 95 871 124 b 920 163 910 160 916 163 b 936 153 924 163 930 160 b 1024 60 965 121 996 92 b 1112 13 1053 29 1080 13 b 1184 39 1135 13 1158 22 b 1359 194 1248 84 1305 138 b 1413 301 1388 223 1403 261 b 1404 323 1417 315 1413 323 b 1391 320 1400 323 1395 321 b 1344 294 1375 314 1358 307 b 1224 186 1305 258 1269 216 b 1194 173 1212 179 1202 173 b 1165 193 1184 173 1175 179 b 1096 271 1145 222 1122 248 b 1001 318 1061 302 1031 318 b 903 268 969 318 937 301 b 806 186 871 239 841 210 b 782 174 796 179 789 174 b 756 193 773 174 765 180 b 652 291 729 232 693 266 b 596 308 634 302 615 308 b 530 278 573 308 552 298 l 415 168 b 393 157 408 161 400 157 b 373 171 387 157 380 161 b 305 245 353 197 330 222 b 248 276 285 266 266 278 b 189 245 229 276 210 266 b 81 144 156 209 120 174 b 0 0 33 109 26 56 z"},ornamentPrecompAppoggTrill:{x_min:-.11067192132025548,x_max:1066,y_min:-50,y_max:533.1706452421108,ha:583.1706452421108,o:"m 187 -46 b 213 -14 197 -37 204 -26 b 285 151 251 36 266 94 b 304 189 294 177 297 189 b 337 168 311 189 320 181 b 458 33 386 131 415 76 b 495 12 472 19 484 12 b 531 40 508 12 518 22 b 580 168 557 79 569 124 b 622 235 592 213 603 235 b 683 194 636 235 655 222 b 838 26 737 140 791 86 b 919 -33 860 -1 881 -39 b 984 53 960 -27 971 19 b 1022 156 998 86 1008 122 b 1054 190 1032 179 1041 190 b 1089 167 1063 190 1074 183 b 1208 32 1129 122 1171 78 b 1244 10 1221 17 1231 10 b 1273 22 1253 10 1263 14 b 1496 206 1352 78 1427 137 b 1535 310 1526 236 1535 272 b 1531 359 1535 325 1534 343 b 1496 343 1515 360 1506 351 l 1309 192 b 1269 167 1289 176 1279 167 b 1234 199 1260 167 1251 177 b 1122 324 1200 243 1168 289 b 1074 344 1106 337 1089 344 b 1014 301 1051 344 1030 328 b 952 144 985 252 971 197 b 933 121 946 128 940 121 b 910 137 927 121 920 125 b 850 210 888 161 870 186 b 687 369 799 266 750 325 b 631 390 665 383 647 390 b 567 327 602 390 580 369 b 527 199 554 284 543 242 b 508 168 520 179 514 168 b 482 192 503 168 495 177 b 353 328 444 240 405 292 b 312 343 338 338 324 343 b 266 297 292 343 276 327 b 204 125 248 239 232 180 b 143 79 193 102 173 79 b 92 122 117 79 105 102 b 81 154 86 131 84 143 b 48 423 59 242 50 333 b 45 544 46 464 45 504 b 53 730 45 606 48 668 b 40 768 55 744 52 766 b 13 730 19 770 14 747 b 0 514 7 658 -1 586 b 26 122 3 383 6 252 b 75 -36 35 66 40 10 b 134 -72 92 -59 112 -72 b 187 -46 151 -72 170 -63 z"},ornamentPrecompSlideTrillDAnglebert:{x_min:0,x_max:1088,y_min:-380,y_max:252,ha:632,o:"m 560 -539 b 439 -481 527 -497 484 -485 b 354 -461 409 -478 380 -477 b 131 -154 236 -389 161 -285 b 124 -98 127 -135 124 -117 b 196 55 124 -40 148 10 b 308 99 230 86 268 99 b 399 81 337 99 367 92 b 514 22 441 66 477 43 b 619 -30 567 -9 590 -30 b 719 17 642 -30 670 -16 b 861 131 769 52 818 88 b 899 150 874 144 887 150 b 936 117 913 150 926 138 b 965 43 948 94 956 68 b 1007 -1 973 24 978 -1 b 1048 30 1025 -1 1037 16 b 1070 65 1057 40 1064 52 b 1110 148 1084 92 1096 121 b 1145 190 1120 164 1120 190 b 1191 153 1169 192 1179 168 b 1256 29 1218 115 1231 68 b 1292 1 1267 10 1277 1 b 1320 10 1300 1 1309 4 b 1369 48 1339 19 1355 33 b 1515 196 1418 96 1464 148 b 1567 343 1558 238 1567 287 b 1555 363 1565 357 1562 363 b 1539 356 1551 363 1547 360 b 1433 268 1502 330 1466 301 b 1335 171 1401 236 1374 199 b 1310 163 1325 166 1318 163 b 1286 183 1302 163 1293 168 b 1218 311 1264 226 1247 272 b 1164 351 1200 337 1182 351 b 1110 308 1146 351 1128 337 b 1031 176 1084 265 1058 219 b 1015 161 1025 166 1021 161 b 999 179 1009 161 1005 167 b 955 279 985 213 973 248 b 913 307 943 300 930 307 b 887 302 904 307 896 305 b 852 281 874 298 863 291 b 693 167 804 236 747 204 b 612 140 667 150 639 140 b 549 157 592 140 570 145 b 403 220 503 181 452 202 b 271 248 360 236 315 248 b 179 229 239 248 209 242 b 0 -29 65 180 0 85 b 9 -104 0 -53 3 -78 b 397 -526 56 -317 183 -464 b 505 -547 432 -536 468 -547 b 560 -539 524 -547 541 -544 z"},ornamentPrecompSlideTrillBach:{x_min:0,x_max:1185,y_min:-380,y_max:465,ha:845,o:"m 624 -544 b 642 -528 638 -543 642 -537 b 639 -514 642 -524 642 -520 b 590 -444 629 -487 609 -467 b 523 -413 573 -422 553 -410 b 498 -415 514 -415 507 -415 b 399 -389 464 -415 431 -405 b 89 -157 281 -330 176 -255 b 72 -117 78 -144 72 -131 b 73 -101 72 -111 72 -107 b 187 186 91 3 147 91 b 246 230 200 216 222 230 b 300 209 262 230 281 223 b 456 48 359 163 403 101 b 540 -10 494 10 518 -10 b 625 59 566 -10 589 13 b 690 148 648 88 668 118 b 711 167 697 160 704 167 b 733 153 719 167 724 163 b 844 14 769 105 808 60 b 903 -42 873 -23 886 -42 b 973 -1 919 -42 937 -27 b 1008 33 986 7 996 20 b 1048 81 1021 48 1035 65 b 1050 37 1048 66 1050 52 b 1047 -24 1050 17 1048 -3 b 1038 -275 1038 -108 1040 -192 l 1037 -289 b 1045 -302 1037 -295 1038 -301 b 1068 -284 1056 -304 1064 -292 b 1084 -242 1076 -271 1081 -256 b 1099 -109 1096 -199 1099 -154 b 1106 158 1099 -19 1106 71 b 1128 187 1113 167 1120 177 b 1168 223 1143 212 1155 223 b 1210 193 1179 223 1191 213 b 1220 183 1214 190 1215 186 b 1329 36 1261 138 1292 84 b 1374 7 1345 16 1358 7 b 1411 20 1384 7 1395 12 b 1479 84 1437 37 1459 59 b 1610 235 1521 135 1564 186 b 1706 403 1655 282 1695 334 b 1614 346 1663 400 1637 373 b 1464 170 1564 287 1515 228 b 1440 150 1453 156 1447 150 b 1414 173 1433 150 1426 158 b 1283 336 1371 228 1333 288 b 1220 366 1261 356 1240 366 b 1148 318 1194 366 1169 350 b 1103 255 1133 297 1119 275 b 1097 301 1102 271 1100 285 b 1099 334 1099 312 1099 324 b 1092 428 1099 367 1094 397 b 1071 647 1087 501 1079 575 b 1058 670 1071 657 1071 670 b 1035 648 1047 670 1038 661 b 1018 516 1024 605 1015 560 b 1041 203 1025 412 1037 307 b 1043 180 1041 196 1043 187 b 992 127 1027 161 1009 143 b 965 111 981 117 972 111 b 936 132 955 111 946 120 b 829 268 900 179 867 225 b 760 317 801 301 780 317 b 691 258 739 317 719 297 b 605 147 664 219 641 177 b 589 138 599 141 593 138 b 572 148 583 138 579 141 b 415 317 520 206 467 261 b 327 372 390 343 366 366 b 300 373 317 373 308 373 b 154 295 239 373 190 348 b 55 138 120 243 85 192 b 0 -53 22 79 0 13 b 160 -317 0 -156 49 -252 b 209 -354 177 -327 192 -343 b 510 -531 305 -419 397 -495 b 593 -547 537 -540 564 -547 b 624 -544 603 -547 613 -546 z"},ornamentPrecompTrillSuffixDandrieu:{x_min:0,x_max:1003,y_min:-20,y_max:521,ha:541,o:"m 791 -16 b 844 33 812 -3 829 14 b 981 271 900 107 937 190 b 994 288 984 278 985 288 b 1009 269 1004 288 1007 278 b 1077 112 1034 217 1051 163 b 1158 43 1103 62 1129 43 b 1231 69 1179 43 1204 55 b 1348 189 1280 98 1315 143 b 1444 451 1407 271 1444 357 b 1431 547 1444 482 1440 514 b 1188 750 1401 665 1299 750 b 1158 747 1178 750 1168 749 b 1079 684 1119 742 1089 727 b 1063 632 1076 665 1071 648 b 1056 609 1058 622 1056 615 b 1071 599 1056 602 1060 599 b 1086 600 1076 599 1080 600 b 1130 605 1102 603 1116 605 b 1244 569 1171 605 1210 595 b 1349 346 1322 511 1349 433 b 1348 312 1349 334 1349 324 b 1289 197 1345 266 1325 228 b 1238 174 1270 181 1253 174 b 1188 215 1220 174 1202 187 b 1145 308 1172 245 1159 276 b 1096 413 1129 343 1120 382 b 1053 438 1084 431 1068 438 b 1011 413 1038 438 1022 431 b 955 324 989 384 971 354 b 850 127 920 258 886 192 b 838 112 847 121 842 112 b 824 128 828 109 825 121 b 802 193 815 150 809 171 b 730 400 779 264 766 337 b 688 431 719 420 703 431 b 647 403 674 431 660 422 b 606 338 632 383 619 361 b 513 167 575 282 546 223 b 480 122 503 150 498 122 b 452 171 459 122 459 153 b 420 255 442 199 432 228 b 337 408 399 308 380 364 b 276 436 317 428 297 436 b 215 397 253 436 230 423 b 23 72 148 289 81 184 b 0 29 17 59 0 40 b 7 17 0 23 1 20 b 59 58 26 7 46 39 b 190 276 111 127 143 206 b 216 301 202 292 207 301 b 245 279 223 301 232 294 b 311 166 278 248 292 206 b 367 16 331 117 346 65 b 402 -19 377 -7 387 -19 b 438 -4 412 -19 423 -13 b 518 88 474 17 495 55 b 628 284 562 150 592 216 b 657 223 648 266 651 243 b 717 13 677 154 696 84 b 755 -29 726 -16 737 -29 b 791 -16 765 -29 776 -24 z"},ornamentPrecompDoubleCadenceUpperPrefix:{x_min:0,x_max:1246,y_min:-30,y_max:296.0302860502196,ha:326.0302860502196,o:"m 360 -43 b 559 59 445 -43 503 7 b 698 236 615 111 652 179 b 714 248 704 243 710 248 b 727 235 719 248 721 243 l 848 42 b 883 12 860 22 870 12 b 917 32 891 12 903 19 b 946 62 927 42 939 50 b 1037 192 972 108 1009 147 b 1057 210 1044 204 1051 210 b 1076 190 1063 210 1068 203 l 1176 12 b 1215 -19 1188 -9 1201 -19 b 1250 -6 1225 -19 1237 -14 b 1284 27 1264 3 1274 16 b 1380 190 1323 78 1351 135 b 1395 210 1384 197 1385 210 b 1413 190 1405 210 1410 197 b 1508 40 1436 134 1467 85 b 1564 3 1529 14 1547 3 b 1617 32 1580 3 1597 12 b 1767 238 1678 92 1719 167 b 1794 310 1781 259 1791 282 b 1752 294 1776 317 1764 304 b 1656 164 1711 258 1689 206 b 1629 144 1646 151 1637 144 b 1603 161 1620 144 1613 150 b 1502 315 1562 207 1525 258 b 1452 357 1490 344 1470 357 b 1397 320 1431 357 1411 344 b 1316 170 1368 271 1345 219 b 1280 127 1306 154 1303 127 b 1244 171 1256 127 1254 154 b 1145 337 1210 226 1179 282 b 1110 363 1135 354 1122 363 b 1070 338 1097 363 1084 354 b 1050 311 1063 330 1057 320 b 959 181 1017 271 992 223 b 939 167 950 173 945 167 b 920 184 933 167 927 173 b 818 343 887 238 852 291 b 759 395 795 377 778 395 b 701 344 742 395 724 377 b 698 338 700 341 700 340 b 544 154 652 272 605 207 b 412 98 501 117 458 98 b 304 130 377 98 341 108 b 95 373 204 187 144 275 b 58 426 85 393 82 428 b 19 366 26 426 26 389 b 0 307 13 346 0 327 b 4 287 0 300 1 294 b 174 36 49 194 91 102 b 360 -43 230 -9 289 -43 z"},ornamentPrecompDoubleCadenceUpperPrefixTurn:{x_min:0,x_max:1226,y_min:-237,y_max:436,ha:673,o:"m 1279 -341 b 1293 -252 1293 -307 1295 -278 b 1277 36 1287 -156 1282 -59 l 1273 118 b 1318 176 1289 137 1303 157 b 1349 203 1332 193 1342 203 b 1378 168 1359 203 1367 192 b 1456 35 1401 122 1428 78 b 1511 -12 1476 3 1493 -12 b 1568 23 1526 -12 1544 0 b 1597 53 1578 32 1588 42 b 1705 186 1629 101 1669 143 b 1761 284 1728 216 1751 246 b 1765 300 1763 288 1765 295 b 1763 307 1765 302 1765 305 b 1737 302 1754 311 1744 308 b 1718 287 1729 298 1725 292 b 1598 145 1673 245 1637 194 b 1578 130 1590 135 1584 130 b 1557 147 1571 130 1565 135 b 1447 321 1516 202 1488 265 b 1403 351 1433 341 1417 351 b 1358 323 1388 351 1372 341 b 1269 209 1329 285 1299 248 b 1254 521 1264 314 1259 418 b 1228 616 1253 554 1247 588 b 1218 628 1224 621 1223 628 l 1215 628 b 1201 613 1210 626 1202 619 b 1200 600 1200 609 1200 605 l 1200 586 b 1211 348 1204 507 1207 428 b 1217 166 1214 288 1215 226 b 1202 181 1212 168 1208 174 b 1094 334 1168 233 1130 284 b 1048 366 1079 356 1064 366 b 1004 331 1034 366 1018 354 b 904 154 969 275 930 220 b 873 202 887 171 880 187 b 778 356 845 256 819 311 b 737 379 763 372 750 379 b 698 353 724 379 711 370 l 621 232 b 415 114 570 154 495 114 b 302 138 377 114 340 121 b 73 400 187 192 117 284 b 55 420 69 415 62 420 b 42 410 50 420 45 416 b 0 292 23 373 0 334 b 4 262 0 282 1 272 b 168 39 32 168 92 99 b 359 -26 225 -6 292 -26 b 585 76 446 -26 530 10 b 668 202 616 115 641 160 b 693 228 680 219 687 228 b 720 203 700 228 707 219 b 801 63 752 160 775 111 b 844 7 812 42 818 7 b 910 66 877 6 894 39 b 923 94 916 75 919 85 b 995 219 945 137 968 179 b 1025 184 1009 210 1017 197 b 1119 56 1054 141 1087 98 b 1166 20 1138 32 1152 20 b 1215 50 1181 20 1195 30 b 1221 56 1217 52 1218 55 b 1228 -163 1223 -17 1225 -89 b 1279 -341 1231 -223 1251 -278 z"},ornamentPrecompTrillLowerSuffix:{x_min:0,x_max:833,y_min:-309,y_max:319,ha:628,o:"m 778 -444 b 801 -445 785 -444 793 -445 b 1037 -338 894 -445 969 -397 b 1200 37 1149 -240 1200 -109 b 1084 406 1200 171 1172 300 b 1024 444 1064 431 1043 444 b 960 390 999 444 978 426 b 841 163 923 314 886 236 b 812 128 832 150 827 128 b 786 167 796 130 793 153 b 660 418 744 251 716 341 b 599 459 639 445 619 459 b 541 410 577 459 557 444 b 439 197 507 340 474 269 b 422 179 435 190 435 179 b 338 393 392 251 379 328 b 275 439 320 423 298 439 b 212 396 253 439 230 425 b 71 219 170 333 128 268 b 0 45 17 173 16 112 b 68 98 32 62 50 78 b 194 264 112 150 153 209 b 230 292 209 282 219 292 b 264 261 240 292 251 282 b 274 242 268 255 269 248 b 346 46 304 179 325 112 b 376 10 351 32 354 10 b 412 35 392 10 403 22 b 452 107 429 56 441 82 b 541 291 481 168 511 230 b 556 307 547 302 552 307 b 573 295 562 307 567 302 b 624 217 595 272 611 246 b 721 1 657 145 685 72 b 755 -27 732 -19 742 -27 b 786 -16 765 -27 775 -24 b 857 73 819 7 840 39 b 952 256 887 134 920 194 b 978 289 963 279 969 289 b 1009 262 985 289 994 281 b 1030 235 1017 253 1024 245 b 1110 -4 1071 161 1099 81 b 1116 -68 1113 -26 1116 -48 b 1009 -243 1116 -140 1090 -200 b 848 -291 956 -272 901 -291 b 730 -261 809 -291 770 -282 b 696 -248 714 -252 703 -248 b 671 -284 684 -248 678 -258 l 662 -312 b 657 -357 658 -330 657 -344 b 744 -439 657 -403 683 -425 z"},brassScoop:{x_min:-.4444444444444445,x_max:312,y_min:-390,y_max:28,ha:418,o:"m 0 -562 b 393 -256 171 -504 307 -412 b 449 -39 431 -189 449 -115 b 448 -1 449 -26 449 -14 b 433 40 446 14 448 40 b 408 -3 410 40 412 14 b 396 -66 403 -23 402 -46 b 45 -397 346 -243 209 -337 b 0 -451 13 -409 1 -423 b 0 -562 -1 -485 0 -520 z"},brassDoitMedium:{x_min:-.32815253965710617,x_max:476.21251177608565,y_min:-50,y_max:333.1535583875376,ha:383.1535583875376,o:"m 16 -72 b 27 -71 19 -72 23 -72 b 215 -33 89 -56 153 -48 b 521 114 327 -7 435 35 b 685 432 615 199 691 295 b 670 480 684 449 688 475 b 642 441 654 482 648 456 b 403 183 599 321 513 240 b 79 89 301 130 192 105 b 0 -1 -12 76 0 76 b 0 -50 0 -17 1 -33 b 16 -72 0 -65 3 -72 z"},brassFallLipShort:{x_min:0,x_max:298,y_min:-344,y_max:65,ha:409,o:"m 396 -495 b 420 -461 412 -487 418 -474 b 429 -382 428 -435 429 -409 b 426 -330 429 -364 428 -347 b 285 -6 410 -209 356 -104 b 98 94 239 59 173 94 b 39 86 79 94 58 92 b 0 49 20 81 0 73 l 0 -52 b 10 -69 0 -62 1 -69 b 20 -68 13 -69 16 -69 b 88 -56 45 -59 66 -56 b 261 -160 156 -56 213 -95 b 396 -495 333 -259 382 -369 z"},brassLiftMedium:{x_min:0,x_max:807,y_min:0,y_max:838,ha:838,o:"m 50 0 b 55 1 52 0 53 0 b 58 23 65 7 59 16 b 55 58 56 36 55 48 b 130 117 55 99 75 112 b 220 213 202 121 220 141 b 315 308 220 289 238 308 l 336 308 b 408 380 393 310 406 321 b 461 452 409 438 416 452 b 485 451 468 452 477 451 b 569 510 531 448 556 464 b 573 543 572 520 572 531 b 657 619 580 605 595 618 b 698 621 670 619 684 619 b 788 700 749 625 778 649 b 798 778 792 726 793 752 b 873 857 806 841 809 845 b 985 950 927 867 973 887 b 1084 1047 1002 1035 1004 1034 b 1162 1128 1133 1056 1162 1087 b 1146 1182 1162 1145 1158 1164 b 1125 1207 1140 1191 1136 1207 l 1122 1207 b 1110 1191 1113 1205 1110 1198 b 1112 1174 1110 1185 1112 1178 b 1048 1110 1109 1126 1096 1113 b 1028 1109 1043 1110 1035 1109 b 939 1022 969 1102 948 1081 b 845 922 929 949 917 936 b 746 812 773 909 753 886 b 744 780 744 802 744 791 b 635 681 737 700 717 683 b 524 583 553 680 536 665 b 439 510 514 520 503 510 b 357 431 377 510 360 492 l 357 406 b 314 364 356 379 343 364 b 238 361 288 364 264 364 b 173 300 202 357 180 334 b 167 245 168 281 167 262 b 105 174 166 192 157 180 b 75 171 95 173 85 171 b 6 112 30 166 14 153 b 0 73 1 98 0 85 b 37 10 0 45 13 26 b 50 0 42 7 46 0 z"},brassFallRoughMedium:{x_min:0,x_max:791,y_min:0,y_max:819,ha:819,o:"m 1117 0 b 1139 101 1129 26 1139 71 b 1138 121 1139 109 1139 115 b 1084 193 1125 171 1110 193 b 1044 183 1073 193 1060 189 b 1022 177 1035 179 1028 177 b 1007 209 1012 177 1008 186 b 876 324 1004 292 959 330 b 799 317 850 321 825 320 b 759 354 772 314 755 320 b 760 373 760 360 760 366 b 759 392 760 379 760 384 b 681 477 753 451 730 477 b 654 474 672 477 664 475 b 606 467 638 471 622 468 b 586 465 599 465 592 465 b 564 481 570 465 564 469 b 569 505 564 487 566 495 b 575 553 572 521 575 537 b 572 585 575 564 573 575 b 481 665 560 657 539 668 b 412 665 458 664 435 665 b 382 690 392 667 382 672 b 383 700 382 693 383 696 b 386 773 387 724 387 749 b 297 858 382 828 351 857 b 229 861 274 858 251 858 b 190 897 207 863 193 871 b 163 1012 186 936 180 976 b 79 1084 145 1050 124 1084 b 66 1083 75 1084 71 1083 b 43 1096 49 1081 43 1087 b 48 1112 43 1100 45 1106 b 53 1130 52 1119 53 1125 b 39 1169 53 1145 45 1158 b 26 1179 36 1175 30 1179 b 16 1171 22 1179 17 1176 b 0 1103 10 1149 0 1126 b 9 1067 0 1092 1 1079 b 91 1021 26 1031 52 1018 b 145 978 122 1024 141 1011 b 156 913 147 956 151 935 b 291 795 170 831 210 795 b 346 768 337 795 346 796 b 344 743 346 760 344 753 b 343 716 344 733 343 724 b 455 600 343 651 390 602 b 505 605 471 599 490 605 b 528 598 514 605 523 603 b 536 579 534 592 536 586 b 524 523 536 562 526 541 b 523 505 524 517 523 511 b 621 405 523 442 560 405 b 639 406 626 405 634 406 b 677 413 652 408 664 410 b 701 416 687 415 696 416 b 721 392 716 416 721 410 b 720 373 721 386 720 380 b 831 255 714 301 759 252 b 897 261 854 255 876 261 b 926 262 909 261 919 262 b 969 197 963 262 965 252 b 971 184 969 193 971 189 b 1031 115 979 137 998 115 b 1071 122 1043 115 1056 118 b 1096 130 1079 125 1086 127 b 1087 59 1094 107 1087 82 b 1117 0 1087 37 1094 17 z"},brassBend:{x_min:0,x_max:381,y_min:0,y_max:367,ha:367,o:"m 298 0 b 472 50 359 0 418 14 b 537 135 501 71 530 92 b 543 216 543 163 543 190 l 543 266 b 544 308 543 281 543 295 b 549 433 546 354 549 395 b 543 507 549 459 547 482 b 533 528 541 516 544 528 b 511 508 524 528 514 520 b 508 478 510 498 508 488 b 504 318 507 425 504 372 b 505 264 504 300 505 282 b 446 181 505 220 484 199 b 294 150 396 160 344 150 b 92 194 226 150 158 167 b 45 269 62 207 45 230 b 46 359 46 300 46 328 b 37 497 46 405 45 451 b 27 523 36 507 37 523 b 4 498 14 524 6 513 b 3 481 3 492 3 487 b 0 409 1 456 0 433 b 4 228 0 348 4 288 b 3 177 4 210 4 194 b 68 53 1 125 20 84 b 200 10 108 27 154 17 b 298 0 233 4 266 0 z"},brassMuteClosed:{x_min:0,x_max:274,y_min:0,y_max:260,ha:260,o:"m 203 0 b 209 1 206 0 207 0 b 216 13 215 4 216 9 l 215 27 l 215 153 b 216 161 216 156 216 158 b 372 164 268 163 318 164 b 395 184 383 164 395 166 l 395 189 b 357 229 392 209 386 229 b 219 228 311 229 265 228 l 223 310 b 209 357 225 328 219 344 b 189 374 203 364 197 374 b 184 373 187 374 186 373 b 177 359 179 372 177 366 l 177 348 l 173 222 l 39 222 b 0 206 12 222 0 219 b 10 174 0 199 3 189 b 46 157 19 157 30 157 b 108 160 68 158 88 160 b 171 161 130 161 150 161 l 167 58 b 184 16 167 40 171 26 b 203 0 192 12 196 0 z"},brassMuteOpen:{x_min:1,x_max:313.01193341111656,y_min:0,y_max:309,ha:309,o:"m 265 0 b 451 189 363 7 452 88 l 451 215 b 348 383 441 285 405 343 b 209 445 288 426 248 445 b 84 379 168 445 132 420 b 69 364 79 373 73 369 b 1 213 30 323 1 275 b 230 0 1 88 94 0 z m 210 62 b 128 73 181 62 154 66 b 40 171 71 91 42 125 b 52 226 40 187 45 206 b 197 374 79 295 130 344 b 228 382 207 380 217 382 b 300 361 252 382 276 370 b 374 308 328 350 353 331 b 410 223 397 284 410 253 b 393 163 410 202 405 181 b 210 62 354 91 288 63 z"},brassFlip:{x_min:0,x_max:402,y_min:0,y_max:361,ha:361,o:"m 579 0 b 511 153 579 68 557 117 b 52 504 359 271 206 387 b 29 520 45 510 39 520 b 20 517 26 520 23 518 b 0 477 3 510 0 494 l 0 125 b 17 20 1 92 1 56 b 40 84 37 40 40 60 b 42 287 40 151 42 219 l 42 363 z"},brassJazzTurn:{x_min:0,x_max:646,y_min:0,y_max:212,ha:212,o:"m 310 0 b 367 33 327 0 344 10 b 389 55 374 40 382 49 b 490 145 423 85 456 114 b 507 154 495 151 501 154 b 524 144 513 154 517 151 b 598 72 547 120 575 98 b 700 24 625 42 662 24 b 765 43 721 24 744 30 b 893 147 812 72 855 105 b 930 212 910 166 923 186 b 912 215 923 213 917 215 b 871 199 896 215 883 209 b 812 153 852 183 832 167 b 789 144 805 148 796 144 b 773 156 782 144 776 147 b 691 251 757 199 720 222 b 603 301 658 282 631 301 b 527 258 580 301 556 288 b 420 156 494 222 455 190 b 399 143 412 147 405 143 b 377 157 392 143 386 147 b 259 282 340 200 300 242 b 219 305 245 298 232 305 b 177 279 204 305 192 297 b 55 127 137 228 95 177 b 0 52 36 104 20 79 b 14 50 6 50 10 50 b 53 66 32 50 45 58 b 115 131 75 88 98 108 b 135 148 124 143 130 148 b 157 132 141 148 148 143 b 252 33 186 96 219 65 b 310 0 275 12 292 0 z"},brassSmear:{x_min:0,x_max:334,y_min:0,y_max:151,ha:151,o:"m 321 0 b 475 125 390 0 436 43 b 481 143 478 131 481 137 b 475 154 481 147 480 151 b 449 148 468 158 458 154 b 395 132 432 137 413 132 b 343 140 377 132 360 137 b 229 194 301 148 266 173 b 168 217 206 209 186 217 b 109 192 148 217 130 209 b 0 26 59 148 32 89 b 59 63 32 29 45 48 b 98 84 72 78 84 84 b 130 73 108 84 118 81 b 213 26 157 58 183 37 b 321 0 255 9 289 0 z"},stringsDownBow:{x_min:0,x_max:306,y_min:-.09607201951262866,y_max:366,ha:366.09607201951263,o:"m 405 0 b 425 17 413 -1 420 9 b 439 66 435 32 439 48 b 441 268 439 137 441 202 b 436 412 441 314 439 361 l 435 413 b 423 469 435 436 431 456 b 344 508 406 501 373 501 b 204 527 298 520 251 527 b 60 498 156 527 108 518 b 7 438 32 485 10 468 l 7 426 b 4 337 7 396 7 367 b 0 140 0 272 0 206 b 1 42 0 107 0 73 b 13 3 1 27 -3 4 b 40 39 29 3 35 24 b 42 53 42 43 40 49 b 49 141 48 84 49 112 b 48 215 49 167 48 192 b 49 252 48 228 48 240 l 49 312 b 130 343 72 331 99 340 b 206 347 156 346 180 347 b 372 314 262 347 318 338 l 390 307 l 390 245 b 390 138 392 212 390 176 b 397 23 390 101 392 62 b 405 0 399 14 393 1 z"},stringsUpBow:{x_min:0,x_max:219.2842808242076,y_min:0,y_max:489,ha:489,o:"m 151 0 b 184 42 170 12 180 26 b 297 554 223 212 261 382 b 315 690 305 598 318 645 b 304 704 315 697 311 704 b 276 670 288 704 282 697 b 157 131 236 490 196 311 l 157 144 b 73 526 134 276 104 396 b 30 677 60 576 52 638 b 13 694 26 684 22 694 b 0 674 9 694 0 691 l 0 671 b 10 603 3 649 6 626 b 105 174 42 461 72 317 b 150 0 117 117 128 58 z"},stringsHarmonic:{x_min:0,x_max:191,y_min:0,y_max:202,ha:202,o:"m 143 0 b 275 122 217 0 275 53 b 127 291 275 206 202 291 b 0 154 63 291 0 222 b 143 0 0 76 71 0 z m 122 68 b 43 105 89 66 59 75 b 39 124 40 111 39 117 b 79 199 39 148 56 180 b 145 226 101 216 122 226 b 199 210 163 226 180 220 b 235 150 223 196 235 173 b 203 92 235 128 225 107 b 122 68 181 76 150 68 z"},pluckedSnapPizzicatoAbove:{x_min:0,x_max:201,y_min:0,y_max:325,ha:325,o:"m 171 0 b 289 99 240 0 289 45 b 258 183 289 130 274 156 b 174 269 236 217 203 240 l 174 408 b 174 429 174 415 176 422 b 131 468 168 451 153 468 b 117 451 120 468 117 461 b 118 429 117 444 118 435 b 115 307 117 389 115 347 b 0 166 59 295 0 223 b 171 0 0 85 89 0 z m 134 55 b 52 131 84 55 52 85 b 115 233 52 179 81 209 b 114 192 114 220 114 206 b 174 120 114 137 114 137 l 174 228 b 233 148 200 207 223 183 b 236 130 235 143 236 135 b 197 72 236 105 223 85 b 134 55 177 60 157 55 z"},pluckedSnapPizzicatoBelow:{x_min:0,x_max:211,y_min:0,y_max:307,ha:307,o:"m 145 7 b 163 0 153 3 158 0 b 173 23 170 0 173 7 l 173 140 l 170 140 l 170 163 l 171 163 b 206 170 179 164 193 166 b 304 287 264 186 304 233 b 281 354 304 308 297 333 b 118 442 240 412 186 439 b 0 324 69 442 0 370 b 115 176 0 266 55 202 l 115 56 b 145 7 114 33 125 19 z m 115 220 b 62 256 92 223 73 230 b 53 292 56 269 53 281 b 78 344 53 311 60 328 b 168 384 105 372 135 384 b 213 376 183 384 199 382 b 253 321 239 366 253 346 b 246 291 253 311 251 301 b 170 226 230 256 203 236 l 170 258 b 148 305 171 278 163 292 b 128 315 143 310 135 315 l 124 315 b 115 301 117 314 115 308 z"},pluckedLeftHandPizzicato:{x_min:0,x_max:271,y_min:0,y_max:284,ha:284,o:"m 213 0 b 223 14 222 0 223 7 b 222 35 223 22 222 29 l 222 176 b 373 170 272 174 323 170 b 390 180 382 170 390 171 l 390 184 b 347 232 386 207 382 232 b 219 238 307 233 266 235 l 219 364 b 171 409 219 395 193 409 b 156 393 160 409 156 402 b 158 370 156 384 158 376 l 158 240 b 16 239 115 240 66 239 b 0 226 7 239 0 238 l 0 223 b 50 179 1 203 29 179 b 158 177 86 179 122 179 l 158 63 b 161 29 158 52 158 40 b 213 0 166 -1 194 1 z"},keyboardPedalPed:{x_min:0,x_max:944,y_min:-13,y_max:550,ha:563,o:"m 22 0 b 109 78 53 0 105 46 l 144 333 b 163 376 147 347 140 372 b 364 465 238 390 301 426 b 454 599 416 497 454 540 b 452 618 454 605 454 612 b 320 770 442 694 396 747 b 248 779 295 778 272 779 b 193 778 229 779 212 779 b 160 780 181 778 167 775 b 137 792 153 789 144 791 b 109 789 128 792 118 789 b 7 719 59 789 48 737 b 23 708 16 714 20 708 b 36 710 29 710 33 710 b 53 684 52 710 53 698 l 53 674 b 43 386 53 577 53 482 b 20 164 36 312 30 238 b 1 30 14 120 7 75 b 0 19 0 26 0 22 b 22 0 0 9 4 0 z m 171 425 b 156 442 160 425 156 429 b 157 475 157 452 157 464 b 164 602 161 517 164 560 b 161 698 164 635 163 667 b 184 729 161 720 167 729 l 193 729 b 348 563 278 719 348 641 b 346 539 348 554 347 547 b 171 425 328 459 229 422 z m 979 6 b 1008 13 986 6 995 9 b 1081 101 1047 29 1079 46 b 1116 449 1087 217 1104 333 b 1143 654 1123 518 1133 586 b 1148 685 1145 664 1148 675 b 1140 704 1148 693 1146 700 b 1107 716 1130 713 1119 716 b 1056 706 1092 716 1073 710 b 1037 671 1035 703 1038 685 b 1004 439 1025 595 1014 517 b 986 419 1001 428 999 419 b 979 419 985 419 982 420 b 935 426 965 423 949 425 b 795 376 884 426 838 405 b 664 153 714 323 664 249 b 665 130 664 145 665 138 b 753 29 671 65 704 29 b 815 40 773 29 792 33 b 975 147 873 65 923 101 b 965 45 971 108 968 76 b 979 6 963 17 966 6 z m 393 -17 b 634 145 494 16 579 52 b 638 160 636 151 638 156 b 625 168 638 166 634 168 b 621 167 624 168 622 168 b 524 118 582 164 544 160 b 495 79 517 104 505 92 b 435 33 471 49 452 33 b 380 96 416 33 397 55 b 369 145 373 114 369 131 b 442 225 369 186 395 213 b 468 232 451 228 459 229 b 654 344 539 255 606 285 b 677 395 667 360 677 376 b 672 415 677 402 675 408 b 612 459 661 442 639 455 b 589 461 602 461 592 461 b 348 328 500 461 409 408 b 269 120 302 268 269 199 b 379 -19 269 45 318 -19 b 393 -17 383 -19 389 -19 z m 395 240 b 494 383 418 300 452 344 l 521 405 b 544 419 528 409 536 418 b 554 415 547 419 550 418 b 570 383 564 406 570 396 l 570 379 b 552 331 570 360 562 344 b 395 240 511 285 462 253 z m 827 89 b 792 111 815 89 804 96 b 766 204 775 131 766 158 b 845 360 772 256 799 314 b 871 372 854 369 863 372 b 897 366 880 372 888 369 b 978 279 942 353 963 320 b 976 259 981 272 981 265 b 858 104 942 203 909 147 b 827 89 847 94 837 89 z m 1282 12 b 1336 35 1303 14 1320 23 b 1359 71 1351 45 1359 58 b 1338 102 1359 82 1352 95 b 1254 130 1312 118 1284 130 b 1187 88 1223 130 1202 109 b 1178 65 1182 81 1178 72 b 1195 37 1178 55 1182 45 b 1282 12 1223 23 1253 19 z"},keyboardPedalUp:{x_min:0,x_max:436.6015132318337,y_min:0,y_max:461,ha:461,o:"m 330 0 b 334 1 331 0 333 0 b 340 12 338 4 340 7 l 338 26 b 340 264 338 105 338 184 b 526 95 400 206 461 148 b 559 71 536 88 547 71 b 564 72 560 71 563 71 b 580 121 580 79 580 102 l 580 127 b 543 203 585 158 573 184 b 472 259 518 219 495 238 l 445 285 b 590 292 494 288 541 291 b 622 318 609 294 618 302 b 628 359 625 331 626 346 b 586 402 632 393 621 405 b 464 395 546 399 504 396 l 559 491 b 567 524 567 500 567 510 b 564 543 567 527 567 536 b 539 596 559 563 560 590 b 494 564 521 600 508 577 b 340 413 442 514 390 464 l 340 560 b 287 664 340 600 321 632 b 271 518 274 612 272 566 b 268 445 269 494 269 469 b 117 569 219 488 168 530 b 96 579 109 575 102 579 b 85 560 89 579 85 573 b 124 446 85 518 82 477 b 209 380 153 426 181 403 b 45 374 154 377 99 376 b 0 324 9 374 0 359 b 63 266 0 265 1 265 b 144 272 89 269 117 272 l 196 272 b 108 193 167 246 138 219 b 60 135 76 164 60 151 b 99 73 60 121 73 105 b 104 68 101 72 102 71 b 114 58 107 60 111 58 b 130 66 120 58 124 62 b 259 186 173 107 217 145 b 256 117 259 163 256 140 b 311 13 256 72 271 37 b 330 0 317 10 323 0 z"},pictChokeCymbal:{x_min:1,x_max:147,y_min:0,y_max:242,ha:242,o:"m 79 4 b 207 158 153 32 192 88 b 212 200 210 173 212 187 b 143 336 212 253 187 298 b 98 348 131 344 115 348 b 4 295 60 348 16 327 b 1 276 1 289 1 282 b 9 249 1 266 3 258 b 121 183 35 206 72 183 b 156 186 132 183 144 183 b 26 53 134 115 91 73 b 7 39 13 49 7 45 b 19 20 7 33 12 27 b 59 0 30 9 43 0 b 79 4 65 0 72 1 z"},wiggleArpeggiatoUp:{x_min:-22,x_max:300,y_min:0,y_max:176,ha:176,o:"m 173 4 b 196 0 180 1 189 0 b 246 26 215 0 230 9 b 301 117 271 53 285 85 b 312 131 305 125 307 131 b 327 124 315 131 321 128 b 373 86 341 112 353 101 b 412 69 389 75 402 69 b 432 94 425 69 432 79 b 373 181 432 117 413 154 b 235 252 323 216 285 245 b 220 253 229 253 225 253 b 168 215 196 253 181 240 b 111 112 151 180 140 141 b 94 102 105 105 99 102 b 78 111 89 102 84 105 b 0 181 55 135 35 160 b -32 153 -20 194 -32 168 b 0 86 -32 124 -32 109 b 94 36 22 71 73 46 b 173 4 134 16 131 17 z"},arpeggiatoUp:{x_min:0,x_max:262,y_min:0,y_max:1459,ha:1459,o:"m 190 0 b 160 63 187 29 170 45 b 145 108 150 81 145 95 b 183 163 145 128 157 145 b 300 246 222 190 262 216 b 347 318 333 272 347 295 b 301 393 347 341 331 364 b 258 413 289 403 272 408 b 145 449 220 425 183 436 b 117 464 135 452 120 452 b 140 491 115 477 128 484 b 294 593 192 526 243 557 b 330 647 318 611 330 626 b 314 693 330 660 324 675 b 262 736 302 714 285 729 b 170 763 230 744 200 753 b 122 783 153 768 125 768 b 160 831 120 804 143 818 b 288 922 202 861 246 890 b 333 999 318 945 333 972 b 266 1083 333 1032 310 1064 b 189 1115 240 1094 215 1103 b 122 1178 145 1133 122 1153 b 168 1250 122 1200 138 1223 l 180 1257 b 269 1333 210 1283 240 1306 b 305 1405 294 1356 305 1381 b 284 1469 305 1426 298 1447 b 228 1525 269 1492 251 1511 b 183 1600 197 1545 183 1571 b 190 1640 183 1613 184 1626 b 197 1670 193 1650 194 1660 b 272 1735 213 1719 230 1735 b 295 1734 279 1735 287 1735 b 323 1732 305 1732 314 1732 b 350 1731 333 1732 341 1732 b 377 1742 369 1729 377 1732 b 370 1761 377 1747 374 1754 l 301 1898 b 217 2066 274 1954 248 2012 b 186 2101 204 2089 196 2101 b 154 2069 177 2101 167 2091 b 12 1824 105 1987 59 1907 b 0 1787 4 1810 0 1797 b 59 1744 0 1761 20 1745 b 160 1738 92 1744 125 1740 b 145 1692 156 1721 151 1706 b 135 1633 138 1672 135 1652 b 184 1518 135 1591 151 1552 b 229 1475 199 1503 213 1488 b 259 1431 249 1456 259 1444 b 229 1388 259 1420 249 1407 b 151 1325 203 1365 177 1345 b 105 1279 134 1310 118 1296 b 73 1202 84 1251 73 1227 b 108 1123 73 1176 85 1152 b 255 1031 148 1077 199 1051 b 282 1014 274 1025 282 1021 b 262 991 282 1008 275 1001 b 151 914 226 963 189 939 b 79 851 125 896 99 877 b 63 809 69 837 63 824 b 79 769 63 796 68 783 b 202 697 111 729 154 710 b 266 670 225 690 266 688 b 210 622 266 648 232 635 b 82 534 167 593 120 570 b 55 491 63 518 55 505 b 79 448 55 478 63 465 b 255 361 127 395 192 380 b 288 343 269 359 288 357 b 266 312 288 331 275 320 b 144 223 229 278 184 253 b 85 134 104 193 85 166 b 118 53 85 111 96 85 b 190 0 135 29 160 14 z"},arpeggiatoDown:{x_min:0,x_max:218,y_min:0,y_max:1440,ha:1440,o:"m 161 16 b 310 261 210 98 259 180 b 314 275 312 266 314 271 b 302 295 314 282 310 289 b 252 311 287 308 269 311 b 217 310 240 311 229 310 b 190 333 202 310 194 315 b 151 412 186 363 171 389 b 102 501 120 452 102 477 b 150 588 102 524 118 547 b 161 603 154 592 158 598 b 181 661 176 622 181 641 b 173 704 181 675 179 690 b 86 795 156 746 121 770 b 53 829 63 811 53 819 b 78 868 53 840 62 851 b 102 888 85 876 94 883 b 180 956 128 912 156 933 b 216 1028 204 979 216 1002 b 203 1081 216 1044 212 1061 b 115 1171 186 1123 148 1145 b 75 1221 88 1191 75 1207 b 114 1272 75 1237 88 1251 b 173 1308 132 1284 154 1296 b 226 1339 190 1318 209 1328 b 265 1405 253 1359 265 1380 b 258 1447 265 1418 264 1431 b 154 1541 242 1499 199 1521 b 109 1581 124 1555 109 1567 b 141 1627 109 1594 121 1608 b 204 1680 163 1646 184 1662 b 233 1742 223 1699 233 1719 b 226 1777 233 1752 230 1764 b 135 1862 210 1822 173 1840 b 104 1895 114 1875 104 1884 b 118 1930 104 1904 109 1914 b 192 2006 135 1961 161 1986 b 206 2029 203 2013 206 2022 b 192 2064 206 2040 197 2052 b 180 2074 187 2071 184 2074 b 156 2061 171 2074 163 2065 b 84 1983 125 2040 102 2013 b 65 1921 71 1961 65 1941 b 88 1853 65 1899 72 1876 b 171 1784 108 1820 138 1801 b 190 1764 184 1777 190 1770 b 174 1741 190 1757 184 1750 b 107 1683 153 1722 128 1704 b 68 1610 81 1659 68 1636 b 88 1548 68 1591 75 1571 b 177 1470 109 1512 141 1489 b 223 1431 209 1453 223 1443 b 179 1390 223 1420 209 1408 b 128 1361 163 1380 145 1371 b 71 1322 108 1348 88 1338 b 32 1253 45 1300 32 1277 b 48 1198 32 1236 37 1218 b 147 1090 71 1152 108 1120 b 174 1057 166 1076 174 1067 b 153 1022 174 1047 167 1037 b 109 982 140 1008 124 995 b 37 919 85 962 59 942 b 9 860 17 899 9 880 b 26 806 9 844 14 827 b 120 717 50 769 84 740 b 138 691 132 708 138 700 b 130 668 138 684 135 677 b 92 618 118 651 105 635 b 59 531 71 589 59 560 b 84 455 59 507 68 481 b 132 386 98 431 115 408 b 148 341 144 372 148 357 b 144 317 148 333 147 324 b 121 305 140 307 131 305 l 98 305 b 82 304 94 304 88 304 l 32 304 b 0 292 10 304 0 302 b 12 266 0 287 4 279 b 60 164 32 233 46 199 b 127 20 84 117 105 68 b 144 0 132 9 137 0 b 161 16 150 0 154 4 z"},repeat1Bar:{x_min:0,x_max:599.1057280164835,y_min:-250,y_max:175,ha:425,o:"m 216 98 b 255 75 236 84 246 75 b 291 104 265 75 274 85 b 323 147 304 117 327 125 b 289 215 323 168 314 184 b 238 252 269 239 253 252 b 187 222 222 252 207 242 b 173 206 183 216 177 212 b 157 170 163 194 157 183 b 174 138 157 160 161 150 b 216 98 189 127 200 109 z m 76 -334 b 181 -285 111 -315 148 -302 b 831 52 396 -168 613 -58 b 863 114 855 63 864 82 b 828 202 855 140 855 176 b 808 213 821 209 815 213 b 793 209 804 213 799 212 l 422 19 b 26 -179 291 -48 164 -124 b 0 -213 10 -186 0 -196 b 3 -232 0 -219 0 -225 b 52 -325 14 -265 37 -294 b 66 -337 55 -331 59 -337 b 76 -334 69 -337 72 -336 z m 769 -360 b 829 -264 779 -360 829 -284 b 769 -176 822 -232 799 -200 b 742 -163 760 -167 750 -163 b 716 -184 733 -163 723 -168 b 683 -228 708 -202 693 -213 b 672 -253 675 -236 672 -245 b 683 -281 672 -262 675 -271 b 752 -353 703 -308 732 -327 b 769 -360 756 -357 763 -360 z"},repeat2Bars:{x_min:.008571918423331715,x_max:775,y_min:-246.92374029115243,y_max:362.82068246705313,ha:609.7444227582056,o:"m 909 412 b 873 351 906 384 893 367 b 436 50 729 249 585 147 l 91 -179 b 62 -174 76 -189 68 -183 b 12 -96 48 -147 24 -125 b 36 -16 -7 -53 -6 -43 b 220 104 96 24 158 65 b 819 507 425 232 624 369 b 881 495 852 530 861 528 b 909 412 899 469 900 439 z m 333 338 b 302 240 330 307 317 274 b 276 235 297 225 287 228 l 233 269 b 203 376 186 307 183 318 b 225 441 212 397 217 419 b 246 454 228 452 232 458 b 333 338 284 441 333 380 z m 1116 228 b 1067 158 1115 192 1092 174 b 910 59 1015 125 963 92 b 478 -240 762 -33 622 -140 b 311 -350 423 -279 366 -314 b 285 -344 298 -360 289 -356 b 239 -258 272 -314 251 -288 b 261 -196 228 -228 235 -210 b 517 -29 348 -144 436 -91 b 1030 321 681 98 861 202 b 1093 307 1060 343 1076 340 b 1116 228 1107 281 1109 252 z m 1070 -105 b 1020 -210 1057 -143 1038 -176 b 998 -210 1014 -219 1004 -215 l 924 -153 b 913 -88 899 -135 897 -112 b 949 -22 926 -66 939 -45 b 998 -7 960 6 976 9 b 1070 -105 1032 -32 1058 -63 z"},repeat4Bars:{x_min:0,x_max:1374,y_min:-304,y_max:304,ha:608,o:"m 78 -266 b 92 -258 82 -266 88 -264 b 114 -240 98 -251 107 -246 b 638 107 289 -125 467 -14 b 873 271 716 161 793 216 b 907 337 894 285 906 305 b 887 400 901 354 897 379 b 852 438 877 426 867 438 b 814 420 842 438 829 432 b 135 -33 592 262 366 111 b 12 -121 92 -60 48 -84 b 0 -144 4 -128 0 -135 b 4 -160 0 -148 1 -154 b 63 -255 17 -196 45 -223 b 78 -266 68 -262 72 -266 z m 291 148 b 325 223 302 148 308 170 b 333 256 328 235 330 246 b 264 363 330 305 298 336 b 242 373 255 369 248 373 b 220 347 232 373 225 364 b 202 288 216 327 213 305 b 190 252 193 275 190 262 b 222 200 190 232 202 215 b 291 148 264 170 279 148 z m 815 -367 b 829 -359 819 -367 824 -364 b 851 -343 835 -353 844 -347 b 1375 6 1027 -228 1205 -117 l 1610 170 b 1644 235 1632 184 1643 203 b 1626 300 1639 253 1634 276 b 1590 337 1614 325 1604 337 b 1551 320 1580 337 1567 330 b 873 -135 1329 161 1103 10 b 749 -222 829 -161 785 -184 b 737 -245 742 -230 737 -238 b 742 -261 737 -249 739 -255 b 802 -357 755 -297 782 -325 b 815 -367 805 -363 809 -367 z m 396 -360 b 408 -356 400 -360 403 -359 b 609 -223 471 -307 543 -269 b 896 -19 706 -156 795 -81 b 1164 154 985 37 1074 96 b 1214 223 1189 170 1211 187 b 1176 321 1204 253 1205 292 b 1159 330 1169 327 1165 330 b 1145 324 1155 330 1151 328 b 1048 258 1113 302 1081 278 b 357 -202 809 117 598 -65 b 333 -238 341 -212 333 -223 b 338 -262 333 -245 334 -253 b 384 -350 350 -294 372 -318 b 396 -360 386 -354 390 -360 z m 1162 -438 b 1174 -433 1166 -438 1169 -436 b 1374 -300 1237 -384 1309 -346 b 1660 -96 1470 -233 1561 -158 b 1930 76 1751 -39 1840 19 b 1979 147 1954 92 1977 109 b 1943 243 1968 177 1971 216 b 1924 253 1935 251 1930 253 b 1911 248 1920 253 1915 252 b 1814 181 1878 225 1848 202 b 1123 -279 1575 40 1364 -141 b 1099 -315 1106 -289 1099 -300 b 1103 -338 1099 -321 1100 -330 b 1149 -426 1115 -370 1138 -396 b 1162 -438 1151 -432 1156 -438 z m 1875 -295 b 1882 -291 1878 -295 1879 -294 b 1934 -189 1904 -258 1921 -223 b 1872 -96 1925 -147 1901 -120 b 1840 -78 1858 -84 1848 -78 b 1812 -109 1830 -78 1823 -88 l 1777 -173 b 1770 -199 1773 -181 1770 -190 b 1786 -230 1770 -210 1774 -220 b 1862 -289 1809 -253 1837 -269 b 1875 -295 1865 -292 1871 -295 z"},repeatBarSlash:{x_min:0,x_max:630,y_min:-225.19160170741762,y_max:265.12618221237005,ha:490.31778391978764,o:"m 78 -324 b 92 -314 82 -325 88 -321 b 114 -298 96 -307 107 -302 b 638 49 289 -183 467 -72 b 873 215 716 104 792 161 b 907 279 894 229 906 248 b 887 344 901 298 897 321 b 852 382 877 369 867 380 b 814 363 842 383 829 376 b 135 -91 603 192 364 55 b 12 -177 92 -118 45 -137 b 0 -202 4 -186 0 -192 b 4 -217 0 -206 1 -212 b 63 -312 17 -253 42 -284 b 78 -324 68 -318 72 -323 z"},csymDiminished:{x_min:0,x_max:506,y_min:-.011036179317259481,y_max:500,ha:500.0110361793173,o:"m 397 0 b 729 265 576 -1 729 95 b 711 367 729 297 723 331 b 472 670 668 498 586 595 b 315 720 423 701 372 720 b 253 713 295 720 275 719 b 32 514 144 687 75 615 b 0 374 12 468 0 420 b 27 251 0 333 9 292 b 140 117 52 196 92 153 b 397 0 223 52 317 4 z m 340 95 b 132 314 233 84 122 216 b 324 589 145 438 200 539 b 415 611 360 603 389 611 b 544 505 469 611 505 576 b 590 392 564 471 583 432 b 596 343 593 374 596 359 b 340 95 596 210 485 96 z"},csymHalfDiminished:{x_min:-32,x_max:496,y_min:-33,y_max:492,ha:525,o:"m -29 -48 b 0 -36 -19 -48 -9 -40 b 17 -20 7 -32 12 -24 b 134 94 56 19 95 56 b 372 0 207 43 282 0 b 455 13 397 0 426 4 b 677 258 556 45 671 141 b 678 289 677 268 678 278 b 593 539 678 380 654 467 b 592 541 593 540 592 540 l 684 632 b 713 678 700 647 711 665 b 714 691 714 684 714 688 b 707 704 714 698 711 701 b 691 708 701 707 696 708 b 660 691 680 708 670 701 l 552 585 b 478 634 530 606 507 624 b 361 684 438 648 397 661 b 301 703 341 697 320 703 b 226 677 275 703 251 693 b 27 449 140 618 72 543 b 0 324 9 410 -4 370 b 88 128 -1 243 30 177 b -30 -7 43 86 0 46 b -46 -33 -35 -16 -46 -24 b -42 -42 -46 -36 -45 -39 b -29 -48 -37 -46 -33 -48 z m 141 179 b 121 251 128 200 121 225 b 128 297 121 265 124 281 b 351 575 163 420 248 505 b 377 582 359 579 369 580 b 501 536 422 586 468 567 b 141 179 382 416 261 298 z m 281 105 b 179 137 240 105 206 117 b 210 168 189 147 200 157 l 537 487 b 547 455 541 477 544 467 b 556 370 552 426 556 397 b 429 154 556 274 503 207 b 281 105 384 122 336 105 z"},csymAugmented:{x_min:0,x_max:530,y_min:0,y_max:539,ha:539,o:"m 380 0 b 393 14 384 4 390 9 b 397 46 397 24 397 36 l 397 333 b 736 327 511 331 624 330 b 763 343 755 327 763 333 b 755 361 763 348 760 354 b 635 431 726 402 688 431 l 390 431 l 390 485 b 386 606 392 526 386 566 b 392 664 386 625 387 645 b 395 690 393 672 395 681 b 376 753 395 711 389 734 b 357 776 372 762 369 776 b 350 775 354 776 353 776 b 327 740 337 769 327 759 b 327 621 328 700 327 661 b 330 438 328 559 328 498 l 29 438 b 4 431 20 438 7 442 b 0 413 3 425 0 419 b 7 399 0 408 1 403 b 131 338 45 369 85 340 b 331 334 199 336 265 334 b 333 163 333 276 333 220 b 366 13 333 109 348 63 b 380 0 367 7 374 4 z"},csymMajorSeventh:{x_min:0,x_max:593.1050509327923,y_min:0,y_max:569,ha:569,o:"m 124 1 l 497 27 b 819 50 605 35 711 43 b 854 98 847 52 855 63 b 812 200 845 128 835 166 b 564 585 730 328 648 456 b 435 786 521 652 480 720 b 397 819 419 809 408 819 b 369 792 387 819 379 811 b 7 173 248 585 128 379 b 0 150 3 166 0 158 b 7 128 0 143 3 135 b 89 10 30 86 65 50 b 109 0 95 1 102 0 z m 163 147 b 153 153 158 147 156 148 b 164 179 147 163 158 170 b 426 644 251 334 338 488 b 442 660 432 655 436 660 b 458 645 446 660 452 655 b 727 220 547 503 636 361 b 736 202 732 213 736 206 b 714 190 736 196 730 192 b 179 148 537 177 359 163 b 163 147 174 150 168 147 z"},csymMinor:{x_min:0,x_max:481.64484584675915,y_min:193,y_max:265.20435472429375,ha:72.20435472429375,o:"m 168 278 b 197 279 177 278 187 278 b 431 292 275 287 353 288 l 431 291 b 661 302 508 295 585 300 b 693 311 672 304 688 300 b 674 346 697 324 685 338 b 564 382 641 366 606 384 l 27 360 b 0 347 17 360 1 366 b 19 314 0 333 3 321 b 168 278 66 291 115 278 z"},csymParensLeftTall:{x_min:0,x_max:185,y_min:0,y_max:1034,ha:1034,o:"m 215 0 b 226 17 223 1 223 10 b 229 37 229 24 229 32 b 220 81 229 52 225 66 b 167 203 206 124 181 160 b 86 616 124 338 89 474 b 82 765 85 665 82 716 b 91 886 82 805 84 845 b 245 1319 120 1038 171 1184 b 266 1397 259 1346 266 1371 b 259 1443 266 1411 264 1427 b 226 1489 253 1463 248 1489 b 193 1454 212 1489 203 1467 b 114 1292 158 1404 140 1346 b 0 806 40 1138 0 978 b 3 721 0 779 0 750 b 1 677 1 707 1 693 b 36 418 1 593 16 504 b 144 96 62 307 95 199 b 196 12 158 66 179 39 b 212 0 200 7 204 0 z"},csymParensRightTall:{x_min:-40,x_max:188.5411603861406,y_min:.20204102886728756,y_max:1058,ha:1057.7979589711326,o:"m 30 1 b 63 14 42 -3 55 6 b 122 99 86 40 108 68 b 189 258 145 153 166 204 b 271 667 239 379 268 503 b 246 852 275 708 261 780 b 10 1495 197 1077 128 1295 b -14 1524 4 1505 1 1524 b -16 1522 -14 1524 -16 1524 b -46 1489 -33 1521 -43 1503 b -58 1417 -53 1464 -58 1440 b -36 1335 -58 1390 -52 1364 b 68 1138 0 1270 35 1204 b 163 883 108 1056 137 969 b 206 668 184 814 200 742 b 207 631 207 655 207 642 b 166 426 207 560 192 492 b 46 143 130 330 111 228 b 19 29 19 109 17 69 b 30 1 20 19 24 3 z"},csymBracketLeftTall:{x_min:0,x_max:328,y_min:2,y_max:807,ha:805,o:"m 68 3 b 76 4 71 3 73 3 b 186 13 112 12 150 13 b 240 13 204 13 222 13 l 287 13 b 379 17 317 13 348 13 b 472 121 435 24 472 69 b 467 156 472 132 469 144 b 446 174 462 168 456 174 l 439 174 b 327 166 402 167 364 166 b 265 167 307 166 285 167 l 209 167 b 187 475 199 269 189 372 b 166 985 186 645 187 815 l 377 1002 b 415 1001 389 1002 402 1001 b 456 1027 432 1001 448 1005 b 472 1096 467 1048 472 1073 b 464 1146 472 1113 469 1130 b 439 1162 459 1161 452 1162 b 40 1129 305 1151 173 1139 b 1 1093 17 1128 1 1120 b 0 1009 0 1064 0 1037 b 13 975 0 991 3 981 b 30 670 23 873 30 772 b 29 608 30 649 29 628 l 29 563 b 56 88 29 405 49 246 b 53 22 55 66 55 43 b 68 3 53 12 56 3 z"},csymBracketRightTall:{x_min:.8519422934604696,x_max:306,y_min:-.17180889215212544,y_max:829.1037519824849,ha:829.2755608746371,o:"m 117 0 b 372 29 203 -3 287 20 l 373 29 b 406 32 383 30 395 30 b 436 60 428 33 432 43 b 441 109 439 76 441 92 b 433 200 441 140 436 170 b 409 696 422 366 409 530 b 416 887 409 763 416 831 b 415 920 416 899 415 910 l 415 1106 b 412 1135 415 1116 415 1126 l 412 1145 b 373 1189 413 1171 408 1192 b 321 1189 356 1189 338 1189 l 215 1189 l 215 1194 l 56 1194 b 6 1153 27 1195 10 1187 b 1 1064 3 1123 4 1093 b 22 1043 0 1050 6 1043 b 84 1044 42 1044 63 1044 b 264 1038 144 1044 203 1040 b 265 958 264 1011 265 985 b 262 845 265 920 264 883 b 259 710 259 801 259 755 b 279 243 259 554 271 399 b 285 170 281 219 284 194 b 95 151 222 161 158 156 b 29 81 27 147 27 147 l 29 73 b 105 0 33 0 33 0 z"},csymParensLeftVeryTall:{x_min:0,x_max:116,y_min:0,y_max:934.1531437146923,ha:934.1531437146923,o:"m 128 0 b 147 17 137 0 144 9 b 167 102 160 45 167 73 b 158 154 167 120 164 137 b 117 307 141 204 130 256 b 63 698 84 435 71 567 b 62 788 62 729 62 757 b 69 916 62 829 63 873 b 109 1172 81 1001 94 1087 b 132 1320 118 1221 137 1269 b 124 1345 131 1329 134 1342 b 96 1332 114 1346 102 1341 b 71 1269 82 1313 75 1292 b 39 1104 59 1214 48 1159 b 0 742 19 988 0 871 b 10 559 3 688 6 624 b 58 226 16 446 33 336 b 112 20 73 157 94 89 b 128 0 115 13 118 0 z"},csymParensRightVeryTall:{x_min:-20,x_max:111.4332498248095,y_min:-.07657185734616112,y_max:1009,ha:1009.0765718573462,o:"m -3 0 b 20 22 9 -1 14 12 b 36 56 26 33 32 45 b 99 274 58 128 84 199 b 160 788 135 439 163 605 b 122 1181 164 912 145 1047 b 50 1431 108 1267 86 1351 b 36 1453 48 1439 46 1453 l 35 1453 l 30 1453 b 7 1423 17 1449 7 1440 b 27 1287 9 1377 10 1331 b 96 963 71 1184 85 1074 b 105 818 102 914 105 867 b 91 624 105 753 99 688 b -4 213 72 484 48 344 b -29 101 -19 174 -29 138 b -16 27 -29 76 -24 52 b -3 0 -13 17 -14 3 z"},csymDiagonalArrangementSlash:{x_min:-.19862981551275186,x_max:990,y_min:-26.946823529189132,y_max:1027.5514326488437,ha:1054.4982561780328,o:"m 14 -37 b 58 -9 35 -45 46 -22 b 392 333 170 105 279 217 l 765 711 b 1372 1329 968 916 1168 1125 b 1424 1439 1403 1359 1417 1397 b 1426 1457 1424 1444 1426 1450 b 1416 1477 1426 1466 1423 1475 b 1374 1462 1400 1485 1385 1473 b 1181 1269 1309 1397 1246 1331 b 736 831 1031 1122 884 979 b 356 452 609 704 485 576 b 32 132 246 347 143 236 b 0 50 7 109 1 84 b 6 9 -1 37 3 23 b 14 -37 10 -9 0 -32 z"},accidentalNarrowReversedFlat:{x_min:0,x_max:208,y_min:-231,y_max:449,ha:680,o:"m 272 -333 b 284 -320 278 -333 281 -328 b 300 -174 297 -272 300 -222 b 275 190 298 -52 279 68 b 268 445 272 275 268 360 l 268 490 b 264 612 269 530 265 572 b 236 647 264 632 252 645 l 235 647 b 217 618 220 647 220 628 b 207 526 210 588 207 556 b 210 432 207 494 210 464 b 216 268 213 377 215 323 l 216 230 l 215 232 b 154 256 194 240 174 251 b 111 264 138 261 124 264 b 3 153 50 264 10 223 b 0 94 0 132 0 114 b 194 -276 0 -63 68 -186 b 255 -323 215 -291 236 -307 b 272 -333 262 -330 268 -333 z m 233 -138 b 71 30 168 -92 105 -45 b 63 59 65 42 63 50 b 96 95 62 75 73 86 b 130 102 108 99 120 102 b 215 76 160 102 187 88 l 220 73 b 225 -22 220 42 222 10 b 233 -138 229 -62 230 -101 z"},accidentalNarrowReversedFlatAndFlat:{x_min:0,x_max:335,y_min:-231,y_max:449,ha:680,o:"m 151 490 b 148 612 151 530 150 572 b 132 647 148 632 141 645 b 122 618 124 647 124 628 b 117 526 118 588 117 556 b 118 432 117 494 118 464 b 121 268 120 377 121 323 l 121 232 b 86 256 109 240 98 251 b 62 264 78 261 69 264 b 1 153 29 264 6 223 b 0 94 0 132 0 114 b 109 -276 0 -63 37 -186 b 144 -323 121 -291 132 -307 b 153 -333 147 -330 151 -333 b 160 -320 157 -333 158 -328 b 168 -174 167 -272 168 -222 b 154 190 168 -52 157 68 b 151 445 153 275 151 360 z m 480 153 b 372 264 472 223 432 264 b 328 256 359 264 344 261 b 268 232 308 251 288 240 l 266 230 l 266 268 b 272 432 266 323 269 377 b 275 526 272 464 275 494 b 265 618 275 556 272 588 b 248 647 262 628 262 647 l 246 647 b 219 612 230 645 219 632 b 215 490 217 572 213 530 l 215 445 b 207 190 215 360 210 275 b 183 -174 203 68 183 -52 b 199 -320 183 -222 186 -272 b 210 -333 202 -328 204 -333 b 228 -323 215 -333 220 -330 b 288 -276 246 -307 268 -291 b 482 94 415 -186 482 -63 b 480 153 482 114 482 132 z m 40 30 b 36 59 36 42 36 50 b 55 95 35 75 42 86 b 73 102 60 99 68 102 b 121 76 89 102 105 88 l 124 73 b 127 -22 124 42 125 10 l 131 -138 b 40 30 95 -92 60 -43 z m 419 59 b 412 30 419 50 418 42 b 249 -138 374 -43 314 -92 b 258 -22 252 -101 253 -62 b 262 73 261 10 262 42 l 268 76 b 353 102 295 88 323 102 b 386 95 363 102 374 99 b 419 59 409 86 420 75 z"},accidentalWilsonPlus:{x_min:0,x_max:298,y_min:-218,y_max:218,ha:436,o:"m 232 -314 b 236 -301 236 -310 236 -305 l 236 -295 b 243 -52 239 -213 242 -132 l 369 62 b 429 200 413 101 425 147 b 416 243 429 216 428 236 b 383 225 406 251 393 232 l 377 220 b 246 98 336 177 291 138 b 249 242 248 145 246 193 b 225 304 251 265 242 287 b 209 314 220 308 215 314 b 204 312 207 314 206 312 b 196 292 196 310 196 300 b 193 184 194 256 194 220 b 187 48 192 140 190 94 b 46 -72 141 7 94 -32 b 0 -163 13 -98 0 -127 b 1 -187 0 -170 0 -179 b 10 -235 4 -203 6 -219 b 20 -255 12 -242 14 -251 b 36 -245 26 -259 30 -249 b 181 -109 85 -200 132 -154 b 176 -258 180 -158 176 -209 b 232 -314 176 -298 186 -307 z"},accidentalWilsonMinus:{x_min:0,x_max:284.2093390143919,y_min:-163,y_max:163,ha:326,o:"m 386 -232 b 409 -163 415 -222 408 -180 b 382 -69 410 -120 408 -89 b 32 228 264 30 141 118 b 17 235 26 233 22 235 b 3 219 9 235 3 228 b 0 157 3 199 0 179 b 29 69 0 125 6 95 b 323 -194 115 -29 222 -111 b 374 -235 338 -206 353 -235 b 386 -232 377 -235 382 -233 z"}},fontFamily:"Petaluma",resolution:1e3,generatedOn:"2022-06-26T17:47:23.560Z"},metrics:{name:"Petaluma",smufl:!0,stave:{padding:15,endPaddingMax:15,endPaddingMin:7,unalignedNotePadding:12},accidental:{noteheadAccidentalPadding:1,leftPadding:2,accidentalSpacing:3},clef:{default:{point:32,width:26},small:{point:26,width:20},annotations:{"8va":{smuflCode:"timeSig8",default:{point:18,treble:{line:-1.4,shiftX:12}},small:{point:16,treble:{line:-.2,shiftX:8}}},"8vb":{smuflCode:"timeSig8",default:{point:18,treble:{line:6,shiftX:10},bass:{line:3.5,shiftX:1}},small:{point:16,treble:{line:5.3,shiftX:6},bass:{line:3.1,shiftX:.5}}}},lineCount:{8:{point:55,shiftY:14},7:{point:47,shiftY:8},6:{point:32,shiftY:1},5:{point:30,shiftY:-6},4:{point:23,shiftY:-12}}},parenthesis:{default:{point:39,width:7},gracenote:{point:23.4,width:3}},pedalMarking:{up:{point:40},down:{point:34}},digits:{shiftLine:-1,point:22,tupletPoint:16,shiftY:-2},articulation:{articStaccatissimoAbove:{padding:2},articStaccatissimoBelow:{padding:2}},tremolo:{default:{point:25,spacing:5,offsetYStemUp:-5,offsetYStemDown:5,offsetXStemUp:13,offsetXStemDown:1},grace:{point:18,spacing:4,offsetYStemUp:-5,offsetYStemDown:5,offsetXStemUp:8,offsetXStemDown:1}},staveRepetition:{symbolText:{offsetX:12,offsetY:25,spacing:5},coda:{offsetY:25},segno:{offsetY:10}},noteHead:{displaced:{shiftX:-2}},stem:{heightAdjustmentForFlag:-3,noteHead:{noteheadTriangleUpHalf:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpBlack:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpWhole:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadXHalf:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXBlack:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXWhole:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadHalf:{offsetYBaseStemDown:1.8,offsetYBaseStemUp:-1.8},noteheadBlack:{offsetYBaseStemDown:2,offsetYBaseStemUp:-2},noteheadSquareWhite:{offsetYBaseStemDown:-5,offsetYBaseStemUp:5}}},glyphs:{coda:{point:20,shiftX:-7,shiftY:8},segno:{shiftX:-7},flag:{shiftX:-.77,flag16thUp:{shiftX:-.75},flag32ndUp:{shiftX:-.85},flag64thUp:{shiftX:-1.55},flag128thUp:{shiftX:-1.3},flag16thDown:{shiftX:-.75},flag32ndDown:{shiftX:-.76},flag64thDown:{shiftX:-1.5},flag128thDown:{shiftX:-1.2},staveTempo:{shiftX:-1}},clef:{gClef:{default:{scale:1.1,shiftY:1},small:{shiftY:1.5}},fClef:{default:{shiftY:-.5}}},ornament:{ornamentTurn:{scale:1.2},ornamentTurnSlash:{scale:1.2}},stringNumber:{verticalPadding:8,stemPadding:2,leftPadding:5,rightPadding:6},stroke:{arrowheadBlackDown:{straight:{shiftX:-4.5},wiggly:{shiftX:-1,shiftY:1}},arrowheadBlackUp:{straight:{shiftX:-.85},wiggly:{shiftX:-1,shiftY:1}}},textNote:{point:34,breathMarkTick:{point:36,shiftY:9},breathMarkComma:{point:36},segno:{point:30,shiftX:-7,shiftY:8},coda:{point:20,shiftX:-7,shiftY:8},ornamentTrill:{shiftX:-10,shiftY:8},ornamentMordent:{shiftX:-8},ornamentShortTrill:{shiftX:-8}},noteHead:{minPadding:2,standard:{noteheadBlackStemUp:{shiftX:.5},noteheadHalfStemUp:{shiftX:.725},noteheadWholeStemUp:{shiftX:1}},custom:{noteheadCircleXStemUp:{shiftX:-1},noteheadCircleXStemDown:{shiftX:.25},noteheadDiamondHalfStemUp:{shiftX:1.5},noteheadDiamondBlackStemUp:{shiftX:1.5},noteheadDiamondWholeStemUp:{shiftX:1},noteheadXBlackStemUp:{shiftX:1},noteheadXHalfStemUp:{shiftX:-3},noteheadXHalfStemDown:{shiftX:1},noteheadXWholeStemUp:{shiftX:-7},noteheadXWholeStemDown:{shiftX:1},noteheadXDoubleWholeStemUp:{shiftX:-12},noteheadXDoubleWholeStemDown:{shiftX:-4},noteheadSquareWhiteStemDown:{shiftX:.25},noteheadSquareWhiteStemUp:{shiftX:-.75},noteheadSquareBlackStemUp:{shiftX:-.75},noteheadTriangleUpWholeStemUp:{shiftX:-.75}}},chordSymbol:{global:{superscriptOffset:-400,subscriptOffset:300,kerningOffset:-150,lowerKerningText:["D","F","P","T","V","Y"],upperKerningText:["L"],spacing:20,superSubRatio:.73},csymDiminished:{scale:.8,leftSideBearing:-95,advanceWidth:506,yOffset:0},csymHalfDiminished:{scale:.8,leftSideBearing:-32,advanceWidth:506,yOffset:0},csymAugmented:{scale:1,leftSideBearing:-25,advanceWidth:530,yOffset:0},csymParensLeftTall:{scale:.8,leftSideBearing:0,advanceWidth:155,yOffset:150},csymParensRightTall:{scale:.8,leftSideBearing:40,advanceWidth:189,yOffset:150},csymBracketLeftTall:{scale:.8,leftSideBearing:0,advanceWidth:328,yOffset:0},csymBracketRightTall:{scale:.8,leftSideBearing:1,advanceWidth:600,yOffset:0},csymParensLeftVeryTall:{scale:.95,leftSideBearing:0,advanceWidth:210,yOffset:250},csymParensRightVeryTall:{scale:.9,leftSideBearing:-100,advanceWidth:111,yOffset:250},csymDiagonalArrangementSlash:{scale:.6,leftSideBearing:-1,advanceWidth:990,yOffset:0},csymMinor:{scale:.7,leftSideBearing:0,advanceWidth:482,yOffset:0},csymMajorSeventh:{scale:.8,leftSideBearing:100,yOffset:0,advanceWidth:600},accidentalSharp:{scale:.7,leftSideBearing:0,advanceWidth:425,yOffset:-422},accidentalFlat:{scale:.8,leftSideBearing:-10,advanceWidth:228,yOffset:-284}},jazzOrnaments:{brassScoop:{scale:1,xOffset:-12,yOffset:0,stemUpYOffset:0,reportedWidth:15},brassDoitMedium:{scale:1,xOffset:16,yOffset:0,stemUpYOffset:0,reportedWidth:19},brassFallLipShort:{scale:1,xOffset:16,yOffset:0,stemUpYOffset:0,reportedWidth:19},brassLiftMedium:{scale:1,xOffset:16,yOffset:5,stemUpYOffset:0,reportedWidth:15},brassFallRoughMedium:{scale:1,xOffset:16,yOffset:26,stemUpYOffset:0,reportedWidth:5},brassBend:{scale:1,xOffset:3,yOffset:-8,stemUpYOffset:28,reportedWidth:5},brassMuteClosed:{scale:1,xOffset:3,yOffset:-8,stemUpYOffset:26,reportedWidth:5},brassMuteOpen:{scale:1,xOffset:4,yOffset:-8,stemUpYOffset:27,reportedWidth:5},brassFlip:{scale:1,xOffset:10,yOffset:-4,stemUpYOffset:7,reportedWidth:5},brassJazzTurn:{scale:1,xOffset:6,yOffset:-4,stemUpYOffset:5,reportedWidth:30},brassSmear:{scale:1,xOffset:10,yOffset:-4,stemUpYOffset:5,reportedWidth:5}},tuplet:{noteHeadOffset:20,stemOffset:10,bottomLine:4,topModifierOffset:20}}}};return m=m.default})()})); +//# sourceMappingURL=vexflow-font-petaluma.js.map \ No newline at end of file diff --git a/build/cjs/vexflow-font-petaluma.js.map b/build/cjs/vexflow-font-petaluma.js.map new file mode 100644 index 0000000000..cfaade5817 --- /dev/null +++ b/build/cjs/vexflow-font-petaluma.js.map @@ -0,0 +1 @@ +{"version":3,"file":"vexflow-font-petaluma.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAqB,YAAID,KAEzBD,EAAkB,YAAIA,EAAkB,aAAK,GAAIA,EAAkB,YAAY,SAAIC,KARrF,CASsB,oBAAXK,OAAyBA,OAA+B,oBAAfC,WAA6BA,WAAaC,MAAO,WACrG,M,mBCTA,IAAIC,EAAsB,CCA1BA,EAAwB,CAACP,EAASQ,KACjC,IAAI,IAAIC,KAAOD,EACXD,EAAoBG,EAAEF,EAAYC,KAASF,EAAoBG,EAAEV,EAASS,IAC5EE,OAAOC,eAAeZ,EAASS,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,MCJ3EF,EAAwB,CAACQ,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,I,4BCA3E,MCQP,EAJoB,CAChBI,KDLwB,CACxBC,OAAQ,CACJC,WAAY,CACRC,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,6WAEPkB,cAAe,CACXL,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,scAEPmB,YAAa,CACTN,MAAO,EACPC,MAAO,mBACPC,MAAO,iBACPC,MAAO,mBACPC,GAAI,mBACJjB,EAAG,gLAEPoB,eAAgB,CACZP,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,smBAEPqB,MAAO,CACHR,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,u0DAEPsB,KAAM,CACFT,MAAO,EACPC,MAAO,KACPC,OAAQ,IACRC,MAAO,KACPC,GAAI,KACJjB,EAAG,mrDAEPuB,MAAO,CACHV,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,KACPC,GAAI,KACJjB,EAAG,87DAEPwB,MAAO,CACHX,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,soFAEPyB,MAAO,CACHZ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qqCAEP0B,yBAA0B,CACtBb,MAAO,EACPC,MAAO,mBACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ytBAEP,iBAAkB,CACda,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,u3EAEP2B,SAAU,CACNd,MAAO,GACPC,MAAO,IACPC,OAAQ,iBACRC,MAAO,IACPC,GAAI,iBACJjB,EAAG,ooBAEP4B,SAAU,CACNf,MAAO,GACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2gBAEP6B,SAAU,CACNhB,MAAO,GACPC,MAAO,kBACPC,OAAQ,kBACRC,MAAO,IACPC,GAAI,iBACJjB,EAAG,wnCAEP8B,SAAU,CACNjB,MAAO,mBACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4iCAEP+B,SAAU,CACNlB,MAAO,GACPC,MAAO,kBACPC,OAAQ,mBACRC,MAAO,mBACPC,GAAI,kBACJjB,EAAG,kkCAEPgC,SAAU,CACNnB,MAAO,mBACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,46BAEPiC,SAAU,CACNpB,MAAO,GACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,w7BAEPkC,SAAU,CACNrB,MAAO,iBACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8mBAEPmC,SAAU,CACNtB,MAAO,GACPC,MAAO,mBACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,w/BAEPoC,SAAU,CACNvB,MAAO,GACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,k2BAEPqC,cAAe,CACXxB,MAAO,GACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,mBACPC,GAAI,iBACJjB,EAAG,g3BAEPsC,iBAAkB,CACdzB,MAAO,GACPC,MAAO,IACPC,OAAQ,kBACRC,MAAO,IACPC,GAAI,mBACJjB,EAAG,wwDAEPuC,YAAa,CACT1B,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mwBAEPwC,iBAAkB,CACd3B,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,uuBAEPyC,aAAc,CACV5B,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,GACPC,GAAI,IACJjB,EAAG,kRAEP0C,mBAAoB,CAChB7B,MAAO,EACPC,MAAO,mBACPC,OAAQ,kBACRC,MAAO,IACPC,GAAI,mBACJjB,EAAG,gfAEP2C,wBAAyB,CACrB9B,MAAO,EACPC,MAAO,kBACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,+bAEP4C,kBAAmB,CACf/B,MAAO,kBACPC,MAAO,kBACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,qhBAEP6C,uBAAwB,CACpBhC,MAAO,EACPC,MAAO,mBACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oZAEP8C,oBAAqB,CACjBjC,OAAQ,kBACRC,MAAO,SACPC,OAAQ,mBACRC,MAAO,IACPC,GAAI,kBACJjB,EAAG,u3DAEP+C,cAAe,CACXlC,MAAO,EACPC,MAAO,mBACPC,OAAQ,mBACRC,MAAO,IACPC,GAAI,mBACJjB,EAAG,weAEPgD,aAAc,CACVnC,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wbAEPiD,cAAe,CACXpC,MAAO,EACPC,MAAO,mBACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gMAEPkD,qBAAsB,CAClBrC,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mjFAEPmD,eAAgB,CACZtC,MAAO,EACPC,MAAO,IACPC,OAAQ,kBACRC,MAAO,IACPC,GAAI,kBACJjB,EAAG,wpCAEPoD,cAAe,CACXvC,MAAO,EACPC,MAAO,IACPC,OAAQ,mBACRC,MAAO,IACPC,GAAI,mBACJjB,EAAG,kjCAEPqD,eAAgB,CACZxC,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8rBAEPsD,2BAA4B,CACxBzC,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,mBACPC,GAAI,mBACJjB,EAAG,uxDAEPuD,qBAAsB,CAClB1C,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,mBACPC,GAAI,kBACJjB,EAAG,0jCAEPwD,oBAAqB,CACjB3C,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,gwBAEPyD,gBAAiB,CACb5C,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,mBACPC,GAAI,mBACJjB,EAAG,2sBAEP0D,2BAA4B,CACxB7C,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wlEAEP2D,qBAAsB,CAClB9C,OAAQ,GACRC,MAAO,IACPC,OAAQ,mBACRC,MAAO,IACPC,GAAI,mBACJjB,EAAG,+hCAEP4D,oBAAqB,CACjB/C,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,whCAEP6D,qBAAsB,CAClBhD,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2tBAEP8D,0BAA2B,CACvBjD,MAAO,EACPC,MAAO,IACPC,OAAQ,mBACRC,MAAO,IACPC,GAAI,mBACJjB,EAAG,qiCAEP+D,oBAAqB,CACjBlD,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qwBAEPgE,oBAAqB,CACjBnD,MAAO,EACPC,MAAO,IACPC,OAAQ,mBACRC,MAAO,mBACPC,GAAI,kBACJjB,EAAG,yUAEPiE,gCAAiC,CAC7BpD,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mhDAEPkE,0BAA2B,CACvBrD,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qeAEPmE,yBAA0B,CACtBtD,OAAQ,kBACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,idAEPoE,0BAA2B,CACvBvD,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,6RAEPqE,8BAA+B,CAC3BxD,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,q/CAEPsE,wBAAyB,CACrBzD,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ieAEPuE,uBAAwB,CACpB1D,MAAO,EACPC,MAAO,kBACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,oeAEPwE,wBAAyB,CACrB3D,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ySAEPyE,4BAA6B,CACzB5D,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wjEAEP0E,sBAAuB,CACnB7D,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,s3BAEP2E,qBAAsB,CAClB9D,OAAQ,iBACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,s1BAEP4E,sBAAuB,CACnB/D,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ysBAEP6E,4BAA6B,CACzBhE,OAAQ,mBACRC,MAAO,kBACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,kvDAEP8E,sBAAuB,CACnBjE,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,o4BAEP+E,qBAAsB,CAClBlE,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,yyBAEPgF,sBAAuB,CACnBnE,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wpBAEPiF,2BAA4B,CACxBpE,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0/CAEPkF,qBAAsB,CAClBrE,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ggBAEPmF,oBAAqB,CACjBtE,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,glBAEPoF,qBAAsB,CAClBvE,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2TAEPqF,oBAAqB,CACjBxE,OAAQ,gBACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ivBAEPsF,yBAA0B,CACtBzE,OAAQ,GACRC,MAAO,GACPC,OAAQ,mBACRC,MAAO,IACPC,GAAI,kBACJjB,EAAG,wYAEPuF,wBAAyB,CACrB1E,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,sWAEPwF,kBAAmB,CACf3E,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8QAEPyF,0BAA2B,CACvB5E,MAAO,EACPC,MAAO,kBACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,2VAEP0F,2BAA4B,CACxB7E,OAAQ,kBACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qPAEP2F,+BAAgC,CAC5B9E,MAAO,EACPC,MAAO,IACPC,OAAQ,mBACRC,MAAO,IACPC,GAAI,kBACJjB,EAAG,yRAEP4F,gBAAiB,CACb/E,MAAO,EACPC,MAAO,GACPC,OAAQ,GACRC,MAAO,GACPC,GAAI,IACJjB,EAAG,8PAEP6F,SAAU,CACNhF,OAAQ,IACRC,MAAO,mBACPC,OAAQ,GACRC,MAAO,GACPC,GAAI,IACJjB,EAAG,qUAEP8F,UAAW,CACPjF,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,2lBAEP+F,YAAa,CACTlF,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,8hBAEPgG,WAAY,CACRnF,MAAO,EACPC,MAAO,kBACPC,OAAQ,kBACRC,MAAO,EACPC,GAAI,kBACJjB,EAAG,0vBAEPiG,aAAc,CACVpF,MAAO,EACPC,MAAO,kBACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,+pBAEPkG,WAAY,CACRrF,OAAQ,mBACRC,MAAO,kBACPC,OAAQ,kBACRC,MAAO,kBACPC,GAAI,kBACJjB,EAAG,0gCAEPmG,aAAc,CACVtF,OAAQ,kBACRC,MAAO,mBACPC,OAAQ,mBACRC,MAAO,kBACPC,GAAI,kBACJjB,EAAG,m7BAEPoG,WAAY,CACRvF,OAAQ,EACRC,MAAO,IACPC,OAAQ,kBACRC,MAAO,IACPC,GAAI,mBACJjB,EAAG,q+CAEPqG,aAAc,CACVxF,OAAQ,EACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,kBACPC,GAAI,mBACJjB,EAAG,q5CAEPsG,YAAa,CACTzF,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,yhDAEPuG,cAAe,CACX1F,OAAQ,kBACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,4+CAEPwG,eAAgB,CACZ3F,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ipBAEPyG,kBAAmB,CACf5F,MAAO,EACPC,MAAO,MACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,+xBAEP0G,gBAAiB,CACb7F,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,sgDAEP2G,sBAAuB,CACnB9F,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,msBAEP4G,qBAAsB,CAClB/F,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4yCAEP6G,qBAAsB,CAClBhG,MAAO,EACPC,MAAO,mBACPC,OAAQ,IACRC,MAAO,kBACPC,GAAI,kBACJjB,EAAG,oYAEP8G,sBAAuB,CACnBjG,OAAQ,kBACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,yYAEP+G,+BAAgC,CAC5BlG,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0qBAEPgH,0CAA2C,CACvCnG,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,q2CAEPiH,gCAAiC,CAC7BpG,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,w3BAEPkH,sCAAuC,CACnCrG,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,87DAEPmH,4BAA6B,CACzBtG,MAAO,mBACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,kBACPC,GAAI,kBACJjB,EAAG,glCAEPoH,qBAAsB,CAClBvG,MAAO,mBACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,47BAEPqH,oBAAqB,CACjBxG,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,w3BAEPsH,6BAA8B,CAC1BzG,OAAQ,mBACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4wCAEPuH,gBAAiB,CACb1G,MAAO,EACPC,MAAO,IACPC,OAAQ,kBACRC,MAAO,IACPC,GAAI,kBACJjB,EAAG,idAEPwH,eAAgB,CACZ3G,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,kpCAEPyH,iBAAkB,CACd5G,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,qdAEP0H,iBAAkB,CACd7G,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,+fAEP2H,iBAAkB,CACd9G,MAAO,mBACPC,MAAO,kBACPC,MAAO,EACPC,MAAO,GACPC,GAAI,GACJjB,EAAG,yTAEP4H,iBAAkB,CACd/G,MAAO,mBACPC,MAAO,kBACPC,OAAQ,GACRC,OAAQ,EACRC,GAAI,GACJjB,EAAG,6WAEP6H,mBAAoB,CAChBhH,MAAO,mBACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,wOAEP8H,mBAAoB,CAChBjH,MAAO,mBACPC,MAAO,mBACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,4QAEP+H,wBAAyB,CACrBlH,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,gQAEPgI,wBAAyB,CACrBnH,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,qSAEPiI,kBAAmB,CACfpH,MAAO,mBACPC,MAAO,IACPC,MAAO,EACPC,MAAO,kBACPC,GAAI,kBACJjB,EAAG,mbAEPkI,kBAAmB,CACfrH,MAAO,EACPC,MAAO,kBACPC,OAAQ,kBACRC,MAAO,EACPC,GAAI,kBACJjB,EAAG,8dAEPmI,aAAc,CACVtH,OAAQ,mBACRC,MAAO,IACPC,MAAO,kBACPC,MAAO,IACPC,GAAI,iBACJjB,EAAG,qtBAEPoI,aAAc,CACVvH,OAAQ,iBACRC,MAAO,iBACPC,OAAQ,IACRC,OAAQ,kBACRC,GAAI,mBACJjB,EAAG,gtBAEPqI,iBAAkB,CACdxH,MAAO,EACPC,MAAO,kBACPC,OAAQ,EACRC,MAAO,mBACPC,GAAI,mBACJjB,EAAG,gpBAEPsI,iBAAkB,CACdzH,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,EACPC,GAAI,IACJjB,EAAG,47BAEPuI,qBAAsB,CAClB1H,MAAO,EACPC,MAAO,IACPC,OAAQ,mBACRC,MAAO,IACPC,GAAI,kBACJjB,EAAG,ypCAEPwI,qBAAsB,CAClB3H,OAAQ,oBACRC,MAAO,kBACPC,OAAQ,IACRC,MAAO,GACPC,GAAI,IACJjB,EAAG,42CAEPyI,kBAAmB,CACf5H,MAAO,EACPC,MAAO,IACPC,OAAQ,kBACRC,MAAO,IACPC,GAAI,kBACJjB,EAAG,2lBAEP0I,kBAAmB,CACf7H,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,GACPC,GAAI,IACJjB,EAAG,gqBAEP2I,gBAAiB,CACb9H,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,2YAEP4I,gBAAiB,CACb/H,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,qeAEP6I,QAAS,CACLhI,MAAO,EACPC,MAAO,kBACPC,OAAQ,mBACRC,MAAO,kBACPC,GAAI,kBACJjB,EAAG,wgBAEP8I,cAAe,CACXjI,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0rBAEP+I,WAAY,CACRlI,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qjBAEPgJ,gBAAiB,CACbnI,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,wRAEPiJ,UAAW,CACPpI,MAAO,kBACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,GACPC,GAAI,IACJjB,EAAG,0TAEPkJ,mBAAoB,CAChBrI,OAAQ,kBACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,GACPC,GAAI,IACJjB,EAAG,mpBAEPmJ,SAAU,CACNtI,MAAO,EACPC,MAAO,kBACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,4PAEPoJ,kBAAmB,CACfvI,OAAQ,IACRC,MAAO,kBACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,iqBAEPqJ,YAAa,CACTxI,OAAQ,kBACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,y+BAEPsJ,QAAS,CACLzI,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,qkBAEPuJ,SAAU,CACN1I,MAAO,EACPC,MAAO,IACPC,OAAQ,iBACRC,MAAO,IACPC,GAAI,kBACJjB,EAAG,26BAEPwJ,SAAU,CACN3I,MAAO,EACPC,MAAO,IACPC,OAAQ,kBACRC,MAAO,IACPC,GAAI,kBACJjB,EAAG,yxCAEPyJ,SAAU,CACN5I,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,kBACPC,GAAI,mBACJjB,EAAG,uiDAEP0J,UAAW,CACP7I,MAAO,kBACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,KACJjB,EAAG,upDAEP2J,aAAc,CACV9I,OAAQ,GACRC,MAAO,kBACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,ijCAEP4J,aAAc,CACV/I,OAAQ,GACRC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,woCAEP6J,aAAc,CACVhJ,OAAQ,IACRC,MAAO,gBACPC,OAAQ,kBACRC,MAAO,IACPC,GAAI,kBACJjB,EAAG,i+BAEP8J,mBAAoB,CAChBjJ,OAAQ,GACRC,MAAO,kBACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,omBAEP+J,iBAAkB,CACdlJ,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,+3BAEPgK,SAAU,CACNnJ,OAAQ,kBACRC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,8uBAEPiK,cAAe,CACXpJ,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,21CAEPkK,aAAc,CACVrJ,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,q3BAEPmK,kBAAmB,CACftJ,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,mrCAEPoK,gBAAiB,CACbvJ,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,4mCAEPqK,mBAAoB,CAChBxJ,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,84BAEPsK,oBAAqB,CACjBzJ,MAAO,EACPC,MAAO,gBACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,spCAEPuK,2BAA4B,CACxB1J,OAAQ,mBACRC,MAAO,KACPC,OAAQ,GACRC,MAAO,kBACPC,GAAI,kBACJjB,EAAG,45CAEPwK,oCAAqC,CACjC3J,MAAO,EACPC,MAAO,KACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,m5CAEPyK,8BAA+B,CAC3B5J,MAAO,EACPC,MAAO,KACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,snEAEP0K,mCAAoC,CAChC7J,MAAO,EACPC,MAAO,KACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,8lDAEP2K,wCAAyC,CACrC9J,MAAO,EACPC,MAAO,KACPC,OAAQ,GACRC,MAAO,kBACPC,GAAI,kBACJjB,EAAG,s4CAEP4K,4CAA6C,CACzC/J,MAAO,EACPC,MAAO,KACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,suDAEP6K,gCAAiC,CAC7BhK,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,0yCAEP8K,WAAY,CACRjK,OAAQ,kBACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,GACPC,GAAI,IACJjB,EAAG,oPAEP+K,gBAAiB,CACblK,OAAQ,mBACRC,MAAO,mBACPC,OAAQ,GACRC,MAAO,kBACPC,GAAI,kBACJjB,EAAG,kRAEPgL,kBAAmB,CACfnK,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,GACPC,GAAI,IACJjB,EAAG,iUAEPiL,gBAAiB,CACbpK,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,ooCAEPkL,qBAAsB,CAClBrK,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,ovDAEPmL,UAAW,CACPtK,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,4nBAEPoL,gBAAiB,CACbvK,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,4gBAEPqL,cAAe,CACXxK,MAAO,EACPC,MAAO,mBACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,0bAEPsL,UAAW,CACPzK,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,+MAEPuL,cAAe,CACX1K,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,szBAEPwL,WAAY,CACR3K,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,kXAEPyL,eAAgB,CACZ5K,MAAO,EACPC,MAAO,IACPC,OAAQ,mBACRC,MAAO,IACPC,GAAI,mBACJjB,EAAG,mmBAEP0L,aAAc,CACV7K,MAAO,EACPC,MAAO,kBACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,uVAEP2L,gBAAiB,CACb9K,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,iTAEP4L,0BAA2B,CACvB/K,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,meAEP6L,0BAA2B,CACvBhL,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,skBAEP8L,yBAA0B,CACtBjL,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,+aAEP+L,iBAAkB,CACdlL,MAAO,EACPC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,q6EAEPgM,gBAAiB,CACbnL,MAAO,EACPC,MAAO,kBACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,mjCAEPiM,gBAAiB,CACbpL,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,8TAEPkM,mBAAoB,CAChBrL,OAAQ,GACRC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,2eAEPmM,aAAc,CACVtL,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,KACPC,GAAI,KACJjB,EAAG,28DAEPoM,eAAgB,CACZvL,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,KACPC,GAAI,KACJjB,EAAG,qmEAEPqM,WAAY,CACRxL,MAAO,EACPC,MAAO,kBACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,w2BAEPsM,YAAa,CACTzL,MAAO,oBACPC,MAAO,IACPC,OAAQ,mBACRC,MAAO,mBACPC,GAAI,kBACJjB,EAAG,g7BAEPuM,YAAa,CACT1L,MAAO,EACPC,MAAO,KACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,koEAEPwM,eAAgB,CACZ3L,MAAO,EACPC,MAAO,IACPC,OAAQ,mBACRC,MAAO,mBACPC,GAAI,mBACJjB,EAAG,sXAEPyM,eAAgB,CACZ5L,MAAO,EACPC,MAAO,IACPC,OAAQ,oBACRC,MAAO,IACPC,GAAI,kBACJjB,EAAG,0bAEP0M,mBAAoB,CAChB7L,OAAQ,GACRC,MAAO,IACPC,OAAQ,GACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,g+BAEP2M,cAAe,CACX9L,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,umBAEP4M,iBAAkB,CACd/L,MAAO,EACPC,MAAO,kBACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,6jBAEP6M,UAAW,CACPhM,MAAO,EACPC,MAAO,mBACPC,MAAO,IACPC,MAAO,mBACPC,GAAI,kBACJjB,EAAG,iQAEP8M,mBAAoB,CAChBjM,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,KACPC,GAAI,KACJjB,EAAG,qfAEP+M,oBAAqB,CACjBlM,OAAQ,GACRC,MAAO,kBACPC,MAAO,mBACPC,MAAO,KACPC,GAAI,mBACJjB,EAAG,8eAEPgN,oBAAqB,CACjBnM,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,IACPC,GAAI,IACJjB,EAAG,kqBAEPiN,qBAAsB,CAClBpM,MAAO,kBACPC,MAAO,IACPC,OAAQ,mBACRC,MAAO,kBACPC,GAAI,kBACJjB,EAAG,mrBAEPkN,uBAAwB,CACpBrM,MAAO,EACPC,MAAO,IACPC,MAAO,EACPC,MAAO,kBACPC,GAAI,kBACJjB,EAAG,ocAEPmN,wBAAyB,CACrBtM,OAAQ,GACRC,MAAO,kBACPC,OAAQ,mBACRC,MAAO,KACPC,GAAI,mBACJjB,EAAG,iaAEPoN,6BAA8B,CAC1BvM,OAAQ,mBACRC,MAAO,IACPC,OAAQ,mBACRC,MAAO,mBACPC,GAAI,mBACJjB,EAAG,6YAEPqN,6BAA8B,CAC1BxM,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,4qBAEPsN,oCAAqC,CACjCzM,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,uyCAEPuN,qBAAsB,CAClB1M,MAAO,EACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,wmBAEPwN,sBAAuB,CACnB3M,MAAO,EACPC,MAAO,kBACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJjB,EAAG,yQAGXyN,WAAY,WACZC,WAAY,IACZC,YAAa,4BCvkDbC,QCF2B,CAC3BC,KAAM,WACNC,OAAO,EACPC,MAAO,CACHC,QAAS,GACTC,cAAe,GACfC,cAAe,EACfC,qBAAsB,IAE1BC,WAAY,CACRC,0BAA2B,EAC3BC,YAAa,EACbC,kBAAmB,GAEvBC,KAAM,CACFC,QAAS,CACLC,MAAO,GACPC,MAAO,IAEXC,MAAO,CACHF,MAAO,GACPC,MAAO,IAEXE,YAAa,CACT,MAAO,CACHC,UAAW,WACXL,QAAS,CACLC,MAAO,GACPK,OAAQ,CACJC,MAAO,IACPC,OAAQ,KAGhBL,MAAO,CACHF,MAAO,GACPK,OAAQ,CACJC,MAAO,GACPC,OAAQ,KAIpB,MAAO,CACHH,UAAW,WACXL,QAAS,CACLC,MAAO,GACPK,OAAQ,CACJC,KAAM,EACNC,OAAQ,IAEZC,KAAM,CACFF,KAAM,IACNC,OAAQ,IAGhBL,MAAO,CACHF,MAAO,GACPK,OAAQ,CACJC,KAAM,IACNC,OAAQ,GAEZC,KAAM,CACFF,KAAM,IACNC,OAAQ,OAMxBE,UAAW,CACP,EAAK,CAAET,MAAO,GAAIU,OAAQ,IAC1B,EAAK,CAAEV,MAAO,GAAIU,OAAQ,GAC1B,EAAK,CAAEV,MAAO,GAAIU,OAAQ,GAC1B,EAAK,CAAEV,MAAO,GAAIU,QAAS,GAC3B,EAAK,CAAEV,MAAO,GAAIU,QAAS,MAGnCC,YAAa,CACTZ,QAAS,CACLC,MAAO,GACPC,MAAO,GAEXW,UAAW,CACPZ,MAAO,KACPC,MAAO,IAGfY,aAAc,CACVC,GAAI,CACAd,MAAO,IAEXe,KAAM,CACFf,MAAO,KAIfgB,OAAQ,CAEJC,WAAY,EACZjB,MAAO,GAEPkB,YAAa,GACbR,QAAS,GAEbS,aAAc,CACV9H,wBAAyB,CACrBiG,QAAS,GAEbhG,wBAAyB,CACrBgG,QAAS,IAGjB8B,QAAS,CACLrB,QAAS,CACLC,MAAO,GACPqB,QAAS,EACTC,eAAgB,EAChBC,gBAAiB,EACjBC,cAAe,GACfC,gBAAiB,GAErBC,MAAO,CACH1B,MAAO,GACPqB,QAAS,EACTC,eAAgB,EAChBC,gBAAiB,EACjBC,cAAe,EACfC,gBAAiB,IAGzBE,gBAAiB,CACbC,WAAY,CACRC,QAAS,GACTC,QAAS,GACTT,QAAS,GAEbzO,KAAM,CACFkP,QAAS,IAEbnP,MAAO,CACHmP,QAAS,KAGjBC,SAAU,CACNC,UAAW,CACPzB,QAAS,IAGjB0B,KAAM,CACFC,yBAA0B,EAG1BH,SAAU,CACNlM,uBAAwB,CACpBsM,kBAAmB,EACnBC,oBAAqB,GAEzBtM,wBAAyB,CACrBqM,kBAAmB,EACnBC,oBAAqB,GAEzBxM,wBAAyB,CACrBuM,kBAAmB,EACnBC,oBAAqB,GAEzB1N,cAAe,CACXyN,mBAAoB,EACpBC,oBAAqB,GAEzBzN,eAAgB,CACZwN,mBAAoB,EACpBC,oBAAqB,GAEzB3N,eAAgB,CACZ0N,mBAAoB,EACpBC,oBAAqB,GAEzB9N,aAAc,CACV8N,oBAAqB,IACrBD,mBAAoB,KAExB5N,cAAe,CACX6N,oBAAqB,EACrBD,mBAAoB,GAExB9M,oBAAqB,CACjB+M,qBAAsB,EACtBD,kBAAmB,KAa/BlQ,OAAQ,CACJW,KAAM,CACFoN,MAAO,GACPO,QAAS,EACTG,OAAQ,GAEZ/N,MAAO,CACH4N,QAAS,GAEb8B,KAAM,CACF9B,QAAS,IACTjJ,WAAY,CACRiJ,QAAS,KAEb/I,WAAY,CACR+I,QAAS,KAEb7I,WAAY,CACR6I,QAAS,MAEb3I,YAAa,CACT2I,QAAS,KAEbhJ,aAAc,CACVgJ,QAAS,KAEb9I,aAAc,CACV8I,QAAS,KAEb5I,aAAc,CACV4I,QAAS,KAEb1I,cAAe,CACX0I,QAAS,KAEb+B,WAAY,CACR/B,QAAS,IAGjBT,KAAM,CACFjN,MAAO,CACHkN,QAAS,CAAEwC,MAAO,IAAK7B,OAAQ,GAC/BR,MAAO,CAAEQ,OAAQ,MAErB3N,MAAO,CACHgN,QAAS,CAAEW,QAAS,MAG5B8B,SAAU,CACNhH,aAAc,CACV+G,MAAO,KAEX9G,kBAAmB,CACf8G,MAAO,MAGfE,aAAc,CACVC,gBAAiB,EACjBC,YAAa,EACb/C,YAAa,EACbgD,aAAc,GAElBC,OAAQ,CACJC,mBAAoB,CAChBC,SAAU,CACNxC,QAAS,KAEbyC,OAAQ,CACJzC,QAAS,EACTG,OAAQ,IAGhBuC,iBAAkB,CACdF,SAAU,CACNxC,QAAS,KAEbyC,OAAQ,CACJzC,QAAS,EACTG,OAAQ,KAIpBwC,SAAU,CACNlD,MAAO,GACPtN,eAAgB,CACZsN,MAAO,GACPU,OAAQ,GAEZzG,gBAAiB,CACb+F,MAAO,IAEXrN,MAAO,CACHqN,MAAO,GACPO,QAAS,EACTG,OAAQ,GAEZ9N,KAAM,CACFoN,MAAO,GACPO,QAAS,EACTG,OAAQ,GAEZnF,cAAe,CACXgF,QAAS,GACTG,OAAQ,GAEZhF,gBAAiB,CACb6E,QAAS,GAEb5E,mBAAoB,CAChB4E,QAAS,IAGjBwB,SAAU,CACNoB,WAAY,EACZC,SAAU,CACNC,oBAAqB,CACjB9C,OAAQ,IAEZ+C,mBAAoB,CAChB/C,OAAQ,MAEZgD,oBAAqB,CACjBhD,OAAQ,IAGhBiD,OAAQ,CACJC,sBAAuB,CACnBlD,QAAS,GAEbmD,wBAAyB,CACrBnD,OAAQ,KAEZoD,0BAA2B,CACvBpD,OAAQ,KAEZqD,2BAA4B,CACxBrD,OAAQ,KAEZsD,2BAA4B,CACxBtD,OAAQ,GAEZuD,qBAAsB,CAClBvD,OAAQ,GAEZwD,oBAAqB,CACjBxD,QAAS,GAEbyD,sBAAuB,CACnBzD,OAAQ,GAEZ0D,qBAAsB,CAClB1D,QAAS,GAEb2D,uBAAwB,CACpB3D,OAAQ,GAEZ4D,2BAA4B,CACxB5D,QAAS,IAEb6D,6BAA8B,CAC1B7D,QAAS,GAEb8D,4BAA6B,CACzB9D,OAAQ,KAEZ+D,0BAA2B,CACvB/D,QAAS,KAEbgE,0BAA2B,CACvBhE,QAAS,KAEbiE,8BAA+B,CAC3BjE,QAAS,OAIrBkE,YAAa,CACTC,OAAQ,CACJC,mBAAoB,IACpBC,gBAAiB,IACjBC,eAAgB,IAChBC,iBAAkB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,KAC5CC,iBAAkB,CAAC,KACnB1D,QAAS,GACT2D,cAAe,KAEnBjH,eAAgB,CACZwE,MAAO,GACP0C,iBAAkB,GAClBC,aAAc,IACdC,QAAS,GAEbnH,mBAAoB,CAChBuE,MAAO,GACP0C,iBAAkB,GAClBC,aAAc,IACdC,QAAS,GAEblH,cAAe,CACXsE,MAAO,EACP0C,iBAAkB,GAClBC,aAAc,IACdC,QAAS,GAEb/G,mBAAoB,CAChBmE,MAAO,GACP0C,gBAAiB,EACjBC,aAAc,IACdC,QAAS,KAEb9G,oBAAqB,CACjBkE,MAAO,GACP0C,gBAAiB,GACjBC,aAAc,IACdC,QAAS,KAEb7G,oBAAqB,CACjBiE,MAAO,GACP0C,gBAAiB,EACjBC,aAAc,IACdC,QAAS,GAEb5G,qBAAsB,CAClBgE,MAAO,GACP0C,gBAAiB,EACjBC,aAAc,IACdC,QAAS,GAEb3G,uBAAwB,CACpB+D,MAAO,IACP0C,gBAAiB,EACjBC,aAAc,IACdC,QAAS,KAEb1G,wBAAyB,CACrB8D,MAAO,GACP0C,iBAAkB,IAClBC,aAAc,IACdC,QAAS,KAEbzG,6BAA8B,CAC1B6D,MAAO,GACP0C,iBAAkB,EAClBC,aAAc,IACdC,QAAS,GAEbhH,UAAW,CACPoE,MAAO,GACP0C,gBAAiB,EACjBC,aAAc,IACdC,QAAS,GAEbjH,iBAAkB,CACdqE,MAAO,GACP0C,gBAAiB,IACjBE,QAAS,EACTD,aAAc,KAElBlN,gBAAiB,CACbuK,MAAO,GACP0C,gBAAiB,EACjBC,aAAc,IACdC,SAAU,KAEdrN,eAAgB,CACZyK,MAAO,GACP0C,iBAAkB,GAClBC,aAAc,IACdC,SAAU,MAGlBC,cAAe,CACXhJ,WAAY,CACRmG,MAAO,EACP8C,SAAU,GACVF,QAAS,EACTG,cAAe,EACfC,cAAe,IAEnBlJ,gBAAiB,CACbkG,MAAO,EACP8C,QAAS,GACTF,QAAS,EACTG,cAAe,EACfC,cAAe,IAEnBjJ,kBAAmB,CACfiG,MAAO,EACP8C,QAAS,GACTF,QAAS,EACTG,cAAe,EACfC,cAAe,IAEnBhJ,gBAAiB,CACbgG,MAAO,EACP8C,QAAS,GACTF,QAAS,EACTG,cAAe,EACfC,cAAe,IAEnB/I,qBAAsB,CAClB+F,MAAO,EACP8C,QAAS,GACTF,QAAS,GACTG,cAAe,EACfC,cAAe,GAEnB9I,UAAW,CACP8F,MAAO,EACP8C,QAAS,EACTF,SAAU,EACVG,cAAe,GACfC,cAAe,GAEnB7I,gBAAiB,CACb6F,MAAO,EACP8C,QAAS,EACTF,SAAU,EACVG,cAAe,GACfC,cAAe,GAEnB5I,cAAe,CACX4F,MAAO,EACP8C,QAAS,EACTF,SAAU,EACVG,cAAe,GACfC,cAAe,GAEnB3I,UAAW,CACP2F,MAAO,EACP8C,QAAS,GACTF,SAAU,EACVG,cAAe,EACfC,cAAe,GAEnB1I,cAAe,CACX0F,MAAO,EACP8C,QAAS,EACTF,SAAU,EACVG,cAAe,EACfC,cAAe,IAEnBzI,WAAY,CACRyF,MAAO,EACP8C,QAAS,GACTF,SAAU,EACVG,cAAe,EACfC,cAAe,IAGvBC,OAAQ,CACJC,eAAgB,GAChBC,WAAY,GACZC,WAAY,EACZC,kBAAmB,O","sources":["webpack://VexFlowFont.Petaluma/webpack/universalModuleDefinition","webpack://VexFlowFont.Petaluma/webpack/bootstrap","webpack://VexFlowFont.Petaluma/webpack/runtime/define property getters","webpack://VexFlowFont.Petaluma/webpack/runtime/hasOwnProperty shorthand","webpack://VexFlowFont.Petaluma/./src/fonts/petaluma_glyphs.ts","webpack://VexFlowFont.Petaluma/./entry/vexflow-font-petaluma.ts","webpack://VexFlowFont.Petaluma/./src/fonts/petaluma_metrics.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VexFlowFont\"] = factory();\n\telse\n\t\troot[\"VexFlowFont\"] = root[\"VexFlowFont\"] || {}, root[\"VexFlowFont\"][\"Petaluma\"] = factory();\n})((typeof window !== 'undefined' ? window : typeof globalThis !== 'undefined' ? globalThis : this), function() {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","export const PetalumaFont = {\n glyphs: {\n bracketTop: {\n x_min: 0,\n x_max: 508,\n y_min: 0,\n y_max: 370,\n ha: 370,\n o: 'm 22 0 b 122 0 55 1 89 0 l 157 0 b 713 376 425 0 622 137 b 732 467 724 406 732 436 b 726 514 732 482 730 498 b 711 533 723 528 719 533 b 693 526 707 533 700 530 b 674 498 683 520 678 508 b 635 406 662 467 652 435 b 310 164 560 281 458 193 b 154 151 258 154 206 151 b 39 154 117 151 78 154 b 1 120 17 154 4 145 b 0 84 0 108 0 96 b 0 20 0 63 1 40 b 22 0 0 4 7 0 z',\n },\n bracketBottom: {\n x_min: 0,\n x_max: 496,\n y_min: -393,\n y_max: 0,\n ha: 393,\n o: 'm 696 -566 b 711 -539 713 -566 708 -549 b 714 -521 713 -533 714 -527 b 713 -508 714 -517 713 -513 b 661 -327 706 -445 688 -384 b 392 -42 603 -203 513 -109 b 206 0 331 -7 266 0 b 160 -1 190 0 174 -1 b 26 -1 107 -1 66 -3 b 0 -19 12 -1 0 -4 l 0 -23 b 3 -50 1 -32 3 -42 b 1 -86 3 -62 1 -73 b 4 -118 1 -96 1 -108 b 45 -151 10 -145 23 -154 b 180 -143 89 -144 135 -145 b 621 -419 392 -135 523 -236 b 662 -539 641 -456 655 -497 b 696 -566 667 -557 680 -566 z',\n },\n barlineTick: {\n x_min: 0,\n x_max: 56.036101509664164,\n y_min: 876.905249806889,\n y_max: 1121.5430338167066,\n ha: 244.63778400981766,\n o: 'm 42 1263 b 66 1287 62 1261 66 1272 b 81 1583 65 1387 72 1485 b 35 1614 82 1610 53 1610 b 14 1591 17 1619 16 1604 b 0 1408 7 1525 0 1459 l 0 1292 b 42 1263 1 1263 23 1266 z',\n },\n breathMarkTick: {\n x_min: 0,\n x_max: 568,\n y_min: 0,\n y_max: 621,\n ha: 621,\n o: 'm 258 0 b 278 39 276 0 274 24 b 279 56 279 45 279 50 l 279 73 b 278 117 279 88 278 102 b 281 148 278 127 279 138 b 536 600 312 330 387 487 b 744 719 600 651 670 690 b 815 779 775 730 808 740 b 818 824 818 793 818 808 b 815 868 818 838 818 852 b 796 894 814 881 808 894 b 779 888 791 894 786 893 b 719 864 760 878 739 871 b 372 602 580 806 459 724 b 229 252 298 498 251 383 b 220 268 225 262 222 264 b 209 302 217 279 213 291 b 75 527 181 387 143 467 b 16 563 58 543 39 573 b 0 539 3 557 0 549 b 12 492 0 524 9 507 b 56 400 19 459 22 425 b 163 269 104 367 138 323 b 238 36 197 194 216 115 b 258 0 242 22 243 0 z',\n },\n segno: {\n x_min: 0,\n x_max: 798,\n y_min: -65,\n y_max: 806,\n ha: 871,\n o: 'm 16 -94 b 66 -69 39 -92 53 -85 b 177 59 102 -26 138 17 b 543 456 298 192 420 324 b 726 300 615 420 680 373 b 753 217 744 271 753 243 b 655 112 753 170 719 131 b 599 104 636 107 618 104 b 461 173 544 104 495 128 b 432 190 454 183 444 190 b 409 179 425 190 418 187 b 359 118 390 160 373 141 b 341 72 347 101 341 86 b 373 24 341 56 351 40 b 409 6 384 17 396 10 b 550 -13 454 -12 501 -14 b 599 -6 566 -12 583 -10 b 864 213 720 27 806 104 b 886 300 878 242 886 271 b 857 395 886 331 877 363 b 799 467 840 420 821 445 b 648 572 755 513 704 546 b 1110 1083 802 743 955 914 b 1140 1129 1123 1097 1136 1110 b 1149 1148 1142 1135 1149 1142 b 1145 1153 1149 1149 1148 1152 b 1123 1161 1139 1158 1130 1161 b 1109 1156 1119 1161 1113 1159 b 1089 1138 1102 1151 1094 1145 b 946 988 1040 1089 989 1041 b 595 602 834 855 711 732 l 590 598 l 549 615 b 432 793 462 647 432 723 b 534 888 432 851 474 888 b 671 834 588 888 631 864 b 710 818 684 824 696 818 b 724 821 714 818 719 819 b 809 883 757 834 788 852 b 816 901 814 890 816 896 b 802 923 816 910 812 916 b 706 984 770 945 742 971 b 593 1011 668 998 631 1011 b 516 991 567 1011 541 1005 b 333 799 433 949 380 876 b 302 693 312 765 302 729 b 330 589 302 658 311 624 b 469 488 360 533 415 511 b 485 482 475 487 480 485 b 266 249 412 405 338 327 b 121 88 217 196 170 141 b 9 -65 78 40 37 -7 b 0 -85 4 -72 0 -79 b 16 -94 0 -91 4 -94 z m 861 536 b 927 575 890 539 909 557 b 965 628 952 598 965 613 b 926 680 965 644 952 658 b 865 713 900 701 883 713 b 805 667 845 713 828 698 b 768 611 791 649 770 631 b 812 564 766 589 798 582 b 861 536 824 550 840 537 z m 251 350 b 363 436 285 348 353 403 b 354 456 366 448 360 452 b 271 518 327 477 298 497 b 243 528 261 526 252 528 b 210 513 232 528 222 523 b 157 454 190 494 176 472 b 141 428 147 444 141 436 b 158 406 141 420 147 413 b 216 361 180 393 197 376 b 245 350 225 356 235 350 z',\n },\n coda: {\n x_min: 0,\n x_max: 1380,\n y_min: -196,\n y_max: 1037,\n ha: 1233,\n o: 'm 1028 -282 b 1057 -245 1045 -282 1053 -261 b 1060 -203 1060 -232 1060 -217 b 1063 9 1060 -132 1061 -62 b 1390 194 1192 22 1303 81 b 1531 543 1467 298 1512 415 b 1532 556 1531 547 1532 552 b 1904 559 1656 557 1780 559 b 1950 582 1920 559 1941 569 b 1987 674 1970 609 1987 638 b 1984 698 1987 681 1986 690 b 1950 700 1973 698 1961 700 l 1941 700 l 1545 696 b 1535 776 1545 723 1541 749 b 1103 1113 1477 996 1326 1107 b 1080 1115 1096 1115 1087 1115 b 1081 1322 1080 1184 1080 1253 b 1079 1467 1083 1371 1081 1418 b 1061 1493 1079 1476 1080 1493 l 1060 1493 b 1028 1467 1044 1490 1031 1485 b 1020 1403 1025 1446 1020 1424 b 1017 1110 1020 1305 1018 1208 l 962 1106 b 569 914 808 1087 671 1035 b 451 683 510 844 472 766 l 161 678 b 118 680 148 678 132 680 b 79 670 101 680 86 678 b 0 544 48 636 29 592 l 37 544 l 429 549 b 428 518 428 539 428 528 b 488 285 428 435 458 360 b 681 81 526 192 593 124 b 946 9 763 40 854 19 b 1008 6 966 7 988 6 b 1005 -137 1008 -42 1005 -89 b 1012 -243 1005 -173 1005 -209 b 1028 -282 1015 -258 1011 -282 z m 1074 690 b 1079 935 1077 772 1077 852 b 1326 855 1166 932 1250 909 b 1446 694 1385 814 1426 759 b 1269 693 1387 694 1328 693 b 1074 690 1204 693 1139 691 z m 577 684 b 766 874 618 763 678 828 b 989 932 837 912 913 923 b 1015 933 998 932 1007 933 b 1014 822 1015 896 1014 860 b 1011 688 1012 791 1012 743 z m 1067 184 b 1071 553 1070 307 1068 429 b 1439 556 1194 553 1316 554 b 1437 554 1439 554 1437 554 b 1341 337 1413 478 1387 402 b 1119 192 1286 261 1211 212 b 1067 184 1102 189 1084 186 z m 1008 180 b 660 264 886 181 770 212 b 524 471 570 305 524 374 b 528 524 524 488 526 505 l 533 549 b 792 552 619 550 706 550 b 1009 553 865 553 937 552 b 1008 180 1009 428 1008 288 z',\n },\n gClef: {\n x_min: 0,\n x_max: 664,\n y_min: -559,\n y_max: 1009,\n ha: 1568,\n o: 'm 343 -805 b 366 -801 350 -805 357 -804 b 409 -773 383 -795 397 -786 b 582 -328 528 -648 577 -497 b 583 -294 582 -315 583 -294 b 612 -279 583 -294 603 -282 b 747 -197 660 -256 706 -230 b 949 143 857 -109 920 10 b 956 206 955 164 956 186 b 791 384 956 297 906 363 b 704 393 762 390 733 393 b 498 336 632 393 563 374 b 481 325 490 331 481 325 l 444 465 b 442 485 442 472 442 485 b 609 880 442 485 589 746 b 619 996 616 919 619 958 b 613 1084 619 1027 618 1056 b 534 1387 599 1188 560 1286 b 482 1453 527 1417 517 1453 b 422 1407 456 1453 438 1428 b 305 1063 348 1305 312 1188 b 304 1002 304 1043 304 1022 b 338 654 304 886 323 769 b 343 629 338 645 341 636 b 144 356 278 537 206 451 b 23 144 101 288 53 220 b 0 20 7 107 0 63 b 82 -210 0 -69 30 -160 b 207 -288 112 -239 160 -271 b 410 -328 274 -312 340 -328 b 474 -324 431 -328 452 -327 l 491 -321 b 491 -341 491 -321 492 -334 b 402 -585 475 -428 454 -513 b 294 -668 374 -622 348 -664 b 271 -693 278 -670 271 -680 b 274 -708 271 -698 272 -703 b 302 -775 282 -730 292 -753 b 343 -805 311 -795 325 -805 z m 400 717 b 382 922 389 786 382 854 b 481 1286 382 1047 408 1169 b 507 1125 498 1233 507 1179 b 500 1040 507 1097 504 1068 b 400 717 481 927 455 818 z m 252 -135 b 196 -121 232 -134 215 -127 b 117 -69 158 -108 127 -94 b 111 -32 112 -58 111 -45 b 117 19 111 -16 114 1 b 130 56 118 27 127 52 b 324 337 186 156 253 246 l 384 416 l 395 384 b 416 291 406 348 416 291 b 350 213 416 291 376 239 b 243 -42 278 143 243 55 b 251 -117 243 -66 246 -91 b 252 -135 252 -122 252 -127 z m 563 -91 b 510 168 552 3 530 78 b 513 192 508 179 508 186 b 624 202 550 199 586 202 b 730 192 660 202 694 199 b 850 141 773 183 816 176 b 858 134 852 138 855 135 b 595 -121 801 19 716 -68 l 569 -131 z m 410 -160 b 311 -147 360 -160 311 -147 b 307 -98 311 -147 307 -127 b 314 -33 307 -79 308 -56 b 429 131 328 36 377 85 b 441 138 433 135 438 138 b 449 122 446 138 448 132 b 490 -131 462 37 484 -46 b 490 -153 491 -140 490 -153 b 410 -160 490 -153 452 -163 z',\n },\n cClef: {\n x_min: 0,\n x_max: 731,\n y_min: -543,\n y_max: 543,\n ha: 1086,\n o: 'm 131 -782 b 141 -755 138 -782 140 -773 b 147 -490 143 -667 145 -577 b 160 207 150 -258 153 -24 b 168 618 164 344 158 481 b 81 768 173 690 132 732 b 45 782 66 778 55 782 b 3 740 26 782 13 768 b 0 724 1 736 0 730 l 1 710 b 4 596 4 672 4 634 l 4 382 b 9 102 4 288 4 196 b 17 -301 13 -32 10 -166 l 17 -672 b 50 -736 17 -701 27 -720 b 109 -772 69 -749 91 -759 b 131 -782 120 -778 127 -782 z m 615 -770 b 881 -684 710 -770 801 -739 b 1020 -395 986 -612 1020 -510 b 1017 -334 1020 -374 1018 -354 b 769 -62 1007 -209 896 -75 b 746 -60 762 -60 755 -60 b 639 -73 710 -60 675 -69 b 524 -109 598 -79 560 -92 b 528 -36 526 -85 528 -60 b 527 -4 528 -26 528 -14 b 528 39 527 10 528 24 b 526 99 528 59 527 79 b 592 94 549 95 570 94 b 648 99 611 94 629 95 b 912 157 744 94 844 117 b 1053 377 1009 215 1053 284 b 1050 425 1053 393 1053 409 b 914 665 1037 521 986 602 b 717 753 855 717 791 753 b 626 734 688 753 658 747 l 462 665 b 347 500 374 628 347 580 b 350 449 347 484 348 468 b 392 419 353 428 367 416 b 492 438 425 425 459 428 b 541 498 524 448 541 468 b 540 514 541 503 541 508 b 537 546 537 524 537 536 b 573 639 537 580 550 611 b 606 657 582 649 593 657 l 609 657 b 716 622 647 652 684 647 b 834 372 801 556 834 469 b 831 323 834 356 832 338 b 743 187 825 266 795 217 b 710 176 732 180 720 176 b 694 179 704 176 700 177 b 527 223 638 193 582 206 b 495 229 516 228 505 229 b 454 220 481 229 468 225 b 395 189 432 213 415 200 b 363 180 384 186 374 181 b 348 168 356 179 348 176 b 340 161 343 167 340 164 b 347 150 340 157 343 154 b 356 147 348 148 353 147 b 364 92 361 130 363 111 b 369 -37 367 49 369 6 b 363 -154 369 -76 367 -115 b 357 -236 360 -183 357 -210 b 376 -264 357 -253 361 -259 b 456 -289 402 -284 429 -289 b 521 -282 478 -289 500 -285 b 549 -255 537 -279 546 -271 b 598 -177 556 -225 577 -202 b 622 -164 605 -168 613 -164 b 636 -167 626 -164 631 -166 b 749 -225 678 -177 714 -199 b 848 -405 814 -276 848 -337 b 824 -507 848 -436 840 -471 b 657 -657 792 -582 730 -625 b 608 -668 638 -664 622 -668 b 534 -602 572 -668 547 -645 b 513 -575 530 -589 523 -575 b 507 -576 510 -575 508 -575 b 478 -582 497 -580 488 -582 b 405 -570 454 -582 428 -570 b 389 -572 399 -570 395 -570 l 363 -572 b 321 -575 348 -572 333 -569 l 321 631 b 323 662 323 641 323 652 b 315 716 323 681 321 698 b 304 736 314 723 317 736 l 302 736 b 281 716 294 734 285 729 b 275 665 276 700 275 683 l 275 382 b 276 99 275 288 275 193 b 279 -170 278 10 276 -81 b 284 -399 282 -246 284 -323 b 282 -629 284 -475 282 -553 b 289 -721 282 -660 289 -690 b 300 -736 289 -727 291 -736 b 312 -724 307 -736 310 -730 b 321 -667 323 -706 321 -687 l 321 -632 l 328 -644 l 340 -657 b 510 -757 386 -707 445 -740 b 615 -770 546 -766 580 -770 z',\n },\n fClef: {\n x_min: 0,\n x_max: 776,\n y_min: -496,\n y_max: 216,\n ha: 712,\n o: 'm 402 -706 b 804 -405 592 -678 716 -566 b 876 -53 861 -298 874 -183 b 868 33 876 -32 873 1 b 560 311 845 217 723 311 b 524 310 549 311 536 311 b 131 134 373 297 239 242 b 17 -29 84 86 37 39 b 9 -89 12 -50 9 -71 b 112 -238 9 -154 43 -206 b 124 -243 117 -239 120 -242 b 186 -261 145 -255 166 -261 b 268 -228 215 -261 242 -249 b 351 -59 325 -181 351 -124 b 343 10 351 -36 348 -13 b 340 36 341 19 340 27 b 409 105 340 75 363 102 b 441 107 420 107 431 107 b 624 36 510 107 573 86 b 744 -200 688 -27 724 -109 b 747 -230 747 -210 747 -222 b 717 -323 747 -264 736 -292 b 608 -445 688 -370 654 -410 b 307 -541 518 -513 415 -541 l 213 -541 b 39 -521 154 -541 96 -539 b 0 -552 17 -514 0 -531 b 1 -564 0 -556 0 -560 b 17 -611 6 -580 10 -596 b 101 -694 35 -648 50 -684 b 288 -714 164 -707 225 -714 b 402 -706 325 -714 363 -711 z m 1018 92 b 1080 118 1041 91 1068 96 b 1117 219 1099 150 1117 180 b 1113 252 1117 229 1116 240 b 1045 288 1102 297 1068 276 b 1017 262 1028 297 1024 274 b 984 124 989 220 996 170 b 1008 91 979 108 986 91 z m 972 -281 b 1070 -148 1024 -279 1070 -210 b 1025 -105 1070 -105 1045 -112 b 989 -127 1004 -96 998 -114 b 949 -249 963 -164 963 -209 b 969 -281 943 -265 949 -281 z',\n },\n unpitchedPercussionClef1: {\n x_min: 0,\n x_max: 379.13761966945304,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 481 -360 b 507 -357 491 -360 500 -360 b 546 -295 541 -346 547 -325 b 536 79 543 -170 540 -46 b 523 311 533 157 534 235 b 475 359 518 340 508 359 b 425 360 459 359 442 360 b 400 359 416 360 409 360 b 337 294 348 353 340 347 l 337 -73 b 336 -264 337 -137 337 -200 b 343 -294 336 -274 338 -284 b 481 -360 359 -330 431 -360 z m 144 -341 b 207 -320 167 -341 189 -331 b 217 -301 215 -315 217 -308 b 210 -262 217 -289 210 -275 b 228 187 212 -112 209 37 b 228 287 228 220 229 253 b 174 353 228 336 222 343 b 120 359 157 357 138 359 b 48 357 96 359 72 356 b 17 323 29 357 19 344 b 7 120 16 255 9 187 b 6 -109 6 43 6 -33 l 6 -204 b 0 -251 6 -220 0 -235 b 3 -269 0 -256 0 -262 b 127 -340 24 -330 79 -328 b 144 -341 132 -341 138 -341 z',\n },\n '6stringTabClef': {\n x_min: 0,\n x_max: 438,\n y_min: -768,\n y_max: 767,\n ha: 1535,\n o: 'm 369 438 b 374 439 370 438 372 438 b 384 462 383 444 384 452 l 384 474 b 390 697 386 547 390 622 b 373 1002 390 799 390 901 l 533 1002 b 560 1001 541 1004 552 1001 b 573 1007 567 1001 572 1002 b 546 1050 579 1025 559 1038 b 536 1056 543 1053 539 1053 b 324 1104 472 1102 397 1104 b 72 1090 238 1104 154 1099 b 55 1093 66 1090 60 1092 b 37 1073 46 1093 37 1089 b 60 1045 37 1061 48 1051 b 203 1001 105 1022 151 1001 b 233 1004 213 1001 223 1002 b 246 1005 238 1004 243 1005 b 272 975 264 1005 272 996 l 272 965 b 258 596 264 842 265 719 b 315 474 253 540 272 504 l 343 455 b 369 438 351 448 357 438 z m 114 -320 b 127 -304 120 -320 124 -315 b 171 -174 141 -261 158 -219 b 222 -135 179 -147 196 -137 b 426 -122 289 -131 359 -128 b 498 -164 462 -120 482 -127 b 628 -301 521 -226 575 -264 b 631 -288 631 -295 631 -291 b 628 -269 631 -281 629 -276 b 569 -134 616 -220 589 -179 b 408 225 514 -14 462 107 b 314 357 384 274 351 318 b 278 380 298 372 288 379 b 251 351 268 380 261 372 b 4 -209 156 171 75 -17 b 0 -228 1 -215 0 -222 b 19 -258 0 -240 7 -249 b 102 -314 45 -279 75 -294 b 114 -320 107 -318 111 -320 z m 425 6 b 360 20 403 17 382 20 b 274 14 331 20 302 14 l 246 14 l 340 206 b 425 6 369 137 395 75 z m 245 -1106 b 281 -1104 256 -1106 269 -1106 b 511 -888 400 -1094 511 -1035 b 454 -688 511 -814 504 -744 b 448 -678 449 -685 448 -681 b 454 -667 448 -675 449 -671 b 504 -497 503 -619 507 -559 b 324 -288 500 -383 436 -308 b 295 -287 314 -287 304 -287 l 282 -287 b 115 -330 223 -287 168 -307 b 94 -366 102 -336 94 -348 l 94 -370 b 96 -435 96 -392 96 -413 b 73 -858 89 -576 71 -717 b 78 -919 73 -878 78 -899 b 72 -950 78 -930 76 -940 b 63 -992 66 -965 63 -978 b 66 -1015 63 -999 65 -1008 b 173 -1104 84 -1106 84 -1106 b 245 -1106 197 -1104 220 -1104 z m 161 -622 b 147 -618 156 -622 151 -621 b 140 -600 141 -612 140 -606 b 144 -564 140 -589 144 -575 b 143 -554 144 -560 144 -557 l 143 -546 b 220 -451 144 -467 143 -465 b 278 -445 239 -446 259 -444 b 418 -497 328 -445 376 -461 b 429 -516 426 -504 429 -510 b 415 -533 429 -521 423 -527 b 219 -608 357 -579 287 -590 b 215 -609 217 -608 216 -609 b 161 -622 197 -609 177 -622 z m 154 -953 b 130 -933 135 -953 130 -948 l 130 -865 l 128 -865 b 135 -788 130 -838 124 -808 b 203 -769 145 -769 180 -776 b 259 -762 223 -765 242 -762 b 441 -852 330 -762 386 -805 b 449 -867 446 -858 449 -863 b 436 -884 449 -874 444 -878 b 318 -942 402 -914 363 -935 b 154 -953 264 -950 209 -953 z',\n },\n timeSig0: {\n x_min: 20,\n x_max: 513,\n y_min: -358.159536277652,\n y_max: 359,\n ha: 717.159536277652,\n o: 'm 341 -516 b 420 -510 367 -516 395 -514 b 675 -338 533 -494 622 -448 b 737 -92 716 -256 734 -171 b 739 -35 739 -73 739 -53 b 680 305 739 86 720 207 b 400 517 622 449 537 517 b 337 514 380 517 359 517 b 289 507 321 511 305 513 b 91 317 192 477 127 412 b 29 9 50 212 29 108 b 217 -458 29 -157 88 -312 b 341 -516 251 -494 291 -518 z m 412 -452 b 359 -425 393 -452 376 -444 b 187 14 242 -301 179 -158 b 268 334 193 127 212 235 b 387 448 295 383 330 428 b 406 452 395 451 400 452 b 428 444 413 452 420 449 b 517 324 471 413 497 372 b 586 -29 560 222 586 86 b 556 -271 586 -112 585 -193 b 468 -422 536 -327 508 -377 b 412 -452 449 -442 431 -452 z',\n },\n timeSig1: {\n x_min: 20,\n x_max: 283,\n y_min: -364,\n y_max: 366,\n ha: 730,\n o: 'm 264 -524 b 357 -510 297 -524 325 -516 b 374 -490 369 -508 374 -501 b 380 -438 376 -472 380 -455 l 406 246 b 408 301 408 265 408 282 b 400 445 408 348 405 396 b 288 527 395 491 338 527 b 253 520 276 527 264 526 b 240 508 249 517 245 513 b 49 409 192 445 127 413 b 29 396 33 408 29 403 b 32 380 29 392 30 386 b 59 363 36 366 49 364 b 164 348 95 356 130 348 b 222 357 183 348 203 351 b 238 361 228 360 233 360 b 252 334 248 361 252 353 b 243 59 252 242 249 150 b 219 -490 229 -124 233 -307 b 264 -524 217 -516 232 -524 z',\n },\n timeSig2: {\n x_min: 20,\n x_max: 660.4636303241031,\n y_min: -378.7201231608281,\n y_max: 382,\n ha: 760.720123160828,\n o: 'm 99 -543 b 130 -533 111 -550 121 -540 b 255 -448 168 -501 213 -475 b 338 -425 282 -431 310 -425 b 392 -431 356 -425 374 -426 b 485 -462 423 -438 454 -451 b 648 -497 540 -482 595 -497 b 834 -441 711 -497 773 -480 b 950 -242 906 -395 958 -334 b 942 -210 950 -230 950 -215 b 912 -220 932 -204 920 -213 b 861 -264 894 -235 877 -248 b 775 -317 835 -289 808 -305 b 675 -334 742 -328 708 -334 b 510 -295 619 -334 563 -318 b 372 -264 465 -278 420 -264 b 305 -272 350 -264 328 -266 b 331 -242 318 -256 324 -249 b 490 -73 386 -187 438 -131 b 675 340 595 43 664 180 b 677 369 677 350 677 360 b 556 536 677 461 638 508 b 468 550 526 546 497 550 b 297 508 409 550 353 533 b 111 354 220 475 168 412 b 29 197 65 308 29 261 b 32 164 29 187 29 176 b 29 140 33 157 29 147 b 43 125 29 132 32 125 b 73 147 55 125 65 138 b 86 163 79 153 82 158 b 238 320 134 219 183 272 b 425 389 292 367 360 389 b 575 341 480 389 531 373 b 606 298 590 330 606 317 b 600 278 606 292 603 285 b 501 107 576 217 544 158 b 304 -104 439 33 372 -35 b 111 -356 230 -180 167 -265 b 84 -446 92 -386 84 -415 b 86 -481 84 -458 85 -469 b 88 -514 88 -491 88 -503 b 99 -543 89 -526 91 -537 z',\n },\n timeSig3: {\n x_min: 19.824321427094187,\n x_max: 540,\n y_min: -392,\n y_max: 392,\n ha: 784,\n o: 'm 216 -540 b 354 -564 264 -556 310 -564 b 605 -465 445 -564 530 -530 b 729 -161 697 -383 729 -275 b 724 -82 729 -135 727 -108 b 589 95 716 -1 670 62 b 523 114 567 102 546 108 b 750 418 606 213 677 315 b 778 503 769 444 778 472 b 773 540 778 514 776 527 b 750 564 769 557 762 564 b 736 562 746 564 742 563 b 641 552 704 553 672 552 b 402 554 562 552 481 554 l 346 554 b 84 546 258 554 170 554 b 36 501 55 543 40 531 b 29 412 30 472 32 442 b 52 384 27 393 32 384 l 56 384 b 210 392 107 389 158 392 l 602 392 b 354 108 523 285 445 192 b 246 -65 300 58 246 12 b 252 -108 246 -78 248 -92 l 252 -111 b 264 -141 251 -122 251 -135 b 291 -132 274 -145 284 -140 b 425 -72 328 -95 377 -84 b 475 -65 442 -68 459 -65 b 592 -108 517 -65 557 -79 b 645 -179 615 -125 645 -147 b 642 -194 645 -184 644 -189 b 485 -376 616 -278 569 -344 b 361 -399 444 -392 402 -399 b 151 -340 289 -399 219 -376 b 88 -275 122 -323 98 -310 b 71 -249 86 -268 85 -249 b 63 -251 68 -249 66 -249 b 36 -288 48 -255 36 -266 b 55 -423 33 -336 45 -377 b 101 -482 60 -448 78 -468 b 216 -540 138 -504 174 -526 z',\n },\n timeSig4: {\n x_min: 20,\n x_max: 633.0785282750762,\n y_min: -489.59088556716864,\n y_max: 491.18559127100053,\n ha: 980.7764768381692,\n o: 'm 608 -704 b 641 -684 622 -708 634 -696 b 667 -602 660 -660 662 -631 b 685 -190 683 -465 680 -327 l 685 -176 b 831 -127 736 -166 783 -148 b 912 0 901 -94 913 -76 b 886 53 912 36 904 52 b 848 40 877 53 864 49 l 838 36 b 687 -13 789 14 739 -3 b 681 177 687 50 684 114 b 672 338 678 230 677 285 b 654 373 671 350 672 373 b 622 340 636 373 624 361 b 615 262 621 314 613 288 b 619 -22 616 167 619 72 b 569 -22 602 -23 585 -23 b 305 -3 481 -16 395 -1 b 210 -9 274 -3 242 -4 b 301 163 242 52 268 108 b 513 552 377 288 459 412 b 536 652 526 585 536 618 b 533 683 536 662 534 672 b 520 707 531 691 531 707 b 487 693 508 708 494 704 b 474 668 482 684 477 677 b 384 490 454 603 418 547 b 253 281 343 419 295 351 b 73 -13 194 181 145 78 b 29 -108 50 -42 29 -72 b 37 -147 29 -121 32 -134 b 50 -186 43 -160 50 -173 b 68 -216 52 -207 56 -215 b 92 -207 73 -216 82 -213 b 288 -166 156 -180 220 -166 b 556 -186 377 -166 467 -180 b 586 -189 566 -187 576 -187 b 616 -186 596 -189 606 -189 b 606 -432 613 -268 612 -350 b 596 -625 603 -495 596 -559 b 598 -670 596 -641 596 -655 b 608 -704 598 -683 596 -700 z',\n },\n timeSig5: {\n x_min: 19.663871085403297,\n x_max: 583,\n y_min: -389,\n y_max: 389,\n ha: 778,\n o: 'm 132 -536 b 249 -560 168 -553 209 -559 b 507 -462 351 -560 454 -514 b 677 -183 588 -384 642 -289 b 694 -85 688 -150 694 -117 b 540 138 694 12 642 94 b 422 173 501 154 462 167 b 400 187 408 174 400 177 b 405 202 400 190 402 196 b 428 284 416 228 426 255 b 469 312 431 307 442 312 b 757 372 569 312 662 343 b 840 490 821 392 840 432 b 812 560 840 540 834 560 b 763 546 801 560 785 556 b 757 543 762 546 759 544 b 465 484 665 505 570 484 b 396 484 452 484 425 487 b 353 454 377 482 366 474 b 281 300 323 405 304 351 b 245 164 262 255 245 212 b 246 144 245 158 246 151 b 233 63 249 115 243 89 b 225 35 228 50 225 40 b 264 14 225 22 236 19 b 445 -26 325 7 387 0 b 569 -151 501 -52 547 -89 b 575 -180 573 -161 575 -170 b 527 -275 575 -217 547 -245 b 347 -367 484 -334 419 -367 b 261 -351 318 -367 289 -363 b 95 -300 206 -333 154 -307 b 55 -321 73 -297 65 -302 b 29 -468 29 -367 40 -419 b 56 -505 26 -482 36 -500 b 132 -536 82 -514 108 -524 z',\n },\n timeSig6: {\n x_min: 20,\n x_max: 565,\n y_min: -363,\n y_max: 363,\n ha: 726,\n o: 'm 390 -518 b 621 -458 469 -507 549 -494 b 814 -134 753 -390 814 -281 b 652 59 814 -16 750 58 b 580 48 629 59 606 55 b 233 -334 392 -9 276 -138 b 115 -228 181 -314 143 -278 b 98 -160 104 -206 98 -183 b 107 -109 98 -144 101 -127 b 167 37 124 -59 145 -12 b 508 340 236 189 347 292 b 575 353 530 347 553 353 b 648 327 600 353 625 346 b 665 320 654 321 661 320 b 687 336 674 320 681 325 b 703 405 697 359 703 382 b 684 472 703 429 697 451 b 593 523 664 504 631 521 b 576 521 588 523 582 523 b 297 403 472 508 380 465 b 115 177 217 344 164 264 b 29 -121 60 82 29 -17 b 53 -278 29 -173 36 -225 b 226 -497 82 -374 131 -454 b 347 -523 265 -514 305 -523 b 390 -518 361 -523 376 -521 z m 351 -357 b 312 -351 337 -356 320 -363 b 325 -315 304 -340 320 -327 b 543 -120 373 -222 448 -158 b 622 -104 570 -108 596 -102 b 717 -132 655 -104 687 -112 b 740 -167 732 -143 740 -153 b 730 -196 740 -176 737 -184 b 563 -321 690 -258 634 -300 b 359 -357 497 -341 428 -354 z',\n },\n timeSig7: {\n x_min: 20.3617407597707,\n x_max: 592,\n y_min: -345,\n y_max: 345,\n ha: 690,\n o: 'm 253 -497 b 318 -485 276 -497 297 -487 b 366 -441 348 -482 360 -468 b 487 -104 390 -323 433 -210 b 835 403 580 82 701 246 b 852 436 847 416 852 428 b 815 467 852 451 840 461 b 762 474 798 471 779 474 b 674 445 732 474 701 465 b 603 410 652 431 628 420 b 383 360 533 379 459 360 b 200 435 315 360 249 382 b 88 494 168 469 131 485 b 66 497 81 495 73 497 b 33 484 52 497 39 492 b 50 436 22 469 39 451 b 295 310 114 360 199 324 b 406 301 331 304 369 301 b 593 324 468 301 530 308 b 585 307 589 314 588 310 b 265 -249 451 137 338 -46 b 207 -442 242 -312 223 -377 b 204 -462 206 -449 204 -456 b 253 -497 204 -487 220 -497 z',\n },\n timeSig8: {\n x_min: 20,\n x_max: 504.15101530718516,\n y_min: -428,\n y_max: 428,\n ha: 856,\n o: 'm 265 -616 b 289 -615 274 -616 281 -616 b 710 -271 492 -592 657 -485 b 726 -148 721 -229 727 -187 b 585 108 726 -48 687 42 b 572 127 576 114 573 120 b 576 144 572 132 575 138 b 598 301 590 196 598 249 b 586 413 598 338 593 376 b 356 616 559 531 467 616 b 233 582 317 616 275 606 b 29 233 101 505 29 384 b 104 9 29 153 46 72 b 189 -48 127 -16 160 -27 b 92 -158 141 -73 114 -114 b 37 -343 63 -217 50 -279 b 33 -390 35 -359 33 -374 b 265 -616 33 -524 148 -616 z m 258 105 b 124 148 215 105 167 117 b 96 196 105 163 96 177 b 99 217 96 202 96 209 b 197 384 120 281 151 337 b 350 451 242 429 297 451 b 516 364 412 451 472 422 b 530 331 523 354 530 343 l 530 327 l 530 320 b 468 151 520 261 507 200 b 419 122 455 135 442 125 b 258 105 370 117 320 105 z m 328 -438 b 158 -276 233 -436 160 -359 b 166 -239 158 -264 161 -252 b 230 -157 176 -203 202 -179 b 367 -72 274 -125 320 -98 b 448 -49 396 -56 423 -49 b 562 -118 491 -49 528 -72 b 611 -251 590 -157 611 -199 b 569 -341 611 -288 595 -318 b 328 -438 500 -402 416 -432 z',\n },\n timeSig9: {\n x_min: 20,\n x_max: 494,\n y_min: -421,\n y_max: 421,\n ha: 842,\n o: 'm 235 -606 b 361 -564 275 -606 318 -593 b 619 -229 487 -482 566 -366 b 706 127 664 -114 694 4 b 711 233 708 163 711 197 b 700 346 711 271 708 308 b 389 606 658 517 530 606 b 351 605 376 606 364 606 b 56 272 171 586 56 441 b 96 98 56 216 69 156 b 334 -53 144 -3 238 -53 b 544 36 408 -53 484 -24 b 652 176 586 78 622 124 b 631 71 645 141 639 105 b 467 -302 599 -63 562 -196 b 271 -442 412 -364 354 -422 b 225 -448 255 -446 239 -448 b 95 -305 148 -448 98 -395 b 89 -255 95 -288 94 -271 b 73 -233 86 -246 85 -233 b 52 -248 65 -233 56 -239 b 29 -317 42 -271 30 -291 b 49 -448 29 -361 40 -405 b 235 -606 69 -541 144 -606 z m 340 104 b 144 209 264 108 194 141 b 127 258 132 225 127 240 b 137 297 127 271 130 284 b 366 449 184 396 269 449 b 517 408 415 449 467 436 b 595 348 546 392 572 372 b 616 305 608 336 616 321 b 609 281 616 298 613 289 b 340 104 557 184 477 104 z',\n },\n timeSigCommon: {\n x_min: 20,\n x_max: 585,\n y_min: -298,\n y_max: 294.49658092772603,\n ha: 592.496580927726,\n o: 'm 444 -405 b 829 -45 626 -346 740 -207 b 842 26 842 -23 842 1 b 821 58 842 39 841 58 b 795 40 811 58 802 48 b 765 3 785 29 773 16 b 469 -223 690 -104 596 -183 b 354 -242 431 -235 392 -242 b 180 -177 292 -242 235 -223 b 135 -99 154 -157 140 -131 b 132 -59 134 -85 132 -72 b 141 7 132 -37 135 -16 b 449 274 189 160 297 243 b 477 278 459 276 468 276 b 546 203 517 278 539 253 b 517 157 550 177 533 166 b 485 143 507 153 497 143 l 482 143 b 467 148 478 143 472 144 b 374 183 438 170 406 181 b 264 118 333 183 292 161 b 238 48 246 92 238 69 b 261 -9 238 29 245 10 b 383 -73 287 -39 337 -73 b 412 -68 392 -73 402 -72 b 631 164 526 -27 586 59 b 649 252 644 193 649 222 b 636 328 649 278 645 304 b 504 423 615 400 579 429 b 242 318 408 415 317 387 b 29 -158 104 190 29 33 b 30 -176 29 -164 29 -170 b 115 -364 42 -246 52 -315 b 307 -429 177 -410 240 -429 b 444 -405 351 -429 397 -420 z',\n },\n timeSigCutCommon: {\n x_min: 20,\n x_max: 695,\n y_min: -687.0379164869064,\n y_max: 687,\n ha: 1374.0379164869064,\n o: 'm 564 -989 b 595 -945 585 -991 589 -963 l 599 -922 b 605 -628 600 -824 603 -726 l 609 -399 b 878 -251 706 -363 798 -320 b 996 -85 932 -204 976 -153 b 1001 -63 998 -78 1001 -71 b 989 -46 1001 -56 998 -49 b 978 -43 985 -45 982 -43 b 950 -59 968 -43 959 -49 b 733 -216 894 -132 815 -177 b 611 -259 694 -235 652 -249 b 616 -20 612 -179 615 -99 b 680 29 642 -7 665 9 b 698 43 685 36 690 40 b 870 251 792 82 840 160 b 877 294 874 265 877 279 b 818 410 877 338 855 382 b 683 458 779 442 730 448 b 625 468 664 462 644 465 l 625 514 b 638 958 626 662 636 811 b 626 989 638 979 635 989 b 603 981 621 989 613 986 b 422 840 534 945 481 888 b 412 805 412 832 413 818 b 426 713 410 773 420 743 b 445 678 429 690 435 678 b 474 691 452 678 461 683 b 563 755 503 710 530 732 b 564 724 564 740 564 733 b 559 469 563 639 560 554 b 462 454 526 469 494 464 b 112 143 302 399 199 281 b 33 -94 66 71 45 -10 b 29 -148 30 -112 29 -131 b 105 -351 29 -223 52 -291 b 359 -455 171 -426 258 -451 b 517 -431 409 -451 464 -446 l 539 -422 l 539 -477 b 533 -739 536 -563 539 -651 b 530 -824 531 -768 530 -795 b 546 -948 530 -865 533 -907 b 564 -989 552 -962 543 -989 z m 410 -288 b 193 -197 328 -288 253 -264 b 141 -60 160 -161 141 -108 b 157 6 141 -35 147 -12 b 259 158 189 58 217 112 b 438 291 311 215 364 266 b 528 305 468 301 498 305 b 554 304 537 305 546 304 b 553 212 554 274 554 242 b 426 115 498 199 446 164 b 416 68 419 99 416 84 b 425 12 416 49 420 30 b 474 -39 432 -17 448 -32 b 513 -43 487 -42 498 -43 b 547 -40 524 -43 536 -42 l 543 -272 b 461 -285 516 -278 488 -281 b 410 -288 444 -287 426 -288 z m 694 197 b 668 203 685 197 677 199 b 621 216 654 210 638 215 b 622 294 622 242 622 268 b 706 268 651 287 678 278 b 746 235 721 261 734 249 b 752 222 749 230 752 226 b 743 213 752 219 749 215 b 694 197 727 206 711 197 z',\n },\n timeSigPlus: {\n x_min: 0,\n x_max: 661,\n y_min: -358,\n y_max: 358,\n ha: 716,\n o: 'm 605 -516 b 629 -490 624 -516 629 -507 b 628 -475 629 -485 628 -481 b 613 -131 624 -405 616 -174 b 612 -96 612 -114 612 -96 l 647 -98 b 897 -115 730 -99 814 -109 b 940 -89 919 -117 935 -109 b 952 -24 946 -69 952 -46 b 948 9 952 -14 950 -3 b 912 39 942 26 933 37 b 609 60 822 48 609 60 b 616 392 609 60 608 291 b 567 488 619 436 605 467 b 511 516 550 498 531 514 b 498 511 507 516 503 514 b 478 446 475 501 480 469 b 467 150 474 348 469 249 b 465 59 465 121 465 59 l 372 49 b 73 14 272 36 173 24 b 49 13 65 13 56 13 b 0 -33 9 13 0 6 b 60 -141 0 -117 6 -140 b 112 -135 73 -141 91 -140 b 413 -102 213 -125 314 -112 b 464 -98 441 -99 464 -98 l 464 -145 b 477 -456 464 -249 468 -353 b 526 -510 478 -488 491 -507 b 589 -513 546 -511 569 -510 b 605 -516 595 -514 600 -516 z',\n },\n timeSigPlusSmall: {\n x_min: 0,\n x_max: 418,\n y_min: -197,\n y_max: 199,\n ha: 396,\n o: 'm 301 -284 b 330 -238 320 -284 324 -255 b 348 -46 350 -176 341 -111 b 374 -20 351 -27 356 -23 b 481 -17 409 -16 445 -17 b 566 -9 510 -17 537 -16 b 602 3 579 -7 602 -16 b 566 29 602 19 582 24 b 526 33 553 32 539 33 b 384 39 478 36 432 39 b 356 62 363 39 356 42 l 356 68 b 359 177 359 104 359 141 l 359 251 b 341 287 359 264 361 285 b 311 255 324 287 314 272 b 310 228 311 246 310 236 l 301 69 b 275 39 301 49 295 39 l 271 39 b 210 40 251 40 230 40 b 167 39 196 40 181 40 b 89 40 141 37 115 40 b 24 30 68 40 46 37 b 0 17 17 27 0 30 l 0 13 b 27 -17 3 0 7 -13 b 91 -22 49 -22 71 -22 b 153 -22 115 -22 137 -20 l 275 -22 b 295 -40 289 -22 295 -27 l 295 -48 b 288 -235 288 -109 287 -171 b 287 -264 288 -243 287 -253 b 301 -284 287 -275 289 -284 z',\n },\n timeSigMinus: {\n x_min: 0,\n x_max: 662,\n y_min: -54,\n y_max: 55,\n ha: 109,\n o: 'm 39 -78 b 49 -76 42 -78 45 -76 b 452 -75 94 -75 272 -75 b 861 -76 632 -75 814 -76 b 953 -20 927 -79 953 -66 b 948 27 953 -7 950 9 b 946 37 948 30 948 35 b 896 79 940 63 929 79 b 471 78 827 78 648 78 l 42 78 b 0 37 14 78 0 69 b 23 -66 0 0 17 -32 b 39 -78 24 -75 32 -76 z',\n },\n timeSigParensRight: {\n x_min: 0,\n x_max: 274.26483738379414,\n y_min: -722.6326530612245,\n y_max: 725,\n ha: 1447.6326530612246,\n o: 'm 37 -1038 b 69 -1031 48 -1044 59 -1038 b 88 -1015 76 -1027 82 -1021 b 164 -886 120 -976 147 -933 b 333 -351 233 -711 292 -534 b 395 118 366 -204 399 -59 b 389 245 392 144 392 194 b 120 996 369 521 265 766 b 68 1044 99 1030 84 1044 b 19 988 50 1044 36 1024 b 0 922 7 965 0 945 b 20 858 0 901 6 881 b 259 215 141 660 236 449 b 271 -1 266 143 271 71 b 252 -239 271 -82 265 -161 b 148 -667 228 -384 183 -524 b 39 -1009 120 -785 66 -893 b 33 -1031 37 -1017 33 -1024 b 37 -1038 33 -1034 35 -1037 z',\n },\n timeSigParensRightSmall: {\n x_min: 0,\n x_max: 154.4025307335204,\n y_min: -422,\n y_max: 422,\n ha: 844,\n o: 'm 43 -608 b 60 -598 48 -608 53 -605 b 117 -511 82 -572 102 -543 b 222 23 193 -350 219 -177 b 213 166 225 55 216 109 b 115 531 206 294 174 416 b 45 603 99 562 76 588 b 30 608 39 606 35 608 b 10 598 23 608 17 603 b 0 546 3 590 0 570 b 23 451 0 507 9 458 b 102 351 66 429 84 390 b 167 42 150 252 167 148 b 163 -49 167 12 166 -19 b 35 -449 151 -192 121 -330 b 14 -504 22 -467 14 -485 b 17 -527 14 -511 16 -520 l 30 -590 b 43 -608 33 -603 37 -608 z',\n },\n timeSigParensLeft: {\n x_min: 0.5555555555555556,\n x_max: 399.6216117372966,\n y_min: -728,\n y_max: 728,\n ha: 1456,\n o: 'm 562 -1048 b 573 -1043 566 -1048 570 -1047 b 553 -988 582 -1025 564 -1004 b 472 -884 527 -952 497 -920 b 210 -354 366 -717 275 -541 b 148 -6 170 -240 148 -124 b 160 148 148 45 153 96 b 315 678 189 331 242 508 b 431 901 350 755 380 834 b 459 950 451 926 461 939 b 435 995 459 962 451 972 b 364 1048 405 1034 383 1048 b 305 996 343 1048 325 1028 b 127 624 226 881 174 753 b 1 30 56 432 9 235 b 1 -32 1 9 0 -12 b 180 -629 13 -245 92 -438 b 363 -936 230 -739 298 -835 b 526 -1041 402 -995 448 -1041 b 562 -1048 537 -1040 552 -1048 z',\n },\n timeSigParensLeftSmall: {\n x_min: 0,\n x_max: 173.45497224367904,\n y_min: -405,\n y_max: 404,\n ha: 809,\n o: 'm 197 -583 b 222 -553 212 -582 219 -566 b 229 -497 226 -534 229 -516 b 213 -425 229 -472 225 -448 b 102 -177 173 -344 132 -262 b 62 30 78 -111 58 -42 b 91 183 66 82 75 134 b 215 426 118 271 156 356 b 249 552 246 465 252 505 b 230 582 249 563 246 582 b 197 563 219 582 206 576 b 71 356 144 500 105 429 b 0 50 26 259 3 158 b 13 -112 4 -3 7 -58 b 176 -559 29 -275 105 -416 b 196 -583 180 -569 186 -583 z',\n },\n noteheadDoubleWhole: {\n x_min: -0.4444444444444444,\n x_max: 614.1875,\n y_min: -223.03296670127517,\n y_max: 223,\n ha: 446.0329667012752,\n o: 'm 35 -321 b 62 -266 58 -318 58 -288 l 62 -194 b 63 50 62 -114 63 -32 b 60 189 63 96 63 143 b 43 300 59 226 60 265 b 29 321 40 308 39 321 l 26 321 b 0 292 13 318 0 310 b 0 248 0 278 -1 262 b 6 147 4 215 6 181 b 4 48 6 114 4 81 b 6 0 4 32 6 16 b 7 -36 7 -12 7 -24 l 7 -52 b 6 -156 7 -86 6 -121 b 19 -275 6 -196 9 -236 b 35 -321 23 -291 16 -323 z m 847 -314 b 871 -288 860 -315 867 -300 b 884 -187 881 -255 886 -222 b 876 115 878 -86 876 14 b 877 255 876 161 876 209 b 868 291 877 268 873 279 b 855 304 867 301 863 304 b 844 301 852 304 848 304 b 822 265 825 292 822 278 b 824 251 822 259 822 255 b 822 170 822 225 822 197 l 822 -20 b 835 -284 827 -86 825 -186 b 847 -314 837 -295 835 -311 z m 757 -291 b 793 -171 796 -255 792 -212 b 795 -49 795 -131 795 -91 b 786 207 795 36 791 121 b 779 240 786 217 783 229 b 766 258 776 246 776 258 b 762 256 765 258 763 256 b 739 236 752 253 740 252 b 733 177 737 216 732 197 b 737 20 737 125 739 73 l 737 -107 b 740 -202 737 -138 739 -170 b 757 -291 740 -230 743 -261 z m 128 -261 b 144 -251 135 -264 141 -256 b 158 -203 156 -236 157 -220 b 161 -137 161 -181 161 -158 b 157 30 161 -81 157 -26 b 158 76 157 45 157 60 l 158 101 b 156 225 158 141 158 183 b 137 253 156 235 154 253 l 134 253 b 109 222 120 251 109 242 b 104 91 108 179 104 134 b 108 -58 104 42 109 -9 b 107 -105 108 -73 108 -89 b 105 -127 107 -112 107 -120 b 118 -245 105 -167 114 -204 b 128 -261 118 -252 121 -259 z m 488 -242 b 693 -79 595 -249 685 -166 l 693 -55 b 690 0 693 -36 691 -17 b 540 187 684 84 621 164 b 449 200 508 196 480 200 b 210 104 363 200 282 163 b 186 56 196 92 186 76 b 207 -82 186 9 192 -37 b 300 -204 225 -132 248 -181 b 488 -242 356 -229 415 -240 z m 490 -88 b 449 -86 477 -88 464 -88 b 287 -56 399 -85 341 -78 b 258 -33 275 -52 258 -48 b 282 -7 258 -20 272 -13 b 458 43 340 23 399 43 b 580 14 497 43 537 35 b 618 -20 606 1 619 -9 b 592 -58 618 -30 609 -42 b 490 -88 562 -82 528 -88 z',\n },\n noteheadWhole: {\n x_min: 0,\n x_max: 380.16649762501584,\n y_min: -186.17102907059297,\n y_max: 165,\n ha: 351.17102907059297,\n o: 'm 547 40 b 223 -268 543 -151 367 -259 b 102 -233 180 -271 143 -248 l 62 -216 b 0 -127 22 -197 0 -166 b 6 -91 0 -115 1 -104 b 122 141 33 -9 69 71 b 327 238 170 204 249 238 b 514 158 397 238 467 212 b 547 40 544 125 549 84 z m 248 -107 b 384 -63 295 -102 341 -88 b 426 -23 402 -53 415 -40 b 435 3 432 -14 435 -6 b 413 32 435 14 428 24 b 301 73 376 49 343 73 b 272 69 291 73 282 72 b 121 -35 207 53 157 20 b 111 -58 117 -42 111 -50 b 125 -75 111 -65 115 -71 b 248 -107 164 -89 202 -107 z',\n },\n noteheadHalf: {\n x_min: 0,\n x_max: 334,\n y_min: -174,\n y_max: 175,\n ha: 349,\n o: 'm 480 56 b 167 -251 478 -115 331 -251 b 94 -242 143 -251 118 -248 b 9 -141 43 -229 20 -192 b 0 -68 3 -115 0 -91 b 284 249 0 95 127 200 b 304 252 289 251 297 252 b 481 78 374 252 481 170 b 480 56 481 71 481 63 z m 213 -102 b 399 6 274 -81 341 -48 b 402 17 400 7 402 13 b 399 27 402 22 400 26 b 311 94 373 53 353 88 b 292 95 305 95 300 95 b 130 27 230 95 181 55 b 69 -62 98 9 62 -29 b 161 -98 76 -98 128 -91 b 213 -102 174 -101 186 -101 z',\n },\n noteheadBlack: {\n x_min: 0,\n x_max: 334.04644433966797,\n y_min: -164,\n y_max: 164,\n ha: 328,\n o: 'm 112 -233 b 141 -236 122 -235 131 -236 b 481 104 279 -236 485 -48 b 403 222 477 141 478 192 b 334 236 382 232 359 236 b 1 -59 180 236 13 59 b 0 -85 1 -68 0 -76 b 112 -233 0 -157 32 -215 z',\n },\n noteheadXDoubleWhole: {\n x_min: 0,\n x_max: 730,\n y_min: -266,\n y_max: 267,\n ha: 533,\n o: 'm 1018 -373 b 1032 -361 1025 -376 1028 -367 b 1051 -287 1047 -338 1051 -314 b 1050 -252 1051 -276 1051 -264 b 1030 186 1031 -107 1037 40 b 1031 266 1028 213 1031 239 b 1018 363 1031 300 1028 331 b 1005 384 1015 373 1017 384 l 1004 384 b 984 363 992 384 986 373 b 982 343 982 356 982 348 b 981 235 982 307 981 271 b 996 -285 981 60 986 -112 b 1009 -360 998 -311 1005 -336 b 1018 -373 1011 -364 1014 -373 z m 16 -383 b 49 -328 39 -367 48 -350 b 69 56 58 -202 62 -73 b 75 212 72 107 72 160 b 78 278 76 233 78 255 b 59 382 78 312 73 347 b 29 328 33 372 29 350 b 13 -29 29 209 23 88 b 3 -222 7 -95 10 -157 b 0 -265 1 -236 0 -252 b 16 -383 0 -304 6 -343 z m 923 -314 b 955 -240 948 -289 952 -265 b 965 -65 962 -181 965 -125 b 963 0 965 -45 965 -22 b 962 111 960 37 962 73 b 953 240 962 154 960 197 b 939 275 952 253 952 275 b 913 239 924 274 913 258 b 913 173 914 217 913 194 b 914 135 913 160 913 147 b 920 27 919 98 920 63 b 909 -128 920 -26 917 -78 b 906 -179 906 -147 906 -163 b 923 -314 906 -223 913 -266 z m 121 -301 b 143 -272 134 -301 138 -284 b 147 -255 145 -268 145 -261 b 173 160 161 -117 166 22 b 173 233 173 184 174 209 b 157 264 171 243 171 264 b 137 235 143 264 138 249 b 132 207 135 226 132 216 b 121 43 128 153 124 96 b 105 -186 117 -36 105 -111 b 111 -269 105 -215 107 -242 b 121 -301 114 -281 104 -300 z m 210 -238 b 376 -193 274 -239 327 -226 b 471 -134 406 -173 439 -154 b 534 -94 491 -120 513 -107 b 671 -192 579 -127 624 -161 b 733 -226 691 -204 708 -228 b 746 -225 737 -228 742 -226 b 845 -204 782 -226 814 -213 b 868 -194 854 -203 865 -203 b 852 -173 871 -183 860 -179 b 661 -40 789 -128 724 -84 b 642 -27 654 -36 648 -32 b 861 114 716 17 791 63 b 886 132 870 120 886 121 l 886 137 b 852 164 883 151 867 161 b 776 176 827 170 801 176 b 685 145 744 176 714 168 b 530 45 638 107 583 76 b 403 132 487 73 444 101 b 279 176 364 161 324 171 b 223 160 259 176 229 176 b 258 115 215 141 242 127 b 431 -17 314 71 372 26 b 173 -196 341 -73 253 -130 b 157 -209 168 -200 157 -203 b 158 -215 157 -212 157 -215 b 183 -236 166 -223 168 -235 b 210 -238 194 -236 206 -239 z m 768 -207 b 533 -40 687 -150 609 -94 b 321 -173 462 -85 392 -130 b 261 -194 304 -184 287 -196 b 239 -193 253 -196 246 -194 b 387 -95 294 -157 340 -125 b 505 -20 426 -71 465 -45 l 484 -4 b 353 89 441 27 396 56 b 320 115 341 96 330 107 b 297 141 311 124 297 132 b 300 148 297 144 298 145 b 336 135 311 164 324 143 b 528 -4 400 89 464 42 l 723 121 b 770 140 737 131 753 138 b 792 132 779 140 789 141 b 778 115 795 122 783 120 b 586 -6 714 75 651 35 b 557 -24 576 -13 567 -19 b 726 -147 613 -66 670 -109 b 768 -207 744 -161 765 -173 z',\n },\n noteheadXWhole: {\n x_min: 0,\n x_max: 506,\n y_min: -143.0823320899293,\n y_max: 144,\n ha: 287.0823320899293,\n o: 'm 53 -206 b 219 -163 117 -207 170 -196 b 314 -102 249 -141 282 -122 b 377 -63 334 -89 356 -76 b 514 -161 422 -96 468 -128 b 576 -196 534 -174 552 -196 b 589 -193 580 -196 585 -196 b 688 -174 625 -194 657 -181 b 711 -158 698 -171 711 -173 b 696 -143 711 -151 701 -147 b 503 -9 632 -98 567 -52 l 485 4 b 704 145 559 49 634 95 b 729 164 711 150 729 151 l 729 168 b 696 196 726 183 710 193 b 621 207 671 202 645 207 b 528 177 589 207 557 200 b 373 76 480 140 426 108 b 246 164 330 104 287 132 b 122 206 207 193 167 203 b 66 192 102 207 72 207 b 99 147 58 173 85 158 b 274 14 157 102 215 58 b 16 -164 184 -42 96 -98 b 0 -179 12 -168 0 -170 b 1 -183 0 -180 0 -183 b 26 -204 6 -193 12 -204 b 53 -206 37 -206 49 -206 z m 611 -177 b 376 -9 530 -118 452 -63 l 164 -143 b 104 -164 147 -154 130 -164 b 82 -161 96 -164 89 -164 b 230 -65 137 -125 183 -95 l 347 12 b 327 26 341 16 334 22 l 196 121 b 163 147 184 128 173 137 b 140 173 154 154 140 163 b 143 180 140 176 141 177 b 179 166 154 194 167 174 l 372 27 l 566 153 b 613 171 580 161 596 170 b 635 160 624 171 635 174 b 621 147 635 153 626 150 l 429 24 b 400 6 419 19 409 13 b 569 -117 456 -35 513 -75 b 611 -177 588 -130 608 -143 z',\n },\n noteheadXHalf: {\n x_min: 0,\n x_max: 421,\n y_min: -145.51844828189743,\n y_max: 151,\n ha: 296.51844828189746,\n o: 'm 490 -209 b 539 -207 505 -207 521 -207 b 606 -209 560 -207 583 -209 b 598 -196 602 -203 600 -199 l 406 -19 l 540 130 b 547 144 546 135 547 140 b 536 156 547 148 543 153 b 488 192 518 166 503 176 b 416 217 471 209 444 217 b 323 180 380 217 344 204 l 264 115 b 239 138 256 122 248 131 b 33 197 180 196 108 200 b 3 186 23 197 6 193 b 19 154 -1 174 10 163 b 171 12 69 107 120 59 b 19 -157 120 -45 69 -101 b 0 -177 14 -163 0 -166 b 1 -181 0 -179 0 -180 b 39 -203 9 -197 22 -203 l 186 -203 b 197 -202 190 -202 193 -200 l 213 -202 b 262 -180 228 -202 246 -199 l 314 -122 b 490 -209 363 -170 412 -216 z m 435 -148 b 291 -30 379 -112 337 -69 l 213 -118 b 190 -137 207 -125 202 -137 b 145 -111 173 -130 154 -127 b 160 -79 137 -98 151 -88 b 238 16 184 -48 212 -16 b 141 99 204 43 173 72 l 124 117 b 115 132 121 121 115 127 b 118 137 115 134 117 137 b 141 132 127 147 135 138 l 253 36 b 347 150 285 75 315 112 b 370 164 354 160 363 163 b 403 145 382 164 393 156 b 416 127 412 140 416 132 b 405 102 416 118 412 111 l 307 -10 b 413 -105 343 -42 379 -73 b 435 -148 425 -115 436 -125 z',\n },\n noteheadXBlack: {\n x_min: 0,\n x_max: 289,\n y_min: -156,\n y_max: 157,\n ha: 313,\n o: 'm 23 -225 b 69 -204 40 -223 56 -219 b 137 -131 92 -180 115 -157 l 209 -50 b 377 -197 264 -101 321 -148 b 403 -210 384 -203 393 -210 l 408 -210 b 416 -192 416 -207 416 -199 l 416 -186 b 403 -148 416 -171 413 -158 b 344 -81 384 -125 367 -101 b 252 -1 312 -55 282 -29 b 377 157 297 49 340 101 b 402 202 387 170 402 187 b 395 217 402 207 400 213 b 376 226 389 223 382 226 b 334 192 360 226 346 204 b 206 42 289 143 248 94 b 96 161 167 81 131 120 b 60 193 86 174 76 189 b 33 206 52 196 42 206 b 22 199 29 206 26 204 b 10 173 14 190 10 181 b 22 147 10 166 14 157 b 148 7 62 98 104 52 b 164 -7 154 1 158 -3 b 10 -189 111 -66 55 -122 b 0 -212 6 -197 0 -203 b 1 -217 0 -213 0 -216 b 23 -225 4 -226 14 -222 z',\n },\n noteheadCircleXDoubleWhole: {\n x_min: 0,\n x_max: 437,\n y_min: -220,\n y_max: 219.03988406941295,\n ha: 439.03988406941295,\n o: 'm 10 -304 b 40 -206 43 -275 37 -239 b 55 168 48 -81 50 45 b 53 269 56 202 55 236 b 33 315 52 287 46 314 b 3 269 9 317 4 291 b 0 239 1 259 0 249 l 0 -196 b 10 -304 1 -232 7 -268 z m 592 -317 b 621 -220 619 -287 621 -253 b 622 -121 622 -187 622 -154 b 625 -20 622 -88 622 -55 b 629 101 628 20 629 60 b 628 220 629 141 628 181 b 618 253 628 232 625 243 b 608 275 613 259 616 274 b 602 272 606 275 603 275 b 575 249 590 269 575 266 l 575 246 b 573 222 575 239 573 230 l 573 -50 b 592 -317 575 -137 570 -225 z m 79 -285 b 114 -6 96 -261 109 -131 b 117 -63 114 -24 114 -45 b 249 -242 124 -151 166 -212 b 324 -256 275 -252 300 -256 b 504 -137 406 -256 478 -209 b 505 -265 504 -180 505 -222 b 513 -282 505 -269 510 -275 b 533 -248 526 -272 528 -261 b 540 -174 539 -223 540 -199 l 540 -127 b 553 207 546 -16 549 95 b 543 232 553 216 554 232 b 518 207 530 233 518 222 b 511 118 520 177 510 148 l 511 92 b 330 216 488 174 420 223 b 301 215 320 216 311 216 b 122 65 202 204 151 163 b 114 9 117 46 114 27 b 115 75 114 32 115 53 b 101 248 115 157 109 228 b 76 206 78 242 76 225 l 76 91 b 75 -26 76 52 76 13 b 69 -189 72 -81 66 -134 b 79 -285 71 -219 76 -249 z m 317 4 b 219 109 285 40 252 75 l 209 120 b 331 153 248 141 289 151 b 420 137 360 153 390 147 b 446 120 435 131 442 127 l 436 108 l 328 -7 z m 215 -131 b 216 -101 215 -122 215 -114 b 219 -45 217 -82 219 -63 b 197 94 219 3 213 49 l 197 95 b 199 94 199 95 199 94 l 310 -27 b 233 -108 285 -55 259 -81 z m 442 -141 b 432 -122 441 -134 436 -128 l 344 -26 l 426 58 l 445 81 b 444 75 445 78 444 76 b 428 -13 433 46 428 16 b 446 -104 428 -45 433 -75 b 452 -122 449 -111 452 -117 b 442 -141 452 -131 448 -137 z m 323 -190 b 272 -180 305 -187 288 -184 b 217 -158 239 -173 225 -168 l 327 -45 b 330 -48 328 -46 328 -48 b 432 -150 363 -82 393 -121 b 323 -190 400 -174 364 -189 z',\n },\n noteheadCircleXWhole: {\n x_min: 0,\n x_max: 323,\n y_min: -190,\n y_max: 184.44625787787314,\n ha: 374.4462578778731,\n o: 'm 156 -258 b 240 -274 184 -268 213 -274 b 455 -101 347 -274 441 -202 b 465 19 462 -60 465 -22 b 464 71 465 36 465 52 b 246 265 455 194 370 274 b 216 264 236 265 226 264 b 12 94 102 251 45 203 b 0 13 3 66 1 40 b 4 -55 0 -10 3 -32 b 156 -258 14 -154 60 -222 z m 245 10 b 233 23 242 14 238 19 b 121 144 196 65 158 104 l 109 154 b 249 192 156 179 202 192 b 351 174 284 192 317 186 b 380 154 366 168 376 163 b 379 153 380 154 380 153 b 369 141 376 148 372 145 b 245 10 327 98 287 53 z m 115 -131 b 118 -96 117 -121 117 -111 b 121 -27 120 -73 121 -50 b 98 124 121 24 115 75 b 96 127 96 125 98 125 b 99 125 98 127 98 125 b 225 -12 140 79 181 33 l 138 -105 b 115 -131 131 -114 122 -121 z m 376 -143 b 363 -121 374 -134 369 -128 b 265 -12 331 -85 298 -48 l 357 85 b 379 111 364 94 372 101 b 377 102 379 108 377 105 b 359 4 364 71 359 37 b 382 -99 359 -32 366 -66 b 387 -121 384 -108 386 -115 b 376 -143 387 -130 382 -135 z m 239 -197 b 181 -187 220 -194 200 -192 b 121 -161 145 -177 128 -173 b 243 -33 161 -118 203 -75 l 248 -36 b 364 -153 285 -75 320 -118 b 239 -197 327 -180 287 -197 z',\n },\n noteheadCircleXHalf: {\n x_min: 0,\n x_max: 309,\n y_min: -179,\n y_max: 179,\n ha: 358,\n o: 'm 232 -258 b 435 -94 328 -258 412 -196 b 445 6 444 -60 445 -27 b 444 69 445 27 445 48 b 258 258 439 170 374 258 l 230 258 l 207 256 b 14 107 111 248 45 202 b 0 12 4 75 0 43 b 12 -82 0 -20 4 -50 b 144 -242 27 -160 69 -212 b 232 -258 174 -252 203 -258 z m 192 60 b 115 141 166 88 141 115 l 108 150 b 226 189 141 173 186 189 b 253 186 236 189 245 187 b 305 180 271 183 288 183 b 192 60 268 140 229 101 z m 56 -78 b 45 6 43 -56 45 -23 b 65 84 49 39 50 45 b 85 121 72 96 78 107 b 95 124 88 124 92 127 b 171 39 120 95 145 68 z m 360 -132 b 348 -112 359 -124 353 -118 l 300 -58 l 387 37 b 410 63 397 48 405 56 b 413 26 412 52 413 40 b 360 -132 413 -42 393 -95 z m 232 -183 b 184 -177 217 -183 202 -181 l 281 -78 b 348 -143 301 -101 323 -122 b 232 -183 318 -168 279 -183 z',\n },\n noteheadCircleX: {\n x_min: 0,\n x_max: 344,\n y_min: -179,\n y_max: 175.12551922594866,\n ha: 354.12551922594866,\n o: 'm 99 -210 b 236 -258 137 -242 186 -258 b 418 -183 305 -258 374 -230 b 495 33 475 -120 495 -48 b 494 66 495 45 494 55 b 302 252 487 183 405 256 b 181 243 262 249 222 248 b 46 171 128 236 79 219 b 0 19 14 127 0 73 b 99 -210 0 -68 35 -156 z m 245 42 l 124 156 b 200 176 145 166 170 173 b 337 183 245 181 291 184 b 377 176 351 183 364 180 b 245 42 333 131 288 86 z m 392 -99 l 285 3 l 400 121 b 418 154 409 131 418 140 b 465 50 448 130 465 94 b 405 -112 462 -17 439 -73 z m 89 -120 b 48 0 56 -82 48 -42 b 89 112 48 35 59 76 b 109 101 96 111 102 108 l 210 7 l 187 -17 b 89 -120 151 -53 125 -82 z m 176 -183 b 127 -163 158 -179 141 -171 l 252 -32 l 372 -144 b 233 -189 334 -173 285 -189 b 176 -183 215 -189 196 -187 z',\n },\n noteheadCircledDoubleWhole: {\n x_min: 0,\n x_max: 672,\n y_min: -291,\n y_max: 291,\n ha: 582,\n o: 'm 27 -419 b 43 -369 37 -403 43 -387 b 49 -82 45 -272 49 -177 b 50 370 50 69 50 219 b 30 419 50 389 50 419 b 7 369 7 419 7 389 b 0 -284 4 151 1 -66 b 16 -418 0 -328 10 -373 z m 945 -374 b 968 -282 963 -343 968 -312 b 966 -245 968 -269 968 -258 b 958 -45 959 -179 962 -111 b 948 262 949 56 952 160 b 936 377 946 301 946 340 b 922 399 933 386 933 399 l 919 397 b 897 374 909 396 899 389 b 894 308 897 353 893 331 b 904 120 899 246 903 183 b 913 -111 907 43 909 -35 b 927 -297 916 -173 919 -235 b 945 -374 930 -320 927 -347 z m 95 -347 b 120 -292 115 -325 117 -310 b 124 -223 122 -269 124 -246 b 122 -141 124 -196 122 -168 b 121 -85 121 -122 121 -104 b 462 -297 170 -209 300 -297 b 727 -219 543 -294 639 -271 b 828 -118 773 -190 808 -157 b 842 -268 831 -168 834 -219 b 851 -288 844 -275 840 -287 b 865 -272 861 -289 863 -279 b 873 -225 871 -256 873 -240 b 873 -171 873 -207 871 -190 b 858 196 868 -48 863 75 b 848 295 857 229 854 262 b 840 315 848 301 850 315 l 837 315 b 816 295 827 314 816 307 b 809 216 815 268 808 243 b 815 102 812 179 814 140 b 672 295 780 176 733 240 b 500 370 621 340 566 370 b 436 361 480 370 459 367 b 120 95 288 321 183 233 l 120 256 b 115 287 120 266 118 276 b 104 305 112 292 115 305 l 101 305 b 82 284 91 304 82 297 b 76 216 81 262 76 239 b 84 -253 78 59 79 -96 b 95 -347 84 -282 89 -311 z m 780 -33 b 779 -24 780 -30 779 -27 b 704 92 766 22 743 62 b 544 173 655 128 599 147 b 400 206 497 194 448 204 b 307 193 369 206 338 202 b 202 118 264 181 226 153 b 235 168 212 135 222 151 b 505 337 302 262 396 312 b 523 338 511 337 517 338 b 611 288 559 338 586 312 b 763 62 678 225 733 151 b 780 -33 776 26 782 -4 z m 435 -88 b 337 -23 387 -88 354 -65 b 333 6 334 -14 333 -6 b 366 86 333 35 344 66 b 456 122 390 111 423 121 b 602 27 517 122 582 88 b 606 1 605 19 606 10 b 575 -49 606 -20 596 -36 b 435 -88 530 -76 481 -82 z m 441 -269 b 194 -96 327 -262 249 -194 b 167 1 176 -62 167 -30 b 177 59 167 22 171 42 b 174 39 176 52 174 46 b 266 -104 174 -27 210 -73 b 511 -151 346 -148 435 -144 l 552 -151 b 740 -104 616 -145 683 -141 b 776 -66 756 -94 769 -81 b 700 -174 766 -105 740 -140 b 441 -269 632 -232 533 -268 z',\n },\n noteheadCircledWhole: {\n x_min: -50,\n x_max: 472,\n y_min: -231.00750990437078,\n y_max: 232,\n ha: 463.00750990437075,\n o: 'm 289 -333 b 553 -255 370 -330 465 -307 b 680 -62 635 -206 680 -138 b 662 22 680 -36 674 -7 b 500 259 626 112 573 193 b 327 334 448 304 393 334 b 264 325 307 334 287 331 b -59 49 111 284 4 193 b -72 -19 -68 26 -72 4 b 289 -333 -72 -192 84 -334 z m 608 -69 b 605 -60 606 -66 606 -63 b 530 56 592 -14 570 26 b 372 137 482 92 425 111 b 228 170 324 158 275 168 b 134 157 196 170 166 166 b 29 82 91 145 53 117 b 60 132 37 99 49 115 b 333 301 128 226 223 276 b 350 302 338 301 344 302 b 438 252 386 302 413 276 b 590 26 505 189 560 115 b 608 -69 603 -10 608 -40 z m 262 -124 b 164 -59 215 -124 180 -101 b 160 -32 161 -50 160 -42 b 193 50 160 -3 171 30 b 284 86 217 75 251 85 b 429 -9 344 86 409 52 b 433 -36 432 -17 433 -26 b 402 -85 433 -56 423 -72 b 262 -124 357 -112 307 -118 z m 268 -305 b 22 -132 154 -298 76 -230 b -6 -33 3 -98 -6 -65 b 3 23 -6 -14 -3 6 b 1 3 1 16 1 10 b 94 -140 1 -63 37 -109 b 338 -187 173 -184 261 -180 l 379 -187 b 566 -140 444 -181 510 -177 b 602 -102 582 -130 595 -117 b 526 -210 592 -141 567 -176 b 268 -305 459 -268 360 -304 z',\n },\n noteheadCircledHalf: {\n x_min: -50,\n x_max: 393,\n y_min: -175,\n y_max: 175,\n ha: 350,\n o: 'm 540 39 b 408 187 503 94 464 148 b 259 252 356 223 301 252 b 35 192 160 252 95 229 b -68 50 -17 160 -53 112 b -72 13 -71 37 -72 24 b 69 -204 -72 -79 -1 -161 b 246 -252 125 -238 186 -252 b 500 -164 336 -252 426 -219 b 566 -42 543 -132 566 -88 b 540 39 566 -14 557 14 z m 9 -42 b 12 -68 10 -50 10 -59 b -7 6 3 -46 -4 -22 b 131 189 1 98 55 153 b 243 220 167 206 204 215 b 261 222 249 222 255 222 b 377 161 308 222 341 189 b 435 89 402 141 420 117 b 431 92 433 89 432 91 b 346 120 402 102 372 107 b 253 143 314 135 282 143 b 85 79 193 143 138 115 b 9 -42 45 52 10 13 z m 356 39 b 343 1 356 24 351 12 b 206 -111 304 -46 259 -84 b 181 -118 196 -115 189 -118 b 156 -71 163 -118 154 -102 b 238 35 164 -22 199 9 b 324 66 264 52 294 59 b 356 39 348 71 356 62 z m 488 -78 b 392 -176 471 -125 433 -154 b 246 -225 346 -200 297 -217 b 230 -226 240 -226 235 -226 b 157 -204 203 -226 180 -215 b 78 -154 128 -190 101 -174 b 232 -184 128 -171 180 -184 b 344 -161 269 -184 307 -179 b 491 -39 405 -135 455 -94 b 500 -23 495 -33 497 -29 b 488 -78 500 -40 494 -59 z',\n },\n noteheadCircledBlack: {\n x_min: -70,\n x_max: 326,\n y_min: -168,\n y_max: 192,\n ha: 360,\n o: 'm 176 -239 b 190 -242 180 -240 186 -240 b 262 -232 213 -242 238 -235 b 469 -19 384 -225 469 -131 b 467 22 469 -6 468 9 b 383 194 455 86 436 151 b 183 276 315 249 251 275 b 32 236 134 276 85 264 b -94 88 -30 207 -75 160 b -101 30 -98 69 -101 49 b 176 -239 -101 -107 9 -251 z m 177 -212 b -30 -27 81 -213 -13 -131 b -33 17 -33 -13 -33 3 b 127 226 -33 111 14 187 b 194 239 151 233 173 238 b 301 203 232 239 266 226 b 364 134 330 184 350 160 b 233 181 341 160 279 180 b 192 171 216 181 202 179 b 13 1 117 131 46 86 b 3 -48 6 -17 3 -33 b 60 -115 3 -79 20 -101 b 203 -135 105 -131 151 -138 b 229 -138 212 -137 220 -137 b 295 -122 251 -138 274 -135 b 400 -33 337 -99 373 -71 b 228 -206 393 -125 330 -192 b 177 -212 209 -209 192 -213 z',\n },\n noteheadDoubleWholeSquare: {\n x_min: 0,\n x_max: 474,\n y_min: -209.39230484541326,\n y_max: 211,\n ha: 420.39230484541326,\n o: 'm 648 -301 b 668 -287 658 -304 665 -295 b 683 -209 678 -262 683 -235 b 677 258 681 -55 678 102 b 672 284 677 266 677 276 b 661 304 670 291 672 304 l 658 304 b 635 279 647 301 635 297 b 629 240 635 266 629 252 l 629 236 b 631 225 629 232 631 228 b 583 194 631 197 611 194 l 528 194 b 125 207 393 194 259 202 b 89 207 114 209 101 206 b 63 210 79 207 71 207 b 52 229 55 213 52 220 b 55 258 52 238 55 248 b 53 266 55 261 55 264 b 36 298 48 276 53 298 l 35 298 b 4 264 14 298 7 284 b 0 187 0 238 0 213 b 4 50 0 143 3 96 b 6 -10 6 30 6 10 b 4 -130 6 -50 4 -91 b 12 -268 4 -176 6 -222 b 19 -287 13 -275 10 -284 b 35 -275 26 -288 30 -281 b 52 -220 50 -261 48 -239 b 75 -199 55 -206 58 -199 l 141 -197 l 274 -197 l 634 -197 b 639 -281 635 -219 636 -251 b 648 -301 641 -288 638 -300 z m 72 -66 b 55 -56 59 -69 55 -65 l 55 -50 b 53 53 55 -16 55 20 b 69 73 53 69 60 72 l 79 72 b 330 65 163 66 246 63 l 592 65 b 634 81 606 65 618 71 b 635 -30 634 39 635 6 b 605 -58 635 -49 628 -58 b 451 -60 553 -60 503 -60 b 219 -59 373 -60 295 -59 l 166 -59 b 72 -66 134 -59 104 -60 z',\n },\n noteheadSquareWhite: {\n x_min: 0,\n x_max: 350,\n y_min: -131,\n y_max: 131,\n ha: 262,\n o: 'm 468 -189 b 485 -187 474 -189 480 -189 b 500 -176 495 -187 500 -183 b 498 -168 500 -174 498 -171 b 497 -166 498 -167 497 -167 l 498 -164 b 504 -154 503 -163 504 -158 b 503 -138 504 -150 503 -144 l 503 -135 l 503 -94 b 492 66 500 -45 494 10 b 488 135 492 89 488 112 b 484 150 488 141 485 145 b 482 154 482 151 482 153 b 429 189 472 177 456 189 b 53 184 304 186 179 186 l 39 184 b 33 181 36 183 35 183 b 12 160 20 181 12 177 b 0 -109 9 71 4 -19 b 19 -137 0 -125 7 -134 b 23 -151 19 -141 20 -145 b 85 -187 37 -173 55 -187 b 468 -189 212 -187 340 -187 z m 246 -125 l 63 -125 b 66 -111 65 -122 66 -117 b 73 72 69 -50 71 10 l 73 130 b 88 128 78 128 82 128 b 148 130 108 130 128 130 b 271 128 190 130 230 128 l 271 130 l 420 130 b 428 20 425 92 425 56 l 436 -127 l 246 -127 z',\n },\n noteheadSquareBlack: {\n x_min: 0,\n x_max: 342,\n y_min: -129.98961937716263,\n y_max: 132.44444444444446,\n ha: 262.4340638216071,\n o: 'm 217 190 b 439 186 304 190 372 190 b 467 180 448 184 458 183 b 492 145 484 176 492 167 b 490 -124 490 56 490 -33 b 488 -141 490 -130 488 -135 b 456 -170 488 -163 478 -168 b 118 -183 344 -176 230 -181 b 29 -184 89 -183 60 -192 b 0 -148 4 -180 0 -168 b 1 29 1 -89 1 -30 l 1 156 b 36 190 3 187 4 190 b 217 190 102 192 168 190 z',\n },\n noteheadTriangleDownDoubleWhole: {\n x_min: 0,\n x_max: 510,\n y_min: -213,\n y_max: 213,\n ha: 426,\n o: 'm 16 -307 b 30 -289 26 -307 29 -297 b 43 -236 36 -272 42 -253 l 65 219 b 59 285 62 240 69 264 b 46 307 55 294 58 307 l 43 307 b 19 279 30 304 20 295 b 13 184 17 248 14 216 b 1 -125 9 81 7 -23 b 0 -163 0 -138 0 -150 b 6 -287 0 -204 4 -245 b 16 -307 6 -295 7 -305 z m 707 -294 b 734 -213 733 -271 734 -242 b 729 245 733 -60 730 92 b 719 285 729 259 724 272 b 707 298 716 291 714 298 l 703 298 b 685 284 696 297 687 292 b 683 253 683 274 683 264 b 691 -181 685 108 685 -36 b 707 -294 693 -217 690 -256 z m 108 -238 b 125 -203 125 -238 121 -216 b 127 -190 127 -199 127 -194 b 120 -138 127 -173 120 -156 l 120 -66 b 114 167 120 12 118 89 l 118 161 b 314 -153 184 58 248 -48 b 350 -184 327 -173 338 -184 b 387 -154 361 -184 374 -174 b 567 108 449 -68 508 20 b 626 193 588 137 608 164 b 615 -132 622 85 619 -24 l 615 -166 b 619 -207 615 -180 615 -194 b 638 -226 622 -217 629 -225 b 651 -209 648 -226 649 -216 b 658 -177 655 -199 658 -187 l 658 -171 b 667 49 655 -98 667 -23 b 665 88 667 62 667 75 b 665 220 665 135 667 179 b 641 265 664 238 660 265 b 626 243 629 265 626 255 b 628 222 626 236 628 228 b 612 225 624 223 619 225 b 384 223 537 223 461 223 l 384 225 l 170 225 b 131 215 157 225 144 222 b 112 200 122 210 117 206 b 88 266 111 225 108 249 b 75 239 76 259 75 249 b 73 147 75 207 73 179 b 82 -189 73 35 79 -78 b 84 -203 82 -194 82 -199 b 108 -238 86 -219 91 -238 z m 361 -79 b 295 78 336 -26 314 26 b 284 151 287 101 284 125 b 310 177 284 171 291 177 b 419 176 346 176 383 174 l 423 176 b 445 153 441 176 445 168 l 445 147 b 361 -79 442 65 415 -10 z',\n },\n noteheadTriangleDownWhole: {\n x_min: 0,\n x_max: 366,\n y_min: -145,\n y_max: 138,\n ha: 283,\n o: 'm 242 -209 b 279 -180 253 -209 266 -200 b 459 84 341 -92 400 -4 b 520 170 480 112 501 141 b 527 189 524 177 527 183 b 504 199 527 196 520 199 l 55 199 b 23 190 45 199 33 196 b 0 161 9 181 0 173 b 10 135 0 154 3 145 b 206 -177 76 32 140 -73 b 242 -209 219 -199 230 -209 z m 253 -105 b 187 52 228 -52 206 0 b 176 127 179 76 176 101 b 197 151 176 144 181 151 l 202 151 b 256 150 220 151 238 150 b 311 151 275 150 294 151 b 337 128 331 151 337 144 l 337 122 b 253 -105 334 39 307 -35 z',\n },\n noteheadTriangleDownHalf: {\n x_min: -0.0833130378007211,\n x_max: 341,\n y_min: -159,\n y_max: 159,\n ha: 318,\n o: 'm 266 -229 b 282 -215 274 -229 278 -225 b 487 153 350 -92 418 30 b 491 170 490 158 491 164 b 480 189 491 177 487 183 b 425 215 464 202 448 213 b 33 226 297 217 168 222 b 13 229 29 223 22 229 b 1 222 9 229 4 228 b 14 184 -4 207 7 196 b 210 -176 81 65 145 -56 b 253 -225 222 -194 230 -213 b 266 -229 259 -226 264 -228 z m 134 22 b 147 43 138 27 141 37 b 206 163 174 79 179 127 b 213 170 209 166 212 167 l 340 167 b 193 -75 287 89 251 1 b 190 -82 192 -76 190 -79 z',\n },\n noteheadTriangleDownBlack: {\n x_min: 0,\n x_max: 346,\n y_min: -149,\n y_max: 149,\n ha: 298,\n o: 'm 229 -215 b 259 -202 238 -215 248 -210 b 284 -173 269 -194 278 -184 l 482 173 b 498 209 488 184 498 194 b 481 215 492 215 487 215 b 63 213 343 215 203 213 b 12 197 45 213 29 206 b 0 180 4 193 0 187 b 3 168 0 177 1 173 b 13 150 6 163 9 156 l 196 -189 b 229 -215 206 -206 216 -215 z',\n },\n noteheadTriangleUpDoubleWhole: {\n x_min: 0,\n x_max: 510,\n y_min: -213,\n y_max: 213,\n ha: 426,\n o: 'm 16 -307 b 30 -289 26 -307 29 -297 b 43 -236 36 -272 42 -253 l 65 219 b 59 285 62 240 69 264 b 46 307 55 294 58 307 l 43 307 b 19 279 30 304 20 295 b 13 184 17 248 14 216 b 1 -125 9 81 7 -23 b 0 -163 0 -138 0 -150 b 6 -287 0 -204 4 -245 b 16 -307 6 -295 7 -305 z m 707 -298 b 734 -217 733 -275 734 -246 b 729 240 733 -65 730 88 b 719 281 729 255 724 268 b 707 294 716 287 714 294 l 703 294 b 685 279 696 292 687 288 b 683 249 683 269 683 259 b 691 -186 685 104 685 -40 b 707 -298 693 -222 690 -261 z m 88 -266 b 112 -200 108 -249 111 -225 b 131 -215 117 -206 122 -210 b 170 -225 144 -222 157 -225 l 384 -225 l 384 -223 b 612 -225 461 -223 537 -223 b 628 -222 619 -225 624 -223 b 641 -265 628 -238 622 -265 b 665 -220 660 -265 664 -238 b 665 -88 667 -179 665 -135 b 667 -49 667 -75 667 -62 b 658 171 667 23 655 98 b 651 209 660 184 655 197 b 638 226 649 216 648 226 b 619 207 629 225 622 217 b 615 166 615 194 615 180 l 615 132 b 626 -193 619 24 622 -85 b 567 -108 608 -164 588 -137 b 387 154 508 -20 449 68 b 350 184 374 174 361 184 b 314 153 338 184 327 173 b 118 -161 248 48 184 -58 l 114 -167 b 120 66 118 -89 120 -12 l 120 138 b 127 190 120 156 127 173 b 125 203 127 194 127 199 b 108 238 121 216 125 238 b 84 203 91 238 86 219 b 82 189 82 199 82 194 b 73 -147 79 78 73 -35 b 75 -239 73 -179 75 -207 b 88 -266 75 -249 76 -259 z m 310 -177 b 284 -151 291 -177 284 -171 b 295 -78 284 -125 287 -101 b 361 79 314 -26 336 26 b 445 -147 415 10 442 -65 b 423 -176 446 -166 442 -176 l 419 -176 b 310 -177 383 -174 346 -176 z',\n },\n noteheadTriangleUpWhole: {\n x_min: 0,\n x_max: 366,\n y_min: -145,\n y_max: 138,\n ha: 283,\n o: 'm 504 -209 b 527 -199 520 -209 527 -206 b 520 -180 527 -193 524 -187 b 459 -94 501 -151 480 -122 b 279 170 400 -6 341 82 b 242 199 266 190 253 199 b 206 167 230 199 219 189 b 10 -145 140 63 76 -42 b 0 -171 3 -156 0 -164 b 23 -200 0 -183 9 -192 b 55 -209 33 -206 45 -209 z m 202 -161 b 176 -137 183 -163 176 -156 b 187 -62 176 -111 179 -86 b 253 95 206 -10 228 42 b 337 -132 307 24 334 -49 b 311 -161 338 -153 334 -161 b 256 -160 294 -161 275 -160 b 202 -161 238 -160 220 -161 z',\n },\n noteheadTriangleUpHalf: {\n x_min: 0,\n x_max: 341.0833130378007,\n y_min: -159,\n y_max: 159,\n ha: 318,\n o: 'm 458 -226 b 478 -229 462 -223 469 -229 b 490 -222 482 -229 487 -228 b 477 -184 495 -207 484 -196 b 281 176 410 -65 346 56 b 238 225 269 194 261 213 b 225 229 232 226 228 228 b 209 215 217 229 213 225 b 4 -153 141 92 73 -30 b 0 -170 1 -158 0 -164 b 12 -189 0 -177 4 -183 b 66 -215 27 -202 43 -213 b 458 -226 194 -217 323 -222 z m 151 -167 b 298 75 204 -89 240 -1 b 301 82 300 76 301 79 l 357 -22 b 344 -43 353 -27 350 -37 b 285 -163 317 -79 312 -127 b 278 -170 282 -166 279 -167 z',\n },\n noteheadTriangleUpBlack: {\n x_min: 0,\n x_max: 346,\n y_min: -149,\n y_max: 149,\n ha: 298,\n o: 'm 481 -215 b 498 -209 487 -215 492 -215 b 482 -173 498 -194 488 -184 l 284 173 b 259 202 278 184 269 194 b 229 215 248 210 238 215 b 196 189 216 215 206 206 l 13 -150 b 3 -168 9 -156 6 -163 b 0 -180 1 -173 0 -177 b 12 -197 0 -187 4 -193 b 63 -213 29 -206 45 -213 b 481 -215 203 -213 343 -215 z',\n },\n noteheadSlashedDoubleWhole1: {\n x_min: 0,\n x_max: 697,\n y_min: -290,\n y_max: 290,\n ha: 580,\n o: 'm 20 -418 b 42 -376 40 -418 37 -392 b 43 -356 45 -370 43 -363 l 43 -348 b 50 -197 43 -298 49 -248 b 78 317 58 -24 69 147 b 72 387 75 343 82 366 b 52 418 68 397 69 418 l 49 416 b 24 380 33 413 24 399 b 19 235 23 333 20 284 b 7 -82 14 130 10 24 b 0 -264 6 -143 0 -203 b 10 -382 0 -302 1 -343 b 20 -418 13 -393 6 -418 z m 976 -344 b 991 -331 985 -346 988 -337 b 1004 -271 999 -312 1004 -292 l 1004 -194 b 996 184 1004 -68 1001 59 b 996 281 996 216 998 249 b 984 379 995 314 991 347 b 971 397 981 392 976 396 b 952 386 965 397 959 392 b 943 361 943 380 945 370 b 937 288 939 337 937 312 b 945 158 937 245 942 203 b 959 -248 950 23 953 -112 b 966 -325 960 -274 963 -300 b 976 -344 966 -334 968 -344 z m 102 -331 b 124 -272 120 -314 122 -294 b 135 -278 127 -276 131 -278 l 141 -278 b 320 -199 206 -262 272 -252 b 348 -171 328 -189 338 -180 b 482 -199 392 -190 436 -199 b 704 -173 576 -199 641 -187 b 847 -82 760 -158 809 -130 l 855 -69 l 855 -73 b 863 -229 857 -125 860 -177 b 876 -255 863 -239 863 -255 b 893 -233 886 -255 888 -242 b 900 -189 899 -219 900 -203 l 900 66 b 900 192 899 108 900 150 b 893 301 900 228 899 265 b 877 325 890 310 893 325 l 876 325 b 855 301 865 324 855 315 b 850 202 852 268 847 235 b 854 50 854 151 854 101 b 821 99 847 68 835 85 b 733 167 795 127 765 148 b 831 253 766 196 799 225 b 851 265 837 258 844 261 b 829 282 840 275 835 279 b 772 295 815 291 795 295 b 685 271 739 295 704 287 b 624 215 665 252 645 233 l 566 232 b 527 239 553 236 540 239 b 490 228 514 239 501 236 b 451 219 475 217 467 219 b 275 176 389 219 331 200 b 184 53 216 150 184 105 b 199 -14 184 32 189 10 b 262 -108 215 -52 236 -82 l 125 -230 b 134 225 130 -78 132 73 b 135 269 134 239 135 255 b 121 330 135 291 132 311 b 95 287 99 323 95 307 b 92 124 94 233 95 179 b 85 -143 88 36 85 -53 b 89 -300 85 -196 86 -248 b 102 -331 89 -311 89 -323 z m 367 -14 b 350 43 359 3 351 22 b 392 122 350 82 363 107 b 544 171 439 150 492 160 b 572 168 554 174 563 171 z m 564 -132 b 467 -105 528 -138 497 -121 b 442 -89 458 -101 449 -95 l 658 101 b 690 30 677 82 690 59 b 688 10 690 24 690 17 b 564 -132 678 -45 611 -127 z',\n },\n noteheadSlashedWhole1: {\n x_min: -76,\n x_max: 498,\n y_min: -168,\n y_max: 168,\n ha: 336,\n o: 'm -79 -242 b 55 -202 -32 -236 14 -228 l 145 -143 b 333 -171 203 -166 265 -171 b 429 -164 361 -174 395 -168 b 582 -130 481 -158 534 -154 b 657 -20 631 -105 657 -65 b 619 68 657 9 644 40 b 552 120 599 89 577 107 b 582 138 562 127 572 132 b 717 226 625 167 668 194 b 638 242 688 236 662 242 b 543 213 603 242 573 232 b 455 154 514 194 484 174 b 325 199 412 167 367 179 b 233 215 298 210 265 215 b 75 156 173 215 124 186 b 0 27 24 122 0 76 b 66 -98 0 -17 22 -63 b 72 -102 69 -99 71 -101 b -89 -209 17 -137 -36 -173 b -109 -225 -95 -213 -109 -216 b -108 -229 -109 -226 -108 -228 b -85 -242 -104 -239 -95 -242 z m 181 -29 b 167 14 171 -13 167 1 b 187 62 167 30 173 46 b 301 137 217 99 258 118 b 312 138 304 138 308 138 l 317 138 b 389 109 340 125 364 118 l 383 105 z m 337 -109 b 239 -82 301 -107 268 -99 l 468 65 b 482 24 477 53 482 40 b 480 4 482 19 481 12 b 337 -109 467 -56 399 -111 z',\n },\n noteheadSlashedHalf1: {\n x_min: -79.3435119522494,\n x_max: 471,\n y_min: -184,\n y_max: 184,\n ha: 368,\n o: 'm -112 -251 b -94 -265 -107 -261 -101 -264 b -52 -242 -79 -265 -63 -249 l 89 -148 b 212 -180 125 -170 167 -179 b 238 -177 220 -180 229 -179 l 262 -180 b 346 -171 289 -180 318 -176 b 576 -91 431 -166 507 -140 b 641 4 619 -60 641 -29 b 592 96 641 35 625 65 l 583 104 b 533 147 567 121 550 134 l 613 200 b 678 261 636 216 664 232 b 658 265 671 264 664 265 b 611 248 641 265 625 258 l 491 171 b 337 204 444 194 392 204 b 281 200 318 204 300 204 b 27 62 180 187 92 145 b -1 -19 9 37 -1 10 b 36 -107 -1 -50 12 -82 b 52 -121 42 -112 46 -117 l -72 -203 b -112 -251 -91 -216 -122 -233 z m 161 -49 b 158 -29 160 -42 158 -35 b 183 33 158 -7 167 16 b 395 137 239 95 311 122 b 420 125 405 134 413 130 z m 276 -128 b 261 -131 271 -130 266 -131 b 181 -86 233 -131 203 -114 l 454 94 l 468 72 b 481 36 477 60 481 49 b 469 1 481 26 477 14 b 276 -128 422 -66 354 -105 z',\n },\n noteheadSlashedBlack1: {\n x_min: -110,\n x_max: 452,\n y_min: -190,\n y_max: 190,\n ha: 380,\n o: 'm -131 -274 b -102 -262 -121 -272 -111 -266 b 7 -186 -65 -239 -29 -212 b 50 -157 22 -176 36 -166 b 105 -176 65 -166 84 -173 b 207 -183 140 -181 173 -183 b 239 -184 219 -184 229 -184 b 428 -91 327 -184 377 -150 b 487 43 461 -52 487 -7 b 482 76 487 53 485 65 b 459 128 478 95 469 112 b 507 161 475 138 491 150 l 651 262 b 622 274 641 271 632 274 b 605 271 616 274 611 272 b 514 233 573 262 541 252 l 422 167 b 317 203 392 190 354 203 b 271 196 301 203 285 200 b 168 157 236 186 200 173 b 6 -16 94 120 33 68 b -1 -62 1 -32 -1 -48 b 17 -125 -1 -86 4 -108 b -81 -196 -16 -148 -48 -173 b -145 -242 -102 -212 -128 -219 b -158 -256 -150 -246 -158 -251 b -157 -261 -158 -258 -157 -259 b -131 -274 -153 -269 -141 -274 z',\n },\n noteheadSlashedDoubleWhole2: {\n x_min: -0.12386605641055257,\n x_max: 697.4733477320805,\n y_min: -295,\n y_max: 295,\n ha: 590,\n o: 'm 870 -338 b 891 -315 884 -341 887 -325 b 906 -183 907 -274 903 -228 b 914 186 912 -60 904 62 b 914 240 914 203 916 222 b 916 276 913 251 916 265 b 899 300 916 289 913 300 b 871 253 874 300 871 274 b 858 -168 871 111 858 -27 b 860 -235 858 -190 860 -213 l 736 -131 b 834 -20 799 -111 834 -69 b 789 85 834 13 819 49 b 683 160 760 118 723 140 b 383 216 589 209 487 215 b 330 213 364 217 347 216 b 228 300 295 242 261 271 b 86 347 184 337 138 348 b 58 343 76 347 63 350 l 58 360 b 35 425 58 384 53 423 b 6 382 9 425 6 403 l 6 131 b 0 -164 6 33 4 -66 b 24 -327 -1 -216 6 -271 b 50 -262 46 -305 50 -284 l 50 -154 b 52 -45 50 -118 50 -81 b 58 325 55 79 58 202 b 73 310 60 320 68 315 b 94 294 79 304 86 298 b 89 271 89 287 89 278 l 89 94 b 104 -194 101 -20 88 -108 b 118 -245 107 -213 104 -248 b 140 -190 140 -243 140 -212 l 140 -62 b 132 258 140 46 138 153 l 132 259 l 235 173 b 193 132 219 161 204 148 b 153 26 167 101 153 63 b 164 -35 153 7 157 -16 b 341 -170 196 -114 261 -158 b 433 -177 372 -174 403 -177 b 619 -157 497 -177 559 -170 l 706 -230 b 799 -276 736 -258 765 -276 b 818 -274 806 -276 812 -276 l 861 -274 b 863 -312 861 -287 863 -300 b 870 -338 864 -321 858 -337 z m 966 -425 b 986 -397 979 -425 982 -408 b 991 -373 989 -390 989 -382 b 995 -239 991 -328 995 -284 b 1004 334 1001 -49 1002 143 b 995 380 1005 350 1005 367 b 982 402 989 386 992 402 l 978 400 b 949 374 965 396 950 390 b 948 333 948 360 948 346 l 948 -37 b 949 -84 949 -52 949 -68 b 946 -248 949 -132 946 -189 b 953 -396 946 -297 948 -346 b 966 -425 955 -408 950 -425 z m 624 -36 b 416 140 554 22 485 81 b 482 156 439 150 461 154 b 625 81 537 156 588 124 b 647 27 639 63 647 46 b 624 -36 647 7 638 -14 z m 469 -117 b 320 14 386 -118 320 -60 b 343 81 320 37 327 60 l 547 -95 b 469 -117 521 -105 494 -111 z',\n },\n noteheadSlashedWhole2: {\n x_min: -83,\n x_max: 510,\n y_min: -201,\n y_max: 198,\n ha: 399,\n o: 'm 734 -289 b 696 -245 726 -266 710 -256 b 586 -164 660 -217 622 -192 l 589 -161 b 654 -50 631 -135 654 -94 b 616 40 654 -19 641 13 b 305 174 536 127 420 174 b 171 151 261 174 215 167 b 166 150 170 151 168 150 b 86 209 140 170 112 189 b -94 284 32 249 -22 289 l -108 285 b -120 274 -114 285 -120 284 b -104 251 -120 266 -112 258 b 71 124 -46 209 12 166 l 85 114 b 36 72 66 102 50 89 b 0 -30 12 40 0 4 b 122 -186 0 -96 45 -160 b 343 -222 194 -210 268 -222 b 514 -197 410 -220 467 -213 l 554 -228 b 734 -289 609 -268 668 -275 z m 477 -82 b 268 73 408 -30 338 22 l 301 91 b 336 101 314 96 324 101 b 370 88 347 101 359 96 b 459 9 405 66 436 43 b 481 -56 474 -13 481 -35 b 477 -82 481 -65 480 -73 z m 310 -161 b 216 -143 276 -161 246 -156 b 166 -72 181 -128 166 -105 b 168 -46 166 -65 167 -55 b 206 26 176 -16 189 7 b 436 -140 282 -29 360 -84 b 382 -158 420 -150 402 -157 b 310 -161 357 -161 333 -161 z',\n },\n noteheadSlashedHalf2: {\n x_min: -73,\n x_max: 454,\n y_min: -188,\n y_max: 188,\n ha: 376,\n o: 'm 654 -271 b 603 -202 649 -233 625 -217 b 481 -115 563 -173 523 -144 b 564 -60 510 -101 539 -82 b 615 40 596 -33 615 4 b 609 69 615 50 613 60 b 505 167 590 120 554 151 b 336 190 451 184 392 190 b 124 134 259 190 189 171 l -42 248 b -88 271 -56 256 -75 271 b -101 265 -94 271 -98 269 b -105 252 -104 259 -105 255 b -66 210 -105 235 -82 222 l 85 107 b 0 -24 42 73 0 35 b 183 -183 0 -118 75 -184 b 262 -176 206 -180 233 -177 b 438 -135 324 -171 383 -158 b 570 -228 482 -166 527 -197 b 654 -271 595 -243 621 -259 z m 393 -53 l 311 4 l 225 65 b 392 134 274 102 331 122 b 455 50 425 141 455 101 b 439 -3 455 35 451 14 b 393 -53 425 -22 409 -37 z m 287 -121 b 246 -130 272 -127 259 -130 b 171 -89 215 -130 189 -115 b 156 -40 161 -73 156 -58 b 186 29 156 -17 166 7 l 192 35 l 359 -82 b 287 -121 337 -98 312 -111 z',\n },\n noteheadSlashedBlack2: {\n x_min: -84,\n x_max: 405,\n y_min: -189,\n y_max: 189,\n ha: 378,\n o: 'm 557 -265 b 573 -272 562 -268 567 -272 b 583 -261 577 -272 580 -269 b 575 -242 580 -253 579 -248 b 524 -190 563 -220 544 -204 b 405 -99 485 -160 445 -130 b 497 50 449 -60 482 -9 b 500 72 498 58 500 65 b 478 122 500 91 492 107 b 331 186 438 167 387 186 b 120 131 258 186 186 167 l 107 124 b -52 242 53 163 1 203 b -89 265 -63 251 -76 259 b -107 272 -95 268 -101 272 b -117 266 -109 272 -114 271 b -121 251 -120 262 -121 256 b -114 235 -121 245 -120 239 b -60 186 -96 217 -81 199 b 63 95 -20 156 22 125 b -1 -35 26 66 -1 27 b 137 -183 -1 -130 46 -183 b 174 -180 148 -183 161 -181 l 245 -171 b 366 -128 289 -166 331 -150 l 426 -171 b 557 -265 469 -203 514 -233 z',\n },\n noteheadDiamondDoubleWhole: {\n x_min: 0,\n x_max: 429,\n y_min: -221,\n y_max: 221,\n ha: 442,\n o: 'm 22 -318 b 42 -294 33 -318 37 -302 b 46 -266 45 -285 45 -275 b 50 -219 49 -249 50 -233 b 48 -153 50 -197 49 -176 b 43 120 43 -62 43 29 l 43 253 b 37 298 43 269 45 284 b 26 318 35 305 35 318 l 24 318 b 1 295 13 317 3 308 b 0 268 0 285 0 276 l 0 -121 b 10 -291 0 -177 1 -235 b 22 -318 12 -301 10 -318 z m 593 -312 b 618 -256 611 -294 616 -276 l 618 -186 b 611 253 618 -40 612 108 b 605 276 611 261 608 268 b 589 295 600 284 600 297 b 567 272 577 294 569 285 l 567 251 b 575 -197 573 102 575 -48 b 593 -312 575 -233 579 -271 z m 99 -268 b 114 -256 107 -269 111 -262 b 127 -196 124 -238 125 -217 b 128 -144 128 -179 128 -161 b 122 -9 128 -99 125 -55 l 135 -19 b 344 -179 206 -71 276 -122 b 370 -190 354 -186 363 -190 b 395 -173 379 -190 386 -184 b 492 -33 426 -127 459 -79 b 491 -86 491 -50 491 -68 b 507 -251 491 -138 495 -193 b 534 -184 530 -228 533 -206 b 541 144 537 -75 539 35 b 530 204 541 164 539 186 b 520 220 528 210 528 220 b 500 203 511 219 503 213 b 498 192 498 200 498 194 l 498 176 b 494 7 497 120 497 63 l 490 12 l 287 176 b 258 190 279 181 274 190 b 212 153 239 186 225 168 l 127 40 b 121 32 124 37 122 35 b 118 114 120 59 118 86 b 102 249 117 158 122 206 b 75 219 85 246 79 236 b 72 187 72 209 72 197 b 76 117 72 164 75 141 b 85 -151 79 27 79 -62 b 91 -251 86 -184 91 -217 b 99 -268 91 -258 92 -266 z m 392 -128 b 374 -122 387 -134 380 -127 l 180 29 b 170 45 173 35 170 39 b 176 56 170 48 173 52 b 236 122 204 101 219 122 b 308 76 252 122 272 107 l 433 -26 b 449 -50 439 -32 449 -36 b 392 -128 432 -75 413 -102 z',\n },\n noteheadDiamondWhole: {\n x_min: 0,\n x_max: 271,\n y_min: -132,\n y_max: 132,\n ha: 264,\n o: 'm 230 -177 b 256 -190 240 -186 249 -190 b 281 -173 265 -190 272 -184 b 382 -29 314 -124 347 -76 b 390 -10 387 -22 390 -14 b 376 12 390 -3 386 4 b 173 177 308 66 240 121 b 144 190 166 183 160 190 b 98 153 127 186 112 170 b 13 40 69 115 42 76 b 0 13 4 29 0 20 b 22 -19 0 3 7 -9 b 230 -177 92 -69 163 -122 z m 279 -128 b 261 -122 274 -134 266 -127 l 66 30 b 56 45 59 35 56 39 b 62 56 56 48 59 52 b 122 122 91 101 105 122 b 194 76 138 122 158 107 l 320 -26 b 336 -50 325 -32 336 -35 b 279 -128 318 -75 300 -102 z',\n },\n noteheadDiamondHalf: {\n x_min: 0,\n x_max: 295,\n y_min: -148,\n y_max: 148,\n ha: 296,\n o: 'm 228 -207 b 245 -213 235 -210 240 -213 b 264 -203 252 -213 258 -210 b 415 -46 314 -150 364 -98 b 425 -27 420 -40 425 -35 b 416 -10 425 -22 422 -16 b 217 200 350 60 284 131 b 194 213 212 207 204 213 b 170 196 181 213 177 203 b 14 33 118 143 68 86 b 0 7 4 23 0 16 b 17 -20 0 -1 6 -10 b 118 -114 52 -50 82 -85 b 228 -207 156 -144 184 -184 z m 209 -157 b 134 -69 177 -138 141 -115 b 130 -26 131 -55 130 -40 b 215 148 130 42 160 99 b 225 156 217 151 220 156 b 230 153 226 156 228 156 b 323 -26 276 104 321 55 b 298 -75 324 -42 315 -59 b 265 -109 287 -86 276 -99 b 209 -157 245 -125 228 -167 z',\n },\n noteheadDiamondBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -146,\n y_max: 146,\n ha: 292,\n o: 'm 266 -210 b 289 -194 278 -209 284 -200 b 406 -76 330 -156 367 -115 b 446 -23 433 -49 446 -36 b 412 29 446 -10 435 3 b 405 36 409 30 408 33 b 252 196 354 89 304 143 b 225 210 243 204 235 210 b 204 202 219 210 212 209 b 10 24 141 141 75 82 b 0 9 4 19 0 14 b 9 -6 0 4 3 0 l 232 -192 b 266 -210 242 -200 256 -204 z',\n },\n noteheadParenthesis: {\n x_min: -70.190112022022,\n x_max: 329,\n y_min: -196,\n y_max: 201,\n ha: 397,\n o: 'm 344 -279 b 382 -262 361 -288 370 -272 b 405 -233 390 -255 399 -245 b 474 9 455 -158 468 -73 b 416 228 474 78 448 174 b 364 282 403 249 387 271 b 344 289 359 285 350 288 b 331 279 338 289 333 287 b 325 248 328 269 325 258 b 338 225 325 238 328 229 b 412 138 379 207 396 174 b 445 1 433 92 445 45 b 346 -217 445 -81 410 -154 b 336 -252 340 -223 336 -238 b 344 -279 336 -265 338 -276 z m 19 -274 b 35 -282 24 -279 30 -281 b 49 -265 42 -282 46 -275 b 52 -243 50 -256 52 -249 b 36 -210 52 -230 49 -220 b -60 -59 -16 -173 -35 -114 b -73 9 -69 -39 -73 -16 b 33 223 -73 92 -24 189 b 50 265 43 229 50 249 b 33 288 50 278 46 289 b 4 272 23 288 14 275 b -9 261 0 269 -4 265 b -101 23 -58 193 -105 124 b -37 -206 -104 -52 -75 -130 b 19 -274 -23 -232 -6 -255 z',\n },\n noteheadParenthesisRight: {\n x_min: -30,\n x_max: 82,\n y_min: -199.08429092881173,\n y_max: 206,\n ha: 405.0842909288117,\n o: 'm -17 -282 b 24 -264 -6 -297 12 -272 b 60 -219 40 -253 52 -236 b 117 1 96 -150 112 -75 b 118 16 118 6 118 12 b 109 73 118 36 112 55 b 4 279 99 154 68 226 b -23 297 -4 287 -13 297 b -37 289 -27 297 -32 294 b -43 266 -42 285 -43 276 b -32 225 -43 251 -37 229 b 84 -7 48 170 84 82 b 32 -184 84 -69 65 -132 b -10 -222 22 -200 4 -209 b -24 -258 -20 -232 -24 -245 b -17 -282 -24 -266 -22 -276 z',\n },\n noteheadParenthesisLeft: {\n x_min: 0,\n x_max: 106,\n y_min: -197,\n y_max: 197,\n ha: 394,\n o: 'm 134 -284 b 138 -281 135 -284 137 -284 b 145 -268 144 -278 145 -274 l 144 -253 b 107 -180 138 -225 121 -204 b 42 13 71 -120 42 -56 b 49 73 42 32 43 52 b 137 210 62 128 95 171 b 153 255 147 219 153 239 b 145 278 153 265 151 274 b 130 284 140 281 135 284 b 98 259 117 284 108 268 b 0 37 35 203 1 131 b 118 -268 9 -69 53 -173 b 134 -284 121 -274 127 -284 z',\n },\n noteheadMoonBlack: {\n x_min: 0,\n x_max: 328,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 353 -160 b 465 -40 412 -140 451 -102 b 472 30 471 -17 472 6 b 469 124 472 60 469 92 b 406 179 469 170 459 177 l 128 179 b 37 180 98 179 68 179 b 0 141 7 180 0 170 b 3 -20 3 88 3 33 b 69 -134 3 -72 26 -109 b 240 -180 125 -164 181 -180 b 353 -160 278 -180 315 -174 z',\n },\n noteheadTriangleLeftBlack: {\n x_min: 0,\n x_max: 391.1554175279994,\n y_min: -142,\n y_max: 142,\n ha: 284,\n o: 'm 138 -204 b 318 -197 197 -199 258 -197 l 431 -197 b 544 -192 469 -196 507 -193 b 563 -184 552 -190 560 -193 b 553 -167 564 -177 559 -171 l 540 -157 b 232 60 436 -85 334 -12 l 50 190 b 20 204 42 197 32 204 b 10 202 17 204 14 204 b 0 184 1 197 0 192 b 1 164 0 177 1 170 b 6 -150 3 59 6 -45 b 39 -193 7 -176 17 -186 b 138 -204 72 -204 105 -204 z',\n },\n noteheadTriangleRightBlack: {\n x_min: -0.3332953162522517,\n x_max: 398,\n y_min: -139,\n y_max: 140,\n ha: 279,\n o: 'm 543 -200 b 573 -176 566 -200 573 -194 l 573 -168 b 554 141 566 -66 560 37 b 520 197 553 167 546 187 b 495 202 511 200 504 202 b 454 184 481 202 467 196 l 35 -137 b 0 -171 22 -147 -4 -154 b 52 -199 6 -193 33 -193 b 69 -199 58 -200 63 -199 z',\n },\n noteheadTriangleRoundDownBlack: {\n x_min: 0,\n x_max: 334,\n y_min: -133.78604087938328,\n y_max: 136,\n ha: 269.7860408793833,\n o: 'm 252 -192 b 285 -176 269 -196 276 -187 b 468 52 346 -99 406 -23 b 481 79 477 62 481 71 b 465 104 481 88 475 95 b 441 124 456 109 449 117 b 249 196 380 174 314 194 b 13 104 157 196 69 154 b 0 86 6 98 0 92 b 7 69 0 82 3 76 b 202 -164 73 -7 137 -85 b 252 -192 216 -181 235 -186 z',\n },\n augmentationDot: {\n x_min: 0,\n x_max: 96,\n y_min: -57,\n y_max: 57,\n ha: 114,\n o: 'm 13 -82 b 16 -81 14 -82 14 -82 b 105 -73 46 -76 75 -76 b 131 -48 121 -72 131 -60 b 138 26 134 -24 138 0 b 137 48 138 33 138 40 b 108 82 134 71 125 82 b 95 81 104 82 99 82 b 33 71 75 78 53 75 b 4 46 20 68 6 62 b 0 -66 1 9 0 -29 b 13 -82 0 -73 1 -82 z',\n },\n tremolo1: {\n x_min: -158,\n x_max: 156.19381479578487,\n y_min: -88,\n y_max: 88,\n ha: 176,\n o: 'm -206 -127 b -194 -125 -203 -127 -199 -127 b 173 -36 -72 -94 50 -65 b 220 16 202 -29 215 -12 b 225 50 223 30 225 45 b 216 107 226 76 222 91 b 194 127 210 120 204 127 b 183 124 192 127 189 127 l -192 33 b -226 -9 -213 27 -222 14 b -228 -32 -226 -16 -228 -23 b -222 -108 -228 -58 -222 -82 b -206 -127 -222 -120 -217 -127 z',\n },\n flag8thUp: {\n x_min: 0,\n x_max: 261,\n y_min: -819,\n y_max: 0,\n ha: 819,\n o: 'm 265 -1171 b 351 -1035 301 -1130 336 -1087 b 376 -867 369 -979 376 -923 b 367 -755 376 -829 373 -792 b 233 -422 350 -632 311 -520 b 131 -291 199 -379 166 -334 b 65 -125 91 -239 66 -192 b 62 -75 65 -112 62 -91 b 42 0 62 -49 52 -24 l 35 0 b 0 -63 6 -13 0 -36 l 0 -144 b 96 -445 0 -255 29 -356 b 177 -547 124 -478 150 -514 b 308 -831 246 -629 298 -721 b 317 -890 310 -851 317 -871 b 311 -919 317 -900 315 -910 b 256 -1005 297 -950 282 -984 b 228 -1068 233 -1024 228 -1045 b 230 -1106 228 -1080 229 -1093 b 240 -1162 232 -1125 239 -1143 b 251 -1179 242 -1174 246 -1179 b 265 -1171 255 -1179 259 -1176 z',\n },\n flag8thDown: {\n x_min: 0,\n x_max: 261,\n y_min: 0,\n y_max: 819,\n ha: 819,\n o: 'm 265 1171 b 251 1179 259 1176 255 1179 b 240 1162 246 1179 242 1174 b 230 1106 239 1143 232 1125 b 228 1068 229 1093 228 1080 b 256 1005 228 1045 233 1024 b 311 919 282 984 297 950 b 317 890 315 910 317 900 b 308 831 317 871 310 851 b 177 547 298 721 246 629 b 96 445 150 514 124 478 b 0 144 29 356 0 255 l 0 63 b 35 0 0 36 6 13 l 42 0 b 62 75 52 24 62 49 b 59 117 62 91 59 104 b 131 291 60 183 91 239 b 233 422 166 334 199 379 b 367 755 311 520 350 632 b 376 867 373 792 376 829 b 351 1035 376 923 369 979 b 265 1171 336 1087 301 1130 z',\n },\n flag16thUp: {\n x_min: 0,\n x_max: 327.1591498636094,\n y_min: -819.3972596310256,\n y_max: 0,\n ha: 819.3972596310256,\n o: 'm 415 -1179 b 435 -1168 423 -1182 429 -1174 b 451 -1138 442 -1159 446 -1149 b 465 -1020 464 -1102 467 -1064 b 461 -962 464 -1004 464 -984 b 471 -821 467 -916 472 -870 b 465 -721 472 -791 467 -756 b 415 -520 459 -651 441 -585 b 200 -245 370 -408 284 -327 b 96 -114 160 -206 118 -168 b 75 -24 84 -85 85 -53 b 59 0 72 -16 72 0 b 53 -1 58 0 56 -1 b 27 -32 40 -6 27 -10 b 29 -68 27 -43 29 -55 b 10 -79 20 -69 13 -72 b 1 -109 6 -89 1 -99 b 0 -170 0 -130 0 -148 b 35 -410 0 -252 12 -333 b 258 -793 76 -557 156 -681 b 409 -1158 350 -896 410 -1014 b 415 -1179 409 -1165 405 -1175 z m 413 -816 b 331 -681 392 -769 364 -723 b 145 -420 266 -596 189 -521 b 86 -281 125 -374 102 -330 b 156 -370 105 -312 128 -343 b 318 -539 210 -425 269 -478 b 413 -816 383 -621 420 -713 z',\n },\n flag16thDown: {\n x_min: 0,\n x_max: 327.1591498636094,\n y_min: 0,\n y_max: 819,\n ha: 819,\n o: 'm 59 0 b 75 24 72 0 72 16 b 96 114 85 53 84 85 b 200 245 118 168 160 206 b 415 520 284 327 370 408 b 465 721 441 585 459 651 b 471 821 467 756 472 791 b 461 962 472 870 467 916 b 465 1020 464 984 464 1004 b 451 1138 467 1064 464 1102 b 435 1168 446 1149 442 1159 b 418 1179 431 1172 425 1179 l 415 1179 b 408 1169 409 1176 408 1174 b 409 1158 408 1165 409 1161 b 258 793 410 1014 350 896 b 35 410 156 681 76 557 b 0 170 12 333 0 252 l 0 88 b 29 7 0 71 6 23 b 59 0 33 4 58 0 z m 86 281 b 145 420 102 330 125 374 b 331 681 189 521 266 596 b 413 816 364 723 392 769 b 415 791 413 808 415 799 b 318 539 415 698 377 613 b 156 370 269 478 210 425 b 86 281 128 343 105 312 z',\n },\n flag32ndUp: {\n x_min: -0.19862981551275186,\n x_max: 268.0942440943661,\n y_min: -849.4710740978672,\n y_max: 149.0769891455102,\n ha: 998.5480632433774,\n o: 'm 323 -1223 b 351 -1198 337 -1227 344 -1210 b 359 -1184 354 -1194 356 -1188 b 386 -999 377 -1122 387 -1060 b 341 -783 386 -927 372 -855 b 330 -736 334 -769 330 -753 b 333 -708 330 -727 330 -717 b 344 -621 340 -678 344 -649 b 341 -579 344 -608 343 -593 b 328 -500 338 -553 328 -526 b 331 -475 328 -491 328 -484 b 347 -370 343 -438 348 -402 b 151 27 348 -212 288 -56 b 53 176 98 59 50 102 b 45 197 53 183 48 192 b 33 215 40 203 40 216 l 30 215 b 6 194 22 212 9 209 b 0 120 3 170 -1 145 b 0 -43 4 65 0 13 b 0 -98 0 -60 1 -79 b 4 -276 0 -157 6 -216 b 7 -456 4 -337 7 -397 b 66 -638 7 -523 22 -585 b 158 -724 94 -671 127 -697 b 318 -1011 246 -801 295 -899 b 321 -1044 321 -1021 321 -1032 b 312 -1152 321 -1080 312 -1116 b 317 -1192 312 -1165 314 -1179 b 323 -1223 320 -1202 311 -1220 z m 285 -376 b 121 -180 249 -289 173 -245 b 91 -105 104 -158 92 -135 b 288 -354 181 -144 288 -269 b 285 -376 288 -363 287 -370 z m 275 -657 b 111 -492 226 -589 163 -547 b 65 -376 78 -456 66 -418 b 71 -323 65 -360 68 -341 b 275 -657 164 -418 265 -504 z',\n },\n flag32ndDown: {\n x_min: -2.800802874905624,\n x_max: 268.09424409436605,\n y_min: -169.07698914551014,\n y_max: 829.4710740978672,\n ha: 998.5480632433773,\n o: 'm 323 1194 b 317 1164 311 1191 320 1174 b 312 1123 314 1151 312 1136 b 321 1015 312 1087 321 1051 b 318 982 321 1004 321 992 b 158 696 295 870 246 772 b 66 609 127 668 94 642 b 7 428 22 556 7 494 b 4 248 7 369 4 308 b -1 78 6 187 -10 137 b 0 14 0 59 0 32 l 0 -148 b 6 -223 0 -174 3 -199 b 30 -243 9 -238 22 -240 l 33 -243 b 45 -226 40 -245 40 -232 b 53 -204 48 -220 53 -212 b 151 -56 50 -131 98 -88 b 347 341 288 27 348 183 b 331 446 348 373 343 409 b 328 471 328 455 328 462 b 341 550 328 497 338 524 b 344 592 343 564 344 579 b 333 680 344 621 340 649 b 330 707 330 688 330 698 b 341 755 330 724 334 740 b 386 971 372 827 386 899 b 359 1155 387 1031 377 1093 b 351 1169 356 1159 354 1165 b 323 1194 344 1181 337 1198 z m 275 628 b 71 294 265 475 164 389 b 65 347 68 312 65 331 b 111 464 66 389 78 428 b 275 628 163 518 226 560 z m 285 347 b 288 325 287 341 288 334 b 91 76 288 240 181 115 b 121 151 92 107 104 130 b 285 347 173 216 249 261 z',\n },\n flag64thUp: {\n x_min: -4,\n x_max: 282,\n y_min: -823.5430338167067,\n y_max: 347,\n ha: 1170.5430338167066,\n o: 'm 350 -1185 b 380 -1162 364 -1189 374 -1175 b 406 -1022 399 -1119 406 -1071 b 359 -798 406 -945 384 -871 b 348 -756 353 -785 348 -772 b 350 -744 348 -753 350 -749 b 363 -621 356 -704 363 -664 b 360 -580 363 -608 363 -593 b 359 -560 359 -573 359 -567 b 373 -490 359 -536 366 -513 b 393 -346 386 -444 393 -395 b 387 -269 393 -320 390 -294 b 348 -127 382 -219 348 -173 b 351 -104 348 -120 348 -111 b 353 -65 351 -91 353 -78 b 341 37 353 -26 348 6 b 226 215 323 108 278 164 b 86 336 181 258 127 288 b 62 395 72 353 62 370 b 42 481 62 423 55 454 b 27 500 37 488 36 500 b 24 498 26 500 26 500 b -1 480 14 497 1 492 b -6 444 -4 467 -6 455 l -6 435 b -1 341 -1 403 -1 372 l -1 266 b 6 156 -1 230 0 193 b 13 35 12 117 13 75 l 13 -35 b 14 -85 13 -52 14 -68 b 29 -276 19 -150 33 -213 b 20 -448 24 -334 20 -392 b 24 -534 20 -477 22 -505 b 114 -708 30 -605 59 -664 b 197 -780 143 -732 171 -755 b 344 -1153 301 -884 341 -1011 b 343 -1172 344 -1159 343 -1166 b 350 -1185 343 -1176 344 -1182 z m 287 -88 b 62 193 186 -17 79 48 b 229 52 121 144 174 98 b 289 -33 256 29 274 -3 b 295 -56 294 -42 295 -49 b 287 -88 295 -66 292 -76 z m 298 -410 b 118 -235 238 -351 176 -295 b 76 -88 82 -197 78 -147 b 268 -252 137 -153 203 -202 b 330 -360 304 -279 330 -315 b 323 -402 330 -373 327 -387 b 311 -418 318 -413 315 -418 b 298 -410 307 -418 302 -415 z m 300 -691 b 117 -508 243 -616 168 -575 b 82 -408 94 -480 82 -448 b 84 -379 82 -397 82 -387 b 259 -553 135 -451 206 -492 b 301 -667 287 -583 301 -619 b 300 -691 301 -674 301 -683 z',\n },\n flag64thDown: {\n x_min: -5,\n x_max: 281,\n y_min: -375,\n y_max: 795.5430338167066,\n ha: 1170.5430338167066,\n o: 'm 348 1145 b 341 1132 343 1142 341 1136 b 343 1113 341 1126 343 1119 b 196 740 340 971 300 844 b 112 668 170 714 141 691 b 23 494 58 624 29 564 b 19 408 20 465 19 436 b 27 236 19 351 23 294 b 13 45 32 173 17 109 b 12 -6 13 27 12 12 l 12 -75 b 4 -196 12 -115 10 -157 b -3 -307 -1 -233 -3 -271 l -3 -382 b -7 -475 -3 -412 -3 -444 l -7 -484 b -3 -520 -7 -495 -6 -507 b 23 -539 0 -533 13 -537 b 26 -540 24 -540 24 -540 b 40 -521 35 -540 36 -528 b 60 -435 53 -494 60 -464 b 85 -376 60 -410 71 -393 b 225 -255 125 -328 180 -298 b 340 -78 276 -204 321 -148 b 351 24 347 -46 351 -14 b 350 63 351 37 350 50 b 347 86 347 71 347 79 b 386 229 347 132 380 179 b 392 305 389 253 392 279 b 372 449 392 354 384 403 b 357 520 364 472 357 495 b 359 540 357 527 357 533 b 361 580 361 553 361 567 b 348 704 361 624 354 664 b 347 716 348 708 347 713 b 357 757 347 732 351 744 b 405 982 383 831 405 904 b 379 1122 405 1031 397 1079 b 348 1145 373 1135 363 1149 z m 298 651 b 300 626 300 642 300 634 b 258 513 300 579 285 543 b 82 338 204 452 134 410 b 81 367 81 347 81 357 b 115 468 81 408 92 439 b 298 651 167 534 242 576 z m 297 370 b 310 377 301 374 305 377 b 321 361 314 377 317 373 b 328 320 325 347 328 333 b 266 212 328 275 302 239 b 75 48 202 161 135 112 b 117 194 76 107 81 157 b 297 370 174 255 236 311 z m 285 48 b 294 16 291 36 294 26 b 288 -7 294 9 292 1 b 228 -92 272 -37 255 -69 b 60 -233 173 -138 120 -184 b 285 48 78 -88 184 -23 z',\n },\n flag128thUp: {\n x_min: 0,\n x_max: 252,\n y_min: -804,\n y_max: 530,\n ha: 1334,\n o: 'm 298 -1158 b 328 -1126 312 -1158 320 -1139 b 330 -1116 330 -1123 330 -1119 b 347 -996 343 -1076 347 -1037 b 328 -837 347 -943 338 -890 b 320 -778 324 -816 320 -798 b 330 -733 320 -763 323 -749 b 340 -665 338 -714 337 -688 b 341 -645 340 -660 341 -652 b 333 -534 341 -609 333 -572 b 343 -471 333 -513 334 -492 b 361 -366 356 -436 361 -402 b 331 -202 361 -311 348 -256 b 328 -187 330 -197 328 -193 b 331 -179 328 -184 328 -181 b 363 -55 353 -137 363 -96 b 337 79 363 -12 351 33 b 327 114 333 92 327 104 b 344 144 327 124 331 132 b 359 174 353 150 357 163 b 361 228 360 193 361 210 b 243 517 361 337 325 435 b 147 596 213 546 179 569 b 75 708 111 626 75 655 b 62 744 75 723 68 733 b 50 763 58 752 58 763 b 46 762 49 763 48 762 b 17 742 36 757 22 757 b 0 697 14 726 0 711 b 1 595 0 662 3 631 b 0 469 0 552 0 511 b 1 429 0 456 0 442 b 22 289 6 382 22 337 b 24 128 22 238 24 184 b 22 66 24 108 23 86 b 19 -19 20 37 19 10 b 20 -132 19 -56 20 -95 b 13 -276 20 -180 19 -229 b 9 -359 10 -304 9 -330 b 12 -487 9 -402 12 -445 b 56 -582 12 -526 29 -554 b 197 -742 107 -632 160 -681 b 288 -1100 265 -851 276 -976 b 288 -1122 288 -1107 287 -1115 b 287 -1145 289 -1129 287 -1138 b 298 -1158 287 -1153 288 -1158 z m 304 150 b 75 475 229 256 112 334 b 304 150 233 357 305 287 z m 271 -73 b 127 72 233 -14 179 26 b 81 167 96 98 81 127 b 84 194 81 176 82 184 b 271 -73 148 102 242 39 z m 279 -396 b 132 -223 233 -330 180 -279 b 81 -112 104 -192 81 -156 b 82 -91 81 -105 81 -98 b 279 -396 167 -125 269 -281 z m 249 -609 b 69 -357 197 -520 88 -471 b 249 -609 131 -441 229 -498 z',\n },\n flag128thDown: {\n x_min: -0.8888888888888888,\n x_max: 252,\n y_min: -580,\n y_max: 754,\n ha: 1334,\n o: 'm 298 1086 b 287 1073 288 1086 287 1081 b 288 1050 287 1066 289 1057 b 288 1028 287 1043 288 1035 b 197 670 276 904 265 779 b 56 510 160 609 107 560 b 12 415 29 482 12 454 b 9 287 12 373 9 330 b 13 204 9 258 10 232 b 20 60 19 157 20 108 b 19 -53 20 23 19 -16 b 22 -138 19 -82 20 -109 b 24 -200 23 -158 24 -180 b 22 -361 24 -256 22 -310 b 1 -501 22 -409 6 -454 b 0 -541 0 -514 0 -528 b 0 -667 0 -583 -3 -624 b 0 -809 0 -675 -3 -791 b 46 -834 4 -825 36 -829 b 50 -835 48 -834 49 -835 b 62 -816 58 -835 58 -824 b 75 -780 68 -805 75 -795 b 147 -668 75 -727 111 -698 b 243 -589 179 -641 213 -618 b 361 -300 325 -507 361 -409 b 359 -246 361 -282 360 -265 b 344 -216 357 -235 353 -222 b 327 -186 331 -204 327 -196 b 337 -151 327 -176 333 -164 b 363 -17 351 -105 363 -60 b 331 107 363 24 353 65 b 328 115 328 109 328 112 b 331 130 328 121 330 125 b 361 294 348 184 361 239 b 343 399 361 330 356 364 b 333 462 334 420 333 441 b 341 573 333 500 341 537 b 340 593 341 580 340 588 b 330 661 337 616 338 642 b 320 706 323 677 320 691 b 328 765 320 726 324 744 b 347 924 338 818 347 871 b 330 1044 347 965 343 1004 b 328 1054 330 1047 330 1051 b 298 1086 320 1067 312 1086 z m 249 537 b 69 285 229 426 131 369 b 249 537 88 399 197 448 z m 279 324 b 82 19 269 209 167 53 b 81 40 81 26 81 33 b 132 151 81 84 104 120 b 279 324 180 207 233 258 z m 271 1 b 84 -266 242 -111 148 -174 b 81 -239 82 -256 81 -248 b 127 -144 81 -199 96 -170 b 271 1 179 -98 233 -58 z m 304 -222 b 75 -547 305 -359 233 -429 b 304 -222 112 -406 229 -328 z',\n },\n accidentalFlat: {\n x_min: 1,\n x_max: 209,\n y_min: -208,\n y_max: 472,\n ha: 680,\n o: 'm 29 -300 b 46 -289 33 -300 39 -297 b 107 -243 65 -274 86 -258 b 301 127 233 -153 301 -30 b 298 186 301 147 301 166 b 190 297 291 256 251 297 b 147 289 177 297 163 294 b 86 265 127 284 107 274 l 85 264 l 85 301 b 91 465 85 356 88 410 b 94 559 91 497 94 527 b 84 651 94 589 91 621 b 66 680 81 661 81 680 l 65 680 b 37 645 49 678 37 665 b 33 523 36 605 32 563 l 33 478 b 26 223 33 393 29 308 b 1 -141 22 101 1 -19 b 17 -287 1 -189 4 -239 b 29 -300 20 -295 23 -300 z m 68 -105 b 76 12 71 -68 72 -29 b 81 107 79 43 81 75 l 86 109 b 171 135 114 121 141 135 b 204 128 181 135 193 132 b 238 92 228 120 239 108 b 230 63 238 84 236 75 b 68 -105 193 -10 132 -59 z',\n },\n accidentalNatural: {\n x_min: 0,\n x_max: 213.5,\n y_min: -456,\n y_max: 462,\n ha: 918,\n o: 'm 255 -657 b 281 -624 271 -657 275 -636 b 285 -599 282 -615 285 -608 b 292 -300 288 -500 289 -400 b 289 -161 292 -253 289 -207 b 300 128 292 -65 297 32 b 304 168 300 128 302 150 l 304 173 l 305 190 l 305 199 l 307 225 b 304 259 307 229 310 246 b 272 298 297 274 302 305 b 63 266 204 279 134 272 b 72 514 68 348 72 432 b 71 595 72 541 72 567 b 56 665 71 619 66 642 b 17 579 9 651 17 608 b 3 144 19 433 7 289 b 0 -7 1 94 0 43 b 3 -134 0 -50 1 -92 b 7 -219 3 -163 7 -192 b 35 -251 7 -243 17 -251 b 49 -249 39 -251 43 -251 l 223 -223 l 230 -222 l 230 -359 b 223 -516 230 -410 223 -464 b 236 -619 223 -550 226 -585 b 255 -657 240 -634 236 -657 z m 58 -63 b 55 81 56 -14 53 33 l 56 99 b 85 99 65 99 75 98 b 232 108 134 104 183 107 l 240 109 l 236 66 b 232 -48 235 29 232 -10 b 58 -81 174 -63 115 -73 z',\n },\n accidentalSharp: {\n x_min: -22,\n x_max: 390,\n y_min: -384,\n y_max: 383,\n ha: 767,\n o: 'm 202 -553 b 219 -526 213 -552 216 -536 b 226 -471 225 -507 226 -488 b 225 -425 226 -455 225 -441 b 226 -392 225 -415 225 -402 b 233 -305 229 -363 232 -334 l 297 -292 b 331 -469 300 -353 311 -412 b 347 -485 333 -477 338 -485 b 363 -469 356 -487 359 -477 b 374 -418 373 -454 374 -435 b 376 -382 376 -405 376 -393 b 372 -276 376 -347 373 -311 l 455 -259 b 550 -156 534 -243 544 -232 b 550 -109 550 -137 552 -124 b 526 -78 549 -91 541 -78 l 523 -78 b 507 -79 517 -78 513 -78 b 403 -101 474 -88 438 -95 l 379 -105 b 382 -42 380 -85 380 -63 b 384 96 383 4 384 50 b 503 131 425 107 464 118 b 549 173 524 138 543 150 b 562 249 554 199 562 223 b 554 294 562 264 560 279 b 536 315 549 308 544 315 l 533 315 b 517 312 528 315 523 315 b 382 266 472 294 428 279 l 377 344 b 359 531 374 406 372 469 b 348 552 356 539 357 552 l 347 552 l 343 552 b 315 528 331 549 317 544 l 315 501 b 320 249 315 416 318 333 l 243 232 b 239 361 243 275 242 318 b 226 425 238 383 238 403 b 199 359 194 409 199 382 b 193 223 196 312 194 268 b 72 202 153 215 112 209 b 4 118 13 192 4 183 b 10 66 0 102 12 84 b 33 29 7 39 14 30 b 48 32 37 29 42 30 b 187 55 95 39 141 46 l 183 -75 b 176 -145 181 -99 179 -122 b 16 -179 122 -156 69 -166 b -32 -232 -14 -186 -32 -197 b -17 -331 -32 -266 -19 -298 b -1 -356 -17 -347 -13 -354 b 12 -353 1 -356 6 -354 b 167 -320 63 -341 115 -331 b 166 -377 166 -338 166 -357 b 189 -526 166 -428 171 -477 b 202 -553 192 -536 189 -553 z m 240 -132 b 243 -37 242 -101 242 -69 b 245 65 245 -3 245 30 b 315 79 269 69 292 73 b 301 -120 308 13 305 -53 z',\n },\n accidentalDoubleSharp: {\n x_min: 0,\n x_max: 287,\n y_min: -159,\n y_max: 159,\n ha: 318,\n o: 'm 84 -229 b 107 -216 91 -229 98 -225 b 200 -125 138 -186 167 -154 b 232 -95 212 -115 222 -105 b 347 -189 271 -125 310 -157 b 370 -200 356 -196 363 -200 b 396 -179 380 -200 389 -192 b 412 -102 410 -154 406 -125 b 377 -27 410 -69 400 -46 l 325 14 b 402 91 350 42 374 68 b 413 127 410 96 413 107 b 382 200 409 148 397 176 b 350 229 370 220 360 229 b 314 210 340 229 328 223 b 274 174 300 199 285 187 b 212 104 252 151 232 128 b 92 187 173 132 132 161 b 78 193 86 192 82 193 b 68 190 75 193 72 193 b 48 179 62 186 53 187 b 40 137 43 168 40 154 b 81 16 40 92 56 32 b 107 -3 89 10 98 4 b 14 -94 76 -32 45 -62 b 0 -124 6 -102 0 -114 b 12 -154 0 -134 3 -144 b 62 -215 26 -176 48 -193 b 84 -229 69 -225 76 -229 z',\n },\n accidentalDoubleFlat: {\n x_min: 0,\n x_max: 359,\n y_min: -220,\n y_max: 446,\n ha: 666,\n o: 'm 43 -317 b 72 -301 55 -317 63 -310 b 160 -186 108 -268 134 -226 b 236 -60 186 -145 212 -102 b 233 -131 235 -85 233 -108 b 239 -220 233 -161 235 -190 b 259 -246 240 -233 239 -240 b 301 -228 284 -252 291 -238 b 465 -7 369 -163 416 -85 b 517 173 500 48 517 108 b 451 307 517 229 505 284 b 409 315 436 312 422 315 b 331 287 382 315 356 305 b 311 274 324 282 320 274 l 310 274 l 310 566 b 305 621 310 585 312 603 b 294 642 301 628 305 642 l 292 642 b 264 622 282 641 266 636 b 253 575 259 606 256 590 b 246 418 248 523 246 471 b 248 243 246 360 248 302 l 248 187 b 164 238 220 225 193 238 b 85 213 140 238 112 226 b 84 229 85 220 84 225 b 86 315 85 258 86 287 b 81 528 86 386 82 458 b 71 582 81 547 78 566 b 56 603 66 590 68 603 l 53 603 b 23 580 40 600 26 598 b 19 537 20 566 19 552 b 20 514 19 530 19 521 b 26 390 24 472 26 432 b 14 66 26 282 16 174 b 0 -168 13 -12 0 -91 b 12 -279 0 -206 3 -242 b 30 -314 16 -294 14 -308 b 43 -317 35 -317 39 -317 z m 301 -72 b 302 7 302 -45 302 -19 l 302 86 b 351 158 304 121 321 145 b 383 166 361 163 373 166 b 435 143 402 166 419 157 b 445 127 441 138 445 132 b 441 114 445 122 444 118 b 301 -72 397 49 354 -14 z m 75 -147 b 73 30 75 -86 75 -29 b 118 82 73 62 92 76 b 132 84 124 84 128 84 b 190 52 156 84 174 69 b 193 40 192 49 193 45 b 192 33 193 37 193 35 b 75 -147 157 -30 125 -95 z',\n },\n accidentalParensLeft: {\n x_min: 0,\n x_max: 130.18934911242604,\n y_min: -270,\n y_max: 267.6082500723851,\n ha: 537.6082500723851,\n o: 'm 107 -389 b 127 -374 114 -389 120 -384 b 141 -347 132 -367 137 -357 b 151 -294 148 -330 151 -311 b 122 -207 151 -265 141 -236 b 63 -65 94 -164 72 -117 b 59 -10 60 -46 59 -27 b 145 223 59 78 94 153 b 187 354 176 262 189 305 b 177 384 187 364 190 380 b 143 373 166 387 153 383 b 124 354 137 367 130 361 b 0 -35 33 240 0 108 l 0 -92 b 85 -372 4 -193 27 -287 b 107 -389 92 -383 99 -389 z',\n },\n accidentalParensRight: {\n x_min: -0.4444444444444445,\n x_max: 139,\n y_min: -275,\n y_max: 277,\n ha: 552,\n o: 'm 58 -396 b 96 -354 75 -396 85 -370 b 200 13 168 -238 200 -111 b 153 268 200 109 184 190 b 49 392 131 320 101 364 b 26 399 40 397 33 399 b 0 366 10 399 0 387 b 0 318 -1 350 0 334 l 0 291 b 27 238 -3 266 7 253 b 143 9 105 180 143 98 b 141 -20 143 -1 143 -10 b 63 -225 135 -92 108 -164 b 36 -307 45 -251 36 -278 b 40 -344 36 -320 37 -331 b 42 -356 42 -347 42 -351 b 58 -396 42 -374 37 -396 z',\n },\n accidentalQuarterToneFlatStein: {\n x_min: 0,\n x_max: 208,\n y_min: -240,\n y_max: 440,\n ha: 680,\n o: 'm 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z',\n },\n accidentalThreeQuarterTonesFlatZimmermann: {\n x_min: 0,\n x_max: 422,\n y_min: -240,\n y_max: 440,\n ha: 680,\n o: 'm 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 336 -346 b 353 -336 340 -346 346 -343 b 413 -289 372 -320 393 -304 b 608 81 540 -199 608 -76 b 605 140 608 101 608 120 b 497 251 598 210 557 251 b 454 243 484 251 469 248 b 393 219 433 238 413 228 l 392 217 l 392 255 b 397 419 392 310 395 364 b 400 513 397 451 400 481 b 390 605 400 543 397 575 b 373 634 387 615 387 634 l 372 634 b 344 599 356 632 344 619 b 340 477 343 559 338 517 l 340 432 b 333 177 340 347 336 262 b 308 -187 328 55 308 -65 b 324 -333 308 -235 311 -285 b 336 -346 327 -341 330 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z m 374 -151 b 383 -35 377 -114 379 -75 b 387 60 386 -3 387 29 l 393 63 b 478 89 420 75 448 89 b 511 82 488 89 500 86 b 544 46 534 73 546 62 b 537 17 544 37 543 29 b 374 -151 500 -56 439 -105 z',\n },\n accidentalQuarterToneSharpStein: {\n x_min: 0,\n x_max: 300,\n y_min: -338,\n y_max: 351,\n ha: 689,\n o: 'm 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 l 35 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z',\n },\n accidentalThreeQuarterTonesSharpStein: {\n x_min: -23,\n x_max: 388,\n y_min: -373,\n y_max: 445,\n ha: 818,\n o: 'm 114 -537 b 138 -475 137 -518 138 -495 b 147 -292 138 -413 144 -353 b 212 -278 168 -287 190 -282 b 243 -444 215 -333 225 -389 b 261 -467 248 -454 251 -465 b 281 -446 272 -469 276 -455 b 292 -347 292 -416 288 -384 b 288 -262 289 -320 288 -291 l 374 -245 b 376 -311 374 -266 374 -288 b 390 -456 379 -357 379 -405 b 416 -396 412 -436 415 -418 b 423 -287 420 -360 423 -323 b 422 -235 423 -269 423 -252 b 451 -229 432 -233 441 -232 b 547 -98 524 -215 547 -199 l 547 -89 b 521 -49 546 -59 540 -49 b 497 -52 516 -49 507 -49 b 418 -68 469 -56 444 -63 b 423 52 419 -29 422 12 b 426 140 425 81 425 109 b 495 160 449 145 472 153 b 552 219 526 170 546 189 b 559 279 557 240 553 262 b 530 341 559 324 552 341 b 490 331 520 341 507 338 b 432 311 471 324 452 318 b 449 552 436 392 442 471 b 452 588 451 563 452 575 b 446 622 452 599 451 611 b 436 641 444 629 448 641 b 418 628 428 641 420 636 b 409 602 413 621 410 611 b 386 297 396 501 390 399 b 297 274 356 288 327 281 b 291 403 295 317 294 360 b 274 550 288 452 284 501 b 259 569 271 564 265 569 b 240 559 253 569 248 563 b 230 537 232 554 230 546 l 230 488 b 233 369 230 448 232 409 b 236 261 236 333 238 297 b 156 245 210 255 183 251 b 154 396 154 295 154 346 b 150 416 154 403 153 410 b 140 438 145 423 150 438 l 138 438 b 118 413 128 436 118 428 b 112 354 118 393 114 374 b 109 238 109 315 109 276 b 49 226 89 233 69 230 b 3 163 16 222 3 202 b 7 91 3 138 9 114 b 29 62 7 69 13 62 b 39 63 32 62 35 63 b 104 73 60 66 82 71 b 101 -10 104 46 102 17 l 92 -132 l 10 -150 b -33 -204 -19 -157 -33 -170 b -19 -310 -32 -240 -19 -274 b -6 -324 -19 -321 -13 -324 b 6 -323 -1 -324 1 -324 b 82 -307 32 -317 58 -311 b 81 -376 82 -330 81 -353 b 114 -537 81 -431 94 -484 z m 294 -92 b 297 -37 295 -73 295 -56 b 300 49 300 -9 300 20 l 300 108 b 379 127 325 114 353 120 b 374 -76 376 59 374 -9 b 294 -92 347 -82 320 -86 z m 154 -120 b 157 20 154 -73 156 -26 b 158 82 158 40 158 62 b 230 95 183 86 206 89 b 225 0 229 63 226 32 b 217 -107 223 -35 220 -71 z',\n },\n accidentalBuyukMucennebFlat: {\n x_min: 1.8692317181955784,\n x_max: 287,\n y_min: -248,\n y_max: 432.4720949426819,\n ha: 680.4720949426819,\n o: 'm 410 128 b 302 239 403 199 363 239 b 259 232 289 239 275 236 b 199 207 239 226 219 216 l 197 206 l 197 243 l 197 251 b 347 317 248 272 298 295 b 376 347 360 324 372 334 b 389 435 387 376 393 405 b 348 454 384 462 377 465 b 202 387 300 432 251 409 b 203 408 203 395 203 402 l 203 431 b 347 490 252 451 300 469 b 376 517 360 495 372 505 b 389 599 387 546 393 572 b 348 616 384 625 377 628 l 203 556 b 196 593 202 569 199 582 b 179 622 193 603 193 622 l 177 622 b 150 588 161 621 150 608 b 147 533 150 570 148 552 b 29 488 108 517 69 503 b 3 455 12 482 3 472 b 12 353 1 422 9 389 b 145 408 56 372 101 389 b 145 363 145 392 145 377 l 29 315 b 3 281 12 310 3 298 b 12 170 1 245 9 209 l 141 226 b 138 166 140 206 138 186 b 114 -199 134 43 115 -76 b 130 -344 114 -246 117 -297 b 141 -357 132 -353 135 -357 b 158 -347 145 -357 151 -354 b 219 -301 177 -331 199 -315 b 413 69 346 -210 413 -88 b 410 128 413 89 413 108 z m 350 35 b 343 6 350 26 348 17 b 180 -163 308 -69 245 -117 b 189 -46 183 -125 184 -86 b 193 49 192 -14 193 17 l 199 52 b 284 78 226 63 253 78 b 317 71 294 78 305 75 b 350 35 340 62 351 50 z',\n },\n accidentalBakiyeFlat: {\n x_min: 1.8692317181955784,\n x_max: 287,\n y_min: -236,\n y_max: 444,\n ha: 680,\n o: 'm 141 -340 b 158 -330 145 -340 151 -337 b 219 -284 177 -314 199 -298 b 413 86 346 -193 413 -71 b 410 145 413 107 413 125 b 302 256 403 216 363 256 b 259 249 289 256 275 253 b 199 225 239 243 219 233 l 197 223 l 197 261 b 199 334 197 285 199 310 b 347 406 249 357 298 382 b 376 439 360 413 372 425 b 390 516 384 465 390 490 b 389 537 390 523 390 530 b 372 564 384 556 382 564 b 348 557 367 564 359 562 b 204 487 300 537 253 510 b 206 518 206 497 206 507 b 196 611 206 549 203 580 b 179 639 193 621 193 639 l 177 639 b 150 605 161 638 150 625 b 145 482 148 564 144 523 l 145 458 b 29 405 107 439 68 420 b 3 366 12 397 3 386 b 12 243 1 325 9 287 b 143 307 56 265 99 285 l 138 183 b 114 -181 134 60 114 -59 b 130 -327 114 -229 117 -279 b 141 -340 132 -336 135 -340 z m 180 -145 b 189 -29 183 -108 184 -69 b 193 66 192 3 193 35 l 199 69 b 284 95 226 81 253 95 b 317 88 294 95 305 92 b 350 52 340 79 351 68 b 343 23 350 43 348 35 b 180 -145 305 -50 245 -99 z',\n },\n accidentalKomaSharp: {\n x_min: 0,\n x_max: 300,\n y_min: -338,\n y_max: 351,\n ha: 689,\n o: 'm 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 l 35 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z',\n },\n accidentalKucukMucennebSharp: {\n x_min: -0.15206251809627475,\n x_max: 359,\n y_min: -420,\n y_max: 343,\n ha: 763,\n o: 'm 236 -605 b 262 -543 256 -583 261 -564 b 269 -423 268 -503 269 -464 b 266 -340 269 -396 268 -367 l 361 -318 b 405 -276 384 -312 399 -298 b 413 -189 412 -248 416 -219 b 395 -164 412 -171 409 -164 b 382 -166 392 -164 387 -164 b 264 -193 343 -176 304 -184 b 269 -102 265 -163 268 -132 b 454 -62 331 -89 392 -78 b 501 -23 477 -58 494 -45 b 517 62 511 6 517 33 b 487 112 517 95 513 112 b 471 111 482 112 477 112 b 274 66 406 95 340 81 b 276 138 275 91 276 114 b 350 154 301 144 325 148 b 402 203 377 160 396 176 b 412 284 408 230 412 258 b 392 311 412 302 406 311 b 372 308 386 311 379 310 b 287 291 343 301 314 297 l 295 405 b 298 441 297 416 298 428 b 292 475 298 452 297 464 b 282 494 289 482 294 494 b 264 481 274 494 266 490 b 255 455 259 474 256 464 b 239 282 248 397 243 340 b 148 268 209 278 179 274 b 62 164 62 252 62 253 l 62 132 b 79 108 60 117 65 108 l 86 108 l 230 130 b 229 92 230 118 229 105 b 228 56 228 79 228 68 b 66 20 173 43 120 32 b 0 -59 6 7 3 1 l 0 -138 b 14 -160 -1 -156 4 -160 b 27 -158 19 -160 23 -160 b 222 -112 92 -141 157 -127 b 220 -203 220 -143 220 -173 b 147 -217 196 -207 171 -213 b 89 -288 92 -228 89 -229 b 95 -347 85 -305 96 -325 b 112 -374 92 -366 98 -374 b 125 -373 117 -374 121 -374 l 220 -351 b 222 -458 220 -386 220 -422 b 236 -605 223 -504 225 -552 z',\n },\n accidentalKoron: {\n x_min: 0,\n x_max: 303,\n y_min: -462.4598053473055,\n y_max: 180,\n ha: 642.4598053473055,\n o: 'm 59 -665 b 72 -649 69 -662 72 -657 b 69 -626 72 -642 69 -634 b 69 -622 69 -625 69 -624 l 69 -600 b 55 -156 60 -456 68 -311 b 86 -170 66 -166 76 -170 b 112 -163 95 -170 104 -166 b 390 -35 204 -120 298 -78 b 436 -1 409 -27 436 -27 b 396 46 436 22 413 33 l 382 55 b 46 243 271 121 157 179 b 12 259 29 253 17 259 b 0 219 1 259 0 248 b 3 -372 0 22 3 -176 b 6 -616 3 -454 6 -536 b 59 -665 6 -638 40 -671 z m 55 199 b 363 24 156 141 258 84 b 55 -118 259 -24 160 -69 z',\n },\n accidentalSori: {\n x_min: 0,\n x_max: 434,\n y_min: -295,\n y_max: 325,\n ha: 620,\n o: 'm 194 -425 b 196 -409 194 -418 196 -413 b 194 -194 196 -337 196 -266 b 364 -127 251 -171 308 -150 b 361 -321 363 -192 364 -256 b 410 -387 360 -357 373 -377 b 413 -373 412 -382 413 -377 b 418 -114 418 -287 418 -200 l 418 -105 b 595 -35 477 -82 536 -59 b 625 0 612 -27 625 -22 b 593 48 624 23 618 39 l 419 117 b 423 370 419 202 423 285 b 426 403 423 382 426 393 b 418 436 426 415 425 426 b 384 468 409 449 399 468 b 369 448 370 468 369 459 b 369 436 369 444 369 441 l 369 428 l 369 423 b 367 138 369 328 367 233 l 353 143 l 192 207 l 192 367 b 173 406 192 383 184 396 b 151 422 167 413 160 422 b 144 420 148 422 147 422 b 137 403 138 416 137 410 l 137 392 l 137 229 b 33 271 102 243 68 256 b 13 276 26 274 19 276 b 0 262 6 276 0 272 b 35 199 1 239 0 212 l 138 160 b 140 -148 138 58 138 -45 b 56 -181 111 -158 84 -170 b 24 -215 35 -189 24 -199 b 29 -235 24 -220 26 -228 b 49 -253 35 -249 42 -253 b 78 -240 59 -253 69 -243 b 140 -216 98 -233 120 -225 l 140 -356 b 194 -425 140 -406 141 -406 z m 194 -125 b 193 138 194 -37 193 50 b 315 89 233 122 275 107 b 366 71 333 84 350 76 b 364 -58 366 27 366 -16 b 194 -125 308 -81 251 -104 z m 419 49 l 526 7 l 485 -10 l 419 -36 z',\n },\n articAccentAbove: {\n x_min: 0,\n x_max: 425,\n y_min: 0,\n y_max: 326,\n ha: 326,\n o: 'm 27 1 b 78 12 46 0 62 6 b 347 112 168 45 253 91 b 521 184 409 128 459 167 b 608 259 557 194 589 220 b 612 274 611 265 612 271 b 598 292 612 281 608 287 b 477 347 559 312 518 331 b 176 465 374 384 275 425 b 156 469 168 468 161 469 b 125 456 145 469 137 465 b 53 370 96 432 78 399 b 45 353 48 363 45 357 b 68 333 45 344 52 337 b 360 225 166 298 262 261 b 192 154 302 203 249 171 b 13 36 120 132 53 105 b 0 13 9 29 0 22 l 0 9 b 16 0 3 1 10 0 l 26 0 b 27 1 27 0 27 0 z',\n },\n articAccentBelow: {\n x_min: 0,\n x_max: 425,\n y_min: -326,\n y_max: 0,\n ha: 326,\n o: 'm 26 -469 l 27 -469 b 78 -458 46 -469 62 -464 b 347 -357 168 -426 253 -380 b 521 -285 409 -341 459 -302 b 608 -210 557 -276 589 -249 b 612 -196 611 -204 612 -200 b 598 -179 612 -189 608 -183 b 477 -122 559 -157 518 -138 b 176 -4 374 -85 275 -45 b 156 0 168 -1 161 0 b 125 -13 145 0 137 -4 b 53 -99 96 -37 78 -71 b 45 -117 48 -107 45 -112 b 68 -137 45 -125 52 -132 b 360 -245 166 -171 262 -209 b 192 -315 302 -266 249 -300 b 13 -433 120 -337 53 -366 b 0 -456 9 -442 0 -448 l 0 -461 b 16 -469 3 -468 10 -469 z',\n },\n articTenutoAbove: {\n x_min: 0.35192668236256364,\n x_max: 471.1238660564107,\n y_min: 0,\n y_max: 56,\n ha: 56,\n o: 'm 137 0 b 197 1 156 0 179 1 b 409 6 268 1 338 6 b 482 4 432 6 459 6 b 556 0 508 3 534 0 b 651 10 588 0 621 3 b 678 27 662 12 678 10 b 654 59 680 45 672 53 b 511 75 606 73 560 73 b 255 81 426 78 341 81 b 160 79 222 81 193 79 l 36 79 b 1 71 24 78 7 85 b 19 32 -3 56 9 43 b 45 16 26 24 36 20 b 137 0 76 3 108 0 z',\n },\n articTenutoBelow: {\n x_min: 0.35192668236256364,\n x_max: 471.1238660564107,\n y_min: -59,\n y_max: -3,\n ha: 56,\n o: 'm 137 -85 b 197 -84 156 -85 179 -84 b 409 -79 268 -84 338 -79 b 482 -81 432 -79 459 -79 b 556 -85 508 -82 534 -85 b 651 -75 588 -85 621 -82 b 678 -58 662 -73 678 -75 b 654 -26 680 -40 672 -32 b 511 -10 606 -12 560 -12 b 255 -4 426 -7 341 -4 b 160 -6 222 -4 193 -6 l 36 -6 b 1 -14 24 -7 7 0 b 19 -53 -3 -29 9 -42 b 45 -69 26 -60 36 -65 b 137 -85 76 -82 108 -85 z',\n },\n articStaccatoAbove: {\n x_min: 1.4151102965496913,\n x_max: 112,\n y_min: 0,\n y_max: 156,\n ha: 156,\n o: 'm 98 0 b 132 23 109 0 122 7 b 161 112 150 50 161 79 b 158 148 161 124 161 137 b 125 186 154 167 131 167 b 63 225 117 215 85 216 b 23 197 45 222 30 219 b 3 91 12 163 12 127 b 19 66 0 79 4 69 b 65 27 40 62 53 46 b 98 0 76 9 88 0 z',\n },\n articStaccatoBelow: {\n x_min: 1.4151102965496913,\n x_max: 112.08403222864916,\n y_min: -156,\n y_max: 0,\n ha: 156,\n o: 'm 132 -202 b 161 -112 151 -174 163 -145 b 158 -76 161 -101 161 -88 b 125 -39 153 -58 131 -58 b 63 0 115 -10 85 -9 b 23 -27 45 -3 30 -6 b 3 -134 12 -62 10 -98 b 19 -158 0 -145 4 -156 b 65 -197 40 -164 53 -179 b 98 -225 75 -216 88 -225 b 132 -202 109 -225 122 -217 z',\n },\n articStaccatissimoAbove: {\n x_min: 0,\n x_max: 139,\n y_min: 0,\n y_max: 411,\n ha: 411,\n o: 'm 104 0 b 144 115 143 29 138 75 b 197 423 158 217 180 320 b 200 454 199 433 200 444 b 181 540 200 482 193 513 b 112 592 167 573 141 592 b 55 567 92 592 72 585 b 0 490 32 546 3 527 l 0 484 b 27 279 14 416 14 347 b 84 20 43 193 52 104 b 96 0 86 13 92 6 z',\n },\n articStaccatissimoBelow: {\n x_min: 0,\n x_max: 139,\n y_min: -411,\n y_max: 0,\n ha: 411,\n o: 'm 88 -592 b 145 -567 108 -592 128 -585 b 200 -490 168 -546 197 -527 l 200 -484 b 173 -279 186 -416 186 -347 b 117 -20 157 -193 148 -104 b 104 0 114 -13 108 -6 l 96 0 b 56 -115 58 -29 62 -75 b 3 -423 42 -217 20 -320 b 0 -454 1 -433 0 -444 b 19 -540 0 -482 7 -513 b 88 -592 33 -573 59 -592 z',\n },\n articMarcatoAbove: {\n x_min: 0.04121419527862119,\n x_max: 396,\n y_min: 0,\n y_max: 328.0000000000001,\n ha: 328.0000000000001,\n o: 'm 477 0 b 510 13 488 0 500 6 b 570 124 546 40 563 81 b 547 183 570 147 560 166 b 356 422 487 265 405 330 b 346 442 354 429 350 436 l 346 444 b 318 465 340 456 330 464 l 312 469 b 274 449 294 480 284 461 b 242 413 262 438 253 425 b 56 196 177 343 112 274 b 1 56 26 154 13 105 b 27 20 -4 35 9 20 b 42 23 32 20 37 20 b 84 53 59 29 72 39 b 255 269 141 125 193 200 b 275 229 262 255 266 242 b 448 14 324 151 390 86 b 477 0 456 4 467 0 z',\n },\n articMarcatoBelow: {\n x_min: 0,\n x_max: 395.9587858047214,\n y_min: -328.0000000000001,\n y_max: 0,\n ha: 328.0000000000001,\n o: 'm 258 -469 b 297 -449 276 -480 287 -461 b 328 -413 308 -438 317 -425 b 514 -196 393 -343 458 -274 b 569 -56 544 -154 557 -105 b 543 -20 575 -35 562 -20 b 528 -23 539 -20 533 -20 b 487 -53 511 -29 498 -39 b 315 -269 429 -125 377 -200 b 295 -229 308 -255 304 -242 b 122 -14 246 -151 180 -86 b 94 0 114 -4 104 0 b 60 -13 82 0 71 -6 b 0 -124 24 -40 7 -81 b 23 -183 0 -147 10 -166 b 215 -422 84 -265 166 -330 b 225 -442 216 -429 220 -436 l 225 -444 b 252 -465 230 -456 240 -464 z',\n },\n fermataAbove: {\n x_min: -0.04550444040404433,\n x_max: 472,\n y_min: 2.015071727506986,\n y_max: 454,\n ha: 451.984928272493,\n o: 'm 39 10 b 78 108 66 37 71 73 b 163 311 92 181 111 252 b 284 423 199 353 239 392 b 373 458 312 444 340 454 b 433 431 395 458 410 446 b 603 153 530 361 596 276 b 595 121 603 144 595 131 l 595 88 b 602 50 596 75 589 55 b 639 73 619 43 631 60 b 651 102 645 82 648 92 b 667 194 660 132 662 163 b 680 278 671 222 672 248 b 560 567 680 386 638 481 b 396 654 508 625 452 649 b 291 632 364 654 325 644 b 161 526 235 613 200 566 b 4 249 85 446 26 357 b 4 174 0 222 -3 196 b 10 19 4 124 4 69 b 29 4 12 6 16 0 b 39 10 35 4 33 4 z m 338 37 b 370 40 350 36 357 36 b 380 75 387 40 380 43 b 389 94 382 79 382 85 b 356 132 389 111 374 122 b 269 154 328 147 300 156 b 225 125 252 154 228 157 b 261 48 222 81 232 56 b 338 37 287 40 312 40 z',\n },\n fermataBelow: {\n x_min: -0.310835055998654,\n x_max: 518.570567335755,\n y_min: -430,\n y_max: -0.9161449836506543,\n ha: 429.08385501634933,\n o: 'm 344 -615 b 500 -543 402 -602 452 -576 b 713 -253 605 -471 661 -364 b 746 -98 737 -204 750 -153 b 727 -59 744 -82 744 -59 b 688 -88 711 -59 694 -68 b 678 -109 687 -96 683 -102 b 562 -314 648 -183 611 -252 b 387 -439 516 -373 458 -416 b 328 -449 367 -446 347 -449 b 180 -386 274 -449 225 -423 b 69 -179 111 -330 69 -262 b 75 -121 69 -160 71 -141 b 84 -58 78 -101 84 -79 b 82 -39 84 -52 84 -45 b 68 -1 79 -26 82 -4 b 26 -32 49 0 33 -12 b 20 -52 24 -39 22 -45 b 0 -223 9 -107 -3 -161 b 141 -553 1 -348 27 -468 b 304 -619 192 -590 243 -619 b 344 -615 317 -619 330 -618 z m 415 -190 b 435 -157 429 -192 435 -184 b 308 -27 435 -86 379 -27 b 271 -46 287 -27 272 -35 b 269 -69 269 -55 269 -62 b 364 -183 269 -128 302 -170 z',\n },\n fermataLongAbove: {\n x_min: 0,\n x_max: 591.4911182523068,\n y_min: -6,\n y_max: 337.10134960318186,\n ha: 343.10134960318186,\n o: 'm 20 -9 b 36 14 29 -9 35 3 b 49 109 45 45 49 78 b 48 143 49 121 49 131 b 42 312 40 200 45 256 b 63 338 42 331 46 338 b 68 340 65 338 66 338 b 279 333 138 336 209 334 b 760 317 439 330 599 323 b 783 298 775 317 782 315 l 796 161 b 814 17 801 115 802 68 b 851 144 840 45 855 102 b 824 396 842 228 834 312 b 760 468 816 459 812 467 l 55 485 b 1 433 12 487 1 478 l 1 387 b 0 203 1 325 0 264 b 9 17 0 141 3 79 b 20 -9 9 7 6 -9 z m 403 3 b 439 6 413 3 425 4 b 477 42 464 9 474 22 b 478 62 478 49 478 55 l 478 84 b 465 160 478 109 478 135 b 449 173 461 167 459 173 b 354 105 386 179 354 156 b 359 71 354 95 356 84 b 360 65 360 69 360 66 b 403 3 372 14 373 3 z',\n },\n fermataLongBelow: {\n x_min: 0,\n x_max: 602,\n y_min: -335,\n y_max: 7,\n ha: 342,\n o: 'm 793 -482 b 851 -444 822 -482 842 -471 b 867 -357 860 -416 867 -387 b 865 -336 867 -350 867 -343 b 851 -189 858 -287 855 -238 b 832 -32 847 -135 840 -84 b 824 -17 832 -26 832 -17 l 822 -17 b 805 -30 816 -19 806 -20 b 798 -88 802 -50 798 -69 b 805 -292 798 -157 801 -225 b 772 -327 806 -318 801 -327 b 360 -324 635 -327 497 -325 b 78 -327 265 -323 171 -327 b 50 -304 59 -327 50 -320 l 50 -297 b 62 -187 55 -261 60 -225 b 71 -60 62 -144 71 -102 b 68 -20 71 -48 71 -33 b 53 10 66 -10 69 10 l 52 10 b 22 -22 37 9 24 -1 b 14 -121 17 -55 16 -89 b 0 -359 10 -200 0 -279 b 6 -452 0 -390 3 -420 b 42 -481 9 -478 20 -481 l 415 -481 l 415 -482 z m 409 -183 b 454 -179 420 -183 435 -181 b 505 -124 487 -176 504 -158 b 505 -89 507 -112 505 -101 b 507 -58 505 -79 507 -68 b 505 -42 507 -52 507 -48 b 485 -10 503 -29 501 -10 b 448 -9 472 -9 461 -9 b 380 -22 425 -9 402 -12 b 363 -46 372 -27 363 -35 l 363 -49 b 364 -114 363 -71 361 -94 b 409 -183 374 -168 377 -183 z',\n },\n fermataVeryLongAbove: {\n x_min: 0,\n x_max: 715,\n y_min: -14.096346766617495,\n y_max: 437,\n ha: 451.0963467666175,\n o: 'm 26 -20 b 42 -4 36 -22 39 -12 b 49 53 49 14 49 33 l 49 448 b 69 478 49 467 52 478 l 72 478 b 81 480 75 478 78 478 b 144 477 102 477 122 477 l 207 477 b 943 471 452 477 698 471 b 978 442 966 471 976 467 b 989 99 985 327 985 213 b 999 -19 991 60 995 22 b 1030 62 1028 6 1030 35 b 1021 507 1028 210 1025 359 b 1012 596 1021 537 1017 567 b 976 624 1009 618 998 624 b 507 626 819 624 662 625 b 46 629 353 628 200 629 b 7 590 19 629 7 618 b 0 101 7 428 0 264 b 16 -4 0 65 13 32 b 26 -20 17 -10 22 -19 z m 187 -9 b 207 30 206 -7 204 14 b 207 55 209 37 207 46 b 200 240 210 117 197 179 b 219 262 200 256 203 262 l 223 262 b 456 252 301 258 379 255 l 772 239 b 804 209 792 238 802 235 b 818 69 806 163 809 115 b 834 -4 821 46 816 19 b 857 56 852 13 857 35 b 851 183 857 99 858 141 b 827 360 841 242 841 301 b 786 390 821 383 809 389 b 189 409 588 403 387 402 b 153 377 163 409 153 400 b 173 27 153 259 150 143 b 187 -9 176 13 177 -9 z m 478 3 b 536 10 491 3 510 6 b 582 60 569 14 580 32 l 582 89 l 580 89 b 580 117 580 98 582 107 b 540 171 577 158 572 171 b 521 171 534 171 528 170 b 459 166 500 170 480 168 b 423 132 436 164 423 154 b 428 88 423 118 425 102 b 478 3 438 22 439 4 z',\n },\n fermataVeryLongBelow: {\n x_min: -0.012345679012345682,\n x_max: 686.4443937550029,\n y_min: -427,\n y_max: 30,\n ha: 457,\n o: 'm 56 -615 b 282 -612 132 -612 207 -613 b 924 -606 497 -608 710 -606 b 973 -570 953 -606 968 -593 b 988 -455 984 -533 991 -494 b 982 -262 984 -390 982 -327 b 976 -69 982 -197 981 -134 b 976 -14 975 -50 976 -33 b 966 43 976 4 975 23 b 940 20 953 37 943 35 b 933 -76 936 -12 933 -45 b 935 -121 933 -91 933 -107 b 940 -307 940 -183 940 -245 l 940 -435 b 919 -458 940 -451 935 -458 b 894 -459 910 -458 903 -458 b 206 -467 665 -461 435 -467 b 88 -467 167 -467 127 -468 b 45 -425 45 -467 42 -465 b 46 -400 46 -416 46 -408 b 43 -325 46 -376 43 -350 b 42 -59 42 -236 42 -148 b 22 17 42 -32 36 -6 b 0 -27 -1 7 0 -10 b 7 -420 0 -158 7 -289 l 7 -474 b 16 -579 7 -510 7 -544 b 56 -615 22 -603 27 -615 z m 789 -390 b 835 -357 816 -392 829 -380 b 850 -256 844 -324 850 -291 b 848 -230 850 -248 850 -239 b 845 -135 845 -199 845 -167 l 845 -72 b 837 23 845 -40 848 -9 b 809 -27 809 14 809 -7 l 809 -222 b 788 -242 809 -238 805 -242 l 203 -229 b 180 -209 186 -229 180 -223 l 180 -160 b 179 -115 180 -145 180 -131 b 179 -50 177 -94 179 -72 b 163 24 179 -26 176 0 b 137 -6 145 19 140 10 b 134 -39 134 -17 134 -27 b 138 -105 134 -60 137 -82 l 138 -197 b 145 -343 138 -246 138 -294 b 179 -377 148 -364 151 -377 b 789 -390 383 -377 586 -380 z m 480 -164 b 566 -65 549 -164 566 -140 b 527 1 566 -10 564 1 b 436 -71 426 1 436 -9 l 436 -88 l 436 -143 b 454 -163 436 -153 439 -161 b 480 -164 464 -163 472 -164 z',\n },\n fermataShortAbove: {\n x_min: 0,\n x_max: 545,\n y_min: -18.08551453529649,\n y_max: 348,\n ha: 366.0855145352965,\n o: 'm 16 -26 b 36 -9 26 -27 30 -16 b 354 340 143 107 249 223 b 369 348 360 346 364 348 b 382 341 373 348 377 346 l 530 199 b 743 0 599 131 672 68 b 753 -7 747 -3 750 -7 b 762 -1 756 -7 759 -6 b 785 84 776 10 785 48 b 768 150 785 112 779 138 l 399 491 b 379 501 392 498 384 501 b 357 488 372 501 364 495 b 27 137 248 370 141 251 b 1 84 12 121 1 105 b 3 69 1 79 1 75 b 0 55 1 65 0 59 b 9 1 0 36 9 20 b 16 -26 10 -7 3 -22 z m 357 24 b 367 27 360 24 363 24 b 431 118 422 42 431 49 b 429 151 431 130 431 141 b 400 193 428 171 429 193 b 333 147 359 193 333 176 b 341 42 333 111 337 78 b 357 24 343 30 346 24 z',\n },\n fermataShortBelow: {\n x_min: 0,\n x_max: 565,\n y_min: -335,\n y_max: 10,\n ha: 345,\n o: 'm 386 -482 b 422 -455 395 -482 405 -474 b 732 -117 526 -343 631 -232 b 814 12 765 -79 799 -42 b 752 -22 780 14 768 -7 b 436 -320 645 -120 540 -219 b 419 -328 429 -325 425 -328 b 400 -318 413 -328 408 -325 b 35 0 279 -212 157 -105 b 16 14 29 4 23 14 b 7 12 13 14 10 14 b 0 -3 1 7 0 1 b 7 -23 0 -10 3 -17 b 20 -48 12 -30 14 -39 b 167 -238 60 -117 115 -177 b 351 -455 229 -310 289 -383 b 386 -482 367 -474 377 -482 z m 382 -213 b 406 -207 389 -213 396 -210 b 452 -156 431 -199 446 -180 b 461 -85 456 -132 458 -108 b 448 -32 461 -66 454 -49 b 418 -6 442 -12 431 -6 b 397 -9 410 -6 405 -7 b 348 -50 376 -14 350 -14 b 356 -170 348 -91 354 -130 b 382 -213 357 -199 363 -213 z',\n },\n breathMarkComma: {\n x_min: 0,\n x_max: 148,\n y_min: 0,\n y_max: 275,\n ha: 275,\n o: 'm 120 0 b 187 78 156 20 174 48 b 213 209 206 121 213 164 b 206 294 213 238 210 265 b 140 390 200 337 171 367 b 122 396 134 395 128 396 b 68 382 105 396 85 384 b 46 379 60 382 53 382 b 0 328 12 369 0 357 b 1 311 0 323 1 317 b 30 210 4 275 22 243 b 66 167 39 179 46 167 b 94 171 73 167 82 168 b 143 180 109 174 124 180 b 160 179 148 180 154 180 b 120 66 124 145 120 107 b 120 0 120 45 121 23 z',\n },\n breathMarkUpbow: {\n x_min: 0,\n x_max: 254,\n y_min: 0,\n y_max: 595,\n ha: 595,\n o: 'm 233 0 b 256 48 251 14 253 30 b 272 183 264 92 265 138 b 311 455 289 274 295 364 b 350 716 327 541 341 628 b 366 815 354 749 366 782 b 359 857 366 829 363 842 b 327 815 334 852 330 832 b 302 674 315 769 310 721 b 248 357 288 567 269 462 b 225 226 240 314 242 268 b 210 251 212 232 213 243 b 69 721 163 408 117 564 b 32 835 58 760 53 801 b 20 851 29 841 27 851 b 14 850 19 851 16 851 b 0 828 6 847 0 838 l 0 825 b 12 765 1 804 7 785 b 194 125 73 552 132 338 b 233 0 206 84 213 42 z',\n },\n caesura: {\n x_min: 0,\n x_max: 565.5831864753837,\n y_min: -0.09016994374947417,\n y_max: 562.4481112129314,\n ha: 562.5382811566809,\n o: 'm 0 76 b 49 122 24 92 37 107 b 444 613 180 287 305 455 b 528 770 484 660 518 708 b 531 792 530 778 531 785 b 524 808 531 799 530 805 b 490 792 513 815 498 802 b 390 683 456 756 420 721 b 48 262 275 543 164 400 b 0 76 0 207 7 145 z m 226 1 b 248 13 238 -4 243 7 l 353 137 b 759 638 490 302 632 464 b 814 805 795 688 819 740 b 779 786 796 805 788 796 b 628 609 724 732 678 668 b 310 242 523 485 416 363 b 217 69 265 190 217 140 b 222 30 217 58 219 45 b 222 23 222 29 220 26 b 220 12 222 20 220 16 b 226 1 220 7 222 3 z',\n },\n caesuraCurved: {\n x_min: 0,\n x_max: 386,\n y_min: -10,\n y_max: 584,\n ha: 594,\n o: 'm 180 -14 b 246 14 213 -13 230 0 b 347 144 288 52 315 99 b 526 471 420 246 488 350 b 556 671 546 537 556 603 b 543 798 556 713 553 756 b 504 837 537 822 521 828 b 490 841 500 840 494 841 b 472 832 482 841 477 838 b 406 678 436 785 406 737 b 410 638 406 665 408 652 b 425 511 419 595 425 553 b 315 186 425 395 387 287 b 180 -14 271 122 228 58 z m 14 24 b 49 39 29 24 40 32 b 120 114 76 60 99 85 b 216 276 156 166 184 223 b 317 626 281 384 317 501 b 315 664 317 639 317 651 b 301 773 314 701 311 737 b 262 808 295 795 278 808 b 245 799 256 808 249 805 b 170 641 209 750 170 706 b 171 621 170 634 170 628 b 177 511 176 585 177 549 b 114 229 177 415 160 320 b 0 26 79 161 42 95 b 14 24 6 24 10 24 z',\n },\n restMaxima: {\n x_min: 0,\n x_max: 366,\n y_min: -255,\n y_max: 255,\n ha: 510,\n o: 'm 397 -367 b 504 -343 436 -367 468 -347 b 518 -318 516 -341 518 -330 b 527 -30 518 -217 527 -117 b 526 33 527 -7 527 13 l 526 301 b 501 350 526 323 520 341 b 428 367 477 361 452 367 b 374 359 410 367 393 364 b 357 333 361 354 357 347 b 356 91 357 252 356 171 l 356 30 b 340 -307 357 -82 346 -194 b 397 -367 337 -354 350 -367 z m 46 -357 b 58 -356 49 -357 53 -357 b 154 -333 91 -351 121 -338 b 173 -305 168 -330 173 -320 l 173 302 b 132 356 173 330 157 348 b 68 364 112 363 89 364 b 3 304 19 363 1 348 l 3 4 l 0 4 b 1 -302 0 -98 0 -200 b 46 -357 1 -331 16 -357 z',\n },\n restDoubleWhole: {\n x_min: 0,\n x_max: 122,\n y_min: 0,\n y_max: 249,\n ha: 249,\n o: 'm 43 0 b 58 1 48 0 52 0 b 124 20 81 6 102 17 b 176 96 173 27 176 58 b 173 220 174 138 173 179 b 176 304 173 248 176 276 b 140 353 176 331 163 346 b 95 359 125 356 111 359 b 32 346 73 359 52 354 b 0 315 20 340 0 337 b 1 243 0 291 1 268 l 1 174 l 4 174 l 4 48 b 43 0 4 16 17 0 z',\n },\n restWhole: {\n x_min: 0.8908513171538642,\n x_max: 500,\n y_min: -120,\n y_max: 14,\n ha: 134,\n o: 'm 356 -173 l 356 -171 l 642 -171 b 719 -115 680 -171 717 -145 b 720 -82 719 -104 720 -92 b 711 -20 720 -60 719 -40 b 672 17 704 0 694 10 b 649 20 664 20 657 20 b 605 17 634 20 621 17 b 92 19 433 17 262 17 b 29 7 69 20 49 12 b 9 -17 12 4 9 -6 b 10 -43 9 -26 10 -35 b 1 -84 10 -58 3 -72 b 76 -173 0 -147 7 -173 z',\n },\n restWholeLegerLine: {\n x_min: -196.7269258015421,\n x_max: 685,\n y_min: -157,\n y_max: 29,\n ha: 186,\n o: 'm 96 -226 b 167 -223 121 -226 144 -225 b 300 -222 207 -222 252 -222 l 444 -222 b 660 -217 520 -222 595 -222 b 746 -131 703 -216 746 -200 b 744 -62 746 -108 747 -85 b 743 -39 743 -53 743 -46 b 789 -14 743 -16 752 -17 b 883 -16 821 -13 851 -16 b 965 -9 910 -16 937 -14 b 986 3 972 -7 986 -10 l 986 6 b 963 35 984 17 982 32 b 887 42 937 39 913 42 b 39 27 605 42 321 33 l -76 27 b -261 20 -138 27 -200 26 b -282 14 -269 20 -279 23 b -271 -7 -287 4 -276 -1 b -209 -27 -253 -23 -230 -24 b -153 -30 -190 -30 -173 -30 b -48 -29 -118 -30 -82 -27 b 6 -32 -22 -29 -6 -27 b 1 -72 3 -43 1 -58 b 4 -167 1 -105 7 -140 b 53 -223 3 -207 14 -217 b 96 -226 68 -226 82 -226 z',\n },\n restHalf: {\n x_min: 0,\n x_max: 518.3998530468286,\n y_min: 0,\n y_max: 162,\n ha: 162,\n o: 'm 98 0 l 556 0 b 665 1 592 0 629 0 b 746 82 720 3 743 29 b 736 174 749 114 740 144 b 670 232 729 215 708 232 b 570 229 636 232 603 229 b 356 233 498 229 426 233 l 73 233 b 0 179 19 233 0 220 b 1 154 0 171 0 164 b 6 95 4 135 6 115 b 98 0 3 27 29 0 z',\n },\n restHalfLegerLine: {\n x_min: -120,\n x_max: 448.2056815990121,\n y_min: -20,\n y_max: 143,\n ha: 163,\n o: 'm 397 -29 b 482 -23 426 -29 455 -27 b 526 -24 497 -24 511 -24 b 608 -17 554 -24 582 -23 b 645 -1 622 -14 644 -17 b 615 26 648 13 629 20 b 595 32 608 29 602 30 b 526 37 572 35 549 37 b 498 36 517 37 507 37 b 471 35 487 35 478 35 b 445 53 451 35 445 39 b 449 89 445 60 446 73 l 454 117 b 373 206 456 173 428 206 b 324 204 356 206 340 206 b 209 203 287 203 248 203 b 46 193 156 203 101 202 b 16 170 32 190 19 187 b 9 112 13 151 9 131 b 14 78 9 101 10 89 b 19 59 17 71 19 63 b -4 45 19 49 12 45 l -10 45 b -150 33 -58 45 -104 46 b -173 22 -158 32 -173 33 l -173 19 b -151 -13 -170 6 -168 -10 b -117 -17 -140 -16 -128 -17 b 118 -13 -37 -17 39 -13 b 397 -29 213 -13 308 -29 z',\n },\n restQuarter: {\n x_min: -0.3784452492533808,\n x_max: 263,\n y_min: -415,\n y_max: 415,\n ha: 830,\n o: 'm 151 -596 b 164 -563 163 -589 161 -575 b 160 -546 164 -557 161 -552 b 124 -396 148 -495 135 -446 b 122 -380 122 -390 122 -384 b 199 -255 122 -331 158 -272 b 228 -256 209 -249 217 -253 b 324 -346 274 -271 298 -310 b 353 -369 331 -356 341 -369 b 360 -367 356 -369 357 -369 b 379 -336 373 -361 379 -348 l 377 -325 b 344 -232 372 -292 366 -258 b 249 -58 301 -180 278 -117 b 242 -36 245 -49 242 -42 b 258 -7 242 -26 248 -17 b 328 78 284 20 311 45 b 354 158 344 104 354 131 b 337 216 354 177 350 196 b 213 435 294 288 249 359 b 115 575 189 487 158 536 b 78 598 105 585 92 598 b 59 592 72 598 66 596 b 39 562 45 583 39 572 b 53 527 39 550 45 539 b 168 344 98 469 125 402 b 187 307 181 328 187 317 b 153 269 187 294 176 284 b 62 213 122 252 91 235 b 40 180 48 203 40 192 b 46 158 40 173 43 166 b 99 65 60 125 79 95 b 183 -79 131 20 160 -29 b 156 -86 173 -88 164 -85 b 0 -261 58 -99 -7 -173 b 96 -557 10 -366 49 -464 b 124 -585 102 -569 109 -580 b 145 -598 132 -588 138 -598 b 151 -596 147 -598 150 -598 z',\n },\n rest8th: {\n x_min: 0,\n x_max: 289,\n y_min: -260,\n y_max: 261,\n ha: 521,\n o: 'm 164 -374 b 212 -340 190 -373 203 -357 b 276 -190 238 -292 258 -242 b 410 285 333 -36 359 128 b 416 314 413 294 416 304 l 416 321 b 393 354 415 341 410 354 b 382 353 389 354 386 354 b 292 311 347 347 315 333 b 174 225 256 276 216 251 b 157 219 168 222 163 219 b 140 228 151 219 145 222 b 131 246 134 233 131 240 b 135 262 131 252 132 256 b 147 298 141 272 147 285 b 127 367 147 323 154 354 b 94 376 114 373 102 376 b 48 336 75 376 63 363 b 3 181 20 288 12 235 b 0 150 1 170 0 160 b 109 24 0 84 35 24 b 171 36 127 24 148 27 b 289 101 213 52 248 75 b 164 -374 256 -62 193 -213 z',\n },\n rest16th: {\n x_min: 0,\n x_max: 333,\n y_min: -328.283950617284,\n y_max: 244,\n ha: 572.2839506172841,\n o: 'm 209 -471 b 246 -458 222 -477 236 -468 b 307 -338 279 -425 300 -384 b 324 -226 312 -301 317 -262 b 428 161 350 -94 386 35 b 480 318 445 215 480 259 b 467 347 480 331 477 341 b 445 351 461 350 454 351 b 408 337 432 351 419 347 b 402 333 405 336 403 334 b 223 215 344 294 294 245 b 236 259 229 233 235 246 b 238 276 238 265 238 271 b 212 338 238 302 226 334 b 193 341 206 340 199 341 b 86 289 156 341 104 317 b 59 180 66 255 59 217 b 156 27 59 76 92 27 b 236 46 179 27 204 35 b 338 101 271 59 298 82 b 289 -49 312 49 302 0 b 196 -122 276 -99 235 -107 b 176 -114 187 -127 176 -127 l 176 -111 b 157 -53 177 -88 164 -72 b 69 -9 141 -7 101 -16 b 17 -48 43 -3 29 -27 b 0 -127 4 -73 0 -99 b 6 -186 0 -147 1 -167 b 82 -294 17 -262 37 -294 b 160 -276 102 -294 128 -289 b 219 -242 181 -268 203 -259 b 236 -230 223 -236 229 -230 b 243 -232 239 -230 240 -230 b 235 -275 248 -246 239 -261 b 202 -456 220 -334 202 -395 b 209 -471 202 -462 203 -468 z',\n },\n rest32nd: {\n x_min: 0,\n x_max: 347,\n y_min: -497.5023916875033,\n y_max: 483,\n ha: 980.5023916875033,\n o: 'm 177 -716 b 217 -690 194 -720 209 -704 b 233 -655 225 -680 230 -668 b 292 -390 253 -567 275 -480 b 361 -48 312 -275 336 -161 b 452 400 393 102 422 252 b 497 629 467 477 482 553 b 500 647 498 635 500 641 b 480 691 500 665 492 684 b 464 696 475 694 469 696 b 418 674 448 696 431 685 l 361 626 b 333 611 353 618 343 612 b 308 629 325 611 317 616 b 239 667 292 651 265 661 b 204 670 228 668 216 670 b 86 559 141 670 95 628 b 85 537 86 552 85 544 b 107 416 85 495 95 455 b 161 372 114 389 134 372 b 174 373 166 372 170 372 b 226 383 192 374 209 377 b 387 478 285 402 330 444 b 364 386 379 444 364 415 b 276 271 364 323 320 298 b 265 266 272 268 268 266 b 252 276 261 266 256 269 b 143 333 229 311 186 333 b 107 327 130 333 118 330 b 43 243 62 314 46 291 b 58 145 43 210 52 179 b 150 63 68 92 99 63 b 315 132 213 63 259 98 b 266 -58 297 63 281 4 b 207 -101 259 -91 230 -96 b 186 -66 186 -107 199 -75 b 180 -50 181 -63 183 -55 b 101 -3 160 -23 135 -3 b 9 -66 59 -3 20 -32 b 0 -118 3 -84 0 -101 b 10 -196 0 -144 6 -170 b 104 -287 20 -256 52 -287 b 137 -282 114 -287 125 -287 b 184 -269 151 -281 171 -269 b 196 -275 190 -269 193 -271 b 199 -287 197 -278 199 -282 b 184 -343 199 -304 189 -325 b 181 -348 184 -346 183 -347 b 134 -595 158 -429 131 -508 b 156 -677 134 -624 150 -648 b 177 -716 158 -693 160 -713 z',\n },\n rest64th: {\n x_min: 0,\n x_max: 428,\n y_min: -720,\n y_max: 473.6797408388932,\n ha: 1193.6797408388932,\n o: 'm 200 -1037 b 229 -1012 215 -1037 222 -1025 b 238 -984 233 -1004 236 -994 b 282 -780 248 -914 265 -848 b 386 -369 317 -644 354 -507 b 491 104 422 -212 451 -53 b 600 541 528 249 550 399 b 616 629 611 570 616 599 b 600 680 616 648 615 671 b 550 665 586 687 566 677 b 480 618 527 649 501 635 b 464 611 474 613 468 611 b 448 622 458 611 454 615 b 366 662 425 651 397 662 b 331 658 354 662 343 661 b 242 572 285 647 253 619 b 236 528 239 557 236 543 b 266 400 236 484 251 442 b 325 373 274 377 301 373 b 436 409 366 373 403 383 l 494 452 b 474 360 485 416 474 389 b 383 248 474 297 435 269 b 320 328 377 288 351 310 b 276 341 305 337 291 341 b 186 269 235 341 194 311 b 181 230 183 256 181 243 b 187 153 181 204 186 179 b 279 63 192 86 233 63 b 304 65 288 63 295 63 b 416 115 344 72 379 92 b 387 -14 406 69 397 27 b 320 -95 380 -52 369 -86 b 318 -79 320 -89 320 -84 b 223 0 305 -29 271 0 b 122 -81 171 0 135 -30 b 118 -127 120 -96 118 -112 l 118 -196 b 137 -242 118 -215 125 -229 b 209 -275 157 -266 181 -275 b 249 -269 222 -275 235 -274 b 318 -248 272 -264 294 -255 b 281 -390 315 -301 292 -344 b 276 -400 279 -393 279 -397 b 259 -420 272 -408 266 -416 b 246 -429 255 -425 251 -429 b 233 -415 242 -429 238 -426 b 176 -359 225 -389 200 -372 b 121 -346 158 -348 140 -346 b 14 -408 73 -346 27 -370 b 0 -498 4 -438 0 -468 b 6 -564 0 -520 3 -543 b 91 -635 12 -611 45 -635 b 131 -629 104 -635 117 -634 b 223 -590 163 -622 190 -603 b 166 -824 203 -671 189 -747 b 148 -912 157 -852 148 -881 b 156 -955 148 -926 150 -940 b 177 -1008 161 -972 170 -991 b 200 -1037 181 -1020 183 -1037 z',\n },\n rest128th: {\n x_min: 0.6717818579024267,\n x_max: 491,\n y_min: -711,\n y_max: 719,\n ha: 1430,\n o: 'm 233 -1015 b 271 -956 256 -1002 266 -981 l 314 -723 b 393 -350 337 -598 366 -474 b 543 312 442 -128 492 91 b 687 841 583 490 635 665 b 707 958 698 880 707 919 b 706 986 707 968 707 976 b 688 1025 704 999 704 1024 b 670 1027 683 1025 677 1027 b 629 1007 655 1027 639 1022 b 559 945 613 981 586 968 b 541 1004 553 968 559 991 b 456 1035 516 1024 488 1035 b 419 1030 444 1035 431 1034 b 344 953 379 1018 353 995 b 340 900 341 936 340 917 b 341 847 340 881 341 864 b 380 779 340 815 354 793 b 464 763 406 765 435 762 b 592 814 510 763 549 786 b 546 660 575 757 556 710 b 480 585 537 619 517 598 b 478 599 480 590 478 595 b 386 678 472 641 428 678 b 294 612 343 678 304 651 b 279 477 282 567 278 521 b 363 395 281 428 317 395 b 380 396 369 395 374 395 b 488 436 416 403 449 419 b 384 233 469 357 468 275 b 359 291 373 252 377 276 b 282 318 337 310 310 318 b 181 264 243 318 203 298 b 154 107 153 216 154 161 b 242 6 154 42 187 6 b 278 10 253 6 265 7 b 408 88 330 22 366 55 b 387 -1 400 56 393 27 b 301 -112 379 -55 354 -94 b 289 -65 297 -95 302 -79 b 219 -32 269 -42 245 -32 b 183 -37 207 -32 196 -35 b 112 -109 144 -46 121 -71 b 105 -219 104 -145 108 -183 b 186 -315 101 -276 134 -315 b 230 -307 199 -315 215 -312 b 324 -256 264 -295 292 -275 b 180 -491 323 -383 266 -471 b 183 -459 180 -480 180 -469 b 184 -442 184 -454 184 -448 l 184 -436 b 135 -369 184 -403 170 -383 b 102 -363 125 -364 114 -363 b 29 -399 73 -363 45 -376 b 1 -556 -4 -448 6 -503 b 109 -670 -4 -625 43 -670 b 140 -667 118 -670 130 -668 b 253 -616 180 -658 213 -638 b 238 -688 248 -644 242 -665 b 192 -959 220 -779 192 -867 b 193 -992 192 -971 192 -981 b 210 -1024 194 -1014 199 -1024 b 233 -1015 216 -1024 223 -1021 z',\n },\n dynamicPiano: {\n x_min: -49,\n x_max: 326.5019318364244,\n y_min: -142,\n y_max: 515,\n ha: 657,\n o: 'm -56 -204 b -42 -202 -52 -204 -46 -203 b -19 -194 -35 -202 -26 -197 b 147 -138 35 -170 91 -151 b 249 -58 194 -127 223 -95 b 262 -29 255 -50 262 -39 b 258 -17 262 -24 261 -20 b 232 -7 252 -10 242 -7 b 210 -12 225 -7 217 -9 b 125 -40 184 -23 157 -30 b 183 140 153 19 171 79 b 251 167 207 144 230 153 b 469 518 383 262 480 382 b 357 687 472 626 420 687 b 315 678 344 687 330 684 b 204 600 279 664 240 634 b 210 704 206 635 209 670 b 215 721 212 710 215 716 b 206 733 215 727 212 730 b 180 742 197 736 189 742 b 164 734 176 742 170 740 b 1 575 108 684 36 645 b -7 557 -1 569 -7 563 b -6 553 -7 556 -7 554 b 7 547 -3 547 3 547 l 17 547 b 82 575 43 547 59 567 l 82 452 b 56 46 82 317 81 180 b 17 -66 49 7 46 -36 b -62 -173 -13 -99 -37 -135 b -71 -192 -66 -179 -71 -184 b -68 -199 -71 -193 -69 -196 b -56 -204 -65 -203 -60 -204 z m 196 258 b 197 266 197 261 197 264 b 200 510 200 347 199 429 b 233 543 210 521 222 533 b 281 560 249 554 266 560 b 340 503 310 560 333 540 b 344 461 343 488 344 474 b 321 323 344 413 333 369 b 268 272 315 300 295 281 b 196 258 245 265 220 261 z',\n },\n dynamicMezzo: {\n x_min: -18,\n x_max: 559,\n y_min: -50,\n y_max: 365,\n ha: 415,\n o: 'm 43 -71 b 160 19 86 -71 143 -26 b 230 264 189 99 200 184 b 282 363 243 297 259 327 b 287 320 285 347 287 333 b 284 279 287 305 285 292 l 249 -12 b 275 -43 248 -29 245 -43 b 395 45 321 -43 389 3 b 462 271 406 124 436 197 b 523 387 475 310 490 348 l 523 346 b 504 130 521 274 513 202 b 501 81 501 114 501 98 b 510 3 501 55 504 29 b 580 -72 521 -48 543 -72 b 625 -63 593 -72 608 -69 b 789 50 690 -43 744 -3 b 805 72 795 56 805 63 b 798 85 805 76 802 81 b 778 94 792 91 785 94 b 755 85 770 94 763 91 l 693 40 b 675 33 685 36 680 33 b 658 52 668 33 662 39 b 645 144 651 82 645 112 b 658 448 641 246 660 346 b 606 507 658 485 638 507 b 583 504 599 507 592 505 b 495 446 547 497 521 471 b 420 373 471 423 448 399 b 413 458 418 406 418 432 b 361 507 408 490 386 507 b 320 491 347 507 333 501 b 160 307 256 444 207 382 l 160 337 b 174 488 160 387 174 438 b 156 521 174 501 173 513 b 137 526 148 524 143 526 b 109 513 127 526 118 520 b -16 399 66 477 23 439 b -26 383 -20 395 -26 389 l -26 379 b -14 370 -24 372 -20 370 b -6 372 -12 370 -9 372 b 19 376 4 374 12 376 b 36 359 32 376 36 370 b 30 330 36 350 35 341 l 30 323 b 9 -35 23 203 17 85 b 43 -71 6 -65 19 -71 z',\n },\n dynamicForte: {\n x_min: -144,\n x_max: 311.30112136775,\n y_min: -115.3876295915697,\n y_max: 504,\n ha: 619.3876295915697,\n o: 'm -101 -166 b 173 76 7 -153 150 -30 b 206 344 192 164 202 253 b 268 338 226 343 246 341 b 384 395 317 333 353 361 b 397 419 393 405 397 412 b 367 442 397 429 387 436 b 350 444 361 444 356 444 b 206 455 302 449 255 454 l 206 474 b 202 540 204 495 202 518 b 209 593 202 557 203 576 b 236 624 215 613 225 624 b 265 612 245 624 253 619 b 308 552 287 596 302 577 b 336 533 312 534 323 533 b 448 611 366 533 444 583 b 399 696 452 648 423 671 b 382 706 395 700 387 703 b 308 726 357 720 333 726 b 207 684 272 726 239 711 b 60 455 135 622 60 560 l 10 455 b -23 448 -1 455 -13 454 b -102 372 -55 426 -76 397 b -109 357 -108 367 -109 361 b -95 347 -109 353 -105 348 b -63 346 -84 346 -73 346 b 0 344 -43 344 -22 344 l 63 344 b 53 186 63 291 59 239 b 23 0 46 124 42 60 b -35 -60 10 -42 -6 -60 b -73 -52 -45 -60 -58 -58 b -91 -48 -79 -49 -85 -48 b -109 -53 -96 -48 -102 -49 b -199 -124 -143 -72 -168 -99 b -207 -137 -203 -128 -207 -132 b -194 -148 -207 -141 -203 -145 b -101 -166 -164 -160 -132 -168 z',\n },\n dynamicRinforzando: {\n x_min: -75,\n x_max: 322.0960720195126,\n y_min: -90,\n y_max: 325,\n ha: 415,\n o: 'm 23 -130 b 40 -125 27 -130 33 -128 b 128 -9 81 -114 125 -53 b 145 200 132 62 141 130 b 148 238 147 212 148 225 b 308 321 184 291 245 321 b 363 314 325 321 344 318 b 377 310 369 312 373 310 b 384 311 380 310 382 310 b 464 415 410 317 464 389 b 446 433 465 429 455 429 b 390 445 428 441 409 445 b 305 429 361 445 334 438 b 167 346 252 413 202 393 b 153 325 163 338 158 333 b 148 438 154 363 151 399 b 121 468 147 456 134 468 b 101 458 115 468 108 465 b -63 310 46 409 -16 367 b -108 240 -78 289 -98 271 b 32 330 -50 256 -13 297 b 37 304 37 320 37 312 l 37 292 b 10 -101 27 161 20 30 b 23 -130 9 -120 12 -130 z',\n },\n dynamicSforzando: {\n x_min: 0,\n x_max: 296,\n y_min: 0,\n y_max: 379,\n ha: 379,\n o: 'm 151 0 b 174 1 160 0 166 0 b 392 158 272 14 346 71 b 405 207 400 174 405 190 b 359 287 405 236 389 265 b 261 325 328 308 294 315 b 168 413 216 340 181 366 b 166 426 167 418 166 423 b 176 438 166 432 167 436 b 199 441 183 441 190 441 b 310 393 238 441 295 422 b 334 370 317 376 325 370 b 363 386 343 370 353 379 b 422 445 386 402 408 420 b 426 458 425 449 426 454 b 422 469 426 462 425 465 b 274 546 395 518 333 546 b 161 503 232 546 190 531 b 86 405 132 472 108 439 b 71 347 75 387 71 367 b 112 256 71 312 85 279 b 209 215 141 232 176 226 b 284 168 238 206 266 197 b 300 131 291 157 300 144 b 298 120 300 127 298 122 b 278 107 294 109 285 108 b 262 108 271 107 266 108 l 259 108 b 114 157 200 107 156 125 b 96 181 104 163 96 170 l 96 184 b 102 202 96 190 102 196 b 96 209 102 204 101 207 b 63 194 82 215 72 204 b 7 109 42 168 26 138 b 0 86 3 101 0 94 b 13 60 0 78 4 68 b 151 0 53 23 101 0 z',\n },\n dynamicZ: {\n x_min: -42.73880183193087,\n x_max: 331,\n y_min: 0,\n y_max: 328,\n ha: 328,\n o: 'm -45 0 b -6 16 -32 0 -17 10 b 3 20 -3 16 0 19 b 144 60 49 48 96 60 b 284 22 190 60 238 46 b 348 4 305 10 327 4 b 461 75 393 4 435 30 b 468 91 464 81 467 86 b 456 104 468 95 465 99 b 287 173 402 131 348 167 b 239 176 271 174 255 176 b 168 174 217 176 194 174 b 367 340 236 236 298 294 b 459 423 402 363 432 392 b 477 454 467 431 475 442 b 474 462 477 456 475 459 b 454 472 469 469 462 472 b 432 468 446 472 439 469 b 356 448 406 461 380 455 b 210 422 307 433 258 422 b 109 442 177 422 144 428 b 94 445 104 444 99 445 b 69 433 85 445 76 442 b 27 390 56 419 39 406 b -9 343 16 373 -17 357 b 63 311 3 320 36 314 l 78 311 b 132 307 95 308 114 307 b 240 314 168 307 203 311 l 193 271 b -37 50 117 196 19 145 b -59 7 -46 36 -69 20 b -45 0 -55 3 -50 0 z',\n },\n ornamentTrill: {\n x_min: 1,\n x_max: 551,\n y_min: -18,\n y_max: 539,\n ha: 557,\n o: 'm 321 612 b 190 602 278 605 235 605 l 190 638 b 187 693 190 652 190 667 b 161 776 184 717 193 776 b 137 747 150 776 137 766 b 130 654 135 716 131 685 l 130 596 l 52 588 b 4 539 23 585 7 570 b 1 477 3 530 1 500 b 3 448 1 461 3 448 l 3 452 b 53 432 6 436 23 432 b 134 435 75 432 102 433 b 151 117 138 328 147 223 b 170 13 153 82 157 46 b 209 -26 179 -10 193 -26 b 222 -22 213 -26 217 -24 b 269 -17 233 -16 253 -27 b 343 135 325 19 346 66 b 343 158 343 147 344 147 b 323 192 341 171 337 187 b 291 176 311 194 300 184 l 264 148 b 229 131 261 145 238 131 b 212 170 209 131 213 154 b 194 438 203 259 199 348 l 272 442 b 284 452 276 441 279 441 b 305 462 287 461 295 462 l 312 462 b 346 477 325 462 340 464 b 366 560 357 503 366 531 b 321 612 366 598 356 618 z m 759 588 b 711 560 749 592 733 570 b 588 500 671 541 631 521 b 583 533 586 514 586 524 b 560 576 577 549 577 572 b 517 550 541 582 528 564 b 416 423 482 508 452 462 b 382 353 392 397 384 370 b 387 305 380 341 386 318 b 392 275 389 295 392 285 b 409 243 393 262 393 243 b 431 262 419 243 425 255 b 521 373 459 298 488 333 b 523 354 521 366 523 360 b 520 337 523 346 521 340 b 508 295 513 323 508 310 b 530 102 508 279 524 122 b 549 66 533 88 530 66 b 577 99 563 66 572 84 b 580 131 580 109 580 121 l 580 302 b 600 347 580 318 582 337 b 701 392 632 364 665 384 b 793 518 785 409 793 435 b 759 588 793 559 785 576 z',\n },\n ornamentTurn: {\n x_min: 0,\n x_max: 574,\n y_min: 0,\n y_max: 312,\n ha: 312,\n o: 'm 651 0 b 816 132 727 0 796 46 b 827 223 822 163 827 193 b 808 340 827 262 821 301 b 665 449 785 408 729 449 b 636 446 655 449 647 448 b 589 384 600 441 586 422 l 602 300 b 611 285 603 291 605 285 b 621 288 613 285 616 287 b 655 295 632 294 644 295 b 711 284 674 295 693 289 b 773 209 740 275 773 232 b 697 156 773 184 734 160 b 664 154 685 154 675 154 b 579 168 635 154 608 158 b 455 242 533 186 495 213 b 261 400 387 291 331 354 b 160 432 225 422 190 432 b 20 328 98 432 49 392 b 0 229 6 295 0 262 b 30 71 0 176 14 122 b 144 3 43 29 96 3 b 168 6 153 3 160 4 b 248 122 233 20 248 39 b 246 147 248 124 248 135 b 226 177 243 164 239 177 b 206 170 220 177 215 174 b 144 154 186 158 166 154 b 79 170 122 154 101 160 b 53 202 62 179 53 189 b 60 228 53 209 55 217 b 161 281 81 261 120 281 b 183 279 168 281 176 281 b 325 190 243 269 284 229 b 572 16 402 124 475 53 b 651 0 598 6 625 0 z',\n },\n ornamentTurnSlash: {\n x_min: 0,\n x_max: 574,\n y_min: -106,\n y_max: 405,\n ha: 511,\n o: 'm 441 -153 b 456 -60 455 -118 456 -89 b 455 81 455 -14 455 33 b 572 14 491 55 530 30 b 651 -1 598 4 625 -1 b 816 131 727 -1 796 45 b 827 222 822 161 827 192 b 808 338 827 261 821 300 b 665 448 785 406 729 448 b 636 445 655 448 647 446 b 589 383 600 439 586 420 l 602 298 b 611 284 603 289 605 284 b 621 287 613 284 616 285 b 655 294 632 292 644 294 b 711 282 674 294 693 288 b 773 207 740 274 773 230 b 697 154 773 183 734 158 b 664 153 685 153 675 153 b 579 167 635 153 608 157 b 455 240 533 183 495 212 b 454 242 455 240 455 242 l 454 337 b 452 488 454 386 452 439 b 433 570 452 517 451 546 b 425 583 431 575 431 583 l 422 583 b 403 566 415 582 408 573 b 402 546 400 560 402 553 l 397 287 b 261 399 353 325 310 366 b 160 431 225 420 190 431 b 20 327 98 431 48 390 b 0 228 6 294 0 261 b 30 69 0 174 14 121 b 144 1 43 27 96 1 b 168 4 153 1 160 3 b 248 121 233 19 248 37 b 246 145 248 122 248 134 b 226 176 243 163 239 176 b 206 168 220 176 215 173 b 144 153 186 157 166 153 b 79 168 122 153 101 158 b 53 200 62 177 53 187 b 60 226 53 207 55 216 b 161 279 79 259 120 279 b 183 278 168 279 176 279 b 325 189 243 266 282 226 b 395 130 348 168 372 148 b 393 71 393 109 393 89 b 441 -153 390 -6 402 -78 z',\n },\n ornamentMordent: {\n x_min: 0,\n x_max: 700,\n y_min: 0,\n y_max: 497,\n ha: 497,\n o: 'm 513 0 b 528 39 526 14 527 27 b 531 72 531 50 531 60 b 528 138 531 94 528 117 l 528 347 b 552 359 537 354 544 359 b 579 338 560 359 569 353 b 674 217 609 297 639 255 b 719 190 690 200 704 190 b 759 215 732 190 744 197 b 940 395 815 279 877 337 b 1001 490 968 422 986 455 b 1008 513 1004 495 1008 505 b 1002 524 1008 517 1007 521 b 968 516 994 530 978 524 b 960 508 965 513 963 510 b 798 356 900 464 848 410 b 778 341 791 347 783 341 b 757 354 772 341 765 346 b 661 475 720 392 690 432 b 611 517 644 504 629 517 b 563 498 598 517 583 511 b 527 471 550 490 539 481 l 527 570 b 492 716 526 619 523 671 b 472 677 480 704 472 694 b 465 399 474 585 468 491 b 439 366 456 387 448 376 b 384 320 415 336 399 320 b 330 367 369 320 354 336 b 325 376 328 369 327 373 b 226 490 291 413 265 456 b 189 505 213 500 202 505 b 157 491 177 505 167 500 b 0 229 75 420 0 346 b 1 202 0 220 0 212 b 22 215 12 203 16 209 b 124 327 55 252 89 289 b 147 343 132 337 140 343 b 171 323 156 343 164 336 b 266 197 196 276 232 236 b 337 157 291 170 314 157 b 410 207 361 157 386 174 b 461 274 428 229 444 252 b 462 166 461 238 461 202 b 513 0 465 108 487 55 z',\n },\n ornamentShortTrill: {\n x_min: 0,\n x_max: 747,\n y_min: 0,\n y_max: 243,\n ha: 243,\n o: 'm 379 0 b 428 14 395 0 410 4 b 474 56 445 26 461 39 b 552 157 500 89 526 122 b 566 168 556 163 560 168 b 575 157 569 168 572 166 b 664 36 592 107 628 72 b 733 1 685 13 710 1 b 802 35 757 1 780 13 b 1007 249 871 105 940 177 b 1067 324 1028 272 1054 295 b 1076 340 1068 330 1076 334 b 1073 346 1076 341 1076 343 b 1057 350 1068 348 1063 350 b 1047 347 1053 350 1050 350 b 1001 310 1031 336 1015 324 l 857 157 b 844 143 852 153 848 143 b 835 150 841 143 838 144 b 757 242 815 186 780 209 b 685 298 739 268 713 284 b 641 310 670 305 655 310 b 590 288 625 310 608 304 b 497 179 554 256 527 215 b 480 164 490 170 485 164 b 462 179 474 164 469 168 b 372 295 436 220 405 258 b 278 344 346 324 312 344 b 199 310 252 344 226 334 b 92 196 161 274 128 233 b 0 24 46 148 23 89 b 42 48 22 27 32 37 b 156 168 84 85 114 132 b 196 192 174 184 186 192 b 228 158 206 192 215 181 b 312 36 252 114 282 75 b 379 0 331 12 354 0 z',\n },\n ornamentTremblement: {\n x_min: 0,\n x_max: 982.17691453624,\n y_min: 0,\n y_max: 224,\n ha: 224,\n o: 'm 0 0 b 63 36 30 12 48 23 b 157 124 94 66 125 94 b 177 135 164 131 170 135 b 196 122 183 135 189 131 b 268 40 217 94 245 68 b 323 6 288 16 304 6 b 369 20 336 6 350 10 b 412 53 384 29 399 40 b 501 145 442 84 472 114 b 523 158 508 154 516 158 b 543 145 528 158 536 154 b 641 45 576 112 608 78 b 698 17 658 27 677 17 b 729 23 708 17 719 20 b 804 65 756 32 780 46 b 904 154 837 95 871 124 b 920 163 910 160 916 163 b 936 153 924 163 930 160 b 1024 60 965 121 996 92 b 1112 13 1053 29 1080 13 b 1184 39 1135 13 1158 22 b 1359 194 1248 84 1305 138 b 1413 301 1388 223 1403 261 b 1404 323 1417 315 1413 323 b 1391 320 1400 323 1395 321 b 1344 294 1375 314 1358 307 b 1224 186 1305 258 1269 216 b 1194 173 1212 179 1202 173 b 1165 193 1184 173 1175 179 b 1096 271 1145 222 1122 248 b 1001 318 1061 302 1031 318 b 903 268 969 318 937 301 b 806 186 871 239 841 210 b 782 174 796 179 789 174 b 756 193 773 174 765 180 b 652 291 729 232 693 266 b 596 308 634 302 615 308 b 530 278 573 308 552 298 l 415 168 b 393 157 408 161 400 157 b 373 171 387 157 380 161 b 305 245 353 197 330 222 b 248 276 285 266 266 278 b 189 245 229 276 210 266 b 81 144 156 209 120 174 b 0 0 33 109 26 56 z',\n },\n ornamentPrecompAppoggTrill: {\n x_min: -0.11067192132025548,\n x_max: 1066,\n y_min: -50,\n y_max: 533.1706452421108,\n ha: 583.1706452421108,\n o: 'm 187 -46 b 213 -14 197 -37 204 -26 b 285 151 251 36 266 94 b 304 189 294 177 297 189 b 337 168 311 189 320 181 b 458 33 386 131 415 76 b 495 12 472 19 484 12 b 531 40 508 12 518 22 b 580 168 557 79 569 124 b 622 235 592 213 603 235 b 683 194 636 235 655 222 b 838 26 737 140 791 86 b 919 -33 860 -1 881 -39 b 984 53 960 -27 971 19 b 1022 156 998 86 1008 122 b 1054 190 1032 179 1041 190 b 1089 167 1063 190 1074 183 b 1208 32 1129 122 1171 78 b 1244 10 1221 17 1231 10 b 1273 22 1253 10 1263 14 b 1496 206 1352 78 1427 137 b 1535 310 1526 236 1535 272 b 1531 359 1535 325 1534 343 b 1496 343 1515 360 1506 351 l 1309 192 b 1269 167 1289 176 1279 167 b 1234 199 1260 167 1251 177 b 1122 324 1200 243 1168 289 b 1074 344 1106 337 1089 344 b 1014 301 1051 344 1030 328 b 952 144 985 252 971 197 b 933 121 946 128 940 121 b 910 137 927 121 920 125 b 850 210 888 161 870 186 b 687 369 799 266 750 325 b 631 390 665 383 647 390 b 567 327 602 390 580 369 b 527 199 554 284 543 242 b 508 168 520 179 514 168 b 482 192 503 168 495 177 b 353 328 444 240 405 292 b 312 343 338 338 324 343 b 266 297 292 343 276 327 b 204 125 248 239 232 180 b 143 79 193 102 173 79 b 92 122 117 79 105 102 b 81 154 86 131 84 143 b 48 423 59 242 50 333 b 45 544 46 464 45 504 b 53 730 45 606 48 668 b 40 768 55 744 52 766 b 13 730 19 770 14 747 b 0 514 7 658 -1 586 b 26 122 3 383 6 252 b 75 -36 35 66 40 10 b 134 -72 92 -59 112 -72 b 187 -46 151 -72 170 -63 z',\n },\n ornamentPrecompSlideTrillDAnglebert: {\n x_min: 0,\n x_max: 1088,\n y_min: -380,\n y_max: 252,\n ha: 632,\n o: 'm 560 -539 b 439 -481 527 -497 484 -485 b 354 -461 409 -478 380 -477 b 131 -154 236 -389 161 -285 b 124 -98 127 -135 124 -117 b 196 55 124 -40 148 10 b 308 99 230 86 268 99 b 399 81 337 99 367 92 b 514 22 441 66 477 43 b 619 -30 567 -9 590 -30 b 719 17 642 -30 670 -16 b 861 131 769 52 818 88 b 899 150 874 144 887 150 b 936 117 913 150 926 138 b 965 43 948 94 956 68 b 1007 -1 973 24 978 -1 b 1048 30 1025 -1 1037 16 b 1070 65 1057 40 1064 52 b 1110 148 1084 92 1096 121 b 1145 190 1120 164 1120 190 b 1191 153 1169 192 1179 168 b 1256 29 1218 115 1231 68 b 1292 1 1267 10 1277 1 b 1320 10 1300 1 1309 4 b 1369 48 1339 19 1355 33 b 1515 196 1418 96 1464 148 b 1567 343 1558 238 1567 287 b 1555 363 1565 357 1562 363 b 1539 356 1551 363 1547 360 b 1433 268 1502 330 1466 301 b 1335 171 1401 236 1374 199 b 1310 163 1325 166 1318 163 b 1286 183 1302 163 1293 168 b 1218 311 1264 226 1247 272 b 1164 351 1200 337 1182 351 b 1110 308 1146 351 1128 337 b 1031 176 1084 265 1058 219 b 1015 161 1025 166 1021 161 b 999 179 1009 161 1005 167 b 955 279 985 213 973 248 b 913 307 943 300 930 307 b 887 302 904 307 896 305 b 852 281 874 298 863 291 b 693 167 804 236 747 204 b 612 140 667 150 639 140 b 549 157 592 140 570 145 b 403 220 503 181 452 202 b 271 248 360 236 315 248 b 179 229 239 248 209 242 b 0 -29 65 180 0 85 b 9 -104 0 -53 3 -78 b 397 -526 56 -317 183 -464 b 505 -547 432 -536 468 -547 b 560 -539 524 -547 541 -544 z',\n },\n ornamentPrecompSlideTrillBach: {\n x_min: 0,\n x_max: 1185,\n y_min: -380,\n y_max: 465,\n ha: 845,\n o: 'm 624 -544 b 642 -528 638 -543 642 -537 b 639 -514 642 -524 642 -520 b 590 -444 629 -487 609 -467 b 523 -413 573 -422 553 -410 b 498 -415 514 -415 507 -415 b 399 -389 464 -415 431 -405 b 89 -157 281 -330 176 -255 b 72 -117 78 -144 72 -131 b 73 -101 72 -111 72 -107 b 187 186 91 3 147 91 b 246 230 200 216 222 230 b 300 209 262 230 281 223 b 456 48 359 163 403 101 b 540 -10 494 10 518 -10 b 625 59 566 -10 589 13 b 690 148 648 88 668 118 b 711 167 697 160 704 167 b 733 153 719 167 724 163 b 844 14 769 105 808 60 b 903 -42 873 -23 886 -42 b 973 -1 919 -42 937 -27 b 1008 33 986 7 996 20 b 1048 81 1021 48 1035 65 b 1050 37 1048 66 1050 52 b 1047 -24 1050 17 1048 -3 b 1038 -275 1038 -108 1040 -192 l 1037 -289 b 1045 -302 1037 -295 1038 -301 b 1068 -284 1056 -304 1064 -292 b 1084 -242 1076 -271 1081 -256 b 1099 -109 1096 -199 1099 -154 b 1106 158 1099 -19 1106 71 b 1128 187 1113 167 1120 177 b 1168 223 1143 212 1155 223 b 1210 193 1179 223 1191 213 b 1220 183 1214 190 1215 186 b 1329 36 1261 138 1292 84 b 1374 7 1345 16 1358 7 b 1411 20 1384 7 1395 12 b 1479 84 1437 37 1459 59 b 1610 235 1521 135 1564 186 b 1706 403 1655 282 1695 334 b 1614 346 1663 400 1637 373 b 1464 170 1564 287 1515 228 b 1440 150 1453 156 1447 150 b 1414 173 1433 150 1426 158 b 1283 336 1371 228 1333 288 b 1220 366 1261 356 1240 366 b 1148 318 1194 366 1169 350 b 1103 255 1133 297 1119 275 b 1097 301 1102 271 1100 285 b 1099 334 1099 312 1099 324 b 1092 428 1099 367 1094 397 b 1071 647 1087 501 1079 575 b 1058 670 1071 657 1071 670 b 1035 648 1047 670 1038 661 b 1018 516 1024 605 1015 560 b 1041 203 1025 412 1037 307 b 1043 180 1041 196 1043 187 b 992 127 1027 161 1009 143 b 965 111 981 117 972 111 b 936 132 955 111 946 120 b 829 268 900 179 867 225 b 760 317 801 301 780 317 b 691 258 739 317 719 297 b 605 147 664 219 641 177 b 589 138 599 141 593 138 b 572 148 583 138 579 141 b 415 317 520 206 467 261 b 327 372 390 343 366 366 b 300 373 317 373 308 373 b 154 295 239 373 190 348 b 55 138 120 243 85 192 b 0 -53 22 79 0 13 b 160 -317 0 -156 49 -252 b 209 -354 177 -327 192 -343 b 510 -531 305 -419 397 -495 b 593 -547 537 -540 564 -547 b 624 -544 603 -547 613 -546 z',\n },\n ornamentPrecompTrillSuffixDandrieu: {\n x_min: 0,\n x_max: 1003,\n y_min: -20,\n y_max: 521,\n ha: 541,\n o: 'm 791 -16 b 844 33 812 -3 829 14 b 981 271 900 107 937 190 b 994 288 984 278 985 288 b 1009 269 1004 288 1007 278 b 1077 112 1034 217 1051 163 b 1158 43 1103 62 1129 43 b 1231 69 1179 43 1204 55 b 1348 189 1280 98 1315 143 b 1444 451 1407 271 1444 357 b 1431 547 1444 482 1440 514 b 1188 750 1401 665 1299 750 b 1158 747 1178 750 1168 749 b 1079 684 1119 742 1089 727 b 1063 632 1076 665 1071 648 b 1056 609 1058 622 1056 615 b 1071 599 1056 602 1060 599 b 1086 600 1076 599 1080 600 b 1130 605 1102 603 1116 605 b 1244 569 1171 605 1210 595 b 1349 346 1322 511 1349 433 b 1348 312 1349 334 1349 324 b 1289 197 1345 266 1325 228 b 1238 174 1270 181 1253 174 b 1188 215 1220 174 1202 187 b 1145 308 1172 245 1159 276 b 1096 413 1129 343 1120 382 b 1053 438 1084 431 1068 438 b 1011 413 1038 438 1022 431 b 955 324 989 384 971 354 b 850 127 920 258 886 192 b 838 112 847 121 842 112 b 824 128 828 109 825 121 b 802 193 815 150 809 171 b 730 400 779 264 766 337 b 688 431 719 420 703 431 b 647 403 674 431 660 422 b 606 338 632 383 619 361 b 513 167 575 282 546 223 b 480 122 503 150 498 122 b 452 171 459 122 459 153 b 420 255 442 199 432 228 b 337 408 399 308 380 364 b 276 436 317 428 297 436 b 215 397 253 436 230 423 b 23 72 148 289 81 184 b 0 29 17 59 0 40 b 7 17 0 23 1 20 b 59 58 26 7 46 39 b 190 276 111 127 143 206 b 216 301 202 292 207 301 b 245 279 223 301 232 294 b 311 166 278 248 292 206 b 367 16 331 117 346 65 b 402 -19 377 -7 387 -19 b 438 -4 412 -19 423 -13 b 518 88 474 17 495 55 b 628 284 562 150 592 216 b 657 223 648 266 651 243 b 717 13 677 154 696 84 b 755 -29 726 -16 737 -29 b 791 -16 765 -29 776 -24 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefix: {\n x_min: 0,\n x_max: 1246,\n y_min: -30,\n y_max: 296.0302860502196,\n ha: 326.0302860502196,\n o: 'm 360 -43 b 559 59 445 -43 503 7 b 698 236 615 111 652 179 b 714 248 704 243 710 248 b 727 235 719 248 721 243 l 848 42 b 883 12 860 22 870 12 b 917 32 891 12 903 19 b 946 62 927 42 939 50 b 1037 192 972 108 1009 147 b 1057 210 1044 204 1051 210 b 1076 190 1063 210 1068 203 l 1176 12 b 1215 -19 1188 -9 1201 -19 b 1250 -6 1225 -19 1237 -14 b 1284 27 1264 3 1274 16 b 1380 190 1323 78 1351 135 b 1395 210 1384 197 1385 210 b 1413 190 1405 210 1410 197 b 1508 40 1436 134 1467 85 b 1564 3 1529 14 1547 3 b 1617 32 1580 3 1597 12 b 1767 238 1678 92 1719 167 b 1794 310 1781 259 1791 282 b 1752 294 1776 317 1764 304 b 1656 164 1711 258 1689 206 b 1629 144 1646 151 1637 144 b 1603 161 1620 144 1613 150 b 1502 315 1562 207 1525 258 b 1452 357 1490 344 1470 357 b 1397 320 1431 357 1411 344 b 1316 170 1368 271 1345 219 b 1280 127 1306 154 1303 127 b 1244 171 1256 127 1254 154 b 1145 337 1210 226 1179 282 b 1110 363 1135 354 1122 363 b 1070 338 1097 363 1084 354 b 1050 311 1063 330 1057 320 b 959 181 1017 271 992 223 b 939 167 950 173 945 167 b 920 184 933 167 927 173 b 818 343 887 238 852 291 b 759 395 795 377 778 395 b 701 344 742 395 724 377 b 698 338 700 341 700 340 b 544 154 652 272 605 207 b 412 98 501 117 458 98 b 304 130 377 98 341 108 b 95 373 204 187 144 275 b 58 426 85 393 82 428 b 19 366 26 426 26 389 b 0 307 13 346 0 327 b 4 287 0 300 1 294 b 174 36 49 194 91 102 b 360 -43 230 -9 289 -43 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefixTurn: {\n x_min: 0,\n x_max: 1226,\n y_min: -237,\n y_max: 436,\n ha: 673,\n o: 'm 1279 -341 b 1293 -252 1293 -307 1295 -278 b 1277 36 1287 -156 1282 -59 l 1273 118 b 1318 176 1289 137 1303 157 b 1349 203 1332 193 1342 203 b 1378 168 1359 203 1367 192 b 1456 35 1401 122 1428 78 b 1511 -12 1476 3 1493 -12 b 1568 23 1526 -12 1544 0 b 1597 53 1578 32 1588 42 b 1705 186 1629 101 1669 143 b 1761 284 1728 216 1751 246 b 1765 300 1763 288 1765 295 b 1763 307 1765 302 1765 305 b 1737 302 1754 311 1744 308 b 1718 287 1729 298 1725 292 b 1598 145 1673 245 1637 194 b 1578 130 1590 135 1584 130 b 1557 147 1571 130 1565 135 b 1447 321 1516 202 1488 265 b 1403 351 1433 341 1417 351 b 1358 323 1388 351 1372 341 b 1269 209 1329 285 1299 248 b 1254 521 1264 314 1259 418 b 1228 616 1253 554 1247 588 b 1218 628 1224 621 1223 628 l 1215 628 b 1201 613 1210 626 1202 619 b 1200 600 1200 609 1200 605 l 1200 586 b 1211 348 1204 507 1207 428 b 1217 166 1214 288 1215 226 b 1202 181 1212 168 1208 174 b 1094 334 1168 233 1130 284 b 1048 366 1079 356 1064 366 b 1004 331 1034 366 1018 354 b 904 154 969 275 930 220 b 873 202 887 171 880 187 b 778 356 845 256 819 311 b 737 379 763 372 750 379 b 698 353 724 379 711 370 l 621 232 b 415 114 570 154 495 114 b 302 138 377 114 340 121 b 73 400 187 192 117 284 b 55 420 69 415 62 420 b 42 410 50 420 45 416 b 0 292 23 373 0 334 b 4 262 0 282 1 272 b 168 39 32 168 92 99 b 359 -26 225 -6 292 -26 b 585 76 446 -26 530 10 b 668 202 616 115 641 160 b 693 228 680 219 687 228 b 720 203 700 228 707 219 b 801 63 752 160 775 111 b 844 7 812 42 818 7 b 910 66 877 6 894 39 b 923 94 916 75 919 85 b 995 219 945 137 968 179 b 1025 184 1009 210 1017 197 b 1119 56 1054 141 1087 98 b 1166 20 1138 32 1152 20 b 1215 50 1181 20 1195 30 b 1221 56 1217 52 1218 55 b 1228 -163 1223 -17 1225 -89 b 1279 -341 1231 -223 1251 -278 z',\n },\n ornamentPrecompTrillLowerSuffix: {\n x_min: 0,\n x_max: 833,\n y_min: -309,\n y_max: 319,\n ha: 628,\n o: 'm 778 -444 b 801 -445 785 -444 793 -445 b 1037 -338 894 -445 969 -397 b 1200 37 1149 -240 1200 -109 b 1084 406 1200 171 1172 300 b 1024 444 1064 431 1043 444 b 960 390 999 444 978 426 b 841 163 923 314 886 236 b 812 128 832 150 827 128 b 786 167 796 130 793 153 b 660 418 744 251 716 341 b 599 459 639 445 619 459 b 541 410 577 459 557 444 b 439 197 507 340 474 269 b 422 179 435 190 435 179 b 338 393 392 251 379 328 b 275 439 320 423 298 439 b 212 396 253 439 230 425 b 71 219 170 333 128 268 b 0 45 17 173 16 112 b 68 98 32 62 50 78 b 194 264 112 150 153 209 b 230 292 209 282 219 292 b 264 261 240 292 251 282 b 274 242 268 255 269 248 b 346 46 304 179 325 112 b 376 10 351 32 354 10 b 412 35 392 10 403 22 b 452 107 429 56 441 82 b 541 291 481 168 511 230 b 556 307 547 302 552 307 b 573 295 562 307 567 302 b 624 217 595 272 611 246 b 721 1 657 145 685 72 b 755 -27 732 -19 742 -27 b 786 -16 765 -27 775 -24 b 857 73 819 7 840 39 b 952 256 887 134 920 194 b 978 289 963 279 969 289 b 1009 262 985 289 994 281 b 1030 235 1017 253 1024 245 b 1110 -4 1071 161 1099 81 b 1116 -68 1113 -26 1116 -48 b 1009 -243 1116 -140 1090 -200 b 848 -291 956 -272 901 -291 b 730 -261 809 -291 770 -282 b 696 -248 714 -252 703 -248 b 671 -284 684 -248 678 -258 l 662 -312 b 657 -357 658 -330 657 -344 b 744 -439 657 -403 683 -425 z',\n },\n brassScoop: {\n x_min: -0.4444444444444445,\n x_max: 312,\n y_min: -390,\n y_max: 28,\n ha: 418,\n o: 'm 0 -562 b 393 -256 171 -504 307 -412 b 449 -39 431 -189 449 -115 b 448 -1 449 -26 449 -14 b 433 40 446 14 448 40 b 408 -3 410 40 412 14 b 396 -66 403 -23 402 -46 b 45 -397 346 -243 209 -337 b 0 -451 13 -409 1 -423 b 0 -562 -1 -485 0 -520 z',\n },\n brassDoitMedium: {\n x_min: -0.32815253965710617,\n x_max: 476.21251177608565,\n y_min: -50,\n y_max: 333.1535583875376,\n ha: 383.1535583875376,\n o: 'm 16 -72 b 27 -71 19 -72 23 -72 b 215 -33 89 -56 153 -48 b 521 114 327 -7 435 35 b 685 432 615 199 691 295 b 670 480 684 449 688 475 b 642 441 654 482 648 456 b 403 183 599 321 513 240 b 79 89 301 130 192 105 b 0 -1 -12 76 0 76 b 0 -50 0 -17 1 -33 b 16 -72 0 -65 3 -72 z',\n },\n brassFallLipShort: {\n x_min: 0,\n x_max: 298,\n y_min: -344,\n y_max: 65,\n ha: 409,\n o: 'm 396 -495 b 420 -461 412 -487 418 -474 b 429 -382 428 -435 429 -409 b 426 -330 429 -364 428 -347 b 285 -6 410 -209 356 -104 b 98 94 239 59 173 94 b 39 86 79 94 58 92 b 0 49 20 81 0 73 l 0 -52 b 10 -69 0 -62 1 -69 b 20 -68 13 -69 16 -69 b 88 -56 45 -59 66 -56 b 261 -160 156 -56 213 -95 b 396 -495 333 -259 382 -369 z',\n },\n brassLiftMedium: {\n x_min: 0,\n x_max: 807,\n y_min: 0,\n y_max: 838,\n ha: 838,\n o: 'm 50 0 b 55 1 52 0 53 0 b 58 23 65 7 59 16 b 55 58 56 36 55 48 b 130 117 55 99 75 112 b 220 213 202 121 220 141 b 315 308 220 289 238 308 l 336 308 b 408 380 393 310 406 321 b 461 452 409 438 416 452 b 485 451 468 452 477 451 b 569 510 531 448 556 464 b 573 543 572 520 572 531 b 657 619 580 605 595 618 b 698 621 670 619 684 619 b 788 700 749 625 778 649 b 798 778 792 726 793 752 b 873 857 806 841 809 845 b 985 950 927 867 973 887 b 1084 1047 1002 1035 1004 1034 b 1162 1128 1133 1056 1162 1087 b 1146 1182 1162 1145 1158 1164 b 1125 1207 1140 1191 1136 1207 l 1122 1207 b 1110 1191 1113 1205 1110 1198 b 1112 1174 1110 1185 1112 1178 b 1048 1110 1109 1126 1096 1113 b 1028 1109 1043 1110 1035 1109 b 939 1022 969 1102 948 1081 b 845 922 929 949 917 936 b 746 812 773 909 753 886 b 744 780 744 802 744 791 b 635 681 737 700 717 683 b 524 583 553 680 536 665 b 439 510 514 520 503 510 b 357 431 377 510 360 492 l 357 406 b 314 364 356 379 343 364 b 238 361 288 364 264 364 b 173 300 202 357 180 334 b 167 245 168 281 167 262 b 105 174 166 192 157 180 b 75 171 95 173 85 171 b 6 112 30 166 14 153 b 0 73 1 98 0 85 b 37 10 0 45 13 26 b 50 0 42 7 46 0 z',\n },\n brassFallRoughMedium: {\n x_min: 0,\n x_max: 791,\n y_min: 0,\n y_max: 819,\n ha: 819,\n o: 'm 1117 0 b 1139 101 1129 26 1139 71 b 1138 121 1139 109 1139 115 b 1084 193 1125 171 1110 193 b 1044 183 1073 193 1060 189 b 1022 177 1035 179 1028 177 b 1007 209 1012 177 1008 186 b 876 324 1004 292 959 330 b 799 317 850 321 825 320 b 759 354 772 314 755 320 b 760 373 760 360 760 366 b 759 392 760 379 760 384 b 681 477 753 451 730 477 b 654 474 672 477 664 475 b 606 467 638 471 622 468 b 586 465 599 465 592 465 b 564 481 570 465 564 469 b 569 505 564 487 566 495 b 575 553 572 521 575 537 b 572 585 575 564 573 575 b 481 665 560 657 539 668 b 412 665 458 664 435 665 b 382 690 392 667 382 672 b 383 700 382 693 383 696 b 386 773 387 724 387 749 b 297 858 382 828 351 857 b 229 861 274 858 251 858 b 190 897 207 863 193 871 b 163 1012 186 936 180 976 b 79 1084 145 1050 124 1084 b 66 1083 75 1084 71 1083 b 43 1096 49 1081 43 1087 b 48 1112 43 1100 45 1106 b 53 1130 52 1119 53 1125 b 39 1169 53 1145 45 1158 b 26 1179 36 1175 30 1179 b 16 1171 22 1179 17 1176 b 0 1103 10 1149 0 1126 b 9 1067 0 1092 1 1079 b 91 1021 26 1031 52 1018 b 145 978 122 1024 141 1011 b 156 913 147 956 151 935 b 291 795 170 831 210 795 b 346 768 337 795 346 796 b 344 743 346 760 344 753 b 343 716 344 733 343 724 b 455 600 343 651 390 602 b 505 605 471 599 490 605 b 528 598 514 605 523 603 b 536 579 534 592 536 586 b 524 523 536 562 526 541 b 523 505 524 517 523 511 b 621 405 523 442 560 405 b 639 406 626 405 634 406 b 677 413 652 408 664 410 b 701 416 687 415 696 416 b 721 392 716 416 721 410 b 720 373 721 386 720 380 b 831 255 714 301 759 252 b 897 261 854 255 876 261 b 926 262 909 261 919 262 b 969 197 963 262 965 252 b 971 184 969 193 971 189 b 1031 115 979 137 998 115 b 1071 122 1043 115 1056 118 b 1096 130 1079 125 1086 127 b 1087 59 1094 107 1087 82 b 1117 0 1087 37 1094 17 z',\n },\n brassBend: {\n x_min: 0,\n x_max: 381,\n y_min: 0,\n y_max: 367,\n ha: 367,\n o: 'm 298 0 b 472 50 359 0 418 14 b 537 135 501 71 530 92 b 543 216 543 163 543 190 l 543 266 b 544 308 543 281 543 295 b 549 433 546 354 549 395 b 543 507 549 459 547 482 b 533 528 541 516 544 528 b 511 508 524 528 514 520 b 508 478 510 498 508 488 b 504 318 507 425 504 372 b 505 264 504 300 505 282 b 446 181 505 220 484 199 b 294 150 396 160 344 150 b 92 194 226 150 158 167 b 45 269 62 207 45 230 b 46 359 46 300 46 328 b 37 497 46 405 45 451 b 27 523 36 507 37 523 b 4 498 14 524 6 513 b 3 481 3 492 3 487 b 0 409 1 456 0 433 b 4 228 0 348 4 288 b 3 177 4 210 4 194 b 68 53 1 125 20 84 b 200 10 108 27 154 17 b 298 0 233 4 266 0 z',\n },\n brassMuteClosed: {\n x_min: 0,\n x_max: 274,\n y_min: 0,\n y_max: 260,\n ha: 260,\n o: 'm 203 0 b 209 1 206 0 207 0 b 216 13 215 4 216 9 l 215 27 l 215 153 b 216 161 216 156 216 158 b 372 164 268 163 318 164 b 395 184 383 164 395 166 l 395 189 b 357 229 392 209 386 229 b 219 228 311 229 265 228 l 223 310 b 209 357 225 328 219 344 b 189 374 203 364 197 374 b 184 373 187 374 186 373 b 177 359 179 372 177 366 l 177 348 l 173 222 l 39 222 b 0 206 12 222 0 219 b 10 174 0 199 3 189 b 46 157 19 157 30 157 b 108 160 68 158 88 160 b 171 161 130 161 150 161 l 167 58 b 184 16 167 40 171 26 b 203 0 192 12 196 0 z',\n },\n brassMuteOpen: {\n x_min: 1,\n x_max: 313.01193341111656,\n y_min: 0,\n y_max: 309,\n ha: 309,\n o: 'm 265 0 b 451 189 363 7 452 88 l 451 215 b 348 383 441 285 405 343 b 209 445 288 426 248 445 b 84 379 168 445 132 420 b 69 364 79 373 73 369 b 1 213 30 323 1 275 b 230 0 1 88 94 0 z m 210 62 b 128 73 181 62 154 66 b 40 171 71 91 42 125 b 52 226 40 187 45 206 b 197 374 79 295 130 344 b 228 382 207 380 217 382 b 300 361 252 382 276 370 b 374 308 328 350 353 331 b 410 223 397 284 410 253 b 393 163 410 202 405 181 b 210 62 354 91 288 63 z',\n },\n brassFlip: {\n x_min: 0,\n x_max: 402,\n y_min: 0,\n y_max: 361,\n ha: 361,\n o: 'm 579 0 b 511 153 579 68 557 117 b 52 504 359 271 206 387 b 29 520 45 510 39 520 b 20 517 26 520 23 518 b 0 477 3 510 0 494 l 0 125 b 17 20 1 92 1 56 b 40 84 37 40 40 60 b 42 287 40 151 42 219 l 42 363 z',\n },\n brassJazzTurn: {\n x_min: 0,\n x_max: 646,\n y_min: 0,\n y_max: 212,\n ha: 212,\n o: 'm 310 0 b 367 33 327 0 344 10 b 389 55 374 40 382 49 b 490 145 423 85 456 114 b 507 154 495 151 501 154 b 524 144 513 154 517 151 b 598 72 547 120 575 98 b 700 24 625 42 662 24 b 765 43 721 24 744 30 b 893 147 812 72 855 105 b 930 212 910 166 923 186 b 912 215 923 213 917 215 b 871 199 896 215 883 209 b 812 153 852 183 832 167 b 789 144 805 148 796 144 b 773 156 782 144 776 147 b 691 251 757 199 720 222 b 603 301 658 282 631 301 b 527 258 580 301 556 288 b 420 156 494 222 455 190 b 399 143 412 147 405 143 b 377 157 392 143 386 147 b 259 282 340 200 300 242 b 219 305 245 298 232 305 b 177 279 204 305 192 297 b 55 127 137 228 95 177 b 0 52 36 104 20 79 b 14 50 6 50 10 50 b 53 66 32 50 45 58 b 115 131 75 88 98 108 b 135 148 124 143 130 148 b 157 132 141 148 148 143 b 252 33 186 96 219 65 b 310 0 275 12 292 0 z',\n },\n brassSmear: {\n x_min: 0,\n x_max: 334,\n y_min: 0,\n y_max: 151,\n ha: 151,\n o: 'm 321 0 b 475 125 390 0 436 43 b 481 143 478 131 481 137 b 475 154 481 147 480 151 b 449 148 468 158 458 154 b 395 132 432 137 413 132 b 343 140 377 132 360 137 b 229 194 301 148 266 173 b 168 217 206 209 186 217 b 109 192 148 217 130 209 b 0 26 59 148 32 89 b 59 63 32 29 45 48 b 98 84 72 78 84 84 b 130 73 108 84 118 81 b 213 26 157 58 183 37 b 321 0 255 9 289 0 z',\n },\n stringsDownBow: {\n x_min: 0,\n x_max: 306,\n y_min: -0.09607201951262866,\n y_max: 366,\n ha: 366.09607201951263,\n o: 'm 405 0 b 425 17 413 -1 420 9 b 439 66 435 32 439 48 b 441 268 439 137 441 202 b 436 412 441 314 439 361 l 435 413 b 423 469 435 436 431 456 b 344 508 406 501 373 501 b 204 527 298 520 251 527 b 60 498 156 527 108 518 b 7 438 32 485 10 468 l 7 426 b 4 337 7 396 7 367 b 0 140 0 272 0 206 b 1 42 0 107 0 73 b 13 3 1 27 -3 4 b 40 39 29 3 35 24 b 42 53 42 43 40 49 b 49 141 48 84 49 112 b 48 215 49 167 48 192 b 49 252 48 228 48 240 l 49 312 b 130 343 72 331 99 340 b 206 347 156 346 180 347 b 372 314 262 347 318 338 l 390 307 l 390 245 b 390 138 392 212 390 176 b 397 23 390 101 392 62 b 405 0 399 14 393 1 z',\n },\n stringsUpBow: {\n x_min: 0,\n x_max: 219.2842808242076,\n y_min: 0,\n y_max: 489,\n ha: 489,\n o: 'm 151 0 b 184 42 170 12 180 26 b 297 554 223 212 261 382 b 315 690 305 598 318 645 b 304 704 315 697 311 704 b 276 670 288 704 282 697 b 157 131 236 490 196 311 l 157 144 b 73 526 134 276 104 396 b 30 677 60 576 52 638 b 13 694 26 684 22 694 b 0 674 9 694 0 691 l 0 671 b 10 603 3 649 6 626 b 105 174 42 461 72 317 b 150 0 117 117 128 58 z',\n },\n stringsHarmonic: {\n x_min: 0,\n x_max: 191,\n y_min: 0,\n y_max: 202,\n ha: 202,\n o: 'm 143 0 b 275 122 217 0 275 53 b 127 291 275 206 202 291 b 0 154 63 291 0 222 b 143 0 0 76 71 0 z m 122 68 b 43 105 89 66 59 75 b 39 124 40 111 39 117 b 79 199 39 148 56 180 b 145 226 101 216 122 226 b 199 210 163 226 180 220 b 235 150 223 196 235 173 b 203 92 235 128 225 107 b 122 68 181 76 150 68 z',\n },\n pluckedSnapPizzicatoAbove: {\n x_min: 0,\n x_max: 201,\n y_min: 0,\n y_max: 325,\n ha: 325,\n o: 'm 171 0 b 289 99 240 0 289 45 b 258 183 289 130 274 156 b 174 269 236 217 203 240 l 174 408 b 174 429 174 415 176 422 b 131 468 168 451 153 468 b 117 451 120 468 117 461 b 118 429 117 444 118 435 b 115 307 117 389 115 347 b 0 166 59 295 0 223 b 171 0 0 85 89 0 z m 134 55 b 52 131 84 55 52 85 b 115 233 52 179 81 209 b 114 192 114 220 114 206 b 174 120 114 137 114 137 l 174 228 b 233 148 200 207 223 183 b 236 130 235 143 236 135 b 197 72 236 105 223 85 b 134 55 177 60 157 55 z',\n },\n pluckedSnapPizzicatoBelow: {\n x_min: 0,\n x_max: 211,\n y_min: 0,\n y_max: 307,\n ha: 307,\n o: 'm 145 7 b 163 0 153 3 158 0 b 173 23 170 0 173 7 l 173 140 l 170 140 l 170 163 l 171 163 b 206 170 179 164 193 166 b 304 287 264 186 304 233 b 281 354 304 308 297 333 b 118 442 240 412 186 439 b 0 324 69 442 0 370 b 115 176 0 266 55 202 l 115 56 b 145 7 114 33 125 19 z m 115 220 b 62 256 92 223 73 230 b 53 292 56 269 53 281 b 78 344 53 311 60 328 b 168 384 105 372 135 384 b 213 376 183 384 199 382 b 253 321 239 366 253 346 b 246 291 253 311 251 301 b 170 226 230 256 203 236 l 170 258 b 148 305 171 278 163 292 b 128 315 143 310 135 315 l 124 315 b 115 301 117 314 115 308 z',\n },\n pluckedLeftHandPizzicato: {\n x_min: 0,\n x_max: 271,\n y_min: 0,\n y_max: 284,\n ha: 284,\n o: 'm 213 0 b 223 14 222 0 223 7 b 222 35 223 22 222 29 l 222 176 b 373 170 272 174 323 170 b 390 180 382 170 390 171 l 390 184 b 347 232 386 207 382 232 b 219 238 307 233 266 235 l 219 364 b 171 409 219 395 193 409 b 156 393 160 409 156 402 b 158 370 156 384 158 376 l 158 240 b 16 239 115 240 66 239 b 0 226 7 239 0 238 l 0 223 b 50 179 1 203 29 179 b 158 177 86 179 122 179 l 158 63 b 161 29 158 52 158 40 b 213 0 166 -1 194 1 z',\n },\n keyboardPedalPed: {\n x_min: 0,\n x_max: 944,\n y_min: -13,\n y_max: 550,\n ha: 563,\n o: 'm 22 0 b 109 78 53 0 105 46 l 144 333 b 163 376 147 347 140 372 b 364 465 238 390 301 426 b 454 599 416 497 454 540 b 452 618 454 605 454 612 b 320 770 442 694 396 747 b 248 779 295 778 272 779 b 193 778 229 779 212 779 b 160 780 181 778 167 775 b 137 792 153 789 144 791 b 109 789 128 792 118 789 b 7 719 59 789 48 737 b 23 708 16 714 20 708 b 36 710 29 710 33 710 b 53 684 52 710 53 698 l 53 674 b 43 386 53 577 53 482 b 20 164 36 312 30 238 b 1 30 14 120 7 75 b 0 19 0 26 0 22 b 22 0 0 9 4 0 z m 171 425 b 156 442 160 425 156 429 b 157 475 157 452 157 464 b 164 602 161 517 164 560 b 161 698 164 635 163 667 b 184 729 161 720 167 729 l 193 729 b 348 563 278 719 348 641 b 346 539 348 554 347 547 b 171 425 328 459 229 422 z m 979 6 b 1008 13 986 6 995 9 b 1081 101 1047 29 1079 46 b 1116 449 1087 217 1104 333 b 1143 654 1123 518 1133 586 b 1148 685 1145 664 1148 675 b 1140 704 1148 693 1146 700 b 1107 716 1130 713 1119 716 b 1056 706 1092 716 1073 710 b 1037 671 1035 703 1038 685 b 1004 439 1025 595 1014 517 b 986 419 1001 428 999 419 b 979 419 985 419 982 420 b 935 426 965 423 949 425 b 795 376 884 426 838 405 b 664 153 714 323 664 249 b 665 130 664 145 665 138 b 753 29 671 65 704 29 b 815 40 773 29 792 33 b 975 147 873 65 923 101 b 965 45 971 108 968 76 b 979 6 963 17 966 6 z m 393 -17 b 634 145 494 16 579 52 b 638 160 636 151 638 156 b 625 168 638 166 634 168 b 621 167 624 168 622 168 b 524 118 582 164 544 160 b 495 79 517 104 505 92 b 435 33 471 49 452 33 b 380 96 416 33 397 55 b 369 145 373 114 369 131 b 442 225 369 186 395 213 b 468 232 451 228 459 229 b 654 344 539 255 606 285 b 677 395 667 360 677 376 b 672 415 677 402 675 408 b 612 459 661 442 639 455 b 589 461 602 461 592 461 b 348 328 500 461 409 408 b 269 120 302 268 269 199 b 379 -19 269 45 318 -19 b 393 -17 383 -19 389 -19 z m 395 240 b 494 383 418 300 452 344 l 521 405 b 544 419 528 409 536 418 b 554 415 547 419 550 418 b 570 383 564 406 570 396 l 570 379 b 552 331 570 360 562 344 b 395 240 511 285 462 253 z m 827 89 b 792 111 815 89 804 96 b 766 204 775 131 766 158 b 845 360 772 256 799 314 b 871 372 854 369 863 372 b 897 366 880 372 888 369 b 978 279 942 353 963 320 b 976 259 981 272 981 265 b 858 104 942 203 909 147 b 827 89 847 94 837 89 z m 1282 12 b 1336 35 1303 14 1320 23 b 1359 71 1351 45 1359 58 b 1338 102 1359 82 1352 95 b 1254 130 1312 118 1284 130 b 1187 88 1223 130 1202 109 b 1178 65 1182 81 1178 72 b 1195 37 1178 55 1182 45 b 1282 12 1223 23 1253 19 z',\n },\n keyboardPedalUp: {\n x_min: 0,\n x_max: 436.6015132318337,\n y_min: 0,\n y_max: 461,\n ha: 461,\n o: 'm 330 0 b 334 1 331 0 333 0 b 340 12 338 4 340 7 l 338 26 b 340 264 338 105 338 184 b 526 95 400 206 461 148 b 559 71 536 88 547 71 b 564 72 560 71 563 71 b 580 121 580 79 580 102 l 580 127 b 543 203 585 158 573 184 b 472 259 518 219 495 238 l 445 285 b 590 292 494 288 541 291 b 622 318 609 294 618 302 b 628 359 625 331 626 346 b 586 402 632 393 621 405 b 464 395 546 399 504 396 l 559 491 b 567 524 567 500 567 510 b 564 543 567 527 567 536 b 539 596 559 563 560 590 b 494 564 521 600 508 577 b 340 413 442 514 390 464 l 340 560 b 287 664 340 600 321 632 b 271 518 274 612 272 566 b 268 445 269 494 269 469 b 117 569 219 488 168 530 b 96 579 109 575 102 579 b 85 560 89 579 85 573 b 124 446 85 518 82 477 b 209 380 153 426 181 403 b 45 374 154 377 99 376 b 0 324 9 374 0 359 b 63 266 0 265 1 265 b 144 272 89 269 117 272 l 196 272 b 108 193 167 246 138 219 b 60 135 76 164 60 151 b 99 73 60 121 73 105 b 104 68 101 72 102 71 b 114 58 107 60 111 58 b 130 66 120 58 124 62 b 259 186 173 107 217 145 b 256 117 259 163 256 140 b 311 13 256 72 271 37 b 330 0 317 10 323 0 z',\n },\n pictChokeCymbal: {\n x_min: 1,\n x_max: 147,\n y_min: 0,\n y_max: 242,\n ha: 242,\n o: 'm 79 4 b 207 158 153 32 192 88 b 212 200 210 173 212 187 b 143 336 212 253 187 298 b 98 348 131 344 115 348 b 4 295 60 348 16 327 b 1 276 1 289 1 282 b 9 249 1 266 3 258 b 121 183 35 206 72 183 b 156 186 132 183 144 183 b 26 53 134 115 91 73 b 7 39 13 49 7 45 b 19 20 7 33 12 27 b 59 0 30 9 43 0 b 79 4 65 0 72 1 z',\n },\n wiggleArpeggiatoUp: {\n x_min: -22,\n x_max: 300,\n y_min: 0,\n y_max: 176,\n ha: 176,\n o: 'm 173 4 b 196 0 180 1 189 0 b 246 26 215 0 230 9 b 301 117 271 53 285 85 b 312 131 305 125 307 131 b 327 124 315 131 321 128 b 373 86 341 112 353 101 b 412 69 389 75 402 69 b 432 94 425 69 432 79 b 373 181 432 117 413 154 b 235 252 323 216 285 245 b 220 253 229 253 225 253 b 168 215 196 253 181 240 b 111 112 151 180 140 141 b 94 102 105 105 99 102 b 78 111 89 102 84 105 b 0 181 55 135 35 160 b -32 153 -20 194 -32 168 b 0 86 -32 124 -32 109 b 94 36 22 71 73 46 b 173 4 134 16 131 17 z',\n },\n arpeggiatoUp: {\n x_min: 0,\n x_max: 262,\n y_min: 0,\n y_max: 1459,\n ha: 1459,\n o: 'm 190 0 b 160 63 187 29 170 45 b 145 108 150 81 145 95 b 183 163 145 128 157 145 b 300 246 222 190 262 216 b 347 318 333 272 347 295 b 301 393 347 341 331 364 b 258 413 289 403 272 408 b 145 449 220 425 183 436 b 117 464 135 452 120 452 b 140 491 115 477 128 484 b 294 593 192 526 243 557 b 330 647 318 611 330 626 b 314 693 330 660 324 675 b 262 736 302 714 285 729 b 170 763 230 744 200 753 b 122 783 153 768 125 768 b 160 831 120 804 143 818 b 288 922 202 861 246 890 b 333 999 318 945 333 972 b 266 1083 333 1032 310 1064 b 189 1115 240 1094 215 1103 b 122 1178 145 1133 122 1153 b 168 1250 122 1200 138 1223 l 180 1257 b 269 1333 210 1283 240 1306 b 305 1405 294 1356 305 1381 b 284 1469 305 1426 298 1447 b 228 1525 269 1492 251 1511 b 183 1600 197 1545 183 1571 b 190 1640 183 1613 184 1626 b 197 1670 193 1650 194 1660 b 272 1735 213 1719 230 1735 b 295 1734 279 1735 287 1735 b 323 1732 305 1732 314 1732 b 350 1731 333 1732 341 1732 b 377 1742 369 1729 377 1732 b 370 1761 377 1747 374 1754 l 301 1898 b 217 2066 274 1954 248 2012 b 186 2101 204 2089 196 2101 b 154 2069 177 2101 167 2091 b 12 1824 105 1987 59 1907 b 0 1787 4 1810 0 1797 b 59 1744 0 1761 20 1745 b 160 1738 92 1744 125 1740 b 145 1692 156 1721 151 1706 b 135 1633 138 1672 135 1652 b 184 1518 135 1591 151 1552 b 229 1475 199 1503 213 1488 b 259 1431 249 1456 259 1444 b 229 1388 259 1420 249 1407 b 151 1325 203 1365 177 1345 b 105 1279 134 1310 118 1296 b 73 1202 84 1251 73 1227 b 108 1123 73 1176 85 1152 b 255 1031 148 1077 199 1051 b 282 1014 274 1025 282 1021 b 262 991 282 1008 275 1001 b 151 914 226 963 189 939 b 79 851 125 896 99 877 b 63 809 69 837 63 824 b 79 769 63 796 68 783 b 202 697 111 729 154 710 b 266 670 225 690 266 688 b 210 622 266 648 232 635 b 82 534 167 593 120 570 b 55 491 63 518 55 505 b 79 448 55 478 63 465 b 255 361 127 395 192 380 b 288 343 269 359 288 357 b 266 312 288 331 275 320 b 144 223 229 278 184 253 b 85 134 104 193 85 166 b 118 53 85 111 96 85 b 190 0 135 29 160 14 z',\n },\n arpeggiatoDown: {\n x_min: 0,\n x_max: 218,\n y_min: 0,\n y_max: 1440,\n ha: 1440,\n o: 'm 161 16 b 310 261 210 98 259 180 b 314 275 312 266 314 271 b 302 295 314 282 310 289 b 252 311 287 308 269 311 b 217 310 240 311 229 310 b 190 333 202 310 194 315 b 151 412 186 363 171 389 b 102 501 120 452 102 477 b 150 588 102 524 118 547 b 161 603 154 592 158 598 b 181 661 176 622 181 641 b 173 704 181 675 179 690 b 86 795 156 746 121 770 b 53 829 63 811 53 819 b 78 868 53 840 62 851 b 102 888 85 876 94 883 b 180 956 128 912 156 933 b 216 1028 204 979 216 1002 b 203 1081 216 1044 212 1061 b 115 1171 186 1123 148 1145 b 75 1221 88 1191 75 1207 b 114 1272 75 1237 88 1251 b 173 1308 132 1284 154 1296 b 226 1339 190 1318 209 1328 b 265 1405 253 1359 265 1380 b 258 1447 265 1418 264 1431 b 154 1541 242 1499 199 1521 b 109 1581 124 1555 109 1567 b 141 1627 109 1594 121 1608 b 204 1680 163 1646 184 1662 b 233 1742 223 1699 233 1719 b 226 1777 233 1752 230 1764 b 135 1862 210 1822 173 1840 b 104 1895 114 1875 104 1884 b 118 1930 104 1904 109 1914 b 192 2006 135 1961 161 1986 b 206 2029 203 2013 206 2022 b 192 2064 206 2040 197 2052 b 180 2074 187 2071 184 2074 b 156 2061 171 2074 163 2065 b 84 1983 125 2040 102 2013 b 65 1921 71 1961 65 1941 b 88 1853 65 1899 72 1876 b 171 1784 108 1820 138 1801 b 190 1764 184 1777 190 1770 b 174 1741 190 1757 184 1750 b 107 1683 153 1722 128 1704 b 68 1610 81 1659 68 1636 b 88 1548 68 1591 75 1571 b 177 1470 109 1512 141 1489 b 223 1431 209 1453 223 1443 b 179 1390 223 1420 209 1408 b 128 1361 163 1380 145 1371 b 71 1322 108 1348 88 1338 b 32 1253 45 1300 32 1277 b 48 1198 32 1236 37 1218 b 147 1090 71 1152 108 1120 b 174 1057 166 1076 174 1067 b 153 1022 174 1047 167 1037 b 109 982 140 1008 124 995 b 37 919 85 962 59 942 b 9 860 17 899 9 880 b 26 806 9 844 14 827 b 120 717 50 769 84 740 b 138 691 132 708 138 700 b 130 668 138 684 135 677 b 92 618 118 651 105 635 b 59 531 71 589 59 560 b 84 455 59 507 68 481 b 132 386 98 431 115 408 b 148 341 144 372 148 357 b 144 317 148 333 147 324 b 121 305 140 307 131 305 l 98 305 b 82 304 94 304 88 304 l 32 304 b 0 292 10 304 0 302 b 12 266 0 287 4 279 b 60 164 32 233 46 199 b 127 20 84 117 105 68 b 144 0 132 9 137 0 b 161 16 150 0 154 4 z',\n },\n repeat1Bar: {\n x_min: 0,\n x_max: 599.1057280164835,\n y_min: -250,\n y_max: 175,\n ha: 425,\n o: 'm 216 98 b 255 75 236 84 246 75 b 291 104 265 75 274 85 b 323 147 304 117 327 125 b 289 215 323 168 314 184 b 238 252 269 239 253 252 b 187 222 222 252 207 242 b 173 206 183 216 177 212 b 157 170 163 194 157 183 b 174 138 157 160 161 150 b 216 98 189 127 200 109 z m 76 -334 b 181 -285 111 -315 148 -302 b 831 52 396 -168 613 -58 b 863 114 855 63 864 82 b 828 202 855 140 855 176 b 808 213 821 209 815 213 b 793 209 804 213 799 212 l 422 19 b 26 -179 291 -48 164 -124 b 0 -213 10 -186 0 -196 b 3 -232 0 -219 0 -225 b 52 -325 14 -265 37 -294 b 66 -337 55 -331 59 -337 b 76 -334 69 -337 72 -336 z m 769 -360 b 829 -264 779 -360 829 -284 b 769 -176 822 -232 799 -200 b 742 -163 760 -167 750 -163 b 716 -184 733 -163 723 -168 b 683 -228 708 -202 693 -213 b 672 -253 675 -236 672 -245 b 683 -281 672 -262 675 -271 b 752 -353 703 -308 732 -327 b 769 -360 756 -357 763 -360 z',\n },\n repeat2Bars: {\n x_min: 0.008571918423331715,\n x_max: 775,\n y_min: -246.92374029115243,\n y_max: 362.82068246705313,\n ha: 609.7444227582056,\n o: 'm 909 412 b 873 351 906 384 893 367 b 436 50 729 249 585 147 l 91 -179 b 62 -174 76 -189 68 -183 b 12 -96 48 -147 24 -125 b 36 -16 -7 -53 -6 -43 b 220 104 96 24 158 65 b 819 507 425 232 624 369 b 881 495 852 530 861 528 b 909 412 899 469 900 439 z m 333 338 b 302 240 330 307 317 274 b 276 235 297 225 287 228 l 233 269 b 203 376 186 307 183 318 b 225 441 212 397 217 419 b 246 454 228 452 232 458 b 333 338 284 441 333 380 z m 1116 228 b 1067 158 1115 192 1092 174 b 910 59 1015 125 963 92 b 478 -240 762 -33 622 -140 b 311 -350 423 -279 366 -314 b 285 -344 298 -360 289 -356 b 239 -258 272 -314 251 -288 b 261 -196 228 -228 235 -210 b 517 -29 348 -144 436 -91 b 1030 321 681 98 861 202 b 1093 307 1060 343 1076 340 b 1116 228 1107 281 1109 252 z m 1070 -105 b 1020 -210 1057 -143 1038 -176 b 998 -210 1014 -219 1004 -215 l 924 -153 b 913 -88 899 -135 897 -112 b 949 -22 926 -66 939 -45 b 998 -7 960 6 976 9 b 1070 -105 1032 -32 1058 -63 z',\n },\n repeat4Bars: {\n x_min: 0,\n x_max: 1374,\n y_min: -304,\n y_max: 304,\n ha: 608,\n o: 'm 78 -266 b 92 -258 82 -266 88 -264 b 114 -240 98 -251 107 -246 b 638 107 289 -125 467 -14 b 873 271 716 161 793 216 b 907 337 894 285 906 305 b 887 400 901 354 897 379 b 852 438 877 426 867 438 b 814 420 842 438 829 432 b 135 -33 592 262 366 111 b 12 -121 92 -60 48 -84 b 0 -144 4 -128 0 -135 b 4 -160 0 -148 1 -154 b 63 -255 17 -196 45 -223 b 78 -266 68 -262 72 -266 z m 291 148 b 325 223 302 148 308 170 b 333 256 328 235 330 246 b 264 363 330 305 298 336 b 242 373 255 369 248 373 b 220 347 232 373 225 364 b 202 288 216 327 213 305 b 190 252 193 275 190 262 b 222 200 190 232 202 215 b 291 148 264 170 279 148 z m 815 -367 b 829 -359 819 -367 824 -364 b 851 -343 835 -353 844 -347 b 1375 6 1027 -228 1205 -117 l 1610 170 b 1644 235 1632 184 1643 203 b 1626 300 1639 253 1634 276 b 1590 337 1614 325 1604 337 b 1551 320 1580 337 1567 330 b 873 -135 1329 161 1103 10 b 749 -222 829 -161 785 -184 b 737 -245 742 -230 737 -238 b 742 -261 737 -249 739 -255 b 802 -357 755 -297 782 -325 b 815 -367 805 -363 809 -367 z m 396 -360 b 408 -356 400 -360 403 -359 b 609 -223 471 -307 543 -269 b 896 -19 706 -156 795 -81 b 1164 154 985 37 1074 96 b 1214 223 1189 170 1211 187 b 1176 321 1204 253 1205 292 b 1159 330 1169 327 1165 330 b 1145 324 1155 330 1151 328 b 1048 258 1113 302 1081 278 b 357 -202 809 117 598 -65 b 333 -238 341 -212 333 -223 b 338 -262 333 -245 334 -253 b 384 -350 350 -294 372 -318 b 396 -360 386 -354 390 -360 z m 1162 -438 b 1174 -433 1166 -438 1169 -436 b 1374 -300 1237 -384 1309 -346 b 1660 -96 1470 -233 1561 -158 b 1930 76 1751 -39 1840 19 b 1979 147 1954 92 1977 109 b 1943 243 1968 177 1971 216 b 1924 253 1935 251 1930 253 b 1911 248 1920 253 1915 252 b 1814 181 1878 225 1848 202 b 1123 -279 1575 40 1364 -141 b 1099 -315 1106 -289 1099 -300 b 1103 -338 1099 -321 1100 -330 b 1149 -426 1115 -370 1138 -396 b 1162 -438 1151 -432 1156 -438 z m 1875 -295 b 1882 -291 1878 -295 1879 -294 b 1934 -189 1904 -258 1921 -223 b 1872 -96 1925 -147 1901 -120 b 1840 -78 1858 -84 1848 -78 b 1812 -109 1830 -78 1823 -88 l 1777 -173 b 1770 -199 1773 -181 1770 -190 b 1786 -230 1770 -210 1774 -220 b 1862 -289 1809 -253 1837 -269 b 1875 -295 1865 -292 1871 -295 z',\n },\n repeatBarSlash: {\n x_min: 0,\n x_max: 630,\n y_min: -225.19160170741762,\n y_max: 265.12618221237005,\n ha: 490.31778391978764,\n o: 'm 78 -324 b 92 -314 82 -325 88 -321 b 114 -298 96 -307 107 -302 b 638 49 289 -183 467 -72 b 873 215 716 104 792 161 b 907 279 894 229 906 248 b 887 344 901 298 897 321 b 852 382 877 369 867 380 b 814 363 842 383 829 376 b 135 -91 603 192 364 55 b 12 -177 92 -118 45 -137 b 0 -202 4 -186 0 -192 b 4 -217 0 -206 1 -212 b 63 -312 17 -253 42 -284 b 78 -324 68 -318 72 -323 z',\n },\n csymDiminished: {\n x_min: 0,\n x_max: 506,\n y_min: -0.011036179317259481,\n y_max: 500,\n ha: 500.0110361793173,\n o: 'm 397 0 b 729 265 576 -1 729 95 b 711 367 729 297 723 331 b 472 670 668 498 586 595 b 315 720 423 701 372 720 b 253 713 295 720 275 719 b 32 514 144 687 75 615 b 0 374 12 468 0 420 b 27 251 0 333 9 292 b 140 117 52 196 92 153 b 397 0 223 52 317 4 z m 340 95 b 132 314 233 84 122 216 b 324 589 145 438 200 539 b 415 611 360 603 389 611 b 544 505 469 611 505 576 b 590 392 564 471 583 432 b 596 343 593 374 596 359 b 340 95 596 210 485 96 z',\n },\n csymHalfDiminished: {\n x_min: -32,\n x_max: 496,\n y_min: -33,\n y_max: 492,\n ha: 525,\n o: 'm -29 -48 b 0 -36 -19 -48 -9 -40 b 17 -20 7 -32 12 -24 b 134 94 56 19 95 56 b 372 0 207 43 282 0 b 455 13 397 0 426 4 b 677 258 556 45 671 141 b 678 289 677 268 678 278 b 593 539 678 380 654 467 b 592 541 593 540 592 540 l 684 632 b 713 678 700 647 711 665 b 714 691 714 684 714 688 b 707 704 714 698 711 701 b 691 708 701 707 696 708 b 660 691 680 708 670 701 l 552 585 b 478 634 530 606 507 624 b 361 684 438 648 397 661 b 301 703 341 697 320 703 b 226 677 275 703 251 693 b 27 449 140 618 72 543 b 0 324 9 410 -4 370 b 88 128 -1 243 30 177 b -30 -7 43 86 0 46 b -46 -33 -35 -16 -46 -24 b -42 -42 -46 -36 -45 -39 b -29 -48 -37 -46 -33 -48 z m 141 179 b 121 251 128 200 121 225 b 128 297 121 265 124 281 b 351 575 163 420 248 505 b 377 582 359 579 369 580 b 501 536 422 586 468 567 b 141 179 382 416 261 298 z m 281 105 b 179 137 240 105 206 117 b 210 168 189 147 200 157 l 537 487 b 547 455 541 477 544 467 b 556 370 552 426 556 397 b 429 154 556 274 503 207 b 281 105 384 122 336 105 z',\n },\n csymAugmented: {\n x_min: 0,\n x_max: 530,\n y_min: 0,\n y_max: 539,\n ha: 539,\n o: 'm 380 0 b 393 14 384 4 390 9 b 397 46 397 24 397 36 l 397 333 b 736 327 511 331 624 330 b 763 343 755 327 763 333 b 755 361 763 348 760 354 b 635 431 726 402 688 431 l 390 431 l 390 485 b 386 606 392 526 386 566 b 392 664 386 625 387 645 b 395 690 393 672 395 681 b 376 753 395 711 389 734 b 357 776 372 762 369 776 b 350 775 354 776 353 776 b 327 740 337 769 327 759 b 327 621 328 700 327 661 b 330 438 328 559 328 498 l 29 438 b 4 431 20 438 7 442 b 0 413 3 425 0 419 b 7 399 0 408 1 403 b 131 338 45 369 85 340 b 331 334 199 336 265 334 b 333 163 333 276 333 220 b 366 13 333 109 348 63 b 380 0 367 7 374 4 z',\n },\n csymMajorSeventh: {\n x_min: 0,\n x_max: 593.1050509327923,\n y_min: 0,\n y_max: 569,\n ha: 569,\n o: 'm 124 1 l 497 27 b 819 50 605 35 711 43 b 854 98 847 52 855 63 b 812 200 845 128 835 166 b 564 585 730 328 648 456 b 435 786 521 652 480 720 b 397 819 419 809 408 819 b 369 792 387 819 379 811 b 7 173 248 585 128 379 b 0 150 3 166 0 158 b 7 128 0 143 3 135 b 89 10 30 86 65 50 b 109 0 95 1 102 0 z m 163 147 b 153 153 158 147 156 148 b 164 179 147 163 158 170 b 426 644 251 334 338 488 b 442 660 432 655 436 660 b 458 645 446 660 452 655 b 727 220 547 503 636 361 b 736 202 732 213 736 206 b 714 190 736 196 730 192 b 179 148 537 177 359 163 b 163 147 174 150 168 147 z',\n },\n csymMinor: {\n x_min: 0,\n x_max: 481.64484584675915,\n y_min: 193,\n y_max: 265.20435472429375,\n ha: 72.20435472429375,\n o: 'm 168 278 b 197 279 177 278 187 278 b 431 292 275 287 353 288 l 431 291 b 661 302 508 295 585 300 b 693 311 672 304 688 300 b 674 346 697 324 685 338 b 564 382 641 366 606 384 l 27 360 b 0 347 17 360 1 366 b 19 314 0 333 3 321 b 168 278 66 291 115 278 z',\n },\n csymParensLeftTall: {\n x_min: 0,\n x_max: 185,\n y_min: 0,\n y_max: 1034,\n ha: 1034,\n o: 'm 215 0 b 226 17 223 1 223 10 b 229 37 229 24 229 32 b 220 81 229 52 225 66 b 167 203 206 124 181 160 b 86 616 124 338 89 474 b 82 765 85 665 82 716 b 91 886 82 805 84 845 b 245 1319 120 1038 171 1184 b 266 1397 259 1346 266 1371 b 259 1443 266 1411 264 1427 b 226 1489 253 1463 248 1489 b 193 1454 212 1489 203 1467 b 114 1292 158 1404 140 1346 b 0 806 40 1138 0 978 b 3 721 0 779 0 750 b 1 677 1 707 1 693 b 36 418 1 593 16 504 b 144 96 62 307 95 199 b 196 12 158 66 179 39 b 212 0 200 7 204 0 z',\n },\n csymParensRightTall: {\n x_min: -40,\n x_max: 188.5411603861406,\n y_min: 0.20204102886728756,\n y_max: 1058,\n ha: 1057.7979589711326,\n o: 'm 30 1 b 63 14 42 -3 55 6 b 122 99 86 40 108 68 b 189 258 145 153 166 204 b 271 667 239 379 268 503 b 246 852 275 708 261 780 b 10 1495 197 1077 128 1295 b -14 1524 4 1505 1 1524 b -16 1522 -14 1524 -16 1524 b -46 1489 -33 1521 -43 1503 b -58 1417 -53 1464 -58 1440 b -36 1335 -58 1390 -52 1364 b 68 1138 0 1270 35 1204 b 163 883 108 1056 137 969 b 206 668 184 814 200 742 b 207 631 207 655 207 642 b 166 426 207 560 192 492 b 46 143 130 330 111 228 b 19 29 19 109 17 69 b 30 1 20 19 24 3 z',\n },\n csymBracketLeftTall: {\n x_min: 0,\n x_max: 328,\n y_min: 2,\n y_max: 807,\n ha: 805,\n o: 'm 68 3 b 76 4 71 3 73 3 b 186 13 112 12 150 13 b 240 13 204 13 222 13 l 287 13 b 379 17 317 13 348 13 b 472 121 435 24 472 69 b 467 156 472 132 469 144 b 446 174 462 168 456 174 l 439 174 b 327 166 402 167 364 166 b 265 167 307 166 285 167 l 209 167 b 187 475 199 269 189 372 b 166 985 186 645 187 815 l 377 1002 b 415 1001 389 1002 402 1001 b 456 1027 432 1001 448 1005 b 472 1096 467 1048 472 1073 b 464 1146 472 1113 469 1130 b 439 1162 459 1161 452 1162 b 40 1129 305 1151 173 1139 b 1 1093 17 1128 1 1120 b 0 1009 0 1064 0 1037 b 13 975 0 991 3 981 b 30 670 23 873 30 772 b 29 608 30 649 29 628 l 29 563 b 56 88 29 405 49 246 b 53 22 55 66 55 43 b 68 3 53 12 56 3 z',\n },\n csymBracketRightTall: {\n x_min: 0.8519422934604696,\n x_max: 306,\n y_min: -0.17180889215212544,\n y_max: 829.1037519824849,\n ha: 829.2755608746371,\n o: 'm 117 0 b 372 29 203 -3 287 20 l 373 29 b 406 32 383 30 395 30 b 436 60 428 33 432 43 b 441 109 439 76 441 92 b 433 200 441 140 436 170 b 409 696 422 366 409 530 b 416 887 409 763 416 831 b 415 920 416 899 415 910 l 415 1106 b 412 1135 415 1116 415 1126 l 412 1145 b 373 1189 413 1171 408 1192 b 321 1189 356 1189 338 1189 l 215 1189 l 215 1194 l 56 1194 b 6 1153 27 1195 10 1187 b 1 1064 3 1123 4 1093 b 22 1043 0 1050 6 1043 b 84 1044 42 1044 63 1044 b 264 1038 144 1044 203 1040 b 265 958 264 1011 265 985 b 262 845 265 920 264 883 b 259 710 259 801 259 755 b 279 243 259 554 271 399 b 285 170 281 219 284 194 b 95 151 222 161 158 156 b 29 81 27 147 27 147 l 29 73 b 105 0 33 0 33 0 z',\n },\n csymParensLeftVeryTall: {\n x_min: 0,\n x_max: 116,\n y_min: 0,\n y_max: 934.1531437146923,\n ha: 934.1531437146923,\n o: 'm 128 0 b 147 17 137 0 144 9 b 167 102 160 45 167 73 b 158 154 167 120 164 137 b 117 307 141 204 130 256 b 63 698 84 435 71 567 b 62 788 62 729 62 757 b 69 916 62 829 63 873 b 109 1172 81 1001 94 1087 b 132 1320 118 1221 137 1269 b 124 1345 131 1329 134 1342 b 96 1332 114 1346 102 1341 b 71 1269 82 1313 75 1292 b 39 1104 59 1214 48 1159 b 0 742 19 988 0 871 b 10 559 3 688 6 624 b 58 226 16 446 33 336 b 112 20 73 157 94 89 b 128 0 115 13 118 0 z',\n },\n csymParensRightVeryTall: {\n x_min: -20,\n x_max: 111.4332498248095,\n y_min: -0.07657185734616112,\n y_max: 1009,\n ha: 1009.0765718573462,\n o: 'm -3 0 b 20 22 9 -1 14 12 b 36 56 26 33 32 45 b 99 274 58 128 84 199 b 160 788 135 439 163 605 b 122 1181 164 912 145 1047 b 50 1431 108 1267 86 1351 b 36 1453 48 1439 46 1453 l 35 1453 l 30 1453 b 7 1423 17 1449 7 1440 b 27 1287 9 1377 10 1331 b 96 963 71 1184 85 1074 b 105 818 102 914 105 867 b 91 624 105 753 99 688 b -4 213 72 484 48 344 b -29 101 -19 174 -29 138 b -16 27 -29 76 -24 52 b -3 0 -13 17 -14 3 z',\n },\n csymDiagonalArrangementSlash: {\n x_min: -0.19862981551275186,\n x_max: 990,\n y_min: -26.946823529189132,\n y_max: 1027.5514326488437,\n ha: 1054.4982561780328,\n o: 'm 14 -37 b 58 -9 35 -45 46 -22 b 392 333 170 105 279 217 l 765 711 b 1372 1329 968 916 1168 1125 b 1424 1439 1403 1359 1417 1397 b 1426 1457 1424 1444 1426 1450 b 1416 1477 1426 1466 1423 1475 b 1374 1462 1400 1485 1385 1473 b 1181 1269 1309 1397 1246 1331 b 736 831 1031 1122 884 979 b 356 452 609 704 485 576 b 32 132 246 347 143 236 b 0 50 7 109 1 84 b 6 9 -1 37 3 23 b 14 -37 10 -9 0 -32 z',\n },\n accidentalNarrowReversedFlat: {\n x_min: 0,\n x_max: 208,\n y_min: -231,\n y_max: 449,\n ha: 680,\n o: 'm 272 -333 b 284 -320 278 -333 281 -328 b 300 -174 297 -272 300 -222 b 275 190 298 -52 279 68 b 268 445 272 275 268 360 l 268 490 b 264 612 269 530 265 572 b 236 647 264 632 252 645 l 235 647 b 217 618 220 647 220 628 b 207 526 210 588 207 556 b 210 432 207 494 210 464 b 216 268 213 377 215 323 l 216 230 l 215 232 b 154 256 194 240 174 251 b 111 264 138 261 124 264 b 3 153 50 264 10 223 b 0 94 0 132 0 114 b 194 -276 0 -63 68 -186 b 255 -323 215 -291 236 -307 b 272 -333 262 -330 268 -333 z m 233 -138 b 71 30 168 -92 105 -45 b 63 59 65 42 63 50 b 96 95 62 75 73 86 b 130 102 108 99 120 102 b 215 76 160 102 187 88 l 220 73 b 225 -22 220 42 222 10 b 233 -138 229 -62 230 -101 z',\n },\n accidentalNarrowReversedFlatAndFlat: {\n x_min: 0,\n x_max: 335,\n y_min: -231,\n y_max: 449,\n ha: 680,\n o: 'm 151 490 b 148 612 151 530 150 572 b 132 647 148 632 141 645 b 122 618 124 647 124 628 b 117 526 118 588 117 556 b 118 432 117 494 118 464 b 121 268 120 377 121 323 l 121 232 b 86 256 109 240 98 251 b 62 264 78 261 69 264 b 1 153 29 264 6 223 b 0 94 0 132 0 114 b 109 -276 0 -63 37 -186 b 144 -323 121 -291 132 -307 b 153 -333 147 -330 151 -333 b 160 -320 157 -333 158 -328 b 168 -174 167 -272 168 -222 b 154 190 168 -52 157 68 b 151 445 153 275 151 360 z m 480 153 b 372 264 472 223 432 264 b 328 256 359 264 344 261 b 268 232 308 251 288 240 l 266 230 l 266 268 b 272 432 266 323 269 377 b 275 526 272 464 275 494 b 265 618 275 556 272 588 b 248 647 262 628 262 647 l 246 647 b 219 612 230 645 219 632 b 215 490 217 572 213 530 l 215 445 b 207 190 215 360 210 275 b 183 -174 203 68 183 -52 b 199 -320 183 -222 186 -272 b 210 -333 202 -328 204 -333 b 228 -323 215 -333 220 -330 b 288 -276 246 -307 268 -291 b 482 94 415 -186 482 -63 b 480 153 482 114 482 132 z m 40 30 b 36 59 36 42 36 50 b 55 95 35 75 42 86 b 73 102 60 99 68 102 b 121 76 89 102 105 88 l 124 73 b 127 -22 124 42 125 10 l 131 -138 b 40 30 95 -92 60 -43 z m 419 59 b 412 30 419 50 418 42 b 249 -138 374 -43 314 -92 b 258 -22 252 -101 253 -62 b 262 73 261 10 262 42 l 268 76 b 353 102 295 88 323 102 b 386 95 363 102 374 99 b 419 59 409 86 420 75 z',\n },\n accidentalWilsonPlus: {\n x_min: 0,\n x_max: 298,\n y_min: -218,\n y_max: 218,\n ha: 436,\n o: 'm 232 -314 b 236 -301 236 -310 236 -305 l 236 -295 b 243 -52 239 -213 242 -132 l 369 62 b 429 200 413 101 425 147 b 416 243 429 216 428 236 b 383 225 406 251 393 232 l 377 220 b 246 98 336 177 291 138 b 249 242 248 145 246 193 b 225 304 251 265 242 287 b 209 314 220 308 215 314 b 204 312 207 314 206 312 b 196 292 196 310 196 300 b 193 184 194 256 194 220 b 187 48 192 140 190 94 b 46 -72 141 7 94 -32 b 0 -163 13 -98 0 -127 b 1 -187 0 -170 0 -179 b 10 -235 4 -203 6 -219 b 20 -255 12 -242 14 -251 b 36 -245 26 -259 30 -249 b 181 -109 85 -200 132 -154 b 176 -258 180 -158 176 -209 b 232 -314 176 -298 186 -307 z',\n },\n accidentalWilsonMinus: {\n x_min: 0,\n x_max: 284.2093390143919,\n y_min: -163,\n y_max: 163,\n ha: 326,\n o: 'm 386 -232 b 409 -163 415 -222 408 -180 b 382 -69 410 -120 408 -89 b 32 228 264 30 141 118 b 17 235 26 233 22 235 b 3 219 9 235 3 228 b 0 157 3 199 0 179 b 29 69 0 125 6 95 b 323 -194 115 -29 222 -111 b 374 -235 338 -206 353 -235 b 386 -232 377 -235 382 -233 z',\n },\n },\n fontFamily: 'Petaluma',\n resolution: 1000,\n generatedOn: '2022-06-26T17:47:23.560Z',\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { PetalumaFont } from '../src/fonts/petaluma_glyphs';\nimport { PetalumaMetrics } from '../src/fonts/petaluma_metrics';\nexport const Font = {\n data: PetalumaFont,\n metrics: PetalumaMetrics,\n};\nexport default Font;\n","/**\n * The Petaluma font was created by Steinberg Media.\n * https://github.com/steinbergmedia/petaluma\n */\nexport const PetalumaMetrics = {\n name: 'Petaluma',\n smufl: true,\n stave: {\n padding: 15,\n endPaddingMax: 15,\n endPaddingMin: 7,\n unalignedNotePadding: 12,\n },\n accidental: {\n noteheadAccidentalPadding: 1,\n leftPadding: 2,\n accidentalSpacing: 3,\n },\n clef: {\n default: {\n point: 32,\n width: 26,\n },\n small: {\n point: 26,\n width: 20,\n },\n annotations: {\n '8va': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: -1.4,\n shiftX: 12,\n },\n },\n small: {\n point: 16,\n treble: {\n line: -0.2,\n shiftX: 8,\n },\n },\n },\n '8vb': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: 6,\n shiftX: 10,\n },\n bass: {\n line: 3.5,\n shiftX: 1,\n },\n },\n small: {\n point: 16,\n treble: {\n line: 5.3,\n shiftX: 6,\n },\n bass: {\n line: 3.1,\n shiftX: 0.5,\n },\n },\n },\n },\n // These may no longer be necessary\n lineCount: {\n '8': { point: 55, shiftY: 14 },\n '7': { point: 47, shiftY: 8 },\n '6': { point: 32, shiftY: 1 },\n '5': { point: 30, shiftY: -6 },\n '4': { point: 23, shiftY: -12 },\n },\n },\n parenthesis: {\n default: {\n point: 39,\n width: 7,\n },\n gracenote: {\n point: (39 * 3) / 5,\n width: 3,\n },\n },\n pedalMarking: {\n up: {\n point: 40,\n },\n down: {\n point: 34,\n },\n },\n // These are for numeric digits, such as in time signatures\n digits: {\n // used by timesig\n shiftLine: -1,\n point: 22,\n // used by tuplets\n tupletPoint: 16,\n shiftY: -2,\n },\n articulation: {\n articStaccatissimoAbove: {\n padding: 2,\n },\n articStaccatissimoBelow: {\n padding: 2,\n },\n },\n tremolo: {\n default: {\n point: 25,\n spacing: 5,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 13,\n offsetXStemDown: 1,\n },\n grace: {\n point: 18,\n spacing: 4,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 8,\n offsetXStemDown: 1,\n },\n },\n staveRepetition: {\n symbolText: {\n offsetX: 12,\n offsetY: 25,\n spacing: 5,\n },\n coda: {\n offsetY: 25,\n },\n segno: {\n offsetY: 10,\n },\n },\n noteHead: {\n displaced: {\n shiftX: -2,\n },\n },\n stem: {\n heightAdjustmentForFlag: -3,\n // These are stem (Y) offsets to the note heads. To shift the\n // noteheads (x-position) themselves, see glyphs.notehead.custom.\n noteHead: {\n noteheadTriangleUpHalf: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpBlack: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpWhole: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadXHalf: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXBlack: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXWhole: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadHalf: {\n offsetYBaseStemDown: 1.8,\n offsetYBaseStemUp: -1.8,\n },\n noteheadBlack: {\n offsetYBaseStemDown: 2,\n offsetYBaseStemUp: -2,\n },\n noteheadSquareWhite: {\n offsetYBaseStemDown: -5,\n offsetYBaseStemUp: 5,\n },\n },\n },\n // Values under here are used by the Glyph class to reposition and rescale\n // glyphs based on their category. This should be the first stop for\n // custom font glyph repositioning.\n //\n // The glyph loader first looks up a specific set of settings based on the\n // glyph code, and if not found, uses the defaults from the category. See\n // glyphs.textNote for an example of this.\n //\n // Details in Glyph.lookupFontMetrics.\n glyphs: {\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n segno: {\n shiftX: -7,\n },\n flag: {\n shiftX: -0.77,\n flag16thUp: {\n shiftX: -0.75,\n },\n flag32ndUp: {\n shiftX: -0.85,\n },\n flag64thUp: {\n shiftX: -1.55,\n },\n flag128thUp: {\n shiftX: -1.3,\n },\n flag16thDown: {\n shiftX: -0.75,\n },\n flag32ndDown: {\n shiftX: -0.76,\n },\n flag64thDown: {\n shiftX: -1.5,\n },\n flag128thDown: {\n shiftX: -1.2,\n },\n staveTempo: {\n shiftX: -1,\n },\n },\n clef: {\n gClef: {\n default: { scale: 1.1, shiftY: 1 },\n small: { shiftY: 1.5 },\n },\n fClef: {\n default: { shiftY: -0.5 },\n },\n },\n ornament: {\n ornamentTurn: {\n scale: 1.2,\n },\n ornamentTurnSlash: {\n scale: 1.2,\n },\n },\n stringNumber: {\n verticalPadding: 8,\n stemPadding: 2,\n leftPadding: 5,\n rightPadding: 6,\n },\n stroke: {\n arrowheadBlackDown: {\n straight: {\n shiftX: -4.5,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n arrowheadBlackUp: {\n straight: {\n shiftX: -0.85,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n },\n textNote: {\n point: 34,\n breathMarkTick: {\n point: 36,\n shiftY: 9,\n },\n breathMarkComma: {\n point: 36,\n },\n segno: {\n point: 30,\n shiftX: -7,\n shiftY: 8,\n },\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n ornamentTrill: {\n shiftX: -10,\n shiftY: 8,\n },\n ornamentMordent: {\n shiftX: -8,\n },\n ornamentShortTrill: {\n shiftX: -8,\n },\n },\n noteHead: {\n minPadding: 2,\n standard: {\n noteheadBlackStemUp: {\n shiftX: 0.5,\n },\n noteheadHalfStemUp: {\n shiftX: 0.725,\n },\n noteheadWholeStemUp: {\n shiftX: 1,\n },\n },\n custom: {\n noteheadCircleXStemUp: {\n shiftX: -1,\n },\n noteheadCircleXStemDown: {\n shiftX: 0.25,\n },\n noteheadDiamondHalfStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondBlackStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondWholeStemUp: {\n shiftX: 1,\n },\n noteheadXBlackStemUp: {\n shiftX: 1,\n },\n noteheadXHalfStemUp: {\n shiftX: -3,\n },\n noteheadXHalfStemDown: {\n shiftX: 1,\n },\n noteheadXWholeStemUp: {\n shiftX: -7,\n },\n noteheadXWholeStemDown: {\n shiftX: 1,\n },\n noteheadXDoubleWholeStemUp: {\n shiftX: -12,\n },\n noteheadXDoubleWholeStemDown: {\n shiftX: -4,\n },\n noteheadSquareWhiteStemDown: {\n shiftX: 0.25,\n },\n noteheadSquareWhiteStemUp: {\n shiftX: -0.75,\n },\n noteheadSquareBlackStemUp: {\n shiftX: -0.75,\n },\n noteheadTriangleUpWholeStemUp: {\n shiftX: -0.75,\n },\n },\n },\n chordSymbol: {\n global: {\n superscriptOffset: -400,\n subscriptOffset: 300,\n kerningOffset: -150,\n lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'],\n upperKerningText: ['L'],\n spacing: 20,\n superSubRatio: 0.73,\n },\n csymDiminished: {\n scale: 0.8,\n leftSideBearing: -95,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymHalfDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymAugmented: {\n scale: 1,\n leftSideBearing: -25,\n advanceWidth: 530,\n yOffset: 0,\n },\n csymParensLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 155,\n yOffset: 150,\n },\n csymParensRightTall: {\n scale: 0.8,\n leftSideBearing: 40,\n advanceWidth: 189,\n yOffset: 150,\n },\n csymBracketLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 328,\n yOffset: 0,\n },\n csymBracketRightTall: {\n scale: 0.8,\n leftSideBearing: 1,\n advanceWidth: 600,\n yOffset: 0,\n },\n csymParensLeftVeryTall: {\n scale: 0.95,\n leftSideBearing: 0,\n advanceWidth: 210,\n yOffset: 250,\n },\n csymParensRightVeryTall: {\n scale: 0.9,\n leftSideBearing: -100,\n advanceWidth: 111,\n yOffset: 250,\n },\n csymDiagonalArrangementSlash: {\n scale: 0.6,\n leftSideBearing: -1,\n advanceWidth: 990,\n yOffset: 0,\n },\n csymMinor: {\n scale: 0.7,\n leftSideBearing: 0,\n advanceWidth: 482,\n yOffset: 0,\n },\n csymMajorSeventh: {\n scale: 0.8,\n leftSideBearing: 100,\n yOffset: 0,\n advanceWidth: 600,\n },\n accidentalSharp: {\n scale: 0.7,\n leftSideBearing: 0,\n advanceWidth: 425,\n yOffset: -422,\n },\n accidentalFlat: {\n scale: 0.8,\n leftSideBearing: -10,\n advanceWidth: 228,\n yOffset: -284,\n },\n },\n jazzOrnaments: {\n brassScoop: {\n scale: 1.0,\n xOffset: -12,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassDoitMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 19,\n },\n brassFallLipShort: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 19,\n },\n brassLiftMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 5,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassFallRoughMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 26,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassBend: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -8,\n stemUpYOffset: 28,\n reportedWidth: 5,\n },\n brassMuteClosed: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -8,\n stemUpYOffset: 26,\n reportedWidth: 5,\n },\n brassMuteOpen: {\n scale: 1.0,\n xOffset: 4,\n yOffset: -8,\n stemUpYOffset: 27,\n reportedWidth: 5,\n },\n brassFlip: {\n scale: 1.0,\n xOffset: 10,\n yOffset: -4,\n stemUpYOffset: 7,\n reportedWidth: 5,\n },\n brassJazzTurn: {\n scale: 1.0,\n xOffset: 6,\n yOffset: -4,\n stemUpYOffset: 5,\n reportedWidth: 30,\n },\n brassSmear: {\n scale: 1.0,\n xOffset: 10,\n yOffset: -4,\n stemUpYOffset: 5,\n reportedWidth: 5,\n },\n },\n tuplet: {\n noteHeadOffset: 20,\n stemOffset: 10,\n bottomLine: 4,\n topModifierOffset: 20,\n },\n },\n};\n"],"names":["root","factory","exports","module","define","amd","window","globalThis","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","data","glyphs","bracketTop","x_min","x_max","y_min","y_max","ha","bracketBottom","barlineTick","breathMarkTick","segno","coda","gClef","cClef","fClef","unpitchedPercussionClef1","timeSig0","timeSig1","timeSig2","timeSig3","timeSig4","timeSig5","timeSig6","timeSig7","timeSig8","timeSig9","timeSigCommon","timeSigCutCommon","timeSigPlus","timeSigPlusSmall","timeSigMinus","timeSigParensRight","timeSigParensRightSmall","timeSigParensLeft","timeSigParensLeftSmall","noteheadDoubleWhole","noteheadWhole","noteheadHalf","noteheadBlack","noteheadXDoubleWhole","noteheadXWhole","noteheadXHalf","noteheadXBlack","noteheadCircleXDoubleWhole","noteheadCircleXWhole","noteheadCircleXHalf","noteheadCircleX","noteheadCircledDoubleWhole","noteheadCircledWhole","noteheadCircledHalf","noteheadCircledBlack","noteheadDoubleWholeSquare","noteheadSquareWhite","noteheadSquareBlack","noteheadTriangleDownDoubleWhole","noteheadTriangleDownWhole","noteheadTriangleDownHalf","noteheadTriangleDownBlack","noteheadTriangleUpDoubleWhole","noteheadTriangleUpWhole","noteheadTriangleUpHalf","noteheadTriangleUpBlack","noteheadSlashedDoubleWhole1","noteheadSlashedWhole1","noteheadSlashedHalf1","noteheadSlashedBlack1","noteheadSlashedDoubleWhole2","noteheadSlashedWhole2","noteheadSlashedHalf2","noteheadSlashedBlack2","noteheadDiamondDoubleWhole","noteheadDiamondWhole","noteheadDiamondHalf","noteheadDiamondBlack","noteheadParenthesis","noteheadParenthesisRight","noteheadParenthesisLeft","noteheadMoonBlack","noteheadTriangleLeftBlack","noteheadTriangleRightBlack","noteheadTriangleRoundDownBlack","augmentationDot","tremolo1","flag8thUp","flag8thDown","flag16thUp","flag16thDown","flag32ndUp","flag32ndDown","flag64thUp","flag64thDown","flag128thUp","flag128thDown","accidentalFlat","accidentalNatural","accidentalSharp","accidentalDoubleSharp","accidentalDoubleFlat","accidentalParensLeft","accidentalParensRight","accidentalQuarterToneFlatStein","accidentalThreeQuarterTonesFlatZimmermann","accidentalQuarterToneSharpStein","accidentalThreeQuarterTonesSharpStein","accidentalBuyukMucennebFlat","accidentalBakiyeFlat","accidentalKomaSharp","accidentalKucukMucennebSharp","accidentalKoron","accidentalSori","articAccentAbove","articAccentBelow","articTenutoAbove","articTenutoBelow","articStaccatoAbove","articStaccatoBelow","articStaccatissimoAbove","articStaccatissimoBelow","articMarcatoAbove","articMarcatoBelow","fermataAbove","fermataBelow","fermataLongAbove","fermataLongBelow","fermataVeryLongAbove","fermataVeryLongBelow","fermataShortAbove","fermataShortBelow","breathMarkComma","breathMarkUpbow","caesura","caesuraCurved","restMaxima","restDoubleWhole","restWhole","restWholeLegerLine","restHalf","restHalfLegerLine","restQuarter","rest8th","rest16th","rest32nd","rest64th","rest128th","dynamicPiano","dynamicMezzo","dynamicForte","dynamicRinforzando","dynamicSforzando","dynamicZ","ornamentTrill","ornamentTurn","ornamentTurnSlash","ornamentMordent","ornamentShortTrill","ornamentTremblement","ornamentPrecompAppoggTrill","ornamentPrecompSlideTrillDAnglebert","ornamentPrecompSlideTrillBach","ornamentPrecompTrillSuffixDandrieu","ornamentPrecompDoubleCadenceUpperPrefix","ornamentPrecompDoubleCadenceUpperPrefixTurn","ornamentPrecompTrillLowerSuffix","brassScoop","brassDoitMedium","brassFallLipShort","brassLiftMedium","brassFallRoughMedium","brassBend","brassMuteClosed","brassMuteOpen","brassFlip","brassJazzTurn","brassSmear","stringsDownBow","stringsUpBow","stringsHarmonic","pluckedSnapPizzicatoAbove","pluckedSnapPizzicatoBelow","pluckedLeftHandPizzicato","keyboardPedalPed","keyboardPedalUp","pictChokeCymbal","wiggleArpeggiatoUp","arpeggiatoUp","arpeggiatoDown","repeat1Bar","repeat2Bars","repeat4Bars","repeatBarSlash","csymDiminished","csymHalfDiminished","csymAugmented","csymMajorSeventh","csymMinor","csymParensLeftTall","csymParensRightTall","csymBracketLeftTall","csymBracketRightTall","csymParensLeftVeryTall","csymParensRightVeryTall","csymDiagonalArrangementSlash","accidentalNarrowReversedFlat","accidentalNarrowReversedFlatAndFlat","accidentalWilsonPlus","accidentalWilsonMinus","fontFamily","resolution","generatedOn","metrics","name","smufl","stave","padding","endPaddingMax","endPaddingMin","unalignedNotePadding","accidental","noteheadAccidentalPadding","leftPadding","accidentalSpacing","clef","default","point","width","small","annotations","smuflCode","treble","line","shiftX","bass","lineCount","shiftY","parenthesis","gracenote","pedalMarking","up","down","digits","shiftLine","tupletPoint","articulation","tremolo","spacing","offsetYStemUp","offsetYStemDown","offsetXStemUp","offsetXStemDown","grace","staveRepetition","symbolText","offsetX","offsetY","noteHead","displaced","stem","heightAdjustmentForFlag","offsetYBaseStemUp","offsetYBaseStemDown","flag","staveTempo","scale","ornament","stringNumber","verticalPadding","stemPadding","rightPadding","stroke","arrowheadBlackDown","straight","wiggly","arrowheadBlackUp","textNote","minPadding","standard","noteheadBlackStemUp","noteheadHalfStemUp","noteheadWholeStemUp","custom","noteheadCircleXStemUp","noteheadCircleXStemDown","noteheadDiamondHalfStemUp","noteheadDiamondBlackStemUp","noteheadDiamondWholeStemUp","noteheadXBlackStemUp","noteheadXHalfStemUp","noteheadXHalfStemDown","noteheadXWholeStemUp","noteheadXWholeStemDown","noteheadXDoubleWholeStemUp","noteheadXDoubleWholeStemDown","noteheadSquareWhiteStemDown","noteheadSquareWhiteStemUp","noteheadSquareBlackStemUp","noteheadTriangleUpWholeStemUp","chordSymbol","global","superscriptOffset","subscriptOffset","kerningOffset","lowerKerningText","upperKerningText","superSubRatio","leftSideBearing","advanceWidth","yOffset","jazzOrnaments","xOffset","stemUpYOffset","reportedWidth","tuplet","noteHeadOffset","stemOffset","bottomLine","topModifierOffset"],"sourceRoot":""} \ No newline at end of file diff --git a/build/cjs/vexflow-gonville.js b/build/cjs/vexflow-gonville.js new file mode 100644 index 0000000000..f584504ce0 --- /dev/null +++ b/build/cjs/vexflow-gonville.js @@ -0,0 +1,7 @@ +/*! + * VexFlow 4.1.0-alpha.0 2022-10-10T04:47:38.237Z 847bc9014672858aedc7f8460384f51f98d6bd84 + * Copyright (c) 2010 Mohit Muthanna Cheppudira + * https://www.vexflow.com https://github.com/0xfe/vexflow + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Vex=e():t.Vex=e()}("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:this,(function(){return(()=>{"use strict";var t={d:(e,i)=>{for(var s in i)t.o(i,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:i[s]})}};t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),t.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),t.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var e={};t.d(e,{default:()=>i});var i={};function s(t,e,i=!0){if("object"!=typeof t||null===t)return!1;let s=t.constructor;if(i){for(;null!==t;){if(s=t.constructor,"CATEGORY"in s&&s.CATEGORY===e)return!0;t=Object.getPrototypeOf(t)}return!1}return"CATEGORY"in s&&s.CATEGORY===e}t.r(i),t.d(i,{Accidental:()=>it,Annotation:()=>ct,AnnotationHorizontalJustify:()=>ht,AnnotationVerticalJustify:()=>lt,Articulation:()=>ft,BEAM_BOTH:()=>Re,BEAM_LEFT:()=>Fe,BEAM_RIGHT:()=>Be,BarNote:()=>At,Barline:()=>Nt,BarlineType:()=>wt,Beam:()=>Oe,Bend:()=>Pt,BoundingBox:()=>C,BoundingBoxComputation:()=>k,Builder:()=>ze,CanvasContext:()=>qt,Category:()=>u,ChordSymbol:()=>Ft,ChordSymbolHorizontalJustify:()=>vt,ChordSymbolVerticalJustify:()=>Et,Clef:()=>be,ClefNote:()=>Le,Crescendo:()=>Ie,Curve:()=>Ge,CurvePosition:()=>We,Dot:()=>Bt,EasyScore:()=>qe,EasyScoreGrammar:()=>Xe,Element:()=>O,Factory:()=>Ti,Flow:()=>Ai,Font:()=>F,FontStyle:()=>N,FontWeight:()=>D,Formatter:()=>Ne,Fraction:()=>v,FretHandFinger:()=>Rt,GhostNote:()=>Ze,Glyph:()=>Q,GlyphNote:()=>ti,GraceNote:()=>ei,GraceNoteGroup:()=>jt,GraceTabNote:()=>wi,KeyManager:()=>vi,KeySigNote:()=>ii,KeySignature:()=>ge,Modifier:()=>Z,ModifierContext:()=>de,ModifierPosition:()=>$,MultiMeasureRest:()=>ni,Music:()=>tt,Note:()=>yt,NoteHead:()=>Ot,NoteSubGroup:()=>Xt,Ornament:()=>zt,OutlineCode:()=>K,Parenthesis:()=>Kt,Parser:()=>He,PedalMarking:()=>oi,Piece:()=>Ve,Registry:()=>R,RenderContext:()=>_t,Renderer:()=>oe,RendererBackends:()=>ie,RendererLineEndType:()=>se,RepeatNote:()=>hi,Repetition:()=>me,RuntimeError:()=>p,SVGContext:()=>ee,Stave:()=>ve,StaveConnector:()=>Ce,StaveHairpin:()=>Ei,StaveLine:()=>ci,StaveModifier:()=>Dt,StaveModifierPosition:()=>Tt,StaveNote:()=>Wt,StaveSection:()=>ue,StaveTempo:()=>pe,StaveText:()=>_e,StaveTie:()=>Gt,Stem:()=>st,StemmableNote:()=>Lt,StringNumber:()=>re,Stroke:()=>he,SymbolModifiers:()=>kt,SymbolTypes:()=>Ct,System:()=>di,TabNote:()=>bi,TabSlide:()=>Ci,TabStave:()=>gi,TabTie:()=>Ut,TextBracket:()=>pi,TextBracketPosition:()=>ui,TextDynamics:()=>_i,TextFormatter:()=>rt,TextJustification:()=>ne,TextNote:()=>fe,TickContext:()=>Vt,Tickable:()=>St,TimeSigNote:()=>xi,TimeSignature:()=>ye,TimeSignatureGlyph:()=>Se,Tremolo:()=>ki,Tuning:()=>Di,Tuplet:()=>Pe,TupletLocation:()=>Ae,Vex:()=>Li,Vibrato:()=>le,VibratoBracket:()=>Si,Voice:()=>Ht,VoiceMode:()=>Yt,Volta:()=>xe,VoltaType:()=>ae,defined:()=>_,drawDot:()=>xt,globalObject:()=>f,isAccidental:()=>n,isAnnotation:()=>a,isBarline:()=>o,isCategory:()=>s,isDot:()=>r,isGraceNote:()=>h,isGraceNoteGroup:()=>l,isHTMLCanvas:()=>$t,isHTMLDiv:()=>Jt,isNote:()=>c,isRenderContext:()=>d,isStaveNote:()=>b,isStemmableNote:()=>g,isTabNote:()=>m,log:()=>x,midLine:()=>y,normalizeAngle:()=>w,prefix:()=>T,warn:()=>S});const n=t=>s(t,u.Accidental),a=t=>s(t,u.Annotation),o=t=>s(t,u.Barline),r=t=>s(t,u.Dot),h=t=>s(t,u.GraceNote),l=t=>s(t,u.GraceNoteGroup),c=t=>s(t,u.Note),d=t=>s(t,u.RenderContext),b=t=>s(t,u.StaveNote),g=t=>s(t,u.StemmableNote),m=t=>s(t,u.TabNote);var u;!function(t){t.Accidental="Accidental",t.Annotation="Annotation",t.Articulation="Articulation",t.Barline="Barline",t.BarNote="BarNote",t.Beam="Beam",t.Bend="Bend",t.ChordSymbol="ChordSymbol",t.Clef="Clef",t.ClefNote="ClefNote",t.Crescendo="Crescendo",t.Curve="Curve",t.Dot="Dot",t.Element="Element",t.Fraction="Fraction",t.FretHandFinger="FretHandFinger",t.GhostNote="GhostNote",t.Glyph="Glyph",t.GlyphNote="GlyphNote",t.GraceNote="GraceNote",t.GraceNoteGroup="GraceNoteGroup",t.GraceTabNote="GraceTabNote",t.KeySignature="KeySignature",t.KeySigNote="KeySigNote",t.Modifier="Modifier",t.MultiMeasureRest="MultiMeasureRest",t.Note="Note",t.NoteHead="NoteHead",t.NoteSubGroup="NoteSubGroup",t.Ornament="Ornament",t.Parenthesis="Parenthesis",t.PedalMarking="PedalMarking",t.RenderContext="RenderContext",t.RepeatNote="RepeatNote",t.Repetition="Repetition",t.Stave="Stave",t.StaveConnector="StaveConnector",t.StaveHairpin="StaveHairpin",t.StaveLine="StaveLine",t.StaveModifier="StaveModifier",t.StaveNote="StaveNote",t.StaveSection="StaveSection",t.StaveTempo="StaveTempo",t.StaveText="StaveText",t.StaveTie="StaveTie",t.Stem="Stem",t.StemmableNote="StemmableNote",t.StringNumber="StringNumber",t.Stroke="Stroke",t.System="System",t.TabNote="TabNote",t.TabSlide="TabSlide",t.TabStave="TabStave",t.TabTie="TabTie",t.TextBracket="TextBracket",t.TextDynamics="TextDynamics",t.TextNote="TextNote",t.Tickable="Tickable",t.TimeSignature="TimeSignature",t.TimeSigNote="TimeSigNote",t.Tremolo="Tremolo",t.Tuplet="Tuplet",t.Vibrato="Vibrato",t.VibratoBracket="VibratoBracket",t.Voice="Voice",t.Volta="Volta"}(u||(u={}));class p extends Error{constructor(t,e=""){super("[RuntimeError] "+t+": "+e),this.code=t}}function f(){return"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==t.g?t.g:Function("return this")()}function _(t,e="undefined",i=""){if(void 0===t)throw new p(e,i);return t}function x(t,...e){if(!e)return;const i=Array.prototype.slice.call(e).join(" ");f().console.log(t+": "+i)}function S(...t){const e=t.join(" "),i=new Error;f().console.log("Warning: ",e,i.stack)}function y(t,e){let i=e+(t-e)/2;var s,n;return i%2>0&&(i=((s=10*i)%(n=5)>=n/2?parseInt(""+s/n,10)*n+n:parseInt(""+s/n,10)*n)/10),i}function T(t){return`vf-${t}`}function w(t){return(t%=2*Math.PI)<0&&(t+=2*Math.PI),t}class v{constructor(t,e){this.numerator=1,this.denominator=1,this.set(t,e)}static get CATEGORY(){return u.Fraction}static GCD(t,e){if("number"!=typeof t||Number.isNaN(t)||"number"!=typeof e||Number.isNaN(e))throw new p("BadArgument",`Invalid numbers: ${t}, ${e}`);let i;for(;0!==e;)i=e,e=t%e,t=i;return t}static LCM(t,e){return t*e/v.GCD(t,e)}static LCMM(t){return 0===t.length?0:1===t.length?t[0]:2===t.length?v.LCM(t[0],t[1]):v.LCM(t.shift(),v.LCMM(t))}set(t=1,e=1){return this.numerator=t,this.denominator=e,this}value(){return this.numerator/this.denominator}simplify(){let t=this.numerator,e=this.denominator;const i=v.GCD(t,e);return t/=i,e/=i,e<0&&(e=-e,t=-t),this.set(t,e)}add(t=0,e=1){const[i,s]=E(t,e),n=v.LCM(this.denominator,s),a=n/this.denominator,o=n/s,r=this.numerator*a+i*o;return this.set(r,n)}subtract(t=0,e=1){const[i,s]=E(t,e),n=v.LCM(this.denominator,s),a=n/this.denominator,o=n/s,r=this.numerator*a-i*o;return this.set(r,n)}multiply(t=1,e=1){const[i,s]=E(t,e);return this.set(this.numerator*i,this.denominator*s)}divide(t=1,e=1){const[i,s]=E(t,e);return this.set(this.numerator*s,this.denominator*i)}equals(t){const e=v.__staticFractionA.copy(t).simplify(),i=v.__staticFractionB.copy(this).simplify();return e.numerator===i.numerator&&e.denominator===i.denominator}greaterThan(t){const e=v.__staticFractionB.copy(this);return e.subtract(t),e.numerator>0}greaterThanEquals(t){const e=v.__staticFractionB.copy(this);return e.subtract(t),e.numerator>=0}lessThan(t){return!this.greaterThanEquals(t)}lessThanEquals(t){return!this.greaterThan(t)}clone(){return new v(this.numerator,this.denominator)}copy(t){return"number"==typeof t?this.set(t,1):this.set(t.numerator,t.denominator)}quotient(){return Math.floor(this.numerator/this.denominator)}remainder(){return this.numerator%this.denominator}makeAbs(){return this.denominator=Math.abs(this.denominator),this.numerator=Math.abs(this.numerator),this}toString(){return`${this.numerator}/${this.denominator}`}toSimplifiedString(){return v.__staticFractionTmp.copy(this).simplify().toString()}toMixedString(){let t="";const e=this.quotient(),i=v.__staticFractionTmp.copy(this);return e<0&&i.makeAbs(),0!==e?(t+=e,0!==i.numerator&&(t+=` ${i.toSimplifiedString()}`)):t=0===i.numerator?"0":i.toSimplifiedString(),t}parse(t){const e=t.split("/"),i=parseInt(e[0],10),s=e[1]?parseInt(e[1],10):1;return this.set(i,s)}}function E(t,e=1){return"number"==typeof t?[t,e]:[t.numerator,t.denominator]}v.__staticFractionA=new v,v.__staticFractionB=new v,v.__staticFractionTmp=new v;class C{constructor(t,e,i,s){this.x=t,this.y=e,this.w=i,this.h=s}static copy(t){return new C(t.x,t.y,t.w,t.h)}getX(){return this.x}getY(){return this.y}getW(){return this.w}getH(){return this.h}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setW(t){return this.w=t,this}setH(t){return this.h=t,this}move(t,e){return this.x+=t,this.y+=e,this}clone(){return C.copy(this)}mergeWith(t){const e=t,i=this.xthis.x2)&&(this.x2=t),(isNaN(this.y1)||ethis.y2)&&(this.y2=e)}addX(t){this.addPoint(t,this.y1)}addY(t){this.addPoint(this.x1,t)}addQuadraticCurve(t,e,i,s,n,a){this.addPoint(t,e),this.addPoint(n,a);const o=i-t;let r=o-(n-i);if(0!=r){const e=o/r;if(e>0&&e<1){const s=1-e;this.addX(s*s*t+2*s*e*i+e*e*n)}}const h=s-e;if(r=h-(a-s),0!=r){const t=h/r;if(t>0&&t<1){const i=1-t;this.addY(i*i*e+2*i*t*s+t*t*a)}}}addBezierCurve(t,e,i,s,n,a,o,r){const h=[t,e],l=[i,s],c=[n,a],d=[o,r];let b;this.addPoint(h[0],h[1]),this.addPoint(d[0],d[1]);const g=(t,e)=>Math.pow(1-t,3)*h[e]+3*Math.pow(1-t,2)*t*l[e]+3*(1-t)*Math.pow(t,2)*c[e]+Math.pow(t,3)*d[e];for(b=0;b<=1;b++){const t=6*h[b]-12*l[b]+6*c[b],e=-3*h[b]+9*l[b]-9*c[b]+3*d[b],i=3*l[b]-3*h[b];if(0===e){if(0===t)continue;const e=-i/t;0=600;{const e=parseInt(t,10);return isNaN(e)?"bold"===t.toLowerCase():e>=600}}return!1}static isItalic(t){return!!t&&t.toLowerCase()===N.ITALIC}static loadWebFont(t,e,i=!0){return A(this,void 0,void 0,(function*(){const s=new FontFace(t,(i?`url(${e}2) format('woff2'), `:"")+`url(${e}) format('woff')`);return yield s.load(),document.fonts.add(s),s}))}static loadWebFonts(){return A(this,void 0,void 0,(function*(){const t=F.WEB_FONT_HOST,e=F.WEB_FONT_FILES;for(const i in e){const s=e[i];F.loadWebFont(i,t+s)}}))}static load(t,e,i){let s=M[t];return s||(s=new F(t),M[t]=s),e&&s.setData(e),i&&s.setMetrics(i),s}getName(){return this.name}getData(){return _(this.data,"FontError","Missing font data")}getMetrics(){return _(this.metrics,"FontError","Missing metrics")}setData(t){this.data=t}setMetrics(t){this.metrics=t}hasData(){return void 0!==this.data}getResolution(){return this.getData().resolution}getGlyphs(){return this.getData().glyphs}lookupMetric(t,e){const i=t.split(".");let s=this.getMetrics();for(let t=0;tt[e]))}}return[]}getElementsByType(t){return this.getElementsByAttribute("type",t)}getElementsByClass(t){return this.getElementsByAttribute("class",t)}onUpdate(t){return["id","type","class"].includes(t.name)&&this.updateIndex(t),this}}class O{constructor(){var t;this.children=[],this.attrs={id:O.newID(),el:void 0,type:this.getCategory(),classes:{}},this.rendered=!1,null===(t=R.getDefaultRegistry())||void 0===t||t.register(this)}static get CATEGORY(){return u.Element}static newID(){return"auto"+O.ID++}addChildElement(t){return this.children.push(t),this}getCategory(){return this.constructor.CATEGORY}setStyle(t){return this.style=t,this}setGroupStyle(t){return this.style=t,this.children.forEach((e=>e.setGroupStyle(t))),this}getStyle(){return this.style}applyStyle(t=this.context,e=this.getStyle()){return e&&t?(t.save(),e.shadowColor&&t.setShadowColor(e.shadowColor),e.shadowBlur&&t.setShadowBlur(e.shadowBlur),e.fillStyle&&t.setFillStyle(e.fillStyle),e.strokeStyle&&t.setStrokeStyle(e.strokeStyle),e.lineWidth&&t.setLineWidth(e.lineWidth),this):this}restoreStyle(t=this.context,e=this.getStyle()){return e&&t?(t.restore(),this):this}drawWithStyle(){this.checkContext(),this.applyStyle(),this.draw(),this.restoreStyle()}hasClass(t){return!0===this.attrs.classes[t]}addClass(t){var e;return this.attrs.classes[t]=!0,null===(e=this.registry)||void 0===e||e.onUpdate({id:this.attrs.id,name:"class",value:t,oldValue:void 0}),this}removeClass(t){var e;return delete this.attrs.classes[t],null===(e=this.registry)||void 0===e||e.onUpdate({id:this.attrs.id,name:"class",value:void 0,oldValue:t}),this}onRegister(t){return this.registry=t,this}isRendered(){return this.rendered}setRendered(t=!0){return this.rendered=t,this}getAttributes(){return this.attrs}getAttribute(t){return this.attrs[t]}getSVGElement(t=""){const e=T(this.attrs.id+t),i=document.getElementById(e);if(i)return i}setAttribute(t,e){var i;const s=this.attrs.id,n=this.attrs[t];return this.attrs[t]=e,null===(i=this.registry)||void 0===i||i.onUpdate({id:s,name:t,value:e,oldValue:n}),this}getBoundingBox(){return this.boundingBox}getContext(){return this.context}setContext(t){return this.context=t,this}checkContext(){return _(this.context,"NoContext","No rendering context attached to instance.")}set font(t){this.setFont(t)}get font(){return F.toCSSString(this.textFont)}setFont(t,e,i,s){const n=this.constructor.TEXT_FONT,a="object"==typeof t,o="string"==typeof t,r=void 0===t,h=void 0===e&&void 0===i&&void 0===s;return this.textFont=a?Object.assign(Object.assign({},n),t):o&&h?F.fromCSSString(t):r&&h?Object.assign({},n):F.validate(null!=t?t:n.family,null!=e?e:n.size,null!=i?i:n.weight,null!=s?s:n.style),this}getFont(){return this.textFont||this.resetFont(),F.toCSSString(this.textFont)}resetFont(){this.setFont()}get fontInfo(){return this.textFont||this.resetFont(),Object.assign({},this.textFont)}set fontInfo(t){this.setFont(t)}setFontSize(t){const e=this.fontInfo;return this.setFont(e.family,t,e.weight,e.style),this}getFontSize(){return this.fontSize}set fontSize(t){this.setFontSize(t)}get fontSize(){let t=this.fontInfo.size;return"number"==typeof t&&(t=`${t}pt`),t}get fontSizeInPoints(){return F.convertSizeToPointValue(this.fontSize)}get fontSizeInPixels(){return F.convertSizeToPixelValue(this.fontSize)}get fontStyle(){return this.fontInfo.style}set fontStyle(t){const e=this.fontInfo;this.setFont(e.family,e.size,e.weight,t)}get fontWeight(){return this.fontInfo.weight+""}set fontWeight(t){const e=this.fontInfo;this.setFont(e.family,e.size,t,e.style)}}O.ID=1e3,O.TEXT_FONT={family:F.SANS_SERIF,size:F.SIZE,weight:D.NORMAL,style:N.NORMAL};const L=16384,I={"1/2":32768,1:16384,2:8192,4:4096,8:2048,16:1024,32:512,64:256,128:128,256:64},W={w:"1",h:"2",q:"4",b:"256"},G={C:{num:0},Am:{num:0},F:{acc:"b",num:1},Dm:{acc:"b",num:1},Bb:{acc:"b",num:2},Gm:{acc:"b",num:2},Eb:{acc:"b",num:3},Cm:{acc:"b",num:3},Ab:{acc:"b",num:4},Fm:{acc:"b",num:4},Db:{acc:"b",num:5},Bbm:{acc:"b",num:5},Gb:{acc:"b",num:6},Ebm:{acc:"b",num:6},Cb:{acc:"b",num:7},Abm:{acc:"b",num:7},G:{acc:"#",num:1},Em:{acc:"#",num:1},D:{acc:"#",num:2},Bm:{acc:"#",num:2},A:{acc:"#",num:3},"F#m":{acc:"#",num:3},E:{acc:"#",num:4},"C#m":{acc:"#",num:4},B:{acc:"#",num:5},"G#m":{acc:"#",num:5},"F#":{acc:"#",num:6},"D#m":{acc:"#",num:6},"C#":{acc:"#",num:7},"A#m":{acc:"#",num:7}},U={treble:{line_shift:0},bass:{line_shift:6},tenor:{line_shift:4},alto:{line_shift:3},soprano:{line_shift:1},percussion:{line_shift:0},"mezzo-soprano":{line_shift:2},"baritone-c":{line_shift:5},"baritone-f":{line_shift:5},subbass:{line_shift:7},french:{line_shift:-1}},Y={C:{index:0,int_val:0},CN:{index:0,int_val:0,accidental:"n"},"C#":{index:0,int_val:1,accidental:"#"},"C##":{index:0,int_val:2,accidental:"##"},CB:{index:0,int_val:11,accidental:"b"},CBB:{index:0,int_val:10,accidental:"bb"},D:{index:1,int_val:2},DN:{index:1,int_val:2,accidental:"n"},"D#":{index:1,int_val:3,accidental:"#"},"D##":{index:1,int_val:4,accidental:"##"},DB:{index:1,int_val:1,accidental:"b"},DBB:{index:1,int_val:0,accidental:"bb"},E:{index:2,int_val:4},EN:{index:2,int_val:4,accidental:"n"},"E#":{index:2,int_val:5,accidental:"#"},"E##":{index:2,int_val:6,accidental:"##"},EB:{index:2,int_val:3,accidental:"b"},EBB:{index:2,int_val:2,accidental:"bb"},F:{index:3,int_val:5},FN:{index:3,int_val:5,accidental:"n"},"F#":{index:3,int_val:6,accidental:"#"},"F##":{index:3,int_val:7,accidental:"##"},FB:{index:3,int_val:4,accidental:"b"},FBB:{index:3,int_val:3,accidental:"bb"},G:{index:4,int_val:7},GN:{index:4,int_val:7,accidental:"n"},"G#":{index:4,int_val:8,accidental:"#"},"G##":{index:4,int_val:9,accidental:"##"},GB:{index:4,int_val:6,accidental:"b"},GBB:{index:4,int_val:5,accidental:"bb"},A:{index:5,int_val:9},AN:{index:5,int_val:9,accidental:"n"},"A#":{index:5,int_val:10,accidental:"#"},"A##":{index:5,int_val:11,accidental:"##"},AB:{index:5,int_val:8,accidental:"b"},ABB:{index:5,int_val:7,accidental:"bb"},B:{index:6,int_val:11},BN:{index:6,int_val:11,accidental:"n"},"B#":{index:6,int_val:12,accidental:"#"},"B##":{index:6,int_val:13,accidental:"##"},BB:{index:6,int_val:10,accidental:"b"},BBB:{index:6,int_val:9,accidental:"bb"},R:{index:6,rest:!0},X:{index:6,accidental:"",octave:4,code:"noteheadXBlack",shift_right:5.5}},H={"#":{code:"accidentalSharp",parenRightPaddingAdjustment:-1},"##":{code:"accidentalDoubleSharp",parenRightPaddingAdjustment:-1},b:{code:"accidentalFlat",parenRightPaddingAdjustment:-2},bb:{code:"accidentalDoubleFlat",parenRightPaddingAdjustment:-2},n:{code:"accidentalNatural",parenRightPaddingAdjustment:-1},"{":{code:"accidentalParensLeft",parenRightPaddingAdjustment:-1},"}":{code:"accidentalParensRight",parenRightPaddingAdjustment:-1},db:{code:"accidentalThreeQuarterTonesFlatZimmermann",parenRightPaddingAdjustment:-1},d:{code:"accidentalQuarterToneFlatStein",parenRightPaddingAdjustment:0},"++":{code:"accidentalThreeQuarterTonesSharpStein",parenRightPaddingAdjustment:-1},"+":{code:"accidentalQuarterToneSharpStein",parenRightPaddingAdjustment:-1},"+-":{code:"accidentalKucukMucennebSharp",parenRightPaddingAdjustment:-1},bs:{code:"accidentalBakiyeFlat",parenRightPaddingAdjustment:-1},bss:{code:"accidentalBuyukMucennebFlat",parenRightPaddingAdjustment:-1},o:{code:"accidentalSori",parenRightPaddingAdjustment:-1},k:{code:"accidentalKoron",parenRightPaddingAdjustment:-1},bbs:{code:"vexAccidentalMicrotonal1",parenRightPaddingAdjustment:-1},"++-":{code:"vexAccidentalMicrotonal2",parenRightPaddingAdjustment:-1},ashs:{code:"vexAccidentalMicrotonal3",parenRightPaddingAdjustment:-1},afhf:{code:"vexAccidentalMicrotonal4",parenRightPaddingAdjustment:-1},accSagittal5v7KleismaUp:{code:"accSagittal5v7KleismaUp",parenRightPaddingAdjustment:-1},accSagittal5v7KleismaDown:{code:"accSagittal5v7KleismaDown",parenRightPaddingAdjustment:-1},accSagittal5CommaUp:{code:"accSagittal5CommaUp",parenRightPaddingAdjustment:-1},accSagittal5CommaDown:{code:"accSagittal5CommaDown",parenRightPaddingAdjustment:-1},accSagittal7CommaUp:{code:"accSagittal7CommaUp",parenRightPaddingAdjustment:-1},accSagittal7CommaDown:{code:"accSagittal7CommaDown",parenRightPaddingAdjustment:-1},accSagittal25SmallDiesisUp:{code:"accSagittal25SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal25SmallDiesisDown:{code:"accSagittal25SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittal35MediumDiesisUp:{code:"accSagittal35MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal35MediumDiesisDown:{code:"accSagittal35MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11MediumDiesisUp:{code:"accSagittal11MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11MediumDiesisDown:{code:"accSagittal11MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11LargeDiesisUp:{code:"accSagittal11LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11LargeDiesisDown:{code:"accSagittal11LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittal35LargeDiesisUp:{code:"accSagittal35LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal35LargeDiesisDown:{code:"accSagittal35LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp25SDown:{code:"accSagittalSharp25SDown",parenRightPaddingAdjustment:-1},accSagittalFlat25SUp:{code:"accSagittalFlat25SUp",parenRightPaddingAdjustment:-1},accSagittalSharp7CDown:{code:"accSagittalSharp7CDown",parenRightPaddingAdjustment:-1},accSagittalFlat7CUp:{code:"accSagittalFlat7CUp",parenRightPaddingAdjustment:-1},accSagittalSharp5CDown:{code:"accSagittalSharp5CDown",parenRightPaddingAdjustment:-1},accSagittalFlat5CUp:{code:"accSagittalFlat5CUp",parenRightPaddingAdjustment:-1},accSagittalSharp5v7kDown:{code:"accSagittalSharp5v7kDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v7kUp:{code:"accSagittalFlat5v7kUp",parenRightPaddingAdjustment:-1},accSagittalSharp:{code:"accSagittalSharp",parenRightPaddingAdjustment:-1},accSagittalFlat:{code:"accSagittalFlat",parenRightPaddingAdjustment:-1},accSagittalSharp5v7kUp:{code:"accSagittalSharp5v7kUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v7kDown:{code:"accSagittalFlat5v7kDown",parenRightPaddingAdjustment:-1},accSagittalSharp5CUp:{code:"accSagittalSharp5CUp",parenRightPaddingAdjustment:-1},accSagittalFlat5CDown:{code:"accSagittalFlat5CDown",parenRightPaddingAdjustment:-1},accSagittalSharp7CUp:{code:"accSagittalSharp7CUp",parenRightPaddingAdjustment:-1},accSagittalFlat7CDown:{code:"accSagittalFlat7CDown",parenRightPaddingAdjustment:-1},accSagittalSharp25SUp:{code:"accSagittalSharp25SUp",parenRightPaddingAdjustment:-1},accSagittalFlat25SDown:{code:"accSagittalFlat25SDown",parenRightPaddingAdjustment:-1},accSagittalSharp35MUp:{code:"accSagittalSharp35MUp",parenRightPaddingAdjustment:-1},accSagittalFlat35MDown:{code:"accSagittalFlat35MDown",parenRightPaddingAdjustment:-1},accSagittalSharp11MUp:{code:"accSagittalSharp11MUp",parenRightPaddingAdjustment:-1},accSagittalFlat11MDown:{code:"accSagittalFlat11MDown",parenRightPaddingAdjustment:-1},accSagittalSharp11LUp:{code:"accSagittalSharp11LUp",parenRightPaddingAdjustment:-1},accSagittalFlat11LDown:{code:"accSagittalFlat11LDown",parenRightPaddingAdjustment:-1},accSagittalSharp35LUp:{code:"accSagittalSharp35LUp",parenRightPaddingAdjustment:-1},accSagittalFlat35LDown:{code:"accSagittalFlat35LDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp25SDown:{code:"accSagittalDoubleSharp25SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat25SUp:{code:"accSagittalDoubleFlat25SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7CDown:{code:"accSagittalDoubleSharp7CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7CUp:{code:"accSagittalDoubleFlat7CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5CDown:{code:"accSagittalDoubleSharp5CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5CUp:{code:"accSagittalDoubleFlat5CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v7kDown:{code:"accSagittalDoubleSharp5v7kDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v7kUp:{code:"accSagittalDoubleFlat5v7kUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp:{code:"accSagittalDoubleSharp",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat:{code:"accSagittalDoubleFlat",parenRightPaddingAdjustment:-1},accSagittal7v11KleismaUp:{code:"accSagittal7v11KleismaUp",parenRightPaddingAdjustment:-1},accSagittal7v11KleismaDown:{code:"accSagittal7v11KleismaDown",parenRightPaddingAdjustment:-1},accSagittal17CommaUp:{code:"accSagittal17CommaUp",parenRightPaddingAdjustment:-1},accSagittal17CommaDown:{code:"accSagittal17CommaDown",parenRightPaddingAdjustment:-1},accSagittal55CommaUp:{code:"accSagittal55CommaUp",parenRightPaddingAdjustment:-1},accSagittal55CommaDown:{code:"accSagittal55CommaDown",parenRightPaddingAdjustment:-1},accSagittal7v11CommaUp:{code:"accSagittal7v11CommaUp",parenRightPaddingAdjustment:-1},accSagittal7v11CommaDown:{code:"accSagittal7v11CommaDown",parenRightPaddingAdjustment:-1},accSagittal5v11SmallDiesisUp:{code:"accSagittal5v11SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v11SmallDiesisDown:{code:"accSagittal5v11SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v11SDown:{code:"accSagittalSharp5v11SDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v11SUp:{code:"accSagittalFlat5v11SUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v11CDown:{code:"accSagittalSharp7v11CDown",parenRightPaddingAdjustment:-1},accSagittalFlat7v11CUp:{code:"accSagittalFlat7v11CUp",parenRightPaddingAdjustment:-1},accSagittalSharp55CDown:{code:"accSagittalSharp55CDown",parenRightPaddingAdjustment:-1},accSagittalFlat55CUp:{code:"accSagittalFlat55CUp",parenRightPaddingAdjustment:-1},accSagittalSharp17CDown:{code:"accSagittalSharp17CDown",parenRightPaddingAdjustment:-1},accSagittalFlat17CUp:{code:"accSagittalFlat17CUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v11kDown:{code:"accSagittalSharp7v11kDown",parenRightPaddingAdjustment:-1},accSagittalFlat7v11kUp:{code:"accSagittalFlat7v11kUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v11kUp:{code:"accSagittalSharp7v11kUp",parenRightPaddingAdjustment:-1},accSagittalFlat7v11kDown:{code:"accSagittalFlat7v11kDown",parenRightPaddingAdjustment:-1},accSagittalSharp17CUp:{code:"accSagittalSharp17CUp",parenRightPaddingAdjustment:-1},accSagittalFlat17CDown:{code:"accSagittalFlat17CDown",parenRightPaddingAdjustment:-1},accSagittalSharp55CUp:{code:"accSagittalSharp55CUp",parenRightPaddingAdjustment:-1},accSagittalFlat55CDown:{code:"accSagittalFlat55CDown",parenRightPaddingAdjustment:-1},accSagittalSharp7v11CUp:{code:"accSagittalSharp7v11CUp",parenRightPaddingAdjustment:-1},accSagittalFlat7v11CDown:{code:"accSagittalFlat7v11CDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v11SUp:{code:"accSagittalSharp5v11SUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v11SDown:{code:"accSagittalFlat5v11SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v11SDown:{code:"accSagittalDoubleSharp5v11SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v11SUp:{code:"accSagittalDoubleFlat5v11SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7v11CDown:{code:"accSagittalDoubleSharp7v11CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7v11CUp:{code:"accSagittalDoubleFlat7v11CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp55CDown:{code:"accSagittalDoubleSharp55CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat55CUp:{code:"accSagittalDoubleFlat55CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp17CDown:{code:"accSagittalDoubleSharp17CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat17CUp:{code:"accSagittalDoubleFlat17CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7v11kDown:{code:"accSagittalDoubleSharp7v11kDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7v11kUp:{code:"accSagittalDoubleFlat7v11kUp",parenRightPaddingAdjustment:-1},accSagittal23CommaUp:{code:"accSagittal23CommaUp",parenRightPaddingAdjustment:-1},accSagittal23CommaDown:{code:"accSagittal23CommaDown",parenRightPaddingAdjustment:-1},accSagittal5v19CommaUp:{code:"accSagittal5v19CommaUp",parenRightPaddingAdjustment:-1},accSagittal5v19CommaDown:{code:"accSagittal5v19CommaDown",parenRightPaddingAdjustment:-1},accSagittal5v23SmallDiesisUp:{code:"accSagittal5v23SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v23SmallDiesisDown:{code:"accSagittal5v23SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v23SDown:{code:"accSagittalSharp5v23SDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v23SUp:{code:"accSagittalFlat5v23SUp",parenRightPaddingAdjustment:-1},accSagittalSharp5v19CDown:{code:"accSagittalSharp5v19CDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v19CUp:{code:"accSagittalFlat5v19CUp",parenRightPaddingAdjustment:-1},accSagittalSharp23CDown:{code:"accSagittalSharp23CDown",parenRightPaddingAdjustment:-1},accSagittalFlat23CUp:{code:"accSagittalFlat23CUp",parenRightPaddingAdjustment:-1},accSagittalSharp23CUp:{code:"accSagittalSharp23CUp",parenRightPaddingAdjustment:-1},accSagittalFlat23CDown:{code:"accSagittalFlat23CDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v19CUp:{code:"accSagittalSharp5v19CUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v19CDown:{code:"accSagittalFlat5v19CDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v23SUp:{code:"accSagittalSharp5v23SUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v23SDown:{code:"accSagittalFlat5v23SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v23SDown:{code:"accSagittalDoubleSharp5v23SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v23SUp:{code:"accSagittalDoubleFlat5v23SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v19CDown:{code:"accSagittalDoubleSharp5v19CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v19CUp:{code:"accSagittalDoubleFlat5v19CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp23CDown:{code:"accSagittalDoubleSharp23CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat23CUp:{code:"accSagittalDoubleFlat23CUp",parenRightPaddingAdjustment:-1},accSagittal19SchismaUp:{code:"accSagittal19SchismaUp",parenRightPaddingAdjustment:-1},accSagittal19SchismaDown:{code:"accSagittal19SchismaDown",parenRightPaddingAdjustment:-1},accSagittal17KleismaUp:{code:"accSagittal17KleismaUp",parenRightPaddingAdjustment:-1},accSagittal17KleismaDown:{code:"accSagittal17KleismaDown",parenRightPaddingAdjustment:-1},accSagittal143CommaUp:{code:"accSagittal143CommaUp",parenRightPaddingAdjustment:-1},accSagittal143CommaDown:{code:"accSagittal143CommaDown",parenRightPaddingAdjustment:-1},accSagittal11v49CommaUp:{code:"accSagittal11v49CommaUp",parenRightPaddingAdjustment:-1},accSagittal11v49CommaDown:{code:"accSagittal11v49CommaDown",parenRightPaddingAdjustment:-1},accSagittal19CommaUp:{code:"accSagittal19CommaUp",parenRightPaddingAdjustment:-1},accSagittal19CommaDown:{code:"accSagittal19CommaDown",parenRightPaddingAdjustment:-1},accSagittal7v19CommaUp:{code:"accSagittal7v19CommaUp",parenRightPaddingAdjustment:-1},accSagittal7v19CommaDown:{code:"accSagittal7v19CommaDown",parenRightPaddingAdjustment:-1},accSagittal49SmallDiesisUp:{code:"accSagittal49SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal49SmallDiesisDown:{code:"accSagittal49SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittal23SmallDiesisUp:{code:"accSagittal23SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal23SmallDiesisDown:{code:"accSagittal23SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittal5v13MediumDiesisUp:{code:"accSagittal5v13MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v13MediumDiesisDown:{code:"accSagittal5v13MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11v19MediumDiesisUp:{code:"accSagittal11v19MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11v19MediumDiesisDown:{code:"accSagittal11v19MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal49MediumDiesisUp:{code:"accSagittal49MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal49MediumDiesisDown:{code:"accSagittal49MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal5v49MediumDiesisUp:{code:"accSagittal5v49MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v49MediumDiesisDown:{code:"accSagittal5v49MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal49LargeDiesisUp:{code:"accSagittal49LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal49LargeDiesisDown:{code:"accSagittal49LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11v19LargeDiesisUp:{code:"accSagittal11v19LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11v19LargeDiesisDown:{code:"accSagittal11v19LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittal5v13LargeDiesisUp:{code:"accSagittal5v13LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v13LargeDiesisDown:{code:"accSagittal5v13LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp23SDown:{code:"accSagittalSharp23SDown",parenRightPaddingAdjustment:-1},accSagittalFlat23SUp:{code:"accSagittalFlat23SUp",parenRightPaddingAdjustment:-1},accSagittalSharp49SDown:{code:"accSagittalSharp49SDown",parenRightPaddingAdjustment:-1},accSagittalFlat49SUp:{code:"accSagittalFlat49SUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v19CDown:{code:"accSagittalSharp7v19CDown",parenRightPaddingAdjustment:-1},accSagittalFlat7v19CUp:{code:"accSagittalFlat7v19CUp",parenRightPaddingAdjustment:-1},accSagittalSharp19CDown:{code:"accSagittalSharp19CDown",parenRightPaddingAdjustment:-1},accSagittalFlat19CUp:{code:"accSagittalFlat19CUp",parenRightPaddingAdjustment:-1},accSagittalSharp11v49CDown:{code:"accSagittalSharp11v49CDown",parenRightPaddingAdjustment:-1},accSagittalFlat11v49CUp:{code:"accSagittalFlat11v49CUp",parenRightPaddingAdjustment:-1},accSagittalSharp143CDown:{code:"accSagittalSharp143CDown",parenRightPaddingAdjustment:-1},accSagittalFlat143CUp:{code:"accSagittalFlat143CUp",parenRightPaddingAdjustment:-1},accSagittalSharp17kDown:{code:"accSagittalSharp17kDown",parenRightPaddingAdjustment:-1},accSagittalFlat17kUp:{code:"accSagittalFlat17kUp",parenRightPaddingAdjustment:-1},accSagittalSharp19sDown:{code:"accSagittalSharp19sDown",parenRightPaddingAdjustment:-1},accSagittalFlat19sUp:{code:"accSagittalFlat19sUp",parenRightPaddingAdjustment:-1},accSagittalSharp19sUp:{code:"accSagittalSharp19sUp",parenRightPaddingAdjustment:-1},accSagittalFlat19sDown:{code:"accSagittalFlat19sDown",parenRightPaddingAdjustment:-1},accSagittalSharp17kUp:{code:"accSagittalSharp17kUp",parenRightPaddingAdjustment:-1},accSagittalFlat17kDown:{code:"accSagittalFlat17kDown",parenRightPaddingAdjustment:-1},accSagittalSharp143CUp:{code:"accSagittalSharp143CUp",parenRightPaddingAdjustment:-1},accSagittalFlat143CDown:{code:"accSagittalFlat143CDown",parenRightPaddingAdjustment:-1},accSagittalSharp11v49CUp:{code:"accSagittalSharp11v49CUp",parenRightPaddingAdjustment:-1},accSagittalFlat11v49CDown:{code:"accSagittalFlat11v49CDown",parenRightPaddingAdjustment:-1},accSagittalSharp19CUp:{code:"accSagittalSharp19CUp",parenRightPaddingAdjustment:-1},accSagittalFlat19CDown:{code:"accSagittalFlat19CDown",parenRightPaddingAdjustment:-1},accSagittalSharp7v19CUp:{code:"accSagittalSharp7v19CUp",parenRightPaddingAdjustment:-1},accSagittalFlat7v19CDown:{code:"accSagittalFlat7v19CDown",parenRightPaddingAdjustment:-1},accSagittalSharp49SUp:{code:"accSagittalSharp49SUp",parenRightPaddingAdjustment:-1},accSagittalFlat49SDown:{code:"accSagittalFlat49SDown",parenRightPaddingAdjustment:-1},accSagittalSharp23SUp:{code:"accSagittalSharp23SUp",parenRightPaddingAdjustment:-1},accSagittalFlat23SDown:{code:"accSagittalFlat23SDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v13MUp:{code:"accSagittalSharp5v13MUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v13MDown:{code:"accSagittalFlat5v13MDown",parenRightPaddingAdjustment:-1},accSagittalSharp11v19MUp:{code:"accSagittalSharp11v19MUp",parenRightPaddingAdjustment:-1},accSagittalFlat11v19MDown:{code:"accSagittalFlat11v19MDown",parenRightPaddingAdjustment:-1},accSagittalSharp49MUp:{code:"accSagittalSharp49MUp",parenRightPaddingAdjustment:-1},accSagittalFlat49MDown:{code:"accSagittalFlat49MDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v49MUp:{code:"accSagittalSharp5v49MUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v49MDown:{code:"accSagittalFlat5v49MDown",parenRightPaddingAdjustment:-1},accSagittalSharp49LUp:{code:"accSagittalSharp49LUp",parenRightPaddingAdjustment:-1},accSagittalFlat49LDown:{code:"accSagittalFlat49LDown",parenRightPaddingAdjustment:-1},accSagittalSharp11v19LUp:{code:"accSagittalSharp11v19LUp",parenRightPaddingAdjustment:-1},accSagittalFlat11v19LDown:{code:"accSagittalFlat11v19LDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v13LUp:{code:"accSagittalSharp5v13LUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v13LDown:{code:"accSagittalFlat5v13LDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp23SDown:{code:"accSagittalDoubleSharp23SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat23SUp:{code:"accSagittalDoubleFlat23SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp49SDown:{code:"accSagittalDoubleSharp49SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat49SUp:{code:"accSagittalDoubleFlat49SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7v19CDown:{code:"accSagittalDoubleSharp7v19CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7v19CUp:{code:"accSagittalDoubleFlat7v19CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp19CDown:{code:"accSagittalDoubleSharp19CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat19CUp:{code:"accSagittalDoubleFlat19CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp11v49CDown:{code:"accSagittalDoubleSharp11v49CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat11v49CUp:{code:"accSagittalDoubleFlat11v49CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp143CDown:{code:"accSagittalDoubleSharp143CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat143CUp:{code:"accSagittalDoubleFlat143CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp17kDown:{code:"accSagittalDoubleSharp17kDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat17kUp:{code:"accSagittalDoubleFlat17kUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp19sDown:{code:"accSagittalDoubleSharp19sDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat19sUp:{code:"accSagittalDoubleFlat19sUp",parenRightPaddingAdjustment:-1},accSagittalShaftUp:{code:"accSagittalShaftUp",parenRightPaddingAdjustment:-1},accSagittalShaftDown:{code:"accSagittalShaftDown",parenRightPaddingAdjustment:-1},accSagittalAcute:{code:"accSagittalAcute",parenRightPaddingAdjustment:-1},accSagittalGrave:{code:"accSagittalGrave",parenRightPaddingAdjustment:-1},accSagittal1MinaUp:{code:"accSagittal1MinaUp",parenRightPaddingAdjustment:-1},accSagittal1MinaDown:{code:"accSagittal1MinaDown",parenRightPaddingAdjustment:-1},accSagittal2MinasUp:{code:"accSagittal2MinasUp",parenRightPaddingAdjustment:-1},accSagittal2MinasDown:{code:"accSagittal2MinasDown",parenRightPaddingAdjustment:-1},accSagittal1TinaUp:{code:"accSagittal1TinaUp",parenRightPaddingAdjustment:-1},accSagittal1TinaDown:{code:"accSagittal1TinaDown",parenRightPaddingAdjustment:-1},accSagittal2TinasUp:{code:"accSagittal2TinasUp",parenRightPaddingAdjustment:-1},accSagittal2TinasDown:{code:"accSagittal2TinasDown",parenRightPaddingAdjustment:-1},accSagittal3TinasUp:{code:"accSagittal3TinasUp",parenRightPaddingAdjustment:-1},accSagittal3TinasDown:{code:"accSagittal3TinasDown",parenRightPaddingAdjustment:-1},accSagittal4TinasUp:{code:"accSagittal4TinasUp",parenRightPaddingAdjustment:-1},accSagittal4TinasDown:{code:"accSagittal4TinasDown",parenRightPaddingAdjustment:-1},accSagittal5TinasUp:{code:"accSagittal5TinasUp",parenRightPaddingAdjustment:-1},accSagittal5TinasDown:{code:"accSagittal5TinasDown",parenRightPaddingAdjustment:-1},accSagittal6TinasUp:{code:"accSagittal6TinasUp",parenRightPaddingAdjustment:-1},accSagittal6TinasDown:{code:"accSagittal6TinasDown",parenRightPaddingAdjustment:-1},accSagittal7TinasUp:{code:"accSagittal7TinasUp",parenRightPaddingAdjustment:-1},accSagittal7TinasDown:{code:"accSagittal7TinasDown",parenRightPaddingAdjustment:-1},accSagittal8TinasUp:{code:"accSagittal8TinasUp",parenRightPaddingAdjustment:-1},accSagittal8TinasDown:{code:"accSagittal8TinasDown",parenRightPaddingAdjustment:-1},accSagittal9TinasUp:{code:"accSagittal9TinasUp",parenRightPaddingAdjustment:-1},accSagittal9TinasDown:{code:"accSagittal9TinasDown",parenRightPaddingAdjustment:-1},accSagittalFractionalTinaUp:{code:"accSagittalFractionalTinaUp",parenRightPaddingAdjustment:-1},accSagittalFractionalTinaDown:{code:"accSagittalFractionalTinaDown",parenRightPaddingAdjustment:-1},accidentalNarrowReversedFlat:{code:"accidentalNarrowReversedFlat",parenRightPaddingAdjustment:-1},accidentalNarrowReversedFlatAndFlat:{code:"accidentalNarrowReversedFlatAndFlat",parenRightPaddingAdjustment:-1},accidentalWilsonPlus:{code:"accidentalWilsonPlus",parenRightPaddingAdjustment:-1},accidentalWilsonMinus:{code:"accidentalWilsonMinus",parenRightPaddingAdjustment:-1}},j={"a.":{code:"augmentationDot",between_lines:!0},av:{aboveCode:"articStaccatissimoAbove",belowCode:"articStaccatissimoBelow",between_lines:!0},"a>":{aboveCode:"articAccentAbove",belowCode:"articAccentBelow",between_lines:!0},"a-":{aboveCode:"articTenutoAbove",belowCode:"articTenutoBelow",between_lines:!0},"a^":{aboveCode:"articMarcatoAbove",belowCode:"articMarcatoBelow",between_lines:!1},"a+":{code:"pluckedLeftHandPizzicato",between_lines:!1},ao:{aboveCode:"pluckedSnapPizzicatoAbove",belowCode:"pluckedSnapPizzicatoBelow",between_lines:!1},ah:{code:"stringsHarmonic",between_lines:!1},"a@":{aboveCode:"fermataAbove",belowCode:"fermataBelow",between_lines:!1},"a@a":{code:"fermataAbove",between_lines:!1},"a@u":{code:"fermataBelow",between_lines:!1},"a@s":{aboveCode:"fermataShortAbove",belowCode:"fermataShortBelow",between_lines:!1},"a@as":{code:"fermataShortAbove",between_lines:!1},"a@us":{code:"fermataShortBelow",between_lines:!1},"a@l":{aboveCode:"fermataLongAbove",belowCode:"fermataLongBelow",between_lines:!1},"a@al":{code:"fermataLongAbove",between_lines:!1},"a@ul":{code:"fermataLongBelow",between_lines:!1},"a@vl":{aboveCode:"fermataVeryLongAbove",belowCode:"fermataVeryLongBelow",between_lines:!1},"a@avl":{code:"fermataVeryLongAbove",between_lines:!1},"a@uvl":{code:"fermataVeryLongBelow",between_lines:!1},"a|":{code:"stringsUpBow",between_lines:!1},am:{code:"stringsDownBow",between_lines:!1},"a,":{code:"pictChokeCymbal",between_lines:!1}},X={mordent:{code:"ornamentShortTrill"},mordent_inverted:{code:"ornamentMordent"},turn:{code:"ornamentTurn"},turn_inverted:{code:"ornamentTurnSlash"},tr:{code:"ornamentTrill"},upprall:{code:"ornamentPrecompSlideTrillDAnglebert"},downprall:{code:"ornamentPrecompDoubleCadenceUpperPrefix"},prallup:{code:"ornamentPrecompTrillSuffixDandrieu"},pralldown:{code:"ornamentPrecompTrillLowerSuffix"},upmordent:{code:"ornamentPrecompSlideTrillBach"},downmordent:{code:"ornamentPrecompDoubleCadenceUpperPrefixTurn"},lineprall:{code:"ornamentPrecompAppoggTrill"},prallprall:{code:"ornamentTremblement"},scoop:{code:"brassScoop"},doit:{code:"brassDoitMedium"},fall:{code:"brassFallLipShort"},doitLong:{code:"brassLiftMedium"},fallLong:{code:"brassFallRoughMedium"},bend:{code:"brassBend"},plungerClosed:{code:"brassMuteClosed"},plungerOpen:{code:"brassMuteOpen"},flip:{code:"brassFlip"},jazzTurn:{code:"brassJazzTurn"},smear:{code:"brassSmear"}};class V{static currentMusicFont(){if(0===V.MUSIC_FONT_STACK.length)throw new p("NoFonts","The font stack is empty. See: await Flow.fetchMusicFont(...); Flow.setMusicFont(...).");return V.MUSIC_FONT_STACK[0]}static clefProperties(t){if(!t||!(t in U))throw new p("BadArgument","Invalid clef: "+t);return U[t]}static keyProperties(t,e="treble",i){let s={octave_shift:0,duration:"4"};"object"==typeof i&&(s=Object.assign(Object.assign({},s),i));const n=V.sanitizeDuration(s.duration),a=t.split("/");if(a.length<2)throw new p("BadArguments",`First argument must be note/octave or note/octave/glyph-code: ${t}`);const o=a[0].toUpperCase(),r=Y[o];if(!r)throw new p("BadArguments","Invalid key name: "+o);r.octave&&(a[1]=r.octave.toString());let h=parseInt(a[1],10);h+=-1*s.octave_shift;let l=(7*h-28+r.index)/2;l+=V.clefProperties(e).line_shift;let c=0;l<=0&&2*l%2==0&&(c=1),l>=6&&2*l%2==0&&(c=-1);const d=void 0!==r.int_val?12*h+r.int_val:void 0,b=r.code,g=r.shift_right;let m={};if(a.length>2&&a[2]){const t=a[2].toUpperCase();m={code:this.codeNoteHead(t,n)}||{}}return Object.assign({key:o,octave:h,line:l,int_value:d,accidental:r.accidental,code:b,stroke:c,shift_right:g,displaced:!1},m)}static integerToNote(t){if(void 0===t||t<0||t>11)throw new p("BadArguments",`integerToNote() requires an integer in the range [0, 11]: ${t}`);const e={0:"C",1:"C#",2:"D",3:"D#",4:"E",5:"F",6:"F#",7:"G",8:"G#",9:"A",10:"A#",11:"B"}[t];if(!e)throw new p("BadArguments",`Unknown note value for integer: ${t}`);return e}static tabToGlyph(t,e=1){let i,s=0,n=0;if("X"===t.toUpperCase()){const t=new Q("accidentalDoubleSharp",V.TABLATURE_FONT_SCALE).getMetrics();if(i="accidentalDoubleSharp",null==t.width||null==t.height)throw new p("InvalidMetrics","Width and height required");s=t.width,n=-t.height/2}else s=V.textWidth(t);return{text:t,code:i,getWidth:()=>s*e,shift_y:n}}static textWidth(t){return 7*t.toString().length}static articulationCodes(t){return j[t]}static accidentalCodes(t){return H[t]}static ornamentCodes(t){return X[t]}static keySignature(t){const e=G[t];if(!e)throw new p("BadKeySignature",`Bad key signature spec: '${t}'`);if(!e.acc)return[];const i={b:[2,.5,2.5,1,3,1.5,3.5],"#":[0,1.5,-.5,1,2.5,.5,2]}[e.acc],s=[];for(let t=0;tQ.getWidth(a,t)}),s)}}V.SOFTMAX_FACTOR=100,V.STEM_WIDTH=1.5,V.STEM_HEIGHT=35,V.STAVE_LINE_THICKNESS=1,V.RENDER_PRECISION_PLACES=3,V.RESOLUTION=L,V.MUSIC_FONT_STACK=[],V.NOTATION_FONT_SCALE=39,V.TABLATURE_FONT_SCALE=39,V.SLASH_NOTEHEAD_WIDTH=15,V.STAVE_LINE_DISTANCE=10,V.TEXT_HEIGHT_OFFSET_HACK=1,V.accidentalMap=H,V.accidentalColumnsTable={1:{a:[1],b:[1]},2:{a:[1,2]},3:{a:[1,3,2],b:[1,2,1],second_on_bottom:[1,2,3]},4:{a:[1,3,4,2],b:[1,2,3,1],spaced_out_tetrachord:[1,2,1,2]},5:{a:[1,3,5,4,2],b:[1,2,4,3,1],spaced_out_pentachord:[1,2,3,2,1],very_spaced_out_pentachord:[1,2,1,2,1]},6:{a:[1,3,5,6,4,2],b:[1,2,4,5,3,1],spaced_out_hexachord:[1,3,2,1,3,2],very_spaced_out_hexachord:[1,2,1,2,1,2]}},V.unicode={sharp:String.fromCharCode(9839),flat:String.fromCharCode(9837),natural:String.fromCharCode(9838),triangle:String.fromCharCode(9651),"o-with-slash":String.fromCharCode(248),degrees:String.fromCharCode(176),circle:String.fromCharCode(9675)},V.validTypes={n:{name:"note"},r:{name:"rest"},h:{name:"harmonic"},m:{name:"muted"},s:{name:"slash"},g:{name:"ghost"},d:{name:"diamond"},x:{name:"x"},ci:{name:"circled"},cx:{name:"circle x"},sf:{name:"slashed"},sb:{name:"slashed backward"},sq:{name:"square"},tu:{name:"triangle up"},td:{name:"triangle down"}},V.TIME4_4={num_beats:4,beat_value:4,resolution:L};const z={"1/2":{common:{stem:!1,stem_offset:0,flag:!1,stem_up_extension:-V.STEM_HEIGHT,stem_down_extension:-V.STEM_HEIGHT,tabnote_stem_up_extension:-V.STEM_HEIGHT,tabnote_stem_down_extension:-V.STEM_HEIGHT,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restDoubleWhole",rest:!0,position:"B/5",dot_shiftY:.5},s:{getWidth:()=>V.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},1:{common:{stem:!1,stem_offset:0,flag:!1,stem_up_extension:-V.STEM_HEIGHT,stem_down_extension:-V.STEM_HEIGHT,tabnote_stem_up_extension:-V.STEM_HEIGHT,tabnote_stem_down_extension:-V.STEM_HEIGHT,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restWhole",leger_code_head:"restWholeLegerLine",rest:!0,position:"D/5",dot_shiftY:.5},s:{getWidth:()=>V.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},2:{common:{stem:!0,stem_offset:0,flag:!1,stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restHalf",leger_code_head:"restHalfLegerLine",stem:!1,rest:!0,position:"B/4",dot_shiftY:-.5},s:{getWidth:()=>V.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},4:{common:{stem:!0,stem_offset:0,flag:!1,stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restQuarter",stem:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1.5,line_below:1.5},s:{getWidth:()=>V.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},8:{common:{stem:!0,stem_offset:0,flag:!0,beam_count:1,stem_beam_extension:0,code_flag_upstem:"flag8thUp",code_flag_downstem:"flag8thDown",stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest8th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1,line_below:1},s:{getWidth:()=>V.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},16:{common:{beam_count:2,stem_beam_extension:0,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag16thUp",code_flag_downstem:"flag16thDown",stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest16th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1,line_below:2},s:{getWidth:()=>V.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},32:{common:{beam_count:3,stem_beam_extension:7.5,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag32ndUp",code_flag_downstem:"flag32ndDown",stem_up_extension:9,stem_down_extension:9,tabnote_stem_up_extension:9,tabnote_stem_down_extension:9,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest32nd",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-1.5,line_above:2,line_below:2},s:{getWidth:()=>V.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},64:{common:{beam_count:4,stem_beam_extension:15,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag64thUp",code_flag_downstem:"flag64thDown",stem_up_extension:13,stem_down_extension:13,tabnote_stem_up_extension:13,tabnote_stem_down_extension:13,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest64th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-1.5,line_above:2,line_below:3},s:{getWidth:()=>V.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},128:{common:{beam_count:5,stem_beam_extension:22.5,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag128thUp",code_flag_downstem:"flag128thDown",stem_up_extension:22,stem_down_extension:22,tabnote_stem_up_extension:22,tabnote_stem_down_extension:22,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest128th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-2.5,line_above:3,line_below:3},s:{getWidth:()=>V.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}}};var K,$;!function(t){t[t.MOVE=0]="MOVE",t[t.LINE=1]="LINE",t[t.QUADRATIC=2]="QUADRATIC",t[t.BEZIER=3]="BEZIER"}(K||(K={}));class J{constructor(t,e,i){this.point=-1,this.metrics=Q.loadMetrics(t,e,i),this.bbox=Q.getOutlineBoundingBox(this.metrics.outline,this.metrics.scale,this.metrics.x_shift,this.metrics.y_shift),i&&(this.point=Q.lookupFontMetric(this.metrics.font,i,e,"point",-1))}}class q{constructor(t,e,i,s){this.outline=t,this.originX=e,this.originY=i,this.scale=s,this.i=0,this.precision=1,this.precision=Math.pow(10,V.RENDER_PRECISION_PLACES)}done(){return this.i>=this.outline.length}next(){return Math.round(this.outline[this.i++]*this.precision/this.precision)}nextX(){return Math.round((this.originX+this.outline[this.i++]*this.scale)*this.precision)/this.precision}nextY(){return Math.round((this.originY-this.outline[this.i++]*this.scale)*this.precision)/this.precision}static parse(t){const e=[],i=t.split(" ");let s=0;for(;s{const e=t.getTickContext();n&&t.setStave(n),e.setXOffset(a)}))}}class tt{static get NUM_TONES(){return this.canonical_notes.length}static get roots(){return["c","d","e","f","g","a","b"]}static get root_values(){return[0,2,4,5,7,9,11]}static get root_indices(){return{c:0,d:1,e:2,f:3,g:4,a:5,b:6}}static get canonical_notes(){return["c","c#","d","d#","e","f","f#","g","g#","a","a#","b"]}static get diatonic_intervals(){return["unison","m2","M2","m3","M3","p4","dim5","p5","m6","M6","b7","M7","octave"]}static get diatonic_accidentals(){return{unison:{note:0,accidental:0},m2:{note:1,accidental:-1},M2:{note:1,accidental:0},m3:{note:2,accidental:-1},M3:{note:2,accidental:0},p4:{note:3,accidental:0},dim5:{note:4,accidental:-1},p5:{note:4,accidental:0},m6:{note:5,accidental:-1},M6:{note:5,accidental:0},b7:{note:6,accidental:-1},M7:{note:6,accidental:0},octave:{note:7,accidental:0}}}static get intervals(){return{u:0,unison:0,m2:1,b2:1,min2:1,S:1,H:1,2:2,M2:2,maj2:2,T:2,W:2,m3:3,b3:3,min3:3,M3:4,3:4,maj3:4,4:5,p4:5,"#4":6,b5:6,aug4:6,dim5:6,5:7,p5:7,"#5":8,b6:8,aug5:8,6:9,M6:9,maj6:9,b7:10,m7:10,min7:10,dom7:10,M7:11,maj7:11,8:12,octave:12}}static get scales(){return{major:[2,2,1,2,2,2,1],minor:[2,1,2,2,1,2,2],ionian:[2,2,1,2,2,2,1],dorian:[2,1,2,2,2,1,2],phyrgian:[1,2,2,2,1,2,2],lydian:[2,2,2,1,2,2,1],mixolydian:[2,2,1,2,2,1,2],aeolian:[2,1,2,2,1,2,2],locrian:[1,2,2,1,2,2,2]}}static get scaleTypes(){return{M:tt.scales.major,m:tt.scales.minor}}static get accidentals(){return["bb","b","n","#","##"]}static get noteValues(){return{c:{root_index:0,int_val:0},cn:{root_index:0,int_val:0},"c#":{root_index:0,int_val:1},"c##":{root_index:0,int_val:2},cb:{root_index:0,int_val:11},cbb:{root_index:0,int_val:10},d:{root_index:1,int_val:2},dn:{root_index:1,int_val:2},"d#":{root_index:1,int_val:3},"d##":{root_index:1,int_val:4},db:{root_index:1,int_val:1},dbb:{root_index:1,int_val:0},e:{root_index:2,int_val:4},en:{root_index:2,int_val:4},"e#":{root_index:2,int_val:5},"e##":{root_index:2,int_val:6},eb:{root_index:2,int_val:3},ebb:{root_index:2,int_val:2},f:{root_index:3,int_val:5},fn:{root_index:3,int_val:5},"f#":{root_index:3,int_val:6},"f##":{root_index:3,int_val:7},fb:{root_index:3,int_val:4},fbb:{root_index:3,int_val:3},g:{root_index:4,int_val:7},gn:{root_index:4,int_val:7},"g#":{root_index:4,int_val:8},"g##":{root_index:4,int_val:9},gb:{root_index:4,int_val:6},gbb:{root_index:4,int_val:5},a:{root_index:5,int_val:9},an:{root_index:5,int_val:9},"a#":{root_index:5,int_val:10},"a##":{root_index:5,int_val:11},ab:{root_index:5,int_val:8},abb:{root_index:5,int_val:7},b:{root_index:6,int_val:11},bn:{root_index:6,int_val:11},"b#":{root_index:6,int_val:0},"b##":{root_index:6,int_val:1},bb:{root_index:6,int_val:10},bbb:{root_index:6,int_val:9}}}isValidNoteValue(t){return t>=0&&t=0&&t3)throw new p("BadArguments","Invalid note name: "+t);const e=t.toLowerCase(),i=/^([cdefgab])(b|bb|n|#|##)?$/.exec(e);if(null!==i){return{root:i[1],accidental:i[2]}}throw new p("BadArguments","Invalid note name: "+t)}getKeyParts(t){if(!t||t.length<1)throw new p("BadArguments","Invalid key: "+t);const e=t.toLowerCase(),i=/^([cdefgab])(b|#)?(mel|harm|m|M)?$/.exec(e);if(null!==i){const t=i[1],e=i[2];let s=i[3];return s||(s="M"),{root:t,accidental:e,type:s}}throw new p("BadArguments",`Invalid key: ${t}`)}getNoteValue(t){const e=tt.noteValues[t];if(void 0===e)throw new p("BadArguments",`Invalid note name: ${t}`);return e.int_val}getIntervalValue(t){const e=tt.intervals[t];if(void 0===e)throw new p("BadArguments",`Invalid interval name: ${t}`);return e}getCanonicalNoteName(t){if(!this.isValidNoteValue(t))throw new p("BadArguments",`Invalid note value: ${t}`);return tt.canonical_notes[t]}getCanonicalIntervalName(t){if(!this.isValidIntervalValue(t))throw new p("BadArguments",`Invalid interval value: ${t}`);return tt.diatonic_intervals[t]}getRelativeNoteValue(t,e,i=1){if(1!==i&&-1!==i)throw new p("BadArguments",`Invalid direction: ${i}`);let s=(t+i*e)%tt.NUM_TONES;return s<0&&(s+=tt.NUM_TONES),s}getRelativeNoteName(t,e){const i=this.getNoteParts(t),s=this.getNoteValue(i.root);let n=e-s;if(Math.abs(n)>tt.NUM_TONES-3){let i=1;n>0&&(i=-1);const a=(e+1+(s+1))%tt.NUM_TONES*i;if(Math.abs(a)>2)throw new p("BadArguments",`Notes not related: ${t}, ${e})`);n=a}if(Math.abs(n)>2)throw new p("BadArguments",`Notes not related: ${t}, ${e})`);let a=i.root;if(n>0)for(let t=1;t<=n;++t)a+="#";else if(n<0)for(let t=-1;t>=n;--t)a+="b";return a}getScaleTones(t,e){const i=[t];let s=t;for(let n=0;ne.line-t.line));const c=[];let d,b=0;for(let t=0;tb?e.shift:b,d=e.line}let g=0;for(let t=0;tc[i+t],a=t=>t.map(n),o=(t,e)=>{const[i,s]=a([t,e]).map((t=>t.line));return i-s},r=(...t)=>t.map(a).every((([t,e])=>!this.checkCollision(t,e))),h=s-i+1;let l,d,b=this.checkCollision(c[i],c[s])?"a":"b";switch(h){case 3:"a"===b&&.5===o(1,2)&&.5!==o(0,1)&&(b="second_on_bottom");break;case 4:r([0,2],[1,3])&&(b="spaced_out_tetrachord");break;case 5:"b"===b&&r([1,3])&&(b="spaced_out_pentachord",r([0,2],[2,4])&&(b="very_spaced_out_pentachord"));break;case 6:r([0,3],[1,4],[2,5])&&(b="spaced_out_hexachord"),r([0,2],[2,4],[1,3],[3,5])&&(b="very_spaced_out_hexachord")}if(h>=7){let e=2,i=!0;for(;!0===i;){i=!1;for(let t=0;t+ed?g:d}else for(l=t;l<=s;l++)d=V.accidentalColumnsTable[h][b][l-t],c[l].column=d,g=g>d?g:d;t=s}const m=[],u=[];for(let t=0;t<=g;t++)m[t]=0,u[t]=0;m[0]=b+n,u[0]=b+n,c.forEach((t=>{t.width>m[t.column]&&(m[t.column]=t.width)}));for(let t=1;t{let e=0;const i=f+t.numAcc;for(;f0?(s=e.flatLine||e.dblSharpLine?2.5:3,t.dblSharpLine&&(i-=.5)):(s=t.flatLine||t.dblSharpLine?2.5:3,e.dblSharpLine&&(i-=.5));const n=Math.abs(i){const e=new v(0,1);t.getTickables().forEach((t=>{if(t.shouldIgnoreTicks())return;const n=s[e.value()];n?n.push(t):(i.push(e.value()),s[e.value()]=[t]),e.add(t.getTicks())}))}));const a=new tt;e||(e="C");const o=a.createScaleMap(e),r={};i.forEach((t=>{const e=s[t],i=[],h=t=>{if(!b(t)||t.isRest()||t.shouldIgnoreTicks())return;const e=t;e.keys.forEach(((t,s)=>{const h=a.getNoteParts(t.split("/")[0]),l=t.split("/")[1],c=h.accidental||"n",d=h.root+c;r[h.root+l]||(r[h.root+l]=o[h.root]);const b=r[h.root+l]===d,g=i.indexOf(t)>-1;if(e.getModifiers().forEach(((t,i)=>{n(t)&&t.type==c&&t.getIndex()==s&&e.getModifiers().splice(i,1)})),!b||b&&g){r[h.root+l]=d;const n=new it(c);e.addModifier(n,s),i.push(t)}})),e.getModifiers().forEach((t=>{l(t)&&t.getGraceNotes().forEach(h)}))};e.forEach(h)}))}reset(){const t=this.render_options.font_scale;this.glyph=new Q(this.accidental.code,t),this.glyph.setOriginX(1),this.cautionary&&(this.parenLeft=new Q(V.accidentalCodes("{").code,t),this.parenRight=new Q(V.accidentalCodes("}").code,t),this.parenLeft.setOriginX(1),this.parenRight.setOriginX(1))}getWidth(){if(this.cautionary){const t=_(this.parenLeft),e=_(this.parenRight),i=t.getMetrics().width+e.getMetrics().width+this.render_options.parenLeftPadding+this.render_options.parenRightPadding;return this.glyph.getMetrics().width+i}return this.glyph.getMetrics().width}setNote(t){return _(t,"ArgumentError",`Bad note value: ${t}`),this.note=t,h(t)&&(this.render_options.font_scale=25,this.reset()),this}setAsCautionary(){return this.cautionary=!0,this.render_options.font_scale=28,this.reset(),this}draw(){const{type:t,position:e,index:i,cautionary:s,x_shift:n,y_shift:a,glyph:o,render_options:{parenLeftPadding:r,parenRightPadding:h}}=this,l=this.checkContext(),c=this.checkAttachedNote();this.setRendered();const d=c.getModifierStartXY(e,i);let b=d.x+n;const g=d.y+a;if(et("Rendering: ",t,b,g),s){const t=_(this.parenLeft),e=_(this.parenRight);e.render(l,b,g),b-=e.getMetrics().width,b-=h,b-=this.accidental.parenRightPaddingAdjustment,o.render(l,b,g),b-=o.getMetrics().width,b-=r,t.render(l,b,g)}else o.render(l,b,g)}}it.DEBUG=!1;class st extends O{constructor(t){super(),this.stem_up_y_offset=0,this.stem_down_y_offset=0,this.stem_up_y_base_offset=0,this.stem_down_y_base_offset=0,this.x_begin=(null==t?void 0:t.x_begin)||0,this.x_end=(null==t?void 0:t.x_end)||0,this.y_top=(null==t?void 0:t.y_top)||0,this.y_bottom=(null==t?void 0:t.y_bottom)||0,this.stem_extension=(null==t?void 0:t.stem_extension)||0,this.stem_direction=(null==t?void 0:t.stem_direction)||0,this.hide=(null==t?void 0:t.hide)||!1,this.isStemlet=(null==t?void 0:t.isStemlet)||!1,this.stemletHeight=(null==t?void 0:t.stemletHeight)||0,this.renderHeightAdjustment=0,this.setOptions(t)}static get CATEGORY(){return u.Stem}static get UP(){return 1}static get DOWN(){return-1}static get WIDTH(){return V.STEM_WIDTH}static get HEIGHT(){return V.STEM_HEIGHT}setOptions(t){this.stem_up_y_offset=(null==t?void 0:t.stem_up_y_offset)||0,this.stem_down_y_offset=(null==t?void 0:t.stem_down_y_offset)||0,this.stem_up_y_base_offset=(null==t?void 0:t.stem_up_y_base_offset)||0,this.stem_down_y_base_offset=(null==t?void 0:t.stem_down_y_base_offset)||0}setNoteHeadXBounds(t,e){return this.x_begin=t,this.x_end=e,this}setDirection(t){this.stem_direction=t}setExtension(t){this.stem_extension=t}getExtension(){return this.stem_extension}setYBounds(t,e){this.y_top=t,this.y_bottom=e}getHeight(){const t=this.stem_direction===st.UP?this.stem_up_y_offset:this.stem_down_y_offset;return(this.y_bottom-this.y_top+(st.HEIGHT-t+this.stem_extension))*this.stem_direction}getBoundingBox(){throw new p("NotImplemented","getBoundingBox() not implemented.")}getExtents(){const t=this.stem_direction===st.UP,e=[this.y_top,this.y_bottom],i=st.HEIGHT+this.stem_extension,s=(t?Math.min:Math.max)(...e),n=(t?Math.max:Math.min)(...e);return{topY:s+i*-this.stem_direction,baseY:n}}setVisibility(t){return this.hide=!t,this}setStemlet(t,e){return this.isStemlet=t,this.stemletHeight=e,this}adjustHeightForFlag(){this.renderHeightAdjustment=V.currentMusicFont().lookupMetric("stem.heightAdjustmentForFlag",-3)}adjustHeightForBeam(){this.renderHeightAdjustment=-st.WIDTH/2}draw(){if(this.setRendered(),this.hide)return;const t=this.checkContext();let e,i;const s=this.stem_direction;let n=0;s===st.DOWN?(e=this.x_begin,i=this.y_top+this.stem_down_y_offset,n=this.stem_down_y_base_offset):(e=this.x_end,i=this.y_bottom-this.stem_up_y_offset,n=this.stem_up_y_base_offset);const a=this.getHeight();!function(...t){st.DEBUG&&x("Vex.Flow.Stem",t)}("Rendering stem - ","Top Y: ",this.y_top,"Bottom Y: ",this.y_bottom);const o=this.isStemlet?a-this.stemletHeight*this.stem_direction:0;t.save(),t.openGroup("stem",this.getAttribute("id"),{pointerBBox:!0}),this.applyStyle(t),t.beginPath(),t.setLineWidth(st.WIDTH),t.moveTo(e,i-o+n),t.lineTo(e,i-a-this.renderHeightAdjustment*s),t.stroke(),this.restoreStyle(t),t.closeGroup(),t.restore()}}function nt(...t){rt.DEBUG&&x("Vex.Flow.TextFormatter",t)}st.DEBUG=!1;const at={},ot={};class rt{constructor(t){this.family="",this.size=14,this.resolution=1e3,this.glyphs={},this.serifs=!1,this.monospaced=!1,this.italic=!1,this.bold=!1,this.superscriptOffset=0,this.subscriptOffset=0,this.maxSizeGlyph="H",this.cacheKey="",this.updateParams(t)}static getFontFamilies(){const t=[];for(const e in ot){const i=ot[e];t.push(Object.assign({},i))}return t}static create(t={}){nt("create: ",t),t.family||(t.family=F.SANS_SERIF);const e=[],i=t.family.split(/\s*,\s*/);for(const t of i){for(const i in ot)i.startsWith(t)&&e.push(ot[i]);if(e.length>0)break}let s;if(0===e.length)s=new rt(Object.values(ot)[0]);else if(1===e.length)s=new rt(e[0]);else{const i=F.isBold(t.weight),n=F.isItalic(t.style),a=e.find((t=>t.bold===i&&t.italic===n));if(a)s=new rt(a);else{const t=e.find((t=>t.italic===n||t.bold===i));s=new rt(t||e[0])}}const n=t.size;if(void 0!==n){const t=F.convertSizeToPointValue(n);s.setFontSize(t)}return s}static getInfo(t){return ot[t]}static registerInfo(t,e=!1){nt("registerInfo: ",t,e);const i=t.family;(void 0===ot[i]||e)&&(ot[i]=t)}updateParams(t){t.family&&(this.family=t.family),t.resolution&&(this.resolution=t.resolution),t.glyphs&&(this.glyphs=t.glyphs),t.serifs&&(this.serifs=t.serifs),t.monospaced&&(this.monospaced=t.monospaced),t.italic&&(this.italic=t.italic),t.bold&&(this.bold=t.bold),t.maxSizeGlyph&&(this.maxSizeGlyph=t.maxSizeGlyph),t.superscriptOffset&&(this.superscriptOffset=t.superscriptOffset),t.subscriptOffset&&(this.subscriptOffset=t.subscriptOffset),this.updateCacheKey()}updateCacheKey(){const t=this.family.replace(/\s+/g,"_"),e=this.size,i=this.bold?D.BOLD:D.NORMAL,s=this.italic?N.ITALIC:N.NORMAL;this.cacheKey=`${t}%${e}%${i}%${s}`}getGlyphMetrics(t){return this.glyphs[t]?this.glyphs[t]:this.glyphs[this.maxSizeGlyph]}get maxHeight(){return this.getGlyphMetrics(this.maxSizeGlyph).ha/this.resolution*this.fontSizeInPixels}getWidthForCharacterInEm(t){var e;const i=this.getGlyphMetrics(t);if(i){return(null!==(e=i.advanceWidth)&&void 0!==e?e:0)/this.resolution}return.65}getWidthForTextInEm(t){const e=this.cacheKey;let i=at[e];void 0===i&&(i={},at[e]=i);let s=i[t];if(void 0===s){s=0;for(let e=0;et>e?t:e)),h+=(this.text_line+1)*V.STAVE_LINE_DISTANCE+o,d&&i===st.DOWN&&(h=Math.max(h,l.topY+o+c*this.text_line))}else if(this.verticalJustification===lt.CENTER){const t=e.getYForTopText(this.text_line)-1;h=t+(b.getYForBottomText(this.text_line)-t)/2+o/2}else if(this.verticalJustification===lt.TOP)h=e.getYs()[0]-(this.text_line+1)*V.STAVE_LINE_DISTANCE,d&&i===st.UP&&(c=l.topY=1}function ut(t,e){return mt(t,e)?e===dt?Math.ceil:Math.floor:Math.round}const pt=t=>b(t)||h(t);class ft extends Z{constructor(t){super(),this.type=t,this.position=bt,this.render_options={font_scale:38},this.reset()}static get CATEGORY(){return u.Articulation}static format(t,e){if(!t||0===t.length)return!1;let i=0;const s=(t,e,i)=>gt(ut(e,i),_(t.glyph.getMetrics().height)/10+.5);t.forEach((t=>{const n=t.checkAttachedNote();i=Math.max(n.getGlyph().getWidth(),i);let a=5;const o=n.hasStem()?n.getStemDirection():st.UP;let r=0;if(g(n)){const t=n.getStem();t&&(r=Math.abs(t.getHeight())/V.STAVE_LINE_DISTANCE)}const h=n.getStave();if(h&&(a=h.getNumLines()),t.getPosition()===dt){let i=n.getLineNumber(!0);o===st.UP&&(i+=r);let h=s(t,e.top_text_line,dt);const l=i+e.top_text_line+.5;!t.articulation.between_lines&&lt.getWidth())).reduce(((t,e)=>Math.max(e,t))),a=Math.min(Math.max(n-i,0),Math.max(n-(e.left_shift+e.right_shift),0));return e.left_shift+=a/2,e.right_shift+=a/2,!0}static easyScoreHook({articulations:t},e,i){if(!t)return;const s={staccato:"a.",tenuto:"a-",accent:"a>"};t.split(",").map((t=>t.trim().split("."))).map((([t,e])=>{const n={type:s[t]};return e&&(n.position=Z.PositionString[e]),i.getFactory().Articulation(n)})).map((t=>e.addModifier(t,0)))}reset(){this.articulation=V.articulationCodes(this.type);const t=_(this.articulation,"ArgumentError",`Articulation not found: ${this.type}`),e=(this.position===dt?t.aboveCode:t.belowCode)||t.code;this.glyph=new Q(null!=e?e:"",this.render_options.font_scale),this.setWidth(_(this.glyph.getMetrics().width))}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=this.checkIndex(),{position:s,glyph:n,text_line:a}=this,o=this.articulation.between_lines,r=e.checkStave(),h=r.getSpacingBetweenLines(),l=m(e),{x:c}=e.getModifierStartXY(s,i),d=!o||l,b=function(t,e){const i=e===dt&&t.getStemDirection()===st.UP||e===bt&&t.getStemDirection()===st.DOWN;return pt(t)?t.hasStem()&&i?.5:1:t.hasStem()&&i?1:0}(e,s),g=V.currentMusicFont().lookupMetric(`articulation.${n.getCode()}.padding`,0);let u={[dt]:()=>{n.setOrigin(.5,1);const t=function(t,e){const i=t.getStemDirection(),{topY:s,baseY:n}=t.getStemExtents();if(pt(t))return t.hasStem()?i===st.UP?s:n:Math.min(...t.getYs());if(m(t))return t.hasStem()&&i===st.UP?s:t.checkStave().getYForTopText(e);throw new p("UnknownCategory","Only can get the top and bottom ys of stavenotes and tabnotes")}(e,a)-(a+b)*h;return d?Math.min(r.getYForTopText(ft.INITIAL_OFFSET),t):t},[bt]:()=>{n.setOrigin(.5,0);const t=function(t,e){const i=t.getStemDirection(),{topY:s,baseY:n}=t.getStemExtents();if(pt(t))return t.hasStem()?i===st.UP?n:s:Math.max(...t.getYs());if(m(t))return t.hasStem()?i===st.UP?t.checkStave().getYForBottomText(e):s:t.checkStave().getYForBottomText(e);throw new p("UnknownCategory","Only can get the top and bottom ys of stavenotes and tabnotes")}(e,a)+(a+b)*h;return d?Math.max(r.getYForBottomText(ft.INITIAL_OFFSET),t):t}}[s]();if(!l){const t=s===dt?-1:1,a=e.getKeyProps()[i].line,r=(e.getYs()[i]-u)/h+Number(a),l=function(t,e,i,s){const n=gt(ut(e,i),e);if(t&&mt(n,i)&&n%1==0)return n+.5*-s;return n}(o,r,s,t);mt(l,s)&&n.setOrigin(.5,.5),u+=Math.abs(l-r)*h*t+g*t}!function(...t){ft.DEBUG&&x("Vex.Flow.Articulation",t)}(`Rendering articulation at (x: ${c}, y: ${u})`),n.render(t,c,u)}}ft.DEBUG=!1,ft.INITIAL_OFFSET=-.5;class _t{static get CATEGORY(){return u.RenderContext}set font(t){this.setFont(t)}get font(){return this.getFont()}setRawFont(t){return this.setFont(t),this}}function xt(t,e,i,s="#F55"){t.save(),t.setFillStyle(s),t.beginPath(),t.arc(e,i,3,0,2*Math.PI,!1),t.closePath(),t.fill(),t.restore()}class St extends O{constructor(){super(),this._preFormatted=!1,this._postFormatted=!1,this.ticks=new v(0,1),this.intrinsicTicks=0,this.tickMultiplier=new v(1,1),this.width=0,this.x_shift=0,this.modifiers=[],this.tupletStack=[],this.align_center=!1,this.center_x_shift=0,this.ignore_ticks=!1,this.formatterMetrics={freedom:{left:0,right:0},duration:"",iterations:0,space:{used:0,mean:0,deviation:0}}}static get CATEGORY(){return u.Tickable}reset(){return this}getTicks(){return this.ticks}shouldIgnoreTicks(){return this.ignore_ticks}setIgnoreTicks(t){return this.ignore_ticks=t,this}setWidth(t){this.width=t}getWidth(){if(!this._preFormatted)throw new p("UnformattedNote","Can't call GetWidth on an unformatted note.");return this.width+(this.modifierContext?this.modifierContext.getWidth():0)}setXShift(t){return this.x_shift=t,this}getXShift(){return this.x_shift}getX(){return this.checkTickContext("Can't getX() without a TickContext.").getX()+this.x_shift}getFormatterMetrics(){return this.formatterMetrics}getCenterXShift(){return this.isCenterAligned()?this.center_x_shift:0}setCenterXShift(t){return this.center_x_shift=t,this}isCenterAligned(){return this.align_center}setCenterAlignment(t){return this.align_center=t,this}getVoice(){return _(this.voice,"NoVoice","Tickable has no voice.")}setVoice(t){this.voice=t}getTuplet(){return this.tuplet}getTupletStack(){return this.tupletStack}resetTuplet(t){let e,i;if(t){const s=this.tupletStack.indexOf(t);return-1!==s&&(this.tupletStack.splice(s,1),e=t.getNoteCount(),i=t.getNotesOccupied(),this.applyTickMultiplier(e,i)),this}for(;this.tupletStack.length;)e=(t=this.tupletStack.pop()).getNoteCount(),i=t.getNotesOccupied(),this.applyTickMultiplier(e,i);return this}setTuplet(t){if(t){this.tupletStack.push(t);const e=t.getNoteCount(),i=t.getNotesOccupied();this.applyTickMultiplier(i,e)}return this.tuplet=t,this}addToModifierContext(t){this.modifierContext=t;for(let t=0;tV.getGlyphProps(this.duration,t))),this.playNote=void 0,this.ignore_ticks=!1,this.width=0,this.leftDisplacedHeadPx=0,this.rightDisplacedHeadPx=0,this.x_shift=0,this.ys=[],t.align_center&&this.setCenterAlignment(t.align_center),this.render_options={annotation_spacing:5,glyph_font_scale:1,stroke_px:1,scale:1,font:"",y_shift:0}}static get CATEGORY(){return u.Note}static plotMetrics(t,e,i){const s=e.getMetrics(),n=e.getAbsoluteX()-s.modLeftPx-s.leftDisplacedHeadPx,a=e.getAbsoluteX()-s.leftDisplacedHeadPx,o=e.getAbsoluteX(),r=e.getAbsoluteX()+s.notePx,h=e.getAbsoluteX()+s.notePx+s.rightDisplacedHeadPx,l=e.getAbsoluteX()+s.notePx+s.rightDisplacedHeadPx+s.modRightPx,c=l+(e.getFormatterMetrics().freedom.right||0),d=l-n;t.save(),t.setFont(F.SANS_SERIF,8),t.fillText(Math.round(d)+"px",n+e.getXShift(),i);const b=i+7;function g(i,s,n,a=b){t.beginPath(),t.setStrokeStyle(n),t.setFillStyle(n),t.setLineWidth(3),t.moveTo(i+e.getXShift(),a),t.lineTo(s+e.getXShift(),a),t.stroke()}g(n,a,"red"),g(a,o,"#999"),g(o,r,"green"),g(r,h,"#999"),g(h,l,"red"),g(l,c,"#DD0"),g(n-e.getXShift(),n,"#BBB"),xt(t,o+e.getXShift(),b,"blue");const m=e.getFormatterMetrics();if(m.iterations>0){const s=m.space.deviation,n=s>=0?"+":"";t.setFillStyle("red"),t.fillText(n+Math.round(s),o+e.getXShift(),i-10)}t.restore()}static parseDuration(t){if(!t)return;const e=/(\d*\/?\d+|[a-z])(d*)([nrhms]|$)/.exec(t);if(!e)return;return{duration:e[1],dots:e[2].length,type:e[3]||"n"}}static parseNoteStruct(t){const e=yt.parseDuration(t.duration);if(!e)return;let i=t.type;if(i&&!V.validTypes[i])return;const s=[];i||(i=e.type||"n",void 0!==t.keys&&t.keys.forEach(((t,e)=>{const n=t.split("/");s[e]=n&&3===n.length?n[2]:i})));let n=V.durationToTicks(e.duration);if(!n)return;const a=t.dots?t.dots:e.dots;if("number"!=typeof a)return;let o=n;for(let t=0;t0}hasStem(){return!1}getNoteType(){return this.noteType}getBeam(){return this.beam}checkBeam(){return _(this.beam,"NoBeam","No beam attached to instance")}hasBeam(){return null!=this.beam}setBeam(t){return this.beam=t,this}addModifier(t,e=0){const i="Note.addModifier(modifier: Modifier, index: number=0)";if("string"==typeof e&&(e=parseInt(e),console.warn(i+" expected a number for `index`, but received a string.")),"object"!=typeof t||"number"!=typeof e)throw new p("WrongParams","Incorrect call signature. Use "+i+" instead.");return t.setNote(this),t.setIndex(e),super.addModifier(t),this}getModifiersByType(t){return this.modifiers.filter((e=>e.getCategory()===t))}getModifierStartXY(t,e,i){if(!this.preFormatted)throw new p("UnformattedNote","Can't call GetModifierStartXY on an unformatted note");return{x:this.getAbsoluteX(),y:this.ys[0]}}getRightParenthesisPx(t){return this.getKeyProps()[t].displaced?this.getRightDisplacedHeadPx():0}getLeftParenthesisPx(t){return this.getKeyProps()[t].displaced?this.getLeftDisplacedHeadPx()-this.x_shift:-this.x_shift}getFirstDotPx(){let t=this.getRightDisplacedHeadPx();return 0!==this.checkModifierContext().getMembers("Parenthesis").length&&(t+=V.currentMusicFont().lookupMetric("parenthesis.default.width")),t}getMetrics(){if(!this.preFormatted)throw new p("UnformattedNote","Can't call getMetrics on an unformatted note.");const t=this.modifierContext?this.modifierContext.getState().left_shift:0,e=this.modifierContext?this.modifierContext.getState().right_shift:0,i=this.getWidth();return{width:i,glyphWidth:this.getGlyphWidth(),notePx:i-t-e-this.leftDisplacedHeadPx-this.rightDisplacedHeadPx,modLeftPx:t,modRightPx:e,leftDisplacedHeadPx:this.leftDisplacedHeadPx,rightDisplacedHeadPx:this.rightDisplacedHeadPx,glyphPx:0}}getAbsoluteX(){let t=this.checkTickContext("Can't getAbsoluteX() without a TickContext.").getX();return this.stave&&(t+=this.stave.getNoteStartX()+V.currentMusicFont().lookupMetric("stave.padding")),this.isCenterAligned()&&(t+=this.getCenterXShift()),t}getStemDirection(){throw new p("NoStem","No stem attached to this note.")}getStemExtents(){throw new p("NoStem","No stem attached to this note.")}getTieRightX(){let t=this.getAbsoluteX();return t+=this.glyph.getWidth()/2,t+=-this.width/2+this.width+2,t}getTieLeftX(){let t=this.getAbsoluteX();return t+=this.glyph.getWidth()/2,t-=this.width/2+2,t}getKeys(){return this.keys}getKeyProps(){return this.keyProps}}var Tt,wt,vt,Et,Ct,kt;!function(t){t[t.CENTER=0]="CENTER",t[t.LEFT=1]="LEFT",t[t.RIGHT=2]="RIGHT",t[t.ABOVE=3]="ABOVE",t[t.BELOW=4]="BELOW",t[t.BEGIN=5]="BEGIN",t[t.END=6]="END"}(Tt||(Tt={}));class Dt extends O{constructor(){super(),this.width=0,this.x=0,this.padding=10,this.position=Tt.ABOVE}static get CATEGORY(){return u.StaveModifier}static get Position(){return Tt}getPosition(){return this.position}setPosition(t){return this.position=t,this}getStave(){return this.stave}checkStave(){return _(this.stave,"NoStave","No stave attached to instance.")}setStave(t){return this.stave=t,this}getWidth(){return this.width}setWidth(t){return this.width=t,this}getX(){return this.x}setX(t){return this.x=t,this}placeGlyphOnLine(t,e,i,s=0){t.setYShift(e.getYForLine(null!=i?i:0)-e.getYForGlyphs()+s)}getPadding(t){return void 0!==t&&t<2?0:this.padding}setPadding(t){return this.padding=t,this}setLayoutMetrics(t){return this.layoutMetrics=t,this}getLayoutMetrics(){return this.layoutMetrics}draw(...t){}}!function(t){t[t.SINGLE=1]="SINGLE",t[t.DOUBLE=2]="DOUBLE",t[t.END=3]="END",t[t.REPEAT_BEGIN=4]="REPEAT_BEGIN",t[t.REPEAT_END=5]="REPEAT_END",t[t.REPEAT_BOTH=6]="REPEAT_BOTH",t[t.NONE=7]="NONE"}(wt||(wt={}));class Nt extends Dt{constructor(t){super(),this.thickness=V.STAVE_LINE_THICKNESS;const e=wt;this.widths={},this.widths[e.SINGLE]=5,this.widths[e.DOUBLE]=5,this.widths[e.END]=5,this.widths[e.REPEAT_BEGIN]=5,this.widths[e.REPEAT_END]=5,this.widths[e.REPEAT_BOTH]=5,this.widths[e.NONE]=5,this.paddings={},this.paddings[e.SINGLE]=0,this.paddings[e.DOUBLE]=0,this.paddings[e.END]=0,this.paddings[e.REPEAT_BEGIN]=15,this.paddings[e.REPEAT_END]=15,this.paddings[e.REPEAT_BOTH]=15,this.paddings[e.NONE]=0,this.layoutMetricsMap={},this.layoutMetricsMap[e.SINGLE]={xMin:0,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.DOUBLE]={xMin:-3,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.END]={xMin:-5,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.REPEAT_END]={xMin:-10,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.REPEAT_BEGIN]={xMin:-2,xMax:10,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.REPEAT_BOTH]={xMin:-10,xMax:10,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.NONE]={xMin:0,xMax:0,paddingLeft:5,paddingRight:5},this.setPosition(Tt.BEGIN),this.setType(t)}static get CATEGORY(){return u.Barline}static get type(){return wt}static get typeString(){return{single:wt.SINGLE,double:wt.DOUBLE,end:wt.END,repeatBegin:wt.REPEAT_BEGIN,repeatEnd:wt.REPEAT_END,repeatBoth:wt.REPEAT_BOTH,none:wt.NONE}}getType(){return this.type}setType(t){return this.type="string"==typeof t?Nt.typeString[t]:t,this.setWidth(this.widths[this.type]),this.setPadding(this.paddings[this.type]),this.setLayoutMetrics(this.layoutMetricsMap[this.type]),this}draw(t){switch(t.checkContext(),this.setRendered(),this.type){case wt.SINGLE:this.drawVerticalBar(t,this.x,!1);break;case wt.DOUBLE:this.drawVerticalBar(t,this.x,!0);break;case wt.END:this.drawVerticalEndBar(t,this.x);break;case wt.REPEAT_BEGIN:this.drawRepeatBar(t,this.x,!0),t.getX()!==this.x&&this.drawVerticalBar(t,t.getX());break;case wt.REPEAT_END:this.drawRepeatBar(t,this.x,!1);break;case wt.REPEAT_BOTH:this.drawRepeatBar(t,this.x,!1),this.drawRepeatBar(t,this.x,!0)}}drawVerticalBar(t,e,i){const s=t.checkContext(),n=t.getTopLineTopY(),a=t.getBottomLineBottomY();i&&s.fillRect(e-3,n,1,a-n),s.fillRect(e,n,1,a-n)}drawVerticalEndBar(t,e){const i=t.checkContext(),s=t.getTopLineTopY(),n=t.getBottomLineBottomY();i.fillRect(e-5,s,1,n-s),i.fillRect(e-2,s,3,n-s)}drawRepeatBar(t,e,i){const s=t.checkContext(),n=t.getTopLineTopY(),a=t.getBottomLineBottomY();let o=3;i||(o=-5),s.fillRect(e+o,n,1,a-n),s.fillRect(e-2,n,3,a-n);i?o+=4:o-=4;const r=e+o+1;let h=(t.getNumLines()-1)*t.getSpacingBetweenLines();h=h/2-t.getSpacingBetweenLines()/2;let l=n+h+1;s.beginPath(),s.arc(r,l,2,0,2*Math.PI,!1),s.fill(),l+=t.getSpacingBetweenLines(),s.beginPath(),s.arc(r,l,2,0,2*Math.PI,!1),s.fill()}}class At extends yt{constructor(t=wt.SINGLE){super({duration:"b"}),this.metrics={widths:{}};const e=wt;this.metrics.widths={[e.SINGLE]:8,[e.DOUBLE]:12,[e.END]:15,[e.REPEAT_BEGIN]:14,[e.REPEAT_END]:14,[e.REPEAT_BOTH]:18,[e.NONE]:0},this.ignore_ticks=!0,this.setType(t)}static get CATEGORY(){return u.BarNote}getType(){return this.type}setType(t){return this.type="string"==typeof t?Nt.typeString[t]:t,this.setWidth(this.metrics.widths[this.type]),this}addToModifierContext(t){return this}preFormat(){return this.preFormatted=!0,this}draw(){const t=this.checkContext();!function(...t){At.DEBUG&&x("Vex.Flow.BarNote",t)}("Rendering bar line at: ",this.getAbsoluteX()),this.applyStyle(t);const e=new Nt(this.type);e.setX(this.getAbsoluteX()),e.draw(this.checkStave()),this.restoreStyle(t),this.setRendered()}}At.DEBUG=!1;class Pt extends Z{constructor(t,e=!1,i){super(),this.text=t,this.x_shift=0,this.release=e,this.tap="",this.resetFont(),this.render_options={line_width:1.5,line_style:"#777777",bend_width:8,release_width:8},i?this.phrase=i:(this.phrase=[{type:Pt.UP,text:this.text}],this.release&&this.phrase.push({type:Pt.DOWN,text:""})),this.updateWidth()}static get CATEGORY(){return u.Bend}static get UP(){return 0}static get DOWN(){return 1}static format(t,e){if(!t||0===t.length)return!1;let i=0;for(let s=0;st{const a=t+s,o=i;e.save(),e.beginPath(),e.setLineWidth(this.render_options.line_width),e.setStrokeStyle(this.render_options.line_style),e.setFillStyle(this.render_options.line_style),e.moveTo(t,i),e.quadraticCurveTo(a,o,t+s,n),e.stroke(),e.restore()},c=(t,i,s,n)=>{e.save(),e.beginPath(),e.setLineWidth(this.render_options.line_width),e.setStrokeStyle(this.render_options.line_style),e.setFillStyle(this.render_options.line_style),e.moveTo(t,n),e.quadraticCurveTo(t+s,n,t+s,i),e.stroke(),e.restore()},d=(t,i,s)=>{const n=i+4*s;e.beginPath(),e.moveTo(t,i),e.lineTo(t-4,n),e.lineTo(t+4,n),e.closePath(),e.fill()},b=(t,i)=>{e.save(),e.setFont(this.textFont);const s=t-e.measureText(i).width/2;e.fillText(i,s,h),e.restore()};let g,m=0,u=0;if(null===(t=this.tap)||void 0===t?void 0:t.length){b(i.getModifierStartXY(Z.Position.CENTER,this.index).x,this.tap)}for(let t=0;t0){const e=l.symbolBlocks[t-1];Ft.isSuperscript(e)||(n=s)}a&&n>0&&(p=!0,e.xShift=e.xShift+(n-s),s=n,n=0,l.setEnableKerning(!1)),i||a||(n=0),e.vAlign=p,s+=e.width,m=s}if(l.updateKerningAdjustments(),l.updateOverBarAdjustments(),l.getVertical()===Et.TOP?(l.setTextLine(e.top_text_line),e.top_text_line+=u):(l.setTextLine(e.text_line+1),e.text_line+=u+1),l.getReportWidth()&&g(b)){const t=b.getGlyph().getWidth();l.getHorizontal()===vt.LEFT?(r=Math.max(t,r),a=Math.max(a,m)+Ft.minPadding):l.getHorizontal()===vt.RIGHT?(h=Math.max(t,h),o=Math.max(o,m)):(a=Math.max(a,m/2)+Ft.minPadding,o=Math.max(o,m/2),r=Math.max(t/2,r),h=Math.max(t/2,h))}s=0}const l=Math.min(Math.max(o-h,0),Math.max(o-e.right_shift,0)),c=Math.min(Math.max(a-r,0),Math.max(a-e.left_shift,0));return e.left_shift+=c,e.right_shift+=l,!0}static get TEXT_FONT(){let t="Roboto Slab, Times, serif";return"Petaluma"===V.currentMusicFont().getName()&&(t="PetalumaScript, Arial, sans-serif"),{family:t,size:12,weight:D.NORMAL,style:N.NORMAL}}get superscriptOffset(){return Ft.superscriptOffset*this.textFormatter.fontSizeInPixels}get subscriptOffset(){return Ft.subscriptOffset*this.textFormatter.fontSizeInPixels}setReportWidth(t){return this.reportWidth=t,this}getReportWidth(){return this.reportWidth}updateOverBarAdjustments(){const t=this.symbolBlocks.findIndex((({symbolType:t,glyph:e})=>t===Ct.GLYPH&&void 0!==e&&"csymDiagonalArrangementSlash"===e.code));if(t<0)return;const e=this.symbolBlocks[t].width/4,i=.25*this.textFormatter.fontSizeInPixels;let s=0;for(;s0?this.symbolBlocks[t-1]:void 0;let s=0;e.symbolType===Ct.GLYPH&&void 0!==e.glyph&&e.glyph.code===Ft.glyphs.over.code&&(s+=e.glyph.metrics.x_shift),void 0!==i&&i.symbolType===Ct.GLYPH&&void 0!==i.glyph&&i.glyph.code===Ft.glyphs.over.code&&(s+=i.glyph.metrics.x_shift);let n=!1,a=!1;void 0!==i&&i.symbolType===Ct.TEXT&&(n=Ft.upperKerningText.some((t=>t===i.text[i.text.length-1])),a=Ft.lowerKerningText.some((t=>t===i.text[i.text.length-1])));const o=Ft.kerningOffset*this.textFormatter.fontSizeInPixels;return n&&e.symbolModifier===kt.SUPERSCRIPT&&(s+=o),a&&e.symbolType===Ct.TEXT&&(e.text[0]>="a"&&e.text[0]<="z"&&(s+=o/2),Ft.upperKerningText.some((t=>t===(null==i?void 0:i.text[i.text.length-1])))&&(s+=o/2)),s}getSymbolBlock(t={}){var e,i,s;const n=null!==(e=t.symbolType)&&void 0!==e?e:Ct.TEXT,a={text:null!==(i=t.text)&&void 0!==i?i:"",symbolType:n,symbolModifier:null!==(s=t.symbolModifier)&&void 0!==s?s:kt.NONE,xShift:0,yShift:0,vAlign:!1,width:0};if(n===Ct.GLYPH&&"string"==typeof t.glyph){const e=Ft.glyphs[t.glyph],i=20;a.glyph=new Q(e.code,i,{category:"chordSymbol"})}else n===Ct.TEXT?a.width=this.textFormatter.getWidthForTextInEm(a.text):n===Ct.LINE&&(a.width=t.width);return a}addSymbolBlock(t){return this.symbolBlocks.push(this.getSymbolBlock(t)),this}addText(t,e={}){const i=Ct.TEXT;return this.addSymbolBlock(Object.assign(Object.assign({},e),{text:t,symbolType:i}))}addTextSuperscript(t){const e=Ct.TEXT,i=kt.SUPERSCRIPT;return this.addSymbolBlock({text:t,symbolType:e,symbolModifier:i})}addTextSubscript(t){const e=Ct.TEXT,i=kt.SUBSCRIPT;return this.addSymbolBlock({text:t,symbolType:e,symbolModifier:i})}addGlyphSuperscript(t){const e=Ct.GLYPH,i=kt.SUPERSCRIPT;return this.addSymbolBlock({glyph:t,symbolType:e,symbolModifier:i})}addGlyph(t,e={}){const i=Ct.GLYPH;return this.addSymbolBlock(Object.assign(Object.assign({},e),{glyph:t,symbolType:i}))}addGlyphOrText(t,e={}){let i="";for(let s=0;s0&&(this.addText(i,e),i=""),this.addGlyph(n,e)):i+=n}return i.length>0&&this.addText(i,e),this}addLine(t,e={}){const i=Ct.LINE;return this.addSymbolBlock(Object.assign(Object.assign({},e),{symbolType:i,width:t}))}setFont(t,e,i,s){return super.setFont(t,e,i,s),this.textFormatter=rt.create(this.textFont),this}setEnableKerning(t){return this.useKerning=t,this}setVertical(t){return this.vertical="string"==typeof t?Ft.VerticalJustifyString[t]:t,this}getVertical(){return this.vertical}setHorizontal(t){return this.horizontal="string"==typeof t?Ft.HorizontalJustifyString[t]:t,this}getHorizontal(){return this.horizontal}getWidth(){let t=0;return this.symbolBlocks.forEach((e=>{t+=e.vAlign?0:e.width})),t}getYOffsetForText(t){var e;let i=0,s=0;for(s=0;s0?i/n*-1:0}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered(),t.save(),t.openGroup("chordsymbol",this.getAttribute("id"));const i=e.getModifierStartXY(Z.Position.ABOVE,this.index);let s;t.setFont(this.textFont);const n=e.hasStem(),a=e.checkStave();if(this.vertical===Et.BOTTOM){if(s=a.getYForBottomText(this.text_line+V.TEXT_HEIGHT_OFFSET_HACK),n){const t=e.checkStem().getExtents(),i=a.getSpacingBetweenLines(),n=1===e.getStemDirection()?t.baseY:t.topY;s=Math.max(s,n+i*(this.text_line+2))}}else if(s=Math.min(a.getYForTopText(this.text_line),e.getYs()[0]-10),n){const t=e.checkStem().getExtents(),i=a.getSpacingBetweenLines();s=Math.min(s,t.topY-5-i*this.text_line)}let o=i.x;o=this.horizontal===vt.LEFT?i.x:this.horizontal===vt.RIGHT?i.x+this.getWidth():this.horizontal===vt.CENTER?i.x-this.getWidth()/2:e.getStemX()-this.getWidth()/2,Mt("Rendering ChordSymbol: ",this.textFormatter,o,s),this.symbolBlocks.forEach((e=>{const i=Ft.isSuperscript(e),n=Ft.isSubscript(e);let a=s;if(Mt("shift was ",e.xShift,e.yShift),Mt("curY pre sub ",a),i&&(a+=this.superscriptOffset),n&&(a+=this.subscriptOffset),Mt("curY sup/sub ",a),e.symbolType===Ct.TEXT){if((i||n)&&(t.save(),this.textFont)){const{family:e,size:i,weight:s,style:n}=this.textFont,a=F.scaleSize(i,Ft.superSubRatio);t.setFont(e,a,s,n)}Mt("Rendering Text: ",e.text,o+e.xShift,a+e.yShift),t.fillText(e.text,o+e.xShift,a+e.yShift),(i||n)&&t.restore()}else e.symbolType===Ct.GLYPH&&e.glyph?(a+=e.yShift,Mt("Rendering Glyph: ",e.glyph.code,o+e.xShift,a),e.glyph.render(t,o+e.xShift,a)):e.symbolType===Ct.LINE&&(Mt("Rendering Line : ",e.width,o,a),t.beginPath(),t.setLineWidth(1),t.moveTo(o,s),t.lineTo(o+e.width,a),t.stroke());o+=e.width,e.vAlign&&(o+=e.xShift)})),t.closeGroup(),t.restore()}}Ft.DEBUG=!1,Ft.HorizontalJustify=vt,Ft.HorizontalJustifyString={left:vt.LEFT,right:vt.RIGHT,center:vt.CENTER,centerStem:vt.CENTER_STEM},Ft.VerticalJustify=Et,Ft.VerticalJustifyString={top:Et.TOP,above:Et.TOP,below:Et.BOTTOM,bottom:Et.BOTTOM},Ft.glyphs={diminished:{code:"csymDiminished"},dim:{code:"csymDiminished"},halfDiminished:{code:"csymHalfDiminished"},"+":{code:"csymAugmented"},augmented:{code:"csymAugmented"},majorSeventh:{code:"csymMajorSeventh"},minor:{code:"csymMinor"},"-":{code:"csymMinor"},"(":{code:"csymParensLeftTall"},leftParen:{code:"csymParensLeftTall"},")":{code:"csymParensRightTall"},rightParen:{code:"csymParensRightTall"},leftBracket:{code:"csymBracketLeftTall"},rightBracket:{code:"csymBracketRightTall"},leftParenTall:{code:"csymParensLeftVeryTall"},rightParenTall:{code:"csymParensRightVeryTall"},"/":{code:"csymDiagonalArrangementSlash"},over:{code:"csymDiagonalArrangementSlash"},"#":{code:"accidentalSharp"},b:{code:"accidentalFlat"}},Ft.symbolTypes=Ct,Ft.symbolModifiers=kt,Ft.noFormat=!1;class Bt extends Z{constructor(){super(),this.position=Z.Position.RIGHT,this.radius=2,this.setWidth(5),this.dot_shiftY=0}static get CATEGORY(){return u.Dot}static getDots(t){return t.getModifiersByType(Bt.CATEGORY)}static buildAndAttach(t,e){for(const i of t)if(null==e?void 0:e.all)for(let t=0;te.line-t.line));let a=i,o=0,r=null,h=null,l=null,c=0;for(let t=0;to?a:o,r=b,h=i}return e.right_shift+=o,!0}setNote(t){return this.note=t,h(t)&&(this.radius*=.5,this.setWidth(3)),this}setDotShiftY(t){return this.dot_shiftY=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.checkStave().getSpacingBetweenLines(),s=e.getModifierStartXY(this.position,this.index,{forceFlagRight:!0});m(e)&&(s.y=e.getStemExtents().baseY);const n=s.x+this.x_shift+this.width-this.radius,a=s.y+this.y_shift+this.dot_shiftY*i;t.beginPath(),t.arc(n,a,this.radius,0,2*Math.PI,!1),t.fill()}}class Rt extends Z{constructor(t){super(),this.finger=t,this.width=7,this.position=Z.Position.LEFT,this.x_shift=0,this.y_shift=0,this.x_offset=0,this.y_offset=0,this.resetFont()}static get CATEGORY(){return u.FretHandFinger}static format(t,e){const{left_shift:i,right_shift:s}=e;if(!t||0===t.length)return!1;const n=[];let a=null,o=0,r=0;for(let h=0;he.line-t.line));let h=0,l=0,c=0,d=0,b=null,g=null;for(let t=0;tc?e:c):o===Z.Position.RIGHT&&(m.setXShift(l),e=r+_,d=e>d?e:d),b=u,g=a}return e.left_shift+=c,e.right_shift+=d,!0}static easyScoreHook({fingerings:t}={},e,i){null==t||t.split(",").map((t=>{const e=t.trim().split("."),s={number:e[0]};return e[1]&&(s.position=e[1]),i.getFactory().Fingering(s)})).map(((t,i)=>e.addModifier(t,i)))}setFretHandFinger(t){return this.finger=t,this}getFretHandFinger(){return this.finger}setOffsetX(t){return this.x_offset=t,this}setOffsetY(t){return this.y_offset=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getModifierStartXY(this.position,this.index);let s=i.x+this.x_shift+this.x_offset,n=i.y+this.y_shift+this.y_offset+5;switch(this.position){case Z.Position.ABOVE:s-=4,n-=12;break;case Z.Position.BELOW:s-=2,n+=10;break;case Z.Position.LEFT:s-=this.width;break;case Z.Position.RIGHT:s+=1;break;default:throw new p("InvalidPosition",`The position ${this.position} does not exist`)}t.save(),t.setFont(this.textFont),t.fillText(""+this.finger,s,n),t.restore()}}Rt.TEXT_FONT={family:F.SANS_SERIF,size:9,weight:D.BOLD,style:N.NORMAL};class Ot extends yt{constructor(t){super(t),this.custom_glyph=!1,this.stem_up_x_offset=0,this.stem_down_x_offset=0,this.index=t.index,this.x=t.x||0,this.y=t.y||0,t.note_type&&(this.noteType=t.note_type),this.displaced=t.displaced||!1,this.stem_direction=t.stem_direction||st.UP,this.line=t.line||0,this.glyph=V.getGlyphProps(this.duration,this.noteType),_(this.glyph,"BadArguments",`No glyph found for duration '${this.duration}' and type '${this.noteType}'`),(this.line>5||this.line<0)&&this.glyph.leger_code_head&&(this.glyph.code_head=this.glyph.leger_code_head),this.glyph_code=this.glyph.code_head,this.x_shift=t.x_shift||0,t.custom_glyph_code&&(this.custom_glyph=!0,this.glyph_code=t.custom_glyph_code,this.stem_up_x_offset=t.stem_up_x_offset||0,this.stem_down_x_offset=t.stem_down_x_offset||0),this.setStyle(t.style),this.slashed=t.slashed||!1,this.render_options=Object.assign(Object.assign({},this.render_options),{glyph_font_scale:t.glyph_font_scale||V.NOTATION_FONT_SCALE}),this.setWidth(this.glyph.getWidth(this.render_options.glyph_font_scale))}static get CATEGORY(){return u.NoteHead}getWidth(){return this.width}isDisplaced(){return!0===this.displaced}getGlyph(){return this.glyph}setX(t){return this.x=t,this}getY(){return this.y}setY(t){return this.y=t,this}getLine(){return this.line}setLine(t){return this.line=t,this}getAbsoluteX(){const t=this.preFormatted?super.getAbsoluteX():this.x,e=st.WIDTH/2,i=V.currentMusicFont(),s=i.lookupMetric("notehead.shiftX",0)*this.stem_direction,n=i.lookupMetric("noteHead.displaced.shiftX",0)*this.stem_direction;return t+s+(this.displaced?(this.width-e)*this.stem_direction+n:0)}getBoundingBox(){if(!this.preFormatted)throw new p("UnformattedNote","Can't call getBoundingBox on an unformatted note.");const t=this.checkStave().getSpacingBetweenLines(),e=t/2,i=this.y-e;return new C(this.getAbsoluteX(),i,this.width,t)}setStave(t){const e=this.getLine();return this.stave=t,this.stave&&(this.setY(this.stave.getYForNote(e)),this.setContext(this.stave.getContext())),this}preFormat(){if(this.preFormatted)return this;const t=this.getWidth()+this.leftDisplacedHeadPx+this.rightDisplacedHeadPx;return this.setWidth(t),this.preFormatted=!0,this}draw(){const t=this.checkContext();this.setRendered();let e=this.getAbsoluteX();this.custom_glyph&&(e+=this.stem_direction===st.UP?this.stem_up_x_offset:this.stem_down_x_offset);const i=this.y;!function(...t){Ot.DEBUG&&x("Vex.Flow.NoteHead",t)}("Drawing note head '",this.noteType,this.duration,"' at",e,i);const s=this.stem_direction,n=this.render_options.glyph_font_scale;this.applyStyle(t);const a=`${this.glyph_code}Stem${s===st.UP?"Up":"Down"}`;if("s"===this.noteType){const n=this.checkStave().getSpacingBetweenLines();!function(t,e,i,s,n,a){const o=V.SLASH_NOTEHEAD_WIDTH;t.save(),t.setLineWidth(V.STEM_WIDTH);let r=!1;if(V.durationToNumber(e)>2&&(r=!0),r||(i-=V.STEM_WIDTH/2*n),t.beginPath(),t.moveTo(i,s+a),t.lineTo(i,s+1),t.lineTo(i+o,s-a),t.lineTo(i+o,s),t.lineTo(i,s+a),t.closePath(),r?t.fill():t.stroke(),V.durationToFraction(e).equals(.5)){const e=[-3,-1,o+1,o+3];for(let n=0;n2&&i++,2===V.durationToNumber(a.note.duration)?e++:V.durationToNumber(a.note.duration)>2&&i++,2!==e&&2!==i||s.note.getModifiersByType(u.Dot).length!==a.note.getModifiersByType(u.Dot).length||t<1&&t>0?(l=h+2,s.stemDirection===a.stemDirection?s.note.setXShift(l):a.note.setXShift(l)):s.note.voice!==a.note.voice&&s.stemDirection===a.stemDirection&&(s.line!=a.line?(l=h+2,s.note.setXShift(l)):1===a.stemDirection&&(a.stemDirection=-1,a.note.setStemDirection(-1)))}else t<1?(l=h+2,s.stemDirection===a.stemDirection?s.note.setXShift(l):a.note.setXShift(l)):s.note.hasStem()?(s.stemDirection=-s.note.getStemDirection(),s.note.setStemDirection(s.stemDirection)):a.note.hasStem()&&(a.stemDirection=-a.note.getStemDirection(),a.note.setStemDirection(a.stemDirection))}return e.right_shift+=l,!0}if(!n)throw new p("InvalidState","noteM not defined.");if(n.isrest&&!s.isrest&&!a.isrest&&(s.minLine<=n.maxLine||n.minLine<=a.maxLine)){return n.maxLine-n.minLinet.postFormat())),!0)}reset(){super.reset();const t=this._noteHeads.map((t=>t.getStyle()));this.buildNoteHeads(),this._noteHeads.forEach(((e,i)=>{const s=t[i];s&&e.setStyle(s)}));const e=this.stave;return e&&this._noteHeads.forEach((t=>t.setStave(e))),this.calcNoteDisplacements(),this}setBeam(t){return this.beam=t,this.calcNoteDisplacements(),this.stem&&this.stem.setExtension(this.getStemExtension()),this}buildStem(){return this.setStem(new st({hide:!!this.isRest()})),this}buildNoteHeads(){this._noteHeads=[];const t=this.getStemDirection(),e=this.getKeys();let i,s,n,a,o,r=!1;t===st.UP?(n=0,a=e.length,o=1):(n=e.length-1,a=-1,o=-1);for(let e=n;e!==a;e+=o){const n=this.sortedKeyProps[e].keyProps,a=n.line;void 0===i?i=a:(s=Math.abs(i-a),0===s||.5===s?r=!r:(r=!1,this.use_default_head_x=!0)),i=a;const o=new Ot({duration:this.duration,note_type:this.noteType,displaced:r,stem_direction:t,custom_glyph_code:n.code,glyph_font_scale:this.render_options.glyph_font_scale,x_shift:n.shift_right,stem_up_x_offset:n.stem_up_x_offset,stem_down_x_offset:n.stem_down_x_offset,line:n.line});this.addChildElement(o),this._noteHeads[this.sortedKeyProps[e].index]=o}}autoStem(){this.setStemDirection(this.calculateOptimalStemDirection())}calculateOptimalStemDirection(){this.minLine=this.sortedKeyProps[0].keyProps.line,this.maxLine=this.sortedKeyProps[this.keyProps.length-1].keyProps.line;return(this.minLine+this.maxLine)/2<3?st.UP:st.DOWN}calculateKeyProps(){let t;for(let e=0;e0&&(this.keyProps[e-1].displaced=!0)),t=a,this.keyProps.push(n)}this.keyProps.forEach(((t,e)=>{this.sortedKeyProps.push({keyProps:t,index:e})})),this.sortedKeyProps.sort(((t,e)=>t.keyProps.line-e.keyProps.line))}getBoundingBox(){var t,e;if(!this.preFormatted)throw new p("UnformattedNote","Can't call getBoundingBox on an unformatted note.");const{width:i,modLeftPx:s,leftDisplacedHeadPx:n}=this.getMetrics(),a=this.getAbsoluteX()-s-n;let o=0,r=0;const h=(null!==(e=null===(t=this.getStave())||void 0===t?void 0:t.getSpacingBetweenLines())&&void 0!==e?e:0)/2,l=2*h;if(this.isRest()){const t=this.ys[0],e=V.durationToFraction(this.duration);e.equals(1)||e.equals(2)?(o=t-h,r=t+h):(o=t-this.glyph.line_above*l,r=t+this.glyph.line_below*l)}else if(this.glyph.stem){const t=this.getStemExtents();t.baseY+=h*this.getStemDirection(),o=Math.min(t.topY,t.baseY),r=Math.max(t.topY,t.baseY)}else{o=0,r=0;for(let t=0;te&&(e=s):s1}hasStem(){return this.glyph.stem}hasFlag(){return super.hasFlag()&&!this.isRest()}getStemX(){return"r"===this.noteType?this.getCenterGlyphX():super.getStemX()+(this.stem_direction?st.WIDTH/(2*-this.stem_direction):0)}getYForTopText(t){const e=this.getStemExtents();return Math.min(this.checkStave().getYForTopText(t),e.topY-this.render_options.annotation_spacing*(t+1))}getYForBottomText(t){const e=this.getStemExtents();return Math.max(this.checkStave().getYForTopText(t),e.baseY+this.render_options.annotation_spacing*t)}setStave(t){super.setStave(t);const e=this._noteHeads.map((e=>(e.setStave(t),e.getY())));if(this.setYs(e),this.stem){const{y_top:t,y_bottom:e}=this.getNoteHeadBounds();this.stem.setYBounds(t,e)}return this}isDisplaced(){return this.displaced}setNoteDisplaced(t){return this.displaced=t,this}getTieRightX(){let t=this.getAbsoluteX();return t+=this.getGlyphWidth()+this.x_shift+this.rightDisplacedHeadPx,this.modifierContext&&(t+=this.modifierContext.getRightShift()),t}getTieLeftX(){let t=this.getAbsoluteX();return t+=this.x_shift-this.leftDisplacedHeadPx,t}getLineForRest(){let t=this.keyProps[0].line;if(this.keyProps.length>1){const e=this.keyProps[this.keyProps.length-1].line;t=y(Math.max(t,e),Math.min(t,e))}return t}getModifierStartXY(t,e,i={}){var s,n;if(!this.preFormatted)throw new p("UnformattedNote","Can't call GetModifierStartXY on an unformatted note");if(0===this.ys.length)throw new p("NoYValues","No Y-Values calculated for this note.");const{ABOVE:a,BELOW:o,LEFT:r,RIGHT:h}=Z.Position;let l=0;return t===r?l=-2:t===h?(l=this.getGlyphWidth()+this.x_shift+2,this.stem_direction===st.UP&&this.hasFlag()&&(i.forceFlagRight||((t,e)=>e===(t.getStemDirection()===st.UP?t.keyProps.length-1:0))(this,e))&&(l+=null!==(n=null===(s=null==this?void 0:this.flag)||void 0===s?void 0:s.getMetrics().width)&&void 0!==n?n:0)):t!==o&&t!==a||(l=this.getGlyphWidth()/2),{x:this.getAbsoluteX()+l,y:this.ys[e]}}setStyle(t){return super.setGroupStyle(t)}setStemStyle(t){const e=this.getStem();return e&&e.setStyle(t),this}getStemStyle(){var t;return null===(t=this.stem)||void 0===t?void 0:t.getStyle()}setLedgerLineStyle(t){this.ledgerLineStyle=t}getLedgerLineStyle(){return this.ledgerLineStyle}setFlagStyle(t){var e;null===(e=this.flag)||void 0===e||e.setStyle(t)}getFlagStyle(){var t;return null===(t=this.flag)||void 0===t?void 0:t.getStyle()}setKeyStyle(t,e){return this._noteHeads[t].setStyle(e),this}setKeyLine(t,e){return this.keyProps[t].line=e,this.reset(),this}getKeyLine(t){return this.keyProps[t].line}getVoiceShiftWidth(){return this.getGlyphWidth()*(this.displaced?2:1)}calcNoteDisplacements(){this.setLeftDisplacedHeadPx(this.displaced&&this.stem_direction===st.DOWN?this.getGlyphWidth():0),this.setRightDisplacedHeadPx(!this.hasFlag()&&this.displaced&&this.stem_direction===st.UP?this.getGlyphWidth():0)}preFormat(){if(this.preFormatted)return;let t=0;this.modifierContext&&(this.modifierContext.preFormat(),0===this.modifierContext.getWidth()&&(t=Wt.minNoteheadPadding));let e=this.getGlyphWidth()+this.leftDisplacedHeadPx+this.rightDisplacedHeadPx+t;this.shouldDrawFlag()&&this.stem_direction===st.UP&&(e+=this.getGlyphWidth()),this.setWidth(e),this.preFormatted=!0}getNoteHeadBounds(){let t,e,i,s,n=1/0,a=-1/0,o=this.checkStave().getNumLines(),r=1,h=o,l=r;return this._noteHeads.forEach((c=>{const d=c.getLine(),b=c.getY();n=Math.min(b,n),a=Math.max(b,a),void 0===e&&c.isDisplaced()&&(e=c.getAbsoluteX()),void 0!==t||c.isDisplaced()||(t=c.getAbsoluteX()),o=Math.max(d,o),r=Math.min(d,r),c.isDisplaced()?(i=void 0===i?d:Math.max(d,i),s=void 0===s?d:Math.min(d,s)):(h=Math.max(d,h),l=Math.min(d,l))}),this),{y_top:n,y_bottom:a,displaced_x:e,non_displaced_x:t,highest_line:o,lowest_line:r,highest_displaced_line:i,lowest_displaced_line:s,highest_non_displaced_line:h,lowest_non_displaced_line:l}}getNoteHeadBeginX(){return this.getAbsoluteX()+this.x_shift}getNoteHeadEndX(){return this.getNoteHeadBeginX()+this.getGlyphWidth()}get noteHeads(){return this._noteHeads.slice()}get note_heads(){return console.warn("StaveNote.note_heads is deprecated. Use StaveNote.noteHeads instead.","This accessor will be removed in VexFlow 5.0."),this.noteHeads}drawLedgerLines(){const t=this.checkStave(),{glyph:e,render_options:{stroke_px:i}}=this,s=this.checkContext(),n=e.getWidth()+2*i,a=2*(e.getWidth()+i)-st.WIDTH/2;if(this.isRest())return;if(!s)throw new p("NoCanvasContext","Can't draw without a canvas context.");const{highest_line:o,lowest_line:r,highest_displaced_line:h,highest_non_displaced_line:l,lowest_displaced_line:c,lowest_non_displaced_line:d,displaced_x:b,non_displaced_x:g}=this.getNoteHeadBounds();if(o<6&&r>0)return;const m=Math.min(null!=b?b:0,null!=g?g:0),u=(t,e,o)=>{let r;r=o&&e?m-i:e?(null!=g?g:0)-i:(null!=b?b:0)-i;const h=e&&o?a:n;s.beginPath(),s.moveTo(r,t),s.lineTo(r+h,t),s.stroke()},f=Object.assign(Object.assign({},t.getDefaultLedgerLineStyle()),this.getLedgerLineStyle());this.applyStyle(s,f);for(let e=6;e<=o;++e){const i=void 0!==g&&e<=l,s=void 0!==h&&e<=h;u(t.getYForNote(e),i,s)}for(let e=0;e>=r;--e){const i=void 0!==g&&e>=d,s=void 0!==c&&e>=c;u(t.getYForNote(e),i,s)}this.restoreStyle(s,f)}drawModifiers(t){const e=this.checkContext();for(let i=0;i{t.openGroup("notehead",e.getAttribute("id"),{pointerBBox:!0}),e.setContext(t).draw(),this.drawModifiers(e),t.closeGroup()}))}drawStem(t){const e=this.checkContext();t&&this.setStem(new st(t)),this.shouldDrawFlag()&&this.stem&&this.stem.adjustHeightForFlag(),this.stem&&this.stem.setContext(e).draw()}getStaveNoteScale(){return 1}getStemExtension(){const t=super.getStemExtension();if(!this.glyph.stem)return t;const e=this.getStemDirection();if(e!==this.calculateOptimalStemDirection())return t;let i;i=e===st.UP?3-this.maxLine:this.minLine-3;const s=i-3.5;if(s<=0)return t;const n=this.getStave();let a=10;return null!=n&&(a=n.getSpacingBetweenLines()),t+s*a}draw(){if(!1===this.render_options.draw)return;if(0===this.ys.length)throw new p("NoYValues","Can't draw note without Y values.");const t=this.checkContext(),e=this.getNoteHeadBeginX(),i=this.hasStem()&&!this.beam;if(this._noteHeads.forEach((t=>t.setX(e))),this.stem){const t=this.getStemX();this.stem.setNoteHeadXBounds(t,t)}!function(...t){Wt.DEBUG&&x("Vex.Flow.StaveNote",t)}("Rendering ",this.isChord()?"chord :":"note :",this.keys),this.applyStyle(),t.openGroup("stavenote",this.getAttribute("id")),this.drawLedgerLines(),i&&this.drawStem(),this.drawNoteHeads(),this.drawFlag(),t.closeGroup(),this.restoreStyle(),this.setRendered()}}Wt.DEBUG=!1;class Gt extends O{constructor(t,e){super(),this.setNotes(t),this.text=e,this.render_options={cp1:8,cp2:12,text_shift_x:0,first_x_shift:0,last_x_shift:0,y_shift:7,tie_spacing:0},this.resetFont()}static get CATEGORY(){return u.StaveTie}setDirection(t){return this.direction=t,this}setNotes(t){if(!t.first_note&&!t.last_note)throw new p("BadArguments","Tie needs to have either first_note or last_note set.");if(t.first_indices||(t.first_indices=[0]),t.last_indices||(t.last_indices=[0]),t.first_indices.length!==t.last_indices.length)throw new p("BadArguments","Tied notes must have same number of indices.");return this.notes=t,this}isPartial(){return!this.notes.first_note||!this.notes.last_note}renderTie(t){if(0===t.first_ys.length||0===t.last_ys.length)throw new p("BadArguments","No Y-values to render");const e=this.checkContext();let i=this.render_options.cp1,s=this.render_options.cp2;Math.abs(t.last_x_px-t.first_x_px)<10&&(i=2,s=8);const n=this.render_options.first_x_shift,a=this.render_options.last_x_shift,o=this.render_options.y_shift*t.direction,r=this.notes.first_indices,h=this.notes.last_indices;for(let l=0;lMath.pow(this.options.softmaxFactor,e.getTicks().value()/t))).reduce(((t,e)=>t+e),0),this.expTicksUsed}softmax(t){this.expTicksUsed||(this.expTicksUsed=this.reCalculateExpTicksUsed());const e=this.ticksUsed.value();return(t=>Math.pow(this.options.softmaxFactor,t/e))(t)/this.expTicksUsed}addTickable(t){if(!t.shouldIgnoreTicks()){const e=t.getTicks();if(this.ticksUsed.add(e),this.expTicksUsed=0,(this.mode===Yt.STRICT||this.mode===Yt.FULL)&&this.ticksUsed.greaterThan(this.totalTicks))throw this.ticksUsed.subtract(e),new p("BadArgument","Too many ticks.");e.lessThan(this.smallestTickCount)&&(this.smallestTickCount=e.clone()),this.resolutionMultiplier=this.ticksUsed.denominator,this.totalTicks.add(0,this.ticksUsed.denominator)}return this.tickables.push(t),t.setVoice(this),this}addTickables(t){for(let e=0;e{e.getStave()||e.setStave(t)})),this.preFormatted=!0,this}checkStave(){return _(this.stave,"NoStave","No stave attached to instance.")}draw(t=this.checkContext(),e){let i;e=null!=e?e:this.stave,this.setRendered();for(let s=0;s1){const e=new Oe(t);e.render_options.beam_width=3,e.render_options.partial_beam_length=4,this.beams.push(e)}return this}setWidth(t){return this.width=t,this}getWidth(){return this.width+Wt.minNoteheadPadding}getGraceNotes(){return this.grace_notes}draw(){const t=this.checkContext(),e=this.checkAttachedNote();if(this.setRendered(),function(...t){jt.DEBUG&&x("Vex.Flow.GraceNoteGroup",t)}("Drawing grace note group for:",e),this.alignSubNotesWithNote(this.getGraceNotes(),e),this.grace_notes.forEach((e=>e.setContext(t).draw())),this.beams.forEach((e=>e.setContext(t).draw())),this.show_slur){const i=b(e),s=i?Gt:Ut;this.slur=new s({last_note:this.grace_notes[0],first_note:e,first_indices:[0],last_indices:[0]}),this.slur.render_options.cp2=12,this.slur.render_options.y_shift=(i?7:5)+this.render_options.slur_y_shift,this.slur.setContext(t).draw()}}}jt.DEBUG=!1;class Xt extends Z{constructor(t){super(),this.preFormatted=!1,this.position=Z.Position.LEFT,this.subNotes=t,this.subNotes.forEach((t=>{t.setIgnoreTicks(!1)})),this.width=0,this.formatter=new Ne,this.voice=new Ht({num_beats:4,beat_value:4,resolution:V.RESOLUTION}).setStrict(!1),this.voice.addTickables(this.subNotes)}static get CATEGORY(){return u.NoteSubGroup}static format(t,e){if(!t||0===t.length)return!1;let i=0;for(let e=0;ee.setContext(t).drawWithStyle()))}}class Vt{constructor(t){this.preFormatted=!1,this.postFormatted=!1,this.tickID=t&&t.tickID?t.tickID:0,this.currentTick=new v(0,1),this.maxTicks=new v(0,1),this.maxTickable=void 0,this.minTicks=void 0,this.minTickable=void 0,this.padding=1,this.x=0,this.xBase=0,this.xOffset=0,this.tickables=[],this.tickablesByVoice={},this.notePx=0,this.glyphPx=0,this.leftDisplacedHeadPx=0,this.rightDisplacedHeadPx=0,this.modLeftPx=0,this.modRightPx=0,this.totalLeftPx=0,this.totalRightPx=0,this.tContexts=[],this.width=0,this.formatterMetrics={freedom:{left:0,right:0}}}static getNextContext(t){const e=t.tContexts,i=e.indexOf(t);if(i+1t.isCenterAligned()))}getMetrics(){const{width:t,glyphPx:e,notePx:i,leftDisplacedHeadPx:s,rightDisplacedHeadPx:n,modLeftPx:a,modRightPx:o,totalLeftPx:r,totalRightPx:h}=this;return{width:t,glyphPx:e,notePx:i,leftDisplacedHeadPx:s,rightDisplacedHeadPx:n,modLeftPx:a,modRightPx:o,totalLeftPx:r,totalRightPx:h}}getCurrentTick(){return this.currentTick}setCurrentTick(t){this.currentTick=t,this.preFormatted=!1}addTickable(t,e){if(!t)throw new p("BadArgument","Invalid tickable added.");if(!t.shouldIgnoreTicks()){const e=t.getTicks();e.greaterThan(this.maxTicks)&&(this.maxTicks=e.clone(),this.maxTickable=t),(null==this.minTicks||e.lessThan(this.minTicks))&&(this.minTicks=e.clone(),this.minTickable=t)}return t.setTickContext(this),this.tickables.push(t),this.tickablesByVoice[e||0]=t,this.preFormatted=!1,this}preFormat(){if(this.preFormatted)return this;for(let t=0;t=0,!this.ornament)throw new p("ArgumentError",`Ornament not found: '${this.type}'`);this.x_shift=e?e.xOffset:0,this.y_shift=e?e.yOffset:0,this.glyph=new Q(this.ornament.code,this.render_options.font_scale,{category:`ornament.${this.ornament.code}`}),zt.ornamentNoteTransition.indexOf(this.type)>=0&&(this.delayed=!0),e||this.glyph.setOrigin(.5,1)}static get CATEGORY(){return u.Ornament}static get minPadding(){return V.currentMusicFont().lookupMetric("glyphs.noteHead.minPadding")}static format(t,e){if(!t||0===t.length)return!1;let i=0,s=e.right_shift,n=e.left_shift,a=0;for(let o=0;o=0&&(r.x_shift+=s+2),zt.ornamentAttack.indexOf(r.type)>=0&&(r.x_shift-=n+2),r.reportedWidth&&r.x_shift<0?n+=r.reportedWidth:r.reportedWidth&&r.x_shift>=0?s+=r.reportedWidth+zt.minPadding:i=Math.max(r.getWidth(),i),zt.ornamentArticulation.indexOf(r.type)>=0){_(r.note,"NoAttachedNote").getLineNumber()>=3||r.getPosition()===Z.Position.ABOVE?(e.top_text_line+=h,r.y_shift+=a,a-=r.glyph.bbox.getH()):(e.text_line+=h,r.y_shift+=a,a+=r.glyph.bbox.getH())}else r.getPosition()===Z.Position.ABOVE?(r.setTextLine(e.top_text_line),e.top_text_line+=h):(r.setTextLine(e.text_line),e.text_line+=h)}return e.left_shift=n+i/2,e.right_shift=s+i/2,!0}static get ornamentNoteTransition(){return["flip","jazzTurn","smear"]}static get ornamentAttack(){return["scoop"]}static get ornamentAlignWithNoteHead(){return["doit","fall","fallLong","doitLong","bend","plungerClosed","plungerOpen","scoop"]}static get ornamentRelease(){return["doit","fall","fallLong","doitLong","jazzTurn","smear","flip"]}static get ornamentArticulation(){return["bend","plungerClosed","plungerOpen"]}getMetrics(){return V.currentMusicFont().getMetrics().glyphs.jazzOrnaments[this.ornament.code]}setDelayed(t){return this.delayed=t,this}setUpperAccidental(t){const e=this.render_options.font_scale/1.3;return this.accidentalUpper=new Q(V.accidentalCodes(t).code,e),this.accidentalUpper.setOrigin(.5,1),this}setLowerAccidental(t){const e=this.render_options.font_scale/1.3;return this.accidentalLower=new Q(V.accidentalCodes(t).code,e),this.accidentalLower.setOrigin(.5,1),this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getStemDirection(),s=e.checkStave();t.openGroup("ornament",this.getAttribute("id"));const n=e.checkStem().getExtents();let a=i===st.DOWN?n.baseY:n.topY;m(e)&&(e.hasStem()?i===st.DOWN&&(a=s.getYForTopText(this.text_line)):a=s.getYForTopText(this.text_line));const o=i===st.DOWN,r=s.getSpacingBetweenLines();let h=1;!o&&e.hasBeam()&&(h+=.5);const l=a-r*(this.text_line+h),c=e.getModifierStartXY(this.position,this.index);let d=c.x,b=this.ornamentAlignWithNoteHead?c.y:Math.min(s.getYForTopText(this.text_line),l);if(b+=this.y_shift,this.delayed){let t=0;const i=d-(s.getX()-10);if(void 0!==this.delayXShift)t=this.delayXShift;else{t+=this.glyph.getMetrics().width/2;const n=Vt.getNextContext(e.getTickContext());t+=n?.5*(n.getX()-i):.5*(s.getX()+s.getWidth()-i),this.delayXShift=t}d+=t}!function(...t){zt.DEBUG&&x("Vex.Flow.Ornament",t)}("Rendering ornament: ",this.ornament,d,b),this.accidentalLower&&(this.accidentalLower.render(t,d,b),b-=this.accidentalLower.getMetrics().height,b-=this.render_options.accidentalLowerPadding),this.stemUpYOffset&&e.hasStem()&&1===e.getStemDirection()&&(b+=this.stemUpYOffset),e.getLineNumber()<5&&zt.ornamentNoteTransition.indexOf(this.type)>=0&&(b=e.checkStave().getBoundingBox().getY()+40),this.glyph.render(t,d+this.x_shift,b),this.accidentalUpper&&(b-=this.glyph.getMetrics().height+this.render_options.accidentalUpperPadding,this.accidentalUpper.render(t,d,b)),t.closeGroup()}}zt.DEBUG=!1;class Kt extends Z{constructor(t){super(),this.position=null!=t?t:Z.Position.LEFT,this.point=V.currentMusicFont().lookupMetric("parenthesis.default.point"),this.setWidth(V.currentMusicFont().lookupMetric("parenthesis.default.width"))}static get CATEGORY(){return u.Parenthesis}static buildAndAttach(t){for(const e of t)for(let t=0;th+n.width?s:h+n.width),o===$.LEFT&&(h=a.getLeftParenthesisPx(r),i=i>h+n.width?i:h+n.width),n.setXShift(h)}return e.left_shift+=i,e.right_shift+=s,!0}setNote(t){return this.note=t,this.point=V.currentMusicFont().lookupMetric("parenthesis.default.point"),this.setWidth(V.currentMusicFont().lookupMetric("parenthesis.default.width")),h(t)&&(this.point=V.currentMusicFont().lookupMetric("parenthesis.gracenote.point"),this.setWidth(V.currentMusicFont().lookupMetric("parenthesis.gracenote.width"))),this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getModifierStartXY(this.position,this.index,{forceFlagRight:!0}),s=i.x+this.x_shift,n=i.y+this.y_shift;this.position==Z.Position.RIGHT?Q.renderGlyph(t,s+1,n,this.point,"noteheadParenthesisRight",{category:"noteHead.standard.noteheadParenthesisRight"}):this.position==Z.Position.LEFT&&Q.renderGlyph(t,s-2,n,this.point,"noteheadParenthesisLeft",{category:"noteHead.standard.noteheadParenthesisLeft"})}}function $t(t){if(!t)return!1;const e=f();return"function"==typeof e.HTMLCanvasElement&&t instanceof e.HTMLCanvasElement||"function"==typeof t.getContext&&"function"==typeof t.toDataURL}function Jt(t){if(!t)return!1;const e=f();return"function"==typeof e.HTMLDivElement&&t instanceof e.HTMLDivElement||"function"==typeof t.appendChild&&"object"==typeof t.style}class qt extends _t{constructor(t){super(),this.textHeight=0,this.context2D=t,t.canvas?this.canvas=t.canvas:this.canvas={width:qt.WIDTH,height:qt.HEIGHT}}static get WIDTH(){return 600}static get HEIGHT(){return 400}static get CANVAS_BROWSER_SIZE_LIMIT(){return 32767}static sanitizeCanvasDims(t,e){const i=this.CANVAS_BROWSER_SIZE_LIMIT;return Math.max(t,e)>i&&(S("Canvas dimensions exceed browser limit. Cropping to "+i),t>i&&(t=i),e>i&&(e=i)),[t,e]}clear(){this.context2D.clearRect(0,0,this.canvas.width,this.canvas.height)}openGroup(t,e,i){}closeGroup(){}add(t){}setFillStyle(t){return this.context2D.fillStyle=t,this}setBackgroundFillStyle(t){return this}setStrokeStyle(t){return this.context2D.strokeStyle=t,this}setShadowColor(t){return this.context2D.shadowColor=t,this}setShadowBlur(t){const e=this.context2D.getTransform(),i=Math.sqrt(e.a*e.a+e.b*e.b+e.c*e.c+e.d*e.d);return this.context2D.shadowBlur=i*t,this}setLineWidth(t){return this.context2D.lineWidth=t,this}setLineCap(t){return this.context2D.lineCap=t,this}setLineDash(t){return this.context2D.setLineDash(t),this}scale(t,e){return this.context2D.scale(t,e),this}resize(t,e){const i=this.context2D.canvas,s=f().devicePixelRatio||1;return[t,e]=qt.sanitizeCanvasDims(t*s,e*s),t=t/s|0,e=e/s|0,i.width=t*s,i.height=e*s,$t(i)&&(i.style.width=t+"px",i.style.height=e+"px"),this.scale(s,s)}rect(t,e,i,s){return this.context2D.rect(t,e,i,s),this}fillRect(t,e,i,s){return this.context2D.fillRect(t,e,i,s),this}clearRect(t,e,i,s){return this.context2D.clearRect(t,e,i,s),this}beginPath(){return this.context2D.beginPath(),this}moveTo(t,e){return this.context2D.moveTo(t,e),this}lineTo(t,e){return this.context2D.lineTo(t,e),this}bezierCurveTo(t,e,i,s,n,a){return this.context2D.bezierCurveTo(t,e,i,s,n,a),this}quadraticCurveTo(t,e,i,s){return this.context2D.quadraticCurveTo(t,e,i,s),this}arc(t,e,i,s,n,a){return this.context2D.arc(t,e,i,s,n,a),this}fill(){return this.context2D.fill(),this}stroke(){return this.context2D.stroke(),this}closePath(){return this.context2D.closePath(),this}measureText(t){const e=this.context2D.measureText(t);let i=0,s=0;return e.fontBoundingBoxAscent?(i=-e.fontBoundingBoxAscent,s=e.fontBoundingBoxDescent+e.fontBoundingBoxAscent):(i=-e.actualBoundingBoxAscent,s=e.actualBoundingBoxDescent+e.actualBoundingBoxAscent),{x:0,y:i,width:e.width,height:s}}fillText(t,e,i){return this.context2D.fillText(t,e,i),this}save(){return this.context2D.save(),this}restore(){return this.context2D.restore(),this}set fillStyle(t){this.context2D.fillStyle=t}get fillStyle(){return this.context2D.fillStyle}set strokeStyle(t){this.context2D.strokeStyle=t}get strokeStyle(){return this.context2D.strokeStyle}setFont(t,e,i,s){const n=F.validate(t,e,i,s);return this.context2D.font=F.toCSSString(n),this.textHeight=F.convertSizeToPixelValue(n.size),this}getFont(){return this.context2D.font}}const Qt={path:{x:!0,y:!0,width:!0,height:!0,"font-family":!0,"font-weight":!0,"font-style":!0,"font-size":!0},rect:{"font-family":!0,"font-weight":!0,"font-style":!0,"font-size":!0},text:{width:!0,height:!0}},Zt="http://www.w3.org/2000/svg",te=2*Math.PI;class ee extends _t{constructor(t){super(),this.width=0,this.height=0,this.backgroundFillStyle="white",this.fontCSSString="",this.element=t;const e=this.create("svg");this.element.appendChild(e),this.svg=e,this.parent=this.svg,this.groups=[this.svg],this.path="",this.pen={x:NaN,y:NaN},this.lineWidth=1;const i={"font-family":F.SANS_SERIF,"font-size":F.SIZE+"pt","font-weight":D.NORMAL,"font-style":N.NORMAL};this.state=Object.assign({scale:{x:1,y:1}},i),this.attributes=Object.assign({"stroke-width":.3,"stroke-dasharray":"none",fill:"black",stroke:"black"},i),this.shadow_attributes={width:0,color:"black"},this.state_stack=[]}create(t){return document.createElementNS(Zt,t)}openGroup(t,e,i){const s=this.create("g");return this.groups.push(s),this.parent.appendChild(s),this.parent=s,t&&s.setAttribute("class",T(t)),e&&s.setAttribute("id",T(e)),i&&i.pointerBBox&&s.setAttribute("pointer-events","bounding-box"),s}closeGroup(){this.groups.pop(),this.parent=this.groups[this.groups.length-1]}add(t){this.parent.appendChild(t)}setFillStyle(t){return this.attributes.fill=t,this}setBackgroundFillStyle(t){return this.backgroundFillStyle=t,this}setStrokeStyle(t){return this.attributes.stroke=t,this}setShadowColor(t){return this.shadow_attributes.color=t,this}setShadowBlur(t){return this.shadow_attributes.width=t,this}setLineWidth(t){return this.attributes["stroke-width"]=t,this.lineWidth=t,this}setLineDash(t){if("[object Array]"===Object.prototype.toString.call(t))return this.attributes["stroke-dasharray"]=t.join(","),this;throw new p("ArgumentError","lineDash must be an array of integers.")}setLineCap(t){return this.attributes["stroke-linecap"]=t,this}resize(t,e){this.width=t,this.height=e,this.element.style.width=t.toString(),this.svg.style.width=t.toString(),this.svg.style.height=e.toString();const i={width:t,height:e};return this.applyAttributes(this.svg,i),this.scale(this.state.scale.x,this.state.scale.y),this}scale(t,e){this.state.scale={x:t,y:e};const i=this.width/t,s=this.height/e;return this.setViewBox(0,0,i,s),this}setViewBox(t,e,i,s){if("string"==typeof t)this.svg.setAttribute("viewBox",t);else{const n=t+" "+e+" "+i+" "+s;this.svg.setAttribute("viewBox",n)}}applyAttributes(t,e){const i=Qt[t.nodeName];for(const s in e)i&&i[s]||t.setAttributeNS(null,s,e[s]);return t}clear(){for(;this.svg.lastChild;)this.svg.removeChild(this.svg.lastChild);this.scale(this.state.scale.x,this.state.scale.y)}rect(t,e,i,s,n){s<0&&(e+=s,s*=-1);const a=this.create("rect");return n=null!=n?n:{fill:"none","stroke-width":this.lineWidth,stroke:"black"},this.applyAttributes(a,Object.assign({x:t,y:e,width:i,height:s},n)),this.add(a),this}fillRect(t,e,i,s){const n={fill:this.attributes.fill};return this.rect(t,e,i,s,n),this}clearRect(t,e,i,s){return this.rect(t,e,i,s,{"stroke-width":0,fill:this.backgroundFillStyle}),this}beginPath(){return this.path="",this.pen.x=NaN,this.pen.y=NaN,this}moveTo(t,e){return this.path+="M"+t+" "+e,this.pen.x=t,this.pen.y=e,this}lineTo(t,e){return this.path+="L"+t+" "+e,this.pen.x=t,this.pen.y=e,this}bezierCurveTo(t,e,i,s,n,a){return this.path+="C"+t+" "+e+","+i+" "+s+","+n+" "+a,this.pen.x=n,this.pen.y=a,this}quadraticCurveTo(t,e,i,s){return this.path+="Q"+t+" "+e+","+i+" "+s,this.pen.x=i,this.pen.y=s,this}arc(t,e,i,s,n,a){const o=t+i*Math.cos(s),r=e+i*Math.sin(s),h=w(s),l=w(n);if(!a&&n-s>=te||a&&s-n>=te||h===l){const n=t+i*Math.cos(s+Math.PI),a=e+i*Math.sin(s+Math.PI);this.path+=`M${o} ${r} A${i} ${i} 0 0 0 ${n} ${a} `,this.path+=`A${i} ${i} 0 0 0 ${o} ${r}`,this.pen.x=o,this.pen.y=r}else{const c=t+i*Math.cos(n),d=e+i*Math.sin(n);let b;s=h,n=l,b=Math.abs(n-s)n&&(b=!b);const g=!a;this.path+=`M${o} ${r} A${i} ${i} 0 ${+b} ${+g} ${c} ${d}`,this.pen.x=c,this.pen.y=d}return this}closePath(){return this.path+="Z",this}getShadowStyle(){const t=this.shadow_attributes;return`filter: drop-shadow(0 0 ${t.width/1.5}px ${t.color})`}fill(t){const e=this.create("path");return void 0===t&&(t=Object.assign(Object.assign({},this.attributes),{stroke:"none"})),t.d=this.path,this.shadow_attributes.width>0&&(t.style=this.getShadowStyle()),this.applyAttributes(e,t),this.add(e),this}stroke(){const t=this.create("path"),e=Object.assign(Object.assign({},this.attributes),{fill:"none","stroke-width":this.lineWidth,d:this.path});return this.shadow_attributes.width>0&&(e.style=this.getShadowStyle()),this.applyAttributes(t,e),this.add(t),this}measureText(t){return ee.measureTextCache.lookup(t,this.svg,this.attributes)}fillText(t,e,i){if(!t||t.length<=0)return this;const s=Object.assign(Object.assign({},this.attributes),{stroke:"none",x:e,y:i}),n=this.create("text");return n.textContent=t,this.applyAttributes(n,s),this.add(n),this}save(){return this.state_stack.push({state:{"font-family":this.state["font-family"],"font-weight":this.state["font-weight"],"font-style":this.state["font-style"],"font-size":this.state["font-size"],scale:this.state.scale},attributes:{"font-family":this.attributes["font-family"],"font-weight":this.attributes["font-weight"],"font-style":this.attributes["font-style"],"font-size":this.attributes["font-size"],fill:this.attributes.fill,stroke:this.attributes.stroke,"stroke-width":this.attributes["stroke-width"],"stroke-dasharray":this.attributes["stroke-dasharray"]},shadow_attributes:{width:this.shadow_attributes.width,color:this.shadow_attributes.color},lineWidth:this.lineWidth}),this}restore(){const t=this.state_stack.pop();if(t){const e=t;this.state["font-family"]=e.state["font-family"],this.state["font-weight"]=e.state["font-weight"],this.state["font-style"]=e.state["font-style"],this.state["font-size"]=e.state["font-size"],this.state.scale=e.state.scale,this.attributes["font-family"]=e.attributes["font-family"],this.attributes["font-weight"]=e.attributes["font-weight"],this.attributes["font-style"]=e.attributes["font-style"],this.attributes["font-size"]=e.attributes["font-size"],this.attributes.fill=e.attributes.fill,this.attributes.stroke=e.attributes.stroke,this.attributes["stroke-width"]=e.attributes["stroke-width"],this.attributes["stroke-dasharray"]=e.attributes["stroke-dasharray"],this.shadow_attributes.width=e.shadow_attributes.width,this.shadow_attributes.color=e.shadow_attributes.color,this.lineWidth=e.lineWidth}return this}set fillStyle(t){this.setFillStyle(t)}get fillStyle(){return this.attributes.fill}set strokeStyle(t){this.setStrokeStyle(t)}get strokeStyle(){return this.attributes.stroke}setFont(t,e,i,s){const n=F.validate(t,e,i,s);this.fontCSSString=F.toCSSString(n);const a={"font-family":n.family,"font-size":n.size,"font-weight":n.weight,"font-style":n.style};return this.attributes=Object.assign(Object.assign({},this.attributes),a),this.state=Object.assign(Object.assign({},this.state),a),this}getFont(){return this.fontCSSString}}var ie,se,ne,ae;ee.measureTextCache=new class{constructor(){this.cache={}}lookup(t,e,i){let s=this.cache[t];void 0===s&&(s={},this.cache[t]=s);const n=`${i["font-family"]}%${i["font-size"]}%${i["font-weight"]}%${i["font-style"]}`;let a=s[n];return void 0===a&&(a=this.measureImpl(t,e,i),s[n]=a),a}measureImpl(t,e,i){let s=this.txt;s||(s=document.createElementNS(Zt,"text"),this.txt=s),s.textContent=t,s.setAttributeNS(null,"font-family",i["font-family"]),s.setAttributeNS(null,"font-size",i["font-size"]),s.setAttributeNS(null,"font-style",i["font-style"]),s.setAttributeNS(null,"font-weight",i["font-weight"]),e.appendChild(s);const n=s.getBBox();return e.removeChild(s),{x:n.x,y:n.y,width:n.width,height:n.height}}},function(t){t[t.CANVAS=1]="CANVAS",t[t.SVG=2]="SVG"}(ie||(ie={})),function(t){t[t.NONE=1]="NONE",t[t.UP=2]="UP",t[t.DOWN=3]="DOWN"}(se||(se={}));class oe{constructor(t,e){if(d(t))this.ctx=t;else{if(void 0===e)throw new p("InvalidArgument","Missing backend argument");const i=e;let s;if("string"==typeof t){const e=document.getElementById(t);if(!e)throw new p("BadElementId",`Can't find element with ID "${e}"`);s=e}else s=t;if(i===oe.Backends.CANVAS){if(!$t(s))throw new p("BadElement","CANVAS context requires an HTMLCanvasElement.");const t=s.getContext("2d");if(!t)throw new p("BadElement","Can't get canvas context");this.ctx=new qt(t)}else{if(i!==oe.Backends.SVG)throw new p("InvalidBackend",`No support for backend: ${i}`);if(!Jt(s))throw new p("BadElement","SVG context requires an HTMLDivElement.");this.ctx=new ee(s)}}}static buildContext(t,e,i,s,n="#FFF"){const a=new oe(t,e);i&&s&&a.resize(i,s);const o=a.getContext();return o.setBackgroundFillStyle(n),oe.lastContext=o,o}static getCanvasContext(t,e,i,s){return oe.buildContext(t,oe.Backends.CANVAS,e,i,s)}static getSVGContext(t,e,i,s){return oe.buildContext(t,oe.Backends.SVG,e,i,s)}static drawDashedLine(t,e,i,s,n,a){t.beginPath();const o=s-e,r=n-i,h=Math.atan2(r,o);let l=e,c=i;t.moveTo(e,i);let d=0,b=!0;for(;!(o<0?l<=s:l>=s)||!(r<0?c<=n:c>=n);){const e=a[d++%a.length],i=l+Math.cos(h)*e;l=o<0?Math.max(s,i):Math.min(s,i);const g=c+Math.sin(h)*e;c=r<0?Math.max(n,g):Math.min(n,g),b?t.lineTo(l,c):t.moveTo(l,c),b=!b}t.closePath(),t.stroke()}resize(t,e){return this.ctx.resize(t,e),this}getContext(){return this.ctx}}oe.Backends=ie,oe.LineEndType=se,oe.lastContext=void 0;class re extends Z{constructor(t){super(),this.string_number=t,this.position=Z.Position.ABOVE,this.x_shift=0,this.y_shift=0,this.text_line=0,this.stem_offset=0,this.x_offset=0,this.y_offset=0,this.dashed=!0,this.leg=oe.LineEndType.NONE,this.radius=8,this.drawCircle=!0,this.setWidth(2*this.radius+4),this.resetFont()}static get CATEGORY(){return u.StringNumber}static get metrics(){return V.currentMusicFont().getMetrics().glyphs.stringNumber}static format(t,e){const i=e.left_shift,s=e.right_shift;if(!t||0===t.length)return!1;const n=[];let a=null,o=0,r=0;for(let h=0;he.line-t.line));let h=0,l=0,c=0,d=null,g=null;for(let t=0;tl?e:l):r===Z.Position.RIGHT&&(b.setXShift(h),e+=p,c=e>c?e:c),d=m,g=a}return e.left_shift+=l,e.right_shift+=c,!0}setLineEndType(t){return t>=oe.LineEndType.NONE&&t<=oe.LineEndType.DOWN&&(this.leg=t),this}setStringNumber(t){return this.string_number=t,this}setOffsetX(t){return this.x_offset=t,this}setOffsetY(t){return this.y_offset=t,this}setLastNote(t){return this.last_note=t,this}setDashed(t){return this.dashed=t,this}setDrawCircle(t){return this.drawCircle=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getModifierStartXY(this.position,this.index),s=e.hasStem()?e.getStemDirection():st.UP;let n=i.x+this.x_shift+this.x_offset,a={};e.hasStem()&&(a=e.checkStem().getExtents());let o=i.y+this.y_shift+this.y_offset;switch(this.position){case Z.Position.ABOVE:o=e.getYs().reduce(((t,e)=>tt>e?t:e)),e.hasStem()&&s==st.DOWN&&(o=a.topY-re.metrics.stemPadding),o+=this.radius+re.metrics.verticalPadding+this.text_line*V.STAVE_LINE_DISTANCE;break;case Z.Position.LEFT:n-=this.radius/2+re.metrics.leftPadding;break;case Z.Position.RIGHT:n+=this.radius/2+re.metrics.rightPadding;break;default:throw new p("InvalidPosition",`The position ${this.position} is invalid`)}t.save(),this.drawCircle&&(t.beginPath(),t.arc(n,o,this.radius,0,2*Math.PI,!1),t.setLineWidth(1.5),t.stroke()),t.setFont(this.textFont);const r=n-t.measureText(this.string_number).width/2;t.fillText(""+this.string_number,r,o+4.5);const h=this.last_note;if(g(h)){const i=h.getStemX()-e.getX()+5;let s,a;switch(t.setStrokeStyle("#000000"),t.setLineCap("round"),t.setLineWidth(.6),this.dashed?oe.drawDashedLine(t,n+10,o,n+i,o,[3,3]):oe.drawDashedLine(t,n+10,o,n+i,o,[3,0]),this.leg){case oe.LineEndType.UP:s=-10,a=this.dashed?[3,3]:[3,0],oe.drawDashedLine(t,n+i,o,n+i,o+s,a);break;case oe.LineEndType.DOWN:s=10,a=this.dashed?[3,3]:[3,0],oe.drawDashedLine(t,n+i,o,n+i,o+s,a)}}t.restore()}}re.TEXT_FONT={family:F.SANS_SERIF,size:F.SIZE,weight:D.BOLD,style:N.NORMAL};class he extends Z{constructor(t,e){super(),this.options=Object.assign({all_voices:!0},e),this.all_voices=this.options.all_voices,this.type=t,this.position=Z.Position.LEFT,this.render_options={font_scale:38},this.resetFont(),this.setXShift(0),this.setWidth(10)}static get CATEGORY(){return u.Stroke}static format(t,e){const i=e.left_shift;if(!t||0===t.length)return!1;const s=t.map((t=>{const e=t.getNote(),i=t.checkIndex();if(b(e)){const{line:s}=e.getKeyProps()[i];return{line:s,shift:e.getLeftDisplacedHeadPx(),stroke:t}}if(m(e)){const{str:s}=e.getPositions()[i];return{line:s,shift:0,stroke:t}}throw new p("Internal","Unexpected instance.")})),n=i,a=s.reduce(((t,{stroke:e,shift:i})=>(e.setXShift(n+i),Math.max(e.getWidth()+0,t))),0);return e.left_shift+=a,!0}getPosition(){return this.position}addEndNote(t){return this.note_end=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getModifierStartXY(this.position,this.index);let s=e.getYs(),n=i.y,a=i.y;const o=i.x-5,r=e.checkStave().getSpacingBetweenLines(),h=this.checkModifierContext().getMembers(e.getCategory());for(let t=0;t0){s-=o.map((t=>t.getTextHeight())).reduce(((t,e)=>t>e?t:e))/V.STAVE_LINE_DISTANCE+1}else e.top_text_line+=1;for(let e=0;e=t.line?i.above:i.below}}this.placeGlyphOnLine(s,this.checkStave(),t.line),this.glyphs.push(s);const a=this.xPositions[this.xPositions.length-1],o=s.getMetrics().width+n;this.xPositions.push(a+o),this.width+=o}cancelKey(t){return this.formatted=!1,this.cancelKeySpec=t,this}convertToCancelAccList(t){const e=V.keySignature(t),i=this.accList.length>0&&e.length>0&&e[0].type!==this.accList[0].type,s=i?e.length:e.length-this.accList.length;if(s<1)return;const n=[];for(let t=0;t0?e[0].type:void 0;let s;if(this.cancelKeySpec&&(s=this.convertToCancelAccList(this.cancelKeySpec)),this.alterKeySpec&&this.convertToAlterAccList(this.alterKeySpec),this.accList.length>0){const n=(this.position===Tt.END?t.getEndClef():t.getClef())||t.getClef();s&&this.convertAccLines(n,s.type,s.accList),this.convertAccLines(n,i,e);for(let t=0;t0?"PlusSmall":"Plus";break;case"(":s=i.length>0?"ParensLeftSmall":"ParensLeft";break;case")":s=i.length>0?"ParensRightSmall":"ParensRight"}const n=new Q("timeSig"+s,this.timeSignature.point);this.topGlyphs.push(n),r+=null!==(o=n.getMetrics().width)&&void 0!==o?o:0}let h=0;for(let t=0;t0?e.getYForLine(this.timeSignature.topLine):(e.getYForLine(this.timeSignature.topLine)+e.getYForLine(this.timeSignature.bottomLine))/2;for(let t=0;t{const e=t.split("/");if(2!==e.length&&"+"!==e[0]&&"-"!==e[0])throw new p("BadTimeSignature",`Invalid time spec: ${t}. Must be in the form "/"`);e.forEach((e=>{if(0==/^[0-9+\-()]+$/.test(e))throw new p("BadTimeSignature",`Invalid time spec: ${t}. Must contain valid signatures.`)}))})(t);const s=t.split("/");return{num:!0,glyph:this.makeTimeSignatureGlyph(null!==(e=s[0])&&void 0!==e?e:"",null!==(i=s[1])&&void 0!==i?i:"")}}makeTimeSignatureGlyph(t,e){return new Se(this,t,e,"timeSig0",this.point)}getInfo(){return this.info}setTimeSig(t){return this.info=this.parseTimeSpec(t),this}draw(){const t=this.checkStave(),e=t.checkContext();this.setRendered(),e.openGroup("timesignature",this.getAttribute("id")),this.info.glyph.setStave(t),this.info.glyph.setContext(e),this.placeGlyphOnLine(this.info.glyph,t,this.info.line),this.info.glyph.renderToStave(this.x),e.closeGroup()}}const Te={[Nt.CATEGORY]:0,[be.CATEGORY]:1,[ge.CATEGORY]:2,[ye.CATEGORY]:3},we={[ye.CATEGORY]:0,[ge.CATEGORY]:1,[Nt.CATEGORY]:2,[be.CATEGORY]:3};class ve extends O{constructor(t,e,i,s){super(),this.height=0,this.x=t,this.y=e,this.width=i,this.formatted=!1,this.start_x=t+5,this.end_x=t+i,this.modifiers=[],this.measure=0,this.clef="treble",this.endClef=void 0,this.resetFont(),this.options=Object.assign({vertical_bar_width:10,num_lines:5,fill_style:"#999999",left_bar:!0,right_bar:!0,spacing_between_lines_px:V.STAVE_LINE_DISTANCE,space_above_staff_ln:4,space_below_staff_ln:4,top_text_position:1,bottom_text_position:4,line_config:[]},s),this.bounds={x:this.x,y:this.y,w:this.width,h:0},this.defaultLedgerLineStyle={strokeStyle:"#444",lineWidth:1.4},this.resetLines(),this.addModifier(new Nt(this.options.left_bar?wt.SINGLE:wt.NONE)),this.addEndModifier(new Nt(this.options.right_bar?wt.SINGLE:wt.NONE))}static get CATEGORY(){return u.Stave}static get defaultPadding(){const t=V.currentMusicFont();return t.lookupMetric("stave.padding")+t.lookupMetric("stave.endPaddingMax")}static get rightPadding(){return V.currentMusicFont().lookupMetric("stave.endPaddingMax")}setDefaultLedgerLineStyle(t){this.defaultLedgerLineStyle=t}getDefaultLedgerLineStyle(){return Object.assign(Object.assign({},this.getStyle()),this.defaultLedgerLineStyle)}space(t){return this.options.spacing_between_lines_px*t}resetLines(){this.options.line_config=[];for(let t=0;ti.getWidth()&&(e-=i.getWidth()),e}setRepetitionType(t,e=0){return this.modifiers.push(new me(t,this.x,e)),this}setVoltaType(t,e,i){return this.modifiers.push(new xe(t,e,this.x,i)),this}setSection(t,e,i=0,s,n=!0){const a=new ue(t,this.x+i,e,n);return s&&a.setFontSize(s),this.modifiers.push(a),this}setTempo(t,e){return this.modifiers.push(new pe(t,this.x,e)),this}setText(t,e,i={}){return this.modifiers.push(new _e(t,e,i)),this}getHeight(){return this.height}getSpacingBetweenLines(){return this.options.spacing_between_lines_px}getBoundingBox(){return new C(this.x,this.y,this.width,this.getBottomY()-this.y)}getBottomY(){const t=this.options,e=t.spacing_between_lines_px;return this.getYForLine(t.num_lines)+t.space_below_staff_ln*e}getBottomLineY(){return this.getYForLine(this.options.num_lines)}getYForLine(t){const e=this.options,i=e.spacing_between_lines_px,s=e.space_above_staff_ln;return this.y+t*i+s*i}getLineForY(t){const e=this.options,i=e.spacing_between_lines_px,s=e.space_above_staff_ln;return(t-this.y)/i-s}getYForTopText(t=0){return this.getYForLine(-t-this.options.top_text_position)}getYForBottomText(t=0){return this.getYForLine(this.options.bottom_text_position+t)}getYForNote(t){const e=this.options,i=e.spacing_between_lines_px,s=e.space_above_staff_ln;return this.y+s*i+5*i-t*i}getYForGlyphs(){return this.getYForLine(3)}addModifier(t,e){return void 0!==e&&t.setPosition(e),t.setStave(this),this.formatted=!1,this.modifiers.push(t),this}addEndModifier(t){return this.addModifier(t,Tt.END),this}setBegBarType(t){const{SINGLE:e,REPEAT_BEGIN:i,NONE:s}=wt;return t!==e&&t!==i&&t!==s||(this.modifiers[0].setType(t),this.formatted=!1),this}setEndBarType(t){return t!==wt.REPEAT_BEGIN&&(this.modifiers[1].setType(t),this.formatted=!1),this}setClef(t,e,i,s){void 0===s&&(s=Tt.BEGIN),s===Tt.END?this.endClef=t:this.clef=t;const n=this.getModifiers(s,be.CATEGORY);return 0===n.length?this.addClef(t,e,i,s):n[0].setType(t,e,i),this}getClef(){return this.clef}setEndClef(t,e,i){return this.setClef(t,e,i,Tt.END),this}getEndClef(){return this.endClef}setKeySignature(t,e,i){void 0===i&&(i=Tt.BEGIN);const s=this.getModifiers(i,ge.CATEGORY);return 0===s.length?this.addKeySignature(t,e,i):s[0].setKeySig(t,e),this}setEndKeySignature(t,e){return this.setKeySignature(t,e,Tt.END),this}setTimeSignature(t,e,i){void 0===i&&(i=Tt.BEGIN);const s=this.getModifiers(i,ye.CATEGORY);return 0===s.length?this.addTimeSignature(t,e,i):s[0].setTimeSig(t),this}setEndTimeSignature(t,e){return this.setTimeSignature(t,e,Tt.END),this}addKeySignature(t,e,i){return void 0===i&&(i=Tt.BEGIN),this.addModifier(new ge(t,e).setPosition(i),i),this}addClef(t,e,i,s){return void 0===s||s===Tt.BEGIN?this.clef=t:s===Tt.END&&(this.endClef=t),this.addModifier(new be(t,e,i),s),this}addEndClef(t,e,i){return this.addClef(t,e,i,Tt.END),this}addTimeSignature(t,e,i){return this.addModifier(new ye(t,e),i),this}addEndTimeSignature(t,e){return this.addTimeSignature(t,e,Tt.END),this}addTrebleGlyph(){return this.addClef("treble"),this}getModifiers(t,e){const i=void 0===t,s=void 0===e;return i&&s?this.modifiers:i?this.modifiers.filter((t=>e===t.getCategory())):s?this.modifiers.filter((e=>t===e.getPosition())):this.modifiers.filter((i=>t===i.getPosition()&&e===i.getCategory()))}sortByCategory(t,e){for(let i=t.length-1;i>=0;i--)for(let s=0;se[t[s+1].getCategory()]){const e=t[s];t[s]=t[s+1],t[s+1]=e}}format(){const t=this.modifiers[0],e=this.modifiers[1],i=this.getModifiers(Tt.BEGIN),s=this.getModifiers(Tt.END);let n,a,r;this.sortByCategory(i,Te),this.sortByCategory(s,we),i.length>1&&t.getType()===wt.REPEAT_BEGIN&&(i.push(i.splice(0,1)[0]),i.splice(0,0,new Nt(wt.SINGLE))),s.indexOf(e)>0&&s.splice(0,0,new Nt(wt.NONE));let h=0,l=this.x;for(let t=0;t0){t.save(),t.setFont(this.textFont);const e=t.measureText(""+this.measure).width;n=this.getYForTopText(0)+3,t.fillText(""+this.measure,this.x-e/2,n),t.restore()}return t.closeGroup(),this}getVerticalBarWidth(){return this.options.vertical_bar_width}getConfigForLines(){return this.options.line_config}setConfigForLine(t,e){if(t>=this.options.num_lines||t<0)throw new p("StaveConfigError","The line number must be within the range of the number of lines in the Stave.");if(void 0===e.visible)throw new p("StaveConfigError","The line configuration object is missing the 'visible' property.");if("boolean"!=typeof e.visible)throw new p("StaveConfigError","The line configuration objects 'visible' property must be true or false.");return this.options.line_config[t]=e,this}setConfigForLines(t){if(t.length!==this.options.num_lines)throw new p("StaveConfigError","The length of the lines configuration array must match the number of lines in the Stave");for(const e in t)null==t[e].visible&&(t[e]=this.options.line_config[e]),this.options.line_config[e]=Object.assign(Object.assign({},this.options.line_config[e]),t[e]);return this.options.line_config=t,this}static formatBegModifiers(t){let e=0;t.forEach((t=>{t.getNoteStartX()>e&&(e=t.getNoteStartX())})),t.forEach((t=>{t.setNoteStartX(e)})),e=0,t.forEach((t=>{t.getModifiers(Tt.BEGIN,u.Barline).forEach((t=>{t.getType()==wt.REPEAT_BEGIN&&t.getX()>e&&(e=t.getX())}))})),t.forEach((t=>{t.getModifiers(Tt.BEGIN,u.Barline).forEach((t=>{t.getType()==wt.REPEAT_BEGIN&&t.setX(e)}))})),e=0,t.forEach((t=>{t.getModifiers(Tt.BEGIN,u.TimeSignature).forEach((t=>{t.getX()>e&&(e=t.getX())}))})),t.forEach((t=>{t.getModifiers(Tt.BEGIN,u.TimeSignature).forEach((t=>{t.setX(e)}))}))}}function Ee(t,e,i,s,n){if(e!==Ce.type.BOLD_DOUBLE_LEFT&&e!==Ce.type.BOLD_DOUBLE_RIGHT)throw new p("InvalidConnector","A REPEAT_BEGIN or REPEAT_END type must be provided.");let a=3,o=3.5;e===Ce.type.BOLD_DOUBLE_RIGHT&&(a=-5,o=3),t.fillRect(i+a,s,1,n-s),t.fillRect(i-2,s,o,n-s)}ve.TEXT_FONT={family:F.SANS_SERIF,size:8,weight:D.NORMAL,style:N.NORMAL};class Ce extends O{constructor(t,e){super(),this.thickness=V.STAVE_LINE_THICKNESS,this.width=3,this.top_stave=t,this.bottom_stave=e,this.type=Ce.type.DOUBLE,this.resetFont(),this.x_shift=0,this.texts=[]}static get CATEGORY(){return u.StaveConnector}setType(t){const e="string"==typeof t?Ce.typeString[t]:t;return Object.values(Ce.type).includes(e)&&(this.type=e),this}getType(){return this.type}setText(t,e={}){return this.texts.push({content:t,options:Object.assign({shift_x:0,shift_y:0},e)}),this}setXShift(t){if("number"!=typeof t)throw new p("InvalidType","x_shift must be a Number");return this.x_shift=t,this}getXShift(){return this.x_shift}draw(){const t=this.checkContext();this.setRendered();let e=this.top_stave.getYForLine(0),i=this.bottom_stave.getYForLine(this.bottom_stave.getNumLines()-1)+this.thickness,s=this.width,n=this.top_stave.getX();(this.type===Ce.type.SINGLE_RIGHT||this.type===Ce.type.BOLD_DOUBLE_RIGHT||this.type===Ce.type.THIN_DOUBLE)&&(n=this.top_stave.getX()+this.top_stave.getWidth());let a=i-e;switch(this.type){case Ce.type.SINGLE:case Ce.type.SINGLE_LEFT:case Ce.type.SINGLE_RIGHT:s=1;break;case Ce.type.DOUBLE:n-=this.width+2,e-=this.thickness,a+=.5;break;case Ce.type.BRACE:{s=12;const n=this.top_stave.getX()-2+this.x_shift,o=e,r=n,h=i,l=n-s,c=o+a/2,d=l-.9*s,b=o+.2*a,g=n+1.1*s,m=c-.135*a,u=g,p=c+.135*a,f=d,_=h-.2*a,x=l-s,S=_,y=n+.4*s,T=c+.135*a,w=y,v=c-.135*a,E=x,C=b;t.beginPath(),t.moveTo(n,o),t.bezierCurveTo(d,b,g,m,l,c),t.bezierCurveTo(u,p,f,_,r,h),t.bezierCurveTo(x,S,y,T,l,c),t.bezierCurveTo(w,v,E,C,n,o),t.fill(),t.stroke();break}case Ce.type.BRACKET:e-=6,i+=6,a=i-e,Q.renderGlyph(t,n-5,e,40,"bracketTop"),Q.renderGlyph(t,n-5,i,40,"bracketBottom"),n-=this.width+2;break;case Ce.type.BOLD_DOUBLE_LEFT:Ee(t,this.type,n+this.x_shift,e,i-this.thickness);break;case Ce.type.BOLD_DOUBLE_RIGHT:Ee(t,this.type,n,e,i-this.thickness);break;case Ce.type.THIN_DOUBLE:s=1,a-=this.thickness;break;case Ce.type.NONE:break;default:throw new p("InvalidType",`The provided StaveConnector.type (${this.type}) is invalid.`)}this.type!==Ce.type.BRACE&&this.type!==Ce.type.BOLD_DOUBLE_LEFT&&this.type!==Ce.type.BOLD_DOUBLE_RIGHT&&this.type!==Ce.type.NONE&&t.fillRect(n,e,s,a),this.type===Ce.type.THIN_DOUBLE&&t.fillRect(n-3,e,s,a),t.save(),t.setLineWidth(2),t.setFont(this.textFont);for(let e=0;et.reduce(((t,e)=>t+e),0);function De(t,e,i,s){let n=e;for(let e=i+1;e{e.addToModifierContext(new de);const s=(new Vt).addTickable(e).preFormat(),n=s.getMetrics();return s.setX(t+n.totalLeftPx),t+s.getWidth()+n.totalRightPx+i}),e)}static plotDebugging(t,e,i,s,n,a){const o=i+(a=Object.assign({stavePadding:V.currentMusicFont().lookupMetric("stave.padding")},a)).stavePadding,r=e.contextGaps;t.save(),t.setFont(F.SANS_SERIF,8),r.gaps.forEach((e=>{var i,a,r;i=o+e.x1,a=o+e.x2,r="rgba(100,200,100,0.4)",t.beginPath(),t.setStrokeStyle(r),t.setFillStyle(r),t.setLineWidth(1),t.fillRect(i,s,Math.max(a-i,0),n-s),t.setFillStyle("green"),t.fillText(Math.round(e.x2-e.x1).toString(),o+e.x1,n+12)})),t.setFillStyle("red"),t.fillText(`Loss: ${(e.totalCost||0).toFixed(2)} Shift: ${(e.totalShift||0).toFixed(2)} Gap: ${r.total.toFixed(2)}`,o-20,n+27),t.restore()}static FormatAndDraw(t,e,i,s){let n={auto_beam:!1,align_rests:!1};"object"==typeof s?n=Object.assign(Object.assign({},n),s):"boolean"==typeof s&&(n.auto_beam=s);const a=new Ht(V.TIME4_4).setMode(Ht.Mode.SOFT).addTickables(i),o=n.auto_beam?Oe.applyAndGetBeams(a):[];return(new Ne).joinVoices([a]).formatToStave([a],e,{align_rests:n.align_rests,stave:e}),a.setStave(e).draw(t,e),o.forEach((e=>e.setContext(t).draw())),a.getBoundingBox()}static FormatAndDrawTab(t,e,i,s,n,a,o){let r={auto_beam:a,align_rests:!1};"object"==typeof o?r=Object.assign(Object.assign({},r),o):"boolean"==typeof o&&(r.auto_beam=o);const h=new Ht(V.TIME4_4).setMode(Ht.Mode.SOFT).addTickables(n),l=new Ht(V.TIME4_4).setMode(Ht.Mode.SOFT).addTickables(s),c=r.auto_beam?Oe.applyAndGetBeams(h):[];(new Ne).joinVoices([h]).joinVoices([l]).formatToStave([h,l],i,{align_rests:r.align_rests}),h.draw(t,i),l.draw(t,e),c.forEach((e=>e.setContext(t).draw())),new Ce(i,e).setContext(t).draw()}static AlignRestsToNotes(t,e,i){t.forEach(((s,n)=>{if(b(s)&&s.isRest()){if(s.getTuplet()&&!i)return;const a=s.getGlyph().position.toUpperCase();if("R/4"!==a&&"B/4"!==a)return;if(e||s.getBeam()){const e=s.getKeyProps()[0];if(0===n)e.line=De(t,e.line,n,!1);else if(n>0&&nNe.AlignRestsToNotes(t.getTickables(),e)))}preCalculateMinTotalWidth(t){const e=V.currentMusicFont().lookupMetric("stave.unalignedNotePadding");let i=0,s=0,n=0;const a=[],o=[];if(this.hasMinTotalWidth)return this.minTotalWidth;if(!t)throw new p("BadArgument","'voices' required to run preCalculateMinTotalWidth");this.createTickContexts(t);const{list:r,map:h}=this.tickContexts;this.minTotalWidth=0,r.forEach((e=>{const r=h[e];r.preFormat(),r.getTickables().length{s+=t.getMetrics().width,n+=t.getTicks().value(),a.push(t.getMetrics().width),o.push(t.getTicks().value())}));const l=r.getWidth();this.minTotalWidth+=l})),this.hasMinTotalWidth=!0;const l=s>0?s/a.length:1/a.length,c=ke(a.map((t=>Math.pow(t-l,2)))),d=Math.pow(c/a.length,.5)/l,b=n/o.length,g=ke(o.map((t=>Math.pow(t-b,2)))),m=Math.pow(g/o.length,.5)/b,u=Math.max(m,d)*r.length*e,f=e*i;return this.minTotalWidth+Math.max(f,u)}getMinTotalWidth(){if(!this.hasMinTotalWidth)throw new p("NoMinTotalWidth","Call 'preCalculateMinTotalWidth' or 'preFormat' before calling 'getMinTotalWidth'");return this.minTotalWidth}static getResolutionMultiplier(t){if(!t||!t.length)throw new p("BadArgument","No voices to format");const e=t[0].getTotalTicks();return t.reduce(((t,i)=>{if(!i.getTotalTicks().equals(e))throw new p("TickMismatch","Voices should have same total note duration in ticks.");if(i.getMode()===Ht.Mode.STRICT&&!i.isComplete())throw new p("IncompleteVoice","Voice does not have enough notes.");return Math.max(t,v.LCM(t,i.getResolutionMultiplier()))}),1)}createModifierContexts(t){if(0==t.length)return;const e=Ne.getResolutionMultiplier(t),i=new Map,s=[];t.forEach((t=>{const n=new v(0,e);t.getTickables().forEach((t=>{const e=n.numerator;let a=i.get(t.getStave());if(a||(i.set(t.getStave(),{}),a=i.get(t.getStave())),!(a?a[e]:void 0)){const t=new de;s.push(t),a[e]=t}t.addToModifierContext(a[e]),n.add(t.getTicks())}))})),this.modifierContexts.push({map:i,array:s,resolutionMultiplier:e})}createTickContexts(t){const e=function(t,e,i){if(0==t.length)return{map:{},array:[],list:[],resolutionMultiplier:0};const s={},n=[],a=[],o=Ne.getResolutionMultiplier(t);return t.forEach(((t,r)=>{const h=new v(0,o);t.getTickables().forEach((t=>{const o=h.numerator;if(!s[o]){const t=e({tickID:o});a.push(t),s[o]=t,n.push(o)}i(t,s[o],r),h.add(t.getTicks())}))})),{map:s,array:a,list:n.sort(((t,e)=>t-e)),resolutionMultiplier:o}}(t,(t=>new Vt(t)),((t,e,i)=>e.addTickable(t,i)));this.tickContexts=e;const i=this.tickContexts.array;return i.forEach((t=>{t.tContexts=i})),e}getTickContexts(){return this.tickContexts}preFormat(t=0,e,i,s){const n=this.tickContexts;if(!n)throw new p("NoTickContexts","preFormat requires TickContexts");const{list:a,map:o}=n;this.lossHistory=[],i&&s&&i.forEach((t=>t.setStave(s).preFormat()));let r=0,h=0;this.minTotalWidth=0;let l=0;a.forEach((t=>{const e=o[t];e.preFormat();const i=e.getWidth();this.minTotalWidth+=i;const s=e.getMaxTicks().value();l+=s;const n=e.getMetrics();r=r+h+n.totalLeftPx,e.setX(r),h=i-n.totalLeftPx}));const{globalSoftmax:c,softmaxFactor:d,maxIterations:b}=this.formatterOptions,g=ke(a.map((t=>Math.pow(d,o[t].getMaxTicks().value()/l))));if(this.minTotalWidth=r+h,this.hasMinTotalWidth=!0,t<=0)return this.evaluate();const m=o[a[0]],u=o[a[a.length-1]];function f(t){return a.map(((e,i)=>{const s=o[e],n=s.getTickablesByVoice();let r;if(i>0){const e=o[a[i-1]];for(let h=i-1;h>=0;h--){const i=o[a[h]].getTickablesByVoice(),b=[];if(Object.keys(n).forEach((t=>{i[t]&&b.push(t)})),b.length>0){let a=0,o=1/0,h=0;if(b.forEach((t=>{const e=i[t].getTicks().value();e>a&&(r=i[t],a=e);const s=n[t],h=s.getX()-(s.getMetrics().modLeftPx+s.getMetrics().leftDisplacedHeadPx),l=i[t].getMetrics(),c=i[t].getX()+l.notePx+l.modRightPx+l.rightDisplacedHeadPx;o=Math.min(o,h-c)})),o=Math.min(o,s.getX()-(e.getX()+.05*t)),c){const e=l;h=Math.pow(d,a/e)/g*t}else void 0!==r&&(h=r.getVoice().softmax(a)*t);return{expectedDistance:h,maxNegativeShiftPx:o,fromTickable:r}}}}return{expectedDistance:0,fromTickablePx:0,maxNegativeShiftPx:0}}))}function x(t){const e=S/2;let i=0;return a.forEach(((s,n)=>{const a=o[s];if(n>0){const e=a.getX(),s=t[n],o=_(s.fromTickable).getX()+s.expectedDistance-(e+i);let r=0;o>0?i+=o:o<0&&(r=Math.min(s.maxNegativeShiftPx,Math.abs(o)),i+=-r),a.setX(e+i)}a.getCenterAlignedTickables().forEach((t=>{t.setCenterXShift(e-a.getX())}))})),u.getX()-m.getX()}const S=t-u.getMetrics().notePx-u.getMetrics().totalRightPx-m.getMetrics().totalLeftPx,y=V.currentMusicFont(),T=y.lookupMetric("stave.endPaddingMin"),w=y.lookupMetric("stave.endPaddingMax"),v=y.lookupMetric("stave.padding");let E=S;const C=f(E);let k=x(C);if(1===a.length)return 0;const D=((t,e)=>{let i=t/2;if(e.length>1)for(let t=1;t{let e=0;const i=u&&u.getMaxTickable();if(i){const s=i.getVoice();if(s.getTicksUsed().value()>s.getTotalTicks().value())return 2*wM&&F>0||k+A1;)E-=k-M,A=N(E),P=A-(w-T),k=x(f(E)),F--;return this.justifyWidth=t,this.evaluate()}evaluate(){const t=this.tickContexts,e=this.justifyWidth;this.contextGaps={total:0,gaps:[]},t.list.forEach(((e,i)=>{if(0===i)return;const s=t.list[i-1],n=t.map[s],a=t.map[e],o=n.getMetrics(),r=a.getMetrics(),h=n.getX()+o.notePx+o.totalRightPx,l=a.getX()-r.totalLeftPx,c=l-h;this.contextGaps.total+=c,this.contextGaps.gaps.push({x1:h,x2:l}),a.getFormatterMetrics().freedom.left=c,n.getFormatterMetrics().freedom.right=c})),this.durationStats={};const i=this.durationStats;this.voices.forEach((t=>{t.getTickables().forEach(((t,s,n)=>{const a=t.getTicks().clone().simplify().toString(),o=t.getMetrics(),r=t.getFormatterMetrics(),h=t.getX()+o.notePx+o.modRightPx+o.rightDisplacedHeadPx;let l=0;if(s{t.getTickables().forEach((t=>{const e=t.getTicks().clone().simplify().toString(),n=t.getFormatterMetrics();n.space.mean=i[e].mean,n.duration=e,n.iterations+=1,n.space.deviation=n.space.used-n.space.mean,s+=Math.pow(n.space.deviation,2)}))})),this.totalCost=Math.sqrt(s),this.lossHistory.push(this.totalCost),this.totalCost}tune(t){var e;const i=this.tickContexts;if(!i)return 0;const s=null!==(e=null==t?void 0:t.alpha)&&void 0!==e?e:.5;let n=0;return this.totalShift=0,i.list.forEach(((t,e,a)=>{const o=i.map[t],r=e>0?i.map[a[e-1]]:void 0,h=et.getFormatterMetrics().space.deviation)));l>0?n=-Math.min(o.getFormatterMetrics().freedom.right,Math.abs(l)):l<0&&(n=h?Math.min(h.getFormatterMetrics().freedom.right,Math.abs(l)):0),n*=s,this.totalShift+=n})),this.evaluate()}postFormat(){return this.modifierContexts.forEach((t=>{t.array.forEach((t=>t.postFormat()))})),this.tickContexts.list.forEach((t=>{this.tickContexts.map[t].postFormat()})),this}joinVoices(t){return this.createModifierContexts(t),this.hasMinTotalWidth=!1,this}format(t,e,i){const s=Object.assign({align_rests:!1},i);this.voices=t;const n=this.formatterOptions.softmaxFactor;return n&&this.voices.forEach((t=>t.setSoftmaxFactor(n))),this.alignRests(t,s.align_rests),this.createTickContexts(t),this.preFormat(e,s.context,t,s.stave),s.stave&&this.postFormat(),this}formatToStave(t,e,i){const s=Object.assign({context:e.getContext()},i),n=e.getNoteEndX()-e.getNoteStartX()-ve.defaultPadding;return function(...t){Ne.DEBUG&&x("Vex.Flow.Formatter",t)}("Formatting voices to width: ",n),this.format(t,n,s)}getTickContext(t){var e;return null===(e=this.tickContexts)||void 0===e?void 0:e.map[t]}}var Ae;Ne.DEBUG=!1,function(t){t[t.BOTTOM=-1]="BOTTOM",t[t.TOP=1]="TOP"}(Ae||(Ae={}));class Pe extends O{constructor(t,e={}){if(super(),this.numerator_glyphs=[],this.denom_glyphs=[],!t||!t.length)throw new p("BadArguments","No notes provided for tuplet.");this.options=e,this.notes=t,this.num_notes=null!=this.options.num_notes?this.options.num_notes:t.length,this.options.beats_occupied&&this.beatsOccupiedDeprecationWarning(),this.notes_occupied=this.options.notes_occupied||this.options.beats_occupied||2,null!=this.options.bracketed?this.bracketed=this.options.bracketed:this.bracketed=t.some((t=>!t.hasBeam())),this.ratioed=null!=this.options.ratioed?this.options.ratioed:Math.abs(this.notes_occupied-this.num_notes)>1,this.point=V.currentMusicFont().lookupMetric("digits.tupletPoint"),this.y_pos=16,this.x_pos=100,this.width=200,this.setTupletLocation(this.options.location||Pe.LOCATION_TOP),Ne.AlignRestsToNotes(t,!0,!0),this.resolveGlyphs(),this.attach()}static get CATEGORY(){return u.Tuplet}static get LOCATION_TOP(){return Ae.TOP}static get LOCATION_BOTTOM(){return Ae.BOTTOM}static get NESTING_OFFSET(){return 15}static get metrics(){return V.currentMusicFont().getMetrics().glyphs.tuplet}attach(){for(let t=0;t=1;)this.numerator_glyphs.unshift(new Q("timeSig"+t%10,this.point)),t=parseInt((t/10).toString(),10);for(this.denom_glyphs=[],t=this.notes_occupied;t>=1;)this.denom_glyphs.unshift(new Q("timeSig"+t%10,this.point)),t=parseInt((t/10).toString(),10)}getNestedTupletCount(){const t=this.location,e=this.notes[0];let i=n(e,t),s=n(e,t);function n(t,e){return t.getTupletStack().filter((t=>t.location===e)).length}return this.notes.forEach((e=>{const a=n(e,t);i=a>i?a:i,s=a0&&(s=Math.min(a,s))}}}else{let t=Pe.metrics.bottomLine;this.notes.forEach((e=>{const i=e.getModifierContext();i&&(t=Math.max(t,i.getState().text_line+1))})),s=i.checkStave().getYForLine(t)+Pe.metrics.noteHeadOffset;for(let t=0;ts&&(s=e)}}return s+t+e}draw(){const t=this.checkContext();this.setRendered();const e=this.notes[0],i=this.notes[this.notes.length-1];this.bracketed?(this.x_pos=e.getTieLeftX()-5,this.width=i.getTieRightX()-this.x_pos+5):(this.x_pos=e.getStemX(),this.width=i.getStemX()-this.x_pos),this.y_pos=this.getYPosition();const s=(t,e)=>t+_(e.getMetrics().width);let n=this.numerator_glyphs.reduce(s,0);this.ratioed&&(n=this.denom_glyphs.reduce(s,n),n+=.32*this.point);const a=this.x_pos+this.width/2-n/2;if(this.bracketed){const e=this.width/2-n/2-5;e>0&&(t.fillRect(this.x_pos,this.y_pos,e,1),t.fillRect(this.x_pos+this.width/2+n/2+5,this.y_pos,e,1),t.fillRect(this.x_pos,this.y_pos+(this.location===Pe.LOCATION_BOTTOM?1:0),1,10*this.location),t.fillRect(this.x_pos+this.width,this.y_pos+(this.location===Pe.LOCATION_BOTTOM?1:0),1,10*this.location))}const o=V.currentMusicFont().lookupMetric("digits.shiftY",0);let r=0;if(this.numerator_glyphs.forEach((e=>{e.render(t,a+r,this.y_pos+this.point/3-2+o),r+=_(e.getMetrics().width)})),this.ratioed){const e=a+r+.16*this.point,i=.06*this.point;t.beginPath(),t.arc(e,this.y_pos-.08*this.point,i,0,2*Math.PI,!1),t.closePath(),t.fill(),t.beginPath(),t.arc(e,this.y_pos+.12*this.point,i,0,2*Math.PI,!1),t.closePath(),t.fill(),r+=.32*this.point,this.denom_glyphs.forEach((e=>{e.render(t,a+r,this.y_pos+this.point/3-2+o),r+=_(e.getMetrics().width)}))}}}function Me(t){let e=0;return t.forEach((t=>{t.keyProps&&t.keyProps.forEach((t=>{e+=t.line-3}))})),e>=0?st.DOWN:st.UP}const Fe="L",Be="R",Re="B";class Oe extends O{constructor(t,e=!1){if(super(),this.slope=0,this.y_shift=0,this.forcedPartialDirections={},!t||0===t.length)throw new p("BadArguments","No notes provided for beam.");if(1===t.length)throw new p("BadArguments","Too few notes for beam.");if(this.ticks=t[0].getIntrinsicTicks(),this.ticks>=V.durationToTicks("4"))throw new p("BadArguments","Beams can only be applied to notes shorter than a quarter note.");let i,s;for(this.stem_direction=st.UP,i=0;it+e.getStemDirection()),0);n=e>-1?st.UP:st.DOWN}for(i=0;i(new v).parse(t)));{const e=parseInt(t.split("/")[0],10),i=parseInt(t.split("/")[1],10);if(e%3==0)return[new v(3,i)];if(i>4)return[new v(2,i)];if(i<=4)return[new v(1,i)]}return[new v(1,4)]}static applyAndGetBeams(t,e,i){return Oe.generateBeams(t.getTickables(),{groups:i,stem_direction:e})}static generateBeams(t,e={}){e.groups&&e.groups.length||(e.groups=[new v(2,8)]);const i=e.groups.map((t=>{if(!t.multiply)throw new p("InvalidBeamGroups","The beam groups must be an array of Vex.Flow.Fractions");return t.clone().multiply(V.RESOLUTION,1)})),s=t;let n=0,a=[],o=[];function r(){i.length-1>n?n+=1:n=0}!function(){let t=[],e=new v(0,1);s.forEach((s=>{if(t=[],s.shouldIgnoreTicks())return a.push(o),void(o=t);o.push(s);const h=i[n].clone(),l=(c=o,c.reduce(((t,e)=>e.getTicks().clone().add(t)),new v(0,1))).add(e);var c;const d=V.durationToNumber(s.getDuration())<8;if(d&&s.getTuplet()&&(h.numerator*=2),l.greaterThan(h)){if(!d){const e=o.pop();e&&t.push(e)}a.push(o);do{e=l.subtract(i[n]),r()}while(e.greaterThanEquals(i[n]));o=t}else l.equals(h)&&(a.push(o),e=new v(0,1),o=t,r())})),o.length>0&&a.push(o)}(),function(){const t=[];a.forEach((i=>{let s=[];i.forEach(((i,n,a)=>{const o=0===n||n===a.length-1,r=a[n-1],h=!e.beam_rests&&i.isRest(),l=e.beam_rests&&e.beam_middle_only&&i.isRest()&&o;let c=!1;if(e.maintain_stem_directions&&r&&!i.isRest()&&!r.isRest()){const t=r.getStemDirection();c=i.getStemDirection()!==t}const d=parseInt(i.getDuration(),10)<8;h||l||c||d?(s.length>0&&t.push(s),s=c?[i]:[]):s.push(i)})),s.length>0&&t.push(s)})),a=t}(),a.forEach((t=>{let i;if(e.maintain_stem_directions){const e=function(t){for(let e=0;e{t.setStemDirection(e)}))}(t,i)}));const h=a.filter((t=>{if(t.length>1){let e=!0;return t.forEach((t=>{t.getIntrinsicTicks()>=V.durationToTicks("4")&&(e=!1)})),e}return!1})),l=function(){const t=[];return a.forEach((e=>{let i;e.forEach((e=>{const s=e.getTuplet();s&&i!==s&&(i=s,t.push(i))}))})),t}(),c=[];return h.forEach((t=>{const i=new Oe(t);e.show_stemlets&&(i.render_options.show_stemlets=!0),e.secondary_breaks&&(i.render_options.secondary_break_ticks=V.durationToTicks(e.secondary_breaks)),!0===e.flat_beams&&(i.render_options.flat_beams=!0,i.render_options.flat_beam_offset=e.flat_beam_offset),c.push(i)})),l.forEach((t=>{const e=t.notes[0].stem_direction===st.DOWN?Ae.BOTTOM:Ae.TOP;t.setTupletLocation(e);let i=!1;for(let e=0;et.getGlyph().beam_count)).reduce(((t,e)=>e>t?e:t))}breakSecondaryAt(t){return this.break_on_indices=t,this}setPartialBeamSideAt(t,e){return this.forcedPartialDirections[t]=e,this}unsetPartialBeamSideAt(t){return delete this.forcedPartialDirections[t],this}getSlopeY(t,e,i,s){return i+(t-e)*s}calculateSlope(){const{notes:t,stem_direction:e,render_options:{max_slope:i,min_slope:s,slope_iterations:n,slope_cost:a}}=this,o=t[0],r=function(t,e){const i=t.getStemExtents().topY,s=t.getStemX();return(e.getStemExtents().topY-i)/(e.getStemX()-s)}(o,t[t.length-1]),h=(i-s)/n;let l=Number.MAX_VALUE,c=0,d=0;for(let n=s;n<=i;n+=h){let i=0,s=0;for(let a=1;an)&&(h=n,o=Math.min(...s.getYs()),r=s.getBeamCount())}let l=a/t.length;const c=s+r*(1.5*i),d=o+c*-e;e===st.DOWN&&ld&&(l=o-c),n?(e===st.DOWN&&l>n||e===st.UP&&l=8&&(c=-1!==this.break_on_indices.indexOf(h),this.render_options.secondary_break_ticks&&r>=this.render_options.secondary_break_ticks&&(r=0,c=!0));const d=l.getIntrinsicTicks(){const i=e.getStem();if(i){const s=e.getStemX();i.setNoteHeadXBounds(s,s),i.setContext(t).draw()}}),this)}drawBeamLines(t){const e=["4","8","16","32","64"],i=this.notes[0];let s=this.getBeamYToDraw();const n=i.getStemX(),a=this.render_options.beam_width*this.stem_direction;for(let i=0;i0||!0===e;return!e||n>0||(this.pos=s),o?this.matchSuccess():this.matchFail(s),{success:o,results:i,numMatches:n}}expectZeroOrMore(t){return this.expectOneOrMore(t,!0)}expect(t){if(Ue("Evaluating rule function:",t),!t)throw new p("Invalid rule function");let e;const i=t.bind(this.grammar)();if(i.token)e=this.matchToken(i.token,!0===i.noSpace),e.success&&(this.pos+=e.incrementPos);else{if(!i.expect)throw Ue(i),new p("Bad grammar! No `token` or `expect` property "+i);e=i.oneOrMore?this.expectOneOrMore(i):i.zeroOrMore?this.expectZeroOrMore(i):this.expectOne(i)}const s=[];return e.matches=s,e.results&&e.results.forEach((t=>s.push(Ye(t)))),i.run&&e.success&&i.run({matches:s}),e}}function je(...t){qe.DEBUG&&x("Vex.Flow.EasyScore",t)}He.DEBUG=!1;class Xe{constructor(t){this.builder=t}begin(){return this.LINE}LINE(){return{expect:[this.PIECE,this.PIECES,this.EOL]}}PIECE(){return{expect:[this.CHORDORNOTE,this.PARAMS],run:()=>this.builder.commitPiece()}}PIECES(){return{expect:[this.COMMA,this.PIECE],zeroOrMore:!0}}PARAMS(){return{expect:[this.DURATION,this.TYPE,this.DOTS,this.OPTS]}}CHORDORNOTE(){return{expect:[this.CHORD,this.SINGLENOTE],or:!0}}CHORD(){return{expect:[this.LPAREN,this.NOTES,this.RPAREN],run:t=>this.builder.addChord(t.matches[1])}}NOTES(){return{expect:[this.NOTE],oneOrMore:!0}}NOTE(){return{expect:[this.NOTENAME,this.ACCIDENTAL,this.OCTAVE]}}SINGLENOTE(){return{expect:[this.NOTENAME,this.ACCIDENTAL,this.OCTAVE],run:t=>{const e=t;this.builder.addSingleNote(e.matches[0],e.matches[1],e.matches[2])}}}ACCIDENTAL(){return{expect:[this.MICROTONES,this.ACCIDENTALS],maybe:!0,or:!0}}DOTS(){return{expect:[this.DOT],zeroOrMore:!0,run:t=>this.builder.setNoteDots(t.matches)}}TYPE(){return{expect:[this.SLASH,this.MAYBESLASH,this.TYPES],maybe:!0,run:t=>this.builder.setNoteType(t.matches[2])}}DURATION(){return{expect:[this.SLASH,this.DURATIONS],maybe:!0,run:t=>this.builder.setNoteDuration(t.matches[1])}}OPTS(){return{expect:[this.LBRACKET,this.KEYVAL,this.KEYVALS,this.RBRACKET],maybe:!0}}KEYVALS(){return{expect:[this.COMMA,this.KEYVAL],zeroOrMore:!0}}KEYVAL(){return{expect:[this.KEY,this.EQUALS,this.VAL],run:t=>this.builder.addNoteOption(t.matches[0],t.matches[2].slice(1,-1))}}VAL(){return{expect:[this.SVAL,this.DVAL],or:!0}}KEY(){return{token:"[a-zA-Z][a-zA-Z0-9]*"}}DVAL(){return{token:'["][^"]*["]'}}SVAL(){return{token:"['][^']*[']"}}NOTENAME(){return{token:"[a-gA-G]"}}OCTAVE(){return{token:"[0-9]+"}}ACCIDENTALS(){return{token:"bb|b|##|#|n"}}MICROTONES(){return{token:"bbs|bss|bs|db|d|\\+\\+-|\\+-|\\+\\+|\\+|k|o"}}DURATIONS(){return{token:"[0-9whq]+"}}TYPES(){return{token:"[rRsSmMhHgG]"}}LPAREN(){return{token:"[(]"}}RPAREN(){return{token:"[)]"}}COMMA(){return{token:"[,]"}}DOT(){return{token:"[.]"}}SLASH(){return{token:"[/]"}}MAYBESLASH(){return{token:"[/]?"}}EQUALS(){return{token:"[=]"}}LBRACKET(){return{token:"\\["}}RBRACKET(){return{token:"\\]"}}EOL(){return{token:"$"}}}class Ve{constructor(t){this.chord=[],this.dots=0,this.options={},this.duration=t}}class ze{constructor(t){this.commitHooks=[],this.factory=t,this.reset()}reset(t){this.options=Object.assign({stem:"auto",clef:"treble"},t),this.elements={notes:[],accidentals:[]},this.rollingDuration="8",this.resetPiece()}getFactory(){return this.factory}getElements(){return this.elements}addCommitHook(t){this.commitHooks.push(t)}resetPiece(){je("resetPiece"),this.piece=new Ve(this.rollingDuration)}setNoteDots(t){je("setNoteDots:",t),t&&(this.piece.dots=t.length)}setNoteDuration(t){je("setNoteDuration:",t),this.rollingDuration=this.piece.duration=t||this.rollingDuration}setNoteType(t){je("setNoteType:",t),t&&(this.piece.type=t)}addNoteOption(t,e){je("addNoteOption: key:",t,"value:",e),this.piece.options[t]=e}addNote(t,e,i){je("addNote:",t,e,i),this.piece.chord.push({key:t,accid:e,octave:i})}addSingleNote(t,e,i){je("addSingleNote:",t,e,i),this.addNote(t,e,i)}addChord(t){je("startChord"),"object"!=typeof t[0]?this.addSingleNote(t[0]):t.forEach((t=>{t&&this.addNote(...t)})),je("endChord")}commitPiece(){je("commitPiece");const{factory:t}=this;if(!t)return;const e=Object.assign(Object.assign({},this.options),this.piece.options),i=_(e.stem,"BadArguments","options.stem is not defined").toLowerCase(),s=_(e.clef,"BadArguments","options.clef is not defined").toLowerCase(),{chord:n,duration:a,dots:o,type:r}=this.piece,h=tt.accidentals,l=n.map((t=>{var e;return t.key+(h.includes(null!==(e=t.accid)&&void 0!==e?e:"")?t.accid:"")+"/"+t.octave})),c="auto"===i,d="g"==(null==r?void 0:r.toLowerCase())?t.GhostNote({duration:a,dots:o}):t.StaveNote({keys:l,duration:a,dots:o,type:r,clef:s,auto_stem:c});c||d.setStemDirection("up"===i?st.UP:st.DOWN);const b=[];n.forEach(((e,i)=>{const s=e.accid;if("string"==typeof s){const e=t.Accidental({type:s});d.addModifier(e,i),b.push(e)}else b.push(void 0)}));for(let t=0;tt(e,d,this))),this.elements.notes.push(d),this.elements.accidentals.push(b),this.resetPiece()}}function Ke(t,e){void 0!==t.id&&e.setAttribute("id",t.id)}const $e=/\s*,\s*/;function Je(t,e){void 0!==t.class&&t.class.split($e).forEach((t=>e.addClass(t)))}class qe{constructor(t={}){this.defaults={clef:"treble",time:"4/4",stem:"auto"},this.setOptions(t)}set(t){return this.defaults=Object.assign(Object.assign({},this.defaults),t),this}setOptions(t){var e,i;const s=t.factory,n=null!==(e=t.builder)&&void 0!==e?e:new ze(s);return this.options=Object.assign(Object.assign({commitHooks:[Ke,Je,ft.easyScoreHook,Rt.easyScoreHook],throwOnError:!1},t),{factory:s,builder:n}),this.factory=s,this.builder=n,this.grammar=new Xe(this.builder),this.parser=new He(this.grammar),null===(i=this.options.commitHooks)||void 0===i||i.forEach((t=>this.addCommitHook(t))),this}setContext(t){return this.factory.setContext(t),this}parse(t,e={}){this.builder.reset(e);const i=this.parser.parse(t);if(!i.success&&this.options.throwOnError)throw je(i),new p("Error parsing line: "+t);return i}beam(t,e){return this.factory.Beam({notes:t,options:e}),t}tuplet(t,e){return this.factory.Tuplet({notes:t,options:e}),t}notes(t,e={}){return e=Object.assign({clef:this.defaults.clef,stem:this.defaults.stem},e),this.parse(t,e),this.builder.getElements().notes}voice(t,e={}){return e=Object.assign({time:this.defaults.time},e),this.factory.Voice(e).addTickables(t)}addCommitHook(t){this.builder.addCommitHook(t)}}qe.DEBUG=!1;const Qe="Ghost note must have valid initialization data to identify duration.";class Ze extends Lt{static get CATEGORY(){return u.GhostNote}constructor(t){if(!t)throw new p("BadArguments",Qe);let e;if("string"==typeof t)e={duration:t};else{if("object"!=typeof t)throw new p("BadArguments",Qe);e=t}super(e),this.setWidth(0)}isRest(){return!0}setStave(t){return super.setStave(t),this}addToModifierContext(t){return this}preFormat(){return this.preFormatted=!0,this}draw(){this.setRendered();for(let t=0;t=oi.type.TEXT&&t<=oi.type.MIXED&&(this.type=t),this}setCustomText(t,e){return this.custom_depress_text=t||"",this.custom_release_text=e||"",this}setLine(t){return this.line=t,this}drawBracketed(){const t=this.checkContext();let e,i,s=!1;this.notes.forEach(((n,a,o)=>{s=!s;const r=n.getAbsoluteX(),h=n.checkStave().getYForBottomText(this.line+3);if(r{e=!e;const s=i.checkStave(),n=i.getAbsoluteX(),a=s.getYForBottomText(this.line+3),o=V.currentMusicFont().lookupMetric(`pedalMarking.${e?"down":"up"}.point`);let r=0;e?this.custom_depress_text?(r=t.measureText(this.custom_depress_text).width,t.fillText(this.custom_depress_text,n-r/2,a)):ai("pedal_depress",t,n,a,o):this.custom_release_text?(r=t.measureText(this.custom_release_text).width,t.fillText(this.custom_release_text,n-r/2,a)):ai("pedal_release",t,n,a,o)}))}draw(){const t=this.checkContext();this.setRendered(),t.save(),t.setStrokeStyle(this.render_options.color),t.setFillStyle(this.render_options.color),t.setFont(this.textFont),function(...t){oi.DEBUG&&x("Vex.Flow.PedalMarking",t)}("Rendering Pedal Marking"),this.type===oi.type.BRACKET||this.type===oi.type.MIXED?(t.setLineWidth(this.render_options.bracket_line_width),this.drawBracketed()):this.type===oi.type.TEXT&&this.drawText(),t.restore()}}oi.DEBUG=!1,oi.TEXT_FONT={family:F.SERIF,size:12,weight:D.BOLD,style:N.ITALIC},oi.GLYPHS={pedal_depress:{code:"keyboardPedalPed",x_shift:-10,y_shift:0},pedal_release:{code:"keyboardPedalUp",x_shift:-2,y_shift:3}},oi.type={TEXT:1,BRACKET:2,MIXED:3},oi.typeString={text:oi.type.TEXT,bracket:oi.type.BRACKET,mixed:oi.type.MIXED};const ri={1:"repeat1Bar",2:"repeat2Bars",4:"repeat4Bars",slash:"repeatBarSlash"};class hi extends ti{static get CATEGORY(){return u.RepeatNote}constructor(t,e,i){super(void 0,Object.assign({duration:"q",align_center:"slash"!==t},e),i);const s=new Q(ri[t]||"repeat1Bar",V.currentMusicFont().lookupMetric("repeatNote.point",40),{category:"repeatNote"});this.setGlyph(s)}}function li(t,e,i,s,n,a,o){t.beginPath(),t.moveTo(e,i),t.lineTo(s,n),t.lineTo(a,o),t.lineTo(e,i),t.closePath(),t.fill()}class ci extends O{constructor(t){super(),this.setNotes(t),this.text="",this.resetFont(),this.render_options={padding_left:4,padding_right:3,line_width:1,line_dash:void 0,rounded_end:!0,color:void 0,draw_start_arrow:!1,draw_end_arrow:!1,arrowhead_length:10,arrowhead_angle:Math.PI/8,text_position_vertical:ci.TextVerticalPosition.TOP,text_justification:ci.TextJustification.CENTER}}static get CATEGORY(){return u.StaveLine}setText(t){return this.text=t,this}setNotes(t){if(!t.first_note&&!t.last_note)throw new p("BadArguments","Notes needs to have either first_note or last_note set.");if(t.first_indices||(t.first_indices=[0]),t.last_indices||(t.last_indices=[0]),t.first_indices.length!==t.last_indices.length)throw new p("BadArguments","Connected notes must have same number of indices.");return this.notes=t,this.first_note=t.first_note,this.first_indices=t.first_indices,this.last_note=t.last_note,this.last_indices=t.last_indices,this}applyLineStyle(){const t=this.checkContext(),e=this.render_options;e.line_dash&&t.setLineDash(e.line_dash),e.line_width&&t.setLineWidth(e.line_width),e.rounded_end?t.setLineCap("round"):t.setLineCap("square")}applyFontStyle(){const t=this.checkContext();t.setFont(this.textFont);const e=this.render_options.color;e&&(t.setStrokeStyle(e),t.setFillStyle(e))}drawArrowLine(t,e,i){const s=this.render_options.draw_start_arrow&&this.render_options.draw_end_arrow,n=e.x,a=e.y,o=i.x,r=i.y,h=Math.sqrt((o-n)*(o-n)+(r-a)*(r-a)),l=(h-this.render_options.arrowhead_length/3)/h;let c,d,b,g;this.render_options.draw_end_arrow||s?(c=Math.round(n+(o-n)*l),d=Math.round(a+(r-a)*l)):(c=o,d=r),this.render_options.draw_start_arrow||s?(b=n+(o-n)*(1-l),g=a+(r-a)*(1-l)):(b=n,g=a),this.render_options.color&&(t.setStrokeStyle(this.render_options.color),t.setFillStyle(this.render_options.color)),t.beginPath(),t.moveTo(b,g),t.lineTo(c,d),t.stroke(),t.closePath();const m=Math.atan2(r-a,o-n),u=Math.abs(this.render_options.arrowhead_length/Math.cos(this.render_options.arrowhead_angle));let p,f,_,x,S,y;(this.render_options.draw_end_arrow||s)&&(p=m+Math.PI+this.render_options.arrowhead_angle,_=o+Math.cos(p)*u,x=r+Math.sin(p)*u,f=m+Math.PI-this.render_options.arrowhead_angle,S=o+Math.cos(f)*u,y=r+Math.sin(f)*u,li(t,_,x,o,r,S,y)),(this.render_options.draw_start_arrow||s)&&(p=m+this.render_options.arrowhead_angle,_=n+Math.cos(p)*u,x=a+Math.sin(p)*u,f=m-this.render_options.arrowhead_angle,S=n+Math.cos(f)*u,y=a+Math.sin(f)*u,li(t,_,x,n,a,S,y))}draw(){const t=this.checkContext();this.setRendered();const e=this.first_note,i=this.last_note,s=this.render_options;t.save(),this.applyLineStyle();let n={x:0,y:0},a={x:0,y:0};this.first_indices.forEach(((o,r)=>{const h=this.last_indices[r];n=e.getModifierStartXY(2,o),a=i.getModifierStartXY(1,h);const l=n.y>a.y;n.x+=e.getMetrics().modRightPx+s.padding_left,a.x-=i.getMetrics().modLeftPx+s.padding_right;const c=e.getGlyph().getWidth();e.getKeyProps()[o].displaced&&1===e.getStemDirection()&&(n.x+=c+s.padding_left);i.getKeyProps()[h].displaced&&-1===i.getStemDirection()&&(a.x-=c+s.padding_right),n.y+=l?-3:1,a.y+=l?2:0,this.drawArrowLine(t,n,a)})),t.restore();const o=t.measureText(this.text).width,r=s.text_justification;let h=0;if(r===ci.TextJustification.LEFT)h=n.x;else if(r===ci.TextJustification.CENTER){h=(a.x-n.x)/2+n.x-o/2}else r===ci.TextJustification.RIGHT&&(h=a.x-o);let l=0;const c=s.text_position_vertical;return c===ci.TextVerticalPosition.TOP?l=e.checkStave().getYForTopText():c===ci.TextVerticalPosition.BOTTOM&&(l=e.checkStave().getYForBottomText(V.TEXT_HEIGHT_OFFSET_HACK)),t.save(),this.applyFontStyle(),t.fillText(this.text,h,l),t.restore(),this}}ci.TEXT_FONT=Object.assign({},O.TEXT_FONT),ci.TextVerticalPosition={TOP:1,BOTTOM:2},ci.TextJustification=ne;class di extends O{constructor(t={}){super(),this.setOptions(t),this.parts=[]}static get CATEGORY(){return u.System}setOptions(t={}){if(!t.factory)throw new p("NoFactory","System.setOptions(options) requires a factory.");this.factory=t.factory,this.options=Object.assign(Object.assign({factory:this.factory,x:10,y:10,width:500,spaceBetweenStaves:12,autoWidth:!1,noJustification:!1,debugFormatter:!1,formatIterations:0,noPadding:!1},t),{details:Object.assign({alpha:.5},t.details),formatOptions:Object.assign({},t.formatOptions)}),!1===this.options.noJustification&&void 0===t.width&&(this.options.autoWidth=!0)}setContext(t){return super.setContext(t),this.factory.setContext(t),this}addConnector(t="double"){return this.connector=this.factory.StaveConnector({top_stave:this.parts[0].stave,bottom_stave:this.parts[this.parts.length-1].stave,type:t}),this.connector}addStave(t){var e;const i=Object.assign({left_bar:!1},t.options),s=null!==(e=t.stave)&&void 0!==e?e:this.factory.Stave({x:this.options.x,y:this.options.y,width:this.options.width,options:i}),n=Object.assign(Object.assign({stave:s,spaceAbove:0,spaceBelow:0,debugNoteMetrics:!1,noJustification:!1},t),{options:i}),a=this.getContext();return n.voices.forEach((t=>t.setContext(a).setStave(s).getTickables().forEach((t=>t.setStave(s))))),this.parts.push(n),s}format(){const t=this.options.details;let e=0;const i=new Ne(t);this.formatter=i;let s=this.options.y,n=0,a=[],o=[];const r=[];this.parts.forEach((t=>{s+=t.stave.space(t.spaceAbove),t.stave.setY(s),i.joinVoices(t.voices),s+=t.stave.space(t.spaceBelow),s+=t.stave.space(this.options.spaceBetweenStaves),t.debugNoteMetrics&&(r.push({y:s,voice:t.voices[0]}),s+=15),a=a.concat(t.voices),o=o.concat(t.stave),n=Math.max(n,t.stave.getNoteStartX())})),this.parts.forEach((t=>t.stave.setNoteStartX(n))),this.options.autoWidth?(e=i.preCalculateMinTotalWidth(a),this.parts.forEach((t=>{t.stave.setWidth(e+ve.rightPadding+(n-this.options.x))}))):e=this.options.noPadding?this.options.width-(n-this.options.x):this.options.width-(n-this.options.x)-ve.defaultPadding,i.format(a,this.options.noJustification?0:e,this.options.formatOptions),i.postFormat();for(let e=0;e{e.voice.getTickables().forEach((i=>yt.plotMetrics(t,i,e.y)))}))}}class bi extends Lt{constructor(t,e=!1){super(t),this.glyphs=[],this.greatestString=()=>this.positions.map((t=>t.str)).reduce(((t,e)=>t>e?t:e)),this.leastString=()=>this.positions.map((t=>t.str)).reduce(((t,e)=>tthis.width}setStave(t){super.setStave(t);const e=t.getContext();if(this.setContext(e),e){this.width=0;for(let t=0;ti.width),this.width=Math.max(i.getWidth(),this.width)}this.glyph.getWidth=()=>this.width}const i=this.positions.map((({str:e})=>t.getYForLine(Number(e)-1)));return this.setYs(i),this.stem&&this.stem.setYBounds(this.getStemY(),this.getStemY()),this}getPositions(){return this.positions}getModifierStartXY(t,e){if(!this.preFormatted)throw new p("UnformattedNote","Can't call GetModifierStartXY on an unformatted note");if(0===this.ys.length)throw new p("NoYValues","No Y-Values calculated for this note.");let i=0;if(t===Z.Position.LEFT)i=-2;else if(t===Z.Position.RIGHT)i=this.width+2;else if(t===Z.Position.BELOW||t===Z.Position.ABOVE){i=this.glyph.getWidth()/2}return{x:this.getAbsoluteX()+i,y:this.ys[e]}}getLineForRest(){return Number(this.positions[0].str)}preFormat(){this.preFormatted||(this.modifierContext&&this.modifierContext.preFormat(),this.preFormatted=!0)}getStemX(){return this.getCenterGlyphX()}getStemY(){const t=this.checkStave().getNumLines()-.5,e=st.UP===this.stem_direction?-.5:t;return this.checkStave().getYForLine(e)}getStemExtents(){return this.checkStem().getExtents()}drawFlag(){var t;const{beam:e,glyph:i,render_options:{draw_stem:s}}=this,n=this.checkContext(),a=null==e&&s;if(i.flag&&a){const e=this.getStemX(),i=this.getStemDirection()===st.DOWN?this.getStemY()-this.checkStem().getHeight()-(this.glyph?this.glyph.stem_down_extension:0):this.getStemY()-this.checkStem().getHeight()+(this.glyph?this.glyph.stem_up_extension:0);null===(t=this.flag)||void 0===t||t.render(n,e,i)}}drawModifiers(){this.modifiers.forEach((t=>{r(t)&&!this.render_options.draw_dots||(t.setContext(this.getContext()),t.drawWithStyle())}))}drawStemThrough(){const t=this.getStemX(),e=this.getStemY(),i=this.checkContext(),s=this.render_options.draw_stem,n=this.render_options.draw_stem_through_stave;if(s&&n){const s=function(t,e,i,s){const n=1!==s,a=-1!==s,o=i.getSpacingBetweenLines(),r=i.getNumLines(),h=[];return e.forEach((e=>{const l=e.indexOf(r)>-1,c=e.indexOf(1)>-1;if(n&&c||a&&l)return;1===e.length&&e.push(e[0]);const d=[];e.forEach(((e,n,a)=>{const h=1===e,l=e===r;let c=i.getYForLine(e-1);0!==n||h?n!==a.length-1||l||(c+=o/2-1):c-=o/2-1,d.push(c),1===s&&h?d.push(t-2):-1===s&&l&&d.push(t+2)})),h.push(d.sort(((t,e)=>t-e)))})),h}(e,function(t,e){const i=[];let s=[];for(let n=1;n<=t;n++)e.indexOf(n)>-1?(i.push(s),s=[]):s.push(n);return s.length>0&&i.push(s),i}(this.checkStave().getNumLines(),this.positions.map((t=>Number(t.str)))),this.checkStave(),this.getStemDirection());i.save(),i.setLineWidth(st.WIDTH),s.forEach((e=>{0!==e.length&&(i.beginPath(),i.moveTo(t,e[0]),i.lineTo(t,e[e.length-1]),i.stroke(),i.closePath())})),i.restore()}}drawPositions(){const t=this.checkContext(),e=this.getAbsoluteX(),i=this.ys;for(let s=0;s{const i=_i.GLYPHS[e];if(!i)throw new p("Invalid dynamics character: "+e);const s=_(this.render_options.glyph_font_size),n=new Q(i.code,s,{category:"textNote"});this.glyphs.push(n),t+=i.width})),this.setWidth(t),this.preFormatted=!0,this}draw(){this.setRendered();const t=this.getAbsoluteX(),e=this.checkStave().getYForLine(this.line+-3);fi("Rendering Dynamics: ",this.sequence);let i=t;this.glyphs.forEach(((t,s)=>{const n=this.sequence[s];t.render(this.checkContext(),i,e),i+=_i.GLYPHS[n].width}))}}_i.DEBUG=!1;class xi extends yt{constructor(t,e){super({duration:"b"});const i=new ye(t,e);this.timeSigInfo=i.getInfo(),this.setWidth(this.timeSigInfo.glyph.getMetrics().width),this.ignore_ticks=!0}static get CATEGORY(){return u.TimeSigNote}addToModifierContext(t){return this}preFormat(){return this.preFormatted=!0,this}draw(){const t=this.checkStave(),e=this.checkContext();this.setRendered(),this.timeSigInfo.glyph.getContext()||this.timeSigInfo.glyph.setContext(e),this.timeSigInfo.glyph.setStave(t),this.timeSigInfo.glyph.setYShift(t.getYForLine(2)-t.getYForGlyphs()),this.timeSigInfo.glyph.renderToStave(this.getAbsoluteX())}}class Si extends O{constructor(t){super(),t.start&&(this.start=t.start),t.stop&&(this.stop=t.stop),this.line=1,this.render_options={harsh:!1,wave_height:6,wave_width:4,wave_girth:2,vibrato_width:0}}static get CATEGORY(){return u.VibratoBracket}setLine(t){return this.line=t,this}setHarsh(t){return this.render_options.harsh=t,this}draw(){const t=this.checkContext();this.setRendered();const e=this.start&&this.start.checkStave().getYForTopText(this.line)||this.stop&&this.stop.checkStave().getYForTopText(this.line)||0,i=this.start&&this.start.getAbsoluteX()||this.stop&&this.stop.checkStave().getTieStartX()||0,s=this.stop&&this.stop.getAbsoluteX()-this.stop.getWidth()-5||this.start&&this.start.checkStave().getTieEndX()-10||0;this.render_options.vibrato_width=s-i,function(...t){Si.DEBUG&&x("Vex.Flow.VibratoBracket",t)}("Rendering VibratoBracket: start_x:",i,"stop_x:",s,"y:",e),le.renderVibrato(t,i,e,this.render_options)}}function yi(...t){Ti.DEBUG&&x("Vex.Flow.Factory",t)}Si.DEBUG=!1;class Ti{constructor(t={}){yi("New factory: ",t),this.options={stave:{space:10},renderer:{elementId:"",width:500,height:200,background:"#FFF"},font:Ti.TEXT_FONT},this.setOptions(t)}static newFromElementId(t,e=500,i=200){return new Ti({renderer:{elementId:t,width:e,height:i}})}reset(){this.renderQ=[],this.systems=[],this.staves=[],this.voices=[],this.stave=void 0}setOptions(t){this.options=Object.assign(Object.assign({},this.options),t),this.initRenderer(),this.reset()}initRenderer(){const{elementId:t,width:e,height:i,background:s}=this.options.renderer;if(null==t)return;if(""==t)throw yi(this),new p("renderer.elementId not set in FactoryOptions");let n=this.options.renderer.backend;if(void 0===n){n=$t(document.getElementById(t))?oe.Backends.CANVAS:oe.Backends.SVG}this.context=oe.buildContext(t,n,e,i,s)}getContext(){return this.context}setContext(t){return this.context=t,this}getStave(){return this.stave}getVoices(){return this.voices}Stave(t){const e=this.options.stave.space,i=Object.assign({x:0,y:0,width:this.options.renderer.width-1*e,options:{spacing_between_lines_px:1*e}},t),s=new ve(i.x,i.y,i.width,i.options);return this.staves.push(s),s.setContext(this.context),this.stave=s,s}TabStave(t){const e=this.options.stave.space,i=Object.assign({x:0,y:0,width:this.options.renderer.width-1*e,options:{spacing_between_lines_px:1.3*e}},t),s=new gi(i.x,i.y,i.width,i.options);return this.staves.push(s),s.setContext(this.context),this.stave=s,s}StaveNote(t){const e=new Wt(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}GlyphNote(t,e,i){const s=new ti(t,e,i);return this.stave&&s.setStave(this.stave),s.setContext(this.context),this.renderQ.push(s),s}RepeatNote(t,e,i){const s=new hi(t,e,i);return this.stave&&s.setStave(this.stave),s.setContext(this.context),this.renderQ.push(s),s}GhostNote(t){const e=new Ze(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}TextNote(t){const e=new fe(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}BarNote(t={}){const e=new At(t.type);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}ClefNote(t){const e=Object.assign({type:"treble",options:{size:"default",annotation:void 0}},t),i=new Le(e.type,e.options.size,e.options.annotation);return this.stave&&i.setStave(this.stave),i.setContext(this.context),this.renderQ.push(i),i}TimeSigNote(t){const e=Object.assign({time:"4/4"},t),i=new xi(e.time);return this.stave&&i.setStave(this.stave),i.setContext(this.context),this.renderQ.push(i),i}KeySigNote(t){const e=new ii(t.key,t.cancelKey,t.alterKey);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}TabNote(t){const e=new bi(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}GraceNote(t){const e=new ei(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),e}GraceNoteGroup(t){const e=new jt(t.notes,t.slur);return e.setContext(this.context),e}Accidental(t){const e=new it(t.type);return e.setContext(this.context),e}Annotation(t){const e=Object.assign({text:"p",hJustify:ht.CENTER,vJustify:lt.BOTTOM},t),i=new ct(e.text);return i.setJustification(e.hJustify),i.setVerticalJustification(e.vJustify),i.setFont(e.font),i.setContext(this.context),i}ChordSymbol(t){const e=Object.assign({vJustify:"top",hJustify:"center",kerning:!0,reportWidth:!0},t),i=new Ft;return i.setHorizontal(e.hJustify),i.setVertical(e.vJustify),i.setEnableKerning(e.kerning),i.setReportWidth(e.reportWidth),"string"==typeof e.fontFamily&&"number"==typeof e.fontSize?"string"==typeof e.fontWeight?i.setFont(e.fontFamily,e.fontSize,e.fontWeight):i.setFont(e.fontFamily,e.fontSize,""):"number"==typeof e.fontSize&&i.setFontSize(e.fontSize),i.setContext(this.context),i}Articulation(t){const e=Object.assign({type:"a.",position:"above"},t),i=new ft(e.type);return i.setPosition(e.position),i.setContext(this.context),i}Ornament(t,e){const i=Object.assign({type:t,position:0,accidental:""},e),s=new zt(t);return s.setPosition(i.position),i.upperAccidental&&s.setUpperAccidental(i.upperAccidental),i.lowerAccidental&&s.setLowerAccidental(i.lowerAccidental),void 0!==i.delayed&&s.setDelayed(i.delayed),s.setContext(this.context),s}TextDynamics(t){const e=Object.assign({text:"p",duration:"q",dots:0,line:0},t),i=new _i({text:e.text,line:e.line,duration:e.duration,dots:e.dots});return this.stave&&i.setStave(this.stave),i.setContext(this.context),this.renderQ.push(i),i}Fingering(t){const e=Object.assign({number:"0",position:"left"},t),i=new Rt(e.number);return i.setPosition(e.position),i.setContext(this.context),i}StringNumber(t,e=!0){const i=new re(t.number);return i.setPosition(t.position),i.setContext(this.context),i.setDrawCircle(e),i}TickContext(){return new Vt}ModifierContext(){return new de}MultiMeasureRest(t){const e=_(t.number_of_measures,"NoNumberOfMeasures"),i=new ni(e,t);return i.setContext(this.context),this.renderQ.push(i),i}Voice(t){const e=Object.assign({time:"4/4"},t),i=new Ht(e.time);return this.voices.push(i),i}StaveConnector(t){const e=new Ce(t.top_stave,t.bottom_stave);return e.setType(t.type).setContext(this.context),this.renderQ.push(e),e}Formatter(t){return new Ne(t)}Tuplet(t){const e=Object.assign({notes:[],options:{}},t),i=new Pe(e.notes,e.options).setContext(this.context);return this.renderQ.push(i),i}Beam(t){var e,i,s,n,a;const o=new Oe(t.notes,null===(e=t.options)||void 0===e?void 0:e.autoStem).setContext(this.context);return o.breakSecondaryAt(null!==(s=null===(i=t.options)||void 0===i?void 0:i.secondaryBeamBreaks)&&void 0!==s?s:[]),(null===(n=t.options)||void 0===n?void 0:n.partialBeamDirections)&&Object.entries(null===(a=t.options)||void 0===a?void 0:a.partialBeamDirections).forEach((([t,e])=>{o.setPartialBeamSideAt(Number(t),e)})),this.renderQ.push(o),o}Curve(t){const e=new Ge(t.from,t.to,t.options).setContext(this.context);return this.renderQ.push(e),e}StaveTie(t){var e;const i=new Gt({first_note:t.from,last_note:t.to,first_indices:t.first_indices,last_indices:t.last_indices},t.text);return(null===(e=t.options)||void 0===e?void 0:e.direction)&&i.setDirection(t.options.direction),i.setContext(this.context),this.renderQ.push(i),i}StaveLine(t){var e,i;const s=new ci({first_note:t.from,last_note:t.to,first_indices:t.first_indices,last_indices:t.last_indices});return(null===(e=t.options)||void 0===e?void 0:e.text)&&s.setText(t.options.text),(null===(i=t.options)||void 0===i?void 0:i.font)&&s.setFont(t.options.font),s.setContext(this.context),this.renderQ.push(s),s}VibratoBracket(t){const e=new Si({start:t.from,stop:t.to});return t.options.line&&e.setLine(t.options.line),t.options.harsh&&e.setHarsh(t.options.harsh),e.setContext(this.context),this.renderQ.push(e),e}TextBracket(t){const e=new pi({start:t.from,stop:t.to,text:t.text,superscript:t.options.superscript,position:t.options.position});return t.options.line&&e.setLine(t.options.line),t.options.font&&e.setFont(t.options.font),e.setContext(this.context),this.renderQ.push(e),e}System(t={}){t.factory=this;const e=new di(t).setContext(this.context);return this.systems.push(e),e}EasyScore(t={}){return t.factory=this,new qe(t)}PedalMarking(t){const e=Object.assign({notes:[],options:{style:"mixed"}},t),i=new oi(e.notes);return i.setType(oi.typeString[e.options.style]),i.setContext(this.context),this.renderQ.push(i),i}NoteSubGroup(t){const e=Object.assign({notes:[]},t),i=new Xt(e.notes);return i.setContext(this.context),i}draw(){const t=this.context;this.systems.forEach((e=>e.setContext(t).format())),this.staves.forEach((e=>e.setContext(t).draw())),this.voices.forEach((e=>e.setContext(t).draw())),this.renderQ.forEach((e=>{e.isRendered()||e.setContext(t).draw()})),this.systems.forEach((e=>e.setContext(t).draw())),this.reset()}}Ti.DEBUG=!1,Ti.TEXT_FONT=Object.assign({},O.TEXT_FONT);class wi extends bi{static get CATEGORY(){return u.GraceTabNote}constructor(t){super(t,!1),this.render_options=Object.assign(Object.assign({},this.render_options),{y_shift:.3,scale:.6,font:`7.5pt ${F.SANS_SERIF}`}),this.updateWidth()}}class vi{constructor(t){this.music=new tt,this.setKey(t)}setKey(t){return this.key=t,this.reset(),this}getKey(){return this.key}reset(){this.keyParts=this.music.getKeyParts(this.key),this.keyString=this.keyParts.root,this.keyParts.accidental&&(this.keyString+=this.keyParts.accidental);if(!tt.scaleTypes[this.keyParts.type])throw new p("BadArguments",`Unsupported key type: ${this.key}`);this.scale=this.music.getScaleTones(this.music.getNoteValue(this.keyString),tt.scaleTypes[this.keyParts.type]),this.scaleMap={},this.scaleMapByValue={},this.originalScaleMapByValue={};const t=tt.root_indices[this.keyParts.root];for(let e=0;es?Ci.SLIDE_DOWN:Ci.SLIDE_UP}this.direction=e,this.render_options.cp1=11,this.render_options.cp2=14,this.render_options.y_shift=.5,this.resetFont()}static get CATEGORY(){return u.TabSlide}static get SLIDE_UP(){return 1}static get SLIDE_DOWN(){return-1}static createSlideUp(t){return new Ci(t,Ci.SLIDE_UP)}static createSlideDown(t){return new Ci(t,Ci.SLIDE_DOWN)}renderTie(t){if(0===t.first_ys.length||0===t.last_ys.length)throw new p("BadArguments","No Y-values to render");const e=this.checkContext(),i=t.first_x_px,s=t.first_ys,n=t.last_x_px,a=t.direction;if(a!==Ci.SLIDE_UP&&a!==Ci.SLIDE_DOWN)throw new p("BadSlide","Invalid slide direction");const o=this.notes.first_indices;for(let t=0;tthis.tuningValues.length)throw new p("BadArguments",`String number must be between 1 and ${this.tuningValues.length}:${t}`);return this.tuningValues[e-1]}getValueForFret(t,e){const i=this.getValueForString(e),s=Number(t);if(s<0)throw new p("BadArguments",`Fret number must be 0 or higher: ${t}`);return i+s}getNoteForFret(t,e){const i=this.getValueForFret(t,e),s=Math.floor(i/12),n=i%12;return`${V.integerToNote(n)}/${s}`}}var Ni=function(t,e,i,s){return new(i||(i=Promise))((function(n,a){function o(t){try{h(s.next(t))}catch(t){a(t)}}function r(t){try{h(s.throw(t))}catch(t){a(t)}}function h(t){var e;t.done?n(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(o,r)}h((s=s.apply(t,e||[])).next())}))};class Ai{static get BUILD(){return{VERSION:"4.1.0-alpha.0",ID:"847bc9014672858aedc7f8460384f51f98d6bd84",DATE:"2022-10-10T04:47:38.237Z"}}static setMusicFont(...t){const e=t.map((t=>F.load(t)));return V.MUSIC_FONT_STACK=e,Q.MUSIC_FONT_STACK=e.slice(),Q.CURRENT_CACHE_KEY=t.join(","),e}static fetchMusicFont(t,e){return Ni(this,void 0,void 0,(function*(){}))}static getMusicFont(){return V.MUSIC_FONT_STACK.map((t=>t.getName()))}static get RENDER_PRECISION_PLACES(){return V.RENDER_PRECISION_PLACES}static set RENDER_PRECISION_PLACES(t){V.RENDER_PRECISION_PLACES=t}static get SOFTMAX_FACTOR(){return V.SOFTMAX_FACTOR}static set SOFTMAX_FACTOR(t){V.SOFTMAX_FACTOR=t}static get NOTATION_FONT_SCALE(){return V.NOTATION_FONT_SCALE}static set NOTATION_FONT_SCALE(t){V.NOTATION_FONT_SCALE=t}static get TABLATURE_FONT_SCALE(){return V.TABLATURE_FONT_SCALE}static set TABLATURE_FONT_SCALE(t){V.TABLATURE_FONT_SCALE=t}static get RESOLUTION(){return V.RESOLUTION}static set RESOLUTION(t){V.RESOLUTION=t}static get SLASH_NOTEHEAD_WIDTH(){return V.SLASH_NOTEHEAD_WIDTH}static set SLASH_NOTEHEAD_WIDTH(t){V.SLASH_NOTEHEAD_WIDTH=t}static get STAVE_LINE_DISTANCE(){return V.STAVE_LINE_DISTANCE}static set STAVE_LINE_DISTANCE(t){V.STAVE_LINE_DISTANCE=t}static get STAVE_LINE_THICKNESS(){return V.STAVE_LINE_THICKNESS}static set STAVE_LINE_THICKNESS(t){V.STAVE_LINE_THICKNESS=t}static get STEM_HEIGHT(){return V.STEM_HEIGHT}static set STEM_HEIGHT(t){V.STEM_HEIGHT=t}static get STEM_WIDTH(){return V.STEM_WIDTH}static set STEM_WIDTH(t){V.STEM_WIDTH=t}static get TIME4_4(){return V.TIME4_4}static get accidentalMap(){return V.accidentalMap}static get unicode(){return V.unicode}static keySignature(t){return V.keySignature(t)}static hasKeySignature(t){return V.hasKeySignature(t)}static getKeySignatures(){return V.getKeySignatures()}static clefProperties(t){return V.clefProperties(t)}static keyProperties(t,e,i){return V.keyProperties(t,e,i)}static durationToTicks(t){return V.durationToTicks(t)}}Ai.Accidental=it,Ai.Annotation=ct,Ai.Articulation=ft,Ai.Barline=Nt,Ai.BarNote=At,Ai.Beam=Oe,Ai.Bend=Pt,Ai.BoundingBox=C,Ai.BoundingBoxComputation=k,Ai.CanvasContext=qt,Ai.ChordSymbol=Ft,Ai.Clef=be,Ai.ClefNote=Le,Ai.Crescendo=Ie,Ai.Curve=Ge,Ai.Dot=Bt,Ai.EasyScore=qe,Ai.Element=O,Ai.Factory=Ti,Ai.Font=F,Ai.Formatter=Ne,Ai.Fraction=v,Ai.FretHandFinger=Rt,Ai.GhostNote=Ze,Ai.Glyph=Q,Ai.GlyphNote=ti,Ai.GraceNote=ei,Ai.GraceNoteGroup=jt,Ai.GraceTabNote=wi,Ai.KeyManager=vi,Ai.KeySignature=ge,Ai.KeySigNote=ii,Ai.Modifier=Z,Ai.ModifierContext=de,Ai.MultiMeasureRest=ni,Ai.Music=tt,Ai.Note=yt,Ai.NoteHead=Ot,Ai.NoteSubGroup=Xt,Ai.Ornament=zt,Ai.Parenthesis=Kt,Ai.Parser=He,Ai.PedalMarking=oi,Ai.Registry=R,Ai.RenderContext=_t,Ai.Renderer=oe,Ai.RepeatNote=hi,Ai.Repetition=me,Ai.Stave=ve,Ai.StaveConnector=Ce,Ai.StaveHairpin=Ei,Ai.StaveLine=ci,Ai.StaveModifier=Dt,Ai.StaveNote=Wt,Ai.StaveTempo=pe,Ai.StaveText=_e,Ai.StaveTie=Gt,Ai.Stem=st,Ai.StringNumber=re,Ai.Stroke=he,Ai.SVGContext=ee,Ai.System=di,Ai.TabNote=bi,Ai.TabSlide=Ci,Ai.TabStave=gi,Ai.TabTie=Ut,Ai.TextBracket=pi,Ai.TextDynamics=_i,Ai.TextFormatter=rt,Ai.TextNote=fe,Ai.TickContext=Vt,Ai.TimeSignature=ye,Ai.TimeSigNote=xi,Ai.Tremolo=ki,Ai.Tuning=Di,Ai.Tuplet=Pe,Ai.Vibrato=le,Ai.VibratoBracket=Si,Ai.Voice=Ht,Ai.Volta=xe,Ai.AnnotationHorizontalJustify=ht,Ai.AnnotationVerticalJustify=lt,Ai.ChordSymbolHorizontalJustify=vt,Ai.ChordSymbolVerticalJustify=Et,Ai.SymbolTypes=Ct,Ai.SymbolModifiers=kt,Ai.CurvePosition=We,Ai.FontWeight=D,Ai.FontStyle=N,Ai.ModifierPosition=$,Ai.RendererBackends=ie,Ai.RendererLineEndType=se,Ai.BarlineType=wt,Ai.StaveModifierPosition=Tt,Ai.VoltaType=ae,Ai.TextBracketPosition=ui,Ai.TextJustification=ne,Ai.VoiceMode=Yt;const Pi={resolution:1e3,fontFamily:"VexFlowCustom",glyphs:{noteheadSquareWhite:{x_min:0,x_max:430.75,ha:386,o:"m 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 l 50 150 l 380 150 l 380 -150 l 50 -150 l 50 150 "},noteheadSquareBlack:{x_min:0,x_max:430.75,ha:386,o:"m 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 "},accidentalBuyukMucennebFlat:{x_min:-171.5,x_max:251.8125,ha:257,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 "},accidentalBakiyeFlat:{x_min:-176.9375,x_max:251.8125,ha:257,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 "},accidentalKucukMucennebSharp:{x_min:-1.359375,x_max:255.890625,ha:261,o:"m 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 "},accidentalKoron:{x_min:-20,x_max:320,ha:257,o:"m -8 200 b -8 210 8 200 16 200 l 20 148 -199 l 23 -615 b 0 -629 9 -629 6 -629 l -21 -612 l -21 -201 l -21 216 l -20 200 m 16 200 l 310 0 l 240 0 l 16 140 l 16 -120 l 240 0 l 310 0 l 16 -200 "},accidentalSori:{x_min:-10.890625,x_max:299.4375,ha:294,o:"m 44 174 b 51 174 47 174 49 174 b 68 173 55 174 61 174 l 287 112 l 551 40 b 615 20 617 22 609 23 b 626 0 622 16 626 8 b 615 -22 626 -9 622 -18 b 613 -23 613 -23 613 -23 b 613 -23 613 -23 613 -23 b 287 -113 613 -24 597 -29 l 68 -174 b 53 -176 61 -176 57 -176 b 39 -172 47 -176 43 -174 b 27 -151 31 -167 27 -159 b 39 -129 27 -141 31 -133 b 230 -74 43 -124 20 -131 l 370 -36 l 468 -9 b 498 0 484 -4 498 -1 b 468 8 498 0 484 2 l 370 34 l 230 73 b 40 126 28 129 43 124 b 27 149 31 131 27 140 b 44 174 27 161 34 170 m 205 110 l 205 300 b 205 330 245 330 245 300 l 245 300 l 245 -300 b 245 -330 205 -330 205 -300 l 205 -300 l 205 110 l 345 90 m 345 90 l 345 330 b 345 360 385 360 385 330 l 385 330 l 385 -270 b 385 -300 345 -300 345 -270 l 345 -270 l 345 90 "},vexAccidentalMicrotonal2:{x_min:-1.359375,x_max:386.5625,ha:394,o:"m 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 "},vexAccidentalMicrotonal3:{x_min:0,x_max:430.75,ha:360,o:"m -146 537 b -138 538 -143 538 -141 538 b -118 525 -129 538 -121 533 b -117 390 -117 522 -117 521 b -115 259 -117 268 -117 259 b -115 259 -115 259 -115 259 b -59 272 -104 263 -62 272 b -39 259 -50 272 -42 267 b -37 209 -38 257 -37 233 b -39 159 -37 185 -38 162 b -85 138 -43 149 -44 149 l -117 131 l -117 21 b -115 -88 -117 -80 -117 -88 b -115 -88 -115 -88 -115 -88 b -59 -75 -104 -84 -62 -75 b -44 -81 -52 -75 -48 -77 b -38 -124 -38 -87 -38 -85 b -38 -138 -38 -124 -38 -138 b -38 -152 -38 -138 -38 -152 b -44 -195 -38 -191 -38 -190 b -85 -209 -48 -200 -48 -200 l -117 -217 l -117 -349 b -118 -486 -117 -481 -117 -482 b -138 -499 -121 -494 -129 -499 b -153 -493 -143 -499 -149 -497 b -159 -415 -158 -487 -159 -496 b -159 -355 -159 -398 -159 -379 b -159 -227 -159 -284 -159 -227 b -205 -238 -159 -227 -180 -232 b -250 -249 -230 -244 -250 -249 b -251 -386 -251 -249 -251 -311 b -252 -525 -251 -521 -251 -522 b -272 -538 -255 -534 -264 -538 b -287 -532 -277 -538 -283 -536 b -293 -452 -292 -527 -293 -536 b -293 -391 -293 -436 -293 -415 b -294 -260 -293 -269 -293 -260 b -294 -260 -294 -260 -294 -260 b -348 -272 -306 -264 -345 -272 b -368 -259 -357 -272 -365 -267 b -369 -209 -369 -257 -369 -233 b -368 -159 -369 -185 -369 -162 b -323 -139 -364 -149 -362 -148 l -293 -131 l -293 -22 b -294 87 -293 80 -293 87 b -294 87 -294 87 -294 87 b -348 75 -306 84 -345 75 b -368 88 -357 75 -365 80 b -369 138 -369 91 -369 114 b -368 188 -369 162 -369 186 b -323 209 -364 198 -362 199 l -293 216 l -293 349 b -292 486 -293 481 -293 482 b -272 499 -288 494 -280 499 b -257 493 -266 499 -261 497 b -251 414 -251 487 -251 496 b -251 354 -251 398 -251 378 b -251 226 -251 284 -251 226 b -205 238 -250 226 -230 231 b -159 249 -180 244 -159 249 b -159 385 -159 249 -159 310 b -157 525 -159 521 -159 522 b -146 537 -156 530 -151 535 z m -159 11 b -159 120 -159 98 -159 120 l -159 120 b -175 116 -160 120 -167 119 b -221 105 -184 114 -204 109 l -251 98 l -251 -12 b -251 -121 -251 -72 -251 -121 b -205 -110 -250 -121 -230 -116 b -159 -99 -180 -104 -159 -99 b -159 11 -159 -99 -159 -49 z m 89 517 b 97 519 92 518 94 519 b 117 505 106 519 114 513 b 119 376 119 502 119 501 l 119 249 l 145 258 b 176 267 169 266 172 267 b 177 267 176 267 177 267 b 196 255 186 267 192 263 l 197 252 l 197 205 b 197 181 197 195 197 187 b 193 149 197 153 197 153 b 152 131 190 144 187 143 l 119 120 l 119 10 b 119 -100 119 -62 119 -100 b 145 -91 120 -100 131 -96 b 173 -82 159 -86 171 -82 b 176 -81 174 -81 175 -81 b 196 -94 185 -81 193 -87 b 198 -151 197 -97 198 -125 b 197 -194 198 -172 197 -192 b 153 -218 193 -203 192 -204 l 119 -230 l 119 -367 l 118 -504 l 117 -507 b 97 -519 113 -514 105 -519 b 82 -512 92 -519 87 -517 b 76 -434 77 -507 76 -516 b 76 -374 76 -418 76 -398 b 76 -245 76 -303 76 -245 b 52 -254 76 -245 65 -249 b 19 -263 34 -260 25 -263 b 6 -257 13 -263 10 -261 b 0 -214 0 -251 0 -253 b 0 -200 0 -210 0 -205 b 0 -188 0 -196 0 -192 b 6 -143 0 -147 0 -149 b 46 -126 10 -139 10 -139 l 76 -115 l 76 -5 b 76 106 76 56 76 106 b 51 98 76 106 64 102 b 18 89 34 92 25 89 b 6 95 13 89 10 91 b 0 139 0 101 0 99 b 0 153 0 143 0 148 b 0 179 0 163 0 172 b 44 225 0 215 3 211 l 76 236 l 76 369 b 78 505 76 501 76 502 b 89 517 80 510 85 515 z "},vexAccidentalMicrotonal4:{x_min:0,x_max:430.75,ha:360,o:"m 283 633 b 291 634 286 634 289 634 b 311 621 300 634 308 629 b 313 505 313 618 313 617 b 313 393 313 443 313 393 b 378 425 313 393 343 407 l 443 458 l 448 458 b 449 458 449 458 449 458 b 471 437 462 458 471 448 b 469 429 471 434 470 432 b 387 382 466 421 469 423 l 313 344 l 313 247 l 313 150 l 315 152 b 433 201 353 184 394 201 b 479 193 448 201 464 198 b 549 86 524 177 549 135 b 526 1 549 59 541 29 b 395 -143 504 -39 475 -71 b 316 -214 351 -182 341 -191 b 292 -229 302 -228 300 -229 b 272 -216 283 -229 275 -224 b 271 55 271 -212 271 -212 b 270 323 271 203 270 323 b 205 291 270 323 241 308 l 140 258 l 135 258 b 134 258 135 258 134 258 b 112 279 121 258 112 267 b 114 287 112 281 113 284 b 196 334 117 295 114 293 l 271 371 l 271 495 b 272 621 271 617 271 618 b 283 633 274 626 279 631 z m 404 133 b 391 134 400 134 395 134 b 384 134 388 134 386 134 b 318 88 358 130 335 114 l 313 81 l 313 -37 l 313 -156 l 316 -152 b 439 83 391 -71 439 22 l 439 84 b 404 133 439 115 430 128 z m -8 633 l -8 633 b 0 634 -6 634 -3 634 b 20 621 8 634 17 629 b 21 384 21 618 21 617 l 21 150 l 24 152 b 141 201 62 184 102 201 b 187 193 157 201 172 198 b 257 86 232 177 257 135 b 234 1 257 59 250 29 b 103 -143 212 -39 183 -71 b 24 -214 60 -182 49 -191 b 0 -229 10 -228 8 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 203 l -21 618 l -20 621 b -8 633 -18 626 -13 631 z m 113 133 l 113 133 b 99 134 109 134 103 134 b 93 134 97 134 94 134 b 26 88 66 130 43 114 l 21 81 l 21 -37 l 21 -156 l 25 -152 b 148 83 99 -71 148 22 l 148 84 b 113 133 148 115 138 128 z "},vexNoteHeadRectBlack:{x_min:0,x_max:430.75,ha:360,o:"m 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 "},vexNoteHeadRectWhite:{x_min:0,x_max:430.75,ha:360,o:"m 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 l 50 100 l 380 100 l 380 -100 l 50 -100 l 50 100"}}},Mi={name:"VexFlowCustom",smufl:!1,glyphs:{}};const Fi={glyphs:{bracketTop:{x_min:0,x_max:559.421875,ha:571,o:"m 544 204 b 548 204 545 204 547 204 b 559 194 555 204 559 199 b 559 190 559 192 559 191 b 530 156 559 188 556 184 b 462 86 510 134 481 104 b 453 76 458 81 454 77 l 446 70 l 441 65 b 434 59 439 63 436 61 l 427 54 b 409 37 426 51 416 44 b 392 23 398 29 394 26 b 387 19 389 22 387 20 b 379 13 386 19 383 16 l 371 8 l 367 5 l 359 -1 l 337 -16 b 285 -48 319 -29 298 -41 l 279 -52 b 186 -95 255 -66 210 -87 l 175 -99 b 23 -129 127 -117 68 -129 b 17 -129 20 -129 19 -129 b 1 -123 2 -129 2 -129 b 0 -49 0 -122 0 -83 b 0 4 0 -22 0 1 b 27 11 2 9 4 9 b 185 31 78 12 145 20 b 198 34 186 31 193 33 b 314 73 234 44 277 58 b 349 88 328 79 340 84 b 353 90 352 90 353 90 b 363 94 353 90 357 93 b 371 98 367 97 371 98 b 428 129 372 98 413 120 b 461 148 441 136 454 144 b 468 151 464 149 466 151 b 472 154 469 152 470 154 b 481 161 473 155 477 158 b 525 190 490 166 518 186 l 534 197 b 540 201 536 198 539 199 b 544 204 541 202 544 204 "},bracketBottom:{x_min:0,x_max:559.421875,ha:571,o:"m 5 127 b 14 127 6 127 9 127 b 51 126 25 127 43 127 b 175 98 93 122 138 112 l 186 94 b 279 51 210 86 255 65 b 285 47 280 51 283 48 b 319 27 291 44 311 31 l 326 22 b 359 0 332 19 352 4 l 367 -6 b 371 -9 368 -6 370 -8 l 379 -15 b 387 -22 383 -18 386 -20 l 398 -30 l 411 -40 l 417 -47 l 427 -55 l 434 -61 b 441 -66 436 -62 439 -65 l 446 -72 l 453 -77 l 462 -87 b 558 -188 490 -113 549 -176 b 559 -195 559 -191 559 -194 b 548 -205 559 -201 555 -205 b 541 -204 547 -205 544 -205 b 534 -198 539 -201 536 -199 l 525 -191 b 481 -162 518 -187 490 -167 b 472 -155 477 -159 472 -156 b 468 -152 470 -155 469 -154 b 461 -149 466 -152 464 -151 b 428 -130 454 -145 441 -137 b 371 -99 413 -122 372 -99 b 363 -95 371 -99 367 -98 b 353 -91 357 -94 353 -91 b 348 -90 353 -91 352 -91 b 332 -81 343 -87 341 -86 b 27 -12 230 -37 127 -13 b 0 -5 4 -11 2 -11 b 0 58 0 -2 0 27 b 0 122 0 88 0 120 b 5 127 1 124 4 126 "},barlineTick:{x_min:-80.3125,x_max:78.9375,ha:81,o:"m 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 "},breathMarkTick:{x_min:-80.3125,x_max:78.9375,ha:81,o:"m 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 "},segno:{x_min:-330.75,x_max:329.390625,ha:336,o:"m -133 483 b -117 484 -127 484 -122 484 b 31 373 -51 484 9 440 b 35 348 34 365 35 356 b -25 285 35 313 10 285 b -87 331 -55 285 -76 302 b -167 402 -100 376 -133 402 b -191 398 -175 402 -183 401 b -227 341 -215 388 -227 369 b -225 320 -227 334 -227 327 b -13 74 -209 230 -125 133 b 6 65 -4 70 5 66 l 9 63 l 10 65 b 117 231 12 68 40 112 l 189 341 l 242 424 b 268 460 262 456 264 458 b 283 464 273 463 277 464 b 308 438 296 464 308 453 l 308 437 b 287 396 308 430 308 428 l 95 98 l 59 43 l 58 41 l 65 37 b 253 -156 151 -8 217 -77 b 281 -285 272 -199 281 -244 b 148 -481 281 -381 231 -463 b 115 -485 137 -484 126 -485 b -32 -376 51 -485 -9 -442 b -36 -349 -35 -366 -36 -358 b 25 -287 -36 -315 -12 -287 b 85 -333 54 -287 74 -302 b 166 -403 99 -377 133 -403 b 190 -399 174 -403 182 -402 b 225 -342 215 -390 225 -370 b 224 -322 225 -335 225 -328 b 12 -76 208 -231 125 -134 b -8 -66 2 -72 -6 -68 l -10 -65 l -12 -66 b -118 -231 -13 -68 -42 -113 l -190 -342 l -243 -426 b -269 -462 -264 -458 -265 -458 b -284 -466 -274 -464 -279 -466 b -310 -440 -298 -466 -310 -455 l -310 -438 b -288 -398 -310 -430 -308 -430 l -96 -99 l -59 -44 l -59 -43 l -66 -38 b -281 284 -198 33 -281 158 l -281 284 b -133 483 -281 392 -220 474 m 254 177 b 266 179 258 177 262 179 b 319 149 287 179 307 167 b 329 115 326 140 329 127 b 319 79 329 102 326 90 b 268 51 307 61 287 51 b 221 72 250 51 234 58 b 205 115 210 84 205 99 b 254 177 205 142 223 170 m -281 -54 b -269 -52 -277 -52 -273 -52 b -223 -73 -253 -52 -235 -59 b -206 -116 -212 -84 -206 -101 b -216 -151 -206 -129 -209 -141 b -269 -179 -228 -170 -249 -179 b -314 -159 -285 -179 -302 -173 b -330 -116 -325 -147 -330 -131 b -281 -54 -330 -88 -313 -61 "},coda:{x_min:-311.6875,x_max:310.328125,ha:317,o:"m -9 388 b -2 390 -8 390 -5 390 b 5 388 1 390 4 390 b 19 378 10 387 16 383 b 23 333 23 371 23 371 b 24 298 23 299 24 298 b 81 276 34 298 65 285 b 213 91 145 240 190 177 b 224 24 217 76 224 36 b 257 24 224 24 235 24 b 299 19 292 24 292 24 b 310 -1 306 15 310 6 b 299 -23 310 -11 306 -19 b 257 -27 292 -27 292 -27 b 224 -29 235 -27 224 -29 b 213 -95 224 -40 217 -80 b 81 -280 190 -181 145 -244 b 24 -301 65 -290 34 -301 b 23 -335 24 -301 23 -303 l 23 -340 b 17 -381 23 -374 23 -374 b -1 -391 13 -388 5 -391 b -21 -381 -9 -391 -17 -388 b -27 -340 -27 -374 -27 -374 l -27 -335 b -28 -301 -27 -303 -27 -301 b -85 -280 -38 -301 -69 -290 b -217 -95 -149 -244 -194 -181 b -228 -29 -221 -80 -228 -40 b -259 -27 -228 -29 -238 -27 b -300 -23 -294 -27 -294 -27 b -311 -2 -307 -19 -311 -11 b -294 23 -311 8 -304 19 b -259 24 -291 23 -284 24 b -228 24 -239 24 -228 24 b -217 91 -228 36 -221 76 b -85 276 -194 177 -149 240 b -28 298 -69 285 -38 298 b -27 333 -27 298 -27 299 b -27 371 -27 362 -27 369 b -9 388 -24 378 -17 385 m -27 136 b -28 247 -27 197 -28 247 b -61 216 -31 247 -53 226 b -123 33 -95 172 -121 98 l -125 24 l -76 24 l -27 24 l -27 136 m 29 242 b 24 247 27 245 24 247 b 23 136 24 247 23 197 l 23 24 l 72 24 l 121 24 l 119 33 b 29 242 115 116 77 206 m -27 -140 l -27 -27 l -76 -27 l -125 -27 l -123 -36 b -61 -220 -121 -102 -95 -176 b -28 -251 -53 -230 -31 -251 b -27 -140 -28 -251 -27 -201 m 119 -36 l 121 -27 l 72 -27 l 23 -27 l 23 -140 b 24 -251 23 -201 24 -251 b 57 -220 27 -251 49 -230 b 119 -36 91 -176 117 -102 "},gClef:{x_min:-1.359375,x_max:847.96875,ha:865,o:"m 488 1499 b 495 1500 490 1500 492 1500 b 541 1465 507 1500 521 1490 b 679 1078 622 1372 679 1210 b 677 1050 679 1068 677 1060 b 477 642 668 893 604 764 l 443 609 l 431 596 l 431 592 l 438 562 l 449 508 l 460 458 b 481 355 475 390 481 355 b 481 355 481 355 481 355 b 490 356 481 355 485 355 b 528 358 495 356 511 358 b 558 356 540 358 552 356 b 839 95 699 338 808 237 b 847 22 845 72 847 47 b 631 -303 847 -113 766 -242 b 620 -309 623 -308 620 -309 l 620 -310 b 631 -359 620 -310 626 -333 l 646 -435 l 660 -496 b 672 -588 668 -535 672 -563 b 664 -653 672 -610 669 -630 b 383 -875 630 -792 509 -875 b 201 -810 321 -875 257 -855 b 129 -680 151 -768 129 -730 b 274 -530 129 -592 200 -530 b 351 -553 300 -530 326 -538 b 412 -669 393 -582 412 -626 b 287 -805 412 -735 366 -800 l 279 -805 l 285 -809 b 383 -830 318 -823 351 -830 b 586 -718 464 -830 540 -789 b 626 -584 612 -678 626 -631 b 619 -528 626 -566 623 -548 b 612 -495 619 -526 616 -510 b 577 -324 590 -387 577 -324 b 577 -324 577 -324 577 -324 b 568 -326 575 -324 571 -324 b 528 -334 558 -328 537 -333 b 465 -338 506 -337 485 -338 b 24 -11 269 -338 87 -206 b -1 145 8 41 -1 93 b 96 442 -1 249 32 351 b 322 714 166 541 236 626 l 352 745 l 345 782 l 332 843 l 315 921 b 303 984 310 950 304 978 b 295 1082 298 1017 295 1049 b 413 1426 295 1208 336 1329 b 488 1499 436 1456 477 1496 m 549 1301 b 541 1301 547 1301 544 1301 b 411 1207 500 1301 447 1263 b 355 1004 374 1152 355 1079 b 359 942 355 984 356 963 b 371 881 362 927 363 917 l 385 818 b 392 782 389 799 392 784 l 392 782 b 434 828 393 782 424 816 b 607 1165 534 941 594 1060 b 608 1193 608 1175 608 1183 b 597 1270 608 1224 604 1254 b 549 1301 589 1286 571 1299 m 398 528 b 393 555 396 542 393 553 b 392 555 393 555 393 555 b 317 470 390 555 347 505 b 190 298 266 408 212 334 b 127 70 148 227 127 148 b 155 -77 127 19 137 -30 b 468 -303 209 -216 333 -303 b 519 -299 484 -303 502 -302 b 568 -284 541 -295 568 -287 l 568 -284 b 563 -263 568 -284 566 -274 l 534 -120 l 511 -13 l 496 61 l 480 133 b 469 187 472 176 469 187 b 468 188 469 187 469 188 b 416 162 462 188 430 172 b 337 13 364 126 337 69 b 413 -124 337 -40 363 -93 b 428 -144 424 -131 428 -137 b 428 -149 428 -145 428 -148 b 409 -166 426 -161 419 -166 b 394 -162 405 -166 400 -165 b 240 77 302 -122 240 -27 l 240 77 b 430 342 240 197 315 301 l 436 344 l 426 394 l 398 528 m 548 194 b 526 195 540 195 532 195 b 519 195 524 195 521 195 l 514 195 l 518 177 l 539 79 l 552 15 l 566 -48 l 594 -187 l 605 -240 b 612 -266 609 -254 611 -266 b 612 -266 612 -266 612 -266 b 641 -248 613 -266 630 -256 b 744 -98 692 -212 730 -156 b 751 -40 749 -79 751 -59 b 548 194 751 76 665 181 "},cClef:{x_min:0,x_max:873.828125,ha:892,o:"m 0 0 l 0 703 l 81 703 l 164 703 l 164 0 l 164 -705 l 81 -705 l 0 -705 l 0 0 m 225 0 l 225 703 l 246 703 l 268 703 l 268 366 l 268 30 l 274 36 b 314 79 284 44 302 63 b 413 302 357 137 392 213 b 432 327 419 324 421 327 b 449 306 443 327 447 322 b 611 115 457 195 529 115 b 651 122 624 115 638 117 b 728 316 705 140 724 188 b 729 388 728 342 729 366 b 671 635 729 533 711 602 b 581 662 649 652 616 662 b 477 637 545 662 510 653 l 475 635 l 477 634 b 503 627 488 632 495 631 b 545 556 532 612 545 584 b 491 480 545 524 526 491 b 465 474 481 476 473 474 b 379 563 417 474 379 516 b 389 602 379 576 382 588 b 541 691 409 641 479 681 b 582 694 555 692 568 694 b 865 462 714 694 834 598 b 873 392 871 440 873 416 b 865 317 873 367 871 341 b 639 84 839 194 748 101 b 612 83 630 83 620 83 b 511 116 577 83 543 94 b 504 120 509 119 506 120 b 504 120 504 120 504 120 b 469 59 504 120 488 93 l 432 -1 l 469 -61 b 504 -122 488 -94 504 -122 b 504 -122 504 -122 504 -122 b 511 -117 506 -122 509 -120 b 612 -84 543 -95 577 -84 b 665 -91 630 -84 647 -87 b 869 -338 771 -122 850 -216 b 873 -392 872 -356 873 -374 b 798 -595 873 -469 847 -539 b 581 -695 741 -662 660 -695 b 406 -626 517 -695 454 -671 b 381 -563 389 -607 381 -585 b 465 -477 381 -519 413 -477 b 545 -559 514 -477 545 -519 b 503 -628 545 -587 532 -613 b 477 -635 495 -632 488 -634 l 475 -637 l 477 -638 b 581 -663 510 -655 545 -663 b 671 -637 616 -663 649 -653 b 729 -391 711 -603 729 -534 b 728 -317 729 -367 728 -344 b 623 -117 722 -173 698 -124 b 611 -116 619 -116 615 -116 b 449 -308 528 -116 457 -198 b 432 -328 447 -323 443 -328 b 413 -303 421 -328 419 -326 b 314 -80 392 -215 357 -138 b 274 -37 302 -65 284 -45 l 268 -31 l 268 -367 l 268 -705 l 246 -705 l 225 -705 l 225 0 "},fClef:{x_min:-1.359375,x_max:899.703125,ha:918,o:"m 307 349 b 332 351 315 351 323 351 b 443 340 367 351 408 347 b 741 47 607 306 720 195 b 744 0 743 31 744 16 b 660 -303 744 -90 713 -206 b 28 -755 534 -531 304 -695 b 14 -756 23 -755 19 -756 b -1 -741 4 -756 -1 -750 b 21 -720 -1 -731 1 -728 b 567 -56 337 -601 548 -344 b 568 -11 568 -41 568 -24 b 442 285 568 129 525 233 b 325 319 406 308 367 319 b 93 177 232 319 137 266 b 84 154 91 170 84 155 b 84 154 84 154 84 154 b 88 156 84 154 85 155 b 159 177 110 170 134 177 b 257 134 194 177 231 162 b 294 41 281 108 294 73 b 171 -97 294 -24 246 -90 b 156 -98 166 -97 161 -98 b 6 74 73 -98 6 -22 b 6 80 6 76 6 79 b 307 349 10 223 141 340 m 839 215 b 845 216 841 216 842 216 b 862 213 852 216 860 215 b 899 163 887 206 899 184 b 872 117 899 145 890 127 b 847 111 865 112 856 111 b 808 130 833 111 818 117 b 796 162 800 140 796 151 b 839 215 796 187 812 212 m 839 -112 b 845 -112 841 -112 842 -112 b 862 -115 852 -112 860 -113 b 899 -165 887 -122 899 -144 b 872 -210 899 -183 890 -201 b 847 -217 865 -215 856 -217 b 808 -198 833 -217 818 -210 b 796 -165 800 -188 796 -177 b 839 -112 796 -140 812 -116 "},unpitchedPercussionClef1:{x_min:0,x_max:464.140625,ha:474,o:"m 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 "},"6stringTabClef":{x_min:-1.359375,x_max:680.5625,ha:694,o:"m 597 1042 b 604 1042 600 1042 602 1042 b 642 1002 627 1042 642 1022 b 619 966 642 988 635 974 b 439 927 574 942 503 927 l 426 927 l 426 921 b 430 838 428 893 430 866 b 345 480 430 696 398 560 b 179 391 307 423 249 391 b 156 392 171 391 164 392 b 138 394 149 394 142 394 b 103 434 115 396 103 416 b 129 471 103 451 111 466 b 141 474 133 473 137 474 b 172 459 153 474 164 469 b 181 455 175 456 176 455 b 187 456 182 455 185 455 b 253 520 212 460 234 483 b 315 836 294 605 315 714 b 311 928 315 867 314 898 b 302 945 310 943 311 942 b 245 953 283 950 262 953 b 130 891 193 953 149 931 b 84 860 119 870 102 860 b 36 905 61 860 39 877 b 36 910 36 907 36 909 b 80 970 36 931 50 949 b 249 1017 125 1000 187 1017 b 322 1009 273 1017 299 1014 l 341 1003 b 436 991 372 995 406 991 b 577 1031 495 991 545 1004 b 597 1042 583 1038 590 1041 m 416 360 b 424 360 419 360 421 360 b 481 309 454 360 479 338 b 503 145 484 280 495 199 b 585 -185 525 16 555 -106 b 630 -245 596 -213 613 -237 l 634 -247 l 638 -245 b 647 -244 641 -245 645 -244 b 680 -278 666 -244 680 -262 b 664 -308 680 -290 675 -301 b 638 -312 658 -310 650 -312 b 613 -309 631 -312 623 -310 b 477 -201 555 -303 502 -260 b 417 -2 460 -159 434 -72 b 416 5 417 1 416 5 b 416 5 416 5 416 5 b 411 -5 415 5 413 0 b 359 -97 397 -33 377 -70 b 353 -106 355 -102 353 -105 b 359 -112 353 -108 355 -109 b 409 -130 375 -123 390 -129 b 426 -134 420 -130 421 -131 b 431 -147 428 -137 431 -141 b 420 -162 431 -152 427 -159 b 382 -169 409 -166 396 -169 b 323 -155 363 -169 341 -165 l 317 -152 l 314 -155 b 62 -303 240 -240 148 -295 b 36 -305 55 -305 44 -305 b 23 -303 29 -305 24 -305 b -1 -273 6 -299 -1 -287 b 31 -240 -1 -256 10 -240 b 36 -240 32 -240 34 -240 b 42 -241 38 -241 39 -241 b 134 -204 63 -241 99 -226 b 367 288 265 -115 357 81 b 375 330 368 313 370 320 b 416 360 383 347 400 358 m 360 -359 b 379 -359 363 -359 371 -359 b 424 -360 396 -359 416 -359 b 646 -502 536 -373 624 -430 b 649 -527 649 -510 649 -519 b 530 -673 649 -578 604 -635 l 521 -677 l 529 -681 b 653 -811 592 -714 637 -762 b 660 -853 658 -827 660 -839 b 645 -911 660 -873 656 -892 b 426 -1021 608 -981 519 -1021 b 283 -989 377 -1021 328 -1011 b 235 -949 249 -972 239 -964 b 234 -936 234 -946 234 -941 b 234 -928 234 -934 234 -931 l 235 -925 l 234 -927 l 225 -934 b 87 -982 186 -966 138 -982 b 80 -982 85 -982 83 -982 b 55 -981 70 -981 58 -981 b 17 -943 32 -981 17 -964 b 54 -904 17 -921 35 -904 b 78 -914 62 -904 72 -909 l 83 -918 l 88 -918 b 190 -831 122 -918 166 -881 b 269 -506 242 -727 269 -612 b 268 -462 269 -492 269 -477 b 266 -449 266 -458 266 -452 b 265 -444 266 -445 266 -444 b 257 -446 264 -444 261 -445 b 132 -545 196 -470 152 -505 b 88 -573 122 -563 104 -573 b 39 -523 63 -573 39 -553 b 63 -476 39 -505 44 -494 b 360 -359 136 -408 235 -369 m 419 -424 b 393 -423 411 -423 406 -423 l 375 -423 l 377 -426 b 379 -439 377 -427 378 -434 b 383 -510 382 -463 383 -487 b 314 -811 383 -609 360 -710 b 266 -893 296 -850 285 -870 b 264 -898 265 -896 264 -898 l 264 -898 b 264 -898 264 -898 264 -898 b 268 -898 264 -898 266 -898 b 273 -898 270 -898 272 -898 b 300 -909 283 -898 291 -900 b 426 -957 340 -941 385 -957 b 476 -949 443 -957 460 -954 b 547 -853 522 -931 547 -893 b 485 -745 547 -816 526 -775 b 397 -707 460 -727 432 -714 b 366 -675 375 -703 366 -692 b 396 -642 366 -657 377 -645 b 530 -557 455 -637 511 -601 b 536 -527 534 -548 536 -537 b 419 -424 536 -480 490 -437 "},timeSig0:{x_min:0,x_max:514.5,ha:525,o:"m 236 648 b 246 648 238 648 242 648 b 288 646 261 648 283 648 b 472 513 364 634 428 587 b 514 347 502 464 514 413 b 462 163 514 272 499 217 b 257 44 409 83 333 44 b 50 163 181 44 103 83 b 0 347 14 217 0 272 b 40 513 0 413 12 464 b 236 648 87 591 155 638 m 277 614 b 253 616 273 616 261 616 b 242 616 247 616 243 616 b 170 499 193 609 181 589 b 159 348 163 446 159 398 b 166 222 159 308 161 266 b 201 91 174 138 183 106 b 257 76 215 81 235 76 b 311 91 277 76 299 81 b 347 222 330 106 338 138 b 353 348 352 266 353 308 b 344 499 353 398 351 446 b 277 614 333 587 322 606 m 257 -1 l 258 -1 l 255 -1 l 257 -1 m 257 673 l 258 673 l 255 673 l 257 673 "},timeSig1:{x_min:-1.359375,x_max:344.359375,ha:351,o:"m 126 637 l 129 638 l 198 638 l 266 638 l 269 635 b 274 631 272 634 273 632 l 277 627 l 277 395 b 279 156 277 230 277 161 b 329 88 281 123 295 106 b 344 69 341 81 344 79 b 337 55 344 62 343 59 l 333 54 l 197 54 l 61 54 l 58 55 b 50 69 53 59 50 62 b 65 88 50 79 53 81 b 80 97 72 91 74 93 b 117 156 103 113 112 129 b 117 345 117 161 117 222 l 117 528 l 100 503 l 38 406 b 14 383 24 384 23 383 b -1 398 5 383 -1 390 b 4 415 -1 403 1 409 b 16 437 5 416 10 426 l 72 539 l 100 596 b 121 632 119 631 119 631 b 126 637 122 634 125 635 m 171 -1 l 172 -1 l 170 -1 l 171 -1 m 171 673 l 172 673 l 170 673 l 171 673 "},timeSig2:{x_min:-1.359375,x_max:458.6875,ha:468,o:"m 197 648 b 216 648 201 648 208 648 b 258 646 232 648 253 648 b 419 546 333 637 393 599 b 432 489 428 528 432 509 b 356 342 432 440 405 384 b 235 278 322 313 288 295 b 69 170 166 256 107 217 b 69 169 69 170 69 169 b 69 169 69 169 69 169 b 74 173 69 169 72 170 b 209 222 112 204 163 222 b 310 195 247 222 274 215 b 371 179 332 184 352 179 b 396 181 379 179 387 179 b 428 202 409 184 423 194 b 442 212 431 209 436 212 b 458 197 450 212 458 206 b 441 148 458 190 449 165 b 299 44 409 84 353 44 b 288 45 295 44 292 44 b 250 61 274 45 268 49 b 122 99 212 86 164 99 b 73 91 104 99 88 97 b 28 63 53 84 34 72 b 14 54 25 56 20 54 b 1 62 9 54 4 56 l -1 65 l -1 79 b 0 99 -1 91 0 95 b 2 113 1 102 2 108 b 164 309 20 197 81 272 b 285 470 232 341 277 398 b 287 487 287 476 287 481 b 171 595 287 551 239 595 b 155 595 166 595 160 595 b 142 592 145 594 142 594 b 145 589 142 592 142 591 b 179 527 168 576 179 551 b 132 455 179 496 163 467 b 104 451 122 452 112 451 b 27 530 62 451 27 487 b 29 555 27 538 27 546 b 197 648 44 601 115 639 m 228 -1 l 230 -1 l 227 -1 l 228 -1 m 228 673 l 230 673 l 227 673 l 228 673 "},timeSig3:{x_min:-1.359375,x_max:409.6875,ha:418,o:"m 174 648 b 191 648 176 648 183 648 b 225 648 204 648 220 648 b 402 523 317 638 389 588 b 404 503 404 517 404 510 b 402 484 404 495 404 488 b 264 373 389 437 334 394 b 257 370 259 371 257 371 b 257 370 257 370 257 370 b 264 369 258 370 261 369 b 409 202 359 334 409 267 b 318 72 409 152 381 104 b 200 43 281 52 240 43 b 23 113 134 43 69 68 b 0 169 6 129 0 149 b 77 249 0 210 29 249 l 77 249 b 152 174 125 249 152 212 b 103 102 152 145 137 116 b 103 102 103 102 103 102 b 147 94 103 101 132 95 b 153 94 149 94 151 94 b 265 206 219 94 265 141 b 264 226 265 213 265 219 b 147 355 253 299 204 353 b 126 371 133 356 126 362 b 147 388 126 383 132 388 b 254 474 196 391 238 424 b 259 502 258 484 259 494 b 182 592 259 544 228 582 b 156 595 175 595 166 595 b 115 592 142 595 129 594 l 111 591 l 115 588 b 152 524 141 574 152 549 b 92 449 152 491 130 458 b 76 448 87 448 81 448 b -1 530 32 448 -1 488 b 20 581 -1 548 5 566 b 174 648 55 619 108 641 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 "},timeSig4:{x_min:0,x_max:468.21875,ha:478,o:"m 174 637 b 232 638 175 638 189 638 b 277 638 245 638 259 638 l 378 638 l 381 635 b 389 623 386 632 389 627 b 382 609 389 617 386 613 b 366 589 381 606 372 598 l 313 528 l 245 451 l 209 410 l 155 348 l 84 267 b 59 240 72 252 59 240 b 59 240 59 240 59 240 b 151 238 59 238 68 238 l 242 238 l 242 303 b 243 371 242 369 242 370 b 289 426 245 374 254 385 l 303 441 l 317 456 l 338 483 l 360 506 l 371 520 b 386 527 375 526 381 527 b 400 519 392 527 397 524 b 401 440 401 516 401 514 b 401 377 401 423 401 402 l 401 238 l 426 238 b 453 237 449 238 450 238 b 465 217 461 234 465 226 b 460 202 465 212 464 206 b 426 197 454 197 453 197 l 401 197 l 401 180 b 451 88 402 129 412 109 b 468 69 465 81 468 79 b 461 55 468 62 466 59 l 458 54 l 321 54 l 185 54 l 182 55 b 175 69 176 59 175 62 b 191 88 175 79 176 81 b 240 180 230 109 240 129 l 240 197 l 125 197 b 73 195 104 195 87 195 b 8 197 10 195 9 197 b 0 212 2 199 0 205 b 0 212 0 212 0 212 b 20 242 0 219 0 219 b 163 610 104 344 163 492 b 174 637 163 628 166 634 m 234 -1 l 235 -1 l 232 -1 l 234 -1 m 234 673 l 235 673 l 232 673 l 234 673 "},timeSig5:{x_min:0,x_max:409.6875,ha:418,o:"m 47 637 b 53 638 49 638 50 638 b 69 634 55 638 61 637 b 210 610 114 619 161 610 b 363 634 259 610 311 619 b 382 638 372 637 378 638 b 392 634 386 638 389 637 b 397 623 396 630 397 627 b 393 610 397 620 396 616 b 298 505 368 552 338 520 b 212 494 277 498 246 494 b 65 517 163 494 106 502 b 61 517 62 517 61 517 b 61 517 61 517 61 517 b 51 408 61 517 51 412 b 51 408 51 408 51 408 b 51 408 51 408 51 408 b 61 412 53 408 55 409 b 125 434 80 421 103 430 b 185 441 145 440 166 441 b 409 244 310 441 409 353 b 401 191 409 227 406 209 b 197 43 375 105 287 43 b 159 47 183 43 171 44 b 23 123 112 56 61 86 b 0 180 6 140 0 159 b 76 260 0 220 31 260 b 92 259 81 260 87 259 b 152 183 132 251 152 216 b 100 112 152 152 134 122 b 95 111 98 112 95 111 b 95 111 95 111 95 111 b 129 98 95 109 119 101 b 148 97 136 97 141 97 b 264 235 206 97 261 158 b 265 248 265 240 265 244 b 210 398 265 312 243 373 b 179 408 201 406 194 408 b 174 408 178 408 176 408 b 53 369 130 408 88 394 b 34 359 39 359 38 359 b 17 374 24 359 17 365 b 39 628 17 384 38 625 b 47 637 40 631 43 635 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 "},timeSig6:{x_min:0,x_max:475.03125,ha:485,o:"m 255 648 b 274 648 259 648 266 648 b 314 646 288 648 307 648 b 450 555 374 637 438 594 b 454 530 453 546 454 538 b 375 451 454 485 416 451 b 328 467 359 451 343 455 b 300 526 310 483 300 503 b 352 598 300 557 319 589 b 356 599 355 598 356 599 b 352 602 356 599 355 601 b 288 616 330 612 308 616 b 210 584 257 616 230 605 b 164 433 189 559 174 508 b 160 374 163 415 160 381 b 160 374 160 374 160 374 b 160 374 160 374 160 374 b 168 377 160 374 164 376 b 258 395 200 390 228 395 b 366 367 294 395 328 387 b 475 223 436 333 475 283 b 472 197 475 215 473 206 b 349 65 462 141 419 95 b 259 43 317 51 288 43 b 167 69 230 43 200 52 b 4 290 80 113 20 195 b 0 349 1 309 0 328 b 20 467 0 391 6 433 b 255 648 58 563 155 637 m 269 363 b 257 363 265 363 261 363 b 210 345 236 363 220 356 b 186 226 196 324 186 272 b 187 198 186 216 186 206 b 213 95 191 151 202 112 b 257 76 221 83 238 76 b 270 77 261 76 266 76 b 321 156 299 81 310 99 b 329 229 326 183 329 206 b 321 301 329 252 326 274 b 269 363 311 342 298 359 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 "},timeSig7:{x_min:0,x_max:442.359375,ha:451,o:"m 147 648 b 166 649 153 649 160 649 b 313 598 217 649 273 630 b 340 587 323 588 328 587 l 341 587 b 412 628 367 587 390 601 b 427 638 416 635 421 638 b 439 632 431 638 435 637 b 442 623 441 630 442 628 b 430 569 442 616 439 603 b 352 369 408 492 377 410 b 300 259 325 324 313 298 b 273 84 283 205 273 140 b 265 55 273 65 272 59 l 261 54 l 181 54 l 99 54 l 96 55 b 91 61 95 56 92 59 l 89 63 l 89 77 b 147 263 89 133 111 202 b 261 401 176 313 212 355 b 378 541 315 449 349 489 l 382 548 l 375 544 b 240 495 333 512 285 495 b 129 535 198 495 160 509 b 84 560 108 552 95 560 b 76 559 81 560 78 560 b 31 487 59 555 43 530 b 14 470 27 473 24 470 b 1 477 8 470 4 471 l 0 480 l 0 553 l 0 627 l 1 630 b 16 638 4 635 9 638 b 23 635 17 638 20 637 b 49 626 36 626 39 626 b 96 638 59 626 80 630 b 104 639 99 638 102 639 b 117 644 107 641 112 642 b 147 648 125 645 137 648 m 220 -1 l 221 -1 l 219 -1 l 220 -1 m 220 673 l 221 673 l 219 673 l 220 673 "},timeSig8:{x_min:0,x_max:488.640625,ha:499,o:"m 217 648 b 245 649 225 648 235 649 b 453 516 343 649 430 595 b 458 478 455 503 458 491 b 412 370 458 440 441 398 b 411 369 412 369 411 369 b 415 365 411 367 412 367 b 488 231 462 331 488 281 b 472 165 488 208 483 186 b 243 43 434 86 338 43 b 63 104 178 43 112 62 b 0 233 20 140 0 186 b 73 365 0 283 24 331 l 77 369 l 72 374 b 29 476 42 406 29 441 b 217 648 29 557 103 635 m 258 605 b 242 606 253 605 247 606 b 157 552 198 606 157 580 b 160 541 157 548 159 544 b 319 413 176 503 242 452 l 337 403 l 338 406 b 359 476 352 428 359 452 b 258 605 359 537 318 595 m 138 326 b 130 330 134 328 130 330 b 130 330 130 330 130 330 b 107 305 127 330 112 313 b 84 231 91 281 84 256 b 243 86 84 156 151 86 b 249 87 245 86 246 87 b 347 156 303 88 347 120 b 344 172 347 162 345 167 b 156 319 325 227 257 281 b 138 326 151 322 144 324 m 243 -1 l 245 -1 l 242 -1 l 243 -1 m 243 673 l 245 673 l 242 673 l 243 673 "},timeSig9:{x_min:0,x_max:475.03125,ha:485,o:"m 191 646 b 212 649 198 648 205 649 b 255 644 227 649 243 646 b 458 448 348 616 428 539 b 475 342 469 415 475 378 b 460 244 475 308 469 274 b 193 44 421 124 303 44 b 91 69 157 44 122 51 b 19 161 43 97 19 126 b 21 181 19 167 20 174 b 98 241 32 220 65 241 b 170 186 129 241 160 223 b 172 166 171 179 172 173 b 121 94 172 134 152 102 b 117 93 118 94 117 93 b 121 90 117 93 118 91 b 185 76 142 80 164 76 b 270 119 220 76 251 91 b 308 259 287 145 300 194 b 313 317 310 277 313 310 b 313 317 313 317 313 317 b 313 317 313 317 313 317 b 304 315 313 317 308 316 b 216 295 273 302 245 295 b 145 308 193 295 170 299 b 19 398 88 327 42 360 b 0 469 5 420 0 444 b 24 551 0 496 8 526 b 191 646 54 596 125 637 m 227 614 b 215 616 224 616 220 616 b 202 614 210 616 206 616 b 152 535 174 610 163 592 b 144 463 147 509 144 485 b 152 391 144 440 147 417 b 216 328 163 344 179 328 b 280 391 253 328 269 344 b 288 463 285 417 288 440 b 280 535 288 485 285 509 b 227 614 269 594 258 610 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 "},timeSigCommon:{x_min:-1.359375,x_max:556.6875,ha:568,o:"m 294 322 b 318 323 299 322 308 323 b 360 320 334 323 352 322 b 526 217 430 310 490 273 b 543 166 537 202 543 184 b 447 70 543 117 503 70 b 445 70 447 70 446 70 b 359 159 394 72 359 113 b 368 201 359 173 362 187 b 442 245 382 229 412 245 b 455 244 446 245 451 245 b 460 244 458 244 460 244 b 460 244 460 244 460 244 b 454 248 460 244 458 245 b 325 291 417 276 372 291 b 285 287 313 291 299 290 b 144 -2 183 269 144 190 b 281 -290 144 -208 179 -280 b 304 -291 289 -291 298 -291 b 524 -105 412 -291 506 -212 b 541 -84 526 -88 530 -84 b 556 -101 551 -84 556 -90 b 549 -138 556 -111 553 -122 b 334 -322 521 -237 435 -310 b 302 -324 323 -323 313 -324 b 13 -101 172 -324 54 -234 b -1 -1 4 -68 -1 -34 b 294 322 -1 161 121 303 "},timeSigCutCommon:{x_min:0,x_max:556.6875,ha:568,o:"m 289 545 b 298 546 292 545 295 546 b 318 533 306 546 315 541 b 319 428 319 530 319 528 l 319 327 l 334 327 b 526 223 412 326 485 285 b 543 172 537 206 543 190 b 447 76 543 122 503 76 b 445 76 446 76 446 76 b 359 165 394 77 359 119 b 368 205 359 179 362 192 b 441 251 382 233 412 251 b 455 249 446 251 451 251 b 460 248 458 249 460 248 b 460 248 460 248 460 248 b 454 254 460 249 458 251 b 334 295 419 280 378 294 l 319 295 l 319 4 l 319 -287 l 321 -285 b 328 -285 322 -285 325 -285 b 524 -99 424 -277 507 -198 b 541 -79 526 -84 530 -79 b 556 -97 551 -79 556 -84 b 548 -133 556 -105 553 -117 b 334 -317 521 -233 434 -306 b 322 -319 329 -317 323 -317 l 319 -319 l 319 -424 b 319 -471 319 -444 319 -459 b 313 -541 319 -544 318 -535 b 298 -548 308 -545 303 -548 b 279 -534 289 -548 281 -542 b 277 -424 277 -531 277 -530 l 277 -317 l 273 -317 b 13 -95 153 -305 51 -217 b 0 2 4 -62 0 -29 b 182 295 0 126 66 238 b 274 324 210 309 249 320 l 277 324 l 277 427 b 279 533 277 528 277 530 b 289 545 281 538 285 542 m 277 2 b 277 291 277 161 277 291 b 268 288 277 291 273 290 b 144 1 179 265 144 184 b 276 -284 144 -199 175 -267 l 277 -285 l 277 2 "},timeSigPlus:{x_min:0,x_max:319.859375,ha:326,o:"m 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 "},timeSigPlusSmall:{x_min:0,x_max:319.859375,ha:326,o:"m 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 "},timeSigMinus:{x_min:0,x_max:318.5,ha:325,o:"m 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 "},timeSigParensRight:{x_min:25.859375,x_max:164.6875,ha:168,o:"m 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 "},timeSigParensRightSmall:{x_min:25.859375,x_max:164.6875,ha:168,o:"m 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 "},timeSigParensLeft:{x_min:-166.0625,x_max:-25.859375,ha:0,o:"m -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 "},timeSigParensLeftSmall:{x_min:-166.0625,x_max:-25.859375,ha:0,o:"m -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 "},noteheadDoubleWhole:{x_min:0,x_max:902.421875,ha:921,o:"m 17 240 b 24 241 19 241 21 241 b 32 240 28 241 31 241 b 46 229 38 238 43 234 b 50 88 50 223 50 237 b 50 -1 50 63 50 34 b 50 -90 50 -36 50 -65 b 46 -231 50 -238 50 -224 b 25 -242 42 -238 34 -242 b 0 -224 14 -242 4 -235 b 0 2 0 -222 0 -108 b 0 223 0 112 0 220 b 17 240 2 230 9 237 m 110 240 b 118 241 111 241 114 241 b 126 240 121 241 123 241 b 142 223 133 237 140 230 b 144 123 144 220 144 205 b 144 29 144 45 144 29 b 144 29 144 29 144 29 b 393 183 166 106 264 167 b 450 186 412 184 431 186 b 756 29 600 186 732 120 b 756 29 756 29 756 29 b 758 123 758 29 758 45 b 760 227 758 226 758 223 b 784 241 766 237 774 241 b 804 229 792 241 800 237 b 809 88 808 223 809 237 l 809 -1 l 809 -90 b 804 -231 809 -238 808 -224 b 784 -242 800 -238 792 -242 b 762 -231 775 -242 766 -238 b 758 -124 756 -224 758 -231 b 756 -30 758 -47 758 -30 b 756 -30 756 -30 756 -30 b 509 -184 736 -108 637 -169 b 450 -187 488 -187 469 -187 b 144 -30 300 -187 168 -122 b 144 -30 144 -30 144 -30 b 144 -124 144 -30 144 -47 b 140 -231 144 -231 144 -224 b 118 -242 134 -238 126 -242 b 92 -224 107 -242 96 -235 b 92 2 92 -222 92 -108 b 92 223 92 112 92 220 b 110 240 95 230 102 237 m 432 161 b 413 162 426 162 420 162 b 313 41 351 162 313 109 b 347 -73 313 5 323 -34 b 487 -163 385 -133 439 -163 b 578 -97 526 -163 562 -142 b 588 -43 585 -80 588 -62 b 432 161 588 47 518 147 m 868 240 b 876 241 869 241 872 241 b 884 240 879 241 882 241 b 898 229 890 238 894 234 b 902 88 902 223 902 237 l 902 -1 l 902 -90 b 898 -231 902 -238 902 -224 b 876 -242 892 -238 884 -242 b 852 -224 865 -242 854 -235 b 850 2 850 -222 850 -108 b 852 223 850 112 850 220 b 868 240 853 230 860 237 "},noteheadWhole:{x_min:0,x_max:619.3125,ha:632,o:"m 274 184 b 307 186 285 186 296 186 b 616 22 465 186 597 116 b 619 -1 617 13 619 5 b 308 -187 619 -104 483 -187 b 0 -1 133 -187 0 -102 b 5 36 0 11 1 23 b 274 184 29 115 141 176 m 289 161 b 272 162 284 162 277 162 b 171 41 209 162 171 108 b 205 -73 171 5 182 -34 b 345 -163 243 -133 298 -163 b 436 -98 385 -163 420 -142 b 446 -43 443 -80 446 -62 b 289 161 446 47 377 147 "},noteheadHalf:{x_min:0,x_max:428.75,ha:438,o:"m 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 m 366 131 b 352 134 362 133 357 134 b 219 81 321 134 269 115 b 47 -111 126 23 50 -62 b 47 -112 47 -111 47 -112 b 77 -136 47 -129 58 -136 b 264 -45 118 -136 194 -101 b 382 109 336 12 382 76 b 366 131 382 120 377 129 "},noteheadBlack:{x_min:0,x_max:428.75,ha:438,o:"m 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 "},noteheadXWhole:{x_min:0,x_max:598.890625,ha:611,o:"m 62 181 b 77 183 66 183 72 183 b 91 181 83 183 88 183 b 202 131 100 180 106 177 l 299 87 l 394 131 b 517 183 499 181 502 183 b 519 183 517 183 518 183 b 598 104 567 183 598 144 b 577 49 598 84 592 65 b 518 15 567 38 563 37 b 484 0 499 6 484 0 b 518 -16 484 -1 499 -8 b 577 -51 563 -38 567 -40 b 598 -105 592 -66 598 -86 b 519 -184 598 -145 567 -184 b 517 -184 518 -184 517 -184 b 394 -133 502 -184 499 -183 l 299 -88 l 202 -133 b 81 -184 99 -183 95 -184 b 77 -184 80 -184 78 -184 b 0 -105 29 -184 0 -145 b 20 -51 0 -86 5 -66 b 80 -16 29 -40 34 -38 b 114 -1 98 -8 114 -1 b 80 15 114 0 98 6 b 20 49 34 37 29 38 b 0 104 6 65 0 84 b 62 181 0 140 23 174 m 88 134 b 74 136 85 134 80 136 b 68 134 72 136 69 136 b 46 104 54 130 46 117 b 55 81 46 95 49 88 b 149 34 59 76 53 80 b 224 -1 190 15 224 0 b 144 -38 224 -1 187 -18 b 54 -84 59 -79 58 -79 b 46 -105 49 -90 46 -98 b 76 -137 46 -122 58 -137 b 78 -137 77 -137 77 -137 b 194 -86 87 -137 76 -141 b 298 -36 250 -58 298 -36 b 298 -36 298 -36 298 -36 b 402 -84 299 -36 345 -58 b 518 -137 522 -141 510 -137 b 521 -137 519 -137 519 -137 b 551 -105 539 -137 551 -122 b 541 -83 551 -98 548 -90 b 447 -36 537 -77 544 -81 b 374 -1 406 -16 374 -1 b 447 34 374 0 406 15 b 541 81 544 80 537 76 b 551 104 548 88 551 97 b 521 136 551 120 539 136 b 518 136 519 136 519 136 b 517 136 518 136 517 136 l 517 136 b 402 83 511 136 511 136 b 298 34 345 56 299 34 b 298 34 298 34 298 34 b 194 84 298 34 250 56 b 88 134 137 111 89 133 "},noteheadXHalf:{x_min:0,x_max:406.96875,ha:415,o:"m 55 181 b 70 183 61 183 66 183 b 111 170 85 183 99 179 b 160 130 115 167 137 149 l 202 95 l 245 130 b 319 181 299 176 302 179 b 334 183 325 183 330 183 b 406 109 375 183 406 148 b 401 81 406 99 405 91 b 348 24 394 65 390 59 b 318 -1 332 11 318 0 b 348 -26 318 -1 332 -12 b 401 -83 390 -61 394 -66 b 406 -111 405 -93 406 -101 b 334 -184 406 -149 375 -184 b 319 -183 330 -184 325 -184 b 245 -131 302 -180 299 -177 l 202 -97 l 160 -131 b 85 -183 107 -177 103 -180 b 70 -184 80 -184 76 -184 b 0 -111 31 -184 0 -149 b 4 -83 0 -101 1 -93 b 58 -26 10 -66 16 -61 b 88 -1 74 -12 88 -1 b 58 24 88 0 74 11 b 10 69 23 54 17 59 b 0 109 2 81 0 95 b 55 181 0 142 21 173 m 83 133 b 72 136 78 136 76 136 b 57 131 66 136 61 134 b 46 109 49 126 46 117 b 50 93 46 104 47 98 b 107 45 51 91 77 70 b 160 0 137 20 160 0 b 107 -47 160 -1 137 -22 b 50 -94 77 -72 51 -93 b 46 -111 47 -99 46 -105 b 59 -134 46 -120 50 -130 b 72 -137 62 -136 68 -137 b 83 -136 76 -137 80 -136 b 144 -84 84 -134 107 -116 b 202 -36 176 -58 202 -36 b 261 -84 202 -36 230 -58 b 323 -136 299 -116 321 -134 b 334 -137 326 -136 330 -137 b 345 -134 338 -137 343 -136 b 360 -111 355 -130 360 -120 b 355 -94 360 -105 359 -99 b 299 -47 353 -93 329 -72 b 245 0 269 -22 245 -1 b 299 45 245 0 269 20 b 355 93 329 70 353 91 b 360 109 359 98 360 104 b 345 133 360 119 355 129 b 334 136 343 134 338 136 b 323 134 330 136 326 134 b 261 83 321 133 299 115 b 202 34 230 56 202 34 b 144 83 202 34 176 56 b 83 133 106 115 84 133 "},noteheadXBlack:{x_min:0,x_max:406.96875,ha:415,o:"m 21 183 b 28 183 24 183 25 183 b 42 181 34 183 39 183 b 127 108 47 179 47 179 b 202 41 168 72 202 41 b 279 108 204 41 238 72 b 357 177 321 145 356 176 b 375 183 363 181 370 183 b 406 151 392 183 406 169 b 404 137 406 147 405 141 b 322 62 401 131 398 129 b 251 0 284 27 251 0 b 322 -63 251 -1 284 -29 b 404 -138 398 -130 401 -133 b 406 -152 405 -142 406 -148 b 375 -184 406 -170 392 -184 b 357 -179 370 -184 363 -183 b 279 -109 356 -177 321 -147 b 202 -43 238 -73 204 -43 b 127 -109 202 -43 168 -73 b 49 -179 85 -147 50 -177 b 31 -184 43 -183 36 -184 b 0 -152 13 -184 0 -170 b 2 -138 0 -148 0 -142 b 83 -63 5 -133 8 -130 b 155 0 122 -29 155 -1 b 83 62 155 0 122 27 b 8 129 43 97 10 127 b 0 151 2 136 0 144 b 21 183 0 165 8 177 "},noteheadTriangleUpWhole:{x_min:0,x_max:630.203125,ha:643,o:"m 308 204 b 314 205 310 205 313 205 b 326 201 319 205 323 204 b 355 154 328 199 338 180 b 401 83 362 142 392 95 l 409 72 b 431 41 412 66 424 49 b 619 -174 498 -51 570 -134 b 630 -192 626 -180 630 -186 b 626 -202 630 -195 628 -199 b 616 -206 623 -205 620 -206 b 552 -188 608 -206 592 -202 b 310 -155 488 -169 392 -155 b 268 -156 295 -155 281 -155 b 77 -188 197 -161 126 -173 b 13 -206 35 -202 20 -206 b 9 -206 12 -206 10 -206 b 0 -191 2 -202 0 -197 b 8 -176 0 -186 2 -180 b 204 49 58 -136 138 -43 l 220 72 l 227 83 b 295 188 245 108 281 166 b 308 204 299 197 304 202 m 315 147 b 314 147 315 147 314 147 b 314 147 314 147 314 147 b 306 129 314 145 310 138 l 296 105 b 281 72 292 97 284 77 l 274 56 b 181 -123 247 -4 212 -72 l 174 -134 l 176 -133 b 314 -123 215 -127 272 -123 b 451 -133 356 -123 413 -127 l 454 -134 l 449 -123 b 353 56 417 -72 381 -4 l 347 72 b 332 105 344 77 336 97 l 322 129 b 315 147 318 138 315 145 "},noteheadTriangleUpHalf:{x_min:0,x_max:438.28125,ha:447,o:"m 212 205 b 219 205 213 205 216 205 b 239 183 228 205 231 204 b 421 -163 298 40 363 -83 b 438 -191 434 -180 438 -186 b 436 -197 438 -192 438 -195 b 424 -206 434 -204 431 -206 b 406 -201 420 -206 415 -205 b 216 -156 347 -172 281 -156 b 23 -205 148 -156 80 -173 b 14 -206 20 -206 17 -206 b 0 -191 6 -206 0 -201 b 6 -176 0 -187 1 -183 b 202 192 63 -104 142 45 b 212 205 205 199 208 202 m 264 48 l 249 81 l 243 94 l 242 91 b 89 -126 208 36 137 -66 b 81 -138 85 -133 81 -138 b 81 -138 81 -138 81 -138 b 81 -138 81 -138 81 -138 b 95 -133 81 -138 87 -136 b 280 -94 156 -108 221 -94 b 334 -98 299 -94 317 -95 b 343 -99 338 -99 343 -99 b 343 -99 343 -99 343 -99 b 338 -94 343 -99 341 -97 b 264 48 318 -58 287 1 "},noteheadTriangleUpBlack:{x_min:-1.359375,x_max:436.921875,ha:446,o:"m 213 205 b 217 205 215 205 216 205 b 234 194 224 205 234 199 b 236 187 234 194 235 190 l 245 167 l 261 129 l 270 106 b 355 -61 294 54 329 -13 b 420 -163 381 -105 402 -138 b 436 -188 435 -184 436 -184 b 436 -191 436 -190 436 -190 b 421 -206 436 -201 431 -206 l 421 -206 l 416 -206 l 405 -201 b 217 -158 347 -172 283 -158 b 31 -201 153 -158 88 -172 l 20 -206 l 14 -206 l 14 -206 b 0 -191 5 -206 0 -201 b -1 -188 0 -190 -1 -190 b 14 -163 -1 -186 0 -184 b 95 -34 36 -136 72 -77 b 166 106 119 8 148 68 l 175 129 l 183 148 l 200 188 b 213 205 205 199 208 202 "},noteheadDiamondWhole:{x_min:0,x_max:432.828125,ha:442,o:"m 208 184 b 213 187 209 186 212 187 b 224 176 217 187 221 183 b 245 147 225 172 235 159 b 419 -1 288 90 347 38 b 431 -8 424 -4 431 -8 b 432 -12 432 -9 432 -11 b 430 -18 432 -13 432 -16 b 364 -61 424 -20 383 -47 b 225 -183 307 -102 250 -152 b 223 -187 224 -184 223 -187 b 220 -188 221 -188 220 -188 b 208 -176 216 -188 210 -184 b 187 -148 205 -173 197 -159 b 12 0 144 -90 84 -38 b 0 11 4 5 0 8 b 16 24 0 13 4 18 b 183 158 83 69 141 115 b 208 184 194 169 198 173 m 183 105 b 176 113 181 109 176 113 b 172 109 176 113 175 112 b 92 45 149 90 117 62 l 88 41 l 102 31 b 247 -105 160 -6 210 -55 l 254 -115 l 257 -112 l 269 -102 b 340 -45 287 -87 319 -61 l 344 -43 l 330 -33 b 183 105 272 6 221 54 "},noteheadDiamondHalf:{x_min:0,x_max:438.28125,ha:447,o:"m 212 190 b 219 191 213 191 216 191 b 236 176 225 191 228 190 b 419 18 277 105 341 49 b 436 5 431 13 434 11 b 438 -1 438 4 438 1 b 424 -16 438 -8 432 -13 b 356 -49 409 -20 379 -36 b 234 -180 306 -83 258 -133 b 219 -192 230 -188 224 -192 b 200 -176 213 -192 206 -187 b 9 -15 157 -102 89 -45 b 0 0 2 -12 0 -6 b 16 18 0 9 2 12 b 200 176 93 48 159 104 b 212 190 205 186 208 188 m 239 113 b 236 117 238 116 238 117 b 230 108 235 117 234 115 b 92 -15 196 58 140 8 b 88 -18 91 -16 88 -18 b 92 -20 88 -18 91 -19 b 198 -116 130 -43 166 -74 b 200 -117 200 -117 200 -117 b 201 -117 200 -117 201 -117 b 264 -43 212 -98 242 -62 b 345 15 288 -19 321 4 b 348 18 347 16 348 16 b 344 20 348 18 347 19 b 239 113 307 41 266 79 "},noteheadDiamondBlack:{x_min:0,x_max:432.828125,ha:442,o:"m 209 186 b 213 187 210 187 212 187 b 216 187 215 187 216 187 b 224 174 216 186 220 180 b 420 -1 269 105 338 43 b 432 -12 431 -8 432 -9 b 421 -23 432 -15 432 -16 b 228 -180 345 -70 264 -137 b 219 -188 221 -188 221 -188 l 219 -188 b 208 -177 215 -188 215 -188 b 10 1 163 -106 93 -44 b 0 11 0 6 0 8 b 10 22 0 13 0 15 b 202 179 87 69 167 136 b 209 186 206 183 209 186 "},augmentationDot:{x_min:0,x_max:133.390625,ha:136,o:"m 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 "},tremolo1:{x_min:-206.890625,x_max:428.75,ha:438,o:"m 389 -351 b 394 -351 390 -351 393 -351 b 428 -385 413 -351 428 -367 b 428 -394 428 -388 428 -391 b 394 -428 426 -406 421 -410 l 332 -473 l 269 -516 l 205 -560 l 141 -603 l 77 -648 l 13 -692 l -50 -737 l -114 -780 l -145 -802 b -171 -813 -157 -810 -163 -813 b -175 -813 -172 -813 -174 -813 b -206 -777 -194 -811 -206 -795 b -202 -760 -206 -771 -205 -766 b -87 -675 -197 -752 -206 -757 l -34 -639 l 83 -557 l 145 -514 l 209 -470 l 272 -427 b 389 -351 375 -356 381 -352 "},flag8thUp:{x_min:-24.5,x_max:317.140625,ha:324,o:"m -24 -161 l -24 -5 l -20 -5 b 0 -24 -9 -5 -2 -12 b 171 -315 21 -124 84 -233 b 317 -660 268 -406 317 -531 b 187 -1014 317 -782 274 -909 b 161 -1034 172 -1034 171 -1034 b 141 -1013 149 -1034 141 -1025 b 152 -991 141 -1004 142 -1002 b 266 -682 228 -899 266 -788 b 174 -430 266 -588 236 -498 b -23 -317 136 -388 66 -348 b -24 -161 -23 -316 -24 -285 "},flag8thDown:{x_min:-21.78125,x_max:367.5,ha:375,o:"m 230 1031 b 238 1032 232 1032 235 1032 b 259 1014 245 1032 251 1027 b 367 662 330 906 367 782 b 364 602 367 641 367 621 b 232 317 352 488 304 384 b 57 120 155 245 103 187 b -1 18 31 84 6 40 b -19 4 -4 11 -12 4 l -21 4 l -21 159 l -21 315 l -16 315 b 96 335 10 315 62 324 b 315 695 227 380 315 527 b 313 738 315 709 314 724 b 224 991 304 825 273 916 b 216 1013 219 999 216 1007 b 230 1031 216 1021 220 1028 "},flag16thUp:{x_min:-24.5,x_max:317.140625,ha:324,o:"m -24 -147 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 58 -123 6 -43 31 -86 b 196 -278 93 -173 134 -219 b 317 -570 274 -356 317 -460 b 294 -713 317 -617 308 -666 l 289 -724 l 294 -735 b 317 -873 308 -780 317 -827 b 235 -1132 317 -963 288 -1054 b 209 -1165 228 -1140 224 -1146 b 189 -1177 204 -1172 196 -1177 b 171 -1164 182 -1177 175 -1172 b 168 -1154 170 -1161 168 -1159 b 181 -1132 168 -1149 172 -1142 b 269 -891 238 -1064 269 -975 b 269 -881 269 -886 269 -884 b 262 -814 269 -857 265 -827 b 258 -800 261 -811 259 -806 b 142 -628 240 -731 198 -667 b -8 -589 112 -606 47 -589 b -20 -589 -13 -589 -19 -589 l -24 -589 l -24 -449 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 58 -424 6 -345 31 -388 b 194 -580 93 -476 136 -523 b 259 -660 221 -606 245 -635 b 261 -663 259 -662 261 -663 b 264 -656 262 -663 262 -660 b 269 -587 268 -632 269 -610 b 264 -521 269 -566 268 -544 b 262 -512 264 -517 262 -513 b 258 -498 261 -509 259 -503 b 142 -326 240 -428 198 -365 b -8 -287 112 -303 47 -288 b -20 -287 -13 -287 -19 -287 l -24 -287 l -24 -147 "},flag16thDown:{x_min:-21.78125,x_max:362.0625,ha:369,o:"m 302 1031 b 308 1032 304 1032 307 1032 b 330 1016 318 1032 325 1027 b 362 867 351 970 362 920 b 340 738 362 824 353 780 l 336 727 l 340 717 b 362 591 355 677 362 634 b 257 323 362 496 325 401 b 204 272 243 306 227 290 b 20 56 129 206 66 133 b -1 18 12 44 0 22 b -19 4 -4 9 -12 4 l -21 4 l -21 140 l -21 276 l -12 277 b 167 333 61 288 127 309 b 319 598 262 388 319 491 b 311 664 319 620 317 642 l 310 673 l 304 664 b 204 548 279 620 250 587 b 20 333 129 483 66 409 b -1 292 12 320 0 298 b -19 280 -4 285 -12 280 l -21 280 l -21 416 l -21 552 l -12 553 b 167 609 61 564 127 585 b 319 874 264 666 319 770 b 294 992 319 914 311 954 b 288 1011 288 1004 288 1007 b 302 1031 288 1021 294 1028 "},flag32ndUp:{x_min:-24.5,x_max:315.78125,ha:322,o:"m -24 -145 l -24 -5 l -20 -5 b 1 -26 -10 -5 -6 -9 b 175 -241 31 -86 96 -166 b 314 -548 259 -323 304 -420 b 315 -589 315 -555 315 -571 b 314 -630 315 -606 315 -623 b 298 -730 311 -664 306 -699 l 295 -742 l 296 -748 b 314 -850 304 -778 311 -813 b 315 -892 315 -857 315 -874 b 314 -932 315 -909 315 -925 b 298 -1032 311 -967 306 -1002 l 295 -1045 l 296 -1050 b 314 -1153 304 -1081 311 -1115 b 315 -1193 315 -1160 315 -1177 b 314 -1235 315 -1211 315 -1228 b 217 -1526 306 -1338 270 -1444 b 201 -1533 213 -1532 208 -1533 b 182 -1522 193 -1533 185 -1529 b 179 -1514 181 -1518 179 -1517 b 189 -1489 179 -1508 182 -1501 b 266 -1217 240 -1403 266 -1308 b 262 -1156 266 -1196 265 -1177 b 110 -907 247 -1043 190 -950 b 0 -889 87 -895 50 -889 l -1 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 1 -631 -10 -610 -6 -614 b 175 -846 31 -691 96 -771 b 259 -956 213 -884 236 -914 b 265 -966 262 -961 264 -966 b 265 -966 265 -966 265 -966 b 265 -953 265 -964 265 -959 b 266 -920 266 -943 266 -932 b 262 -853 266 -898 265 -873 b 110 -605 247 -741 190 -648 b 0 -587 87 -592 50 -587 l -1 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 1 -328 -10 -308 -6 -312 b 175 -544 31 -388 96 -469 b 259 -655 213 -581 236 -612 b 265 -663 262 -659 264 -663 b 265 -663 265 -663 265 -663 b 265 -650 265 -663 265 -657 b 266 -617 266 -641 266 -630 b 262 -551 266 -595 265 -570 b 110 -303 247 -438 190 -345 b 0 -284 87 -290 50 -284 l -1 -284 l -24 -284 l -24 -145 "},flag32ndDown:{x_min:-21.78125,x_max:366.140625,ha:374,o:"m 276 1378 b 284 1379 279 1379 281 1379 b 306 1360 292 1379 298 1374 b 352 1247 326 1326 343 1286 b 366 1139 362 1213 366 1175 b 347 1009 366 1093 359 1049 l 344 1002 l 347 992 b 352 971 348 986 351 977 b 366 863 362 936 366 899 b 347 732 366 818 359 773 l 344 725 l 347 716 b 352 695 348 710 351 700 b 366 588 362 659 366 623 b 223 262 366 464 314 345 b 189 233 212 252 212 252 b 35 76 126 183 73 129 b -1 16 20 56 2 27 b -19 4 -4 9 -12 4 l -21 4 l -21 137 l -21 270 l -17 270 b 186 344 59 281 134 308 b 319 606 270 399 319 499 b 317 650 319 620 319 635 l 315 659 l 314 655 b 223 537 288 607 258 570 b 189 509 212 528 212 528 b 35 352 126 459 73 405 b -1 292 20 333 2 303 b -19 280 -4 285 -12 280 l -21 280 l -21 413 l -21 546 l -17 546 b 186 620 59 557 134 584 b 319 882 270 675 319 775 b 317 925 319 896 319 911 l 315 935 l 314 931 b 223 813 288 884 258 846 b 189 785 212 805 212 805 b 35 628 126 735 73 681 b -1 569 20 609 2 580 b -19 556 -4 562 -12 556 l -21 556 l -21 689 l -21 823 l -17 823 b 202 907 68 835 152 867 b 319 1157 280 968 319 1061 b 270 1338 319 1218 303 1281 b 262 1358 264 1349 262 1353 b 262 1364 262 1360 262 1363 b 276 1378 265 1371 269 1376 "},flag64thUp:{x_min:-24.5,x_max:314.421875,ha:321,o:"m -24 -145 l -24 -5 l -20 -5 b 0 -23 -9 -5 -2 -12 b 27 -87 4 -38 14 -66 b 138 -220 53 -136 88 -177 b 235 -328 179 -255 208 -288 b 314 -592 287 -409 314 -501 b 292 -732 314 -639 307 -687 l 289 -742 l 294 -756 b 314 -896 307 -802 314 -849 b 292 -1035 314 -943 307 -991 l 289 -1045 l 294 -1057 b 314 -1197 307 -1104 314 -1152 b 292 -1338 314 -1246 307 -1292 l 289 -1347 l 294 -1360 b 314 -1500 307 -1407 314 -1454 b 273 -1689 314 -1565 300 -1628 b 250 -1712 265 -1710 261 -1712 b 228 -1691 236 -1712 228 -1704 l 228 -1685 l 234 -1675 b 270 -1507 258 -1621 270 -1564 b 98 -1193 270 -1381 209 -1261 b 40 -1174 76 -1179 58 -1174 b -10 -1189 24 -1174 8 -1178 b -20 -1192 -14 -1192 -16 -1192 l -24 -1192 l -24 -1052 l -24 -913 l -20 -913 b 0 -931 -9 -913 -2 -920 b 27 -995 4 -946 14 -974 b 138 -1128 53 -1043 88 -1085 b 257 -1275 190 -1172 228 -1220 b 262 -1283 259 -1279 262 -1283 l 262 -1283 b 269 -1249 264 -1282 268 -1260 b 270 -1206 270 -1233 270 -1220 b 98 -891 270 -1075 206 -957 b 40 -871 76 -877 58 -871 b -10 -886 24 -871 8 -875 b -20 -889 -14 -889 -16 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 0 -628 -9 -610 -2 -617 b 27 -692 4 -644 14 -671 b 138 -825 53 -741 88 -782 b 257 -973 190 -870 228 -917 b 262 -981 259 -977 262 -981 l 262 -981 b 269 -946 264 -979 268 -957 b 270 -903 270 -931 270 -917 b 98 -588 270 -774 206 -655 b 40 -569 76 -574 58 -569 b -10 -584 24 -569 8 -574 b -20 -587 -14 -587 -16 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 0 -326 -9 -308 -2 -315 b 27 -390 4 -341 14 -369 b 138 -523 53 -438 88 -480 b 257 -670 190 -567 228 -614 b 262 -678 259 -674 262 -678 b 262 -678 262 -678 262 -678 b 269 -644 264 -677 268 -656 b 270 -601 270 -628 270 -614 b 98 -285 270 -471 206 -352 b 40 -266 76 -273 58 -266 b -10 -281 24 -266 8 -272 b -20 -284 -14 -284 -16 -284 l -24 -284 l -24 -145 "},flag64thDown:{x_min:-21.78125,x_max:367.5,ha:375,o:"m 259 1553 b 265 1553 261 1553 264 1553 b 288 1540 272 1553 277 1550 b 367 1351 340 1493 367 1424 b 336 1221 367 1308 357 1263 l 332 1211 l 333 1208 b 367 1077 356 1170 367 1124 b 336 945 367 1032 357 986 l 332 935 l 333 932 b 367 800 356 893 367 848 b 336 669 367 756 357 710 l 332 659 l 333 656 b 367 523 356 617 367 571 b 345 412 367 485 360 446 b 231 273 322 356 284 310 b -1 19 121 195 27 93 b -17 4 -4 11 -10 5 l -21 4 l -21 134 l -21 265 l -17 265 b 133 291 20 265 96 278 b 318 537 245 328 318 433 b 307 603 318 559 315 582 b 303 614 304 612 304 614 b 298 609 302 614 300 613 b 231 549 281 589 258 567 b -1 295 121 471 27 369 b -17 280 -4 287 -10 281 l -21 280 l -21 410 l -21 541 l -17 541 b 133 567 20 541 96 555 b 318 813 245 605 318 709 b 307 880 318 835 315 859 b 303 891 304 888 304 891 b 298 885 302 891 300 888 b 231 825 281 866 258 843 b -1 571 121 748 27 645 b -17 556 -4 563 -10 557 l -21 556 l -21 687 l -21 817 l -17 817 b 133 843 20 817 96 830 b 318 1089 245 881 318 985 b 307 1156 318 1111 315 1134 b 303 1167 304 1164 304 1167 b 298 1161 302 1167 300 1164 b 231 1102 281 1140 258 1120 b -1 848 121 1024 27 921 b -17 832 -4 839 -10 834 l -21 832 l -21 963 l -21 1093 l -17 1093 b 114 1113 12 1093 78 1103 b 313 1314 215 1142 289 1218 b 318 1364 317 1331 318 1347 b 255 1511 318 1422 295 1478 b 243 1532 247 1519 243 1525 b 259 1553 243 1540 250 1550 "},flag128thUp:{x_min:-24.5,x_max:313.0625,ha:319,o:"m -24 -133 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 142 -213 13 -61 74 -144 b 258 -376 196 -269 230 -315 b 313 -605 295 -449 313 -528 b 292 -742 313 -652 306 -699 b 288 -752 289 -748 288 -752 b 288 -752 288 -752 288 -752 b 292 -764 289 -753 291 -757 b 313 -907 306 -811 313 -860 b 292 -1045 313 -954 306 -1002 b 288 -1054 289 -1050 288 -1054 b 288 -1054 288 -1054 288 -1054 b 292 -1067 289 -1054 291 -1060 b 313 -1210 306 -1113 313 -1161 b 292 -1346 313 -1257 306 -1304 b 288 -1357 289 -1353 288 -1357 b 288 -1357 288 -1357 288 -1357 b 292 -1368 289 -1357 291 -1363 b 313 -1512 306 -1415 313 -1464 b 292 -1648 313 -1560 306 -1605 b 288 -1660 289 -1654 288 -1660 b 288 -1660 288 -1660 288 -1660 b 292 -1671 289 -1660 291 -1665 b 313 -1814 306 -1719 313 -1766 b 250 -2040 313 -1897 291 -1977 b 232 -2062 238 -2057 236 -2059 b 221 -2065 230 -2063 225 -2065 b 200 -2045 210 -2065 201 -2057 b 200 -2043 200 -2044 200 -2044 b 208 -2026 200 -2037 202 -2034 b 269 -1826 249 -1966 269 -1897 b 153 -1544 269 -1726 230 -1625 b -9 -1472 115 -1506 58 -1481 b -21 -1471 -14 -1471 -19 -1471 l -24 -1471 l -24 -1343 l -24 -1215 l -20 -1215 b -1 -1229 -12 -1215 -4 -1221 b 142 -1424 13 -1270 74 -1353 b 257 -1582 196 -1478 228 -1524 b 264 -1594 261 -1589 264 -1594 l 264 -1594 b 265 -1582 264 -1594 264 -1589 b 270 -1525 268 -1562 270 -1544 b 153 -1243 270 -1424 228 -1321 b -9 -1170 115 -1203 58 -1178 b -21 -1168 -14 -1170 -19 -1168 l -24 -1168 l -24 -1041 l -24 -913 l -20 -913 b -1 -927 -12 -913 -4 -918 b 142 -1121 13 -967 74 -1050 b 257 -1281 196 -1175 228 -1221 b 264 -1292 261 -1286 264 -1292 l 264 -1292 b 265 -1279 264 -1292 264 -1286 b 270 -1222 268 -1261 270 -1242 b 153 -941 270 -1121 228 -1018 b -9 -867 115 -900 58 -875 b -21 -866 -14 -867 -19 -866 l -24 -866 l -24 -738 l -24 -610 l -20 -610 b -1 -624 -12 -610 -4 -616 b 142 -818 13 -664 74 -749 b 257 -978 196 -873 228 -918 b 264 -989 261 -984 264 -989 l 264 -989 b 265 -977 264 -989 264 -984 b 270 -920 268 -959 270 -939 b 153 -638 270 -818 228 -716 b -9 -564 115 -598 58 -573 b -21 -563 -14 -564 -19 -563 l -24 -563 l -24 -435 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 142 -516 13 -363 74 -446 b 257 -675 196 -571 228 -616 b 264 -687 261 -681 264 -687 l 264 -687 b 265 -674 264 -687 264 -681 b 270 -617 268 -656 270 -637 b 153 -335 270 -516 228 -413 b -9 -262 115 -295 58 -270 b -21 -260 -14 -262 -19 -260 l -24 -260 l -24 -133 "},flag128thDown:{x_min:-21.78125,x_max:367.5,ha:375,o:"m 276 1900 b 284 1901 279 1900 281 1901 b 306 1883 291 1901 298 1896 b 367 1686 347 1825 367 1757 b 343 1558 367 1643 359 1600 l 338 1549 l 343 1537 b 367 1411 359 1497 367 1454 b 343 1282 367 1367 359 1324 l 338 1272 l 343 1261 b 367 1135 359 1221 367 1178 b 343 1007 367 1090 359 1047 l 338 996 l 343 985 b 367 859 359 945 367 902 b 343 731 367 814 359 771 l 338 720 l 343 709 b 367 582 359 667 367 626 b 289 362 367 503 340 426 b 239 312 276 345 259 330 b 29 77 152 237 76 152 b -1 18 14 54 2 30 b -19 4 -4 11 -12 4 l -21 4 l -21 133 l -20 260 l -13 262 b 98 299 17 269 62 284 b 111 305 103 302 110 305 b 167 334 123 310 156 327 b 319 595 264 391 319 491 b 313 659 319 616 318 638 b 310 667 311 664 311 667 b 307 663 310 667 308 666 b 240 588 289 637 269 614 b 16 331 141 505 62 413 b -1 294 8 316 1 302 b -19 280 -4 287 -12 280 l -21 280 l -21 408 l -20 537 l -13 538 b 98 576 17 545 62 560 b 111 581 103 578 110 581 b 167 610 123 587 156 603 b 319 871 264 667 319 767 b 313 935 319 892 318 913 b 310 942 311 941 311 942 b 307 939 310 942 308 941 b 240 864 289 913 269 889 b 16 607 141 781 62 689 b -1 570 8 592 1 578 b -19 556 -4 563 -12 556 l -21 556 l -21 684 l -20 813 l -13 814 b 98 852 17 821 62 836 b 111 857 103 855 110 857 b 167 886 123 863 156 880 b 319 1147 264 943 319 1043 b 313 1211 319 1168 318 1189 b 310 1218 311 1217 311 1218 b 307 1215 310 1218 308 1217 b 240 1140 289 1188 269 1165 b 16 884 141 1057 62 966 b -1 846 8 868 1 855 b -19 832 -4 839 -12 832 l -21 832 l -21 960 l -20 1089 l -13 1090 b 98 1128 17 1097 62 1111 b 111 1134 103 1131 110 1134 b 167 1163 123 1139 156 1156 b 319 1424 264 1220 319 1320 b 313 1486 319 1444 318 1465 b 310 1494 311 1493 311 1494 b 307 1492 310 1494 308 1493 b 240 1417 289 1464 269 1442 b 16 1160 141 1333 62 1242 b -1 1121 8 1145 1 1131 b -19 1109 -4 1115 -12 1109 l -21 1109 l -21 1236 l -20 1365 l -13 1367 b 98 1404 17 1374 62 1388 b 111 1410 103 1407 110 1410 b 250 1508 172 1437 215 1467 b 319 1701 296 1564 319 1633 b 270 1859 319 1757 303 1814 b 262 1882 265 1868 262 1875 b 276 1900 262 1890 266 1896 "},accidentalFlat:{x_min:-21.78125,x_max:251.8125,ha:257,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 "},accidentalNatural:{x_min:0,x_max:239.5625,ha:244,o:"m 10 460 b 20 462 13 462 14 462 b 39 449 28 462 35 458 l 40 446 l 40 326 b 40 205 40 259 40 205 b 127 227 40 205 80 215 b 220 249 196 244 213 249 b 227 247 224 249 225 248 b 238 237 231 245 235 241 l 239 233 l 239 -106 l 239 -448 l 238 -451 b 219 -463 234 -459 225 -463 b 198 -451 210 -463 202 -459 l 197 -448 l 197 -324 b 197 -201 197 -248 197 -201 b 110 -223 196 -201 157 -210 b 17 -245 42 -240 24 -245 b 10 -242 13 -245 13 -244 b 0 -233 6 -241 2 -237 l 0 -230 l 0 108 l 0 446 l 0 449 b 10 460 2 453 6 458 m 197 22 b 197 70 197 41 197 58 b 196 116 197 113 197 116 l 196 116 b 118 97 196 116 160 106 l 40 77 l 40 -18 b 40 -112 40 -69 40 -112 l 119 -93 l 197 -73 l 197 22 "},accidentalSharp:{x_min:0,x_max:323.9375,ha:331,o:"m 217 535 b 225 537 220 537 221 537 b 245 524 235 537 242 533 l 246 521 l 247 390 l 247 258 l 273 265 b 306 270 288 269 299 270 b 322 259 315 270 319 267 b 323 208 323 256 323 233 b 322 158 323 184 323 159 b 288 140 318 148 315 147 b 247 130 254 131 247 130 b 247 65 247 130 247 104 b 247 20 247 51 247 36 l 247 -88 l 273 -81 b 306 -76 289 -77 299 -76 b 318 -81 311 -76 315 -77 b 323 -123 323 -87 323 -86 l 323 -138 l 323 -154 b 318 -195 323 -191 323 -190 b 269 -210 314 -199 315 -199 b 249 -216 259 -213 250 -216 l 247 -216 l 247 -349 l 246 -483 l 245 -487 b 225 -499 242 -495 234 -499 b 206 -487 219 -499 210 -495 l 205 -483 l 205 -355 l 205 -227 l 204 -227 l 181 -233 l 138 -244 b 117 -249 127 -247 117 -249 b 115 -385 115 -249 115 -256 l 115 -523 l 114 -526 b 95 -538 110 -534 102 -538 b 74 -526 87 -538 78 -534 l 73 -523 l 73 -391 b 72 -260 73 -269 73 -260 b 72 -260 72 -260 72 -260 b 19 -273 61 -263 23 -273 b 0 -260 10 -273 4 -267 b 0 -209 0 -256 0 -256 l 0 -162 l 1 -158 b 61 -134 5 -148 5 -148 l 73 -131 l 73 -22 b 72 86 73 79 73 86 b 72 86 72 86 72 86 b 19 74 61 83 23 74 b 0 86 10 74 4 79 b 0 137 0 90 0 90 l 0 184 l 1 188 b 61 212 5 198 5 198 l 73 215 l 73 348 l 73 481 l 74 485 b 95 498 78 492 87 498 b 103 495 98 498 100 496 b 114 485 107 494 111 489 l 115 481 l 115 353 l 115 226 l 121 226 b 159 235 123 227 141 231 l 198 247 l 205 248 l 205 384 l 205 521 l 206 524 b 217 535 209 528 212 533 m 205 9 b 205 119 205 70 205 119 l 205 119 b 182 113 204 119 194 116 l 138 102 b 117 97 127 99 117 97 b 115 -12 115 97 115 91 l 115 -122 l 121 -120 b 159 -111 123 -119 141 -115 l 198 -101 l 205 -98 l 205 9 "},accidentalDoubleSharp:{x_min:0,x_max:367.5,ha:375,o:"m 0 124 l 0 187 l 61 187 l 122 187 l 122 138 l 122 91 l 153 61 l 183 30 l 213 61 l 243 91 l 243 138 l 243 187 l 306 187 l 367 187 l 367 124 l 367 61 l 321 61 l 274 61 l 243 30 l 213 0 l 243 -31 l 274 -62 l 321 -62 l 367 -62 l 367 -124 l 367 -188 l 306 -188 l 243 -188 l 243 -140 l 243 -93 l 213 -62 l 183 -31 l 153 -62 l 122 -93 l 122 -140 l 122 -188 l 61 -188 l 0 -188 l 0 -124 l 0 -62 l 46 -62 l 92 -62 l 123 -31 l 153 0 l 123 30 l 92 61 l 46 61 l 0 61 l 0 124 "},accidentalDoubleFlat:{x_min:-21.78125,x_max:483.1875,ha:493,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 179 164 199 187 192 l 210 176 l 210 396 l 210 617 l 212 621 b 231 632 216 628 223 632 b 250 620 239 632 247 628 b 251 383 251 616 251 616 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 "},accidentalParensLeft:{x_min:-166.0625,x_max:-25.859375,ha:0,o:"m -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 "},accidentalParensRight:{x_min:25.859375,x_max:164.6875,ha:168,o:"m 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 "},accidentalQuarterToneFlatStein:{x_min:0,x_max:272.21875,ha:278,o:"m 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 "},accidentalThreeQuarterTonesFlatZimmermann:{x_min:0,x_max:607.0625,ha:619,o:"m 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 m 347 631 b 353 632 348 632 351 632 b 374 620 363 632 371 628 b 375 383 375 616 375 616 l 375 148 l 377 151 b 492 199 415 183 454 199 b 537 191 507 199 522 197 b 607 84 582 176 607 134 b 583 0 607 58 598 29 b 455 -142 562 -40 533 -72 l 378 -215 b 355 -229 364 -229 362 -229 b 334 -216 345 -229 337 -224 l 333 -212 l 333 201 l 333 616 l 334 620 b 347 631 337 624 341 630 m 465 131 b 451 133 461 133 455 133 b 445 133 449 133 446 133 b 379 87 419 129 396 113 l 375 80 l 375 -37 l 375 -156 l 378 -152 b 499 81 451 -72 499 20 l 499 83 b 465 131 499 113 490 126 "},accidentalQuarterToneSharpStein:{x_min:0,x_max:193.28125,ha:197,o:"m 85 514 b 95 517 88 517 89 517 b 114 505 103 517 110 513 l 115 502 l 115 376 b 115 249 115 306 115 249 b 141 258 117 249 127 252 l 167 266 l 172 266 b 190 254 181 265 187 262 l 193 251 l 193 202 l 193 188 b 187 147 193 149 191 152 b 147 130 183 142 182 141 l 115 119 l 115 9 b 115 -99 115 -51 115 -99 b 141 -91 115 -99 127 -95 b 171 -81 166 -81 167 -81 l 171 -81 b 191 -94 181 -81 189 -87 b 193 -142 191 -97 193 -120 b 191 -195 193 -167 191 -194 b 125 -227 187 -205 187 -204 l 115 -230 l 115 -366 l 115 -503 l 114 -506 b 95 -519 110 -514 102 -519 b 74 -506 87 -519 78 -514 l 73 -503 l 73 -374 b 73 -245 73 -260 73 -245 b 73 -245 73 -245 73 -245 b 55 -252 72 -245 63 -249 l 32 -260 b 19 -263 27 -262 23 -263 b 4 -256 13 -263 8 -260 b 0 -215 0 -251 0 -254 b 0 -199 0 -210 0 -206 l 0 -152 l 1 -149 b 8 -140 2 -145 5 -141 b 42 -127 9 -140 24 -133 l 73 -116 l 73 -5 b 73 23 73 4 73 15 b 73 105 73 70 73 105 b 49 97 73 105 61 101 b 17 88 32 91 23 88 b 4 95 10 88 8 91 b 0 137 0 101 0 98 b 0 151 0 141 0 145 l 0 199 l 1 202 b 43 224 5 212 5 212 l 73 234 l 73 367 l 73 502 l 74 505 b 85 514 77 509 81 513 "},accidentalThreeQuarterTonesSharpStein:{x_min:-1.359375,x_max:455.96875,ha:465,o:"m 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 "},accidentalBuyukMucennebFlat:{x_min:-171.5,x_max:251.8125,ha:257,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 "},accidentalBakiyeFlat:{x_min:-176.9375,x_max:251.8125,ha:257,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 "},accidentalKomaSharp:{x_min:-1.359375,x_max:455.96875,ha:465,o:"m 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 "},accidentalKucukMucennebSharp:{x_min:-1.359375,x_max:255.890625,ha:261,o:"m 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 "},articAccentAbove:{x_min:-348.4375,x_max:24.5,ha:25,o:"m -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 "},articAccentBelow:{x_min:-348.4375,x_max:24.5,ha:25,o:"m -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 "},articTenutoAbove:{x_min:0,x_max:318.5,ha:325,o:"m 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 "},articTenutoBelow:{x_min:0,x_max:318.5,ha:325,o:"m 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 "},articStaccatoAbove:{x_min:0,x_max:133.390625,ha:136,o:"m 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 "},articStaccatoBelow:{x_min:0,x_max:133.390625,ha:136,o:"m 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 "},articStaccatissimoAbove:{x_min:-73.5,x_max:72.140625,ha:74,o:"m -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 "},articStaccatissimoBelow:{x_min:-73.5,x_max:72.140625,ha:74,o:"m -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 "},articMarcatoAbove:{x_min:-149.71875,x_max:148.359375,ha:151,o:"m -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 "},articMarcatoBelow:{x_min:-149.71875,x_max:148.359375,ha:151,o:"m -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 "},fermataAbove:{x_min:-442.359375,x_max:441,ha:450,o:"m -31 487 b -1 488 -21 488 -10 488 b 434 104 216 488 397 330 b 441 27 438 79 441 47 b 439 12 441 20 439 15 b 419 0 435 4 427 0 b 404 5 413 0 408 1 b 398 30 400 11 398 13 b 0 351 390 213 213 351 b -59 348 -20 351 -39 349 b -400 30 -251 324 -393 191 b -405 5 -400 13 -401 11 b -420 0 -409 1 -415 0 b -441 12 -428 0 -436 4 b -442 27 -441 15 -442 20 b -435 104 -442 47 -439 79 b -31 487 -401 316 -235 474 m -13 131 b -1 133 -9 133 -5 133 b 51 105 19 133 39 123 b 61 70 58 95 61 83 b 51 34 61 58 58 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -57 38 -62 54 b -13 131 -62 98 -44 124 "},fermataBelow:{x_min:-441,x_max:439.640625,ha:449,o:"m -428 -2 b -421 0 -427 -1 -424 0 b -406 -6 -416 0 -409 -2 b -400 -31 -401 -12 -400 -15 b -1 -352 -392 -215 -215 -352 b 58 -349 19 -352 38 -351 b 398 -31 250 -326 392 -192 b 404 -6 398 -15 400 -12 b 419 -1 408 -2 413 -1 b 439 -13 427 -1 435 -5 b 439 -29 439 -16 439 -22 b 434 -105 439 -48 438 -80 b 0 -489 397 -333 213 -489 b -68 -484 -23 -489 -44 -488 b -441 -36 -280 -452 -436 -263 b -441 -30 -441 -34 -441 -31 b -428 -2 -441 -11 -439 -5 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -57 -102 -62 -87 b -13 -9 -62 -44 -44 -16 "},fermataLongAbove:{x_min:-390.640625,x_max:389.28125,ha:397,o:"m -378 502 l -374 503 l 0 503 l 372 503 l 377 502 b 387 491 381 499 385 496 l 389 488 l 389 251 l 389 15 l 387 12 b 367 0 383 4 375 0 b 348 12 360 0 352 4 l 347 15 l 347 174 l 347 335 l 0 335 l -348 335 l -348 174 l -348 15 l -349 12 b -368 0 -353 4 -362 0 b -389 12 -377 0 -385 4 l -390 15 l -390 251 l -390 488 l -389 491 b -378 502 -386 496 -382 499 m -13 131 b -1 133 -9 133 -5 133 b 50 105 19 133 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -58 38 -62 55 b -13 131 -62 98 -44 124 "},fermataLongBelow:{x_min:-390.640625,x_max:389.28125,ha:397,o:"m -378 -2 b -368 -1 -375 -1 -374 -1 b -349 -13 -360 -1 -353 -5 l -348 -16 l -348 -176 l -348 -337 l 0 -337 l 347 -337 l 347 -176 l 347 -16 l 348 -13 b 367 0 352 -5 360 0 b 387 -13 375 0 383 -5 l 389 -16 l 389 -252 l 389 -489 l 387 -492 b 377 -503 385 -498 381 -501 l 372 -505 l 0 -505 l -374 -505 l -378 -503 b -389 -492 -382 -501 -386 -498 l -390 -489 l -390 -252 l -390 -16 l -389 -13 b -378 -2 -386 -8 -382 -4 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -58 -102 -62 -87 b -13 -9 -62 -44 -44 -16 "},fermataVeryLongAbove:{x_min:-390.640625,x_max:389.28125,ha:397,o:"m -378 573 l -374 576 l 0 576 l 372 576 l 377 573 b 387 563 381 571 385 567 l 389 559 l 389 287 l 389 15 l 387 12 b 367 0 383 4 375 0 b 348 12 360 0 352 4 l 347 15 l 347 210 l 347 406 l 0 406 l -348 406 l -348 210 l -348 15 l -349 12 b -368 0 -353 4 -362 0 b -389 12 -377 0 -385 4 l -390 15 l -390 287 l -390 559 l -389 563 b -378 573 -386 567 -382 571 m -274 337 l -270 338 l 0 338 l 269 338 l 273 337 b 284 326 279 334 281 330 l 285 323 l 285 169 l 285 15 l 284 12 b 265 -1 280 4 272 -1 b 245 12 257 -1 249 4 l 245 15 l 243 108 l 243 201 l 0 201 l -245 201 l -245 108 l -245 15 l -246 12 b -266 -1 -250 4 -258 -1 b -285 12 -273 -1 -281 4 l -287 15 l -287 169 l -287 323 l -285 326 b -274 337 -283 330 -280 334 m -13 131 b -1 133 -9 133 -5 133 b 50 105 19 133 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -58 38 -62 55 b -13 131 -62 98 -44 124 "},fermataVeryLongBelow:{x_min:-390.640625,x_max:389.28125,ha:397,o:"m -378 -2 b -368 -1 -375 -1 -374 -1 b -349 -13 -360 -1 -353 -5 l -348 -16 l -348 -212 l -348 -408 l 0 -408 l 347 -408 l 347 -212 l 347 -16 l 348 -13 b 367 0 352 -5 360 0 b 387 -13 375 0 383 -5 l 389 -16 l 389 -288 l 389 -560 l 387 -564 b 377 -574 385 -569 381 -573 l 372 -577 l 0 -577 l -374 -577 l -378 -574 b -389 -564 -382 -573 -386 -569 l -390 -560 l -390 -288 l -390 -16 l -389 -13 b -378 -2 -386 -8 -382 -4 m -274 -2 b -266 -1 -272 -1 -270 -1 b -246 -13 -257 -1 -250 -5 l -245 -16 l -245 -109 l -245 -202 l 0 -202 l 243 -202 l 243 -109 l 245 -16 l 245 -13 b 265 0 249 -5 257 0 b 284 -13 272 0 280 -5 l 285 -16 l 285 -170 l 285 -324 l 284 -327 b 273 -338 281 -331 279 -335 l 269 -340 l 0 -340 l -270 -340 l -274 -338 b -285 -327 -280 -335 -283 -331 l -287 -324 l -287 -170 l -287 -16 l -285 -13 b -274 -2 -283 -8 -280 -4 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -58 -102 -62 -87 b -13 -9 -62 -44 -44 -16 "},fermataShortAbove:{x_min:-390.640625,x_max:389.28125,ha:397,o:"m -9 650 b -1 652 -6 650 -4 652 b 19 639 6 652 13 648 l 23 631 b 28 623 24 628 27 626 l 34 614 l 39 606 l 43 598 l 49 588 l 54 580 l 59 571 l 65 563 l 69 555 l 74 546 l 80 537 l 85 528 b 89 520 87 526 89 523 l 95 512 l 100 503 l 106 494 l 111 487 l 115 478 l 121 470 l 126 462 l 130 453 l 136 445 l 141 437 l 147 427 l 151 419 l 156 410 l 161 402 l 167 394 l 172 385 l 176 376 b 182 367 179 374 181 370 l 187 359 l 193 351 l 198 342 l 202 334 l 208 326 l 212 317 l 217 309 l 223 301 l 228 292 l 234 284 l 238 274 l 243 266 l 249 258 l 254 249 l 259 241 l 264 233 l 269 224 b 274 216 270 222 273 217 l 280 206 l 285 198 l 295 180 l 299 174 l 304 165 l 310 156 l 315 148 l 321 140 l 325 131 l 330 123 l 336 113 l 341 105 l 347 97 l 351 88 l 356 80 l 360 72 b 364 66 362 70 363 68 b 370 58 366 65 368 61 l 379 41 b 389 19 386 31 389 24 b 382 4 389 13 386 8 b 347 0 377 0 378 0 b 337 0 344 0 340 0 b 336 0 336 0 336 0 b 287 11 294 0 294 0 l 281 19 l 276 27 l 272 37 l 266 45 l 261 54 l 255 62 l 250 70 l 246 79 l 240 87 l 235 97 l 230 105 l 224 113 l 220 122 l 215 130 l 209 140 l 204 148 l 200 155 l 194 163 b 189 172 193 165 191 169 l 185 180 l 179 188 l 174 198 l 168 206 l 163 215 l 159 223 l 153 231 l 148 240 l 142 249 l 138 258 l 133 266 l 127 274 l 122 283 l 117 292 l 111 301 l 107 308 l 102 316 b 98 324 102 317 99 322 l 92 333 l 87 341 l 81 349 l 77 359 l 72 367 l 66 376 l 61 384 l 55 392 l 51 401 l 46 410 l 40 419 l 35 427 l 31 435 l 24 444 l 20 453 l 14 460 l 10 469 b 5 477 9 470 6 474 l 0 485 l -5 494 l -9 502 l -14 512 b -20 519 -16 513 -19 517 l -24 526 l -28 534 b -31 537 -29 535 -31 537 b -35 533 -32 537 -32 535 l -88 444 l -187 280 l -285 117 l -343 23 b -362 1 -352 6 -356 2 b -368 0 -364 0 -367 0 b -390 20 -381 0 -390 8 l -390 20 b -359 77 -390 27 -390 27 l -80 539 l -25 631 b -9 650 -17 644 -13 648 m -13 133 b -1 134 -9 133 -5 134 b 50 105 19 134 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 70 -57 40 -62 55 b -13 133 -62 98 -44 126 "},fermataShortBelow:{x_min:-390.640625,x_max:389.28125,ha:397,o:"m -377 -1 b -368 0 -375 -1 -372 0 b -362 -1 -366 0 -363 -1 b -343 -24 -356 -4 -352 -8 l -285 -119 l -187 -280 l -88 -444 l -35 -533 b -31 -538 -32 -537 -32 -538 b -28 -534 -31 -538 -29 -537 l -23 -526 l -19 -517 l -13 -509 l -8 -501 l -2 -492 l 2 -483 l 6 -476 l 17 -458 l 23 -449 l 32 -433 l 38 -424 l 42 -416 l 47 -408 l 53 -399 l 58 -391 l 63 -381 l 68 -373 l 73 -365 l 78 -356 l 84 -348 l 89 -340 l 93 -330 l 99 -322 l 104 -315 l 114 -297 l 125 -280 l 129 -272 l 134 -263 l 140 -255 l 145 -247 l 151 -238 l 155 -230 l 160 -220 l 166 -212 l 171 -204 l 176 -195 l 181 -187 l 186 -177 l 191 -169 l 196 -162 l 201 -154 l 206 -144 l 217 -127 l 221 -119 l 227 -111 l 232 -102 l 238 -94 l 242 -86 l 247 -77 l 253 -69 l 258 -59 l 262 -51 l 268 -43 l 273 -34 l 279 -26 l 283 -18 b 321 -1 292 -2 292 -1 b 338 -1 326 -1 332 -1 b 382 -6 378 -1 375 -1 b 389 -20 386 -9 389 -15 b 382 -38 389 -26 386 -31 l 378 -47 l 372 -55 l 367 -63 l 362 -72 l 356 -80 l 351 -90 l 347 -98 l 341 -106 l 336 -115 l 330 -123 l 325 -131 l 321 -141 l 315 -149 l 310 -158 l 304 -166 l 299 -174 b 295 -183 298 -177 296 -181 l 289 -191 l 285 -199 l 280 -208 l 274 -216 l 269 -224 l 264 -233 l 259 -242 l 254 -251 l 249 -259 l 243 -267 l 238 -276 l 234 -284 l 228 -292 l 223 -302 l 217 -310 l 213 -319 l 208 -327 b 202 -335 206 -330 204 -334 l 197 -344 l 193 -351 l 187 -360 l 182 -369 l 176 -377 l 172 -385 l 167 -394 l 161 -403 l 156 -412 l 152 -420 l 147 -428 l 141 -437 l 136 -445 l 130 -455 l 126 -463 l 121 -471 l 115 -480 b 110 -488 114 -483 111 -487 l 106 -496 l 100 -503 l 96 -512 l 89 -521 l 85 -530 l 80 -538 l 74 -546 l 69 -555 l 65 -564 l 59 -573 l 54 -581 l 49 -589 l 43 -598 l 39 -606 l 34 -616 l 28 -624 l 23 -632 b 19 -641 21 -635 20 -638 b 0 -653 14 -649 8 -653 b -25 -631 -10 -653 -14 -649 l -80 -541 l -359 -79 b -389 -29 -375 -52 -389 -30 b -390 -22 -389 -26 -390 -24 b -377 -1 -390 -13 -385 -5 m -13 -9 b -1 -8 -9 -8 -5 -8 b 51 -36 19 -8 39 -19 b 61 -72 58 -47 61 -59 b 51 -106 61 -84 58 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -127 b -62 -72 -57 -102 -62 -87 b -13 -9 -62 -44 -44 -16 "},breathMarkComma:{x_min:-1.359375,x_max:193.28125,ha:197,o:"m 78 233 b 87 233 81 233 84 233 b 187 140 132 233 174 195 b 193 102 190 127 193 115 b 43 -113 193 22 136 -62 b 27 -119 36 -116 31 -119 b 19 -108 21 -119 19 -115 b 29 -97 19 -102 20 -101 b 102 13 73 -72 102 -27 b 92 51 102 26 98 40 l 91 54 l 84 54 b 8 104 53 54 21 74 b -1 142 1 116 -1 130 b 78 233 -1 187 31 227 "},breathMarkUpbow:{x_min:-170.140625,x_max:168.78125,ha:172,o:"m -160 567 b -122 567 -159 567 -149 567 l -87 567 l -84 566 b -74 553 -78 563 -77 560 b -20 366 -73 551 -49 466 b 31 186 8 267 31 186 b 85 371 31 186 55 269 b 140 559 114 473 138 557 b 153 567 141 564 148 567 b 168 559 159 567 166 564 b 168 555 168 557 168 557 b 92 281 168 548 159 513 b 14 13 50 134 14 13 b 0 0 14 6 6 0 b -17 15 -8 0 -17 8 b -93 283 -17 15 -51 136 b -170 552 -166 533 -170 548 b -170 553 -170 552 -170 552 b -160 567 -170 560 -167 564 "},caesura:{x_min:0,x_max:622.03125,ha:635,o:"m 398 417 b 406 419 401 419 404 419 b 427 398 417 419 427 409 b 427 391 427 395 427 392 b 34 -274 424 385 38 -272 b 20 -280 29 -278 25 -280 b 0 -259 9 -280 0 -270 b 0 -252 0 -256 0 -254 b 393 413 2 -247 389 410 b 398 417 394 415 397 416 m 592 417 b 600 419 594 419 597 419 b 622 398 611 419 622 409 b 620 391 622 395 620 392 b 227 -274 617 385 231 -272 b 213 -280 223 -278 219 -280 b 193 -259 202 -280 193 -270 b 194 -252 193 -256 193 -254 b 586 413 196 -247 582 410 b 592 417 588 415 590 416 "},caesuraCurved:{x_min:0,x_max:503.609375,ha:514,o:"m 274 430 b 277 430 276 430 277 430 b 310 394 296 430 310 415 b 308 383 310 391 308 387 b 306 367 307 381 307 374 b 236 120 298 305 272 210 b 40 -273 189 -5 125 -134 b 20 -287 35 -283 27 -287 b 5 -281 14 -287 9 -285 b 0 -267 1 -277 0 -273 b 9 -242 0 -262 2 -255 b 246 395 137 -12 232 242 b 274 430 249 416 257 427 m 468 430 b 472 430 469 430 470 430 b 503 394 490 430 503 415 b 502 383 503 391 503 387 b 499 367 502 381 500 374 b 431 120 491 305 465 210 b 234 -273 382 -5 318 -134 b 213 -287 228 -283 220 -287 b 198 -281 208 -287 202 -285 b 193 -267 194 -277 193 -273 b 202 -242 193 -262 196 -255 b 439 395 330 -12 426 242 b 468 430 442 416 451 427 "},restMaxima:{x_min:0,x_max:464.140625,ha:474,o:"m 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 "},restDoubleWhole:{x_min:0,x_max:386.5625,ha:394,o:"m 0 173 l 0 347 l 193 347 l 386 347 l 386 173 l 386 0 l 193 0 l 0 0 l 0 173 "},restWhole:{x_min:0,x_max:447.8125,ha:457,o:"m 0 -87 l 0 0 l 223 0 l 447 0 l 447 -87 l 447 -174 l 223 -174 l 0 -174 l 0 -87 "},restWholeLegerLine:{x_min:0,x_max:737.71875,ha:753,o:"m 9 13 b 208 15 10 15 51 15 b 368 15 251 15 304 15 l 726 15 l 729 12 b 737 -1 735 9 737 4 b 729 -15 737 -6 735 -11 l 726 -16 l 660 -16 l 592 -16 l 592 -95 l 592 -174 l 368 -174 l 144 -174 l 144 -95 l 144 -16 l 77 -16 l 9 -16 l 6 -15 b 0 -1 1 -11 0 -6 b 9 13 0 5 2 11 "},restHalf:{x_min:0,x_max:447.8125,ha:457,o:"m 0 86 l 0 173 l 223 173 l 447 173 l 447 86 l 447 0 l 223 0 l 0 0 l 0 86 "},restHalfLegerLine:{x_min:0,x_max:737.71875,ha:753,o:"m 144 94 l 144 173 l 368 173 l 592 173 l 592 94 l 592 15 l 660 15 l 726 15 l 729 12 b 737 -1 735 9 737 4 b 729 -15 737 -6 735 -11 l 726 -16 l 368 -16 l 9 -16 l 6 -15 b 0 -1 1 -11 0 -6 b 6 12 0 4 1 9 l 9 15 l 77 15 l 144 15 l 144 94 "},restQuarter:{x_min:0,x_max:300.8125,ha:307,o:"m 49 505 b 53 506 50 505 51 506 b 70 496 58 506 62 503 b 81 485 73 492 78 488 l 96 473 l 111 459 l 122 449 l 134 438 l 182 396 l 255 330 b 292 291 292 298 292 298 l 292 290 l 292 284 l 283 270 b 209 36 234 197 209 113 b 288 -170 209 -44 235 -119 b 299 -184 295 -179 299 -181 b 300 -191 300 -187 300 -188 b 285 -206 300 -199 294 -206 b 280 -206 283 -206 281 -206 b 247 -201 270 -202 259 -201 b 176 -222 223 -201 197 -208 b 114 -340 136 -249 114 -292 b 172 -471 114 -384 134 -433 b 185 -492 182 -481 185 -487 b 181 -502 185 -496 183 -499 b 171 -508 176 -505 174 -508 b 152 -498 166 -508 160 -503 b 0 -284 65 -428 12 -352 b 0 -260 0 -278 0 -270 b 1 -238 0 -252 0 -242 b 148 -140 16 -177 73 -140 b 209 -148 167 -140 189 -142 b 215 -149 212 -148 215 -149 b 215 -149 215 -149 215 -149 l 215 -149 b 201 -136 215 -148 209 -142 l 157 -97 l 96 -41 b 17 34 21 24 17 29 b 17 37 17 36 17 36 b 17 38 17 37 17 38 b 25 56 17 44 17 44 b 110 298 81 131 110 219 b 46 474 110 367 88 431 b 38 491 40 480 38 487 b 49 505 38 498 42 502 "},rest8th:{x_min:0,x_max:349.8125,ha:357,o:"m 88 302 b 103 303 93 302 98 303 b 202 224 149 303 191 270 b 205 199 204 216 205 208 b 178 129 205 173 196 147 l 175 126 l 182 127 b 307 249 236 142 284 190 b 313 259 308 254 311 258 b 329 267 317 265 323 267 b 349 247 340 267 349 259 b 201 -263 349 242 204 -258 b 182 -273 197 -270 190 -273 b 163 -260 174 -273 166 -269 b 161 -256 161 -259 161 -258 b 217 -59 161 -248 170 -220 b 272 129 247 43 272 127 b 272 129 272 129 272 129 b 264 122 272 129 268 126 b 140 80 227 94 183 80 b 36 115 102 80 65 91 b 0 194 10 136 0 165 b 88 302 0 244 32 292 "},rest16th:{x_min:0,x_max:450.53125,ha:460,o:"m 189 302 b 204 303 193 302 198 303 b 303 224 250 303 292 270 b 306 199 304 216 306 208 b 279 129 306 173 296 147 l 276 126 l 281 127 b 408 249 337 142 385 190 b 412 259 409 254 412 258 b 430 267 417 265 423 267 b 450 247 441 267 450 259 b 200 -605 450 242 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 194 111 136 99 165 b 189 302 99 244 133 292 "},rest32nd:{x_min:0,x_max:551.25,ha:563,o:"m 289 644 b 304 645 294 645 299 645 b 404 566 349 645 392 613 b 406 541 405 557 406 549 b 379 471 406 514 397 489 l 377 467 l 382 470 b 509 591 438 485 485 531 b 513 601 510 595 513 599 b 530 609 518 607 524 609 b 551 588 540 609 551 602 b 200 -605 551 584 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 195 112 136 99 165 b 118 256 99 217 106 238 b 204 303 138 287 171 303 b 292 249 238 303 273 285 b 306 199 302 234 306 217 b 279 129 306 173 296 148 l 276 126 l 281 127 b 408 248 336 142 385 190 b 473 470 409 254 473 469 b 473 470 473 470 473 470 b 465 464 473 470 469 467 b 341 421 428 435 383 421 b 236 458 303 421 266 433 b 200 537 212 478 200 508 b 289 644 200 585 234 635 "},rest64th:{x_min:-1.359375,x_max:651.96875,ha:665,o:"m 389 644 b 405 645 394 645 400 645 b 504 566 450 645 492 613 b 507 541 506 557 507 549 b 480 471 507 514 498 489 l 477 467 l 483 470 b 609 591 539 485 586 531 b 613 601 611 595 613 599 b 631 609 619 607 624 609 b 651 588 641 609 651 602 b 200 -946 651 584 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 537 313 478 300 508 b 389 644 300 585 334 635 "},rest128th:{x_min:-1.359375,x_max:752.703125,ha:768,o:"m 490 985 b 504 986 495 986 500 986 b 604 907 551 986 593 954 b 607 884 607 900 607 892 b 581 813 607 857 597 831 l 578 810 l 583 811 b 710 932 638 827 687 873 b 714 943 711 936 713 942 b 730 952 720 949 725 952 b 752 931 741 952 752 943 b 200 -946 752 927 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 538 314 477 300 508 b 318 598 300 559 306 580 b 404 645 340 630 372 645 b 494 592 439 645 475 627 b 507 541 502 577 507 559 b 480 471 507 516 498 489 l 477 467 l 483 470 b 608 589 537 485 586 531 b 675 811 611 595 675 810 b 675 811 675 811 675 811 b 666 806 675 811 671 809 b 543 763 628 777 585 763 b 438 799 504 763 468 775 b 401 878 412 820 401 849 b 490 985 401 928 434 977 "},dynamicPiano:{x_min:-53.078125,x_max:513.140625,ha:485,o:"m 185 383 b 196 384 187 383 191 384 b 277 334 230 384 259 365 b 288 301 281 324 288 306 b 288 297 288 298 288 297 b 294 302 289 297 291 299 b 394 370 323 338 367 367 b 404 371 398 370 401 371 b 510 272 453 371 498 328 b 513 237 513 262 513 251 b 507 172 513 217 511 192 b 326 -34 487 59 412 -26 b 314 -36 322 -36 318 -36 b 274 -24 298 -36 283 -31 l 265 -16 b 224 44 246 -1 232 20 b 223 49 224 47 223 49 b 223 49 223 49 223 49 b 149 -197 221 48 149 -194 b 149 -198 149 -197 149 -198 b 170 -210 149 -202 155 -205 b 187 -215 174 -210 175 -212 b 204 -231 201 -219 204 -222 b 197 -245 204 -240 202 -242 l 194 -248 l 76 -248 l -42 -248 l -46 -245 b -53 -231 -51 -242 -53 -240 b -35 -215 -53 -222 -49 -217 b -13 -210 -21 -212 -20 -212 b -6 -208 -10 -209 -8 -208 b 0 -206 -6 -208 -2 -206 b 25 -188 13 -201 21 -195 b 163 280 28 -183 163 276 b 166 291 163 283 164 287 b 167 302 167 295 167 299 b 155 324 167 315 161 324 b 155 324 155 324 155 324 b 65 230 125 322 85 280 b 53 215 61 217 58 215 b 51 215 53 215 51 215 b 42 224 46 215 42 217 b 57 263 42 231 47 244 b 140 360 77 305 104 337 b 152 370 144 365 149 369 b 185 383 157 376 172 381 m 374 306 b 366 308 371 308 368 308 b 300 273 348 308 321 294 b 284 254 288 262 287 259 b 280 242 283 249 281 245 b 257 169 279 240 270 213 l 236 98 l 236 93 b 251 48 238 77 243 61 b 279 27 258 37 272 27 b 281 27 279 27 280 27 b 291 31 281 27 287 30 b 396 170 334 52 378 109 b 406 247 402 197 406 224 b 401 277 406 259 405 270 b 374 306 397 290 383 303 "},dynamicMezzo:{x_min:46.28125,x_max:669.671875,ha:563,o:"m 183 376 b 189 376 185 376 187 376 b 212 374 197 376 208 376 b 265 337 234 369 253 355 b 274 317 268 331 273 320 b 274 316 274 317 274 316 b 280 323 276 316 276 319 b 311 358 288 337 299 348 b 319 366 315 360 318 365 b 356 376 326 373 340 376 b 382 371 364 376 374 374 b 428 337 400 366 417 352 b 436 317 431 331 436 320 b 438 316 436 317 436 316 b 442 323 438 316 439 319 b 475 358 451 337 462 348 b 483 366 477 360 481 365 b 518 376 488 373 503 376 b 544 373 528 376 536 376 b 604 285 579 360 604 326 b 597 249 604 273 601 258 b 543 63 596 247 544 70 b 541 54 543 61 541 55 b 540 44 540 51 540 47 b 552 23 540 33 545 23 b 552 23 552 23 552 23 b 647 126 586 29 627 72 b 658 138 651 136 653 138 b 660 138 660 138 660 138 b 669 129 666 137 669 136 b 654 88 669 122 665 109 b 562 -12 631 43 602 9 l 549 -19 b 521 -27 540 -24 530 -27 b 447 30 490 -27 458 -4 b 443 58 445 38 443 48 b 450 93 443 72 446 84 b 504 278 453 97 504 272 b 507 288 506 283 506 287 b 509 298 507 292 509 295 b 491 326 509 310 502 320 b 487 327 490 327 488 327 b 479 324 484 327 483 326 b 441 270 462 316 443 288 b 435 249 441 265 436 254 b 398 127 434 248 419 195 b 362 4 379 61 362 5 b 328 -1 359 -1 362 -1 b 314 -1 323 -1 319 -1 b 302 -1 310 -1 306 -1 b 266 4 266 -1 269 -1 b 265 6 265 5 265 5 b 303 144 265 13 272 34 b 343 278 325 216 343 276 b 344 288 343 281 344 285 b 345 298 345 291 345 295 b 330 326 345 310 340 320 b 323 327 328 327 325 327 b 317 324 322 327 321 326 b 279 270 300 316 281 288 b 273 249 279 265 274 254 b 236 127 272 248 255 195 b 200 4 216 61 200 5 b 164 -1 197 -1 198 -1 b 151 -1 161 -1 156 -1 b 140 -1 147 -1 142 -1 b 103 4 104 -1 106 -1 b 103 6 103 5 103 5 b 141 144 103 13 108 34 b 181 278 161 216 179 276 b 182 288 181 281 181 285 b 183 298 182 291 183 295 b 168 324 183 310 178 320 b 160 327 166 326 163 327 b 141 320 156 327 151 324 b 69 230 112 305 85 272 b 57 215 65 217 62 215 b 55 215 57 215 55 215 b 46 224 49 215 46 217 b 59 260 46 231 50 242 b 151 363 81 306 112 341 b 161 369 155 365 160 367 b 183 376 166 371 174 374 "},dynamicForte:{x_min:-118.421875,x_max:597.53125,ha:381,o:"m 460 574 b 464 574 461 574 462 574 b 488 574 470 574 481 574 b 500 573 491 574 498 574 b 594 503 543 570 588 538 b 597 488 596 498 597 494 b 528 417 597 449 564 417 b 502 423 519 417 510 419 b 465 481 477 434 465 458 b 488 528 465 499 472 516 b 490 530 490 530 490 530 b 490 530 490 530 490 530 b 468 517 488 530 475 523 b 349 340 419 485 377 420 b 347 330 348 334 347 330 b 383 328 347 328 363 328 b 428 326 423 328 424 328 b 442 302 438 320 442 312 b 430 281 442 294 438 285 b 385 276 424 277 426 276 l 377 276 l 332 276 l 330 269 b 178 -117 303 126 250 -9 b 1 -249 129 -194 69 -237 b -20 -251 -6 -251 -13 -251 b -114 -187 -65 -251 -100 -227 b -118 -156 -117 -177 -118 -166 b -51 -84 -118 -116 -91 -84 b -31 -87 -46 -84 -39 -86 b 16 -152 0 -95 16 -124 b -12 -205 16 -173 8 -194 b -16 -208 -14 -206 -16 -208 b -14 -208 -16 -208 -14 -208 b -9 -206 -14 -208 -12 -208 b 74 -124 23 -197 54 -166 b 172 224 98 -79 125 22 b 185 276 178 252 183 274 b 185 276 185 276 185 276 b 141 276 185 276 181 276 b 91 280 96 276 96 276 b 77 302 83 285 77 294 b 91 326 77 312 83 320 b 148 328 95 328 96 328 l 198 330 l 202 341 b 460 574 249 473 351 566 "},dynamicRinforzando:{x_min:78.9375,x_max:485.921875,ha:417,o:"m 362 378 b 378 380 367 380 372 380 b 472 348 415 380 453 367 b 485 315 481 338 485 327 b 462 273 485 298 477 281 b 439 267 454 269 446 267 b 398 290 424 267 409 274 b 344 319 385 309 364 319 b 281 269 315 319 289 301 b 279 262 280 266 279 262 b 276 256 279 260 277 258 b 274 249 276 254 274 251 b 238 127 273 248 257 192 b 201 4 217 61 201 5 b 166 -1 198 -1 200 -1 b 153 -1 163 -1 157 -1 b 141 -1 148 -1 144 -1 b 104 4 106 -1 107 -1 b 104 6 104 5 104 5 b 142 144 104 13 110 34 b 182 278 164 219 181 276 b 183 288 182 281 182 285 b 185 302 185 292 185 298 b 164 330 185 317 176 328 b 159 330 163 330 161 330 b 102 302 140 330 119 320 b 91 294 95 295 93 294 b 88 294 91 294 89 294 b 78 303 83 294 78 298 b 81 312 78 306 78 309 b 200 373 106 347 160 373 b 215 371 205 373 209 371 b 266 335 235 367 254 353 b 269 331 268 333 269 331 b 269 331 269 331 269 331 b 273 335 269 331 270 334 b 362 378 298 359 330 376 "},dynamicSforzando:{x_min:70.78125,x_max:378.390625,ha:315,o:"m 246 373 b 254 373 249 373 251 373 b 372 324 303 373 360 351 b 378 302 377 317 378 309 b 338 251 378 278 362 255 b 328 249 334 249 332 249 b 283 294 303 249 283 270 b 288 315 283 301 284 308 b 289 319 289 317 289 319 b 289 319 289 319 289 319 b 283 320 289 320 287 320 b 270 322 279 322 274 322 b 206 288 242 322 215 308 b 206 283 206 287 206 285 b 257 223 206 267 230 238 b 284 206 272 213 277 210 b 351 90 328 173 351 130 b 340 47 351 74 348 59 b 205 -30 314 -2 264 -30 b 182 -29 198 -30 190 -30 b 84 15 147 -24 103 -5 b 70 48 74 24 70 36 b 108 99 70 70 85 94 b 121 102 112 101 117 102 b 167 56 147 102 167 80 b 159 31 167 48 164 40 l 156 26 l 157 26 b 190 20 167 22 178 20 b 220 26 201 20 212 22 b 258 65 243 34 258 51 b 257 70 258 66 258 69 b 204 126 249 94 234 109 b 114 258 148 158 114 209 b 125 302 114 273 118 288 b 246 373 147 342 193 370 "},dynamicZ:{x_min:29.9375,x_max:420.578125,ha:371,o:"m 115 345 b 221 347 117 345 166 347 b 411 345 306 347 409 345 b 420 330 416 342 420 335 b 415 319 420 326 419 321 b 178 118 397 303 179 118 b 178 117 178 118 178 117 b 181 117 178 117 178 117 b 189 117 182 117 185 117 b 193 117 190 117 191 117 b 247 98 215 117 232 111 b 296 75 266 83 280 76 b 302 75 299 75 300 75 b 322 91 311 75 315 79 b 322 91 322 91 322 91 b 322 91 322 91 322 91 b 319 91 322 91 321 91 b 313 90 318 90 315 90 b 283 107 300 90 288 97 b 277 126 279 114 277 121 b 319 167 277 149 295 167 b 319 167 319 167 319 167 b 362 118 347 167 362 147 b 355 82 362 108 359 96 b 311 33 349 65 340 55 b 224 1 284 12 253 1 b 194 5 213 1 204 2 b 168 18 183 8 178 11 b 110 36 151 30 130 36 b 57 15 88 36 68 29 b 47 11 54 12 51 11 b 31 20 40 11 34 13 b 29 26 31 22 29 25 b 68 66 29 36 39 45 b 285 250 73 71 281 248 b 285 250 285 250 285 250 b 231 252 285 252 261 252 b 137 250 190 252 141 250 b 93 227 122 248 110 241 b 78 220 88 222 83 220 b 66 227 74 220 70 222 b 63 234 65 229 63 231 b 85 291 63 241 69 252 b 115 345 108 342 108 344 "},ornamentTrill:{x_min:-340.28125,x_max:338.921875,ha:346,o:"m -32 520 b -29 521 -31 520 -31 521 b -23 519 -27 521 -24 520 b -20 513 -21 517 -20 516 b -21 506 -20 512 -20 509 b -31 474 -23 502 -27 488 l -53 402 l -66 352 l -68 349 l -57 349 b -32 351 -51 349 -40 351 b 123 370 19 352 74 359 b 137 371 127 370 133 371 b 170 356 152 371 164 366 b 171 355 170 355 170 355 b 216 366 174 355 183 358 b 280 378 268 377 266 377 b 287 378 283 378 284 378 b 332 349 307 378 322 369 b 338 319 336 341 338 330 b 332 301 338 310 336 302 b 242 280 329 299 246 280 b 242 280 242 280 242 280 b 235 288 236 280 235 283 b 235 292 235 290 235 291 b 236 302 236 297 236 299 b 220 337 236 316 230 330 l 216 340 l 210 335 b 159 276 189 322 172 301 b 118 149 152 265 156 274 b 81 34 84 36 85 36 b -8 13 78 33 -4 13 b -8 13 -8 13 -8 13 b -14 20 -12 15 -14 15 b -8 44 -14 24 -12 31 b -2 66 -5 55 -2 65 b -2 66 -2 66 -2 66 l -2 66 b -43 41 -2 66 -21 55 b -114 4 -98 8 -98 8 b -144 0 -123 0 -134 0 b -242 99 -197 0 -242 43 b -242 109 -242 102 -242 105 b -212 219 -240 122 -242 116 b -185 312 -197 270 -185 312 l -185 312 b -189 312 -185 312 -186 312 b -259 312 -200 312 -227 312 b -321 310 -291 312 -310 310 b -334 312 -330 310 -334 312 b -340 319 -338 313 -340 316 b -336 326 -340 322 -338 324 b -291 337 -334 326 -314 331 l -247 347 l -210 348 b -172 348 -190 348 -172 348 b -168 363 -172 348 -171 355 b -145 442 -151 424 -145 441 b -133 452 -144 444 -140 446 l -77 489 b -32 520 -53 506 -32 520 m 57 334 b 53 335 55 335 54 335 b 44 334 50 335 49 335 b -70 316 8 326 -28 320 b -78 309 -78 316 -78 316 b -108 202 -80 305 -88 274 b -141 81 -136 112 -141 93 b -140 74 -141 79 -141 77 b -117 49 -137 59 -127 49 b -107 52 -114 49 -110 51 b 16 127 -106 54 14 126 b 42 217 16 127 42 215 b 49 241 42 222 44 229 b 73 320 53 251 73 317 b 57 334 73 327 65 333 "},ornamentTurn:{x_min:-423.3125,x_max:421.9375,ha:431,o:"m -262 197 b -247 197 -257 197 -253 197 b -118 162 -210 197 -163 184 b 40 45 -61 134 -13 98 b 277 -95 119 -33 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -55 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 201 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 136 b 421 22 421 37 421 29 b 245 -199 421 -93 338 -199 b 238 -198 243 -199 240 -199 b -44 -47 148 -194 50 -141 b -250 86 -114 22 -183 66 b -295 94 -270 91 -283 94 b -315 91 -302 94 -307 94 b -381 4 -356 81 -381 43 b -355 -56 -381 -18 -372 -40 b -298 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -178 -69 -200 -58 -189 -62 b -151 -122 -160 -81 -151 -101 b -171 -167 -151 -138 -157 -155 b -239 -195 -185 -181 -213 -192 b -257 -197 -245 -197 -250 -197 b -423 -5 -352 -197 -423 -109 b -412 65 -423 16 -419 40 b -262 197 -389 137 -329 188 "},ornamentTurnSlash:{x_min:-423.3125,x_max:421.9375,ha:431,o:"m -10 276 b -2 277 -8 277 -5 277 b 17 265 5 277 13 273 b 19 163 19 260 19 260 l 19 68 l 39 45 b 277 -95 122 -34 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -54 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 200 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 137 b 421 22 421 37 421 29 b 257 -198 421 -86 347 -188 b 242 -198 251 -198 247 -198 b 20 -105 181 -198 95 -163 l 19 -104 l 19 -183 b 19 -216 19 -195 19 -206 b 12 -273 19 -272 17 -267 b -2 -278 8 -277 2 -278 b -21 -266 -10 -278 -19 -274 b -23 -165 -23 -263 -23 -262 l -23 -69 l -44 -47 b -250 86 -117 23 -183 66 b -295 94 -270 93 -284 94 b -315 91 -302 94 -308 94 b -381 5 -356 81 -381 43 b -355 -56 -381 -16 -372 -40 b -299 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -168 -77 -196 -58 -179 -65 b -151 -122 -156 -90 -151 -105 b -179 -174 -151 -141 -160 -162 b -239 -195 -194 -184 -217 -192 b -257 -197 -245 -195 -250 -197 b -423 -5 -349 -197 -423 -113 b -423 0 -423 -4 -423 -1 b -277 194 -420 97 -362 173 b -247 197 -268 197 -258 197 b -24 104 -185 197 -100 162 l -23 102 l -23 181 b -21 265 -23 260 -23 260 b -10 276 -20 269 -14 274 "},ornamentMordent:{x_min:-402.890625,x_max:401.53125,ha:410,o:"m -10 273 b -4 274 -9 273 -6 274 b 16 262 4 274 12 269 b 17 158 17 259 17 259 l 17 56 l 62 112 b 117 174 110 172 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b 21 -6 27 0 24 -2 l 17 -12 l 17 -147 b 17 -210 17 -173 17 -194 b 10 -292 17 -297 16 -287 b -2 -299 6 -297 2 -299 b -21 -287 -10 -299 -19 -295 b -24 -174 -23 -284 -23 -284 l -24 -63 l -66 -117 b -121 -176 -110 -170 -114 -176 b -125 -176 -122 -176 -123 -176 b -296 -12 -134 -174 -125 -184 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 170 -398 -43 -231 165 b -212 174 -221 173 -216 174 b -202 173 -208 174 -205 174 b -39 11 -200 172 -151 122 l -28 -1 l -25 1 l -24 4 l -24 130 b -23 260 -24 256 -24 258 b -10 273 -20 266 -16 270 "},ornamentShortTrill:{x_min:-402.890625,x_max:401.53125,ha:410,o:"m -219 173 b -213 174 -217 174 -215 174 b -202 173 -209 174 -205 173 b -114 86 -200 172 -179 151 b -28 0 -66 37 -28 0 b 40 84 -28 0 2 37 b 117 174 111 173 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b -42 -86 27 0 -4 -38 b -118 -174 -112 -174 -111 -173 b -123 -176 -119 -176 -121 -176 b -133 -174 -126 -176 -130 -174 b -296 -12 -136 -173 -172 -137 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 172 -398 -43 -228 167 b -219 173 -223 172 -220 173 "},ornamentTremblement:{x_min:-571.671875,x_max:570.3125,ha:582,o:"m -386 173 b -381 174 -385 174 -383 174 b -370 173 -377 174 -372 173 b -281 86 -367 172 -347 151 b -196 0 -235 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 277 172 b 289 174 285 174 288 174 b 299 173 294 174 298 173 b 462 11 303 172 338 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 374 -176 371 -176 b 280 -87 367 -173 345 -152 b 194 0 234 -38 194 0 b 125 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 43 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -141 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -289 -176 b -300 -174 -295 -176 -299 -174 b -464 -12 -304 -173 -340 -137 l -476 0 l -504 -34 b -543 -77 -534 -73 -537 -76 b -549 -79 -545 -79 -547 -79 b -571 -58 -562 -79 -571 -69 b -568 -49 -571 -55 -570 -52 b -392 172 -566 -43 -396 167 b -386 173 -390 172 -387 173 "},ornamentPrecompAppoggTrill:{x_min:-571.671875,x_max:570.3125,ha:582,o:"m -559 351 b -551 352 -556 352 -553 352 b -530 338 -543 352 -533 348 b -529 169 -530 337 -529 291 l -529 1 l -507 27 l -441 112 b -382 174 -394 169 -390 174 b -378 174 -381 174 -379 174 b -281 86 -370 174 -375 179 b -196 0 -234 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 279 172 b 289 174 285 174 288 174 b 300 173 294 174 298 173 b 462 11 303 172 340 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 375 -176 371 -176 b 280 -87 367 -173 347 -152 b 194 0 234 -38 194 0 b 126 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 44 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -140 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -288 -176 b -300 -174 -294 -176 -298 -174 b -464 -11 -303 -173 -374 -102 l -476 0 l -506 -37 b -539 -76 -528 -65 -537 -74 b -551 -80 -543 -79 -547 -80 b -570 -68 -558 -80 -566 -76 l -571 -65 l -571 136 b -570 340 -571 331 -571 337 b -559 351 -568 344 -564 348 "},ornamentPrecompSlideTrillDAnglebert:{x_min:-590.71875,x_max:589.359375,ha:601,o:"m -367 173 b -362 174 -366 174 -364 174 b -351 173 -357 174 -353 173 b -262 86 -348 172 -328 151 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 72 86 -13 172 6 151 b 157 0 119 37 157 0 b 227 84 159 0 189 37 b 303 174 298 173 296 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 144 -86 213 0 182 -38 b 68 -174 73 -174 74 -173 b 62 -176 66 -176 65 -176 b 53 -174 59 -176 55 -174 b -35 -87 50 -173 29 -152 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -367 173 -375 169 -372 172 "},ornamentPrecompSlideTrillBach:{x_min:-590.71875,x_max:589.359375,ha:601,o:"m 175 273 b 182 274 178 273 181 274 b 202 262 190 274 198 269 b 204 158 204 259 204 259 l 204 56 l 250 112 b 303 174 296 172 298 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 208 -6 213 0 210 -2 l 204 -12 l 204 -147 b 204 -210 204 -173 204 -194 b 198 -292 204 -297 204 -287 b 183 -299 194 -297 189 -299 b 164 -287 175 -299 167 -295 b 163 -174 163 -284 163 -284 l 161 -63 l 119 -117 b 65 -176 76 -170 73 -176 b 61 -176 63 -176 62 -176 b -35 -87 51 -174 57 -180 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -363 174 -374 170 -371 174 b -359 174 -362 174 -360 174 b -262 86 -351 174 -356 179 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 147 11 -13 172 35 123 l 157 -1 l 160 1 l 163 4 l 163 130 b 164 260 163 256 163 258 b 175 273 166 266 170 270 "},ornamentPrecompTrillSuffixDandrieu:{x_min:-590.71875,x_max:589.359375,ha:601,o:"m 544 335 b 553 337 548 337 551 337 b 575 313 563 337 570 330 b 589 226 583 285 589 256 b 517 8 589 152 563 76 b 464 -58 507 -4 503 -9 l 401 -136 b 362 -176 372 -172 370 -176 b 357 -176 360 -176 359 -176 b 261 -87 349 -174 355 -180 b 175 0 215 -38 175 0 b 106 -86 175 0 144 -38 b 29 -174 35 -174 36 -173 b 24 -176 28 -176 27 -176 b 14 -174 21 -176 17 -174 b -73 -87 12 -173 -8 -152 b -159 0 -121 -38 -159 0 b -228 -86 -160 0 -190 -38 b -304 -174 -299 -174 -298 -173 b -310 -176 -306 -176 -308 -176 b -319 -174 -314 -176 -318 -174 b -483 -12 -323 -173 -359 -137 l -495 0 l -524 -34 b -562 -77 -553 -73 -556 -76 b -568 -79 -564 -79 -566 -79 b -590 -58 -581 -79 -590 -69 b -588 -49 -590 -55 -589 -52 b -412 170 -585 -43 -417 165 b -398 174 -408 173 -402 174 b -389 173 -394 174 -392 174 b -300 86 -387 172 -366 151 b -215 -1 -254 37 -215 -1 b -145 84 -215 -1 -183 37 b -69 173 -74 173 -76 172 b -63 174 -68 174 -66 174 b -54 173 -61 174 -57 173 b 34 86 -51 172 -31 151 b 119 -1 81 37 119 -1 b 189 84 121 -1 151 37 b 265 173 259 173 258 172 b 270 174 266 174 269 174 b 280 173 274 174 279 173 b 370 84 283 172 303 151 b 455 -1 416 37 455 -1 l 455 -1 b 476 24 455 -1 469 15 b 547 226 522 87 547 159 b 534 302 547 252 543 278 b 532 317 533 308 532 313 b 544 335 532 326 536 333 "},ornamentPrecompDoubleCadenceUpperPrefix:{x_min:-597.53125,x_max:596.171875,ha:608,o:"m -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 80 86 -5 172 13 151 b 166 -1 127 37 166 -1 b 235 84 166 -1 197 37 b 311 173 306 173 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 152 -86 221 -1 190 -38 b 76 -176 81 -174 83 -173 b 70 -176 74 -176 73 -176 b 61 -174 66 -176 62 -174 b -27 -87 58 -173 38 -152 b -114 -1 -74 -38 -112 -1 b -182 -86 -114 -1 -145 -38 b -258 -176 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 "},ornamentPrecompDoubleCadenceUpperPrefixTurn:{x_min:-597.53125,x_max:596.171875,ha:608,o:"m -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 155 11 -5 172 43 123 l 166 -1 l 168 1 l 170 4 l 170 130 b 171 260 170 256 170 258 b 191 274 175 269 183 274 b 205 267 196 274 201 272 b 212 158 212 262 210 273 l 212 56 l 257 112 b 311 173 304 172 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 216 -6 221 -1 219 -2 l 212 -12 l 212 -147 b 212 -210 212 -173 212 -194 b 205 -292 212 -297 210 -287 b 191 -299 201 -297 196 -299 b 172 -287 183 -299 175 -295 b 170 -174 171 -284 171 -284 l 170 -63 l 127 -117 b 73 -176 84 -170 80 -176 b 68 -176 72 -176 70 -176 b -27 -87 59 -174 65 -180 b -114 0 -74 -38 -112 0 b -182 -86 -114 0 -145 -38 b -258 -174 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 "},ornamentPrecompTrillLowerSuffix:{x_min:-597.53125,x_max:596.171875,ha:608,o:"m -413 173 b -408 174 -412 174 -409 174 b -397 173 -404 174 -400 173 b -308 86 -394 172 -374 151 b -223 0 -261 37 -223 0 b -153 84 -223 0 -191 37 b -77 174 -83 173 -84 172 b -72 174 -76 174 -74 174 b -62 173 -68 174 -63 173 b 25 86 -59 172 -39 151 b 112 0 73 37 111 0 b 181 84 112 0 144 37 b 257 174 251 173 251 172 b 262 174 258 174 261 174 b 273 173 266 174 270 173 b 436 9 276 172 347 101 l 447 -1 l 477 36 b 522 79 511 79 513 79 l 522 79 b 552 51 533 79 539 73 b 596 -112 582 6 596 -51 b 567 -262 596 -161 586 -213 b 539 -322 558 -287 544 -316 b 524 -327 534 -326 529 -327 b 504 -315 515 -327 507 -323 b 503 -308 503 -312 503 -309 b 511 -285 503 -302 504 -297 b 555 -113 540 -227 555 -169 b 544 -34 555 -86 551 -59 b 522 19 540 -16 530 8 l 521 22 l 481 -26 l 405 -122 b 353 -176 366 -172 362 -176 b 349 -176 352 -176 351 -176 b 253 -87 341 -176 347 -180 b 167 0 206 -38 167 0 b 99 -86 167 0 136 -38 b 21 -174 27 -174 28 -173 b 17 -176 20 -176 19 -176 b 6 -174 13 -176 9 -174 b -81 -87 4 -173 -14 -152 b -167 0 -129 -38 -167 0 b -236 -86 -167 0 -198 -38 b -313 -174 -307 -174 -306 -173 b -318 -176 -314 -176 -315 -176 b -328 -174 -321 -176 -325 -174 b -491 -12 -330 -173 -367 -137 l -503 0 l -530 -34 b -570 -77 -562 -73 -564 -76 b -577 -79 -571 -79 -574 -79 b -597 -58 -588 -79 -597 -69 b -596 -49 -597 -55 -597 -52 b -417 172 -593 -43 -423 167 b -413 173 -417 172 -415 173 "},stringsDownBow:{x_min:-228.671875,x_max:227.3125,ha:232,o:"m -217 487 l -213 488 l 0 488 l 212 488 l 216 487 b 225 476 220 484 224 480 l 227 473 l 227 244 l 227 15 l 225 12 b 206 0 223 4 215 0 b 197 1 204 0 200 0 b 187 12 193 4 189 6 l 186 15 l 186 138 l 186 262 l -1 262 l -187 262 l -187 138 l -187 15 l -189 12 b -208 0 -193 4 -200 0 b -227 12 -216 0 -223 4 l -228 15 l -228 244 l -228 473 l -227 476 b -217 487 -225 480 -221 484 "},stringsUpBow:{x_min:-149.71875,x_max:148.359375,ha:151,o:"m -137 381 b -130 383 -134 383 -133 383 b -111 371 -122 383 -114 378 b -55 224 -110 370 -85 305 b 0 80 -25 145 -1 80 b 54 224 0 80 24 145 b 112 377 114 384 110 373 b 127 384 118 381 122 384 b 148 362 138 384 148 374 l 148 356 l 83 183 b 16 9 47 88 17 11 b -1 0 12 2 5 0 b -14 5 -5 0 -10 1 b -84 183 -19 9 -13 -6 l -149 356 l -149 362 b -137 381 -149 371 -145 378 "},stringsHarmonic:{x_min:-122.5,x_max:121.140625,ha:124,o:"m -16 145 b 0 147 -10 147 -5 147 b 121 -1 66 147 121 77 b 114 -49 121 -16 118 -33 b -1 -148 95 -112 47 -148 b -85 -106 -31 -148 -61 -134 b -122 -1 -110 -76 -122 -38 b -16 145 -122 68 -81 134 m 12 111 b 0 113 8 113 4 113 b -68 22 -29 113 -61 73 b -70 0 -69 15 -70 6 b -13 -113 -70 -49 -47 -98 b -1 -115 -9 -115 -5 -115 b 63 -40 24 -115 53 -83 b 68 -1 66 -27 68 -15 b 12 111 68 48 46 97 "},pluckedSnapPizzicatoAbove:{x_min:-149.71875,x_max:148.359375,ha:151,o:"m -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 "},pluckedSnapPizzicatoBelow:{x_min:-149.71875,x_max:148.359375,ha:151,o:"m -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 "},pluckedLeftHandPizzicato:{x_min:0,x_max:319.859375,ha:326,o:"m 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 "},keyboardPedalPed:{x_min:-1.359375,x_max:1064.390625,ha:1086,o:"m 296 692 b 314 694 302 694 307 694 b 386 685 337 694 366 689 b 548 498 480 660 548 580 b 548 481 548 492 548 487 b 455 395 541 426 499 395 b 370 462 420 395 383 417 b 362 496 364 477 362 488 b 377 514 362 509 367 514 b 393 501 386 514 390 510 b 432 474 397 484 413 474 b 470 487 445 474 458 478 b 491 530 484 496 491 510 b 490 544 491 534 491 539 b 333 660 479 606 411 657 l 323 662 l 315 646 b 269 524 285 591 269 556 b 321 431 269 492 287 466 b 349 395 338 413 343 408 b 363 342 359 378 363 362 b 359 312 363 333 362 322 b 285 158 348 266 318 206 b 281 152 283 155 281 152 b 281 152 281 152 281 152 b 287 154 283 152 284 152 b 318 155 298 154 308 155 b 461 98 371 155 419 136 l 464 97 l 483 112 b 503 129 494 120 503 127 b 504 130 503 129 504 129 b 503 138 504 131 503 134 b 500 180 500 152 500 166 b 553 326 500 238 518 288 b 604 366 560 331 592 358 b 649 381 617 376 632 381 b 696 362 665 381 681 374 b 724 302 714 347 724 324 b 695 238 724 278 714 255 b 660 210 691 234 662 212 b 579 148 658 209 582 151 b 579 148 579 148 579 148 b 596 106 579 144 589 119 b 622 77 604 88 609 83 b 657 69 632 72 645 69 b 748 112 688 69 721 84 b 755 123 754 117 755 120 b 755 127 755 124 755 126 b 751 165 752 137 751 151 b 758 219 751 183 754 202 b 894 387 774 290 820 347 b 896 390 896 388 896 388 b 891 398 896 391 895 392 b 622 560 827 477 730 535 b 600 580 605 564 600 569 b 617 596 600 591 607 596 b 628 595 622 596 624 596 b 1057 248 846 552 1020 412 b 1064 191 1061 229 1064 209 b 922 0 1064 94 1005 9 b 902 -1 916 -1 909 -1 b 774 76 847 -1 800 26 b 769 83 770 81 770 83 b 769 81 769 83 769 83 b 627 -1 733 29 677 -1 b 548 27 597 -1 570 8 b 515 88 537 37 525 61 l 513 95 l 510 93 l 453 45 b 390 0 396 0 396 0 b 390 0 390 0 390 0 b 374 15 381 0 377 4 b 268 105 359 69 314 105 b 250 104 262 105 257 105 l 243 102 l 234 90 b 155 1 201 49 159 2 b 147 -1 152 0 149 -1 b 130 15 138 -1 130 6 b 132 20 130 18 132 19 b 136 31 133 22 134 27 b 220 131 149 74 178 109 b 231 137 225 134 230 136 b 302 278 280 202 302 244 b 265 335 302 299 295 309 b 209 442 234 363 213 402 b 209 455 209 446 209 451 b 279 648 209 502 232 564 l 285 659 l 283 659 b 176 627 238 653 210 645 b 57 477 111 594 66 538 b 55 459 55 471 55 464 b 72 409 55 437 61 415 b 93 403 78 405 87 403 b 152 467 123 403 151 431 b 168 488 153 483 157 488 b 185 462 181 488 185 483 l 185 460 b 137 344 183 409 168 369 b 78 322 119 328 98 322 b 13 360 50 322 25 335 b -1 426 4 380 -1 402 b 89 610 -1 488 32 559 b 296 692 147 659 210 685 m 926 348 b 921 353 924 351 922 353 b 914 348 920 353 918 351 b 823 167 857 306 823 237 b 828 124 823 154 826 138 b 890 31 837 79 862 40 b 896 31 892 31 894 31 b 956 104 916 31 940 59 b 970 191 965 129 970 159 b 966 241 970 208 969 224 b 926 348 959 277 945 313 m 627 326 b 619 326 624 326 622 326 b 598 316 611 326 604 323 b 568 215 579 288 568 255 b 568 208 568 213 568 210 b 571 183 570 195 570 184 l 571 183 b 594 201 571 183 582 191 l 634 231 b 660 259 653 247 656 248 b 664 278 662 266 664 272 b 627 326 664 299 649 320 "},keyboardPedalUp:{x_min:-1.359375,x_max:592.078125,ha:604,o:"m 280 692 b 295 694 283 692 289 694 b 310 692 300 694 307 692 b 357 630 340 684 357 657 b 336 580 357 612 351 594 b 311 538 321 566 311 549 b 352 492 311 512 330 492 b 366 495 357 492 362 492 b 397 553 390 503 397 517 b 415 603 397 576 402 591 b 460 623 427 617 443 623 b 509 599 479 623 498 614 b 522 559 518 587 522 573 b 494 506 522 538 513 519 b 451 495 481 498 473 496 b 415 488 432 495 426 494 b 394 449 404 483 394 464 b 394 448 394 448 394 448 l 394 440 l 397 433 b 428 409 404 420 413 413 b 438 408 431 408 435 408 b 479 431 450 408 462 415 b 528 455 495 448 510 455 b 548 452 534 455 541 453 b 592 391 577 442 592 416 b 549 331 592 365 577 340 b 528 327 541 328 534 327 b 479 351 510 327 495 335 b 438 374 464 367 450 374 b 417 369 431 374 424 373 b 394 333 402 360 394 348 b 400 312 394 326 396 319 b 451 287 408 294 420 288 b 513 258 484 285 499 278 b 522 223 519 247 522 234 b 461 159 522 190 496 159 b 449 161 457 159 453 159 b 397 229 416 167 397 191 b 366 288 397 265 390 278 b 352 290 362 290 357 290 b 315 262 336 290 321 280 b 311 245 313 256 311 251 b 334 204 311 233 318 220 b 355 170 348 190 351 184 b 357 152 356 166 357 159 b 355 136 357 147 356 140 b 295 88 345 104 321 88 b 232 152 264 88 232 112 b 255 204 232 174 238 186 b 279 244 273 222 279 231 l 279 245 b 238 290 279 270 259 290 b 224 288 234 290 228 290 b 193 229 200 278 193 265 b 141 161 193 191 174 167 b 129 159 137 159 133 159 b 68 223 93 159 68 190 b 77 258 68 234 70 247 b 138 287 91 278 106 285 b 185 302 166 287 175 291 b 196 333 193 312 196 323 b 174 369 196 347 187 360 b 152 374 166 373 159 374 b 111 351 140 374 126 367 b 62 327 95 335 80 327 b 51 328 58 327 54 327 b -1 391 16 334 -1 363 b 53 455 -1 420 17 449 b 62 455 57 455 59 455 b 111 431 80 455 95 448 b 152 408 127 415 140 408 b 161 409 155 408 159 408 b 193 433 176 413 186 420 l 196 440 l 196 448 b 196 451 196 449 196 449 b 190 471 196 459 194 463 b 137 495 182 489 167 495 l 134 495 l 134 495 b 68 560 95 495 68 521 b 129 623 68 596 95 623 b 144 621 134 623 138 623 b 193 553 175 614 193 589 b 224 495 193 517 200 503 b 238 492 228 492 234 492 b 279 538 259 492 279 512 b 254 580 279 549 269 566 b 232 630 239 594 232 612 b 280 692 232 657 250 684 m 307 456 b 295 458 303 458 299 458 b 230 391 258 458 230 426 b 236 360 230 381 231 371 b 295 324 249 337 272 324 b 353 360 318 324 341 337 b 360 391 357 370 360 381 b 307 456 360 421 340 451 "},pictChokeCymbal:{x_min:0,x_max:227.3125,ha:232,o:"m 91 213 b 100 215 93 215 96 215 b 227 58 167 215 224 144 b 227 52 227 56 227 54 b 61 -201 227 -43 164 -138 b 29 -216 44 -212 36 -216 b 23 -210 27 -216 24 -213 b 21 -205 21 -208 21 -206 b 34 -192 21 -201 25 -197 b 122 -55 89 -161 122 -106 b 104 6 122 -33 117 -12 l 103 9 l 96 9 b 4 79 57 9 17 38 b 0 112 1 90 0 101 b 91 213 0 163 36 209 "},wiggleArpeggiatoUp:{x_min:58.53125,x_max:228.671875,ha:294,o:"m 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 "},arrowheadBlackUp:{x_min:-10.890625,x_max:299.4375,ha:294,o:"m 136 460 b 142 462 137 462 140 462 b 166 449 152 462 161 456 b 171 428 168 446 168 445 b 288 131 194 322 238 209 b 298 115 295 120 296 117 b 299 106 298 112 299 109 b 273 81 299 91 287 81 b 255 86 268 81 261 83 b 155 116 225 104 183 116 l 152 116 l 149 108 b 141 83 148 102 144 91 b 134 48 137 69 134 58 b 149 9 134 34 140 24 b 153 -1 152 5 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 147 -11 b 122 2 138 -11 133 -6 b 95 61 104 20 95 38 b 107 108 95 74 99 90 b 108 113 107 111 108 112 b 107 113 108 113 108 113 b 102 113 106 113 104 113 b 31 86 76 108 53 98 b 14 80 24 81 20 80 b -10 106 0 80 -10 91 b 0 131 -10 115 -9 116 b 115 430 49 209 91 317 b 136 460 119 451 123 456 "},arrowheadBlackDown:{x_min:-10.890625,x_max:298.078125,ha:294,o:"m 138 473 b 142 474 140 473 141 474 b 164 459 148 474 153 470 b 191 402 183 442 191 423 b 181 353 191 388 187 371 b 178 349 179 352 178 349 b 179 348 178 348 179 348 b 185 349 181 348 182 348 b 255 376 210 355 234 363 b 272 381 264 381 266 381 b 298 355 287 381 298 370 b 288 330 298 348 298 345 b 171 34 238 254 194 141 b 166 13 168 16 168 16 b 144 1 161 5 152 1 b 121 15 134 1 125 5 b 115 33 119 18 117 24 b 0 330 91 145 49 252 b -10 355 -9 345 -10 348 b 13 381 -10 371 0 381 b 31 376 19 381 25 380 b 132 345 61 358 103 345 l 136 345 l 137 355 b 145 378 138 359 142 370 b 152 415 149 394 152 405 b 137 452 152 427 148 438 b 133 464 134 458 133 460 b 138 473 133 467 134 470 "},vexAccidentalMicrotonal1:{x_min:-171.5,x_max:483.1875,ha:493,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 495 20 616 20 616 b 20 373 20 427 20 373 b 115 410 20 373 63 390 l 210 448 l 210 531 b 212 620 210 614 210 616 b 231 632 215 628 223 632 b 246 627 236 632 242 631 b 251 541 251 620 251 628 l 251 463 l 315 489 b 387 514 368 509 381 514 b 393 513 390 514 392 514 b 406 494 402 510 406 502 b 397 476 406 487 404 480 b 323 446 396 474 363 462 l 251 417 l 251 283 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -19 -217 -9 -229 -16 -224 l -20 -215 l -21 48 l -21 310 l -83 287 b -152 262 -133 266 -145 262 b -157 263 -153 262 -155 262 b -171 283 -166 266 -171 274 b -161 301 -171 290 -167 297 b -91 328 -160 302 -129 315 l -21 356 l -21 487 l -20 617 l -19 621 b -8 631 -17 626 -12 630 m 210 288 b 210 401 210 351 210 401 b 114 365 209 401 167 384 l 20 327 l 20 238 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 180 164 199 187 192 l 209 177 b 209 177 209 177 209 177 b 210 288 210 177 210 199 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 "},vexAccidentalMicrotonal2:{x_min:-1.359375,x_max:386.5625,ha:394,o:"m 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 "},vexWiggleArpeggioUp:{x_min:58.53125,x_max:228.671875,ha:294,o:"m 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 "},vexNoteHeadMutedBreve:{x_min:0,x_max:370.21875,ha:378,o:"m 0 0 l 0 277 l 61 277 l 122 277 l 122 0 l 122 -278 l 61 -278 l 0 -278 l 0 0 m 246 -1 l 246 277 l 308 277 l 370 277 l 370 -1 l 370 -278 l 308 -278 l 246 -278 l 246 -1 "}},cssFontWeight:"normal",ascender:1903,underlinePosition:-125,cssFontStyle:"normal",boundingBox:{yMin:-2065.375,xMin:-695.53125,yMax:1901.578125,xMax:1159.671875},resolution:1e3,original_font_information:{postscript_name:"Gonville-18",version_string:"Version 0.1.8904 ",vendor_url:"",full_font_name:"Gonville-18",font_family_name:"Gonville-18",copyright:"No copyright is claimed on this font file.",description:"",trademark:"",designer:"",designer_url:"",unique_font_identifier:"FontForge 2.0 : Gonville-18 : 17-3-2010",license_url:"",license_description:"",manufacturer_name:"",font_sub_family_name:"18"},descender:-2066,fontFamily:"Gonville-18",lineHeight:4093,underlineThickness:50},Bi={name:"Gonville",smufl:!1,stave:{padding:12,endPaddingMax:10,endPaddingMin:5,unalignedNotePadding:10},accidental:{noteheadAccidentalPadding:1,leftPadding:2,accidentalSpacing:3},clef:{default:{point:40,width:26},small:{point:32,width:20},annotations:{"8va":{smuflCode:"timeSig8",default:{point:20,treble:{line:-1.2,shiftX:11}},small:{point:18,treble:{line:-.4,shiftX:8}}},"8vb":{smuflCode:"timeSig8",default:{point:20,treble:{line:6.3,shiftX:10},bass:{line:4,shiftX:1}},small:{point:18,treble:{line:5.8,shiftX:6},bass:{line:3.5,shiftX:.5}}}},lineCount:{8:{point:55,shiftY:14},7:{point:47,shiftY:8},6:{point:40,shiftY:1},5:{point:30,shiftY:-6},4:{point:23,shiftY:-12}}},parenthesis:{default:{point:39,width:7},gracenote:{point:23.4,width:3}},pedalMarking:{up:{point:40},down:{point:40}},digits:{point:40,tupletPoint:28},tremolo:{default:{point:25,spacing:4,offsetYStemUp:-7,offsetYStemDown:7,offsetXStemUp:9,offsetXStemDown:-.5},grace:{point:15,spacing:4,offsetYStemUp:-7,offsetYStemDown:7,offsetXStemUp:6.5,offsetXStemDown:-.5}},staveRepetition:{symbolText:{offsetX:12,offsetY:25,spacing:5},coda:{offsetY:25},segno:{offsetY:0}},stem:{heightAdjustmentForFlag:-3,noteHead:{noteheadTriangleUpHalf:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpBlack:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpWhole:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadXHalf:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXBlack:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXWhole:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadHalf:{offsetYBaseStemUp:-1.5,offsetYBaseStemDown:1.5},noteheadBlack:{offsetYBaseStemUp:-1.5,offsetYBaseStemDown:1.5},noteheadSquareWhite:{offsetYBaseStemDown:-5,offsetYBaseStemUp:5}}},glyphs:{flag:{shiftX:-.08,flag8thDown:{shiftX:-.16},flag16thDown:{shiftX:-.16},flag32ndDown:{shiftX:-.16,shiftY:9},flag64thDown:{shiftX:-.16,shiftY:13},flag128thDown:{shiftX:-.16,shiftY:22},flag32ndUp:{shiftY:-9},flag64thUp:{shiftY:-13},flag128thUp:{shiftY:-22}},stringNumber:{verticalPadding:8,stemPadding:2,leftPadding:5,rightPadding:6},textNote:{point:40,default:{},ornamentTrill:{shiftX:-5,shiftY:4}},noteHead:{minPadding:2,custom:{noteheadCircleXStemUp:{shiftX:-1.5},noteheadXWholeStemUp:{shiftX:-5},noteheadTriangleUpWholeStemUp:{shiftX:-6}}},chordSymbol:{global:{superscriptOffset:-400,subscriptOffset:300,kerningOffset:-250,lowerKerningText:["D","F","P","T","V","Y"],upperKerningText:["A","L"],spacing:100,superSubRatio:.66},csymDiminished:{scale:.8,leftSideBearing:0,advanceWidth:506,yOffset:0},csymHalfDiminished:{scale:.8,leftSideBearing:-32,advanceWidth:506,yOffset:0},csymAugmented:{scale:1,leftSideBearing:0,advanceWidth:530,yOffset:0},csymParensLeftTall:{scale:.8,leftSideBearing:0,advanceWidth:155,yOffset:250},csymParensRightTall:{scale:.8,leftSideBearing:-40,advanceWidth:189,yOffset:250},csymBracketLeftTall:{scale:.8,leftSideBearing:0,advanceWidth:328,yOffset:0},csymBracketRightTall:{scale:.8,leftSideBearing:1,advanceWidth:600,yOffset:0},csymParensLeftVeryTall:{scale:.9,leftSideBearing:0,advanceWidth:121,yOffset:350},csymParensRightVeryTall:{scale:.9,leftSideBearing:50,advanceWidth:111,yOffset:350},csymDiagonalArrangementSlash:{scale:.6,leftSideBearing:-1,advanceWidth:990,yOffset:0},csymMinor:{scale:.8,leftSideBearing:0,advanceWidth:482,yOffset:0},csymMajorSeventh:{scale:.9,leftSideBearing:200,yOffset:0,advanceWidth:600},accidentalSharp:{scale:.75,leftSideBearing:40,advanceWidth:250,yOffset:-402},accidentalFlat:{scale:.95,leftSideBearing:-50,advanceWidth:208,yOffset:-184}},jazzOrnaments:{brassScoop:{scale:1,xOffset:-12,yOffset:0,stemUpYOffset:0,reportedWidth:15},brassDoitMedium:{scale:1,xOffset:16,yOffset:0,stemUpYOffset:0,reportedWidth:22},brassFallLipShort:{scale:1,xOffset:17,yOffset:0,stemUpYOffset:0,reportedWidth:15},brassLiftMedium:{scale:1,xOffset:16,yOffset:5,stemUpYOffset:0,reportedWidth:5},brassFallRoughMedium:{scale:1,xOffset:16,yOffset:28,stemUpYOffset:0,reportedWidth:5},brassBend:{scale:1,xOffset:2,yOffset:-8,stemUpYOffset:24,reportedWidth:5},brassMuteClosed:{scale:1,xOffset:3,yOffset:-9,stemUpYOffset:24,reportedWidth:5},brassMuteOpen:{scale:1,xOffset:3,yOffset:-7,stemUpYOffset:25,reportedWidth:5},brassFlip:{scale:1,xOffset:10,yOffset:-4,stemUpYOffset:7,reportedWidth:5},brassJazzTurn:{scale:1,xOffset:3,yOffset:-4,stemUpYOffset:10,reportedWidth:28},brassSmear:{scale:1,xOffset:10,yOffset:-4,stemUpYOffset:9,reportedWidth:5}},tremolo:{default:{shiftY:-10},grace:{shiftY:-5}},tuplet:{noteHeadOffset:20,stemOffset:10,bottomLine:4,topModifierOffset:15}}};const Ri={spacing:50,glyphs:{" ":{x_min:0,x_max:250,y_min:0,y_max:500,ha:500,leftSideBearing:0,advanceWidth:250},0:{x_min:33,x_max:534,y_min:-13,y_max:751,ha:764,leftSideBearing:33,advanceWidth:570},1:{x_min:48,x_max:235,y_min:-17,y_max:734,ha:751,leftSideBearing:48,advanceWidth:286},2:{x_min:56,x_max:571,y_min:-19,y_max:741,ha:760,leftSideBearing:56,advanceWidth:626},3:{x_min:50,x_max:528,y_min:-7,y_max:731,ha:738,leftSideBearing:50,advanceWidth:589},4:{x_min:38,x_max:564,y_min:-13,y_max:743,ha:756,leftSideBearing:38,advanceWidth:614},5:{x_min:42,x_max:601,y_min:-34,y_max:743,ha:777,leftSideBearing:42,advanceWidth:648},6:{x_min:47,x_max:606,y_min:-16,y_max:743,ha:759,leftSideBearing:47,advanceWidth:667},7:{x_min:47,x_max:567,y_min:5,y_max:739,ha:734,leftSideBearing:0,advanceWidth:615},8:{x_min:40,x_max:541,y_min:-15,y_max:752,ha:767,leftSideBearing:40,advanceWidth:585},9:{x_min:40,x_max:537,y_min:-52,y_max:736,ha:788,leftSideBearing:40,advanceWidth:592},"!":{x_min:49,x_max:180,y_min:-7,y_max:761,ha:768,leftSideBearing:49,advanceWidth:230},'"':{x_min:39,x_max:304,y_min:596,y_max:804,ha:208,leftSideBearing:39,advanceWidth:353},"#":{x_min:33,x_max:599,y_min:-8,y_max:765,ha:773,leftSideBearing:33,advanceWidth:648},$:{x_min:53,x_max:495,y_min:-111,y_max:823,ha:934,leftSideBearing:53,advanceWidth:560},"%":{x_min:35,x_max:656,y_min:-128,y_max:808,ha:936,leftSideBearing:35,advanceWidth:711},"&":{x_min:53,x_max:441,y_min:-3,y_max:753,ha:756,leftSideBearing:53,advanceWidth:500},"'":{x_min:43,x_max:161,y_min:590,y_max:811,ha:221,leftSideBearing:43,advanceWidth:217},"(":{x_min:41,x_max:311,y_min:-36,y_max:845,ha:881,leftSideBearing:41,advanceWidth:308},")":{x_min:-8,x_max:257,y_min:-21,y_max:852,ha:873,leftSideBearing:-8,advanceWidth:280},"*":{x_min:59,x_max:539,y_min:175,y_max:589,ha:414,leftSideBearing:59,advanceWidth:601},"+":{x_min:33,x_max:361,y_min:180,y_max:587,ha:407,leftSideBearing:33,advanceWidth:400},",":{x_min:15,x_max:176,y_min:-129,y_max:92,ha:221,leftSideBearing:15,advanceWidth:205},"-":{x_min:40,x_max:380,y_min:317,y_max:452,ha:135,leftSideBearing:40,advanceWidth:422},".":{x_min:48,x_max:185,y_min:-56,y_max:84,ha:140,leftSideBearing:48,advanceWidth:227},"/":{x_min:-58,x_max:654,y_min:-122,y_max:844,ha:966,leftSideBearing:-58,advanceWidth:626},":":{x_min:65,x_max:225,y_min:97,y_max:536,ha:439,leftSideBearing:65,advanceWidth:302},";":{x_min:13,x_max:295,y_min:-139,y_max:536,ha:675,leftSideBearing:13,advanceWidth:334},"<":{x_min:28,x_max:438,y_min:-1,y_max:607,ha:608,leftSideBearing:28,advanceWidth:475},"=":{x_min:40,x_max:383,y_min:199.9598640852289,y_max:541,ha:341.0401359147711,leftSideBearing:40,advanceWidth:422},">":{x_min:35,x_max:421,y_min:28,y_max:632,ha:604,leftSideBearing:35,advanceWidth:466},"?":{x_min:45,x_max:548,y_min:-17,y_max:767,ha:784,leftSideBearing:45,advanceWidth:592},"@":{x_min:51,x_max:730,y_min:-78,y_max:753,ha:831,leftSideBearing:51,advanceWidth:781},A:{x_min:37,x_max:554,y_min:-4,y_max:746,ha:750,leftSideBearing:37,advanceWidth:617},B:{x_min:37,x_max:532,y_min:3,y_max:783,ha:780,leftSideBearing:37,advanceWidth:579},C:{x_min:37,x_max:583,y_min:-3,y_max:775,ha:778,leftSideBearing:37,advanceWidth:623},D:{x_min:50,x_max:530,y_min:-15,y_max:749,ha:764,leftSideBearing:50,advanceWidth:579},E:{x_min:45,x_max:531,y_min:-1,y_max:743,ha:744,leftSideBearing:45,advanceWidth:585},F:{x_min:45,x_max:459,y_min:23,y_max:727,ha:704,leftSideBearing:45,advanceWidth:510},G:{x_min:31,x_max:577,y_min:-8,y_max:733,ha:741,leftSideBearing:31,advanceWidth:611},H:{x_min:37,x_max:493,y_min:-22,y_max:758,ha:780,leftSideBearing:37,advanceWidth:535},I:{x_min:47,x_max:501,y_min:-3,y_max:731,ha:734,leftSideBearing:47,advanceWidth:541},J:{x_min:33,x_max:531,y_min:-23,y_max:725,ha:748,leftSideBearing:33,advanceWidth:573},K:{x_min:43,x_max:505,y_min:-10,y_max:740,ha:750,leftSideBearing:43,advanceWidth:560},L:{x_min:49,x_max:457,y_min:-2,y_max:746,ha:748,leftSideBearing:49,advanceWidth:510},M:{x_min:35,x_max:699,y_min:1,y_max:744,ha:743,leftSideBearing:35,advanceWidth:743},N:{x_min:34,x_max:533,y_min:-17,y_max:761,ha:778,leftSideBearing:34,advanceWidth:579},O:{x_min:41,x_max:608,y_min:-5,y_max:735,ha:740,leftSideBearing:41,advanceWidth:667},P:{x_min:53,x_max:451,y_min:-18,y_max:735,ha:753,leftSideBearing:53,advanceWidth:497},Q:{x_min:40,x_max:599,y_min:-67,y_max:744,ha:811,leftSideBearing:40,advanceWidth:648},R:{x_min:39,x_max:487,y_min:16,y_max:735,ha:719,leftSideBearing:39,advanceWidth:535},S:{x_min:35,x_max:552,y_min:-47,y_max:708,ha:755,leftSideBearing:35,advanceWidth:604},T:{x_min:26,x_max:656,y_min:-13,y_max:718,ha:731,leftSideBearing:26,advanceWidth:705},U:{x_min:41,x_max:518,y_min:-20,y_max:748,ha:768,leftSideBearing:41,advanceWidth:567},V:{x_min:47,x_max:509,y_min:-26,y_max:744,ha:770,leftSideBearing:47,advanceWidth:567},W:{x_min:44,x_max:789,y_min:-35,y_max:720,ha:755,leftSideBearing:44,advanceWidth:833},X:{x_min:63,x_max:635,y_min:-10,y_max:745,ha:755,leftSideBearing:63,advanceWidth:680},Y:{x_min:43,x_max:503,y_min:-21,y_max:734,ha:755,leftSideBearing:43,advanceWidth:541},Z:{x_min:42,x_max:584,y_min:-10,y_max:739,ha:749,leftSideBearing:42,advanceWidth:629},"[":{x_min:46,x_max:346,y_min:-150,y_max:884,ha:1034,leftSideBearing:46,advanceWidth:291},"\\":{x_min:20,x_max:616,y_min:-100,y_max:797,ha:897,leftSideBearing:20,advanceWidth:645},"]":{x_min:-76,x_max:226,y_min:-150,y_max:881,ha:1031,leftSideBearing:-76,advanceWidth:297},"^":{x_min:43,x_max:437,y_min:517,y_max:812,ha:295,leftSideBearing:43,advanceWidth:478},_:{x_min:29,x_max:563,y_min:-110,y_max:-1,ha:109,leftSideBearing:29,advanceWidth:598},"`":{x_min:54,x_max:321,y_min:540,y_max:747,ha:207,leftSideBearing:54,advanceWidth:368},a:{x_min:20,x_max:447,y_min:-17,y_max:495,ha:512,leftSideBearing:20,advanceWidth:494},b:{x_min:37,x_max:466,y_min:-27,y_max:770,ha:797,leftSideBearing:37,advanceWidth:510},c:{x_min:35,x_max:456,y_min:-9,y_max:507,ha:516,leftSideBearing:35,advanceWidth:460},d:{x_min:45,x_max:520,y_min:-15,y_max:764,ha:779,leftSideBearing:45,advanceWidth:560},e:{x_min:33,x_max:370,y_min:-5,y_max:501,ha:506,leftSideBearing:33,advanceWidth:397},f:{x_min:35,x_max:411,y_min:-13,y_max:695,ha:708,leftSideBearing:35,advanceWidth:453},g:{x_min:33,x_max:551,y_min:-257,y_max:505,ha:762,leftSideBearing:33,advanceWidth:611},h:{x_min:32,x_max:458,y_min:-29,y_max:743,ha:772,leftSideBearing:32,advanceWidth:491},i:{x_min:45,x_max:167,y_min:-13,y_max:631,ha:644,leftSideBearing:45,advanceWidth:220},j:{x_min:-127,x_max:261,y_min:-231,y_max:601,ha:832,leftSideBearing:-127,advanceWidth:308},k:{x_min:39,x_max:443,y_min:-3,y_max:700,ha:703,leftSideBearing:39,advanceWidth:497},l:{x_min:58,x_max:168,y_min:-8,y_max:686,ha:694,leftSideBearing:58,advanceWidth:227},m:{x_min:39,x_max:688,y_min:-14,y_max:501,ha:515,leftSideBearing:39,advanceWidth:718},n:{x_min:45,x_max:491,y_min:-32,y_max:512,ha:544,leftSideBearing:45,advanceWidth:541},o:{x_min:41,x_max:424,y_min:-12,y_max:493,ha:505,leftSideBearing:41,advanceWidth:447},p:{x_min:25,x_max:529,y_min:-260,y_max:500,ha:760,leftSideBearing:25,advanceWidth:573},q:{x_min:53,x_max:603,y_min:-235,y_max:514,ha:749,leftSideBearing:53,advanceWidth:623},r:{x_min:32,x_max:407,y_min:-7,y_max:492,ha:499,leftSideBearing:32,advanceWidth:460},s:{x_min:49,x_max:416,y_min:-12,y_max:519,ha:531,leftSideBearing:49,advanceWidth:460},t:{x_min:32,x_max:442,y_min:-5,y_max:684,ha:689,leftSideBearing:32,advanceWidth:469},u:{x_min:41,x_max:487,y_min:-5,y_max:507,ha:512,leftSideBearing:41,advanceWidth:510},v:{x_min:16,x_max:441,y_min:-20,y_max:542,ha:562,leftSideBearing:16,advanceWidth:456},w:{x_min:39,x_max:639,y_min:-22,y_max:505,ha:527,leftSideBearing:39,advanceWidth:661},x:{x_min:15,x_max:505,y_min:-39,y_max:539,ha:578,leftSideBearing:15,advanceWidth:541},y:{x_min:-98,x_max:501,y_min:-242,y_max:511,ha:753,leftSideBearing:-98,advanceWidth:548},z:{x_min:27,x_max:479,y_min:-3,y_max:494,ha:497,leftSideBearing:27,advanceWidth:494},"{":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308},"|":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308},"}":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308},"~":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308}},fontFamily:"PetalumaScript",resolution:1e3,generatedOn:"2020-06-14T18:33:25.407Z"},Oi={spacing:50,glyphs:{" ":{x_min:0,x_max:509,y_min:0,y_max:2e3,ha:2e3,leftSideBearing:0,advanceWidth:509},0:{x_min:121,x_max:1048,y_min:-21,y_max:1477,ha:1498,leftSideBearing:121,advanceWidth:1168},1:{x_min:117,x_max:767,y_min:0,y_max:1456,ha:1456,leftSideBearing:117,advanceWidth:844},2:{x_min:75.8474576645637,x_max:1040,y_min:0,y_max:1477,ha:1477,leftSideBearing:75,advanceWidth:1131},3:{x_min:74.85365853658536,x_max:994,y_min:-21,y_max:1477,ha:1498,leftSideBearing:74,advanceWidth:1106},4:{x_min:63,x_max:1114,y_min:0,y_max:1456,ha:1456,leftSideBearing:63,advanceWidth:1187},5:{x_min:96.8448275474953,x_max:982,y_min:-21,y_max:1456,ha:1477,leftSideBearing:96,advanceWidth:1081},6:{x_min:121,x_max:1067,y_min:-21,y_max:1477,ha:1498,leftSideBearing:121,advanceWidth:1144},7:{x_min:76,x_max:1060,y_min:0,y_max:1456,ha:1456,leftSideBearing:-30,advanceWidth:1128},8:{x_min:92,x_max:1039,y_min:-21,y_max:1477,ha:1498,leftSideBearing:92,advanceWidth:1131},9:{x_min:84,x_max:1026,y_min:-21,y_max:1477,ha:1498,leftSideBearing:84,advanceWidth:1154},"!":{x_min:143,x_max:340,y_min:0,y_max:1456,ha:1456,leftSideBearing:143,advanceWidth:483},'"':{x_min:166,x_max:634,y_min:1055,y_max:1560,ha:505,leftSideBearing:166,advanceWidth:770},"#":{x_min:63,x_max:1179,y_min:0,y_max:1456,ha:1456,leftSideBearing:63,advanceWidth:1246},$:{x_min:81.92156915727656,x_max:1012,y_min:-208,y_max:1693,ha:1901,leftSideBearing:81,advanceWidth:1110},"%":{x_min:77,x_max:1384,y_min:-21,y_max:1477,ha:1498,leftSideBearing:77,advanceWidth:1460},"&":{x_min:74,x_max:1242,y_min:-21,y_max:1477,ha:1498,leftSideBearing:74,advanceWidth:1289},"'":{x_min:166,x_max:324,y_min:1055,y_max:1560,ha:505,leftSideBearing:166,advanceWidth:460},"(":{x_min:114,x_max:650,y_min:-463,y_max:1636,ha:2099,leftSideBearing:114,advanceWidth:662},")":{x_min:11,x_max:547,y_min:-463,y_max:1636,ha:2099,leftSideBearing:11,advanceWidth:654},"*":{x_min:66,x_max:893,y_min:607,y_max:1456,ha:849,leftSideBearing:66,advanceWidth:958},"+":{x_min:73,x_max:1071,y_min:146,y_max:1206,ha:1060,leftSideBearing:73,advanceWidth:1145},",":{x_min:23,x_max:315,y_min:-311,y_max:221,ha:532,leftSideBearing:23,advanceWidth:404},"-":{x_min:154,x_max:643,y_min:538,y_max:692,ha:154,leftSideBearing:154,advanceWidth:797},".":{x_min:145,x_max:342,y_min:0,y_max:202,ha:202,leftSideBearing:145,advanceWidth:493},"/":{x_min:0,x_max:774,y_min:-125,y_max:1456,ha:1581,leftSideBearing:0,advanceWidth:824},":":{x_min:145,x_max:342,y_min:0,y_max:1082,ha:1082,leftSideBearing:145,advanceWidth:419},";":{x_min:53,x_max:345,y_min:-311,y_max:1082,ha:1393,leftSideBearing:53,advanceWidth:424},"<":{x_min:76,x_max:892,y_min:107,y_max:1013,ha:906,leftSideBearing:76,advanceWidth:1017},"=":{x_min:147,x_max:981,y_min:407,y_max:987,ha:580,leftSideBearing:147,advanceWidth:1127},">":{x_min:125,x_max:980,y_min:87,y_max:993,ha:906,leftSideBearing:125,advanceWidth:1060},"?":{x_min:65.92660602419838,x_max:890,y_min:0,y_max:1477,ha:1477,leftSideBearing:65,advanceWidth:953},"@":{x_min:84.3592218305664,x_max:1705.2346925277395,y_min:-453,y_max:1431,ha:1884,leftSideBearing:84,advanceWidth:1821},A:{x_min:70,x_max:1463,y_min:0,y_max:1456,ha:1456,leftSideBearing:70,advanceWidth:1533},B:{x_min:81,x_max:1253,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1322},C:{x_min:80,x_max:1174,y_min:-21,y_max:1477,ha:1498,leftSideBearing:80,advanceWidth:1290},D:{x_min:81,x_max:1291,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1356},E:{x_min:81,x_max:1190,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1306},F:{x_min:81,x_max:1176,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1256},G:{x_min:80,x_max:1226,y_min:-21,y_max:1477,ha:1498,leftSideBearing:80,advanceWidth:1346},H:{x_min:81,x_max:1497,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1578},I:{x_min:81,x_max:604,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:685},J:{x_min:60,x_max:1100,y_min:-21,y_max:1456,ha:1477,leftSideBearing:60,advanceWidth:1169},K:{x_min:81,x_max:1427,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1501},L:{x_min:81,x_max:1130,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1210},M:{x_min:94,x_max:1888,y_min:0,y_max:1456,ha:1456,leftSideBearing:94,advanceWidth:1982},N:{x_min:83,x_max:1509,y_min:0,y_max:1456,ha:1456,leftSideBearing:83,advanceWidth:1592},O:{x_min:70,x_max:1281,y_min:-21,y_max:1477,ha:1498,leftSideBearing:70,advanceWidth:1351},P:{x_min:81,x_max:1242,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1297},Q:{x_min:70,x_max:1348,y_min:-245,y_max:1477,ha:1722,leftSideBearing:70,advanceWidth:1376},R:{x_min:81,x_max:1285,y_min:0,y_max:1455,ha:1455,leftSideBearing:81,advanceWidth:1385},S:{x_min:115,x_max:1116,y_min:-21,y_max:1477,ha:1498,leftSideBearing:115,advanceWidth:1206},T:{x_min:96,x_max:1306,y_min:0,y_max:1456,ha:1456,leftSideBearing:96,advanceWidth:1406},U:{x_min:70,x_max:1452,y_min:-21,y_max:1456,ha:1477,leftSideBearing:70,advanceWidth:1522},V:{x_min:65,x_max:1443,y_min:0,y_max:1456,ha:1456,leftSideBearing:65,advanceWidth:1508},W:{x_min:72,x_max:2057,y_min:0,y_max:1456,ha:1456,leftSideBearing:72,advanceWidth:2129},X:{x_min:80,x_max:1449,y_min:0,y_max:1456,ha:1456,leftSideBearing:80,advanceWidth:1529},Y:{x_min:65,x_max:1396,y_min:0,y_max:1456,ha:1456,leftSideBearing:65,advanceWidth:1461},Z:{x_min:90,x_max:1107,y_min:0,y_max:1456,ha:1456,leftSideBearing:90,advanceWidth:1197},"[":{x_min:157,x_max:541,y_min:-312,y_max:1664,ha:1976,leftSideBearing:157,advanceWidth:573},"\\":{x_min:36,x_max:830,y_min:-125,y_max:1456,ha:1581,leftSideBearing:36,advanceWidth:841},"]":{x_min:23,x_max:408,y_min:-312,y_max:1664,ha:1976,leftSideBearing:23,advanceWidth:552},"^":{x_min:71,x_max:802,y_min:729,y_max:1456,ha:727,leftSideBearing:71,advanceWidth:864},_:{x_min:119,x_max:1041,y_min:-154,y_max:0,ha:154,leftSideBearing:119,advanceWidth:1168},"`":{x_min:40,x_max:456,y_min:1288,y_max:1560,ha:272,leftSideBearing:40,advanceWidth:496},a:{x_min:79,x_max:1053,y_min:-21,y_max:1102,ha:1123,leftSideBearing:79,advanceWidth:1132},b:{x_min:-16,x_max:1071,y_min:-21,y_max:1560,ha:1581,leftSideBearing:-16,advanceWidth:1145},c:{x_min:78,x_max:988,y_min:-21,y_max:1102,ha:1123,leftSideBearing:78,advanceWidth:1067},d:{x_min:78,x_max:1156,y_min:-21,y_max:1560,ha:1581,leftSideBearing:78,advanceWidth:1218},e:{x_min:74,x_max:980,y_min:-21,y_max:1102,ha:1123,leftSideBearing:74,advanceWidth:1059},f:{x_min:64,x_max:731,y_min:0,y_max:1581,ha:1581,leftSideBearing:64,advanceWidth:725},g:{x_min:78,x_max:1133,y_min:-437,y_max:1102,ha:1539,leftSideBearing:78,advanceWidth:1157},h:{x_min:49,x_max:1255,y_min:0,y_max:1560,ha:1560,leftSideBearing:49,advanceWidth:1315},i:{x_min:67,x_max:590,y_min:0,y_max:1560,ha:1560,leftSideBearing:67,advanceWidth:652},j:{x_min:-56,x_max:381,y_min:-437,y_max:1560,ha:1997,leftSideBearing:-56,advanceWidth:525},k:{x_min:64,x_max:1248,y_min:0,y_max:1560,ha:1560,leftSideBearing:64,advanceWidth:1287},l:{x_min:64,x_max:587,y_min:0,y_max:1560,ha:1560,leftSideBearing:64,advanceWidth:653},m:{x_min:74,x_max:1905,y_min:0,y_max:1102,ha:1102,leftSideBearing:74,advanceWidth:1977},n:{x_min:74,x_max:1278,y_min:0,y_max:1102,ha:1102,leftSideBearing:74,advanceWidth:1343},o:{x_min:78,x_max:1046,y_min:-21,y_max:1102,ha:1123,leftSideBearing:78,advanceWidth:1124},p:{x_min:34,x_max:1119,y_min:-416,y_max:1102,ha:1518,leftSideBearing:34,advanceWidth:1197},q:{x_min:78,x_max:1135,y_min:-416,y_max:1102,ha:1518,leftSideBearing:78,advanceWidth:1139},r:{x_min:72,x_max:808,y_min:0,y_max:1102,ha:1102,leftSideBearing:72,advanceWidth:854},s:{x_min:104,x_max:933,y_min:-21,y_max:1102,ha:1123,leftSideBearing:104,advanceWidth:1022},t:{x_min:24,x_max:678,y_min:-17,y_max:1343,ha:1360,leftSideBearing:24,advanceWidth:730},u:{x_min:52,x_max:1181,y_min:-21,y_max:1082,ha:1103,leftSideBearing:52,advanceWidth:1245},v:{x_min:26,x_max:1176,y_min:0,y_max:1082,ha:1082,leftSideBearing:26,advanceWidth:1206},w:{x_min:52,x_max:1777,y_min:0,y_max:1082,ha:1082,leftSideBearing:52,advanceWidth:1823},x:{x_min:42,x_max:1163,y_min:0,y_max:1082,ha:1082,leftSideBearing:42,advanceWidth:1203},y:{x_min:24,x_max:1172,y_min:-437,y_max:1082,ha:1519,leftSideBearing:24,advanceWidth:1192},z:{x_min:88,x_max:960,y_min:0,y_max:1082,ha:1082,leftSideBearing:88,advanceWidth:1032},"{":{x_min:63,x_max:671,y_min:-364,y_max:1597,ha:1961,leftSideBearing:63,advanceWidth:701},"|":{x_min:150,x_max:307,y_min:-270,y_max:1456,ha:1726,leftSideBearing:150,advanceWidth:451},"}":{x_min:27,x_max:635,y_min:-364,y_max:1597,ha:1961,leftSideBearing:27,advanceWidth:701},"~":{x_min:121,x_max:1257,y_min:401,y_max:803,ha:402,leftSideBearing:121,advanceWidth:1386}},fontFamily:"Roboto Slab",resolution:2048,generatedOn:"2020-06-15T19:12:58.120Z"};class Li{static sortAndUnique(t,e,i){if(t.length>1){const s=[];let n;t.sort(e);for(let e=0;e {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Ron B. Yeh\n// MIT License\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Use instead of `instanceof` as a more flexible type guard.\n * @param obj check if this object's CATEGORY matches the provided category.\n * @param category a string representing a category of VexFlow objects.\n * @param checkAncestors defaults to `true`, so we walk up the prototype chain to look for a matching `CATEGORY`.\n * If `false`, we do not check the superclass or other ancestors.\n * @returns true if `obj` has a static `CATEGORY` property that matches `category`.\n */\nexport function isCategory(obj, category, checkAncestors = true) {\n // obj is undefined, a number, a primitive string, or null.\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n // `obj.constructor` is a reference to the constructor function that created the `obj` instance.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor\n let constructorFcn = obj.constructor;\n // Check if the object's static .CATEGORY matches the provided category.\n if (checkAncestors) {\n // Walk up the prototype chain to look for a matching obj.constructor.CATEGORY.\n while (obj !== null) {\n constructorFcn = obj.constructor;\n if ('CATEGORY' in constructorFcn && constructorFcn.CATEGORY === category) {\n return true;\n }\n obj = Object.getPrototypeOf(obj);\n }\n return false;\n }\n else {\n // Do not walk up the prototype chain. Just check this particular object's static .CATEGORY string.\n return 'CATEGORY' in constructorFcn && constructorFcn.CATEGORY === category;\n }\n}\nexport const isAccidental = (obj) => isCategory(obj, Category.Accidental);\nexport const isAnnotation = (obj) => isCategory(obj, Category.Annotation);\nexport const isBarline = (obj) => isCategory(obj, Category.Barline);\nexport const isDot = (obj) => isCategory(obj, Category.Dot);\nexport const isGraceNote = (obj) => isCategory(obj, Category.GraceNote);\nexport const isGraceNoteGroup = (obj) => isCategory(obj, Category.GraceNoteGroup);\nexport const isNote = (obj) => isCategory(obj, Category.Note);\nexport const isRenderContext = (obj) => isCategory(obj, Category.RenderContext);\nexport const isStaveNote = (obj) => isCategory(obj, Category.StaveNote);\nexport const isStemmableNote = (obj) => isCategory(obj, Category.StemmableNote);\nexport const isTabNote = (obj) => isCategory(obj, Category.TabNote);\n// 'const' enums are erased by the TypeScript compiler. The string values are inlined at all the use sites.\n// See: https://www.typescriptlang.org/docs/handbook/enums.html#const-enums\nexport var Category;\n(function (Category) {\n Category[\"Accidental\"] = \"Accidental\";\n Category[\"Annotation\"] = \"Annotation\";\n Category[\"Articulation\"] = \"Articulation\";\n Category[\"Barline\"] = \"Barline\";\n Category[\"BarNote\"] = \"BarNote\";\n Category[\"Beam\"] = \"Beam\";\n Category[\"Bend\"] = \"Bend\";\n Category[\"ChordSymbol\"] = \"ChordSymbol\";\n Category[\"Clef\"] = \"Clef\";\n Category[\"ClefNote\"] = \"ClefNote\";\n Category[\"Crescendo\"] = \"Crescendo\";\n Category[\"Curve\"] = \"Curve\";\n Category[\"Dot\"] = \"Dot\";\n Category[\"Element\"] = \"Element\";\n Category[\"Fraction\"] = \"Fraction\";\n Category[\"FretHandFinger\"] = \"FretHandFinger\";\n Category[\"GhostNote\"] = \"GhostNote\";\n Category[\"Glyph\"] = \"Glyph\";\n Category[\"GlyphNote\"] = \"GlyphNote\";\n Category[\"GraceNote\"] = \"GraceNote\";\n Category[\"GraceNoteGroup\"] = \"GraceNoteGroup\";\n Category[\"GraceTabNote\"] = \"GraceTabNote\";\n Category[\"KeySignature\"] = \"KeySignature\";\n Category[\"KeySigNote\"] = \"KeySigNote\";\n Category[\"Modifier\"] = \"Modifier\";\n Category[\"MultiMeasureRest\"] = \"MultiMeasureRest\";\n Category[\"Note\"] = \"Note\";\n Category[\"NoteHead\"] = \"NoteHead\";\n Category[\"NoteSubGroup\"] = \"NoteSubGroup\";\n Category[\"Ornament\"] = \"Ornament\";\n Category[\"Parenthesis\"] = \"Parenthesis\";\n Category[\"PedalMarking\"] = \"PedalMarking\";\n Category[\"RenderContext\"] = \"RenderContext\";\n Category[\"RepeatNote\"] = \"RepeatNote\";\n Category[\"Repetition\"] = \"Repetition\";\n Category[\"Stave\"] = \"Stave\";\n Category[\"StaveConnector\"] = \"StaveConnector\";\n Category[\"StaveHairpin\"] = \"StaveHairpin\";\n Category[\"StaveLine\"] = \"StaveLine\";\n Category[\"StaveModifier\"] = \"StaveModifier\";\n Category[\"StaveNote\"] = \"StaveNote\";\n Category[\"StaveSection\"] = \"StaveSection\";\n Category[\"StaveTempo\"] = \"StaveTempo\";\n Category[\"StaveText\"] = \"StaveText\";\n Category[\"StaveTie\"] = \"StaveTie\";\n Category[\"Stem\"] = \"Stem\";\n Category[\"StemmableNote\"] = \"StemmableNote\";\n Category[\"StringNumber\"] = \"StringNumber\";\n Category[\"Stroke\"] = \"Stroke\";\n Category[\"System\"] = \"System\";\n Category[\"TabNote\"] = \"TabNote\";\n Category[\"TabSlide\"] = \"TabSlide\";\n Category[\"TabStave\"] = \"TabStave\";\n Category[\"TabTie\"] = \"TabTie\";\n Category[\"TextBracket\"] = \"TextBracket\";\n Category[\"TextDynamics\"] = \"TextDynamics\";\n Category[\"TextNote\"] = \"TextNote\";\n Category[\"Tickable\"] = \"Tickable\";\n Category[\"TimeSignature\"] = \"TimeSignature\";\n Category[\"TimeSigNote\"] = \"TimeSigNote\";\n Category[\"Tremolo\"] = \"Tremolo\";\n Category[\"Tuplet\"] = \"Tuplet\";\n Category[\"Vibrato\"] = \"Vibrato\";\n Category[\"VibratoBracket\"] = \"VibratoBracket\";\n Category[\"Voice\"] = \"Voice\";\n Category[\"Volta\"] = \"Volta\";\n})(Category || (Category = {}));\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// Note: Keep this module free of imports to reduce the chance of circular dependencies.\n/** `RuntimeError` will be thrown by VexFlow classes in case of error. */\nexport class RuntimeError extends Error {\n constructor(code, message = '') {\n super('[RuntimeError] ' + code + ': ' + message);\n this.code = code;\n }\n}\n/** VexFlow can be used outside of the browser (e.g., Node) where `window` may not be defined. */\n// eslint-disable-next-line\nexport function globalObject() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return Function('return this')();\n}\n/**\n * Check that `x` is of type `T` and not `undefined`.\n * If `x` is `undefined`, throw a RuntimeError with the optionally provided error code and message.\n */\nexport function defined(x, code = 'undefined', message = '') {\n if (x === undefined) {\n throw new RuntimeError(code, message);\n }\n return x;\n}\n/** Default log function sends all arguments to console. */\n// eslint-disable-next-line\nexport function log(block, ...args) {\n if (!args)\n return;\n const line = Array.prototype.slice.call(args).join(' ');\n globalObject().console.log(block + ': ' + line);\n}\n/** Dump warning to console. */\n// eslint-disable-next-line\nexport function warn(...args) {\n const line = args.join(' ');\n const err = new Error();\n globalObject().console.log('Warning: ', line, err.stack);\n}\n/** Round number to nearest fractional value (`.5`, `.25`, etc.) */\nfunction roundN(x, n) {\n return x % n >= n / 2 ? parseInt(`${x / n}`, 10) * n + n : parseInt(`${x / n}`, 10) * n;\n}\n/** Locate the mid point between stave lines. Returns a fractional line if a space. */\nexport function midLine(a, b) {\n let mid_line = b + (a - b) / 2;\n if (mid_line % 2 > 0) {\n mid_line = roundN(mid_line * 10, 5) / 10;\n }\n return mid_line;\n}\n/**\n * Used by various classes (e.g., SVGContext) to provide a\n * unique prefix to element names (or other keys in shared namespaces).\n */\nexport function prefix(text) {\n return `vf-${text}`;\n}\n/**\n * Convert an arbitrary angle in radians to the equivalent one in the range [0, pi).\n */\nexport function normalizeAngle(a) {\n a = a % (2 * Math.PI);\n if (a < 0) {\n a += 2 * Math.PI;\n }\n return a;\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Author: Joshua Koo / @zz85\n// Author: @incompleteopus\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n/** Fraction represents a rational number. */\nexport class Fraction {\n /** Set the numerator and denominator. */\n constructor(numerator, denominator) {\n this.numerator = 1;\n this.denominator = 1;\n this.set(numerator, denominator);\n }\n static get CATEGORY() {\n return Category.Fraction;\n }\n /**\n * GCD: Greatest common divisor using the Euclidean algorithm.\n * Note: GCD(0, 0) => 0 and GCD(0, n) => n.\n */\n static GCD(a, b) {\n if (typeof a !== 'number' || Number.isNaN(a) || typeof b !== 'number' || Number.isNaN(b)) {\n throw new RuntimeError('BadArgument', `Invalid numbers: ${a}, ${b}`);\n }\n let t;\n while (b !== 0) {\n t = b;\n b = a % b;\n a = t;\n }\n return a;\n }\n /** LCM: Lowest common multiple. */\n static LCM(a, b) {\n return (a * b) / Fraction.GCD(a, b);\n }\n /** Lowest common multiple for more than two numbers. */\n static LCMM(args) {\n if (args.length === 0) {\n return 0;\n }\n else if (args.length === 1) {\n return args[0];\n }\n else if (args.length === 2) {\n return Fraction.LCM(args[0], args[1]);\n }\n else {\n // args.shift() removes the first number.\n // LCM the first number with the rest of the numbers.\n return Fraction.LCM(args.shift(), Fraction.LCMM(args));\n }\n }\n /** Set the numerator and denominator. */\n set(numerator = 1, denominator = 1) {\n this.numerator = numerator;\n this.denominator = denominator;\n return this;\n }\n /** Return the value of the fraction. */\n value() {\n return this.numerator / this.denominator;\n }\n /** Simplify numerator and denominator using GCD. */\n simplify() {\n let u = this.numerator;\n let d = this.denominator;\n const gcd = Fraction.GCD(u, d);\n u /= gcd;\n d /= gcd;\n if (d < 0) {\n d = -d;\n u = -u;\n }\n return this.set(u, d);\n }\n /** Add value of another fraction. */\n add(param1 = 0, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n const lcm = Fraction.LCM(this.denominator, otherDenominator);\n const a = lcm / this.denominator;\n const b = lcm / otherDenominator;\n const u = this.numerator * a + otherNumerator * b;\n return this.set(u, lcm);\n }\n /** Substract value of another fraction. */\n subtract(param1 = 0, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n const lcm = Fraction.LCM(this.denominator, otherDenominator);\n const a = lcm / this.denominator;\n const b = lcm / otherDenominator;\n const u = this.numerator * a - otherNumerator * b;\n return this.set(u, lcm);\n }\n /** Multiply by value of another fraction. */\n multiply(param1 = 1, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n return this.set(this.numerator * otherNumerator, this.denominator * otherDenominator);\n }\n /** Divide by value of another Fraction. */\n divide(param1 = 1, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n return this.set(this.numerator * otherDenominator, this.denominator * otherNumerator);\n }\n /** Simplify both sides and check if they are equal. */\n equals(compare) {\n const a = Fraction.__staticFractionA.copy(compare).simplify();\n const b = Fraction.__staticFractionB.copy(this).simplify();\n return a.numerator === b.numerator && a.denominator === b.denominator;\n }\n /** Greater than operator. */\n greaterThan(compare) {\n const a = Fraction.__staticFractionB.copy(this);\n a.subtract(compare);\n return a.numerator > 0;\n }\n /** Greater than or equals operator. */\n greaterThanEquals(compare) {\n const a = Fraction.__staticFractionB.copy(this);\n a.subtract(compare);\n return a.numerator >= 0;\n }\n /** Less than operator. */\n lessThan(compare) {\n return !this.greaterThanEquals(compare);\n }\n /** Less than or equals operator. */\n lessThanEquals(compare) {\n return !this.greaterThan(compare);\n }\n /** Return a new copy with current values. */\n clone() {\n return new Fraction(this.numerator, this.denominator);\n }\n /** Copy value of another fraction. */\n copy(other) {\n if (typeof other === 'number') {\n return this.set(other, 1);\n }\n else {\n return this.set(other.numerator, other.denominator);\n }\n }\n /** Return the integer component (eg. 5/2 => 2). */\n quotient() {\n return Math.floor(this.numerator / this.denominator);\n }\n /** Return the remainder component (eg. 5/2 => 1). */\n remainder() {\n return this.numerator % this.denominator;\n }\n /** Calculate absolute value. */\n makeAbs() {\n this.denominator = Math.abs(this.denominator);\n this.numerator = Math.abs(this.numerator);\n return this;\n }\n /** Return a raw string representation (eg. \"5/2\"). */\n toString() {\n return `${this.numerator}/${this.denominator}`;\n }\n /** Return a simplified string respresentation. */\n toSimplifiedString() {\n return Fraction.__staticFractionTmp.copy(this).simplify().toString();\n }\n /** Return string representation in mixed form. */\n toMixedString() {\n let s = '';\n const q = this.quotient();\n const f = Fraction.__staticFractionTmp.copy(this);\n if (q < 0) {\n f.makeAbs();\n }\n if (q !== 0) {\n s += q;\n if (f.numerator !== 0) {\n s += ` ${f.toSimplifiedString()}`;\n }\n }\n else if (f.numerator === 0) {\n s = '0';\n }\n else {\n s = f.toSimplifiedString();\n }\n return s;\n }\n /** Parse a fraction string. */\n parse(str) {\n const i = str.split('/');\n const n = parseInt(i[0], 10);\n const d = i[1] ? parseInt(i[1], 10) : 1;\n return this.set(n, d);\n }\n}\n// Cached objects for comparisons.\nFraction.__staticFractionA = new Fraction();\nFraction.__staticFractionB = new Fraction();\nFraction.__staticFractionTmp = new Fraction();\n/** Helper function to extract the numerator and denominator from another fraction. */\nfunction getNumeratorAndDenominator(n, d = 1) {\n if (typeof n === 'number') {\n // Both params are numbers, so we return them as [numerator, denominator].\n return [n, d];\n }\n else {\n // First param is a Fraction object. We ignore the second param.\n return [n.numerator, n.denominator];\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nexport class BoundingBox {\n constructor(x, y, w, h) {\n this.x = x;\n this.y = y;\n this.w = w;\n this.h = h;\n }\n /**\n * Create a new copy.\n */\n static copy(that) {\n return new BoundingBox(that.x, that.y, that.w, that.h);\n }\n /** Get x position. */\n getX() {\n return this.x;\n }\n /** Get y position. */\n getY() {\n return this.y;\n }\n /** Get width. */\n getW() {\n return this.w;\n }\n /** Get height. */\n getH() {\n return this.h;\n }\n /** Set x position. */\n setX(x) {\n this.x = x;\n return this;\n }\n /** Set y position. */\n setY(y) {\n this.y = y;\n return this;\n }\n /** Set width. */\n setW(w) {\n this.w = w;\n return this;\n }\n /** Set height. */\n setH(h) {\n this.h = h;\n return this;\n }\n /** Move to position. */\n move(x, y) {\n this.x += x;\n this.y += y;\n return this;\n }\n /** Clone. */\n clone() {\n return BoundingBox.copy(this);\n }\n /**\n * Merge my box with given box. Creates a bigger bounding box unless\n * the given box is contained in this one.\n */\n mergeWith(boundingBox) {\n const that = boundingBox;\n const new_x = this.x < that.x ? this.x : that.x;\n const new_y = this.y < that.y ? this.y : that.y;\n const new_w = Math.max(this.x + this.w, that.x + that.w) - new_x;\n const new_h = Math.max(this.y + this.h, that.y + that.h) - new_y;\n this.x = new_x;\n this.y = new_y;\n this.w = new_w;\n this.h = new_h;\n return this;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n/**\n * BoundingBoxComputation computes metrics for a bounding box by continuously\n * taking canvas path commands.\n *\n * Warning: This class is merely a crutch to get bounding box information without\n * explicit metadata. This is likely to get deprecated following SMuFL support.\n *\n * based on: https://github.com/canvg/canvg/blob/master/src/BoundingBox.ts (MIT License)\n */\nexport class BoundingBoxComputation {\n constructor() {\n this.x1 = Number.NaN;\n this.y1 = Number.NaN;\n this.x2 = Number.NaN;\n this.y2 = Number.NaN;\n }\n /** Get calculated X1. */\n getX1() {\n return this.x1;\n }\n /** Get calculated Y1. */\n getY1() {\n return this.y1;\n }\n /** Get calculated width. */\n width() {\n return this.x2 - this.x1;\n }\n /** Get calculated height. */\n height() {\n return this.y2 - this.y1;\n }\n /** Add point to BoundingBox. */\n addPoint(x, y) {\n if (isNaN(this.x1) || x < this.x1)\n this.x1 = x;\n if (isNaN(this.x2) || x > this.x2)\n this.x2 = x;\n if (isNaN(this.y1) || y < this.y1)\n this.y1 = y;\n if (isNaN(this.y2) || y > this.y2)\n this.y2 = y;\n }\n /** Add X to BoundingBox. */\n addX(x) {\n this.addPoint(x, this.y1);\n }\n /** Add Y to BoundingBox. */\n addY(y) {\n this.addPoint(this.x1, y);\n }\n /** Add quadratic curve to BoundingBox. */\n addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {\n this.addPoint(p0x, p0y);\n this.addPoint(p2x, p2y);\n const p01x = p1x - p0x;\n const p12x = p2x - p1x;\n let denom = p01x - p12x;\n if (denom != 0) {\n const t = p01x / denom;\n if (t > 0 && t < 1) {\n const it = 1 - t;\n this.addX(it * it * p0x + 2 * it * t * p1x + t * t * p2x);\n }\n }\n const p01y = p1y - p0y;\n const p12y = p2y - p1y;\n denom = p01y - p12y;\n if (denom != 0) {\n const t = p01y / denom;\n if (t > 0 && t < 1) {\n const it = 1 - t;\n this.addY(it * it * p0y + 2 * it * t * p1y + t * t * p2y);\n }\n }\n }\n /** Add bezier curve to BoundingBox. */\n addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\n // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n const p0 = [p0x, p0y];\n const p1 = [p1x, p1y];\n const p2 = [p2x, p2y];\n const p3 = [p3x, p3y];\n let i;\n this.addPoint(p0[0], p0[1]);\n this.addPoint(p3[0], p3[1]);\n const f = (t, i) => Math.pow(1 - t, 3) * p0[i] +\n 3 * Math.pow(1 - t, 2) * t * p1[i] +\n 3 * (1 - t) * Math.pow(t, 2) * p2[i] +\n Math.pow(t, 3) * p3[i];\n for (i = 0; i <= 1; i++) {\n const b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n const a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n const c = 3 * p1[i] - 3 * p0[i];\n if (a === 0) {\n if (b === 0)\n continue;\n const t = -c / b;\n if (0 < t && t < 1) {\n if (i === 0)\n this.addX(f(t, i));\n if (i === 1)\n this.addY(f(t, i));\n }\n continue;\n }\n const b2ac = Math.pow(b, 2) - 4 * c * a;\n if (b2ac < 0)\n continue;\n const t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n if (0 < t1 && t1 < 1) {\n if (i === 0)\n this.addX(f(t1, i));\n if (i === 1)\n this.addY(f(t1, i));\n }\n const t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n if (0 < t2 && t2 < 1) {\n if (i === 0)\n this.addX(f(t2, i));\n if (i === 1)\n this.addY(f(t2, i));\n }\n }\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { defined } from './util';\nexport var FontWeight;\n(function (FontWeight) {\n FontWeight[\"NORMAL\"] = \"normal\";\n FontWeight[\"BOLD\"] = \"bold\";\n})(FontWeight || (FontWeight = {}));\nexport var FontStyle;\n(function (FontStyle) {\n FontStyle[\"NORMAL\"] = \"normal\";\n FontStyle[\"ITALIC\"] = \"italic\";\n})(FontStyle || (FontStyle = {}));\n// Internal element for parsing CSS font shorthand strings.\nlet fontParser;\nconst Fonts = {};\nexport class Font {\n /**\n * Use `Font.load(fontName)` to get a Font object.\n * Do not call this constructor directly.\n */\n constructor(fontName) {\n this.name = fontName;\n }\n /**\n * @param fontSize a font size to convert. Can be specified as a CSS length string (e.g., '16pt', '1em')\n * or as a number (the unit is assumed to be 'pt'). See `Font.scaleToPxFrom` for the supported\n * units (e.g., pt, em, %).\n * @returns the number of pixels that is equivalent to `fontSize`\n */\n static convertSizeToPixelValue(fontSize = Font.SIZE) {\n var _a;\n if (typeof fontSize === 'number') {\n // Assume the numeric fontSize is specified in pt.\n return fontSize * Font.scaleToPxFrom.pt;\n }\n else {\n const value = parseFloat(fontSize);\n if (isNaN(value)) {\n return 0;\n }\n const unit = fontSize.replace(/[\\d.\\s]/g, '').toLowerCase(); // Extract the unit by removing all numbers, dots, spaces.\n const conversionFactor = (_a = Font.scaleToPxFrom[unit]) !== null && _a !== void 0 ? _a : 1;\n return value * conversionFactor;\n }\n }\n /**\n * @param fontSize a font size to convert. Can be specified as a CSS length string (e.g., '16pt', '1em')\n * or as a number (the unit is assumed to be 'pt'). See `Font.scaleToPxFrom` for the supported\n * units (e.g., pt, em, %).\n * @returns the number of points that is equivalent to `fontSize`\n */\n static convertSizeToPointValue(fontSize = Font.SIZE) {\n var _a;\n if (typeof fontSize === 'number') {\n // Assume the numeric fontSize is specified in pt.\n return fontSize;\n }\n else {\n const value = parseFloat(fontSize);\n if (isNaN(value)) {\n return 0;\n }\n const unit = fontSize.replace(/[\\d.\\s]/g, '').toLowerCase(); // Extract the unit by removing all numbers, dots, spaces.\n const conversionFactor = ((_a = Font.scaleToPxFrom[unit]) !== null && _a !== void 0 ? _a : 1) / Font.scaleToPxFrom.pt;\n return value * conversionFactor;\n }\n }\n /**\n * @param f\n * @param size\n * @param weight\n * @param style\n * @returns the `size` field will include the units (e.g., '12pt', '16px').\n */\n static validate(f, size, weight, style) {\n // If f is a string but all other arguments are undefined, we assume that\n // f is CSS font shorthand (e.g., 'italic bold 10pt Arial').\n if (typeof f === 'string' && size === undefined && weight === undefined && style === undefined) {\n return Font.fromCSSString(f);\n }\n let family;\n if (typeof f === 'object') {\n // f is a FontInfo object, so we extract its fields.\n family = f.family;\n size = f.size;\n weight = f.weight;\n style = f.style;\n }\n else {\n // f is a string representing the font family name or undefined.\n family = f;\n }\n family = family !== null && family !== void 0 ? family : Font.SANS_SERIF;\n size = size !== null && size !== void 0 ? size : Font.SIZE + 'pt';\n weight = weight !== null && weight !== void 0 ? weight : FontWeight.NORMAL;\n style = style !== null && style !== void 0 ? style : FontStyle.NORMAL;\n if (weight === '') {\n weight = FontWeight.NORMAL;\n }\n if (style === '') {\n style = FontStyle.NORMAL;\n }\n // If size is a number, we assume the unit is `pt`.\n if (typeof size === 'number') {\n size = `${size}pt`;\n }\n // If weight is a number (e.g., 900), turn it into a string representation of that number.\n if (typeof weight === 'number') {\n weight = weight.toString();\n }\n // At this point, `family`, `size`, `weight`, and `style` are all strings.\n return { family, size, weight, style };\n }\n /**\n * @param cssFontShorthand a string formatted as CSS font shorthand (e.g., 'italic bold 15pt Arial').\n */\n static fromCSSString(cssFontShorthand) {\n // Let the browser parse this string for us.\n // First, create a span element.\n // Then, set its style.font and extract it back out.\n if (!fontParser) {\n fontParser = document.createElement('span');\n }\n fontParser.style.font = cssFontShorthand;\n const { fontFamily, fontSize, fontWeight, fontStyle } = fontParser.style;\n return { family: fontFamily, size: fontSize, weight: fontWeight, style: fontStyle };\n }\n /**\n * @returns a CSS font shorthand string of the form `italic bold 16pt Arial`.\n */\n static toCSSString(fontInfo) {\n var _a;\n if (!fontInfo) {\n return '';\n }\n let style;\n const st = fontInfo.style;\n if (st === FontStyle.NORMAL || st === '' || st === undefined) {\n style = ''; // no space! Omit the style section.\n }\n else {\n style = st.trim() + ' ';\n }\n let weight;\n const wt = fontInfo.weight;\n if (wt === FontWeight.NORMAL || wt === '' || wt === undefined) {\n weight = ''; // no space! Omit the weight section.\n }\n else if (typeof wt === 'number') {\n weight = wt + ' ';\n }\n else {\n weight = wt.trim() + ' ';\n }\n let size;\n const sz = fontInfo.size;\n if (sz === undefined) {\n size = Font.SIZE + 'pt ';\n }\n else if (typeof sz === 'number') {\n size = sz + 'pt ';\n }\n else {\n // size is already a string.\n size = sz.trim() + ' ';\n }\n const family = (_a = fontInfo.family) !== null && _a !== void 0 ? _a : Font.SANS_SERIF;\n return `${style}${weight}${size}${family}`;\n }\n /**\n * @param fontSize a number representing a font size, or a string font size with units.\n * @param scaleFactor multiply the size by this factor.\n * @returns size * scaleFactor (e.g., 16pt * 3 = 48pt, 8px * 0.5 = 4px, 24 * 2 = 48).\n * If the fontSize argument was a number, the return value will be a number.\n * If the fontSize argument was a string, the return value will be a string.\n */\n static scaleSize(fontSize, scaleFactor) {\n if (typeof fontSize === 'number') {\n return (fontSize * scaleFactor);\n }\n else {\n const value = parseFloat(fontSize);\n const unit = fontSize.replace(/[\\d.\\s]/g, ''); // Remove all numbers, dots, spaces.\n return `${value * scaleFactor}${unit}`;\n }\n }\n /**\n * @param weight a string (e.g., 'bold') or a number (e.g., 600 / semi-bold in the OpenType spec).\n * @returns true if the font weight indicates bold.\n */\n static isBold(weight) {\n if (!weight) {\n return false;\n }\n else if (typeof weight === 'number') {\n return weight >= 600;\n }\n else {\n // a string can be 'bold' or '700'\n const parsedWeight = parseInt(weight, 10);\n if (isNaN(parsedWeight)) {\n return weight.toLowerCase() === 'bold';\n }\n else {\n return parsedWeight >= 600;\n }\n }\n }\n /**\n * @param style\n * @returns true if the font style indicates 'italic'.\n */\n static isItalic(style) {\n if (!style) {\n return false;\n }\n else {\n return style.toLowerCase() === FontStyle.ITALIC;\n }\n }\n /**\n * @param fontName\n * @param woffURL The absolute or relative URL to the woff file.\n * @param includeWoff2 If true, we assume that a woff2 file is in\n * the same folder as the woff file, and will append a `2` to the url.\n */\n // Support distributions of the typescript compiler that do not yet include the FontFace API declarations.\n // eslint-disable-next-line\n // @ts-ignore\n static loadWebFont(fontName, woffURL, includeWoff2 = true) {\n return __awaiter(this, void 0, void 0, function* () {\n const woff2URL = includeWoff2 ? `url(${woffURL}2) format('woff2'), ` : '';\n const woff1URL = `url(${woffURL}) format('woff')`;\n const woffURLs = woff2URL + woff1URL;\n // eslint-disable-next-line\n // @ts-ignore\n const fontFace = new FontFace(fontName, woffURLs);\n yield fontFace.load();\n // eslint-disable-next-line\n // @ts-ignore\n document.fonts.add(fontFace);\n return fontFace;\n });\n }\n /**\n * Load the web fonts that are used by ChordSymbol. For example, `flow.html` calls:\n * `await Vex.Flow.Font.loadWebFonts();`\n * Alternatively, you may load web fonts with a stylesheet link (e.g., from Google Fonts),\n * and a @font-face { font-family: ... } rule in your CSS.\n * If you do not load either of these fonts, ChordSymbol will fall back to Times or Arial,\n * depending on the current music engraving font.\n *\n * You can customize `Font.WEB_FONT_HOST` and `Font.WEB_FONT_FILES` to load different fonts\n * for your app.\n */\n static loadWebFonts() {\n return __awaiter(this, void 0, void 0, function* () {\n const host = Font.WEB_FONT_HOST;\n const files = Font.WEB_FONT_FILES;\n for (const fontName in files) {\n const fontPath = files[fontName];\n Font.loadWebFont(fontName, host + fontPath);\n }\n });\n }\n /**\n * @param fontName\n * @param data optionally set the Font object's `.data` property.\n * This is usually done when setting up a font for the first time.\n * @param metrics optionally set the Font object's `.metrics` property.\n * This is usually done when setting up a font for the first time.\n * @returns a Font object with the given `fontName`.\n * Reuse an existing Font object if a matching one is found.\n */\n static load(fontName, data, metrics) {\n let font = Fonts[fontName];\n if (!font) {\n font = new Font(fontName);\n Fonts[fontName] = font;\n }\n if (data) {\n font.setData(data);\n }\n if (metrics) {\n font.setMetrics(metrics);\n }\n return font;\n }\n getName() {\n return this.name;\n }\n getData() {\n return defined(this.data, 'FontError', 'Missing font data');\n }\n getMetrics() {\n return defined(this.metrics, 'FontError', 'Missing metrics');\n }\n setData(data) {\n this.data = data;\n }\n setMetrics(metrics) {\n this.metrics = metrics;\n }\n hasData() {\n return this.data !== undefined;\n }\n getResolution() {\n return this.getData().resolution;\n }\n getGlyphs() {\n return this.getData().glyphs;\n }\n /**\n * Use the provided key to look up a value in this font's metrics file (e.g., bravura_metrics.ts, petaluma_metrics.ts).\n * @param key is a string separated by periods (e.g., stave.endPaddingMax, clef.lineCount.'5'.shiftY).\n * @param defaultValue is returned if the lookup fails.\n * @returns the retrieved value (or `defaultValue` if the lookup fails).\n */\n // eslint-disable-next-line\n lookupMetric(key, defaultValue) {\n const keyParts = key.split('.');\n // Start with the top level font metrics object, and keep looking deeper into the object (via each part of the period-delimited key).\n let currObj = this.getMetrics();\n for (let i = 0; i < keyParts.length; i++) {\n const keyPart = keyParts[i];\n const value = currObj[keyPart];\n if (value === undefined) {\n // If the key lookup fails, we fall back to the defaultValue.\n return defaultValue;\n }\n // The most recent lookup succeeded, so we drill deeper into the object.\n currObj = value;\n }\n // After checking every part of the key (i.e., the loop completed), return the most recently retrieved value.\n return currObj;\n }\n /** For debugging. */\n toString() {\n return '[' + this.name + ' Font]';\n }\n}\n//////////////////////////////////////////////////////////////////////////////////////////////////\n// STATIC MEMBERS\n/** Default sans-serif font family. */\nFont.SANS_SERIF = 'Arial, sans-serif';\n/** Default serif font family. */\nFont.SERIF = 'Times New Roman, serif';\n/** Default font size in `pt`. */\nFont.SIZE = 10;\n// CSS Font Sizes: 36pt == 48px == 3em == 300% == 0.5in\n/** Given a length (for units: pt, px, em, %, in, mm, cm) what is the scale factor to convert it to px? */\nFont.scaleToPxFrom = {\n pt: 4 / 3,\n px: 1,\n em: 16,\n '%': 4 / 25,\n in: 96,\n mm: 96 / 25.4,\n cm: 96 / 2.54,\n};\n/**\n * Customize this field to specify a different CDN for delivering web fonts.\n * Alternative: https://cdn.jsdelivr.net/npm/vexflow-fonts@1.0.3/\n * Or you can use your own host.\n */\nFont.WEB_FONT_HOST = 'https://unpkg.com/vexflow-fonts@1.0.3/';\n/**\n * These font files will be loaded from the CDN specified by `Font.WEB_FONT_HOST` when\n * `await Font.loadWebFonts()` is called. Customize this field to specify a different\n * set of fonts to load. See: `Font.loadWebFonts()`.\n */\nFont.WEB_FONT_FILES = {\n 'Roboto Slab': 'robotoslab/RobotoSlab-Medium_2.001.woff',\n PetalumaScript: 'petaluma/PetalumaScript_1.10_FS.woff',\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n//\n// ## Description\n//\n// This file implements a registry for VexFlow elements. It allows users\n// to track, query, and manage some subset of generated elements, and\n// dynamically get and set attributes.\n//\n// There are two ways to register with a registry:\n//\n// 1) Explicitly call `registry.register(elem:Element, id?:string)`, or,\n// 2) Call `Registry.enableDefaultRegistry(registry)` when ready, and all future\n// elements will automatically register with it.\n//\n// Once an element is registered, selected attributes are tracked and indexed by\n// the registry. This allows fast look up of elements by attributes like id, type,\n// and class.\nimport { RuntimeError } from './util';\n// Indexes are represented as maps of maps of maps. This allows\n// for both multi-labeling (e.g., an element can have multiple classes)\n// and efficient lookup.\nclass Index {\n constructor() {\n this.id = {};\n this.type = {};\n this.class = {};\n }\n}\nexport class Registry {\n constructor() {\n this.index = new Index();\n }\n static getDefaultRegistry() {\n return Registry.defaultRegistry;\n }\n // If you call `enableDefaultRegistry`, any new elements will auto-register with\n // the provided registry as soon as they're constructed.\n static enableDefaultRegistry(registry) {\n Registry.defaultRegistry = registry;\n }\n static disableDefaultRegistry() {\n Registry.defaultRegistry = undefined;\n }\n clear() {\n this.index = new Index();\n return this;\n }\n setIndexValue(name, value, id, elem) {\n const index = this.index;\n if (!index[name][value]) {\n index[name][value] = {};\n }\n index[name][value][id] = elem;\n }\n // Updates the indexes for element 'id'. If an element's attribute changes\n // from A -> B, make sure to remove the element from A.\n updateIndex({ id, name, value, oldValue }) {\n const elem = this.getElementById(id);\n if (oldValue !== undefined && this.index[name][oldValue]) {\n delete this.index[name][oldValue][id];\n }\n if (value && elem) {\n this.setIndexValue(name, value, elem.getAttribute('id'), elem);\n }\n }\n /**\n * Register element `elem` with this registry.\n * This adds the element to its index and watches it for attribute changes.\n * @param elem\n * @param id\n * @returns this\n */\n register(elem, id) {\n id = id || elem.getAttribute('id');\n if (!id) {\n throw new RuntimeError(\"Can't add element without `id` attribute to registry\");\n }\n // Manually add id to index, then update other indexes.\n elem.setAttribute('id', id);\n this.setIndexValue('id', id, id, elem);\n this.updateIndex({ id, name: 'type', value: elem.getAttribute('type'), oldValue: undefined });\n elem.onRegister(this);\n return this;\n }\n getElementById(id) {\n var _a, _b;\n return (_b = (_a = this.index.id) === null || _a === void 0 ? void 0 : _a[id]) === null || _b === void 0 ? void 0 : _b[id]; // return undefined if the id is not found.\n }\n getElementsByAttribute(attribute, value) {\n const index_attr = this.index[attribute];\n if (index_attr) {\n const index_attr_val = index_attr[value];\n if (index_attr_val) {\n const keys = Object.keys(index_attr_val);\n return keys.map((k) => index_attr_val[k]);\n }\n }\n return [];\n }\n getElementsByType(type) {\n return this.getElementsByAttribute('type', type);\n }\n getElementsByClass(className) {\n return this.getElementsByAttribute('class', className);\n }\n // This is called by the element when an attribute value changes. If an indexed\n // attribute changes, then update the local index.\n onUpdate(info) {\n const allowedNames = ['id', 'type', 'class'];\n if (allowedNames.includes(info.name)) {\n this.updateIndex(info);\n }\n return this;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Registry } from './registry';\nimport { Category } from './typeguard';\nimport { defined, prefix } from './util';\n/**\n * Element implements a generic base class for VexFlow, with implementations\n * of general functions and properties that can be inherited by all VexFlow elements.\n */\nexport class Element {\n constructor() {\n var _a;\n this.children = [];\n this.attrs = {\n id: Element.newID(),\n el: undefined,\n type: this.getCategory(),\n classes: {},\n };\n this.rendered = false;\n // If a default registry exist, then register with it right away.\n (_a = Registry.getDefaultRegistry()) === null || _a === void 0 ? void 0 : _a.register(this);\n }\n static get CATEGORY() {\n return Category.Element;\n }\n static newID() {\n return `auto${Element.ID++}`;\n }\n addChildElement(child) {\n this.children.push(child);\n return this;\n }\n getCategory() {\n return this.constructor.CATEGORY;\n }\n /**\n * Set the element style used to render.\n *\n * Example:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.draw();\n * ```\n * Note: If the element draws additional sub-elements (ie.: Modifiers in a Stave),\n * the style can be applied to all of them by means of the context:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.getContext().setFillStyle('red');\n * element.getContext().setStrokeStyle('red');\n * element.draw();\n * ```\n * or using drawWithStyle:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.drawWithStyle();\n * ```\n */\n setStyle(style) {\n this.style = style;\n return this;\n }\n /** Set the element & associated children style used for rendering. */\n setGroupStyle(style) {\n this.style = style;\n this.children.forEach((child) => child.setGroupStyle(style));\n return this;\n }\n /** Get the element style used for rendering. */\n getStyle() {\n return this.style;\n }\n /** Apply the element style to `context`. */\n applyStyle(context = this.context, style = this.getStyle()) {\n if (!style)\n return this;\n if (!context)\n return this;\n context.save();\n if (style.shadowColor)\n context.setShadowColor(style.shadowColor);\n if (style.shadowBlur)\n context.setShadowBlur(style.shadowBlur);\n if (style.fillStyle)\n context.setFillStyle(style.fillStyle);\n if (style.strokeStyle)\n context.setStrokeStyle(style.strokeStyle);\n if (style.lineWidth)\n context.setLineWidth(style.lineWidth);\n return this;\n }\n /** Restore the style of `context`. */\n restoreStyle(context = this.context, style = this.getStyle()) {\n if (!style)\n return this;\n if (!context)\n return this;\n context.restore();\n return this;\n }\n /**\n * Draw the element and all its sub-elements (ie.: Modifiers in a Stave)\n * with the element style.\n */\n drawWithStyle() {\n this.checkContext();\n this.applyStyle();\n this.draw();\n this.restoreStyle();\n }\n /** Check if it has a class label (An element can have multiple class labels). */\n hasClass(className) {\n return this.attrs.classes[className] === true;\n }\n /** Add a class label (An element can have multiple class labels). */\n addClass(className) {\n var _a;\n this.attrs.classes[className] = true;\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({\n id: this.attrs.id,\n name: 'class',\n value: className,\n oldValue: undefined,\n });\n return this;\n }\n /** Remove a class label (An element can have multiple class labels). */\n removeClass(className) {\n var _a;\n delete this.attrs.classes[className];\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({\n id: this.attrs.id,\n name: 'class',\n value: undefined,\n oldValue: className,\n });\n return this;\n }\n /** Call back from registry after the element is registered. */\n onRegister(registry) {\n this.registry = registry;\n return this;\n }\n /** Return the rendered status. */\n isRendered() {\n return this.rendered;\n }\n /** Set the rendered status. */\n setRendered(rendered = true) {\n this.rendered = rendered;\n return this;\n }\n /** Return the element attributes. */\n getAttributes() {\n return this.attrs;\n }\n /** Return an attribute. */\n // eslint-disable-next-line\n getAttribute(name) {\n return this.attrs[name];\n }\n /** Return associated SVGElement. */\n getSVGElement(suffix = '') {\n const id = prefix(this.attrs.id + suffix);\n const element = document.getElementById(id);\n if (element)\n return element;\n }\n /** Set an attribute. */\n // eslint-disable-next-line\n setAttribute(name, value) {\n var _a;\n const oldID = this.attrs.id;\n const oldValue = this.attrs[name];\n this.attrs[name] = value;\n // Register with old id to support id changes.\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({ id: oldID, name, value, oldValue });\n return this;\n }\n /** Get the boundingBox. */\n getBoundingBox() {\n return this.boundingBox;\n }\n /** Return the context. */\n getContext() {\n return this.context;\n }\n /** Set the context. */\n setContext(context) {\n this.context = context;\n return this;\n }\n /** Validate and return the context. */\n checkContext() {\n return defined(this.context, 'NoContext', 'No rendering context attached to instance.');\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // Font Handling\n /**\n * Provide a CSS compatible font string (e.g., 'bold 16px Arial').\n */\n set font(f) {\n this.setFont(f);\n }\n /** Returns the CSS compatible font string. */\n get font() {\n return Font.toCSSString(this.textFont);\n }\n /**\n * Set the element's font family, size, weight, style (e.g., `Arial`, `10pt`, `bold`, `italic`).\n * @param font is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (at least one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n * If no arguments are provided, then the font is set to the default font.\n * Each Element subclass may specify its own default by overriding the static `TEXT_FONT` property.\n */\n setFont(font, size, weight, style) {\n // Allow subclasses to override `TEXT_FONT`.\n const defaultTextFont = this.constructor.TEXT_FONT;\n const fontIsObject = typeof font === 'object';\n const fontIsString = typeof font === 'string';\n const fontIsUndefined = font === undefined;\n const sizeWeightStyleAreUndefined = size === undefined && weight === undefined && style === undefined;\n if (fontIsObject) {\n // `font` is case 1) a FontInfo object\n this.textFont = Object.assign(Object.assign({}, defaultTextFont), font);\n }\n else if (fontIsString && sizeWeightStyleAreUndefined) {\n // `font` is case 2) CSS font shorthand.\n this.textFont = Font.fromCSSString(font);\n }\n else if (fontIsUndefined && sizeWeightStyleAreUndefined) {\n // All arguments are undefined. Do not check for `arguments.length === 0`,\n // which fails on the edge case: `setFont(undefined)`.\n // TODO: See if we can remove this case entirely without introducing a visual diff.\n // The else case below seems like it should be equivalent to this case.\n this.textFont = Object.assign({}, defaultTextFont);\n }\n else {\n // `font` is case 3) a font family string (e.g., 'Times New Roman').\n // The other parameters represent the size, weight, and style.\n // It is okay for `font` to be undefined while one or more of the other arguments is provided.\n // Following CSS conventions, unspecified params are reset to the default.\n this.textFont = Font.validate(font !== null && font !== void 0 ? font : defaultTextFont.family, size !== null && size !== void 0 ? size : defaultTextFont.size, weight !== null && weight !== void 0 ? weight : defaultTextFont.weight, style !== null && style !== void 0 ? style : defaultTextFont.style);\n }\n return this;\n }\n getFont() {\n if (!this.textFont) {\n this.resetFont();\n }\n return Font.toCSSString(this.textFont);\n }\n /**\n * Reset the text font to the style indicated by the static `TEXT_FONT` property.\n * Subclasses can call this to initialize `textFont` for the first time.\n */\n resetFont() {\n this.setFont();\n }\n /** Return a copy of the current FontInfo object. */\n get fontInfo() {\n if (!this.textFont) {\n this.resetFont();\n }\n // We can cast to Required here, because\n // we just called resetFont() above to ensure this.textFont is set.\n return Object.assign({}, this.textFont);\n }\n set fontInfo(fontInfo) {\n this.setFont(fontInfo);\n }\n /** Change the font size, while keeping everything else the same. */\n setFontSize(size) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, size, fontInfo.weight, fontInfo.style);\n return this;\n }\n /**\n * @returns a CSS font-size string (e.g., '18pt', '12px', '1em').\n * See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.\n */\n getFontSize() {\n return this.fontSize;\n }\n /**\n * The size is 1) a string of the form '10pt' or '16px', compatible with the CSS font-size property.\n * or 2) a number, which is interpreted as a point size (i.e. 12 == '12pt').\n */\n set fontSize(size) {\n this.setFontSize(size);\n }\n /**\n * @returns a CSS font-size string (e.g., '18pt', '12px', '1em').\n */\n get fontSize() {\n let size = this.fontInfo.size;\n if (typeof size === 'number') {\n size = `${size}pt`;\n }\n return size;\n }\n /**\n * @returns the font size in `pt`.\n */\n get fontSizeInPoints() {\n return Font.convertSizeToPointValue(this.fontSize);\n }\n /**\n * @returns the font size in `px`.\n */\n get fontSizeInPixels() {\n return Font.convertSizeToPixelValue(this.fontSize);\n }\n /**\n * @returns a CSS font-style string (e.g., 'italic').\n */\n get fontStyle() {\n return this.fontInfo.style;\n }\n set fontStyle(style) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, fontInfo.size, fontInfo.weight, style);\n }\n /**\n * @returns a CSS font-weight string (e.g., 'bold').\n * As in CSS, font-weight is always returned as a string, even if it was set as a number.\n */\n get fontWeight() {\n return this.fontInfo.weight + '';\n }\n set fontWeight(weight) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, fontInfo.size, weight, fontInfo.style);\n }\n}\nElement.ID = 1000;\n/**\n * Default font for text. This is not related to music engraving. Instead, see `Flow.setMusicFont(...fontNames)`\n * to customize the font for musical symbols placed on the score.\n */\nElement.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: Font.SIZE,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Fraction } from './fraction';\nimport { Glyph } from './glyph';\nimport { RuntimeError } from './util';\nconst RESOLUTION = 16384;\n/**\n * Map duration numbers to 'ticks', the unit of duration used throughout VexFlow.\n * For example, a quarter note is 4, so it maps to RESOLUTION / 4 = 4096 ticks.\n */\nconst durations = {\n '1/2': RESOLUTION * 2,\n 1: RESOLUTION / 1,\n 2: RESOLUTION / 2,\n 4: RESOLUTION / 4,\n 8: RESOLUTION / 8,\n 16: RESOLUTION / 16,\n 32: RESOLUTION / 32,\n 64: RESOLUTION / 64,\n 128: RESOLUTION / 128,\n 256: RESOLUTION / 256,\n};\nconst durationAliases = {\n w: '1',\n h: '2',\n q: '4',\n // This is the default duration used to render bars (BarNote). Bars no longer\n // consume ticks, so this should be a no-op.\n // TODO(0xfe): This needs to be cleaned up.\n b: '256',\n};\nconst keySignatures = {\n C: { num: 0 },\n Am: { num: 0 },\n F: { acc: 'b', num: 1 },\n Dm: { acc: 'b', num: 1 },\n Bb: { acc: 'b', num: 2 },\n Gm: { acc: 'b', num: 2 },\n Eb: { acc: 'b', num: 3 },\n Cm: { acc: 'b', num: 3 },\n Ab: { acc: 'b', num: 4 },\n Fm: { acc: 'b', num: 4 },\n Db: { acc: 'b', num: 5 },\n Bbm: { acc: 'b', num: 5 },\n Gb: { acc: 'b', num: 6 },\n Ebm: { acc: 'b', num: 6 },\n Cb: { acc: 'b', num: 7 },\n Abm: { acc: 'b', num: 7 },\n G: { acc: '#', num: 1 },\n Em: { acc: '#', num: 1 },\n D: { acc: '#', num: 2 },\n Bm: { acc: '#', num: 2 },\n A: { acc: '#', num: 3 },\n 'F#m': { acc: '#', num: 3 },\n E: { acc: '#', num: 4 },\n 'C#m': { acc: '#', num: 4 },\n B: { acc: '#', num: 5 },\n 'G#m': { acc: '#', num: 5 },\n 'F#': { acc: '#', num: 6 },\n 'D#m': { acc: '#', num: 6 },\n 'C#': { acc: '#', num: 7 },\n 'A#m': { acc: '#', num: 7 },\n};\nconst clefs = {\n treble: { line_shift: 0 },\n bass: { line_shift: 6 },\n tenor: { line_shift: 4 },\n alto: { line_shift: 3 },\n soprano: { line_shift: 1 },\n percussion: { line_shift: 0 },\n 'mezzo-soprano': { line_shift: 2 },\n 'baritone-c': { line_shift: 5 },\n 'baritone-f': { line_shift: 5 },\n subbass: { line_shift: 7 },\n french: { line_shift: -1 },\n};\nconst notesInfo = {\n C: { index: 0, int_val: 0 },\n CN: { index: 0, int_val: 0, accidental: 'n' },\n 'C#': { index: 0, int_val: 1, accidental: '#' },\n 'C##': { index: 0, int_val: 2, accidental: '##' },\n CB: { index: 0, int_val: 11, accidental: 'b' },\n CBB: { index: 0, int_val: 10, accidental: 'bb' },\n D: { index: 1, int_val: 2 },\n DN: { index: 1, int_val: 2, accidental: 'n' },\n 'D#': { index: 1, int_val: 3, accidental: '#' },\n 'D##': { index: 1, int_val: 4, accidental: '##' },\n DB: { index: 1, int_val: 1, accidental: 'b' },\n DBB: { index: 1, int_val: 0, accidental: 'bb' },\n E: { index: 2, int_val: 4 },\n EN: { index: 2, int_val: 4, accidental: 'n' },\n 'E#': { index: 2, int_val: 5, accidental: '#' },\n 'E##': { index: 2, int_val: 6, accidental: '##' },\n EB: { index: 2, int_val: 3, accidental: 'b' },\n EBB: { index: 2, int_val: 2, accidental: 'bb' },\n F: { index: 3, int_val: 5 },\n FN: { index: 3, int_val: 5, accidental: 'n' },\n 'F#': { index: 3, int_val: 6, accidental: '#' },\n 'F##': { index: 3, int_val: 7, accidental: '##' },\n FB: { index: 3, int_val: 4, accidental: 'b' },\n FBB: { index: 3, int_val: 3, accidental: 'bb' },\n G: { index: 4, int_val: 7 },\n GN: { index: 4, int_val: 7, accidental: 'n' },\n 'G#': { index: 4, int_val: 8, accidental: '#' },\n 'G##': { index: 4, int_val: 9, accidental: '##' },\n GB: { index: 4, int_val: 6, accidental: 'b' },\n GBB: { index: 4, int_val: 5, accidental: 'bb' },\n A: { index: 5, int_val: 9 },\n AN: { index: 5, int_val: 9, accidental: 'n' },\n 'A#': { index: 5, int_val: 10, accidental: '#' },\n 'A##': { index: 5, int_val: 11, accidental: '##' },\n AB: { index: 5, int_val: 8, accidental: 'b' },\n ABB: { index: 5, int_val: 7, accidental: 'bb' },\n B: { index: 6, int_val: 11 },\n BN: { index: 6, int_val: 11, accidental: 'n' },\n 'B#': { index: 6, int_val: 12, accidental: '#' },\n 'B##': { index: 6, int_val: 13, accidental: '##' },\n BB: { index: 6, int_val: 10, accidental: 'b' },\n BBB: { index: 6, int_val: 9, accidental: 'bb' },\n R: { index: 6, rest: true },\n X: {\n index: 6,\n accidental: '',\n octave: 4,\n code: 'noteheadXBlack',\n shift_right: 5.5,\n },\n};\nconst validNoteTypes = {\n n: { name: 'note' },\n r: { name: 'rest' },\n h: { name: 'harmonic' },\n m: { name: 'muted' },\n s: { name: 'slash' },\n g: { name: 'ghost' },\n d: { name: 'diamond' },\n x: { name: 'x' },\n ci: { name: 'circled' },\n cx: { name: 'circle x' },\n sf: { name: 'slashed' },\n sb: { name: 'slashed backward' },\n sq: { name: 'square' },\n tu: { name: 'triangle up' },\n td: { name: 'triangle down' },\n};\nconst accidentals = {\n '#': { code: 'accidentalSharp', parenRightPaddingAdjustment: -1 },\n '##': { code: 'accidentalDoubleSharp', parenRightPaddingAdjustment: -1 },\n b: { code: 'accidentalFlat', parenRightPaddingAdjustment: -2 },\n bb: { code: 'accidentalDoubleFlat', parenRightPaddingAdjustment: -2 },\n n: { code: 'accidentalNatural', parenRightPaddingAdjustment: -1 },\n '{': { code: 'accidentalParensLeft', parenRightPaddingAdjustment: -1 },\n '}': { code: 'accidentalParensRight', parenRightPaddingAdjustment: -1 },\n db: { code: 'accidentalThreeQuarterTonesFlatZimmermann', parenRightPaddingAdjustment: -1 },\n d: { code: 'accidentalQuarterToneFlatStein', parenRightPaddingAdjustment: 0 },\n '++': { code: 'accidentalThreeQuarterTonesSharpStein', parenRightPaddingAdjustment: -1 },\n '+': { code: 'accidentalQuarterToneSharpStein', parenRightPaddingAdjustment: -1 },\n '+-': { code: 'accidentalKucukMucennebSharp', parenRightPaddingAdjustment: -1 },\n bs: { code: 'accidentalBakiyeFlat', parenRightPaddingAdjustment: -1 },\n bss: { code: 'accidentalBuyukMucennebFlat', parenRightPaddingAdjustment: -1 },\n o: { code: 'accidentalSori', parenRightPaddingAdjustment: -1 },\n k: { code: 'accidentalKoron', parenRightPaddingAdjustment: -1 },\n bbs: { code: 'vexAccidentalMicrotonal1', parenRightPaddingAdjustment: -1 },\n '++-': { code: 'vexAccidentalMicrotonal2', parenRightPaddingAdjustment: -1 },\n ashs: { code: 'vexAccidentalMicrotonal3', parenRightPaddingAdjustment: -1 },\n afhf: { code: 'vexAccidentalMicrotonal4', parenRightPaddingAdjustment: -1 },\n accSagittal5v7KleismaUp: { code: 'accSagittal5v7KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v7KleismaDown: { code: 'accSagittal5v7KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5CommaUp: { code: 'accSagittal5CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5CommaDown: { code: 'accSagittal5CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7CommaUp: { code: 'accSagittal7CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7CommaDown: { code: 'accSagittal7CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal25SmallDiesisUp: { code: 'accSagittal25SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal25SmallDiesisDown: { code: 'accSagittal25SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal35MediumDiesisUp: { code: 'accSagittal35MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal35MediumDiesisDown: { code: 'accSagittal35MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11MediumDiesisUp: { code: 'accSagittal11MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11MediumDiesisDown: { code: 'accSagittal11MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11LargeDiesisUp: { code: 'accSagittal11LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11LargeDiesisDown: { code: 'accSagittal11LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal35LargeDiesisUp: { code: 'accSagittal35LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal35LargeDiesisDown: { code: 'accSagittal35LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp25SDown: { code: 'accSagittalSharp25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat25SUp: { code: 'accSagittalFlat25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7CDown: { code: 'accSagittalSharp7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7CUp: { code: 'accSagittalFlat7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5CDown: { code: 'accSagittalSharp5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5CUp: { code: 'accSagittalFlat5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v7kDown: { code: 'accSagittalSharp5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v7kUp: { code: 'accSagittalFlat5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp: { code: 'accSagittalSharp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat: { code: 'accSagittalFlat', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v7kUp: { code: 'accSagittalSharp5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v7kDown: { code: 'accSagittalFlat5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5CUp: { code: 'accSagittalSharp5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5CDown: { code: 'accSagittalFlat5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7CUp: { code: 'accSagittalSharp7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7CDown: { code: 'accSagittalFlat7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp25SUp: { code: 'accSagittalSharp25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat25SDown: { code: 'accSagittalFlat25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp35MUp: { code: 'accSagittalSharp35MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat35MDown: { code: 'accSagittalFlat35MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11MUp: { code: 'accSagittalSharp11MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11MDown: { code: 'accSagittalFlat11MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11LUp: { code: 'accSagittalSharp11LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11LDown: { code: 'accSagittalFlat11LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp35LUp: { code: 'accSagittalSharp35LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat35LDown: { code: 'accSagittalFlat35LDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp25SDown: { code: 'accSagittalDoubleSharp25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat25SUp: { code: 'accSagittalDoubleFlat25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7CDown: { code: 'accSagittalDoubleSharp7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7CUp: { code: 'accSagittalDoubleFlat7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5CDown: { code: 'accSagittalDoubleSharp5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5CUp: { code: 'accSagittalDoubleFlat5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v7kDown: { code: 'accSagittalDoubleSharp5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v7kUp: { code: 'accSagittalDoubleFlat5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp: { code: 'accSagittalDoubleSharp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat: { code: 'accSagittalDoubleFlat', parenRightPaddingAdjustment: -1 },\n accSagittal7v11KleismaUp: { code: 'accSagittal7v11KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v11KleismaDown: { code: 'accSagittal7v11KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal17CommaUp: { code: 'accSagittal17CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal17CommaDown: { code: 'accSagittal17CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal55CommaUp: { code: 'accSagittal55CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal55CommaDown: { code: 'accSagittal55CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7v11CommaUp: { code: 'accSagittal7v11CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v11CommaDown: { code: 'accSagittal7v11CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v11SmallDiesisUp: { code: 'accSagittal5v11SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v11SmallDiesisDown: { code: 'accSagittal5v11SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v11SDown: { code: 'accSagittalSharp5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v11SUp: { code: 'accSagittalFlat5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11CDown: { code: 'accSagittalSharp7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11CUp: { code: 'accSagittalFlat7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp55CDown: { code: 'accSagittalSharp55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat55CUp: { code: 'accSagittalFlat55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17CDown: { code: 'accSagittalSharp17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17CUp: { code: 'accSagittalFlat17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11kDown: { code: 'accSagittalSharp7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11kUp: { code: 'accSagittalFlat7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11kUp: { code: 'accSagittalSharp7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11kDown: { code: 'accSagittalFlat7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17CUp: { code: 'accSagittalSharp17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17CDown: { code: 'accSagittalFlat17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp55CUp: { code: 'accSagittalSharp55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat55CDown: { code: 'accSagittalFlat55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11CUp: { code: 'accSagittalSharp7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11CDown: { code: 'accSagittalFlat7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v11SUp: { code: 'accSagittalSharp5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v11SDown: { code: 'accSagittalFlat5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v11SDown: { code: 'accSagittalDoubleSharp5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v11SUp: { code: 'accSagittalDoubleFlat5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v11CDown: { code: 'accSagittalDoubleSharp7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v11CUp: { code: 'accSagittalDoubleFlat7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp55CDown: { code: 'accSagittalDoubleSharp55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat55CUp: { code: 'accSagittalDoubleFlat55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp17CDown: { code: 'accSagittalDoubleSharp17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat17CUp: { code: 'accSagittalDoubleFlat17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v11kDown: { code: 'accSagittalDoubleSharp7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v11kUp: { code: 'accSagittalDoubleFlat7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittal23CommaUp: { code: 'accSagittal23CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal23CommaDown: { code: 'accSagittal23CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v19CommaUp: { code: 'accSagittal5v19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v19CommaDown: { code: 'accSagittal5v19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v23SmallDiesisUp: { code: 'accSagittal5v23SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v23SmallDiesisDown: { code: 'accSagittal5v23SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v23SDown: { code: 'accSagittalSharp5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v23SUp: { code: 'accSagittalFlat5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v19CDown: { code: 'accSagittalSharp5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v19CUp: { code: 'accSagittalFlat5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23CDown: { code: 'accSagittalSharp23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23CUp: { code: 'accSagittalFlat23CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23CUp: { code: 'accSagittalSharp23CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23CDown: { code: 'accSagittalFlat23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v19CUp: { code: 'accSagittalSharp5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v19CDown: { code: 'accSagittalFlat5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v23SUp: { code: 'accSagittalSharp5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v23SDown: { code: 'accSagittalFlat5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v23SDown: { code: 'accSagittalDoubleSharp5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v23SUp: { code: 'accSagittalDoubleFlat5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v19CDown: { code: 'accSagittalDoubleSharp5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v19CUp: { code: 'accSagittalDoubleFlat5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp23CDown: { code: 'accSagittalDoubleSharp23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat23CUp: { code: 'accSagittalDoubleFlat23CUp', parenRightPaddingAdjustment: -1 },\n accSagittal19SchismaUp: { code: 'accSagittal19SchismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal19SchismaDown: { code: 'accSagittal19SchismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal17KleismaUp: { code: 'accSagittal17KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal17KleismaDown: { code: 'accSagittal17KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal143CommaUp: { code: 'accSagittal143CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal143CommaDown: { code: 'accSagittal143CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v49CommaUp: { code: 'accSagittal11v49CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v49CommaDown: { code: 'accSagittal11v49CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal19CommaUp: { code: 'accSagittal19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal19CommaDown: { code: 'accSagittal19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7v19CommaUp: { code: 'accSagittal7v19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v19CommaDown: { code: 'accSagittal7v19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal49SmallDiesisUp: { code: 'accSagittal49SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49SmallDiesisDown: { code: 'accSagittal49SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal23SmallDiesisUp: { code: 'accSagittal23SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal23SmallDiesisDown: { code: 'accSagittal23SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v13MediumDiesisUp: { code: 'accSagittal5v13MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v13MediumDiesisDown: { code: 'accSagittal5v13MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v19MediumDiesisUp: { code: 'accSagittal11v19MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v19MediumDiesisDown: { code: 'accSagittal11v19MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal49MediumDiesisUp: { code: 'accSagittal49MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49MediumDiesisDown: { code: 'accSagittal49MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v49MediumDiesisUp: { code: 'accSagittal5v49MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v49MediumDiesisDown: { code: 'accSagittal5v49MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal49LargeDiesisUp: { code: 'accSagittal49LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49LargeDiesisDown: { code: 'accSagittal49LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v19LargeDiesisUp: { code: 'accSagittal11v19LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v19LargeDiesisDown: { code: 'accSagittal11v19LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v13LargeDiesisUp: { code: 'accSagittal5v13LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v13LargeDiesisDown: { code: 'accSagittal5v13LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23SDown: { code: 'accSagittalSharp23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23SUp: { code: 'accSagittalFlat23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49SDown: { code: 'accSagittalSharp49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49SUp: { code: 'accSagittalFlat49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v19CDown: { code: 'accSagittalSharp7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v19CUp: { code: 'accSagittalFlat7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19CDown: { code: 'accSagittalSharp19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19CUp: { code: 'accSagittalFlat19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v49CDown: { code: 'accSagittalSharp11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v49CUp: { code: 'accSagittalFlat11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp143CDown: { code: 'accSagittalSharp143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat143CUp: { code: 'accSagittalFlat143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17kDown: { code: 'accSagittalSharp17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17kUp: { code: 'accSagittalFlat17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19sDown: { code: 'accSagittalSharp19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19sUp: { code: 'accSagittalFlat19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19sUp: { code: 'accSagittalSharp19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19sDown: { code: 'accSagittalFlat19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17kUp: { code: 'accSagittalSharp17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17kDown: { code: 'accSagittalFlat17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp143CUp: { code: 'accSagittalSharp143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat143CDown: { code: 'accSagittalFlat143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v49CUp: { code: 'accSagittalSharp11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v49CDown: { code: 'accSagittalFlat11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19CUp: { code: 'accSagittalSharp19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19CDown: { code: 'accSagittalFlat19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v19CUp: { code: 'accSagittalSharp7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v19CDown: { code: 'accSagittalFlat7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49SUp: { code: 'accSagittalSharp49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49SDown: { code: 'accSagittalFlat49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23SUp: { code: 'accSagittalSharp23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23SDown: { code: 'accSagittalFlat23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v13MUp: { code: 'accSagittalSharp5v13MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v13MDown: { code: 'accSagittalFlat5v13MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v19MUp: { code: 'accSagittalSharp11v19MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v19MDown: { code: 'accSagittalFlat11v19MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49MUp: { code: 'accSagittalSharp49MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49MDown: { code: 'accSagittalFlat49MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v49MUp: { code: 'accSagittalSharp5v49MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v49MDown: { code: 'accSagittalFlat5v49MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49LUp: { code: 'accSagittalSharp49LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49LDown: { code: 'accSagittalFlat49LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v19LUp: { code: 'accSagittalSharp11v19LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v19LDown: { code: 'accSagittalFlat11v19LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v13LUp: { code: 'accSagittalSharp5v13LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v13LDown: { code: 'accSagittalFlat5v13LDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp23SDown: { code: 'accSagittalDoubleSharp23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat23SUp: { code: 'accSagittalDoubleFlat23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp49SDown: { code: 'accSagittalDoubleSharp49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat49SUp: { code: 'accSagittalDoubleFlat49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v19CDown: { code: 'accSagittalDoubleSharp7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v19CUp: { code: 'accSagittalDoubleFlat7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp19CDown: { code: 'accSagittalDoubleSharp19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat19CUp: { code: 'accSagittalDoubleFlat19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp11v49CDown: { code: 'accSagittalDoubleSharp11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat11v49CUp: { code: 'accSagittalDoubleFlat11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp143CDown: { code: 'accSagittalDoubleSharp143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat143CUp: { code: 'accSagittalDoubleFlat143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp17kDown: { code: 'accSagittalDoubleSharp17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat17kUp: { code: 'accSagittalDoubleFlat17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp19sDown: { code: 'accSagittalDoubleSharp19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat19sUp: { code: 'accSagittalDoubleFlat19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalShaftUp: { code: 'accSagittalShaftUp', parenRightPaddingAdjustment: -1 },\n accSagittalShaftDown: { code: 'accSagittalShaftDown', parenRightPaddingAdjustment: -1 },\n accSagittalAcute: { code: 'accSagittalAcute', parenRightPaddingAdjustment: -1 },\n accSagittalGrave: { code: 'accSagittalGrave', parenRightPaddingAdjustment: -1 },\n accSagittal1MinaUp: { code: 'accSagittal1MinaUp', parenRightPaddingAdjustment: -1 },\n accSagittal1MinaDown: { code: 'accSagittal1MinaDown', parenRightPaddingAdjustment: -1 },\n accSagittal2MinasUp: { code: 'accSagittal2MinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal2MinasDown: { code: 'accSagittal2MinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal1TinaUp: { code: 'accSagittal1TinaUp', parenRightPaddingAdjustment: -1 },\n accSagittal1TinaDown: { code: 'accSagittal1TinaDown', parenRightPaddingAdjustment: -1 },\n accSagittal2TinasUp: { code: 'accSagittal2TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal2TinasDown: { code: 'accSagittal2TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal3TinasUp: { code: 'accSagittal3TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal3TinasDown: { code: 'accSagittal3TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal4TinasUp: { code: 'accSagittal4TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal4TinasDown: { code: 'accSagittal4TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal5TinasUp: { code: 'accSagittal5TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal5TinasDown: { code: 'accSagittal5TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal6TinasUp: { code: 'accSagittal6TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal6TinasDown: { code: 'accSagittal6TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal7TinasUp: { code: 'accSagittal7TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal7TinasDown: { code: 'accSagittal7TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal8TinasUp: { code: 'accSagittal8TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal8TinasDown: { code: 'accSagittal8TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal9TinasUp: { code: 'accSagittal9TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal9TinasDown: { code: 'accSagittal9TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittalFractionalTinaUp: { code: 'accSagittalFractionalTinaUp', parenRightPaddingAdjustment: -1 },\n accSagittalFractionalTinaDown: { code: 'accSagittalFractionalTinaDown', parenRightPaddingAdjustment: -1 },\n accidentalNarrowReversedFlat: { code: 'accidentalNarrowReversedFlat', parenRightPaddingAdjustment: -1 },\n accidentalNarrowReversedFlatAndFlat: {\n code: 'accidentalNarrowReversedFlatAndFlat',\n parenRightPaddingAdjustment: -1,\n },\n accidentalWilsonPlus: { code: 'accidentalWilsonPlus', parenRightPaddingAdjustment: -1 },\n accidentalWilsonMinus: { code: 'accidentalWilsonMinus', parenRightPaddingAdjustment: -1 },\n};\n// Helps determine the layout of accidentals.\nconst accidentalColumns = {\n 1: {\n a: [1],\n b: [1],\n },\n 2: {\n a: [1, 2],\n },\n 3: {\n a: [1, 3, 2],\n b: [1, 2, 1],\n second_on_bottom: [1, 2, 3],\n },\n 4: {\n a: [1, 3, 4, 2],\n b: [1, 2, 3, 1],\n spaced_out_tetrachord: [1, 2, 1, 2],\n },\n 5: {\n a: [1, 3, 5, 4, 2],\n b: [1, 2, 4, 3, 1],\n spaced_out_pentachord: [1, 2, 3, 2, 1],\n very_spaced_out_pentachord: [1, 2, 1, 2, 1],\n },\n 6: {\n a: [1, 3, 5, 6, 4, 2],\n b: [1, 2, 4, 5, 3, 1],\n spaced_out_hexachord: [1, 3, 2, 1, 3, 2],\n very_spaced_out_hexachord: [1, 2, 1, 2, 1, 2],\n },\n};\nconst articulations = {\n 'a.': { code: 'augmentationDot', between_lines: true },\n av: {\n aboveCode: 'articStaccatissimoAbove',\n belowCode: 'articStaccatissimoBelow',\n between_lines: true,\n },\n 'a>': {\n aboveCode: 'articAccentAbove',\n belowCode: 'articAccentBelow',\n between_lines: true,\n },\n 'a-': {\n aboveCode: 'articTenutoAbove',\n belowCode: 'articTenutoBelow',\n between_lines: true,\n },\n 'a^': {\n aboveCode: 'articMarcatoAbove',\n belowCode: 'articMarcatoBelow',\n between_lines: false,\n },\n 'a+': { code: 'pluckedLeftHandPizzicato', between_lines: false },\n ao: {\n aboveCode: 'pluckedSnapPizzicatoAbove',\n belowCode: 'pluckedSnapPizzicatoBelow',\n between_lines: false,\n },\n ah: { code: 'stringsHarmonic', between_lines: false },\n 'a@': { aboveCode: 'fermataAbove', belowCode: 'fermataBelow', between_lines: false },\n 'a@a': { code: 'fermataAbove', between_lines: false },\n 'a@u': { code: 'fermataBelow', between_lines: false },\n 'a@s': { aboveCode: 'fermataShortAbove', belowCode: 'fermataShortBelow', between_lines: false },\n 'a@as': { code: 'fermataShortAbove', between_lines: false },\n 'a@us': { code: 'fermataShortBelow', between_lines: false },\n 'a@l': { aboveCode: 'fermataLongAbove', belowCode: 'fermataLongBelow', between_lines: false },\n 'a@al': { code: 'fermataLongAbove', between_lines: false },\n 'a@ul': { code: 'fermataLongBelow', between_lines: false },\n 'a@vl': { aboveCode: 'fermataVeryLongAbove', belowCode: 'fermataVeryLongBelow', between_lines: false },\n 'a@avl': { code: 'fermataVeryLongAbove', between_lines: false },\n 'a@uvl': { code: 'fermataVeryLongBelow', between_lines: false },\n 'a|': { code: 'stringsUpBow', between_lines: false },\n am: { code: 'stringsDownBow', between_lines: false },\n 'a,': { code: 'pictChokeCymbal', between_lines: false }, // Choked\n};\nconst ornaments = {\n mordent: { code: 'ornamentShortTrill' },\n mordent_inverted: { code: 'ornamentMordent' },\n turn: { code: 'ornamentTurn' },\n turn_inverted: { code: 'ornamentTurnSlash' },\n tr: { code: 'ornamentTrill' },\n upprall: { code: 'ornamentPrecompSlideTrillDAnglebert' },\n downprall: { code: 'ornamentPrecompDoubleCadenceUpperPrefix' },\n prallup: { code: 'ornamentPrecompTrillSuffixDandrieu' },\n pralldown: { code: 'ornamentPrecompTrillLowerSuffix' },\n upmordent: { code: 'ornamentPrecompSlideTrillBach' },\n downmordent: { code: 'ornamentPrecompDoubleCadenceUpperPrefixTurn' },\n lineprall: { code: 'ornamentPrecompAppoggTrill' },\n prallprall: { code: 'ornamentTremblement' },\n scoop: { code: 'brassScoop' },\n doit: { code: 'brassDoitMedium' },\n fall: { code: 'brassFallLipShort' },\n doitLong: { code: 'brassLiftMedium' },\n fallLong: { code: 'brassFallRoughMedium' },\n bend: { code: 'brassBend' },\n plungerClosed: { code: 'brassMuteClosed' },\n plungerOpen: { code: 'brassMuteOpen' },\n flip: { code: 'brassFlip' },\n jazzTurn: { code: 'brassJazzTurn' },\n smear: { code: 'brassSmear' },\n};\nexport class Tables {\n /**\n * @returns the `Font` object at the head of the music font stack.\n */\n static currentMusicFont() {\n if (Tables.MUSIC_FONT_STACK.length === 0) {\n throw new RuntimeError('NoFonts', 'The font stack is empty. See: await Flow.fetchMusicFont(...); Flow.setMusicFont(...).');\n }\n else {\n return Tables.MUSIC_FONT_STACK[0];\n }\n }\n static clefProperties(clef) {\n if (!clef || !(clef in clefs))\n throw new RuntimeError('BadArgument', 'Invalid clef: ' + clef);\n return clefs[clef];\n }\n /**\n * @param keyOctaveGlyph a string in the format \"key/octave\" (e.g., \"c/5\") or \"key/octave/custom-note-head-code\" (e.g., \"g/5/t3\").\n * @param clef\n * @param params a struct with one option, `octave_shift` for clef ottavation (0 = default; 1 = 8va; -1 = 8vb, etc.).\n * @returns properties for the specified note.\n */\n // eslint-disable-next-line\n static keyProperties(keyOctaveGlyph, clef = 'treble', params) {\n let options = { octave_shift: 0, duration: '4' };\n if (typeof params === 'object') {\n options = Object.assign(Object.assign({}, options), params);\n }\n const duration = Tables.sanitizeDuration(options.duration);\n const pieces = keyOctaveGlyph.split('/');\n if (pieces.length < 2) {\n throw new RuntimeError('BadArguments', `First argument must be note/octave or note/octave/glyph-code: ${keyOctaveGlyph}`);\n }\n const key = pieces[0].toUpperCase();\n const value = notesInfo[key];\n if (!value)\n throw new RuntimeError('BadArguments', 'Invalid key name: ' + key);\n if (value.octave)\n pieces[1] = value.octave.toString();\n let octave = parseInt(pieces[1], 10);\n // Octave_shift is the shift to compensate for clef 8va/8vb.\n octave += -1 * options.octave_shift;\n const baseIndex = octave * 7 - 4 * 7;\n let line = (baseIndex + value.index) / 2;\n line += Tables.clefProperties(clef).line_shift;\n let stroke = 0;\n if (line <= 0 && (line * 2) % 2 === 0)\n stroke = 1; // stroke up\n if (line >= 6 && (line * 2) % 2 === 0)\n stroke = -1; // stroke down\n // Integer value for note arithmetic.\n const int_value = typeof value.int_val !== 'undefined' ? octave * 12 + value.int_val : undefined;\n // If the user specified a glyph, overwrite the glyph code.\n const code = value.code;\n const shift_right = value.shift_right;\n let customNoteHeadProps = {};\n if (pieces.length > 2 && pieces[2]) {\n const glyphName = pieces[2].toUpperCase();\n customNoteHeadProps = { code: this.codeNoteHead(glyphName, duration) } || {};\n }\n return Object.assign({ key,\n octave,\n line,\n int_value, accidental: value.accidental, code,\n stroke,\n shift_right, displaced: false }, customNoteHeadProps);\n }\n static integerToNote(integer) {\n if (typeof integer === 'undefined' || integer < 0 || integer > 11) {\n throw new RuntimeError('BadArguments', `integerToNote() requires an integer in the range [0, 11]: ${integer}`);\n }\n const table = {\n 0: 'C',\n 1: 'C#',\n 2: 'D',\n 3: 'D#',\n 4: 'E',\n 5: 'F',\n 6: 'F#',\n 7: 'G',\n 8: 'G#',\n 9: 'A',\n 10: 'A#',\n 11: 'B',\n };\n const noteValue = table[integer];\n if (!noteValue) {\n throw new RuntimeError('BadArguments', `Unknown note value for integer: ${integer}`);\n }\n return noteValue;\n }\n static tabToGlyph(fret, scale = 1.0) {\n let glyph = undefined;\n let width = 0;\n let shift_y = 0;\n if (fret.toUpperCase() === 'X') {\n const glyphMetrics = new Glyph('accidentalDoubleSharp', Tables.TABLATURE_FONT_SCALE).getMetrics();\n glyph = 'accidentalDoubleSharp';\n if (glyphMetrics.width == undefined || glyphMetrics.height == undefined)\n throw new RuntimeError('InvalidMetrics', 'Width and height required');\n width = glyphMetrics.width;\n shift_y = -glyphMetrics.height / 2;\n }\n else {\n width = Tables.textWidth(fret);\n }\n return {\n text: fret,\n code: glyph,\n getWidth: () => width * scale,\n shift_y,\n };\n }\n // Used by annotation.ts and bend.ts. Clearly this implementation only works for the default font size.\n // TODO: The actual width depends on the font family, size, weight, style.\n static textWidth(text) {\n return 7 * text.toString().length;\n }\n static articulationCodes(artic) {\n return articulations[artic];\n }\n static accidentalCodes(acc) {\n return accidentals[acc];\n }\n static ornamentCodes(acc) {\n return ornaments[acc];\n }\n static keySignature(spec) {\n const keySpec = keySignatures[spec];\n if (!keySpec) {\n throw new RuntimeError('BadKeySignature', `Bad key signature spec: '${spec}'`);\n }\n if (!keySpec.acc) {\n return [];\n }\n const accidentalList = {\n b: [2, 0.5, 2.5, 1, 3, 1.5, 3.5],\n '#': [0, 1.5, -0.5, 1, 2.5, 0.5, 2],\n };\n const notes = accidentalList[keySpec.acc];\n const acc_list = [];\n for (let i = 0; i < keySpec.num; ++i) {\n const line = notes[i];\n acc_list.push({ type: keySpec.acc, line });\n }\n return acc_list;\n }\n static getKeySignatures() {\n return keySignatures;\n }\n static hasKeySignature(spec) {\n return spec in keySignatures;\n }\n /**\n * Convert duration aliases to the number based duration.\n * If the input isn't an alias, simply return the input.\n * @param duration\n * @returns Example: 'q' -> '4', '8' -> '8'\n */\n static sanitizeDuration(duration) {\n const durationNumber = durationAliases[duration];\n if (durationNumber !== undefined) {\n duration = durationNumber;\n }\n if (durations[duration] === undefined) {\n throw new RuntimeError('BadArguments', `The provided duration is not valid: ${duration}`);\n }\n return duration;\n }\n /** Convert the `duration` to a fraction. */\n static durationToFraction(duration) {\n return new Fraction().parse(Tables.sanitizeDuration(duration));\n }\n /** Convert the `duration` to a number. */\n static durationToNumber(duration) {\n return Tables.durationToFraction(duration).value();\n }\n /* Convert the `duration` to total ticks. */\n static durationToTicks(duration) {\n duration = Tables.sanitizeDuration(duration);\n const ticks = durations[duration];\n if (ticks === undefined) {\n throw new RuntimeError('InvalidDuration');\n }\n return ticks;\n }\n static codeNoteHead(type, duration) {\n let code = '';\n switch (type) {\n /* Diamond */\n case 'D0':\n code = 'noteheadDiamondWhole';\n break;\n case 'D1':\n code = 'noteheadDiamondHalf';\n break;\n case 'D2':\n code = 'noteheadDiamondBlack';\n break;\n case 'D3':\n code = 'noteheadDiamondBlack';\n break;\n /* Triangle */\n case 'T0':\n code = 'noteheadTriangleUpWhole';\n break;\n case 'T1':\n code = 'noteheadTriangleUpHalf';\n break;\n case 'T2':\n code = 'noteheadTriangleUpBlack';\n break;\n case 'T3':\n code = 'noteheadTriangleUpBlack';\n break;\n /* Cross */\n case 'X0':\n code = 'noteheadXWhole';\n break;\n case 'X1':\n code = 'noteheadXHalf';\n break;\n case 'X2':\n code = 'noteheadXBlack';\n break;\n case 'X3':\n code = 'noteheadCircleX';\n break;\n /* Square */\n case 'S1':\n code = 'noteheadSquareWhite';\n break;\n case 'S2':\n code = 'noteheadSquareBlack';\n break;\n /* Rectangle */\n case 'R1':\n code = 'vexNoteHeadRectWhite'; // no smufl code\n break;\n case 'R2':\n code = 'vexNoteHeadRectBlack'; // no smufl code\n break;\n case 'DO':\n code = 'noteheadTriangleUpBlack';\n break;\n case 'RE':\n code = 'noteheadMoonBlack';\n break;\n case 'MI':\n code = 'noteheadDiamondBlack';\n break;\n case 'FA':\n code = 'noteheadTriangleLeftBlack';\n break;\n case 'FAUP':\n code = 'noteheadTriangleRightBlack';\n break;\n case 'SO':\n code = 'noteheadBlack';\n break;\n case 'LA':\n code = 'noteheadSquareBlack';\n break;\n case 'TI':\n code = 'noteheadTriangleRoundDownBlack';\n break;\n case 'D':\n case 'H': // left for backwards compatibility\n switch (duration) {\n case '1/2':\n code = 'noteheadDiamondDoubleWhole';\n break;\n case '1':\n code = 'noteheadDiamondWhole';\n break;\n case '2':\n code = 'noteheadDiamondHalf';\n break;\n default:\n code = 'noteheadDiamondBlack';\n break;\n }\n break;\n case 'N':\n case 'G':\n switch (duration) {\n case '1/2':\n code = 'noteheadDoubleWhole';\n break;\n case '1':\n code = 'noteheadWhole';\n break;\n case '2':\n code = 'noteheadHalf';\n break;\n default:\n code = 'noteheadBlack';\n break;\n }\n break;\n case 'M': // left for backwards compatibility\n case 'X':\n switch (duration) {\n case '1/2':\n code = 'noteheadXDoubleWhole';\n break;\n case '1':\n code = 'noteheadXWhole';\n break;\n case '2':\n code = 'noteheadXHalf';\n break;\n default:\n code = 'noteheadXBlack';\n break;\n }\n break;\n case 'CX':\n switch (duration) {\n case '1/2':\n code = 'noteheadCircleXDoubleWhole';\n break;\n case '1':\n code = 'noteheadCircleXWhole';\n break;\n case '2':\n code = 'noteheadCircleXHalf';\n break;\n default:\n code = 'noteheadCircleX';\n break;\n }\n break;\n case 'CI':\n switch (duration) {\n case '1/2':\n code = 'noteheadCircledDoubleWhole';\n break;\n case '1':\n code = 'noteheadCircledWhole';\n break;\n case '2':\n code = 'noteheadCircledHalf';\n break;\n default:\n code = 'noteheadCircledBlack';\n break;\n }\n break;\n case 'SQ':\n switch (duration) {\n case '1/2':\n code = 'noteheadDoubleWholeSquare';\n break;\n case '1':\n code = 'noteheadSquareWhite';\n break;\n case '2':\n code = 'noteheadSquareWhite';\n break;\n default:\n code = 'noteheadSquareBlack';\n break;\n }\n break;\n case 'TU':\n switch (duration) {\n case '1/2':\n code = 'noteheadTriangleUpDoubleWhole';\n break;\n case '1':\n code = 'noteheadTriangleUpWhole';\n break;\n case '2':\n code = 'noteheadTriangleUpHalf';\n break;\n default:\n code = 'noteheadTriangleUpBlack';\n break;\n }\n break;\n case 'TD':\n switch (duration) {\n case '1/2':\n code = 'noteheadTriangleDownDoubleWhole';\n break;\n case '1':\n code = 'noteheadTriangleDownWhole';\n break;\n case '2':\n code = 'noteheadTriangleDownHalf';\n break;\n default:\n code = 'noteheadTriangleDownBlack';\n break;\n }\n break;\n case 'SF':\n switch (duration) {\n case '1/2':\n code = 'noteheadSlashedDoubleWhole1';\n break;\n case '1':\n code = 'noteheadSlashedWhole1';\n break;\n case '2':\n code = 'noteheadSlashedHalf1';\n break;\n default:\n code = 'noteheadSlashedBlack1';\n }\n break;\n case 'SB':\n switch (duration) {\n case '1/2':\n code = 'noteheadSlashedDoubleWhole2';\n break;\n case '1':\n code = 'noteheadSlashedWhole2';\n break;\n case '2':\n code = 'noteheadSlashedHalf2';\n break;\n default:\n code = 'noteheadSlashedBlack2';\n }\n break;\n }\n return code;\n }\n // Return a glyph given duration and type. The type can be a custom glyph code from customNoteHeads.\n // The default type is a regular note ('n').\n // eslint-disable-next-line\n static getGlyphProps(duration, type = 'n') {\n duration = Tables.sanitizeDuration(duration);\n // Lookup duration for default glyph head code\n const code = durationCodes[duration];\n if (code === undefined) {\n return undefined;\n }\n // Get glyph properties for 'type' from duration string (note, rest, harmonic, muted, slash)\n let glyphTypeProperties = code.type[type];\n // Try and get it from the custom list of note heads\n const codeNoteHead = Tables.codeNoteHead(type.toUpperCase(), duration);\n if (codeNoteHead != '')\n glyphTypeProperties = Object.assign(Object.assign({}, glyphTypeProperties), { code_head: codeNoteHead, code: codeNoteHead });\n const code_head = glyphTypeProperties.code_head;\n // The default implementation of getWidth() calls Glyph.getWidth(code_head, scale).\n // This can be overridden by an individual glyph type (see slash noteheads below: Tables.SLASH_NOTEHEAD_WIDTH).\n const getWidth = (scale = Tables.NOTATION_FONT_SCALE) => Glyph.getWidth(code_head, scale);\n // Merge duration props for 'duration' with the note head properties.\n return Object.assign(Object.assign(Object.assign({}, code.common), { getWidth: getWidth }), glyphTypeProperties);\n }\n}\nTables.SOFTMAX_FACTOR = 100;\nTables.STEM_WIDTH = 1.5;\nTables.STEM_HEIGHT = 35;\nTables.STAVE_LINE_THICKNESS = 1;\nTables.RENDER_PRECISION_PLACES = 3;\nTables.RESOLUTION = RESOLUTION;\n/**\n * Customize this by calling Flow.setMusicFont(...fontNames);\n */\nTables.MUSIC_FONT_STACK = [];\nTables.NOTATION_FONT_SCALE = 39;\nTables.TABLATURE_FONT_SCALE = 39;\nTables.SLASH_NOTEHEAD_WIDTH = 15;\nTables.STAVE_LINE_DISTANCE = 10;\n// HACK:\n// Since text origins are positioned at the baseline, we must\n// compensate for the ascender of the text. Of course, 1 staff space is\n// a very poor approximation.\n//\n// This will be deprecated in the future. This is a temporary solution until\n// we have more robust text metrics.\nTables.TEXT_HEIGHT_OFFSET_HACK = 1;\nTables.accidentalMap = accidentals;\nTables.accidentalColumnsTable = accidentalColumns;\nTables.unicode = {\n // ♯ accidental sharp\n sharp: String.fromCharCode(0x266f),\n // ♭ accidental flat\n flat: String.fromCharCode(0x266d),\n // ♮ accidental natural\n natural: String.fromCharCode(0x266e),\n // △ major seventh\n triangle: String.fromCharCode(0x25b3),\n // ø half-diminished\n 'o-with-slash': String.fromCharCode(0x00f8),\n // ° diminished\n degrees: String.fromCharCode(0x00b0),\n // ○ diminished\n circle: String.fromCharCode(0x25cb),\n};\n/* The list of valid note types. Used by note.ts during parseNoteStruct(). */\nTables.validTypes = validNoteTypes;\n// Default time signature.\nTables.TIME4_4 = {\n num_beats: 4,\n beat_value: 4,\n resolution: RESOLUTION,\n};\n// 1/2, 1, 2, 4, 8, 16, 32, 64, 128\n// NOTE: There is no 256 here! However, there are other mentions of 256 in this file.\n// For example, in durations has a 256 key, and sanitizeDuration() can return 256.\n// The sanitizeDuration() bit may need to be removed by 0xfe.\n// eslint-disable-next-line\nconst durationCodes = {\n '1/2': {\n common: {\n stem: false,\n stem_offset: 0,\n flag: false,\n stem_up_extension: -Tables.STEM_HEIGHT,\n stem_down_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_up_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_down_extension: -Tables.STEM_HEIGHT,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Breve rest\n code_head: 'restDoubleWhole',\n rest: true,\n position: 'B/5',\n dot_shiftY: 0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restDoubleWhole', scale);\n // },\n },\n s: {\n // Breve note slash -\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 1: {\n common: {\n stem: false,\n stem_offset: 0,\n flag: false,\n stem_up_extension: -Tables.STEM_HEIGHT,\n stem_down_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_up_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_down_extension: -Tables.STEM_HEIGHT,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Whole rest\n code_head: 'restWhole',\n leger_code_head: 'restWholeLegerLine',\n rest: true,\n position: 'D/5',\n dot_shiftY: 0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restWhole', scale);\n // },\n },\n s: {\n // Whole note slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 2: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: false,\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Half rest\n code_head: 'restHalf',\n leger_code_head: 'restHalfLegerLine',\n stem: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restHalf', scale);\n // },\n },\n s: {\n // Half note slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 4: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: false,\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Quarter rest\n code_head: 'restQuarter',\n stem: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.5,\n line_below: 1.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restQuarter', scale);\n // },\n },\n s: {\n // Quarter slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 8: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: true,\n beam_count: 1,\n stem_beam_extension: 0,\n code_flag_upstem: 'flag8thUp',\n code_flag_downstem: 'flag8thDown',\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Eighth rest\n code_head: 'rest8th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.0,\n line_below: 1.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest8th', scale);\n // },\n },\n s: {\n // Eighth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 16: {\n common: {\n beam_count: 2,\n stem_beam_extension: 0,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag16thUp',\n code_flag_downstem: 'flag16thDown',\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Sixteenth rest\n code_head: 'rest16th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.0,\n line_below: 2.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest16th', scale);\n // },\n },\n s: {\n // Sixteenth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 32: {\n common: {\n beam_count: 3,\n stem_beam_extension: 7.5,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag32ndUp',\n code_flag_downstem: 'flag32ndDown',\n stem_up_extension: 9,\n stem_down_extension: 9,\n tabnote_stem_up_extension: 9,\n tabnote_stem_down_extension: 9,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Thirty-second rest\n code_head: 'rest32nd',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -1.5,\n line_above: 2.0,\n line_below: 2.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest32nd', scale);\n // },\n },\n s: {\n // Thirty-second slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 64: {\n common: {\n beam_count: 4,\n stem_beam_extension: 15,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag64thUp',\n code_flag_downstem: 'flag64thDown',\n stem_up_extension: 13,\n stem_down_extension: 13,\n tabnote_stem_up_extension: 13,\n tabnote_stem_down_extension: 13,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Sixty-fourth rest\n code_head: 'rest64th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -1.5,\n line_above: 2.0,\n line_below: 3.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest64th', scale);\n // },\n },\n s: {\n // Sixty-fourth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 128: {\n common: {\n beam_count: 5,\n stem_beam_extension: 22.5,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag128thUp',\n code_flag_downstem: 'flag128thDown',\n stem_up_extension: 22,\n stem_down_extension: 22,\n tabnote_stem_up_extension: 22,\n tabnote_stem_down_extension: 22,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Hundred-twenty-eight rest\n code_head: 'rest128th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -2.5,\n line_above: 3.0,\n line_below: 3.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest128th', scale);\n // },\n },\n s: {\n // Hundred-twenty-eight slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { BoundingBoxComputation } from './boundingboxcomputation';\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var OutlineCode;\n(function (OutlineCode) {\n OutlineCode[OutlineCode[\"MOVE\"] = 0] = \"MOVE\";\n OutlineCode[OutlineCode[\"LINE\"] = 1] = \"LINE\";\n OutlineCode[OutlineCode[\"QUADRATIC\"] = 2] = \"QUADRATIC\";\n OutlineCode[OutlineCode[\"BEZIER\"] = 3] = \"BEZIER\";\n})(OutlineCode || (OutlineCode = {}));\nclass GlyphCacheEntry {\n constructor(fontStack, code, category) {\n this.point = -1;\n this.metrics = Glyph.loadMetrics(fontStack, code, category);\n this.bbox = Glyph.getOutlineBoundingBox(this.metrics.outline, this.metrics.scale, this.metrics.x_shift, this.metrics.y_shift);\n if (category) {\n this.point = Glyph.lookupFontMetric(this.metrics.font, category, code, 'point', -1);\n }\n }\n}\nclass GlyphCache {\n constructor() {\n this.cache = new Map();\n }\n lookup(code, category) {\n let entries = this.cache.get(Glyph.CURRENT_CACHE_KEY);\n if (entries === undefined) {\n entries = {};\n this.cache.set(Glyph.CURRENT_CACHE_KEY, entries);\n }\n const key = category ? `${code}%${category}` : code;\n let entry = entries[key];\n if (entry === undefined) {\n entry = new GlyphCacheEntry(Glyph.MUSIC_FONT_STACK, code, category);\n entries[key] = entry;\n }\n return entry;\n }\n}\nclass GlyphOutline {\n constructor(outline, originX, originY, scale) {\n this.outline = outline;\n this.originX = originX;\n this.originY = originY;\n this.scale = scale;\n this.i = 0;\n this.precision = 1;\n // Automatically assign private properties: this.outline, this.originX, this.originY, and this.scale.\n this.precision = Math.pow(10, Tables.RENDER_PRECISION_PLACES);\n }\n done() {\n return this.i >= this.outline.length;\n }\n next() {\n return Math.round((this.outline[this.i++] * this.precision) / this.precision);\n }\n nextX() {\n return Math.round((this.originX + this.outline[this.i++] * this.scale) * this.precision) / this.precision;\n }\n nextY() {\n return Math.round((this.originY - this.outline[this.i++] * this.scale) * this.precision) / this.precision;\n }\n static parse(str) {\n const result = [];\n const parts = str.split(' ');\n let i = 0;\n while (i < parts.length) {\n switch (parts[i++]) {\n case 'm':\n result.push(OutlineCode.MOVE, parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'l':\n result.push(OutlineCode.LINE, parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'q':\n result.push(OutlineCode.QUADRATIC, parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'b':\n result.push(OutlineCode.BEZIER, parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n }\n }\n return result;\n }\n}\nexport class Glyph extends Element {\n /**\n * @param code\n * @param point\n * @param options\n */\n constructor(code, point, options) {\n super();\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // INSTANCE MEMBERS\n this.bbox = new BoundingBox(0, 0, 0, 0);\n this.topGlyphs = [];\n this.botGlyphs = [];\n this.options = {};\n this.scale = 1;\n this.code = code;\n this.point = point;\n this.originShift = { x: 0, y: 0 };\n this.x_shift = 0;\n this.y_shift = 0;\n if (options) {\n this.setOptions(options);\n }\n else {\n this.reset();\n }\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // STATIC MEMBERS\n static get CATEGORY() {\n return Category.Glyph;\n }\n /**\n * Pass a key of the form `glyphs.{category}.{code}.{key}` to Font.lookupMetric(). If the initial lookup fails,\n * try again with the path `glyphs.{category}.{key}`. If the second lookup fails, return the defaultValue.\n *\n * @param font\n * @param category any metric path under 'glyphs', so 'stem.up' could resolve to glyphs.stem.up.shiftX, glyphs.stem.up.shiftY, etc.\n * @param code\n * @param key\n * @param defaultValue\n */\n static lookupFontMetric(font, category, code, key, defaultValue) {\n let value = font.lookupMetric(`glyphs.${category}.${code}.${key}`, undefined);\n if (value === undefined) {\n // The first lookup failed, so we omit .${code} and try again (with a defaultValue this time).\n value = font.lookupMetric(`glyphs.${category}.${key}`, defaultValue);\n }\n return value;\n }\n static lookupGlyph(fontStack, code) {\n defined(fontStack, 'BadFontStack', 'Font stack is misconfigured');\n let glyph;\n let font;\n for (let i = 0; i < fontStack.length; i++) {\n font = fontStack[i];\n glyph = font.getGlyphs()[code];\n if (glyph)\n return { glyph, font };\n }\n throw new RuntimeError('BadGlyph', `Glyph ${code} does not exist in font.`);\n }\n static loadMetrics(fontStack, code, category) {\n const { glyph, font } = Glyph.lookupGlyph(fontStack, code);\n if (!glyph.o)\n throw new RuntimeError('BadGlyph', `Glyph ${code} has no outline defined.`);\n let x_shift = 0;\n let y_shift = 0;\n let scale = 1;\n if (category && font) {\n x_shift = Glyph.lookupFontMetric(font, category, code, 'shiftX', 0);\n y_shift = Glyph.lookupFontMetric(font, category, code, 'shiftY', 0);\n scale = Glyph.lookupFontMetric(font, category, code, 'scale', 1);\n }\n const x_min = glyph.x_min;\n const x_max = glyph.x_max;\n const ha = glyph.ha;\n if (!glyph.cached_outline) {\n glyph.cached_outline = GlyphOutline.parse(glyph.o);\n }\n return {\n x_min,\n x_max,\n x_shift,\n y_shift,\n scale,\n ha,\n outline: glyph.cached_outline,\n font,\n width: x_max - x_min,\n height: ha,\n };\n }\n /**\n * Renders glyphs from the default font stack.\n *\n * @param ctx Canvas or SVG context\n * @param x_pos x coordinate\n * @param y_pos y coordinate\n * @param point the point size of the font\n * @param code the glyph code in font.getGlyphs()\n * @param options\n * @returns\n */\n static renderGlyph(ctx, x_pos, y_pos, point, code, options) {\n var _a;\n const data = Glyph.cache.lookup(code, options === null || options === void 0 ? void 0 : options.category);\n const metrics = data.metrics;\n if (data.point != -1) {\n point = data.point;\n }\n const customScale = (_a = options === null || options === void 0 ? void 0 : options.scale) !== null && _a !== void 0 ? _a : 1;\n const scale = ((point * 72.0) / (metrics.font.getResolution() * 100.0)) * metrics.scale * customScale;\n Glyph.renderOutline(ctx, metrics.outline, scale, x_pos + metrics.x_shift * customScale, y_pos + metrics.y_shift * customScale);\n return metrics;\n }\n static renderOutline(ctx, outline, scale, x_pos, y_pos) {\n const go = new GlyphOutline(outline, x_pos, y_pos, scale);\n ctx.beginPath();\n let x, y;\n while (!go.done()) {\n switch (go.next()) {\n case OutlineCode.MOVE:\n ctx.moveTo(go.nextX(), go.nextY());\n break;\n case OutlineCode.LINE:\n ctx.lineTo(go.nextX(), go.nextY());\n break;\n case OutlineCode.QUADRATIC:\n x = go.nextX();\n y = go.nextY();\n ctx.quadraticCurveTo(go.nextX(), go.nextY(), x, y);\n break;\n case OutlineCode.BEZIER:\n x = go.nextX();\n y = go.nextY();\n ctx.bezierCurveTo(go.nextX(), go.nextY(), go.nextX(), go.nextY(), x, y);\n break;\n }\n }\n ctx.fill();\n }\n static getOutlineBoundingBox(outline, scale, x_pos, y_pos) {\n const go = new GlyphOutline(outline, x_pos, y_pos, scale);\n const bboxComp = new BoundingBoxComputation();\n // (penX, penY) hold the pen position: the start of each stroke.\n let penX = x_pos;\n let penY = y_pos;\n let x, y;\n while (!go.done()) {\n switch (go.next()) {\n case OutlineCode.MOVE:\n // Note that we don't add any points to the bounding box until a srroke is actually drawn.\n penX = go.nextX();\n penY = go.nextY();\n break;\n case OutlineCode.LINE:\n bboxComp.addPoint(penX, penY);\n penX = go.nextX();\n penY = go.nextY();\n bboxComp.addPoint(penX, penY);\n break;\n case OutlineCode.QUADRATIC:\n x = go.nextX();\n y = go.nextY();\n bboxComp.addQuadraticCurve(penX, penY, go.nextX(), go.nextY(), x, y);\n penX = x;\n penY = y;\n break;\n case OutlineCode.BEZIER:\n x = go.nextX();\n y = go.nextY();\n bboxComp.addBezierCurve(penX, penY, go.nextX(), go.nextY(), go.nextX(), go.nextY(), x, y);\n penX = x;\n penY = y;\n break;\n }\n }\n return new BoundingBox(bboxComp.getX1(), bboxComp.getY1(), bboxComp.width(), bboxComp.height());\n }\n static getWidth(code, point, category) {\n const data = Glyph.cache.lookup(code, category);\n if (data.point != -1) {\n point = data.point;\n }\n const scale = (point * 72) / (data.metrics.font.getResolution() * 100);\n return data.bbox.getW() * scale;\n }\n // eslint-disable-next-line\n draw(...args) {\n // DO NOTHING.\n }\n getCode() {\n return this.code;\n }\n // eslint-disable-next-line\n setOptions(options) {\n this.options = Object.assign(Object.assign({}, this.options), options);\n this.reset();\n }\n setPoint(point) {\n this.point = point;\n return this;\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getXShift() {\n return this.x_shift;\n }\n setXShift(x_shift) {\n this.x_shift = x_shift;\n return this;\n }\n getYshift() {\n return this.y_shift;\n }\n setYShift(y_shift) {\n this.y_shift = y_shift;\n return this;\n }\n reset() {\n const data = Glyph.cache.lookup(this.code, this.options.category);\n this.metrics = data.metrics;\n // Override point from metrics file\n if (data.point != -1) {\n this.point = data.point;\n }\n this.scale = (this.point * 72) / (this.metrics.font.getResolution() * 100);\n this.bbox = new BoundingBox(data.bbox.getX() * this.scale, data.bbox.getY() * this.scale, data.bbox.getW() * this.scale, data.bbox.getH() * this.scale);\n }\n checkMetrics() {\n return defined(this.metrics, 'BadGlyph', `Glyph ${this.code} is not initialized.`);\n }\n getMetrics() {\n const metrics = this.checkMetrics();\n const metricsScale = metrics.scale;\n return {\n x_min: metrics.x_min * this.scale * metricsScale,\n x_max: metrics.x_max * this.scale * metricsScale,\n width: this.bbox.getW(),\n height: this.bbox.getH(),\n scale: this.scale * metricsScale,\n x_shift: metrics.x_shift,\n y_shift: metrics.y_shift,\n outline: metrics.outline,\n font: metrics.font,\n ha: metrics.ha,\n };\n }\n setOriginX(x) {\n const { bbox } = this;\n const originX = Math.abs(bbox.getX() / bbox.getW());\n const xShift = (x - originX) * bbox.getW();\n this.originShift.x = -xShift;\n }\n setOriginY(y) {\n const { bbox } = this;\n const originY = Math.abs(bbox.getY() / bbox.getH());\n const yShift = (y - originY) * bbox.getH();\n this.originShift.y = -yShift;\n }\n setOrigin(x, y) {\n this.setOriginX(x);\n this.setOriginY(y);\n }\n render(ctx, x, y) {\n const metrics = this.checkMetrics();\n const outline = metrics.outline;\n const scale = this.scale * metrics.scale;\n this.setRendered();\n this.applyStyle(ctx);\n const xPos = x + this.originShift.x + metrics.x_shift;\n const yPos = y + this.originShift.y + metrics.y_shift;\n Glyph.renderOutline(ctx, outline, scale, xPos, yPos);\n this.restoreStyle(ctx);\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n renderToStave(x) {\n const context = this.checkContext();\n const metrics = this.checkMetrics();\n const stave = this.checkStave();\n const outline = metrics.outline;\n const scale = this.scale * metrics.scale;\n this.setRendered();\n this.applyStyle();\n const xPos = x + this.x_shift + metrics.x_shift;\n const yPos = stave.getYForGlyphs() + this.y_shift + metrics.y_shift;\n Glyph.renderOutline(context, outline, scale, xPos, yPos);\n this.restoreStyle();\n }\n}\nGlyph.cache = new GlyphCache();\n// The current cache key for GlyphCache above.\n// Computed when Flow.setMusicFont(...) is called.\n// It is set to a comma separated list of font names.\nGlyph.CURRENT_CACHE_KEY = '';\n// Used by the GlyphCache above.\n// Set when Flow.setMusicFont(...) is called.\nGlyph.MUSIC_FONT_STACK = [];\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var ModifierPosition;\n(function (ModifierPosition) {\n ModifierPosition[ModifierPosition[\"CENTER\"] = 0] = \"CENTER\";\n ModifierPosition[ModifierPosition[\"LEFT\"] = 1] = \"LEFT\";\n ModifierPosition[ModifierPosition[\"RIGHT\"] = 2] = \"RIGHT\";\n ModifierPosition[ModifierPosition[\"ABOVE\"] = 3] = \"ABOVE\";\n ModifierPosition[ModifierPosition[\"BELOW\"] = 4] = \"BELOW\";\n})(ModifierPosition || (ModifierPosition = {}));\n// To enable logging for this class. Set `Vex.Flow.Modifier.DEBUG` to `true`.\n// function L(...args) { if (Modifier.DEBUG) log('Vex.Flow.Modifier', args); }\n/**\n * `Modifier` is an abstract interface for notational elements that modify\n * a `Note`. Examples of modifiers are `Accidental`, `Annotation`, `Stroke`, etc.\n *\n * For a `Modifier` instance to be positioned correctly, it must be part of\n * a `ModifierContext`. All modifiers in the same context are rendered relative to\n * one another.\n *\n * Typically, all modifiers to a note are part of the same `ModifierContext` instance. Also,\n * in multi-voice staves, all modifiers to notes on the same `tick` are part of the same\n * `ModifierContext`. This ensures that multiple voices don't trample all over each other.\n */\nexport class Modifier extends Element {\n constructor() {\n super();\n this.width = 0;\n // The `text_line` is reserved space above or below a stave.\n this.text_line = 0;\n this.position = Modifier.Position.LEFT;\n this.x_shift = 0;\n this.y_shift = 0;\n this.spacingFromNextModifier = 0;\n }\n /**\n * Modifiers category string. Every modifier has a different category.\n * The `ModifierContext` uses this to determine the type and order of the modifiers.\n */\n static get CATEGORY() {\n return Category.Modifier;\n }\n /** Modifiers can be positioned almost anywhere, relative to a note. */\n static get Position() {\n return ModifierPosition;\n }\n static get PositionString() {\n return {\n center: ModifierPosition.CENTER,\n above: ModifierPosition.ABOVE,\n below: ModifierPosition.BELOW,\n left: ModifierPosition.LEFT,\n right: ModifierPosition.RIGHT,\n };\n }\n /** Called when position changes. */\n reset() {\n // DO NOTHING.\n }\n /** Get modifier widths. */\n getWidth() {\n return this.width;\n }\n /** Set modifier widths. */\n setWidth(width) {\n this.width = width;\n return this;\n }\n /** Get attached note (`StaveNote`, `TabNote`, etc.) */\n getNote() {\n return defined(this.note, 'NoNote', 'Modifier has no note.');\n }\n /**\n * Used in draw() to check and get the attached note (`StaveNote`, `TabNote`, etc.).\n * Also verifies that the index is valid.\n */\n checkAttachedNote() {\n const category = this.getCategory();\n defined(this.index, 'NoIndex', `Can't draw ${category} without an index.`);\n return defined(this.note, 'NoNote', `Can't draw ${category} without a note.`);\n }\n /**\n * Set attached note.\n * @param note (`StaveNote`, `TabNote`, etc.)\n */\n setNote(note) {\n this.note = note;\n return this;\n }\n /** Get note index, which is a specific note in a chord. */\n getIndex() {\n return this.index;\n }\n /** Check and get note index, which is a specific note in a chord. */\n checkIndex() {\n return defined(this.index, 'NoIndex', 'Modifier has an invalid index.');\n }\n /** Set note index, which is a specific note in a chord. */\n setIndex(index) {\n this.index = index;\n return this;\n }\n /** Get `ModifierContext`. */\n getModifierContext() {\n return this.modifierContext;\n }\n /** Check and get `ModifierContext`. */\n checkModifierContext() {\n return defined(this.modifierContext, 'NoModifierContext', 'Modifier Context Required');\n }\n /** Every modifier must be part of a `ModifierContext`. */\n setModifierContext(c) {\n this.modifierContext = c;\n return this;\n }\n /** Get position. */\n getPosition() {\n return this.position;\n }\n /**\n * Set position.\n * @param position CENTER | LEFT | RIGHT | ABOVE | BELOW\n */\n setPosition(position) {\n this.position = typeof position === 'string' ? Modifier.PositionString[position] : position;\n this.reset();\n return this;\n }\n /** Set the `text_line` for the modifier. */\n setTextLine(line) {\n this.text_line = line;\n return this;\n }\n /** Shift modifier down `y` pixels. Negative values shift up. */\n setYShift(y) {\n this.y_shift = y;\n return this;\n }\n /** Set spacing from next modifier. */\n setSpacingFromNextModifier(x) {\n this.spacingFromNextModifier = x;\n }\n /** Get spacing from next modifier. */\n getSpacingFromNextModifier() {\n return this.spacingFromNextModifier;\n }\n /**\n * Shift modifier `x` pixels in the direction of the modifier. Negative values\n * shift reverse.\n */\n setXShift(x) {\n this.x_shift = 0;\n if (this.position === Modifier.Position.LEFT) {\n this.x_shift -= x;\n }\n else {\n this.x_shift += x;\n }\n return this;\n }\n /** Get shift modifier `x` */\n getXShift() {\n return this.x_shift;\n }\n /** Render the modifier onto the canvas. */\n draw() {\n this.checkContext();\n throw new RuntimeError('NotImplemented', 'draw() not implemented for this modifier.');\n }\n // aligns sub notes of NoteSubGroup (or GraceNoteGroup) to the main note with correct x-offset\n alignSubNotesWithNote(subNotes, note) {\n // Shift over the tick contexts of each note\n const tickContext = note.getTickContext();\n const metrics = tickContext.getMetrics();\n const stave = note.getStave();\n const subNoteXOffset = tickContext.getX() - metrics.modLeftPx - metrics.modRightPx + this.getSpacingFromNextModifier();\n subNotes.forEach((subNote) => {\n const subTickContext = subNote.getTickContext();\n if (stave)\n subNote.setStave(stave);\n subTickContext.setXOffset(subNoteXOffset); // don't touch baseX to avoid shift each render\n });\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { RuntimeError } from './util';\n/** Music implements some standard music theory routines. */\nexport class Music {\n /** Number of an canonical notes (12). */\n static get NUM_TONES() {\n return this.canonical_notes.length;\n }\n /** Names of root notes ('c', 'd',...) */\n static get roots() {\n return ['c', 'd', 'e', 'f', 'g', 'a', 'b'];\n }\n /** Values of the root notes.*/\n static get root_values() {\n return [0, 2, 4, 5, 7, 9, 11];\n }\n /** Indices of the root notes.*/\n static get root_indices() {\n return {\n c: 0,\n d: 1,\n e: 2,\n f: 3,\n g: 4,\n a: 5,\n b: 6,\n };\n }\n /** Names of canonical notes ('c', 'c#', 'd',...). */\n static get canonical_notes() {\n return ['c', 'c#', 'd', 'd#', 'e', 'f', 'f#', 'g', 'g#', 'a', 'a#', 'b'];\n }\n /** Names of diatonic intervals ('unison', 'm2', 'M2',...). */\n static get diatonic_intervals() {\n return ['unison', 'm2', 'M2', 'm3', 'M3', 'p4', 'dim5', 'p5', 'm6', 'M6', 'b7', 'M7', 'octave'];\n }\n /** NoteAccidental associated to diatonic intervals. */\n static get diatonic_accidentals() {\n return {\n unison: { note: 0, accidental: 0 },\n m2: { note: 1, accidental: -1 },\n M2: { note: 1, accidental: 0 },\n m3: { note: 2, accidental: -1 },\n M3: { note: 2, accidental: 0 },\n p4: { note: 3, accidental: 0 },\n dim5: { note: 4, accidental: -1 },\n p5: { note: 4, accidental: 0 },\n m6: { note: 5, accidental: -1 },\n M6: { note: 5, accidental: 0 },\n b7: { note: 6, accidental: -1 },\n M7: { note: 6, accidental: 0 },\n octave: { note: 7, accidental: 0 },\n };\n }\n /** Semitones shift associated to intervals .*/\n static get intervals() {\n return {\n u: 0,\n unison: 0,\n m2: 1,\n b2: 1,\n min2: 1,\n S: 1,\n H: 1,\n 2: 2,\n M2: 2,\n maj2: 2,\n T: 2,\n W: 2,\n m3: 3,\n b3: 3,\n min3: 3,\n M3: 4,\n 3: 4,\n maj3: 4,\n 4: 5,\n p4: 5,\n '#4': 6,\n b5: 6,\n aug4: 6,\n dim5: 6,\n 5: 7,\n p5: 7,\n '#5': 8,\n b6: 8,\n aug5: 8,\n 6: 9,\n M6: 9,\n maj6: 9,\n b7: 10,\n m7: 10,\n min7: 10,\n dom7: 10,\n M7: 11,\n maj7: 11,\n 8: 12,\n octave: 12,\n };\n }\n /** Semitones shifts associated with scales. */\n static get scales() {\n return {\n major: [2, 2, 1, 2, 2, 2, 1],\n minor: [2, 1, 2, 2, 1, 2, 2],\n ionian: [2, 2, 1, 2, 2, 2, 1],\n dorian: [2, 1, 2, 2, 2, 1, 2],\n phyrgian: [1, 2, 2, 2, 1, 2, 2],\n lydian: [2, 2, 2, 1, 2, 2, 1],\n mixolydian: [2, 2, 1, 2, 2, 1, 2],\n aeolian: [2, 1, 2, 2, 1, 2, 2],\n locrian: [1, 2, 2, 1, 2, 2, 2],\n };\n }\n /** Scales associated with m (minor) and M (major). */\n static get scaleTypes() {\n return {\n M: Music.scales.major,\n m: Music.scales.minor,\n };\n }\n /** Accidentals abbreviations. */\n static get accidentals() {\n return ['bb', 'b', 'n', '#', '##'];\n }\n /** Note values. */\n static get noteValues() {\n return {\n c: { root_index: 0, int_val: 0 },\n cn: { root_index: 0, int_val: 0 },\n 'c#': { root_index: 0, int_val: 1 },\n 'c##': { root_index: 0, int_val: 2 },\n cb: { root_index: 0, int_val: 11 },\n cbb: { root_index: 0, int_val: 10 },\n d: { root_index: 1, int_val: 2 },\n dn: { root_index: 1, int_val: 2 },\n 'd#': { root_index: 1, int_val: 3 },\n 'd##': { root_index: 1, int_val: 4 },\n db: { root_index: 1, int_val: 1 },\n dbb: { root_index: 1, int_val: 0 },\n e: { root_index: 2, int_val: 4 },\n en: { root_index: 2, int_val: 4 },\n 'e#': { root_index: 2, int_val: 5 },\n 'e##': { root_index: 2, int_val: 6 },\n eb: { root_index: 2, int_val: 3 },\n ebb: { root_index: 2, int_val: 2 },\n f: { root_index: 3, int_val: 5 },\n fn: { root_index: 3, int_val: 5 },\n 'f#': { root_index: 3, int_val: 6 },\n 'f##': { root_index: 3, int_val: 7 },\n fb: { root_index: 3, int_val: 4 },\n fbb: { root_index: 3, int_val: 3 },\n g: { root_index: 4, int_val: 7 },\n gn: { root_index: 4, int_val: 7 },\n 'g#': { root_index: 4, int_val: 8 },\n 'g##': { root_index: 4, int_val: 9 },\n gb: { root_index: 4, int_val: 6 },\n gbb: { root_index: 4, int_val: 5 },\n a: { root_index: 5, int_val: 9 },\n an: { root_index: 5, int_val: 9 },\n 'a#': { root_index: 5, int_val: 10 },\n 'a##': { root_index: 5, int_val: 11 },\n ab: { root_index: 5, int_val: 8 },\n abb: { root_index: 5, int_val: 7 },\n b: { root_index: 6, int_val: 11 },\n bn: { root_index: 6, int_val: 11 },\n 'b#': { root_index: 6, int_val: 0 },\n 'b##': { root_index: 6, int_val: 1 },\n bb: { root_index: 6, int_val: 10 },\n bbb: { root_index: 6, int_val: 9 },\n };\n }\n isValidNoteValue(note) {\n return note >= 0 && note < Music.canonical_notes.length;\n }\n isValidIntervalValue(interval) {\n return interval >= 0 && interval < Music.diatonic_intervals.length;\n }\n /** Return root and accidental associated to a note. */\n getNoteParts(noteString) {\n if (!noteString || noteString.length < 1) {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n if (noteString.length > 3) {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n const note = noteString.toLowerCase();\n const regex = /^([cdefgab])(b|bb|n|#|##)?$/;\n const match = regex.exec(note);\n if (match !== null) {\n const root = match[1];\n const accidental = match[2];\n return {\n root,\n accidental,\n };\n }\n else {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n }\n /** Return root, accidental and type associated to a key. */\n getKeyParts(keyString) {\n if (!keyString || keyString.length < 1) {\n throw new RuntimeError('BadArguments', 'Invalid key: ' + keyString);\n }\n const key = keyString.toLowerCase();\n // Support Major, Minor, Melodic Minor, and Harmonic Minor key types.\n const regex = /^([cdefgab])(b|#)?(mel|harm|m|M)?$/;\n const match = regex.exec(key);\n if (match !== null) {\n const root = match[1];\n const accidental = match[2];\n let type = match[3];\n // Unspecified type implies major\n if (!type)\n type = 'M';\n return {\n root,\n accidental,\n type,\n };\n }\n else {\n throw new RuntimeError('BadArguments', `Invalid key: ${keyString}`);\n }\n }\n /** Note value associated to a note name. */\n getNoteValue(noteString) {\n const value = Music.noteValues[noteString];\n if (value === undefined) {\n throw new RuntimeError('BadArguments', `Invalid note name: ${noteString}`);\n }\n return value.int_val;\n }\n /** Interval value associated to an interval name. */\n getIntervalValue(intervalString) {\n const value = Music.intervals[intervalString];\n if (value === undefined) {\n throw new RuntimeError('BadArguments', `Invalid interval name: ${intervalString}`);\n }\n return value;\n }\n /** Canonical note name associated to a value. */\n getCanonicalNoteName(noteValue) {\n if (!this.isValidNoteValue(noteValue)) {\n throw new RuntimeError('BadArguments', `Invalid note value: ${noteValue}`);\n }\n return Music.canonical_notes[noteValue];\n }\n /** Interval name associated to a value. */\n getCanonicalIntervalName(intervalValue) {\n if (!this.isValidIntervalValue(intervalValue)) {\n throw new RuntimeError('BadArguments', `Invalid interval value: ${intervalValue}`);\n }\n return Music.diatonic_intervals[intervalValue];\n }\n /**\n * Given a note, interval, and interval direction, produce the relative note.\n */\n getRelativeNoteValue(noteValue, intervalValue, direction = 1) {\n if (direction !== 1 && direction !== -1) {\n throw new RuntimeError('BadArguments', `Invalid direction: ${direction}`);\n }\n let sum = (noteValue + direction * intervalValue) % Music.NUM_TONES;\n if (sum < 0)\n sum += Music.NUM_TONES;\n return sum;\n }\n /**\n * Given a root and note value, produce the relative note name.\n */\n getRelativeNoteName(root, noteValue) {\n const parts = this.getNoteParts(root);\n const rootValue = this.getNoteValue(parts.root);\n let interval = noteValue - rootValue;\n if (Math.abs(interval) > Music.NUM_TONES - 3) {\n let multiplier = 1;\n if (interval > 0)\n multiplier = -1;\n // Possibly wrap around. (Add +1 for modulo operator)\n const reverse_interval = ((noteValue + 1 + (rootValue + 1)) % Music.NUM_TONES) * multiplier;\n if (Math.abs(reverse_interval) > 2) {\n throw new RuntimeError('BadArguments', `Notes not related: ${root}, ${noteValue})`);\n }\n else {\n interval = reverse_interval;\n }\n }\n if (Math.abs(interval) > 2) {\n throw new RuntimeError('BadArguments', `Notes not related: ${root}, ${noteValue})`);\n }\n let relativeNoteName = parts.root;\n if (interval > 0) {\n for (let i = 1; i <= interval; ++i) {\n relativeNoteName += '#';\n }\n }\n else if (interval < 0) {\n for (let i = -1; i >= interval; --i) {\n relativeNoteName += 'b';\n }\n }\n return relativeNoteName;\n }\n /**\n * Return scale tones, given intervals. Each successive interval is\n * relative to the previous one, e.g., Major Scale:\n *\n * TTSTTTS = [2,2,1,2,2,2,1]\n *\n * When used with key = 0, returns C scale (which is isomorphic to\n * interval list).\n */\n getScaleTones(key, intervals) {\n const tones = [key];\n let nextNote = key;\n for (let i = 0; i < intervals.length; i++) {\n nextNote = this.getRelativeNoteValue(nextNote, intervals[i]);\n if (nextNote !== key)\n tones.push(nextNote);\n }\n return tones;\n }\n /**\n * Return the interval of a note, given a diatonic scale.\n * e.g., given the scale C, and the note E, returns M3.\n */\n getIntervalBetween(note1, note2, direction = 1) {\n if (direction !== 1 && direction !== -1) {\n throw new RuntimeError('BadArguments', `Invalid direction: ${direction}`);\n }\n if (!this.isValidNoteValue(note1) || !this.isValidNoteValue(note2)) {\n throw new RuntimeError('BadArguments', `Invalid notes: ${note1}, ${note2}`);\n }\n let difference = direction === 1 ? note2 - note1 : note1 - note2;\n if (difference < 0)\n difference += Music.NUM_TONES;\n return difference;\n }\n /**\n * Create a scale map that represents the pitch state for a\n * `keySignature`. For example, passing a `G` to `keySignature` would\n * return a scale map with every note naturalized except for `F` which\n * has an `F#` state.\n */\n createScaleMap(keySignature) {\n const keySigParts = this.getKeyParts(keySignature);\n if (!keySigParts.type)\n throw new RuntimeError('BadArguments', 'Unsupported key type: undefined');\n const scaleName = Music.scaleTypes[keySigParts.type];\n let keySigString = keySigParts.root;\n if (keySigParts.accidental)\n keySigString += keySigParts.accidental;\n if (!scaleName)\n throw new RuntimeError('BadArguments', 'Unsupported key type: ' + keySignature);\n const scale = this.getScaleTones(this.getNoteValue(keySigString), scaleName);\n const noteLocation = Music.root_indices[keySigParts.root];\n const scaleMap = {};\n for (let i = 0; i < Music.roots.length; ++i) {\n const index = (noteLocation + i) % Music.roots.length;\n const rootName = Music.roots[index];\n let noteName = this.getRelativeNoteName(rootName, scale[i]);\n if (noteName.length === 1) {\n noteName += 'n';\n }\n scaleMap[rootName] = noteName;\n }\n return scaleMap;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// @author Mohit Cheppudira\n// @author Greg Ristow (modifications)\nimport { Fraction } from './fraction';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Music } from './music';\nimport { Tables } from './tables';\nimport { Category, isAccidental, isGraceNote, isGraceNoteGroup, isStaveNote } from './typeguard';\nimport { defined, log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Accidental.DEBUG)\n log('Vex.Flow.Accidental', args);\n}\n/**\n * An `Accidental` inherits from `Modifier`, and is formatted within a\n * `ModifierContext`. Accidentals are modifiers that can be attached to\n * notes. Support is included for both western and microtonal accidentals.\n *\n * See `tests/accidental_tests.ts` for usage examples.\n */\nexport class Accidental extends Modifier {\n /**\n * Create accidental.\n * @param type value from `Vex.Flow.accidentalCodes.accidentals` table in `tables.ts`.\n * For example: `#`, `##`, `b`, `n`, etc.\n */\n constructor(type) {\n super();\n L('New accidental: ', type);\n this.type = type;\n this.position = Modifier.Position.LEFT;\n this.render_options = {\n // Font size for glyphs\n font_scale: 38,\n // Padding between accidental and parentheses on each side\n parenLeftPadding: 2,\n parenRightPadding: 2,\n };\n this.accidental = Tables.accidentalCodes(this.type);\n defined(this.accidental, 'ArgumentError', `Unknown accidental type: ${type}`);\n // Cautionary accidentals have parentheses around them\n this.cautionary = false;\n this.reset();\n }\n /** Accidentals category string. */\n static get CATEGORY() {\n return Category.Accidental;\n }\n /** Arrange accidentals inside a ModifierContext. */\n static format(accidentals, state) {\n // If there are no accidentals, no need to format their positions.\n if (!accidentals || accidentals.length === 0)\n return;\n const musicFont = Tables.currentMusicFont();\n const noteheadAccidentalPadding = musicFont.lookupMetric('accidental.noteheadAccidentalPadding');\n const leftShift = state.left_shift + noteheadAccidentalPadding;\n const accidentalSpacing = musicFont.lookupMetric('accidental.accidentalSpacing');\n const additionalPadding = musicFont.lookupMetric('accidental.leftPadding'); // padding to the left of all accidentals\n const accList = [];\n let prevNote = undefined;\n let shiftL = 0;\n // First determine the accidentals' Y positions from the note.keys\n for (let i = 0; i < accidentals.length; ++i) {\n const acc = accidentals[i];\n const note = acc.getNote();\n const stave = note.getStave();\n const index = acc.checkIndex();\n const props = note.getKeyProps()[index];\n if (note !== prevNote) {\n // Iterate through all notes to get the displaced pixels\n for (let n = 0; n < note.keys.length; ++n) {\n shiftL = Math.max(note.getLeftDisplacedHeadPx() - note.getXShift(), shiftL);\n }\n prevNote = note;\n }\n if (stave) {\n const lineSpace = stave.getSpacingBetweenLines();\n const y = stave.getYForLine(props.line);\n const accLine = Math.round((y / lineSpace) * 2) / 2;\n accList.push({ y, line: accLine, shift: shiftL, acc, lineSpace });\n }\n else {\n accList.push({ line: props.line, shift: shiftL, acc });\n }\n }\n // Sort accidentals by line number.\n accList.sort((a, b) => b.line - a.line);\n // FIXME: Confusing name. Each object in this array has a property called `line`.\n // So if this is a list of lines, you end up with: `line.line` which is very awkward.\n const lineList = [];\n // amount by which all accidentals must be shifted right or left for\n // stem flipping, notehead shifting concerns.\n let accShift = 0;\n let previousLine = undefined;\n // Create an array of unique line numbers (lineList) from accList\n for (let i = 0; i < accList.length; i++) {\n const acc = accList[i];\n // if this is the first line, or a new line, add a lineList\n if (previousLine === undefined || previousLine !== acc.line) {\n lineList.push({\n line: acc.line,\n flatLine: true,\n dblSharpLine: true,\n numAcc: 0,\n width: 0,\n column: 0,\n });\n }\n // if this accidental is not a flat, the accidental needs 3.0 lines lower\n // clearance instead of 2.5 lines for b or bb.\n // FIXME: Naming could use work. acc.acc is very awkward\n if (acc.acc.type !== 'b' && acc.acc.type !== 'bb') {\n lineList[lineList.length - 1].flatLine = false;\n }\n // if this accidental is not a double sharp, the accidental needs 3.0 lines above\n if (acc.acc.type !== '##') {\n lineList[lineList.length - 1].dblSharpLine = false;\n }\n // Track how many accidentals are on this line:\n lineList[lineList.length - 1].numAcc++;\n // Track the total x_offset needed for this line which will be needed\n // for formatting lines w/ multiple accidentals:\n // width = accidental width + universal spacing between accidentals\n lineList[lineList.length - 1].width += acc.acc.getWidth() + accidentalSpacing;\n // if this accShift is larger, use it to keep first column accidentals in the same line\n accShift = acc.shift > accShift ? acc.shift : accShift;\n previousLine = acc.line;\n }\n // ### Place Accidentals in Columns\n //\n // Default to a classic triangular layout (middle accidental farthest left),\n // but follow exceptions as outlined in G. Read's _Music Notation_ and\n // Elaine Gould's _Behind Bars_.\n //\n // Additionally, this implements different vertical collision rules for\n // flats (only need 2.5 lines clearance below) and double sharps (only\n // need 2.5 lines of clearance above or below).\n //\n // Classic layouts and exception patterns are found in the 'tables.js'\n // in 'Tables.accidentalColumnsTable'\n //\n // Beyond 6 vertical accidentals, default to the parallel ascending lines approach,\n // using as few columns as possible for the verticle structure.\n //\n // TODO (?): Allow column to be specified for an accidental at run-time?\n let totalColumns = 0;\n // establish the boundaries for a group of notes with clashing accidentals:\n for (let i = 0; i < lineList.length; i++) {\n let noFurtherConflicts = false;\n const groupStart = i;\n let groupEnd = i;\n while (groupEnd + 1 < lineList.length && !noFurtherConflicts) {\n // if this note conflicts with the next:\n if (this.checkCollision(lineList[groupEnd], lineList[groupEnd + 1])) {\n // include the next note in the group:\n groupEnd++;\n }\n else {\n noFurtherConflicts = true;\n }\n }\n // Gets an a line from the `lineList`, relative to the current group\n const getGroupLine = (index) => lineList[groupStart + index];\n const getGroupLines = (indexes) => indexes.map(getGroupLine);\n const lineDifference = (indexA, indexB) => {\n const [a, b] = getGroupLines([indexA, indexB]).map((item) => item.line);\n return a - b;\n };\n const notColliding = (...indexPairs) => indexPairs.map(getGroupLines).every(([line1, line2]) => !this.checkCollision(line1, line2));\n // Set columns for the lines in this group:\n const groupLength = groupEnd - groupStart + 1;\n // Set the accidental column for each line of the group\n let endCase = this.checkCollision(lineList[groupStart], lineList[groupEnd]) ? 'a' : 'b';\n switch (groupLength) {\n case 3:\n if (endCase === 'a' && lineDifference(1, 2) === 0.5 && lineDifference(0, 1) !== 0.5) {\n endCase = 'second_on_bottom';\n }\n break;\n case 4:\n if (notColliding([0, 2], [1, 3])) {\n endCase = 'spaced_out_tetrachord';\n }\n break;\n case 5:\n if (endCase === 'b' && notColliding([1, 3])) {\n endCase = 'spaced_out_pentachord';\n if (notColliding([0, 2], [2, 4])) {\n endCase = 'very_spaced_out_pentachord';\n }\n }\n break;\n case 6:\n if (notColliding([0, 3], [1, 4], [2, 5])) {\n endCase = 'spaced_out_hexachord';\n }\n if (notColliding([0, 2], [2, 4], [1, 3], [3, 5])) {\n endCase = 'very_spaced_out_hexachord';\n }\n break;\n default:\n break;\n }\n let groupMember;\n let column;\n // If the group contains seven members or more, use ascending parallel lines\n // of accidentals, using as few columns as possible while avoiding collisions.\n if (groupLength >= 7) {\n // First, determine how many columns to use:\n let patternLength = 2;\n let collisionDetected = true;\n while (collisionDetected === true) {\n collisionDetected = false;\n for (let line = 0; line + patternLength < lineList.length; line++) {\n if (this.checkCollision(lineList[line], lineList[line + patternLength])) {\n collisionDetected = true;\n patternLength++;\n break;\n }\n }\n }\n // Then, assign a column to each line of accidentals\n for (groupMember = i; groupMember <= groupEnd; groupMember++) {\n column = ((groupMember - i) % patternLength) + 1;\n lineList[groupMember].column = column;\n totalColumns = totalColumns > column ? totalColumns : column;\n }\n }\n else {\n // If the group contains fewer than seven members, use the layouts from\n // the Tables.accidentalColumnsTable (See: tables.ts).\n for (groupMember = i; groupMember <= groupEnd; groupMember++) {\n column = Tables.accidentalColumnsTable[groupLength][endCase][groupMember - i];\n lineList[groupMember].column = column;\n totalColumns = totalColumns > column ? totalColumns : column;\n }\n }\n // Increment i to the last note that was set, so that if a lower set of notes\n // does not conflict at all with this group, it can have its own classic shape.\n i = groupEnd;\n }\n // ### Convert Columns to x_offsets\n //\n // This keeps columns aligned, even if they have different accidentals within them\n // which sometimes results in a larger x_offset than is an accidental might need\n // to preserve the symmetry of the accidental shape.\n //\n // Neither A.C. Vinci nor G. Read address this, and it typically only happens in\n // music with complex chord clusters.\n //\n // TODO (?): Optionally allow closer compression of accidentals, instead of forcing\n // parallel columns.\n // track each column's max width, which will be used as initial shift of later columns:\n const columnWidths = [];\n const columnXOffsets = [];\n for (let i = 0; i <= totalColumns; i++) {\n columnWidths[i] = 0;\n columnXOffsets[i] = 0;\n }\n columnWidths[0] = accShift + leftShift;\n columnXOffsets[0] = accShift + leftShift;\n // Fill columnWidths with widest needed x-space;\n // this is what keeps the columns parallel.\n lineList.forEach((line) => {\n if (line.width > columnWidths[line.column])\n columnWidths[line.column] = line.width;\n });\n for (let i = 1; i < columnWidths.length; i++) {\n // this column's offset = this column's width + previous column's offset\n columnXOffsets[i] = columnWidths[i] + columnXOffsets[i - 1];\n }\n const totalShift = columnXOffsets[columnXOffsets.length - 1];\n // Set the xShift for each accidental according to column offsets:\n let accCount = 0;\n lineList.forEach((line) => {\n let lineWidth = 0;\n const lastAccOnLine = accCount + line.numAcc;\n // handle all of the accidentals on a given line:\n for (accCount; accCount < lastAccOnLine; accCount++) {\n const xShift = columnXOffsets[line.column - 1] + lineWidth;\n accList[accCount].acc.setXShift(xShift);\n // keep track of the width of accidentals we've added so far, so that when\n // we loop, we add space for them.\n lineWidth += accList[accCount].acc.getWidth() + accidentalSpacing;\n L('Line, accCount, shift: ', line.line, accCount, xShift);\n }\n });\n // update the overall layout with the full width of the accidental shapes:\n state.left_shift += totalShift + additionalPadding;\n }\n /** Helper function to determine whether two lines of accidentals collide vertically */\n static checkCollision(line1, line2) {\n let clearance = line2.line - line1.line;\n let clearanceRequired = 3;\n // But less clearance is required for certain accidentals: b, bb and ##.\n if (clearance > 0) {\n // then line 2 is on top\n clearanceRequired = line2.flatLine || line2.dblSharpLine ? 2.5 : 3.0;\n if (line1.dblSharpLine)\n clearance -= 0.5;\n }\n else {\n // line 1 is on top\n clearanceRequired = line1.flatLine || line1.dblSharpLine ? 2.5 : 3.0;\n if (line2.dblSharpLine)\n clearance -= 0.5;\n }\n const collision = Math.abs(clearance) < clearanceRequired;\n L('Line_1, Line_2, Collision: ', line1.line, line2.line, collision);\n return collision;\n }\n /**\n * Use this method to automatically apply accidentals to a set of `voices`.\n * The accidentals will be remembered between all the voices provided.\n * Optionally, you can also provide an initial `keySignature`.\n */\n static applyAccidentals(voices, keySignature) {\n const tickPositions = [];\n const tickNoteMap = {};\n // Sort the tickables in each voice by their tick position in the voice.\n voices.forEach((voice) => {\n const tickPosition = new Fraction(0, 1);\n const tickable = voice.getTickables();\n tickable.forEach((t) => {\n if (t.shouldIgnoreTicks())\n return;\n const notesAtPosition = tickNoteMap[tickPosition.value()];\n if (!notesAtPosition) {\n tickPositions.push(tickPosition.value());\n tickNoteMap[tickPosition.value()] = [t];\n }\n else {\n notesAtPosition.push(t);\n }\n tickPosition.add(t.getTicks());\n });\n });\n const music = new Music();\n // Default key signature is C major.\n if (!keySignature)\n keySignature = 'C';\n // Get the scale map, which represents the current state of each pitch.\n const scaleMapKey = music.createScaleMap(keySignature);\n const scaleMap = {};\n tickPositions.forEach((tickPos) => {\n const tickables = tickNoteMap[tickPos];\n // Array to store all pitches that modified accidental states\n // at this tick position\n const modifiedPitches = [];\n const processNote = (t) => {\n // Only StaveNote implements .addModifier(), which is used below.\n if (!isStaveNote(t) || t.isRest() || t.shouldIgnoreTicks()) {\n return;\n }\n // Go through each key and determine if an accidental should be applied.\n const staveNote = t;\n staveNote.keys.forEach((keyString, keyIndex) => {\n const key = music.getNoteParts(keyString.split('/')[0]);\n const octave = keyString.split('/')[1];\n // Force a natural for every key without an accidental\n const accidentalString = key.accidental || 'n';\n const pitch = key.root + accidentalString;\n // Determine if the current pitch has the same accidental\n // as the scale state\n if (!scaleMap[key.root + octave])\n scaleMap[key.root + octave] = scaleMapKey[key.root];\n const sameAccidental = scaleMap[key.root + octave] === pitch;\n // Determine if an identical pitch in the chord already\n // modified the accidental state\n const previouslyModified = modifiedPitches.indexOf(keyString) > -1;\n // Remove accidentals\n staveNote.getModifiers().forEach((modifier, index) => {\n if (isAccidental(modifier) && modifier.type == accidentalString && modifier.getIndex() == keyIndex) {\n staveNote.getModifiers().splice(index, 1);\n }\n });\n // Add the accidental to the StaveNote\n if (!sameAccidental || (sameAccidental && previouslyModified)) {\n // Modify the scale map so that the root pitch has an\n // updated state\n scaleMap[key.root + octave] = pitch;\n // Create the accidental\n const accidental = new Accidental(accidentalString);\n // Attach the accidental to the StaveNote\n staveNote.addModifier(accidental, keyIndex);\n // Add the pitch to list of pitches that modified accidentals\n modifiedPitches.push(keyString);\n }\n });\n // process grace notes\n staveNote.getModifiers().forEach((modifier) => {\n if (isGraceNoteGroup(modifier)) {\n modifier.getGraceNotes().forEach(processNote);\n }\n });\n };\n tickables.forEach(processNote);\n });\n }\n reset() {\n const fontScale = this.render_options.font_scale;\n this.glyph = new Glyph(this.accidental.code, fontScale);\n this.glyph.setOriginX(1.0);\n if (this.cautionary) {\n this.parenLeft = new Glyph(Tables.accidentalCodes('{').code, fontScale);\n this.parenRight = new Glyph(Tables.accidentalCodes('}').code, fontScale);\n this.parenLeft.setOriginX(1.0);\n this.parenRight.setOriginX(1.0);\n }\n }\n /** Get width in pixels. */\n getWidth() {\n if (this.cautionary) {\n const parenLeft = defined(this.parenLeft);\n const parenRight = defined(this.parenRight);\n const parenWidth = parenLeft.getMetrics().width +\n parenRight.getMetrics().width +\n this.render_options.parenLeftPadding +\n this.render_options.parenRightPadding;\n return this.glyph.getMetrics().width + parenWidth;\n }\n else {\n return this.glyph.getMetrics().width;\n }\n }\n /** Attach this accidental to `note`, which must be a `StaveNote`. */\n setNote(note) {\n defined(note, 'ArgumentError', `Bad note value: ${note}`);\n this.note = note;\n // Accidentals attached to grace notes are rendered smaller.\n if (isGraceNote(note)) {\n this.render_options.font_scale = 25;\n this.reset();\n }\n return this;\n }\n /** If called, draws parenthesis around accidental. */\n setAsCautionary() {\n this.cautionary = true;\n this.render_options.font_scale = 28;\n this.reset();\n return this;\n }\n /** Render accidental onto canvas. */\n draw() {\n const { type, position, index, cautionary, x_shift, y_shift, glyph, render_options: { parenLeftPadding, parenRightPadding }, } = this;\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n // Figure out the start `x` and `y` coordinates for note and index.\n const start = note.getModifierStartXY(position, index);\n let accX = start.x + x_shift;\n const accY = start.y + y_shift;\n L('Rendering: ', type, accX, accY);\n if (!cautionary) {\n glyph.render(ctx, accX, accY);\n }\n else {\n const parenLeft = defined(this.parenLeft);\n const parenRight = defined(this.parenRight);\n // Render the accidental in parentheses.\n parenRight.render(ctx, accX, accY);\n accX -= parenRight.getMetrics().width;\n accX -= parenRightPadding;\n accX -= this.accidental.parenRightPaddingAdjustment;\n glyph.render(ctx, accX, accY);\n accX -= glyph.getMetrics().width;\n accX -= parenLeftPadding;\n parenLeft.render(ctx, accX, accY);\n }\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Accidental.DEBUG` to `true`. */\nAccidental.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// This file implements the `Stem` object. Generally this object is handled\n// by its parent `StemmableNote`.\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Stem.DEBUG)\n log('Vex.Flow.Stem', args);\n}\nexport class Stem extends Element {\n constructor(options) {\n super();\n this.stem_up_y_offset = 0;\n this.stem_down_y_offset = 0;\n this.stem_up_y_base_offset = 0;\n this.stem_down_y_base_offset = 0;\n // Default notehead x bounds\n this.x_begin = (options === null || options === void 0 ? void 0 : options.x_begin) || 0;\n this.x_end = (options === null || options === void 0 ? void 0 : options.x_end) || 0;\n // Y bounds for top/bottom most notehead\n this.y_top = (options === null || options === void 0 ? void 0 : options.y_top) || 0;\n this.y_bottom = (options === null || options === void 0 ? void 0 : options.y_bottom) || 0;\n // Stem top extension\n this.stem_extension = (options === null || options === void 0 ? void 0 : options.stem_extension) || 0;\n // Direction of the stem\n this.stem_direction = (options === null || options === void 0 ? void 0 : options.stem_direction) || 0;\n // Flag to override all draw calls\n this.hide = (options === null || options === void 0 ? void 0 : options.hide) || false;\n this.isStemlet = (options === null || options === void 0 ? void 0 : options.isStemlet) || false;\n this.stemletHeight = (options === null || options === void 0 ? void 0 : options.stemletHeight) || 0;\n // Use to adjust the rendered height without affecting\n // the results of `.getExtents()`\n this.renderHeightAdjustment = 0;\n this.setOptions(options);\n }\n static get CATEGORY() {\n return Category.Stem;\n }\n // Stem directions\n static get UP() {\n return 1;\n }\n static get DOWN() {\n return -1;\n }\n // Theme\n static get WIDTH() {\n return Tables.STEM_WIDTH;\n }\n static get HEIGHT() {\n return Tables.STEM_HEIGHT;\n }\n setOptions(options) {\n // Changing where the stem meets the head\n this.stem_up_y_offset = (options === null || options === void 0 ? void 0 : options.stem_up_y_offset) || 0;\n this.stem_down_y_offset = (options === null || options === void 0 ? void 0 : options.stem_down_y_offset) || 0;\n this.stem_up_y_base_offset = (options === null || options === void 0 ? void 0 : options.stem_up_y_base_offset) || 0;\n this.stem_down_y_base_offset = (options === null || options === void 0 ? void 0 : options.stem_down_y_base_offset) || 0;\n }\n // Set the x bounds for the default notehead\n setNoteHeadXBounds(x_begin, x_end) {\n this.x_begin = x_begin;\n this.x_end = x_end;\n return this;\n }\n // Set the direction of the stem in relation to the noteheads\n setDirection(direction) {\n this.stem_direction = direction;\n }\n // Set the extension for the stem, generally for flags or beams\n setExtension(ext) {\n this.stem_extension = ext;\n }\n getExtension() {\n return this.stem_extension;\n }\n // The the y bounds for the top and bottom noteheads\n setYBounds(y_top, y_bottom) {\n this.y_top = y_top;\n this.y_bottom = y_bottom;\n }\n // Gets the entire height for the stem\n getHeight() {\n const y_offset = this.stem_direction === Stem.UP ? this.stem_up_y_offset : this.stem_down_y_offset;\n const unsigned_height = this.y_bottom - this.y_top + (Stem.HEIGHT - y_offset + this.stem_extension); // parentheses just for grouping.\n return unsigned_height * this.stem_direction;\n }\n getBoundingBox() {\n throw new RuntimeError('NotImplemented', 'getBoundingBox() not implemented.');\n }\n // Get the y coordinates for the very base of the stem to the top of\n // the extension\n getExtents() {\n const isStemUp = this.stem_direction === Stem.UP;\n const ys = [this.y_top, this.y_bottom];\n const stemHeight = Stem.HEIGHT + this.stem_extension;\n const innerMostNoteheadY = (isStemUp ? Math.min : Math.max)(...ys);\n const outerMostNoteheadY = (isStemUp ? Math.max : Math.min)(...ys);\n const stemTipY = innerMostNoteheadY + stemHeight * -this.stem_direction;\n return { topY: stemTipY, baseY: outerMostNoteheadY };\n }\n setVisibility(isVisible) {\n this.hide = !isVisible;\n return this;\n }\n setStemlet(isStemlet, stemletHeight) {\n this.isStemlet = isStemlet;\n this.stemletHeight = stemletHeight;\n return this;\n }\n adjustHeightForFlag() {\n this.renderHeightAdjustment = Tables.currentMusicFont().lookupMetric('stem.heightAdjustmentForFlag', -3);\n }\n adjustHeightForBeam() {\n this.renderHeightAdjustment = -Stem.WIDTH / 2;\n }\n // Render the stem onto the canvas\n draw() {\n this.setRendered();\n if (this.hide)\n return;\n const ctx = this.checkContext();\n let stem_x;\n let stem_y;\n const stem_direction = this.stem_direction;\n let y_base_offset = 0;\n if (stem_direction === Stem.DOWN) {\n // Down stems are rendered to the left of the head.\n stem_x = this.x_begin;\n stem_y = this.y_top + this.stem_down_y_offset;\n y_base_offset = this.stem_down_y_base_offset;\n }\n else {\n // Up stems are rendered to the right of the head.\n stem_x = this.x_end;\n stem_y = this.y_bottom - this.stem_up_y_offset;\n y_base_offset = this.stem_up_y_base_offset;\n }\n const stemHeight = this.getHeight();\n L('Rendering stem - ', 'Top Y: ', this.y_top, 'Bottom Y: ', this.y_bottom);\n // The offset from the stem's base which is required fo satisfy the stemlet height\n const stemletYOffset = this.isStemlet ? stemHeight - this.stemletHeight * this.stem_direction : 0;\n // Draw the stem\n ctx.save();\n ctx.openGroup('stem', this.getAttribute('id'), { pointerBBox: true });\n this.applyStyle(ctx);\n ctx.beginPath();\n ctx.setLineWidth(Stem.WIDTH);\n ctx.moveTo(stem_x, stem_y - stemletYOffset + y_base_offset);\n ctx.lineTo(stem_x, stem_y - stemHeight - this.renderHeightAdjustment * stem_direction);\n ctx.stroke();\n this.restoreStyle(ctx);\n ctx.closeGroup();\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Stem.DEBUG` to `true`. */\nStem.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextFormatter.DEBUG)\n log('Vex.Flow.TextFormatter', args);\n}\n/**\n * Text widths are stored in a cache, so we don't have to recompute widths\n * for the same font + string combination.\n *\n * The cache is first keyed by the font information. The key is of the form:\n * `${family}-${size}-${weight}-${style}`\n * The second level key is the specific text to be measured.\n *\n * The stored value is the measured width in `em` units.\n * textWidth == textWidthCache[cacheKey][textToMeasure]\n */\nconst textWidthCache = {};\n/**\n * Applications may register additional fonts via `TextFormatter.registerInfo(info)`.\n * The metrics for those fonts will be made available to the application.\n */\nconst registry = {};\nexport class TextFormatter {\n /**\n * Use `TextFormatter.create(...)` to build an instance from information previously\n * registered via `TextFormatter.registerInfo(info)`.\n */\n constructor(formatterInfo) {\n /** Font family. */\n this.family = '';\n /** Specified in `pt` units. */\n this.size = 14;\n /** Font metrics are extracted at 1000 upem (units per em). */\n this.resolution = 1000;\n /**\n * For text formatting, we do not require glyph outlines, but instead rely on glyph\n * bounding box metrics such as:\n * ```\n * {\n * x_min: 48,\n * x_max: 235,\n * y_min: -17,\n * y_max: 734,\n * ha: 751,\n * leftSideBearing: 48,\n * advanceWidth: 286,\n * }\n * ```\n */\n this.glyphs = {};\n this.serifs = false;\n this.monospaced = false;\n this.italic = false;\n this.bold = false;\n this.superscriptOffset = 0;\n this.subscriptOffset = 0;\n this.maxSizeGlyph = 'H';\n // This is an internal key used to index the `textWidthCache`.\n this.cacheKey = '';\n this.updateParams(formatterInfo);\n }\n /**\n * Return all registered font families.\n */\n static getFontFamilies() {\n const registeredFonts = [];\n for (const fontFamily in registry) {\n const formatterInfo = registry[fontFamily];\n registeredFonts.push(Object.assign({}, formatterInfo));\n }\n return registeredFonts;\n }\n /**\n * Call `TextFormatter.registerInfo(info)` to register font information before using this method.\n *\n * This method creates a formatter for the font that most closely matches the requested font.\n * We compare font family, bold, and italic attributes.\n * This method will return a fallback formatter if there are no matches.\n */\n static create(requestedFont = {}) {\n L('create: ', requestedFont);\n if (!requestedFont.family) {\n requestedFont.family = Font.SANS_SERIF;\n }\n // TODO: One potential (small) optimization is to cache the TextFormatter object\n // returned for each font info. We would probably want to clear the cache if\n // the registry is ever updated.\n const candidates = [];\n // The incoming font family is a string of comma-separated font family names.\n // (e.g., `PetalumaScript, Arial, sans-serif`).\n const requestedFamilies = requestedFont.family.split(/\\s*,\\s*/);\n for (const requestedFamily of requestedFamilies) {\n for (const fontFamily in registry) {\n // Support cases where the registry contains 'Roboto Slab Medium',\n // but the requestedFont.family is 'Roboto Slab'.\n if (fontFamily.startsWith(requestedFamily)) {\n candidates.push(registry[fontFamily]);\n }\n }\n if (candidates.length > 0) {\n break;\n }\n }\n let formatter;\n if (candidates.length === 0) {\n // No match, so return a fallback text formatter.\n formatter = new TextFormatter(Object.values(registry)[0]);\n }\n else if (candidates.length === 1) {\n formatter = new TextFormatter(candidates[0]);\n }\n else {\n const bold = Font.isBold(requestedFont.weight);\n const italic = Font.isItalic(requestedFont.style);\n const perfectMatch = candidates.find((f) => f.bold === bold && f.italic === italic);\n if (perfectMatch) {\n formatter = new TextFormatter(perfectMatch);\n }\n else {\n const partialMatch = candidates.find((f) => f.italic === italic || f.bold === bold);\n if (partialMatch) {\n formatter = new TextFormatter(partialMatch);\n }\n else {\n formatter = new TextFormatter(candidates[0]);\n }\n }\n }\n const fontSize = requestedFont.size;\n if (typeof fontSize !== 'undefined') {\n const fontSizeInPt = Font.convertSizeToPointValue(fontSize);\n formatter.setFontSize(fontSizeInPt);\n }\n return formatter;\n }\n /**\n * @param fontFamily used as a key to the font registry.\n * @returns the same info object that was passed in via `TextFormatter.registerInfo(info)`\n */\n static getInfo(fontFamily) {\n return registry[fontFamily];\n }\n /**\n * Apps may register their own fonts and metrics, and those metrics\n * will be available to the app for formatting.\n *\n * Metrics can be generated from a font file using fontgen_text.js in the tools/fonts directory.\n * @param info\n * @param overwrite\n */\n static registerInfo(info, overwrite = false) {\n L('registerInfo: ', info, overwrite);\n const fontFamily = info.family;\n const currFontInfo = registry[fontFamily];\n if (currFontInfo === undefined || overwrite) {\n registry[fontFamily] = info;\n }\n }\n updateParams(params) {\n if (params.family)\n this.family = params.family;\n if (params.resolution)\n this.resolution = params.resolution;\n if (params.glyphs)\n this.glyphs = params.glyphs;\n if (params.serifs)\n this.serifs = params.serifs;\n if (params.monospaced)\n this.monospaced = params.monospaced;\n if (params.italic)\n this.italic = params.italic;\n if (params.bold)\n this.bold = params.bold;\n if (params.maxSizeGlyph)\n this.maxSizeGlyph = params.maxSizeGlyph;\n if (params.superscriptOffset)\n this.superscriptOffset = params.superscriptOffset;\n if (params.subscriptOffset)\n this.subscriptOffset = params.subscriptOffset;\n this.updateCacheKey();\n }\n /** Create a hash with the current font data, so we can cache computed widths. */\n updateCacheKey() {\n const family = this.family.replace(/\\s+/g, '_');\n const size = this.size;\n const weight = this.bold ? FontWeight.BOLD : FontWeight.NORMAL;\n const style = this.italic ? FontStyle.ITALIC : FontStyle.NORMAL;\n // Use the same key format as SVGContext.\n this.cacheKey = `${family}%${size}%${weight}%${style}`;\n }\n /**\n * The glyphs table is indexed by the character (e.g., 'C', '@').\n * See: robotoslab_glyphs.ts & petalumascript_glyphs.ts.\n */\n getGlyphMetrics(character) {\n if (this.glyphs[character]) {\n return this.glyphs[character];\n }\n else {\n return this.glyphs[this.maxSizeGlyph];\n }\n }\n get maxHeight() {\n const metrics = this.getGlyphMetrics(this.maxSizeGlyph);\n return (metrics.ha / this.resolution) * this.fontSizeInPixels;\n }\n /**\n * Retrieve the character's advanceWidth as a fraction of an `em` unit.\n * For the space character ' ' as defined in the:\n * petalumascript_glyphs.ts: 250 advanceWidth in the 1000 unitsPerEm font returns 0.25.\n * robotoslab_glyphs.ts: 509 advanceWidth in the 2048 unitsPerEm font returns 0.2485.\n */\n getWidthForCharacterInEm(c) {\n var _a;\n const metrics = this.getGlyphMetrics(c);\n if (!metrics) {\n // An arbitrary number, close to the `em` width of the '#' and '5' characters in PetalumaScript.\n return 0.65;\n }\n else {\n const advanceWidth = (_a = metrics.advanceWidth) !== null && _a !== void 0 ? _a : 0;\n return advanceWidth / this.resolution;\n }\n }\n /**\n * Retrieve the total width of `text` in `em` units.\n */\n getWidthForTextInEm(text) {\n const key = this.cacheKey;\n // Get the cache for this specific font family, size, weight, style combination.\n // The cache contains previously computed widths for different `text` strings.\n let cachedWidths = textWidthCache[key];\n if (cachedWidths === undefined) {\n cachedWidths = {};\n textWidthCache[key] = cachedWidths;\n }\n let width = cachedWidths[text];\n if (width === undefined) {\n width = 0;\n for (let i = 0; i < text.length; ++i) {\n width += this.getWidthForCharacterInEm(text[i]);\n }\n cachedWidths[text] = width;\n }\n return width;\n }\n /** The width of the text (in `em`) is scaled by the font size (in `px`). */\n getWidthForTextInPx(text) {\n return this.getWidthForTextInEm(text) * this.fontSizeInPixels;\n }\n /**\n * @param size in pt.\n */\n setFontSize(size) {\n this.size = size;\n // The width cache key depends on the current font size.\n this.updateCacheKey();\n return this;\n }\n /** `this.size` is specified in points. Convert to pixels. */\n get fontSizeInPixels() {\n return this.size * Font.scaleToPxFrom.pt;\n }\n getResolution() {\n return this.resolution;\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.TextFormatter.DEBUG` to `true`. */\nTextFormatter.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category, isStemmableNote, isTabNote } from './typeguard';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Annotation.DEBUG)\n log('Vex.Flow.Annotation', args);\n}\nexport var AnnotationHorizontalJustify;\n(function (AnnotationHorizontalJustify) {\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"LEFT\"] = 1] = \"LEFT\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"CENTER\"] = 2] = \"CENTER\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"RIGHT\"] = 3] = \"RIGHT\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(AnnotationHorizontalJustify || (AnnotationHorizontalJustify = {}));\nexport var AnnotationVerticalJustify;\n(function (AnnotationVerticalJustify) {\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"TOP\"] = 1] = \"TOP\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"CENTER\"] = 2] = \"CENTER\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"BOTTOM\"] = 3] = \"BOTTOM\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(AnnotationVerticalJustify || (AnnotationVerticalJustify = {}));\n/**\n * Annotations are modifiers that can be attached to\n * notes.\n *\n * See `tests/annotation_tests.ts` for usage examples.\n */\nexport class Annotation extends Modifier {\n /**\n * Annotations inherit from `Modifier` and is positioned correctly when\n * in a `ModifierContext`.\n * Create a new `Annotation` with the string `text`.\n */\n constructor(text) {\n super();\n this.text = text;\n this.horizontalJustification = AnnotationHorizontalJustify.CENTER;\n // warning: the default in the constructor is TOP, but in the factory the default is BOTTOM.\n // this is to support legacy application that may expect this.\n this.verticalJustification = AnnotationVerticalJustify.TOP;\n this.resetFont();\n // The default width is calculated from the text.\n this.setWidth(Tables.textWidth(text));\n }\n /** Annotations category string. */\n static get CATEGORY() {\n return Category.Annotation;\n }\n // Use the same padding for annotations as note head so the\n // words don't run into each other.\n static get minAnnotationPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Arrange annotations within a `ModifierContext` */\n static format(annotations, state) {\n if (!annotations || annotations.length === 0)\n return false;\n let leftWidth = 0;\n let rightWidth = 0;\n let maxLeftGlyphWidth = 0;\n let maxRightGlyphWidth = 0;\n for (let i = 0; i < annotations.length; ++i) {\n const annotation = annotations[i];\n const textFormatter = TextFormatter.create(annotation.textFont);\n // Text height is expressed in fractional stave spaces.\n const textLines = (5 + textFormatter.maxHeight) / Tables.STAVE_LINE_DISTANCE;\n let verticalSpaceNeeded = textLines;\n const note = annotation.checkAttachedNote();\n const glyphWidth = note.getGlyph().getWidth();\n // Get the text width from the font metrics.\n const textWidth = textFormatter.getWidthForTextInPx(annotation.text);\n if (annotation.horizontalJustification === AnnotationHorizontalJustify.LEFT) {\n maxLeftGlyphWidth = Math.max(glyphWidth, maxLeftGlyphWidth);\n leftWidth = Math.max(leftWidth, textWidth) + Annotation.minAnnotationPadding;\n }\n else if (annotation.horizontalJustification === AnnotationHorizontalJustify.RIGHT) {\n maxRightGlyphWidth = Math.max(glyphWidth, maxRightGlyphWidth);\n rightWidth = Math.max(rightWidth, textWidth);\n }\n else {\n leftWidth = Math.max(leftWidth, textWidth / 2) + Annotation.minAnnotationPadding;\n rightWidth = Math.max(rightWidth, textWidth / 2);\n maxLeftGlyphWidth = Math.max(glyphWidth / 2, maxLeftGlyphWidth);\n maxRightGlyphWidth = Math.max(glyphWidth / 2, maxRightGlyphWidth);\n }\n const stave = note.getStave();\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let stemHeight = 0;\n let lines = 5;\n if (isTabNote(note)) {\n if (note.render_options.draw_stem) {\n const stem = note.getStem();\n if (stem) {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n else {\n stemHeight = 0;\n }\n }\n else if (isStemmableNote(note)) {\n const stem = note.getStem();\n if (stem && note.getNoteType() === 'n') {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n if (stave) {\n lines = stave.getNumLines();\n }\n if (annotation.verticalJustification === this.VerticalJustify.TOP) {\n let noteLine = note.getLineNumber(true);\n if (isTabNote(note)) {\n noteLine = lines - (note.leastString() - 0.5);\n }\n if (stemDirection === Stem.UP) {\n noteLine += stemHeight;\n }\n const curTop = noteLine + state.top_text_line + 0.5;\n if (curTop < lines) {\n annotation.setTextLine(lines - noteLine);\n verticalSpaceNeeded += lines - noteLine;\n state.top_text_line = verticalSpaceNeeded;\n }\n else {\n annotation.setTextLine(state.top_text_line);\n state.top_text_line += verticalSpaceNeeded;\n }\n }\n else if (annotation.verticalJustification === this.VerticalJustify.BOTTOM) {\n let noteLine = lines - note.getLineNumber();\n if (isTabNote(note)) {\n noteLine = note.greatestString() - 1;\n }\n if (stemDirection === Stem.DOWN) {\n noteLine += stemHeight;\n }\n const curBottom = noteLine + state.text_line + 1;\n if (curBottom < lines) {\n annotation.setTextLine(lines - curBottom);\n verticalSpaceNeeded += lines - curBottom;\n state.text_line = verticalSpaceNeeded;\n }\n else {\n annotation.setTextLine(state.text_line);\n state.text_line += verticalSpaceNeeded;\n }\n }\n else {\n annotation.setTextLine(state.text_line);\n }\n }\n const rightOverlap = Math.min(Math.max(rightWidth - maxRightGlyphWidth, 0), Math.max(rightWidth - state.right_shift, 0));\n const leftOverlap = Math.min(Math.max(leftWidth - maxLeftGlyphWidth, 0), Math.max(leftWidth - state.left_shift, 0));\n state.left_shift += leftOverlap;\n state.right_shift += rightOverlap;\n return true;\n }\n /**\n * Set vertical position of text (above or below stave).\n * @param just value in `AnnotationVerticalJustify`.\n */\n setVerticalJustification(just) {\n this.verticalJustification = typeof just === 'string' ? Annotation.VerticalJustifyString[just] : just;\n return this;\n }\n /**\n * Get horizontal justification.\n */\n getJustification() {\n return this.horizontalJustification;\n }\n /**\n * Set horizontal justification.\n * @param justification value in `Annotation.Justify`.\n */\n setJustification(just) {\n this.horizontalJustification = typeof just === 'string' ? Annotation.HorizontalJustifyString[just] : just;\n return this;\n }\n /** Render text beside the note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n const textFormatter = TextFormatter.create(this.textFont);\n const start = note.getModifierStartXY(ModifierPosition.ABOVE, this.index);\n this.setRendered();\n // We're changing context parameters. Save current state.\n ctx.save();\n // Apply style might not save context, if this.style is undefined, so we\n // still need to save context state just before this, since we will be\n // changing ctx parameters below.\n this.applyStyle();\n ctx.openGroup('annotation', this.getAttribute('id'));\n ctx.setFont(this.textFont);\n const text_width = ctx.measureText(this.text).width;\n const text_height = textFormatter.maxHeight + 2;\n let x;\n let y;\n if (this.horizontalJustification === AnnotationHorizontalJustify.LEFT) {\n x = start.x;\n }\n else if (this.horizontalJustification === AnnotationHorizontalJustify.RIGHT) {\n x = start.x - text_width;\n }\n else if (this.horizontalJustification === AnnotationHorizontalJustify.CENTER) {\n x = start.x - text_width / 2;\n } /* CENTER_STEM */\n else {\n x = note.getStemX() - text_width / 2;\n }\n let stem_ext = {};\n let spacing = 0;\n const has_stem = note.hasStem();\n const stave = note.checkStave();\n // The position of the text varies based on whether or not the note\n // has a stem.\n if (has_stem) {\n stem_ext = note.checkStem().getExtents();\n spacing = stave.getSpacingBetweenLines();\n }\n if (this.verticalJustification === AnnotationVerticalJustify.BOTTOM) {\n // Use the largest (lowest) Y value\n const ys = note.getYs();\n y = ys.reduce((a, b) => (a > b ? a : b));\n y += (this.text_line + 1) * Tables.STAVE_LINE_DISTANCE + text_height;\n if (has_stem && stemDirection === Stem.DOWN) {\n y = Math.max(y, stem_ext.topY + text_height + spacing * this.text_line);\n }\n }\n else if (this.verticalJustification === AnnotationVerticalJustify.CENTER) {\n const yt = note.getYForTopText(this.text_line) - 1;\n const yb = stave.getYForBottomText(this.text_line);\n y = yt + (yb - yt) / 2 + text_height / 2;\n }\n else if (this.verticalJustification === AnnotationVerticalJustify.TOP) {\n y = note.getYs()[0] - (this.text_line + 1) * Tables.STAVE_LINE_DISTANCE;\n if (has_stem && stemDirection === Stem.UP) {\n // If the stem is above the stave already, go with default line width vs. actual\n // since the lines between don't really matter.\n spacing = stem_ext.topY < stave.getTopLineTopY() ? Tables.STAVE_LINE_DISTANCE : spacing;\n y = Math.min(y, stem_ext.topY - spacing * (this.text_line + 1));\n }\n } /* CENTER_STEM */\n else {\n const extents = note.getStemExtents();\n y = extents.topY + (extents.baseY - extents.topY) / 2 + text_height / 2;\n }\n L('Rendering annotation: ', this.text, x, y);\n ctx.fillText(this.text, x, y);\n ctx.closeGroup();\n this.restoreStyle();\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Annotation.DEBUG` to `true`. */\nAnnotation.DEBUG = false;\nAnnotation.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n/** Text annotations can be positioned and justified relative to the note. */\nAnnotation.HorizontalJustify = AnnotationHorizontalJustify;\nAnnotation.HorizontalJustifyString = {\n left: AnnotationHorizontalJustify.LEFT,\n right: AnnotationHorizontalJustify.RIGHT,\n center: AnnotationHorizontalJustify.CENTER,\n centerStem: AnnotationHorizontalJustify.CENTER_STEM,\n};\nAnnotation.VerticalJustify = AnnotationVerticalJustify;\nAnnotation.VerticalJustifyString = {\n above: AnnotationVerticalJustify.TOP,\n top: AnnotationVerticalJustify.TOP,\n below: AnnotationVerticalJustify.BOTTOM,\n bottom: AnnotationVerticalJustify.BOTTOM,\n center: AnnotationVerticalJustify.CENTER,\n centerStem: AnnotationVerticalJustify.CENTER_STEM,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns.\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isGraceNote, isStaveNote, isStemmableNote, isTabNote } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Articulation.DEBUG)\n log('Vex.Flow.Articulation', args);\n}\nconst { ABOVE, BELOW } = Modifier.Position;\nfunction roundToNearestHalf(mathFn, value) {\n return mathFn(value / 0.5) * 0.5;\n}\n// This includes both staff and ledger lines\nfunction isWithinLines(line, position) {\n return position === ABOVE ? line <= 5 : line >= 1;\n}\nfunction getRoundingFunction(line, position) {\n if (isWithinLines(line, position)) {\n if (position === ABOVE) {\n return Math.ceil;\n }\n else {\n return Math.floor;\n }\n }\n else {\n return Math.round;\n }\n}\nfunction snapLineToStaff(canSitBetweenLines, line, position, offsetDirection) {\n // Initially, snap to nearest staff line or space\n const snappedLine = roundToNearestHalf(getRoundingFunction(line, position), line);\n const canSnapToStaffSpace = canSitBetweenLines && isWithinLines(snappedLine, position);\n const onStaffLine = snappedLine % 1 === 0;\n if (canSnapToStaffSpace && onStaffLine) {\n const HALF_STAFF_SPACE = 0.5;\n return snappedLine + HALF_STAFF_SPACE * -offsetDirection;\n }\n else {\n return snappedLine;\n }\n}\n// Helper function for checking if a Note object is either a StaveNote or a GraceNote.\nconst isStaveOrGraceNote = (note) => isStaveNote(note) || isGraceNote(note);\nfunction getTopY(note, textLine) {\n const stemDirection = note.getStemDirection();\n const { topY: stemTipY, baseY: stemBaseY } = note.getStemExtents();\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemTipY;\n }\n else {\n return stemBaseY;\n }\n }\n else {\n return Math.min(...note.getYs());\n }\n }\n else if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemTipY;\n }\n else {\n return note.checkStave().getYForTopText(textLine);\n }\n }\n else {\n return note.checkStave().getYForTopText(textLine);\n }\n }\n else {\n throw new RuntimeError('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes');\n }\n}\nfunction getBottomY(note, textLine) {\n const stemDirection = note.getStemDirection();\n const { topY: stemTipY, baseY: stemBaseY } = note.getStemExtents();\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemBaseY;\n }\n else {\n return stemTipY;\n }\n }\n else {\n return Math.max(...note.getYs());\n }\n }\n else if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return note.checkStave().getYForBottomText(textLine);\n }\n else {\n return stemTipY;\n }\n }\n else {\n return note.checkStave().getYForBottomText(textLine);\n }\n }\n else {\n throw new RuntimeError('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes');\n }\n}\n/**\n * Get the initial offset of the articulation from the y value of the starting position.\n * This is required because the top/bottom text positions already have spacing applied to\n * provide a \"visually pleasant\" default position. However the y values provided from\n * the stavenote's top/bottom do *not* have any pre-applied spacing. This function\n * normalizes this asymmetry.\n * @param note\n * @param position\n * @returns\n */\nfunction getInitialOffset(note, position) {\n const isOnStemTip = (position === ABOVE && note.getStemDirection() === Stem.UP) ||\n (position === BELOW && note.getStemDirection() === Stem.DOWN);\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem() && isOnStemTip) {\n return 0.5;\n }\n else {\n // this amount is larger than the stem-tip offset because we start from\n // the center of the notehead\n return 1;\n }\n }\n else {\n if (note.hasStem() && isOnStemTip) {\n return 1;\n }\n else {\n return 0;\n }\n }\n}\n/**\n * Articulations and Accents are modifiers that can be\n * attached to notes. The complete list of articulations is available in\n * `tables.ts` under `Vex.Flow.articulationCodes`.\n *\n * See `tests/articulation_tests.ts` for usage examples.\n */\nexport class Articulation extends Modifier {\n /**\n * Create a new articulation.\n * @param type entry in `Vex.Flow.articulationCodes` in `tables.ts`\n */\n constructor(type) {\n super();\n this.type = type;\n this.position = BELOW;\n this.render_options = {\n font_scale: 38,\n };\n this.reset();\n }\n /** Articulations category string. */\n static get CATEGORY() {\n return Category.Articulation;\n }\n /**\n * FIXME:\n * Most of the complex formatting logic (ie: snapping to space) is\n * actually done in .render(). But that logic belongs in this method.\n *\n * Unfortunately, this isn't possible because, by this point, stem lengths\n * have not yet been finalized. Finalized stem lengths are required to determine the\n * initial position of any stem-side articulation.\n *\n * This indicates that all objects should have their stave set before being\n * formatted. It can't be an optional if you want accurate vertical positioning.\n * Consistently positioned articulations that play nice with other modifiers\n * won't be possible until we stop relying on render-time formatting.\n *\n * Ideally, when this function has completed, the vertical articulation positions\n * should be ready to render without further adjustment. But the current state\n * is far from this ideal.\n */\n static format(articulations, state) {\n if (!articulations || articulations.length === 0)\n return false;\n const margin = 0.5;\n let maxGlyphWidth = 0;\n const getIncrement = (articulation, line, position) => roundToNearestHalf(getRoundingFunction(line, position), defined(articulation.glyph.getMetrics().height) / 10 + margin);\n articulations.forEach((articulation) => {\n const note = articulation.checkAttachedNote();\n maxGlyphWidth = Math.max(note.getGlyph().getWidth(), maxGlyphWidth);\n let lines = 5;\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let stemHeight = 0;\n // Decide if we need to consider beam direction in placement.\n if (isStemmableNote(note)) {\n const stem = note.getStem();\n if (stem) {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n const stave = note.getStave();\n if (stave) {\n lines = stave.getNumLines();\n }\n if (articulation.getPosition() === ABOVE) {\n let noteLine = note.getLineNumber(true);\n if (stemDirection === Stem.UP) {\n noteLine += stemHeight;\n }\n let increment = getIncrement(articulation, state.top_text_line, ABOVE);\n const curTop = noteLine + state.top_text_line + 0.5;\n // If articulation must be above stave, add lines between note and stave top\n if (!articulation.articulation.between_lines && curTop < lines) {\n increment += lines - curTop;\n }\n articulation.setTextLine(state.top_text_line);\n state.top_text_line += increment;\n }\n else if (articulation.getPosition() === BELOW) {\n let noteLine = Math.max(lines - note.getLineNumber(), 0);\n if (stemDirection === Stem.DOWN) {\n noteLine += stemHeight;\n }\n let increment = getIncrement(articulation, state.text_line, BELOW);\n const curBottom = noteLine + state.text_line + 0.5;\n // if articulation must be below stave, add lines from note to stave bottom\n if (!articulation.articulation.between_lines && curBottom < lines) {\n increment += lines - curBottom;\n }\n articulation.setTextLine(state.text_line);\n state.text_line += increment;\n }\n });\n const width = articulations\n .map((articulation) => articulation.getWidth())\n .reduce((maxWidth, articWidth) => Math.max(articWidth, maxWidth));\n const overlap = Math.min(Math.max(width - maxGlyphWidth, 0), Math.max(width - (state.left_shift + state.right_shift), 0));\n state.left_shift += overlap / 2;\n state.right_shift += overlap / 2;\n return true;\n }\n static easyScoreHook({ articulations }, note, builder) {\n if (!articulations)\n return;\n const articNameToCode = {\n staccato: 'a.',\n tenuto: 'a-',\n accent: 'a>',\n };\n articulations\n .split(',')\n .map((articString) => articString.trim().split('.'))\n .map(([name, position]) => {\n const artic = { type: articNameToCode[name] };\n if (position)\n artic.position = Modifier.PositionString[position];\n return builder.getFactory().Articulation(artic);\n })\n .map((artic) => note.addModifier(artic, 0));\n }\n reset() {\n this.articulation = Tables.articulationCodes(this.type);\n const articulation = defined(this.articulation, 'ArgumentError', `Articulation not found: ${this.type}`);\n const code = (this.position === ABOVE ? articulation.aboveCode : articulation.belowCode) || articulation.code;\n this.glyph = new Glyph(code !== null && code !== void 0 ? code : '', this.render_options.font_scale);\n this.setWidth(defined(this.glyph.getMetrics().width));\n }\n /** Render articulation in position next to note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const index = this.checkIndex();\n const { position, glyph, text_line: textLine } = this;\n const canSitBetweenLines = this.articulation.between_lines;\n const stave = note.checkStave();\n const staffSpace = stave.getSpacingBetweenLines();\n const isTab = isTabNote(note);\n // Articulations are centered over/under the note head.\n const { x } = note.getModifierStartXY(position, index);\n const shouldSitOutsideStaff = !canSitBetweenLines || isTab;\n const initialOffset = getInitialOffset(note, position);\n const padding = Tables.currentMusicFont().lookupMetric(`articulation.${glyph.getCode()}.padding`, 0);\n let y = {\n [ABOVE]: () => {\n glyph.setOrigin(0.5, 1);\n const y = getTopY(note, textLine) - (textLine + initialOffset) * staffSpace;\n return shouldSitOutsideStaff ? Math.min(stave.getYForTopText(Articulation.INITIAL_OFFSET), y) : y;\n },\n [BELOW]: () => {\n glyph.setOrigin(0.5, 0);\n const y = getBottomY(note, textLine) + (textLine + initialOffset) * staffSpace;\n return shouldSitOutsideStaff ? Math.max(stave.getYForBottomText(Articulation.INITIAL_OFFSET), y) : y;\n },\n }[position]();\n if (!isTab) {\n const offsetDirection = position === ABOVE ? -1 : +1;\n const noteLine = note.getKeyProps()[index].line;\n const distanceFromNote = (note.getYs()[index] - y) / staffSpace;\n const articLine = distanceFromNote + Number(noteLine);\n const snappedLine = snapLineToStaff(canSitBetweenLines, articLine, position, offsetDirection);\n if (isWithinLines(snappedLine, position))\n glyph.setOrigin(0.5, 0.5);\n y += Math.abs(snappedLine - articLine) * staffSpace * offsetDirection + padding * offsetDirection;\n }\n L(`Rendering articulation at (x: ${x}, y: ${y})`);\n glyph.render(ctx, x, y);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Articulation.DEBUG` to `true`. */\nArticulation.DEBUG = false;\nArticulation.INITIAL_OFFSET = -0.5;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2021.\n// MIT License\nimport { Category } from './typeguard';\nexport class RenderContext {\n static get CATEGORY() {\n return Category.RenderContext;\n }\n set font(f) {\n this.setFont(f);\n }\n get font() {\n return this.getFont();\n }\n /**\n * This is kept for backwards compatibility with 3.0.9.\n * @deprecated use `setFont(...)` instead since it now supports CSS font shorthand.\n */\n setRawFont(f) {\n this.setFont(f);\n return this;\n }\n}\n/**\n * Draw a tiny dot marker on the specified context. A great debugging aid.\n * @param ctx context\n * @param x dot x coordinate\n * @param y dot y coordinate\n * @param color\n */\nexport function drawDot(ctx, x, y, color = '#F55') {\n ctx.save();\n ctx.setFillStyle(color);\n // draw a circle\n ctx.beginPath();\n ctx.arc(x, y, 3, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n ctx.restore();\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\n/**\n * Tickable represents a element that sit on a score and\n * has a duration, i.e., Tickables occupy space in the musical rendering dimension.\n */\nexport class Tickable extends Element {\n constructor() {\n super();\n this._preFormatted = false;\n this._postFormatted = false;\n // These properties represent the duration of\n // this tickable element.\n this.ticks = new Fraction(0, 1); // Fractional value of ticks\n this.intrinsicTicks = 0; // Floating point value of ticks\n this.tickMultiplier = new Fraction(1, 1);\n // Formatter metrics\n this.width = 0;\n this.x_shift = 0; // Shift from tick context\n this.modifiers = [];\n this.tupletStack = [];\n this.align_center = false;\n this.center_x_shift = 0; // Shift from tick context if center aligned\n // This flag tells the formatter to ignore this tickable during\n // formatting and justification. It is set by tickables such as BarNote.\n this.ignore_ticks = false;\n // This is a space for an external formatting class or function to maintain\n // metrics.\n this.formatterMetrics = {\n // The freedom of a tickable is the distance it can move without colliding\n // with neighboring elements. A formatter can set these values during its\n // formatting pass, which a different formatter can then use to fine tune.\n freedom: { left: 0, right: 0 },\n // The simplified rational duration of this tick as a string. It can be\n // used as an index to a map or hashtable.\n duration: '',\n // The number of formatting iterations undergone.\n iterations: 0,\n // The space in pixels allocated by this formatter, along with the mean space\n // for tickables of this duration, and the deviation from the mean.\n space: {\n used: 0,\n mean: 0,\n deviation: 0,\n },\n };\n }\n static get CATEGORY() {\n return Category.Tickable;\n }\n /** Reset the Tickable, this function will be overloaded. */\n reset() {\n return this;\n }\n /** Return the ticks. */\n getTicks() {\n return this.ticks;\n }\n /** Check if it ignores the ticks. */\n shouldIgnoreTicks() {\n return this.ignore_ticks;\n }\n /** Ignore the ticks. */\n setIgnoreTicks(flag) {\n this.ignore_ticks = flag;\n return this;\n }\n /** Set width of note. Used by the formatter for positioning. */\n setWidth(width) {\n this.width = width;\n }\n /** Get width of note. Used by the formatter for positioning. */\n getWidth() {\n if (!this._preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetWidth on an unformatted note.\");\n }\n return this.width + (this.modifierContext ? this.modifierContext.getWidth() : 0);\n }\n /** Displace note by `x` pixels. Used by the formatter. */\n setXShift(x) {\n this.x_shift = x;\n return this;\n }\n /** Get the `x` displaced pixels of the note. */\n getXShift() {\n return this.x_shift;\n }\n /** Get `x` position of this tick context. */\n getX() {\n const tickContext = this.checkTickContext(`Can't getX() without a TickContext.`);\n return tickContext.getX() + this.x_shift;\n }\n /** Return the formatterMetrics. */\n getFormatterMetrics() {\n return this.formatterMetrics;\n }\n /** Return the center `x` shift. */\n getCenterXShift() {\n if (this.isCenterAligned()) {\n return this.center_x_shift;\n }\n return 0;\n }\n /** Set the center `x` shift. */\n setCenterXShift(centerXShift) {\n this.center_x_shift = centerXShift;\n return this;\n }\n // Check if tickable is center aligned. */\n isCenterAligned() {\n return this.align_center;\n }\n // Set/unset center alignment. */\n setCenterAlignment(align_center) {\n this.align_center = align_center;\n return this;\n }\n /**\n * Return the associated voice. Every tickable must be associated with a voice.\n * This allows formatters and preFormatter to associate them with the right modifierContexts.\n */\n getVoice() {\n return defined(this.voice, 'NoVoice', 'Tickable has no voice.');\n }\n /** Set the associated voice. */\n setVoice(voice) {\n this.voice = voice;\n }\n /** Get the tuplet. */\n getTuplet() {\n return this.tuplet;\n }\n /** Return the intrinsic ticks. */\n getTupletStack() {\n return this.tupletStack;\n }\n /**\n * Reset the specific Tuplet if this is not provided, all tuplets are reset.\n * Remove any prior tuplets from the tick calculation and\n * reset the intrinsic tick value.\n */\n resetTuplet(tuplet) {\n let noteCount;\n let notesOccupied;\n if (tuplet) {\n const i = this.tupletStack.indexOf(tuplet);\n if (i !== -1) {\n this.tupletStack.splice(i, 1);\n noteCount = tuplet.getNoteCount();\n notesOccupied = tuplet.getNotesOccupied();\n // Revert old multiplier by inverting numerator & denom.:\n this.applyTickMultiplier(noteCount, notesOccupied);\n }\n return this;\n }\n while (this.tupletStack.length) {\n tuplet = this.tupletStack.pop();\n noteCount = tuplet.getNoteCount();\n notesOccupied = tuplet.getNotesOccupied();\n // Revert old multiplier by inverting numerator & denom.:\n this.applyTickMultiplier(noteCount, notesOccupied);\n }\n return this;\n }\n /** Attach to new tuplet. */\n setTuplet(tuplet) {\n if (tuplet) {\n this.tupletStack.push(tuplet);\n const noteCount = tuplet.getNoteCount();\n const notesOccupied = tuplet.getNotesOccupied();\n this.applyTickMultiplier(notesOccupied, noteCount);\n }\n this.tuplet = tuplet;\n return this;\n }\n /**\n * Add self to the provided ModifierContext `mc`.\n * If this tickable has modifiers, set modifierContext.\n * @returns this\n */\n addToModifierContext(mc) {\n this.modifierContext = mc;\n for (let i = 0; i < this.modifiers.length; ++i) {\n this.modifierContext.addMember(this.modifiers[i]);\n }\n this.modifierContext.addMember(this);\n this._preFormatted = false;\n return this;\n }\n /**\n * Optional, if tickable has modifiers, associate a Modifier.\n * @param mod the modifier\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n addModifier(modifier, index = 0) {\n this.modifiers.push(modifier);\n this._preFormatted = false;\n return this;\n }\n /** Get the list of associated modifiers. */\n getModifiers() {\n return this.modifiers;\n }\n /** Set the Tick Context. */\n setTickContext(tc) {\n this.tickContext = tc;\n this._preFormatted = false;\n }\n checkTickContext(message = 'Tickable has no tick context.') {\n return defined(this.tickContext, 'NoTickContext', message);\n }\n /** Preformat the Tickable. */\n preFormat() {\n if (this._preFormatted)\n return;\n this.width = 0;\n if (this.modifierContext) {\n this.modifierContext.preFormat();\n this.width += this.modifierContext.getWidth();\n }\n }\n /** Set preformatted status. */\n set preFormatted(value) {\n this._preFormatted = value;\n }\n get preFormatted() {\n return this._preFormatted;\n }\n /** Postformat the Tickable. */\n postFormat() {\n if (this._postFormatted)\n return this;\n this._postFormatted = true;\n return this;\n }\n /** Set postformatted status. */\n set postFormatted(value) {\n this._postFormatted = value;\n }\n get postFormatted() {\n return this._postFormatted;\n }\n /** Return the intrinsic ticks. */\n getIntrinsicTicks() {\n return this.intrinsicTicks;\n }\n /** Set the intrinsic ticks. */\n setIntrinsicTicks(intrinsicTicks) {\n this.intrinsicTicks = intrinsicTicks;\n this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks);\n }\n /** Get the tick multiplier. */\n getTickMultiplier() {\n return this.tickMultiplier;\n }\n /** Apply a tick multiplier. */\n applyTickMultiplier(numerator, denominator) {\n this.tickMultiplier.multiply(numerator, denominator);\n this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks);\n }\n /** Set the duration. */\n setDuration(duration) {\n const ticks = duration.numerator * (Tables.RESOLUTION / duration.denominator);\n this.ticks = this.tickMultiplier.clone().multiply(ticks);\n this.intrinsicTicks = this.ticks.value();\n }\n getAbsoluteX() {\n const tickContext = this.checkTickContext(`Can't getAbsoluteX() without a TickContext.`);\n return tickContext.getX();\n }\n /** Attach this note to a modifier context. */\n setModifierContext(mc) {\n this.modifierContext = mc;\n return this;\n }\n /** Get `ModifierContext`. */\n getModifierContext() {\n return this.modifierContext;\n }\n /** Check and get `ModifierContext`. */\n checkModifierContext() {\n return defined(this.modifierContext, 'NoModifierContext', 'No modifier context attached to this tickable.');\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from './font';\nimport { drawDot } from './rendercontext';\nimport { Tables } from './tables';\nimport { Tickable } from './tickable';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\n/**\n * Note implements an abstract interface for notes and chords that\n * are rendered on a stave. Notes have some common properties: All of them\n * have a value (e.g., pitch, fret, etc.) and a duration (quarter, half, etc.)\n *\n * Some notes have stems, heads, dots, etc. Most notational elements that\n * surround a note are called *modifiers*, and every note has an associated\n * array of them. All notes also have a rendering context and belong to a stave.\n */\nexport class Note extends Tickable {\n /**\n * Every note is a tickable, i.e., it can be mutated by the `Formatter` class for\n * positioning and layout.\n *\n * @param noteStruct To create a new note you need to provide a `noteStruct`.\n */\n constructor(noteStruct) {\n super();\n if (!noteStruct) {\n throw new RuntimeError('BadArguments', 'Note must have valid initialization data to identify duration and type.');\n }\n /** Parses `noteStruct` and get note properties. */\n const parsedNoteStruct = Note.parseNoteStruct(noteStruct);\n if (!parsedNoteStruct) {\n throw new RuntimeError('BadArguments', `Invalid note initialization object: ${JSON.stringify(noteStruct)}`);\n }\n // Set note properties from parameters.\n this.keys = noteStruct.keys || [];\n // per-pitch properties\n this.keyProps = [];\n this.duration = parsedNoteStruct.duration;\n this.noteType = parsedNoteStruct.type;\n this.customTypes = parsedNoteStruct.customTypes;\n if (noteStruct.duration_override) {\n // Custom duration\n this.setDuration(noteStruct.duration_override);\n }\n else {\n // Default duration\n this.setIntrinsicTicks(parsedNoteStruct.ticks);\n }\n this.modifiers = [];\n // Get the glyph code for this note from the font.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n this.customGlyphs = this.customTypes.map((t) => Tables.getGlyphProps(this.duration, t));\n // Note to play for audio players.\n this.playNote = undefined;\n // Positioning contexts used by the Formatter.\n this.ignore_ticks = false;\n // Positioning variables\n this.width = 0; // Width in pixels calculated after preFormat\n this.leftDisplacedHeadPx = 0; // Extra room on left for displaced note head\n this.rightDisplacedHeadPx = 0; // Extra room on right for displaced note head\n this.x_shift = 0; // X shift from tick context X\n this.ys = []; // list of y coordinates for each note\n // we need to hold on to these for ties and beams.\n if (noteStruct.align_center) {\n this.setCenterAlignment(noteStruct.align_center);\n }\n // The render surface.\n this.render_options = {\n annotation_spacing: 5,\n glyph_font_scale: 1,\n stroke_px: 1,\n scale: 1,\n font: '',\n y_shift: 0,\n };\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // STATIC MEMBERS\n static get CATEGORY() {\n return Category.Note;\n }\n /** Debug helper. Displays various note metrics for the given note. */\n static plotMetrics(ctx, note, yPos) {\n const metrics = note.getMetrics();\n const xStart = note.getAbsoluteX() - metrics.modLeftPx - metrics.leftDisplacedHeadPx;\n const xPre1 = note.getAbsoluteX() - metrics.leftDisplacedHeadPx;\n const xAbs = note.getAbsoluteX();\n const xPost1 = note.getAbsoluteX() + metrics.notePx;\n const xPost2 = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx;\n const xEnd = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx + metrics.modRightPx;\n const xFreedomRight = xEnd + (note.getFormatterMetrics().freedom.right || 0);\n const xWidth = xEnd - xStart;\n ctx.save();\n ctx.setFont(Font.SANS_SERIF, 8);\n ctx.fillText(Math.round(xWidth) + 'px', xStart + note.getXShift(), yPos);\n const y = yPos + 7;\n function stroke(x1, x2, color, yy = y) {\n ctx.beginPath();\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n ctx.setLineWidth(3);\n ctx.moveTo(x1 + note.getXShift(), yy);\n ctx.lineTo(x2 + note.getXShift(), yy);\n ctx.stroke();\n }\n stroke(xStart, xPre1, 'red');\n stroke(xPre1, xAbs, '#999');\n stroke(xAbs, xPost1, 'green');\n stroke(xPost1, xPost2, '#999');\n stroke(xPost2, xEnd, 'red');\n stroke(xEnd, xFreedomRight, '#DD0');\n stroke(xStart - note.getXShift(), xStart, '#BBB'); // Shift\n drawDot(ctx, xAbs + note.getXShift(), y, 'blue');\n const formatterMetrics = note.getFormatterMetrics();\n if (formatterMetrics.iterations > 0) {\n const spaceDeviation = formatterMetrics.space.deviation;\n const prefix = spaceDeviation >= 0 ? '+' : '';\n ctx.setFillStyle('red');\n ctx.fillText(prefix + Math.round(spaceDeviation), xAbs + note.getXShift(), yPos - 10);\n }\n ctx.restore();\n }\n static parseDuration(durationString) {\n if (!durationString) {\n return undefined;\n }\n const regexp = /(\\d*\\/?\\d+|[a-z])(d*)([nrhms]|$)/;\n const result = regexp.exec(durationString);\n if (!result) {\n return undefined;\n }\n const duration = result[1];\n const dots = result[2].length;\n const type = result[3] || 'n';\n return { duration, dots, type };\n }\n static parseNoteStruct(noteStruct) {\n // Preserve backwards-compatibility\n const durationProps = Note.parseDuration(noteStruct.duration);\n if (!durationProps) {\n return undefined;\n }\n // If specified type is invalid, return undefined.\n let type = noteStruct.type;\n if (type && !Tables.validTypes[type]) {\n return undefined;\n }\n // If no type specified, check duration or custom types\n const customTypes = [];\n if (!type) {\n type = durationProps.type || 'n';\n // If we have keys, try and check if we've got a custom glyph\n if (noteStruct.keys !== undefined) {\n noteStruct.keys.forEach((k, i) => {\n const result = k.split('/');\n // We have a custom glyph specified after the note eg. /X2\n customTypes[i] = (result && result.length === 3 ? result[2] : type);\n });\n }\n }\n // Calculate the tick duration of the note\n let ticks = Tables.durationToTicks(durationProps.duration);\n if (!ticks) {\n return undefined;\n }\n // Are there any dots?\n const dots = noteStruct.dots ? noteStruct.dots : durationProps.dots;\n if (typeof dots !== 'number') {\n return undefined;\n }\n // Add ticks as necessary depending on the numbr of dots\n let currentTicks = ticks;\n for (let i = 0; i < dots; i++) {\n if (currentTicks <= 1)\n return undefined;\n currentTicks = currentTicks / 2;\n ticks += currentTicks;\n }\n return {\n duration: durationProps.duration,\n type,\n customTypes,\n dots,\n ticks,\n };\n }\n /**\n * Get the play note, which is arbitrary data that can be used by an\n * audio player.\n */\n getPlayNote() {\n return this.playNote;\n }\n /**\n * Set the play note, which is arbitrary data that can be used by an\n * audio player.\n */\n setPlayNote(note) {\n this.playNote = note;\n return this;\n }\n /**\n * @returns true if this note is a type of rest.\n *\n * Rests don't have pitches, but take up space in the score.\n * Subclasses should override this default implementation.\n */\n isRest() {\n return false;\n }\n /** Add stroke. */\n addStroke(index, stroke) {\n stroke.setNote(this);\n stroke.setIndex(index);\n this.modifiers.push(stroke);\n this.preFormatted = false;\n return this;\n }\n /** Get the target stave. */\n getStave() {\n return this.stave;\n }\n /** Check and get the target stave. */\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n /** Set the target stave. */\n setStave(stave) {\n this.stave = stave;\n this.setYs([stave.getYForLine(0)]); // Update Y values if the stave is changed.\n this.setContext(this.stave.getContext());\n return this;\n }\n /** Get spacing to the left of the notes. */\n getLeftDisplacedHeadPx() {\n return this.leftDisplacedHeadPx;\n }\n /** Get spacing to the right of the notes. */\n getRightDisplacedHeadPx() {\n return this.rightDisplacedHeadPx;\n }\n /** Set spacing to the left of the notes. */\n setLeftDisplacedHeadPx(x) {\n this.leftDisplacedHeadPx = x;\n return this;\n }\n /** Set spacing to the right of the notes. */\n setRightDisplacedHeadPx(x) {\n this.rightDisplacedHeadPx = x;\n return this;\n }\n /** True if this note has no duration (e.g., bar notes, spacers, etc.). */\n shouldIgnoreTicks() {\n return this.ignore_ticks;\n }\n /** Get the stave line number for the note. */\n // eslint-disable-next-line\n getLineNumber(isTopNote) {\n return 0;\n }\n /** Get the stave line number for rest. */\n getLineForRest() {\n return 0;\n }\n /** Get the glyph associated with this note. */\n // eslint-disable-next-line\n getGlyph() {\n return this.glyph;\n }\n /** Get the glyph width. */\n getGlyphWidth() {\n // TODO: FIXME (multiple potential values for this.glyph)\n if (this.glyph) {\n if (this.glyph.getMetrics) {\n return this.glyph.getMetrics().width;\n }\n else if (this.glyph.getWidth) {\n return this.glyph.getWidth(this.render_options.glyph_font_scale);\n }\n }\n return 0;\n }\n /**\n * Set Y positions for this note. Each Y value is associated with\n * an individual pitch/key within the note/chord.\n */\n setYs(ys) {\n this.ys = ys;\n return this;\n }\n /**\n * Get Y positions for this note. Each Y value is associated with\n * an individual pitch/key within the note/chord.\n */\n getYs() {\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-values calculated for this note.');\n }\n return this.ys;\n }\n /**\n * Get the Y position of the space above the stave onto which text can\n * be rendered.\n */\n getYForTopText(text_line) {\n return this.checkStave().getYForTopText(text_line);\n }\n /** Return the voice that this note belongs in. */\n getVoice() {\n if (!this.voice)\n throw new RuntimeError('NoVoice', 'Note has no voice.');\n return this.voice;\n }\n /** Attach this note to `voice`. */\n setVoice(voice) {\n this.voice = voice;\n this.preFormatted = false;\n return this;\n }\n /** Get the `TickContext` for this note. */\n getTickContext() {\n return this.checkTickContext();\n }\n /** Set the `TickContext` for this note. */\n setTickContext(tc) {\n this.tickContext = tc;\n this.preFormatted = false;\n return this;\n }\n /** Accessor to duration. */\n getDuration() {\n return this.duration;\n }\n /** Accessor to isDotted. */\n isDotted() {\n return this.getModifiersByType('Dot').length > 0;\n }\n /** Accessor to hasStem. */\n hasStem() {\n return false;\n }\n /** Accessor to note type. */\n getNoteType() {\n return this.noteType;\n }\n /** Get the beam. */\n getBeam() {\n return this.beam;\n }\n /** Check and get the beam. */\n checkBeam() {\n return defined(this.beam, 'NoBeam', 'No beam attached to instance');\n }\n /** Check it has a beam. */\n hasBeam() {\n return this.beam != undefined;\n }\n /** Set the beam. */\n setBeam(beam) {\n this.beam = beam;\n return this;\n }\n /**\n * Attach a modifier to this note.\n * @param modifier the Modifier to add.\n * @param index of the key to modify.\n * @returns this\n */\n addModifier(modifier, index = 0) {\n const signature = 'Note.addModifier(modifier: Modifier, index: number=0)';\n // Backwards compatibility with 3.0.9.\n if (typeof index === 'string') {\n index = parseInt(index);\n // eslint-disable-next-line\n console.warn(signature + ' expected a number for `index`, but received a string.');\n }\n // Some versions of VexFlow had the two parameters reversed.\n // Check here and throw an error if the argument types are not correct.\n if (typeof modifier !== 'object' || typeof index !== 'number') {\n throw new RuntimeError('WrongParams', 'Incorrect call signature. Use ' + signature + ' instead.');\n }\n modifier.setNote(this);\n modifier.setIndex(index);\n super.addModifier(modifier);\n return this;\n }\n /** Get all modifiers of a specific type in `this.modifiers`. */\n getModifiersByType(type) {\n return this.modifiers.filter((modifier) => modifier.getCategory() === type);\n }\n /** Get the coordinates for where modifiers begin. */\n // eslint-disable-next-line\n getModifierStartXY(position, index, options) {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n return {\n x: this.getAbsoluteX(),\n y: this.ys[0],\n };\n }\n getRightParenthesisPx(index) {\n const props = this.getKeyProps()[index];\n return props.displaced ? this.getRightDisplacedHeadPx() : 0;\n }\n getLeftParenthesisPx(index) {\n const props = this.getKeyProps()[index];\n return props.displaced ? this.getLeftDisplacedHeadPx() - this.x_shift : -this.x_shift;\n }\n getFirstDotPx() {\n let px = this.getRightDisplacedHeadPx();\n if (this.checkModifierContext().getMembers('Parenthesis').length !== 0)\n px += Tables.currentMusicFont().lookupMetric('parenthesis.default.width');\n return px;\n }\n /** Get the metrics for this note. */\n getMetrics() {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getMetrics on an unformatted note.\");\n }\n const modLeftPx = this.modifierContext ? this.modifierContext.getState().left_shift : 0;\n const modRightPx = this.modifierContext ? this.modifierContext.getState().right_shift : 0;\n const width = this.getWidth();\n const glyphWidth = this.getGlyphWidth();\n const notePx = width -\n modLeftPx - // subtract left modifiers\n modRightPx - // subtract right modifiers\n this.leftDisplacedHeadPx - // subtract left displaced head\n this.rightDisplacedHeadPx; // subtract right displaced head\n // NOTE: If you change this, remember to update MockTickable.getMetrics() in the tests/ directory.\n return {\n width,\n glyphWidth,\n notePx,\n // Modifier spacing.\n modLeftPx,\n modRightPx,\n // Displaced note head on left or right.\n leftDisplacedHeadPx: this.leftDisplacedHeadPx,\n rightDisplacedHeadPx: this.rightDisplacedHeadPx,\n glyphPx: 0,\n };\n }\n /**\n * Get the absolute `X` position of this note's tick context. This\n * excludes x_shift, so you'll need to factor it in if you're\n * looking for the post-formatted x-position.\n */\n getAbsoluteX() {\n const tickContext = this.checkTickContext(`Can't getAbsoluteX() without a TickContext.`);\n // Position note to left edge of tick context.\n let x = tickContext.getX();\n if (this.stave) {\n x += this.stave.getNoteStartX() + Tables.currentMusicFont().lookupMetric('stave.padding');\n }\n if (this.isCenterAligned()) {\n x += this.getCenterXShift();\n }\n return x;\n }\n /** Get the direction of the stem. */\n getStemDirection() {\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n }\n /** Get the top and bottom `y` values of the stem. */\n getStemExtents() {\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n }\n /** Get the `x` coordinate to the right of the note. */\n getTieRightX() {\n let tieStartX = this.getAbsoluteX();\n const note_glyph_width = this.glyph.getWidth();\n tieStartX += note_glyph_width / 2;\n tieStartX += -this.width / 2 + this.width + 2;\n return tieStartX;\n }\n /** Get the `x` coordinate to the left of the note. */\n getTieLeftX() {\n let tieEndX = this.getAbsoluteX();\n const note_glyph_width = this.glyph.getWidth();\n tieEndX += note_glyph_width / 2;\n tieEndX -= this.width / 2 + 2;\n return tieEndX;\n }\n // Get the pitches in the note\n getKeys() {\n return this.keys;\n }\n // Get the properties for all the keys in the note\n getKeyProps() {\n return this.keyProps;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// A base class for stave modifiers (e.g. clefs, key signatures)\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { defined } from './util';\nexport var StaveModifierPosition;\n(function (StaveModifierPosition) {\n StaveModifierPosition[StaveModifierPosition[\"CENTER\"] = 0] = \"CENTER\";\n StaveModifierPosition[StaveModifierPosition[\"LEFT\"] = 1] = \"LEFT\";\n StaveModifierPosition[StaveModifierPosition[\"RIGHT\"] = 2] = \"RIGHT\";\n StaveModifierPosition[StaveModifierPosition[\"ABOVE\"] = 3] = \"ABOVE\";\n StaveModifierPosition[StaveModifierPosition[\"BELOW\"] = 4] = \"BELOW\";\n StaveModifierPosition[StaveModifierPosition[\"BEGIN\"] = 5] = \"BEGIN\";\n StaveModifierPosition[StaveModifierPosition[\"END\"] = 6] = \"END\";\n})(StaveModifierPosition || (StaveModifierPosition = {}));\nexport class StaveModifier extends Element {\n constructor() {\n super();\n this.width = 0;\n this.x = 0;\n this.padding = 10;\n this.position = StaveModifierPosition.ABOVE;\n }\n static get CATEGORY() {\n return Category.StaveModifier;\n }\n static get Position() {\n return StaveModifierPosition;\n }\n getPosition() {\n return this.position;\n }\n setPosition(position) {\n this.position = position;\n return this;\n }\n getStave() {\n return this.stave;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getWidth() {\n return this.width;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getX() {\n return this.x;\n }\n setX(x) {\n this.x = x;\n return this;\n }\n placeGlyphOnLine(glyph, stave, line, customShift = 0) {\n glyph.setYShift(stave.getYForLine(line !== null && line !== void 0 ? line : 0) - stave.getYForGlyphs() + customShift);\n }\n getPadding(index) {\n return index !== undefined && index < 2 ? 0 : this.padding;\n }\n setPadding(padding) {\n this.padding = padding;\n return this;\n }\n setLayoutMetrics(layoutMetrics) {\n this.layoutMetrics = layoutMetrics;\n return this;\n }\n getLayoutMetrics() {\n return this.layoutMetrics;\n }\n // eslint-disable-next-line\n draw(...args) {\n // DO NOTHING.\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Author Larry Kuhns 2011\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport var BarlineType;\n(function (BarlineType) {\n BarlineType[BarlineType[\"SINGLE\"] = 1] = \"SINGLE\";\n BarlineType[BarlineType[\"DOUBLE\"] = 2] = \"DOUBLE\";\n BarlineType[BarlineType[\"END\"] = 3] = \"END\";\n BarlineType[BarlineType[\"REPEAT_BEGIN\"] = 4] = \"REPEAT_BEGIN\";\n BarlineType[BarlineType[\"REPEAT_END\"] = 5] = \"REPEAT_END\";\n BarlineType[BarlineType[\"REPEAT_BOTH\"] = 6] = \"REPEAT_BOTH\";\n BarlineType[BarlineType[\"NONE\"] = 7] = \"NONE\";\n})(BarlineType || (BarlineType = {}));\nexport class Barline extends StaveModifier {\n constructor(type) {\n super();\n this.thickness = Tables.STAVE_LINE_THICKNESS;\n const TYPE = BarlineType;\n this.widths = {};\n this.widths[TYPE.SINGLE] = 5;\n this.widths[TYPE.DOUBLE] = 5;\n this.widths[TYPE.END] = 5;\n this.widths[TYPE.REPEAT_BEGIN] = 5;\n this.widths[TYPE.REPEAT_END] = 5;\n this.widths[TYPE.REPEAT_BOTH] = 5;\n this.widths[TYPE.NONE] = 5;\n this.paddings = {};\n this.paddings[TYPE.SINGLE] = 0;\n this.paddings[TYPE.DOUBLE] = 0;\n this.paddings[TYPE.END] = 0;\n this.paddings[TYPE.REPEAT_BEGIN] = 15;\n this.paddings[TYPE.REPEAT_END] = 15;\n this.paddings[TYPE.REPEAT_BOTH] = 15;\n this.paddings[TYPE.NONE] = 0;\n this.layoutMetricsMap = {};\n this.layoutMetricsMap[TYPE.SINGLE] = {\n xMin: 0,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.DOUBLE] = {\n xMin: -3,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.END] = {\n xMin: -5,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_END] = {\n xMin: -10,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_BEGIN] = {\n xMin: -2,\n xMax: 10,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_BOTH] = {\n xMin: -10,\n xMax: 10,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.NONE] = {\n xMin: 0,\n xMax: 0,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.setPosition(StaveModifierPosition.BEGIN);\n this.setType(type);\n }\n static get CATEGORY() {\n return Category.Barline;\n }\n static get type() {\n return BarlineType;\n }\n static get typeString() {\n return {\n single: BarlineType.SINGLE,\n double: BarlineType.DOUBLE,\n end: BarlineType.END,\n repeatBegin: BarlineType.REPEAT_BEGIN,\n repeatEnd: BarlineType.REPEAT_END,\n repeatBoth: BarlineType.REPEAT_BOTH,\n none: BarlineType.NONE,\n };\n }\n getType() {\n return this.type;\n }\n setType(type) {\n this.type = typeof type === 'string' ? Barline.typeString[type] : type;\n this.setWidth(this.widths[this.type]);\n this.setPadding(this.paddings[this.type]);\n this.setLayoutMetrics(this.layoutMetricsMap[this.type]);\n return this;\n }\n // Draw barlines\n draw(stave) {\n stave.checkContext();\n this.setRendered();\n switch (this.type) {\n case BarlineType.SINGLE:\n this.drawVerticalBar(stave, this.x, false);\n break;\n case BarlineType.DOUBLE:\n this.drawVerticalBar(stave, this.x, true);\n break;\n case BarlineType.END:\n this.drawVerticalEndBar(stave, this.x);\n break;\n case BarlineType.REPEAT_BEGIN:\n // If the barline is shifted over (in front of clef/time/key)\n // Draw vertical bar at the beginning.\n this.drawRepeatBar(stave, this.x, true);\n if (stave.getX() !== this.x) {\n this.drawVerticalBar(stave, stave.getX());\n }\n break;\n case BarlineType.REPEAT_END:\n this.drawRepeatBar(stave, this.x, false);\n break;\n case BarlineType.REPEAT_BOTH:\n this.drawRepeatBar(stave, this.x, false);\n this.drawRepeatBar(stave, this.x, true);\n break;\n default:\n // Default is NONE, so nothing to draw\n break;\n }\n }\n drawVerticalBar(stave, x, double_bar) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n if (double_bar) {\n staveCtx.fillRect(x - 3, topY, 1, botY - topY);\n }\n staveCtx.fillRect(x, topY, 1, botY - topY);\n }\n drawVerticalEndBar(stave, x) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n staveCtx.fillRect(x - 5, topY, 1, botY - topY);\n staveCtx.fillRect(x - 2, topY, 3, botY - topY);\n }\n drawRepeatBar(stave, x, begin) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n let x_shift = 3;\n if (!begin) {\n x_shift = -5;\n }\n staveCtx.fillRect(x + x_shift, topY, 1, botY - topY);\n staveCtx.fillRect(x - 2, topY, 3, botY - topY);\n const dot_radius = 2;\n // Shift dots left or right\n if (begin) {\n x_shift += 4;\n }\n else {\n x_shift -= 4;\n }\n const dot_x = x + x_shift + dot_radius / 2;\n // calculate the y offset based on number of stave lines\n let y_offset = (stave.getNumLines() - 1) * stave.getSpacingBetweenLines();\n y_offset = y_offset / 2 - stave.getSpacingBetweenLines() / 2;\n let dot_y = topY + y_offset + dot_radius / 2;\n // draw the top repeat dot\n staveCtx.beginPath();\n staveCtx.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false);\n staveCtx.fill();\n // draw the bottom repeat dot\n dot_y += stave.getSpacingBetweenLines();\n staveCtx.beginPath();\n staveCtx.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false);\n staveCtx.fill();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Author: Aaron (@AaronDavidNewman)\n//\n// This implements chord symbols above/below a chord.\n// Chord symbols are modifiers that can be attached to notes.\n// They can contain multiple 'blocks' which represent text or\n// glyphs with various positioning options.\n//\n// See `tests/chordsymbol_tests.ts` for usage examples.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category, isStemmableNote } from './typeguard';\nimport { log } from './util';\n// To enable logging for this class. Set `Vex.Flow.ChordSymbol.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (ChordSymbol.DEBUG)\n log('Vex.Flow.ChordSymbol', args);\n}\nexport var ChordSymbolHorizontalJustify;\n(function (ChordSymbolHorizontalJustify) {\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"LEFT\"] = 1] = \"LEFT\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"CENTER\"] = 2] = \"CENTER\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"RIGHT\"] = 3] = \"RIGHT\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(ChordSymbolHorizontalJustify || (ChordSymbolHorizontalJustify = {}));\nexport var ChordSymbolVerticalJustify;\n(function (ChordSymbolVerticalJustify) {\n ChordSymbolVerticalJustify[ChordSymbolVerticalJustify[\"TOP\"] = 1] = \"TOP\";\n ChordSymbolVerticalJustify[ChordSymbolVerticalJustify[\"BOTTOM\"] = 2] = \"BOTTOM\";\n})(ChordSymbolVerticalJustify || (ChordSymbolVerticalJustify = {}));\nexport var SymbolTypes;\n(function (SymbolTypes) {\n SymbolTypes[SymbolTypes[\"GLYPH\"] = 1] = \"GLYPH\";\n SymbolTypes[SymbolTypes[\"TEXT\"] = 2] = \"TEXT\";\n SymbolTypes[SymbolTypes[\"LINE\"] = 3] = \"LINE\";\n})(SymbolTypes || (SymbolTypes = {}));\nexport var SymbolModifiers;\n(function (SymbolModifiers) {\n SymbolModifiers[SymbolModifiers[\"NONE\"] = 1] = \"NONE\";\n SymbolModifiers[SymbolModifiers[\"SUBSCRIPT\"] = 2] = \"SUBSCRIPT\";\n SymbolModifiers[SymbolModifiers[\"SUPERSCRIPT\"] = 3] = \"SUPERSCRIPT\";\n})(SymbolModifiers || (SymbolModifiers = {}));\n/**\n * ChordSymbol is a modifier that creates a chord symbol above/below a chord.\n * As a modifier, it is attached to an existing note.\n */\nexport class ChordSymbol extends Modifier {\n constructor() {\n super();\n this.symbolBlocks = [];\n this.horizontal = ChordSymbolHorizontalJustify.LEFT;\n this.vertical = ChordSymbolVerticalJustify.TOP;\n this.useKerning = true;\n this.reportWidth = true;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.ChordSymbol;\n }\n static get superSubRatio() {\n return ChordSymbol.metrics.global.superSubRatio;\n }\n /** Currently unused: Globally turn off text formatting, if the built-in formatting does not work for your font. */\n static set NO_TEXT_FORMAT(val) {\n ChordSymbol.noFormat = val;\n }\n static get NO_TEXT_FORMAT() {\n return ChordSymbol.noFormat;\n }\n // eslint-disable-next-line\n static getMetricForGlyph(glyphCode) {\n if (ChordSymbol.metrics[glyphCode]) {\n return ChordSymbol.metrics[glyphCode];\n }\n return undefined;\n }\n static get engravingFontResolution() {\n return Tables.currentMusicFont().getResolution();\n }\n static get spacingBetweenBlocks() {\n return ChordSymbol.metrics.global.spacing / ChordSymbol.engravingFontResolution;\n }\n static getWidthForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0.65; // probably should do something here.\n }\n return metric.advanceWidth / ChordSymbol.engravingFontResolution;\n }\n static getYShiftForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0;\n }\n return metric.yOffset / ChordSymbol.engravingFontResolution;\n }\n static getXShiftForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0;\n }\n return (-1 * metric.leftSideBearing) / ChordSymbol.engravingFontResolution;\n }\n static get superscriptOffset() {\n return ChordSymbol.metrics.global.superscriptOffset / ChordSymbol.engravingFontResolution;\n }\n static get subscriptOffset() {\n return ChordSymbol.metrics.global.subscriptOffset / ChordSymbol.engravingFontResolution;\n }\n static get kerningOffset() {\n return ChordSymbol.metrics.global.kerningOffset / ChordSymbol.engravingFontResolution;\n }\n // eslint-disable-next-line\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.chordSymbol;\n }\n static get lowerKerningText() {\n // For example, see: `bravura_metrics.ts`\n // BravuraMetrics.glyphs.chordSymbol.global.lowerKerningText, which returns an array of letters.\n // ['D', 'F', 'P', 'T', 'V', 'Y']\n return ChordSymbol.metrics.global.lowerKerningText;\n }\n static get upperKerningText() {\n return ChordSymbol.metrics.global.upperKerningText;\n }\n static isSuperscript(block) {\n return block.symbolModifier !== undefined && block.symbolModifier === SymbolModifiers.SUPERSCRIPT;\n }\n static isSubscript(block) {\n return block.symbolModifier !== undefined && block.symbolModifier === SymbolModifiers.SUBSCRIPT;\n }\n static get minPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /**\n * Estimate the width of the whole chord symbol, based on the sum of the widths of the individual blocks.\n * Estimate how many lines above/below the staff we need.\n */\n static format(symbols, state) {\n var _a;\n if (!symbols || symbols.length === 0)\n return false;\n let width = 0;\n let nonSuperWidth = 0;\n let leftWidth = 0;\n let rightWidth = 0;\n let maxLeftGlyphWidth = 0;\n let maxRightGlyphWidth = 0;\n for (const symbol of symbols) {\n const fontSize = Font.convertSizeToPointValue((_a = symbol.textFont) === null || _a === void 0 ? void 0 : _a.size);\n const fontAdj = Font.scaleSize(fontSize, 0.05);\n const glyphAdj = fontAdj * 2;\n const note = symbol.checkAttachedNote();\n let symbolWidth = 0;\n let lineSpaces = 1;\n let vAlign = false;\n for (let j = 0; j < symbol.symbolBlocks.length; ++j) {\n const block = symbol.symbolBlocks[j];\n const sup = ChordSymbol.isSuperscript(block);\n const sub = ChordSymbol.isSubscript(block);\n const superSubScale = sup || sub ? ChordSymbol.superSubRatio : 1;\n const adj = block.symbolType === SymbolTypes.GLYPH ? glyphAdj * superSubScale : fontAdj * superSubScale;\n // If there are super/subscripts, they extend beyond the line so\n // assume they take up 2 lines\n if (sup || sub) {\n lineSpaces = 2;\n }\n // If there is a symbol-specific offset, add it but consider font\n // size since font and glyphs will be interspersed.\n const fontSize = symbol.textFormatter.fontSizeInPixels;\n const superSubFontSize = fontSize * superSubScale;\n if (block.symbolType === SymbolTypes.GLYPH && block.glyph !== undefined) {\n block.width = ChordSymbol.getWidthForGlyph(block.glyph) * superSubFontSize;\n block.yShift += ChordSymbol.getYShiftForGlyph(block.glyph) * superSubFontSize;\n block.xShift += ChordSymbol.getXShiftForGlyph(block.glyph) * superSubFontSize;\n block.glyph.scale = block.glyph.scale * adj;\n }\n else if (block.symbolType === SymbolTypes.TEXT) {\n block.width = block.width * superSubFontSize;\n block.yShift += symbol.getYOffsetForText(block.text) * adj;\n }\n if (block.symbolType === SymbolTypes.GLYPH &&\n block.glyph !== undefined &&\n block.glyph.code === ChordSymbol.glyphs.over.code) {\n lineSpaces = 2;\n }\n block.width += ChordSymbol.spacingBetweenBlocks * fontSize * superSubScale;\n // If a subscript immediately follows a superscript block, try to\n // overlay them.\n if (sup && j > 0) {\n const prev = symbol.symbolBlocks[j - 1];\n if (!ChordSymbol.isSuperscript(prev)) {\n nonSuperWidth = width;\n }\n }\n if (sub && nonSuperWidth > 0) {\n vAlign = true;\n // slide the symbol over so it lines up with superscript\n block.xShift = block.xShift + (nonSuperWidth - width);\n width = nonSuperWidth;\n nonSuperWidth = 0;\n // If we have vertically lined up, turn kerning off.\n symbol.setEnableKerning(false);\n }\n if (!sup && !sub) {\n nonSuperWidth = 0;\n }\n block.vAlign = vAlign;\n width += block.width;\n symbolWidth = width;\n }\n // make kerning adjustments after computing super/subscripts\n symbol.updateKerningAdjustments();\n symbol.updateOverBarAdjustments();\n if (symbol.getVertical() === ChordSymbolVerticalJustify.TOP) {\n symbol.setTextLine(state.top_text_line);\n state.top_text_line += lineSpaces;\n }\n else {\n symbol.setTextLine(state.text_line + 1);\n state.text_line += lineSpaces + 1;\n }\n if (symbol.getReportWidth() && isStemmableNote(note)) {\n const glyphWidth = note.getGlyph().getWidth();\n if (symbol.getHorizontal() === ChordSymbolHorizontalJustify.LEFT) {\n maxLeftGlyphWidth = Math.max(glyphWidth, maxLeftGlyphWidth);\n leftWidth = Math.max(leftWidth, symbolWidth) + ChordSymbol.minPadding;\n }\n else if (symbol.getHorizontal() === ChordSymbolHorizontalJustify.RIGHT) {\n maxRightGlyphWidth = Math.max(glyphWidth, maxRightGlyphWidth);\n rightWidth = Math.max(rightWidth, symbolWidth);\n }\n else {\n leftWidth = Math.max(leftWidth, symbolWidth / 2) + ChordSymbol.minPadding;\n rightWidth = Math.max(rightWidth, symbolWidth / 2);\n maxLeftGlyphWidth = Math.max(glyphWidth / 2, maxLeftGlyphWidth);\n maxRightGlyphWidth = Math.max(glyphWidth / 2, maxRightGlyphWidth);\n }\n }\n width = 0; // reset symbol width\n }\n const rightOverlap = Math.min(Math.max(rightWidth - maxRightGlyphWidth, 0), Math.max(rightWidth - state.right_shift, 0));\n const leftOverlap = Math.min(Math.max(leftWidth - maxLeftGlyphWidth, 0), Math.max(leftWidth - state.left_shift, 0));\n state.left_shift += leftOverlap;\n state.right_shift += rightOverlap;\n return true;\n }\n /**\n * Default text font.\n * Choose a font family that works well with the current music engraving font.\n * @override `Element.TEXT_FONT`.\n */\n static get TEXT_FONT() {\n let family = 'Roboto Slab, Times, serif';\n if (Tables.currentMusicFont().getName() === 'Petaluma') {\n // Fixes Issue #1180\n family = 'PetalumaScript, Arial, sans-serif';\n }\n return {\n family,\n size: 12,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n };\n }\n /**\n * The offset is specified in `em`. Scale this value by the font size in pixels.\n */\n get superscriptOffset() {\n return ChordSymbol.superscriptOffset * this.textFormatter.fontSizeInPixels;\n }\n get subscriptOffset() {\n return ChordSymbol.subscriptOffset * this.textFormatter.fontSizeInPixels;\n }\n setReportWidth(value) {\n this.reportWidth = value;\n return this;\n }\n getReportWidth() {\n return this.reportWidth;\n }\n updateOverBarAdjustments() {\n const barIndex = this.symbolBlocks.findIndex(({ symbolType, glyph }) => symbolType === SymbolTypes.GLYPH && glyph !== undefined && glyph.code === 'csymDiagonalArrangementSlash');\n if (barIndex < 0) {\n return;\n }\n const bar = this.symbolBlocks[barIndex];\n const xoff = bar.width / 4;\n const yoff = 0.25 * this.textFormatter.fontSizeInPixels;\n let symIndex = 0;\n for (symIndex === 0; symIndex < barIndex; ++symIndex) {\n const symbol = this.symbolBlocks[symIndex];\n symbol.xShift = symbol.xShift + xoff;\n symbol.yShift = symbol.yShift - yoff;\n }\n for (symIndex = barIndex + 1; symIndex < this.symbolBlocks.length; ++symIndex) {\n const symbol = this.symbolBlocks[symIndex];\n symbol.xShift = symbol.xShift - xoff;\n symbol.yShift = symbol.yShift + yoff;\n }\n }\n updateKerningAdjustments() {\n let accum = 0;\n for (let j = 0; j < this.symbolBlocks.length; ++j) {\n const symbol = this.symbolBlocks[j];\n accum += this.getKerningAdjustment(j);\n symbol.xShift += accum;\n }\n }\n /** Do some basic kerning so that letter chords like 'A' don't have the extensions hanging off to the right. */\n getKerningAdjustment(j) {\n if (!this.useKerning) {\n return 0;\n }\n const currSymbol = this.symbolBlocks[j];\n const prevSymbol = j > 0 ? this.symbolBlocks[j - 1] : undefined;\n let adjustment = 0;\n // Move things into the '/' over bar\n if (currSymbol.symbolType === SymbolTypes.GLYPH &&\n currSymbol.glyph !== undefined &&\n currSymbol.glyph.code === ChordSymbol.glyphs.over.code) {\n adjustment += currSymbol.glyph.metrics.x_shift;\n }\n if (prevSymbol !== undefined &&\n prevSymbol.symbolType === SymbolTypes.GLYPH &&\n prevSymbol.glyph !== undefined &&\n prevSymbol.glyph.code === ChordSymbol.glyphs.over.code) {\n adjustment += prevSymbol.glyph.metrics.x_shift;\n }\n // For superscripts that follow a letter without much top part, move it to the left slightly\n let preKernUpper = false;\n let preKernLower = false;\n if (prevSymbol !== undefined && prevSymbol.symbolType === SymbolTypes.TEXT) {\n preKernUpper = ChordSymbol.upperKerningText.some((xx) => xx === prevSymbol.text[prevSymbol.text.length - 1]);\n preKernLower = ChordSymbol.lowerKerningText.some((xx) => xx === prevSymbol.text[prevSymbol.text.length - 1]);\n }\n const kerningOffsetPixels = ChordSymbol.kerningOffset * this.textFormatter.fontSizeInPixels;\n // TODO: adjust kern for font size.\n // Where should this constant live?\n if (preKernUpper && currSymbol.symbolModifier === SymbolModifiers.SUPERSCRIPT) {\n adjustment += kerningOffsetPixels;\n }\n if (preKernLower && currSymbol.symbolType === SymbolTypes.TEXT) {\n if (currSymbol.text[0] >= 'a' && currSymbol.text[0] <= 'z') {\n adjustment += kerningOffsetPixels / 2;\n }\n if (ChordSymbol.upperKerningText.some((xx) => xx === (prevSymbol === null || prevSymbol === void 0 ? void 0 : prevSymbol.text[prevSymbol.text.length - 1]))) {\n adjustment += kerningOffsetPixels / 2;\n }\n }\n return adjustment;\n }\n /**\n * ChordSymbol allows multiple blocks so we can mix glyphs and font text.\n * Each block can have its own vertical orientation.\n */\n // eslint-disable-next-line\n getSymbolBlock(params = {}) {\n var _a, _b, _c;\n const symbolType = (_a = params.symbolType) !== null && _a !== void 0 ? _a : SymbolTypes.TEXT;\n const symbolBlock = {\n text: (_b = params.text) !== null && _b !== void 0 ? _b : '',\n symbolType,\n symbolModifier: (_c = params.symbolModifier) !== null && _c !== void 0 ? _c : SymbolModifiers.NONE,\n xShift: 0,\n yShift: 0,\n vAlign: false,\n width: 0,\n };\n // Note: symbol widths are resolution and font-independent.\n // We convert to pixel values when we know what the font is.\n if (symbolType === SymbolTypes.GLYPH && typeof params.glyph === 'string') {\n const glyphArgs = ChordSymbol.glyphs[params.glyph];\n const glyphPoints = 20;\n symbolBlock.glyph = new Glyph(glyphArgs.code, glyphPoints, { category: 'chordSymbol' });\n // Beware: glyph.metrics is not the same as glyph.getMetrics() !\n // rv.glyph.point = rv.glyph.point * rv.glyph.metrics.scale;\n // rv.width = rv.glyph.getMetrics().width;\n // don't set yShift here, b/c we need to do it at formatting time after the font is set.\n }\n else if (symbolType === SymbolTypes.TEXT) {\n symbolBlock.width = this.textFormatter.getWidthForTextInEm(symbolBlock.text);\n }\n else if (symbolType === SymbolTypes.LINE) {\n symbolBlock.width = params.width;\n }\n return symbolBlock;\n }\n /** Add a symbol to this chord, could be text, glyph or line. */\n // eslint-disable-next-line\n addSymbolBlock(parameters) {\n this.symbolBlocks.push(this.getSymbolBlock(parameters));\n return this;\n }\n // ### Convenience functions for creating different types of chord symbol parts.\n /** Add a text block. */\n // eslint-disable-next-line\n addText(text, parameters = {}) {\n const symbolType = SymbolTypes.TEXT;\n return this.addSymbolBlock(Object.assign(Object.assign({}, parameters), { text, symbolType }));\n }\n /** Add a text block with superscript modifier. */\n addTextSuperscript(text) {\n const symbolType = SymbolTypes.TEXT;\n const symbolModifier = SymbolModifiers.SUPERSCRIPT;\n return this.addSymbolBlock({ text, symbolType, symbolModifier });\n }\n /** Add a text block with subscript modifier. */\n addTextSubscript(text) {\n const symbolType = SymbolTypes.TEXT;\n const symbolModifier = SymbolModifiers.SUBSCRIPT;\n return this.addSymbolBlock({ text, symbolType, symbolModifier });\n }\n /** Add a glyph block with superscript modifier. */\n addGlyphSuperscript(glyph) {\n const symbolType = SymbolTypes.GLYPH;\n const symbolModifier = SymbolModifiers.SUPERSCRIPT;\n return this.addSymbolBlock({ glyph, symbolType, symbolModifier });\n }\n /** Add a glyph block. */\n // eslint-disable-next-line\n addGlyph(glyph, params = {}) {\n const symbolType = SymbolTypes.GLYPH;\n return this.addSymbolBlock(Object.assign(Object.assign({}, params), { glyph, symbolType }));\n }\n /**\n * Add a glyph for each character in 'text'. If the glyph is not available, use text from the font.\n * e.g. `addGlyphOrText('(+5#11)')` will use text for the '5' and '11', and glyphs for everything else.\n */\n // eslint-disable-next-line\n addGlyphOrText(text, params = {}) {\n let str = '';\n for (let i = 0; i < text.length; ++i) {\n const char = text[i];\n if (ChordSymbol.glyphs[char]) {\n if (str.length > 0) {\n this.addText(str, params);\n str = '';\n }\n this.addGlyph(char, params);\n }\n else {\n // Collect consecutive characters with no glyphs.\n str += char;\n }\n }\n if (str.length > 0) {\n this.addText(str, params);\n }\n return this;\n }\n /** Add a line of the given width, used as a continuation of the previous symbol in analysis, or lyrics, etc. */\n // eslint-disable-next-line\n addLine(width, params = {}) {\n const symbolType = SymbolTypes.LINE;\n return this.addSymbolBlock(Object.assign(Object.assign({}, params), { symbolType, width }));\n }\n /**\n * Set the chord symbol's font family, size, weight, style (e.g., `Arial`, `10pt`, `bold`, `italic`).\n *\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n *\n * @override See: Element.\n */\n setFont(f, size, weight, style) {\n super.setFont(f, size, weight, style);\n this.textFormatter = TextFormatter.create(this.textFont);\n return this;\n }\n setEnableKerning(val) {\n this.useKerning = val;\n return this;\n }\n /** Set vertical position of text (above or below stave). */\n setVertical(vj) {\n this.vertical = typeof vj === 'string' ? ChordSymbol.VerticalJustifyString[vj] : vj;\n return this;\n }\n getVertical() {\n return this.vertical;\n }\n /** Set horizontal justification. */\n setHorizontal(hj) {\n this.horizontal = typeof hj === 'string' ? ChordSymbol.HorizontalJustifyString[hj] : hj;\n return this;\n }\n getHorizontal() {\n return this.horizontal;\n }\n getWidth() {\n let width = 0;\n this.symbolBlocks.forEach((symbol) => {\n width += symbol.vAlign ? 0 : symbol.width;\n });\n return width;\n }\n getYOffsetForText(text) {\n var _a;\n let acc = 0;\n let i = 0;\n for (i = 0; i < text.length; ++i) {\n const metrics = this.textFormatter.getGlyphMetrics(text[i]);\n if (metrics) {\n const yMax = (_a = metrics.y_max) !== null && _a !== void 0 ? _a : 0;\n acc = yMax < acc ? yMax : acc;\n }\n }\n const resolution = this.textFormatter.getResolution();\n return i > 0 ? -1 * (acc / resolution) : 0;\n }\n /** Render text and glyphs above/below the note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n // We're changing context parameters. Save current state.\n ctx.save();\n ctx.openGroup('chordsymbol', this.getAttribute('id'));\n const start = note.getModifierStartXY(Modifier.Position.ABOVE, this.index);\n ctx.setFont(this.textFont);\n let y;\n // The position of the text varies based on whether or not the note\n // has a stem.\n const hasStem = note.hasStem();\n const stave = note.checkStave();\n if (this.vertical === ChordSymbolVerticalJustify.BOTTOM) {\n // HACK: We need to compensate for the text's height since its origin is bottom-right.\n y = stave.getYForBottomText(this.text_line + Tables.TEXT_HEIGHT_OFFSET_HACK);\n if (hasStem) {\n const stem_ext = note.checkStem().getExtents();\n const spacing = stave.getSpacingBetweenLines();\n const stem_base = note.getStemDirection() === 1 ? stem_ext.baseY : stem_ext.topY;\n y = Math.max(y, stem_base + spacing * (this.text_line + 2));\n }\n }\n else {\n // (this.vertical === VerticalJustify.TOP)\n y = Math.min(stave.getYForTopText(this.text_line), note.getYs()[0] - 10);\n if (hasStem) {\n const stem_ext = note.checkStem().getExtents();\n const spacing = stave.getSpacingBetweenLines();\n y = Math.min(y, stem_ext.topY - 5 - spacing * this.text_line);\n }\n }\n let x = start.x;\n if (this.horizontal === ChordSymbolHorizontalJustify.LEFT) {\n x = start.x;\n }\n else if (this.horizontal === ChordSymbolHorizontalJustify.RIGHT) {\n x = start.x + this.getWidth();\n }\n else if (this.horizontal === ChordSymbolHorizontalJustify.CENTER) {\n x = start.x - this.getWidth() / 2;\n }\n else {\n // HorizontalJustify.CENTER_STEM\n x = note.getStemX() - this.getWidth() / 2;\n }\n L('Rendering ChordSymbol: ', this.textFormatter, x, y);\n this.symbolBlocks.forEach((symbol) => {\n const isSuper = ChordSymbol.isSuperscript(symbol);\n const isSub = ChordSymbol.isSubscript(symbol);\n let curY = y;\n L('shift was ', symbol.xShift, symbol.yShift);\n L('curY pre sub ', curY);\n if (isSuper) {\n curY += this.superscriptOffset;\n }\n if (isSub) {\n curY += this.subscriptOffset;\n }\n L('curY sup/sub ', curY);\n if (symbol.symbolType === SymbolTypes.TEXT) {\n if (isSuper || isSub) {\n ctx.save();\n if (this.textFont) {\n const { family, size, weight, style } = this.textFont;\n const smallerFontSize = Font.scaleSize(size, ChordSymbol.superSubRatio);\n ctx.setFont(family, smallerFontSize, weight, style);\n }\n }\n // TODO???\n // We estimate the text width, fill it in with the empirical value so the formatting is even.\n // const textDim = ctx.measureText(symbol.text);\n // symbol.width = textDim.width;\n L('Rendering Text: ', symbol.text, x + symbol.xShift, curY + symbol.yShift);\n ctx.fillText(symbol.text, x + symbol.xShift, curY + symbol.yShift);\n if (isSuper || isSub) {\n ctx.restore();\n }\n }\n else if (symbol.symbolType === SymbolTypes.GLYPH && symbol.glyph) {\n curY += symbol.yShift;\n L('Rendering Glyph: ', symbol.glyph.code, x + symbol.xShift, curY);\n symbol.glyph.render(ctx, x + symbol.xShift, curY);\n }\n else if (symbol.symbolType === SymbolTypes.LINE) {\n L('Rendering Line : ', symbol.width, x, curY);\n ctx.beginPath();\n ctx.setLineWidth(1); // ?\n ctx.moveTo(x, y);\n ctx.lineTo(x + symbol.width, curY);\n ctx.stroke();\n }\n x += symbol.width;\n if (symbol.vAlign) {\n x += symbol.xShift;\n }\n });\n ctx.closeGroup();\n ctx.restore();\n }\n}\nChordSymbol.DEBUG = false;\n// Chord symbols can be positioned and justified relative to the note.\nChordSymbol.HorizontalJustify = ChordSymbolHorizontalJustify;\nChordSymbol.HorizontalJustifyString = {\n left: ChordSymbolHorizontalJustify.LEFT,\n right: ChordSymbolHorizontalJustify.RIGHT,\n center: ChordSymbolHorizontalJustify.CENTER,\n centerStem: ChordSymbolHorizontalJustify.CENTER_STEM,\n};\nChordSymbol.VerticalJustify = ChordSymbolVerticalJustify;\nChordSymbol.VerticalJustifyString = {\n top: ChordSymbolVerticalJustify.TOP,\n above: ChordSymbolVerticalJustify.TOP,\n below: ChordSymbolVerticalJustify.BOTTOM,\n bottom: ChordSymbolVerticalJustify.BOTTOM,\n};\n// Glyph data\nChordSymbol.glyphs = {\n diminished: {\n code: 'csymDiminished',\n },\n dim: {\n code: 'csymDiminished',\n },\n halfDiminished: {\n code: 'csymHalfDiminished',\n },\n '+': {\n code: 'csymAugmented',\n },\n augmented: {\n code: 'csymAugmented',\n },\n majorSeventh: {\n code: 'csymMajorSeventh',\n },\n minor: {\n code: 'csymMinor',\n },\n '-': {\n code: 'csymMinor',\n },\n '(': {\n code: 'csymParensLeftTall',\n },\n leftParen: {\n code: 'csymParensLeftTall',\n },\n ')': {\n code: 'csymParensRightTall',\n },\n rightParen: {\n code: 'csymParensRightTall',\n },\n leftBracket: {\n code: 'csymBracketLeftTall',\n },\n rightBracket: {\n code: 'csymBracketRightTall',\n },\n leftParenTall: {\n code: 'csymParensLeftVeryTall',\n },\n rightParenTall: {\n code: 'csymParensRightVeryTall',\n },\n '/': {\n code: 'csymDiagonalArrangementSlash',\n },\n over: {\n code: 'csymDiagonalArrangementSlash',\n },\n '#': {\n code: 'accidentalSharp',\n },\n b: {\n code: 'accidentalFlat',\n },\n};\nChordSymbol.symbolTypes = SymbolTypes;\nChordSymbol.symbolModifiers = SymbolModifiers;\n/** Currently unused. */\nChordSymbol.noFormat = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Note } from './note';\nimport { Barline, BarlineType } from './stavebarline';\nimport { Category } from './typeguard';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (BarNote.DEBUG)\n log('Vex.Flow.BarNote', args);\n}\n/**\n * A `BarNote` is used to render bar lines (from `barline.ts`). `BarNote`s can\n * be added to a voice and rendered in the middle of a stave. Since it has no\n * duration, it consumes no `tick`s, and is dealt with appropriately by the formatter.\n *\n * See `tests/barnote_tests.ts` for usage examples.\n */\nexport class BarNote extends Note {\n constructor(type = BarlineType.SINGLE) {\n super({ duration: 'b' });\n this.metrics = {\n widths: {},\n };\n const TYPE = BarlineType;\n this.metrics.widths = {\n [TYPE.SINGLE]: 8,\n [TYPE.DOUBLE]: 12,\n [TYPE.END]: 15,\n [TYPE.REPEAT_BEGIN]: 14,\n [TYPE.REPEAT_END]: 14,\n [TYPE.REPEAT_BOTH]: 18,\n [TYPE.NONE]: 0,\n };\n // Tell the formatter that bar notes have no duration.\n this.ignore_ticks = true;\n this.setType(type);\n }\n static get CATEGORY() {\n return Category.BarNote;\n }\n /** Get the type of bar note.*/\n getType() {\n return this.type;\n }\n /** Set the type of bar note. */\n setType(type) {\n this.type = typeof type === 'string' ? Barline.typeString[type] : type;\n // Set width to width of relevant `Barline`.\n this.setWidth(this.metrics.widths[this.type]);\n return this;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n /** Overridden to ignore. */\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n /** Render note to stave. */\n draw() {\n const ctx = this.checkContext();\n L('Rendering bar line at: ', this.getAbsoluteX());\n this.applyStyle(ctx);\n const barline = new Barline(this.type);\n barline.setX(this.getAbsoluteX());\n barline.draw(this.checkStave());\n this.restoreStyle(ctx);\n this.setRendered();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.BarNote.DEBUG` to `true`. */\nBarNote.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Modifier } from './modifier';\nimport { TextFormatter } from './textformatter';\nimport { Category, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\n/** Bend implements tablature bends. */\nexport class Bend extends Modifier {\n /**\n * Example of a phrase:\n * ```\n * [{\n * type: UP,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: DOWN,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: UP,\n * text: \"half\"\n * width: 8;\n * },\n * {\n * type: UP,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: DOWN,\n * text: \"1 1/2\"\n * width: 8;\n * }]\n * ```\n * @param text text for bend (\"Full\", \"Half\", etc.) (DEPRECATED)\n * @param release if true, render a release. (DEPRECATED)\n * @param phrase if set, ignore \"text\" and \"release\", and use the more sophisticated phrase specified\n */\n constructor(text, release = false, phrase) {\n super();\n this.text = text;\n this.x_shift = 0;\n this.release = release;\n this.tap = '';\n this.resetFont();\n this.render_options = {\n line_width: 1.5,\n line_style: '#777777',\n bend_width: 8,\n release_width: 8,\n };\n if (phrase) {\n this.phrase = phrase;\n }\n else {\n // Backward compatibility\n this.phrase = [{ type: Bend.UP, text: this.text }];\n if (this.release)\n this.phrase.push({ type: Bend.DOWN, text: '' });\n }\n this.updateWidth();\n }\n static get CATEGORY() {\n return Category.Bend;\n }\n static get UP() {\n return 0;\n }\n static get DOWN() {\n return 1;\n }\n // Arrange bends in `ModifierContext`\n static format(bends, state) {\n if (!bends || bends.length === 0)\n return false;\n let last_width = 0;\n // Format Bends\n for (let i = 0; i < bends.length; ++i) {\n const bend = bends[i];\n const note = bend.checkAttachedNote();\n if (isTabNote(note)) {\n const stringPos = note.leastString() - 1;\n if (state.top_text_line < stringPos) {\n state.top_text_line = stringPos;\n }\n }\n bend.setXShift(last_width);\n last_width = bend.getWidth();\n bend.setTextLine(state.top_text_line);\n }\n state.right_shift += last_width;\n state.top_text_line += 1;\n return true;\n }\n /** Set horizontal shift in pixels. */\n setXShift(value) {\n this.x_shift = value;\n this.updateWidth();\n return this;\n }\n setTap(value) {\n this.tap = value;\n return this;\n }\n /** Get text provided in the constructor. */\n getText() {\n return this.text;\n }\n getTextHeight() {\n const textFormatter = TextFormatter.create(this.textFont);\n return textFormatter.maxHeight;\n }\n /** Recalculate width. */\n updateWidth() {\n const textFormatter = TextFormatter.create(this.textFont);\n const measureText = (text) => {\n return textFormatter.getWidthForTextInPx(text);\n };\n let totalWidth = 0;\n for (let i = 0; i < this.phrase.length; ++i) {\n const bend = this.phrase[i];\n if (bend.width !== undefined) {\n totalWidth += bend.width;\n }\n else {\n const additional_width = bend.type === Bend.UP ? this.render_options.bend_width : this.render_options.release_width;\n bend.width = Math.max(additional_width, measureText(bend.text)) + 3;\n bend.draw_width = bend.width / 2;\n totalWidth += bend.width;\n }\n }\n this.setWidth(totalWidth + this.x_shift);\n return this;\n }\n /** Draw the bend on the rendering context. */\n draw() {\n var _a;\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(Modifier.Position.RIGHT, this.index);\n start.x += 3;\n start.y += 0.5;\n const x_shift = this.x_shift;\n const stave = note.checkStave();\n const spacing = stave.getSpacingBetweenLines();\n const lowestY = note.getYs().reduce((a, b) => (a < b ? a : b));\n // this.text_line is relative to top string in the group.\n const bend_height = start.y - ((this.text_line + 1) * spacing + start.y - lowestY) + 3;\n const annotation_y = start.y - ((this.text_line + 1) * spacing + start.y - lowestY) - 1;\n const renderBend = (x, y, width, height) => {\n const cp_x = x + width;\n const cp_y = y;\n ctx.save();\n ctx.beginPath();\n ctx.setLineWidth(this.render_options.line_width);\n ctx.setStrokeStyle(this.render_options.line_style);\n ctx.setFillStyle(this.render_options.line_style);\n ctx.moveTo(x, y);\n ctx.quadraticCurveTo(cp_x, cp_y, x + width, height);\n ctx.stroke();\n ctx.restore();\n };\n const renderRelease = (x, y, width, height) => {\n ctx.save();\n ctx.beginPath();\n ctx.setLineWidth(this.render_options.line_width);\n ctx.setStrokeStyle(this.render_options.line_style);\n ctx.setFillStyle(this.render_options.line_style);\n ctx.moveTo(x, height);\n ctx.quadraticCurveTo(x + width, height, x + width, y);\n ctx.stroke();\n ctx.restore();\n };\n const renderArrowHead = (x, y, direction) => {\n const width = 4;\n const yBase = y + width * direction;\n ctx.beginPath();\n ctx.moveTo(x, y); // tip of the arrow\n ctx.lineTo(x - width, yBase);\n ctx.lineTo(x + width, yBase);\n ctx.closePath();\n ctx.fill();\n };\n const renderText = (x, text) => {\n ctx.save();\n ctx.setFont(this.textFont);\n const render_x = x - ctx.measureText(text).width / 2;\n ctx.fillText(text, render_x, annotation_y);\n ctx.restore();\n };\n let last_bend = undefined;\n let last_bend_draw_width = 0;\n let last_drawn_width = 0;\n if ((_a = this.tap) === null || _a === void 0 ? void 0 : _a.length) {\n const tapStart = note.getModifierStartXY(Modifier.Position.CENTER, this.index);\n renderText(tapStart.x, this.tap);\n }\n for (let i = 0; i < this.phrase.length; ++i) {\n const bend = this.phrase[i];\n if (!bend.draw_width)\n bend.draw_width = 0;\n if (i === 0)\n bend.draw_width += x_shift;\n last_drawn_width = bend.draw_width + last_bend_draw_width - (i === 1 ? x_shift : 0);\n if (bend.type === Bend.UP) {\n if (last_bend && last_bend.type === Bend.UP) {\n renderArrowHead(start.x, bend_height, +1);\n }\n renderBend(start.x, start.y, last_drawn_width, bend_height);\n }\n if (bend.type === Bend.DOWN) {\n if (last_bend && last_bend.type === Bend.UP) {\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n if (last_bend && last_bend.type === Bend.DOWN) {\n renderArrowHead(start.x, start.y, -1);\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n if (!last_bend) {\n last_drawn_width = bend.draw_width;\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n }\n renderText(start.x + last_drawn_width, bend.text);\n last_bend = bend;\n last_bend_draw_width = bend.draw_width;\n last_bend.x = start.x;\n start.x += last_drawn_width;\n }\n if (!last_bend || last_bend.x == undefined) {\n throw new RuntimeError('NoLastBendForBend', 'Internal error.');\n }\n // Final arrowhead and text\n if (last_bend.type === Bend.UP) {\n renderArrowHead(last_bend.x + last_drawn_width, bend_height, +1);\n }\n else if (last_bend.type === Bend.DOWN) {\n renderArrowHead(last_bend.x + last_drawn_width, start.y, -1);\n }\n }\n}\n/** Default text font. */\nBend.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements dot modifiers for notes.\nimport { Modifier } from './modifier';\nimport { Category, isGraceNote, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class Dot extends Modifier {\n constructor() {\n super();\n this.position = Modifier.Position.RIGHT;\n this.radius = 2;\n this.setWidth(5);\n this.dot_shiftY = 0;\n }\n static get CATEGORY() {\n return Category.Dot;\n }\n /** Returns the dots associated to a Note. */\n static getDots(note) {\n return note.getModifiersByType(Dot.CATEGORY);\n }\n /** Add a dot on the specified keys to the notes. */\n static buildAndAttach(notes, options) {\n for (const note of notes) {\n if (options === null || options === void 0 ? void 0 : options.all) {\n for (let i = 0; i < note.keys.length; i++) {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, i);\n }\n }\n else if ((options === null || options === void 0 ? void 0 : options.index) != undefined) {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, options === null || options === void 0 ? void 0 : options.index);\n }\n else {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, 0);\n }\n }\n }\n // Arrange dots inside a ModifierContext.\n static format(dots, state) {\n const right_shift = state.right_shift;\n const dot_spacing = 1;\n if (!dots || dots.length === 0)\n return false;\n const dot_list = [];\n const max_shift_map = {};\n for (let i = 0; i < dots.length; ++i) {\n const dot = dots[i];\n const note = dot.getNote();\n let props;\n let shift;\n if (isStaveNote(note)) {\n const index = dot.checkIndex();\n props = note.getKeyProps()[index];\n // consider right displaced head with no previous modifier\n shift = note.getFirstDotPx();\n }\n else if (isTabNote(note)) {\n props = { line: 0.5 }; // Shim key props for dot placement\n shift = right_shift;\n }\n else {\n // note object is not StaveNote or TabNote.\n throw new RuntimeError('Internal', 'Unexpected instance.');\n }\n const note_id = note.getAttribute('id');\n dot_list.push({ line: props.line, note, note_id, dot });\n max_shift_map[note_id] = Math.max(max_shift_map[note_id] || shift, shift);\n }\n // Sort dots by line number.\n dot_list.sort((a, b) => b.line - a.line);\n let dot_shift = right_shift;\n let x_width = 0;\n let last_line = null;\n let last_note = null;\n let prev_dotted_space = null;\n let half_shiftY = 0;\n for (let i = 0; i < dot_list.length; ++i) {\n const { dot, note, note_id, line } = dot_list[i];\n // Reset the position of the dot every line.\n if (line !== last_line || note !== last_note) {\n dot_shift = max_shift_map[note_id];\n }\n if (!note.isRest() && line !== last_line) {\n if (Math.abs(line % 1) === 0.5) {\n // note is on a space, so no dot shift\n half_shiftY = 0;\n }\n else {\n // note is on a line, so shift dot to space above the line\n half_shiftY = 0.5;\n if (last_note != null && !last_note.isRest() && last_line != null && last_line - line === 0.5) {\n // previous note on a space, so shift dot to space below the line\n half_shiftY = -0.5;\n }\n else if (line + half_shiftY === prev_dotted_space) {\n // previous space is dotted, so shift dot to space below the line\n half_shiftY = -0.5;\n }\n }\n }\n // convert half_shiftY to a multiplier for dots.draw()\n if (note.isRest()) {\n dot.dot_shiftY += -half_shiftY;\n }\n else {\n dot.dot_shiftY = -half_shiftY;\n }\n prev_dotted_space = line + half_shiftY;\n dot.setXShift(dot_shift);\n dot_shift += dot.getWidth() + dot_spacing; // spacing\n x_width = dot_shift > x_width ? dot_shift : x_width;\n last_line = line;\n last_note = note;\n }\n // Update state.\n state.right_shift += x_width;\n return true;\n }\n setNote(note) {\n this.note = note;\n if (isGraceNote(note)) {\n this.radius *= 0.5;\n this.setWidth(3);\n }\n return this;\n }\n setDotShiftY(y) {\n this.dot_shiftY = y;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stave = note.checkStave();\n const lineSpace = stave.getSpacingBetweenLines();\n const start = note.getModifierStartXY(this.position, this.index, { forceFlagRight: true });\n // Set the starting y coordinate to the base of the stem for TabNotes.\n if (isTabNote(note)) {\n start.y = note.getStemExtents().baseY;\n }\n const x = start.x + this.x_shift + this.width - this.radius;\n const y = start.y + this.y_shift + this.dot_shiftY * lineSpace;\n ctx.beginPath();\n ctx.arc(x, y, this.radius, 0, Math.PI * 2, false);\n ctx.fill();\n }\n}\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n// Author Larry Kuhns 2013\n// Class to draws string numbers into the notation.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class FretHandFinger extends Modifier {\n constructor(finger) {\n super();\n this.finger = finger;\n this.width = 7;\n this.position = Modifier.Position.LEFT; // Default position above stem or note head\n this.x_shift = 0;\n this.y_shift = 0;\n this.x_offset = 0; // Horizontal offset from default\n this.y_offset = 0; // Vertical offset from default\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.FretHandFinger;\n }\n // Arrange fingerings inside a ModifierContext.\n static format(nums, state) {\n const { left_shift, right_shift } = state;\n const num_spacing = 1;\n if (!nums || nums.length === 0)\n return false;\n const nums_list = [];\n let prev_note = null;\n let shiftLeft = 0;\n let shiftRight = 0;\n for (let i = 0; i < nums.length; ++i) {\n const num = nums[i];\n const note = num.getNote();\n const pos = num.getPosition();\n const index = num.checkIndex();\n const props = note.getKeyProps()[index];\n const textFormatter = TextFormatter.create(num.textFont);\n const textHeight = textFormatter.maxHeight;\n if (num.position === ModifierPosition.ABOVE) {\n state.top_text_line += textHeight / Tables.STAVE_LINE_DISTANCE + 0.5;\n }\n if (num.position === ModifierPosition.BELOW) {\n state.text_line += textHeight / Tables.STAVE_LINE_DISTANCE + 0.5;\n }\n if (note !== prev_note) {\n for (let n = 0; n < note.keys.length; ++n) {\n if (left_shift === 0) {\n shiftLeft = Math.max(note.getLeftDisplacedHeadPx(), shiftLeft);\n }\n if (right_shift === 0) {\n shiftRight = Math.max(note.getRightDisplacedHeadPx(), shiftRight);\n }\n }\n prev_note = note;\n }\n nums_list.push({\n note,\n num,\n pos,\n line: props.line,\n shiftL: shiftLeft,\n shiftR: shiftRight,\n });\n }\n // Sort fingernumbers by line number.\n nums_list.sort((a, b) => b.line - a.line);\n let numShiftL = 0;\n let numShiftR = 0;\n let xWidthL = 0;\n let xWidthR = 0;\n let lastLine = null;\n let lastNote = null;\n for (let i = 0; i < nums_list.length; ++i) {\n let num_shift = 0;\n const { note, pos, num, line, shiftL, shiftR } = nums_list[i];\n // Reset the position of the string number every line.\n if (line !== lastLine || note !== lastNote) {\n numShiftL = left_shift + shiftL;\n numShiftR = right_shift + shiftR;\n }\n const numWidth = num.getWidth() + num_spacing;\n if (pos === Modifier.Position.LEFT) {\n num.setXShift(left_shift + numShiftL);\n num_shift = left_shift + numWidth; // spacing\n xWidthL = num_shift > xWidthL ? num_shift : xWidthL;\n }\n else if (pos === Modifier.Position.RIGHT) {\n num.setXShift(numShiftR);\n num_shift = shiftRight + numWidth; // spacing\n xWidthR = num_shift > xWidthR ? num_shift : xWidthR;\n }\n lastLine = line;\n lastNote = note;\n }\n state.left_shift += xWidthL;\n state.right_shift += xWidthR;\n return true;\n }\n static easyScoreHook({ fingerings } = {}, note, builder) {\n fingerings === null || fingerings === void 0 ? void 0 : fingerings.split(',').map((fingeringString) => {\n const split = fingeringString.trim().split('.');\n const params = { number: split[0] };\n if (split[1])\n params.position = split[1];\n return builder.getFactory().Fingering(params);\n }).map((fingering, index) => note.addModifier(fingering, index));\n }\n setFretHandFinger(finger) {\n this.finger = finger;\n return this;\n }\n getFretHandFinger() {\n return this.finger;\n }\n setOffsetX(x) {\n this.x_offset = x;\n return this;\n }\n setOffsetY(y) {\n this.y_offset = y;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n let dot_x = start.x + this.x_shift + this.x_offset;\n let dot_y = start.y + this.y_shift + this.y_offset + 5;\n switch (this.position) {\n case Modifier.Position.ABOVE:\n dot_x -= 4;\n dot_y -= 12;\n break;\n case Modifier.Position.BELOW:\n dot_x -= 2;\n dot_y += 10;\n break;\n case Modifier.Position.LEFT:\n dot_x -= this.width;\n break;\n case Modifier.Position.RIGHT:\n dot_x += 1;\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} does not exist`);\n }\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText('' + this.finger, dot_x, dot_y);\n ctx.restore();\n }\n}\nFretHandFinger.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 9,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (NoteHead.DEBUG)\n log('Vex.Flow.NoteHead', args);\n}\n/**\n * Draw slashnote head manually. No glyph exists for this.\n * @param ctx the Canvas context\n * @param duration the duration of the note. ex: \"4\"\n * @param x the x coordinate to draw at\n * @param y the y coordinate to draw at\n * @param stem_direction the direction of the stem\n */\nfunction drawSlashNoteHead(ctx, duration, x, y, stem_direction, staveSpace) {\n const width = Tables.SLASH_NOTEHEAD_WIDTH;\n ctx.save();\n ctx.setLineWidth(Tables.STEM_WIDTH);\n let fill = false;\n if (Tables.durationToNumber(duration) > 2) {\n fill = true;\n }\n if (!fill)\n x -= (Tables.STEM_WIDTH / 2) * stem_direction;\n ctx.beginPath();\n ctx.moveTo(x, y + staveSpace);\n ctx.lineTo(x, y + 1);\n ctx.lineTo(x + width, y - staveSpace);\n ctx.lineTo(x + width, y);\n ctx.lineTo(x, y + staveSpace);\n ctx.closePath();\n if (fill) {\n ctx.fill();\n }\n else {\n ctx.stroke();\n }\n if (Tables.durationToFraction(duration).equals(0.5)) {\n const breve_lines = [-3, -1, width + 1, width + 3];\n for (let i = 0; i < breve_lines.length; i++) {\n ctx.beginPath();\n ctx.moveTo(x + breve_lines[i], y - 10);\n ctx.lineTo(x + breve_lines[i], y + 11);\n ctx.stroke();\n }\n }\n ctx.restore();\n}\n/**\n * `NoteHeads` are typically not manipulated\n * directly, but used internally in `StaveNote`.\n *\n * See `tests/notehead_tests.ts` for usage examples.\n */\nexport class NoteHead extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n this.custom_glyph = false;\n this.stem_up_x_offset = 0;\n this.stem_down_x_offset = 0;\n this.index = noteStruct.index;\n this.x = noteStruct.x || 0;\n this.y = noteStruct.y || 0;\n if (noteStruct.note_type)\n this.noteType = noteStruct.note_type;\n this.displaced = noteStruct.displaced || false;\n this.stem_direction = noteStruct.stem_direction || Stem.UP;\n this.line = noteStruct.line || 0;\n // Get glyph code based on duration and note type. This could be\n // regular notes, rests, or other custom codes.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n // Swap out the glyph with leger lines\n if ((this.line > 5 || this.line < 0) && this.glyph.leger_code_head) {\n this.glyph.code_head = this.glyph.leger_code_head;\n }\n this.glyph_code = this.glyph.code_head;\n this.x_shift = noteStruct.x_shift || 0;\n if (noteStruct.custom_glyph_code) {\n this.custom_glyph = true;\n this.glyph_code = noteStruct.custom_glyph_code;\n this.stem_up_x_offset = noteStruct.stem_up_x_offset || 0;\n this.stem_down_x_offset = noteStruct.stem_down_x_offset || 0;\n }\n this.setStyle(noteStruct.style);\n this.slashed = noteStruct.slashed || false;\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads\n glyph_font_scale: noteStruct.glyph_font_scale || Tables.NOTATION_FONT_SCALE });\n this.setWidth(this.glyph.getWidth(this.render_options.glyph_font_scale));\n }\n static get CATEGORY() {\n return Category.NoteHead;\n }\n /** Get the width of the notehead. */\n getWidth() {\n return this.width;\n }\n /** Determine if the notehead is displaced. */\n isDisplaced() {\n return this.displaced === true;\n }\n /** Get the glyph data. */\n getGlyph() {\n return this.glyph;\n }\n /** Set the X coordinate. */\n setX(x) {\n this.x = x;\n return this;\n }\n /** Get the Y coordinate. */\n getY() {\n return this.y;\n }\n /** Set the Y coordinate. */\n setY(y) {\n this.y = y;\n return this;\n }\n /** Get the stave line the notehead is placed on. */\n getLine() {\n return this.line;\n }\n /** Set the stave line the notehead is placed on. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Get the canvas `x` coordinate position of the notehead. */\n getAbsoluteX() {\n // If the note has not been preformatted, then get the static x value\n // Otherwise, it's been formatted and we should use it's x value relative\n // to its tick context\n const x = !this.preFormatted ? this.x : super.getAbsoluteX();\n // For a more natural displaced notehead, we adjust the displacement amount\n // by half the stem width in order to maintain a slight overlap with the stem\n const displacementStemAdjustment = Stem.WIDTH / 2;\n const musicFont = Tables.currentMusicFont();\n const fontShift = musicFont.lookupMetric('notehead.shiftX', 0) * this.stem_direction;\n const displacedFontShift = musicFont.lookupMetric('noteHead.displaced.shiftX', 0) * this.stem_direction;\n return (x +\n fontShift +\n (this.displaced ? (this.width - displacementStemAdjustment) * this.stem_direction + displacedFontShift : 0));\n }\n /** Get the `BoundingBox` for the `NoteHead`. */\n getBoundingBox() {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getBoundingBox on an unformatted note.\");\n }\n const spacing = this.checkStave().getSpacingBetweenLines();\n const half_spacing = spacing / 2;\n const min_y = this.y - half_spacing;\n return new BoundingBox(this.getAbsoluteX(), min_y, this.width, spacing);\n }\n /** Set notehead to a provided `stave`. */\n setStave(stave) {\n const line = this.getLine();\n this.stave = stave;\n if (this.stave) {\n this.setY(this.stave.getYForNote(line));\n this.setContext(this.stave.getContext());\n }\n return this;\n }\n /** Pre-render formatting. */\n preFormat() {\n if (this.preFormatted)\n return this;\n const width = this.getWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx;\n this.setWidth(width);\n this.preFormatted = true;\n return this;\n }\n /** Draw the notehead. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let head_x = this.getAbsoluteX();\n if (this.custom_glyph) {\n // head_x += this.x_shift;\n head_x += this.stem_direction === Stem.UP ? this.stem_up_x_offset : this.stem_down_x_offset;\n }\n const y = this.y;\n L(\"Drawing note head '\", this.noteType, this.duration, \"' at\", head_x, y);\n // Begin and end positions for head.\n const stem_direction = this.stem_direction;\n const glyph_font_scale = this.render_options.glyph_font_scale;\n this.applyStyle(ctx);\n const categorySuffix = `${this.glyph_code}Stem${stem_direction === Stem.UP ? 'Up' : 'Down'}`;\n if (this.noteType === 's') {\n const staveSpace = this.checkStave().getSpacingBetweenLines();\n drawSlashNoteHead(ctx, this.duration, head_x, y, stem_direction, staveSpace);\n }\n else {\n Glyph.renderGlyph(ctx, head_x, y, glyph_font_scale, this.glyph_code, {\n category: this.custom_glyph ? `noteHead.custom.${categorySuffix}` : `noteHead.standard.${categorySuffix}`,\n });\n }\n this.restoreStyle(ctx);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.NoteHead.DEBUG` to `true`. */\nNoteHead.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// `StemmableNote` is an abstract interface for notes with optional stems.\n// Examples of stemmable notes are `StaveNote` and `TabNote`\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StemmableNote extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n }\n static get CATEGORY() {\n return Category.StemmableNote;\n }\n // Get and set the note's `Stem`\n getStem() {\n return this.stem;\n }\n checkStem() {\n if (!this.stem) {\n throw new RuntimeError('NoStem', 'No stem attached to instance');\n }\n return this.stem;\n }\n setStem(stem) {\n this.stem = stem;\n this.addChildElement(stem);\n return this;\n }\n // Builds and sets a new stem\n buildStem() {\n const stem = new Stem();\n this.setStem(stem);\n return this;\n }\n buildFlag(category = 'flag') {\n const { glyph } = this;\n if (this.hasFlag()) {\n const flagCode = this.getStemDirection() === Stem.DOWN ? glyph.code_flag_downstem : glyph.code_flag_upstem;\n this.flag = new Glyph(flagCode, this.render_options.glyph_font_scale, { category });\n }\n }\n // Get the custom glyph associated with the outer note head on the base of the stem.\n getBaseCustomNoteHeadGlyph() {\n if (this.getStemDirection() === Stem.DOWN) {\n return this.customGlyphs[this.customGlyphs.length - 1];\n }\n else {\n return this.customGlyphs[0];\n }\n }\n // Get the full length of stem\n getStemLength() {\n return Stem.HEIGHT + this.getStemExtension();\n }\n // Get the number of beams for this duration\n getBeamCount() {\n const glyph = this.getGlyph();\n if (glyph) {\n return glyph.beam_count;\n }\n else {\n return 0;\n }\n }\n // Get the minimum length of stem\n getStemMinimumLength() {\n const frac = Tables.durationToFraction(this.duration);\n let length = frac.value() <= 1 ? 0 : 20;\n // if note is flagged, cannot shorten beam\n switch (this.duration) {\n case '8':\n if (this.beam == undefined)\n length = 35;\n break;\n case '16':\n length = this.beam == undefined ? 35 : 25;\n break;\n case '32':\n length = this.beam == undefined ? 45 : 35;\n break;\n case '64':\n length = this.beam == undefined ? 50 : 40;\n break;\n case '128':\n length = this.beam == undefined ? 55 : 45;\n break;\n default:\n break;\n }\n return length;\n }\n // Get/set the direction of the stem\n getStemDirection() {\n if (!this.stem_direction)\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n return this.stem_direction;\n }\n setStemDirection(direction) {\n if (!direction)\n direction = Stem.UP;\n if (direction !== Stem.UP && direction !== Stem.DOWN) {\n throw new RuntimeError('BadArgument', `Invalid stem direction: ${direction}`);\n }\n this.stem_direction = direction;\n // Reset and reformat everything. Flag has to be built before calling getStemExtension.\n this.reset();\n if (this.hasFlag()) {\n this.buildFlag();\n }\n this.beam = undefined;\n if (this.stem) {\n this.stem.setDirection(direction);\n this.stem.setExtension(this.getStemExtension());\n // Lookup the base custom notehead (closest to the base of the stem) to extend or shorten\n // the stem appropriately. If there's no custom note head, lookup the standard notehead.\n const glyph = this.getBaseCustomNoteHeadGlyph() || this.getGlyph();\n // Get the font-specific customizations for the note heads.\n const offsets = Tables.currentMusicFont().lookupMetric(`stem.noteHead.${glyph.code_head}`, {\n offsetYBaseStemUp: 0,\n offsetYTopStemUp: 0,\n offsetYBaseStemDown: 0,\n offsetYTopStemDown: 0,\n });\n // Configure the stem to use these offsets.\n this.stem.setOptions({\n stem_up_y_offset: offsets.offsetYTopStemUp,\n stem_down_y_offset: offsets.offsetYTopStemDown,\n stem_up_y_base_offset: offsets.offsetYBaseStemUp,\n stem_down_y_base_offset: offsets.offsetYBaseStemDown, // glyph.stem_down_y_base_offset,\n });\n }\n if (this.preFormatted) {\n this.preFormat();\n }\n return this;\n }\n // Get the `x` coordinate of the stem\n getStemX() {\n const x_begin = this.getAbsoluteX() + this.x_shift;\n const x_end = this.getAbsoluteX() + this.x_shift + this.getGlyphWidth();\n const stem_x = this.stem_direction === Stem.DOWN ? x_begin : x_end;\n return stem_x;\n }\n // Get the `x` coordinate for the center of the glyph.\n // Used for `TabNote` stems and stemlets over rests\n getCenterGlyphX() {\n return this.getAbsoluteX() + this.x_shift + this.getGlyphWidth() / 2;\n }\n // Get the stem extension for the current duration\n getStemExtension() {\n const glyph = this.getGlyph();\n if (this.stem_extension_override != undefined) {\n return this.stem_extension_override;\n }\n // Use stem_beam_extension with beams\n if (this.beam) {\n return glyph.stem_beam_extension;\n }\n if (glyph) {\n return this.getStemDirection() === Stem.UP ? glyph.stem_up_extension : glyph.stem_down_extension;\n }\n return 0;\n }\n // Set the stem length to a specific. Will override the default length.\n setStemLength(height) {\n this.stem_extension_override = height - Stem.HEIGHT;\n return this;\n }\n // Get the top and bottom `y` values of the stem.\n getStemExtents() {\n if (!this.stem)\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n return this.stem.getExtents();\n }\n /** Gets the `y` value for the top modifiers at a specific `textLine`. */\n getYForTopText(textLine) {\n const stave = this.checkStave();\n if (this.hasStem()) {\n const extents = this.getStemExtents();\n if (!extents)\n throw new RuntimeError('InvalidState', 'Stem does not have extents.');\n return Math.min(stave.getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1));\n }\n else {\n return stave.getYForTopText(textLine);\n }\n }\n /** Gets the `y` value for the bottom modifiers at a specific `textLine`. */\n getYForBottomText(textLine) {\n const stave = this.checkStave();\n if (this.hasStem()) {\n const extents = this.getStemExtents();\n if (!extents)\n throw new RuntimeError('InvalidState', 'Stem does not have extents.');\n return Math.max(stave.getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine);\n }\n else {\n return stave.getYForBottomText(textLine);\n }\n }\n hasFlag() {\n return Tables.getGlyphProps(this.duration).flag && !this.beam;\n }\n /** Post formats the note. */\n postFormat() {\n var _a;\n (_a = this.beam) === null || _a === void 0 ? void 0 : _a.postFormat();\n this.postFormatted = true;\n return this;\n }\n /** Renders the stem onto the canvas. */\n drawStem(stemOptions) {\n var _a;\n this.checkContext();\n this.setRendered();\n this.setStem(new Stem(stemOptions));\n (_a = this.stem) === null || _a === void 0 ? void 0 : _a.setContext(this.getContext()).draw();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This file implements notes for standard notation. This consists of one or\n// more `NoteHeads`, an optional stem, and an optional flag.\n//\n// Throughout these comments, a \"note\" refers to the entire `StaveNote`,\n// and a \"key\" refers to a specific pitch/notehead within a note.\n//\n// See `tests/stavenote_tests.ts` for usage examples.\nimport { BoundingBox } from './boundingbox';\nimport { Modifier } from './modifier';\nimport { NoteHead } from './notehead';\nimport { Stem } from './stem';\nimport { StemmableNote } from './stemmablenote';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log, midLine, RuntimeError } from './util';\nfunction showDeprecationWarningForNoteHeads() {\n // eslint-disable-next-line\n console.warn('StaveNote.note_heads is deprecated. Use StaveNote.noteHeads instead.', 'This accessor will be removed in VexFlow 5.0.');\n}\n// To enable logging for this class. Set `Vex.Flow.StaveNote.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (StaveNote.DEBUG)\n log('Vex.Flow.StaveNote', args);\n}\nconst isInnerNoteIndex = (note, index) => index === (note.getStemDirection() === Stem.UP ? note.keyProps.length - 1 : 0);\n// Helper methods for rest positioning in ModifierContext.\nfunction shiftRestVertical(rest, note, dir) {\n const delta = dir;\n rest.line += delta;\n rest.maxLine += delta;\n rest.minLine += delta;\n rest.note.setKeyLine(0, rest.note.getKeyLine(0) + delta);\n}\n// Called from formatNotes :: center a rest between two notes\nfunction centerRest(rest, noteU, noteL) {\n const delta = rest.line - midLine(noteU.minLine, noteL.maxLine);\n rest.note.setKeyLine(0, rest.note.getKeyLine(0) - delta);\n rest.line -= delta;\n rest.maxLine -= delta;\n rest.minLine -= delta;\n}\nexport class StaveNote extends StemmableNote {\n constructor(noteStruct) {\n var _a, _b, _c;\n super(noteStruct);\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // INSTANCE MEMBERS\n this.minLine = 0;\n this.maxLine = 0;\n // Sorted variant of keyProps used internally\n this.sortedKeyProps = [];\n this.ledgerLineStyle = {};\n this.clef = (_a = noteStruct.clef) !== null && _a !== void 0 ? _a : 'treble';\n this.octave_shift = (_b = noteStruct.octave_shift) !== null && _b !== void 0 ? _b : 0;\n // Pull note rendering properties.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n // if true, displace note to right\n this.displaced = false;\n this.dot_shiftY = 0;\n // for displaced ledger lines\n this.use_default_head_x = false;\n // Drawing\n this._noteHeads = [];\n this.modifiers = [];\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads and rests\n glyph_font_scale: noteStruct.glyph_font_scale || Tables.NOTATION_FONT_SCALE, \n // number of stroke px to the left and right of head\n stroke_px: noteStruct.stroke_px || StaveNote.LEDGER_LINE_OFFSET });\n this.calculateKeyProps();\n this.buildStem();\n // Set the stem direction\n if (noteStruct.auto_stem) {\n this.autoStem();\n }\n else {\n this.setStemDirection((_c = noteStruct.stem_direction) !== null && _c !== void 0 ? _c : Stem.UP);\n }\n this.reset();\n this.buildFlag();\n }\n static get CATEGORY() {\n return Category.StaveNote;\n }\n /**\n * @deprecated Use Stem.UP.\n */\n static get STEM_UP() {\n return Stem.UP;\n }\n /**\n * @deprecated Use Stem.DOWN.\n */\n static get STEM_DOWN() {\n return Stem.DOWN;\n }\n static get LEDGER_LINE_OFFSET() {\n return 3;\n }\n static get minNoteheadPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Format notes inside a ModifierContext. */\n static format(notes, state) {\n if (!notes || notes.length < 2)\n return false;\n const notesList = [];\n for (let i = 0; i < notes.length; i++) {\n // Formatting uses sortedKeyProps to calculate line and minL.\n const props = notes[i].sortedKeyProps;\n const line = props[0].keyProps.line;\n let minL = props[props.length - 1].keyProps.line;\n const stemDirection = notes[i].getStemDirection();\n const stemMax = notes[i].getStemLength() / 10;\n const stemMin = notes[i].getStemMinimumLength() / 10;\n let maxL;\n if (notes[i].isRest()) {\n maxL = line + notes[i].glyph.line_above;\n minL = line - notes[i].glyph.line_below;\n }\n else {\n maxL =\n stemDirection === 1 ? props[props.length - 1].keyProps.line + stemMax : props[props.length - 1].keyProps.line;\n minL = stemDirection === 1 ? props[0].keyProps.line : props[0].keyProps.line - stemMax;\n }\n notesList.push({\n line: props[0].keyProps.line,\n maxLine: maxL,\n minLine: minL,\n isrest: notes[i].isRest(),\n stemDirection: stemDirection,\n stemMax,\n stemMin,\n voice_shift: notes[i].getVoiceShiftWidth(),\n is_displaced: notes[i].isDisplaced(),\n note: notes[i],\n });\n }\n let voices = 0;\n let noteU = undefined;\n let noteM = undefined;\n let noteL = undefined;\n const draw = [false, false, false];\n for (let i = 0; i < notesList.length; i++) {\n draw[i] = notesList[i].note.render_options.draw == false ? false : true;\n }\n if (draw[0] && draw[1] && draw[2]) {\n // Three visible notes\n voices = 3;\n noteU = notesList[0];\n noteM = notesList[1];\n noteL = notesList[2];\n }\n else if (draw[0] && draw[1]) {\n // Two visible notes, 0 & 1\n voices = 2;\n noteU = notesList[0];\n noteL = notesList[1];\n }\n else if (draw[0] && draw[2]) {\n // Two visible notes, 0 & 2\n voices = 2;\n noteU = notesList[0];\n noteL = notesList[2];\n }\n else if (draw[1] && draw[2]) {\n // Two visible notes, 1 & 2\n voices = 2;\n noteU = notesList[1];\n noteL = notesList[2];\n }\n else {\n // No shift required for less than 2 visible notes\n return true;\n }\n // for two voice backward compatibility, ensure upper voice is stems up\n // for three voices, the voices must be in order (upper, middle, lower)\n if (voices === 2 && noteU.stemDirection === -1 && noteL.stemDirection === 1) {\n noteU = notesList[1];\n noteL = notesList[0];\n }\n const voiceXShift = Math.max(noteU.voice_shift, noteL.voice_shift);\n let xShift = 0;\n // Test for two voice note intersection\n if (voices === 2) {\n const lineSpacing = noteU.note.hasStem() && noteL.note.hasStem() && noteU.stemDirection === noteL.stemDirection ? 0.0 : 0.5;\n if (noteL.isrest && noteU.isrest && noteU.note.duration === noteL.note.duration) {\n noteL.note.render_options.draw = false;\n }\n else if (noteU.minLine <= noteL.maxLine + lineSpacing) {\n if (noteU.isrest) {\n // shift rest up\n shiftRestVertical(noteU, noteL, 1);\n }\n else if (noteL.isrest) {\n // shift rest down\n shiftRestVertical(noteL, noteU, -1);\n }\n else {\n //Instead of shifting notes, remove the appropriate flag\n //If we are sharing a line, switch one notes stem direction.\n //If we are sharing a line and in the same voice, only then offset one note\n const lineDiff = Math.abs(noteU.line - noteL.line);\n if (noteU.note.hasStem() && noteL.note.hasStem()) {\n //If we have different dot values, must offset\n //Or If we have a white mixed with a black notehead, must offset\n let whiteNoteHeadCount = 0;\n let blackNoteHeadCount = 0;\n if (Tables.durationToNumber(noteU.note.duration) === 2) {\n whiteNoteHeadCount++;\n }\n else if (Tables.durationToNumber(noteU.note.duration) > 2) {\n blackNoteHeadCount++;\n }\n if (Tables.durationToNumber(noteL.note.duration) === 2) {\n whiteNoteHeadCount++;\n }\n else if (Tables.durationToNumber(noteL.note.duration) > 2) {\n blackNoteHeadCount++;\n }\n if ((whiteNoteHeadCount !== 2 && blackNoteHeadCount !== 2) ||\n noteU.note.getModifiersByType(Category.Dot).length !== noteL.note.getModifiersByType(Category.Dot).length) {\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (lineDiff < 1 && lineDiff > 0) {\n //if the notes are quite close but not on the same line, shift\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (noteU.note.voice !== noteL.note.voice) {\n //If we are not in the same voice\n if (noteU.stemDirection === noteL.stemDirection) {\n if (noteU.line != noteL.line) {\n xShift = voiceXShift + 2;\n noteU.note.setXShift(xShift);\n }\n else {\n //same line, swap stem direction for one note\n if (noteL.stemDirection === 1) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n }\n }\n } //Very close whole notes\n }\n else if (lineDiff < 1) {\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (noteU.note.hasStem()) {\n noteU.stemDirection = -noteU.note.getStemDirection();\n noteU.note.setStemDirection(noteU.stemDirection);\n }\n else if (noteL.note.hasStem()) {\n noteL.stemDirection = -noteL.note.getStemDirection();\n noteL.note.setStemDirection(noteL.stemDirection);\n }\n }\n }\n // format complete\n state.right_shift += xShift;\n return true;\n }\n if (!noteM)\n throw new RuntimeError('InvalidState', 'noteM not defined.');\n // For three voices, test if rests can be repositioned\n //\n // Special case 1 :: middle voice rest between two notes\n //\n if (noteM.isrest && !noteU.isrest && !noteL.isrest) {\n if (noteU.minLine <= noteM.maxLine || noteM.minLine <= noteL.maxLine) {\n const restHeight = noteM.maxLine - noteM.minLine;\n const space = noteU.minLine - noteL.maxLine;\n if (restHeight < space) {\n // center middle voice rest between the upper and lower voices\n centerRest(noteM, noteU, noteL);\n }\n else {\n xShift = voiceXShift + 2; // shift middle rest right\n noteM.note.setXShift(xShift);\n if (noteL.note.hasBeam() === false) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n if (noteU.minLine <= noteL.maxLine && noteU.note.hasBeam() === false) {\n noteU.stemDirection = 1;\n noteU.note.setStemDirection(1);\n }\n }\n // format complete\n state.right_shift += xShift;\n return true;\n }\n }\n // Special case 2 :: all voices are rests\n if (noteU.isrest && noteM.isrest && noteL.isrest) {\n // Hide upper voice rest\n noteU.note.render_options.draw = false;\n // Hide lower voice rest\n noteL.note.render_options.draw = false;\n // format complete\n state.right_shift += xShift;\n return true;\n }\n // Test if any other rests can be repositioned\n if (noteM.isrest && noteU.isrest && noteM.minLine <= noteL.maxLine) {\n // Hide middle voice rest\n noteM.note.render_options.draw = false;\n }\n if (noteM.isrest && noteL.isrest && noteU.minLine <= noteM.maxLine) {\n // Hide middle voice rest\n noteM.note.render_options.draw = false;\n }\n if (noteU.isrest && noteU.minLine <= noteM.maxLine) {\n // shift upper voice rest up;\n shiftRestVertical(noteU, noteM, 1);\n }\n if (noteL.isrest && noteM.minLine <= noteL.maxLine) {\n // shift lower voice rest down\n shiftRestVertical(noteL, noteM, -1);\n }\n // If middle voice intersects upper or lower voice\n if (noteU.minLine <= noteM.maxLine + 0.5 || noteM.minLine <= noteL.maxLine) {\n // shift middle note right\n xShift = voiceXShift + 2;\n noteM.note.setXShift(xShift);\n if (noteL.note.hasBeam() === false) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n if (noteU.minLine <= noteL.maxLine && noteU.note.hasBeam() === false) {\n noteU.stemDirection = 1;\n noteU.note.setStemDirection(1);\n }\n }\n state.right_shift += xShift;\n return true;\n }\n static postFormat(notes) {\n if (!notes)\n return false;\n notes.forEach((note) => note.postFormat());\n return true;\n }\n reset() {\n super.reset();\n // Save prior noteHead styles & reapply them after making new noteheads.\n const noteHeadStyles = this._noteHeads.map((noteHead) => noteHead.getStyle());\n this.buildNoteHeads();\n this._noteHeads.forEach((noteHead, index) => {\n const noteHeadStyle = noteHeadStyles[index];\n if (noteHeadStyle)\n noteHead.setStyle(noteHeadStyle);\n });\n const stave = this.stave;\n if (stave) {\n this._noteHeads.forEach((head) => head.setStave(stave));\n }\n this.calcNoteDisplacements();\n return this;\n }\n setBeam(beam) {\n this.beam = beam;\n this.calcNoteDisplacements();\n // Update stem extension if a beam is assigned.\n if (this.stem) {\n this.stem.setExtension(this.getStemExtension());\n }\n return this;\n }\n // Builds a `Stem` for the note\n buildStem() {\n this.setStem(new Stem({ hide: !!this.isRest() }));\n return this;\n }\n // Builds a `NoteHead` for each key in the note\n buildNoteHeads() {\n this._noteHeads = [];\n const stemDirection = this.getStemDirection();\n const keys = this.getKeys();\n let lastLine = undefined;\n let lineDiff = undefined;\n let displaced = false;\n // Draw notes from bottom to top.\n // For down-stem notes, we draw from top to bottom.\n let start;\n let end;\n let step;\n if (stemDirection === Stem.UP) {\n start = 0;\n end = keys.length;\n step = 1;\n }\n else {\n start = keys.length - 1;\n end = -1;\n step = -1;\n }\n for (let i = start; i !== end; i += step) {\n // Building noteheads rely on sortedKeNotes in order to calculate the displacements\n const noteProps = this.sortedKeyProps[i].keyProps;\n const line = noteProps.line;\n // Keep track of last line with a note head, so that consecutive heads\n // are correctly displaced.\n if (lastLine === undefined) {\n lastLine = line;\n }\n else {\n lineDiff = Math.abs(lastLine - line);\n if (lineDiff === 0 || lineDiff === 0.5) {\n displaced = !displaced;\n }\n else {\n displaced = false;\n this.use_default_head_x = true;\n }\n }\n lastLine = line;\n const notehead = new NoteHead({\n duration: this.duration,\n note_type: this.noteType,\n displaced,\n stem_direction: stemDirection,\n custom_glyph_code: noteProps.code,\n glyph_font_scale: this.render_options.glyph_font_scale,\n x_shift: noteProps.shift_right,\n stem_up_x_offset: noteProps.stem_up_x_offset,\n stem_down_x_offset: noteProps.stem_down_x_offset,\n line: noteProps.line,\n });\n this.addChildElement(notehead);\n this._noteHeads[this.sortedKeyProps[i].index] = notehead;\n }\n }\n // Automatically sets the stem direction based on the keys in the note\n autoStem() {\n this.setStemDirection(this.calculateOptimalStemDirection());\n }\n calculateOptimalStemDirection() {\n // Figure out optimal stem direction based on given notes\n // minLine & maxLine rely on sortedKeyProps\n this.minLine = this.sortedKeyProps[0].keyProps.line;\n this.maxLine = this.sortedKeyProps[this.keyProps.length - 1].keyProps.line;\n const MIDDLE_LINE = 3;\n const decider = (this.minLine + this.maxLine) / 2;\n const stemDirection = decider < MIDDLE_LINE ? Stem.UP : Stem.DOWN;\n return stemDirection;\n }\n // Calculates and stores the properties for each key in the note\n calculateKeyProps() {\n let lastLine;\n for (let i = 0; i < this.keys.length; ++i) {\n const key = this.keys[i];\n // All rests use the same position on the line.\n // if (this.glyph.rest) key = this.glyph.position;\n if (this.glyph.rest)\n this.glyph.position = key;\n const options = { octave_shift: this.octave_shift || 0, duration: this.duration };\n const props = Tables.keyProperties(key, this.clef, options);\n if (!props) {\n throw new RuntimeError('BadArguments', `Invalid key for note properties: ${key}`);\n }\n // Override line placement for default rests\n if (props.key === 'R') {\n if (this.duration === '1' || this.duration === 'w') {\n props.line = 4;\n }\n else {\n props.line = 3;\n }\n }\n // Calculate displacement of this note\n const line = props.line;\n if (lastLine == undefined) {\n lastLine = line;\n }\n else {\n if (Math.abs(lastLine - line) === 0.5) {\n this.displaced = true;\n props.displaced = true;\n // Have to mark the previous note as\n // displaced as well, for modifier placement\n if (this.keyProps.length > 0) {\n this.keyProps[i - 1].displaced = true;\n }\n }\n }\n lastLine = line;\n this.keyProps.push(props);\n }\n // Sort the notes from lowest line to highest line in sortedKeyProps\n // Warn no longer required as keyProps remains unsorted\n this.keyProps.forEach((keyProps, index) => {\n this.sortedKeyProps.push({ keyProps, index });\n });\n this.sortedKeyProps.sort((a, b) => a.keyProps.line - b.keyProps.line);\n }\n // Get the `BoundingBox` for the entire note\n getBoundingBox() {\n var _a, _b;\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getBoundingBox on an unformatted note.\");\n }\n const { width: w, modLeftPx, leftDisplacedHeadPx } = this.getMetrics();\n const x = this.getAbsoluteX() - modLeftPx - leftDisplacedHeadPx;\n let minY = 0;\n let maxY = 0;\n const halfLineSpacing = ((_b = (_a = this.getStave()) === null || _a === void 0 ? void 0 : _a.getSpacingBetweenLines()) !== null && _b !== void 0 ? _b : 0) / 2;\n const lineSpacing = halfLineSpacing * 2;\n if (this.isRest()) {\n const y = this.ys[0];\n const frac = Tables.durationToFraction(this.duration);\n if (frac.equals(1) || frac.equals(2)) {\n minY = y - halfLineSpacing;\n maxY = y + halfLineSpacing;\n }\n else {\n minY = y - this.glyph.line_above * lineSpacing;\n maxY = y + this.glyph.line_below * lineSpacing;\n }\n }\n else if (this.glyph.stem) {\n const ys = this.getStemExtents();\n ys.baseY += halfLineSpacing * this.getStemDirection();\n minY = Math.min(ys.topY, ys.baseY);\n maxY = Math.max(ys.topY, ys.baseY);\n }\n else {\n minY = 0;\n maxY = 0;\n for (let i = 0; i < this.ys.length; ++i) {\n const yy = this.ys[i];\n if (i === 0) {\n minY = yy;\n maxY = yy;\n }\n else {\n minY = Math.min(yy, minY);\n maxY = Math.max(yy, maxY);\n }\n }\n minY -= halfLineSpacing;\n maxY += halfLineSpacing;\n }\n return new BoundingBox(x, minY, w, maxY - minY);\n }\n // Gets the line number of the bottom note in the chord.\n // If `isTopNote` is `true` then get the top note's line number instead\n getLineNumber(isTopNote) {\n if (!this.keyProps.length) {\n throw new RuntimeError('NoKeyProps', \"Can't get bottom note line, because note is not initialized properly.\");\n }\n let resultLine = this.keyProps[0].line;\n // No precondition assumed for sortedness of keyProps array\n for (let i = 0; i < this.keyProps.length; i++) {\n const thisLine = this.keyProps[i].line;\n if (isTopNote) {\n if (thisLine > resultLine)\n resultLine = thisLine;\n }\n else {\n if (thisLine < resultLine)\n resultLine = thisLine;\n }\n }\n return resultLine;\n }\n /**\n * @returns true if this note is a type of rest. Rests don't have pitches, but take up space in the score.\n */\n isRest() {\n return this.glyph.rest;\n }\n // Determine if the current note is a chord\n isChord() {\n return !this.isRest() && this.keys.length > 1;\n }\n // Determine if the `StaveNote` has a stem\n hasStem() {\n return this.glyph.stem;\n }\n hasFlag() {\n return super.hasFlag() && !this.isRest();\n }\n getStemX() {\n if (this.noteType === 'r') {\n return this.getCenterGlyphX();\n }\n else {\n // We adjust the origin of the stem because we want the stem left-aligned\n // with the notehead if stemmed-down, and right-aligned if stemmed-up\n return super.getStemX() + (this.stem_direction ? Stem.WIDTH / (2 * -this.stem_direction) : 0);\n }\n }\n // Get the `y` coordinate for text placed on the top/bottom of a\n // note at a desired `text_line`\n getYForTopText(textLine) {\n const extents = this.getStemExtents();\n return Math.min(this.checkStave().getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1));\n }\n getYForBottomText(textLine) {\n const extents = this.getStemExtents();\n return Math.max(this.checkStave().getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine);\n }\n // Sets the current note to the provided `stave`. This applies\n // `y` values to the `NoteHeads`.\n setStave(stave) {\n super.setStave(stave);\n const ys = this._noteHeads.map((notehead) => {\n notehead.setStave(stave);\n return notehead.getY();\n });\n this.setYs(ys);\n if (this.stem) {\n const { y_top, y_bottom } = this.getNoteHeadBounds();\n this.stem.setYBounds(y_top, y_bottom);\n }\n return this;\n }\n // Check if note is shifted to the right\n isDisplaced() {\n return this.displaced;\n }\n // Sets whether shift note to the right. `displaced` is a `boolean`\n setNoteDisplaced(displaced) {\n this.displaced = displaced;\n return this;\n }\n // Get the starting `x` coordinate for a `StaveTie`\n getTieRightX() {\n let tieStartX = this.getAbsoluteX();\n tieStartX += this.getGlyphWidth() + this.x_shift + this.rightDisplacedHeadPx;\n if (this.modifierContext)\n tieStartX += this.modifierContext.getRightShift();\n return tieStartX;\n }\n // Get the ending `x` coordinate for a `StaveTie`\n getTieLeftX() {\n let tieEndX = this.getAbsoluteX();\n tieEndX += this.x_shift - this.leftDisplacedHeadPx;\n return tieEndX;\n }\n // Get the stave line on which to place a rest\n getLineForRest() {\n let restLine = this.keyProps[0].line;\n if (this.keyProps.length > 1) {\n const lastLine = this.keyProps[this.keyProps.length - 1].line;\n const top = Math.max(restLine, lastLine);\n const bot = Math.min(restLine, lastLine);\n restLine = midLine(top, bot);\n }\n return restLine;\n }\n // Get the default `x` and `y` coordinates for the provided `position`\n // and key `index`\n getModifierStartXY(position, index, options = {}) {\n var _a, _b;\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-Values calculated for this note.');\n }\n const { ABOVE, BELOW, LEFT, RIGHT } = Modifier.Position;\n let x = 0;\n if (position === LEFT) {\n // FIXME: Left modifier padding, move to font file\n x = -1 * 2;\n }\n else if (position === RIGHT) {\n // FIXME: Right modifier padding, move to font file\n x = this.getGlyphWidth() + this.x_shift + 2;\n if (this.stem_direction === Stem.UP &&\n this.hasFlag() &&\n (options.forceFlagRight || isInnerNoteIndex(this, index))) {\n x += (_b = (_a = this === null || this === void 0 ? void 0 : this.flag) === null || _a === void 0 ? void 0 : _a.getMetrics().width) !== null && _b !== void 0 ? _b : 0;\n }\n }\n else if (position === BELOW || position === ABOVE) {\n x = this.getGlyphWidth() / 2;\n }\n return {\n x: this.getAbsoluteX() + x,\n y: this.ys[index],\n };\n }\n // Sets the style of the complete StaveNote, including all keys\n // and the stem.\n setStyle(style) {\n return super.setGroupStyle(style);\n }\n setStemStyle(style) {\n const stem = this.getStem();\n if (stem)\n stem.setStyle(style);\n return this;\n }\n getStemStyle() {\n var _a;\n return (_a = this.stem) === null || _a === void 0 ? void 0 : _a.getStyle();\n }\n setLedgerLineStyle(style) {\n this.ledgerLineStyle = style;\n }\n getLedgerLineStyle() {\n return this.ledgerLineStyle;\n }\n setFlagStyle(style) {\n var _a;\n (_a = this.flag) === null || _a === void 0 ? void 0 : _a.setStyle(style);\n }\n getFlagStyle() {\n var _a;\n return (_a = this.flag) === null || _a === void 0 ? void 0 : _a.getStyle();\n }\n // Sets the notehead at `index` to the provided coloring `style`.\n //\n // `style` is an `object` with the following properties: `shadowColor`,\n // `shadowBlur`, `fillStyle`, `strokeStyle`\n setKeyStyle(index, style) {\n this._noteHeads[index].setStyle(style);\n return this;\n }\n setKeyLine(index, line) {\n this.keyProps[index].line = line;\n this.reset();\n return this;\n }\n getKeyLine(index) {\n return this.keyProps[index].line;\n }\n // Get the width of the note if it is displaced. Used for `Voice`\n // formatting\n getVoiceShiftWidth() {\n // TODO: may need to accommodate for dot here.\n return this.getGlyphWidth() * (this.displaced ? 2 : 1);\n }\n // Calculates and sets the extra pixels to the left or right\n // if the note is displaced.\n calcNoteDisplacements() {\n this.setLeftDisplacedHeadPx(this.displaced && this.stem_direction === Stem.DOWN ? this.getGlyphWidth() : 0);\n // For upstems with flags, the extra space is unnecessary, since it's taken\n // up by the flag.\n this.setRightDisplacedHeadPx(!this.hasFlag() && this.displaced && this.stem_direction === Stem.UP ? this.getGlyphWidth() : 0);\n }\n // Pre-render formatting\n preFormat() {\n if (this.preFormatted)\n return;\n let noteHeadPadding = 0;\n if (this.modifierContext) {\n this.modifierContext.preFormat();\n // If there are no modifiers on this note, make sure there is adequate padding\n // between the notes.\n if (this.modifierContext.getWidth() === 0) {\n noteHeadPadding = StaveNote.minNoteheadPadding;\n }\n }\n let width = this.getGlyphWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx + noteHeadPadding;\n // For upward flagged notes, the width of the flag needs to be added\n if (this.shouldDrawFlag() && this.stem_direction === Stem.UP) {\n width += this.getGlyphWidth();\n // TODO: Add flag width as a separate metric\n }\n this.setWidth(width);\n this.preFormatted = true;\n }\n /**\n * @typedef {Object} noteHeadBounds\n * @property {number} y_top the highest notehead bound\n * @property {number} y_bottom the lowest notehead bound\n * @property {number|Null} displaced_x the starting x for displaced noteheads\n * @property {number|Null} non_displaced_x the starting x for non-displaced noteheads\n * @property {number} highest_line the highest notehead line in traditional music line\n * numbering (bottom line = 1, top line = 5)\n * @property {number} lowest_line the lowest notehead line\n * @property {number|false} highest_displaced_line the highest staff line number\n * for a displaced notehead\n * @property {number|false} lowest_displaced_line\n * @property {number} highest_non_displaced_line\n * @property {number} lowest_non_displaced_line\n */\n /**\n * Get the staff line and y value for the highest & lowest noteheads\n * @returns {noteHeadBounds}\n */\n getNoteHeadBounds() {\n // Top and bottom Y values for stem.\n let yTop = +Infinity;\n let yBottom = -Infinity;\n let nonDisplacedX;\n let displacedX;\n let highestLine = this.checkStave().getNumLines();\n let lowestLine = 1;\n let highestDisplacedLine;\n let lowestDisplacedLine;\n let highestNonDisplacedLine = highestLine;\n let lowestNonDisplacedLine = lowestLine;\n this._noteHeads.forEach((notehead) => {\n const line = notehead.getLine();\n const y = notehead.getY();\n yTop = Math.min(y, yTop);\n yBottom = Math.max(y, yBottom);\n if (displacedX === undefined && notehead.isDisplaced()) {\n displacedX = notehead.getAbsoluteX();\n }\n if (nonDisplacedX === undefined && !notehead.isDisplaced()) {\n nonDisplacedX = notehead.getAbsoluteX();\n }\n highestLine = Math.max(line, highestLine);\n lowestLine = Math.min(line, lowestLine);\n if (notehead.isDisplaced()) {\n highestDisplacedLine = highestDisplacedLine === undefined ? line : Math.max(line, highestDisplacedLine);\n lowestDisplacedLine = lowestDisplacedLine === undefined ? line : Math.min(line, lowestDisplacedLine);\n }\n else {\n highestNonDisplacedLine = Math.max(line, highestNonDisplacedLine);\n lowestNonDisplacedLine = Math.min(line, lowestNonDisplacedLine);\n }\n }, this);\n return {\n y_top: yTop,\n y_bottom: yBottom,\n displaced_x: displacedX,\n non_displaced_x: nonDisplacedX,\n highest_line: highestLine,\n lowest_line: lowestLine,\n highest_displaced_line: highestDisplacedLine,\n lowest_displaced_line: lowestDisplacedLine,\n highest_non_displaced_line: highestNonDisplacedLine,\n lowest_non_displaced_line: lowestNonDisplacedLine,\n };\n }\n // Get the starting `x` coordinate for the noteheads\n getNoteHeadBeginX() {\n return this.getAbsoluteX() + this.x_shift;\n }\n // Get the ending `x` coordinate for the noteheads\n getNoteHeadEndX() {\n const xBegin = this.getNoteHeadBeginX();\n return xBegin + this.getGlyphWidth();\n }\n get noteHeads() {\n return this._noteHeads.slice();\n }\n /** @deprecated use StaveNote.noteHeads instead. */\n get note_heads() {\n showDeprecationWarningForNoteHeads();\n return this.noteHeads;\n }\n // Draw the ledger lines between the stave and the highest/lowest keys\n drawLedgerLines() {\n const stave = this.checkStave();\n const { glyph, render_options: { stroke_px }, } = this;\n const ctx = this.checkContext();\n const width = glyph.getWidth() + stroke_px * 2;\n const doubleWidth = 2 * (glyph.getWidth() + stroke_px) - Stem.WIDTH / 2;\n if (this.isRest())\n return;\n if (!ctx) {\n throw new RuntimeError('NoCanvasContext', \"Can't draw without a canvas context.\");\n }\n const { highest_line, lowest_line, highest_displaced_line, highest_non_displaced_line, lowest_displaced_line, lowest_non_displaced_line, displaced_x, non_displaced_x, } = this.getNoteHeadBounds();\n // Early out if there are no ledger lines to draw.\n if (highest_line < 6 && lowest_line > 0)\n return;\n const min_x = Math.min(displaced_x !== null && displaced_x !== void 0 ? displaced_x : 0, non_displaced_x !== null && non_displaced_x !== void 0 ? non_displaced_x : 0);\n const drawLedgerLine = (y, normal, displaced) => {\n let x;\n if (displaced && normal)\n x = min_x - stroke_px;\n else if (normal)\n x = (non_displaced_x !== null && non_displaced_x !== void 0 ? non_displaced_x : 0) - stroke_px;\n else\n x = (displaced_x !== null && displaced_x !== void 0 ? displaced_x : 0) - stroke_px;\n const ledgerWidth = normal && displaced ? doubleWidth : width;\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.lineTo(x + ledgerWidth, y);\n ctx.stroke();\n };\n const style = Object.assign(Object.assign({}, stave.getDefaultLedgerLineStyle()), this.getLedgerLineStyle());\n this.applyStyle(ctx, style);\n // Draw ledger lines below the staff:\n for (let line = 6; line <= highest_line; ++line) {\n const normal = non_displaced_x !== undefined && line <= highest_non_displaced_line;\n const displaced = highest_displaced_line !== undefined && line <= highest_displaced_line;\n drawLedgerLine(stave.getYForNote(line), normal, displaced);\n }\n // Draw ledger lines above the staff:\n for (let line = 0; line >= lowest_line; --line) {\n const normal = non_displaced_x !== undefined && line >= lowest_non_displaced_line;\n const displaced = lowest_displaced_line !== undefined && line >= lowest_displaced_line;\n drawLedgerLine(stave.getYForNote(line), normal, displaced);\n }\n this.restoreStyle(ctx, style);\n }\n // Draw all key modifiers\n drawModifiers(noteheadParam) {\n const ctx = this.checkContext();\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n const index = modifier.checkIndex();\n const notehead = this._noteHeads[index];\n if (notehead == noteheadParam) {\n const noteheadStyle = notehead.getStyle();\n notehead.applyStyle(ctx, noteheadStyle);\n modifier.setContext(ctx);\n modifier.drawWithStyle();\n notehead.restoreStyle(ctx, noteheadStyle);\n }\n }\n }\n shouldDrawFlag() {\n const hasStem = this.stem !== undefined;\n const hasFlag = this.glyph.flag; // specified in tables.js\n const hasNoBeam = this.beam === undefined;\n return hasStem && hasFlag && hasNoBeam;\n }\n // Draw the flag for the note\n drawFlag() {\n var _a, _b, _c, _d, _e;\n const ctx = this.checkContext();\n if (!ctx) {\n throw new RuntimeError('NoCanvasContext', \"Can't draw without a canvas context.\");\n }\n if (this.shouldDrawFlag()) {\n const { y_top, y_bottom } = this.getNoteHeadBounds();\n // eslint-disable-next-line\n const noteStemHeight = this.stem.getHeight();\n const flagX = this.getStemX();\n // What's with the magic +/- 2\n // ANSWER: a corner of the note stem pokes out beyond the tip of the flag.\n // The extra +/- 2 pushes the flag glyph outward so it covers the stem entirely.\n // Alternatively, we could shorten the stem.\n const flagY = this.getStemDirection() === Stem.DOWN\n ? // Down stems are below the note head and have flags on the right.\n y_top -\n noteStemHeight +\n 2 -\n (this.glyph ? this.glyph.stem_down_extension : 0) * this.getStaveNoteScale() -\n ((_b = (_a = this.flag) === null || _a === void 0 ? void 0 : _a.getMetrics().y_shift) !== null && _b !== void 0 ? _b : 0) * (1 - this.getStaveNoteScale())\n : // Up stems are above the note head and have flags on the right.\n y_bottom -\n noteStemHeight -\n 2 +\n (this.glyph ? this.glyph.stem_up_extension : 0) * this.getStaveNoteScale() -\n ((_d = (_c = this.flag) === null || _c === void 0 ? void 0 : _c.getMetrics().y_shift) !== null && _d !== void 0 ? _d : 0) * (1 - this.getStaveNoteScale());\n // Draw the Flag\n (_e = this.flag) === null || _e === void 0 ? void 0 : _e.render(ctx, flagX, flagY);\n }\n }\n // Draw the NoteHeads\n drawNoteHeads() {\n const ctx = this.checkContext();\n this._noteHeads.forEach((notehead) => {\n ctx.openGroup('notehead', notehead.getAttribute('id'), { pointerBBox: true });\n notehead.setContext(ctx).draw();\n this.drawModifiers(notehead);\n ctx.closeGroup();\n });\n }\n drawStem(stemOptions) {\n // GCR TODO: I can't find any context in which this is called with the stemStruct\n // argument in the codebase or tests. Nor can I find a case where super.drawStem\n // is called at all. Perhaps these should be removed?\n const ctx = this.checkContext();\n if (stemOptions) {\n this.setStem(new Stem(stemOptions));\n }\n // If we will render a flag, we shorten the stem so that the tip\n // does not poke through the flag.\n if (this.shouldDrawFlag() && this.stem) {\n this.stem.adjustHeightForFlag();\n }\n if (this.stem) {\n this.stem.setContext(ctx).draw();\n }\n }\n /** Primarily used as the scaling factor for grace notes, GraceNote will return the required scale. */\n getStaveNoteScale() {\n return 1.0;\n }\n /**\n * Override stemmablenote stem extension to adjust for distance from middle line.\n */\n getStemExtension() {\n const super_stem_extension = super.getStemExtension();\n if (!this.glyph.stem) {\n return super_stem_extension;\n }\n const stem_direction = this.getStemDirection();\n if (stem_direction !== this.calculateOptimalStemDirection()) {\n return super_stem_extension; // no adjustment for manually set stem direction.\n }\n let mid_line_distance;\n const MIDDLE_LINE = 3;\n if (stem_direction === Stem.UP) {\n // Note that the use of maxLine here instead of minLine might\n // seem counterintuitive, but in the case of (say) treble clef\n // chord(F2, E4) stem up, we do not want to extend the stem because\n // of F2, when a normal octave-length stem above E4 is fine.\n //\n // maxLine and minLine are set in calculateOptimalStemDirection() so\n // will be known.\n mid_line_distance = MIDDLE_LINE - this.maxLine;\n }\n else {\n mid_line_distance = this.minLine - MIDDLE_LINE;\n }\n // how many lines more than an octave is the relevant notehead?\n const lines_over_octave_from_mid_line = mid_line_distance - 3.5;\n if (lines_over_octave_from_mid_line <= 0) {\n return super_stem_extension;\n }\n const stave = this.getStave();\n let spacing_between_lines = 10;\n if (stave != undefined) {\n spacing_between_lines = stave.getSpacingBetweenLines();\n }\n return super_stem_extension + lines_over_octave_from_mid_line * spacing_between_lines;\n }\n // Draws all the `StaveNote` parts. This is the main drawing method.\n draw() {\n if (this.render_options.draw === false)\n return;\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', \"Can't draw note without Y values.\");\n }\n const ctx = this.checkContext();\n const xBegin = this.getNoteHeadBeginX();\n const shouldRenderStem = this.hasStem() && !this.beam;\n // Format note head x positions\n this._noteHeads.forEach((notehead) => notehead.setX(xBegin));\n if (this.stem) {\n // Format stem x positions\n const stemX = this.getStemX();\n this.stem.setNoteHeadXBounds(stemX, stemX);\n }\n L('Rendering ', this.isChord() ? 'chord :' : 'note :', this.keys);\n // Apply the overall style -- may be contradicted by local settings:\n this.applyStyle();\n ctx.openGroup('stavenote', this.getAttribute('id'));\n this.drawLedgerLines();\n if (shouldRenderStem)\n this.drawStem();\n this.drawNoteHeads();\n this.drawFlag();\n ctx.closeGroup();\n this.restoreStyle();\n this.setRendered();\n }\n}\nStaveNote.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveTie extends Element {\n /**\n * @param notes is a struct that has:\n *\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n *\n * @param text\n */\n constructor(notes, text) {\n super();\n this.setNotes(notes);\n this.text = text;\n this.render_options = {\n cp1: 8,\n cp2: 12,\n text_shift_x: 0,\n first_x_shift: 0,\n last_x_shift: 0,\n y_shift: 7,\n tie_spacing: 0,\n };\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveTie;\n }\n setDirection(direction) {\n this.direction = direction;\n return this;\n }\n /**\n * Set the notes to attach this tie to.\n *\n * @param {!Object} notes The notes to tie up.\n */\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Tie needs to have either first_note or last_note set.');\n }\n if (!notes.first_indices) {\n notes.first_indices = [0];\n }\n if (!notes.last_indices) {\n notes.last_indices = [0];\n }\n if (notes.first_indices.length !== notes.last_indices.length) {\n throw new RuntimeError('BadArguments', 'Tied notes must have same number of indices.');\n }\n this.notes = notes;\n return this;\n }\n /**\n * @return {boolean} Returns true if this is a partial bar.\n */\n isPartial() {\n return !this.notes.first_note || !this.notes.last_note;\n }\n renderTie(params) {\n if (params.first_ys.length === 0 || params.last_ys.length === 0) {\n throw new RuntimeError('BadArguments', 'No Y-values to render');\n }\n const ctx = this.checkContext();\n let cp1 = this.render_options.cp1;\n let cp2 = this.render_options.cp2;\n if (Math.abs(params.last_x_px - params.first_x_px) < 10) {\n cp1 = 2;\n cp2 = 8;\n }\n const first_x_shift = this.render_options.first_x_shift;\n const last_x_shift = this.render_options.last_x_shift;\n const y_shift = this.render_options.y_shift * params.direction;\n // setNotes(...) verified that first_indices and last_indices are not undefined.\n // As a result, we use the ! non-null assertion operator here.\n // eslint-disable-next-line\n const first_indices = this.notes.first_indices;\n // eslint-disable-next-line\n const last_indices = this.notes.last_indices;\n for (let i = 0; i < first_indices.length; ++i) {\n const cp_x = (params.last_x_px + last_x_shift + (params.first_x_px + first_x_shift)) / 2;\n const first_y_px = params.first_ys[first_indices[i]] + y_shift;\n const last_y_px = params.last_ys[last_indices[i]] + y_shift;\n if (isNaN(first_y_px) || isNaN(last_y_px)) {\n throw new RuntimeError('BadArguments', 'Bad indices for tie rendering.');\n }\n const top_cp_y = (first_y_px + last_y_px) / 2 + cp1 * params.direction;\n const bottom_cp_y = (first_y_px + last_y_px) / 2 + cp2 * params.direction;\n ctx.openGroup('stavetie', this.getAttribute('id'));\n ctx.beginPath();\n ctx.moveTo(params.first_x_px + first_x_shift, first_y_px);\n ctx.quadraticCurveTo(cp_x, top_cp_y, params.last_x_px + last_x_shift, last_y_px);\n ctx.quadraticCurveTo(cp_x, bottom_cp_y, params.first_x_px + first_x_shift, first_y_px);\n ctx.closePath();\n ctx.fill();\n ctx.closeGroup();\n }\n }\n renderText(first_x_px, last_x_px) {\n var _a, _b, _c;\n if (!this.text)\n return;\n const ctx = this.checkContext();\n let center_x = (first_x_px + last_x_px) / 2;\n center_x -= ctx.measureText(this.text).width / 2;\n const stave = (_b = (_a = this.notes.first_note) === null || _a === void 0 ? void 0 : _a.checkStave()) !== null && _b !== void 0 ? _b : (_c = this.notes.last_note) === null || _c === void 0 ? void 0 : _c.checkStave();\n if (stave) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText(this.text, center_x + this.render_options.text_shift_x, stave.getYForTopText() - 1);\n ctx.restore();\n }\n }\n /**\n * Returns the TieNotes structure of the first and last note this tie connects.\n */\n getNotes() {\n return this.notes;\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const first_note = this.notes.first_note;\n const last_note = this.notes.last_note;\n // Provide some default values so the compiler doesn't complain.\n let first_x_px = 0;\n let last_x_px = 0;\n let first_ys = [0];\n let last_ys = [0];\n let stem_direction = 0;\n if (first_note) {\n first_x_px = first_note.getTieRightX() + this.render_options.tie_spacing;\n stem_direction = first_note.getStemDirection();\n first_ys = first_note.getYs();\n }\n else if (last_note) {\n const stave = last_note.checkStave();\n first_x_px = stave.getTieStartX();\n first_ys = last_note.getYs();\n this.notes.first_indices = this.notes.last_indices;\n }\n if (last_note) {\n last_x_px = last_note.getTieLeftX() + this.render_options.tie_spacing;\n stem_direction = last_note.getStemDirection();\n last_ys = last_note.getYs();\n }\n else if (first_note) {\n const stave = first_note.checkStave();\n last_x_px = stave.getTieEndX();\n last_ys = first_note.getYs();\n this.notes.last_indices = this.notes.first_indices;\n }\n if (this.direction) {\n stem_direction = this.direction;\n }\n this.renderTie({\n first_x_px,\n last_x_px,\n first_ys,\n last_ys,\n direction: stem_direction,\n });\n this.renderText(first_x_px, last_x_px);\n return true;\n }\n}\n/** Default text font. */\nStaveTie.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","// / [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { StaveTie } from './stavetie';\nimport { Category } from './typeguard';\nexport class TabTie extends StaveTie {\n static get CATEGORY() {\n return Category.TabTie;\n }\n static createHammeron(notes) {\n return new TabTie(notes, 'H');\n }\n static createPulloff(notes) {\n return new TabTie(notes, 'P');\n }\n /**\n * @param notes is a struct that has:\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n *\n * @param text\n */\n constructor(notes, text) {\n super(notes, text);\n this.render_options.cp1 = 9;\n this.render_options.cp2 = 11;\n this.render_options.y_shift = 3;\n this.direction = -1; // Tab tie's are always face up.\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var VoiceMode;\n(function (VoiceMode) {\n VoiceMode[VoiceMode[\"STRICT\"] = 1] = \"STRICT\";\n VoiceMode[VoiceMode[\"SOFT\"] = 2] = \"SOFT\";\n VoiceMode[VoiceMode[\"FULL\"] = 3] = \"FULL\";\n})(VoiceMode || (VoiceMode = {}));\n/**\n * `Voice` is mainly a container object to group `Tickables` for formatting.\n */\nexport class Voice extends Element {\n constructor(time) {\n super();\n this.resolutionMultiplier = 1;\n this.mode = VoiceMode.STRICT;\n this.preFormatted = false;\n this.ticksUsed = new Fraction(0, 1);\n this.largestTickWidth = 0;\n this.tickables = [];\n this.options = {\n softmaxFactor: Tables.SOFTMAX_FACTOR,\n };\n // Convert the `time` string into a VoiceTime object if necessary.\n let voiceTime;\n if (typeof time === 'string') {\n // Time signature shortcut: \"4/4\", \"3/8\", etc.\n const match = time.match(/(\\d+)\\/(\\d+)/);\n if (match) {\n voiceTime = {\n num_beats: parseInt(match[1]),\n beat_value: parseInt(match[2]),\n };\n }\n }\n else {\n voiceTime = time;\n }\n // Default time signature is 4/4.\n this.time = Object.assign({ num_beats: 4, beat_value: 4, resolution: Tables.RESOLUTION }, voiceTime);\n // Recalculate total ticks.\n this.totalTicks = new Fraction(this.time.num_beats * (this.time.resolution / this.time.beat_value), 1);\n this.smallestTickCount = this.totalTicks.clone();\n }\n static get CATEGORY() {\n return Category.Voice;\n }\n /**\n * Modes allow the addition of ticks in three different ways:\n * - STRICT: This is the default. Ticks must fill the voice.\n * - SOFT: Ticks can be added without restrictions.\n * - FULL: Ticks do not need to fill the voice, but can't exceed the maximum tick length.\n */\n static get Mode() {\n return VoiceMode;\n }\n /** Get the total ticks in the voice. */\n getTotalTicks() {\n return this.totalTicks;\n }\n /** Get the total ticks used in the voice by all the tickables. */\n getTicksUsed() {\n return this.ticksUsed;\n }\n /** Get the largest width of all the tickables. */\n getLargestTickWidth() {\n return this.largestTickWidth;\n }\n /** Get the tick count for the shortest tickable */\n getSmallestTickCount() {\n return this.smallestTickCount;\n }\n /** Get the tickables in the voice. */\n getTickables() {\n return this.tickables;\n }\n /** Get the voice mode. */\n getMode() {\n return this.mode;\n }\n /**\n * Set the voice mode.\n * @param mode value from `VoiceMode`\n */\n setMode(mode) {\n this.mode = mode;\n return this;\n }\n /** Get the resolution multiplier for the voice. */\n getResolutionMultiplier() {\n return this.resolutionMultiplier;\n }\n /** Get the actual tick resolution for the voice. */\n getActualResolution() {\n return this.resolutionMultiplier * this.time.resolution;\n }\n /** Set the voice's stave. */\n setStave(stave) {\n this.stave = stave;\n // Reset the bounding box so we can reformat.\n this.boundingBox = undefined;\n return this;\n }\n getStave() {\n return this.stave;\n }\n /** Get the bounding box for the voice. */\n getBoundingBox() {\n if (!this.boundingBox) {\n const stave = this.checkStave();\n let boundingBox = undefined;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n tickable.setStave(stave);\n const bb = tickable.getBoundingBox();\n if (bb) {\n boundingBox = boundingBox ? boundingBox.mergeWith(bb) : bb;\n }\n }\n this.boundingBox = boundingBox;\n }\n return this.boundingBox;\n }\n /** Set the voice mode to strict or soft. */\n setStrict(strict) {\n this.mode = strict ? VoiceMode.STRICT : VoiceMode.SOFT;\n return this;\n }\n /** Determine if the voice is complete according to the voice mode. */\n isComplete() {\n if (this.mode === VoiceMode.STRICT || this.mode === VoiceMode.FULL) {\n return this.ticksUsed.equals(this.totalTicks);\n }\n else {\n return true;\n }\n }\n /**\n * We use softmax to layout the tickables proportional to the exponent of\n * their duration. The softmax factor is used to determine the 'linearness' of\n * the layout.\n *\n * The softmax of all the tickables in this voice should sum to 1.\n */\n setSoftmaxFactor(factor) {\n this.options.softmaxFactor = factor;\n return this;\n }\n /**\n * Calculate the sum of the exponents of all the ticks in this voice to use\n * as the denominator of softmax.\n */\n reCalculateExpTicksUsed() {\n const totalTicks = this.ticksUsed.value();\n const exp = (tickable) => Math.pow(this.options.softmaxFactor, tickable.getTicks().value() / totalTicks);\n this.expTicksUsed = this.tickables.map(exp).reduce((a, b) => a + b, 0);\n return this.expTicksUsed;\n }\n /** Get the softmax-scaled value of a tick duration. 'tickValue' is a number. */\n softmax(tickValue) {\n if (!this.expTicksUsed) {\n this.expTicksUsed = this.reCalculateExpTicksUsed();\n }\n const totalTicks = this.ticksUsed.value();\n const exp = (v) => Math.pow(this.options.softmaxFactor, v / totalTicks);\n const sm = exp(tickValue) / this.expTicksUsed;\n return sm;\n }\n /** Add a tickable to the voice. */\n addTickable(tickable) {\n if (!tickable.shouldIgnoreTicks()) {\n const ticks = tickable.getTicks();\n // Update the total ticks for this line.\n this.ticksUsed.add(ticks);\n this.expTicksUsed = 0; // reset\n if ((this.mode === VoiceMode.STRICT || this.mode === VoiceMode.FULL) &&\n this.ticksUsed.greaterThan(this.totalTicks)) {\n this.ticksUsed.subtract(ticks);\n throw new RuntimeError('BadArgument', 'Too many ticks.');\n }\n // Track the smallest tickable for formatting.\n if (ticks.lessThan(this.smallestTickCount)) {\n this.smallestTickCount = ticks.clone();\n }\n this.resolutionMultiplier = this.ticksUsed.denominator;\n // Expand total ticks using denominator from ticks used.\n this.totalTicks.add(0, this.ticksUsed.denominator);\n }\n // Add the tickable to the line.\n this.tickables.push(tickable);\n tickable.setVoice(this);\n return this;\n }\n /** Add an array of tickables to the voice. */\n addTickables(tickables) {\n for (let i = 0; i < tickables.length; ++i) {\n this.addTickable(tickables[i]);\n }\n return this;\n }\n /** Preformat the voice by applying the voice's stave to each note. */\n preFormat() {\n if (this.preFormatted)\n return this;\n const stave = this.checkStave();\n this.tickables.forEach((tickable) => {\n if (!tickable.getStave()) {\n tickable.setStave(stave);\n }\n });\n this.preFormatted = true;\n return this;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n /**\n * Render the voice onto the canvas `context` and an optional `stave`.\n * If `stave` is omitted, it is expected that the notes have staves\n * already set.\n *\n * This method also calculates the voice's boundingBox while drawing\n * the notes. Note the similarities with this.getBoundingBox().\n */\n draw(context = this.checkContext(), stave) {\n stave = stave !== null && stave !== void 0 ? stave : this.stave;\n this.setRendered();\n let boundingBox = undefined;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n // Set the stave if provided.\n if (stave) {\n tickable.setStave(stave);\n }\n defined(tickable.getStave(), 'MissingStave', 'The voice cannot draw tickables without staves.');\n const bb = tickable.getBoundingBox();\n if (bb) {\n boundingBox = boundingBox ? boundingBox.mergeWith(bb) : bb;\n }\n tickable.setContext(context);\n tickable.drawWithStyle();\n }\n this.boundingBox = boundingBox;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This file implements `GraceNoteGroup` which is used to format and\n// render grace notes.\nimport { Beam } from './beam';\nimport { Formatter } from './formatter';\nimport { Modifier } from './modifier';\nimport { StaveNote } from './stavenote';\nimport { StaveTie } from './stavetie';\nimport { Tables } from './tables';\nimport { TabTie } from './tabtie';\nimport { Category, isStaveNote } from './typeguard';\nimport { log } from './util';\nimport { Voice } from './voice';\n// To enable logging for this class. Set `GraceNoteGroup.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (GraceNoteGroup.DEBUG)\n log('Vex.Flow.GraceNoteGroup', args);\n}\n/** GraceNoteGroup is used to format and render grace notes. */\nexport class GraceNoteGroup extends Modifier {\n //** `GraceNoteGroup` inherits from `Modifier` and is placed inside a `ModifierContext`. */\n constructor(grace_notes, show_slur) {\n super();\n this.preFormatted = false;\n this.position = Modifier.Position.LEFT;\n this.grace_notes = grace_notes;\n this.width = 0;\n this.show_slur = show_slur;\n this.slur = undefined;\n this.voice = new Voice({\n num_beats: 4,\n beat_value: 4,\n resolution: Tables.RESOLUTION,\n }).setStrict(false);\n this.render_options = {\n slur_y_shift: 0,\n };\n this.beams = [];\n this.voice.addTickables(this.grace_notes);\n return this;\n }\n static get CATEGORY() {\n return Category.GraceNoteGroup;\n }\n /** Arranges groups inside a `ModifierContext`. */\n static format(gracenote_groups, state) {\n const group_spacing_stave = 4;\n const group_spacing_tab = 0;\n if (!gracenote_groups || gracenote_groups.length === 0)\n return false;\n const group_list = [];\n let prev_note = null;\n let shiftL = 0;\n for (let i = 0; i < gracenote_groups.length; ++i) {\n const gracenote_group = gracenote_groups[i];\n const note = gracenote_group.getNote();\n const is_stavenote = isStaveNote(note);\n const spacing = is_stavenote ? group_spacing_stave : group_spacing_tab;\n if (is_stavenote && note !== prev_note) {\n // Iterate through all notes to get the displaced pixels\n for (let n = 0; n < note.keys.length; ++n) {\n shiftL = Math.max(note.getLeftDisplacedHeadPx(), shiftL);\n }\n prev_note = note;\n }\n group_list.push({ shift: shiftL, gracenote_group, spacing });\n }\n // If first note left shift in case it is displaced\n let group_shift = group_list[0].shift;\n let formatWidth;\n for (let i = 0; i < group_list.length; ++i) {\n const gracenote_group = group_list[i].gracenote_group;\n gracenote_group.preFormat();\n formatWidth = gracenote_group.getWidth() + group_list[i].spacing;\n group_shift = Math.max(formatWidth, group_shift);\n }\n for (let i = 0; i < group_list.length; ++i) {\n const gracenote_group = group_list[i].gracenote_group;\n formatWidth = gracenote_group.getWidth() + group_list[i].spacing;\n gracenote_group.setSpacingFromNextModifier(group_shift - Math.min(formatWidth, group_shift) + StaveNote.minNoteheadPadding);\n }\n state.left_shift += group_shift;\n return true;\n }\n preFormat() {\n if (this.preFormatted)\n return;\n if (!this.formatter) {\n this.formatter = new Formatter();\n }\n this.formatter.joinVoices([this.voice]).format([this.voice], 0, {});\n this.setWidth(this.formatter.getMinTotalWidth());\n this.preFormatted = true;\n }\n beamNotes(grace_notes) {\n grace_notes = grace_notes || this.grace_notes;\n if (grace_notes.length > 1) {\n const beam = new Beam(grace_notes);\n beam.render_options.beam_width = 3;\n beam.render_options.partial_beam_length = 4;\n this.beams.push(beam);\n }\n return this;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getWidth() {\n return this.width + StaveNote.minNoteheadPadding;\n }\n getGraceNotes() {\n return this.grace_notes;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n L('Drawing grace note group for:', note);\n this.alignSubNotesWithNote(this.getGraceNotes(), note); // Modifier function\n // Draw grace notes.\n this.grace_notes.forEach((graceNote) => graceNote.setContext(ctx).draw());\n // Draw beams.\n this.beams.forEach((beam) => beam.setContext(ctx).draw());\n if (this.show_slur) {\n // Create and draw slur.\n const is_stavenote = isStaveNote(note);\n const TieClass = is_stavenote ? StaveTie : TabTie;\n this.slur = new TieClass({\n last_note: this.grace_notes[0],\n first_note: note,\n first_indices: [0],\n last_indices: [0],\n });\n this.slur.render_options.cp2 = 12;\n this.slur.render_options.y_shift = (is_stavenote ? 7 : 5) + this.render_options.slur_y_shift;\n this.slur.setContext(ctx).draw();\n }\n }\n}\nGraceNoteGroup.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2016\n//\n// ## Description\n//\n// This file implements `NoteSubGroup` which is used to format and\n// render notes as a `Modifier`\n// ex) ClefNote, TimeSigNote and BarNote.\nimport { Formatter } from './formatter';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { Voice } from './voice';\nexport class NoteSubGroup extends Modifier {\n constructor(subNotes) {\n super();\n this.preFormatted = false;\n this.position = Modifier.Position.LEFT;\n this.subNotes = subNotes;\n this.subNotes.forEach((subNote) => {\n subNote.setIgnoreTicks(false);\n });\n this.width = 0;\n this.formatter = new Formatter();\n this.voice = new Voice({\n num_beats: 4,\n beat_value: 4,\n resolution: Tables.RESOLUTION,\n }).setStrict(false);\n this.voice.addTickables(this.subNotes);\n }\n static get CATEGORY() {\n return Category.NoteSubGroup;\n }\n // Arrange groups inside a `ModifierContext`\n static format(groups, state) {\n if (!groups || groups.length === 0)\n return false;\n let width = 0;\n for (let i = 0; i < groups.length; ++i) {\n const group = groups[i];\n group.preFormat();\n width += group.getWidth();\n }\n state.left_shift += width;\n return true;\n }\n preFormat() {\n if (this.preFormatted)\n return;\n this.formatter.joinVoices([this.voice]).format([this.voice], 0);\n this.setWidth(this.formatter.getMinTotalWidth());\n this.preFormatted = true;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getWidth() {\n return this.width;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n this.alignSubNotesWithNote(this.subNotes, note); // Modifier function\n this.subNotes.forEach((subNote) => subNote.setContext(ctx).drawWithStyle());\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// A formatter for abstract tickable objects, such as notes, chords,\n// tabs, etc.\nimport { Fraction } from './fraction';\nimport { RuntimeError } from './util';\n/**\n * TickContext formats abstract tickable objects, such as notes, chords, tabs, etc.\n */\nexport class TickContext {\n constructor(options) {\n this.preFormatted = false;\n this.postFormatted = false;\n this.tickID = options && options.tickID ? options.tickID : 0;\n this.currentTick = new Fraction(0, 1);\n this.maxTicks = new Fraction(0, 1);\n this.maxTickable = undefined; // Biggest tickable\n this.minTicks = undefined; // this can remian null if all tickables have ignore_ticks\n this.minTickable = undefined;\n this.padding = 1; // padding on each side (width += padding * 2)\n this.x = 0;\n this.xBase = 0; // base x position without xOffset\n this.xOffset = 0; // xBase and xOffset are an alternative way to describe x (x = xB + xO)\n this.tickables = []; // Notes, tabs, chords, lyrics.\n this.tickablesByVoice = {}; // Tickables indexed by voice number\n // Formatting metrics\n this.notePx = 0; // width of widest note in this context\n this.glyphPx = 0; // width of glyph (note head)\n this.leftDisplacedHeadPx = 0; // Extra left pixels for displaced notes\n this.rightDisplacedHeadPx = 0; // Extra right pixels for displaced notes\n this.modLeftPx = 0; // Left modifier pixels\n this.modRightPx = 0; // Right modifier pixels\n this.totalLeftPx = 0; // Total left pixels\n this.totalRightPx = 0; // Total right pixels\n this.tContexts = []; // Parent array of tick contexts\n this.width = 0;\n this.formatterMetrics = {\n // The freedom of a tickcontext is the distance it can move without colliding\n // with neighboring elements. A formatter can set these values during its\n // formatting pass, which a different formatter can then use to fine tune.\n freedom: { left: 0, right: 0 },\n };\n }\n static getNextContext(tContext) {\n const contexts = tContext.tContexts;\n const index = contexts.indexOf(tContext);\n if (index + 1 < contexts.length)\n return contexts[index + 1];\n }\n getTickID() {\n return this.tickID;\n }\n getX() {\n return this.x;\n }\n setX(x) {\n this.x = x;\n this.xBase = x;\n this.xOffset = 0;\n return this;\n }\n getXBase() {\n return this.xBase;\n } // use of xBase and xOffset is optional, avoids offset creep\n setXBase(xBase) {\n this.xBase = xBase;\n this.x = xBase + this.xOffset;\n }\n getXOffset() {\n return this.xOffset;\n }\n setXOffset(xOffset) {\n this.xOffset = xOffset;\n this.x = this.xBase + xOffset;\n }\n getWidth() {\n return this.width + this.padding * 2;\n }\n setPadding(padding) {\n this.padding = padding;\n return this;\n }\n getMaxTicks() {\n return this.maxTicks;\n }\n getMinTicks() {\n return this.minTicks;\n }\n getMaxTickable() {\n return this.maxTickable;\n }\n getMinTickable() {\n return this.minTickable;\n }\n getTickables() {\n return this.tickables;\n }\n /**\n * Introduced on 2020-04-17 as getTickablesForVoice(voiceIndex).\n * https://github.com/0xfe/vexflow/blame/dc97b0cc5bb93171c0038638c34362dc958222ca/src/tickcontext.js#L63\n * Renamed on 2021-08-05 to getTickableForVoice(voiceIndex). Method renamed to singular, since it returns one Tickable.\n */\n getTickableForVoice(voiceIndex) {\n return this.tickablesByVoice[voiceIndex];\n }\n getTickablesByVoice() {\n return this.tickablesByVoice;\n }\n getCenterAlignedTickables() {\n return this.tickables.filter((tickable) => tickable.isCenterAligned());\n }\n /** Gets widths context, note and left/right modifiers for formatting. */\n getMetrics() {\n const { width, glyphPx, notePx, leftDisplacedHeadPx, rightDisplacedHeadPx, modLeftPx, modRightPx, totalLeftPx, totalRightPx, } = this;\n return {\n width,\n glyphPx,\n notePx,\n leftDisplacedHeadPx,\n rightDisplacedHeadPx,\n modLeftPx,\n modRightPx,\n totalLeftPx,\n totalRightPx,\n };\n }\n getCurrentTick() {\n return this.currentTick;\n }\n setCurrentTick(tick) {\n this.currentTick = tick;\n this.preFormatted = false;\n }\n addTickable(tickable, voiceIndex) {\n if (!tickable) {\n throw new RuntimeError('BadArgument', 'Invalid tickable added.');\n }\n if (!tickable.shouldIgnoreTicks()) {\n const ticks = tickable.getTicks();\n if (ticks.greaterThan(this.maxTicks)) {\n this.maxTicks = ticks.clone();\n this.maxTickable = tickable;\n }\n if (this.minTicks == null) {\n this.minTicks = ticks.clone();\n this.minTickable = tickable;\n }\n else if (ticks.lessThan(this.minTicks)) {\n this.minTicks = ticks.clone();\n this.minTickable = tickable;\n }\n }\n tickable.setTickContext(this);\n this.tickables.push(tickable);\n this.tickablesByVoice[voiceIndex || 0] = tickable;\n this.preFormatted = false;\n return this;\n }\n preFormat() {\n if (this.preFormatted)\n return this;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n tickable.preFormat();\n const metrics = tickable.getMetrics();\n // Maintain max displaced head pixels from all tickables in the context\n this.leftDisplacedHeadPx = Math.max(this.leftDisplacedHeadPx, metrics.leftDisplacedHeadPx);\n this.rightDisplacedHeadPx = Math.max(this.rightDisplacedHeadPx, metrics.rightDisplacedHeadPx);\n // Maintain the widest note for all tickables in the context\n this.notePx = Math.max(this.notePx, metrics.notePx);\n // Maintain the widest note head\n this.glyphPx = Math.max(this.glyphPx, metrics.glyphWidth || 0);\n // Total modifier shift\n this.modLeftPx = Math.max(this.modLeftPx, metrics.modLeftPx);\n this.modRightPx = Math.max(this.modRightPx, metrics.modRightPx);\n // Total shift\n this.totalLeftPx = Math.max(this.totalLeftPx, metrics.modLeftPx + metrics.leftDisplacedHeadPx);\n this.totalRightPx = Math.max(this.totalRightPx, metrics.modRightPx + metrics.rightDisplacedHeadPx);\n // Recalculate the tick context total width\n this.width = this.notePx + this.totalLeftPx + this.totalRightPx;\n }\n return this;\n }\n postFormat() {\n if (this.postFormatted)\n return this;\n this.postFormatted = true;\n return this;\n }\n getFormatterMetrics() {\n return this.formatterMetrics;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TickContext } from './tickcontext';\nimport { Category, isTabNote } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Ornament.DEBUG)\n log('Vex.Flow.Ornament', args);\n}\n/**\n * Ornament implements ornaments as modifiers that can be\n * attached to notes. The complete list of ornaments is available in\n * `tables.ts` under `Vex.Flow.ornamentCodes`.\n *\n * See `tests/ornament_tests.ts` for usage examples.\n */\nexport class Ornament extends Modifier {\n /**\n * Create a new ornament of type `type`, which is an entry in\n * `Vex.Flow.ornamentCodes` in `tables.ts`.\n */\n constructor(type) {\n super();\n this.type = type;\n this.delayed = false;\n this.render_options = {\n font_scale: 38,\n accidentalLowerPadding: 3,\n accidentalUpperPadding: 3,\n };\n this.ornament = Tables.ornamentCodes(this.type);\n // new ornaments have their origin at the origin, and have more specific\n // metrics. Legacy ornaments do some\n // x scaling, and have hard-coded metrics\n const metrics = this.getMetrics();\n // some jazz ornaments are above or below depending on stem direction.\n this.adjustForStemDirection = false;\n // some jazz ornaments like falls are supposed to overlap with future bars\n // and so we report a different width than they actually take up.\n this.reportedWidth = metrics && metrics.reportedWidth ? metrics.reportedWidth : 0;\n this.stemUpYOffset = metrics && metrics.stemUpYOffset ? metrics.stemUpYOffset : 0;\n this.ornamentAlignWithNoteHead = Ornament.ornamentAlignWithNoteHead.indexOf(this.type) >= 0;\n if (!this.ornament) {\n throw new RuntimeError('ArgumentError', `Ornament not found: '${this.type}'`);\n }\n this.x_shift = metrics ? metrics.xOffset : 0;\n this.y_shift = metrics ? metrics.yOffset : 0;\n this.glyph = new Glyph(this.ornament.code, this.render_options.font_scale, {\n category: `ornament.${this.ornament.code}`,\n });\n // Is this a jazz ornament that goes between this note and the next note.\n if (Ornament.ornamentNoteTransition.indexOf(this.type) >= 0) {\n this.delayed = true;\n }\n // Legacy ornaments need this. I don't know why, but horizontal spacing issues\n // happen if I don't set it.\n if (!metrics) {\n this.glyph.setOrigin(0.5, 1.0); // FIXME: SMuFL won't require a vertical origin shift\n }\n }\n /** Ornaments category string. */\n static get CATEGORY() {\n return Category.Ornament;\n }\n static get minPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Arrange ornaments inside `ModifierContext` */\n static format(ornaments, state) {\n if (!ornaments || ornaments.length === 0)\n return false;\n let width = 0; // width is used by ornaments, which are always centered on the note head\n let right_shift = state.right_shift; // jazz ornaments calculate r/l shift separately\n let left_shift = state.left_shift;\n let yOffset = 0;\n for (let i = 0; i < ornaments.length; ++i) {\n const ornament = ornaments[i];\n const increment = 2;\n if (Ornament.ornamentRelease.indexOf(ornament.type) >= 0) {\n ornament.x_shift += right_shift + 2;\n }\n if (Ornament.ornamentAttack.indexOf(ornament.type) >= 0) {\n ornament.x_shift -= left_shift + 2;\n }\n if (ornament.reportedWidth && ornament.x_shift < 0) {\n left_shift += ornament.reportedWidth;\n }\n else if (ornament.reportedWidth && ornament.x_shift >= 0) {\n right_shift += ornament.reportedWidth + Ornament.minPadding;\n }\n else {\n width = Math.max(ornament.getWidth(), width);\n }\n // articulations above/below the line can be stacked.\n if (Ornament.ornamentArticulation.indexOf(ornament.type) >= 0) {\n // Unfortunately we don't know the stem direction. So we base it\n // on the line number, but also allow it to be overridden.\n const ornamentNote = defined(ornament.note, 'NoAttachedNote');\n if (ornamentNote.getLineNumber() >= 3 || ornament.getPosition() === Modifier.Position.ABOVE) {\n state.top_text_line += increment;\n ornament.y_shift += yOffset;\n yOffset -= ornament.glyph.bbox.getH();\n }\n else {\n state.text_line += increment;\n ornament.y_shift += yOffset;\n yOffset += ornament.glyph.bbox.getH();\n }\n }\n else {\n if (ornament.getPosition() === Modifier.Position.ABOVE) {\n ornament.setTextLine(state.top_text_line);\n state.top_text_line += increment;\n }\n else {\n ornament.setTextLine(state.text_line);\n state.text_line += increment;\n }\n }\n }\n // Note: 'legit' ornaments don't consider other modifiers when calculating their\n // X position, but jazz ornaments sometimes need to.\n state.left_shift = left_shift + width / 2;\n state.right_shift = right_shift + width / 2;\n return true;\n }\n /**\n * ornamentNoteTransition means the jazz ornament represents an effect from one note to another,\n * these are generally on the top of the staff.\n */\n static get ornamentNoteTransition() {\n return ['flip', 'jazzTurn', 'smear'];\n }\n /**\n * ornamentAttack indicates something that happens in the attach, placed before the note and\n * any accidentals\n */\n static get ornamentAttack() {\n return ['scoop'];\n }\n /**\n * The ornament is aligned based on the note head, but without regard to whether the\n * stem goes up or down.\n */\n static get ornamentAlignWithNoteHead() {\n return ['doit', 'fall', 'fallLong', 'doitLong', 'bend', 'plungerClosed', 'plungerOpen', 'scoop'];\n }\n /**\n * An ornament that happens on the release of the note, generally placed after the\n * note and overlapping the next beat/measure..\n */\n static get ornamentRelease() {\n return ['doit', 'fall', 'fallLong', 'doitLong', 'jazzTurn', 'smear', 'flip'];\n }\n /** ornamentArticulation goes above/below the note based on space availablity */\n static get ornamentArticulation() {\n return ['bend', 'plungerClosed', 'plungerOpen'];\n }\n /**\n * Legacy ornaments have hard-coded metrics. If additional ornament types are\n * added, get their metrics here.\n */\n // eslint-disable-next-line\n getMetrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.jazzOrnaments[this.ornament.code];\n }\n /** Set whether the ornament is to be delayed. */\n setDelayed(delayed) {\n this.delayed = delayed;\n return this;\n }\n /** Set the upper accidental for the ornament. */\n setUpperAccidental(accid) {\n const scale = this.render_options.font_scale / 1.3;\n this.accidentalUpper = new Glyph(Tables.accidentalCodes(accid).code, scale);\n this.accidentalUpper.setOrigin(0.5, 1.0);\n return this;\n }\n /** Set the lower accidental for the ornament. */\n setLowerAccidental(accid) {\n const scale = this.render_options.font_scale / 1.3;\n this.accidentalLower = new Glyph(Tables.accidentalCodes(accid).code, scale);\n this.accidentalLower.setOrigin(0.5, 1.0);\n return this;\n }\n /** Render ornament in position next to note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stemDir = note.getStemDirection();\n const stave = note.checkStave();\n ctx.openGroup('ornament', this.getAttribute('id'));\n // Get stem extents\n const stemExtents = note.checkStem().getExtents();\n let y = stemDir === Stem.DOWN ? stemExtents.baseY : stemExtents.topY;\n // TabNotes don't have stems attached to them. Tab stems are rendered outside the stave.\n if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDir === Stem.DOWN) {\n y = stave.getYForTopText(this.text_line);\n }\n }\n else {\n // Without a stem\n y = stave.getYForTopText(this.text_line);\n }\n }\n const isPlacedOnNoteheadSide = stemDir === Stem.DOWN;\n const spacing = stave.getSpacingBetweenLines();\n let lineSpacing = 1;\n // Beamed stems are longer than quarter note stems, adjust accordingly\n if (!isPlacedOnNoteheadSide && note.hasBeam()) {\n lineSpacing += 0.5;\n }\n const totalSpacing = spacing * (this.text_line + lineSpacing);\n const glyphYBetweenLines = y - totalSpacing;\n // Get initial coordinates for the modifier position\n const start = note.getModifierStartXY(this.position, this.index);\n let glyphX = start.x;\n // If the ornament is aligned with the note head, don't consider the stave y\n // but use the 'natural' modifier y\n let glyphY = this.ornamentAlignWithNoteHead\n ? start.y\n : Math.min(stave.getYForTopText(this.text_line), glyphYBetweenLines);\n glyphY += this.y_shift;\n // Ajdust x position if ornament is delayed\n if (this.delayed) {\n let delayXShift = 0;\n const startX = glyphX - (stave.getX() - 10);\n if (this.delayXShift !== undefined) {\n delayXShift = this.delayXShift;\n }\n else {\n delayXShift += this.glyph.getMetrics().width / 2;\n const nextContext = TickContext.getNextContext(note.getTickContext());\n if (nextContext) {\n delayXShift += (nextContext.getX() - startX) * 0.5;\n }\n else {\n delayXShift += (stave.getX() + stave.getWidth() - startX) * 0.5;\n }\n this.delayXShift = delayXShift;\n }\n glyphX += delayXShift;\n }\n L('Rendering ornament: ', this.ornament, glyphX, glyphY);\n if (this.accidentalLower) {\n this.accidentalLower.render(ctx, glyphX, glyphY);\n glyphY -= this.accidentalLower.getMetrics().height;\n glyphY -= this.render_options.accidentalLowerPadding;\n }\n if (this.stemUpYOffset && note.hasStem() && note.getStemDirection() === 1) {\n glyphY += this.stemUpYOffset;\n }\n if (note.getLineNumber() < 5 && Ornament.ornamentNoteTransition.indexOf(this.type) >= 0) {\n glyphY = note.checkStave().getBoundingBox().getY() + 40;\n }\n this.glyph.render(ctx, glyphX + this.x_shift, glyphY);\n if (this.accidentalUpper) {\n glyphY -= this.glyph.getMetrics().height + this.render_options.accidentalUpperPadding;\n this.accidentalUpper.render(ctx, glyphX, glyphY);\n }\n ctx.closeGroup();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Ornament.DEBUG` to `true`. */\nOrnament.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Rodrigo Vilar\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Tables } from './tables';\nimport { Category, isGraceNote } from './typeguard';\n/** Parenthesis implements parenthesis modifiers for notes. */\nexport class Parenthesis extends Modifier {\n /**\n * Constructor\n *\n * @param position Modifier.Position.LEFT (default) or Modifier.Position.RIGHT\n */\n constructor(position) {\n super();\n this.position = position !== null && position !== void 0 ? position : Modifier.Position.LEFT;\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.default.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.default.width'));\n }\n static get CATEGORY() {\n return Category.Parenthesis;\n }\n /** Add parentheses to the notes. */\n static buildAndAttach(notes) {\n for (const note of notes) {\n for (let i = 0; i < note.keys.length; i++) {\n note.addModifier(new Parenthesis(ModifierPosition.LEFT), i);\n note.addModifier(new Parenthesis(ModifierPosition.RIGHT), i);\n }\n }\n }\n /** Arrange parentheses inside a ModifierContext. */\n static format(parentheses, state) {\n if (!parentheses || parentheses.length === 0)\n return false;\n let x_widthL = 0;\n let x_widthR = 0;\n for (let i = 0; i < parentheses.length; ++i) {\n const parenthesis = parentheses[i];\n const note = parenthesis.getNote();\n const pos = parenthesis.getPosition();\n const index = parenthesis.checkIndex();\n let shift = 0;\n if (pos === ModifierPosition.RIGHT) {\n shift = note.getRightParenthesisPx(index);\n x_widthR = x_widthR > shift + parenthesis.width ? x_widthR : shift + parenthesis.width;\n }\n if (pos === ModifierPosition.LEFT) {\n shift = note.getLeftParenthesisPx(index);\n x_widthL = x_widthL > shift + parenthesis.width ? x_widthL : shift + parenthesis.width;\n }\n parenthesis.setXShift(shift);\n }\n state.left_shift += x_widthL;\n state.right_shift += x_widthR;\n return true;\n }\n /** Set the associated note. */\n setNote(note) {\n this.note = note;\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.default.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.default.width'));\n if (isGraceNote(note)) {\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.gracenote.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.gracenote.width'));\n }\n return this;\n }\n /** Render the parenthesis. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index, { forceFlagRight: true });\n const x = start.x + this.x_shift;\n const y = start.y + this.y_shift;\n if (this.position == Modifier.Position.RIGHT) {\n Glyph.renderGlyph(ctx, x + 1, y, this.point, 'noteheadParenthesisRight', {\n category: `noteHead.standard.noteheadParenthesisRight`,\n });\n }\n else if (this.position == Modifier.Position.LEFT) {\n Glyph.renderGlyph(ctx, x - 2, y, this.point, 'noteheadParenthesisLeft', {\n category: `noteHead.standard.noteheadParenthesisLeft`,\n });\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Ron B. Yeh\n// MIT License\n//\n// Utilities for working with Web APIs.\n// See: https://developer.mozilla.org/en-US/docs/Web/API\nimport { globalObject } from './util';\n// eslint-disable-next-line\nexport function isHTMLCanvas(element) {\n if (!element)\n return false;\n const global = globalObject();\n return (\n // It's either an instance of the HTMLCanvasElement class,\n (typeof global.HTMLCanvasElement === 'function' && element instanceof global.HTMLCanvasElement) ||\n // OR it's pretending to be a element. Good enough!\n // Do not rely on .tagName, because node-canvas doesn't provide a tagName.\n (typeof element.getContext === 'function' && typeof element.toDataURL === 'function'));\n}\n// eslint-disable-next-line\nexport function isHTMLDiv(element) {\n if (!element)\n return false;\n const global = globalObject();\n return (\n // It's either an instance of the HTMLDivElement class.\n (typeof global.HTMLDivElement === 'function' && element instanceof global.HTMLDivElement) ||\n // OR it's pretending to be a
. See: svgcontext.ts.\n (typeof element.appendChild === 'function' && typeof element.style === 'object'));\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from './font';\nimport { RenderContext } from './rendercontext';\nimport { globalObject, warn } from './util';\nimport { isHTMLCanvas } from './web';\n/**\n * A rendering context for the Canvas backend. This class serves as a proxy for the\n * underlying CanvasRenderingContext2D object, part of the browser's API.\n */\nexport class CanvasContext extends RenderContext {\n constructor(context) {\n super();\n /** Height of one line of text (in pixels). */\n this.textHeight = 0;\n this.context2D = context;\n if (!context.canvas) {\n this.canvas = {\n width: CanvasContext.WIDTH,\n height: CanvasContext.HEIGHT,\n };\n }\n else {\n this.canvas = context.canvas;\n }\n }\n static get WIDTH() {\n return 600;\n }\n static get HEIGHT() {\n return 400;\n }\n static get CANVAS_BROWSER_SIZE_LIMIT() {\n return 32767; // Chrome/Firefox. Could be determined more precisely by npm module canvas-size.\n }\n /**\n * Ensure that width and height do not exceed the browser limit.\n * @returns array of [width, height] clamped to the browser limit.\n */\n static sanitizeCanvasDims(width, height) {\n const limit = this.CANVAS_BROWSER_SIZE_LIMIT;\n if (Math.max(width, height) > limit) {\n warn('Canvas dimensions exceed browser limit. Cropping to ' + limit);\n if (width > limit) {\n width = limit;\n }\n if (height > limit) {\n height = limit;\n }\n }\n return [width, height];\n }\n /**\n * Set all pixels to transparent black rgba(0,0,0,0).\n */\n clear() {\n this.context2D.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n // eslint-disable-next-line\n openGroup(cls, id, attrs) {\n // Containers not implemented.\n }\n closeGroup() {\n // Containers not implemented.\n }\n // eslint-disable-next-line\n add(child) {\n // Containers not implemented.\n }\n setFillStyle(style) {\n this.context2D.fillStyle = style;\n return this;\n }\n /** CanvasContext ignores `setBackgroundFillStyle()`. */\n // eslint-disable-next-line\n setBackgroundFillStyle(style) {\n // DO NOTHING\n return this;\n }\n setStrokeStyle(style) {\n this.context2D.strokeStyle = style;\n return this;\n }\n setShadowColor(color) {\n this.context2D.shadowColor = color;\n return this;\n }\n setShadowBlur(blur) {\n // CanvasRenderingContext2D does not scale the shadow blur by the current\n // transform, so we have to do it manually. We assume uniform scaling\n // (though allow for rotation) because the blur can only be scaled\n // uniformly anyway.\n const t = this.context2D.getTransform();\n const scale = Math.sqrt(t.a * t.a + t.b * t.b + t.c * t.c + t.d * t.d);\n this.context2D.shadowBlur = scale * blur;\n return this;\n }\n setLineWidth(width) {\n this.context2D.lineWidth = width;\n return this;\n }\n setLineCap(capType) {\n this.context2D.lineCap = capType;\n return this;\n }\n setLineDash(dash) {\n this.context2D.setLineDash(dash);\n return this;\n }\n scale(x, y) {\n this.context2D.scale(x, y);\n return this;\n }\n resize(width, height) {\n const canvas = this.context2D.canvas;\n const devicePixelRatio = globalObject().devicePixelRatio || 1;\n // Scale the canvas size by the device pixel ratio clamping to the maximum supported size.\n [width, height] = CanvasContext.sanitizeCanvasDims(width * devicePixelRatio, height * devicePixelRatio);\n // Divide back down by the pixel ratio and convert to integers.\n width = (width / devicePixelRatio) | 0;\n height = (height / devicePixelRatio) | 0;\n canvas.width = width * devicePixelRatio;\n canvas.height = height * devicePixelRatio;\n // The canvas could be an instance of either HTMLCanvasElement or an OffscreenCanvas.\n // Only HTMLCanvasElement has a style attribute.\n if (isHTMLCanvas(canvas)) {\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n }\n return this.scale(devicePixelRatio, devicePixelRatio);\n }\n rect(x, y, width, height) {\n this.context2D.rect(x, y, width, height);\n return this;\n }\n fillRect(x, y, width, height) {\n this.context2D.fillRect(x, y, width, height);\n return this;\n }\n /**\n * Set the pixels in a rectangular area to transparent black rgba(0,0,0,0).\n */\n clearRect(x, y, width, height) {\n this.context2D.clearRect(x, y, width, height);\n return this;\n }\n beginPath() {\n this.context2D.beginPath();\n return this;\n }\n moveTo(x, y) {\n this.context2D.moveTo(x, y);\n return this;\n }\n lineTo(x, y) {\n this.context2D.lineTo(x, y);\n return this;\n }\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\n this.context2D.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n return this;\n }\n quadraticCurveTo(cpx, cpy, x, y) {\n this.context2D.quadraticCurveTo(cpx, cpy, x, y);\n return this;\n }\n arc(x, y, radius, startAngle, endAngle, counterclockwise) {\n this.context2D.arc(x, y, radius, startAngle, endAngle, counterclockwise);\n return this;\n }\n fill() {\n this.context2D.fill();\n return this;\n }\n stroke() {\n this.context2D.stroke();\n return this;\n }\n closePath() {\n this.context2D.closePath();\n return this;\n }\n measureText(text) {\n const metrics = this.context2D.measureText(text);\n let y = 0;\n let height = 0;\n if (metrics.fontBoundingBoxAscent) {\n y = -metrics.fontBoundingBoxAscent;\n height = metrics.fontBoundingBoxDescent + metrics.fontBoundingBoxAscent;\n }\n else {\n y = -metrics.actualBoundingBoxAscent;\n height = metrics.actualBoundingBoxDescent + metrics.actualBoundingBoxAscent;\n }\n // Return x, y, width & height in the same manner as svg getBBox\n return {\n x: 0,\n y: y,\n width: metrics.width,\n height: height,\n };\n }\n fillText(text, x, y) {\n this.context2D.fillText(text, x, y);\n return this;\n }\n save() {\n this.context2D.save();\n return this;\n }\n restore() {\n this.context2D.restore();\n return this;\n }\n set fillStyle(style) {\n this.context2D.fillStyle = style;\n }\n get fillStyle() {\n return this.context2D.fillStyle;\n }\n set strokeStyle(style) {\n this.context2D.strokeStyle = style;\n }\n get strokeStyle() {\n return this.context2D.strokeStyle;\n }\n /**\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n */\n setFont(f, size, weight, style) {\n const fontInfo = Font.validate(f, size, weight, style);\n this.context2D.font = Font.toCSSString(fontInfo);\n this.textHeight = Font.convertSizeToPixelValue(fontInfo.size);\n return this;\n }\n /** Return a string of the form `'italic bold 15pt Arial'` */\n getFont() {\n return this.context2D.font;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// @author Gregory Ristow (2015)\nimport { Font, FontStyle, FontWeight } from './font';\nimport { RenderContext } from './rendercontext';\nimport { normalizeAngle, prefix, RuntimeError } from './util';\n/** For a particular element type (e.g., rect), we will not apply certain presentation attributes. */\nconst ATTRIBUTES_TO_IGNORE = {\n path: {\n x: true,\n y: true,\n width: true,\n height: true,\n 'font-family': true,\n 'font-weight': true,\n 'font-style': true,\n 'font-size': true,\n },\n rect: {\n 'font-family': true,\n 'font-weight': true,\n 'font-style': true,\n 'font-size': true,\n },\n text: {\n width: true,\n height: true,\n },\n};\n/** Create the SVG in the SVG namespace. */\nconst SVG_NS = 'http://www.w3.org/2000/svg';\nconst TWO_PI = 2 * Math.PI;\nclass MeasureTextCache {\n constructor() {\n // The cache is keyed first by the text string, then by the font attributes\n // joined together.\n this.cache = {};\n }\n lookup(text, svg, attributes) {\n let entries = this.cache[text];\n if (entries === undefined) {\n entries = {};\n this.cache[text] = entries;\n }\n const family = attributes['font-family'];\n const size = attributes['font-size'];\n const weight = attributes['font-weight'];\n const style = attributes['font-style'];\n const key = `${family}%${size}%${weight}%${style}`;\n let entry = entries[key];\n if (entry === undefined) {\n entry = this.measureImpl(text, svg, attributes);\n entries[key] = entry;\n }\n return entry;\n }\n measureImpl(text, svg, attributes) {\n let txt = this.txt;\n if (!txt) {\n // Create the SVG text element that will be used to measure text in the event\n // of a cache miss.\n txt = document.createElementNS(SVG_NS, 'text');\n this.txt = txt;\n }\n txt.textContent = text;\n txt.setAttributeNS(null, 'font-family', attributes['font-family']);\n txt.setAttributeNS(null, 'font-size', attributes['font-size']);\n txt.setAttributeNS(null, 'font-style', attributes['font-style']);\n txt.setAttributeNS(null, 'font-weight', attributes['font-weight']);\n svg.appendChild(txt);\n const bbox = txt.getBBox();\n svg.removeChild(txt);\n return { x: bbox.x, y: bbox.y, width: bbox.width, height: bbox.height };\n }\n}\n/**\n * SVG rendering context with an API similar to CanvasRenderingContext2D.\n */\nexport class SVGContext extends RenderContext {\n constructor(element) {\n super();\n this.width = 0;\n this.height = 0;\n this.backgroundFillStyle = 'white';\n /** Formatted as CSS font shorthand (e.g., 'italic bold 12pt Arial') */\n this.fontCSSString = '';\n this.element = element;\n // Create a SVG element and add it to the container element.\n const svg = this.create('svg');\n this.element.appendChild(svg);\n this.svg = svg;\n this.parent = this.svg;\n this.groups = [this.svg];\n this.path = '';\n this.pen = { x: NaN, y: NaN };\n this.lineWidth = 1.0;\n const defaultFontAttributes = {\n 'font-family': Font.SANS_SERIF,\n 'font-size': Font.SIZE + 'pt',\n 'font-weight': FontWeight.NORMAL,\n 'font-style': FontStyle.NORMAL,\n };\n this.state = Object.assign({ scale: { x: 1, y: 1 } }, defaultFontAttributes);\n this.attributes = Object.assign({ 'stroke-width': 0.3, 'stroke-dasharray': 'none', fill: 'black', stroke: 'black' }, defaultFontAttributes);\n this.shadow_attributes = {\n width: 0,\n color: 'black',\n };\n this.state_stack = [];\n }\n create(svgElementType) {\n return document.createElementNS(SVG_NS, svgElementType);\n }\n // Allow grouping elements in containers for interactivity.\n openGroup(cls, id, attrs) {\n const group = this.create('g');\n this.groups.push(group);\n this.parent.appendChild(group);\n this.parent = group;\n if (cls)\n group.setAttribute('class', prefix(cls));\n if (id)\n group.setAttribute('id', prefix(id));\n if (attrs && attrs.pointerBBox) {\n group.setAttribute('pointer-events', 'bounding-box');\n }\n return group;\n }\n closeGroup() {\n this.groups.pop();\n this.parent = this.groups[this.groups.length - 1];\n }\n add(elem) {\n this.parent.appendChild(elem);\n }\n setFillStyle(style) {\n this.attributes.fill = style;\n return this;\n }\n /**\n * Used to set the fill color for `clearRect()`. This allows us to simulate\n * cutting a \"hole\" into the SVG drawing.\n */\n setBackgroundFillStyle(style) {\n this.backgroundFillStyle = style;\n return this;\n }\n setStrokeStyle(style) {\n this.attributes.stroke = style;\n return this;\n }\n setShadowColor(color) {\n this.shadow_attributes.color = color;\n return this;\n }\n /**\n * @param blur A non-negative float specifying the level of shadow blur, where 0\n * represents no blur and larger numbers represent increasingly more blur.\n * @returns this\n */\n setShadowBlur(blur) {\n this.shadow_attributes.width = blur;\n return this;\n }\n /**\n * @param width\n * @returns this\n */\n setLineWidth(width) {\n this.attributes['stroke-width'] = width;\n this.lineWidth = width;\n return this;\n }\n /**\n * @param lineDash an array of integers in the form of [dash, space, dash, space, etc...]\n * @returns this\n *\n * See: [SVG `stroke-dasharray` attribute](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray)\n */\n setLineDash(lineDash) {\n if (Object.prototype.toString.call(lineDash) === '[object Array]') {\n this.attributes['stroke-dasharray'] = lineDash.join(',');\n return this;\n }\n else {\n throw new RuntimeError('ArgumentError', 'lineDash must be an array of integers.');\n }\n }\n /**\n * @param capType\n * @returns this\n */\n setLineCap(capType) {\n this.attributes['stroke-linecap'] = capType;\n return this;\n }\n // ### Sizing & Scaling Methods:\n // TODO (GCR): See note at scale() -- separate our internal\n // conception of pixel-based width/height from the style.width\n // and style.height properties eventually to allow users to\n // apply responsive sizing attributes to the SVG.\n resize(width, height) {\n this.width = width;\n this.height = height;\n this.element.style.width = width.toString();\n this.svg.style.width = width.toString();\n this.svg.style.height = height.toString();\n const attributes = {\n width,\n height,\n };\n this.applyAttributes(this.svg, attributes);\n this.scale(this.state.scale.x, this.state.scale.y);\n return this;\n }\n scale(x, y) {\n // uses viewBox to scale\n // TODO (GCR): we may at some point want to distinguish the\n // style.width / style.height properties that are applied to\n // the SVG object from our internal conception of the SVG\n // width/height. This would allow us to create automatically\n // scaling SVG's that filled their containers, for instance.\n //\n // As this isn't implemented in Canvas contexts,\n // I've left as is for now, but in using the viewBox to\n // handle internal scaling, am trying to make it possible\n // for us to eventually move in that direction.\n this.state.scale = { x, y };\n const visibleWidth = this.width / x;\n const visibleHeight = this.height / y;\n this.setViewBox(0, 0, visibleWidth, visibleHeight);\n return this;\n }\n /**\n * 1 arg: string in the \"x y w h\" format\n * 4 args: x:number, y:number, w:number, h:number\n */\n setViewBox(viewBox_or_minX, minY, width, height) {\n if (typeof viewBox_or_minX === 'string') {\n this.svg.setAttribute('viewBox', viewBox_or_minX);\n }\n else {\n const viewBoxString = viewBox_or_minX + ' ' + minY + ' ' + width + ' ' + height;\n this.svg.setAttribute('viewBox', viewBoxString);\n }\n }\n // ### Drawing helper methods:\n applyAttributes(element, attributes) {\n const attrNamesToIgnore = ATTRIBUTES_TO_IGNORE[element.nodeName];\n for (const attrName in attributes) {\n if (attrNamesToIgnore && attrNamesToIgnore[attrName]) {\n continue;\n }\n element.setAttributeNS(null, attrName, attributes[attrName]);\n }\n return element;\n }\n // ### Shape & Path Methods:\n clear() {\n // Clear the SVG by removing all inner children.\n // (This approach is usually slightly more efficient\n // than removing the old SVG & adding a new one to\n // the container element, since it does not cause the\n // container to resize twice. Also, the resize\n // triggered by removing the entire SVG can trigger\n // a touchcancel event when the element resizes away\n // from a touch point.)\n while (this.svg.lastChild) {\n this.svg.removeChild(this.svg.lastChild);\n }\n // Replace the viewbox attribute we just removed.\n this.scale(this.state.scale.x, this.state.scale.y);\n }\n // ## Rectangles:\n rect(x, y, width, height, attributes) {\n // Avoid invalid negative height attributes by flipping the rectangle on its head:\n if (height < 0) {\n y += height;\n height *= -1;\n }\n const rectangle = this.create('rect');\n attributes = attributes !== null && attributes !== void 0 ? attributes : { fill: 'none', 'stroke-width': this.lineWidth, stroke: 'black' };\n this.applyAttributes(rectangle, Object.assign({ x, y, width, height }, attributes));\n this.add(rectangle);\n return this;\n }\n fillRect(x, y, width, height) {\n const attributes = { fill: this.attributes.fill };\n this.rect(x, y, width, height, attributes);\n return this;\n }\n clearRect(x, y, width, height) {\n // Currently this fills a rect with the backgroundFillStyle, rather\n // than \"cut a hole\" into the existing shapes.\n //\n // Since tabNote seems to be the only module that makes use of this\n // it may be worth creating a separate tabStave that would\n // draw lines around locations of tablature fingering.\n this.rect(x, y, width, height, { 'stroke-width': 0, fill: this.backgroundFillStyle });\n return this;\n }\n // ## Paths:\n beginPath() {\n this.path = '';\n this.pen.x = NaN;\n this.pen.y = NaN;\n return this;\n }\n moveTo(x, y) {\n this.path += 'M' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n lineTo(x, y) {\n this.path += 'L' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this.path += 'C' + x1 + ' ' + y1 + ',' + x2 + ' ' + y2 + ',' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this.path += 'Q' + x1 + ' ' + y1 + ',' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n arc(x, y, radius, startAngle, endAngle, counterclockwise) {\n const x0 = x + radius * Math.cos(startAngle);\n const y0 = y + radius * Math.sin(startAngle);\n // svg behavior different from canvas. Don't normalize angles if\n // we are drawing a circle because they both normalize to 0\n const tmpStartTest = normalizeAngle(startAngle);\n const tmpEndTest = normalizeAngle(endAngle);\n if ((!counterclockwise && endAngle - startAngle >= TWO_PI) ||\n (counterclockwise && startAngle - endAngle >= TWO_PI) ||\n tmpStartTest === tmpEndTest) {\n const x1 = x + radius * Math.cos(startAngle + Math.PI);\n const y1 = y + radius * Math.sin(startAngle + Math.PI);\n // There's no way to specify a completely circular arc in SVG so we have to\n // use two semi-circular arcs.\n this.path += `M${x0} ${y0} A${radius} ${radius} 0 0 0 ${x1} ${y1} `;\n this.path += `A${radius} ${radius} 0 0 0 ${x0} ${y0}`;\n this.pen.x = x0;\n this.pen.y = y0;\n }\n else {\n const x1 = x + radius * Math.cos(endAngle);\n const y1 = y + radius * Math.sin(endAngle);\n startAngle = tmpStartTest;\n endAngle = tmpEndTest;\n let large;\n if (Math.abs(endAngle - startAngle) < Math.PI) {\n large = counterclockwise;\n }\n else {\n large = !counterclockwise;\n }\n if (startAngle > endAngle) {\n large = !large;\n }\n const sweep = !counterclockwise;\n this.path += `M${x0} ${y0} A${radius} ${radius} 0 ${+large} ${+sweep} ${x1} ${y1}`;\n this.pen.x = x1;\n this.pen.y = y1;\n }\n return this;\n }\n closePath() {\n this.path += 'Z';\n return this;\n }\n getShadowStyle() {\n const sa = this.shadow_attributes;\n // A CSS drop-shadow filter blur looks different than a canvas shadowBlur\n // of the same radius, so we scale the drop-shadow radius here to make it\n // look close to the canvas shadow.\n return `filter: drop-shadow(0 0 ${sa.width / 1.5}px ${sa.color})`;\n }\n fill(attributes) {\n const path = this.create('path');\n if (typeof attributes === 'undefined') {\n attributes = Object.assign(Object.assign({}, this.attributes), { stroke: 'none' });\n }\n attributes.d = this.path;\n if (this.shadow_attributes.width > 0) {\n attributes.style = this.getShadowStyle();\n }\n this.applyAttributes(path, attributes);\n this.add(path);\n return this;\n }\n stroke() {\n const path = this.create('path');\n const attributes = Object.assign(Object.assign({}, this.attributes), { fill: 'none', 'stroke-width': this.lineWidth, d: this.path });\n if (this.shadow_attributes.width > 0) {\n attributes.style = this.getShadowStyle();\n }\n this.applyAttributes(path, attributes);\n this.add(path);\n return this;\n }\n // ## Text Methods:\n measureText(text) {\n return SVGContext.measureTextCache.lookup(text, this.svg, this.attributes);\n }\n fillText(text, x, y) {\n if (!text || text.length <= 0) {\n return this;\n }\n const attributes = Object.assign(Object.assign({}, this.attributes), { stroke: 'none', x,\n y });\n const txt = this.create('text');\n txt.textContent = text;\n this.applyAttributes(txt, attributes);\n this.add(txt);\n return this;\n }\n // TODO: State should be deep-copied.\n save() {\n this.state_stack.push({\n state: {\n 'font-family': this.state['font-family'],\n 'font-weight': this.state['font-weight'],\n 'font-style': this.state['font-style'],\n 'font-size': this.state['font-size'],\n scale: this.state.scale,\n },\n attributes: {\n 'font-family': this.attributes['font-family'],\n 'font-weight': this.attributes['font-weight'],\n 'font-style': this.attributes['font-style'],\n 'font-size': this.attributes['font-size'],\n fill: this.attributes.fill,\n stroke: this.attributes.stroke,\n 'stroke-width': this.attributes['stroke-width'],\n 'stroke-dasharray': this.attributes['stroke-dasharray'],\n },\n shadow_attributes: {\n width: this.shadow_attributes.width,\n color: this.shadow_attributes.color,\n },\n lineWidth: this.lineWidth,\n });\n return this;\n }\n // TODO: State should be deep-restored.\n restore() {\n const savedState = this.state_stack.pop();\n if (savedState) {\n const state = savedState;\n this.state['font-family'] = state.state['font-family'];\n this.state['font-weight'] = state.state['font-weight'];\n this.state['font-style'] = state.state['font-style'];\n this.state['font-size'] = state.state['font-size'];\n this.state.scale = state.state.scale;\n this.attributes['font-family'] = state.attributes['font-family'];\n this.attributes['font-weight'] = state.attributes['font-weight'];\n this.attributes['font-style'] = state.attributes['font-style'];\n this.attributes['font-size'] = state.attributes['font-size'];\n this.attributes.fill = state.attributes.fill;\n this.attributes.stroke = state.attributes.stroke;\n this.attributes['stroke-width'] = state.attributes['stroke-width'];\n this.attributes['stroke-dasharray'] = state.attributes['stroke-dasharray'];\n this.shadow_attributes.width = state.shadow_attributes.width;\n this.shadow_attributes.color = state.shadow_attributes.color;\n this.lineWidth = state.lineWidth;\n }\n return this;\n }\n set fillStyle(style) {\n this.setFillStyle(style);\n }\n get fillStyle() {\n return this.attributes.fill;\n }\n set strokeStyle(style) {\n this.setStrokeStyle(style);\n }\n get strokeStyle() {\n return this.attributes.stroke;\n }\n /**\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900). It is inserted\n * into the font-weight attribute (e.g., font-weight=\"bold\")\n * @param style is a string (e.g., 'italic', 'normal') that is inserted into the\n * font-style attribute (e.g., font-style=\"italic\")\n */\n setFont(f, size, weight, style) {\n const fontInfo = Font.validate(f, size, weight, style);\n this.fontCSSString = Font.toCSSString(fontInfo);\n const fontAttributes = {\n 'font-family': fontInfo.family,\n 'font-size': fontInfo.size,\n 'font-weight': fontInfo.weight,\n 'font-style': fontInfo.style,\n };\n this.attributes = Object.assign(Object.assign({}, this.attributes), fontAttributes);\n this.state = Object.assign(Object.assign({}, this.state), fontAttributes);\n return this;\n }\n /** Return a string of the form `'italic bold 15pt Arial'` */\n getFont() {\n return this.fontCSSString;\n }\n}\nSVGContext.measureTextCache = new MeasureTextCache();\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { CanvasContext } from './canvascontext';\nimport { SVGContext } from './svgcontext';\nimport { isRenderContext } from './typeguard';\nimport { RuntimeError } from './util';\nimport { isHTMLCanvas, isHTMLDiv } from './web';\nexport var RendererBackends;\n(function (RendererBackends) {\n RendererBackends[RendererBackends[\"CANVAS\"] = 1] = \"CANVAS\";\n RendererBackends[RendererBackends[\"SVG\"] = 2] = \"SVG\";\n})(RendererBackends || (RendererBackends = {}));\n// End of line types\nexport var RendererLineEndType;\n(function (RendererLineEndType) {\n RendererLineEndType[RendererLineEndType[\"NONE\"] = 1] = \"NONE\";\n RendererLineEndType[RendererLineEndType[\"UP\"] = 2] = \"UP\";\n RendererLineEndType[RendererLineEndType[\"DOWN\"] = 3] = \"DOWN\";\n})(RendererLineEndType || (RendererLineEndType = {}));\n/**\n * Support Canvas & SVG rendering contexts.\n */\nexport class Renderer {\n constructor(arg0, arg1) {\n if (isRenderContext(arg0)) {\n // The user has provided what looks like a RenderContext, let's just use it.\n this.ctx = arg0;\n }\n else {\n if (arg1 === undefined) {\n // The backend must be specified if the render context isn't directly provided.\n throw new RuntimeError('InvalidArgument', 'Missing backend argument');\n }\n const backend = arg1;\n let element;\n if (typeof arg0 == 'string') {\n const maybeElement = document.getElementById(arg0);\n if (!maybeElement) {\n throw new RuntimeError('BadElementId', `Can't find element with ID \"${maybeElement}\"`);\n }\n element = maybeElement;\n }\n else {\n element = arg0;\n }\n // Verify backend and create context\n if (backend === Renderer.Backends.CANVAS) {\n if (!isHTMLCanvas(element)) {\n throw new RuntimeError('BadElement', 'CANVAS context requires an HTMLCanvasElement.');\n }\n const context = element.getContext('2d');\n if (!context) {\n throw new RuntimeError('BadElement', \"Can't get canvas context\");\n }\n this.ctx = new CanvasContext(context);\n }\n else if (backend === Renderer.Backends.SVG) {\n if (!isHTMLDiv(element)) {\n throw new RuntimeError('BadElement', 'SVG context requires an HTMLDivElement.');\n }\n this.ctx = new SVGContext(element);\n }\n else {\n throw new RuntimeError('InvalidBackend', `No support for backend: ${backend}`);\n }\n }\n }\n static buildContext(elementId, backend, width, height, background = '#FFF') {\n const renderer = new Renderer(elementId, backend);\n if (width && height) {\n renderer.resize(width, height);\n }\n const ctx = renderer.getContext();\n ctx.setBackgroundFillStyle(background);\n Renderer.lastContext = ctx;\n return ctx;\n }\n static getCanvasContext(elementId, width, height, background) {\n return Renderer.buildContext(elementId, Renderer.Backends.CANVAS, width, height, background);\n }\n static getSVGContext(elementId, width, height, background) {\n return Renderer.buildContext(elementId, Renderer.Backends.SVG, width, height, background);\n }\n // Draw a dashed line (horizontal, vertical or diagonal\n // dashPattern = [3,3] draws a 3 pixel dash followed by a three pixel space.\n // setting the second number to 0 draws a solid line.\n static drawDashedLine(context, fromX, fromY, toX, toY, dashPattern) {\n context.beginPath();\n const dx = toX - fromX;\n const dy = toY - fromY;\n const angle = Math.atan2(dy, dx);\n let x = fromX;\n let y = fromY;\n context.moveTo(fromX, fromY);\n let idx = 0;\n let draw = true;\n while (!((dx < 0 ? x <= toX : x >= toX) && (dy < 0 ? y <= toY : y >= toY))) {\n const dashLength = dashPattern[idx++ % dashPattern.length];\n const nx = x + Math.cos(angle) * dashLength;\n x = dx < 0 ? Math.max(toX, nx) : Math.min(toX, nx);\n const ny = y + Math.sin(angle) * dashLength;\n y = dy < 0 ? Math.max(toY, ny) : Math.min(toY, ny);\n if (draw) {\n context.lineTo(x, y);\n }\n else {\n context.moveTo(x, y);\n }\n draw = !draw;\n }\n context.closePath();\n context.stroke();\n }\n resize(width, height) {\n this.ctx.resize(width, height);\n return this;\n }\n getContext() {\n return this.ctx;\n }\n}\nRenderer.Backends = RendererBackends;\nRenderer.LineEndType = RendererLineEndType;\n// Used by vexflow_test_helpers.ts\n// Should this be private?\n// Can we do this in a cleaner way?\nRenderer.lastContext = undefined;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport var TextJustification;\n(function (TextJustification) {\n TextJustification[TextJustification[\"LEFT\"] = 1] = \"LEFT\";\n TextJustification[TextJustification[\"CENTER\"] = 2] = \"CENTER\";\n TextJustification[TextJustification[\"RIGHT\"] = 3] = \"RIGHT\";\n})(TextJustification || (TextJustification = {}));\n/**\n * `TextNote` is a notation element that is positioned in time. Generally\n * meant for objects that sit above/below the staff and inline with each other.\n * `TextNote` has to be assigned to a `Stave` before rendering by means of `setStave`.\n * Examples of this would be such as dynamics, lyrics, chord changes, etc.\n */\nexport class TextNote extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n this.text = noteStruct.text || '';\n this.superscript = noteStruct.superscript;\n this.subscript = noteStruct.subscript;\n this.setFont(noteStruct.font);\n this.line = noteStruct.line || 0;\n this.smooth = noteStruct.smooth || false;\n this.ignore_ticks = noteStruct.ignore_ticks || false;\n this.justification = TextJustification.LEFT;\n // Determine and set initial note width. Note that the text width is\n // an approximation and isn't very accurate. The only way to accurately\n // measure the length of text is with `CanvasRenderingContext2D.measureText()`.\n if (noteStruct.glyph) {\n const struct = TextNote.GLYPHS[noteStruct.glyph];\n if (!struct)\n throw new RuntimeError('Invalid glyph type: ' + noteStruct.glyph);\n this.glyph = new Glyph(struct.code, 40, { category: 'textNote' });\n this.setWidth(this.glyph.getMetrics().width);\n }\n else {\n this.glyph = undefined;\n }\n }\n static get CATEGORY() {\n return Category.TextNote;\n }\n /** Glyph data. */\n static get GLYPHS() {\n return {\n segno: {\n code: 'segno',\n },\n tr: {\n code: 'ornamentTrill',\n },\n mordent: {\n code: 'ornamentMordent',\n },\n mordent_upper: {\n code: 'ornamentShortTrill',\n },\n mordent_lower: {\n code: 'ornamentMordent',\n },\n f: {\n code: 'dynamicForte',\n },\n p: {\n code: 'dynamicPiano',\n },\n m: {\n code: 'dynamicMezzo',\n },\n s: {\n code: 'dynamicSforzando',\n },\n z: {\n code: 'dynamicZ',\n },\n coda: {\n code: 'coda',\n },\n pedal_open: {\n code: 'keyboardPedalPed',\n },\n pedal_close: {\n code: 'keyboardPedalUp',\n },\n caesura_straight: {\n code: 'caesura',\n },\n caesura_curved: {\n code: 'caesuraCurved',\n },\n breath: {\n code: 'breathMarkComma',\n },\n tick: {\n code: 'breathMarkTick',\n },\n turn: {\n code: 'ornamentTurn',\n },\n turn_inverted: {\n code: 'ornamentTurnSlash',\n },\n };\n }\n /** Set the horizontal justification of the TextNote. */\n setJustification(just) {\n this.justification = just;\n return this;\n }\n /** Set the Stave line on which the note should be placed. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Return the Stave line on which the TextNote is placed. */\n getLine() {\n return this.line;\n }\n /** Return the unformatted text of this TextNote. */\n getText() {\n return this.text;\n }\n /** Pre-render formatting. */\n preFormat() {\n if (this.preFormatted)\n return;\n const tickContext = this.checkTickContext(`Can't preformat without a TickContext.`);\n if (this.smooth) {\n this.setWidth(0);\n }\n else {\n if (this.glyph) {\n // Width already set.\n }\n else {\n const ctx = this.checkContext();\n ctx.setFont(this.textFont);\n this.setWidth(ctx.measureText(this.text).width);\n }\n }\n if (this.justification === TextJustification.CENTER) {\n this.leftDisplacedHeadPx = this.width / 2;\n }\n else if (this.justification === TextJustification.RIGHT) {\n this.leftDisplacedHeadPx = this.width;\n }\n // We reposition to the center of the note head\n this.rightDisplacedHeadPx = tickContext.getMetrics().glyphPx / 2;\n this.preFormatted = true;\n }\n /**\n * Renders the TextNote.\n * `TextNote` has to be assigned to a `Stave` before rendering by means of `setStave`.\n */\n draw() {\n const ctx = this.checkContext();\n const stave = this.checkStave();\n const tickContext = this.checkTickContext(`Can't draw without a TickContext.`);\n this.setRendered();\n // Reposition to center of note head\n let x = this.getAbsoluteX() + tickContext.getMetrics().glyphPx / 2;\n // Align based on tick-context width.\n const width = this.getWidth();\n if (this.justification === TextJustification.CENTER) {\n x -= width / 2;\n }\n else if (this.justification === TextJustification.RIGHT) {\n x -= width;\n }\n let y;\n if (this.glyph) {\n y = stave.getYForLine(this.line + -3);\n this.glyph.render(ctx, x, y);\n }\n else {\n y = stave.getYForLine(this.line + -3);\n this.applyStyle(ctx);\n ctx.setFont(this.textFont);\n ctx.fillText(this.text, x, y);\n const height = ctx.measureText(this.text).height;\n // We called this.setFont(...) in the constructor, so we know this.textFont is available.\n // eslint-disable-next-line\n const { family, size, weight, style } = this.textFont;\n // Scale the font size by 1/1.3.\n const smallerFontSize = Font.scaleSize(size, 0.769231);\n if (this.superscript) {\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.superscript, x + this.width + 2, y - height / 2.2);\n }\n if (this.subscript) {\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.subscript, x + this.width + 2, y + height / 2.2 - 1);\n }\n this.restoreStyle(ctx);\n }\n }\n}\nTextNote.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 12,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\nTextNote.Justification = TextJustification;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier } from './stavemodifier';\nimport { Category } from './typeguard';\nexport var VoltaType;\n(function (VoltaType) {\n VoltaType[VoltaType[\"NONE\"] = 1] = \"NONE\";\n VoltaType[VoltaType[\"BEGIN\"] = 2] = \"BEGIN\";\n VoltaType[VoltaType[\"MID\"] = 3] = \"MID\";\n VoltaType[VoltaType[\"END\"] = 4] = \"END\";\n VoltaType[VoltaType[\"BEGIN_END\"] = 5] = \"BEGIN_END\";\n})(VoltaType || (VoltaType = {}));\nexport class Volta extends StaveModifier {\n constructor(type, number, x, y_shift) {\n super();\n this.volta = type;\n this.x = x;\n this.y_shift = y_shift;\n this.number = number;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.Volta;\n }\n static get type() {\n return VoltaType;\n }\n setShiftY(y) {\n this.y_shift = y;\n return this;\n }\n draw(stave, x) {\n const ctx = stave.checkContext();\n this.setRendered();\n let width = stave.getWidth() - x; // don't include x (offset) for width\n const top_y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n const vert_height = 1.5 * stave.getSpacingBetweenLines();\n switch (this.volta) {\n case VoltaType.BEGIN:\n ctx.fillRect(this.x + x, top_y, 1, vert_height);\n break;\n case VoltaType.END:\n width -= 5;\n ctx.fillRect(this.x + x + width, top_y, 1, vert_height);\n break;\n case VoltaType.BEGIN_END:\n width -= 3;\n ctx.fillRect(this.x + x, top_y, 1, vert_height);\n ctx.fillRect(this.x + x + width, top_y, 1, vert_height);\n break;\n default:\n break;\n }\n // If the beginning of a volta, draw measure number\n if (this.volta === VoltaType.BEGIN || this.volta === VoltaType.BEGIN_END) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText(this.number, this.x + x + 5, top_y + 15);\n ctx.restore();\n }\n ctx.fillRect(this.x + x, top_y, width, 1);\n return this;\n }\n}\nVolta.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 9,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns\n//\n// This file implements the `StringNumber` class which renders string\n// number annotations beside notes.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Renderer } from './renderer';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isStaveNote, isStemmableNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StringNumber extends Modifier {\n constructor(number) {\n super();\n this.string_number = number;\n this.position = Modifier.Position.ABOVE; // Default position above stem or note head\n this.x_shift = 0;\n this.y_shift = 0;\n this.text_line = 0;\n this.stem_offset = 0;\n this.x_offset = 0; // Horizontal offset from default\n this.y_offset = 0; // Vertical offset from default\n this.dashed = true; // true - draw dashed extension false - no extension\n this.leg = Renderer.LineEndType.NONE; // draw upward/downward leg at the of extension line\n this.radius = 8;\n this.drawCircle = true;\n this.setWidth(this.radius * 2 + 4);\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StringNumber;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.stringNumber;\n }\n // ## Static Methods\n // Arrange string numbers inside a `ModifierContext`\n static format(nums, state) {\n const left_shift = state.left_shift;\n const right_shift = state.right_shift;\n const num_spacing = 1;\n if (!nums || nums.length === 0)\n return false;\n const nums_list = [];\n let prev_note = null;\n let shift_left = 0;\n let shift_right = 0;\n const modLines = 0;\n for (let i = 0; i < nums.length; ++i) {\n const num = nums[i];\n const note = num.getNote();\n const pos = num.getPosition();\n if (!isStaveNote(note)) {\n throw new RuntimeError('NoStaveNote');\n }\n const index = num.checkIndex();\n const props = note.getKeyProps()[index];\n const mc = note.getModifierContext();\n const verticalSpaceNeeded = (num.radius * 2) / Tables.STAVE_LINE_DISTANCE + 0.5;\n if (mc) {\n if (pos === ModifierPosition.ABOVE) {\n num.text_line = mc.getState().top_text_line;\n state.top_text_line += verticalSpaceNeeded;\n }\n else if (pos === ModifierPosition.BELOW) {\n num.text_line = mc.getState().text_line;\n state.text_line += verticalSpaceNeeded;\n }\n }\n if (note !== prev_note) {\n for (let n = 0; n < note.keys.length; ++n) {\n if (left_shift === 0) {\n shift_left = Math.max(note.getLeftDisplacedHeadPx(), shift_left);\n }\n if (right_shift === 0) {\n shift_right = Math.max(note.getRightDisplacedHeadPx(), shift_right);\n }\n }\n prev_note = note;\n }\n const glyphLine = modLines === 0 ? props.line : modLines;\n nums_list.push({\n pos,\n note,\n num,\n line: glyphLine,\n shiftL: shift_left,\n shiftR: shift_right,\n });\n }\n // Sort string numbers by line number.\n nums_list.sort((a, b) => b.line - a.line);\n let num_shiftR = 0;\n let x_widthL = 0;\n let x_widthR = 0;\n let last_line = null;\n let last_note = null;\n for (let i = 0; i < nums_list.length; ++i) {\n let num_shift = 0;\n const note = nums_list[i].note;\n const pos = nums_list[i].pos;\n const num = nums_list[i].num;\n const line = nums_list[i].line;\n const shiftR = nums_list[i].shiftR;\n // Reset the position of the string number every line.\n if (line !== last_line || note !== last_note) {\n num_shiftR = right_shift + shiftR;\n }\n const num_width = num.getWidth() + num_spacing;\n if (pos === Modifier.Position.LEFT) {\n num.setXShift(left_shift);\n num_shift = shift_left + num_width; // spacing\n x_widthL = num_shift > x_widthL ? num_shift : x_widthL;\n }\n else if (pos === Modifier.Position.RIGHT) {\n num.setXShift(num_shiftR);\n num_shift += num_width; // spacing\n x_widthR = num_shift > x_widthR ? num_shift : x_widthR;\n }\n last_line = line;\n last_note = note;\n }\n state.left_shift += x_widthL;\n state.right_shift += x_widthR;\n return true;\n }\n setLineEndType(leg) {\n if (leg >= Renderer.LineEndType.NONE && leg <= Renderer.LineEndType.DOWN) {\n this.leg = leg;\n }\n return this;\n }\n setStringNumber(number) {\n this.string_number = number;\n return this;\n }\n setOffsetX(x) {\n this.x_offset = x;\n return this;\n }\n setOffsetY(y) {\n this.y_offset = y;\n return this;\n }\n setLastNote(note) {\n this.last_note = note;\n return this;\n }\n setDashed(dashed) {\n this.dashed = dashed;\n return this;\n }\n setDrawCircle(drawCircle) {\n this.drawCircle = drawCircle;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let dot_x = start.x + this.x_shift + this.x_offset;\n let stem_ext = {};\n if (note.hasStem()) {\n stem_ext = note.checkStem().getExtents();\n }\n let dot_y = start.y + this.y_shift + this.y_offset;\n switch (this.position) {\n case Modifier.Position.ABOVE:\n {\n const ys = note.getYs();\n dot_y = ys.reduce((a, b) => (a < b ? a : b));\n if (note.hasStem() && stemDirection == Stem.UP) {\n dot_y = stem_ext.topY + StringNumber.metrics.stemPadding;\n }\n dot_y -= this.radius + StringNumber.metrics.verticalPadding + this.text_line * Tables.STAVE_LINE_DISTANCE;\n }\n break;\n case Modifier.Position.BELOW:\n {\n const ys = note.getYs();\n dot_y = ys.reduce((a, b) => (a > b ? a : b));\n if (note.hasStem() && stemDirection == Stem.DOWN) {\n dot_y = stem_ext.topY - StringNumber.metrics.stemPadding;\n }\n dot_y += this.radius + StringNumber.metrics.verticalPadding + this.text_line * Tables.STAVE_LINE_DISTANCE;\n }\n break;\n case Modifier.Position.LEFT:\n dot_x -= this.radius / 2 + StringNumber.metrics.leftPadding;\n break;\n case Modifier.Position.RIGHT:\n dot_x += this.radius / 2 + StringNumber.metrics.rightPadding;\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} is invalid`);\n }\n ctx.save();\n if (this.drawCircle) {\n ctx.beginPath();\n ctx.arc(dot_x, dot_y, this.radius, 0, Math.PI * 2, false);\n ctx.setLineWidth(1.5);\n ctx.stroke();\n }\n ctx.setFont(this.textFont);\n const x = dot_x - ctx.measureText(this.string_number).width / 2;\n ctx.fillText('' + this.string_number, x, dot_y + 4.5);\n const lastNote = this.last_note;\n if (isStemmableNote(lastNote)) {\n // Only StemmableNote objects have getStemX().\n const end = lastNote.getStemX() - note.getX() + 5;\n ctx.setStrokeStyle('#000000');\n ctx.setLineCap('round');\n ctx.setLineWidth(0.6);\n if (this.dashed) {\n Renderer.drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 3]);\n }\n else {\n Renderer.drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 0]);\n }\n let len;\n let pattern;\n switch (this.leg) {\n case Renderer.LineEndType.UP:\n len = -10;\n pattern = this.dashed ? [3, 3] : [3, 0];\n Renderer.drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern);\n break;\n case Renderer.LineEndType.DOWN:\n len = 10;\n pattern = this.dashed ? [3, 3] : [3, 0];\n Renderer.drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern);\n break;\n default:\n break;\n }\n }\n ctx.restore();\n }\n}\nStringNumber.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: Font.SIZE,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns\n//\n// This file implements the `Stroke` class which renders chord strokes\n// that can be arpeggiated, brushed, rasquedo, etc.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Category, isNote, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class Stroke extends Modifier {\n constructor(type, options) {\n super();\n this.options = Object.assign({ all_voices: true }, options);\n // multi voice - span stroke across all voices if true\n this.all_voices = this.options.all_voices;\n // multi voice - end note of stroke, set in draw()\n this.type = type;\n this.position = Modifier.Position.LEFT;\n this.render_options = {\n font_scale: 38,\n };\n this.resetFont();\n this.setXShift(0);\n this.setWidth(10);\n }\n static get CATEGORY() {\n return Category.Stroke;\n }\n // Arrange strokes inside `ModifierContext`\n static format(strokes, state) {\n const left_shift = state.left_shift;\n const stroke_spacing = 0;\n if (!strokes || strokes.length === 0)\n return false;\n const strokeList = strokes.map((stroke) => {\n const note = stroke.getNote();\n const index = stroke.checkIndex();\n if (isStaveNote(note)) {\n // Only StaveNote objects have getKeyProps().\n const { line } = note.getKeyProps()[index];\n const shift = note.getLeftDisplacedHeadPx();\n return { line, shift, stroke };\n }\n else if (isTabNote(note)) {\n // Only TabNote objects have getPositions().\n const { str: string } = note.getPositions()[index];\n return { line: string, shift: 0, stroke };\n }\n else {\n throw new RuntimeError('Internal', 'Unexpected instance.');\n }\n });\n const strokeShift = left_shift;\n // There can only be one stroke .. if more than one, they overlay each other\n const xShift = strokeList.reduce((xShift, { stroke, shift }) => {\n stroke.setXShift(strokeShift + shift);\n return Math.max(stroke.getWidth() + stroke_spacing, xShift);\n }, 0);\n state.left_shift += xShift;\n return true;\n }\n getPosition() {\n return this.position;\n }\n addEndNote(note) {\n this.note_end = note;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n let ys = note.getYs();\n let topY = start.y;\n let botY = start.y;\n const x = start.x - 5;\n const line_space = note.checkStave().getSpacingBetweenLines();\n const notes = this.checkModifierContext().getMembers(note.getCategory());\n for (let i = 0; i < notes.length; i++) {\n const note = notes[i];\n if (isNote(note)) {\n // Only Note objects have getYs().\n // note is an instance of either StaveNote or TabNote.\n ys = note.getYs();\n for (let n = 0; n < ys.length; n++) {\n if (this.note === notes[i] || this.all_voices) {\n topY = Math.min(topY, ys[n]);\n botY = Math.max(botY, ys[n]);\n }\n }\n }\n }\n let arrow = '';\n let arrow_shift_x = 0;\n let arrow_y = 0;\n let text_shift_x = 0;\n let text_y = 0;\n switch (this.type) {\n case Stroke.Type.BRUSH_DOWN:\n arrow = 'arrowheadBlackUp';\n arrow_shift_x = -3;\n arrow_y = topY - line_space / 2 + 10;\n botY += line_space / 2;\n break;\n case Stroke.Type.BRUSH_UP:\n arrow = 'arrowheadBlackDown';\n arrow_shift_x = 0.5;\n arrow_y = botY + line_space / 2;\n topY -= line_space / 2;\n break;\n case Stroke.Type.ROLL_DOWN:\n case Stroke.Type.RASQUEDO_DOWN:\n arrow = 'arrowheadBlackUp';\n arrow_shift_x = -3;\n text_shift_x = this.x_shift + arrow_shift_x - 2;\n if (isStaveNote(note)) {\n topY += 1.5 * line_space;\n if ((botY - topY) % 2 !== 0) {\n botY += 0.5 * line_space;\n }\n else {\n botY += line_space;\n }\n arrow_y = topY - line_space;\n text_y = botY + line_space + 2;\n }\n else {\n topY += 1.5 * line_space;\n botY += line_space;\n arrow_y = topY - 0.75 * line_space;\n text_y = botY + 0.25 * line_space;\n }\n break;\n case Stroke.Type.ROLL_UP:\n case Stroke.Type.RASQUEDO_UP:\n arrow = 'arrowheadBlackDown';\n arrow_shift_x = -4;\n text_shift_x = this.x_shift + arrow_shift_x - 1;\n if (isStaveNote(note)) {\n arrow_y = line_space / 2;\n topY += 0.5 * line_space;\n if ((botY - topY) % 2 === 0) {\n botY += line_space / 2;\n }\n arrow_y = botY + 0.5 * line_space;\n text_y = topY - 1.25 * line_space;\n }\n else {\n topY += 0.25 * line_space;\n botY += 0.5 * line_space;\n arrow_y = botY + 0.25 * line_space;\n text_y = topY - line_space;\n }\n break;\n case Stroke.Type.ARPEGGIO_DIRECTIONLESS:\n topY += 0.5 * line_space;\n botY += line_space; // * 0.5 can lead to slight underlap instead of overlap sometimes\n break;\n default:\n throw new RuntimeError('InvalidType', `The stroke type ${this.type} does not exist`);\n }\n let strokeLine = 'straight';\n // Draw the stroke\n if (this.type === Stroke.Type.BRUSH_DOWN || this.type === Stroke.Type.BRUSH_UP) {\n ctx.fillRect(x + this.x_shift, topY, 1, botY - topY);\n }\n else {\n strokeLine = 'wiggly';\n if (isStaveNote(note)) {\n for (let i = topY; i <= botY; i += line_space) {\n Glyph.renderGlyph(ctx, x + this.x_shift - 4, i, this.render_options.font_scale, 'vexWiggleArpeggioUp');\n }\n }\n else {\n let i;\n for (i = topY; i <= botY; i += 10) {\n Glyph.renderGlyph(ctx, x + this.x_shift - 4, i, this.render_options.font_scale, 'vexWiggleArpeggioUp');\n }\n if (this.type === Stroke.Type.RASQUEDO_DOWN) {\n text_y = i + 0.25 * line_space;\n }\n }\n }\n if (this.type === Stroke.Type.ARPEGGIO_DIRECTIONLESS) {\n return; // skip drawing arrow heads or text\n }\n // Draw the arrow head\n Glyph.renderGlyph(ctx, x + this.x_shift + arrow_shift_x, arrow_y, this.render_options.font_scale, arrow, {\n category: `stroke.${arrow}.${strokeLine}`,\n });\n // Draw the rasquedo \"R\"\n if (this.type === Stroke.Type.RASQUEDO_DOWN || this.type === Stroke.Type.RASQUEDO_UP) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText('R', x + text_shift_x, text_y);\n ctx.restore();\n }\n }\n}\nStroke.Type = {\n BRUSH_DOWN: 1,\n BRUSH_UP: 2,\n ROLL_DOWN: 3,\n ROLL_UP: 4,\n RASQUEDO_DOWN: 5,\n RASQUEDO_UP: 6,\n ARPEGGIO_DIRECTIONLESS: 7, // Arpeggiated chord without upwards or downwards arrow\n};\nStroke.TEXT_FONT = {\n family: Font.SERIF,\n size: Font.SIZE,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Bend } from './bend';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\n/** `Vibrato` implements diverse vibratos. */\nexport class Vibrato extends Modifier {\n constructor() {\n super();\n this.position = Modifier.Position.RIGHT;\n this.render_options = {\n harsh: false,\n vibrato_width: 20,\n wave_height: 6,\n wave_width: 4,\n wave_girth: 2,\n };\n this.setVibratoWidth(this.render_options.vibrato_width);\n }\n static get CATEGORY() {\n return Category.Vibrato;\n }\n /** Arrange vibratos inside a `ModifierContext`. */\n static format(vibratos, state, context) {\n if (!vibratos || vibratos.length === 0)\n return false;\n // Vibratos are always on top.\n let text_line = state.top_text_line;\n let width = 0;\n let shift = state.right_shift - 7;\n // If there's a bend, drop the text line\n const bends = context.getMembers(Bend.CATEGORY);\n if (bends && bends.length > 0) {\n const bendHeight = bends.map((bb) => bb.getTextHeight()).reduce((a, b) => (a > b ? a : b)) / Tables.STAVE_LINE_DISTANCE;\n text_line = text_line - (bendHeight + 1);\n }\n else {\n state.top_text_line += 1;\n }\n // Format Vibratos\n for (let i = 0; i < vibratos.length; ++i) {\n const vibrato = vibratos[i];\n vibrato.setXShift(shift);\n vibrato.setTextLine(text_line);\n width += vibrato.getWidth();\n shift += width;\n }\n state.right_shift += width;\n return true;\n }\n /** Set harsh vibrato. */\n setHarsh(harsh) {\n this.render_options.harsh = harsh;\n return this;\n }\n /** Set vibrato width in pixels. */\n setVibratoWidth(width) {\n this.render_options.vibrato_width = width;\n this.setWidth(width);\n return this;\n }\n /** Draw the vibrato on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(Modifier.Position.RIGHT, this.index);\n const vx = start.x + this.x_shift;\n const vy = note.getYForTopText(this.text_line) + 2;\n Vibrato.renderVibrato(ctx, vx, vy, this.render_options);\n }\n /**\n * Static rendering method that can be called from\n * other classes (e.g. VibratoBracket).\n */\n static renderVibrato(ctx, x, y, opts) {\n const { harsh, vibrato_width, wave_width, wave_girth, wave_height } = opts;\n const num_waves = vibrato_width / wave_width;\n ctx.beginPath();\n let i;\n if (harsh) {\n ctx.moveTo(x, y + wave_girth + 1);\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.lineTo(x + wave_width, y - wave_height / 2);\n x += wave_width;\n ctx.lineTo(x + wave_width, y + wave_height / 2);\n x += wave_width;\n }\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.lineTo(x - wave_width, y - wave_height / 2 + wave_girth + 1);\n x -= wave_width;\n ctx.lineTo(x - wave_width, y + wave_height / 2 + wave_girth + 1);\n x -= wave_width;\n }\n ctx.fill();\n }\n else {\n ctx.moveTo(x, y + wave_girth);\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.quadraticCurveTo(x + wave_width / 2, y - wave_height / 2, x + wave_width, y);\n x += wave_width;\n ctx.quadraticCurveTo(x + wave_width / 2, y + wave_height / 2, x + wave_width, y);\n x += wave_width;\n }\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.quadraticCurveTo(x - wave_width / 2, y + wave_height / 2 + wave_girth, x - wave_width, y + wave_girth);\n x -= wave_width;\n ctx.quadraticCurveTo(x - wave_width / 2, y - wave_height / 2 + wave_girth, x - wave_width, y + wave_girth);\n x -= wave_width;\n }\n ctx.fill();\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This class implements various types of members to notes (e.g. bends,\n// fingering positions etc.)\nimport { Accidental } from './accidental';\nimport { Annotation } from './annotation';\nimport { Articulation } from './articulation';\nimport { Bend } from './bend';\nimport { ChordSymbol } from './chordsymbol';\nimport { Dot } from './dot';\nimport { FretHandFinger } from './frethandfinger';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { Parenthesis } from './parenthesis';\nimport { StaveNote } from './stavenote';\nimport { StringNumber } from './stringnumber';\nimport { Stroke } from './strokes';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\nimport { Vibrato } from './vibrato';\n// To enable logging for this class. Set `Vex.Flow.ModifierContext.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (ModifierContext.DEBUG)\n log('Vex.Flow.ModifierContext', args);\n}\nexport class ModifierContext {\n constructor() {\n // Formatting data.\n this.state = {\n left_shift: 0,\n right_shift: 0,\n text_line: 0,\n top_text_line: 0,\n };\n // Current members\n this.members = {};\n this.preFormatted = false;\n this.postFormatted = false;\n this.formatted = false;\n this.width = 0;\n this.spacing = 0;\n }\n addModifier(member) {\n L('addModifier is deprecated, use addMember instead.');\n return this.addMember(member);\n }\n /**\n * this.members maps CATEGORY strings to arrays of Tickable | Modifier | StaveNote | TabNote.\n * Here we add a new member to this.members, and create a new array if needed.\n * @param member\n * @returns this\n */\n addMember(member) {\n const category = member.getCategory();\n if (!this.members[category]) {\n this.members[category] = [];\n }\n this.members[category].push(member);\n member.setModifierContext(this);\n this.preFormatted = false;\n return this;\n }\n /**\n * @deprecated\n */\n getModifiers(category) {\n L('getModifiers is deprecated, use getMembers instead.');\n return this.getMembers(category);\n }\n getMembers(category) {\n var _a;\n return (_a = this.members[category]) !== null && _a !== void 0 ? _a : [];\n }\n getWidth() {\n return this.width;\n }\n getLeftShift() {\n return this.state.left_shift;\n }\n getRightShift() {\n return this.state.right_shift;\n }\n getState() {\n return this.state;\n }\n getMetrics() {\n if (!this.formatted) {\n throw new RuntimeError('UnformattedMember', 'Unformatted member has no metrics.');\n }\n return {\n width: this.state.left_shift + this.state.right_shift + this.spacing,\n spacing: this.spacing,\n };\n }\n preFormat() {\n if (this.preFormatted)\n return;\n L('Preformatting ModifierContext');\n const state = this.state;\n const members = this.members;\n // The ordering below determines when different members are formatted and rendered.\n StaveNote.format(members[Category.StaveNote], state);\n Parenthesis.format(members[Category.Parenthesis], state);\n Dot.format(members[Category.Dot], state);\n FretHandFinger.format(members[Category.FretHandFinger], state);\n Accidental.format(members[Category.Accidental], state);\n Stroke.format(members[Category.Stroke], state);\n GraceNoteGroup.format(members[Category.GraceNoteGroup], state);\n NoteSubGroup.format(members[Category.NoteSubGroup], state);\n StringNumber.format(members[Category.StringNumber], state);\n Articulation.format(members[Category.Articulation], state);\n Ornament.format(members[Category.Ornament], state);\n Annotation.format(members[Category.Annotation], state);\n ChordSymbol.format(members[Category.ChordSymbol], state);\n Bend.format(members[Category.Bend], state);\n Vibrato.format(members[Category.Vibrato], state, this);\n // Update width of this member context\n this.width = state.left_shift + state.right_shift;\n this.preFormatted = true;\n }\n postFormat() {\n if (this.postFormatted)\n return;\n L('Postformatting ModifierContext');\n // If post-formatting is required for an element, add more lines below.\n StaveNote.postFormat(this.getMembers(Category.StaveNote));\n }\n}\nModifierContext.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna Cheppudira 2013.\n// Co-author: Benjamin W. Bohl\n// MIT License\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Clef.DEBUG)\n log('Vex.Flow.Clef', args);\n}\n/**\n * Clef implements various types of clefs that can be rendered on a stave.\n *\n * See `tests/clef_tests.ts` for usage examples.\n */\nexport class Clef extends StaveModifier {\n /** Create a new clef. */\n constructor(type, size, annotation) {\n super();\n /**\n * The attribute `clef` must be a key from\n * `Clef.types`\n */\n this.clef = Clef.types['treble'];\n this.setPosition(StaveModifierPosition.BEGIN);\n this.setType(type, size, annotation);\n this.setWidth(Tables.currentMusicFont().lookupMetric(`clef.${this.size}.width`));\n L('Creating clef:', type);\n }\n static get CATEGORY() {\n return Category.Clef;\n }\n /**\n * Every clef name is associated with a glyph code from the font file\n * and a default stave line number.\n */\n static get types() {\n return {\n treble: {\n code: 'gClef',\n line: 3,\n point: 0,\n },\n bass: {\n code: 'fClef',\n line: 1,\n point: 0,\n },\n alto: {\n code: 'cClef',\n line: 2,\n point: 0,\n },\n tenor: {\n code: 'cClef',\n line: 1,\n point: 0,\n },\n percussion: {\n code: 'restMaxima',\n line: 2,\n point: 0,\n },\n soprano: {\n code: 'cClef',\n line: 4,\n point: 0,\n },\n 'mezzo-soprano': {\n code: 'cClef',\n line: 3,\n point: 0,\n },\n 'baritone-c': {\n code: 'cClef',\n line: 0,\n point: 0,\n },\n 'baritone-f': {\n code: 'fClef',\n line: 2,\n point: 0,\n },\n subbass: {\n code: 'fClef',\n line: 0,\n point: 0,\n },\n french: {\n code: 'gClef',\n line: 4,\n point: 0,\n },\n tab: {\n code: '6stringTabClef',\n point: 0,\n },\n };\n }\n /** Set clef type, size and annotation. */\n setType(type, size, annotation) {\n this.type = type;\n this.clef = Clef.types[type];\n if (size === undefined) {\n this.size = 'default';\n }\n else {\n this.size = size;\n }\n const musicFont = Tables.currentMusicFont();\n this.clef.point = musicFont.lookupMetric(`clef.${this.size}.point`, 0);\n this.glyph = new Glyph(this.clef.code, this.clef.point, {\n category: `clef.${this.clef.code}.${this.size}`,\n });\n // If an annotation, such as 8va, is specified, add it to the Clef object.\n if (annotation !== undefined) {\n const code = musicFont.lookupMetric(`clef.annotations.${annotation}.smuflCode`);\n const point = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.point`);\n const line = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.${this.type}.line`);\n const x_shift = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.${this.type}.shiftX`);\n this.annotation = { code, point, line, x_shift };\n this.attachment = new Glyph(this.annotation.code, this.annotation.point);\n this.attachment.metrics.x_max = 0;\n this.attachment.setXShift(this.annotation.x_shift);\n }\n else {\n this.annotation = undefined;\n }\n return this;\n }\n /** Get clef width. */\n getWidth() {\n if (this.type === 'tab') {\n defined(this.stave, 'ClefError', \"Can't get width without stave.\");\n }\n return this.width;\n }\n /** Set associated stave. */\n setStave(stave) {\n this.stave = stave;\n if (this.type === 'tab') {\n const glyph = defined(this.glyph, 'ClefError', \"Can't set stave without glyph.\");\n const numLines = this.stave.getNumLines();\n const musicFont = Tables.currentMusicFont();\n const point = musicFont.lookupMetric(`clef.lineCount.${numLines}.point`);\n const shiftY = musicFont.lookupMetric(`clef.lineCount.${numLines}.shiftY`);\n glyph.setPoint(point);\n glyph.setYShift(shiftY);\n }\n return this;\n }\n /** Render clef. */\n draw() {\n const glyph = defined(this.glyph, 'ClefError', \"Can't draw clef without glyph.\");\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('clef', this.getAttribute('id'));\n glyph.setStave(stave);\n glyph.setContext(ctx);\n if (this.clef.line !== undefined) {\n this.placeGlyphOnLine(glyph, stave, this.clef.line);\n }\n glyph.renderToStave(this.x);\n if (this.annotation !== undefined && this.attachment !== undefined) {\n this.placeGlyphOnLine(this.attachment, stave, this.annotation.line);\n this.attachment.setStave(stave);\n this.attachment.setContext(ctx);\n this.attachment.renderToStave(this.x);\n }\n ctx.closeGroup();\n }\n}\n/** To enable logging for this class, set `Vex.Flow.Clef.DEBUG` to `true`. */\nClef.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n//\n// ## Description\n//\n// This file implements key signatures. A key signature sits on a stave\n// and indicates the notes with implicit accidentals.\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined } from './util';\nexport class KeySignature extends StaveModifier {\n // Create a new Key Signature based on a `key_spec`\n constructor(keySpec, cancelKeySpec, alterKeySpec) {\n super();\n this.accList = [];\n this.setKeySig(keySpec, cancelKeySpec, alterKeySpec);\n this.setPosition(StaveModifierPosition.BEGIN);\n this.glyphFontScale = 38; // TODO(0xFE): Should this match StaveNote?\n this.glyphs = [];\n this.xPositions = []; // relative to this.x\n this.paddingForced = false;\n }\n static get CATEGORY() {\n return Category.KeySignature;\n }\n // Add an accidental glyph to the `KeySignature` instance which represents\n // the provided `acc`. If `nextAcc` is also provided, the appropriate\n // spacing will be included in the glyph's position\n convertToGlyph(acc, nextAcc) {\n const accGlyphData = Tables.accidentalCodes(acc.type);\n const glyph = new Glyph(accGlyphData.code, this.glyphFontScale);\n // Determine spacing between current accidental and the next accidental\n let extraWidth = 1;\n if (acc.type === 'n' && nextAcc) {\n const spacing = KeySignature.accidentalSpacing[nextAcc.type];\n if (spacing) {\n const isAbove = nextAcc.line >= acc.line;\n extraWidth = isAbove ? spacing.above : spacing.below;\n }\n }\n // Place the glyph on the stave\n this.placeGlyphOnLine(glyph, this.checkStave(), acc.line);\n this.glyphs.push(glyph);\n const xPosition = this.xPositions[this.xPositions.length - 1];\n const glyphWidth = glyph.getMetrics().width + extraWidth;\n // Store the next accidental's x position\n this.xPositions.push(xPosition + glyphWidth);\n // Expand size of key signature\n this.width += glyphWidth;\n }\n // Cancel out a key signature provided in the `spec` parameter. This will\n // place appropriate natural accidentals before the key signature.\n cancelKey(spec) {\n this.formatted = false;\n this.cancelKeySpec = spec;\n return this;\n }\n convertToCancelAccList(spec) {\n // Get the accidental list for the cancelled key signature\n const cancel_accList = Tables.keySignature(spec);\n // If the cancelled key has a different accidental type, ie: # vs b\n const different_types = this.accList.length > 0 && cancel_accList.length > 0 && cancel_accList[0].type !== this.accList[0].type;\n // Determine how many naturals needed to add\n const naturals = different_types ? cancel_accList.length : cancel_accList.length - this.accList.length;\n // Return if no naturals needed\n if (naturals < 1)\n return undefined;\n // Get the line position for each natural\n const cancelled = [];\n for (let i = 0; i < naturals; i++) {\n let index = i;\n if (!different_types) {\n index = cancel_accList.length - naturals + i;\n }\n const acc = cancel_accList[index];\n cancelled.push({ type: 'n', line: acc.line });\n }\n // Combine naturals with main accidental list for the key signature\n this.accList = cancelled.concat(this.accList);\n return {\n accList: cancelled,\n type: cancel_accList[0].type,\n };\n }\n // Deprecated\n addToStave(stave) {\n this.paddingForced = true;\n stave.addModifier(this);\n return this;\n }\n // Apply the accidental staff line placement based on the `clef` and\n // the accidental `type` for the key signature ('# or 'b').\n convertAccLines(clef, type, accList = this.accList) {\n let offset = 0.0; // if clef === \"treble\"\n let customLines; // when clef doesn't follow treble key sig shape\n switch (clef) {\n // Treble & Subbass both have offsets of 0, so are not included.\n case 'soprano':\n if (type === '#')\n customLines = [2.5, 0.5, 2, 0, 1.5, -0.5, 1];\n else\n offset = -1;\n break;\n case 'mezzo-soprano':\n if (type === 'b')\n customLines = [0, 2, 0.5, 2.5, 1, 3, 1.5];\n else\n offset = 1.5;\n break;\n case 'alto':\n offset = 0.5;\n break;\n case 'tenor':\n if (type === '#')\n customLines = [3, 1, 2.5, 0.5, 2, 0, 1.5];\n else\n offset = -0.5;\n break;\n case 'baritone-f':\n case 'baritone-c':\n if (type === 'b')\n customLines = [0.5, 2.5, 1, 3, 1.5, 3.5, 2];\n else\n offset = 2;\n break;\n case 'bass':\n case 'french':\n offset = 1;\n break;\n default:\n break;\n }\n // If there's a special case, assign those lines/spaces:\n let i;\n if (typeof customLines !== 'undefined') {\n for (i = 0; i < accList.length; ++i) {\n accList[i].line = customLines[i];\n }\n }\n else if (offset !== 0) {\n for (i = 0; i < accList.length; ++i) {\n accList[i].line += offset;\n }\n }\n }\n getPadding(index) {\n if (!this.formatted)\n this.format();\n return this.glyphs.length === 0 || (!this.paddingForced && index < 2) ? 0 : this.padding;\n }\n getWidth() {\n if (!this.formatted)\n this.format();\n return this.width;\n }\n setKeySig(keySpec, cancelKeySpec, alterKeySpec) {\n this.formatted = false;\n this.keySpec = keySpec;\n this.cancelKeySpec = cancelKeySpec;\n this.alterKeySpec = alterKeySpec;\n return this;\n }\n // Alter the accidentals of a key spec one by one.\n // Each alteration is a new accidental that replaces the\n // original accidental (or the canceled one).\n alterKey(alterKeySpec) {\n this.formatted = false;\n this.alterKeySpec = alterKeySpec;\n return this;\n }\n convertToAlterAccList(alterKeySpec) {\n const max = Math.min(alterKeySpec.length, this.accList.length);\n for (let i = 0; i < max; ++i) {\n if (alterKeySpec[i]) {\n this.accList[i].type = alterKeySpec[i];\n }\n }\n }\n format() {\n const stave = this.checkStave();\n this.width = 0;\n this.glyphs = [];\n this.xPositions = [0]; // initialize with initial x position\n this.accList = Tables.keySignature(defined(this.keySpec));\n const accList = this.accList;\n const firstAccidentalType = accList.length > 0 ? accList[0].type : undefined;\n let cancelAccList;\n if (this.cancelKeySpec) {\n cancelAccList = this.convertToCancelAccList(this.cancelKeySpec);\n }\n if (this.alterKeySpec) {\n this.convertToAlterAccList(this.alterKeySpec);\n }\n if (this.accList.length > 0) {\n const clef = (this.position === StaveModifierPosition.END ? stave.getEndClef() : stave.getClef()) || stave.getClef();\n if (cancelAccList) {\n this.convertAccLines(clef, cancelAccList.type, cancelAccList.accList);\n }\n this.convertAccLines(clef, firstAccidentalType, accList);\n for (let i = 0; i < this.accList.length; ++i) {\n this.convertToGlyph(this.accList[i], this.accList[i + 1]);\n }\n }\n this.formatted = true;\n }\n /**\n * Return the Glyph objects making up this KeySignature.\n */\n getGlyphs() {\n if (!this.formatted)\n this.format();\n return this.glyphs;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n if (!this.formatted)\n this.format();\n this.setRendered();\n ctx.openGroup('keysignature', this.getAttribute('id'));\n for (let i = 0; i < this.glyphs.length; i++) {\n const glyph = this.glyphs[i];\n const x = this.x + this.xPositions[i];\n glyph.setStave(stave);\n glyph.setContext(ctx);\n glyph.renderToStave(x);\n }\n ctx.closeGroup();\n }\n}\n// Space between natural and following accidental depending\n// on vertical position\nKeySignature.accidentalSpacing = {\n '#': {\n above: 6,\n below: 4,\n },\n b: {\n above: 4,\n below: 7,\n },\n n: {\n above: 4,\n below: 1,\n },\n '##': {\n above: 6,\n below: 4,\n },\n bb: {\n above: 4,\n below: 7,\n },\n db: {\n above: 4,\n below: 7,\n },\n d: {\n above: 4,\n below: 7,\n },\n bbs: {\n above: 4,\n below: 7,\n },\n '++': {\n above: 6,\n below: 4,\n },\n '+': {\n above: 6,\n below: 4,\n },\n '+-': {\n above: 6,\n below: 4,\n },\n '++-': {\n above: 6,\n below: 4,\n },\n bs: {\n above: 4,\n below: 10,\n },\n bss: {\n above: 4,\n below: 10,\n },\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { StaveModifier } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport class Repetition extends StaveModifier {\n constructor(type, x, y_shift) {\n super();\n this.symbol_type = type;\n this.x = x;\n this.x_shift = 0;\n this.y_shift = y_shift;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.Repetition;\n }\n setShiftX(x) {\n this.x_shift = x;\n return this;\n }\n setShiftY(y) {\n this.y_shift = y;\n return this;\n }\n draw(stave, x) {\n this.setRendered();\n switch (this.symbol_type) {\n case Repetition.type.CODA_RIGHT:\n this.drawCodaFixed(stave, x + stave.getWidth());\n break;\n case Repetition.type.CODA_LEFT:\n this.drawSymbolText(stave, x, 'Coda', true);\n break;\n case Repetition.type.SEGNO_LEFT:\n this.drawSignoFixed(stave, x);\n break;\n case Repetition.type.SEGNO_RIGHT:\n this.drawSignoFixed(stave, x + stave.getWidth());\n break;\n case Repetition.type.DC:\n this.drawSymbolText(stave, x, 'D.C.', false);\n break;\n case Repetition.type.DC_AL_CODA:\n this.drawSymbolText(stave, x, 'D.C. al', true);\n break;\n case Repetition.type.DC_AL_FINE:\n this.drawSymbolText(stave, x, 'D.C. al Fine', false);\n break;\n case Repetition.type.DS:\n this.drawSymbolText(stave, x, 'D.S.', false);\n break;\n case Repetition.type.DS_AL_CODA:\n this.drawSymbolText(stave, x, 'D.S. al', true);\n break;\n case Repetition.type.DS_AL_FINE:\n this.drawSymbolText(stave, x, 'D.S. al Fine', false);\n break;\n case Repetition.type.FINE:\n this.drawSymbolText(stave, x, 'Fine', false);\n break;\n case Repetition.type.TO_CODA:\n this.drawSymbolText(stave, x, 'To', true);\n break;\n default:\n break;\n }\n return this;\n }\n drawCodaFixed(stave, x) {\n const y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n Glyph.renderGlyph(stave.checkContext(), this.x + x + this.x_shift, y + Tables.currentMusicFont().lookupMetric('staveRepetition.coda.offsetY'), 40, 'coda', { category: 'coda' });\n return this;\n }\n drawSignoFixed(stave, x) {\n const y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n Glyph.renderGlyph(stave.checkContext(), this.x + x + this.x_shift, y + Tables.currentMusicFont().lookupMetric('staveRepetition.segno.offsetY'), 30, 'segno', { category: 'segno' });\n return this;\n }\n drawSymbolText(stave, x, text, draw_coda) {\n const ctx = stave.checkContext();\n ctx.save();\n ctx.setFont(this.textFont);\n let text_x = 0;\n let symbol_x = 0;\n const modifierWidth = stave.getNoteStartX() - this.x;\n switch (this.symbol_type) {\n // To the left with symbol\n case Repetition.type.CODA_LEFT:\n // Offset Coda text to right of stave beginning\n text_x = this.x + stave.getVerticalBarWidth();\n symbol_x =\n text_x +\n ctx.measureText(text).width +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n break;\n // To the right without symbol\n case Repetition.type.DC:\n case Repetition.type.DC_AL_FINE:\n case Repetition.type.DS:\n case Repetition.type.DS_AL_FINE:\n case Repetition.type.FINE:\n text_x =\n this.x +\n x +\n this.x_shift +\n stave.getWidth() -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.spacing') -\n modifierWidth -\n ctx.measureText(text).width;\n break;\n // To the right with symbol\n default:\n text_x =\n this.x +\n x +\n this.x_shift +\n stave.getWidth() -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.spacing') -\n modifierWidth -\n ctx.measureText(text).width -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n symbol_x =\n text_x +\n ctx.measureText(text).width +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n break;\n }\n const y = stave.getYForTopText(stave.getNumLines()) +\n this.y_shift +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetY');\n if (draw_coda) {\n Glyph.renderGlyph(ctx, symbol_x, y, 40, 'coda', { category: 'coda' });\n }\n ctx.fillText(text, text_x, y + 5);\n ctx.restore();\n return this;\n }\n}\nRepetition.TEXT_FONT = {\n family: Font.SERIF,\n size: 12,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\nRepetition.type = {\n NONE: 1,\n CODA_LEFT: 2,\n CODA_RIGHT: 3,\n SEGNO_LEFT: 4,\n SEGNO_RIGHT: 5,\n DC: 6,\n DC_AL_CODA: 7,\n DC_AL_FINE: 8,\n DS: 9,\n DS_AL_CODA: 10,\n DS_AL_FINE: 11,\n FINE: 12,\n TO_CODA: 13, // To Coda at end of stave\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier } from './stavemodifier';\nimport { Category } from './typeguard';\nexport class StaveSection extends StaveModifier {\n constructor(section, x, shift_y, drawRect = true) {\n super();\n this.setWidth(16);\n this.section = section;\n this.x = x;\n this.shift_x = 0;\n this.shift_y = shift_y;\n this.drawRect = drawRect;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveSection;\n }\n setStaveSection(section) {\n this.section = section;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n draw(stave, shift_x) {\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n const paddingX = 2;\n const paddingY = 2;\n const rectWidth = 2;\n const textMeasurements = ctx.measureText(this.section);\n const textWidth = textMeasurements.width;\n const textHeight = textMeasurements.height;\n const width = textWidth + 2 * paddingX; // add left & right padding\n const height = textHeight + 2 * paddingY; // add top & bottom padding\n // Seems to be a good default y\n const y = stave.getYForTopText(1.5) + this.shift_y;\n const x = this.x + shift_x;\n if (this.drawRect) {\n ctx.beginPath();\n ctx.setLineWidth(rectWidth);\n ctx.rect(x, y + textMeasurements.y - paddingY, width, height);\n ctx.stroke();\n }\n ctx.fillText(this.section, x + paddingX, y);\n ctx.restore();\n return this;\n }\n}\nStaveSection.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 10,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Radosaw Eichler 2012\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport class StaveTempo extends StaveModifier {\n constructor(tempo, x, shift_y) {\n super();\n /** Font size for note. */\n this.render_options = { glyph_font_scale: 30 };\n this.tempo = tempo;\n this.position = StaveModifierPosition.ABOVE;\n this.x = x;\n this.shift_x = 10;\n this.shift_y = shift_y;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveTempo;\n }\n setTempo(tempo) {\n this.tempo = tempo;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n draw(stave, shift_x) {\n const ctx = stave.checkContext();\n this.setRendered();\n const options = this.render_options;\n // FIXME: What does the '38' mean? Why 38? Is that supposed to\n // be the default font size for standard notation?\n const scale = options.glyph_font_scale / 38;\n const name = this.tempo.name;\n const duration = this.tempo.duration;\n const dots = this.tempo.dots || 0;\n const bpm = this.tempo.bpm;\n let x = this.x + this.shift_x + shift_x;\n const y = stave.getYForTopText(1) + this.shift_y;\n ctx.save();\n if (name) {\n ctx.setFont(this.textFont);\n ctx.fillText(name, x, y);\n x += ctx.measureText(name).width;\n }\n if (duration && bpm) {\n // Override the weight and style.\n ctx.setFont(Object.assign(Object.assign({}, this.textFont), { weight: 'normal', style: 'normal' }));\n if (name) {\n x += ctx.measureText(' ').width;\n ctx.fillText('(', x, y);\n x += ctx.measureText('(').width;\n }\n const code = Tables.getGlyphProps(duration);\n x += 3 * scale;\n Glyph.renderGlyph(ctx, x, y, options.glyph_font_scale, code.code_head);\n x += code.getWidth() * scale;\n // Draw stem and flags\n if (code.stem) {\n let stem_height = 30;\n if (code.beam_count)\n stem_height += 3 * (code.beam_count - 1);\n stem_height *= scale;\n const y_top = y - stem_height;\n ctx.fillRect(x - scale, y_top, scale, stem_height);\n if (code.flag) {\n Glyph.renderGlyph(ctx, x, y_top, options.glyph_font_scale, code.code_flag_upstem, {\n category: 'flag.staveTempo',\n });\n if (!dots)\n x += 6 * scale;\n }\n }\n // Draw dot\n for (let i = 0; i < dots; i++) {\n x += 6 * scale;\n ctx.beginPath();\n ctx.arc(x, y + 2 * scale, 2 * scale, 0, Math.PI * 2, false);\n ctx.fill();\n }\n ctx.fillText(' = ' + bpm + (name ? ')' : ''), x + 3 * scale, y);\n }\n ctx.restore();\n return this;\n }\n}\nStaveTempo.TEXT_FONT = {\n family: Font.SERIF,\n size: 14,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { TextJustification, TextNote } from './textnote';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveText extends StaveModifier {\n constructor(text, position, options = {}) {\n super();\n this.setWidth(16);\n this.text = text;\n this.position = position;\n this.options = Object.assign({ shift_x: 0, shift_y: 0, justification: TextNote.Justification.CENTER }, options);\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveText;\n }\n setStaveText(text) {\n this.text = text;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n setText(text) {\n this.text = text;\n return this;\n }\n draw(stave) {\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n const text_width = ctx.measureText('' + this.text).width;\n let x;\n let y;\n switch (this.position) {\n case StaveModifierPosition.LEFT:\n case StaveModifierPosition.RIGHT:\n y = (stave.getYForLine(0) + stave.getBottomLineY()) / 2 + this.options.shift_y;\n if (this.position === StaveModifierPosition.LEFT) {\n x = stave.getX() - text_width - 24 + this.options.shift_x;\n }\n else {\n x = stave.getX() + stave.getWidth() + 24 + this.options.shift_x;\n }\n break;\n case StaveModifierPosition.ABOVE:\n case StaveModifierPosition.BELOW:\n x = stave.getX() + this.options.shift_x;\n if (this.options.justification === TextJustification.CENTER) {\n x += stave.getWidth() / 2 - text_width / 2;\n }\n else if (this.options.justification === TextJustification.RIGHT) {\n x += stave.getWidth() - text_width;\n }\n if (this.position === StaveModifierPosition.ABOVE) {\n y = stave.getYForTopText(2) + this.options.shift_y;\n }\n else {\n y = stave.getYForBottomText(2) + this.options.shift_y;\n }\n break;\n default:\n throw new RuntimeError('InvalidPosition', 'Value Must be in Modifier.Position.');\n }\n ctx.fillText('' + this.text, x, y + 4);\n ctx.restore();\n return this;\n }\n}\nStaveText.TEXT_FONT = {\n family: Font.SERIF,\n size: 16,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Renders time signatures glyphs for staffs\n// This class is used by TimeSignature to render the associated glyphs\nimport { Glyph } from './glyph';\nimport { defined } from './util';\nexport class TimeSignatureGlyph extends Glyph {\n constructor(timeSignature, topDigits, botDigits, code, point, options) {\n var _a;\n super(code, point, options);\n this.timeSignature = timeSignature;\n this.topGlyphs = [];\n this.botGlyphs = [];\n let topWidth = 0;\n for (let i = 0; i < topDigits.length; ++i) {\n let timeSigType = topDigits[i];\n switch (topDigits[i]) {\n case '-':\n timeSigType = 'Minus';\n break;\n case '+':\n timeSigType = botDigits.length > 0 ? 'PlusSmall' : 'Plus';\n break;\n case '(':\n timeSigType = botDigits.length > 0 ? 'ParensLeftSmall' : 'ParensLeft';\n break;\n case ')':\n timeSigType = botDigits.length > 0 ? 'ParensRightSmall' : 'ParensRight';\n break;\n }\n const topGlyph = new Glyph('timeSig' + timeSigType, this.timeSignature.point);\n this.topGlyphs.push(topGlyph);\n topWidth += (_a = topGlyph.getMetrics().width) !== null && _a !== void 0 ? _a : 0;\n }\n let botWidth = 0;\n for (let i = 0; i < botDigits.length; ++i) {\n let timeSigType = botDigits[i];\n switch (botDigits[i]) {\n case '+':\n timeSigType = 'PlusSmall';\n break;\n case '(':\n timeSigType = 'ParensLeftSmall';\n break;\n case ')':\n timeSigType = 'ParensRightSmall';\n break;\n }\n const botGlyph = new Glyph('timeSig' + timeSigType, this.timeSignature.point);\n this.botGlyphs.push(botGlyph);\n botWidth += defined(botGlyph.getMetrics().width);\n }\n this.width = Math.max(topWidth, botWidth);\n this.xMin = this.getMetrics().x_min;\n this.topStartX = (this.width - topWidth) / 2.0;\n this.botStartX = (this.width - botWidth) / 2.0;\n this.reset();\n }\n getMetrics() {\n return {\n x_min: this.xMin,\n x_max: this.xMin + this.width,\n width: this.width,\n };\n }\n renderToStave(x) {\n const stave = this.checkStave();\n const ctx = this.checkContext();\n let start_x = x + this.topStartX;\n let y = 0;\n if (this.botGlyphs.length > 0)\n y = stave.getYForLine(this.timeSignature.topLine);\n else\n y = (stave.getYForLine(this.timeSignature.topLine) + stave.getYForLine(this.timeSignature.bottomLine)) / 2;\n for (let i = 0; i < this.topGlyphs.length; ++i) {\n const glyph = this.topGlyphs[i];\n Glyph.renderOutline(ctx, glyph.getMetrics().outline, this.scale, start_x + this.x_shift, y);\n start_x += defined(glyph.getMetrics().width);\n }\n start_x = x + this.botStartX;\n y = stave.getYForLine(this.timeSignature.bottomLine);\n for (let i = 0; i < this.botGlyphs.length; ++i) {\n const glyph = this.botGlyphs[i];\n this.timeSignature.placeGlyphOnLine(glyph, stave, 0);\n Glyph.renderOutline(ctx, glyph.getMetrics().outline, this.scale, start_x + glyph.getMetrics().x_shift, y);\n start_x += defined(glyph.getMetrics().width);\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Implements time signatures glyphs for staffs\n// See tables.js for the internal time signatures\n// representation\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { TimeSignatureGlyph } from './timesigglyph';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nconst assertIsValidTimeSig = (timeSpec) => {\n const numbers = timeSpec.split('/');\n if (numbers.length !== 2 && numbers[0] !== '+' && numbers[0] !== '-') {\n throw new RuntimeError('BadTimeSignature', `Invalid time spec: ${timeSpec}. Must be in the form \"/\"`);\n }\n numbers.forEach((number) => {\n // Characters consisting in number 0..9, '+', '-', '(' or ')'\n if (/^[0-9+\\-()]+$/.test(number) == false) {\n throw new RuntimeError('BadTimeSignature', `Invalid time spec: ${timeSpec}. Must contain valid signatures.`);\n }\n });\n};\nexport class TimeSignature extends StaveModifier {\n constructor(timeSpec = '4/4', customPadding = 15, validate_args = true) {\n super();\n this.validate_args = validate_args;\n const padding = customPadding;\n const musicFont = Tables.currentMusicFont();\n this.point = musicFont.lookupMetric('digits.point');\n const fontLineShift = musicFont.lookupMetric('digits.shiftLine', 0);\n this.topLine = 2 + fontLineShift;\n this.bottomLine = 4 + fontLineShift;\n this.setPosition(StaveModifierPosition.BEGIN);\n this.info = this.parseTimeSpec(timeSpec);\n this.setWidth(defined(this.info.glyph.getMetrics().width));\n this.setPadding(padding);\n }\n static get CATEGORY() {\n return Category.TimeSignature;\n }\n static get glyphs() {\n return {\n C: {\n code: 'timeSigCommon',\n point: 40,\n line: 2,\n },\n 'C|': {\n code: 'timeSigCutCommon',\n point: 40,\n line: 2,\n },\n };\n }\n parseTimeSpec(timeSpec) {\n var _a, _b;\n if (timeSpec === 'C' || timeSpec === 'C|') {\n const { line, code, point } = TimeSignature.glyphs[timeSpec];\n return {\n line,\n num: false,\n glyph: new Glyph(code, point),\n };\n }\n if (this.validate_args) {\n assertIsValidTimeSig(timeSpec);\n }\n const parts = timeSpec.split('/');\n return {\n num: true,\n glyph: this.makeTimeSignatureGlyph((_a = parts[0]) !== null && _a !== void 0 ? _a : '', (_b = parts[1]) !== null && _b !== void 0 ? _b : ''),\n };\n }\n makeTimeSignatureGlyph(topDigits, botDigits) {\n return new TimeSignatureGlyph(this, topDigits, botDigits, 'timeSig0', this.point);\n }\n getInfo() {\n return this.info;\n }\n setTimeSig(timeSpec) {\n this.info = this.parseTimeSpec(timeSpec);\n return this;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('timesignature', this.getAttribute('id'));\n this.info.glyph.setStave(stave);\n this.info.glyph.setContext(ctx);\n this.placeGlyphOnLine(this.info.glyph, stave, this.info.line);\n this.info.glyph.renderToStave(this.x);\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Clef } from './clef';\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { KeySignature } from './keysignature';\nimport { Barline, BarlineType } from './stavebarline';\nimport { StaveModifierPosition } from './stavemodifier';\nimport { Repetition } from './staverepetition';\nimport { StaveSection } from './stavesection';\nimport { StaveTempo } from './stavetempo';\nimport { StaveText } from './stavetext';\nimport { Volta } from './stavevolta';\nimport { Tables } from './tables';\nimport { TimeSignature } from './timesignature';\nimport { Category, isBarline } from './typeguard';\nimport { RuntimeError } from './util';\n// Used by Stave.format() to sort the modifiers at the beginning and end of a stave.\n// The keys (computed property names) match the CATEGORY property in the\n// Barline, Clef, KeySignature, TimeSignature classes.\nconst SORT_ORDER_BEG_MODIFIERS = {\n [Barline.CATEGORY]: 0,\n [Clef.CATEGORY]: 1,\n [KeySignature.CATEGORY]: 2,\n [TimeSignature.CATEGORY]: 3,\n};\nconst SORT_ORDER_END_MODIFIERS = {\n [TimeSignature.CATEGORY]: 0,\n [KeySignature.CATEGORY]: 1,\n [Barline.CATEGORY]: 2,\n [Clef.CATEGORY]: 3,\n};\nexport class Stave extends Element {\n constructor(x, y, width, options) {\n super();\n // Initialized by the constructor via this.resetLines().\n this.height = 0;\n this.x = x;\n this.y = y;\n this.width = width;\n this.formatted = false;\n this.start_x = x + 5;\n this.end_x = x + width;\n this.modifiers = []; // stave modifiers (clef, key, time, barlines, coda, segno, etc.)\n this.measure = 0;\n this.clef = 'treble';\n this.endClef = undefined;\n this.resetFont();\n this.options = Object.assign({ vertical_bar_width: 10, num_lines: 5, fill_style: '#999999', left_bar: true, right_bar: true, spacing_between_lines_px: Tables.STAVE_LINE_DISTANCE, space_above_staff_ln: 4, space_below_staff_ln: 4, top_text_position: 1, bottom_text_position: 4, line_config: [] }, options);\n this.bounds = { x: this.x, y: this.y, w: this.width, h: 0 };\n this.defaultLedgerLineStyle = { strokeStyle: '#444', lineWidth: 1.4 };\n this.resetLines();\n // beg bar\n this.addModifier(new Barline(this.options.left_bar ? BarlineType.SINGLE : BarlineType.NONE));\n // end bar\n this.addEndModifier(new Barline(this.options.right_bar ? BarlineType.SINGLE : BarlineType.NONE));\n }\n static get CATEGORY() {\n return Category.Stave;\n }\n // This is the sum of the padding that normally goes on left + right of a stave during\n // drawing. Used to size staves correctly with content width.\n static get defaultPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('stave.padding') + musicFont.lookupMetric('stave.endPaddingMax');\n }\n // Right padding, used by system if startX is already determined.\n static get rightPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('stave.endPaddingMax');\n }\n /** Set default style for ledger lines. */\n setDefaultLedgerLineStyle(style) {\n this.defaultLedgerLineStyle = style;\n }\n /** Get default style for ledger lines. */\n getDefaultLedgerLineStyle() {\n return Object.assign(Object.assign({}, this.getStyle()), this.defaultLedgerLineStyle);\n }\n space(spacing) {\n return this.options.spacing_between_lines_px * spacing;\n }\n resetLines() {\n this.options.line_config = [];\n for (let i = 0; i < this.options.num_lines; i++) {\n this.options.line_config.push({ visible: true });\n }\n this.height = (this.options.num_lines + this.options.space_above_staff_ln) * this.options.spacing_between_lines_px;\n this.options.bottom_text_position = this.options.num_lines;\n }\n setNoteStartX(x) {\n if (!this.formatted)\n this.format();\n this.start_x = x;\n return this;\n }\n getNoteStartX() {\n if (!this.formatted)\n this.format();\n return this.start_x;\n }\n getNoteEndX() {\n if (!this.formatted)\n this.format();\n return this.end_x;\n }\n getTieStartX() {\n return this.start_x;\n }\n getTieEndX() {\n return this.end_x;\n }\n getX() {\n return this.x;\n }\n getNumLines() {\n return this.options.num_lines;\n }\n setNumLines(n) {\n this.options.num_lines = n;\n this.resetLines();\n return this;\n }\n setY(y) {\n this.y = y;\n return this;\n }\n getY() {\n return this.y;\n }\n getTopLineTopY() {\n return this.getYForLine(0) - Tables.STAVE_LINE_THICKNESS / 2;\n }\n getBottomLineBottomY() {\n return this.getYForLine(this.getNumLines() - 1) + Tables.STAVE_LINE_THICKNESS / 2;\n }\n setX(x) {\n const shift = x - this.x;\n this.formatted = false;\n this.x = x;\n this.start_x += shift;\n this.end_x += shift;\n for (let i = 0; i < this.modifiers.length; i++) {\n const mod = this.modifiers[i];\n mod.setX(mod.getX() + shift);\n }\n return this;\n }\n setWidth(width) {\n this.formatted = false;\n this.width = width;\n this.end_x = this.x + width;\n // reset the x position of the end barline (TODO(0xfe): This makes no sense)\n // this.modifiers[1].setX(this.end_x);\n return this;\n }\n getWidth() {\n return this.width;\n }\n getStyle() {\n return Object.assign({ fillStyle: this.options.fill_style, strokeStyle: this.options.fill_style, lineWidth: Tables.STAVE_LINE_THICKNESS }, super.getStyle());\n }\n /**\n * Set the measure number of this Stave.\n */\n setMeasure(measure) {\n this.measure = measure;\n return this;\n }\n /**\n * Return the measure number of this Stave.\n */\n getMeasure() {\n return this.measure;\n }\n /**\n * Gets the pixels to shift from the beginning of the stave\n * following the modifier at the provided index\n * @param {Number} index The index from which to determine the shift\n * @return {Number} The amount of pixels shifted\n */\n getModifierXShift(index = 0) {\n if (typeof index !== 'number') {\n throw new RuntimeError('InvalidIndex', 'Must be of number type');\n }\n if (!this.formatted)\n this.format();\n if (this.getModifiers(StaveModifierPosition.BEGIN).length === 1) {\n return 0;\n }\n // for right position modifiers zero shift seems correct, see 'Volta + Modifier Measure Test'\n if (this.modifiers[index].getPosition() === StaveModifierPosition.RIGHT) {\n return 0;\n }\n let start_x = this.start_x - this.x;\n const begBarline = this.modifiers[0];\n if (begBarline.getType() === BarlineType.REPEAT_BEGIN && start_x > begBarline.getWidth()) {\n start_x -= begBarline.getWidth();\n }\n return start_x;\n }\n /** Coda & Segno Symbol functions */\n setRepetitionType(type, yShift = 0) {\n this.modifiers.push(new Repetition(type, this.x, yShift));\n return this;\n }\n // Volta functions\n setVoltaType(type, number_t, y) {\n this.modifiers.push(new Volta(type, number_t, this.x, y));\n return this;\n }\n // Section functions\n setSection(section, y, xOffset = 0, fontSize, drawRect = true) {\n const staveSection = new StaveSection(section, this.x + xOffset, y, drawRect);\n if (fontSize)\n staveSection.setFontSize(fontSize);\n this.modifiers.push(staveSection);\n return this;\n }\n // Tempo functions\n setTempo(tempo, y) {\n this.modifiers.push(new StaveTempo(tempo, this.x, y));\n return this;\n }\n // Text functions\n setText(text, position, options = {}) {\n this.modifiers.push(new StaveText(text, position, options));\n return this;\n }\n getHeight() {\n return this.height;\n }\n getSpacingBetweenLines() {\n return this.options.spacing_between_lines_px;\n }\n getBoundingBox() {\n return new BoundingBox(this.x, this.y, this.width, this.getBottomY() - this.y);\n }\n getBottomY() {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const score_bottom = this.getYForLine(options.num_lines) + options.space_below_staff_ln * spacing;\n return score_bottom;\n }\n getBottomLineY() {\n return this.getYForLine(this.options.num_lines);\n }\n // This returns\n /** @returns the y for the *center* of a staff line */\n getYForLine(line) {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n const y = this.y + line * spacing + headroom * spacing;\n return y;\n }\n getLineForY(y) {\n // Does the reverse of getYForLine - somewhat dumb and just calls\n // getYForLine until the right value is reaches\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n return (y - this.y) / spacing - headroom;\n }\n getYForTopText(line = 0) {\n return this.getYForLine(-line - this.options.top_text_position);\n }\n getYForBottomText(line = 0) {\n return this.getYForLine(this.options.bottom_text_position + line);\n }\n getYForNote(line) {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n return this.y + headroom * spacing + 5 * spacing - line * spacing;\n }\n getYForGlyphs() {\n return this.getYForLine(3);\n }\n // This method adds a stave modifier to the stave. Note that the first two\n // modifiers (BarLines) are automatically added upon construction.\n addModifier(modifier, position) {\n if (position !== undefined) {\n modifier.setPosition(position);\n }\n modifier.setStave(this);\n this.formatted = false;\n this.modifiers.push(modifier);\n return this;\n }\n addEndModifier(modifier) {\n this.addModifier(modifier, StaveModifierPosition.END);\n return this;\n }\n // Bar Line functions\n setBegBarType(type) {\n // Only valid bar types at beginning of stave is none, single or begin repeat\n const { SINGLE, REPEAT_BEGIN, NONE } = BarlineType;\n if (type === SINGLE || type === REPEAT_BEGIN || type === NONE) {\n this.modifiers[0].setType(type);\n this.formatted = false;\n }\n return this;\n }\n setEndBarType(type) {\n // Repeat end not valid at end of stave\n if (type !== BarlineType.REPEAT_BEGIN) {\n this.modifiers[1].setType(type);\n this.formatted = false;\n }\n return this;\n }\n setClef(clefSpec, size, annotation, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n if (position === StaveModifierPosition.END) {\n this.endClef = clefSpec;\n }\n else {\n this.clef = clefSpec;\n }\n const clefs = this.getModifiers(position, Clef.CATEGORY);\n if (clefs.length === 0) {\n this.addClef(clefSpec, size, annotation, position);\n }\n else {\n clefs[0].setType(clefSpec, size, annotation);\n }\n return this;\n }\n getClef() {\n return this.clef;\n }\n setEndClef(clefSpec, size, annotation) {\n this.setClef(clefSpec, size, annotation, StaveModifierPosition.END);\n return this;\n }\n getEndClef() {\n return this.endClef;\n }\n setKeySignature(keySpec, cancelKeySpec, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n const keySignatures = this.getModifiers(position, KeySignature.CATEGORY);\n if (keySignatures.length === 0) {\n this.addKeySignature(keySpec, cancelKeySpec, position);\n }\n else {\n keySignatures[0].setKeySig(keySpec, cancelKeySpec);\n }\n return this;\n }\n setEndKeySignature(keySpec, cancelKeySpec) {\n this.setKeySignature(keySpec, cancelKeySpec, StaveModifierPosition.END);\n return this;\n }\n setTimeSignature(timeSpec, customPadding, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n const timeSignatures = this.getModifiers(position, TimeSignature.CATEGORY);\n if (timeSignatures.length === 0) {\n this.addTimeSignature(timeSpec, customPadding, position);\n }\n else {\n timeSignatures[0].setTimeSig(timeSpec);\n }\n return this;\n }\n setEndTimeSignature(timeSpec, customPadding) {\n this.setTimeSignature(timeSpec, customPadding, StaveModifierPosition.END);\n return this;\n }\n /**\n * Add a key signature to the stave.\n *\n * Example:\n * `stave.addKeySignature('Db');`\n * @param keySpec new key specification `[A-G][b|#]?`\n * @param cancelKeySpec\n * @param position\n * @returns\n */\n addKeySignature(keySpec, cancelKeySpec, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n this.addModifier(new KeySignature(keySpec, cancelKeySpec).setPosition(position), position);\n return this;\n }\n /**\n * Add a clef to the stave.\n *\n * Example:\n *\n * stave.addClef('treble')\n * @param clef clef (treble|bass|...) see {@link Clef.types}\n * @param size\n * @param annotation\n * @param position\n * @returns\n */\n addClef(clef, size, annotation, position) {\n if (position === undefined || position === StaveModifierPosition.BEGIN) {\n this.clef = clef;\n }\n else if (position === StaveModifierPosition.END) {\n this.endClef = clef;\n }\n this.addModifier(new Clef(clef, size, annotation), position);\n return this;\n }\n addEndClef(clef, size, annotation) {\n this.addClef(clef, size, annotation, StaveModifierPosition.END);\n return this;\n }\n /**\n * Add a time signature to the stave\n *\n * Example:\n *\n * `stave.addTimeSignature('4/4');`\n * @param timeSpec time signature specification `(C\\||C|\\d\\/\\d)`\n * @param customPadding\n * @param position\n * @returns\n */\n addTimeSignature(timeSpec, customPadding, position) {\n this.addModifier(new TimeSignature(timeSpec, customPadding), position);\n return this;\n }\n addEndTimeSignature(timeSpec, customPadding) {\n this.addTimeSignature(timeSpec, customPadding, StaveModifierPosition.END);\n return this;\n }\n // Deprecated\n addTrebleGlyph() {\n this.addClef('treble');\n return this;\n }\n /**\n * @param position\n * @param category\n * @returns array of StaveModifiers that match the provided position and category.\n */\n getModifiers(position, category) {\n const noPosition = position === undefined;\n const noCategory = category === undefined;\n if (noPosition && noCategory) {\n return this.modifiers;\n }\n else if (noPosition) {\n // A category was provided.\n return this.modifiers.filter((m) => category === m.getCategory());\n }\n else if (noCategory) {\n // A position was provided.\n return this.modifiers.filter((m) => position === m.getPosition());\n }\n else {\n // Both position and category were provided!\n return this.modifiers.filter((m) => position === m.getPosition() && category === m.getCategory());\n }\n }\n /**\n * Use the modifier's `getCategory()` as a key for the `order` array.\n * The retrieved value is used to sort modifiers from left to right (0 to to 3).\n */\n sortByCategory(items, order) {\n for (let i = items.length - 1; i >= 0; i--) {\n for (let j = 0; j < i; j++) {\n if (order[items[j].getCategory()] > order[items[j + 1].getCategory()]) {\n const temp = items[j];\n items[j] = items[j + 1];\n items[j + 1] = temp;\n }\n }\n }\n }\n format() {\n const begBarline = this.modifiers[0];\n const endBarline = this.modifiers[1];\n const begModifiers = this.getModifiers(StaveModifierPosition.BEGIN);\n const endModifiers = this.getModifiers(StaveModifierPosition.END);\n this.sortByCategory(begModifiers, SORT_ORDER_BEG_MODIFIERS);\n this.sortByCategory(endModifiers, SORT_ORDER_END_MODIFIERS);\n if (begModifiers.length > 1 && begBarline.getType() === BarlineType.REPEAT_BEGIN) {\n begModifiers.push(begModifiers.splice(0, 1)[0]);\n begModifiers.splice(0, 0, new Barline(BarlineType.SINGLE));\n }\n if (endModifiers.indexOf(endBarline) > 0) {\n endModifiers.splice(0, 0, new Barline(BarlineType.NONE));\n }\n let width;\n let padding;\n let modifier;\n let offset = 0;\n let x = this.x;\n for (let i = 0; i < begModifiers.length; i++) {\n modifier = begModifiers[i];\n padding = modifier.getPadding(i + offset);\n width = modifier.getWidth();\n x += padding;\n modifier.setX(x);\n x += width;\n if (padding + width === 0)\n offset--;\n }\n this.start_x = x;\n x = this.x + this.width;\n const widths = {\n left: 0,\n right: 0,\n paddingRight: 0,\n paddingLeft: 0,\n };\n let lastBarlineIdx = 0;\n for (let i = 0; i < endModifiers.length; i++) {\n modifier = endModifiers[i];\n lastBarlineIdx = isBarline(modifier) ? i : lastBarlineIdx;\n widths.right = 0;\n widths.left = 0;\n widths.paddingRight = 0;\n widths.paddingLeft = 0;\n const layoutMetrics = modifier.getLayoutMetrics();\n if (layoutMetrics) {\n if (i !== 0) {\n widths.right = layoutMetrics.xMax || 0;\n widths.paddingRight = layoutMetrics.paddingRight || 0;\n }\n widths.left = -layoutMetrics.xMin || 0;\n widths.paddingLeft = layoutMetrics.paddingLeft || 0;\n if (i === endModifiers.length - 1) {\n widths.paddingLeft = 0;\n }\n }\n else {\n widths.paddingRight = modifier.getPadding(i - lastBarlineIdx);\n if (i !== 0) {\n widths.right = modifier.getWidth();\n }\n if (i === 0) {\n widths.left = modifier.getWidth();\n }\n }\n x -= widths.paddingRight;\n x -= widths.right;\n modifier.setX(x);\n x -= widths.left;\n x -= widths.paddingLeft;\n }\n this.end_x = endModifiers.length === 1 ? this.x + this.width : x;\n this.formatted = true;\n }\n /**\n * All drawing functions below need the context to be set.\n */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n ctx.openGroup('stave', this.getAttribute('id'));\n if (!this.formatted)\n this.format();\n const num_lines = this.options.num_lines;\n const width = this.width;\n const x = this.x;\n let y;\n // Render lines\n for (let line = 0; line < num_lines; line++) {\n y = this.getYForLine(line);\n this.applyStyle();\n if (this.options.line_config[line].visible) {\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.lineTo(x + width, y);\n ctx.stroke();\n }\n this.restoreStyle();\n }\n // Draw the modifiers (bar lines, coda, segno, repeat brackets, etc.)\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n // Only draw modifier if it has a draw function\n if (typeof modifier.draw === 'function') {\n modifier.applyStyle(ctx);\n modifier.draw(this, this.getModifierXShift(i));\n modifier.restoreStyle(ctx);\n }\n }\n // Render measure numbers\n if (this.measure > 0) {\n ctx.save();\n ctx.setFont(this.textFont);\n const textWidth = ctx.measureText('' + this.measure).width;\n y = this.getYForTopText(0) + 3;\n ctx.fillText('' + this.measure, this.x - textWidth / 2, y);\n ctx.restore();\n }\n ctx.closeGroup();\n return this;\n }\n getVerticalBarWidth() {\n return this.options.vertical_bar_width;\n }\n /**\n * Get the current configuration for the Stave.\n * @return {Array} An array of configuration objects.\n */\n getConfigForLines() {\n return this.options.line_config;\n }\n /**\n * Configure properties of the lines in the Stave\n * @param line_number The index of the line to configure.\n * @param line_config An configuration object for the specified line.\n * @throws RuntimeError \"StaveConfigError\" When the specified line number is out of\n * range of the number of lines specified in the constructor.\n */\n setConfigForLine(line_number, line_config) {\n if (line_number >= this.options.num_lines || line_number < 0) {\n throw new RuntimeError('StaveConfigError', 'The line number must be within the range of the number of lines in the Stave.');\n }\n if (line_config.visible === undefined) {\n throw new RuntimeError('StaveConfigError', \"The line configuration object is missing the 'visible' property.\");\n }\n if (typeof line_config.visible !== 'boolean') {\n throw new RuntimeError('StaveConfigError', \"The line configuration objects 'visible' property must be true or false.\");\n }\n this.options.line_config[line_number] = line_config;\n return this;\n }\n /**\n * Set the staff line configuration array for all of the lines at once.\n * @param lines_configuration An array of line configuration objects. These objects\n * are of the same format as the single one passed in to setLineConfiguration().\n * The caller can set null for any line config entry if it is desired that the default be used\n * @throws RuntimeError \"StaveConfigError\" When the lines_configuration array does not have\n * exactly the same number of elements as the num_lines configuration object set in\n * the constructor.\n */\n setConfigForLines(lines_configuration) {\n if (lines_configuration.length !== this.options.num_lines) {\n throw new RuntimeError('StaveConfigError', 'The length of the lines configuration array must match the number of lines in the Stave');\n }\n // Make sure the defaults are present in case an incomplete set of\n // configuration options were supplied.\n // eslint-disable-next-line\n for (const line_config in lines_configuration) {\n // Allow '{}' to be used if the caller just wants the default for a particular node.\n if (lines_configuration[line_config].visible == undefined) {\n lines_configuration[line_config] = this.options.line_config[line_config];\n }\n this.options.line_config[line_config] = Object.assign(Object.assign({}, this.options.line_config[line_config]), lines_configuration[line_config]);\n }\n this.options.line_config = lines_configuration;\n return this;\n }\n static formatBegModifiers(staves) {\n let maxX = 0;\n // align note start\n staves.forEach((stave) => {\n if (stave.getNoteStartX() > maxX)\n maxX = stave.getNoteStartX();\n });\n staves.forEach((stave) => {\n stave.setNoteStartX(maxX);\n });\n maxX = 0;\n // align REPEAT_BEGIN\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.Barline);\n modifiers.forEach((modifier) => {\n if (modifier.getType() == BarlineType.REPEAT_BEGIN)\n if (modifier.getX() > maxX)\n maxX = modifier.getX();\n });\n });\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.Barline);\n modifiers.forEach((modifier) => {\n if (modifier.getType() == BarlineType.REPEAT_BEGIN)\n modifier.setX(maxX);\n });\n });\n maxX = 0;\n // Align time signatures\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.TimeSignature);\n modifiers.forEach((modifier) => {\n if (modifier.getX() > maxX)\n maxX = modifier.getX();\n });\n });\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.TimeSignature);\n modifiers.forEach((modifier) => {\n modifier.setX(maxX);\n });\n });\n }\n}\nStave.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 8,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nfunction drawBoldDoubleLine(ctx, type, topX, topY, botY) {\n if (type !== StaveConnector.type.BOLD_DOUBLE_LEFT && type !== StaveConnector.type.BOLD_DOUBLE_RIGHT) {\n throw new RuntimeError('InvalidConnector', 'A REPEAT_BEGIN or REPEAT_END type must be provided.');\n }\n let x_shift = 3;\n let variableWidth = 3.5; // Width for avoiding anti-aliasing width issues\n const thickLineOffset = 2; // For aesthetics\n if (type === StaveConnector.type.BOLD_DOUBLE_RIGHT) {\n x_shift = -5; // Flips the side of the thin line\n variableWidth = 3;\n }\n // Thin line\n ctx.fillRect(topX + x_shift, topY, 1, botY - topY);\n // Thick line\n ctx.fillRect(topX - thickLineOffset, topY, variableWidth, botY - topY);\n}\n/** StaveConnector implements the connector lines between staves of a system. */\nexport class StaveConnector extends Element {\n constructor(top_stave, bottom_stave) {\n super();\n this.thickness = Tables.STAVE_LINE_THICKNESS;\n this.width = 3;\n this.top_stave = top_stave;\n this.bottom_stave = bottom_stave;\n this.type = StaveConnector.type.DOUBLE;\n this.resetFont();\n // 1. Offset Bold Double Left to align with offset Repeat Begin bars\n // 2. Offset BRACE type not to overlap with another StaveConnector\n this.x_shift = 0;\n this.texts = [];\n }\n static get CATEGORY() {\n return Category.StaveConnector;\n }\n /**\n * Set type.\n * @param type see {@link StaveConnector.type} & {@link StaveConnector.typeString}\n */\n setType(type) {\n const newType = typeof type === 'string' ? StaveConnector.typeString[type] : type;\n // Be certain that the type is a valid type:\n if (Object.values(StaveConnector.type).includes(newType)) {\n this.type = newType;\n }\n return this;\n }\n /**\n * Get type.\n * @returns number {@link StaveConnector.type}\n */\n getType() {\n return this.type;\n }\n /** Set optional associated Text. */\n setText(text, options = {}) {\n this.texts.push({\n content: text,\n options: Object.assign({ shift_x: 0, shift_y: 0 }, options),\n });\n return this;\n }\n setXShift(x_shift) {\n if (typeof x_shift !== 'number') {\n throw new RuntimeError('InvalidType', 'x_shift must be a Number');\n }\n this.x_shift = x_shift;\n return this;\n }\n getXShift() {\n return this.x_shift;\n }\n /** Render connector and associated text. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let topY = this.top_stave.getYForLine(0);\n let botY = this.bottom_stave.getYForLine(this.bottom_stave.getNumLines() - 1) + this.thickness;\n let width = this.width;\n let topX = this.top_stave.getX();\n const isRightSidedConnector = this.type === StaveConnector.type.SINGLE_RIGHT ||\n this.type === StaveConnector.type.BOLD_DOUBLE_RIGHT ||\n this.type === StaveConnector.type.THIN_DOUBLE;\n if (isRightSidedConnector) {\n topX = this.top_stave.getX() + this.top_stave.getWidth();\n }\n let attachment_height = botY - topY;\n switch (this.type) {\n case StaveConnector.type.SINGLE:\n width = 1;\n break;\n case StaveConnector.type.SINGLE_LEFT:\n width = 1;\n break;\n case StaveConnector.type.SINGLE_RIGHT:\n width = 1;\n break;\n case StaveConnector.type.DOUBLE:\n topX -= this.width + 2;\n topY -= this.thickness;\n attachment_height += 0.5;\n break;\n case StaveConnector.type.BRACE: {\n width = 12;\n // May need additional code to draw brace\n const x1 = this.top_stave.getX() - 2 + this.x_shift;\n const y1 = topY;\n const x3 = x1;\n const y3 = botY;\n const x2 = x1 - width;\n const y2 = y1 + attachment_height / 2.0;\n const cpx1 = x2 - 0.9 * width;\n const cpy1 = y1 + 0.2 * attachment_height;\n const cpx2 = x1 + 1.1 * width;\n const cpy2 = y2 - 0.135 * attachment_height;\n const cpx3 = cpx2;\n const cpy3 = y2 + 0.135 * attachment_height;\n const cpx4 = cpx1;\n const cpy4 = y3 - 0.2 * attachment_height;\n const cpx5 = x2 - width;\n const cpy5 = cpy4;\n const cpx6 = x1 + 0.4 * width;\n const cpy6 = y2 + 0.135 * attachment_height;\n const cpx7 = cpx6;\n const cpy7 = y2 - 0.135 * attachment_height;\n const cpx8 = cpx5;\n const cpy8 = cpy1;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);\n ctx.bezierCurveTo(cpx3, cpy3, cpx4, cpy4, x3, y3);\n ctx.bezierCurveTo(cpx5, cpy5, cpx6, cpy6, x2, y2);\n ctx.bezierCurveTo(cpx7, cpy7, cpx8, cpy8, x1, y1);\n ctx.fill();\n ctx.stroke();\n break;\n }\n case StaveConnector.type.BRACKET:\n topY -= 6;\n botY += 6;\n attachment_height = botY - topY;\n Glyph.renderGlyph(ctx, topX - 5, topY, 40, 'bracketTop');\n Glyph.renderGlyph(ctx, topX - 5, botY, 40, 'bracketBottom');\n topX -= this.width + 2;\n break;\n case StaveConnector.type.BOLD_DOUBLE_LEFT:\n drawBoldDoubleLine(ctx, this.type, topX + this.x_shift, topY, botY - this.thickness);\n break;\n case StaveConnector.type.BOLD_DOUBLE_RIGHT:\n drawBoldDoubleLine(ctx, this.type, topX, topY, botY - this.thickness);\n break;\n case StaveConnector.type.THIN_DOUBLE:\n width = 1;\n attachment_height -= this.thickness;\n break;\n case StaveConnector.type.NONE:\n break;\n default:\n throw new RuntimeError('InvalidType', `The provided StaveConnector.type (${this.type}) is invalid.`);\n }\n if (this.type !== StaveConnector.type.BRACE &&\n this.type !== StaveConnector.type.BOLD_DOUBLE_LEFT &&\n this.type !== StaveConnector.type.BOLD_DOUBLE_RIGHT &&\n this.type !== StaveConnector.type.NONE) {\n ctx.fillRect(topX, topY, width, attachment_height);\n }\n // If the connector is a thin double barline, draw the paralell line\n if (this.type === StaveConnector.type.THIN_DOUBLE) {\n ctx.fillRect(topX - 3, topY, width, attachment_height);\n }\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n // Add stave connector text\n for (let i = 0; i < this.texts.length; i++) {\n const text = this.texts[i];\n const text_width = ctx.measureText('' + text.content).width;\n const x = this.top_stave.getX() - text_width - 24 + text.options.shift_x;\n const y = (this.top_stave.getYForLine(0) + this.bottom_stave.getBottomLineY()) / 2 + text.options.shift_y;\n ctx.fillText('' + text.content, x, y + 4);\n }\n ctx.restore();\n }\n}\nStaveConnector.TEXT_FONT = {\n family: Font.SERIF,\n size: 16,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n/**\n * SINGLE_LEFT and SINGLE are the same value for compatibility\n * with older versions of vexflow which didn't have right sided\n * stave connectors.\n */\nStaveConnector.type = {\n SINGLE_RIGHT: 0,\n SINGLE_LEFT: 1,\n SINGLE: 1,\n DOUBLE: 2,\n BRACE: 3,\n BRACKET: 4,\n BOLD_DOUBLE_LEFT: 5,\n BOLD_DOUBLE_RIGHT: 6,\n THIN_DOUBLE: 7,\n NONE: 8,\n};\n/**\n * Connector type:\n * * \"singleRight\"\n * * \"singleLeft\"\n * * \"single\"\n * * \"double\"\n * * \"brace\"\n * * \"bracket\"\n * * \"boldDoubleLeft\"\n * * \"boldDoubleRight\"\n * * \"thinDouble\"\n * * \"none\"\n */\nStaveConnector.typeString = {\n singleRight: StaveConnector.type.SINGLE_RIGHT,\n singleLeft: StaveConnector.type.SINGLE_LEFT,\n single: StaveConnector.type.SINGLE,\n double: StaveConnector.type.DOUBLE,\n brace: StaveConnector.type.BRACE,\n bracket: StaveConnector.type.BRACKET,\n boldDoubleLeft: StaveConnector.type.BOLD_DOUBLE_LEFT,\n boldDoubleRight: StaveConnector.type.BOLD_DOUBLE_RIGHT,\n thinDouble: StaveConnector.type.THIN_DOUBLE,\n none: StaveConnector.type.NONE,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Beam } from './beam';\nimport { Font } from './font';\nimport { Fraction } from './fraction';\nimport { ModifierContext } from './modifiercontext';\nimport { Stave } from './stave';\nimport { StaveConnector } from './staveconnector';\nimport { Tables } from './tables';\nimport { TickContext } from './tickcontext';\nimport { isNote, isStaveNote } from './typeguard';\nimport { defined, log, midLine, RuntimeError } from './util';\nimport { Voice } from './voice';\n// Helper function\nconst sumArray = (arr) => arr.reduce((a, b) => a + b, 0);\n/**\n * Create `Alignment`s for each tick in `voices`. Also calculate the\n * total number of ticks in voices.\n */\nfunction createContexts(voices, makeContext, addToContext) {\n if (voices.length == 0)\n return {\n map: {},\n array: [],\n list: [],\n resolutionMultiplier: 0,\n };\n // Initialize tick maps.\n const tickToContextMap = {};\n const tickList = [];\n const contexts = [];\n const resolutionMultiplier = Formatter.getResolutionMultiplier(voices);\n // For each voice, extract notes and create a context for every\n // new tick that hasn't been seen before.\n voices.forEach((voice, voiceIndex) => {\n // Use resolution multiplier as denominator so that no additional expansion\n // of fractional tick values is needed.\n const ticksUsed = new Fraction(0, resolutionMultiplier);\n voice.getTickables().forEach((tickable) => {\n const integerTicks = ticksUsed.numerator;\n // If we have no tick context for this tick, create one.\n if (!tickToContextMap[integerTicks]) {\n const newContext = makeContext({ tickID: integerTicks });\n contexts.push(newContext);\n tickToContextMap[integerTicks] = newContext;\n // Maintain a list of unique integerTicks.\n tickList.push(integerTicks);\n }\n // Add this tickable to the TickContext.\n addToContext(tickable, tickToContextMap[integerTicks], voiceIndex);\n ticksUsed.add(tickable.getTicks());\n });\n });\n return {\n map: tickToContextMap,\n array: contexts,\n list: tickList.sort((a, b) => a - b),\n resolutionMultiplier,\n };\n}\n// eslint-disable-next-line\nfunction L(...args) {\n if (Formatter.DEBUG)\n log('Vex.Flow.Formatter', args);\n}\n/**\n * Get the rest line number of the next non-rest note(s).\n * @param notes array of Notes\n * @param currRestLine\n * @param currNoteIndex current note index\n * @param compare if true, return the midpoint between the current rest line and the next rest line\n * @returns a line number, which determines the vertical position of a rest.\n */\nfunction getRestLineForNextNoteGroup(notes, currRestLine, currNoteIndex, compare) {\n // If no valid next note group, nextRestLine is same as current.\n let nextRestLine = currRestLine;\n // Start with the next note and keep going until we find a valid non-rest note group.\n for (let noteIndex = currNoteIndex + 1; noteIndex < notes.length; noteIndex++) {\n const note = notes[noteIndex];\n if (isNote(note) && !note.isRest() && !note.shouldIgnoreTicks()) {\n nextRestLine = note.getLineForRest();\n break;\n }\n }\n // Locate the mid point between two lines.\n if (compare && currRestLine !== nextRestLine) {\n const top = Math.max(currRestLine, nextRestLine);\n const bot = Math.min(currRestLine, nextRestLine);\n nextRestLine = midLine(top, bot);\n }\n return nextRestLine;\n}\n/**\n * Format implements the formatting and layout algorithms that are used\n * to position notes in a voice. The algorithm can align multiple voices both\n * within a stave, and across multiple staves.\n *\n * To do this, the formatter breaks up voices into a grid of rational-valued\n * `ticks`, to which each note is assigned. Then, minimum widths are assigned\n * to each tick based on the widths of the notes and modifiers in that tick. This\n * establishes the smallest amount of space required for each tick.\n *\n * Finally, the formatter distributes the left over space proportionally to\n * all the ticks, setting the `x` values of the notes in each tick.\n *\n * See `tests/formatter_tests.ts` for usage examples. The helper functions included\n * here (`FormatAndDraw`, `FormatAndDrawTab`) also serve as useful usage examples.\n */\nexport class Formatter {\n constructor(options) {\n this.formatterOptions = Object.assign({ globalSoftmax: false, softmaxFactor: Tables.SOFTMAX_FACTOR, maxIterations: 5 }, options);\n this.justifyWidth = 0;\n this.totalCost = 0;\n this.totalShift = 0;\n this.durationStats = {};\n // Minimum width required to render all the notes in the voices.\n this.minTotalWidth = 0;\n // This is set to `true` after `minTotalWidth` is calculated.\n this.hasMinTotalWidth = false;\n // Arrays of tick and modifier contexts.\n this.tickContexts = {\n map: {},\n array: [],\n list: [],\n resolutionMultiplier: 0,\n };\n this.modifierContexts = [];\n // Gaps between contexts, for free movement of notes post\n // formatting.\n this.contextGaps = {\n total: 0,\n gaps: [],\n };\n this.voices = [];\n this.lossHistory = [];\n }\n /**\n * Helper function to layout \"notes\" one after the other without\n * regard for proportions. Useful for tests and debugging.\n */\n static SimpleFormat(notes, x = 0, { paddingBetween = 10 } = {}) {\n notes.reduce((accumulator, note) => {\n note.addToModifierContext(new ModifierContext());\n const tick = new TickContext().addTickable(note).preFormat();\n const metrics = tick.getMetrics();\n tick.setX(accumulator + metrics.totalLeftPx);\n return accumulator + tick.getWidth() + metrics.totalRightPx + paddingBetween;\n }, x);\n }\n /** Helper function to plot formatter debug info. */\n static plotDebugging(ctx, formatter, xPos, y1, y2, options) {\n options = Object.assign({ stavePadding: Tables.currentMusicFont().lookupMetric('stave.padding') }, options);\n const x = xPos + options.stavePadding;\n const contextGaps = formatter.contextGaps;\n function stroke(x1, x2, color) {\n ctx.beginPath();\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n ctx.setLineWidth(1);\n ctx.fillRect(x1, y1, Math.max(x2 - x1, 0), y2 - y1);\n }\n ctx.save();\n ctx.setFont(Font.SANS_SERIF, 8);\n contextGaps.gaps.forEach((gap) => {\n stroke(x + gap.x1, x + gap.x2, 'rgba(100,200,100,0.4)');\n ctx.setFillStyle('green');\n ctx.fillText(Math.round(gap.x2 - gap.x1).toString(), x + gap.x1, y2 + 12);\n });\n ctx.setFillStyle('red');\n ctx.fillText(`Loss: ${(formatter.totalCost || 0).toFixed(2)} Shift: ${(formatter.totalShift || 0).toFixed(2)} Gap: ${contextGaps.total.toFixed(2)}`, x - 20, y2 + 27);\n ctx.restore();\n }\n /**\n * Helper function to format and draw a single voice. Returns a bounding\n * box for the notation.\n * @param ctx the rendering context\n * @param stave the stave to which to draw (`Stave` or `TabStave`)\n * @param notes array of `Note` instances (`Note`, `TextNote`, `TabNote`, etc.)\n * @param params one of below:\n * * Setting `autobeam` only `(context, stave, notes, true)` or\n * `(ctx, stave, notes, {autobeam: true})`\n * * Setting `align_rests` a struct is needed `(context, stave, notes, {align_rests: true})`\n * * Setting both a struct is needed `(context, stave, notes, {\n * autobeam: true, align_rests: true})`\n * * `autobeam` automatically generates beams for the notes.\n * * `align_rests` aligns rests with nearby notes.\n */\n static FormatAndDraw(ctx, stave, notes, params) {\n let options = {\n auto_beam: false,\n align_rests: false,\n };\n if (typeof params === 'object') {\n options = Object.assign(Object.assign({}, options), params);\n }\n else if (typeof params === 'boolean') {\n options.auto_beam = params;\n }\n // Start by creating a voice and adding all the notes to it.\n const voice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(notes);\n // Then create beams, if requested.\n const beams = options.auto_beam ? Beam.applyAndGetBeams(voice) : [];\n // Instantiate a `Formatter` and format the notes.\n new Formatter()\n .joinVoices([voice]) // , { align_rests: options.align_rests })\n .formatToStave([voice], stave, { align_rests: options.align_rests, stave });\n // Render the voice and beams to the stave.\n voice.setStave(stave).draw(ctx, stave);\n beams.forEach((beam) => beam.setContext(ctx).draw());\n // Return the bounding box of the voice.\n return voice.getBoundingBox();\n }\n /**\n * Helper function to format and draw aligned tab and stave notes in two\n * separate staves.\n * @param ctx the rendering context\n * @param tabstave a `TabStave` instance on which to render `TabNote`s.\n * @param stave a `Stave` instance on which to render `Note`s.\n * @param notes array of `Note` instances for the stave (`Note`, `BarNote`, etc.)\n * @param tabnotes array of `Note` instances for the tab stave (`TabNote`, `BarNote`, etc.)\n * @param autobeam automatically generate beams.\n * @param params a configuration object:\n * * `autobeam` automatically generates beams for the notes.\n * * `align_rests` aligns rests with nearby notes.\n */\n static FormatAndDrawTab(ctx, tabstave, stave, tabnotes, notes, autobeam, params) {\n let opts = {\n auto_beam: autobeam,\n align_rests: false,\n };\n if (typeof params === 'object') {\n opts = Object.assign(Object.assign({}, opts), params);\n }\n else if (typeof params === 'boolean') {\n opts.auto_beam = params;\n }\n // Create a `4/4` voice for `notes`.\n const notevoice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(notes);\n // Create a `4/4` voice for `tabnotes`.\n const tabvoice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(tabnotes);\n // Then create beams, if requested.\n const beams = opts.auto_beam ? Beam.applyAndGetBeams(notevoice) : [];\n // Instantiate a `Formatter` and align tab and stave notes.\n new Formatter()\n .joinVoices([notevoice]) // , { align_rests: opts.align_rests })\n .joinVoices([tabvoice])\n .formatToStave([notevoice, tabvoice], stave, { align_rests: opts.align_rests });\n // Render voices and beams to staves.\n notevoice.draw(ctx, stave);\n tabvoice.draw(ctx, tabstave);\n beams.forEach((beam) => beam.setContext(ctx).draw());\n // Draw a connector between tab and note staves.\n new StaveConnector(stave, tabstave).setContext(ctx).draw();\n }\n /**\n * Automatically set the vertical position of rests based on previous/next note positions.\n * @param tickables an array of Tickables.\n * @param alignAllNotes If `false`, only align rests that are within a group of beamed notes.\n * @param alignTuplets If `false`, ignores tuplets.\n */\n static AlignRestsToNotes(tickables, alignAllNotes, alignTuplets) {\n tickables.forEach((currTickable, index) => {\n if (isStaveNote(currTickable) && currTickable.isRest()) {\n if (currTickable.getTuplet() && !alignTuplets) {\n return;\n }\n // If activated rests not on default can be rendered as specified.\n const position = currTickable.getGlyph().position.toUpperCase();\n if (position !== 'R/4' && position !== 'B/4') {\n return;\n }\n if (alignAllNotes || currTickable.getBeam()) {\n // Align rests with previous/next notes.\n const props = currTickable.getKeyProps()[0];\n if (index === 0) {\n props.line = getRestLineForNextNoteGroup(tickables, props.line, index, false);\n }\n else if (index > 0 && index < tickables.length) {\n // If previous tickable is a rest, use its line number.\n const prevTickable = tickables[index - 1];\n if (isStaveNote(prevTickable)) {\n if (prevTickable.isRest()) {\n props.line = prevTickable.getKeyProps()[0].line;\n }\n else {\n const restLine = prevTickable.getLineForRest();\n // Get the rest line for next valid non-rest note group.\n props.line = getRestLineForNextNoteGroup(tickables, restLine, index, true);\n }\n }\n }\n currTickable.setKeyLine(0, props.line);\n }\n }\n });\n }\n /**\n * Find all the rests in each of the `voices` and align them to neighboring notes.\n *\n * @param voices\n * @param alignAllNotes If `false`, only align rests within beamed groups of notes. If `true`, align all rests.\n */\n alignRests(voices, alignAllNotes) {\n if (!voices || !voices.length) {\n throw new RuntimeError('BadArgument', 'No voices to format rests');\n }\n voices.forEach((voice) => Formatter.AlignRestsToNotes(voice.getTickables(), alignAllNotes));\n }\n /**\n * Estimate the width required to render 'voices'. This is done by:\n * 1. Sum the widths of all the tick contexts\n * 2. Estimate the padding.\n * The latter is done by calculating the padding 3 different ways, and taking the\n * greatest value:\n * 1. the padding required for unaligned notes in different voices\n * 2. the padding based on the stddev of the tickable widths\n * 3. the padding based on the stddev of the tickable durations.\n *\n * The last 2 quantities estimate a 'width entropy', where notes might need more\n * room than the proportional formatting gives them. A measure of all same duration\n * and width will need no extra padding, and all these quantities will be\n * zero in that case.\n *\n * Note: joinVoices has to be called before calling preCalculateMinTotalWidth.\n *\n * @param voices the voices that contain the notes\n * @returns the estimated width in pixels\n */\n preCalculateMinTotalWidth(voices) {\n const unalignedPadding = Tables.currentMusicFont().lookupMetric('stave.unalignedNotePadding');\n // Calculate additional padding based on 3 methods:\n // 1) unaligned beats in voices, 2) variance of width, 3) variance of durations\n let unalignedCtxCount = 0;\n let wsum = 0;\n let dsum = 0;\n const widths = [];\n const durations = [];\n // Cache results.\n if (this.hasMinTotalWidth)\n return this.minTotalWidth;\n // Create tick contexts.\n if (!voices) {\n throw new RuntimeError('BadArgument', \"'voices' required to run preCalculateMinTotalWidth\");\n }\n this.createTickContexts(voices);\n // eslint-disable-next-line\n const { list: contextList, map: contextMap } = this.tickContexts;\n this.minTotalWidth = 0;\n // Go through each tick context and calculate total width,\n // and also accumulate values used in padding hints\n contextList.forEach((tick) => {\n const context = contextMap[tick];\n context.preFormat();\n // If this TC doesn't have all the voices on it, it's unaligned.\n // so increment the unaligned padding accumulator\n if (context.getTickables().length < voices.length) {\n unalignedCtxCount += 1;\n }\n // Calculate the 'width entropy' over all the Tickables.\n context.getTickables().forEach((t) => {\n wsum += t.getMetrics().width;\n dsum += t.getTicks().value();\n widths.push(t.getMetrics().width);\n durations.push(t.getTicks().value());\n });\n const width = context.getWidth();\n this.minTotalWidth += width;\n });\n this.hasMinTotalWidth = true;\n // normalized (0-1) STDDEV of widths/durations gives us padding hints.\n const wavg = wsum > 0 ? wsum / widths.length : 1 / widths.length;\n const wvar = sumArray(widths.map((ll) => Math.pow(ll - wavg, 2)));\n const wpads = Math.pow(wvar / widths.length, 0.5) / wavg;\n const davg = dsum / durations.length;\n const dvar = sumArray(durations.map((ll) => Math.pow(ll - davg, 2)));\n const dpads = Math.pow(dvar / durations.length, 0.5) / davg;\n // Find max of 3 methods pad the width with that\n const padmax = Math.max(dpads, wpads) * contextList.length * unalignedPadding;\n const unalignedPad = unalignedPadding * unalignedCtxCount;\n return this.minTotalWidth + Math.max(unalignedPad, padmax);\n }\n /**\n * Get minimum width required to render all voices. Either `format` or\n * `preCalculateMinTotalWidth` must be called before this method.\n */\n getMinTotalWidth() {\n if (!this.hasMinTotalWidth) {\n throw new RuntimeError('NoMinTotalWidth', \"Call 'preCalculateMinTotalWidth' or 'preFormat' before calling 'getMinTotalWidth'\");\n }\n return this.minTotalWidth;\n }\n /** Calculate the resolution multiplier for `voices`. */\n static getResolutionMultiplier(voices) {\n if (!voices || !voices.length) {\n throw new RuntimeError('BadArgument', 'No voices to format');\n }\n const totalTicks = voices[0].getTotalTicks();\n const resolutionMultiplier = voices.reduce((accumulator, voice) => {\n if (!voice.getTotalTicks().equals(totalTicks)) {\n throw new RuntimeError('TickMismatch', 'Voices should have same total note duration in ticks.');\n }\n if (voice.getMode() === Voice.Mode.STRICT && !voice.isComplete()) {\n throw new RuntimeError('IncompleteVoice', 'Voice does not have enough notes.');\n }\n return Math.max(accumulator, Fraction.LCM(accumulator, voice.getResolutionMultiplier()));\n }, 1);\n return resolutionMultiplier;\n }\n /** Create a `ModifierContext` for each tick in `voices`. */\n createModifierContexts(voices) {\n if (voices.length == 0)\n return;\n const resolutionMultiplier = Formatter.getResolutionMultiplier(voices);\n // Initialize tick maps.\n const tickToContextMap = new Map();\n const contexts = [];\n // For each voice, extract notes and create a context for every\n // new tick that hasn't been seen before.\n voices.forEach((voice) => {\n // Use resolution multiplier as denominator so that no additional expansion\n // of fractional tick values is needed.\n const ticksUsed = new Fraction(0, resolutionMultiplier);\n voice.getTickables().forEach((tickable) => {\n const integerTicks = ticksUsed.numerator;\n let staveTickToContextMap = tickToContextMap.get(tickable.getStave());\n // If we have no tick context for this tick, create one.\n if (!staveTickToContextMap) {\n tickToContextMap.set(tickable.getStave(), {});\n staveTickToContextMap = tickToContextMap.get(tickable.getStave());\n }\n if (!(staveTickToContextMap ? staveTickToContextMap[integerTicks] : undefined)) {\n const newContext = new ModifierContext();\n contexts.push(newContext);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n staveTickToContextMap[integerTicks] = newContext;\n }\n // Add this tickable to the TickContext.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n tickable.addToModifierContext(staveTickToContextMap[integerTicks]);\n ticksUsed.add(tickable.getTicks());\n });\n });\n this.modifierContexts.push({\n map: tickToContextMap,\n array: contexts,\n resolutionMultiplier,\n });\n }\n /**\n * Create a `TickContext` for each tick in `voices`. Also calculate the\n * total number of ticks in voices.\n */\n createTickContexts(voices) {\n const fn = (tickable, context, voiceIndex) => context.addTickable(tickable, voiceIndex);\n const contexts = createContexts(voices, (tick) => new TickContext(tick), fn);\n this.tickContexts = contexts;\n const contextArray = this.tickContexts.array;\n contextArray.forEach((context) => {\n context.tContexts = contextArray;\n });\n return contexts;\n }\n /**\n * Get the AlignmentContexts of TickContexts that were created by createTickContexts.\n * Returns undefined if createTickContexts has not yet been run.\n */\n getTickContexts() {\n return this.tickContexts;\n }\n /**\n * This is the core formatter logic. Format voices and justify them\n * to `justifyWidth` pixels. `renderingContext` is required to justify elements\n * that can't retrieve widths without a canvas. This method sets the `x` positions\n * of all the tickables/notes in the formatter.\n */\n preFormat(justifyWidth = 0, renderingContext, voicesParam, stave) {\n // Initialize context maps.\n const contexts = this.tickContexts;\n if (!contexts) {\n throw new RuntimeError('NoTickContexts', 'preFormat requires TickContexts');\n }\n const { list: contextList, map: contextMap } = contexts;\n // Reset loss history for evaluator.\n this.lossHistory = [];\n // If voices and a stave were provided, set the Stave for each voice\n // and preFormat to apply Y values to the notes;\n if (voicesParam && stave) {\n voicesParam.forEach((voice) => voice.setStave(stave).preFormat());\n }\n // Now distribute the ticks to each tick context, and assign them their\n // own X positions.\n let x = 0;\n let shift = 0;\n this.minTotalWidth = 0;\n let totalTicks = 0;\n // Pass 1: Give each note maximum width requested by context.\n contextList.forEach((tick) => {\n const context = contextMap[tick];\n // Make sure that all tickables in this context have calculated their\n // space requirements.\n context.preFormat();\n const width = context.getWidth();\n this.minTotalWidth += width;\n const maxTicks = context.getMaxTicks().value();\n totalTicks += maxTicks;\n const metrics = context.getMetrics();\n x = x + shift + metrics.totalLeftPx;\n context.setX(x);\n // Calculate shift for the next tick.\n shift = width - metrics.totalLeftPx;\n });\n // Use softmax based on all notes across all staves. (options.globalSoftmax)\n const { globalSoftmax, softmaxFactor, maxIterations } = this.formatterOptions;\n const exp = (tick) => Math.pow(softmaxFactor, (contextMap[tick].getMaxTicks().value() / totalTicks));\n const expTicksUsed = sumArray(contextList.map(exp));\n this.minTotalWidth = x + shift;\n this.hasMinTotalWidth = true;\n // No justification needed. End formatting.\n if (justifyWidth <= 0)\n return this.evaluate();\n // Start justification. Subtract the right extra pixels of the final context because the formatter\n // justifies based on the context's X position, which is the left-most part of the note head.\n const firstContext = contextMap[contextList[0]];\n const lastContext = contextMap[contextList[contextList.length - 1]];\n // Calculate the \"distance error\" between the tick contexts. The expected distance is the spacing proportional to\n // the softmax of the ticks.\n function calculateIdealDistances(adjustedJustifyWidth) {\n const distances = contextList.map((tick, i) => {\n const context = contextMap[tick];\n const voices = context.getTickablesByVoice();\n let backTickable;\n if (i > 0) {\n const prevContext = contextMap[contextList[i - 1]];\n // Go through each tickable and search backwards for another tickable\n // in the same voice. If found, use that duration (ticks) to calculate\n // the expected distance.\n for (let j = i - 1; j >= 0; j--) {\n const backTick = contextMap[contextList[j]];\n const backVoices = backTick.getTickablesByVoice();\n // Look for matching voices between tick contexts.\n const matchingVoices = [];\n Object.keys(voices).forEach((v) => {\n if (backVoices[v]) {\n matchingVoices.push(v);\n }\n });\n if (matchingVoices.length > 0) {\n // Found matching voices, get largest duration\n let maxTicks = 0;\n let maxNegativeShiftPx = Infinity;\n let expectedDistance = 0;\n matchingVoices.forEach((v) => {\n const ticks = backVoices[v].getTicks().value();\n if (ticks > maxTicks) {\n backTickable = backVoices[v];\n maxTicks = ticks;\n }\n // Calculate the limits of the shift based on modifiers, etc.\n const thisTickable = voices[v];\n const insideLeftEdge = thisTickable.getX() -\n (thisTickable.getMetrics().modLeftPx + thisTickable.getMetrics().leftDisplacedHeadPx);\n const backMetrics = backVoices[v].getMetrics();\n const insideRightEdge = backVoices[v].getX() + backMetrics.notePx + backMetrics.modRightPx + backMetrics.rightDisplacedHeadPx;\n // Don't allow shifting if notes in the same voice can collide\n maxNegativeShiftPx = Math.min(maxNegativeShiftPx, insideLeftEdge - insideRightEdge);\n });\n // Don't shift further left than the notehead of the last context. Actually, stay at most 5% to the right\n // so that two different tick contexts don't align across staves.\n maxNegativeShiftPx = Math.min(maxNegativeShiftPx, context.getX() - (prevContext.getX() + adjustedJustifyWidth * 0.05));\n // Calculate the expected distance of the current context from the last matching tickable. The\n // distance is scaled down by the softmax for the voice.\n if (globalSoftmax) {\n const t = totalTicks;\n expectedDistance = (Math.pow(softmaxFactor, (maxTicks / t)) / expTicksUsed) * adjustedJustifyWidth;\n }\n else if (typeof backTickable !== 'undefined') {\n expectedDistance = backTickable.getVoice().softmax(maxTicks) * adjustedJustifyWidth;\n }\n return {\n expectedDistance,\n maxNegativeShiftPx,\n fromTickable: backTickable,\n };\n }\n }\n }\n return { expectedDistance: 0, fromTickablePx: 0, maxNegativeShiftPx: 0 };\n });\n return distances;\n }\n function shiftToIdealDistances(idealDistances) {\n // Distribute ticks to the contexts based on the calculated distance error.\n const centerX = adjustedJustifyWidth / 2;\n let spaceAccum = 0;\n contextList.forEach((tick, index) => {\n const context = contextMap[tick];\n if (index > 0) {\n const contextX = context.getX();\n const ideal = idealDistances[index];\n const errorPx = defined(ideal.fromTickable).getX() + ideal.expectedDistance - (contextX + spaceAccum);\n let negativeShiftPx = 0;\n if (errorPx > 0) {\n spaceAccum += errorPx;\n }\n else if (errorPx < 0) {\n negativeShiftPx = Math.min(ideal.maxNegativeShiftPx, Math.abs(errorPx));\n spaceAccum += -negativeShiftPx;\n }\n context.setX(contextX + spaceAccum);\n }\n // Move center aligned tickables to middle\n context.getCenterAlignedTickables().forEach((tickable) => {\n tickable.setCenterXShift(centerX - context.getX());\n });\n });\n return lastContext.getX() - firstContext.getX();\n }\n const adjustedJustifyWidth = justifyWidth -\n lastContext.getMetrics().notePx -\n lastContext.getMetrics().totalRightPx -\n firstContext.getMetrics().totalLeftPx;\n const musicFont = Tables.currentMusicFont();\n const configMinPadding = musicFont.lookupMetric('stave.endPaddingMin');\n const configMaxPadding = musicFont.lookupMetric('stave.endPaddingMax');\n const leftPadding = musicFont.lookupMetric('stave.padding');\n let targetWidth = adjustedJustifyWidth;\n const distances = calculateIdealDistances(targetWidth);\n let actualWidth = shiftToIdealDistances(distances);\n // Just one context. Done formatting.\n if (contextList.length === 1)\n return 0;\n const calcMinDistance = (targetWidth, distances) => {\n let mdCalc = targetWidth / 2;\n if (distances.length > 1) {\n for (let di = 1; di < distances.length; ++di) {\n mdCalc = Math.min(distances[di].expectedDistance / 2, mdCalc);\n }\n }\n return mdCalc;\n };\n const minDistance = calcMinDistance(targetWidth, distances);\n // right justify to either the configured padding, or the min distance between notes, whichever is greatest.\n // This * 2 keeps the existing formatting unless there is 'a lot' of extra whitespace, which won't break\n // existing visual regression tests.\n const paddingMaxCalc = (curTargetWidth) => {\n let lastTickablePadding = 0;\n const lastTickable = lastContext && lastContext.getMaxTickable();\n if (lastTickable) {\n const voice = lastTickable.getVoice();\n // If the number of actual ticks in the measure <> configured ticks, right-justify\n // because the softmax won't yield the correct value\n if (voice.getTicksUsed().value() > voice.getTotalTicks().value()) {\n return configMaxPadding * 2 < minDistance ? minDistance : configMaxPadding;\n }\n const tickWidth = lastTickable.getWidth();\n lastTickablePadding =\n voice.softmax(lastContext.getMaxTicks().value()) * curTargetWidth - (tickWidth + leftPadding);\n }\n return configMaxPadding * 2 < lastTickablePadding ? lastTickablePadding : configMaxPadding;\n };\n let paddingMax = paddingMaxCalc(targetWidth);\n let paddingMin = paddingMax - (configMaxPadding - configMinPadding);\n const maxX = adjustedJustifyWidth - paddingMin;\n let iterations = maxIterations;\n // Adjust justification width until the right margin is as close as possible to the calculated padding,\n // without going over\n while ((actualWidth > maxX && iterations > 0) || (actualWidth + paddingMax < maxX && iterations > 1)) {\n targetWidth -= actualWidth - maxX;\n paddingMax = paddingMaxCalc(targetWidth);\n paddingMin = paddingMax - (configMaxPadding - configMinPadding);\n actualWidth = shiftToIdealDistances(calculateIdealDistances(targetWidth));\n iterations--;\n }\n this.justifyWidth = justifyWidth;\n return this.evaluate();\n }\n /** Calculate the total cost of this formatting decision. */\n evaluate() {\n const contexts = this.tickContexts;\n const justifyWidth = this.justifyWidth;\n // Calculate available slack per tick context. This works out how much freedom\n // to move a context has in either direction, without affecting other notes.\n this.contextGaps = { total: 0, gaps: [] };\n contexts.list.forEach((tick, index) => {\n if (index === 0)\n return;\n const prevTick = contexts.list[index - 1];\n const prevContext = contexts.map[prevTick];\n const context = contexts.map[tick];\n const prevMetrics = prevContext.getMetrics();\n const currMetrics = context.getMetrics();\n // Calculate X position of right edge of previous note\n const insideRightEdge = prevContext.getX() + prevMetrics.notePx + prevMetrics.totalRightPx;\n // Calculate X position of left edge of current note\n const insideLeftEdge = context.getX() - currMetrics.totalLeftPx;\n const gap = insideLeftEdge - insideRightEdge;\n this.contextGaps.total += gap;\n this.contextGaps.gaps.push({ x1: insideRightEdge, x2: insideLeftEdge });\n // Tell the tick contexts how much they can reposition themselves.\n context.getFormatterMetrics().freedom.left = gap;\n prevContext.getFormatterMetrics().freedom.right = gap;\n });\n // Calculate mean distance in each voice for each duration type, then calculate\n // how far each note is from the mean.\n this.durationStats = {};\n const durationStats = this.durationStats;\n function updateStats(duration, space) {\n const stats = durationStats[duration];\n if (stats === undefined) {\n durationStats[duration] = { mean: space, count: 1 };\n }\n else {\n stats.count += 1;\n stats.mean = (stats.mean + space) / 2;\n }\n }\n this.voices.forEach((voice) => {\n voice.getTickables().forEach((note, i, notes) => {\n const duration = note.getTicks().clone().simplify().toString();\n const metrics = note.getMetrics();\n const formatterMetrics = note.getFormatterMetrics();\n const leftNoteEdge = note.getX() + metrics.notePx + metrics.modRightPx + metrics.rightDisplacedHeadPx;\n let space = 0;\n if (i < notes.length - 1) {\n const rightNote = notes[i + 1];\n const rightMetrics = rightNote.getMetrics();\n const rightNoteEdge = rightNote.getX() - rightMetrics.modLeftPx - rightMetrics.leftDisplacedHeadPx;\n space = rightNoteEdge - leftNoteEdge;\n formatterMetrics.space.used = rightNote.getX() - note.getX();\n rightNote.getFormatterMetrics().freedom.left = space;\n }\n else {\n space = justifyWidth - leftNoteEdge;\n formatterMetrics.space.used = justifyWidth - note.getX();\n }\n formatterMetrics.freedom.right = space;\n updateStats(duration, formatterMetrics.space.used);\n });\n });\n // Calculate how much each note deviates from the mean. Loss function is square\n // root of the sum of squared deviations.\n let totalDeviation = 0;\n this.voices.forEach((voice) => {\n voice.getTickables().forEach((note) => {\n const duration = note.getTicks().clone().simplify().toString();\n const metrics = note.getFormatterMetrics();\n metrics.space.mean = durationStats[duration].mean;\n metrics.duration = duration;\n metrics.iterations += 1;\n metrics.space.deviation = metrics.space.used - metrics.space.mean;\n totalDeviation += Math.pow(metrics.space.deviation, 2);\n });\n });\n this.totalCost = Math.sqrt(totalDeviation);\n this.lossHistory.push(this.totalCost);\n return this.totalCost;\n }\n /**\n * Run a single iteration of rejustification. At a high level, this method calculates\n * the overall \"loss\" (or cost) of this layout, and repositions tickcontexts in an\n * attempt to reduce the cost. You can call this method multiple times until it finds\n * and oscillates around a global minimum.\n * @param options[alpha] the \"learning rate\" for the formatter. It determines how much of a shift\n * the formatter should make based on its cost function.\n */\n tune(options) {\n var _a;\n const contexts = this.tickContexts;\n if (!contexts) {\n return 0;\n }\n const alpha = (_a = options === null || options === void 0 ? void 0 : options.alpha) !== null && _a !== void 0 ? _a : 0.5;\n // Move `current` tickcontext by `shift` pixels, and adjust the freedom\n // on adjacent tickcontexts.\n function move(current, shift, prev, next) {\n current.setX(current.getX() + shift);\n current.getFormatterMetrics().freedom.left += shift;\n current.getFormatterMetrics().freedom.right -= shift;\n if (prev)\n prev.getFormatterMetrics().freedom.right += shift;\n if (next)\n next.getFormatterMetrics().freedom.left -= shift;\n }\n let shift = 0;\n this.totalShift = 0;\n contexts.list.forEach((tick, index, list) => {\n const context = contexts.map[tick];\n const prevContext = index > 0 ? contexts.map[list[index - 1]] : undefined;\n const nextContext = index < list.length - 1 ? contexts.map[list[index + 1]] : undefined;\n move(context, shift, prevContext, nextContext);\n const cost = -sumArray(context.getTickables().map((t) => t.getFormatterMetrics().space.deviation));\n if (cost > 0) {\n shift = -Math.min(context.getFormatterMetrics().freedom.right, Math.abs(cost));\n }\n else if (cost < 0) {\n if (nextContext) {\n shift = Math.min(nextContext.getFormatterMetrics().freedom.right, Math.abs(cost));\n }\n else {\n shift = 0;\n }\n }\n shift *= alpha;\n this.totalShift += shift;\n });\n return this.evaluate();\n }\n /**\n * This is the top-level call for all formatting logic completed\n * after `x` *and* `y` values have been computed for the notes\n * in the voices.\n */\n postFormat() {\n this.modifierContexts.forEach((modifierContexts) => {\n modifierContexts.array.forEach((mc) => mc.postFormat());\n });\n this.tickContexts.list.forEach((tick) => {\n this.tickContexts.map[tick].postFormat();\n });\n return this;\n }\n /**\n * Take all `voices` and create `ModifierContext`s out of them. This tells\n * the formatters that the voices belong on a single stave.\n */\n joinVoices(voices) {\n this.createModifierContexts(voices);\n this.hasMinTotalWidth = false;\n return this;\n }\n /**\n * Align rests in voices, justify the contexts, and position the notes\n * so voices are aligned and ready to render onto the stave. This method\n * mutates the `x` positions of all tickables in `voices`.\n *\n * Voices are full justified to fit in `justifyWidth` pixels.\n *\n * Set `options.context` to the rendering context. Set `options.align_rests`\n * to true to enable rest alignment.\n */\n format(voices, justifyWidth, options) {\n const opts = Object.assign({ align_rests: false }, options);\n this.voices = voices;\n const softmaxFactor = this.formatterOptions.softmaxFactor;\n if (softmaxFactor) {\n this.voices.forEach((v) => v.setSoftmaxFactor(softmaxFactor));\n }\n this.alignRests(voices, opts.align_rests);\n this.createTickContexts(voices);\n this.preFormat(justifyWidth, opts.context, voices, opts.stave);\n // Only postFormat if a stave was supplied for y value formatting\n if (opts.stave)\n this.postFormat();\n return this;\n }\n // This method is just like `format` except that the `justifyWidth` is inferred from the `stave`.\n formatToStave(voices, stave, optionsParam) {\n const options = Object.assign({ context: stave.getContext() }, optionsParam);\n // eslint-disable-next-line\n const justifyWidth = stave.getNoteEndX() - stave.getNoteStartX() - Stave.defaultPadding;\n L('Formatting voices to width: ', justifyWidth);\n return this.format(voices, justifyWidth, options);\n }\n getTickContext(tick) {\n var _a;\n return (_a = this.tickContexts) === null || _a === void 0 ? void 0 : _a.map[tick];\n }\n}\n// To enable logging for this class. Set `Vex.Flow.Formatter.DEBUG` to `true`.\nFormatter.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n/**\n * ## Description\n *\n * Create a new tuplet from the specified notes. The notes must\n * be part of the same voice. If they are of different rhythmic\n * values, then options.num_notes must be set.\n *\n * @constructor\n * @param {Array.} A set of notes: staveNotes,\n * notes, etc... any class that inherits stemmableNote at some\n * point in its prototype chain.\n * @param options: object {\n *\n * num_notes: fit this many notes into...\n * notes_occupied: ...the space of this many notes\n *\n * Together, these two properties make up the tuplet ratio\n * in the form of num_notes : notes_occupied.\n * num_notes defaults to the number of notes passed in, so\n * it is important that if you omit this property, all of\n * the notes passed should be of the same note value.\n * notes_occupied defaults to 2 -- so you should almost\n * certainly pass this parameter for anything other than\n * a basic triplet.\n *\n * location:\n * default 1, which is above the notes: ┌─── 3 ───┐\n * -1 is below the notes └─── 3 ───┘\n *\n * bracketed: boolean, draw a bracket around the tuplet number\n * when true: ┌─── 3 ───┐ when false: 3\n * defaults to true if notes are not beamed, false otherwise\n *\n * ratioed: boolean\n * when true: ┌─── 7:8 ───┐, when false: ┌─── 7 ───┐\n * defaults to true if the difference between num_notes and\n * notes_occupied is greater than 1.\n *\n * y_offset: int, default 0\n * manually offset a tuplet, for instance to avoid collisions\n * with articulations, etc...\n * }\n */\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { Glyph } from './glyph';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var TupletLocation;\n(function (TupletLocation) {\n TupletLocation[TupletLocation[\"BOTTOM\"] = -1] = \"BOTTOM\";\n TupletLocation[TupletLocation[\"TOP\"] = 1] = \"TOP\";\n})(TupletLocation || (TupletLocation = {}));\nexport class Tuplet extends Element {\n constructor(notes, options = {}) {\n super();\n this.numerator_glyphs = [];\n this.denom_glyphs = [];\n if (!notes || !notes.length) {\n throw new RuntimeError('BadArguments', 'No notes provided for tuplet.');\n }\n this.options = options;\n this.notes = notes;\n this.num_notes = this.options.num_notes != undefined ? this.options.num_notes : notes.length;\n // We accept beats_occupied, but warn that it's deprecated:\n // the preferred property name is now notes_occupied.\n if (this.options.beats_occupied) {\n this.beatsOccupiedDeprecationWarning();\n }\n this.notes_occupied = this.options.notes_occupied || this.options.beats_occupied || 2;\n if (this.options.bracketed != undefined) {\n this.bracketed = this.options.bracketed;\n }\n else {\n this.bracketed = notes.some((note) => !note.hasBeam());\n }\n this.ratioed =\n this.options.ratioed != undefined ? this.options.ratioed : Math.abs(this.notes_occupied - this.num_notes) > 1;\n this.point = Tables.currentMusicFont().lookupMetric('digits.tupletPoint');\n this.y_pos = 16;\n this.x_pos = 100;\n this.width = 200;\n this.setTupletLocation(this.options.location || Tuplet.LOCATION_TOP);\n Formatter.AlignRestsToNotes(notes, true, true);\n this.resolveGlyphs();\n this.attach();\n }\n static get CATEGORY() {\n return Category.Tuplet;\n }\n static get LOCATION_TOP() {\n return TupletLocation.TOP;\n }\n static get LOCATION_BOTTOM() {\n return TupletLocation.BOTTOM;\n }\n static get NESTING_OFFSET() {\n return 15;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.tuplet;\n }\n attach() {\n for (let i = 0; i < this.notes.length; i++) {\n const note = this.notes[i];\n note.setTuplet(this);\n }\n }\n detach() {\n for (let i = 0; i < this.notes.length; i++) {\n const note = this.notes[i];\n note.resetTuplet(this);\n }\n }\n /**\n * Set whether or not the bracket is drawn.\n */\n setBracketed(bracketed) {\n this.bracketed = !!bracketed;\n return this;\n }\n /**\n * Set whether or not the ratio is shown.\n */\n setRatioed(ratioed) {\n this.ratioed = !!ratioed;\n return this;\n }\n /**\n * Set the tuplet indicator to be displayed either on the top or bottom of the stave.\n */\n setTupletLocation(location) {\n if (location !== Tuplet.LOCATION_TOP && location !== Tuplet.LOCATION_BOTTOM) {\n // eslint-disable-next-line\n console.warn(`Invalid tuplet location [${location}]. Using Tuplet.LOCATION_TOP.`);\n location = Tuplet.LOCATION_TOP;\n }\n this.location = location;\n return this;\n }\n getNotes() {\n return this.notes;\n }\n getNoteCount() {\n return this.num_notes;\n }\n beatsOccupiedDeprecationWarning() {\n // eslint-disable-next-line\n console.warn('beats_occupied has been deprecated as an option for tuplets. Please use notes_occupied instead.', 'Calls to getBeatsOccupied / setBeatsOccupied should now be routed to getNotesOccupied / setNotesOccupied.', 'The old methods will be removed in VexFlow 5.0.');\n }\n getBeatsOccupied() {\n this.beatsOccupiedDeprecationWarning();\n return this.getNotesOccupied();\n }\n setBeatsOccupied(beats) {\n this.beatsOccupiedDeprecationWarning();\n return this.setNotesOccupied(beats);\n }\n getNotesOccupied() {\n return this.notes_occupied;\n }\n setNotesOccupied(notes) {\n this.detach();\n this.notes_occupied = notes;\n this.resolveGlyphs();\n this.attach();\n }\n resolveGlyphs() {\n this.numerator_glyphs = [];\n let n = this.num_notes;\n while (n >= 1) {\n this.numerator_glyphs.unshift(new Glyph('timeSig' + (n % 10), this.point));\n n = parseInt((n / 10).toString(), 10);\n }\n this.denom_glyphs = [];\n n = this.notes_occupied;\n while (n >= 1) {\n this.denom_glyphs.unshift(new Glyph('timeSig' + (n % 10), this.point));\n n = parseInt((n / 10).toString(), 10);\n }\n }\n // determine how many tuplets are nested within this tuplet\n // on the same side (above/below), to calculate a y\n // offset for this tuplet:\n getNestedTupletCount() {\n const location = this.location;\n const first_note = this.notes[0];\n let maxTupletCount = countTuplets(first_note, location);\n let minTupletCount = countTuplets(first_note, location);\n // Count the tuplets that are on the same side (above/below)\n // as this tuplet:\n function countTuplets(note, location) {\n return note.getTupletStack().filter((tuplet) => tuplet.location === location).length;\n }\n this.notes.forEach((note) => {\n const tupletCount = countTuplets(note, location);\n maxTupletCount = tupletCount > maxTupletCount ? tupletCount : maxTupletCount;\n minTupletCount = tupletCount < minTupletCount ? tupletCount : minTupletCount;\n });\n return maxTupletCount - minTupletCount;\n }\n // determine the y position of the tuplet:\n getYPosition() {\n // offset the tuplet for any nested tuplets between\n // it and the notes:\n const nested_tuplet_y_offset = this.getNestedTupletCount() * Tuplet.NESTING_OFFSET * -this.location;\n // offset the tuplet for any manual y_offset:\n const y_offset = this.options.y_offset || 0;\n // now iterate through the notes and find our highest\n // or lowest locations, to form a base y_pos\n const first_note = this.notes[0];\n let y_pos;\n if (this.location === Tuplet.LOCATION_TOP) {\n y_pos = first_note.checkStave().getYForLine(0) - Tuplet.metrics.topModifierOffset;\n // check modifiers above note to see if they will collide with tuplet beam\n for (let i = 0; i < this.notes.length; ++i) {\n const note = this.notes[i];\n let modLines = 0;\n const mc = note.getModifierContext();\n if (mc) {\n modLines = Math.max(modLines, mc.getState().top_text_line);\n }\n const modY = note.getYForTopText(modLines) - Tuplet.metrics.noteHeadOffset;\n if (note.hasStem() || note.isRest()) {\n const top_y = note.getStemDirection() === Stem.UP\n ? note.getStemExtents().topY - Tuplet.metrics.stemOffset\n : note.getStemExtents().baseY - Tuplet.metrics.noteHeadOffset;\n y_pos = Math.min(top_y, y_pos);\n if (modLines > 0) {\n y_pos = Math.min(modY, y_pos);\n }\n }\n }\n }\n else {\n let lineCheck = Tuplet.metrics.bottomLine; // tuplet default on line 4\n // check modifiers below note to see if they will collide with tuplet beam\n this.notes.forEach((nn) => {\n const mc = nn.getModifierContext();\n if (mc) {\n lineCheck = Math.max(lineCheck, mc.getState().text_line + 1);\n }\n });\n y_pos = first_note.checkStave().getYForLine(lineCheck) + Tuplet.metrics.noteHeadOffset;\n for (let i = 0; i < this.notes.length; ++i) {\n if (this.notes[i].hasStem() || this.notes[i].isRest()) {\n const bottom_y = this.notes[i].getStemDirection() === Stem.UP\n ? this.notes[i].getStemExtents().baseY + Tuplet.metrics.noteHeadOffset\n : this.notes[i].getStemExtents().topY + Tuplet.metrics.stemOffset;\n if (bottom_y > y_pos) {\n y_pos = bottom_y;\n }\n }\n }\n }\n return y_pos + nested_tuplet_y_offset + y_offset;\n }\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n // determine x value of left bound of tuplet\n const first_note = this.notes[0];\n const last_note = this.notes[this.notes.length - 1];\n if (!this.bracketed) {\n this.x_pos = first_note.getStemX();\n this.width = last_note.getStemX() - this.x_pos;\n }\n else {\n this.x_pos = first_note.getTieLeftX() - 5;\n this.width = last_note.getTieRightX() - this.x_pos + 5;\n }\n // determine y value for tuplet\n this.y_pos = this.getYPosition();\n const addGlyphWidth = (width, glyph) => width + defined(glyph.getMetrics().width);\n // calculate total width of tuplet notation\n let width = this.numerator_glyphs.reduce(addGlyphWidth, 0);\n if (this.ratioed) {\n width = this.denom_glyphs.reduce(addGlyphWidth, width);\n width += this.point * 0.32;\n }\n const notation_center_x = this.x_pos + this.width / 2;\n const notation_start_x = notation_center_x - width / 2;\n // draw bracket if the tuplet is not beamed\n if (this.bracketed) {\n const line_width = this.width / 2 - width / 2 - 5;\n // only draw the bracket if it has positive length\n if (line_width > 0) {\n ctx.fillRect(this.x_pos, this.y_pos, line_width, 1);\n ctx.fillRect(this.x_pos + this.width / 2 + width / 2 + 5, this.y_pos, line_width, 1);\n ctx.fillRect(this.x_pos, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM ? 1 : 0), 1, this.location * 10);\n ctx.fillRect(this.x_pos + this.width, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM ? 1 : 0), 1, this.location * 10);\n }\n }\n // draw numerator glyphs\n const shiftY = Tables.currentMusicFont().lookupMetric('digits.shiftY', 0);\n let x_offset = 0;\n this.numerator_glyphs.forEach((glyph) => {\n glyph.render(ctx, notation_start_x + x_offset, this.y_pos + this.point / 3 - 2 + shiftY);\n x_offset += defined(glyph.getMetrics().width);\n });\n // display colon and denominator if the ratio is to be shown\n if (this.ratioed) {\n const colon_x = notation_start_x + x_offset + this.point * 0.16;\n const colon_radius = this.point * 0.06;\n ctx.beginPath();\n ctx.arc(colon_x, this.y_pos - this.point * 0.08, colon_radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n ctx.beginPath();\n ctx.arc(colon_x, this.y_pos + this.point * 0.12, colon_radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n x_offset += this.point * 0.32;\n this.denom_glyphs.forEach((glyph) => {\n glyph.render(ctx, notation_start_x + x_offset, this.y_pos + this.point / 3 - 2 + shiftY);\n x_offset += defined(glyph.getMetrics().width);\n });\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TupletLocation } from './tuplet';\nimport { Category, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nfunction calculateStemDirection(notes) {\n let lineSum = 0;\n notes.forEach((note) => {\n if (note.keyProps) {\n note.keyProps.forEach((keyProp) => {\n lineSum += keyProp.line - 3;\n });\n }\n });\n if (lineSum >= 0) {\n return Stem.DOWN;\n }\n return Stem.UP;\n}\nfunction getStemSlope(firstNote, lastNote) {\n const firstStemTipY = firstNote.getStemExtents().topY;\n const firstStemX = firstNote.getStemX();\n const lastStemTipY = lastNote.getStemExtents().topY;\n const lastStemX = lastNote.getStemX();\n return (lastStemTipY - firstStemTipY) / (lastStemX - firstStemX);\n}\nexport const BEAM_LEFT = 'L';\nexport const BEAM_RIGHT = 'R';\nexport const BEAM_BOTH = 'B';\n/** `Beams` span over a set of `StemmableNotes`. */\nexport class Beam extends Element {\n constructor(notes, auto_stem = false) {\n super();\n this.slope = 0;\n this.y_shift = 0;\n /**\n * Overrides to default beam directions for secondary-level beams that do not\n * connect to any other note. See further explanation at\n * `setPartialBeamSideAt`\n */\n this.forcedPartialDirections = {};\n if (!notes || notes.length === 0) {\n throw new RuntimeError('BadArguments', 'No notes provided for beam.');\n }\n if (notes.length === 1) {\n throw new RuntimeError('BadArguments', 'Too few notes for beam.');\n }\n // Validate beam line, direction and ticks.\n this.ticks = notes[0].getIntrinsicTicks();\n if (this.ticks >= Tables.durationToTicks('4')) {\n throw new RuntimeError('BadArguments', 'Beams can only be applied to notes shorter than a quarter note.');\n }\n let i; // shared iterator\n let note;\n this.stem_direction = Stem.UP;\n for (i = 0; i < notes.length; ++i) {\n note = notes[i];\n if (note.hasStem()) {\n this.stem_direction = note.getStemDirection();\n break;\n }\n }\n let stem_direction = this.stem_direction;\n // Figure out optimal stem direction based on given notes\n if (auto_stem && isStaveNote(notes[0])) {\n stem_direction = calculateStemDirection(notes);\n }\n else if (auto_stem && isTabNote(notes[0])) {\n // Auto Stem TabNotes\n const stem_weight = notes.reduce((memo, note) => memo + note.getStemDirection(), 0);\n stem_direction = stem_weight > -1 ? Stem.UP : Stem.DOWN;\n }\n // Apply stem directions and attach beam to notes\n for (i = 0; i < notes.length; ++i) {\n note = notes[i];\n if (auto_stem) {\n note.setStemDirection(stem_direction);\n this.stem_direction = stem_direction;\n }\n note.setBeam(this);\n }\n this.postFormatted = false;\n this.notes = notes;\n this.beam_count = this.getBeamCount();\n this.break_on_indices = [];\n this.render_options = {\n beam_width: 5,\n max_slope: 0.25,\n min_slope: -0.25,\n slope_iterations: 20,\n slope_cost: 100,\n show_stemlets: false,\n stemlet_extension: 7,\n partial_beam_length: 10,\n flat_beams: false,\n min_flat_beam_offset: 15,\n };\n }\n static get CATEGORY() {\n return Category.Beam;\n }\n /** Get the direction of the beam */\n getStemDirection() {\n return this.stem_direction;\n }\n /**\n * Get the default beam groups for a provided time signature.\n * Attempt to guess if the time signature is not found in table.\n * Currently this is fairly naive.\n */\n static getDefaultBeamGroups(time_sig) {\n if (!time_sig || time_sig === 'c') {\n time_sig = '4/4';\n }\n const defaults = {\n '1/2': ['1/2'],\n '2/2': ['1/2'],\n '3/2': ['1/2'],\n '4/2': ['1/2'],\n '1/4': ['1/4'],\n '2/4': ['1/4'],\n '3/4': ['1/4'],\n '4/4': ['1/4'],\n '1/8': ['1/8'],\n '2/8': ['2/8'],\n '3/8': ['3/8'],\n '4/8': ['2/8'],\n '1/16': ['1/16'],\n '2/16': ['2/16'],\n '3/16': ['3/16'],\n '4/16': ['2/16'],\n };\n const groups = defaults[time_sig];\n if (groups === undefined) {\n // If no beam groups found, naively determine\n // the beam groupings from the time signature\n const beatTotal = parseInt(time_sig.split('/')[0], 10);\n const beatValue = parseInt(time_sig.split('/')[1], 10);\n const tripleMeter = beatTotal % 3 === 0;\n if (tripleMeter) {\n return [new Fraction(3, beatValue)];\n }\n else if (beatValue > 4) {\n return [new Fraction(2, beatValue)];\n }\n else if (beatValue <= 4) {\n return [new Fraction(1, beatValue)];\n }\n }\n else {\n return groups.map((group) => new Fraction().parse(group));\n }\n return [new Fraction(1, 4)];\n }\n /**\n * A helper function to automatically build basic beams for a voice. For more\n * complex auto-beaming use `Beam.generateBeams()`.\n * @param voice the voice to generate the beams for\n * @param stem_direction a stem direction to apply to the entire voice\n * @param groups an array of `Fraction` representing beat groupings for the beam\n */\n static applyAndGetBeams(voice, stem_direction, groups) {\n return Beam.generateBeams(voice.getTickables(), { groups, stem_direction });\n }\n /**\n * A helper function to autimatically build beams for a voice with\n * configuration options.\n *\n * Example configuration object:\n *\n * ```\n * config = {\n * groups: [new Vex.Flow.Fraction(2, 8)],\n * stem_direction: -1,\n * beam_rests: true,\n * beam_middle_only: true,\n * show_stemlets: false\n * };\n * ```\n * @param notes an array of notes to create the beams for\n * @param config the configuration object\n * @param config.stem_direction set to apply the same direction to all notes\n * @param config.beam_rests set to `true` to include rests in the beams\n * @param config.beam_middle_only set to `true` to only beam rests in the middle of the beat\n * @param config.show_stemlets set to `true` to draw stemlets for rests\n * @param config.maintain_stem_directions set to `true` to not apply new stem directions\n * @param config.groups array of `Fractions` that represent the beat structure to beam the notes\n *\n */\n static generateBeams(notes, config = {}) {\n if (!config.groups || !config.groups.length) {\n config.groups = [new Fraction(2, 8)];\n }\n // Convert beam groups to tick amounts\n const tickGroups = config.groups.map((group) => {\n if (!group.multiply) {\n throw new RuntimeError('InvalidBeamGroups', 'The beam groups must be an array of Vex.Flow.Fractions');\n }\n return group.clone().multiply(Tables.RESOLUTION, 1);\n });\n const unprocessedNotes = notes;\n let currentTickGroup = 0;\n let noteGroups = [];\n let currentGroup = [];\n function getTotalTicks(vf_notes) {\n return vf_notes.reduce((memo, note) => note.getTicks().clone().add(memo), new Fraction(0, 1));\n }\n function nextTickGroup() {\n if (tickGroups.length - 1 > currentTickGroup) {\n currentTickGroup += 1;\n }\n else {\n currentTickGroup = 0;\n }\n }\n function createGroups() {\n let nextGroup = [];\n // number of ticks in current group\n let currentGroupTotalTicks = new Fraction(0, 1);\n unprocessedNotes.forEach((unprocessedNote) => {\n nextGroup = [];\n if (unprocessedNote.shouldIgnoreTicks()) {\n noteGroups.push(currentGroup);\n currentGroup = nextGroup;\n return; // Ignore untickables (like bar notes)\n }\n currentGroup.push(unprocessedNote);\n const ticksPerGroup = tickGroups[currentTickGroup].clone();\n const totalTicks = getTotalTicks(currentGroup).add(currentGroupTotalTicks);\n // Double the amount of ticks in a group, if it's an unbeamable tuplet\n const unbeamable = Tables.durationToNumber(unprocessedNote.getDuration()) < 8;\n if (unbeamable && unprocessedNote.getTuplet()) {\n ticksPerGroup.numerator *= 2;\n }\n // If the note that was just added overflows the group tick total\n if (totalTicks.greaterThan(ticksPerGroup)) {\n // If the overflow note can be beamed, start the next group\n // with it. Unbeamable notes leave the group overflowed.\n if (!unbeamable) {\n const note = currentGroup.pop();\n if (note)\n nextGroup.push(note);\n }\n noteGroups.push(currentGroup);\n // We have overflown, so we're going to next tick group. As we might have\n // overflown by more than 1 group, we need to go forward as many times as\n // needed, decreasing currentGroupTotalTicks by as many ticks as there are\n // in current groups as we go forward.\n do {\n currentGroupTotalTicks = totalTicks.subtract(tickGroups[currentTickGroup]);\n nextTickGroup();\n } while (currentGroupTotalTicks.greaterThanEquals(tickGroups[currentTickGroup]));\n currentGroup = nextGroup;\n }\n else if (totalTicks.equals(ticksPerGroup)) {\n noteGroups.push(currentGroup);\n currentGroupTotalTicks = new Fraction(0, 1);\n currentGroup = nextGroup;\n nextTickGroup();\n }\n });\n // Adds any remainder notes beam\n if (currentGroup.length > 0) {\n noteGroups.push(currentGroup);\n }\n }\n function getBeamGroups() {\n return noteGroups.filter((group) => {\n if (group.length > 1) {\n let beamable = true;\n group.forEach((note) => {\n if (note.getIntrinsicTicks() >= Tables.durationToTicks('4')) {\n beamable = false;\n }\n });\n return beamable;\n }\n return false;\n });\n }\n // Splits up groups by Rest\n function sanitizeGroups() {\n const sanitizedGroups = [];\n noteGroups.forEach((group) => {\n let tempGroup = [];\n group.forEach((note, index, group) => {\n const isFirstOrLast = index === 0 || index === group.length - 1;\n const prevNote = group[index - 1];\n const breaksOnEachRest = !config.beam_rests && note.isRest();\n const breaksOnFirstOrLastRest = config.beam_rests && config.beam_middle_only && note.isRest() && isFirstOrLast;\n let breakOnStemChange = false;\n if (config.maintain_stem_directions && prevNote && !note.isRest() && !prevNote.isRest()) {\n const prevDirection = prevNote.getStemDirection();\n const currentDirection = note.getStemDirection();\n breakOnStemChange = currentDirection !== prevDirection;\n }\n const isUnbeamableDuration = parseInt(note.getDuration(), 10) < 8;\n // Determine if the group should be broken at this note\n const shouldBreak = breaksOnEachRest || breaksOnFirstOrLastRest || breakOnStemChange || isUnbeamableDuration;\n if (shouldBreak) {\n // Add current group\n if (tempGroup.length > 0) {\n sanitizedGroups.push(tempGroup);\n }\n // Start a new group. Include the current note if the group\n // was broken up by stem direction, as that note needs to start\n // the next group of notes\n tempGroup = breakOnStemChange ? [note] : [];\n }\n else {\n // Add note to group\n tempGroup.push(note);\n }\n });\n // If there is a remaining group, add it as well\n if (tempGroup.length > 0) {\n sanitizedGroups.push(tempGroup);\n }\n });\n noteGroups = sanitizedGroups;\n }\n function formatStems() {\n noteGroups.forEach((group) => {\n let stemDirection;\n if (config.maintain_stem_directions) {\n const note = findFirstNote(group);\n stemDirection = note ? note.getStemDirection() : Stem.UP;\n }\n else {\n if (config.stem_direction) {\n stemDirection = config.stem_direction;\n }\n else {\n stemDirection = calculateStemDirection(group);\n }\n }\n applyStemDirection(group, stemDirection);\n });\n }\n function findFirstNote(group) {\n for (let i = 0; i < group.length; i++) {\n const note = group[i];\n if (!note.isRest()) {\n return note;\n }\n }\n return false;\n }\n function applyStemDirection(group, direction) {\n group.forEach((note) => {\n note.setStemDirection(direction);\n });\n }\n // Get all of the tuplets in all of the note groups\n function getTuplets() {\n const uniqueTuplets = [];\n // Go through all of the note groups and inspect for tuplets\n noteGroups.forEach((group) => {\n let tuplet;\n group.forEach((note) => {\n const noteTuplet = note.getTuplet();\n if (noteTuplet && tuplet !== noteTuplet) {\n tuplet = noteTuplet;\n uniqueTuplets.push(tuplet);\n }\n });\n });\n return uniqueTuplets;\n }\n // Using closures to store the variables throughout the various functions\n // IMO Keeps it this process lot cleaner - but not super consistent with\n // the rest of the API's style - Silverwolf90 (Cyril)\n createGroups();\n sanitizeGroups();\n formatStems();\n // Get the notes to be beamed\n const beamedNoteGroups = getBeamGroups();\n // Get the tuplets in order to format them accurately\n const allTuplets = getTuplets();\n // Create a Vex.Flow.Beam from each group of notes to be beamed\n const beams = [];\n beamedNoteGroups.forEach((group) => {\n const beam = new Beam(group);\n if (config.show_stemlets) {\n beam.render_options.show_stemlets = true;\n }\n if (config.secondary_breaks) {\n beam.render_options.secondary_break_ticks = Tables.durationToTicks(config.secondary_breaks);\n }\n if (config.flat_beams === true) {\n beam.render_options.flat_beams = true;\n beam.render_options.flat_beam_offset = config.flat_beam_offset;\n }\n beams.push(beam);\n });\n // Reformat tuplets\n allTuplets.forEach((tuplet) => {\n // Set the tuplet location based on the stem direction\n const direction = tuplet.notes[0].stem_direction === Stem.DOWN ? TupletLocation.BOTTOM : TupletLocation.TOP;\n tuplet.setTupletLocation(direction);\n // If any of the notes in the tuplet are not beamed, draw a bracket.\n let bracketed = false;\n for (let i = 0; i < tuplet.notes.length; i++) {\n const note = tuplet.notes[i];\n if (!note.hasBeam()) {\n bracketed = true;\n break;\n }\n }\n tuplet.setBracketed(bracketed);\n });\n return beams;\n }\n /** Get the notes in this beam. */\n getNotes() {\n return this.notes;\n }\n /** Get the max number of beams in the set of notes. */\n getBeamCount() {\n const beamCounts = this.notes.map((note) => note.getGlyph().beam_count);\n const maxBeamCount = beamCounts.reduce((max, beamCount) => (beamCount > max ? beamCount : max));\n return maxBeamCount;\n }\n /** Set which note `indices` to break the secondary beam at. */\n breakSecondaryAt(indices) {\n this.break_on_indices = indices;\n return this;\n }\n /**\n * Forces the direction of a partial beam (a secondary-level beam that exists\n * on one note only of the beam group). This is useful in rhythms such as 6/8\n * eighth-sixteenth-eighth-sixteenth, where the direction of the beam on the\n * first sixteenth note can help imply whether the rhythm is to be felt as\n * three groups of eighth notes (typical) or as two groups of three-sixteenths\n * (less common):\n * ```\n * ┌───┬──┬──┐ ┌──┬──┬──┐\n * │ ├─ │ ─┤ vs │ ─┤ │ ─┤\n * │ │ │ │ │ │ │ │\n * ```\n */\n setPartialBeamSideAt(noteIndex, side) {\n this.forcedPartialDirections[noteIndex] = side;\n return this;\n }\n /**\n * Restore the default direction of a partial beam (a secondary-level beam\n * that does not connect to any other notes).\n */\n unsetPartialBeamSideAt(noteIndex) {\n delete this.forcedPartialDirections[noteIndex];\n return this;\n }\n /** Return the y coordinate for linear function. */\n getSlopeY(x, first_x_px, first_y_px, slope) {\n return first_y_px + (x - first_x_px) * slope;\n }\n /** Calculate the best possible slope for the provided notes. */\n calculateSlope() {\n const { notes, stem_direction: stemDirection, render_options: { max_slope, min_slope, slope_iterations, slope_cost }, } = this;\n const firstNote = notes[0];\n const initialSlope = getStemSlope(firstNote, notes[notes.length - 1]);\n const increment = (max_slope - min_slope) / slope_iterations;\n let minCost = Number.MAX_VALUE;\n let bestSlope = 0;\n let yShift = 0;\n // iterate through slope values to find best weighted fit\n for (let slope = min_slope; slope <= max_slope; slope += increment) {\n let totalStemExtension = 0;\n let yShiftTemp = 0;\n // iterate through notes, calculating y shift and stem extension\n for (let i = 1; i < notes.length; ++i) {\n const note = notes[i];\n if (note.hasStem() || note.isRest()) {\n const adjustedStemTipY = this.getSlopeY(note.getStemX(), firstNote.getStemX(), firstNote.getStemExtents().topY, slope) + yShiftTemp;\n const stemTipY = note.getStemExtents().topY;\n // beam needs to be shifted up to accommodate note\n if (stemTipY * stemDirection < adjustedStemTipY * stemDirection) {\n const diff = Math.abs(stemTipY - adjustedStemTipY);\n yShiftTemp += diff * -stemDirection;\n totalStemExtension += diff * i;\n }\n else {\n // beam overshoots note, account for the difference\n totalStemExtension += (stemTipY - adjustedStemTipY) * stemDirection;\n }\n }\n }\n // most engraving books suggest aiming for a slope about half the angle of the\n // difference between the first and last notes' stem length;\n const idealSlope = initialSlope / 2;\n const distanceFromIdeal = Math.abs(idealSlope - slope);\n // This tries to align most beams to something closer to the idealSlope, but\n // doesn't go crazy. To disable, set this.render_options.slope_cost = 0\n const cost = slope_cost * distanceFromIdeal + Math.abs(totalStemExtension);\n // update state when a more ideal slope is found\n if (cost < minCost) {\n minCost = cost;\n bestSlope = slope;\n yShift = yShiftTemp;\n }\n }\n this.slope = bestSlope;\n this.y_shift = yShift;\n }\n /** Calculate a slope and y-shift for flat beams. */\n calculateFlatSlope() {\n const { notes, stem_direction, render_options: { beam_width, min_flat_beam_offset, flat_beam_offset }, } = this;\n // If a flat beam offset has not yet been supplied or calculated,\n // generate one based on the notes in this particular note group\n let total = 0;\n let extremeY = 0; // Store the highest or lowest note here\n let extremeBeamCount = 0; // The beam count of the extreme note\n let currentExtreme = 0;\n for (let i = 0; i < notes.length; i++) {\n // Total up all of the offsets so we can average them out later\n const note = notes[i];\n const stemTipY = note.getStemExtents().topY;\n total += stemTipY;\n // Store the highest (stems-up) or lowest (stems-down) note so the\n // offset can be adjusted in case the average isn't enough\n if (stem_direction === Stem.DOWN && currentExtreme < stemTipY) {\n currentExtreme = stemTipY;\n extremeY = Math.max(...note.getYs());\n extremeBeamCount = note.getBeamCount();\n }\n else if (stem_direction === Stem.UP && (currentExtreme === 0 || currentExtreme > stemTipY)) {\n currentExtreme = stemTipY;\n extremeY = Math.min(...note.getYs());\n extremeBeamCount = note.getBeamCount();\n }\n }\n // Average the offsets to try and come up with a reasonable one that\n // works for all of the notes in the beam group.\n let offset = total / notes.length;\n // In case the average isn't long enough, add or subtract some more\n // based on the highest or lowest note (again, based on the stem\n // direction). This also takes into account the added height due to\n // the width of the beams.\n const beamWidth = beam_width * 1.5;\n const extremeTest = min_flat_beam_offset + extremeBeamCount * beamWidth;\n const newOffset = extremeY + extremeTest * -stem_direction;\n if (stem_direction === Stem.DOWN && offset < newOffset) {\n offset = extremeY + extremeTest;\n }\n else if (stem_direction === Stem.UP && offset > newOffset) {\n offset = extremeY - extremeTest;\n }\n if (!flat_beam_offset) {\n // Set the offset for the group based on the calculations above.\n this.render_options.flat_beam_offset = offset;\n }\n else if (stem_direction === Stem.DOWN && offset > flat_beam_offset) {\n this.render_options.flat_beam_offset = offset;\n }\n else if (stem_direction === Stem.UP && offset < flat_beam_offset) {\n this.render_options.flat_beam_offset = offset;\n }\n // for flat beams, the slope and y_shift are simply 0\n this.slope = 0;\n this.y_shift = 0;\n }\n /** Return the Beam y offset. */\n getBeamYToDraw() {\n const firstNote = this.notes[0];\n const firstStemTipY = firstNote.getStemExtents().topY;\n let beamY = firstStemTipY;\n // For flat beams, set the first and last Y to the offset, rather than\n // using the note's stem extents.\n if (this.render_options.flat_beams && this.render_options.flat_beam_offset) {\n beamY = this.render_options.flat_beam_offset;\n }\n return beamY;\n }\n /**\n * Create new stems for the notes in the beam, so that each stem\n * extends into the beams.\n */\n applyStemExtensions() {\n const { notes, slope, y_shift, stem_direction, beam_count, render_options: { show_stemlets, stemlet_extension, beam_width }, } = this;\n const firstNote = notes[0];\n const firstStemTipY = this.getBeamYToDraw();\n const firstStemX = firstNote.getStemX();\n for (let i = 0; i < notes.length; ++i) {\n const note = notes[i];\n const stem = note.getStem();\n if (stem) {\n const stemX = note.getStemX();\n const { topY: stemTipY } = note.getStemExtents();\n const beamedStemTipY = this.getSlopeY(stemX, firstStemX, firstStemTipY, slope) + y_shift;\n const preBeamExtension = stem.getExtension();\n const beamExtension = stem_direction === Stem.UP ? stemTipY - beamedStemTipY : beamedStemTipY - stemTipY;\n stem.setExtension(preBeamExtension + beamExtension);\n stem.adjustHeightForBeam();\n if (note.isRest() && show_stemlets) {\n const beamWidth = beam_width;\n const totalBeamWidth = (beam_count - 1) * beamWidth * 1.5 + beamWidth;\n stem.setVisibility(true).setStemlet(true, totalBeamWidth + stemlet_extension);\n }\n }\n }\n }\n /** Return upper level beam direction. */\n lookupBeamDirection(duration, prev_tick, tick, next_tick, noteIndex) {\n if (duration === '4') {\n return BEAM_LEFT;\n }\n const forcedBeamDirection = this.forcedPartialDirections[noteIndex];\n if (forcedBeamDirection)\n return forcedBeamDirection;\n const lookup_duration = `${Tables.durationToNumber(duration) / 2}`;\n const prev_note_gets_beam = prev_tick < Tables.durationToTicks(lookup_duration);\n const next_note_gets_beam = next_tick < Tables.durationToTicks(lookup_duration);\n const note_gets_beam = tick < Tables.durationToTicks(lookup_duration);\n if (prev_note_gets_beam && next_note_gets_beam && note_gets_beam) {\n return BEAM_BOTH;\n }\n else if (prev_note_gets_beam && !next_note_gets_beam && note_gets_beam) {\n return BEAM_LEFT;\n }\n else if (!prev_note_gets_beam && next_note_gets_beam && note_gets_beam) {\n return BEAM_RIGHT;\n }\n return this.lookupBeamDirection(lookup_duration, prev_tick, tick, next_tick, noteIndex);\n }\n /** Get the x coordinates for the beam lines of specific `duration`. */\n getBeamLines(duration) {\n const tick_of_duration = Tables.durationToTicks(duration);\n let beam_started = false;\n const beam_lines = [];\n let current_beam = undefined;\n const partial_beam_length = this.render_options.partial_beam_length;\n let previous_should_break = false;\n let tick_tally = 0;\n for (let i = 0; i < this.notes.length; ++i) {\n const note = this.notes[i];\n // See if we need to break secondary beams on this note.\n const ticks = note.getTicks().value();\n tick_tally += ticks;\n let should_break = false;\n // 8th note beams are always drawn.\n if (parseInt(duration, 10) >= 8) {\n // First, check to see if any indices were set up through breakSecondaryAt()\n should_break = this.break_on_indices.indexOf(i) !== -1;\n // If the secondary breaks were auto-configured in the render options,\n // handle that as well.\n if (this.render_options.secondary_break_ticks && tick_tally >= this.render_options.secondary_break_ticks) {\n tick_tally = 0;\n should_break = true;\n }\n }\n const note_gets_beam = note.getIntrinsicTicks() < tick_of_duration;\n const stem_x = note.getStemX() - Stem.WIDTH / 2;\n // Check to see if the next note in the group will get a beam at this\n // level. This will help to inform the partial beam logic below.\n const prev_note = this.notes[i - 1];\n const next_note = this.notes[i + 1];\n const next_note_gets_beam = next_note && next_note.getIntrinsicTicks() < tick_of_duration;\n const prev_note_gets_beam = prev_note && prev_note.getIntrinsicTicks() < tick_of_duration;\n const beam_alone = prev_note && next_note && note_gets_beam && !prev_note_gets_beam && !next_note_gets_beam;\n // const beam_alone = note_gets_beam && !prev_note_gets_beam && !next_note_gets_beam;\n if (note_gets_beam) {\n // This note gets a beam at the current level\n if (beam_started) {\n // We're currently in the middle of a beam. Just continue it on to\n // the stem X of the current note.\n current_beam = beam_lines[beam_lines.length - 1];\n current_beam.end = stem_x;\n // If a secondary beam break is set up, end the beam right now.\n if (should_break) {\n beam_started = false;\n if (next_note && !next_note_gets_beam && current_beam.end === undefined) {\n // This note gets a beam,.but the next one does not. This means\n // we need a partial pointing right.\n current_beam.end = current_beam.start - partial_beam_length;\n }\n }\n }\n else {\n // No beam started yet. Start a new one.\n current_beam = { start: stem_x, end: undefined };\n beam_started = true;\n if (beam_alone) {\n // previous and next beam exists and does not get a beam but current gets it.\n const prev_tick = prev_note.getIntrinsicTicks();\n const next_tick = next_note.getIntrinsicTicks();\n const tick = note.getIntrinsicTicks();\n const beam_direction = this.lookupBeamDirection(duration, prev_tick, tick, next_tick, i);\n if ([BEAM_LEFT, BEAM_BOTH].includes(beam_direction)) {\n current_beam.end = current_beam.start - partial_beam_length;\n }\n else {\n current_beam.end = current_beam.start + partial_beam_length;\n }\n }\n else if (!next_note_gets_beam) {\n // The next note doesn't get a beam. Draw a partial.\n if ((previous_should_break || i === 0) && next_note) {\n // This is the first note (but not the last one), or it is\n // following a secondary break. Draw a partial to the right.\n current_beam.end = current_beam.start + partial_beam_length;\n }\n else {\n // By default, draw a partial to the left.\n current_beam.end = current_beam.start - partial_beam_length;\n }\n }\n else if (should_break) {\n // This note should have a secondary break after it. Even though\n // we just started a beam, it needs to end immediately.\n current_beam.end = current_beam.start - partial_beam_length;\n beam_started = false;\n }\n beam_lines.push(current_beam);\n }\n }\n else {\n // The current note does not get a beam.\n beam_started = false;\n }\n // Store the secondary break flag to inform the partial beam logic in\n // the next iteration of the loop.\n previous_should_break = should_break;\n }\n // Add a partial beam pointing left if this is the last note in the group\n const last_beam = beam_lines[beam_lines.length - 1];\n if (last_beam && last_beam.end === undefined) {\n last_beam.end = last_beam.start - partial_beam_length;\n }\n return beam_lines;\n }\n /** Render the stems for each note. */\n drawStems(ctx) {\n this.notes.forEach((note) => {\n const stem = note.getStem();\n if (stem) {\n const stem_x = note.getStemX();\n stem.setNoteHeadXBounds(stem_x, stem_x);\n stem.setContext(ctx).draw();\n }\n }, this);\n }\n // Render the beam lines\n drawBeamLines(ctx) {\n const valid_beam_durations = ['4', '8', '16', '32', '64'];\n const firstNote = this.notes[0];\n let beamY = this.getBeamYToDraw();\n const firstStemX = firstNote.getStemX();\n const beamThickness = this.render_options.beam_width * this.stem_direction;\n // Draw the beams.\n for (let i = 0; i < valid_beam_durations.length; ++i) {\n const duration = valid_beam_durations[i];\n const beamLines = this.getBeamLines(duration);\n for (let j = 0; j < beamLines.length; ++j) {\n const beam_line = beamLines[j];\n const startBeamX = beam_line.start;\n const startBeamY = this.getSlopeY(startBeamX, firstStemX, beamY, this.slope);\n const lastBeamX = beam_line.end;\n if (lastBeamX) {\n const lastBeamY = this.getSlopeY(lastBeamX, firstStemX, beamY, this.slope);\n ctx.openGroup('beam', this.getAttribute('id'));\n ctx.beginPath();\n ctx.moveTo(startBeamX, startBeamY);\n ctx.lineTo(startBeamX, startBeamY + beamThickness);\n ctx.lineTo(lastBeamX + 1, lastBeamY + beamThickness);\n ctx.lineTo(lastBeamX + 1, lastBeamY);\n ctx.closePath();\n ctx.fill();\n ctx.closeGroup();\n }\n else {\n throw new RuntimeError('NoLastBeamX', 'lastBeamX undefined.');\n }\n }\n beamY += beamThickness * 1.5;\n }\n }\n /** Pre-format the beam. */\n preFormat() {\n return this;\n }\n /**\n * Post-format the beam. This can only be called after\n * the notes in the beam have both `x` and `y` values. ie: they've\n * been formatted and have staves.\n */\n postFormat() {\n if (this.postFormatted)\n return;\n // Calculate a smart slope if we're not forcing the beams to be flat.\n if (isTabNote(this.notes[0]) || this.render_options.flat_beams) {\n this.calculateFlatSlope();\n }\n else {\n this.calculateSlope();\n }\n this.applyStemExtensions();\n this.postFormatted = true;\n }\n /** Render the beam to the canvas context */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n if (this.unbeamable)\n return;\n if (!this.postFormatted) {\n this.postFormat();\n }\n this.drawStems(ctx);\n this.applyStyle();\n this.drawBeamLines(ctx);\n this.restoreStyle();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\n// MIT License\nimport { Clef } from './clef';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\n/** ClefNote implements clef annotations in measures. */\nexport class ClefNote extends Note {\n constructor(type, size, annotation) {\n super({ duration: 'b' });\n this.type = type;\n this.clef_obj = new Clef(type, size, annotation);\n this.clef = this.clef_obj.clef;\n this.glyph = new Glyph(this.clef.code, this.clef.point);\n this.setWidth(this.glyph.getMetrics().width);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.ClefNote;\n }\n /** Set clef type, size and annotation. */\n setType(type, size, annotation) {\n this.type = type;\n this.clef_obj = new Clef(type, size, annotation);\n this.clef = this.clef_obj.clef;\n this.glyph = new Glyph(this.clef.code, this.clef.point);\n this.setWidth(this.glyph.getMetrics().width);\n return this;\n }\n /** Get associated clef. */\n getClef() {\n return this.clef;\n }\n /** Set associated context. */\n setContext(context) {\n super.setContext(context);\n this.glyph.setContext(this.getContext());\n return this;\n }\n /** Get bounding box. */\n getBoundingBox() {\n return super.getBoundingBox();\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n /** Render clef note. */\n draw() {\n var _a;\n const stave = this.checkStave();\n if (!this.glyph.getContext()) {\n this.glyph.setContext(this.getContext());\n }\n this.setRendered();\n const abs_x = this.getAbsoluteX();\n this.glyph.setStave(stave);\n this.glyph.setYShift(stave.getYForLine((_a = this.clef.line) !== null && _a !== void 0 ? _a : 0) - stave.getYForGlyphs());\n this.glyph.renderToStave(abs_x);\n // If the Vex.Flow.Clef has an annotation, such as 8va, draw it.\n if (this.clef_obj.annotation !== undefined) {\n const attachment = new Glyph(this.clef_obj.annotation.code, this.clef_obj.annotation.point);\n if (!attachment.getContext()) {\n attachment.setContext(this.getContext());\n }\n attachment.setStave(stave);\n attachment.setYShift(stave.getYForLine(this.clef_obj.annotation.line) - stave.getYForGlyphs());\n attachment.setXShift(this.clef_obj.annotation.x_shift);\n attachment.renderToStave(abs_x);\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This file implements the `Crescendo` object which draws crescendos and\n// decrescendo dynamics markings. A `Crescendo` is initialized with a\n// duration and formatted as part of a `Voice` like any other `Note`\n// type in VexFlow. This object would most likely be formatted in a Voice\n// with `TextNotes` - which are used to represent other dynamics markings.\nimport { Note } from './note';\nimport { TickContext } from './tickcontext';\nimport { Category } from './typeguard';\nimport { log } from './util';\n// To enable logging for this class. Set `Vex.Flow.Crescendo.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (Crescendo.DEBUG)\n log('Vex.Flow.Crescendo', args);\n}\n// Private helper to draw the hairpin\nfunction renderHairpin(ctx, params) {\n const begin_x = params.begin_x;\n const end_x = params.end_x;\n const y = params.y;\n const half_height = params.height / 2;\n ctx.beginPath();\n if (params.reverse) {\n ctx.moveTo(begin_x, y - half_height);\n ctx.lineTo(end_x, y);\n ctx.lineTo(begin_x, y + half_height);\n }\n else {\n ctx.moveTo(end_x, y - half_height);\n ctx.lineTo(begin_x, y);\n ctx.lineTo(end_x, y + half_height);\n }\n ctx.stroke();\n ctx.closePath();\n}\nexport class Crescendo extends Note {\n // Initialize the crescendo's properties\n constructor(noteStruct) {\n super(noteStruct);\n this.options = {\n // Extensions to the length of the crescendo on either side\n extend_left: 0,\n extend_right: 0,\n // Vertical shift\n y_shift: 0,\n };\n // Whether the object is a decrescendo\n this.decrescendo = false;\n // The staff line to be placed on\n this.line = noteStruct.line || 0;\n // The height at the open end of the cresc/decresc\n this.height = 15;\n }\n /** Crescendo category string. */\n static get CATEGORY() {\n return Category.Crescendo;\n }\n // Set the line to center the element on\n setLine(line) {\n this.line = line;\n return this;\n }\n // Set the full height at the open end\n setHeight(height) {\n this.height = height;\n return this;\n }\n // Set whether the sign should be a descresendo by passing a bool\n // to `decresc`\n setDecrescendo(decresc) {\n this.decrescendo = decresc;\n return this;\n }\n // Preformat the note\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n // Render the Crescendo object onto the canvas\n draw() {\n const ctx = this.checkContext();\n const stave = this.checkStave();\n this.setRendered();\n const tick_context = this.getTickContext();\n const next_context = TickContext.getNextContext(tick_context);\n const begin_x = this.getAbsoluteX();\n const end_x = next_context ? next_context.getX() : stave.getX() + stave.getWidth();\n const y = stave.getYForLine(this.line + -3) + 1;\n L('Drawing ', this.decrescendo ? 'decrescendo ' : 'crescendo ', this.height, 'x', begin_x - end_x);\n renderHairpin(ctx, {\n begin_x: begin_x - this.options.extend_left,\n end_x: end_x + this.options.extend_right,\n y: y + this.options.y_shift,\n height: this.height,\n reverse: this.decrescendo,\n });\n }\n}\nCrescendo.DEBUG = false;\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements curves (for slurs)\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport var CurvePosition;\n(function (CurvePosition) {\n CurvePosition[CurvePosition[\"NEAR_HEAD\"] = 1] = \"NEAR_HEAD\";\n CurvePosition[CurvePosition[\"NEAR_TOP\"] = 2] = \"NEAR_TOP\";\n})(CurvePosition || (CurvePosition = {}));\nexport class Curve extends Element {\n // from: Start note\n // to: End note\n // options:\n // cps: List of control points\n // x_shift: pixels to shift\n // y_shift: pixels to shift\n constructor(from, to, options) {\n super();\n this.render_options = Object.assign({ thickness: 2, x_shift: 0, y_shift: 10, position: CurvePosition.NEAR_HEAD, position_end: CurvePosition.NEAR_HEAD, invert: false, cps: [\n { x: 0, y: 10 },\n { x: 0, y: 10 },\n ] }, options);\n this.from = from;\n this.to = to;\n }\n static get CATEGORY() {\n return Category.Curve;\n }\n static get Position() {\n return CurvePosition;\n }\n static get PositionString() {\n return {\n nearHead: CurvePosition.NEAR_HEAD,\n nearTop: CurvePosition.NEAR_TOP,\n };\n }\n setNotes(from, to) {\n if (!from && !to) {\n throw new RuntimeError('BadArguments', 'Curve needs to have either `from` or `to` set.');\n }\n this.from = from;\n this.to = to;\n return this;\n }\n /**\n * @return {boolean} Returns true if this is a partial bar.\n */\n isPartial() {\n return !this.from || !this.to;\n }\n renderCurve(params) {\n const ctx = this.checkContext();\n const x_shift = this.render_options.x_shift;\n const y_shift = this.render_options.y_shift * params.direction;\n const first_x = params.first_x + x_shift;\n const first_y = params.first_y + y_shift;\n const last_x = params.last_x - x_shift;\n const last_y = params.last_y + y_shift;\n const thickness = this.render_options.thickness;\n const cps = this.render_options.cps;\n const { x: cp0x, y: cp0y } = cps[0];\n const { x: cp1x, y: cp1y } = cps[1];\n const cp_spacing = (last_x - first_x) / (cps.length + 2);\n ctx.beginPath();\n ctx.moveTo(first_x, first_y);\n ctx.bezierCurveTo(first_x + cp_spacing + cp0x, first_y + cp0y * params.direction, last_x - cp_spacing + cp1x, last_y + cp1y * params.direction, last_x, last_y);\n ctx.bezierCurveTo(last_x - cp_spacing + cp1x, last_y + (cp1y + thickness) * params.direction, first_x + cp_spacing + cp0x, first_y + (cp0y + thickness) * params.direction, first_x, first_y);\n ctx.stroke();\n ctx.closePath();\n ctx.fill();\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const first_note = this.from;\n const last_note = this.to;\n let first_x;\n let last_x;\n let first_y;\n let last_y;\n let stem_direction = 0;\n let metric = 'baseY';\n let end_metric = 'baseY';\n function getPosition(position) {\n return typeof position === 'string' ? Curve.PositionString[position] : position;\n }\n const position = getPosition(this.render_options.position);\n const position_end = getPosition(this.render_options.position_end);\n if (position === CurvePosition.NEAR_TOP) {\n metric = 'topY';\n end_metric = 'topY';\n }\n if (position_end === CurvePosition.NEAR_HEAD) {\n end_metric = 'baseY';\n }\n else if (position_end === CurvePosition.NEAR_TOP) {\n end_metric = 'topY';\n }\n if (first_note) {\n first_x = first_note.getTieRightX();\n stem_direction = first_note.getStemDirection();\n first_y = first_note.getStemExtents()[metric];\n }\n else {\n const stave = last_note.checkStave();\n first_x = stave.getTieStartX();\n first_y = last_note.getStemExtents()[metric];\n }\n if (last_note) {\n last_x = last_note.getTieLeftX();\n stem_direction = last_note.getStemDirection();\n last_y = last_note.getStemExtents()[end_metric];\n }\n else {\n const stave = first_note.checkStave();\n last_x = stave.getTieEndX();\n last_y = first_note.getStemExtents()[end_metric];\n }\n this.renderCurve({\n first_x,\n last_x,\n first_y,\n last_y,\n direction: stem_direction * (this.render_options.invert === true ? -1 : 1),\n });\n return true;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// A generic text parsing class for VexFlow.\nimport { log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.Parser.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (Parser.DEBUG)\n log('Vex.Flow.Parser', args);\n}\nconst NO_ERROR_POS = -1;\n// Converts parser results into an easy to reference list that can be\n// used in triggers. This function returns:\n// - nested array in which the leaf elements are string or null\n// - string (including empty strings)\n// - null\nfunction flattenMatches(r) {\n if ('matchedString' in r)\n return r.matchedString; // string\n if ('results' in r)\n return flattenMatches(r.results);\n const results = r;\n if (results.length === 1)\n return flattenMatches(results[0]);\n if (results.length === 0)\n return null;\n return results.map(flattenMatches); // nested array\n}\n// This is the base parser class. Given an arbitrary context-free grammar, it\n// can parse any line and execute code when specific rules are met (e.g.,\n// when a string is terminated.)\nexport class Parser {\n // For an example of a simple grammar, take a look at tests/parser_tests.ts or\n // the EasyScore grammar in easyscore.ts.\n constructor(grammar) {\n this.grammar = grammar;\n this.line = '';\n this.pos = 0;\n this.errorPos = NO_ERROR_POS;\n }\n // Parse `line` using current grammar. Returns `{success: true}` if the\n // line parsed correctly, otherwise returns `{success: false, errorPos: N}`\n // where `errorPos` is the location of the error in the string.\n parse(line) {\n this.line = line;\n this.pos = 0;\n this.errorPos = NO_ERROR_POS;\n const result = this.expect(this.grammar.begin());\n result.errorPos = this.errorPos;\n return result;\n }\n matchFail(returnPos) {\n if (this.errorPos === NO_ERROR_POS)\n this.errorPos = this.pos;\n this.pos = returnPos;\n }\n matchSuccess() {\n this.errorPos = NO_ERROR_POS;\n }\n // Look for `token` in this.line[this.pos], and return success\n // if one is found. `token` is specified as a regular expression.\n matchToken(token, noSpace = false) {\n const regexp = noSpace ? new RegExp('^((' + token + '))') : new RegExp('^((' + token + ')\\\\s*)');\n const workingLine = this.line.slice(this.pos);\n const result = workingLine.match(regexp);\n if (result !== null) {\n return {\n success: true,\n matchedString: result[2],\n incrementPos: result[1].length,\n pos: this.pos,\n };\n }\n else {\n return { success: false, pos: this.pos };\n }\n }\n // Execute rule to match a sequence of tokens (or rules). If `maybe` is\n // set, then return success even if the token is not found, but reset\n // the position before exiting.\n // TODO: expectOne(...) is never called with the `maybe` parameter.\n expectOne(rule, maybe = false) {\n const results = [];\n const pos = this.pos;\n let allMatches = true;\n let oneMatch = false;\n maybe = maybe === true || rule.maybe === true;\n // Execute all sub rules in sequence.\n if (rule.expect) {\n for (const next of rule.expect) {\n const localPos = this.pos;\n const result = this.expect(next);\n // If `rule.or` is set, then return success if any one\n // of the subrules match, else all subrules must match.\n if (result.success) {\n results.push(result);\n oneMatch = true;\n if (rule.or)\n break;\n }\n else {\n allMatches = false;\n if (!rule.or) {\n this.pos = localPos;\n break;\n }\n }\n }\n }\n const gotOne = (rule.or && oneMatch) || allMatches;\n const success = gotOne || maybe === true;\n const numMatches = gotOne ? 1 : 0;\n if (maybe && !gotOne)\n this.pos = pos;\n if (success) {\n this.matchSuccess();\n }\n else {\n this.matchFail(pos);\n }\n return { success, results, numMatches };\n }\n // Try to match multiple (one or more) instances of the rule. If `maybe` is set,\n // then a failed match is also a success (but the position is reset).\n expectOneOrMore(rule, maybe = false) {\n const results = [];\n const pos = this.pos;\n let numMatches = 0;\n let more = true;\n do {\n const result = this.expectOne(rule);\n if (result.success && result.results) {\n numMatches++;\n results.push(result.results);\n }\n else {\n more = false;\n }\n } while (more);\n const success = numMatches > 0 || maybe === true;\n if (maybe && !(numMatches > 0))\n this.pos = pos;\n if (success) {\n this.matchSuccess();\n }\n else {\n this.matchFail(pos);\n }\n return { success, results, numMatches };\n }\n // Match zero or more instances of `rule`. Offloads to `expectOneOrMore`.\n expectZeroOrMore(rule) {\n return this.expectOneOrMore(rule, true);\n }\n // Execute the rule produced by the provided `rules` function. This\n // offloads to one of the above matchers and consolidates the results. It is also\n // responsible for executing any code triggered by the rule (in `rule.run`.)\n expect(ruleFunc) {\n L('Evaluating rule function:', ruleFunc);\n if (!ruleFunc) {\n throw new RuntimeError('Invalid rule function');\n }\n let result;\n // Get rule from Grammar class.\n // expect(...) handles both lexing & parsing:\n // - lexer rules produce tokens.\n // - parser rules produce expressions which may trigger code via the\n // { run: () => ... } trigger functions in easyscore.ts.\n // These functions build the VexFlow objects that are displayed on screen.\n const rule = ruleFunc.bind(this.grammar)();\n if (rule.token) {\n // A lexer rule has a `token` property.\n // Base case: parse the regex and throw an error if the\n // line doesn't match.\n result = this.matchToken(rule.token, rule.noSpace === true);\n if (result.success) {\n // Token match! Update position and throw away parsed portion\n // of string.\n this.pos += result.incrementPos;\n }\n }\n else if (rule.expect) {\n // A parser rule has an `expect` property.\n if (rule.oneOrMore) {\n result = this.expectOneOrMore(rule);\n }\n else if (rule.zeroOrMore) {\n result = this.expectZeroOrMore(rule);\n }\n else {\n result = this.expectOne(rule);\n }\n }\n else {\n L(rule);\n throw new RuntimeError('Bad grammar! No `token` or `expect` property ' + rule);\n }\n // If there's a trigger attached to this rule, then run it.\n // Make the matches accessible through `state.matches` in the\n // `run: (state) => ...` trigger.\n const matches = [];\n result.matches = matches;\n if (result.results) {\n result.results.forEach((r) => matches.push(flattenMatches(r)));\n }\n if (rule.run && result.success) {\n rule.run({ matches });\n }\n return result;\n }\n}\nParser.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Articulation } from './articulation';\nimport { Dot } from './dot';\nimport { FretHandFinger } from './frethandfinger';\nimport { Music } from './music';\nimport { Parser } from './parser';\nimport { Stem } from './stem';\nimport { defined, log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.EasyScore.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (EasyScore.DEBUG)\n log('Vex.Flow.EasyScore', args);\n}\nexport class EasyScoreGrammar {\n constructor(builder) {\n this.builder = builder;\n }\n begin() {\n return this.LINE;\n }\n LINE() {\n return {\n expect: [this.PIECE, this.PIECES, this.EOL],\n };\n }\n PIECE() {\n return {\n expect: [this.CHORDORNOTE, this.PARAMS],\n run: () => this.builder.commitPiece(),\n };\n }\n PIECES() {\n return {\n expect: [this.COMMA, this.PIECE],\n zeroOrMore: true,\n };\n }\n PARAMS() {\n return {\n expect: [this.DURATION, this.TYPE, this.DOTS, this.OPTS],\n };\n }\n CHORDORNOTE() {\n return {\n expect: [this.CHORD, this.SINGLENOTE],\n or: true,\n };\n }\n CHORD() {\n return {\n expect: [this.LPAREN, this.NOTES, this.RPAREN],\n // eslint-disable-next-line\n run: (state) => this.builder.addChord(state.matches[1]),\n };\n }\n NOTES() {\n return {\n expect: [this.NOTE],\n oneOrMore: true,\n };\n }\n NOTE() {\n return {\n expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE],\n };\n }\n SINGLENOTE() {\n return {\n expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE],\n run: (state) => {\n // eslint-disable-next-line\n const s = state;\n this.builder.addSingleNote(s.matches[0], s.matches[1], s.matches[2]);\n },\n };\n }\n ACCIDENTAL() {\n return {\n expect: [this.MICROTONES, this.ACCIDENTALS],\n maybe: true,\n or: true,\n };\n }\n DOTS() {\n return {\n expect: [this.DOT],\n zeroOrMore: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteDots(state.matches),\n };\n }\n TYPE() {\n return {\n expect: [this.SLASH, this.MAYBESLASH, this.TYPES],\n maybe: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteType(state.matches[2]),\n };\n }\n DURATION() {\n return {\n expect: [this.SLASH, this.DURATIONS],\n maybe: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteDuration(state.matches[1]),\n };\n }\n OPTS() {\n return {\n expect: [this.LBRACKET, this.KEYVAL, this.KEYVALS, this.RBRACKET],\n maybe: true,\n };\n }\n KEYVALS() {\n return {\n expect: [this.COMMA, this.KEYVAL],\n zeroOrMore: true,\n };\n }\n KEYVAL() {\n const unquote = (str) => str.slice(1, -1);\n return {\n expect: [this.KEY, this.EQUALS, this.VAL],\n // eslint-disable-next-line\n run: (state) => this.builder.addNoteOption(state.matches[0], unquote(state.matches[2])),\n };\n }\n VAL() {\n return {\n expect: [this.SVAL, this.DVAL],\n or: true,\n };\n }\n KEY() {\n return { token: '[a-zA-Z][a-zA-Z0-9]*' };\n }\n DVAL() {\n return { token: '[\"][^\"]*[\"]' };\n }\n SVAL() {\n return { token: \"['][^']*[']\" };\n }\n NOTENAME() {\n return { token: '[a-gA-G]' };\n }\n OCTAVE() {\n return { token: '[0-9]+' };\n }\n ACCIDENTALS() {\n return { token: 'bb|b|##|#|n' };\n }\n MICROTONES() {\n return { token: 'bbs|bss|bs|db|d|\\\\+\\\\+-|\\\\+-|\\\\+\\\\+|\\\\+|k|o' };\n }\n DURATIONS() {\n return { token: '[0-9whq]+' };\n }\n TYPES() {\n return { token: '[rRsSmMhHgG]' };\n }\n LPAREN() {\n return { token: '[(]' };\n }\n RPAREN() {\n return { token: '[)]' };\n }\n COMMA() {\n return { token: '[,]' };\n }\n DOT() {\n return { token: '[.]' };\n }\n SLASH() {\n return { token: '[/]' };\n }\n MAYBESLASH() {\n return { token: '[/]?' };\n }\n EQUALS() {\n return { token: '[=]' };\n }\n LBRACKET() {\n return { token: '\\\\[' };\n }\n RBRACKET() {\n return { token: '\\\\]' };\n }\n EOL() {\n return { token: '$' };\n }\n}\nexport class Piece {\n constructor(duration) {\n this.chord = [];\n this.dots = 0;\n this.options = {};\n this.duration = duration;\n }\n}\nexport class Builder {\n constructor(factory) {\n this.commitHooks = [];\n this.factory = factory;\n this.reset();\n }\n reset(options) {\n this.options = Object.assign({ stem: 'auto', clef: 'treble' }, options);\n this.elements = { notes: [], accidentals: [] };\n this.rollingDuration = '8';\n this.resetPiece();\n }\n getFactory() {\n return this.factory;\n }\n getElements() {\n return this.elements;\n }\n addCommitHook(commitHook) {\n this.commitHooks.push(commitHook);\n }\n resetPiece() {\n L('resetPiece');\n this.piece = new Piece(this.rollingDuration);\n }\n setNoteDots(dots) {\n L('setNoteDots:', dots);\n if (dots)\n this.piece.dots = dots.length;\n }\n setNoteDuration(duration) {\n L('setNoteDuration:', duration);\n this.rollingDuration = this.piece.duration = duration || this.rollingDuration;\n }\n setNoteType(type) {\n L('setNoteType:', type);\n if (type)\n this.piece.type = type;\n }\n addNoteOption(key, value) {\n L('addNoteOption: key:', key, 'value:', value);\n this.piece.options[key] = value;\n }\n addNote(key, accid, octave) {\n L('addNote:', key, accid, octave);\n this.piece.chord.push({\n key: key,\n accid,\n octave,\n });\n }\n addSingleNote(key, accid, octave) {\n L('addSingleNote:', key, accid, octave);\n this.addNote(key, accid, octave);\n }\n // notes is an array with 3 entries\n addChord(notes) {\n L('startChord');\n if (typeof notes[0] !== 'object') {\n this.addSingleNote(notes[0]);\n }\n else {\n notes.forEach((n) => {\n if (n)\n this.addNote(...n); // n => [string, string | null, string]\n });\n }\n L('endChord');\n }\n commitPiece() {\n L('commitPiece');\n const { factory } = this;\n if (!factory)\n return;\n const options = Object.assign(Object.assign({}, this.options), this.piece.options);\n // reset() sets this.options.stem & this.options.clef but we check to make sure nothing has changed.\n // e.g., auto | up | down\n const stem = defined(options.stem, 'BadArguments', 'options.stem is not defined').toLowerCase();\n // e.g., treble | bass\n const clef = defined(options.clef, 'BadArguments', 'options.clef is not defined').toLowerCase();\n const { chord, duration, dots, type } = this.piece;\n // Create a string[] that will be assigned to the .keys property of the StaveNote.\n // Each string in the array represents a note pitch and is of the form: {NoteName}{Accidental}/{Octave}\n // Only standard accidentals are included in the .keys property. Microtonal accidentals are not included.\n const standardAccidentals = Music.accidentals;\n const keys = chord.map((notePiece) => {\n var _a;\n return notePiece.key +\n (standardAccidentals.includes((_a = notePiece.accid) !== null && _a !== void 0 ? _a : '') ? notePiece.accid : '') +\n '/' +\n notePiece.octave;\n });\n const auto_stem = stem === 'auto'; // StaveNoteStruct expects the underscore & lowercase.\n // Build a GhostNote or StaveNote using the information we gathered.\n const note = (type === null || type === void 0 ? void 0 : type.toLowerCase()) == 'g'\n ? factory.GhostNote({ duration, dots })\n : factory.StaveNote({ keys, duration, dots, type, clef, auto_stem });\n if (!auto_stem)\n note.setStemDirection(stem === 'up' ? Stem.UP : Stem.DOWN);\n // Attach accidentals.\n const accidentals = [];\n chord.forEach((notePiece, index) => {\n const accid = notePiece.accid;\n if (typeof accid === 'string') {\n const accidental = factory.Accidental({ type: accid });\n note.addModifier(accidental, index);\n accidentals.push(accidental);\n }\n else {\n accidentals.push(undefined);\n }\n });\n // Attach dots.\n for (let i = 0; i < dots; i++)\n Dot.buildAndAttach([note], { all: true });\n this.commitHooks.forEach((commitHook) => commitHook(options, note, this));\n this.elements.notes.push(note);\n this.elements.accidentals.push(accidentals);\n this.resetPiece();\n }\n}\n/**\n * Commit hook used by EasyScore.setOptions().\n */\nfunction setId(options, note) {\n if (options.id === undefined)\n return;\n note.setAttribute('id', options.id);\n}\n// Used by setClass() below.\nconst commaSeparatedRegex = /\\s*,\\s*/;\n/**\n * Commit hook used by EasyScore.setOptions().\n */\nfunction setClass(options, note) {\n if (options.class === undefined)\n return;\n options.class.split(commaSeparatedRegex).forEach((className) => note.addClass(className));\n}\n/**\n * EasyScore implements a parser for a simple language to generate VexFlow objects.\n */\nexport class EasyScore {\n constructor(options = {}) {\n this.defaults = {\n clef: 'treble',\n time: '4/4',\n stem: 'auto',\n };\n this.setOptions(options);\n }\n /**\n * Set the score defaults.\n * clef must be set appropriately to avoid errors when adding Staves.\n * @param defaults.clef default clef ( treble | bass ...) see {@link Clef.types}\n * @param defaults.time default time signature ( 4/4 | 9/8 ...)\n * @param defaults.stem default stem arrangement (auto | up | down)\n * @returns this\n */\n set(defaults) {\n this.defaults = Object.assign(Object.assign({}, this.defaults), defaults);\n return this;\n }\n /**\n * @param options.factory is required.\n * @returns this\n */\n setOptions(options) {\n var _a, _b;\n // eslint-disable-next-line\n const factory = options.factory; // ! operator, because options.factory was set in Factory.EasyScore().\n const builder = (_a = options.builder) !== null && _a !== void 0 ? _a : new Builder(factory);\n this.options = Object.assign(Object.assign({ commitHooks: [setId, setClass, Articulation.easyScoreHook, FretHandFinger.easyScoreHook], throwOnError: false }, options), { factory,\n builder });\n this.factory = factory;\n this.builder = builder;\n this.grammar = new EasyScoreGrammar(this.builder);\n this.parser = new Parser(this.grammar);\n (_b = this.options.commitHooks) === null || _b === void 0 ? void 0 : _b.forEach((commitHook) => this.addCommitHook(commitHook));\n return this;\n }\n setContext(context) {\n this.factory.setContext(context);\n return this;\n }\n parse(line, options = {}) {\n this.builder.reset(options);\n const result = this.parser.parse(line);\n if (!result.success && this.options.throwOnError) {\n L(result);\n throw new RuntimeError('Error parsing line: ' + line);\n }\n return result;\n }\n beam(notes, options) {\n this.factory.Beam({ notes, options });\n return notes;\n }\n tuplet(notes, options) {\n this.factory.Tuplet({ notes, options });\n return notes;\n }\n notes(line, options = {}) {\n options = Object.assign({ clef: this.defaults.clef, stem: this.defaults.stem }, options);\n this.parse(line, options);\n return this.builder.getElements().notes;\n }\n voice(notes, options = {}) {\n options = Object.assign({ time: this.defaults.time }, options);\n return this.factory.Voice(options).addTickables(notes);\n }\n addCommitHook(commitHook) {\n this.builder.addCommitHook(commitHook);\n }\n}\nEasyScore.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\nimport { StemmableNote } from './stemmablenote';\nimport { Category, isAnnotation } from './typeguard';\nimport { RuntimeError } from './util';\nconst ERROR_MSG = 'Ghost note must have valid initialization data to identify duration.';\nexport class GhostNote extends StemmableNote {\n static get CATEGORY() {\n return Category.GhostNote;\n }\n constructor(parameter) {\n if (!parameter) {\n throw new RuntimeError('BadArguments', ERROR_MSG);\n }\n let noteStruct;\n if (typeof parameter === 'string') {\n // Preserve backwards-compatibility\n noteStruct = { duration: parameter };\n }\n else if (typeof parameter === 'object') {\n noteStruct = parameter;\n }\n else {\n throw new RuntimeError('BadArguments', ERROR_MSG);\n }\n super(noteStruct);\n // Note properties\n this.setWidth(0);\n }\n /**\n * @returns true if this note is a type of rest. Rests don't have pitches, but take up space in the score.\n */\n isRest() {\n return true;\n }\n setStave(stave) {\n super.setStave(stave);\n return this;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n draw() {\n // Draw Annotations\n this.setRendered();\n for (let i = 0; i < this.modifiers.length; ++i) {\n const modifier = this.modifiers[i];\n if (isAnnotation(modifier)) {\n modifier.setContext(this.getContext());\n modifier.drawWithStyle();\n }\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Note } from './note';\nimport { Category } from './typeguard';\nexport class GlyphNote extends Note {\n constructor(glyph, noteStruct, options) {\n super(noteStruct);\n this.options = Object.assign({ ignoreTicks: false, line: 2 }, options);\n // Note properties\n this.ignore_ticks = this.options.ignoreTicks;\n if (glyph) {\n this.setGlyph(glyph);\n }\n }\n static get CATEGORY() {\n return Category.GlyphNote;\n }\n setGlyph(glyph) {\n this.glyph = glyph;\n this.setWidth(this.glyph.getMetrics().width);\n return this;\n }\n getBoundingBox() {\n return this.glyph.getBoundingBox();\n }\n preFormat() {\n if (!this.preFormatted && this.modifierContext) {\n this.modifierContext.preFormat();\n }\n this.preFormatted = true;\n return this;\n }\n drawModifiers() {\n const ctx = this.checkContext();\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n modifier.setContext(ctx);\n modifier.drawWithStyle();\n }\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('glyphNote', this.getAttribute('id'));\n // Context is set when setStave is called on Note\n const glyph = this.glyph;\n if (!glyph.getContext()) {\n glyph.setContext(ctx);\n }\n glyph.setStave(stave);\n glyph.setYShift(stave.getYForLine(this.options.line) - stave.getYForGlyphs());\n const x = this.isCenterAligned() ? this.getAbsoluteX() - this.getWidth() / 2 : this.getAbsoluteX();\n glyph.renderToStave(x);\n this.drawModifiers();\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { StaveNote } from './stavenote';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class GraceNote extends StaveNote {\n constructor(noteStruct) {\n super(Object.assign({ glyph_font_scale: Tables.NOTATION_FONT_SCALE * GraceNote.SCALE, stroke_px: GraceNote.LEDGER_LINE_OFFSET }, noteStruct));\n this.slash = noteStruct.slash || false;\n this.slur = true;\n this.buildNoteHeads();\n this.width = 3;\n }\n static get CATEGORY() {\n return Category.GraceNote;\n }\n static get LEDGER_LINE_OFFSET() {\n return 2;\n }\n static get SCALE() {\n return 0.66;\n }\n getStemExtension() {\n if (this.stem_extension_override) {\n return this.stem_extension_override;\n }\n const glyph = this.getGlyph();\n if (glyph) {\n let ret = super.getStemExtension();\n if (glyph.stem) {\n const staveNoteScale = this.getStaveNoteScale();\n ret = (Stem.HEIGHT + ret) * staveNoteScale - Stem.HEIGHT;\n }\n return ret;\n }\n return 0;\n }\n getStaveNoteScale() {\n return this.render_options.glyph_font_scale / Tables.NOTATION_FONT_SCALE;\n }\n draw() {\n super.draw();\n this.setRendered();\n const stem = this.stem;\n if (this.slash && stem) {\n const staveNoteScale = this.getStaveNoteScale();\n // some magic numbers are based on the staveNoteScale 0.66.\n const offsetScale = staveNoteScale / 0.66;\n let slashBBox = undefined;\n const beam = this.beam;\n if (beam) {\n // FIXME: should render slash after beam?\n if (!beam.postFormatted) {\n beam.postFormat();\n }\n slashBBox = this.calcBeamedNotesSlashBBox(8 * offsetScale, 8 * offsetScale, {\n stem: 6 * offsetScale,\n beam: 5 * offsetScale,\n });\n }\n else {\n const stem_direction = this.getStemDirection();\n const noteHeadBounds = this.getNoteHeadBounds();\n const noteStemHeight = stem.getHeight();\n let x = this.getAbsoluteX();\n let y = stem_direction === Stem.DOWN\n ? noteHeadBounds.y_top - noteStemHeight\n : noteHeadBounds.y_bottom - noteStemHeight;\n const defaultStemExtention = stem_direction === Stem.DOWN ? this.glyph.stem_down_extension : this.glyph.stem_up_extension;\n let defaultOffsetY = Tables.STEM_HEIGHT;\n defaultOffsetY -= defaultOffsetY / 2.8;\n defaultOffsetY += defaultStemExtention;\n y += defaultOffsetY * staveNoteScale * stem_direction;\n const offsets = stem_direction === Stem.UP\n ? {\n x1: 1,\n y1: 0,\n x2: 13,\n y2: -9,\n }\n : {\n x1: -4,\n y1: 1,\n x2: 13,\n y2: 9,\n };\n x += offsets.x1 * offsetScale;\n y += offsets.y1 * offsetScale;\n slashBBox = {\n x1: x,\n y1: y,\n x2: x + offsets.x2 * offsetScale,\n y2: y + offsets.y2 * offsetScale,\n };\n }\n // FIXME: avoid staff lines, ledger lines or others.\n const ctx = this.checkContext();\n ctx.save();\n ctx.setLineWidth(1 * offsetScale); // FIXME: use more appropriate value.\n ctx.beginPath();\n ctx.moveTo(slashBBox.x1, slashBBox.y1);\n ctx.lineTo(slashBBox.x2, slashBBox.y2);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n }\n }\n calcBeamedNotesSlashBBox(slashStemOffset, slashBeamOffset, protrusions) {\n const beam = this.beam;\n if (!beam)\n throw new RuntimeError('NoBeam', \"Can't calculate without a beam.\");\n const beam_slope = beam.slope;\n const isBeamEndNote = beam.notes[beam.notes.length - 1] === this;\n const scaleX = isBeamEndNote ? -1 : 1;\n const beam_angle = Math.atan(beam_slope * scaleX);\n // slash line intersecting point on beam.\n const iPointOnBeam = {\n dx: Math.cos(beam_angle) * slashBeamOffset,\n dy: Math.sin(beam_angle) * slashBeamOffset,\n };\n slashStemOffset *= this.getStemDirection();\n const slash_angle = Math.atan((iPointOnBeam.dy - slashStemOffset) / iPointOnBeam.dx);\n const protrusion_stem_dx = Math.cos(slash_angle) * protrusions.stem * scaleX;\n const protrusion_stem_dy = Math.sin(slash_angle) * protrusions.stem;\n const protrusion_beam_dx = Math.cos(slash_angle) * protrusions.beam * scaleX;\n const protrusion_beam_dy = Math.sin(slash_angle) * protrusions.beam;\n const stemX = this.getStemX();\n const stem0X = beam.notes[0].getStemX();\n const stemY = beam.getBeamYToDraw() + (stemX - stem0X) * beam_slope;\n const ret = {\n x1: stemX - protrusion_stem_dx,\n y1: stemY + slashStemOffset - protrusion_stem_dy,\n x2: stemX + iPointOnBeam.dx * scaleX + protrusion_beam_dx,\n y2: stemY + iPointOnBeam.dy + protrusion_beam_dy,\n };\n return ret;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Mark Meeus 2019\nimport { KeySignature } from './keysignature';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nexport class KeySigNote extends Note {\n constructor(keySpec, cancelKeySpec, alterKeySpec) {\n super({ duration: 'b' });\n this.keySignature = new KeySignature(keySpec, cancelKeySpec, alterKeySpec);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.KeySigNote;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n this.keySignature.setStave(this.checkStave());\n this.setWidth(this.keySignature.getWidth());\n return this;\n }\n draw() {\n const ctx = this.checkStave().checkContext();\n this.setRendered();\n this.keySignature.setX(this.getAbsoluteX());\n this.keySignature.setContext(ctx);\n this.keySignature.draw();\n }\n}\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements multiple measure rests.\nimport { Element } from './element';\nimport { Glyph } from './glyph';\nimport { NoteHead } from './notehead';\nimport { StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { TimeSignature } from './timesignature';\nimport { Category, isBarline } from './typeguard';\nimport { defined } from './util';\nlet semibreve_rest;\nfunction get_semibreve_rest() {\n if (!semibreve_rest) {\n const noteHead = new NoteHead({ duration: 'w', note_type: 'r' });\n semibreve_rest = {\n glyph_font_scale: noteHead.render_options.glyph_font_scale,\n glyph_code: noteHead.glyph_code,\n width: noteHead.getWidth(),\n };\n }\n return semibreve_rest;\n}\nexport class MultiMeasureRest extends Element {\n /**\n *\n * @param number_of_measures Number of measures.\n * @param options The options object.\n */\n constructor(number_of_measures, options) {\n super();\n this.xs = { left: NaN, right: NaN };\n this.hasPaddingLeft = false;\n this.hasPaddingRight = false;\n this.hasLineThickness = false;\n this.hasSymbolSpacing = false;\n this.number_of_measures = number_of_measures;\n // Keep track of whether these four options were provided.\n this.hasPaddingLeft = typeof options.padding_left === 'number';\n this.hasPaddingRight = typeof options.padding_right === 'number';\n this.hasLineThickness = typeof options.line_thickness === 'number';\n this.hasSymbolSpacing = typeof options.symbol_spacing === 'number';\n const musicFont = Tables.currentMusicFont();\n this.render_options = Object.assign({ use_symbols: false, show_number: true, number_line: -0.5, number_glyph_point: musicFont.lookupMetric('digits.point'), line: 2, spacing_between_lines_px: Tables.STAVE_LINE_DISTANCE, serif_thickness: 2, semibreve_rest_glyph_scale: Tables.NOTATION_FONT_SCALE, padding_left: 0, padding_right: 0, line_thickness: 5, symbol_spacing: 0 }, options);\n const fontLineShift = musicFont.lookupMetric('digits.shiftLine', 0);\n this.render_options.number_line += fontLineShift;\n }\n static get CATEGORY() {\n return Category.MultiMeasureRest;\n }\n getXs() {\n return this.xs;\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getStave() {\n return this.stave;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n drawLine(stave, ctx, left, right, spacingBetweenLines) {\n const options = this.render_options;\n const y = stave.getYForLine(options.line);\n const padding = (right - left) * 0.1;\n left += padding;\n right -= padding;\n let lineThicknessHalf;\n if (this.hasLineThickness) {\n lineThicknessHalf = options.line_thickness * 0.5;\n }\n else {\n lineThicknessHalf = spacingBetweenLines * 0.25;\n }\n const serifThickness = options.serif_thickness;\n const top = y - spacingBetweenLines;\n const bot = y + spacingBetweenLines;\n const leftIndented = left + serifThickness;\n const rightIndented = right - serifThickness;\n const lineTop = y - lineThicknessHalf;\n const lineBottom = y + lineThicknessHalf;\n ctx.save();\n ctx.beginPath();\n ctx.moveTo(left, top);\n ctx.lineTo(leftIndented, top);\n ctx.lineTo(leftIndented, lineTop);\n ctx.lineTo(rightIndented, lineTop);\n ctx.lineTo(rightIndented, top);\n ctx.lineTo(right, top);\n ctx.lineTo(right, bot);\n ctx.lineTo(rightIndented, bot);\n ctx.lineTo(rightIndented, lineBottom);\n ctx.lineTo(leftIndented, lineBottom);\n ctx.lineTo(leftIndented, bot);\n ctx.lineTo(left, bot);\n ctx.closePath();\n ctx.fill();\n }\n drawSymbols(stave, ctx, left, right, spacingBetweenLines) {\n const n4 = Math.floor(this.number_of_measures / 4);\n const n = this.number_of_measures % 4;\n const n2 = Math.floor(n / 2);\n const n1 = n % 2;\n const options = this.render_options;\n // FIXME: TODO: invalidate semibreve_rest at the appropriate time\n // (e.g., if the system font settings are changed).\n semibreve_rest = undefined;\n const rest = get_semibreve_rest();\n const rest_scale = options.semibreve_rest_glyph_scale;\n const rest_width = rest.width * (rest_scale / rest.glyph_font_scale);\n const glyphs = {\n 2: {\n width: rest_width * 0.5,\n height: spacingBetweenLines,\n },\n 1: {\n width: rest_width,\n },\n };\n /* 10: normal spacingBetweenLines */\n const spacing = this.hasSymbolSpacing ? options.symbol_spacing : 10;\n const width = n4 * glyphs[2].width + n2 * glyphs[2].width + n1 * glyphs[1].width + (n4 + n2 + n1 - 1) * spacing;\n let x = left + (right - left) * 0.5 - width * 0.5;\n const line = options.line;\n const yTop = stave.getYForLine(line - 1);\n const yMiddle = stave.getYForLine(line);\n const yBottom = stave.getYForLine(line + 1);\n ctx.save();\n ctx.setStrokeStyle('none');\n ctx.setLineWidth(0);\n for (let i = 0; i < n4; ++i) {\n ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n ctx.fillRect(x, yBottom - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n x += glyphs[2].width + spacing;\n }\n for (let i = 0; i < n2; ++i) {\n ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n x += glyphs[2].width + spacing;\n }\n for (let i = 0; i < n1; ++i) {\n Glyph.renderGlyph(ctx, x, yTop, rest_scale, rest.glyph_code);\n x += glyphs[1].width + spacing;\n }\n ctx.restore();\n }\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const stave = this.checkStave();\n let left = stave.getNoteStartX();\n let right = stave.getNoteEndX();\n // FIXME: getNoteStartX() returns x + 5(barline width)\n // getNoteEndX() returns x + width(no barline width)\n // See Stave constructor. How do we fix this?\n // Here, we subtract the barline width.\n const begModifiers = stave.getModifiers(StaveModifierPosition.BEGIN);\n if (begModifiers.length === 1 && isBarline(begModifiers[0])) {\n left -= begModifiers[0].getWidth();\n }\n const options = this.render_options;\n if (this.hasPaddingLeft) {\n left = stave.getX() + options.padding_left;\n }\n if (this.hasPaddingRight) {\n right = stave.getX() + stave.getWidth() - options.padding_right;\n }\n this.xs.left = left;\n this.xs.right = right;\n const spacingBetweenLines = options.spacing_between_lines_px;\n if (options.use_symbols) {\n this.drawSymbols(stave, ctx, left, right, spacingBetweenLines);\n }\n else {\n this.drawLine(stave, ctx, left, right, spacingBetweenLines);\n }\n if (options.show_number) {\n const timeSpec = '/' + this.number_of_measures;\n const timeSig = new TimeSignature(timeSpec, 0, false);\n timeSig.point = options.number_glyph_point;\n timeSig.setTimeSig(timeSpec);\n timeSig.setStave(stave);\n timeSig.setX(left + (right - left) * 0.5 - timeSig.getInfo().glyph.getMetrics().width * 0.5);\n timeSig.bottomLine = options.number_line;\n timeSig.setContext(ctx).draw();\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (PedalMarking.DEBUG)\n log('Vex.Flow.PedalMarking', args);\n}\n/**\n * Draws a pedal glyph with the provided `name` on a rendering `context`\n * at the coordinates `x` and `y. Takes into account the glyph data\n * coordinate shifts.\n */\nfunction drawPedalGlyph(name, context, x, y, point) {\n const glyph_data = PedalMarking.GLYPHS[name];\n const glyph = new Glyph(glyph_data.code, point, { category: 'pedalMarking' });\n glyph.render(context, x + glyph_data.x_shift, y + glyph_data.y_shift);\n}\n/**\n * PedalMarking implements different types of pedal markings. These notation\n * elements indicate to the performer when to depress and release the a pedal.\n *\n * In order to create \"Sostenuto\", and \"una corda\" markings, you must set\n * custom text for the release/depress pedal markings.\n */\nexport class PedalMarking extends Element {\n constructor(notes) {\n super();\n this.notes = notes;\n this.type = PedalMarking.type.TEXT;\n this.line = 0;\n // Custom text for the release/depress markings\n this.custom_depress_text = '';\n this.custom_release_text = '';\n this.resetFont();\n this.render_options = {\n bracket_height: 10,\n text_margin_right: 6,\n bracket_line_width: 1,\n color: 'black',\n };\n }\n static get CATEGORY() {\n return Category.PedalMarking;\n }\n /**\n * Create a sustain pedal marking. Returns the defaults PedalMarking.\n * Which uses the traditional \"Ped\" and \"*\"\" markings.\n */\n static createSustain(notes) {\n const pedal = new PedalMarking(notes);\n return pedal;\n }\n /** Create a sostenuto pedal marking */\n static createSostenuto(notes) {\n const pedal = new PedalMarking(notes);\n pedal.setType(PedalMarking.type.MIXED);\n pedal.setCustomText('Sost. Ped.');\n return pedal;\n }\n /** Create an una corda pedal marking */\n static createUnaCorda(notes) {\n const pedal = new PedalMarking(notes);\n pedal.setType(PedalMarking.type.TEXT);\n pedal.setCustomText('una corda', 'tre corda');\n return pedal;\n }\n /** Set pedal type. */\n setType(type) {\n type = typeof type === 'string' ? PedalMarking.typeString[type] : type;\n if (type >= PedalMarking.type.TEXT && type <= PedalMarking.type.MIXED) {\n this.type = type;\n }\n return this;\n }\n /**\n * Set custom text for the `depress`/`release` pedal markings. No text is\n * set if the parameter is falsy.\n */\n setCustomText(depress, release) {\n this.custom_depress_text = depress || '';\n this.custom_release_text = release || '';\n return this;\n }\n /** Set the staff line to render the markings on. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Draw the bracket based pedal markings. */\n drawBracketed() {\n const ctx = this.checkContext();\n let is_pedal_depressed = false;\n let prev_x;\n let prev_y;\n // Iterate through each note\n this.notes.forEach((note, index, notes) => {\n // Each note triggers the opposite pedal action\n is_pedal_depressed = !is_pedal_depressed;\n // Get the initial coordinates for the note\n const x = note.getAbsoluteX();\n const y = note.checkStave().getYForBottomText(this.line + 3);\n // Throw if current note is positioned before the previous note\n if (x < prev_x) {\n throw new RuntimeError('InvalidConfiguration', 'The notes provided must be in order of ascending x positions');\n }\n // Determine if the previous or next note are the same\n // as the current note. We need to keep track of this for\n // when adjustments are made for the release+depress action\n const next_is_same = notes[index + 1] === note;\n const prev_is_same = notes[index - 1] === note;\n let x_shift = 0;\n const point = Tables.currentMusicFont().lookupMetric(`pedalMarking.${is_pedal_depressed ? 'down' : 'up'}.point`);\n if (is_pedal_depressed) {\n // Adjustment for release+depress\n x_shift = prev_is_same ? 5 : 0;\n if (this.type === PedalMarking.type.MIXED && !prev_is_same) {\n // For MIXED style, start with text instead of bracket\n if (this.custom_depress_text) {\n // If we have custom text, use instead of the default \"Ped\" glyph\n const text_width = ctx.measureText(this.custom_depress_text).width;\n ctx.fillText(this.custom_depress_text, x - text_width / 2, y);\n x_shift = text_width / 2 + this.render_options.text_margin_right;\n }\n else {\n // Render the Ped glyph in position\n drawPedalGlyph('pedal_depress', ctx, x, y, point);\n x_shift = 20 + this.render_options.text_margin_right;\n }\n }\n else {\n // Draw start bracket\n ctx.beginPath();\n ctx.moveTo(x, y - this.render_options.bracket_height);\n ctx.lineTo(x + x_shift, y);\n ctx.stroke();\n ctx.closePath();\n }\n }\n else {\n // Adjustment for release+depress\n x_shift = next_is_same ? -5 : 0;\n // Draw end bracket\n ctx.beginPath();\n ctx.moveTo(prev_x, prev_y);\n ctx.lineTo(x + x_shift, y);\n ctx.lineTo(x, y - this.render_options.bracket_height);\n ctx.stroke();\n ctx.closePath();\n }\n // Store previous coordinates\n prev_x = x + x_shift;\n prev_y = y;\n });\n }\n /**\n * Draw the text based pedal markings. This defaults to the traditional\n * \"Ped\" and \"*\"\" symbols if no custom text has been provided.\n */\n drawText() {\n const ctx = this.checkContext();\n let is_pedal_depressed = false;\n // Iterate through each note, placing glyphs or custom text accordingly\n this.notes.forEach((note) => {\n is_pedal_depressed = !is_pedal_depressed;\n const stave = note.checkStave();\n const x = note.getAbsoluteX();\n const y = stave.getYForBottomText(this.line + 3);\n const point = Tables.currentMusicFont().lookupMetric(`pedalMarking.${is_pedal_depressed ? 'down' : 'up'}.point`);\n let text_width = 0;\n if (is_pedal_depressed) {\n if (this.custom_depress_text) {\n text_width = ctx.measureText(this.custom_depress_text).width;\n ctx.fillText(this.custom_depress_text, x - text_width / 2, y);\n }\n else {\n drawPedalGlyph('pedal_depress', ctx, x, y, point);\n }\n }\n else {\n if (this.custom_release_text) {\n text_width = ctx.measureText(this.custom_release_text).width;\n ctx.fillText(this.custom_release_text, x - text_width / 2, y);\n }\n else {\n drawPedalGlyph('pedal_release', ctx, x, y, point);\n }\n }\n });\n }\n /** Render the pedal marking in position on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setStrokeStyle(this.render_options.color);\n ctx.setFillStyle(this.render_options.color);\n ctx.setFont(this.textFont);\n L('Rendering Pedal Marking');\n if (this.type === PedalMarking.type.BRACKET || this.type === PedalMarking.type.MIXED) {\n ctx.setLineWidth(this.render_options.bracket_line_width);\n this.drawBracketed();\n }\n else if (this.type === PedalMarking.type.TEXT) {\n this.drawText();\n }\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.PedalMarking.DEBUG` to `true`. */\nPedalMarking.DEBUG = false;\nPedalMarking.TEXT_FONT = {\n family: Font.SERIF,\n size: 12,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n/** Glyph data */\nPedalMarking.GLYPHS = {\n pedal_depress: {\n code: 'keyboardPedalPed',\n x_shift: -10,\n y_shift: 0,\n },\n pedal_release: {\n code: 'keyboardPedalUp',\n x_shift: -2,\n y_shift: 3,\n },\n};\n/** Pedal type as number. */\nPedalMarking.type = {\n TEXT: 1,\n BRACKET: 2,\n MIXED: 3,\n};\n/** Pedal type as string. */\nPedalMarking.typeString = {\n text: PedalMarking.type.TEXT,\n bracket: PedalMarking.type.BRACKET,\n mixed: PedalMarking.type.MIXED,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Glyph } from './glyph';\nimport { GlyphNote } from './glyphnote';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\n// Map `type` to SMuFL glyph code.\nconst CODES = {\n '1': 'repeat1Bar',\n '2': 'repeat2Bars',\n '4': 'repeat4Bars',\n slash: 'repeatBarSlash',\n};\nexport class RepeatNote extends GlyphNote {\n static get CATEGORY() {\n return Category.RepeatNote;\n }\n constructor(type, noteStruct, options) {\n super(undefined, Object.assign({ duration: 'q', align_center: type !== 'slash' }, noteStruct), options);\n const glyphCode = CODES[type] || 'repeat1Bar';\n const glyph = new Glyph(glyphCode, Tables.currentMusicFont().lookupMetric('repeatNote.point', 40), {\n category: 'repeatNote',\n });\n this.setGlyph(glyph);\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This file implements `StaveLine` which are simply lines that connect\n// two notes. This object is highly configurable, see the `render_options`.\n// A simple line is often used for notating glissando articulations, but you\n// can format a `StaveLine` with arrows or colors for more pedagogical\n// purposes, such as diagrams.\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { TextJustification } from './textnote';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n// Attribution: Arrow rendering implementations based off of\n// Patrick Horgan's article, \"Drawing lines and arcs with\n// arrow heads on HTML5 Canvas\"\n//\n// Draw an arrow head that connects between 3 coordinates.\nfunction drawArrowHead(ctx, x0, y0, x1, y1, x2, y2) {\n // all cases do this.\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.lineTo(x0, y0);\n ctx.closePath();\n ctx.fill();\n}\nexport class StaveLine extends Element {\n // Initialize the StaveLine with the given `notes`.\n //\n // `notes` is a struct that has:\n //\n // ```\n // {\n // first_note: Note,\n // last_note: Note,\n // first_indices: [n1, n2, n3],\n // last_indices: [n1, n2, n3]\n // }\n // ```\n constructor(notes) {\n super();\n this.setNotes(notes);\n this.text = '';\n this.resetFont();\n this.render_options = {\n // Space to add to the left or the right\n padding_left: 4,\n padding_right: 3,\n // The width of the line in pixels\n line_width: 1,\n // An array of line/space lengths. (TODO/QUESTION: Is this supported in SVG?).\n line_dash: undefined,\n // Can draw rounded line end, instead of a square. (TODO/QUESTION: Is this supported in SVG?).\n rounded_end: true,\n // The color of the line and arrowheads\n color: undefined,\n // Flags to draw arrows on each end of the line\n draw_start_arrow: false,\n draw_end_arrow: false,\n // The length of the arrowhead sides\n arrowhead_length: 10,\n // The angle of the arrowhead\n arrowhead_angle: Math.PI / 8,\n // The position of the text\n text_position_vertical: StaveLine.TextVerticalPosition.TOP,\n text_justification: StaveLine.TextJustification.CENTER,\n };\n }\n static get CATEGORY() {\n return Category.StaveLine;\n }\n // The the annotation for the `StaveLine`\n setText(text) {\n this.text = text;\n return this;\n }\n // Set the notes for the `StaveLine`\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Notes needs to have either first_note or last_note set.');\n }\n if (!notes.first_indices)\n notes.first_indices = [0];\n if (!notes.last_indices)\n notes.last_indices = [0];\n if (notes.first_indices.length !== notes.last_indices.length) {\n throw new RuntimeError('BadArguments', 'Connected notes must have same number of indices.');\n }\n this.notes = notes;\n this.first_note = notes.first_note;\n this.first_indices = notes.first_indices;\n this.last_note = notes.last_note;\n this.last_indices = notes.last_indices;\n return this;\n }\n // Apply the style of the `StaveLine` to the context\n applyLineStyle() {\n const ctx = this.checkContext();\n const render_options = this.render_options;\n if (render_options.line_dash) {\n ctx.setLineDash(render_options.line_dash);\n }\n if (render_options.line_width) {\n ctx.setLineWidth(render_options.line_width);\n }\n if (render_options.rounded_end) {\n ctx.setLineCap('round');\n }\n else {\n ctx.setLineCap('square');\n }\n }\n // Apply the text styling to the context\n applyFontStyle() {\n const ctx = this.checkContext();\n ctx.setFont(this.textFont);\n const render_options = this.render_options;\n const color = render_options.color;\n if (color) {\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n }\n }\n // Helper function to draw a line with arrow heads\n drawArrowLine(ctx, pt1, pt2) {\n const both_arrows = this.render_options.draw_start_arrow && this.render_options.draw_end_arrow;\n const x1 = pt1.x;\n const y1 = pt1.y;\n const x2 = pt2.x;\n const y2 = pt2.y;\n // For ends with arrow we actually want to stop before we get to the arrow\n // so that wide lines won't put a flat end on the arrow.\n const distance = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n const ratio = (distance - this.render_options.arrowhead_length / 3) / distance;\n let end_x;\n let end_y;\n let start_x;\n let start_y;\n if (this.render_options.draw_end_arrow || both_arrows) {\n end_x = Math.round(x1 + (x2 - x1) * ratio);\n end_y = Math.round(y1 + (y2 - y1) * ratio);\n }\n else {\n end_x = x2;\n end_y = y2;\n }\n if (this.render_options.draw_start_arrow || both_arrows) {\n start_x = x1 + (x2 - x1) * (1 - ratio);\n start_y = y1 + (y2 - y1) * (1 - ratio);\n }\n else {\n start_x = x1;\n start_y = y1;\n }\n if (this.render_options.color) {\n ctx.setStrokeStyle(this.render_options.color);\n ctx.setFillStyle(this.render_options.color);\n }\n // Draw the shaft of the arrow\n ctx.beginPath();\n ctx.moveTo(start_x, start_y);\n ctx.lineTo(end_x, end_y);\n ctx.stroke();\n ctx.closePath();\n // calculate the angle of the line\n const line_angle = Math.atan2(y2 - y1, x2 - x1);\n // h is the line length of a side of the arrow head\n const h = Math.abs(this.render_options.arrowhead_length / Math.cos(this.render_options.arrowhead_angle));\n let angle1;\n let angle2;\n let top_x;\n let top_y;\n let bottom_x;\n let bottom_y;\n if (this.render_options.draw_end_arrow || both_arrows) {\n angle1 = line_angle + Math.PI + this.render_options.arrowhead_angle;\n top_x = x2 + Math.cos(angle1) * h;\n top_y = y2 + Math.sin(angle1) * h;\n angle2 = line_angle + Math.PI - this.render_options.arrowhead_angle;\n bottom_x = x2 + Math.cos(angle2) * h;\n bottom_y = y2 + Math.sin(angle2) * h;\n drawArrowHead(ctx, top_x, top_y, x2, y2, bottom_x, bottom_y);\n }\n if (this.render_options.draw_start_arrow || both_arrows) {\n angle1 = line_angle + this.render_options.arrowhead_angle;\n top_x = x1 + Math.cos(angle1) * h;\n top_y = y1 + Math.sin(angle1) * h;\n angle2 = line_angle - this.render_options.arrowhead_angle;\n bottom_x = x1 + Math.cos(angle2) * h;\n bottom_y = y1 + Math.sin(angle2) * h;\n drawArrowHead(ctx, top_x, top_y, x1, y1, bottom_x, bottom_y);\n }\n }\n // Renders the `StaveLine` on the context\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const first_note = this.first_note;\n const last_note = this.last_note;\n const render_options = this.render_options;\n ctx.save();\n this.applyLineStyle();\n // Cycle through each set of indices and draw lines\n let start_position = { x: 0, y: 0 };\n let end_position = { x: 0, y: 0 };\n this.first_indices.forEach((first_index, i) => {\n const last_index = this.last_indices[i];\n // Get initial coordinates for the start/end of the line\n start_position = first_note.getModifierStartXY(2, first_index);\n end_position = last_note.getModifierStartXY(1, last_index);\n const upwards_slope = start_position.y > end_position.y;\n // Adjust `x` coordinates for modifiers\n start_position.x += first_note.getMetrics().modRightPx + render_options.padding_left;\n end_position.x -= last_note.getMetrics().modLeftPx + render_options.padding_right;\n // Adjust first `x` coordinates for displacements\n const notehead_width = first_note.getGlyph().getWidth();\n const first_displaced = first_note.getKeyProps()[first_index].displaced;\n if (first_displaced && first_note.getStemDirection() === 1) {\n start_position.x += notehead_width + render_options.padding_left;\n }\n // Adjust last `x` coordinates for displacements\n const last_displaced = last_note.getKeyProps()[last_index].displaced;\n if (last_displaced && last_note.getStemDirection() === -1) {\n end_position.x -= notehead_width + render_options.padding_right;\n }\n // Adjust y position better if it's not coming from the center of the note\n start_position.y += upwards_slope ? -3 : 1;\n end_position.y += upwards_slope ? 2 : 0;\n this.drawArrowLine(ctx, start_position, end_position);\n });\n ctx.restore();\n // Determine the x coordinate where to start the text\n const text_width = ctx.measureText(this.text).width;\n const justification = render_options.text_justification;\n let x = 0;\n if (justification === StaveLine.TextJustification.LEFT) {\n x = start_position.x;\n }\n else if (justification === StaveLine.TextJustification.CENTER) {\n const delta_x = end_position.x - start_position.x;\n const center_x = delta_x / 2 + start_position.x;\n x = center_x - text_width / 2;\n }\n else if (justification === StaveLine.TextJustification.RIGHT) {\n x = end_position.x - text_width;\n }\n // Determine the y value to start the text\n let y = 0;\n const vertical_position = render_options.text_position_vertical;\n if (vertical_position === StaveLine.TextVerticalPosition.TOP) {\n y = first_note.checkStave().getYForTopText();\n }\n else if (vertical_position === StaveLine.TextVerticalPosition.BOTTOM) {\n y = first_note.checkStave().getYForBottomText(Tables.TEXT_HEIGHT_OFFSET_HACK);\n }\n // Draw the text\n ctx.save();\n this.applyFontStyle();\n ctx.fillText(this.text, x, y);\n ctx.restore();\n return this;\n }\n}\n/** Default text font. */\nStaveLine.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n// Text Positioning\nStaveLine.TextVerticalPosition = {\n TOP: 1,\n BOTTOM: 2,\n};\nStaveLine.TextJustification = TextJustification;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { Note } from './note';\nimport { Stave } from './stave';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n/**\n * System implements a musical system, which is a collection of staves,\n * each which can have one or more voices. All voices across all staves in\n * the system are formatted together.\n */\nexport class System extends Element {\n constructor(params = {}) {\n super();\n this.setOptions(params);\n this.parts = [];\n }\n static get CATEGORY() {\n return Category.System;\n }\n /** Set formatting options. */\n setOptions(options = {}) {\n if (!options.factory) {\n throw new RuntimeError('NoFactory', 'System.setOptions(options) requires a factory.');\n }\n this.factory = options.factory;\n this.options = Object.assign(Object.assign({ factory: this.factory, x: 10, y: 10, width: 500, spaceBetweenStaves: 12, autoWidth: false, noJustification: false, debugFormatter: false, formatIterations: 0, noPadding: false }, options), { details: Object.assign({ alpha: 0.5 }, options.details), formatOptions: Object.assign({}, options.formatOptions) });\n if (this.options.noJustification === false && typeof options.width === 'undefined') {\n this.options.autoWidth = true;\n }\n }\n /** Set associated context. */\n setContext(context) {\n super.setContext(context);\n this.factory.setContext(context);\n return this;\n }\n /**\n * Add connector between staves.\n * @param type see {@link StaveConnector.typeString}\n */\n addConnector(type = 'double') {\n this.connector = this.factory.StaveConnector({\n top_stave: this.parts[0].stave,\n bottom_stave: this.parts[this.parts.length - 1].stave,\n type,\n });\n return this.connector;\n }\n /**\n * Add a stave to the system.\n *\n * Example (one voice):\n *\n * `system.addStave({voices: [score.voice(score.notes('C#5/q, B4, A4, G#4'))]});`\n *\n * Example (two voices):\n *\n * `system.addStave({voices: [`\n * `score.voice(score.notes('C#5/q, B4, A4, G#4', {stem: 'up'})),`\n * `score.voice(score.notes('C#4/h, C#4', {stem: 'down'}))`\n * `]});`\n */\n addStave(params) {\n var _a;\n const staveOptions = Object.assign({ left_bar: false }, params.options);\n const stave = (_a = params.stave) !== null && _a !== void 0 ? _a : this.factory.Stave({ x: this.options.x, y: this.options.y, width: this.options.width, options: staveOptions });\n const p = Object.assign(Object.assign({ stave, \n /* voices: [], */\n spaceAbove: 0, spaceBelow: 0, debugNoteMetrics: false, noJustification: false }, params), { options: staveOptions });\n const ctx = this.getContext();\n p.voices.forEach((voice) => voice\n .setContext(ctx)\n .setStave(stave)\n .getTickables()\n .forEach((tickable) => tickable.setStave(stave)));\n this.parts.push(p);\n return stave;\n }\n /** Format the system. */\n format() {\n const options_details = this.options.details;\n let justifyWidth = 0;\n const formatter = new Formatter(options_details);\n this.formatter = formatter;\n let y = this.options.y;\n let startX = 0;\n let allVoices = [];\n let allStaves = [];\n const debugNoteMetricsYs = [];\n // Join the voices for each stave.\n this.parts.forEach((part) => {\n y = y + part.stave.space(part.spaceAbove);\n part.stave.setY(y);\n formatter.joinVoices(part.voices);\n y = y + part.stave.space(part.spaceBelow);\n y = y + part.stave.space(this.options.spaceBetweenStaves);\n if (part.debugNoteMetrics) {\n debugNoteMetricsYs.push({ y, voice: part.voices[0] });\n y += 15;\n }\n allVoices = allVoices.concat(part.voices);\n allStaves = allStaves.concat(part.stave);\n startX = Math.max(startX, part.stave.getNoteStartX());\n });\n // Update the start position of all staves.\n this.parts.forEach((part) => part.stave.setNoteStartX(startX));\n if (this.options.autoWidth) {\n justifyWidth = formatter.preCalculateMinTotalWidth(allVoices);\n this.parts.forEach((part) => {\n part.stave.setWidth(justifyWidth + Stave.rightPadding + (startX - this.options.x));\n });\n }\n else {\n justifyWidth = this.options.noPadding\n ? this.options.width - (startX - this.options.x)\n : this.options.width - (startX - this.options.x) - Stave.defaultPadding;\n }\n formatter.format(allVoices, this.options.noJustification ? 0 : justifyWidth, this.options.formatOptions);\n formatter.postFormat();\n for (let i = 0; i < this.options.formatIterations; i++) {\n formatter.tune(options_details);\n }\n this.startX = startX;\n this.debugNoteMetricsYs = debugNoteMetricsYs;\n this.lastY = y;\n this.boundingBox = new BoundingBox(this.options.x, this.options.y, this.options.width, this.lastY - this.options.y);\n Stave.formatBegModifiers(allStaves);\n }\n /** Render the system. */\n draw() {\n // Render debugging information, if requested.\n const ctx = this.checkContext();\n if (!this.formatter || !this.startX || !this.lastY || !this.debugNoteMetricsYs) {\n throw new RuntimeError('NoFormatter', 'format() must be called before draw()');\n }\n this.setRendered();\n if (this.options.debugFormatter) {\n Formatter.plotDebugging(ctx, this.formatter, this.startX, this.options.y, this.lastY);\n }\n this.debugNoteMetricsYs.forEach((d) => {\n d.voice.getTickables().forEach((tickable) => Note.plotMetrics(ctx, tickable, d.y));\n });\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// The file implements notes for Tablature notation. This consists of one or\n// more fret positions, and can either be drawn with or without stems.\n//\n// See `tests/tabnote_tests.ts` for usage examples.\nimport { Font } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { StemmableNote } from './stemmablenote';\nimport { Tables } from './tables';\nimport { Category, isDot } from './typeguard';\nimport { defined, RuntimeError } from './util';\n// Gets the unused strings grouped together if consecutive.\n//\n// Parameters:\n// * num_lines - The number of lines\n// * strings_used - An array of numbers representing which strings have fret positions\nfunction getUnusedStringGroups(num_lines, strings_used) {\n const stem_through = [];\n let group = [];\n for (let string = 1; string <= num_lines; string++) {\n const is_used = strings_used.indexOf(string) > -1;\n if (!is_used) {\n group.push(string);\n }\n else {\n stem_through.push(group);\n group = [];\n }\n }\n if (group.length > 0)\n stem_through.push(group);\n return stem_through;\n}\n// Gets groups of points that outline the partial stem lines\n// between fret positions\n//\n// Parameters:\n// * stem_Y - The `y` coordinate the stem is located on\n// * unused_strings - An array of groups of unused strings\n// * stave - The stave to use for reference\n// * stem_direction - The direction of the stem\nfunction getPartialStemLines(stem_y, unused_strings, stave, stem_direction) {\n const up_stem = stem_direction !== 1;\n const down_stem = stem_direction !== -1;\n const line_spacing = stave.getSpacingBetweenLines();\n const total_lines = stave.getNumLines();\n const stem_lines = [];\n unused_strings.forEach((strings) => {\n const containsLastString = strings.indexOf(total_lines) > -1;\n const containsFirstString = strings.indexOf(1) > -1;\n if ((up_stem && containsFirstString) || (down_stem && containsLastString)) {\n return;\n }\n // If there's only one string in the group, push a duplicate value.\n // We do this because we need 2 strings to convert into upper/lower y\n // values.\n if (strings.length === 1) {\n strings.push(strings[0]);\n }\n const line_ys = [];\n // Iterate through each group string and store it's y position\n strings.forEach((string, index, strings) => {\n const isTopBound = string === 1;\n const isBottomBound = string === total_lines;\n // Get the y value for the appropriate staff line,\n // we adjust for a 0 index array, since string numbers are index 1\n let y = stave.getYForLine(string - 1);\n // Unless the string is the first or last, add padding to each side\n // of the line\n if (index === 0 && !isTopBound) {\n y -= line_spacing / 2 - 1;\n }\n else if (index === strings.length - 1 && !isBottomBound) {\n y += line_spacing / 2 - 1;\n }\n // Store the y value\n line_ys.push(y);\n // Store a subsequent y value connecting this group to the main\n // stem above/below the stave if it's the top/bottom string\n if (stem_direction === 1 && isTopBound) {\n line_ys.push(stem_y - 2);\n }\n else if (stem_direction === -1 && isBottomBound) {\n line_ys.push(stem_y + 2);\n }\n });\n // Add the sorted y values to the\n stem_lines.push(line_ys.sort((a, b) => a - b));\n });\n return stem_lines;\n}\nexport class TabNote extends StemmableNote {\n // Initialize the TabNote with a `noteStruct` full of properties\n // and whether to `draw_stem` when rendering the note\n constructor(noteStruct, draw_stem = false) {\n super(noteStruct);\n this.glyphs = [];\n // Return the number of the greatest string, which is the string lowest on the display\n this.greatestString = () => {\n return this.positions.map((x) => x.str).reduce((a, b) => (a > b ? a : b));\n };\n // Return the number of the least string, which is the string highest on the display\n this.leastString = () => {\n return this.positions.map((x) => x.str).reduce((a, b) => (a < b ? a : b));\n };\n this.ghost = false; // Renders parenthesis around notes\n // Note properties\n // The fret positions in the note. An array of `{ str: X, fret: X }`\n this.positions = noteStruct.positions || [];\n // Render Options\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads and rests\n glyph_font_scale: Tables.TABLATURE_FONT_SCALE, \n // Flag to draw a stem\n draw_stem, \n // Flag to draw dot modifiers\n draw_dots: draw_stem, \n // Flag to extend the main stem through the stave and fret positions\n draw_stem_through_stave: false, \n // vertical shift from stave line\n y_shift: 0, \n // normal glyph scale\n scale: 1.0, \n // default tablature font\n font: `${Font.SIZE}pt ${Font.SANS_SERIF}` });\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n this.buildStem();\n if (noteStruct.stem_direction) {\n this.setStemDirection(noteStruct.stem_direction);\n }\n else {\n this.setStemDirection(Stem.UP);\n }\n // Renders parenthesis around notes\n this.ghost = false;\n this.updateWidth();\n }\n static get CATEGORY() {\n return Category.TabNote;\n }\n reset() {\n super.reset();\n if (this.stave)\n this.setStave(this.stave);\n return this;\n }\n // Set as ghost `TabNote`, surrounds the fret positions with parenthesis.\n // Often used for indicating frets that are being bent to\n setGhost(ghost) {\n this.ghost = ghost;\n this.updateWidth();\n return this;\n }\n // Determine if the note has a stem\n hasStem() {\n if (this.render_options.draw_stem)\n return true;\n return false;\n }\n // Get the default stem extension for the note\n getStemExtension() {\n const glyph = this.getGlyph();\n if (this.stem_extension_override != null) {\n return this.stem_extension_override;\n }\n if (glyph) {\n return this.getStemDirection() === Stem.UP ? glyph.tabnote_stem_up_extension : glyph.tabnote_stem_down_extension;\n }\n return 0;\n }\n // Calculate and store the width of the note\n updateWidth() {\n this.glyphs = [];\n this.width = 0;\n for (let i = 0; i < this.positions.length; ++i) {\n let fret = this.positions[i].fret;\n if (this.ghost)\n fret = '(' + fret + ')';\n const glyph = Tables.tabToGlyph(fret.toString(), this.render_options.scale);\n this.glyphs.push(glyph);\n this.width = Math.max(glyph.getWidth(), this.width);\n }\n // For some reason we associate a notehead glyph with a TabNote, and this\n // glyph is used for certain width calculations. Of course, this is totally\n // incorrect since a notehead is a poor approximation for the dimensions of\n // a fret number which can have multiple digits. As a result, we must\n // overwrite getWidth() to return the correct width\n this.glyph.getWidth = () => this.width;\n }\n // Set the `stave` to the note\n setStave(stave) {\n super.setStave(stave);\n const ctx = stave.getContext();\n this.setContext(ctx);\n // Calculate the fret number width based on font used\n if (ctx) {\n this.width = 0;\n for (let i = 0; i < this.glyphs.length; ++i) {\n const glyph = this.glyphs[i];\n const text = '' + glyph.text;\n if (text.toUpperCase() !== 'X') {\n ctx.save();\n ctx.setFont(this.render_options.font);\n glyph.width = ctx.measureText(text).width;\n ctx.restore();\n glyph.getWidth = () => glyph.width;\n }\n this.width = Math.max(glyph.getWidth(), this.width);\n }\n this.glyph.getWidth = () => this.width;\n }\n // we subtract 1 from `line` because getYForLine expects a 0-based index,\n // while the position.str is a 1-based index\n const ys = this.positions.map(({ str: line }) => stave.getYForLine(Number(line) - 1));\n this.setYs(ys);\n if (this.stem) {\n this.stem.setYBounds(this.getStemY(), this.getStemY());\n }\n return this;\n }\n // Get the fret positions for the note\n getPositions() {\n return this.positions;\n }\n // Get the default `x` and `y` coordinates for a modifier at a specific\n // `position` at a fret position `index`\n getModifierStartXY(position, index) {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-Values calculated for this note.');\n }\n let x = 0;\n if (position === Modifier.Position.LEFT) {\n x = -1 * 2; // FIXME: modifier padding, move to font file\n }\n else if (position === Modifier.Position.RIGHT) {\n x = this.width + 2; // FIXME: modifier padding, move to font file\n }\n else if (position === Modifier.Position.BELOW || position === Modifier.Position.ABOVE) {\n const note_glyph_width = this.glyph.getWidth();\n x = note_glyph_width / 2;\n }\n return {\n x: this.getAbsoluteX() + x,\n y: this.ys[index],\n };\n }\n // Get the default line for rest\n getLineForRest() {\n return Number(this.positions[0].str);\n }\n // Pre-render formatting\n preFormat() {\n if (this.preFormatted)\n return;\n if (this.modifierContext)\n this.modifierContext.preFormat();\n // width is already set during init()\n this.preFormatted = true;\n }\n // Get the x position for the stem\n getStemX() {\n return this.getCenterGlyphX();\n }\n // Get the y position for the stem\n getStemY() {\n const num_lines = this.checkStave().getNumLines();\n // The decimal staff line amounts provide optimal spacing between the\n // fret number and the stem\n const stemUpLine = -0.5;\n const stemDownLine = num_lines - 0.5;\n const stemStartLine = Stem.UP === this.stem_direction ? stemUpLine : stemDownLine;\n return this.checkStave().getYForLine(stemStartLine);\n }\n // Get the stem extents for the tabnote\n getStemExtents() {\n return this.checkStem().getExtents();\n }\n // Draw the fal onto the context\n drawFlag() {\n var _a;\n const { beam, glyph, render_options: { draw_stem }, } = this;\n const context = this.checkContext();\n const shouldDrawFlag = beam == undefined && draw_stem;\n // Now it's the flag's turn.\n if (glyph.flag && shouldDrawFlag) {\n const flag_x = this.getStemX();\n const flag_y = this.getStemDirection() === Stem.DOWN\n ? // Down stems are below the note head and have flags on the right.\n this.getStemY() - this.checkStem().getHeight() - (this.glyph ? this.glyph.stem_down_extension : 0)\n : // Up stems are above the note head and have flags on the right.\n this.getStemY() - this.checkStem().getHeight() + (this.glyph ? this.glyph.stem_up_extension : 0);\n // Draw the Flag\n //this.flag?.setOptions({ category: 'flag.tabStem' });\n (_a = this.flag) === null || _a === void 0 ? void 0 : _a.render(context, flag_x, flag_y);\n //Glyph.renderGlyph(context, flag_x, flag_y, glyph_font_scale, flag_code, { category: 'flag.tabStem' });\n }\n }\n // Render the modifiers onto the context.\n drawModifiers() {\n this.modifiers.forEach((modifier) => {\n // Only draw the dots if enabled.\n if (isDot(modifier) && !this.render_options.draw_dots) {\n return;\n }\n modifier.setContext(this.getContext());\n modifier.drawWithStyle();\n });\n }\n // Render the stem extension through the fret positions\n drawStemThrough() {\n const stemX = this.getStemX();\n const stemY = this.getStemY();\n const ctx = this.checkContext();\n const drawStem = this.render_options.draw_stem;\n const stemThrough = this.render_options.draw_stem_through_stave;\n if (drawStem && stemThrough) {\n const numLines = this.checkStave().getNumLines();\n const stringsUsed = this.positions.map((position) => Number(position.str));\n const unusedStrings = getUnusedStringGroups(numLines, stringsUsed);\n const stemLines = getPartialStemLines(stemY, unusedStrings, this.checkStave(), this.getStemDirection());\n ctx.save();\n ctx.setLineWidth(Stem.WIDTH);\n stemLines.forEach((bounds) => {\n if (bounds.length === 0)\n return;\n ctx.beginPath();\n ctx.moveTo(stemX, bounds[0]);\n ctx.lineTo(stemX, bounds[bounds.length - 1]);\n ctx.stroke();\n ctx.closePath();\n });\n ctx.restore();\n }\n }\n // Render the fret positions onto the context\n drawPositions() {\n const ctx = this.checkContext();\n const x = this.getAbsoluteX();\n const ys = this.ys;\n for (let i = 0; i < this.positions.length; ++i) {\n const y = ys[i] + this.render_options.y_shift;\n const glyph = this.glyphs[i];\n // Center the fret text beneath the notation note head\n const note_glyph_width = this.glyph.getWidth();\n const tab_x = x + note_glyph_width / 2 - glyph.getWidth() / 2;\n // FIXME: Magic numbers.\n ctx.clearRect(tab_x - 2, y - 3, glyph.getWidth() + 4, 6);\n if (glyph.code) {\n Glyph.renderGlyph(ctx, tab_x, y, this.render_options.glyph_font_scale * this.render_options.scale, glyph.code);\n }\n else {\n ctx.save();\n ctx.setFont(this.render_options.font);\n const text = glyph.text.toString();\n ctx.fillText(text, tab_x, y + 5 * this.render_options.scale);\n ctx.restore();\n }\n }\n }\n // The main rendering function for the entire note.\n draw() {\n const ctx = this.checkContext();\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', \"Can't draw note without Y values.\");\n }\n this.setRendered();\n const render_stem = this.beam == undefined && this.render_options.draw_stem;\n ctx.openGroup('tabnote', this.getAttribute('id'), { pointerBBox: true });\n this.drawPositions();\n this.drawStemThrough();\n if (this.stem && render_stem) {\n const stem_x = this.getStemX();\n this.stem.setNoteHeadXBounds(stem_x, stem_x);\n this.stem.setContext(ctx).draw();\n }\n this.drawFlag();\n this.drawModifiers();\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Stave } from './stave';\nimport { Category } from './typeguard';\nexport class TabStave extends Stave {\n static get CATEGORY() {\n return Category.TabStave;\n }\n constructor(x, y, width, options) {\n const tab_options = Object.assign({ spacing_between_lines_px: 13, num_lines: 6, top_text_position: 1 }, options);\n super(x, y, width, tab_options);\n }\n getYForGlyphs() {\n return this.getYForLine(2.5);\n }\n // Deprecated\n addTabGlyph() {\n this.addClef('tab');\n return this;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n//\n// This file implements `TextBrackets` which extend between two notes.\n// The octave transposition markings (8va, 8vb, 15va, 15vb) can be created\n// using this class.\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Renderer } from './renderer';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.TextBracket.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextBracket.DEBUG)\n log('Vex.Flow.TextBracket', args);\n}\nexport var TextBracketPosition;\n(function (TextBracketPosition) {\n TextBracketPosition[TextBracketPosition[\"TOP\"] = 1] = \"TOP\";\n TextBracketPosition[TextBracketPosition[\"BOTTOM\"] = -1] = \"BOTTOM\";\n})(TextBracketPosition || (TextBracketPosition = {}));\nexport class TextBracket extends Element {\n constructor({ start, stop, text = '', superscript = '', position = TextBracketPosition.TOP }) {\n super();\n this.start = start;\n this.stop = stop;\n this.text = text;\n this.superscript = superscript;\n this.position = typeof position === 'string' ? TextBracket.PositionString[position] : position;\n this.line = 1;\n this.resetFont();\n this.render_options = {\n dashed: true,\n dash: [5],\n color: 'black',\n line_width: 1,\n show_bracket: true,\n bracket_height: 8,\n // In the BOTTOM position, the bracket line can extend\n // under the superscript.\n underline_superscript: true,\n };\n }\n static get CATEGORY() {\n return Category.TextBracket;\n }\n static get Position() {\n return TextBracketPosition;\n }\n static get PositionString() {\n return {\n top: TextBracketPosition.TOP,\n bottom: TextBracketPosition.BOTTOM,\n };\n }\n /**\n * @deprecated Use `TextBracket.Position` instead.\n */\n static get Positions() {\n L('Positions is deprecated, use TextBracketPosition instead.');\n return TextBracketPosition;\n }\n /**\n * @deprecated Use `TextBracket.PositionString` instead.\n */\n static get PositionsString() {\n L('PositionsString is deprecated, use PositionString instead.');\n return TextBracket.PositionString;\n }\n /**\n * Apply the text backet styling to the provided context.\n * @param ctx\n * @returns this\n */\n applyStyle(ctx) {\n ctx.setFont(this.font);\n const options = this.render_options;\n ctx.setStrokeStyle(options.color);\n ctx.setFillStyle(options.color);\n ctx.setLineWidth(options.line_width);\n return this;\n }\n // Set whether the bracket line should be `dashed`. You can also\n // optionally set the `dash` pattern by passing in an array of numbers\n setDashed(dashed, dash) {\n this.render_options.dashed = dashed;\n if (dash)\n this.render_options.dash = dash;\n return this;\n }\n // Set the rendering `context` for the octave bracket\n setLine(line) {\n this.line = line;\n return this;\n }\n // Draw the octave bracket on the rendering context\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let y = 0;\n switch (this.position) {\n case TextBracketPosition.TOP:\n y = this.start.checkStave().getYForTopText(this.line);\n break;\n case TextBracketPosition.BOTTOM:\n y = this.start.checkStave().getYForBottomText(this.line + Tables.TEXT_HEIGHT_OFFSET_HACK);\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} is invalid.`);\n }\n // Get the preliminary start and stop coordintates for the bracket\n const start = { x: this.start.getAbsoluteX(), y };\n const stop = { x: this.stop.getAbsoluteX(), y };\n L('Rendering TextBracket: start:', start, 'stop:', stop, 'y:', y);\n const bracket_height = this.render_options.bracket_height * this.position;\n ctx.save();\n this.applyStyle(ctx);\n // Draw text\n ctx.fillText(this.text, start.x, start.y);\n // Get the width and height for the octave number\n const main_measure = ctx.measureText(this.text);\n const main_width = main_measure.width;\n const main_height = main_measure.height;\n // Calculate the y position for the super script\n const super_y = start.y - main_height / 2.5;\n // We called this.resetFont() in the constructor, so we know this.textFont is available.\n // eslint-disable-next-line\n const { family, size, weight, style } = this.textFont;\n // To draw the superscript, we scale the font size by 1/1.4.\n const smallerFontSize = Font.scaleSize(size, 0.714286);\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.superscript, start.x + main_width + 1, super_y);\n // Determine width and height of the superscript\n const super_measure = ctx.measureText(this.superscript);\n const super_width = super_measure.width;\n const super_height = super_measure.height;\n // Setup initial coordinates for the bracket line\n let start_x = start.x;\n let line_y = super_y;\n const end_x = stop.x + this.stop.getGlyph().getWidth();\n // Adjust x and y coordinates based on position\n if (this.position === TextBracketPosition.TOP) {\n start_x += main_width + super_width + 5;\n line_y -= super_height / 2.7;\n }\n else if (this.position === TextBracketPosition.BOTTOM) {\n line_y += super_height / 2.7;\n start_x += main_width + 2;\n if (!this.render_options.underline_superscript) {\n start_x += super_width;\n }\n }\n if (this.render_options.dashed) {\n // Main line\n Renderer.drawDashedLine(ctx, start_x, line_y, end_x, line_y, this.render_options.dash);\n // Ending Bracket\n if (this.render_options.show_bracket) {\n Renderer.drawDashedLine(ctx, end_x, line_y + 1 * this.position, end_x, line_y + bracket_height, this.render_options.dash);\n }\n }\n else {\n ctx.beginPath();\n ctx.moveTo(start_x, line_y);\n // Main line\n ctx.lineTo(end_x, line_y);\n if (this.render_options.show_bracket) {\n // Ending bracket\n ctx.lineTo(end_x, line_y + bracket_height);\n }\n ctx.stroke();\n ctx.closePath();\n }\n ctx.restore();\n }\n}\nTextBracket.DEBUG = false;\nTextBracket.TEXT_FONT = {\n family: Font.SERIF,\n size: 15,\n weight: FontWeight.NORMAL,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextDynamics.DEBUG)\n log('Vex.Flow.TextDynamics', args);\n}\n/**\n * `TextDynamics` renders traditional\n * text dynamics markings, **ie: p, f, sfz, rfz, ppp**\n *\n * You can render any dynamics string that contains a combination of\n * the following letters: P, M, F, Z, R, S\n */\nexport class TextDynamics extends Note {\n /**\n * Create the dynamics marking.\n *\n * A `TextDynamics` object inherits from `Note` so that it can be formatted\n * within a `Voice`.\n *\n * @param noteStruct an object that contains a `duration` property and a\n * `sequence` of letters that represents the letters to render.\n */\n constructor(noteStruct) {\n super(noteStruct);\n this.sequence = (noteStruct.text || '').toLowerCase();\n this.line = noteStruct.line || 0;\n this.glyphs = [];\n this.render_options = Object.assign(Object.assign({}, this.render_options), { glyph_font_size: 40 });\n L('New Dynamics Text: ', this.sequence);\n }\n static get CATEGORY() {\n return Category.TextDynamics;\n }\n /** The glyph data for each dynamics letter. */\n static get GLYPHS() {\n return {\n f: {\n code: 'dynamicForte',\n width: 12,\n },\n p: {\n code: 'dynamicPiano',\n width: 14,\n },\n m: {\n code: 'dynamicMezzo',\n width: 17,\n },\n s: {\n code: 'dynamicSforzando',\n width: 10,\n },\n z: {\n code: 'dynamicZ',\n width: 12,\n },\n r: {\n code: 'dynamicRinforzando',\n width: 12,\n },\n };\n }\n /** Set the Stave line on which the note should be placed. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Preformat the dynamics text. */\n preFormat() {\n let total_width = 0;\n // length of this.glyphs must be <=\n // length of this.sequence, so if we're formatted before\n // create new glyphs.\n this.glyphs = [];\n // Iterate through each letter\n this.sequence.split('').forEach((letter) => {\n // Get the glyph data for the letter\n const glyph_data = TextDynamics.GLYPHS[letter];\n if (!glyph_data)\n throw new RuntimeError('Invalid dynamics character: ' + letter);\n const size = defined(this.render_options.glyph_font_size);\n const glyph = new Glyph(glyph_data.code, size, { category: 'textNote' });\n // Add the glyph\n this.glyphs.push(glyph);\n total_width += glyph_data.width;\n });\n // Store the width of the text\n this.setWidth(total_width);\n this.preFormatted = true;\n return this;\n }\n /** Draw the dynamics text on the rendering context. */\n draw() {\n this.setRendered();\n const x = this.getAbsoluteX();\n const y = this.checkStave().getYForLine(this.line + -3);\n L('Rendering Dynamics: ', this.sequence);\n let letter_x = x;\n this.glyphs.forEach((glyph, index) => {\n const current_letter = this.sequence[index];\n glyph.render(this.checkContext(), letter_x, y);\n letter_x += TextDynamics.GLYPHS[current_letter].width;\n });\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.TextDynamics.DEBUG` to `true`. */\nTextDynamics.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\nimport { Note } from './note';\nimport { TimeSignature } from './timesignature';\nimport { Category } from './typeguard';\nexport class TimeSigNote extends Note {\n constructor(timeSpec, customPadding) {\n super({ duration: 'b' });\n const timeSignature = new TimeSignature(timeSpec, customPadding);\n this.timeSigInfo = timeSignature.getInfo();\n this.setWidth(this.timeSigInfo.glyph.getMetrics().width);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.TimeSigNote;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = this.checkContext();\n this.setRendered();\n if (!this.timeSigInfo.glyph.getContext()) {\n this.timeSigInfo.glyph.setContext(ctx);\n }\n this.timeSigInfo.glyph.setStave(stave);\n this.timeSigInfo.glyph.setYShift(stave.getYForLine(2) - stave.getYForGlyphs());\n this.timeSigInfo.glyph.renderToStave(this.getAbsoluteX());\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Balazs Forian-Szabo\n// MIT License\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { log } from './util';\nimport { Vibrato } from './vibrato';\n// eslint-disable-next-line\nfunction L(...args) {\n if (VibratoBracket.DEBUG)\n log('Vex.Flow.VibratoBracket', args);\n}\n/** `VibratoBracket` renders vibrato effect between two notes. */\nexport class VibratoBracket extends Element {\n /**\n * Either the stop or start note must be set, or both of them.\n * An undefined value for the start or stop note indicates that the vibrato\n * is drawn from the beginning or until the end of the stave accordingly.\n */\n constructor(bracket_data) {\n super();\n if (bracket_data.start)\n this.start = bracket_data.start;\n if (bracket_data.stop)\n this.stop = bracket_data.stop;\n this.line = 1;\n this.render_options = {\n harsh: false,\n wave_height: 6,\n wave_width: 4,\n wave_girth: 2,\n vibrato_width: 0,\n };\n }\n static get CATEGORY() {\n return Category.VibratoBracket;\n }\n /** Set line position of the vibrato bracket. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Set harsh vibrato bracket. */\n setHarsh(harsh) {\n this.render_options.harsh = harsh;\n return this;\n }\n /** Draw the vibrato bracket on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const y = (this.start && this.start.checkStave().getYForTopText(this.line)) ||\n (this.stop && this.stop.checkStave().getYForTopText(this.line)) ||\n 0;\n // If start note is not set then vibrato will be drawn\n // from the beginning of the stave\n const start_x = (this.start && this.start.getAbsoluteX()) || (this.stop && this.stop.checkStave().getTieStartX()) || 0;\n // If stop note is not set then vibrato will be drawn\n // until the end of the stave\n const stop_x = (this.stop && this.stop.getAbsoluteX() - this.stop.getWidth() - 5) ||\n (this.start && this.start.checkStave().getTieEndX() - 10) ||\n 0;\n this.render_options.vibrato_width = stop_x - start_x;\n L('Rendering VibratoBracket: start_x:', start_x, 'stop_x:', stop_x, 'y:', y);\n Vibrato.renderVibrato(ctx, start_x, y, this.render_options);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.VibratoBracket.DEBUG` to `true`. */\nVibratoBracket.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n// MIT License\nimport { Accidental } from './accidental';\nimport { Annotation, AnnotationHorizontalJustify, AnnotationVerticalJustify } from './annotation';\nimport { Articulation } from './articulation';\nimport { BarNote } from './barnote';\nimport { Beam } from './beam';\nimport { ChordSymbol } from './chordsymbol';\nimport { ClefNote } from './clefnote';\nimport { Curve } from './curve';\nimport { EasyScore } from './easyscore';\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { FretHandFinger } from './frethandfinger';\nimport { GhostNote } from './ghostnote';\nimport { GlyphNote } from './glyphnote';\nimport { GraceNote } from './gracenote';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { KeySigNote } from './keysignote';\nimport { ModifierContext } from './modifiercontext';\nimport { MultiMeasureRest } from './multimeasurerest';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { PedalMarking } from './pedalmarking';\nimport { Renderer } from './renderer';\nimport { RepeatNote } from './repeatnote';\nimport { Stave } from './stave';\nimport { StaveConnector } from './staveconnector';\nimport { StaveLine } from './staveline';\nimport { StaveNote } from './stavenote';\nimport { StaveTie } from './stavetie';\nimport { StringNumber } from './stringnumber';\nimport { System } from './system';\nimport { TabNote } from './tabnote';\nimport { TabStave } from './tabstave';\nimport { TextBracket } from './textbracket';\nimport { TextDynamics } from './textdynamics';\nimport { TextNote } from './textnote';\nimport { TickContext } from './tickcontext';\nimport { TimeSigNote } from './timesignote';\nimport { Tuplet } from './tuplet';\nimport { defined, log, RuntimeError } from './util';\nimport { VibratoBracket } from './vibratobracket';\nimport { Voice } from './voice';\nimport { isHTMLCanvas } from './web';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Factory.DEBUG)\n log('Vex.Flow.Factory', args);\n}\n/**\n * Factory implements a high level API around VexFlow.\n */\nexport class Factory {\n /**\n * Example:\n *\n * Create an SVG renderer and attach it to the DIV element named \"boo\" to render using 1200 and 600\n *\n * `const vf: Factory = new Vex.Flow.Factory({renderer: { elementId: 'boo', width: 1200, height: 600 }});`\n */\n constructor(options = {}) {\n L('New factory: ', options);\n this.options = {\n stave: {\n space: 10,\n },\n renderer: {\n elementId: '',\n width: 500,\n height: 200,\n background: '#FFF',\n },\n font: Factory.TEXT_FONT,\n };\n this.setOptions(options);\n }\n /**\n * Static simplified function to access constructor without providing FactoryOptions\n *\n * Example:\n *\n * Create an SVG renderer and attach it to the DIV element named \"boo\" to render using 1200 and 600\n *\n * `const vf: Factory = Vex.Flow.Factory.newFromElementId('boo', 1200, 600 );`\n */\n static newFromElementId(elementId, width = 500, height = 200) {\n return new Factory({ renderer: { elementId, width, height } });\n }\n reset() {\n this.renderQ = [];\n this.systems = [];\n this.staves = [];\n this.voices = [];\n this.stave = undefined; // current stave\n }\n setOptions(options) {\n this.options = Object.assign(Object.assign({}, this.options), options);\n this.initRenderer();\n this.reset();\n }\n initRenderer() {\n const { elementId, width, height, background } = this.options.renderer;\n if (elementId == null) {\n return;\n }\n if (elementId == '') {\n L(this);\n throw new RuntimeError('renderer.elementId not set in FactoryOptions');\n }\n let backend = this.options.renderer.backend;\n if (backend === undefined) {\n const elem = document.getElementById(elementId);\n // We use a custom type check here, because node-canvas mimics canvas,\n // but is not an instance of window.HTMLCanvasElement.\n // In fact, `window` might be undefined here.\n // See: https://www.npmjs.com/package/canvas\n if (isHTMLCanvas(elem)) {\n backend = Renderer.Backends.CANVAS;\n }\n else {\n backend = Renderer.Backends.SVG;\n }\n }\n this.context = Renderer.buildContext(elementId, backend, width, height, background);\n }\n getContext() {\n return this.context;\n }\n setContext(context) {\n this.context = context;\n return this;\n }\n getStave() {\n return this.stave;\n }\n getVoices() {\n return this.voices;\n }\n /** Return pixels from current stave spacing. */\n Stave(params) {\n const staveSpace = this.options.stave.space;\n const p = Object.assign({ x: 0, y: 0, width: this.options.renderer.width - staveSpace * 1.0, options: { spacing_between_lines_px: staveSpace * 1.0 } }, params);\n const stave = new Stave(p.x, p.y, p.width, p.options);\n this.staves.push(stave);\n stave.setContext(this.context);\n this.stave = stave;\n return stave;\n }\n TabStave(params) {\n const staveSpace = this.options.stave.space;\n const p = Object.assign({ x: 0, y: 0, width: this.options.renderer.width - staveSpace * 1.0, options: { spacing_between_lines_px: staveSpace * 1.3 } }, params);\n const stave = new TabStave(p.x, p.y, p.width, p.options);\n this.staves.push(stave);\n stave.setContext(this.context);\n this.stave = stave;\n return stave;\n }\n StaveNote(noteStruct) {\n const note = new StaveNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GlyphNote(glyph, noteStruct, options) {\n const note = new GlyphNote(glyph, noteStruct, options);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n RepeatNote(type, noteStruct, options) {\n const note = new RepeatNote(type, noteStruct, options);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GhostNote(noteStruct) {\n const ghostNote = new GhostNote(noteStruct);\n if (this.stave)\n ghostNote.setStave(this.stave);\n ghostNote.setContext(this.context);\n this.renderQ.push(ghostNote);\n return ghostNote;\n }\n TextNote(noteStruct) {\n const textNote = new TextNote(noteStruct);\n if (this.stave)\n textNote.setStave(this.stave);\n textNote.setContext(this.context);\n this.renderQ.push(textNote);\n return textNote;\n }\n BarNote(params = {}) {\n const barNote = new BarNote(params.type);\n if (this.stave)\n barNote.setStave(this.stave);\n barNote.setContext(this.context);\n this.renderQ.push(barNote);\n return barNote;\n }\n ClefNote(params) {\n const p = Object.assign({ type: 'treble', options: {\n size: 'default',\n annotation: undefined,\n } }, params);\n const clefNote = new ClefNote(p.type, p.options.size, p.options.annotation);\n if (this.stave)\n clefNote.setStave(this.stave);\n clefNote.setContext(this.context);\n this.renderQ.push(clefNote);\n return clefNote;\n }\n TimeSigNote(params) {\n const p = Object.assign({ time: '4/4' }, params);\n const timeSigNote = new TimeSigNote(p.time);\n if (this.stave)\n timeSigNote.setStave(this.stave);\n timeSigNote.setContext(this.context);\n this.renderQ.push(timeSigNote);\n return timeSigNote;\n }\n KeySigNote(params) {\n const keySigNote = new KeySigNote(params.key, params.cancelKey, params.alterKey);\n if (this.stave)\n keySigNote.setStave(this.stave);\n keySigNote.setContext(this.context);\n this.renderQ.push(keySigNote);\n return keySigNote;\n }\n TabNote(noteStruct) {\n const note = new TabNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GraceNote(noteStruct) {\n const note = new GraceNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n return note;\n }\n GraceNoteGroup(params) {\n const group = new GraceNoteGroup(params.notes, params.slur);\n group.setContext(this.context);\n return group;\n }\n Accidental(params) {\n const accid = new Accidental(params.type);\n accid.setContext(this.context);\n return accid;\n }\n Annotation(params) {\n const p = Object.assign({ text: 'p', hJustify: AnnotationHorizontalJustify.CENTER, vJustify: AnnotationVerticalJustify.BOTTOM }, params);\n const annotation = new Annotation(p.text);\n annotation.setJustification(p.hJustify);\n annotation.setVerticalJustification(p.vJustify);\n annotation.setFont(p.font);\n annotation.setContext(this.context);\n return annotation;\n }\n ChordSymbol(params) {\n const p = Object.assign({ vJustify: 'top', hJustify: 'center', kerning: true, reportWidth: true }, params);\n const chordSymbol = new ChordSymbol();\n chordSymbol.setHorizontal(p.hJustify);\n chordSymbol.setVertical(p.vJustify);\n chordSymbol.setEnableKerning(p.kerning);\n chordSymbol.setReportWidth(p.reportWidth);\n // There is a default font based on the engraving font. Only set then\n // font if it is specific, else use the default\n if (typeof p.fontFamily === 'string' && typeof p.fontSize === 'number') {\n if (typeof p.fontWeight === 'string')\n chordSymbol.setFont(p.fontFamily, p.fontSize, p.fontWeight);\n else\n chordSymbol.setFont(p.fontFamily, p.fontSize, '');\n }\n else if (typeof p.fontSize === 'number') {\n chordSymbol.setFontSize(p.fontSize);\n }\n chordSymbol.setContext(this.context);\n return chordSymbol;\n }\n Articulation(params) {\n const p = Object.assign({ type: 'a.', position: 'above' }, params);\n const articulation = new Articulation(p.type);\n articulation.setPosition(p.position);\n articulation.setContext(this.context);\n return articulation;\n }\n Ornament(type, params) {\n const options = Object.assign({ type, position: 0, accidental: '' }, params);\n const ornament = new Ornament(type);\n ornament.setPosition(options.position);\n if (options.upperAccidental) {\n ornament.setUpperAccidental(options.upperAccidental);\n }\n if (options.lowerAccidental) {\n ornament.setLowerAccidental(options.lowerAccidental);\n }\n if (typeof options.delayed !== 'undefined') {\n ornament.setDelayed(options.delayed);\n }\n ornament.setContext(this.context);\n return ornament;\n }\n TextDynamics(params) {\n const p = Object.assign({ text: 'p', duration: 'q', dots: 0, line: 0 }, params);\n const text = new TextDynamics({\n text: p.text,\n line: p.line,\n duration: p.duration,\n dots: p.dots,\n });\n if (this.stave)\n text.setStave(this.stave);\n text.setContext(this.context);\n this.renderQ.push(text);\n return text;\n }\n Fingering(params) {\n const p = Object.assign({ number: '0', position: 'left' }, params);\n const fingering = new FretHandFinger(p.number);\n fingering.setPosition(p.position);\n fingering.setContext(this.context);\n return fingering;\n }\n StringNumber(params, drawCircle = true) {\n const stringNumber = new StringNumber(params.number);\n stringNumber.setPosition(params.position);\n stringNumber.setContext(this.context);\n stringNumber.setDrawCircle(drawCircle);\n return stringNumber;\n }\n TickContext() {\n return new TickContext();\n }\n ModifierContext() {\n return new ModifierContext();\n }\n MultiMeasureRest(params) {\n const numMeasures = defined(params.number_of_measures, 'NoNumberOfMeasures');\n const multiMeasureRest = new MultiMeasureRest(numMeasures, params);\n multiMeasureRest.setContext(this.context);\n this.renderQ.push(multiMeasureRest);\n return multiMeasureRest;\n }\n Voice(params) {\n const p = Object.assign({ time: '4/4' }, params);\n const voice = new Voice(p.time);\n this.voices.push(voice);\n return voice;\n }\n StaveConnector(params) {\n const connector = new StaveConnector(params.top_stave, params.bottom_stave);\n connector.setType(params.type).setContext(this.context);\n this.renderQ.push(connector);\n return connector;\n }\n Formatter(options) {\n return new Formatter(options);\n }\n Tuplet(params) {\n const p = Object.assign({ notes: [], options: {} }, params);\n const tuplet = new Tuplet(p.notes, p.options).setContext(this.context);\n this.renderQ.push(tuplet);\n return tuplet;\n }\n Beam(params) {\n var _a, _b, _c, _d, _e;\n const beam = new Beam(params.notes, (_a = params.options) === null || _a === void 0 ? void 0 : _a.autoStem).setContext(this.context);\n beam.breakSecondaryAt((_c = (_b = params.options) === null || _b === void 0 ? void 0 : _b.secondaryBeamBreaks) !== null && _c !== void 0 ? _c : []);\n if ((_d = params.options) === null || _d === void 0 ? void 0 : _d.partialBeamDirections) {\n Object.entries((_e = params.options) === null || _e === void 0 ? void 0 : _e.partialBeamDirections).forEach(([noteIndex, direction]) => {\n beam.setPartialBeamSideAt(Number(noteIndex), direction);\n });\n }\n this.renderQ.push(beam);\n return beam;\n }\n Curve(params) {\n const curve = new Curve(params.from, params.to, params.options).setContext(this.context);\n this.renderQ.push(curve);\n return curve;\n }\n StaveTie(params) {\n var _a;\n const tie = new StaveTie({\n first_note: params.from,\n last_note: params.to,\n first_indices: params.first_indices,\n last_indices: params.last_indices,\n }, params.text);\n if ((_a = params.options) === null || _a === void 0 ? void 0 : _a.direction)\n tie.setDirection(params.options.direction);\n tie.setContext(this.context);\n this.renderQ.push(tie);\n return tie;\n }\n StaveLine(params) {\n var _a, _b;\n const line = new StaveLine({\n first_note: params.from,\n last_note: params.to,\n first_indices: params.first_indices,\n last_indices: params.last_indices,\n });\n if ((_a = params.options) === null || _a === void 0 ? void 0 : _a.text)\n line.setText(params.options.text);\n if ((_b = params.options) === null || _b === void 0 ? void 0 : _b.font)\n line.setFont(params.options.font);\n line.setContext(this.context);\n this.renderQ.push(line);\n return line;\n }\n VibratoBracket(params) {\n const vibratoBracket = new VibratoBracket({\n start: params.from,\n stop: params.to,\n });\n if (params.options.line)\n vibratoBracket.setLine(params.options.line);\n if (params.options.harsh)\n vibratoBracket.setHarsh(params.options.harsh);\n vibratoBracket.setContext(this.context);\n this.renderQ.push(vibratoBracket);\n return vibratoBracket;\n }\n TextBracket(params) {\n const textBracket = new TextBracket({\n start: params.from,\n stop: params.to,\n text: params.text,\n superscript: params.options.superscript,\n position: params.options.position,\n });\n if (params.options.line)\n textBracket.setLine(params.options.line);\n if (params.options.font)\n textBracket.setFont(params.options.font);\n textBracket.setContext(this.context);\n this.renderQ.push(textBracket);\n return textBracket;\n }\n System(params = {}) {\n params.factory = this;\n const system = new System(params).setContext(this.context);\n this.systems.push(system);\n return system;\n }\n /**\n * Creates EasyScore. Normally the first step after constructing a Factory. For example:\n * ```\n * const vf: Factory = new Vex.Flow.Factory({renderer: { elementId: 'boo', width: 1200, height: 600 }});\n * const score: EasyScore = vf.EasyScore();\n * ```\n * @param options.factory optional instance of Factory\n * @param options.builder instance of Builder\n * @param options.commitHooks function to call after a note element is created\n * @param options.throwOnError throw error in case of parsing error\n */\n EasyScore(options = {}) {\n options.factory = this;\n return new EasyScore(options);\n }\n PedalMarking(params) {\n const p = Object.assign({ notes: [], options: {\n style: 'mixed',\n } }, params);\n const pedal = new PedalMarking(p.notes);\n pedal.setType(PedalMarking.typeString[p.options.style]);\n pedal.setContext(this.context);\n this.renderQ.push(pedal);\n return pedal;\n }\n NoteSubGroup(params) {\n const p = Object.assign({ notes: [] }, params);\n const group = new NoteSubGroup(p.notes);\n group.setContext(this.context);\n return group;\n }\n /** Render the score. */\n draw() {\n const ctx = this.context;\n this.systems.forEach((s) => s.setContext(ctx).format());\n this.staves.forEach((s) => s.setContext(ctx).draw());\n this.voices.forEach((v) => v.setContext(ctx).draw());\n this.renderQ.forEach((e) => {\n if (!e.isRendered())\n e.setContext(ctx).draw();\n });\n this.systems.forEach((s) => s.setContext(ctx).draw());\n this.reset();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Factory.DEBUG` to `true`. */\nFactory.DEBUG = false;\n/** Default text font. */\nFactory.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Balazs Forian-Szabo\n//\n// ## Description\n//\n// A basic implementation of grace notes\n// to be rendered on a tab stave.\n//\n// See `tests/gracetabnote_tests.ts` for usage examples.\nimport { Font } from './font';\nimport { TabNote } from './tabnote';\nimport { Category } from './typeguard';\nexport class GraceTabNote extends TabNote {\n static get CATEGORY() {\n return Category.GraceTabNote;\n }\n constructor(noteStruct) {\n super(noteStruct, false);\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // vertical shift from stave line\n y_shift: 0.3, \n // grace glyph scale\n scale: 0.6, \n // grace tablature font\n font: `7.5pt ${Font.SANS_SERIF}` });\n this.updateWidth();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This class implements diatonic key management.\nimport { Music } from './music';\nimport { RuntimeError } from './util';\nexport class KeyManager {\n constructor(key) {\n this.music = new Music();\n this.setKey(key);\n }\n setKey(key) {\n this.key = key;\n this.reset();\n return this;\n }\n getKey() {\n return this.key;\n }\n reset() {\n this.keyParts = this.music.getKeyParts(this.key);\n this.keyString = this.keyParts.root;\n if (this.keyParts.accidental)\n this.keyString += this.keyParts.accidental;\n const is_supported_type = Music.scaleTypes[this.keyParts.type];\n if (!is_supported_type) {\n throw new RuntimeError('BadArguments', `Unsupported key type: ${this.key}`);\n }\n this.scale = this.music.getScaleTones(this.music.getNoteValue(this.keyString), Music.scaleTypes[this.keyParts.type]);\n this.scaleMap = {};\n this.scaleMapByValue = {};\n this.originalScaleMapByValue = {};\n const noteLocation = Music.root_indices[this.keyParts.root];\n for (let i = 0; i < Music.roots.length; ++i) {\n const index = (noteLocation + i) % Music.roots.length;\n const rootName = Music.roots[index];\n const noteName = this.music.getRelativeNoteName(rootName, this.scale[i]);\n this.scaleMap[rootName] = noteName;\n this.scaleMapByValue[this.scale[i]] = noteName;\n this.originalScaleMapByValue[this.scale[i]] = noteName;\n }\n return this;\n }\n getAccidental(key) {\n const root = this.music.getKeyParts(key).root;\n const parts = this.music.getNoteParts(this.scaleMap[root]);\n return {\n note: this.scaleMap[root],\n accidental: parts.accidental,\n };\n }\n selectNote(note) {\n note = note.toLowerCase();\n const parts = this.music.getNoteParts(note);\n // First look for matching note in our altered scale\n const scaleNote = this.scaleMap[parts.root];\n const modparts = this.music.getNoteParts(scaleNote);\n if (scaleNote === note) {\n return {\n note: scaleNote,\n accidental: parts.accidental,\n change: false,\n };\n }\n // Then search for a note of equivalent value in our altered scale\n const valueNote = this.scaleMapByValue[this.music.getNoteValue(note)];\n if (valueNote != null) {\n return {\n note: valueNote,\n accidental: this.music.getNoteParts(valueNote).accidental,\n change: false,\n };\n }\n // Then search for a note of equivalent value in the original scale\n const originalValueNote = this.originalScaleMapByValue[this.music.getNoteValue(note)];\n if (originalValueNote != null) {\n this.scaleMap[modparts.root] = originalValueNote;\n delete this.scaleMapByValue[this.music.getNoteValue(scaleNote)];\n this.scaleMapByValue[this.music.getNoteValue(note)] = originalValueNote;\n return {\n note: originalValueNote,\n accidental: this.music.getNoteParts(originalValueNote).accidental,\n change: true,\n };\n }\n // Then try to unmodify a currently modified note.\n if (modparts.root === note) {\n delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])];\n this.scaleMapByValue[this.music.getNoteValue(modparts.root)] = modparts.root;\n this.scaleMap[modparts.root] = modparts.root;\n return {\n note: modparts.root,\n accidental: undefined,\n change: true,\n };\n }\n // Last resort -- shitshoot\n delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])];\n this.scaleMapByValue[this.music.getNoteValue(note)] = note;\n delete this.scaleMap[modparts.root];\n this.scaleMap[modparts.root] = note;\n return {\n note,\n accidental: parts.accidental,\n change: true,\n };\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Author: Raffaele Viglianti, 2012 http://itisnotsound.wordpress.com/\n//\n// This class implements hairpins between notes.\n// Hairpins can be either crescendo or decrescendo.\nimport { Element } from './element';\nimport { Modifier } from './modifier';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveHairpin extends Element {\n /**\n * Create a new hairpin from the specified notes.\n *\n * @param {!Object} notes The notes to tie up.\n * Notes is a struct that has:\n *\n * {\n * first_note: Note,\n * last_note: Note,\n * }\n * @param {!Object} type The type of hairpin\n */\n constructor(notes, type) {\n super();\n this.setNotes(notes);\n this.hairpin = type;\n this.position = Modifier.Position.BELOW;\n this.render_options = {\n height: 10,\n y_shift: 0,\n left_shift_px: 0,\n right_shift_px: 0,\n right_shift_ticks: 0,\n left_shift_ticks: 0,\n };\n }\n static get CATEGORY() {\n return Category.StaveHairpin;\n }\n /* Helper function to convert ticks into pixels.\n * Requires a Formatter with voices joined and formatted (to\n * get pixels per tick)\n *\n * options is struct that has:\n *\n * {\n * height: px,\n * y_shift: px, // vertical offset\n * left_shift_ticks: 0, // left horizontal offset expressed in ticks\n * right_shift_ticks: 0 // right horizontal offset expressed in ticks\n * }\n *\n **/\n static FormatByTicksAndDraw(ctx, formatter, notes, type, position, options) {\n var _a, _b;\n const ppt = formatter.pixelsPerTick;\n if (ppt == null) {\n throw new RuntimeError('BadArguments', 'A valid Formatter must be provide to draw offsets by ticks.');\n }\n const l_shift_px = ppt * ((_a = options.left_shift_ticks) !== null && _a !== void 0 ? _a : 0);\n const r_shift_px = ppt * ((_b = options.right_shift_ticks) !== null && _b !== void 0 ? _b : 0);\n const hairpin_options = {\n height: options.height,\n y_shift: options.y_shift,\n left_shift_px: l_shift_px,\n right_shift_px: r_shift_px,\n right_shift_ticks: 0,\n left_shift_ticks: 0,\n };\n new StaveHairpin({\n first_note: notes.first_note,\n last_note: notes.last_note,\n }, type)\n .setContext(ctx)\n .setRenderOptions(hairpin_options)\n .setPosition(position)\n .draw();\n }\n setPosition(position) {\n if (position === Modifier.Position.ABOVE || position === Modifier.Position.BELOW) {\n this.position = position;\n }\n return this;\n }\n setRenderOptions(options) {\n if (options.height != null &&\n options.y_shift != null &&\n options.left_shift_px != null &&\n options.right_shift_px != null) {\n this.render_options = options;\n }\n return this;\n }\n /**\n * Set the notes to attach this hairpin to.\n *\n * @param {!Object} notes The start and end notes.\n */\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Hairpin needs to have either first_note or last_note set.');\n }\n this.notes = notes;\n this.first_note = notes.first_note;\n this.last_note = notes.last_note;\n return this;\n }\n renderHairpin(params) {\n const ctx = this.checkContext();\n let dis = this.render_options.y_shift + 20;\n let y_shift = params.first_y;\n if (this.position === Modifier.Position.ABOVE) {\n dis = -dis + 30;\n y_shift = params.first_y - params.staff_height;\n }\n const l_shift = this.render_options.left_shift_px;\n const r_shift = this.render_options.right_shift_px;\n ctx.beginPath();\n switch (this.hairpin) {\n case StaveHairpin.type.CRESC:\n ctx.moveTo(params.last_x + r_shift, y_shift + dis);\n ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height / 2 + dis);\n ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height + dis);\n break;\n case StaveHairpin.type.DECRESC:\n ctx.moveTo(params.first_x + l_shift, y_shift + dis);\n ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height / 2 + dis);\n ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height + dis);\n break;\n default:\n // Default is NONE, so nothing to draw\n break;\n }\n ctx.stroke();\n ctx.closePath();\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const firstNote = this.first_note;\n const lastNote = this.last_note;\n if (!firstNote || !lastNote)\n throw new RuntimeError('NoNote', 'Notes required to draw');\n const start = firstNote.getModifierStartXY(this.position, 0);\n const end = lastNote.getModifierStartXY(this.position, 0);\n this.renderHairpin({\n first_x: start.x,\n last_x: end.x,\n first_y: firstNote.checkStave().getY() + firstNote.checkStave().getHeight(),\n last_y: lastNote.checkStave().getY() + lastNote.checkStave().getHeight(),\n staff_height: firstNote.checkStave().getHeight(),\n });\n }\n}\nStaveHairpin.type = {\n CRESC: 1,\n DECRESC: 2,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { TabTie } from './tabtie';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class TabSlide extends TabTie {\n /**\n * @param notes is a struct of the form:\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n * @param notes.first_note the starting note of the slide\n * @param notes.last_note the ending note of the slide\n * @param notes.first_indices specifies which string + fret positions of the TabNote are used in this slide. zero indexed.\n * @param notes.last_indices currently unused. we assume it's the same as first_indices.\n *\n * @param direction TabSlide.SLIDE_UP or TabSlide.SLIDE_DOWN\n */\n constructor(notes, direction) {\n super(notes, 'sl.');\n // Determine the direction automatically if it is not provided.\n if (!direction) {\n let first_fret = notes.first_note.getPositions()[0].fret;\n if (typeof first_fret === 'string') {\n first_fret = parseInt(first_fret, 10);\n }\n let last_fret = notes.last_note.getPositions()[0].fret;\n if (typeof last_fret === 'string') {\n last_fret = parseInt(last_fret, 10);\n }\n // If either of the frets are 'X', parseInt() above will return NaN.\n // Choose TabSlide.SLIDE_UP by default.\n if (isNaN(first_fret) || isNaN(last_fret)) {\n direction = TabSlide.SLIDE_UP;\n }\n else {\n direction = first_fret > last_fret ? TabSlide.SLIDE_DOWN : TabSlide.SLIDE_UP;\n }\n }\n this.direction = direction;\n this.render_options.cp1 = 11;\n this.render_options.cp2 = 14;\n this.render_options.y_shift = 0.5;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.TabSlide;\n }\n static get SLIDE_UP() {\n return 1;\n }\n static get SLIDE_DOWN() {\n return -1;\n }\n static createSlideUp(notes) {\n return new TabSlide(notes, TabSlide.SLIDE_UP);\n }\n static createSlideDown(notes) {\n return new TabSlide(notes, TabSlide.SLIDE_DOWN);\n }\n renderTie(params) {\n if (params.first_ys.length === 0 || params.last_ys.length === 0) {\n throw new RuntimeError('BadArguments', 'No Y-values to render');\n }\n const ctx = this.checkContext();\n const first_x_px = params.first_x_px;\n const first_ys = params.first_ys;\n const last_x_px = params.last_x_px;\n const direction = params.direction;\n if (direction !== TabSlide.SLIDE_UP && direction !== TabSlide.SLIDE_DOWN) {\n throw new RuntimeError('BadSlide', 'Invalid slide direction');\n }\n // eslint-disable-next-line\n const first_indices = this.notes.first_indices;\n for (let i = 0; i < first_indices.length; ++i) {\n const slide_y = first_ys[first_indices[i]] + this.render_options.y_shift;\n if (isNaN(slide_y)) {\n throw new RuntimeError('BadArguments', 'Bad indices for slide rendering.');\n }\n ctx.beginPath();\n ctx.moveTo(first_x_px, slide_y + 3 * direction);\n ctx.lineTo(last_x_px, slide_y - 3 * direction);\n ctx.closePath();\n ctx.stroke();\n }\n this.setRendered();\n }\n}\nTabSlide.TEXT_FONT = {\n family: Font.SERIF,\n size: 10,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Mike Corrigan \n// MIT License\nimport { Glyph } from './glyph';\nimport { GraceNote } from './gracenote';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isGraceNote } from './typeguard';\n/** Tremolo implements tremolo notation. */\nexport class Tremolo extends Modifier {\n /**\n * @param num number of bars\n */\n constructor(num) {\n super();\n this.num = num;\n this.position = Modifier.Position.CENTER;\n this.code = 'tremolo1';\n // big strokes scales initialised to 1 (no scale)\n this.y_spacing_scale = 1;\n this.extra_stroke_scale = 1;\n }\n static get CATEGORY() {\n return Category.Tremolo;\n }\n /** Draw the tremolo on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stemDirection = note.getStemDirection();\n const start = note.getModifierStartXY(this.position, this.index);\n let x = start.x;\n const gn = isGraceNote(note);\n const scale = gn ? GraceNote.SCALE : 1;\n const category = `tremolo.${gn ? 'grace' : 'default'}`;\n const musicFont = Tables.currentMusicFont();\n let y_spacing = musicFont.lookupMetric(`${category}.spacing`) * stemDirection;\n // add y_spacing_scale for big strokes (#1258)\n y_spacing *= this.y_spacing_scale;\n const height = this.num * y_spacing;\n let y = note.getStemExtents().baseY - height;\n if (stemDirection < 0) {\n y += musicFont.lookupMetric(`${category}.offsetYStemDown`) * scale;\n }\n else {\n y += musicFont.lookupMetric(`${category}.offsetYStemUp`) * scale;\n }\n const fontScale = musicFont.lookupMetric(`${category}.point`);\n x += musicFont.lookupMetric(`${category}.offsetXStem${stemDirection === Stem.UP ? 'Up' : 'Down'}`);\n for (let i = 0; i < this.num; ++i) {\n Glyph.renderGlyph(ctx, x, y, fontScale, this.code, { category, scale: this.extra_stroke_scale });\n y += y_spacing;\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Tables } from './tables';\nimport { RuntimeError } from './util';\n/** `Tuning` implements varies types of tunings for tablature. */\nexport class Tuning {\n /**\n * Constructor.\n * @param tuningString tuning name (eg. 'dagdad') or comma separated note strings\n */\n constructor(tuningString = 'E/5,B/4,G/4,D/4,A/3,E/3,B/2,E/2') {\n this.tuningValues = [];\n // Default to standard tuning.\n this.setTuning(tuningString);\n }\n static get names() {\n return {\n standard: 'E/5,B/4,G/4,D/4,A/3,E/3',\n dagdad: 'D/5,A/4,G/4,D/4,A/3,D/3',\n dropd: 'E/5,B/4,G/4,D/4,A/3,D/3',\n eb: 'Eb/5,Bb/4,Gb/4,Db/4,Ab/3,Db/3',\n standardBanjo: 'D/5,B/4,G/4,D/4,G/5',\n };\n }\n /** Return the note number associated to the note string. */\n noteToInteger(noteString) {\n return Tables.keyProperties(noteString).int_value;\n }\n /**\n * Set tuning identified by tuning name (eg. 'dagdad')\n * @param tuningString tuning name (eg. 'dagdad') or comma separated note strings\n */\n setTuning(tuningString) {\n if (Tuning.names[tuningString]) {\n tuningString = Tuning.names[tuningString];\n }\n this.tuningValues = [];\n const keys = tuningString.split(/\\s*,\\s*/);\n if (keys.length === 0) {\n throw new RuntimeError('BadArguments', `Invalid tuning string: ${tuningString}`);\n }\n for (let i = 0; i < keys.length; ++i) {\n this.tuningValues[i] = this.noteToInteger(keys[i]);\n }\n }\n /** Return the note number associated with a tablature string. */\n getValueForString(stringNum) {\n const s = Number(stringNum);\n if (s < 1 || s > this.tuningValues.length) {\n throw new RuntimeError('BadArguments', `String number must be between 1 and ${this.tuningValues.length}:${stringNum}`);\n }\n return this.tuningValues[s - 1];\n }\n /** Return the note number associated with a tablature string and fret. */\n getValueForFret(fretNum, stringNum) {\n const stringValue = this.getValueForString(stringNum);\n const f = Number(fretNum);\n if (f < 0) {\n throw new RuntimeError('BadArguments', `Fret number must be 0 or higher: ${fretNum}`);\n }\n return stringValue + f;\n }\n /** Return the note string associated with tablature string and fret. */\n getNoteForFret(fretNum, stringNum) {\n const noteValue = this.getValueForFret(fretNum, stringNum);\n const octave = Math.floor(noteValue / 12);\n const value = noteValue % 12;\n return `${Tables.integerToNote(value)}/${octave}`;\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Accidental } from './accidental';\nimport { Annotation, AnnotationHorizontalJustify, AnnotationVerticalJustify } from './annotation';\nimport { Articulation } from './articulation';\nimport { BarNote } from './barnote';\nimport { Beam } from './beam';\nimport { Bend } from './bend';\nimport { BoundingBox } from './boundingbox';\nimport { BoundingBoxComputation } from './boundingboxcomputation';\nimport { CanvasContext } from './canvascontext';\nimport { ChordSymbol, ChordSymbolHorizontalJustify, ChordSymbolVerticalJustify, SymbolModifiers, SymbolTypes, } from './chordsymbol';\nimport { Clef } from './clef';\nimport { ClefNote } from './clefnote';\nimport { Crescendo } from './crescendo';\nimport { Curve, CurvePosition } from './curve';\nimport { Dot } from './dot';\nimport { EasyScore } from './easyscore';\nimport { Element } from './element';\nimport { Factory } from './factory';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Formatter } from './formatter';\nimport { Fraction } from './fraction';\nimport { FretHandFinger } from './frethandfinger';\nimport { GhostNote } from './ghostnote';\nimport { Glyph } from './glyph';\nimport { GlyphNote } from './glyphnote';\nimport { GraceNote } from './gracenote';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { GraceTabNote } from './gracetabnote';\nimport { KeyManager } from './keymanager';\nimport { KeySignature } from './keysignature';\nimport { KeySigNote } from './keysignote';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { ModifierContext } from './modifiercontext';\nimport { MultiMeasureRest } from './multimeasurerest';\nimport { Music } from './music';\nimport { Note } from './note';\nimport { NoteHead } from './notehead';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { Parenthesis } from './parenthesis';\nimport { Parser } from './parser';\nimport { PedalMarking } from './pedalmarking';\nimport { Registry } from './registry';\nimport { RenderContext } from './rendercontext';\nimport { Renderer, RendererBackends, RendererLineEndType } from './renderer';\nimport { RepeatNote } from './repeatnote';\nimport { Stave } from './stave';\nimport { Barline, BarlineType } from './stavebarline';\nimport { StaveConnector } from './staveconnector';\nimport { StaveHairpin } from './stavehairpin';\nimport { StaveLine } from './staveline';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { StaveNote } from './stavenote';\nimport { Repetition } from './staverepetition';\nimport { StaveTempo } from './stavetempo';\nimport { StaveText } from './stavetext';\nimport { StaveTie } from './stavetie';\nimport { Volta, VoltaType } from './stavevolta';\nimport { Stem } from './stem';\nimport { StringNumber } from './stringnumber';\nimport { Stroke } from './strokes';\nimport { SVGContext } from './svgcontext';\nimport { System } from './system';\nimport { Tables } from './tables';\nimport { TabNote } from './tabnote';\nimport { TabSlide } from './tabslide';\nimport { TabStave } from './tabstave';\nimport { TabTie } from './tabtie';\nimport { TextBracket, TextBracketPosition } from './textbracket';\nimport { TextDynamics } from './textdynamics';\nimport { TextFormatter } from './textformatter';\nimport { TextJustification, TextNote } from './textnote';\nimport { TickContext } from './tickcontext';\nimport { TimeSignature } from './timesignature';\nimport { TimeSigNote } from './timesignote';\nimport { Tremolo } from './tremolo';\nimport { Tuning } from './tuning';\nimport { Tuplet } from './tuplet';\nimport { DATE, ID, VERSION } from './version';\nimport { Vibrato } from './vibrato';\nimport { VibratoBracket } from './vibratobracket';\nimport { Voice, VoiceMode } from './voice';\nexport class Flow {\n static get BUILD() {\n return {\n /** version number. */\n VERSION: VERSION,\n /** git commit ID that this library was built from. */\n ID: ID,\n /** The date when this library was compiled. */\n DATE: DATE,\n };\n }\n /**\n * Examples:\n * ```\n * Vex.Flow.setMusicFont('Petaluma');\n * Vex.Flow.setMusicFont('Bravura', 'Gonville');\n * ```\n *\n * **CASE 1**: You are using `vexflow.js`, which includes all music fonts (Bravura, Gonville, Petaluma, Custom).\n * In this case, calling this method is optional, since VexFlow already defaults to a music font stack of:\n * 'Bravura', 'Gonville', 'Custom'.\n *\n * **CASE 2**: You are using `vexflow-bravura.js` or `vexflow-petaluma.js` or `vexflow-gonville.js`,\n * which includes a single music font. Calling this method is unnecessary.\n *\n * **CASE 3**: You are using the light weight `vexflow-core.js` to take advantage of lazy loading for fonts.\n * In this case, the default music font stack is empty.\n * Example:\n * ```\n * await Vex.Flow.fetchMusicFont('Petaluma');\n * Vex.Flow.setMusicFont('Petaluma');\n * ... (do VexFlow stuff) ...\n * ```\n * See `demos/fonts/` for more examples.\n *\n * @returns an array of Font objects corresponding to the provided `fontNames`.\n */\n static setMusicFont(...fontNames) {\n // Convert the array of font names into an array of Font objects.\n const fonts = fontNames.map((fontName) => Font.load(fontName));\n Tables.MUSIC_FONT_STACK = fonts;\n Glyph.MUSIC_FONT_STACK = fonts.slice();\n Glyph.CURRENT_CACHE_KEY = fontNames.join(',');\n return fonts;\n }\n /**\n * Used with vexflow-core which supports dynamic font loading.\n */\n // eslint-disable-next-line\n static fetchMusicFont(fontName, fontModuleOrPath) {\n return __awaiter(this, void 0, void 0, function* () {\n // The default implementation does nothing.\n // See vexflow-core.ts for the implementation that vexflow-core.js uses.\n });\n }\n static getMusicFont() {\n const fonts = Tables.MUSIC_FONT_STACK;\n return fonts.map((font) => font.getName());\n }\n static get RENDER_PRECISION_PLACES() {\n return Tables.RENDER_PRECISION_PLACES;\n }\n static set RENDER_PRECISION_PLACES(precision) {\n Tables.RENDER_PRECISION_PLACES = precision;\n }\n static get SOFTMAX_FACTOR() {\n return Tables.SOFTMAX_FACTOR;\n }\n static set SOFTMAX_FACTOR(factor) {\n Tables.SOFTMAX_FACTOR = factor;\n }\n static get NOTATION_FONT_SCALE() {\n return Tables.NOTATION_FONT_SCALE;\n }\n static set NOTATION_FONT_SCALE(value) {\n Tables.NOTATION_FONT_SCALE = value;\n }\n static get TABLATURE_FONT_SCALE() {\n return Tables.TABLATURE_FONT_SCALE;\n }\n static set TABLATURE_FONT_SCALE(value) {\n Tables.TABLATURE_FONT_SCALE = value;\n }\n static get RESOLUTION() {\n return Tables.RESOLUTION;\n }\n static set RESOLUTION(value) {\n Tables.RESOLUTION = value;\n }\n static get SLASH_NOTEHEAD_WIDTH() {\n return Tables.SLASH_NOTEHEAD_WIDTH;\n }\n static set SLASH_NOTEHEAD_WIDTH(value) {\n Tables.SLASH_NOTEHEAD_WIDTH = value;\n }\n static get STAVE_LINE_DISTANCE() {\n return Tables.STAVE_LINE_DISTANCE;\n }\n static set STAVE_LINE_DISTANCE(value) {\n Tables.STAVE_LINE_DISTANCE = value;\n }\n static get STAVE_LINE_THICKNESS() {\n return Tables.STAVE_LINE_THICKNESS;\n }\n static set STAVE_LINE_THICKNESS(value) {\n Tables.STAVE_LINE_THICKNESS = value;\n }\n static get STEM_HEIGHT() {\n return Tables.STEM_HEIGHT;\n }\n static set STEM_HEIGHT(value) {\n Tables.STEM_HEIGHT = value;\n }\n static get STEM_WIDTH() {\n return Tables.STEM_WIDTH;\n }\n static set STEM_WIDTH(value) {\n Tables.STEM_WIDTH = value;\n }\n static get TIME4_4() {\n return Tables.TIME4_4;\n }\n static get accidentalMap() {\n return Tables.accidentalMap;\n }\n static get unicode() {\n return Tables.unicode;\n }\n static keySignature(spec) {\n return Tables.keySignature(spec);\n }\n static hasKeySignature(spec) {\n return Tables.hasKeySignature(spec);\n }\n static getKeySignatures() {\n return Tables.getKeySignatures();\n }\n static clefProperties(clef) {\n return Tables.clefProperties(clef);\n }\n // eslint-disable-next-line\n static keyProperties(key, clef, params) {\n return Tables.keyProperties(key, clef, params);\n }\n static durationToTicks(duration) {\n return Tables.durationToTicks(duration);\n }\n}\nFlow.Accidental = Accidental;\nFlow.Annotation = Annotation;\nFlow.Articulation = Articulation;\nFlow.Barline = Barline;\nFlow.BarNote = BarNote;\nFlow.Beam = Beam;\nFlow.Bend = Bend;\nFlow.BoundingBox = BoundingBox;\nFlow.BoundingBoxComputation = BoundingBoxComputation;\nFlow.CanvasContext = CanvasContext;\nFlow.ChordSymbol = ChordSymbol;\nFlow.Clef = Clef;\nFlow.ClefNote = ClefNote;\nFlow.Crescendo = Crescendo;\nFlow.Curve = Curve;\nFlow.Dot = Dot;\nFlow.EasyScore = EasyScore;\nFlow.Element = Element;\nFlow.Factory = Factory;\nFlow.Font = Font;\nFlow.Formatter = Formatter;\nFlow.Fraction = Fraction;\nFlow.FretHandFinger = FretHandFinger;\nFlow.GhostNote = GhostNote;\nFlow.Glyph = Glyph;\nFlow.GlyphNote = GlyphNote;\nFlow.GraceNote = GraceNote;\nFlow.GraceNoteGroup = GraceNoteGroup;\nFlow.GraceTabNote = GraceTabNote;\nFlow.KeyManager = KeyManager;\nFlow.KeySignature = KeySignature;\nFlow.KeySigNote = KeySigNote;\nFlow.Modifier = Modifier;\nFlow.ModifierContext = ModifierContext;\nFlow.MultiMeasureRest = MultiMeasureRest;\nFlow.Music = Music;\nFlow.Note = Note;\nFlow.NoteHead = NoteHead;\nFlow.NoteSubGroup = NoteSubGroup;\nFlow.Ornament = Ornament;\nFlow.Parenthesis = Parenthesis;\nFlow.Parser = Parser;\nFlow.PedalMarking = PedalMarking;\nFlow.Registry = Registry;\nFlow.RenderContext = RenderContext;\nFlow.Renderer = Renderer;\nFlow.RepeatNote = RepeatNote;\nFlow.Repetition = Repetition;\nFlow.Stave = Stave;\nFlow.StaveConnector = StaveConnector;\nFlow.StaveHairpin = StaveHairpin;\nFlow.StaveLine = StaveLine;\nFlow.StaveModifier = StaveModifier;\nFlow.StaveNote = StaveNote;\nFlow.StaveTempo = StaveTempo;\nFlow.StaveText = StaveText;\nFlow.StaveTie = StaveTie;\nFlow.Stem = Stem;\nFlow.StringNumber = StringNumber;\nFlow.Stroke = Stroke;\nFlow.SVGContext = SVGContext;\nFlow.System = System;\nFlow.TabNote = TabNote;\nFlow.TabSlide = TabSlide;\nFlow.TabStave = TabStave;\nFlow.TabTie = TabTie;\nFlow.TextBracket = TextBracket;\nFlow.TextDynamics = TextDynamics;\nFlow.TextFormatter = TextFormatter;\nFlow.TextNote = TextNote;\nFlow.TickContext = TickContext;\nFlow.TimeSignature = TimeSignature;\nFlow.TimeSigNote = TimeSigNote;\nFlow.Tremolo = Tremolo;\nFlow.Tuning = Tuning;\nFlow.Tuplet = Tuplet;\nFlow.Vibrato = Vibrato;\nFlow.VibratoBracket = VibratoBracket;\nFlow.Voice = Voice;\nFlow.Volta = Volta;\n// Exported Enums.\n// Sorted by the module / file they are exported from.\nFlow.AnnotationHorizontalJustify = AnnotationHorizontalJustify;\nFlow.AnnotationVerticalJustify = AnnotationVerticalJustify;\nFlow.ChordSymbolHorizontalJustify = ChordSymbolHorizontalJustify;\nFlow.ChordSymbolVerticalJustify = ChordSymbolVerticalJustify;\nFlow.SymbolTypes = SymbolTypes;\nFlow.SymbolModifiers = SymbolModifiers;\nFlow.CurvePosition = CurvePosition;\nFlow.FontWeight = FontWeight;\nFlow.FontStyle = FontStyle;\nFlow.ModifierPosition = ModifierPosition;\nFlow.RendererBackends = RendererBackends;\nFlow.RendererLineEndType = RendererLineEndType;\nFlow.BarlineType = BarlineType;\nFlow.StaveModifierPosition = StaveModifierPosition;\nFlow.VoltaType = VoltaType;\nFlow.TextBracketPosition = TextBracketPosition;\nFlow.TextJustification = TextJustification;\nFlow.VoiceMode = VoiceMode;\n","export const VERSION = '4.1.0-alpha.0';\nexport const ID = '847bc9014672858aedc7f8460384f51f98d6bd84';\nexport const DATE = '2022-10-10T04:47:38.237Z';\n","export const CustomFont = {\n resolution: 1000,\n fontFamily: 'VexFlowCustom',\n glyphs: {\n noteheadSquareWhite: {\n x_min: 0,\n x_max: 430.75,\n ha: 386,\n o: 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 l 50 150 l 380 150 l 380 -150 l 50 -150 l 50 150 ',\n },\n noteheadSquareBlack: {\n x_min: 0,\n x_max: 430.75,\n ha: 386,\n o: 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 ',\n },\n accidentalBuyukMucennebFlat: {\n x_min: -171.5,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalBakiyeFlat: {\n x_min: -176.9375,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalKucukMucennebSharp: {\n x_min: -1.359375,\n x_max: 255.890625,\n ha: 261,\n o: 'm 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 ',\n },\n accidentalKoron: {\n x_min: -20,\n x_max: 320,\n ha: 257,\n o: 'm -8 200 b -8 210 8 200 16 200 l 20 148 -199 l 23 -615 b 0 -629 9 -629 6 -629 l -21 -612 l -21 -201 l -21 216 l -20 200 m 16 200 l 310 0 l 240 0 l 16 140 l 16 -120 l 240 0 l 310 0 l 16 -200 ',\n },\n accidentalSori: {\n x_min: -10.890625,\n x_max: 299.4375,\n ha: 294,\n o: 'm 44 174 b 51 174 47 174 49 174 b 68 173 55 174 61 174 l 287 112 l 551 40 b 615 20 617 22 609 23 b 626 0 622 16 626 8 b 615 -22 626 -9 622 -18 b 613 -23 613 -23 613 -23 b 613 -23 613 -23 613 -23 b 287 -113 613 -24 597 -29 l 68 -174 b 53 -176 61 -176 57 -176 b 39 -172 47 -176 43 -174 b 27 -151 31 -167 27 -159 b 39 -129 27 -141 31 -133 b 230 -74 43 -124 20 -131 l 370 -36 l 468 -9 b 498 0 484 -4 498 -1 b 468 8 498 0 484 2 l 370 34 l 230 73 b 40 126 28 129 43 124 b 27 149 31 131 27 140 b 44 174 27 161 34 170 m 205 110 l 205 300 b 205 330 245 330 245 300 l 245 300 l 245 -300 b 245 -330 205 -330 205 -300 l 205 -300 l 205 110 l 345 90 m 345 90 l 345 330 b 345 360 385 360 385 330 l 385 330 l 385 -270 b 385 -300 345 -300 345 -270 l 345 -270 l 345 90 ',\n },\n vexAccidentalMicrotonal2: {\n x_min: -1.359375,\n x_max: 386.5625,\n ha: 394,\n o: 'm 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 ',\n },\n vexAccidentalMicrotonal3: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm -146 537 b -138 538 -143 538 -141 538 b -118 525 -129 538 -121 533 b -117 390 -117 522 -117 521 b -115 259 -117 268 -117 259 b -115 259 -115 259 -115 259 b -59 272 -104 263 -62 272 b -39 259 -50 272 -42 267 b -37 209 -38 257 -37 233 b -39 159 -37 185 -38 162 b -85 138 -43 149 -44 149 l -117 131 l -117 21 b -115 -88 -117 -80 -117 -88 b -115 -88 -115 -88 -115 -88 b -59 -75 -104 -84 -62 -75 b -44 -81 -52 -75 -48 -77 b -38 -124 -38 -87 -38 -85 b -38 -138 -38 -124 -38 -138 b -38 -152 -38 -138 -38 -152 b -44 -195 -38 -191 -38 -190 b -85 -209 -48 -200 -48 -200 l -117 -217 l -117 -349 b -118 -486 -117 -481 -117 -482 b -138 -499 -121 -494 -129 -499 b -153 -493 -143 -499 -149 -497 b -159 -415 -158 -487 -159 -496 b -159 -355 -159 -398 -159 -379 b -159 -227 -159 -284 -159 -227 b -205 -238 -159 -227 -180 -232 b -250 -249 -230 -244 -250 -249 b -251 -386 -251 -249 -251 -311 b -252 -525 -251 -521 -251 -522 b -272 -538 -255 -534 -264 -538 b -287 -532 -277 -538 -283 -536 b -293 -452 -292 -527 -293 -536 b -293 -391 -293 -436 -293 -415 b -294 -260 -293 -269 -293 -260 b -294 -260 -294 -260 -294 -260 b -348 -272 -306 -264 -345 -272 b -368 -259 -357 -272 -365 -267 b -369 -209 -369 -257 -369 -233 b -368 -159 -369 -185 -369 -162 b -323 -139 -364 -149 -362 -148 l -293 -131 l -293 -22 b -294 87 -293 80 -293 87 b -294 87 -294 87 -294 87 b -348 75 -306 84 -345 75 b -368 88 -357 75 -365 80 b -369 138 -369 91 -369 114 b -368 188 -369 162 -369 186 b -323 209 -364 198 -362 199 l -293 216 l -293 349 b -292 486 -293 481 -293 482 b -272 499 -288 494 -280 499 b -257 493 -266 499 -261 497 b -251 414 -251 487 -251 496 b -251 354 -251 398 -251 378 b -251 226 -251 284 -251 226 b -205 238 -250 226 -230 231 b -159 249 -180 244 -159 249 b -159 385 -159 249 -159 310 b -157 525 -159 521 -159 522 b -146 537 -156 530 -151 535 z m -159 11 b -159 120 -159 98 -159 120 l -159 120 b -175 116 -160 120 -167 119 b -221 105 -184 114 -204 109 l -251 98 l -251 -12 b -251 -121 -251 -72 -251 -121 b -205 -110 -250 -121 -230 -116 b -159 -99 -180 -104 -159 -99 b -159 11 -159 -99 -159 -49 z m 89 517 b 97 519 92 518 94 519 b 117 505 106 519 114 513 b 119 376 119 502 119 501 l 119 249 l 145 258 b 176 267 169 266 172 267 b 177 267 176 267 177 267 b 196 255 186 267 192 263 l 197 252 l 197 205 b 197 181 197 195 197 187 b 193 149 197 153 197 153 b 152 131 190 144 187 143 l 119 120 l 119 10 b 119 -100 119 -62 119 -100 b 145 -91 120 -100 131 -96 b 173 -82 159 -86 171 -82 b 176 -81 174 -81 175 -81 b 196 -94 185 -81 193 -87 b 198 -151 197 -97 198 -125 b 197 -194 198 -172 197 -192 b 153 -218 193 -203 192 -204 l 119 -230 l 119 -367 l 118 -504 l 117 -507 b 97 -519 113 -514 105 -519 b 82 -512 92 -519 87 -517 b 76 -434 77 -507 76 -516 b 76 -374 76 -418 76 -398 b 76 -245 76 -303 76 -245 b 52 -254 76 -245 65 -249 b 19 -263 34 -260 25 -263 b 6 -257 13 -263 10 -261 b 0 -214 0 -251 0 -253 b 0 -200 0 -210 0 -205 b 0 -188 0 -196 0 -192 b 6 -143 0 -147 0 -149 b 46 -126 10 -139 10 -139 l 76 -115 l 76 -5 b 76 106 76 56 76 106 b 51 98 76 106 64 102 b 18 89 34 92 25 89 b 6 95 13 89 10 91 b 0 139 0 101 0 99 b 0 153 0 143 0 148 b 0 179 0 163 0 172 b 44 225 0 215 3 211 l 76 236 l 76 369 b 78 505 76 501 76 502 b 89 517 80 510 85 515 z ',\n },\n vexAccidentalMicrotonal4: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 283 633 b 291 634 286 634 289 634 b 311 621 300 634 308 629 b 313 505 313 618 313 617 b 313 393 313 443 313 393 b 378 425 313 393 343 407 l 443 458 l 448 458 b 449 458 449 458 449 458 b 471 437 462 458 471 448 b 469 429 471 434 470 432 b 387 382 466 421 469 423 l 313 344 l 313 247 l 313 150 l 315 152 b 433 201 353 184 394 201 b 479 193 448 201 464 198 b 549 86 524 177 549 135 b 526 1 549 59 541 29 b 395 -143 504 -39 475 -71 b 316 -214 351 -182 341 -191 b 292 -229 302 -228 300 -229 b 272 -216 283 -229 275 -224 b 271 55 271 -212 271 -212 b 270 323 271 203 270 323 b 205 291 270 323 241 308 l 140 258 l 135 258 b 134 258 135 258 134 258 b 112 279 121 258 112 267 b 114 287 112 281 113 284 b 196 334 117 295 114 293 l 271 371 l 271 495 b 272 621 271 617 271 618 b 283 633 274 626 279 631 z m 404 133 b 391 134 400 134 395 134 b 384 134 388 134 386 134 b 318 88 358 130 335 114 l 313 81 l 313 -37 l 313 -156 l 316 -152 b 439 83 391 -71 439 22 l 439 84 b 404 133 439 115 430 128 z m -8 633 l -8 633 b 0 634 -6 634 -3 634 b 20 621 8 634 17 629 b 21 384 21 618 21 617 l 21 150 l 24 152 b 141 201 62 184 102 201 b 187 193 157 201 172 198 b 257 86 232 177 257 135 b 234 1 257 59 250 29 b 103 -143 212 -39 183 -71 b 24 -214 60 -182 49 -191 b 0 -229 10 -228 8 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 203 l -21 618 l -20 621 b -8 633 -18 626 -13 631 z m 113 133 l 113 133 b 99 134 109 134 103 134 b 93 134 97 134 94 134 b 26 88 66 130 43 114 l 21 81 l 21 -37 l 21 -156 l 25 -152 b 148 83 99 -71 148 22 l 148 84 b 113 133 148 115 138 128 z ',\n },\n vexNoteHeadRectBlack: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 ',\n },\n vexNoteHeadRectWhite: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 l 50 100 l 380 100 l 380 -100 l 50 -100 l 50 100',\n },\n },\n};\n","export const CustomMetrics = {\n name: 'VexFlowCustom',\n smufl: false,\n glyphs: {},\n};\n","export const GonvilleFont = {\n glyphs: {\n bracketTop: {\n x_min: 0,\n x_max: 559.421875,\n ha: 571,\n o: 'm 544 204 b 548 204 545 204 547 204 b 559 194 555 204 559 199 b 559 190 559 192 559 191 b 530 156 559 188 556 184 b 462 86 510 134 481 104 b 453 76 458 81 454 77 l 446 70 l 441 65 b 434 59 439 63 436 61 l 427 54 b 409 37 426 51 416 44 b 392 23 398 29 394 26 b 387 19 389 22 387 20 b 379 13 386 19 383 16 l 371 8 l 367 5 l 359 -1 l 337 -16 b 285 -48 319 -29 298 -41 l 279 -52 b 186 -95 255 -66 210 -87 l 175 -99 b 23 -129 127 -117 68 -129 b 17 -129 20 -129 19 -129 b 1 -123 2 -129 2 -129 b 0 -49 0 -122 0 -83 b 0 4 0 -22 0 1 b 27 11 2 9 4 9 b 185 31 78 12 145 20 b 198 34 186 31 193 33 b 314 73 234 44 277 58 b 349 88 328 79 340 84 b 353 90 352 90 353 90 b 363 94 353 90 357 93 b 371 98 367 97 371 98 b 428 129 372 98 413 120 b 461 148 441 136 454 144 b 468 151 464 149 466 151 b 472 154 469 152 470 154 b 481 161 473 155 477 158 b 525 190 490 166 518 186 l 534 197 b 540 201 536 198 539 199 b 544 204 541 202 544 204 ',\n },\n bracketBottom: {\n x_min: 0,\n x_max: 559.421875,\n ha: 571,\n o: 'm 5 127 b 14 127 6 127 9 127 b 51 126 25 127 43 127 b 175 98 93 122 138 112 l 186 94 b 279 51 210 86 255 65 b 285 47 280 51 283 48 b 319 27 291 44 311 31 l 326 22 b 359 0 332 19 352 4 l 367 -6 b 371 -9 368 -6 370 -8 l 379 -15 b 387 -22 383 -18 386 -20 l 398 -30 l 411 -40 l 417 -47 l 427 -55 l 434 -61 b 441 -66 436 -62 439 -65 l 446 -72 l 453 -77 l 462 -87 b 558 -188 490 -113 549 -176 b 559 -195 559 -191 559 -194 b 548 -205 559 -201 555 -205 b 541 -204 547 -205 544 -205 b 534 -198 539 -201 536 -199 l 525 -191 b 481 -162 518 -187 490 -167 b 472 -155 477 -159 472 -156 b 468 -152 470 -155 469 -154 b 461 -149 466 -152 464 -151 b 428 -130 454 -145 441 -137 b 371 -99 413 -122 372 -99 b 363 -95 371 -99 367 -98 b 353 -91 357 -94 353 -91 b 348 -90 353 -91 352 -91 b 332 -81 343 -87 341 -86 b 27 -12 230 -37 127 -13 b 0 -5 4 -11 2 -11 b 0 58 0 -2 0 27 b 0 122 0 88 0 120 b 5 127 1 124 4 126 ',\n },\n barlineTick: {\n x_min: -80.3125,\n x_max: 78.9375,\n ha: 81,\n o: 'm 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 ',\n },\n breathMarkTick: {\n x_min: -80.3125,\n x_max: 78.9375,\n ha: 81,\n o: 'm 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 ',\n },\n segno: {\n x_min: -330.75,\n x_max: 329.390625,\n ha: 336,\n o: 'm -133 483 b -117 484 -127 484 -122 484 b 31 373 -51 484 9 440 b 35 348 34 365 35 356 b -25 285 35 313 10 285 b -87 331 -55 285 -76 302 b -167 402 -100 376 -133 402 b -191 398 -175 402 -183 401 b -227 341 -215 388 -227 369 b -225 320 -227 334 -227 327 b -13 74 -209 230 -125 133 b 6 65 -4 70 5 66 l 9 63 l 10 65 b 117 231 12 68 40 112 l 189 341 l 242 424 b 268 460 262 456 264 458 b 283 464 273 463 277 464 b 308 438 296 464 308 453 l 308 437 b 287 396 308 430 308 428 l 95 98 l 59 43 l 58 41 l 65 37 b 253 -156 151 -8 217 -77 b 281 -285 272 -199 281 -244 b 148 -481 281 -381 231 -463 b 115 -485 137 -484 126 -485 b -32 -376 51 -485 -9 -442 b -36 -349 -35 -366 -36 -358 b 25 -287 -36 -315 -12 -287 b 85 -333 54 -287 74 -302 b 166 -403 99 -377 133 -403 b 190 -399 174 -403 182 -402 b 225 -342 215 -390 225 -370 b 224 -322 225 -335 225 -328 b 12 -76 208 -231 125 -134 b -8 -66 2 -72 -6 -68 l -10 -65 l -12 -66 b -118 -231 -13 -68 -42 -113 l -190 -342 l -243 -426 b -269 -462 -264 -458 -265 -458 b -284 -466 -274 -464 -279 -466 b -310 -440 -298 -466 -310 -455 l -310 -438 b -288 -398 -310 -430 -308 -430 l -96 -99 l -59 -44 l -59 -43 l -66 -38 b -281 284 -198 33 -281 158 l -281 284 b -133 483 -281 392 -220 474 m 254 177 b 266 179 258 177 262 179 b 319 149 287 179 307 167 b 329 115 326 140 329 127 b 319 79 329 102 326 90 b 268 51 307 61 287 51 b 221 72 250 51 234 58 b 205 115 210 84 205 99 b 254 177 205 142 223 170 m -281 -54 b -269 -52 -277 -52 -273 -52 b -223 -73 -253 -52 -235 -59 b -206 -116 -212 -84 -206 -101 b -216 -151 -206 -129 -209 -141 b -269 -179 -228 -170 -249 -179 b -314 -159 -285 -179 -302 -173 b -330 -116 -325 -147 -330 -131 b -281 -54 -330 -88 -313 -61 ',\n },\n coda: {\n x_min: -311.6875,\n x_max: 310.328125,\n ha: 317,\n o: 'm -9 388 b -2 390 -8 390 -5 390 b 5 388 1 390 4 390 b 19 378 10 387 16 383 b 23 333 23 371 23 371 b 24 298 23 299 24 298 b 81 276 34 298 65 285 b 213 91 145 240 190 177 b 224 24 217 76 224 36 b 257 24 224 24 235 24 b 299 19 292 24 292 24 b 310 -1 306 15 310 6 b 299 -23 310 -11 306 -19 b 257 -27 292 -27 292 -27 b 224 -29 235 -27 224 -29 b 213 -95 224 -40 217 -80 b 81 -280 190 -181 145 -244 b 24 -301 65 -290 34 -301 b 23 -335 24 -301 23 -303 l 23 -340 b 17 -381 23 -374 23 -374 b -1 -391 13 -388 5 -391 b -21 -381 -9 -391 -17 -388 b -27 -340 -27 -374 -27 -374 l -27 -335 b -28 -301 -27 -303 -27 -301 b -85 -280 -38 -301 -69 -290 b -217 -95 -149 -244 -194 -181 b -228 -29 -221 -80 -228 -40 b -259 -27 -228 -29 -238 -27 b -300 -23 -294 -27 -294 -27 b -311 -2 -307 -19 -311 -11 b -294 23 -311 8 -304 19 b -259 24 -291 23 -284 24 b -228 24 -239 24 -228 24 b -217 91 -228 36 -221 76 b -85 276 -194 177 -149 240 b -28 298 -69 285 -38 298 b -27 333 -27 298 -27 299 b -27 371 -27 362 -27 369 b -9 388 -24 378 -17 385 m -27 136 b -28 247 -27 197 -28 247 b -61 216 -31 247 -53 226 b -123 33 -95 172 -121 98 l -125 24 l -76 24 l -27 24 l -27 136 m 29 242 b 24 247 27 245 24 247 b 23 136 24 247 23 197 l 23 24 l 72 24 l 121 24 l 119 33 b 29 242 115 116 77 206 m -27 -140 l -27 -27 l -76 -27 l -125 -27 l -123 -36 b -61 -220 -121 -102 -95 -176 b -28 -251 -53 -230 -31 -251 b -27 -140 -28 -251 -27 -201 m 119 -36 l 121 -27 l 72 -27 l 23 -27 l 23 -140 b 24 -251 23 -201 24 -251 b 57 -220 27 -251 49 -230 b 119 -36 91 -176 117 -102 ',\n },\n gClef: {\n x_min: -1.359375,\n x_max: 847.96875,\n ha: 865,\n o: 'm 488 1499 b 495 1500 490 1500 492 1500 b 541 1465 507 1500 521 1490 b 679 1078 622 1372 679 1210 b 677 1050 679 1068 677 1060 b 477 642 668 893 604 764 l 443 609 l 431 596 l 431 592 l 438 562 l 449 508 l 460 458 b 481 355 475 390 481 355 b 481 355 481 355 481 355 b 490 356 481 355 485 355 b 528 358 495 356 511 358 b 558 356 540 358 552 356 b 839 95 699 338 808 237 b 847 22 845 72 847 47 b 631 -303 847 -113 766 -242 b 620 -309 623 -308 620 -309 l 620 -310 b 631 -359 620 -310 626 -333 l 646 -435 l 660 -496 b 672 -588 668 -535 672 -563 b 664 -653 672 -610 669 -630 b 383 -875 630 -792 509 -875 b 201 -810 321 -875 257 -855 b 129 -680 151 -768 129 -730 b 274 -530 129 -592 200 -530 b 351 -553 300 -530 326 -538 b 412 -669 393 -582 412 -626 b 287 -805 412 -735 366 -800 l 279 -805 l 285 -809 b 383 -830 318 -823 351 -830 b 586 -718 464 -830 540 -789 b 626 -584 612 -678 626 -631 b 619 -528 626 -566 623 -548 b 612 -495 619 -526 616 -510 b 577 -324 590 -387 577 -324 b 577 -324 577 -324 577 -324 b 568 -326 575 -324 571 -324 b 528 -334 558 -328 537 -333 b 465 -338 506 -337 485 -338 b 24 -11 269 -338 87 -206 b -1 145 8 41 -1 93 b 96 442 -1 249 32 351 b 322 714 166 541 236 626 l 352 745 l 345 782 l 332 843 l 315 921 b 303 984 310 950 304 978 b 295 1082 298 1017 295 1049 b 413 1426 295 1208 336 1329 b 488 1499 436 1456 477 1496 m 549 1301 b 541 1301 547 1301 544 1301 b 411 1207 500 1301 447 1263 b 355 1004 374 1152 355 1079 b 359 942 355 984 356 963 b 371 881 362 927 363 917 l 385 818 b 392 782 389 799 392 784 l 392 782 b 434 828 393 782 424 816 b 607 1165 534 941 594 1060 b 608 1193 608 1175 608 1183 b 597 1270 608 1224 604 1254 b 549 1301 589 1286 571 1299 m 398 528 b 393 555 396 542 393 553 b 392 555 393 555 393 555 b 317 470 390 555 347 505 b 190 298 266 408 212 334 b 127 70 148 227 127 148 b 155 -77 127 19 137 -30 b 468 -303 209 -216 333 -303 b 519 -299 484 -303 502 -302 b 568 -284 541 -295 568 -287 l 568 -284 b 563 -263 568 -284 566 -274 l 534 -120 l 511 -13 l 496 61 l 480 133 b 469 187 472 176 469 187 b 468 188 469 187 469 188 b 416 162 462 188 430 172 b 337 13 364 126 337 69 b 413 -124 337 -40 363 -93 b 428 -144 424 -131 428 -137 b 428 -149 428 -145 428 -148 b 409 -166 426 -161 419 -166 b 394 -162 405 -166 400 -165 b 240 77 302 -122 240 -27 l 240 77 b 430 342 240 197 315 301 l 436 344 l 426 394 l 398 528 m 548 194 b 526 195 540 195 532 195 b 519 195 524 195 521 195 l 514 195 l 518 177 l 539 79 l 552 15 l 566 -48 l 594 -187 l 605 -240 b 612 -266 609 -254 611 -266 b 612 -266 612 -266 612 -266 b 641 -248 613 -266 630 -256 b 744 -98 692 -212 730 -156 b 751 -40 749 -79 751 -59 b 548 194 751 76 665 181 ',\n },\n cClef: {\n x_min: 0,\n x_max: 873.828125,\n ha: 892,\n o: 'm 0 0 l 0 703 l 81 703 l 164 703 l 164 0 l 164 -705 l 81 -705 l 0 -705 l 0 0 m 225 0 l 225 703 l 246 703 l 268 703 l 268 366 l 268 30 l 274 36 b 314 79 284 44 302 63 b 413 302 357 137 392 213 b 432 327 419 324 421 327 b 449 306 443 327 447 322 b 611 115 457 195 529 115 b 651 122 624 115 638 117 b 728 316 705 140 724 188 b 729 388 728 342 729 366 b 671 635 729 533 711 602 b 581 662 649 652 616 662 b 477 637 545 662 510 653 l 475 635 l 477 634 b 503 627 488 632 495 631 b 545 556 532 612 545 584 b 491 480 545 524 526 491 b 465 474 481 476 473 474 b 379 563 417 474 379 516 b 389 602 379 576 382 588 b 541 691 409 641 479 681 b 582 694 555 692 568 694 b 865 462 714 694 834 598 b 873 392 871 440 873 416 b 865 317 873 367 871 341 b 639 84 839 194 748 101 b 612 83 630 83 620 83 b 511 116 577 83 543 94 b 504 120 509 119 506 120 b 504 120 504 120 504 120 b 469 59 504 120 488 93 l 432 -1 l 469 -61 b 504 -122 488 -94 504 -122 b 504 -122 504 -122 504 -122 b 511 -117 506 -122 509 -120 b 612 -84 543 -95 577 -84 b 665 -91 630 -84 647 -87 b 869 -338 771 -122 850 -216 b 873 -392 872 -356 873 -374 b 798 -595 873 -469 847 -539 b 581 -695 741 -662 660 -695 b 406 -626 517 -695 454 -671 b 381 -563 389 -607 381 -585 b 465 -477 381 -519 413 -477 b 545 -559 514 -477 545 -519 b 503 -628 545 -587 532 -613 b 477 -635 495 -632 488 -634 l 475 -637 l 477 -638 b 581 -663 510 -655 545 -663 b 671 -637 616 -663 649 -653 b 729 -391 711 -603 729 -534 b 728 -317 729 -367 728 -344 b 623 -117 722 -173 698 -124 b 611 -116 619 -116 615 -116 b 449 -308 528 -116 457 -198 b 432 -328 447 -323 443 -328 b 413 -303 421 -328 419 -326 b 314 -80 392 -215 357 -138 b 274 -37 302 -65 284 -45 l 268 -31 l 268 -367 l 268 -705 l 246 -705 l 225 -705 l 225 0 ',\n },\n fClef: {\n x_min: -1.359375,\n x_max: 899.703125,\n ha: 918,\n o: 'm 307 349 b 332 351 315 351 323 351 b 443 340 367 351 408 347 b 741 47 607 306 720 195 b 744 0 743 31 744 16 b 660 -303 744 -90 713 -206 b 28 -755 534 -531 304 -695 b 14 -756 23 -755 19 -756 b -1 -741 4 -756 -1 -750 b 21 -720 -1 -731 1 -728 b 567 -56 337 -601 548 -344 b 568 -11 568 -41 568 -24 b 442 285 568 129 525 233 b 325 319 406 308 367 319 b 93 177 232 319 137 266 b 84 154 91 170 84 155 b 84 154 84 154 84 154 b 88 156 84 154 85 155 b 159 177 110 170 134 177 b 257 134 194 177 231 162 b 294 41 281 108 294 73 b 171 -97 294 -24 246 -90 b 156 -98 166 -97 161 -98 b 6 74 73 -98 6 -22 b 6 80 6 76 6 79 b 307 349 10 223 141 340 m 839 215 b 845 216 841 216 842 216 b 862 213 852 216 860 215 b 899 163 887 206 899 184 b 872 117 899 145 890 127 b 847 111 865 112 856 111 b 808 130 833 111 818 117 b 796 162 800 140 796 151 b 839 215 796 187 812 212 m 839 -112 b 845 -112 841 -112 842 -112 b 862 -115 852 -112 860 -113 b 899 -165 887 -122 899 -144 b 872 -210 899 -183 890 -201 b 847 -217 865 -215 856 -217 b 808 -198 833 -217 818 -210 b 796 -165 800 -188 796 -177 b 839 -112 796 -140 812 -116 ',\n },\n unpitchedPercussionClef1: {\n x_min: 0,\n x_max: 464.140625,\n ha: 474,\n o: 'm 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 ',\n },\n '6stringTabClef': {\n x_min: -1.359375,\n x_max: 680.5625,\n ha: 694,\n o: 'm 597 1042 b 604 1042 600 1042 602 1042 b 642 1002 627 1042 642 1022 b 619 966 642 988 635 974 b 439 927 574 942 503 927 l 426 927 l 426 921 b 430 838 428 893 430 866 b 345 480 430 696 398 560 b 179 391 307 423 249 391 b 156 392 171 391 164 392 b 138 394 149 394 142 394 b 103 434 115 396 103 416 b 129 471 103 451 111 466 b 141 474 133 473 137 474 b 172 459 153 474 164 469 b 181 455 175 456 176 455 b 187 456 182 455 185 455 b 253 520 212 460 234 483 b 315 836 294 605 315 714 b 311 928 315 867 314 898 b 302 945 310 943 311 942 b 245 953 283 950 262 953 b 130 891 193 953 149 931 b 84 860 119 870 102 860 b 36 905 61 860 39 877 b 36 910 36 907 36 909 b 80 970 36 931 50 949 b 249 1017 125 1000 187 1017 b 322 1009 273 1017 299 1014 l 341 1003 b 436 991 372 995 406 991 b 577 1031 495 991 545 1004 b 597 1042 583 1038 590 1041 m 416 360 b 424 360 419 360 421 360 b 481 309 454 360 479 338 b 503 145 484 280 495 199 b 585 -185 525 16 555 -106 b 630 -245 596 -213 613 -237 l 634 -247 l 638 -245 b 647 -244 641 -245 645 -244 b 680 -278 666 -244 680 -262 b 664 -308 680 -290 675 -301 b 638 -312 658 -310 650 -312 b 613 -309 631 -312 623 -310 b 477 -201 555 -303 502 -260 b 417 -2 460 -159 434 -72 b 416 5 417 1 416 5 b 416 5 416 5 416 5 b 411 -5 415 5 413 0 b 359 -97 397 -33 377 -70 b 353 -106 355 -102 353 -105 b 359 -112 353 -108 355 -109 b 409 -130 375 -123 390 -129 b 426 -134 420 -130 421 -131 b 431 -147 428 -137 431 -141 b 420 -162 431 -152 427 -159 b 382 -169 409 -166 396 -169 b 323 -155 363 -169 341 -165 l 317 -152 l 314 -155 b 62 -303 240 -240 148 -295 b 36 -305 55 -305 44 -305 b 23 -303 29 -305 24 -305 b -1 -273 6 -299 -1 -287 b 31 -240 -1 -256 10 -240 b 36 -240 32 -240 34 -240 b 42 -241 38 -241 39 -241 b 134 -204 63 -241 99 -226 b 367 288 265 -115 357 81 b 375 330 368 313 370 320 b 416 360 383 347 400 358 m 360 -359 b 379 -359 363 -359 371 -359 b 424 -360 396 -359 416 -359 b 646 -502 536 -373 624 -430 b 649 -527 649 -510 649 -519 b 530 -673 649 -578 604 -635 l 521 -677 l 529 -681 b 653 -811 592 -714 637 -762 b 660 -853 658 -827 660 -839 b 645 -911 660 -873 656 -892 b 426 -1021 608 -981 519 -1021 b 283 -989 377 -1021 328 -1011 b 235 -949 249 -972 239 -964 b 234 -936 234 -946 234 -941 b 234 -928 234 -934 234 -931 l 235 -925 l 234 -927 l 225 -934 b 87 -982 186 -966 138 -982 b 80 -982 85 -982 83 -982 b 55 -981 70 -981 58 -981 b 17 -943 32 -981 17 -964 b 54 -904 17 -921 35 -904 b 78 -914 62 -904 72 -909 l 83 -918 l 88 -918 b 190 -831 122 -918 166 -881 b 269 -506 242 -727 269 -612 b 268 -462 269 -492 269 -477 b 266 -449 266 -458 266 -452 b 265 -444 266 -445 266 -444 b 257 -446 264 -444 261 -445 b 132 -545 196 -470 152 -505 b 88 -573 122 -563 104 -573 b 39 -523 63 -573 39 -553 b 63 -476 39 -505 44 -494 b 360 -359 136 -408 235 -369 m 419 -424 b 393 -423 411 -423 406 -423 l 375 -423 l 377 -426 b 379 -439 377 -427 378 -434 b 383 -510 382 -463 383 -487 b 314 -811 383 -609 360 -710 b 266 -893 296 -850 285 -870 b 264 -898 265 -896 264 -898 l 264 -898 b 264 -898 264 -898 264 -898 b 268 -898 264 -898 266 -898 b 273 -898 270 -898 272 -898 b 300 -909 283 -898 291 -900 b 426 -957 340 -941 385 -957 b 476 -949 443 -957 460 -954 b 547 -853 522 -931 547 -893 b 485 -745 547 -816 526 -775 b 397 -707 460 -727 432 -714 b 366 -675 375 -703 366 -692 b 396 -642 366 -657 377 -645 b 530 -557 455 -637 511 -601 b 536 -527 534 -548 536 -537 b 419 -424 536 -480 490 -437 ',\n },\n timeSig0: {\n x_min: 0,\n x_max: 514.5,\n ha: 525,\n o: 'm 236 648 b 246 648 238 648 242 648 b 288 646 261 648 283 648 b 472 513 364 634 428 587 b 514 347 502 464 514 413 b 462 163 514 272 499 217 b 257 44 409 83 333 44 b 50 163 181 44 103 83 b 0 347 14 217 0 272 b 40 513 0 413 12 464 b 236 648 87 591 155 638 m 277 614 b 253 616 273 616 261 616 b 242 616 247 616 243 616 b 170 499 193 609 181 589 b 159 348 163 446 159 398 b 166 222 159 308 161 266 b 201 91 174 138 183 106 b 257 76 215 81 235 76 b 311 91 277 76 299 81 b 347 222 330 106 338 138 b 353 348 352 266 353 308 b 344 499 353 398 351 446 b 277 614 333 587 322 606 m 257 -1 l 258 -1 l 255 -1 l 257 -1 m 257 673 l 258 673 l 255 673 l 257 673 ',\n },\n timeSig1: {\n x_min: -1.359375,\n x_max: 344.359375,\n ha: 351,\n o: 'm 126 637 l 129 638 l 198 638 l 266 638 l 269 635 b 274 631 272 634 273 632 l 277 627 l 277 395 b 279 156 277 230 277 161 b 329 88 281 123 295 106 b 344 69 341 81 344 79 b 337 55 344 62 343 59 l 333 54 l 197 54 l 61 54 l 58 55 b 50 69 53 59 50 62 b 65 88 50 79 53 81 b 80 97 72 91 74 93 b 117 156 103 113 112 129 b 117 345 117 161 117 222 l 117 528 l 100 503 l 38 406 b 14 383 24 384 23 383 b -1 398 5 383 -1 390 b 4 415 -1 403 1 409 b 16 437 5 416 10 426 l 72 539 l 100 596 b 121 632 119 631 119 631 b 126 637 122 634 125 635 m 171 -1 l 172 -1 l 170 -1 l 171 -1 m 171 673 l 172 673 l 170 673 l 171 673 ',\n },\n timeSig2: {\n x_min: -1.359375,\n x_max: 458.6875,\n ha: 468,\n o: 'm 197 648 b 216 648 201 648 208 648 b 258 646 232 648 253 648 b 419 546 333 637 393 599 b 432 489 428 528 432 509 b 356 342 432 440 405 384 b 235 278 322 313 288 295 b 69 170 166 256 107 217 b 69 169 69 170 69 169 b 69 169 69 169 69 169 b 74 173 69 169 72 170 b 209 222 112 204 163 222 b 310 195 247 222 274 215 b 371 179 332 184 352 179 b 396 181 379 179 387 179 b 428 202 409 184 423 194 b 442 212 431 209 436 212 b 458 197 450 212 458 206 b 441 148 458 190 449 165 b 299 44 409 84 353 44 b 288 45 295 44 292 44 b 250 61 274 45 268 49 b 122 99 212 86 164 99 b 73 91 104 99 88 97 b 28 63 53 84 34 72 b 14 54 25 56 20 54 b 1 62 9 54 4 56 l -1 65 l -1 79 b 0 99 -1 91 0 95 b 2 113 1 102 2 108 b 164 309 20 197 81 272 b 285 470 232 341 277 398 b 287 487 287 476 287 481 b 171 595 287 551 239 595 b 155 595 166 595 160 595 b 142 592 145 594 142 594 b 145 589 142 592 142 591 b 179 527 168 576 179 551 b 132 455 179 496 163 467 b 104 451 122 452 112 451 b 27 530 62 451 27 487 b 29 555 27 538 27 546 b 197 648 44 601 115 639 m 228 -1 l 230 -1 l 227 -1 l 228 -1 m 228 673 l 230 673 l 227 673 l 228 673 ',\n },\n timeSig3: {\n x_min: -1.359375,\n x_max: 409.6875,\n ha: 418,\n o: 'm 174 648 b 191 648 176 648 183 648 b 225 648 204 648 220 648 b 402 523 317 638 389 588 b 404 503 404 517 404 510 b 402 484 404 495 404 488 b 264 373 389 437 334 394 b 257 370 259 371 257 371 b 257 370 257 370 257 370 b 264 369 258 370 261 369 b 409 202 359 334 409 267 b 318 72 409 152 381 104 b 200 43 281 52 240 43 b 23 113 134 43 69 68 b 0 169 6 129 0 149 b 77 249 0 210 29 249 l 77 249 b 152 174 125 249 152 212 b 103 102 152 145 137 116 b 103 102 103 102 103 102 b 147 94 103 101 132 95 b 153 94 149 94 151 94 b 265 206 219 94 265 141 b 264 226 265 213 265 219 b 147 355 253 299 204 353 b 126 371 133 356 126 362 b 147 388 126 383 132 388 b 254 474 196 391 238 424 b 259 502 258 484 259 494 b 182 592 259 544 228 582 b 156 595 175 595 166 595 b 115 592 142 595 129 594 l 111 591 l 115 588 b 152 524 141 574 152 549 b 92 449 152 491 130 458 b 76 448 87 448 81 448 b -1 530 32 448 -1 488 b 20 581 -1 548 5 566 b 174 648 55 619 108 641 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 ',\n },\n timeSig4: {\n x_min: 0,\n x_max: 468.21875,\n ha: 478,\n o: 'm 174 637 b 232 638 175 638 189 638 b 277 638 245 638 259 638 l 378 638 l 381 635 b 389 623 386 632 389 627 b 382 609 389 617 386 613 b 366 589 381 606 372 598 l 313 528 l 245 451 l 209 410 l 155 348 l 84 267 b 59 240 72 252 59 240 b 59 240 59 240 59 240 b 151 238 59 238 68 238 l 242 238 l 242 303 b 243 371 242 369 242 370 b 289 426 245 374 254 385 l 303 441 l 317 456 l 338 483 l 360 506 l 371 520 b 386 527 375 526 381 527 b 400 519 392 527 397 524 b 401 440 401 516 401 514 b 401 377 401 423 401 402 l 401 238 l 426 238 b 453 237 449 238 450 238 b 465 217 461 234 465 226 b 460 202 465 212 464 206 b 426 197 454 197 453 197 l 401 197 l 401 180 b 451 88 402 129 412 109 b 468 69 465 81 468 79 b 461 55 468 62 466 59 l 458 54 l 321 54 l 185 54 l 182 55 b 175 69 176 59 175 62 b 191 88 175 79 176 81 b 240 180 230 109 240 129 l 240 197 l 125 197 b 73 195 104 195 87 195 b 8 197 10 195 9 197 b 0 212 2 199 0 205 b 0 212 0 212 0 212 b 20 242 0 219 0 219 b 163 610 104 344 163 492 b 174 637 163 628 166 634 m 234 -1 l 235 -1 l 232 -1 l 234 -1 m 234 673 l 235 673 l 232 673 l 234 673 ',\n },\n timeSig5: {\n x_min: 0,\n x_max: 409.6875,\n ha: 418,\n o: 'm 47 637 b 53 638 49 638 50 638 b 69 634 55 638 61 637 b 210 610 114 619 161 610 b 363 634 259 610 311 619 b 382 638 372 637 378 638 b 392 634 386 638 389 637 b 397 623 396 630 397 627 b 393 610 397 620 396 616 b 298 505 368 552 338 520 b 212 494 277 498 246 494 b 65 517 163 494 106 502 b 61 517 62 517 61 517 b 61 517 61 517 61 517 b 51 408 61 517 51 412 b 51 408 51 408 51 408 b 51 408 51 408 51 408 b 61 412 53 408 55 409 b 125 434 80 421 103 430 b 185 441 145 440 166 441 b 409 244 310 441 409 353 b 401 191 409 227 406 209 b 197 43 375 105 287 43 b 159 47 183 43 171 44 b 23 123 112 56 61 86 b 0 180 6 140 0 159 b 76 260 0 220 31 260 b 92 259 81 260 87 259 b 152 183 132 251 152 216 b 100 112 152 152 134 122 b 95 111 98 112 95 111 b 95 111 95 111 95 111 b 129 98 95 109 119 101 b 148 97 136 97 141 97 b 264 235 206 97 261 158 b 265 248 265 240 265 244 b 210 398 265 312 243 373 b 179 408 201 406 194 408 b 174 408 178 408 176 408 b 53 369 130 408 88 394 b 34 359 39 359 38 359 b 17 374 24 359 17 365 b 39 628 17 384 38 625 b 47 637 40 631 43 635 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 ',\n },\n timeSig6: {\n x_min: 0,\n x_max: 475.03125,\n ha: 485,\n o: 'm 255 648 b 274 648 259 648 266 648 b 314 646 288 648 307 648 b 450 555 374 637 438 594 b 454 530 453 546 454 538 b 375 451 454 485 416 451 b 328 467 359 451 343 455 b 300 526 310 483 300 503 b 352 598 300 557 319 589 b 356 599 355 598 356 599 b 352 602 356 599 355 601 b 288 616 330 612 308 616 b 210 584 257 616 230 605 b 164 433 189 559 174 508 b 160 374 163 415 160 381 b 160 374 160 374 160 374 b 160 374 160 374 160 374 b 168 377 160 374 164 376 b 258 395 200 390 228 395 b 366 367 294 395 328 387 b 475 223 436 333 475 283 b 472 197 475 215 473 206 b 349 65 462 141 419 95 b 259 43 317 51 288 43 b 167 69 230 43 200 52 b 4 290 80 113 20 195 b 0 349 1 309 0 328 b 20 467 0 391 6 433 b 255 648 58 563 155 637 m 269 363 b 257 363 265 363 261 363 b 210 345 236 363 220 356 b 186 226 196 324 186 272 b 187 198 186 216 186 206 b 213 95 191 151 202 112 b 257 76 221 83 238 76 b 270 77 261 76 266 76 b 321 156 299 81 310 99 b 329 229 326 183 329 206 b 321 301 329 252 326 274 b 269 363 311 342 298 359 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 ',\n },\n timeSig7: {\n x_min: 0,\n x_max: 442.359375,\n ha: 451,\n o: 'm 147 648 b 166 649 153 649 160 649 b 313 598 217 649 273 630 b 340 587 323 588 328 587 l 341 587 b 412 628 367 587 390 601 b 427 638 416 635 421 638 b 439 632 431 638 435 637 b 442 623 441 630 442 628 b 430 569 442 616 439 603 b 352 369 408 492 377 410 b 300 259 325 324 313 298 b 273 84 283 205 273 140 b 265 55 273 65 272 59 l 261 54 l 181 54 l 99 54 l 96 55 b 91 61 95 56 92 59 l 89 63 l 89 77 b 147 263 89 133 111 202 b 261 401 176 313 212 355 b 378 541 315 449 349 489 l 382 548 l 375 544 b 240 495 333 512 285 495 b 129 535 198 495 160 509 b 84 560 108 552 95 560 b 76 559 81 560 78 560 b 31 487 59 555 43 530 b 14 470 27 473 24 470 b 1 477 8 470 4 471 l 0 480 l 0 553 l 0 627 l 1 630 b 16 638 4 635 9 638 b 23 635 17 638 20 637 b 49 626 36 626 39 626 b 96 638 59 626 80 630 b 104 639 99 638 102 639 b 117 644 107 641 112 642 b 147 648 125 645 137 648 m 220 -1 l 221 -1 l 219 -1 l 220 -1 m 220 673 l 221 673 l 219 673 l 220 673 ',\n },\n timeSig8: {\n x_min: 0,\n x_max: 488.640625,\n ha: 499,\n o: 'm 217 648 b 245 649 225 648 235 649 b 453 516 343 649 430 595 b 458 478 455 503 458 491 b 412 370 458 440 441 398 b 411 369 412 369 411 369 b 415 365 411 367 412 367 b 488 231 462 331 488 281 b 472 165 488 208 483 186 b 243 43 434 86 338 43 b 63 104 178 43 112 62 b 0 233 20 140 0 186 b 73 365 0 283 24 331 l 77 369 l 72 374 b 29 476 42 406 29 441 b 217 648 29 557 103 635 m 258 605 b 242 606 253 605 247 606 b 157 552 198 606 157 580 b 160 541 157 548 159 544 b 319 413 176 503 242 452 l 337 403 l 338 406 b 359 476 352 428 359 452 b 258 605 359 537 318 595 m 138 326 b 130 330 134 328 130 330 b 130 330 130 330 130 330 b 107 305 127 330 112 313 b 84 231 91 281 84 256 b 243 86 84 156 151 86 b 249 87 245 86 246 87 b 347 156 303 88 347 120 b 344 172 347 162 345 167 b 156 319 325 227 257 281 b 138 326 151 322 144 324 m 243 -1 l 245 -1 l 242 -1 l 243 -1 m 243 673 l 245 673 l 242 673 l 243 673 ',\n },\n timeSig9: {\n x_min: 0,\n x_max: 475.03125,\n ha: 485,\n o: 'm 191 646 b 212 649 198 648 205 649 b 255 644 227 649 243 646 b 458 448 348 616 428 539 b 475 342 469 415 475 378 b 460 244 475 308 469 274 b 193 44 421 124 303 44 b 91 69 157 44 122 51 b 19 161 43 97 19 126 b 21 181 19 167 20 174 b 98 241 32 220 65 241 b 170 186 129 241 160 223 b 172 166 171 179 172 173 b 121 94 172 134 152 102 b 117 93 118 94 117 93 b 121 90 117 93 118 91 b 185 76 142 80 164 76 b 270 119 220 76 251 91 b 308 259 287 145 300 194 b 313 317 310 277 313 310 b 313 317 313 317 313 317 b 313 317 313 317 313 317 b 304 315 313 317 308 316 b 216 295 273 302 245 295 b 145 308 193 295 170 299 b 19 398 88 327 42 360 b 0 469 5 420 0 444 b 24 551 0 496 8 526 b 191 646 54 596 125 637 m 227 614 b 215 616 224 616 220 616 b 202 614 210 616 206 616 b 152 535 174 610 163 592 b 144 463 147 509 144 485 b 152 391 144 440 147 417 b 216 328 163 344 179 328 b 280 391 253 328 269 344 b 288 463 285 417 288 440 b 280 535 288 485 285 509 b 227 614 269 594 258 610 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 ',\n },\n timeSigCommon: {\n x_min: -1.359375,\n x_max: 556.6875,\n ha: 568,\n o: 'm 294 322 b 318 323 299 322 308 323 b 360 320 334 323 352 322 b 526 217 430 310 490 273 b 543 166 537 202 543 184 b 447 70 543 117 503 70 b 445 70 447 70 446 70 b 359 159 394 72 359 113 b 368 201 359 173 362 187 b 442 245 382 229 412 245 b 455 244 446 245 451 245 b 460 244 458 244 460 244 b 460 244 460 244 460 244 b 454 248 460 244 458 245 b 325 291 417 276 372 291 b 285 287 313 291 299 290 b 144 -2 183 269 144 190 b 281 -290 144 -208 179 -280 b 304 -291 289 -291 298 -291 b 524 -105 412 -291 506 -212 b 541 -84 526 -88 530 -84 b 556 -101 551 -84 556 -90 b 549 -138 556 -111 553 -122 b 334 -322 521 -237 435 -310 b 302 -324 323 -323 313 -324 b 13 -101 172 -324 54 -234 b -1 -1 4 -68 -1 -34 b 294 322 -1 161 121 303 ',\n },\n timeSigCutCommon: {\n x_min: 0,\n x_max: 556.6875,\n ha: 568,\n o: 'm 289 545 b 298 546 292 545 295 546 b 318 533 306 546 315 541 b 319 428 319 530 319 528 l 319 327 l 334 327 b 526 223 412 326 485 285 b 543 172 537 206 543 190 b 447 76 543 122 503 76 b 445 76 446 76 446 76 b 359 165 394 77 359 119 b 368 205 359 179 362 192 b 441 251 382 233 412 251 b 455 249 446 251 451 251 b 460 248 458 249 460 248 b 460 248 460 248 460 248 b 454 254 460 249 458 251 b 334 295 419 280 378 294 l 319 295 l 319 4 l 319 -287 l 321 -285 b 328 -285 322 -285 325 -285 b 524 -99 424 -277 507 -198 b 541 -79 526 -84 530 -79 b 556 -97 551 -79 556 -84 b 548 -133 556 -105 553 -117 b 334 -317 521 -233 434 -306 b 322 -319 329 -317 323 -317 l 319 -319 l 319 -424 b 319 -471 319 -444 319 -459 b 313 -541 319 -544 318 -535 b 298 -548 308 -545 303 -548 b 279 -534 289 -548 281 -542 b 277 -424 277 -531 277 -530 l 277 -317 l 273 -317 b 13 -95 153 -305 51 -217 b 0 2 4 -62 0 -29 b 182 295 0 126 66 238 b 274 324 210 309 249 320 l 277 324 l 277 427 b 279 533 277 528 277 530 b 289 545 281 538 285 542 m 277 2 b 277 291 277 161 277 291 b 268 288 277 291 273 290 b 144 1 179 265 144 184 b 276 -284 144 -199 175 -267 l 277 -285 l 277 2 ',\n },\n timeSigPlus: {\n x_min: 0,\n x_max: 319.859375,\n ha: 326,\n o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ',\n },\n timeSigPlusSmall: {\n x_min: 0,\n x_max: 319.859375,\n ha: 326,\n o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ',\n },\n timeSigMinus: {\n x_min: 0,\n x_max: 318.5,\n ha: 325,\n o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ',\n },\n timeSigParensRight: {\n x_min: 25.859375,\n x_max: 164.6875,\n ha: 168,\n o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ',\n },\n timeSigParensRightSmall: {\n x_min: 25.859375,\n x_max: 164.6875,\n ha: 168,\n o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ',\n },\n timeSigParensLeft: {\n x_min: -166.0625,\n x_max: -25.859375,\n ha: 0,\n o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ',\n },\n timeSigParensLeftSmall: {\n x_min: -166.0625,\n x_max: -25.859375,\n ha: 0,\n o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ',\n },\n noteheadDoubleWhole: {\n x_min: 0,\n x_max: 902.421875,\n ha: 921,\n o: 'm 17 240 b 24 241 19 241 21 241 b 32 240 28 241 31 241 b 46 229 38 238 43 234 b 50 88 50 223 50 237 b 50 -1 50 63 50 34 b 50 -90 50 -36 50 -65 b 46 -231 50 -238 50 -224 b 25 -242 42 -238 34 -242 b 0 -224 14 -242 4 -235 b 0 2 0 -222 0 -108 b 0 223 0 112 0 220 b 17 240 2 230 9 237 m 110 240 b 118 241 111 241 114 241 b 126 240 121 241 123 241 b 142 223 133 237 140 230 b 144 123 144 220 144 205 b 144 29 144 45 144 29 b 144 29 144 29 144 29 b 393 183 166 106 264 167 b 450 186 412 184 431 186 b 756 29 600 186 732 120 b 756 29 756 29 756 29 b 758 123 758 29 758 45 b 760 227 758 226 758 223 b 784 241 766 237 774 241 b 804 229 792 241 800 237 b 809 88 808 223 809 237 l 809 -1 l 809 -90 b 804 -231 809 -238 808 -224 b 784 -242 800 -238 792 -242 b 762 -231 775 -242 766 -238 b 758 -124 756 -224 758 -231 b 756 -30 758 -47 758 -30 b 756 -30 756 -30 756 -30 b 509 -184 736 -108 637 -169 b 450 -187 488 -187 469 -187 b 144 -30 300 -187 168 -122 b 144 -30 144 -30 144 -30 b 144 -124 144 -30 144 -47 b 140 -231 144 -231 144 -224 b 118 -242 134 -238 126 -242 b 92 -224 107 -242 96 -235 b 92 2 92 -222 92 -108 b 92 223 92 112 92 220 b 110 240 95 230 102 237 m 432 161 b 413 162 426 162 420 162 b 313 41 351 162 313 109 b 347 -73 313 5 323 -34 b 487 -163 385 -133 439 -163 b 578 -97 526 -163 562 -142 b 588 -43 585 -80 588 -62 b 432 161 588 47 518 147 m 868 240 b 876 241 869 241 872 241 b 884 240 879 241 882 241 b 898 229 890 238 894 234 b 902 88 902 223 902 237 l 902 -1 l 902 -90 b 898 -231 902 -238 902 -224 b 876 -242 892 -238 884 -242 b 852 -224 865 -242 854 -235 b 850 2 850 -222 850 -108 b 852 223 850 112 850 220 b 868 240 853 230 860 237 ',\n },\n noteheadWhole: {\n x_min: 0,\n x_max: 619.3125,\n ha: 632,\n o: 'm 274 184 b 307 186 285 186 296 186 b 616 22 465 186 597 116 b 619 -1 617 13 619 5 b 308 -187 619 -104 483 -187 b 0 -1 133 -187 0 -102 b 5 36 0 11 1 23 b 274 184 29 115 141 176 m 289 161 b 272 162 284 162 277 162 b 171 41 209 162 171 108 b 205 -73 171 5 182 -34 b 345 -163 243 -133 298 -163 b 436 -98 385 -163 420 -142 b 446 -43 443 -80 446 -62 b 289 161 446 47 377 147 ',\n },\n noteheadHalf: {\n x_min: 0,\n x_max: 428.75,\n ha: 438,\n o: 'm 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 m 366 131 b 352 134 362 133 357 134 b 219 81 321 134 269 115 b 47 -111 126 23 50 -62 b 47 -112 47 -111 47 -112 b 77 -136 47 -129 58 -136 b 264 -45 118 -136 194 -101 b 382 109 336 12 382 76 b 366 131 382 120 377 129 ',\n },\n noteheadBlack: {\n x_min: 0,\n x_max: 428.75,\n ha: 438,\n o: 'm 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 ',\n },\n noteheadXWhole: {\n x_min: 0,\n x_max: 598.890625,\n ha: 611,\n o: 'm 62 181 b 77 183 66 183 72 183 b 91 181 83 183 88 183 b 202 131 100 180 106 177 l 299 87 l 394 131 b 517 183 499 181 502 183 b 519 183 517 183 518 183 b 598 104 567 183 598 144 b 577 49 598 84 592 65 b 518 15 567 38 563 37 b 484 0 499 6 484 0 b 518 -16 484 -1 499 -8 b 577 -51 563 -38 567 -40 b 598 -105 592 -66 598 -86 b 519 -184 598 -145 567 -184 b 517 -184 518 -184 517 -184 b 394 -133 502 -184 499 -183 l 299 -88 l 202 -133 b 81 -184 99 -183 95 -184 b 77 -184 80 -184 78 -184 b 0 -105 29 -184 0 -145 b 20 -51 0 -86 5 -66 b 80 -16 29 -40 34 -38 b 114 -1 98 -8 114 -1 b 80 15 114 0 98 6 b 20 49 34 37 29 38 b 0 104 6 65 0 84 b 62 181 0 140 23 174 m 88 134 b 74 136 85 134 80 136 b 68 134 72 136 69 136 b 46 104 54 130 46 117 b 55 81 46 95 49 88 b 149 34 59 76 53 80 b 224 -1 190 15 224 0 b 144 -38 224 -1 187 -18 b 54 -84 59 -79 58 -79 b 46 -105 49 -90 46 -98 b 76 -137 46 -122 58 -137 b 78 -137 77 -137 77 -137 b 194 -86 87 -137 76 -141 b 298 -36 250 -58 298 -36 b 298 -36 298 -36 298 -36 b 402 -84 299 -36 345 -58 b 518 -137 522 -141 510 -137 b 521 -137 519 -137 519 -137 b 551 -105 539 -137 551 -122 b 541 -83 551 -98 548 -90 b 447 -36 537 -77 544 -81 b 374 -1 406 -16 374 -1 b 447 34 374 0 406 15 b 541 81 544 80 537 76 b 551 104 548 88 551 97 b 521 136 551 120 539 136 b 518 136 519 136 519 136 b 517 136 518 136 517 136 l 517 136 b 402 83 511 136 511 136 b 298 34 345 56 299 34 b 298 34 298 34 298 34 b 194 84 298 34 250 56 b 88 134 137 111 89 133 ',\n },\n noteheadXHalf: {\n x_min: 0,\n x_max: 406.96875,\n ha: 415,\n o: 'm 55 181 b 70 183 61 183 66 183 b 111 170 85 183 99 179 b 160 130 115 167 137 149 l 202 95 l 245 130 b 319 181 299 176 302 179 b 334 183 325 183 330 183 b 406 109 375 183 406 148 b 401 81 406 99 405 91 b 348 24 394 65 390 59 b 318 -1 332 11 318 0 b 348 -26 318 -1 332 -12 b 401 -83 390 -61 394 -66 b 406 -111 405 -93 406 -101 b 334 -184 406 -149 375 -184 b 319 -183 330 -184 325 -184 b 245 -131 302 -180 299 -177 l 202 -97 l 160 -131 b 85 -183 107 -177 103 -180 b 70 -184 80 -184 76 -184 b 0 -111 31 -184 0 -149 b 4 -83 0 -101 1 -93 b 58 -26 10 -66 16 -61 b 88 -1 74 -12 88 -1 b 58 24 88 0 74 11 b 10 69 23 54 17 59 b 0 109 2 81 0 95 b 55 181 0 142 21 173 m 83 133 b 72 136 78 136 76 136 b 57 131 66 136 61 134 b 46 109 49 126 46 117 b 50 93 46 104 47 98 b 107 45 51 91 77 70 b 160 0 137 20 160 0 b 107 -47 160 -1 137 -22 b 50 -94 77 -72 51 -93 b 46 -111 47 -99 46 -105 b 59 -134 46 -120 50 -130 b 72 -137 62 -136 68 -137 b 83 -136 76 -137 80 -136 b 144 -84 84 -134 107 -116 b 202 -36 176 -58 202 -36 b 261 -84 202 -36 230 -58 b 323 -136 299 -116 321 -134 b 334 -137 326 -136 330 -137 b 345 -134 338 -137 343 -136 b 360 -111 355 -130 360 -120 b 355 -94 360 -105 359 -99 b 299 -47 353 -93 329 -72 b 245 0 269 -22 245 -1 b 299 45 245 0 269 20 b 355 93 329 70 353 91 b 360 109 359 98 360 104 b 345 133 360 119 355 129 b 334 136 343 134 338 136 b 323 134 330 136 326 134 b 261 83 321 133 299 115 b 202 34 230 56 202 34 b 144 83 202 34 176 56 b 83 133 106 115 84 133 ',\n },\n noteheadXBlack: {\n x_min: 0,\n x_max: 406.96875,\n ha: 415,\n o: 'm 21 183 b 28 183 24 183 25 183 b 42 181 34 183 39 183 b 127 108 47 179 47 179 b 202 41 168 72 202 41 b 279 108 204 41 238 72 b 357 177 321 145 356 176 b 375 183 363 181 370 183 b 406 151 392 183 406 169 b 404 137 406 147 405 141 b 322 62 401 131 398 129 b 251 0 284 27 251 0 b 322 -63 251 -1 284 -29 b 404 -138 398 -130 401 -133 b 406 -152 405 -142 406 -148 b 375 -184 406 -170 392 -184 b 357 -179 370 -184 363 -183 b 279 -109 356 -177 321 -147 b 202 -43 238 -73 204 -43 b 127 -109 202 -43 168 -73 b 49 -179 85 -147 50 -177 b 31 -184 43 -183 36 -184 b 0 -152 13 -184 0 -170 b 2 -138 0 -148 0 -142 b 83 -63 5 -133 8 -130 b 155 0 122 -29 155 -1 b 83 62 155 0 122 27 b 8 129 43 97 10 127 b 0 151 2 136 0 144 b 21 183 0 165 8 177 ',\n },\n noteheadTriangleUpWhole: {\n x_min: 0,\n x_max: 630.203125,\n ha: 643,\n o: 'm 308 204 b 314 205 310 205 313 205 b 326 201 319 205 323 204 b 355 154 328 199 338 180 b 401 83 362 142 392 95 l 409 72 b 431 41 412 66 424 49 b 619 -174 498 -51 570 -134 b 630 -192 626 -180 630 -186 b 626 -202 630 -195 628 -199 b 616 -206 623 -205 620 -206 b 552 -188 608 -206 592 -202 b 310 -155 488 -169 392 -155 b 268 -156 295 -155 281 -155 b 77 -188 197 -161 126 -173 b 13 -206 35 -202 20 -206 b 9 -206 12 -206 10 -206 b 0 -191 2 -202 0 -197 b 8 -176 0 -186 2 -180 b 204 49 58 -136 138 -43 l 220 72 l 227 83 b 295 188 245 108 281 166 b 308 204 299 197 304 202 m 315 147 b 314 147 315 147 314 147 b 314 147 314 147 314 147 b 306 129 314 145 310 138 l 296 105 b 281 72 292 97 284 77 l 274 56 b 181 -123 247 -4 212 -72 l 174 -134 l 176 -133 b 314 -123 215 -127 272 -123 b 451 -133 356 -123 413 -127 l 454 -134 l 449 -123 b 353 56 417 -72 381 -4 l 347 72 b 332 105 344 77 336 97 l 322 129 b 315 147 318 138 315 145 ',\n },\n noteheadTriangleUpHalf: {\n x_min: 0,\n x_max: 438.28125,\n ha: 447,\n o: 'm 212 205 b 219 205 213 205 216 205 b 239 183 228 205 231 204 b 421 -163 298 40 363 -83 b 438 -191 434 -180 438 -186 b 436 -197 438 -192 438 -195 b 424 -206 434 -204 431 -206 b 406 -201 420 -206 415 -205 b 216 -156 347 -172 281 -156 b 23 -205 148 -156 80 -173 b 14 -206 20 -206 17 -206 b 0 -191 6 -206 0 -201 b 6 -176 0 -187 1 -183 b 202 192 63 -104 142 45 b 212 205 205 199 208 202 m 264 48 l 249 81 l 243 94 l 242 91 b 89 -126 208 36 137 -66 b 81 -138 85 -133 81 -138 b 81 -138 81 -138 81 -138 b 81 -138 81 -138 81 -138 b 95 -133 81 -138 87 -136 b 280 -94 156 -108 221 -94 b 334 -98 299 -94 317 -95 b 343 -99 338 -99 343 -99 b 343 -99 343 -99 343 -99 b 338 -94 343 -99 341 -97 b 264 48 318 -58 287 1 ',\n },\n noteheadTriangleUpBlack: {\n x_min: -1.359375,\n x_max: 436.921875,\n ha: 446,\n o: 'm 213 205 b 217 205 215 205 216 205 b 234 194 224 205 234 199 b 236 187 234 194 235 190 l 245 167 l 261 129 l 270 106 b 355 -61 294 54 329 -13 b 420 -163 381 -105 402 -138 b 436 -188 435 -184 436 -184 b 436 -191 436 -190 436 -190 b 421 -206 436 -201 431 -206 l 421 -206 l 416 -206 l 405 -201 b 217 -158 347 -172 283 -158 b 31 -201 153 -158 88 -172 l 20 -206 l 14 -206 l 14 -206 b 0 -191 5 -206 0 -201 b -1 -188 0 -190 -1 -190 b 14 -163 -1 -186 0 -184 b 95 -34 36 -136 72 -77 b 166 106 119 8 148 68 l 175 129 l 183 148 l 200 188 b 213 205 205 199 208 202 ',\n },\n noteheadDiamondWhole: {\n x_min: 0,\n x_max: 432.828125,\n ha: 442,\n o: 'm 208 184 b 213 187 209 186 212 187 b 224 176 217 187 221 183 b 245 147 225 172 235 159 b 419 -1 288 90 347 38 b 431 -8 424 -4 431 -8 b 432 -12 432 -9 432 -11 b 430 -18 432 -13 432 -16 b 364 -61 424 -20 383 -47 b 225 -183 307 -102 250 -152 b 223 -187 224 -184 223 -187 b 220 -188 221 -188 220 -188 b 208 -176 216 -188 210 -184 b 187 -148 205 -173 197 -159 b 12 0 144 -90 84 -38 b 0 11 4 5 0 8 b 16 24 0 13 4 18 b 183 158 83 69 141 115 b 208 184 194 169 198 173 m 183 105 b 176 113 181 109 176 113 b 172 109 176 113 175 112 b 92 45 149 90 117 62 l 88 41 l 102 31 b 247 -105 160 -6 210 -55 l 254 -115 l 257 -112 l 269 -102 b 340 -45 287 -87 319 -61 l 344 -43 l 330 -33 b 183 105 272 6 221 54 ',\n },\n noteheadDiamondHalf: {\n x_min: 0,\n x_max: 438.28125,\n ha: 447,\n o: 'm 212 190 b 219 191 213 191 216 191 b 236 176 225 191 228 190 b 419 18 277 105 341 49 b 436 5 431 13 434 11 b 438 -1 438 4 438 1 b 424 -16 438 -8 432 -13 b 356 -49 409 -20 379 -36 b 234 -180 306 -83 258 -133 b 219 -192 230 -188 224 -192 b 200 -176 213 -192 206 -187 b 9 -15 157 -102 89 -45 b 0 0 2 -12 0 -6 b 16 18 0 9 2 12 b 200 176 93 48 159 104 b 212 190 205 186 208 188 m 239 113 b 236 117 238 116 238 117 b 230 108 235 117 234 115 b 92 -15 196 58 140 8 b 88 -18 91 -16 88 -18 b 92 -20 88 -18 91 -19 b 198 -116 130 -43 166 -74 b 200 -117 200 -117 200 -117 b 201 -117 200 -117 201 -117 b 264 -43 212 -98 242 -62 b 345 15 288 -19 321 4 b 348 18 347 16 348 16 b 344 20 348 18 347 19 b 239 113 307 41 266 79 ',\n },\n noteheadDiamondBlack: {\n x_min: 0,\n x_max: 432.828125,\n ha: 442,\n o: 'm 209 186 b 213 187 210 187 212 187 b 216 187 215 187 216 187 b 224 174 216 186 220 180 b 420 -1 269 105 338 43 b 432 -12 431 -8 432 -9 b 421 -23 432 -15 432 -16 b 228 -180 345 -70 264 -137 b 219 -188 221 -188 221 -188 l 219 -188 b 208 -177 215 -188 215 -188 b 10 1 163 -106 93 -44 b 0 11 0 6 0 8 b 10 22 0 13 0 15 b 202 179 87 69 167 136 b 209 186 206 183 209 186 ',\n },\n augmentationDot: {\n x_min: 0,\n x_max: 133.390625,\n ha: 136,\n o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ',\n },\n tremolo1: {\n x_min: -206.890625,\n x_max: 428.75,\n ha: 438,\n o: 'm 389 -351 b 394 -351 390 -351 393 -351 b 428 -385 413 -351 428 -367 b 428 -394 428 -388 428 -391 b 394 -428 426 -406 421 -410 l 332 -473 l 269 -516 l 205 -560 l 141 -603 l 77 -648 l 13 -692 l -50 -737 l -114 -780 l -145 -802 b -171 -813 -157 -810 -163 -813 b -175 -813 -172 -813 -174 -813 b -206 -777 -194 -811 -206 -795 b -202 -760 -206 -771 -205 -766 b -87 -675 -197 -752 -206 -757 l -34 -639 l 83 -557 l 145 -514 l 209 -470 l 272 -427 b 389 -351 375 -356 381 -352 ',\n },\n flag8thUp: {\n x_min: -24.5,\n x_max: 317.140625,\n ha: 324,\n o: 'm -24 -161 l -24 -5 l -20 -5 b 0 -24 -9 -5 -2 -12 b 171 -315 21 -124 84 -233 b 317 -660 268 -406 317 -531 b 187 -1014 317 -782 274 -909 b 161 -1034 172 -1034 171 -1034 b 141 -1013 149 -1034 141 -1025 b 152 -991 141 -1004 142 -1002 b 266 -682 228 -899 266 -788 b 174 -430 266 -588 236 -498 b -23 -317 136 -388 66 -348 b -24 -161 -23 -316 -24 -285 ',\n },\n flag8thDown: {\n x_min: -21.78125,\n x_max: 367.5,\n ha: 375,\n o: 'm 230 1031 b 238 1032 232 1032 235 1032 b 259 1014 245 1032 251 1027 b 367 662 330 906 367 782 b 364 602 367 641 367 621 b 232 317 352 488 304 384 b 57 120 155 245 103 187 b -1 18 31 84 6 40 b -19 4 -4 11 -12 4 l -21 4 l -21 159 l -21 315 l -16 315 b 96 335 10 315 62 324 b 315 695 227 380 315 527 b 313 738 315 709 314 724 b 224 991 304 825 273 916 b 216 1013 219 999 216 1007 b 230 1031 216 1021 220 1028 ',\n },\n flag16thUp: {\n x_min: -24.5,\n x_max: 317.140625,\n ha: 324,\n o: 'm -24 -147 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 58 -123 6 -43 31 -86 b 196 -278 93 -173 134 -219 b 317 -570 274 -356 317 -460 b 294 -713 317 -617 308 -666 l 289 -724 l 294 -735 b 317 -873 308 -780 317 -827 b 235 -1132 317 -963 288 -1054 b 209 -1165 228 -1140 224 -1146 b 189 -1177 204 -1172 196 -1177 b 171 -1164 182 -1177 175 -1172 b 168 -1154 170 -1161 168 -1159 b 181 -1132 168 -1149 172 -1142 b 269 -891 238 -1064 269 -975 b 269 -881 269 -886 269 -884 b 262 -814 269 -857 265 -827 b 258 -800 261 -811 259 -806 b 142 -628 240 -731 198 -667 b -8 -589 112 -606 47 -589 b -20 -589 -13 -589 -19 -589 l -24 -589 l -24 -449 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 58 -424 6 -345 31 -388 b 194 -580 93 -476 136 -523 b 259 -660 221 -606 245 -635 b 261 -663 259 -662 261 -663 b 264 -656 262 -663 262 -660 b 269 -587 268 -632 269 -610 b 264 -521 269 -566 268 -544 b 262 -512 264 -517 262 -513 b 258 -498 261 -509 259 -503 b 142 -326 240 -428 198 -365 b -8 -287 112 -303 47 -288 b -20 -287 -13 -287 -19 -287 l -24 -287 l -24 -147 ',\n },\n flag16thDown: {\n x_min: -21.78125,\n x_max: 362.0625,\n ha: 369,\n o: 'm 302 1031 b 308 1032 304 1032 307 1032 b 330 1016 318 1032 325 1027 b 362 867 351 970 362 920 b 340 738 362 824 353 780 l 336 727 l 340 717 b 362 591 355 677 362 634 b 257 323 362 496 325 401 b 204 272 243 306 227 290 b 20 56 129 206 66 133 b -1 18 12 44 0 22 b -19 4 -4 9 -12 4 l -21 4 l -21 140 l -21 276 l -12 277 b 167 333 61 288 127 309 b 319 598 262 388 319 491 b 311 664 319 620 317 642 l 310 673 l 304 664 b 204 548 279 620 250 587 b 20 333 129 483 66 409 b -1 292 12 320 0 298 b -19 280 -4 285 -12 280 l -21 280 l -21 416 l -21 552 l -12 553 b 167 609 61 564 127 585 b 319 874 264 666 319 770 b 294 992 319 914 311 954 b 288 1011 288 1004 288 1007 b 302 1031 288 1021 294 1028 ',\n },\n flag32ndUp: {\n x_min: -24.5,\n x_max: 315.78125,\n ha: 322,\n o: 'm -24 -145 l -24 -5 l -20 -5 b 1 -26 -10 -5 -6 -9 b 175 -241 31 -86 96 -166 b 314 -548 259 -323 304 -420 b 315 -589 315 -555 315 -571 b 314 -630 315 -606 315 -623 b 298 -730 311 -664 306 -699 l 295 -742 l 296 -748 b 314 -850 304 -778 311 -813 b 315 -892 315 -857 315 -874 b 314 -932 315 -909 315 -925 b 298 -1032 311 -967 306 -1002 l 295 -1045 l 296 -1050 b 314 -1153 304 -1081 311 -1115 b 315 -1193 315 -1160 315 -1177 b 314 -1235 315 -1211 315 -1228 b 217 -1526 306 -1338 270 -1444 b 201 -1533 213 -1532 208 -1533 b 182 -1522 193 -1533 185 -1529 b 179 -1514 181 -1518 179 -1517 b 189 -1489 179 -1508 182 -1501 b 266 -1217 240 -1403 266 -1308 b 262 -1156 266 -1196 265 -1177 b 110 -907 247 -1043 190 -950 b 0 -889 87 -895 50 -889 l -1 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 1 -631 -10 -610 -6 -614 b 175 -846 31 -691 96 -771 b 259 -956 213 -884 236 -914 b 265 -966 262 -961 264 -966 b 265 -966 265 -966 265 -966 b 265 -953 265 -964 265 -959 b 266 -920 266 -943 266 -932 b 262 -853 266 -898 265 -873 b 110 -605 247 -741 190 -648 b 0 -587 87 -592 50 -587 l -1 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 1 -328 -10 -308 -6 -312 b 175 -544 31 -388 96 -469 b 259 -655 213 -581 236 -612 b 265 -663 262 -659 264 -663 b 265 -663 265 -663 265 -663 b 265 -650 265 -663 265 -657 b 266 -617 266 -641 266 -630 b 262 -551 266 -595 265 -570 b 110 -303 247 -438 190 -345 b 0 -284 87 -290 50 -284 l -1 -284 l -24 -284 l -24 -145 ',\n },\n flag32ndDown: {\n x_min: -21.78125,\n x_max: 366.140625,\n ha: 374,\n o: 'm 276 1378 b 284 1379 279 1379 281 1379 b 306 1360 292 1379 298 1374 b 352 1247 326 1326 343 1286 b 366 1139 362 1213 366 1175 b 347 1009 366 1093 359 1049 l 344 1002 l 347 992 b 352 971 348 986 351 977 b 366 863 362 936 366 899 b 347 732 366 818 359 773 l 344 725 l 347 716 b 352 695 348 710 351 700 b 366 588 362 659 366 623 b 223 262 366 464 314 345 b 189 233 212 252 212 252 b 35 76 126 183 73 129 b -1 16 20 56 2 27 b -19 4 -4 9 -12 4 l -21 4 l -21 137 l -21 270 l -17 270 b 186 344 59 281 134 308 b 319 606 270 399 319 499 b 317 650 319 620 319 635 l 315 659 l 314 655 b 223 537 288 607 258 570 b 189 509 212 528 212 528 b 35 352 126 459 73 405 b -1 292 20 333 2 303 b -19 280 -4 285 -12 280 l -21 280 l -21 413 l -21 546 l -17 546 b 186 620 59 557 134 584 b 319 882 270 675 319 775 b 317 925 319 896 319 911 l 315 935 l 314 931 b 223 813 288 884 258 846 b 189 785 212 805 212 805 b 35 628 126 735 73 681 b -1 569 20 609 2 580 b -19 556 -4 562 -12 556 l -21 556 l -21 689 l -21 823 l -17 823 b 202 907 68 835 152 867 b 319 1157 280 968 319 1061 b 270 1338 319 1218 303 1281 b 262 1358 264 1349 262 1353 b 262 1364 262 1360 262 1363 b 276 1378 265 1371 269 1376 ',\n },\n flag64thUp: {\n x_min: -24.5,\n x_max: 314.421875,\n ha: 321,\n o: 'm -24 -145 l -24 -5 l -20 -5 b 0 -23 -9 -5 -2 -12 b 27 -87 4 -38 14 -66 b 138 -220 53 -136 88 -177 b 235 -328 179 -255 208 -288 b 314 -592 287 -409 314 -501 b 292 -732 314 -639 307 -687 l 289 -742 l 294 -756 b 314 -896 307 -802 314 -849 b 292 -1035 314 -943 307 -991 l 289 -1045 l 294 -1057 b 314 -1197 307 -1104 314 -1152 b 292 -1338 314 -1246 307 -1292 l 289 -1347 l 294 -1360 b 314 -1500 307 -1407 314 -1454 b 273 -1689 314 -1565 300 -1628 b 250 -1712 265 -1710 261 -1712 b 228 -1691 236 -1712 228 -1704 l 228 -1685 l 234 -1675 b 270 -1507 258 -1621 270 -1564 b 98 -1193 270 -1381 209 -1261 b 40 -1174 76 -1179 58 -1174 b -10 -1189 24 -1174 8 -1178 b -20 -1192 -14 -1192 -16 -1192 l -24 -1192 l -24 -1052 l -24 -913 l -20 -913 b 0 -931 -9 -913 -2 -920 b 27 -995 4 -946 14 -974 b 138 -1128 53 -1043 88 -1085 b 257 -1275 190 -1172 228 -1220 b 262 -1283 259 -1279 262 -1283 l 262 -1283 b 269 -1249 264 -1282 268 -1260 b 270 -1206 270 -1233 270 -1220 b 98 -891 270 -1075 206 -957 b 40 -871 76 -877 58 -871 b -10 -886 24 -871 8 -875 b -20 -889 -14 -889 -16 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 0 -628 -9 -610 -2 -617 b 27 -692 4 -644 14 -671 b 138 -825 53 -741 88 -782 b 257 -973 190 -870 228 -917 b 262 -981 259 -977 262 -981 l 262 -981 b 269 -946 264 -979 268 -957 b 270 -903 270 -931 270 -917 b 98 -588 270 -774 206 -655 b 40 -569 76 -574 58 -569 b -10 -584 24 -569 8 -574 b -20 -587 -14 -587 -16 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 0 -326 -9 -308 -2 -315 b 27 -390 4 -341 14 -369 b 138 -523 53 -438 88 -480 b 257 -670 190 -567 228 -614 b 262 -678 259 -674 262 -678 b 262 -678 262 -678 262 -678 b 269 -644 264 -677 268 -656 b 270 -601 270 -628 270 -614 b 98 -285 270 -471 206 -352 b 40 -266 76 -273 58 -266 b -10 -281 24 -266 8 -272 b -20 -284 -14 -284 -16 -284 l -24 -284 l -24 -145 ',\n },\n flag64thDown: {\n x_min: -21.78125,\n x_max: 367.5,\n ha: 375,\n o: 'm 259 1553 b 265 1553 261 1553 264 1553 b 288 1540 272 1553 277 1550 b 367 1351 340 1493 367 1424 b 336 1221 367 1308 357 1263 l 332 1211 l 333 1208 b 367 1077 356 1170 367 1124 b 336 945 367 1032 357 986 l 332 935 l 333 932 b 367 800 356 893 367 848 b 336 669 367 756 357 710 l 332 659 l 333 656 b 367 523 356 617 367 571 b 345 412 367 485 360 446 b 231 273 322 356 284 310 b -1 19 121 195 27 93 b -17 4 -4 11 -10 5 l -21 4 l -21 134 l -21 265 l -17 265 b 133 291 20 265 96 278 b 318 537 245 328 318 433 b 307 603 318 559 315 582 b 303 614 304 612 304 614 b 298 609 302 614 300 613 b 231 549 281 589 258 567 b -1 295 121 471 27 369 b -17 280 -4 287 -10 281 l -21 280 l -21 410 l -21 541 l -17 541 b 133 567 20 541 96 555 b 318 813 245 605 318 709 b 307 880 318 835 315 859 b 303 891 304 888 304 891 b 298 885 302 891 300 888 b 231 825 281 866 258 843 b -1 571 121 748 27 645 b -17 556 -4 563 -10 557 l -21 556 l -21 687 l -21 817 l -17 817 b 133 843 20 817 96 830 b 318 1089 245 881 318 985 b 307 1156 318 1111 315 1134 b 303 1167 304 1164 304 1167 b 298 1161 302 1167 300 1164 b 231 1102 281 1140 258 1120 b -1 848 121 1024 27 921 b -17 832 -4 839 -10 834 l -21 832 l -21 963 l -21 1093 l -17 1093 b 114 1113 12 1093 78 1103 b 313 1314 215 1142 289 1218 b 318 1364 317 1331 318 1347 b 255 1511 318 1422 295 1478 b 243 1532 247 1519 243 1525 b 259 1553 243 1540 250 1550 ',\n },\n flag128thUp: {\n x_min: -24.5,\n x_max: 313.0625,\n ha: 319,\n o: 'm -24 -133 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 142 -213 13 -61 74 -144 b 258 -376 196 -269 230 -315 b 313 -605 295 -449 313 -528 b 292 -742 313 -652 306 -699 b 288 -752 289 -748 288 -752 b 288 -752 288 -752 288 -752 b 292 -764 289 -753 291 -757 b 313 -907 306 -811 313 -860 b 292 -1045 313 -954 306 -1002 b 288 -1054 289 -1050 288 -1054 b 288 -1054 288 -1054 288 -1054 b 292 -1067 289 -1054 291 -1060 b 313 -1210 306 -1113 313 -1161 b 292 -1346 313 -1257 306 -1304 b 288 -1357 289 -1353 288 -1357 b 288 -1357 288 -1357 288 -1357 b 292 -1368 289 -1357 291 -1363 b 313 -1512 306 -1415 313 -1464 b 292 -1648 313 -1560 306 -1605 b 288 -1660 289 -1654 288 -1660 b 288 -1660 288 -1660 288 -1660 b 292 -1671 289 -1660 291 -1665 b 313 -1814 306 -1719 313 -1766 b 250 -2040 313 -1897 291 -1977 b 232 -2062 238 -2057 236 -2059 b 221 -2065 230 -2063 225 -2065 b 200 -2045 210 -2065 201 -2057 b 200 -2043 200 -2044 200 -2044 b 208 -2026 200 -2037 202 -2034 b 269 -1826 249 -1966 269 -1897 b 153 -1544 269 -1726 230 -1625 b -9 -1472 115 -1506 58 -1481 b -21 -1471 -14 -1471 -19 -1471 l -24 -1471 l -24 -1343 l -24 -1215 l -20 -1215 b -1 -1229 -12 -1215 -4 -1221 b 142 -1424 13 -1270 74 -1353 b 257 -1582 196 -1478 228 -1524 b 264 -1594 261 -1589 264 -1594 l 264 -1594 b 265 -1582 264 -1594 264 -1589 b 270 -1525 268 -1562 270 -1544 b 153 -1243 270 -1424 228 -1321 b -9 -1170 115 -1203 58 -1178 b -21 -1168 -14 -1170 -19 -1168 l -24 -1168 l -24 -1041 l -24 -913 l -20 -913 b -1 -927 -12 -913 -4 -918 b 142 -1121 13 -967 74 -1050 b 257 -1281 196 -1175 228 -1221 b 264 -1292 261 -1286 264 -1292 l 264 -1292 b 265 -1279 264 -1292 264 -1286 b 270 -1222 268 -1261 270 -1242 b 153 -941 270 -1121 228 -1018 b -9 -867 115 -900 58 -875 b -21 -866 -14 -867 -19 -866 l -24 -866 l -24 -738 l -24 -610 l -20 -610 b -1 -624 -12 -610 -4 -616 b 142 -818 13 -664 74 -749 b 257 -978 196 -873 228 -918 b 264 -989 261 -984 264 -989 l 264 -989 b 265 -977 264 -989 264 -984 b 270 -920 268 -959 270 -939 b 153 -638 270 -818 228 -716 b -9 -564 115 -598 58 -573 b -21 -563 -14 -564 -19 -563 l -24 -563 l -24 -435 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 142 -516 13 -363 74 -446 b 257 -675 196 -571 228 -616 b 264 -687 261 -681 264 -687 l 264 -687 b 265 -674 264 -687 264 -681 b 270 -617 268 -656 270 -637 b 153 -335 270 -516 228 -413 b -9 -262 115 -295 58 -270 b -21 -260 -14 -262 -19 -260 l -24 -260 l -24 -133 ',\n },\n flag128thDown: {\n x_min: -21.78125,\n x_max: 367.5,\n ha: 375,\n o: 'm 276 1900 b 284 1901 279 1900 281 1901 b 306 1883 291 1901 298 1896 b 367 1686 347 1825 367 1757 b 343 1558 367 1643 359 1600 l 338 1549 l 343 1537 b 367 1411 359 1497 367 1454 b 343 1282 367 1367 359 1324 l 338 1272 l 343 1261 b 367 1135 359 1221 367 1178 b 343 1007 367 1090 359 1047 l 338 996 l 343 985 b 367 859 359 945 367 902 b 343 731 367 814 359 771 l 338 720 l 343 709 b 367 582 359 667 367 626 b 289 362 367 503 340 426 b 239 312 276 345 259 330 b 29 77 152 237 76 152 b -1 18 14 54 2 30 b -19 4 -4 11 -12 4 l -21 4 l -21 133 l -20 260 l -13 262 b 98 299 17 269 62 284 b 111 305 103 302 110 305 b 167 334 123 310 156 327 b 319 595 264 391 319 491 b 313 659 319 616 318 638 b 310 667 311 664 311 667 b 307 663 310 667 308 666 b 240 588 289 637 269 614 b 16 331 141 505 62 413 b -1 294 8 316 1 302 b -19 280 -4 287 -12 280 l -21 280 l -21 408 l -20 537 l -13 538 b 98 576 17 545 62 560 b 111 581 103 578 110 581 b 167 610 123 587 156 603 b 319 871 264 667 319 767 b 313 935 319 892 318 913 b 310 942 311 941 311 942 b 307 939 310 942 308 941 b 240 864 289 913 269 889 b 16 607 141 781 62 689 b -1 570 8 592 1 578 b -19 556 -4 563 -12 556 l -21 556 l -21 684 l -20 813 l -13 814 b 98 852 17 821 62 836 b 111 857 103 855 110 857 b 167 886 123 863 156 880 b 319 1147 264 943 319 1043 b 313 1211 319 1168 318 1189 b 310 1218 311 1217 311 1218 b 307 1215 310 1218 308 1217 b 240 1140 289 1188 269 1165 b 16 884 141 1057 62 966 b -1 846 8 868 1 855 b -19 832 -4 839 -12 832 l -21 832 l -21 960 l -20 1089 l -13 1090 b 98 1128 17 1097 62 1111 b 111 1134 103 1131 110 1134 b 167 1163 123 1139 156 1156 b 319 1424 264 1220 319 1320 b 313 1486 319 1444 318 1465 b 310 1494 311 1493 311 1494 b 307 1492 310 1494 308 1493 b 240 1417 289 1464 269 1442 b 16 1160 141 1333 62 1242 b -1 1121 8 1145 1 1131 b -19 1109 -4 1115 -12 1109 l -21 1109 l -21 1236 l -20 1365 l -13 1367 b 98 1404 17 1374 62 1388 b 111 1410 103 1407 110 1410 b 250 1508 172 1437 215 1467 b 319 1701 296 1564 319 1633 b 270 1859 319 1757 303 1814 b 262 1882 265 1868 262 1875 b 276 1900 262 1890 266 1896 ',\n },\n accidentalFlat: {\n x_min: -21.78125,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalNatural: {\n x_min: 0,\n x_max: 239.5625,\n ha: 244,\n o: 'm 10 460 b 20 462 13 462 14 462 b 39 449 28 462 35 458 l 40 446 l 40 326 b 40 205 40 259 40 205 b 127 227 40 205 80 215 b 220 249 196 244 213 249 b 227 247 224 249 225 248 b 238 237 231 245 235 241 l 239 233 l 239 -106 l 239 -448 l 238 -451 b 219 -463 234 -459 225 -463 b 198 -451 210 -463 202 -459 l 197 -448 l 197 -324 b 197 -201 197 -248 197 -201 b 110 -223 196 -201 157 -210 b 17 -245 42 -240 24 -245 b 10 -242 13 -245 13 -244 b 0 -233 6 -241 2 -237 l 0 -230 l 0 108 l 0 446 l 0 449 b 10 460 2 453 6 458 m 197 22 b 197 70 197 41 197 58 b 196 116 197 113 197 116 l 196 116 b 118 97 196 116 160 106 l 40 77 l 40 -18 b 40 -112 40 -69 40 -112 l 119 -93 l 197 -73 l 197 22 ',\n },\n accidentalSharp: {\n x_min: 0,\n x_max: 323.9375,\n ha: 331,\n o: 'm 217 535 b 225 537 220 537 221 537 b 245 524 235 537 242 533 l 246 521 l 247 390 l 247 258 l 273 265 b 306 270 288 269 299 270 b 322 259 315 270 319 267 b 323 208 323 256 323 233 b 322 158 323 184 323 159 b 288 140 318 148 315 147 b 247 130 254 131 247 130 b 247 65 247 130 247 104 b 247 20 247 51 247 36 l 247 -88 l 273 -81 b 306 -76 289 -77 299 -76 b 318 -81 311 -76 315 -77 b 323 -123 323 -87 323 -86 l 323 -138 l 323 -154 b 318 -195 323 -191 323 -190 b 269 -210 314 -199 315 -199 b 249 -216 259 -213 250 -216 l 247 -216 l 247 -349 l 246 -483 l 245 -487 b 225 -499 242 -495 234 -499 b 206 -487 219 -499 210 -495 l 205 -483 l 205 -355 l 205 -227 l 204 -227 l 181 -233 l 138 -244 b 117 -249 127 -247 117 -249 b 115 -385 115 -249 115 -256 l 115 -523 l 114 -526 b 95 -538 110 -534 102 -538 b 74 -526 87 -538 78 -534 l 73 -523 l 73 -391 b 72 -260 73 -269 73 -260 b 72 -260 72 -260 72 -260 b 19 -273 61 -263 23 -273 b 0 -260 10 -273 4 -267 b 0 -209 0 -256 0 -256 l 0 -162 l 1 -158 b 61 -134 5 -148 5 -148 l 73 -131 l 73 -22 b 72 86 73 79 73 86 b 72 86 72 86 72 86 b 19 74 61 83 23 74 b 0 86 10 74 4 79 b 0 137 0 90 0 90 l 0 184 l 1 188 b 61 212 5 198 5 198 l 73 215 l 73 348 l 73 481 l 74 485 b 95 498 78 492 87 498 b 103 495 98 498 100 496 b 114 485 107 494 111 489 l 115 481 l 115 353 l 115 226 l 121 226 b 159 235 123 227 141 231 l 198 247 l 205 248 l 205 384 l 205 521 l 206 524 b 217 535 209 528 212 533 m 205 9 b 205 119 205 70 205 119 l 205 119 b 182 113 204 119 194 116 l 138 102 b 117 97 127 99 117 97 b 115 -12 115 97 115 91 l 115 -122 l 121 -120 b 159 -111 123 -119 141 -115 l 198 -101 l 205 -98 l 205 9 ',\n },\n accidentalDoubleSharp: {\n x_min: 0,\n x_max: 367.5,\n ha: 375,\n o: 'm 0 124 l 0 187 l 61 187 l 122 187 l 122 138 l 122 91 l 153 61 l 183 30 l 213 61 l 243 91 l 243 138 l 243 187 l 306 187 l 367 187 l 367 124 l 367 61 l 321 61 l 274 61 l 243 30 l 213 0 l 243 -31 l 274 -62 l 321 -62 l 367 -62 l 367 -124 l 367 -188 l 306 -188 l 243 -188 l 243 -140 l 243 -93 l 213 -62 l 183 -31 l 153 -62 l 122 -93 l 122 -140 l 122 -188 l 61 -188 l 0 -188 l 0 -124 l 0 -62 l 46 -62 l 92 -62 l 123 -31 l 153 0 l 123 30 l 92 61 l 46 61 l 0 61 l 0 124 ',\n },\n accidentalDoubleFlat: {\n x_min: -21.78125,\n x_max: 483.1875,\n ha: 493,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 179 164 199 187 192 l 210 176 l 210 396 l 210 617 l 212 621 b 231 632 216 628 223 632 b 250 620 239 632 247 628 b 251 383 251 616 251 616 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 ',\n },\n accidentalParensLeft: {\n x_min: -166.0625,\n x_max: -25.859375,\n ha: 0,\n o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ',\n },\n accidentalParensRight: {\n x_min: 25.859375,\n x_max: 164.6875,\n ha: 168,\n o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ',\n },\n accidentalQuarterToneFlatStein: {\n x_min: 0,\n x_max: 272.21875,\n ha: 278,\n o: 'm 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 ',\n },\n accidentalThreeQuarterTonesFlatZimmermann: {\n x_min: 0,\n x_max: 607.0625,\n ha: 619,\n o: 'm 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 m 347 631 b 353 632 348 632 351 632 b 374 620 363 632 371 628 b 375 383 375 616 375 616 l 375 148 l 377 151 b 492 199 415 183 454 199 b 537 191 507 199 522 197 b 607 84 582 176 607 134 b 583 0 607 58 598 29 b 455 -142 562 -40 533 -72 l 378 -215 b 355 -229 364 -229 362 -229 b 334 -216 345 -229 337 -224 l 333 -212 l 333 201 l 333 616 l 334 620 b 347 631 337 624 341 630 m 465 131 b 451 133 461 133 455 133 b 445 133 449 133 446 133 b 379 87 419 129 396 113 l 375 80 l 375 -37 l 375 -156 l 378 -152 b 499 81 451 -72 499 20 l 499 83 b 465 131 499 113 490 126 ',\n },\n accidentalQuarterToneSharpStein: {\n x_min: 0,\n x_max: 193.28125,\n ha: 197,\n o: 'm 85 514 b 95 517 88 517 89 517 b 114 505 103 517 110 513 l 115 502 l 115 376 b 115 249 115 306 115 249 b 141 258 117 249 127 252 l 167 266 l 172 266 b 190 254 181 265 187 262 l 193 251 l 193 202 l 193 188 b 187 147 193 149 191 152 b 147 130 183 142 182 141 l 115 119 l 115 9 b 115 -99 115 -51 115 -99 b 141 -91 115 -99 127 -95 b 171 -81 166 -81 167 -81 l 171 -81 b 191 -94 181 -81 189 -87 b 193 -142 191 -97 193 -120 b 191 -195 193 -167 191 -194 b 125 -227 187 -205 187 -204 l 115 -230 l 115 -366 l 115 -503 l 114 -506 b 95 -519 110 -514 102 -519 b 74 -506 87 -519 78 -514 l 73 -503 l 73 -374 b 73 -245 73 -260 73 -245 b 73 -245 73 -245 73 -245 b 55 -252 72 -245 63 -249 l 32 -260 b 19 -263 27 -262 23 -263 b 4 -256 13 -263 8 -260 b 0 -215 0 -251 0 -254 b 0 -199 0 -210 0 -206 l 0 -152 l 1 -149 b 8 -140 2 -145 5 -141 b 42 -127 9 -140 24 -133 l 73 -116 l 73 -5 b 73 23 73 4 73 15 b 73 105 73 70 73 105 b 49 97 73 105 61 101 b 17 88 32 91 23 88 b 4 95 10 88 8 91 b 0 137 0 101 0 98 b 0 151 0 141 0 145 l 0 199 l 1 202 b 43 224 5 212 5 212 l 73 234 l 73 367 l 73 502 l 74 505 b 85 514 77 509 81 513 ',\n },\n accidentalThreeQuarterTonesSharpStein: {\n x_min: -1.359375,\n x_max: 455.96875,\n ha: 465,\n o: 'm 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 ',\n },\n accidentalBuyukMucennebFlat: {\n x_min: -171.5,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalBakiyeFlat: {\n x_min: -176.9375,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalKomaSharp: {\n x_min: -1.359375,\n x_max: 455.96875,\n ha: 465,\n o: 'm 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 ',\n },\n accidentalKucukMucennebSharp: {\n x_min: -1.359375,\n x_max: 255.890625,\n ha: 261,\n o: 'm 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 ',\n },\n articAccentAbove: {\n x_min: -348.4375,\n x_max: 24.5,\n ha: 25,\n o: 'm -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 ',\n },\n articAccentBelow: {\n x_min: -348.4375,\n x_max: 24.5,\n ha: 25,\n o: 'm -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 ',\n },\n articTenutoAbove: {\n x_min: 0,\n x_max: 318.5,\n ha: 325,\n o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ',\n },\n articTenutoBelow: {\n x_min: 0,\n x_max: 318.5,\n ha: 325,\n o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ',\n },\n articStaccatoAbove: {\n x_min: 0,\n x_max: 133.390625,\n ha: 136,\n o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ',\n },\n articStaccatoBelow: {\n x_min: 0,\n x_max: 133.390625,\n ha: 136,\n o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ',\n },\n articStaccatissimoAbove: {\n x_min: -73.5,\n x_max: 72.140625,\n ha: 74,\n o: 'm -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 ',\n },\n articStaccatissimoBelow: {\n x_min: -73.5,\n x_max: 72.140625,\n ha: 74,\n o: 'm -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 ',\n },\n articMarcatoAbove: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 ',\n },\n articMarcatoBelow: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 ',\n },\n fermataAbove: {\n x_min: -442.359375,\n x_max: 441,\n ha: 450,\n o: 'm -31 487 b -1 488 -21 488 -10 488 b 434 104 216 488 397 330 b 441 27 438 79 441 47 b 439 12 441 20 439 15 b 419 0 435 4 427 0 b 404 5 413 0 408 1 b 398 30 400 11 398 13 b 0 351 390 213 213 351 b -59 348 -20 351 -39 349 b -400 30 -251 324 -393 191 b -405 5 -400 13 -401 11 b -420 0 -409 1 -415 0 b -441 12 -428 0 -436 4 b -442 27 -441 15 -442 20 b -435 104 -442 47 -439 79 b -31 487 -401 316 -235 474 m -13 131 b -1 133 -9 133 -5 133 b 51 105 19 133 39 123 b 61 70 58 95 61 83 b 51 34 61 58 58 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -57 38 -62 54 b -13 131 -62 98 -44 124 ',\n },\n fermataBelow: {\n x_min: -441,\n x_max: 439.640625,\n ha: 449,\n o: 'm -428 -2 b -421 0 -427 -1 -424 0 b -406 -6 -416 0 -409 -2 b -400 -31 -401 -12 -400 -15 b -1 -352 -392 -215 -215 -352 b 58 -349 19 -352 38 -351 b 398 -31 250 -326 392 -192 b 404 -6 398 -15 400 -12 b 419 -1 408 -2 413 -1 b 439 -13 427 -1 435 -5 b 439 -29 439 -16 439 -22 b 434 -105 439 -48 438 -80 b 0 -489 397 -333 213 -489 b -68 -484 -23 -489 -44 -488 b -441 -36 -280 -452 -436 -263 b -441 -30 -441 -34 -441 -31 b -428 -2 -441 -11 -439 -5 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -57 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ',\n },\n fermataLongAbove: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -378 502 l -374 503 l 0 503 l 372 503 l 377 502 b 387 491 381 499 385 496 l 389 488 l 389 251 l 389 15 l 387 12 b 367 0 383 4 375 0 b 348 12 360 0 352 4 l 347 15 l 347 174 l 347 335 l 0 335 l -348 335 l -348 174 l -348 15 l -349 12 b -368 0 -353 4 -362 0 b -389 12 -377 0 -385 4 l -390 15 l -390 251 l -390 488 l -389 491 b -378 502 -386 496 -382 499 m -13 131 b -1 133 -9 133 -5 133 b 50 105 19 133 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -58 38 -62 55 b -13 131 -62 98 -44 124 ',\n },\n fermataLongBelow: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -378 -2 b -368 -1 -375 -1 -374 -1 b -349 -13 -360 -1 -353 -5 l -348 -16 l -348 -176 l -348 -337 l 0 -337 l 347 -337 l 347 -176 l 347 -16 l 348 -13 b 367 0 352 -5 360 0 b 387 -13 375 0 383 -5 l 389 -16 l 389 -252 l 389 -489 l 387 -492 b 377 -503 385 -498 381 -501 l 372 -505 l 0 -505 l -374 -505 l -378 -503 b -389 -492 -382 -501 -386 -498 l -390 -489 l -390 -252 l -390 -16 l -389 -13 b -378 -2 -386 -8 -382 -4 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -58 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ',\n },\n fermataVeryLongAbove: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -378 573 l -374 576 l 0 576 l 372 576 l 377 573 b 387 563 381 571 385 567 l 389 559 l 389 287 l 389 15 l 387 12 b 367 0 383 4 375 0 b 348 12 360 0 352 4 l 347 15 l 347 210 l 347 406 l 0 406 l -348 406 l -348 210 l -348 15 l -349 12 b -368 0 -353 4 -362 0 b -389 12 -377 0 -385 4 l -390 15 l -390 287 l -390 559 l -389 563 b -378 573 -386 567 -382 571 m -274 337 l -270 338 l 0 338 l 269 338 l 273 337 b 284 326 279 334 281 330 l 285 323 l 285 169 l 285 15 l 284 12 b 265 -1 280 4 272 -1 b 245 12 257 -1 249 4 l 245 15 l 243 108 l 243 201 l 0 201 l -245 201 l -245 108 l -245 15 l -246 12 b -266 -1 -250 4 -258 -1 b -285 12 -273 -1 -281 4 l -287 15 l -287 169 l -287 323 l -285 326 b -274 337 -283 330 -280 334 m -13 131 b -1 133 -9 133 -5 133 b 50 105 19 133 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -58 38 -62 55 b -13 131 -62 98 -44 124 ',\n },\n fermataVeryLongBelow: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -378 -2 b -368 -1 -375 -1 -374 -1 b -349 -13 -360 -1 -353 -5 l -348 -16 l -348 -212 l -348 -408 l 0 -408 l 347 -408 l 347 -212 l 347 -16 l 348 -13 b 367 0 352 -5 360 0 b 387 -13 375 0 383 -5 l 389 -16 l 389 -288 l 389 -560 l 387 -564 b 377 -574 385 -569 381 -573 l 372 -577 l 0 -577 l -374 -577 l -378 -574 b -389 -564 -382 -573 -386 -569 l -390 -560 l -390 -288 l -390 -16 l -389 -13 b -378 -2 -386 -8 -382 -4 m -274 -2 b -266 -1 -272 -1 -270 -1 b -246 -13 -257 -1 -250 -5 l -245 -16 l -245 -109 l -245 -202 l 0 -202 l 243 -202 l 243 -109 l 245 -16 l 245 -13 b 265 0 249 -5 257 0 b 284 -13 272 0 280 -5 l 285 -16 l 285 -170 l 285 -324 l 284 -327 b 273 -338 281 -331 279 -335 l 269 -340 l 0 -340 l -270 -340 l -274 -338 b -285 -327 -280 -335 -283 -331 l -287 -324 l -287 -170 l -287 -16 l -285 -13 b -274 -2 -283 -8 -280 -4 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -58 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ',\n },\n fermataShortAbove: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -9 650 b -1 652 -6 650 -4 652 b 19 639 6 652 13 648 l 23 631 b 28 623 24 628 27 626 l 34 614 l 39 606 l 43 598 l 49 588 l 54 580 l 59 571 l 65 563 l 69 555 l 74 546 l 80 537 l 85 528 b 89 520 87 526 89 523 l 95 512 l 100 503 l 106 494 l 111 487 l 115 478 l 121 470 l 126 462 l 130 453 l 136 445 l 141 437 l 147 427 l 151 419 l 156 410 l 161 402 l 167 394 l 172 385 l 176 376 b 182 367 179 374 181 370 l 187 359 l 193 351 l 198 342 l 202 334 l 208 326 l 212 317 l 217 309 l 223 301 l 228 292 l 234 284 l 238 274 l 243 266 l 249 258 l 254 249 l 259 241 l 264 233 l 269 224 b 274 216 270 222 273 217 l 280 206 l 285 198 l 295 180 l 299 174 l 304 165 l 310 156 l 315 148 l 321 140 l 325 131 l 330 123 l 336 113 l 341 105 l 347 97 l 351 88 l 356 80 l 360 72 b 364 66 362 70 363 68 b 370 58 366 65 368 61 l 379 41 b 389 19 386 31 389 24 b 382 4 389 13 386 8 b 347 0 377 0 378 0 b 337 0 344 0 340 0 b 336 0 336 0 336 0 b 287 11 294 0 294 0 l 281 19 l 276 27 l 272 37 l 266 45 l 261 54 l 255 62 l 250 70 l 246 79 l 240 87 l 235 97 l 230 105 l 224 113 l 220 122 l 215 130 l 209 140 l 204 148 l 200 155 l 194 163 b 189 172 193 165 191 169 l 185 180 l 179 188 l 174 198 l 168 206 l 163 215 l 159 223 l 153 231 l 148 240 l 142 249 l 138 258 l 133 266 l 127 274 l 122 283 l 117 292 l 111 301 l 107 308 l 102 316 b 98 324 102 317 99 322 l 92 333 l 87 341 l 81 349 l 77 359 l 72 367 l 66 376 l 61 384 l 55 392 l 51 401 l 46 410 l 40 419 l 35 427 l 31 435 l 24 444 l 20 453 l 14 460 l 10 469 b 5 477 9 470 6 474 l 0 485 l -5 494 l -9 502 l -14 512 b -20 519 -16 513 -19 517 l -24 526 l -28 534 b -31 537 -29 535 -31 537 b -35 533 -32 537 -32 535 l -88 444 l -187 280 l -285 117 l -343 23 b -362 1 -352 6 -356 2 b -368 0 -364 0 -367 0 b -390 20 -381 0 -390 8 l -390 20 b -359 77 -390 27 -390 27 l -80 539 l -25 631 b -9 650 -17 644 -13 648 m -13 133 b -1 134 -9 133 -5 134 b 50 105 19 134 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 70 -57 40 -62 55 b -13 133 -62 98 -44 126 ',\n },\n fermataShortBelow: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -377 -1 b -368 0 -375 -1 -372 0 b -362 -1 -366 0 -363 -1 b -343 -24 -356 -4 -352 -8 l -285 -119 l -187 -280 l -88 -444 l -35 -533 b -31 -538 -32 -537 -32 -538 b -28 -534 -31 -538 -29 -537 l -23 -526 l -19 -517 l -13 -509 l -8 -501 l -2 -492 l 2 -483 l 6 -476 l 17 -458 l 23 -449 l 32 -433 l 38 -424 l 42 -416 l 47 -408 l 53 -399 l 58 -391 l 63 -381 l 68 -373 l 73 -365 l 78 -356 l 84 -348 l 89 -340 l 93 -330 l 99 -322 l 104 -315 l 114 -297 l 125 -280 l 129 -272 l 134 -263 l 140 -255 l 145 -247 l 151 -238 l 155 -230 l 160 -220 l 166 -212 l 171 -204 l 176 -195 l 181 -187 l 186 -177 l 191 -169 l 196 -162 l 201 -154 l 206 -144 l 217 -127 l 221 -119 l 227 -111 l 232 -102 l 238 -94 l 242 -86 l 247 -77 l 253 -69 l 258 -59 l 262 -51 l 268 -43 l 273 -34 l 279 -26 l 283 -18 b 321 -1 292 -2 292 -1 b 338 -1 326 -1 332 -1 b 382 -6 378 -1 375 -1 b 389 -20 386 -9 389 -15 b 382 -38 389 -26 386 -31 l 378 -47 l 372 -55 l 367 -63 l 362 -72 l 356 -80 l 351 -90 l 347 -98 l 341 -106 l 336 -115 l 330 -123 l 325 -131 l 321 -141 l 315 -149 l 310 -158 l 304 -166 l 299 -174 b 295 -183 298 -177 296 -181 l 289 -191 l 285 -199 l 280 -208 l 274 -216 l 269 -224 l 264 -233 l 259 -242 l 254 -251 l 249 -259 l 243 -267 l 238 -276 l 234 -284 l 228 -292 l 223 -302 l 217 -310 l 213 -319 l 208 -327 b 202 -335 206 -330 204 -334 l 197 -344 l 193 -351 l 187 -360 l 182 -369 l 176 -377 l 172 -385 l 167 -394 l 161 -403 l 156 -412 l 152 -420 l 147 -428 l 141 -437 l 136 -445 l 130 -455 l 126 -463 l 121 -471 l 115 -480 b 110 -488 114 -483 111 -487 l 106 -496 l 100 -503 l 96 -512 l 89 -521 l 85 -530 l 80 -538 l 74 -546 l 69 -555 l 65 -564 l 59 -573 l 54 -581 l 49 -589 l 43 -598 l 39 -606 l 34 -616 l 28 -624 l 23 -632 b 19 -641 21 -635 20 -638 b 0 -653 14 -649 8 -653 b -25 -631 -10 -653 -14 -649 l -80 -541 l -359 -79 b -389 -29 -375 -52 -389 -30 b -390 -22 -389 -26 -390 -24 b -377 -1 -390 -13 -385 -5 m -13 -9 b -1 -8 -9 -8 -5 -8 b 51 -36 19 -8 39 -19 b 61 -72 58 -47 61 -59 b 51 -106 61 -84 58 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -127 b -62 -72 -57 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ',\n },\n breathMarkComma: {\n x_min: -1.359375,\n x_max: 193.28125,\n ha: 197,\n o: 'm 78 233 b 87 233 81 233 84 233 b 187 140 132 233 174 195 b 193 102 190 127 193 115 b 43 -113 193 22 136 -62 b 27 -119 36 -116 31 -119 b 19 -108 21 -119 19 -115 b 29 -97 19 -102 20 -101 b 102 13 73 -72 102 -27 b 92 51 102 26 98 40 l 91 54 l 84 54 b 8 104 53 54 21 74 b -1 142 1 116 -1 130 b 78 233 -1 187 31 227 ',\n },\n breathMarkUpbow: {\n x_min: -170.140625,\n x_max: 168.78125,\n ha: 172,\n o: 'm -160 567 b -122 567 -159 567 -149 567 l -87 567 l -84 566 b -74 553 -78 563 -77 560 b -20 366 -73 551 -49 466 b 31 186 8 267 31 186 b 85 371 31 186 55 269 b 140 559 114 473 138 557 b 153 567 141 564 148 567 b 168 559 159 567 166 564 b 168 555 168 557 168 557 b 92 281 168 548 159 513 b 14 13 50 134 14 13 b 0 0 14 6 6 0 b -17 15 -8 0 -17 8 b -93 283 -17 15 -51 136 b -170 552 -166 533 -170 548 b -170 553 -170 552 -170 552 b -160 567 -170 560 -167 564 ',\n },\n caesura: {\n x_min: 0,\n x_max: 622.03125,\n ha: 635,\n o: 'm 398 417 b 406 419 401 419 404 419 b 427 398 417 419 427 409 b 427 391 427 395 427 392 b 34 -274 424 385 38 -272 b 20 -280 29 -278 25 -280 b 0 -259 9 -280 0 -270 b 0 -252 0 -256 0 -254 b 393 413 2 -247 389 410 b 398 417 394 415 397 416 m 592 417 b 600 419 594 419 597 419 b 622 398 611 419 622 409 b 620 391 622 395 620 392 b 227 -274 617 385 231 -272 b 213 -280 223 -278 219 -280 b 193 -259 202 -280 193 -270 b 194 -252 193 -256 193 -254 b 586 413 196 -247 582 410 b 592 417 588 415 590 416 ',\n },\n caesuraCurved: {\n x_min: 0,\n x_max: 503.609375,\n ha: 514,\n o: 'm 274 430 b 277 430 276 430 277 430 b 310 394 296 430 310 415 b 308 383 310 391 308 387 b 306 367 307 381 307 374 b 236 120 298 305 272 210 b 40 -273 189 -5 125 -134 b 20 -287 35 -283 27 -287 b 5 -281 14 -287 9 -285 b 0 -267 1 -277 0 -273 b 9 -242 0 -262 2 -255 b 246 395 137 -12 232 242 b 274 430 249 416 257 427 m 468 430 b 472 430 469 430 470 430 b 503 394 490 430 503 415 b 502 383 503 391 503 387 b 499 367 502 381 500 374 b 431 120 491 305 465 210 b 234 -273 382 -5 318 -134 b 213 -287 228 -283 220 -287 b 198 -281 208 -287 202 -285 b 193 -267 194 -277 193 -273 b 202 -242 193 -262 196 -255 b 439 395 330 -12 426 242 b 468 430 442 416 451 427 ',\n },\n restMaxima: {\n x_min: 0,\n x_max: 464.140625,\n ha: 474,\n o: 'm 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 ',\n },\n restDoubleWhole: {\n x_min: 0,\n x_max: 386.5625,\n ha: 394,\n o: 'm 0 173 l 0 347 l 193 347 l 386 347 l 386 173 l 386 0 l 193 0 l 0 0 l 0 173 ',\n },\n restWhole: {\n x_min: 0,\n x_max: 447.8125,\n ha: 457,\n o: 'm 0 -87 l 0 0 l 223 0 l 447 0 l 447 -87 l 447 -174 l 223 -174 l 0 -174 l 0 -87 ',\n },\n restWholeLegerLine: {\n x_min: 0,\n x_max: 737.71875,\n ha: 753,\n o: 'm 9 13 b 208 15 10 15 51 15 b 368 15 251 15 304 15 l 726 15 l 729 12 b 737 -1 735 9 737 4 b 729 -15 737 -6 735 -11 l 726 -16 l 660 -16 l 592 -16 l 592 -95 l 592 -174 l 368 -174 l 144 -174 l 144 -95 l 144 -16 l 77 -16 l 9 -16 l 6 -15 b 0 -1 1 -11 0 -6 b 9 13 0 5 2 11 ',\n },\n restHalf: {\n x_min: 0,\n x_max: 447.8125,\n ha: 457,\n o: 'm 0 86 l 0 173 l 223 173 l 447 173 l 447 86 l 447 0 l 223 0 l 0 0 l 0 86 ',\n },\n restHalfLegerLine: {\n x_min: 0,\n x_max: 737.71875,\n ha: 753,\n o: 'm 144 94 l 144 173 l 368 173 l 592 173 l 592 94 l 592 15 l 660 15 l 726 15 l 729 12 b 737 -1 735 9 737 4 b 729 -15 737 -6 735 -11 l 726 -16 l 368 -16 l 9 -16 l 6 -15 b 0 -1 1 -11 0 -6 b 6 12 0 4 1 9 l 9 15 l 77 15 l 144 15 l 144 94 ',\n },\n restQuarter: {\n x_min: 0,\n x_max: 300.8125,\n ha: 307,\n o: 'm 49 505 b 53 506 50 505 51 506 b 70 496 58 506 62 503 b 81 485 73 492 78 488 l 96 473 l 111 459 l 122 449 l 134 438 l 182 396 l 255 330 b 292 291 292 298 292 298 l 292 290 l 292 284 l 283 270 b 209 36 234 197 209 113 b 288 -170 209 -44 235 -119 b 299 -184 295 -179 299 -181 b 300 -191 300 -187 300 -188 b 285 -206 300 -199 294 -206 b 280 -206 283 -206 281 -206 b 247 -201 270 -202 259 -201 b 176 -222 223 -201 197 -208 b 114 -340 136 -249 114 -292 b 172 -471 114 -384 134 -433 b 185 -492 182 -481 185 -487 b 181 -502 185 -496 183 -499 b 171 -508 176 -505 174 -508 b 152 -498 166 -508 160 -503 b 0 -284 65 -428 12 -352 b 0 -260 0 -278 0 -270 b 1 -238 0 -252 0 -242 b 148 -140 16 -177 73 -140 b 209 -148 167 -140 189 -142 b 215 -149 212 -148 215 -149 b 215 -149 215 -149 215 -149 l 215 -149 b 201 -136 215 -148 209 -142 l 157 -97 l 96 -41 b 17 34 21 24 17 29 b 17 37 17 36 17 36 b 17 38 17 37 17 38 b 25 56 17 44 17 44 b 110 298 81 131 110 219 b 46 474 110 367 88 431 b 38 491 40 480 38 487 b 49 505 38 498 42 502 ',\n },\n rest8th: {\n x_min: 0,\n x_max: 349.8125,\n ha: 357,\n o: 'm 88 302 b 103 303 93 302 98 303 b 202 224 149 303 191 270 b 205 199 204 216 205 208 b 178 129 205 173 196 147 l 175 126 l 182 127 b 307 249 236 142 284 190 b 313 259 308 254 311 258 b 329 267 317 265 323 267 b 349 247 340 267 349 259 b 201 -263 349 242 204 -258 b 182 -273 197 -270 190 -273 b 163 -260 174 -273 166 -269 b 161 -256 161 -259 161 -258 b 217 -59 161 -248 170 -220 b 272 129 247 43 272 127 b 272 129 272 129 272 129 b 264 122 272 129 268 126 b 140 80 227 94 183 80 b 36 115 102 80 65 91 b 0 194 10 136 0 165 b 88 302 0 244 32 292 ',\n },\n rest16th: {\n x_min: 0,\n x_max: 450.53125,\n ha: 460,\n o: 'm 189 302 b 204 303 193 302 198 303 b 303 224 250 303 292 270 b 306 199 304 216 306 208 b 279 129 306 173 296 147 l 276 126 l 281 127 b 408 249 337 142 385 190 b 412 259 409 254 412 258 b 430 267 417 265 423 267 b 450 247 441 267 450 259 b 200 -605 450 242 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 194 111 136 99 165 b 189 302 99 244 133 292 ',\n },\n rest32nd: {\n x_min: 0,\n x_max: 551.25,\n ha: 563,\n o: 'm 289 644 b 304 645 294 645 299 645 b 404 566 349 645 392 613 b 406 541 405 557 406 549 b 379 471 406 514 397 489 l 377 467 l 382 470 b 509 591 438 485 485 531 b 513 601 510 595 513 599 b 530 609 518 607 524 609 b 551 588 540 609 551 602 b 200 -605 551 584 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 195 112 136 99 165 b 118 256 99 217 106 238 b 204 303 138 287 171 303 b 292 249 238 303 273 285 b 306 199 302 234 306 217 b 279 129 306 173 296 148 l 276 126 l 281 127 b 408 248 336 142 385 190 b 473 470 409 254 473 469 b 473 470 473 470 473 470 b 465 464 473 470 469 467 b 341 421 428 435 383 421 b 236 458 303 421 266 433 b 200 537 212 478 200 508 b 289 644 200 585 234 635 ',\n },\n rest64th: {\n x_min: -1.359375,\n x_max: 651.96875,\n ha: 665,\n o: 'm 389 644 b 405 645 394 645 400 645 b 504 566 450 645 492 613 b 507 541 506 557 507 549 b 480 471 507 514 498 489 l 477 467 l 483 470 b 609 591 539 485 586 531 b 613 601 611 595 613 599 b 631 609 619 607 624 609 b 651 588 641 609 651 602 b 200 -946 651 584 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 537 313 478 300 508 b 389 644 300 585 334 635 ',\n },\n rest128th: {\n x_min: -1.359375,\n x_max: 752.703125,\n ha: 768,\n o: 'm 490 985 b 504 986 495 986 500 986 b 604 907 551 986 593 954 b 607 884 607 900 607 892 b 581 813 607 857 597 831 l 578 810 l 583 811 b 710 932 638 827 687 873 b 714 943 711 936 713 942 b 730 952 720 949 725 952 b 752 931 741 952 752 943 b 200 -946 752 927 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 538 314 477 300 508 b 318 598 300 559 306 580 b 404 645 340 630 372 645 b 494 592 439 645 475 627 b 507 541 502 577 507 559 b 480 471 507 516 498 489 l 477 467 l 483 470 b 608 589 537 485 586 531 b 675 811 611 595 675 810 b 675 811 675 811 675 811 b 666 806 675 811 671 809 b 543 763 628 777 585 763 b 438 799 504 763 468 775 b 401 878 412 820 401 849 b 490 985 401 928 434 977 ',\n },\n dynamicPiano: {\n x_min: -53.078125,\n x_max: 513.140625,\n ha: 485,\n o: 'm 185 383 b 196 384 187 383 191 384 b 277 334 230 384 259 365 b 288 301 281 324 288 306 b 288 297 288 298 288 297 b 294 302 289 297 291 299 b 394 370 323 338 367 367 b 404 371 398 370 401 371 b 510 272 453 371 498 328 b 513 237 513 262 513 251 b 507 172 513 217 511 192 b 326 -34 487 59 412 -26 b 314 -36 322 -36 318 -36 b 274 -24 298 -36 283 -31 l 265 -16 b 224 44 246 -1 232 20 b 223 49 224 47 223 49 b 223 49 223 49 223 49 b 149 -197 221 48 149 -194 b 149 -198 149 -197 149 -198 b 170 -210 149 -202 155 -205 b 187 -215 174 -210 175 -212 b 204 -231 201 -219 204 -222 b 197 -245 204 -240 202 -242 l 194 -248 l 76 -248 l -42 -248 l -46 -245 b -53 -231 -51 -242 -53 -240 b -35 -215 -53 -222 -49 -217 b -13 -210 -21 -212 -20 -212 b -6 -208 -10 -209 -8 -208 b 0 -206 -6 -208 -2 -206 b 25 -188 13 -201 21 -195 b 163 280 28 -183 163 276 b 166 291 163 283 164 287 b 167 302 167 295 167 299 b 155 324 167 315 161 324 b 155 324 155 324 155 324 b 65 230 125 322 85 280 b 53 215 61 217 58 215 b 51 215 53 215 51 215 b 42 224 46 215 42 217 b 57 263 42 231 47 244 b 140 360 77 305 104 337 b 152 370 144 365 149 369 b 185 383 157 376 172 381 m 374 306 b 366 308 371 308 368 308 b 300 273 348 308 321 294 b 284 254 288 262 287 259 b 280 242 283 249 281 245 b 257 169 279 240 270 213 l 236 98 l 236 93 b 251 48 238 77 243 61 b 279 27 258 37 272 27 b 281 27 279 27 280 27 b 291 31 281 27 287 30 b 396 170 334 52 378 109 b 406 247 402 197 406 224 b 401 277 406 259 405 270 b 374 306 397 290 383 303 ',\n },\n dynamicMezzo: {\n x_min: 46.28125,\n x_max: 669.671875,\n ha: 563,\n o: 'm 183 376 b 189 376 185 376 187 376 b 212 374 197 376 208 376 b 265 337 234 369 253 355 b 274 317 268 331 273 320 b 274 316 274 317 274 316 b 280 323 276 316 276 319 b 311 358 288 337 299 348 b 319 366 315 360 318 365 b 356 376 326 373 340 376 b 382 371 364 376 374 374 b 428 337 400 366 417 352 b 436 317 431 331 436 320 b 438 316 436 317 436 316 b 442 323 438 316 439 319 b 475 358 451 337 462 348 b 483 366 477 360 481 365 b 518 376 488 373 503 376 b 544 373 528 376 536 376 b 604 285 579 360 604 326 b 597 249 604 273 601 258 b 543 63 596 247 544 70 b 541 54 543 61 541 55 b 540 44 540 51 540 47 b 552 23 540 33 545 23 b 552 23 552 23 552 23 b 647 126 586 29 627 72 b 658 138 651 136 653 138 b 660 138 660 138 660 138 b 669 129 666 137 669 136 b 654 88 669 122 665 109 b 562 -12 631 43 602 9 l 549 -19 b 521 -27 540 -24 530 -27 b 447 30 490 -27 458 -4 b 443 58 445 38 443 48 b 450 93 443 72 446 84 b 504 278 453 97 504 272 b 507 288 506 283 506 287 b 509 298 507 292 509 295 b 491 326 509 310 502 320 b 487 327 490 327 488 327 b 479 324 484 327 483 326 b 441 270 462 316 443 288 b 435 249 441 265 436 254 b 398 127 434 248 419 195 b 362 4 379 61 362 5 b 328 -1 359 -1 362 -1 b 314 -1 323 -1 319 -1 b 302 -1 310 -1 306 -1 b 266 4 266 -1 269 -1 b 265 6 265 5 265 5 b 303 144 265 13 272 34 b 343 278 325 216 343 276 b 344 288 343 281 344 285 b 345 298 345 291 345 295 b 330 326 345 310 340 320 b 323 327 328 327 325 327 b 317 324 322 327 321 326 b 279 270 300 316 281 288 b 273 249 279 265 274 254 b 236 127 272 248 255 195 b 200 4 216 61 200 5 b 164 -1 197 -1 198 -1 b 151 -1 161 -1 156 -1 b 140 -1 147 -1 142 -1 b 103 4 104 -1 106 -1 b 103 6 103 5 103 5 b 141 144 103 13 108 34 b 181 278 161 216 179 276 b 182 288 181 281 181 285 b 183 298 182 291 183 295 b 168 324 183 310 178 320 b 160 327 166 326 163 327 b 141 320 156 327 151 324 b 69 230 112 305 85 272 b 57 215 65 217 62 215 b 55 215 57 215 55 215 b 46 224 49 215 46 217 b 59 260 46 231 50 242 b 151 363 81 306 112 341 b 161 369 155 365 160 367 b 183 376 166 371 174 374 ',\n },\n dynamicForte: {\n x_min: -118.421875,\n x_max: 597.53125,\n ha: 381,\n o: 'm 460 574 b 464 574 461 574 462 574 b 488 574 470 574 481 574 b 500 573 491 574 498 574 b 594 503 543 570 588 538 b 597 488 596 498 597 494 b 528 417 597 449 564 417 b 502 423 519 417 510 419 b 465 481 477 434 465 458 b 488 528 465 499 472 516 b 490 530 490 530 490 530 b 490 530 490 530 490 530 b 468 517 488 530 475 523 b 349 340 419 485 377 420 b 347 330 348 334 347 330 b 383 328 347 328 363 328 b 428 326 423 328 424 328 b 442 302 438 320 442 312 b 430 281 442 294 438 285 b 385 276 424 277 426 276 l 377 276 l 332 276 l 330 269 b 178 -117 303 126 250 -9 b 1 -249 129 -194 69 -237 b -20 -251 -6 -251 -13 -251 b -114 -187 -65 -251 -100 -227 b -118 -156 -117 -177 -118 -166 b -51 -84 -118 -116 -91 -84 b -31 -87 -46 -84 -39 -86 b 16 -152 0 -95 16 -124 b -12 -205 16 -173 8 -194 b -16 -208 -14 -206 -16 -208 b -14 -208 -16 -208 -14 -208 b -9 -206 -14 -208 -12 -208 b 74 -124 23 -197 54 -166 b 172 224 98 -79 125 22 b 185 276 178 252 183 274 b 185 276 185 276 185 276 b 141 276 185 276 181 276 b 91 280 96 276 96 276 b 77 302 83 285 77 294 b 91 326 77 312 83 320 b 148 328 95 328 96 328 l 198 330 l 202 341 b 460 574 249 473 351 566 ',\n },\n dynamicRinforzando: {\n x_min: 78.9375,\n x_max: 485.921875,\n ha: 417,\n o: 'm 362 378 b 378 380 367 380 372 380 b 472 348 415 380 453 367 b 485 315 481 338 485 327 b 462 273 485 298 477 281 b 439 267 454 269 446 267 b 398 290 424 267 409 274 b 344 319 385 309 364 319 b 281 269 315 319 289 301 b 279 262 280 266 279 262 b 276 256 279 260 277 258 b 274 249 276 254 274 251 b 238 127 273 248 257 192 b 201 4 217 61 201 5 b 166 -1 198 -1 200 -1 b 153 -1 163 -1 157 -1 b 141 -1 148 -1 144 -1 b 104 4 106 -1 107 -1 b 104 6 104 5 104 5 b 142 144 104 13 110 34 b 182 278 164 219 181 276 b 183 288 182 281 182 285 b 185 302 185 292 185 298 b 164 330 185 317 176 328 b 159 330 163 330 161 330 b 102 302 140 330 119 320 b 91 294 95 295 93 294 b 88 294 91 294 89 294 b 78 303 83 294 78 298 b 81 312 78 306 78 309 b 200 373 106 347 160 373 b 215 371 205 373 209 371 b 266 335 235 367 254 353 b 269 331 268 333 269 331 b 269 331 269 331 269 331 b 273 335 269 331 270 334 b 362 378 298 359 330 376 ',\n },\n dynamicSforzando: {\n x_min: 70.78125,\n x_max: 378.390625,\n ha: 315,\n o: 'm 246 373 b 254 373 249 373 251 373 b 372 324 303 373 360 351 b 378 302 377 317 378 309 b 338 251 378 278 362 255 b 328 249 334 249 332 249 b 283 294 303 249 283 270 b 288 315 283 301 284 308 b 289 319 289 317 289 319 b 289 319 289 319 289 319 b 283 320 289 320 287 320 b 270 322 279 322 274 322 b 206 288 242 322 215 308 b 206 283 206 287 206 285 b 257 223 206 267 230 238 b 284 206 272 213 277 210 b 351 90 328 173 351 130 b 340 47 351 74 348 59 b 205 -30 314 -2 264 -30 b 182 -29 198 -30 190 -30 b 84 15 147 -24 103 -5 b 70 48 74 24 70 36 b 108 99 70 70 85 94 b 121 102 112 101 117 102 b 167 56 147 102 167 80 b 159 31 167 48 164 40 l 156 26 l 157 26 b 190 20 167 22 178 20 b 220 26 201 20 212 22 b 258 65 243 34 258 51 b 257 70 258 66 258 69 b 204 126 249 94 234 109 b 114 258 148 158 114 209 b 125 302 114 273 118 288 b 246 373 147 342 193 370 ',\n },\n dynamicZ: {\n x_min: 29.9375,\n x_max: 420.578125,\n ha: 371,\n o: 'm 115 345 b 221 347 117 345 166 347 b 411 345 306 347 409 345 b 420 330 416 342 420 335 b 415 319 420 326 419 321 b 178 118 397 303 179 118 b 178 117 178 118 178 117 b 181 117 178 117 178 117 b 189 117 182 117 185 117 b 193 117 190 117 191 117 b 247 98 215 117 232 111 b 296 75 266 83 280 76 b 302 75 299 75 300 75 b 322 91 311 75 315 79 b 322 91 322 91 322 91 b 322 91 322 91 322 91 b 319 91 322 91 321 91 b 313 90 318 90 315 90 b 283 107 300 90 288 97 b 277 126 279 114 277 121 b 319 167 277 149 295 167 b 319 167 319 167 319 167 b 362 118 347 167 362 147 b 355 82 362 108 359 96 b 311 33 349 65 340 55 b 224 1 284 12 253 1 b 194 5 213 1 204 2 b 168 18 183 8 178 11 b 110 36 151 30 130 36 b 57 15 88 36 68 29 b 47 11 54 12 51 11 b 31 20 40 11 34 13 b 29 26 31 22 29 25 b 68 66 29 36 39 45 b 285 250 73 71 281 248 b 285 250 285 250 285 250 b 231 252 285 252 261 252 b 137 250 190 252 141 250 b 93 227 122 248 110 241 b 78 220 88 222 83 220 b 66 227 74 220 70 222 b 63 234 65 229 63 231 b 85 291 63 241 69 252 b 115 345 108 342 108 344 ',\n },\n ornamentTrill: {\n x_min: -340.28125,\n x_max: 338.921875,\n ha: 346,\n o: 'm -32 520 b -29 521 -31 520 -31 521 b -23 519 -27 521 -24 520 b -20 513 -21 517 -20 516 b -21 506 -20 512 -20 509 b -31 474 -23 502 -27 488 l -53 402 l -66 352 l -68 349 l -57 349 b -32 351 -51 349 -40 351 b 123 370 19 352 74 359 b 137 371 127 370 133 371 b 170 356 152 371 164 366 b 171 355 170 355 170 355 b 216 366 174 355 183 358 b 280 378 268 377 266 377 b 287 378 283 378 284 378 b 332 349 307 378 322 369 b 338 319 336 341 338 330 b 332 301 338 310 336 302 b 242 280 329 299 246 280 b 242 280 242 280 242 280 b 235 288 236 280 235 283 b 235 292 235 290 235 291 b 236 302 236 297 236 299 b 220 337 236 316 230 330 l 216 340 l 210 335 b 159 276 189 322 172 301 b 118 149 152 265 156 274 b 81 34 84 36 85 36 b -8 13 78 33 -4 13 b -8 13 -8 13 -8 13 b -14 20 -12 15 -14 15 b -8 44 -14 24 -12 31 b -2 66 -5 55 -2 65 b -2 66 -2 66 -2 66 l -2 66 b -43 41 -2 66 -21 55 b -114 4 -98 8 -98 8 b -144 0 -123 0 -134 0 b -242 99 -197 0 -242 43 b -242 109 -242 102 -242 105 b -212 219 -240 122 -242 116 b -185 312 -197 270 -185 312 l -185 312 b -189 312 -185 312 -186 312 b -259 312 -200 312 -227 312 b -321 310 -291 312 -310 310 b -334 312 -330 310 -334 312 b -340 319 -338 313 -340 316 b -336 326 -340 322 -338 324 b -291 337 -334 326 -314 331 l -247 347 l -210 348 b -172 348 -190 348 -172 348 b -168 363 -172 348 -171 355 b -145 442 -151 424 -145 441 b -133 452 -144 444 -140 446 l -77 489 b -32 520 -53 506 -32 520 m 57 334 b 53 335 55 335 54 335 b 44 334 50 335 49 335 b -70 316 8 326 -28 320 b -78 309 -78 316 -78 316 b -108 202 -80 305 -88 274 b -141 81 -136 112 -141 93 b -140 74 -141 79 -141 77 b -117 49 -137 59 -127 49 b -107 52 -114 49 -110 51 b 16 127 -106 54 14 126 b 42 217 16 127 42 215 b 49 241 42 222 44 229 b 73 320 53 251 73 317 b 57 334 73 327 65 333 ',\n },\n ornamentTurn: {\n x_min: -423.3125,\n x_max: 421.9375,\n ha: 431,\n o: 'm -262 197 b -247 197 -257 197 -253 197 b -118 162 -210 197 -163 184 b 40 45 -61 134 -13 98 b 277 -95 119 -33 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -55 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 201 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 136 b 421 22 421 37 421 29 b 245 -199 421 -93 338 -199 b 238 -198 243 -199 240 -199 b -44 -47 148 -194 50 -141 b -250 86 -114 22 -183 66 b -295 94 -270 91 -283 94 b -315 91 -302 94 -307 94 b -381 4 -356 81 -381 43 b -355 -56 -381 -18 -372 -40 b -298 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -178 -69 -200 -58 -189 -62 b -151 -122 -160 -81 -151 -101 b -171 -167 -151 -138 -157 -155 b -239 -195 -185 -181 -213 -192 b -257 -197 -245 -197 -250 -197 b -423 -5 -352 -197 -423 -109 b -412 65 -423 16 -419 40 b -262 197 -389 137 -329 188 ',\n },\n ornamentTurnSlash: {\n x_min: -423.3125,\n x_max: 421.9375,\n ha: 431,\n o: 'm -10 276 b -2 277 -8 277 -5 277 b 17 265 5 277 13 273 b 19 163 19 260 19 260 l 19 68 l 39 45 b 277 -95 122 -34 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -54 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 200 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 137 b 421 22 421 37 421 29 b 257 -198 421 -86 347 -188 b 242 -198 251 -198 247 -198 b 20 -105 181 -198 95 -163 l 19 -104 l 19 -183 b 19 -216 19 -195 19 -206 b 12 -273 19 -272 17 -267 b -2 -278 8 -277 2 -278 b -21 -266 -10 -278 -19 -274 b -23 -165 -23 -263 -23 -262 l -23 -69 l -44 -47 b -250 86 -117 23 -183 66 b -295 94 -270 93 -284 94 b -315 91 -302 94 -308 94 b -381 5 -356 81 -381 43 b -355 -56 -381 -16 -372 -40 b -299 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -168 -77 -196 -58 -179 -65 b -151 -122 -156 -90 -151 -105 b -179 -174 -151 -141 -160 -162 b -239 -195 -194 -184 -217 -192 b -257 -197 -245 -195 -250 -197 b -423 -5 -349 -197 -423 -113 b -423 0 -423 -4 -423 -1 b -277 194 -420 97 -362 173 b -247 197 -268 197 -258 197 b -24 104 -185 197 -100 162 l -23 102 l -23 181 b -21 265 -23 260 -23 260 b -10 276 -20 269 -14 274 ',\n },\n ornamentMordent: {\n x_min: -402.890625,\n x_max: 401.53125,\n ha: 410,\n o: 'm -10 273 b -4 274 -9 273 -6 274 b 16 262 4 274 12 269 b 17 158 17 259 17 259 l 17 56 l 62 112 b 117 174 110 172 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b 21 -6 27 0 24 -2 l 17 -12 l 17 -147 b 17 -210 17 -173 17 -194 b 10 -292 17 -297 16 -287 b -2 -299 6 -297 2 -299 b -21 -287 -10 -299 -19 -295 b -24 -174 -23 -284 -23 -284 l -24 -63 l -66 -117 b -121 -176 -110 -170 -114 -176 b -125 -176 -122 -176 -123 -176 b -296 -12 -134 -174 -125 -184 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 170 -398 -43 -231 165 b -212 174 -221 173 -216 174 b -202 173 -208 174 -205 174 b -39 11 -200 172 -151 122 l -28 -1 l -25 1 l -24 4 l -24 130 b -23 260 -24 256 -24 258 b -10 273 -20 266 -16 270 ',\n },\n ornamentShortTrill: {\n x_min: -402.890625,\n x_max: 401.53125,\n ha: 410,\n o: 'm -219 173 b -213 174 -217 174 -215 174 b -202 173 -209 174 -205 173 b -114 86 -200 172 -179 151 b -28 0 -66 37 -28 0 b 40 84 -28 0 2 37 b 117 174 111 173 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b -42 -86 27 0 -4 -38 b -118 -174 -112 -174 -111 -173 b -123 -176 -119 -176 -121 -176 b -133 -174 -126 -176 -130 -174 b -296 -12 -136 -173 -172 -137 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 172 -398 -43 -228 167 b -219 173 -223 172 -220 173 ',\n },\n ornamentTremblement: {\n x_min: -571.671875,\n x_max: 570.3125,\n ha: 582,\n o: 'm -386 173 b -381 174 -385 174 -383 174 b -370 173 -377 174 -372 173 b -281 86 -367 172 -347 151 b -196 0 -235 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 277 172 b 289 174 285 174 288 174 b 299 173 294 174 298 173 b 462 11 303 172 338 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 374 -176 371 -176 b 280 -87 367 -173 345 -152 b 194 0 234 -38 194 0 b 125 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 43 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -141 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -289 -176 b -300 -174 -295 -176 -299 -174 b -464 -12 -304 -173 -340 -137 l -476 0 l -504 -34 b -543 -77 -534 -73 -537 -76 b -549 -79 -545 -79 -547 -79 b -571 -58 -562 -79 -571 -69 b -568 -49 -571 -55 -570 -52 b -392 172 -566 -43 -396 167 b -386 173 -390 172 -387 173 ',\n },\n ornamentPrecompAppoggTrill: {\n x_min: -571.671875,\n x_max: 570.3125,\n ha: 582,\n o: 'm -559 351 b -551 352 -556 352 -553 352 b -530 338 -543 352 -533 348 b -529 169 -530 337 -529 291 l -529 1 l -507 27 l -441 112 b -382 174 -394 169 -390 174 b -378 174 -381 174 -379 174 b -281 86 -370 174 -375 179 b -196 0 -234 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 279 172 b 289 174 285 174 288 174 b 300 173 294 174 298 173 b 462 11 303 172 340 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 375 -176 371 -176 b 280 -87 367 -173 347 -152 b 194 0 234 -38 194 0 b 126 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 44 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -140 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -288 -176 b -300 -174 -294 -176 -298 -174 b -464 -11 -303 -173 -374 -102 l -476 0 l -506 -37 b -539 -76 -528 -65 -537 -74 b -551 -80 -543 -79 -547 -80 b -570 -68 -558 -80 -566 -76 l -571 -65 l -571 136 b -570 340 -571 331 -571 337 b -559 351 -568 344 -564 348 ',\n },\n ornamentPrecompSlideTrillDAnglebert: {\n x_min: -590.71875,\n x_max: 589.359375,\n ha: 601,\n o: 'm -367 173 b -362 174 -366 174 -364 174 b -351 173 -357 174 -353 173 b -262 86 -348 172 -328 151 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 72 86 -13 172 6 151 b 157 0 119 37 157 0 b 227 84 159 0 189 37 b 303 174 298 173 296 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 144 -86 213 0 182 -38 b 68 -174 73 -174 74 -173 b 62 -176 66 -176 65 -176 b 53 -174 59 -176 55 -174 b -35 -87 50 -173 29 -152 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -367 173 -375 169 -372 172 ',\n },\n ornamentPrecompSlideTrillBach: {\n x_min: -590.71875,\n x_max: 589.359375,\n ha: 601,\n o: 'm 175 273 b 182 274 178 273 181 274 b 202 262 190 274 198 269 b 204 158 204 259 204 259 l 204 56 l 250 112 b 303 174 296 172 298 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 208 -6 213 0 210 -2 l 204 -12 l 204 -147 b 204 -210 204 -173 204 -194 b 198 -292 204 -297 204 -287 b 183 -299 194 -297 189 -299 b 164 -287 175 -299 167 -295 b 163 -174 163 -284 163 -284 l 161 -63 l 119 -117 b 65 -176 76 -170 73 -176 b 61 -176 63 -176 62 -176 b -35 -87 51 -174 57 -180 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -363 174 -374 170 -371 174 b -359 174 -362 174 -360 174 b -262 86 -351 174 -356 179 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 147 11 -13 172 35 123 l 157 -1 l 160 1 l 163 4 l 163 130 b 164 260 163 256 163 258 b 175 273 166 266 170 270 ',\n },\n ornamentPrecompTrillSuffixDandrieu: {\n x_min: -590.71875,\n x_max: 589.359375,\n ha: 601,\n o: 'm 544 335 b 553 337 548 337 551 337 b 575 313 563 337 570 330 b 589 226 583 285 589 256 b 517 8 589 152 563 76 b 464 -58 507 -4 503 -9 l 401 -136 b 362 -176 372 -172 370 -176 b 357 -176 360 -176 359 -176 b 261 -87 349 -174 355 -180 b 175 0 215 -38 175 0 b 106 -86 175 0 144 -38 b 29 -174 35 -174 36 -173 b 24 -176 28 -176 27 -176 b 14 -174 21 -176 17 -174 b -73 -87 12 -173 -8 -152 b -159 0 -121 -38 -159 0 b -228 -86 -160 0 -190 -38 b -304 -174 -299 -174 -298 -173 b -310 -176 -306 -176 -308 -176 b -319 -174 -314 -176 -318 -174 b -483 -12 -323 -173 -359 -137 l -495 0 l -524 -34 b -562 -77 -553 -73 -556 -76 b -568 -79 -564 -79 -566 -79 b -590 -58 -581 -79 -590 -69 b -588 -49 -590 -55 -589 -52 b -412 170 -585 -43 -417 165 b -398 174 -408 173 -402 174 b -389 173 -394 174 -392 174 b -300 86 -387 172 -366 151 b -215 -1 -254 37 -215 -1 b -145 84 -215 -1 -183 37 b -69 173 -74 173 -76 172 b -63 174 -68 174 -66 174 b -54 173 -61 174 -57 173 b 34 86 -51 172 -31 151 b 119 -1 81 37 119 -1 b 189 84 121 -1 151 37 b 265 173 259 173 258 172 b 270 174 266 174 269 174 b 280 173 274 174 279 173 b 370 84 283 172 303 151 b 455 -1 416 37 455 -1 l 455 -1 b 476 24 455 -1 469 15 b 547 226 522 87 547 159 b 534 302 547 252 543 278 b 532 317 533 308 532 313 b 544 335 532 326 536 333 ',\n },\n ornamentPrecompDoubleCadenceUpperPrefix: {\n x_min: -597.53125,\n x_max: 596.171875,\n ha: 608,\n o: 'm -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 80 86 -5 172 13 151 b 166 -1 127 37 166 -1 b 235 84 166 -1 197 37 b 311 173 306 173 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 152 -86 221 -1 190 -38 b 76 -176 81 -174 83 -173 b 70 -176 74 -176 73 -176 b 61 -174 66 -176 62 -174 b -27 -87 58 -173 38 -152 b -114 -1 -74 -38 -112 -1 b -182 -86 -114 -1 -145 -38 b -258 -176 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 ',\n },\n ornamentPrecompDoubleCadenceUpperPrefixTurn: {\n x_min: -597.53125,\n x_max: 596.171875,\n ha: 608,\n o: 'm -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 155 11 -5 172 43 123 l 166 -1 l 168 1 l 170 4 l 170 130 b 171 260 170 256 170 258 b 191 274 175 269 183 274 b 205 267 196 274 201 272 b 212 158 212 262 210 273 l 212 56 l 257 112 b 311 173 304 172 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 216 -6 221 -1 219 -2 l 212 -12 l 212 -147 b 212 -210 212 -173 212 -194 b 205 -292 212 -297 210 -287 b 191 -299 201 -297 196 -299 b 172 -287 183 -299 175 -295 b 170 -174 171 -284 171 -284 l 170 -63 l 127 -117 b 73 -176 84 -170 80 -176 b 68 -176 72 -176 70 -176 b -27 -87 59 -174 65 -180 b -114 0 -74 -38 -112 0 b -182 -86 -114 0 -145 -38 b -258 -174 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 ',\n },\n ornamentPrecompTrillLowerSuffix: {\n x_min: -597.53125,\n x_max: 596.171875,\n ha: 608,\n o: 'm -413 173 b -408 174 -412 174 -409 174 b -397 173 -404 174 -400 173 b -308 86 -394 172 -374 151 b -223 0 -261 37 -223 0 b -153 84 -223 0 -191 37 b -77 174 -83 173 -84 172 b -72 174 -76 174 -74 174 b -62 173 -68 174 -63 173 b 25 86 -59 172 -39 151 b 112 0 73 37 111 0 b 181 84 112 0 144 37 b 257 174 251 173 251 172 b 262 174 258 174 261 174 b 273 173 266 174 270 173 b 436 9 276 172 347 101 l 447 -1 l 477 36 b 522 79 511 79 513 79 l 522 79 b 552 51 533 79 539 73 b 596 -112 582 6 596 -51 b 567 -262 596 -161 586 -213 b 539 -322 558 -287 544 -316 b 524 -327 534 -326 529 -327 b 504 -315 515 -327 507 -323 b 503 -308 503 -312 503 -309 b 511 -285 503 -302 504 -297 b 555 -113 540 -227 555 -169 b 544 -34 555 -86 551 -59 b 522 19 540 -16 530 8 l 521 22 l 481 -26 l 405 -122 b 353 -176 366 -172 362 -176 b 349 -176 352 -176 351 -176 b 253 -87 341 -176 347 -180 b 167 0 206 -38 167 0 b 99 -86 167 0 136 -38 b 21 -174 27 -174 28 -173 b 17 -176 20 -176 19 -176 b 6 -174 13 -176 9 -174 b -81 -87 4 -173 -14 -152 b -167 0 -129 -38 -167 0 b -236 -86 -167 0 -198 -38 b -313 -174 -307 -174 -306 -173 b -318 -176 -314 -176 -315 -176 b -328 -174 -321 -176 -325 -174 b -491 -12 -330 -173 -367 -137 l -503 0 l -530 -34 b -570 -77 -562 -73 -564 -76 b -577 -79 -571 -79 -574 -79 b -597 -58 -588 -79 -597 -69 b -596 -49 -597 -55 -597 -52 b -417 172 -593 -43 -423 167 b -413 173 -417 172 -415 173 ',\n },\n stringsDownBow: {\n x_min: -228.671875,\n x_max: 227.3125,\n ha: 232,\n o: 'm -217 487 l -213 488 l 0 488 l 212 488 l 216 487 b 225 476 220 484 224 480 l 227 473 l 227 244 l 227 15 l 225 12 b 206 0 223 4 215 0 b 197 1 204 0 200 0 b 187 12 193 4 189 6 l 186 15 l 186 138 l 186 262 l -1 262 l -187 262 l -187 138 l -187 15 l -189 12 b -208 0 -193 4 -200 0 b -227 12 -216 0 -223 4 l -228 15 l -228 244 l -228 473 l -227 476 b -217 487 -225 480 -221 484 ',\n },\n stringsUpBow: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -137 381 b -130 383 -134 383 -133 383 b -111 371 -122 383 -114 378 b -55 224 -110 370 -85 305 b 0 80 -25 145 -1 80 b 54 224 0 80 24 145 b 112 377 114 384 110 373 b 127 384 118 381 122 384 b 148 362 138 384 148 374 l 148 356 l 83 183 b 16 9 47 88 17 11 b -1 0 12 2 5 0 b -14 5 -5 0 -10 1 b -84 183 -19 9 -13 -6 l -149 356 l -149 362 b -137 381 -149 371 -145 378 ',\n },\n stringsHarmonic: {\n x_min: -122.5,\n x_max: 121.140625,\n ha: 124,\n o: 'm -16 145 b 0 147 -10 147 -5 147 b 121 -1 66 147 121 77 b 114 -49 121 -16 118 -33 b -1 -148 95 -112 47 -148 b -85 -106 -31 -148 -61 -134 b -122 -1 -110 -76 -122 -38 b -16 145 -122 68 -81 134 m 12 111 b 0 113 8 113 4 113 b -68 22 -29 113 -61 73 b -70 0 -69 15 -70 6 b -13 -113 -70 -49 -47 -98 b -1 -115 -9 -115 -5 -115 b 63 -40 24 -115 53 -83 b 68 -1 66 -27 68 -15 b 12 111 68 48 46 97 ',\n },\n pluckedSnapPizzicatoAbove: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 ',\n },\n pluckedSnapPizzicatoBelow: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 ',\n },\n pluckedLeftHandPizzicato: {\n x_min: 0,\n x_max: 319.859375,\n ha: 326,\n o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ',\n },\n keyboardPedalPed: {\n x_min: -1.359375,\n x_max: 1064.390625,\n ha: 1086,\n o: 'm 296 692 b 314 694 302 694 307 694 b 386 685 337 694 366 689 b 548 498 480 660 548 580 b 548 481 548 492 548 487 b 455 395 541 426 499 395 b 370 462 420 395 383 417 b 362 496 364 477 362 488 b 377 514 362 509 367 514 b 393 501 386 514 390 510 b 432 474 397 484 413 474 b 470 487 445 474 458 478 b 491 530 484 496 491 510 b 490 544 491 534 491 539 b 333 660 479 606 411 657 l 323 662 l 315 646 b 269 524 285 591 269 556 b 321 431 269 492 287 466 b 349 395 338 413 343 408 b 363 342 359 378 363 362 b 359 312 363 333 362 322 b 285 158 348 266 318 206 b 281 152 283 155 281 152 b 281 152 281 152 281 152 b 287 154 283 152 284 152 b 318 155 298 154 308 155 b 461 98 371 155 419 136 l 464 97 l 483 112 b 503 129 494 120 503 127 b 504 130 503 129 504 129 b 503 138 504 131 503 134 b 500 180 500 152 500 166 b 553 326 500 238 518 288 b 604 366 560 331 592 358 b 649 381 617 376 632 381 b 696 362 665 381 681 374 b 724 302 714 347 724 324 b 695 238 724 278 714 255 b 660 210 691 234 662 212 b 579 148 658 209 582 151 b 579 148 579 148 579 148 b 596 106 579 144 589 119 b 622 77 604 88 609 83 b 657 69 632 72 645 69 b 748 112 688 69 721 84 b 755 123 754 117 755 120 b 755 127 755 124 755 126 b 751 165 752 137 751 151 b 758 219 751 183 754 202 b 894 387 774 290 820 347 b 896 390 896 388 896 388 b 891 398 896 391 895 392 b 622 560 827 477 730 535 b 600 580 605 564 600 569 b 617 596 600 591 607 596 b 628 595 622 596 624 596 b 1057 248 846 552 1020 412 b 1064 191 1061 229 1064 209 b 922 0 1064 94 1005 9 b 902 -1 916 -1 909 -1 b 774 76 847 -1 800 26 b 769 83 770 81 770 83 b 769 81 769 83 769 83 b 627 -1 733 29 677 -1 b 548 27 597 -1 570 8 b 515 88 537 37 525 61 l 513 95 l 510 93 l 453 45 b 390 0 396 0 396 0 b 390 0 390 0 390 0 b 374 15 381 0 377 4 b 268 105 359 69 314 105 b 250 104 262 105 257 105 l 243 102 l 234 90 b 155 1 201 49 159 2 b 147 -1 152 0 149 -1 b 130 15 138 -1 130 6 b 132 20 130 18 132 19 b 136 31 133 22 134 27 b 220 131 149 74 178 109 b 231 137 225 134 230 136 b 302 278 280 202 302 244 b 265 335 302 299 295 309 b 209 442 234 363 213 402 b 209 455 209 446 209 451 b 279 648 209 502 232 564 l 285 659 l 283 659 b 176 627 238 653 210 645 b 57 477 111 594 66 538 b 55 459 55 471 55 464 b 72 409 55 437 61 415 b 93 403 78 405 87 403 b 152 467 123 403 151 431 b 168 488 153 483 157 488 b 185 462 181 488 185 483 l 185 460 b 137 344 183 409 168 369 b 78 322 119 328 98 322 b 13 360 50 322 25 335 b -1 426 4 380 -1 402 b 89 610 -1 488 32 559 b 296 692 147 659 210 685 m 926 348 b 921 353 924 351 922 353 b 914 348 920 353 918 351 b 823 167 857 306 823 237 b 828 124 823 154 826 138 b 890 31 837 79 862 40 b 896 31 892 31 894 31 b 956 104 916 31 940 59 b 970 191 965 129 970 159 b 966 241 970 208 969 224 b 926 348 959 277 945 313 m 627 326 b 619 326 624 326 622 326 b 598 316 611 326 604 323 b 568 215 579 288 568 255 b 568 208 568 213 568 210 b 571 183 570 195 570 184 l 571 183 b 594 201 571 183 582 191 l 634 231 b 660 259 653 247 656 248 b 664 278 662 266 664 272 b 627 326 664 299 649 320 ',\n },\n keyboardPedalUp: {\n x_min: -1.359375,\n x_max: 592.078125,\n ha: 604,\n o: 'm 280 692 b 295 694 283 692 289 694 b 310 692 300 694 307 692 b 357 630 340 684 357 657 b 336 580 357 612 351 594 b 311 538 321 566 311 549 b 352 492 311 512 330 492 b 366 495 357 492 362 492 b 397 553 390 503 397 517 b 415 603 397 576 402 591 b 460 623 427 617 443 623 b 509 599 479 623 498 614 b 522 559 518 587 522 573 b 494 506 522 538 513 519 b 451 495 481 498 473 496 b 415 488 432 495 426 494 b 394 449 404 483 394 464 b 394 448 394 448 394 448 l 394 440 l 397 433 b 428 409 404 420 413 413 b 438 408 431 408 435 408 b 479 431 450 408 462 415 b 528 455 495 448 510 455 b 548 452 534 455 541 453 b 592 391 577 442 592 416 b 549 331 592 365 577 340 b 528 327 541 328 534 327 b 479 351 510 327 495 335 b 438 374 464 367 450 374 b 417 369 431 374 424 373 b 394 333 402 360 394 348 b 400 312 394 326 396 319 b 451 287 408 294 420 288 b 513 258 484 285 499 278 b 522 223 519 247 522 234 b 461 159 522 190 496 159 b 449 161 457 159 453 159 b 397 229 416 167 397 191 b 366 288 397 265 390 278 b 352 290 362 290 357 290 b 315 262 336 290 321 280 b 311 245 313 256 311 251 b 334 204 311 233 318 220 b 355 170 348 190 351 184 b 357 152 356 166 357 159 b 355 136 357 147 356 140 b 295 88 345 104 321 88 b 232 152 264 88 232 112 b 255 204 232 174 238 186 b 279 244 273 222 279 231 l 279 245 b 238 290 279 270 259 290 b 224 288 234 290 228 290 b 193 229 200 278 193 265 b 141 161 193 191 174 167 b 129 159 137 159 133 159 b 68 223 93 159 68 190 b 77 258 68 234 70 247 b 138 287 91 278 106 285 b 185 302 166 287 175 291 b 196 333 193 312 196 323 b 174 369 196 347 187 360 b 152 374 166 373 159 374 b 111 351 140 374 126 367 b 62 327 95 335 80 327 b 51 328 58 327 54 327 b -1 391 16 334 -1 363 b 53 455 -1 420 17 449 b 62 455 57 455 59 455 b 111 431 80 455 95 448 b 152 408 127 415 140 408 b 161 409 155 408 159 408 b 193 433 176 413 186 420 l 196 440 l 196 448 b 196 451 196 449 196 449 b 190 471 196 459 194 463 b 137 495 182 489 167 495 l 134 495 l 134 495 b 68 560 95 495 68 521 b 129 623 68 596 95 623 b 144 621 134 623 138 623 b 193 553 175 614 193 589 b 224 495 193 517 200 503 b 238 492 228 492 234 492 b 279 538 259 492 279 512 b 254 580 279 549 269 566 b 232 630 239 594 232 612 b 280 692 232 657 250 684 m 307 456 b 295 458 303 458 299 458 b 230 391 258 458 230 426 b 236 360 230 381 231 371 b 295 324 249 337 272 324 b 353 360 318 324 341 337 b 360 391 357 370 360 381 b 307 456 360 421 340 451 ',\n },\n pictChokeCymbal: {\n x_min: 0,\n x_max: 227.3125,\n ha: 232,\n o: 'm 91 213 b 100 215 93 215 96 215 b 227 58 167 215 224 144 b 227 52 227 56 227 54 b 61 -201 227 -43 164 -138 b 29 -216 44 -212 36 -216 b 23 -210 27 -216 24 -213 b 21 -205 21 -208 21 -206 b 34 -192 21 -201 25 -197 b 122 -55 89 -161 122 -106 b 104 6 122 -33 117 -12 l 103 9 l 96 9 b 4 79 57 9 17 38 b 0 112 1 90 0 101 b 91 213 0 163 36 209 ',\n },\n wiggleArpeggiatoUp: {\n x_min: 58.53125,\n x_max: 228.671875,\n ha: 294,\n o: 'm 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 ',\n },\n arrowheadBlackUp: {\n x_min: -10.890625,\n x_max: 299.4375,\n ha: 294,\n o: 'm 136 460 b 142 462 137 462 140 462 b 166 449 152 462 161 456 b 171 428 168 446 168 445 b 288 131 194 322 238 209 b 298 115 295 120 296 117 b 299 106 298 112 299 109 b 273 81 299 91 287 81 b 255 86 268 81 261 83 b 155 116 225 104 183 116 l 152 116 l 149 108 b 141 83 148 102 144 91 b 134 48 137 69 134 58 b 149 9 134 34 140 24 b 153 -1 152 5 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 147 -11 b 122 2 138 -11 133 -6 b 95 61 104 20 95 38 b 107 108 95 74 99 90 b 108 113 107 111 108 112 b 107 113 108 113 108 113 b 102 113 106 113 104 113 b 31 86 76 108 53 98 b 14 80 24 81 20 80 b -10 106 0 80 -10 91 b 0 131 -10 115 -9 116 b 115 430 49 209 91 317 b 136 460 119 451 123 456 ',\n },\n arrowheadBlackDown: {\n x_min: -10.890625,\n x_max: 298.078125,\n ha: 294,\n o: 'm 138 473 b 142 474 140 473 141 474 b 164 459 148 474 153 470 b 191 402 183 442 191 423 b 181 353 191 388 187 371 b 178 349 179 352 178 349 b 179 348 178 348 179 348 b 185 349 181 348 182 348 b 255 376 210 355 234 363 b 272 381 264 381 266 381 b 298 355 287 381 298 370 b 288 330 298 348 298 345 b 171 34 238 254 194 141 b 166 13 168 16 168 16 b 144 1 161 5 152 1 b 121 15 134 1 125 5 b 115 33 119 18 117 24 b 0 330 91 145 49 252 b -10 355 -9 345 -10 348 b 13 381 -10 371 0 381 b 31 376 19 381 25 380 b 132 345 61 358 103 345 l 136 345 l 137 355 b 145 378 138 359 142 370 b 152 415 149 394 152 405 b 137 452 152 427 148 438 b 133 464 134 458 133 460 b 138 473 133 467 134 470 ',\n },\n vexAccidentalMicrotonal1: {\n x_min: -171.5,\n x_max: 483.1875,\n ha: 493,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 495 20 616 20 616 b 20 373 20 427 20 373 b 115 410 20 373 63 390 l 210 448 l 210 531 b 212 620 210 614 210 616 b 231 632 215 628 223 632 b 246 627 236 632 242 631 b 251 541 251 620 251 628 l 251 463 l 315 489 b 387 514 368 509 381 514 b 393 513 390 514 392 514 b 406 494 402 510 406 502 b 397 476 406 487 404 480 b 323 446 396 474 363 462 l 251 417 l 251 283 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -19 -217 -9 -229 -16 -224 l -20 -215 l -21 48 l -21 310 l -83 287 b -152 262 -133 266 -145 262 b -157 263 -153 262 -155 262 b -171 283 -166 266 -171 274 b -161 301 -171 290 -167 297 b -91 328 -160 302 -129 315 l -21 356 l -21 487 l -20 617 l -19 621 b -8 631 -17 626 -12 630 m 210 288 b 210 401 210 351 210 401 b 114 365 209 401 167 384 l 20 327 l 20 238 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 180 164 199 187 192 l 209 177 b 209 177 209 177 209 177 b 210 288 210 177 210 199 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 ',\n },\n vexAccidentalMicrotonal2: {\n x_min: -1.359375,\n x_max: 386.5625,\n ha: 394,\n o: 'm 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 ',\n },\n vexWiggleArpeggioUp: {\n x_min: 58.53125,\n x_max: 228.671875,\n ha: 294,\n o: 'm 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 ',\n },\n vexNoteHeadMutedBreve: {\n x_min: 0,\n x_max: 370.21875,\n ha: 378,\n o: 'm 0 0 l 0 277 l 61 277 l 122 277 l 122 0 l 122 -278 l 61 -278 l 0 -278 l 0 0 m 246 -1 l 246 277 l 308 277 l 370 277 l 370 -1 l 370 -278 l 308 -278 l 246 -278 l 246 -1 ',\n },\n },\n cssFontWeight: 'normal',\n ascender: 1903,\n underlinePosition: -125,\n cssFontStyle: 'normal',\n boundingBox: {\n yMin: -2065.375,\n xMin: -695.53125,\n yMax: 1901.578125,\n xMax: 1159.671875,\n },\n resolution: 1000,\n original_font_information: {\n postscript_name: 'Gonville-18',\n version_string: 'Version 0.1.8904 ',\n vendor_url: '',\n full_font_name: 'Gonville-18',\n font_family_name: 'Gonville-18',\n copyright: 'No copyright is claimed on this font file.',\n description: '',\n trademark: '',\n designer: '',\n designer_url: '',\n unique_font_identifier: 'FontForge 2.0 : Gonville-18 : 17-3-2010',\n license_url: '',\n license_description: '',\n manufacturer_name: '',\n font_sub_family_name: '18',\n },\n descender: -2066,\n fontFamily: 'Gonville-18',\n lineHeight: 4093,\n underlineThickness: 50,\n};\n","/**\n * The Gonville font was created by Simon Tatham.\n * https://www.chiark.greenend.org.uk/~sgtatham/gonville/\n */\nexport const GonvilleMetrics = {\n name: 'Gonville',\n smufl: false,\n stave: {\n padding: 12,\n endPaddingMax: 10,\n endPaddingMin: 5,\n unalignedNotePadding: 10,\n },\n accidental: {\n noteheadAccidentalPadding: 1,\n leftPadding: 2,\n accidentalSpacing: 3,\n },\n clef: {\n default: {\n point: 40,\n width: 26,\n },\n small: {\n point: 32,\n width: 20,\n },\n annotations: {\n '8va': {\n smuflCode: 'timeSig8',\n default: {\n point: 20,\n treble: {\n line: -1.2,\n shiftX: 11,\n },\n },\n small: {\n point: 18,\n treble: {\n line: -0.4,\n shiftX: 8,\n },\n },\n },\n '8vb': {\n smuflCode: 'timeSig8',\n default: {\n point: 20,\n treble: {\n line: 6.3,\n shiftX: 10,\n },\n bass: {\n line: 4,\n shiftX: 1,\n },\n },\n small: {\n point: 18,\n treble: {\n line: 5.8,\n shiftX: 6,\n },\n bass: {\n line: 3.5,\n shiftX: 0.5,\n },\n },\n },\n },\n // May not need these anymore\n lineCount: {\n '8': { point: 55, shiftY: 14 },\n '7': { point: 47, shiftY: 8 },\n '6': { point: 40, shiftY: 1 },\n '5': { point: 30, shiftY: -6 },\n '4': { point: 23, shiftY: -12 },\n },\n },\n parenthesis: {\n default: {\n point: 39,\n width: 7,\n },\n gracenote: {\n point: (39 * 3) / 5,\n width: 3,\n },\n },\n pedalMarking: {\n up: {\n point: 40,\n },\n down: {\n point: 40,\n },\n },\n // These are for numeric digits, such as in time signatures\n digits: {\n point: 40,\n tupletPoint: 28,\n },\n // articulation: {\n // },\n tremolo: {\n default: {\n point: 25,\n spacing: 4,\n offsetYStemUp: -7,\n offsetYStemDown: 7,\n offsetXStemUp: 9,\n offsetXStemDown: -0.5,\n },\n grace: {\n point: 15,\n spacing: 4,\n offsetYStemUp: -7,\n offsetYStemDown: 7,\n offsetXStemUp: 6.5,\n offsetXStemDown: -0.5,\n },\n },\n staveRepetition: {\n symbolText: {\n offsetX: 12,\n offsetY: 25,\n spacing: 5,\n },\n coda: {\n offsetY: 25,\n },\n segno: {\n offsetY: 0,\n },\n },\n // noteHead: {\n // },\n stem: {\n heightAdjustmentForFlag: -3,\n // These are stem (Y) offsets to the note heads. To shift the\n // noteheads (x-position) themselves, see glyphs.notehead.custom.\n noteHead: {\n noteheadTriangleUpHalf: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpBlack: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpWhole: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadXHalf: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXBlack: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXWhole: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadHalf: {\n offsetYBaseStemUp: -1.5,\n offsetYBaseStemDown: 1.5,\n },\n noteheadBlack: {\n offsetYBaseStemUp: -1.5,\n offsetYBaseStemDown: 1.5,\n },\n noteheadSquareWhite: {\n offsetYBaseStemDown: -5,\n offsetYBaseStemUp: 5,\n },\n },\n },\n glyphs: {\n flag: {\n shiftX: -0.08,\n flag8thDown: {\n shiftX: -0.16,\n },\n flag16thDown: {\n shiftX: -0.16,\n },\n flag32ndDown: {\n shiftX: -0.16,\n shiftY: 9,\n },\n flag64thDown: {\n shiftX: -0.16,\n shiftY: 13,\n },\n flag128thDown: {\n shiftX: -0.16,\n shiftY: 22,\n },\n flag32ndUp: {\n shiftY: -9,\n },\n flag64thUp: {\n shiftY: -13,\n },\n flag128thUp: {\n shiftY: -22,\n },\n },\n stringNumber: {\n verticalPadding: 8,\n stemPadding: 2,\n leftPadding: 5,\n rightPadding: 6,\n },\n textNote: {\n point: 40,\n default: {},\n ornamentTrill: {\n shiftX: -5,\n shiftY: 4,\n },\n },\n noteHead: {\n minPadding: 2,\n custom: {\n noteheadCircleXStemUp: {\n shiftX: -1.5,\n },\n noteheadXWholeStemUp: {\n shiftX: -5,\n },\n noteheadTriangleUpWholeStemUp: {\n shiftX: -6,\n },\n },\n },\n chordSymbol: {\n global: {\n superscriptOffset: -400,\n subscriptOffset: 300,\n kerningOffset: -250,\n lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'],\n upperKerningText: ['A', 'L'],\n spacing: 100,\n superSubRatio: 0.66,\n },\n csymDiminished: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymHalfDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymAugmented: {\n scale: 1,\n leftSideBearing: 0,\n advanceWidth: 530,\n yOffset: 0,\n },\n csymParensLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 155,\n yOffset: 250,\n },\n csymParensRightTall: {\n scale: 0.8,\n leftSideBearing: -40,\n advanceWidth: 189,\n yOffset: 250,\n },\n csymBracketLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 328,\n yOffset: 0,\n },\n csymBracketRightTall: {\n scale: 0.8,\n leftSideBearing: 1,\n advanceWidth: 600,\n yOffset: 0,\n },\n csymParensLeftVeryTall: {\n scale: 0.9,\n leftSideBearing: 0,\n advanceWidth: 121,\n yOffset: 350,\n },\n csymParensRightVeryTall: {\n scale: 0.9,\n leftSideBearing: 50,\n advanceWidth: 111,\n yOffset: 350,\n },\n csymDiagonalArrangementSlash: {\n scale: 0.6,\n leftSideBearing: -1,\n advanceWidth: 990,\n yOffset: 0,\n },\n csymMinor: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 482,\n yOffset: 0,\n },\n csymMajorSeventh: {\n scale: 0.9,\n leftSideBearing: 200,\n yOffset: 0,\n advanceWidth: 600,\n },\n accidentalSharp: {\n scale: 0.75,\n leftSideBearing: 40,\n advanceWidth: 250,\n yOffset: -402,\n },\n accidentalFlat: {\n scale: 0.95,\n leftSideBearing: -50,\n advanceWidth: 208,\n yOffset: -184,\n },\n },\n jazzOrnaments: {\n brassScoop: {\n scale: 1.0,\n xOffset: -12,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassDoitMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 22,\n },\n brassFallLipShort: {\n scale: 1.0,\n xOffset: 17,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassLiftMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 5,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassFallRoughMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 28,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassBend: {\n scale: 1.0,\n xOffset: 2,\n yOffset: -8,\n stemUpYOffset: 24,\n reportedWidth: 5,\n },\n brassMuteClosed: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -9,\n stemUpYOffset: 24,\n reportedWidth: 5,\n },\n brassMuteOpen: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -7,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassFlip: {\n scale: 1.0,\n xOffset: 10,\n yOffset: -4,\n stemUpYOffset: 7,\n reportedWidth: 5,\n },\n brassJazzTurn: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -4,\n stemUpYOffset: 10,\n reportedWidth: 28,\n },\n brassSmear: {\n scale: 1.0,\n xOffset: 10,\n yOffset: -4,\n stemUpYOffset: 9,\n reportedWidth: 5,\n },\n },\n tremolo: {\n default: {\n shiftY: -10,\n },\n grace: {\n shiftY: -5,\n },\n },\n tuplet: {\n noteHeadOffset: 20,\n stemOffset: 10,\n bottomLine: 4,\n topModifierOffset: 15,\n },\n },\n};\n","export const PetalumaScriptFont = {\n spacing: 50,\n glyphs: {\n ' ': {\n x_min: 0,\n x_max: 250,\n y_min: 0,\n y_max: 500,\n ha: 500,\n leftSideBearing: 0,\n advanceWidth: 250,\n },\n '0': {\n x_min: 33,\n x_max: 534,\n y_min: -13,\n y_max: 751,\n ha: 764,\n leftSideBearing: 33,\n advanceWidth: 570,\n },\n '1': {\n x_min: 48,\n x_max: 235,\n y_min: -17,\n y_max: 734,\n ha: 751,\n leftSideBearing: 48,\n advanceWidth: 286,\n },\n '2': {\n x_min: 56,\n x_max: 571,\n y_min: -19,\n y_max: 741,\n ha: 760,\n leftSideBearing: 56,\n advanceWidth: 626,\n },\n '3': {\n x_min: 50,\n x_max: 528,\n y_min: -7,\n y_max: 731,\n ha: 738,\n leftSideBearing: 50,\n advanceWidth: 589,\n },\n '4': {\n x_min: 38,\n x_max: 564,\n y_min: -13,\n y_max: 743,\n ha: 756,\n leftSideBearing: 38,\n advanceWidth: 614,\n },\n '5': {\n x_min: 42,\n x_max: 601,\n y_min: -34,\n y_max: 743,\n ha: 777,\n leftSideBearing: 42,\n advanceWidth: 648,\n },\n '6': {\n x_min: 47,\n x_max: 606,\n y_min: -16,\n y_max: 743,\n ha: 759,\n leftSideBearing: 47,\n advanceWidth: 667,\n },\n '7': {\n x_min: 47,\n x_max: 567,\n y_min: 5,\n y_max: 739,\n ha: 734,\n leftSideBearing: 0,\n advanceWidth: 615,\n },\n '8': {\n x_min: 40,\n x_max: 541,\n y_min: -15,\n y_max: 752,\n ha: 767,\n leftSideBearing: 40,\n advanceWidth: 585,\n },\n '9': {\n x_min: 40,\n x_max: 537,\n y_min: -52,\n y_max: 736,\n ha: 788,\n leftSideBearing: 40,\n advanceWidth: 592,\n },\n '!': {\n x_min: 49,\n x_max: 180,\n y_min: -7,\n y_max: 761,\n ha: 768,\n leftSideBearing: 49,\n advanceWidth: 230,\n },\n '\"': {\n x_min: 39,\n x_max: 304,\n y_min: 596,\n y_max: 804,\n ha: 208,\n leftSideBearing: 39,\n advanceWidth: 353,\n },\n '#': {\n x_min: 33,\n x_max: 599,\n y_min: -8,\n y_max: 765,\n ha: 773,\n leftSideBearing: 33,\n advanceWidth: 648,\n },\n $: {\n x_min: 53,\n x_max: 495,\n y_min: -111,\n y_max: 823,\n ha: 934,\n leftSideBearing: 53,\n advanceWidth: 560,\n },\n '%': {\n x_min: 35,\n x_max: 656,\n y_min: -128,\n y_max: 808,\n ha: 936,\n leftSideBearing: 35,\n advanceWidth: 711,\n },\n '&': {\n x_min: 53,\n x_max: 441,\n y_min: -3,\n y_max: 753,\n ha: 756,\n leftSideBearing: 53,\n advanceWidth: 500,\n },\n \"'\": {\n x_min: 43,\n x_max: 161,\n y_min: 590,\n y_max: 811,\n ha: 221,\n leftSideBearing: 43,\n advanceWidth: 217,\n },\n '(': {\n x_min: 41,\n x_max: 311,\n y_min: -36,\n y_max: 845,\n ha: 881,\n leftSideBearing: 41,\n advanceWidth: 308,\n },\n ')': {\n x_min: -8,\n x_max: 257,\n y_min: -21,\n y_max: 852,\n ha: 873,\n leftSideBearing: -8,\n advanceWidth: 280,\n },\n '*': {\n x_min: 59,\n x_max: 539,\n y_min: 175,\n y_max: 589,\n ha: 414,\n leftSideBearing: 59,\n advanceWidth: 601,\n },\n '+': {\n x_min: 33,\n x_max: 361,\n y_min: 180,\n y_max: 587,\n ha: 407,\n leftSideBearing: 33,\n advanceWidth: 400,\n },\n ',': {\n x_min: 15,\n x_max: 176,\n y_min: -129,\n y_max: 92,\n ha: 221,\n leftSideBearing: 15,\n advanceWidth: 205,\n },\n '-': {\n x_min: 40,\n x_max: 380,\n y_min: 317,\n y_max: 452,\n ha: 135,\n leftSideBearing: 40,\n advanceWidth: 422,\n },\n '.': {\n x_min: 48,\n x_max: 185,\n y_min: -56,\n y_max: 84,\n ha: 140,\n leftSideBearing: 48,\n advanceWidth: 227,\n },\n '/': {\n x_min: -58,\n x_max: 654,\n y_min: -122,\n y_max: 844,\n ha: 966,\n leftSideBearing: -58,\n advanceWidth: 626,\n },\n ':': {\n x_min: 65,\n x_max: 225,\n y_min: 97,\n y_max: 536,\n ha: 439,\n leftSideBearing: 65,\n advanceWidth: 302,\n },\n ';': {\n x_min: 13,\n x_max: 295,\n y_min: -139,\n y_max: 536,\n ha: 675,\n leftSideBearing: 13,\n advanceWidth: 334,\n },\n '<': {\n x_min: 28,\n x_max: 438,\n y_min: -1,\n y_max: 607,\n ha: 608,\n leftSideBearing: 28,\n advanceWidth: 475,\n },\n '=': {\n x_min: 40,\n x_max: 383,\n y_min: 199.9598640852289,\n y_max: 541,\n ha: 341.0401359147711,\n leftSideBearing: 40,\n advanceWidth: 422,\n },\n '>': {\n x_min: 35,\n x_max: 421,\n y_min: 28,\n y_max: 632,\n ha: 604,\n leftSideBearing: 35,\n advanceWidth: 466,\n },\n '?': {\n x_min: 45,\n x_max: 548,\n y_min: -17,\n y_max: 767,\n ha: 784,\n leftSideBearing: 45,\n advanceWidth: 592,\n },\n '@': {\n x_min: 51,\n x_max: 730,\n y_min: -78,\n y_max: 753,\n ha: 831,\n leftSideBearing: 51,\n advanceWidth: 781,\n },\n A: {\n x_min: 37,\n x_max: 554,\n y_min: -4,\n y_max: 746,\n ha: 750,\n leftSideBearing: 37,\n advanceWidth: 617,\n },\n B: {\n x_min: 37,\n x_max: 532,\n y_min: 3,\n y_max: 783,\n ha: 780,\n leftSideBearing: 37,\n advanceWidth: 579,\n },\n C: {\n x_min: 37,\n x_max: 583,\n y_min: -3,\n y_max: 775,\n ha: 778,\n leftSideBearing: 37,\n advanceWidth: 623,\n },\n D: {\n x_min: 50,\n x_max: 530,\n y_min: -15,\n y_max: 749,\n ha: 764,\n leftSideBearing: 50,\n advanceWidth: 579,\n },\n E: {\n x_min: 45,\n x_max: 531,\n y_min: -1,\n y_max: 743,\n ha: 744,\n leftSideBearing: 45,\n advanceWidth: 585,\n },\n F: {\n x_min: 45,\n x_max: 459,\n y_min: 23,\n y_max: 727,\n ha: 704,\n leftSideBearing: 45,\n advanceWidth: 510,\n },\n G: {\n x_min: 31,\n x_max: 577,\n y_min: -8,\n y_max: 733,\n ha: 741,\n leftSideBearing: 31,\n advanceWidth: 611,\n },\n H: {\n x_min: 37,\n x_max: 493,\n y_min: -22,\n y_max: 758,\n ha: 780,\n leftSideBearing: 37,\n advanceWidth: 535,\n },\n I: {\n x_min: 47,\n x_max: 501,\n y_min: -3,\n y_max: 731,\n ha: 734,\n leftSideBearing: 47,\n advanceWidth: 541,\n },\n J: {\n x_min: 33,\n x_max: 531,\n y_min: -23,\n y_max: 725,\n ha: 748,\n leftSideBearing: 33,\n advanceWidth: 573,\n },\n K: {\n x_min: 43,\n x_max: 505,\n y_min: -10,\n y_max: 740,\n ha: 750,\n leftSideBearing: 43,\n advanceWidth: 560,\n },\n L: {\n x_min: 49,\n x_max: 457,\n y_min: -2,\n y_max: 746,\n ha: 748,\n leftSideBearing: 49,\n advanceWidth: 510,\n },\n M: {\n x_min: 35,\n x_max: 699,\n y_min: 1,\n y_max: 744,\n ha: 743,\n leftSideBearing: 35,\n advanceWidth: 743,\n },\n N: {\n x_min: 34,\n x_max: 533,\n y_min: -17,\n y_max: 761,\n ha: 778,\n leftSideBearing: 34,\n advanceWidth: 579,\n },\n O: {\n x_min: 41,\n x_max: 608,\n y_min: -5,\n y_max: 735,\n ha: 740,\n leftSideBearing: 41,\n advanceWidth: 667,\n },\n P: {\n x_min: 53,\n x_max: 451,\n y_min: -18,\n y_max: 735,\n ha: 753,\n leftSideBearing: 53,\n advanceWidth: 497,\n },\n Q: {\n x_min: 40,\n x_max: 599,\n y_min: -67,\n y_max: 744,\n ha: 811,\n leftSideBearing: 40,\n advanceWidth: 648,\n },\n R: {\n x_min: 39,\n x_max: 487,\n y_min: 16,\n y_max: 735,\n ha: 719,\n leftSideBearing: 39,\n advanceWidth: 535,\n },\n S: {\n x_min: 35,\n x_max: 552,\n y_min: -47,\n y_max: 708,\n ha: 755,\n leftSideBearing: 35,\n advanceWidth: 604,\n },\n T: {\n x_min: 26,\n x_max: 656,\n y_min: -13,\n y_max: 718,\n ha: 731,\n leftSideBearing: 26,\n advanceWidth: 705,\n },\n U: {\n x_min: 41,\n x_max: 518,\n y_min: -20,\n y_max: 748,\n ha: 768,\n leftSideBearing: 41,\n advanceWidth: 567,\n },\n V: {\n x_min: 47,\n x_max: 509,\n y_min: -26,\n y_max: 744,\n ha: 770,\n leftSideBearing: 47,\n advanceWidth: 567,\n },\n W: {\n x_min: 44,\n x_max: 789,\n y_min: -35,\n y_max: 720,\n ha: 755,\n leftSideBearing: 44,\n advanceWidth: 833,\n },\n X: {\n x_min: 63,\n x_max: 635,\n y_min: -10,\n y_max: 745,\n ha: 755,\n leftSideBearing: 63,\n advanceWidth: 680,\n },\n Y: {\n x_min: 43,\n x_max: 503,\n y_min: -21,\n y_max: 734,\n ha: 755,\n leftSideBearing: 43,\n advanceWidth: 541,\n },\n Z: {\n x_min: 42,\n x_max: 584,\n y_min: -10,\n y_max: 739,\n ha: 749,\n leftSideBearing: 42,\n advanceWidth: 629,\n },\n '[': {\n x_min: 46,\n x_max: 346,\n y_min: -150,\n y_max: 884,\n ha: 1034,\n leftSideBearing: 46,\n advanceWidth: 291,\n },\n '\\\\': {\n x_min: 20,\n x_max: 616,\n y_min: -100,\n y_max: 797,\n ha: 897,\n leftSideBearing: 20,\n advanceWidth: 645,\n },\n ']': {\n x_min: -76,\n x_max: 226,\n y_min: -150,\n y_max: 881,\n ha: 1031,\n leftSideBearing: -76,\n advanceWidth: 297,\n },\n '^': {\n x_min: 43,\n x_max: 437,\n y_min: 517,\n y_max: 812,\n ha: 295,\n leftSideBearing: 43,\n advanceWidth: 478,\n },\n _: {\n x_min: 29,\n x_max: 563,\n y_min: -110,\n y_max: -1,\n ha: 109,\n leftSideBearing: 29,\n advanceWidth: 598,\n },\n '`': {\n x_min: 54,\n x_max: 321,\n y_min: 540,\n y_max: 747,\n ha: 207,\n leftSideBearing: 54,\n advanceWidth: 368,\n },\n a: {\n x_min: 20,\n x_max: 447,\n y_min: -17,\n y_max: 495,\n ha: 512,\n leftSideBearing: 20,\n advanceWidth: 494,\n },\n b: {\n x_min: 37,\n x_max: 466,\n y_min: -27,\n y_max: 770,\n ha: 797,\n leftSideBearing: 37,\n advanceWidth: 510,\n },\n c: {\n x_min: 35,\n x_max: 456,\n y_min: -9,\n y_max: 507,\n ha: 516,\n leftSideBearing: 35,\n advanceWidth: 460,\n },\n d: {\n x_min: 45,\n x_max: 520,\n y_min: -15,\n y_max: 764,\n ha: 779,\n leftSideBearing: 45,\n advanceWidth: 560,\n },\n e: {\n x_min: 33,\n x_max: 370,\n y_min: -5,\n y_max: 501,\n ha: 506,\n leftSideBearing: 33,\n advanceWidth: 397,\n },\n f: {\n x_min: 35,\n x_max: 411,\n y_min: -13,\n y_max: 695,\n ha: 708,\n leftSideBearing: 35,\n advanceWidth: 453,\n },\n g: {\n x_min: 33,\n x_max: 551,\n y_min: -257,\n y_max: 505,\n ha: 762,\n leftSideBearing: 33,\n advanceWidth: 611,\n },\n h: {\n x_min: 32,\n x_max: 458,\n y_min: -29,\n y_max: 743,\n ha: 772,\n leftSideBearing: 32,\n advanceWidth: 491,\n },\n i: {\n x_min: 45,\n x_max: 167,\n y_min: -13,\n y_max: 631,\n ha: 644,\n leftSideBearing: 45,\n advanceWidth: 220,\n },\n j: {\n x_min: -127,\n x_max: 261,\n y_min: -231,\n y_max: 601,\n ha: 832,\n leftSideBearing: -127,\n advanceWidth: 308,\n },\n k: {\n x_min: 39,\n x_max: 443,\n y_min: -3,\n y_max: 700,\n ha: 703,\n leftSideBearing: 39,\n advanceWidth: 497,\n },\n l: {\n x_min: 58,\n x_max: 168,\n y_min: -8,\n y_max: 686,\n ha: 694,\n leftSideBearing: 58,\n advanceWidth: 227,\n },\n m: {\n x_min: 39,\n x_max: 688,\n y_min: -14,\n y_max: 501,\n ha: 515,\n leftSideBearing: 39,\n advanceWidth: 718,\n },\n n: {\n x_min: 45,\n x_max: 491,\n y_min: -32,\n y_max: 512,\n ha: 544,\n leftSideBearing: 45,\n advanceWidth: 541,\n },\n o: {\n x_min: 41,\n x_max: 424,\n y_min: -12,\n y_max: 493,\n ha: 505,\n leftSideBearing: 41,\n advanceWidth: 447,\n },\n p: {\n x_min: 25,\n x_max: 529,\n y_min: -260,\n y_max: 500,\n ha: 760,\n leftSideBearing: 25,\n advanceWidth: 573,\n },\n q: {\n x_min: 53,\n x_max: 603,\n y_min: -235,\n y_max: 514,\n ha: 749,\n leftSideBearing: 53,\n advanceWidth: 623,\n },\n r: {\n x_min: 32,\n x_max: 407,\n y_min: -7,\n y_max: 492,\n ha: 499,\n leftSideBearing: 32,\n advanceWidth: 460,\n },\n s: {\n x_min: 49,\n x_max: 416,\n y_min: -12,\n y_max: 519,\n ha: 531,\n leftSideBearing: 49,\n advanceWidth: 460,\n },\n t: {\n x_min: 32,\n x_max: 442,\n y_min: -5,\n y_max: 684,\n ha: 689,\n leftSideBearing: 32,\n advanceWidth: 469,\n },\n u: {\n x_min: 41,\n x_max: 487,\n y_min: -5,\n y_max: 507,\n ha: 512,\n leftSideBearing: 41,\n advanceWidth: 510,\n },\n v: {\n x_min: 16,\n x_max: 441,\n y_min: -20,\n y_max: 542,\n ha: 562,\n leftSideBearing: 16,\n advanceWidth: 456,\n },\n w: {\n x_min: 39,\n x_max: 639,\n y_min: -22,\n y_max: 505,\n ha: 527,\n leftSideBearing: 39,\n advanceWidth: 661,\n },\n x: {\n x_min: 15,\n x_max: 505,\n y_min: -39,\n y_max: 539,\n ha: 578,\n leftSideBearing: 15,\n advanceWidth: 541,\n },\n y: {\n x_min: -98,\n x_max: 501,\n y_min: -242,\n y_max: 511,\n ha: 753,\n leftSideBearing: -98,\n advanceWidth: 548,\n },\n z: {\n x_min: 27,\n x_max: 479,\n y_min: -3,\n y_max: 494,\n ha: 497,\n leftSideBearing: 27,\n advanceWidth: 494,\n },\n '{': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '|': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '}': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '~': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n },\n fontFamily: 'PetalumaScript',\n resolution: 1000,\n generatedOn: '2020-06-14T18:33:25.407Z',\n};\n","export const RobotoSlabFont = {\n spacing: 50,\n glyphs: {\n ' ': {\n x_min: 0,\n x_max: 509,\n y_min: 0,\n y_max: 2000,\n ha: 2000,\n leftSideBearing: 0,\n advanceWidth: 509,\n },\n '0': {\n x_min: 121,\n x_max: 1048,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 121,\n advanceWidth: 1168,\n },\n '1': {\n x_min: 117,\n x_max: 767,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 117,\n advanceWidth: 844,\n },\n '2': {\n x_min: 75.8474576645637,\n x_max: 1040,\n y_min: 0,\n y_max: 1477,\n ha: 1477,\n leftSideBearing: 75,\n advanceWidth: 1131,\n },\n '3': {\n x_min: 74.85365853658536,\n x_max: 994,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 74,\n advanceWidth: 1106,\n },\n '4': {\n x_min: 63,\n x_max: 1114,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 63,\n advanceWidth: 1187,\n },\n '5': {\n x_min: 96.8448275474953,\n x_max: 982,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 96,\n advanceWidth: 1081,\n },\n '6': {\n x_min: 121,\n x_max: 1067,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 121,\n advanceWidth: 1144,\n },\n '7': {\n x_min: 76,\n x_max: 1060,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: -30,\n advanceWidth: 1128,\n },\n '8': {\n x_min: 92,\n x_max: 1039,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 92,\n advanceWidth: 1131,\n },\n '9': {\n x_min: 84,\n x_max: 1026,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 84,\n advanceWidth: 1154,\n },\n '!': {\n x_min: 143,\n x_max: 340,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 143,\n advanceWidth: 483,\n },\n '\"': {\n x_min: 166,\n x_max: 634,\n y_min: 1055,\n y_max: 1560,\n ha: 505,\n leftSideBearing: 166,\n advanceWidth: 770,\n },\n '#': {\n x_min: 63,\n x_max: 1179,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 63,\n advanceWidth: 1246,\n },\n $: {\n x_min: 81.92156915727656,\n x_max: 1012,\n y_min: -208,\n y_max: 1693,\n ha: 1901,\n leftSideBearing: 81,\n advanceWidth: 1110,\n },\n '%': {\n x_min: 77,\n x_max: 1384,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 77,\n advanceWidth: 1460,\n },\n '&': {\n x_min: 74,\n x_max: 1242,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 74,\n advanceWidth: 1289,\n },\n \"'\": {\n x_min: 166,\n x_max: 324,\n y_min: 1055,\n y_max: 1560,\n ha: 505,\n leftSideBearing: 166,\n advanceWidth: 460,\n },\n '(': {\n x_min: 114,\n x_max: 650,\n y_min: -463,\n y_max: 1636,\n ha: 2099,\n leftSideBearing: 114,\n advanceWidth: 662,\n },\n ')': {\n x_min: 11,\n x_max: 547,\n y_min: -463,\n y_max: 1636,\n ha: 2099,\n leftSideBearing: 11,\n advanceWidth: 654,\n },\n '*': {\n x_min: 66,\n x_max: 893,\n y_min: 607,\n y_max: 1456,\n ha: 849,\n leftSideBearing: 66,\n advanceWidth: 958,\n },\n '+': {\n x_min: 73,\n x_max: 1071,\n y_min: 146,\n y_max: 1206,\n ha: 1060,\n leftSideBearing: 73,\n advanceWidth: 1145,\n },\n ',': {\n x_min: 23,\n x_max: 315,\n y_min: -311,\n y_max: 221,\n ha: 532,\n leftSideBearing: 23,\n advanceWidth: 404,\n },\n '-': {\n x_min: 154,\n x_max: 643,\n y_min: 538,\n y_max: 692,\n ha: 154,\n leftSideBearing: 154,\n advanceWidth: 797,\n },\n '.': {\n x_min: 145,\n x_max: 342,\n y_min: 0,\n y_max: 202,\n ha: 202,\n leftSideBearing: 145,\n advanceWidth: 493,\n },\n '/': {\n x_min: 0,\n x_max: 774,\n y_min: -125,\n y_max: 1456,\n ha: 1581,\n leftSideBearing: 0,\n advanceWidth: 824,\n },\n ':': {\n x_min: 145,\n x_max: 342,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 145,\n advanceWidth: 419,\n },\n ';': {\n x_min: 53,\n x_max: 345,\n y_min: -311,\n y_max: 1082,\n ha: 1393,\n leftSideBearing: 53,\n advanceWidth: 424,\n },\n '<': {\n x_min: 76,\n x_max: 892,\n y_min: 107,\n y_max: 1013,\n ha: 906,\n leftSideBearing: 76,\n advanceWidth: 1017,\n },\n '=': {\n x_min: 147,\n x_max: 981,\n y_min: 407,\n y_max: 987,\n ha: 580,\n leftSideBearing: 147,\n advanceWidth: 1127,\n },\n '>': {\n x_min: 125,\n x_max: 980,\n y_min: 87,\n y_max: 993,\n ha: 906,\n leftSideBearing: 125,\n advanceWidth: 1060,\n },\n '?': {\n x_min: 65.92660602419838,\n x_max: 890,\n y_min: 0,\n y_max: 1477,\n ha: 1477,\n leftSideBearing: 65,\n advanceWidth: 953,\n },\n '@': {\n x_min: 84.3592218305664,\n x_max: 1705.2346925277395,\n y_min: -453,\n y_max: 1431,\n ha: 1884,\n leftSideBearing: 84,\n advanceWidth: 1821,\n },\n A: {\n x_min: 70,\n x_max: 1463,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 70,\n advanceWidth: 1533,\n },\n B: {\n x_min: 81,\n x_max: 1253,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1322,\n },\n C: {\n x_min: 80,\n x_max: 1174,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 80,\n advanceWidth: 1290,\n },\n D: {\n x_min: 81,\n x_max: 1291,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1356,\n },\n E: {\n x_min: 81,\n x_max: 1190,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1306,\n },\n F: {\n x_min: 81,\n x_max: 1176,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1256,\n },\n G: {\n x_min: 80,\n x_max: 1226,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 80,\n advanceWidth: 1346,\n },\n H: {\n x_min: 81,\n x_max: 1497,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1578,\n },\n I: {\n x_min: 81,\n x_max: 604,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 685,\n },\n J: {\n x_min: 60,\n x_max: 1100,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 60,\n advanceWidth: 1169,\n },\n K: {\n x_min: 81,\n x_max: 1427,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1501,\n },\n L: {\n x_min: 81,\n x_max: 1130,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1210,\n },\n M: {\n x_min: 94,\n x_max: 1888,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 94,\n advanceWidth: 1982,\n },\n N: {\n x_min: 83,\n x_max: 1509,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 83,\n advanceWidth: 1592,\n },\n O: {\n x_min: 70,\n x_max: 1281,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 70,\n advanceWidth: 1351,\n },\n P: {\n x_min: 81,\n x_max: 1242,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1297,\n },\n Q: {\n x_min: 70,\n x_max: 1348,\n y_min: -245,\n y_max: 1477,\n ha: 1722,\n leftSideBearing: 70,\n advanceWidth: 1376,\n },\n R: {\n x_min: 81,\n x_max: 1285,\n y_min: 0,\n y_max: 1455,\n ha: 1455,\n leftSideBearing: 81,\n advanceWidth: 1385,\n },\n S: {\n x_min: 115,\n x_max: 1116,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 115,\n advanceWidth: 1206,\n },\n T: {\n x_min: 96,\n x_max: 1306,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 96,\n advanceWidth: 1406,\n },\n U: {\n x_min: 70,\n x_max: 1452,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 70,\n advanceWidth: 1522,\n },\n V: {\n x_min: 65,\n x_max: 1443,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 65,\n advanceWidth: 1508,\n },\n W: {\n x_min: 72,\n x_max: 2057,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 72,\n advanceWidth: 2129,\n },\n X: {\n x_min: 80,\n x_max: 1449,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 80,\n advanceWidth: 1529,\n },\n Y: {\n x_min: 65,\n x_max: 1396,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 65,\n advanceWidth: 1461,\n },\n Z: {\n x_min: 90,\n x_max: 1107,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 90,\n advanceWidth: 1197,\n },\n '[': {\n x_min: 157,\n x_max: 541,\n y_min: -312,\n y_max: 1664,\n ha: 1976,\n leftSideBearing: 157,\n advanceWidth: 573,\n },\n '\\\\': {\n x_min: 36,\n x_max: 830,\n y_min: -125,\n y_max: 1456,\n ha: 1581,\n leftSideBearing: 36,\n advanceWidth: 841,\n },\n ']': {\n x_min: 23,\n x_max: 408,\n y_min: -312,\n y_max: 1664,\n ha: 1976,\n leftSideBearing: 23,\n advanceWidth: 552,\n },\n '^': {\n x_min: 71,\n x_max: 802,\n y_min: 729,\n y_max: 1456,\n ha: 727,\n leftSideBearing: 71,\n advanceWidth: 864,\n },\n _: {\n x_min: 119,\n x_max: 1041,\n y_min: -154,\n y_max: 0,\n ha: 154,\n leftSideBearing: 119,\n advanceWidth: 1168,\n },\n '`': {\n x_min: 40,\n x_max: 456,\n y_min: 1288,\n y_max: 1560,\n ha: 272,\n leftSideBearing: 40,\n advanceWidth: 496,\n },\n a: {\n x_min: 79,\n x_max: 1053,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 79,\n advanceWidth: 1132,\n },\n b: {\n x_min: -16,\n x_max: 1071,\n y_min: -21,\n y_max: 1560,\n ha: 1581,\n leftSideBearing: -16,\n advanceWidth: 1145,\n },\n c: {\n x_min: 78,\n x_max: 988,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 78,\n advanceWidth: 1067,\n },\n d: {\n x_min: 78,\n x_max: 1156,\n y_min: -21,\n y_max: 1560,\n ha: 1581,\n leftSideBearing: 78,\n advanceWidth: 1218,\n },\n e: {\n x_min: 74,\n x_max: 980,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 74,\n advanceWidth: 1059,\n },\n f: {\n x_min: 64,\n x_max: 731,\n y_min: 0,\n y_max: 1581,\n ha: 1581,\n leftSideBearing: 64,\n advanceWidth: 725,\n },\n g: {\n x_min: 78,\n x_max: 1133,\n y_min: -437,\n y_max: 1102,\n ha: 1539,\n leftSideBearing: 78,\n advanceWidth: 1157,\n },\n h: {\n x_min: 49,\n x_max: 1255,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 49,\n advanceWidth: 1315,\n },\n i: {\n x_min: 67,\n x_max: 590,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 67,\n advanceWidth: 652,\n },\n j: {\n x_min: -56,\n x_max: 381,\n y_min: -437,\n y_max: 1560,\n ha: 1997,\n leftSideBearing: -56,\n advanceWidth: 525,\n },\n k: {\n x_min: 64,\n x_max: 1248,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 64,\n advanceWidth: 1287,\n },\n l: {\n x_min: 64,\n x_max: 587,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 64,\n advanceWidth: 653,\n },\n m: {\n x_min: 74,\n x_max: 1905,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 74,\n advanceWidth: 1977,\n },\n n: {\n x_min: 74,\n x_max: 1278,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 74,\n advanceWidth: 1343,\n },\n o: {\n x_min: 78,\n x_max: 1046,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 78,\n advanceWidth: 1124,\n },\n p: {\n x_min: 34,\n x_max: 1119,\n y_min: -416,\n y_max: 1102,\n ha: 1518,\n leftSideBearing: 34,\n advanceWidth: 1197,\n },\n q: {\n x_min: 78,\n x_max: 1135,\n y_min: -416,\n y_max: 1102,\n ha: 1518,\n leftSideBearing: 78,\n advanceWidth: 1139,\n },\n r: {\n x_min: 72,\n x_max: 808,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 72,\n advanceWidth: 854,\n },\n s: {\n x_min: 104,\n x_max: 933,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 104,\n advanceWidth: 1022,\n },\n t: {\n x_min: 24,\n x_max: 678,\n y_min: -17,\n y_max: 1343,\n ha: 1360,\n leftSideBearing: 24,\n advanceWidth: 730,\n },\n u: {\n x_min: 52,\n x_max: 1181,\n y_min: -21,\n y_max: 1082,\n ha: 1103,\n leftSideBearing: 52,\n advanceWidth: 1245,\n },\n v: {\n x_min: 26,\n x_max: 1176,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 26,\n advanceWidth: 1206,\n },\n w: {\n x_min: 52,\n x_max: 1777,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 52,\n advanceWidth: 1823,\n },\n x: {\n x_min: 42,\n x_max: 1163,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 42,\n advanceWidth: 1203,\n },\n y: {\n x_min: 24,\n x_max: 1172,\n y_min: -437,\n y_max: 1082,\n ha: 1519,\n leftSideBearing: 24,\n advanceWidth: 1192,\n },\n z: {\n x_min: 88,\n x_max: 960,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 88,\n advanceWidth: 1032,\n },\n '{': {\n x_min: 63,\n x_max: 671,\n y_min: -364,\n y_max: 1597,\n ha: 1961,\n leftSideBearing: 63,\n advanceWidth: 701,\n },\n '|': {\n x_min: 150,\n x_max: 307,\n y_min: -270,\n y_max: 1456,\n ha: 1726,\n leftSideBearing: 150,\n advanceWidth: 451,\n },\n '}': {\n x_min: 27,\n x_max: 635,\n y_min: -364,\n y_max: 1597,\n ha: 1961,\n leftSideBearing: 27,\n advanceWidth: 701,\n },\n '~': {\n x_min: 121,\n x_max: 1257,\n y_min: 401,\n y_max: 803,\n ha: 402,\n leftSideBearing: 121,\n advanceWidth: 1386,\n },\n },\n fontFamily: 'Roboto Slab',\n resolution: 2048,\n generatedOn: '2020-06-15T19:12:58.120Z',\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Utility methods used by the rest of the VexFlow codebase.\nimport { Flow } from './flow';\nimport { log, RuntimeError } from './util';\nexport class Vex {\n // Users of `Vex.forEach(a, fn)` should use `Array.prototype.forEach()` instead.\n // static forEach(arr: T[], callbackFn: (value: T, index: number, array: T[]) => void) {\n // arr.forEach(callbackFn);\n // }\n /**\n * Take `arr` and return a new list consisting of the sorted, unique,\n * contents of arr. Does not modify `arr`.\n */\n // eslint-disable-next-line\n static sortAndUnique(arr, cmp, eq) {\n if (arr.length > 1) {\n const newArr = [];\n let last;\n arr.sort(cmp);\n for (let i = 0; i < arr.length; ++i) {\n if (i === 0 || !eq(arr[i], last)) {\n newArr.push(arr[i]);\n }\n last = arr[i];\n }\n return newArr;\n }\n else {\n return arr;\n }\n }\n /** Check if array `arr` contains `obj`. */\n // eslint-disable-next-line\n static contains(arr, obj) {\n let i = arr.length;\n while (i--) {\n if (arr[i] === obj) {\n return true;\n }\n }\n return false;\n }\n // Get the 2D Canvas context from DOM element `canvas_sel`.\n static getCanvasContext(canvasSelector) {\n if (!canvasSelector) {\n throw new RuntimeError('BadArgument', 'Invalid canvas selector: ' + canvasSelector);\n }\n const canvas = document.getElementById(canvasSelector);\n if (!(canvas && canvas.getContext)) {\n throw new RuntimeError('UnsupportedBrowserError', 'This browser does not support HTML5 Canvas');\n }\n return canvas.getContext('2d');\n }\n /** Benchmark. Run function `f` once and report time elapsed shifted by `s` milliseconds. */\n // eslint-disable-next-line\n static benchmark(s, f) {\n const start_time = new Date().getTime();\n f();\n const elapsed = new Date().getTime() - start_time;\n log(s, elapsed + 'ms');\n }\n // Get stack trace.\n static stackTrace() {\n const err = new Error();\n return err.stack;\n }\n}\nVex.Flow = Flow;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { GonvilleFont } from './gonville_glyphs';\nimport { GonvilleMetrics } from './gonville_metrics';\nexport function loadGonville() {\n Font.load('Gonville', GonvilleFont, GonvilleMetrics);\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { CustomFont } from './custom_glyphs';\nimport { CustomMetrics } from './custom_metrics';\nexport function loadCustom() {\n Font.load('Custom', CustomFont, CustomMetrics);\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// vexflow-gonville.ts is the entry point for vexflow-gonville.js.\n// This version bundles the Gonville music engraving font.\nimport { Flow } from '../src/flow';\nimport { loadCustom } from '../src/fonts/load_custom';\nimport { loadGonville } from '../src/fonts/load_gonville';\nimport { loadTextFonts } from '../src/fonts/textfonts';\nloadGonville();\nloadCustom();\nFlow.setMusicFont('Gonville', 'Custom');\nloadTextFonts();\n// Re-export all exports from index.ts.\nexport * from '../src/index';\n// Also collect all exports into a default export for CJS projects.\nexport * as default from '../src/index';\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { TextFormatter } from '../textformatter';\nimport { PetalumaScriptFont } from './petalumascript_glyphs';\nimport { RobotoSlabFont } from './robotoslab_glyphs';\nexport function loadTextFonts() {\n // Roboto Slab\n {\n const fontData = RobotoSlabFont;\n const { fontFamily, resolution, glyphs } = fontData;\n Font.load(fontFamily, fontData);\n // Previously we used 'H', but it isn't actually the tallest or the widest.\n // Interestingly, the lowercase 'b' is the tallest glyph.\n const maxSizeGlyph = 'b';\n TextFormatter.registerInfo({\n family: fontFamily,\n resolution,\n glyphs,\n maxSizeGlyph,\n monospaced: false,\n bold: false,\n italic: false,\n superscriptOffset: 0.66,\n subscriptOffset: 0.66,\n serifs: true,\n description: 'Text font to pair with the Bravura / Gonville music fonts.',\n });\n }\n // PetalumaScript\n {\n const fontData = PetalumaScriptFont;\n const { fontFamily, resolution, glyphs } = fontData;\n Font.load(fontFamily, fontData);\n // M is wider, but H is taller. :-)\n // Lowercase b is also taller in this font.\n const maxSizeGlyph = 'b';\n TextFormatter.registerInfo({\n family: fontFamily,\n resolution,\n glyphs,\n maxSizeGlyph,\n monospaced: false,\n bold: false,\n italic: false,\n superscriptOffset: 0.66,\n subscriptOffset: 0.66,\n serifs: false,\n description: 'Text font to pair with the Petaluma music font.',\n });\n }\n}\n"],"names":["root","factory","exports","module","define","amd","window","globalThis","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","g","Function","e","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","isCategory","category","checkAncestors","constructorFcn","constructor","CATEGORY","getPrototypeOf","isAccidental","Category","Accidental","isAnnotation","Annotation","isBarline","Barline","isDot","Dot","isGraceNote","GraceNote","isGraceNoteGroup","GraceNoteGroup","isNote","Note","isRenderContext","RenderContext","isStaveNote","StaveNote","isStemmableNote","StemmableNote","isTabNote","TabNote","RuntimeError","Error","code","message","super","globalObject","self","defined","x","undefined","log","block","args","line","Array","slice","join","console","warn","err","stack","midLine","a","b","mid_line","n","parseInt","prefix","text","normalizeAngle","Math","PI","Fraction","numerator","denominator","set","static","Number","isNaN","t","GCD","length","LCM","shift","LCMM","simplify","u","d","gcd","add","param1","param2","otherNumerator","otherDenominator","getNumeratorAndDenominator","lcm","subtract","multiply","divide","equals","compare","__staticFractionA","copy","__staticFractionB","greaterThan","greaterThanEquals","lessThan","lessThanEquals","clone","other","quotient","floor","remainder","makeAbs","abs","toString","toSimplifiedString","__staticFractionTmp","toMixedString","s","q","f","parse","str","i","split","BoundingBox","y","w","h","that","getX","getY","getW","getH","setX","setY","setW","setH","move","mergeWith","boundingBox","new_x","new_y","new_w","max","new_h","BoundingBoxComputation","x1","NaN","y1","x2","y2","getX1","getY1","width","height","addPoint","addX","addY","addQuadraticCurve","p0x","p0y","p1x","p1y","p2x","p2y","p01x","denom","it","p01y","addBezierCurve","p3x","p3y","p0","p1","p2","p3","pow","c","b2ac","t1","sqrt","t2","FontWeight","FontStyle","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","apply","fontParser","Fonts","Font","fontName","name","fontSize","SIZE","_a","scaleToPxFrom","pt","parseFloat","unit","replace","toLowerCase","size","weight","style","fromCSSString","family","SANS_SERIF","NORMAL","cssFontShorthand","document","createElement","font","fontFamily","fontWeight","fontStyle","fontInfo","st","trim","wt","sz","scaleFactor","parsedWeight","ITALIC","woffURL","includeWoff2","fontFace","FontFace","load","fonts","host","WEB_FONT_HOST","files","WEB_FONT_FILES","fontPath","loadWebFont","data","metrics","setData","setMetrics","getName","getData","getMetrics","hasData","getResolution","resolution","getGlyphs","glyphs","lookupMetric","defaultValue","keyParts","currObj","SERIF","px","em","in","mm","cm","PetalumaScript","Index","id","type","class","Registry","index","defaultRegistry","registry","clear","setIndexValue","elem","updateIndex","oldValue","getElementById","getAttribute","register","setAttribute","onRegister","_b","getElementsByAttribute","attribute","index_attr","index_attr_val","keys","map","k","getElementsByType","getElementsByClass","className","onUpdate","info","includes","Element","children","attrs","newID","el","getCategory","classes","rendered","getDefaultRegistry","ID","addChildElement","child","push","setStyle","setGroupStyle","forEach","getStyle","applyStyle","context","save","shadowColor","setShadowColor","shadowBlur","setShadowBlur","fillStyle","setFillStyle","strokeStyle","setStrokeStyle","lineWidth","setLineWidth","restoreStyle","restore","drawWithStyle","checkContext","draw","hasClass","addClass","removeClass","isRendered","setRendered","getAttributes","getSVGElement","suffix","element","oldID","getBoundingBox","getContext","setContext","setFont","toCSSString","textFont","defaultTextFont","TEXT_FONT","fontIsObject","fontIsString","fontIsUndefined","sizeWeightStyleAreUndefined","assign","validate","getFont","resetFont","setFontSize","getFontSize","fontSizeInPoints","convertSizeToPointValue","fontSizeInPixels","convertSizeToPixelValue","RESOLUTION","durations","durationAliases","keySignatures","C","num","Am","F","acc","Dm","Bb","Gm","Eb","Cm","Ab","Fm","Db","Bbm","Gb","Ebm","Cb","Abm","G","Em","D","Bm","A","E","B","clefs","treble","line_shift","bass","tenor","alto","soprano","percussion","subbass","french","notesInfo","int_val","CN","accidental","CB","CBB","DN","DB","DBB","EN","EB","EBB","FN","FB","FBB","GN","GB","GBB","AN","AB","ABB","BN","BB","BBB","R","rest","X","octave","shift_right","accidentals","parenRightPaddingAdjustment","bb","db","bs","bss","bbs","ashs","afhf","accSagittal5v7KleismaUp","accSagittal5v7KleismaDown","accSagittal5CommaUp","accSagittal5CommaDown","accSagittal7CommaUp","accSagittal7CommaDown","accSagittal25SmallDiesisUp","accSagittal25SmallDiesisDown","accSagittal35MediumDiesisUp","accSagittal35MediumDiesisDown","accSagittal11MediumDiesisUp","accSagittal11MediumDiesisDown","accSagittal11LargeDiesisUp","accSagittal11LargeDiesisDown","accSagittal35LargeDiesisUp","accSagittal35LargeDiesisDown","accSagittalSharp25SDown","accSagittalFlat25SUp","accSagittalSharp7CDown","accSagittalFlat7CUp","accSagittalSharp5CDown","accSagittalFlat5CUp","accSagittalSharp5v7kDown","accSagittalFlat5v7kUp","accSagittalSharp","accSagittalFlat","accSagittalSharp5v7kUp","accSagittalFlat5v7kDown","accSagittalSharp5CUp","accSagittalFlat5CDown","accSagittalSharp7CUp","accSagittalFlat7CDown","accSagittalSharp25SUp","accSagittalFlat25SDown","accSagittalSharp35MUp","accSagittalFlat35MDown","accSagittalSharp11MUp","accSagittalFlat11MDown","accSagittalSharp11LUp","accSagittalFlat11LDown","accSagittalSharp35LUp","accSagittalFlat35LDown","accSagittalDoubleSharp25SDown","accSagittalDoubleFlat25SUp","accSagittalDoubleSharp7CDown","accSagittalDoubleFlat7CUp","accSagittalDoubleSharp5CDown","accSagittalDoubleFlat5CUp","accSagittalDoubleSharp5v7kDown","accSagittalDoubleFlat5v7kUp","accSagittalDoubleSharp","accSagittalDoubleFlat","accSagittal7v11KleismaUp","accSagittal7v11KleismaDown","accSagittal17CommaUp","accSagittal17CommaDown","accSagittal55CommaUp","accSagittal55CommaDown","accSagittal7v11CommaUp","accSagittal7v11CommaDown","accSagittal5v11SmallDiesisUp","accSagittal5v11SmallDiesisDown","accSagittalSharp5v11SDown","accSagittalFlat5v11SUp","accSagittalSharp7v11CDown","accSagittalFlat7v11CUp","accSagittalSharp55CDown","accSagittalFlat55CUp","accSagittalSharp17CDown","accSagittalFlat17CUp","accSagittalSharp7v11kDown","accSagittalFlat7v11kUp","accSagittalSharp7v11kUp","accSagittalFlat7v11kDown","accSagittalSharp17CUp","accSagittalFlat17CDown","accSagittalSharp55CUp","accSagittalFlat55CDown","accSagittalSharp7v11CUp","accSagittalFlat7v11CDown","accSagittalSharp5v11SUp","accSagittalFlat5v11SDown","accSagittalDoubleSharp5v11SDown","accSagittalDoubleFlat5v11SUp","accSagittalDoubleSharp7v11CDown","accSagittalDoubleFlat7v11CUp","accSagittalDoubleSharp55CDown","accSagittalDoubleFlat55CUp","accSagittalDoubleSharp17CDown","accSagittalDoubleFlat17CUp","accSagittalDoubleSharp7v11kDown","accSagittalDoubleFlat7v11kUp","accSagittal23CommaUp","accSagittal23CommaDown","accSagittal5v19CommaUp","accSagittal5v19CommaDown","accSagittal5v23SmallDiesisUp","accSagittal5v23SmallDiesisDown","accSagittalSharp5v23SDown","accSagittalFlat5v23SUp","accSagittalSharp5v19CDown","accSagittalFlat5v19CUp","accSagittalSharp23CDown","accSagittalFlat23CUp","accSagittalSharp23CUp","accSagittalFlat23CDown","accSagittalSharp5v19CUp","accSagittalFlat5v19CDown","accSagittalSharp5v23SUp","accSagittalFlat5v23SDown","accSagittalDoubleSharp5v23SDown","accSagittalDoubleFlat5v23SUp","accSagittalDoubleSharp5v19CDown","accSagittalDoubleFlat5v19CUp","accSagittalDoubleSharp23CDown","accSagittalDoubleFlat23CUp","accSagittal19SchismaUp","accSagittal19SchismaDown","accSagittal17KleismaUp","accSagittal17KleismaDown","accSagittal143CommaUp","accSagittal143CommaDown","accSagittal11v49CommaUp","accSagittal11v49CommaDown","accSagittal19CommaUp","accSagittal19CommaDown","accSagittal7v19CommaUp","accSagittal7v19CommaDown","accSagittal49SmallDiesisUp","accSagittal49SmallDiesisDown","accSagittal23SmallDiesisUp","accSagittal23SmallDiesisDown","accSagittal5v13MediumDiesisUp","accSagittal5v13MediumDiesisDown","accSagittal11v19MediumDiesisUp","accSagittal11v19MediumDiesisDown","accSagittal49MediumDiesisUp","accSagittal49MediumDiesisDown","accSagittal5v49MediumDiesisUp","accSagittal5v49MediumDiesisDown","accSagittal49LargeDiesisUp","accSagittal49LargeDiesisDown","accSagittal11v19LargeDiesisUp","accSagittal11v19LargeDiesisDown","accSagittal5v13LargeDiesisUp","accSagittal5v13LargeDiesisDown","accSagittalSharp23SDown","accSagittalFlat23SUp","accSagittalSharp49SDown","accSagittalFlat49SUp","accSagittalSharp7v19CDown","accSagittalFlat7v19CUp","accSagittalSharp19CDown","accSagittalFlat19CUp","accSagittalSharp11v49CDown","accSagittalFlat11v49CUp","accSagittalSharp143CDown","accSagittalFlat143CUp","accSagittalSharp17kDown","accSagittalFlat17kUp","accSagittalSharp19sDown","accSagittalFlat19sUp","accSagittalSharp19sUp","accSagittalFlat19sDown","accSagittalSharp17kUp","accSagittalFlat17kDown","accSagittalSharp143CUp","accSagittalFlat143CDown","accSagittalSharp11v49CUp","accSagittalFlat11v49CDown","accSagittalSharp19CUp","accSagittalFlat19CDown","accSagittalSharp7v19CUp","accSagittalFlat7v19CDown","accSagittalSharp49SUp","accSagittalFlat49SDown","accSagittalSharp23SUp","accSagittalFlat23SDown","accSagittalSharp5v13MUp","accSagittalFlat5v13MDown","accSagittalSharp11v19MUp","accSagittalFlat11v19MDown","accSagittalSharp49MUp","accSagittalFlat49MDown","accSagittalSharp5v49MUp","accSagittalFlat5v49MDown","accSagittalSharp49LUp","accSagittalFlat49LDown","accSagittalSharp11v19LUp","accSagittalFlat11v19LDown","accSagittalSharp5v13LUp","accSagittalFlat5v13LDown","accSagittalDoubleSharp23SDown","accSagittalDoubleFlat23SUp","accSagittalDoubleSharp49SDown","accSagittalDoubleFlat49SUp","accSagittalDoubleSharp7v19CDown","accSagittalDoubleFlat7v19CUp","accSagittalDoubleSharp19CDown","accSagittalDoubleFlat19CUp","accSagittalDoubleSharp11v49CDown","accSagittalDoubleFlat11v49CUp","accSagittalDoubleSharp143CDown","accSagittalDoubleFlat143CUp","accSagittalDoubleSharp17kDown","accSagittalDoubleFlat17kUp","accSagittalDoubleSharp19sDown","accSagittalDoubleFlat19sUp","accSagittalShaftUp","accSagittalShaftDown","accSagittalAcute","accSagittalGrave","accSagittal1MinaUp","accSagittal1MinaDown","accSagittal2MinasUp","accSagittal2MinasDown","accSagittal1TinaUp","accSagittal1TinaDown","accSagittal2TinasUp","accSagittal2TinasDown","accSagittal3TinasUp","accSagittal3TinasDown","accSagittal4TinasUp","accSagittal4TinasDown","accSagittal5TinasUp","accSagittal5TinasDown","accSagittal6TinasUp","accSagittal6TinasDown","accSagittal7TinasUp","accSagittal7TinasDown","accSagittal8TinasUp","accSagittal8TinasDown","accSagittal9TinasUp","accSagittal9TinasDown","accSagittalFractionalTinaUp","accSagittalFractionalTinaDown","accidentalNarrowReversedFlat","accidentalNarrowReversedFlatAndFlat","accidentalWilsonPlus","accidentalWilsonMinus","articulations","between_lines","av","aboveCode","belowCode","ao","ah","am","ornaments","mordent","mordent_inverted","turn","turn_inverted","tr","upprall","downprall","prallup","pralldown","upmordent","downmordent","lineprall","prallprall","scoop","doit","fall","doitLong","fallLong","bend","plungerClosed","plungerOpen","flip","jazzTurn","smear","Tables","MUSIC_FONT_STACK","clef","keyOctaveGlyph","params","options","octave_shift","duration","sanitizeDuration","pieces","toUpperCase","clefProperties","stroke","int_value","customNoteHeadProps","glyphName","codeNoteHead","displaced","integer","noteValue","fret","scale","glyph","shift_y","glyphMetrics","Glyph","TABLATURE_FONT_SCALE","textWidth","getWidth","artic","spec","keySpec","notes","acc_list","durationNumber","durationToFraction","ticks","durationCodes","glyphTypeProperties","code_head","common","NOTATION_FONT_SCALE","SOFTMAX_FACTOR","STEM_WIDTH","STEM_HEIGHT","STAVE_LINE_THICKNESS","RENDER_PRECISION_PLACES","SLASH_NOTEHEAD_WIDTH","STAVE_LINE_DISTANCE","TEXT_HEIGHT_OFFSET_HACK","accidentalMap","accidentalColumnsTable","second_on_bottom","spaced_out_tetrachord","spaced_out_pentachord","very_spaced_out_pentachord","spaced_out_hexachord","very_spaced_out_hexachord","unicode","sharp","String","fromCharCode","flat","natural","triangle","degrees","circle","validTypes","m","ci","cx","sf","sb","sq","tu","td","TIME4_4","num_beats","beat_value","stem","stem_offset","flag","stem_up_extension","stem_down_extension","tabnote_stem_up_extension","tabnote_stem_down_extension","dot_shiftY","line_above","line_below","position","leger_code_head","beam_count","stem_beam_extension","code_flag_upstem","code_flag_downstem","OutlineCode","ModifierPosition","GlyphCacheEntry","fontStack","point","loadMetrics","bbox","getOutlineBoundingBox","outline","x_shift","y_shift","lookupFontMetric","GlyphOutline","originX","originY","precision","round","nextX","nextY","parts","MOVE","LINE","QUADRATIC","BEZIER","topGlyphs","botGlyphs","originShift","setOptions","reset","lookupGlyph","x_min","x_max","ha","cached_outline","ctx","x_pos","y_pos","cache","lookup","customScale","renderOutline","go","beginPath","moveTo","lineTo","quadraticCurveTo","bezierCurveTo","fill","bboxComp","penX","penY","getCode","setPoint","setStave","stave","getXShift","setXShift","getYshift","setYShift","checkMetrics","metricsScale","setOriginX","xShift","setOriginY","yShift","setOrigin","render","xPos","yPos","checkStave","renderToStave","getYForGlyphs","Map","entries","CURRENT_CACHE_KEY","entry","Modifier","text_line","Position","LEFT","spacingFromNextModifier","PositionString","center","CENTER","above","ABOVE","below","BELOW","left","right","RIGHT","setWidth","getNote","note","checkAttachedNote","setNote","getIndex","checkIndex","setIndex","getModifierContext","modifierContext","checkModifierContext","setModifierContext","getPosition","setPosition","setTextLine","setSpacingFromNextModifier","getSpacingFromNextModifier","alignSubNotesWithNote","subNotes","tickContext","getTickContext","getStave","subNoteXOffset","modLeftPx","modRightPx","subNote","subTickContext","setXOffset","Music","NUM_TONES","canonical_notes","roots","root_values","root_indices","diatonic_intervals","diatonic_accidentals","unison","m2","M2","m3","M3","p4","dim5","p5","m6","M6","b7","M7","intervals","b2","min2","S","H","maj2","T","W","b3","min3","maj3","b5","aug4","b6","aug5","maj6","m7","min7","dom7","maj7","scales","major","minor","ionian","dorian","phyrgian","lydian","mixolydian","aeolian","locrian","scaleTypes","M","noteValues","root_index","cn","cb","cbb","dn","dbb","en","eb","ebb","fn","fb","fbb","gn","gb","gbb","an","ab","abb","bn","bbb","isValidNoteValue","isValidIntervalValue","interval","getNoteParts","noteString","match","exec","getKeyParts","keyString","getNoteValue","getIntervalValue","intervalString","getCanonicalNoteName","getCanonicalIntervalName","intervalValue","getRelativeNoteValue","direction","sum","getRelativeNoteName","rootValue","multiplier","reverse_interval","relativeNoteName","getScaleTones","tones","nextNote","getIntervalBetween","note1","note2","difference","createScaleMap","keySignature","keySigParts","scaleName","keySigString","noteLocation","scaleMap","rootName","noteName","L","DEBUG","render_options","font_scale","parenLeftPadding","parenRightPadding","accidentalCodes","cautionary","state","musicFont","currentMusicFont","noteheadAccidentalPadding","leftShift","left_shift","accidentalSpacing","additionalPadding","accList","prevNote","shiftL","props","getKeyProps","getLeftDisplacedHeadPx","lineSpace","getSpacingBetweenLines","getYForLine","accLine","sort","lineList","previousLine","accShift","flatLine","dblSharpLine","numAcc","column","totalColumns","noFurtherConflicts","groupStart","groupEnd","checkCollision","getGroupLine","getGroupLines","indexes","lineDifference","indexA","indexB","item","notColliding","indexPairs","every","line1","line2","groupLength","groupMember","endCase","patternLength","collisionDetected","columnWidths","columnXOffsets","totalShift","accCount","lastAccOnLine","clearance","clearanceRequired","collision","voices","tickPositions","tickNoteMap","voice","tickPosition","getTickables","shouldIgnoreTicks","notesAtPosition","getTicks","music","scaleMapKey","tickPos","tickables","modifiedPitches","processNote","isRest","staveNote","keyIndex","accidentalString","pitch","sameAccidental","previouslyModified","indexOf","getModifiers","modifier","splice","addModifier","getGraceNotes","fontScale","parenLeft","parenRight","parenWidth","setAsCautionary","start","getModifierStartXY","accX","accY","Stem","stem_up_y_offset","stem_down_y_offset","stem_up_y_base_offset","stem_down_y_base_offset","x_begin","x_end","y_top","y_bottom","stem_extension","stem_direction","hide","isStemlet","stemletHeight","renderHeightAdjustment","UP","DOWN","WIDTH","HEIGHT","setNoteHeadXBounds","setDirection","setExtension","ext","getExtension","setYBounds","getHeight","y_offset","getExtents","isStemUp","ys","stemHeight","innerMostNoteheadY","min","outerMostNoteheadY","topY","baseY","setVisibility","isVisible","setStemlet","adjustHeightForFlag","adjustHeightForBeam","stem_x","stem_y","y_base_offset","stemletYOffset","openGroup","pointerBBox","closeGroup","TextFormatter","textWidthCache","formatterInfo","serifs","monospaced","italic","bold","superscriptOffset","subscriptOffset","maxSizeGlyph","cacheKey","updateParams","registeredFonts","requestedFont","candidates","requestedFamilies","requestedFamily","startsWith","formatter","values","isBold","isItalic","perfectMatch","find","partialMatch","fontSizeInPt","overwrite","updateCacheKey","BOLD","getGlyphMetrics","character","maxHeight","getWidthForCharacterInEm","advanceWidth","getWidthForTextInEm","cachedWidths","getWidthForTextInPx","AnnotationHorizontalJustify","AnnotationVerticalJustify","horizontalJustification","verticalJustification","TOP","minAnnotationPadding","annotations","leftWidth","rightWidth","maxLeftGlyphWidth","maxRightGlyphWidth","annotation","textFormatter","create","verticalSpaceNeeded","glyphWidth","getGlyph","stemDirection","hasStem","getStemDirection","lines","draw_stem","getStem","getNoteType","getNumLines","VerticalJustify","noteLine","getLineNumber","leastString","top_text_line","BOTTOM","greatestString","curBottom","rightOverlap","right_shift","leftOverlap","setVerticalJustification","just","VerticalJustifyString","getJustification","setJustification","HorizontalJustifyString","text_width","measureText","text_height","getStemX","stem_ext","spacing","has_stem","checkStem","getYs","reduce","yt","getYForTopText","getYForBottomText","getTopLineTopY","extents","getStemExtents","fillText","HorizontalJustify","centerStem","CENTER_STEM","top","bottom","roundToNearestHalf","mathFn","isWithinLines","getRoundingFunction","ceil","isStaveOrGraceNote","Articulation","maxGlyphWidth","getIncrement","articulation","increment","curTop","maxWidth","articWidth","overlap","builder","articNameToCode","staccato","tenuto","accent","articString","getFactory","articulationCodes","textLine","canSitBetweenLines","staffSpace","isTab","shouldSitOutsideStaff","initialOffset","isOnStemTip","getInitialOffset","padding","stemTipY","stemBaseY","getTopY","INITIAL_OFFSET","getBottomY","offsetDirection","articLine","snappedLine","snapLineToStaff","setRawFont","drawDot","color","arc","closePath","Tickable","_preFormatted","_postFormatted","intrinsicTicks","tickMultiplier","modifiers","tupletStack","align_center","center_x_shift","ignore_ticks","formatterMetrics","freedom","iterations","space","used","mean","deviation","setIgnoreTicks","checkTickContext","getFormatterMetrics","getCenterXShift","isCenterAligned","setCenterXShift","centerXShift","setCenterAlignment","getVoice","setVoice","getTuplet","tuplet","getTupletStack","resetTuplet","noteCount","notesOccupied","getNoteCount","getNotesOccupied","applyTickMultiplier","pop","setTuplet","addToModifierContext","mc","addMember","setTickContext","tc","preFormat","preFormatted","postFormat","postFormatted","getIntrinsicTicks","setIntrinsicTicks","getTickMultiplier","setDuration","getAbsoluteX","noteStruct","parsedNoteStruct","parseNoteStruct","JSON","stringify","keyProps","noteType","customTypes","duration_override","getGlyphProps","customGlyphs","playNote","leftDisplacedHeadPx","rightDisplacedHeadPx","annotation_spacing","glyph_font_scale","stroke_px","xStart","xPre1","xAbs","xPost1","notePx","xPost2","xEnd","xFreedomRight","xWidth","yy","spaceDeviation","durationString","dots","durationProps","parseDuration","durationToTicks","currentTicks","getPlayNote","setPlayNote","addStroke","setYs","getRightDisplacedHeadPx","setLeftDisplacedHeadPx","setRightDisplacedHeadPx","isTopNote","getLineForRest","getGlyphWidth","getDuration","isDotted","getModifiersByType","getBeam","beam","checkBeam","hasBeam","setBeam","signature","filter","getRightParenthesisPx","getLeftParenthesisPx","getFirstDotPx","getMembers","getState","glyphPx","getNoteStartX","getTieRightX","tieStartX","getTieLeftX","tieEndX","getKeys","StaveModifierPosition","BarlineType","ChordSymbolHorizontalJustify","ChordSymbolVerticalJustify","SymbolTypes","SymbolModifiers","StaveModifier","placeGlyphOnLine","customShift","getPadding","setPadding","setLayoutMetrics","layoutMetrics","getLayoutMetrics","thickness","TYPE","widths","SINGLE","DOUBLE","END","REPEAT_BEGIN","REPEAT_END","REPEAT_BOTH","NONE","paddings","layoutMetricsMap","xMin","xMax","paddingLeft","paddingRight","BEGIN","setType","typeString","single","double","end","repeatBegin","repeatEnd","repeatBoth","none","getType","drawVerticalBar","drawVerticalEndBar","drawRepeatBar","double_bar","staveCtx","botY","getBottomLineBottomY","fillRect","begin","dot_x","dot_radius","dot_y","BarNote","barline","Bend","release","phrase","tap","line_width","line_style","bend_width","release_width","updateWidth","bends","last_width","stringPos","setTap","getText","getTextHeight","totalWidth","additional_width","draw_width","lowestY","bend_height","annotation_y","renderBend","cp_x","cp_y","renderRelease","renderArrowHead","yBase","renderText","render_x","last_bend","last_bend_draw_width","last_drawn_width","ChordSymbol","symbolBlocks","horizontal","vertical","useKerning","reportWidth","superSubRatio","global","NO_TEXT_FORMAT","val","noFormat","glyphCode","engravingFontResolution","spacingBetweenBlocks","metric","getMetricForGlyph","yOffset","leftSideBearing","kerningOffset","chordSymbol","lowerKerningText","upperKerningText","symbolModifier","SUPERSCRIPT","SUBSCRIPT","minPadding","symbols","nonSuperWidth","symbol","fontAdj","scaleSize","glyphAdj","symbolWidth","lineSpaces","vAlign","j","sup","isSuperscript","sub","isSubscript","superSubScale","adj","symbolType","GLYPH","superSubFontSize","getWidthForGlyph","getYShiftForGlyph","getXShiftForGlyph","TEXT","getYOffsetForText","over","prev","setEnableKerning","updateKerningAdjustments","updateOverBarAdjustments","getVertical","getReportWidth","getHorizontal","setReportWidth","barIndex","findIndex","xoff","yoff","symIndex","accum","getKerningAdjustment","currSymbol","prevSymbol","adjustment","preKernUpper","preKernLower","some","xx","kerningOffsetPixels","getSymbolBlock","_c","symbolBlock","glyphArgs","glyphPoints","addSymbolBlock","parameters","addText","addTextSuperscript","addTextSubscript","addGlyphSuperscript","addGlyph","addGlyphOrText","char","addLine","setVertical","vj","setHorizontal","hj","yMax","y_max","stem_base","isSuper","isSub","curY","smallerFontSize","diminished","dim","halfDiminished","augmented","majorSeventh","leftParen","rightParen","leftBracket","rightBracket","leftParenTall","rightParenTall","symbolTypes","symbolModifiers","radius","all","dot","setDotShiftY","dot_list","max_shift_map","note_id","dot_shift","x_width","last_line","last_note","prev_dotted_space","half_shiftY","forceFlagRight","FretHandFinger","finger","x_offset","nums","nums_list","prev_note","shiftLeft","shiftRight","pos","textHeight","shiftR","numShiftL","numShiftR","xWidthL","xWidthR","lastLine","lastNote","num_shift","numWidth","fingerings","fingeringString","number","Fingering","fingering","setFretHandFinger","getFretHandFinger","setOffsetX","setOffsetY","NoteHead","custom_glyph","stem_up_x_offset","stem_down_x_offset","note_type","glyph_code","custom_glyph_code","slashed","isDisplaced","getLine","setLine","displacementStemAdjustment","fontShift","displacedFontShift","half_spacing","min_y","getYForNote","head_x","categorySuffix","staveSpace","durationToNumber","breve_lines","drawSlashNoteHead","renderGlyph","setStem","buildStem","buildFlag","hasFlag","flagCode","getBaseCustomNoteHeadGlyph","getStemLength","getStemExtension","getBeamCount","getStemMinimumLength","setStemDirection","offsets","offsetYBaseStemUp","offsetYTopStemUp","offsetYBaseStemDown","offsetYTopStemDown","getCenterGlyphX","stem_extension_override","setStemLength","drawStem","stemOptions","shiftRestVertical","dir","delta","maxLine","minLine","setKeyLine","getKeyLine","sortedKeyProps","ledgerLineStyle","use_default_head_x","_noteHeads","LEDGER_LINE_OFFSET","calculateKeyProps","auto_stem","autoStem","STEM_UP","STEM_DOWN","minNoteheadPadding","notesList","minL","stemMax","stemMin","maxL","isrest","voice_shift","getVoiceShiftWidth","is_displaced","noteU","noteM","noteL","voiceXShift","lineSpacing","lineDiff","whiteNoteHeadCount","blackNoteHeadCount","centerRest","noteHeadStyles","noteHead","buildNoteHeads","noteHeadStyle","head","calcNoteDisplacements","noteProps","notehead","calculateOptimalStemDirection","keyProperties","minY","maxY","halfLineSpacing","frac","resultLine","thisLine","isChord","getNoteHeadBounds","setNoteDisplaced","getRightShift","restLine","isInnerNoteIndex","setStemStyle","getStemStyle","setLedgerLineStyle","getLedgerLineStyle","setFlagStyle","getFlagStyle","setKeyStyle","noteHeadPadding","shouldDrawFlag","nonDisplacedX","displacedX","highestDisplacedLine","lowestDisplacedLine","yTop","Infinity","yBottom","highestLine","lowestLine","highestNonDisplacedLine","lowestNonDisplacedLine","displaced_x","non_displaced_x","highest_line","lowest_line","highest_displaced_line","lowest_displaced_line","highest_non_displaced_line","lowest_non_displaced_line","getNoteHeadBeginX","getNoteHeadEndX","noteHeads","note_heads","drawLedgerLines","doubleWidth","min_x","drawLedgerLine","normal","ledgerWidth","getDefaultLedgerLineStyle","drawModifiers","noteheadParam","noteheadStyle","hasNoBeam","drawFlag","_d","_e","noteStemHeight","flagX","flagY","getStaveNoteScale","drawNoteHeads","super_stem_extension","mid_line_distance","lines_over_octave_from_mid_line","spacing_between_lines","xBegin","shouldRenderStem","stemX","StaveTie","setNotes","cp1","cp2","text_shift_x","first_x_shift","last_x_shift","tie_spacing","first_note","first_indices","last_indices","isPartial","renderTie","first_ys","last_ys","last_x_px","first_x_px","first_y_px","last_y_px","top_cp_y","bottom_cp_y","center_x","getNotes","getTieStartX","getTieEndX","TabTie","VoiceMode","Voice","time","voiceTime","resolutionMultiplier","mode","STRICT","ticksUsed","largestTickWidth","softmaxFactor","totalTicks","smallestTickCount","Mode","getTotalTicks","getTicksUsed","getLargestTickWidth","getSmallestTickCount","getMode","setMode","getResolutionMultiplier","getActualResolution","tickable","setStrict","strict","SOFT","isComplete","FULL","setSoftmaxFactor","factor","reCalculateExpTicksUsed","expTicksUsed","softmax","tickValue","v","exp","addTickable","addTickables","grace_notes","show_slur","slur","slur_y_shift","beams","gracenote_groups","group_list","gracenote_group","is_stavenote","formatWidth","group_shift","Formatter","joinVoices","format","getMinTotalWidth","beamNotes","Beam","beam_width","partial_beam_length","graceNote","TieClass","NoteSubGroup","groups","group","TickContext","tickID","currentTick","maxTicks","maxTickable","minTicks","minTickable","xBase","xOffset","tickablesByVoice","totalLeftPx","totalRightPx","tContexts","tContext","contexts","getTickID","getXBase","setXBase","getXOffset","getMaxTicks","getMinTicks","getMaxTickable","getMinTickable","getTickableForVoice","voiceIndex","getTickablesByVoice","getCenterAlignedTickables","getCurrentTick","setCurrentTick","tick","Ornament","delayed","accidentalLowerPadding","accidentalUpperPadding","ornament","ornamentCodes","adjustForStemDirection","reportedWidth","stemUpYOffset","ornamentAlignWithNoteHead","ornamentNoteTransition","ornamentRelease","ornamentAttack","ornamentArticulation","jazzOrnaments","setDelayed","setUpperAccidental","accid","accidentalUpper","setLowerAccidental","accidentalLower","stemDir","stemExtents","isPlacedOnNoteheadSide","glyphYBetweenLines","glyphX","glyphY","delayXShift","startX","nextContext","getNextContext","Parenthesis","parentheses","x_widthL","x_widthR","parenthesis","isHTMLCanvas","HTMLCanvasElement","toDataURL","isHTMLDiv","HTMLDivElement","appendChild","CanvasContext","context2D","canvas","CANVAS_BROWSER_SIZE_LIMIT","limit","clearRect","cls","setBackgroundFillStyle","blur","getTransform","setLineCap","capType","lineCap","setLineDash","dash","resize","devicePixelRatio","sanitizeCanvasDims","rect","cp1x","cp1y","cp2x","cp2y","cpx","cpy","startAngle","endAngle","counterclockwise","fontBoundingBoxAscent","fontBoundingBoxDescent","actualBoundingBoxAscent","actualBoundingBoxDescent","ATTRIBUTES_TO_IGNORE","path","SVG_NS","TWO_PI","SVGContext","backgroundFillStyle","fontCSSString","svg","parent","pen","defaultFontAttributes","attributes","shadow_attributes","state_stack","svgElementType","createElementNS","lineDash","applyAttributes","visibleWidth","visibleHeight","setViewBox","viewBox_or_minX","viewBoxString","attrNamesToIgnore","nodeName","attrName","setAttributeNS","lastChild","removeChild","rectangle","x0","cos","y0","sin","tmpStartTest","tmpEndTest","large","sweep","getShadowStyle","sa","measureTextCache","txt","textContent","savedState","fontAttributes","RendererBackends","RendererLineEndType","TextJustification","VoltaType","measureImpl","getBBox","Renderer","arg0","arg1","backend","maybeElement","Backends","CANVAS","SVG","elementId","background","renderer","lastContext","buildContext","fromX","fromY","toX","toY","dashPattern","dx","dy","angle","atan2","idx","dashLength","nx","ny","LineEndType","StringNumber","string_number","dashed","leg","drawCircle","stringNumber","shift_left","glyphLine","num_shiftR","num_width","setLineEndType","setStringNumber","setLastNote","setDashed","setDrawCircle","stemPadding","verticalPadding","leftPadding","rightPadding","len","pattern","drawDashedLine","Stroke","all_voices","strokes","strokeList","string","getPositions","strokeShift","addEndNote","note_end","line_space","arrow","arrow_shift_x","arrow_y","text_y","Type","BRUSH_DOWN","BRUSH_UP","ROLL_DOWN","RASQUEDO_DOWN","ROLL_UP","RASQUEDO_UP","ARPEGGIO_DIRECTIONLESS","strokeLine","Vibrato","harsh","vibrato_width","wave_height","wave_width","wave_girth","setVibratoWidth","vibratos","vibrato","setHarsh","vx","vy","renderVibrato","opts","num_waves","ModifierContext","members","formatted","member","getLeftShift","Clef","types","tab","attachment","numLines","shiftY","KeySignature","cancelKeySpec","alterKeySpec","setKeySig","glyphFontScale","xPositions","paddingForced","convertToGlyph","nextAcc","accGlyphData","extraWidth","xPosition","cancelKey","convertToCancelAccList","cancel_accList","different_types","naturals","cancelled","concat","addToStave","convertAccLines","customLines","offset","alterKey","convertToAlterAccList","firstAccidentalType","cancelAccList","getEndClef","getClef","Repetition","symbol_type","setShiftX","setShiftY","CODA_RIGHT","drawCodaFixed","CODA_LEFT","drawSymbolText","SEGNO_LEFT","drawSignoFixed","SEGNO_RIGHT","DC","DC_AL_CODA","DC_AL_FINE","DS","DS_AL_CODA","DS_AL_FINE","FINE","TO_CODA","draw_coda","text_x","symbol_x","modifierWidth","getVerticalBarWidth","StaveSection","section","drawRect","shift_x","setStaveSection","textMeasurements","StaveTempo","tempo","setTempo","bpm","stem_height","TextNote","superscript","subscript","smooth","justification","struct","GLYPHS","segno","mordent_upper","mordent_lower","p","z","coda","pedal_open","pedal_close","caesura_straight","caesura_curved","breath","Justification","StaveText","setStaveText","setText","getBottomLineY","Volta","volta","top_y","vert_height","BEGIN_END","TimeSignatureGlyph","timeSignature","topDigits","botDigits","topWidth","timeSigType","topGlyph","botWidth","botGlyph","topStartX","botStartX","start_x","topLine","bottomLine","TimeSignature","timeSpec","customPadding","validate_args","fontLineShift","parseTimeSpec","numbers","test","assertIsValidTimeSig","makeTimeSignatureGlyph","getInfo","setTimeSig","SORT_ORDER_BEG_MODIFIERS","SORT_ORDER_END_MODIFIERS","Stave","end_x","measure","endClef","vertical_bar_width","num_lines","fill_style","left_bar","right_bar","spacing_between_lines_px","space_above_staff_ln","space_below_staff_ln","top_text_position","bottom_text_position","line_config","bounds","defaultLedgerLineStyle","resetLines","addEndModifier","defaultPadding","setDefaultLedgerLineStyle","visible","setNoteStartX","getNoteEndX","setNumLines","mod","setMeasure","getMeasure","getModifierXShift","begBarline","setRepetitionType","setVoltaType","number_t","setSection","staveSection","headroom","getLineForY","setBegBarType","setEndBarType","setClef","clefSpec","addClef","setEndClef","setKeySignature","addKeySignature","setEndKeySignature","setTimeSignature","timeSignatures","addTimeSignature","setEndTimeSignature","addEndClef","addEndTimeSignature","addTrebleGlyph","noPosition","noCategory","sortByCategory","items","order","temp","endBarline","begModifiers","endModifiers","lastBarlineIdx","getConfigForLines","setConfigForLine","line_number","setConfigForLines","lines_configuration","staves","maxX","drawBoldDoubleLine","topX","StaveConnector","BOLD_DOUBLE_LEFT","BOLD_DOUBLE_RIGHT","variableWidth","top_stave","bottom_stave","texts","newType","content","SINGLE_RIGHT","THIN_DOUBLE","attachment_height","SINGLE_LEFT","BRACE","x3","y3","cpx1","cpy1","cpx2","cpy2","cpx3","cpy3","cpx4","cpy4","cpx5","cpy5","cpx6","cpy6","cpx7","cpy7","cpx8","cpy8","BRACKET","singleRight","singleLeft","brace","bracket","boldDoubleLeft","boldDoubleRight","thinDouble","sumArray","arr","getRestLineForNextNoteGroup","currRestLine","currNoteIndex","nextRestLine","noteIndex","formatterOptions","globalSoftmax","maxIterations","justifyWidth","totalCost","durationStats","minTotalWidth","hasMinTotalWidth","tickContexts","array","list","modifierContexts","contextGaps","total","gaps","lossHistory","paddingBetween","accumulator","stavePadding","gap","toFixed","auto_beam","align_rests","applyAndGetBeams","formatToStave","tabstave","tabnotes","autobeam","notevoice","tabvoice","alignAllNotes","alignTuplets","currTickable","prevTickable","alignRests","AlignRestsToNotes","preCalculateMinTotalWidth","unalignedPadding","unalignedCtxCount","wsum","dsum","createTickContexts","contextList","contextMap","wavg","wvar","ll","wpads","davg","dvar","dpads","padmax","unalignedPad","createModifierContexts","tickToContextMap","integerTicks","staveTickToContextMap","newContext","makeContext","addToContext","tickList","createContexts","contextArray","getTickContexts","renderingContext","voicesParam","evaluate","firstContext","calculateIdealDistances","adjustedJustifyWidth","backTickable","prevContext","backVoices","matchingVoices","maxNegativeShiftPx","expectedDistance","thisTickable","insideLeftEdge","backMetrics","insideRightEdge","fromTickable","fromTickablePx","shiftToIdealDistances","idealDistances","centerX","spaceAccum","contextX","ideal","errorPx","negativeShiftPx","configMinPadding","configMaxPadding","targetWidth","distances","actualWidth","minDistance","mdCalc","di","calcMinDistance","paddingMaxCalc","curTargetWidth","lastTickablePadding","lastTickable","tickWidth","paddingMax","paddingMin","prevTick","prevMetrics","currMetrics","leftNoteEdge","rightNote","rightMetrics","stats","count","updateStats","totalDeviation","tune","alpha","current","cost","optionsParam","TupletLocation","Tuplet","numerator_glyphs","denom_glyphs","num_notes","beats_occupied","beatsOccupiedDeprecationWarning","notes_occupied","bracketed","ratioed","setTupletLocation","location","LOCATION_TOP","resolveGlyphs","attach","LOCATION_BOTTOM","NESTING_OFFSET","detach","setBracketed","setRatioed","getBeatsOccupied","setBeatsOccupied","beats","setNotesOccupied","unshift","getNestedTupletCount","maxTupletCount","countTuplets","minTupletCount","tupletCount","getYPosition","nested_tuplet_y_offset","topModifierOffset","modLines","modY","noteHeadOffset","stemOffset","lineCheck","nn","bottom_y","addGlyphWidth","notation_start_x","colon_x","colon_radius","calculateStemDirection","lineSum","keyProp","BEAM_LEFT","BEAM_RIGHT","BEAM_BOTH","slope","forcedPartialDirections","stem_weight","memo","break_on_indices","max_slope","min_slope","slope_iterations","slope_cost","show_stemlets","stemlet_extension","flat_beams","min_flat_beam_offset","time_sig","beatTotal","beatValue","generateBeams","config","tickGroups","unprocessedNotes","currentTickGroup","noteGroups","currentGroup","nextTickGroup","nextGroup","currentGroupTotalTicks","unprocessedNote","ticksPerGroup","vf_notes","unbeamable","createGroups","sanitizedGroups","tempGroup","isFirstOrLast","breaksOnEachRest","beam_rests","breaksOnFirstOrLastRest","beam_middle_only","breakOnStemChange","maintain_stem_directions","prevDirection","isUnbeamableDuration","sanitizeGroups","findFirstNote","applyStemDirection","beamedNoteGroups","beamable","allTuplets","uniqueTuplets","noteTuplet","getTuplets","secondary_breaks","secondary_break_ticks","flat_beam_offset","beamCount","breakSecondaryAt","indices","setPartialBeamSideAt","side","unsetPartialBeamSideAt","getSlopeY","calculateSlope","firstNote","initialSlope","firstStemTipY","firstStemX","getStemSlope","minCost","MAX_VALUE","bestSlope","totalStemExtension","yShiftTemp","adjustedStemTipY","diff","idealSlope","calculateFlatSlope","extremeY","extremeBeamCount","currentExtreme","extremeTest","newOffset","getBeamYToDraw","beamY","applyStemExtensions","beamedStemTipY","preBeamExtension","beamExtension","totalBeamWidth","lookupBeamDirection","prev_tick","next_tick","forcedBeamDirection","lookup_duration","prev_note_gets_beam","next_note_gets_beam","note_gets_beam","getBeamLines","tick_of_duration","beam_started","beam_lines","current_beam","previous_should_break","tick_tally","should_break","next_note","beam_alone","beam_direction","last_beam","drawStems","drawBeamLines","valid_beam_durations","beamThickness","beamLines","beam_line","startBeamX","startBeamY","lastBeamX","lastBeamY","ClefNote","clef_obj","abs_x","Crescendo","extend_left","extend_right","decrescendo","setHeight","setDecrescendo","decresc","tick_context","next_context","begin_x","half_height","reverse","renderHairpin","CurvePosition","Curve","from","to","NEAR_HEAD","position_end","invert","cps","nearHead","nearTop","NEAR_TOP","renderCurve","first_x","first_y","last_x","last_y","cp0x","cp0y","cp_spacing","end_metric","Parser","flattenMatches","matchedString","results","grammar","errorPos","expect","matchFail","returnPos","matchSuccess","matchToken","token","noSpace","regexp","RegExp","success","incrementPos","expectOne","rule","maybe","allMatches","oneMatch","localPos","or","gotOne","numMatches","expectOneOrMore","more","expectZeroOrMore","ruleFunc","bind","oneOrMore","zeroOrMore","matches","run","EasyScore","EasyScoreGrammar","PIECE","PIECES","EOL","CHORDORNOTE","PARAMS","commitPiece","COMMA","DURATION","DOTS","OPTS","CHORD","SINGLENOTE","LPAREN","NOTES","RPAREN","addChord","NOTE","NOTENAME","ACCIDENTAL","OCTAVE","addSingleNote","MICROTONES","ACCIDENTALS","DOT","setNoteDots","SLASH","MAYBESLASH","TYPES","setNoteType","DURATIONS","setNoteDuration","LBRACKET","KEYVAL","KEYVALS","RBRACKET","KEY","EQUALS","VAL","addNoteOption","SVAL","DVAL","Piece","chord","Builder","commitHooks","elements","rollingDuration","resetPiece","getElements","addCommitHook","commitHook","piece","addNote","standardAccidentals","notePiece","GhostNote","buildAndAttach","setId","commaSeparatedRegex","setClass","defaults","easyScoreHook","throwOnError","parser","ERROR_MSG","parameter","GlyphNote","ignoreTicks","setGlyph","SCALE","slash","ret","staveNoteScale","offsetScale","slashBBox","calcBeamedNotesSlashBBox","noteHeadBounds","defaultStemExtention","defaultOffsetY","slashStemOffset","slashBeamOffset","protrusions","beam_slope","scaleX","beam_angle","atan","iPointOnBeam","slash_angle","protrusion_stem_dx","protrusion_stem_dy","protrusion_beam_dx","protrusion_beam_dy","stem0X","stemY","KeySigNote","semibreve_rest","MultiMeasureRest","number_of_measures","xs","hasPaddingLeft","hasPaddingRight","hasLineThickness","hasSymbolSpacing","padding_left","padding_right","line_thickness","symbol_spacing","use_symbols","show_number","number_line","number_glyph_point","serif_thickness","semibreve_rest_glyph_scale","getXs","drawLine","spacingBetweenLines","lineThicknessHalf","serifThickness","bot","leftIndented","rightIndented","lineTop","lineBottom","drawSymbols","n4","n2","n1","get_semibreve_rest","rest_scale","rest_width","yMiddle","timeSig","drawPedalGlyph","glyph_data","PedalMarking","custom_depress_text","custom_release_text","bracket_height","text_margin_right","bracket_line_width","pedal","MIXED","setCustomText","depress","drawBracketed","prev_x","prev_y","is_pedal_depressed","next_is_same","prev_is_same","drawText","pedal_depress","pedal_release","mixed","CODES","RepeatNote","drawArrowHead","StaveLine","line_dash","rounded_end","draw_start_arrow","draw_end_arrow","arrowhead_length","arrowhead_angle","text_position_vertical","TextVerticalPosition","text_justification","applyLineStyle","applyFontStyle","drawArrowLine","pt1","pt2","both_arrows","distance","ratio","end_y","start_y","line_angle","angle1","angle2","top_x","bottom_x","start_position","end_position","first_index","last_index","upwards_slope","notehead_width","vertical_position","System","spaceBetweenStaves","autoWidth","noJustification","debugFormatter","formatIterations","noPadding","details","formatOptions","addConnector","connector","addStave","staveOptions","spaceAbove","spaceBelow","debugNoteMetrics","options_details","allVoices","allStaves","debugNoteMetricsYs","part","lastY","formatBegModifiers","plotDebugging","plotMetrics","positions","ghost","draw_dots","draw_stem_through_stave","setGhost","tabToGlyph","getStemY","stemDownLine","stemStartLine","flag_x","flag_y","drawStemThrough","stemThrough","stemLines","unused_strings","up_stem","down_stem","line_spacing","total_lines","stem_lines","strings","containsLastString","containsFirstString","line_ys","isTopBound","isBottomBound","getPartialStemLines","strings_used","stem_through","getUnusedStringGroups","drawPositions","tab_x","render_stem","TabStave","addTabGlyph","TextBracket","TextBracketPosition","stop","show_bracket","underline_superscript","Positions","PositionsString","main_measure","main_width","main_height","super_y","super_measure","super_width","super_height","line_y","TextDynamics","sequence","glyph_font_size","total_width","letter","letter_x","current_letter","TimeSigNote","timeSigInfo","VibratoBracket","bracket_data","stop_x","Factory","renderQ","systems","initRenderer","getVoices","ghostNote","textNote","barNote","clefNote","timeSigNote","keySigNote","hJustify","vJustify","kerning","upperAccidental","lowerAccidental","numMeasures","multiMeasureRest","secondaryBeamBreaks","partialBeamDirections","curve","tie","vibratoBracket","textBracket","system","GraceTabNote","KeyManager","setKey","getKey","scaleMapByValue","originalScaleMapByValue","getAccidental","selectNote","scaleNote","modparts","change","valueNote","originalValueNote","StaveHairpin","hairpin","left_shift_px","right_shift_px","right_shift_ticks","left_shift_ticks","ppt","pixelsPerTick","l_shift_px","r_shift_px","hairpin_options","setRenderOptions","dis","staff_height","l_shift","r_shift","CRESC","DECRESC","TabSlide","first_fret","last_fret","SLIDE_UP","SLIDE_DOWN","slide_y","Tremolo","y_spacing_scale","extra_stroke_scale","y_spacing","Tuning","tuningString","tuningValues","setTuning","names","standard","dagdad","dropd","standardBanjo","noteToInteger","getValueForString","stringNum","getValueForFret","fretNum","stringValue","getNoteForFret","integerToNote","Flow","BUILD","VERSION","DATE","fontNames","fontModuleOrPath","hasKeySignature","getKeySignatures","CustomFont","noteheadSquareWhite","noteheadSquareBlack","accidentalBuyukMucennebFlat","accidentalBakiyeFlat","accidentalKucukMucennebSharp","accidentalKoron","accidentalSori","vexAccidentalMicrotonal2","vexAccidentalMicrotonal3","vexAccidentalMicrotonal4","vexNoteHeadRectBlack","vexNoteHeadRectWhite","CustomMetrics","smufl","GonvilleFont","bracketTop","bracketBottom","barlineTick","breathMarkTick","gClef","cClef","fClef","unpitchedPercussionClef1","timeSig0","timeSig1","timeSig2","timeSig3","timeSig4","timeSig5","timeSig6","timeSig7","timeSig8","timeSig9","timeSigCommon","timeSigCutCommon","timeSigPlus","timeSigPlusSmall","timeSigMinus","timeSigParensRight","timeSigParensRightSmall","timeSigParensLeft","timeSigParensLeftSmall","noteheadDoubleWhole","noteheadWhole","noteheadHalf","noteheadBlack","noteheadXWhole","noteheadXHalf","noteheadXBlack","noteheadTriangleUpWhole","noteheadTriangleUpHalf","noteheadTriangleUpBlack","noteheadDiamondWhole","noteheadDiamondHalf","noteheadDiamondBlack","augmentationDot","tremolo1","flag8thUp","flag8thDown","flag16thUp","flag16thDown","flag32ndUp","flag32ndDown","flag64thUp","flag64thDown","flag128thUp","flag128thDown","accidentalFlat","accidentalNatural","accidentalSharp","accidentalDoubleSharp","accidentalDoubleFlat","accidentalParensLeft","accidentalParensRight","accidentalQuarterToneFlatStein","accidentalThreeQuarterTonesFlatZimmermann","accidentalQuarterToneSharpStein","accidentalThreeQuarterTonesSharpStein","accidentalKomaSharp","articAccentAbove","articAccentBelow","articTenutoAbove","articTenutoBelow","articStaccatoAbove","articStaccatoBelow","articStaccatissimoAbove","articStaccatissimoBelow","articMarcatoAbove","articMarcatoBelow","fermataAbove","fermataBelow","fermataLongAbove","fermataLongBelow","fermataVeryLongAbove","fermataVeryLongBelow","fermataShortAbove","fermataShortBelow","breathMarkComma","breathMarkUpbow","caesura","caesuraCurved","restMaxima","restDoubleWhole","restWhole","restWholeLegerLine","restHalf","restHalfLegerLine","restQuarter","rest8th","rest16th","rest32nd","rest64th","rest128th","dynamicPiano","dynamicMezzo","dynamicForte","dynamicRinforzando","dynamicSforzando","dynamicZ","ornamentTrill","ornamentTurn","ornamentTurnSlash","ornamentMordent","ornamentShortTrill","ornamentTremblement","ornamentPrecompAppoggTrill","ornamentPrecompSlideTrillDAnglebert","ornamentPrecompSlideTrillBach","ornamentPrecompTrillSuffixDandrieu","ornamentPrecompDoubleCadenceUpperPrefix","ornamentPrecompDoubleCadenceUpperPrefixTurn","ornamentPrecompTrillLowerSuffix","stringsDownBow","stringsUpBow","stringsHarmonic","pluckedSnapPizzicatoAbove","pluckedSnapPizzicatoBelow","pluckedLeftHandPizzicato","keyboardPedalPed","keyboardPedalUp","pictChokeCymbal","wiggleArpeggiatoUp","arrowheadBlackUp","arrowheadBlackDown","vexAccidentalMicrotonal1","vexWiggleArpeggioUp","vexNoteHeadMutedBreve","cssFontWeight","ascender","underlinePosition","cssFontStyle","yMin","original_font_information","postscript_name","version_string","vendor_url","full_font_name","font_family_name","copyright","description","trademark","designer","designer_url","unique_font_identifier","license_url","license_description","manufacturer_name","font_sub_family_name","descender","lineHeight","underlineThickness","GonvilleMetrics","endPaddingMax","endPaddingMin","unalignedNotePadding","default","small","smuflCode","shiftX","lineCount","gracenote","pedalMarking","up","down","digits","tupletPoint","tremolo","offsetYStemUp","offsetYStemDown","offsetXStemUp","offsetXStemDown","grace","staveRepetition","symbolText","offsetX","offsetY","heightAdjustmentForFlag","custom","noteheadCircleXStemUp","noteheadXWholeStemUp","noteheadTriangleUpWholeStemUp","csymDiminished","csymHalfDiminished","csymAugmented","csymParensLeftTall","csymParensRightTall","csymBracketLeftTall","csymBracketRightTall","csymParensLeftVeryTall","csymParensRightVeryTall","csymDiagonalArrangementSlash","csymMinor","csymMajorSeventh","brassScoop","brassDoitMedium","brassFallLipShort","brassLiftMedium","brassFallRoughMedium","brassBend","brassMuteClosed","brassMuteOpen","brassFlip","brassJazzTurn","brassSmear","PetalumaScriptFont","y_min","$","I","J","K","N","O","Q","U","V","Y","Z","_","l","generatedOn","RobotoSlabFont","Vex","cmp","eq","newArr","last","canvasSelector","start_time","Date","getTime","setMusicFont","fontData","registerInfo","loadTextFonts"],"sourceRoot":""} \ No newline at end of file diff --git a/build/cjs/vexflow-leland.js b/build/cjs/vexflow-leland.js new file mode 100644 index 0000000000..fc3545042a --- /dev/null +++ b/build/cjs/vexflow-leland.js @@ -0,0 +1,7 @@ +/*! + * VexFlow 4.1.0-alpha.0 2022-10-10T04:47:38.237Z 847bc9014672858aedc7f8460384f51f98d6bd84 + * Copyright (c) 2010 Mohit Muthanna Cheppudira + * https://www.vexflow.com https://github.com/0xfe/vexflow + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Vex=e():t.Vex=e()}("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:this,(function(){return(()=>{"use strict";var t={d:(e,i)=>{for(var s in i)t.o(i,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:i[s]})}};t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),t.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),t.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var e={};t.d(e,{default:()=>i});var i={};function s(t,e,i=!0){if("object"!=typeof t||null===t)return!1;let s=t.constructor;if(i){for(;null!==t;){if(s=t.constructor,"CATEGORY"in s&&s.CATEGORY===e)return!0;t=Object.getPrototypeOf(t)}return!1}return"CATEGORY"in s&&s.CATEGORY===e}t.r(i),t.d(i,{Accidental:()=>it,Annotation:()=>ct,AnnotationHorizontalJustify:()=>ht,AnnotationVerticalJustify:()=>lt,Articulation:()=>_t,BEAM_BOTH:()=>Re,BEAM_LEFT:()=>Be,BEAM_RIGHT:()=>Fe,BarNote:()=>At,Barline:()=>Nt,BarlineType:()=>wt,Beam:()=>Oe,Bend:()=>Pt,BoundingBox:()=>C,BoundingBoxComputation:()=>k,Builder:()=>Ve,CanvasContext:()=>Jt,Category:()=>u,ChordSymbol:()=>Bt,ChordSymbolHorizontalJustify:()=>vt,ChordSymbolVerticalJustify:()=>Et,Clef:()=>me,ClefNote:()=>Le,Crescendo:()=>Ie,Curve:()=>Ge,CurvePosition:()=>We,Dot:()=>Ft,EasyScore:()=>Je,EasyScoreGrammar:()=>je,Element:()=>O,Factory:()=>Ti,Flow:()=>Ai,Font:()=>B,FontStyle:()=>N,FontWeight:()=>D,Formatter:()=>Ne,Fraction:()=>v,FretHandFinger:()=>Rt,GhostNote:()=>Ze,Glyph:()=>Q,GlyphNote:()=>ti,GraceNote:()=>ei,GraceNoteGroup:()=>zt,GraceTabNote:()=>wi,KeyManager:()=>vi,KeySigNote:()=>ii,KeySignature:()=>ge,Modifier:()=>Z,ModifierContext:()=>de,ModifierPosition:()=>$,MultiMeasureRest:()=>ni,Music:()=>tt,Note:()=>yt,NoteHead:()=>Ot,NoteSubGroup:()=>jt,Ornament:()=>Vt,OutlineCode:()=>K,Parenthesis:()=>Kt,Parser:()=>He,PedalMarking:()=>oi,Piece:()=>Xe,Registry:()=>R,RenderContext:()=>ft,Renderer:()=>oe,RendererBackends:()=>ie,RendererLineEndType:()=>se,RepeatNote:()=>hi,Repetition:()=>be,RuntimeError:()=>p,SVGContext:()=>ee,Stave:()=>ve,StaveConnector:()=>Ce,StaveHairpin:()=>Ei,StaveLine:()=>ci,StaveModifier:()=>Dt,StaveModifierPosition:()=>Tt,StaveNote:()=>Wt,StaveSection:()=>ue,StaveTempo:()=>pe,StaveText:()=>fe,StaveTie:()=>Gt,Stem:()=>st,StemmableNote:()=>Lt,StringNumber:()=>re,Stroke:()=>he,SymbolModifiers:()=>kt,SymbolTypes:()=>Ct,System:()=>di,TabNote:()=>mi,TabSlide:()=>Ci,TabStave:()=>gi,TabTie:()=>Ut,TextBracket:()=>pi,TextBracketPosition:()=>ui,TextDynamics:()=>fi,TextFormatter:()=>rt,TextJustification:()=>ne,TextNote:()=>_e,TickContext:()=>Xt,Tickable:()=>St,TimeSigNote:()=>xi,TimeSignature:()=>ye,TimeSignatureGlyph:()=>Se,Tremolo:()=>ki,Tuning:()=>Di,Tuplet:()=>Pe,TupletLocation:()=>Ae,Vex:()=>Li,Vibrato:()=>le,VibratoBracket:()=>Si,Voice:()=>Ht,VoiceMode:()=>Yt,Volta:()=>xe,VoltaType:()=>ae,defined:()=>f,drawDot:()=>xt,globalObject:()=>_,isAccidental:()=>n,isAnnotation:()=>a,isBarline:()=>o,isCategory:()=>s,isDot:()=>r,isGraceNote:()=>h,isGraceNoteGroup:()=>l,isHTMLCanvas:()=>$t,isHTMLDiv:()=>qt,isNote:()=>c,isRenderContext:()=>d,isStaveNote:()=>m,isStemmableNote:()=>g,isTabNote:()=>b,log:()=>x,midLine:()=>y,normalizeAngle:()=>w,prefix:()=>T,warn:()=>S});const n=t=>s(t,u.Accidental),a=t=>s(t,u.Annotation),o=t=>s(t,u.Barline),r=t=>s(t,u.Dot),h=t=>s(t,u.GraceNote),l=t=>s(t,u.GraceNoteGroup),c=t=>s(t,u.Note),d=t=>s(t,u.RenderContext),m=t=>s(t,u.StaveNote),g=t=>s(t,u.StemmableNote),b=t=>s(t,u.TabNote);var u;!function(t){t.Accidental="Accidental",t.Annotation="Annotation",t.Articulation="Articulation",t.Barline="Barline",t.BarNote="BarNote",t.Beam="Beam",t.Bend="Bend",t.ChordSymbol="ChordSymbol",t.Clef="Clef",t.ClefNote="ClefNote",t.Crescendo="Crescendo",t.Curve="Curve",t.Dot="Dot",t.Element="Element",t.Fraction="Fraction",t.FretHandFinger="FretHandFinger",t.GhostNote="GhostNote",t.Glyph="Glyph",t.GlyphNote="GlyphNote",t.GraceNote="GraceNote",t.GraceNoteGroup="GraceNoteGroup",t.GraceTabNote="GraceTabNote",t.KeySignature="KeySignature",t.KeySigNote="KeySigNote",t.Modifier="Modifier",t.MultiMeasureRest="MultiMeasureRest",t.Note="Note",t.NoteHead="NoteHead",t.NoteSubGroup="NoteSubGroup",t.Ornament="Ornament",t.Parenthesis="Parenthesis",t.PedalMarking="PedalMarking",t.RenderContext="RenderContext",t.RepeatNote="RepeatNote",t.Repetition="Repetition",t.Stave="Stave",t.StaveConnector="StaveConnector",t.StaveHairpin="StaveHairpin",t.StaveLine="StaveLine",t.StaveModifier="StaveModifier",t.StaveNote="StaveNote",t.StaveSection="StaveSection",t.StaveTempo="StaveTempo",t.StaveText="StaveText",t.StaveTie="StaveTie",t.Stem="Stem",t.StemmableNote="StemmableNote",t.StringNumber="StringNumber",t.Stroke="Stroke",t.System="System",t.TabNote="TabNote",t.TabSlide="TabSlide",t.TabStave="TabStave",t.TabTie="TabTie",t.TextBracket="TextBracket",t.TextDynamics="TextDynamics",t.TextNote="TextNote",t.Tickable="Tickable",t.TimeSignature="TimeSignature",t.TimeSigNote="TimeSigNote",t.Tremolo="Tremolo",t.Tuplet="Tuplet",t.Vibrato="Vibrato",t.VibratoBracket="VibratoBracket",t.Voice="Voice",t.Volta="Volta"}(u||(u={}));class p extends Error{constructor(t,e=""){super("[RuntimeError] "+t+": "+e),this.code=t}}function _(){return"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==t.g?t.g:Function("return this")()}function f(t,e="undefined",i=""){if(void 0===t)throw new p(e,i);return t}function x(t,...e){if(!e)return;const i=Array.prototype.slice.call(e).join(" ");_().console.log(t+": "+i)}function S(...t){const e=t.join(" "),i=new Error;_().console.log("Warning: ",e,i.stack)}function y(t,e){let i=e+(t-e)/2;var s,n;return i%2>0&&(i=((s=10*i)%(n=5)>=n/2?parseInt(""+s/n,10)*n+n:parseInt(""+s/n,10)*n)/10),i}function T(t){return`vf-${t}`}function w(t){return(t%=2*Math.PI)<0&&(t+=2*Math.PI),t}class v{constructor(t,e){this.numerator=1,this.denominator=1,this.set(t,e)}static get CATEGORY(){return u.Fraction}static GCD(t,e){if("number"!=typeof t||Number.isNaN(t)||"number"!=typeof e||Number.isNaN(e))throw new p("BadArgument",`Invalid numbers: ${t}, ${e}`);let i;for(;0!==e;)i=e,e=t%e,t=i;return t}static LCM(t,e){return t*e/v.GCD(t,e)}static LCMM(t){return 0===t.length?0:1===t.length?t[0]:2===t.length?v.LCM(t[0],t[1]):v.LCM(t.shift(),v.LCMM(t))}set(t=1,e=1){return this.numerator=t,this.denominator=e,this}value(){return this.numerator/this.denominator}simplify(){let t=this.numerator,e=this.denominator;const i=v.GCD(t,e);return t/=i,e/=i,e<0&&(e=-e,t=-t),this.set(t,e)}add(t=0,e=1){const[i,s]=E(t,e),n=v.LCM(this.denominator,s),a=n/this.denominator,o=n/s,r=this.numerator*a+i*o;return this.set(r,n)}subtract(t=0,e=1){const[i,s]=E(t,e),n=v.LCM(this.denominator,s),a=n/this.denominator,o=n/s,r=this.numerator*a-i*o;return this.set(r,n)}multiply(t=1,e=1){const[i,s]=E(t,e);return this.set(this.numerator*i,this.denominator*s)}divide(t=1,e=1){const[i,s]=E(t,e);return this.set(this.numerator*s,this.denominator*i)}equals(t){const e=v.__staticFractionA.copy(t).simplify(),i=v.__staticFractionB.copy(this).simplify();return e.numerator===i.numerator&&e.denominator===i.denominator}greaterThan(t){const e=v.__staticFractionB.copy(this);return e.subtract(t),e.numerator>0}greaterThanEquals(t){const e=v.__staticFractionB.copy(this);return e.subtract(t),e.numerator>=0}lessThan(t){return!this.greaterThanEquals(t)}lessThanEquals(t){return!this.greaterThan(t)}clone(){return new v(this.numerator,this.denominator)}copy(t){return"number"==typeof t?this.set(t,1):this.set(t.numerator,t.denominator)}quotient(){return Math.floor(this.numerator/this.denominator)}remainder(){return this.numerator%this.denominator}makeAbs(){return this.denominator=Math.abs(this.denominator),this.numerator=Math.abs(this.numerator),this}toString(){return`${this.numerator}/${this.denominator}`}toSimplifiedString(){return v.__staticFractionTmp.copy(this).simplify().toString()}toMixedString(){let t="";const e=this.quotient(),i=v.__staticFractionTmp.copy(this);return e<0&&i.makeAbs(),0!==e?(t+=e,0!==i.numerator&&(t+=` ${i.toSimplifiedString()}`)):t=0===i.numerator?"0":i.toSimplifiedString(),t}parse(t){const e=t.split("/"),i=parseInt(e[0],10),s=e[1]?parseInt(e[1],10):1;return this.set(i,s)}}function E(t,e=1){return"number"==typeof t?[t,e]:[t.numerator,t.denominator]}v.__staticFractionA=new v,v.__staticFractionB=new v,v.__staticFractionTmp=new v;class C{constructor(t,e,i,s){this.x=t,this.y=e,this.w=i,this.h=s}static copy(t){return new C(t.x,t.y,t.w,t.h)}getX(){return this.x}getY(){return this.y}getW(){return this.w}getH(){return this.h}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setW(t){return this.w=t,this}setH(t){return this.h=t,this}move(t,e){return this.x+=t,this.y+=e,this}clone(){return C.copy(this)}mergeWith(t){const e=t,i=this.xthis.x2)&&(this.x2=t),(isNaN(this.y1)||ethis.y2)&&(this.y2=e)}addX(t){this.addPoint(t,this.y1)}addY(t){this.addPoint(this.x1,t)}addQuadraticCurve(t,e,i,s,n,a){this.addPoint(t,e),this.addPoint(n,a);const o=i-t;let r=o-(n-i);if(0!=r){const e=o/r;if(e>0&&e<1){const s=1-e;this.addX(s*s*t+2*s*e*i+e*e*n)}}const h=s-e;if(r=h-(a-s),0!=r){const t=h/r;if(t>0&&t<1){const i=1-t;this.addY(i*i*e+2*i*t*s+t*t*a)}}}addBezierCurve(t,e,i,s,n,a,o,r){const h=[t,e],l=[i,s],c=[n,a],d=[o,r];let m;this.addPoint(h[0],h[1]),this.addPoint(d[0],d[1]);const g=(t,e)=>Math.pow(1-t,3)*h[e]+3*Math.pow(1-t,2)*t*l[e]+3*(1-t)*Math.pow(t,2)*c[e]+Math.pow(t,3)*d[e];for(m=0;m<=1;m++){const t=6*h[m]-12*l[m]+6*c[m],e=-3*h[m]+9*l[m]-9*c[m]+3*d[m],i=3*l[m]-3*h[m];if(0===e){if(0===t)continue;const e=-i/t;0=600;{const e=parseInt(t,10);return isNaN(e)?"bold"===t.toLowerCase():e>=600}}return!1}static isItalic(t){return!!t&&t.toLowerCase()===N.ITALIC}static loadWebFont(t,e,i=!0){return A(this,void 0,void 0,(function*(){const s=new FontFace(t,(i?`url(${e}2) format('woff2'), `:"")+`url(${e}) format('woff')`);return yield s.load(),document.fonts.add(s),s}))}static loadWebFonts(){return A(this,void 0,void 0,(function*(){const t=B.WEB_FONT_HOST,e=B.WEB_FONT_FILES;for(const i in e){const s=e[i];B.loadWebFont(i,t+s)}}))}static load(t,e,i){let s=M[t];return s||(s=new B(t),M[t]=s),e&&s.setData(e),i&&s.setMetrics(i),s}getName(){return this.name}getData(){return f(this.data,"FontError","Missing font data")}getMetrics(){return f(this.metrics,"FontError","Missing metrics")}setData(t){this.data=t}setMetrics(t){this.metrics=t}hasData(){return void 0!==this.data}getResolution(){return this.getData().resolution}getGlyphs(){return this.getData().glyphs}lookupMetric(t,e){const i=t.split(".");let s=this.getMetrics();for(let t=0;tt[e]))}}return[]}getElementsByType(t){return this.getElementsByAttribute("type",t)}getElementsByClass(t){return this.getElementsByAttribute("class",t)}onUpdate(t){return["id","type","class"].includes(t.name)&&this.updateIndex(t),this}}class O{constructor(){var t;this.children=[],this.attrs={id:O.newID(),el:void 0,type:this.getCategory(),classes:{}},this.rendered=!1,null===(t=R.getDefaultRegistry())||void 0===t||t.register(this)}static get CATEGORY(){return u.Element}static newID(){return"auto"+O.ID++}addChildElement(t){return this.children.push(t),this}getCategory(){return this.constructor.CATEGORY}setStyle(t){return this.style=t,this}setGroupStyle(t){return this.style=t,this.children.forEach((e=>e.setGroupStyle(t))),this}getStyle(){return this.style}applyStyle(t=this.context,e=this.getStyle()){return e&&t?(t.save(),e.shadowColor&&t.setShadowColor(e.shadowColor),e.shadowBlur&&t.setShadowBlur(e.shadowBlur),e.fillStyle&&t.setFillStyle(e.fillStyle),e.strokeStyle&&t.setStrokeStyle(e.strokeStyle),e.lineWidth&&t.setLineWidth(e.lineWidth),this):this}restoreStyle(t=this.context,e=this.getStyle()){return e&&t?(t.restore(),this):this}drawWithStyle(){this.checkContext(),this.applyStyle(),this.draw(),this.restoreStyle()}hasClass(t){return!0===this.attrs.classes[t]}addClass(t){var e;return this.attrs.classes[t]=!0,null===(e=this.registry)||void 0===e||e.onUpdate({id:this.attrs.id,name:"class",value:t,oldValue:void 0}),this}removeClass(t){var e;return delete this.attrs.classes[t],null===(e=this.registry)||void 0===e||e.onUpdate({id:this.attrs.id,name:"class",value:void 0,oldValue:t}),this}onRegister(t){return this.registry=t,this}isRendered(){return this.rendered}setRendered(t=!0){return this.rendered=t,this}getAttributes(){return this.attrs}getAttribute(t){return this.attrs[t]}getSVGElement(t=""){const e=T(this.attrs.id+t),i=document.getElementById(e);if(i)return i}setAttribute(t,e){var i;const s=this.attrs.id,n=this.attrs[t];return this.attrs[t]=e,null===(i=this.registry)||void 0===i||i.onUpdate({id:s,name:t,value:e,oldValue:n}),this}getBoundingBox(){return this.boundingBox}getContext(){return this.context}setContext(t){return this.context=t,this}checkContext(){return f(this.context,"NoContext","No rendering context attached to instance.")}set font(t){this.setFont(t)}get font(){return B.toCSSString(this.textFont)}setFont(t,e,i,s){const n=this.constructor.TEXT_FONT,a="object"==typeof t,o="string"==typeof t,r=void 0===t,h=void 0===e&&void 0===i&&void 0===s;return this.textFont=a?Object.assign(Object.assign({},n),t):o&&h?B.fromCSSString(t):r&&h?Object.assign({},n):B.validate(null!=t?t:n.family,null!=e?e:n.size,null!=i?i:n.weight,null!=s?s:n.style),this}getFont(){return this.textFont||this.resetFont(),B.toCSSString(this.textFont)}resetFont(){this.setFont()}get fontInfo(){return this.textFont||this.resetFont(),Object.assign({},this.textFont)}set fontInfo(t){this.setFont(t)}setFontSize(t){const e=this.fontInfo;return this.setFont(e.family,t,e.weight,e.style),this}getFontSize(){return this.fontSize}set fontSize(t){this.setFontSize(t)}get fontSize(){let t=this.fontInfo.size;return"number"==typeof t&&(t=`${t}pt`),t}get fontSizeInPoints(){return B.convertSizeToPointValue(this.fontSize)}get fontSizeInPixels(){return B.convertSizeToPixelValue(this.fontSize)}get fontStyle(){return this.fontInfo.style}set fontStyle(t){const e=this.fontInfo;this.setFont(e.family,e.size,e.weight,t)}get fontWeight(){return this.fontInfo.weight+""}set fontWeight(t){const e=this.fontInfo;this.setFont(e.family,e.size,t,e.style)}}O.ID=1e3,O.TEXT_FONT={family:B.SANS_SERIF,size:B.SIZE,weight:D.NORMAL,style:N.NORMAL};const L=16384,I={"1/2":32768,1:16384,2:8192,4:4096,8:2048,16:1024,32:512,64:256,128:128,256:64},W={w:"1",h:"2",q:"4",b:"256"},G={C:{num:0},Am:{num:0},F:{acc:"b",num:1},Dm:{acc:"b",num:1},Bb:{acc:"b",num:2},Gm:{acc:"b",num:2},Eb:{acc:"b",num:3},Cm:{acc:"b",num:3},Ab:{acc:"b",num:4},Fm:{acc:"b",num:4},Db:{acc:"b",num:5},Bbm:{acc:"b",num:5},Gb:{acc:"b",num:6},Ebm:{acc:"b",num:6},Cb:{acc:"b",num:7},Abm:{acc:"b",num:7},G:{acc:"#",num:1},Em:{acc:"#",num:1},D:{acc:"#",num:2},Bm:{acc:"#",num:2},A:{acc:"#",num:3},"F#m":{acc:"#",num:3},E:{acc:"#",num:4},"C#m":{acc:"#",num:4},B:{acc:"#",num:5},"G#m":{acc:"#",num:5},"F#":{acc:"#",num:6},"D#m":{acc:"#",num:6},"C#":{acc:"#",num:7},"A#m":{acc:"#",num:7}},U={treble:{line_shift:0},bass:{line_shift:6},tenor:{line_shift:4},alto:{line_shift:3},soprano:{line_shift:1},percussion:{line_shift:0},"mezzo-soprano":{line_shift:2},"baritone-c":{line_shift:5},"baritone-f":{line_shift:5},subbass:{line_shift:7},french:{line_shift:-1}},Y={C:{index:0,int_val:0},CN:{index:0,int_val:0,accidental:"n"},"C#":{index:0,int_val:1,accidental:"#"},"C##":{index:0,int_val:2,accidental:"##"},CB:{index:0,int_val:11,accidental:"b"},CBB:{index:0,int_val:10,accidental:"bb"},D:{index:1,int_val:2},DN:{index:1,int_val:2,accidental:"n"},"D#":{index:1,int_val:3,accidental:"#"},"D##":{index:1,int_val:4,accidental:"##"},DB:{index:1,int_val:1,accidental:"b"},DBB:{index:1,int_val:0,accidental:"bb"},E:{index:2,int_val:4},EN:{index:2,int_val:4,accidental:"n"},"E#":{index:2,int_val:5,accidental:"#"},"E##":{index:2,int_val:6,accidental:"##"},EB:{index:2,int_val:3,accidental:"b"},EBB:{index:2,int_val:2,accidental:"bb"},F:{index:3,int_val:5},FN:{index:3,int_val:5,accidental:"n"},"F#":{index:3,int_val:6,accidental:"#"},"F##":{index:3,int_val:7,accidental:"##"},FB:{index:3,int_val:4,accidental:"b"},FBB:{index:3,int_val:3,accidental:"bb"},G:{index:4,int_val:7},GN:{index:4,int_val:7,accidental:"n"},"G#":{index:4,int_val:8,accidental:"#"},"G##":{index:4,int_val:9,accidental:"##"},GB:{index:4,int_val:6,accidental:"b"},GBB:{index:4,int_val:5,accidental:"bb"},A:{index:5,int_val:9},AN:{index:5,int_val:9,accidental:"n"},"A#":{index:5,int_val:10,accidental:"#"},"A##":{index:5,int_val:11,accidental:"##"},AB:{index:5,int_val:8,accidental:"b"},ABB:{index:5,int_val:7,accidental:"bb"},B:{index:6,int_val:11},BN:{index:6,int_val:11,accidental:"n"},"B#":{index:6,int_val:12,accidental:"#"},"B##":{index:6,int_val:13,accidental:"##"},BB:{index:6,int_val:10,accidental:"b"},BBB:{index:6,int_val:9,accidental:"bb"},R:{index:6,rest:!0},X:{index:6,accidental:"",octave:4,code:"noteheadXBlack",shift_right:5.5}},H={"#":{code:"accidentalSharp",parenRightPaddingAdjustment:-1},"##":{code:"accidentalDoubleSharp",parenRightPaddingAdjustment:-1},b:{code:"accidentalFlat",parenRightPaddingAdjustment:-2},bb:{code:"accidentalDoubleFlat",parenRightPaddingAdjustment:-2},n:{code:"accidentalNatural",parenRightPaddingAdjustment:-1},"{":{code:"accidentalParensLeft",parenRightPaddingAdjustment:-1},"}":{code:"accidentalParensRight",parenRightPaddingAdjustment:-1},db:{code:"accidentalThreeQuarterTonesFlatZimmermann",parenRightPaddingAdjustment:-1},d:{code:"accidentalQuarterToneFlatStein",parenRightPaddingAdjustment:0},"++":{code:"accidentalThreeQuarterTonesSharpStein",parenRightPaddingAdjustment:-1},"+":{code:"accidentalQuarterToneSharpStein",parenRightPaddingAdjustment:-1},"+-":{code:"accidentalKucukMucennebSharp",parenRightPaddingAdjustment:-1},bs:{code:"accidentalBakiyeFlat",parenRightPaddingAdjustment:-1},bss:{code:"accidentalBuyukMucennebFlat",parenRightPaddingAdjustment:-1},o:{code:"accidentalSori",parenRightPaddingAdjustment:-1},k:{code:"accidentalKoron",parenRightPaddingAdjustment:-1},bbs:{code:"vexAccidentalMicrotonal1",parenRightPaddingAdjustment:-1},"++-":{code:"vexAccidentalMicrotonal2",parenRightPaddingAdjustment:-1},ashs:{code:"vexAccidentalMicrotonal3",parenRightPaddingAdjustment:-1},afhf:{code:"vexAccidentalMicrotonal4",parenRightPaddingAdjustment:-1},accSagittal5v7KleismaUp:{code:"accSagittal5v7KleismaUp",parenRightPaddingAdjustment:-1},accSagittal5v7KleismaDown:{code:"accSagittal5v7KleismaDown",parenRightPaddingAdjustment:-1},accSagittal5CommaUp:{code:"accSagittal5CommaUp",parenRightPaddingAdjustment:-1},accSagittal5CommaDown:{code:"accSagittal5CommaDown",parenRightPaddingAdjustment:-1},accSagittal7CommaUp:{code:"accSagittal7CommaUp",parenRightPaddingAdjustment:-1},accSagittal7CommaDown:{code:"accSagittal7CommaDown",parenRightPaddingAdjustment:-1},accSagittal25SmallDiesisUp:{code:"accSagittal25SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal25SmallDiesisDown:{code:"accSagittal25SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittal35MediumDiesisUp:{code:"accSagittal35MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal35MediumDiesisDown:{code:"accSagittal35MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11MediumDiesisUp:{code:"accSagittal11MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11MediumDiesisDown:{code:"accSagittal11MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11LargeDiesisUp:{code:"accSagittal11LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11LargeDiesisDown:{code:"accSagittal11LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittal35LargeDiesisUp:{code:"accSagittal35LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal35LargeDiesisDown:{code:"accSagittal35LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp25SDown:{code:"accSagittalSharp25SDown",parenRightPaddingAdjustment:-1},accSagittalFlat25SUp:{code:"accSagittalFlat25SUp",parenRightPaddingAdjustment:-1},accSagittalSharp7CDown:{code:"accSagittalSharp7CDown",parenRightPaddingAdjustment:-1},accSagittalFlat7CUp:{code:"accSagittalFlat7CUp",parenRightPaddingAdjustment:-1},accSagittalSharp5CDown:{code:"accSagittalSharp5CDown",parenRightPaddingAdjustment:-1},accSagittalFlat5CUp:{code:"accSagittalFlat5CUp",parenRightPaddingAdjustment:-1},accSagittalSharp5v7kDown:{code:"accSagittalSharp5v7kDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v7kUp:{code:"accSagittalFlat5v7kUp",parenRightPaddingAdjustment:-1},accSagittalSharp:{code:"accSagittalSharp",parenRightPaddingAdjustment:-1},accSagittalFlat:{code:"accSagittalFlat",parenRightPaddingAdjustment:-1},accSagittalSharp5v7kUp:{code:"accSagittalSharp5v7kUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v7kDown:{code:"accSagittalFlat5v7kDown",parenRightPaddingAdjustment:-1},accSagittalSharp5CUp:{code:"accSagittalSharp5CUp",parenRightPaddingAdjustment:-1},accSagittalFlat5CDown:{code:"accSagittalFlat5CDown",parenRightPaddingAdjustment:-1},accSagittalSharp7CUp:{code:"accSagittalSharp7CUp",parenRightPaddingAdjustment:-1},accSagittalFlat7CDown:{code:"accSagittalFlat7CDown",parenRightPaddingAdjustment:-1},accSagittalSharp25SUp:{code:"accSagittalSharp25SUp",parenRightPaddingAdjustment:-1},accSagittalFlat25SDown:{code:"accSagittalFlat25SDown",parenRightPaddingAdjustment:-1},accSagittalSharp35MUp:{code:"accSagittalSharp35MUp",parenRightPaddingAdjustment:-1},accSagittalFlat35MDown:{code:"accSagittalFlat35MDown",parenRightPaddingAdjustment:-1},accSagittalSharp11MUp:{code:"accSagittalSharp11MUp",parenRightPaddingAdjustment:-1},accSagittalFlat11MDown:{code:"accSagittalFlat11MDown",parenRightPaddingAdjustment:-1},accSagittalSharp11LUp:{code:"accSagittalSharp11LUp",parenRightPaddingAdjustment:-1},accSagittalFlat11LDown:{code:"accSagittalFlat11LDown",parenRightPaddingAdjustment:-1},accSagittalSharp35LUp:{code:"accSagittalSharp35LUp",parenRightPaddingAdjustment:-1},accSagittalFlat35LDown:{code:"accSagittalFlat35LDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp25SDown:{code:"accSagittalDoubleSharp25SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat25SUp:{code:"accSagittalDoubleFlat25SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7CDown:{code:"accSagittalDoubleSharp7CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7CUp:{code:"accSagittalDoubleFlat7CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5CDown:{code:"accSagittalDoubleSharp5CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5CUp:{code:"accSagittalDoubleFlat5CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v7kDown:{code:"accSagittalDoubleSharp5v7kDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v7kUp:{code:"accSagittalDoubleFlat5v7kUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp:{code:"accSagittalDoubleSharp",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat:{code:"accSagittalDoubleFlat",parenRightPaddingAdjustment:-1},accSagittal7v11KleismaUp:{code:"accSagittal7v11KleismaUp",parenRightPaddingAdjustment:-1},accSagittal7v11KleismaDown:{code:"accSagittal7v11KleismaDown",parenRightPaddingAdjustment:-1},accSagittal17CommaUp:{code:"accSagittal17CommaUp",parenRightPaddingAdjustment:-1},accSagittal17CommaDown:{code:"accSagittal17CommaDown",parenRightPaddingAdjustment:-1},accSagittal55CommaUp:{code:"accSagittal55CommaUp",parenRightPaddingAdjustment:-1},accSagittal55CommaDown:{code:"accSagittal55CommaDown",parenRightPaddingAdjustment:-1},accSagittal7v11CommaUp:{code:"accSagittal7v11CommaUp",parenRightPaddingAdjustment:-1},accSagittal7v11CommaDown:{code:"accSagittal7v11CommaDown",parenRightPaddingAdjustment:-1},accSagittal5v11SmallDiesisUp:{code:"accSagittal5v11SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v11SmallDiesisDown:{code:"accSagittal5v11SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v11SDown:{code:"accSagittalSharp5v11SDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v11SUp:{code:"accSagittalFlat5v11SUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v11CDown:{code:"accSagittalSharp7v11CDown",parenRightPaddingAdjustment:-1},accSagittalFlat7v11CUp:{code:"accSagittalFlat7v11CUp",parenRightPaddingAdjustment:-1},accSagittalSharp55CDown:{code:"accSagittalSharp55CDown",parenRightPaddingAdjustment:-1},accSagittalFlat55CUp:{code:"accSagittalFlat55CUp",parenRightPaddingAdjustment:-1},accSagittalSharp17CDown:{code:"accSagittalSharp17CDown",parenRightPaddingAdjustment:-1},accSagittalFlat17CUp:{code:"accSagittalFlat17CUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v11kDown:{code:"accSagittalSharp7v11kDown",parenRightPaddingAdjustment:-1},accSagittalFlat7v11kUp:{code:"accSagittalFlat7v11kUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v11kUp:{code:"accSagittalSharp7v11kUp",parenRightPaddingAdjustment:-1},accSagittalFlat7v11kDown:{code:"accSagittalFlat7v11kDown",parenRightPaddingAdjustment:-1},accSagittalSharp17CUp:{code:"accSagittalSharp17CUp",parenRightPaddingAdjustment:-1},accSagittalFlat17CDown:{code:"accSagittalFlat17CDown",parenRightPaddingAdjustment:-1},accSagittalSharp55CUp:{code:"accSagittalSharp55CUp",parenRightPaddingAdjustment:-1},accSagittalFlat55CDown:{code:"accSagittalFlat55CDown",parenRightPaddingAdjustment:-1},accSagittalSharp7v11CUp:{code:"accSagittalSharp7v11CUp",parenRightPaddingAdjustment:-1},accSagittalFlat7v11CDown:{code:"accSagittalFlat7v11CDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v11SUp:{code:"accSagittalSharp5v11SUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v11SDown:{code:"accSagittalFlat5v11SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v11SDown:{code:"accSagittalDoubleSharp5v11SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v11SUp:{code:"accSagittalDoubleFlat5v11SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7v11CDown:{code:"accSagittalDoubleSharp7v11CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7v11CUp:{code:"accSagittalDoubleFlat7v11CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp55CDown:{code:"accSagittalDoubleSharp55CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat55CUp:{code:"accSagittalDoubleFlat55CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp17CDown:{code:"accSagittalDoubleSharp17CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat17CUp:{code:"accSagittalDoubleFlat17CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7v11kDown:{code:"accSagittalDoubleSharp7v11kDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7v11kUp:{code:"accSagittalDoubleFlat7v11kUp",parenRightPaddingAdjustment:-1},accSagittal23CommaUp:{code:"accSagittal23CommaUp",parenRightPaddingAdjustment:-1},accSagittal23CommaDown:{code:"accSagittal23CommaDown",parenRightPaddingAdjustment:-1},accSagittal5v19CommaUp:{code:"accSagittal5v19CommaUp",parenRightPaddingAdjustment:-1},accSagittal5v19CommaDown:{code:"accSagittal5v19CommaDown",parenRightPaddingAdjustment:-1},accSagittal5v23SmallDiesisUp:{code:"accSagittal5v23SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v23SmallDiesisDown:{code:"accSagittal5v23SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v23SDown:{code:"accSagittalSharp5v23SDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v23SUp:{code:"accSagittalFlat5v23SUp",parenRightPaddingAdjustment:-1},accSagittalSharp5v19CDown:{code:"accSagittalSharp5v19CDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v19CUp:{code:"accSagittalFlat5v19CUp",parenRightPaddingAdjustment:-1},accSagittalSharp23CDown:{code:"accSagittalSharp23CDown",parenRightPaddingAdjustment:-1},accSagittalFlat23CUp:{code:"accSagittalFlat23CUp",parenRightPaddingAdjustment:-1},accSagittalSharp23CUp:{code:"accSagittalSharp23CUp",parenRightPaddingAdjustment:-1},accSagittalFlat23CDown:{code:"accSagittalFlat23CDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v19CUp:{code:"accSagittalSharp5v19CUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v19CDown:{code:"accSagittalFlat5v19CDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v23SUp:{code:"accSagittalSharp5v23SUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v23SDown:{code:"accSagittalFlat5v23SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v23SDown:{code:"accSagittalDoubleSharp5v23SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v23SUp:{code:"accSagittalDoubleFlat5v23SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v19CDown:{code:"accSagittalDoubleSharp5v19CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v19CUp:{code:"accSagittalDoubleFlat5v19CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp23CDown:{code:"accSagittalDoubleSharp23CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat23CUp:{code:"accSagittalDoubleFlat23CUp",parenRightPaddingAdjustment:-1},accSagittal19SchismaUp:{code:"accSagittal19SchismaUp",parenRightPaddingAdjustment:-1},accSagittal19SchismaDown:{code:"accSagittal19SchismaDown",parenRightPaddingAdjustment:-1},accSagittal17KleismaUp:{code:"accSagittal17KleismaUp",parenRightPaddingAdjustment:-1},accSagittal17KleismaDown:{code:"accSagittal17KleismaDown",parenRightPaddingAdjustment:-1},accSagittal143CommaUp:{code:"accSagittal143CommaUp",parenRightPaddingAdjustment:-1},accSagittal143CommaDown:{code:"accSagittal143CommaDown",parenRightPaddingAdjustment:-1},accSagittal11v49CommaUp:{code:"accSagittal11v49CommaUp",parenRightPaddingAdjustment:-1},accSagittal11v49CommaDown:{code:"accSagittal11v49CommaDown",parenRightPaddingAdjustment:-1},accSagittal19CommaUp:{code:"accSagittal19CommaUp",parenRightPaddingAdjustment:-1},accSagittal19CommaDown:{code:"accSagittal19CommaDown",parenRightPaddingAdjustment:-1},accSagittal7v19CommaUp:{code:"accSagittal7v19CommaUp",parenRightPaddingAdjustment:-1},accSagittal7v19CommaDown:{code:"accSagittal7v19CommaDown",parenRightPaddingAdjustment:-1},accSagittal49SmallDiesisUp:{code:"accSagittal49SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal49SmallDiesisDown:{code:"accSagittal49SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittal23SmallDiesisUp:{code:"accSagittal23SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal23SmallDiesisDown:{code:"accSagittal23SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittal5v13MediumDiesisUp:{code:"accSagittal5v13MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v13MediumDiesisDown:{code:"accSagittal5v13MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11v19MediumDiesisUp:{code:"accSagittal11v19MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11v19MediumDiesisDown:{code:"accSagittal11v19MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal49MediumDiesisUp:{code:"accSagittal49MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal49MediumDiesisDown:{code:"accSagittal49MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal5v49MediumDiesisUp:{code:"accSagittal5v49MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v49MediumDiesisDown:{code:"accSagittal5v49MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal49LargeDiesisUp:{code:"accSagittal49LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal49LargeDiesisDown:{code:"accSagittal49LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11v19LargeDiesisUp:{code:"accSagittal11v19LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11v19LargeDiesisDown:{code:"accSagittal11v19LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittal5v13LargeDiesisUp:{code:"accSagittal5v13LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v13LargeDiesisDown:{code:"accSagittal5v13LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp23SDown:{code:"accSagittalSharp23SDown",parenRightPaddingAdjustment:-1},accSagittalFlat23SUp:{code:"accSagittalFlat23SUp",parenRightPaddingAdjustment:-1},accSagittalSharp49SDown:{code:"accSagittalSharp49SDown",parenRightPaddingAdjustment:-1},accSagittalFlat49SUp:{code:"accSagittalFlat49SUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v19CDown:{code:"accSagittalSharp7v19CDown",parenRightPaddingAdjustment:-1},accSagittalFlat7v19CUp:{code:"accSagittalFlat7v19CUp",parenRightPaddingAdjustment:-1},accSagittalSharp19CDown:{code:"accSagittalSharp19CDown",parenRightPaddingAdjustment:-1},accSagittalFlat19CUp:{code:"accSagittalFlat19CUp",parenRightPaddingAdjustment:-1},accSagittalSharp11v49CDown:{code:"accSagittalSharp11v49CDown",parenRightPaddingAdjustment:-1},accSagittalFlat11v49CUp:{code:"accSagittalFlat11v49CUp",parenRightPaddingAdjustment:-1},accSagittalSharp143CDown:{code:"accSagittalSharp143CDown",parenRightPaddingAdjustment:-1},accSagittalFlat143CUp:{code:"accSagittalFlat143CUp",parenRightPaddingAdjustment:-1},accSagittalSharp17kDown:{code:"accSagittalSharp17kDown",parenRightPaddingAdjustment:-1},accSagittalFlat17kUp:{code:"accSagittalFlat17kUp",parenRightPaddingAdjustment:-1},accSagittalSharp19sDown:{code:"accSagittalSharp19sDown",parenRightPaddingAdjustment:-1},accSagittalFlat19sUp:{code:"accSagittalFlat19sUp",parenRightPaddingAdjustment:-1},accSagittalSharp19sUp:{code:"accSagittalSharp19sUp",parenRightPaddingAdjustment:-1},accSagittalFlat19sDown:{code:"accSagittalFlat19sDown",parenRightPaddingAdjustment:-1},accSagittalSharp17kUp:{code:"accSagittalSharp17kUp",parenRightPaddingAdjustment:-1},accSagittalFlat17kDown:{code:"accSagittalFlat17kDown",parenRightPaddingAdjustment:-1},accSagittalSharp143CUp:{code:"accSagittalSharp143CUp",parenRightPaddingAdjustment:-1},accSagittalFlat143CDown:{code:"accSagittalFlat143CDown",parenRightPaddingAdjustment:-1},accSagittalSharp11v49CUp:{code:"accSagittalSharp11v49CUp",parenRightPaddingAdjustment:-1},accSagittalFlat11v49CDown:{code:"accSagittalFlat11v49CDown",parenRightPaddingAdjustment:-1},accSagittalSharp19CUp:{code:"accSagittalSharp19CUp",parenRightPaddingAdjustment:-1},accSagittalFlat19CDown:{code:"accSagittalFlat19CDown",parenRightPaddingAdjustment:-1},accSagittalSharp7v19CUp:{code:"accSagittalSharp7v19CUp",parenRightPaddingAdjustment:-1},accSagittalFlat7v19CDown:{code:"accSagittalFlat7v19CDown",parenRightPaddingAdjustment:-1},accSagittalSharp49SUp:{code:"accSagittalSharp49SUp",parenRightPaddingAdjustment:-1},accSagittalFlat49SDown:{code:"accSagittalFlat49SDown",parenRightPaddingAdjustment:-1},accSagittalSharp23SUp:{code:"accSagittalSharp23SUp",parenRightPaddingAdjustment:-1},accSagittalFlat23SDown:{code:"accSagittalFlat23SDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v13MUp:{code:"accSagittalSharp5v13MUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v13MDown:{code:"accSagittalFlat5v13MDown",parenRightPaddingAdjustment:-1},accSagittalSharp11v19MUp:{code:"accSagittalSharp11v19MUp",parenRightPaddingAdjustment:-1},accSagittalFlat11v19MDown:{code:"accSagittalFlat11v19MDown",parenRightPaddingAdjustment:-1},accSagittalSharp49MUp:{code:"accSagittalSharp49MUp",parenRightPaddingAdjustment:-1},accSagittalFlat49MDown:{code:"accSagittalFlat49MDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v49MUp:{code:"accSagittalSharp5v49MUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v49MDown:{code:"accSagittalFlat5v49MDown",parenRightPaddingAdjustment:-1},accSagittalSharp49LUp:{code:"accSagittalSharp49LUp",parenRightPaddingAdjustment:-1},accSagittalFlat49LDown:{code:"accSagittalFlat49LDown",parenRightPaddingAdjustment:-1},accSagittalSharp11v19LUp:{code:"accSagittalSharp11v19LUp",parenRightPaddingAdjustment:-1},accSagittalFlat11v19LDown:{code:"accSagittalFlat11v19LDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v13LUp:{code:"accSagittalSharp5v13LUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v13LDown:{code:"accSagittalFlat5v13LDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp23SDown:{code:"accSagittalDoubleSharp23SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat23SUp:{code:"accSagittalDoubleFlat23SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp49SDown:{code:"accSagittalDoubleSharp49SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat49SUp:{code:"accSagittalDoubleFlat49SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7v19CDown:{code:"accSagittalDoubleSharp7v19CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7v19CUp:{code:"accSagittalDoubleFlat7v19CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp19CDown:{code:"accSagittalDoubleSharp19CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat19CUp:{code:"accSagittalDoubleFlat19CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp11v49CDown:{code:"accSagittalDoubleSharp11v49CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat11v49CUp:{code:"accSagittalDoubleFlat11v49CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp143CDown:{code:"accSagittalDoubleSharp143CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat143CUp:{code:"accSagittalDoubleFlat143CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp17kDown:{code:"accSagittalDoubleSharp17kDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat17kUp:{code:"accSagittalDoubleFlat17kUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp19sDown:{code:"accSagittalDoubleSharp19sDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat19sUp:{code:"accSagittalDoubleFlat19sUp",parenRightPaddingAdjustment:-1},accSagittalShaftUp:{code:"accSagittalShaftUp",parenRightPaddingAdjustment:-1},accSagittalShaftDown:{code:"accSagittalShaftDown",parenRightPaddingAdjustment:-1},accSagittalAcute:{code:"accSagittalAcute",parenRightPaddingAdjustment:-1},accSagittalGrave:{code:"accSagittalGrave",parenRightPaddingAdjustment:-1},accSagittal1MinaUp:{code:"accSagittal1MinaUp",parenRightPaddingAdjustment:-1},accSagittal1MinaDown:{code:"accSagittal1MinaDown",parenRightPaddingAdjustment:-1},accSagittal2MinasUp:{code:"accSagittal2MinasUp",parenRightPaddingAdjustment:-1},accSagittal2MinasDown:{code:"accSagittal2MinasDown",parenRightPaddingAdjustment:-1},accSagittal1TinaUp:{code:"accSagittal1TinaUp",parenRightPaddingAdjustment:-1},accSagittal1TinaDown:{code:"accSagittal1TinaDown",parenRightPaddingAdjustment:-1},accSagittal2TinasUp:{code:"accSagittal2TinasUp",parenRightPaddingAdjustment:-1},accSagittal2TinasDown:{code:"accSagittal2TinasDown",parenRightPaddingAdjustment:-1},accSagittal3TinasUp:{code:"accSagittal3TinasUp",parenRightPaddingAdjustment:-1},accSagittal3TinasDown:{code:"accSagittal3TinasDown",parenRightPaddingAdjustment:-1},accSagittal4TinasUp:{code:"accSagittal4TinasUp",parenRightPaddingAdjustment:-1},accSagittal4TinasDown:{code:"accSagittal4TinasDown",parenRightPaddingAdjustment:-1},accSagittal5TinasUp:{code:"accSagittal5TinasUp",parenRightPaddingAdjustment:-1},accSagittal5TinasDown:{code:"accSagittal5TinasDown",parenRightPaddingAdjustment:-1},accSagittal6TinasUp:{code:"accSagittal6TinasUp",parenRightPaddingAdjustment:-1},accSagittal6TinasDown:{code:"accSagittal6TinasDown",parenRightPaddingAdjustment:-1},accSagittal7TinasUp:{code:"accSagittal7TinasUp",parenRightPaddingAdjustment:-1},accSagittal7TinasDown:{code:"accSagittal7TinasDown",parenRightPaddingAdjustment:-1},accSagittal8TinasUp:{code:"accSagittal8TinasUp",parenRightPaddingAdjustment:-1},accSagittal8TinasDown:{code:"accSagittal8TinasDown",parenRightPaddingAdjustment:-1},accSagittal9TinasUp:{code:"accSagittal9TinasUp",parenRightPaddingAdjustment:-1},accSagittal9TinasDown:{code:"accSagittal9TinasDown",parenRightPaddingAdjustment:-1},accSagittalFractionalTinaUp:{code:"accSagittalFractionalTinaUp",parenRightPaddingAdjustment:-1},accSagittalFractionalTinaDown:{code:"accSagittalFractionalTinaDown",parenRightPaddingAdjustment:-1},accidentalNarrowReversedFlat:{code:"accidentalNarrowReversedFlat",parenRightPaddingAdjustment:-1},accidentalNarrowReversedFlatAndFlat:{code:"accidentalNarrowReversedFlatAndFlat",parenRightPaddingAdjustment:-1},accidentalWilsonPlus:{code:"accidentalWilsonPlus",parenRightPaddingAdjustment:-1},accidentalWilsonMinus:{code:"accidentalWilsonMinus",parenRightPaddingAdjustment:-1}},z={"a.":{code:"augmentationDot",between_lines:!0},av:{aboveCode:"articStaccatissimoAbove",belowCode:"articStaccatissimoBelow",between_lines:!0},"a>":{aboveCode:"articAccentAbove",belowCode:"articAccentBelow",between_lines:!0},"a-":{aboveCode:"articTenutoAbove",belowCode:"articTenutoBelow",between_lines:!0},"a^":{aboveCode:"articMarcatoAbove",belowCode:"articMarcatoBelow",between_lines:!1},"a+":{code:"pluckedLeftHandPizzicato",between_lines:!1},ao:{aboveCode:"pluckedSnapPizzicatoAbove",belowCode:"pluckedSnapPizzicatoBelow",between_lines:!1},ah:{code:"stringsHarmonic",between_lines:!1},"a@":{aboveCode:"fermataAbove",belowCode:"fermataBelow",between_lines:!1},"a@a":{code:"fermataAbove",between_lines:!1},"a@u":{code:"fermataBelow",between_lines:!1},"a@s":{aboveCode:"fermataShortAbove",belowCode:"fermataShortBelow",between_lines:!1},"a@as":{code:"fermataShortAbove",between_lines:!1},"a@us":{code:"fermataShortBelow",between_lines:!1},"a@l":{aboveCode:"fermataLongAbove",belowCode:"fermataLongBelow",between_lines:!1},"a@al":{code:"fermataLongAbove",between_lines:!1},"a@ul":{code:"fermataLongBelow",between_lines:!1},"a@vl":{aboveCode:"fermataVeryLongAbove",belowCode:"fermataVeryLongBelow",between_lines:!1},"a@avl":{code:"fermataVeryLongAbove",between_lines:!1},"a@uvl":{code:"fermataVeryLongBelow",between_lines:!1},"a|":{code:"stringsUpBow",between_lines:!1},am:{code:"stringsDownBow",between_lines:!1},"a,":{code:"pictChokeCymbal",between_lines:!1}},j={mordent:{code:"ornamentShortTrill"},mordent_inverted:{code:"ornamentMordent"},turn:{code:"ornamentTurn"},turn_inverted:{code:"ornamentTurnSlash"},tr:{code:"ornamentTrill"},upprall:{code:"ornamentPrecompSlideTrillDAnglebert"},downprall:{code:"ornamentPrecompDoubleCadenceUpperPrefix"},prallup:{code:"ornamentPrecompTrillSuffixDandrieu"},pralldown:{code:"ornamentPrecompTrillLowerSuffix"},upmordent:{code:"ornamentPrecompSlideTrillBach"},downmordent:{code:"ornamentPrecompDoubleCadenceUpperPrefixTurn"},lineprall:{code:"ornamentPrecompAppoggTrill"},prallprall:{code:"ornamentTremblement"},scoop:{code:"brassScoop"},doit:{code:"brassDoitMedium"},fall:{code:"brassFallLipShort"},doitLong:{code:"brassLiftMedium"},fallLong:{code:"brassFallRoughMedium"},bend:{code:"brassBend"},plungerClosed:{code:"brassMuteClosed"},plungerOpen:{code:"brassMuteOpen"},flip:{code:"brassFlip"},jazzTurn:{code:"brassJazzTurn"},smear:{code:"brassSmear"}};class X{static currentMusicFont(){if(0===X.MUSIC_FONT_STACK.length)throw new p("NoFonts","The font stack is empty. See: await Flow.fetchMusicFont(...); Flow.setMusicFont(...).");return X.MUSIC_FONT_STACK[0]}static clefProperties(t){if(!t||!(t in U))throw new p("BadArgument","Invalid clef: "+t);return U[t]}static keyProperties(t,e="treble",i){let s={octave_shift:0,duration:"4"};"object"==typeof i&&(s=Object.assign(Object.assign({},s),i));const n=X.sanitizeDuration(s.duration),a=t.split("/");if(a.length<2)throw new p("BadArguments",`First argument must be note/octave or note/octave/glyph-code: ${t}`);const o=a[0].toUpperCase(),r=Y[o];if(!r)throw new p("BadArguments","Invalid key name: "+o);r.octave&&(a[1]=r.octave.toString());let h=parseInt(a[1],10);h+=-1*s.octave_shift;let l=(7*h-28+r.index)/2;l+=X.clefProperties(e).line_shift;let c=0;l<=0&&2*l%2==0&&(c=1),l>=6&&2*l%2==0&&(c=-1);const d=void 0!==r.int_val?12*h+r.int_val:void 0,m=r.code,g=r.shift_right;let b={};if(a.length>2&&a[2]){const t=a[2].toUpperCase();b={code:this.codeNoteHead(t,n)}||{}}return Object.assign({key:o,octave:h,line:l,int_value:d,accidental:r.accidental,code:m,stroke:c,shift_right:g,displaced:!1},b)}static integerToNote(t){if(void 0===t||t<0||t>11)throw new p("BadArguments",`integerToNote() requires an integer in the range [0, 11]: ${t}`);const e={0:"C",1:"C#",2:"D",3:"D#",4:"E",5:"F",6:"F#",7:"G",8:"G#",9:"A",10:"A#",11:"B"}[t];if(!e)throw new p("BadArguments",`Unknown note value for integer: ${t}`);return e}static tabToGlyph(t,e=1){let i,s=0,n=0;if("X"===t.toUpperCase()){const t=new Q("accidentalDoubleSharp",X.TABLATURE_FONT_SCALE).getMetrics();if(i="accidentalDoubleSharp",null==t.width||null==t.height)throw new p("InvalidMetrics","Width and height required");s=t.width,n=-t.height/2}else s=X.textWidth(t);return{text:t,code:i,getWidth:()=>s*e,shift_y:n}}static textWidth(t){return 7*t.toString().length}static articulationCodes(t){return z[t]}static accidentalCodes(t){return H[t]}static ornamentCodes(t){return j[t]}static keySignature(t){const e=G[t];if(!e)throw new p("BadKeySignature",`Bad key signature spec: '${t}'`);if(!e.acc)return[];const i={b:[2,.5,2.5,1,3,1.5,3.5],"#":[0,1.5,-.5,1,2.5,.5,2]}[e.acc],s=[];for(let t=0;tQ.getWidth(a,t)}),s)}}X.SOFTMAX_FACTOR=100,X.STEM_WIDTH=1.5,X.STEM_HEIGHT=35,X.STAVE_LINE_THICKNESS=1,X.RENDER_PRECISION_PLACES=3,X.RESOLUTION=L,X.MUSIC_FONT_STACK=[],X.NOTATION_FONT_SCALE=39,X.TABLATURE_FONT_SCALE=39,X.SLASH_NOTEHEAD_WIDTH=15,X.STAVE_LINE_DISTANCE=10,X.TEXT_HEIGHT_OFFSET_HACK=1,X.accidentalMap=H,X.accidentalColumnsTable={1:{a:[1],b:[1]},2:{a:[1,2]},3:{a:[1,3,2],b:[1,2,1],second_on_bottom:[1,2,3]},4:{a:[1,3,4,2],b:[1,2,3,1],spaced_out_tetrachord:[1,2,1,2]},5:{a:[1,3,5,4,2],b:[1,2,4,3,1],spaced_out_pentachord:[1,2,3,2,1],very_spaced_out_pentachord:[1,2,1,2,1]},6:{a:[1,3,5,6,4,2],b:[1,2,4,5,3,1],spaced_out_hexachord:[1,3,2,1,3,2],very_spaced_out_hexachord:[1,2,1,2,1,2]}},X.unicode={sharp:String.fromCharCode(9839),flat:String.fromCharCode(9837),natural:String.fromCharCode(9838),triangle:String.fromCharCode(9651),"o-with-slash":String.fromCharCode(248),degrees:String.fromCharCode(176),circle:String.fromCharCode(9675)},X.validTypes={n:{name:"note"},r:{name:"rest"},h:{name:"harmonic"},m:{name:"muted"},s:{name:"slash"},g:{name:"ghost"},d:{name:"diamond"},x:{name:"x"},ci:{name:"circled"},cx:{name:"circle x"},sf:{name:"slashed"},sb:{name:"slashed backward"},sq:{name:"square"},tu:{name:"triangle up"},td:{name:"triangle down"}},X.TIME4_4={num_beats:4,beat_value:4,resolution:L};const V={"1/2":{common:{stem:!1,stem_offset:0,flag:!1,stem_up_extension:-X.STEM_HEIGHT,stem_down_extension:-X.STEM_HEIGHT,tabnote_stem_up_extension:-X.STEM_HEIGHT,tabnote_stem_down_extension:-X.STEM_HEIGHT,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restDoubleWhole",rest:!0,position:"B/5",dot_shiftY:.5},s:{getWidth:()=>X.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},1:{common:{stem:!1,stem_offset:0,flag:!1,stem_up_extension:-X.STEM_HEIGHT,stem_down_extension:-X.STEM_HEIGHT,tabnote_stem_up_extension:-X.STEM_HEIGHT,tabnote_stem_down_extension:-X.STEM_HEIGHT,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restWhole",leger_code_head:"restWholeLegerLine",rest:!0,position:"D/5",dot_shiftY:.5},s:{getWidth:()=>X.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},2:{common:{stem:!0,stem_offset:0,flag:!1,stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restHalf",leger_code_head:"restHalfLegerLine",stem:!1,rest:!0,position:"B/4",dot_shiftY:-.5},s:{getWidth:()=>X.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},4:{common:{stem:!0,stem_offset:0,flag:!1,stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restQuarter",stem:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1.5,line_below:1.5},s:{getWidth:()=>X.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},8:{common:{stem:!0,stem_offset:0,flag:!0,beam_count:1,stem_beam_extension:0,code_flag_upstem:"flag8thUp",code_flag_downstem:"flag8thDown",stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest8th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1,line_below:1},s:{getWidth:()=>X.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},16:{common:{beam_count:2,stem_beam_extension:0,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag16thUp",code_flag_downstem:"flag16thDown",stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest16th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1,line_below:2},s:{getWidth:()=>X.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},32:{common:{beam_count:3,stem_beam_extension:7.5,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag32ndUp",code_flag_downstem:"flag32ndDown",stem_up_extension:9,stem_down_extension:9,tabnote_stem_up_extension:9,tabnote_stem_down_extension:9,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest32nd",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-1.5,line_above:2,line_below:2},s:{getWidth:()=>X.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},64:{common:{beam_count:4,stem_beam_extension:15,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag64thUp",code_flag_downstem:"flag64thDown",stem_up_extension:13,stem_down_extension:13,tabnote_stem_up_extension:13,tabnote_stem_down_extension:13,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest64th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-1.5,line_above:2,line_below:3},s:{getWidth:()=>X.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},128:{common:{beam_count:5,stem_beam_extension:22.5,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag128thUp",code_flag_downstem:"flag128thDown",stem_up_extension:22,stem_down_extension:22,tabnote_stem_up_extension:22,tabnote_stem_down_extension:22,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest128th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-2.5,line_above:3,line_below:3},s:{getWidth:()=>X.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}}};var K,$;!function(t){t[t.MOVE=0]="MOVE",t[t.LINE=1]="LINE",t[t.QUADRATIC=2]="QUADRATIC",t[t.BEZIER=3]="BEZIER"}(K||(K={}));class q{constructor(t,e,i){this.point=-1,this.metrics=Q.loadMetrics(t,e,i),this.bbox=Q.getOutlineBoundingBox(this.metrics.outline,this.metrics.scale,this.metrics.x_shift,this.metrics.y_shift),i&&(this.point=Q.lookupFontMetric(this.metrics.font,i,e,"point",-1))}}class J{constructor(t,e,i,s){this.outline=t,this.originX=e,this.originY=i,this.scale=s,this.i=0,this.precision=1,this.precision=Math.pow(10,X.RENDER_PRECISION_PLACES)}done(){return this.i>=this.outline.length}next(){return Math.round(this.outline[this.i++]*this.precision/this.precision)}nextX(){return Math.round((this.originX+this.outline[this.i++]*this.scale)*this.precision)/this.precision}nextY(){return Math.round((this.originY-this.outline[this.i++]*this.scale)*this.precision)/this.precision}static parse(t){const e=[],i=t.split(" ");let s=0;for(;s{const e=t.getTickContext();n&&t.setStave(n),e.setXOffset(a)}))}}class tt{static get NUM_TONES(){return this.canonical_notes.length}static get roots(){return["c","d","e","f","g","a","b"]}static get root_values(){return[0,2,4,5,7,9,11]}static get root_indices(){return{c:0,d:1,e:2,f:3,g:4,a:5,b:6}}static get canonical_notes(){return["c","c#","d","d#","e","f","f#","g","g#","a","a#","b"]}static get diatonic_intervals(){return["unison","m2","M2","m3","M3","p4","dim5","p5","m6","M6","b7","M7","octave"]}static get diatonic_accidentals(){return{unison:{note:0,accidental:0},m2:{note:1,accidental:-1},M2:{note:1,accidental:0},m3:{note:2,accidental:-1},M3:{note:2,accidental:0},p4:{note:3,accidental:0},dim5:{note:4,accidental:-1},p5:{note:4,accidental:0},m6:{note:5,accidental:-1},M6:{note:5,accidental:0},b7:{note:6,accidental:-1},M7:{note:6,accidental:0},octave:{note:7,accidental:0}}}static get intervals(){return{u:0,unison:0,m2:1,b2:1,min2:1,S:1,H:1,2:2,M2:2,maj2:2,T:2,W:2,m3:3,b3:3,min3:3,M3:4,3:4,maj3:4,4:5,p4:5,"#4":6,b5:6,aug4:6,dim5:6,5:7,p5:7,"#5":8,b6:8,aug5:8,6:9,M6:9,maj6:9,b7:10,m7:10,min7:10,dom7:10,M7:11,maj7:11,8:12,octave:12}}static get scales(){return{major:[2,2,1,2,2,2,1],minor:[2,1,2,2,1,2,2],ionian:[2,2,1,2,2,2,1],dorian:[2,1,2,2,2,1,2],phyrgian:[1,2,2,2,1,2,2],lydian:[2,2,2,1,2,2,1],mixolydian:[2,2,1,2,2,1,2],aeolian:[2,1,2,2,1,2,2],locrian:[1,2,2,1,2,2,2]}}static get scaleTypes(){return{M:tt.scales.major,m:tt.scales.minor}}static get accidentals(){return["bb","b","n","#","##"]}static get noteValues(){return{c:{root_index:0,int_val:0},cn:{root_index:0,int_val:0},"c#":{root_index:0,int_val:1},"c##":{root_index:0,int_val:2},cb:{root_index:0,int_val:11},cbb:{root_index:0,int_val:10},d:{root_index:1,int_val:2},dn:{root_index:1,int_val:2},"d#":{root_index:1,int_val:3},"d##":{root_index:1,int_val:4},db:{root_index:1,int_val:1},dbb:{root_index:1,int_val:0},e:{root_index:2,int_val:4},en:{root_index:2,int_val:4},"e#":{root_index:2,int_val:5},"e##":{root_index:2,int_val:6},eb:{root_index:2,int_val:3},ebb:{root_index:2,int_val:2},f:{root_index:3,int_val:5},fn:{root_index:3,int_val:5},"f#":{root_index:3,int_val:6},"f##":{root_index:3,int_val:7},fb:{root_index:3,int_val:4},fbb:{root_index:3,int_val:3},g:{root_index:4,int_val:7},gn:{root_index:4,int_val:7},"g#":{root_index:4,int_val:8},"g##":{root_index:4,int_val:9},gb:{root_index:4,int_val:6},gbb:{root_index:4,int_val:5},a:{root_index:5,int_val:9},an:{root_index:5,int_val:9},"a#":{root_index:5,int_val:10},"a##":{root_index:5,int_val:11},ab:{root_index:5,int_val:8},abb:{root_index:5,int_val:7},b:{root_index:6,int_val:11},bn:{root_index:6,int_val:11},"b#":{root_index:6,int_val:0},"b##":{root_index:6,int_val:1},bb:{root_index:6,int_val:10},bbb:{root_index:6,int_val:9}}}isValidNoteValue(t){return t>=0&&t=0&&t3)throw new p("BadArguments","Invalid note name: "+t);const e=t.toLowerCase(),i=/^([cdefgab])(b|bb|n|#|##)?$/.exec(e);if(null!==i){return{root:i[1],accidental:i[2]}}throw new p("BadArguments","Invalid note name: "+t)}getKeyParts(t){if(!t||t.length<1)throw new p("BadArguments","Invalid key: "+t);const e=t.toLowerCase(),i=/^([cdefgab])(b|#)?(mel|harm|m|M)?$/.exec(e);if(null!==i){const t=i[1],e=i[2];let s=i[3];return s||(s="M"),{root:t,accidental:e,type:s}}throw new p("BadArguments",`Invalid key: ${t}`)}getNoteValue(t){const e=tt.noteValues[t];if(void 0===e)throw new p("BadArguments",`Invalid note name: ${t}`);return e.int_val}getIntervalValue(t){const e=tt.intervals[t];if(void 0===e)throw new p("BadArguments",`Invalid interval name: ${t}`);return e}getCanonicalNoteName(t){if(!this.isValidNoteValue(t))throw new p("BadArguments",`Invalid note value: ${t}`);return tt.canonical_notes[t]}getCanonicalIntervalName(t){if(!this.isValidIntervalValue(t))throw new p("BadArguments",`Invalid interval value: ${t}`);return tt.diatonic_intervals[t]}getRelativeNoteValue(t,e,i=1){if(1!==i&&-1!==i)throw new p("BadArguments",`Invalid direction: ${i}`);let s=(t+i*e)%tt.NUM_TONES;return s<0&&(s+=tt.NUM_TONES),s}getRelativeNoteName(t,e){const i=this.getNoteParts(t),s=this.getNoteValue(i.root);let n=e-s;if(Math.abs(n)>tt.NUM_TONES-3){let i=1;n>0&&(i=-1);const a=(e+1+(s+1))%tt.NUM_TONES*i;if(Math.abs(a)>2)throw new p("BadArguments",`Notes not related: ${t}, ${e})`);n=a}if(Math.abs(n)>2)throw new p("BadArguments",`Notes not related: ${t}, ${e})`);let a=i.root;if(n>0)for(let t=1;t<=n;++t)a+="#";else if(n<0)for(let t=-1;t>=n;--t)a+="b";return a}getScaleTones(t,e){const i=[t];let s=t;for(let n=0;ne.line-t.line));const c=[];let d,m=0;for(let t=0;tm?e.shift:m,d=e.line}let g=0;for(let t=0;tc[i+t],a=t=>t.map(n),o=(t,e)=>{const[i,s]=a([t,e]).map((t=>t.line));return i-s},r=(...t)=>t.map(a).every((([t,e])=>!this.checkCollision(t,e))),h=s-i+1;let l,d,m=this.checkCollision(c[i],c[s])?"a":"b";switch(h){case 3:"a"===m&&.5===o(1,2)&&.5!==o(0,1)&&(m="second_on_bottom");break;case 4:r([0,2],[1,3])&&(m="spaced_out_tetrachord");break;case 5:"b"===m&&r([1,3])&&(m="spaced_out_pentachord",r([0,2],[2,4])&&(m="very_spaced_out_pentachord"));break;case 6:r([0,3],[1,4],[2,5])&&(m="spaced_out_hexachord"),r([0,2],[2,4],[1,3],[3,5])&&(m="very_spaced_out_hexachord")}if(h>=7){let e=2,i=!0;for(;!0===i;){i=!1;for(let t=0;t+ed?g:d}else for(l=t;l<=s;l++)d=X.accidentalColumnsTable[h][m][l-t],c[l].column=d,g=g>d?g:d;t=s}const b=[],u=[];for(let t=0;t<=g;t++)b[t]=0,u[t]=0;b[0]=m+n,u[0]=m+n,c.forEach((t=>{t.width>b[t.column]&&(b[t.column]=t.width)}));for(let t=1;t{let e=0;const i=_+t.numAcc;for(;_0?(s=e.flatLine||e.dblSharpLine?2.5:3,t.dblSharpLine&&(i-=.5)):(s=t.flatLine||t.dblSharpLine?2.5:3,e.dblSharpLine&&(i-=.5));const n=Math.abs(i){const e=new v(0,1);t.getTickables().forEach((t=>{if(t.shouldIgnoreTicks())return;const n=s[e.value()];n?n.push(t):(i.push(e.value()),s[e.value()]=[t]),e.add(t.getTicks())}))}));const a=new tt;e||(e="C");const o=a.createScaleMap(e),r={};i.forEach((t=>{const e=s[t],i=[],h=t=>{if(!m(t)||t.isRest()||t.shouldIgnoreTicks())return;const e=t;e.keys.forEach(((t,s)=>{const h=a.getNoteParts(t.split("/")[0]),l=t.split("/")[1],c=h.accidental||"n",d=h.root+c;r[h.root+l]||(r[h.root+l]=o[h.root]);const m=r[h.root+l]===d,g=i.indexOf(t)>-1;if(e.getModifiers().forEach(((t,i)=>{n(t)&&t.type==c&&t.getIndex()==s&&e.getModifiers().splice(i,1)})),!m||m&&g){r[h.root+l]=d;const n=new it(c);e.addModifier(n,s),i.push(t)}})),e.getModifiers().forEach((t=>{l(t)&&t.getGraceNotes().forEach(h)}))};e.forEach(h)}))}reset(){const t=this.render_options.font_scale;this.glyph=new Q(this.accidental.code,t),this.glyph.setOriginX(1),this.cautionary&&(this.parenLeft=new Q(X.accidentalCodes("{").code,t),this.parenRight=new Q(X.accidentalCodes("}").code,t),this.parenLeft.setOriginX(1),this.parenRight.setOriginX(1))}getWidth(){if(this.cautionary){const t=f(this.parenLeft),e=f(this.parenRight),i=t.getMetrics().width+e.getMetrics().width+this.render_options.parenLeftPadding+this.render_options.parenRightPadding;return this.glyph.getMetrics().width+i}return this.glyph.getMetrics().width}setNote(t){return f(t,"ArgumentError",`Bad note value: ${t}`),this.note=t,h(t)&&(this.render_options.font_scale=25,this.reset()),this}setAsCautionary(){return this.cautionary=!0,this.render_options.font_scale=28,this.reset(),this}draw(){const{type:t,position:e,index:i,cautionary:s,x_shift:n,y_shift:a,glyph:o,render_options:{parenLeftPadding:r,parenRightPadding:h}}=this,l=this.checkContext(),c=this.checkAttachedNote();this.setRendered();const d=c.getModifierStartXY(e,i);let m=d.x+n;const g=d.y+a;if(et("Rendering: ",t,m,g),s){const t=f(this.parenLeft),e=f(this.parenRight);e.render(l,m,g),m-=e.getMetrics().width,m-=h,m-=this.accidental.parenRightPaddingAdjustment,o.render(l,m,g),m-=o.getMetrics().width,m-=r,t.render(l,m,g)}else o.render(l,m,g)}}it.DEBUG=!1;class st extends O{constructor(t){super(),this.stem_up_y_offset=0,this.stem_down_y_offset=0,this.stem_up_y_base_offset=0,this.stem_down_y_base_offset=0,this.x_begin=(null==t?void 0:t.x_begin)||0,this.x_end=(null==t?void 0:t.x_end)||0,this.y_top=(null==t?void 0:t.y_top)||0,this.y_bottom=(null==t?void 0:t.y_bottom)||0,this.stem_extension=(null==t?void 0:t.stem_extension)||0,this.stem_direction=(null==t?void 0:t.stem_direction)||0,this.hide=(null==t?void 0:t.hide)||!1,this.isStemlet=(null==t?void 0:t.isStemlet)||!1,this.stemletHeight=(null==t?void 0:t.stemletHeight)||0,this.renderHeightAdjustment=0,this.setOptions(t)}static get CATEGORY(){return u.Stem}static get UP(){return 1}static get DOWN(){return-1}static get WIDTH(){return X.STEM_WIDTH}static get HEIGHT(){return X.STEM_HEIGHT}setOptions(t){this.stem_up_y_offset=(null==t?void 0:t.stem_up_y_offset)||0,this.stem_down_y_offset=(null==t?void 0:t.stem_down_y_offset)||0,this.stem_up_y_base_offset=(null==t?void 0:t.stem_up_y_base_offset)||0,this.stem_down_y_base_offset=(null==t?void 0:t.stem_down_y_base_offset)||0}setNoteHeadXBounds(t,e){return this.x_begin=t,this.x_end=e,this}setDirection(t){this.stem_direction=t}setExtension(t){this.stem_extension=t}getExtension(){return this.stem_extension}setYBounds(t,e){this.y_top=t,this.y_bottom=e}getHeight(){const t=this.stem_direction===st.UP?this.stem_up_y_offset:this.stem_down_y_offset;return(this.y_bottom-this.y_top+(st.HEIGHT-t+this.stem_extension))*this.stem_direction}getBoundingBox(){throw new p("NotImplemented","getBoundingBox() not implemented.")}getExtents(){const t=this.stem_direction===st.UP,e=[this.y_top,this.y_bottom],i=st.HEIGHT+this.stem_extension,s=(t?Math.min:Math.max)(...e),n=(t?Math.max:Math.min)(...e);return{topY:s+i*-this.stem_direction,baseY:n}}setVisibility(t){return this.hide=!t,this}setStemlet(t,e){return this.isStemlet=t,this.stemletHeight=e,this}adjustHeightForFlag(){this.renderHeightAdjustment=X.currentMusicFont().lookupMetric("stem.heightAdjustmentForFlag",-3)}adjustHeightForBeam(){this.renderHeightAdjustment=-st.WIDTH/2}draw(){if(this.setRendered(),this.hide)return;const t=this.checkContext();let e,i;const s=this.stem_direction;let n=0;s===st.DOWN?(e=this.x_begin,i=this.y_top+this.stem_down_y_offset,n=this.stem_down_y_base_offset):(e=this.x_end,i=this.y_bottom-this.stem_up_y_offset,n=this.stem_up_y_base_offset);const a=this.getHeight();!function(...t){st.DEBUG&&x("Vex.Flow.Stem",t)}("Rendering stem - ","Top Y: ",this.y_top,"Bottom Y: ",this.y_bottom);const o=this.isStemlet?a-this.stemletHeight*this.stem_direction:0;t.save(),t.openGroup("stem",this.getAttribute("id"),{pointerBBox:!0}),this.applyStyle(t),t.beginPath(),t.setLineWidth(st.WIDTH),t.moveTo(e,i-o+n),t.lineTo(e,i-a-this.renderHeightAdjustment*s),t.stroke(),this.restoreStyle(t),t.closeGroup(),t.restore()}}function nt(...t){rt.DEBUG&&x("Vex.Flow.TextFormatter",t)}st.DEBUG=!1;const at={},ot={};class rt{constructor(t){this.family="",this.size=14,this.resolution=1e3,this.glyphs={},this.serifs=!1,this.monospaced=!1,this.italic=!1,this.bold=!1,this.superscriptOffset=0,this.subscriptOffset=0,this.maxSizeGlyph="H",this.cacheKey="",this.updateParams(t)}static getFontFamilies(){const t=[];for(const e in ot){const i=ot[e];t.push(Object.assign({},i))}return t}static create(t={}){nt("create: ",t),t.family||(t.family=B.SANS_SERIF);const e=[],i=t.family.split(/\s*,\s*/);for(const t of i){for(const i in ot)i.startsWith(t)&&e.push(ot[i]);if(e.length>0)break}let s;if(0===e.length)s=new rt(Object.values(ot)[0]);else if(1===e.length)s=new rt(e[0]);else{const i=B.isBold(t.weight),n=B.isItalic(t.style),a=e.find((t=>t.bold===i&&t.italic===n));if(a)s=new rt(a);else{const t=e.find((t=>t.italic===n||t.bold===i));s=new rt(t||e[0])}}const n=t.size;if(void 0!==n){const t=B.convertSizeToPointValue(n);s.setFontSize(t)}return s}static getInfo(t){return ot[t]}static registerInfo(t,e=!1){nt("registerInfo: ",t,e);const i=t.family;(void 0===ot[i]||e)&&(ot[i]=t)}updateParams(t){t.family&&(this.family=t.family),t.resolution&&(this.resolution=t.resolution),t.glyphs&&(this.glyphs=t.glyphs),t.serifs&&(this.serifs=t.serifs),t.monospaced&&(this.monospaced=t.monospaced),t.italic&&(this.italic=t.italic),t.bold&&(this.bold=t.bold),t.maxSizeGlyph&&(this.maxSizeGlyph=t.maxSizeGlyph),t.superscriptOffset&&(this.superscriptOffset=t.superscriptOffset),t.subscriptOffset&&(this.subscriptOffset=t.subscriptOffset),this.updateCacheKey()}updateCacheKey(){const t=this.family.replace(/\s+/g,"_"),e=this.size,i=this.bold?D.BOLD:D.NORMAL,s=this.italic?N.ITALIC:N.NORMAL;this.cacheKey=`${t}%${e}%${i}%${s}`}getGlyphMetrics(t){return this.glyphs[t]?this.glyphs[t]:this.glyphs[this.maxSizeGlyph]}get maxHeight(){return this.getGlyphMetrics(this.maxSizeGlyph).ha/this.resolution*this.fontSizeInPixels}getWidthForCharacterInEm(t){var e;const i=this.getGlyphMetrics(t);if(i){return(null!==(e=i.advanceWidth)&&void 0!==e?e:0)/this.resolution}return.65}getWidthForTextInEm(t){const e=this.cacheKey;let i=at[e];void 0===i&&(i={},at[e]=i);let s=i[t];if(void 0===s){s=0;for(let e=0;et>e?t:e)),h+=(this.text_line+1)*X.STAVE_LINE_DISTANCE+o,d&&i===st.DOWN&&(h=Math.max(h,l.topY+o+c*this.text_line))}else if(this.verticalJustification===lt.CENTER){const t=e.getYForTopText(this.text_line)-1;h=t+(m.getYForBottomText(this.text_line)-t)/2+o/2}else if(this.verticalJustification===lt.TOP)h=e.getYs()[0]-(this.text_line+1)*X.STAVE_LINE_DISTANCE,d&&i===st.UP&&(c=l.topY=1}function ut(t,e){return bt(t,e)?e===dt?Math.ceil:Math.floor:Math.round}const pt=t=>m(t)||h(t);class _t extends Z{constructor(t){super(),this.type=t,this.position=mt,this.render_options={font_scale:38},this.reset()}static get CATEGORY(){return u.Articulation}static format(t,e){if(!t||0===t.length)return!1;let i=0;const s=(t,e,i)=>gt(ut(e,i),f(t.glyph.getMetrics().height)/10+.5);t.forEach((t=>{const n=t.checkAttachedNote();i=Math.max(n.getGlyph().getWidth(),i);let a=5;const o=n.hasStem()?n.getStemDirection():st.UP;let r=0;if(g(n)){const t=n.getStem();t&&(r=Math.abs(t.getHeight())/X.STAVE_LINE_DISTANCE)}const h=n.getStave();if(h&&(a=h.getNumLines()),t.getPosition()===dt){let i=n.getLineNumber(!0);o===st.UP&&(i+=r);let h=s(t,e.top_text_line,dt);const l=i+e.top_text_line+.5;!t.articulation.between_lines&&lt.getWidth())).reduce(((t,e)=>Math.max(e,t))),a=Math.min(Math.max(n-i,0),Math.max(n-(e.left_shift+e.right_shift),0));return e.left_shift+=a/2,e.right_shift+=a/2,!0}static easyScoreHook({articulations:t},e,i){if(!t)return;const s={staccato:"a.",tenuto:"a-",accent:"a>"};t.split(",").map((t=>t.trim().split("."))).map((([t,e])=>{const n={type:s[t]};return e&&(n.position=Z.PositionString[e]),i.getFactory().Articulation(n)})).map((t=>e.addModifier(t,0)))}reset(){this.articulation=X.articulationCodes(this.type);const t=f(this.articulation,"ArgumentError",`Articulation not found: ${this.type}`),e=(this.position===dt?t.aboveCode:t.belowCode)||t.code;this.glyph=new Q(null!=e?e:"",this.render_options.font_scale),this.setWidth(f(this.glyph.getMetrics().width))}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=this.checkIndex(),{position:s,glyph:n,text_line:a}=this,o=this.articulation.between_lines,r=e.checkStave(),h=r.getSpacingBetweenLines(),l=b(e),{x:c}=e.getModifierStartXY(s,i),d=!o||l,m=function(t,e){const i=e===dt&&t.getStemDirection()===st.UP||e===mt&&t.getStemDirection()===st.DOWN;return pt(t)?t.hasStem()&&i?.5:1:t.hasStem()&&i?1:0}(e,s),g=X.currentMusicFont().lookupMetric(`articulation.${n.getCode()}.padding`,0);let u={[dt]:()=>{n.setOrigin(.5,1);const t=function(t,e){const i=t.getStemDirection(),{topY:s,baseY:n}=t.getStemExtents();if(pt(t))return t.hasStem()?i===st.UP?s:n:Math.min(...t.getYs());if(b(t))return t.hasStem()&&i===st.UP?s:t.checkStave().getYForTopText(e);throw new p("UnknownCategory","Only can get the top and bottom ys of stavenotes and tabnotes")}(e,a)-(a+m)*h;return d?Math.min(r.getYForTopText(_t.INITIAL_OFFSET),t):t},[mt]:()=>{n.setOrigin(.5,0);const t=function(t,e){const i=t.getStemDirection(),{topY:s,baseY:n}=t.getStemExtents();if(pt(t))return t.hasStem()?i===st.UP?n:s:Math.max(...t.getYs());if(b(t))return t.hasStem()?i===st.UP?t.checkStave().getYForBottomText(e):s:t.checkStave().getYForBottomText(e);throw new p("UnknownCategory","Only can get the top and bottom ys of stavenotes and tabnotes")}(e,a)+(a+m)*h;return d?Math.max(r.getYForBottomText(_t.INITIAL_OFFSET),t):t}}[s]();if(!l){const t=s===dt?-1:1,a=e.getKeyProps()[i].line,r=(e.getYs()[i]-u)/h+Number(a),l=function(t,e,i,s){const n=gt(ut(e,i),e);if(t&&bt(n,i)&&n%1==0)return n+.5*-s;return n}(o,r,s,t);bt(l,s)&&n.setOrigin(.5,.5),u+=Math.abs(l-r)*h*t+g*t}!function(...t){_t.DEBUG&&x("Vex.Flow.Articulation",t)}(`Rendering articulation at (x: ${c}, y: ${u})`),n.render(t,c,u)}}_t.DEBUG=!1,_t.INITIAL_OFFSET=-.5;class ft{static get CATEGORY(){return u.RenderContext}set font(t){this.setFont(t)}get font(){return this.getFont()}setRawFont(t){return this.setFont(t),this}}function xt(t,e,i,s="#F55"){t.save(),t.setFillStyle(s),t.beginPath(),t.arc(e,i,3,0,2*Math.PI,!1),t.closePath(),t.fill(),t.restore()}class St extends O{constructor(){super(),this._preFormatted=!1,this._postFormatted=!1,this.ticks=new v(0,1),this.intrinsicTicks=0,this.tickMultiplier=new v(1,1),this.width=0,this.x_shift=0,this.modifiers=[],this.tupletStack=[],this.align_center=!1,this.center_x_shift=0,this.ignore_ticks=!1,this.formatterMetrics={freedom:{left:0,right:0},duration:"",iterations:0,space:{used:0,mean:0,deviation:0}}}static get CATEGORY(){return u.Tickable}reset(){return this}getTicks(){return this.ticks}shouldIgnoreTicks(){return this.ignore_ticks}setIgnoreTicks(t){return this.ignore_ticks=t,this}setWidth(t){this.width=t}getWidth(){if(!this._preFormatted)throw new p("UnformattedNote","Can't call GetWidth on an unformatted note.");return this.width+(this.modifierContext?this.modifierContext.getWidth():0)}setXShift(t){return this.x_shift=t,this}getXShift(){return this.x_shift}getX(){return this.checkTickContext("Can't getX() without a TickContext.").getX()+this.x_shift}getFormatterMetrics(){return this.formatterMetrics}getCenterXShift(){return this.isCenterAligned()?this.center_x_shift:0}setCenterXShift(t){return this.center_x_shift=t,this}isCenterAligned(){return this.align_center}setCenterAlignment(t){return this.align_center=t,this}getVoice(){return f(this.voice,"NoVoice","Tickable has no voice.")}setVoice(t){this.voice=t}getTuplet(){return this.tuplet}getTupletStack(){return this.tupletStack}resetTuplet(t){let e,i;if(t){const s=this.tupletStack.indexOf(t);return-1!==s&&(this.tupletStack.splice(s,1),e=t.getNoteCount(),i=t.getNotesOccupied(),this.applyTickMultiplier(e,i)),this}for(;this.tupletStack.length;)e=(t=this.tupletStack.pop()).getNoteCount(),i=t.getNotesOccupied(),this.applyTickMultiplier(e,i);return this}setTuplet(t){if(t){this.tupletStack.push(t);const e=t.getNoteCount(),i=t.getNotesOccupied();this.applyTickMultiplier(i,e)}return this.tuplet=t,this}addToModifierContext(t){this.modifierContext=t;for(let t=0;tX.getGlyphProps(this.duration,t))),this.playNote=void 0,this.ignore_ticks=!1,this.width=0,this.leftDisplacedHeadPx=0,this.rightDisplacedHeadPx=0,this.x_shift=0,this.ys=[],t.align_center&&this.setCenterAlignment(t.align_center),this.render_options={annotation_spacing:5,glyph_font_scale:1,stroke_px:1,scale:1,font:"",y_shift:0}}static get CATEGORY(){return u.Note}static plotMetrics(t,e,i){const s=e.getMetrics(),n=e.getAbsoluteX()-s.modLeftPx-s.leftDisplacedHeadPx,a=e.getAbsoluteX()-s.leftDisplacedHeadPx,o=e.getAbsoluteX(),r=e.getAbsoluteX()+s.notePx,h=e.getAbsoluteX()+s.notePx+s.rightDisplacedHeadPx,l=e.getAbsoluteX()+s.notePx+s.rightDisplacedHeadPx+s.modRightPx,c=l+(e.getFormatterMetrics().freedom.right||0),d=l-n;t.save(),t.setFont(B.SANS_SERIF,8),t.fillText(Math.round(d)+"px",n+e.getXShift(),i);const m=i+7;function g(i,s,n,a=m){t.beginPath(),t.setStrokeStyle(n),t.setFillStyle(n),t.setLineWidth(3),t.moveTo(i+e.getXShift(),a),t.lineTo(s+e.getXShift(),a),t.stroke()}g(n,a,"red"),g(a,o,"#999"),g(o,r,"green"),g(r,h,"#999"),g(h,l,"red"),g(l,c,"#DD0"),g(n-e.getXShift(),n,"#BBB"),xt(t,o+e.getXShift(),m,"blue");const b=e.getFormatterMetrics();if(b.iterations>0){const s=b.space.deviation,n=s>=0?"+":"";t.setFillStyle("red"),t.fillText(n+Math.round(s),o+e.getXShift(),i-10)}t.restore()}static parseDuration(t){if(!t)return;const e=/(\d*\/?\d+|[a-z])(d*)([nrhms]|$)/.exec(t);if(!e)return;return{duration:e[1],dots:e[2].length,type:e[3]||"n"}}static parseNoteStruct(t){const e=yt.parseDuration(t.duration);if(!e)return;let i=t.type;if(i&&!X.validTypes[i])return;const s=[];i||(i=e.type||"n",void 0!==t.keys&&t.keys.forEach(((t,e)=>{const n=t.split("/");s[e]=n&&3===n.length?n[2]:i})));let n=X.durationToTicks(e.duration);if(!n)return;const a=t.dots?t.dots:e.dots;if("number"!=typeof a)return;let o=n;for(let t=0;t0}hasStem(){return!1}getNoteType(){return this.noteType}getBeam(){return this.beam}checkBeam(){return f(this.beam,"NoBeam","No beam attached to instance")}hasBeam(){return null!=this.beam}setBeam(t){return this.beam=t,this}addModifier(t,e=0){const i="Note.addModifier(modifier: Modifier, index: number=0)";if("string"==typeof e&&(e=parseInt(e),console.warn(i+" expected a number for `index`, but received a string.")),"object"!=typeof t||"number"!=typeof e)throw new p("WrongParams","Incorrect call signature. Use "+i+" instead.");return t.setNote(this),t.setIndex(e),super.addModifier(t),this}getModifiersByType(t){return this.modifiers.filter((e=>e.getCategory()===t))}getModifierStartXY(t,e,i){if(!this.preFormatted)throw new p("UnformattedNote","Can't call GetModifierStartXY on an unformatted note");return{x:this.getAbsoluteX(),y:this.ys[0]}}getRightParenthesisPx(t){return this.getKeyProps()[t].displaced?this.getRightDisplacedHeadPx():0}getLeftParenthesisPx(t){return this.getKeyProps()[t].displaced?this.getLeftDisplacedHeadPx()-this.x_shift:-this.x_shift}getFirstDotPx(){let t=this.getRightDisplacedHeadPx();return 0!==this.checkModifierContext().getMembers("Parenthesis").length&&(t+=X.currentMusicFont().lookupMetric("parenthesis.default.width")),t}getMetrics(){if(!this.preFormatted)throw new p("UnformattedNote","Can't call getMetrics on an unformatted note.");const t=this.modifierContext?this.modifierContext.getState().left_shift:0,e=this.modifierContext?this.modifierContext.getState().right_shift:0,i=this.getWidth();return{width:i,glyphWidth:this.getGlyphWidth(),notePx:i-t-e-this.leftDisplacedHeadPx-this.rightDisplacedHeadPx,modLeftPx:t,modRightPx:e,leftDisplacedHeadPx:this.leftDisplacedHeadPx,rightDisplacedHeadPx:this.rightDisplacedHeadPx,glyphPx:0}}getAbsoluteX(){let t=this.checkTickContext("Can't getAbsoluteX() without a TickContext.").getX();return this.stave&&(t+=this.stave.getNoteStartX()+X.currentMusicFont().lookupMetric("stave.padding")),this.isCenterAligned()&&(t+=this.getCenterXShift()),t}getStemDirection(){throw new p("NoStem","No stem attached to this note.")}getStemExtents(){throw new p("NoStem","No stem attached to this note.")}getTieRightX(){let t=this.getAbsoluteX();return t+=this.glyph.getWidth()/2,t+=-this.width/2+this.width+2,t}getTieLeftX(){let t=this.getAbsoluteX();return t+=this.glyph.getWidth()/2,t-=this.width/2+2,t}getKeys(){return this.keys}getKeyProps(){return this.keyProps}}var Tt,wt,vt,Et,Ct,kt;!function(t){t[t.CENTER=0]="CENTER",t[t.LEFT=1]="LEFT",t[t.RIGHT=2]="RIGHT",t[t.ABOVE=3]="ABOVE",t[t.BELOW=4]="BELOW",t[t.BEGIN=5]="BEGIN",t[t.END=6]="END"}(Tt||(Tt={}));class Dt extends O{constructor(){super(),this.width=0,this.x=0,this.padding=10,this.position=Tt.ABOVE}static get CATEGORY(){return u.StaveModifier}static get Position(){return Tt}getPosition(){return this.position}setPosition(t){return this.position=t,this}getStave(){return this.stave}checkStave(){return f(this.stave,"NoStave","No stave attached to instance.")}setStave(t){return this.stave=t,this}getWidth(){return this.width}setWidth(t){return this.width=t,this}getX(){return this.x}setX(t){return this.x=t,this}placeGlyphOnLine(t,e,i,s=0){t.setYShift(e.getYForLine(null!=i?i:0)-e.getYForGlyphs()+s)}getPadding(t){return void 0!==t&&t<2?0:this.padding}setPadding(t){return this.padding=t,this}setLayoutMetrics(t){return this.layoutMetrics=t,this}getLayoutMetrics(){return this.layoutMetrics}draw(...t){}}!function(t){t[t.SINGLE=1]="SINGLE",t[t.DOUBLE=2]="DOUBLE",t[t.END=3]="END",t[t.REPEAT_BEGIN=4]="REPEAT_BEGIN",t[t.REPEAT_END=5]="REPEAT_END",t[t.REPEAT_BOTH=6]="REPEAT_BOTH",t[t.NONE=7]="NONE"}(wt||(wt={}));class Nt extends Dt{constructor(t){super(),this.thickness=X.STAVE_LINE_THICKNESS;const e=wt;this.widths={},this.widths[e.SINGLE]=5,this.widths[e.DOUBLE]=5,this.widths[e.END]=5,this.widths[e.REPEAT_BEGIN]=5,this.widths[e.REPEAT_END]=5,this.widths[e.REPEAT_BOTH]=5,this.widths[e.NONE]=5,this.paddings={},this.paddings[e.SINGLE]=0,this.paddings[e.DOUBLE]=0,this.paddings[e.END]=0,this.paddings[e.REPEAT_BEGIN]=15,this.paddings[e.REPEAT_END]=15,this.paddings[e.REPEAT_BOTH]=15,this.paddings[e.NONE]=0,this.layoutMetricsMap={},this.layoutMetricsMap[e.SINGLE]={xMin:0,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.DOUBLE]={xMin:-3,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.END]={xMin:-5,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.REPEAT_END]={xMin:-10,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.REPEAT_BEGIN]={xMin:-2,xMax:10,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.REPEAT_BOTH]={xMin:-10,xMax:10,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.NONE]={xMin:0,xMax:0,paddingLeft:5,paddingRight:5},this.setPosition(Tt.BEGIN),this.setType(t)}static get CATEGORY(){return u.Barline}static get type(){return wt}static get typeString(){return{single:wt.SINGLE,double:wt.DOUBLE,end:wt.END,repeatBegin:wt.REPEAT_BEGIN,repeatEnd:wt.REPEAT_END,repeatBoth:wt.REPEAT_BOTH,none:wt.NONE}}getType(){return this.type}setType(t){return this.type="string"==typeof t?Nt.typeString[t]:t,this.setWidth(this.widths[this.type]),this.setPadding(this.paddings[this.type]),this.setLayoutMetrics(this.layoutMetricsMap[this.type]),this}draw(t){switch(t.checkContext(),this.setRendered(),this.type){case wt.SINGLE:this.drawVerticalBar(t,this.x,!1);break;case wt.DOUBLE:this.drawVerticalBar(t,this.x,!0);break;case wt.END:this.drawVerticalEndBar(t,this.x);break;case wt.REPEAT_BEGIN:this.drawRepeatBar(t,this.x,!0),t.getX()!==this.x&&this.drawVerticalBar(t,t.getX());break;case wt.REPEAT_END:this.drawRepeatBar(t,this.x,!1);break;case wt.REPEAT_BOTH:this.drawRepeatBar(t,this.x,!1),this.drawRepeatBar(t,this.x,!0)}}drawVerticalBar(t,e,i){const s=t.checkContext(),n=t.getTopLineTopY(),a=t.getBottomLineBottomY();i&&s.fillRect(e-3,n,1,a-n),s.fillRect(e,n,1,a-n)}drawVerticalEndBar(t,e){const i=t.checkContext(),s=t.getTopLineTopY(),n=t.getBottomLineBottomY();i.fillRect(e-5,s,1,n-s),i.fillRect(e-2,s,3,n-s)}drawRepeatBar(t,e,i){const s=t.checkContext(),n=t.getTopLineTopY(),a=t.getBottomLineBottomY();let o=3;i||(o=-5),s.fillRect(e+o,n,1,a-n),s.fillRect(e-2,n,3,a-n);i?o+=4:o-=4;const r=e+o+1;let h=(t.getNumLines()-1)*t.getSpacingBetweenLines();h=h/2-t.getSpacingBetweenLines()/2;let l=n+h+1;s.beginPath(),s.arc(r,l,2,0,2*Math.PI,!1),s.fill(),l+=t.getSpacingBetweenLines(),s.beginPath(),s.arc(r,l,2,0,2*Math.PI,!1),s.fill()}}class At extends yt{constructor(t=wt.SINGLE){super({duration:"b"}),this.metrics={widths:{}};const e=wt;this.metrics.widths={[e.SINGLE]:8,[e.DOUBLE]:12,[e.END]:15,[e.REPEAT_BEGIN]:14,[e.REPEAT_END]:14,[e.REPEAT_BOTH]:18,[e.NONE]:0},this.ignore_ticks=!0,this.setType(t)}static get CATEGORY(){return u.BarNote}getType(){return this.type}setType(t){return this.type="string"==typeof t?Nt.typeString[t]:t,this.setWidth(this.metrics.widths[this.type]),this}addToModifierContext(t){return this}preFormat(){return this.preFormatted=!0,this}draw(){const t=this.checkContext();!function(...t){At.DEBUG&&x("Vex.Flow.BarNote",t)}("Rendering bar line at: ",this.getAbsoluteX()),this.applyStyle(t);const e=new Nt(this.type);e.setX(this.getAbsoluteX()),e.draw(this.checkStave()),this.restoreStyle(t),this.setRendered()}}At.DEBUG=!1;class Pt extends Z{constructor(t,e=!1,i){super(),this.text=t,this.x_shift=0,this.release=e,this.tap="",this.resetFont(),this.render_options={line_width:1.5,line_style:"#777777",bend_width:8,release_width:8},i?this.phrase=i:(this.phrase=[{type:Pt.UP,text:this.text}],this.release&&this.phrase.push({type:Pt.DOWN,text:""})),this.updateWidth()}static get CATEGORY(){return u.Bend}static get UP(){return 0}static get DOWN(){return 1}static format(t,e){if(!t||0===t.length)return!1;let i=0;for(let s=0;st{const a=t+s,o=i;e.save(),e.beginPath(),e.setLineWidth(this.render_options.line_width),e.setStrokeStyle(this.render_options.line_style),e.setFillStyle(this.render_options.line_style),e.moveTo(t,i),e.quadraticCurveTo(a,o,t+s,n),e.stroke(),e.restore()},c=(t,i,s,n)=>{e.save(),e.beginPath(),e.setLineWidth(this.render_options.line_width),e.setStrokeStyle(this.render_options.line_style),e.setFillStyle(this.render_options.line_style),e.moveTo(t,n),e.quadraticCurveTo(t+s,n,t+s,i),e.stroke(),e.restore()},d=(t,i,s)=>{const n=i+4*s;e.beginPath(),e.moveTo(t,i),e.lineTo(t-4,n),e.lineTo(t+4,n),e.closePath(),e.fill()},m=(t,i)=>{e.save(),e.setFont(this.textFont);const s=t-e.measureText(i).width/2;e.fillText(i,s,h),e.restore()};let g,b=0,u=0;if(null===(t=this.tap)||void 0===t?void 0:t.length){m(i.getModifierStartXY(Z.Position.CENTER,this.index).x,this.tap)}for(let t=0;t0){const e=l.symbolBlocks[t-1];Bt.isSuperscript(e)||(n=s)}a&&n>0&&(p=!0,e.xShift=e.xShift+(n-s),s=n,n=0,l.setEnableKerning(!1)),i||a||(n=0),e.vAlign=p,s+=e.width,b=s}if(l.updateKerningAdjustments(),l.updateOverBarAdjustments(),l.getVertical()===Et.TOP?(l.setTextLine(e.top_text_line),e.top_text_line+=u):(l.setTextLine(e.text_line+1),e.text_line+=u+1),l.getReportWidth()&&g(m)){const t=m.getGlyph().getWidth();l.getHorizontal()===vt.LEFT?(r=Math.max(t,r),a=Math.max(a,b)+Bt.minPadding):l.getHorizontal()===vt.RIGHT?(h=Math.max(t,h),o=Math.max(o,b)):(a=Math.max(a,b/2)+Bt.minPadding,o=Math.max(o,b/2),r=Math.max(t/2,r),h=Math.max(t/2,h))}s=0}const l=Math.min(Math.max(o-h,0),Math.max(o-e.right_shift,0)),c=Math.min(Math.max(a-r,0),Math.max(a-e.left_shift,0));return e.left_shift+=c,e.right_shift+=l,!0}static get TEXT_FONT(){let t="Roboto Slab, Times, serif";return"Petaluma"===X.currentMusicFont().getName()&&(t="PetalumaScript, Arial, sans-serif"),{family:t,size:12,weight:D.NORMAL,style:N.NORMAL}}get superscriptOffset(){return Bt.superscriptOffset*this.textFormatter.fontSizeInPixels}get subscriptOffset(){return Bt.subscriptOffset*this.textFormatter.fontSizeInPixels}setReportWidth(t){return this.reportWidth=t,this}getReportWidth(){return this.reportWidth}updateOverBarAdjustments(){const t=this.symbolBlocks.findIndex((({symbolType:t,glyph:e})=>t===Ct.GLYPH&&void 0!==e&&"csymDiagonalArrangementSlash"===e.code));if(t<0)return;const e=this.symbolBlocks[t].width/4,i=.25*this.textFormatter.fontSizeInPixels;let s=0;for(;s0?this.symbolBlocks[t-1]:void 0;let s=0;e.symbolType===Ct.GLYPH&&void 0!==e.glyph&&e.glyph.code===Bt.glyphs.over.code&&(s+=e.glyph.metrics.x_shift),void 0!==i&&i.symbolType===Ct.GLYPH&&void 0!==i.glyph&&i.glyph.code===Bt.glyphs.over.code&&(s+=i.glyph.metrics.x_shift);let n=!1,a=!1;void 0!==i&&i.symbolType===Ct.TEXT&&(n=Bt.upperKerningText.some((t=>t===i.text[i.text.length-1])),a=Bt.lowerKerningText.some((t=>t===i.text[i.text.length-1])));const o=Bt.kerningOffset*this.textFormatter.fontSizeInPixels;return n&&e.symbolModifier===kt.SUPERSCRIPT&&(s+=o),a&&e.symbolType===Ct.TEXT&&(e.text[0]>="a"&&e.text[0]<="z"&&(s+=o/2),Bt.upperKerningText.some((t=>t===(null==i?void 0:i.text[i.text.length-1])))&&(s+=o/2)),s}getSymbolBlock(t={}){var e,i,s;const n=null!==(e=t.symbolType)&&void 0!==e?e:Ct.TEXT,a={text:null!==(i=t.text)&&void 0!==i?i:"",symbolType:n,symbolModifier:null!==(s=t.symbolModifier)&&void 0!==s?s:kt.NONE,xShift:0,yShift:0,vAlign:!1,width:0};if(n===Ct.GLYPH&&"string"==typeof t.glyph){const e=Bt.glyphs[t.glyph],i=20;a.glyph=new Q(e.code,i,{category:"chordSymbol"})}else n===Ct.TEXT?a.width=this.textFormatter.getWidthForTextInEm(a.text):n===Ct.LINE&&(a.width=t.width);return a}addSymbolBlock(t){return this.symbolBlocks.push(this.getSymbolBlock(t)),this}addText(t,e={}){const i=Ct.TEXT;return this.addSymbolBlock(Object.assign(Object.assign({},e),{text:t,symbolType:i}))}addTextSuperscript(t){const e=Ct.TEXT,i=kt.SUPERSCRIPT;return this.addSymbolBlock({text:t,symbolType:e,symbolModifier:i})}addTextSubscript(t){const e=Ct.TEXT,i=kt.SUBSCRIPT;return this.addSymbolBlock({text:t,symbolType:e,symbolModifier:i})}addGlyphSuperscript(t){const e=Ct.GLYPH,i=kt.SUPERSCRIPT;return this.addSymbolBlock({glyph:t,symbolType:e,symbolModifier:i})}addGlyph(t,e={}){const i=Ct.GLYPH;return this.addSymbolBlock(Object.assign(Object.assign({},e),{glyph:t,symbolType:i}))}addGlyphOrText(t,e={}){let i="";for(let s=0;s0&&(this.addText(i,e),i=""),this.addGlyph(n,e)):i+=n}return i.length>0&&this.addText(i,e),this}addLine(t,e={}){const i=Ct.LINE;return this.addSymbolBlock(Object.assign(Object.assign({},e),{symbolType:i,width:t}))}setFont(t,e,i,s){return super.setFont(t,e,i,s),this.textFormatter=rt.create(this.textFont),this}setEnableKerning(t){return this.useKerning=t,this}setVertical(t){return this.vertical="string"==typeof t?Bt.VerticalJustifyString[t]:t,this}getVertical(){return this.vertical}setHorizontal(t){return this.horizontal="string"==typeof t?Bt.HorizontalJustifyString[t]:t,this}getHorizontal(){return this.horizontal}getWidth(){let t=0;return this.symbolBlocks.forEach((e=>{t+=e.vAlign?0:e.width})),t}getYOffsetForText(t){var e;let i=0,s=0;for(s=0;s0?i/n*-1:0}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered(),t.save(),t.openGroup("chordsymbol",this.getAttribute("id"));const i=e.getModifierStartXY(Z.Position.ABOVE,this.index);let s;t.setFont(this.textFont);const n=e.hasStem(),a=e.checkStave();if(this.vertical===Et.BOTTOM){if(s=a.getYForBottomText(this.text_line+X.TEXT_HEIGHT_OFFSET_HACK),n){const t=e.checkStem().getExtents(),i=a.getSpacingBetweenLines(),n=1===e.getStemDirection()?t.baseY:t.topY;s=Math.max(s,n+i*(this.text_line+2))}}else if(s=Math.min(a.getYForTopText(this.text_line),e.getYs()[0]-10),n){const t=e.checkStem().getExtents(),i=a.getSpacingBetweenLines();s=Math.min(s,t.topY-5-i*this.text_line)}let o=i.x;o=this.horizontal===vt.LEFT?i.x:this.horizontal===vt.RIGHT?i.x+this.getWidth():this.horizontal===vt.CENTER?i.x-this.getWidth()/2:e.getStemX()-this.getWidth()/2,Mt("Rendering ChordSymbol: ",this.textFormatter,o,s),this.symbolBlocks.forEach((e=>{const i=Bt.isSuperscript(e),n=Bt.isSubscript(e);let a=s;if(Mt("shift was ",e.xShift,e.yShift),Mt("curY pre sub ",a),i&&(a+=this.superscriptOffset),n&&(a+=this.subscriptOffset),Mt("curY sup/sub ",a),e.symbolType===Ct.TEXT){if((i||n)&&(t.save(),this.textFont)){const{family:e,size:i,weight:s,style:n}=this.textFont,a=B.scaleSize(i,Bt.superSubRatio);t.setFont(e,a,s,n)}Mt("Rendering Text: ",e.text,o+e.xShift,a+e.yShift),t.fillText(e.text,o+e.xShift,a+e.yShift),(i||n)&&t.restore()}else e.symbolType===Ct.GLYPH&&e.glyph?(a+=e.yShift,Mt("Rendering Glyph: ",e.glyph.code,o+e.xShift,a),e.glyph.render(t,o+e.xShift,a)):e.symbolType===Ct.LINE&&(Mt("Rendering Line : ",e.width,o,a),t.beginPath(),t.setLineWidth(1),t.moveTo(o,s),t.lineTo(o+e.width,a),t.stroke());o+=e.width,e.vAlign&&(o+=e.xShift)})),t.closeGroup(),t.restore()}}Bt.DEBUG=!1,Bt.HorizontalJustify=vt,Bt.HorizontalJustifyString={left:vt.LEFT,right:vt.RIGHT,center:vt.CENTER,centerStem:vt.CENTER_STEM},Bt.VerticalJustify=Et,Bt.VerticalJustifyString={top:Et.TOP,above:Et.TOP,below:Et.BOTTOM,bottom:Et.BOTTOM},Bt.glyphs={diminished:{code:"csymDiminished"},dim:{code:"csymDiminished"},halfDiminished:{code:"csymHalfDiminished"},"+":{code:"csymAugmented"},augmented:{code:"csymAugmented"},majorSeventh:{code:"csymMajorSeventh"},minor:{code:"csymMinor"},"-":{code:"csymMinor"},"(":{code:"csymParensLeftTall"},leftParen:{code:"csymParensLeftTall"},")":{code:"csymParensRightTall"},rightParen:{code:"csymParensRightTall"},leftBracket:{code:"csymBracketLeftTall"},rightBracket:{code:"csymBracketRightTall"},leftParenTall:{code:"csymParensLeftVeryTall"},rightParenTall:{code:"csymParensRightVeryTall"},"/":{code:"csymDiagonalArrangementSlash"},over:{code:"csymDiagonalArrangementSlash"},"#":{code:"accidentalSharp"},b:{code:"accidentalFlat"}},Bt.symbolTypes=Ct,Bt.symbolModifiers=kt,Bt.noFormat=!1;class Ft extends Z{constructor(){super(),this.position=Z.Position.RIGHT,this.radius=2,this.setWidth(5),this.dot_shiftY=0}static get CATEGORY(){return u.Dot}static getDots(t){return t.getModifiersByType(Ft.CATEGORY)}static buildAndAttach(t,e){for(const i of t)if(null==e?void 0:e.all)for(let t=0;te.line-t.line));let a=i,o=0,r=null,h=null,l=null,c=0;for(let t=0;to?a:o,r=m,h=i}return e.right_shift+=o,!0}setNote(t){return this.note=t,h(t)&&(this.radius*=.5,this.setWidth(3)),this}setDotShiftY(t){return this.dot_shiftY=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.checkStave().getSpacingBetweenLines(),s=e.getModifierStartXY(this.position,this.index,{forceFlagRight:!0});b(e)&&(s.y=e.getStemExtents().baseY);const n=s.x+this.x_shift+this.width-this.radius,a=s.y+this.y_shift+this.dot_shiftY*i;t.beginPath(),t.arc(n,a,this.radius,0,2*Math.PI,!1),t.fill()}}class Rt extends Z{constructor(t){super(),this.finger=t,this.width=7,this.position=Z.Position.LEFT,this.x_shift=0,this.y_shift=0,this.x_offset=0,this.y_offset=0,this.resetFont()}static get CATEGORY(){return u.FretHandFinger}static format(t,e){const{left_shift:i,right_shift:s}=e;if(!t||0===t.length)return!1;const n=[];let a=null,o=0,r=0;for(let h=0;he.line-t.line));let h=0,l=0,c=0,d=0,m=null,g=null;for(let t=0;tc?e:c):o===Z.Position.RIGHT&&(b.setXShift(l),e=r+f,d=e>d?e:d),m=u,g=a}return e.left_shift+=c,e.right_shift+=d,!0}static easyScoreHook({fingerings:t}={},e,i){null==t||t.split(",").map((t=>{const e=t.trim().split("."),s={number:e[0]};return e[1]&&(s.position=e[1]),i.getFactory().Fingering(s)})).map(((t,i)=>e.addModifier(t,i)))}setFretHandFinger(t){return this.finger=t,this}getFretHandFinger(){return this.finger}setOffsetX(t){return this.x_offset=t,this}setOffsetY(t){return this.y_offset=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getModifierStartXY(this.position,this.index);let s=i.x+this.x_shift+this.x_offset,n=i.y+this.y_shift+this.y_offset+5;switch(this.position){case Z.Position.ABOVE:s-=4,n-=12;break;case Z.Position.BELOW:s-=2,n+=10;break;case Z.Position.LEFT:s-=this.width;break;case Z.Position.RIGHT:s+=1;break;default:throw new p("InvalidPosition",`The position ${this.position} does not exist`)}t.save(),t.setFont(this.textFont),t.fillText(""+this.finger,s,n),t.restore()}}Rt.TEXT_FONT={family:B.SANS_SERIF,size:9,weight:D.BOLD,style:N.NORMAL};class Ot extends yt{constructor(t){super(t),this.custom_glyph=!1,this.stem_up_x_offset=0,this.stem_down_x_offset=0,this.index=t.index,this.x=t.x||0,this.y=t.y||0,t.note_type&&(this.noteType=t.note_type),this.displaced=t.displaced||!1,this.stem_direction=t.stem_direction||st.UP,this.line=t.line||0,this.glyph=X.getGlyphProps(this.duration,this.noteType),f(this.glyph,"BadArguments",`No glyph found for duration '${this.duration}' and type '${this.noteType}'`),(this.line>5||this.line<0)&&this.glyph.leger_code_head&&(this.glyph.code_head=this.glyph.leger_code_head),this.glyph_code=this.glyph.code_head,this.x_shift=t.x_shift||0,t.custom_glyph_code&&(this.custom_glyph=!0,this.glyph_code=t.custom_glyph_code,this.stem_up_x_offset=t.stem_up_x_offset||0,this.stem_down_x_offset=t.stem_down_x_offset||0),this.setStyle(t.style),this.slashed=t.slashed||!1,this.render_options=Object.assign(Object.assign({},this.render_options),{glyph_font_scale:t.glyph_font_scale||X.NOTATION_FONT_SCALE}),this.setWidth(this.glyph.getWidth(this.render_options.glyph_font_scale))}static get CATEGORY(){return u.NoteHead}getWidth(){return this.width}isDisplaced(){return!0===this.displaced}getGlyph(){return this.glyph}setX(t){return this.x=t,this}getY(){return this.y}setY(t){return this.y=t,this}getLine(){return this.line}setLine(t){return this.line=t,this}getAbsoluteX(){const t=this.preFormatted?super.getAbsoluteX():this.x,e=st.WIDTH/2,i=X.currentMusicFont(),s=i.lookupMetric("notehead.shiftX",0)*this.stem_direction,n=i.lookupMetric("noteHead.displaced.shiftX",0)*this.stem_direction;return t+s+(this.displaced?(this.width-e)*this.stem_direction+n:0)}getBoundingBox(){if(!this.preFormatted)throw new p("UnformattedNote","Can't call getBoundingBox on an unformatted note.");const t=this.checkStave().getSpacingBetweenLines(),e=t/2,i=this.y-e;return new C(this.getAbsoluteX(),i,this.width,t)}setStave(t){const e=this.getLine();return this.stave=t,this.stave&&(this.setY(this.stave.getYForNote(e)),this.setContext(this.stave.getContext())),this}preFormat(){if(this.preFormatted)return this;const t=this.getWidth()+this.leftDisplacedHeadPx+this.rightDisplacedHeadPx;return this.setWidth(t),this.preFormatted=!0,this}draw(){const t=this.checkContext();this.setRendered();let e=this.getAbsoluteX();this.custom_glyph&&(e+=this.stem_direction===st.UP?this.stem_up_x_offset:this.stem_down_x_offset);const i=this.y;!function(...t){Ot.DEBUG&&x("Vex.Flow.NoteHead",t)}("Drawing note head '",this.noteType,this.duration,"' at",e,i);const s=this.stem_direction,n=this.render_options.glyph_font_scale;this.applyStyle(t);const a=`${this.glyph_code}Stem${s===st.UP?"Up":"Down"}`;if("s"===this.noteType){const n=this.checkStave().getSpacingBetweenLines();!function(t,e,i,s,n,a){const o=X.SLASH_NOTEHEAD_WIDTH;t.save(),t.setLineWidth(X.STEM_WIDTH);let r=!1;if(X.durationToNumber(e)>2&&(r=!0),r||(i-=X.STEM_WIDTH/2*n),t.beginPath(),t.moveTo(i,s+a),t.lineTo(i,s+1),t.lineTo(i+o,s-a),t.lineTo(i+o,s),t.lineTo(i,s+a),t.closePath(),r?t.fill():t.stroke(),X.durationToFraction(e).equals(.5)){const e=[-3,-1,o+1,o+3];for(let n=0;n2&&i++,2===X.durationToNumber(a.note.duration)?e++:X.durationToNumber(a.note.duration)>2&&i++,2!==e&&2!==i||s.note.getModifiersByType(u.Dot).length!==a.note.getModifiersByType(u.Dot).length||t<1&&t>0?(l=h+2,s.stemDirection===a.stemDirection?s.note.setXShift(l):a.note.setXShift(l)):s.note.voice!==a.note.voice&&s.stemDirection===a.stemDirection&&(s.line!=a.line?(l=h+2,s.note.setXShift(l)):1===a.stemDirection&&(a.stemDirection=-1,a.note.setStemDirection(-1)))}else t<1?(l=h+2,s.stemDirection===a.stemDirection?s.note.setXShift(l):a.note.setXShift(l)):s.note.hasStem()?(s.stemDirection=-s.note.getStemDirection(),s.note.setStemDirection(s.stemDirection)):a.note.hasStem()&&(a.stemDirection=-a.note.getStemDirection(),a.note.setStemDirection(a.stemDirection))}return e.right_shift+=l,!0}if(!n)throw new p("InvalidState","noteM not defined.");if(n.isrest&&!s.isrest&&!a.isrest&&(s.minLine<=n.maxLine||n.minLine<=a.maxLine)){return n.maxLine-n.minLinet.postFormat())),!0)}reset(){super.reset();const t=this._noteHeads.map((t=>t.getStyle()));this.buildNoteHeads(),this._noteHeads.forEach(((e,i)=>{const s=t[i];s&&e.setStyle(s)}));const e=this.stave;return e&&this._noteHeads.forEach((t=>t.setStave(e))),this.calcNoteDisplacements(),this}setBeam(t){return this.beam=t,this.calcNoteDisplacements(),this.stem&&this.stem.setExtension(this.getStemExtension()),this}buildStem(){return this.setStem(new st({hide:!!this.isRest()})),this}buildNoteHeads(){this._noteHeads=[];const t=this.getStemDirection(),e=this.getKeys();let i,s,n,a,o,r=!1;t===st.UP?(n=0,a=e.length,o=1):(n=e.length-1,a=-1,o=-1);for(let e=n;e!==a;e+=o){const n=this.sortedKeyProps[e].keyProps,a=n.line;void 0===i?i=a:(s=Math.abs(i-a),0===s||.5===s?r=!r:(r=!1,this.use_default_head_x=!0)),i=a;const o=new Ot({duration:this.duration,note_type:this.noteType,displaced:r,stem_direction:t,custom_glyph_code:n.code,glyph_font_scale:this.render_options.glyph_font_scale,x_shift:n.shift_right,stem_up_x_offset:n.stem_up_x_offset,stem_down_x_offset:n.stem_down_x_offset,line:n.line});this.addChildElement(o),this._noteHeads[this.sortedKeyProps[e].index]=o}}autoStem(){this.setStemDirection(this.calculateOptimalStemDirection())}calculateOptimalStemDirection(){this.minLine=this.sortedKeyProps[0].keyProps.line,this.maxLine=this.sortedKeyProps[this.keyProps.length-1].keyProps.line;return(this.minLine+this.maxLine)/2<3?st.UP:st.DOWN}calculateKeyProps(){let t;for(let e=0;e0&&(this.keyProps[e-1].displaced=!0)),t=a,this.keyProps.push(n)}this.keyProps.forEach(((t,e)=>{this.sortedKeyProps.push({keyProps:t,index:e})})),this.sortedKeyProps.sort(((t,e)=>t.keyProps.line-e.keyProps.line))}getBoundingBox(){var t,e;if(!this.preFormatted)throw new p("UnformattedNote","Can't call getBoundingBox on an unformatted note.");const{width:i,modLeftPx:s,leftDisplacedHeadPx:n}=this.getMetrics(),a=this.getAbsoluteX()-s-n;let o=0,r=0;const h=(null!==(e=null===(t=this.getStave())||void 0===t?void 0:t.getSpacingBetweenLines())&&void 0!==e?e:0)/2,l=2*h;if(this.isRest()){const t=this.ys[0],e=X.durationToFraction(this.duration);e.equals(1)||e.equals(2)?(o=t-h,r=t+h):(o=t-this.glyph.line_above*l,r=t+this.glyph.line_below*l)}else if(this.glyph.stem){const t=this.getStemExtents();t.baseY+=h*this.getStemDirection(),o=Math.min(t.topY,t.baseY),r=Math.max(t.topY,t.baseY)}else{o=0,r=0;for(let t=0;te&&(e=s):s1}hasStem(){return this.glyph.stem}hasFlag(){return super.hasFlag()&&!this.isRest()}getStemX(){return"r"===this.noteType?this.getCenterGlyphX():super.getStemX()+(this.stem_direction?st.WIDTH/(2*-this.stem_direction):0)}getYForTopText(t){const e=this.getStemExtents();return Math.min(this.checkStave().getYForTopText(t),e.topY-this.render_options.annotation_spacing*(t+1))}getYForBottomText(t){const e=this.getStemExtents();return Math.max(this.checkStave().getYForTopText(t),e.baseY+this.render_options.annotation_spacing*t)}setStave(t){super.setStave(t);const e=this._noteHeads.map((e=>(e.setStave(t),e.getY())));if(this.setYs(e),this.stem){const{y_top:t,y_bottom:e}=this.getNoteHeadBounds();this.stem.setYBounds(t,e)}return this}isDisplaced(){return this.displaced}setNoteDisplaced(t){return this.displaced=t,this}getTieRightX(){let t=this.getAbsoluteX();return t+=this.getGlyphWidth()+this.x_shift+this.rightDisplacedHeadPx,this.modifierContext&&(t+=this.modifierContext.getRightShift()),t}getTieLeftX(){let t=this.getAbsoluteX();return t+=this.x_shift-this.leftDisplacedHeadPx,t}getLineForRest(){let t=this.keyProps[0].line;if(this.keyProps.length>1){const e=this.keyProps[this.keyProps.length-1].line;t=y(Math.max(t,e),Math.min(t,e))}return t}getModifierStartXY(t,e,i={}){var s,n;if(!this.preFormatted)throw new p("UnformattedNote","Can't call GetModifierStartXY on an unformatted note");if(0===this.ys.length)throw new p("NoYValues","No Y-Values calculated for this note.");const{ABOVE:a,BELOW:o,LEFT:r,RIGHT:h}=Z.Position;let l=0;return t===r?l=-2:t===h?(l=this.getGlyphWidth()+this.x_shift+2,this.stem_direction===st.UP&&this.hasFlag()&&(i.forceFlagRight||((t,e)=>e===(t.getStemDirection()===st.UP?t.keyProps.length-1:0))(this,e))&&(l+=null!==(n=null===(s=null==this?void 0:this.flag)||void 0===s?void 0:s.getMetrics().width)&&void 0!==n?n:0)):t!==o&&t!==a||(l=this.getGlyphWidth()/2),{x:this.getAbsoluteX()+l,y:this.ys[e]}}setStyle(t){return super.setGroupStyle(t)}setStemStyle(t){const e=this.getStem();return e&&e.setStyle(t),this}getStemStyle(){var t;return null===(t=this.stem)||void 0===t?void 0:t.getStyle()}setLedgerLineStyle(t){this.ledgerLineStyle=t}getLedgerLineStyle(){return this.ledgerLineStyle}setFlagStyle(t){var e;null===(e=this.flag)||void 0===e||e.setStyle(t)}getFlagStyle(){var t;return null===(t=this.flag)||void 0===t?void 0:t.getStyle()}setKeyStyle(t,e){return this._noteHeads[t].setStyle(e),this}setKeyLine(t,e){return this.keyProps[t].line=e,this.reset(),this}getKeyLine(t){return this.keyProps[t].line}getVoiceShiftWidth(){return this.getGlyphWidth()*(this.displaced?2:1)}calcNoteDisplacements(){this.setLeftDisplacedHeadPx(this.displaced&&this.stem_direction===st.DOWN?this.getGlyphWidth():0),this.setRightDisplacedHeadPx(!this.hasFlag()&&this.displaced&&this.stem_direction===st.UP?this.getGlyphWidth():0)}preFormat(){if(this.preFormatted)return;let t=0;this.modifierContext&&(this.modifierContext.preFormat(),0===this.modifierContext.getWidth()&&(t=Wt.minNoteheadPadding));let e=this.getGlyphWidth()+this.leftDisplacedHeadPx+this.rightDisplacedHeadPx+t;this.shouldDrawFlag()&&this.stem_direction===st.UP&&(e+=this.getGlyphWidth()),this.setWidth(e),this.preFormatted=!0}getNoteHeadBounds(){let t,e,i,s,n=1/0,a=-1/0,o=this.checkStave().getNumLines(),r=1,h=o,l=r;return this._noteHeads.forEach((c=>{const d=c.getLine(),m=c.getY();n=Math.min(m,n),a=Math.max(m,a),void 0===e&&c.isDisplaced()&&(e=c.getAbsoluteX()),void 0!==t||c.isDisplaced()||(t=c.getAbsoluteX()),o=Math.max(d,o),r=Math.min(d,r),c.isDisplaced()?(i=void 0===i?d:Math.max(d,i),s=void 0===s?d:Math.min(d,s)):(h=Math.max(d,h),l=Math.min(d,l))}),this),{y_top:n,y_bottom:a,displaced_x:e,non_displaced_x:t,highest_line:o,lowest_line:r,highest_displaced_line:i,lowest_displaced_line:s,highest_non_displaced_line:h,lowest_non_displaced_line:l}}getNoteHeadBeginX(){return this.getAbsoluteX()+this.x_shift}getNoteHeadEndX(){return this.getNoteHeadBeginX()+this.getGlyphWidth()}get noteHeads(){return this._noteHeads.slice()}get note_heads(){return console.warn("StaveNote.note_heads is deprecated. Use StaveNote.noteHeads instead.","This accessor will be removed in VexFlow 5.0."),this.noteHeads}drawLedgerLines(){const t=this.checkStave(),{glyph:e,render_options:{stroke_px:i}}=this,s=this.checkContext(),n=e.getWidth()+2*i,a=2*(e.getWidth()+i)-st.WIDTH/2;if(this.isRest())return;if(!s)throw new p("NoCanvasContext","Can't draw without a canvas context.");const{highest_line:o,lowest_line:r,highest_displaced_line:h,highest_non_displaced_line:l,lowest_displaced_line:c,lowest_non_displaced_line:d,displaced_x:m,non_displaced_x:g}=this.getNoteHeadBounds();if(o<6&&r>0)return;const b=Math.min(null!=m?m:0,null!=g?g:0),u=(t,e,o)=>{let r;r=o&&e?b-i:e?(null!=g?g:0)-i:(null!=m?m:0)-i;const h=e&&o?a:n;s.beginPath(),s.moveTo(r,t),s.lineTo(r+h,t),s.stroke()},_=Object.assign(Object.assign({},t.getDefaultLedgerLineStyle()),this.getLedgerLineStyle());this.applyStyle(s,_);for(let e=6;e<=o;++e){const i=void 0!==g&&e<=l,s=void 0!==h&&e<=h;u(t.getYForNote(e),i,s)}for(let e=0;e>=r;--e){const i=void 0!==g&&e>=d,s=void 0!==c&&e>=c;u(t.getYForNote(e),i,s)}this.restoreStyle(s,_)}drawModifiers(t){const e=this.checkContext();for(let i=0;i{t.openGroup("notehead",e.getAttribute("id"),{pointerBBox:!0}),e.setContext(t).draw(),this.drawModifiers(e),t.closeGroup()}))}drawStem(t){const e=this.checkContext();t&&this.setStem(new st(t)),this.shouldDrawFlag()&&this.stem&&this.stem.adjustHeightForFlag(),this.stem&&this.stem.setContext(e).draw()}getStaveNoteScale(){return 1}getStemExtension(){const t=super.getStemExtension();if(!this.glyph.stem)return t;const e=this.getStemDirection();if(e!==this.calculateOptimalStemDirection())return t;let i;i=e===st.UP?3-this.maxLine:this.minLine-3;const s=i-3.5;if(s<=0)return t;const n=this.getStave();let a=10;return null!=n&&(a=n.getSpacingBetweenLines()),t+s*a}draw(){if(!1===this.render_options.draw)return;if(0===this.ys.length)throw new p("NoYValues","Can't draw note without Y values.");const t=this.checkContext(),e=this.getNoteHeadBeginX(),i=this.hasStem()&&!this.beam;if(this._noteHeads.forEach((t=>t.setX(e))),this.stem){const t=this.getStemX();this.stem.setNoteHeadXBounds(t,t)}!function(...t){Wt.DEBUG&&x("Vex.Flow.StaveNote",t)}("Rendering ",this.isChord()?"chord :":"note :",this.keys),this.applyStyle(),t.openGroup("stavenote",this.getAttribute("id")),this.drawLedgerLines(),i&&this.drawStem(),this.drawNoteHeads(),this.drawFlag(),t.closeGroup(),this.restoreStyle(),this.setRendered()}}Wt.DEBUG=!1;class Gt extends O{constructor(t,e){super(),this.setNotes(t),this.text=e,this.render_options={cp1:8,cp2:12,text_shift_x:0,first_x_shift:0,last_x_shift:0,y_shift:7,tie_spacing:0},this.resetFont()}static get CATEGORY(){return u.StaveTie}setDirection(t){return this.direction=t,this}setNotes(t){if(!t.first_note&&!t.last_note)throw new p("BadArguments","Tie needs to have either first_note or last_note set.");if(t.first_indices||(t.first_indices=[0]),t.last_indices||(t.last_indices=[0]),t.first_indices.length!==t.last_indices.length)throw new p("BadArguments","Tied notes must have same number of indices.");return this.notes=t,this}isPartial(){return!this.notes.first_note||!this.notes.last_note}renderTie(t){if(0===t.first_ys.length||0===t.last_ys.length)throw new p("BadArguments","No Y-values to render");const e=this.checkContext();let i=this.render_options.cp1,s=this.render_options.cp2;Math.abs(t.last_x_px-t.first_x_px)<10&&(i=2,s=8);const n=this.render_options.first_x_shift,a=this.render_options.last_x_shift,o=this.render_options.y_shift*t.direction,r=this.notes.first_indices,h=this.notes.last_indices;for(let l=0;lMath.pow(this.options.softmaxFactor,e.getTicks().value()/t))).reduce(((t,e)=>t+e),0),this.expTicksUsed}softmax(t){this.expTicksUsed||(this.expTicksUsed=this.reCalculateExpTicksUsed());const e=this.ticksUsed.value();return(t=>Math.pow(this.options.softmaxFactor,t/e))(t)/this.expTicksUsed}addTickable(t){if(!t.shouldIgnoreTicks()){const e=t.getTicks();if(this.ticksUsed.add(e),this.expTicksUsed=0,(this.mode===Yt.STRICT||this.mode===Yt.FULL)&&this.ticksUsed.greaterThan(this.totalTicks))throw this.ticksUsed.subtract(e),new p("BadArgument","Too many ticks.");e.lessThan(this.smallestTickCount)&&(this.smallestTickCount=e.clone()),this.resolutionMultiplier=this.ticksUsed.denominator,this.totalTicks.add(0,this.ticksUsed.denominator)}return this.tickables.push(t),t.setVoice(this),this}addTickables(t){for(let e=0;e{e.getStave()||e.setStave(t)})),this.preFormatted=!0,this}checkStave(){return f(this.stave,"NoStave","No stave attached to instance.")}draw(t=this.checkContext(),e){let i;e=null!=e?e:this.stave,this.setRendered();for(let s=0;s1){const e=new Oe(t);e.render_options.beam_width=3,e.render_options.partial_beam_length=4,this.beams.push(e)}return this}setWidth(t){return this.width=t,this}getWidth(){return this.width+Wt.minNoteheadPadding}getGraceNotes(){return this.grace_notes}draw(){const t=this.checkContext(),e=this.checkAttachedNote();if(this.setRendered(),function(...t){zt.DEBUG&&x("Vex.Flow.GraceNoteGroup",t)}("Drawing grace note group for:",e),this.alignSubNotesWithNote(this.getGraceNotes(),e),this.grace_notes.forEach((e=>e.setContext(t).draw())),this.beams.forEach((e=>e.setContext(t).draw())),this.show_slur){const i=m(e),s=i?Gt:Ut;this.slur=new s({last_note:this.grace_notes[0],first_note:e,first_indices:[0],last_indices:[0]}),this.slur.render_options.cp2=12,this.slur.render_options.y_shift=(i?7:5)+this.render_options.slur_y_shift,this.slur.setContext(t).draw()}}}zt.DEBUG=!1;class jt extends Z{constructor(t){super(),this.preFormatted=!1,this.position=Z.Position.LEFT,this.subNotes=t,this.subNotes.forEach((t=>{t.setIgnoreTicks(!1)})),this.width=0,this.formatter=new Ne,this.voice=new Ht({num_beats:4,beat_value:4,resolution:X.RESOLUTION}).setStrict(!1),this.voice.addTickables(this.subNotes)}static get CATEGORY(){return u.NoteSubGroup}static format(t,e){if(!t||0===t.length)return!1;let i=0;for(let e=0;ee.setContext(t).drawWithStyle()))}}class Xt{constructor(t){this.preFormatted=!1,this.postFormatted=!1,this.tickID=t&&t.tickID?t.tickID:0,this.currentTick=new v(0,1),this.maxTicks=new v(0,1),this.maxTickable=void 0,this.minTicks=void 0,this.minTickable=void 0,this.padding=1,this.x=0,this.xBase=0,this.xOffset=0,this.tickables=[],this.tickablesByVoice={},this.notePx=0,this.glyphPx=0,this.leftDisplacedHeadPx=0,this.rightDisplacedHeadPx=0,this.modLeftPx=0,this.modRightPx=0,this.totalLeftPx=0,this.totalRightPx=0,this.tContexts=[],this.width=0,this.formatterMetrics={freedom:{left:0,right:0}}}static getNextContext(t){const e=t.tContexts,i=e.indexOf(t);if(i+1t.isCenterAligned()))}getMetrics(){const{width:t,glyphPx:e,notePx:i,leftDisplacedHeadPx:s,rightDisplacedHeadPx:n,modLeftPx:a,modRightPx:o,totalLeftPx:r,totalRightPx:h}=this;return{width:t,glyphPx:e,notePx:i,leftDisplacedHeadPx:s,rightDisplacedHeadPx:n,modLeftPx:a,modRightPx:o,totalLeftPx:r,totalRightPx:h}}getCurrentTick(){return this.currentTick}setCurrentTick(t){this.currentTick=t,this.preFormatted=!1}addTickable(t,e){if(!t)throw new p("BadArgument","Invalid tickable added.");if(!t.shouldIgnoreTicks()){const e=t.getTicks();e.greaterThan(this.maxTicks)&&(this.maxTicks=e.clone(),this.maxTickable=t),(null==this.minTicks||e.lessThan(this.minTicks))&&(this.minTicks=e.clone(),this.minTickable=t)}return t.setTickContext(this),this.tickables.push(t),this.tickablesByVoice[e||0]=t,this.preFormatted=!1,this}preFormat(){if(this.preFormatted)return this;for(let t=0;t=0,!this.ornament)throw new p("ArgumentError",`Ornament not found: '${this.type}'`);this.x_shift=e?e.xOffset:0,this.y_shift=e?e.yOffset:0,this.glyph=new Q(this.ornament.code,this.render_options.font_scale,{category:`ornament.${this.ornament.code}`}),Vt.ornamentNoteTransition.indexOf(this.type)>=0&&(this.delayed=!0),e||this.glyph.setOrigin(.5,1)}static get CATEGORY(){return u.Ornament}static get minPadding(){return X.currentMusicFont().lookupMetric("glyphs.noteHead.minPadding")}static format(t,e){if(!t||0===t.length)return!1;let i=0,s=e.right_shift,n=e.left_shift,a=0;for(let o=0;o=0&&(r.x_shift+=s+2),Vt.ornamentAttack.indexOf(r.type)>=0&&(r.x_shift-=n+2),r.reportedWidth&&r.x_shift<0?n+=r.reportedWidth:r.reportedWidth&&r.x_shift>=0?s+=r.reportedWidth+Vt.minPadding:i=Math.max(r.getWidth(),i),Vt.ornamentArticulation.indexOf(r.type)>=0){f(r.note,"NoAttachedNote").getLineNumber()>=3||r.getPosition()===Z.Position.ABOVE?(e.top_text_line+=h,r.y_shift+=a,a-=r.glyph.bbox.getH()):(e.text_line+=h,r.y_shift+=a,a+=r.glyph.bbox.getH())}else r.getPosition()===Z.Position.ABOVE?(r.setTextLine(e.top_text_line),e.top_text_line+=h):(r.setTextLine(e.text_line),e.text_line+=h)}return e.left_shift=n+i/2,e.right_shift=s+i/2,!0}static get ornamentNoteTransition(){return["flip","jazzTurn","smear"]}static get ornamentAttack(){return["scoop"]}static get ornamentAlignWithNoteHead(){return["doit","fall","fallLong","doitLong","bend","plungerClosed","plungerOpen","scoop"]}static get ornamentRelease(){return["doit","fall","fallLong","doitLong","jazzTurn","smear","flip"]}static get ornamentArticulation(){return["bend","plungerClosed","plungerOpen"]}getMetrics(){return X.currentMusicFont().getMetrics().glyphs.jazzOrnaments[this.ornament.code]}setDelayed(t){return this.delayed=t,this}setUpperAccidental(t){const e=this.render_options.font_scale/1.3;return this.accidentalUpper=new Q(X.accidentalCodes(t).code,e),this.accidentalUpper.setOrigin(.5,1),this}setLowerAccidental(t){const e=this.render_options.font_scale/1.3;return this.accidentalLower=new Q(X.accidentalCodes(t).code,e),this.accidentalLower.setOrigin(.5,1),this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getStemDirection(),s=e.checkStave();t.openGroup("ornament",this.getAttribute("id"));const n=e.checkStem().getExtents();let a=i===st.DOWN?n.baseY:n.topY;b(e)&&(e.hasStem()?i===st.DOWN&&(a=s.getYForTopText(this.text_line)):a=s.getYForTopText(this.text_line));const o=i===st.DOWN,r=s.getSpacingBetweenLines();let h=1;!o&&e.hasBeam()&&(h+=.5);const l=a-r*(this.text_line+h),c=e.getModifierStartXY(this.position,this.index);let d=c.x,m=this.ornamentAlignWithNoteHead?c.y:Math.min(s.getYForTopText(this.text_line),l);if(m+=this.y_shift,this.delayed){let t=0;const i=d-(s.getX()-10);if(void 0!==this.delayXShift)t=this.delayXShift;else{t+=this.glyph.getMetrics().width/2;const n=Xt.getNextContext(e.getTickContext());t+=n?.5*(n.getX()-i):.5*(s.getX()+s.getWidth()-i),this.delayXShift=t}d+=t}!function(...t){Vt.DEBUG&&x("Vex.Flow.Ornament",t)}("Rendering ornament: ",this.ornament,d,m),this.accidentalLower&&(this.accidentalLower.render(t,d,m),m-=this.accidentalLower.getMetrics().height,m-=this.render_options.accidentalLowerPadding),this.stemUpYOffset&&e.hasStem()&&1===e.getStemDirection()&&(m+=this.stemUpYOffset),e.getLineNumber()<5&&Vt.ornamentNoteTransition.indexOf(this.type)>=0&&(m=e.checkStave().getBoundingBox().getY()+40),this.glyph.render(t,d+this.x_shift,m),this.accidentalUpper&&(m-=this.glyph.getMetrics().height+this.render_options.accidentalUpperPadding,this.accidentalUpper.render(t,d,m)),t.closeGroup()}}Vt.DEBUG=!1;class Kt extends Z{constructor(t){super(),this.position=null!=t?t:Z.Position.LEFT,this.point=X.currentMusicFont().lookupMetric("parenthesis.default.point"),this.setWidth(X.currentMusicFont().lookupMetric("parenthesis.default.width"))}static get CATEGORY(){return u.Parenthesis}static buildAndAttach(t){for(const e of t)for(let t=0;th+n.width?s:h+n.width),o===$.LEFT&&(h=a.getLeftParenthesisPx(r),i=i>h+n.width?i:h+n.width),n.setXShift(h)}return e.left_shift+=i,e.right_shift+=s,!0}setNote(t){return this.note=t,this.point=X.currentMusicFont().lookupMetric("parenthesis.default.point"),this.setWidth(X.currentMusicFont().lookupMetric("parenthesis.default.width")),h(t)&&(this.point=X.currentMusicFont().lookupMetric("parenthesis.gracenote.point"),this.setWidth(X.currentMusicFont().lookupMetric("parenthesis.gracenote.width"))),this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getModifierStartXY(this.position,this.index,{forceFlagRight:!0}),s=i.x+this.x_shift,n=i.y+this.y_shift;this.position==Z.Position.RIGHT?Q.renderGlyph(t,s+1,n,this.point,"noteheadParenthesisRight",{category:"noteHead.standard.noteheadParenthesisRight"}):this.position==Z.Position.LEFT&&Q.renderGlyph(t,s-2,n,this.point,"noteheadParenthesisLeft",{category:"noteHead.standard.noteheadParenthesisLeft"})}}function $t(t){if(!t)return!1;const e=_();return"function"==typeof e.HTMLCanvasElement&&t instanceof e.HTMLCanvasElement||"function"==typeof t.getContext&&"function"==typeof t.toDataURL}function qt(t){if(!t)return!1;const e=_();return"function"==typeof e.HTMLDivElement&&t instanceof e.HTMLDivElement||"function"==typeof t.appendChild&&"object"==typeof t.style}class Jt extends ft{constructor(t){super(),this.textHeight=0,this.context2D=t,t.canvas?this.canvas=t.canvas:this.canvas={width:Jt.WIDTH,height:Jt.HEIGHT}}static get WIDTH(){return 600}static get HEIGHT(){return 400}static get CANVAS_BROWSER_SIZE_LIMIT(){return 32767}static sanitizeCanvasDims(t,e){const i=this.CANVAS_BROWSER_SIZE_LIMIT;return Math.max(t,e)>i&&(S("Canvas dimensions exceed browser limit. Cropping to "+i),t>i&&(t=i),e>i&&(e=i)),[t,e]}clear(){this.context2D.clearRect(0,0,this.canvas.width,this.canvas.height)}openGroup(t,e,i){}closeGroup(){}add(t){}setFillStyle(t){return this.context2D.fillStyle=t,this}setBackgroundFillStyle(t){return this}setStrokeStyle(t){return this.context2D.strokeStyle=t,this}setShadowColor(t){return this.context2D.shadowColor=t,this}setShadowBlur(t){const e=this.context2D.getTransform(),i=Math.sqrt(e.a*e.a+e.b*e.b+e.c*e.c+e.d*e.d);return this.context2D.shadowBlur=i*t,this}setLineWidth(t){return this.context2D.lineWidth=t,this}setLineCap(t){return this.context2D.lineCap=t,this}setLineDash(t){return this.context2D.setLineDash(t),this}scale(t,e){return this.context2D.scale(t,e),this}resize(t,e){const i=this.context2D.canvas,s=_().devicePixelRatio||1;return[t,e]=Jt.sanitizeCanvasDims(t*s,e*s),t=t/s|0,e=e/s|0,i.width=t*s,i.height=e*s,$t(i)&&(i.style.width=t+"px",i.style.height=e+"px"),this.scale(s,s)}rect(t,e,i,s){return this.context2D.rect(t,e,i,s),this}fillRect(t,e,i,s){return this.context2D.fillRect(t,e,i,s),this}clearRect(t,e,i,s){return this.context2D.clearRect(t,e,i,s),this}beginPath(){return this.context2D.beginPath(),this}moveTo(t,e){return this.context2D.moveTo(t,e),this}lineTo(t,e){return this.context2D.lineTo(t,e),this}bezierCurveTo(t,e,i,s,n,a){return this.context2D.bezierCurveTo(t,e,i,s,n,a),this}quadraticCurveTo(t,e,i,s){return this.context2D.quadraticCurveTo(t,e,i,s),this}arc(t,e,i,s,n,a){return this.context2D.arc(t,e,i,s,n,a),this}fill(){return this.context2D.fill(),this}stroke(){return this.context2D.stroke(),this}closePath(){return this.context2D.closePath(),this}measureText(t){const e=this.context2D.measureText(t);let i=0,s=0;return e.fontBoundingBoxAscent?(i=-e.fontBoundingBoxAscent,s=e.fontBoundingBoxDescent+e.fontBoundingBoxAscent):(i=-e.actualBoundingBoxAscent,s=e.actualBoundingBoxDescent+e.actualBoundingBoxAscent),{x:0,y:i,width:e.width,height:s}}fillText(t,e,i){return this.context2D.fillText(t,e,i),this}save(){return this.context2D.save(),this}restore(){return this.context2D.restore(),this}set fillStyle(t){this.context2D.fillStyle=t}get fillStyle(){return this.context2D.fillStyle}set strokeStyle(t){this.context2D.strokeStyle=t}get strokeStyle(){return this.context2D.strokeStyle}setFont(t,e,i,s){const n=B.validate(t,e,i,s);return this.context2D.font=B.toCSSString(n),this.textHeight=B.convertSizeToPixelValue(n.size),this}getFont(){return this.context2D.font}}const Qt={path:{x:!0,y:!0,width:!0,height:!0,"font-family":!0,"font-weight":!0,"font-style":!0,"font-size":!0},rect:{"font-family":!0,"font-weight":!0,"font-style":!0,"font-size":!0},text:{width:!0,height:!0}},Zt="http://www.w3.org/2000/svg",te=2*Math.PI;class ee extends ft{constructor(t){super(),this.width=0,this.height=0,this.backgroundFillStyle="white",this.fontCSSString="",this.element=t;const e=this.create("svg");this.element.appendChild(e),this.svg=e,this.parent=this.svg,this.groups=[this.svg],this.path="",this.pen={x:NaN,y:NaN},this.lineWidth=1;const i={"font-family":B.SANS_SERIF,"font-size":B.SIZE+"pt","font-weight":D.NORMAL,"font-style":N.NORMAL};this.state=Object.assign({scale:{x:1,y:1}},i),this.attributes=Object.assign({"stroke-width":.3,"stroke-dasharray":"none",fill:"black",stroke:"black"},i),this.shadow_attributes={width:0,color:"black"},this.state_stack=[]}create(t){return document.createElementNS(Zt,t)}openGroup(t,e,i){const s=this.create("g");return this.groups.push(s),this.parent.appendChild(s),this.parent=s,t&&s.setAttribute("class",T(t)),e&&s.setAttribute("id",T(e)),i&&i.pointerBBox&&s.setAttribute("pointer-events","bounding-box"),s}closeGroup(){this.groups.pop(),this.parent=this.groups[this.groups.length-1]}add(t){this.parent.appendChild(t)}setFillStyle(t){return this.attributes.fill=t,this}setBackgroundFillStyle(t){return this.backgroundFillStyle=t,this}setStrokeStyle(t){return this.attributes.stroke=t,this}setShadowColor(t){return this.shadow_attributes.color=t,this}setShadowBlur(t){return this.shadow_attributes.width=t,this}setLineWidth(t){return this.attributes["stroke-width"]=t,this.lineWidth=t,this}setLineDash(t){if("[object Array]"===Object.prototype.toString.call(t))return this.attributes["stroke-dasharray"]=t.join(","),this;throw new p("ArgumentError","lineDash must be an array of integers.")}setLineCap(t){return this.attributes["stroke-linecap"]=t,this}resize(t,e){this.width=t,this.height=e,this.element.style.width=t.toString(),this.svg.style.width=t.toString(),this.svg.style.height=e.toString();const i={width:t,height:e};return this.applyAttributes(this.svg,i),this.scale(this.state.scale.x,this.state.scale.y),this}scale(t,e){this.state.scale={x:t,y:e};const i=this.width/t,s=this.height/e;return this.setViewBox(0,0,i,s),this}setViewBox(t,e,i,s){if("string"==typeof t)this.svg.setAttribute("viewBox",t);else{const n=t+" "+e+" "+i+" "+s;this.svg.setAttribute("viewBox",n)}}applyAttributes(t,e){const i=Qt[t.nodeName];for(const s in e)i&&i[s]||t.setAttributeNS(null,s,e[s]);return t}clear(){for(;this.svg.lastChild;)this.svg.removeChild(this.svg.lastChild);this.scale(this.state.scale.x,this.state.scale.y)}rect(t,e,i,s,n){s<0&&(e+=s,s*=-1);const a=this.create("rect");return n=null!=n?n:{fill:"none","stroke-width":this.lineWidth,stroke:"black"},this.applyAttributes(a,Object.assign({x:t,y:e,width:i,height:s},n)),this.add(a),this}fillRect(t,e,i,s){const n={fill:this.attributes.fill};return this.rect(t,e,i,s,n),this}clearRect(t,e,i,s){return this.rect(t,e,i,s,{"stroke-width":0,fill:this.backgroundFillStyle}),this}beginPath(){return this.path="",this.pen.x=NaN,this.pen.y=NaN,this}moveTo(t,e){return this.path+="M"+t+" "+e,this.pen.x=t,this.pen.y=e,this}lineTo(t,e){return this.path+="L"+t+" "+e,this.pen.x=t,this.pen.y=e,this}bezierCurveTo(t,e,i,s,n,a){return this.path+="C"+t+" "+e+","+i+" "+s+","+n+" "+a,this.pen.x=n,this.pen.y=a,this}quadraticCurveTo(t,e,i,s){return this.path+="Q"+t+" "+e+","+i+" "+s,this.pen.x=i,this.pen.y=s,this}arc(t,e,i,s,n,a){const o=t+i*Math.cos(s),r=e+i*Math.sin(s),h=w(s),l=w(n);if(!a&&n-s>=te||a&&s-n>=te||h===l){const n=t+i*Math.cos(s+Math.PI),a=e+i*Math.sin(s+Math.PI);this.path+=`M${o} ${r} A${i} ${i} 0 0 0 ${n} ${a} `,this.path+=`A${i} ${i} 0 0 0 ${o} ${r}`,this.pen.x=o,this.pen.y=r}else{const c=t+i*Math.cos(n),d=e+i*Math.sin(n);let m;s=h,n=l,m=Math.abs(n-s)n&&(m=!m);const g=!a;this.path+=`M${o} ${r} A${i} ${i} 0 ${+m} ${+g} ${c} ${d}`,this.pen.x=c,this.pen.y=d}return this}closePath(){return this.path+="Z",this}getShadowStyle(){const t=this.shadow_attributes;return`filter: drop-shadow(0 0 ${t.width/1.5}px ${t.color})`}fill(t){const e=this.create("path");return void 0===t&&(t=Object.assign(Object.assign({},this.attributes),{stroke:"none"})),t.d=this.path,this.shadow_attributes.width>0&&(t.style=this.getShadowStyle()),this.applyAttributes(e,t),this.add(e),this}stroke(){const t=this.create("path"),e=Object.assign(Object.assign({},this.attributes),{fill:"none","stroke-width":this.lineWidth,d:this.path});return this.shadow_attributes.width>0&&(e.style=this.getShadowStyle()),this.applyAttributes(t,e),this.add(t),this}measureText(t){return ee.measureTextCache.lookup(t,this.svg,this.attributes)}fillText(t,e,i){if(!t||t.length<=0)return this;const s=Object.assign(Object.assign({},this.attributes),{stroke:"none",x:e,y:i}),n=this.create("text");return n.textContent=t,this.applyAttributes(n,s),this.add(n),this}save(){return this.state_stack.push({state:{"font-family":this.state["font-family"],"font-weight":this.state["font-weight"],"font-style":this.state["font-style"],"font-size":this.state["font-size"],scale:this.state.scale},attributes:{"font-family":this.attributes["font-family"],"font-weight":this.attributes["font-weight"],"font-style":this.attributes["font-style"],"font-size":this.attributes["font-size"],fill:this.attributes.fill,stroke:this.attributes.stroke,"stroke-width":this.attributes["stroke-width"],"stroke-dasharray":this.attributes["stroke-dasharray"]},shadow_attributes:{width:this.shadow_attributes.width,color:this.shadow_attributes.color},lineWidth:this.lineWidth}),this}restore(){const t=this.state_stack.pop();if(t){const e=t;this.state["font-family"]=e.state["font-family"],this.state["font-weight"]=e.state["font-weight"],this.state["font-style"]=e.state["font-style"],this.state["font-size"]=e.state["font-size"],this.state.scale=e.state.scale,this.attributes["font-family"]=e.attributes["font-family"],this.attributes["font-weight"]=e.attributes["font-weight"],this.attributes["font-style"]=e.attributes["font-style"],this.attributes["font-size"]=e.attributes["font-size"],this.attributes.fill=e.attributes.fill,this.attributes.stroke=e.attributes.stroke,this.attributes["stroke-width"]=e.attributes["stroke-width"],this.attributes["stroke-dasharray"]=e.attributes["stroke-dasharray"],this.shadow_attributes.width=e.shadow_attributes.width,this.shadow_attributes.color=e.shadow_attributes.color,this.lineWidth=e.lineWidth}return this}set fillStyle(t){this.setFillStyle(t)}get fillStyle(){return this.attributes.fill}set strokeStyle(t){this.setStrokeStyle(t)}get strokeStyle(){return this.attributes.stroke}setFont(t,e,i,s){const n=B.validate(t,e,i,s);this.fontCSSString=B.toCSSString(n);const a={"font-family":n.family,"font-size":n.size,"font-weight":n.weight,"font-style":n.style};return this.attributes=Object.assign(Object.assign({},this.attributes),a),this.state=Object.assign(Object.assign({},this.state),a),this}getFont(){return this.fontCSSString}}var ie,se,ne,ae;ee.measureTextCache=new class{constructor(){this.cache={}}lookup(t,e,i){let s=this.cache[t];void 0===s&&(s={},this.cache[t]=s);const n=`${i["font-family"]}%${i["font-size"]}%${i["font-weight"]}%${i["font-style"]}`;let a=s[n];return void 0===a&&(a=this.measureImpl(t,e,i),s[n]=a),a}measureImpl(t,e,i){let s=this.txt;s||(s=document.createElementNS(Zt,"text"),this.txt=s),s.textContent=t,s.setAttributeNS(null,"font-family",i["font-family"]),s.setAttributeNS(null,"font-size",i["font-size"]),s.setAttributeNS(null,"font-style",i["font-style"]),s.setAttributeNS(null,"font-weight",i["font-weight"]),e.appendChild(s);const n=s.getBBox();return e.removeChild(s),{x:n.x,y:n.y,width:n.width,height:n.height}}},function(t){t[t.CANVAS=1]="CANVAS",t[t.SVG=2]="SVG"}(ie||(ie={})),function(t){t[t.NONE=1]="NONE",t[t.UP=2]="UP",t[t.DOWN=3]="DOWN"}(se||(se={}));class oe{constructor(t,e){if(d(t))this.ctx=t;else{if(void 0===e)throw new p("InvalidArgument","Missing backend argument");const i=e;let s;if("string"==typeof t){const e=document.getElementById(t);if(!e)throw new p("BadElementId",`Can't find element with ID "${e}"`);s=e}else s=t;if(i===oe.Backends.CANVAS){if(!$t(s))throw new p("BadElement","CANVAS context requires an HTMLCanvasElement.");const t=s.getContext("2d");if(!t)throw new p("BadElement","Can't get canvas context");this.ctx=new Jt(t)}else{if(i!==oe.Backends.SVG)throw new p("InvalidBackend",`No support for backend: ${i}`);if(!qt(s))throw new p("BadElement","SVG context requires an HTMLDivElement.");this.ctx=new ee(s)}}}static buildContext(t,e,i,s,n="#FFF"){const a=new oe(t,e);i&&s&&a.resize(i,s);const o=a.getContext();return o.setBackgroundFillStyle(n),oe.lastContext=o,o}static getCanvasContext(t,e,i,s){return oe.buildContext(t,oe.Backends.CANVAS,e,i,s)}static getSVGContext(t,e,i,s){return oe.buildContext(t,oe.Backends.SVG,e,i,s)}static drawDashedLine(t,e,i,s,n,a){t.beginPath();const o=s-e,r=n-i,h=Math.atan2(r,o);let l=e,c=i;t.moveTo(e,i);let d=0,m=!0;for(;!(o<0?l<=s:l>=s)||!(r<0?c<=n:c>=n);){const e=a[d++%a.length],i=l+Math.cos(h)*e;l=o<0?Math.max(s,i):Math.min(s,i);const g=c+Math.sin(h)*e;c=r<0?Math.max(n,g):Math.min(n,g),m?t.lineTo(l,c):t.moveTo(l,c),m=!m}t.closePath(),t.stroke()}resize(t,e){return this.ctx.resize(t,e),this}getContext(){return this.ctx}}oe.Backends=ie,oe.LineEndType=se,oe.lastContext=void 0;class re extends Z{constructor(t){super(),this.string_number=t,this.position=Z.Position.ABOVE,this.x_shift=0,this.y_shift=0,this.text_line=0,this.stem_offset=0,this.x_offset=0,this.y_offset=0,this.dashed=!0,this.leg=oe.LineEndType.NONE,this.radius=8,this.drawCircle=!0,this.setWidth(2*this.radius+4),this.resetFont()}static get CATEGORY(){return u.StringNumber}static get metrics(){return X.currentMusicFont().getMetrics().glyphs.stringNumber}static format(t,e){const i=e.left_shift,s=e.right_shift;if(!t||0===t.length)return!1;const n=[];let a=null,o=0,r=0;for(let h=0;he.line-t.line));let h=0,l=0,c=0,d=null,g=null;for(let t=0;tl?e:l):r===Z.Position.RIGHT&&(m.setXShift(h),e+=p,c=e>c?e:c),d=b,g=a}return e.left_shift+=l,e.right_shift+=c,!0}setLineEndType(t){return t>=oe.LineEndType.NONE&&t<=oe.LineEndType.DOWN&&(this.leg=t),this}setStringNumber(t){return this.string_number=t,this}setOffsetX(t){return this.x_offset=t,this}setOffsetY(t){return this.y_offset=t,this}setLastNote(t){return this.last_note=t,this}setDashed(t){return this.dashed=t,this}setDrawCircle(t){return this.drawCircle=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getModifierStartXY(this.position,this.index),s=e.hasStem()?e.getStemDirection():st.UP;let n=i.x+this.x_shift+this.x_offset,a={};e.hasStem()&&(a=e.checkStem().getExtents());let o=i.y+this.y_shift+this.y_offset;switch(this.position){case Z.Position.ABOVE:o=e.getYs().reduce(((t,e)=>tt>e?t:e)),e.hasStem()&&s==st.DOWN&&(o=a.topY-re.metrics.stemPadding),o+=this.radius+re.metrics.verticalPadding+this.text_line*X.STAVE_LINE_DISTANCE;break;case Z.Position.LEFT:n-=this.radius/2+re.metrics.leftPadding;break;case Z.Position.RIGHT:n+=this.radius/2+re.metrics.rightPadding;break;default:throw new p("InvalidPosition",`The position ${this.position} is invalid`)}t.save(),this.drawCircle&&(t.beginPath(),t.arc(n,o,this.radius,0,2*Math.PI,!1),t.setLineWidth(1.5),t.stroke()),t.setFont(this.textFont);const r=n-t.measureText(this.string_number).width/2;t.fillText(""+this.string_number,r,o+4.5);const h=this.last_note;if(g(h)){const i=h.getStemX()-e.getX()+5;let s,a;switch(t.setStrokeStyle("#000000"),t.setLineCap("round"),t.setLineWidth(.6),this.dashed?oe.drawDashedLine(t,n+10,o,n+i,o,[3,3]):oe.drawDashedLine(t,n+10,o,n+i,o,[3,0]),this.leg){case oe.LineEndType.UP:s=-10,a=this.dashed?[3,3]:[3,0],oe.drawDashedLine(t,n+i,o,n+i,o+s,a);break;case oe.LineEndType.DOWN:s=10,a=this.dashed?[3,3]:[3,0],oe.drawDashedLine(t,n+i,o,n+i,o+s,a)}}t.restore()}}re.TEXT_FONT={family:B.SANS_SERIF,size:B.SIZE,weight:D.BOLD,style:N.NORMAL};class he extends Z{constructor(t,e){super(),this.options=Object.assign({all_voices:!0},e),this.all_voices=this.options.all_voices,this.type=t,this.position=Z.Position.LEFT,this.render_options={font_scale:38},this.resetFont(),this.setXShift(0),this.setWidth(10)}static get CATEGORY(){return u.Stroke}static format(t,e){const i=e.left_shift;if(!t||0===t.length)return!1;const s=t.map((t=>{const e=t.getNote(),i=t.checkIndex();if(m(e)){const{line:s}=e.getKeyProps()[i];return{line:s,shift:e.getLeftDisplacedHeadPx(),stroke:t}}if(b(e)){const{str:s}=e.getPositions()[i];return{line:s,shift:0,stroke:t}}throw new p("Internal","Unexpected instance.")})),n=i,a=s.reduce(((t,{stroke:e,shift:i})=>(e.setXShift(n+i),Math.max(e.getWidth()+0,t))),0);return e.left_shift+=a,!0}getPosition(){return this.position}addEndNote(t){return this.note_end=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getModifierStartXY(this.position,this.index);let s=e.getYs(),n=i.y,a=i.y;const o=i.x-5,r=e.checkStave().getSpacingBetweenLines(),h=this.checkModifierContext().getMembers(e.getCategory());for(let t=0;t0){s-=o.map((t=>t.getTextHeight())).reduce(((t,e)=>t>e?t:e))/X.STAVE_LINE_DISTANCE+1}else e.top_text_line+=1;for(let e=0;e=t.line?i.above:i.below}}this.placeGlyphOnLine(s,this.checkStave(),t.line),this.glyphs.push(s);const a=this.xPositions[this.xPositions.length-1],o=s.getMetrics().width+n;this.xPositions.push(a+o),this.width+=o}cancelKey(t){return this.formatted=!1,this.cancelKeySpec=t,this}convertToCancelAccList(t){const e=X.keySignature(t),i=this.accList.length>0&&e.length>0&&e[0].type!==this.accList[0].type,s=i?e.length:e.length-this.accList.length;if(s<1)return;const n=[];for(let t=0;t0?e[0].type:void 0;let s;if(this.cancelKeySpec&&(s=this.convertToCancelAccList(this.cancelKeySpec)),this.alterKeySpec&&this.convertToAlterAccList(this.alterKeySpec),this.accList.length>0){const n=(this.position===Tt.END?t.getEndClef():t.getClef())||t.getClef();s&&this.convertAccLines(n,s.type,s.accList),this.convertAccLines(n,i,e);for(let t=0;t0?"PlusSmall":"Plus";break;case"(":s=i.length>0?"ParensLeftSmall":"ParensLeft";break;case")":s=i.length>0?"ParensRightSmall":"ParensRight"}const n=new Q("timeSig"+s,this.timeSignature.point);this.topGlyphs.push(n),r+=null!==(o=n.getMetrics().width)&&void 0!==o?o:0}let h=0;for(let t=0;t0?e.getYForLine(this.timeSignature.topLine):(e.getYForLine(this.timeSignature.topLine)+e.getYForLine(this.timeSignature.bottomLine))/2;for(let t=0;t{const e=t.split("/");if(2!==e.length&&"+"!==e[0]&&"-"!==e[0])throw new p("BadTimeSignature",`Invalid time spec: ${t}. Must be in the form "/"`);e.forEach((e=>{if(0==/^[0-9+\-()]+$/.test(e))throw new p("BadTimeSignature",`Invalid time spec: ${t}. Must contain valid signatures.`)}))})(t);const s=t.split("/");return{num:!0,glyph:this.makeTimeSignatureGlyph(null!==(e=s[0])&&void 0!==e?e:"",null!==(i=s[1])&&void 0!==i?i:"")}}makeTimeSignatureGlyph(t,e){return new Se(this,t,e,"timeSig0",this.point)}getInfo(){return this.info}setTimeSig(t){return this.info=this.parseTimeSpec(t),this}draw(){const t=this.checkStave(),e=t.checkContext();this.setRendered(),e.openGroup("timesignature",this.getAttribute("id")),this.info.glyph.setStave(t),this.info.glyph.setContext(e),this.placeGlyphOnLine(this.info.glyph,t,this.info.line),this.info.glyph.renderToStave(this.x),e.closeGroup()}}const Te={[Nt.CATEGORY]:0,[me.CATEGORY]:1,[ge.CATEGORY]:2,[ye.CATEGORY]:3},we={[ye.CATEGORY]:0,[ge.CATEGORY]:1,[Nt.CATEGORY]:2,[me.CATEGORY]:3};class ve extends O{constructor(t,e,i,s){super(),this.height=0,this.x=t,this.y=e,this.width=i,this.formatted=!1,this.start_x=t+5,this.end_x=t+i,this.modifiers=[],this.measure=0,this.clef="treble",this.endClef=void 0,this.resetFont(),this.options=Object.assign({vertical_bar_width:10,num_lines:5,fill_style:"#999999",left_bar:!0,right_bar:!0,spacing_between_lines_px:X.STAVE_LINE_DISTANCE,space_above_staff_ln:4,space_below_staff_ln:4,top_text_position:1,bottom_text_position:4,line_config:[]},s),this.bounds={x:this.x,y:this.y,w:this.width,h:0},this.defaultLedgerLineStyle={strokeStyle:"#444",lineWidth:1.4},this.resetLines(),this.addModifier(new Nt(this.options.left_bar?wt.SINGLE:wt.NONE)),this.addEndModifier(new Nt(this.options.right_bar?wt.SINGLE:wt.NONE))}static get CATEGORY(){return u.Stave}static get defaultPadding(){const t=X.currentMusicFont();return t.lookupMetric("stave.padding")+t.lookupMetric("stave.endPaddingMax")}static get rightPadding(){return X.currentMusicFont().lookupMetric("stave.endPaddingMax")}setDefaultLedgerLineStyle(t){this.defaultLedgerLineStyle=t}getDefaultLedgerLineStyle(){return Object.assign(Object.assign({},this.getStyle()),this.defaultLedgerLineStyle)}space(t){return this.options.spacing_between_lines_px*t}resetLines(){this.options.line_config=[];for(let t=0;ti.getWidth()&&(e-=i.getWidth()),e}setRepetitionType(t,e=0){return this.modifiers.push(new be(t,this.x,e)),this}setVoltaType(t,e,i){return this.modifiers.push(new xe(t,e,this.x,i)),this}setSection(t,e,i=0,s,n=!0){const a=new ue(t,this.x+i,e,n);return s&&a.setFontSize(s),this.modifiers.push(a),this}setTempo(t,e){return this.modifiers.push(new pe(t,this.x,e)),this}setText(t,e,i={}){return this.modifiers.push(new fe(t,e,i)),this}getHeight(){return this.height}getSpacingBetweenLines(){return this.options.spacing_between_lines_px}getBoundingBox(){return new C(this.x,this.y,this.width,this.getBottomY()-this.y)}getBottomY(){const t=this.options,e=t.spacing_between_lines_px;return this.getYForLine(t.num_lines)+t.space_below_staff_ln*e}getBottomLineY(){return this.getYForLine(this.options.num_lines)}getYForLine(t){const e=this.options,i=e.spacing_between_lines_px,s=e.space_above_staff_ln;return this.y+t*i+s*i}getLineForY(t){const e=this.options,i=e.spacing_between_lines_px,s=e.space_above_staff_ln;return(t-this.y)/i-s}getYForTopText(t=0){return this.getYForLine(-t-this.options.top_text_position)}getYForBottomText(t=0){return this.getYForLine(this.options.bottom_text_position+t)}getYForNote(t){const e=this.options,i=e.spacing_between_lines_px,s=e.space_above_staff_ln;return this.y+s*i+5*i-t*i}getYForGlyphs(){return this.getYForLine(3)}addModifier(t,e){return void 0!==e&&t.setPosition(e),t.setStave(this),this.formatted=!1,this.modifiers.push(t),this}addEndModifier(t){return this.addModifier(t,Tt.END),this}setBegBarType(t){const{SINGLE:e,REPEAT_BEGIN:i,NONE:s}=wt;return t!==e&&t!==i&&t!==s||(this.modifiers[0].setType(t),this.formatted=!1),this}setEndBarType(t){return t!==wt.REPEAT_BEGIN&&(this.modifiers[1].setType(t),this.formatted=!1),this}setClef(t,e,i,s){void 0===s&&(s=Tt.BEGIN),s===Tt.END?this.endClef=t:this.clef=t;const n=this.getModifiers(s,me.CATEGORY);return 0===n.length?this.addClef(t,e,i,s):n[0].setType(t,e,i),this}getClef(){return this.clef}setEndClef(t,e,i){return this.setClef(t,e,i,Tt.END),this}getEndClef(){return this.endClef}setKeySignature(t,e,i){void 0===i&&(i=Tt.BEGIN);const s=this.getModifiers(i,ge.CATEGORY);return 0===s.length?this.addKeySignature(t,e,i):s[0].setKeySig(t,e),this}setEndKeySignature(t,e){return this.setKeySignature(t,e,Tt.END),this}setTimeSignature(t,e,i){void 0===i&&(i=Tt.BEGIN);const s=this.getModifiers(i,ye.CATEGORY);return 0===s.length?this.addTimeSignature(t,e,i):s[0].setTimeSig(t),this}setEndTimeSignature(t,e){return this.setTimeSignature(t,e,Tt.END),this}addKeySignature(t,e,i){return void 0===i&&(i=Tt.BEGIN),this.addModifier(new ge(t,e).setPosition(i),i),this}addClef(t,e,i,s){return void 0===s||s===Tt.BEGIN?this.clef=t:s===Tt.END&&(this.endClef=t),this.addModifier(new me(t,e,i),s),this}addEndClef(t,e,i){return this.addClef(t,e,i,Tt.END),this}addTimeSignature(t,e,i){return this.addModifier(new ye(t,e),i),this}addEndTimeSignature(t,e){return this.addTimeSignature(t,e,Tt.END),this}addTrebleGlyph(){return this.addClef("treble"),this}getModifiers(t,e){const i=void 0===t,s=void 0===e;return i&&s?this.modifiers:i?this.modifiers.filter((t=>e===t.getCategory())):s?this.modifiers.filter((e=>t===e.getPosition())):this.modifiers.filter((i=>t===i.getPosition()&&e===i.getCategory()))}sortByCategory(t,e){for(let i=t.length-1;i>=0;i--)for(let s=0;se[t[s+1].getCategory()]){const e=t[s];t[s]=t[s+1],t[s+1]=e}}format(){const t=this.modifiers[0],e=this.modifiers[1],i=this.getModifiers(Tt.BEGIN),s=this.getModifiers(Tt.END);let n,a,r;this.sortByCategory(i,Te),this.sortByCategory(s,we),i.length>1&&t.getType()===wt.REPEAT_BEGIN&&(i.push(i.splice(0,1)[0]),i.splice(0,0,new Nt(wt.SINGLE))),s.indexOf(e)>0&&s.splice(0,0,new Nt(wt.NONE));let h=0,l=this.x;for(let t=0;t0){t.save(),t.setFont(this.textFont);const e=t.measureText(""+this.measure).width;n=this.getYForTopText(0)+3,t.fillText(""+this.measure,this.x-e/2,n),t.restore()}return t.closeGroup(),this}getVerticalBarWidth(){return this.options.vertical_bar_width}getConfigForLines(){return this.options.line_config}setConfigForLine(t,e){if(t>=this.options.num_lines||t<0)throw new p("StaveConfigError","The line number must be within the range of the number of lines in the Stave.");if(void 0===e.visible)throw new p("StaveConfigError","The line configuration object is missing the 'visible' property.");if("boolean"!=typeof e.visible)throw new p("StaveConfigError","The line configuration objects 'visible' property must be true or false.");return this.options.line_config[t]=e,this}setConfigForLines(t){if(t.length!==this.options.num_lines)throw new p("StaveConfigError","The length of the lines configuration array must match the number of lines in the Stave");for(const e in t)null==t[e].visible&&(t[e]=this.options.line_config[e]),this.options.line_config[e]=Object.assign(Object.assign({},this.options.line_config[e]),t[e]);return this.options.line_config=t,this}static formatBegModifiers(t){let e=0;t.forEach((t=>{t.getNoteStartX()>e&&(e=t.getNoteStartX())})),t.forEach((t=>{t.setNoteStartX(e)})),e=0,t.forEach((t=>{t.getModifiers(Tt.BEGIN,u.Barline).forEach((t=>{t.getType()==wt.REPEAT_BEGIN&&t.getX()>e&&(e=t.getX())}))})),t.forEach((t=>{t.getModifiers(Tt.BEGIN,u.Barline).forEach((t=>{t.getType()==wt.REPEAT_BEGIN&&t.setX(e)}))})),e=0,t.forEach((t=>{t.getModifiers(Tt.BEGIN,u.TimeSignature).forEach((t=>{t.getX()>e&&(e=t.getX())}))})),t.forEach((t=>{t.getModifiers(Tt.BEGIN,u.TimeSignature).forEach((t=>{t.setX(e)}))}))}}function Ee(t,e,i,s,n){if(e!==Ce.type.BOLD_DOUBLE_LEFT&&e!==Ce.type.BOLD_DOUBLE_RIGHT)throw new p("InvalidConnector","A REPEAT_BEGIN or REPEAT_END type must be provided.");let a=3,o=3.5;e===Ce.type.BOLD_DOUBLE_RIGHT&&(a=-5,o=3),t.fillRect(i+a,s,1,n-s),t.fillRect(i-2,s,o,n-s)}ve.TEXT_FONT={family:B.SANS_SERIF,size:8,weight:D.NORMAL,style:N.NORMAL};class Ce extends O{constructor(t,e){super(),this.thickness=X.STAVE_LINE_THICKNESS,this.width=3,this.top_stave=t,this.bottom_stave=e,this.type=Ce.type.DOUBLE,this.resetFont(),this.x_shift=0,this.texts=[]}static get CATEGORY(){return u.StaveConnector}setType(t){const e="string"==typeof t?Ce.typeString[t]:t;return Object.values(Ce.type).includes(e)&&(this.type=e),this}getType(){return this.type}setText(t,e={}){return this.texts.push({content:t,options:Object.assign({shift_x:0,shift_y:0},e)}),this}setXShift(t){if("number"!=typeof t)throw new p("InvalidType","x_shift must be a Number");return this.x_shift=t,this}getXShift(){return this.x_shift}draw(){const t=this.checkContext();this.setRendered();let e=this.top_stave.getYForLine(0),i=this.bottom_stave.getYForLine(this.bottom_stave.getNumLines()-1)+this.thickness,s=this.width,n=this.top_stave.getX();(this.type===Ce.type.SINGLE_RIGHT||this.type===Ce.type.BOLD_DOUBLE_RIGHT||this.type===Ce.type.THIN_DOUBLE)&&(n=this.top_stave.getX()+this.top_stave.getWidth());let a=i-e;switch(this.type){case Ce.type.SINGLE:case Ce.type.SINGLE_LEFT:case Ce.type.SINGLE_RIGHT:s=1;break;case Ce.type.DOUBLE:n-=this.width+2,e-=this.thickness,a+=.5;break;case Ce.type.BRACE:{s=12;const n=this.top_stave.getX()-2+this.x_shift,o=e,r=n,h=i,l=n-s,c=o+a/2,d=l-.9*s,m=o+.2*a,g=n+1.1*s,b=c-.135*a,u=g,p=c+.135*a,_=d,f=h-.2*a,x=l-s,S=f,y=n+.4*s,T=c+.135*a,w=y,v=c-.135*a,E=x,C=m;t.beginPath(),t.moveTo(n,o),t.bezierCurveTo(d,m,g,b,l,c),t.bezierCurveTo(u,p,_,f,r,h),t.bezierCurveTo(x,S,y,T,l,c),t.bezierCurveTo(w,v,E,C,n,o),t.fill(),t.stroke();break}case Ce.type.BRACKET:e-=6,i+=6,a=i-e,Q.renderGlyph(t,n-5,e,40,"bracketTop"),Q.renderGlyph(t,n-5,i,40,"bracketBottom"),n-=this.width+2;break;case Ce.type.BOLD_DOUBLE_LEFT:Ee(t,this.type,n+this.x_shift,e,i-this.thickness);break;case Ce.type.BOLD_DOUBLE_RIGHT:Ee(t,this.type,n,e,i-this.thickness);break;case Ce.type.THIN_DOUBLE:s=1,a-=this.thickness;break;case Ce.type.NONE:break;default:throw new p("InvalidType",`The provided StaveConnector.type (${this.type}) is invalid.`)}this.type!==Ce.type.BRACE&&this.type!==Ce.type.BOLD_DOUBLE_LEFT&&this.type!==Ce.type.BOLD_DOUBLE_RIGHT&&this.type!==Ce.type.NONE&&t.fillRect(n,e,s,a),this.type===Ce.type.THIN_DOUBLE&&t.fillRect(n-3,e,s,a),t.save(),t.setLineWidth(2),t.setFont(this.textFont);for(let e=0;et.reduce(((t,e)=>t+e),0);function De(t,e,i,s){let n=e;for(let e=i+1;e{e.addToModifierContext(new de);const s=(new Xt).addTickable(e).preFormat(),n=s.getMetrics();return s.setX(t+n.totalLeftPx),t+s.getWidth()+n.totalRightPx+i}),e)}static plotDebugging(t,e,i,s,n,a){const o=i+(a=Object.assign({stavePadding:X.currentMusicFont().lookupMetric("stave.padding")},a)).stavePadding,r=e.contextGaps;t.save(),t.setFont(B.SANS_SERIF,8),r.gaps.forEach((e=>{var i,a,r;i=o+e.x1,a=o+e.x2,r="rgba(100,200,100,0.4)",t.beginPath(),t.setStrokeStyle(r),t.setFillStyle(r),t.setLineWidth(1),t.fillRect(i,s,Math.max(a-i,0),n-s),t.setFillStyle("green"),t.fillText(Math.round(e.x2-e.x1).toString(),o+e.x1,n+12)})),t.setFillStyle("red"),t.fillText(`Loss: ${(e.totalCost||0).toFixed(2)} Shift: ${(e.totalShift||0).toFixed(2)} Gap: ${r.total.toFixed(2)}`,o-20,n+27),t.restore()}static FormatAndDraw(t,e,i,s){let n={auto_beam:!1,align_rests:!1};"object"==typeof s?n=Object.assign(Object.assign({},n),s):"boolean"==typeof s&&(n.auto_beam=s);const a=new Ht(X.TIME4_4).setMode(Ht.Mode.SOFT).addTickables(i),o=n.auto_beam?Oe.applyAndGetBeams(a):[];return(new Ne).joinVoices([a]).formatToStave([a],e,{align_rests:n.align_rests,stave:e}),a.setStave(e).draw(t,e),o.forEach((e=>e.setContext(t).draw())),a.getBoundingBox()}static FormatAndDrawTab(t,e,i,s,n,a,o){let r={auto_beam:a,align_rests:!1};"object"==typeof o?r=Object.assign(Object.assign({},r),o):"boolean"==typeof o&&(r.auto_beam=o);const h=new Ht(X.TIME4_4).setMode(Ht.Mode.SOFT).addTickables(n),l=new Ht(X.TIME4_4).setMode(Ht.Mode.SOFT).addTickables(s),c=r.auto_beam?Oe.applyAndGetBeams(h):[];(new Ne).joinVoices([h]).joinVoices([l]).formatToStave([h,l],i,{align_rests:r.align_rests}),h.draw(t,i),l.draw(t,e),c.forEach((e=>e.setContext(t).draw())),new Ce(i,e).setContext(t).draw()}static AlignRestsToNotes(t,e,i){t.forEach(((s,n)=>{if(m(s)&&s.isRest()){if(s.getTuplet()&&!i)return;const a=s.getGlyph().position.toUpperCase();if("R/4"!==a&&"B/4"!==a)return;if(e||s.getBeam()){const e=s.getKeyProps()[0];if(0===n)e.line=De(t,e.line,n,!1);else if(n>0&&nNe.AlignRestsToNotes(t.getTickables(),e)))}preCalculateMinTotalWidth(t){const e=X.currentMusicFont().lookupMetric("stave.unalignedNotePadding");let i=0,s=0,n=0;const a=[],o=[];if(this.hasMinTotalWidth)return this.minTotalWidth;if(!t)throw new p("BadArgument","'voices' required to run preCalculateMinTotalWidth");this.createTickContexts(t);const{list:r,map:h}=this.tickContexts;this.minTotalWidth=0,r.forEach((e=>{const r=h[e];r.preFormat(),r.getTickables().length{s+=t.getMetrics().width,n+=t.getTicks().value(),a.push(t.getMetrics().width),o.push(t.getTicks().value())}));const l=r.getWidth();this.minTotalWidth+=l})),this.hasMinTotalWidth=!0;const l=s>0?s/a.length:1/a.length,c=ke(a.map((t=>Math.pow(t-l,2)))),d=Math.pow(c/a.length,.5)/l,m=n/o.length,g=ke(o.map((t=>Math.pow(t-m,2)))),b=Math.pow(g/o.length,.5)/m,u=Math.max(b,d)*r.length*e,_=e*i;return this.minTotalWidth+Math.max(_,u)}getMinTotalWidth(){if(!this.hasMinTotalWidth)throw new p("NoMinTotalWidth","Call 'preCalculateMinTotalWidth' or 'preFormat' before calling 'getMinTotalWidth'");return this.minTotalWidth}static getResolutionMultiplier(t){if(!t||!t.length)throw new p("BadArgument","No voices to format");const e=t[0].getTotalTicks();return t.reduce(((t,i)=>{if(!i.getTotalTicks().equals(e))throw new p("TickMismatch","Voices should have same total note duration in ticks.");if(i.getMode()===Ht.Mode.STRICT&&!i.isComplete())throw new p("IncompleteVoice","Voice does not have enough notes.");return Math.max(t,v.LCM(t,i.getResolutionMultiplier()))}),1)}createModifierContexts(t){if(0==t.length)return;const e=Ne.getResolutionMultiplier(t),i=new Map,s=[];t.forEach((t=>{const n=new v(0,e);t.getTickables().forEach((t=>{const e=n.numerator;let a=i.get(t.getStave());if(a||(i.set(t.getStave(),{}),a=i.get(t.getStave())),!(a?a[e]:void 0)){const t=new de;s.push(t),a[e]=t}t.addToModifierContext(a[e]),n.add(t.getTicks())}))})),this.modifierContexts.push({map:i,array:s,resolutionMultiplier:e})}createTickContexts(t){const e=function(t,e,i){if(0==t.length)return{map:{},array:[],list:[],resolutionMultiplier:0};const s={},n=[],a=[],o=Ne.getResolutionMultiplier(t);return t.forEach(((t,r)=>{const h=new v(0,o);t.getTickables().forEach((t=>{const o=h.numerator;if(!s[o]){const t=e({tickID:o});a.push(t),s[o]=t,n.push(o)}i(t,s[o],r),h.add(t.getTicks())}))})),{map:s,array:a,list:n.sort(((t,e)=>t-e)),resolutionMultiplier:o}}(t,(t=>new Xt(t)),((t,e,i)=>e.addTickable(t,i)));this.tickContexts=e;const i=this.tickContexts.array;return i.forEach((t=>{t.tContexts=i})),e}getTickContexts(){return this.tickContexts}preFormat(t=0,e,i,s){const n=this.tickContexts;if(!n)throw new p("NoTickContexts","preFormat requires TickContexts");const{list:a,map:o}=n;this.lossHistory=[],i&&s&&i.forEach((t=>t.setStave(s).preFormat()));let r=0,h=0;this.minTotalWidth=0;let l=0;a.forEach((t=>{const e=o[t];e.preFormat();const i=e.getWidth();this.minTotalWidth+=i;const s=e.getMaxTicks().value();l+=s;const n=e.getMetrics();r=r+h+n.totalLeftPx,e.setX(r),h=i-n.totalLeftPx}));const{globalSoftmax:c,softmaxFactor:d,maxIterations:m}=this.formatterOptions,g=ke(a.map((t=>Math.pow(d,o[t].getMaxTicks().value()/l))));if(this.minTotalWidth=r+h,this.hasMinTotalWidth=!0,t<=0)return this.evaluate();const b=o[a[0]],u=o[a[a.length-1]];function _(t){return a.map(((e,i)=>{const s=o[e],n=s.getTickablesByVoice();let r;if(i>0){const e=o[a[i-1]];for(let h=i-1;h>=0;h--){const i=o[a[h]].getTickablesByVoice(),m=[];if(Object.keys(n).forEach((t=>{i[t]&&m.push(t)})),m.length>0){let a=0,o=1/0,h=0;if(m.forEach((t=>{const e=i[t].getTicks().value();e>a&&(r=i[t],a=e);const s=n[t],h=s.getX()-(s.getMetrics().modLeftPx+s.getMetrics().leftDisplacedHeadPx),l=i[t].getMetrics(),c=i[t].getX()+l.notePx+l.modRightPx+l.rightDisplacedHeadPx;o=Math.min(o,h-c)})),o=Math.min(o,s.getX()-(e.getX()+.05*t)),c){const e=l;h=Math.pow(d,a/e)/g*t}else void 0!==r&&(h=r.getVoice().softmax(a)*t);return{expectedDistance:h,maxNegativeShiftPx:o,fromTickable:r}}}}return{expectedDistance:0,fromTickablePx:0,maxNegativeShiftPx:0}}))}function x(t){const e=S/2;let i=0;return a.forEach(((s,n)=>{const a=o[s];if(n>0){const e=a.getX(),s=t[n],o=f(s.fromTickable).getX()+s.expectedDistance-(e+i);let r=0;o>0?i+=o:o<0&&(r=Math.min(s.maxNegativeShiftPx,Math.abs(o)),i+=-r),a.setX(e+i)}a.getCenterAlignedTickables().forEach((t=>{t.setCenterXShift(e-a.getX())}))})),u.getX()-b.getX()}const S=t-u.getMetrics().notePx-u.getMetrics().totalRightPx-b.getMetrics().totalLeftPx,y=X.currentMusicFont(),T=y.lookupMetric("stave.endPaddingMin"),w=y.lookupMetric("stave.endPaddingMax"),v=y.lookupMetric("stave.padding");let E=S;const C=_(E);let k=x(C);if(1===a.length)return 0;const D=((t,e)=>{let i=t/2;if(e.length>1)for(let t=1;t{let e=0;const i=u&&u.getMaxTickable();if(i){const s=i.getVoice();if(s.getTicksUsed().value()>s.getTotalTicks().value())return 2*wM&&B>0||k+A1;)E-=k-M,A=N(E),P=A-(w-T),k=x(_(E)),B--;return this.justifyWidth=t,this.evaluate()}evaluate(){const t=this.tickContexts,e=this.justifyWidth;this.contextGaps={total:0,gaps:[]},t.list.forEach(((e,i)=>{if(0===i)return;const s=t.list[i-1],n=t.map[s],a=t.map[e],o=n.getMetrics(),r=a.getMetrics(),h=n.getX()+o.notePx+o.totalRightPx,l=a.getX()-r.totalLeftPx,c=l-h;this.contextGaps.total+=c,this.contextGaps.gaps.push({x1:h,x2:l}),a.getFormatterMetrics().freedom.left=c,n.getFormatterMetrics().freedom.right=c})),this.durationStats={};const i=this.durationStats;this.voices.forEach((t=>{t.getTickables().forEach(((t,s,n)=>{const a=t.getTicks().clone().simplify().toString(),o=t.getMetrics(),r=t.getFormatterMetrics(),h=t.getX()+o.notePx+o.modRightPx+o.rightDisplacedHeadPx;let l=0;if(s{t.getTickables().forEach((t=>{const e=t.getTicks().clone().simplify().toString(),n=t.getFormatterMetrics();n.space.mean=i[e].mean,n.duration=e,n.iterations+=1,n.space.deviation=n.space.used-n.space.mean,s+=Math.pow(n.space.deviation,2)}))})),this.totalCost=Math.sqrt(s),this.lossHistory.push(this.totalCost),this.totalCost}tune(t){var e;const i=this.tickContexts;if(!i)return 0;const s=null!==(e=null==t?void 0:t.alpha)&&void 0!==e?e:.5;let n=0;return this.totalShift=0,i.list.forEach(((t,e,a)=>{const o=i.map[t],r=e>0?i.map[a[e-1]]:void 0,h=et.getFormatterMetrics().space.deviation)));l>0?n=-Math.min(o.getFormatterMetrics().freedom.right,Math.abs(l)):l<0&&(n=h?Math.min(h.getFormatterMetrics().freedom.right,Math.abs(l)):0),n*=s,this.totalShift+=n})),this.evaluate()}postFormat(){return this.modifierContexts.forEach((t=>{t.array.forEach((t=>t.postFormat()))})),this.tickContexts.list.forEach((t=>{this.tickContexts.map[t].postFormat()})),this}joinVoices(t){return this.createModifierContexts(t),this.hasMinTotalWidth=!1,this}format(t,e,i){const s=Object.assign({align_rests:!1},i);this.voices=t;const n=this.formatterOptions.softmaxFactor;return n&&this.voices.forEach((t=>t.setSoftmaxFactor(n))),this.alignRests(t,s.align_rests),this.createTickContexts(t),this.preFormat(e,s.context,t,s.stave),s.stave&&this.postFormat(),this}formatToStave(t,e,i){const s=Object.assign({context:e.getContext()},i),n=e.getNoteEndX()-e.getNoteStartX()-ve.defaultPadding;return function(...t){Ne.DEBUG&&x("Vex.Flow.Formatter",t)}("Formatting voices to width: ",n),this.format(t,n,s)}getTickContext(t){var e;return null===(e=this.tickContexts)||void 0===e?void 0:e.map[t]}}var Ae;Ne.DEBUG=!1,function(t){t[t.BOTTOM=-1]="BOTTOM",t[t.TOP=1]="TOP"}(Ae||(Ae={}));class Pe extends O{constructor(t,e={}){if(super(),this.numerator_glyphs=[],this.denom_glyphs=[],!t||!t.length)throw new p("BadArguments","No notes provided for tuplet.");this.options=e,this.notes=t,this.num_notes=null!=this.options.num_notes?this.options.num_notes:t.length,this.options.beats_occupied&&this.beatsOccupiedDeprecationWarning(),this.notes_occupied=this.options.notes_occupied||this.options.beats_occupied||2,null!=this.options.bracketed?this.bracketed=this.options.bracketed:this.bracketed=t.some((t=>!t.hasBeam())),this.ratioed=null!=this.options.ratioed?this.options.ratioed:Math.abs(this.notes_occupied-this.num_notes)>1,this.point=X.currentMusicFont().lookupMetric("digits.tupletPoint"),this.y_pos=16,this.x_pos=100,this.width=200,this.setTupletLocation(this.options.location||Pe.LOCATION_TOP),Ne.AlignRestsToNotes(t,!0,!0),this.resolveGlyphs(),this.attach()}static get CATEGORY(){return u.Tuplet}static get LOCATION_TOP(){return Ae.TOP}static get LOCATION_BOTTOM(){return Ae.BOTTOM}static get NESTING_OFFSET(){return 15}static get metrics(){return X.currentMusicFont().getMetrics().glyphs.tuplet}attach(){for(let t=0;t=1;)this.numerator_glyphs.unshift(new Q("timeSig"+t%10,this.point)),t=parseInt((t/10).toString(),10);for(this.denom_glyphs=[],t=this.notes_occupied;t>=1;)this.denom_glyphs.unshift(new Q("timeSig"+t%10,this.point)),t=parseInt((t/10).toString(),10)}getNestedTupletCount(){const t=this.location,e=this.notes[0];let i=n(e,t),s=n(e,t);function n(t,e){return t.getTupletStack().filter((t=>t.location===e)).length}return this.notes.forEach((e=>{const a=n(e,t);i=a>i?a:i,s=a0&&(s=Math.min(a,s))}}}else{let t=Pe.metrics.bottomLine;this.notes.forEach((e=>{const i=e.getModifierContext();i&&(t=Math.max(t,i.getState().text_line+1))})),s=i.checkStave().getYForLine(t)+Pe.metrics.noteHeadOffset;for(let t=0;ts&&(s=e)}}return s+t+e}draw(){const t=this.checkContext();this.setRendered();const e=this.notes[0],i=this.notes[this.notes.length-1];this.bracketed?(this.x_pos=e.getTieLeftX()-5,this.width=i.getTieRightX()-this.x_pos+5):(this.x_pos=e.getStemX(),this.width=i.getStemX()-this.x_pos),this.y_pos=this.getYPosition();const s=(t,e)=>t+f(e.getMetrics().width);let n=this.numerator_glyphs.reduce(s,0);this.ratioed&&(n=this.denom_glyphs.reduce(s,n),n+=.32*this.point);const a=this.x_pos+this.width/2-n/2;if(this.bracketed){const e=this.width/2-n/2-5;e>0&&(t.fillRect(this.x_pos,this.y_pos,e,1),t.fillRect(this.x_pos+this.width/2+n/2+5,this.y_pos,e,1),t.fillRect(this.x_pos,this.y_pos+(this.location===Pe.LOCATION_BOTTOM?1:0),1,10*this.location),t.fillRect(this.x_pos+this.width,this.y_pos+(this.location===Pe.LOCATION_BOTTOM?1:0),1,10*this.location))}const o=X.currentMusicFont().lookupMetric("digits.shiftY",0);let r=0;if(this.numerator_glyphs.forEach((e=>{e.render(t,a+r,this.y_pos+this.point/3-2+o),r+=f(e.getMetrics().width)})),this.ratioed){const e=a+r+.16*this.point,i=.06*this.point;t.beginPath(),t.arc(e,this.y_pos-.08*this.point,i,0,2*Math.PI,!1),t.closePath(),t.fill(),t.beginPath(),t.arc(e,this.y_pos+.12*this.point,i,0,2*Math.PI,!1),t.closePath(),t.fill(),r+=.32*this.point,this.denom_glyphs.forEach((e=>{e.render(t,a+r,this.y_pos+this.point/3-2+o),r+=f(e.getMetrics().width)}))}}}function Me(t){let e=0;return t.forEach((t=>{t.keyProps&&t.keyProps.forEach((t=>{e+=t.line-3}))})),e>=0?st.DOWN:st.UP}const Be="L",Fe="R",Re="B";class Oe extends O{constructor(t,e=!1){if(super(),this.slope=0,this.y_shift=0,this.forcedPartialDirections={},!t||0===t.length)throw new p("BadArguments","No notes provided for beam.");if(1===t.length)throw new p("BadArguments","Too few notes for beam.");if(this.ticks=t[0].getIntrinsicTicks(),this.ticks>=X.durationToTicks("4"))throw new p("BadArguments","Beams can only be applied to notes shorter than a quarter note.");let i,s;for(this.stem_direction=st.UP,i=0;it+e.getStemDirection()),0);n=e>-1?st.UP:st.DOWN}for(i=0;i(new v).parse(t)));{const e=parseInt(t.split("/")[0],10),i=parseInt(t.split("/")[1],10);if(e%3==0)return[new v(3,i)];if(i>4)return[new v(2,i)];if(i<=4)return[new v(1,i)]}return[new v(1,4)]}static applyAndGetBeams(t,e,i){return Oe.generateBeams(t.getTickables(),{groups:i,stem_direction:e})}static generateBeams(t,e={}){e.groups&&e.groups.length||(e.groups=[new v(2,8)]);const i=e.groups.map((t=>{if(!t.multiply)throw new p("InvalidBeamGroups","The beam groups must be an array of Vex.Flow.Fractions");return t.clone().multiply(X.RESOLUTION,1)})),s=t;let n=0,a=[],o=[];function r(){i.length-1>n?n+=1:n=0}!function(){let t=[],e=new v(0,1);s.forEach((s=>{if(t=[],s.shouldIgnoreTicks())return a.push(o),void(o=t);o.push(s);const h=i[n].clone(),l=(c=o,c.reduce(((t,e)=>e.getTicks().clone().add(t)),new v(0,1))).add(e);var c;const d=X.durationToNumber(s.getDuration())<8;if(d&&s.getTuplet()&&(h.numerator*=2),l.greaterThan(h)){if(!d){const e=o.pop();e&&t.push(e)}a.push(o);do{e=l.subtract(i[n]),r()}while(e.greaterThanEquals(i[n]));o=t}else l.equals(h)&&(a.push(o),e=new v(0,1),o=t,r())})),o.length>0&&a.push(o)}(),function(){const t=[];a.forEach((i=>{let s=[];i.forEach(((i,n,a)=>{const o=0===n||n===a.length-1,r=a[n-1],h=!e.beam_rests&&i.isRest(),l=e.beam_rests&&e.beam_middle_only&&i.isRest()&&o;let c=!1;if(e.maintain_stem_directions&&r&&!i.isRest()&&!r.isRest()){const t=r.getStemDirection();c=i.getStemDirection()!==t}const d=parseInt(i.getDuration(),10)<8;h||l||c||d?(s.length>0&&t.push(s),s=c?[i]:[]):s.push(i)})),s.length>0&&t.push(s)})),a=t}(),a.forEach((t=>{let i;if(e.maintain_stem_directions){const e=function(t){for(let e=0;e{t.setStemDirection(e)}))}(t,i)}));const h=a.filter((t=>{if(t.length>1){let e=!0;return t.forEach((t=>{t.getIntrinsicTicks()>=X.durationToTicks("4")&&(e=!1)})),e}return!1})),l=function(){const t=[];return a.forEach((e=>{let i;e.forEach((e=>{const s=e.getTuplet();s&&i!==s&&(i=s,t.push(i))}))})),t}(),c=[];return h.forEach((t=>{const i=new Oe(t);e.show_stemlets&&(i.render_options.show_stemlets=!0),e.secondary_breaks&&(i.render_options.secondary_break_ticks=X.durationToTicks(e.secondary_breaks)),!0===e.flat_beams&&(i.render_options.flat_beams=!0,i.render_options.flat_beam_offset=e.flat_beam_offset),c.push(i)})),l.forEach((t=>{const e=t.notes[0].stem_direction===st.DOWN?Ae.BOTTOM:Ae.TOP;t.setTupletLocation(e);let i=!1;for(let e=0;et.getGlyph().beam_count)).reduce(((t,e)=>e>t?e:t))}breakSecondaryAt(t){return this.break_on_indices=t,this}setPartialBeamSideAt(t,e){return this.forcedPartialDirections[t]=e,this}unsetPartialBeamSideAt(t){return delete this.forcedPartialDirections[t],this}getSlopeY(t,e,i,s){return i+(t-e)*s}calculateSlope(){const{notes:t,stem_direction:e,render_options:{max_slope:i,min_slope:s,slope_iterations:n,slope_cost:a}}=this,o=t[0],r=function(t,e){const i=t.getStemExtents().topY,s=t.getStemX();return(e.getStemExtents().topY-i)/(e.getStemX()-s)}(o,t[t.length-1]),h=(i-s)/n;let l=Number.MAX_VALUE,c=0,d=0;for(let n=s;n<=i;n+=h){let i=0,s=0;for(let a=1;an)&&(h=n,o=Math.min(...s.getYs()),r=s.getBeamCount())}let l=a/t.length;const c=s+r*(1.5*i),d=o+c*-e;e===st.DOWN&&ld&&(l=o-c),n?(e===st.DOWN&&l>n||e===st.UP&&l=8&&(c=-1!==this.break_on_indices.indexOf(h),this.render_options.secondary_break_ticks&&r>=this.render_options.secondary_break_ticks&&(r=0,c=!0));const d=l.getIntrinsicTicks(){const i=e.getStem();if(i){const s=e.getStemX();i.setNoteHeadXBounds(s,s),i.setContext(t).draw()}}),this)}drawBeamLines(t){const e=["4","8","16","32","64"],i=this.notes[0];let s=this.getBeamYToDraw();const n=i.getStemX(),a=this.render_options.beam_width*this.stem_direction;for(let i=0;i0||!0===e;return!e||n>0||(this.pos=s),o?this.matchSuccess():this.matchFail(s),{success:o,results:i,numMatches:n}}expectZeroOrMore(t){return this.expectOneOrMore(t,!0)}expect(t){if(Ue("Evaluating rule function:",t),!t)throw new p("Invalid rule function");let e;const i=t.bind(this.grammar)();if(i.token)e=this.matchToken(i.token,!0===i.noSpace),e.success&&(this.pos+=e.incrementPos);else{if(!i.expect)throw Ue(i),new p("Bad grammar! No `token` or `expect` property "+i);e=i.oneOrMore?this.expectOneOrMore(i):i.zeroOrMore?this.expectZeroOrMore(i):this.expectOne(i)}const s=[];return e.matches=s,e.results&&e.results.forEach((t=>s.push(Ye(t)))),i.run&&e.success&&i.run({matches:s}),e}}function ze(...t){Je.DEBUG&&x("Vex.Flow.EasyScore",t)}He.DEBUG=!1;class je{constructor(t){this.builder=t}begin(){return this.LINE}LINE(){return{expect:[this.PIECE,this.PIECES,this.EOL]}}PIECE(){return{expect:[this.CHORDORNOTE,this.PARAMS],run:()=>this.builder.commitPiece()}}PIECES(){return{expect:[this.COMMA,this.PIECE],zeroOrMore:!0}}PARAMS(){return{expect:[this.DURATION,this.TYPE,this.DOTS,this.OPTS]}}CHORDORNOTE(){return{expect:[this.CHORD,this.SINGLENOTE],or:!0}}CHORD(){return{expect:[this.LPAREN,this.NOTES,this.RPAREN],run:t=>this.builder.addChord(t.matches[1])}}NOTES(){return{expect:[this.NOTE],oneOrMore:!0}}NOTE(){return{expect:[this.NOTENAME,this.ACCIDENTAL,this.OCTAVE]}}SINGLENOTE(){return{expect:[this.NOTENAME,this.ACCIDENTAL,this.OCTAVE],run:t=>{const e=t;this.builder.addSingleNote(e.matches[0],e.matches[1],e.matches[2])}}}ACCIDENTAL(){return{expect:[this.MICROTONES,this.ACCIDENTALS],maybe:!0,or:!0}}DOTS(){return{expect:[this.DOT],zeroOrMore:!0,run:t=>this.builder.setNoteDots(t.matches)}}TYPE(){return{expect:[this.SLASH,this.MAYBESLASH,this.TYPES],maybe:!0,run:t=>this.builder.setNoteType(t.matches[2])}}DURATION(){return{expect:[this.SLASH,this.DURATIONS],maybe:!0,run:t=>this.builder.setNoteDuration(t.matches[1])}}OPTS(){return{expect:[this.LBRACKET,this.KEYVAL,this.KEYVALS,this.RBRACKET],maybe:!0}}KEYVALS(){return{expect:[this.COMMA,this.KEYVAL],zeroOrMore:!0}}KEYVAL(){return{expect:[this.KEY,this.EQUALS,this.VAL],run:t=>this.builder.addNoteOption(t.matches[0],t.matches[2].slice(1,-1))}}VAL(){return{expect:[this.SVAL,this.DVAL],or:!0}}KEY(){return{token:"[a-zA-Z][a-zA-Z0-9]*"}}DVAL(){return{token:'["][^"]*["]'}}SVAL(){return{token:"['][^']*[']"}}NOTENAME(){return{token:"[a-gA-G]"}}OCTAVE(){return{token:"[0-9]+"}}ACCIDENTALS(){return{token:"bb|b|##|#|n"}}MICROTONES(){return{token:"bbs|bss|bs|db|d|\\+\\+-|\\+-|\\+\\+|\\+|k|o"}}DURATIONS(){return{token:"[0-9whq]+"}}TYPES(){return{token:"[rRsSmMhHgG]"}}LPAREN(){return{token:"[(]"}}RPAREN(){return{token:"[)]"}}COMMA(){return{token:"[,]"}}DOT(){return{token:"[.]"}}SLASH(){return{token:"[/]"}}MAYBESLASH(){return{token:"[/]?"}}EQUALS(){return{token:"[=]"}}LBRACKET(){return{token:"\\["}}RBRACKET(){return{token:"\\]"}}EOL(){return{token:"$"}}}class Xe{constructor(t){this.chord=[],this.dots=0,this.options={},this.duration=t}}class Ve{constructor(t){this.commitHooks=[],this.factory=t,this.reset()}reset(t){this.options=Object.assign({stem:"auto",clef:"treble"},t),this.elements={notes:[],accidentals:[]},this.rollingDuration="8",this.resetPiece()}getFactory(){return this.factory}getElements(){return this.elements}addCommitHook(t){this.commitHooks.push(t)}resetPiece(){ze("resetPiece"),this.piece=new Xe(this.rollingDuration)}setNoteDots(t){ze("setNoteDots:",t),t&&(this.piece.dots=t.length)}setNoteDuration(t){ze("setNoteDuration:",t),this.rollingDuration=this.piece.duration=t||this.rollingDuration}setNoteType(t){ze("setNoteType:",t),t&&(this.piece.type=t)}addNoteOption(t,e){ze("addNoteOption: key:",t,"value:",e),this.piece.options[t]=e}addNote(t,e,i){ze("addNote:",t,e,i),this.piece.chord.push({key:t,accid:e,octave:i})}addSingleNote(t,e,i){ze("addSingleNote:",t,e,i),this.addNote(t,e,i)}addChord(t){ze("startChord"),"object"!=typeof t[0]?this.addSingleNote(t[0]):t.forEach((t=>{t&&this.addNote(...t)})),ze("endChord")}commitPiece(){ze("commitPiece");const{factory:t}=this;if(!t)return;const e=Object.assign(Object.assign({},this.options),this.piece.options),i=f(e.stem,"BadArguments","options.stem is not defined").toLowerCase(),s=f(e.clef,"BadArguments","options.clef is not defined").toLowerCase(),{chord:n,duration:a,dots:o,type:r}=this.piece,h=tt.accidentals,l=n.map((t=>{var e;return t.key+(h.includes(null!==(e=t.accid)&&void 0!==e?e:"")?t.accid:"")+"/"+t.octave})),c="auto"===i,d="g"==(null==r?void 0:r.toLowerCase())?t.GhostNote({duration:a,dots:o}):t.StaveNote({keys:l,duration:a,dots:o,type:r,clef:s,auto_stem:c});c||d.setStemDirection("up"===i?st.UP:st.DOWN);const m=[];n.forEach(((e,i)=>{const s=e.accid;if("string"==typeof s){const e=t.Accidental({type:s});d.addModifier(e,i),m.push(e)}else m.push(void 0)}));for(let t=0;tt(e,d,this))),this.elements.notes.push(d),this.elements.accidentals.push(m),this.resetPiece()}}function Ke(t,e){void 0!==t.id&&e.setAttribute("id",t.id)}const $e=/\s*,\s*/;function qe(t,e){void 0!==t.class&&t.class.split($e).forEach((t=>e.addClass(t)))}class Je{constructor(t={}){this.defaults={clef:"treble",time:"4/4",stem:"auto"},this.setOptions(t)}set(t){return this.defaults=Object.assign(Object.assign({},this.defaults),t),this}setOptions(t){var e,i;const s=t.factory,n=null!==(e=t.builder)&&void 0!==e?e:new Ve(s);return this.options=Object.assign(Object.assign({commitHooks:[Ke,qe,_t.easyScoreHook,Rt.easyScoreHook],throwOnError:!1},t),{factory:s,builder:n}),this.factory=s,this.builder=n,this.grammar=new je(this.builder),this.parser=new He(this.grammar),null===(i=this.options.commitHooks)||void 0===i||i.forEach((t=>this.addCommitHook(t))),this}setContext(t){return this.factory.setContext(t),this}parse(t,e={}){this.builder.reset(e);const i=this.parser.parse(t);if(!i.success&&this.options.throwOnError)throw ze(i),new p("Error parsing line: "+t);return i}beam(t,e){return this.factory.Beam({notes:t,options:e}),t}tuplet(t,e){return this.factory.Tuplet({notes:t,options:e}),t}notes(t,e={}){return e=Object.assign({clef:this.defaults.clef,stem:this.defaults.stem},e),this.parse(t,e),this.builder.getElements().notes}voice(t,e={}){return e=Object.assign({time:this.defaults.time},e),this.factory.Voice(e).addTickables(t)}addCommitHook(t){this.builder.addCommitHook(t)}}Je.DEBUG=!1;const Qe="Ghost note must have valid initialization data to identify duration.";class Ze extends Lt{static get CATEGORY(){return u.GhostNote}constructor(t){if(!t)throw new p("BadArguments",Qe);let e;if("string"==typeof t)e={duration:t};else{if("object"!=typeof t)throw new p("BadArguments",Qe);e=t}super(e),this.setWidth(0)}isRest(){return!0}setStave(t){return super.setStave(t),this}addToModifierContext(t){return this}preFormat(){return this.preFormatted=!0,this}draw(){this.setRendered();for(let t=0;t=oi.type.TEXT&&t<=oi.type.MIXED&&(this.type=t),this}setCustomText(t,e){return this.custom_depress_text=t||"",this.custom_release_text=e||"",this}setLine(t){return this.line=t,this}drawBracketed(){const t=this.checkContext();let e,i,s=!1;this.notes.forEach(((n,a,o)=>{s=!s;const r=n.getAbsoluteX(),h=n.checkStave().getYForBottomText(this.line+3);if(r{e=!e;const s=i.checkStave(),n=i.getAbsoluteX(),a=s.getYForBottomText(this.line+3),o=X.currentMusicFont().lookupMetric(`pedalMarking.${e?"down":"up"}.point`);let r=0;e?this.custom_depress_text?(r=t.measureText(this.custom_depress_text).width,t.fillText(this.custom_depress_text,n-r/2,a)):ai("pedal_depress",t,n,a,o):this.custom_release_text?(r=t.measureText(this.custom_release_text).width,t.fillText(this.custom_release_text,n-r/2,a)):ai("pedal_release",t,n,a,o)}))}draw(){const t=this.checkContext();this.setRendered(),t.save(),t.setStrokeStyle(this.render_options.color),t.setFillStyle(this.render_options.color),t.setFont(this.textFont),function(...t){oi.DEBUG&&x("Vex.Flow.PedalMarking",t)}("Rendering Pedal Marking"),this.type===oi.type.BRACKET||this.type===oi.type.MIXED?(t.setLineWidth(this.render_options.bracket_line_width),this.drawBracketed()):this.type===oi.type.TEXT&&this.drawText(),t.restore()}}oi.DEBUG=!1,oi.TEXT_FONT={family:B.SERIF,size:12,weight:D.BOLD,style:N.ITALIC},oi.GLYPHS={pedal_depress:{code:"keyboardPedalPed",x_shift:-10,y_shift:0},pedal_release:{code:"keyboardPedalUp",x_shift:-2,y_shift:3}},oi.type={TEXT:1,BRACKET:2,MIXED:3},oi.typeString={text:oi.type.TEXT,bracket:oi.type.BRACKET,mixed:oi.type.MIXED};const ri={1:"repeat1Bar",2:"repeat2Bars",4:"repeat4Bars",slash:"repeatBarSlash"};class hi extends ti{static get CATEGORY(){return u.RepeatNote}constructor(t,e,i){super(void 0,Object.assign({duration:"q",align_center:"slash"!==t},e),i);const s=new Q(ri[t]||"repeat1Bar",X.currentMusicFont().lookupMetric("repeatNote.point",40),{category:"repeatNote"});this.setGlyph(s)}}function li(t,e,i,s,n,a,o){t.beginPath(),t.moveTo(e,i),t.lineTo(s,n),t.lineTo(a,o),t.lineTo(e,i),t.closePath(),t.fill()}class ci extends O{constructor(t){super(),this.setNotes(t),this.text="",this.resetFont(),this.render_options={padding_left:4,padding_right:3,line_width:1,line_dash:void 0,rounded_end:!0,color:void 0,draw_start_arrow:!1,draw_end_arrow:!1,arrowhead_length:10,arrowhead_angle:Math.PI/8,text_position_vertical:ci.TextVerticalPosition.TOP,text_justification:ci.TextJustification.CENTER}}static get CATEGORY(){return u.StaveLine}setText(t){return this.text=t,this}setNotes(t){if(!t.first_note&&!t.last_note)throw new p("BadArguments","Notes needs to have either first_note or last_note set.");if(t.first_indices||(t.first_indices=[0]),t.last_indices||(t.last_indices=[0]),t.first_indices.length!==t.last_indices.length)throw new p("BadArguments","Connected notes must have same number of indices.");return this.notes=t,this.first_note=t.first_note,this.first_indices=t.first_indices,this.last_note=t.last_note,this.last_indices=t.last_indices,this}applyLineStyle(){const t=this.checkContext(),e=this.render_options;e.line_dash&&t.setLineDash(e.line_dash),e.line_width&&t.setLineWidth(e.line_width),e.rounded_end?t.setLineCap("round"):t.setLineCap("square")}applyFontStyle(){const t=this.checkContext();t.setFont(this.textFont);const e=this.render_options.color;e&&(t.setStrokeStyle(e),t.setFillStyle(e))}drawArrowLine(t,e,i){const s=this.render_options.draw_start_arrow&&this.render_options.draw_end_arrow,n=e.x,a=e.y,o=i.x,r=i.y,h=Math.sqrt((o-n)*(o-n)+(r-a)*(r-a)),l=(h-this.render_options.arrowhead_length/3)/h;let c,d,m,g;this.render_options.draw_end_arrow||s?(c=Math.round(n+(o-n)*l),d=Math.round(a+(r-a)*l)):(c=o,d=r),this.render_options.draw_start_arrow||s?(m=n+(o-n)*(1-l),g=a+(r-a)*(1-l)):(m=n,g=a),this.render_options.color&&(t.setStrokeStyle(this.render_options.color),t.setFillStyle(this.render_options.color)),t.beginPath(),t.moveTo(m,g),t.lineTo(c,d),t.stroke(),t.closePath();const b=Math.atan2(r-a,o-n),u=Math.abs(this.render_options.arrowhead_length/Math.cos(this.render_options.arrowhead_angle));let p,_,f,x,S,y;(this.render_options.draw_end_arrow||s)&&(p=b+Math.PI+this.render_options.arrowhead_angle,f=o+Math.cos(p)*u,x=r+Math.sin(p)*u,_=b+Math.PI-this.render_options.arrowhead_angle,S=o+Math.cos(_)*u,y=r+Math.sin(_)*u,li(t,f,x,o,r,S,y)),(this.render_options.draw_start_arrow||s)&&(p=b+this.render_options.arrowhead_angle,f=n+Math.cos(p)*u,x=a+Math.sin(p)*u,_=b-this.render_options.arrowhead_angle,S=n+Math.cos(_)*u,y=a+Math.sin(_)*u,li(t,f,x,n,a,S,y))}draw(){const t=this.checkContext();this.setRendered();const e=this.first_note,i=this.last_note,s=this.render_options;t.save(),this.applyLineStyle();let n={x:0,y:0},a={x:0,y:0};this.first_indices.forEach(((o,r)=>{const h=this.last_indices[r];n=e.getModifierStartXY(2,o),a=i.getModifierStartXY(1,h);const l=n.y>a.y;n.x+=e.getMetrics().modRightPx+s.padding_left,a.x-=i.getMetrics().modLeftPx+s.padding_right;const c=e.getGlyph().getWidth();e.getKeyProps()[o].displaced&&1===e.getStemDirection()&&(n.x+=c+s.padding_left);i.getKeyProps()[h].displaced&&-1===i.getStemDirection()&&(a.x-=c+s.padding_right),n.y+=l?-3:1,a.y+=l?2:0,this.drawArrowLine(t,n,a)})),t.restore();const o=t.measureText(this.text).width,r=s.text_justification;let h=0;if(r===ci.TextJustification.LEFT)h=n.x;else if(r===ci.TextJustification.CENTER){h=(a.x-n.x)/2+n.x-o/2}else r===ci.TextJustification.RIGHT&&(h=a.x-o);let l=0;const c=s.text_position_vertical;return c===ci.TextVerticalPosition.TOP?l=e.checkStave().getYForTopText():c===ci.TextVerticalPosition.BOTTOM&&(l=e.checkStave().getYForBottomText(X.TEXT_HEIGHT_OFFSET_HACK)),t.save(),this.applyFontStyle(),t.fillText(this.text,h,l),t.restore(),this}}ci.TEXT_FONT=Object.assign({},O.TEXT_FONT),ci.TextVerticalPosition={TOP:1,BOTTOM:2},ci.TextJustification=ne;class di extends O{constructor(t={}){super(),this.setOptions(t),this.parts=[]}static get CATEGORY(){return u.System}setOptions(t={}){if(!t.factory)throw new p("NoFactory","System.setOptions(options) requires a factory.");this.factory=t.factory,this.options=Object.assign(Object.assign({factory:this.factory,x:10,y:10,width:500,spaceBetweenStaves:12,autoWidth:!1,noJustification:!1,debugFormatter:!1,formatIterations:0,noPadding:!1},t),{details:Object.assign({alpha:.5},t.details),formatOptions:Object.assign({},t.formatOptions)}),!1===this.options.noJustification&&void 0===t.width&&(this.options.autoWidth=!0)}setContext(t){return super.setContext(t),this.factory.setContext(t),this}addConnector(t="double"){return this.connector=this.factory.StaveConnector({top_stave:this.parts[0].stave,bottom_stave:this.parts[this.parts.length-1].stave,type:t}),this.connector}addStave(t){var e;const i=Object.assign({left_bar:!1},t.options),s=null!==(e=t.stave)&&void 0!==e?e:this.factory.Stave({x:this.options.x,y:this.options.y,width:this.options.width,options:i}),n=Object.assign(Object.assign({stave:s,spaceAbove:0,spaceBelow:0,debugNoteMetrics:!1,noJustification:!1},t),{options:i}),a=this.getContext();return n.voices.forEach((t=>t.setContext(a).setStave(s).getTickables().forEach((t=>t.setStave(s))))),this.parts.push(n),s}format(){const t=this.options.details;let e=0;const i=new Ne(t);this.formatter=i;let s=this.options.y,n=0,a=[],o=[];const r=[];this.parts.forEach((t=>{s+=t.stave.space(t.spaceAbove),t.stave.setY(s),i.joinVoices(t.voices),s+=t.stave.space(t.spaceBelow),s+=t.stave.space(this.options.spaceBetweenStaves),t.debugNoteMetrics&&(r.push({y:s,voice:t.voices[0]}),s+=15),a=a.concat(t.voices),o=o.concat(t.stave),n=Math.max(n,t.stave.getNoteStartX())})),this.parts.forEach((t=>t.stave.setNoteStartX(n))),this.options.autoWidth?(e=i.preCalculateMinTotalWidth(a),this.parts.forEach((t=>{t.stave.setWidth(e+ve.rightPadding+(n-this.options.x))}))):e=this.options.noPadding?this.options.width-(n-this.options.x):this.options.width-(n-this.options.x)-ve.defaultPadding,i.format(a,this.options.noJustification?0:e,this.options.formatOptions),i.postFormat();for(let e=0;e{e.voice.getTickables().forEach((i=>yt.plotMetrics(t,i,e.y)))}))}}class mi extends Lt{constructor(t,e=!1){super(t),this.glyphs=[],this.greatestString=()=>this.positions.map((t=>t.str)).reduce(((t,e)=>t>e?t:e)),this.leastString=()=>this.positions.map((t=>t.str)).reduce(((t,e)=>tthis.width}setStave(t){super.setStave(t);const e=t.getContext();if(this.setContext(e),e){this.width=0;for(let t=0;ti.width),this.width=Math.max(i.getWidth(),this.width)}this.glyph.getWidth=()=>this.width}const i=this.positions.map((({str:e})=>t.getYForLine(Number(e)-1)));return this.setYs(i),this.stem&&this.stem.setYBounds(this.getStemY(),this.getStemY()),this}getPositions(){return this.positions}getModifierStartXY(t,e){if(!this.preFormatted)throw new p("UnformattedNote","Can't call GetModifierStartXY on an unformatted note");if(0===this.ys.length)throw new p("NoYValues","No Y-Values calculated for this note.");let i=0;if(t===Z.Position.LEFT)i=-2;else if(t===Z.Position.RIGHT)i=this.width+2;else if(t===Z.Position.BELOW||t===Z.Position.ABOVE){i=this.glyph.getWidth()/2}return{x:this.getAbsoluteX()+i,y:this.ys[e]}}getLineForRest(){return Number(this.positions[0].str)}preFormat(){this.preFormatted||(this.modifierContext&&this.modifierContext.preFormat(),this.preFormatted=!0)}getStemX(){return this.getCenterGlyphX()}getStemY(){const t=this.checkStave().getNumLines()-.5,e=st.UP===this.stem_direction?-.5:t;return this.checkStave().getYForLine(e)}getStemExtents(){return this.checkStem().getExtents()}drawFlag(){var t;const{beam:e,glyph:i,render_options:{draw_stem:s}}=this,n=this.checkContext(),a=null==e&&s;if(i.flag&&a){const e=this.getStemX(),i=this.getStemDirection()===st.DOWN?this.getStemY()-this.checkStem().getHeight()-(this.glyph?this.glyph.stem_down_extension:0):this.getStemY()-this.checkStem().getHeight()+(this.glyph?this.glyph.stem_up_extension:0);null===(t=this.flag)||void 0===t||t.render(n,e,i)}}drawModifiers(){this.modifiers.forEach((t=>{r(t)&&!this.render_options.draw_dots||(t.setContext(this.getContext()),t.drawWithStyle())}))}drawStemThrough(){const t=this.getStemX(),e=this.getStemY(),i=this.checkContext(),s=this.render_options.draw_stem,n=this.render_options.draw_stem_through_stave;if(s&&n){const s=function(t,e,i,s){const n=1!==s,a=-1!==s,o=i.getSpacingBetweenLines(),r=i.getNumLines(),h=[];return e.forEach((e=>{const l=e.indexOf(r)>-1,c=e.indexOf(1)>-1;if(n&&c||a&&l)return;1===e.length&&e.push(e[0]);const d=[];e.forEach(((e,n,a)=>{const h=1===e,l=e===r;let c=i.getYForLine(e-1);0!==n||h?n!==a.length-1||l||(c+=o/2-1):c-=o/2-1,d.push(c),1===s&&h?d.push(t-2):-1===s&&l&&d.push(t+2)})),h.push(d.sort(((t,e)=>t-e)))})),h}(e,function(t,e){const i=[];let s=[];for(let n=1;n<=t;n++)e.indexOf(n)>-1?(i.push(s),s=[]):s.push(n);return s.length>0&&i.push(s),i}(this.checkStave().getNumLines(),this.positions.map((t=>Number(t.str)))),this.checkStave(),this.getStemDirection());i.save(),i.setLineWidth(st.WIDTH),s.forEach((e=>{0!==e.length&&(i.beginPath(),i.moveTo(t,e[0]),i.lineTo(t,e[e.length-1]),i.stroke(),i.closePath())})),i.restore()}}drawPositions(){const t=this.checkContext(),e=this.getAbsoluteX(),i=this.ys;for(let s=0;s{const i=fi.GLYPHS[e];if(!i)throw new p("Invalid dynamics character: "+e);const s=f(this.render_options.glyph_font_size),n=new Q(i.code,s,{category:"textNote"});this.glyphs.push(n),t+=i.width})),this.setWidth(t),this.preFormatted=!0,this}draw(){this.setRendered();const t=this.getAbsoluteX(),e=this.checkStave().getYForLine(this.line+-3);_i("Rendering Dynamics: ",this.sequence);let i=t;this.glyphs.forEach(((t,s)=>{const n=this.sequence[s];t.render(this.checkContext(),i,e),i+=fi.GLYPHS[n].width}))}}fi.DEBUG=!1;class xi extends yt{constructor(t,e){super({duration:"b"});const i=new ye(t,e);this.timeSigInfo=i.getInfo(),this.setWidth(this.timeSigInfo.glyph.getMetrics().width),this.ignore_ticks=!0}static get CATEGORY(){return u.TimeSigNote}addToModifierContext(t){return this}preFormat(){return this.preFormatted=!0,this}draw(){const t=this.checkStave(),e=this.checkContext();this.setRendered(),this.timeSigInfo.glyph.getContext()||this.timeSigInfo.glyph.setContext(e),this.timeSigInfo.glyph.setStave(t),this.timeSigInfo.glyph.setYShift(t.getYForLine(2)-t.getYForGlyphs()),this.timeSigInfo.glyph.renderToStave(this.getAbsoluteX())}}class Si extends O{constructor(t){super(),t.start&&(this.start=t.start),t.stop&&(this.stop=t.stop),this.line=1,this.render_options={harsh:!1,wave_height:6,wave_width:4,wave_girth:2,vibrato_width:0}}static get CATEGORY(){return u.VibratoBracket}setLine(t){return this.line=t,this}setHarsh(t){return this.render_options.harsh=t,this}draw(){const t=this.checkContext();this.setRendered();const e=this.start&&this.start.checkStave().getYForTopText(this.line)||this.stop&&this.stop.checkStave().getYForTopText(this.line)||0,i=this.start&&this.start.getAbsoluteX()||this.stop&&this.stop.checkStave().getTieStartX()||0,s=this.stop&&this.stop.getAbsoluteX()-this.stop.getWidth()-5||this.start&&this.start.checkStave().getTieEndX()-10||0;this.render_options.vibrato_width=s-i,function(...t){Si.DEBUG&&x("Vex.Flow.VibratoBracket",t)}("Rendering VibratoBracket: start_x:",i,"stop_x:",s,"y:",e),le.renderVibrato(t,i,e,this.render_options)}}function yi(...t){Ti.DEBUG&&x("Vex.Flow.Factory",t)}Si.DEBUG=!1;class Ti{constructor(t={}){yi("New factory: ",t),this.options={stave:{space:10},renderer:{elementId:"",width:500,height:200,background:"#FFF"},font:Ti.TEXT_FONT},this.setOptions(t)}static newFromElementId(t,e=500,i=200){return new Ti({renderer:{elementId:t,width:e,height:i}})}reset(){this.renderQ=[],this.systems=[],this.staves=[],this.voices=[],this.stave=void 0}setOptions(t){this.options=Object.assign(Object.assign({},this.options),t),this.initRenderer(),this.reset()}initRenderer(){const{elementId:t,width:e,height:i,background:s}=this.options.renderer;if(null==t)return;if(""==t)throw yi(this),new p("renderer.elementId not set in FactoryOptions");let n=this.options.renderer.backend;if(void 0===n){n=$t(document.getElementById(t))?oe.Backends.CANVAS:oe.Backends.SVG}this.context=oe.buildContext(t,n,e,i,s)}getContext(){return this.context}setContext(t){return this.context=t,this}getStave(){return this.stave}getVoices(){return this.voices}Stave(t){const e=this.options.stave.space,i=Object.assign({x:0,y:0,width:this.options.renderer.width-1*e,options:{spacing_between_lines_px:1*e}},t),s=new ve(i.x,i.y,i.width,i.options);return this.staves.push(s),s.setContext(this.context),this.stave=s,s}TabStave(t){const e=this.options.stave.space,i=Object.assign({x:0,y:0,width:this.options.renderer.width-1*e,options:{spacing_between_lines_px:1.3*e}},t),s=new gi(i.x,i.y,i.width,i.options);return this.staves.push(s),s.setContext(this.context),this.stave=s,s}StaveNote(t){const e=new Wt(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}GlyphNote(t,e,i){const s=new ti(t,e,i);return this.stave&&s.setStave(this.stave),s.setContext(this.context),this.renderQ.push(s),s}RepeatNote(t,e,i){const s=new hi(t,e,i);return this.stave&&s.setStave(this.stave),s.setContext(this.context),this.renderQ.push(s),s}GhostNote(t){const e=new Ze(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}TextNote(t){const e=new _e(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}BarNote(t={}){const e=new At(t.type);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}ClefNote(t){const e=Object.assign({type:"treble",options:{size:"default",annotation:void 0}},t),i=new Le(e.type,e.options.size,e.options.annotation);return this.stave&&i.setStave(this.stave),i.setContext(this.context),this.renderQ.push(i),i}TimeSigNote(t){const e=Object.assign({time:"4/4"},t),i=new xi(e.time);return this.stave&&i.setStave(this.stave),i.setContext(this.context),this.renderQ.push(i),i}KeySigNote(t){const e=new ii(t.key,t.cancelKey,t.alterKey);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}TabNote(t){const e=new mi(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}GraceNote(t){const e=new ei(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),e}GraceNoteGroup(t){const e=new zt(t.notes,t.slur);return e.setContext(this.context),e}Accidental(t){const e=new it(t.type);return e.setContext(this.context),e}Annotation(t){const e=Object.assign({text:"p",hJustify:ht.CENTER,vJustify:lt.BOTTOM},t),i=new ct(e.text);return i.setJustification(e.hJustify),i.setVerticalJustification(e.vJustify),i.setFont(e.font),i.setContext(this.context),i}ChordSymbol(t){const e=Object.assign({vJustify:"top",hJustify:"center",kerning:!0,reportWidth:!0},t),i=new Bt;return i.setHorizontal(e.hJustify),i.setVertical(e.vJustify),i.setEnableKerning(e.kerning),i.setReportWidth(e.reportWidth),"string"==typeof e.fontFamily&&"number"==typeof e.fontSize?"string"==typeof e.fontWeight?i.setFont(e.fontFamily,e.fontSize,e.fontWeight):i.setFont(e.fontFamily,e.fontSize,""):"number"==typeof e.fontSize&&i.setFontSize(e.fontSize),i.setContext(this.context),i}Articulation(t){const e=Object.assign({type:"a.",position:"above"},t),i=new _t(e.type);return i.setPosition(e.position),i.setContext(this.context),i}Ornament(t,e){const i=Object.assign({type:t,position:0,accidental:""},e),s=new Vt(t);return s.setPosition(i.position),i.upperAccidental&&s.setUpperAccidental(i.upperAccidental),i.lowerAccidental&&s.setLowerAccidental(i.lowerAccidental),void 0!==i.delayed&&s.setDelayed(i.delayed),s.setContext(this.context),s}TextDynamics(t){const e=Object.assign({text:"p",duration:"q",dots:0,line:0},t),i=new fi({text:e.text,line:e.line,duration:e.duration,dots:e.dots});return this.stave&&i.setStave(this.stave),i.setContext(this.context),this.renderQ.push(i),i}Fingering(t){const e=Object.assign({number:"0",position:"left"},t),i=new Rt(e.number);return i.setPosition(e.position),i.setContext(this.context),i}StringNumber(t,e=!0){const i=new re(t.number);return i.setPosition(t.position),i.setContext(this.context),i.setDrawCircle(e),i}TickContext(){return new Xt}ModifierContext(){return new de}MultiMeasureRest(t){const e=f(t.number_of_measures,"NoNumberOfMeasures"),i=new ni(e,t);return i.setContext(this.context),this.renderQ.push(i),i}Voice(t){const e=Object.assign({time:"4/4"},t),i=new Ht(e.time);return this.voices.push(i),i}StaveConnector(t){const e=new Ce(t.top_stave,t.bottom_stave);return e.setType(t.type).setContext(this.context),this.renderQ.push(e),e}Formatter(t){return new Ne(t)}Tuplet(t){const e=Object.assign({notes:[],options:{}},t),i=new Pe(e.notes,e.options).setContext(this.context);return this.renderQ.push(i),i}Beam(t){var e,i,s,n,a;const o=new Oe(t.notes,null===(e=t.options)||void 0===e?void 0:e.autoStem).setContext(this.context);return o.breakSecondaryAt(null!==(s=null===(i=t.options)||void 0===i?void 0:i.secondaryBeamBreaks)&&void 0!==s?s:[]),(null===(n=t.options)||void 0===n?void 0:n.partialBeamDirections)&&Object.entries(null===(a=t.options)||void 0===a?void 0:a.partialBeamDirections).forEach((([t,e])=>{o.setPartialBeamSideAt(Number(t),e)})),this.renderQ.push(o),o}Curve(t){const e=new Ge(t.from,t.to,t.options).setContext(this.context);return this.renderQ.push(e),e}StaveTie(t){var e;const i=new Gt({first_note:t.from,last_note:t.to,first_indices:t.first_indices,last_indices:t.last_indices},t.text);return(null===(e=t.options)||void 0===e?void 0:e.direction)&&i.setDirection(t.options.direction),i.setContext(this.context),this.renderQ.push(i),i}StaveLine(t){var e,i;const s=new ci({first_note:t.from,last_note:t.to,first_indices:t.first_indices,last_indices:t.last_indices});return(null===(e=t.options)||void 0===e?void 0:e.text)&&s.setText(t.options.text),(null===(i=t.options)||void 0===i?void 0:i.font)&&s.setFont(t.options.font),s.setContext(this.context),this.renderQ.push(s),s}VibratoBracket(t){const e=new Si({start:t.from,stop:t.to});return t.options.line&&e.setLine(t.options.line),t.options.harsh&&e.setHarsh(t.options.harsh),e.setContext(this.context),this.renderQ.push(e),e}TextBracket(t){const e=new pi({start:t.from,stop:t.to,text:t.text,superscript:t.options.superscript,position:t.options.position});return t.options.line&&e.setLine(t.options.line),t.options.font&&e.setFont(t.options.font),e.setContext(this.context),this.renderQ.push(e),e}System(t={}){t.factory=this;const e=new di(t).setContext(this.context);return this.systems.push(e),e}EasyScore(t={}){return t.factory=this,new Je(t)}PedalMarking(t){const e=Object.assign({notes:[],options:{style:"mixed"}},t),i=new oi(e.notes);return i.setType(oi.typeString[e.options.style]),i.setContext(this.context),this.renderQ.push(i),i}NoteSubGroup(t){const e=Object.assign({notes:[]},t),i=new jt(e.notes);return i.setContext(this.context),i}draw(){const t=this.context;this.systems.forEach((e=>e.setContext(t).format())),this.staves.forEach((e=>e.setContext(t).draw())),this.voices.forEach((e=>e.setContext(t).draw())),this.renderQ.forEach((e=>{e.isRendered()||e.setContext(t).draw()})),this.systems.forEach((e=>e.setContext(t).draw())),this.reset()}}Ti.DEBUG=!1,Ti.TEXT_FONT=Object.assign({},O.TEXT_FONT);class wi extends mi{static get CATEGORY(){return u.GraceTabNote}constructor(t){super(t,!1),this.render_options=Object.assign(Object.assign({},this.render_options),{y_shift:.3,scale:.6,font:`7.5pt ${B.SANS_SERIF}`}),this.updateWidth()}}class vi{constructor(t){this.music=new tt,this.setKey(t)}setKey(t){return this.key=t,this.reset(),this}getKey(){return this.key}reset(){this.keyParts=this.music.getKeyParts(this.key),this.keyString=this.keyParts.root,this.keyParts.accidental&&(this.keyString+=this.keyParts.accidental);if(!tt.scaleTypes[this.keyParts.type])throw new p("BadArguments",`Unsupported key type: ${this.key}`);this.scale=this.music.getScaleTones(this.music.getNoteValue(this.keyString),tt.scaleTypes[this.keyParts.type]),this.scaleMap={},this.scaleMapByValue={},this.originalScaleMapByValue={};const t=tt.root_indices[this.keyParts.root];for(let e=0;es?Ci.SLIDE_DOWN:Ci.SLIDE_UP}this.direction=e,this.render_options.cp1=11,this.render_options.cp2=14,this.render_options.y_shift=.5,this.resetFont()}static get CATEGORY(){return u.TabSlide}static get SLIDE_UP(){return 1}static get SLIDE_DOWN(){return-1}static createSlideUp(t){return new Ci(t,Ci.SLIDE_UP)}static createSlideDown(t){return new Ci(t,Ci.SLIDE_DOWN)}renderTie(t){if(0===t.first_ys.length||0===t.last_ys.length)throw new p("BadArguments","No Y-values to render");const e=this.checkContext(),i=t.first_x_px,s=t.first_ys,n=t.last_x_px,a=t.direction;if(a!==Ci.SLIDE_UP&&a!==Ci.SLIDE_DOWN)throw new p("BadSlide","Invalid slide direction");const o=this.notes.first_indices;for(let t=0;tthis.tuningValues.length)throw new p("BadArguments",`String number must be between 1 and ${this.tuningValues.length}:${t}`);return this.tuningValues[e-1]}getValueForFret(t,e){const i=this.getValueForString(e),s=Number(t);if(s<0)throw new p("BadArguments",`Fret number must be 0 or higher: ${t}`);return i+s}getNoteForFret(t,e){const i=this.getValueForFret(t,e),s=Math.floor(i/12),n=i%12;return`${X.integerToNote(n)}/${s}`}}var Ni=function(t,e,i,s){return new(i||(i=Promise))((function(n,a){function o(t){try{h(s.next(t))}catch(t){a(t)}}function r(t){try{h(s.throw(t))}catch(t){a(t)}}function h(t){var e;t.done?n(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(o,r)}h((s=s.apply(t,e||[])).next())}))};class Ai{static get BUILD(){return{VERSION:"4.1.0-alpha.0",ID:"847bc9014672858aedc7f8460384f51f98d6bd84",DATE:"2022-10-10T04:47:38.237Z"}}static setMusicFont(...t){const e=t.map((t=>B.load(t)));return X.MUSIC_FONT_STACK=e,Q.MUSIC_FONT_STACK=e.slice(),Q.CURRENT_CACHE_KEY=t.join(","),e}static fetchMusicFont(t,e){return Ni(this,void 0,void 0,(function*(){}))}static getMusicFont(){return X.MUSIC_FONT_STACK.map((t=>t.getName()))}static get RENDER_PRECISION_PLACES(){return X.RENDER_PRECISION_PLACES}static set RENDER_PRECISION_PLACES(t){X.RENDER_PRECISION_PLACES=t}static get SOFTMAX_FACTOR(){return X.SOFTMAX_FACTOR}static set SOFTMAX_FACTOR(t){X.SOFTMAX_FACTOR=t}static get NOTATION_FONT_SCALE(){return X.NOTATION_FONT_SCALE}static set NOTATION_FONT_SCALE(t){X.NOTATION_FONT_SCALE=t}static get TABLATURE_FONT_SCALE(){return X.TABLATURE_FONT_SCALE}static set TABLATURE_FONT_SCALE(t){X.TABLATURE_FONT_SCALE=t}static get RESOLUTION(){return X.RESOLUTION}static set RESOLUTION(t){X.RESOLUTION=t}static get SLASH_NOTEHEAD_WIDTH(){return X.SLASH_NOTEHEAD_WIDTH}static set SLASH_NOTEHEAD_WIDTH(t){X.SLASH_NOTEHEAD_WIDTH=t}static get STAVE_LINE_DISTANCE(){return X.STAVE_LINE_DISTANCE}static set STAVE_LINE_DISTANCE(t){X.STAVE_LINE_DISTANCE=t}static get STAVE_LINE_THICKNESS(){return X.STAVE_LINE_THICKNESS}static set STAVE_LINE_THICKNESS(t){X.STAVE_LINE_THICKNESS=t}static get STEM_HEIGHT(){return X.STEM_HEIGHT}static set STEM_HEIGHT(t){X.STEM_HEIGHT=t}static get STEM_WIDTH(){return X.STEM_WIDTH}static set STEM_WIDTH(t){X.STEM_WIDTH=t}static get TIME4_4(){return X.TIME4_4}static get accidentalMap(){return X.accidentalMap}static get unicode(){return X.unicode}static keySignature(t){return X.keySignature(t)}static hasKeySignature(t){return X.hasKeySignature(t)}static getKeySignatures(){return X.getKeySignatures()}static clefProperties(t){return X.clefProperties(t)}static keyProperties(t,e,i){return X.keyProperties(t,e,i)}static durationToTicks(t){return X.durationToTicks(t)}}Ai.Accidental=it,Ai.Annotation=ct,Ai.Articulation=_t,Ai.Barline=Nt,Ai.BarNote=At,Ai.Beam=Oe,Ai.Bend=Pt,Ai.BoundingBox=C,Ai.BoundingBoxComputation=k,Ai.CanvasContext=Jt,Ai.ChordSymbol=Bt,Ai.Clef=me,Ai.ClefNote=Le,Ai.Crescendo=Ie,Ai.Curve=Ge,Ai.Dot=Ft,Ai.EasyScore=Je,Ai.Element=O,Ai.Factory=Ti,Ai.Font=B,Ai.Formatter=Ne,Ai.Fraction=v,Ai.FretHandFinger=Rt,Ai.GhostNote=Ze,Ai.Glyph=Q,Ai.GlyphNote=ti,Ai.GraceNote=ei,Ai.GraceNoteGroup=zt,Ai.GraceTabNote=wi,Ai.KeyManager=vi,Ai.KeySignature=ge,Ai.KeySigNote=ii,Ai.Modifier=Z,Ai.ModifierContext=de,Ai.MultiMeasureRest=ni,Ai.Music=tt,Ai.Note=yt,Ai.NoteHead=Ot,Ai.NoteSubGroup=jt,Ai.Ornament=Vt,Ai.Parenthesis=Kt,Ai.Parser=He,Ai.PedalMarking=oi,Ai.Registry=R,Ai.RenderContext=ft,Ai.Renderer=oe,Ai.RepeatNote=hi,Ai.Repetition=be,Ai.Stave=ve,Ai.StaveConnector=Ce,Ai.StaveHairpin=Ei,Ai.StaveLine=ci,Ai.StaveModifier=Dt,Ai.StaveNote=Wt,Ai.StaveTempo=pe,Ai.StaveText=fe,Ai.StaveTie=Gt,Ai.Stem=st,Ai.StringNumber=re,Ai.Stroke=he,Ai.SVGContext=ee,Ai.System=di,Ai.TabNote=mi,Ai.TabSlide=Ci,Ai.TabStave=gi,Ai.TabTie=Ut,Ai.TextBracket=pi,Ai.TextDynamics=fi,Ai.TextFormatter=rt,Ai.TextNote=_e,Ai.TickContext=Xt,Ai.TimeSignature=ye,Ai.TimeSigNote=xi,Ai.Tremolo=ki,Ai.Tuning=Di,Ai.Tuplet=Pe,Ai.Vibrato=le,Ai.VibratoBracket=Si,Ai.Voice=Ht,Ai.Volta=xe,Ai.AnnotationHorizontalJustify=ht,Ai.AnnotationVerticalJustify=lt,Ai.ChordSymbolHorizontalJustify=vt,Ai.ChordSymbolVerticalJustify=Et,Ai.SymbolTypes=Ct,Ai.SymbolModifiers=kt,Ai.CurvePosition=We,Ai.FontWeight=D,Ai.FontStyle=N,Ai.ModifierPosition=$,Ai.RendererBackends=ie,Ai.RendererLineEndType=se,Ai.BarlineType=wt,Ai.StaveModifierPosition=Tt,Ai.VoltaType=ae,Ai.TextBracketPosition=ui,Ai.TextJustification=ne,Ai.VoiceMode=Yt;const Pi={resolution:1e3,fontFamily:"VexFlowCustom",glyphs:{noteheadSquareWhite:{x_min:0,x_max:430.75,ha:386,o:"m 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 l 50 150 l 380 150 l 380 -150 l 50 -150 l 50 150 "},noteheadSquareBlack:{x_min:0,x_max:430.75,ha:386,o:"m 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 "},accidentalBuyukMucennebFlat:{x_min:-171.5,x_max:251.8125,ha:257,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 "},accidentalBakiyeFlat:{x_min:-176.9375,x_max:251.8125,ha:257,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 "},accidentalKucukMucennebSharp:{x_min:-1.359375,x_max:255.890625,ha:261,o:"m 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 "},accidentalKoron:{x_min:-20,x_max:320,ha:257,o:"m -8 200 b -8 210 8 200 16 200 l 20 148 -199 l 23 -615 b 0 -629 9 -629 6 -629 l -21 -612 l -21 -201 l -21 216 l -20 200 m 16 200 l 310 0 l 240 0 l 16 140 l 16 -120 l 240 0 l 310 0 l 16 -200 "},accidentalSori:{x_min:-10.890625,x_max:299.4375,ha:294,o:"m 44 174 b 51 174 47 174 49 174 b 68 173 55 174 61 174 l 287 112 l 551 40 b 615 20 617 22 609 23 b 626 0 622 16 626 8 b 615 -22 626 -9 622 -18 b 613 -23 613 -23 613 -23 b 613 -23 613 -23 613 -23 b 287 -113 613 -24 597 -29 l 68 -174 b 53 -176 61 -176 57 -176 b 39 -172 47 -176 43 -174 b 27 -151 31 -167 27 -159 b 39 -129 27 -141 31 -133 b 230 -74 43 -124 20 -131 l 370 -36 l 468 -9 b 498 0 484 -4 498 -1 b 468 8 498 0 484 2 l 370 34 l 230 73 b 40 126 28 129 43 124 b 27 149 31 131 27 140 b 44 174 27 161 34 170 m 205 110 l 205 300 b 205 330 245 330 245 300 l 245 300 l 245 -300 b 245 -330 205 -330 205 -300 l 205 -300 l 205 110 l 345 90 m 345 90 l 345 330 b 345 360 385 360 385 330 l 385 330 l 385 -270 b 385 -300 345 -300 345 -270 l 345 -270 l 345 90 "},vexAccidentalMicrotonal2:{x_min:-1.359375,x_max:386.5625,ha:394,o:"m 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 "},vexAccidentalMicrotonal3:{x_min:0,x_max:430.75,ha:360,o:"m -146 537 b -138 538 -143 538 -141 538 b -118 525 -129 538 -121 533 b -117 390 -117 522 -117 521 b -115 259 -117 268 -117 259 b -115 259 -115 259 -115 259 b -59 272 -104 263 -62 272 b -39 259 -50 272 -42 267 b -37 209 -38 257 -37 233 b -39 159 -37 185 -38 162 b -85 138 -43 149 -44 149 l -117 131 l -117 21 b -115 -88 -117 -80 -117 -88 b -115 -88 -115 -88 -115 -88 b -59 -75 -104 -84 -62 -75 b -44 -81 -52 -75 -48 -77 b -38 -124 -38 -87 -38 -85 b -38 -138 -38 -124 -38 -138 b -38 -152 -38 -138 -38 -152 b -44 -195 -38 -191 -38 -190 b -85 -209 -48 -200 -48 -200 l -117 -217 l -117 -349 b -118 -486 -117 -481 -117 -482 b -138 -499 -121 -494 -129 -499 b -153 -493 -143 -499 -149 -497 b -159 -415 -158 -487 -159 -496 b -159 -355 -159 -398 -159 -379 b -159 -227 -159 -284 -159 -227 b -205 -238 -159 -227 -180 -232 b -250 -249 -230 -244 -250 -249 b -251 -386 -251 -249 -251 -311 b -252 -525 -251 -521 -251 -522 b -272 -538 -255 -534 -264 -538 b -287 -532 -277 -538 -283 -536 b -293 -452 -292 -527 -293 -536 b -293 -391 -293 -436 -293 -415 b -294 -260 -293 -269 -293 -260 b -294 -260 -294 -260 -294 -260 b -348 -272 -306 -264 -345 -272 b -368 -259 -357 -272 -365 -267 b -369 -209 -369 -257 -369 -233 b -368 -159 -369 -185 -369 -162 b -323 -139 -364 -149 -362 -148 l -293 -131 l -293 -22 b -294 87 -293 80 -293 87 b -294 87 -294 87 -294 87 b -348 75 -306 84 -345 75 b -368 88 -357 75 -365 80 b -369 138 -369 91 -369 114 b -368 188 -369 162 -369 186 b -323 209 -364 198 -362 199 l -293 216 l -293 349 b -292 486 -293 481 -293 482 b -272 499 -288 494 -280 499 b -257 493 -266 499 -261 497 b -251 414 -251 487 -251 496 b -251 354 -251 398 -251 378 b -251 226 -251 284 -251 226 b -205 238 -250 226 -230 231 b -159 249 -180 244 -159 249 b -159 385 -159 249 -159 310 b -157 525 -159 521 -159 522 b -146 537 -156 530 -151 535 z m -159 11 b -159 120 -159 98 -159 120 l -159 120 b -175 116 -160 120 -167 119 b -221 105 -184 114 -204 109 l -251 98 l -251 -12 b -251 -121 -251 -72 -251 -121 b -205 -110 -250 -121 -230 -116 b -159 -99 -180 -104 -159 -99 b -159 11 -159 -99 -159 -49 z m 89 517 b 97 519 92 518 94 519 b 117 505 106 519 114 513 b 119 376 119 502 119 501 l 119 249 l 145 258 b 176 267 169 266 172 267 b 177 267 176 267 177 267 b 196 255 186 267 192 263 l 197 252 l 197 205 b 197 181 197 195 197 187 b 193 149 197 153 197 153 b 152 131 190 144 187 143 l 119 120 l 119 10 b 119 -100 119 -62 119 -100 b 145 -91 120 -100 131 -96 b 173 -82 159 -86 171 -82 b 176 -81 174 -81 175 -81 b 196 -94 185 -81 193 -87 b 198 -151 197 -97 198 -125 b 197 -194 198 -172 197 -192 b 153 -218 193 -203 192 -204 l 119 -230 l 119 -367 l 118 -504 l 117 -507 b 97 -519 113 -514 105 -519 b 82 -512 92 -519 87 -517 b 76 -434 77 -507 76 -516 b 76 -374 76 -418 76 -398 b 76 -245 76 -303 76 -245 b 52 -254 76 -245 65 -249 b 19 -263 34 -260 25 -263 b 6 -257 13 -263 10 -261 b 0 -214 0 -251 0 -253 b 0 -200 0 -210 0 -205 b 0 -188 0 -196 0 -192 b 6 -143 0 -147 0 -149 b 46 -126 10 -139 10 -139 l 76 -115 l 76 -5 b 76 106 76 56 76 106 b 51 98 76 106 64 102 b 18 89 34 92 25 89 b 6 95 13 89 10 91 b 0 139 0 101 0 99 b 0 153 0 143 0 148 b 0 179 0 163 0 172 b 44 225 0 215 3 211 l 76 236 l 76 369 b 78 505 76 501 76 502 b 89 517 80 510 85 515 z "},vexAccidentalMicrotonal4:{x_min:0,x_max:430.75,ha:360,o:"m 283 633 b 291 634 286 634 289 634 b 311 621 300 634 308 629 b 313 505 313 618 313 617 b 313 393 313 443 313 393 b 378 425 313 393 343 407 l 443 458 l 448 458 b 449 458 449 458 449 458 b 471 437 462 458 471 448 b 469 429 471 434 470 432 b 387 382 466 421 469 423 l 313 344 l 313 247 l 313 150 l 315 152 b 433 201 353 184 394 201 b 479 193 448 201 464 198 b 549 86 524 177 549 135 b 526 1 549 59 541 29 b 395 -143 504 -39 475 -71 b 316 -214 351 -182 341 -191 b 292 -229 302 -228 300 -229 b 272 -216 283 -229 275 -224 b 271 55 271 -212 271 -212 b 270 323 271 203 270 323 b 205 291 270 323 241 308 l 140 258 l 135 258 b 134 258 135 258 134 258 b 112 279 121 258 112 267 b 114 287 112 281 113 284 b 196 334 117 295 114 293 l 271 371 l 271 495 b 272 621 271 617 271 618 b 283 633 274 626 279 631 z m 404 133 b 391 134 400 134 395 134 b 384 134 388 134 386 134 b 318 88 358 130 335 114 l 313 81 l 313 -37 l 313 -156 l 316 -152 b 439 83 391 -71 439 22 l 439 84 b 404 133 439 115 430 128 z m -8 633 l -8 633 b 0 634 -6 634 -3 634 b 20 621 8 634 17 629 b 21 384 21 618 21 617 l 21 150 l 24 152 b 141 201 62 184 102 201 b 187 193 157 201 172 198 b 257 86 232 177 257 135 b 234 1 257 59 250 29 b 103 -143 212 -39 183 -71 b 24 -214 60 -182 49 -191 b 0 -229 10 -228 8 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 203 l -21 618 l -20 621 b -8 633 -18 626 -13 631 z m 113 133 l 113 133 b 99 134 109 134 103 134 b 93 134 97 134 94 134 b 26 88 66 130 43 114 l 21 81 l 21 -37 l 21 -156 l 25 -152 b 148 83 99 -71 148 22 l 148 84 b 113 133 148 115 138 128 z "},vexNoteHeadRectBlack:{x_min:0,x_max:430.75,ha:360,o:"m 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 "},vexNoteHeadRectWhite:{x_min:0,x_max:430.75,ha:360,o:"m 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 l 50 100 l 380 100 l 380 -100 l 50 -100 l 50 100"}}},Mi={name:"VexFlowCustom",smufl:!1,glyphs:{}};const Bi={glyphs:{bracketTop:{x_min:0,x_max:491,y_min:0,y_max:279,ha:279,o:"m 697 399 b 687 402 694 400 690 402 b 671 395 681 402 674 400 b 249 168 668 390 524 168 l 20 168 b 0 150 9 168 0 161 l 0 20 l 0 0 l 176 0 b 706 374 619 0 704 370 b 707 382 706 376 707 379 b 697 399 707 389 703 395 z"},bracketBottom:{x_min:0,x_max:491,y_min:-279,y_max:0,ha:279,o:"m 697 -399 b 707 -382 703 -395 707 -389 b 706 -374 707 -379 706 -376 b 176 0 704 -370 619 0 l 0 0 l 0 -20 l 0 -150 b 20 -168 0 -161 9 -168 l 249 -168 b 671 -395 524 -168 668 -390 b 687 -402 674 -400 681 -402 b 697 -399 690 -402 694 -400 z"},segno:{x_min:0,x_max:654,y_min:0,y_max:869,ha:869,o:"m 546 690 l 838 1207 b 841 1215 840 1210 841 1212 b 832 1233 841 1221 837 1230 l 809 1248 b 798 1251 806 1250 801 1251 b 780 1241 792 1251 783 1247 l 487 721 l 217 860 b 99 995 147 897 99 924 b 236 1165 99 1120 179 1165 b 343 1073 288 1165 325 1130 b 454 988 357 1022 405 988 b 477 991 461 988 469 989 b 541 1076 526 1002 541 1045 b 540 1089 541 1080 541 1084 b 294 1225 534 1116 514 1225 b 0 939 72 1225 0 1053 b 125 706 0 825 42 753 l 397 563 l 104 45 b 102 35 102 42 102 37 b 111 19 102 29 107 22 l 132 3 b 144 0 135 1 141 0 b 148 0 145 0 147 0 b 161 10 153 1 158 6 l 456 531 l 704 403 b 842 256 780 361 842 318 b 706 86 842 131 763 86 b 599 177 654 86 616 120 b 488 262 585 228 537 262 b 465 259 481 262 472 261 b 402 177 418 248 402 206 b 403 163 402 171 402 167 b 649 26 409 135 429 26 b 942 312 871 26 942 199 b 821 549 942 426 901 507 z m 52 444 b 118 416 69 426 95 416 b 183 444 141 416 166 426 b 210 508 200 461 210 485 b 183 573 210 531 200 556 b 118 600 166 590 141 600 b 52 573 95 600 69 590 b 24 508 35 556 24 531 b 52 444 24 485 35 461 z m 760 730 b 825 703 778 713 802 703 b 890 730 848 703 873 713 b 917 795 907 747 917 772 b 890 861 917 818 907 844 b 825 888 873 878 848 888 b 760 861 802 888 778 878 b 733 795 743 844 733 818 b 760 730 733 772 743 747 z"},coda:{x_min:0,x_max:745,y_min:-113,y_max:735,ha:848,o:"m 924 467 b 560 896 916 697 757 881 l 560 1038 b 540 1058 560 1050 552 1058 l 524 1058 b 505 1038 513 1058 505 1050 l 505 896 b 150 467 311 877 158 693 l 20 467 b 0 446 9 467 0 458 l 0 432 b 20 412 0 420 9 412 l 150 412 b 505 0 166 193 317 17 l 505 -143 b 524 -163 505 -154 513 -163 l 540 -163 b 560 -143 552 -163 560 -154 l 560 0 b 923 412 753 13 907 190 l 1054 412 b 1073 432 1066 412 1073 420 l 1073 446 b 1054 467 1073 458 1066 467 z m 560 467 l 560 852 b 773 467 716 837 773 671 z m 505 467 l 301 467 b 505 851 301 668 357 831 z m 505 412 l 505 45 b 301 412 366 65 301 219 z m 560 412 l 772 412 b 560 45 772 215 706 60 z"},gClef:{x_min:0,x_max:640,y_min:-666,y_max:1112,ha:1778,o:"m 809 -30 b 665 -279 809 -132 768 -238 b 586 186 635 -107 596 122 b 809 -30 716 186 809 98 z m 605 -297 b 521 -305 576 -302 549 -305 b 140 56 315 -305 140 -161 b 390 498 140 232 264 389 b 459 562 415 520 438 540 b 492 357 472 484 482 416 b 272 45 361 318 272 180 b 467 -194 272 -56 351 -194 b 491 -176 478 -194 491 -189 b 459 -144 491 -163 477 -156 b 372 -1 403 -109 372 -72 b 521 177 372 86 436 157 z m 478 1184 b 632 1392 491 1241 557 1392 b 688 1223 654 1392 688 1322 b 478 863 688 1073 577 960 b 462 1037 469 920 462 976 b 478 1184 462 1090 467 1139 z m 176 -739 b 444 -959 176 -834 249 -959 b 622 -910 511 -959 570 -942 b 720 -670 700 -855 720 -760 b 697 -467 720 -613 711 -549 b 675 -338 693 -438 684 -395 b 922 3 816 -292 922 -145 b 557 367 922 220 768 367 b 516 619 543 454 528 539 b 773 1188 668 779 773 959 b 710 1477 773 1319 733 1426 b 608 1601 675 1551 634 1601 b 505 1528 598 1601 553 1584 b 387 1113 413 1418 387 1234 b 419 804 387 1035 395 965 b 312 701 418 802 343 726 b 0 117 181 579 0 405 b 503 -364 0 -153 235 -364 b 616 -354 544 -364 583 -360 b 660 -670 644 -492 660 -593 b 438 -899 660 -819 583 -899 b 370 -891 403 -899 373 -891 b 366 -887 369 -890 366 -888 b 373 -881 366 -884 369 -883 b 508 -721 441 -871 508 -814 b 341 -562 508 -644 449 -562 b 176 -739 240 -562 176 -644 z"},cClef:{x_min:0,x_max:627,y_min:-480,y_max:482,ha:962,o:"m 19 675 b 0 657 9 675 0 667 l 0 -654 b 19 -672 0 -664 9 -672 l 122 -672 b 141 -654 132 -672 141 -664 l 141 657 b 122 675 141 667 132 675 z m 903 -376 b 619 -58 903 -197 808 -58 b 505 -95 586 -58 562 -60 b 426 1 503 -89 474 -32 b 505 98 474 35 503 92 b 641 60 560 65 579 60 b 903 379 816 60 903 223 b 580 694 903 580 755 694 b 318 517 472 694 318 649 b 438 400 318 446 367 400 b 546 510 501 400 546 446 b 425 615 546 589 494 615 b 547 651 458 638 503 651 b 723 400 698 651 723 530 b 593 128 723 289 720 128 b 438 279 467 128 441 265 b 418 300 438 281 438 300 b 396 279 397 300 396 281 b 264 29 383 200 344 62 l 264 657 b 246 675 264 667 256 675 b 228 657 236 675 228 667 l 228 -654 b 246 -672 228 -664 236 -672 b 264 -654 256 -672 264 -664 l 264 -26 b 396 -278 348 -60 380 -197 b 418 -297 396 -279 397 -297 b 438 -278 438 -297 438 -279 b 593 -125 441 -262 467 -125 b 723 -397 720 -125 723 -287 b 547 -648 723 -527 698 -648 b 425 -612 503 -648 458 -635 b 441 -613 426 -612 432 -613 b 546 -507 504 -613 546 -569 b 438 -397 546 -444 501 -397 b 318 -514 367 -397 318 -444 b 580 -691 318 -647 472 -691 b 903 -376 755 -691 903 -577 z"},fClef:{x_min:0,x_max:664,y_min:-617,y_max:251,ha:868,o:"m 366 361 b 167 298 256 361 168 298 b 37 112 84 236 50 163 b 27 36 30 86 27 60 b 46 -58 27 1 33 -30 b 140 -138 63 -96 96 -124 b 194 -147 157 -144 176 -147 b 287 -122 226 -147 259 -138 b 359 10 331 -98 359 -46 b 289 134 359 60 333 107 b 206 160 259 154 230 160 b 160 153 189 160 173 157 b 109 122 145 147 121 132 b 147 215 114 150 131 192 b 219 279 163 238 194 266 b 351 308 255 300 301 308 b 570 -52 498 308 570 190 b 477 -399 570 -186 520 -314 b 310 -635 429 -494 366 -585 b 17 -837 160 -772 19 -837 b 0 -864 17 -837 0 -847 b 1 -871 0 -867 1 -868 b 27 -888 6 -886 19 -888 b 35 -887 29 -888 33 -887 b 331 -717 36 -887 200 -819 b 528 -544 405 -664 471 -606 b 661 -367 580 -488 625 -428 b 760 -50 724 -259 760 -147 b 670 239 760 69 729 168 b 366 361 602 320 500 361 z m 818 179 b 887 107 818 138 850 107 b 956 179 924 107 956 138 b 887 252 956 219 924 252 b 818 179 850 252 818 219 z m 818 -177 b 887 -251 818 -217 850 -251 b 956 -177 924 -251 956 -217 b 887 -104 956 -137 924 -104 b 818 -177 850 -104 818 -137 z"},unpitchedPercussionClef1:{x_min:0,x_max:352,y_min:-252,y_max:252,ha:504,o:"m 19 363 b 0 344 9 363 0 354 l 0 -344 b 19 -363 0 -354 9 -363 l 177 -363 b 196 -344 187 -363 196 -354 l 196 344 b 177 363 196 354 187 363 z m 330 363 b 311 344 320 363 311 354 l 311 -344 b 330 -363 311 -354 320 -363 l 488 -363 b 507 -344 498 -363 507 -354 l 507 344 b 488 363 507 354 498 363 z"},"6stringTabClef":{x_min:0,x_max:439,y_min:-743,y_max:746,ha:1489,o:"m 52 1074 l 52 958 l 249 958 l 249 419 l 387 419 l 387 958 l 583 958 l 583 1074 z m 0 -333 l 145 -333 l 192 -196 l 436 -196 l 481 -333 l 632 -333 l 396 334 l 238 334 z m 315 181 l 400 -81 l 229 -81 z m 566 -474 b 393 -402 531 -428 475 -403 l 71 -402 l 71 -1070 l 372 -1070 b 374 -1070 373 -1070 373 -1070 b 465 -1061 405 -1070 435 -1067 b 541 -1027 494 -1056 520 -1043 b 588 -975 560 -1012 575 -995 b 618 -868 608 -943 618 -907 b 592 -770 618 -829 609 -798 b 514 -711 575 -743 549 -724 b 566 -674 537 -700 554 -688 b 596 -576 586 -649 596 -616 b 566 -474 596 -536 586 -503 z m 348 -518 b 428 -528 380 -518 408 -521 b 464 -590 452 -539 464 -559 b 436 -649 464 -619 455 -638 b 366 -665 418 -661 395 -665 l 203 -665 l 203 -518 z m 367 -776 b 435 -788 396 -776 419 -780 b 477 -858 464 -801 477 -824 b 433 -942 477 -900 462 -927 b 366 -953 418 -949 395 -953 l 203 -953 l 203 -776 z"},timeSig0:{x_min:15,x_max:389,y_min:-254,y_max:255,ha:509,o:"m 291 367 b 22 0 138 367 22 209 b 291 -366 22 -209 138 -366 b 560 0 444 -366 560 -209 b 291 367 560 209 444 367 z m 376 -200 b 291 -308 376 -252 353 -308 b 206 -200 229 -308 206 -252 l 206 200 b 291 308 206 252 229 308 b 376 200 353 308 376 252 z"},timeSig1:{x_min:15,x_max:336,y_min:-243,y_max:245,ha:488,o:"m 359 -284 l 359 336 b 341 353 359 346 351 353 l 199 353 b 190 350 196 353 193 351 b 184 344 189 348 186 346 l 23 65 b 22 56 22 62 22 59 b 30 42 22 50 26 45 l 58 26 b 66 23 60 24 63 23 b 81 32 72 23 78 27 l 183 207 l 183 -284 l 73 -284 b 56 -301 63 -284 56 -291 l 56 -333 b 73 -350 56 -343 63 -350 l 468 -350 b 484 -333 478 -350 484 -343 l 484 -301 b 468 -284 484 -291 478 -284 z"},timeSig2:{x_min:15,x_max:377,y_min:-243,y_max:245,ha:488,o:"m 492 -56 b 382 -192 481 -88 452 -192 b 190 -134 288 -192 268 -134 b 153 -138 179 -134 167 -135 b 341 -36 153 -138 189 -84 b 533 173 494 12 533 86 b 288 353 533 233 505 353 b 30 156 71 353 30 222 b 138 49 30 96 79 49 b 245 156 197 49 245 96 b 179 255 245 196 216 240 b 168 271 174 256 168 264 b 202 297 168 279 176 289 b 251 304 209 300 229 304 b 311 288 271 304 294 300 b 348 180 338 271 348 245 b 65 -150 348 12 148 -24 b 22 -278 65 -150 22 -210 b 73 -350 22 -346 56 -350 b 121 -305 96 -350 121 -331 b 117 -287 121 -300 120 -294 b 105 -239 108 -266 105 -251 b 107 -226 105 -235 105 -230 b 154 -203 108 -217 120 -203 b 238 -289 196 -203 212 -252 b 350 -350 264 -327 304 -350 b 484 -264 396 -350 458 -317 b 543 -63 510 -210 543 -102 b 518 -36 543 -45 531 -36 b 492 -56 508 -36 498 -42 z"},timeSig3:{x_min:14.984905204685425,x_max:364,y_min:-244,y_max:244,ha:488,o:"m 392 23 b 514 168 507 68 514 143 b 514 176 514 171 514 174 b 262 351 514 189 510 351 b 22 176 14 351 22 176 l 23 176 l 22 173 b 115 81 22 121 63 81 b 207 173 167 81 207 121 b 135 264 207 215 176 255 b 140 268 137 265 138 266 b 215 289 160 282 187 289 b 340 176 275 289 340 253 b 255 69 340 85 272 72 b 140 60 238 66 157 60 b 121 40 122 60 121 40 l 121 12 b 140 -6 121 12 124 -4 b 243 -14 164 -7 197 -7 b 340 -167 307 -23 340 -66 b 215 -289 340 -264 275 -289 b 121 -266 174 -289 137 -278 b 207 -174 168 -264 207 -222 b 115 -81 207 -122 167 -81 b 22 -174 63 -81 22 -122 b 22 -180 22 -174 22 -177 b 78 -298 22 -199 26 -251 b 236 -351 134 -350 204 -351 b 524 -147 374 -351 524 -304 b 389 23 524 -42 452 3 z"},timeSig4:{x_min:14,x_max:442,y_min:-248,y_max:249,ha:497,o:"m 300 -183 l 300 -289 l 180 -289 b 160 -310 170 -289 160 -298 l 160 -337 b 180 -357 160 -348 170 -357 l 616 -357 b 636 -337 628 -357 636 -348 l 636 -310 b 616 -289 636 -298 628 -289 l 487 -289 l 487 -183 l 616 -183 b 636 -161 628 -183 636 -173 l 636 -134 b 616 -114 636 -124 628 -114 l 487 -114 l 487 115 b 477 134 487 124 482 131 l 459 143 b 452 144 456 144 455 144 b 449 144 451 144 451 144 b 436 140 445 144 439 143 l 305 20 b 300 4 301 16 300 10 l 300 -114 l 132 -114 b 464 287 132 -114 294 59 b 471 307 469 294 471 301 b 467 321 471 314 468 320 l 435 353 b 420 359 431 356 426 359 b 206 359 412 359 217 359 b 187 341 196 359 189 350 b 143 118 187 341 180 235 b 24 -124 105 1 62 -71 b 20 -140 24 -124 20 -131 b 22 -148 20 -143 20 -145 b 36 -174 26 -158 36 -174 b 52 -183 36 -174 39 -183 z"},timeSig5:{x_min:15,x_max:362,y_min:-244,y_max:246,ha:490,o:"m 39 314 b 46 170 39 314 46 245 b 46 151 46 164 46 157 b 39 -24 45 71 39 -24 b 39 -29 39 -24 39 -26 b 49 -48 39 -35 40 -46 b 99 -59 62 -50 92 -58 b 107 -59 102 -59 104 -59 b 121 -49 112 -59 118 -58 b 235 45 128 -30 144 45 b 356 -112 337 45 356 -43 b 238 -292 356 -184 333 -288 b 226 -292 233 -292 230 -292 b 166 -282 193 -292 174 -288 b 158 -274 161 -281 158 -276 b 164 -264 158 -269 160 -266 b 222 -168 177 -255 222 -239 b 117 -71 222 -98 173 -71 b 22 -171 60 -71 22 -122 b 111 -318 22 -220 36 -275 b 252 -351 147 -338 199 -351 b 456 -275 325 -351 405 -328 b 521 -109 503 -228 521 -167 b 433 79 521 -32 487 43 b 271 124 397 104 336 124 b 131 84 223 124 173 112 b 125 82 130 82 127 82 b 115 92 120 82 115 86 l 115 183 b 131 199 115 192 122 199 l 132 199 b 252 192 154 197 202 192 b 372 209 295 192 340 196 b 474 320 439 236 462 289 b 477 334 475 324 477 330 b 451 354 477 346 469 354 b 431 351 445 354 439 353 b 252 328 360 334 305 328 b 88 343 200 328 150 334 b 71 344 88 343 81 344 b 39 320 56 344 39 340 b 39 314 39 317 39 315 z"},timeSig6:{x_min:15,x_max:387,y_min:-244,y_max:245,ha:489,o:"m 356 69 b 216 22 268 69 236 43 b 209 98 212 52 209 75 b 216 167 209 121 212 141 b 338 287 225 220 261 287 b 410 259 374 287 396 275 b 356 174 380 246 356 207 b 448 82 356 122 396 82 b 541 174 500 82 541 122 l 541 177 b 541 179 541 177 541 177 b 533 225 541 192 539 213 b 310 353 514 276 454 353 b 58 163 180 353 86 229 b 22 -23 43 128 22 58 b 131 -285 22 -111 46 -210 b 318 -351 215 -348 268 -351 b 557 -125 369 -351 557 -292 b 356 69 557 16 446 69 z m 302 -291 b 216 -145 255 -291 216 -226 b 302 1 216 -65 255 1 b 390 -145 350 1 390 -65 b 302 -291 390 -226 350 -291 z"},timeSig7:{x_min:15,x_max:366,y_min:-250,y_max:251,ha:501,o:"m 233 -177 b 160 -336 202 -225 160 -282 b 180 -360 160 -351 164 -360 b 264 -351 203 -360 217 -354 b 278 -350 268 -351 274 -350 b 369 -360 320 -350 359 -360 b 405 -331 382 -360 406 -344 b 405 -327 405 -330 405 -328 b 396 -226 405 -324 396 -279 b 408 -130 396 -196 399 -161 b 503 151 425 -62 471 60 b 527 308 518 196 527 275 b 526 341 527 321 527 327 b 510 361 524 356 518 361 b 484 361 503 361 491 361 b 467 341 477 361 467 356 b 406 228 467 327 464 228 b 235 351 346 228 328 351 b 86 252 145 351 91 261 l 86 321 b 71 337 86 330 79 337 l 37 337 b 22 321 29 337 22 330 l 22 55 b 37 39 22 46 29 39 l 71 39 b 86 55 79 39 86 46 l 86 101 b 158 179 86 134 108 179 b 328 124 209 179 213 124 b 425 143 357 124 410 128 b 233 -177 413 120 266 -130 z"},timeSig8:{x_min:15,x_max:393,y_min:-248,y_max:246,ha:494,o:"m 467 26 b 547 166 514 62 547 108 b 294 354 547 269 433 354 b 40 166 154 354 40 269 b 122 13 40 108 55 56 b 22 -147 58 -24 22 -78 b 294 -357 22 -264 144 -357 b 566 -147 444 -357 566 -264 b 467 26 566 -78 541 -13 z m 294 -276 b 122 -145 202 -276 122 -226 b 197 -26 122 -49 197 -26 b 435 -187 295 -59 435 -108 b 294 -276 435 -226 384 -276 z m 386 65 b 180 209 288 96 180 144 b 294 288 180 265 232 288 b 444 180 383 288 444 246 b 386 65 444 111 412 78 z"},timeSig9:{x_min:15,x_max:387,y_min:-244,y_max:245,ha:489,o:"m 223 -68 b 363 -20 311 -68 343 -42 b 370 -96 367 -50 370 -73 b 363 -166 370 -120 367 -140 b 240 -285 354 -219 318 -285 b 168 -258 204 -285 183 -274 b 223 -173 199 -245 223 -206 b 131 -81 223 -121 183 -81 b 37 -173 79 -81 37 -121 l 37 -176 b 37 -177 37 -176 37 -176 b 46 -223 37 -190 40 -212 b 269 -351 65 -275 125 -351 b 521 -161 399 -351 492 -228 b 557 24 536 -127 557 -56 b 448 287 557 112 533 212 b 261 353 364 350 311 353 b 22 127 210 353 22 294 b 223 -68 22 -14 132 -68 z m 276 294 b 363 147 324 294 363 228 b 276 1 363 66 324 1 b 189 147 229 1 189 66 b 276 294 189 228 229 294 z"},timeSigCommon:{x_min:0,x_max:463,y_min:-256,y_max:258,ha:514,o:"m 468 258 b 406 147 432 235 406 193 b 408 130 406 141 406 135 b 521 17 415 71 462 24 b 537 17 526 17 533 17 b 667 147 609 17 667 75 b 667 156 667 147 667 151 b 664 177 667 161 665 171 b 350 372 651 239 595 372 b 0 17 36 372 0 111 b 382 -369 0 -154 22 -369 b 641 -131 524 -369 635 -285 b 629 -120 641 -124 636 -120 l 611 -120 b 599 -131 605 -120 599 -125 b 382 -323 593 -251 508 -323 b 196 -128 256 -323 196 -255 l 196 147 b 356 320 196 228 228 320 b 469 271 423 320 454 295 b 471 264 471 268 471 266 b 468 258 471 262 471 259 z"},timeSigCutCommon:{x_min:0,x_max:463,y_min:-376,y_max:388,ha:764,o:"m 611 -120 b 599 -131 605 -120 599 -125 b 382 -323 593 -251 508 -323 b 369 -323 377 -323 373 -323 l 369 320 b 469 269 428 317 455 292 b 471 264 471 266 471 265 b 468 258 471 261 471 259 b 406 147 432 235 406 193 b 408 130 406 141 406 135 b 523 17 415 71 464 24 b 537 17 527 17 533 17 b 667 147 609 17 667 75 b 667 156 667 147 667 151 b 664 177 667 161 665 171 b 369 370 651 236 598 364 l 369 543 b 353 559 369 552 361 559 l 314 559 b 298 543 305 559 298 552 l 298 369 b 0 17 32 341 0 105 b 298 -364 0 -140 17 -334 l 298 -526 b 314 -541 298 -534 305 -541 l 353 -541 b 369 -526 361 -541 369 -534 l 369 -369 b 382 -369 373 -369 377 -369 b 641 -131 524 -369 635 -285 b 629 -120 641 -124 636 -120 z m 196 147 b 298 312 196 215 216 289 l 298 -310 b 196 -128 229 -285 196 -223 z"},timeSigPlus:{x_min:0,x_max:408,y_min:-204,y_max:204,ha:408,o:"m 327 33 l 327 275 b 308 294 327 285 318 294 l 279 294 b 261 275 269 294 261 285 l 261 33 l 19 33 b 0 14 9 33 0 24 l 0 -13 b 19 -33 0 -23 9 -33 l 261 -33 l 261 -274 b 279 -294 261 -284 269 -294 l 308 -294 b 327 -274 318 -294 327 -284 l 327 -33 l 567 -33 b 588 -13 577 -33 588 -23 l 588 14 b 567 33 588 24 577 33 z"},noteheadDoubleWhole:{x_min:0,x_max:538,y_min:-178,y_max:179,ha:357,o:"m 33 258 b 20 258 27 258 26 258 b 0 238 9 258 0 249 b 0 -236 0 226 0 -226 b 20 -256 0 -246 9 -256 b 33 -256 26 -256 27 -256 b 53 -236 43 -256 53 -245 b 53 238 53 -228 53 226 b 33 258 53 249 45 258 z m 649 258 b 636 258 644 258 642 258 b 616 238 625 258 616 249 b 616 125 616 235 616 187 b 389 196 573 167 500 196 b 160 125 276 196 203 167 b 160 238 160 187 160 235 b 140 258 160 249 151 258 b 127 258 134 258 132 258 b 107 238 115 258 107 249 b 107 -236 107 226 107 -226 b 127 -256 107 -246 115 -256 b 140 -256 132 -256 134 -256 b 160 -236 150 -256 160 -245 b 160 -122 160 -233 160 -186 b 389 -194 203 -166 276 -194 b 616 -122 500 -194 573 -166 b 616 -236 616 -186 616 -233 b 636 -256 616 -246 625 -256 b 649 -256 642 -256 644 -256 b 670 -236 660 -256 670 -245 b 670 238 670 -228 670 226 b 649 258 670 249 661 258 z m 462 -140 b 400 -148 445 -144 422 -148 b 314 -101 360 -148 333 -135 b 268 68 295 -65 269 29 b 268 76 268 71 268 73 b 314 141 268 109 282 130 b 377 150 331 145 354 150 b 462 102 416 150 442 140 b 510 -66 482 63 510 -29 b 462 -140 510 -104 497 -128 z m 755 258 b 742 258 749 258 747 258 b 721 238 730 258 721 249 b 721 -236 721 226 721 -226 b 742 -256 721 -246 730 -256 b 755 -256 747 -256 749 -256 b 775 -236 765 -256 775 -245 b 775 238 775 -228 775 226 b 755 258 775 249 766 258 z"},noteheadWhole:{x_min:0,x_max:373,y_min:-134,y_max:136,ha:270,o:"m 269 196 b 0 1 71 196 0 95 b 269 -193 0 -92 71 -193 b 537 1 468 -193 537 -92 b 269 196 537 95 468 196 z m 343 -138 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 148 68 176 -63 150 29 b 194 141 145 107 160 130 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 389 -65 363 63 389 -29 b 343 -138 389 -102 377 -128 z"},noteheadHalf:{x_min:0,x_max:325,y_min:-133,y_max:132,ha:265,o:"m 307 190 b 0 -60 167 190 0 73 b 161 -192 0 -122 45 -192 b 468 58 311 -192 468 -69 b 307 190 468 143 396 190 z m 268 -63 b 108 -124 264 -66 158 -124 b 50 -72 60 -124 50 -85 b 200 62 50 -12 194 59 b 360 122 206 65 308 122 b 418 71 395 122 418 102 b 268 -63 418 9 272 -60 z"},noteheadBlack:{x_min:0,x_max:325,y_min:-133,y_max:132,ha:265,o:"m 0 -60 b 161 -192 0 -122 45 -192 b 468 58 311 -192 468 -69 b 307 190 468 143 396 190 b 0 -60 167 190 0 72 z"},noteheadXBlack:{x_min:0,x_max:325,y_min:-132,y_max:132,ha:264,o:"m 461 138 b 468 153 465 141 468 147 l 468 154 b 462 167 468 160 465 164 l 445 184 b 431 190 441 187 436 190 b 418 186 426 190 420 189 l 235 40 l 50 186 b 37 190 48 189 42 190 b 24 184 32 190 29 187 l 6 167 b 0 153 3 164 0 158 b 7 138 0 147 3 141 l 183 0 l 7 -138 b 0 -153 3 -141 0 -147 b 6 -166 0 -157 3 -163 l 23 -184 b 37 -190 26 -189 32 -190 b 50 -186 42 -190 48 -189 l 235 -40 l 418 -186 b 431 -190 420 -189 426 -190 b 445 -184 436 -190 442 -189 l 462 -166 b 468 -153 465 -163 468 -157 b 461 -138 468 -147 465 -141 l 285 0 z"},noteheadCircleX:{x_min:0,x_max:325,y_min:-162,y_max:163,ha:325,o:"m 265 0 l 395 105 b 426 0 415 75 426 39 b 387 -115 426 -43 412 -84 z m 233 -27 l 360 -145 b 235 -192 327 -174 282 -192 b 99 -137 183 -192 134 -171 z m 202 1 l 73 -105 b 42 0 53 -75 42 -39 b 81 115 42 43 56 84 z m 235 29 l 108 145 b 233 193 141 174 186 193 b 369 138 285 193 334 173 z m 233 235 b 0 0 104 235 0 130 b 233 -233 0 -130 104 -233 b 468 0 363 -233 468 -130 b 233 235 468 130 363 235 z"},noteheadDoubleWholeSquare:{x_min:0,x_max:432,y_min:-179,y_max:177,ha:356,o:"m 590 255 b 570 235 579 255 570 246 l 570 203 l 53 203 l 53 235 b 33 255 53 246 45 255 l 20 255 b 0 235 9 255 0 246 l 0 -230 b 20 -251 0 -242 9 -251 l 33 -251 b 53 -230 45 -251 53 -242 l 53 -200 l 570 -200 l 570 -238 b 590 -258 570 -249 579 -258 l 603 -258 b 622 -238 615 -258 622 -249 l 622 235 b 603 255 622 246 615 255 z m 570 -101 l 53 -101 l 53 105 l 570 105 z"},noteheadSquareWhite:{x_min:0,x_max:310,y_min:-125,y_max:125,ha:250,o:"m 395 128 l 395 -128 l 52 -128 l 52 128 z m 446 180 l 0 180 l 0 -180 l 446 -180 z"},noteheadSquareBlack:{x_min:0,x_max:310,y_min:-125,y_max:125,ha:250,o:"m 446 180 l 0 180 l 0 -180 l 446 -180 z"},noteheadTriangleUpBlack:{x_min:0,x_max:310,y_min:-136,y_max:122,ha:258,o:"m 223 176 l 0 -196 l 446 -196 z"},noteheadSlashedDoubleWhole1:{x_min:-66,x_max:456,y_min:-213,y_max:212,ha:425,o:"m 652 298 b 638 305 649 304 644 305 b 626 301 634 305 629 304 l 560 248 b 543 256 557 253 550 256 b 530 256 537 256 536 256 b 510 236 518 256 510 248 b 510 204 510 235 510 223 l 455 161 b 281 194 413 181 356 194 b 53 124 168 194 96 166 b 53 236 53 186 53 233 b 29 256 53 253 42 256 b 20 256 26 256 23 256 b 0 236 9 256 0 248 b 0 -204 0 228 0 -98 l -88 -272 b -95 -288 -92 -276 -95 -282 b -91 -300 -95 -291 -94 -295 b -76 -307 -86 -304 -82 -307 b -65 -302 -72 -307 -68 -305 l 3 -248 b 20 -258 6 -253 12 -258 b 53 -238 33 -258 52 -255 b 53 -206 53 -236 53 -225 l 107 -161 b 281 -196 148 -183 206 -196 b 510 -124 393 -196 465 -166 b 510 -238 510 -187 510 -235 b 530 -258 510 -248 518 -258 b 563 -238 543 -258 563 -255 b 563 204 563 -229 563 98 l 649 272 b 657 288 655 276 657 282 b 652 298 657 291 655 295 z m 160 75 b 269 148 160 138 219 148 b 356 101 310 148 334 140 b 363 85 357 96 360 91 l 189 -56 b 160 66 174 -14 161 40 b 160 75 160 69 160 72 z m 53 -163 b 53 -124 53 -151 53 -138 b 76 -144 60 -131 68 -138 z m 402 -68 b 292 -148 402 -138 351 -148 b 207 -101 252 -150 226 -137 b 199 -84 204 -96 202 -91 l 373 56 b 402 -68 389 13 402 -40 z m 510 124 b 485 144 503 131 494 137 l 510 163 b 510 124 510 151 510 137 z"},noteheadSlashedWhole1:{x_min:-75,x_max:448,y_min:-211,y_max:214,ha:425,o:"m 641 301 b 625 308 636 305 631 308 b 613 304 621 307 618 307 l 439 160 b 269 196 399 181 343 196 b 0 1 71 196 0 95 b 69 -138 0 -49 20 -101 l -101 -271 b -108 -287 -105 -275 -108 -281 b -104 -298 -107 -291 -107 -294 b -88 -304 -99 -302 -94 -304 b -76 -301 -85 -304 -81 -304 l 98 -157 b 269 -193 138 -179 194 -193 b 537 1 468 -193 537 -92 b 468 141 537 52 517 104 l 638 274 b 645 289 642 278 645 284 b 641 301 644 292 644 297 z m 148 68 b 148 78 148 72 148 75 b 194 141 148 111 163 131 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 350 86 346 98 348 92 l 177 -55 b 148 68 163 -12 150 42 z m 389 -65 b 343 -138 389 -102 377 -128 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 187 -82 192 -95 190 -89 l 279 -6 l 361 58 b 389 -65 376 16 389 -39 z"},noteheadSlashedHalf1:{x_min:-98,x_max:424,y_min:-213,y_max:212,ha:425,o:"m 606 298 b 592 305 602 302 598 305 b 580 301 588 305 583 304 l 412 163 b 307 190 383 180 347 190 b 153 148 258 190 204 176 b 0 -60 58 98 0 13 b 14 -120 0 -81 4 -101 b 32 -143 20 -128 26 -135 l -134 -274 b -141 -288 -138 -276 -141 -282 b -137 -300 -141 -292 -140 -297 b -122 -307 -134 -304 -128 -307 b -111 -302 -118 -307 -114 -305 l 56 -164 b 161 -192 85 -181 121 -192 b 315 -151 210 -192 264 -179 b 468 58 410 -101 468 -16 b 454 117 468 78 464 98 b 436 141 449 125 444 134 l 603 272 b 611 287 608 275 611 281 b 606 298 611 291 609 295 z m 56 -98 b 49 -73 52 -91 49 -82 b 75 -23 49 -58 59 -39 b 199 60 99 1 147 32 b 337 118 251 89 302 111 b 359 121 344 120 351 121 b 361 121 360 121 360 121 l 225 9 l 69 -114 b 56 -98 65 -109 60 -104 z m 410 94 b 416 69 415 86 416 78 b 392 19 416 53 408 36 b 266 -65 367 -6 318 -36 b 128 -122 215 -94 163 -115 b 107 -125 121 -124 114 -125 b 104 -125 107 -125 105 -125 l 245 -9 l 396 111 b 410 94 402 107 408 101 z"},noteheadSlashedBlack1:{x_min:-98,x_max:424,y_min:-213,y_max:212,ha:425,o:"m 606 298 b 592 305 602 302 598 305 b 580 301 588 305 583 304 l 412 161 b 307 190 383 180 347 190 b 0 -60 167 190 0 72 b 32 -144 0 -89 10 -120 l -134 -274 b -141 -288 -138 -278 -141 -284 b -137 -301 -141 -292 -140 -297 b -122 -307 -134 -305 -128 -307 b -111 -304 -118 -307 -114 -307 l 56 -164 b 161 -192 82 -181 117 -192 b 468 58 311 -192 468 -71 b 436 141 468 91 456 120 l 603 271 b 611 285 608 275 611 281 b 606 298 611 289 609 294 z"},noteheadSlashedDoubleWhole2:{x_min:-66,x_max:456,y_min:-213,y_max:212,ha:425,o:"m 563 -204 b 563 236 563 -98 563 228 b 543 256 563 249 554 256 b 530 256 537 256 536 256 b 510 236 518 256 510 248 b 510 124 510 233 510 187 b 281 194 467 166 393 194 b 107 161 207 194 150 181 l 53 204 b 53 236 53 223 53 235 b 33 256 53 249 45 256 b 20 256 27 256 26 256 b 3 246 12 256 6 253 l -63 301 b -76 305 -68 304 -72 305 b -91 298 -81 305 -86 304 b -95 287 -94 295 -95 291 b -88 272 -95 281 -92 276 l 0 204 b 0 -238 0 98 0 -229 b 20 -258 0 -248 9 -258 b 33 -258 26 -258 27 -258 b 53 -238 43 -258 53 -246 b 53 -124 53 -235 53 -187 b 281 -196 96 -166 170 -196 b 456 -161 356 -196 413 -183 l 510 -206 b 510 -238 510 -225 510 -236 b 530 -258 510 -248 518 -258 b 543 -258 536 -258 537 -258 b 560 -246 549 -258 556 -252 l 626 -302 b 638 -307 631 -305 634 -307 b 654 -300 645 -307 649 -304 b 657 -288 655 -295 657 -292 b 651 -272 657 -282 655 -276 z m 207 140 b 269 148 225 144 248 148 b 356 101 310 148 336 140 b 402 -68 376 62 402 -30 b 402 -78 402 -71 402 -75 l 292 9 l 168 109 b 207 140 176 124 189 134 z m 78 144 b 53 124 69 137 60 131 b 53 163 53 137 53 150 z m 356 -141 b 294 -148 338 -145 315 -148 b 207 -101 253 -148 226 -137 b 161 66 189 -66 163 27 b 160 72 161 69 160 71 b 161 78 160 75 160 76 l 271 -9 l 395 -109 b 356 -141 387 -124 374 -134 z m 485 -144 b 510 -124 494 -138 503 -131 b 510 -163 510 -138 510 -151 z"},noteheadSlashedWhole2:{x_min:-75,x_max:448,y_min:-212,y_max:214,ha:426,o:"m 468 -138 b 537 1 517 -101 537 -49 b 269 196 537 95 468 196 b 98 160 196 196 140 181 l -76 304 b -88 308 -81 307 -84 307 b -104 301 -94 308 -99 305 b -108 289 -107 297 -107 292 b -101 274 -108 284 -105 278 l 69 141 b 0 1 20 104 0 52 b 269 -193 0 -92 71 -193 b 441 -157 343 -193 399 -179 l 613 -301 b 625 -305 618 -304 622 -305 b 641 -298 631 -305 636 -302 b 645 -287 644 -294 644 -291 b 638 -271 645 -281 642 -275 z m 194 141 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 389 -65 363 63 389 -29 b 389 -76 389 -69 389 -73 l 279 10 l 156 112 b 194 141 163 125 176 135 z m 343 -138 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 148 68 176 -63 150 29 b 148 76 148 71 148 73 b 148 81 148 78 148 79 l 258 -6 l 382 -108 b 343 -138 374 -122 361 -132 z"},noteheadSlashedHalf2:{x_min:-98,x_max:424,y_min:-213,y_max:212,ha:425,o:"m 386 -102 b 468 58 438 -55 468 4 b 454 117 468 78 464 98 b 307 190 428 164 373 190 b 153 148 258 190 204 176 b 108 120 137 140 122 130 l -111 301 b -122 305 -114 304 -118 305 b -137 298 -128 305 -134 302 b -141 287 -140 295 -141 291 b -134 272 -141 281 -138 275 l 85 101 b 0 -60 32 53 0 -7 b 14 -120 0 -81 4 -101 b 161 -192 40 -167 95 -192 b 315 -151 210 -192 264 -179 b 361 -122 333 -143 347 -132 l 580 -302 b 592 -307 583 -305 588 -307 b 606 -300 598 -307 602 -304 b 611 -288 609 -297 611 -292 b 603 -274 611 -282 608 -276 z m 199 60 b 337 118 251 89 302 111 b 359 121 344 120 351 121 b 410 94 382 121 400 112 b 416 69 415 86 416 78 b 392 19 416 53 408 36 b 308 -42 374 0 343 -20 l 245 7 l 189 55 b 199 60 192 56 196 58 z m 266 -65 b 128 -122 215 -94 163 -115 b 107 -125 121 -124 114 -125 b 56 -98 84 -125 66 -117 b 49 -73 52 -91 49 -82 b 75 -23 49 -58 59 -39 b 163 39 94 -4 125 17 l 225 -9 l 282 -56 b 266 -65 276 -59 272 -62 z"},noteheadSlashedBlack2:{x_min:-98.44444444444443,x_max:424,y_min:-213,y_max:212,ha:425,o:"m 384 -102 b 468 58 435 -58 468 0 b 307 190 468 143 396 190 b 108 121 239 190 167 163 l -111 301 b -124 305 -115 304 -120 305 b -138 298 -128 305 -134 302 b -141 289 -140 295 -141 292 b -141 287 -141 288 -143 288 b -135 272 -141 281 -140 275 l 84 101 b 0 -60 35 56 0 0 b 161 -192 0 -122 45 -192 b 361 -122 232 -192 304 -164 l 579 -302 b 590 -307 583 -305 588 -307 b 606 -300 596 -307 602 -304 b 611 -288 609 -297 611 -292 b 603 -274 609 -282 608 -276 z"},noteheadDiamondDoubleWhole:{x_min:0,x_max:373,y_min:-178,y_max:179,ha:357,o:"m 504 258 b 484 238 494 258 484 248 l 484 46 b 282 187 415 95 285 186 b 268 192 279 190 275 192 b 255 187 262 192 258 190 l 52 45 l 52 238 b 33 258 52 248 43 258 l 20 258 b 0 238 9 258 0 248 l 0 -236 b 20 -256 0 -248 9 -256 l 33 -256 b 52 -236 43 -256 52 -248 l 52 -45 l 249 -181 b 268 -190 258 -189 264 -190 b 282 -186 274 -190 279 -189 b 484 -43 285 -184 413 -94 l 484 -236 b 504 -256 484 -248 494 -256 l 517 -256 b 537 -236 528 -256 537 -248 l 537 238 b 517 258 537 248 528 258 z m 220 -115 l 102 -33 l 317 117 l 435 35 z"},noteheadDiamondWhole:{x_min:0,x_max:373,y_min:-133,y_max:132,ha:265,o:"m 282 -187 b 530 -13 285 -186 530 -13 b 537 0 534 -10 537 -6 b 530 13 537 4 534 10 b 282 186 530 13 287 183 b 268 190 279 189 275 190 b 255 186 262 190 258 189 l 7 12 b 0 -1 3 9 0 4 b 4 -13 0 -6 1 -10 l 249 -183 b 268 -192 258 -190 264 -192 b 282 -187 274 -192 279 -190 z m 220 -117 l 102 -35 l 317 115 l 435 33 z"},noteheadDiamondHalf:{x_min:0,x_max:335,y_min:-132,y_max:133,ha:265,o:"m 475 -13 b 482 0 480 -10 482 -6 b 475 13 482 4 480 10 l 253 187 b 240 192 251 190 246 192 b 229 187 236 192 232 190 l 7 13 b 0 0 3 10 0 6 b 7 -13 0 -4 3 -10 l 229 -186 b 240 -190 232 -189 236 -190 b 253 -186 246 -190 251 -189 z m 284 -115 l 92 33 l 199 117 l 390 -33 z"},noteheadDiamondBlack:{x_min:0,x_max:335,y_min:-132,y_max:133,ha:265,o:"m 475 -14 b 482 -1 480 -10 482 -6 b 475 13 482 4 480 10 l 253 187 b 240 192 251 190 246 192 b 229 187 236 192 232 190 l 7 13 b 0 0 3 10 0 4 b 7 -14 0 -6 3 -10 l 229 -186 b 240 -190 232 -189 236 -190 b 253 -186 246 -190 251 -189 z"},noteheadParenthesisRight:{x_min:0,x_max:75,y_min:-209.4142135623731,y_max:212,ha:421.4142135623731,o:"m 10 305 b 4 302 7 304 6 304 b 0 295 1 301 0 298 b 1 289 0 294 0 292 b 68 -10 1 288 68 160 b 1 -288 68 -95 50 -192 b 0 -292 0 -289 0 -291 b 4 -300 0 -295 1 -298 b 12 -301 7 -301 9 -302 b 17 -298 14 -301 16 -300 b 108 0 22 -292 108 -174 b 17 301 108 174 22 295 b 10 305 16 304 13 305 z"},noteheadParenthesisLeft:{x_min:0,x_max:75,y_min:-212,y_max:209.4142135623731,ha:421.4142135623731,o:"m 98 -305 b 104 -302 101 -304 102 -304 b 108 -295 107 -301 108 -298 b 107 -289 108 -294 108 -292 b 40 10 107 -288 40 -160 b 107 288 40 95 58 192 b 108 292 108 289 108 291 b 104 300 108 295 107 298 b 96 301 101 301 99 302 b 91 298 94 301 92 300 b 0 0 86 292 0 174 b 91 -301 0 -174 86 -295 b 98 -305 92 -304 95 -305 z"},noteheadMoonBlack:{x_min:0,x_max:310,y_min:-125,y_max:125,ha:250,o:"m 0 180 l 0 0 b 223 -180 0 -99 99 -180 b 446 0 347 -180 446 -99 l 446 180 z"},noteheadTriangleLeftBlack:{x_min:0,x_max:339,y_min:-136,y_max:122,ha:258,o:"m 0 176 l 0 -196 l 488 -196 z"},noteheadTriangleRightBlack:{x_min:0,x_max:339,y_min:-136,y_max:122,ha:258,o:"m 488 176 l 0 -196 l 488 -196 z"},noteheadTriangleRoundDownBlack:{x_min:0,x_max:310,y_min:-136,y_max:122,ha:258,o:"m 226 -196 l 446 63 b 226 176 446 63 384 176 b 0 63 68 176 0 63 z"},augmentationDot:{x_min:0,x_max:100,y_min:-50,y_max:50,ha:100,o:"m 0 0 b 72 -72 0 -40 32 -72 b 144 0 112 -72 144 -40 b 72 72 144 40 112 72 b 0 0 32 72 0 40 z"},tremolo1:{x_min:0,x_max:290,y_min:-93,y_max:96,ha:189,o:"m 0 48 l 0 -134 l 418 -43 l 418 138 z"},flag8thUp:{x_min:0,x_max:289.04376776750354,y_min:-817,y_max:12,ha:829,o:"m 0 -327 b 12 -343 0 -331 1 -338 b 291 -600 73 -363 197 -441 b 359 -827 317 -645 359 -707 b 294 -1140 359 -930 331 -1037 b 289 -1162 291 -1149 288 -1156 b 297 -1175 289 -1168 291 -1172 b 304 -1176 300 -1176 302 -1176 b 327 -1161 314 -1176 321 -1171 b 416 -798 395 -1041 418 -888 b 416 -780 416 -791 416 -786 b 302 -458 409 -595 302 -458 b 131 -220 307 -458 170 -281 b 50 -50 78 -138 53 -56 b 36 6 49 -46 36 6 b 19 17 35 12 27 17 b 0 -1 9 17 0 9 z"},flag8thDown:{x_min:0,x_max:309,y_min:-12,y_max:817,ha:829,o:"m 0 1 b 19 -17 0 -9 9 -17 b 36 -6 26 -17 35 -12 b 50 50 36 -4 49 46 b 117 196 52 56 65 111 b 331 458 173 289 259 357 b 445 780 402 559 445 654 b 338 1161 445 912 415 1021 b 317 1176 334 1171 325 1176 b 310 1175 314 1176 311 1176 b 300 1158 302 1172 300 1166 b 304 1140 300 1153 301 1146 b 384 827 361 1007 384 930 b 317 600 384 707 343 645 b 12 343 223 441 72 363 b 0 327 1 338 0 331 z"},flag16thUp:{x_min:0,x_max:279,y_min:-820,y_max:12,ha:832,o:"m 301 -681 b 148 -514 262 -631 219 -585 b 56 -372 92 -458 66 -409 b 52 -343 55 -364 53 -354 b 271 -510 125 -343 219 -442 b 340 -696 327 -583 340 -641 b 337 -739 340 -710 338 -724 b 301 -681 325 -716 312 -697 z m 0 -549 b 22 -563 0 -553 12 -559 b 258 -776 59 -576 171 -648 b 318 -950 307 -850 318 -901 b 317 -975 318 -959 318 -966 b 285 -1140 317 -1009 307 -1083 b 279 -1164 284 -1148 279 -1156 b 289 -1179 279 -1169 282 -1175 b 297 -1181 292 -1181 294 -1181 b 318 -1161 307 -1181 312 -1169 b 382 -962 344 -1120 382 -1043 b 374 -855 382 -920 379 -886 b 402 -678 389 -802 402 -749 b 333 -471 402 -603 382 -536 b 137 -228 265 -382 192 -307 b 42 0 82 -148 42 0 b 22 17 39 10 37 17 b 0 0 4 17 0 10 z"},flag16thDown:{x_min:0,x_max:309,y_min:-26,y_max:803,ha:829,o:"m 53 346 b 56 363 55 353 56 359 b 163 517 66 399 78 452 b 384 732 246 582 346 662 b 317 503 382 621 354 552 b 53 346 229 395 122 364 z m 0 -14 b 22 -37 0 -26 10 -37 b 43 -14 33 -37 40 -26 b 167 232 65 134 109 177 b 445 683 243 305 445 416 b 432 837 445 730 441 783 b 441 919 438 855 441 881 b 327 1149 441 1032 374 1112 b 304 1156 321 1153 312 1156 b 287 1152 298 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1135 b 382 930 344 1076 382 1027 b 374 876 382 912 380 893 l 373 871 b 373 871 373 871 373 871 b 327 789 366 842 350 815 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z"},flag32ndUp:{x_min:0,x_max:279,y_min:-821,y_max:186,ha:1007,o:"m 301 -683 b 148 -516 262 -632 219 -588 b 56 -373 92 -459 66 -410 b 50 -343 55 -366 53 -354 b 271 -500 125 -343 219 -432 b 340 -687 327 -575 340 -632 b 337 -739 340 -704 338 -721 b 301 -683 325 -716 312 -698 z m 271 -259 b 340 -446 327 -333 340 -392 b 338 -469 340 -455 338 -462 b 333 -461 337 -467 334 -464 b 91 -192 265 -372 145 -271 b 50 -92 69 -160 58 -124 b 271 -259 124 -92 219 -192 z m 0 -550 b 22 -564 0 -554 12 -560 b 258 -778 59 -577 171 -649 b 318 -952 307 -851 318 -903 b 317 -976 318 -960 318 -968 b 285 -1142 317 -1011 307 -1084 b 279 -1165 284 -1149 279 -1158 b 289 -1181 279 -1171 282 -1176 b 297 -1182 292 -1182 294 -1182 b 318 -1162 307 -1182 312 -1171 b 382 -963 344 -1122 382 -1044 b 374 -857 382 -922 379 -887 b 402 -668 389 -802 402 -740 b 386 -563 402 -632 396 -596 b 402 -441 395 -526 402 -487 b 402 -428 402 -436 402 -432 b 333 -220 402 -353 382 -285 b 137 23 265 -131 192 -56 b 42 251 82 102 42 251 b 22 268 39 261 37 268 b 0 251 4 268 0 261 z"},flag32ndDown:{x_min:0,x_max:309,y_min:-216,y_max:803,ha:1019,o:"m 50 73 b 91 171 58 105 71 141 b 347 402 145 251 272 317 b 384 454 361 418 374 435 b 324 239 384 347 361 287 b 50 73 235 130 122 94 z m 163 517 b 366 693 248 589 327 642 b 382 716 372 700 377 708 b 383 693 383 708 383 700 b 314 505 383 621 359 562 b 53 343 258 436 179 390 b 56 363 55 351 56 359 b 163 517 66 400 81 449 z m 0 -288 b 22 -311 0 -298 10 -311 b 43 -288 33 -311 40 -300 b 167 -40 65 -138 109 -95 b 445 409 243 32 445 143 b 431 577 445 462 439 520 b 441 651 435 602 439 626 b 441 675 441 658 441 667 b 441 687 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 305 1156 321 1153 314 1156 b 287 1152 300 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1136 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z"},flag64thUp:{x_min:0,x_max:279,y_min:-822,y_max:373,ha:1195,o:"m 333 -461 b 91 -192 265 -372 145 -271 b 50 -92 69 -161 58 -125 b 271 -251 125 -92 219 -183 b 340 -438 327 -324 340 -383 b 338 -469 340 -448 338 -459 b 333 -461 337 -467 334 -464 z m 301 -683 b 148 -517 262 -632 219 -588 b 56 -374 92 -461 66 -410 b 50 -343 55 -366 53 -356 b 271 -501 125 -343 219 -433 b 340 -688 327 -575 340 -634 b 337 -739 340 -706 338 -721 b 301 -683 325 -717 312 -698 z m 271 10 b 340 -176 327 -63 340 -121 b 337 -217 340 -190 338 -204 b 333 -212 336 -216 334 -213 b 91 65 265 -122 145 -16 b 48 177 66 101 53 143 l 50 177 b 271 10 124 177 217 78 z m 0 -552 b 22 -564 0 -554 12 -562 b 258 -778 59 -579 171 -649 b 318 -952 307 -851 317 -903 b 317 -976 318 -960 318 -968 b 285 -1142 317 -1012 307 -1084 b 279 -1165 284 -1149 279 -1158 b 289 -1181 279 -1172 282 -1178 b 297 -1184 292 -1182 295 -1184 b 318 -1164 307 -1182 312 -1172 b 382 -963 344 -1122 382 -1044 b 374 -857 382 -923 379 -887 b 402 -668 389 -804 402 -740 b 386 -563 402 -632 396 -596 b 402 -432 395 -523 402 -480 b 402 -418 402 -428 402 -423 b 383 -304 402 -379 396 -341 b 402 -170 393 -264 402 -222 b 402 -158 402 -166 402 -163 b 333 49 402 -84 382 -16 b 137 292 265 138 192 213 b 42 520 82 372 42 520 b 22 537 39 530 37 537 b 0 520 4 537 0 530 z"},flag64thDown:{x_min:0,x_max:309,y_min:-403,y_max:804,ha:1207,o:"m 52 -196 b 91 -102 59 -166 71 -131 b 347 128 145 -23 272 45 b 384 180 361 145 374 163 b 324 -30 384 76 361 16 b 52 -196 235 -140 124 -176 z m 163 517 b 366 693 248 589 327 644 b 382 717 372 701 377 708 b 383 693 383 708 383 701 b 314 505 383 621 359 562 b 53 343 258 438 179 390 b 56 363 55 351 56 359 b 163 517 66 400 81 449 z m 314 232 b 50 69 258 163 179 117 b 91 171 56 102 69 140 b 347 402 145 251 272 318 b 382 449 360 416 372 432 b 383 420 383 439 383 429 b 314 232 383 348 359 288 z m 0 -557 b 22 -580 0 -567 10 -580 b 43 -557 33 -580 40 -567 b 167 -310 65 -408 109 -364 b 445 140 243 -238 445 -125 b 431 307 445 192 439 249 b 441 377 436 331 439 354 b 441 406 441 387 441 397 b 441 418 441 410 441 413 b 423 546 441 464 432 507 b 441 651 432 582 438 618 b 441 675 441 660 441 667 b 441 688 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 305 1158 321 1153 314 1156 b 287 1152 300 1158 292 1156 b 279 1145 281 1151 279 1148 b 294 1129 279 1140 288 1136 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 563 z"},flag128thUp:{x_min:0,x_max:279,y_min:-821,y_max:573,ha:1394,o:"m 0 -550 b 22 -563 0 -553 12 -560 b 258 -776 59 -576 171 -648 b 318 -950 307 -850 318 -901 b 317 -975 318 -959 318 -966 b 285 -1140 317 -1011 307 -1083 b 279 -1164 284 -1148 279 -1156 b 289 -1179 279 -1171 282 -1176 b 297 -1182 292 -1181 294 -1181 b 318 -1162 307 -1182 312 -1169 b 382 -962 344 -1120 382 -1043 b 374 -857 382 -922 379 -887 b 402 -668 389 -802 402 -740 b 383 -554 402 -629 396 -590 b 402 -399 396 -503 402 -452 b 382 -284 402 -359 396 -321 b 402 -125 396 -230 402 -180 b 383 -14 402 -86 396 -49 b 402 130 396 35 402 81 b 333 348 402 204 382 284 b 137 592 265 438 192 513 b 42 808 82 671 46 793 b 22 825 39 818 37 825 b 0 808 4 825 0 818 z m 271 310 b 340 111 328 235 340 170 b 338 73 340 98 338 86 b 333 81 336 76 334 79 b 91 357 265 170 145 276 b 48 469 66 393 53 435 l 50 469 b 271 310 124 469 217 377 z m 301 -681 b 148 -523 262 -631 219 -593 b 56 -383 92 -465 66 -420 b 49 -343 55 -374 52 -359 l 50 -343 b 271 -500 124 -343 217 -432 b 340 -688 327 -575 340 -634 b 337 -737 340 -706 338 -721 b 301 -681 325 -716 312 -697 z m 333 -461 b 91 -192 265 -372 145 -271 b 48 -73 66 -154 53 -111 l 48 -73 l 50 -73 b 271 -232 124 -73 217 -163 b 340 -419 327 -305 340 -364 b 337 -468 340 -435 338 -452 b 333 -461 336 -465 334 -464 z m 333 -192 b 91 84 265 -102 145 4 b 48 200 65 121 53 164 l 48 200 l 50 200 b 271 42 124 200 217 109 b 340 -147 327 -32 340 -92 b 337 -197 340 -164 338 -181 b 333 -192 336 -196 334 -194 z"},flag128thDown:{x_min:0,x_max:309,y_min:-591,y_max:803,ha:1394,o:"m 0 -828 b 22 -851 0 -838 10 -851 b 43 -828 33 -851 40 -840 b 167 -580 65 -678 109 -635 b 445 -131 243 -508 445 -397 b 431 36 445 -79 439 -22 b 441 108 436 60 439 85 b 441 137 441 117 441 127 b 441 147 441 140 441 144 b 423 275 441 193 432 236 b 441 377 433 310 438 344 b 441 406 441 387 441 396 b 441 418 441 410 441 413 b 423 546 441 464 432 507 b 441 649 432 582 438 616 b 441 675 441 658 441 667 b 441 687 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 304 1156 321 1153 312 1156 b 287 1152 298 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1135 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z m 314 -37 b 50 -200 258 -107 179 -153 b 91 -102 58 -168 71 -132 b 347 128 145 -23 272 45 b 382 176 360 143 372 160 b 383 151 383 167 383 160 b 314 -37 383 79 359 19 z m 314 232 b 50 69 258 163 179 117 b 91 171 56 101 69 138 b 347 402 145 251 272 317 b 382 449 360 416 372 432 b 383 420 383 439 383 429 b 314 232 383 347 359 288 z m 163 517 b 366 693 248 589 327 642 b 382 716 372 700 377 708 b 383 693 383 708 383 700 b 314 505 382 621 359 560 b 53 343 258 436 179 390 b 56 363 55 350 56 357 b 163 517 66 399 81 449 z m 52 -467 b 91 -372 59 -435 71 -402 b 347 -141 145 -292 272 -225 b 384 -89 361 -125 374 -108 b 324 -301 382 -194 361 -255 b 52 -467 235 -410 122 -446 z"},accidentalFlat:{x_min:0,x_max:203,y_min:-176,y_max:453,ha:629,o:"m 289 114 b 173 223 281 170 246 223 b 52 170 101 223 59 179 l 58 632 b 37 652 58 644 49 652 l 20 652 b 0 632 9 652 0 644 l 7 -233 b 27 -253 7 -245 16 -253 b 39 -251 30 -253 36 -252 b 216 -114 45 -248 138 -202 b 292 78 271 -52 292 19 b 289 114 292 91 291 102 z m 190 58 b 148 -85 190 36 184 -30 b 48 -183 124 -122 75 -161 l 52 98 b 134 153 55 111 76 153 b 190 73 186 153 190 104 b 190 58 190 66 190 62 z"},accidentalNatural:{x_min:0,x_max:171,y_min:-323,y_max:325,ha:648,o:"m 239 264 b 228 268 236 266 232 268 b 222 266 226 268 223 266 l 40 216 l 40 468 l 0 468 l 0 -245 b 20 -264 0 -256 9 -264 b 26 -264 22 -264 24 -264 l 207 -213 l 207 -465 l 246 -465 b 246 248 246 -226 246 1 b 239 264 246 253 243 261 z m 40 -140 l 40 96 l 207 144 l 207 -94 z"},accidentalSharp:{x_min:0,x_max:244,y_min:-333,y_max:334,ha:667,o:"m 336 151 b 351 171 344 153 351 163 l 351 256 b 331 276 351 268 343 276 b 328 276 330 276 330 276 l 281 266 l 281 481 l 240 481 l 240 258 l 112 232 l 112 435 l 72 435 l 72 223 l 16 212 b 0 192 7 210 0 200 l 0 189 l 0 105 l 0 108 b 20 88 0 96 9 88 b 24 88 22 88 23 88 l 72 98 l 72 -140 l 16 -151 b 0 -171 7 -153 0 -163 l 0 -255 b 20 -275 0 -266 9 -275 b 24 -275 22 -275 23 -275 l 72 -265 l 72 -480 l 112 -480 l 112 -256 l 240 -230 l 240 -433 l 281 -433 l 281 -222 l 336 -212 b 351 -192 344 -210 351 -200 l 351 -107 b 331 -86 351 -95 343 -86 b 328 -86 330 -86 330 -86 l 281 -96 l 281 141 z m 112 107 l 240 132 l 240 -105 l 112 -132 z"},accidentalDoubleSharp:{x_min:0,x_max:275,y_min:-137,y_max:138,ha:275,o:"m 360 73 l 376 73 b 396 94 387 73 396 82 l 396 179 b 376 199 396 190 387 199 l 291 199 b 271 179 279 199 271 190 l 271 161 l 271 102 l 200 30 l 196 30 l 124 102 l 124 179 b 105 199 124 190 117 199 l 20 199 b 0 179 9 199 0 190 l 0 94 b 20 73 0 82 9 73 l 35 73 l 36 73 l 96 73 l 167 3 l 167 -1 l 96 -73 l 36 -73 l 35 -73 l 20 -73 b 0 -92 9 -73 0 -81 l 0 -177 b 20 -197 0 -189 9 -197 l 105 -197 b 124 -177 117 -197 124 -189 l 124 -101 l 196 -32 l 200 -32 l 271 -101 l 271 -161 l 271 -163 l 271 -177 b 291 -197 271 -189 279 -197 l 376 -197 b 396 -177 387 -197 396 -189 l 396 -92 b 376 -73 396 -81 387 -73 l 361 -73 l 360 -73 l 300 -73 l 228 -1 l 228 1 l 300 73 z"},accidentalDoubleFlat:{x_min:0,x_max:371,y_min:-176,y_max:453,ha:629,o:"m 531 115 b 415 223 523 171 488 223 b 294 171 343 223 301 180 l 300 632 b 279 652 300 644 291 652 l 262 652 b 242 632 251 652 242 644 l 246 199 b 173 223 228 213 204 223 b 52 170 101 223 59 179 l 58 632 b 37 652 58 644 49 652 l 20 652 b 0 632 9 652 0 644 l 7 -233 b 27 -253 7 -245 16 -253 b 39 -249 30 -253 36 -251 b 216 -114 45 -246 138 -202 b 248 -69 226 -102 239 -82 l 249 -233 b 269 -253 249 -245 258 -253 b 281 -249 272 -253 278 -251 b 458 -112 287 -246 380 -200 b 534 79 513 -50 534 20 b 531 115 534 92 533 104 z m 190 58 b 148 -85 190 36 184 -30 b 48 -183 124 -122 75 -161 l 52 98 b 134 153 55 111 76 153 b 190 73 186 153 190 104 b 190 58 190 66 190 62 z m 432 58 b 390 -85 432 36 426 -30 b 289 -183 366 -122 317 -161 l 294 98 b 376 153 297 111 318 153 b 432 73 428 153 432 104 b 432 58 432 66 432 62 z"},accidentalParensLeft:{x_min:0,x_max:75,y_min:-212,y_max:209.4142135623731,ha:421.4142135623731,o:"m 98 -305 b 104 -302 101 -304 102 -304 b 108 -295 107 -301 108 -298 b 107 -289 108 -294 108 -292 b 40 10 107 -288 40 -160 b 107 288 40 95 58 192 b 108 292 108 289 108 291 b 104 300 108 295 107 298 b 96 301 101 301 99 302 b 91 298 94 301 92 300 b 0 0 86 292 0 174 b 91 -301 0 -174 86 -295 b 98 -305 92 -304 95 -305 z"},accidentalParensRight:{x_min:0,x_max:75,y_min:-209.4142135623731,y_max:212,ha:421.4142135623731,o:"m 10 305 b 4 302 7 304 6 304 b 0 295 1 301 0 298 b 1 289 0 294 0 292 b 68 -10 1 288 68 160 b 1 -288 68 -95 50 -192 b 0 -292 0 -289 0 -291 b 4 -300 0 -295 1 -298 b 12 -301 7 -301 9 -302 b 17 -298 14 -301 16 -300 b 108 0 22 -292 108 -174 b 17 301 108 174 22 295 b 10 305 16 304 13 305 z"},accidentalQuarterToneFlatStein:{x_min:0,x_max:193,y_min:-176,y_max:452,ha:628,o:"m 0 84 b 107 -145 0 -26 65 -105 b 245 -249 166 -202 245 -249 b 253 -253 248 -251 249 -253 b 272 -235 264 -253 272 -245 l 278 632 b 259 651 278 642 269 651 l 248 651 b 229 632 238 651 229 642 l 232 174 b 125 217 223 186 192 217 b 0 84 53 217 0 173 z m 148 154 b 232 102 212 154 232 115 b 233 107 232 99 233 102 l 235 -179 b 134 -72 207 -156 160 -111 b 92 58 98 -17 92 36 b 92 75 92 62 92 68 b 148 154 92 105 96 154 z"},accidentalThreeQuarterTonesFlatZimmermann:{x_min:0,x_max:422,y_min:-176,y_max:452,ha:628,o:"m 608 84 b 482 217 608 173 554 217 b 376 174 416 217 384 186 l 379 632 b 360 651 379 642 370 651 l 348 651 b 330 632 338 651 330 642 l 336 -235 b 354 -253 336 -245 344 -253 b 363 -249 359 -253 360 -251 b 501 -145 363 -249 442 -202 b 608 84 543 -105 608 -26 z m 459 154 b 516 75 511 154 516 105 b 516 58 516 68 516 62 b 474 -72 516 36 510 -17 b 373 -179 448 -111 400 -156 l 374 107 b 376 102 374 102 376 99 b 459 154 376 115 396 154 z m 0 84 b 107 -145 0 -26 65 -105 b 245 -249 166 -202 245 -249 b 253 -253 248 -251 249 -253 b 272 -235 264 -253 272 -245 l 278 632 b 259 651 278 642 269 651 l 248 651 b 229 632 238 651 229 642 l 232 174 b 125 217 223 186 192 217 b 0 84 53 217 0 173 z m 148 154 b 232 102 212 154 232 115 b 233 107 232 99 233 102 l 235 -179 b 134 -72 207 -156 160 -111 b 92 58 98 -17 92 36 b 92 75 92 62 92 68 b 148 154 92 105 96 154 z"},accidentalQuarterToneSharpStein:{x_min:0,x_max:180,y_min:-316,y_max:320,ha:636,o:"m 243 144 b 259 164 252 145 259 156 l 259 249 b 239 269 259 261 251 269 b 235 268 238 269 236 268 l 150 251 l 150 461 l 109 461 l 109 242 l 16 222 b 0 203 7 220 0 212 l 0 120 b 20 99 0 108 9 99 b 24 99 22 99 23 99 l 109 117 l 109 -121 l 16 -141 b 0 -160 7 -143 0 -151 l 0 -243 b 20 -264 0 -255 9 -264 b 24 -264 22 -264 23 -264 l 109 -246 l 109 -455 l 150 -455 l 150 -238 l 243 -219 b 259 -199 252 -217 259 -207 l 259 -114 b 239 -95 259 -102 251 -95 b 235 -95 238 -95 236 -95 l 150 -112 l 150 125 z"},accidentalThreeQuarterTonesSharpStein:{x_min:0,x_max:290,y_min:-328,y_max:339,ha:667,o:"m 400 158 b 416 179 409 160 416 170 l 416 264 b 397 284 416 275 409 284 b 393 284 396 284 395 284 l 348 274 l 348 488 l 308 488 l 308 265 l 223 248 l 223 465 l 184 465 l 184 240 l 108 225 l 108 442 l 69 442 l 69 216 l 16 204 b 0 186 7 203 0 194 l 0 102 b 20 82 0 91 9 82 b 24 82 22 82 23 82 l 69 92 l 69 -147 l 16 -158 b 0 -177 7 -160 0 -168 l 0 -261 b 20 -281 0 -272 9 -281 b 24 -281 22 -281 23 -281 l 69 -272 l 69 -472 l 108 -472 l 108 -264 l 184 -248 l 184 -451 l 223 -451 l 223 -240 l 308 -223 l 308 -426 l 348 -426 l 348 -215 l 400 -204 b 418 -184 409 -203 418 -193 l 418 -99 b 397 -79 418 -88 409 -79 b 393 -79 396 -79 395 -79 l 348 -89 l 348 148 z m 184 -122 l 108 -138 l 108 99 l 184 115 z m 223 122 l 308 140 l 308 -98 l 223 -115 z"},accidentalBuyukMucennebFlat:{x_min:0,x_max:277,y_min:-176,y_max:454,ha:630,o:"m 396 115 b 279 225 387 173 354 225 b 158 171 204 225 164 179 l 160 317 l 336 419 l 336 482 l 161 380 l 161 488 l 336 590 l 336 654 l 163 552 l 164 634 b 144 654 164 645 156 654 l 127 654 b 107 634 115 654 107 645 l 108 520 l 0 456 l 0 393 l 108 456 l 109 350 l 0 285 l 0 222 l 109 287 l 114 -235 b 134 -253 114 -246 122 -253 b 145 -251 138 -253 141 -252 b 323 -114 145 -251 242 -204 b 399 79 377 -52 399 20 b 396 115 399 92 397 104 z m 297 58 b 255 -85 297 36 291 -30 b 154 -184 230 -122 181 -163 l 158 96 b 240 153 161 109 181 153 b 297 73 292 153 297 104 b 297 58 297 66 297 62 z"},accidentalBakiyeFlat:{x_min:0,x_max:277,y_min:-176,y_max:454,ha:630,o:"m 396 115 b 279 225 387 173 354 225 b 158 171 204 225 164 179 l 161 348 l 336 452 l 336 516 l 161 413 l 164 634 b 144 654 164 645 156 654 l 127 654 b 107 634 115 654 107 645 l 109 382 l 0 318 l 0 255 l 109 318 l 114 -235 b 134 -253 114 -246 122 -253 b 145 -251 138 -253 143 -252 b 323 -114 145 -251 242 -204 b 399 79 377 -52 399 20 b 396 115 399 92 397 104 z m 297 58 b 255 -85 297 36 291 -30 b 156 -184 230 -122 183 -163 l 158 96 b 240 153 161 109 181 153 b 297 73 292 153 297 104 b 297 58 297 66 297 62 z"},accidentalKucukMucennebSharp:{x_min:0,x_max:348,y_min:-316,y_max:318,ha:634,o:"m 494 121 b 482 125 491 124 487 125 b 478 124 481 125 480 124 l 269 68 l 269 127 l 412 164 b 425 181 420 167 425 173 l 425 266 b 418 282 425 272 422 279 b 406 285 415 285 410 285 b 402 285 405 285 403 285 l 269 249 l 269 458 l 232 458 l 232 239 l 89 200 b 76 181 81 197 76 190 l 76 98 b 84 84 76 92 79 86 b 95 79 86 81 91 79 b 99 81 96 79 98 81 l 232 115 l 232 58 l 14 -3 b 0 -20 6 -6 0 -12 l 0 -104 b 7 -118 0 -109 3 -115 b 19 -122 10 -121 14 -122 b 23 -122 20 -122 22 -122 l 232 -66 l 232 -124 l 89 -163 b 76 -180 81 -166 76 -171 l 76 -264 b 84 -279 76 -269 79 -276 b 95 -282 86 -282 91 -282 b 99 -282 96 -282 98 -282 l 232 -246 l 232 -455 l 269 -455 l 269 -236 l 412 -199 b 425 -180 420 -196 425 -189 l 425 -95 b 418 -81 425 -89 422 -84 b 406 -76 415 -78 410 -76 b 402 -78 405 -76 403 -78 l 269 -114 l 269 -55 l 487 4 b 501 22 495 7 501 13 l 501 107 b 494 121 501 112 498 118 z"},articAccentAbove:{x_min:0,x_max:361,y_min:0,y_max:235,ha:235,o:"m 26 337 b 20 338 24 337 22 338 b 0 318 9 338 0 330 l 0 285 b 14 266 0 276 7 269 l 323 170 l 14 72 b 0 53 7 69 0 62 l 0 20 b 20 0 0 9 9 0 b 26 1 22 0 24 1 l 505 150 b 520 170 513 153 520 161 b 505 189 520 179 513 186 z"},articAccentBelow:{x_min:0,x_max:361,y_min:-235,y_max:0,ha:235,o:"m 26 -1 b 20 0 24 -1 22 0 b 0 -20 9 0 0 -9 l 0 -53 b 14 -72 0 -62 7 -69 l 323 -168 l 14 -266 b 0 -285 7 -269 0 -276 l 0 -318 b 20 -338 0 -330 9 -338 b 26 -337 22 -338 24 -337 l 505 -189 b 520 -168 513 -186 520 -177 b 505 -150 520 -160 513 -153 z"},articTenutoAbove:{x_min:0,x_max:316,y_min:0,y_max:46,ha:46,o:"m 20 66 b 0 46 9 66 0 58 l 0 20 b 20 0 0 9 9 0 l 435 0 b 455 20 446 0 455 9 l 455 46 b 435 66 455 58 446 66 z"},articTenutoBelow:{x_min:0,x_max:316,y_min:-46,y_max:0,ha:46,o:"m 20 0 b 0 -20 9 0 0 -9 l 0 -46 b 20 -66 0 -58 9 -66 l 435 -66 b 455 -46 446 -66 455 -58 l 455 -20 b 435 0 455 -9 446 0 z"},articStaccatoAbove:{x_min:-.25,x_max:78.25,y_min:-.25,y_max:78,ha:78.25,o:"m 16 16 b 96 16 39 -6 73 -6 b 96 95 118 39 118 73 b 16 95 73 118 39 118 b 16 16 -6 73 -6 39 z"},articStaccatoBelow:{x_min:-.25,x_max:78.25,y_min:-78.25,y_max:0,ha:78.25,o:"m 16 -96 b 96 -96 39 -118 73 -118 b 96 -17 118 -73 118 -39 b 16 -17 73 6 39 6 b 16 -96 -6 -39 -6 -73 z"},articStaccatissimoAbove:{x_min:0,x_max:127,y_min:0,y_max:248,ha:248,o:"m 163 357 b 150 353 154 357 150 353 l 99 300 b 92 295 96 297 95 295 b 85 300 89 295 88 297 l 35 353 b 22 357 35 353 30 357 b 0 338 13 357 0 351 b 73 22 0 323 73 22 b 92 0 75 16 78 0 b 111 22 107 0 109 16 b 183 338 111 22 183 323 b 163 357 183 351 171 357 z"},articStaccatissimoBelow:{x_min:0,x_max:127,y_min:-248,y_max:0,ha:248,o:"m 20 -357 b 33 -353 29 -357 33 -353 l 84 -300 b 91 -295 86 -297 88 -295 b 98 -300 94 -295 95 -297 l 148 -353 b 161 -357 148 -353 153 -357 b 183 -338 170 -357 183 -351 b 109 -22 183 -323 109 -22 b 91 0 108 -16 105 0 b 72 -22 76 0 73 -16 b 0 -338 72 -22 0 -323 b 20 -357 0 -351 12 -357 z"},articMarcatoAbove:{x_min:1,x_max:296,y_min:0,y_max:253,ha:253,o:"m 36 10 l 173 239 l 298 10 b 317 0 301 4 310 0 l 408 0 b 426 20 419 0 426 9 b 425 30 426 23 426 27 l 230 356 b 213 364 226 361 222 363 b 196 356 207 364 199 361 l 1 30 z"},articMarcatoBelow:{x_min:0,x_max:295,y_min:-253,y_max:0,ha:253,o:"m 390 -10 l 253 -239 l 128 -10 b 109 0 125 -4 117 0 l 19 0 b 0 -20 7 0 0 -9 b 1 -30 0 -23 0 -27 l 196 -356 b 213 -364 200 -361 204 -363 b 230 -356 219 -364 228 -361 l 425 -30 z"},fermataAbove:{x_min:0,x_max:622,y_min:0,y_max:368,ha:368,o:"m 778 374 b 448 530 642 521 523 530 b 120 374 373 530 255 521 b 0 65 49 297 0 143 b 20 19 0 37 6 19 b 161 265 60 19 40 143 b 445 373 268 372 410 373 b 448 373 446 373 446 373 b 451 373 449 373 449 373 b 734 265 485 373 628 372 b 876 19 855 143 835 19 b 896 65 890 19 896 36 b 778 374 896 143 848 298 z m 348 99 b 448 0 348 45 393 0 b 547 99 503 0 547 45 b 448 199 547 154 503 199 b 348 99 393 199 348 154 z"},fermataBelow:{x_min:0,x_max:622,y_min:-368,y_max:0,ha:368,o:"m 778 -374 b 896 -65 848 -298 896 -143 b 876 -19 896 -36 890 -19 b 734 -265 835 -19 855 -143 b 451 -373 628 -372 485 -373 b 448 -373 449 -373 449 -373 b 445 -373 446 -373 446 -373 b 161 -265 410 -373 268 -372 b 20 -19 40 -143 60 -19 b 0 -65 6 -19 0 -37 b 120 -374 0 -143 49 -297 b 448 -530 255 -521 373 -530 b 778 -374 523 -530 642 -521 z m 348 -99 b 448 -199 348 -154 393 -199 b 547 -99 503 -199 547 -154 b 448 0 547 -45 503 0 b 348 -99 393 0 348 -45 z"},fermataLongAbove:{x_min:0,x_max:623,y_min:0,y_max:368,ha:368,o:"m 40 0 l 40 399 l 858 399 l 858 0 l 897 0 l 897 510 b 877 530 897 521 888 530 l 20 530 b 0 510 9 530 0 521 l 0 0 z m 350 148 b 449 49 350 94 395 49 b 547 148 504 49 547 94 b 449 248 547 203 504 248 b 350 148 395 248 350 203 z"},fermataLongBelow:{x_min:0,x_max:623,y_min:-368,y_max:0,ha:368,o:"m 0 -510 b 20 -530 0 -521 9 -530 l 877 -530 b 897 -510 888 -530 897 -521 l 897 0 l 858 0 l 858 -399 l 40 -399 l 40 0 l 0 0 z m 350 -148 b 449 -248 350 -203 395 -248 b 547 -148 504 -248 547 -203 b 449 -49 547 -94 504 -49 b 350 -148 395 -49 350 -94 z"},fermataVeryLongAbove:{x_min:0,x_max:842,y_min:0,y_max:549,ha:549,o:"m 276 0 l 276 399 l 936 399 l 936 0 l 976 0 l 976 510 b 956 530 976 521 968 530 l 256 530 b 236 510 245 530 236 521 l 236 0 z m 507 148 b 606 49 507 94 552 49 b 706 148 661 49 706 94 b 606 248 706 203 661 248 b 507 148 552 248 507 203 z m 40 0 l 40 661 l 1172 661 l 1172 0 l 1212 0 l 1212 772 b 1192 791 1212 783 1204 791 l 20 791 b 0 772 9 791 0 783 l 0 0 z"},fermataVeryLongBelow:{x_min:0,x_max:842,y_min:-549,y_max:0,ha:549,o:"m 236 -510 b 256 -530 236 -521 245 -530 l 956 -530 b 976 -510 968 -530 976 -521 l 976 0 l 936 0 l 936 -399 l 276 -399 l 276 0 l 236 0 z m 507 -148 b 606 -248 507 -203 552 -248 b 706 -148 661 -248 706 -203 b 606 -49 706 -94 661 -49 b 507 -148 552 -49 507 -94 z m 0 -772 b 20 -791 0 -783 9 -791 l 1192 -791 b 1212 -772 1204 -791 1212 -783 l 1212 0 l 1172 0 l 1172 -661 l 40 -661 l 40 0 l 0 0 z"},fermataShortAbove:{x_min:0,x_max:642,y_min:0,y_max:454,ha:454,o:"m 363 148 b 462 49 363 94 408 49 b 562 148 517 49 562 94 b 462 248 562 203 517 248 b 363 148 408 248 363 203 z m 477 645 b 461 654 474 649 467 654 b 445 645 455 654 448 649 l 4 32 b 0 20 3 29 0 23 b 20 0 0 9 9 0 l 82 0 b 98 9 88 0 95 4 l 461 514 l 827 9 b 842 0 829 4 837 0 l 904 0 b 924 20 916 0 924 9 b 920 32 924 23 922 29 z"},fermataShortBelow:{x_min:0,x_max:642,y_min:-454,y_max:0,ha:454,o:"m 363 -148 b 462 -248 363 -203 408 -248 b 562 -148 517 -248 562 -203 b 462 -49 562 -94 517 -49 b 363 -148 408 -49 363 -94 z m 920 -32 b 924 -20 922 -29 924 -23 b 904 0 924 -9 916 0 l 842 0 b 827 -9 837 0 829 -4 l 461 -514 l 98 -9 b 82 0 95 -4 88 0 l 20 0 b 0 -20 9 0 0 -9 b 4 -32 0 -23 3 -29 l 445 -645 b 461 -654 448 -649 455 -654 b 477 -645 467 -654 474 -649 z"},breathMarkComma:{x_min:0,x_max:191,y_min:0,y_max:321,ha:321,o:"m 82 0 b 275 285 215 92 275 183 b 115 462 275 396 212 462 b 0 356 46 462 0 413 b 115 246 0 294 53 246 b 181 258 157 246 177 256 b 192 261 184 259 189 261 b 199 259 194 261 196 261 b 203 245 202 258 203 253 b 48 43 203 183 147 112 z"},caesura:{x_min:0,x_max:380,y_min:0,y_max:490,ha:490,o:"m 285 706 b 285 706 285 706 285 706 b 271 696 279 706 274 701 l 1 22 b 0 16 0 20 0 17 b 16 0 0 7 7 0 l 50 0 b 65 10 56 0 62 4 l 334 684 b 336 690 334 685 336 688 b 320 706 336 698 328 706 z m 213 22 b 212 16 213 20 212 17 b 228 0 212 7 219 0 l 262 0 b 276 10 268 0 274 4 l 546 684 b 547 690 547 685 547 688 b 531 706 547 698 540 706 l 497 706 b 482 696 491 706 485 701 z"},caesuraCurved:{x_min:0,x_max:368,y_min:0,y_max:491,ha:491,o:"m 262 707 b 245 693 253 707 246 701 b 1 26 233 603 177 348 b 0 17 0 23 0 20 b 16 0 0 9 6 0 b 30 7 22 0 27 3 b 318 687 259 341 304 602 b 318 690 318 688 318 688 b 301 707 318 698 310 707 z m 474 707 b 458 693 465 707 459 701 b 213 26 446 603 389 348 b 212 19 212 23 212 20 b 229 0 212 9 219 0 b 243 7 235 0 240 3 b 530 687 472 341 516 602 b 530 690 530 688 530 688 b 514 707 530 698 523 707 z"},restMaxima:{x_min:0,x_max:450,y_min:-250,y_max:250,ha:500,o:"m 158 -360 b 180 -338 170 -360 180 -350 l 180 338 b 158 360 180 350 170 360 l 22 360 b 0 338 9 360 0 350 l 0 -338 b 22 -360 0 -350 9 -360 z m 626 -360 b 648 -338 638 -360 648 -350 l 648 338 b 626 360 648 350 638 360 l 490 360 b 468 338 477 360 468 350 l 468 -338 b 490 -360 468 -350 477 -360 z"},restDoubleWhole:{x_min:0,x_max:125,y_min:-11,y_max:262,ha:273,o:"m 158 -16 b 180 6 171 -16 180 -6 l 180 356 b 158 377 180 367 171 377 l 22 377 b 0 356 10 377 0 367 l 0 6 b 22 -16 0 -6 10 -16 z"},restWhole:{x_min:0,x_max:325,y_min:-131,y_max:5,ha:136,o:"m 20 7 b 0 -13 9 7 0 -1 l 0 -168 b 20 -189 0 -180 9 -189 l 448 -189 b 468 -168 459 -189 468 -180 l 468 -13 b 448 7 468 -1 459 7 z"},restWholeLegerLine:{x_min:-139,x_max:464,y_min:-122,y_max:14,ha:136,o:"m 449 20 l 19 20 l -200 20 l -200 -20 l 0 -20 l 0 -156 b 19 -176 0 -167 7 -176 l 449 -176 b 468 -156 461 -176 468 -167 l 468 -20 l 668 -20 l 668 20 z"},restHalf:{x_min:0,x_max:325,y_min:-4,y_max:132,ha:136,o:"m 0 14 b 20 -6 0 -6 0 -6 l 448 -6 b 468 14 468 -6 468 -6 l 468 170 b 448 190 468 190 468 190 l 20 190 b 0 170 0 190 0 190 z"},restHalfLegerLine:{x_min:-139,x_max:464,y_min:-14,y_max:122,ha:136,o:"m 668 20 l 468 20 l 468 156 b 449 176 468 167 461 176 l 19 176 b 0 156 7 176 0 167 l 0 20 l -200 20 l -200 -20 l 19 -20 l 449 -20 l 668 -20 z"},restQuarter:{x_min:0,x_max:235,y_min:-331,y_max:401,ha:732,o:"m 331 -239 b 323 -229 330 -238 327 -235 l 157 -24 b 154 -16 156 -23 154 -19 b 157 -3 154 -12 156 -6 l 304 219 b 307 229 305 222 307 226 l 307 242 b 302 253 307 246 305 251 l 69 569 b 55 577 69 569 63 577 b 43 573 50 577 48 576 b 36 559 37 569 36 563 b 40 543 36 550 40 543 l 150 393 b 154 376 153 389 154 383 b 150 359 154 370 153 363 l 4 137 b 1 125 3 134 1 128 l 1 112 b 6 101 1 108 3 104 l 167 -99 b 131 -95 161 -98 148 -95 b 49 -124 107 -95 75 -101 b 0 -229 17 -153 0 -193 b 16 -285 0 -249 4 -269 b 154 -468 46 -331 154 -468 b 171 -477 154 -468 161 -477 b 180 -474 174 -477 177 -477 b 190 -456 187 -468 190 -462 b 186 -444 190 -451 187 -446 b 135 -353 181 -436 135 -353 b 125 -307 135 -353 125 -333 b 150 -246 125 -288 131 -265 b 206 -223 167 -229 187 -223 b 252 -236 225 -223 240 -229 l 308 -272 b 320 -275 308 -272 314 -275 b 334 -268 325 -275 330 -274 b 338 -255 337 -262 338 -259 b 334 -243 338 -251 337 -248 z"},rest8th:{x_min:0,x_max:276,y_min:-255,y_max:204,ha:459,o:"m 384 292 b 379 294 383 292 380 294 b 360 282 370 294 363 289 b 245 141 354 274 310 189 b 180 112 226 127 203 117 b 206 181 196 131 206 154 b 104 284 206 238 160 284 b 0 181 46 284 0 238 b 65 85 0 137 27 101 b 144 68 86 75 115 68 b 269 109 186 68 230 81 b 320 157 287 122 304 140 l 156 -356 l 194 -367 l 396 268 b 397 275 397 269 397 272 b 384 292 397 282 393 288 z"},rest16th:{x_min:1,x_max:344,y_min:-507,y_max:204,ha:711,o:"m 494 268 b 495 275 495 271 495 272 b 482 292 495 282 491 289 b 475 294 480 294 477 294 b 456 282 467 294 461 289 b 285 115 422 213 364 135 b 310 184 302 135 310 158 b 203 284 310 240 259 284 b 104 177 145 281 104 233 b 171 84 105 134 134 98 b 252 69 197 72 225 69 b 423 164 324 72 380 108 l 423 164 l 359 -65 b 183 -245 338 -132 256 -226 b 207 -176 199 -225 207 -200 b 102 -76 207 -118 158 -76 b 1 -183 45 -76 1 -125 b 69 -275 1 -226 32 -262 b 150 -289 96 -287 121 -289 b 321 -194 222 -287 278 -251 l 174 -720 l 213 -730 z"},rest32nd:{x_min:0,x_max:391,y_min:-507,y_max:460,ha:967,o:"m 217 71 b 408 171 348 71 402 161 l 354 -46 b 184 -240 323 -121 268 -217 b 204 -171 200 -220 204 -197 b 102 -76 204 -114 158 -76 b 0 -177 46 -76 0 -120 b 140 -288 0 -252 63 -288 b 320 -186 216 -288 276 -246 l 189 -721 l 228 -730 l 562 638 b 563 644 563 639 563 642 b 549 661 563 652 557 658 b 543 662 547 662 544 662 b 524 649 534 662 528 657 b 361 487 497 589 431 504 b 383 556 379 508 383 530 b 282 652 383 611 338 652 b 179 549 226 652 179 609 b 249 451 179 505 210 464 b 311 439 268 444 288 441 b 330 441 317 439 323 439 b 498 541 400 445 458 485 l 442 310 b 271 117 413 238 351 137 b 292 186 288 138 292 160 b 189 282 292 243 245 282 b 88 180 132 282 88 238 b 217 71 88 112 153 71 z"},rest64th:{x_min:0,x_max:423,y_min:-758,y_max:464,ha:1222,o:"m 207 -1083 l 246 -1092 b 608 644 282 -919 605 634 b 609 649 608 647 609 648 b 595 667 609 658 603 665 b 589 668 593 668 592 668 b 569 654 577 668 575 664 b 474 521 563 644 530 573 b 412 487 456 505 435 494 b 432 546 425 503 432 526 b 328 649 432 606 382 649 b 226 546 275 649 226 608 b 360 438 226 465 300 438 b 501 492 419 438 474 465 b 546 546 527 518 533 526 l 547 547 l 500 323 b 399 161 491 300 452 209 b 337 125 382 144 360 132 b 357 184 350 143 357 134 b 253 288 357 235 317 288 b 151 187 190 288 151 236 b 285 76 151 138 183 76 b 471 184 412 76 465 173 l 423 -45 b 324 -204 413 -69 374 -158 b 262 -240 305 -222 284 -233 b 281 -180 274 -223 281 -212 b 177 -78 281 -147 258 -78 b 75 -180 98 -78 75 -153 b 209 -289 75 -207 88 -289 b 395 -181 330 -289 389 -193 l 350 -397 b 248 -564 337 -449 285 -530 b 186 -599 229 -580 207 -592 b 204 -540 197 -583 204 -563 b 102 -438 204 -501 174 -438 b 0 -540 29 -438 0 -501 b 132 -648 0 -579 24 -648 b 320 -540 266 -648 315 -552 z"},rest128th:{x_min:-1,x_max:475,y_min:-759,y_max:717,ha:1476,o:"m 677 1028 b 664 1032 672 1031 667 1032 b 644 1018 654 1032 649 1028 b 549 886 638 1008 605 937 b 487 851 531 870 510 858 b 507 910 500 868 507 890 b 403 1014 507 971 456 1014 b 301 910 350 1014 301 972 b 435 802 301 829 374 802 b 576 857 494 802 549 829 b 621 910 602 883 608 890 l 622 912 l 575 687 b 474 526 566 664 527 573 b 412 490 456 508 435 497 b 432 549 425 507 432 498 b 328 652 432 599 392 652 b 226 552 265 652 226 600 b 360 441 226 503 258 441 b 546 549 487 441 540 537 l 498 320 b 399 160 488 295 449 207 b 337 125 380 143 359 131 b 356 184 348 141 356 153 b 252 287 356 217 333 287 b 150 184 173 287 150 212 b 284 76 150 157 163 76 b 469 183 405 76 464 171 l 425 -33 b 323 -200 412 -85 360 -166 b 261 -235 304 -216 282 -228 b 279 -176 272 -219 279 -199 b 177 -72 279 -137 249 -72 b 75 -176 104 -72 75 -137 b 207 -284 75 -215 99 -284 b 395 -176 341 -284 390 -187 l 347 -409 b 248 -566 330 -461 282 -533 b 186 -600 229 -582 207 -593 b 204 -541 197 -583 204 -564 b 102 -438 204 -501 174 -438 b -1 -541 29 -438 -1 -503 b 132 -649 -1 -580 24 -649 b 318 -546 256 -649 307 -567 l 206 -1084 l 245 -1093 b 683 1008 281 -920 680 996 b 684 1015 683 1009 684 1014 b 677 1028 684 1020 683 1024 z"},dynamicPiano:{x_min:-95,x_max:317,y_min:-163,y_max:263,ha:426,o:"m 186 -235 l 186 -206 l 78 -206 l 161 26 l 166 16 b 229 -29 166 16 180 -16 b 256 -32 238 -32 248 -32 b 445 166 336 -32 415 49 b 456 246 454 197 456 223 b 374 373 456 343 396 367 b 356 376 369 374 361 376 b 242 314 311 376 266 338 l 238 310 l 235 315 b 154 377 235 315 204 370 b 138 379 148 377 144 379 b 0 226 91 379 42 346 l 26 213 b 63 301 32 232 46 278 b 102 328 72 314 89 325 b 108 328 104 328 107 328 b 120 325 112 328 117 327 b 127 304 125 321 127 314 b 94 192 127 269 101 206 l -49 -206 l -137 -206 l -137 -235 z m 226 17 b 215 19 223 17 217 17 b 187 81 193 27 187 53 b 204 180 187 125 203 177 b 297 317 217 235 259 295 b 324 325 307 323 315 325 b 336 324 328 325 333 325 b 350 311 341 323 347 317 b 356 278 354 302 356 291 b 333 161 356 239 341 187 b 242 20 314 105 278 37 b 226 17 238 17 230 17 z"},dynamicMezzo:{x_min:-7,x_max:374,y_min:-2,y_max:251,ha:253,o:"m 488 63 b 467 48 481 50 474 48 b 459 49 464 48 462 48 b 449 65 452 52 449 58 b 461 112 449 76 455 94 b 474 157 464 121 471 150 b 492 281 482 183 492 242 b 491 301 492 288 492 295 b 436 359 484 340 467 359 b 340 307 399 359 359 331 l 337 301 l 334 308 b 272 359 334 308 311 359 b 177 310 232 359 202 343 l 173 304 l 171 311 b 117 360 171 311 153 353 b 96 361 109 361 102 361 b 29 328 60 361 39 340 b -10 252 20 318 0 284 l 12 240 b 68 318 12 240 36 318 b 75 317 71 318 72 318 b 86 295 84 314 86 307 b 59 194 86 275 75 240 b 1 20 59 193 6 33 b 0 13 1 17 0 16 b 3 4 0 10 1 7 b 14 -1 6 1 9 -1 l 36 -1 b 91 -1 58 -1 86 -1 b 107 22 94 -1 101 -1 b 127 99 114 53 121 79 b 235 310 132 121 186 310 b 243 305 238 310 242 308 b 248 289 246 302 248 297 b 216 160 248 265 233 219 b 173 22 194 89 173 22 b 173 16 173 20 173 19 b 176 3 173 12 173 6 b 187 -1 179 0 183 -1 l 266 -1 b 282 16 272 -1 279 0 b 284 26 282 17 284 22 b 392 302 312 228 359 288 b 396 304 393 302 395 304 l 397 304 b 400 302 399 304 399 302 b 408 289 403 301 408 297 b 369 140 408 275 399 217 b 356 75 360 117 356 95 b 370 23 356 55 360 37 b 428 -3 382 6 408 -3 b 536 99 492 -3 517 49 b 539 108 537 102 537 105 l 514 120 b 488 63 514 120 498 81 z"},dynamicForte:{x_min:-137,x_max:334,y_min:-193,y_max:421,ha:614,o:"m -122 -86 b -197 -161 -161 -86 -197 -122 b -81 -278 -197 -236 -147 -278 b 35 -228 -35 -278 -1 -264 b 202 173 98 -164 167 50 b 238 297 215 219 228 264 l 238 300 l 341 300 b 356 314 350 300 356 305 l 356 346 b 341 360 356 354 350 360 l 256 360 l 256 364 b 330 554 297 511 308 537 b 359 566 341 563 351 566 b 366 564 361 566 364 564 b 380 553 373 563 377 559 b 382 546 382 550 382 549 b 373 528 382 539 379 531 b 351 478 359 517 351 498 b 354 458 351 471 353 465 b 384 426 359 445 370 432 b 410 420 390 423 400 420 b 445 431 420 420 432 423 b 478 472 459 438 474 456 b 481 497 481 480 481 488 b 467 550 481 514 477 533 b 376 605 455 572 422 598 b 351 606 369 606 360 606 b 225 553 317 606 272 595 b 122 363 187 520 154 456 l 122 360 l 13 360 b -1 346 4 360 -1 354 l -1 314 b 13 300 -1 305 4 300 l 102 300 l 102 294 b 66 140 88 236 76 187 b 24 -35 55 86 42 32 l 20 -52 b -53 -235 -10 -170 -19 -212 b -78 -242 -60 -239 -69 -242 b -98 -235 -85 -242 -92 -239 b -105 -222 -102 -232 -105 -228 b -105 -219 -105 -220 -105 -220 b -94 -204 -104 -213 -101 -207 b -58 -144 -66 -193 -58 -167 b -122 -86 -58 -124 -71 -86 z"},dynamicRinforzando:{x_min:-12,x_max:230,y_min:0,y_max:254,ha:254,o:"m 272 364 b 200 341 239 364 212 348 b 168 310 187 333 177 321 l 164 304 b 109 363 164 304 151 353 b 88 366 102 364 95 366 b 22 331 52 366 32 343 b -17 255 13 321 -7 287 l 4 243 b 60 321 4 243 29 321 b 68 320 63 321 65 321 b 78 297 75 317 78 308 b 49 180 78 272 65 230 l 0 23 b 0 17 0 22 0 20 b 3 4 0 13 0 7 b 14 0 6 1 10 0 l 94 0 b 109 17 99 0 107 1 b 111 27 109 19 111 23 b 209 302 140 230 186 279 b 225 311 215 308 220 311 b 229 310 226 311 228 311 b 233 304 233 307 233 305 b 233 301 233 302 233 301 b 216 268 220 291 216 279 b 225 243 216 259 219 249 b 262 229 235 232 249 229 b 304 242 279 229 295 235 b 331 308 320 255 331 275 b 272 364 331 341 304 364 z"},dynamicSforzando:{x_min:0,x_max:208,y_min:-5,y_max:263,ha:268,o:"m 242 328 b 217 289 222 317 217 300 b 258 249 217 274 230 249 b 298 284 285 249 295 269 b 300 295 300 287 300 291 b 189 379 300 328 272 379 b 49 259 92 379 49 315 b 99 173 49 229 59 196 b 164 137 117 163 140 151 b 194 88 189 122 194 102 b 124 24 194 73 177 24 b 72 46 82 24 72 39 b 73 49 72 48 72 49 b 96 96 78 52 96 62 b 50 150 96 134 72 150 b 0 91 29 150 0 134 b 124 -7 0 26 49 -7 b 282 111 199 -7 282 24 b 171 239 282 197 207 219 b 128 292 135 259 128 268 b 193 347 128 317 156 347 b 242 328 230 347 242 328 z"},dynamicZ:{x_min:-42,x_max:239,y_min:-1,y_max:258,ha:259,o:"m 229 292 b 235 288 232 292 233 291 b 236 284 236 285 236 285 b 233 278 236 281 235 279 b -42 55 232 276 -4 85 b -60 24 -56 43 -60 33 b -50 4 -60 12 -50 4 b -35 0 -45 1 -40 0 b 9 29 -14 0 1 19 b 50 69 17 43 26 69 b 89 35 75 69 81 50 b 170 -1 104 10 137 -1 b 243 22 197 -1 223 6 b 304 147 288 56 304 118 b 264 196 304 176 294 196 b 226 156 239 196 226 174 b 251 117 226 128 249 122 b 251 108 251 114 251 111 b 243 79 251 98 249 88 b 212 56 236 68 223 56 b 202 59 209 56 204 56 b 163 92 194 63 186 75 b 108 122 140 109 114 120 b 105 125 105 124 105 124 b 107 128 105 127 107 128 b 312 304 107 128 302 294 b 341 340 324 315 336 327 b 344 347 343 341 344 346 l 344 356 b 333 369 343 367 336 369 l 331 369 l 262 363 b 217 361 245 361 230 361 b 156 366 193 361 174 363 b 114 372 147 367 125 372 b 107 370 111 372 108 370 b 86 344 98 367 89 360 b 37 222 72 265 42 232 b 37 219 37 220 37 220 b 50 207 37 213 43 207 l 66 207 b 81 225 75 207 76 215 b 108 291 85 235 105 285 b 118 297 111 297 112 297 b 167 289 125 295 144 291 b 181 289 171 289 177 289 b 229 292 202 289 222 291 z"},ornamentTrill:{x_min:-12,x_max:383,y_min:0,y_max:383,ha:383,o:"m 464 396 b 376 359 408 396 376 359 l 364 370 b 346 377 357 377 346 377 l 197 377 l 246 528 b 246 531 246 530 246 531 b 226 552 246 541 236 552 l 213 552 b 199 544 209 552 202 547 b 124 482 196 541 130 487 b 117 471 118 478 117 471 b 84 377 117 471 102 431 l 3 377 b -17 360 -14 377 -17 360 l -17 341 b 3 324 -17 325 3 324 l 66 324 b 0 85 35 229 0 117 b 92 0 0 16 48 0 b 186 35 137 0 186 35 b 194 13 186 35 190 24 b 212 0 199 1 212 0 l 276 0 b 298 16 295 0 298 16 l 298 43 b 321 147 298 75 321 147 l 382 284 b 412 325 382 284 396 311 b 446 341 425 336 438 341 b 452 340 448 341 451 341 b 428 288 432 327 428 305 b 485 233 428 271 446 233 b 552 308 534 233 552 264 b 464 396 552 353 520 396 z m 222 143 b 147 78 210 104 171 78 b 137 79 143 78 140 78 b 121 115 125 85 121 99 b 137 190 121 148 137 190 l 180 324 l 275 324 b 279 320 279 324 279 320 b 222 143 279 320 235 187 z"},ornamentTurn:{x_min:0,x_max:456,y_min:0,y_max:232,ha:232,o:"m 527 334 b 442 269 488 334 442 312 b 501 204 442 228 468 204 b 570 226 533 204 540 226 b 613 164 598 226 613 204 l 613 163 b 550 98 613 127 586 98 b 448 143 508 98 485 109 l 328 255 l 298 284 b 174 334 262 317 223 334 b 0 170 92 334 0 278 b 131 0 0 68 58 0 b 215 65 170 0 215 22 b 156 130 215 107 189 130 b 86 108 124 130 117 108 b 43 170 59 108 43 130 l 43 171 b 108 236 43 207 72 236 b 209 192 150 236 171 225 l 328 79 l 360 50 b 482 0 396 17 433 0 b 657 164 564 0 657 56 b 527 334 657 266 600 334 z"},ornamentTurnSlash:{x_min:0,x_max:456,y_min:-80,y_max:313,ha:393,o:"m 527 334 b 442 269 488 334 442 312 b 501 204 442 228 468 204 b 570 226 533 204 540 226 b 613 164 598 226 613 204 l 613 163 b 550 98 613 127 586 98 b 448 143 508 98 485 109 l 354 230 l 354 431 b 336 451 354 442 347 451 l 323 451 b 302 431 311 451 302 442 l 302 279 l 298 284 b 174 334 262 317 223 334 b 0 170 92 334 0 278 b 131 0 0 68 58 0 b 215 65 170 0 215 22 b 156 130 215 107 189 130 b 86 108 124 130 117 108 b 43 170 59 108 43 130 l 43 171 b 108 236 43 207 72 236 b 209 192 150 236 171 225 l 302 104 l 302 -96 b 323 -115 302 -108 311 -115 l 336 -115 b 354 -96 347 -115 354 -108 l 354 55 l 360 50 b 482 0 396 17 433 0 b 657 164 564 0 657 56 b 527 334 657 266 600 334 z"},ornamentMordent:{x_min:0,x_max:473,y_min:-77,y_max:316,ha:393,o:"m 647 302 l 562 166 l 446 347 b 429 357 444 353 435 357 b 413 347 423 357 416 353 l 363 262 l 363 435 b 343 455 363 446 354 455 l 331 455 b 311 435 320 455 311 446 l 311 173 l 310 171 l 203 347 b 186 357 200 353 192 357 b 168 347 180 357 171 353 l 0 69 l 35 48 l 120 189 l 226 10 b 243 0 229 4 238 0 b 261 10 249 0 258 4 l 311 95 l 311 -91 b 331 -111 311 -102 320 -111 l 343 -111 b 363 -91 354 -111 363 -102 l 363 184 l 366 189 l 478 10 b 495 0 481 4 490 0 b 513 10 501 0 510 4 l 681 281 z"},ornamentShortTrill:{x_min:0,x_max:473,y_min:0,y_max:248,ha:248,o:"m 647 302 l 562 166 l 446 347 b 431 357 444 353 436 357 b 413 347 425 357 416 353 l 310 171 l 203 347 b 186 357 200 353 192 357 b 168 347 180 357 173 353 l 0 69 l 35 48 l 120 189 l 226 10 b 243 0 229 4 238 0 b 261 10 249 0 258 4 l 366 189 l 478 9 b 495 0 481 3 490 0 b 513 10 501 0 510 4 l 681 281 z"},ornamentTremblement:{x_min:0,x_max:654,y_min:0,y_max:248,ha:248,o:"m 907 302 l 822 166 l 708 348 b 691 357 704 354 701 357 b 674 347 685 357 677 353 l 648 302 l 563 166 l 449 348 b 432 357 446 354 438 357 b 415 347 426 357 418 353 l 415 346 l 311 171 l 203 348 b 186 357 200 354 192 357 b 168 348 177 357 171 354 l 168 347 l 0 69 l 35 48 l 120 190 l 226 10 b 243 0 229 4 238 0 l 245 0 b 261 10 251 0 258 4 l 367 189 l 480 10 b 497 0 482 4 491 0 b 513 10 503 0 510 4 l 625 192 l 739 10 b 756 0 742 4 750 0 b 772 10 762 0 769 4 l 942 282 z"},ornamentPrecompAppoggTrill:{x_min:0,x_max:680,y_min:0,y_max:388,ha:388,o:"m 860 170 l 746 353 b 729 361 743 359 737 361 b 713 351 723 361 716 357 l 685 307 l 600 170 l 487 353 b 481 359 485 356 484 357 b 469 361 478 360 472 361 b 452 351 464 361 455 357 l 348 176 l 240 353 b 223 361 238 359 229 361 b 206 353 215 361 209 359 l 40 76 l 40 541 b 20 559 39 552 30 559 b 0 541 10 559 1 552 l 0 26 b 19 1 0 16 9 4 b 26 0 20 1 24 0 b 48 13 35 0 43 6 l 72 52 l 157 194 l 265 14 b 282 4 268 9 276 4 b 298 14 288 4 295 9 l 405 193 l 517 14 b 534 4 520 9 528 4 b 550 14 540 4 547 9 l 664 196 l 776 14 b 793 4 779 9 788 4 b 811 14 799 4 808 9 l 979 287 l 945 307 z"},ornamentPrecompSlideTrillDAnglebert:{x_min:0,x_max:662,y_min:-158,y_max:248,ha:406,o:"m 834 166 l 720 348 b 704 357 717 354 713 357 b 687 348 697 357 690 353 l 661 302 l 660 302 l 575 166 l 461 348 b 455 354 459 350 456 353 b 444 357 452 356 448 357 b 428 347 438 357 431 353 l 323 171 l 215 347 b 213 350 215 348 215 350 b 213 350 213 350 213 350 l 213 351 l 212 351 l 212 353 l 210 353 l 210 353 l 209 354 b 207 354 209 354 207 354 b 197 357 206 356 200 357 b 197 357 197 357 197 357 b 194 357 196 357 196 357 b 180 347 187 357 183 353 l 180 346 l 69 164 b 0 -50 23 88 0 17 b 49 -219 0 -108 16 -163 b 66 -228 52 -223 59 -228 b 76 -225 69 -228 73 -226 b 86 -207 82 -222 86 -215 b 84 -197 86 -204 85 -200 b 40 -52 55 -150 40 -102 b 104 143 40 10 62 73 l 131 190 l 239 10 b 256 0 242 4 249 0 l 256 0 b 272 10 262 0 269 4 l 379 189 l 491 10 b 508 0 494 4 503 0 b 508 0 508 0 508 0 l 508 0 b 526 10 514 0 521 4 l 638 192 l 750 10 b 768 0 755 4 762 0 l 768 0 b 785 10 773 0 782 4 l 785 10 l 953 282 l 919 302 z"},ornamentPrecompSlideTrillBach:{x_min:0,x_max:662,y_min:-158,y_max:321,ha:479,o:"m 834 166 l 720 348 b 704 357 716 354 713 357 b 687 348 698 357 690 354 l 660 304 l 660 302 l 632 259 l 632 442 b 612 462 632 454 624 462 l 599 462 b 579 442 588 462 579 454 l 579 173 l 575 166 l 461 348 b 455 356 459 351 458 354 b 445 359 452 357 448 359 b 428 348 439 359 431 354 l 323 171 l 215 347 b 213 350 215 348 213 350 l 213 351 l 212 353 l 210 353 l 210 354 l 207 354 b 197 357 204 356 200 357 b 180 348 189 357 183 354 l 179 346 l 69 164 b 0 -49 23 88 0 19 b 49 -217 0 -107 17 -163 b 66 -228 52 -223 60 -228 b 76 -225 69 -228 73 -226 b 86 -207 82 -222 86 -213 b 84 -197 86 -204 85 -200 b 42 -50 56 -148 42 -101 b 104 144 42 12 62 75 l 131 190 l 239 10 b 256 0 242 4 251 0 b 274 10 262 0 271 4 l 379 190 l 491 10 b 508 0 494 4 503 0 b 526 10 514 0 523 4 l 579 98 l 579 -84 b 599 -104 579 -95 588 -104 l 612 -104 b 632 -84 624 -104 632 -95 l 632 183 l 638 192 l 750 10 b 768 0 753 4 762 0 b 785 10 773 0 782 4 l 953 282 l 919 302 z"},ornamentPrecompTrillSuffixDandrieu:{x_min:0,x_max:662,y_min:0,y_max:406,ha:406,o:"m 904 575 b 887 585 901 580 893 585 b 877 582 884 585 880 583 b 867 564 871 579 867 570 b 870 554 867 562 868 557 b 912 408 897 505 912 458 b 850 213 912 346 891 282 l 822 167 l 714 348 b 697 357 711 354 703 357 b 680 348 691 357 683 354 l 575 168 l 462 348 b 445 357 459 354 451 357 b 428 348 439 357 431 354 l 315 167 l 203 348 b 186 357 200 354 192 357 b 168 348 180 357 171 354 l 0 76 l 35 55 l 120 192 l 233 10 b 249 0 238 4 240 0 b 266 10 255 0 264 4 l 294 55 l 379 192 l 492 9 b 498 3 494 6 495 4 b 508 0 501 1 505 0 b 526 10 514 0 523 4 l 631 186 l 737 13 b 746 3 739 10 743 4 b 756 0 749 1 753 0 b 773 9 762 0 770 3 l 884 193 b 953 406 930 269 953 338 b 904 575 953 464 936 520 z"},ornamentPrecompDoubleCadenceUpperPrefix:{x_min:0,x_max:857,y_min:0,y_max:248,ha:248,o:"m 383 140 b 413 189 399 166 412 187 b 520 10 423 171 516 16 b 537 0 523 4 530 0 b 554 10 543 0 550 4 b 660 189 557 16 649 171 b 772 10 671 173 766 19 b 791 0 778 1 785 0 b 806 10 796 0 802 4 b 919 192 809 16 907 174 l 1031 10 b 1048 0 1035 4 1043 0 l 1048 0 b 1066 10 1054 1 1063 4 l 1066 10 l 1234 282 l 1200 302 l 1115 166 l 1002 348 b 985 357 998 354 994 357 b 968 348 978 357 971 353 l 855 166 b 742 348 845 183 746 341 b 726 357 737 354 732 357 b 708 348 719 357 711 354 b 603 171 704 341 613 189 b 495 348 593 189 498 343 b 478 357 492 353 487 357 b 461 348 469 357 464 353 b 357 173 459 346 393 235 b 213 79 320 111 284 79 b 66 176 143 79 95 112 b 40 279 43 228 40 275 b 20 300 40 291 30 300 b 0 278 9 300 0 289 b 29 161 0 276 3 219 b 213 39 65 81 130 39 b 383 140 297 39 346 73 z"},ornamentPrecompTrillLowerSuffix:{x_min:0,x_max:565,y_min:-171,y_max:249,ha:420,o:"m 347 168 l 235 348 b 217 359 230 354 226 359 b 200 348 209 359 203 353 b 3 30 197 344 6 35 b 0 20 0 26 0 24 b 22 0 0 9 10 0 b 37 9 27 0 35 3 l 151 192 b 265 10 161 174 262 13 b 281 0 268 6 272 0 b 298 10 289 0 295 3 l 403 186 l 511 10 b 528 0 516 4 521 0 b 546 10 537 0 541 4 l 698 265 b 775 22 744 202 775 112 b 700 -215 775 -60 752 -144 b 696 -226 697 -219 696 -222 b 704 -243 696 -232 700 -239 b 717 -246 708 -246 713 -246 b 733 -239 723 -246 729 -243 b 814 20 789 -160 814 -69 b 711 312 814 132 773 242 b 696 320 707 317 700 320 b 680 310 691 320 684 318 b 595 168 671 297 602 181 l 488 348 b 471 359 484 354 478 359 b 454 348 464 359 456 353 b 347 168 449 343 357 186 z"},brassMuteClosed:{x_min:0,x_max:312,y_min:0,y_max:312,ha:312,o:"m 22 256 b 0 225 7 256 0 240 b 22 193 0 209 7 193 l 193 193 l 193 22 b 225 0 193 7 209 0 b 256 22 240 0 256 7 l 256 193 l 428 193 b 449 225 442 193 449 209 b 428 256 449 240 442 256 l 256 256 l 256 428 b 225 449 256 442 240 449 b 193 428 209 449 193 442 l 193 256 z"},brassMuteOpen:{x_min:0,x_max:280,y_min:0,y_max:280,ha:280,o:"m 202 403 b 0 202 91 403 0 312 b 202 0 0 91 91 0 b 403 202 312 0 403 91 b 202 403 403 312 312 403 z m 202 40 b 40 202 112 40 40 112 b 202 363 40 291 112 363 b 363 202 291 363 363 291 b 202 40 363 112 291 40 z"},stringsDownBow:{x_min:0,x_max:315,y_min:0,y_max:293,ha:293,o:"m 40 0 l 40 291 l 413 291 l 413 0 l 454 0 l 454 402 b 433 422 454 413 445 422 l 20 422 b 0 402 9 422 0 402 l 0 0 z"},stringsUpBow:{x_min:0,x_max:262,y_min:0,y_max:343,ha:343,o:"m 374 485 b 357 494 372 490 363 494 l 337 494 b 318 481 330 494 321 488 l 189 118 l 59 481 b 40 494 56 488 48 494 l 20 494 b 0 474 9 494 0 485 b 1 467 0 472 1 468 l 170 13 b 189 0 173 6 181 0 b 207 13 196 0 204 6 l 376 467 b 377 474 376 468 377 472 b 374 485 377 477 376 482 z"},stringsHarmonic:{x_min:0,x_max:181,y_min:0,y_max:181,ha:181,o:"m 131 220 b 220 131 181 220 220 181 b 131 40 220 81 181 40 b 40 131 81 40 40 81 b 131 220 40 181 81 220 z m 131 261 b 0 131 59 261 0 203 b 131 0 0 59 59 0 b 261 131 203 0 261 59 b 131 261 261 203 203 261 z"},pluckedSnapPizzicatoAbove:{x_min:0,x_max:269,y_min:0,y_max:389,ha:389,o:"m 213 540 b 194 560 213 552 204 560 b 174 540 183 560 174 552 l 174 386 b 0 193 76 376 0 294 b 194 0 0 86 86 0 b 387 193 301 0 387 86 b 213 386 387 294 311 376 z m 194 40 b 40 193 109 40 40 109 b 174 346 40 271 98 336 l 174 193 b 194 173 174 183 183 173 b 213 193 204 173 213 183 l 213 346 b 347 193 289 336 347 271 b 194 40 347 109 278 40 z"},pluckedSnapPizzicatoBelow:{x_min:0,x_max:269,y_min:0,y_max:389,ha:389,o:"m 213 174 b 387 367 311 184 387 266 b 193 560 387 474 301 560 b 0 367 86 560 0 474 b 174 174 0 266 76 184 l 174 20 b 194 0 174 9 183 0 b 213 20 204 0 213 9 z m 194 520 b 347 367 278 520 347 452 b 213 215 347 289 289 225 l 213 367 b 194 387 213 377 204 387 b 174 367 183 387 174 377 l 174 215 b 40 367 98 225 40 289 b 194 520 40 452 109 520 z"},keyboardPedalPed:{x_min:0,x_max:981,y_min:-10,y_max:545,ha:555,o:"m 1354 12 b 1413 78 1385 12 1413 42 b 1354 145 1413 115 1385 145 b 1293 78 1320 145 1293 115 b 1354 12 1293 42 1320 12 z m 1092 88 b 1080 86 1089 86 1084 86 b 1004 203 1037 86 1004 137 b 1107 376 1004 360 1097 374 b 1149 209 1129 336 1149 287 b 1092 88 1149 117 1130 95 z m 752 393 b 795 344 779 393 795 372 b 770 285 795 325 788 304 b 693 203 737 249 697 207 b 688 264 690 225 688 245 b 752 393 688 347 714 393 z m 245 507 b 220 544 245 533 235 544 b 217 544 219 544 219 544 b 186 510 206 546 192 537 b 143 464 179 478 163 464 b 134 465 140 464 137 464 b 102 516 117 467 102 487 b 141 613 102 541 112 576 b 347 721 212 711 315 721 b 356 721 351 721 354 721 b 275 560 344 701 297 616 b 259 495 274 557 259 528 b 272 452 259 480 264 465 b 373 323 297 416 350 354 b 387 284 382 311 387 298 b 350 222 387 265 376 245 b 230 140 301 180 252 154 b 128 39 215 130 128 92 b 134 12 128 30 130 22 b 173 -14 144 -7 157 -14 b 264 40 204 -14 243 17 b 333 98 281 58 302 98 b 389 39 357 98 373 60 b 478 -10 416 1 435 -10 b 622 96 527 -10 559 43 b 740 -10 626 86 667 -10 b 929 95 827 -10 917 85 b 1086 -12 950 37 1018 -12 b 1120 -7 1097 -12 1109 -10 b 1264 213 1212 17 1264 111 b 1263 248 1264 225 1263 236 b 815 664 1228 544 907 647 b 785 668 805 665 795 668 b 779 668 783 668 782 668 b 757 654 769 668 760 665 b 757 649 757 652 757 651 b 786 618 759 629 783 619 b 818 606 796 613 808 611 b 1071 435 1007 534 1066 445 b 909 181 930 386 909 256 b 910 141 909 164 909 151 b 786 78 899 127 844 78 b 708 151 726 78 710 144 b 799 230 711 154 742 181 b 864 350 845 271 864 312 b 757 456 864 410 815 456 b 599 222 644 456 599 328 b 609 141 599 192 602 164 b 563 104 608 140 595 122 b 540 98 556 99 549 98 b 459 140 513 98 480 118 b 397 184 413 189 399 184 b 475 279 403 189 454 226 b 482 311 480 289 482 300 b 449 410 482 359 452 405 b 361 533 442 419 383 503 b 354 560 356 541 354 550 b 386 651 353 588 372 622 b 429 713 405 693 426 710 b 557 592 521 688 557 628 b 549 569 557 582 554 573 b 523 559 540 562 531 559 b 459 592 495 559 469 583 b 425 613 451 600 438 613 b 409 608 419 613 415 612 b 399 586 402 602 399 595 b 399 583 397 585 399 585 b 409 552 399 573 405 562 b 541 458 441 487 492 458 b 608 480 564 458 588 465 b 648 572 632 497 648 531 b 429 778 648 649 589 749 b 351 785 402 782 376 785 b 0 507 130 785 0 615 b 127 366 0 399 68 366 b 245 507 186 366 245 429 z"},keyboardPedalUp:{x_min:0,x_max:473,y_min:0,y_max:473,ha:473,o:"m 99 99 b 164 69 120 79 143 69 b 199 82 177 69 190 73 b 210 114 206 89 210 102 b 206 137 210 122 209 130 b 200 160 203 145 200 154 b 210 179 200 166 203 171 l 245 215 b 285 213 255 225 272 219 l 287 213 l 288 212 b 318 183 301 206 318 196 l 318 134 b 291 102 318 112 308 112 b 258 58 274 92 258 76 b 340 0 258 26 294 0 b 423 58 386 0 423 26 b 390 102 423 76 408 92 b 361 134 373 112 361 112 l 361 183 b 392 212 361 196 379 206 b 395 213 393 212 393 213 b 436 215 408 219 426 225 l 471 179 b 480 161 478 171 480 167 b 474 137 480 154 477 147 b 471 115 472 130 471 122 b 482 82 471 102 474 91 b 517 69 491 73 504 69 b 582 99 539 69 562 79 b 612 164 602 120 612 143 b 599 199 612 177 608 190 b 567 210 592 206 579 210 b 544 206 559 210 552 209 b 521 200 536 203 528 200 b 501 210 514 200 508 203 l 467 245 b 468 285 456 255 462 272 l 468 287 b 469 288 468 287 469 287 b 498 318 475 301 485 318 l 547 318 b 579 291 569 318 569 308 b 624 258 589 274 605 258 b 681 340 655 258 681 294 b 624 423 681 386 655 423 b 579 390 605 423 589 408 b 547 361 569 373 569 361 l 498 361 b 469 392 485 361 475 379 b 468 395 469 393 468 393 b 467 436 462 408 456 426 l 501 471 b 520 480 508 478 514 480 b 544 474 527 480 534 477 b 566 471 552 472 559 471 b 599 482 579 471 590 474 b 612 516 608 491 612 503 b 582 580 612 536 602 560 b 516 612 562 600 537 612 b 482 599 503 612 491 608 b 471 566 474 590 471 579 b 474 544 471 559 472 552 b 480 520 477 534 480 527 b 471 501 480 514 478 508 l 436 467 b 395 468 426 456 408 462 b 392 469 393 468 393 469 b 361 498 379 475 361 485 l 361 547 b 390 579 361 569 373 569 b 423 624 408 589 423 605 b 340 681 423 655 386 681 b 258 624 294 681 258 655 b 291 579 258 605 274 589 b 318 547 308 569 318 569 l 318 498 b 288 469 318 485 301 475 l 287 468 l 285 468 b 245 467 272 462 255 456 l 210 501 b 200 521 203 508 200 514 b 206 544 200 528 203 536 b 210 567 209 552 210 559 b 199 599 210 579 206 592 b 164 612 190 608 177 612 b 99 582 143 612 120 602 b 69 517 79 562 69 539 b 82 482 69 504 73 491 b 115 471 91 474 102 471 b 137 474 122 471 130 472 b 161 480 147 477 154 480 b 180 471 167 480 173 478 l 215 436 b 213 395 225 426 219 408 b 212 392 213 393 212 393 b 183 361 206 379 196 361 l 134 361 b 102 390 112 361 112 373 b 58 423 92 408 76 423 b 0 340 26 423 0 386 b 58 258 0 294 26 258 b 102 291 76 258 92 274 b 134 318 112 308 112 318 l 183 318 b 212 288 196 318 206 301 b 213 287 212 287 213 288 l 213 285 b 215 245 219 272 225 255 l 179 210 b 160 200 171 203 166 200 b 137 206 154 200 145 203 b 114 210 130 209 122 210 b 82 199 102 210 89 206 b 69 164 73 190 69 177 b 99 99 69 143 79 120 z m 276 276 b 249 340 262 291 249 320 b 340 432 249 390 289 432 b 432 340 390 432 432 390 b 405 276 432 320 419 291 b 340 249 390 262 360 249 b 276 276 320 249 291 262 z"},wiggleArpeggiatoUp:{x_min:-22,x_max:242,y_min:0,y_max:164,ha:164,o:"m 343 122 b 323 143 343 122 334 132 b 308 148 318 147 312 148 b 298 144 304 148 301 147 b 282 128 295 141 291 137 b 274 124 279 125 276 124 b 265 128 268 124 265 128 b 158 220 265 128 173 207 b 112 236 143 232 127 236 b 43 206 82 236 55 219 l -26 137 b -32 125 -30 132 -32 130 b -26 112 -32 118 -26 112 b -6 92 -26 112 -17 102 b 7 86 -1 88 3 86 b 17 91 12 86 14 88 b 33 107 20 94 24 98 b 42 111 36 109 39 111 b 52 107 48 111 52 107 b 158 16 52 107 144 29 b 204 0 174 4 190 0 b 274 30 235 0 262 17 l 343 99 b 348 111 347 104 348 108 b 343 122 348 118 343 122 z"},repeat1Bar:{x_min:0,x_max:481,y_min:-250,y_max:250,ha:500,o:"m 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 693 -181 b 602 -91 693 -131 651 -91 b 511 -181 552 -91 511 -131 b 602 -272 511 -232 552 -272 b 693 -181 651 -272 693 -232 z"},repeat2Bars:{x_min:0,x_max:735,y_min:-250,y_max:250,ha:500,o:"m 1058 -181 b 968 -91 1058 -131 1017 -91 b 877 -181 917 -91 877 -131 b 968 -272 877 -232 917 -272 b 1058 -181 1017 -272 1058 -232 z m 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 1058 360 l 877 360 l 366 -360 l 547 -360 z"},repeat4Bars:{x_min:0,x_max:1243,y_min:-250,y_max:250,ha:500,o:"m 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 1058 360 l 877 360 l 366 -360 l 547 -360 z m 1424 360 l 1243 360 l 732 -360 l 913 -360 z m 1790 360 l 1608 360 l 1097 -360 l 1279 -360 z m 1790 -181 b 1699 -91 1790 -131 1748 -91 b 1608 -181 1649 -91 1608 -131 b 1699 -272 1608 -232 1649 -272 b 1790 -181 1748 -272 1790 -232 z"},repeatBarSlash:{x_min:0,x_max:481,y_min:-250,y_max:250,ha:500,o:"m 693 360 l 511 360 l 0 -360 l 181 -360 z"},csymDiminished:{x_min:0,x_max:501,y_min:0,y_max:501,ha:501,o:"m 361 721 b 0 361 161 721 0 560 b 361 0 0 161 161 0 b 721 361 560 0 721 161 b 361 721 721 560 560 721 z m 557 164 b 361 82 505 111 435 82 b 164 164 287 82 216 111 b 82 361 111 216 82 287 b 164 557 82 436 111 505 b 361 639 216 611 287 639 b 557 557 436 639 505 611 b 639 361 611 505 639 436 b 557 164 639 287 609 216 z"},csymHalfDiminished:{x_min:-1,x_max:502,y_min:-1,y_max:502,ha:503,o:"m 723 684 l 684 723 l 596 634 b 361 721 533 688 451 721 b 0 361 161 721 0 560 b 88 125 0 271 33 189 l -1 36 l 36 -1 l 125 88 b 361 0 189 33 271 0 b 721 361 560 0 721 161 b 634 596 721 451 688 533 z m 82 361 b 164 557 82 436 111 505 b 361 639 216 611 287 639 b 537 576 426 639 488 616 l 145 184 b 82 361 105 233 82 295 z m 639 361 b 557 164 639 287 609 216 b 361 82 505 111 435 82 b 184 145 295 82 233 105 l 576 537 b 639 361 616 488 639 426 z"},csymAugmented:{x_min:1,x_max:321,y_min:90,y_max:410,ha:320,o:"m 462 400 l 272 400 l 272 590 l 192 590 l 192 400 l 1 400 l 1 320 l 192 320 l 192 130 l 272 130 l 272 320 l 462 320 z"},csymMajorSeventh:{x_min:0,x_max:500,y_min:10,y_max:490,ha:480,o:"m 360 528 l 585 96 l 135 96 z m 360 706 l 0 14 l 720 14 z"},accidentalNarrowReversedFlat:{x_min:0,x_max:160,y_min:-176,y_max:452,ha:628,o:"m 0 84 b 101 -153 0 -26 65 -107 b 196 -249 153 -217 196 -249 b 206 -253 199 -251 202 -253 b 225 -235 216 -253 225 -245 l 230 632 b 212 651 230 642 222 651 l 199 651 b 180 632 189 651 180 642 l 184 204 b 125 217 184 204 171 217 b 0 84 53 217 0 173 z m 145 154 b 184 107 181 154 184 120 l 187 -179 b 114 -72 167 -158 132 -112 b 82 58 86 -13 82 36 b 145 154 82 79 82 154 z"},accidentalNarrowReversedFlatAndFlat:{x_min:0,x_max:416,y_min:-176,y_max:452,ha:628,o:"m 462 217 b 330 174 374 217 338 181 l 334 632 b 315 651 334 642 325 651 l 302 651 b 284 632 292 651 284 642 l 289 -235 b 308 -253 289 -245 298 -253 b 320 -249 312 -253 317 -251 b 492 -138 320 -249 433 -194 b 599 84 534 -98 599 -26 b 462 217 599 173 534 217 z m 501 58 b 459 -72 501 36 498 -19 b 327 -179 431 -111 359 -164 l 330 85 l 330 91 b 422 154 330 125 359 154 b 501 58 503 154 501 79 z m 0 84 b 101 -153 0 -26 65 -107 b 196 -249 153 -217 196 -249 b 206 -253 199 -251 202 -253 b 225 -235 216 -253 225 -245 l 230 632 b 212 651 230 642 222 651 l 199 651 b 180 632 189 651 180 642 l 184 204 b 125 217 184 204 171 217 b 0 84 53 217 0 173 z m 145 154 b 184 107 181 154 184 120 l 187 -179 b 114 -72 167 -158 132 -112 b 82 58 86 -13 82 36 b 145 154 82 79 82 154 z"}},fontFamily:"Leland",resolution:1e3,generatedOn:"2022-06-26T17:49:33.853Z"},Fi={name:"Leland",smufl:!0,stave:{padding:12,endPaddingMax:10,endPaddingMin:5,unalignedNotePadding:10},accidental:{noteheadAccidentalPadding:1,leftPadding:2,accidentalSpacing:3},clef:{default:{point:32,width:26},small:{point:26,width:20},annotations:{"8va":{smuflCode:"timeSig8",default:{point:18,treble:{line:-1.4,shiftX:12}},small:{point:16,treble:{line:-.2,shiftX:8}}},"8vb":{smuflCode:"timeSig8",default:{point:18,treble:{line:6,shiftX:10},bass:{line:3.5,shiftX:1}},small:{point:16,treble:{line:5.3,shiftX:6},bass:{line:3.1,shiftX:.5}}}},lineCount:{8:{point:55,shiftY:14},7:{point:47,shiftY:8},6:{point:32,shiftY:1},5:{point:30,shiftY:-6},4:{point:23,shiftY:-12}}},parenthesis:{default:{point:39,width:7},gracenote:{point:23.4,width:3}},pedalMarking:{up:{point:40},down:{point:34}},digits:{shiftLine:-1,point:34,tupletPoint:22,shiftY:-6},articulation:{articStaccatissimoAbove:{padding:2},articStaccatissimoBelow:{padding:2}},tremolo:{default:{point:25,spacing:5,offsetYStemUp:-5,offsetYStemDown:5,offsetXStemUp:11,offsetXStemDown:1},grace:{point:18,spacing:4,offsetYStemUp:-5,offsetYStemDown:5,offsetXStemUp:7,offsetXStemDown:1}},staveRepetition:{symbolText:{offsetX:12,offsetY:25,spacing:5},coda:{offsetY:25},segno:{offsetY:10}},stem:{heightAdjustmentForFlag:-3,noteHead:{noteheadTriangleUpHalf:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpBlack:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpWhole:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadXHalf:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXBlack:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXWhole:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadHalf:{offsetYBaseStemUp:-2.55,offsetYBaseStemDown:2.65},noteheadBlack:{offsetYBaseStemUp:-2,offsetYBaseStemDown:2},noteheadSquareWhite:{offsetYBaseStemDown:-5,offsetYBaseStemUp:5}}},glyphs:{coda:{point:20,shiftX:-7,shiftY:8},segno:{shiftX:-7},flag:{shiftX:-.75,staveTempo:{shiftX:-1}},clef:{gClef:{default:{scale:1.1,shiftY:1},small:{shiftY:1.5}},fClef:{default:{shiftY:-.5}}},ornament:{ornamentTurn:{scale:1.2},ornamentTurnSlash:{scale:1.2}},stringNumber:{verticalPadding:8,stemPadding:2,leftPadding:5,rightPadding:6},stroke:{arrowheadBlackDown:{straight:{shiftX:-4.5},wiggly:{shiftX:-1,shiftY:1}},arrowheadBlackUp:{straight:{shiftX:-.85},wiggly:{shiftX:-1,shiftY:1}}},textNote:{point:34,breathMarkTick:{point:36,shiftY:9},breathMarkComma:{point:36},segno:{point:30,shiftX:-7,shiftY:8},coda:{point:20,shiftX:-7,shiftY:8},ornamentTrill:{shiftX:-8,shiftY:8},ornamentTurn:{point:42},ornamentTurnSlash:{point:42},ornamentMordent:{shiftX:-8},ornamentShortTrill:{shiftX:-8}},noteHead:{minPadding:2,standard:{restQuarterStemUp:{point:35},restQuarterStemDown:{point:35}},custom:{noteheadCircleXStemUp:{shiftX:1.5},noteheadCircleXStemDown:{shiftX:.25},noteheadDiamondHalfStemUp:{shiftX:1.5},noteheadDiamondBlackStemUp:{shiftX:1.5},noteheadDiamondWholeStemUp:{shiftX:1},noteheadXHalfStemUp:{shiftX:-2},noteheadXHalfStemDown:{shiftX:1},noteheadXWholeStemUp:{shiftX:-4},noteheadXWholeStemDown:{shiftX:1},noteheadSquareWhiteStemDown:{shiftX:.25},noteheadSquareWhiteStemUp:{shiftX:-.75},noteheadSquareBlackStemUp:{shiftX:-.75},noteheadTriangleUpWholeStemUp:{shiftX:-.75}}},chordSymbol:{global:{superscriptOffset:-400,subscriptOffset:300,kerningOffset:-250,lowerKerningText:["D","F","P","T","V","Y"],upperKerningText:["A","L"],spacing:100,superSubRatio:.66},csymDiminished:{scale:.8,leftSideBearing:-32,advanceWidth:506,yOffset:0},csymHalfDiminished:{scale:.8,leftSideBearing:-32,advanceWidth:506,yOffset:0},csymAugmented:{scale:1,leftSideBearing:0,advanceWidth:530,yOffset:0},csymParensLeftTall:{scale:.8,leftSideBearing:-20,advanceWidth:184,yOffset:250},csymParensRightTall:{scale:.8,leftSideBearing:0,advanceWidth:189,yOffset:250},csymBracketLeftTall:{scale:.8,leftSideBearing:0,advanceWidth:328,yOffset:0},csymBracketRightTall:{scale:.8,leftSideBearing:1,advanceWidth:600,yOffset:0},csymParensLeftVeryTall:{scale:.9,leftSideBearing:50,advanceWidth:121,yOffset:350},csymParensRightVeryTall:{scale:.9,leftSideBearing:0,advanceWidth:111,yOffset:350},csymDiagonalArrangementSlash:{scale:.6,leftSideBearing:-1,advanceWidth:990,yOffset:0},csymMinor:{scale:.8,leftSideBearing:0,advanceWidth:482,yOffset:0},csymMajorSeventh:{scale:.9,leftSideBearing:200,yOffset:0,advanceWidth:600},accidentalSharp:{scale:.75,leftSideBearing:20,advanceWidth:250,yOffset:-302},accidentalFlat:{scale:.9,leftSideBearing:-20,advanceWidth:226,yOffset:-184}},jazzOrnaments:{brassScoop:{scale:1,xOffset:-12,yOffset:0,stemUpYOffset:0,reportedWidth:20},brassDoitMedium:{scale:1,xOffset:16,yOffset:0,stemUpYOffset:0,reportedWidth:22},brassFallLipShort:{scale:1,xOffset:16,yOffset:0,stemUpYOffset:0,reportedWidth:15},brassLiftMedium:{scale:1,xOffset:16,yOffset:5,stemUpYOffset:0,reportedWidth:5},brassFallRoughMedium:{scale:1,xOffset:16,yOffset:28,stemUpYOffset:0,reportedWidth:5},brassBend:{scale:1,xOffset:2,yOffset:-8,stemUpYOffset:25,reportedWidth:5},brassMuteClosed:{scale:1,xOffset:3,yOffset:-8,stemUpYOffset:25,reportedWidth:5},brassMuteOpen:{scale:1,xOffset:3,yOffset:-7,stemUpYOffset:25,reportedWidth:5},brassFlip:{scale:1,xOffset:10,yOffset:0,stemUpYOffset:7,reportedWidth:10},brassJazzTurn:{scale:1,xOffset:0,yOffset:0,stemUpYOffset:8,reportedWidth:31},brassSmear:{scale:1,xOffset:10,yOffset:0,stemUpYOffset:8,reportedWidth:5}},tuplet:{noteHeadOffset:20,stemOffset:10,bottomLine:4,topModifierOffset:15}}};const Ri={spacing:50,glyphs:{" ":{x_min:0,x_max:250,y_min:0,y_max:500,ha:500,leftSideBearing:0,advanceWidth:250},0:{x_min:33,x_max:534,y_min:-13,y_max:751,ha:764,leftSideBearing:33,advanceWidth:570},1:{x_min:48,x_max:235,y_min:-17,y_max:734,ha:751,leftSideBearing:48,advanceWidth:286},2:{x_min:56,x_max:571,y_min:-19,y_max:741,ha:760,leftSideBearing:56,advanceWidth:626},3:{x_min:50,x_max:528,y_min:-7,y_max:731,ha:738,leftSideBearing:50,advanceWidth:589},4:{x_min:38,x_max:564,y_min:-13,y_max:743,ha:756,leftSideBearing:38,advanceWidth:614},5:{x_min:42,x_max:601,y_min:-34,y_max:743,ha:777,leftSideBearing:42,advanceWidth:648},6:{x_min:47,x_max:606,y_min:-16,y_max:743,ha:759,leftSideBearing:47,advanceWidth:667},7:{x_min:47,x_max:567,y_min:5,y_max:739,ha:734,leftSideBearing:0,advanceWidth:615},8:{x_min:40,x_max:541,y_min:-15,y_max:752,ha:767,leftSideBearing:40,advanceWidth:585},9:{x_min:40,x_max:537,y_min:-52,y_max:736,ha:788,leftSideBearing:40,advanceWidth:592},"!":{x_min:49,x_max:180,y_min:-7,y_max:761,ha:768,leftSideBearing:49,advanceWidth:230},'"':{x_min:39,x_max:304,y_min:596,y_max:804,ha:208,leftSideBearing:39,advanceWidth:353},"#":{x_min:33,x_max:599,y_min:-8,y_max:765,ha:773,leftSideBearing:33,advanceWidth:648},$:{x_min:53,x_max:495,y_min:-111,y_max:823,ha:934,leftSideBearing:53,advanceWidth:560},"%":{x_min:35,x_max:656,y_min:-128,y_max:808,ha:936,leftSideBearing:35,advanceWidth:711},"&":{x_min:53,x_max:441,y_min:-3,y_max:753,ha:756,leftSideBearing:53,advanceWidth:500},"'":{x_min:43,x_max:161,y_min:590,y_max:811,ha:221,leftSideBearing:43,advanceWidth:217},"(":{x_min:41,x_max:311,y_min:-36,y_max:845,ha:881,leftSideBearing:41,advanceWidth:308},")":{x_min:-8,x_max:257,y_min:-21,y_max:852,ha:873,leftSideBearing:-8,advanceWidth:280},"*":{x_min:59,x_max:539,y_min:175,y_max:589,ha:414,leftSideBearing:59,advanceWidth:601},"+":{x_min:33,x_max:361,y_min:180,y_max:587,ha:407,leftSideBearing:33,advanceWidth:400},",":{x_min:15,x_max:176,y_min:-129,y_max:92,ha:221,leftSideBearing:15,advanceWidth:205},"-":{x_min:40,x_max:380,y_min:317,y_max:452,ha:135,leftSideBearing:40,advanceWidth:422},".":{x_min:48,x_max:185,y_min:-56,y_max:84,ha:140,leftSideBearing:48,advanceWidth:227},"/":{x_min:-58,x_max:654,y_min:-122,y_max:844,ha:966,leftSideBearing:-58,advanceWidth:626},":":{x_min:65,x_max:225,y_min:97,y_max:536,ha:439,leftSideBearing:65,advanceWidth:302},";":{x_min:13,x_max:295,y_min:-139,y_max:536,ha:675,leftSideBearing:13,advanceWidth:334},"<":{x_min:28,x_max:438,y_min:-1,y_max:607,ha:608,leftSideBearing:28,advanceWidth:475},"=":{x_min:40,x_max:383,y_min:199.9598640852289,y_max:541,ha:341.0401359147711,leftSideBearing:40,advanceWidth:422},">":{x_min:35,x_max:421,y_min:28,y_max:632,ha:604,leftSideBearing:35,advanceWidth:466},"?":{x_min:45,x_max:548,y_min:-17,y_max:767,ha:784,leftSideBearing:45,advanceWidth:592},"@":{x_min:51,x_max:730,y_min:-78,y_max:753,ha:831,leftSideBearing:51,advanceWidth:781},A:{x_min:37,x_max:554,y_min:-4,y_max:746,ha:750,leftSideBearing:37,advanceWidth:617},B:{x_min:37,x_max:532,y_min:3,y_max:783,ha:780,leftSideBearing:37,advanceWidth:579},C:{x_min:37,x_max:583,y_min:-3,y_max:775,ha:778,leftSideBearing:37,advanceWidth:623},D:{x_min:50,x_max:530,y_min:-15,y_max:749,ha:764,leftSideBearing:50,advanceWidth:579},E:{x_min:45,x_max:531,y_min:-1,y_max:743,ha:744,leftSideBearing:45,advanceWidth:585},F:{x_min:45,x_max:459,y_min:23,y_max:727,ha:704,leftSideBearing:45,advanceWidth:510},G:{x_min:31,x_max:577,y_min:-8,y_max:733,ha:741,leftSideBearing:31,advanceWidth:611},H:{x_min:37,x_max:493,y_min:-22,y_max:758,ha:780,leftSideBearing:37,advanceWidth:535},I:{x_min:47,x_max:501,y_min:-3,y_max:731,ha:734,leftSideBearing:47,advanceWidth:541},J:{x_min:33,x_max:531,y_min:-23,y_max:725,ha:748,leftSideBearing:33,advanceWidth:573},K:{x_min:43,x_max:505,y_min:-10,y_max:740,ha:750,leftSideBearing:43,advanceWidth:560},L:{x_min:49,x_max:457,y_min:-2,y_max:746,ha:748,leftSideBearing:49,advanceWidth:510},M:{x_min:35,x_max:699,y_min:1,y_max:744,ha:743,leftSideBearing:35,advanceWidth:743},N:{x_min:34,x_max:533,y_min:-17,y_max:761,ha:778,leftSideBearing:34,advanceWidth:579},O:{x_min:41,x_max:608,y_min:-5,y_max:735,ha:740,leftSideBearing:41,advanceWidth:667},P:{x_min:53,x_max:451,y_min:-18,y_max:735,ha:753,leftSideBearing:53,advanceWidth:497},Q:{x_min:40,x_max:599,y_min:-67,y_max:744,ha:811,leftSideBearing:40,advanceWidth:648},R:{x_min:39,x_max:487,y_min:16,y_max:735,ha:719,leftSideBearing:39,advanceWidth:535},S:{x_min:35,x_max:552,y_min:-47,y_max:708,ha:755,leftSideBearing:35,advanceWidth:604},T:{x_min:26,x_max:656,y_min:-13,y_max:718,ha:731,leftSideBearing:26,advanceWidth:705},U:{x_min:41,x_max:518,y_min:-20,y_max:748,ha:768,leftSideBearing:41,advanceWidth:567},V:{x_min:47,x_max:509,y_min:-26,y_max:744,ha:770,leftSideBearing:47,advanceWidth:567},W:{x_min:44,x_max:789,y_min:-35,y_max:720,ha:755,leftSideBearing:44,advanceWidth:833},X:{x_min:63,x_max:635,y_min:-10,y_max:745,ha:755,leftSideBearing:63,advanceWidth:680},Y:{x_min:43,x_max:503,y_min:-21,y_max:734,ha:755,leftSideBearing:43,advanceWidth:541},Z:{x_min:42,x_max:584,y_min:-10,y_max:739,ha:749,leftSideBearing:42,advanceWidth:629},"[":{x_min:46,x_max:346,y_min:-150,y_max:884,ha:1034,leftSideBearing:46,advanceWidth:291},"\\":{x_min:20,x_max:616,y_min:-100,y_max:797,ha:897,leftSideBearing:20,advanceWidth:645},"]":{x_min:-76,x_max:226,y_min:-150,y_max:881,ha:1031,leftSideBearing:-76,advanceWidth:297},"^":{x_min:43,x_max:437,y_min:517,y_max:812,ha:295,leftSideBearing:43,advanceWidth:478},_:{x_min:29,x_max:563,y_min:-110,y_max:-1,ha:109,leftSideBearing:29,advanceWidth:598},"`":{x_min:54,x_max:321,y_min:540,y_max:747,ha:207,leftSideBearing:54,advanceWidth:368},a:{x_min:20,x_max:447,y_min:-17,y_max:495,ha:512,leftSideBearing:20,advanceWidth:494},b:{x_min:37,x_max:466,y_min:-27,y_max:770,ha:797,leftSideBearing:37,advanceWidth:510},c:{x_min:35,x_max:456,y_min:-9,y_max:507,ha:516,leftSideBearing:35,advanceWidth:460},d:{x_min:45,x_max:520,y_min:-15,y_max:764,ha:779,leftSideBearing:45,advanceWidth:560},e:{x_min:33,x_max:370,y_min:-5,y_max:501,ha:506,leftSideBearing:33,advanceWidth:397},f:{x_min:35,x_max:411,y_min:-13,y_max:695,ha:708,leftSideBearing:35,advanceWidth:453},g:{x_min:33,x_max:551,y_min:-257,y_max:505,ha:762,leftSideBearing:33,advanceWidth:611},h:{x_min:32,x_max:458,y_min:-29,y_max:743,ha:772,leftSideBearing:32,advanceWidth:491},i:{x_min:45,x_max:167,y_min:-13,y_max:631,ha:644,leftSideBearing:45,advanceWidth:220},j:{x_min:-127,x_max:261,y_min:-231,y_max:601,ha:832,leftSideBearing:-127,advanceWidth:308},k:{x_min:39,x_max:443,y_min:-3,y_max:700,ha:703,leftSideBearing:39,advanceWidth:497},l:{x_min:58,x_max:168,y_min:-8,y_max:686,ha:694,leftSideBearing:58,advanceWidth:227},m:{x_min:39,x_max:688,y_min:-14,y_max:501,ha:515,leftSideBearing:39,advanceWidth:718},n:{x_min:45,x_max:491,y_min:-32,y_max:512,ha:544,leftSideBearing:45,advanceWidth:541},o:{x_min:41,x_max:424,y_min:-12,y_max:493,ha:505,leftSideBearing:41,advanceWidth:447},p:{x_min:25,x_max:529,y_min:-260,y_max:500,ha:760,leftSideBearing:25,advanceWidth:573},q:{x_min:53,x_max:603,y_min:-235,y_max:514,ha:749,leftSideBearing:53,advanceWidth:623},r:{x_min:32,x_max:407,y_min:-7,y_max:492,ha:499,leftSideBearing:32,advanceWidth:460},s:{x_min:49,x_max:416,y_min:-12,y_max:519,ha:531,leftSideBearing:49,advanceWidth:460},t:{x_min:32,x_max:442,y_min:-5,y_max:684,ha:689,leftSideBearing:32,advanceWidth:469},u:{x_min:41,x_max:487,y_min:-5,y_max:507,ha:512,leftSideBearing:41,advanceWidth:510},v:{x_min:16,x_max:441,y_min:-20,y_max:542,ha:562,leftSideBearing:16,advanceWidth:456},w:{x_min:39,x_max:639,y_min:-22,y_max:505,ha:527,leftSideBearing:39,advanceWidth:661},x:{x_min:15,x_max:505,y_min:-39,y_max:539,ha:578,leftSideBearing:15,advanceWidth:541},y:{x_min:-98,x_max:501,y_min:-242,y_max:511,ha:753,leftSideBearing:-98,advanceWidth:548},z:{x_min:27,x_max:479,y_min:-3,y_max:494,ha:497,leftSideBearing:27,advanceWidth:494},"{":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308},"|":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308},"}":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308},"~":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308}},fontFamily:"PetalumaScript",resolution:1e3,generatedOn:"2020-06-14T18:33:25.407Z"},Oi={spacing:50,glyphs:{" ":{x_min:0,x_max:509,y_min:0,y_max:2e3,ha:2e3,leftSideBearing:0,advanceWidth:509},0:{x_min:121,x_max:1048,y_min:-21,y_max:1477,ha:1498,leftSideBearing:121,advanceWidth:1168},1:{x_min:117,x_max:767,y_min:0,y_max:1456,ha:1456,leftSideBearing:117,advanceWidth:844},2:{x_min:75.8474576645637,x_max:1040,y_min:0,y_max:1477,ha:1477,leftSideBearing:75,advanceWidth:1131},3:{x_min:74.85365853658536,x_max:994,y_min:-21,y_max:1477,ha:1498,leftSideBearing:74,advanceWidth:1106},4:{x_min:63,x_max:1114,y_min:0,y_max:1456,ha:1456,leftSideBearing:63,advanceWidth:1187},5:{x_min:96.8448275474953,x_max:982,y_min:-21,y_max:1456,ha:1477,leftSideBearing:96,advanceWidth:1081},6:{x_min:121,x_max:1067,y_min:-21,y_max:1477,ha:1498,leftSideBearing:121,advanceWidth:1144},7:{x_min:76,x_max:1060,y_min:0,y_max:1456,ha:1456,leftSideBearing:-30,advanceWidth:1128},8:{x_min:92,x_max:1039,y_min:-21,y_max:1477,ha:1498,leftSideBearing:92,advanceWidth:1131},9:{x_min:84,x_max:1026,y_min:-21,y_max:1477,ha:1498,leftSideBearing:84,advanceWidth:1154},"!":{x_min:143,x_max:340,y_min:0,y_max:1456,ha:1456,leftSideBearing:143,advanceWidth:483},'"':{x_min:166,x_max:634,y_min:1055,y_max:1560,ha:505,leftSideBearing:166,advanceWidth:770},"#":{x_min:63,x_max:1179,y_min:0,y_max:1456,ha:1456,leftSideBearing:63,advanceWidth:1246},$:{x_min:81.92156915727656,x_max:1012,y_min:-208,y_max:1693,ha:1901,leftSideBearing:81,advanceWidth:1110},"%":{x_min:77,x_max:1384,y_min:-21,y_max:1477,ha:1498,leftSideBearing:77,advanceWidth:1460},"&":{x_min:74,x_max:1242,y_min:-21,y_max:1477,ha:1498,leftSideBearing:74,advanceWidth:1289},"'":{x_min:166,x_max:324,y_min:1055,y_max:1560,ha:505,leftSideBearing:166,advanceWidth:460},"(":{x_min:114,x_max:650,y_min:-463,y_max:1636,ha:2099,leftSideBearing:114,advanceWidth:662},")":{x_min:11,x_max:547,y_min:-463,y_max:1636,ha:2099,leftSideBearing:11,advanceWidth:654},"*":{x_min:66,x_max:893,y_min:607,y_max:1456,ha:849,leftSideBearing:66,advanceWidth:958},"+":{x_min:73,x_max:1071,y_min:146,y_max:1206,ha:1060,leftSideBearing:73,advanceWidth:1145},",":{x_min:23,x_max:315,y_min:-311,y_max:221,ha:532,leftSideBearing:23,advanceWidth:404},"-":{x_min:154,x_max:643,y_min:538,y_max:692,ha:154,leftSideBearing:154,advanceWidth:797},".":{x_min:145,x_max:342,y_min:0,y_max:202,ha:202,leftSideBearing:145,advanceWidth:493},"/":{x_min:0,x_max:774,y_min:-125,y_max:1456,ha:1581,leftSideBearing:0,advanceWidth:824},":":{x_min:145,x_max:342,y_min:0,y_max:1082,ha:1082,leftSideBearing:145,advanceWidth:419},";":{x_min:53,x_max:345,y_min:-311,y_max:1082,ha:1393,leftSideBearing:53,advanceWidth:424},"<":{x_min:76,x_max:892,y_min:107,y_max:1013,ha:906,leftSideBearing:76,advanceWidth:1017},"=":{x_min:147,x_max:981,y_min:407,y_max:987,ha:580,leftSideBearing:147,advanceWidth:1127},">":{x_min:125,x_max:980,y_min:87,y_max:993,ha:906,leftSideBearing:125,advanceWidth:1060},"?":{x_min:65.92660602419838,x_max:890,y_min:0,y_max:1477,ha:1477,leftSideBearing:65,advanceWidth:953},"@":{x_min:84.3592218305664,x_max:1705.2346925277395,y_min:-453,y_max:1431,ha:1884,leftSideBearing:84,advanceWidth:1821},A:{x_min:70,x_max:1463,y_min:0,y_max:1456,ha:1456,leftSideBearing:70,advanceWidth:1533},B:{x_min:81,x_max:1253,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1322},C:{x_min:80,x_max:1174,y_min:-21,y_max:1477,ha:1498,leftSideBearing:80,advanceWidth:1290},D:{x_min:81,x_max:1291,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1356},E:{x_min:81,x_max:1190,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1306},F:{x_min:81,x_max:1176,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1256},G:{x_min:80,x_max:1226,y_min:-21,y_max:1477,ha:1498,leftSideBearing:80,advanceWidth:1346},H:{x_min:81,x_max:1497,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1578},I:{x_min:81,x_max:604,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:685},J:{x_min:60,x_max:1100,y_min:-21,y_max:1456,ha:1477,leftSideBearing:60,advanceWidth:1169},K:{x_min:81,x_max:1427,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1501},L:{x_min:81,x_max:1130,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1210},M:{x_min:94,x_max:1888,y_min:0,y_max:1456,ha:1456,leftSideBearing:94,advanceWidth:1982},N:{x_min:83,x_max:1509,y_min:0,y_max:1456,ha:1456,leftSideBearing:83,advanceWidth:1592},O:{x_min:70,x_max:1281,y_min:-21,y_max:1477,ha:1498,leftSideBearing:70,advanceWidth:1351},P:{x_min:81,x_max:1242,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1297},Q:{x_min:70,x_max:1348,y_min:-245,y_max:1477,ha:1722,leftSideBearing:70,advanceWidth:1376},R:{x_min:81,x_max:1285,y_min:0,y_max:1455,ha:1455,leftSideBearing:81,advanceWidth:1385},S:{x_min:115,x_max:1116,y_min:-21,y_max:1477,ha:1498,leftSideBearing:115,advanceWidth:1206},T:{x_min:96,x_max:1306,y_min:0,y_max:1456,ha:1456,leftSideBearing:96,advanceWidth:1406},U:{x_min:70,x_max:1452,y_min:-21,y_max:1456,ha:1477,leftSideBearing:70,advanceWidth:1522},V:{x_min:65,x_max:1443,y_min:0,y_max:1456,ha:1456,leftSideBearing:65,advanceWidth:1508},W:{x_min:72,x_max:2057,y_min:0,y_max:1456,ha:1456,leftSideBearing:72,advanceWidth:2129},X:{x_min:80,x_max:1449,y_min:0,y_max:1456,ha:1456,leftSideBearing:80,advanceWidth:1529},Y:{x_min:65,x_max:1396,y_min:0,y_max:1456,ha:1456,leftSideBearing:65,advanceWidth:1461},Z:{x_min:90,x_max:1107,y_min:0,y_max:1456,ha:1456,leftSideBearing:90,advanceWidth:1197},"[":{x_min:157,x_max:541,y_min:-312,y_max:1664,ha:1976,leftSideBearing:157,advanceWidth:573},"\\":{x_min:36,x_max:830,y_min:-125,y_max:1456,ha:1581,leftSideBearing:36,advanceWidth:841},"]":{x_min:23,x_max:408,y_min:-312,y_max:1664,ha:1976,leftSideBearing:23,advanceWidth:552},"^":{x_min:71,x_max:802,y_min:729,y_max:1456,ha:727,leftSideBearing:71,advanceWidth:864},_:{x_min:119,x_max:1041,y_min:-154,y_max:0,ha:154,leftSideBearing:119,advanceWidth:1168},"`":{x_min:40,x_max:456,y_min:1288,y_max:1560,ha:272,leftSideBearing:40,advanceWidth:496},a:{x_min:79,x_max:1053,y_min:-21,y_max:1102,ha:1123,leftSideBearing:79,advanceWidth:1132},b:{x_min:-16,x_max:1071,y_min:-21,y_max:1560,ha:1581,leftSideBearing:-16,advanceWidth:1145},c:{x_min:78,x_max:988,y_min:-21,y_max:1102,ha:1123,leftSideBearing:78,advanceWidth:1067},d:{x_min:78,x_max:1156,y_min:-21,y_max:1560,ha:1581,leftSideBearing:78,advanceWidth:1218},e:{x_min:74,x_max:980,y_min:-21,y_max:1102,ha:1123,leftSideBearing:74,advanceWidth:1059},f:{x_min:64,x_max:731,y_min:0,y_max:1581,ha:1581,leftSideBearing:64,advanceWidth:725},g:{x_min:78,x_max:1133,y_min:-437,y_max:1102,ha:1539,leftSideBearing:78,advanceWidth:1157},h:{x_min:49,x_max:1255,y_min:0,y_max:1560,ha:1560,leftSideBearing:49,advanceWidth:1315},i:{x_min:67,x_max:590,y_min:0,y_max:1560,ha:1560,leftSideBearing:67,advanceWidth:652},j:{x_min:-56,x_max:381,y_min:-437,y_max:1560,ha:1997,leftSideBearing:-56,advanceWidth:525},k:{x_min:64,x_max:1248,y_min:0,y_max:1560,ha:1560,leftSideBearing:64,advanceWidth:1287},l:{x_min:64,x_max:587,y_min:0,y_max:1560,ha:1560,leftSideBearing:64,advanceWidth:653},m:{x_min:74,x_max:1905,y_min:0,y_max:1102,ha:1102,leftSideBearing:74,advanceWidth:1977},n:{x_min:74,x_max:1278,y_min:0,y_max:1102,ha:1102,leftSideBearing:74,advanceWidth:1343},o:{x_min:78,x_max:1046,y_min:-21,y_max:1102,ha:1123,leftSideBearing:78,advanceWidth:1124},p:{x_min:34,x_max:1119,y_min:-416,y_max:1102,ha:1518,leftSideBearing:34,advanceWidth:1197},q:{x_min:78,x_max:1135,y_min:-416,y_max:1102,ha:1518,leftSideBearing:78,advanceWidth:1139},r:{x_min:72,x_max:808,y_min:0,y_max:1102,ha:1102,leftSideBearing:72,advanceWidth:854},s:{x_min:104,x_max:933,y_min:-21,y_max:1102,ha:1123,leftSideBearing:104,advanceWidth:1022},t:{x_min:24,x_max:678,y_min:-17,y_max:1343,ha:1360,leftSideBearing:24,advanceWidth:730},u:{x_min:52,x_max:1181,y_min:-21,y_max:1082,ha:1103,leftSideBearing:52,advanceWidth:1245},v:{x_min:26,x_max:1176,y_min:0,y_max:1082,ha:1082,leftSideBearing:26,advanceWidth:1206},w:{x_min:52,x_max:1777,y_min:0,y_max:1082,ha:1082,leftSideBearing:52,advanceWidth:1823},x:{x_min:42,x_max:1163,y_min:0,y_max:1082,ha:1082,leftSideBearing:42,advanceWidth:1203},y:{x_min:24,x_max:1172,y_min:-437,y_max:1082,ha:1519,leftSideBearing:24,advanceWidth:1192},z:{x_min:88,x_max:960,y_min:0,y_max:1082,ha:1082,leftSideBearing:88,advanceWidth:1032},"{":{x_min:63,x_max:671,y_min:-364,y_max:1597,ha:1961,leftSideBearing:63,advanceWidth:701},"|":{x_min:150,x_max:307,y_min:-270,y_max:1456,ha:1726,leftSideBearing:150,advanceWidth:451},"}":{x_min:27,x_max:635,y_min:-364,y_max:1597,ha:1961,leftSideBearing:27,advanceWidth:701},"~":{x_min:121,x_max:1257,y_min:401,y_max:803,ha:402,leftSideBearing:121,advanceWidth:1386}},fontFamily:"Roboto Slab",resolution:2048,generatedOn:"2020-06-15T19:12:58.120Z"};class Li{static sortAndUnique(t,e,i){if(t.length>1){const s=[];let n;t.sort(e);for(let e=0;e {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Ron B. Yeh\n// MIT License\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Use instead of `instanceof` as a more flexible type guard.\n * @param obj check if this object's CATEGORY matches the provided category.\n * @param category a string representing a category of VexFlow objects.\n * @param checkAncestors defaults to `true`, so we walk up the prototype chain to look for a matching `CATEGORY`.\n * If `false`, we do not check the superclass or other ancestors.\n * @returns true if `obj` has a static `CATEGORY` property that matches `category`.\n */\nexport function isCategory(obj, category, checkAncestors = true) {\n // obj is undefined, a number, a primitive string, or null.\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n // `obj.constructor` is a reference to the constructor function that created the `obj` instance.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor\n let constructorFcn = obj.constructor;\n // Check if the object's static .CATEGORY matches the provided category.\n if (checkAncestors) {\n // Walk up the prototype chain to look for a matching obj.constructor.CATEGORY.\n while (obj !== null) {\n constructorFcn = obj.constructor;\n if ('CATEGORY' in constructorFcn && constructorFcn.CATEGORY === category) {\n return true;\n }\n obj = Object.getPrototypeOf(obj);\n }\n return false;\n }\n else {\n // Do not walk up the prototype chain. Just check this particular object's static .CATEGORY string.\n return 'CATEGORY' in constructorFcn && constructorFcn.CATEGORY === category;\n }\n}\nexport const isAccidental = (obj) => isCategory(obj, Category.Accidental);\nexport const isAnnotation = (obj) => isCategory(obj, Category.Annotation);\nexport const isBarline = (obj) => isCategory(obj, Category.Barline);\nexport const isDot = (obj) => isCategory(obj, Category.Dot);\nexport const isGraceNote = (obj) => isCategory(obj, Category.GraceNote);\nexport const isGraceNoteGroup = (obj) => isCategory(obj, Category.GraceNoteGroup);\nexport const isNote = (obj) => isCategory(obj, Category.Note);\nexport const isRenderContext = (obj) => isCategory(obj, Category.RenderContext);\nexport const isStaveNote = (obj) => isCategory(obj, Category.StaveNote);\nexport const isStemmableNote = (obj) => isCategory(obj, Category.StemmableNote);\nexport const isTabNote = (obj) => isCategory(obj, Category.TabNote);\n// 'const' enums are erased by the TypeScript compiler. The string values are inlined at all the use sites.\n// See: https://www.typescriptlang.org/docs/handbook/enums.html#const-enums\nexport var Category;\n(function (Category) {\n Category[\"Accidental\"] = \"Accidental\";\n Category[\"Annotation\"] = \"Annotation\";\n Category[\"Articulation\"] = \"Articulation\";\n Category[\"Barline\"] = \"Barline\";\n Category[\"BarNote\"] = \"BarNote\";\n Category[\"Beam\"] = \"Beam\";\n Category[\"Bend\"] = \"Bend\";\n Category[\"ChordSymbol\"] = \"ChordSymbol\";\n Category[\"Clef\"] = \"Clef\";\n Category[\"ClefNote\"] = \"ClefNote\";\n Category[\"Crescendo\"] = \"Crescendo\";\n Category[\"Curve\"] = \"Curve\";\n Category[\"Dot\"] = \"Dot\";\n Category[\"Element\"] = \"Element\";\n Category[\"Fraction\"] = \"Fraction\";\n Category[\"FretHandFinger\"] = \"FretHandFinger\";\n Category[\"GhostNote\"] = \"GhostNote\";\n Category[\"Glyph\"] = \"Glyph\";\n Category[\"GlyphNote\"] = \"GlyphNote\";\n Category[\"GraceNote\"] = \"GraceNote\";\n Category[\"GraceNoteGroup\"] = \"GraceNoteGroup\";\n Category[\"GraceTabNote\"] = \"GraceTabNote\";\n Category[\"KeySignature\"] = \"KeySignature\";\n Category[\"KeySigNote\"] = \"KeySigNote\";\n Category[\"Modifier\"] = \"Modifier\";\n Category[\"MultiMeasureRest\"] = \"MultiMeasureRest\";\n Category[\"Note\"] = \"Note\";\n Category[\"NoteHead\"] = \"NoteHead\";\n Category[\"NoteSubGroup\"] = \"NoteSubGroup\";\n Category[\"Ornament\"] = \"Ornament\";\n Category[\"Parenthesis\"] = \"Parenthesis\";\n Category[\"PedalMarking\"] = \"PedalMarking\";\n Category[\"RenderContext\"] = \"RenderContext\";\n Category[\"RepeatNote\"] = \"RepeatNote\";\n Category[\"Repetition\"] = \"Repetition\";\n Category[\"Stave\"] = \"Stave\";\n Category[\"StaveConnector\"] = \"StaveConnector\";\n Category[\"StaveHairpin\"] = \"StaveHairpin\";\n Category[\"StaveLine\"] = \"StaveLine\";\n Category[\"StaveModifier\"] = \"StaveModifier\";\n Category[\"StaveNote\"] = \"StaveNote\";\n Category[\"StaveSection\"] = \"StaveSection\";\n Category[\"StaveTempo\"] = \"StaveTempo\";\n Category[\"StaveText\"] = \"StaveText\";\n Category[\"StaveTie\"] = \"StaveTie\";\n Category[\"Stem\"] = \"Stem\";\n Category[\"StemmableNote\"] = \"StemmableNote\";\n Category[\"StringNumber\"] = \"StringNumber\";\n Category[\"Stroke\"] = \"Stroke\";\n Category[\"System\"] = \"System\";\n Category[\"TabNote\"] = \"TabNote\";\n Category[\"TabSlide\"] = \"TabSlide\";\n Category[\"TabStave\"] = \"TabStave\";\n Category[\"TabTie\"] = \"TabTie\";\n Category[\"TextBracket\"] = \"TextBracket\";\n Category[\"TextDynamics\"] = \"TextDynamics\";\n Category[\"TextNote\"] = \"TextNote\";\n Category[\"Tickable\"] = \"Tickable\";\n Category[\"TimeSignature\"] = \"TimeSignature\";\n Category[\"TimeSigNote\"] = \"TimeSigNote\";\n Category[\"Tremolo\"] = \"Tremolo\";\n Category[\"Tuplet\"] = \"Tuplet\";\n Category[\"Vibrato\"] = \"Vibrato\";\n Category[\"VibratoBracket\"] = \"VibratoBracket\";\n Category[\"Voice\"] = \"Voice\";\n Category[\"Volta\"] = \"Volta\";\n})(Category || (Category = {}));\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// Note: Keep this module free of imports to reduce the chance of circular dependencies.\n/** `RuntimeError` will be thrown by VexFlow classes in case of error. */\nexport class RuntimeError extends Error {\n constructor(code, message = '') {\n super('[RuntimeError] ' + code + ': ' + message);\n this.code = code;\n }\n}\n/** VexFlow can be used outside of the browser (e.g., Node) where `window` may not be defined. */\n// eslint-disable-next-line\nexport function globalObject() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return Function('return this')();\n}\n/**\n * Check that `x` is of type `T` and not `undefined`.\n * If `x` is `undefined`, throw a RuntimeError with the optionally provided error code and message.\n */\nexport function defined(x, code = 'undefined', message = '') {\n if (x === undefined) {\n throw new RuntimeError(code, message);\n }\n return x;\n}\n/** Default log function sends all arguments to console. */\n// eslint-disable-next-line\nexport function log(block, ...args) {\n if (!args)\n return;\n const line = Array.prototype.slice.call(args).join(' ');\n globalObject().console.log(block + ': ' + line);\n}\n/** Dump warning to console. */\n// eslint-disable-next-line\nexport function warn(...args) {\n const line = args.join(' ');\n const err = new Error();\n globalObject().console.log('Warning: ', line, err.stack);\n}\n/** Round number to nearest fractional value (`.5`, `.25`, etc.) */\nfunction roundN(x, n) {\n return x % n >= n / 2 ? parseInt(`${x / n}`, 10) * n + n : parseInt(`${x / n}`, 10) * n;\n}\n/** Locate the mid point between stave lines. Returns a fractional line if a space. */\nexport function midLine(a, b) {\n let mid_line = b + (a - b) / 2;\n if (mid_line % 2 > 0) {\n mid_line = roundN(mid_line * 10, 5) / 10;\n }\n return mid_line;\n}\n/**\n * Used by various classes (e.g., SVGContext) to provide a\n * unique prefix to element names (or other keys in shared namespaces).\n */\nexport function prefix(text) {\n return `vf-${text}`;\n}\n/**\n * Convert an arbitrary angle in radians to the equivalent one in the range [0, pi).\n */\nexport function normalizeAngle(a) {\n a = a % (2 * Math.PI);\n if (a < 0) {\n a += 2 * Math.PI;\n }\n return a;\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Author: Joshua Koo / @zz85\n// Author: @incompleteopus\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n/** Fraction represents a rational number. */\nexport class Fraction {\n /** Set the numerator and denominator. */\n constructor(numerator, denominator) {\n this.numerator = 1;\n this.denominator = 1;\n this.set(numerator, denominator);\n }\n static get CATEGORY() {\n return Category.Fraction;\n }\n /**\n * GCD: Greatest common divisor using the Euclidean algorithm.\n * Note: GCD(0, 0) => 0 and GCD(0, n) => n.\n */\n static GCD(a, b) {\n if (typeof a !== 'number' || Number.isNaN(a) || typeof b !== 'number' || Number.isNaN(b)) {\n throw new RuntimeError('BadArgument', `Invalid numbers: ${a}, ${b}`);\n }\n let t;\n while (b !== 0) {\n t = b;\n b = a % b;\n a = t;\n }\n return a;\n }\n /** LCM: Lowest common multiple. */\n static LCM(a, b) {\n return (a * b) / Fraction.GCD(a, b);\n }\n /** Lowest common multiple for more than two numbers. */\n static LCMM(args) {\n if (args.length === 0) {\n return 0;\n }\n else if (args.length === 1) {\n return args[0];\n }\n else if (args.length === 2) {\n return Fraction.LCM(args[0], args[1]);\n }\n else {\n // args.shift() removes the first number.\n // LCM the first number with the rest of the numbers.\n return Fraction.LCM(args.shift(), Fraction.LCMM(args));\n }\n }\n /** Set the numerator and denominator. */\n set(numerator = 1, denominator = 1) {\n this.numerator = numerator;\n this.denominator = denominator;\n return this;\n }\n /** Return the value of the fraction. */\n value() {\n return this.numerator / this.denominator;\n }\n /** Simplify numerator and denominator using GCD. */\n simplify() {\n let u = this.numerator;\n let d = this.denominator;\n const gcd = Fraction.GCD(u, d);\n u /= gcd;\n d /= gcd;\n if (d < 0) {\n d = -d;\n u = -u;\n }\n return this.set(u, d);\n }\n /** Add value of another fraction. */\n add(param1 = 0, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n const lcm = Fraction.LCM(this.denominator, otherDenominator);\n const a = lcm / this.denominator;\n const b = lcm / otherDenominator;\n const u = this.numerator * a + otherNumerator * b;\n return this.set(u, lcm);\n }\n /** Substract value of another fraction. */\n subtract(param1 = 0, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n const lcm = Fraction.LCM(this.denominator, otherDenominator);\n const a = lcm / this.denominator;\n const b = lcm / otherDenominator;\n const u = this.numerator * a - otherNumerator * b;\n return this.set(u, lcm);\n }\n /** Multiply by value of another fraction. */\n multiply(param1 = 1, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n return this.set(this.numerator * otherNumerator, this.denominator * otherDenominator);\n }\n /** Divide by value of another Fraction. */\n divide(param1 = 1, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n return this.set(this.numerator * otherDenominator, this.denominator * otherNumerator);\n }\n /** Simplify both sides and check if they are equal. */\n equals(compare) {\n const a = Fraction.__staticFractionA.copy(compare).simplify();\n const b = Fraction.__staticFractionB.copy(this).simplify();\n return a.numerator === b.numerator && a.denominator === b.denominator;\n }\n /** Greater than operator. */\n greaterThan(compare) {\n const a = Fraction.__staticFractionB.copy(this);\n a.subtract(compare);\n return a.numerator > 0;\n }\n /** Greater than or equals operator. */\n greaterThanEquals(compare) {\n const a = Fraction.__staticFractionB.copy(this);\n a.subtract(compare);\n return a.numerator >= 0;\n }\n /** Less than operator. */\n lessThan(compare) {\n return !this.greaterThanEquals(compare);\n }\n /** Less than or equals operator. */\n lessThanEquals(compare) {\n return !this.greaterThan(compare);\n }\n /** Return a new copy with current values. */\n clone() {\n return new Fraction(this.numerator, this.denominator);\n }\n /** Copy value of another fraction. */\n copy(other) {\n if (typeof other === 'number') {\n return this.set(other, 1);\n }\n else {\n return this.set(other.numerator, other.denominator);\n }\n }\n /** Return the integer component (eg. 5/2 => 2). */\n quotient() {\n return Math.floor(this.numerator / this.denominator);\n }\n /** Return the remainder component (eg. 5/2 => 1). */\n remainder() {\n return this.numerator % this.denominator;\n }\n /** Calculate absolute value. */\n makeAbs() {\n this.denominator = Math.abs(this.denominator);\n this.numerator = Math.abs(this.numerator);\n return this;\n }\n /** Return a raw string representation (eg. \"5/2\"). */\n toString() {\n return `${this.numerator}/${this.denominator}`;\n }\n /** Return a simplified string respresentation. */\n toSimplifiedString() {\n return Fraction.__staticFractionTmp.copy(this).simplify().toString();\n }\n /** Return string representation in mixed form. */\n toMixedString() {\n let s = '';\n const q = this.quotient();\n const f = Fraction.__staticFractionTmp.copy(this);\n if (q < 0) {\n f.makeAbs();\n }\n if (q !== 0) {\n s += q;\n if (f.numerator !== 0) {\n s += ` ${f.toSimplifiedString()}`;\n }\n }\n else if (f.numerator === 0) {\n s = '0';\n }\n else {\n s = f.toSimplifiedString();\n }\n return s;\n }\n /** Parse a fraction string. */\n parse(str) {\n const i = str.split('/');\n const n = parseInt(i[0], 10);\n const d = i[1] ? parseInt(i[1], 10) : 1;\n return this.set(n, d);\n }\n}\n// Cached objects for comparisons.\nFraction.__staticFractionA = new Fraction();\nFraction.__staticFractionB = new Fraction();\nFraction.__staticFractionTmp = new Fraction();\n/** Helper function to extract the numerator and denominator from another fraction. */\nfunction getNumeratorAndDenominator(n, d = 1) {\n if (typeof n === 'number') {\n // Both params are numbers, so we return them as [numerator, denominator].\n return [n, d];\n }\n else {\n // First param is a Fraction object. We ignore the second param.\n return [n.numerator, n.denominator];\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nexport class BoundingBox {\n constructor(x, y, w, h) {\n this.x = x;\n this.y = y;\n this.w = w;\n this.h = h;\n }\n /**\n * Create a new copy.\n */\n static copy(that) {\n return new BoundingBox(that.x, that.y, that.w, that.h);\n }\n /** Get x position. */\n getX() {\n return this.x;\n }\n /** Get y position. */\n getY() {\n return this.y;\n }\n /** Get width. */\n getW() {\n return this.w;\n }\n /** Get height. */\n getH() {\n return this.h;\n }\n /** Set x position. */\n setX(x) {\n this.x = x;\n return this;\n }\n /** Set y position. */\n setY(y) {\n this.y = y;\n return this;\n }\n /** Set width. */\n setW(w) {\n this.w = w;\n return this;\n }\n /** Set height. */\n setH(h) {\n this.h = h;\n return this;\n }\n /** Move to position. */\n move(x, y) {\n this.x += x;\n this.y += y;\n return this;\n }\n /** Clone. */\n clone() {\n return BoundingBox.copy(this);\n }\n /**\n * Merge my box with given box. Creates a bigger bounding box unless\n * the given box is contained in this one.\n */\n mergeWith(boundingBox) {\n const that = boundingBox;\n const new_x = this.x < that.x ? this.x : that.x;\n const new_y = this.y < that.y ? this.y : that.y;\n const new_w = Math.max(this.x + this.w, that.x + that.w) - new_x;\n const new_h = Math.max(this.y + this.h, that.y + that.h) - new_y;\n this.x = new_x;\n this.y = new_y;\n this.w = new_w;\n this.h = new_h;\n return this;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n/**\n * BoundingBoxComputation computes metrics for a bounding box by continuously\n * taking canvas path commands.\n *\n * Warning: This class is merely a crutch to get bounding box information without\n * explicit metadata. This is likely to get deprecated following SMuFL support.\n *\n * based on: https://github.com/canvg/canvg/blob/master/src/BoundingBox.ts (MIT License)\n */\nexport class BoundingBoxComputation {\n constructor() {\n this.x1 = Number.NaN;\n this.y1 = Number.NaN;\n this.x2 = Number.NaN;\n this.y2 = Number.NaN;\n }\n /** Get calculated X1. */\n getX1() {\n return this.x1;\n }\n /** Get calculated Y1. */\n getY1() {\n return this.y1;\n }\n /** Get calculated width. */\n width() {\n return this.x2 - this.x1;\n }\n /** Get calculated height. */\n height() {\n return this.y2 - this.y1;\n }\n /** Add point to BoundingBox. */\n addPoint(x, y) {\n if (isNaN(this.x1) || x < this.x1)\n this.x1 = x;\n if (isNaN(this.x2) || x > this.x2)\n this.x2 = x;\n if (isNaN(this.y1) || y < this.y1)\n this.y1 = y;\n if (isNaN(this.y2) || y > this.y2)\n this.y2 = y;\n }\n /** Add X to BoundingBox. */\n addX(x) {\n this.addPoint(x, this.y1);\n }\n /** Add Y to BoundingBox. */\n addY(y) {\n this.addPoint(this.x1, y);\n }\n /** Add quadratic curve to BoundingBox. */\n addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {\n this.addPoint(p0x, p0y);\n this.addPoint(p2x, p2y);\n const p01x = p1x - p0x;\n const p12x = p2x - p1x;\n let denom = p01x - p12x;\n if (denom != 0) {\n const t = p01x / denom;\n if (t > 0 && t < 1) {\n const it = 1 - t;\n this.addX(it * it * p0x + 2 * it * t * p1x + t * t * p2x);\n }\n }\n const p01y = p1y - p0y;\n const p12y = p2y - p1y;\n denom = p01y - p12y;\n if (denom != 0) {\n const t = p01y / denom;\n if (t > 0 && t < 1) {\n const it = 1 - t;\n this.addY(it * it * p0y + 2 * it * t * p1y + t * t * p2y);\n }\n }\n }\n /** Add bezier curve to BoundingBox. */\n addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\n // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n const p0 = [p0x, p0y];\n const p1 = [p1x, p1y];\n const p2 = [p2x, p2y];\n const p3 = [p3x, p3y];\n let i;\n this.addPoint(p0[0], p0[1]);\n this.addPoint(p3[0], p3[1]);\n const f = (t, i) => Math.pow(1 - t, 3) * p0[i] +\n 3 * Math.pow(1 - t, 2) * t * p1[i] +\n 3 * (1 - t) * Math.pow(t, 2) * p2[i] +\n Math.pow(t, 3) * p3[i];\n for (i = 0; i <= 1; i++) {\n const b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n const a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n const c = 3 * p1[i] - 3 * p0[i];\n if (a === 0) {\n if (b === 0)\n continue;\n const t = -c / b;\n if (0 < t && t < 1) {\n if (i === 0)\n this.addX(f(t, i));\n if (i === 1)\n this.addY(f(t, i));\n }\n continue;\n }\n const b2ac = Math.pow(b, 2) - 4 * c * a;\n if (b2ac < 0)\n continue;\n const t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n if (0 < t1 && t1 < 1) {\n if (i === 0)\n this.addX(f(t1, i));\n if (i === 1)\n this.addY(f(t1, i));\n }\n const t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n if (0 < t2 && t2 < 1) {\n if (i === 0)\n this.addX(f(t2, i));\n if (i === 1)\n this.addY(f(t2, i));\n }\n }\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { defined } from './util';\nexport var FontWeight;\n(function (FontWeight) {\n FontWeight[\"NORMAL\"] = \"normal\";\n FontWeight[\"BOLD\"] = \"bold\";\n})(FontWeight || (FontWeight = {}));\nexport var FontStyle;\n(function (FontStyle) {\n FontStyle[\"NORMAL\"] = \"normal\";\n FontStyle[\"ITALIC\"] = \"italic\";\n})(FontStyle || (FontStyle = {}));\n// Internal element for parsing CSS font shorthand strings.\nlet fontParser;\nconst Fonts = {};\nexport class Font {\n /**\n * Use `Font.load(fontName)` to get a Font object.\n * Do not call this constructor directly.\n */\n constructor(fontName) {\n this.name = fontName;\n }\n /**\n * @param fontSize a font size to convert. Can be specified as a CSS length string (e.g., '16pt', '1em')\n * or as a number (the unit is assumed to be 'pt'). See `Font.scaleToPxFrom` for the supported\n * units (e.g., pt, em, %).\n * @returns the number of pixels that is equivalent to `fontSize`\n */\n static convertSizeToPixelValue(fontSize = Font.SIZE) {\n var _a;\n if (typeof fontSize === 'number') {\n // Assume the numeric fontSize is specified in pt.\n return fontSize * Font.scaleToPxFrom.pt;\n }\n else {\n const value = parseFloat(fontSize);\n if (isNaN(value)) {\n return 0;\n }\n const unit = fontSize.replace(/[\\d.\\s]/g, '').toLowerCase(); // Extract the unit by removing all numbers, dots, spaces.\n const conversionFactor = (_a = Font.scaleToPxFrom[unit]) !== null && _a !== void 0 ? _a : 1;\n return value * conversionFactor;\n }\n }\n /**\n * @param fontSize a font size to convert. Can be specified as a CSS length string (e.g., '16pt', '1em')\n * or as a number (the unit is assumed to be 'pt'). See `Font.scaleToPxFrom` for the supported\n * units (e.g., pt, em, %).\n * @returns the number of points that is equivalent to `fontSize`\n */\n static convertSizeToPointValue(fontSize = Font.SIZE) {\n var _a;\n if (typeof fontSize === 'number') {\n // Assume the numeric fontSize is specified in pt.\n return fontSize;\n }\n else {\n const value = parseFloat(fontSize);\n if (isNaN(value)) {\n return 0;\n }\n const unit = fontSize.replace(/[\\d.\\s]/g, '').toLowerCase(); // Extract the unit by removing all numbers, dots, spaces.\n const conversionFactor = ((_a = Font.scaleToPxFrom[unit]) !== null && _a !== void 0 ? _a : 1) / Font.scaleToPxFrom.pt;\n return value * conversionFactor;\n }\n }\n /**\n * @param f\n * @param size\n * @param weight\n * @param style\n * @returns the `size` field will include the units (e.g., '12pt', '16px').\n */\n static validate(f, size, weight, style) {\n // If f is a string but all other arguments are undefined, we assume that\n // f is CSS font shorthand (e.g., 'italic bold 10pt Arial').\n if (typeof f === 'string' && size === undefined && weight === undefined && style === undefined) {\n return Font.fromCSSString(f);\n }\n let family;\n if (typeof f === 'object') {\n // f is a FontInfo object, so we extract its fields.\n family = f.family;\n size = f.size;\n weight = f.weight;\n style = f.style;\n }\n else {\n // f is a string representing the font family name or undefined.\n family = f;\n }\n family = family !== null && family !== void 0 ? family : Font.SANS_SERIF;\n size = size !== null && size !== void 0 ? size : Font.SIZE + 'pt';\n weight = weight !== null && weight !== void 0 ? weight : FontWeight.NORMAL;\n style = style !== null && style !== void 0 ? style : FontStyle.NORMAL;\n if (weight === '') {\n weight = FontWeight.NORMAL;\n }\n if (style === '') {\n style = FontStyle.NORMAL;\n }\n // If size is a number, we assume the unit is `pt`.\n if (typeof size === 'number') {\n size = `${size}pt`;\n }\n // If weight is a number (e.g., 900), turn it into a string representation of that number.\n if (typeof weight === 'number') {\n weight = weight.toString();\n }\n // At this point, `family`, `size`, `weight`, and `style` are all strings.\n return { family, size, weight, style };\n }\n /**\n * @param cssFontShorthand a string formatted as CSS font shorthand (e.g., 'italic bold 15pt Arial').\n */\n static fromCSSString(cssFontShorthand) {\n // Let the browser parse this string for us.\n // First, create a span element.\n // Then, set its style.font and extract it back out.\n if (!fontParser) {\n fontParser = document.createElement('span');\n }\n fontParser.style.font = cssFontShorthand;\n const { fontFamily, fontSize, fontWeight, fontStyle } = fontParser.style;\n return { family: fontFamily, size: fontSize, weight: fontWeight, style: fontStyle };\n }\n /**\n * @returns a CSS font shorthand string of the form `italic bold 16pt Arial`.\n */\n static toCSSString(fontInfo) {\n var _a;\n if (!fontInfo) {\n return '';\n }\n let style;\n const st = fontInfo.style;\n if (st === FontStyle.NORMAL || st === '' || st === undefined) {\n style = ''; // no space! Omit the style section.\n }\n else {\n style = st.trim() + ' ';\n }\n let weight;\n const wt = fontInfo.weight;\n if (wt === FontWeight.NORMAL || wt === '' || wt === undefined) {\n weight = ''; // no space! Omit the weight section.\n }\n else if (typeof wt === 'number') {\n weight = wt + ' ';\n }\n else {\n weight = wt.trim() + ' ';\n }\n let size;\n const sz = fontInfo.size;\n if (sz === undefined) {\n size = Font.SIZE + 'pt ';\n }\n else if (typeof sz === 'number') {\n size = sz + 'pt ';\n }\n else {\n // size is already a string.\n size = sz.trim() + ' ';\n }\n const family = (_a = fontInfo.family) !== null && _a !== void 0 ? _a : Font.SANS_SERIF;\n return `${style}${weight}${size}${family}`;\n }\n /**\n * @param fontSize a number representing a font size, or a string font size with units.\n * @param scaleFactor multiply the size by this factor.\n * @returns size * scaleFactor (e.g., 16pt * 3 = 48pt, 8px * 0.5 = 4px, 24 * 2 = 48).\n * If the fontSize argument was a number, the return value will be a number.\n * If the fontSize argument was a string, the return value will be a string.\n */\n static scaleSize(fontSize, scaleFactor) {\n if (typeof fontSize === 'number') {\n return (fontSize * scaleFactor);\n }\n else {\n const value = parseFloat(fontSize);\n const unit = fontSize.replace(/[\\d.\\s]/g, ''); // Remove all numbers, dots, spaces.\n return `${value * scaleFactor}${unit}`;\n }\n }\n /**\n * @param weight a string (e.g., 'bold') or a number (e.g., 600 / semi-bold in the OpenType spec).\n * @returns true if the font weight indicates bold.\n */\n static isBold(weight) {\n if (!weight) {\n return false;\n }\n else if (typeof weight === 'number') {\n return weight >= 600;\n }\n else {\n // a string can be 'bold' or '700'\n const parsedWeight = parseInt(weight, 10);\n if (isNaN(parsedWeight)) {\n return weight.toLowerCase() === 'bold';\n }\n else {\n return parsedWeight >= 600;\n }\n }\n }\n /**\n * @param style\n * @returns true if the font style indicates 'italic'.\n */\n static isItalic(style) {\n if (!style) {\n return false;\n }\n else {\n return style.toLowerCase() === FontStyle.ITALIC;\n }\n }\n /**\n * @param fontName\n * @param woffURL The absolute or relative URL to the woff file.\n * @param includeWoff2 If true, we assume that a woff2 file is in\n * the same folder as the woff file, and will append a `2` to the url.\n */\n // Support distributions of the typescript compiler that do not yet include the FontFace API declarations.\n // eslint-disable-next-line\n // @ts-ignore\n static loadWebFont(fontName, woffURL, includeWoff2 = true) {\n return __awaiter(this, void 0, void 0, function* () {\n const woff2URL = includeWoff2 ? `url(${woffURL}2) format('woff2'), ` : '';\n const woff1URL = `url(${woffURL}) format('woff')`;\n const woffURLs = woff2URL + woff1URL;\n // eslint-disable-next-line\n // @ts-ignore\n const fontFace = new FontFace(fontName, woffURLs);\n yield fontFace.load();\n // eslint-disable-next-line\n // @ts-ignore\n document.fonts.add(fontFace);\n return fontFace;\n });\n }\n /**\n * Load the web fonts that are used by ChordSymbol. For example, `flow.html` calls:\n * `await Vex.Flow.Font.loadWebFonts();`\n * Alternatively, you may load web fonts with a stylesheet link (e.g., from Google Fonts),\n * and a @font-face { font-family: ... } rule in your CSS.\n * If you do not load either of these fonts, ChordSymbol will fall back to Times or Arial,\n * depending on the current music engraving font.\n *\n * You can customize `Font.WEB_FONT_HOST` and `Font.WEB_FONT_FILES` to load different fonts\n * for your app.\n */\n static loadWebFonts() {\n return __awaiter(this, void 0, void 0, function* () {\n const host = Font.WEB_FONT_HOST;\n const files = Font.WEB_FONT_FILES;\n for (const fontName in files) {\n const fontPath = files[fontName];\n Font.loadWebFont(fontName, host + fontPath);\n }\n });\n }\n /**\n * @param fontName\n * @param data optionally set the Font object's `.data` property.\n * This is usually done when setting up a font for the first time.\n * @param metrics optionally set the Font object's `.metrics` property.\n * This is usually done when setting up a font for the first time.\n * @returns a Font object with the given `fontName`.\n * Reuse an existing Font object if a matching one is found.\n */\n static load(fontName, data, metrics) {\n let font = Fonts[fontName];\n if (!font) {\n font = new Font(fontName);\n Fonts[fontName] = font;\n }\n if (data) {\n font.setData(data);\n }\n if (metrics) {\n font.setMetrics(metrics);\n }\n return font;\n }\n getName() {\n return this.name;\n }\n getData() {\n return defined(this.data, 'FontError', 'Missing font data');\n }\n getMetrics() {\n return defined(this.metrics, 'FontError', 'Missing metrics');\n }\n setData(data) {\n this.data = data;\n }\n setMetrics(metrics) {\n this.metrics = metrics;\n }\n hasData() {\n return this.data !== undefined;\n }\n getResolution() {\n return this.getData().resolution;\n }\n getGlyphs() {\n return this.getData().glyphs;\n }\n /**\n * Use the provided key to look up a value in this font's metrics file (e.g., bravura_metrics.ts, petaluma_metrics.ts).\n * @param key is a string separated by periods (e.g., stave.endPaddingMax, clef.lineCount.'5'.shiftY).\n * @param defaultValue is returned if the lookup fails.\n * @returns the retrieved value (or `defaultValue` if the lookup fails).\n */\n // eslint-disable-next-line\n lookupMetric(key, defaultValue) {\n const keyParts = key.split('.');\n // Start with the top level font metrics object, and keep looking deeper into the object (via each part of the period-delimited key).\n let currObj = this.getMetrics();\n for (let i = 0; i < keyParts.length; i++) {\n const keyPart = keyParts[i];\n const value = currObj[keyPart];\n if (value === undefined) {\n // If the key lookup fails, we fall back to the defaultValue.\n return defaultValue;\n }\n // The most recent lookup succeeded, so we drill deeper into the object.\n currObj = value;\n }\n // After checking every part of the key (i.e., the loop completed), return the most recently retrieved value.\n return currObj;\n }\n /** For debugging. */\n toString() {\n return '[' + this.name + ' Font]';\n }\n}\n//////////////////////////////////////////////////////////////////////////////////////////////////\n// STATIC MEMBERS\n/** Default sans-serif font family. */\nFont.SANS_SERIF = 'Arial, sans-serif';\n/** Default serif font family. */\nFont.SERIF = 'Times New Roman, serif';\n/** Default font size in `pt`. */\nFont.SIZE = 10;\n// CSS Font Sizes: 36pt == 48px == 3em == 300% == 0.5in\n/** Given a length (for units: pt, px, em, %, in, mm, cm) what is the scale factor to convert it to px? */\nFont.scaleToPxFrom = {\n pt: 4 / 3,\n px: 1,\n em: 16,\n '%': 4 / 25,\n in: 96,\n mm: 96 / 25.4,\n cm: 96 / 2.54,\n};\n/**\n * Customize this field to specify a different CDN for delivering web fonts.\n * Alternative: https://cdn.jsdelivr.net/npm/vexflow-fonts@1.0.3/\n * Or you can use your own host.\n */\nFont.WEB_FONT_HOST = 'https://unpkg.com/vexflow-fonts@1.0.3/';\n/**\n * These font files will be loaded from the CDN specified by `Font.WEB_FONT_HOST` when\n * `await Font.loadWebFonts()` is called. Customize this field to specify a different\n * set of fonts to load. See: `Font.loadWebFonts()`.\n */\nFont.WEB_FONT_FILES = {\n 'Roboto Slab': 'robotoslab/RobotoSlab-Medium_2.001.woff',\n PetalumaScript: 'petaluma/PetalumaScript_1.10_FS.woff',\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n//\n// ## Description\n//\n// This file implements a registry for VexFlow elements. It allows users\n// to track, query, and manage some subset of generated elements, and\n// dynamically get and set attributes.\n//\n// There are two ways to register with a registry:\n//\n// 1) Explicitly call `registry.register(elem:Element, id?:string)`, or,\n// 2) Call `Registry.enableDefaultRegistry(registry)` when ready, and all future\n// elements will automatically register with it.\n//\n// Once an element is registered, selected attributes are tracked and indexed by\n// the registry. This allows fast look up of elements by attributes like id, type,\n// and class.\nimport { RuntimeError } from './util';\n// Indexes are represented as maps of maps of maps. This allows\n// for both multi-labeling (e.g., an element can have multiple classes)\n// and efficient lookup.\nclass Index {\n constructor() {\n this.id = {};\n this.type = {};\n this.class = {};\n }\n}\nexport class Registry {\n constructor() {\n this.index = new Index();\n }\n static getDefaultRegistry() {\n return Registry.defaultRegistry;\n }\n // If you call `enableDefaultRegistry`, any new elements will auto-register with\n // the provided registry as soon as they're constructed.\n static enableDefaultRegistry(registry) {\n Registry.defaultRegistry = registry;\n }\n static disableDefaultRegistry() {\n Registry.defaultRegistry = undefined;\n }\n clear() {\n this.index = new Index();\n return this;\n }\n setIndexValue(name, value, id, elem) {\n const index = this.index;\n if (!index[name][value]) {\n index[name][value] = {};\n }\n index[name][value][id] = elem;\n }\n // Updates the indexes for element 'id'. If an element's attribute changes\n // from A -> B, make sure to remove the element from A.\n updateIndex({ id, name, value, oldValue }) {\n const elem = this.getElementById(id);\n if (oldValue !== undefined && this.index[name][oldValue]) {\n delete this.index[name][oldValue][id];\n }\n if (value && elem) {\n this.setIndexValue(name, value, elem.getAttribute('id'), elem);\n }\n }\n /**\n * Register element `elem` with this registry.\n * This adds the element to its index and watches it for attribute changes.\n * @param elem\n * @param id\n * @returns this\n */\n register(elem, id) {\n id = id || elem.getAttribute('id');\n if (!id) {\n throw new RuntimeError(\"Can't add element without `id` attribute to registry\");\n }\n // Manually add id to index, then update other indexes.\n elem.setAttribute('id', id);\n this.setIndexValue('id', id, id, elem);\n this.updateIndex({ id, name: 'type', value: elem.getAttribute('type'), oldValue: undefined });\n elem.onRegister(this);\n return this;\n }\n getElementById(id) {\n var _a, _b;\n return (_b = (_a = this.index.id) === null || _a === void 0 ? void 0 : _a[id]) === null || _b === void 0 ? void 0 : _b[id]; // return undefined if the id is not found.\n }\n getElementsByAttribute(attribute, value) {\n const index_attr = this.index[attribute];\n if (index_attr) {\n const index_attr_val = index_attr[value];\n if (index_attr_val) {\n const keys = Object.keys(index_attr_val);\n return keys.map((k) => index_attr_val[k]);\n }\n }\n return [];\n }\n getElementsByType(type) {\n return this.getElementsByAttribute('type', type);\n }\n getElementsByClass(className) {\n return this.getElementsByAttribute('class', className);\n }\n // This is called by the element when an attribute value changes. If an indexed\n // attribute changes, then update the local index.\n onUpdate(info) {\n const allowedNames = ['id', 'type', 'class'];\n if (allowedNames.includes(info.name)) {\n this.updateIndex(info);\n }\n return this;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Registry } from './registry';\nimport { Category } from './typeguard';\nimport { defined, prefix } from './util';\n/**\n * Element implements a generic base class for VexFlow, with implementations\n * of general functions and properties that can be inherited by all VexFlow elements.\n */\nexport class Element {\n constructor() {\n var _a;\n this.children = [];\n this.attrs = {\n id: Element.newID(),\n el: undefined,\n type: this.getCategory(),\n classes: {},\n };\n this.rendered = false;\n // If a default registry exist, then register with it right away.\n (_a = Registry.getDefaultRegistry()) === null || _a === void 0 ? void 0 : _a.register(this);\n }\n static get CATEGORY() {\n return Category.Element;\n }\n static newID() {\n return `auto${Element.ID++}`;\n }\n addChildElement(child) {\n this.children.push(child);\n return this;\n }\n getCategory() {\n return this.constructor.CATEGORY;\n }\n /**\n * Set the element style used to render.\n *\n * Example:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.draw();\n * ```\n * Note: If the element draws additional sub-elements (ie.: Modifiers in a Stave),\n * the style can be applied to all of them by means of the context:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.getContext().setFillStyle('red');\n * element.getContext().setStrokeStyle('red');\n * element.draw();\n * ```\n * or using drawWithStyle:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.drawWithStyle();\n * ```\n */\n setStyle(style) {\n this.style = style;\n return this;\n }\n /** Set the element & associated children style used for rendering. */\n setGroupStyle(style) {\n this.style = style;\n this.children.forEach((child) => child.setGroupStyle(style));\n return this;\n }\n /** Get the element style used for rendering. */\n getStyle() {\n return this.style;\n }\n /** Apply the element style to `context`. */\n applyStyle(context = this.context, style = this.getStyle()) {\n if (!style)\n return this;\n if (!context)\n return this;\n context.save();\n if (style.shadowColor)\n context.setShadowColor(style.shadowColor);\n if (style.shadowBlur)\n context.setShadowBlur(style.shadowBlur);\n if (style.fillStyle)\n context.setFillStyle(style.fillStyle);\n if (style.strokeStyle)\n context.setStrokeStyle(style.strokeStyle);\n if (style.lineWidth)\n context.setLineWidth(style.lineWidth);\n return this;\n }\n /** Restore the style of `context`. */\n restoreStyle(context = this.context, style = this.getStyle()) {\n if (!style)\n return this;\n if (!context)\n return this;\n context.restore();\n return this;\n }\n /**\n * Draw the element and all its sub-elements (ie.: Modifiers in a Stave)\n * with the element style.\n */\n drawWithStyle() {\n this.checkContext();\n this.applyStyle();\n this.draw();\n this.restoreStyle();\n }\n /** Check if it has a class label (An element can have multiple class labels). */\n hasClass(className) {\n return this.attrs.classes[className] === true;\n }\n /** Add a class label (An element can have multiple class labels). */\n addClass(className) {\n var _a;\n this.attrs.classes[className] = true;\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({\n id: this.attrs.id,\n name: 'class',\n value: className,\n oldValue: undefined,\n });\n return this;\n }\n /** Remove a class label (An element can have multiple class labels). */\n removeClass(className) {\n var _a;\n delete this.attrs.classes[className];\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({\n id: this.attrs.id,\n name: 'class',\n value: undefined,\n oldValue: className,\n });\n return this;\n }\n /** Call back from registry after the element is registered. */\n onRegister(registry) {\n this.registry = registry;\n return this;\n }\n /** Return the rendered status. */\n isRendered() {\n return this.rendered;\n }\n /** Set the rendered status. */\n setRendered(rendered = true) {\n this.rendered = rendered;\n return this;\n }\n /** Return the element attributes. */\n getAttributes() {\n return this.attrs;\n }\n /** Return an attribute. */\n // eslint-disable-next-line\n getAttribute(name) {\n return this.attrs[name];\n }\n /** Return associated SVGElement. */\n getSVGElement(suffix = '') {\n const id = prefix(this.attrs.id + suffix);\n const element = document.getElementById(id);\n if (element)\n return element;\n }\n /** Set an attribute. */\n // eslint-disable-next-line\n setAttribute(name, value) {\n var _a;\n const oldID = this.attrs.id;\n const oldValue = this.attrs[name];\n this.attrs[name] = value;\n // Register with old id to support id changes.\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({ id: oldID, name, value, oldValue });\n return this;\n }\n /** Get the boundingBox. */\n getBoundingBox() {\n return this.boundingBox;\n }\n /** Return the context. */\n getContext() {\n return this.context;\n }\n /** Set the context. */\n setContext(context) {\n this.context = context;\n return this;\n }\n /** Validate and return the context. */\n checkContext() {\n return defined(this.context, 'NoContext', 'No rendering context attached to instance.');\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // Font Handling\n /**\n * Provide a CSS compatible font string (e.g., 'bold 16px Arial').\n */\n set font(f) {\n this.setFont(f);\n }\n /** Returns the CSS compatible font string. */\n get font() {\n return Font.toCSSString(this.textFont);\n }\n /**\n * Set the element's font family, size, weight, style (e.g., `Arial`, `10pt`, `bold`, `italic`).\n * @param font is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (at least one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n * If no arguments are provided, then the font is set to the default font.\n * Each Element subclass may specify its own default by overriding the static `TEXT_FONT` property.\n */\n setFont(font, size, weight, style) {\n // Allow subclasses to override `TEXT_FONT`.\n const defaultTextFont = this.constructor.TEXT_FONT;\n const fontIsObject = typeof font === 'object';\n const fontIsString = typeof font === 'string';\n const fontIsUndefined = font === undefined;\n const sizeWeightStyleAreUndefined = size === undefined && weight === undefined && style === undefined;\n if (fontIsObject) {\n // `font` is case 1) a FontInfo object\n this.textFont = Object.assign(Object.assign({}, defaultTextFont), font);\n }\n else if (fontIsString && sizeWeightStyleAreUndefined) {\n // `font` is case 2) CSS font shorthand.\n this.textFont = Font.fromCSSString(font);\n }\n else if (fontIsUndefined && sizeWeightStyleAreUndefined) {\n // All arguments are undefined. Do not check for `arguments.length === 0`,\n // which fails on the edge case: `setFont(undefined)`.\n // TODO: See if we can remove this case entirely without introducing a visual diff.\n // The else case below seems like it should be equivalent to this case.\n this.textFont = Object.assign({}, defaultTextFont);\n }\n else {\n // `font` is case 3) a font family string (e.g., 'Times New Roman').\n // The other parameters represent the size, weight, and style.\n // It is okay for `font` to be undefined while one or more of the other arguments is provided.\n // Following CSS conventions, unspecified params are reset to the default.\n this.textFont = Font.validate(font !== null && font !== void 0 ? font : defaultTextFont.family, size !== null && size !== void 0 ? size : defaultTextFont.size, weight !== null && weight !== void 0 ? weight : defaultTextFont.weight, style !== null && style !== void 0 ? style : defaultTextFont.style);\n }\n return this;\n }\n getFont() {\n if (!this.textFont) {\n this.resetFont();\n }\n return Font.toCSSString(this.textFont);\n }\n /**\n * Reset the text font to the style indicated by the static `TEXT_FONT` property.\n * Subclasses can call this to initialize `textFont` for the first time.\n */\n resetFont() {\n this.setFont();\n }\n /** Return a copy of the current FontInfo object. */\n get fontInfo() {\n if (!this.textFont) {\n this.resetFont();\n }\n // We can cast to Required here, because\n // we just called resetFont() above to ensure this.textFont is set.\n return Object.assign({}, this.textFont);\n }\n set fontInfo(fontInfo) {\n this.setFont(fontInfo);\n }\n /** Change the font size, while keeping everything else the same. */\n setFontSize(size) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, size, fontInfo.weight, fontInfo.style);\n return this;\n }\n /**\n * @returns a CSS font-size string (e.g., '18pt', '12px', '1em').\n * See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.\n */\n getFontSize() {\n return this.fontSize;\n }\n /**\n * The size is 1) a string of the form '10pt' or '16px', compatible with the CSS font-size property.\n * or 2) a number, which is interpreted as a point size (i.e. 12 == '12pt').\n */\n set fontSize(size) {\n this.setFontSize(size);\n }\n /**\n * @returns a CSS font-size string (e.g., '18pt', '12px', '1em').\n */\n get fontSize() {\n let size = this.fontInfo.size;\n if (typeof size === 'number') {\n size = `${size}pt`;\n }\n return size;\n }\n /**\n * @returns the font size in `pt`.\n */\n get fontSizeInPoints() {\n return Font.convertSizeToPointValue(this.fontSize);\n }\n /**\n * @returns the font size in `px`.\n */\n get fontSizeInPixels() {\n return Font.convertSizeToPixelValue(this.fontSize);\n }\n /**\n * @returns a CSS font-style string (e.g., 'italic').\n */\n get fontStyle() {\n return this.fontInfo.style;\n }\n set fontStyle(style) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, fontInfo.size, fontInfo.weight, style);\n }\n /**\n * @returns a CSS font-weight string (e.g., 'bold').\n * As in CSS, font-weight is always returned as a string, even if it was set as a number.\n */\n get fontWeight() {\n return this.fontInfo.weight + '';\n }\n set fontWeight(weight) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, fontInfo.size, weight, fontInfo.style);\n }\n}\nElement.ID = 1000;\n/**\n * Default font for text. This is not related to music engraving. Instead, see `Flow.setMusicFont(...fontNames)`\n * to customize the font for musical symbols placed on the score.\n */\nElement.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: Font.SIZE,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Fraction } from './fraction';\nimport { Glyph } from './glyph';\nimport { RuntimeError } from './util';\nconst RESOLUTION = 16384;\n/**\n * Map duration numbers to 'ticks', the unit of duration used throughout VexFlow.\n * For example, a quarter note is 4, so it maps to RESOLUTION / 4 = 4096 ticks.\n */\nconst durations = {\n '1/2': RESOLUTION * 2,\n 1: RESOLUTION / 1,\n 2: RESOLUTION / 2,\n 4: RESOLUTION / 4,\n 8: RESOLUTION / 8,\n 16: RESOLUTION / 16,\n 32: RESOLUTION / 32,\n 64: RESOLUTION / 64,\n 128: RESOLUTION / 128,\n 256: RESOLUTION / 256,\n};\nconst durationAliases = {\n w: '1',\n h: '2',\n q: '4',\n // This is the default duration used to render bars (BarNote). Bars no longer\n // consume ticks, so this should be a no-op.\n // TODO(0xfe): This needs to be cleaned up.\n b: '256',\n};\nconst keySignatures = {\n C: { num: 0 },\n Am: { num: 0 },\n F: { acc: 'b', num: 1 },\n Dm: { acc: 'b', num: 1 },\n Bb: { acc: 'b', num: 2 },\n Gm: { acc: 'b', num: 2 },\n Eb: { acc: 'b', num: 3 },\n Cm: { acc: 'b', num: 3 },\n Ab: { acc: 'b', num: 4 },\n Fm: { acc: 'b', num: 4 },\n Db: { acc: 'b', num: 5 },\n Bbm: { acc: 'b', num: 5 },\n Gb: { acc: 'b', num: 6 },\n Ebm: { acc: 'b', num: 6 },\n Cb: { acc: 'b', num: 7 },\n Abm: { acc: 'b', num: 7 },\n G: { acc: '#', num: 1 },\n Em: { acc: '#', num: 1 },\n D: { acc: '#', num: 2 },\n Bm: { acc: '#', num: 2 },\n A: { acc: '#', num: 3 },\n 'F#m': { acc: '#', num: 3 },\n E: { acc: '#', num: 4 },\n 'C#m': { acc: '#', num: 4 },\n B: { acc: '#', num: 5 },\n 'G#m': { acc: '#', num: 5 },\n 'F#': { acc: '#', num: 6 },\n 'D#m': { acc: '#', num: 6 },\n 'C#': { acc: '#', num: 7 },\n 'A#m': { acc: '#', num: 7 },\n};\nconst clefs = {\n treble: { line_shift: 0 },\n bass: { line_shift: 6 },\n tenor: { line_shift: 4 },\n alto: { line_shift: 3 },\n soprano: { line_shift: 1 },\n percussion: { line_shift: 0 },\n 'mezzo-soprano': { line_shift: 2 },\n 'baritone-c': { line_shift: 5 },\n 'baritone-f': { line_shift: 5 },\n subbass: { line_shift: 7 },\n french: { line_shift: -1 },\n};\nconst notesInfo = {\n C: { index: 0, int_val: 0 },\n CN: { index: 0, int_val: 0, accidental: 'n' },\n 'C#': { index: 0, int_val: 1, accidental: '#' },\n 'C##': { index: 0, int_val: 2, accidental: '##' },\n CB: { index: 0, int_val: 11, accidental: 'b' },\n CBB: { index: 0, int_val: 10, accidental: 'bb' },\n D: { index: 1, int_val: 2 },\n DN: { index: 1, int_val: 2, accidental: 'n' },\n 'D#': { index: 1, int_val: 3, accidental: '#' },\n 'D##': { index: 1, int_val: 4, accidental: '##' },\n DB: { index: 1, int_val: 1, accidental: 'b' },\n DBB: { index: 1, int_val: 0, accidental: 'bb' },\n E: { index: 2, int_val: 4 },\n EN: { index: 2, int_val: 4, accidental: 'n' },\n 'E#': { index: 2, int_val: 5, accidental: '#' },\n 'E##': { index: 2, int_val: 6, accidental: '##' },\n EB: { index: 2, int_val: 3, accidental: 'b' },\n EBB: { index: 2, int_val: 2, accidental: 'bb' },\n F: { index: 3, int_val: 5 },\n FN: { index: 3, int_val: 5, accidental: 'n' },\n 'F#': { index: 3, int_val: 6, accidental: '#' },\n 'F##': { index: 3, int_val: 7, accidental: '##' },\n FB: { index: 3, int_val: 4, accidental: 'b' },\n FBB: { index: 3, int_val: 3, accidental: 'bb' },\n G: { index: 4, int_val: 7 },\n GN: { index: 4, int_val: 7, accidental: 'n' },\n 'G#': { index: 4, int_val: 8, accidental: '#' },\n 'G##': { index: 4, int_val: 9, accidental: '##' },\n GB: { index: 4, int_val: 6, accidental: 'b' },\n GBB: { index: 4, int_val: 5, accidental: 'bb' },\n A: { index: 5, int_val: 9 },\n AN: { index: 5, int_val: 9, accidental: 'n' },\n 'A#': { index: 5, int_val: 10, accidental: '#' },\n 'A##': { index: 5, int_val: 11, accidental: '##' },\n AB: { index: 5, int_val: 8, accidental: 'b' },\n ABB: { index: 5, int_val: 7, accidental: 'bb' },\n B: { index: 6, int_val: 11 },\n BN: { index: 6, int_val: 11, accidental: 'n' },\n 'B#': { index: 6, int_val: 12, accidental: '#' },\n 'B##': { index: 6, int_val: 13, accidental: '##' },\n BB: { index: 6, int_val: 10, accidental: 'b' },\n BBB: { index: 6, int_val: 9, accidental: 'bb' },\n R: { index: 6, rest: true },\n X: {\n index: 6,\n accidental: '',\n octave: 4,\n code: 'noteheadXBlack',\n shift_right: 5.5,\n },\n};\nconst validNoteTypes = {\n n: { name: 'note' },\n r: { name: 'rest' },\n h: { name: 'harmonic' },\n m: { name: 'muted' },\n s: { name: 'slash' },\n g: { name: 'ghost' },\n d: { name: 'diamond' },\n x: { name: 'x' },\n ci: { name: 'circled' },\n cx: { name: 'circle x' },\n sf: { name: 'slashed' },\n sb: { name: 'slashed backward' },\n sq: { name: 'square' },\n tu: { name: 'triangle up' },\n td: { name: 'triangle down' },\n};\nconst accidentals = {\n '#': { code: 'accidentalSharp', parenRightPaddingAdjustment: -1 },\n '##': { code: 'accidentalDoubleSharp', parenRightPaddingAdjustment: -1 },\n b: { code: 'accidentalFlat', parenRightPaddingAdjustment: -2 },\n bb: { code: 'accidentalDoubleFlat', parenRightPaddingAdjustment: -2 },\n n: { code: 'accidentalNatural', parenRightPaddingAdjustment: -1 },\n '{': { code: 'accidentalParensLeft', parenRightPaddingAdjustment: -1 },\n '}': { code: 'accidentalParensRight', parenRightPaddingAdjustment: -1 },\n db: { code: 'accidentalThreeQuarterTonesFlatZimmermann', parenRightPaddingAdjustment: -1 },\n d: { code: 'accidentalQuarterToneFlatStein', parenRightPaddingAdjustment: 0 },\n '++': { code: 'accidentalThreeQuarterTonesSharpStein', parenRightPaddingAdjustment: -1 },\n '+': { code: 'accidentalQuarterToneSharpStein', parenRightPaddingAdjustment: -1 },\n '+-': { code: 'accidentalKucukMucennebSharp', parenRightPaddingAdjustment: -1 },\n bs: { code: 'accidentalBakiyeFlat', parenRightPaddingAdjustment: -1 },\n bss: { code: 'accidentalBuyukMucennebFlat', parenRightPaddingAdjustment: -1 },\n o: { code: 'accidentalSori', parenRightPaddingAdjustment: -1 },\n k: { code: 'accidentalKoron', parenRightPaddingAdjustment: -1 },\n bbs: { code: 'vexAccidentalMicrotonal1', parenRightPaddingAdjustment: -1 },\n '++-': { code: 'vexAccidentalMicrotonal2', parenRightPaddingAdjustment: -1 },\n ashs: { code: 'vexAccidentalMicrotonal3', parenRightPaddingAdjustment: -1 },\n afhf: { code: 'vexAccidentalMicrotonal4', parenRightPaddingAdjustment: -1 },\n accSagittal5v7KleismaUp: { code: 'accSagittal5v7KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v7KleismaDown: { code: 'accSagittal5v7KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5CommaUp: { code: 'accSagittal5CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5CommaDown: { code: 'accSagittal5CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7CommaUp: { code: 'accSagittal7CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7CommaDown: { code: 'accSagittal7CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal25SmallDiesisUp: { code: 'accSagittal25SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal25SmallDiesisDown: { code: 'accSagittal25SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal35MediumDiesisUp: { code: 'accSagittal35MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal35MediumDiesisDown: { code: 'accSagittal35MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11MediumDiesisUp: { code: 'accSagittal11MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11MediumDiesisDown: { code: 'accSagittal11MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11LargeDiesisUp: { code: 'accSagittal11LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11LargeDiesisDown: { code: 'accSagittal11LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal35LargeDiesisUp: { code: 'accSagittal35LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal35LargeDiesisDown: { code: 'accSagittal35LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp25SDown: { code: 'accSagittalSharp25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat25SUp: { code: 'accSagittalFlat25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7CDown: { code: 'accSagittalSharp7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7CUp: { code: 'accSagittalFlat7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5CDown: { code: 'accSagittalSharp5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5CUp: { code: 'accSagittalFlat5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v7kDown: { code: 'accSagittalSharp5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v7kUp: { code: 'accSagittalFlat5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp: { code: 'accSagittalSharp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat: { code: 'accSagittalFlat', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v7kUp: { code: 'accSagittalSharp5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v7kDown: { code: 'accSagittalFlat5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5CUp: { code: 'accSagittalSharp5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5CDown: { code: 'accSagittalFlat5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7CUp: { code: 'accSagittalSharp7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7CDown: { code: 'accSagittalFlat7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp25SUp: { code: 'accSagittalSharp25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat25SDown: { code: 'accSagittalFlat25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp35MUp: { code: 'accSagittalSharp35MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat35MDown: { code: 'accSagittalFlat35MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11MUp: { code: 'accSagittalSharp11MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11MDown: { code: 'accSagittalFlat11MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11LUp: { code: 'accSagittalSharp11LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11LDown: { code: 'accSagittalFlat11LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp35LUp: { code: 'accSagittalSharp35LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat35LDown: { code: 'accSagittalFlat35LDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp25SDown: { code: 'accSagittalDoubleSharp25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat25SUp: { code: 'accSagittalDoubleFlat25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7CDown: { code: 'accSagittalDoubleSharp7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7CUp: { code: 'accSagittalDoubleFlat7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5CDown: { code: 'accSagittalDoubleSharp5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5CUp: { code: 'accSagittalDoubleFlat5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v7kDown: { code: 'accSagittalDoubleSharp5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v7kUp: { code: 'accSagittalDoubleFlat5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp: { code: 'accSagittalDoubleSharp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat: { code: 'accSagittalDoubleFlat', parenRightPaddingAdjustment: -1 },\n accSagittal7v11KleismaUp: { code: 'accSagittal7v11KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v11KleismaDown: { code: 'accSagittal7v11KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal17CommaUp: { code: 'accSagittal17CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal17CommaDown: { code: 'accSagittal17CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal55CommaUp: { code: 'accSagittal55CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal55CommaDown: { code: 'accSagittal55CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7v11CommaUp: { code: 'accSagittal7v11CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v11CommaDown: { code: 'accSagittal7v11CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v11SmallDiesisUp: { code: 'accSagittal5v11SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v11SmallDiesisDown: { code: 'accSagittal5v11SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v11SDown: { code: 'accSagittalSharp5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v11SUp: { code: 'accSagittalFlat5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11CDown: { code: 'accSagittalSharp7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11CUp: { code: 'accSagittalFlat7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp55CDown: { code: 'accSagittalSharp55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat55CUp: { code: 'accSagittalFlat55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17CDown: { code: 'accSagittalSharp17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17CUp: { code: 'accSagittalFlat17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11kDown: { code: 'accSagittalSharp7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11kUp: { code: 'accSagittalFlat7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11kUp: { code: 'accSagittalSharp7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11kDown: { code: 'accSagittalFlat7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17CUp: { code: 'accSagittalSharp17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17CDown: { code: 'accSagittalFlat17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp55CUp: { code: 'accSagittalSharp55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat55CDown: { code: 'accSagittalFlat55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11CUp: { code: 'accSagittalSharp7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11CDown: { code: 'accSagittalFlat7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v11SUp: { code: 'accSagittalSharp5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v11SDown: { code: 'accSagittalFlat5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v11SDown: { code: 'accSagittalDoubleSharp5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v11SUp: { code: 'accSagittalDoubleFlat5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v11CDown: { code: 'accSagittalDoubleSharp7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v11CUp: { code: 'accSagittalDoubleFlat7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp55CDown: { code: 'accSagittalDoubleSharp55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat55CUp: { code: 'accSagittalDoubleFlat55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp17CDown: { code: 'accSagittalDoubleSharp17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat17CUp: { code: 'accSagittalDoubleFlat17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v11kDown: { code: 'accSagittalDoubleSharp7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v11kUp: { code: 'accSagittalDoubleFlat7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittal23CommaUp: { code: 'accSagittal23CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal23CommaDown: { code: 'accSagittal23CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v19CommaUp: { code: 'accSagittal5v19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v19CommaDown: { code: 'accSagittal5v19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v23SmallDiesisUp: { code: 'accSagittal5v23SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v23SmallDiesisDown: { code: 'accSagittal5v23SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v23SDown: { code: 'accSagittalSharp5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v23SUp: { code: 'accSagittalFlat5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v19CDown: { code: 'accSagittalSharp5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v19CUp: { code: 'accSagittalFlat5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23CDown: { code: 'accSagittalSharp23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23CUp: { code: 'accSagittalFlat23CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23CUp: { code: 'accSagittalSharp23CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23CDown: { code: 'accSagittalFlat23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v19CUp: { code: 'accSagittalSharp5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v19CDown: { code: 'accSagittalFlat5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v23SUp: { code: 'accSagittalSharp5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v23SDown: { code: 'accSagittalFlat5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v23SDown: { code: 'accSagittalDoubleSharp5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v23SUp: { code: 'accSagittalDoubleFlat5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v19CDown: { code: 'accSagittalDoubleSharp5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v19CUp: { code: 'accSagittalDoubleFlat5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp23CDown: { code: 'accSagittalDoubleSharp23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat23CUp: { code: 'accSagittalDoubleFlat23CUp', parenRightPaddingAdjustment: -1 },\n accSagittal19SchismaUp: { code: 'accSagittal19SchismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal19SchismaDown: { code: 'accSagittal19SchismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal17KleismaUp: { code: 'accSagittal17KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal17KleismaDown: { code: 'accSagittal17KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal143CommaUp: { code: 'accSagittal143CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal143CommaDown: { code: 'accSagittal143CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v49CommaUp: { code: 'accSagittal11v49CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v49CommaDown: { code: 'accSagittal11v49CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal19CommaUp: { code: 'accSagittal19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal19CommaDown: { code: 'accSagittal19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7v19CommaUp: { code: 'accSagittal7v19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v19CommaDown: { code: 'accSagittal7v19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal49SmallDiesisUp: { code: 'accSagittal49SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49SmallDiesisDown: { code: 'accSagittal49SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal23SmallDiesisUp: { code: 'accSagittal23SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal23SmallDiesisDown: { code: 'accSagittal23SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v13MediumDiesisUp: { code: 'accSagittal5v13MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v13MediumDiesisDown: { code: 'accSagittal5v13MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v19MediumDiesisUp: { code: 'accSagittal11v19MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v19MediumDiesisDown: { code: 'accSagittal11v19MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal49MediumDiesisUp: { code: 'accSagittal49MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49MediumDiesisDown: { code: 'accSagittal49MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v49MediumDiesisUp: { code: 'accSagittal5v49MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v49MediumDiesisDown: { code: 'accSagittal5v49MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal49LargeDiesisUp: { code: 'accSagittal49LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49LargeDiesisDown: { code: 'accSagittal49LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v19LargeDiesisUp: { code: 'accSagittal11v19LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v19LargeDiesisDown: { code: 'accSagittal11v19LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v13LargeDiesisUp: { code: 'accSagittal5v13LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v13LargeDiesisDown: { code: 'accSagittal5v13LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23SDown: { code: 'accSagittalSharp23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23SUp: { code: 'accSagittalFlat23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49SDown: { code: 'accSagittalSharp49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49SUp: { code: 'accSagittalFlat49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v19CDown: { code: 'accSagittalSharp7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v19CUp: { code: 'accSagittalFlat7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19CDown: { code: 'accSagittalSharp19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19CUp: { code: 'accSagittalFlat19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v49CDown: { code: 'accSagittalSharp11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v49CUp: { code: 'accSagittalFlat11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp143CDown: { code: 'accSagittalSharp143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat143CUp: { code: 'accSagittalFlat143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17kDown: { code: 'accSagittalSharp17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17kUp: { code: 'accSagittalFlat17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19sDown: { code: 'accSagittalSharp19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19sUp: { code: 'accSagittalFlat19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19sUp: { code: 'accSagittalSharp19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19sDown: { code: 'accSagittalFlat19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17kUp: { code: 'accSagittalSharp17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17kDown: { code: 'accSagittalFlat17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp143CUp: { code: 'accSagittalSharp143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat143CDown: { code: 'accSagittalFlat143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v49CUp: { code: 'accSagittalSharp11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v49CDown: { code: 'accSagittalFlat11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19CUp: { code: 'accSagittalSharp19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19CDown: { code: 'accSagittalFlat19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v19CUp: { code: 'accSagittalSharp7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v19CDown: { code: 'accSagittalFlat7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49SUp: { code: 'accSagittalSharp49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49SDown: { code: 'accSagittalFlat49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23SUp: { code: 'accSagittalSharp23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23SDown: { code: 'accSagittalFlat23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v13MUp: { code: 'accSagittalSharp5v13MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v13MDown: { code: 'accSagittalFlat5v13MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v19MUp: { code: 'accSagittalSharp11v19MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v19MDown: { code: 'accSagittalFlat11v19MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49MUp: { code: 'accSagittalSharp49MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49MDown: { code: 'accSagittalFlat49MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v49MUp: { code: 'accSagittalSharp5v49MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v49MDown: { code: 'accSagittalFlat5v49MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49LUp: { code: 'accSagittalSharp49LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49LDown: { code: 'accSagittalFlat49LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v19LUp: { code: 'accSagittalSharp11v19LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v19LDown: { code: 'accSagittalFlat11v19LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v13LUp: { code: 'accSagittalSharp5v13LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v13LDown: { code: 'accSagittalFlat5v13LDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp23SDown: { code: 'accSagittalDoubleSharp23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat23SUp: { code: 'accSagittalDoubleFlat23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp49SDown: { code: 'accSagittalDoubleSharp49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat49SUp: { code: 'accSagittalDoubleFlat49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v19CDown: { code: 'accSagittalDoubleSharp7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v19CUp: { code: 'accSagittalDoubleFlat7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp19CDown: { code: 'accSagittalDoubleSharp19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat19CUp: { code: 'accSagittalDoubleFlat19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp11v49CDown: { code: 'accSagittalDoubleSharp11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat11v49CUp: { code: 'accSagittalDoubleFlat11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp143CDown: { code: 'accSagittalDoubleSharp143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat143CUp: { code: 'accSagittalDoubleFlat143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp17kDown: { code: 'accSagittalDoubleSharp17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat17kUp: { code: 'accSagittalDoubleFlat17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp19sDown: { code: 'accSagittalDoubleSharp19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat19sUp: { code: 'accSagittalDoubleFlat19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalShaftUp: { code: 'accSagittalShaftUp', parenRightPaddingAdjustment: -1 },\n accSagittalShaftDown: { code: 'accSagittalShaftDown', parenRightPaddingAdjustment: -1 },\n accSagittalAcute: { code: 'accSagittalAcute', parenRightPaddingAdjustment: -1 },\n accSagittalGrave: { code: 'accSagittalGrave', parenRightPaddingAdjustment: -1 },\n accSagittal1MinaUp: { code: 'accSagittal1MinaUp', parenRightPaddingAdjustment: -1 },\n accSagittal1MinaDown: { code: 'accSagittal1MinaDown', parenRightPaddingAdjustment: -1 },\n accSagittal2MinasUp: { code: 'accSagittal2MinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal2MinasDown: { code: 'accSagittal2MinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal1TinaUp: { code: 'accSagittal1TinaUp', parenRightPaddingAdjustment: -1 },\n accSagittal1TinaDown: { code: 'accSagittal1TinaDown', parenRightPaddingAdjustment: -1 },\n accSagittal2TinasUp: { code: 'accSagittal2TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal2TinasDown: { code: 'accSagittal2TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal3TinasUp: { code: 'accSagittal3TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal3TinasDown: { code: 'accSagittal3TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal4TinasUp: { code: 'accSagittal4TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal4TinasDown: { code: 'accSagittal4TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal5TinasUp: { code: 'accSagittal5TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal5TinasDown: { code: 'accSagittal5TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal6TinasUp: { code: 'accSagittal6TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal6TinasDown: { code: 'accSagittal6TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal7TinasUp: { code: 'accSagittal7TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal7TinasDown: { code: 'accSagittal7TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal8TinasUp: { code: 'accSagittal8TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal8TinasDown: { code: 'accSagittal8TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal9TinasUp: { code: 'accSagittal9TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal9TinasDown: { code: 'accSagittal9TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittalFractionalTinaUp: { code: 'accSagittalFractionalTinaUp', parenRightPaddingAdjustment: -1 },\n accSagittalFractionalTinaDown: { code: 'accSagittalFractionalTinaDown', parenRightPaddingAdjustment: -1 },\n accidentalNarrowReversedFlat: { code: 'accidentalNarrowReversedFlat', parenRightPaddingAdjustment: -1 },\n accidentalNarrowReversedFlatAndFlat: {\n code: 'accidentalNarrowReversedFlatAndFlat',\n parenRightPaddingAdjustment: -1,\n },\n accidentalWilsonPlus: { code: 'accidentalWilsonPlus', parenRightPaddingAdjustment: -1 },\n accidentalWilsonMinus: { code: 'accidentalWilsonMinus', parenRightPaddingAdjustment: -1 },\n};\n// Helps determine the layout of accidentals.\nconst accidentalColumns = {\n 1: {\n a: [1],\n b: [1],\n },\n 2: {\n a: [1, 2],\n },\n 3: {\n a: [1, 3, 2],\n b: [1, 2, 1],\n second_on_bottom: [1, 2, 3],\n },\n 4: {\n a: [1, 3, 4, 2],\n b: [1, 2, 3, 1],\n spaced_out_tetrachord: [1, 2, 1, 2],\n },\n 5: {\n a: [1, 3, 5, 4, 2],\n b: [1, 2, 4, 3, 1],\n spaced_out_pentachord: [1, 2, 3, 2, 1],\n very_spaced_out_pentachord: [1, 2, 1, 2, 1],\n },\n 6: {\n a: [1, 3, 5, 6, 4, 2],\n b: [1, 2, 4, 5, 3, 1],\n spaced_out_hexachord: [1, 3, 2, 1, 3, 2],\n very_spaced_out_hexachord: [1, 2, 1, 2, 1, 2],\n },\n};\nconst articulations = {\n 'a.': { code: 'augmentationDot', between_lines: true },\n av: {\n aboveCode: 'articStaccatissimoAbove',\n belowCode: 'articStaccatissimoBelow',\n between_lines: true,\n },\n 'a>': {\n aboveCode: 'articAccentAbove',\n belowCode: 'articAccentBelow',\n between_lines: true,\n },\n 'a-': {\n aboveCode: 'articTenutoAbove',\n belowCode: 'articTenutoBelow',\n between_lines: true,\n },\n 'a^': {\n aboveCode: 'articMarcatoAbove',\n belowCode: 'articMarcatoBelow',\n between_lines: false,\n },\n 'a+': { code: 'pluckedLeftHandPizzicato', between_lines: false },\n ao: {\n aboveCode: 'pluckedSnapPizzicatoAbove',\n belowCode: 'pluckedSnapPizzicatoBelow',\n between_lines: false,\n },\n ah: { code: 'stringsHarmonic', between_lines: false },\n 'a@': { aboveCode: 'fermataAbove', belowCode: 'fermataBelow', between_lines: false },\n 'a@a': { code: 'fermataAbove', between_lines: false },\n 'a@u': { code: 'fermataBelow', between_lines: false },\n 'a@s': { aboveCode: 'fermataShortAbove', belowCode: 'fermataShortBelow', between_lines: false },\n 'a@as': { code: 'fermataShortAbove', between_lines: false },\n 'a@us': { code: 'fermataShortBelow', between_lines: false },\n 'a@l': { aboveCode: 'fermataLongAbove', belowCode: 'fermataLongBelow', between_lines: false },\n 'a@al': { code: 'fermataLongAbove', between_lines: false },\n 'a@ul': { code: 'fermataLongBelow', between_lines: false },\n 'a@vl': { aboveCode: 'fermataVeryLongAbove', belowCode: 'fermataVeryLongBelow', between_lines: false },\n 'a@avl': { code: 'fermataVeryLongAbove', between_lines: false },\n 'a@uvl': { code: 'fermataVeryLongBelow', between_lines: false },\n 'a|': { code: 'stringsUpBow', between_lines: false },\n am: { code: 'stringsDownBow', between_lines: false },\n 'a,': { code: 'pictChokeCymbal', between_lines: false }, // Choked\n};\nconst ornaments = {\n mordent: { code: 'ornamentShortTrill' },\n mordent_inverted: { code: 'ornamentMordent' },\n turn: { code: 'ornamentTurn' },\n turn_inverted: { code: 'ornamentTurnSlash' },\n tr: { code: 'ornamentTrill' },\n upprall: { code: 'ornamentPrecompSlideTrillDAnglebert' },\n downprall: { code: 'ornamentPrecompDoubleCadenceUpperPrefix' },\n prallup: { code: 'ornamentPrecompTrillSuffixDandrieu' },\n pralldown: { code: 'ornamentPrecompTrillLowerSuffix' },\n upmordent: { code: 'ornamentPrecompSlideTrillBach' },\n downmordent: { code: 'ornamentPrecompDoubleCadenceUpperPrefixTurn' },\n lineprall: { code: 'ornamentPrecompAppoggTrill' },\n prallprall: { code: 'ornamentTremblement' },\n scoop: { code: 'brassScoop' },\n doit: { code: 'brassDoitMedium' },\n fall: { code: 'brassFallLipShort' },\n doitLong: { code: 'brassLiftMedium' },\n fallLong: { code: 'brassFallRoughMedium' },\n bend: { code: 'brassBend' },\n plungerClosed: { code: 'brassMuteClosed' },\n plungerOpen: { code: 'brassMuteOpen' },\n flip: { code: 'brassFlip' },\n jazzTurn: { code: 'brassJazzTurn' },\n smear: { code: 'brassSmear' },\n};\nexport class Tables {\n /**\n * @returns the `Font` object at the head of the music font stack.\n */\n static currentMusicFont() {\n if (Tables.MUSIC_FONT_STACK.length === 0) {\n throw new RuntimeError('NoFonts', 'The font stack is empty. See: await Flow.fetchMusicFont(...); Flow.setMusicFont(...).');\n }\n else {\n return Tables.MUSIC_FONT_STACK[0];\n }\n }\n static clefProperties(clef) {\n if (!clef || !(clef in clefs))\n throw new RuntimeError('BadArgument', 'Invalid clef: ' + clef);\n return clefs[clef];\n }\n /**\n * @param keyOctaveGlyph a string in the format \"key/octave\" (e.g., \"c/5\") or \"key/octave/custom-note-head-code\" (e.g., \"g/5/t3\").\n * @param clef\n * @param params a struct with one option, `octave_shift` for clef ottavation (0 = default; 1 = 8va; -1 = 8vb, etc.).\n * @returns properties for the specified note.\n */\n // eslint-disable-next-line\n static keyProperties(keyOctaveGlyph, clef = 'treble', params) {\n let options = { octave_shift: 0, duration: '4' };\n if (typeof params === 'object') {\n options = Object.assign(Object.assign({}, options), params);\n }\n const duration = Tables.sanitizeDuration(options.duration);\n const pieces = keyOctaveGlyph.split('/');\n if (pieces.length < 2) {\n throw new RuntimeError('BadArguments', `First argument must be note/octave or note/octave/glyph-code: ${keyOctaveGlyph}`);\n }\n const key = pieces[0].toUpperCase();\n const value = notesInfo[key];\n if (!value)\n throw new RuntimeError('BadArguments', 'Invalid key name: ' + key);\n if (value.octave)\n pieces[1] = value.octave.toString();\n let octave = parseInt(pieces[1], 10);\n // Octave_shift is the shift to compensate for clef 8va/8vb.\n octave += -1 * options.octave_shift;\n const baseIndex = octave * 7 - 4 * 7;\n let line = (baseIndex + value.index) / 2;\n line += Tables.clefProperties(clef).line_shift;\n let stroke = 0;\n if (line <= 0 && (line * 2) % 2 === 0)\n stroke = 1; // stroke up\n if (line >= 6 && (line * 2) % 2 === 0)\n stroke = -1; // stroke down\n // Integer value for note arithmetic.\n const int_value = typeof value.int_val !== 'undefined' ? octave * 12 + value.int_val : undefined;\n // If the user specified a glyph, overwrite the glyph code.\n const code = value.code;\n const shift_right = value.shift_right;\n let customNoteHeadProps = {};\n if (pieces.length > 2 && pieces[2]) {\n const glyphName = pieces[2].toUpperCase();\n customNoteHeadProps = { code: this.codeNoteHead(glyphName, duration) } || {};\n }\n return Object.assign({ key,\n octave,\n line,\n int_value, accidental: value.accidental, code,\n stroke,\n shift_right, displaced: false }, customNoteHeadProps);\n }\n static integerToNote(integer) {\n if (typeof integer === 'undefined' || integer < 0 || integer > 11) {\n throw new RuntimeError('BadArguments', `integerToNote() requires an integer in the range [0, 11]: ${integer}`);\n }\n const table = {\n 0: 'C',\n 1: 'C#',\n 2: 'D',\n 3: 'D#',\n 4: 'E',\n 5: 'F',\n 6: 'F#',\n 7: 'G',\n 8: 'G#',\n 9: 'A',\n 10: 'A#',\n 11: 'B',\n };\n const noteValue = table[integer];\n if (!noteValue) {\n throw new RuntimeError('BadArguments', `Unknown note value for integer: ${integer}`);\n }\n return noteValue;\n }\n static tabToGlyph(fret, scale = 1.0) {\n let glyph = undefined;\n let width = 0;\n let shift_y = 0;\n if (fret.toUpperCase() === 'X') {\n const glyphMetrics = new Glyph('accidentalDoubleSharp', Tables.TABLATURE_FONT_SCALE).getMetrics();\n glyph = 'accidentalDoubleSharp';\n if (glyphMetrics.width == undefined || glyphMetrics.height == undefined)\n throw new RuntimeError('InvalidMetrics', 'Width and height required');\n width = glyphMetrics.width;\n shift_y = -glyphMetrics.height / 2;\n }\n else {\n width = Tables.textWidth(fret);\n }\n return {\n text: fret,\n code: glyph,\n getWidth: () => width * scale,\n shift_y,\n };\n }\n // Used by annotation.ts and bend.ts. Clearly this implementation only works for the default font size.\n // TODO: The actual width depends on the font family, size, weight, style.\n static textWidth(text) {\n return 7 * text.toString().length;\n }\n static articulationCodes(artic) {\n return articulations[artic];\n }\n static accidentalCodes(acc) {\n return accidentals[acc];\n }\n static ornamentCodes(acc) {\n return ornaments[acc];\n }\n static keySignature(spec) {\n const keySpec = keySignatures[spec];\n if (!keySpec) {\n throw new RuntimeError('BadKeySignature', `Bad key signature spec: '${spec}'`);\n }\n if (!keySpec.acc) {\n return [];\n }\n const accidentalList = {\n b: [2, 0.5, 2.5, 1, 3, 1.5, 3.5],\n '#': [0, 1.5, -0.5, 1, 2.5, 0.5, 2],\n };\n const notes = accidentalList[keySpec.acc];\n const acc_list = [];\n for (let i = 0; i < keySpec.num; ++i) {\n const line = notes[i];\n acc_list.push({ type: keySpec.acc, line });\n }\n return acc_list;\n }\n static getKeySignatures() {\n return keySignatures;\n }\n static hasKeySignature(spec) {\n return spec in keySignatures;\n }\n /**\n * Convert duration aliases to the number based duration.\n * If the input isn't an alias, simply return the input.\n * @param duration\n * @returns Example: 'q' -> '4', '8' -> '8'\n */\n static sanitizeDuration(duration) {\n const durationNumber = durationAliases[duration];\n if (durationNumber !== undefined) {\n duration = durationNumber;\n }\n if (durations[duration] === undefined) {\n throw new RuntimeError('BadArguments', `The provided duration is not valid: ${duration}`);\n }\n return duration;\n }\n /** Convert the `duration` to a fraction. */\n static durationToFraction(duration) {\n return new Fraction().parse(Tables.sanitizeDuration(duration));\n }\n /** Convert the `duration` to a number. */\n static durationToNumber(duration) {\n return Tables.durationToFraction(duration).value();\n }\n /* Convert the `duration` to total ticks. */\n static durationToTicks(duration) {\n duration = Tables.sanitizeDuration(duration);\n const ticks = durations[duration];\n if (ticks === undefined) {\n throw new RuntimeError('InvalidDuration');\n }\n return ticks;\n }\n static codeNoteHead(type, duration) {\n let code = '';\n switch (type) {\n /* Diamond */\n case 'D0':\n code = 'noteheadDiamondWhole';\n break;\n case 'D1':\n code = 'noteheadDiamondHalf';\n break;\n case 'D2':\n code = 'noteheadDiamondBlack';\n break;\n case 'D3':\n code = 'noteheadDiamondBlack';\n break;\n /* Triangle */\n case 'T0':\n code = 'noteheadTriangleUpWhole';\n break;\n case 'T1':\n code = 'noteheadTriangleUpHalf';\n break;\n case 'T2':\n code = 'noteheadTriangleUpBlack';\n break;\n case 'T3':\n code = 'noteheadTriangleUpBlack';\n break;\n /* Cross */\n case 'X0':\n code = 'noteheadXWhole';\n break;\n case 'X1':\n code = 'noteheadXHalf';\n break;\n case 'X2':\n code = 'noteheadXBlack';\n break;\n case 'X3':\n code = 'noteheadCircleX';\n break;\n /* Square */\n case 'S1':\n code = 'noteheadSquareWhite';\n break;\n case 'S2':\n code = 'noteheadSquareBlack';\n break;\n /* Rectangle */\n case 'R1':\n code = 'vexNoteHeadRectWhite'; // no smufl code\n break;\n case 'R2':\n code = 'vexNoteHeadRectBlack'; // no smufl code\n break;\n case 'DO':\n code = 'noteheadTriangleUpBlack';\n break;\n case 'RE':\n code = 'noteheadMoonBlack';\n break;\n case 'MI':\n code = 'noteheadDiamondBlack';\n break;\n case 'FA':\n code = 'noteheadTriangleLeftBlack';\n break;\n case 'FAUP':\n code = 'noteheadTriangleRightBlack';\n break;\n case 'SO':\n code = 'noteheadBlack';\n break;\n case 'LA':\n code = 'noteheadSquareBlack';\n break;\n case 'TI':\n code = 'noteheadTriangleRoundDownBlack';\n break;\n case 'D':\n case 'H': // left for backwards compatibility\n switch (duration) {\n case '1/2':\n code = 'noteheadDiamondDoubleWhole';\n break;\n case '1':\n code = 'noteheadDiamondWhole';\n break;\n case '2':\n code = 'noteheadDiamondHalf';\n break;\n default:\n code = 'noteheadDiamondBlack';\n break;\n }\n break;\n case 'N':\n case 'G':\n switch (duration) {\n case '1/2':\n code = 'noteheadDoubleWhole';\n break;\n case '1':\n code = 'noteheadWhole';\n break;\n case '2':\n code = 'noteheadHalf';\n break;\n default:\n code = 'noteheadBlack';\n break;\n }\n break;\n case 'M': // left for backwards compatibility\n case 'X':\n switch (duration) {\n case '1/2':\n code = 'noteheadXDoubleWhole';\n break;\n case '1':\n code = 'noteheadXWhole';\n break;\n case '2':\n code = 'noteheadXHalf';\n break;\n default:\n code = 'noteheadXBlack';\n break;\n }\n break;\n case 'CX':\n switch (duration) {\n case '1/2':\n code = 'noteheadCircleXDoubleWhole';\n break;\n case '1':\n code = 'noteheadCircleXWhole';\n break;\n case '2':\n code = 'noteheadCircleXHalf';\n break;\n default:\n code = 'noteheadCircleX';\n break;\n }\n break;\n case 'CI':\n switch (duration) {\n case '1/2':\n code = 'noteheadCircledDoubleWhole';\n break;\n case '1':\n code = 'noteheadCircledWhole';\n break;\n case '2':\n code = 'noteheadCircledHalf';\n break;\n default:\n code = 'noteheadCircledBlack';\n break;\n }\n break;\n case 'SQ':\n switch (duration) {\n case '1/2':\n code = 'noteheadDoubleWholeSquare';\n break;\n case '1':\n code = 'noteheadSquareWhite';\n break;\n case '2':\n code = 'noteheadSquareWhite';\n break;\n default:\n code = 'noteheadSquareBlack';\n break;\n }\n break;\n case 'TU':\n switch (duration) {\n case '1/2':\n code = 'noteheadTriangleUpDoubleWhole';\n break;\n case '1':\n code = 'noteheadTriangleUpWhole';\n break;\n case '2':\n code = 'noteheadTriangleUpHalf';\n break;\n default:\n code = 'noteheadTriangleUpBlack';\n break;\n }\n break;\n case 'TD':\n switch (duration) {\n case '1/2':\n code = 'noteheadTriangleDownDoubleWhole';\n break;\n case '1':\n code = 'noteheadTriangleDownWhole';\n break;\n case '2':\n code = 'noteheadTriangleDownHalf';\n break;\n default:\n code = 'noteheadTriangleDownBlack';\n break;\n }\n break;\n case 'SF':\n switch (duration) {\n case '1/2':\n code = 'noteheadSlashedDoubleWhole1';\n break;\n case '1':\n code = 'noteheadSlashedWhole1';\n break;\n case '2':\n code = 'noteheadSlashedHalf1';\n break;\n default:\n code = 'noteheadSlashedBlack1';\n }\n break;\n case 'SB':\n switch (duration) {\n case '1/2':\n code = 'noteheadSlashedDoubleWhole2';\n break;\n case '1':\n code = 'noteheadSlashedWhole2';\n break;\n case '2':\n code = 'noteheadSlashedHalf2';\n break;\n default:\n code = 'noteheadSlashedBlack2';\n }\n break;\n }\n return code;\n }\n // Return a glyph given duration and type. The type can be a custom glyph code from customNoteHeads.\n // The default type is a regular note ('n').\n // eslint-disable-next-line\n static getGlyphProps(duration, type = 'n') {\n duration = Tables.sanitizeDuration(duration);\n // Lookup duration for default glyph head code\n const code = durationCodes[duration];\n if (code === undefined) {\n return undefined;\n }\n // Get glyph properties for 'type' from duration string (note, rest, harmonic, muted, slash)\n let glyphTypeProperties = code.type[type];\n // Try and get it from the custom list of note heads\n const codeNoteHead = Tables.codeNoteHead(type.toUpperCase(), duration);\n if (codeNoteHead != '')\n glyphTypeProperties = Object.assign(Object.assign({}, glyphTypeProperties), { code_head: codeNoteHead, code: codeNoteHead });\n const code_head = glyphTypeProperties.code_head;\n // The default implementation of getWidth() calls Glyph.getWidth(code_head, scale).\n // This can be overridden by an individual glyph type (see slash noteheads below: Tables.SLASH_NOTEHEAD_WIDTH).\n const getWidth = (scale = Tables.NOTATION_FONT_SCALE) => Glyph.getWidth(code_head, scale);\n // Merge duration props for 'duration' with the note head properties.\n return Object.assign(Object.assign(Object.assign({}, code.common), { getWidth: getWidth }), glyphTypeProperties);\n }\n}\nTables.SOFTMAX_FACTOR = 100;\nTables.STEM_WIDTH = 1.5;\nTables.STEM_HEIGHT = 35;\nTables.STAVE_LINE_THICKNESS = 1;\nTables.RENDER_PRECISION_PLACES = 3;\nTables.RESOLUTION = RESOLUTION;\n/**\n * Customize this by calling Flow.setMusicFont(...fontNames);\n */\nTables.MUSIC_FONT_STACK = [];\nTables.NOTATION_FONT_SCALE = 39;\nTables.TABLATURE_FONT_SCALE = 39;\nTables.SLASH_NOTEHEAD_WIDTH = 15;\nTables.STAVE_LINE_DISTANCE = 10;\n// HACK:\n// Since text origins are positioned at the baseline, we must\n// compensate for the ascender of the text. Of course, 1 staff space is\n// a very poor approximation.\n//\n// This will be deprecated in the future. This is a temporary solution until\n// we have more robust text metrics.\nTables.TEXT_HEIGHT_OFFSET_HACK = 1;\nTables.accidentalMap = accidentals;\nTables.accidentalColumnsTable = accidentalColumns;\nTables.unicode = {\n // ♯ accidental sharp\n sharp: String.fromCharCode(0x266f),\n // ♭ accidental flat\n flat: String.fromCharCode(0x266d),\n // ♮ accidental natural\n natural: String.fromCharCode(0x266e),\n // △ major seventh\n triangle: String.fromCharCode(0x25b3),\n // ø half-diminished\n 'o-with-slash': String.fromCharCode(0x00f8),\n // ° diminished\n degrees: String.fromCharCode(0x00b0),\n // ○ diminished\n circle: String.fromCharCode(0x25cb),\n};\n/* The list of valid note types. Used by note.ts during parseNoteStruct(). */\nTables.validTypes = validNoteTypes;\n// Default time signature.\nTables.TIME4_4 = {\n num_beats: 4,\n beat_value: 4,\n resolution: RESOLUTION,\n};\n// 1/2, 1, 2, 4, 8, 16, 32, 64, 128\n// NOTE: There is no 256 here! However, there are other mentions of 256 in this file.\n// For example, in durations has a 256 key, and sanitizeDuration() can return 256.\n// The sanitizeDuration() bit may need to be removed by 0xfe.\n// eslint-disable-next-line\nconst durationCodes = {\n '1/2': {\n common: {\n stem: false,\n stem_offset: 0,\n flag: false,\n stem_up_extension: -Tables.STEM_HEIGHT,\n stem_down_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_up_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_down_extension: -Tables.STEM_HEIGHT,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Breve rest\n code_head: 'restDoubleWhole',\n rest: true,\n position: 'B/5',\n dot_shiftY: 0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restDoubleWhole', scale);\n // },\n },\n s: {\n // Breve note slash -\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 1: {\n common: {\n stem: false,\n stem_offset: 0,\n flag: false,\n stem_up_extension: -Tables.STEM_HEIGHT,\n stem_down_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_up_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_down_extension: -Tables.STEM_HEIGHT,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Whole rest\n code_head: 'restWhole',\n leger_code_head: 'restWholeLegerLine',\n rest: true,\n position: 'D/5',\n dot_shiftY: 0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restWhole', scale);\n // },\n },\n s: {\n // Whole note slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 2: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: false,\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Half rest\n code_head: 'restHalf',\n leger_code_head: 'restHalfLegerLine',\n stem: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restHalf', scale);\n // },\n },\n s: {\n // Half note slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 4: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: false,\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Quarter rest\n code_head: 'restQuarter',\n stem: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.5,\n line_below: 1.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restQuarter', scale);\n // },\n },\n s: {\n // Quarter slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 8: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: true,\n beam_count: 1,\n stem_beam_extension: 0,\n code_flag_upstem: 'flag8thUp',\n code_flag_downstem: 'flag8thDown',\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Eighth rest\n code_head: 'rest8th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.0,\n line_below: 1.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest8th', scale);\n // },\n },\n s: {\n // Eighth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 16: {\n common: {\n beam_count: 2,\n stem_beam_extension: 0,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag16thUp',\n code_flag_downstem: 'flag16thDown',\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Sixteenth rest\n code_head: 'rest16th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.0,\n line_below: 2.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest16th', scale);\n // },\n },\n s: {\n // Sixteenth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 32: {\n common: {\n beam_count: 3,\n stem_beam_extension: 7.5,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag32ndUp',\n code_flag_downstem: 'flag32ndDown',\n stem_up_extension: 9,\n stem_down_extension: 9,\n tabnote_stem_up_extension: 9,\n tabnote_stem_down_extension: 9,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Thirty-second rest\n code_head: 'rest32nd',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -1.5,\n line_above: 2.0,\n line_below: 2.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest32nd', scale);\n // },\n },\n s: {\n // Thirty-second slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 64: {\n common: {\n beam_count: 4,\n stem_beam_extension: 15,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag64thUp',\n code_flag_downstem: 'flag64thDown',\n stem_up_extension: 13,\n stem_down_extension: 13,\n tabnote_stem_up_extension: 13,\n tabnote_stem_down_extension: 13,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Sixty-fourth rest\n code_head: 'rest64th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -1.5,\n line_above: 2.0,\n line_below: 3.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest64th', scale);\n // },\n },\n s: {\n // Sixty-fourth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 128: {\n common: {\n beam_count: 5,\n stem_beam_extension: 22.5,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag128thUp',\n code_flag_downstem: 'flag128thDown',\n stem_up_extension: 22,\n stem_down_extension: 22,\n tabnote_stem_up_extension: 22,\n tabnote_stem_down_extension: 22,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Hundred-twenty-eight rest\n code_head: 'rest128th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -2.5,\n line_above: 3.0,\n line_below: 3.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest128th', scale);\n // },\n },\n s: {\n // Hundred-twenty-eight slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { BoundingBoxComputation } from './boundingboxcomputation';\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var OutlineCode;\n(function (OutlineCode) {\n OutlineCode[OutlineCode[\"MOVE\"] = 0] = \"MOVE\";\n OutlineCode[OutlineCode[\"LINE\"] = 1] = \"LINE\";\n OutlineCode[OutlineCode[\"QUADRATIC\"] = 2] = \"QUADRATIC\";\n OutlineCode[OutlineCode[\"BEZIER\"] = 3] = \"BEZIER\";\n})(OutlineCode || (OutlineCode = {}));\nclass GlyphCacheEntry {\n constructor(fontStack, code, category) {\n this.point = -1;\n this.metrics = Glyph.loadMetrics(fontStack, code, category);\n this.bbox = Glyph.getOutlineBoundingBox(this.metrics.outline, this.metrics.scale, this.metrics.x_shift, this.metrics.y_shift);\n if (category) {\n this.point = Glyph.lookupFontMetric(this.metrics.font, category, code, 'point', -1);\n }\n }\n}\nclass GlyphCache {\n constructor() {\n this.cache = new Map();\n }\n lookup(code, category) {\n let entries = this.cache.get(Glyph.CURRENT_CACHE_KEY);\n if (entries === undefined) {\n entries = {};\n this.cache.set(Glyph.CURRENT_CACHE_KEY, entries);\n }\n const key = category ? `${code}%${category}` : code;\n let entry = entries[key];\n if (entry === undefined) {\n entry = new GlyphCacheEntry(Glyph.MUSIC_FONT_STACK, code, category);\n entries[key] = entry;\n }\n return entry;\n }\n}\nclass GlyphOutline {\n constructor(outline, originX, originY, scale) {\n this.outline = outline;\n this.originX = originX;\n this.originY = originY;\n this.scale = scale;\n this.i = 0;\n this.precision = 1;\n // Automatically assign private properties: this.outline, this.originX, this.originY, and this.scale.\n this.precision = Math.pow(10, Tables.RENDER_PRECISION_PLACES);\n }\n done() {\n return this.i >= this.outline.length;\n }\n next() {\n return Math.round((this.outline[this.i++] * this.precision) / this.precision);\n }\n nextX() {\n return Math.round((this.originX + this.outline[this.i++] * this.scale) * this.precision) / this.precision;\n }\n nextY() {\n return Math.round((this.originY - this.outline[this.i++] * this.scale) * this.precision) / this.precision;\n }\n static parse(str) {\n const result = [];\n const parts = str.split(' ');\n let i = 0;\n while (i < parts.length) {\n switch (parts[i++]) {\n case 'm':\n result.push(OutlineCode.MOVE, parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'l':\n result.push(OutlineCode.LINE, parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'q':\n result.push(OutlineCode.QUADRATIC, parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'b':\n result.push(OutlineCode.BEZIER, parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n }\n }\n return result;\n }\n}\nexport class Glyph extends Element {\n /**\n * @param code\n * @param point\n * @param options\n */\n constructor(code, point, options) {\n super();\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // INSTANCE MEMBERS\n this.bbox = new BoundingBox(0, 0, 0, 0);\n this.topGlyphs = [];\n this.botGlyphs = [];\n this.options = {};\n this.scale = 1;\n this.code = code;\n this.point = point;\n this.originShift = { x: 0, y: 0 };\n this.x_shift = 0;\n this.y_shift = 0;\n if (options) {\n this.setOptions(options);\n }\n else {\n this.reset();\n }\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // STATIC MEMBERS\n static get CATEGORY() {\n return Category.Glyph;\n }\n /**\n * Pass a key of the form `glyphs.{category}.{code}.{key}` to Font.lookupMetric(). If the initial lookup fails,\n * try again with the path `glyphs.{category}.{key}`. If the second lookup fails, return the defaultValue.\n *\n * @param font\n * @param category any metric path under 'glyphs', so 'stem.up' could resolve to glyphs.stem.up.shiftX, glyphs.stem.up.shiftY, etc.\n * @param code\n * @param key\n * @param defaultValue\n */\n static lookupFontMetric(font, category, code, key, defaultValue) {\n let value = font.lookupMetric(`glyphs.${category}.${code}.${key}`, undefined);\n if (value === undefined) {\n // The first lookup failed, so we omit .${code} and try again (with a defaultValue this time).\n value = font.lookupMetric(`glyphs.${category}.${key}`, defaultValue);\n }\n return value;\n }\n static lookupGlyph(fontStack, code) {\n defined(fontStack, 'BadFontStack', 'Font stack is misconfigured');\n let glyph;\n let font;\n for (let i = 0; i < fontStack.length; i++) {\n font = fontStack[i];\n glyph = font.getGlyphs()[code];\n if (glyph)\n return { glyph, font };\n }\n throw new RuntimeError('BadGlyph', `Glyph ${code} does not exist in font.`);\n }\n static loadMetrics(fontStack, code, category) {\n const { glyph, font } = Glyph.lookupGlyph(fontStack, code);\n if (!glyph.o)\n throw new RuntimeError('BadGlyph', `Glyph ${code} has no outline defined.`);\n let x_shift = 0;\n let y_shift = 0;\n let scale = 1;\n if (category && font) {\n x_shift = Glyph.lookupFontMetric(font, category, code, 'shiftX', 0);\n y_shift = Glyph.lookupFontMetric(font, category, code, 'shiftY', 0);\n scale = Glyph.lookupFontMetric(font, category, code, 'scale', 1);\n }\n const x_min = glyph.x_min;\n const x_max = glyph.x_max;\n const ha = glyph.ha;\n if (!glyph.cached_outline) {\n glyph.cached_outline = GlyphOutline.parse(glyph.o);\n }\n return {\n x_min,\n x_max,\n x_shift,\n y_shift,\n scale,\n ha,\n outline: glyph.cached_outline,\n font,\n width: x_max - x_min,\n height: ha,\n };\n }\n /**\n * Renders glyphs from the default font stack.\n *\n * @param ctx Canvas or SVG context\n * @param x_pos x coordinate\n * @param y_pos y coordinate\n * @param point the point size of the font\n * @param code the glyph code in font.getGlyphs()\n * @param options\n * @returns\n */\n static renderGlyph(ctx, x_pos, y_pos, point, code, options) {\n var _a;\n const data = Glyph.cache.lookup(code, options === null || options === void 0 ? void 0 : options.category);\n const metrics = data.metrics;\n if (data.point != -1) {\n point = data.point;\n }\n const customScale = (_a = options === null || options === void 0 ? void 0 : options.scale) !== null && _a !== void 0 ? _a : 1;\n const scale = ((point * 72.0) / (metrics.font.getResolution() * 100.0)) * metrics.scale * customScale;\n Glyph.renderOutline(ctx, metrics.outline, scale, x_pos + metrics.x_shift * customScale, y_pos + metrics.y_shift * customScale);\n return metrics;\n }\n static renderOutline(ctx, outline, scale, x_pos, y_pos) {\n const go = new GlyphOutline(outline, x_pos, y_pos, scale);\n ctx.beginPath();\n let x, y;\n while (!go.done()) {\n switch (go.next()) {\n case OutlineCode.MOVE:\n ctx.moveTo(go.nextX(), go.nextY());\n break;\n case OutlineCode.LINE:\n ctx.lineTo(go.nextX(), go.nextY());\n break;\n case OutlineCode.QUADRATIC:\n x = go.nextX();\n y = go.nextY();\n ctx.quadraticCurveTo(go.nextX(), go.nextY(), x, y);\n break;\n case OutlineCode.BEZIER:\n x = go.nextX();\n y = go.nextY();\n ctx.bezierCurveTo(go.nextX(), go.nextY(), go.nextX(), go.nextY(), x, y);\n break;\n }\n }\n ctx.fill();\n }\n static getOutlineBoundingBox(outline, scale, x_pos, y_pos) {\n const go = new GlyphOutline(outline, x_pos, y_pos, scale);\n const bboxComp = new BoundingBoxComputation();\n // (penX, penY) hold the pen position: the start of each stroke.\n let penX = x_pos;\n let penY = y_pos;\n let x, y;\n while (!go.done()) {\n switch (go.next()) {\n case OutlineCode.MOVE:\n // Note that we don't add any points to the bounding box until a srroke is actually drawn.\n penX = go.nextX();\n penY = go.nextY();\n break;\n case OutlineCode.LINE:\n bboxComp.addPoint(penX, penY);\n penX = go.nextX();\n penY = go.nextY();\n bboxComp.addPoint(penX, penY);\n break;\n case OutlineCode.QUADRATIC:\n x = go.nextX();\n y = go.nextY();\n bboxComp.addQuadraticCurve(penX, penY, go.nextX(), go.nextY(), x, y);\n penX = x;\n penY = y;\n break;\n case OutlineCode.BEZIER:\n x = go.nextX();\n y = go.nextY();\n bboxComp.addBezierCurve(penX, penY, go.nextX(), go.nextY(), go.nextX(), go.nextY(), x, y);\n penX = x;\n penY = y;\n break;\n }\n }\n return new BoundingBox(bboxComp.getX1(), bboxComp.getY1(), bboxComp.width(), bboxComp.height());\n }\n static getWidth(code, point, category) {\n const data = Glyph.cache.lookup(code, category);\n if (data.point != -1) {\n point = data.point;\n }\n const scale = (point * 72) / (data.metrics.font.getResolution() * 100);\n return data.bbox.getW() * scale;\n }\n // eslint-disable-next-line\n draw(...args) {\n // DO NOTHING.\n }\n getCode() {\n return this.code;\n }\n // eslint-disable-next-line\n setOptions(options) {\n this.options = Object.assign(Object.assign({}, this.options), options);\n this.reset();\n }\n setPoint(point) {\n this.point = point;\n return this;\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getXShift() {\n return this.x_shift;\n }\n setXShift(x_shift) {\n this.x_shift = x_shift;\n return this;\n }\n getYshift() {\n return this.y_shift;\n }\n setYShift(y_shift) {\n this.y_shift = y_shift;\n return this;\n }\n reset() {\n const data = Glyph.cache.lookup(this.code, this.options.category);\n this.metrics = data.metrics;\n // Override point from metrics file\n if (data.point != -1) {\n this.point = data.point;\n }\n this.scale = (this.point * 72) / (this.metrics.font.getResolution() * 100);\n this.bbox = new BoundingBox(data.bbox.getX() * this.scale, data.bbox.getY() * this.scale, data.bbox.getW() * this.scale, data.bbox.getH() * this.scale);\n }\n checkMetrics() {\n return defined(this.metrics, 'BadGlyph', `Glyph ${this.code} is not initialized.`);\n }\n getMetrics() {\n const metrics = this.checkMetrics();\n const metricsScale = metrics.scale;\n return {\n x_min: metrics.x_min * this.scale * metricsScale,\n x_max: metrics.x_max * this.scale * metricsScale,\n width: this.bbox.getW(),\n height: this.bbox.getH(),\n scale: this.scale * metricsScale,\n x_shift: metrics.x_shift,\n y_shift: metrics.y_shift,\n outline: metrics.outline,\n font: metrics.font,\n ha: metrics.ha,\n };\n }\n setOriginX(x) {\n const { bbox } = this;\n const originX = Math.abs(bbox.getX() / bbox.getW());\n const xShift = (x - originX) * bbox.getW();\n this.originShift.x = -xShift;\n }\n setOriginY(y) {\n const { bbox } = this;\n const originY = Math.abs(bbox.getY() / bbox.getH());\n const yShift = (y - originY) * bbox.getH();\n this.originShift.y = -yShift;\n }\n setOrigin(x, y) {\n this.setOriginX(x);\n this.setOriginY(y);\n }\n render(ctx, x, y) {\n const metrics = this.checkMetrics();\n const outline = metrics.outline;\n const scale = this.scale * metrics.scale;\n this.setRendered();\n this.applyStyle(ctx);\n const xPos = x + this.originShift.x + metrics.x_shift;\n const yPos = y + this.originShift.y + metrics.y_shift;\n Glyph.renderOutline(ctx, outline, scale, xPos, yPos);\n this.restoreStyle(ctx);\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n renderToStave(x) {\n const context = this.checkContext();\n const metrics = this.checkMetrics();\n const stave = this.checkStave();\n const outline = metrics.outline;\n const scale = this.scale * metrics.scale;\n this.setRendered();\n this.applyStyle();\n const xPos = x + this.x_shift + metrics.x_shift;\n const yPos = stave.getYForGlyphs() + this.y_shift + metrics.y_shift;\n Glyph.renderOutline(context, outline, scale, xPos, yPos);\n this.restoreStyle();\n }\n}\nGlyph.cache = new GlyphCache();\n// The current cache key for GlyphCache above.\n// Computed when Flow.setMusicFont(...) is called.\n// It is set to a comma separated list of font names.\nGlyph.CURRENT_CACHE_KEY = '';\n// Used by the GlyphCache above.\n// Set when Flow.setMusicFont(...) is called.\nGlyph.MUSIC_FONT_STACK = [];\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var ModifierPosition;\n(function (ModifierPosition) {\n ModifierPosition[ModifierPosition[\"CENTER\"] = 0] = \"CENTER\";\n ModifierPosition[ModifierPosition[\"LEFT\"] = 1] = \"LEFT\";\n ModifierPosition[ModifierPosition[\"RIGHT\"] = 2] = \"RIGHT\";\n ModifierPosition[ModifierPosition[\"ABOVE\"] = 3] = \"ABOVE\";\n ModifierPosition[ModifierPosition[\"BELOW\"] = 4] = \"BELOW\";\n})(ModifierPosition || (ModifierPosition = {}));\n// To enable logging for this class. Set `Vex.Flow.Modifier.DEBUG` to `true`.\n// function L(...args) { if (Modifier.DEBUG) log('Vex.Flow.Modifier', args); }\n/**\n * `Modifier` is an abstract interface for notational elements that modify\n * a `Note`. Examples of modifiers are `Accidental`, `Annotation`, `Stroke`, etc.\n *\n * For a `Modifier` instance to be positioned correctly, it must be part of\n * a `ModifierContext`. All modifiers in the same context are rendered relative to\n * one another.\n *\n * Typically, all modifiers to a note are part of the same `ModifierContext` instance. Also,\n * in multi-voice staves, all modifiers to notes on the same `tick` are part of the same\n * `ModifierContext`. This ensures that multiple voices don't trample all over each other.\n */\nexport class Modifier extends Element {\n constructor() {\n super();\n this.width = 0;\n // The `text_line` is reserved space above or below a stave.\n this.text_line = 0;\n this.position = Modifier.Position.LEFT;\n this.x_shift = 0;\n this.y_shift = 0;\n this.spacingFromNextModifier = 0;\n }\n /**\n * Modifiers category string. Every modifier has a different category.\n * The `ModifierContext` uses this to determine the type and order of the modifiers.\n */\n static get CATEGORY() {\n return Category.Modifier;\n }\n /** Modifiers can be positioned almost anywhere, relative to a note. */\n static get Position() {\n return ModifierPosition;\n }\n static get PositionString() {\n return {\n center: ModifierPosition.CENTER,\n above: ModifierPosition.ABOVE,\n below: ModifierPosition.BELOW,\n left: ModifierPosition.LEFT,\n right: ModifierPosition.RIGHT,\n };\n }\n /** Called when position changes. */\n reset() {\n // DO NOTHING.\n }\n /** Get modifier widths. */\n getWidth() {\n return this.width;\n }\n /** Set modifier widths. */\n setWidth(width) {\n this.width = width;\n return this;\n }\n /** Get attached note (`StaveNote`, `TabNote`, etc.) */\n getNote() {\n return defined(this.note, 'NoNote', 'Modifier has no note.');\n }\n /**\n * Used in draw() to check and get the attached note (`StaveNote`, `TabNote`, etc.).\n * Also verifies that the index is valid.\n */\n checkAttachedNote() {\n const category = this.getCategory();\n defined(this.index, 'NoIndex', `Can't draw ${category} without an index.`);\n return defined(this.note, 'NoNote', `Can't draw ${category} without a note.`);\n }\n /**\n * Set attached note.\n * @param note (`StaveNote`, `TabNote`, etc.)\n */\n setNote(note) {\n this.note = note;\n return this;\n }\n /** Get note index, which is a specific note in a chord. */\n getIndex() {\n return this.index;\n }\n /** Check and get note index, which is a specific note in a chord. */\n checkIndex() {\n return defined(this.index, 'NoIndex', 'Modifier has an invalid index.');\n }\n /** Set note index, which is a specific note in a chord. */\n setIndex(index) {\n this.index = index;\n return this;\n }\n /** Get `ModifierContext`. */\n getModifierContext() {\n return this.modifierContext;\n }\n /** Check and get `ModifierContext`. */\n checkModifierContext() {\n return defined(this.modifierContext, 'NoModifierContext', 'Modifier Context Required');\n }\n /** Every modifier must be part of a `ModifierContext`. */\n setModifierContext(c) {\n this.modifierContext = c;\n return this;\n }\n /** Get position. */\n getPosition() {\n return this.position;\n }\n /**\n * Set position.\n * @param position CENTER | LEFT | RIGHT | ABOVE | BELOW\n */\n setPosition(position) {\n this.position = typeof position === 'string' ? Modifier.PositionString[position] : position;\n this.reset();\n return this;\n }\n /** Set the `text_line` for the modifier. */\n setTextLine(line) {\n this.text_line = line;\n return this;\n }\n /** Shift modifier down `y` pixels. Negative values shift up. */\n setYShift(y) {\n this.y_shift = y;\n return this;\n }\n /** Set spacing from next modifier. */\n setSpacingFromNextModifier(x) {\n this.spacingFromNextModifier = x;\n }\n /** Get spacing from next modifier. */\n getSpacingFromNextModifier() {\n return this.spacingFromNextModifier;\n }\n /**\n * Shift modifier `x` pixels in the direction of the modifier. Negative values\n * shift reverse.\n */\n setXShift(x) {\n this.x_shift = 0;\n if (this.position === Modifier.Position.LEFT) {\n this.x_shift -= x;\n }\n else {\n this.x_shift += x;\n }\n return this;\n }\n /** Get shift modifier `x` */\n getXShift() {\n return this.x_shift;\n }\n /** Render the modifier onto the canvas. */\n draw() {\n this.checkContext();\n throw new RuntimeError('NotImplemented', 'draw() not implemented for this modifier.');\n }\n // aligns sub notes of NoteSubGroup (or GraceNoteGroup) to the main note with correct x-offset\n alignSubNotesWithNote(subNotes, note) {\n // Shift over the tick contexts of each note\n const tickContext = note.getTickContext();\n const metrics = tickContext.getMetrics();\n const stave = note.getStave();\n const subNoteXOffset = tickContext.getX() - metrics.modLeftPx - metrics.modRightPx + this.getSpacingFromNextModifier();\n subNotes.forEach((subNote) => {\n const subTickContext = subNote.getTickContext();\n if (stave)\n subNote.setStave(stave);\n subTickContext.setXOffset(subNoteXOffset); // don't touch baseX to avoid shift each render\n });\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { RuntimeError } from './util';\n/** Music implements some standard music theory routines. */\nexport class Music {\n /** Number of an canonical notes (12). */\n static get NUM_TONES() {\n return this.canonical_notes.length;\n }\n /** Names of root notes ('c', 'd',...) */\n static get roots() {\n return ['c', 'd', 'e', 'f', 'g', 'a', 'b'];\n }\n /** Values of the root notes.*/\n static get root_values() {\n return [0, 2, 4, 5, 7, 9, 11];\n }\n /** Indices of the root notes.*/\n static get root_indices() {\n return {\n c: 0,\n d: 1,\n e: 2,\n f: 3,\n g: 4,\n a: 5,\n b: 6,\n };\n }\n /** Names of canonical notes ('c', 'c#', 'd',...). */\n static get canonical_notes() {\n return ['c', 'c#', 'd', 'd#', 'e', 'f', 'f#', 'g', 'g#', 'a', 'a#', 'b'];\n }\n /** Names of diatonic intervals ('unison', 'm2', 'M2',...). */\n static get diatonic_intervals() {\n return ['unison', 'm2', 'M2', 'm3', 'M3', 'p4', 'dim5', 'p5', 'm6', 'M6', 'b7', 'M7', 'octave'];\n }\n /** NoteAccidental associated to diatonic intervals. */\n static get diatonic_accidentals() {\n return {\n unison: { note: 0, accidental: 0 },\n m2: { note: 1, accidental: -1 },\n M2: { note: 1, accidental: 0 },\n m3: { note: 2, accidental: -1 },\n M3: { note: 2, accidental: 0 },\n p4: { note: 3, accidental: 0 },\n dim5: { note: 4, accidental: -1 },\n p5: { note: 4, accidental: 0 },\n m6: { note: 5, accidental: -1 },\n M6: { note: 5, accidental: 0 },\n b7: { note: 6, accidental: -1 },\n M7: { note: 6, accidental: 0 },\n octave: { note: 7, accidental: 0 },\n };\n }\n /** Semitones shift associated to intervals .*/\n static get intervals() {\n return {\n u: 0,\n unison: 0,\n m2: 1,\n b2: 1,\n min2: 1,\n S: 1,\n H: 1,\n 2: 2,\n M2: 2,\n maj2: 2,\n T: 2,\n W: 2,\n m3: 3,\n b3: 3,\n min3: 3,\n M3: 4,\n 3: 4,\n maj3: 4,\n 4: 5,\n p4: 5,\n '#4': 6,\n b5: 6,\n aug4: 6,\n dim5: 6,\n 5: 7,\n p5: 7,\n '#5': 8,\n b6: 8,\n aug5: 8,\n 6: 9,\n M6: 9,\n maj6: 9,\n b7: 10,\n m7: 10,\n min7: 10,\n dom7: 10,\n M7: 11,\n maj7: 11,\n 8: 12,\n octave: 12,\n };\n }\n /** Semitones shifts associated with scales. */\n static get scales() {\n return {\n major: [2, 2, 1, 2, 2, 2, 1],\n minor: [2, 1, 2, 2, 1, 2, 2],\n ionian: [2, 2, 1, 2, 2, 2, 1],\n dorian: [2, 1, 2, 2, 2, 1, 2],\n phyrgian: [1, 2, 2, 2, 1, 2, 2],\n lydian: [2, 2, 2, 1, 2, 2, 1],\n mixolydian: [2, 2, 1, 2, 2, 1, 2],\n aeolian: [2, 1, 2, 2, 1, 2, 2],\n locrian: [1, 2, 2, 1, 2, 2, 2],\n };\n }\n /** Scales associated with m (minor) and M (major). */\n static get scaleTypes() {\n return {\n M: Music.scales.major,\n m: Music.scales.minor,\n };\n }\n /** Accidentals abbreviations. */\n static get accidentals() {\n return ['bb', 'b', 'n', '#', '##'];\n }\n /** Note values. */\n static get noteValues() {\n return {\n c: { root_index: 0, int_val: 0 },\n cn: { root_index: 0, int_val: 0 },\n 'c#': { root_index: 0, int_val: 1 },\n 'c##': { root_index: 0, int_val: 2 },\n cb: { root_index: 0, int_val: 11 },\n cbb: { root_index: 0, int_val: 10 },\n d: { root_index: 1, int_val: 2 },\n dn: { root_index: 1, int_val: 2 },\n 'd#': { root_index: 1, int_val: 3 },\n 'd##': { root_index: 1, int_val: 4 },\n db: { root_index: 1, int_val: 1 },\n dbb: { root_index: 1, int_val: 0 },\n e: { root_index: 2, int_val: 4 },\n en: { root_index: 2, int_val: 4 },\n 'e#': { root_index: 2, int_val: 5 },\n 'e##': { root_index: 2, int_val: 6 },\n eb: { root_index: 2, int_val: 3 },\n ebb: { root_index: 2, int_val: 2 },\n f: { root_index: 3, int_val: 5 },\n fn: { root_index: 3, int_val: 5 },\n 'f#': { root_index: 3, int_val: 6 },\n 'f##': { root_index: 3, int_val: 7 },\n fb: { root_index: 3, int_val: 4 },\n fbb: { root_index: 3, int_val: 3 },\n g: { root_index: 4, int_val: 7 },\n gn: { root_index: 4, int_val: 7 },\n 'g#': { root_index: 4, int_val: 8 },\n 'g##': { root_index: 4, int_val: 9 },\n gb: { root_index: 4, int_val: 6 },\n gbb: { root_index: 4, int_val: 5 },\n a: { root_index: 5, int_val: 9 },\n an: { root_index: 5, int_val: 9 },\n 'a#': { root_index: 5, int_val: 10 },\n 'a##': { root_index: 5, int_val: 11 },\n ab: { root_index: 5, int_val: 8 },\n abb: { root_index: 5, int_val: 7 },\n b: { root_index: 6, int_val: 11 },\n bn: { root_index: 6, int_val: 11 },\n 'b#': { root_index: 6, int_val: 0 },\n 'b##': { root_index: 6, int_val: 1 },\n bb: { root_index: 6, int_val: 10 },\n bbb: { root_index: 6, int_val: 9 },\n };\n }\n isValidNoteValue(note) {\n return note >= 0 && note < Music.canonical_notes.length;\n }\n isValidIntervalValue(interval) {\n return interval >= 0 && interval < Music.diatonic_intervals.length;\n }\n /** Return root and accidental associated to a note. */\n getNoteParts(noteString) {\n if (!noteString || noteString.length < 1) {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n if (noteString.length > 3) {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n const note = noteString.toLowerCase();\n const regex = /^([cdefgab])(b|bb|n|#|##)?$/;\n const match = regex.exec(note);\n if (match !== null) {\n const root = match[1];\n const accidental = match[2];\n return {\n root,\n accidental,\n };\n }\n else {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n }\n /** Return root, accidental and type associated to a key. */\n getKeyParts(keyString) {\n if (!keyString || keyString.length < 1) {\n throw new RuntimeError('BadArguments', 'Invalid key: ' + keyString);\n }\n const key = keyString.toLowerCase();\n // Support Major, Minor, Melodic Minor, and Harmonic Minor key types.\n const regex = /^([cdefgab])(b|#)?(mel|harm|m|M)?$/;\n const match = regex.exec(key);\n if (match !== null) {\n const root = match[1];\n const accidental = match[2];\n let type = match[3];\n // Unspecified type implies major\n if (!type)\n type = 'M';\n return {\n root,\n accidental,\n type,\n };\n }\n else {\n throw new RuntimeError('BadArguments', `Invalid key: ${keyString}`);\n }\n }\n /** Note value associated to a note name. */\n getNoteValue(noteString) {\n const value = Music.noteValues[noteString];\n if (value === undefined) {\n throw new RuntimeError('BadArguments', `Invalid note name: ${noteString}`);\n }\n return value.int_val;\n }\n /** Interval value associated to an interval name. */\n getIntervalValue(intervalString) {\n const value = Music.intervals[intervalString];\n if (value === undefined) {\n throw new RuntimeError('BadArguments', `Invalid interval name: ${intervalString}`);\n }\n return value;\n }\n /** Canonical note name associated to a value. */\n getCanonicalNoteName(noteValue) {\n if (!this.isValidNoteValue(noteValue)) {\n throw new RuntimeError('BadArguments', `Invalid note value: ${noteValue}`);\n }\n return Music.canonical_notes[noteValue];\n }\n /** Interval name associated to a value. */\n getCanonicalIntervalName(intervalValue) {\n if (!this.isValidIntervalValue(intervalValue)) {\n throw new RuntimeError('BadArguments', `Invalid interval value: ${intervalValue}`);\n }\n return Music.diatonic_intervals[intervalValue];\n }\n /**\n * Given a note, interval, and interval direction, produce the relative note.\n */\n getRelativeNoteValue(noteValue, intervalValue, direction = 1) {\n if (direction !== 1 && direction !== -1) {\n throw new RuntimeError('BadArguments', `Invalid direction: ${direction}`);\n }\n let sum = (noteValue + direction * intervalValue) % Music.NUM_TONES;\n if (sum < 0)\n sum += Music.NUM_TONES;\n return sum;\n }\n /**\n * Given a root and note value, produce the relative note name.\n */\n getRelativeNoteName(root, noteValue) {\n const parts = this.getNoteParts(root);\n const rootValue = this.getNoteValue(parts.root);\n let interval = noteValue - rootValue;\n if (Math.abs(interval) > Music.NUM_TONES - 3) {\n let multiplier = 1;\n if (interval > 0)\n multiplier = -1;\n // Possibly wrap around. (Add +1 for modulo operator)\n const reverse_interval = ((noteValue + 1 + (rootValue + 1)) % Music.NUM_TONES) * multiplier;\n if (Math.abs(reverse_interval) > 2) {\n throw new RuntimeError('BadArguments', `Notes not related: ${root}, ${noteValue})`);\n }\n else {\n interval = reverse_interval;\n }\n }\n if (Math.abs(interval) > 2) {\n throw new RuntimeError('BadArguments', `Notes not related: ${root}, ${noteValue})`);\n }\n let relativeNoteName = parts.root;\n if (interval > 0) {\n for (let i = 1; i <= interval; ++i) {\n relativeNoteName += '#';\n }\n }\n else if (interval < 0) {\n for (let i = -1; i >= interval; --i) {\n relativeNoteName += 'b';\n }\n }\n return relativeNoteName;\n }\n /**\n * Return scale tones, given intervals. Each successive interval is\n * relative to the previous one, e.g., Major Scale:\n *\n * TTSTTTS = [2,2,1,2,2,2,1]\n *\n * When used with key = 0, returns C scale (which is isomorphic to\n * interval list).\n */\n getScaleTones(key, intervals) {\n const tones = [key];\n let nextNote = key;\n for (let i = 0; i < intervals.length; i++) {\n nextNote = this.getRelativeNoteValue(nextNote, intervals[i]);\n if (nextNote !== key)\n tones.push(nextNote);\n }\n return tones;\n }\n /**\n * Return the interval of a note, given a diatonic scale.\n * e.g., given the scale C, and the note E, returns M3.\n */\n getIntervalBetween(note1, note2, direction = 1) {\n if (direction !== 1 && direction !== -1) {\n throw new RuntimeError('BadArguments', `Invalid direction: ${direction}`);\n }\n if (!this.isValidNoteValue(note1) || !this.isValidNoteValue(note2)) {\n throw new RuntimeError('BadArguments', `Invalid notes: ${note1}, ${note2}`);\n }\n let difference = direction === 1 ? note2 - note1 : note1 - note2;\n if (difference < 0)\n difference += Music.NUM_TONES;\n return difference;\n }\n /**\n * Create a scale map that represents the pitch state for a\n * `keySignature`. For example, passing a `G` to `keySignature` would\n * return a scale map with every note naturalized except for `F` which\n * has an `F#` state.\n */\n createScaleMap(keySignature) {\n const keySigParts = this.getKeyParts(keySignature);\n if (!keySigParts.type)\n throw new RuntimeError('BadArguments', 'Unsupported key type: undefined');\n const scaleName = Music.scaleTypes[keySigParts.type];\n let keySigString = keySigParts.root;\n if (keySigParts.accidental)\n keySigString += keySigParts.accidental;\n if (!scaleName)\n throw new RuntimeError('BadArguments', 'Unsupported key type: ' + keySignature);\n const scale = this.getScaleTones(this.getNoteValue(keySigString), scaleName);\n const noteLocation = Music.root_indices[keySigParts.root];\n const scaleMap = {};\n for (let i = 0; i < Music.roots.length; ++i) {\n const index = (noteLocation + i) % Music.roots.length;\n const rootName = Music.roots[index];\n let noteName = this.getRelativeNoteName(rootName, scale[i]);\n if (noteName.length === 1) {\n noteName += 'n';\n }\n scaleMap[rootName] = noteName;\n }\n return scaleMap;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// @author Mohit Cheppudira\n// @author Greg Ristow (modifications)\nimport { Fraction } from './fraction';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Music } from './music';\nimport { Tables } from './tables';\nimport { Category, isAccidental, isGraceNote, isGraceNoteGroup, isStaveNote } from './typeguard';\nimport { defined, log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Accidental.DEBUG)\n log('Vex.Flow.Accidental', args);\n}\n/**\n * An `Accidental` inherits from `Modifier`, and is formatted within a\n * `ModifierContext`. Accidentals are modifiers that can be attached to\n * notes. Support is included for both western and microtonal accidentals.\n *\n * See `tests/accidental_tests.ts` for usage examples.\n */\nexport class Accidental extends Modifier {\n /**\n * Create accidental.\n * @param type value from `Vex.Flow.accidentalCodes.accidentals` table in `tables.ts`.\n * For example: `#`, `##`, `b`, `n`, etc.\n */\n constructor(type) {\n super();\n L('New accidental: ', type);\n this.type = type;\n this.position = Modifier.Position.LEFT;\n this.render_options = {\n // Font size for glyphs\n font_scale: 38,\n // Padding between accidental and parentheses on each side\n parenLeftPadding: 2,\n parenRightPadding: 2,\n };\n this.accidental = Tables.accidentalCodes(this.type);\n defined(this.accidental, 'ArgumentError', `Unknown accidental type: ${type}`);\n // Cautionary accidentals have parentheses around them\n this.cautionary = false;\n this.reset();\n }\n /** Accidentals category string. */\n static get CATEGORY() {\n return Category.Accidental;\n }\n /** Arrange accidentals inside a ModifierContext. */\n static format(accidentals, state) {\n // If there are no accidentals, no need to format their positions.\n if (!accidentals || accidentals.length === 0)\n return;\n const musicFont = Tables.currentMusicFont();\n const noteheadAccidentalPadding = musicFont.lookupMetric('accidental.noteheadAccidentalPadding');\n const leftShift = state.left_shift + noteheadAccidentalPadding;\n const accidentalSpacing = musicFont.lookupMetric('accidental.accidentalSpacing');\n const additionalPadding = musicFont.lookupMetric('accidental.leftPadding'); // padding to the left of all accidentals\n const accList = [];\n let prevNote = undefined;\n let shiftL = 0;\n // First determine the accidentals' Y positions from the note.keys\n for (let i = 0; i < accidentals.length; ++i) {\n const acc = accidentals[i];\n const note = acc.getNote();\n const stave = note.getStave();\n const index = acc.checkIndex();\n const props = note.getKeyProps()[index];\n if (note !== prevNote) {\n // Iterate through all notes to get the displaced pixels\n for (let n = 0; n < note.keys.length; ++n) {\n shiftL = Math.max(note.getLeftDisplacedHeadPx() - note.getXShift(), shiftL);\n }\n prevNote = note;\n }\n if (stave) {\n const lineSpace = stave.getSpacingBetweenLines();\n const y = stave.getYForLine(props.line);\n const accLine = Math.round((y / lineSpace) * 2) / 2;\n accList.push({ y, line: accLine, shift: shiftL, acc, lineSpace });\n }\n else {\n accList.push({ line: props.line, shift: shiftL, acc });\n }\n }\n // Sort accidentals by line number.\n accList.sort((a, b) => b.line - a.line);\n // FIXME: Confusing name. Each object in this array has a property called `line`.\n // So if this is a list of lines, you end up with: `line.line` which is very awkward.\n const lineList = [];\n // amount by which all accidentals must be shifted right or left for\n // stem flipping, notehead shifting concerns.\n let accShift = 0;\n let previousLine = undefined;\n // Create an array of unique line numbers (lineList) from accList\n for (let i = 0; i < accList.length; i++) {\n const acc = accList[i];\n // if this is the first line, or a new line, add a lineList\n if (previousLine === undefined || previousLine !== acc.line) {\n lineList.push({\n line: acc.line,\n flatLine: true,\n dblSharpLine: true,\n numAcc: 0,\n width: 0,\n column: 0,\n });\n }\n // if this accidental is not a flat, the accidental needs 3.0 lines lower\n // clearance instead of 2.5 lines for b or bb.\n // FIXME: Naming could use work. acc.acc is very awkward\n if (acc.acc.type !== 'b' && acc.acc.type !== 'bb') {\n lineList[lineList.length - 1].flatLine = false;\n }\n // if this accidental is not a double sharp, the accidental needs 3.0 lines above\n if (acc.acc.type !== '##') {\n lineList[lineList.length - 1].dblSharpLine = false;\n }\n // Track how many accidentals are on this line:\n lineList[lineList.length - 1].numAcc++;\n // Track the total x_offset needed for this line which will be needed\n // for formatting lines w/ multiple accidentals:\n // width = accidental width + universal spacing between accidentals\n lineList[lineList.length - 1].width += acc.acc.getWidth() + accidentalSpacing;\n // if this accShift is larger, use it to keep first column accidentals in the same line\n accShift = acc.shift > accShift ? acc.shift : accShift;\n previousLine = acc.line;\n }\n // ### Place Accidentals in Columns\n //\n // Default to a classic triangular layout (middle accidental farthest left),\n // but follow exceptions as outlined in G. Read's _Music Notation_ and\n // Elaine Gould's _Behind Bars_.\n //\n // Additionally, this implements different vertical collision rules for\n // flats (only need 2.5 lines clearance below) and double sharps (only\n // need 2.5 lines of clearance above or below).\n //\n // Classic layouts and exception patterns are found in the 'tables.js'\n // in 'Tables.accidentalColumnsTable'\n //\n // Beyond 6 vertical accidentals, default to the parallel ascending lines approach,\n // using as few columns as possible for the verticle structure.\n //\n // TODO (?): Allow column to be specified for an accidental at run-time?\n let totalColumns = 0;\n // establish the boundaries for a group of notes with clashing accidentals:\n for (let i = 0; i < lineList.length; i++) {\n let noFurtherConflicts = false;\n const groupStart = i;\n let groupEnd = i;\n while (groupEnd + 1 < lineList.length && !noFurtherConflicts) {\n // if this note conflicts with the next:\n if (this.checkCollision(lineList[groupEnd], lineList[groupEnd + 1])) {\n // include the next note in the group:\n groupEnd++;\n }\n else {\n noFurtherConflicts = true;\n }\n }\n // Gets an a line from the `lineList`, relative to the current group\n const getGroupLine = (index) => lineList[groupStart + index];\n const getGroupLines = (indexes) => indexes.map(getGroupLine);\n const lineDifference = (indexA, indexB) => {\n const [a, b] = getGroupLines([indexA, indexB]).map((item) => item.line);\n return a - b;\n };\n const notColliding = (...indexPairs) => indexPairs.map(getGroupLines).every(([line1, line2]) => !this.checkCollision(line1, line2));\n // Set columns for the lines in this group:\n const groupLength = groupEnd - groupStart + 1;\n // Set the accidental column for each line of the group\n let endCase = this.checkCollision(lineList[groupStart], lineList[groupEnd]) ? 'a' : 'b';\n switch (groupLength) {\n case 3:\n if (endCase === 'a' && lineDifference(1, 2) === 0.5 && lineDifference(0, 1) !== 0.5) {\n endCase = 'second_on_bottom';\n }\n break;\n case 4:\n if (notColliding([0, 2], [1, 3])) {\n endCase = 'spaced_out_tetrachord';\n }\n break;\n case 5:\n if (endCase === 'b' && notColliding([1, 3])) {\n endCase = 'spaced_out_pentachord';\n if (notColliding([0, 2], [2, 4])) {\n endCase = 'very_spaced_out_pentachord';\n }\n }\n break;\n case 6:\n if (notColliding([0, 3], [1, 4], [2, 5])) {\n endCase = 'spaced_out_hexachord';\n }\n if (notColliding([0, 2], [2, 4], [1, 3], [3, 5])) {\n endCase = 'very_spaced_out_hexachord';\n }\n break;\n default:\n break;\n }\n let groupMember;\n let column;\n // If the group contains seven members or more, use ascending parallel lines\n // of accidentals, using as few columns as possible while avoiding collisions.\n if (groupLength >= 7) {\n // First, determine how many columns to use:\n let patternLength = 2;\n let collisionDetected = true;\n while (collisionDetected === true) {\n collisionDetected = false;\n for (let line = 0; line + patternLength < lineList.length; line++) {\n if (this.checkCollision(lineList[line], lineList[line + patternLength])) {\n collisionDetected = true;\n patternLength++;\n break;\n }\n }\n }\n // Then, assign a column to each line of accidentals\n for (groupMember = i; groupMember <= groupEnd; groupMember++) {\n column = ((groupMember - i) % patternLength) + 1;\n lineList[groupMember].column = column;\n totalColumns = totalColumns > column ? totalColumns : column;\n }\n }\n else {\n // If the group contains fewer than seven members, use the layouts from\n // the Tables.accidentalColumnsTable (See: tables.ts).\n for (groupMember = i; groupMember <= groupEnd; groupMember++) {\n column = Tables.accidentalColumnsTable[groupLength][endCase][groupMember - i];\n lineList[groupMember].column = column;\n totalColumns = totalColumns > column ? totalColumns : column;\n }\n }\n // Increment i to the last note that was set, so that if a lower set of notes\n // does not conflict at all with this group, it can have its own classic shape.\n i = groupEnd;\n }\n // ### Convert Columns to x_offsets\n //\n // This keeps columns aligned, even if they have different accidentals within them\n // which sometimes results in a larger x_offset than is an accidental might need\n // to preserve the symmetry of the accidental shape.\n //\n // Neither A.C. Vinci nor G. Read address this, and it typically only happens in\n // music with complex chord clusters.\n //\n // TODO (?): Optionally allow closer compression of accidentals, instead of forcing\n // parallel columns.\n // track each column's max width, which will be used as initial shift of later columns:\n const columnWidths = [];\n const columnXOffsets = [];\n for (let i = 0; i <= totalColumns; i++) {\n columnWidths[i] = 0;\n columnXOffsets[i] = 0;\n }\n columnWidths[0] = accShift + leftShift;\n columnXOffsets[0] = accShift + leftShift;\n // Fill columnWidths with widest needed x-space;\n // this is what keeps the columns parallel.\n lineList.forEach((line) => {\n if (line.width > columnWidths[line.column])\n columnWidths[line.column] = line.width;\n });\n for (let i = 1; i < columnWidths.length; i++) {\n // this column's offset = this column's width + previous column's offset\n columnXOffsets[i] = columnWidths[i] + columnXOffsets[i - 1];\n }\n const totalShift = columnXOffsets[columnXOffsets.length - 1];\n // Set the xShift for each accidental according to column offsets:\n let accCount = 0;\n lineList.forEach((line) => {\n let lineWidth = 0;\n const lastAccOnLine = accCount + line.numAcc;\n // handle all of the accidentals on a given line:\n for (accCount; accCount < lastAccOnLine; accCount++) {\n const xShift = columnXOffsets[line.column - 1] + lineWidth;\n accList[accCount].acc.setXShift(xShift);\n // keep track of the width of accidentals we've added so far, so that when\n // we loop, we add space for them.\n lineWidth += accList[accCount].acc.getWidth() + accidentalSpacing;\n L('Line, accCount, shift: ', line.line, accCount, xShift);\n }\n });\n // update the overall layout with the full width of the accidental shapes:\n state.left_shift += totalShift + additionalPadding;\n }\n /** Helper function to determine whether two lines of accidentals collide vertically */\n static checkCollision(line1, line2) {\n let clearance = line2.line - line1.line;\n let clearanceRequired = 3;\n // But less clearance is required for certain accidentals: b, bb and ##.\n if (clearance > 0) {\n // then line 2 is on top\n clearanceRequired = line2.flatLine || line2.dblSharpLine ? 2.5 : 3.0;\n if (line1.dblSharpLine)\n clearance -= 0.5;\n }\n else {\n // line 1 is on top\n clearanceRequired = line1.flatLine || line1.dblSharpLine ? 2.5 : 3.0;\n if (line2.dblSharpLine)\n clearance -= 0.5;\n }\n const collision = Math.abs(clearance) < clearanceRequired;\n L('Line_1, Line_2, Collision: ', line1.line, line2.line, collision);\n return collision;\n }\n /**\n * Use this method to automatically apply accidentals to a set of `voices`.\n * The accidentals will be remembered between all the voices provided.\n * Optionally, you can also provide an initial `keySignature`.\n */\n static applyAccidentals(voices, keySignature) {\n const tickPositions = [];\n const tickNoteMap = {};\n // Sort the tickables in each voice by their tick position in the voice.\n voices.forEach((voice) => {\n const tickPosition = new Fraction(0, 1);\n const tickable = voice.getTickables();\n tickable.forEach((t) => {\n if (t.shouldIgnoreTicks())\n return;\n const notesAtPosition = tickNoteMap[tickPosition.value()];\n if (!notesAtPosition) {\n tickPositions.push(tickPosition.value());\n tickNoteMap[tickPosition.value()] = [t];\n }\n else {\n notesAtPosition.push(t);\n }\n tickPosition.add(t.getTicks());\n });\n });\n const music = new Music();\n // Default key signature is C major.\n if (!keySignature)\n keySignature = 'C';\n // Get the scale map, which represents the current state of each pitch.\n const scaleMapKey = music.createScaleMap(keySignature);\n const scaleMap = {};\n tickPositions.forEach((tickPos) => {\n const tickables = tickNoteMap[tickPos];\n // Array to store all pitches that modified accidental states\n // at this tick position\n const modifiedPitches = [];\n const processNote = (t) => {\n // Only StaveNote implements .addModifier(), which is used below.\n if (!isStaveNote(t) || t.isRest() || t.shouldIgnoreTicks()) {\n return;\n }\n // Go through each key and determine if an accidental should be applied.\n const staveNote = t;\n staveNote.keys.forEach((keyString, keyIndex) => {\n const key = music.getNoteParts(keyString.split('/')[0]);\n const octave = keyString.split('/')[1];\n // Force a natural for every key without an accidental\n const accidentalString = key.accidental || 'n';\n const pitch = key.root + accidentalString;\n // Determine if the current pitch has the same accidental\n // as the scale state\n if (!scaleMap[key.root + octave])\n scaleMap[key.root + octave] = scaleMapKey[key.root];\n const sameAccidental = scaleMap[key.root + octave] === pitch;\n // Determine if an identical pitch in the chord already\n // modified the accidental state\n const previouslyModified = modifiedPitches.indexOf(keyString) > -1;\n // Remove accidentals\n staveNote.getModifiers().forEach((modifier, index) => {\n if (isAccidental(modifier) && modifier.type == accidentalString && modifier.getIndex() == keyIndex) {\n staveNote.getModifiers().splice(index, 1);\n }\n });\n // Add the accidental to the StaveNote\n if (!sameAccidental || (sameAccidental && previouslyModified)) {\n // Modify the scale map so that the root pitch has an\n // updated state\n scaleMap[key.root + octave] = pitch;\n // Create the accidental\n const accidental = new Accidental(accidentalString);\n // Attach the accidental to the StaveNote\n staveNote.addModifier(accidental, keyIndex);\n // Add the pitch to list of pitches that modified accidentals\n modifiedPitches.push(keyString);\n }\n });\n // process grace notes\n staveNote.getModifiers().forEach((modifier) => {\n if (isGraceNoteGroup(modifier)) {\n modifier.getGraceNotes().forEach(processNote);\n }\n });\n };\n tickables.forEach(processNote);\n });\n }\n reset() {\n const fontScale = this.render_options.font_scale;\n this.glyph = new Glyph(this.accidental.code, fontScale);\n this.glyph.setOriginX(1.0);\n if (this.cautionary) {\n this.parenLeft = new Glyph(Tables.accidentalCodes('{').code, fontScale);\n this.parenRight = new Glyph(Tables.accidentalCodes('}').code, fontScale);\n this.parenLeft.setOriginX(1.0);\n this.parenRight.setOriginX(1.0);\n }\n }\n /** Get width in pixels. */\n getWidth() {\n if (this.cautionary) {\n const parenLeft = defined(this.parenLeft);\n const parenRight = defined(this.parenRight);\n const parenWidth = parenLeft.getMetrics().width +\n parenRight.getMetrics().width +\n this.render_options.parenLeftPadding +\n this.render_options.parenRightPadding;\n return this.glyph.getMetrics().width + parenWidth;\n }\n else {\n return this.glyph.getMetrics().width;\n }\n }\n /** Attach this accidental to `note`, which must be a `StaveNote`. */\n setNote(note) {\n defined(note, 'ArgumentError', `Bad note value: ${note}`);\n this.note = note;\n // Accidentals attached to grace notes are rendered smaller.\n if (isGraceNote(note)) {\n this.render_options.font_scale = 25;\n this.reset();\n }\n return this;\n }\n /** If called, draws parenthesis around accidental. */\n setAsCautionary() {\n this.cautionary = true;\n this.render_options.font_scale = 28;\n this.reset();\n return this;\n }\n /** Render accidental onto canvas. */\n draw() {\n const { type, position, index, cautionary, x_shift, y_shift, glyph, render_options: { parenLeftPadding, parenRightPadding }, } = this;\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n // Figure out the start `x` and `y` coordinates for note and index.\n const start = note.getModifierStartXY(position, index);\n let accX = start.x + x_shift;\n const accY = start.y + y_shift;\n L('Rendering: ', type, accX, accY);\n if (!cautionary) {\n glyph.render(ctx, accX, accY);\n }\n else {\n const parenLeft = defined(this.parenLeft);\n const parenRight = defined(this.parenRight);\n // Render the accidental in parentheses.\n parenRight.render(ctx, accX, accY);\n accX -= parenRight.getMetrics().width;\n accX -= parenRightPadding;\n accX -= this.accidental.parenRightPaddingAdjustment;\n glyph.render(ctx, accX, accY);\n accX -= glyph.getMetrics().width;\n accX -= parenLeftPadding;\n parenLeft.render(ctx, accX, accY);\n }\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Accidental.DEBUG` to `true`. */\nAccidental.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// This file implements the `Stem` object. Generally this object is handled\n// by its parent `StemmableNote`.\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Stem.DEBUG)\n log('Vex.Flow.Stem', args);\n}\nexport class Stem extends Element {\n constructor(options) {\n super();\n this.stem_up_y_offset = 0;\n this.stem_down_y_offset = 0;\n this.stem_up_y_base_offset = 0;\n this.stem_down_y_base_offset = 0;\n // Default notehead x bounds\n this.x_begin = (options === null || options === void 0 ? void 0 : options.x_begin) || 0;\n this.x_end = (options === null || options === void 0 ? void 0 : options.x_end) || 0;\n // Y bounds for top/bottom most notehead\n this.y_top = (options === null || options === void 0 ? void 0 : options.y_top) || 0;\n this.y_bottom = (options === null || options === void 0 ? void 0 : options.y_bottom) || 0;\n // Stem top extension\n this.stem_extension = (options === null || options === void 0 ? void 0 : options.stem_extension) || 0;\n // Direction of the stem\n this.stem_direction = (options === null || options === void 0 ? void 0 : options.stem_direction) || 0;\n // Flag to override all draw calls\n this.hide = (options === null || options === void 0 ? void 0 : options.hide) || false;\n this.isStemlet = (options === null || options === void 0 ? void 0 : options.isStemlet) || false;\n this.stemletHeight = (options === null || options === void 0 ? void 0 : options.stemletHeight) || 0;\n // Use to adjust the rendered height without affecting\n // the results of `.getExtents()`\n this.renderHeightAdjustment = 0;\n this.setOptions(options);\n }\n static get CATEGORY() {\n return Category.Stem;\n }\n // Stem directions\n static get UP() {\n return 1;\n }\n static get DOWN() {\n return -1;\n }\n // Theme\n static get WIDTH() {\n return Tables.STEM_WIDTH;\n }\n static get HEIGHT() {\n return Tables.STEM_HEIGHT;\n }\n setOptions(options) {\n // Changing where the stem meets the head\n this.stem_up_y_offset = (options === null || options === void 0 ? void 0 : options.stem_up_y_offset) || 0;\n this.stem_down_y_offset = (options === null || options === void 0 ? void 0 : options.stem_down_y_offset) || 0;\n this.stem_up_y_base_offset = (options === null || options === void 0 ? void 0 : options.stem_up_y_base_offset) || 0;\n this.stem_down_y_base_offset = (options === null || options === void 0 ? void 0 : options.stem_down_y_base_offset) || 0;\n }\n // Set the x bounds for the default notehead\n setNoteHeadXBounds(x_begin, x_end) {\n this.x_begin = x_begin;\n this.x_end = x_end;\n return this;\n }\n // Set the direction of the stem in relation to the noteheads\n setDirection(direction) {\n this.stem_direction = direction;\n }\n // Set the extension for the stem, generally for flags or beams\n setExtension(ext) {\n this.stem_extension = ext;\n }\n getExtension() {\n return this.stem_extension;\n }\n // The the y bounds for the top and bottom noteheads\n setYBounds(y_top, y_bottom) {\n this.y_top = y_top;\n this.y_bottom = y_bottom;\n }\n // Gets the entire height for the stem\n getHeight() {\n const y_offset = this.stem_direction === Stem.UP ? this.stem_up_y_offset : this.stem_down_y_offset;\n const unsigned_height = this.y_bottom - this.y_top + (Stem.HEIGHT - y_offset + this.stem_extension); // parentheses just for grouping.\n return unsigned_height * this.stem_direction;\n }\n getBoundingBox() {\n throw new RuntimeError('NotImplemented', 'getBoundingBox() not implemented.');\n }\n // Get the y coordinates for the very base of the stem to the top of\n // the extension\n getExtents() {\n const isStemUp = this.stem_direction === Stem.UP;\n const ys = [this.y_top, this.y_bottom];\n const stemHeight = Stem.HEIGHT + this.stem_extension;\n const innerMostNoteheadY = (isStemUp ? Math.min : Math.max)(...ys);\n const outerMostNoteheadY = (isStemUp ? Math.max : Math.min)(...ys);\n const stemTipY = innerMostNoteheadY + stemHeight * -this.stem_direction;\n return { topY: stemTipY, baseY: outerMostNoteheadY };\n }\n setVisibility(isVisible) {\n this.hide = !isVisible;\n return this;\n }\n setStemlet(isStemlet, stemletHeight) {\n this.isStemlet = isStemlet;\n this.stemletHeight = stemletHeight;\n return this;\n }\n adjustHeightForFlag() {\n this.renderHeightAdjustment = Tables.currentMusicFont().lookupMetric('stem.heightAdjustmentForFlag', -3);\n }\n adjustHeightForBeam() {\n this.renderHeightAdjustment = -Stem.WIDTH / 2;\n }\n // Render the stem onto the canvas\n draw() {\n this.setRendered();\n if (this.hide)\n return;\n const ctx = this.checkContext();\n let stem_x;\n let stem_y;\n const stem_direction = this.stem_direction;\n let y_base_offset = 0;\n if (stem_direction === Stem.DOWN) {\n // Down stems are rendered to the left of the head.\n stem_x = this.x_begin;\n stem_y = this.y_top + this.stem_down_y_offset;\n y_base_offset = this.stem_down_y_base_offset;\n }\n else {\n // Up stems are rendered to the right of the head.\n stem_x = this.x_end;\n stem_y = this.y_bottom - this.stem_up_y_offset;\n y_base_offset = this.stem_up_y_base_offset;\n }\n const stemHeight = this.getHeight();\n L('Rendering stem - ', 'Top Y: ', this.y_top, 'Bottom Y: ', this.y_bottom);\n // The offset from the stem's base which is required fo satisfy the stemlet height\n const stemletYOffset = this.isStemlet ? stemHeight - this.stemletHeight * this.stem_direction : 0;\n // Draw the stem\n ctx.save();\n ctx.openGroup('stem', this.getAttribute('id'), { pointerBBox: true });\n this.applyStyle(ctx);\n ctx.beginPath();\n ctx.setLineWidth(Stem.WIDTH);\n ctx.moveTo(stem_x, stem_y - stemletYOffset + y_base_offset);\n ctx.lineTo(stem_x, stem_y - stemHeight - this.renderHeightAdjustment * stem_direction);\n ctx.stroke();\n this.restoreStyle(ctx);\n ctx.closeGroup();\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Stem.DEBUG` to `true`. */\nStem.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextFormatter.DEBUG)\n log('Vex.Flow.TextFormatter', args);\n}\n/**\n * Text widths are stored in a cache, so we don't have to recompute widths\n * for the same font + string combination.\n *\n * The cache is first keyed by the font information. The key is of the form:\n * `${family}-${size}-${weight}-${style}`\n * The second level key is the specific text to be measured.\n *\n * The stored value is the measured width in `em` units.\n * textWidth == textWidthCache[cacheKey][textToMeasure]\n */\nconst textWidthCache = {};\n/**\n * Applications may register additional fonts via `TextFormatter.registerInfo(info)`.\n * The metrics for those fonts will be made available to the application.\n */\nconst registry = {};\nexport class TextFormatter {\n /**\n * Use `TextFormatter.create(...)` to build an instance from information previously\n * registered via `TextFormatter.registerInfo(info)`.\n */\n constructor(formatterInfo) {\n /** Font family. */\n this.family = '';\n /** Specified in `pt` units. */\n this.size = 14;\n /** Font metrics are extracted at 1000 upem (units per em). */\n this.resolution = 1000;\n /**\n * For text formatting, we do not require glyph outlines, but instead rely on glyph\n * bounding box metrics such as:\n * ```\n * {\n * x_min: 48,\n * x_max: 235,\n * y_min: -17,\n * y_max: 734,\n * ha: 751,\n * leftSideBearing: 48,\n * advanceWidth: 286,\n * }\n * ```\n */\n this.glyphs = {};\n this.serifs = false;\n this.monospaced = false;\n this.italic = false;\n this.bold = false;\n this.superscriptOffset = 0;\n this.subscriptOffset = 0;\n this.maxSizeGlyph = 'H';\n // This is an internal key used to index the `textWidthCache`.\n this.cacheKey = '';\n this.updateParams(formatterInfo);\n }\n /**\n * Return all registered font families.\n */\n static getFontFamilies() {\n const registeredFonts = [];\n for (const fontFamily in registry) {\n const formatterInfo = registry[fontFamily];\n registeredFonts.push(Object.assign({}, formatterInfo));\n }\n return registeredFonts;\n }\n /**\n * Call `TextFormatter.registerInfo(info)` to register font information before using this method.\n *\n * This method creates a formatter for the font that most closely matches the requested font.\n * We compare font family, bold, and italic attributes.\n * This method will return a fallback formatter if there are no matches.\n */\n static create(requestedFont = {}) {\n L('create: ', requestedFont);\n if (!requestedFont.family) {\n requestedFont.family = Font.SANS_SERIF;\n }\n // TODO: One potential (small) optimization is to cache the TextFormatter object\n // returned for each font info. We would probably want to clear the cache if\n // the registry is ever updated.\n const candidates = [];\n // The incoming font family is a string of comma-separated font family names.\n // (e.g., `PetalumaScript, Arial, sans-serif`).\n const requestedFamilies = requestedFont.family.split(/\\s*,\\s*/);\n for (const requestedFamily of requestedFamilies) {\n for (const fontFamily in registry) {\n // Support cases where the registry contains 'Roboto Slab Medium',\n // but the requestedFont.family is 'Roboto Slab'.\n if (fontFamily.startsWith(requestedFamily)) {\n candidates.push(registry[fontFamily]);\n }\n }\n if (candidates.length > 0) {\n break;\n }\n }\n let formatter;\n if (candidates.length === 0) {\n // No match, so return a fallback text formatter.\n formatter = new TextFormatter(Object.values(registry)[0]);\n }\n else if (candidates.length === 1) {\n formatter = new TextFormatter(candidates[0]);\n }\n else {\n const bold = Font.isBold(requestedFont.weight);\n const italic = Font.isItalic(requestedFont.style);\n const perfectMatch = candidates.find((f) => f.bold === bold && f.italic === italic);\n if (perfectMatch) {\n formatter = new TextFormatter(perfectMatch);\n }\n else {\n const partialMatch = candidates.find((f) => f.italic === italic || f.bold === bold);\n if (partialMatch) {\n formatter = new TextFormatter(partialMatch);\n }\n else {\n formatter = new TextFormatter(candidates[0]);\n }\n }\n }\n const fontSize = requestedFont.size;\n if (typeof fontSize !== 'undefined') {\n const fontSizeInPt = Font.convertSizeToPointValue(fontSize);\n formatter.setFontSize(fontSizeInPt);\n }\n return formatter;\n }\n /**\n * @param fontFamily used as a key to the font registry.\n * @returns the same info object that was passed in via `TextFormatter.registerInfo(info)`\n */\n static getInfo(fontFamily) {\n return registry[fontFamily];\n }\n /**\n * Apps may register their own fonts and metrics, and those metrics\n * will be available to the app for formatting.\n *\n * Metrics can be generated from a font file using fontgen_text.js in the tools/fonts directory.\n * @param info\n * @param overwrite\n */\n static registerInfo(info, overwrite = false) {\n L('registerInfo: ', info, overwrite);\n const fontFamily = info.family;\n const currFontInfo = registry[fontFamily];\n if (currFontInfo === undefined || overwrite) {\n registry[fontFamily] = info;\n }\n }\n updateParams(params) {\n if (params.family)\n this.family = params.family;\n if (params.resolution)\n this.resolution = params.resolution;\n if (params.glyphs)\n this.glyphs = params.glyphs;\n if (params.serifs)\n this.serifs = params.serifs;\n if (params.monospaced)\n this.monospaced = params.monospaced;\n if (params.italic)\n this.italic = params.italic;\n if (params.bold)\n this.bold = params.bold;\n if (params.maxSizeGlyph)\n this.maxSizeGlyph = params.maxSizeGlyph;\n if (params.superscriptOffset)\n this.superscriptOffset = params.superscriptOffset;\n if (params.subscriptOffset)\n this.subscriptOffset = params.subscriptOffset;\n this.updateCacheKey();\n }\n /** Create a hash with the current font data, so we can cache computed widths. */\n updateCacheKey() {\n const family = this.family.replace(/\\s+/g, '_');\n const size = this.size;\n const weight = this.bold ? FontWeight.BOLD : FontWeight.NORMAL;\n const style = this.italic ? FontStyle.ITALIC : FontStyle.NORMAL;\n // Use the same key format as SVGContext.\n this.cacheKey = `${family}%${size}%${weight}%${style}`;\n }\n /**\n * The glyphs table is indexed by the character (e.g., 'C', '@').\n * See: robotoslab_glyphs.ts & petalumascript_glyphs.ts.\n */\n getGlyphMetrics(character) {\n if (this.glyphs[character]) {\n return this.glyphs[character];\n }\n else {\n return this.glyphs[this.maxSizeGlyph];\n }\n }\n get maxHeight() {\n const metrics = this.getGlyphMetrics(this.maxSizeGlyph);\n return (metrics.ha / this.resolution) * this.fontSizeInPixels;\n }\n /**\n * Retrieve the character's advanceWidth as a fraction of an `em` unit.\n * For the space character ' ' as defined in the:\n * petalumascript_glyphs.ts: 250 advanceWidth in the 1000 unitsPerEm font returns 0.25.\n * robotoslab_glyphs.ts: 509 advanceWidth in the 2048 unitsPerEm font returns 0.2485.\n */\n getWidthForCharacterInEm(c) {\n var _a;\n const metrics = this.getGlyphMetrics(c);\n if (!metrics) {\n // An arbitrary number, close to the `em` width of the '#' and '5' characters in PetalumaScript.\n return 0.65;\n }\n else {\n const advanceWidth = (_a = metrics.advanceWidth) !== null && _a !== void 0 ? _a : 0;\n return advanceWidth / this.resolution;\n }\n }\n /**\n * Retrieve the total width of `text` in `em` units.\n */\n getWidthForTextInEm(text) {\n const key = this.cacheKey;\n // Get the cache for this specific font family, size, weight, style combination.\n // The cache contains previously computed widths for different `text` strings.\n let cachedWidths = textWidthCache[key];\n if (cachedWidths === undefined) {\n cachedWidths = {};\n textWidthCache[key] = cachedWidths;\n }\n let width = cachedWidths[text];\n if (width === undefined) {\n width = 0;\n for (let i = 0; i < text.length; ++i) {\n width += this.getWidthForCharacterInEm(text[i]);\n }\n cachedWidths[text] = width;\n }\n return width;\n }\n /** The width of the text (in `em`) is scaled by the font size (in `px`). */\n getWidthForTextInPx(text) {\n return this.getWidthForTextInEm(text) * this.fontSizeInPixels;\n }\n /**\n * @param size in pt.\n */\n setFontSize(size) {\n this.size = size;\n // The width cache key depends on the current font size.\n this.updateCacheKey();\n return this;\n }\n /** `this.size` is specified in points. Convert to pixels. */\n get fontSizeInPixels() {\n return this.size * Font.scaleToPxFrom.pt;\n }\n getResolution() {\n return this.resolution;\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.TextFormatter.DEBUG` to `true`. */\nTextFormatter.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category, isStemmableNote, isTabNote } from './typeguard';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Annotation.DEBUG)\n log('Vex.Flow.Annotation', args);\n}\nexport var AnnotationHorizontalJustify;\n(function (AnnotationHorizontalJustify) {\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"LEFT\"] = 1] = \"LEFT\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"CENTER\"] = 2] = \"CENTER\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"RIGHT\"] = 3] = \"RIGHT\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(AnnotationHorizontalJustify || (AnnotationHorizontalJustify = {}));\nexport var AnnotationVerticalJustify;\n(function (AnnotationVerticalJustify) {\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"TOP\"] = 1] = \"TOP\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"CENTER\"] = 2] = \"CENTER\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"BOTTOM\"] = 3] = \"BOTTOM\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(AnnotationVerticalJustify || (AnnotationVerticalJustify = {}));\n/**\n * Annotations are modifiers that can be attached to\n * notes.\n *\n * See `tests/annotation_tests.ts` for usage examples.\n */\nexport class Annotation extends Modifier {\n /**\n * Annotations inherit from `Modifier` and is positioned correctly when\n * in a `ModifierContext`.\n * Create a new `Annotation` with the string `text`.\n */\n constructor(text) {\n super();\n this.text = text;\n this.horizontalJustification = AnnotationHorizontalJustify.CENTER;\n // warning: the default in the constructor is TOP, but in the factory the default is BOTTOM.\n // this is to support legacy application that may expect this.\n this.verticalJustification = AnnotationVerticalJustify.TOP;\n this.resetFont();\n // The default width is calculated from the text.\n this.setWidth(Tables.textWidth(text));\n }\n /** Annotations category string. */\n static get CATEGORY() {\n return Category.Annotation;\n }\n // Use the same padding for annotations as note head so the\n // words don't run into each other.\n static get minAnnotationPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Arrange annotations within a `ModifierContext` */\n static format(annotations, state) {\n if (!annotations || annotations.length === 0)\n return false;\n let leftWidth = 0;\n let rightWidth = 0;\n let maxLeftGlyphWidth = 0;\n let maxRightGlyphWidth = 0;\n for (let i = 0; i < annotations.length; ++i) {\n const annotation = annotations[i];\n const textFormatter = TextFormatter.create(annotation.textFont);\n // Text height is expressed in fractional stave spaces.\n const textLines = (5 + textFormatter.maxHeight) / Tables.STAVE_LINE_DISTANCE;\n let verticalSpaceNeeded = textLines;\n const note = annotation.checkAttachedNote();\n const glyphWidth = note.getGlyph().getWidth();\n // Get the text width from the font metrics.\n const textWidth = textFormatter.getWidthForTextInPx(annotation.text);\n if (annotation.horizontalJustification === AnnotationHorizontalJustify.LEFT) {\n maxLeftGlyphWidth = Math.max(glyphWidth, maxLeftGlyphWidth);\n leftWidth = Math.max(leftWidth, textWidth) + Annotation.minAnnotationPadding;\n }\n else if (annotation.horizontalJustification === AnnotationHorizontalJustify.RIGHT) {\n maxRightGlyphWidth = Math.max(glyphWidth, maxRightGlyphWidth);\n rightWidth = Math.max(rightWidth, textWidth);\n }\n else {\n leftWidth = Math.max(leftWidth, textWidth / 2) + Annotation.minAnnotationPadding;\n rightWidth = Math.max(rightWidth, textWidth / 2);\n maxLeftGlyphWidth = Math.max(glyphWidth / 2, maxLeftGlyphWidth);\n maxRightGlyphWidth = Math.max(glyphWidth / 2, maxRightGlyphWidth);\n }\n const stave = note.getStave();\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let stemHeight = 0;\n let lines = 5;\n if (isTabNote(note)) {\n if (note.render_options.draw_stem) {\n const stem = note.getStem();\n if (stem) {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n else {\n stemHeight = 0;\n }\n }\n else if (isStemmableNote(note)) {\n const stem = note.getStem();\n if (stem && note.getNoteType() === 'n') {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n if (stave) {\n lines = stave.getNumLines();\n }\n if (annotation.verticalJustification === this.VerticalJustify.TOP) {\n let noteLine = note.getLineNumber(true);\n if (isTabNote(note)) {\n noteLine = lines - (note.leastString() - 0.5);\n }\n if (stemDirection === Stem.UP) {\n noteLine += stemHeight;\n }\n const curTop = noteLine + state.top_text_line + 0.5;\n if (curTop < lines) {\n annotation.setTextLine(lines - noteLine);\n verticalSpaceNeeded += lines - noteLine;\n state.top_text_line = verticalSpaceNeeded;\n }\n else {\n annotation.setTextLine(state.top_text_line);\n state.top_text_line += verticalSpaceNeeded;\n }\n }\n else if (annotation.verticalJustification === this.VerticalJustify.BOTTOM) {\n let noteLine = lines - note.getLineNumber();\n if (isTabNote(note)) {\n noteLine = note.greatestString() - 1;\n }\n if (stemDirection === Stem.DOWN) {\n noteLine += stemHeight;\n }\n const curBottom = noteLine + state.text_line + 1;\n if (curBottom < lines) {\n annotation.setTextLine(lines - curBottom);\n verticalSpaceNeeded += lines - curBottom;\n state.text_line = verticalSpaceNeeded;\n }\n else {\n annotation.setTextLine(state.text_line);\n state.text_line += verticalSpaceNeeded;\n }\n }\n else {\n annotation.setTextLine(state.text_line);\n }\n }\n const rightOverlap = Math.min(Math.max(rightWidth - maxRightGlyphWidth, 0), Math.max(rightWidth - state.right_shift, 0));\n const leftOverlap = Math.min(Math.max(leftWidth - maxLeftGlyphWidth, 0), Math.max(leftWidth - state.left_shift, 0));\n state.left_shift += leftOverlap;\n state.right_shift += rightOverlap;\n return true;\n }\n /**\n * Set vertical position of text (above or below stave).\n * @param just value in `AnnotationVerticalJustify`.\n */\n setVerticalJustification(just) {\n this.verticalJustification = typeof just === 'string' ? Annotation.VerticalJustifyString[just] : just;\n return this;\n }\n /**\n * Get horizontal justification.\n */\n getJustification() {\n return this.horizontalJustification;\n }\n /**\n * Set horizontal justification.\n * @param justification value in `Annotation.Justify`.\n */\n setJustification(just) {\n this.horizontalJustification = typeof just === 'string' ? Annotation.HorizontalJustifyString[just] : just;\n return this;\n }\n /** Render text beside the note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n const textFormatter = TextFormatter.create(this.textFont);\n const start = note.getModifierStartXY(ModifierPosition.ABOVE, this.index);\n this.setRendered();\n // We're changing context parameters. Save current state.\n ctx.save();\n // Apply style might not save context, if this.style is undefined, so we\n // still need to save context state just before this, since we will be\n // changing ctx parameters below.\n this.applyStyle();\n ctx.openGroup('annotation', this.getAttribute('id'));\n ctx.setFont(this.textFont);\n const text_width = ctx.measureText(this.text).width;\n const text_height = textFormatter.maxHeight + 2;\n let x;\n let y;\n if (this.horizontalJustification === AnnotationHorizontalJustify.LEFT) {\n x = start.x;\n }\n else if (this.horizontalJustification === AnnotationHorizontalJustify.RIGHT) {\n x = start.x - text_width;\n }\n else if (this.horizontalJustification === AnnotationHorizontalJustify.CENTER) {\n x = start.x - text_width / 2;\n } /* CENTER_STEM */\n else {\n x = note.getStemX() - text_width / 2;\n }\n let stem_ext = {};\n let spacing = 0;\n const has_stem = note.hasStem();\n const stave = note.checkStave();\n // The position of the text varies based on whether or not the note\n // has a stem.\n if (has_stem) {\n stem_ext = note.checkStem().getExtents();\n spacing = stave.getSpacingBetweenLines();\n }\n if (this.verticalJustification === AnnotationVerticalJustify.BOTTOM) {\n // Use the largest (lowest) Y value\n const ys = note.getYs();\n y = ys.reduce((a, b) => (a > b ? a : b));\n y += (this.text_line + 1) * Tables.STAVE_LINE_DISTANCE + text_height;\n if (has_stem && stemDirection === Stem.DOWN) {\n y = Math.max(y, stem_ext.topY + text_height + spacing * this.text_line);\n }\n }\n else if (this.verticalJustification === AnnotationVerticalJustify.CENTER) {\n const yt = note.getYForTopText(this.text_line) - 1;\n const yb = stave.getYForBottomText(this.text_line);\n y = yt + (yb - yt) / 2 + text_height / 2;\n }\n else if (this.verticalJustification === AnnotationVerticalJustify.TOP) {\n y = note.getYs()[0] - (this.text_line + 1) * Tables.STAVE_LINE_DISTANCE;\n if (has_stem && stemDirection === Stem.UP) {\n // If the stem is above the stave already, go with default line width vs. actual\n // since the lines between don't really matter.\n spacing = stem_ext.topY < stave.getTopLineTopY() ? Tables.STAVE_LINE_DISTANCE : spacing;\n y = Math.min(y, stem_ext.topY - spacing * (this.text_line + 1));\n }\n } /* CENTER_STEM */\n else {\n const extents = note.getStemExtents();\n y = extents.topY + (extents.baseY - extents.topY) / 2 + text_height / 2;\n }\n L('Rendering annotation: ', this.text, x, y);\n ctx.fillText(this.text, x, y);\n ctx.closeGroup();\n this.restoreStyle();\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Annotation.DEBUG` to `true`. */\nAnnotation.DEBUG = false;\nAnnotation.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n/** Text annotations can be positioned and justified relative to the note. */\nAnnotation.HorizontalJustify = AnnotationHorizontalJustify;\nAnnotation.HorizontalJustifyString = {\n left: AnnotationHorizontalJustify.LEFT,\n right: AnnotationHorizontalJustify.RIGHT,\n center: AnnotationHorizontalJustify.CENTER,\n centerStem: AnnotationHorizontalJustify.CENTER_STEM,\n};\nAnnotation.VerticalJustify = AnnotationVerticalJustify;\nAnnotation.VerticalJustifyString = {\n above: AnnotationVerticalJustify.TOP,\n top: AnnotationVerticalJustify.TOP,\n below: AnnotationVerticalJustify.BOTTOM,\n bottom: AnnotationVerticalJustify.BOTTOM,\n center: AnnotationVerticalJustify.CENTER,\n centerStem: AnnotationVerticalJustify.CENTER_STEM,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns.\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isGraceNote, isStaveNote, isStemmableNote, isTabNote } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Articulation.DEBUG)\n log('Vex.Flow.Articulation', args);\n}\nconst { ABOVE, BELOW } = Modifier.Position;\nfunction roundToNearestHalf(mathFn, value) {\n return mathFn(value / 0.5) * 0.5;\n}\n// This includes both staff and ledger lines\nfunction isWithinLines(line, position) {\n return position === ABOVE ? line <= 5 : line >= 1;\n}\nfunction getRoundingFunction(line, position) {\n if (isWithinLines(line, position)) {\n if (position === ABOVE) {\n return Math.ceil;\n }\n else {\n return Math.floor;\n }\n }\n else {\n return Math.round;\n }\n}\nfunction snapLineToStaff(canSitBetweenLines, line, position, offsetDirection) {\n // Initially, snap to nearest staff line or space\n const snappedLine = roundToNearestHalf(getRoundingFunction(line, position), line);\n const canSnapToStaffSpace = canSitBetweenLines && isWithinLines(snappedLine, position);\n const onStaffLine = snappedLine % 1 === 0;\n if (canSnapToStaffSpace && onStaffLine) {\n const HALF_STAFF_SPACE = 0.5;\n return snappedLine + HALF_STAFF_SPACE * -offsetDirection;\n }\n else {\n return snappedLine;\n }\n}\n// Helper function for checking if a Note object is either a StaveNote or a GraceNote.\nconst isStaveOrGraceNote = (note) => isStaveNote(note) || isGraceNote(note);\nfunction getTopY(note, textLine) {\n const stemDirection = note.getStemDirection();\n const { topY: stemTipY, baseY: stemBaseY } = note.getStemExtents();\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemTipY;\n }\n else {\n return stemBaseY;\n }\n }\n else {\n return Math.min(...note.getYs());\n }\n }\n else if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemTipY;\n }\n else {\n return note.checkStave().getYForTopText(textLine);\n }\n }\n else {\n return note.checkStave().getYForTopText(textLine);\n }\n }\n else {\n throw new RuntimeError('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes');\n }\n}\nfunction getBottomY(note, textLine) {\n const stemDirection = note.getStemDirection();\n const { topY: stemTipY, baseY: stemBaseY } = note.getStemExtents();\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemBaseY;\n }\n else {\n return stemTipY;\n }\n }\n else {\n return Math.max(...note.getYs());\n }\n }\n else if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return note.checkStave().getYForBottomText(textLine);\n }\n else {\n return stemTipY;\n }\n }\n else {\n return note.checkStave().getYForBottomText(textLine);\n }\n }\n else {\n throw new RuntimeError('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes');\n }\n}\n/**\n * Get the initial offset of the articulation from the y value of the starting position.\n * This is required because the top/bottom text positions already have spacing applied to\n * provide a \"visually pleasant\" default position. However the y values provided from\n * the stavenote's top/bottom do *not* have any pre-applied spacing. This function\n * normalizes this asymmetry.\n * @param note\n * @param position\n * @returns\n */\nfunction getInitialOffset(note, position) {\n const isOnStemTip = (position === ABOVE && note.getStemDirection() === Stem.UP) ||\n (position === BELOW && note.getStemDirection() === Stem.DOWN);\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem() && isOnStemTip) {\n return 0.5;\n }\n else {\n // this amount is larger than the stem-tip offset because we start from\n // the center of the notehead\n return 1;\n }\n }\n else {\n if (note.hasStem() && isOnStemTip) {\n return 1;\n }\n else {\n return 0;\n }\n }\n}\n/**\n * Articulations and Accents are modifiers that can be\n * attached to notes. The complete list of articulations is available in\n * `tables.ts` under `Vex.Flow.articulationCodes`.\n *\n * See `tests/articulation_tests.ts` for usage examples.\n */\nexport class Articulation extends Modifier {\n /**\n * Create a new articulation.\n * @param type entry in `Vex.Flow.articulationCodes` in `tables.ts`\n */\n constructor(type) {\n super();\n this.type = type;\n this.position = BELOW;\n this.render_options = {\n font_scale: 38,\n };\n this.reset();\n }\n /** Articulations category string. */\n static get CATEGORY() {\n return Category.Articulation;\n }\n /**\n * FIXME:\n * Most of the complex formatting logic (ie: snapping to space) is\n * actually done in .render(). But that logic belongs in this method.\n *\n * Unfortunately, this isn't possible because, by this point, stem lengths\n * have not yet been finalized. Finalized stem lengths are required to determine the\n * initial position of any stem-side articulation.\n *\n * This indicates that all objects should have their stave set before being\n * formatted. It can't be an optional if you want accurate vertical positioning.\n * Consistently positioned articulations that play nice with other modifiers\n * won't be possible until we stop relying on render-time formatting.\n *\n * Ideally, when this function has completed, the vertical articulation positions\n * should be ready to render without further adjustment. But the current state\n * is far from this ideal.\n */\n static format(articulations, state) {\n if (!articulations || articulations.length === 0)\n return false;\n const margin = 0.5;\n let maxGlyphWidth = 0;\n const getIncrement = (articulation, line, position) => roundToNearestHalf(getRoundingFunction(line, position), defined(articulation.glyph.getMetrics().height) / 10 + margin);\n articulations.forEach((articulation) => {\n const note = articulation.checkAttachedNote();\n maxGlyphWidth = Math.max(note.getGlyph().getWidth(), maxGlyphWidth);\n let lines = 5;\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let stemHeight = 0;\n // Decide if we need to consider beam direction in placement.\n if (isStemmableNote(note)) {\n const stem = note.getStem();\n if (stem) {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n const stave = note.getStave();\n if (stave) {\n lines = stave.getNumLines();\n }\n if (articulation.getPosition() === ABOVE) {\n let noteLine = note.getLineNumber(true);\n if (stemDirection === Stem.UP) {\n noteLine += stemHeight;\n }\n let increment = getIncrement(articulation, state.top_text_line, ABOVE);\n const curTop = noteLine + state.top_text_line + 0.5;\n // If articulation must be above stave, add lines between note and stave top\n if (!articulation.articulation.between_lines && curTop < lines) {\n increment += lines - curTop;\n }\n articulation.setTextLine(state.top_text_line);\n state.top_text_line += increment;\n }\n else if (articulation.getPosition() === BELOW) {\n let noteLine = Math.max(lines - note.getLineNumber(), 0);\n if (stemDirection === Stem.DOWN) {\n noteLine += stemHeight;\n }\n let increment = getIncrement(articulation, state.text_line, BELOW);\n const curBottom = noteLine + state.text_line + 0.5;\n // if articulation must be below stave, add lines from note to stave bottom\n if (!articulation.articulation.between_lines && curBottom < lines) {\n increment += lines - curBottom;\n }\n articulation.setTextLine(state.text_line);\n state.text_line += increment;\n }\n });\n const width = articulations\n .map((articulation) => articulation.getWidth())\n .reduce((maxWidth, articWidth) => Math.max(articWidth, maxWidth));\n const overlap = Math.min(Math.max(width - maxGlyphWidth, 0), Math.max(width - (state.left_shift + state.right_shift), 0));\n state.left_shift += overlap / 2;\n state.right_shift += overlap / 2;\n return true;\n }\n static easyScoreHook({ articulations }, note, builder) {\n if (!articulations)\n return;\n const articNameToCode = {\n staccato: 'a.',\n tenuto: 'a-',\n accent: 'a>',\n };\n articulations\n .split(',')\n .map((articString) => articString.trim().split('.'))\n .map(([name, position]) => {\n const artic = { type: articNameToCode[name] };\n if (position)\n artic.position = Modifier.PositionString[position];\n return builder.getFactory().Articulation(artic);\n })\n .map((artic) => note.addModifier(artic, 0));\n }\n reset() {\n this.articulation = Tables.articulationCodes(this.type);\n const articulation = defined(this.articulation, 'ArgumentError', `Articulation not found: ${this.type}`);\n const code = (this.position === ABOVE ? articulation.aboveCode : articulation.belowCode) || articulation.code;\n this.glyph = new Glyph(code !== null && code !== void 0 ? code : '', this.render_options.font_scale);\n this.setWidth(defined(this.glyph.getMetrics().width));\n }\n /** Render articulation in position next to note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const index = this.checkIndex();\n const { position, glyph, text_line: textLine } = this;\n const canSitBetweenLines = this.articulation.between_lines;\n const stave = note.checkStave();\n const staffSpace = stave.getSpacingBetweenLines();\n const isTab = isTabNote(note);\n // Articulations are centered over/under the note head.\n const { x } = note.getModifierStartXY(position, index);\n const shouldSitOutsideStaff = !canSitBetweenLines || isTab;\n const initialOffset = getInitialOffset(note, position);\n const padding = Tables.currentMusicFont().lookupMetric(`articulation.${glyph.getCode()}.padding`, 0);\n let y = {\n [ABOVE]: () => {\n glyph.setOrigin(0.5, 1);\n const y = getTopY(note, textLine) - (textLine + initialOffset) * staffSpace;\n return shouldSitOutsideStaff ? Math.min(stave.getYForTopText(Articulation.INITIAL_OFFSET), y) : y;\n },\n [BELOW]: () => {\n glyph.setOrigin(0.5, 0);\n const y = getBottomY(note, textLine) + (textLine + initialOffset) * staffSpace;\n return shouldSitOutsideStaff ? Math.max(stave.getYForBottomText(Articulation.INITIAL_OFFSET), y) : y;\n },\n }[position]();\n if (!isTab) {\n const offsetDirection = position === ABOVE ? -1 : +1;\n const noteLine = note.getKeyProps()[index].line;\n const distanceFromNote = (note.getYs()[index] - y) / staffSpace;\n const articLine = distanceFromNote + Number(noteLine);\n const snappedLine = snapLineToStaff(canSitBetweenLines, articLine, position, offsetDirection);\n if (isWithinLines(snappedLine, position))\n glyph.setOrigin(0.5, 0.5);\n y += Math.abs(snappedLine - articLine) * staffSpace * offsetDirection + padding * offsetDirection;\n }\n L(`Rendering articulation at (x: ${x}, y: ${y})`);\n glyph.render(ctx, x, y);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Articulation.DEBUG` to `true`. */\nArticulation.DEBUG = false;\nArticulation.INITIAL_OFFSET = -0.5;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2021.\n// MIT License\nimport { Category } from './typeguard';\nexport class RenderContext {\n static get CATEGORY() {\n return Category.RenderContext;\n }\n set font(f) {\n this.setFont(f);\n }\n get font() {\n return this.getFont();\n }\n /**\n * This is kept for backwards compatibility with 3.0.9.\n * @deprecated use `setFont(...)` instead since it now supports CSS font shorthand.\n */\n setRawFont(f) {\n this.setFont(f);\n return this;\n }\n}\n/**\n * Draw a tiny dot marker on the specified context. A great debugging aid.\n * @param ctx context\n * @param x dot x coordinate\n * @param y dot y coordinate\n * @param color\n */\nexport function drawDot(ctx, x, y, color = '#F55') {\n ctx.save();\n ctx.setFillStyle(color);\n // draw a circle\n ctx.beginPath();\n ctx.arc(x, y, 3, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n ctx.restore();\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\n/**\n * Tickable represents a element that sit on a score and\n * has a duration, i.e., Tickables occupy space in the musical rendering dimension.\n */\nexport class Tickable extends Element {\n constructor() {\n super();\n this._preFormatted = false;\n this._postFormatted = false;\n // These properties represent the duration of\n // this tickable element.\n this.ticks = new Fraction(0, 1); // Fractional value of ticks\n this.intrinsicTicks = 0; // Floating point value of ticks\n this.tickMultiplier = new Fraction(1, 1);\n // Formatter metrics\n this.width = 0;\n this.x_shift = 0; // Shift from tick context\n this.modifiers = [];\n this.tupletStack = [];\n this.align_center = false;\n this.center_x_shift = 0; // Shift from tick context if center aligned\n // This flag tells the formatter to ignore this tickable during\n // formatting and justification. It is set by tickables such as BarNote.\n this.ignore_ticks = false;\n // This is a space for an external formatting class or function to maintain\n // metrics.\n this.formatterMetrics = {\n // The freedom of a tickable is the distance it can move without colliding\n // with neighboring elements. A formatter can set these values during its\n // formatting pass, which a different formatter can then use to fine tune.\n freedom: { left: 0, right: 0 },\n // The simplified rational duration of this tick as a string. It can be\n // used as an index to a map or hashtable.\n duration: '',\n // The number of formatting iterations undergone.\n iterations: 0,\n // The space in pixels allocated by this formatter, along with the mean space\n // for tickables of this duration, and the deviation from the mean.\n space: {\n used: 0,\n mean: 0,\n deviation: 0,\n },\n };\n }\n static get CATEGORY() {\n return Category.Tickable;\n }\n /** Reset the Tickable, this function will be overloaded. */\n reset() {\n return this;\n }\n /** Return the ticks. */\n getTicks() {\n return this.ticks;\n }\n /** Check if it ignores the ticks. */\n shouldIgnoreTicks() {\n return this.ignore_ticks;\n }\n /** Ignore the ticks. */\n setIgnoreTicks(flag) {\n this.ignore_ticks = flag;\n return this;\n }\n /** Set width of note. Used by the formatter for positioning. */\n setWidth(width) {\n this.width = width;\n }\n /** Get width of note. Used by the formatter for positioning. */\n getWidth() {\n if (!this._preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetWidth on an unformatted note.\");\n }\n return this.width + (this.modifierContext ? this.modifierContext.getWidth() : 0);\n }\n /** Displace note by `x` pixels. Used by the formatter. */\n setXShift(x) {\n this.x_shift = x;\n return this;\n }\n /** Get the `x` displaced pixels of the note. */\n getXShift() {\n return this.x_shift;\n }\n /** Get `x` position of this tick context. */\n getX() {\n const tickContext = this.checkTickContext(`Can't getX() without a TickContext.`);\n return tickContext.getX() + this.x_shift;\n }\n /** Return the formatterMetrics. */\n getFormatterMetrics() {\n return this.formatterMetrics;\n }\n /** Return the center `x` shift. */\n getCenterXShift() {\n if (this.isCenterAligned()) {\n return this.center_x_shift;\n }\n return 0;\n }\n /** Set the center `x` shift. */\n setCenterXShift(centerXShift) {\n this.center_x_shift = centerXShift;\n return this;\n }\n // Check if tickable is center aligned. */\n isCenterAligned() {\n return this.align_center;\n }\n // Set/unset center alignment. */\n setCenterAlignment(align_center) {\n this.align_center = align_center;\n return this;\n }\n /**\n * Return the associated voice. Every tickable must be associated with a voice.\n * This allows formatters and preFormatter to associate them with the right modifierContexts.\n */\n getVoice() {\n return defined(this.voice, 'NoVoice', 'Tickable has no voice.');\n }\n /** Set the associated voice. */\n setVoice(voice) {\n this.voice = voice;\n }\n /** Get the tuplet. */\n getTuplet() {\n return this.tuplet;\n }\n /** Return the intrinsic ticks. */\n getTupletStack() {\n return this.tupletStack;\n }\n /**\n * Reset the specific Tuplet if this is not provided, all tuplets are reset.\n * Remove any prior tuplets from the tick calculation and\n * reset the intrinsic tick value.\n */\n resetTuplet(tuplet) {\n let noteCount;\n let notesOccupied;\n if (tuplet) {\n const i = this.tupletStack.indexOf(tuplet);\n if (i !== -1) {\n this.tupletStack.splice(i, 1);\n noteCount = tuplet.getNoteCount();\n notesOccupied = tuplet.getNotesOccupied();\n // Revert old multiplier by inverting numerator & denom.:\n this.applyTickMultiplier(noteCount, notesOccupied);\n }\n return this;\n }\n while (this.tupletStack.length) {\n tuplet = this.tupletStack.pop();\n noteCount = tuplet.getNoteCount();\n notesOccupied = tuplet.getNotesOccupied();\n // Revert old multiplier by inverting numerator & denom.:\n this.applyTickMultiplier(noteCount, notesOccupied);\n }\n return this;\n }\n /** Attach to new tuplet. */\n setTuplet(tuplet) {\n if (tuplet) {\n this.tupletStack.push(tuplet);\n const noteCount = tuplet.getNoteCount();\n const notesOccupied = tuplet.getNotesOccupied();\n this.applyTickMultiplier(notesOccupied, noteCount);\n }\n this.tuplet = tuplet;\n return this;\n }\n /**\n * Add self to the provided ModifierContext `mc`.\n * If this tickable has modifiers, set modifierContext.\n * @returns this\n */\n addToModifierContext(mc) {\n this.modifierContext = mc;\n for (let i = 0; i < this.modifiers.length; ++i) {\n this.modifierContext.addMember(this.modifiers[i]);\n }\n this.modifierContext.addMember(this);\n this._preFormatted = false;\n return this;\n }\n /**\n * Optional, if tickable has modifiers, associate a Modifier.\n * @param mod the modifier\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n addModifier(modifier, index = 0) {\n this.modifiers.push(modifier);\n this._preFormatted = false;\n return this;\n }\n /** Get the list of associated modifiers. */\n getModifiers() {\n return this.modifiers;\n }\n /** Set the Tick Context. */\n setTickContext(tc) {\n this.tickContext = tc;\n this._preFormatted = false;\n }\n checkTickContext(message = 'Tickable has no tick context.') {\n return defined(this.tickContext, 'NoTickContext', message);\n }\n /** Preformat the Tickable. */\n preFormat() {\n if (this._preFormatted)\n return;\n this.width = 0;\n if (this.modifierContext) {\n this.modifierContext.preFormat();\n this.width += this.modifierContext.getWidth();\n }\n }\n /** Set preformatted status. */\n set preFormatted(value) {\n this._preFormatted = value;\n }\n get preFormatted() {\n return this._preFormatted;\n }\n /** Postformat the Tickable. */\n postFormat() {\n if (this._postFormatted)\n return this;\n this._postFormatted = true;\n return this;\n }\n /** Set postformatted status. */\n set postFormatted(value) {\n this._postFormatted = value;\n }\n get postFormatted() {\n return this._postFormatted;\n }\n /** Return the intrinsic ticks. */\n getIntrinsicTicks() {\n return this.intrinsicTicks;\n }\n /** Set the intrinsic ticks. */\n setIntrinsicTicks(intrinsicTicks) {\n this.intrinsicTicks = intrinsicTicks;\n this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks);\n }\n /** Get the tick multiplier. */\n getTickMultiplier() {\n return this.tickMultiplier;\n }\n /** Apply a tick multiplier. */\n applyTickMultiplier(numerator, denominator) {\n this.tickMultiplier.multiply(numerator, denominator);\n this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks);\n }\n /** Set the duration. */\n setDuration(duration) {\n const ticks = duration.numerator * (Tables.RESOLUTION / duration.denominator);\n this.ticks = this.tickMultiplier.clone().multiply(ticks);\n this.intrinsicTicks = this.ticks.value();\n }\n getAbsoluteX() {\n const tickContext = this.checkTickContext(`Can't getAbsoluteX() without a TickContext.`);\n return tickContext.getX();\n }\n /** Attach this note to a modifier context. */\n setModifierContext(mc) {\n this.modifierContext = mc;\n return this;\n }\n /** Get `ModifierContext`. */\n getModifierContext() {\n return this.modifierContext;\n }\n /** Check and get `ModifierContext`. */\n checkModifierContext() {\n return defined(this.modifierContext, 'NoModifierContext', 'No modifier context attached to this tickable.');\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from './font';\nimport { drawDot } from './rendercontext';\nimport { Tables } from './tables';\nimport { Tickable } from './tickable';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\n/**\n * Note implements an abstract interface for notes and chords that\n * are rendered on a stave. Notes have some common properties: All of them\n * have a value (e.g., pitch, fret, etc.) and a duration (quarter, half, etc.)\n *\n * Some notes have stems, heads, dots, etc. Most notational elements that\n * surround a note are called *modifiers*, and every note has an associated\n * array of them. All notes also have a rendering context and belong to a stave.\n */\nexport class Note extends Tickable {\n /**\n * Every note is a tickable, i.e., it can be mutated by the `Formatter` class for\n * positioning and layout.\n *\n * @param noteStruct To create a new note you need to provide a `noteStruct`.\n */\n constructor(noteStruct) {\n super();\n if (!noteStruct) {\n throw new RuntimeError('BadArguments', 'Note must have valid initialization data to identify duration and type.');\n }\n /** Parses `noteStruct` and get note properties. */\n const parsedNoteStruct = Note.parseNoteStruct(noteStruct);\n if (!parsedNoteStruct) {\n throw new RuntimeError('BadArguments', `Invalid note initialization object: ${JSON.stringify(noteStruct)}`);\n }\n // Set note properties from parameters.\n this.keys = noteStruct.keys || [];\n // per-pitch properties\n this.keyProps = [];\n this.duration = parsedNoteStruct.duration;\n this.noteType = parsedNoteStruct.type;\n this.customTypes = parsedNoteStruct.customTypes;\n if (noteStruct.duration_override) {\n // Custom duration\n this.setDuration(noteStruct.duration_override);\n }\n else {\n // Default duration\n this.setIntrinsicTicks(parsedNoteStruct.ticks);\n }\n this.modifiers = [];\n // Get the glyph code for this note from the font.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n this.customGlyphs = this.customTypes.map((t) => Tables.getGlyphProps(this.duration, t));\n // Note to play for audio players.\n this.playNote = undefined;\n // Positioning contexts used by the Formatter.\n this.ignore_ticks = false;\n // Positioning variables\n this.width = 0; // Width in pixels calculated after preFormat\n this.leftDisplacedHeadPx = 0; // Extra room on left for displaced note head\n this.rightDisplacedHeadPx = 0; // Extra room on right for displaced note head\n this.x_shift = 0; // X shift from tick context X\n this.ys = []; // list of y coordinates for each note\n // we need to hold on to these for ties and beams.\n if (noteStruct.align_center) {\n this.setCenterAlignment(noteStruct.align_center);\n }\n // The render surface.\n this.render_options = {\n annotation_spacing: 5,\n glyph_font_scale: 1,\n stroke_px: 1,\n scale: 1,\n font: '',\n y_shift: 0,\n };\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // STATIC MEMBERS\n static get CATEGORY() {\n return Category.Note;\n }\n /** Debug helper. Displays various note metrics for the given note. */\n static plotMetrics(ctx, note, yPos) {\n const metrics = note.getMetrics();\n const xStart = note.getAbsoluteX() - metrics.modLeftPx - metrics.leftDisplacedHeadPx;\n const xPre1 = note.getAbsoluteX() - metrics.leftDisplacedHeadPx;\n const xAbs = note.getAbsoluteX();\n const xPost1 = note.getAbsoluteX() + metrics.notePx;\n const xPost2 = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx;\n const xEnd = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx + metrics.modRightPx;\n const xFreedomRight = xEnd + (note.getFormatterMetrics().freedom.right || 0);\n const xWidth = xEnd - xStart;\n ctx.save();\n ctx.setFont(Font.SANS_SERIF, 8);\n ctx.fillText(Math.round(xWidth) + 'px', xStart + note.getXShift(), yPos);\n const y = yPos + 7;\n function stroke(x1, x2, color, yy = y) {\n ctx.beginPath();\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n ctx.setLineWidth(3);\n ctx.moveTo(x1 + note.getXShift(), yy);\n ctx.lineTo(x2 + note.getXShift(), yy);\n ctx.stroke();\n }\n stroke(xStart, xPre1, 'red');\n stroke(xPre1, xAbs, '#999');\n stroke(xAbs, xPost1, 'green');\n stroke(xPost1, xPost2, '#999');\n stroke(xPost2, xEnd, 'red');\n stroke(xEnd, xFreedomRight, '#DD0');\n stroke(xStart - note.getXShift(), xStart, '#BBB'); // Shift\n drawDot(ctx, xAbs + note.getXShift(), y, 'blue');\n const formatterMetrics = note.getFormatterMetrics();\n if (formatterMetrics.iterations > 0) {\n const spaceDeviation = formatterMetrics.space.deviation;\n const prefix = spaceDeviation >= 0 ? '+' : '';\n ctx.setFillStyle('red');\n ctx.fillText(prefix + Math.round(spaceDeviation), xAbs + note.getXShift(), yPos - 10);\n }\n ctx.restore();\n }\n static parseDuration(durationString) {\n if (!durationString) {\n return undefined;\n }\n const regexp = /(\\d*\\/?\\d+|[a-z])(d*)([nrhms]|$)/;\n const result = regexp.exec(durationString);\n if (!result) {\n return undefined;\n }\n const duration = result[1];\n const dots = result[2].length;\n const type = result[3] || 'n';\n return { duration, dots, type };\n }\n static parseNoteStruct(noteStruct) {\n // Preserve backwards-compatibility\n const durationProps = Note.parseDuration(noteStruct.duration);\n if (!durationProps) {\n return undefined;\n }\n // If specified type is invalid, return undefined.\n let type = noteStruct.type;\n if (type && !Tables.validTypes[type]) {\n return undefined;\n }\n // If no type specified, check duration or custom types\n const customTypes = [];\n if (!type) {\n type = durationProps.type || 'n';\n // If we have keys, try and check if we've got a custom glyph\n if (noteStruct.keys !== undefined) {\n noteStruct.keys.forEach((k, i) => {\n const result = k.split('/');\n // We have a custom glyph specified after the note eg. /X2\n customTypes[i] = (result && result.length === 3 ? result[2] : type);\n });\n }\n }\n // Calculate the tick duration of the note\n let ticks = Tables.durationToTicks(durationProps.duration);\n if (!ticks) {\n return undefined;\n }\n // Are there any dots?\n const dots = noteStruct.dots ? noteStruct.dots : durationProps.dots;\n if (typeof dots !== 'number') {\n return undefined;\n }\n // Add ticks as necessary depending on the numbr of dots\n let currentTicks = ticks;\n for (let i = 0; i < dots; i++) {\n if (currentTicks <= 1)\n return undefined;\n currentTicks = currentTicks / 2;\n ticks += currentTicks;\n }\n return {\n duration: durationProps.duration,\n type,\n customTypes,\n dots,\n ticks,\n };\n }\n /**\n * Get the play note, which is arbitrary data that can be used by an\n * audio player.\n */\n getPlayNote() {\n return this.playNote;\n }\n /**\n * Set the play note, which is arbitrary data that can be used by an\n * audio player.\n */\n setPlayNote(note) {\n this.playNote = note;\n return this;\n }\n /**\n * @returns true if this note is a type of rest.\n *\n * Rests don't have pitches, but take up space in the score.\n * Subclasses should override this default implementation.\n */\n isRest() {\n return false;\n }\n /** Add stroke. */\n addStroke(index, stroke) {\n stroke.setNote(this);\n stroke.setIndex(index);\n this.modifiers.push(stroke);\n this.preFormatted = false;\n return this;\n }\n /** Get the target stave. */\n getStave() {\n return this.stave;\n }\n /** Check and get the target stave. */\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n /** Set the target stave. */\n setStave(stave) {\n this.stave = stave;\n this.setYs([stave.getYForLine(0)]); // Update Y values if the stave is changed.\n this.setContext(this.stave.getContext());\n return this;\n }\n /** Get spacing to the left of the notes. */\n getLeftDisplacedHeadPx() {\n return this.leftDisplacedHeadPx;\n }\n /** Get spacing to the right of the notes. */\n getRightDisplacedHeadPx() {\n return this.rightDisplacedHeadPx;\n }\n /** Set spacing to the left of the notes. */\n setLeftDisplacedHeadPx(x) {\n this.leftDisplacedHeadPx = x;\n return this;\n }\n /** Set spacing to the right of the notes. */\n setRightDisplacedHeadPx(x) {\n this.rightDisplacedHeadPx = x;\n return this;\n }\n /** True if this note has no duration (e.g., bar notes, spacers, etc.). */\n shouldIgnoreTicks() {\n return this.ignore_ticks;\n }\n /** Get the stave line number for the note. */\n // eslint-disable-next-line\n getLineNumber(isTopNote) {\n return 0;\n }\n /** Get the stave line number for rest. */\n getLineForRest() {\n return 0;\n }\n /** Get the glyph associated with this note. */\n // eslint-disable-next-line\n getGlyph() {\n return this.glyph;\n }\n /** Get the glyph width. */\n getGlyphWidth() {\n // TODO: FIXME (multiple potential values for this.glyph)\n if (this.glyph) {\n if (this.glyph.getMetrics) {\n return this.glyph.getMetrics().width;\n }\n else if (this.glyph.getWidth) {\n return this.glyph.getWidth(this.render_options.glyph_font_scale);\n }\n }\n return 0;\n }\n /**\n * Set Y positions for this note. Each Y value is associated with\n * an individual pitch/key within the note/chord.\n */\n setYs(ys) {\n this.ys = ys;\n return this;\n }\n /**\n * Get Y positions for this note. Each Y value is associated with\n * an individual pitch/key within the note/chord.\n */\n getYs() {\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-values calculated for this note.');\n }\n return this.ys;\n }\n /**\n * Get the Y position of the space above the stave onto which text can\n * be rendered.\n */\n getYForTopText(text_line) {\n return this.checkStave().getYForTopText(text_line);\n }\n /** Return the voice that this note belongs in. */\n getVoice() {\n if (!this.voice)\n throw new RuntimeError('NoVoice', 'Note has no voice.');\n return this.voice;\n }\n /** Attach this note to `voice`. */\n setVoice(voice) {\n this.voice = voice;\n this.preFormatted = false;\n return this;\n }\n /** Get the `TickContext` for this note. */\n getTickContext() {\n return this.checkTickContext();\n }\n /** Set the `TickContext` for this note. */\n setTickContext(tc) {\n this.tickContext = tc;\n this.preFormatted = false;\n return this;\n }\n /** Accessor to duration. */\n getDuration() {\n return this.duration;\n }\n /** Accessor to isDotted. */\n isDotted() {\n return this.getModifiersByType('Dot').length > 0;\n }\n /** Accessor to hasStem. */\n hasStem() {\n return false;\n }\n /** Accessor to note type. */\n getNoteType() {\n return this.noteType;\n }\n /** Get the beam. */\n getBeam() {\n return this.beam;\n }\n /** Check and get the beam. */\n checkBeam() {\n return defined(this.beam, 'NoBeam', 'No beam attached to instance');\n }\n /** Check it has a beam. */\n hasBeam() {\n return this.beam != undefined;\n }\n /** Set the beam. */\n setBeam(beam) {\n this.beam = beam;\n return this;\n }\n /**\n * Attach a modifier to this note.\n * @param modifier the Modifier to add.\n * @param index of the key to modify.\n * @returns this\n */\n addModifier(modifier, index = 0) {\n const signature = 'Note.addModifier(modifier: Modifier, index: number=0)';\n // Backwards compatibility with 3.0.9.\n if (typeof index === 'string') {\n index = parseInt(index);\n // eslint-disable-next-line\n console.warn(signature + ' expected a number for `index`, but received a string.');\n }\n // Some versions of VexFlow had the two parameters reversed.\n // Check here and throw an error if the argument types are not correct.\n if (typeof modifier !== 'object' || typeof index !== 'number') {\n throw new RuntimeError('WrongParams', 'Incorrect call signature. Use ' + signature + ' instead.');\n }\n modifier.setNote(this);\n modifier.setIndex(index);\n super.addModifier(modifier);\n return this;\n }\n /** Get all modifiers of a specific type in `this.modifiers`. */\n getModifiersByType(type) {\n return this.modifiers.filter((modifier) => modifier.getCategory() === type);\n }\n /** Get the coordinates for where modifiers begin. */\n // eslint-disable-next-line\n getModifierStartXY(position, index, options) {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n return {\n x: this.getAbsoluteX(),\n y: this.ys[0],\n };\n }\n getRightParenthesisPx(index) {\n const props = this.getKeyProps()[index];\n return props.displaced ? this.getRightDisplacedHeadPx() : 0;\n }\n getLeftParenthesisPx(index) {\n const props = this.getKeyProps()[index];\n return props.displaced ? this.getLeftDisplacedHeadPx() - this.x_shift : -this.x_shift;\n }\n getFirstDotPx() {\n let px = this.getRightDisplacedHeadPx();\n if (this.checkModifierContext().getMembers('Parenthesis').length !== 0)\n px += Tables.currentMusicFont().lookupMetric('parenthesis.default.width');\n return px;\n }\n /** Get the metrics for this note. */\n getMetrics() {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getMetrics on an unformatted note.\");\n }\n const modLeftPx = this.modifierContext ? this.modifierContext.getState().left_shift : 0;\n const modRightPx = this.modifierContext ? this.modifierContext.getState().right_shift : 0;\n const width = this.getWidth();\n const glyphWidth = this.getGlyphWidth();\n const notePx = width -\n modLeftPx - // subtract left modifiers\n modRightPx - // subtract right modifiers\n this.leftDisplacedHeadPx - // subtract left displaced head\n this.rightDisplacedHeadPx; // subtract right displaced head\n // NOTE: If you change this, remember to update MockTickable.getMetrics() in the tests/ directory.\n return {\n width,\n glyphWidth,\n notePx,\n // Modifier spacing.\n modLeftPx,\n modRightPx,\n // Displaced note head on left or right.\n leftDisplacedHeadPx: this.leftDisplacedHeadPx,\n rightDisplacedHeadPx: this.rightDisplacedHeadPx,\n glyphPx: 0,\n };\n }\n /**\n * Get the absolute `X` position of this note's tick context. This\n * excludes x_shift, so you'll need to factor it in if you're\n * looking for the post-formatted x-position.\n */\n getAbsoluteX() {\n const tickContext = this.checkTickContext(`Can't getAbsoluteX() without a TickContext.`);\n // Position note to left edge of tick context.\n let x = tickContext.getX();\n if (this.stave) {\n x += this.stave.getNoteStartX() + Tables.currentMusicFont().lookupMetric('stave.padding');\n }\n if (this.isCenterAligned()) {\n x += this.getCenterXShift();\n }\n return x;\n }\n /** Get the direction of the stem. */\n getStemDirection() {\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n }\n /** Get the top and bottom `y` values of the stem. */\n getStemExtents() {\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n }\n /** Get the `x` coordinate to the right of the note. */\n getTieRightX() {\n let tieStartX = this.getAbsoluteX();\n const note_glyph_width = this.glyph.getWidth();\n tieStartX += note_glyph_width / 2;\n tieStartX += -this.width / 2 + this.width + 2;\n return tieStartX;\n }\n /** Get the `x` coordinate to the left of the note. */\n getTieLeftX() {\n let tieEndX = this.getAbsoluteX();\n const note_glyph_width = this.glyph.getWidth();\n tieEndX += note_glyph_width / 2;\n tieEndX -= this.width / 2 + 2;\n return tieEndX;\n }\n // Get the pitches in the note\n getKeys() {\n return this.keys;\n }\n // Get the properties for all the keys in the note\n getKeyProps() {\n return this.keyProps;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// A base class for stave modifiers (e.g. clefs, key signatures)\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { defined } from './util';\nexport var StaveModifierPosition;\n(function (StaveModifierPosition) {\n StaveModifierPosition[StaveModifierPosition[\"CENTER\"] = 0] = \"CENTER\";\n StaveModifierPosition[StaveModifierPosition[\"LEFT\"] = 1] = \"LEFT\";\n StaveModifierPosition[StaveModifierPosition[\"RIGHT\"] = 2] = \"RIGHT\";\n StaveModifierPosition[StaveModifierPosition[\"ABOVE\"] = 3] = \"ABOVE\";\n StaveModifierPosition[StaveModifierPosition[\"BELOW\"] = 4] = \"BELOW\";\n StaveModifierPosition[StaveModifierPosition[\"BEGIN\"] = 5] = \"BEGIN\";\n StaveModifierPosition[StaveModifierPosition[\"END\"] = 6] = \"END\";\n})(StaveModifierPosition || (StaveModifierPosition = {}));\nexport class StaveModifier extends Element {\n constructor() {\n super();\n this.width = 0;\n this.x = 0;\n this.padding = 10;\n this.position = StaveModifierPosition.ABOVE;\n }\n static get CATEGORY() {\n return Category.StaveModifier;\n }\n static get Position() {\n return StaveModifierPosition;\n }\n getPosition() {\n return this.position;\n }\n setPosition(position) {\n this.position = position;\n return this;\n }\n getStave() {\n return this.stave;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getWidth() {\n return this.width;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getX() {\n return this.x;\n }\n setX(x) {\n this.x = x;\n return this;\n }\n placeGlyphOnLine(glyph, stave, line, customShift = 0) {\n glyph.setYShift(stave.getYForLine(line !== null && line !== void 0 ? line : 0) - stave.getYForGlyphs() + customShift);\n }\n getPadding(index) {\n return index !== undefined && index < 2 ? 0 : this.padding;\n }\n setPadding(padding) {\n this.padding = padding;\n return this;\n }\n setLayoutMetrics(layoutMetrics) {\n this.layoutMetrics = layoutMetrics;\n return this;\n }\n getLayoutMetrics() {\n return this.layoutMetrics;\n }\n // eslint-disable-next-line\n draw(...args) {\n // DO NOTHING.\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Author Larry Kuhns 2011\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport var BarlineType;\n(function (BarlineType) {\n BarlineType[BarlineType[\"SINGLE\"] = 1] = \"SINGLE\";\n BarlineType[BarlineType[\"DOUBLE\"] = 2] = \"DOUBLE\";\n BarlineType[BarlineType[\"END\"] = 3] = \"END\";\n BarlineType[BarlineType[\"REPEAT_BEGIN\"] = 4] = \"REPEAT_BEGIN\";\n BarlineType[BarlineType[\"REPEAT_END\"] = 5] = \"REPEAT_END\";\n BarlineType[BarlineType[\"REPEAT_BOTH\"] = 6] = \"REPEAT_BOTH\";\n BarlineType[BarlineType[\"NONE\"] = 7] = \"NONE\";\n})(BarlineType || (BarlineType = {}));\nexport class Barline extends StaveModifier {\n constructor(type) {\n super();\n this.thickness = Tables.STAVE_LINE_THICKNESS;\n const TYPE = BarlineType;\n this.widths = {};\n this.widths[TYPE.SINGLE] = 5;\n this.widths[TYPE.DOUBLE] = 5;\n this.widths[TYPE.END] = 5;\n this.widths[TYPE.REPEAT_BEGIN] = 5;\n this.widths[TYPE.REPEAT_END] = 5;\n this.widths[TYPE.REPEAT_BOTH] = 5;\n this.widths[TYPE.NONE] = 5;\n this.paddings = {};\n this.paddings[TYPE.SINGLE] = 0;\n this.paddings[TYPE.DOUBLE] = 0;\n this.paddings[TYPE.END] = 0;\n this.paddings[TYPE.REPEAT_BEGIN] = 15;\n this.paddings[TYPE.REPEAT_END] = 15;\n this.paddings[TYPE.REPEAT_BOTH] = 15;\n this.paddings[TYPE.NONE] = 0;\n this.layoutMetricsMap = {};\n this.layoutMetricsMap[TYPE.SINGLE] = {\n xMin: 0,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.DOUBLE] = {\n xMin: -3,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.END] = {\n xMin: -5,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_END] = {\n xMin: -10,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_BEGIN] = {\n xMin: -2,\n xMax: 10,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_BOTH] = {\n xMin: -10,\n xMax: 10,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.NONE] = {\n xMin: 0,\n xMax: 0,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.setPosition(StaveModifierPosition.BEGIN);\n this.setType(type);\n }\n static get CATEGORY() {\n return Category.Barline;\n }\n static get type() {\n return BarlineType;\n }\n static get typeString() {\n return {\n single: BarlineType.SINGLE,\n double: BarlineType.DOUBLE,\n end: BarlineType.END,\n repeatBegin: BarlineType.REPEAT_BEGIN,\n repeatEnd: BarlineType.REPEAT_END,\n repeatBoth: BarlineType.REPEAT_BOTH,\n none: BarlineType.NONE,\n };\n }\n getType() {\n return this.type;\n }\n setType(type) {\n this.type = typeof type === 'string' ? Barline.typeString[type] : type;\n this.setWidth(this.widths[this.type]);\n this.setPadding(this.paddings[this.type]);\n this.setLayoutMetrics(this.layoutMetricsMap[this.type]);\n return this;\n }\n // Draw barlines\n draw(stave) {\n stave.checkContext();\n this.setRendered();\n switch (this.type) {\n case BarlineType.SINGLE:\n this.drawVerticalBar(stave, this.x, false);\n break;\n case BarlineType.DOUBLE:\n this.drawVerticalBar(stave, this.x, true);\n break;\n case BarlineType.END:\n this.drawVerticalEndBar(stave, this.x);\n break;\n case BarlineType.REPEAT_BEGIN:\n // If the barline is shifted over (in front of clef/time/key)\n // Draw vertical bar at the beginning.\n this.drawRepeatBar(stave, this.x, true);\n if (stave.getX() !== this.x) {\n this.drawVerticalBar(stave, stave.getX());\n }\n break;\n case BarlineType.REPEAT_END:\n this.drawRepeatBar(stave, this.x, false);\n break;\n case BarlineType.REPEAT_BOTH:\n this.drawRepeatBar(stave, this.x, false);\n this.drawRepeatBar(stave, this.x, true);\n break;\n default:\n // Default is NONE, so nothing to draw\n break;\n }\n }\n drawVerticalBar(stave, x, double_bar) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n if (double_bar) {\n staveCtx.fillRect(x - 3, topY, 1, botY - topY);\n }\n staveCtx.fillRect(x, topY, 1, botY - topY);\n }\n drawVerticalEndBar(stave, x) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n staveCtx.fillRect(x - 5, topY, 1, botY - topY);\n staveCtx.fillRect(x - 2, topY, 3, botY - topY);\n }\n drawRepeatBar(stave, x, begin) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n let x_shift = 3;\n if (!begin) {\n x_shift = -5;\n }\n staveCtx.fillRect(x + x_shift, topY, 1, botY - topY);\n staveCtx.fillRect(x - 2, topY, 3, botY - topY);\n const dot_radius = 2;\n // Shift dots left or right\n if (begin) {\n x_shift += 4;\n }\n else {\n x_shift -= 4;\n }\n const dot_x = x + x_shift + dot_radius / 2;\n // calculate the y offset based on number of stave lines\n let y_offset = (stave.getNumLines() - 1) * stave.getSpacingBetweenLines();\n y_offset = y_offset / 2 - stave.getSpacingBetweenLines() / 2;\n let dot_y = topY + y_offset + dot_radius / 2;\n // draw the top repeat dot\n staveCtx.beginPath();\n staveCtx.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false);\n staveCtx.fill();\n // draw the bottom repeat dot\n dot_y += stave.getSpacingBetweenLines();\n staveCtx.beginPath();\n staveCtx.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false);\n staveCtx.fill();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Author: Aaron (@AaronDavidNewman)\n//\n// This implements chord symbols above/below a chord.\n// Chord symbols are modifiers that can be attached to notes.\n// They can contain multiple 'blocks' which represent text or\n// glyphs with various positioning options.\n//\n// See `tests/chordsymbol_tests.ts` for usage examples.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category, isStemmableNote } from './typeguard';\nimport { log } from './util';\n// To enable logging for this class. Set `Vex.Flow.ChordSymbol.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (ChordSymbol.DEBUG)\n log('Vex.Flow.ChordSymbol', args);\n}\nexport var ChordSymbolHorizontalJustify;\n(function (ChordSymbolHorizontalJustify) {\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"LEFT\"] = 1] = \"LEFT\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"CENTER\"] = 2] = \"CENTER\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"RIGHT\"] = 3] = \"RIGHT\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(ChordSymbolHorizontalJustify || (ChordSymbolHorizontalJustify = {}));\nexport var ChordSymbolVerticalJustify;\n(function (ChordSymbolVerticalJustify) {\n ChordSymbolVerticalJustify[ChordSymbolVerticalJustify[\"TOP\"] = 1] = \"TOP\";\n ChordSymbolVerticalJustify[ChordSymbolVerticalJustify[\"BOTTOM\"] = 2] = \"BOTTOM\";\n})(ChordSymbolVerticalJustify || (ChordSymbolVerticalJustify = {}));\nexport var SymbolTypes;\n(function (SymbolTypes) {\n SymbolTypes[SymbolTypes[\"GLYPH\"] = 1] = \"GLYPH\";\n SymbolTypes[SymbolTypes[\"TEXT\"] = 2] = \"TEXT\";\n SymbolTypes[SymbolTypes[\"LINE\"] = 3] = \"LINE\";\n})(SymbolTypes || (SymbolTypes = {}));\nexport var SymbolModifiers;\n(function (SymbolModifiers) {\n SymbolModifiers[SymbolModifiers[\"NONE\"] = 1] = \"NONE\";\n SymbolModifiers[SymbolModifiers[\"SUBSCRIPT\"] = 2] = \"SUBSCRIPT\";\n SymbolModifiers[SymbolModifiers[\"SUPERSCRIPT\"] = 3] = \"SUPERSCRIPT\";\n})(SymbolModifiers || (SymbolModifiers = {}));\n/**\n * ChordSymbol is a modifier that creates a chord symbol above/below a chord.\n * As a modifier, it is attached to an existing note.\n */\nexport class ChordSymbol extends Modifier {\n constructor() {\n super();\n this.symbolBlocks = [];\n this.horizontal = ChordSymbolHorizontalJustify.LEFT;\n this.vertical = ChordSymbolVerticalJustify.TOP;\n this.useKerning = true;\n this.reportWidth = true;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.ChordSymbol;\n }\n static get superSubRatio() {\n return ChordSymbol.metrics.global.superSubRatio;\n }\n /** Currently unused: Globally turn off text formatting, if the built-in formatting does not work for your font. */\n static set NO_TEXT_FORMAT(val) {\n ChordSymbol.noFormat = val;\n }\n static get NO_TEXT_FORMAT() {\n return ChordSymbol.noFormat;\n }\n // eslint-disable-next-line\n static getMetricForGlyph(glyphCode) {\n if (ChordSymbol.metrics[glyphCode]) {\n return ChordSymbol.metrics[glyphCode];\n }\n return undefined;\n }\n static get engravingFontResolution() {\n return Tables.currentMusicFont().getResolution();\n }\n static get spacingBetweenBlocks() {\n return ChordSymbol.metrics.global.spacing / ChordSymbol.engravingFontResolution;\n }\n static getWidthForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0.65; // probably should do something here.\n }\n return metric.advanceWidth / ChordSymbol.engravingFontResolution;\n }\n static getYShiftForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0;\n }\n return metric.yOffset / ChordSymbol.engravingFontResolution;\n }\n static getXShiftForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0;\n }\n return (-1 * metric.leftSideBearing) / ChordSymbol.engravingFontResolution;\n }\n static get superscriptOffset() {\n return ChordSymbol.metrics.global.superscriptOffset / ChordSymbol.engravingFontResolution;\n }\n static get subscriptOffset() {\n return ChordSymbol.metrics.global.subscriptOffset / ChordSymbol.engravingFontResolution;\n }\n static get kerningOffset() {\n return ChordSymbol.metrics.global.kerningOffset / ChordSymbol.engravingFontResolution;\n }\n // eslint-disable-next-line\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.chordSymbol;\n }\n static get lowerKerningText() {\n // For example, see: `bravura_metrics.ts`\n // BravuraMetrics.glyphs.chordSymbol.global.lowerKerningText, which returns an array of letters.\n // ['D', 'F', 'P', 'T', 'V', 'Y']\n return ChordSymbol.metrics.global.lowerKerningText;\n }\n static get upperKerningText() {\n return ChordSymbol.metrics.global.upperKerningText;\n }\n static isSuperscript(block) {\n return block.symbolModifier !== undefined && block.symbolModifier === SymbolModifiers.SUPERSCRIPT;\n }\n static isSubscript(block) {\n return block.symbolModifier !== undefined && block.symbolModifier === SymbolModifiers.SUBSCRIPT;\n }\n static get minPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /**\n * Estimate the width of the whole chord symbol, based on the sum of the widths of the individual blocks.\n * Estimate how many lines above/below the staff we need.\n */\n static format(symbols, state) {\n var _a;\n if (!symbols || symbols.length === 0)\n return false;\n let width = 0;\n let nonSuperWidth = 0;\n let leftWidth = 0;\n let rightWidth = 0;\n let maxLeftGlyphWidth = 0;\n let maxRightGlyphWidth = 0;\n for (const symbol of symbols) {\n const fontSize = Font.convertSizeToPointValue((_a = symbol.textFont) === null || _a === void 0 ? void 0 : _a.size);\n const fontAdj = Font.scaleSize(fontSize, 0.05);\n const glyphAdj = fontAdj * 2;\n const note = symbol.checkAttachedNote();\n let symbolWidth = 0;\n let lineSpaces = 1;\n let vAlign = false;\n for (let j = 0; j < symbol.symbolBlocks.length; ++j) {\n const block = symbol.symbolBlocks[j];\n const sup = ChordSymbol.isSuperscript(block);\n const sub = ChordSymbol.isSubscript(block);\n const superSubScale = sup || sub ? ChordSymbol.superSubRatio : 1;\n const adj = block.symbolType === SymbolTypes.GLYPH ? glyphAdj * superSubScale : fontAdj * superSubScale;\n // If there are super/subscripts, they extend beyond the line so\n // assume they take up 2 lines\n if (sup || sub) {\n lineSpaces = 2;\n }\n // If there is a symbol-specific offset, add it but consider font\n // size since font and glyphs will be interspersed.\n const fontSize = symbol.textFormatter.fontSizeInPixels;\n const superSubFontSize = fontSize * superSubScale;\n if (block.symbolType === SymbolTypes.GLYPH && block.glyph !== undefined) {\n block.width = ChordSymbol.getWidthForGlyph(block.glyph) * superSubFontSize;\n block.yShift += ChordSymbol.getYShiftForGlyph(block.glyph) * superSubFontSize;\n block.xShift += ChordSymbol.getXShiftForGlyph(block.glyph) * superSubFontSize;\n block.glyph.scale = block.glyph.scale * adj;\n }\n else if (block.symbolType === SymbolTypes.TEXT) {\n block.width = block.width * superSubFontSize;\n block.yShift += symbol.getYOffsetForText(block.text) * adj;\n }\n if (block.symbolType === SymbolTypes.GLYPH &&\n block.glyph !== undefined &&\n block.glyph.code === ChordSymbol.glyphs.over.code) {\n lineSpaces = 2;\n }\n block.width += ChordSymbol.spacingBetweenBlocks * fontSize * superSubScale;\n // If a subscript immediately follows a superscript block, try to\n // overlay them.\n if (sup && j > 0) {\n const prev = symbol.symbolBlocks[j - 1];\n if (!ChordSymbol.isSuperscript(prev)) {\n nonSuperWidth = width;\n }\n }\n if (sub && nonSuperWidth > 0) {\n vAlign = true;\n // slide the symbol over so it lines up with superscript\n block.xShift = block.xShift + (nonSuperWidth - width);\n width = nonSuperWidth;\n nonSuperWidth = 0;\n // If we have vertically lined up, turn kerning off.\n symbol.setEnableKerning(false);\n }\n if (!sup && !sub) {\n nonSuperWidth = 0;\n }\n block.vAlign = vAlign;\n width += block.width;\n symbolWidth = width;\n }\n // make kerning adjustments after computing super/subscripts\n symbol.updateKerningAdjustments();\n symbol.updateOverBarAdjustments();\n if (symbol.getVertical() === ChordSymbolVerticalJustify.TOP) {\n symbol.setTextLine(state.top_text_line);\n state.top_text_line += lineSpaces;\n }\n else {\n symbol.setTextLine(state.text_line + 1);\n state.text_line += lineSpaces + 1;\n }\n if (symbol.getReportWidth() && isStemmableNote(note)) {\n const glyphWidth = note.getGlyph().getWidth();\n if (symbol.getHorizontal() === ChordSymbolHorizontalJustify.LEFT) {\n maxLeftGlyphWidth = Math.max(glyphWidth, maxLeftGlyphWidth);\n leftWidth = Math.max(leftWidth, symbolWidth) + ChordSymbol.minPadding;\n }\n else if (symbol.getHorizontal() === ChordSymbolHorizontalJustify.RIGHT) {\n maxRightGlyphWidth = Math.max(glyphWidth, maxRightGlyphWidth);\n rightWidth = Math.max(rightWidth, symbolWidth);\n }\n else {\n leftWidth = Math.max(leftWidth, symbolWidth / 2) + ChordSymbol.minPadding;\n rightWidth = Math.max(rightWidth, symbolWidth / 2);\n maxLeftGlyphWidth = Math.max(glyphWidth / 2, maxLeftGlyphWidth);\n maxRightGlyphWidth = Math.max(glyphWidth / 2, maxRightGlyphWidth);\n }\n }\n width = 0; // reset symbol width\n }\n const rightOverlap = Math.min(Math.max(rightWidth - maxRightGlyphWidth, 0), Math.max(rightWidth - state.right_shift, 0));\n const leftOverlap = Math.min(Math.max(leftWidth - maxLeftGlyphWidth, 0), Math.max(leftWidth - state.left_shift, 0));\n state.left_shift += leftOverlap;\n state.right_shift += rightOverlap;\n return true;\n }\n /**\n * Default text font.\n * Choose a font family that works well with the current music engraving font.\n * @override `Element.TEXT_FONT`.\n */\n static get TEXT_FONT() {\n let family = 'Roboto Slab, Times, serif';\n if (Tables.currentMusicFont().getName() === 'Petaluma') {\n // Fixes Issue #1180\n family = 'PetalumaScript, Arial, sans-serif';\n }\n return {\n family,\n size: 12,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n };\n }\n /**\n * The offset is specified in `em`. Scale this value by the font size in pixels.\n */\n get superscriptOffset() {\n return ChordSymbol.superscriptOffset * this.textFormatter.fontSizeInPixels;\n }\n get subscriptOffset() {\n return ChordSymbol.subscriptOffset * this.textFormatter.fontSizeInPixels;\n }\n setReportWidth(value) {\n this.reportWidth = value;\n return this;\n }\n getReportWidth() {\n return this.reportWidth;\n }\n updateOverBarAdjustments() {\n const barIndex = this.symbolBlocks.findIndex(({ symbolType, glyph }) => symbolType === SymbolTypes.GLYPH && glyph !== undefined && glyph.code === 'csymDiagonalArrangementSlash');\n if (barIndex < 0) {\n return;\n }\n const bar = this.symbolBlocks[barIndex];\n const xoff = bar.width / 4;\n const yoff = 0.25 * this.textFormatter.fontSizeInPixels;\n let symIndex = 0;\n for (symIndex === 0; symIndex < barIndex; ++symIndex) {\n const symbol = this.symbolBlocks[symIndex];\n symbol.xShift = symbol.xShift + xoff;\n symbol.yShift = symbol.yShift - yoff;\n }\n for (symIndex = barIndex + 1; symIndex < this.symbolBlocks.length; ++symIndex) {\n const symbol = this.symbolBlocks[symIndex];\n symbol.xShift = symbol.xShift - xoff;\n symbol.yShift = symbol.yShift + yoff;\n }\n }\n updateKerningAdjustments() {\n let accum = 0;\n for (let j = 0; j < this.symbolBlocks.length; ++j) {\n const symbol = this.symbolBlocks[j];\n accum += this.getKerningAdjustment(j);\n symbol.xShift += accum;\n }\n }\n /** Do some basic kerning so that letter chords like 'A' don't have the extensions hanging off to the right. */\n getKerningAdjustment(j) {\n if (!this.useKerning) {\n return 0;\n }\n const currSymbol = this.symbolBlocks[j];\n const prevSymbol = j > 0 ? this.symbolBlocks[j - 1] : undefined;\n let adjustment = 0;\n // Move things into the '/' over bar\n if (currSymbol.symbolType === SymbolTypes.GLYPH &&\n currSymbol.glyph !== undefined &&\n currSymbol.glyph.code === ChordSymbol.glyphs.over.code) {\n adjustment += currSymbol.glyph.metrics.x_shift;\n }\n if (prevSymbol !== undefined &&\n prevSymbol.symbolType === SymbolTypes.GLYPH &&\n prevSymbol.glyph !== undefined &&\n prevSymbol.glyph.code === ChordSymbol.glyphs.over.code) {\n adjustment += prevSymbol.glyph.metrics.x_shift;\n }\n // For superscripts that follow a letter without much top part, move it to the left slightly\n let preKernUpper = false;\n let preKernLower = false;\n if (prevSymbol !== undefined && prevSymbol.symbolType === SymbolTypes.TEXT) {\n preKernUpper = ChordSymbol.upperKerningText.some((xx) => xx === prevSymbol.text[prevSymbol.text.length - 1]);\n preKernLower = ChordSymbol.lowerKerningText.some((xx) => xx === prevSymbol.text[prevSymbol.text.length - 1]);\n }\n const kerningOffsetPixels = ChordSymbol.kerningOffset * this.textFormatter.fontSizeInPixels;\n // TODO: adjust kern for font size.\n // Where should this constant live?\n if (preKernUpper && currSymbol.symbolModifier === SymbolModifiers.SUPERSCRIPT) {\n adjustment += kerningOffsetPixels;\n }\n if (preKernLower && currSymbol.symbolType === SymbolTypes.TEXT) {\n if (currSymbol.text[0] >= 'a' && currSymbol.text[0] <= 'z') {\n adjustment += kerningOffsetPixels / 2;\n }\n if (ChordSymbol.upperKerningText.some((xx) => xx === (prevSymbol === null || prevSymbol === void 0 ? void 0 : prevSymbol.text[prevSymbol.text.length - 1]))) {\n adjustment += kerningOffsetPixels / 2;\n }\n }\n return adjustment;\n }\n /**\n * ChordSymbol allows multiple blocks so we can mix glyphs and font text.\n * Each block can have its own vertical orientation.\n */\n // eslint-disable-next-line\n getSymbolBlock(params = {}) {\n var _a, _b, _c;\n const symbolType = (_a = params.symbolType) !== null && _a !== void 0 ? _a : SymbolTypes.TEXT;\n const symbolBlock = {\n text: (_b = params.text) !== null && _b !== void 0 ? _b : '',\n symbolType,\n symbolModifier: (_c = params.symbolModifier) !== null && _c !== void 0 ? _c : SymbolModifiers.NONE,\n xShift: 0,\n yShift: 0,\n vAlign: false,\n width: 0,\n };\n // Note: symbol widths are resolution and font-independent.\n // We convert to pixel values when we know what the font is.\n if (symbolType === SymbolTypes.GLYPH && typeof params.glyph === 'string') {\n const glyphArgs = ChordSymbol.glyphs[params.glyph];\n const glyphPoints = 20;\n symbolBlock.glyph = new Glyph(glyphArgs.code, glyphPoints, { category: 'chordSymbol' });\n // Beware: glyph.metrics is not the same as glyph.getMetrics() !\n // rv.glyph.point = rv.glyph.point * rv.glyph.metrics.scale;\n // rv.width = rv.glyph.getMetrics().width;\n // don't set yShift here, b/c we need to do it at formatting time after the font is set.\n }\n else if (symbolType === SymbolTypes.TEXT) {\n symbolBlock.width = this.textFormatter.getWidthForTextInEm(symbolBlock.text);\n }\n else if (symbolType === SymbolTypes.LINE) {\n symbolBlock.width = params.width;\n }\n return symbolBlock;\n }\n /** Add a symbol to this chord, could be text, glyph or line. */\n // eslint-disable-next-line\n addSymbolBlock(parameters) {\n this.symbolBlocks.push(this.getSymbolBlock(parameters));\n return this;\n }\n // ### Convenience functions for creating different types of chord symbol parts.\n /** Add a text block. */\n // eslint-disable-next-line\n addText(text, parameters = {}) {\n const symbolType = SymbolTypes.TEXT;\n return this.addSymbolBlock(Object.assign(Object.assign({}, parameters), { text, symbolType }));\n }\n /** Add a text block with superscript modifier. */\n addTextSuperscript(text) {\n const symbolType = SymbolTypes.TEXT;\n const symbolModifier = SymbolModifiers.SUPERSCRIPT;\n return this.addSymbolBlock({ text, symbolType, symbolModifier });\n }\n /** Add a text block with subscript modifier. */\n addTextSubscript(text) {\n const symbolType = SymbolTypes.TEXT;\n const symbolModifier = SymbolModifiers.SUBSCRIPT;\n return this.addSymbolBlock({ text, symbolType, symbolModifier });\n }\n /** Add a glyph block with superscript modifier. */\n addGlyphSuperscript(glyph) {\n const symbolType = SymbolTypes.GLYPH;\n const symbolModifier = SymbolModifiers.SUPERSCRIPT;\n return this.addSymbolBlock({ glyph, symbolType, symbolModifier });\n }\n /** Add a glyph block. */\n // eslint-disable-next-line\n addGlyph(glyph, params = {}) {\n const symbolType = SymbolTypes.GLYPH;\n return this.addSymbolBlock(Object.assign(Object.assign({}, params), { glyph, symbolType }));\n }\n /**\n * Add a glyph for each character in 'text'. If the glyph is not available, use text from the font.\n * e.g. `addGlyphOrText('(+5#11)')` will use text for the '5' and '11', and glyphs for everything else.\n */\n // eslint-disable-next-line\n addGlyphOrText(text, params = {}) {\n let str = '';\n for (let i = 0; i < text.length; ++i) {\n const char = text[i];\n if (ChordSymbol.glyphs[char]) {\n if (str.length > 0) {\n this.addText(str, params);\n str = '';\n }\n this.addGlyph(char, params);\n }\n else {\n // Collect consecutive characters with no glyphs.\n str += char;\n }\n }\n if (str.length > 0) {\n this.addText(str, params);\n }\n return this;\n }\n /** Add a line of the given width, used as a continuation of the previous symbol in analysis, or lyrics, etc. */\n // eslint-disable-next-line\n addLine(width, params = {}) {\n const symbolType = SymbolTypes.LINE;\n return this.addSymbolBlock(Object.assign(Object.assign({}, params), { symbolType, width }));\n }\n /**\n * Set the chord symbol's font family, size, weight, style (e.g., `Arial`, `10pt`, `bold`, `italic`).\n *\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n *\n * @override See: Element.\n */\n setFont(f, size, weight, style) {\n super.setFont(f, size, weight, style);\n this.textFormatter = TextFormatter.create(this.textFont);\n return this;\n }\n setEnableKerning(val) {\n this.useKerning = val;\n return this;\n }\n /** Set vertical position of text (above or below stave). */\n setVertical(vj) {\n this.vertical = typeof vj === 'string' ? ChordSymbol.VerticalJustifyString[vj] : vj;\n return this;\n }\n getVertical() {\n return this.vertical;\n }\n /** Set horizontal justification. */\n setHorizontal(hj) {\n this.horizontal = typeof hj === 'string' ? ChordSymbol.HorizontalJustifyString[hj] : hj;\n return this;\n }\n getHorizontal() {\n return this.horizontal;\n }\n getWidth() {\n let width = 0;\n this.symbolBlocks.forEach((symbol) => {\n width += symbol.vAlign ? 0 : symbol.width;\n });\n return width;\n }\n getYOffsetForText(text) {\n var _a;\n let acc = 0;\n let i = 0;\n for (i = 0; i < text.length; ++i) {\n const metrics = this.textFormatter.getGlyphMetrics(text[i]);\n if (metrics) {\n const yMax = (_a = metrics.y_max) !== null && _a !== void 0 ? _a : 0;\n acc = yMax < acc ? yMax : acc;\n }\n }\n const resolution = this.textFormatter.getResolution();\n return i > 0 ? -1 * (acc / resolution) : 0;\n }\n /** Render text and glyphs above/below the note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n // We're changing context parameters. Save current state.\n ctx.save();\n ctx.openGroup('chordsymbol', this.getAttribute('id'));\n const start = note.getModifierStartXY(Modifier.Position.ABOVE, this.index);\n ctx.setFont(this.textFont);\n let y;\n // The position of the text varies based on whether or not the note\n // has a stem.\n const hasStem = note.hasStem();\n const stave = note.checkStave();\n if (this.vertical === ChordSymbolVerticalJustify.BOTTOM) {\n // HACK: We need to compensate for the text's height since its origin is bottom-right.\n y = stave.getYForBottomText(this.text_line + Tables.TEXT_HEIGHT_OFFSET_HACK);\n if (hasStem) {\n const stem_ext = note.checkStem().getExtents();\n const spacing = stave.getSpacingBetweenLines();\n const stem_base = note.getStemDirection() === 1 ? stem_ext.baseY : stem_ext.topY;\n y = Math.max(y, stem_base + spacing * (this.text_line + 2));\n }\n }\n else {\n // (this.vertical === VerticalJustify.TOP)\n y = Math.min(stave.getYForTopText(this.text_line), note.getYs()[0] - 10);\n if (hasStem) {\n const stem_ext = note.checkStem().getExtents();\n const spacing = stave.getSpacingBetweenLines();\n y = Math.min(y, stem_ext.topY - 5 - spacing * this.text_line);\n }\n }\n let x = start.x;\n if (this.horizontal === ChordSymbolHorizontalJustify.LEFT) {\n x = start.x;\n }\n else if (this.horizontal === ChordSymbolHorizontalJustify.RIGHT) {\n x = start.x + this.getWidth();\n }\n else if (this.horizontal === ChordSymbolHorizontalJustify.CENTER) {\n x = start.x - this.getWidth() / 2;\n }\n else {\n // HorizontalJustify.CENTER_STEM\n x = note.getStemX() - this.getWidth() / 2;\n }\n L('Rendering ChordSymbol: ', this.textFormatter, x, y);\n this.symbolBlocks.forEach((symbol) => {\n const isSuper = ChordSymbol.isSuperscript(symbol);\n const isSub = ChordSymbol.isSubscript(symbol);\n let curY = y;\n L('shift was ', symbol.xShift, symbol.yShift);\n L('curY pre sub ', curY);\n if (isSuper) {\n curY += this.superscriptOffset;\n }\n if (isSub) {\n curY += this.subscriptOffset;\n }\n L('curY sup/sub ', curY);\n if (symbol.symbolType === SymbolTypes.TEXT) {\n if (isSuper || isSub) {\n ctx.save();\n if (this.textFont) {\n const { family, size, weight, style } = this.textFont;\n const smallerFontSize = Font.scaleSize(size, ChordSymbol.superSubRatio);\n ctx.setFont(family, smallerFontSize, weight, style);\n }\n }\n // TODO???\n // We estimate the text width, fill it in with the empirical value so the formatting is even.\n // const textDim = ctx.measureText(symbol.text);\n // symbol.width = textDim.width;\n L('Rendering Text: ', symbol.text, x + symbol.xShift, curY + symbol.yShift);\n ctx.fillText(symbol.text, x + symbol.xShift, curY + symbol.yShift);\n if (isSuper || isSub) {\n ctx.restore();\n }\n }\n else if (symbol.symbolType === SymbolTypes.GLYPH && symbol.glyph) {\n curY += symbol.yShift;\n L('Rendering Glyph: ', symbol.glyph.code, x + symbol.xShift, curY);\n symbol.glyph.render(ctx, x + symbol.xShift, curY);\n }\n else if (symbol.symbolType === SymbolTypes.LINE) {\n L('Rendering Line : ', symbol.width, x, curY);\n ctx.beginPath();\n ctx.setLineWidth(1); // ?\n ctx.moveTo(x, y);\n ctx.lineTo(x + symbol.width, curY);\n ctx.stroke();\n }\n x += symbol.width;\n if (symbol.vAlign) {\n x += symbol.xShift;\n }\n });\n ctx.closeGroup();\n ctx.restore();\n }\n}\nChordSymbol.DEBUG = false;\n// Chord symbols can be positioned and justified relative to the note.\nChordSymbol.HorizontalJustify = ChordSymbolHorizontalJustify;\nChordSymbol.HorizontalJustifyString = {\n left: ChordSymbolHorizontalJustify.LEFT,\n right: ChordSymbolHorizontalJustify.RIGHT,\n center: ChordSymbolHorizontalJustify.CENTER,\n centerStem: ChordSymbolHorizontalJustify.CENTER_STEM,\n};\nChordSymbol.VerticalJustify = ChordSymbolVerticalJustify;\nChordSymbol.VerticalJustifyString = {\n top: ChordSymbolVerticalJustify.TOP,\n above: ChordSymbolVerticalJustify.TOP,\n below: ChordSymbolVerticalJustify.BOTTOM,\n bottom: ChordSymbolVerticalJustify.BOTTOM,\n};\n// Glyph data\nChordSymbol.glyphs = {\n diminished: {\n code: 'csymDiminished',\n },\n dim: {\n code: 'csymDiminished',\n },\n halfDiminished: {\n code: 'csymHalfDiminished',\n },\n '+': {\n code: 'csymAugmented',\n },\n augmented: {\n code: 'csymAugmented',\n },\n majorSeventh: {\n code: 'csymMajorSeventh',\n },\n minor: {\n code: 'csymMinor',\n },\n '-': {\n code: 'csymMinor',\n },\n '(': {\n code: 'csymParensLeftTall',\n },\n leftParen: {\n code: 'csymParensLeftTall',\n },\n ')': {\n code: 'csymParensRightTall',\n },\n rightParen: {\n code: 'csymParensRightTall',\n },\n leftBracket: {\n code: 'csymBracketLeftTall',\n },\n rightBracket: {\n code: 'csymBracketRightTall',\n },\n leftParenTall: {\n code: 'csymParensLeftVeryTall',\n },\n rightParenTall: {\n code: 'csymParensRightVeryTall',\n },\n '/': {\n code: 'csymDiagonalArrangementSlash',\n },\n over: {\n code: 'csymDiagonalArrangementSlash',\n },\n '#': {\n code: 'accidentalSharp',\n },\n b: {\n code: 'accidentalFlat',\n },\n};\nChordSymbol.symbolTypes = SymbolTypes;\nChordSymbol.symbolModifiers = SymbolModifiers;\n/** Currently unused. */\nChordSymbol.noFormat = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Note } from './note';\nimport { Barline, BarlineType } from './stavebarline';\nimport { Category } from './typeguard';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (BarNote.DEBUG)\n log('Vex.Flow.BarNote', args);\n}\n/**\n * A `BarNote` is used to render bar lines (from `barline.ts`). `BarNote`s can\n * be added to a voice and rendered in the middle of a stave. Since it has no\n * duration, it consumes no `tick`s, and is dealt with appropriately by the formatter.\n *\n * See `tests/barnote_tests.ts` for usage examples.\n */\nexport class BarNote extends Note {\n constructor(type = BarlineType.SINGLE) {\n super({ duration: 'b' });\n this.metrics = {\n widths: {},\n };\n const TYPE = BarlineType;\n this.metrics.widths = {\n [TYPE.SINGLE]: 8,\n [TYPE.DOUBLE]: 12,\n [TYPE.END]: 15,\n [TYPE.REPEAT_BEGIN]: 14,\n [TYPE.REPEAT_END]: 14,\n [TYPE.REPEAT_BOTH]: 18,\n [TYPE.NONE]: 0,\n };\n // Tell the formatter that bar notes have no duration.\n this.ignore_ticks = true;\n this.setType(type);\n }\n static get CATEGORY() {\n return Category.BarNote;\n }\n /** Get the type of bar note.*/\n getType() {\n return this.type;\n }\n /** Set the type of bar note. */\n setType(type) {\n this.type = typeof type === 'string' ? Barline.typeString[type] : type;\n // Set width to width of relevant `Barline`.\n this.setWidth(this.metrics.widths[this.type]);\n return this;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n /** Overridden to ignore. */\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n /** Render note to stave. */\n draw() {\n const ctx = this.checkContext();\n L('Rendering bar line at: ', this.getAbsoluteX());\n this.applyStyle(ctx);\n const barline = new Barline(this.type);\n barline.setX(this.getAbsoluteX());\n barline.draw(this.checkStave());\n this.restoreStyle(ctx);\n this.setRendered();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.BarNote.DEBUG` to `true`. */\nBarNote.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Modifier } from './modifier';\nimport { TextFormatter } from './textformatter';\nimport { Category, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\n/** Bend implements tablature bends. */\nexport class Bend extends Modifier {\n /**\n * Example of a phrase:\n * ```\n * [{\n * type: UP,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: DOWN,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: UP,\n * text: \"half\"\n * width: 8;\n * },\n * {\n * type: UP,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: DOWN,\n * text: \"1 1/2\"\n * width: 8;\n * }]\n * ```\n * @param text text for bend (\"Full\", \"Half\", etc.) (DEPRECATED)\n * @param release if true, render a release. (DEPRECATED)\n * @param phrase if set, ignore \"text\" and \"release\", and use the more sophisticated phrase specified\n */\n constructor(text, release = false, phrase) {\n super();\n this.text = text;\n this.x_shift = 0;\n this.release = release;\n this.tap = '';\n this.resetFont();\n this.render_options = {\n line_width: 1.5,\n line_style: '#777777',\n bend_width: 8,\n release_width: 8,\n };\n if (phrase) {\n this.phrase = phrase;\n }\n else {\n // Backward compatibility\n this.phrase = [{ type: Bend.UP, text: this.text }];\n if (this.release)\n this.phrase.push({ type: Bend.DOWN, text: '' });\n }\n this.updateWidth();\n }\n static get CATEGORY() {\n return Category.Bend;\n }\n static get UP() {\n return 0;\n }\n static get DOWN() {\n return 1;\n }\n // Arrange bends in `ModifierContext`\n static format(bends, state) {\n if (!bends || bends.length === 0)\n return false;\n let last_width = 0;\n // Format Bends\n for (let i = 0; i < bends.length; ++i) {\n const bend = bends[i];\n const note = bend.checkAttachedNote();\n if (isTabNote(note)) {\n const stringPos = note.leastString() - 1;\n if (state.top_text_line < stringPos) {\n state.top_text_line = stringPos;\n }\n }\n bend.setXShift(last_width);\n last_width = bend.getWidth();\n bend.setTextLine(state.top_text_line);\n }\n state.right_shift += last_width;\n state.top_text_line += 1;\n return true;\n }\n /** Set horizontal shift in pixels. */\n setXShift(value) {\n this.x_shift = value;\n this.updateWidth();\n return this;\n }\n setTap(value) {\n this.tap = value;\n return this;\n }\n /** Get text provided in the constructor. */\n getText() {\n return this.text;\n }\n getTextHeight() {\n const textFormatter = TextFormatter.create(this.textFont);\n return textFormatter.maxHeight;\n }\n /** Recalculate width. */\n updateWidth() {\n const textFormatter = TextFormatter.create(this.textFont);\n const measureText = (text) => {\n return textFormatter.getWidthForTextInPx(text);\n };\n let totalWidth = 0;\n for (let i = 0; i < this.phrase.length; ++i) {\n const bend = this.phrase[i];\n if (bend.width !== undefined) {\n totalWidth += bend.width;\n }\n else {\n const additional_width = bend.type === Bend.UP ? this.render_options.bend_width : this.render_options.release_width;\n bend.width = Math.max(additional_width, measureText(bend.text)) + 3;\n bend.draw_width = bend.width / 2;\n totalWidth += bend.width;\n }\n }\n this.setWidth(totalWidth + this.x_shift);\n return this;\n }\n /** Draw the bend on the rendering context. */\n draw() {\n var _a;\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(Modifier.Position.RIGHT, this.index);\n start.x += 3;\n start.y += 0.5;\n const x_shift = this.x_shift;\n const stave = note.checkStave();\n const spacing = stave.getSpacingBetweenLines();\n const lowestY = note.getYs().reduce((a, b) => (a < b ? a : b));\n // this.text_line is relative to top string in the group.\n const bend_height = start.y - ((this.text_line + 1) * spacing + start.y - lowestY) + 3;\n const annotation_y = start.y - ((this.text_line + 1) * spacing + start.y - lowestY) - 1;\n const renderBend = (x, y, width, height) => {\n const cp_x = x + width;\n const cp_y = y;\n ctx.save();\n ctx.beginPath();\n ctx.setLineWidth(this.render_options.line_width);\n ctx.setStrokeStyle(this.render_options.line_style);\n ctx.setFillStyle(this.render_options.line_style);\n ctx.moveTo(x, y);\n ctx.quadraticCurveTo(cp_x, cp_y, x + width, height);\n ctx.stroke();\n ctx.restore();\n };\n const renderRelease = (x, y, width, height) => {\n ctx.save();\n ctx.beginPath();\n ctx.setLineWidth(this.render_options.line_width);\n ctx.setStrokeStyle(this.render_options.line_style);\n ctx.setFillStyle(this.render_options.line_style);\n ctx.moveTo(x, height);\n ctx.quadraticCurveTo(x + width, height, x + width, y);\n ctx.stroke();\n ctx.restore();\n };\n const renderArrowHead = (x, y, direction) => {\n const width = 4;\n const yBase = y + width * direction;\n ctx.beginPath();\n ctx.moveTo(x, y); // tip of the arrow\n ctx.lineTo(x - width, yBase);\n ctx.lineTo(x + width, yBase);\n ctx.closePath();\n ctx.fill();\n };\n const renderText = (x, text) => {\n ctx.save();\n ctx.setFont(this.textFont);\n const render_x = x - ctx.measureText(text).width / 2;\n ctx.fillText(text, render_x, annotation_y);\n ctx.restore();\n };\n let last_bend = undefined;\n let last_bend_draw_width = 0;\n let last_drawn_width = 0;\n if ((_a = this.tap) === null || _a === void 0 ? void 0 : _a.length) {\n const tapStart = note.getModifierStartXY(Modifier.Position.CENTER, this.index);\n renderText(tapStart.x, this.tap);\n }\n for (let i = 0; i < this.phrase.length; ++i) {\n const bend = this.phrase[i];\n if (!bend.draw_width)\n bend.draw_width = 0;\n if (i === 0)\n bend.draw_width += x_shift;\n last_drawn_width = bend.draw_width + last_bend_draw_width - (i === 1 ? x_shift : 0);\n if (bend.type === Bend.UP) {\n if (last_bend && last_bend.type === Bend.UP) {\n renderArrowHead(start.x, bend_height, +1);\n }\n renderBend(start.x, start.y, last_drawn_width, bend_height);\n }\n if (bend.type === Bend.DOWN) {\n if (last_bend && last_bend.type === Bend.UP) {\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n if (last_bend && last_bend.type === Bend.DOWN) {\n renderArrowHead(start.x, start.y, -1);\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n if (!last_bend) {\n last_drawn_width = bend.draw_width;\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n }\n renderText(start.x + last_drawn_width, bend.text);\n last_bend = bend;\n last_bend_draw_width = bend.draw_width;\n last_bend.x = start.x;\n start.x += last_drawn_width;\n }\n if (!last_bend || last_bend.x == undefined) {\n throw new RuntimeError('NoLastBendForBend', 'Internal error.');\n }\n // Final arrowhead and text\n if (last_bend.type === Bend.UP) {\n renderArrowHead(last_bend.x + last_drawn_width, bend_height, +1);\n }\n else if (last_bend.type === Bend.DOWN) {\n renderArrowHead(last_bend.x + last_drawn_width, start.y, -1);\n }\n }\n}\n/** Default text font. */\nBend.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements dot modifiers for notes.\nimport { Modifier } from './modifier';\nimport { Category, isGraceNote, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class Dot extends Modifier {\n constructor() {\n super();\n this.position = Modifier.Position.RIGHT;\n this.radius = 2;\n this.setWidth(5);\n this.dot_shiftY = 0;\n }\n static get CATEGORY() {\n return Category.Dot;\n }\n /** Returns the dots associated to a Note. */\n static getDots(note) {\n return note.getModifiersByType(Dot.CATEGORY);\n }\n /** Add a dot on the specified keys to the notes. */\n static buildAndAttach(notes, options) {\n for (const note of notes) {\n if (options === null || options === void 0 ? void 0 : options.all) {\n for (let i = 0; i < note.keys.length; i++) {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, i);\n }\n }\n else if ((options === null || options === void 0 ? void 0 : options.index) != undefined) {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, options === null || options === void 0 ? void 0 : options.index);\n }\n else {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, 0);\n }\n }\n }\n // Arrange dots inside a ModifierContext.\n static format(dots, state) {\n const right_shift = state.right_shift;\n const dot_spacing = 1;\n if (!dots || dots.length === 0)\n return false;\n const dot_list = [];\n const max_shift_map = {};\n for (let i = 0; i < dots.length; ++i) {\n const dot = dots[i];\n const note = dot.getNote();\n let props;\n let shift;\n if (isStaveNote(note)) {\n const index = dot.checkIndex();\n props = note.getKeyProps()[index];\n // consider right displaced head with no previous modifier\n shift = note.getFirstDotPx();\n }\n else if (isTabNote(note)) {\n props = { line: 0.5 }; // Shim key props for dot placement\n shift = right_shift;\n }\n else {\n // note object is not StaveNote or TabNote.\n throw new RuntimeError('Internal', 'Unexpected instance.');\n }\n const note_id = note.getAttribute('id');\n dot_list.push({ line: props.line, note, note_id, dot });\n max_shift_map[note_id] = Math.max(max_shift_map[note_id] || shift, shift);\n }\n // Sort dots by line number.\n dot_list.sort((a, b) => b.line - a.line);\n let dot_shift = right_shift;\n let x_width = 0;\n let last_line = null;\n let last_note = null;\n let prev_dotted_space = null;\n let half_shiftY = 0;\n for (let i = 0; i < dot_list.length; ++i) {\n const { dot, note, note_id, line } = dot_list[i];\n // Reset the position of the dot every line.\n if (line !== last_line || note !== last_note) {\n dot_shift = max_shift_map[note_id];\n }\n if (!note.isRest() && line !== last_line) {\n if (Math.abs(line % 1) === 0.5) {\n // note is on a space, so no dot shift\n half_shiftY = 0;\n }\n else {\n // note is on a line, so shift dot to space above the line\n half_shiftY = 0.5;\n if (last_note != null && !last_note.isRest() && last_line != null && last_line - line === 0.5) {\n // previous note on a space, so shift dot to space below the line\n half_shiftY = -0.5;\n }\n else if (line + half_shiftY === prev_dotted_space) {\n // previous space is dotted, so shift dot to space below the line\n half_shiftY = -0.5;\n }\n }\n }\n // convert half_shiftY to a multiplier for dots.draw()\n if (note.isRest()) {\n dot.dot_shiftY += -half_shiftY;\n }\n else {\n dot.dot_shiftY = -half_shiftY;\n }\n prev_dotted_space = line + half_shiftY;\n dot.setXShift(dot_shift);\n dot_shift += dot.getWidth() + dot_spacing; // spacing\n x_width = dot_shift > x_width ? dot_shift : x_width;\n last_line = line;\n last_note = note;\n }\n // Update state.\n state.right_shift += x_width;\n return true;\n }\n setNote(note) {\n this.note = note;\n if (isGraceNote(note)) {\n this.radius *= 0.5;\n this.setWidth(3);\n }\n return this;\n }\n setDotShiftY(y) {\n this.dot_shiftY = y;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stave = note.checkStave();\n const lineSpace = stave.getSpacingBetweenLines();\n const start = note.getModifierStartXY(this.position, this.index, { forceFlagRight: true });\n // Set the starting y coordinate to the base of the stem for TabNotes.\n if (isTabNote(note)) {\n start.y = note.getStemExtents().baseY;\n }\n const x = start.x + this.x_shift + this.width - this.radius;\n const y = start.y + this.y_shift + this.dot_shiftY * lineSpace;\n ctx.beginPath();\n ctx.arc(x, y, this.radius, 0, Math.PI * 2, false);\n ctx.fill();\n }\n}\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n// Author Larry Kuhns 2013\n// Class to draws string numbers into the notation.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class FretHandFinger extends Modifier {\n constructor(finger) {\n super();\n this.finger = finger;\n this.width = 7;\n this.position = Modifier.Position.LEFT; // Default position above stem or note head\n this.x_shift = 0;\n this.y_shift = 0;\n this.x_offset = 0; // Horizontal offset from default\n this.y_offset = 0; // Vertical offset from default\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.FretHandFinger;\n }\n // Arrange fingerings inside a ModifierContext.\n static format(nums, state) {\n const { left_shift, right_shift } = state;\n const num_spacing = 1;\n if (!nums || nums.length === 0)\n return false;\n const nums_list = [];\n let prev_note = null;\n let shiftLeft = 0;\n let shiftRight = 0;\n for (let i = 0; i < nums.length; ++i) {\n const num = nums[i];\n const note = num.getNote();\n const pos = num.getPosition();\n const index = num.checkIndex();\n const props = note.getKeyProps()[index];\n const textFormatter = TextFormatter.create(num.textFont);\n const textHeight = textFormatter.maxHeight;\n if (num.position === ModifierPosition.ABOVE) {\n state.top_text_line += textHeight / Tables.STAVE_LINE_DISTANCE + 0.5;\n }\n if (num.position === ModifierPosition.BELOW) {\n state.text_line += textHeight / Tables.STAVE_LINE_DISTANCE + 0.5;\n }\n if (note !== prev_note) {\n for (let n = 0; n < note.keys.length; ++n) {\n if (left_shift === 0) {\n shiftLeft = Math.max(note.getLeftDisplacedHeadPx(), shiftLeft);\n }\n if (right_shift === 0) {\n shiftRight = Math.max(note.getRightDisplacedHeadPx(), shiftRight);\n }\n }\n prev_note = note;\n }\n nums_list.push({\n note,\n num,\n pos,\n line: props.line,\n shiftL: shiftLeft,\n shiftR: shiftRight,\n });\n }\n // Sort fingernumbers by line number.\n nums_list.sort((a, b) => b.line - a.line);\n let numShiftL = 0;\n let numShiftR = 0;\n let xWidthL = 0;\n let xWidthR = 0;\n let lastLine = null;\n let lastNote = null;\n for (let i = 0; i < nums_list.length; ++i) {\n let num_shift = 0;\n const { note, pos, num, line, shiftL, shiftR } = nums_list[i];\n // Reset the position of the string number every line.\n if (line !== lastLine || note !== lastNote) {\n numShiftL = left_shift + shiftL;\n numShiftR = right_shift + shiftR;\n }\n const numWidth = num.getWidth() + num_spacing;\n if (pos === Modifier.Position.LEFT) {\n num.setXShift(left_shift + numShiftL);\n num_shift = left_shift + numWidth; // spacing\n xWidthL = num_shift > xWidthL ? num_shift : xWidthL;\n }\n else if (pos === Modifier.Position.RIGHT) {\n num.setXShift(numShiftR);\n num_shift = shiftRight + numWidth; // spacing\n xWidthR = num_shift > xWidthR ? num_shift : xWidthR;\n }\n lastLine = line;\n lastNote = note;\n }\n state.left_shift += xWidthL;\n state.right_shift += xWidthR;\n return true;\n }\n static easyScoreHook({ fingerings } = {}, note, builder) {\n fingerings === null || fingerings === void 0 ? void 0 : fingerings.split(',').map((fingeringString) => {\n const split = fingeringString.trim().split('.');\n const params = { number: split[0] };\n if (split[1])\n params.position = split[1];\n return builder.getFactory().Fingering(params);\n }).map((fingering, index) => note.addModifier(fingering, index));\n }\n setFretHandFinger(finger) {\n this.finger = finger;\n return this;\n }\n getFretHandFinger() {\n return this.finger;\n }\n setOffsetX(x) {\n this.x_offset = x;\n return this;\n }\n setOffsetY(y) {\n this.y_offset = y;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n let dot_x = start.x + this.x_shift + this.x_offset;\n let dot_y = start.y + this.y_shift + this.y_offset + 5;\n switch (this.position) {\n case Modifier.Position.ABOVE:\n dot_x -= 4;\n dot_y -= 12;\n break;\n case Modifier.Position.BELOW:\n dot_x -= 2;\n dot_y += 10;\n break;\n case Modifier.Position.LEFT:\n dot_x -= this.width;\n break;\n case Modifier.Position.RIGHT:\n dot_x += 1;\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} does not exist`);\n }\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText('' + this.finger, dot_x, dot_y);\n ctx.restore();\n }\n}\nFretHandFinger.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 9,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (NoteHead.DEBUG)\n log('Vex.Flow.NoteHead', args);\n}\n/**\n * Draw slashnote head manually. No glyph exists for this.\n * @param ctx the Canvas context\n * @param duration the duration of the note. ex: \"4\"\n * @param x the x coordinate to draw at\n * @param y the y coordinate to draw at\n * @param stem_direction the direction of the stem\n */\nfunction drawSlashNoteHead(ctx, duration, x, y, stem_direction, staveSpace) {\n const width = Tables.SLASH_NOTEHEAD_WIDTH;\n ctx.save();\n ctx.setLineWidth(Tables.STEM_WIDTH);\n let fill = false;\n if (Tables.durationToNumber(duration) > 2) {\n fill = true;\n }\n if (!fill)\n x -= (Tables.STEM_WIDTH / 2) * stem_direction;\n ctx.beginPath();\n ctx.moveTo(x, y + staveSpace);\n ctx.lineTo(x, y + 1);\n ctx.lineTo(x + width, y - staveSpace);\n ctx.lineTo(x + width, y);\n ctx.lineTo(x, y + staveSpace);\n ctx.closePath();\n if (fill) {\n ctx.fill();\n }\n else {\n ctx.stroke();\n }\n if (Tables.durationToFraction(duration).equals(0.5)) {\n const breve_lines = [-3, -1, width + 1, width + 3];\n for (let i = 0; i < breve_lines.length; i++) {\n ctx.beginPath();\n ctx.moveTo(x + breve_lines[i], y - 10);\n ctx.lineTo(x + breve_lines[i], y + 11);\n ctx.stroke();\n }\n }\n ctx.restore();\n}\n/**\n * `NoteHeads` are typically not manipulated\n * directly, but used internally in `StaveNote`.\n *\n * See `tests/notehead_tests.ts` for usage examples.\n */\nexport class NoteHead extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n this.custom_glyph = false;\n this.stem_up_x_offset = 0;\n this.stem_down_x_offset = 0;\n this.index = noteStruct.index;\n this.x = noteStruct.x || 0;\n this.y = noteStruct.y || 0;\n if (noteStruct.note_type)\n this.noteType = noteStruct.note_type;\n this.displaced = noteStruct.displaced || false;\n this.stem_direction = noteStruct.stem_direction || Stem.UP;\n this.line = noteStruct.line || 0;\n // Get glyph code based on duration and note type. This could be\n // regular notes, rests, or other custom codes.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n // Swap out the glyph with leger lines\n if ((this.line > 5 || this.line < 0) && this.glyph.leger_code_head) {\n this.glyph.code_head = this.glyph.leger_code_head;\n }\n this.glyph_code = this.glyph.code_head;\n this.x_shift = noteStruct.x_shift || 0;\n if (noteStruct.custom_glyph_code) {\n this.custom_glyph = true;\n this.glyph_code = noteStruct.custom_glyph_code;\n this.stem_up_x_offset = noteStruct.stem_up_x_offset || 0;\n this.stem_down_x_offset = noteStruct.stem_down_x_offset || 0;\n }\n this.setStyle(noteStruct.style);\n this.slashed = noteStruct.slashed || false;\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads\n glyph_font_scale: noteStruct.glyph_font_scale || Tables.NOTATION_FONT_SCALE });\n this.setWidth(this.glyph.getWidth(this.render_options.glyph_font_scale));\n }\n static get CATEGORY() {\n return Category.NoteHead;\n }\n /** Get the width of the notehead. */\n getWidth() {\n return this.width;\n }\n /** Determine if the notehead is displaced. */\n isDisplaced() {\n return this.displaced === true;\n }\n /** Get the glyph data. */\n getGlyph() {\n return this.glyph;\n }\n /** Set the X coordinate. */\n setX(x) {\n this.x = x;\n return this;\n }\n /** Get the Y coordinate. */\n getY() {\n return this.y;\n }\n /** Set the Y coordinate. */\n setY(y) {\n this.y = y;\n return this;\n }\n /** Get the stave line the notehead is placed on. */\n getLine() {\n return this.line;\n }\n /** Set the stave line the notehead is placed on. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Get the canvas `x` coordinate position of the notehead. */\n getAbsoluteX() {\n // If the note has not been preformatted, then get the static x value\n // Otherwise, it's been formatted and we should use it's x value relative\n // to its tick context\n const x = !this.preFormatted ? this.x : super.getAbsoluteX();\n // For a more natural displaced notehead, we adjust the displacement amount\n // by half the stem width in order to maintain a slight overlap with the stem\n const displacementStemAdjustment = Stem.WIDTH / 2;\n const musicFont = Tables.currentMusicFont();\n const fontShift = musicFont.lookupMetric('notehead.shiftX', 0) * this.stem_direction;\n const displacedFontShift = musicFont.lookupMetric('noteHead.displaced.shiftX', 0) * this.stem_direction;\n return (x +\n fontShift +\n (this.displaced ? (this.width - displacementStemAdjustment) * this.stem_direction + displacedFontShift : 0));\n }\n /** Get the `BoundingBox` for the `NoteHead`. */\n getBoundingBox() {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getBoundingBox on an unformatted note.\");\n }\n const spacing = this.checkStave().getSpacingBetweenLines();\n const half_spacing = spacing / 2;\n const min_y = this.y - half_spacing;\n return new BoundingBox(this.getAbsoluteX(), min_y, this.width, spacing);\n }\n /** Set notehead to a provided `stave`. */\n setStave(stave) {\n const line = this.getLine();\n this.stave = stave;\n if (this.stave) {\n this.setY(this.stave.getYForNote(line));\n this.setContext(this.stave.getContext());\n }\n return this;\n }\n /** Pre-render formatting. */\n preFormat() {\n if (this.preFormatted)\n return this;\n const width = this.getWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx;\n this.setWidth(width);\n this.preFormatted = true;\n return this;\n }\n /** Draw the notehead. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let head_x = this.getAbsoluteX();\n if (this.custom_glyph) {\n // head_x += this.x_shift;\n head_x += this.stem_direction === Stem.UP ? this.stem_up_x_offset : this.stem_down_x_offset;\n }\n const y = this.y;\n L(\"Drawing note head '\", this.noteType, this.duration, \"' at\", head_x, y);\n // Begin and end positions for head.\n const stem_direction = this.stem_direction;\n const glyph_font_scale = this.render_options.glyph_font_scale;\n this.applyStyle(ctx);\n const categorySuffix = `${this.glyph_code}Stem${stem_direction === Stem.UP ? 'Up' : 'Down'}`;\n if (this.noteType === 's') {\n const staveSpace = this.checkStave().getSpacingBetweenLines();\n drawSlashNoteHead(ctx, this.duration, head_x, y, stem_direction, staveSpace);\n }\n else {\n Glyph.renderGlyph(ctx, head_x, y, glyph_font_scale, this.glyph_code, {\n category: this.custom_glyph ? `noteHead.custom.${categorySuffix}` : `noteHead.standard.${categorySuffix}`,\n });\n }\n this.restoreStyle(ctx);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.NoteHead.DEBUG` to `true`. */\nNoteHead.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// `StemmableNote` is an abstract interface for notes with optional stems.\n// Examples of stemmable notes are `StaveNote` and `TabNote`\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StemmableNote extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n }\n static get CATEGORY() {\n return Category.StemmableNote;\n }\n // Get and set the note's `Stem`\n getStem() {\n return this.stem;\n }\n checkStem() {\n if (!this.stem) {\n throw new RuntimeError('NoStem', 'No stem attached to instance');\n }\n return this.stem;\n }\n setStem(stem) {\n this.stem = stem;\n this.addChildElement(stem);\n return this;\n }\n // Builds and sets a new stem\n buildStem() {\n const stem = new Stem();\n this.setStem(stem);\n return this;\n }\n buildFlag(category = 'flag') {\n const { glyph } = this;\n if (this.hasFlag()) {\n const flagCode = this.getStemDirection() === Stem.DOWN ? glyph.code_flag_downstem : glyph.code_flag_upstem;\n this.flag = new Glyph(flagCode, this.render_options.glyph_font_scale, { category });\n }\n }\n // Get the custom glyph associated with the outer note head on the base of the stem.\n getBaseCustomNoteHeadGlyph() {\n if (this.getStemDirection() === Stem.DOWN) {\n return this.customGlyphs[this.customGlyphs.length - 1];\n }\n else {\n return this.customGlyphs[0];\n }\n }\n // Get the full length of stem\n getStemLength() {\n return Stem.HEIGHT + this.getStemExtension();\n }\n // Get the number of beams for this duration\n getBeamCount() {\n const glyph = this.getGlyph();\n if (glyph) {\n return glyph.beam_count;\n }\n else {\n return 0;\n }\n }\n // Get the minimum length of stem\n getStemMinimumLength() {\n const frac = Tables.durationToFraction(this.duration);\n let length = frac.value() <= 1 ? 0 : 20;\n // if note is flagged, cannot shorten beam\n switch (this.duration) {\n case '8':\n if (this.beam == undefined)\n length = 35;\n break;\n case '16':\n length = this.beam == undefined ? 35 : 25;\n break;\n case '32':\n length = this.beam == undefined ? 45 : 35;\n break;\n case '64':\n length = this.beam == undefined ? 50 : 40;\n break;\n case '128':\n length = this.beam == undefined ? 55 : 45;\n break;\n default:\n break;\n }\n return length;\n }\n // Get/set the direction of the stem\n getStemDirection() {\n if (!this.stem_direction)\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n return this.stem_direction;\n }\n setStemDirection(direction) {\n if (!direction)\n direction = Stem.UP;\n if (direction !== Stem.UP && direction !== Stem.DOWN) {\n throw new RuntimeError('BadArgument', `Invalid stem direction: ${direction}`);\n }\n this.stem_direction = direction;\n // Reset and reformat everything. Flag has to be built before calling getStemExtension.\n this.reset();\n if (this.hasFlag()) {\n this.buildFlag();\n }\n this.beam = undefined;\n if (this.stem) {\n this.stem.setDirection(direction);\n this.stem.setExtension(this.getStemExtension());\n // Lookup the base custom notehead (closest to the base of the stem) to extend or shorten\n // the stem appropriately. If there's no custom note head, lookup the standard notehead.\n const glyph = this.getBaseCustomNoteHeadGlyph() || this.getGlyph();\n // Get the font-specific customizations for the note heads.\n const offsets = Tables.currentMusicFont().lookupMetric(`stem.noteHead.${glyph.code_head}`, {\n offsetYBaseStemUp: 0,\n offsetYTopStemUp: 0,\n offsetYBaseStemDown: 0,\n offsetYTopStemDown: 0,\n });\n // Configure the stem to use these offsets.\n this.stem.setOptions({\n stem_up_y_offset: offsets.offsetYTopStemUp,\n stem_down_y_offset: offsets.offsetYTopStemDown,\n stem_up_y_base_offset: offsets.offsetYBaseStemUp,\n stem_down_y_base_offset: offsets.offsetYBaseStemDown, // glyph.stem_down_y_base_offset,\n });\n }\n if (this.preFormatted) {\n this.preFormat();\n }\n return this;\n }\n // Get the `x` coordinate of the stem\n getStemX() {\n const x_begin = this.getAbsoluteX() + this.x_shift;\n const x_end = this.getAbsoluteX() + this.x_shift + this.getGlyphWidth();\n const stem_x = this.stem_direction === Stem.DOWN ? x_begin : x_end;\n return stem_x;\n }\n // Get the `x` coordinate for the center of the glyph.\n // Used for `TabNote` stems and stemlets over rests\n getCenterGlyphX() {\n return this.getAbsoluteX() + this.x_shift + this.getGlyphWidth() / 2;\n }\n // Get the stem extension for the current duration\n getStemExtension() {\n const glyph = this.getGlyph();\n if (this.stem_extension_override != undefined) {\n return this.stem_extension_override;\n }\n // Use stem_beam_extension with beams\n if (this.beam) {\n return glyph.stem_beam_extension;\n }\n if (glyph) {\n return this.getStemDirection() === Stem.UP ? glyph.stem_up_extension : glyph.stem_down_extension;\n }\n return 0;\n }\n // Set the stem length to a specific. Will override the default length.\n setStemLength(height) {\n this.stem_extension_override = height - Stem.HEIGHT;\n return this;\n }\n // Get the top and bottom `y` values of the stem.\n getStemExtents() {\n if (!this.stem)\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n return this.stem.getExtents();\n }\n /** Gets the `y` value for the top modifiers at a specific `textLine`. */\n getYForTopText(textLine) {\n const stave = this.checkStave();\n if (this.hasStem()) {\n const extents = this.getStemExtents();\n if (!extents)\n throw new RuntimeError('InvalidState', 'Stem does not have extents.');\n return Math.min(stave.getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1));\n }\n else {\n return stave.getYForTopText(textLine);\n }\n }\n /** Gets the `y` value for the bottom modifiers at a specific `textLine`. */\n getYForBottomText(textLine) {\n const stave = this.checkStave();\n if (this.hasStem()) {\n const extents = this.getStemExtents();\n if (!extents)\n throw new RuntimeError('InvalidState', 'Stem does not have extents.');\n return Math.max(stave.getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine);\n }\n else {\n return stave.getYForBottomText(textLine);\n }\n }\n hasFlag() {\n return Tables.getGlyphProps(this.duration).flag && !this.beam;\n }\n /** Post formats the note. */\n postFormat() {\n var _a;\n (_a = this.beam) === null || _a === void 0 ? void 0 : _a.postFormat();\n this.postFormatted = true;\n return this;\n }\n /** Renders the stem onto the canvas. */\n drawStem(stemOptions) {\n var _a;\n this.checkContext();\n this.setRendered();\n this.setStem(new Stem(stemOptions));\n (_a = this.stem) === null || _a === void 0 ? void 0 : _a.setContext(this.getContext()).draw();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This file implements notes for standard notation. This consists of one or\n// more `NoteHeads`, an optional stem, and an optional flag.\n//\n// Throughout these comments, a \"note\" refers to the entire `StaveNote`,\n// and a \"key\" refers to a specific pitch/notehead within a note.\n//\n// See `tests/stavenote_tests.ts` for usage examples.\nimport { BoundingBox } from './boundingbox';\nimport { Modifier } from './modifier';\nimport { NoteHead } from './notehead';\nimport { Stem } from './stem';\nimport { StemmableNote } from './stemmablenote';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log, midLine, RuntimeError } from './util';\nfunction showDeprecationWarningForNoteHeads() {\n // eslint-disable-next-line\n console.warn('StaveNote.note_heads is deprecated. Use StaveNote.noteHeads instead.', 'This accessor will be removed in VexFlow 5.0.');\n}\n// To enable logging for this class. Set `Vex.Flow.StaveNote.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (StaveNote.DEBUG)\n log('Vex.Flow.StaveNote', args);\n}\nconst isInnerNoteIndex = (note, index) => index === (note.getStemDirection() === Stem.UP ? note.keyProps.length - 1 : 0);\n// Helper methods for rest positioning in ModifierContext.\nfunction shiftRestVertical(rest, note, dir) {\n const delta = dir;\n rest.line += delta;\n rest.maxLine += delta;\n rest.minLine += delta;\n rest.note.setKeyLine(0, rest.note.getKeyLine(0) + delta);\n}\n// Called from formatNotes :: center a rest between two notes\nfunction centerRest(rest, noteU, noteL) {\n const delta = rest.line - midLine(noteU.minLine, noteL.maxLine);\n rest.note.setKeyLine(0, rest.note.getKeyLine(0) - delta);\n rest.line -= delta;\n rest.maxLine -= delta;\n rest.minLine -= delta;\n}\nexport class StaveNote extends StemmableNote {\n constructor(noteStruct) {\n var _a, _b, _c;\n super(noteStruct);\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // INSTANCE MEMBERS\n this.minLine = 0;\n this.maxLine = 0;\n // Sorted variant of keyProps used internally\n this.sortedKeyProps = [];\n this.ledgerLineStyle = {};\n this.clef = (_a = noteStruct.clef) !== null && _a !== void 0 ? _a : 'treble';\n this.octave_shift = (_b = noteStruct.octave_shift) !== null && _b !== void 0 ? _b : 0;\n // Pull note rendering properties.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n // if true, displace note to right\n this.displaced = false;\n this.dot_shiftY = 0;\n // for displaced ledger lines\n this.use_default_head_x = false;\n // Drawing\n this._noteHeads = [];\n this.modifiers = [];\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads and rests\n glyph_font_scale: noteStruct.glyph_font_scale || Tables.NOTATION_FONT_SCALE, \n // number of stroke px to the left and right of head\n stroke_px: noteStruct.stroke_px || StaveNote.LEDGER_LINE_OFFSET });\n this.calculateKeyProps();\n this.buildStem();\n // Set the stem direction\n if (noteStruct.auto_stem) {\n this.autoStem();\n }\n else {\n this.setStemDirection((_c = noteStruct.stem_direction) !== null && _c !== void 0 ? _c : Stem.UP);\n }\n this.reset();\n this.buildFlag();\n }\n static get CATEGORY() {\n return Category.StaveNote;\n }\n /**\n * @deprecated Use Stem.UP.\n */\n static get STEM_UP() {\n return Stem.UP;\n }\n /**\n * @deprecated Use Stem.DOWN.\n */\n static get STEM_DOWN() {\n return Stem.DOWN;\n }\n static get LEDGER_LINE_OFFSET() {\n return 3;\n }\n static get minNoteheadPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Format notes inside a ModifierContext. */\n static format(notes, state) {\n if (!notes || notes.length < 2)\n return false;\n const notesList = [];\n for (let i = 0; i < notes.length; i++) {\n // Formatting uses sortedKeyProps to calculate line and minL.\n const props = notes[i].sortedKeyProps;\n const line = props[0].keyProps.line;\n let minL = props[props.length - 1].keyProps.line;\n const stemDirection = notes[i].getStemDirection();\n const stemMax = notes[i].getStemLength() / 10;\n const stemMin = notes[i].getStemMinimumLength() / 10;\n let maxL;\n if (notes[i].isRest()) {\n maxL = line + notes[i].glyph.line_above;\n minL = line - notes[i].glyph.line_below;\n }\n else {\n maxL =\n stemDirection === 1 ? props[props.length - 1].keyProps.line + stemMax : props[props.length - 1].keyProps.line;\n minL = stemDirection === 1 ? props[0].keyProps.line : props[0].keyProps.line - stemMax;\n }\n notesList.push({\n line: props[0].keyProps.line,\n maxLine: maxL,\n minLine: minL,\n isrest: notes[i].isRest(),\n stemDirection: stemDirection,\n stemMax,\n stemMin,\n voice_shift: notes[i].getVoiceShiftWidth(),\n is_displaced: notes[i].isDisplaced(),\n note: notes[i],\n });\n }\n let voices = 0;\n let noteU = undefined;\n let noteM = undefined;\n let noteL = undefined;\n const draw = [false, false, false];\n for (let i = 0; i < notesList.length; i++) {\n draw[i] = notesList[i].note.render_options.draw == false ? false : true;\n }\n if (draw[0] && draw[1] && draw[2]) {\n // Three visible notes\n voices = 3;\n noteU = notesList[0];\n noteM = notesList[1];\n noteL = notesList[2];\n }\n else if (draw[0] && draw[1]) {\n // Two visible notes, 0 & 1\n voices = 2;\n noteU = notesList[0];\n noteL = notesList[1];\n }\n else if (draw[0] && draw[2]) {\n // Two visible notes, 0 & 2\n voices = 2;\n noteU = notesList[0];\n noteL = notesList[2];\n }\n else if (draw[1] && draw[2]) {\n // Two visible notes, 1 & 2\n voices = 2;\n noteU = notesList[1];\n noteL = notesList[2];\n }\n else {\n // No shift required for less than 2 visible notes\n return true;\n }\n // for two voice backward compatibility, ensure upper voice is stems up\n // for three voices, the voices must be in order (upper, middle, lower)\n if (voices === 2 && noteU.stemDirection === -1 && noteL.stemDirection === 1) {\n noteU = notesList[1];\n noteL = notesList[0];\n }\n const voiceXShift = Math.max(noteU.voice_shift, noteL.voice_shift);\n let xShift = 0;\n // Test for two voice note intersection\n if (voices === 2) {\n const lineSpacing = noteU.note.hasStem() && noteL.note.hasStem() && noteU.stemDirection === noteL.stemDirection ? 0.0 : 0.5;\n if (noteL.isrest && noteU.isrest && noteU.note.duration === noteL.note.duration) {\n noteL.note.render_options.draw = false;\n }\n else if (noteU.minLine <= noteL.maxLine + lineSpacing) {\n if (noteU.isrest) {\n // shift rest up\n shiftRestVertical(noteU, noteL, 1);\n }\n else if (noteL.isrest) {\n // shift rest down\n shiftRestVertical(noteL, noteU, -1);\n }\n else {\n //Instead of shifting notes, remove the appropriate flag\n //If we are sharing a line, switch one notes stem direction.\n //If we are sharing a line and in the same voice, only then offset one note\n const lineDiff = Math.abs(noteU.line - noteL.line);\n if (noteU.note.hasStem() && noteL.note.hasStem()) {\n //If we have different dot values, must offset\n //Or If we have a white mixed with a black notehead, must offset\n let whiteNoteHeadCount = 0;\n let blackNoteHeadCount = 0;\n if (Tables.durationToNumber(noteU.note.duration) === 2) {\n whiteNoteHeadCount++;\n }\n else if (Tables.durationToNumber(noteU.note.duration) > 2) {\n blackNoteHeadCount++;\n }\n if (Tables.durationToNumber(noteL.note.duration) === 2) {\n whiteNoteHeadCount++;\n }\n else if (Tables.durationToNumber(noteL.note.duration) > 2) {\n blackNoteHeadCount++;\n }\n if ((whiteNoteHeadCount !== 2 && blackNoteHeadCount !== 2) ||\n noteU.note.getModifiersByType(Category.Dot).length !== noteL.note.getModifiersByType(Category.Dot).length) {\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (lineDiff < 1 && lineDiff > 0) {\n //if the notes are quite close but not on the same line, shift\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (noteU.note.voice !== noteL.note.voice) {\n //If we are not in the same voice\n if (noteU.stemDirection === noteL.stemDirection) {\n if (noteU.line != noteL.line) {\n xShift = voiceXShift + 2;\n noteU.note.setXShift(xShift);\n }\n else {\n //same line, swap stem direction for one note\n if (noteL.stemDirection === 1) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n }\n }\n } //Very close whole notes\n }\n else if (lineDiff < 1) {\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (noteU.note.hasStem()) {\n noteU.stemDirection = -noteU.note.getStemDirection();\n noteU.note.setStemDirection(noteU.stemDirection);\n }\n else if (noteL.note.hasStem()) {\n noteL.stemDirection = -noteL.note.getStemDirection();\n noteL.note.setStemDirection(noteL.stemDirection);\n }\n }\n }\n // format complete\n state.right_shift += xShift;\n return true;\n }\n if (!noteM)\n throw new RuntimeError('InvalidState', 'noteM not defined.');\n // For three voices, test if rests can be repositioned\n //\n // Special case 1 :: middle voice rest between two notes\n //\n if (noteM.isrest && !noteU.isrest && !noteL.isrest) {\n if (noteU.minLine <= noteM.maxLine || noteM.minLine <= noteL.maxLine) {\n const restHeight = noteM.maxLine - noteM.minLine;\n const space = noteU.minLine - noteL.maxLine;\n if (restHeight < space) {\n // center middle voice rest between the upper and lower voices\n centerRest(noteM, noteU, noteL);\n }\n else {\n xShift = voiceXShift + 2; // shift middle rest right\n noteM.note.setXShift(xShift);\n if (noteL.note.hasBeam() === false) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n if (noteU.minLine <= noteL.maxLine && noteU.note.hasBeam() === false) {\n noteU.stemDirection = 1;\n noteU.note.setStemDirection(1);\n }\n }\n // format complete\n state.right_shift += xShift;\n return true;\n }\n }\n // Special case 2 :: all voices are rests\n if (noteU.isrest && noteM.isrest && noteL.isrest) {\n // Hide upper voice rest\n noteU.note.render_options.draw = false;\n // Hide lower voice rest\n noteL.note.render_options.draw = false;\n // format complete\n state.right_shift += xShift;\n return true;\n }\n // Test if any other rests can be repositioned\n if (noteM.isrest && noteU.isrest && noteM.minLine <= noteL.maxLine) {\n // Hide middle voice rest\n noteM.note.render_options.draw = false;\n }\n if (noteM.isrest && noteL.isrest && noteU.minLine <= noteM.maxLine) {\n // Hide middle voice rest\n noteM.note.render_options.draw = false;\n }\n if (noteU.isrest && noteU.minLine <= noteM.maxLine) {\n // shift upper voice rest up;\n shiftRestVertical(noteU, noteM, 1);\n }\n if (noteL.isrest && noteM.minLine <= noteL.maxLine) {\n // shift lower voice rest down\n shiftRestVertical(noteL, noteM, -1);\n }\n // If middle voice intersects upper or lower voice\n if (noteU.minLine <= noteM.maxLine + 0.5 || noteM.minLine <= noteL.maxLine) {\n // shift middle note right\n xShift = voiceXShift + 2;\n noteM.note.setXShift(xShift);\n if (noteL.note.hasBeam() === false) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n if (noteU.minLine <= noteL.maxLine && noteU.note.hasBeam() === false) {\n noteU.stemDirection = 1;\n noteU.note.setStemDirection(1);\n }\n }\n state.right_shift += xShift;\n return true;\n }\n static postFormat(notes) {\n if (!notes)\n return false;\n notes.forEach((note) => note.postFormat());\n return true;\n }\n reset() {\n super.reset();\n // Save prior noteHead styles & reapply them after making new noteheads.\n const noteHeadStyles = this._noteHeads.map((noteHead) => noteHead.getStyle());\n this.buildNoteHeads();\n this._noteHeads.forEach((noteHead, index) => {\n const noteHeadStyle = noteHeadStyles[index];\n if (noteHeadStyle)\n noteHead.setStyle(noteHeadStyle);\n });\n const stave = this.stave;\n if (stave) {\n this._noteHeads.forEach((head) => head.setStave(stave));\n }\n this.calcNoteDisplacements();\n return this;\n }\n setBeam(beam) {\n this.beam = beam;\n this.calcNoteDisplacements();\n // Update stem extension if a beam is assigned.\n if (this.stem) {\n this.stem.setExtension(this.getStemExtension());\n }\n return this;\n }\n // Builds a `Stem` for the note\n buildStem() {\n this.setStem(new Stem({ hide: !!this.isRest() }));\n return this;\n }\n // Builds a `NoteHead` for each key in the note\n buildNoteHeads() {\n this._noteHeads = [];\n const stemDirection = this.getStemDirection();\n const keys = this.getKeys();\n let lastLine = undefined;\n let lineDiff = undefined;\n let displaced = false;\n // Draw notes from bottom to top.\n // For down-stem notes, we draw from top to bottom.\n let start;\n let end;\n let step;\n if (stemDirection === Stem.UP) {\n start = 0;\n end = keys.length;\n step = 1;\n }\n else {\n start = keys.length - 1;\n end = -1;\n step = -1;\n }\n for (let i = start; i !== end; i += step) {\n // Building noteheads rely on sortedKeNotes in order to calculate the displacements\n const noteProps = this.sortedKeyProps[i].keyProps;\n const line = noteProps.line;\n // Keep track of last line with a note head, so that consecutive heads\n // are correctly displaced.\n if (lastLine === undefined) {\n lastLine = line;\n }\n else {\n lineDiff = Math.abs(lastLine - line);\n if (lineDiff === 0 || lineDiff === 0.5) {\n displaced = !displaced;\n }\n else {\n displaced = false;\n this.use_default_head_x = true;\n }\n }\n lastLine = line;\n const notehead = new NoteHead({\n duration: this.duration,\n note_type: this.noteType,\n displaced,\n stem_direction: stemDirection,\n custom_glyph_code: noteProps.code,\n glyph_font_scale: this.render_options.glyph_font_scale,\n x_shift: noteProps.shift_right,\n stem_up_x_offset: noteProps.stem_up_x_offset,\n stem_down_x_offset: noteProps.stem_down_x_offset,\n line: noteProps.line,\n });\n this.addChildElement(notehead);\n this._noteHeads[this.sortedKeyProps[i].index] = notehead;\n }\n }\n // Automatically sets the stem direction based on the keys in the note\n autoStem() {\n this.setStemDirection(this.calculateOptimalStemDirection());\n }\n calculateOptimalStemDirection() {\n // Figure out optimal stem direction based on given notes\n // minLine & maxLine rely on sortedKeyProps\n this.minLine = this.sortedKeyProps[0].keyProps.line;\n this.maxLine = this.sortedKeyProps[this.keyProps.length - 1].keyProps.line;\n const MIDDLE_LINE = 3;\n const decider = (this.minLine + this.maxLine) / 2;\n const stemDirection = decider < MIDDLE_LINE ? Stem.UP : Stem.DOWN;\n return stemDirection;\n }\n // Calculates and stores the properties for each key in the note\n calculateKeyProps() {\n let lastLine;\n for (let i = 0; i < this.keys.length; ++i) {\n const key = this.keys[i];\n // All rests use the same position on the line.\n // if (this.glyph.rest) key = this.glyph.position;\n if (this.glyph.rest)\n this.glyph.position = key;\n const options = { octave_shift: this.octave_shift || 0, duration: this.duration };\n const props = Tables.keyProperties(key, this.clef, options);\n if (!props) {\n throw new RuntimeError('BadArguments', `Invalid key for note properties: ${key}`);\n }\n // Override line placement for default rests\n if (props.key === 'R') {\n if (this.duration === '1' || this.duration === 'w') {\n props.line = 4;\n }\n else {\n props.line = 3;\n }\n }\n // Calculate displacement of this note\n const line = props.line;\n if (lastLine == undefined) {\n lastLine = line;\n }\n else {\n if (Math.abs(lastLine - line) === 0.5) {\n this.displaced = true;\n props.displaced = true;\n // Have to mark the previous note as\n // displaced as well, for modifier placement\n if (this.keyProps.length > 0) {\n this.keyProps[i - 1].displaced = true;\n }\n }\n }\n lastLine = line;\n this.keyProps.push(props);\n }\n // Sort the notes from lowest line to highest line in sortedKeyProps\n // Warn no longer required as keyProps remains unsorted\n this.keyProps.forEach((keyProps, index) => {\n this.sortedKeyProps.push({ keyProps, index });\n });\n this.sortedKeyProps.sort((a, b) => a.keyProps.line - b.keyProps.line);\n }\n // Get the `BoundingBox` for the entire note\n getBoundingBox() {\n var _a, _b;\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getBoundingBox on an unformatted note.\");\n }\n const { width: w, modLeftPx, leftDisplacedHeadPx } = this.getMetrics();\n const x = this.getAbsoluteX() - modLeftPx - leftDisplacedHeadPx;\n let minY = 0;\n let maxY = 0;\n const halfLineSpacing = ((_b = (_a = this.getStave()) === null || _a === void 0 ? void 0 : _a.getSpacingBetweenLines()) !== null && _b !== void 0 ? _b : 0) / 2;\n const lineSpacing = halfLineSpacing * 2;\n if (this.isRest()) {\n const y = this.ys[0];\n const frac = Tables.durationToFraction(this.duration);\n if (frac.equals(1) || frac.equals(2)) {\n minY = y - halfLineSpacing;\n maxY = y + halfLineSpacing;\n }\n else {\n minY = y - this.glyph.line_above * lineSpacing;\n maxY = y + this.glyph.line_below * lineSpacing;\n }\n }\n else if (this.glyph.stem) {\n const ys = this.getStemExtents();\n ys.baseY += halfLineSpacing * this.getStemDirection();\n minY = Math.min(ys.topY, ys.baseY);\n maxY = Math.max(ys.topY, ys.baseY);\n }\n else {\n minY = 0;\n maxY = 0;\n for (let i = 0; i < this.ys.length; ++i) {\n const yy = this.ys[i];\n if (i === 0) {\n minY = yy;\n maxY = yy;\n }\n else {\n minY = Math.min(yy, minY);\n maxY = Math.max(yy, maxY);\n }\n }\n minY -= halfLineSpacing;\n maxY += halfLineSpacing;\n }\n return new BoundingBox(x, minY, w, maxY - minY);\n }\n // Gets the line number of the bottom note in the chord.\n // If `isTopNote` is `true` then get the top note's line number instead\n getLineNumber(isTopNote) {\n if (!this.keyProps.length) {\n throw new RuntimeError('NoKeyProps', \"Can't get bottom note line, because note is not initialized properly.\");\n }\n let resultLine = this.keyProps[0].line;\n // No precondition assumed for sortedness of keyProps array\n for (let i = 0; i < this.keyProps.length; i++) {\n const thisLine = this.keyProps[i].line;\n if (isTopNote) {\n if (thisLine > resultLine)\n resultLine = thisLine;\n }\n else {\n if (thisLine < resultLine)\n resultLine = thisLine;\n }\n }\n return resultLine;\n }\n /**\n * @returns true if this note is a type of rest. Rests don't have pitches, but take up space in the score.\n */\n isRest() {\n return this.glyph.rest;\n }\n // Determine if the current note is a chord\n isChord() {\n return !this.isRest() && this.keys.length > 1;\n }\n // Determine if the `StaveNote` has a stem\n hasStem() {\n return this.glyph.stem;\n }\n hasFlag() {\n return super.hasFlag() && !this.isRest();\n }\n getStemX() {\n if (this.noteType === 'r') {\n return this.getCenterGlyphX();\n }\n else {\n // We adjust the origin of the stem because we want the stem left-aligned\n // with the notehead if stemmed-down, and right-aligned if stemmed-up\n return super.getStemX() + (this.stem_direction ? Stem.WIDTH / (2 * -this.stem_direction) : 0);\n }\n }\n // Get the `y` coordinate for text placed on the top/bottom of a\n // note at a desired `text_line`\n getYForTopText(textLine) {\n const extents = this.getStemExtents();\n return Math.min(this.checkStave().getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1));\n }\n getYForBottomText(textLine) {\n const extents = this.getStemExtents();\n return Math.max(this.checkStave().getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine);\n }\n // Sets the current note to the provided `stave`. This applies\n // `y` values to the `NoteHeads`.\n setStave(stave) {\n super.setStave(stave);\n const ys = this._noteHeads.map((notehead) => {\n notehead.setStave(stave);\n return notehead.getY();\n });\n this.setYs(ys);\n if (this.stem) {\n const { y_top, y_bottom } = this.getNoteHeadBounds();\n this.stem.setYBounds(y_top, y_bottom);\n }\n return this;\n }\n // Check if note is shifted to the right\n isDisplaced() {\n return this.displaced;\n }\n // Sets whether shift note to the right. `displaced` is a `boolean`\n setNoteDisplaced(displaced) {\n this.displaced = displaced;\n return this;\n }\n // Get the starting `x` coordinate for a `StaveTie`\n getTieRightX() {\n let tieStartX = this.getAbsoluteX();\n tieStartX += this.getGlyphWidth() + this.x_shift + this.rightDisplacedHeadPx;\n if (this.modifierContext)\n tieStartX += this.modifierContext.getRightShift();\n return tieStartX;\n }\n // Get the ending `x` coordinate for a `StaveTie`\n getTieLeftX() {\n let tieEndX = this.getAbsoluteX();\n tieEndX += this.x_shift - this.leftDisplacedHeadPx;\n return tieEndX;\n }\n // Get the stave line on which to place a rest\n getLineForRest() {\n let restLine = this.keyProps[0].line;\n if (this.keyProps.length > 1) {\n const lastLine = this.keyProps[this.keyProps.length - 1].line;\n const top = Math.max(restLine, lastLine);\n const bot = Math.min(restLine, lastLine);\n restLine = midLine(top, bot);\n }\n return restLine;\n }\n // Get the default `x` and `y` coordinates for the provided `position`\n // and key `index`\n getModifierStartXY(position, index, options = {}) {\n var _a, _b;\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-Values calculated for this note.');\n }\n const { ABOVE, BELOW, LEFT, RIGHT } = Modifier.Position;\n let x = 0;\n if (position === LEFT) {\n // FIXME: Left modifier padding, move to font file\n x = -1 * 2;\n }\n else if (position === RIGHT) {\n // FIXME: Right modifier padding, move to font file\n x = this.getGlyphWidth() + this.x_shift + 2;\n if (this.stem_direction === Stem.UP &&\n this.hasFlag() &&\n (options.forceFlagRight || isInnerNoteIndex(this, index))) {\n x += (_b = (_a = this === null || this === void 0 ? void 0 : this.flag) === null || _a === void 0 ? void 0 : _a.getMetrics().width) !== null && _b !== void 0 ? _b : 0;\n }\n }\n else if (position === BELOW || position === ABOVE) {\n x = this.getGlyphWidth() / 2;\n }\n return {\n x: this.getAbsoluteX() + x,\n y: this.ys[index],\n };\n }\n // Sets the style of the complete StaveNote, including all keys\n // and the stem.\n setStyle(style) {\n return super.setGroupStyle(style);\n }\n setStemStyle(style) {\n const stem = this.getStem();\n if (stem)\n stem.setStyle(style);\n return this;\n }\n getStemStyle() {\n var _a;\n return (_a = this.stem) === null || _a === void 0 ? void 0 : _a.getStyle();\n }\n setLedgerLineStyle(style) {\n this.ledgerLineStyle = style;\n }\n getLedgerLineStyle() {\n return this.ledgerLineStyle;\n }\n setFlagStyle(style) {\n var _a;\n (_a = this.flag) === null || _a === void 0 ? void 0 : _a.setStyle(style);\n }\n getFlagStyle() {\n var _a;\n return (_a = this.flag) === null || _a === void 0 ? void 0 : _a.getStyle();\n }\n // Sets the notehead at `index` to the provided coloring `style`.\n //\n // `style` is an `object` with the following properties: `shadowColor`,\n // `shadowBlur`, `fillStyle`, `strokeStyle`\n setKeyStyle(index, style) {\n this._noteHeads[index].setStyle(style);\n return this;\n }\n setKeyLine(index, line) {\n this.keyProps[index].line = line;\n this.reset();\n return this;\n }\n getKeyLine(index) {\n return this.keyProps[index].line;\n }\n // Get the width of the note if it is displaced. Used for `Voice`\n // formatting\n getVoiceShiftWidth() {\n // TODO: may need to accommodate for dot here.\n return this.getGlyphWidth() * (this.displaced ? 2 : 1);\n }\n // Calculates and sets the extra pixels to the left or right\n // if the note is displaced.\n calcNoteDisplacements() {\n this.setLeftDisplacedHeadPx(this.displaced && this.stem_direction === Stem.DOWN ? this.getGlyphWidth() : 0);\n // For upstems with flags, the extra space is unnecessary, since it's taken\n // up by the flag.\n this.setRightDisplacedHeadPx(!this.hasFlag() && this.displaced && this.stem_direction === Stem.UP ? this.getGlyphWidth() : 0);\n }\n // Pre-render formatting\n preFormat() {\n if (this.preFormatted)\n return;\n let noteHeadPadding = 0;\n if (this.modifierContext) {\n this.modifierContext.preFormat();\n // If there are no modifiers on this note, make sure there is adequate padding\n // between the notes.\n if (this.modifierContext.getWidth() === 0) {\n noteHeadPadding = StaveNote.minNoteheadPadding;\n }\n }\n let width = this.getGlyphWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx + noteHeadPadding;\n // For upward flagged notes, the width of the flag needs to be added\n if (this.shouldDrawFlag() && this.stem_direction === Stem.UP) {\n width += this.getGlyphWidth();\n // TODO: Add flag width as a separate metric\n }\n this.setWidth(width);\n this.preFormatted = true;\n }\n /**\n * @typedef {Object} noteHeadBounds\n * @property {number} y_top the highest notehead bound\n * @property {number} y_bottom the lowest notehead bound\n * @property {number|Null} displaced_x the starting x for displaced noteheads\n * @property {number|Null} non_displaced_x the starting x for non-displaced noteheads\n * @property {number} highest_line the highest notehead line in traditional music line\n * numbering (bottom line = 1, top line = 5)\n * @property {number} lowest_line the lowest notehead line\n * @property {number|false} highest_displaced_line the highest staff line number\n * for a displaced notehead\n * @property {number|false} lowest_displaced_line\n * @property {number} highest_non_displaced_line\n * @property {number} lowest_non_displaced_line\n */\n /**\n * Get the staff line and y value for the highest & lowest noteheads\n * @returns {noteHeadBounds}\n */\n getNoteHeadBounds() {\n // Top and bottom Y values for stem.\n let yTop = +Infinity;\n let yBottom = -Infinity;\n let nonDisplacedX;\n let displacedX;\n let highestLine = this.checkStave().getNumLines();\n let lowestLine = 1;\n let highestDisplacedLine;\n let lowestDisplacedLine;\n let highestNonDisplacedLine = highestLine;\n let lowestNonDisplacedLine = lowestLine;\n this._noteHeads.forEach((notehead) => {\n const line = notehead.getLine();\n const y = notehead.getY();\n yTop = Math.min(y, yTop);\n yBottom = Math.max(y, yBottom);\n if (displacedX === undefined && notehead.isDisplaced()) {\n displacedX = notehead.getAbsoluteX();\n }\n if (nonDisplacedX === undefined && !notehead.isDisplaced()) {\n nonDisplacedX = notehead.getAbsoluteX();\n }\n highestLine = Math.max(line, highestLine);\n lowestLine = Math.min(line, lowestLine);\n if (notehead.isDisplaced()) {\n highestDisplacedLine = highestDisplacedLine === undefined ? line : Math.max(line, highestDisplacedLine);\n lowestDisplacedLine = lowestDisplacedLine === undefined ? line : Math.min(line, lowestDisplacedLine);\n }\n else {\n highestNonDisplacedLine = Math.max(line, highestNonDisplacedLine);\n lowestNonDisplacedLine = Math.min(line, lowestNonDisplacedLine);\n }\n }, this);\n return {\n y_top: yTop,\n y_bottom: yBottom,\n displaced_x: displacedX,\n non_displaced_x: nonDisplacedX,\n highest_line: highestLine,\n lowest_line: lowestLine,\n highest_displaced_line: highestDisplacedLine,\n lowest_displaced_line: lowestDisplacedLine,\n highest_non_displaced_line: highestNonDisplacedLine,\n lowest_non_displaced_line: lowestNonDisplacedLine,\n };\n }\n // Get the starting `x` coordinate for the noteheads\n getNoteHeadBeginX() {\n return this.getAbsoluteX() + this.x_shift;\n }\n // Get the ending `x` coordinate for the noteheads\n getNoteHeadEndX() {\n const xBegin = this.getNoteHeadBeginX();\n return xBegin + this.getGlyphWidth();\n }\n get noteHeads() {\n return this._noteHeads.slice();\n }\n /** @deprecated use StaveNote.noteHeads instead. */\n get note_heads() {\n showDeprecationWarningForNoteHeads();\n return this.noteHeads;\n }\n // Draw the ledger lines between the stave and the highest/lowest keys\n drawLedgerLines() {\n const stave = this.checkStave();\n const { glyph, render_options: { stroke_px }, } = this;\n const ctx = this.checkContext();\n const width = glyph.getWidth() + stroke_px * 2;\n const doubleWidth = 2 * (glyph.getWidth() + stroke_px) - Stem.WIDTH / 2;\n if (this.isRest())\n return;\n if (!ctx) {\n throw new RuntimeError('NoCanvasContext', \"Can't draw without a canvas context.\");\n }\n const { highest_line, lowest_line, highest_displaced_line, highest_non_displaced_line, lowest_displaced_line, lowest_non_displaced_line, displaced_x, non_displaced_x, } = this.getNoteHeadBounds();\n // Early out if there are no ledger lines to draw.\n if (highest_line < 6 && lowest_line > 0)\n return;\n const min_x = Math.min(displaced_x !== null && displaced_x !== void 0 ? displaced_x : 0, non_displaced_x !== null && non_displaced_x !== void 0 ? non_displaced_x : 0);\n const drawLedgerLine = (y, normal, displaced) => {\n let x;\n if (displaced && normal)\n x = min_x - stroke_px;\n else if (normal)\n x = (non_displaced_x !== null && non_displaced_x !== void 0 ? non_displaced_x : 0) - stroke_px;\n else\n x = (displaced_x !== null && displaced_x !== void 0 ? displaced_x : 0) - stroke_px;\n const ledgerWidth = normal && displaced ? doubleWidth : width;\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.lineTo(x + ledgerWidth, y);\n ctx.stroke();\n };\n const style = Object.assign(Object.assign({}, stave.getDefaultLedgerLineStyle()), this.getLedgerLineStyle());\n this.applyStyle(ctx, style);\n // Draw ledger lines below the staff:\n for (let line = 6; line <= highest_line; ++line) {\n const normal = non_displaced_x !== undefined && line <= highest_non_displaced_line;\n const displaced = highest_displaced_line !== undefined && line <= highest_displaced_line;\n drawLedgerLine(stave.getYForNote(line), normal, displaced);\n }\n // Draw ledger lines above the staff:\n for (let line = 0; line >= lowest_line; --line) {\n const normal = non_displaced_x !== undefined && line >= lowest_non_displaced_line;\n const displaced = lowest_displaced_line !== undefined && line >= lowest_displaced_line;\n drawLedgerLine(stave.getYForNote(line), normal, displaced);\n }\n this.restoreStyle(ctx, style);\n }\n // Draw all key modifiers\n drawModifiers(noteheadParam) {\n const ctx = this.checkContext();\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n const index = modifier.checkIndex();\n const notehead = this._noteHeads[index];\n if (notehead == noteheadParam) {\n const noteheadStyle = notehead.getStyle();\n notehead.applyStyle(ctx, noteheadStyle);\n modifier.setContext(ctx);\n modifier.drawWithStyle();\n notehead.restoreStyle(ctx, noteheadStyle);\n }\n }\n }\n shouldDrawFlag() {\n const hasStem = this.stem !== undefined;\n const hasFlag = this.glyph.flag; // specified in tables.js\n const hasNoBeam = this.beam === undefined;\n return hasStem && hasFlag && hasNoBeam;\n }\n // Draw the flag for the note\n drawFlag() {\n var _a, _b, _c, _d, _e;\n const ctx = this.checkContext();\n if (!ctx) {\n throw new RuntimeError('NoCanvasContext', \"Can't draw without a canvas context.\");\n }\n if (this.shouldDrawFlag()) {\n const { y_top, y_bottom } = this.getNoteHeadBounds();\n // eslint-disable-next-line\n const noteStemHeight = this.stem.getHeight();\n const flagX = this.getStemX();\n // What's with the magic +/- 2\n // ANSWER: a corner of the note stem pokes out beyond the tip of the flag.\n // The extra +/- 2 pushes the flag glyph outward so it covers the stem entirely.\n // Alternatively, we could shorten the stem.\n const flagY = this.getStemDirection() === Stem.DOWN\n ? // Down stems are below the note head and have flags on the right.\n y_top -\n noteStemHeight +\n 2 -\n (this.glyph ? this.glyph.stem_down_extension : 0) * this.getStaveNoteScale() -\n ((_b = (_a = this.flag) === null || _a === void 0 ? void 0 : _a.getMetrics().y_shift) !== null && _b !== void 0 ? _b : 0) * (1 - this.getStaveNoteScale())\n : // Up stems are above the note head and have flags on the right.\n y_bottom -\n noteStemHeight -\n 2 +\n (this.glyph ? this.glyph.stem_up_extension : 0) * this.getStaveNoteScale() -\n ((_d = (_c = this.flag) === null || _c === void 0 ? void 0 : _c.getMetrics().y_shift) !== null && _d !== void 0 ? _d : 0) * (1 - this.getStaveNoteScale());\n // Draw the Flag\n (_e = this.flag) === null || _e === void 0 ? void 0 : _e.render(ctx, flagX, flagY);\n }\n }\n // Draw the NoteHeads\n drawNoteHeads() {\n const ctx = this.checkContext();\n this._noteHeads.forEach((notehead) => {\n ctx.openGroup('notehead', notehead.getAttribute('id'), { pointerBBox: true });\n notehead.setContext(ctx).draw();\n this.drawModifiers(notehead);\n ctx.closeGroup();\n });\n }\n drawStem(stemOptions) {\n // GCR TODO: I can't find any context in which this is called with the stemStruct\n // argument in the codebase or tests. Nor can I find a case where super.drawStem\n // is called at all. Perhaps these should be removed?\n const ctx = this.checkContext();\n if (stemOptions) {\n this.setStem(new Stem(stemOptions));\n }\n // If we will render a flag, we shorten the stem so that the tip\n // does not poke through the flag.\n if (this.shouldDrawFlag() && this.stem) {\n this.stem.adjustHeightForFlag();\n }\n if (this.stem) {\n this.stem.setContext(ctx).draw();\n }\n }\n /** Primarily used as the scaling factor for grace notes, GraceNote will return the required scale. */\n getStaveNoteScale() {\n return 1.0;\n }\n /**\n * Override stemmablenote stem extension to adjust for distance from middle line.\n */\n getStemExtension() {\n const super_stem_extension = super.getStemExtension();\n if (!this.glyph.stem) {\n return super_stem_extension;\n }\n const stem_direction = this.getStemDirection();\n if (stem_direction !== this.calculateOptimalStemDirection()) {\n return super_stem_extension; // no adjustment for manually set stem direction.\n }\n let mid_line_distance;\n const MIDDLE_LINE = 3;\n if (stem_direction === Stem.UP) {\n // Note that the use of maxLine here instead of minLine might\n // seem counterintuitive, but in the case of (say) treble clef\n // chord(F2, E4) stem up, we do not want to extend the stem because\n // of F2, when a normal octave-length stem above E4 is fine.\n //\n // maxLine and minLine are set in calculateOptimalStemDirection() so\n // will be known.\n mid_line_distance = MIDDLE_LINE - this.maxLine;\n }\n else {\n mid_line_distance = this.minLine - MIDDLE_LINE;\n }\n // how many lines more than an octave is the relevant notehead?\n const lines_over_octave_from_mid_line = mid_line_distance - 3.5;\n if (lines_over_octave_from_mid_line <= 0) {\n return super_stem_extension;\n }\n const stave = this.getStave();\n let spacing_between_lines = 10;\n if (stave != undefined) {\n spacing_between_lines = stave.getSpacingBetweenLines();\n }\n return super_stem_extension + lines_over_octave_from_mid_line * spacing_between_lines;\n }\n // Draws all the `StaveNote` parts. This is the main drawing method.\n draw() {\n if (this.render_options.draw === false)\n return;\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', \"Can't draw note without Y values.\");\n }\n const ctx = this.checkContext();\n const xBegin = this.getNoteHeadBeginX();\n const shouldRenderStem = this.hasStem() && !this.beam;\n // Format note head x positions\n this._noteHeads.forEach((notehead) => notehead.setX(xBegin));\n if (this.stem) {\n // Format stem x positions\n const stemX = this.getStemX();\n this.stem.setNoteHeadXBounds(stemX, stemX);\n }\n L('Rendering ', this.isChord() ? 'chord :' : 'note :', this.keys);\n // Apply the overall style -- may be contradicted by local settings:\n this.applyStyle();\n ctx.openGroup('stavenote', this.getAttribute('id'));\n this.drawLedgerLines();\n if (shouldRenderStem)\n this.drawStem();\n this.drawNoteHeads();\n this.drawFlag();\n ctx.closeGroup();\n this.restoreStyle();\n this.setRendered();\n }\n}\nStaveNote.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveTie extends Element {\n /**\n * @param notes is a struct that has:\n *\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n *\n * @param text\n */\n constructor(notes, text) {\n super();\n this.setNotes(notes);\n this.text = text;\n this.render_options = {\n cp1: 8,\n cp2: 12,\n text_shift_x: 0,\n first_x_shift: 0,\n last_x_shift: 0,\n y_shift: 7,\n tie_spacing: 0,\n };\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveTie;\n }\n setDirection(direction) {\n this.direction = direction;\n return this;\n }\n /**\n * Set the notes to attach this tie to.\n *\n * @param {!Object} notes The notes to tie up.\n */\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Tie needs to have either first_note or last_note set.');\n }\n if (!notes.first_indices) {\n notes.first_indices = [0];\n }\n if (!notes.last_indices) {\n notes.last_indices = [0];\n }\n if (notes.first_indices.length !== notes.last_indices.length) {\n throw new RuntimeError('BadArguments', 'Tied notes must have same number of indices.');\n }\n this.notes = notes;\n return this;\n }\n /**\n * @return {boolean} Returns true if this is a partial bar.\n */\n isPartial() {\n return !this.notes.first_note || !this.notes.last_note;\n }\n renderTie(params) {\n if (params.first_ys.length === 0 || params.last_ys.length === 0) {\n throw new RuntimeError('BadArguments', 'No Y-values to render');\n }\n const ctx = this.checkContext();\n let cp1 = this.render_options.cp1;\n let cp2 = this.render_options.cp2;\n if (Math.abs(params.last_x_px - params.first_x_px) < 10) {\n cp1 = 2;\n cp2 = 8;\n }\n const first_x_shift = this.render_options.first_x_shift;\n const last_x_shift = this.render_options.last_x_shift;\n const y_shift = this.render_options.y_shift * params.direction;\n // setNotes(...) verified that first_indices and last_indices are not undefined.\n // As a result, we use the ! non-null assertion operator here.\n // eslint-disable-next-line\n const first_indices = this.notes.first_indices;\n // eslint-disable-next-line\n const last_indices = this.notes.last_indices;\n for (let i = 0; i < first_indices.length; ++i) {\n const cp_x = (params.last_x_px + last_x_shift + (params.first_x_px + first_x_shift)) / 2;\n const first_y_px = params.first_ys[first_indices[i]] + y_shift;\n const last_y_px = params.last_ys[last_indices[i]] + y_shift;\n if (isNaN(first_y_px) || isNaN(last_y_px)) {\n throw new RuntimeError('BadArguments', 'Bad indices for tie rendering.');\n }\n const top_cp_y = (first_y_px + last_y_px) / 2 + cp1 * params.direction;\n const bottom_cp_y = (first_y_px + last_y_px) / 2 + cp2 * params.direction;\n ctx.openGroup('stavetie', this.getAttribute('id'));\n ctx.beginPath();\n ctx.moveTo(params.first_x_px + first_x_shift, first_y_px);\n ctx.quadraticCurveTo(cp_x, top_cp_y, params.last_x_px + last_x_shift, last_y_px);\n ctx.quadraticCurveTo(cp_x, bottom_cp_y, params.first_x_px + first_x_shift, first_y_px);\n ctx.closePath();\n ctx.fill();\n ctx.closeGroup();\n }\n }\n renderText(first_x_px, last_x_px) {\n var _a, _b, _c;\n if (!this.text)\n return;\n const ctx = this.checkContext();\n let center_x = (first_x_px + last_x_px) / 2;\n center_x -= ctx.measureText(this.text).width / 2;\n const stave = (_b = (_a = this.notes.first_note) === null || _a === void 0 ? void 0 : _a.checkStave()) !== null && _b !== void 0 ? _b : (_c = this.notes.last_note) === null || _c === void 0 ? void 0 : _c.checkStave();\n if (stave) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText(this.text, center_x + this.render_options.text_shift_x, stave.getYForTopText() - 1);\n ctx.restore();\n }\n }\n /**\n * Returns the TieNotes structure of the first and last note this tie connects.\n */\n getNotes() {\n return this.notes;\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const first_note = this.notes.first_note;\n const last_note = this.notes.last_note;\n // Provide some default values so the compiler doesn't complain.\n let first_x_px = 0;\n let last_x_px = 0;\n let first_ys = [0];\n let last_ys = [0];\n let stem_direction = 0;\n if (first_note) {\n first_x_px = first_note.getTieRightX() + this.render_options.tie_spacing;\n stem_direction = first_note.getStemDirection();\n first_ys = first_note.getYs();\n }\n else if (last_note) {\n const stave = last_note.checkStave();\n first_x_px = stave.getTieStartX();\n first_ys = last_note.getYs();\n this.notes.first_indices = this.notes.last_indices;\n }\n if (last_note) {\n last_x_px = last_note.getTieLeftX() + this.render_options.tie_spacing;\n stem_direction = last_note.getStemDirection();\n last_ys = last_note.getYs();\n }\n else if (first_note) {\n const stave = first_note.checkStave();\n last_x_px = stave.getTieEndX();\n last_ys = first_note.getYs();\n this.notes.last_indices = this.notes.first_indices;\n }\n if (this.direction) {\n stem_direction = this.direction;\n }\n this.renderTie({\n first_x_px,\n last_x_px,\n first_ys,\n last_ys,\n direction: stem_direction,\n });\n this.renderText(first_x_px, last_x_px);\n return true;\n }\n}\n/** Default text font. */\nStaveTie.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","// / [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { StaveTie } from './stavetie';\nimport { Category } from './typeguard';\nexport class TabTie extends StaveTie {\n static get CATEGORY() {\n return Category.TabTie;\n }\n static createHammeron(notes) {\n return new TabTie(notes, 'H');\n }\n static createPulloff(notes) {\n return new TabTie(notes, 'P');\n }\n /**\n * @param notes is a struct that has:\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n *\n * @param text\n */\n constructor(notes, text) {\n super(notes, text);\n this.render_options.cp1 = 9;\n this.render_options.cp2 = 11;\n this.render_options.y_shift = 3;\n this.direction = -1; // Tab tie's are always face up.\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var VoiceMode;\n(function (VoiceMode) {\n VoiceMode[VoiceMode[\"STRICT\"] = 1] = \"STRICT\";\n VoiceMode[VoiceMode[\"SOFT\"] = 2] = \"SOFT\";\n VoiceMode[VoiceMode[\"FULL\"] = 3] = \"FULL\";\n})(VoiceMode || (VoiceMode = {}));\n/**\n * `Voice` is mainly a container object to group `Tickables` for formatting.\n */\nexport class Voice extends Element {\n constructor(time) {\n super();\n this.resolutionMultiplier = 1;\n this.mode = VoiceMode.STRICT;\n this.preFormatted = false;\n this.ticksUsed = new Fraction(0, 1);\n this.largestTickWidth = 0;\n this.tickables = [];\n this.options = {\n softmaxFactor: Tables.SOFTMAX_FACTOR,\n };\n // Convert the `time` string into a VoiceTime object if necessary.\n let voiceTime;\n if (typeof time === 'string') {\n // Time signature shortcut: \"4/4\", \"3/8\", etc.\n const match = time.match(/(\\d+)\\/(\\d+)/);\n if (match) {\n voiceTime = {\n num_beats: parseInt(match[1]),\n beat_value: parseInt(match[2]),\n };\n }\n }\n else {\n voiceTime = time;\n }\n // Default time signature is 4/4.\n this.time = Object.assign({ num_beats: 4, beat_value: 4, resolution: Tables.RESOLUTION }, voiceTime);\n // Recalculate total ticks.\n this.totalTicks = new Fraction(this.time.num_beats * (this.time.resolution / this.time.beat_value), 1);\n this.smallestTickCount = this.totalTicks.clone();\n }\n static get CATEGORY() {\n return Category.Voice;\n }\n /**\n * Modes allow the addition of ticks in three different ways:\n * - STRICT: This is the default. Ticks must fill the voice.\n * - SOFT: Ticks can be added without restrictions.\n * - FULL: Ticks do not need to fill the voice, but can't exceed the maximum tick length.\n */\n static get Mode() {\n return VoiceMode;\n }\n /** Get the total ticks in the voice. */\n getTotalTicks() {\n return this.totalTicks;\n }\n /** Get the total ticks used in the voice by all the tickables. */\n getTicksUsed() {\n return this.ticksUsed;\n }\n /** Get the largest width of all the tickables. */\n getLargestTickWidth() {\n return this.largestTickWidth;\n }\n /** Get the tick count for the shortest tickable */\n getSmallestTickCount() {\n return this.smallestTickCount;\n }\n /** Get the tickables in the voice. */\n getTickables() {\n return this.tickables;\n }\n /** Get the voice mode. */\n getMode() {\n return this.mode;\n }\n /**\n * Set the voice mode.\n * @param mode value from `VoiceMode`\n */\n setMode(mode) {\n this.mode = mode;\n return this;\n }\n /** Get the resolution multiplier for the voice. */\n getResolutionMultiplier() {\n return this.resolutionMultiplier;\n }\n /** Get the actual tick resolution for the voice. */\n getActualResolution() {\n return this.resolutionMultiplier * this.time.resolution;\n }\n /** Set the voice's stave. */\n setStave(stave) {\n this.stave = stave;\n // Reset the bounding box so we can reformat.\n this.boundingBox = undefined;\n return this;\n }\n getStave() {\n return this.stave;\n }\n /** Get the bounding box for the voice. */\n getBoundingBox() {\n if (!this.boundingBox) {\n const stave = this.checkStave();\n let boundingBox = undefined;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n tickable.setStave(stave);\n const bb = tickable.getBoundingBox();\n if (bb) {\n boundingBox = boundingBox ? boundingBox.mergeWith(bb) : bb;\n }\n }\n this.boundingBox = boundingBox;\n }\n return this.boundingBox;\n }\n /** Set the voice mode to strict or soft. */\n setStrict(strict) {\n this.mode = strict ? VoiceMode.STRICT : VoiceMode.SOFT;\n return this;\n }\n /** Determine if the voice is complete according to the voice mode. */\n isComplete() {\n if (this.mode === VoiceMode.STRICT || this.mode === VoiceMode.FULL) {\n return this.ticksUsed.equals(this.totalTicks);\n }\n else {\n return true;\n }\n }\n /**\n * We use softmax to layout the tickables proportional to the exponent of\n * their duration. The softmax factor is used to determine the 'linearness' of\n * the layout.\n *\n * The softmax of all the tickables in this voice should sum to 1.\n */\n setSoftmaxFactor(factor) {\n this.options.softmaxFactor = factor;\n return this;\n }\n /**\n * Calculate the sum of the exponents of all the ticks in this voice to use\n * as the denominator of softmax.\n */\n reCalculateExpTicksUsed() {\n const totalTicks = this.ticksUsed.value();\n const exp = (tickable) => Math.pow(this.options.softmaxFactor, tickable.getTicks().value() / totalTicks);\n this.expTicksUsed = this.tickables.map(exp).reduce((a, b) => a + b, 0);\n return this.expTicksUsed;\n }\n /** Get the softmax-scaled value of a tick duration. 'tickValue' is a number. */\n softmax(tickValue) {\n if (!this.expTicksUsed) {\n this.expTicksUsed = this.reCalculateExpTicksUsed();\n }\n const totalTicks = this.ticksUsed.value();\n const exp = (v) => Math.pow(this.options.softmaxFactor, v / totalTicks);\n const sm = exp(tickValue) / this.expTicksUsed;\n return sm;\n }\n /** Add a tickable to the voice. */\n addTickable(tickable) {\n if (!tickable.shouldIgnoreTicks()) {\n const ticks = tickable.getTicks();\n // Update the total ticks for this line.\n this.ticksUsed.add(ticks);\n this.expTicksUsed = 0; // reset\n if ((this.mode === VoiceMode.STRICT || this.mode === VoiceMode.FULL) &&\n this.ticksUsed.greaterThan(this.totalTicks)) {\n this.ticksUsed.subtract(ticks);\n throw new RuntimeError('BadArgument', 'Too many ticks.');\n }\n // Track the smallest tickable for formatting.\n if (ticks.lessThan(this.smallestTickCount)) {\n this.smallestTickCount = ticks.clone();\n }\n this.resolutionMultiplier = this.ticksUsed.denominator;\n // Expand total ticks using denominator from ticks used.\n this.totalTicks.add(0, this.ticksUsed.denominator);\n }\n // Add the tickable to the line.\n this.tickables.push(tickable);\n tickable.setVoice(this);\n return this;\n }\n /** Add an array of tickables to the voice. */\n addTickables(tickables) {\n for (let i = 0; i < tickables.length; ++i) {\n this.addTickable(tickables[i]);\n }\n return this;\n }\n /** Preformat the voice by applying the voice's stave to each note. */\n preFormat() {\n if (this.preFormatted)\n return this;\n const stave = this.checkStave();\n this.tickables.forEach((tickable) => {\n if (!tickable.getStave()) {\n tickable.setStave(stave);\n }\n });\n this.preFormatted = true;\n return this;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n /**\n * Render the voice onto the canvas `context` and an optional `stave`.\n * If `stave` is omitted, it is expected that the notes have staves\n * already set.\n *\n * This method also calculates the voice's boundingBox while drawing\n * the notes. Note the similarities with this.getBoundingBox().\n */\n draw(context = this.checkContext(), stave) {\n stave = stave !== null && stave !== void 0 ? stave : this.stave;\n this.setRendered();\n let boundingBox = undefined;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n // Set the stave if provided.\n if (stave) {\n tickable.setStave(stave);\n }\n defined(tickable.getStave(), 'MissingStave', 'The voice cannot draw tickables without staves.');\n const bb = tickable.getBoundingBox();\n if (bb) {\n boundingBox = boundingBox ? boundingBox.mergeWith(bb) : bb;\n }\n tickable.setContext(context);\n tickable.drawWithStyle();\n }\n this.boundingBox = boundingBox;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This file implements `GraceNoteGroup` which is used to format and\n// render grace notes.\nimport { Beam } from './beam';\nimport { Formatter } from './formatter';\nimport { Modifier } from './modifier';\nimport { StaveNote } from './stavenote';\nimport { StaveTie } from './stavetie';\nimport { Tables } from './tables';\nimport { TabTie } from './tabtie';\nimport { Category, isStaveNote } from './typeguard';\nimport { log } from './util';\nimport { Voice } from './voice';\n// To enable logging for this class. Set `GraceNoteGroup.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (GraceNoteGroup.DEBUG)\n log('Vex.Flow.GraceNoteGroup', args);\n}\n/** GraceNoteGroup is used to format and render grace notes. */\nexport class GraceNoteGroup extends Modifier {\n //** `GraceNoteGroup` inherits from `Modifier` and is placed inside a `ModifierContext`. */\n constructor(grace_notes, show_slur) {\n super();\n this.preFormatted = false;\n this.position = Modifier.Position.LEFT;\n this.grace_notes = grace_notes;\n this.width = 0;\n this.show_slur = show_slur;\n this.slur = undefined;\n this.voice = new Voice({\n num_beats: 4,\n beat_value: 4,\n resolution: Tables.RESOLUTION,\n }).setStrict(false);\n this.render_options = {\n slur_y_shift: 0,\n };\n this.beams = [];\n this.voice.addTickables(this.grace_notes);\n return this;\n }\n static get CATEGORY() {\n return Category.GraceNoteGroup;\n }\n /** Arranges groups inside a `ModifierContext`. */\n static format(gracenote_groups, state) {\n const group_spacing_stave = 4;\n const group_spacing_tab = 0;\n if (!gracenote_groups || gracenote_groups.length === 0)\n return false;\n const group_list = [];\n let prev_note = null;\n let shiftL = 0;\n for (let i = 0; i < gracenote_groups.length; ++i) {\n const gracenote_group = gracenote_groups[i];\n const note = gracenote_group.getNote();\n const is_stavenote = isStaveNote(note);\n const spacing = is_stavenote ? group_spacing_stave : group_spacing_tab;\n if (is_stavenote && note !== prev_note) {\n // Iterate through all notes to get the displaced pixels\n for (let n = 0; n < note.keys.length; ++n) {\n shiftL = Math.max(note.getLeftDisplacedHeadPx(), shiftL);\n }\n prev_note = note;\n }\n group_list.push({ shift: shiftL, gracenote_group, spacing });\n }\n // If first note left shift in case it is displaced\n let group_shift = group_list[0].shift;\n let formatWidth;\n for (let i = 0; i < group_list.length; ++i) {\n const gracenote_group = group_list[i].gracenote_group;\n gracenote_group.preFormat();\n formatWidth = gracenote_group.getWidth() + group_list[i].spacing;\n group_shift = Math.max(formatWidth, group_shift);\n }\n for (let i = 0; i < group_list.length; ++i) {\n const gracenote_group = group_list[i].gracenote_group;\n formatWidth = gracenote_group.getWidth() + group_list[i].spacing;\n gracenote_group.setSpacingFromNextModifier(group_shift - Math.min(formatWidth, group_shift) + StaveNote.minNoteheadPadding);\n }\n state.left_shift += group_shift;\n return true;\n }\n preFormat() {\n if (this.preFormatted)\n return;\n if (!this.formatter) {\n this.formatter = new Formatter();\n }\n this.formatter.joinVoices([this.voice]).format([this.voice], 0, {});\n this.setWidth(this.formatter.getMinTotalWidth());\n this.preFormatted = true;\n }\n beamNotes(grace_notes) {\n grace_notes = grace_notes || this.grace_notes;\n if (grace_notes.length > 1) {\n const beam = new Beam(grace_notes);\n beam.render_options.beam_width = 3;\n beam.render_options.partial_beam_length = 4;\n this.beams.push(beam);\n }\n return this;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getWidth() {\n return this.width + StaveNote.minNoteheadPadding;\n }\n getGraceNotes() {\n return this.grace_notes;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n L('Drawing grace note group for:', note);\n this.alignSubNotesWithNote(this.getGraceNotes(), note); // Modifier function\n // Draw grace notes.\n this.grace_notes.forEach((graceNote) => graceNote.setContext(ctx).draw());\n // Draw beams.\n this.beams.forEach((beam) => beam.setContext(ctx).draw());\n if (this.show_slur) {\n // Create and draw slur.\n const is_stavenote = isStaveNote(note);\n const TieClass = is_stavenote ? StaveTie : TabTie;\n this.slur = new TieClass({\n last_note: this.grace_notes[0],\n first_note: note,\n first_indices: [0],\n last_indices: [0],\n });\n this.slur.render_options.cp2 = 12;\n this.slur.render_options.y_shift = (is_stavenote ? 7 : 5) + this.render_options.slur_y_shift;\n this.slur.setContext(ctx).draw();\n }\n }\n}\nGraceNoteGroup.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2016\n//\n// ## Description\n//\n// This file implements `NoteSubGroup` which is used to format and\n// render notes as a `Modifier`\n// ex) ClefNote, TimeSigNote and BarNote.\nimport { Formatter } from './formatter';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { Voice } from './voice';\nexport class NoteSubGroup extends Modifier {\n constructor(subNotes) {\n super();\n this.preFormatted = false;\n this.position = Modifier.Position.LEFT;\n this.subNotes = subNotes;\n this.subNotes.forEach((subNote) => {\n subNote.setIgnoreTicks(false);\n });\n this.width = 0;\n this.formatter = new Formatter();\n this.voice = new Voice({\n num_beats: 4,\n beat_value: 4,\n resolution: Tables.RESOLUTION,\n }).setStrict(false);\n this.voice.addTickables(this.subNotes);\n }\n static get CATEGORY() {\n return Category.NoteSubGroup;\n }\n // Arrange groups inside a `ModifierContext`\n static format(groups, state) {\n if (!groups || groups.length === 0)\n return false;\n let width = 0;\n for (let i = 0; i < groups.length; ++i) {\n const group = groups[i];\n group.preFormat();\n width += group.getWidth();\n }\n state.left_shift += width;\n return true;\n }\n preFormat() {\n if (this.preFormatted)\n return;\n this.formatter.joinVoices([this.voice]).format([this.voice], 0);\n this.setWidth(this.formatter.getMinTotalWidth());\n this.preFormatted = true;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getWidth() {\n return this.width;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n this.alignSubNotesWithNote(this.subNotes, note); // Modifier function\n this.subNotes.forEach((subNote) => subNote.setContext(ctx).drawWithStyle());\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// A formatter for abstract tickable objects, such as notes, chords,\n// tabs, etc.\nimport { Fraction } from './fraction';\nimport { RuntimeError } from './util';\n/**\n * TickContext formats abstract tickable objects, such as notes, chords, tabs, etc.\n */\nexport class TickContext {\n constructor(options) {\n this.preFormatted = false;\n this.postFormatted = false;\n this.tickID = options && options.tickID ? options.tickID : 0;\n this.currentTick = new Fraction(0, 1);\n this.maxTicks = new Fraction(0, 1);\n this.maxTickable = undefined; // Biggest tickable\n this.minTicks = undefined; // this can remian null if all tickables have ignore_ticks\n this.minTickable = undefined;\n this.padding = 1; // padding on each side (width += padding * 2)\n this.x = 0;\n this.xBase = 0; // base x position without xOffset\n this.xOffset = 0; // xBase and xOffset are an alternative way to describe x (x = xB + xO)\n this.tickables = []; // Notes, tabs, chords, lyrics.\n this.tickablesByVoice = {}; // Tickables indexed by voice number\n // Formatting metrics\n this.notePx = 0; // width of widest note in this context\n this.glyphPx = 0; // width of glyph (note head)\n this.leftDisplacedHeadPx = 0; // Extra left pixels for displaced notes\n this.rightDisplacedHeadPx = 0; // Extra right pixels for displaced notes\n this.modLeftPx = 0; // Left modifier pixels\n this.modRightPx = 0; // Right modifier pixels\n this.totalLeftPx = 0; // Total left pixels\n this.totalRightPx = 0; // Total right pixels\n this.tContexts = []; // Parent array of tick contexts\n this.width = 0;\n this.formatterMetrics = {\n // The freedom of a tickcontext is the distance it can move without colliding\n // with neighboring elements. A formatter can set these values during its\n // formatting pass, which a different formatter can then use to fine tune.\n freedom: { left: 0, right: 0 },\n };\n }\n static getNextContext(tContext) {\n const contexts = tContext.tContexts;\n const index = contexts.indexOf(tContext);\n if (index + 1 < contexts.length)\n return contexts[index + 1];\n }\n getTickID() {\n return this.tickID;\n }\n getX() {\n return this.x;\n }\n setX(x) {\n this.x = x;\n this.xBase = x;\n this.xOffset = 0;\n return this;\n }\n getXBase() {\n return this.xBase;\n } // use of xBase and xOffset is optional, avoids offset creep\n setXBase(xBase) {\n this.xBase = xBase;\n this.x = xBase + this.xOffset;\n }\n getXOffset() {\n return this.xOffset;\n }\n setXOffset(xOffset) {\n this.xOffset = xOffset;\n this.x = this.xBase + xOffset;\n }\n getWidth() {\n return this.width + this.padding * 2;\n }\n setPadding(padding) {\n this.padding = padding;\n return this;\n }\n getMaxTicks() {\n return this.maxTicks;\n }\n getMinTicks() {\n return this.minTicks;\n }\n getMaxTickable() {\n return this.maxTickable;\n }\n getMinTickable() {\n return this.minTickable;\n }\n getTickables() {\n return this.tickables;\n }\n /**\n * Introduced on 2020-04-17 as getTickablesForVoice(voiceIndex).\n * https://github.com/0xfe/vexflow/blame/dc97b0cc5bb93171c0038638c34362dc958222ca/src/tickcontext.js#L63\n * Renamed on 2021-08-05 to getTickableForVoice(voiceIndex). Method renamed to singular, since it returns one Tickable.\n */\n getTickableForVoice(voiceIndex) {\n return this.tickablesByVoice[voiceIndex];\n }\n getTickablesByVoice() {\n return this.tickablesByVoice;\n }\n getCenterAlignedTickables() {\n return this.tickables.filter((tickable) => tickable.isCenterAligned());\n }\n /** Gets widths context, note and left/right modifiers for formatting. */\n getMetrics() {\n const { width, glyphPx, notePx, leftDisplacedHeadPx, rightDisplacedHeadPx, modLeftPx, modRightPx, totalLeftPx, totalRightPx, } = this;\n return {\n width,\n glyphPx,\n notePx,\n leftDisplacedHeadPx,\n rightDisplacedHeadPx,\n modLeftPx,\n modRightPx,\n totalLeftPx,\n totalRightPx,\n };\n }\n getCurrentTick() {\n return this.currentTick;\n }\n setCurrentTick(tick) {\n this.currentTick = tick;\n this.preFormatted = false;\n }\n addTickable(tickable, voiceIndex) {\n if (!tickable) {\n throw new RuntimeError('BadArgument', 'Invalid tickable added.');\n }\n if (!tickable.shouldIgnoreTicks()) {\n const ticks = tickable.getTicks();\n if (ticks.greaterThan(this.maxTicks)) {\n this.maxTicks = ticks.clone();\n this.maxTickable = tickable;\n }\n if (this.minTicks == null) {\n this.minTicks = ticks.clone();\n this.minTickable = tickable;\n }\n else if (ticks.lessThan(this.minTicks)) {\n this.minTicks = ticks.clone();\n this.minTickable = tickable;\n }\n }\n tickable.setTickContext(this);\n this.tickables.push(tickable);\n this.tickablesByVoice[voiceIndex || 0] = tickable;\n this.preFormatted = false;\n return this;\n }\n preFormat() {\n if (this.preFormatted)\n return this;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n tickable.preFormat();\n const metrics = tickable.getMetrics();\n // Maintain max displaced head pixels from all tickables in the context\n this.leftDisplacedHeadPx = Math.max(this.leftDisplacedHeadPx, metrics.leftDisplacedHeadPx);\n this.rightDisplacedHeadPx = Math.max(this.rightDisplacedHeadPx, metrics.rightDisplacedHeadPx);\n // Maintain the widest note for all tickables in the context\n this.notePx = Math.max(this.notePx, metrics.notePx);\n // Maintain the widest note head\n this.glyphPx = Math.max(this.glyphPx, metrics.glyphWidth || 0);\n // Total modifier shift\n this.modLeftPx = Math.max(this.modLeftPx, metrics.modLeftPx);\n this.modRightPx = Math.max(this.modRightPx, metrics.modRightPx);\n // Total shift\n this.totalLeftPx = Math.max(this.totalLeftPx, metrics.modLeftPx + metrics.leftDisplacedHeadPx);\n this.totalRightPx = Math.max(this.totalRightPx, metrics.modRightPx + metrics.rightDisplacedHeadPx);\n // Recalculate the tick context total width\n this.width = this.notePx + this.totalLeftPx + this.totalRightPx;\n }\n return this;\n }\n postFormat() {\n if (this.postFormatted)\n return this;\n this.postFormatted = true;\n return this;\n }\n getFormatterMetrics() {\n return this.formatterMetrics;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TickContext } from './tickcontext';\nimport { Category, isTabNote } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Ornament.DEBUG)\n log('Vex.Flow.Ornament', args);\n}\n/**\n * Ornament implements ornaments as modifiers that can be\n * attached to notes. The complete list of ornaments is available in\n * `tables.ts` under `Vex.Flow.ornamentCodes`.\n *\n * See `tests/ornament_tests.ts` for usage examples.\n */\nexport class Ornament extends Modifier {\n /**\n * Create a new ornament of type `type`, which is an entry in\n * `Vex.Flow.ornamentCodes` in `tables.ts`.\n */\n constructor(type) {\n super();\n this.type = type;\n this.delayed = false;\n this.render_options = {\n font_scale: 38,\n accidentalLowerPadding: 3,\n accidentalUpperPadding: 3,\n };\n this.ornament = Tables.ornamentCodes(this.type);\n // new ornaments have their origin at the origin, and have more specific\n // metrics. Legacy ornaments do some\n // x scaling, and have hard-coded metrics\n const metrics = this.getMetrics();\n // some jazz ornaments are above or below depending on stem direction.\n this.adjustForStemDirection = false;\n // some jazz ornaments like falls are supposed to overlap with future bars\n // and so we report a different width than they actually take up.\n this.reportedWidth = metrics && metrics.reportedWidth ? metrics.reportedWidth : 0;\n this.stemUpYOffset = metrics && metrics.stemUpYOffset ? metrics.stemUpYOffset : 0;\n this.ornamentAlignWithNoteHead = Ornament.ornamentAlignWithNoteHead.indexOf(this.type) >= 0;\n if (!this.ornament) {\n throw new RuntimeError('ArgumentError', `Ornament not found: '${this.type}'`);\n }\n this.x_shift = metrics ? metrics.xOffset : 0;\n this.y_shift = metrics ? metrics.yOffset : 0;\n this.glyph = new Glyph(this.ornament.code, this.render_options.font_scale, {\n category: `ornament.${this.ornament.code}`,\n });\n // Is this a jazz ornament that goes between this note and the next note.\n if (Ornament.ornamentNoteTransition.indexOf(this.type) >= 0) {\n this.delayed = true;\n }\n // Legacy ornaments need this. I don't know why, but horizontal spacing issues\n // happen if I don't set it.\n if (!metrics) {\n this.glyph.setOrigin(0.5, 1.0); // FIXME: SMuFL won't require a vertical origin shift\n }\n }\n /** Ornaments category string. */\n static get CATEGORY() {\n return Category.Ornament;\n }\n static get minPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Arrange ornaments inside `ModifierContext` */\n static format(ornaments, state) {\n if (!ornaments || ornaments.length === 0)\n return false;\n let width = 0; // width is used by ornaments, which are always centered on the note head\n let right_shift = state.right_shift; // jazz ornaments calculate r/l shift separately\n let left_shift = state.left_shift;\n let yOffset = 0;\n for (let i = 0; i < ornaments.length; ++i) {\n const ornament = ornaments[i];\n const increment = 2;\n if (Ornament.ornamentRelease.indexOf(ornament.type) >= 0) {\n ornament.x_shift += right_shift + 2;\n }\n if (Ornament.ornamentAttack.indexOf(ornament.type) >= 0) {\n ornament.x_shift -= left_shift + 2;\n }\n if (ornament.reportedWidth && ornament.x_shift < 0) {\n left_shift += ornament.reportedWidth;\n }\n else if (ornament.reportedWidth && ornament.x_shift >= 0) {\n right_shift += ornament.reportedWidth + Ornament.minPadding;\n }\n else {\n width = Math.max(ornament.getWidth(), width);\n }\n // articulations above/below the line can be stacked.\n if (Ornament.ornamentArticulation.indexOf(ornament.type) >= 0) {\n // Unfortunately we don't know the stem direction. So we base it\n // on the line number, but also allow it to be overridden.\n const ornamentNote = defined(ornament.note, 'NoAttachedNote');\n if (ornamentNote.getLineNumber() >= 3 || ornament.getPosition() === Modifier.Position.ABOVE) {\n state.top_text_line += increment;\n ornament.y_shift += yOffset;\n yOffset -= ornament.glyph.bbox.getH();\n }\n else {\n state.text_line += increment;\n ornament.y_shift += yOffset;\n yOffset += ornament.glyph.bbox.getH();\n }\n }\n else {\n if (ornament.getPosition() === Modifier.Position.ABOVE) {\n ornament.setTextLine(state.top_text_line);\n state.top_text_line += increment;\n }\n else {\n ornament.setTextLine(state.text_line);\n state.text_line += increment;\n }\n }\n }\n // Note: 'legit' ornaments don't consider other modifiers when calculating their\n // X position, but jazz ornaments sometimes need to.\n state.left_shift = left_shift + width / 2;\n state.right_shift = right_shift + width / 2;\n return true;\n }\n /**\n * ornamentNoteTransition means the jazz ornament represents an effect from one note to another,\n * these are generally on the top of the staff.\n */\n static get ornamentNoteTransition() {\n return ['flip', 'jazzTurn', 'smear'];\n }\n /**\n * ornamentAttack indicates something that happens in the attach, placed before the note and\n * any accidentals\n */\n static get ornamentAttack() {\n return ['scoop'];\n }\n /**\n * The ornament is aligned based on the note head, but without regard to whether the\n * stem goes up or down.\n */\n static get ornamentAlignWithNoteHead() {\n return ['doit', 'fall', 'fallLong', 'doitLong', 'bend', 'plungerClosed', 'plungerOpen', 'scoop'];\n }\n /**\n * An ornament that happens on the release of the note, generally placed after the\n * note and overlapping the next beat/measure..\n */\n static get ornamentRelease() {\n return ['doit', 'fall', 'fallLong', 'doitLong', 'jazzTurn', 'smear', 'flip'];\n }\n /** ornamentArticulation goes above/below the note based on space availablity */\n static get ornamentArticulation() {\n return ['bend', 'plungerClosed', 'plungerOpen'];\n }\n /**\n * Legacy ornaments have hard-coded metrics. If additional ornament types are\n * added, get their metrics here.\n */\n // eslint-disable-next-line\n getMetrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.jazzOrnaments[this.ornament.code];\n }\n /** Set whether the ornament is to be delayed. */\n setDelayed(delayed) {\n this.delayed = delayed;\n return this;\n }\n /** Set the upper accidental for the ornament. */\n setUpperAccidental(accid) {\n const scale = this.render_options.font_scale / 1.3;\n this.accidentalUpper = new Glyph(Tables.accidentalCodes(accid).code, scale);\n this.accidentalUpper.setOrigin(0.5, 1.0);\n return this;\n }\n /** Set the lower accidental for the ornament. */\n setLowerAccidental(accid) {\n const scale = this.render_options.font_scale / 1.3;\n this.accidentalLower = new Glyph(Tables.accidentalCodes(accid).code, scale);\n this.accidentalLower.setOrigin(0.5, 1.0);\n return this;\n }\n /** Render ornament in position next to note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stemDir = note.getStemDirection();\n const stave = note.checkStave();\n ctx.openGroup('ornament', this.getAttribute('id'));\n // Get stem extents\n const stemExtents = note.checkStem().getExtents();\n let y = stemDir === Stem.DOWN ? stemExtents.baseY : stemExtents.topY;\n // TabNotes don't have stems attached to them. Tab stems are rendered outside the stave.\n if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDir === Stem.DOWN) {\n y = stave.getYForTopText(this.text_line);\n }\n }\n else {\n // Without a stem\n y = stave.getYForTopText(this.text_line);\n }\n }\n const isPlacedOnNoteheadSide = stemDir === Stem.DOWN;\n const spacing = stave.getSpacingBetweenLines();\n let lineSpacing = 1;\n // Beamed stems are longer than quarter note stems, adjust accordingly\n if (!isPlacedOnNoteheadSide && note.hasBeam()) {\n lineSpacing += 0.5;\n }\n const totalSpacing = spacing * (this.text_line + lineSpacing);\n const glyphYBetweenLines = y - totalSpacing;\n // Get initial coordinates for the modifier position\n const start = note.getModifierStartXY(this.position, this.index);\n let glyphX = start.x;\n // If the ornament is aligned with the note head, don't consider the stave y\n // but use the 'natural' modifier y\n let glyphY = this.ornamentAlignWithNoteHead\n ? start.y\n : Math.min(stave.getYForTopText(this.text_line), glyphYBetweenLines);\n glyphY += this.y_shift;\n // Ajdust x position if ornament is delayed\n if (this.delayed) {\n let delayXShift = 0;\n const startX = glyphX - (stave.getX() - 10);\n if (this.delayXShift !== undefined) {\n delayXShift = this.delayXShift;\n }\n else {\n delayXShift += this.glyph.getMetrics().width / 2;\n const nextContext = TickContext.getNextContext(note.getTickContext());\n if (nextContext) {\n delayXShift += (nextContext.getX() - startX) * 0.5;\n }\n else {\n delayXShift += (stave.getX() + stave.getWidth() - startX) * 0.5;\n }\n this.delayXShift = delayXShift;\n }\n glyphX += delayXShift;\n }\n L('Rendering ornament: ', this.ornament, glyphX, glyphY);\n if (this.accidentalLower) {\n this.accidentalLower.render(ctx, glyphX, glyphY);\n glyphY -= this.accidentalLower.getMetrics().height;\n glyphY -= this.render_options.accidentalLowerPadding;\n }\n if (this.stemUpYOffset && note.hasStem() && note.getStemDirection() === 1) {\n glyphY += this.stemUpYOffset;\n }\n if (note.getLineNumber() < 5 && Ornament.ornamentNoteTransition.indexOf(this.type) >= 0) {\n glyphY = note.checkStave().getBoundingBox().getY() + 40;\n }\n this.glyph.render(ctx, glyphX + this.x_shift, glyphY);\n if (this.accidentalUpper) {\n glyphY -= this.glyph.getMetrics().height + this.render_options.accidentalUpperPadding;\n this.accidentalUpper.render(ctx, glyphX, glyphY);\n }\n ctx.closeGroup();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Ornament.DEBUG` to `true`. */\nOrnament.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Rodrigo Vilar\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Tables } from './tables';\nimport { Category, isGraceNote } from './typeguard';\n/** Parenthesis implements parenthesis modifiers for notes. */\nexport class Parenthesis extends Modifier {\n /**\n * Constructor\n *\n * @param position Modifier.Position.LEFT (default) or Modifier.Position.RIGHT\n */\n constructor(position) {\n super();\n this.position = position !== null && position !== void 0 ? position : Modifier.Position.LEFT;\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.default.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.default.width'));\n }\n static get CATEGORY() {\n return Category.Parenthesis;\n }\n /** Add parentheses to the notes. */\n static buildAndAttach(notes) {\n for (const note of notes) {\n for (let i = 0; i < note.keys.length; i++) {\n note.addModifier(new Parenthesis(ModifierPosition.LEFT), i);\n note.addModifier(new Parenthesis(ModifierPosition.RIGHT), i);\n }\n }\n }\n /** Arrange parentheses inside a ModifierContext. */\n static format(parentheses, state) {\n if (!parentheses || parentheses.length === 0)\n return false;\n let x_widthL = 0;\n let x_widthR = 0;\n for (let i = 0; i < parentheses.length; ++i) {\n const parenthesis = parentheses[i];\n const note = parenthesis.getNote();\n const pos = parenthesis.getPosition();\n const index = parenthesis.checkIndex();\n let shift = 0;\n if (pos === ModifierPosition.RIGHT) {\n shift = note.getRightParenthesisPx(index);\n x_widthR = x_widthR > shift + parenthesis.width ? x_widthR : shift + parenthesis.width;\n }\n if (pos === ModifierPosition.LEFT) {\n shift = note.getLeftParenthesisPx(index);\n x_widthL = x_widthL > shift + parenthesis.width ? x_widthL : shift + parenthesis.width;\n }\n parenthesis.setXShift(shift);\n }\n state.left_shift += x_widthL;\n state.right_shift += x_widthR;\n return true;\n }\n /** Set the associated note. */\n setNote(note) {\n this.note = note;\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.default.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.default.width'));\n if (isGraceNote(note)) {\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.gracenote.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.gracenote.width'));\n }\n return this;\n }\n /** Render the parenthesis. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index, { forceFlagRight: true });\n const x = start.x + this.x_shift;\n const y = start.y + this.y_shift;\n if (this.position == Modifier.Position.RIGHT) {\n Glyph.renderGlyph(ctx, x + 1, y, this.point, 'noteheadParenthesisRight', {\n category: `noteHead.standard.noteheadParenthesisRight`,\n });\n }\n else if (this.position == Modifier.Position.LEFT) {\n Glyph.renderGlyph(ctx, x - 2, y, this.point, 'noteheadParenthesisLeft', {\n category: `noteHead.standard.noteheadParenthesisLeft`,\n });\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Ron B. Yeh\n// MIT License\n//\n// Utilities for working with Web APIs.\n// See: https://developer.mozilla.org/en-US/docs/Web/API\nimport { globalObject } from './util';\n// eslint-disable-next-line\nexport function isHTMLCanvas(element) {\n if (!element)\n return false;\n const global = globalObject();\n return (\n // It's either an instance of the HTMLCanvasElement class,\n (typeof global.HTMLCanvasElement === 'function' && element instanceof global.HTMLCanvasElement) ||\n // OR it's pretending to be a element. Good enough!\n // Do not rely on .tagName, because node-canvas doesn't provide a tagName.\n (typeof element.getContext === 'function' && typeof element.toDataURL === 'function'));\n}\n// eslint-disable-next-line\nexport function isHTMLDiv(element) {\n if (!element)\n return false;\n const global = globalObject();\n return (\n // It's either an instance of the HTMLDivElement class.\n (typeof global.HTMLDivElement === 'function' && element instanceof global.HTMLDivElement) ||\n // OR it's pretending to be a
. See: svgcontext.ts.\n (typeof element.appendChild === 'function' && typeof element.style === 'object'));\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from './font';\nimport { RenderContext } from './rendercontext';\nimport { globalObject, warn } from './util';\nimport { isHTMLCanvas } from './web';\n/**\n * A rendering context for the Canvas backend. This class serves as a proxy for the\n * underlying CanvasRenderingContext2D object, part of the browser's API.\n */\nexport class CanvasContext extends RenderContext {\n constructor(context) {\n super();\n /** Height of one line of text (in pixels). */\n this.textHeight = 0;\n this.context2D = context;\n if (!context.canvas) {\n this.canvas = {\n width: CanvasContext.WIDTH,\n height: CanvasContext.HEIGHT,\n };\n }\n else {\n this.canvas = context.canvas;\n }\n }\n static get WIDTH() {\n return 600;\n }\n static get HEIGHT() {\n return 400;\n }\n static get CANVAS_BROWSER_SIZE_LIMIT() {\n return 32767; // Chrome/Firefox. Could be determined more precisely by npm module canvas-size.\n }\n /**\n * Ensure that width and height do not exceed the browser limit.\n * @returns array of [width, height] clamped to the browser limit.\n */\n static sanitizeCanvasDims(width, height) {\n const limit = this.CANVAS_BROWSER_SIZE_LIMIT;\n if (Math.max(width, height) > limit) {\n warn('Canvas dimensions exceed browser limit. Cropping to ' + limit);\n if (width > limit) {\n width = limit;\n }\n if (height > limit) {\n height = limit;\n }\n }\n return [width, height];\n }\n /**\n * Set all pixels to transparent black rgba(0,0,0,0).\n */\n clear() {\n this.context2D.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n // eslint-disable-next-line\n openGroup(cls, id, attrs) {\n // Containers not implemented.\n }\n closeGroup() {\n // Containers not implemented.\n }\n // eslint-disable-next-line\n add(child) {\n // Containers not implemented.\n }\n setFillStyle(style) {\n this.context2D.fillStyle = style;\n return this;\n }\n /** CanvasContext ignores `setBackgroundFillStyle()`. */\n // eslint-disable-next-line\n setBackgroundFillStyle(style) {\n // DO NOTHING\n return this;\n }\n setStrokeStyle(style) {\n this.context2D.strokeStyle = style;\n return this;\n }\n setShadowColor(color) {\n this.context2D.shadowColor = color;\n return this;\n }\n setShadowBlur(blur) {\n // CanvasRenderingContext2D does not scale the shadow blur by the current\n // transform, so we have to do it manually. We assume uniform scaling\n // (though allow for rotation) because the blur can only be scaled\n // uniformly anyway.\n const t = this.context2D.getTransform();\n const scale = Math.sqrt(t.a * t.a + t.b * t.b + t.c * t.c + t.d * t.d);\n this.context2D.shadowBlur = scale * blur;\n return this;\n }\n setLineWidth(width) {\n this.context2D.lineWidth = width;\n return this;\n }\n setLineCap(capType) {\n this.context2D.lineCap = capType;\n return this;\n }\n setLineDash(dash) {\n this.context2D.setLineDash(dash);\n return this;\n }\n scale(x, y) {\n this.context2D.scale(x, y);\n return this;\n }\n resize(width, height) {\n const canvas = this.context2D.canvas;\n const devicePixelRatio = globalObject().devicePixelRatio || 1;\n // Scale the canvas size by the device pixel ratio clamping to the maximum supported size.\n [width, height] = CanvasContext.sanitizeCanvasDims(width * devicePixelRatio, height * devicePixelRatio);\n // Divide back down by the pixel ratio and convert to integers.\n width = (width / devicePixelRatio) | 0;\n height = (height / devicePixelRatio) | 0;\n canvas.width = width * devicePixelRatio;\n canvas.height = height * devicePixelRatio;\n // The canvas could be an instance of either HTMLCanvasElement or an OffscreenCanvas.\n // Only HTMLCanvasElement has a style attribute.\n if (isHTMLCanvas(canvas)) {\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n }\n return this.scale(devicePixelRatio, devicePixelRatio);\n }\n rect(x, y, width, height) {\n this.context2D.rect(x, y, width, height);\n return this;\n }\n fillRect(x, y, width, height) {\n this.context2D.fillRect(x, y, width, height);\n return this;\n }\n /**\n * Set the pixels in a rectangular area to transparent black rgba(0,0,0,0).\n */\n clearRect(x, y, width, height) {\n this.context2D.clearRect(x, y, width, height);\n return this;\n }\n beginPath() {\n this.context2D.beginPath();\n return this;\n }\n moveTo(x, y) {\n this.context2D.moveTo(x, y);\n return this;\n }\n lineTo(x, y) {\n this.context2D.lineTo(x, y);\n return this;\n }\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\n this.context2D.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n return this;\n }\n quadraticCurveTo(cpx, cpy, x, y) {\n this.context2D.quadraticCurveTo(cpx, cpy, x, y);\n return this;\n }\n arc(x, y, radius, startAngle, endAngle, counterclockwise) {\n this.context2D.arc(x, y, radius, startAngle, endAngle, counterclockwise);\n return this;\n }\n fill() {\n this.context2D.fill();\n return this;\n }\n stroke() {\n this.context2D.stroke();\n return this;\n }\n closePath() {\n this.context2D.closePath();\n return this;\n }\n measureText(text) {\n const metrics = this.context2D.measureText(text);\n let y = 0;\n let height = 0;\n if (metrics.fontBoundingBoxAscent) {\n y = -metrics.fontBoundingBoxAscent;\n height = metrics.fontBoundingBoxDescent + metrics.fontBoundingBoxAscent;\n }\n else {\n y = -metrics.actualBoundingBoxAscent;\n height = metrics.actualBoundingBoxDescent + metrics.actualBoundingBoxAscent;\n }\n // Return x, y, width & height in the same manner as svg getBBox\n return {\n x: 0,\n y: y,\n width: metrics.width,\n height: height,\n };\n }\n fillText(text, x, y) {\n this.context2D.fillText(text, x, y);\n return this;\n }\n save() {\n this.context2D.save();\n return this;\n }\n restore() {\n this.context2D.restore();\n return this;\n }\n set fillStyle(style) {\n this.context2D.fillStyle = style;\n }\n get fillStyle() {\n return this.context2D.fillStyle;\n }\n set strokeStyle(style) {\n this.context2D.strokeStyle = style;\n }\n get strokeStyle() {\n return this.context2D.strokeStyle;\n }\n /**\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n */\n setFont(f, size, weight, style) {\n const fontInfo = Font.validate(f, size, weight, style);\n this.context2D.font = Font.toCSSString(fontInfo);\n this.textHeight = Font.convertSizeToPixelValue(fontInfo.size);\n return this;\n }\n /** Return a string of the form `'italic bold 15pt Arial'` */\n getFont() {\n return this.context2D.font;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// @author Gregory Ristow (2015)\nimport { Font, FontStyle, FontWeight } from './font';\nimport { RenderContext } from './rendercontext';\nimport { normalizeAngle, prefix, RuntimeError } from './util';\n/** For a particular element type (e.g., rect), we will not apply certain presentation attributes. */\nconst ATTRIBUTES_TO_IGNORE = {\n path: {\n x: true,\n y: true,\n width: true,\n height: true,\n 'font-family': true,\n 'font-weight': true,\n 'font-style': true,\n 'font-size': true,\n },\n rect: {\n 'font-family': true,\n 'font-weight': true,\n 'font-style': true,\n 'font-size': true,\n },\n text: {\n width: true,\n height: true,\n },\n};\n/** Create the SVG in the SVG namespace. */\nconst SVG_NS = 'http://www.w3.org/2000/svg';\nconst TWO_PI = 2 * Math.PI;\nclass MeasureTextCache {\n constructor() {\n // The cache is keyed first by the text string, then by the font attributes\n // joined together.\n this.cache = {};\n }\n lookup(text, svg, attributes) {\n let entries = this.cache[text];\n if (entries === undefined) {\n entries = {};\n this.cache[text] = entries;\n }\n const family = attributes['font-family'];\n const size = attributes['font-size'];\n const weight = attributes['font-weight'];\n const style = attributes['font-style'];\n const key = `${family}%${size}%${weight}%${style}`;\n let entry = entries[key];\n if (entry === undefined) {\n entry = this.measureImpl(text, svg, attributes);\n entries[key] = entry;\n }\n return entry;\n }\n measureImpl(text, svg, attributes) {\n let txt = this.txt;\n if (!txt) {\n // Create the SVG text element that will be used to measure text in the event\n // of a cache miss.\n txt = document.createElementNS(SVG_NS, 'text');\n this.txt = txt;\n }\n txt.textContent = text;\n txt.setAttributeNS(null, 'font-family', attributes['font-family']);\n txt.setAttributeNS(null, 'font-size', attributes['font-size']);\n txt.setAttributeNS(null, 'font-style', attributes['font-style']);\n txt.setAttributeNS(null, 'font-weight', attributes['font-weight']);\n svg.appendChild(txt);\n const bbox = txt.getBBox();\n svg.removeChild(txt);\n return { x: bbox.x, y: bbox.y, width: bbox.width, height: bbox.height };\n }\n}\n/**\n * SVG rendering context with an API similar to CanvasRenderingContext2D.\n */\nexport class SVGContext extends RenderContext {\n constructor(element) {\n super();\n this.width = 0;\n this.height = 0;\n this.backgroundFillStyle = 'white';\n /** Formatted as CSS font shorthand (e.g., 'italic bold 12pt Arial') */\n this.fontCSSString = '';\n this.element = element;\n // Create a SVG element and add it to the container element.\n const svg = this.create('svg');\n this.element.appendChild(svg);\n this.svg = svg;\n this.parent = this.svg;\n this.groups = [this.svg];\n this.path = '';\n this.pen = { x: NaN, y: NaN };\n this.lineWidth = 1.0;\n const defaultFontAttributes = {\n 'font-family': Font.SANS_SERIF,\n 'font-size': Font.SIZE + 'pt',\n 'font-weight': FontWeight.NORMAL,\n 'font-style': FontStyle.NORMAL,\n };\n this.state = Object.assign({ scale: { x: 1, y: 1 } }, defaultFontAttributes);\n this.attributes = Object.assign({ 'stroke-width': 0.3, 'stroke-dasharray': 'none', fill: 'black', stroke: 'black' }, defaultFontAttributes);\n this.shadow_attributes = {\n width: 0,\n color: 'black',\n };\n this.state_stack = [];\n }\n create(svgElementType) {\n return document.createElementNS(SVG_NS, svgElementType);\n }\n // Allow grouping elements in containers for interactivity.\n openGroup(cls, id, attrs) {\n const group = this.create('g');\n this.groups.push(group);\n this.parent.appendChild(group);\n this.parent = group;\n if (cls)\n group.setAttribute('class', prefix(cls));\n if (id)\n group.setAttribute('id', prefix(id));\n if (attrs && attrs.pointerBBox) {\n group.setAttribute('pointer-events', 'bounding-box');\n }\n return group;\n }\n closeGroup() {\n this.groups.pop();\n this.parent = this.groups[this.groups.length - 1];\n }\n add(elem) {\n this.parent.appendChild(elem);\n }\n setFillStyle(style) {\n this.attributes.fill = style;\n return this;\n }\n /**\n * Used to set the fill color for `clearRect()`. This allows us to simulate\n * cutting a \"hole\" into the SVG drawing.\n */\n setBackgroundFillStyle(style) {\n this.backgroundFillStyle = style;\n return this;\n }\n setStrokeStyle(style) {\n this.attributes.stroke = style;\n return this;\n }\n setShadowColor(color) {\n this.shadow_attributes.color = color;\n return this;\n }\n /**\n * @param blur A non-negative float specifying the level of shadow blur, where 0\n * represents no blur and larger numbers represent increasingly more blur.\n * @returns this\n */\n setShadowBlur(blur) {\n this.shadow_attributes.width = blur;\n return this;\n }\n /**\n * @param width\n * @returns this\n */\n setLineWidth(width) {\n this.attributes['stroke-width'] = width;\n this.lineWidth = width;\n return this;\n }\n /**\n * @param lineDash an array of integers in the form of [dash, space, dash, space, etc...]\n * @returns this\n *\n * See: [SVG `stroke-dasharray` attribute](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray)\n */\n setLineDash(lineDash) {\n if (Object.prototype.toString.call(lineDash) === '[object Array]') {\n this.attributes['stroke-dasharray'] = lineDash.join(',');\n return this;\n }\n else {\n throw new RuntimeError('ArgumentError', 'lineDash must be an array of integers.');\n }\n }\n /**\n * @param capType\n * @returns this\n */\n setLineCap(capType) {\n this.attributes['stroke-linecap'] = capType;\n return this;\n }\n // ### Sizing & Scaling Methods:\n // TODO (GCR): See note at scale() -- separate our internal\n // conception of pixel-based width/height from the style.width\n // and style.height properties eventually to allow users to\n // apply responsive sizing attributes to the SVG.\n resize(width, height) {\n this.width = width;\n this.height = height;\n this.element.style.width = width.toString();\n this.svg.style.width = width.toString();\n this.svg.style.height = height.toString();\n const attributes = {\n width,\n height,\n };\n this.applyAttributes(this.svg, attributes);\n this.scale(this.state.scale.x, this.state.scale.y);\n return this;\n }\n scale(x, y) {\n // uses viewBox to scale\n // TODO (GCR): we may at some point want to distinguish the\n // style.width / style.height properties that are applied to\n // the SVG object from our internal conception of the SVG\n // width/height. This would allow us to create automatically\n // scaling SVG's that filled their containers, for instance.\n //\n // As this isn't implemented in Canvas contexts,\n // I've left as is for now, but in using the viewBox to\n // handle internal scaling, am trying to make it possible\n // for us to eventually move in that direction.\n this.state.scale = { x, y };\n const visibleWidth = this.width / x;\n const visibleHeight = this.height / y;\n this.setViewBox(0, 0, visibleWidth, visibleHeight);\n return this;\n }\n /**\n * 1 arg: string in the \"x y w h\" format\n * 4 args: x:number, y:number, w:number, h:number\n */\n setViewBox(viewBox_or_minX, minY, width, height) {\n if (typeof viewBox_or_minX === 'string') {\n this.svg.setAttribute('viewBox', viewBox_or_minX);\n }\n else {\n const viewBoxString = viewBox_or_minX + ' ' + minY + ' ' + width + ' ' + height;\n this.svg.setAttribute('viewBox', viewBoxString);\n }\n }\n // ### Drawing helper methods:\n applyAttributes(element, attributes) {\n const attrNamesToIgnore = ATTRIBUTES_TO_IGNORE[element.nodeName];\n for (const attrName in attributes) {\n if (attrNamesToIgnore && attrNamesToIgnore[attrName]) {\n continue;\n }\n element.setAttributeNS(null, attrName, attributes[attrName]);\n }\n return element;\n }\n // ### Shape & Path Methods:\n clear() {\n // Clear the SVG by removing all inner children.\n // (This approach is usually slightly more efficient\n // than removing the old SVG & adding a new one to\n // the container element, since it does not cause the\n // container to resize twice. Also, the resize\n // triggered by removing the entire SVG can trigger\n // a touchcancel event when the element resizes away\n // from a touch point.)\n while (this.svg.lastChild) {\n this.svg.removeChild(this.svg.lastChild);\n }\n // Replace the viewbox attribute we just removed.\n this.scale(this.state.scale.x, this.state.scale.y);\n }\n // ## Rectangles:\n rect(x, y, width, height, attributes) {\n // Avoid invalid negative height attributes by flipping the rectangle on its head:\n if (height < 0) {\n y += height;\n height *= -1;\n }\n const rectangle = this.create('rect');\n attributes = attributes !== null && attributes !== void 0 ? attributes : { fill: 'none', 'stroke-width': this.lineWidth, stroke: 'black' };\n this.applyAttributes(rectangle, Object.assign({ x, y, width, height }, attributes));\n this.add(rectangle);\n return this;\n }\n fillRect(x, y, width, height) {\n const attributes = { fill: this.attributes.fill };\n this.rect(x, y, width, height, attributes);\n return this;\n }\n clearRect(x, y, width, height) {\n // Currently this fills a rect with the backgroundFillStyle, rather\n // than \"cut a hole\" into the existing shapes.\n //\n // Since tabNote seems to be the only module that makes use of this\n // it may be worth creating a separate tabStave that would\n // draw lines around locations of tablature fingering.\n this.rect(x, y, width, height, { 'stroke-width': 0, fill: this.backgroundFillStyle });\n return this;\n }\n // ## Paths:\n beginPath() {\n this.path = '';\n this.pen.x = NaN;\n this.pen.y = NaN;\n return this;\n }\n moveTo(x, y) {\n this.path += 'M' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n lineTo(x, y) {\n this.path += 'L' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this.path += 'C' + x1 + ' ' + y1 + ',' + x2 + ' ' + y2 + ',' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this.path += 'Q' + x1 + ' ' + y1 + ',' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n arc(x, y, radius, startAngle, endAngle, counterclockwise) {\n const x0 = x + radius * Math.cos(startAngle);\n const y0 = y + radius * Math.sin(startAngle);\n // svg behavior different from canvas. Don't normalize angles if\n // we are drawing a circle because they both normalize to 0\n const tmpStartTest = normalizeAngle(startAngle);\n const tmpEndTest = normalizeAngle(endAngle);\n if ((!counterclockwise && endAngle - startAngle >= TWO_PI) ||\n (counterclockwise && startAngle - endAngle >= TWO_PI) ||\n tmpStartTest === tmpEndTest) {\n const x1 = x + radius * Math.cos(startAngle + Math.PI);\n const y1 = y + radius * Math.sin(startAngle + Math.PI);\n // There's no way to specify a completely circular arc in SVG so we have to\n // use two semi-circular arcs.\n this.path += `M${x0} ${y0} A${radius} ${radius} 0 0 0 ${x1} ${y1} `;\n this.path += `A${radius} ${radius} 0 0 0 ${x0} ${y0}`;\n this.pen.x = x0;\n this.pen.y = y0;\n }\n else {\n const x1 = x + radius * Math.cos(endAngle);\n const y1 = y + radius * Math.sin(endAngle);\n startAngle = tmpStartTest;\n endAngle = tmpEndTest;\n let large;\n if (Math.abs(endAngle - startAngle) < Math.PI) {\n large = counterclockwise;\n }\n else {\n large = !counterclockwise;\n }\n if (startAngle > endAngle) {\n large = !large;\n }\n const sweep = !counterclockwise;\n this.path += `M${x0} ${y0} A${radius} ${radius} 0 ${+large} ${+sweep} ${x1} ${y1}`;\n this.pen.x = x1;\n this.pen.y = y1;\n }\n return this;\n }\n closePath() {\n this.path += 'Z';\n return this;\n }\n getShadowStyle() {\n const sa = this.shadow_attributes;\n // A CSS drop-shadow filter blur looks different than a canvas shadowBlur\n // of the same radius, so we scale the drop-shadow radius here to make it\n // look close to the canvas shadow.\n return `filter: drop-shadow(0 0 ${sa.width / 1.5}px ${sa.color})`;\n }\n fill(attributes) {\n const path = this.create('path');\n if (typeof attributes === 'undefined') {\n attributes = Object.assign(Object.assign({}, this.attributes), { stroke: 'none' });\n }\n attributes.d = this.path;\n if (this.shadow_attributes.width > 0) {\n attributes.style = this.getShadowStyle();\n }\n this.applyAttributes(path, attributes);\n this.add(path);\n return this;\n }\n stroke() {\n const path = this.create('path');\n const attributes = Object.assign(Object.assign({}, this.attributes), { fill: 'none', 'stroke-width': this.lineWidth, d: this.path });\n if (this.shadow_attributes.width > 0) {\n attributes.style = this.getShadowStyle();\n }\n this.applyAttributes(path, attributes);\n this.add(path);\n return this;\n }\n // ## Text Methods:\n measureText(text) {\n return SVGContext.measureTextCache.lookup(text, this.svg, this.attributes);\n }\n fillText(text, x, y) {\n if (!text || text.length <= 0) {\n return this;\n }\n const attributes = Object.assign(Object.assign({}, this.attributes), { stroke: 'none', x,\n y });\n const txt = this.create('text');\n txt.textContent = text;\n this.applyAttributes(txt, attributes);\n this.add(txt);\n return this;\n }\n // TODO: State should be deep-copied.\n save() {\n this.state_stack.push({\n state: {\n 'font-family': this.state['font-family'],\n 'font-weight': this.state['font-weight'],\n 'font-style': this.state['font-style'],\n 'font-size': this.state['font-size'],\n scale: this.state.scale,\n },\n attributes: {\n 'font-family': this.attributes['font-family'],\n 'font-weight': this.attributes['font-weight'],\n 'font-style': this.attributes['font-style'],\n 'font-size': this.attributes['font-size'],\n fill: this.attributes.fill,\n stroke: this.attributes.stroke,\n 'stroke-width': this.attributes['stroke-width'],\n 'stroke-dasharray': this.attributes['stroke-dasharray'],\n },\n shadow_attributes: {\n width: this.shadow_attributes.width,\n color: this.shadow_attributes.color,\n },\n lineWidth: this.lineWidth,\n });\n return this;\n }\n // TODO: State should be deep-restored.\n restore() {\n const savedState = this.state_stack.pop();\n if (savedState) {\n const state = savedState;\n this.state['font-family'] = state.state['font-family'];\n this.state['font-weight'] = state.state['font-weight'];\n this.state['font-style'] = state.state['font-style'];\n this.state['font-size'] = state.state['font-size'];\n this.state.scale = state.state.scale;\n this.attributes['font-family'] = state.attributes['font-family'];\n this.attributes['font-weight'] = state.attributes['font-weight'];\n this.attributes['font-style'] = state.attributes['font-style'];\n this.attributes['font-size'] = state.attributes['font-size'];\n this.attributes.fill = state.attributes.fill;\n this.attributes.stroke = state.attributes.stroke;\n this.attributes['stroke-width'] = state.attributes['stroke-width'];\n this.attributes['stroke-dasharray'] = state.attributes['stroke-dasharray'];\n this.shadow_attributes.width = state.shadow_attributes.width;\n this.shadow_attributes.color = state.shadow_attributes.color;\n this.lineWidth = state.lineWidth;\n }\n return this;\n }\n set fillStyle(style) {\n this.setFillStyle(style);\n }\n get fillStyle() {\n return this.attributes.fill;\n }\n set strokeStyle(style) {\n this.setStrokeStyle(style);\n }\n get strokeStyle() {\n return this.attributes.stroke;\n }\n /**\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900). It is inserted\n * into the font-weight attribute (e.g., font-weight=\"bold\")\n * @param style is a string (e.g., 'italic', 'normal') that is inserted into the\n * font-style attribute (e.g., font-style=\"italic\")\n */\n setFont(f, size, weight, style) {\n const fontInfo = Font.validate(f, size, weight, style);\n this.fontCSSString = Font.toCSSString(fontInfo);\n const fontAttributes = {\n 'font-family': fontInfo.family,\n 'font-size': fontInfo.size,\n 'font-weight': fontInfo.weight,\n 'font-style': fontInfo.style,\n };\n this.attributes = Object.assign(Object.assign({}, this.attributes), fontAttributes);\n this.state = Object.assign(Object.assign({}, this.state), fontAttributes);\n return this;\n }\n /** Return a string of the form `'italic bold 15pt Arial'` */\n getFont() {\n return this.fontCSSString;\n }\n}\nSVGContext.measureTextCache = new MeasureTextCache();\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { CanvasContext } from './canvascontext';\nimport { SVGContext } from './svgcontext';\nimport { isRenderContext } from './typeguard';\nimport { RuntimeError } from './util';\nimport { isHTMLCanvas, isHTMLDiv } from './web';\nexport var RendererBackends;\n(function (RendererBackends) {\n RendererBackends[RendererBackends[\"CANVAS\"] = 1] = \"CANVAS\";\n RendererBackends[RendererBackends[\"SVG\"] = 2] = \"SVG\";\n})(RendererBackends || (RendererBackends = {}));\n// End of line types\nexport var RendererLineEndType;\n(function (RendererLineEndType) {\n RendererLineEndType[RendererLineEndType[\"NONE\"] = 1] = \"NONE\";\n RendererLineEndType[RendererLineEndType[\"UP\"] = 2] = \"UP\";\n RendererLineEndType[RendererLineEndType[\"DOWN\"] = 3] = \"DOWN\";\n})(RendererLineEndType || (RendererLineEndType = {}));\n/**\n * Support Canvas & SVG rendering contexts.\n */\nexport class Renderer {\n constructor(arg0, arg1) {\n if (isRenderContext(arg0)) {\n // The user has provided what looks like a RenderContext, let's just use it.\n this.ctx = arg0;\n }\n else {\n if (arg1 === undefined) {\n // The backend must be specified if the render context isn't directly provided.\n throw new RuntimeError('InvalidArgument', 'Missing backend argument');\n }\n const backend = arg1;\n let element;\n if (typeof arg0 == 'string') {\n const maybeElement = document.getElementById(arg0);\n if (!maybeElement) {\n throw new RuntimeError('BadElementId', `Can't find element with ID \"${maybeElement}\"`);\n }\n element = maybeElement;\n }\n else {\n element = arg0;\n }\n // Verify backend and create context\n if (backend === Renderer.Backends.CANVAS) {\n if (!isHTMLCanvas(element)) {\n throw new RuntimeError('BadElement', 'CANVAS context requires an HTMLCanvasElement.');\n }\n const context = element.getContext('2d');\n if (!context) {\n throw new RuntimeError('BadElement', \"Can't get canvas context\");\n }\n this.ctx = new CanvasContext(context);\n }\n else if (backend === Renderer.Backends.SVG) {\n if (!isHTMLDiv(element)) {\n throw new RuntimeError('BadElement', 'SVG context requires an HTMLDivElement.');\n }\n this.ctx = new SVGContext(element);\n }\n else {\n throw new RuntimeError('InvalidBackend', `No support for backend: ${backend}`);\n }\n }\n }\n static buildContext(elementId, backend, width, height, background = '#FFF') {\n const renderer = new Renderer(elementId, backend);\n if (width && height) {\n renderer.resize(width, height);\n }\n const ctx = renderer.getContext();\n ctx.setBackgroundFillStyle(background);\n Renderer.lastContext = ctx;\n return ctx;\n }\n static getCanvasContext(elementId, width, height, background) {\n return Renderer.buildContext(elementId, Renderer.Backends.CANVAS, width, height, background);\n }\n static getSVGContext(elementId, width, height, background) {\n return Renderer.buildContext(elementId, Renderer.Backends.SVG, width, height, background);\n }\n // Draw a dashed line (horizontal, vertical or diagonal\n // dashPattern = [3,3] draws a 3 pixel dash followed by a three pixel space.\n // setting the second number to 0 draws a solid line.\n static drawDashedLine(context, fromX, fromY, toX, toY, dashPattern) {\n context.beginPath();\n const dx = toX - fromX;\n const dy = toY - fromY;\n const angle = Math.atan2(dy, dx);\n let x = fromX;\n let y = fromY;\n context.moveTo(fromX, fromY);\n let idx = 0;\n let draw = true;\n while (!((dx < 0 ? x <= toX : x >= toX) && (dy < 0 ? y <= toY : y >= toY))) {\n const dashLength = dashPattern[idx++ % dashPattern.length];\n const nx = x + Math.cos(angle) * dashLength;\n x = dx < 0 ? Math.max(toX, nx) : Math.min(toX, nx);\n const ny = y + Math.sin(angle) * dashLength;\n y = dy < 0 ? Math.max(toY, ny) : Math.min(toY, ny);\n if (draw) {\n context.lineTo(x, y);\n }\n else {\n context.moveTo(x, y);\n }\n draw = !draw;\n }\n context.closePath();\n context.stroke();\n }\n resize(width, height) {\n this.ctx.resize(width, height);\n return this;\n }\n getContext() {\n return this.ctx;\n }\n}\nRenderer.Backends = RendererBackends;\nRenderer.LineEndType = RendererLineEndType;\n// Used by vexflow_test_helpers.ts\n// Should this be private?\n// Can we do this in a cleaner way?\nRenderer.lastContext = undefined;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport var TextJustification;\n(function (TextJustification) {\n TextJustification[TextJustification[\"LEFT\"] = 1] = \"LEFT\";\n TextJustification[TextJustification[\"CENTER\"] = 2] = \"CENTER\";\n TextJustification[TextJustification[\"RIGHT\"] = 3] = \"RIGHT\";\n})(TextJustification || (TextJustification = {}));\n/**\n * `TextNote` is a notation element that is positioned in time. Generally\n * meant for objects that sit above/below the staff and inline with each other.\n * `TextNote` has to be assigned to a `Stave` before rendering by means of `setStave`.\n * Examples of this would be such as dynamics, lyrics, chord changes, etc.\n */\nexport class TextNote extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n this.text = noteStruct.text || '';\n this.superscript = noteStruct.superscript;\n this.subscript = noteStruct.subscript;\n this.setFont(noteStruct.font);\n this.line = noteStruct.line || 0;\n this.smooth = noteStruct.smooth || false;\n this.ignore_ticks = noteStruct.ignore_ticks || false;\n this.justification = TextJustification.LEFT;\n // Determine and set initial note width. Note that the text width is\n // an approximation and isn't very accurate. The only way to accurately\n // measure the length of text is with `CanvasRenderingContext2D.measureText()`.\n if (noteStruct.glyph) {\n const struct = TextNote.GLYPHS[noteStruct.glyph];\n if (!struct)\n throw new RuntimeError('Invalid glyph type: ' + noteStruct.glyph);\n this.glyph = new Glyph(struct.code, 40, { category: 'textNote' });\n this.setWidth(this.glyph.getMetrics().width);\n }\n else {\n this.glyph = undefined;\n }\n }\n static get CATEGORY() {\n return Category.TextNote;\n }\n /** Glyph data. */\n static get GLYPHS() {\n return {\n segno: {\n code: 'segno',\n },\n tr: {\n code: 'ornamentTrill',\n },\n mordent: {\n code: 'ornamentMordent',\n },\n mordent_upper: {\n code: 'ornamentShortTrill',\n },\n mordent_lower: {\n code: 'ornamentMordent',\n },\n f: {\n code: 'dynamicForte',\n },\n p: {\n code: 'dynamicPiano',\n },\n m: {\n code: 'dynamicMezzo',\n },\n s: {\n code: 'dynamicSforzando',\n },\n z: {\n code: 'dynamicZ',\n },\n coda: {\n code: 'coda',\n },\n pedal_open: {\n code: 'keyboardPedalPed',\n },\n pedal_close: {\n code: 'keyboardPedalUp',\n },\n caesura_straight: {\n code: 'caesura',\n },\n caesura_curved: {\n code: 'caesuraCurved',\n },\n breath: {\n code: 'breathMarkComma',\n },\n tick: {\n code: 'breathMarkTick',\n },\n turn: {\n code: 'ornamentTurn',\n },\n turn_inverted: {\n code: 'ornamentTurnSlash',\n },\n };\n }\n /** Set the horizontal justification of the TextNote. */\n setJustification(just) {\n this.justification = just;\n return this;\n }\n /** Set the Stave line on which the note should be placed. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Return the Stave line on which the TextNote is placed. */\n getLine() {\n return this.line;\n }\n /** Return the unformatted text of this TextNote. */\n getText() {\n return this.text;\n }\n /** Pre-render formatting. */\n preFormat() {\n if (this.preFormatted)\n return;\n const tickContext = this.checkTickContext(`Can't preformat without a TickContext.`);\n if (this.smooth) {\n this.setWidth(0);\n }\n else {\n if (this.glyph) {\n // Width already set.\n }\n else {\n const ctx = this.checkContext();\n ctx.setFont(this.textFont);\n this.setWidth(ctx.measureText(this.text).width);\n }\n }\n if (this.justification === TextJustification.CENTER) {\n this.leftDisplacedHeadPx = this.width / 2;\n }\n else if (this.justification === TextJustification.RIGHT) {\n this.leftDisplacedHeadPx = this.width;\n }\n // We reposition to the center of the note head\n this.rightDisplacedHeadPx = tickContext.getMetrics().glyphPx / 2;\n this.preFormatted = true;\n }\n /**\n * Renders the TextNote.\n * `TextNote` has to be assigned to a `Stave` before rendering by means of `setStave`.\n */\n draw() {\n const ctx = this.checkContext();\n const stave = this.checkStave();\n const tickContext = this.checkTickContext(`Can't draw without a TickContext.`);\n this.setRendered();\n // Reposition to center of note head\n let x = this.getAbsoluteX() + tickContext.getMetrics().glyphPx / 2;\n // Align based on tick-context width.\n const width = this.getWidth();\n if (this.justification === TextJustification.CENTER) {\n x -= width / 2;\n }\n else if (this.justification === TextJustification.RIGHT) {\n x -= width;\n }\n let y;\n if (this.glyph) {\n y = stave.getYForLine(this.line + -3);\n this.glyph.render(ctx, x, y);\n }\n else {\n y = stave.getYForLine(this.line + -3);\n this.applyStyle(ctx);\n ctx.setFont(this.textFont);\n ctx.fillText(this.text, x, y);\n const height = ctx.measureText(this.text).height;\n // We called this.setFont(...) in the constructor, so we know this.textFont is available.\n // eslint-disable-next-line\n const { family, size, weight, style } = this.textFont;\n // Scale the font size by 1/1.3.\n const smallerFontSize = Font.scaleSize(size, 0.769231);\n if (this.superscript) {\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.superscript, x + this.width + 2, y - height / 2.2);\n }\n if (this.subscript) {\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.subscript, x + this.width + 2, y + height / 2.2 - 1);\n }\n this.restoreStyle(ctx);\n }\n }\n}\nTextNote.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 12,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\nTextNote.Justification = TextJustification;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier } from './stavemodifier';\nimport { Category } from './typeguard';\nexport var VoltaType;\n(function (VoltaType) {\n VoltaType[VoltaType[\"NONE\"] = 1] = \"NONE\";\n VoltaType[VoltaType[\"BEGIN\"] = 2] = \"BEGIN\";\n VoltaType[VoltaType[\"MID\"] = 3] = \"MID\";\n VoltaType[VoltaType[\"END\"] = 4] = \"END\";\n VoltaType[VoltaType[\"BEGIN_END\"] = 5] = \"BEGIN_END\";\n})(VoltaType || (VoltaType = {}));\nexport class Volta extends StaveModifier {\n constructor(type, number, x, y_shift) {\n super();\n this.volta = type;\n this.x = x;\n this.y_shift = y_shift;\n this.number = number;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.Volta;\n }\n static get type() {\n return VoltaType;\n }\n setShiftY(y) {\n this.y_shift = y;\n return this;\n }\n draw(stave, x) {\n const ctx = stave.checkContext();\n this.setRendered();\n let width = stave.getWidth() - x; // don't include x (offset) for width\n const top_y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n const vert_height = 1.5 * stave.getSpacingBetweenLines();\n switch (this.volta) {\n case VoltaType.BEGIN:\n ctx.fillRect(this.x + x, top_y, 1, vert_height);\n break;\n case VoltaType.END:\n width -= 5;\n ctx.fillRect(this.x + x + width, top_y, 1, vert_height);\n break;\n case VoltaType.BEGIN_END:\n width -= 3;\n ctx.fillRect(this.x + x, top_y, 1, vert_height);\n ctx.fillRect(this.x + x + width, top_y, 1, vert_height);\n break;\n default:\n break;\n }\n // If the beginning of a volta, draw measure number\n if (this.volta === VoltaType.BEGIN || this.volta === VoltaType.BEGIN_END) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText(this.number, this.x + x + 5, top_y + 15);\n ctx.restore();\n }\n ctx.fillRect(this.x + x, top_y, width, 1);\n return this;\n }\n}\nVolta.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 9,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns\n//\n// This file implements the `StringNumber` class which renders string\n// number annotations beside notes.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Renderer } from './renderer';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isStaveNote, isStemmableNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StringNumber extends Modifier {\n constructor(number) {\n super();\n this.string_number = number;\n this.position = Modifier.Position.ABOVE; // Default position above stem or note head\n this.x_shift = 0;\n this.y_shift = 0;\n this.text_line = 0;\n this.stem_offset = 0;\n this.x_offset = 0; // Horizontal offset from default\n this.y_offset = 0; // Vertical offset from default\n this.dashed = true; // true - draw dashed extension false - no extension\n this.leg = Renderer.LineEndType.NONE; // draw upward/downward leg at the of extension line\n this.radius = 8;\n this.drawCircle = true;\n this.setWidth(this.radius * 2 + 4);\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StringNumber;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.stringNumber;\n }\n // ## Static Methods\n // Arrange string numbers inside a `ModifierContext`\n static format(nums, state) {\n const left_shift = state.left_shift;\n const right_shift = state.right_shift;\n const num_spacing = 1;\n if (!nums || nums.length === 0)\n return false;\n const nums_list = [];\n let prev_note = null;\n let shift_left = 0;\n let shift_right = 0;\n const modLines = 0;\n for (let i = 0; i < nums.length; ++i) {\n const num = nums[i];\n const note = num.getNote();\n const pos = num.getPosition();\n if (!isStaveNote(note)) {\n throw new RuntimeError('NoStaveNote');\n }\n const index = num.checkIndex();\n const props = note.getKeyProps()[index];\n const mc = note.getModifierContext();\n const verticalSpaceNeeded = (num.radius * 2) / Tables.STAVE_LINE_DISTANCE + 0.5;\n if (mc) {\n if (pos === ModifierPosition.ABOVE) {\n num.text_line = mc.getState().top_text_line;\n state.top_text_line += verticalSpaceNeeded;\n }\n else if (pos === ModifierPosition.BELOW) {\n num.text_line = mc.getState().text_line;\n state.text_line += verticalSpaceNeeded;\n }\n }\n if (note !== prev_note) {\n for (let n = 0; n < note.keys.length; ++n) {\n if (left_shift === 0) {\n shift_left = Math.max(note.getLeftDisplacedHeadPx(), shift_left);\n }\n if (right_shift === 0) {\n shift_right = Math.max(note.getRightDisplacedHeadPx(), shift_right);\n }\n }\n prev_note = note;\n }\n const glyphLine = modLines === 0 ? props.line : modLines;\n nums_list.push({\n pos,\n note,\n num,\n line: glyphLine,\n shiftL: shift_left,\n shiftR: shift_right,\n });\n }\n // Sort string numbers by line number.\n nums_list.sort((a, b) => b.line - a.line);\n let num_shiftR = 0;\n let x_widthL = 0;\n let x_widthR = 0;\n let last_line = null;\n let last_note = null;\n for (let i = 0; i < nums_list.length; ++i) {\n let num_shift = 0;\n const note = nums_list[i].note;\n const pos = nums_list[i].pos;\n const num = nums_list[i].num;\n const line = nums_list[i].line;\n const shiftR = nums_list[i].shiftR;\n // Reset the position of the string number every line.\n if (line !== last_line || note !== last_note) {\n num_shiftR = right_shift + shiftR;\n }\n const num_width = num.getWidth() + num_spacing;\n if (pos === Modifier.Position.LEFT) {\n num.setXShift(left_shift);\n num_shift = shift_left + num_width; // spacing\n x_widthL = num_shift > x_widthL ? num_shift : x_widthL;\n }\n else if (pos === Modifier.Position.RIGHT) {\n num.setXShift(num_shiftR);\n num_shift += num_width; // spacing\n x_widthR = num_shift > x_widthR ? num_shift : x_widthR;\n }\n last_line = line;\n last_note = note;\n }\n state.left_shift += x_widthL;\n state.right_shift += x_widthR;\n return true;\n }\n setLineEndType(leg) {\n if (leg >= Renderer.LineEndType.NONE && leg <= Renderer.LineEndType.DOWN) {\n this.leg = leg;\n }\n return this;\n }\n setStringNumber(number) {\n this.string_number = number;\n return this;\n }\n setOffsetX(x) {\n this.x_offset = x;\n return this;\n }\n setOffsetY(y) {\n this.y_offset = y;\n return this;\n }\n setLastNote(note) {\n this.last_note = note;\n return this;\n }\n setDashed(dashed) {\n this.dashed = dashed;\n return this;\n }\n setDrawCircle(drawCircle) {\n this.drawCircle = drawCircle;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let dot_x = start.x + this.x_shift + this.x_offset;\n let stem_ext = {};\n if (note.hasStem()) {\n stem_ext = note.checkStem().getExtents();\n }\n let dot_y = start.y + this.y_shift + this.y_offset;\n switch (this.position) {\n case Modifier.Position.ABOVE:\n {\n const ys = note.getYs();\n dot_y = ys.reduce((a, b) => (a < b ? a : b));\n if (note.hasStem() && stemDirection == Stem.UP) {\n dot_y = stem_ext.topY + StringNumber.metrics.stemPadding;\n }\n dot_y -= this.radius + StringNumber.metrics.verticalPadding + this.text_line * Tables.STAVE_LINE_DISTANCE;\n }\n break;\n case Modifier.Position.BELOW:\n {\n const ys = note.getYs();\n dot_y = ys.reduce((a, b) => (a > b ? a : b));\n if (note.hasStem() && stemDirection == Stem.DOWN) {\n dot_y = stem_ext.topY - StringNumber.metrics.stemPadding;\n }\n dot_y += this.radius + StringNumber.metrics.verticalPadding + this.text_line * Tables.STAVE_LINE_DISTANCE;\n }\n break;\n case Modifier.Position.LEFT:\n dot_x -= this.radius / 2 + StringNumber.metrics.leftPadding;\n break;\n case Modifier.Position.RIGHT:\n dot_x += this.radius / 2 + StringNumber.metrics.rightPadding;\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} is invalid`);\n }\n ctx.save();\n if (this.drawCircle) {\n ctx.beginPath();\n ctx.arc(dot_x, dot_y, this.radius, 0, Math.PI * 2, false);\n ctx.setLineWidth(1.5);\n ctx.stroke();\n }\n ctx.setFont(this.textFont);\n const x = dot_x - ctx.measureText(this.string_number).width / 2;\n ctx.fillText('' + this.string_number, x, dot_y + 4.5);\n const lastNote = this.last_note;\n if (isStemmableNote(lastNote)) {\n // Only StemmableNote objects have getStemX().\n const end = lastNote.getStemX() - note.getX() + 5;\n ctx.setStrokeStyle('#000000');\n ctx.setLineCap('round');\n ctx.setLineWidth(0.6);\n if (this.dashed) {\n Renderer.drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 3]);\n }\n else {\n Renderer.drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 0]);\n }\n let len;\n let pattern;\n switch (this.leg) {\n case Renderer.LineEndType.UP:\n len = -10;\n pattern = this.dashed ? [3, 3] : [3, 0];\n Renderer.drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern);\n break;\n case Renderer.LineEndType.DOWN:\n len = 10;\n pattern = this.dashed ? [3, 3] : [3, 0];\n Renderer.drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern);\n break;\n default:\n break;\n }\n }\n ctx.restore();\n }\n}\nStringNumber.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: Font.SIZE,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns\n//\n// This file implements the `Stroke` class which renders chord strokes\n// that can be arpeggiated, brushed, rasquedo, etc.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Category, isNote, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class Stroke extends Modifier {\n constructor(type, options) {\n super();\n this.options = Object.assign({ all_voices: true }, options);\n // multi voice - span stroke across all voices if true\n this.all_voices = this.options.all_voices;\n // multi voice - end note of stroke, set in draw()\n this.type = type;\n this.position = Modifier.Position.LEFT;\n this.render_options = {\n font_scale: 38,\n };\n this.resetFont();\n this.setXShift(0);\n this.setWidth(10);\n }\n static get CATEGORY() {\n return Category.Stroke;\n }\n // Arrange strokes inside `ModifierContext`\n static format(strokes, state) {\n const left_shift = state.left_shift;\n const stroke_spacing = 0;\n if (!strokes || strokes.length === 0)\n return false;\n const strokeList = strokes.map((stroke) => {\n const note = stroke.getNote();\n const index = stroke.checkIndex();\n if (isStaveNote(note)) {\n // Only StaveNote objects have getKeyProps().\n const { line } = note.getKeyProps()[index];\n const shift = note.getLeftDisplacedHeadPx();\n return { line, shift, stroke };\n }\n else if (isTabNote(note)) {\n // Only TabNote objects have getPositions().\n const { str: string } = note.getPositions()[index];\n return { line: string, shift: 0, stroke };\n }\n else {\n throw new RuntimeError('Internal', 'Unexpected instance.');\n }\n });\n const strokeShift = left_shift;\n // There can only be one stroke .. if more than one, they overlay each other\n const xShift = strokeList.reduce((xShift, { stroke, shift }) => {\n stroke.setXShift(strokeShift + shift);\n return Math.max(stroke.getWidth() + stroke_spacing, xShift);\n }, 0);\n state.left_shift += xShift;\n return true;\n }\n getPosition() {\n return this.position;\n }\n addEndNote(note) {\n this.note_end = note;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n let ys = note.getYs();\n let topY = start.y;\n let botY = start.y;\n const x = start.x - 5;\n const line_space = note.checkStave().getSpacingBetweenLines();\n const notes = this.checkModifierContext().getMembers(note.getCategory());\n for (let i = 0; i < notes.length; i++) {\n const note = notes[i];\n if (isNote(note)) {\n // Only Note objects have getYs().\n // note is an instance of either StaveNote or TabNote.\n ys = note.getYs();\n for (let n = 0; n < ys.length; n++) {\n if (this.note === notes[i] || this.all_voices) {\n topY = Math.min(topY, ys[n]);\n botY = Math.max(botY, ys[n]);\n }\n }\n }\n }\n let arrow = '';\n let arrow_shift_x = 0;\n let arrow_y = 0;\n let text_shift_x = 0;\n let text_y = 0;\n switch (this.type) {\n case Stroke.Type.BRUSH_DOWN:\n arrow = 'arrowheadBlackUp';\n arrow_shift_x = -3;\n arrow_y = topY - line_space / 2 + 10;\n botY += line_space / 2;\n break;\n case Stroke.Type.BRUSH_UP:\n arrow = 'arrowheadBlackDown';\n arrow_shift_x = 0.5;\n arrow_y = botY + line_space / 2;\n topY -= line_space / 2;\n break;\n case Stroke.Type.ROLL_DOWN:\n case Stroke.Type.RASQUEDO_DOWN:\n arrow = 'arrowheadBlackUp';\n arrow_shift_x = -3;\n text_shift_x = this.x_shift + arrow_shift_x - 2;\n if (isStaveNote(note)) {\n topY += 1.5 * line_space;\n if ((botY - topY) % 2 !== 0) {\n botY += 0.5 * line_space;\n }\n else {\n botY += line_space;\n }\n arrow_y = topY - line_space;\n text_y = botY + line_space + 2;\n }\n else {\n topY += 1.5 * line_space;\n botY += line_space;\n arrow_y = topY - 0.75 * line_space;\n text_y = botY + 0.25 * line_space;\n }\n break;\n case Stroke.Type.ROLL_UP:\n case Stroke.Type.RASQUEDO_UP:\n arrow = 'arrowheadBlackDown';\n arrow_shift_x = -4;\n text_shift_x = this.x_shift + arrow_shift_x - 1;\n if (isStaveNote(note)) {\n arrow_y = line_space / 2;\n topY += 0.5 * line_space;\n if ((botY - topY) % 2 === 0) {\n botY += line_space / 2;\n }\n arrow_y = botY + 0.5 * line_space;\n text_y = topY - 1.25 * line_space;\n }\n else {\n topY += 0.25 * line_space;\n botY += 0.5 * line_space;\n arrow_y = botY + 0.25 * line_space;\n text_y = topY - line_space;\n }\n break;\n case Stroke.Type.ARPEGGIO_DIRECTIONLESS:\n topY += 0.5 * line_space;\n botY += line_space; // * 0.5 can lead to slight underlap instead of overlap sometimes\n break;\n default:\n throw new RuntimeError('InvalidType', `The stroke type ${this.type} does not exist`);\n }\n let strokeLine = 'straight';\n // Draw the stroke\n if (this.type === Stroke.Type.BRUSH_DOWN || this.type === Stroke.Type.BRUSH_UP) {\n ctx.fillRect(x + this.x_shift, topY, 1, botY - topY);\n }\n else {\n strokeLine = 'wiggly';\n if (isStaveNote(note)) {\n for (let i = topY; i <= botY; i += line_space) {\n Glyph.renderGlyph(ctx, x + this.x_shift - 4, i, this.render_options.font_scale, 'vexWiggleArpeggioUp');\n }\n }\n else {\n let i;\n for (i = topY; i <= botY; i += 10) {\n Glyph.renderGlyph(ctx, x + this.x_shift - 4, i, this.render_options.font_scale, 'vexWiggleArpeggioUp');\n }\n if (this.type === Stroke.Type.RASQUEDO_DOWN) {\n text_y = i + 0.25 * line_space;\n }\n }\n }\n if (this.type === Stroke.Type.ARPEGGIO_DIRECTIONLESS) {\n return; // skip drawing arrow heads or text\n }\n // Draw the arrow head\n Glyph.renderGlyph(ctx, x + this.x_shift + arrow_shift_x, arrow_y, this.render_options.font_scale, arrow, {\n category: `stroke.${arrow}.${strokeLine}`,\n });\n // Draw the rasquedo \"R\"\n if (this.type === Stroke.Type.RASQUEDO_DOWN || this.type === Stroke.Type.RASQUEDO_UP) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText('R', x + text_shift_x, text_y);\n ctx.restore();\n }\n }\n}\nStroke.Type = {\n BRUSH_DOWN: 1,\n BRUSH_UP: 2,\n ROLL_DOWN: 3,\n ROLL_UP: 4,\n RASQUEDO_DOWN: 5,\n RASQUEDO_UP: 6,\n ARPEGGIO_DIRECTIONLESS: 7, // Arpeggiated chord without upwards or downwards arrow\n};\nStroke.TEXT_FONT = {\n family: Font.SERIF,\n size: Font.SIZE,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Bend } from './bend';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\n/** `Vibrato` implements diverse vibratos. */\nexport class Vibrato extends Modifier {\n constructor() {\n super();\n this.position = Modifier.Position.RIGHT;\n this.render_options = {\n harsh: false,\n vibrato_width: 20,\n wave_height: 6,\n wave_width: 4,\n wave_girth: 2,\n };\n this.setVibratoWidth(this.render_options.vibrato_width);\n }\n static get CATEGORY() {\n return Category.Vibrato;\n }\n /** Arrange vibratos inside a `ModifierContext`. */\n static format(vibratos, state, context) {\n if (!vibratos || vibratos.length === 0)\n return false;\n // Vibratos are always on top.\n let text_line = state.top_text_line;\n let width = 0;\n let shift = state.right_shift - 7;\n // If there's a bend, drop the text line\n const bends = context.getMembers(Bend.CATEGORY);\n if (bends && bends.length > 0) {\n const bendHeight = bends.map((bb) => bb.getTextHeight()).reduce((a, b) => (a > b ? a : b)) / Tables.STAVE_LINE_DISTANCE;\n text_line = text_line - (bendHeight + 1);\n }\n else {\n state.top_text_line += 1;\n }\n // Format Vibratos\n for (let i = 0; i < vibratos.length; ++i) {\n const vibrato = vibratos[i];\n vibrato.setXShift(shift);\n vibrato.setTextLine(text_line);\n width += vibrato.getWidth();\n shift += width;\n }\n state.right_shift += width;\n return true;\n }\n /** Set harsh vibrato. */\n setHarsh(harsh) {\n this.render_options.harsh = harsh;\n return this;\n }\n /** Set vibrato width in pixels. */\n setVibratoWidth(width) {\n this.render_options.vibrato_width = width;\n this.setWidth(width);\n return this;\n }\n /** Draw the vibrato on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(Modifier.Position.RIGHT, this.index);\n const vx = start.x + this.x_shift;\n const vy = note.getYForTopText(this.text_line) + 2;\n Vibrato.renderVibrato(ctx, vx, vy, this.render_options);\n }\n /**\n * Static rendering method that can be called from\n * other classes (e.g. VibratoBracket).\n */\n static renderVibrato(ctx, x, y, opts) {\n const { harsh, vibrato_width, wave_width, wave_girth, wave_height } = opts;\n const num_waves = vibrato_width / wave_width;\n ctx.beginPath();\n let i;\n if (harsh) {\n ctx.moveTo(x, y + wave_girth + 1);\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.lineTo(x + wave_width, y - wave_height / 2);\n x += wave_width;\n ctx.lineTo(x + wave_width, y + wave_height / 2);\n x += wave_width;\n }\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.lineTo(x - wave_width, y - wave_height / 2 + wave_girth + 1);\n x -= wave_width;\n ctx.lineTo(x - wave_width, y + wave_height / 2 + wave_girth + 1);\n x -= wave_width;\n }\n ctx.fill();\n }\n else {\n ctx.moveTo(x, y + wave_girth);\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.quadraticCurveTo(x + wave_width / 2, y - wave_height / 2, x + wave_width, y);\n x += wave_width;\n ctx.quadraticCurveTo(x + wave_width / 2, y + wave_height / 2, x + wave_width, y);\n x += wave_width;\n }\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.quadraticCurveTo(x - wave_width / 2, y + wave_height / 2 + wave_girth, x - wave_width, y + wave_girth);\n x -= wave_width;\n ctx.quadraticCurveTo(x - wave_width / 2, y - wave_height / 2 + wave_girth, x - wave_width, y + wave_girth);\n x -= wave_width;\n }\n ctx.fill();\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This class implements various types of members to notes (e.g. bends,\n// fingering positions etc.)\nimport { Accidental } from './accidental';\nimport { Annotation } from './annotation';\nimport { Articulation } from './articulation';\nimport { Bend } from './bend';\nimport { ChordSymbol } from './chordsymbol';\nimport { Dot } from './dot';\nimport { FretHandFinger } from './frethandfinger';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { Parenthesis } from './parenthesis';\nimport { StaveNote } from './stavenote';\nimport { StringNumber } from './stringnumber';\nimport { Stroke } from './strokes';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\nimport { Vibrato } from './vibrato';\n// To enable logging for this class. Set `Vex.Flow.ModifierContext.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (ModifierContext.DEBUG)\n log('Vex.Flow.ModifierContext', args);\n}\nexport class ModifierContext {\n constructor() {\n // Formatting data.\n this.state = {\n left_shift: 0,\n right_shift: 0,\n text_line: 0,\n top_text_line: 0,\n };\n // Current members\n this.members = {};\n this.preFormatted = false;\n this.postFormatted = false;\n this.formatted = false;\n this.width = 0;\n this.spacing = 0;\n }\n addModifier(member) {\n L('addModifier is deprecated, use addMember instead.');\n return this.addMember(member);\n }\n /**\n * this.members maps CATEGORY strings to arrays of Tickable | Modifier | StaveNote | TabNote.\n * Here we add a new member to this.members, and create a new array if needed.\n * @param member\n * @returns this\n */\n addMember(member) {\n const category = member.getCategory();\n if (!this.members[category]) {\n this.members[category] = [];\n }\n this.members[category].push(member);\n member.setModifierContext(this);\n this.preFormatted = false;\n return this;\n }\n /**\n * @deprecated\n */\n getModifiers(category) {\n L('getModifiers is deprecated, use getMembers instead.');\n return this.getMembers(category);\n }\n getMembers(category) {\n var _a;\n return (_a = this.members[category]) !== null && _a !== void 0 ? _a : [];\n }\n getWidth() {\n return this.width;\n }\n getLeftShift() {\n return this.state.left_shift;\n }\n getRightShift() {\n return this.state.right_shift;\n }\n getState() {\n return this.state;\n }\n getMetrics() {\n if (!this.formatted) {\n throw new RuntimeError('UnformattedMember', 'Unformatted member has no metrics.');\n }\n return {\n width: this.state.left_shift + this.state.right_shift + this.spacing,\n spacing: this.spacing,\n };\n }\n preFormat() {\n if (this.preFormatted)\n return;\n L('Preformatting ModifierContext');\n const state = this.state;\n const members = this.members;\n // The ordering below determines when different members are formatted and rendered.\n StaveNote.format(members[Category.StaveNote], state);\n Parenthesis.format(members[Category.Parenthesis], state);\n Dot.format(members[Category.Dot], state);\n FretHandFinger.format(members[Category.FretHandFinger], state);\n Accidental.format(members[Category.Accidental], state);\n Stroke.format(members[Category.Stroke], state);\n GraceNoteGroup.format(members[Category.GraceNoteGroup], state);\n NoteSubGroup.format(members[Category.NoteSubGroup], state);\n StringNumber.format(members[Category.StringNumber], state);\n Articulation.format(members[Category.Articulation], state);\n Ornament.format(members[Category.Ornament], state);\n Annotation.format(members[Category.Annotation], state);\n ChordSymbol.format(members[Category.ChordSymbol], state);\n Bend.format(members[Category.Bend], state);\n Vibrato.format(members[Category.Vibrato], state, this);\n // Update width of this member context\n this.width = state.left_shift + state.right_shift;\n this.preFormatted = true;\n }\n postFormat() {\n if (this.postFormatted)\n return;\n L('Postformatting ModifierContext');\n // If post-formatting is required for an element, add more lines below.\n StaveNote.postFormat(this.getMembers(Category.StaveNote));\n }\n}\nModifierContext.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna Cheppudira 2013.\n// Co-author: Benjamin W. Bohl\n// MIT License\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Clef.DEBUG)\n log('Vex.Flow.Clef', args);\n}\n/**\n * Clef implements various types of clefs that can be rendered on a stave.\n *\n * See `tests/clef_tests.ts` for usage examples.\n */\nexport class Clef extends StaveModifier {\n /** Create a new clef. */\n constructor(type, size, annotation) {\n super();\n /**\n * The attribute `clef` must be a key from\n * `Clef.types`\n */\n this.clef = Clef.types['treble'];\n this.setPosition(StaveModifierPosition.BEGIN);\n this.setType(type, size, annotation);\n this.setWidth(Tables.currentMusicFont().lookupMetric(`clef.${this.size}.width`));\n L('Creating clef:', type);\n }\n static get CATEGORY() {\n return Category.Clef;\n }\n /**\n * Every clef name is associated with a glyph code from the font file\n * and a default stave line number.\n */\n static get types() {\n return {\n treble: {\n code: 'gClef',\n line: 3,\n point: 0,\n },\n bass: {\n code: 'fClef',\n line: 1,\n point: 0,\n },\n alto: {\n code: 'cClef',\n line: 2,\n point: 0,\n },\n tenor: {\n code: 'cClef',\n line: 1,\n point: 0,\n },\n percussion: {\n code: 'restMaxima',\n line: 2,\n point: 0,\n },\n soprano: {\n code: 'cClef',\n line: 4,\n point: 0,\n },\n 'mezzo-soprano': {\n code: 'cClef',\n line: 3,\n point: 0,\n },\n 'baritone-c': {\n code: 'cClef',\n line: 0,\n point: 0,\n },\n 'baritone-f': {\n code: 'fClef',\n line: 2,\n point: 0,\n },\n subbass: {\n code: 'fClef',\n line: 0,\n point: 0,\n },\n french: {\n code: 'gClef',\n line: 4,\n point: 0,\n },\n tab: {\n code: '6stringTabClef',\n point: 0,\n },\n };\n }\n /** Set clef type, size and annotation. */\n setType(type, size, annotation) {\n this.type = type;\n this.clef = Clef.types[type];\n if (size === undefined) {\n this.size = 'default';\n }\n else {\n this.size = size;\n }\n const musicFont = Tables.currentMusicFont();\n this.clef.point = musicFont.lookupMetric(`clef.${this.size}.point`, 0);\n this.glyph = new Glyph(this.clef.code, this.clef.point, {\n category: `clef.${this.clef.code}.${this.size}`,\n });\n // If an annotation, such as 8va, is specified, add it to the Clef object.\n if (annotation !== undefined) {\n const code = musicFont.lookupMetric(`clef.annotations.${annotation}.smuflCode`);\n const point = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.point`);\n const line = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.${this.type}.line`);\n const x_shift = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.${this.type}.shiftX`);\n this.annotation = { code, point, line, x_shift };\n this.attachment = new Glyph(this.annotation.code, this.annotation.point);\n this.attachment.metrics.x_max = 0;\n this.attachment.setXShift(this.annotation.x_shift);\n }\n else {\n this.annotation = undefined;\n }\n return this;\n }\n /** Get clef width. */\n getWidth() {\n if (this.type === 'tab') {\n defined(this.stave, 'ClefError', \"Can't get width without stave.\");\n }\n return this.width;\n }\n /** Set associated stave. */\n setStave(stave) {\n this.stave = stave;\n if (this.type === 'tab') {\n const glyph = defined(this.glyph, 'ClefError', \"Can't set stave without glyph.\");\n const numLines = this.stave.getNumLines();\n const musicFont = Tables.currentMusicFont();\n const point = musicFont.lookupMetric(`clef.lineCount.${numLines}.point`);\n const shiftY = musicFont.lookupMetric(`clef.lineCount.${numLines}.shiftY`);\n glyph.setPoint(point);\n glyph.setYShift(shiftY);\n }\n return this;\n }\n /** Render clef. */\n draw() {\n const glyph = defined(this.glyph, 'ClefError', \"Can't draw clef without glyph.\");\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('clef', this.getAttribute('id'));\n glyph.setStave(stave);\n glyph.setContext(ctx);\n if (this.clef.line !== undefined) {\n this.placeGlyphOnLine(glyph, stave, this.clef.line);\n }\n glyph.renderToStave(this.x);\n if (this.annotation !== undefined && this.attachment !== undefined) {\n this.placeGlyphOnLine(this.attachment, stave, this.annotation.line);\n this.attachment.setStave(stave);\n this.attachment.setContext(ctx);\n this.attachment.renderToStave(this.x);\n }\n ctx.closeGroup();\n }\n}\n/** To enable logging for this class, set `Vex.Flow.Clef.DEBUG` to `true`. */\nClef.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n//\n// ## Description\n//\n// This file implements key signatures. A key signature sits on a stave\n// and indicates the notes with implicit accidentals.\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined } from './util';\nexport class KeySignature extends StaveModifier {\n // Create a new Key Signature based on a `key_spec`\n constructor(keySpec, cancelKeySpec, alterKeySpec) {\n super();\n this.accList = [];\n this.setKeySig(keySpec, cancelKeySpec, alterKeySpec);\n this.setPosition(StaveModifierPosition.BEGIN);\n this.glyphFontScale = 38; // TODO(0xFE): Should this match StaveNote?\n this.glyphs = [];\n this.xPositions = []; // relative to this.x\n this.paddingForced = false;\n }\n static get CATEGORY() {\n return Category.KeySignature;\n }\n // Add an accidental glyph to the `KeySignature` instance which represents\n // the provided `acc`. If `nextAcc` is also provided, the appropriate\n // spacing will be included in the glyph's position\n convertToGlyph(acc, nextAcc) {\n const accGlyphData = Tables.accidentalCodes(acc.type);\n const glyph = new Glyph(accGlyphData.code, this.glyphFontScale);\n // Determine spacing between current accidental and the next accidental\n let extraWidth = 1;\n if (acc.type === 'n' && nextAcc) {\n const spacing = KeySignature.accidentalSpacing[nextAcc.type];\n if (spacing) {\n const isAbove = nextAcc.line >= acc.line;\n extraWidth = isAbove ? spacing.above : spacing.below;\n }\n }\n // Place the glyph on the stave\n this.placeGlyphOnLine(glyph, this.checkStave(), acc.line);\n this.glyphs.push(glyph);\n const xPosition = this.xPositions[this.xPositions.length - 1];\n const glyphWidth = glyph.getMetrics().width + extraWidth;\n // Store the next accidental's x position\n this.xPositions.push(xPosition + glyphWidth);\n // Expand size of key signature\n this.width += glyphWidth;\n }\n // Cancel out a key signature provided in the `spec` parameter. This will\n // place appropriate natural accidentals before the key signature.\n cancelKey(spec) {\n this.formatted = false;\n this.cancelKeySpec = spec;\n return this;\n }\n convertToCancelAccList(spec) {\n // Get the accidental list for the cancelled key signature\n const cancel_accList = Tables.keySignature(spec);\n // If the cancelled key has a different accidental type, ie: # vs b\n const different_types = this.accList.length > 0 && cancel_accList.length > 0 && cancel_accList[0].type !== this.accList[0].type;\n // Determine how many naturals needed to add\n const naturals = different_types ? cancel_accList.length : cancel_accList.length - this.accList.length;\n // Return if no naturals needed\n if (naturals < 1)\n return undefined;\n // Get the line position for each natural\n const cancelled = [];\n for (let i = 0; i < naturals; i++) {\n let index = i;\n if (!different_types) {\n index = cancel_accList.length - naturals + i;\n }\n const acc = cancel_accList[index];\n cancelled.push({ type: 'n', line: acc.line });\n }\n // Combine naturals with main accidental list for the key signature\n this.accList = cancelled.concat(this.accList);\n return {\n accList: cancelled,\n type: cancel_accList[0].type,\n };\n }\n // Deprecated\n addToStave(stave) {\n this.paddingForced = true;\n stave.addModifier(this);\n return this;\n }\n // Apply the accidental staff line placement based on the `clef` and\n // the accidental `type` for the key signature ('# or 'b').\n convertAccLines(clef, type, accList = this.accList) {\n let offset = 0.0; // if clef === \"treble\"\n let customLines; // when clef doesn't follow treble key sig shape\n switch (clef) {\n // Treble & Subbass both have offsets of 0, so are not included.\n case 'soprano':\n if (type === '#')\n customLines = [2.5, 0.5, 2, 0, 1.5, -0.5, 1];\n else\n offset = -1;\n break;\n case 'mezzo-soprano':\n if (type === 'b')\n customLines = [0, 2, 0.5, 2.5, 1, 3, 1.5];\n else\n offset = 1.5;\n break;\n case 'alto':\n offset = 0.5;\n break;\n case 'tenor':\n if (type === '#')\n customLines = [3, 1, 2.5, 0.5, 2, 0, 1.5];\n else\n offset = -0.5;\n break;\n case 'baritone-f':\n case 'baritone-c':\n if (type === 'b')\n customLines = [0.5, 2.5, 1, 3, 1.5, 3.5, 2];\n else\n offset = 2;\n break;\n case 'bass':\n case 'french':\n offset = 1;\n break;\n default:\n break;\n }\n // If there's a special case, assign those lines/spaces:\n let i;\n if (typeof customLines !== 'undefined') {\n for (i = 0; i < accList.length; ++i) {\n accList[i].line = customLines[i];\n }\n }\n else if (offset !== 0) {\n for (i = 0; i < accList.length; ++i) {\n accList[i].line += offset;\n }\n }\n }\n getPadding(index) {\n if (!this.formatted)\n this.format();\n return this.glyphs.length === 0 || (!this.paddingForced && index < 2) ? 0 : this.padding;\n }\n getWidth() {\n if (!this.formatted)\n this.format();\n return this.width;\n }\n setKeySig(keySpec, cancelKeySpec, alterKeySpec) {\n this.formatted = false;\n this.keySpec = keySpec;\n this.cancelKeySpec = cancelKeySpec;\n this.alterKeySpec = alterKeySpec;\n return this;\n }\n // Alter the accidentals of a key spec one by one.\n // Each alteration is a new accidental that replaces the\n // original accidental (or the canceled one).\n alterKey(alterKeySpec) {\n this.formatted = false;\n this.alterKeySpec = alterKeySpec;\n return this;\n }\n convertToAlterAccList(alterKeySpec) {\n const max = Math.min(alterKeySpec.length, this.accList.length);\n for (let i = 0; i < max; ++i) {\n if (alterKeySpec[i]) {\n this.accList[i].type = alterKeySpec[i];\n }\n }\n }\n format() {\n const stave = this.checkStave();\n this.width = 0;\n this.glyphs = [];\n this.xPositions = [0]; // initialize with initial x position\n this.accList = Tables.keySignature(defined(this.keySpec));\n const accList = this.accList;\n const firstAccidentalType = accList.length > 0 ? accList[0].type : undefined;\n let cancelAccList;\n if (this.cancelKeySpec) {\n cancelAccList = this.convertToCancelAccList(this.cancelKeySpec);\n }\n if (this.alterKeySpec) {\n this.convertToAlterAccList(this.alterKeySpec);\n }\n if (this.accList.length > 0) {\n const clef = (this.position === StaveModifierPosition.END ? stave.getEndClef() : stave.getClef()) || stave.getClef();\n if (cancelAccList) {\n this.convertAccLines(clef, cancelAccList.type, cancelAccList.accList);\n }\n this.convertAccLines(clef, firstAccidentalType, accList);\n for (let i = 0; i < this.accList.length; ++i) {\n this.convertToGlyph(this.accList[i], this.accList[i + 1]);\n }\n }\n this.formatted = true;\n }\n /**\n * Return the Glyph objects making up this KeySignature.\n */\n getGlyphs() {\n if (!this.formatted)\n this.format();\n return this.glyphs;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n if (!this.formatted)\n this.format();\n this.setRendered();\n ctx.openGroup('keysignature', this.getAttribute('id'));\n for (let i = 0; i < this.glyphs.length; i++) {\n const glyph = this.glyphs[i];\n const x = this.x + this.xPositions[i];\n glyph.setStave(stave);\n glyph.setContext(ctx);\n glyph.renderToStave(x);\n }\n ctx.closeGroup();\n }\n}\n// Space between natural and following accidental depending\n// on vertical position\nKeySignature.accidentalSpacing = {\n '#': {\n above: 6,\n below: 4,\n },\n b: {\n above: 4,\n below: 7,\n },\n n: {\n above: 4,\n below: 1,\n },\n '##': {\n above: 6,\n below: 4,\n },\n bb: {\n above: 4,\n below: 7,\n },\n db: {\n above: 4,\n below: 7,\n },\n d: {\n above: 4,\n below: 7,\n },\n bbs: {\n above: 4,\n below: 7,\n },\n '++': {\n above: 6,\n below: 4,\n },\n '+': {\n above: 6,\n below: 4,\n },\n '+-': {\n above: 6,\n below: 4,\n },\n '++-': {\n above: 6,\n below: 4,\n },\n bs: {\n above: 4,\n below: 10,\n },\n bss: {\n above: 4,\n below: 10,\n },\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { StaveModifier } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport class Repetition extends StaveModifier {\n constructor(type, x, y_shift) {\n super();\n this.symbol_type = type;\n this.x = x;\n this.x_shift = 0;\n this.y_shift = y_shift;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.Repetition;\n }\n setShiftX(x) {\n this.x_shift = x;\n return this;\n }\n setShiftY(y) {\n this.y_shift = y;\n return this;\n }\n draw(stave, x) {\n this.setRendered();\n switch (this.symbol_type) {\n case Repetition.type.CODA_RIGHT:\n this.drawCodaFixed(stave, x + stave.getWidth());\n break;\n case Repetition.type.CODA_LEFT:\n this.drawSymbolText(stave, x, 'Coda', true);\n break;\n case Repetition.type.SEGNO_LEFT:\n this.drawSignoFixed(stave, x);\n break;\n case Repetition.type.SEGNO_RIGHT:\n this.drawSignoFixed(stave, x + stave.getWidth());\n break;\n case Repetition.type.DC:\n this.drawSymbolText(stave, x, 'D.C.', false);\n break;\n case Repetition.type.DC_AL_CODA:\n this.drawSymbolText(stave, x, 'D.C. al', true);\n break;\n case Repetition.type.DC_AL_FINE:\n this.drawSymbolText(stave, x, 'D.C. al Fine', false);\n break;\n case Repetition.type.DS:\n this.drawSymbolText(stave, x, 'D.S.', false);\n break;\n case Repetition.type.DS_AL_CODA:\n this.drawSymbolText(stave, x, 'D.S. al', true);\n break;\n case Repetition.type.DS_AL_FINE:\n this.drawSymbolText(stave, x, 'D.S. al Fine', false);\n break;\n case Repetition.type.FINE:\n this.drawSymbolText(stave, x, 'Fine', false);\n break;\n case Repetition.type.TO_CODA:\n this.drawSymbolText(stave, x, 'To', true);\n break;\n default:\n break;\n }\n return this;\n }\n drawCodaFixed(stave, x) {\n const y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n Glyph.renderGlyph(stave.checkContext(), this.x + x + this.x_shift, y + Tables.currentMusicFont().lookupMetric('staveRepetition.coda.offsetY'), 40, 'coda', { category: 'coda' });\n return this;\n }\n drawSignoFixed(stave, x) {\n const y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n Glyph.renderGlyph(stave.checkContext(), this.x + x + this.x_shift, y + Tables.currentMusicFont().lookupMetric('staveRepetition.segno.offsetY'), 30, 'segno', { category: 'segno' });\n return this;\n }\n drawSymbolText(stave, x, text, draw_coda) {\n const ctx = stave.checkContext();\n ctx.save();\n ctx.setFont(this.textFont);\n let text_x = 0;\n let symbol_x = 0;\n const modifierWidth = stave.getNoteStartX() - this.x;\n switch (this.symbol_type) {\n // To the left with symbol\n case Repetition.type.CODA_LEFT:\n // Offset Coda text to right of stave beginning\n text_x = this.x + stave.getVerticalBarWidth();\n symbol_x =\n text_x +\n ctx.measureText(text).width +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n break;\n // To the right without symbol\n case Repetition.type.DC:\n case Repetition.type.DC_AL_FINE:\n case Repetition.type.DS:\n case Repetition.type.DS_AL_FINE:\n case Repetition.type.FINE:\n text_x =\n this.x +\n x +\n this.x_shift +\n stave.getWidth() -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.spacing') -\n modifierWidth -\n ctx.measureText(text).width;\n break;\n // To the right with symbol\n default:\n text_x =\n this.x +\n x +\n this.x_shift +\n stave.getWidth() -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.spacing') -\n modifierWidth -\n ctx.measureText(text).width -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n symbol_x =\n text_x +\n ctx.measureText(text).width +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n break;\n }\n const y = stave.getYForTopText(stave.getNumLines()) +\n this.y_shift +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetY');\n if (draw_coda) {\n Glyph.renderGlyph(ctx, symbol_x, y, 40, 'coda', { category: 'coda' });\n }\n ctx.fillText(text, text_x, y + 5);\n ctx.restore();\n return this;\n }\n}\nRepetition.TEXT_FONT = {\n family: Font.SERIF,\n size: 12,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\nRepetition.type = {\n NONE: 1,\n CODA_LEFT: 2,\n CODA_RIGHT: 3,\n SEGNO_LEFT: 4,\n SEGNO_RIGHT: 5,\n DC: 6,\n DC_AL_CODA: 7,\n DC_AL_FINE: 8,\n DS: 9,\n DS_AL_CODA: 10,\n DS_AL_FINE: 11,\n FINE: 12,\n TO_CODA: 13, // To Coda at end of stave\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier } from './stavemodifier';\nimport { Category } from './typeguard';\nexport class StaveSection extends StaveModifier {\n constructor(section, x, shift_y, drawRect = true) {\n super();\n this.setWidth(16);\n this.section = section;\n this.x = x;\n this.shift_x = 0;\n this.shift_y = shift_y;\n this.drawRect = drawRect;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveSection;\n }\n setStaveSection(section) {\n this.section = section;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n draw(stave, shift_x) {\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n const paddingX = 2;\n const paddingY = 2;\n const rectWidth = 2;\n const textMeasurements = ctx.measureText(this.section);\n const textWidth = textMeasurements.width;\n const textHeight = textMeasurements.height;\n const width = textWidth + 2 * paddingX; // add left & right padding\n const height = textHeight + 2 * paddingY; // add top & bottom padding\n // Seems to be a good default y\n const y = stave.getYForTopText(1.5) + this.shift_y;\n const x = this.x + shift_x;\n if (this.drawRect) {\n ctx.beginPath();\n ctx.setLineWidth(rectWidth);\n ctx.rect(x, y + textMeasurements.y - paddingY, width, height);\n ctx.stroke();\n }\n ctx.fillText(this.section, x + paddingX, y);\n ctx.restore();\n return this;\n }\n}\nStaveSection.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 10,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Radosaw Eichler 2012\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport class StaveTempo extends StaveModifier {\n constructor(tempo, x, shift_y) {\n super();\n /** Font size for note. */\n this.render_options = { glyph_font_scale: 30 };\n this.tempo = tempo;\n this.position = StaveModifierPosition.ABOVE;\n this.x = x;\n this.shift_x = 10;\n this.shift_y = shift_y;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveTempo;\n }\n setTempo(tempo) {\n this.tempo = tempo;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n draw(stave, shift_x) {\n const ctx = stave.checkContext();\n this.setRendered();\n const options = this.render_options;\n // FIXME: What does the '38' mean? Why 38? Is that supposed to\n // be the default font size for standard notation?\n const scale = options.glyph_font_scale / 38;\n const name = this.tempo.name;\n const duration = this.tempo.duration;\n const dots = this.tempo.dots || 0;\n const bpm = this.tempo.bpm;\n let x = this.x + this.shift_x + shift_x;\n const y = stave.getYForTopText(1) + this.shift_y;\n ctx.save();\n if (name) {\n ctx.setFont(this.textFont);\n ctx.fillText(name, x, y);\n x += ctx.measureText(name).width;\n }\n if (duration && bpm) {\n // Override the weight and style.\n ctx.setFont(Object.assign(Object.assign({}, this.textFont), { weight: 'normal', style: 'normal' }));\n if (name) {\n x += ctx.measureText(' ').width;\n ctx.fillText('(', x, y);\n x += ctx.measureText('(').width;\n }\n const code = Tables.getGlyphProps(duration);\n x += 3 * scale;\n Glyph.renderGlyph(ctx, x, y, options.glyph_font_scale, code.code_head);\n x += code.getWidth() * scale;\n // Draw stem and flags\n if (code.stem) {\n let stem_height = 30;\n if (code.beam_count)\n stem_height += 3 * (code.beam_count - 1);\n stem_height *= scale;\n const y_top = y - stem_height;\n ctx.fillRect(x - scale, y_top, scale, stem_height);\n if (code.flag) {\n Glyph.renderGlyph(ctx, x, y_top, options.glyph_font_scale, code.code_flag_upstem, {\n category: 'flag.staveTempo',\n });\n if (!dots)\n x += 6 * scale;\n }\n }\n // Draw dot\n for (let i = 0; i < dots; i++) {\n x += 6 * scale;\n ctx.beginPath();\n ctx.arc(x, y + 2 * scale, 2 * scale, 0, Math.PI * 2, false);\n ctx.fill();\n }\n ctx.fillText(' = ' + bpm + (name ? ')' : ''), x + 3 * scale, y);\n }\n ctx.restore();\n return this;\n }\n}\nStaveTempo.TEXT_FONT = {\n family: Font.SERIF,\n size: 14,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { TextJustification, TextNote } from './textnote';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveText extends StaveModifier {\n constructor(text, position, options = {}) {\n super();\n this.setWidth(16);\n this.text = text;\n this.position = position;\n this.options = Object.assign({ shift_x: 0, shift_y: 0, justification: TextNote.Justification.CENTER }, options);\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveText;\n }\n setStaveText(text) {\n this.text = text;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n setText(text) {\n this.text = text;\n return this;\n }\n draw(stave) {\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n const text_width = ctx.measureText('' + this.text).width;\n let x;\n let y;\n switch (this.position) {\n case StaveModifierPosition.LEFT:\n case StaveModifierPosition.RIGHT:\n y = (stave.getYForLine(0) + stave.getBottomLineY()) / 2 + this.options.shift_y;\n if (this.position === StaveModifierPosition.LEFT) {\n x = stave.getX() - text_width - 24 + this.options.shift_x;\n }\n else {\n x = stave.getX() + stave.getWidth() + 24 + this.options.shift_x;\n }\n break;\n case StaveModifierPosition.ABOVE:\n case StaveModifierPosition.BELOW:\n x = stave.getX() + this.options.shift_x;\n if (this.options.justification === TextJustification.CENTER) {\n x += stave.getWidth() / 2 - text_width / 2;\n }\n else if (this.options.justification === TextJustification.RIGHT) {\n x += stave.getWidth() - text_width;\n }\n if (this.position === StaveModifierPosition.ABOVE) {\n y = stave.getYForTopText(2) + this.options.shift_y;\n }\n else {\n y = stave.getYForBottomText(2) + this.options.shift_y;\n }\n break;\n default:\n throw new RuntimeError('InvalidPosition', 'Value Must be in Modifier.Position.');\n }\n ctx.fillText('' + this.text, x, y + 4);\n ctx.restore();\n return this;\n }\n}\nStaveText.TEXT_FONT = {\n family: Font.SERIF,\n size: 16,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Renders time signatures glyphs for staffs\n// This class is used by TimeSignature to render the associated glyphs\nimport { Glyph } from './glyph';\nimport { defined } from './util';\nexport class TimeSignatureGlyph extends Glyph {\n constructor(timeSignature, topDigits, botDigits, code, point, options) {\n var _a;\n super(code, point, options);\n this.timeSignature = timeSignature;\n this.topGlyphs = [];\n this.botGlyphs = [];\n let topWidth = 0;\n for (let i = 0; i < topDigits.length; ++i) {\n let timeSigType = topDigits[i];\n switch (topDigits[i]) {\n case '-':\n timeSigType = 'Minus';\n break;\n case '+':\n timeSigType = botDigits.length > 0 ? 'PlusSmall' : 'Plus';\n break;\n case '(':\n timeSigType = botDigits.length > 0 ? 'ParensLeftSmall' : 'ParensLeft';\n break;\n case ')':\n timeSigType = botDigits.length > 0 ? 'ParensRightSmall' : 'ParensRight';\n break;\n }\n const topGlyph = new Glyph('timeSig' + timeSigType, this.timeSignature.point);\n this.topGlyphs.push(topGlyph);\n topWidth += (_a = topGlyph.getMetrics().width) !== null && _a !== void 0 ? _a : 0;\n }\n let botWidth = 0;\n for (let i = 0; i < botDigits.length; ++i) {\n let timeSigType = botDigits[i];\n switch (botDigits[i]) {\n case '+':\n timeSigType = 'PlusSmall';\n break;\n case '(':\n timeSigType = 'ParensLeftSmall';\n break;\n case ')':\n timeSigType = 'ParensRightSmall';\n break;\n }\n const botGlyph = new Glyph('timeSig' + timeSigType, this.timeSignature.point);\n this.botGlyphs.push(botGlyph);\n botWidth += defined(botGlyph.getMetrics().width);\n }\n this.width = Math.max(topWidth, botWidth);\n this.xMin = this.getMetrics().x_min;\n this.topStartX = (this.width - topWidth) / 2.0;\n this.botStartX = (this.width - botWidth) / 2.0;\n this.reset();\n }\n getMetrics() {\n return {\n x_min: this.xMin,\n x_max: this.xMin + this.width,\n width: this.width,\n };\n }\n renderToStave(x) {\n const stave = this.checkStave();\n const ctx = this.checkContext();\n let start_x = x + this.topStartX;\n let y = 0;\n if (this.botGlyphs.length > 0)\n y = stave.getYForLine(this.timeSignature.topLine);\n else\n y = (stave.getYForLine(this.timeSignature.topLine) + stave.getYForLine(this.timeSignature.bottomLine)) / 2;\n for (let i = 0; i < this.topGlyphs.length; ++i) {\n const glyph = this.topGlyphs[i];\n Glyph.renderOutline(ctx, glyph.getMetrics().outline, this.scale, start_x + this.x_shift, y);\n start_x += defined(glyph.getMetrics().width);\n }\n start_x = x + this.botStartX;\n y = stave.getYForLine(this.timeSignature.bottomLine);\n for (let i = 0; i < this.botGlyphs.length; ++i) {\n const glyph = this.botGlyphs[i];\n this.timeSignature.placeGlyphOnLine(glyph, stave, 0);\n Glyph.renderOutline(ctx, glyph.getMetrics().outline, this.scale, start_x + glyph.getMetrics().x_shift, y);\n start_x += defined(glyph.getMetrics().width);\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Implements time signatures glyphs for staffs\n// See tables.js for the internal time signatures\n// representation\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { TimeSignatureGlyph } from './timesigglyph';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nconst assertIsValidTimeSig = (timeSpec) => {\n const numbers = timeSpec.split('/');\n if (numbers.length !== 2 && numbers[0] !== '+' && numbers[0] !== '-') {\n throw new RuntimeError('BadTimeSignature', `Invalid time spec: ${timeSpec}. Must be in the form \"/\"`);\n }\n numbers.forEach((number) => {\n // Characters consisting in number 0..9, '+', '-', '(' or ')'\n if (/^[0-9+\\-()]+$/.test(number) == false) {\n throw new RuntimeError('BadTimeSignature', `Invalid time spec: ${timeSpec}. Must contain valid signatures.`);\n }\n });\n};\nexport class TimeSignature extends StaveModifier {\n constructor(timeSpec = '4/4', customPadding = 15, validate_args = true) {\n super();\n this.validate_args = validate_args;\n const padding = customPadding;\n const musicFont = Tables.currentMusicFont();\n this.point = musicFont.lookupMetric('digits.point');\n const fontLineShift = musicFont.lookupMetric('digits.shiftLine', 0);\n this.topLine = 2 + fontLineShift;\n this.bottomLine = 4 + fontLineShift;\n this.setPosition(StaveModifierPosition.BEGIN);\n this.info = this.parseTimeSpec(timeSpec);\n this.setWidth(defined(this.info.glyph.getMetrics().width));\n this.setPadding(padding);\n }\n static get CATEGORY() {\n return Category.TimeSignature;\n }\n static get glyphs() {\n return {\n C: {\n code: 'timeSigCommon',\n point: 40,\n line: 2,\n },\n 'C|': {\n code: 'timeSigCutCommon',\n point: 40,\n line: 2,\n },\n };\n }\n parseTimeSpec(timeSpec) {\n var _a, _b;\n if (timeSpec === 'C' || timeSpec === 'C|') {\n const { line, code, point } = TimeSignature.glyphs[timeSpec];\n return {\n line,\n num: false,\n glyph: new Glyph(code, point),\n };\n }\n if (this.validate_args) {\n assertIsValidTimeSig(timeSpec);\n }\n const parts = timeSpec.split('/');\n return {\n num: true,\n glyph: this.makeTimeSignatureGlyph((_a = parts[0]) !== null && _a !== void 0 ? _a : '', (_b = parts[1]) !== null && _b !== void 0 ? _b : ''),\n };\n }\n makeTimeSignatureGlyph(topDigits, botDigits) {\n return new TimeSignatureGlyph(this, topDigits, botDigits, 'timeSig0', this.point);\n }\n getInfo() {\n return this.info;\n }\n setTimeSig(timeSpec) {\n this.info = this.parseTimeSpec(timeSpec);\n return this;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('timesignature', this.getAttribute('id'));\n this.info.glyph.setStave(stave);\n this.info.glyph.setContext(ctx);\n this.placeGlyphOnLine(this.info.glyph, stave, this.info.line);\n this.info.glyph.renderToStave(this.x);\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Clef } from './clef';\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { KeySignature } from './keysignature';\nimport { Barline, BarlineType } from './stavebarline';\nimport { StaveModifierPosition } from './stavemodifier';\nimport { Repetition } from './staverepetition';\nimport { StaveSection } from './stavesection';\nimport { StaveTempo } from './stavetempo';\nimport { StaveText } from './stavetext';\nimport { Volta } from './stavevolta';\nimport { Tables } from './tables';\nimport { TimeSignature } from './timesignature';\nimport { Category, isBarline } from './typeguard';\nimport { RuntimeError } from './util';\n// Used by Stave.format() to sort the modifiers at the beginning and end of a stave.\n// The keys (computed property names) match the CATEGORY property in the\n// Barline, Clef, KeySignature, TimeSignature classes.\nconst SORT_ORDER_BEG_MODIFIERS = {\n [Barline.CATEGORY]: 0,\n [Clef.CATEGORY]: 1,\n [KeySignature.CATEGORY]: 2,\n [TimeSignature.CATEGORY]: 3,\n};\nconst SORT_ORDER_END_MODIFIERS = {\n [TimeSignature.CATEGORY]: 0,\n [KeySignature.CATEGORY]: 1,\n [Barline.CATEGORY]: 2,\n [Clef.CATEGORY]: 3,\n};\nexport class Stave extends Element {\n constructor(x, y, width, options) {\n super();\n // Initialized by the constructor via this.resetLines().\n this.height = 0;\n this.x = x;\n this.y = y;\n this.width = width;\n this.formatted = false;\n this.start_x = x + 5;\n this.end_x = x + width;\n this.modifiers = []; // stave modifiers (clef, key, time, barlines, coda, segno, etc.)\n this.measure = 0;\n this.clef = 'treble';\n this.endClef = undefined;\n this.resetFont();\n this.options = Object.assign({ vertical_bar_width: 10, num_lines: 5, fill_style: '#999999', left_bar: true, right_bar: true, spacing_between_lines_px: Tables.STAVE_LINE_DISTANCE, space_above_staff_ln: 4, space_below_staff_ln: 4, top_text_position: 1, bottom_text_position: 4, line_config: [] }, options);\n this.bounds = { x: this.x, y: this.y, w: this.width, h: 0 };\n this.defaultLedgerLineStyle = { strokeStyle: '#444', lineWidth: 1.4 };\n this.resetLines();\n // beg bar\n this.addModifier(new Barline(this.options.left_bar ? BarlineType.SINGLE : BarlineType.NONE));\n // end bar\n this.addEndModifier(new Barline(this.options.right_bar ? BarlineType.SINGLE : BarlineType.NONE));\n }\n static get CATEGORY() {\n return Category.Stave;\n }\n // This is the sum of the padding that normally goes on left + right of a stave during\n // drawing. Used to size staves correctly with content width.\n static get defaultPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('stave.padding') + musicFont.lookupMetric('stave.endPaddingMax');\n }\n // Right padding, used by system if startX is already determined.\n static get rightPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('stave.endPaddingMax');\n }\n /** Set default style for ledger lines. */\n setDefaultLedgerLineStyle(style) {\n this.defaultLedgerLineStyle = style;\n }\n /** Get default style for ledger lines. */\n getDefaultLedgerLineStyle() {\n return Object.assign(Object.assign({}, this.getStyle()), this.defaultLedgerLineStyle);\n }\n space(spacing) {\n return this.options.spacing_between_lines_px * spacing;\n }\n resetLines() {\n this.options.line_config = [];\n for (let i = 0; i < this.options.num_lines; i++) {\n this.options.line_config.push({ visible: true });\n }\n this.height = (this.options.num_lines + this.options.space_above_staff_ln) * this.options.spacing_between_lines_px;\n this.options.bottom_text_position = this.options.num_lines;\n }\n setNoteStartX(x) {\n if (!this.formatted)\n this.format();\n this.start_x = x;\n return this;\n }\n getNoteStartX() {\n if (!this.formatted)\n this.format();\n return this.start_x;\n }\n getNoteEndX() {\n if (!this.formatted)\n this.format();\n return this.end_x;\n }\n getTieStartX() {\n return this.start_x;\n }\n getTieEndX() {\n return this.end_x;\n }\n getX() {\n return this.x;\n }\n getNumLines() {\n return this.options.num_lines;\n }\n setNumLines(n) {\n this.options.num_lines = n;\n this.resetLines();\n return this;\n }\n setY(y) {\n this.y = y;\n return this;\n }\n getY() {\n return this.y;\n }\n getTopLineTopY() {\n return this.getYForLine(0) - Tables.STAVE_LINE_THICKNESS / 2;\n }\n getBottomLineBottomY() {\n return this.getYForLine(this.getNumLines() - 1) + Tables.STAVE_LINE_THICKNESS / 2;\n }\n setX(x) {\n const shift = x - this.x;\n this.formatted = false;\n this.x = x;\n this.start_x += shift;\n this.end_x += shift;\n for (let i = 0; i < this.modifiers.length; i++) {\n const mod = this.modifiers[i];\n mod.setX(mod.getX() + shift);\n }\n return this;\n }\n setWidth(width) {\n this.formatted = false;\n this.width = width;\n this.end_x = this.x + width;\n // reset the x position of the end barline (TODO(0xfe): This makes no sense)\n // this.modifiers[1].setX(this.end_x);\n return this;\n }\n getWidth() {\n return this.width;\n }\n getStyle() {\n return Object.assign({ fillStyle: this.options.fill_style, strokeStyle: this.options.fill_style, lineWidth: Tables.STAVE_LINE_THICKNESS }, super.getStyle());\n }\n /**\n * Set the measure number of this Stave.\n */\n setMeasure(measure) {\n this.measure = measure;\n return this;\n }\n /**\n * Return the measure number of this Stave.\n */\n getMeasure() {\n return this.measure;\n }\n /**\n * Gets the pixels to shift from the beginning of the stave\n * following the modifier at the provided index\n * @param {Number} index The index from which to determine the shift\n * @return {Number} The amount of pixels shifted\n */\n getModifierXShift(index = 0) {\n if (typeof index !== 'number') {\n throw new RuntimeError('InvalidIndex', 'Must be of number type');\n }\n if (!this.formatted)\n this.format();\n if (this.getModifiers(StaveModifierPosition.BEGIN).length === 1) {\n return 0;\n }\n // for right position modifiers zero shift seems correct, see 'Volta + Modifier Measure Test'\n if (this.modifiers[index].getPosition() === StaveModifierPosition.RIGHT) {\n return 0;\n }\n let start_x = this.start_x - this.x;\n const begBarline = this.modifiers[0];\n if (begBarline.getType() === BarlineType.REPEAT_BEGIN && start_x > begBarline.getWidth()) {\n start_x -= begBarline.getWidth();\n }\n return start_x;\n }\n /** Coda & Segno Symbol functions */\n setRepetitionType(type, yShift = 0) {\n this.modifiers.push(new Repetition(type, this.x, yShift));\n return this;\n }\n // Volta functions\n setVoltaType(type, number_t, y) {\n this.modifiers.push(new Volta(type, number_t, this.x, y));\n return this;\n }\n // Section functions\n setSection(section, y, xOffset = 0, fontSize, drawRect = true) {\n const staveSection = new StaveSection(section, this.x + xOffset, y, drawRect);\n if (fontSize)\n staveSection.setFontSize(fontSize);\n this.modifiers.push(staveSection);\n return this;\n }\n // Tempo functions\n setTempo(tempo, y) {\n this.modifiers.push(new StaveTempo(tempo, this.x, y));\n return this;\n }\n // Text functions\n setText(text, position, options = {}) {\n this.modifiers.push(new StaveText(text, position, options));\n return this;\n }\n getHeight() {\n return this.height;\n }\n getSpacingBetweenLines() {\n return this.options.spacing_between_lines_px;\n }\n getBoundingBox() {\n return new BoundingBox(this.x, this.y, this.width, this.getBottomY() - this.y);\n }\n getBottomY() {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const score_bottom = this.getYForLine(options.num_lines) + options.space_below_staff_ln * spacing;\n return score_bottom;\n }\n getBottomLineY() {\n return this.getYForLine(this.options.num_lines);\n }\n // This returns\n /** @returns the y for the *center* of a staff line */\n getYForLine(line) {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n const y = this.y + line * spacing + headroom * spacing;\n return y;\n }\n getLineForY(y) {\n // Does the reverse of getYForLine - somewhat dumb and just calls\n // getYForLine until the right value is reaches\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n return (y - this.y) / spacing - headroom;\n }\n getYForTopText(line = 0) {\n return this.getYForLine(-line - this.options.top_text_position);\n }\n getYForBottomText(line = 0) {\n return this.getYForLine(this.options.bottom_text_position + line);\n }\n getYForNote(line) {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n return this.y + headroom * spacing + 5 * spacing - line * spacing;\n }\n getYForGlyphs() {\n return this.getYForLine(3);\n }\n // This method adds a stave modifier to the stave. Note that the first two\n // modifiers (BarLines) are automatically added upon construction.\n addModifier(modifier, position) {\n if (position !== undefined) {\n modifier.setPosition(position);\n }\n modifier.setStave(this);\n this.formatted = false;\n this.modifiers.push(modifier);\n return this;\n }\n addEndModifier(modifier) {\n this.addModifier(modifier, StaveModifierPosition.END);\n return this;\n }\n // Bar Line functions\n setBegBarType(type) {\n // Only valid bar types at beginning of stave is none, single or begin repeat\n const { SINGLE, REPEAT_BEGIN, NONE } = BarlineType;\n if (type === SINGLE || type === REPEAT_BEGIN || type === NONE) {\n this.modifiers[0].setType(type);\n this.formatted = false;\n }\n return this;\n }\n setEndBarType(type) {\n // Repeat end not valid at end of stave\n if (type !== BarlineType.REPEAT_BEGIN) {\n this.modifiers[1].setType(type);\n this.formatted = false;\n }\n return this;\n }\n setClef(clefSpec, size, annotation, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n if (position === StaveModifierPosition.END) {\n this.endClef = clefSpec;\n }\n else {\n this.clef = clefSpec;\n }\n const clefs = this.getModifiers(position, Clef.CATEGORY);\n if (clefs.length === 0) {\n this.addClef(clefSpec, size, annotation, position);\n }\n else {\n clefs[0].setType(clefSpec, size, annotation);\n }\n return this;\n }\n getClef() {\n return this.clef;\n }\n setEndClef(clefSpec, size, annotation) {\n this.setClef(clefSpec, size, annotation, StaveModifierPosition.END);\n return this;\n }\n getEndClef() {\n return this.endClef;\n }\n setKeySignature(keySpec, cancelKeySpec, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n const keySignatures = this.getModifiers(position, KeySignature.CATEGORY);\n if (keySignatures.length === 0) {\n this.addKeySignature(keySpec, cancelKeySpec, position);\n }\n else {\n keySignatures[0].setKeySig(keySpec, cancelKeySpec);\n }\n return this;\n }\n setEndKeySignature(keySpec, cancelKeySpec) {\n this.setKeySignature(keySpec, cancelKeySpec, StaveModifierPosition.END);\n return this;\n }\n setTimeSignature(timeSpec, customPadding, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n const timeSignatures = this.getModifiers(position, TimeSignature.CATEGORY);\n if (timeSignatures.length === 0) {\n this.addTimeSignature(timeSpec, customPadding, position);\n }\n else {\n timeSignatures[0].setTimeSig(timeSpec);\n }\n return this;\n }\n setEndTimeSignature(timeSpec, customPadding) {\n this.setTimeSignature(timeSpec, customPadding, StaveModifierPosition.END);\n return this;\n }\n /**\n * Add a key signature to the stave.\n *\n * Example:\n * `stave.addKeySignature('Db');`\n * @param keySpec new key specification `[A-G][b|#]?`\n * @param cancelKeySpec\n * @param position\n * @returns\n */\n addKeySignature(keySpec, cancelKeySpec, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n this.addModifier(new KeySignature(keySpec, cancelKeySpec).setPosition(position), position);\n return this;\n }\n /**\n * Add a clef to the stave.\n *\n * Example:\n *\n * stave.addClef('treble')\n * @param clef clef (treble|bass|...) see {@link Clef.types}\n * @param size\n * @param annotation\n * @param position\n * @returns\n */\n addClef(clef, size, annotation, position) {\n if (position === undefined || position === StaveModifierPosition.BEGIN) {\n this.clef = clef;\n }\n else if (position === StaveModifierPosition.END) {\n this.endClef = clef;\n }\n this.addModifier(new Clef(clef, size, annotation), position);\n return this;\n }\n addEndClef(clef, size, annotation) {\n this.addClef(clef, size, annotation, StaveModifierPosition.END);\n return this;\n }\n /**\n * Add a time signature to the stave\n *\n * Example:\n *\n * `stave.addTimeSignature('4/4');`\n * @param timeSpec time signature specification `(C\\||C|\\d\\/\\d)`\n * @param customPadding\n * @param position\n * @returns\n */\n addTimeSignature(timeSpec, customPadding, position) {\n this.addModifier(new TimeSignature(timeSpec, customPadding), position);\n return this;\n }\n addEndTimeSignature(timeSpec, customPadding) {\n this.addTimeSignature(timeSpec, customPadding, StaveModifierPosition.END);\n return this;\n }\n // Deprecated\n addTrebleGlyph() {\n this.addClef('treble');\n return this;\n }\n /**\n * @param position\n * @param category\n * @returns array of StaveModifiers that match the provided position and category.\n */\n getModifiers(position, category) {\n const noPosition = position === undefined;\n const noCategory = category === undefined;\n if (noPosition && noCategory) {\n return this.modifiers;\n }\n else if (noPosition) {\n // A category was provided.\n return this.modifiers.filter((m) => category === m.getCategory());\n }\n else if (noCategory) {\n // A position was provided.\n return this.modifiers.filter((m) => position === m.getPosition());\n }\n else {\n // Both position and category were provided!\n return this.modifiers.filter((m) => position === m.getPosition() && category === m.getCategory());\n }\n }\n /**\n * Use the modifier's `getCategory()` as a key for the `order` array.\n * The retrieved value is used to sort modifiers from left to right (0 to to 3).\n */\n sortByCategory(items, order) {\n for (let i = items.length - 1; i >= 0; i--) {\n for (let j = 0; j < i; j++) {\n if (order[items[j].getCategory()] > order[items[j + 1].getCategory()]) {\n const temp = items[j];\n items[j] = items[j + 1];\n items[j + 1] = temp;\n }\n }\n }\n }\n format() {\n const begBarline = this.modifiers[0];\n const endBarline = this.modifiers[1];\n const begModifiers = this.getModifiers(StaveModifierPosition.BEGIN);\n const endModifiers = this.getModifiers(StaveModifierPosition.END);\n this.sortByCategory(begModifiers, SORT_ORDER_BEG_MODIFIERS);\n this.sortByCategory(endModifiers, SORT_ORDER_END_MODIFIERS);\n if (begModifiers.length > 1 && begBarline.getType() === BarlineType.REPEAT_BEGIN) {\n begModifiers.push(begModifiers.splice(0, 1)[0]);\n begModifiers.splice(0, 0, new Barline(BarlineType.SINGLE));\n }\n if (endModifiers.indexOf(endBarline) > 0) {\n endModifiers.splice(0, 0, new Barline(BarlineType.NONE));\n }\n let width;\n let padding;\n let modifier;\n let offset = 0;\n let x = this.x;\n for (let i = 0; i < begModifiers.length; i++) {\n modifier = begModifiers[i];\n padding = modifier.getPadding(i + offset);\n width = modifier.getWidth();\n x += padding;\n modifier.setX(x);\n x += width;\n if (padding + width === 0)\n offset--;\n }\n this.start_x = x;\n x = this.x + this.width;\n const widths = {\n left: 0,\n right: 0,\n paddingRight: 0,\n paddingLeft: 0,\n };\n let lastBarlineIdx = 0;\n for (let i = 0; i < endModifiers.length; i++) {\n modifier = endModifiers[i];\n lastBarlineIdx = isBarline(modifier) ? i : lastBarlineIdx;\n widths.right = 0;\n widths.left = 0;\n widths.paddingRight = 0;\n widths.paddingLeft = 0;\n const layoutMetrics = modifier.getLayoutMetrics();\n if (layoutMetrics) {\n if (i !== 0) {\n widths.right = layoutMetrics.xMax || 0;\n widths.paddingRight = layoutMetrics.paddingRight || 0;\n }\n widths.left = -layoutMetrics.xMin || 0;\n widths.paddingLeft = layoutMetrics.paddingLeft || 0;\n if (i === endModifiers.length - 1) {\n widths.paddingLeft = 0;\n }\n }\n else {\n widths.paddingRight = modifier.getPadding(i - lastBarlineIdx);\n if (i !== 0) {\n widths.right = modifier.getWidth();\n }\n if (i === 0) {\n widths.left = modifier.getWidth();\n }\n }\n x -= widths.paddingRight;\n x -= widths.right;\n modifier.setX(x);\n x -= widths.left;\n x -= widths.paddingLeft;\n }\n this.end_x = endModifiers.length === 1 ? this.x + this.width : x;\n this.formatted = true;\n }\n /**\n * All drawing functions below need the context to be set.\n */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n ctx.openGroup('stave', this.getAttribute('id'));\n if (!this.formatted)\n this.format();\n const num_lines = this.options.num_lines;\n const width = this.width;\n const x = this.x;\n let y;\n // Render lines\n for (let line = 0; line < num_lines; line++) {\n y = this.getYForLine(line);\n this.applyStyle();\n if (this.options.line_config[line].visible) {\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.lineTo(x + width, y);\n ctx.stroke();\n }\n this.restoreStyle();\n }\n // Draw the modifiers (bar lines, coda, segno, repeat brackets, etc.)\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n // Only draw modifier if it has a draw function\n if (typeof modifier.draw === 'function') {\n modifier.applyStyle(ctx);\n modifier.draw(this, this.getModifierXShift(i));\n modifier.restoreStyle(ctx);\n }\n }\n // Render measure numbers\n if (this.measure > 0) {\n ctx.save();\n ctx.setFont(this.textFont);\n const textWidth = ctx.measureText('' + this.measure).width;\n y = this.getYForTopText(0) + 3;\n ctx.fillText('' + this.measure, this.x - textWidth / 2, y);\n ctx.restore();\n }\n ctx.closeGroup();\n return this;\n }\n getVerticalBarWidth() {\n return this.options.vertical_bar_width;\n }\n /**\n * Get the current configuration for the Stave.\n * @return {Array} An array of configuration objects.\n */\n getConfigForLines() {\n return this.options.line_config;\n }\n /**\n * Configure properties of the lines in the Stave\n * @param line_number The index of the line to configure.\n * @param line_config An configuration object for the specified line.\n * @throws RuntimeError \"StaveConfigError\" When the specified line number is out of\n * range of the number of lines specified in the constructor.\n */\n setConfigForLine(line_number, line_config) {\n if (line_number >= this.options.num_lines || line_number < 0) {\n throw new RuntimeError('StaveConfigError', 'The line number must be within the range of the number of lines in the Stave.');\n }\n if (line_config.visible === undefined) {\n throw new RuntimeError('StaveConfigError', \"The line configuration object is missing the 'visible' property.\");\n }\n if (typeof line_config.visible !== 'boolean') {\n throw new RuntimeError('StaveConfigError', \"The line configuration objects 'visible' property must be true or false.\");\n }\n this.options.line_config[line_number] = line_config;\n return this;\n }\n /**\n * Set the staff line configuration array for all of the lines at once.\n * @param lines_configuration An array of line configuration objects. These objects\n * are of the same format as the single one passed in to setLineConfiguration().\n * The caller can set null for any line config entry if it is desired that the default be used\n * @throws RuntimeError \"StaveConfigError\" When the lines_configuration array does not have\n * exactly the same number of elements as the num_lines configuration object set in\n * the constructor.\n */\n setConfigForLines(lines_configuration) {\n if (lines_configuration.length !== this.options.num_lines) {\n throw new RuntimeError('StaveConfigError', 'The length of the lines configuration array must match the number of lines in the Stave');\n }\n // Make sure the defaults are present in case an incomplete set of\n // configuration options were supplied.\n // eslint-disable-next-line\n for (const line_config in lines_configuration) {\n // Allow '{}' to be used if the caller just wants the default for a particular node.\n if (lines_configuration[line_config].visible == undefined) {\n lines_configuration[line_config] = this.options.line_config[line_config];\n }\n this.options.line_config[line_config] = Object.assign(Object.assign({}, this.options.line_config[line_config]), lines_configuration[line_config]);\n }\n this.options.line_config = lines_configuration;\n return this;\n }\n static formatBegModifiers(staves) {\n let maxX = 0;\n // align note start\n staves.forEach((stave) => {\n if (stave.getNoteStartX() > maxX)\n maxX = stave.getNoteStartX();\n });\n staves.forEach((stave) => {\n stave.setNoteStartX(maxX);\n });\n maxX = 0;\n // align REPEAT_BEGIN\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.Barline);\n modifiers.forEach((modifier) => {\n if (modifier.getType() == BarlineType.REPEAT_BEGIN)\n if (modifier.getX() > maxX)\n maxX = modifier.getX();\n });\n });\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.Barline);\n modifiers.forEach((modifier) => {\n if (modifier.getType() == BarlineType.REPEAT_BEGIN)\n modifier.setX(maxX);\n });\n });\n maxX = 0;\n // Align time signatures\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.TimeSignature);\n modifiers.forEach((modifier) => {\n if (modifier.getX() > maxX)\n maxX = modifier.getX();\n });\n });\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.TimeSignature);\n modifiers.forEach((modifier) => {\n modifier.setX(maxX);\n });\n });\n }\n}\nStave.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 8,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nfunction drawBoldDoubleLine(ctx, type, topX, topY, botY) {\n if (type !== StaveConnector.type.BOLD_DOUBLE_LEFT && type !== StaveConnector.type.BOLD_DOUBLE_RIGHT) {\n throw new RuntimeError('InvalidConnector', 'A REPEAT_BEGIN or REPEAT_END type must be provided.');\n }\n let x_shift = 3;\n let variableWidth = 3.5; // Width for avoiding anti-aliasing width issues\n const thickLineOffset = 2; // For aesthetics\n if (type === StaveConnector.type.BOLD_DOUBLE_RIGHT) {\n x_shift = -5; // Flips the side of the thin line\n variableWidth = 3;\n }\n // Thin line\n ctx.fillRect(topX + x_shift, topY, 1, botY - topY);\n // Thick line\n ctx.fillRect(topX - thickLineOffset, topY, variableWidth, botY - topY);\n}\n/** StaveConnector implements the connector lines between staves of a system. */\nexport class StaveConnector extends Element {\n constructor(top_stave, bottom_stave) {\n super();\n this.thickness = Tables.STAVE_LINE_THICKNESS;\n this.width = 3;\n this.top_stave = top_stave;\n this.bottom_stave = bottom_stave;\n this.type = StaveConnector.type.DOUBLE;\n this.resetFont();\n // 1. Offset Bold Double Left to align with offset Repeat Begin bars\n // 2. Offset BRACE type not to overlap with another StaveConnector\n this.x_shift = 0;\n this.texts = [];\n }\n static get CATEGORY() {\n return Category.StaveConnector;\n }\n /**\n * Set type.\n * @param type see {@link StaveConnector.type} & {@link StaveConnector.typeString}\n */\n setType(type) {\n const newType = typeof type === 'string' ? StaveConnector.typeString[type] : type;\n // Be certain that the type is a valid type:\n if (Object.values(StaveConnector.type).includes(newType)) {\n this.type = newType;\n }\n return this;\n }\n /**\n * Get type.\n * @returns number {@link StaveConnector.type}\n */\n getType() {\n return this.type;\n }\n /** Set optional associated Text. */\n setText(text, options = {}) {\n this.texts.push({\n content: text,\n options: Object.assign({ shift_x: 0, shift_y: 0 }, options),\n });\n return this;\n }\n setXShift(x_shift) {\n if (typeof x_shift !== 'number') {\n throw new RuntimeError('InvalidType', 'x_shift must be a Number');\n }\n this.x_shift = x_shift;\n return this;\n }\n getXShift() {\n return this.x_shift;\n }\n /** Render connector and associated text. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let topY = this.top_stave.getYForLine(0);\n let botY = this.bottom_stave.getYForLine(this.bottom_stave.getNumLines() - 1) + this.thickness;\n let width = this.width;\n let topX = this.top_stave.getX();\n const isRightSidedConnector = this.type === StaveConnector.type.SINGLE_RIGHT ||\n this.type === StaveConnector.type.BOLD_DOUBLE_RIGHT ||\n this.type === StaveConnector.type.THIN_DOUBLE;\n if (isRightSidedConnector) {\n topX = this.top_stave.getX() + this.top_stave.getWidth();\n }\n let attachment_height = botY - topY;\n switch (this.type) {\n case StaveConnector.type.SINGLE:\n width = 1;\n break;\n case StaveConnector.type.SINGLE_LEFT:\n width = 1;\n break;\n case StaveConnector.type.SINGLE_RIGHT:\n width = 1;\n break;\n case StaveConnector.type.DOUBLE:\n topX -= this.width + 2;\n topY -= this.thickness;\n attachment_height += 0.5;\n break;\n case StaveConnector.type.BRACE: {\n width = 12;\n // May need additional code to draw brace\n const x1 = this.top_stave.getX() - 2 + this.x_shift;\n const y1 = topY;\n const x3 = x1;\n const y3 = botY;\n const x2 = x1 - width;\n const y2 = y1 + attachment_height / 2.0;\n const cpx1 = x2 - 0.9 * width;\n const cpy1 = y1 + 0.2 * attachment_height;\n const cpx2 = x1 + 1.1 * width;\n const cpy2 = y2 - 0.135 * attachment_height;\n const cpx3 = cpx2;\n const cpy3 = y2 + 0.135 * attachment_height;\n const cpx4 = cpx1;\n const cpy4 = y3 - 0.2 * attachment_height;\n const cpx5 = x2 - width;\n const cpy5 = cpy4;\n const cpx6 = x1 + 0.4 * width;\n const cpy6 = y2 + 0.135 * attachment_height;\n const cpx7 = cpx6;\n const cpy7 = y2 - 0.135 * attachment_height;\n const cpx8 = cpx5;\n const cpy8 = cpy1;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);\n ctx.bezierCurveTo(cpx3, cpy3, cpx4, cpy4, x3, y3);\n ctx.bezierCurveTo(cpx5, cpy5, cpx6, cpy6, x2, y2);\n ctx.bezierCurveTo(cpx7, cpy7, cpx8, cpy8, x1, y1);\n ctx.fill();\n ctx.stroke();\n break;\n }\n case StaveConnector.type.BRACKET:\n topY -= 6;\n botY += 6;\n attachment_height = botY - topY;\n Glyph.renderGlyph(ctx, topX - 5, topY, 40, 'bracketTop');\n Glyph.renderGlyph(ctx, topX - 5, botY, 40, 'bracketBottom');\n topX -= this.width + 2;\n break;\n case StaveConnector.type.BOLD_DOUBLE_LEFT:\n drawBoldDoubleLine(ctx, this.type, topX + this.x_shift, topY, botY - this.thickness);\n break;\n case StaveConnector.type.BOLD_DOUBLE_RIGHT:\n drawBoldDoubleLine(ctx, this.type, topX, topY, botY - this.thickness);\n break;\n case StaveConnector.type.THIN_DOUBLE:\n width = 1;\n attachment_height -= this.thickness;\n break;\n case StaveConnector.type.NONE:\n break;\n default:\n throw new RuntimeError('InvalidType', `The provided StaveConnector.type (${this.type}) is invalid.`);\n }\n if (this.type !== StaveConnector.type.BRACE &&\n this.type !== StaveConnector.type.BOLD_DOUBLE_LEFT &&\n this.type !== StaveConnector.type.BOLD_DOUBLE_RIGHT &&\n this.type !== StaveConnector.type.NONE) {\n ctx.fillRect(topX, topY, width, attachment_height);\n }\n // If the connector is a thin double barline, draw the paralell line\n if (this.type === StaveConnector.type.THIN_DOUBLE) {\n ctx.fillRect(topX - 3, topY, width, attachment_height);\n }\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n // Add stave connector text\n for (let i = 0; i < this.texts.length; i++) {\n const text = this.texts[i];\n const text_width = ctx.measureText('' + text.content).width;\n const x = this.top_stave.getX() - text_width - 24 + text.options.shift_x;\n const y = (this.top_stave.getYForLine(0) + this.bottom_stave.getBottomLineY()) / 2 + text.options.shift_y;\n ctx.fillText('' + text.content, x, y + 4);\n }\n ctx.restore();\n }\n}\nStaveConnector.TEXT_FONT = {\n family: Font.SERIF,\n size: 16,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n/**\n * SINGLE_LEFT and SINGLE are the same value for compatibility\n * with older versions of vexflow which didn't have right sided\n * stave connectors.\n */\nStaveConnector.type = {\n SINGLE_RIGHT: 0,\n SINGLE_LEFT: 1,\n SINGLE: 1,\n DOUBLE: 2,\n BRACE: 3,\n BRACKET: 4,\n BOLD_DOUBLE_LEFT: 5,\n BOLD_DOUBLE_RIGHT: 6,\n THIN_DOUBLE: 7,\n NONE: 8,\n};\n/**\n * Connector type:\n * * \"singleRight\"\n * * \"singleLeft\"\n * * \"single\"\n * * \"double\"\n * * \"brace\"\n * * \"bracket\"\n * * \"boldDoubleLeft\"\n * * \"boldDoubleRight\"\n * * \"thinDouble\"\n * * \"none\"\n */\nStaveConnector.typeString = {\n singleRight: StaveConnector.type.SINGLE_RIGHT,\n singleLeft: StaveConnector.type.SINGLE_LEFT,\n single: StaveConnector.type.SINGLE,\n double: StaveConnector.type.DOUBLE,\n brace: StaveConnector.type.BRACE,\n bracket: StaveConnector.type.BRACKET,\n boldDoubleLeft: StaveConnector.type.BOLD_DOUBLE_LEFT,\n boldDoubleRight: StaveConnector.type.BOLD_DOUBLE_RIGHT,\n thinDouble: StaveConnector.type.THIN_DOUBLE,\n none: StaveConnector.type.NONE,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Beam } from './beam';\nimport { Font } from './font';\nimport { Fraction } from './fraction';\nimport { ModifierContext } from './modifiercontext';\nimport { Stave } from './stave';\nimport { StaveConnector } from './staveconnector';\nimport { Tables } from './tables';\nimport { TickContext } from './tickcontext';\nimport { isNote, isStaveNote } from './typeguard';\nimport { defined, log, midLine, RuntimeError } from './util';\nimport { Voice } from './voice';\n// Helper function\nconst sumArray = (arr) => arr.reduce((a, b) => a + b, 0);\n/**\n * Create `Alignment`s for each tick in `voices`. Also calculate the\n * total number of ticks in voices.\n */\nfunction createContexts(voices, makeContext, addToContext) {\n if (voices.length == 0)\n return {\n map: {},\n array: [],\n list: [],\n resolutionMultiplier: 0,\n };\n // Initialize tick maps.\n const tickToContextMap = {};\n const tickList = [];\n const contexts = [];\n const resolutionMultiplier = Formatter.getResolutionMultiplier(voices);\n // For each voice, extract notes and create a context for every\n // new tick that hasn't been seen before.\n voices.forEach((voice, voiceIndex) => {\n // Use resolution multiplier as denominator so that no additional expansion\n // of fractional tick values is needed.\n const ticksUsed = new Fraction(0, resolutionMultiplier);\n voice.getTickables().forEach((tickable) => {\n const integerTicks = ticksUsed.numerator;\n // If we have no tick context for this tick, create one.\n if (!tickToContextMap[integerTicks]) {\n const newContext = makeContext({ tickID: integerTicks });\n contexts.push(newContext);\n tickToContextMap[integerTicks] = newContext;\n // Maintain a list of unique integerTicks.\n tickList.push(integerTicks);\n }\n // Add this tickable to the TickContext.\n addToContext(tickable, tickToContextMap[integerTicks], voiceIndex);\n ticksUsed.add(tickable.getTicks());\n });\n });\n return {\n map: tickToContextMap,\n array: contexts,\n list: tickList.sort((a, b) => a - b),\n resolutionMultiplier,\n };\n}\n// eslint-disable-next-line\nfunction L(...args) {\n if (Formatter.DEBUG)\n log('Vex.Flow.Formatter', args);\n}\n/**\n * Get the rest line number of the next non-rest note(s).\n * @param notes array of Notes\n * @param currRestLine\n * @param currNoteIndex current note index\n * @param compare if true, return the midpoint between the current rest line and the next rest line\n * @returns a line number, which determines the vertical position of a rest.\n */\nfunction getRestLineForNextNoteGroup(notes, currRestLine, currNoteIndex, compare) {\n // If no valid next note group, nextRestLine is same as current.\n let nextRestLine = currRestLine;\n // Start with the next note and keep going until we find a valid non-rest note group.\n for (let noteIndex = currNoteIndex + 1; noteIndex < notes.length; noteIndex++) {\n const note = notes[noteIndex];\n if (isNote(note) && !note.isRest() && !note.shouldIgnoreTicks()) {\n nextRestLine = note.getLineForRest();\n break;\n }\n }\n // Locate the mid point between two lines.\n if (compare && currRestLine !== nextRestLine) {\n const top = Math.max(currRestLine, nextRestLine);\n const bot = Math.min(currRestLine, nextRestLine);\n nextRestLine = midLine(top, bot);\n }\n return nextRestLine;\n}\n/**\n * Format implements the formatting and layout algorithms that are used\n * to position notes in a voice. The algorithm can align multiple voices both\n * within a stave, and across multiple staves.\n *\n * To do this, the formatter breaks up voices into a grid of rational-valued\n * `ticks`, to which each note is assigned. Then, minimum widths are assigned\n * to each tick based on the widths of the notes and modifiers in that tick. This\n * establishes the smallest amount of space required for each tick.\n *\n * Finally, the formatter distributes the left over space proportionally to\n * all the ticks, setting the `x` values of the notes in each tick.\n *\n * See `tests/formatter_tests.ts` for usage examples. The helper functions included\n * here (`FormatAndDraw`, `FormatAndDrawTab`) also serve as useful usage examples.\n */\nexport class Formatter {\n constructor(options) {\n this.formatterOptions = Object.assign({ globalSoftmax: false, softmaxFactor: Tables.SOFTMAX_FACTOR, maxIterations: 5 }, options);\n this.justifyWidth = 0;\n this.totalCost = 0;\n this.totalShift = 0;\n this.durationStats = {};\n // Minimum width required to render all the notes in the voices.\n this.minTotalWidth = 0;\n // This is set to `true` after `minTotalWidth` is calculated.\n this.hasMinTotalWidth = false;\n // Arrays of tick and modifier contexts.\n this.tickContexts = {\n map: {},\n array: [],\n list: [],\n resolutionMultiplier: 0,\n };\n this.modifierContexts = [];\n // Gaps between contexts, for free movement of notes post\n // formatting.\n this.contextGaps = {\n total: 0,\n gaps: [],\n };\n this.voices = [];\n this.lossHistory = [];\n }\n /**\n * Helper function to layout \"notes\" one after the other without\n * regard for proportions. Useful for tests and debugging.\n */\n static SimpleFormat(notes, x = 0, { paddingBetween = 10 } = {}) {\n notes.reduce((accumulator, note) => {\n note.addToModifierContext(new ModifierContext());\n const tick = new TickContext().addTickable(note).preFormat();\n const metrics = tick.getMetrics();\n tick.setX(accumulator + metrics.totalLeftPx);\n return accumulator + tick.getWidth() + metrics.totalRightPx + paddingBetween;\n }, x);\n }\n /** Helper function to plot formatter debug info. */\n static plotDebugging(ctx, formatter, xPos, y1, y2, options) {\n options = Object.assign({ stavePadding: Tables.currentMusicFont().lookupMetric('stave.padding') }, options);\n const x = xPos + options.stavePadding;\n const contextGaps = formatter.contextGaps;\n function stroke(x1, x2, color) {\n ctx.beginPath();\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n ctx.setLineWidth(1);\n ctx.fillRect(x1, y1, Math.max(x2 - x1, 0), y2 - y1);\n }\n ctx.save();\n ctx.setFont(Font.SANS_SERIF, 8);\n contextGaps.gaps.forEach((gap) => {\n stroke(x + gap.x1, x + gap.x2, 'rgba(100,200,100,0.4)');\n ctx.setFillStyle('green');\n ctx.fillText(Math.round(gap.x2 - gap.x1).toString(), x + gap.x1, y2 + 12);\n });\n ctx.setFillStyle('red');\n ctx.fillText(`Loss: ${(formatter.totalCost || 0).toFixed(2)} Shift: ${(formatter.totalShift || 0).toFixed(2)} Gap: ${contextGaps.total.toFixed(2)}`, x - 20, y2 + 27);\n ctx.restore();\n }\n /**\n * Helper function to format and draw a single voice. Returns a bounding\n * box for the notation.\n * @param ctx the rendering context\n * @param stave the stave to which to draw (`Stave` or `TabStave`)\n * @param notes array of `Note` instances (`Note`, `TextNote`, `TabNote`, etc.)\n * @param params one of below:\n * * Setting `autobeam` only `(context, stave, notes, true)` or\n * `(ctx, stave, notes, {autobeam: true})`\n * * Setting `align_rests` a struct is needed `(context, stave, notes, {align_rests: true})`\n * * Setting both a struct is needed `(context, stave, notes, {\n * autobeam: true, align_rests: true})`\n * * `autobeam` automatically generates beams for the notes.\n * * `align_rests` aligns rests with nearby notes.\n */\n static FormatAndDraw(ctx, stave, notes, params) {\n let options = {\n auto_beam: false,\n align_rests: false,\n };\n if (typeof params === 'object') {\n options = Object.assign(Object.assign({}, options), params);\n }\n else if (typeof params === 'boolean') {\n options.auto_beam = params;\n }\n // Start by creating a voice and adding all the notes to it.\n const voice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(notes);\n // Then create beams, if requested.\n const beams = options.auto_beam ? Beam.applyAndGetBeams(voice) : [];\n // Instantiate a `Formatter` and format the notes.\n new Formatter()\n .joinVoices([voice]) // , { align_rests: options.align_rests })\n .formatToStave([voice], stave, { align_rests: options.align_rests, stave });\n // Render the voice and beams to the stave.\n voice.setStave(stave).draw(ctx, stave);\n beams.forEach((beam) => beam.setContext(ctx).draw());\n // Return the bounding box of the voice.\n return voice.getBoundingBox();\n }\n /**\n * Helper function to format and draw aligned tab and stave notes in two\n * separate staves.\n * @param ctx the rendering context\n * @param tabstave a `TabStave` instance on which to render `TabNote`s.\n * @param stave a `Stave` instance on which to render `Note`s.\n * @param notes array of `Note` instances for the stave (`Note`, `BarNote`, etc.)\n * @param tabnotes array of `Note` instances for the tab stave (`TabNote`, `BarNote`, etc.)\n * @param autobeam automatically generate beams.\n * @param params a configuration object:\n * * `autobeam` automatically generates beams for the notes.\n * * `align_rests` aligns rests with nearby notes.\n */\n static FormatAndDrawTab(ctx, tabstave, stave, tabnotes, notes, autobeam, params) {\n let opts = {\n auto_beam: autobeam,\n align_rests: false,\n };\n if (typeof params === 'object') {\n opts = Object.assign(Object.assign({}, opts), params);\n }\n else if (typeof params === 'boolean') {\n opts.auto_beam = params;\n }\n // Create a `4/4` voice for `notes`.\n const notevoice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(notes);\n // Create a `4/4` voice for `tabnotes`.\n const tabvoice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(tabnotes);\n // Then create beams, if requested.\n const beams = opts.auto_beam ? Beam.applyAndGetBeams(notevoice) : [];\n // Instantiate a `Formatter` and align tab and stave notes.\n new Formatter()\n .joinVoices([notevoice]) // , { align_rests: opts.align_rests })\n .joinVoices([tabvoice])\n .formatToStave([notevoice, tabvoice], stave, { align_rests: opts.align_rests });\n // Render voices and beams to staves.\n notevoice.draw(ctx, stave);\n tabvoice.draw(ctx, tabstave);\n beams.forEach((beam) => beam.setContext(ctx).draw());\n // Draw a connector between tab and note staves.\n new StaveConnector(stave, tabstave).setContext(ctx).draw();\n }\n /**\n * Automatically set the vertical position of rests based on previous/next note positions.\n * @param tickables an array of Tickables.\n * @param alignAllNotes If `false`, only align rests that are within a group of beamed notes.\n * @param alignTuplets If `false`, ignores tuplets.\n */\n static AlignRestsToNotes(tickables, alignAllNotes, alignTuplets) {\n tickables.forEach((currTickable, index) => {\n if (isStaveNote(currTickable) && currTickable.isRest()) {\n if (currTickable.getTuplet() && !alignTuplets) {\n return;\n }\n // If activated rests not on default can be rendered as specified.\n const position = currTickable.getGlyph().position.toUpperCase();\n if (position !== 'R/4' && position !== 'B/4') {\n return;\n }\n if (alignAllNotes || currTickable.getBeam()) {\n // Align rests with previous/next notes.\n const props = currTickable.getKeyProps()[0];\n if (index === 0) {\n props.line = getRestLineForNextNoteGroup(tickables, props.line, index, false);\n }\n else if (index > 0 && index < tickables.length) {\n // If previous tickable is a rest, use its line number.\n const prevTickable = tickables[index - 1];\n if (isStaveNote(prevTickable)) {\n if (prevTickable.isRest()) {\n props.line = prevTickable.getKeyProps()[0].line;\n }\n else {\n const restLine = prevTickable.getLineForRest();\n // Get the rest line for next valid non-rest note group.\n props.line = getRestLineForNextNoteGroup(tickables, restLine, index, true);\n }\n }\n }\n currTickable.setKeyLine(0, props.line);\n }\n }\n });\n }\n /**\n * Find all the rests in each of the `voices` and align them to neighboring notes.\n *\n * @param voices\n * @param alignAllNotes If `false`, only align rests within beamed groups of notes. If `true`, align all rests.\n */\n alignRests(voices, alignAllNotes) {\n if (!voices || !voices.length) {\n throw new RuntimeError('BadArgument', 'No voices to format rests');\n }\n voices.forEach((voice) => Formatter.AlignRestsToNotes(voice.getTickables(), alignAllNotes));\n }\n /**\n * Estimate the width required to render 'voices'. This is done by:\n * 1. Sum the widths of all the tick contexts\n * 2. Estimate the padding.\n * The latter is done by calculating the padding 3 different ways, and taking the\n * greatest value:\n * 1. the padding required for unaligned notes in different voices\n * 2. the padding based on the stddev of the tickable widths\n * 3. the padding based on the stddev of the tickable durations.\n *\n * The last 2 quantities estimate a 'width entropy', where notes might need more\n * room than the proportional formatting gives them. A measure of all same duration\n * and width will need no extra padding, and all these quantities will be\n * zero in that case.\n *\n * Note: joinVoices has to be called before calling preCalculateMinTotalWidth.\n *\n * @param voices the voices that contain the notes\n * @returns the estimated width in pixels\n */\n preCalculateMinTotalWidth(voices) {\n const unalignedPadding = Tables.currentMusicFont().lookupMetric('stave.unalignedNotePadding');\n // Calculate additional padding based on 3 methods:\n // 1) unaligned beats in voices, 2) variance of width, 3) variance of durations\n let unalignedCtxCount = 0;\n let wsum = 0;\n let dsum = 0;\n const widths = [];\n const durations = [];\n // Cache results.\n if (this.hasMinTotalWidth)\n return this.minTotalWidth;\n // Create tick contexts.\n if (!voices) {\n throw new RuntimeError('BadArgument', \"'voices' required to run preCalculateMinTotalWidth\");\n }\n this.createTickContexts(voices);\n // eslint-disable-next-line\n const { list: contextList, map: contextMap } = this.tickContexts;\n this.minTotalWidth = 0;\n // Go through each tick context and calculate total width,\n // and also accumulate values used in padding hints\n contextList.forEach((tick) => {\n const context = contextMap[tick];\n context.preFormat();\n // If this TC doesn't have all the voices on it, it's unaligned.\n // so increment the unaligned padding accumulator\n if (context.getTickables().length < voices.length) {\n unalignedCtxCount += 1;\n }\n // Calculate the 'width entropy' over all the Tickables.\n context.getTickables().forEach((t) => {\n wsum += t.getMetrics().width;\n dsum += t.getTicks().value();\n widths.push(t.getMetrics().width);\n durations.push(t.getTicks().value());\n });\n const width = context.getWidth();\n this.minTotalWidth += width;\n });\n this.hasMinTotalWidth = true;\n // normalized (0-1) STDDEV of widths/durations gives us padding hints.\n const wavg = wsum > 0 ? wsum / widths.length : 1 / widths.length;\n const wvar = sumArray(widths.map((ll) => Math.pow(ll - wavg, 2)));\n const wpads = Math.pow(wvar / widths.length, 0.5) / wavg;\n const davg = dsum / durations.length;\n const dvar = sumArray(durations.map((ll) => Math.pow(ll - davg, 2)));\n const dpads = Math.pow(dvar / durations.length, 0.5) / davg;\n // Find max of 3 methods pad the width with that\n const padmax = Math.max(dpads, wpads) * contextList.length * unalignedPadding;\n const unalignedPad = unalignedPadding * unalignedCtxCount;\n return this.minTotalWidth + Math.max(unalignedPad, padmax);\n }\n /**\n * Get minimum width required to render all voices. Either `format` or\n * `preCalculateMinTotalWidth` must be called before this method.\n */\n getMinTotalWidth() {\n if (!this.hasMinTotalWidth) {\n throw new RuntimeError('NoMinTotalWidth', \"Call 'preCalculateMinTotalWidth' or 'preFormat' before calling 'getMinTotalWidth'\");\n }\n return this.minTotalWidth;\n }\n /** Calculate the resolution multiplier for `voices`. */\n static getResolutionMultiplier(voices) {\n if (!voices || !voices.length) {\n throw new RuntimeError('BadArgument', 'No voices to format');\n }\n const totalTicks = voices[0].getTotalTicks();\n const resolutionMultiplier = voices.reduce((accumulator, voice) => {\n if (!voice.getTotalTicks().equals(totalTicks)) {\n throw new RuntimeError('TickMismatch', 'Voices should have same total note duration in ticks.');\n }\n if (voice.getMode() === Voice.Mode.STRICT && !voice.isComplete()) {\n throw new RuntimeError('IncompleteVoice', 'Voice does not have enough notes.');\n }\n return Math.max(accumulator, Fraction.LCM(accumulator, voice.getResolutionMultiplier()));\n }, 1);\n return resolutionMultiplier;\n }\n /** Create a `ModifierContext` for each tick in `voices`. */\n createModifierContexts(voices) {\n if (voices.length == 0)\n return;\n const resolutionMultiplier = Formatter.getResolutionMultiplier(voices);\n // Initialize tick maps.\n const tickToContextMap = new Map();\n const contexts = [];\n // For each voice, extract notes and create a context for every\n // new tick that hasn't been seen before.\n voices.forEach((voice) => {\n // Use resolution multiplier as denominator so that no additional expansion\n // of fractional tick values is needed.\n const ticksUsed = new Fraction(0, resolutionMultiplier);\n voice.getTickables().forEach((tickable) => {\n const integerTicks = ticksUsed.numerator;\n let staveTickToContextMap = tickToContextMap.get(tickable.getStave());\n // If we have no tick context for this tick, create one.\n if (!staveTickToContextMap) {\n tickToContextMap.set(tickable.getStave(), {});\n staveTickToContextMap = tickToContextMap.get(tickable.getStave());\n }\n if (!(staveTickToContextMap ? staveTickToContextMap[integerTicks] : undefined)) {\n const newContext = new ModifierContext();\n contexts.push(newContext);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n staveTickToContextMap[integerTicks] = newContext;\n }\n // Add this tickable to the TickContext.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n tickable.addToModifierContext(staveTickToContextMap[integerTicks]);\n ticksUsed.add(tickable.getTicks());\n });\n });\n this.modifierContexts.push({\n map: tickToContextMap,\n array: contexts,\n resolutionMultiplier,\n });\n }\n /**\n * Create a `TickContext` for each tick in `voices`. Also calculate the\n * total number of ticks in voices.\n */\n createTickContexts(voices) {\n const fn = (tickable, context, voiceIndex) => context.addTickable(tickable, voiceIndex);\n const contexts = createContexts(voices, (tick) => new TickContext(tick), fn);\n this.tickContexts = contexts;\n const contextArray = this.tickContexts.array;\n contextArray.forEach((context) => {\n context.tContexts = contextArray;\n });\n return contexts;\n }\n /**\n * Get the AlignmentContexts of TickContexts that were created by createTickContexts.\n * Returns undefined if createTickContexts has not yet been run.\n */\n getTickContexts() {\n return this.tickContexts;\n }\n /**\n * This is the core formatter logic. Format voices and justify them\n * to `justifyWidth` pixels. `renderingContext` is required to justify elements\n * that can't retrieve widths without a canvas. This method sets the `x` positions\n * of all the tickables/notes in the formatter.\n */\n preFormat(justifyWidth = 0, renderingContext, voicesParam, stave) {\n // Initialize context maps.\n const contexts = this.tickContexts;\n if (!contexts) {\n throw new RuntimeError('NoTickContexts', 'preFormat requires TickContexts');\n }\n const { list: contextList, map: contextMap } = contexts;\n // Reset loss history for evaluator.\n this.lossHistory = [];\n // If voices and a stave were provided, set the Stave for each voice\n // and preFormat to apply Y values to the notes;\n if (voicesParam && stave) {\n voicesParam.forEach((voice) => voice.setStave(stave).preFormat());\n }\n // Now distribute the ticks to each tick context, and assign them their\n // own X positions.\n let x = 0;\n let shift = 0;\n this.minTotalWidth = 0;\n let totalTicks = 0;\n // Pass 1: Give each note maximum width requested by context.\n contextList.forEach((tick) => {\n const context = contextMap[tick];\n // Make sure that all tickables in this context have calculated their\n // space requirements.\n context.preFormat();\n const width = context.getWidth();\n this.minTotalWidth += width;\n const maxTicks = context.getMaxTicks().value();\n totalTicks += maxTicks;\n const metrics = context.getMetrics();\n x = x + shift + metrics.totalLeftPx;\n context.setX(x);\n // Calculate shift for the next tick.\n shift = width - metrics.totalLeftPx;\n });\n // Use softmax based on all notes across all staves. (options.globalSoftmax)\n const { globalSoftmax, softmaxFactor, maxIterations } = this.formatterOptions;\n const exp = (tick) => Math.pow(softmaxFactor, (contextMap[tick].getMaxTicks().value() / totalTicks));\n const expTicksUsed = sumArray(contextList.map(exp));\n this.minTotalWidth = x + shift;\n this.hasMinTotalWidth = true;\n // No justification needed. End formatting.\n if (justifyWidth <= 0)\n return this.evaluate();\n // Start justification. Subtract the right extra pixels of the final context because the formatter\n // justifies based on the context's X position, which is the left-most part of the note head.\n const firstContext = contextMap[contextList[0]];\n const lastContext = contextMap[contextList[contextList.length - 1]];\n // Calculate the \"distance error\" between the tick contexts. The expected distance is the spacing proportional to\n // the softmax of the ticks.\n function calculateIdealDistances(adjustedJustifyWidth) {\n const distances = contextList.map((tick, i) => {\n const context = contextMap[tick];\n const voices = context.getTickablesByVoice();\n let backTickable;\n if (i > 0) {\n const prevContext = contextMap[contextList[i - 1]];\n // Go through each tickable and search backwards for another tickable\n // in the same voice. If found, use that duration (ticks) to calculate\n // the expected distance.\n for (let j = i - 1; j >= 0; j--) {\n const backTick = contextMap[contextList[j]];\n const backVoices = backTick.getTickablesByVoice();\n // Look for matching voices between tick contexts.\n const matchingVoices = [];\n Object.keys(voices).forEach((v) => {\n if (backVoices[v]) {\n matchingVoices.push(v);\n }\n });\n if (matchingVoices.length > 0) {\n // Found matching voices, get largest duration\n let maxTicks = 0;\n let maxNegativeShiftPx = Infinity;\n let expectedDistance = 0;\n matchingVoices.forEach((v) => {\n const ticks = backVoices[v].getTicks().value();\n if (ticks > maxTicks) {\n backTickable = backVoices[v];\n maxTicks = ticks;\n }\n // Calculate the limits of the shift based on modifiers, etc.\n const thisTickable = voices[v];\n const insideLeftEdge = thisTickable.getX() -\n (thisTickable.getMetrics().modLeftPx + thisTickable.getMetrics().leftDisplacedHeadPx);\n const backMetrics = backVoices[v].getMetrics();\n const insideRightEdge = backVoices[v].getX() + backMetrics.notePx + backMetrics.modRightPx + backMetrics.rightDisplacedHeadPx;\n // Don't allow shifting if notes in the same voice can collide\n maxNegativeShiftPx = Math.min(maxNegativeShiftPx, insideLeftEdge - insideRightEdge);\n });\n // Don't shift further left than the notehead of the last context. Actually, stay at most 5% to the right\n // so that two different tick contexts don't align across staves.\n maxNegativeShiftPx = Math.min(maxNegativeShiftPx, context.getX() - (prevContext.getX() + adjustedJustifyWidth * 0.05));\n // Calculate the expected distance of the current context from the last matching tickable. The\n // distance is scaled down by the softmax for the voice.\n if (globalSoftmax) {\n const t = totalTicks;\n expectedDistance = (Math.pow(softmaxFactor, (maxTicks / t)) / expTicksUsed) * adjustedJustifyWidth;\n }\n else if (typeof backTickable !== 'undefined') {\n expectedDistance = backTickable.getVoice().softmax(maxTicks) * adjustedJustifyWidth;\n }\n return {\n expectedDistance,\n maxNegativeShiftPx,\n fromTickable: backTickable,\n };\n }\n }\n }\n return { expectedDistance: 0, fromTickablePx: 0, maxNegativeShiftPx: 0 };\n });\n return distances;\n }\n function shiftToIdealDistances(idealDistances) {\n // Distribute ticks to the contexts based on the calculated distance error.\n const centerX = adjustedJustifyWidth / 2;\n let spaceAccum = 0;\n contextList.forEach((tick, index) => {\n const context = contextMap[tick];\n if (index > 0) {\n const contextX = context.getX();\n const ideal = idealDistances[index];\n const errorPx = defined(ideal.fromTickable).getX() + ideal.expectedDistance - (contextX + spaceAccum);\n let negativeShiftPx = 0;\n if (errorPx > 0) {\n spaceAccum += errorPx;\n }\n else if (errorPx < 0) {\n negativeShiftPx = Math.min(ideal.maxNegativeShiftPx, Math.abs(errorPx));\n spaceAccum += -negativeShiftPx;\n }\n context.setX(contextX + spaceAccum);\n }\n // Move center aligned tickables to middle\n context.getCenterAlignedTickables().forEach((tickable) => {\n tickable.setCenterXShift(centerX - context.getX());\n });\n });\n return lastContext.getX() - firstContext.getX();\n }\n const adjustedJustifyWidth = justifyWidth -\n lastContext.getMetrics().notePx -\n lastContext.getMetrics().totalRightPx -\n firstContext.getMetrics().totalLeftPx;\n const musicFont = Tables.currentMusicFont();\n const configMinPadding = musicFont.lookupMetric('stave.endPaddingMin');\n const configMaxPadding = musicFont.lookupMetric('stave.endPaddingMax');\n const leftPadding = musicFont.lookupMetric('stave.padding');\n let targetWidth = adjustedJustifyWidth;\n const distances = calculateIdealDistances(targetWidth);\n let actualWidth = shiftToIdealDistances(distances);\n // Just one context. Done formatting.\n if (contextList.length === 1)\n return 0;\n const calcMinDistance = (targetWidth, distances) => {\n let mdCalc = targetWidth / 2;\n if (distances.length > 1) {\n for (let di = 1; di < distances.length; ++di) {\n mdCalc = Math.min(distances[di].expectedDistance / 2, mdCalc);\n }\n }\n return mdCalc;\n };\n const minDistance = calcMinDistance(targetWidth, distances);\n // right justify to either the configured padding, or the min distance between notes, whichever is greatest.\n // This * 2 keeps the existing formatting unless there is 'a lot' of extra whitespace, which won't break\n // existing visual regression tests.\n const paddingMaxCalc = (curTargetWidth) => {\n let lastTickablePadding = 0;\n const lastTickable = lastContext && lastContext.getMaxTickable();\n if (lastTickable) {\n const voice = lastTickable.getVoice();\n // If the number of actual ticks in the measure <> configured ticks, right-justify\n // because the softmax won't yield the correct value\n if (voice.getTicksUsed().value() > voice.getTotalTicks().value()) {\n return configMaxPadding * 2 < minDistance ? minDistance : configMaxPadding;\n }\n const tickWidth = lastTickable.getWidth();\n lastTickablePadding =\n voice.softmax(lastContext.getMaxTicks().value()) * curTargetWidth - (tickWidth + leftPadding);\n }\n return configMaxPadding * 2 < lastTickablePadding ? lastTickablePadding : configMaxPadding;\n };\n let paddingMax = paddingMaxCalc(targetWidth);\n let paddingMin = paddingMax - (configMaxPadding - configMinPadding);\n const maxX = adjustedJustifyWidth - paddingMin;\n let iterations = maxIterations;\n // Adjust justification width until the right margin is as close as possible to the calculated padding,\n // without going over\n while ((actualWidth > maxX && iterations > 0) || (actualWidth + paddingMax < maxX && iterations > 1)) {\n targetWidth -= actualWidth - maxX;\n paddingMax = paddingMaxCalc(targetWidth);\n paddingMin = paddingMax - (configMaxPadding - configMinPadding);\n actualWidth = shiftToIdealDistances(calculateIdealDistances(targetWidth));\n iterations--;\n }\n this.justifyWidth = justifyWidth;\n return this.evaluate();\n }\n /** Calculate the total cost of this formatting decision. */\n evaluate() {\n const contexts = this.tickContexts;\n const justifyWidth = this.justifyWidth;\n // Calculate available slack per tick context. This works out how much freedom\n // to move a context has in either direction, without affecting other notes.\n this.contextGaps = { total: 0, gaps: [] };\n contexts.list.forEach((tick, index) => {\n if (index === 0)\n return;\n const prevTick = contexts.list[index - 1];\n const prevContext = contexts.map[prevTick];\n const context = contexts.map[tick];\n const prevMetrics = prevContext.getMetrics();\n const currMetrics = context.getMetrics();\n // Calculate X position of right edge of previous note\n const insideRightEdge = prevContext.getX() + prevMetrics.notePx + prevMetrics.totalRightPx;\n // Calculate X position of left edge of current note\n const insideLeftEdge = context.getX() - currMetrics.totalLeftPx;\n const gap = insideLeftEdge - insideRightEdge;\n this.contextGaps.total += gap;\n this.contextGaps.gaps.push({ x1: insideRightEdge, x2: insideLeftEdge });\n // Tell the tick contexts how much they can reposition themselves.\n context.getFormatterMetrics().freedom.left = gap;\n prevContext.getFormatterMetrics().freedom.right = gap;\n });\n // Calculate mean distance in each voice for each duration type, then calculate\n // how far each note is from the mean.\n this.durationStats = {};\n const durationStats = this.durationStats;\n function updateStats(duration, space) {\n const stats = durationStats[duration];\n if (stats === undefined) {\n durationStats[duration] = { mean: space, count: 1 };\n }\n else {\n stats.count += 1;\n stats.mean = (stats.mean + space) / 2;\n }\n }\n this.voices.forEach((voice) => {\n voice.getTickables().forEach((note, i, notes) => {\n const duration = note.getTicks().clone().simplify().toString();\n const metrics = note.getMetrics();\n const formatterMetrics = note.getFormatterMetrics();\n const leftNoteEdge = note.getX() + metrics.notePx + metrics.modRightPx + metrics.rightDisplacedHeadPx;\n let space = 0;\n if (i < notes.length - 1) {\n const rightNote = notes[i + 1];\n const rightMetrics = rightNote.getMetrics();\n const rightNoteEdge = rightNote.getX() - rightMetrics.modLeftPx - rightMetrics.leftDisplacedHeadPx;\n space = rightNoteEdge - leftNoteEdge;\n formatterMetrics.space.used = rightNote.getX() - note.getX();\n rightNote.getFormatterMetrics().freedom.left = space;\n }\n else {\n space = justifyWidth - leftNoteEdge;\n formatterMetrics.space.used = justifyWidth - note.getX();\n }\n formatterMetrics.freedom.right = space;\n updateStats(duration, formatterMetrics.space.used);\n });\n });\n // Calculate how much each note deviates from the mean. Loss function is square\n // root of the sum of squared deviations.\n let totalDeviation = 0;\n this.voices.forEach((voice) => {\n voice.getTickables().forEach((note) => {\n const duration = note.getTicks().clone().simplify().toString();\n const metrics = note.getFormatterMetrics();\n metrics.space.mean = durationStats[duration].mean;\n metrics.duration = duration;\n metrics.iterations += 1;\n metrics.space.deviation = metrics.space.used - metrics.space.mean;\n totalDeviation += Math.pow(metrics.space.deviation, 2);\n });\n });\n this.totalCost = Math.sqrt(totalDeviation);\n this.lossHistory.push(this.totalCost);\n return this.totalCost;\n }\n /**\n * Run a single iteration of rejustification. At a high level, this method calculates\n * the overall \"loss\" (or cost) of this layout, and repositions tickcontexts in an\n * attempt to reduce the cost. You can call this method multiple times until it finds\n * and oscillates around a global minimum.\n * @param options[alpha] the \"learning rate\" for the formatter. It determines how much of a shift\n * the formatter should make based on its cost function.\n */\n tune(options) {\n var _a;\n const contexts = this.tickContexts;\n if (!contexts) {\n return 0;\n }\n const alpha = (_a = options === null || options === void 0 ? void 0 : options.alpha) !== null && _a !== void 0 ? _a : 0.5;\n // Move `current` tickcontext by `shift` pixels, and adjust the freedom\n // on adjacent tickcontexts.\n function move(current, shift, prev, next) {\n current.setX(current.getX() + shift);\n current.getFormatterMetrics().freedom.left += shift;\n current.getFormatterMetrics().freedom.right -= shift;\n if (prev)\n prev.getFormatterMetrics().freedom.right += shift;\n if (next)\n next.getFormatterMetrics().freedom.left -= shift;\n }\n let shift = 0;\n this.totalShift = 0;\n contexts.list.forEach((tick, index, list) => {\n const context = contexts.map[tick];\n const prevContext = index > 0 ? contexts.map[list[index - 1]] : undefined;\n const nextContext = index < list.length - 1 ? contexts.map[list[index + 1]] : undefined;\n move(context, shift, prevContext, nextContext);\n const cost = -sumArray(context.getTickables().map((t) => t.getFormatterMetrics().space.deviation));\n if (cost > 0) {\n shift = -Math.min(context.getFormatterMetrics().freedom.right, Math.abs(cost));\n }\n else if (cost < 0) {\n if (nextContext) {\n shift = Math.min(nextContext.getFormatterMetrics().freedom.right, Math.abs(cost));\n }\n else {\n shift = 0;\n }\n }\n shift *= alpha;\n this.totalShift += shift;\n });\n return this.evaluate();\n }\n /**\n * This is the top-level call for all formatting logic completed\n * after `x` *and* `y` values have been computed for the notes\n * in the voices.\n */\n postFormat() {\n this.modifierContexts.forEach((modifierContexts) => {\n modifierContexts.array.forEach((mc) => mc.postFormat());\n });\n this.tickContexts.list.forEach((tick) => {\n this.tickContexts.map[tick].postFormat();\n });\n return this;\n }\n /**\n * Take all `voices` and create `ModifierContext`s out of them. This tells\n * the formatters that the voices belong on a single stave.\n */\n joinVoices(voices) {\n this.createModifierContexts(voices);\n this.hasMinTotalWidth = false;\n return this;\n }\n /**\n * Align rests in voices, justify the contexts, and position the notes\n * so voices are aligned and ready to render onto the stave. This method\n * mutates the `x` positions of all tickables in `voices`.\n *\n * Voices are full justified to fit in `justifyWidth` pixels.\n *\n * Set `options.context` to the rendering context. Set `options.align_rests`\n * to true to enable rest alignment.\n */\n format(voices, justifyWidth, options) {\n const opts = Object.assign({ align_rests: false }, options);\n this.voices = voices;\n const softmaxFactor = this.formatterOptions.softmaxFactor;\n if (softmaxFactor) {\n this.voices.forEach((v) => v.setSoftmaxFactor(softmaxFactor));\n }\n this.alignRests(voices, opts.align_rests);\n this.createTickContexts(voices);\n this.preFormat(justifyWidth, opts.context, voices, opts.stave);\n // Only postFormat if a stave was supplied for y value formatting\n if (opts.stave)\n this.postFormat();\n return this;\n }\n // This method is just like `format` except that the `justifyWidth` is inferred from the `stave`.\n formatToStave(voices, stave, optionsParam) {\n const options = Object.assign({ context: stave.getContext() }, optionsParam);\n // eslint-disable-next-line\n const justifyWidth = stave.getNoteEndX() - stave.getNoteStartX() - Stave.defaultPadding;\n L('Formatting voices to width: ', justifyWidth);\n return this.format(voices, justifyWidth, options);\n }\n getTickContext(tick) {\n var _a;\n return (_a = this.tickContexts) === null || _a === void 0 ? void 0 : _a.map[tick];\n }\n}\n// To enable logging for this class. Set `Vex.Flow.Formatter.DEBUG` to `true`.\nFormatter.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n/**\n * ## Description\n *\n * Create a new tuplet from the specified notes. The notes must\n * be part of the same voice. If they are of different rhythmic\n * values, then options.num_notes must be set.\n *\n * @constructor\n * @param {Array.} A set of notes: staveNotes,\n * notes, etc... any class that inherits stemmableNote at some\n * point in its prototype chain.\n * @param options: object {\n *\n * num_notes: fit this many notes into...\n * notes_occupied: ...the space of this many notes\n *\n * Together, these two properties make up the tuplet ratio\n * in the form of num_notes : notes_occupied.\n * num_notes defaults to the number of notes passed in, so\n * it is important that if you omit this property, all of\n * the notes passed should be of the same note value.\n * notes_occupied defaults to 2 -- so you should almost\n * certainly pass this parameter for anything other than\n * a basic triplet.\n *\n * location:\n * default 1, which is above the notes: ┌─── 3 ───┐\n * -1 is below the notes └─── 3 ───┘\n *\n * bracketed: boolean, draw a bracket around the tuplet number\n * when true: ┌─── 3 ───┐ when false: 3\n * defaults to true if notes are not beamed, false otherwise\n *\n * ratioed: boolean\n * when true: ┌─── 7:8 ───┐, when false: ┌─── 7 ───┐\n * defaults to true if the difference between num_notes and\n * notes_occupied is greater than 1.\n *\n * y_offset: int, default 0\n * manually offset a tuplet, for instance to avoid collisions\n * with articulations, etc...\n * }\n */\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { Glyph } from './glyph';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var TupletLocation;\n(function (TupletLocation) {\n TupletLocation[TupletLocation[\"BOTTOM\"] = -1] = \"BOTTOM\";\n TupletLocation[TupletLocation[\"TOP\"] = 1] = \"TOP\";\n})(TupletLocation || (TupletLocation = {}));\nexport class Tuplet extends Element {\n constructor(notes, options = {}) {\n super();\n this.numerator_glyphs = [];\n this.denom_glyphs = [];\n if (!notes || !notes.length) {\n throw new RuntimeError('BadArguments', 'No notes provided for tuplet.');\n }\n this.options = options;\n this.notes = notes;\n this.num_notes = this.options.num_notes != undefined ? this.options.num_notes : notes.length;\n // We accept beats_occupied, but warn that it's deprecated:\n // the preferred property name is now notes_occupied.\n if (this.options.beats_occupied) {\n this.beatsOccupiedDeprecationWarning();\n }\n this.notes_occupied = this.options.notes_occupied || this.options.beats_occupied || 2;\n if (this.options.bracketed != undefined) {\n this.bracketed = this.options.bracketed;\n }\n else {\n this.bracketed = notes.some((note) => !note.hasBeam());\n }\n this.ratioed =\n this.options.ratioed != undefined ? this.options.ratioed : Math.abs(this.notes_occupied - this.num_notes) > 1;\n this.point = Tables.currentMusicFont().lookupMetric('digits.tupletPoint');\n this.y_pos = 16;\n this.x_pos = 100;\n this.width = 200;\n this.setTupletLocation(this.options.location || Tuplet.LOCATION_TOP);\n Formatter.AlignRestsToNotes(notes, true, true);\n this.resolveGlyphs();\n this.attach();\n }\n static get CATEGORY() {\n return Category.Tuplet;\n }\n static get LOCATION_TOP() {\n return TupletLocation.TOP;\n }\n static get LOCATION_BOTTOM() {\n return TupletLocation.BOTTOM;\n }\n static get NESTING_OFFSET() {\n return 15;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.tuplet;\n }\n attach() {\n for (let i = 0; i < this.notes.length; i++) {\n const note = this.notes[i];\n note.setTuplet(this);\n }\n }\n detach() {\n for (let i = 0; i < this.notes.length; i++) {\n const note = this.notes[i];\n note.resetTuplet(this);\n }\n }\n /**\n * Set whether or not the bracket is drawn.\n */\n setBracketed(bracketed) {\n this.bracketed = !!bracketed;\n return this;\n }\n /**\n * Set whether or not the ratio is shown.\n */\n setRatioed(ratioed) {\n this.ratioed = !!ratioed;\n return this;\n }\n /**\n * Set the tuplet indicator to be displayed either on the top or bottom of the stave.\n */\n setTupletLocation(location) {\n if (location !== Tuplet.LOCATION_TOP && location !== Tuplet.LOCATION_BOTTOM) {\n // eslint-disable-next-line\n console.warn(`Invalid tuplet location [${location}]. Using Tuplet.LOCATION_TOP.`);\n location = Tuplet.LOCATION_TOP;\n }\n this.location = location;\n return this;\n }\n getNotes() {\n return this.notes;\n }\n getNoteCount() {\n return this.num_notes;\n }\n beatsOccupiedDeprecationWarning() {\n // eslint-disable-next-line\n console.warn('beats_occupied has been deprecated as an option for tuplets. Please use notes_occupied instead.', 'Calls to getBeatsOccupied / setBeatsOccupied should now be routed to getNotesOccupied / setNotesOccupied.', 'The old methods will be removed in VexFlow 5.0.');\n }\n getBeatsOccupied() {\n this.beatsOccupiedDeprecationWarning();\n return this.getNotesOccupied();\n }\n setBeatsOccupied(beats) {\n this.beatsOccupiedDeprecationWarning();\n return this.setNotesOccupied(beats);\n }\n getNotesOccupied() {\n return this.notes_occupied;\n }\n setNotesOccupied(notes) {\n this.detach();\n this.notes_occupied = notes;\n this.resolveGlyphs();\n this.attach();\n }\n resolveGlyphs() {\n this.numerator_glyphs = [];\n let n = this.num_notes;\n while (n >= 1) {\n this.numerator_glyphs.unshift(new Glyph('timeSig' + (n % 10), this.point));\n n = parseInt((n / 10).toString(), 10);\n }\n this.denom_glyphs = [];\n n = this.notes_occupied;\n while (n >= 1) {\n this.denom_glyphs.unshift(new Glyph('timeSig' + (n % 10), this.point));\n n = parseInt((n / 10).toString(), 10);\n }\n }\n // determine how many tuplets are nested within this tuplet\n // on the same side (above/below), to calculate a y\n // offset for this tuplet:\n getNestedTupletCount() {\n const location = this.location;\n const first_note = this.notes[0];\n let maxTupletCount = countTuplets(first_note, location);\n let minTupletCount = countTuplets(first_note, location);\n // Count the tuplets that are on the same side (above/below)\n // as this tuplet:\n function countTuplets(note, location) {\n return note.getTupletStack().filter((tuplet) => tuplet.location === location).length;\n }\n this.notes.forEach((note) => {\n const tupletCount = countTuplets(note, location);\n maxTupletCount = tupletCount > maxTupletCount ? tupletCount : maxTupletCount;\n minTupletCount = tupletCount < minTupletCount ? tupletCount : minTupletCount;\n });\n return maxTupletCount - minTupletCount;\n }\n // determine the y position of the tuplet:\n getYPosition() {\n // offset the tuplet for any nested tuplets between\n // it and the notes:\n const nested_tuplet_y_offset = this.getNestedTupletCount() * Tuplet.NESTING_OFFSET * -this.location;\n // offset the tuplet for any manual y_offset:\n const y_offset = this.options.y_offset || 0;\n // now iterate through the notes and find our highest\n // or lowest locations, to form a base y_pos\n const first_note = this.notes[0];\n let y_pos;\n if (this.location === Tuplet.LOCATION_TOP) {\n y_pos = first_note.checkStave().getYForLine(0) - Tuplet.metrics.topModifierOffset;\n // check modifiers above note to see if they will collide with tuplet beam\n for (let i = 0; i < this.notes.length; ++i) {\n const note = this.notes[i];\n let modLines = 0;\n const mc = note.getModifierContext();\n if (mc) {\n modLines = Math.max(modLines, mc.getState().top_text_line);\n }\n const modY = note.getYForTopText(modLines) - Tuplet.metrics.noteHeadOffset;\n if (note.hasStem() || note.isRest()) {\n const top_y = note.getStemDirection() === Stem.UP\n ? note.getStemExtents().topY - Tuplet.metrics.stemOffset\n : note.getStemExtents().baseY - Tuplet.metrics.noteHeadOffset;\n y_pos = Math.min(top_y, y_pos);\n if (modLines > 0) {\n y_pos = Math.min(modY, y_pos);\n }\n }\n }\n }\n else {\n let lineCheck = Tuplet.metrics.bottomLine; // tuplet default on line 4\n // check modifiers below note to see if they will collide with tuplet beam\n this.notes.forEach((nn) => {\n const mc = nn.getModifierContext();\n if (mc) {\n lineCheck = Math.max(lineCheck, mc.getState().text_line + 1);\n }\n });\n y_pos = first_note.checkStave().getYForLine(lineCheck) + Tuplet.metrics.noteHeadOffset;\n for (let i = 0; i < this.notes.length; ++i) {\n if (this.notes[i].hasStem() || this.notes[i].isRest()) {\n const bottom_y = this.notes[i].getStemDirection() === Stem.UP\n ? this.notes[i].getStemExtents().baseY + Tuplet.metrics.noteHeadOffset\n : this.notes[i].getStemExtents().topY + Tuplet.metrics.stemOffset;\n if (bottom_y > y_pos) {\n y_pos = bottom_y;\n }\n }\n }\n }\n return y_pos + nested_tuplet_y_offset + y_offset;\n }\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n // determine x value of left bound of tuplet\n const first_note = this.notes[0];\n const last_note = this.notes[this.notes.length - 1];\n if (!this.bracketed) {\n this.x_pos = first_note.getStemX();\n this.width = last_note.getStemX() - this.x_pos;\n }\n else {\n this.x_pos = first_note.getTieLeftX() - 5;\n this.width = last_note.getTieRightX() - this.x_pos + 5;\n }\n // determine y value for tuplet\n this.y_pos = this.getYPosition();\n const addGlyphWidth = (width, glyph) => width + defined(glyph.getMetrics().width);\n // calculate total width of tuplet notation\n let width = this.numerator_glyphs.reduce(addGlyphWidth, 0);\n if (this.ratioed) {\n width = this.denom_glyphs.reduce(addGlyphWidth, width);\n width += this.point * 0.32;\n }\n const notation_center_x = this.x_pos + this.width / 2;\n const notation_start_x = notation_center_x - width / 2;\n // draw bracket if the tuplet is not beamed\n if (this.bracketed) {\n const line_width = this.width / 2 - width / 2 - 5;\n // only draw the bracket if it has positive length\n if (line_width > 0) {\n ctx.fillRect(this.x_pos, this.y_pos, line_width, 1);\n ctx.fillRect(this.x_pos + this.width / 2 + width / 2 + 5, this.y_pos, line_width, 1);\n ctx.fillRect(this.x_pos, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM ? 1 : 0), 1, this.location * 10);\n ctx.fillRect(this.x_pos + this.width, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM ? 1 : 0), 1, this.location * 10);\n }\n }\n // draw numerator glyphs\n const shiftY = Tables.currentMusicFont().lookupMetric('digits.shiftY', 0);\n let x_offset = 0;\n this.numerator_glyphs.forEach((glyph) => {\n glyph.render(ctx, notation_start_x + x_offset, this.y_pos + this.point / 3 - 2 + shiftY);\n x_offset += defined(glyph.getMetrics().width);\n });\n // display colon and denominator if the ratio is to be shown\n if (this.ratioed) {\n const colon_x = notation_start_x + x_offset + this.point * 0.16;\n const colon_radius = this.point * 0.06;\n ctx.beginPath();\n ctx.arc(colon_x, this.y_pos - this.point * 0.08, colon_radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n ctx.beginPath();\n ctx.arc(colon_x, this.y_pos + this.point * 0.12, colon_radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n x_offset += this.point * 0.32;\n this.denom_glyphs.forEach((glyph) => {\n glyph.render(ctx, notation_start_x + x_offset, this.y_pos + this.point / 3 - 2 + shiftY);\n x_offset += defined(glyph.getMetrics().width);\n });\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TupletLocation } from './tuplet';\nimport { Category, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nfunction calculateStemDirection(notes) {\n let lineSum = 0;\n notes.forEach((note) => {\n if (note.keyProps) {\n note.keyProps.forEach((keyProp) => {\n lineSum += keyProp.line - 3;\n });\n }\n });\n if (lineSum >= 0) {\n return Stem.DOWN;\n }\n return Stem.UP;\n}\nfunction getStemSlope(firstNote, lastNote) {\n const firstStemTipY = firstNote.getStemExtents().topY;\n const firstStemX = firstNote.getStemX();\n const lastStemTipY = lastNote.getStemExtents().topY;\n const lastStemX = lastNote.getStemX();\n return (lastStemTipY - firstStemTipY) / (lastStemX - firstStemX);\n}\nexport const BEAM_LEFT = 'L';\nexport const BEAM_RIGHT = 'R';\nexport const BEAM_BOTH = 'B';\n/** `Beams` span over a set of `StemmableNotes`. */\nexport class Beam extends Element {\n constructor(notes, auto_stem = false) {\n super();\n this.slope = 0;\n this.y_shift = 0;\n /**\n * Overrides to default beam directions for secondary-level beams that do not\n * connect to any other note. See further explanation at\n * `setPartialBeamSideAt`\n */\n this.forcedPartialDirections = {};\n if (!notes || notes.length === 0) {\n throw new RuntimeError('BadArguments', 'No notes provided for beam.');\n }\n if (notes.length === 1) {\n throw new RuntimeError('BadArguments', 'Too few notes for beam.');\n }\n // Validate beam line, direction and ticks.\n this.ticks = notes[0].getIntrinsicTicks();\n if (this.ticks >= Tables.durationToTicks('4')) {\n throw new RuntimeError('BadArguments', 'Beams can only be applied to notes shorter than a quarter note.');\n }\n let i; // shared iterator\n let note;\n this.stem_direction = Stem.UP;\n for (i = 0; i < notes.length; ++i) {\n note = notes[i];\n if (note.hasStem()) {\n this.stem_direction = note.getStemDirection();\n break;\n }\n }\n let stem_direction = this.stem_direction;\n // Figure out optimal stem direction based on given notes\n if (auto_stem && isStaveNote(notes[0])) {\n stem_direction = calculateStemDirection(notes);\n }\n else if (auto_stem && isTabNote(notes[0])) {\n // Auto Stem TabNotes\n const stem_weight = notes.reduce((memo, note) => memo + note.getStemDirection(), 0);\n stem_direction = stem_weight > -1 ? Stem.UP : Stem.DOWN;\n }\n // Apply stem directions and attach beam to notes\n for (i = 0; i < notes.length; ++i) {\n note = notes[i];\n if (auto_stem) {\n note.setStemDirection(stem_direction);\n this.stem_direction = stem_direction;\n }\n note.setBeam(this);\n }\n this.postFormatted = false;\n this.notes = notes;\n this.beam_count = this.getBeamCount();\n this.break_on_indices = [];\n this.render_options = {\n beam_width: 5,\n max_slope: 0.25,\n min_slope: -0.25,\n slope_iterations: 20,\n slope_cost: 100,\n show_stemlets: false,\n stemlet_extension: 7,\n partial_beam_length: 10,\n flat_beams: false,\n min_flat_beam_offset: 15,\n };\n }\n static get CATEGORY() {\n return Category.Beam;\n }\n /** Get the direction of the beam */\n getStemDirection() {\n return this.stem_direction;\n }\n /**\n * Get the default beam groups for a provided time signature.\n * Attempt to guess if the time signature is not found in table.\n * Currently this is fairly naive.\n */\n static getDefaultBeamGroups(time_sig) {\n if (!time_sig || time_sig === 'c') {\n time_sig = '4/4';\n }\n const defaults = {\n '1/2': ['1/2'],\n '2/2': ['1/2'],\n '3/2': ['1/2'],\n '4/2': ['1/2'],\n '1/4': ['1/4'],\n '2/4': ['1/4'],\n '3/4': ['1/4'],\n '4/4': ['1/4'],\n '1/8': ['1/8'],\n '2/8': ['2/8'],\n '3/8': ['3/8'],\n '4/8': ['2/8'],\n '1/16': ['1/16'],\n '2/16': ['2/16'],\n '3/16': ['3/16'],\n '4/16': ['2/16'],\n };\n const groups = defaults[time_sig];\n if (groups === undefined) {\n // If no beam groups found, naively determine\n // the beam groupings from the time signature\n const beatTotal = parseInt(time_sig.split('/')[0], 10);\n const beatValue = parseInt(time_sig.split('/')[1], 10);\n const tripleMeter = beatTotal % 3 === 0;\n if (tripleMeter) {\n return [new Fraction(3, beatValue)];\n }\n else if (beatValue > 4) {\n return [new Fraction(2, beatValue)];\n }\n else if (beatValue <= 4) {\n return [new Fraction(1, beatValue)];\n }\n }\n else {\n return groups.map((group) => new Fraction().parse(group));\n }\n return [new Fraction(1, 4)];\n }\n /**\n * A helper function to automatically build basic beams for a voice. For more\n * complex auto-beaming use `Beam.generateBeams()`.\n * @param voice the voice to generate the beams for\n * @param stem_direction a stem direction to apply to the entire voice\n * @param groups an array of `Fraction` representing beat groupings for the beam\n */\n static applyAndGetBeams(voice, stem_direction, groups) {\n return Beam.generateBeams(voice.getTickables(), { groups, stem_direction });\n }\n /**\n * A helper function to autimatically build beams for a voice with\n * configuration options.\n *\n * Example configuration object:\n *\n * ```\n * config = {\n * groups: [new Vex.Flow.Fraction(2, 8)],\n * stem_direction: -1,\n * beam_rests: true,\n * beam_middle_only: true,\n * show_stemlets: false\n * };\n * ```\n * @param notes an array of notes to create the beams for\n * @param config the configuration object\n * @param config.stem_direction set to apply the same direction to all notes\n * @param config.beam_rests set to `true` to include rests in the beams\n * @param config.beam_middle_only set to `true` to only beam rests in the middle of the beat\n * @param config.show_stemlets set to `true` to draw stemlets for rests\n * @param config.maintain_stem_directions set to `true` to not apply new stem directions\n * @param config.groups array of `Fractions` that represent the beat structure to beam the notes\n *\n */\n static generateBeams(notes, config = {}) {\n if (!config.groups || !config.groups.length) {\n config.groups = [new Fraction(2, 8)];\n }\n // Convert beam groups to tick amounts\n const tickGroups = config.groups.map((group) => {\n if (!group.multiply) {\n throw new RuntimeError('InvalidBeamGroups', 'The beam groups must be an array of Vex.Flow.Fractions');\n }\n return group.clone().multiply(Tables.RESOLUTION, 1);\n });\n const unprocessedNotes = notes;\n let currentTickGroup = 0;\n let noteGroups = [];\n let currentGroup = [];\n function getTotalTicks(vf_notes) {\n return vf_notes.reduce((memo, note) => note.getTicks().clone().add(memo), new Fraction(0, 1));\n }\n function nextTickGroup() {\n if (tickGroups.length - 1 > currentTickGroup) {\n currentTickGroup += 1;\n }\n else {\n currentTickGroup = 0;\n }\n }\n function createGroups() {\n let nextGroup = [];\n // number of ticks in current group\n let currentGroupTotalTicks = new Fraction(0, 1);\n unprocessedNotes.forEach((unprocessedNote) => {\n nextGroup = [];\n if (unprocessedNote.shouldIgnoreTicks()) {\n noteGroups.push(currentGroup);\n currentGroup = nextGroup;\n return; // Ignore untickables (like bar notes)\n }\n currentGroup.push(unprocessedNote);\n const ticksPerGroup = tickGroups[currentTickGroup].clone();\n const totalTicks = getTotalTicks(currentGroup).add(currentGroupTotalTicks);\n // Double the amount of ticks in a group, if it's an unbeamable tuplet\n const unbeamable = Tables.durationToNumber(unprocessedNote.getDuration()) < 8;\n if (unbeamable && unprocessedNote.getTuplet()) {\n ticksPerGroup.numerator *= 2;\n }\n // If the note that was just added overflows the group tick total\n if (totalTicks.greaterThan(ticksPerGroup)) {\n // If the overflow note can be beamed, start the next group\n // with it. Unbeamable notes leave the group overflowed.\n if (!unbeamable) {\n const note = currentGroup.pop();\n if (note)\n nextGroup.push(note);\n }\n noteGroups.push(currentGroup);\n // We have overflown, so we're going to next tick group. As we might have\n // overflown by more than 1 group, we need to go forward as many times as\n // needed, decreasing currentGroupTotalTicks by as many ticks as there are\n // in current groups as we go forward.\n do {\n currentGroupTotalTicks = totalTicks.subtract(tickGroups[currentTickGroup]);\n nextTickGroup();\n } while (currentGroupTotalTicks.greaterThanEquals(tickGroups[currentTickGroup]));\n currentGroup = nextGroup;\n }\n else if (totalTicks.equals(ticksPerGroup)) {\n noteGroups.push(currentGroup);\n currentGroupTotalTicks = new Fraction(0, 1);\n currentGroup = nextGroup;\n nextTickGroup();\n }\n });\n // Adds any remainder notes beam\n if (currentGroup.length > 0) {\n noteGroups.push(currentGroup);\n }\n }\n function getBeamGroups() {\n return noteGroups.filter((group) => {\n if (group.length > 1) {\n let beamable = true;\n group.forEach((note) => {\n if (note.getIntrinsicTicks() >= Tables.durationToTicks('4')) {\n beamable = false;\n }\n });\n return beamable;\n }\n return false;\n });\n }\n // Splits up groups by Rest\n function sanitizeGroups() {\n const sanitizedGroups = [];\n noteGroups.forEach((group) => {\n let tempGroup = [];\n group.forEach((note, index, group) => {\n const isFirstOrLast = index === 0 || index === group.length - 1;\n const prevNote = group[index - 1];\n const breaksOnEachRest = !config.beam_rests && note.isRest();\n const breaksOnFirstOrLastRest = config.beam_rests && config.beam_middle_only && note.isRest() && isFirstOrLast;\n let breakOnStemChange = false;\n if (config.maintain_stem_directions && prevNote && !note.isRest() && !prevNote.isRest()) {\n const prevDirection = prevNote.getStemDirection();\n const currentDirection = note.getStemDirection();\n breakOnStemChange = currentDirection !== prevDirection;\n }\n const isUnbeamableDuration = parseInt(note.getDuration(), 10) < 8;\n // Determine if the group should be broken at this note\n const shouldBreak = breaksOnEachRest || breaksOnFirstOrLastRest || breakOnStemChange || isUnbeamableDuration;\n if (shouldBreak) {\n // Add current group\n if (tempGroup.length > 0) {\n sanitizedGroups.push(tempGroup);\n }\n // Start a new group. Include the current note if the group\n // was broken up by stem direction, as that note needs to start\n // the next group of notes\n tempGroup = breakOnStemChange ? [note] : [];\n }\n else {\n // Add note to group\n tempGroup.push(note);\n }\n });\n // If there is a remaining group, add it as well\n if (tempGroup.length > 0) {\n sanitizedGroups.push(tempGroup);\n }\n });\n noteGroups = sanitizedGroups;\n }\n function formatStems() {\n noteGroups.forEach((group) => {\n let stemDirection;\n if (config.maintain_stem_directions) {\n const note = findFirstNote(group);\n stemDirection = note ? note.getStemDirection() : Stem.UP;\n }\n else {\n if (config.stem_direction) {\n stemDirection = config.stem_direction;\n }\n else {\n stemDirection = calculateStemDirection(group);\n }\n }\n applyStemDirection(group, stemDirection);\n });\n }\n function findFirstNote(group) {\n for (let i = 0; i < group.length; i++) {\n const note = group[i];\n if (!note.isRest()) {\n return note;\n }\n }\n return false;\n }\n function applyStemDirection(group, direction) {\n group.forEach((note) => {\n note.setStemDirection(direction);\n });\n }\n // Get all of the tuplets in all of the note groups\n function getTuplets() {\n const uniqueTuplets = [];\n // Go through all of the note groups and inspect for tuplets\n noteGroups.forEach((group) => {\n let tuplet;\n group.forEach((note) => {\n const noteTuplet = note.getTuplet();\n if (noteTuplet && tuplet !== noteTuplet) {\n tuplet = noteTuplet;\n uniqueTuplets.push(tuplet);\n }\n });\n });\n return uniqueTuplets;\n }\n // Using closures to store the variables throughout the various functions\n // IMO Keeps it this process lot cleaner - but not super consistent with\n // the rest of the API's style - Silverwolf90 (Cyril)\n createGroups();\n sanitizeGroups();\n formatStems();\n // Get the notes to be beamed\n const beamedNoteGroups = getBeamGroups();\n // Get the tuplets in order to format them accurately\n const allTuplets = getTuplets();\n // Create a Vex.Flow.Beam from each group of notes to be beamed\n const beams = [];\n beamedNoteGroups.forEach((group) => {\n const beam = new Beam(group);\n if (config.show_stemlets) {\n beam.render_options.show_stemlets = true;\n }\n if (config.secondary_breaks) {\n beam.render_options.secondary_break_ticks = Tables.durationToTicks(config.secondary_breaks);\n }\n if (config.flat_beams === true) {\n beam.render_options.flat_beams = true;\n beam.render_options.flat_beam_offset = config.flat_beam_offset;\n }\n beams.push(beam);\n });\n // Reformat tuplets\n allTuplets.forEach((tuplet) => {\n // Set the tuplet location based on the stem direction\n const direction = tuplet.notes[0].stem_direction === Stem.DOWN ? TupletLocation.BOTTOM : TupletLocation.TOP;\n tuplet.setTupletLocation(direction);\n // If any of the notes in the tuplet are not beamed, draw a bracket.\n let bracketed = false;\n for (let i = 0; i < tuplet.notes.length; i++) {\n const note = tuplet.notes[i];\n if (!note.hasBeam()) {\n bracketed = true;\n break;\n }\n }\n tuplet.setBracketed(bracketed);\n });\n return beams;\n }\n /** Get the notes in this beam. */\n getNotes() {\n return this.notes;\n }\n /** Get the max number of beams in the set of notes. */\n getBeamCount() {\n const beamCounts = this.notes.map((note) => note.getGlyph().beam_count);\n const maxBeamCount = beamCounts.reduce((max, beamCount) => (beamCount > max ? beamCount : max));\n return maxBeamCount;\n }\n /** Set which note `indices` to break the secondary beam at. */\n breakSecondaryAt(indices) {\n this.break_on_indices = indices;\n return this;\n }\n /**\n * Forces the direction of a partial beam (a secondary-level beam that exists\n * on one note only of the beam group). This is useful in rhythms such as 6/8\n * eighth-sixteenth-eighth-sixteenth, where the direction of the beam on the\n * first sixteenth note can help imply whether the rhythm is to be felt as\n * three groups of eighth notes (typical) or as two groups of three-sixteenths\n * (less common):\n * ```\n * ┌───┬──┬──┐ ┌──┬──┬──┐\n * │ ├─ │ ─┤ vs │ ─┤ │ ─┤\n * │ │ │ │ │ │ │ │\n * ```\n */\n setPartialBeamSideAt(noteIndex, side) {\n this.forcedPartialDirections[noteIndex] = side;\n return this;\n }\n /**\n * Restore the default direction of a partial beam (a secondary-level beam\n * that does not connect to any other notes).\n */\n unsetPartialBeamSideAt(noteIndex) {\n delete this.forcedPartialDirections[noteIndex];\n return this;\n }\n /** Return the y coordinate for linear function. */\n getSlopeY(x, first_x_px, first_y_px, slope) {\n return first_y_px + (x - first_x_px) * slope;\n }\n /** Calculate the best possible slope for the provided notes. */\n calculateSlope() {\n const { notes, stem_direction: stemDirection, render_options: { max_slope, min_slope, slope_iterations, slope_cost }, } = this;\n const firstNote = notes[0];\n const initialSlope = getStemSlope(firstNote, notes[notes.length - 1]);\n const increment = (max_slope - min_slope) / slope_iterations;\n let minCost = Number.MAX_VALUE;\n let bestSlope = 0;\n let yShift = 0;\n // iterate through slope values to find best weighted fit\n for (let slope = min_slope; slope <= max_slope; slope += increment) {\n let totalStemExtension = 0;\n let yShiftTemp = 0;\n // iterate through notes, calculating y shift and stem extension\n for (let i = 1; i < notes.length; ++i) {\n const note = notes[i];\n if (note.hasStem() || note.isRest()) {\n const adjustedStemTipY = this.getSlopeY(note.getStemX(), firstNote.getStemX(), firstNote.getStemExtents().topY, slope) + yShiftTemp;\n const stemTipY = note.getStemExtents().topY;\n // beam needs to be shifted up to accommodate note\n if (stemTipY * stemDirection < adjustedStemTipY * stemDirection) {\n const diff = Math.abs(stemTipY - adjustedStemTipY);\n yShiftTemp += diff * -stemDirection;\n totalStemExtension += diff * i;\n }\n else {\n // beam overshoots note, account for the difference\n totalStemExtension += (stemTipY - adjustedStemTipY) * stemDirection;\n }\n }\n }\n // most engraving books suggest aiming for a slope about half the angle of the\n // difference between the first and last notes' stem length;\n const idealSlope = initialSlope / 2;\n const distanceFromIdeal = Math.abs(idealSlope - slope);\n // This tries to align most beams to something closer to the idealSlope, but\n // doesn't go crazy. To disable, set this.render_options.slope_cost = 0\n const cost = slope_cost * distanceFromIdeal + Math.abs(totalStemExtension);\n // update state when a more ideal slope is found\n if (cost < minCost) {\n minCost = cost;\n bestSlope = slope;\n yShift = yShiftTemp;\n }\n }\n this.slope = bestSlope;\n this.y_shift = yShift;\n }\n /** Calculate a slope and y-shift for flat beams. */\n calculateFlatSlope() {\n const { notes, stem_direction, render_options: { beam_width, min_flat_beam_offset, flat_beam_offset }, } = this;\n // If a flat beam offset has not yet been supplied or calculated,\n // generate one based on the notes in this particular note group\n let total = 0;\n let extremeY = 0; // Store the highest or lowest note here\n let extremeBeamCount = 0; // The beam count of the extreme note\n let currentExtreme = 0;\n for (let i = 0; i < notes.length; i++) {\n // Total up all of the offsets so we can average them out later\n const note = notes[i];\n const stemTipY = note.getStemExtents().topY;\n total += stemTipY;\n // Store the highest (stems-up) or lowest (stems-down) note so the\n // offset can be adjusted in case the average isn't enough\n if (stem_direction === Stem.DOWN && currentExtreme < stemTipY) {\n currentExtreme = stemTipY;\n extremeY = Math.max(...note.getYs());\n extremeBeamCount = note.getBeamCount();\n }\n else if (stem_direction === Stem.UP && (currentExtreme === 0 || currentExtreme > stemTipY)) {\n currentExtreme = stemTipY;\n extremeY = Math.min(...note.getYs());\n extremeBeamCount = note.getBeamCount();\n }\n }\n // Average the offsets to try and come up with a reasonable one that\n // works for all of the notes in the beam group.\n let offset = total / notes.length;\n // In case the average isn't long enough, add or subtract some more\n // based on the highest or lowest note (again, based on the stem\n // direction). This also takes into account the added height due to\n // the width of the beams.\n const beamWidth = beam_width * 1.5;\n const extremeTest = min_flat_beam_offset + extremeBeamCount * beamWidth;\n const newOffset = extremeY + extremeTest * -stem_direction;\n if (stem_direction === Stem.DOWN && offset < newOffset) {\n offset = extremeY + extremeTest;\n }\n else if (stem_direction === Stem.UP && offset > newOffset) {\n offset = extremeY - extremeTest;\n }\n if (!flat_beam_offset) {\n // Set the offset for the group based on the calculations above.\n this.render_options.flat_beam_offset = offset;\n }\n else if (stem_direction === Stem.DOWN && offset > flat_beam_offset) {\n this.render_options.flat_beam_offset = offset;\n }\n else if (stem_direction === Stem.UP && offset < flat_beam_offset) {\n this.render_options.flat_beam_offset = offset;\n }\n // for flat beams, the slope and y_shift are simply 0\n this.slope = 0;\n this.y_shift = 0;\n }\n /** Return the Beam y offset. */\n getBeamYToDraw() {\n const firstNote = this.notes[0];\n const firstStemTipY = firstNote.getStemExtents().topY;\n let beamY = firstStemTipY;\n // For flat beams, set the first and last Y to the offset, rather than\n // using the note's stem extents.\n if (this.render_options.flat_beams && this.render_options.flat_beam_offset) {\n beamY = this.render_options.flat_beam_offset;\n }\n return beamY;\n }\n /**\n * Create new stems for the notes in the beam, so that each stem\n * extends into the beams.\n */\n applyStemExtensions() {\n const { notes, slope, y_shift, stem_direction, beam_count, render_options: { show_stemlets, stemlet_extension, beam_width }, } = this;\n const firstNote = notes[0];\n const firstStemTipY = this.getBeamYToDraw();\n const firstStemX = firstNote.getStemX();\n for (let i = 0; i < notes.length; ++i) {\n const note = notes[i];\n const stem = note.getStem();\n if (stem) {\n const stemX = note.getStemX();\n const { topY: stemTipY } = note.getStemExtents();\n const beamedStemTipY = this.getSlopeY(stemX, firstStemX, firstStemTipY, slope) + y_shift;\n const preBeamExtension = stem.getExtension();\n const beamExtension = stem_direction === Stem.UP ? stemTipY - beamedStemTipY : beamedStemTipY - stemTipY;\n stem.setExtension(preBeamExtension + beamExtension);\n stem.adjustHeightForBeam();\n if (note.isRest() && show_stemlets) {\n const beamWidth = beam_width;\n const totalBeamWidth = (beam_count - 1) * beamWidth * 1.5 + beamWidth;\n stem.setVisibility(true).setStemlet(true, totalBeamWidth + stemlet_extension);\n }\n }\n }\n }\n /** Return upper level beam direction. */\n lookupBeamDirection(duration, prev_tick, tick, next_tick, noteIndex) {\n if (duration === '4') {\n return BEAM_LEFT;\n }\n const forcedBeamDirection = this.forcedPartialDirections[noteIndex];\n if (forcedBeamDirection)\n return forcedBeamDirection;\n const lookup_duration = `${Tables.durationToNumber(duration) / 2}`;\n const prev_note_gets_beam = prev_tick < Tables.durationToTicks(lookup_duration);\n const next_note_gets_beam = next_tick < Tables.durationToTicks(lookup_duration);\n const note_gets_beam = tick < Tables.durationToTicks(lookup_duration);\n if (prev_note_gets_beam && next_note_gets_beam && note_gets_beam) {\n return BEAM_BOTH;\n }\n else if (prev_note_gets_beam && !next_note_gets_beam && note_gets_beam) {\n return BEAM_LEFT;\n }\n else if (!prev_note_gets_beam && next_note_gets_beam && note_gets_beam) {\n return BEAM_RIGHT;\n }\n return this.lookupBeamDirection(lookup_duration, prev_tick, tick, next_tick, noteIndex);\n }\n /** Get the x coordinates for the beam lines of specific `duration`. */\n getBeamLines(duration) {\n const tick_of_duration = Tables.durationToTicks(duration);\n let beam_started = false;\n const beam_lines = [];\n let current_beam = undefined;\n const partial_beam_length = this.render_options.partial_beam_length;\n let previous_should_break = false;\n let tick_tally = 0;\n for (let i = 0; i < this.notes.length; ++i) {\n const note = this.notes[i];\n // See if we need to break secondary beams on this note.\n const ticks = note.getTicks().value();\n tick_tally += ticks;\n let should_break = false;\n // 8th note beams are always drawn.\n if (parseInt(duration, 10) >= 8) {\n // First, check to see if any indices were set up through breakSecondaryAt()\n should_break = this.break_on_indices.indexOf(i) !== -1;\n // If the secondary breaks were auto-configured in the render options,\n // handle that as well.\n if (this.render_options.secondary_break_ticks && tick_tally >= this.render_options.secondary_break_ticks) {\n tick_tally = 0;\n should_break = true;\n }\n }\n const note_gets_beam = note.getIntrinsicTicks() < tick_of_duration;\n const stem_x = note.getStemX() - Stem.WIDTH / 2;\n // Check to see if the next note in the group will get a beam at this\n // level. This will help to inform the partial beam logic below.\n const prev_note = this.notes[i - 1];\n const next_note = this.notes[i + 1];\n const next_note_gets_beam = next_note && next_note.getIntrinsicTicks() < tick_of_duration;\n const prev_note_gets_beam = prev_note && prev_note.getIntrinsicTicks() < tick_of_duration;\n const beam_alone = prev_note && next_note && note_gets_beam && !prev_note_gets_beam && !next_note_gets_beam;\n // const beam_alone = note_gets_beam && !prev_note_gets_beam && !next_note_gets_beam;\n if (note_gets_beam) {\n // This note gets a beam at the current level\n if (beam_started) {\n // We're currently in the middle of a beam. Just continue it on to\n // the stem X of the current note.\n current_beam = beam_lines[beam_lines.length - 1];\n current_beam.end = stem_x;\n // If a secondary beam break is set up, end the beam right now.\n if (should_break) {\n beam_started = false;\n if (next_note && !next_note_gets_beam && current_beam.end === undefined) {\n // This note gets a beam,.but the next one does not. This means\n // we need a partial pointing right.\n current_beam.end = current_beam.start - partial_beam_length;\n }\n }\n }\n else {\n // No beam started yet. Start a new one.\n current_beam = { start: stem_x, end: undefined };\n beam_started = true;\n if (beam_alone) {\n // previous and next beam exists and does not get a beam but current gets it.\n const prev_tick = prev_note.getIntrinsicTicks();\n const next_tick = next_note.getIntrinsicTicks();\n const tick = note.getIntrinsicTicks();\n const beam_direction = this.lookupBeamDirection(duration, prev_tick, tick, next_tick, i);\n if ([BEAM_LEFT, BEAM_BOTH].includes(beam_direction)) {\n current_beam.end = current_beam.start - partial_beam_length;\n }\n else {\n current_beam.end = current_beam.start + partial_beam_length;\n }\n }\n else if (!next_note_gets_beam) {\n // The next note doesn't get a beam. Draw a partial.\n if ((previous_should_break || i === 0) && next_note) {\n // This is the first note (but not the last one), or it is\n // following a secondary break. Draw a partial to the right.\n current_beam.end = current_beam.start + partial_beam_length;\n }\n else {\n // By default, draw a partial to the left.\n current_beam.end = current_beam.start - partial_beam_length;\n }\n }\n else if (should_break) {\n // This note should have a secondary break after it. Even though\n // we just started a beam, it needs to end immediately.\n current_beam.end = current_beam.start - partial_beam_length;\n beam_started = false;\n }\n beam_lines.push(current_beam);\n }\n }\n else {\n // The current note does not get a beam.\n beam_started = false;\n }\n // Store the secondary break flag to inform the partial beam logic in\n // the next iteration of the loop.\n previous_should_break = should_break;\n }\n // Add a partial beam pointing left if this is the last note in the group\n const last_beam = beam_lines[beam_lines.length - 1];\n if (last_beam && last_beam.end === undefined) {\n last_beam.end = last_beam.start - partial_beam_length;\n }\n return beam_lines;\n }\n /** Render the stems for each note. */\n drawStems(ctx) {\n this.notes.forEach((note) => {\n const stem = note.getStem();\n if (stem) {\n const stem_x = note.getStemX();\n stem.setNoteHeadXBounds(stem_x, stem_x);\n stem.setContext(ctx).draw();\n }\n }, this);\n }\n // Render the beam lines\n drawBeamLines(ctx) {\n const valid_beam_durations = ['4', '8', '16', '32', '64'];\n const firstNote = this.notes[0];\n let beamY = this.getBeamYToDraw();\n const firstStemX = firstNote.getStemX();\n const beamThickness = this.render_options.beam_width * this.stem_direction;\n // Draw the beams.\n for (let i = 0; i < valid_beam_durations.length; ++i) {\n const duration = valid_beam_durations[i];\n const beamLines = this.getBeamLines(duration);\n for (let j = 0; j < beamLines.length; ++j) {\n const beam_line = beamLines[j];\n const startBeamX = beam_line.start;\n const startBeamY = this.getSlopeY(startBeamX, firstStemX, beamY, this.slope);\n const lastBeamX = beam_line.end;\n if (lastBeamX) {\n const lastBeamY = this.getSlopeY(lastBeamX, firstStemX, beamY, this.slope);\n ctx.openGroup('beam', this.getAttribute('id'));\n ctx.beginPath();\n ctx.moveTo(startBeamX, startBeamY);\n ctx.lineTo(startBeamX, startBeamY + beamThickness);\n ctx.lineTo(lastBeamX + 1, lastBeamY + beamThickness);\n ctx.lineTo(lastBeamX + 1, lastBeamY);\n ctx.closePath();\n ctx.fill();\n ctx.closeGroup();\n }\n else {\n throw new RuntimeError('NoLastBeamX', 'lastBeamX undefined.');\n }\n }\n beamY += beamThickness * 1.5;\n }\n }\n /** Pre-format the beam. */\n preFormat() {\n return this;\n }\n /**\n * Post-format the beam. This can only be called after\n * the notes in the beam have both `x` and `y` values. ie: they've\n * been formatted and have staves.\n */\n postFormat() {\n if (this.postFormatted)\n return;\n // Calculate a smart slope if we're not forcing the beams to be flat.\n if (isTabNote(this.notes[0]) || this.render_options.flat_beams) {\n this.calculateFlatSlope();\n }\n else {\n this.calculateSlope();\n }\n this.applyStemExtensions();\n this.postFormatted = true;\n }\n /** Render the beam to the canvas context */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n if (this.unbeamable)\n return;\n if (!this.postFormatted) {\n this.postFormat();\n }\n this.drawStems(ctx);\n this.applyStyle();\n this.drawBeamLines(ctx);\n this.restoreStyle();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\n// MIT License\nimport { Clef } from './clef';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\n/** ClefNote implements clef annotations in measures. */\nexport class ClefNote extends Note {\n constructor(type, size, annotation) {\n super({ duration: 'b' });\n this.type = type;\n this.clef_obj = new Clef(type, size, annotation);\n this.clef = this.clef_obj.clef;\n this.glyph = new Glyph(this.clef.code, this.clef.point);\n this.setWidth(this.glyph.getMetrics().width);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.ClefNote;\n }\n /** Set clef type, size and annotation. */\n setType(type, size, annotation) {\n this.type = type;\n this.clef_obj = new Clef(type, size, annotation);\n this.clef = this.clef_obj.clef;\n this.glyph = new Glyph(this.clef.code, this.clef.point);\n this.setWidth(this.glyph.getMetrics().width);\n return this;\n }\n /** Get associated clef. */\n getClef() {\n return this.clef;\n }\n /** Set associated context. */\n setContext(context) {\n super.setContext(context);\n this.glyph.setContext(this.getContext());\n return this;\n }\n /** Get bounding box. */\n getBoundingBox() {\n return super.getBoundingBox();\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n /** Render clef note. */\n draw() {\n var _a;\n const stave = this.checkStave();\n if (!this.glyph.getContext()) {\n this.glyph.setContext(this.getContext());\n }\n this.setRendered();\n const abs_x = this.getAbsoluteX();\n this.glyph.setStave(stave);\n this.glyph.setYShift(stave.getYForLine((_a = this.clef.line) !== null && _a !== void 0 ? _a : 0) - stave.getYForGlyphs());\n this.glyph.renderToStave(abs_x);\n // If the Vex.Flow.Clef has an annotation, such as 8va, draw it.\n if (this.clef_obj.annotation !== undefined) {\n const attachment = new Glyph(this.clef_obj.annotation.code, this.clef_obj.annotation.point);\n if (!attachment.getContext()) {\n attachment.setContext(this.getContext());\n }\n attachment.setStave(stave);\n attachment.setYShift(stave.getYForLine(this.clef_obj.annotation.line) - stave.getYForGlyphs());\n attachment.setXShift(this.clef_obj.annotation.x_shift);\n attachment.renderToStave(abs_x);\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This file implements the `Crescendo` object which draws crescendos and\n// decrescendo dynamics markings. A `Crescendo` is initialized with a\n// duration and formatted as part of a `Voice` like any other `Note`\n// type in VexFlow. This object would most likely be formatted in a Voice\n// with `TextNotes` - which are used to represent other dynamics markings.\nimport { Note } from './note';\nimport { TickContext } from './tickcontext';\nimport { Category } from './typeguard';\nimport { log } from './util';\n// To enable logging for this class. Set `Vex.Flow.Crescendo.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (Crescendo.DEBUG)\n log('Vex.Flow.Crescendo', args);\n}\n// Private helper to draw the hairpin\nfunction renderHairpin(ctx, params) {\n const begin_x = params.begin_x;\n const end_x = params.end_x;\n const y = params.y;\n const half_height = params.height / 2;\n ctx.beginPath();\n if (params.reverse) {\n ctx.moveTo(begin_x, y - half_height);\n ctx.lineTo(end_x, y);\n ctx.lineTo(begin_x, y + half_height);\n }\n else {\n ctx.moveTo(end_x, y - half_height);\n ctx.lineTo(begin_x, y);\n ctx.lineTo(end_x, y + half_height);\n }\n ctx.stroke();\n ctx.closePath();\n}\nexport class Crescendo extends Note {\n // Initialize the crescendo's properties\n constructor(noteStruct) {\n super(noteStruct);\n this.options = {\n // Extensions to the length of the crescendo on either side\n extend_left: 0,\n extend_right: 0,\n // Vertical shift\n y_shift: 0,\n };\n // Whether the object is a decrescendo\n this.decrescendo = false;\n // The staff line to be placed on\n this.line = noteStruct.line || 0;\n // The height at the open end of the cresc/decresc\n this.height = 15;\n }\n /** Crescendo category string. */\n static get CATEGORY() {\n return Category.Crescendo;\n }\n // Set the line to center the element on\n setLine(line) {\n this.line = line;\n return this;\n }\n // Set the full height at the open end\n setHeight(height) {\n this.height = height;\n return this;\n }\n // Set whether the sign should be a descresendo by passing a bool\n // to `decresc`\n setDecrescendo(decresc) {\n this.decrescendo = decresc;\n return this;\n }\n // Preformat the note\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n // Render the Crescendo object onto the canvas\n draw() {\n const ctx = this.checkContext();\n const stave = this.checkStave();\n this.setRendered();\n const tick_context = this.getTickContext();\n const next_context = TickContext.getNextContext(tick_context);\n const begin_x = this.getAbsoluteX();\n const end_x = next_context ? next_context.getX() : stave.getX() + stave.getWidth();\n const y = stave.getYForLine(this.line + -3) + 1;\n L('Drawing ', this.decrescendo ? 'decrescendo ' : 'crescendo ', this.height, 'x', begin_x - end_x);\n renderHairpin(ctx, {\n begin_x: begin_x - this.options.extend_left,\n end_x: end_x + this.options.extend_right,\n y: y + this.options.y_shift,\n height: this.height,\n reverse: this.decrescendo,\n });\n }\n}\nCrescendo.DEBUG = false;\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements curves (for slurs)\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport var CurvePosition;\n(function (CurvePosition) {\n CurvePosition[CurvePosition[\"NEAR_HEAD\"] = 1] = \"NEAR_HEAD\";\n CurvePosition[CurvePosition[\"NEAR_TOP\"] = 2] = \"NEAR_TOP\";\n})(CurvePosition || (CurvePosition = {}));\nexport class Curve extends Element {\n // from: Start note\n // to: End note\n // options:\n // cps: List of control points\n // x_shift: pixels to shift\n // y_shift: pixels to shift\n constructor(from, to, options) {\n super();\n this.render_options = Object.assign({ thickness: 2, x_shift: 0, y_shift: 10, position: CurvePosition.NEAR_HEAD, position_end: CurvePosition.NEAR_HEAD, invert: false, cps: [\n { x: 0, y: 10 },\n { x: 0, y: 10 },\n ] }, options);\n this.from = from;\n this.to = to;\n }\n static get CATEGORY() {\n return Category.Curve;\n }\n static get Position() {\n return CurvePosition;\n }\n static get PositionString() {\n return {\n nearHead: CurvePosition.NEAR_HEAD,\n nearTop: CurvePosition.NEAR_TOP,\n };\n }\n setNotes(from, to) {\n if (!from && !to) {\n throw new RuntimeError('BadArguments', 'Curve needs to have either `from` or `to` set.');\n }\n this.from = from;\n this.to = to;\n return this;\n }\n /**\n * @return {boolean} Returns true if this is a partial bar.\n */\n isPartial() {\n return !this.from || !this.to;\n }\n renderCurve(params) {\n const ctx = this.checkContext();\n const x_shift = this.render_options.x_shift;\n const y_shift = this.render_options.y_shift * params.direction;\n const first_x = params.first_x + x_shift;\n const first_y = params.first_y + y_shift;\n const last_x = params.last_x - x_shift;\n const last_y = params.last_y + y_shift;\n const thickness = this.render_options.thickness;\n const cps = this.render_options.cps;\n const { x: cp0x, y: cp0y } = cps[0];\n const { x: cp1x, y: cp1y } = cps[1];\n const cp_spacing = (last_x - first_x) / (cps.length + 2);\n ctx.beginPath();\n ctx.moveTo(first_x, first_y);\n ctx.bezierCurveTo(first_x + cp_spacing + cp0x, first_y + cp0y * params.direction, last_x - cp_spacing + cp1x, last_y + cp1y * params.direction, last_x, last_y);\n ctx.bezierCurveTo(last_x - cp_spacing + cp1x, last_y + (cp1y + thickness) * params.direction, first_x + cp_spacing + cp0x, first_y + (cp0y + thickness) * params.direction, first_x, first_y);\n ctx.stroke();\n ctx.closePath();\n ctx.fill();\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const first_note = this.from;\n const last_note = this.to;\n let first_x;\n let last_x;\n let first_y;\n let last_y;\n let stem_direction = 0;\n let metric = 'baseY';\n let end_metric = 'baseY';\n function getPosition(position) {\n return typeof position === 'string' ? Curve.PositionString[position] : position;\n }\n const position = getPosition(this.render_options.position);\n const position_end = getPosition(this.render_options.position_end);\n if (position === CurvePosition.NEAR_TOP) {\n metric = 'topY';\n end_metric = 'topY';\n }\n if (position_end === CurvePosition.NEAR_HEAD) {\n end_metric = 'baseY';\n }\n else if (position_end === CurvePosition.NEAR_TOP) {\n end_metric = 'topY';\n }\n if (first_note) {\n first_x = first_note.getTieRightX();\n stem_direction = first_note.getStemDirection();\n first_y = first_note.getStemExtents()[metric];\n }\n else {\n const stave = last_note.checkStave();\n first_x = stave.getTieStartX();\n first_y = last_note.getStemExtents()[metric];\n }\n if (last_note) {\n last_x = last_note.getTieLeftX();\n stem_direction = last_note.getStemDirection();\n last_y = last_note.getStemExtents()[end_metric];\n }\n else {\n const stave = first_note.checkStave();\n last_x = stave.getTieEndX();\n last_y = first_note.getStemExtents()[end_metric];\n }\n this.renderCurve({\n first_x,\n last_x,\n first_y,\n last_y,\n direction: stem_direction * (this.render_options.invert === true ? -1 : 1),\n });\n return true;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// A generic text parsing class for VexFlow.\nimport { log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.Parser.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (Parser.DEBUG)\n log('Vex.Flow.Parser', args);\n}\nconst NO_ERROR_POS = -1;\n// Converts parser results into an easy to reference list that can be\n// used in triggers. This function returns:\n// - nested array in which the leaf elements are string or null\n// - string (including empty strings)\n// - null\nfunction flattenMatches(r) {\n if ('matchedString' in r)\n return r.matchedString; // string\n if ('results' in r)\n return flattenMatches(r.results);\n const results = r;\n if (results.length === 1)\n return flattenMatches(results[0]);\n if (results.length === 0)\n return null;\n return results.map(flattenMatches); // nested array\n}\n// This is the base parser class. Given an arbitrary context-free grammar, it\n// can parse any line and execute code when specific rules are met (e.g.,\n// when a string is terminated.)\nexport class Parser {\n // For an example of a simple grammar, take a look at tests/parser_tests.ts or\n // the EasyScore grammar in easyscore.ts.\n constructor(grammar) {\n this.grammar = grammar;\n this.line = '';\n this.pos = 0;\n this.errorPos = NO_ERROR_POS;\n }\n // Parse `line` using current grammar. Returns `{success: true}` if the\n // line parsed correctly, otherwise returns `{success: false, errorPos: N}`\n // where `errorPos` is the location of the error in the string.\n parse(line) {\n this.line = line;\n this.pos = 0;\n this.errorPos = NO_ERROR_POS;\n const result = this.expect(this.grammar.begin());\n result.errorPos = this.errorPos;\n return result;\n }\n matchFail(returnPos) {\n if (this.errorPos === NO_ERROR_POS)\n this.errorPos = this.pos;\n this.pos = returnPos;\n }\n matchSuccess() {\n this.errorPos = NO_ERROR_POS;\n }\n // Look for `token` in this.line[this.pos], and return success\n // if one is found. `token` is specified as a regular expression.\n matchToken(token, noSpace = false) {\n const regexp = noSpace ? new RegExp('^((' + token + '))') : new RegExp('^((' + token + ')\\\\s*)');\n const workingLine = this.line.slice(this.pos);\n const result = workingLine.match(regexp);\n if (result !== null) {\n return {\n success: true,\n matchedString: result[2],\n incrementPos: result[1].length,\n pos: this.pos,\n };\n }\n else {\n return { success: false, pos: this.pos };\n }\n }\n // Execute rule to match a sequence of tokens (or rules). If `maybe` is\n // set, then return success even if the token is not found, but reset\n // the position before exiting.\n // TODO: expectOne(...) is never called with the `maybe` parameter.\n expectOne(rule, maybe = false) {\n const results = [];\n const pos = this.pos;\n let allMatches = true;\n let oneMatch = false;\n maybe = maybe === true || rule.maybe === true;\n // Execute all sub rules in sequence.\n if (rule.expect) {\n for (const next of rule.expect) {\n const localPos = this.pos;\n const result = this.expect(next);\n // If `rule.or` is set, then return success if any one\n // of the subrules match, else all subrules must match.\n if (result.success) {\n results.push(result);\n oneMatch = true;\n if (rule.or)\n break;\n }\n else {\n allMatches = false;\n if (!rule.or) {\n this.pos = localPos;\n break;\n }\n }\n }\n }\n const gotOne = (rule.or && oneMatch) || allMatches;\n const success = gotOne || maybe === true;\n const numMatches = gotOne ? 1 : 0;\n if (maybe && !gotOne)\n this.pos = pos;\n if (success) {\n this.matchSuccess();\n }\n else {\n this.matchFail(pos);\n }\n return { success, results, numMatches };\n }\n // Try to match multiple (one or more) instances of the rule. If `maybe` is set,\n // then a failed match is also a success (but the position is reset).\n expectOneOrMore(rule, maybe = false) {\n const results = [];\n const pos = this.pos;\n let numMatches = 0;\n let more = true;\n do {\n const result = this.expectOne(rule);\n if (result.success && result.results) {\n numMatches++;\n results.push(result.results);\n }\n else {\n more = false;\n }\n } while (more);\n const success = numMatches > 0 || maybe === true;\n if (maybe && !(numMatches > 0))\n this.pos = pos;\n if (success) {\n this.matchSuccess();\n }\n else {\n this.matchFail(pos);\n }\n return { success, results, numMatches };\n }\n // Match zero or more instances of `rule`. Offloads to `expectOneOrMore`.\n expectZeroOrMore(rule) {\n return this.expectOneOrMore(rule, true);\n }\n // Execute the rule produced by the provided `rules` function. This\n // offloads to one of the above matchers and consolidates the results. It is also\n // responsible for executing any code triggered by the rule (in `rule.run`.)\n expect(ruleFunc) {\n L('Evaluating rule function:', ruleFunc);\n if (!ruleFunc) {\n throw new RuntimeError('Invalid rule function');\n }\n let result;\n // Get rule from Grammar class.\n // expect(...) handles both lexing & parsing:\n // - lexer rules produce tokens.\n // - parser rules produce expressions which may trigger code via the\n // { run: () => ... } trigger functions in easyscore.ts.\n // These functions build the VexFlow objects that are displayed on screen.\n const rule = ruleFunc.bind(this.grammar)();\n if (rule.token) {\n // A lexer rule has a `token` property.\n // Base case: parse the regex and throw an error if the\n // line doesn't match.\n result = this.matchToken(rule.token, rule.noSpace === true);\n if (result.success) {\n // Token match! Update position and throw away parsed portion\n // of string.\n this.pos += result.incrementPos;\n }\n }\n else if (rule.expect) {\n // A parser rule has an `expect` property.\n if (rule.oneOrMore) {\n result = this.expectOneOrMore(rule);\n }\n else if (rule.zeroOrMore) {\n result = this.expectZeroOrMore(rule);\n }\n else {\n result = this.expectOne(rule);\n }\n }\n else {\n L(rule);\n throw new RuntimeError('Bad grammar! No `token` or `expect` property ' + rule);\n }\n // If there's a trigger attached to this rule, then run it.\n // Make the matches accessible through `state.matches` in the\n // `run: (state) => ...` trigger.\n const matches = [];\n result.matches = matches;\n if (result.results) {\n result.results.forEach((r) => matches.push(flattenMatches(r)));\n }\n if (rule.run && result.success) {\n rule.run({ matches });\n }\n return result;\n }\n}\nParser.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Articulation } from './articulation';\nimport { Dot } from './dot';\nimport { FretHandFinger } from './frethandfinger';\nimport { Music } from './music';\nimport { Parser } from './parser';\nimport { Stem } from './stem';\nimport { defined, log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.EasyScore.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (EasyScore.DEBUG)\n log('Vex.Flow.EasyScore', args);\n}\nexport class EasyScoreGrammar {\n constructor(builder) {\n this.builder = builder;\n }\n begin() {\n return this.LINE;\n }\n LINE() {\n return {\n expect: [this.PIECE, this.PIECES, this.EOL],\n };\n }\n PIECE() {\n return {\n expect: [this.CHORDORNOTE, this.PARAMS],\n run: () => this.builder.commitPiece(),\n };\n }\n PIECES() {\n return {\n expect: [this.COMMA, this.PIECE],\n zeroOrMore: true,\n };\n }\n PARAMS() {\n return {\n expect: [this.DURATION, this.TYPE, this.DOTS, this.OPTS],\n };\n }\n CHORDORNOTE() {\n return {\n expect: [this.CHORD, this.SINGLENOTE],\n or: true,\n };\n }\n CHORD() {\n return {\n expect: [this.LPAREN, this.NOTES, this.RPAREN],\n // eslint-disable-next-line\n run: (state) => this.builder.addChord(state.matches[1]),\n };\n }\n NOTES() {\n return {\n expect: [this.NOTE],\n oneOrMore: true,\n };\n }\n NOTE() {\n return {\n expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE],\n };\n }\n SINGLENOTE() {\n return {\n expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE],\n run: (state) => {\n // eslint-disable-next-line\n const s = state;\n this.builder.addSingleNote(s.matches[0], s.matches[1], s.matches[2]);\n },\n };\n }\n ACCIDENTAL() {\n return {\n expect: [this.MICROTONES, this.ACCIDENTALS],\n maybe: true,\n or: true,\n };\n }\n DOTS() {\n return {\n expect: [this.DOT],\n zeroOrMore: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteDots(state.matches),\n };\n }\n TYPE() {\n return {\n expect: [this.SLASH, this.MAYBESLASH, this.TYPES],\n maybe: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteType(state.matches[2]),\n };\n }\n DURATION() {\n return {\n expect: [this.SLASH, this.DURATIONS],\n maybe: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteDuration(state.matches[1]),\n };\n }\n OPTS() {\n return {\n expect: [this.LBRACKET, this.KEYVAL, this.KEYVALS, this.RBRACKET],\n maybe: true,\n };\n }\n KEYVALS() {\n return {\n expect: [this.COMMA, this.KEYVAL],\n zeroOrMore: true,\n };\n }\n KEYVAL() {\n const unquote = (str) => str.slice(1, -1);\n return {\n expect: [this.KEY, this.EQUALS, this.VAL],\n // eslint-disable-next-line\n run: (state) => this.builder.addNoteOption(state.matches[0], unquote(state.matches[2])),\n };\n }\n VAL() {\n return {\n expect: [this.SVAL, this.DVAL],\n or: true,\n };\n }\n KEY() {\n return { token: '[a-zA-Z][a-zA-Z0-9]*' };\n }\n DVAL() {\n return { token: '[\"][^\"]*[\"]' };\n }\n SVAL() {\n return { token: \"['][^']*[']\" };\n }\n NOTENAME() {\n return { token: '[a-gA-G]' };\n }\n OCTAVE() {\n return { token: '[0-9]+' };\n }\n ACCIDENTALS() {\n return { token: 'bb|b|##|#|n' };\n }\n MICROTONES() {\n return { token: 'bbs|bss|bs|db|d|\\\\+\\\\+-|\\\\+-|\\\\+\\\\+|\\\\+|k|o' };\n }\n DURATIONS() {\n return { token: '[0-9whq]+' };\n }\n TYPES() {\n return { token: '[rRsSmMhHgG]' };\n }\n LPAREN() {\n return { token: '[(]' };\n }\n RPAREN() {\n return { token: '[)]' };\n }\n COMMA() {\n return { token: '[,]' };\n }\n DOT() {\n return { token: '[.]' };\n }\n SLASH() {\n return { token: '[/]' };\n }\n MAYBESLASH() {\n return { token: '[/]?' };\n }\n EQUALS() {\n return { token: '[=]' };\n }\n LBRACKET() {\n return { token: '\\\\[' };\n }\n RBRACKET() {\n return { token: '\\\\]' };\n }\n EOL() {\n return { token: '$' };\n }\n}\nexport class Piece {\n constructor(duration) {\n this.chord = [];\n this.dots = 0;\n this.options = {};\n this.duration = duration;\n }\n}\nexport class Builder {\n constructor(factory) {\n this.commitHooks = [];\n this.factory = factory;\n this.reset();\n }\n reset(options) {\n this.options = Object.assign({ stem: 'auto', clef: 'treble' }, options);\n this.elements = { notes: [], accidentals: [] };\n this.rollingDuration = '8';\n this.resetPiece();\n }\n getFactory() {\n return this.factory;\n }\n getElements() {\n return this.elements;\n }\n addCommitHook(commitHook) {\n this.commitHooks.push(commitHook);\n }\n resetPiece() {\n L('resetPiece');\n this.piece = new Piece(this.rollingDuration);\n }\n setNoteDots(dots) {\n L('setNoteDots:', dots);\n if (dots)\n this.piece.dots = dots.length;\n }\n setNoteDuration(duration) {\n L('setNoteDuration:', duration);\n this.rollingDuration = this.piece.duration = duration || this.rollingDuration;\n }\n setNoteType(type) {\n L('setNoteType:', type);\n if (type)\n this.piece.type = type;\n }\n addNoteOption(key, value) {\n L('addNoteOption: key:', key, 'value:', value);\n this.piece.options[key] = value;\n }\n addNote(key, accid, octave) {\n L('addNote:', key, accid, octave);\n this.piece.chord.push({\n key: key,\n accid,\n octave,\n });\n }\n addSingleNote(key, accid, octave) {\n L('addSingleNote:', key, accid, octave);\n this.addNote(key, accid, octave);\n }\n // notes is an array with 3 entries\n addChord(notes) {\n L('startChord');\n if (typeof notes[0] !== 'object') {\n this.addSingleNote(notes[0]);\n }\n else {\n notes.forEach((n) => {\n if (n)\n this.addNote(...n); // n => [string, string | null, string]\n });\n }\n L('endChord');\n }\n commitPiece() {\n L('commitPiece');\n const { factory } = this;\n if (!factory)\n return;\n const options = Object.assign(Object.assign({}, this.options), this.piece.options);\n // reset() sets this.options.stem & this.options.clef but we check to make sure nothing has changed.\n // e.g., auto | up | down\n const stem = defined(options.stem, 'BadArguments', 'options.stem is not defined').toLowerCase();\n // e.g., treble | bass\n const clef = defined(options.clef, 'BadArguments', 'options.clef is not defined').toLowerCase();\n const { chord, duration, dots, type } = this.piece;\n // Create a string[] that will be assigned to the .keys property of the StaveNote.\n // Each string in the array represents a note pitch and is of the form: {NoteName}{Accidental}/{Octave}\n // Only standard accidentals are included in the .keys property. Microtonal accidentals are not included.\n const standardAccidentals = Music.accidentals;\n const keys = chord.map((notePiece) => {\n var _a;\n return notePiece.key +\n (standardAccidentals.includes((_a = notePiece.accid) !== null && _a !== void 0 ? _a : '') ? notePiece.accid : '') +\n '/' +\n notePiece.octave;\n });\n const auto_stem = stem === 'auto'; // StaveNoteStruct expects the underscore & lowercase.\n // Build a GhostNote or StaveNote using the information we gathered.\n const note = (type === null || type === void 0 ? void 0 : type.toLowerCase()) == 'g'\n ? factory.GhostNote({ duration, dots })\n : factory.StaveNote({ keys, duration, dots, type, clef, auto_stem });\n if (!auto_stem)\n note.setStemDirection(stem === 'up' ? Stem.UP : Stem.DOWN);\n // Attach accidentals.\n const accidentals = [];\n chord.forEach((notePiece, index) => {\n const accid = notePiece.accid;\n if (typeof accid === 'string') {\n const accidental = factory.Accidental({ type: accid });\n note.addModifier(accidental, index);\n accidentals.push(accidental);\n }\n else {\n accidentals.push(undefined);\n }\n });\n // Attach dots.\n for (let i = 0; i < dots; i++)\n Dot.buildAndAttach([note], { all: true });\n this.commitHooks.forEach((commitHook) => commitHook(options, note, this));\n this.elements.notes.push(note);\n this.elements.accidentals.push(accidentals);\n this.resetPiece();\n }\n}\n/**\n * Commit hook used by EasyScore.setOptions().\n */\nfunction setId(options, note) {\n if (options.id === undefined)\n return;\n note.setAttribute('id', options.id);\n}\n// Used by setClass() below.\nconst commaSeparatedRegex = /\\s*,\\s*/;\n/**\n * Commit hook used by EasyScore.setOptions().\n */\nfunction setClass(options, note) {\n if (options.class === undefined)\n return;\n options.class.split(commaSeparatedRegex).forEach((className) => note.addClass(className));\n}\n/**\n * EasyScore implements a parser for a simple language to generate VexFlow objects.\n */\nexport class EasyScore {\n constructor(options = {}) {\n this.defaults = {\n clef: 'treble',\n time: '4/4',\n stem: 'auto',\n };\n this.setOptions(options);\n }\n /**\n * Set the score defaults.\n * clef must be set appropriately to avoid errors when adding Staves.\n * @param defaults.clef default clef ( treble | bass ...) see {@link Clef.types}\n * @param defaults.time default time signature ( 4/4 | 9/8 ...)\n * @param defaults.stem default stem arrangement (auto | up | down)\n * @returns this\n */\n set(defaults) {\n this.defaults = Object.assign(Object.assign({}, this.defaults), defaults);\n return this;\n }\n /**\n * @param options.factory is required.\n * @returns this\n */\n setOptions(options) {\n var _a, _b;\n // eslint-disable-next-line\n const factory = options.factory; // ! operator, because options.factory was set in Factory.EasyScore().\n const builder = (_a = options.builder) !== null && _a !== void 0 ? _a : new Builder(factory);\n this.options = Object.assign(Object.assign({ commitHooks: [setId, setClass, Articulation.easyScoreHook, FretHandFinger.easyScoreHook], throwOnError: false }, options), { factory,\n builder });\n this.factory = factory;\n this.builder = builder;\n this.grammar = new EasyScoreGrammar(this.builder);\n this.parser = new Parser(this.grammar);\n (_b = this.options.commitHooks) === null || _b === void 0 ? void 0 : _b.forEach((commitHook) => this.addCommitHook(commitHook));\n return this;\n }\n setContext(context) {\n this.factory.setContext(context);\n return this;\n }\n parse(line, options = {}) {\n this.builder.reset(options);\n const result = this.parser.parse(line);\n if (!result.success && this.options.throwOnError) {\n L(result);\n throw new RuntimeError('Error parsing line: ' + line);\n }\n return result;\n }\n beam(notes, options) {\n this.factory.Beam({ notes, options });\n return notes;\n }\n tuplet(notes, options) {\n this.factory.Tuplet({ notes, options });\n return notes;\n }\n notes(line, options = {}) {\n options = Object.assign({ clef: this.defaults.clef, stem: this.defaults.stem }, options);\n this.parse(line, options);\n return this.builder.getElements().notes;\n }\n voice(notes, options = {}) {\n options = Object.assign({ time: this.defaults.time }, options);\n return this.factory.Voice(options).addTickables(notes);\n }\n addCommitHook(commitHook) {\n this.builder.addCommitHook(commitHook);\n }\n}\nEasyScore.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\nimport { StemmableNote } from './stemmablenote';\nimport { Category, isAnnotation } from './typeguard';\nimport { RuntimeError } from './util';\nconst ERROR_MSG = 'Ghost note must have valid initialization data to identify duration.';\nexport class GhostNote extends StemmableNote {\n static get CATEGORY() {\n return Category.GhostNote;\n }\n constructor(parameter) {\n if (!parameter) {\n throw new RuntimeError('BadArguments', ERROR_MSG);\n }\n let noteStruct;\n if (typeof parameter === 'string') {\n // Preserve backwards-compatibility\n noteStruct = { duration: parameter };\n }\n else if (typeof parameter === 'object') {\n noteStruct = parameter;\n }\n else {\n throw new RuntimeError('BadArguments', ERROR_MSG);\n }\n super(noteStruct);\n // Note properties\n this.setWidth(0);\n }\n /**\n * @returns true if this note is a type of rest. Rests don't have pitches, but take up space in the score.\n */\n isRest() {\n return true;\n }\n setStave(stave) {\n super.setStave(stave);\n return this;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n draw() {\n // Draw Annotations\n this.setRendered();\n for (let i = 0; i < this.modifiers.length; ++i) {\n const modifier = this.modifiers[i];\n if (isAnnotation(modifier)) {\n modifier.setContext(this.getContext());\n modifier.drawWithStyle();\n }\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Note } from './note';\nimport { Category } from './typeguard';\nexport class GlyphNote extends Note {\n constructor(glyph, noteStruct, options) {\n super(noteStruct);\n this.options = Object.assign({ ignoreTicks: false, line: 2 }, options);\n // Note properties\n this.ignore_ticks = this.options.ignoreTicks;\n if (glyph) {\n this.setGlyph(glyph);\n }\n }\n static get CATEGORY() {\n return Category.GlyphNote;\n }\n setGlyph(glyph) {\n this.glyph = glyph;\n this.setWidth(this.glyph.getMetrics().width);\n return this;\n }\n getBoundingBox() {\n return this.glyph.getBoundingBox();\n }\n preFormat() {\n if (!this.preFormatted && this.modifierContext) {\n this.modifierContext.preFormat();\n }\n this.preFormatted = true;\n return this;\n }\n drawModifiers() {\n const ctx = this.checkContext();\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n modifier.setContext(ctx);\n modifier.drawWithStyle();\n }\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('glyphNote', this.getAttribute('id'));\n // Context is set when setStave is called on Note\n const glyph = this.glyph;\n if (!glyph.getContext()) {\n glyph.setContext(ctx);\n }\n glyph.setStave(stave);\n glyph.setYShift(stave.getYForLine(this.options.line) - stave.getYForGlyphs());\n const x = this.isCenterAligned() ? this.getAbsoluteX() - this.getWidth() / 2 : this.getAbsoluteX();\n glyph.renderToStave(x);\n this.drawModifiers();\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { StaveNote } from './stavenote';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class GraceNote extends StaveNote {\n constructor(noteStruct) {\n super(Object.assign({ glyph_font_scale: Tables.NOTATION_FONT_SCALE * GraceNote.SCALE, stroke_px: GraceNote.LEDGER_LINE_OFFSET }, noteStruct));\n this.slash = noteStruct.slash || false;\n this.slur = true;\n this.buildNoteHeads();\n this.width = 3;\n }\n static get CATEGORY() {\n return Category.GraceNote;\n }\n static get LEDGER_LINE_OFFSET() {\n return 2;\n }\n static get SCALE() {\n return 0.66;\n }\n getStemExtension() {\n if (this.stem_extension_override) {\n return this.stem_extension_override;\n }\n const glyph = this.getGlyph();\n if (glyph) {\n let ret = super.getStemExtension();\n if (glyph.stem) {\n const staveNoteScale = this.getStaveNoteScale();\n ret = (Stem.HEIGHT + ret) * staveNoteScale - Stem.HEIGHT;\n }\n return ret;\n }\n return 0;\n }\n getStaveNoteScale() {\n return this.render_options.glyph_font_scale / Tables.NOTATION_FONT_SCALE;\n }\n draw() {\n super.draw();\n this.setRendered();\n const stem = this.stem;\n if (this.slash && stem) {\n const staveNoteScale = this.getStaveNoteScale();\n // some magic numbers are based on the staveNoteScale 0.66.\n const offsetScale = staveNoteScale / 0.66;\n let slashBBox = undefined;\n const beam = this.beam;\n if (beam) {\n // FIXME: should render slash after beam?\n if (!beam.postFormatted) {\n beam.postFormat();\n }\n slashBBox = this.calcBeamedNotesSlashBBox(8 * offsetScale, 8 * offsetScale, {\n stem: 6 * offsetScale,\n beam: 5 * offsetScale,\n });\n }\n else {\n const stem_direction = this.getStemDirection();\n const noteHeadBounds = this.getNoteHeadBounds();\n const noteStemHeight = stem.getHeight();\n let x = this.getAbsoluteX();\n let y = stem_direction === Stem.DOWN\n ? noteHeadBounds.y_top - noteStemHeight\n : noteHeadBounds.y_bottom - noteStemHeight;\n const defaultStemExtention = stem_direction === Stem.DOWN ? this.glyph.stem_down_extension : this.glyph.stem_up_extension;\n let defaultOffsetY = Tables.STEM_HEIGHT;\n defaultOffsetY -= defaultOffsetY / 2.8;\n defaultOffsetY += defaultStemExtention;\n y += defaultOffsetY * staveNoteScale * stem_direction;\n const offsets = stem_direction === Stem.UP\n ? {\n x1: 1,\n y1: 0,\n x2: 13,\n y2: -9,\n }\n : {\n x1: -4,\n y1: 1,\n x2: 13,\n y2: 9,\n };\n x += offsets.x1 * offsetScale;\n y += offsets.y1 * offsetScale;\n slashBBox = {\n x1: x,\n y1: y,\n x2: x + offsets.x2 * offsetScale,\n y2: y + offsets.y2 * offsetScale,\n };\n }\n // FIXME: avoid staff lines, ledger lines or others.\n const ctx = this.checkContext();\n ctx.save();\n ctx.setLineWidth(1 * offsetScale); // FIXME: use more appropriate value.\n ctx.beginPath();\n ctx.moveTo(slashBBox.x1, slashBBox.y1);\n ctx.lineTo(slashBBox.x2, slashBBox.y2);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n }\n }\n calcBeamedNotesSlashBBox(slashStemOffset, slashBeamOffset, protrusions) {\n const beam = this.beam;\n if (!beam)\n throw new RuntimeError('NoBeam', \"Can't calculate without a beam.\");\n const beam_slope = beam.slope;\n const isBeamEndNote = beam.notes[beam.notes.length - 1] === this;\n const scaleX = isBeamEndNote ? -1 : 1;\n const beam_angle = Math.atan(beam_slope * scaleX);\n // slash line intersecting point on beam.\n const iPointOnBeam = {\n dx: Math.cos(beam_angle) * slashBeamOffset,\n dy: Math.sin(beam_angle) * slashBeamOffset,\n };\n slashStemOffset *= this.getStemDirection();\n const slash_angle = Math.atan((iPointOnBeam.dy - slashStemOffset) / iPointOnBeam.dx);\n const protrusion_stem_dx = Math.cos(slash_angle) * protrusions.stem * scaleX;\n const protrusion_stem_dy = Math.sin(slash_angle) * protrusions.stem;\n const protrusion_beam_dx = Math.cos(slash_angle) * protrusions.beam * scaleX;\n const protrusion_beam_dy = Math.sin(slash_angle) * protrusions.beam;\n const stemX = this.getStemX();\n const stem0X = beam.notes[0].getStemX();\n const stemY = beam.getBeamYToDraw() + (stemX - stem0X) * beam_slope;\n const ret = {\n x1: stemX - protrusion_stem_dx,\n y1: stemY + slashStemOffset - protrusion_stem_dy,\n x2: stemX + iPointOnBeam.dx * scaleX + protrusion_beam_dx,\n y2: stemY + iPointOnBeam.dy + protrusion_beam_dy,\n };\n return ret;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Mark Meeus 2019\nimport { KeySignature } from './keysignature';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nexport class KeySigNote extends Note {\n constructor(keySpec, cancelKeySpec, alterKeySpec) {\n super({ duration: 'b' });\n this.keySignature = new KeySignature(keySpec, cancelKeySpec, alterKeySpec);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.KeySigNote;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n this.keySignature.setStave(this.checkStave());\n this.setWidth(this.keySignature.getWidth());\n return this;\n }\n draw() {\n const ctx = this.checkStave().checkContext();\n this.setRendered();\n this.keySignature.setX(this.getAbsoluteX());\n this.keySignature.setContext(ctx);\n this.keySignature.draw();\n }\n}\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements multiple measure rests.\nimport { Element } from './element';\nimport { Glyph } from './glyph';\nimport { NoteHead } from './notehead';\nimport { StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { TimeSignature } from './timesignature';\nimport { Category, isBarline } from './typeguard';\nimport { defined } from './util';\nlet semibreve_rest;\nfunction get_semibreve_rest() {\n if (!semibreve_rest) {\n const noteHead = new NoteHead({ duration: 'w', note_type: 'r' });\n semibreve_rest = {\n glyph_font_scale: noteHead.render_options.glyph_font_scale,\n glyph_code: noteHead.glyph_code,\n width: noteHead.getWidth(),\n };\n }\n return semibreve_rest;\n}\nexport class MultiMeasureRest extends Element {\n /**\n *\n * @param number_of_measures Number of measures.\n * @param options The options object.\n */\n constructor(number_of_measures, options) {\n super();\n this.xs = { left: NaN, right: NaN };\n this.hasPaddingLeft = false;\n this.hasPaddingRight = false;\n this.hasLineThickness = false;\n this.hasSymbolSpacing = false;\n this.number_of_measures = number_of_measures;\n // Keep track of whether these four options were provided.\n this.hasPaddingLeft = typeof options.padding_left === 'number';\n this.hasPaddingRight = typeof options.padding_right === 'number';\n this.hasLineThickness = typeof options.line_thickness === 'number';\n this.hasSymbolSpacing = typeof options.symbol_spacing === 'number';\n const musicFont = Tables.currentMusicFont();\n this.render_options = Object.assign({ use_symbols: false, show_number: true, number_line: -0.5, number_glyph_point: musicFont.lookupMetric('digits.point'), line: 2, spacing_between_lines_px: Tables.STAVE_LINE_DISTANCE, serif_thickness: 2, semibreve_rest_glyph_scale: Tables.NOTATION_FONT_SCALE, padding_left: 0, padding_right: 0, line_thickness: 5, symbol_spacing: 0 }, options);\n const fontLineShift = musicFont.lookupMetric('digits.shiftLine', 0);\n this.render_options.number_line += fontLineShift;\n }\n static get CATEGORY() {\n return Category.MultiMeasureRest;\n }\n getXs() {\n return this.xs;\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getStave() {\n return this.stave;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n drawLine(stave, ctx, left, right, spacingBetweenLines) {\n const options = this.render_options;\n const y = stave.getYForLine(options.line);\n const padding = (right - left) * 0.1;\n left += padding;\n right -= padding;\n let lineThicknessHalf;\n if (this.hasLineThickness) {\n lineThicknessHalf = options.line_thickness * 0.5;\n }\n else {\n lineThicknessHalf = spacingBetweenLines * 0.25;\n }\n const serifThickness = options.serif_thickness;\n const top = y - spacingBetweenLines;\n const bot = y + spacingBetweenLines;\n const leftIndented = left + serifThickness;\n const rightIndented = right - serifThickness;\n const lineTop = y - lineThicknessHalf;\n const lineBottom = y + lineThicknessHalf;\n ctx.save();\n ctx.beginPath();\n ctx.moveTo(left, top);\n ctx.lineTo(leftIndented, top);\n ctx.lineTo(leftIndented, lineTop);\n ctx.lineTo(rightIndented, lineTop);\n ctx.lineTo(rightIndented, top);\n ctx.lineTo(right, top);\n ctx.lineTo(right, bot);\n ctx.lineTo(rightIndented, bot);\n ctx.lineTo(rightIndented, lineBottom);\n ctx.lineTo(leftIndented, lineBottom);\n ctx.lineTo(leftIndented, bot);\n ctx.lineTo(left, bot);\n ctx.closePath();\n ctx.fill();\n }\n drawSymbols(stave, ctx, left, right, spacingBetweenLines) {\n const n4 = Math.floor(this.number_of_measures / 4);\n const n = this.number_of_measures % 4;\n const n2 = Math.floor(n / 2);\n const n1 = n % 2;\n const options = this.render_options;\n // FIXME: TODO: invalidate semibreve_rest at the appropriate time\n // (e.g., if the system font settings are changed).\n semibreve_rest = undefined;\n const rest = get_semibreve_rest();\n const rest_scale = options.semibreve_rest_glyph_scale;\n const rest_width = rest.width * (rest_scale / rest.glyph_font_scale);\n const glyphs = {\n 2: {\n width: rest_width * 0.5,\n height: spacingBetweenLines,\n },\n 1: {\n width: rest_width,\n },\n };\n /* 10: normal spacingBetweenLines */\n const spacing = this.hasSymbolSpacing ? options.symbol_spacing : 10;\n const width = n4 * glyphs[2].width + n2 * glyphs[2].width + n1 * glyphs[1].width + (n4 + n2 + n1 - 1) * spacing;\n let x = left + (right - left) * 0.5 - width * 0.5;\n const line = options.line;\n const yTop = stave.getYForLine(line - 1);\n const yMiddle = stave.getYForLine(line);\n const yBottom = stave.getYForLine(line + 1);\n ctx.save();\n ctx.setStrokeStyle('none');\n ctx.setLineWidth(0);\n for (let i = 0; i < n4; ++i) {\n ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n ctx.fillRect(x, yBottom - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n x += glyphs[2].width + spacing;\n }\n for (let i = 0; i < n2; ++i) {\n ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n x += glyphs[2].width + spacing;\n }\n for (let i = 0; i < n1; ++i) {\n Glyph.renderGlyph(ctx, x, yTop, rest_scale, rest.glyph_code);\n x += glyphs[1].width + spacing;\n }\n ctx.restore();\n }\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const stave = this.checkStave();\n let left = stave.getNoteStartX();\n let right = stave.getNoteEndX();\n // FIXME: getNoteStartX() returns x + 5(barline width)\n // getNoteEndX() returns x + width(no barline width)\n // See Stave constructor. How do we fix this?\n // Here, we subtract the barline width.\n const begModifiers = stave.getModifiers(StaveModifierPosition.BEGIN);\n if (begModifiers.length === 1 && isBarline(begModifiers[0])) {\n left -= begModifiers[0].getWidth();\n }\n const options = this.render_options;\n if (this.hasPaddingLeft) {\n left = stave.getX() + options.padding_left;\n }\n if (this.hasPaddingRight) {\n right = stave.getX() + stave.getWidth() - options.padding_right;\n }\n this.xs.left = left;\n this.xs.right = right;\n const spacingBetweenLines = options.spacing_between_lines_px;\n if (options.use_symbols) {\n this.drawSymbols(stave, ctx, left, right, spacingBetweenLines);\n }\n else {\n this.drawLine(stave, ctx, left, right, spacingBetweenLines);\n }\n if (options.show_number) {\n const timeSpec = '/' + this.number_of_measures;\n const timeSig = new TimeSignature(timeSpec, 0, false);\n timeSig.point = options.number_glyph_point;\n timeSig.setTimeSig(timeSpec);\n timeSig.setStave(stave);\n timeSig.setX(left + (right - left) * 0.5 - timeSig.getInfo().glyph.getMetrics().width * 0.5);\n timeSig.bottomLine = options.number_line;\n timeSig.setContext(ctx).draw();\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (PedalMarking.DEBUG)\n log('Vex.Flow.PedalMarking', args);\n}\n/**\n * Draws a pedal glyph with the provided `name` on a rendering `context`\n * at the coordinates `x` and `y. Takes into account the glyph data\n * coordinate shifts.\n */\nfunction drawPedalGlyph(name, context, x, y, point) {\n const glyph_data = PedalMarking.GLYPHS[name];\n const glyph = new Glyph(glyph_data.code, point, { category: 'pedalMarking' });\n glyph.render(context, x + glyph_data.x_shift, y + glyph_data.y_shift);\n}\n/**\n * PedalMarking implements different types of pedal markings. These notation\n * elements indicate to the performer when to depress and release the a pedal.\n *\n * In order to create \"Sostenuto\", and \"una corda\" markings, you must set\n * custom text for the release/depress pedal markings.\n */\nexport class PedalMarking extends Element {\n constructor(notes) {\n super();\n this.notes = notes;\n this.type = PedalMarking.type.TEXT;\n this.line = 0;\n // Custom text for the release/depress markings\n this.custom_depress_text = '';\n this.custom_release_text = '';\n this.resetFont();\n this.render_options = {\n bracket_height: 10,\n text_margin_right: 6,\n bracket_line_width: 1,\n color: 'black',\n };\n }\n static get CATEGORY() {\n return Category.PedalMarking;\n }\n /**\n * Create a sustain pedal marking. Returns the defaults PedalMarking.\n * Which uses the traditional \"Ped\" and \"*\"\" markings.\n */\n static createSustain(notes) {\n const pedal = new PedalMarking(notes);\n return pedal;\n }\n /** Create a sostenuto pedal marking */\n static createSostenuto(notes) {\n const pedal = new PedalMarking(notes);\n pedal.setType(PedalMarking.type.MIXED);\n pedal.setCustomText('Sost. Ped.');\n return pedal;\n }\n /** Create an una corda pedal marking */\n static createUnaCorda(notes) {\n const pedal = new PedalMarking(notes);\n pedal.setType(PedalMarking.type.TEXT);\n pedal.setCustomText('una corda', 'tre corda');\n return pedal;\n }\n /** Set pedal type. */\n setType(type) {\n type = typeof type === 'string' ? PedalMarking.typeString[type] : type;\n if (type >= PedalMarking.type.TEXT && type <= PedalMarking.type.MIXED) {\n this.type = type;\n }\n return this;\n }\n /**\n * Set custom text for the `depress`/`release` pedal markings. No text is\n * set if the parameter is falsy.\n */\n setCustomText(depress, release) {\n this.custom_depress_text = depress || '';\n this.custom_release_text = release || '';\n return this;\n }\n /** Set the staff line to render the markings on. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Draw the bracket based pedal markings. */\n drawBracketed() {\n const ctx = this.checkContext();\n let is_pedal_depressed = false;\n let prev_x;\n let prev_y;\n // Iterate through each note\n this.notes.forEach((note, index, notes) => {\n // Each note triggers the opposite pedal action\n is_pedal_depressed = !is_pedal_depressed;\n // Get the initial coordinates for the note\n const x = note.getAbsoluteX();\n const y = note.checkStave().getYForBottomText(this.line + 3);\n // Throw if current note is positioned before the previous note\n if (x < prev_x) {\n throw new RuntimeError('InvalidConfiguration', 'The notes provided must be in order of ascending x positions');\n }\n // Determine if the previous or next note are the same\n // as the current note. We need to keep track of this for\n // when adjustments are made for the release+depress action\n const next_is_same = notes[index + 1] === note;\n const prev_is_same = notes[index - 1] === note;\n let x_shift = 0;\n const point = Tables.currentMusicFont().lookupMetric(`pedalMarking.${is_pedal_depressed ? 'down' : 'up'}.point`);\n if (is_pedal_depressed) {\n // Adjustment for release+depress\n x_shift = prev_is_same ? 5 : 0;\n if (this.type === PedalMarking.type.MIXED && !prev_is_same) {\n // For MIXED style, start with text instead of bracket\n if (this.custom_depress_text) {\n // If we have custom text, use instead of the default \"Ped\" glyph\n const text_width = ctx.measureText(this.custom_depress_text).width;\n ctx.fillText(this.custom_depress_text, x - text_width / 2, y);\n x_shift = text_width / 2 + this.render_options.text_margin_right;\n }\n else {\n // Render the Ped glyph in position\n drawPedalGlyph('pedal_depress', ctx, x, y, point);\n x_shift = 20 + this.render_options.text_margin_right;\n }\n }\n else {\n // Draw start bracket\n ctx.beginPath();\n ctx.moveTo(x, y - this.render_options.bracket_height);\n ctx.lineTo(x + x_shift, y);\n ctx.stroke();\n ctx.closePath();\n }\n }\n else {\n // Adjustment for release+depress\n x_shift = next_is_same ? -5 : 0;\n // Draw end bracket\n ctx.beginPath();\n ctx.moveTo(prev_x, prev_y);\n ctx.lineTo(x + x_shift, y);\n ctx.lineTo(x, y - this.render_options.bracket_height);\n ctx.stroke();\n ctx.closePath();\n }\n // Store previous coordinates\n prev_x = x + x_shift;\n prev_y = y;\n });\n }\n /**\n * Draw the text based pedal markings. This defaults to the traditional\n * \"Ped\" and \"*\"\" symbols if no custom text has been provided.\n */\n drawText() {\n const ctx = this.checkContext();\n let is_pedal_depressed = false;\n // Iterate through each note, placing glyphs or custom text accordingly\n this.notes.forEach((note) => {\n is_pedal_depressed = !is_pedal_depressed;\n const stave = note.checkStave();\n const x = note.getAbsoluteX();\n const y = stave.getYForBottomText(this.line + 3);\n const point = Tables.currentMusicFont().lookupMetric(`pedalMarking.${is_pedal_depressed ? 'down' : 'up'}.point`);\n let text_width = 0;\n if (is_pedal_depressed) {\n if (this.custom_depress_text) {\n text_width = ctx.measureText(this.custom_depress_text).width;\n ctx.fillText(this.custom_depress_text, x - text_width / 2, y);\n }\n else {\n drawPedalGlyph('pedal_depress', ctx, x, y, point);\n }\n }\n else {\n if (this.custom_release_text) {\n text_width = ctx.measureText(this.custom_release_text).width;\n ctx.fillText(this.custom_release_text, x - text_width / 2, y);\n }\n else {\n drawPedalGlyph('pedal_release', ctx, x, y, point);\n }\n }\n });\n }\n /** Render the pedal marking in position on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setStrokeStyle(this.render_options.color);\n ctx.setFillStyle(this.render_options.color);\n ctx.setFont(this.textFont);\n L('Rendering Pedal Marking');\n if (this.type === PedalMarking.type.BRACKET || this.type === PedalMarking.type.MIXED) {\n ctx.setLineWidth(this.render_options.bracket_line_width);\n this.drawBracketed();\n }\n else if (this.type === PedalMarking.type.TEXT) {\n this.drawText();\n }\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.PedalMarking.DEBUG` to `true`. */\nPedalMarking.DEBUG = false;\nPedalMarking.TEXT_FONT = {\n family: Font.SERIF,\n size: 12,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n/** Glyph data */\nPedalMarking.GLYPHS = {\n pedal_depress: {\n code: 'keyboardPedalPed',\n x_shift: -10,\n y_shift: 0,\n },\n pedal_release: {\n code: 'keyboardPedalUp',\n x_shift: -2,\n y_shift: 3,\n },\n};\n/** Pedal type as number. */\nPedalMarking.type = {\n TEXT: 1,\n BRACKET: 2,\n MIXED: 3,\n};\n/** Pedal type as string. */\nPedalMarking.typeString = {\n text: PedalMarking.type.TEXT,\n bracket: PedalMarking.type.BRACKET,\n mixed: PedalMarking.type.MIXED,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Glyph } from './glyph';\nimport { GlyphNote } from './glyphnote';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\n// Map `type` to SMuFL glyph code.\nconst CODES = {\n '1': 'repeat1Bar',\n '2': 'repeat2Bars',\n '4': 'repeat4Bars',\n slash: 'repeatBarSlash',\n};\nexport class RepeatNote extends GlyphNote {\n static get CATEGORY() {\n return Category.RepeatNote;\n }\n constructor(type, noteStruct, options) {\n super(undefined, Object.assign({ duration: 'q', align_center: type !== 'slash' }, noteStruct), options);\n const glyphCode = CODES[type] || 'repeat1Bar';\n const glyph = new Glyph(glyphCode, Tables.currentMusicFont().lookupMetric('repeatNote.point', 40), {\n category: 'repeatNote',\n });\n this.setGlyph(glyph);\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This file implements `StaveLine` which are simply lines that connect\n// two notes. This object is highly configurable, see the `render_options`.\n// A simple line is often used for notating glissando articulations, but you\n// can format a `StaveLine` with arrows or colors for more pedagogical\n// purposes, such as diagrams.\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { TextJustification } from './textnote';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n// Attribution: Arrow rendering implementations based off of\n// Patrick Horgan's article, \"Drawing lines and arcs with\n// arrow heads on HTML5 Canvas\"\n//\n// Draw an arrow head that connects between 3 coordinates.\nfunction drawArrowHead(ctx, x0, y0, x1, y1, x2, y2) {\n // all cases do this.\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.lineTo(x0, y0);\n ctx.closePath();\n ctx.fill();\n}\nexport class StaveLine extends Element {\n // Initialize the StaveLine with the given `notes`.\n //\n // `notes` is a struct that has:\n //\n // ```\n // {\n // first_note: Note,\n // last_note: Note,\n // first_indices: [n1, n2, n3],\n // last_indices: [n1, n2, n3]\n // }\n // ```\n constructor(notes) {\n super();\n this.setNotes(notes);\n this.text = '';\n this.resetFont();\n this.render_options = {\n // Space to add to the left or the right\n padding_left: 4,\n padding_right: 3,\n // The width of the line in pixels\n line_width: 1,\n // An array of line/space lengths. (TODO/QUESTION: Is this supported in SVG?).\n line_dash: undefined,\n // Can draw rounded line end, instead of a square. (TODO/QUESTION: Is this supported in SVG?).\n rounded_end: true,\n // The color of the line and arrowheads\n color: undefined,\n // Flags to draw arrows on each end of the line\n draw_start_arrow: false,\n draw_end_arrow: false,\n // The length of the arrowhead sides\n arrowhead_length: 10,\n // The angle of the arrowhead\n arrowhead_angle: Math.PI / 8,\n // The position of the text\n text_position_vertical: StaveLine.TextVerticalPosition.TOP,\n text_justification: StaveLine.TextJustification.CENTER,\n };\n }\n static get CATEGORY() {\n return Category.StaveLine;\n }\n // The the annotation for the `StaveLine`\n setText(text) {\n this.text = text;\n return this;\n }\n // Set the notes for the `StaveLine`\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Notes needs to have either first_note or last_note set.');\n }\n if (!notes.first_indices)\n notes.first_indices = [0];\n if (!notes.last_indices)\n notes.last_indices = [0];\n if (notes.first_indices.length !== notes.last_indices.length) {\n throw new RuntimeError('BadArguments', 'Connected notes must have same number of indices.');\n }\n this.notes = notes;\n this.first_note = notes.first_note;\n this.first_indices = notes.first_indices;\n this.last_note = notes.last_note;\n this.last_indices = notes.last_indices;\n return this;\n }\n // Apply the style of the `StaveLine` to the context\n applyLineStyle() {\n const ctx = this.checkContext();\n const render_options = this.render_options;\n if (render_options.line_dash) {\n ctx.setLineDash(render_options.line_dash);\n }\n if (render_options.line_width) {\n ctx.setLineWidth(render_options.line_width);\n }\n if (render_options.rounded_end) {\n ctx.setLineCap('round');\n }\n else {\n ctx.setLineCap('square');\n }\n }\n // Apply the text styling to the context\n applyFontStyle() {\n const ctx = this.checkContext();\n ctx.setFont(this.textFont);\n const render_options = this.render_options;\n const color = render_options.color;\n if (color) {\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n }\n }\n // Helper function to draw a line with arrow heads\n drawArrowLine(ctx, pt1, pt2) {\n const both_arrows = this.render_options.draw_start_arrow && this.render_options.draw_end_arrow;\n const x1 = pt1.x;\n const y1 = pt1.y;\n const x2 = pt2.x;\n const y2 = pt2.y;\n // For ends with arrow we actually want to stop before we get to the arrow\n // so that wide lines won't put a flat end on the arrow.\n const distance = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n const ratio = (distance - this.render_options.arrowhead_length / 3) / distance;\n let end_x;\n let end_y;\n let start_x;\n let start_y;\n if (this.render_options.draw_end_arrow || both_arrows) {\n end_x = Math.round(x1 + (x2 - x1) * ratio);\n end_y = Math.round(y1 + (y2 - y1) * ratio);\n }\n else {\n end_x = x2;\n end_y = y2;\n }\n if (this.render_options.draw_start_arrow || both_arrows) {\n start_x = x1 + (x2 - x1) * (1 - ratio);\n start_y = y1 + (y2 - y1) * (1 - ratio);\n }\n else {\n start_x = x1;\n start_y = y1;\n }\n if (this.render_options.color) {\n ctx.setStrokeStyle(this.render_options.color);\n ctx.setFillStyle(this.render_options.color);\n }\n // Draw the shaft of the arrow\n ctx.beginPath();\n ctx.moveTo(start_x, start_y);\n ctx.lineTo(end_x, end_y);\n ctx.stroke();\n ctx.closePath();\n // calculate the angle of the line\n const line_angle = Math.atan2(y2 - y1, x2 - x1);\n // h is the line length of a side of the arrow head\n const h = Math.abs(this.render_options.arrowhead_length / Math.cos(this.render_options.arrowhead_angle));\n let angle1;\n let angle2;\n let top_x;\n let top_y;\n let bottom_x;\n let bottom_y;\n if (this.render_options.draw_end_arrow || both_arrows) {\n angle1 = line_angle + Math.PI + this.render_options.arrowhead_angle;\n top_x = x2 + Math.cos(angle1) * h;\n top_y = y2 + Math.sin(angle1) * h;\n angle2 = line_angle + Math.PI - this.render_options.arrowhead_angle;\n bottom_x = x2 + Math.cos(angle2) * h;\n bottom_y = y2 + Math.sin(angle2) * h;\n drawArrowHead(ctx, top_x, top_y, x2, y2, bottom_x, bottom_y);\n }\n if (this.render_options.draw_start_arrow || both_arrows) {\n angle1 = line_angle + this.render_options.arrowhead_angle;\n top_x = x1 + Math.cos(angle1) * h;\n top_y = y1 + Math.sin(angle1) * h;\n angle2 = line_angle - this.render_options.arrowhead_angle;\n bottom_x = x1 + Math.cos(angle2) * h;\n bottom_y = y1 + Math.sin(angle2) * h;\n drawArrowHead(ctx, top_x, top_y, x1, y1, bottom_x, bottom_y);\n }\n }\n // Renders the `StaveLine` on the context\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const first_note = this.first_note;\n const last_note = this.last_note;\n const render_options = this.render_options;\n ctx.save();\n this.applyLineStyle();\n // Cycle through each set of indices and draw lines\n let start_position = { x: 0, y: 0 };\n let end_position = { x: 0, y: 0 };\n this.first_indices.forEach((first_index, i) => {\n const last_index = this.last_indices[i];\n // Get initial coordinates for the start/end of the line\n start_position = first_note.getModifierStartXY(2, first_index);\n end_position = last_note.getModifierStartXY(1, last_index);\n const upwards_slope = start_position.y > end_position.y;\n // Adjust `x` coordinates for modifiers\n start_position.x += first_note.getMetrics().modRightPx + render_options.padding_left;\n end_position.x -= last_note.getMetrics().modLeftPx + render_options.padding_right;\n // Adjust first `x` coordinates for displacements\n const notehead_width = first_note.getGlyph().getWidth();\n const first_displaced = first_note.getKeyProps()[first_index].displaced;\n if (first_displaced && first_note.getStemDirection() === 1) {\n start_position.x += notehead_width + render_options.padding_left;\n }\n // Adjust last `x` coordinates for displacements\n const last_displaced = last_note.getKeyProps()[last_index].displaced;\n if (last_displaced && last_note.getStemDirection() === -1) {\n end_position.x -= notehead_width + render_options.padding_right;\n }\n // Adjust y position better if it's not coming from the center of the note\n start_position.y += upwards_slope ? -3 : 1;\n end_position.y += upwards_slope ? 2 : 0;\n this.drawArrowLine(ctx, start_position, end_position);\n });\n ctx.restore();\n // Determine the x coordinate where to start the text\n const text_width = ctx.measureText(this.text).width;\n const justification = render_options.text_justification;\n let x = 0;\n if (justification === StaveLine.TextJustification.LEFT) {\n x = start_position.x;\n }\n else if (justification === StaveLine.TextJustification.CENTER) {\n const delta_x = end_position.x - start_position.x;\n const center_x = delta_x / 2 + start_position.x;\n x = center_x - text_width / 2;\n }\n else if (justification === StaveLine.TextJustification.RIGHT) {\n x = end_position.x - text_width;\n }\n // Determine the y value to start the text\n let y = 0;\n const vertical_position = render_options.text_position_vertical;\n if (vertical_position === StaveLine.TextVerticalPosition.TOP) {\n y = first_note.checkStave().getYForTopText();\n }\n else if (vertical_position === StaveLine.TextVerticalPosition.BOTTOM) {\n y = first_note.checkStave().getYForBottomText(Tables.TEXT_HEIGHT_OFFSET_HACK);\n }\n // Draw the text\n ctx.save();\n this.applyFontStyle();\n ctx.fillText(this.text, x, y);\n ctx.restore();\n return this;\n }\n}\n/** Default text font. */\nStaveLine.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n// Text Positioning\nStaveLine.TextVerticalPosition = {\n TOP: 1,\n BOTTOM: 2,\n};\nStaveLine.TextJustification = TextJustification;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { Note } from './note';\nimport { Stave } from './stave';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n/**\n * System implements a musical system, which is a collection of staves,\n * each which can have one or more voices. All voices across all staves in\n * the system are formatted together.\n */\nexport class System extends Element {\n constructor(params = {}) {\n super();\n this.setOptions(params);\n this.parts = [];\n }\n static get CATEGORY() {\n return Category.System;\n }\n /** Set formatting options. */\n setOptions(options = {}) {\n if (!options.factory) {\n throw new RuntimeError('NoFactory', 'System.setOptions(options) requires a factory.');\n }\n this.factory = options.factory;\n this.options = Object.assign(Object.assign({ factory: this.factory, x: 10, y: 10, width: 500, spaceBetweenStaves: 12, autoWidth: false, noJustification: false, debugFormatter: false, formatIterations: 0, noPadding: false }, options), { details: Object.assign({ alpha: 0.5 }, options.details), formatOptions: Object.assign({}, options.formatOptions) });\n if (this.options.noJustification === false && typeof options.width === 'undefined') {\n this.options.autoWidth = true;\n }\n }\n /** Set associated context. */\n setContext(context) {\n super.setContext(context);\n this.factory.setContext(context);\n return this;\n }\n /**\n * Add connector between staves.\n * @param type see {@link StaveConnector.typeString}\n */\n addConnector(type = 'double') {\n this.connector = this.factory.StaveConnector({\n top_stave: this.parts[0].stave,\n bottom_stave: this.parts[this.parts.length - 1].stave,\n type,\n });\n return this.connector;\n }\n /**\n * Add a stave to the system.\n *\n * Example (one voice):\n *\n * `system.addStave({voices: [score.voice(score.notes('C#5/q, B4, A4, G#4'))]});`\n *\n * Example (two voices):\n *\n * `system.addStave({voices: [`\n * `score.voice(score.notes('C#5/q, B4, A4, G#4', {stem: 'up'})),`\n * `score.voice(score.notes('C#4/h, C#4', {stem: 'down'}))`\n * `]});`\n */\n addStave(params) {\n var _a;\n const staveOptions = Object.assign({ left_bar: false }, params.options);\n const stave = (_a = params.stave) !== null && _a !== void 0 ? _a : this.factory.Stave({ x: this.options.x, y: this.options.y, width: this.options.width, options: staveOptions });\n const p = Object.assign(Object.assign({ stave, \n /* voices: [], */\n spaceAbove: 0, spaceBelow: 0, debugNoteMetrics: false, noJustification: false }, params), { options: staveOptions });\n const ctx = this.getContext();\n p.voices.forEach((voice) => voice\n .setContext(ctx)\n .setStave(stave)\n .getTickables()\n .forEach((tickable) => tickable.setStave(stave)));\n this.parts.push(p);\n return stave;\n }\n /** Format the system. */\n format() {\n const options_details = this.options.details;\n let justifyWidth = 0;\n const formatter = new Formatter(options_details);\n this.formatter = formatter;\n let y = this.options.y;\n let startX = 0;\n let allVoices = [];\n let allStaves = [];\n const debugNoteMetricsYs = [];\n // Join the voices for each stave.\n this.parts.forEach((part) => {\n y = y + part.stave.space(part.spaceAbove);\n part.stave.setY(y);\n formatter.joinVoices(part.voices);\n y = y + part.stave.space(part.spaceBelow);\n y = y + part.stave.space(this.options.spaceBetweenStaves);\n if (part.debugNoteMetrics) {\n debugNoteMetricsYs.push({ y, voice: part.voices[0] });\n y += 15;\n }\n allVoices = allVoices.concat(part.voices);\n allStaves = allStaves.concat(part.stave);\n startX = Math.max(startX, part.stave.getNoteStartX());\n });\n // Update the start position of all staves.\n this.parts.forEach((part) => part.stave.setNoteStartX(startX));\n if (this.options.autoWidth) {\n justifyWidth = formatter.preCalculateMinTotalWidth(allVoices);\n this.parts.forEach((part) => {\n part.stave.setWidth(justifyWidth + Stave.rightPadding + (startX - this.options.x));\n });\n }\n else {\n justifyWidth = this.options.noPadding\n ? this.options.width - (startX - this.options.x)\n : this.options.width - (startX - this.options.x) - Stave.defaultPadding;\n }\n formatter.format(allVoices, this.options.noJustification ? 0 : justifyWidth, this.options.formatOptions);\n formatter.postFormat();\n for (let i = 0; i < this.options.formatIterations; i++) {\n formatter.tune(options_details);\n }\n this.startX = startX;\n this.debugNoteMetricsYs = debugNoteMetricsYs;\n this.lastY = y;\n this.boundingBox = new BoundingBox(this.options.x, this.options.y, this.options.width, this.lastY - this.options.y);\n Stave.formatBegModifiers(allStaves);\n }\n /** Render the system. */\n draw() {\n // Render debugging information, if requested.\n const ctx = this.checkContext();\n if (!this.formatter || !this.startX || !this.lastY || !this.debugNoteMetricsYs) {\n throw new RuntimeError('NoFormatter', 'format() must be called before draw()');\n }\n this.setRendered();\n if (this.options.debugFormatter) {\n Formatter.plotDebugging(ctx, this.formatter, this.startX, this.options.y, this.lastY);\n }\n this.debugNoteMetricsYs.forEach((d) => {\n d.voice.getTickables().forEach((tickable) => Note.plotMetrics(ctx, tickable, d.y));\n });\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// The file implements notes for Tablature notation. This consists of one or\n// more fret positions, and can either be drawn with or without stems.\n//\n// See `tests/tabnote_tests.ts` for usage examples.\nimport { Font } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { StemmableNote } from './stemmablenote';\nimport { Tables } from './tables';\nimport { Category, isDot } from './typeguard';\nimport { defined, RuntimeError } from './util';\n// Gets the unused strings grouped together if consecutive.\n//\n// Parameters:\n// * num_lines - The number of lines\n// * strings_used - An array of numbers representing which strings have fret positions\nfunction getUnusedStringGroups(num_lines, strings_used) {\n const stem_through = [];\n let group = [];\n for (let string = 1; string <= num_lines; string++) {\n const is_used = strings_used.indexOf(string) > -1;\n if (!is_used) {\n group.push(string);\n }\n else {\n stem_through.push(group);\n group = [];\n }\n }\n if (group.length > 0)\n stem_through.push(group);\n return stem_through;\n}\n// Gets groups of points that outline the partial stem lines\n// between fret positions\n//\n// Parameters:\n// * stem_Y - The `y` coordinate the stem is located on\n// * unused_strings - An array of groups of unused strings\n// * stave - The stave to use for reference\n// * stem_direction - The direction of the stem\nfunction getPartialStemLines(stem_y, unused_strings, stave, stem_direction) {\n const up_stem = stem_direction !== 1;\n const down_stem = stem_direction !== -1;\n const line_spacing = stave.getSpacingBetweenLines();\n const total_lines = stave.getNumLines();\n const stem_lines = [];\n unused_strings.forEach((strings) => {\n const containsLastString = strings.indexOf(total_lines) > -1;\n const containsFirstString = strings.indexOf(1) > -1;\n if ((up_stem && containsFirstString) || (down_stem && containsLastString)) {\n return;\n }\n // If there's only one string in the group, push a duplicate value.\n // We do this because we need 2 strings to convert into upper/lower y\n // values.\n if (strings.length === 1) {\n strings.push(strings[0]);\n }\n const line_ys = [];\n // Iterate through each group string and store it's y position\n strings.forEach((string, index, strings) => {\n const isTopBound = string === 1;\n const isBottomBound = string === total_lines;\n // Get the y value for the appropriate staff line,\n // we adjust for a 0 index array, since string numbers are index 1\n let y = stave.getYForLine(string - 1);\n // Unless the string is the first or last, add padding to each side\n // of the line\n if (index === 0 && !isTopBound) {\n y -= line_spacing / 2 - 1;\n }\n else if (index === strings.length - 1 && !isBottomBound) {\n y += line_spacing / 2 - 1;\n }\n // Store the y value\n line_ys.push(y);\n // Store a subsequent y value connecting this group to the main\n // stem above/below the stave if it's the top/bottom string\n if (stem_direction === 1 && isTopBound) {\n line_ys.push(stem_y - 2);\n }\n else if (stem_direction === -1 && isBottomBound) {\n line_ys.push(stem_y + 2);\n }\n });\n // Add the sorted y values to the\n stem_lines.push(line_ys.sort((a, b) => a - b));\n });\n return stem_lines;\n}\nexport class TabNote extends StemmableNote {\n // Initialize the TabNote with a `noteStruct` full of properties\n // and whether to `draw_stem` when rendering the note\n constructor(noteStruct, draw_stem = false) {\n super(noteStruct);\n this.glyphs = [];\n // Return the number of the greatest string, which is the string lowest on the display\n this.greatestString = () => {\n return this.positions.map((x) => x.str).reduce((a, b) => (a > b ? a : b));\n };\n // Return the number of the least string, which is the string highest on the display\n this.leastString = () => {\n return this.positions.map((x) => x.str).reduce((a, b) => (a < b ? a : b));\n };\n this.ghost = false; // Renders parenthesis around notes\n // Note properties\n // The fret positions in the note. An array of `{ str: X, fret: X }`\n this.positions = noteStruct.positions || [];\n // Render Options\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads and rests\n glyph_font_scale: Tables.TABLATURE_FONT_SCALE, \n // Flag to draw a stem\n draw_stem, \n // Flag to draw dot modifiers\n draw_dots: draw_stem, \n // Flag to extend the main stem through the stave and fret positions\n draw_stem_through_stave: false, \n // vertical shift from stave line\n y_shift: 0, \n // normal glyph scale\n scale: 1.0, \n // default tablature font\n font: `${Font.SIZE}pt ${Font.SANS_SERIF}` });\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n this.buildStem();\n if (noteStruct.stem_direction) {\n this.setStemDirection(noteStruct.stem_direction);\n }\n else {\n this.setStemDirection(Stem.UP);\n }\n // Renders parenthesis around notes\n this.ghost = false;\n this.updateWidth();\n }\n static get CATEGORY() {\n return Category.TabNote;\n }\n reset() {\n super.reset();\n if (this.stave)\n this.setStave(this.stave);\n return this;\n }\n // Set as ghost `TabNote`, surrounds the fret positions with parenthesis.\n // Often used for indicating frets that are being bent to\n setGhost(ghost) {\n this.ghost = ghost;\n this.updateWidth();\n return this;\n }\n // Determine if the note has a stem\n hasStem() {\n if (this.render_options.draw_stem)\n return true;\n return false;\n }\n // Get the default stem extension for the note\n getStemExtension() {\n const glyph = this.getGlyph();\n if (this.stem_extension_override != null) {\n return this.stem_extension_override;\n }\n if (glyph) {\n return this.getStemDirection() === Stem.UP ? glyph.tabnote_stem_up_extension : glyph.tabnote_stem_down_extension;\n }\n return 0;\n }\n // Calculate and store the width of the note\n updateWidth() {\n this.glyphs = [];\n this.width = 0;\n for (let i = 0; i < this.positions.length; ++i) {\n let fret = this.positions[i].fret;\n if (this.ghost)\n fret = '(' + fret + ')';\n const glyph = Tables.tabToGlyph(fret.toString(), this.render_options.scale);\n this.glyphs.push(glyph);\n this.width = Math.max(glyph.getWidth(), this.width);\n }\n // For some reason we associate a notehead glyph with a TabNote, and this\n // glyph is used for certain width calculations. Of course, this is totally\n // incorrect since a notehead is a poor approximation for the dimensions of\n // a fret number which can have multiple digits. As a result, we must\n // overwrite getWidth() to return the correct width\n this.glyph.getWidth = () => this.width;\n }\n // Set the `stave` to the note\n setStave(stave) {\n super.setStave(stave);\n const ctx = stave.getContext();\n this.setContext(ctx);\n // Calculate the fret number width based on font used\n if (ctx) {\n this.width = 0;\n for (let i = 0; i < this.glyphs.length; ++i) {\n const glyph = this.glyphs[i];\n const text = '' + glyph.text;\n if (text.toUpperCase() !== 'X') {\n ctx.save();\n ctx.setFont(this.render_options.font);\n glyph.width = ctx.measureText(text).width;\n ctx.restore();\n glyph.getWidth = () => glyph.width;\n }\n this.width = Math.max(glyph.getWidth(), this.width);\n }\n this.glyph.getWidth = () => this.width;\n }\n // we subtract 1 from `line` because getYForLine expects a 0-based index,\n // while the position.str is a 1-based index\n const ys = this.positions.map(({ str: line }) => stave.getYForLine(Number(line) - 1));\n this.setYs(ys);\n if (this.stem) {\n this.stem.setYBounds(this.getStemY(), this.getStemY());\n }\n return this;\n }\n // Get the fret positions for the note\n getPositions() {\n return this.positions;\n }\n // Get the default `x` and `y` coordinates for a modifier at a specific\n // `position` at a fret position `index`\n getModifierStartXY(position, index) {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-Values calculated for this note.');\n }\n let x = 0;\n if (position === Modifier.Position.LEFT) {\n x = -1 * 2; // FIXME: modifier padding, move to font file\n }\n else if (position === Modifier.Position.RIGHT) {\n x = this.width + 2; // FIXME: modifier padding, move to font file\n }\n else if (position === Modifier.Position.BELOW || position === Modifier.Position.ABOVE) {\n const note_glyph_width = this.glyph.getWidth();\n x = note_glyph_width / 2;\n }\n return {\n x: this.getAbsoluteX() + x,\n y: this.ys[index],\n };\n }\n // Get the default line for rest\n getLineForRest() {\n return Number(this.positions[0].str);\n }\n // Pre-render formatting\n preFormat() {\n if (this.preFormatted)\n return;\n if (this.modifierContext)\n this.modifierContext.preFormat();\n // width is already set during init()\n this.preFormatted = true;\n }\n // Get the x position for the stem\n getStemX() {\n return this.getCenterGlyphX();\n }\n // Get the y position for the stem\n getStemY() {\n const num_lines = this.checkStave().getNumLines();\n // The decimal staff line amounts provide optimal spacing between the\n // fret number and the stem\n const stemUpLine = -0.5;\n const stemDownLine = num_lines - 0.5;\n const stemStartLine = Stem.UP === this.stem_direction ? stemUpLine : stemDownLine;\n return this.checkStave().getYForLine(stemStartLine);\n }\n // Get the stem extents for the tabnote\n getStemExtents() {\n return this.checkStem().getExtents();\n }\n // Draw the fal onto the context\n drawFlag() {\n var _a;\n const { beam, glyph, render_options: { draw_stem }, } = this;\n const context = this.checkContext();\n const shouldDrawFlag = beam == undefined && draw_stem;\n // Now it's the flag's turn.\n if (glyph.flag && shouldDrawFlag) {\n const flag_x = this.getStemX();\n const flag_y = this.getStemDirection() === Stem.DOWN\n ? // Down stems are below the note head and have flags on the right.\n this.getStemY() - this.checkStem().getHeight() - (this.glyph ? this.glyph.stem_down_extension : 0)\n : // Up stems are above the note head and have flags on the right.\n this.getStemY() - this.checkStem().getHeight() + (this.glyph ? this.glyph.stem_up_extension : 0);\n // Draw the Flag\n //this.flag?.setOptions({ category: 'flag.tabStem' });\n (_a = this.flag) === null || _a === void 0 ? void 0 : _a.render(context, flag_x, flag_y);\n //Glyph.renderGlyph(context, flag_x, flag_y, glyph_font_scale, flag_code, { category: 'flag.tabStem' });\n }\n }\n // Render the modifiers onto the context.\n drawModifiers() {\n this.modifiers.forEach((modifier) => {\n // Only draw the dots if enabled.\n if (isDot(modifier) && !this.render_options.draw_dots) {\n return;\n }\n modifier.setContext(this.getContext());\n modifier.drawWithStyle();\n });\n }\n // Render the stem extension through the fret positions\n drawStemThrough() {\n const stemX = this.getStemX();\n const stemY = this.getStemY();\n const ctx = this.checkContext();\n const drawStem = this.render_options.draw_stem;\n const stemThrough = this.render_options.draw_stem_through_stave;\n if (drawStem && stemThrough) {\n const numLines = this.checkStave().getNumLines();\n const stringsUsed = this.positions.map((position) => Number(position.str));\n const unusedStrings = getUnusedStringGroups(numLines, stringsUsed);\n const stemLines = getPartialStemLines(stemY, unusedStrings, this.checkStave(), this.getStemDirection());\n ctx.save();\n ctx.setLineWidth(Stem.WIDTH);\n stemLines.forEach((bounds) => {\n if (bounds.length === 0)\n return;\n ctx.beginPath();\n ctx.moveTo(stemX, bounds[0]);\n ctx.lineTo(stemX, bounds[bounds.length - 1]);\n ctx.stroke();\n ctx.closePath();\n });\n ctx.restore();\n }\n }\n // Render the fret positions onto the context\n drawPositions() {\n const ctx = this.checkContext();\n const x = this.getAbsoluteX();\n const ys = this.ys;\n for (let i = 0; i < this.positions.length; ++i) {\n const y = ys[i] + this.render_options.y_shift;\n const glyph = this.glyphs[i];\n // Center the fret text beneath the notation note head\n const note_glyph_width = this.glyph.getWidth();\n const tab_x = x + note_glyph_width / 2 - glyph.getWidth() / 2;\n // FIXME: Magic numbers.\n ctx.clearRect(tab_x - 2, y - 3, glyph.getWidth() + 4, 6);\n if (glyph.code) {\n Glyph.renderGlyph(ctx, tab_x, y, this.render_options.glyph_font_scale * this.render_options.scale, glyph.code);\n }\n else {\n ctx.save();\n ctx.setFont(this.render_options.font);\n const text = glyph.text.toString();\n ctx.fillText(text, tab_x, y + 5 * this.render_options.scale);\n ctx.restore();\n }\n }\n }\n // The main rendering function for the entire note.\n draw() {\n const ctx = this.checkContext();\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', \"Can't draw note without Y values.\");\n }\n this.setRendered();\n const render_stem = this.beam == undefined && this.render_options.draw_stem;\n ctx.openGroup('tabnote', this.getAttribute('id'), { pointerBBox: true });\n this.drawPositions();\n this.drawStemThrough();\n if (this.stem && render_stem) {\n const stem_x = this.getStemX();\n this.stem.setNoteHeadXBounds(stem_x, stem_x);\n this.stem.setContext(ctx).draw();\n }\n this.drawFlag();\n this.drawModifiers();\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Stave } from './stave';\nimport { Category } from './typeguard';\nexport class TabStave extends Stave {\n static get CATEGORY() {\n return Category.TabStave;\n }\n constructor(x, y, width, options) {\n const tab_options = Object.assign({ spacing_between_lines_px: 13, num_lines: 6, top_text_position: 1 }, options);\n super(x, y, width, tab_options);\n }\n getYForGlyphs() {\n return this.getYForLine(2.5);\n }\n // Deprecated\n addTabGlyph() {\n this.addClef('tab');\n return this;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n//\n// This file implements `TextBrackets` which extend between two notes.\n// The octave transposition markings (8va, 8vb, 15va, 15vb) can be created\n// using this class.\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Renderer } from './renderer';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.TextBracket.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextBracket.DEBUG)\n log('Vex.Flow.TextBracket', args);\n}\nexport var TextBracketPosition;\n(function (TextBracketPosition) {\n TextBracketPosition[TextBracketPosition[\"TOP\"] = 1] = \"TOP\";\n TextBracketPosition[TextBracketPosition[\"BOTTOM\"] = -1] = \"BOTTOM\";\n})(TextBracketPosition || (TextBracketPosition = {}));\nexport class TextBracket extends Element {\n constructor({ start, stop, text = '', superscript = '', position = TextBracketPosition.TOP }) {\n super();\n this.start = start;\n this.stop = stop;\n this.text = text;\n this.superscript = superscript;\n this.position = typeof position === 'string' ? TextBracket.PositionString[position] : position;\n this.line = 1;\n this.resetFont();\n this.render_options = {\n dashed: true,\n dash: [5],\n color: 'black',\n line_width: 1,\n show_bracket: true,\n bracket_height: 8,\n // In the BOTTOM position, the bracket line can extend\n // under the superscript.\n underline_superscript: true,\n };\n }\n static get CATEGORY() {\n return Category.TextBracket;\n }\n static get Position() {\n return TextBracketPosition;\n }\n static get PositionString() {\n return {\n top: TextBracketPosition.TOP,\n bottom: TextBracketPosition.BOTTOM,\n };\n }\n /**\n * @deprecated Use `TextBracket.Position` instead.\n */\n static get Positions() {\n L('Positions is deprecated, use TextBracketPosition instead.');\n return TextBracketPosition;\n }\n /**\n * @deprecated Use `TextBracket.PositionString` instead.\n */\n static get PositionsString() {\n L('PositionsString is deprecated, use PositionString instead.');\n return TextBracket.PositionString;\n }\n /**\n * Apply the text backet styling to the provided context.\n * @param ctx\n * @returns this\n */\n applyStyle(ctx) {\n ctx.setFont(this.font);\n const options = this.render_options;\n ctx.setStrokeStyle(options.color);\n ctx.setFillStyle(options.color);\n ctx.setLineWidth(options.line_width);\n return this;\n }\n // Set whether the bracket line should be `dashed`. You can also\n // optionally set the `dash` pattern by passing in an array of numbers\n setDashed(dashed, dash) {\n this.render_options.dashed = dashed;\n if (dash)\n this.render_options.dash = dash;\n return this;\n }\n // Set the rendering `context` for the octave bracket\n setLine(line) {\n this.line = line;\n return this;\n }\n // Draw the octave bracket on the rendering context\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let y = 0;\n switch (this.position) {\n case TextBracketPosition.TOP:\n y = this.start.checkStave().getYForTopText(this.line);\n break;\n case TextBracketPosition.BOTTOM:\n y = this.start.checkStave().getYForBottomText(this.line + Tables.TEXT_HEIGHT_OFFSET_HACK);\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} is invalid.`);\n }\n // Get the preliminary start and stop coordintates for the bracket\n const start = { x: this.start.getAbsoluteX(), y };\n const stop = { x: this.stop.getAbsoluteX(), y };\n L('Rendering TextBracket: start:', start, 'stop:', stop, 'y:', y);\n const bracket_height = this.render_options.bracket_height * this.position;\n ctx.save();\n this.applyStyle(ctx);\n // Draw text\n ctx.fillText(this.text, start.x, start.y);\n // Get the width and height for the octave number\n const main_measure = ctx.measureText(this.text);\n const main_width = main_measure.width;\n const main_height = main_measure.height;\n // Calculate the y position for the super script\n const super_y = start.y - main_height / 2.5;\n // We called this.resetFont() in the constructor, so we know this.textFont is available.\n // eslint-disable-next-line\n const { family, size, weight, style } = this.textFont;\n // To draw the superscript, we scale the font size by 1/1.4.\n const smallerFontSize = Font.scaleSize(size, 0.714286);\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.superscript, start.x + main_width + 1, super_y);\n // Determine width and height of the superscript\n const super_measure = ctx.measureText(this.superscript);\n const super_width = super_measure.width;\n const super_height = super_measure.height;\n // Setup initial coordinates for the bracket line\n let start_x = start.x;\n let line_y = super_y;\n const end_x = stop.x + this.stop.getGlyph().getWidth();\n // Adjust x and y coordinates based on position\n if (this.position === TextBracketPosition.TOP) {\n start_x += main_width + super_width + 5;\n line_y -= super_height / 2.7;\n }\n else if (this.position === TextBracketPosition.BOTTOM) {\n line_y += super_height / 2.7;\n start_x += main_width + 2;\n if (!this.render_options.underline_superscript) {\n start_x += super_width;\n }\n }\n if (this.render_options.dashed) {\n // Main line\n Renderer.drawDashedLine(ctx, start_x, line_y, end_x, line_y, this.render_options.dash);\n // Ending Bracket\n if (this.render_options.show_bracket) {\n Renderer.drawDashedLine(ctx, end_x, line_y + 1 * this.position, end_x, line_y + bracket_height, this.render_options.dash);\n }\n }\n else {\n ctx.beginPath();\n ctx.moveTo(start_x, line_y);\n // Main line\n ctx.lineTo(end_x, line_y);\n if (this.render_options.show_bracket) {\n // Ending bracket\n ctx.lineTo(end_x, line_y + bracket_height);\n }\n ctx.stroke();\n ctx.closePath();\n }\n ctx.restore();\n }\n}\nTextBracket.DEBUG = false;\nTextBracket.TEXT_FONT = {\n family: Font.SERIF,\n size: 15,\n weight: FontWeight.NORMAL,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextDynamics.DEBUG)\n log('Vex.Flow.TextDynamics', args);\n}\n/**\n * `TextDynamics` renders traditional\n * text dynamics markings, **ie: p, f, sfz, rfz, ppp**\n *\n * You can render any dynamics string that contains a combination of\n * the following letters: P, M, F, Z, R, S\n */\nexport class TextDynamics extends Note {\n /**\n * Create the dynamics marking.\n *\n * A `TextDynamics` object inherits from `Note` so that it can be formatted\n * within a `Voice`.\n *\n * @param noteStruct an object that contains a `duration` property and a\n * `sequence` of letters that represents the letters to render.\n */\n constructor(noteStruct) {\n super(noteStruct);\n this.sequence = (noteStruct.text || '').toLowerCase();\n this.line = noteStruct.line || 0;\n this.glyphs = [];\n this.render_options = Object.assign(Object.assign({}, this.render_options), { glyph_font_size: 40 });\n L('New Dynamics Text: ', this.sequence);\n }\n static get CATEGORY() {\n return Category.TextDynamics;\n }\n /** The glyph data for each dynamics letter. */\n static get GLYPHS() {\n return {\n f: {\n code: 'dynamicForte',\n width: 12,\n },\n p: {\n code: 'dynamicPiano',\n width: 14,\n },\n m: {\n code: 'dynamicMezzo',\n width: 17,\n },\n s: {\n code: 'dynamicSforzando',\n width: 10,\n },\n z: {\n code: 'dynamicZ',\n width: 12,\n },\n r: {\n code: 'dynamicRinforzando',\n width: 12,\n },\n };\n }\n /** Set the Stave line on which the note should be placed. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Preformat the dynamics text. */\n preFormat() {\n let total_width = 0;\n // length of this.glyphs must be <=\n // length of this.sequence, so if we're formatted before\n // create new glyphs.\n this.glyphs = [];\n // Iterate through each letter\n this.sequence.split('').forEach((letter) => {\n // Get the glyph data for the letter\n const glyph_data = TextDynamics.GLYPHS[letter];\n if (!glyph_data)\n throw new RuntimeError('Invalid dynamics character: ' + letter);\n const size = defined(this.render_options.glyph_font_size);\n const glyph = new Glyph(glyph_data.code, size, { category: 'textNote' });\n // Add the glyph\n this.glyphs.push(glyph);\n total_width += glyph_data.width;\n });\n // Store the width of the text\n this.setWidth(total_width);\n this.preFormatted = true;\n return this;\n }\n /** Draw the dynamics text on the rendering context. */\n draw() {\n this.setRendered();\n const x = this.getAbsoluteX();\n const y = this.checkStave().getYForLine(this.line + -3);\n L('Rendering Dynamics: ', this.sequence);\n let letter_x = x;\n this.glyphs.forEach((glyph, index) => {\n const current_letter = this.sequence[index];\n glyph.render(this.checkContext(), letter_x, y);\n letter_x += TextDynamics.GLYPHS[current_letter].width;\n });\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.TextDynamics.DEBUG` to `true`. */\nTextDynamics.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\nimport { Note } from './note';\nimport { TimeSignature } from './timesignature';\nimport { Category } from './typeguard';\nexport class TimeSigNote extends Note {\n constructor(timeSpec, customPadding) {\n super({ duration: 'b' });\n const timeSignature = new TimeSignature(timeSpec, customPadding);\n this.timeSigInfo = timeSignature.getInfo();\n this.setWidth(this.timeSigInfo.glyph.getMetrics().width);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.TimeSigNote;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = this.checkContext();\n this.setRendered();\n if (!this.timeSigInfo.glyph.getContext()) {\n this.timeSigInfo.glyph.setContext(ctx);\n }\n this.timeSigInfo.glyph.setStave(stave);\n this.timeSigInfo.glyph.setYShift(stave.getYForLine(2) - stave.getYForGlyphs());\n this.timeSigInfo.glyph.renderToStave(this.getAbsoluteX());\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Balazs Forian-Szabo\n// MIT License\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { log } from './util';\nimport { Vibrato } from './vibrato';\n// eslint-disable-next-line\nfunction L(...args) {\n if (VibratoBracket.DEBUG)\n log('Vex.Flow.VibratoBracket', args);\n}\n/** `VibratoBracket` renders vibrato effect between two notes. */\nexport class VibratoBracket extends Element {\n /**\n * Either the stop or start note must be set, or both of them.\n * An undefined value for the start or stop note indicates that the vibrato\n * is drawn from the beginning or until the end of the stave accordingly.\n */\n constructor(bracket_data) {\n super();\n if (bracket_data.start)\n this.start = bracket_data.start;\n if (bracket_data.stop)\n this.stop = bracket_data.stop;\n this.line = 1;\n this.render_options = {\n harsh: false,\n wave_height: 6,\n wave_width: 4,\n wave_girth: 2,\n vibrato_width: 0,\n };\n }\n static get CATEGORY() {\n return Category.VibratoBracket;\n }\n /** Set line position of the vibrato bracket. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Set harsh vibrato bracket. */\n setHarsh(harsh) {\n this.render_options.harsh = harsh;\n return this;\n }\n /** Draw the vibrato bracket on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const y = (this.start && this.start.checkStave().getYForTopText(this.line)) ||\n (this.stop && this.stop.checkStave().getYForTopText(this.line)) ||\n 0;\n // If start note is not set then vibrato will be drawn\n // from the beginning of the stave\n const start_x = (this.start && this.start.getAbsoluteX()) || (this.stop && this.stop.checkStave().getTieStartX()) || 0;\n // If stop note is not set then vibrato will be drawn\n // until the end of the stave\n const stop_x = (this.stop && this.stop.getAbsoluteX() - this.stop.getWidth() - 5) ||\n (this.start && this.start.checkStave().getTieEndX() - 10) ||\n 0;\n this.render_options.vibrato_width = stop_x - start_x;\n L('Rendering VibratoBracket: start_x:', start_x, 'stop_x:', stop_x, 'y:', y);\n Vibrato.renderVibrato(ctx, start_x, y, this.render_options);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.VibratoBracket.DEBUG` to `true`. */\nVibratoBracket.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n// MIT License\nimport { Accidental } from './accidental';\nimport { Annotation, AnnotationHorizontalJustify, AnnotationVerticalJustify } from './annotation';\nimport { Articulation } from './articulation';\nimport { BarNote } from './barnote';\nimport { Beam } from './beam';\nimport { ChordSymbol } from './chordsymbol';\nimport { ClefNote } from './clefnote';\nimport { Curve } from './curve';\nimport { EasyScore } from './easyscore';\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { FretHandFinger } from './frethandfinger';\nimport { GhostNote } from './ghostnote';\nimport { GlyphNote } from './glyphnote';\nimport { GraceNote } from './gracenote';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { KeySigNote } from './keysignote';\nimport { ModifierContext } from './modifiercontext';\nimport { MultiMeasureRest } from './multimeasurerest';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { PedalMarking } from './pedalmarking';\nimport { Renderer } from './renderer';\nimport { RepeatNote } from './repeatnote';\nimport { Stave } from './stave';\nimport { StaveConnector } from './staveconnector';\nimport { StaveLine } from './staveline';\nimport { StaveNote } from './stavenote';\nimport { StaveTie } from './stavetie';\nimport { StringNumber } from './stringnumber';\nimport { System } from './system';\nimport { TabNote } from './tabnote';\nimport { TabStave } from './tabstave';\nimport { TextBracket } from './textbracket';\nimport { TextDynamics } from './textdynamics';\nimport { TextNote } from './textnote';\nimport { TickContext } from './tickcontext';\nimport { TimeSigNote } from './timesignote';\nimport { Tuplet } from './tuplet';\nimport { defined, log, RuntimeError } from './util';\nimport { VibratoBracket } from './vibratobracket';\nimport { Voice } from './voice';\nimport { isHTMLCanvas } from './web';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Factory.DEBUG)\n log('Vex.Flow.Factory', args);\n}\n/**\n * Factory implements a high level API around VexFlow.\n */\nexport class Factory {\n /**\n * Example:\n *\n * Create an SVG renderer and attach it to the DIV element named \"boo\" to render using 1200 and 600\n *\n * `const vf: Factory = new Vex.Flow.Factory({renderer: { elementId: 'boo', width: 1200, height: 600 }});`\n */\n constructor(options = {}) {\n L('New factory: ', options);\n this.options = {\n stave: {\n space: 10,\n },\n renderer: {\n elementId: '',\n width: 500,\n height: 200,\n background: '#FFF',\n },\n font: Factory.TEXT_FONT,\n };\n this.setOptions(options);\n }\n /**\n * Static simplified function to access constructor without providing FactoryOptions\n *\n * Example:\n *\n * Create an SVG renderer and attach it to the DIV element named \"boo\" to render using 1200 and 600\n *\n * `const vf: Factory = Vex.Flow.Factory.newFromElementId('boo', 1200, 600 );`\n */\n static newFromElementId(elementId, width = 500, height = 200) {\n return new Factory({ renderer: { elementId, width, height } });\n }\n reset() {\n this.renderQ = [];\n this.systems = [];\n this.staves = [];\n this.voices = [];\n this.stave = undefined; // current stave\n }\n setOptions(options) {\n this.options = Object.assign(Object.assign({}, this.options), options);\n this.initRenderer();\n this.reset();\n }\n initRenderer() {\n const { elementId, width, height, background } = this.options.renderer;\n if (elementId == null) {\n return;\n }\n if (elementId == '') {\n L(this);\n throw new RuntimeError('renderer.elementId not set in FactoryOptions');\n }\n let backend = this.options.renderer.backend;\n if (backend === undefined) {\n const elem = document.getElementById(elementId);\n // We use a custom type check here, because node-canvas mimics canvas,\n // but is not an instance of window.HTMLCanvasElement.\n // In fact, `window` might be undefined here.\n // See: https://www.npmjs.com/package/canvas\n if (isHTMLCanvas(elem)) {\n backend = Renderer.Backends.CANVAS;\n }\n else {\n backend = Renderer.Backends.SVG;\n }\n }\n this.context = Renderer.buildContext(elementId, backend, width, height, background);\n }\n getContext() {\n return this.context;\n }\n setContext(context) {\n this.context = context;\n return this;\n }\n getStave() {\n return this.stave;\n }\n getVoices() {\n return this.voices;\n }\n /** Return pixels from current stave spacing. */\n Stave(params) {\n const staveSpace = this.options.stave.space;\n const p = Object.assign({ x: 0, y: 0, width: this.options.renderer.width - staveSpace * 1.0, options: { spacing_between_lines_px: staveSpace * 1.0 } }, params);\n const stave = new Stave(p.x, p.y, p.width, p.options);\n this.staves.push(stave);\n stave.setContext(this.context);\n this.stave = stave;\n return stave;\n }\n TabStave(params) {\n const staveSpace = this.options.stave.space;\n const p = Object.assign({ x: 0, y: 0, width: this.options.renderer.width - staveSpace * 1.0, options: { spacing_between_lines_px: staveSpace * 1.3 } }, params);\n const stave = new TabStave(p.x, p.y, p.width, p.options);\n this.staves.push(stave);\n stave.setContext(this.context);\n this.stave = stave;\n return stave;\n }\n StaveNote(noteStruct) {\n const note = new StaveNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GlyphNote(glyph, noteStruct, options) {\n const note = new GlyphNote(glyph, noteStruct, options);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n RepeatNote(type, noteStruct, options) {\n const note = new RepeatNote(type, noteStruct, options);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GhostNote(noteStruct) {\n const ghostNote = new GhostNote(noteStruct);\n if (this.stave)\n ghostNote.setStave(this.stave);\n ghostNote.setContext(this.context);\n this.renderQ.push(ghostNote);\n return ghostNote;\n }\n TextNote(noteStruct) {\n const textNote = new TextNote(noteStruct);\n if (this.stave)\n textNote.setStave(this.stave);\n textNote.setContext(this.context);\n this.renderQ.push(textNote);\n return textNote;\n }\n BarNote(params = {}) {\n const barNote = new BarNote(params.type);\n if (this.stave)\n barNote.setStave(this.stave);\n barNote.setContext(this.context);\n this.renderQ.push(barNote);\n return barNote;\n }\n ClefNote(params) {\n const p = Object.assign({ type: 'treble', options: {\n size: 'default',\n annotation: undefined,\n } }, params);\n const clefNote = new ClefNote(p.type, p.options.size, p.options.annotation);\n if (this.stave)\n clefNote.setStave(this.stave);\n clefNote.setContext(this.context);\n this.renderQ.push(clefNote);\n return clefNote;\n }\n TimeSigNote(params) {\n const p = Object.assign({ time: '4/4' }, params);\n const timeSigNote = new TimeSigNote(p.time);\n if (this.stave)\n timeSigNote.setStave(this.stave);\n timeSigNote.setContext(this.context);\n this.renderQ.push(timeSigNote);\n return timeSigNote;\n }\n KeySigNote(params) {\n const keySigNote = new KeySigNote(params.key, params.cancelKey, params.alterKey);\n if (this.stave)\n keySigNote.setStave(this.stave);\n keySigNote.setContext(this.context);\n this.renderQ.push(keySigNote);\n return keySigNote;\n }\n TabNote(noteStruct) {\n const note = new TabNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GraceNote(noteStruct) {\n const note = new GraceNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n return note;\n }\n GraceNoteGroup(params) {\n const group = new GraceNoteGroup(params.notes, params.slur);\n group.setContext(this.context);\n return group;\n }\n Accidental(params) {\n const accid = new Accidental(params.type);\n accid.setContext(this.context);\n return accid;\n }\n Annotation(params) {\n const p = Object.assign({ text: 'p', hJustify: AnnotationHorizontalJustify.CENTER, vJustify: AnnotationVerticalJustify.BOTTOM }, params);\n const annotation = new Annotation(p.text);\n annotation.setJustification(p.hJustify);\n annotation.setVerticalJustification(p.vJustify);\n annotation.setFont(p.font);\n annotation.setContext(this.context);\n return annotation;\n }\n ChordSymbol(params) {\n const p = Object.assign({ vJustify: 'top', hJustify: 'center', kerning: true, reportWidth: true }, params);\n const chordSymbol = new ChordSymbol();\n chordSymbol.setHorizontal(p.hJustify);\n chordSymbol.setVertical(p.vJustify);\n chordSymbol.setEnableKerning(p.kerning);\n chordSymbol.setReportWidth(p.reportWidth);\n // There is a default font based on the engraving font. Only set then\n // font if it is specific, else use the default\n if (typeof p.fontFamily === 'string' && typeof p.fontSize === 'number') {\n if (typeof p.fontWeight === 'string')\n chordSymbol.setFont(p.fontFamily, p.fontSize, p.fontWeight);\n else\n chordSymbol.setFont(p.fontFamily, p.fontSize, '');\n }\n else if (typeof p.fontSize === 'number') {\n chordSymbol.setFontSize(p.fontSize);\n }\n chordSymbol.setContext(this.context);\n return chordSymbol;\n }\n Articulation(params) {\n const p = Object.assign({ type: 'a.', position: 'above' }, params);\n const articulation = new Articulation(p.type);\n articulation.setPosition(p.position);\n articulation.setContext(this.context);\n return articulation;\n }\n Ornament(type, params) {\n const options = Object.assign({ type, position: 0, accidental: '' }, params);\n const ornament = new Ornament(type);\n ornament.setPosition(options.position);\n if (options.upperAccidental) {\n ornament.setUpperAccidental(options.upperAccidental);\n }\n if (options.lowerAccidental) {\n ornament.setLowerAccidental(options.lowerAccidental);\n }\n if (typeof options.delayed !== 'undefined') {\n ornament.setDelayed(options.delayed);\n }\n ornament.setContext(this.context);\n return ornament;\n }\n TextDynamics(params) {\n const p = Object.assign({ text: 'p', duration: 'q', dots: 0, line: 0 }, params);\n const text = new TextDynamics({\n text: p.text,\n line: p.line,\n duration: p.duration,\n dots: p.dots,\n });\n if (this.stave)\n text.setStave(this.stave);\n text.setContext(this.context);\n this.renderQ.push(text);\n return text;\n }\n Fingering(params) {\n const p = Object.assign({ number: '0', position: 'left' }, params);\n const fingering = new FretHandFinger(p.number);\n fingering.setPosition(p.position);\n fingering.setContext(this.context);\n return fingering;\n }\n StringNumber(params, drawCircle = true) {\n const stringNumber = new StringNumber(params.number);\n stringNumber.setPosition(params.position);\n stringNumber.setContext(this.context);\n stringNumber.setDrawCircle(drawCircle);\n return stringNumber;\n }\n TickContext() {\n return new TickContext();\n }\n ModifierContext() {\n return new ModifierContext();\n }\n MultiMeasureRest(params) {\n const numMeasures = defined(params.number_of_measures, 'NoNumberOfMeasures');\n const multiMeasureRest = new MultiMeasureRest(numMeasures, params);\n multiMeasureRest.setContext(this.context);\n this.renderQ.push(multiMeasureRest);\n return multiMeasureRest;\n }\n Voice(params) {\n const p = Object.assign({ time: '4/4' }, params);\n const voice = new Voice(p.time);\n this.voices.push(voice);\n return voice;\n }\n StaveConnector(params) {\n const connector = new StaveConnector(params.top_stave, params.bottom_stave);\n connector.setType(params.type).setContext(this.context);\n this.renderQ.push(connector);\n return connector;\n }\n Formatter(options) {\n return new Formatter(options);\n }\n Tuplet(params) {\n const p = Object.assign({ notes: [], options: {} }, params);\n const tuplet = new Tuplet(p.notes, p.options).setContext(this.context);\n this.renderQ.push(tuplet);\n return tuplet;\n }\n Beam(params) {\n var _a, _b, _c, _d, _e;\n const beam = new Beam(params.notes, (_a = params.options) === null || _a === void 0 ? void 0 : _a.autoStem).setContext(this.context);\n beam.breakSecondaryAt((_c = (_b = params.options) === null || _b === void 0 ? void 0 : _b.secondaryBeamBreaks) !== null && _c !== void 0 ? _c : []);\n if ((_d = params.options) === null || _d === void 0 ? void 0 : _d.partialBeamDirections) {\n Object.entries((_e = params.options) === null || _e === void 0 ? void 0 : _e.partialBeamDirections).forEach(([noteIndex, direction]) => {\n beam.setPartialBeamSideAt(Number(noteIndex), direction);\n });\n }\n this.renderQ.push(beam);\n return beam;\n }\n Curve(params) {\n const curve = new Curve(params.from, params.to, params.options).setContext(this.context);\n this.renderQ.push(curve);\n return curve;\n }\n StaveTie(params) {\n var _a;\n const tie = new StaveTie({\n first_note: params.from,\n last_note: params.to,\n first_indices: params.first_indices,\n last_indices: params.last_indices,\n }, params.text);\n if ((_a = params.options) === null || _a === void 0 ? void 0 : _a.direction)\n tie.setDirection(params.options.direction);\n tie.setContext(this.context);\n this.renderQ.push(tie);\n return tie;\n }\n StaveLine(params) {\n var _a, _b;\n const line = new StaveLine({\n first_note: params.from,\n last_note: params.to,\n first_indices: params.first_indices,\n last_indices: params.last_indices,\n });\n if ((_a = params.options) === null || _a === void 0 ? void 0 : _a.text)\n line.setText(params.options.text);\n if ((_b = params.options) === null || _b === void 0 ? void 0 : _b.font)\n line.setFont(params.options.font);\n line.setContext(this.context);\n this.renderQ.push(line);\n return line;\n }\n VibratoBracket(params) {\n const vibratoBracket = new VibratoBracket({\n start: params.from,\n stop: params.to,\n });\n if (params.options.line)\n vibratoBracket.setLine(params.options.line);\n if (params.options.harsh)\n vibratoBracket.setHarsh(params.options.harsh);\n vibratoBracket.setContext(this.context);\n this.renderQ.push(vibratoBracket);\n return vibratoBracket;\n }\n TextBracket(params) {\n const textBracket = new TextBracket({\n start: params.from,\n stop: params.to,\n text: params.text,\n superscript: params.options.superscript,\n position: params.options.position,\n });\n if (params.options.line)\n textBracket.setLine(params.options.line);\n if (params.options.font)\n textBracket.setFont(params.options.font);\n textBracket.setContext(this.context);\n this.renderQ.push(textBracket);\n return textBracket;\n }\n System(params = {}) {\n params.factory = this;\n const system = new System(params).setContext(this.context);\n this.systems.push(system);\n return system;\n }\n /**\n * Creates EasyScore. Normally the first step after constructing a Factory. For example:\n * ```\n * const vf: Factory = new Vex.Flow.Factory({renderer: { elementId: 'boo', width: 1200, height: 600 }});\n * const score: EasyScore = vf.EasyScore();\n * ```\n * @param options.factory optional instance of Factory\n * @param options.builder instance of Builder\n * @param options.commitHooks function to call after a note element is created\n * @param options.throwOnError throw error in case of parsing error\n */\n EasyScore(options = {}) {\n options.factory = this;\n return new EasyScore(options);\n }\n PedalMarking(params) {\n const p = Object.assign({ notes: [], options: {\n style: 'mixed',\n } }, params);\n const pedal = new PedalMarking(p.notes);\n pedal.setType(PedalMarking.typeString[p.options.style]);\n pedal.setContext(this.context);\n this.renderQ.push(pedal);\n return pedal;\n }\n NoteSubGroup(params) {\n const p = Object.assign({ notes: [] }, params);\n const group = new NoteSubGroup(p.notes);\n group.setContext(this.context);\n return group;\n }\n /** Render the score. */\n draw() {\n const ctx = this.context;\n this.systems.forEach((s) => s.setContext(ctx).format());\n this.staves.forEach((s) => s.setContext(ctx).draw());\n this.voices.forEach((v) => v.setContext(ctx).draw());\n this.renderQ.forEach((e) => {\n if (!e.isRendered())\n e.setContext(ctx).draw();\n });\n this.systems.forEach((s) => s.setContext(ctx).draw());\n this.reset();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Factory.DEBUG` to `true`. */\nFactory.DEBUG = false;\n/** Default text font. */\nFactory.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Balazs Forian-Szabo\n//\n// ## Description\n//\n// A basic implementation of grace notes\n// to be rendered on a tab stave.\n//\n// See `tests/gracetabnote_tests.ts` for usage examples.\nimport { Font } from './font';\nimport { TabNote } from './tabnote';\nimport { Category } from './typeguard';\nexport class GraceTabNote extends TabNote {\n static get CATEGORY() {\n return Category.GraceTabNote;\n }\n constructor(noteStruct) {\n super(noteStruct, false);\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // vertical shift from stave line\n y_shift: 0.3, \n // grace glyph scale\n scale: 0.6, \n // grace tablature font\n font: `7.5pt ${Font.SANS_SERIF}` });\n this.updateWidth();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This class implements diatonic key management.\nimport { Music } from './music';\nimport { RuntimeError } from './util';\nexport class KeyManager {\n constructor(key) {\n this.music = new Music();\n this.setKey(key);\n }\n setKey(key) {\n this.key = key;\n this.reset();\n return this;\n }\n getKey() {\n return this.key;\n }\n reset() {\n this.keyParts = this.music.getKeyParts(this.key);\n this.keyString = this.keyParts.root;\n if (this.keyParts.accidental)\n this.keyString += this.keyParts.accidental;\n const is_supported_type = Music.scaleTypes[this.keyParts.type];\n if (!is_supported_type) {\n throw new RuntimeError('BadArguments', `Unsupported key type: ${this.key}`);\n }\n this.scale = this.music.getScaleTones(this.music.getNoteValue(this.keyString), Music.scaleTypes[this.keyParts.type]);\n this.scaleMap = {};\n this.scaleMapByValue = {};\n this.originalScaleMapByValue = {};\n const noteLocation = Music.root_indices[this.keyParts.root];\n for (let i = 0; i < Music.roots.length; ++i) {\n const index = (noteLocation + i) % Music.roots.length;\n const rootName = Music.roots[index];\n const noteName = this.music.getRelativeNoteName(rootName, this.scale[i]);\n this.scaleMap[rootName] = noteName;\n this.scaleMapByValue[this.scale[i]] = noteName;\n this.originalScaleMapByValue[this.scale[i]] = noteName;\n }\n return this;\n }\n getAccidental(key) {\n const root = this.music.getKeyParts(key).root;\n const parts = this.music.getNoteParts(this.scaleMap[root]);\n return {\n note: this.scaleMap[root],\n accidental: parts.accidental,\n };\n }\n selectNote(note) {\n note = note.toLowerCase();\n const parts = this.music.getNoteParts(note);\n // First look for matching note in our altered scale\n const scaleNote = this.scaleMap[parts.root];\n const modparts = this.music.getNoteParts(scaleNote);\n if (scaleNote === note) {\n return {\n note: scaleNote,\n accidental: parts.accidental,\n change: false,\n };\n }\n // Then search for a note of equivalent value in our altered scale\n const valueNote = this.scaleMapByValue[this.music.getNoteValue(note)];\n if (valueNote != null) {\n return {\n note: valueNote,\n accidental: this.music.getNoteParts(valueNote).accidental,\n change: false,\n };\n }\n // Then search for a note of equivalent value in the original scale\n const originalValueNote = this.originalScaleMapByValue[this.music.getNoteValue(note)];\n if (originalValueNote != null) {\n this.scaleMap[modparts.root] = originalValueNote;\n delete this.scaleMapByValue[this.music.getNoteValue(scaleNote)];\n this.scaleMapByValue[this.music.getNoteValue(note)] = originalValueNote;\n return {\n note: originalValueNote,\n accidental: this.music.getNoteParts(originalValueNote).accidental,\n change: true,\n };\n }\n // Then try to unmodify a currently modified note.\n if (modparts.root === note) {\n delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])];\n this.scaleMapByValue[this.music.getNoteValue(modparts.root)] = modparts.root;\n this.scaleMap[modparts.root] = modparts.root;\n return {\n note: modparts.root,\n accidental: undefined,\n change: true,\n };\n }\n // Last resort -- shitshoot\n delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])];\n this.scaleMapByValue[this.music.getNoteValue(note)] = note;\n delete this.scaleMap[modparts.root];\n this.scaleMap[modparts.root] = note;\n return {\n note,\n accidental: parts.accidental,\n change: true,\n };\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Author: Raffaele Viglianti, 2012 http://itisnotsound.wordpress.com/\n//\n// This class implements hairpins between notes.\n// Hairpins can be either crescendo or decrescendo.\nimport { Element } from './element';\nimport { Modifier } from './modifier';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveHairpin extends Element {\n /**\n * Create a new hairpin from the specified notes.\n *\n * @param {!Object} notes The notes to tie up.\n * Notes is a struct that has:\n *\n * {\n * first_note: Note,\n * last_note: Note,\n * }\n * @param {!Object} type The type of hairpin\n */\n constructor(notes, type) {\n super();\n this.setNotes(notes);\n this.hairpin = type;\n this.position = Modifier.Position.BELOW;\n this.render_options = {\n height: 10,\n y_shift: 0,\n left_shift_px: 0,\n right_shift_px: 0,\n right_shift_ticks: 0,\n left_shift_ticks: 0,\n };\n }\n static get CATEGORY() {\n return Category.StaveHairpin;\n }\n /* Helper function to convert ticks into pixels.\n * Requires a Formatter with voices joined and formatted (to\n * get pixels per tick)\n *\n * options is struct that has:\n *\n * {\n * height: px,\n * y_shift: px, // vertical offset\n * left_shift_ticks: 0, // left horizontal offset expressed in ticks\n * right_shift_ticks: 0 // right horizontal offset expressed in ticks\n * }\n *\n **/\n static FormatByTicksAndDraw(ctx, formatter, notes, type, position, options) {\n var _a, _b;\n const ppt = formatter.pixelsPerTick;\n if (ppt == null) {\n throw new RuntimeError('BadArguments', 'A valid Formatter must be provide to draw offsets by ticks.');\n }\n const l_shift_px = ppt * ((_a = options.left_shift_ticks) !== null && _a !== void 0 ? _a : 0);\n const r_shift_px = ppt * ((_b = options.right_shift_ticks) !== null && _b !== void 0 ? _b : 0);\n const hairpin_options = {\n height: options.height,\n y_shift: options.y_shift,\n left_shift_px: l_shift_px,\n right_shift_px: r_shift_px,\n right_shift_ticks: 0,\n left_shift_ticks: 0,\n };\n new StaveHairpin({\n first_note: notes.first_note,\n last_note: notes.last_note,\n }, type)\n .setContext(ctx)\n .setRenderOptions(hairpin_options)\n .setPosition(position)\n .draw();\n }\n setPosition(position) {\n if (position === Modifier.Position.ABOVE || position === Modifier.Position.BELOW) {\n this.position = position;\n }\n return this;\n }\n setRenderOptions(options) {\n if (options.height != null &&\n options.y_shift != null &&\n options.left_shift_px != null &&\n options.right_shift_px != null) {\n this.render_options = options;\n }\n return this;\n }\n /**\n * Set the notes to attach this hairpin to.\n *\n * @param {!Object} notes The start and end notes.\n */\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Hairpin needs to have either first_note or last_note set.');\n }\n this.notes = notes;\n this.first_note = notes.first_note;\n this.last_note = notes.last_note;\n return this;\n }\n renderHairpin(params) {\n const ctx = this.checkContext();\n let dis = this.render_options.y_shift + 20;\n let y_shift = params.first_y;\n if (this.position === Modifier.Position.ABOVE) {\n dis = -dis + 30;\n y_shift = params.first_y - params.staff_height;\n }\n const l_shift = this.render_options.left_shift_px;\n const r_shift = this.render_options.right_shift_px;\n ctx.beginPath();\n switch (this.hairpin) {\n case StaveHairpin.type.CRESC:\n ctx.moveTo(params.last_x + r_shift, y_shift + dis);\n ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height / 2 + dis);\n ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height + dis);\n break;\n case StaveHairpin.type.DECRESC:\n ctx.moveTo(params.first_x + l_shift, y_shift + dis);\n ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height / 2 + dis);\n ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height + dis);\n break;\n default:\n // Default is NONE, so nothing to draw\n break;\n }\n ctx.stroke();\n ctx.closePath();\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const firstNote = this.first_note;\n const lastNote = this.last_note;\n if (!firstNote || !lastNote)\n throw new RuntimeError('NoNote', 'Notes required to draw');\n const start = firstNote.getModifierStartXY(this.position, 0);\n const end = lastNote.getModifierStartXY(this.position, 0);\n this.renderHairpin({\n first_x: start.x,\n last_x: end.x,\n first_y: firstNote.checkStave().getY() + firstNote.checkStave().getHeight(),\n last_y: lastNote.checkStave().getY() + lastNote.checkStave().getHeight(),\n staff_height: firstNote.checkStave().getHeight(),\n });\n }\n}\nStaveHairpin.type = {\n CRESC: 1,\n DECRESC: 2,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { TabTie } from './tabtie';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class TabSlide extends TabTie {\n /**\n * @param notes is a struct of the form:\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n * @param notes.first_note the starting note of the slide\n * @param notes.last_note the ending note of the slide\n * @param notes.first_indices specifies which string + fret positions of the TabNote are used in this slide. zero indexed.\n * @param notes.last_indices currently unused. we assume it's the same as first_indices.\n *\n * @param direction TabSlide.SLIDE_UP or TabSlide.SLIDE_DOWN\n */\n constructor(notes, direction) {\n super(notes, 'sl.');\n // Determine the direction automatically if it is not provided.\n if (!direction) {\n let first_fret = notes.first_note.getPositions()[0].fret;\n if (typeof first_fret === 'string') {\n first_fret = parseInt(first_fret, 10);\n }\n let last_fret = notes.last_note.getPositions()[0].fret;\n if (typeof last_fret === 'string') {\n last_fret = parseInt(last_fret, 10);\n }\n // If either of the frets are 'X', parseInt() above will return NaN.\n // Choose TabSlide.SLIDE_UP by default.\n if (isNaN(first_fret) || isNaN(last_fret)) {\n direction = TabSlide.SLIDE_UP;\n }\n else {\n direction = first_fret > last_fret ? TabSlide.SLIDE_DOWN : TabSlide.SLIDE_UP;\n }\n }\n this.direction = direction;\n this.render_options.cp1 = 11;\n this.render_options.cp2 = 14;\n this.render_options.y_shift = 0.5;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.TabSlide;\n }\n static get SLIDE_UP() {\n return 1;\n }\n static get SLIDE_DOWN() {\n return -1;\n }\n static createSlideUp(notes) {\n return new TabSlide(notes, TabSlide.SLIDE_UP);\n }\n static createSlideDown(notes) {\n return new TabSlide(notes, TabSlide.SLIDE_DOWN);\n }\n renderTie(params) {\n if (params.first_ys.length === 0 || params.last_ys.length === 0) {\n throw new RuntimeError('BadArguments', 'No Y-values to render');\n }\n const ctx = this.checkContext();\n const first_x_px = params.first_x_px;\n const first_ys = params.first_ys;\n const last_x_px = params.last_x_px;\n const direction = params.direction;\n if (direction !== TabSlide.SLIDE_UP && direction !== TabSlide.SLIDE_DOWN) {\n throw new RuntimeError('BadSlide', 'Invalid slide direction');\n }\n // eslint-disable-next-line\n const first_indices = this.notes.first_indices;\n for (let i = 0; i < first_indices.length; ++i) {\n const slide_y = first_ys[first_indices[i]] + this.render_options.y_shift;\n if (isNaN(slide_y)) {\n throw new RuntimeError('BadArguments', 'Bad indices for slide rendering.');\n }\n ctx.beginPath();\n ctx.moveTo(first_x_px, slide_y + 3 * direction);\n ctx.lineTo(last_x_px, slide_y - 3 * direction);\n ctx.closePath();\n ctx.stroke();\n }\n this.setRendered();\n }\n}\nTabSlide.TEXT_FONT = {\n family: Font.SERIF,\n size: 10,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Mike Corrigan \n// MIT License\nimport { Glyph } from './glyph';\nimport { GraceNote } from './gracenote';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isGraceNote } from './typeguard';\n/** Tremolo implements tremolo notation. */\nexport class Tremolo extends Modifier {\n /**\n * @param num number of bars\n */\n constructor(num) {\n super();\n this.num = num;\n this.position = Modifier.Position.CENTER;\n this.code = 'tremolo1';\n // big strokes scales initialised to 1 (no scale)\n this.y_spacing_scale = 1;\n this.extra_stroke_scale = 1;\n }\n static get CATEGORY() {\n return Category.Tremolo;\n }\n /** Draw the tremolo on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stemDirection = note.getStemDirection();\n const start = note.getModifierStartXY(this.position, this.index);\n let x = start.x;\n const gn = isGraceNote(note);\n const scale = gn ? GraceNote.SCALE : 1;\n const category = `tremolo.${gn ? 'grace' : 'default'}`;\n const musicFont = Tables.currentMusicFont();\n let y_spacing = musicFont.lookupMetric(`${category}.spacing`) * stemDirection;\n // add y_spacing_scale for big strokes (#1258)\n y_spacing *= this.y_spacing_scale;\n const height = this.num * y_spacing;\n let y = note.getStemExtents().baseY - height;\n if (stemDirection < 0) {\n y += musicFont.lookupMetric(`${category}.offsetYStemDown`) * scale;\n }\n else {\n y += musicFont.lookupMetric(`${category}.offsetYStemUp`) * scale;\n }\n const fontScale = musicFont.lookupMetric(`${category}.point`);\n x += musicFont.lookupMetric(`${category}.offsetXStem${stemDirection === Stem.UP ? 'Up' : 'Down'}`);\n for (let i = 0; i < this.num; ++i) {\n Glyph.renderGlyph(ctx, x, y, fontScale, this.code, { category, scale: this.extra_stroke_scale });\n y += y_spacing;\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Tables } from './tables';\nimport { RuntimeError } from './util';\n/** `Tuning` implements varies types of tunings for tablature. */\nexport class Tuning {\n /**\n * Constructor.\n * @param tuningString tuning name (eg. 'dagdad') or comma separated note strings\n */\n constructor(tuningString = 'E/5,B/4,G/4,D/4,A/3,E/3,B/2,E/2') {\n this.tuningValues = [];\n // Default to standard tuning.\n this.setTuning(tuningString);\n }\n static get names() {\n return {\n standard: 'E/5,B/4,G/4,D/4,A/3,E/3',\n dagdad: 'D/5,A/4,G/4,D/4,A/3,D/3',\n dropd: 'E/5,B/4,G/4,D/4,A/3,D/3',\n eb: 'Eb/5,Bb/4,Gb/4,Db/4,Ab/3,Db/3',\n standardBanjo: 'D/5,B/4,G/4,D/4,G/5',\n };\n }\n /** Return the note number associated to the note string. */\n noteToInteger(noteString) {\n return Tables.keyProperties(noteString).int_value;\n }\n /**\n * Set tuning identified by tuning name (eg. 'dagdad')\n * @param tuningString tuning name (eg. 'dagdad') or comma separated note strings\n */\n setTuning(tuningString) {\n if (Tuning.names[tuningString]) {\n tuningString = Tuning.names[tuningString];\n }\n this.tuningValues = [];\n const keys = tuningString.split(/\\s*,\\s*/);\n if (keys.length === 0) {\n throw new RuntimeError('BadArguments', `Invalid tuning string: ${tuningString}`);\n }\n for (let i = 0; i < keys.length; ++i) {\n this.tuningValues[i] = this.noteToInteger(keys[i]);\n }\n }\n /** Return the note number associated with a tablature string. */\n getValueForString(stringNum) {\n const s = Number(stringNum);\n if (s < 1 || s > this.tuningValues.length) {\n throw new RuntimeError('BadArguments', `String number must be between 1 and ${this.tuningValues.length}:${stringNum}`);\n }\n return this.tuningValues[s - 1];\n }\n /** Return the note number associated with a tablature string and fret. */\n getValueForFret(fretNum, stringNum) {\n const stringValue = this.getValueForString(stringNum);\n const f = Number(fretNum);\n if (f < 0) {\n throw new RuntimeError('BadArguments', `Fret number must be 0 or higher: ${fretNum}`);\n }\n return stringValue + f;\n }\n /** Return the note string associated with tablature string and fret. */\n getNoteForFret(fretNum, stringNum) {\n const noteValue = this.getValueForFret(fretNum, stringNum);\n const octave = Math.floor(noteValue / 12);\n const value = noteValue % 12;\n return `${Tables.integerToNote(value)}/${octave}`;\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Accidental } from './accidental';\nimport { Annotation, AnnotationHorizontalJustify, AnnotationVerticalJustify } from './annotation';\nimport { Articulation } from './articulation';\nimport { BarNote } from './barnote';\nimport { Beam } from './beam';\nimport { Bend } from './bend';\nimport { BoundingBox } from './boundingbox';\nimport { BoundingBoxComputation } from './boundingboxcomputation';\nimport { CanvasContext } from './canvascontext';\nimport { ChordSymbol, ChordSymbolHorizontalJustify, ChordSymbolVerticalJustify, SymbolModifiers, SymbolTypes, } from './chordsymbol';\nimport { Clef } from './clef';\nimport { ClefNote } from './clefnote';\nimport { Crescendo } from './crescendo';\nimport { Curve, CurvePosition } from './curve';\nimport { Dot } from './dot';\nimport { EasyScore } from './easyscore';\nimport { Element } from './element';\nimport { Factory } from './factory';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Formatter } from './formatter';\nimport { Fraction } from './fraction';\nimport { FretHandFinger } from './frethandfinger';\nimport { GhostNote } from './ghostnote';\nimport { Glyph } from './glyph';\nimport { GlyphNote } from './glyphnote';\nimport { GraceNote } from './gracenote';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { GraceTabNote } from './gracetabnote';\nimport { KeyManager } from './keymanager';\nimport { KeySignature } from './keysignature';\nimport { KeySigNote } from './keysignote';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { ModifierContext } from './modifiercontext';\nimport { MultiMeasureRest } from './multimeasurerest';\nimport { Music } from './music';\nimport { Note } from './note';\nimport { NoteHead } from './notehead';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { Parenthesis } from './parenthesis';\nimport { Parser } from './parser';\nimport { PedalMarking } from './pedalmarking';\nimport { Registry } from './registry';\nimport { RenderContext } from './rendercontext';\nimport { Renderer, RendererBackends, RendererLineEndType } from './renderer';\nimport { RepeatNote } from './repeatnote';\nimport { Stave } from './stave';\nimport { Barline, BarlineType } from './stavebarline';\nimport { StaveConnector } from './staveconnector';\nimport { StaveHairpin } from './stavehairpin';\nimport { StaveLine } from './staveline';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { StaveNote } from './stavenote';\nimport { Repetition } from './staverepetition';\nimport { StaveTempo } from './stavetempo';\nimport { StaveText } from './stavetext';\nimport { StaveTie } from './stavetie';\nimport { Volta, VoltaType } from './stavevolta';\nimport { Stem } from './stem';\nimport { StringNumber } from './stringnumber';\nimport { Stroke } from './strokes';\nimport { SVGContext } from './svgcontext';\nimport { System } from './system';\nimport { Tables } from './tables';\nimport { TabNote } from './tabnote';\nimport { TabSlide } from './tabslide';\nimport { TabStave } from './tabstave';\nimport { TabTie } from './tabtie';\nimport { TextBracket, TextBracketPosition } from './textbracket';\nimport { TextDynamics } from './textdynamics';\nimport { TextFormatter } from './textformatter';\nimport { TextJustification, TextNote } from './textnote';\nimport { TickContext } from './tickcontext';\nimport { TimeSignature } from './timesignature';\nimport { TimeSigNote } from './timesignote';\nimport { Tremolo } from './tremolo';\nimport { Tuning } from './tuning';\nimport { Tuplet } from './tuplet';\nimport { DATE, ID, VERSION } from './version';\nimport { Vibrato } from './vibrato';\nimport { VibratoBracket } from './vibratobracket';\nimport { Voice, VoiceMode } from './voice';\nexport class Flow {\n static get BUILD() {\n return {\n /** version number. */\n VERSION: VERSION,\n /** git commit ID that this library was built from. */\n ID: ID,\n /** The date when this library was compiled. */\n DATE: DATE,\n };\n }\n /**\n * Examples:\n * ```\n * Vex.Flow.setMusicFont('Petaluma');\n * Vex.Flow.setMusicFont('Bravura', 'Gonville');\n * ```\n *\n * **CASE 1**: You are using `vexflow.js`, which includes all music fonts (Bravura, Gonville, Petaluma, Custom).\n * In this case, calling this method is optional, since VexFlow already defaults to a music font stack of:\n * 'Bravura', 'Gonville', 'Custom'.\n *\n * **CASE 2**: You are using `vexflow-bravura.js` or `vexflow-petaluma.js` or `vexflow-gonville.js`,\n * which includes a single music font. Calling this method is unnecessary.\n *\n * **CASE 3**: You are using the light weight `vexflow-core.js` to take advantage of lazy loading for fonts.\n * In this case, the default music font stack is empty.\n * Example:\n * ```\n * await Vex.Flow.fetchMusicFont('Petaluma');\n * Vex.Flow.setMusicFont('Petaluma');\n * ... (do VexFlow stuff) ...\n * ```\n * See `demos/fonts/` for more examples.\n *\n * @returns an array of Font objects corresponding to the provided `fontNames`.\n */\n static setMusicFont(...fontNames) {\n // Convert the array of font names into an array of Font objects.\n const fonts = fontNames.map((fontName) => Font.load(fontName));\n Tables.MUSIC_FONT_STACK = fonts;\n Glyph.MUSIC_FONT_STACK = fonts.slice();\n Glyph.CURRENT_CACHE_KEY = fontNames.join(',');\n return fonts;\n }\n /**\n * Used with vexflow-core which supports dynamic font loading.\n */\n // eslint-disable-next-line\n static fetchMusicFont(fontName, fontModuleOrPath) {\n return __awaiter(this, void 0, void 0, function* () {\n // The default implementation does nothing.\n // See vexflow-core.ts for the implementation that vexflow-core.js uses.\n });\n }\n static getMusicFont() {\n const fonts = Tables.MUSIC_FONT_STACK;\n return fonts.map((font) => font.getName());\n }\n static get RENDER_PRECISION_PLACES() {\n return Tables.RENDER_PRECISION_PLACES;\n }\n static set RENDER_PRECISION_PLACES(precision) {\n Tables.RENDER_PRECISION_PLACES = precision;\n }\n static get SOFTMAX_FACTOR() {\n return Tables.SOFTMAX_FACTOR;\n }\n static set SOFTMAX_FACTOR(factor) {\n Tables.SOFTMAX_FACTOR = factor;\n }\n static get NOTATION_FONT_SCALE() {\n return Tables.NOTATION_FONT_SCALE;\n }\n static set NOTATION_FONT_SCALE(value) {\n Tables.NOTATION_FONT_SCALE = value;\n }\n static get TABLATURE_FONT_SCALE() {\n return Tables.TABLATURE_FONT_SCALE;\n }\n static set TABLATURE_FONT_SCALE(value) {\n Tables.TABLATURE_FONT_SCALE = value;\n }\n static get RESOLUTION() {\n return Tables.RESOLUTION;\n }\n static set RESOLUTION(value) {\n Tables.RESOLUTION = value;\n }\n static get SLASH_NOTEHEAD_WIDTH() {\n return Tables.SLASH_NOTEHEAD_WIDTH;\n }\n static set SLASH_NOTEHEAD_WIDTH(value) {\n Tables.SLASH_NOTEHEAD_WIDTH = value;\n }\n static get STAVE_LINE_DISTANCE() {\n return Tables.STAVE_LINE_DISTANCE;\n }\n static set STAVE_LINE_DISTANCE(value) {\n Tables.STAVE_LINE_DISTANCE = value;\n }\n static get STAVE_LINE_THICKNESS() {\n return Tables.STAVE_LINE_THICKNESS;\n }\n static set STAVE_LINE_THICKNESS(value) {\n Tables.STAVE_LINE_THICKNESS = value;\n }\n static get STEM_HEIGHT() {\n return Tables.STEM_HEIGHT;\n }\n static set STEM_HEIGHT(value) {\n Tables.STEM_HEIGHT = value;\n }\n static get STEM_WIDTH() {\n return Tables.STEM_WIDTH;\n }\n static set STEM_WIDTH(value) {\n Tables.STEM_WIDTH = value;\n }\n static get TIME4_4() {\n return Tables.TIME4_4;\n }\n static get accidentalMap() {\n return Tables.accidentalMap;\n }\n static get unicode() {\n return Tables.unicode;\n }\n static keySignature(spec) {\n return Tables.keySignature(spec);\n }\n static hasKeySignature(spec) {\n return Tables.hasKeySignature(spec);\n }\n static getKeySignatures() {\n return Tables.getKeySignatures();\n }\n static clefProperties(clef) {\n return Tables.clefProperties(clef);\n }\n // eslint-disable-next-line\n static keyProperties(key, clef, params) {\n return Tables.keyProperties(key, clef, params);\n }\n static durationToTicks(duration) {\n return Tables.durationToTicks(duration);\n }\n}\nFlow.Accidental = Accidental;\nFlow.Annotation = Annotation;\nFlow.Articulation = Articulation;\nFlow.Barline = Barline;\nFlow.BarNote = BarNote;\nFlow.Beam = Beam;\nFlow.Bend = Bend;\nFlow.BoundingBox = BoundingBox;\nFlow.BoundingBoxComputation = BoundingBoxComputation;\nFlow.CanvasContext = CanvasContext;\nFlow.ChordSymbol = ChordSymbol;\nFlow.Clef = Clef;\nFlow.ClefNote = ClefNote;\nFlow.Crescendo = Crescendo;\nFlow.Curve = Curve;\nFlow.Dot = Dot;\nFlow.EasyScore = EasyScore;\nFlow.Element = Element;\nFlow.Factory = Factory;\nFlow.Font = Font;\nFlow.Formatter = Formatter;\nFlow.Fraction = Fraction;\nFlow.FretHandFinger = FretHandFinger;\nFlow.GhostNote = GhostNote;\nFlow.Glyph = Glyph;\nFlow.GlyphNote = GlyphNote;\nFlow.GraceNote = GraceNote;\nFlow.GraceNoteGroup = GraceNoteGroup;\nFlow.GraceTabNote = GraceTabNote;\nFlow.KeyManager = KeyManager;\nFlow.KeySignature = KeySignature;\nFlow.KeySigNote = KeySigNote;\nFlow.Modifier = Modifier;\nFlow.ModifierContext = ModifierContext;\nFlow.MultiMeasureRest = MultiMeasureRest;\nFlow.Music = Music;\nFlow.Note = Note;\nFlow.NoteHead = NoteHead;\nFlow.NoteSubGroup = NoteSubGroup;\nFlow.Ornament = Ornament;\nFlow.Parenthesis = Parenthesis;\nFlow.Parser = Parser;\nFlow.PedalMarking = PedalMarking;\nFlow.Registry = Registry;\nFlow.RenderContext = RenderContext;\nFlow.Renderer = Renderer;\nFlow.RepeatNote = RepeatNote;\nFlow.Repetition = Repetition;\nFlow.Stave = Stave;\nFlow.StaveConnector = StaveConnector;\nFlow.StaveHairpin = StaveHairpin;\nFlow.StaveLine = StaveLine;\nFlow.StaveModifier = StaveModifier;\nFlow.StaveNote = StaveNote;\nFlow.StaveTempo = StaveTempo;\nFlow.StaveText = StaveText;\nFlow.StaveTie = StaveTie;\nFlow.Stem = Stem;\nFlow.StringNumber = StringNumber;\nFlow.Stroke = Stroke;\nFlow.SVGContext = SVGContext;\nFlow.System = System;\nFlow.TabNote = TabNote;\nFlow.TabSlide = TabSlide;\nFlow.TabStave = TabStave;\nFlow.TabTie = TabTie;\nFlow.TextBracket = TextBracket;\nFlow.TextDynamics = TextDynamics;\nFlow.TextFormatter = TextFormatter;\nFlow.TextNote = TextNote;\nFlow.TickContext = TickContext;\nFlow.TimeSignature = TimeSignature;\nFlow.TimeSigNote = TimeSigNote;\nFlow.Tremolo = Tremolo;\nFlow.Tuning = Tuning;\nFlow.Tuplet = Tuplet;\nFlow.Vibrato = Vibrato;\nFlow.VibratoBracket = VibratoBracket;\nFlow.Voice = Voice;\nFlow.Volta = Volta;\n// Exported Enums.\n// Sorted by the module / file they are exported from.\nFlow.AnnotationHorizontalJustify = AnnotationHorizontalJustify;\nFlow.AnnotationVerticalJustify = AnnotationVerticalJustify;\nFlow.ChordSymbolHorizontalJustify = ChordSymbolHorizontalJustify;\nFlow.ChordSymbolVerticalJustify = ChordSymbolVerticalJustify;\nFlow.SymbolTypes = SymbolTypes;\nFlow.SymbolModifiers = SymbolModifiers;\nFlow.CurvePosition = CurvePosition;\nFlow.FontWeight = FontWeight;\nFlow.FontStyle = FontStyle;\nFlow.ModifierPosition = ModifierPosition;\nFlow.RendererBackends = RendererBackends;\nFlow.RendererLineEndType = RendererLineEndType;\nFlow.BarlineType = BarlineType;\nFlow.StaveModifierPosition = StaveModifierPosition;\nFlow.VoltaType = VoltaType;\nFlow.TextBracketPosition = TextBracketPosition;\nFlow.TextJustification = TextJustification;\nFlow.VoiceMode = VoiceMode;\n","export const VERSION = '4.1.0-alpha.0';\nexport const ID = '847bc9014672858aedc7f8460384f51f98d6bd84';\nexport const DATE = '2022-10-10T04:47:38.237Z';\n","export const CustomFont = {\n resolution: 1000,\n fontFamily: 'VexFlowCustom',\n glyphs: {\n noteheadSquareWhite: {\n x_min: 0,\n x_max: 430.75,\n ha: 386,\n o: 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 l 50 150 l 380 150 l 380 -150 l 50 -150 l 50 150 ',\n },\n noteheadSquareBlack: {\n x_min: 0,\n x_max: 430.75,\n ha: 386,\n o: 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 ',\n },\n accidentalBuyukMucennebFlat: {\n x_min: -171.5,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalBakiyeFlat: {\n x_min: -176.9375,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalKucukMucennebSharp: {\n x_min: -1.359375,\n x_max: 255.890625,\n ha: 261,\n o: 'm 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 ',\n },\n accidentalKoron: {\n x_min: -20,\n x_max: 320,\n ha: 257,\n o: 'm -8 200 b -8 210 8 200 16 200 l 20 148 -199 l 23 -615 b 0 -629 9 -629 6 -629 l -21 -612 l -21 -201 l -21 216 l -20 200 m 16 200 l 310 0 l 240 0 l 16 140 l 16 -120 l 240 0 l 310 0 l 16 -200 ',\n },\n accidentalSori: {\n x_min: -10.890625,\n x_max: 299.4375,\n ha: 294,\n o: 'm 44 174 b 51 174 47 174 49 174 b 68 173 55 174 61 174 l 287 112 l 551 40 b 615 20 617 22 609 23 b 626 0 622 16 626 8 b 615 -22 626 -9 622 -18 b 613 -23 613 -23 613 -23 b 613 -23 613 -23 613 -23 b 287 -113 613 -24 597 -29 l 68 -174 b 53 -176 61 -176 57 -176 b 39 -172 47 -176 43 -174 b 27 -151 31 -167 27 -159 b 39 -129 27 -141 31 -133 b 230 -74 43 -124 20 -131 l 370 -36 l 468 -9 b 498 0 484 -4 498 -1 b 468 8 498 0 484 2 l 370 34 l 230 73 b 40 126 28 129 43 124 b 27 149 31 131 27 140 b 44 174 27 161 34 170 m 205 110 l 205 300 b 205 330 245 330 245 300 l 245 300 l 245 -300 b 245 -330 205 -330 205 -300 l 205 -300 l 205 110 l 345 90 m 345 90 l 345 330 b 345 360 385 360 385 330 l 385 330 l 385 -270 b 385 -300 345 -300 345 -270 l 345 -270 l 345 90 ',\n },\n vexAccidentalMicrotonal2: {\n x_min: -1.359375,\n x_max: 386.5625,\n ha: 394,\n o: 'm 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 ',\n },\n vexAccidentalMicrotonal3: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm -146 537 b -138 538 -143 538 -141 538 b -118 525 -129 538 -121 533 b -117 390 -117 522 -117 521 b -115 259 -117 268 -117 259 b -115 259 -115 259 -115 259 b -59 272 -104 263 -62 272 b -39 259 -50 272 -42 267 b -37 209 -38 257 -37 233 b -39 159 -37 185 -38 162 b -85 138 -43 149 -44 149 l -117 131 l -117 21 b -115 -88 -117 -80 -117 -88 b -115 -88 -115 -88 -115 -88 b -59 -75 -104 -84 -62 -75 b -44 -81 -52 -75 -48 -77 b -38 -124 -38 -87 -38 -85 b -38 -138 -38 -124 -38 -138 b -38 -152 -38 -138 -38 -152 b -44 -195 -38 -191 -38 -190 b -85 -209 -48 -200 -48 -200 l -117 -217 l -117 -349 b -118 -486 -117 -481 -117 -482 b -138 -499 -121 -494 -129 -499 b -153 -493 -143 -499 -149 -497 b -159 -415 -158 -487 -159 -496 b -159 -355 -159 -398 -159 -379 b -159 -227 -159 -284 -159 -227 b -205 -238 -159 -227 -180 -232 b -250 -249 -230 -244 -250 -249 b -251 -386 -251 -249 -251 -311 b -252 -525 -251 -521 -251 -522 b -272 -538 -255 -534 -264 -538 b -287 -532 -277 -538 -283 -536 b -293 -452 -292 -527 -293 -536 b -293 -391 -293 -436 -293 -415 b -294 -260 -293 -269 -293 -260 b -294 -260 -294 -260 -294 -260 b -348 -272 -306 -264 -345 -272 b -368 -259 -357 -272 -365 -267 b -369 -209 -369 -257 -369 -233 b -368 -159 -369 -185 -369 -162 b -323 -139 -364 -149 -362 -148 l -293 -131 l -293 -22 b -294 87 -293 80 -293 87 b -294 87 -294 87 -294 87 b -348 75 -306 84 -345 75 b -368 88 -357 75 -365 80 b -369 138 -369 91 -369 114 b -368 188 -369 162 -369 186 b -323 209 -364 198 -362 199 l -293 216 l -293 349 b -292 486 -293 481 -293 482 b -272 499 -288 494 -280 499 b -257 493 -266 499 -261 497 b -251 414 -251 487 -251 496 b -251 354 -251 398 -251 378 b -251 226 -251 284 -251 226 b -205 238 -250 226 -230 231 b -159 249 -180 244 -159 249 b -159 385 -159 249 -159 310 b -157 525 -159 521 -159 522 b -146 537 -156 530 -151 535 z m -159 11 b -159 120 -159 98 -159 120 l -159 120 b -175 116 -160 120 -167 119 b -221 105 -184 114 -204 109 l -251 98 l -251 -12 b -251 -121 -251 -72 -251 -121 b -205 -110 -250 -121 -230 -116 b -159 -99 -180 -104 -159 -99 b -159 11 -159 -99 -159 -49 z m 89 517 b 97 519 92 518 94 519 b 117 505 106 519 114 513 b 119 376 119 502 119 501 l 119 249 l 145 258 b 176 267 169 266 172 267 b 177 267 176 267 177 267 b 196 255 186 267 192 263 l 197 252 l 197 205 b 197 181 197 195 197 187 b 193 149 197 153 197 153 b 152 131 190 144 187 143 l 119 120 l 119 10 b 119 -100 119 -62 119 -100 b 145 -91 120 -100 131 -96 b 173 -82 159 -86 171 -82 b 176 -81 174 -81 175 -81 b 196 -94 185 -81 193 -87 b 198 -151 197 -97 198 -125 b 197 -194 198 -172 197 -192 b 153 -218 193 -203 192 -204 l 119 -230 l 119 -367 l 118 -504 l 117 -507 b 97 -519 113 -514 105 -519 b 82 -512 92 -519 87 -517 b 76 -434 77 -507 76 -516 b 76 -374 76 -418 76 -398 b 76 -245 76 -303 76 -245 b 52 -254 76 -245 65 -249 b 19 -263 34 -260 25 -263 b 6 -257 13 -263 10 -261 b 0 -214 0 -251 0 -253 b 0 -200 0 -210 0 -205 b 0 -188 0 -196 0 -192 b 6 -143 0 -147 0 -149 b 46 -126 10 -139 10 -139 l 76 -115 l 76 -5 b 76 106 76 56 76 106 b 51 98 76 106 64 102 b 18 89 34 92 25 89 b 6 95 13 89 10 91 b 0 139 0 101 0 99 b 0 153 0 143 0 148 b 0 179 0 163 0 172 b 44 225 0 215 3 211 l 76 236 l 76 369 b 78 505 76 501 76 502 b 89 517 80 510 85 515 z ',\n },\n vexAccidentalMicrotonal4: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 283 633 b 291 634 286 634 289 634 b 311 621 300 634 308 629 b 313 505 313 618 313 617 b 313 393 313 443 313 393 b 378 425 313 393 343 407 l 443 458 l 448 458 b 449 458 449 458 449 458 b 471 437 462 458 471 448 b 469 429 471 434 470 432 b 387 382 466 421 469 423 l 313 344 l 313 247 l 313 150 l 315 152 b 433 201 353 184 394 201 b 479 193 448 201 464 198 b 549 86 524 177 549 135 b 526 1 549 59 541 29 b 395 -143 504 -39 475 -71 b 316 -214 351 -182 341 -191 b 292 -229 302 -228 300 -229 b 272 -216 283 -229 275 -224 b 271 55 271 -212 271 -212 b 270 323 271 203 270 323 b 205 291 270 323 241 308 l 140 258 l 135 258 b 134 258 135 258 134 258 b 112 279 121 258 112 267 b 114 287 112 281 113 284 b 196 334 117 295 114 293 l 271 371 l 271 495 b 272 621 271 617 271 618 b 283 633 274 626 279 631 z m 404 133 b 391 134 400 134 395 134 b 384 134 388 134 386 134 b 318 88 358 130 335 114 l 313 81 l 313 -37 l 313 -156 l 316 -152 b 439 83 391 -71 439 22 l 439 84 b 404 133 439 115 430 128 z m -8 633 l -8 633 b 0 634 -6 634 -3 634 b 20 621 8 634 17 629 b 21 384 21 618 21 617 l 21 150 l 24 152 b 141 201 62 184 102 201 b 187 193 157 201 172 198 b 257 86 232 177 257 135 b 234 1 257 59 250 29 b 103 -143 212 -39 183 -71 b 24 -214 60 -182 49 -191 b 0 -229 10 -228 8 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 203 l -21 618 l -20 621 b -8 633 -18 626 -13 631 z m 113 133 l 113 133 b 99 134 109 134 103 134 b 93 134 97 134 94 134 b 26 88 66 130 43 114 l 21 81 l 21 -37 l 21 -156 l 25 -152 b 148 83 99 -71 148 22 l 148 84 b 113 133 148 115 138 128 z ',\n },\n vexNoteHeadRectBlack: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 ',\n },\n vexNoteHeadRectWhite: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 l 50 100 l 380 100 l 380 -100 l 50 -100 l 50 100',\n },\n },\n};\n","export const CustomMetrics = {\n name: 'VexFlowCustom',\n smufl: false,\n glyphs: {},\n};\n","export const LelandFont = {\n glyphs: {\n bracketTop: {\n x_min: 0,\n x_max: 491,\n y_min: 0,\n y_max: 279,\n ha: 279,\n o: 'm 697 399 b 687 402 694 400 690 402 b 671 395 681 402 674 400 b 249 168 668 390 524 168 l 20 168 b 0 150 9 168 0 161 l 0 20 l 0 0 l 176 0 b 706 374 619 0 704 370 b 707 382 706 376 707 379 b 697 399 707 389 703 395 z',\n },\n bracketBottom: {\n x_min: 0,\n x_max: 491,\n y_min: -279,\n y_max: 0,\n ha: 279,\n o: 'm 697 -399 b 707 -382 703 -395 707 -389 b 706 -374 707 -379 706 -376 b 176 0 704 -370 619 0 l 0 0 l 0 -20 l 0 -150 b 20 -168 0 -161 9 -168 l 249 -168 b 671 -395 524 -168 668 -390 b 687 -402 674 -400 681 -402 b 697 -399 690 -402 694 -400 z',\n },\n segno: {\n x_min: 0,\n x_max: 654,\n y_min: 0,\n y_max: 869,\n ha: 869,\n o: 'm 546 690 l 838 1207 b 841 1215 840 1210 841 1212 b 832 1233 841 1221 837 1230 l 809 1248 b 798 1251 806 1250 801 1251 b 780 1241 792 1251 783 1247 l 487 721 l 217 860 b 99 995 147 897 99 924 b 236 1165 99 1120 179 1165 b 343 1073 288 1165 325 1130 b 454 988 357 1022 405 988 b 477 991 461 988 469 989 b 541 1076 526 1002 541 1045 b 540 1089 541 1080 541 1084 b 294 1225 534 1116 514 1225 b 0 939 72 1225 0 1053 b 125 706 0 825 42 753 l 397 563 l 104 45 b 102 35 102 42 102 37 b 111 19 102 29 107 22 l 132 3 b 144 0 135 1 141 0 b 148 0 145 0 147 0 b 161 10 153 1 158 6 l 456 531 l 704 403 b 842 256 780 361 842 318 b 706 86 842 131 763 86 b 599 177 654 86 616 120 b 488 262 585 228 537 262 b 465 259 481 262 472 261 b 402 177 418 248 402 206 b 403 163 402 171 402 167 b 649 26 409 135 429 26 b 942 312 871 26 942 199 b 821 549 942 426 901 507 z m 52 444 b 118 416 69 426 95 416 b 183 444 141 416 166 426 b 210 508 200 461 210 485 b 183 573 210 531 200 556 b 118 600 166 590 141 600 b 52 573 95 600 69 590 b 24 508 35 556 24 531 b 52 444 24 485 35 461 z m 760 730 b 825 703 778 713 802 703 b 890 730 848 703 873 713 b 917 795 907 747 917 772 b 890 861 917 818 907 844 b 825 888 873 878 848 888 b 760 861 802 888 778 878 b 733 795 743 844 733 818 b 760 730 733 772 743 747 z',\n },\n coda: {\n x_min: 0,\n x_max: 745,\n y_min: -113,\n y_max: 735,\n ha: 848,\n o: 'm 924 467 b 560 896 916 697 757 881 l 560 1038 b 540 1058 560 1050 552 1058 l 524 1058 b 505 1038 513 1058 505 1050 l 505 896 b 150 467 311 877 158 693 l 20 467 b 0 446 9 467 0 458 l 0 432 b 20 412 0 420 9 412 l 150 412 b 505 0 166 193 317 17 l 505 -143 b 524 -163 505 -154 513 -163 l 540 -163 b 560 -143 552 -163 560 -154 l 560 0 b 923 412 753 13 907 190 l 1054 412 b 1073 432 1066 412 1073 420 l 1073 446 b 1054 467 1073 458 1066 467 z m 560 467 l 560 852 b 773 467 716 837 773 671 z m 505 467 l 301 467 b 505 851 301 668 357 831 z m 505 412 l 505 45 b 301 412 366 65 301 219 z m 560 412 l 772 412 b 560 45 772 215 706 60 z',\n },\n gClef: {\n x_min: 0,\n x_max: 640,\n y_min: -666,\n y_max: 1112,\n ha: 1778,\n o: 'm 809 -30 b 665 -279 809 -132 768 -238 b 586 186 635 -107 596 122 b 809 -30 716 186 809 98 z m 605 -297 b 521 -305 576 -302 549 -305 b 140 56 315 -305 140 -161 b 390 498 140 232 264 389 b 459 562 415 520 438 540 b 492 357 472 484 482 416 b 272 45 361 318 272 180 b 467 -194 272 -56 351 -194 b 491 -176 478 -194 491 -189 b 459 -144 491 -163 477 -156 b 372 -1 403 -109 372 -72 b 521 177 372 86 436 157 z m 478 1184 b 632 1392 491 1241 557 1392 b 688 1223 654 1392 688 1322 b 478 863 688 1073 577 960 b 462 1037 469 920 462 976 b 478 1184 462 1090 467 1139 z m 176 -739 b 444 -959 176 -834 249 -959 b 622 -910 511 -959 570 -942 b 720 -670 700 -855 720 -760 b 697 -467 720 -613 711 -549 b 675 -338 693 -438 684 -395 b 922 3 816 -292 922 -145 b 557 367 922 220 768 367 b 516 619 543 454 528 539 b 773 1188 668 779 773 959 b 710 1477 773 1319 733 1426 b 608 1601 675 1551 634 1601 b 505 1528 598 1601 553 1584 b 387 1113 413 1418 387 1234 b 419 804 387 1035 395 965 b 312 701 418 802 343 726 b 0 117 181 579 0 405 b 503 -364 0 -153 235 -364 b 616 -354 544 -364 583 -360 b 660 -670 644 -492 660 -593 b 438 -899 660 -819 583 -899 b 370 -891 403 -899 373 -891 b 366 -887 369 -890 366 -888 b 373 -881 366 -884 369 -883 b 508 -721 441 -871 508 -814 b 341 -562 508 -644 449 -562 b 176 -739 240 -562 176 -644 z',\n },\n cClef: {\n x_min: 0,\n x_max: 627,\n y_min: -480,\n y_max: 482,\n ha: 962,\n o: 'm 19 675 b 0 657 9 675 0 667 l 0 -654 b 19 -672 0 -664 9 -672 l 122 -672 b 141 -654 132 -672 141 -664 l 141 657 b 122 675 141 667 132 675 z m 903 -376 b 619 -58 903 -197 808 -58 b 505 -95 586 -58 562 -60 b 426 1 503 -89 474 -32 b 505 98 474 35 503 92 b 641 60 560 65 579 60 b 903 379 816 60 903 223 b 580 694 903 580 755 694 b 318 517 472 694 318 649 b 438 400 318 446 367 400 b 546 510 501 400 546 446 b 425 615 546 589 494 615 b 547 651 458 638 503 651 b 723 400 698 651 723 530 b 593 128 723 289 720 128 b 438 279 467 128 441 265 b 418 300 438 281 438 300 b 396 279 397 300 396 281 b 264 29 383 200 344 62 l 264 657 b 246 675 264 667 256 675 b 228 657 236 675 228 667 l 228 -654 b 246 -672 228 -664 236 -672 b 264 -654 256 -672 264 -664 l 264 -26 b 396 -278 348 -60 380 -197 b 418 -297 396 -279 397 -297 b 438 -278 438 -297 438 -279 b 593 -125 441 -262 467 -125 b 723 -397 720 -125 723 -287 b 547 -648 723 -527 698 -648 b 425 -612 503 -648 458 -635 b 441 -613 426 -612 432 -613 b 546 -507 504 -613 546 -569 b 438 -397 546 -444 501 -397 b 318 -514 367 -397 318 -444 b 580 -691 318 -647 472 -691 b 903 -376 755 -691 903 -577 z',\n },\n fClef: {\n x_min: 0,\n x_max: 664,\n y_min: -617,\n y_max: 251,\n ha: 868,\n o: 'm 366 361 b 167 298 256 361 168 298 b 37 112 84 236 50 163 b 27 36 30 86 27 60 b 46 -58 27 1 33 -30 b 140 -138 63 -96 96 -124 b 194 -147 157 -144 176 -147 b 287 -122 226 -147 259 -138 b 359 10 331 -98 359 -46 b 289 134 359 60 333 107 b 206 160 259 154 230 160 b 160 153 189 160 173 157 b 109 122 145 147 121 132 b 147 215 114 150 131 192 b 219 279 163 238 194 266 b 351 308 255 300 301 308 b 570 -52 498 308 570 190 b 477 -399 570 -186 520 -314 b 310 -635 429 -494 366 -585 b 17 -837 160 -772 19 -837 b 0 -864 17 -837 0 -847 b 1 -871 0 -867 1 -868 b 27 -888 6 -886 19 -888 b 35 -887 29 -888 33 -887 b 331 -717 36 -887 200 -819 b 528 -544 405 -664 471 -606 b 661 -367 580 -488 625 -428 b 760 -50 724 -259 760 -147 b 670 239 760 69 729 168 b 366 361 602 320 500 361 z m 818 179 b 887 107 818 138 850 107 b 956 179 924 107 956 138 b 887 252 956 219 924 252 b 818 179 850 252 818 219 z m 818 -177 b 887 -251 818 -217 850 -251 b 956 -177 924 -251 956 -217 b 887 -104 956 -137 924 -104 b 818 -177 850 -104 818 -137 z',\n },\n unpitchedPercussionClef1: {\n x_min: 0,\n x_max: 352,\n y_min: -252,\n y_max: 252,\n ha: 504,\n o: 'm 19 363 b 0 344 9 363 0 354 l 0 -344 b 19 -363 0 -354 9 -363 l 177 -363 b 196 -344 187 -363 196 -354 l 196 344 b 177 363 196 354 187 363 z m 330 363 b 311 344 320 363 311 354 l 311 -344 b 330 -363 311 -354 320 -363 l 488 -363 b 507 -344 498 -363 507 -354 l 507 344 b 488 363 507 354 498 363 z',\n },\n '6stringTabClef': {\n x_min: 0,\n x_max: 439,\n y_min: -743,\n y_max: 746,\n ha: 1489,\n o: 'm 52 1074 l 52 958 l 249 958 l 249 419 l 387 419 l 387 958 l 583 958 l 583 1074 z m 0 -333 l 145 -333 l 192 -196 l 436 -196 l 481 -333 l 632 -333 l 396 334 l 238 334 z m 315 181 l 400 -81 l 229 -81 z m 566 -474 b 393 -402 531 -428 475 -403 l 71 -402 l 71 -1070 l 372 -1070 b 374 -1070 373 -1070 373 -1070 b 465 -1061 405 -1070 435 -1067 b 541 -1027 494 -1056 520 -1043 b 588 -975 560 -1012 575 -995 b 618 -868 608 -943 618 -907 b 592 -770 618 -829 609 -798 b 514 -711 575 -743 549 -724 b 566 -674 537 -700 554 -688 b 596 -576 586 -649 596 -616 b 566 -474 596 -536 586 -503 z m 348 -518 b 428 -528 380 -518 408 -521 b 464 -590 452 -539 464 -559 b 436 -649 464 -619 455 -638 b 366 -665 418 -661 395 -665 l 203 -665 l 203 -518 z m 367 -776 b 435 -788 396 -776 419 -780 b 477 -858 464 -801 477 -824 b 433 -942 477 -900 462 -927 b 366 -953 418 -949 395 -953 l 203 -953 l 203 -776 z',\n },\n timeSig0: {\n x_min: 15,\n x_max: 389,\n y_min: -254,\n y_max: 255,\n ha: 509,\n o: 'm 291 367 b 22 0 138 367 22 209 b 291 -366 22 -209 138 -366 b 560 0 444 -366 560 -209 b 291 367 560 209 444 367 z m 376 -200 b 291 -308 376 -252 353 -308 b 206 -200 229 -308 206 -252 l 206 200 b 291 308 206 252 229 308 b 376 200 353 308 376 252 z',\n },\n timeSig1: {\n x_min: 15,\n x_max: 336,\n y_min: -243,\n y_max: 245,\n ha: 488,\n o: 'm 359 -284 l 359 336 b 341 353 359 346 351 353 l 199 353 b 190 350 196 353 193 351 b 184 344 189 348 186 346 l 23 65 b 22 56 22 62 22 59 b 30 42 22 50 26 45 l 58 26 b 66 23 60 24 63 23 b 81 32 72 23 78 27 l 183 207 l 183 -284 l 73 -284 b 56 -301 63 -284 56 -291 l 56 -333 b 73 -350 56 -343 63 -350 l 468 -350 b 484 -333 478 -350 484 -343 l 484 -301 b 468 -284 484 -291 478 -284 z',\n },\n timeSig2: {\n x_min: 15,\n x_max: 377,\n y_min: -243,\n y_max: 245,\n ha: 488,\n o: 'm 492 -56 b 382 -192 481 -88 452 -192 b 190 -134 288 -192 268 -134 b 153 -138 179 -134 167 -135 b 341 -36 153 -138 189 -84 b 533 173 494 12 533 86 b 288 353 533 233 505 353 b 30 156 71 353 30 222 b 138 49 30 96 79 49 b 245 156 197 49 245 96 b 179 255 245 196 216 240 b 168 271 174 256 168 264 b 202 297 168 279 176 289 b 251 304 209 300 229 304 b 311 288 271 304 294 300 b 348 180 338 271 348 245 b 65 -150 348 12 148 -24 b 22 -278 65 -150 22 -210 b 73 -350 22 -346 56 -350 b 121 -305 96 -350 121 -331 b 117 -287 121 -300 120 -294 b 105 -239 108 -266 105 -251 b 107 -226 105 -235 105 -230 b 154 -203 108 -217 120 -203 b 238 -289 196 -203 212 -252 b 350 -350 264 -327 304 -350 b 484 -264 396 -350 458 -317 b 543 -63 510 -210 543 -102 b 518 -36 543 -45 531 -36 b 492 -56 508 -36 498 -42 z',\n },\n timeSig3: {\n x_min: 14.984905204685425,\n x_max: 364,\n y_min: -244,\n y_max: 244,\n ha: 488,\n o: 'm 392 23 b 514 168 507 68 514 143 b 514 176 514 171 514 174 b 262 351 514 189 510 351 b 22 176 14 351 22 176 l 23 176 l 22 173 b 115 81 22 121 63 81 b 207 173 167 81 207 121 b 135 264 207 215 176 255 b 140 268 137 265 138 266 b 215 289 160 282 187 289 b 340 176 275 289 340 253 b 255 69 340 85 272 72 b 140 60 238 66 157 60 b 121 40 122 60 121 40 l 121 12 b 140 -6 121 12 124 -4 b 243 -14 164 -7 197 -7 b 340 -167 307 -23 340 -66 b 215 -289 340 -264 275 -289 b 121 -266 174 -289 137 -278 b 207 -174 168 -264 207 -222 b 115 -81 207 -122 167 -81 b 22 -174 63 -81 22 -122 b 22 -180 22 -174 22 -177 b 78 -298 22 -199 26 -251 b 236 -351 134 -350 204 -351 b 524 -147 374 -351 524 -304 b 389 23 524 -42 452 3 z',\n },\n timeSig4: {\n x_min: 14,\n x_max: 442,\n y_min: -248,\n y_max: 249,\n ha: 497,\n o: 'm 300 -183 l 300 -289 l 180 -289 b 160 -310 170 -289 160 -298 l 160 -337 b 180 -357 160 -348 170 -357 l 616 -357 b 636 -337 628 -357 636 -348 l 636 -310 b 616 -289 636 -298 628 -289 l 487 -289 l 487 -183 l 616 -183 b 636 -161 628 -183 636 -173 l 636 -134 b 616 -114 636 -124 628 -114 l 487 -114 l 487 115 b 477 134 487 124 482 131 l 459 143 b 452 144 456 144 455 144 b 449 144 451 144 451 144 b 436 140 445 144 439 143 l 305 20 b 300 4 301 16 300 10 l 300 -114 l 132 -114 b 464 287 132 -114 294 59 b 471 307 469 294 471 301 b 467 321 471 314 468 320 l 435 353 b 420 359 431 356 426 359 b 206 359 412 359 217 359 b 187 341 196 359 189 350 b 143 118 187 341 180 235 b 24 -124 105 1 62 -71 b 20 -140 24 -124 20 -131 b 22 -148 20 -143 20 -145 b 36 -174 26 -158 36 -174 b 52 -183 36 -174 39 -183 z',\n },\n timeSig5: {\n x_min: 15,\n x_max: 362,\n y_min: -244,\n y_max: 246,\n ha: 490,\n o: 'm 39 314 b 46 170 39 314 46 245 b 46 151 46 164 46 157 b 39 -24 45 71 39 -24 b 39 -29 39 -24 39 -26 b 49 -48 39 -35 40 -46 b 99 -59 62 -50 92 -58 b 107 -59 102 -59 104 -59 b 121 -49 112 -59 118 -58 b 235 45 128 -30 144 45 b 356 -112 337 45 356 -43 b 238 -292 356 -184 333 -288 b 226 -292 233 -292 230 -292 b 166 -282 193 -292 174 -288 b 158 -274 161 -281 158 -276 b 164 -264 158 -269 160 -266 b 222 -168 177 -255 222 -239 b 117 -71 222 -98 173 -71 b 22 -171 60 -71 22 -122 b 111 -318 22 -220 36 -275 b 252 -351 147 -338 199 -351 b 456 -275 325 -351 405 -328 b 521 -109 503 -228 521 -167 b 433 79 521 -32 487 43 b 271 124 397 104 336 124 b 131 84 223 124 173 112 b 125 82 130 82 127 82 b 115 92 120 82 115 86 l 115 183 b 131 199 115 192 122 199 l 132 199 b 252 192 154 197 202 192 b 372 209 295 192 340 196 b 474 320 439 236 462 289 b 477 334 475 324 477 330 b 451 354 477 346 469 354 b 431 351 445 354 439 353 b 252 328 360 334 305 328 b 88 343 200 328 150 334 b 71 344 88 343 81 344 b 39 320 56 344 39 340 b 39 314 39 317 39 315 z',\n },\n timeSig6: {\n x_min: 15,\n x_max: 387,\n y_min: -244,\n y_max: 245,\n ha: 489,\n o: 'm 356 69 b 216 22 268 69 236 43 b 209 98 212 52 209 75 b 216 167 209 121 212 141 b 338 287 225 220 261 287 b 410 259 374 287 396 275 b 356 174 380 246 356 207 b 448 82 356 122 396 82 b 541 174 500 82 541 122 l 541 177 b 541 179 541 177 541 177 b 533 225 541 192 539 213 b 310 353 514 276 454 353 b 58 163 180 353 86 229 b 22 -23 43 128 22 58 b 131 -285 22 -111 46 -210 b 318 -351 215 -348 268 -351 b 557 -125 369 -351 557 -292 b 356 69 557 16 446 69 z m 302 -291 b 216 -145 255 -291 216 -226 b 302 1 216 -65 255 1 b 390 -145 350 1 390 -65 b 302 -291 390 -226 350 -291 z',\n },\n timeSig7: {\n x_min: 15,\n x_max: 366,\n y_min: -250,\n y_max: 251,\n ha: 501,\n o: 'm 233 -177 b 160 -336 202 -225 160 -282 b 180 -360 160 -351 164 -360 b 264 -351 203 -360 217 -354 b 278 -350 268 -351 274 -350 b 369 -360 320 -350 359 -360 b 405 -331 382 -360 406 -344 b 405 -327 405 -330 405 -328 b 396 -226 405 -324 396 -279 b 408 -130 396 -196 399 -161 b 503 151 425 -62 471 60 b 527 308 518 196 527 275 b 526 341 527 321 527 327 b 510 361 524 356 518 361 b 484 361 503 361 491 361 b 467 341 477 361 467 356 b 406 228 467 327 464 228 b 235 351 346 228 328 351 b 86 252 145 351 91 261 l 86 321 b 71 337 86 330 79 337 l 37 337 b 22 321 29 337 22 330 l 22 55 b 37 39 22 46 29 39 l 71 39 b 86 55 79 39 86 46 l 86 101 b 158 179 86 134 108 179 b 328 124 209 179 213 124 b 425 143 357 124 410 128 b 233 -177 413 120 266 -130 z',\n },\n timeSig8: {\n x_min: 15,\n x_max: 393,\n y_min: -248,\n y_max: 246,\n ha: 494,\n o: 'm 467 26 b 547 166 514 62 547 108 b 294 354 547 269 433 354 b 40 166 154 354 40 269 b 122 13 40 108 55 56 b 22 -147 58 -24 22 -78 b 294 -357 22 -264 144 -357 b 566 -147 444 -357 566 -264 b 467 26 566 -78 541 -13 z m 294 -276 b 122 -145 202 -276 122 -226 b 197 -26 122 -49 197 -26 b 435 -187 295 -59 435 -108 b 294 -276 435 -226 384 -276 z m 386 65 b 180 209 288 96 180 144 b 294 288 180 265 232 288 b 444 180 383 288 444 246 b 386 65 444 111 412 78 z',\n },\n timeSig9: {\n x_min: 15,\n x_max: 387,\n y_min: -244,\n y_max: 245,\n ha: 489,\n o: 'm 223 -68 b 363 -20 311 -68 343 -42 b 370 -96 367 -50 370 -73 b 363 -166 370 -120 367 -140 b 240 -285 354 -219 318 -285 b 168 -258 204 -285 183 -274 b 223 -173 199 -245 223 -206 b 131 -81 223 -121 183 -81 b 37 -173 79 -81 37 -121 l 37 -176 b 37 -177 37 -176 37 -176 b 46 -223 37 -190 40 -212 b 269 -351 65 -275 125 -351 b 521 -161 399 -351 492 -228 b 557 24 536 -127 557 -56 b 448 287 557 112 533 212 b 261 353 364 350 311 353 b 22 127 210 353 22 294 b 223 -68 22 -14 132 -68 z m 276 294 b 363 147 324 294 363 228 b 276 1 363 66 324 1 b 189 147 229 1 189 66 b 276 294 189 228 229 294 z',\n },\n timeSigCommon: {\n x_min: 0,\n x_max: 463,\n y_min: -256,\n y_max: 258,\n ha: 514,\n o: 'm 468 258 b 406 147 432 235 406 193 b 408 130 406 141 406 135 b 521 17 415 71 462 24 b 537 17 526 17 533 17 b 667 147 609 17 667 75 b 667 156 667 147 667 151 b 664 177 667 161 665 171 b 350 372 651 239 595 372 b 0 17 36 372 0 111 b 382 -369 0 -154 22 -369 b 641 -131 524 -369 635 -285 b 629 -120 641 -124 636 -120 l 611 -120 b 599 -131 605 -120 599 -125 b 382 -323 593 -251 508 -323 b 196 -128 256 -323 196 -255 l 196 147 b 356 320 196 228 228 320 b 469 271 423 320 454 295 b 471 264 471 268 471 266 b 468 258 471 262 471 259 z',\n },\n timeSigCutCommon: {\n x_min: 0,\n x_max: 463,\n y_min: -376,\n y_max: 388,\n ha: 764,\n o: 'm 611 -120 b 599 -131 605 -120 599 -125 b 382 -323 593 -251 508 -323 b 369 -323 377 -323 373 -323 l 369 320 b 469 269 428 317 455 292 b 471 264 471 266 471 265 b 468 258 471 261 471 259 b 406 147 432 235 406 193 b 408 130 406 141 406 135 b 523 17 415 71 464 24 b 537 17 527 17 533 17 b 667 147 609 17 667 75 b 667 156 667 147 667 151 b 664 177 667 161 665 171 b 369 370 651 236 598 364 l 369 543 b 353 559 369 552 361 559 l 314 559 b 298 543 305 559 298 552 l 298 369 b 0 17 32 341 0 105 b 298 -364 0 -140 17 -334 l 298 -526 b 314 -541 298 -534 305 -541 l 353 -541 b 369 -526 361 -541 369 -534 l 369 -369 b 382 -369 373 -369 377 -369 b 641 -131 524 -369 635 -285 b 629 -120 641 -124 636 -120 z m 196 147 b 298 312 196 215 216 289 l 298 -310 b 196 -128 229 -285 196 -223 z',\n },\n timeSigPlus: {\n x_min: 0,\n x_max: 408,\n y_min: -204,\n y_max: 204,\n ha: 408,\n o: 'm 327 33 l 327 275 b 308 294 327 285 318 294 l 279 294 b 261 275 269 294 261 285 l 261 33 l 19 33 b 0 14 9 33 0 24 l 0 -13 b 19 -33 0 -23 9 -33 l 261 -33 l 261 -274 b 279 -294 261 -284 269 -294 l 308 -294 b 327 -274 318 -294 327 -284 l 327 -33 l 567 -33 b 588 -13 577 -33 588 -23 l 588 14 b 567 33 588 24 577 33 z',\n },\n noteheadDoubleWhole: {\n x_min: 0,\n x_max: 538,\n y_min: -178,\n y_max: 179,\n ha: 357,\n o: 'm 33 258 b 20 258 27 258 26 258 b 0 238 9 258 0 249 b 0 -236 0 226 0 -226 b 20 -256 0 -246 9 -256 b 33 -256 26 -256 27 -256 b 53 -236 43 -256 53 -245 b 53 238 53 -228 53 226 b 33 258 53 249 45 258 z m 649 258 b 636 258 644 258 642 258 b 616 238 625 258 616 249 b 616 125 616 235 616 187 b 389 196 573 167 500 196 b 160 125 276 196 203 167 b 160 238 160 187 160 235 b 140 258 160 249 151 258 b 127 258 134 258 132 258 b 107 238 115 258 107 249 b 107 -236 107 226 107 -226 b 127 -256 107 -246 115 -256 b 140 -256 132 -256 134 -256 b 160 -236 150 -256 160 -245 b 160 -122 160 -233 160 -186 b 389 -194 203 -166 276 -194 b 616 -122 500 -194 573 -166 b 616 -236 616 -186 616 -233 b 636 -256 616 -246 625 -256 b 649 -256 642 -256 644 -256 b 670 -236 660 -256 670 -245 b 670 238 670 -228 670 226 b 649 258 670 249 661 258 z m 462 -140 b 400 -148 445 -144 422 -148 b 314 -101 360 -148 333 -135 b 268 68 295 -65 269 29 b 268 76 268 71 268 73 b 314 141 268 109 282 130 b 377 150 331 145 354 150 b 462 102 416 150 442 140 b 510 -66 482 63 510 -29 b 462 -140 510 -104 497 -128 z m 755 258 b 742 258 749 258 747 258 b 721 238 730 258 721 249 b 721 -236 721 226 721 -226 b 742 -256 721 -246 730 -256 b 755 -256 747 -256 749 -256 b 775 -236 765 -256 775 -245 b 775 238 775 -228 775 226 b 755 258 775 249 766 258 z',\n },\n noteheadWhole: {\n x_min: 0,\n x_max: 373,\n y_min: -134,\n y_max: 136,\n ha: 270,\n o: 'm 269 196 b 0 1 71 196 0 95 b 269 -193 0 -92 71 -193 b 537 1 468 -193 537 -92 b 269 196 537 95 468 196 z m 343 -138 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 148 68 176 -63 150 29 b 194 141 145 107 160 130 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 389 -65 363 63 389 -29 b 343 -138 389 -102 377 -128 z',\n },\n noteheadHalf: {\n x_min: 0,\n x_max: 325,\n y_min: -133,\n y_max: 132,\n ha: 265,\n o: 'm 307 190 b 0 -60 167 190 0 73 b 161 -192 0 -122 45 -192 b 468 58 311 -192 468 -69 b 307 190 468 143 396 190 z m 268 -63 b 108 -124 264 -66 158 -124 b 50 -72 60 -124 50 -85 b 200 62 50 -12 194 59 b 360 122 206 65 308 122 b 418 71 395 122 418 102 b 268 -63 418 9 272 -60 z',\n },\n noteheadBlack: {\n x_min: 0,\n x_max: 325,\n y_min: -133,\n y_max: 132,\n ha: 265,\n o: 'm 0 -60 b 161 -192 0 -122 45 -192 b 468 58 311 -192 468 -69 b 307 190 468 143 396 190 b 0 -60 167 190 0 72 z',\n },\n noteheadXBlack: {\n x_min: 0,\n x_max: 325,\n y_min: -132,\n y_max: 132,\n ha: 264,\n o: 'm 461 138 b 468 153 465 141 468 147 l 468 154 b 462 167 468 160 465 164 l 445 184 b 431 190 441 187 436 190 b 418 186 426 190 420 189 l 235 40 l 50 186 b 37 190 48 189 42 190 b 24 184 32 190 29 187 l 6 167 b 0 153 3 164 0 158 b 7 138 0 147 3 141 l 183 0 l 7 -138 b 0 -153 3 -141 0 -147 b 6 -166 0 -157 3 -163 l 23 -184 b 37 -190 26 -189 32 -190 b 50 -186 42 -190 48 -189 l 235 -40 l 418 -186 b 431 -190 420 -189 426 -190 b 445 -184 436 -190 442 -189 l 462 -166 b 468 -153 465 -163 468 -157 b 461 -138 468 -147 465 -141 l 285 0 z',\n },\n noteheadCircleX: {\n x_min: 0,\n x_max: 325,\n y_min: -162,\n y_max: 163,\n ha: 325,\n o: 'm 265 0 l 395 105 b 426 0 415 75 426 39 b 387 -115 426 -43 412 -84 z m 233 -27 l 360 -145 b 235 -192 327 -174 282 -192 b 99 -137 183 -192 134 -171 z m 202 1 l 73 -105 b 42 0 53 -75 42 -39 b 81 115 42 43 56 84 z m 235 29 l 108 145 b 233 193 141 174 186 193 b 369 138 285 193 334 173 z m 233 235 b 0 0 104 235 0 130 b 233 -233 0 -130 104 -233 b 468 0 363 -233 468 -130 b 233 235 468 130 363 235 z',\n },\n noteheadDoubleWholeSquare: {\n x_min: 0,\n x_max: 432,\n y_min: -179,\n y_max: 177,\n ha: 356,\n o: 'm 590 255 b 570 235 579 255 570 246 l 570 203 l 53 203 l 53 235 b 33 255 53 246 45 255 l 20 255 b 0 235 9 255 0 246 l 0 -230 b 20 -251 0 -242 9 -251 l 33 -251 b 53 -230 45 -251 53 -242 l 53 -200 l 570 -200 l 570 -238 b 590 -258 570 -249 579 -258 l 603 -258 b 622 -238 615 -258 622 -249 l 622 235 b 603 255 622 246 615 255 z m 570 -101 l 53 -101 l 53 105 l 570 105 z',\n },\n noteheadSquareWhite: {\n x_min: 0,\n x_max: 310,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 395 128 l 395 -128 l 52 -128 l 52 128 z m 446 180 l 0 180 l 0 -180 l 446 -180 z',\n },\n noteheadSquareBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 446 180 l 0 180 l 0 -180 l 446 -180 z',\n },\n noteheadTriangleUpBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -136,\n y_max: 122,\n ha: 258,\n o: 'm 223 176 l 0 -196 l 446 -196 z',\n },\n noteheadSlashedDoubleWhole1: {\n x_min: -66,\n x_max: 456,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 652 298 b 638 305 649 304 644 305 b 626 301 634 305 629 304 l 560 248 b 543 256 557 253 550 256 b 530 256 537 256 536 256 b 510 236 518 256 510 248 b 510 204 510 235 510 223 l 455 161 b 281 194 413 181 356 194 b 53 124 168 194 96 166 b 53 236 53 186 53 233 b 29 256 53 253 42 256 b 20 256 26 256 23 256 b 0 236 9 256 0 248 b 0 -204 0 228 0 -98 l -88 -272 b -95 -288 -92 -276 -95 -282 b -91 -300 -95 -291 -94 -295 b -76 -307 -86 -304 -82 -307 b -65 -302 -72 -307 -68 -305 l 3 -248 b 20 -258 6 -253 12 -258 b 53 -238 33 -258 52 -255 b 53 -206 53 -236 53 -225 l 107 -161 b 281 -196 148 -183 206 -196 b 510 -124 393 -196 465 -166 b 510 -238 510 -187 510 -235 b 530 -258 510 -248 518 -258 b 563 -238 543 -258 563 -255 b 563 204 563 -229 563 98 l 649 272 b 657 288 655 276 657 282 b 652 298 657 291 655 295 z m 160 75 b 269 148 160 138 219 148 b 356 101 310 148 334 140 b 363 85 357 96 360 91 l 189 -56 b 160 66 174 -14 161 40 b 160 75 160 69 160 72 z m 53 -163 b 53 -124 53 -151 53 -138 b 76 -144 60 -131 68 -138 z m 402 -68 b 292 -148 402 -138 351 -148 b 207 -101 252 -150 226 -137 b 199 -84 204 -96 202 -91 l 373 56 b 402 -68 389 13 402 -40 z m 510 124 b 485 144 503 131 494 137 l 510 163 b 510 124 510 151 510 137 z',\n },\n noteheadSlashedWhole1: {\n x_min: -75,\n x_max: 448,\n y_min: -211,\n y_max: 214,\n ha: 425,\n o: 'm 641 301 b 625 308 636 305 631 308 b 613 304 621 307 618 307 l 439 160 b 269 196 399 181 343 196 b 0 1 71 196 0 95 b 69 -138 0 -49 20 -101 l -101 -271 b -108 -287 -105 -275 -108 -281 b -104 -298 -107 -291 -107 -294 b -88 -304 -99 -302 -94 -304 b -76 -301 -85 -304 -81 -304 l 98 -157 b 269 -193 138 -179 194 -193 b 537 1 468 -193 537 -92 b 468 141 537 52 517 104 l 638 274 b 645 289 642 278 645 284 b 641 301 644 292 644 297 z m 148 68 b 148 78 148 72 148 75 b 194 141 148 111 163 131 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 350 86 346 98 348 92 l 177 -55 b 148 68 163 -12 150 42 z m 389 -65 b 343 -138 389 -102 377 -128 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 187 -82 192 -95 190 -89 l 279 -6 l 361 58 b 389 -65 376 16 389 -39 z',\n },\n noteheadSlashedHalf1: {\n x_min: -98,\n x_max: 424,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 606 298 b 592 305 602 302 598 305 b 580 301 588 305 583 304 l 412 163 b 307 190 383 180 347 190 b 153 148 258 190 204 176 b 0 -60 58 98 0 13 b 14 -120 0 -81 4 -101 b 32 -143 20 -128 26 -135 l -134 -274 b -141 -288 -138 -276 -141 -282 b -137 -300 -141 -292 -140 -297 b -122 -307 -134 -304 -128 -307 b -111 -302 -118 -307 -114 -305 l 56 -164 b 161 -192 85 -181 121 -192 b 315 -151 210 -192 264 -179 b 468 58 410 -101 468 -16 b 454 117 468 78 464 98 b 436 141 449 125 444 134 l 603 272 b 611 287 608 275 611 281 b 606 298 611 291 609 295 z m 56 -98 b 49 -73 52 -91 49 -82 b 75 -23 49 -58 59 -39 b 199 60 99 1 147 32 b 337 118 251 89 302 111 b 359 121 344 120 351 121 b 361 121 360 121 360 121 l 225 9 l 69 -114 b 56 -98 65 -109 60 -104 z m 410 94 b 416 69 415 86 416 78 b 392 19 416 53 408 36 b 266 -65 367 -6 318 -36 b 128 -122 215 -94 163 -115 b 107 -125 121 -124 114 -125 b 104 -125 107 -125 105 -125 l 245 -9 l 396 111 b 410 94 402 107 408 101 z',\n },\n noteheadSlashedBlack1: {\n x_min: -98,\n x_max: 424,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 606 298 b 592 305 602 302 598 305 b 580 301 588 305 583 304 l 412 161 b 307 190 383 180 347 190 b 0 -60 167 190 0 72 b 32 -144 0 -89 10 -120 l -134 -274 b -141 -288 -138 -278 -141 -284 b -137 -301 -141 -292 -140 -297 b -122 -307 -134 -305 -128 -307 b -111 -304 -118 -307 -114 -307 l 56 -164 b 161 -192 82 -181 117 -192 b 468 58 311 -192 468 -71 b 436 141 468 91 456 120 l 603 271 b 611 285 608 275 611 281 b 606 298 611 289 609 294 z',\n },\n noteheadSlashedDoubleWhole2: {\n x_min: -66,\n x_max: 456,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 563 -204 b 563 236 563 -98 563 228 b 543 256 563 249 554 256 b 530 256 537 256 536 256 b 510 236 518 256 510 248 b 510 124 510 233 510 187 b 281 194 467 166 393 194 b 107 161 207 194 150 181 l 53 204 b 53 236 53 223 53 235 b 33 256 53 249 45 256 b 20 256 27 256 26 256 b 3 246 12 256 6 253 l -63 301 b -76 305 -68 304 -72 305 b -91 298 -81 305 -86 304 b -95 287 -94 295 -95 291 b -88 272 -95 281 -92 276 l 0 204 b 0 -238 0 98 0 -229 b 20 -258 0 -248 9 -258 b 33 -258 26 -258 27 -258 b 53 -238 43 -258 53 -246 b 53 -124 53 -235 53 -187 b 281 -196 96 -166 170 -196 b 456 -161 356 -196 413 -183 l 510 -206 b 510 -238 510 -225 510 -236 b 530 -258 510 -248 518 -258 b 543 -258 536 -258 537 -258 b 560 -246 549 -258 556 -252 l 626 -302 b 638 -307 631 -305 634 -307 b 654 -300 645 -307 649 -304 b 657 -288 655 -295 657 -292 b 651 -272 657 -282 655 -276 z m 207 140 b 269 148 225 144 248 148 b 356 101 310 148 336 140 b 402 -68 376 62 402 -30 b 402 -78 402 -71 402 -75 l 292 9 l 168 109 b 207 140 176 124 189 134 z m 78 144 b 53 124 69 137 60 131 b 53 163 53 137 53 150 z m 356 -141 b 294 -148 338 -145 315 -148 b 207 -101 253 -148 226 -137 b 161 66 189 -66 163 27 b 160 72 161 69 160 71 b 161 78 160 75 160 76 l 271 -9 l 395 -109 b 356 -141 387 -124 374 -134 z m 485 -144 b 510 -124 494 -138 503 -131 b 510 -163 510 -138 510 -151 z',\n },\n noteheadSlashedWhole2: {\n x_min: -75,\n x_max: 448,\n y_min: -212,\n y_max: 214,\n ha: 426,\n o: 'm 468 -138 b 537 1 517 -101 537 -49 b 269 196 537 95 468 196 b 98 160 196 196 140 181 l -76 304 b -88 308 -81 307 -84 307 b -104 301 -94 308 -99 305 b -108 289 -107 297 -107 292 b -101 274 -108 284 -105 278 l 69 141 b 0 1 20 104 0 52 b 269 -193 0 -92 71 -193 b 441 -157 343 -193 399 -179 l 613 -301 b 625 -305 618 -304 622 -305 b 641 -298 631 -305 636 -302 b 645 -287 644 -294 644 -291 b 638 -271 645 -281 642 -275 z m 194 141 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 389 -65 363 63 389 -29 b 389 -76 389 -69 389 -73 l 279 10 l 156 112 b 194 141 163 125 176 135 z m 343 -138 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 148 68 176 -63 150 29 b 148 76 148 71 148 73 b 148 81 148 78 148 79 l 258 -6 l 382 -108 b 343 -138 374 -122 361 -132 z',\n },\n noteheadSlashedHalf2: {\n x_min: -98,\n x_max: 424,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 386 -102 b 468 58 438 -55 468 4 b 454 117 468 78 464 98 b 307 190 428 164 373 190 b 153 148 258 190 204 176 b 108 120 137 140 122 130 l -111 301 b -122 305 -114 304 -118 305 b -137 298 -128 305 -134 302 b -141 287 -140 295 -141 291 b -134 272 -141 281 -138 275 l 85 101 b 0 -60 32 53 0 -7 b 14 -120 0 -81 4 -101 b 161 -192 40 -167 95 -192 b 315 -151 210 -192 264 -179 b 361 -122 333 -143 347 -132 l 580 -302 b 592 -307 583 -305 588 -307 b 606 -300 598 -307 602 -304 b 611 -288 609 -297 611 -292 b 603 -274 611 -282 608 -276 z m 199 60 b 337 118 251 89 302 111 b 359 121 344 120 351 121 b 410 94 382 121 400 112 b 416 69 415 86 416 78 b 392 19 416 53 408 36 b 308 -42 374 0 343 -20 l 245 7 l 189 55 b 199 60 192 56 196 58 z m 266 -65 b 128 -122 215 -94 163 -115 b 107 -125 121 -124 114 -125 b 56 -98 84 -125 66 -117 b 49 -73 52 -91 49 -82 b 75 -23 49 -58 59 -39 b 163 39 94 -4 125 17 l 225 -9 l 282 -56 b 266 -65 276 -59 272 -62 z',\n },\n noteheadSlashedBlack2: {\n x_min: -98.44444444444443,\n x_max: 424,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 384 -102 b 468 58 435 -58 468 0 b 307 190 468 143 396 190 b 108 121 239 190 167 163 l -111 301 b -124 305 -115 304 -120 305 b -138 298 -128 305 -134 302 b -141 289 -140 295 -141 292 b -141 287 -141 288 -143 288 b -135 272 -141 281 -140 275 l 84 101 b 0 -60 35 56 0 0 b 161 -192 0 -122 45 -192 b 361 -122 232 -192 304 -164 l 579 -302 b 590 -307 583 -305 588 -307 b 606 -300 596 -307 602 -304 b 611 -288 609 -297 611 -292 b 603 -274 609 -282 608 -276 z',\n },\n noteheadDiamondDoubleWhole: {\n x_min: 0,\n x_max: 373,\n y_min: -178,\n y_max: 179,\n ha: 357,\n o: 'm 504 258 b 484 238 494 258 484 248 l 484 46 b 282 187 415 95 285 186 b 268 192 279 190 275 192 b 255 187 262 192 258 190 l 52 45 l 52 238 b 33 258 52 248 43 258 l 20 258 b 0 238 9 258 0 248 l 0 -236 b 20 -256 0 -248 9 -256 l 33 -256 b 52 -236 43 -256 52 -248 l 52 -45 l 249 -181 b 268 -190 258 -189 264 -190 b 282 -186 274 -190 279 -189 b 484 -43 285 -184 413 -94 l 484 -236 b 504 -256 484 -248 494 -256 l 517 -256 b 537 -236 528 -256 537 -248 l 537 238 b 517 258 537 248 528 258 z m 220 -115 l 102 -33 l 317 117 l 435 35 z',\n },\n noteheadDiamondWhole: {\n x_min: 0,\n x_max: 373,\n y_min: -133,\n y_max: 132,\n ha: 265,\n o: 'm 282 -187 b 530 -13 285 -186 530 -13 b 537 0 534 -10 537 -6 b 530 13 537 4 534 10 b 282 186 530 13 287 183 b 268 190 279 189 275 190 b 255 186 262 190 258 189 l 7 12 b 0 -1 3 9 0 4 b 4 -13 0 -6 1 -10 l 249 -183 b 268 -192 258 -190 264 -192 b 282 -187 274 -192 279 -190 z m 220 -117 l 102 -35 l 317 115 l 435 33 z',\n },\n noteheadDiamondHalf: {\n x_min: 0,\n x_max: 335,\n y_min: -132,\n y_max: 133,\n ha: 265,\n o: 'm 475 -13 b 482 0 480 -10 482 -6 b 475 13 482 4 480 10 l 253 187 b 240 192 251 190 246 192 b 229 187 236 192 232 190 l 7 13 b 0 0 3 10 0 6 b 7 -13 0 -4 3 -10 l 229 -186 b 240 -190 232 -189 236 -190 b 253 -186 246 -190 251 -189 z m 284 -115 l 92 33 l 199 117 l 390 -33 z',\n },\n noteheadDiamondBlack: {\n x_min: 0,\n x_max: 335,\n y_min: -132,\n y_max: 133,\n ha: 265,\n o: 'm 475 -14 b 482 -1 480 -10 482 -6 b 475 13 482 4 480 10 l 253 187 b 240 192 251 190 246 192 b 229 187 236 192 232 190 l 7 13 b 0 0 3 10 0 4 b 7 -14 0 -6 3 -10 l 229 -186 b 240 -190 232 -189 236 -190 b 253 -186 246 -190 251 -189 z',\n },\n noteheadParenthesisRight: {\n x_min: 0,\n x_max: 75,\n y_min: -209.4142135623731,\n y_max: 212,\n ha: 421.4142135623731,\n o: 'm 10 305 b 4 302 7 304 6 304 b 0 295 1 301 0 298 b 1 289 0 294 0 292 b 68 -10 1 288 68 160 b 1 -288 68 -95 50 -192 b 0 -292 0 -289 0 -291 b 4 -300 0 -295 1 -298 b 12 -301 7 -301 9 -302 b 17 -298 14 -301 16 -300 b 108 0 22 -292 108 -174 b 17 301 108 174 22 295 b 10 305 16 304 13 305 z',\n },\n noteheadParenthesisLeft: {\n x_min: 0,\n x_max: 75,\n y_min: -212,\n y_max: 209.4142135623731,\n ha: 421.4142135623731,\n o: 'm 98 -305 b 104 -302 101 -304 102 -304 b 108 -295 107 -301 108 -298 b 107 -289 108 -294 108 -292 b 40 10 107 -288 40 -160 b 107 288 40 95 58 192 b 108 292 108 289 108 291 b 104 300 108 295 107 298 b 96 301 101 301 99 302 b 91 298 94 301 92 300 b 0 0 86 292 0 174 b 91 -301 0 -174 86 -295 b 98 -305 92 -304 95 -305 z',\n },\n noteheadMoonBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 0 180 l 0 0 b 223 -180 0 -99 99 -180 b 446 0 347 -180 446 -99 l 446 180 z',\n },\n noteheadTriangleLeftBlack: {\n x_min: 0,\n x_max: 339,\n y_min: -136,\n y_max: 122,\n ha: 258,\n o: 'm 0 176 l 0 -196 l 488 -196 z',\n },\n noteheadTriangleRightBlack: {\n x_min: 0,\n x_max: 339,\n y_min: -136,\n y_max: 122,\n ha: 258,\n o: 'm 488 176 l 0 -196 l 488 -196 z',\n },\n noteheadTriangleRoundDownBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -136,\n y_max: 122,\n ha: 258,\n o: 'm 226 -196 l 446 63 b 226 176 446 63 384 176 b 0 63 68 176 0 63 z',\n },\n augmentationDot: {\n x_min: 0,\n x_max: 100,\n y_min: -50,\n y_max: 50,\n ha: 100,\n o: 'm 0 0 b 72 -72 0 -40 32 -72 b 144 0 112 -72 144 -40 b 72 72 144 40 112 72 b 0 0 32 72 0 40 z',\n },\n tremolo1: {\n x_min: 0,\n x_max: 290,\n y_min: -93,\n y_max: 96,\n ha: 189,\n o: 'm 0 48 l 0 -134 l 418 -43 l 418 138 z',\n },\n flag8thUp: {\n x_min: 0,\n x_max: 289.04376776750354,\n y_min: -817,\n y_max: 12,\n ha: 829,\n o: 'm 0 -327 b 12 -343 0 -331 1 -338 b 291 -600 73 -363 197 -441 b 359 -827 317 -645 359 -707 b 294 -1140 359 -930 331 -1037 b 289 -1162 291 -1149 288 -1156 b 297 -1175 289 -1168 291 -1172 b 304 -1176 300 -1176 302 -1176 b 327 -1161 314 -1176 321 -1171 b 416 -798 395 -1041 418 -888 b 416 -780 416 -791 416 -786 b 302 -458 409 -595 302 -458 b 131 -220 307 -458 170 -281 b 50 -50 78 -138 53 -56 b 36 6 49 -46 36 6 b 19 17 35 12 27 17 b 0 -1 9 17 0 9 z',\n },\n flag8thDown: {\n x_min: 0,\n x_max: 309,\n y_min: -12,\n y_max: 817,\n ha: 829,\n o: 'm 0 1 b 19 -17 0 -9 9 -17 b 36 -6 26 -17 35 -12 b 50 50 36 -4 49 46 b 117 196 52 56 65 111 b 331 458 173 289 259 357 b 445 780 402 559 445 654 b 338 1161 445 912 415 1021 b 317 1176 334 1171 325 1176 b 310 1175 314 1176 311 1176 b 300 1158 302 1172 300 1166 b 304 1140 300 1153 301 1146 b 384 827 361 1007 384 930 b 317 600 384 707 343 645 b 12 343 223 441 72 363 b 0 327 1 338 0 331 z',\n },\n flag16thUp: {\n x_min: 0,\n x_max: 279,\n y_min: -820,\n y_max: 12,\n ha: 832,\n o: 'm 301 -681 b 148 -514 262 -631 219 -585 b 56 -372 92 -458 66 -409 b 52 -343 55 -364 53 -354 b 271 -510 125 -343 219 -442 b 340 -696 327 -583 340 -641 b 337 -739 340 -710 338 -724 b 301 -681 325 -716 312 -697 z m 0 -549 b 22 -563 0 -553 12 -559 b 258 -776 59 -576 171 -648 b 318 -950 307 -850 318 -901 b 317 -975 318 -959 318 -966 b 285 -1140 317 -1009 307 -1083 b 279 -1164 284 -1148 279 -1156 b 289 -1179 279 -1169 282 -1175 b 297 -1181 292 -1181 294 -1181 b 318 -1161 307 -1181 312 -1169 b 382 -962 344 -1120 382 -1043 b 374 -855 382 -920 379 -886 b 402 -678 389 -802 402 -749 b 333 -471 402 -603 382 -536 b 137 -228 265 -382 192 -307 b 42 0 82 -148 42 0 b 22 17 39 10 37 17 b 0 0 4 17 0 10 z',\n },\n flag16thDown: {\n x_min: 0,\n x_max: 309,\n y_min: -26,\n y_max: 803,\n ha: 829,\n o: 'm 53 346 b 56 363 55 353 56 359 b 163 517 66 399 78 452 b 384 732 246 582 346 662 b 317 503 382 621 354 552 b 53 346 229 395 122 364 z m 0 -14 b 22 -37 0 -26 10 -37 b 43 -14 33 -37 40 -26 b 167 232 65 134 109 177 b 445 683 243 305 445 416 b 432 837 445 730 441 783 b 441 919 438 855 441 881 b 327 1149 441 1032 374 1112 b 304 1156 321 1153 312 1156 b 287 1152 298 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1135 b 382 930 344 1076 382 1027 b 374 876 382 912 380 893 l 373 871 b 373 871 373 871 373 871 b 327 789 366 842 350 815 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z',\n },\n flag32ndUp: {\n x_min: 0,\n x_max: 279,\n y_min: -821,\n y_max: 186,\n ha: 1007,\n o: 'm 301 -683 b 148 -516 262 -632 219 -588 b 56 -373 92 -459 66 -410 b 50 -343 55 -366 53 -354 b 271 -500 125 -343 219 -432 b 340 -687 327 -575 340 -632 b 337 -739 340 -704 338 -721 b 301 -683 325 -716 312 -698 z m 271 -259 b 340 -446 327 -333 340 -392 b 338 -469 340 -455 338 -462 b 333 -461 337 -467 334 -464 b 91 -192 265 -372 145 -271 b 50 -92 69 -160 58 -124 b 271 -259 124 -92 219 -192 z m 0 -550 b 22 -564 0 -554 12 -560 b 258 -778 59 -577 171 -649 b 318 -952 307 -851 318 -903 b 317 -976 318 -960 318 -968 b 285 -1142 317 -1011 307 -1084 b 279 -1165 284 -1149 279 -1158 b 289 -1181 279 -1171 282 -1176 b 297 -1182 292 -1182 294 -1182 b 318 -1162 307 -1182 312 -1171 b 382 -963 344 -1122 382 -1044 b 374 -857 382 -922 379 -887 b 402 -668 389 -802 402 -740 b 386 -563 402 -632 396 -596 b 402 -441 395 -526 402 -487 b 402 -428 402 -436 402 -432 b 333 -220 402 -353 382 -285 b 137 23 265 -131 192 -56 b 42 251 82 102 42 251 b 22 268 39 261 37 268 b 0 251 4 268 0 261 z',\n },\n flag32ndDown: {\n x_min: 0,\n x_max: 309,\n y_min: -216,\n y_max: 803,\n ha: 1019,\n o: 'm 50 73 b 91 171 58 105 71 141 b 347 402 145 251 272 317 b 384 454 361 418 374 435 b 324 239 384 347 361 287 b 50 73 235 130 122 94 z m 163 517 b 366 693 248 589 327 642 b 382 716 372 700 377 708 b 383 693 383 708 383 700 b 314 505 383 621 359 562 b 53 343 258 436 179 390 b 56 363 55 351 56 359 b 163 517 66 400 81 449 z m 0 -288 b 22 -311 0 -298 10 -311 b 43 -288 33 -311 40 -300 b 167 -40 65 -138 109 -95 b 445 409 243 32 445 143 b 431 577 445 462 439 520 b 441 651 435 602 439 626 b 441 675 441 658 441 667 b 441 687 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 305 1156 321 1153 314 1156 b 287 1152 300 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1136 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z',\n },\n flag64thUp: {\n x_min: 0,\n x_max: 279,\n y_min: -822,\n y_max: 373,\n ha: 1195,\n o: 'm 333 -461 b 91 -192 265 -372 145 -271 b 50 -92 69 -161 58 -125 b 271 -251 125 -92 219 -183 b 340 -438 327 -324 340 -383 b 338 -469 340 -448 338 -459 b 333 -461 337 -467 334 -464 z m 301 -683 b 148 -517 262 -632 219 -588 b 56 -374 92 -461 66 -410 b 50 -343 55 -366 53 -356 b 271 -501 125 -343 219 -433 b 340 -688 327 -575 340 -634 b 337 -739 340 -706 338 -721 b 301 -683 325 -717 312 -698 z m 271 10 b 340 -176 327 -63 340 -121 b 337 -217 340 -190 338 -204 b 333 -212 336 -216 334 -213 b 91 65 265 -122 145 -16 b 48 177 66 101 53 143 l 50 177 b 271 10 124 177 217 78 z m 0 -552 b 22 -564 0 -554 12 -562 b 258 -778 59 -579 171 -649 b 318 -952 307 -851 317 -903 b 317 -976 318 -960 318 -968 b 285 -1142 317 -1012 307 -1084 b 279 -1165 284 -1149 279 -1158 b 289 -1181 279 -1172 282 -1178 b 297 -1184 292 -1182 295 -1184 b 318 -1164 307 -1182 312 -1172 b 382 -963 344 -1122 382 -1044 b 374 -857 382 -923 379 -887 b 402 -668 389 -804 402 -740 b 386 -563 402 -632 396 -596 b 402 -432 395 -523 402 -480 b 402 -418 402 -428 402 -423 b 383 -304 402 -379 396 -341 b 402 -170 393 -264 402 -222 b 402 -158 402 -166 402 -163 b 333 49 402 -84 382 -16 b 137 292 265 138 192 213 b 42 520 82 372 42 520 b 22 537 39 530 37 537 b 0 520 4 537 0 530 z',\n },\n flag64thDown: {\n x_min: 0,\n x_max: 309,\n y_min: -403,\n y_max: 804,\n ha: 1207,\n o: 'm 52 -196 b 91 -102 59 -166 71 -131 b 347 128 145 -23 272 45 b 384 180 361 145 374 163 b 324 -30 384 76 361 16 b 52 -196 235 -140 124 -176 z m 163 517 b 366 693 248 589 327 644 b 382 717 372 701 377 708 b 383 693 383 708 383 701 b 314 505 383 621 359 562 b 53 343 258 438 179 390 b 56 363 55 351 56 359 b 163 517 66 400 81 449 z m 314 232 b 50 69 258 163 179 117 b 91 171 56 102 69 140 b 347 402 145 251 272 318 b 382 449 360 416 372 432 b 383 420 383 439 383 429 b 314 232 383 348 359 288 z m 0 -557 b 22 -580 0 -567 10 -580 b 43 -557 33 -580 40 -567 b 167 -310 65 -408 109 -364 b 445 140 243 -238 445 -125 b 431 307 445 192 439 249 b 441 377 436 331 439 354 b 441 406 441 387 441 397 b 441 418 441 410 441 413 b 423 546 441 464 432 507 b 441 651 432 582 438 618 b 441 675 441 660 441 667 b 441 688 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 305 1158 321 1153 314 1156 b 287 1152 300 1158 292 1156 b 279 1145 281 1151 279 1148 b 294 1129 279 1140 288 1136 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 563 z',\n },\n flag128thUp: {\n x_min: 0,\n x_max: 279,\n y_min: -821,\n y_max: 573,\n ha: 1394,\n o: 'm 0 -550 b 22 -563 0 -553 12 -560 b 258 -776 59 -576 171 -648 b 318 -950 307 -850 318 -901 b 317 -975 318 -959 318 -966 b 285 -1140 317 -1011 307 -1083 b 279 -1164 284 -1148 279 -1156 b 289 -1179 279 -1171 282 -1176 b 297 -1182 292 -1181 294 -1181 b 318 -1162 307 -1182 312 -1169 b 382 -962 344 -1120 382 -1043 b 374 -857 382 -922 379 -887 b 402 -668 389 -802 402 -740 b 383 -554 402 -629 396 -590 b 402 -399 396 -503 402 -452 b 382 -284 402 -359 396 -321 b 402 -125 396 -230 402 -180 b 383 -14 402 -86 396 -49 b 402 130 396 35 402 81 b 333 348 402 204 382 284 b 137 592 265 438 192 513 b 42 808 82 671 46 793 b 22 825 39 818 37 825 b 0 808 4 825 0 818 z m 271 310 b 340 111 328 235 340 170 b 338 73 340 98 338 86 b 333 81 336 76 334 79 b 91 357 265 170 145 276 b 48 469 66 393 53 435 l 50 469 b 271 310 124 469 217 377 z m 301 -681 b 148 -523 262 -631 219 -593 b 56 -383 92 -465 66 -420 b 49 -343 55 -374 52 -359 l 50 -343 b 271 -500 124 -343 217 -432 b 340 -688 327 -575 340 -634 b 337 -737 340 -706 338 -721 b 301 -681 325 -716 312 -697 z m 333 -461 b 91 -192 265 -372 145 -271 b 48 -73 66 -154 53 -111 l 48 -73 l 50 -73 b 271 -232 124 -73 217 -163 b 340 -419 327 -305 340 -364 b 337 -468 340 -435 338 -452 b 333 -461 336 -465 334 -464 z m 333 -192 b 91 84 265 -102 145 4 b 48 200 65 121 53 164 l 48 200 l 50 200 b 271 42 124 200 217 109 b 340 -147 327 -32 340 -92 b 337 -197 340 -164 338 -181 b 333 -192 336 -196 334 -194 z',\n },\n flag128thDown: {\n x_min: 0,\n x_max: 309,\n y_min: -591,\n y_max: 803,\n ha: 1394,\n o: 'm 0 -828 b 22 -851 0 -838 10 -851 b 43 -828 33 -851 40 -840 b 167 -580 65 -678 109 -635 b 445 -131 243 -508 445 -397 b 431 36 445 -79 439 -22 b 441 108 436 60 439 85 b 441 137 441 117 441 127 b 441 147 441 140 441 144 b 423 275 441 193 432 236 b 441 377 433 310 438 344 b 441 406 441 387 441 396 b 441 418 441 410 441 413 b 423 546 441 464 432 507 b 441 649 432 582 438 616 b 441 675 441 658 441 667 b 441 687 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 304 1156 321 1153 312 1156 b 287 1152 298 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1135 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z m 314 -37 b 50 -200 258 -107 179 -153 b 91 -102 58 -168 71 -132 b 347 128 145 -23 272 45 b 382 176 360 143 372 160 b 383 151 383 167 383 160 b 314 -37 383 79 359 19 z m 314 232 b 50 69 258 163 179 117 b 91 171 56 101 69 138 b 347 402 145 251 272 317 b 382 449 360 416 372 432 b 383 420 383 439 383 429 b 314 232 383 347 359 288 z m 163 517 b 366 693 248 589 327 642 b 382 716 372 700 377 708 b 383 693 383 708 383 700 b 314 505 382 621 359 560 b 53 343 258 436 179 390 b 56 363 55 350 56 357 b 163 517 66 399 81 449 z m 52 -467 b 91 -372 59 -435 71 -402 b 347 -141 145 -292 272 -225 b 384 -89 361 -125 374 -108 b 324 -301 382 -194 361 -255 b 52 -467 235 -410 122 -446 z',\n },\n accidentalFlat: {\n x_min: 0,\n x_max: 203,\n y_min: -176,\n y_max: 453,\n ha: 629,\n o: 'm 289 114 b 173 223 281 170 246 223 b 52 170 101 223 59 179 l 58 632 b 37 652 58 644 49 652 l 20 652 b 0 632 9 652 0 644 l 7 -233 b 27 -253 7 -245 16 -253 b 39 -251 30 -253 36 -252 b 216 -114 45 -248 138 -202 b 292 78 271 -52 292 19 b 289 114 292 91 291 102 z m 190 58 b 148 -85 190 36 184 -30 b 48 -183 124 -122 75 -161 l 52 98 b 134 153 55 111 76 153 b 190 73 186 153 190 104 b 190 58 190 66 190 62 z',\n },\n accidentalNatural: {\n x_min: 0,\n x_max: 171,\n y_min: -323,\n y_max: 325,\n ha: 648,\n o: 'm 239 264 b 228 268 236 266 232 268 b 222 266 226 268 223 266 l 40 216 l 40 468 l 0 468 l 0 -245 b 20 -264 0 -256 9 -264 b 26 -264 22 -264 24 -264 l 207 -213 l 207 -465 l 246 -465 b 246 248 246 -226 246 1 b 239 264 246 253 243 261 z m 40 -140 l 40 96 l 207 144 l 207 -94 z',\n },\n accidentalSharp: {\n x_min: 0,\n x_max: 244,\n y_min: -333,\n y_max: 334,\n ha: 667,\n o: 'm 336 151 b 351 171 344 153 351 163 l 351 256 b 331 276 351 268 343 276 b 328 276 330 276 330 276 l 281 266 l 281 481 l 240 481 l 240 258 l 112 232 l 112 435 l 72 435 l 72 223 l 16 212 b 0 192 7 210 0 200 l 0 189 l 0 105 l 0 108 b 20 88 0 96 9 88 b 24 88 22 88 23 88 l 72 98 l 72 -140 l 16 -151 b 0 -171 7 -153 0 -163 l 0 -255 b 20 -275 0 -266 9 -275 b 24 -275 22 -275 23 -275 l 72 -265 l 72 -480 l 112 -480 l 112 -256 l 240 -230 l 240 -433 l 281 -433 l 281 -222 l 336 -212 b 351 -192 344 -210 351 -200 l 351 -107 b 331 -86 351 -95 343 -86 b 328 -86 330 -86 330 -86 l 281 -96 l 281 141 z m 112 107 l 240 132 l 240 -105 l 112 -132 z',\n },\n accidentalDoubleSharp: {\n x_min: 0,\n x_max: 275,\n y_min: -137,\n y_max: 138,\n ha: 275,\n o: 'm 360 73 l 376 73 b 396 94 387 73 396 82 l 396 179 b 376 199 396 190 387 199 l 291 199 b 271 179 279 199 271 190 l 271 161 l 271 102 l 200 30 l 196 30 l 124 102 l 124 179 b 105 199 124 190 117 199 l 20 199 b 0 179 9 199 0 190 l 0 94 b 20 73 0 82 9 73 l 35 73 l 36 73 l 96 73 l 167 3 l 167 -1 l 96 -73 l 36 -73 l 35 -73 l 20 -73 b 0 -92 9 -73 0 -81 l 0 -177 b 20 -197 0 -189 9 -197 l 105 -197 b 124 -177 117 -197 124 -189 l 124 -101 l 196 -32 l 200 -32 l 271 -101 l 271 -161 l 271 -163 l 271 -177 b 291 -197 271 -189 279 -197 l 376 -197 b 396 -177 387 -197 396 -189 l 396 -92 b 376 -73 396 -81 387 -73 l 361 -73 l 360 -73 l 300 -73 l 228 -1 l 228 1 l 300 73 z',\n },\n accidentalDoubleFlat: {\n x_min: 0,\n x_max: 371,\n y_min: -176,\n y_max: 453,\n ha: 629,\n o: 'm 531 115 b 415 223 523 171 488 223 b 294 171 343 223 301 180 l 300 632 b 279 652 300 644 291 652 l 262 652 b 242 632 251 652 242 644 l 246 199 b 173 223 228 213 204 223 b 52 170 101 223 59 179 l 58 632 b 37 652 58 644 49 652 l 20 652 b 0 632 9 652 0 644 l 7 -233 b 27 -253 7 -245 16 -253 b 39 -249 30 -253 36 -251 b 216 -114 45 -246 138 -202 b 248 -69 226 -102 239 -82 l 249 -233 b 269 -253 249 -245 258 -253 b 281 -249 272 -253 278 -251 b 458 -112 287 -246 380 -200 b 534 79 513 -50 534 20 b 531 115 534 92 533 104 z m 190 58 b 148 -85 190 36 184 -30 b 48 -183 124 -122 75 -161 l 52 98 b 134 153 55 111 76 153 b 190 73 186 153 190 104 b 190 58 190 66 190 62 z m 432 58 b 390 -85 432 36 426 -30 b 289 -183 366 -122 317 -161 l 294 98 b 376 153 297 111 318 153 b 432 73 428 153 432 104 b 432 58 432 66 432 62 z',\n },\n accidentalParensLeft: {\n x_min: 0,\n x_max: 75,\n y_min: -212,\n y_max: 209.4142135623731,\n ha: 421.4142135623731,\n o: 'm 98 -305 b 104 -302 101 -304 102 -304 b 108 -295 107 -301 108 -298 b 107 -289 108 -294 108 -292 b 40 10 107 -288 40 -160 b 107 288 40 95 58 192 b 108 292 108 289 108 291 b 104 300 108 295 107 298 b 96 301 101 301 99 302 b 91 298 94 301 92 300 b 0 0 86 292 0 174 b 91 -301 0 -174 86 -295 b 98 -305 92 -304 95 -305 z',\n },\n accidentalParensRight: {\n x_min: 0,\n x_max: 75,\n y_min: -209.4142135623731,\n y_max: 212,\n ha: 421.4142135623731,\n o: 'm 10 305 b 4 302 7 304 6 304 b 0 295 1 301 0 298 b 1 289 0 294 0 292 b 68 -10 1 288 68 160 b 1 -288 68 -95 50 -192 b 0 -292 0 -289 0 -291 b 4 -300 0 -295 1 -298 b 12 -301 7 -301 9 -302 b 17 -298 14 -301 16 -300 b 108 0 22 -292 108 -174 b 17 301 108 174 22 295 b 10 305 16 304 13 305 z',\n },\n accidentalQuarterToneFlatStein: {\n x_min: 0,\n x_max: 193,\n y_min: -176,\n y_max: 452,\n ha: 628,\n o: 'm 0 84 b 107 -145 0 -26 65 -105 b 245 -249 166 -202 245 -249 b 253 -253 248 -251 249 -253 b 272 -235 264 -253 272 -245 l 278 632 b 259 651 278 642 269 651 l 248 651 b 229 632 238 651 229 642 l 232 174 b 125 217 223 186 192 217 b 0 84 53 217 0 173 z m 148 154 b 232 102 212 154 232 115 b 233 107 232 99 233 102 l 235 -179 b 134 -72 207 -156 160 -111 b 92 58 98 -17 92 36 b 92 75 92 62 92 68 b 148 154 92 105 96 154 z',\n },\n accidentalThreeQuarterTonesFlatZimmermann: {\n x_min: 0,\n x_max: 422,\n y_min: -176,\n y_max: 452,\n ha: 628,\n o: 'm 608 84 b 482 217 608 173 554 217 b 376 174 416 217 384 186 l 379 632 b 360 651 379 642 370 651 l 348 651 b 330 632 338 651 330 642 l 336 -235 b 354 -253 336 -245 344 -253 b 363 -249 359 -253 360 -251 b 501 -145 363 -249 442 -202 b 608 84 543 -105 608 -26 z m 459 154 b 516 75 511 154 516 105 b 516 58 516 68 516 62 b 474 -72 516 36 510 -17 b 373 -179 448 -111 400 -156 l 374 107 b 376 102 374 102 376 99 b 459 154 376 115 396 154 z m 0 84 b 107 -145 0 -26 65 -105 b 245 -249 166 -202 245 -249 b 253 -253 248 -251 249 -253 b 272 -235 264 -253 272 -245 l 278 632 b 259 651 278 642 269 651 l 248 651 b 229 632 238 651 229 642 l 232 174 b 125 217 223 186 192 217 b 0 84 53 217 0 173 z m 148 154 b 232 102 212 154 232 115 b 233 107 232 99 233 102 l 235 -179 b 134 -72 207 -156 160 -111 b 92 58 98 -17 92 36 b 92 75 92 62 92 68 b 148 154 92 105 96 154 z',\n },\n accidentalQuarterToneSharpStein: {\n x_min: 0,\n x_max: 180,\n y_min: -316,\n y_max: 320,\n ha: 636,\n o: 'm 243 144 b 259 164 252 145 259 156 l 259 249 b 239 269 259 261 251 269 b 235 268 238 269 236 268 l 150 251 l 150 461 l 109 461 l 109 242 l 16 222 b 0 203 7 220 0 212 l 0 120 b 20 99 0 108 9 99 b 24 99 22 99 23 99 l 109 117 l 109 -121 l 16 -141 b 0 -160 7 -143 0 -151 l 0 -243 b 20 -264 0 -255 9 -264 b 24 -264 22 -264 23 -264 l 109 -246 l 109 -455 l 150 -455 l 150 -238 l 243 -219 b 259 -199 252 -217 259 -207 l 259 -114 b 239 -95 259 -102 251 -95 b 235 -95 238 -95 236 -95 l 150 -112 l 150 125 z',\n },\n accidentalThreeQuarterTonesSharpStein: {\n x_min: 0,\n x_max: 290,\n y_min: -328,\n y_max: 339,\n ha: 667,\n o: 'm 400 158 b 416 179 409 160 416 170 l 416 264 b 397 284 416 275 409 284 b 393 284 396 284 395 284 l 348 274 l 348 488 l 308 488 l 308 265 l 223 248 l 223 465 l 184 465 l 184 240 l 108 225 l 108 442 l 69 442 l 69 216 l 16 204 b 0 186 7 203 0 194 l 0 102 b 20 82 0 91 9 82 b 24 82 22 82 23 82 l 69 92 l 69 -147 l 16 -158 b 0 -177 7 -160 0 -168 l 0 -261 b 20 -281 0 -272 9 -281 b 24 -281 22 -281 23 -281 l 69 -272 l 69 -472 l 108 -472 l 108 -264 l 184 -248 l 184 -451 l 223 -451 l 223 -240 l 308 -223 l 308 -426 l 348 -426 l 348 -215 l 400 -204 b 418 -184 409 -203 418 -193 l 418 -99 b 397 -79 418 -88 409 -79 b 393 -79 396 -79 395 -79 l 348 -89 l 348 148 z m 184 -122 l 108 -138 l 108 99 l 184 115 z m 223 122 l 308 140 l 308 -98 l 223 -115 z',\n },\n accidentalBuyukMucennebFlat: {\n x_min: 0,\n x_max: 277,\n y_min: -176,\n y_max: 454,\n ha: 630,\n o: 'm 396 115 b 279 225 387 173 354 225 b 158 171 204 225 164 179 l 160 317 l 336 419 l 336 482 l 161 380 l 161 488 l 336 590 l 336 654 l 163 552 l 164 634 b 144 654 164 645 156 654 l 127 654 b 107 634 115 654 107 645 l 108 520 l 0 456 l 0 393 l 108 456 l 109 350 l 0 285 l 0 222 l 109 287 l 114 -235 b 134 -253 114 -246 122 -253 b 145 -251 138 -253 141 -252 b 323 -114 145 -251 242 -204 b 399 79 377 -52 399 20 b 396 115 399 92 397 104 z m 297 58 b 255 -85 297 36 291 -30 b 154 -184 230 -122 181 -163 l 158 96 b 240 153 161 109 181 153 b 297 73 292 153 297 104 b 297 58 297 66 297 62 z',\n },\n accidentalBakiyeFlat: {\n x_min: 0,\n x_max: 277,\n y_min: -176,\n y_max: 454,\n ha: 630,\n o: 'm 396 115 b 279 225 387 173 354 225 b 158 171 204 225 164 179 l 161 348 l 336 452 l 336 516 l 161 413 l 164 634 b 144 654 164 645 156 654 l 127 654 b 107 634 115 654 107 645 l 109 382 l 0 318 l 0 255 l 109 318 l 114 -235 b 134 -253 114 -246 122 -253 b 145 -251 138 -253 143 -252 b 323 -114 145 -251 242 -204 b 399 79 377 -52 399 20 b 396 115 399 92 397 104 z m 297 58 b 255 -85 297 36 291 -30 b 156 -184 230 -122 183 -163 l 158 96 b 240 153 161 109 181 153 b 297 73 292 153 297 104 b 297 58 297 66 297 62 z',\n },\n accidentalKucukMucennebSharp: {\n x_min: 0,\n x_max: 348,\n y_min: -316,\n y_max: 318,\n ha: 634,\n o: 'm 494 121 b 482 125 491 124 487 125 b 478 124 481 125 480 124 l 269 68 l 269 127 l 412 164 b 425 181 420 167 425 173 l 425 266 b 418 282 425 272 422 279 b 406 285 415 285 410 285 b 402 285 405 285 403 285 l 269 249 l 269 458 l 232 458 l 232 239 l 89 200 b 76 181 81 197 76 190 l 76 98 b 84 84 76 92 79 86 b 95 79 86 81 91 79 b 99 81 96 79 98 81 l 232 115 l 232 58 l 14 -3 b 0 -20 6 -6 0 -12 l 0 -104 b 7 -118 0 -109 3 -115 b 19 -122 10 -121 14 -122 b 23 -122 20 -122 22 -122 l 232 -66 l 232 -124 l 89 -163 b 76 -180 81 -166 76 -171 l 76 -264 b 84 -279 76 -269 79 -276 b 95 -282 86 -282 91 -282 b 99 -282 96 -282 98 -282 l 232 -246 l 232 -455 l 269 -455 l 269 -236 l 412 -199 b 425 -180 420 -196 425 -189 l 425 -95 b 418 -81 425 -89 422 -84 b 406 -76 415 -78 410 -76 b 402 -78 405 -76 403 -78 l 269 -114 l 269 -55 l 487 4 b 501 22 495 7 501 13 l 501 107 b 494 121 501 112 498 118 z',\n },\n articAccentAbove: {\n x_min: 0,\n x_max: 361,\n y_min: 0,\n y_max: 235,\n ha: 235,\n o: 'm 26 337 b 20 338 24 337 22 338 b 0 318 9 338 0 330 l 0 285 b 14 266 0 276 7 269 l 323 170 l 14 72 b 0 53 7 69 0 62 l 0 20 b 20 0 0 9 9 0 b 26 1 22 0 24 1 l 505 150 b 520 170 513 153 520 161 b 505 189 520 179 513 186 z',\n },\n articAccentBelow: {\n x_min: 0,\n x_max: 361,\n y_min: -235,\n y_max: 0,\n ha: 235,\n o: 'm 26 -1 b 20 0 24 -1 22 0 b 0 -20 9 0 0 -9 l 0 -53 b 14 -72 0 -62 7 -69 l 323 -168 l 14 -266 b 0 -285 7 -269 0 -276 l 0 -318 b 20 -338 0 -330 9 -338 b 26 -337 22 -338 24 -337 l 505 -189 b 520 -168 513 -186 520 -177 b 505 -150 520 -160 513 -153 z',\n },\n articTenutoAbove: {\n x_min: 0,\n x_max: 316,\n y_min: 0,\n y_max: 46,\n ha: 46,\n o: 'm 20 66 b 0 46 9 66 0 58 l 0 20 b 20 0 0 9 9 0 l 435 0 b 455 20 446 0 455 9 l 455 46 b 435 66 455 58 446 66 z',\n },\n articTenutoBelow: {\n x_min: 0,\n x_max: 316,\n y_min: -46,\n y_max: 0,\n ha: 46,\n o: 'm 20 0 b 0 -20 9 0 0 -9 l 0 -46 b 20 -66 0 -58 9 -66 l 435 -66 b 455 -46 446 -66 455 -58 l 455 -20 b 435 0 455 -9 446 0 z',\n },\n articStaccatoAbove: {\n x_min: -0.25,\n x_max: 78.25,\n y_min: -0.25,\n y_max: 78,\n ha: 78.25,\n o: 'm 16 16 b 96 16 39 -6 73 -6 b 96 95 118 39 118 73 b 16 95 73 118 39 118 b 16 16 -6 73 -6 39 z',\n },\n articStaccatoBelow: {\n x_min: -0.25,\n x_max: 78.25,\n y_min: -78.25,\n y_max: 0,\n ha: 78.25,\n o: 'm 16 -96 b 96 -96 39 -118 73 -118 b 96 -17 118 -73 118 -39 b 16 -17 73 6 39 6 b 16 -96 -6 -39 -6 -73 z',\n },\n articStaccatissimoAbove: {\n x_min: 0,\n x_max: 127,\n y_min: 0,\n y_max: 248,\n ha: 248,\n o: 'm 163 357 b 150 353 154 357 150 353 l 99 300 b 92 295 96 297 95 295 b 85 300 89 295 88 297 l 35 353 b 22 357 35 353 30 357 b 0 338 13 357 0 351 b 73 22 0 323 73 22 b 92 0 75 16 78 0 b 111 22 107 0 109 16 b 183 338 111 22 183 323 b 163 357 183 351 171 357 z',\n },\n articStaccatissimoBelow: {\n x_min: 0,\n x_max: 127,\n y_min: -248,\n y_max: 0,\n ha: 248,\n o: 'm 20 -357 b 33 -353 29 -357 33 -353 l 84 -300 b 91 -295 86 -297 88 -295 b 98 -300 94 -295 95 -297 l 148 -353 b 161 -357 148 -353 153 -357 b 183 -338 170 -357 183 -351 b 109 -22 183 -323 109 -22 b 91 0 108 -16 105 0 b 72 -22 76 0 73 -16 b 0 -338 72 -22 0 -323 b 20 -357 0 -351 12 -357 z',\n },\n articMarcatoAbove: {\n x_min: 1,\n x_max: 296,\n y_min: 0,\n y_max: 253,\n ha: 253,\n o: 'm 36 10 l 173 239 l 298 10 b 317 0 301 4 310 0 l 408 0 b 426 20 419 0 426 9 b 425 30 426 23 426 27 l 230 356 b 213 364 226 361 222 363 b 196 356 207 364 199 361 l 1 30 z',\n },\n articMarcatoBelow: {\n x_min: 0,\n x_max: 295,\n y_min: -253,\n y_max: 0,\n ha: 253,\n o: 'm 390 -10 l 253 -239 l 128 -10 b 109 0 125 -4 117 0 l 19 0 b 0 -20 7 0 0 -9 b 1 -30 0 -23 0 -27 l 196 -356 b 213 -364 200 -361 204 -363 b 230 -356 219 -364 228 -361 l 425 -30 z',\n },\n fermataAbove: {\n x_min: 0,\n x_max: 622,\n y_min: 0,\n y_max: 368,\n ha: 368,\n o: 'm 778 374 b 448 530 642 521 523 530 b 120 374 373 530 255 521 b 0 65 49 297 0 143 b 20 19 0 37 6 19 b 161 265 60 19 40 143 b 445 373 268 372 410 373 b 448 373 446 373 446 373 b 451 373 449 373 449 373 b 734 265 485 373 628 372 b 876 19 855 143 835 19 b 896 65 890 19 896 36 b 778 374 896 143 848 298 z m 348 99 b 448 0 348 45 393 0 b 547 99 503 0 547 45 b 448 199 547 154 503 199 b 348 99 393 199 348 154 z',\n },\n fermataBelow: {\n x_min: 0,\n x_max: 622,\n y_min: -368,\n y_max: 0,\n ha: 368,\n o: 'm 778 -374 b 896 -65 848 -298 896 -143 b 876 -19 896 -36 890 -19 b 734 -265 835 -19 855 -143 b 451 -373 628 -372 485 -373 b 448 -373 449 -373 449 -373 b 445 -373 446 -373 446 -373 b 161 -265 410 -373 268 -372 b 20 -19 40 -143 60 -19 b 0 -65 6 -19 0 -37 b 120 -374 0 -143 49 -297 b 448 -530 255 -521 373 -530 b 778 -374 523 -530 642 -521 z m 348 -99 b 448 -199 348 -154 393 -199 b 547 -99 503 -199 547 -154 b 448 0 547 -45 503 0 b 348 -99 393 0 348 -45 z',\n },\n fermataLongAbove: {\n x_min: 0,\n x_max: 623,\n y_min: 0,\n y_max: 368,\n ha: 368,\n o: 'm 40 0 l 40 399 l 858 399 l 858 0 l 897 0 l 897 510 b 877 530 897 521 888 530 l 20 530 b 0 510 9 530 0 521 l 0 0 z m 350 148 b 449 49 350 94 395 49 b 547 148 504 49 547 94 b 449 248 547 203 504 248 b 350 148 395 248 350 203 z',\n },\n fermataLongBelow: {\n x_min: 0,\n x_max: 623,\n y_min: -368,\n y_max: 0,\n ha: 368,\n o: 'm 0 -510 b 20 -530 0 -521 9 -530 l 877 -530 b 897 -510 888 -530 897 -521 l 897 0 l 858 0 l 858 -399 l 40 -399 l 40 0 l 0 0 z m 350 -148 b 449 -248 350 -203 395 -248 b 547 -148 504 -248 547 -203 b 449 -49 547 -94 504 -49 b 350 -148 395 -49 350 -94 z',\n },\n fermataVeryLongAbove: {\n x_min: 0,\n x_max: 842,\n y_min: 0,\n y_max: 549,\n ha: 549,\n o: 'm 276 0 l 276 399 l 936 399 l 936 0 l 976 0 l 976 510 b 956 530 976 521 968 530 l 256 530 b 236 510 245 530 236 521 l 236 0 z m 507 148 b 606 49 507 94 552 49 b 706 148 661 49 706 94 b 606 248 706 203 661 248 b 507 148 552 248 507 203 z m 40 0 l 40 661 l 1172 661 l 1172 0 l 1212 0 l 1212 772 b 1192 791 1212 783 1204 791 l 20 791 b 0 772 9 791 0 783 l 0 0 z',\n },\n fermataVeryLongBelow: {\n x_min: 0,\n x_max: 842,\n y_min: -549,\n y_max: 0,\n ha: 549,\n o: 'm 236 -510 b 256 -530 236 -521 245 -530 l 956 -530 b 976 -510 968 -530 976 -521 l 976 0 l 936 0 l 936 -399 l 276 -399 l 276 0 l 236 0 z m 507 -148 b 606 -248 507 -203 552 -248 b 706 -148 661 -248 706 -203 b 606 -49 706 -94 661 -49 b 507 -148 552 -49 507 -94 z m 0 -772 b 20 -791 0 -783 9 -791 l 1192 -791 b 1212 -772 1204 -791 1212 -783 l 1212 0 l 1172 0 l 1172 -661 l 40 -661 l 40 0 l 0 0 z',\n },\n fermataShortAbove: {\n x_min: 0,\n x_max: 642,\n y_min: 0,\n y_max: 454,\n ha: 454,\n o: 'm 363 148 b 462 49 363 94 408 49 b 562 148 517 49 562 94 b 462 248 562 203 517 248 b 363 148 408 248 363 203 z m 477 645 b 461 654 474 649 467 654 b 445 645 455 654 448 649 l 4 32 b 0 20 3 29 0 23 b 20 0 0 9 9 0 l 82 0 b 98 9 88 0 95 4 l 461 514 l 827 9 b 842 0 829 4 837 0 l 904 0 b 924 20 916 0 924 9 b 920 32 924 23 922 29 z',\n },\n fermataShortBelow: {\n x_min: 0,\n x_max: 642,\n y_min: -454,\n y_max: 0,\n ha: 454,\n o: 'm 363 -148 b 462 -248 363 -203 408 -248 b 562 -148 517 -248 562 -203 b 462 -49 562 -94 517 -49 b 363 -148 408 -49 363 -94 z m 920 -32 b 924 -20 922 -29 924 -23 b 904 0 924 -9 916 0 l 842 0 b 827 -9 837 0 829 -4 l 461 -514 l 98 -9 b 82 0 95 -4 88 0 l 20 0 b 0 -20 9 0 0 -9 b 4 -32 0 -23 3 -29 l 445 -645 b 461 -654 448 -649 455 -654 b 477 -645 467 -654 474 -649 z',\n },\n breathMarkComma: {\n x_min: 0,\n x_max: 191,\n y_min: 0,\n y_max: 321,\n ha: 321,\n o: 'm 82 0 b 275 285 215 92 275 183 b 115 462 275 396 212 462 b 0 356 46 462 0 413 b 115 246 0 294 53 246 b 181 258 157 246 177 256 b 192 261 184 259 189 261 b 199 259 194 261 196 261 b 203 245 202 258 203 253 b 48 43 203 183 147 112 z',\n },\n caesura: {\n x_min: 0,\n x_max: 380,\n y_min: 0,\n y_max: 490,\n ha: 490,\n o: 'm 285 706 b 285 706 285 706 285 706 b 271 696 279 706 274 701 l 1 22 b 0 16 0 20 0 17 b 16 0 0 7 7 0 l 50 0 b 65 10 56 0 62 4 l 334 684 b 336 690 334 685 336 688 b 320 706 336 698 328 706 z m 213 22 b 212 16 213 20 212 17 b 228 0 212 7 219 0 l 262 0 b 276 10 268 0 274 4 l 546 684 b 547 690 547 685 547 688 b 531 706 547 698 540 706 l 497 706 b 482 696 491 706 485 701 z',\n },\n caesuraCurved: {\n x_min: 0,\n x_max: 368,\n y_min: 0,\n y_max: 491,\n ha: 491,\n o: 'm 262 707 b 245 693 253 707 246 701 b 1 26 233 603 177 348 b 0 17 0 23 0 20 b 16 0 0 9 6 0 b 30 7 22 0 27 3 b 318 687 259 341 304 602 b 318 690 318 688 318 688 b 301 707 318 698 310 707 z m 474 707 b 458 693 465 707 459 701 b 213 26 446 603 389 348 b 212 19 212 23 212 20 b 229 0 212 9 219 0 b 243 7 235 0 240 3 b 530 687 472 341 516 602 b 530 690 530 688 530 688 b 514 707 530 698 523 707 z',\n },\n restMaxima: {\n x_min: 0,\n x_max: 450,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 158 -360 b 180 -338 170 -360 180 -350 l 180 338 b 158 360 180 350 170 360 l 22 360 b 0 338 9 360 0 350 l 0 -338 b 22 -360 0 -350 9 -360 z m 626 -360 b 648 -338 638 -360 648 -350 l 648 338 b 626 360 648 350 638 360 l 490 360 b 468 338 477 360 468 350 l 468 -338 b 490 -360 468 -350 477 -360 z',\n },\n restDoubleWhole: {\n x_min: 0,\n x_max: 125,\n y_min: -11,\n y_max: 262,\n ha: 273,\n o: 'm 158 -16 b 180 6 171 -16 180 -6 l 180 356 b 158 377 180 367 171 377 l 22 377 b 0 356 10 377 0 367 l 0 6 b 22 -16 0 -6 10 -16 z',\n },\n restWhole: {\n x_min: 0,\n x_max: 325,\n y_min: -131,\n y_max: 5,\n ha: 136,\n o: 'm 20 7 b 0 -13 9 7 0 -1 l 0 -168 b 20 -189 0 -180 9 -189 l 448 -189 b 468 -168 459 -189 468 -180 l 468 -13 b 448 7 468 -1 459 7 z',\n },\n restWholeLegerLine: {\n x_min: -139,\n x_max: 464,\n y_min: -122,\n y_max: 14,\n ha: 136,\n o: 'm 449 20 l 19 20 l -200 20 l -200 -20 l 0 -20 l 0 -156 b 19 -176 0 -167 7 -176 l 449 -176 b 468 -156 461 -176 468 -167 l 468 -20 l 668 -20 l 668 20 z',\n },\n restHalf: {\n x_min: 0,\n x_max: 325,\n y_min: -4,\n y_max: 132,\n ha: 136,\n o: 'm 0 14 b 20 -6 0 -6 0 -6 l 448 -6 b 468 14 468 -6 468 -6 l 468 170 b 448 190 468 190 468 190 l 20 190 b 0 170 0 190 0 190 z',\n },\n restHalfLegerLine: {\n x_min: -139,\n x_max: 464,\n y_min: -14,\n y_max: 122,\n ha: 136,\n o: 'm 668 20 l 468 20 l 468 156 b 449 176 468 167 461 176 l 19 176 b 0 156 7 176 0 167 l 0 20 l -200 20 l -200 -20 l 19 -20 l 449 -20 l 668 -20 z',\n },\n restQuarter: {\n x_min: 0,\n x_max: 235,\n y_min: -331,\n y_max: 401,\n ha: 732,\n o: 'm 331 -239 b 323 -229 330 -238 327 -235 l 157 -24 b 154 -16 156 -23 154 -19 b 157 -3 154 -12 156 -6 l 304 219 b 307 229 305 222 307 226 l 307 242 b 302 253 307 246 305 251 l 69 569 b 55 577 69 569 63 577 b 43 573 50 577 48 576 b 36 559 37 569 36 563 b 40 543 36 550 40 543 l 150 393 b 154 376 153 389 154 383 b 150 359 154 370 153 363 l 4 137 b 1 125 3 134 1 128 l 1 112 b 6 101 1 108 3 104 l 167 -99 b 131 -95 161 -98 148 -95 b 49 -124 107 -95 75 -101 b 0 -229 17 -153 0 -193 b 16 -285 0 -249 4 -269 b 154 -468 46 -331 154 -468 b 171 -477 154 -468 161 -477 b 180 -474 174 -477 177 -477 b 190 -456 187 -468 190 -462 b 186 -444 190 -451 187 -446 b 135 -353 181 -436 135 -353 b 125 -307 135 -353 125 -333 b 150 -246 125 -288 131 -265 b 206 -223 167 -229 187 -223 b 252 -236 225 -223 240 -229 l 308 -272 b 320 -275 308 -272 314 -275 b 334 -268 325 -275 330 -274 b 338 -255 337 -262 338 -259 b 334 -243 338 -251 337 -248 z',\n },\n rest8th: {\n x_min: 0,\n x_max: 276,\n y_min: -255,\n y_max: 204,\n ha: 459,\n o: 'm 384 292 b 379 294 383 292 380 294 b 360 282 370 294 363 289 b 245 141 354 274 310 189 b 180 112 226 127 203 117 b 206 181 196 131 206 154 b 104 284 206 238 160 284 b 0 181 46 284 0 238 b 65 85 0 137 27 101 b 144 68 86 75 115 68 b 269 109 186 68 230 81 b 320 157 287 122 304 140 l 156 -356 l 194 -367 l 396 268 b 397 275 397 269 397 272 b 384 292 397 282 393 288 z',\n },\n rest16th: {\n x_min: 1,\n x_max: 344,\n y_min: -507,\n y_max: 204,\n ha: 711,\n o: 'm 494 268 b 495 275 495 271 495 272 b 482 292 495 282 491 289 b 475 294 480 294 477 294 b 456 282 467 294 461 289 b 285 115 422 213 364 135 b 310 184 302 135 310 158 b 203 284 310 240 259 284 b 104 177 145 281 104 233 b 171 84 105 134 134 98 b 252 69 197 72 225 69 b 423 164 324 72 380 108 l 423 164 l 359 -65 b 183 -245 338 -132 256 -226 b 207 -176 199 -225 207 -200 b 102 -76 207 -118 158 -76 b 1 -183 45 -76 1 -125 b 69 -275 1 -226 32 -262 b 150 -289 96 -287 121 -289 b 321 -194 222 -287 278 -251 l 174 -720 l 213 -730 z',\n },\n rest32nd: {\n x_min: 0,\n x_max: 391,\n y_min: -507,\n y_max: 460,\n ha: 967,\n o: 'm 217 71 b 408 171 348 71 402 161 l 354 -46 b 184 -240 323 -121 268 -217 b 204 -171 200 -220 204 -197 b 102 -76 204 -114 158 -76 b 0 -177 46 -76 0 -120 b 140 -288 0 -252 63 -288 b 320 -186 216 -288 276 -246 l 189 -721 l 228 -730 l 562 638 b 563 644 563 639 563 642 b 549 661 563 652 557 658 b 543 662 547 662 544 662 b 524 649 534 662 528 657 b 361 487 497 589 431 504 b 383 556 379 508 383 530 b 282 652 383 611 338 652 b 179 549 226 652 179 609 b 249 451 179 505 210 464 b 311 439 268 444 288 441 b 330 441 317 439 323 439 b 498 541 400 445 458 485 l 442 310 b 271 117 413 238 351 137 b 292 186 288 138 292 160 b 189 282 292 243 245 282 b 88 180 132 282 88 238 b 217 71 88 112 153 71 z',\n },\n rest64th: {\n x_min: 0,\n x_max: 423,\n y_min: -758,\n y_max: 464,\n ha: 1222,\n o: 'm 207 -1083 l 246 -1092 b 608 644 282 -919 605 634 b 609 649 608 647 609 648 b 595 667 609 658 603 665 b 589 668 593 668 592 668 b 569 654 577 668 575 664 b 474 521 563 644 530 573 b 412 487 456 505 435 494 b 432 546 425 503 432 526 b 328 649 432 606 382 649 b 226 546 275 649 226 608 b 360 438 226 465 300 438 b 501 492 419 438 474 465 b 546 546 527 518 533 526 l 547 547 l 500 323 b 399 161 491 300 452 209 b 337 125 382 144 360 132 b 357 184 350 143 357 134 b 253 288 357 235 317 288 b 151 187 190 288 151 236 b 285 76 151 138 183 76 b 471 184 412 76 465 173 l 423 -45 b 324 -204 413 -69 374 -158 b 262 -240 305 -222 284 -233 b 281 -180 274 -223 281 -212 b 177 -78 281 -147 258 -78 b 75 -180 98 -78 75 -153 b 209 -289 75 -207 88 -289 b 395 -181 330 -289 389 -193 l 350 -397 b 248 -564 337 -449 285 -530 b 186 -599 229 -580 207 -592 b 204 -540 197 -583 204 -563 b 102 -438 204 -501 174 -438 b 0 -540 29 -438 0 -501 b 132 -648 0 -579 24 -648 b 320 -540 266 -648 315 -552 z',\n },\n rest128th: {\n x_min: -1,\n x_max: 475,\n y_min: -759,\n y_max: 717,\n ha: 1476,\n o: 'm 677 1028 b 664 1032 672 1031 667 1032 b 644 1018 654 1032 649 1028 b 549 886 638 1008 605 937 b 487 851 531 870 510 858 b 507 910 500 868 507 890 b 403 1014 507 971 456 1014 b 301 910 350 1014 301 972 b 435 802 301 829 374 802 b 576 857 494 802 549 829 b 621 910 602 883 608 890 l 622 912 l 575 687 b 474 526 566 664 527 573 b 412 490 456 508 435 497 b 432 549 425 507 432 498 b 328 652 432 599 392 652 b 226 552 265 652 226 600 b 360 441 226 503 258 441 b 546 549 487 441 540 537 l 498 320 b 399 160 488 295 449 207 b 337 125 380 143 359 131 b 356 184 348 141 356 153 b 252 287 356 217 333 287 b 150 184 173 287 150 212 b 284 76 150 157 163 76 b 469 183 405 76 464 171 l 425 -33 b 323 -200 412 -85 360 -166 b 261 -235 304 -216 282 -228 b 279 -176 272 -219 279 -199 b 177 -72 279 -137 249 -72 b 75 -176 104 -72 75 -137 b 207 -284 75 -215 99 -284 b 395 -176 341 -284 390 -187 l 347 -409 b 248 -566 330 -461 282 -533 b 186 -600 229 -582 207 -593 b 204 -541 197 -583 204 -564 b 102 -438 204 -501 174 -438 b -1 -541 29 -438 -1 -503 b 132 -649 -1 -580 24 -649 b 318 -546 256 -649 307 -567 l 206 -1084 l 245 -1093 b 683 1008 281 -920 680 996 b 684 1015 683 1009 684 1014 b 677 1028 684 1020 683 1024 z',\n },\n dynamicPiano: {\n x_min: -95,\n x_max: 317,\n y_min: -163,\n y_max: 263,\n ha: 426,\n o: 'm 186 -235 l 186 -206 l 78 -206 l 161 26 l 166 16 b 229 -29 166 16 180 -16 b 256 -32 238 -32 248 -32 b 445 166 336 -32 415 49 b 456 246 454 197 456 223 b 374 373 456 343 396 367 b 356 376 369 374 361 376 b 242 314 311 376 266 338 l 238 310 l 235 315 b 154 377 235 315 204 370 b 138 379 148 377 144 379 b 0 226 91 379 42 346 l 26 213 b 63 301 32 232 46 278 b 102 328 72 314 89 325 b 108 328 104 328 107 328 b 120 325 112 328 117 327 b 127 304 125 321 127 314 b 94 192 127 269 101 206 l -49 -206 l -137 -206 l -137 -235 z m 226 17 b 215 19 223 17 217 17 b 187 81 193 27 187 53 b 204 180 187 125 203 177 b 297 317 217 235 259 295 b 324 325 307 323 315 325 b 336 324 328 325 333 325 b 350 311 341 323 347 317 b 356 278 354 302 356 291 b 333 161 356 239 341 187 b 242 20 314 105 278 37 b 226 17 238 17 230 17 z',\n },\n dynamicMezzo: {\n x_min: -7,\n x_max: 374,\n y_min: -2,\n y_max: 251,\n ha: 253,\n o: 'm 488 63 b 467 48 481 50 474 48 b 459 49 464 48 462 48 b 449 65 452 52 449 58 b 461 112 449 76 455 94 b 474 157 464 121 471 150 b 492 281 482 183 492 242 b 491 301 492 288 492 295 b 436 359 484 340 467 359 b 340 307 399 359 359 331 l 337 301 l 334 308 b 272 359 334 308 311 359 b 177 310 232 359 202 343 l 173 304 l 171 311 b 117 360 171 311 153 353 b 96 361 109 361 102 361 b 29 328 60 361 39 340 b -10 252 20 318 0 284 l 12 240 b 68 318 12 240 36 318 b 75 317 71 318 72 318 b 86 295 84 314 86 307 b 59 194 86 275 75 240 b 1 20 59 193 6 33 b 0 13 1 17 0 16 b 3 4 0 10 1 7 b 14 -1 6 1 9 -1 l 36 -1 b 91 -1 58 -1 86 -1 b 107 22 94 -1 101 -1 b 127 99 114 53 121 79 b 235 310 132 121 186 310 b 243 305 238 310 242 308 b 248 289 246 302 248 297 b 216 160 248 265 233 219 b 173 22 194 89 173 22 b 173 16 173 20 173 19 b 176 3 173 12 173 6 b 187 -1 179 0 183 -1 l 266 -1 b 282 16 272 -1 279 0 b 284 26 282 17 284 22 b 392 302 312 228 359 288 b 396 304 393 302 395 304 l 397 304 b 400 302 399 304 399 302 b 408 289 403 301 408 297 b 369 140 408 275 399 217 b 356 75 360 117 356 95 b 370 23 356 55 360 37 b 428 -3 382 6 408 -3 b 536 99 492 -3 517 49 b 539 108 537 102 537 105 l 514 120 b 488 63 514 120 498 81 z',\n },\n dynamicForte: {\n x_min: -137,\n x_max: 334,\n y_min: -193,\n y_max: 421,\n ha: 614,\n o: 'm -122 -86 b -197 -161 -161 -86 -197 -122 b -81 -278 -197 -236 -147 -278 b 35 -228 -35 -278 -1 -264 b 202 173 98 -164 167 50 b 238 297 215 219 228 264 l 238 300 l 341 300 b 356 314 350 300 356 305 l 356 346 b 341 360 356 354 350 360 l 256 360 l 256 364 b 330 554 297 511 308 537 b 359 566 341 563 351 566 b 366 564 361 566 364 564 b 380 553 373 563 377 559 b 382 546 382 550 382 549 b 373 528 382 539 379 531 b 351 478 359 517 351 498 b 354 458 351 471 353 465 b 384 426 359 445 370 432 b 410 420 390 423 400 420 b 445 431 420 420 432 423 b 478 472 459 438 474 456 b 481 497 481 480 481 488 b 467 550 481 514 477 533 b 376 605 455 572 422 598 b 351 606 369 606 360 606 b 225 553 317 606 272 595 b 122 363 187 520 154 456 l 122 360 l 13 360 b -1 346 4 360 -1 354 l -1 314 b 13 300 -1 305 4 300 l 102 300 l 102 294 b 66 140 88 236 76 187 b 24 -35 55 86 42 32 l 20 -52 b -53 -235 -10 -170 -19 -212 b -78 -242 -60 -239 -69 -242 b -98 -235 -85 -242 -92 -239 b -105 -222 -102 -232 -105 -228 b -105 -219 -105 -220 -105 -220 b -94 -204 -104 -213 -101 -207 b -58 -144 -66 -193 -58 -167 b -122 -86 -58 -124 -71 -86 z',\n },\n dynamicRinforzando: {\n x_min: -12,\n x_max: 230,\n y_min: 0,\n y_max: 254,\n ha: 254,\n o: 'm 272 364 b 200 341 239 364 212 348 b 168 310 187 333 177 321 l 164 304 b 109 363 164 304 151 353 b 88 366 102 364 95 366 b 22 331 52 366 32 343 b -17 255 13 321 -7 287 l 4 243 b 60 321 4 243 29 321 b 68 320 63 321 65 321 b 78 297 75 317 78 308 b 49 180 78 272 65 230 l 0 23 b 0 17 0 22 0 20 b 3 4 0 13 0 7 b 14 0 6 1 10 0 l 94 0 b 109 17 99 0 107 1 b 111 27 109 19 111 23 b 209 302 140 230 186 279 b 225 311 215 308 220 311 b 229 310 226 311 228 311 b 233 304 233 307 233 305 b 233 301 233 302 233 301 b 216 268 220 291 216 279 b 225 243 216 259 219 249 b 262 229 235 232 249 229 b 304 242 279 229 295 235 b 331 308 320 255 331 275 b 272 364 331 341 304 364 z',\n },\n dynamicSforzando: {\n x_min: 0,\n x_max: 208,\n y_min: -5,\n y_max: 263,\n ha: 268,\n o: 'm 242 328 b 217 289 222 317 217 300 b 258 249 217 274 230 249 b 298 284 285 249 295 269 b 300 295 300 287 300 291 b 189 379 300 328 272 379 b 49 259 92 379 49 315 b 99 173 49 229 59 196 b 164 137 117 163 140 151 b 194 88 189 122 194 102 b 124 24 194 73 177 24 b 72 46 82 24 72 39 b 73 49 72 48 72 49 b 96 96 78 52 96 62 b 50 150 96 134 72 150 b 0 91 29 150 0 134 b 124 -7 0 26 49 -7 b 282 111 199 -7 282 24 b 171 239 282 197 207 219 b 128 292 135 259 128 268 b 193 347 128 317 156 347 b 242 328 230 347 242 328 z',\n },\n dynamicZ: {\n x_min: -42,\n x_max: 239,\n y_min: -1,\n y_max: 258,\n ha: 259,\n o: 'm 229 292 b 235 288 232 292 233 291 b 236 284 236 285 236 285 b 233 278 236 281 235 279 b -42 55 232 276 -4 85 b -60 24 -56 43 -60 33 b -50 4 -60 12 -50 4 b -35 0 -45 1 -40 0 b 9 29 -14 0 1 19 b 50 69 17 43 26 69 b 89 35 75 69 81 50 b 170 -1 104 10 137 -1 b 243 22 197 -1 223 6 b 304 147 288 56 304 118 b 264 196 304 176 294 196 b 226 156 239 196 226 174 b 251 117 226 128 249 122 b 251 108 251 114 251 111 b 243 79 251 98 249 88 b 212 56 236 68 223 56 b 202 59 209 56 204 56 b 163 92 194 63 186 75 b 108 122 140 109 114 120 b 105 125 105 124 105 124 b 107 128 105 127 107 128 b 312 304 107 128 302 294 b 341 340 324 315 336 327 b 344 347 343 341 344 346 l 344 356 b 333 369 343 367 336 369 l 331 369 l 262 363 b 217 361 245 361 230 361 b 156 366 193 361 174 363 b 114 372 147 367 125 372 b 107 370 111 372 108 370 b 86 344 98 367 89 360 b 37 222 72 265 42 232 b 37 219 37 220 37 220 b 50 207 37 213 43 207 l 66 207 b 81 225 75 207 76 215 b 108 291 85 235 105 285 b 118 297 111 297 112 297 b 167 289 125 295 144 291 b 181 289 171 289 177 289 b 229 292 202 289 222 291 z',\n },\n ornamentTrill: {\n x_min: -12,\n x_max: 383,\n y_min: 0,\n y_max: 383,\n ha: 383,\n o: 'm 464 396 b 376 359 408 396 376 359 l 364 370 b 346 377 357 377 346 377 l 197 377 l 246 528 b 246 531 246 530 246 531 b 226 552 246 541 236 552 l 213 552 b 199 544 209 552 202 547 b 124 482 196 541 130 487 b 117 471 118 478 117 471 b 84 377 117 471 102 431 l 3 377 b -17 360 -14 377 -17 360 l -17 341 b 3 324 -17 325 3 324 l 66 324 b 0 85 35 229 0 117 b 92 0 0 16 48 0 b 186 35 137 0 186 35 b 194 13 186 35 190 24 b 212 0 199 1 212 0 l 276 0 b 298 16 295 0 298 16 l 298 43 b 321 147 298 75 321 147 l 382 284 b 412 325 382 284 396 311 b 446 341 425 336 438 341 b 452 340 448 341 451 341 b 428 288 432 327 428 305 b 485 233 428 271 446 233 b 552 308 534 233 552 264 b 464 396 552 353 520 396 z m 222 143 b 147 78 210 104 171 78 b 137 79 143 78 140 78 b 121 115 125 85 121 99 b 137 190 121 148 137 190 l 180 324 l 275 324 b 279 320 279 324 279 320 b 222 143 279 320 235 187 z',\n },\n ornamentTurn: {\n x_min: 0,\n x_max: 456,\n y_min: 0,\n y_max: 232,\n ha: 232,\n o: 'm 527 334 b 442 269 488 334 442 312 b 501 204 442 228 468 204 b 570 226 533 204 540 226 b 613 164 598 226 613 204 l 613 163 b 550 98 613 127 586 98 b 448 143 508 98 485 109 l 328 255 l 298 284 b 174 334 262 317 223 334 b 0 170 92 334 0 278 b 131 0 0 68 58 0 b 215 65 170 0 215 22 b 156 130 215 107 189 130 b 86 108 124 130 117 108 b 43 170 59 108 43 130 l 43 171 b 108 236 43 207 72 236 b 209 192 150 236 171 225 l 328 79 l 360 50 b 482 0 396 17 433 0 b 657 164 564 0 657 56 b 527 334 657 266 600 334 z',\n },\n ornamentTurnSlash: {\n x_min: 0,\n x_max: 456,\n y_min: -80,\n y_max: 313,\n ha: 393,\n o: 'm 527 334 b 442 269 488 334 442 312 b 501 204 442 228 468 204 b 570 226 533 204 540 226 b 613 164 598 226 613 204 l 613 163 b 550 98 613 127 586 98 b 448 143 508 98 485 109 l 354 230 l 354 431 b 336 451 354 442 347 451 l 323 451 b 302 431 311 451 302 442 l 302 279 l 298 284 b 174 334 262 317 223 334 b 0 170 92 334 0 278 b 131 0 0 68 58 0 b 215 65 170 0 215 22 b 156 130 215 107 189 130 b 86 108 124 130 117 108 b 43 170 59 108 43 130 l 43 171 b 108 236 43 207 72 236 b 209 192 150 236 171 225 l 302 104 l 302 -96 b 323 -115 302 -108 311 -115 l 336 -115 b 354 -96 347 -115 354 -108 l 354 55 l 360 50 b 482 0 396 17 433 0 b 657 164 564 0 657 56 b 527 334 657 266 600 334 z',\n },\n ornamentMordent: {\n x_min: 0,\n x_max: 473,\n y_min: -77,\n y_max: 316,\n ha: 393,\n o: 'm 647 302 l 562 166 l 446 347 b 429 357 444 353 435 357 b 413 347 423 357 416 353 l 363 262 l 363 435 b 343 455 363 446 354 455 l 331 455 b 311 435 320 455 311 446 l 311 173 l 310 171 l 203 347 b 186 357 200 353 192 357 b 168 347 180 357 171 353 l 0 69 l 35 48 l 120 189 l 226 10 b 243 0 229 4 238 0 b 261 10 249 0 258 4 l 311 95 l 311 -91 b 331 -111 311 -102 320 -111 l 343 -111 b 363 -91 354 -111 363 -102 l 363 184 l 366 189 l 478 10 b 495 0 481 4 490 0 b 513 10 501 0 510 4 l 681 281 z',\n },\n ornamentShortTrill: {\n x_min: 0,\n x_max: 473,\n y_min: 0,\n y_max: 248,\n ha: 248,\n o: 'm 647 302 l 562 166 l 446 347 b 431 357 444 353 436 357 b 413 347 425 357 416 353 l 310 171 l 203 347 b 186 357 200 353 192 357 b 168 347 180 357 173 353 l 0 69 l 35 48 l 120 189 l 226 10 b 243 0 229 4 238 0 b 261 10 249 0 258 4 l 366 189 l 478 9 b 495 0 481 3 490 0 b 513 10 501 0 510 4 l 681 281 z',\n },\n ornamentTremblement: {\n x_min: 0,\n x_max: 654,\n y_min: 0,\n y_max: 248,\n ha: 248,\n o: 'm 907 302 l 822 166 l 708 348 b 691 357 704 354 701 357 b 674 347 685 357 677 353 l 648 302 l 563 166 l 449 348 b 432 357 446 354 438 357 b 415 347 426 357 418 353 l 415 346 l 311 171 l 203 348 b 186 357 200 354 192 357 b 168 348 177 357 171 354 l 168 347 l 0 69 l 35 48 l 120 190 l 226 10 b 243 0 229 4 238 0 l 245 0 b 261 10 251 0 258 4 l 367 189 l 480 10 b 497 0 482 4 491 0 b 513 10 503 0 510 4 l 625 192 l 739 10 b 756 0 742 4 750 0 b 772 10 762 0 769 4 l 942 282 z',\n },\n ornamentPrecompAppoggTrill: {\n x_min: 0,\n x_max: 680,\n y_min: 0,\n y_max: 388,\n ha: 388,\n o: 'm 860 170 l 746 353 b 729 361 743 359 737 361 b 713 351 723 361 716 357 l 685 307 l 600 170 l 487 353 b 481 359 485 356 484 357 b 469 361 478 360 472 361 b 452 351 464 361 455 357 l 348 176 l 240 353 b 223 361 238 359 229 361 b 206 353 215 361 209 359 l 40 76 l 40 541 b 20 559 39 552 30 559 b 0 541 10 559 1 552 l 0 26 b 19 1 0 16 9 4 b 26 0 20 1 24 0 b 48 13 35 0 43 6 l 72 52 l 157 194 l 265 14 b 282 4 268 9 276 4 b 298 14 288 4 295 9 l 405 193 l 517 14 b 534 4 520 9 528 4 b 550 14 540 4 547 9 l 664 196 l 776 14 b 793 4 779 9 788 4 b 811 14 799 4 808 9 l 979 287 l 945 307 z',\n },\n ornamentPrecompSlideTrillDAnglebert: {\n x_min: 0,\n x_max: 662,\n y_min: -158,\n y_max: 248,\n ha: 406,\n o: 'm 834 166 l 720 348 b 704 357 717 354 713 357 b 687 348 697 357 690 353 l 661 302 l 660 302 l 575 166 l 461 348 b 455 354 459 350 456 353 b 444 357 452 356 448 357 b 428 347 438 357 431 353 l 323 171 l 215 347 b 213 350 215 348 215 350 b 213 350 213 350 213 350 l 213 351 l 212 351 l 212 353 l 210 353 l 210 353 l 209 354 b 207 354 209 354 207 354 b 197 357 206 356 200 357 b 197 357 197 357 197 357 b 194 357 196 357 196 357 b 180 347 187 357 183 353 l 180 346 l 69 164 b 0 -50 23 88 0 17 b 49 -219 0 -108 16 -163 b 66 -228 52 -223 59 -228 b 76 -225 69 -228 73 -226 b 86 -207 82 -222 86 -215 b 84 -197 86 -204 85 -200 b 40 -52 55 -150 40 -102 b 104 143 40 10 62 73 l 131 190 l 239 10 b 256 0 242 4 249 0 l 256 0 b 272 10 262 0 269 4 l 379 189 l 491 10 b 508 0 494 4 503 0 b 508 0 508 0 508 0 l 508 0 b 526 10 514 0 521 4 l 638 192 l 750 10 b 768 0 755 4 762 0 l 768 0 b 785 10 773 0 782 4 l 785 10 l 953 282 l 919 302 z',\n },\n ornamentPrecompSlideTrillBach: {\n x_min: 0,\n x_max: 662,\n y_min: -158,\n y_max: 321,\n ha: 479,\n o: 'm 834 166 l 720 348 b 704 357 716 354 713 357 b 687 348 698 357 690 354 l 660 304 l 660 302 l 632 259 l 632 442 b 612 462 632 454 624 462 l 599 462 b 579 442 588 462 579 454 l 579 173 l 575 166 l 461 348 b 455 356 459 351 458 354 b 445 359 452 357 448 359 b 428 348 439 359 431 354 l 323 171 l 215 347 b 213 350 215 348 213 350 l 213 351 l 212 353 l 210 353 l 210 354 l 207 354 b 197 357 204 356 200 357 b 180 348 189 357 183 354 l 179 346 l 69 164 b 0 -49 23 88 0 19 b 49 -217 0 -107 17 -163 b 66 -228 52 -223 60 -228 b 76 -225 69 -228 73 -226 b 86 -207 82 -222 86 -213 b 84 -197 86 -204 85 -200 b 42 -50 56 -148 42 -101 b 104 144 42 12 62 75 l 131 190 l 239 10 b 256 0 242 4 251 0 b 274 10 262 0 271 4 l 379 190 l 491 10 b 508 0 494 4 503 0 b 526 10 514 0 523 4 l 579 98 l 579 -84 b 599 -104 579 -95 588 -104 l 612 -104 b 632 -84 624 -104 632 -95 l 632 183 l 638 192 l 750 10 b 768 0 753 4 762 0 b 785 10 773 0 782 4 l 953 282 l 919 302 z',\n },\n ornamentPrecompTrillSuffixDandrieu: {\n x_min: 0,\n x_max: 662,\n y_min: 0,\n y_max: 406,\n ha: 406,\n o: 'm 904 575 b 887 585 901 580 893 585 b 877 582 884 585 880 583 b 867 564 871 579 867 570 b 870 554 867 562 868 557 b 912 408 897 505 912 458 b 850 213 912 346 891 282 l 822 167 l 714 348 b 697 357 711 354 703 357 b 680 348 691 357 683 354 l 575 168 l 462 348 b 445 357 459 354 451 357 b 428 348 439 357 431 354 l 315 167 l 203 348 b 186 357 200 354 192 357 b 168 348 180 357 171 354 l 0 76 l 35 55 l 120 192 l 233 10 b 249 0 238 4 240 0 b 266 10 255 0 264 4 l 294 55 l 379 192 l 492 9 b 498 3 494 6 495 4 b 508 0 501 1 505 0 b 526 10 514 0 523 4 l 631 186 l 737 13 b 746 3 739 10 743 4 b 756 0 749 1 753 0 b 773 9 762 0 770 3 l 884 193 b 953 406 930 269 953 338 b 904 575 953 464 936 520 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefix: {\n x_min: 0,\n x_max: 857,\n y_min: 0,\n y_max: 248,\n ha: 248,\n o: 'm 383 140 b 413 189 399 166 412 187 b 520 10 423 171 516 16 b 537 0 523 4 530 0 b 554 10 543 0 550 4 b 660 189 557 16 649 171 b 772 10 671 173 766 19 b 791 0 778 1 785 0 b 806 10 796 0 802 4 b 919 192 809 16 907 174 l 1031 10 b 1048 0 1035 4 1043 0 l 1048 0 b 1066 10 1054 1 1063 4 l 1066 10 l 1234 282 l 1200 302 l 1115 166 l 1002 348 b 985 357 998 354 994 357 b 968 348 978 357 971 353 l 855 166 b 742 348 845 183 746 341 b 726 357 737 354 732 357 b 708 348 719 357 711 354 b 603 171 704 341 613 189 b 495 348 593 189 498 343 b 478 357 492 353 487 357 b 461 348 469 357 464 353 b 357 173 459 346 393 235 b 213 79 320 111 284 79 b 66 176 143 79 95 112 b 40 279 43 228 40 275 b 20 300 40 291 30 300 b 0 278 9 300 0 289 b 29 161 0 276 3 219 b 213 39 65 81 130 39 b 383 140 297 39 346 73 z',\n },\n ornamentPrecompTrillLowerSuffix: {\n x_min: 0,\n x_max: 565,\n y_min: -171,\n y_max: 249,\n ha: 420,\n o: 'm 347 168 l 235 348 b 217 359 230 354 226 359 b 200 348 209 359 203 353 b 3 30 197 344 6 35 b 0 20 0 26 0 24 b 22 0 0 9 10 0 b 37 9 27 0 35 3 l 151 192 b 265 10 161 174 262 13 b 281 0 268 6 272 0 b 298 10 289 0 295 3 l 403 186 l 511 10 b 528 0 516 4 521 0 b 546 10 537 0 541 4 l 698 265 b 775 22 744 202 775 112 b 700 -215 775 -60 752 -144 b 696 -226 697 -219 696 -222 b 704 -243 696 -232 700 -239 b 717 -246 708 -246 713 -246 b 733 -239 723 -246 729 -243 b 814 20 789 -160 814 -69 b 711 312 814 132 773 242 b 696 320 707 317 700 320 b 680 310 691 320 684 318 b 595 168 671 297 602 181 l 488 348 b 471 359 484 354 478 359 b 454 348 464 359 456 353 b 347 168 449 343 357 186 z',\n },\n brassMuteClosed: {\n x_min: 0,\n x_max: 312,\n y_min: 0,\n y_max: 312,\n ha: 312,\n o: 'm 22 256 b 0 225 7 256 0 240 b 22 193 0 209 7 193 l 193 193 l 193 22 b 225 0 193 7 209 0 b 256 22 240 0 256 7 l 256 193 l 428 193 b 449 225 442 193 449 209 b 428 256 449 240 442 256 l 256 256 l 256 428 b 225 449 256 442 240 449 b 193 428 209 449 193 442 l 193 256 z',\n },\n brassMuteOpen: {\n x_min: 0,\n x_max: 280,\n y_min: 0,\n y_max: 280,\n ha: 280,\n o: 'm 202 403 b 0 202 91 403 0 312 b 202 0 0 91 91 0 b 403 202 312 0 403 91 b 202 403 403 312 312 403 z m 202 40 b 40 202 112 40 40 112 b 202 363 40 291 112 363 b 363 202 291 363 363 291 b 202 40 363 112 291 40 z',\n },\n stringsDownBow: {\n x_min: 0,\n x_max: 315,\n y_min: 0,\n y_max: 293,\n ha: 293,\n o: 'm 40 0 l 40 291 l 413 291 l 413 0 l 454 0 l 454 402 b 433 422 454 413 445 422 l 20 422 b 0 402 9 422 0 402 l 0 0 z',\n },\n stringsUpBow: {\n x_min: 0,\n x_max: 262,\n y_min: 0,\n y_max: 343,\n ha: 343,\n o: 'm 374 485 b 357 494 372 490 363 494 l 337 494 b 318 481 330 494 321 488 l 189 118 l 59 481 b 40 494 56 488 48 494 l 20 494 b 0 474 9 494 0 485 b 1 467 0 472 1 468 l 170 13 b 189 0 173 6 181 0 b 207 13 196 0 204 6 l 376 467 b 377 474 376 468 377 472 b 374 485 377 477 376 482 z',\n },\n stringsHarmonic: {\n x_min: 0,\n x_max: 181,\n y_min: 0,\n y_max: 181,\n ha: 181,\n o: 'm 131 220 b 220 131 181 220 220 181 b 131 40 220 81 181 40 b 40 131 81 40 40 81 b 131 220 40 181 81 220 z m 131 261 b 0 131 59 261 0 203 b 131 0 0 59 59 0 b 261 131 203 0 261 59 b 131 261 261 203 203 261 z',\n },\n pluckedSnapPizzicatoAbove: {\n x_min: 0,\n x_max: 269,\n y_min: 0,\n y_max: 389,\n ha: 389,\n o: 'm 213 540 b 194 560 213 552 204 560 b 174 540 183 560 174 552 l 174 386 b 0 193 76 376 0 294 b 194 0 0 86 86 0 b 387 193 301 0 387 86 b 213 386 387 294 311 376 z m 194 40 b 40 193 109 40 40 109 b 174 346 40 271 98 336 l 174 193 b 194 173 174 183 183 173 b 213 193 204 173 213 183 l 213 346 b 347 193 289 336 347 271 b 194 40 347 109 278 40 z',\n },\n pluckedSnapPizzicatoBelow: {\n x_min: 0,\n x_max: 269,\n y_min: 0,\n y_max: 389,\n ha: 389,\n o: 'm 213 174 b 387 367 311 184 387 266 b 193 560 387 474 301 560 b 0 367 86 560 0 474 b 174 174 0 266 76 184 l 174 20 b 194 0 174 9 183 0 b 213 20 204 0 213 9 z m 194 520 b 347 367 278 520 347 452 b 213 215 347 289 289 225 l 213 367 b 194 387 213 377 204 387 b 174 367 183 387 174 377 l 174 215 b 40 367 98 225 40 289 b 194 520 40 452 109 520 z',\n },\n keyboardPedalPed: {\n x_min: 0,\n x_max: 981,\n y_min: -10,\n y_max: 545,\n ha: 555,\n o: 'm 1354 12 b 1413 78 1385 12 1413 42 b 1354 145 1413 115 1385 145 b 1293 78 1320 145 1293 115 b 1354 12 1293 42 1320 12 z m 1092 88 b 1080 86 1089 86 1084 86 b 1004 203 1037 86 1004 137 b 1107 376 1004 360 1097 374 b 1149 209 1129 336 1149 287 b 1092 88 1149 117 1130 95 z m 752 393 b 795 344 779 393 795 372 b 770 285 795 325 788 304 b 693 203 737 249 697 207 b 688 264 690 225 688 245 b 752 393 688 347 714 393 z m 245 507 b 220 544 245 533 235 544 b 217 544 219 544 219 544 b 186 510 206 546 192 537 b 143 464 179 478 163 464 b 134 465 140 464 137 464 b 102 516 117 467 102 487 b 141 613 102 541 112 576 b 347 721 212 711 315 721 b 356 721 351 721 354 721 b 275 560 344 701 297 616 b 259 495 274 557 259 528 b 272 452 259 480 264 465 b 373 323 297 416 350 354 b 387 284 382 311 387 298 b 350 222 387 265 376 245 b 230 140 301 180 252 154 b 128 39 215 130 128 92 b 134 12 128 30 130 22 b 173 -14 144 -7 157 -14 b 264 40 204 -14 243 17 b 333 98 281 58 302 98 b 389 39 357 98 373 60 b 478 -10 416 1 435 -10 b 622 96 527 -10 559 43 b 740 -10 626 86 667 -10 b 929 95 827 -10 917 85 b 1086 -12 950 37 1018 -12 b 1120 -7 1097 -12 1109 -10 b 1264 213 1212 17 1264 111 b 1263 248 1264 225 1263 236 b 815 664 1228 544 907 647 b 785 668 805 665 795 668 b 779 668 783 668 782 668 b 757 654 769 668 760 665 b 757 649 757 652 757 651 b 786 618 759 629 783 619 b 818 606 796 613 808 611 b 1071 435 1007 534 1066 445 b 909 181 930 386 909 256 b 910 141 909 164 909 151 b 786 78 899 127 844 78 b 708 151 726 78 710 144 b 799 230 711 154 742 181 b 864 350 845 271 864 312 b 757 456 864 410 815 456 b 599 222 644 456 599 328 b 609 141 599 192 602 164 b 563 104 608 140 595 122 b 540 98 556 99 549 98 b 459 140 513 98 480 118 b 397 184 413 189 399 184 b 475 279 403 189 454 226 b 482 311 480 289 482 300 b 449 410 482 359 452 405 b 361 533 442 419 383 503 b 354 560 356 541 354 550 b 386 651 353 588 372 622 b 429 713 405 693 426 710 b 557 592 521 688 557 628 b 549 569 557 582 554 573 b 523 559 540 562 531 559 b 459 592 495 559 469 583 b 425 613 451 600 438 613 b 409 608 419 613 415 612 b 399 586 402 602 399 595 b 399 583 397 585 399 585 b 409 552 399 573 405 562 b 541 458 441 487 492 458 b 608 480 564 458 588 465 b 648 572 632 497 648 531 b 429 778 648 649 589 749 b 351 785 402 782 376 785 b 0 507 130 785 0 615 b 127 366 0 399 68 366 b 245 507 186 366 245 429 z',\n },\n keyboardPedalUp: {\n x_min: 0,\n x_max: 473,\n y_min: 0,\n y_max: 473,\n ha: 473,\n o: 'm 99 99 b 164 69 120 79 143 69 b 199 82 177 69 190 73 b 210 114 206 89 210 102 b 206 137 210 122 209 130 b 200 160 203 145 200 154 b 210 179 200 166 203 171 l 245 215 b 285 213 255 225 272 219 l 287 213 l 288 212 b 318 183 301 206 318 196 l 318 134 b 291 102 318 112 308 112 b 258 58 274 92 258 76 b 340 0 258 26 294 0 b 423 58 386 0 423 26 b 390 102 423 76 408 92 b 361 134 373 112 361 112 l 361 183 b 392 212 361 196 379 206 b 395 213 393 212 393 213 b 436 215 408 219 426 225 l 471 179 b 480 161 478 171 480 167 b 474 137 480 154 477 147 b 471 115 472 130 471 122 b 482 82 471 102 474 91 b 517 69 491 73 504 69 b 582 99 539 69 562 79 b 612 164 602 120 612 143 b 599 199 612 177 608 190 b 567 210 592 206 579 210 b 544 206 559 210 552 209 b 521 200 536 203 528 200 b 501 210 514 200 508 203 l 467 245 b 468 285 456 255 462 272 l 468 287 b 469 288 468 287 469 287 b 498 318 475 301 485 318 l 547 318 b 579 291 569 318 569 308 b 624 258 589 274 605 258 b 681 340 655 258 681 294 b 624 423 681 386 655 423 b 579 390 605 423 589 408 b 547 361 569 373 569 361 l 498 361 b 469 392 485 361 475 379 b 468 395 469 393 468 393 b 467 436 462 408 456 426 l 501 471 b 520 480 508 478 514 480 b 544 474 527 480 534 477 b 566 471 552 472 559 471 b 599 482 579 471 590 474 b 612 516 608 491 612 503 b 582 580 612 536 602 560 b 516 612 562 600 537 612 b 482 599 503 612 491 608 b 471 566 474 590 471 579 b 474 544 471 559 472 552 b 480 520 477 534 480 527 b 471 501 480 514 478 508 l 436 467 b 395 468 426 456 408 462 b 392 469 393 468 393 469 b 361 498 379 475 361 485 l 361 547 b 390 579 361 569 373 569 b 423 624 408 589 423 605 b 340 681 423 655 386 681 b 258 624 294 681 258 655 b 291 579 258 605 274 589 b 318 547 308 569 318 569 l 318 498 b 288 469 318 485 301 475 l 287 468 l 285 468 b 245 467 272 462 255 456 l 210 501 b 200 521 203 508 200 514 b 206 544 200 528 203 536 b 210 567 209 552 210 559 b 199 599 210 579 206 592 b 164 612 190 608 177 612 b 99 582 143 612 120 602 b 69 517 79 562 69 539 b 82 482 69 504 73 491 b 115 471 91 474 102 471 b 137 474 122 471 130 472 b 161 480 147 477 154 480 b 180 471 167 480 173 478 l 215 436 b 213 395 225 426 219 408 b 212 392 213 393 212 393 b 183 361 206 379 196 361 l 134 361 b 102 390 112 361 112 373 b 58 423 92 408 76 423 b 0 340 26 423 0 386 b 58 258 0 294 26 258 b 102 291 76 258 92 274 b 134 318 112 308 112 318 l 183 318 b 212 288 196 318 206 301 b 213 287 212 287 213 288 l 213 285 b 215 245 219 272 225 255 l 179 210 b 160 200 171 203 166 200 b 137 206 154 200 145 203 b 114 210 130 209 122 210 b 82 199 102 210 89 206 b 69 164 73 190 69 177 b 99 99 69 143 79 120 z m 276 276 b 249 340 262 291 249 320 b 340 432 249 390 289 432 b 432 340 390 432 432 390 b 405 276 432 320 419 291 b 340 249 390 262 360 249 b 276 276 320 249 291 262 z',\n },\n wiggleArpeggiatoUp: {\n x_min: -22,\n x_max: 242,\n y_min: 0,\n y_max: 164,\n ha: 164,\n o: 'm 343 122 b 323 143 343 122 334 132 b 308 148 318 147 312 148 b 298 144 304 148 301 147 b 282 128 295 141 291 137 b 274 124 279 125 276 124 b 265 128 268 124 265 128 b 158 220 265 128 173 207 b 112 236 143 232 127 236 b 43 206 82 236 55 219 l -26 137 b -32 125 -30 132 -32 130 b -26 112 -32 118 -26 112 b -6 92 -26 112 -17 102 b 7 86 -1 88 3 86 b 17 91 12 86 14 88 b 33 107 20 94 24 98 b 42 111 36 109 39 111 b 52 107 48 111 52 107 b 158 16 52 107 144 29 b 204 0 174 4 190 0 b 274 30 235 0 262 17 l 343 99 b 348 111 347 104 348 108 b 343 122 348 118 343 122 z',\n },\n repeat1Bar: {\n x_min: 0,\n x_max: 481,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 693 -181 b 602 -91 693 -131 651 -91 b 511 -181 552 -91 511 -131 b 602 -272 511 -232 552 -272 b 693 -181 651 -272 693 -232 z',\n },\n repeat2Bars: {\n x_min: 0,\n x_max: 735,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 1058 -181 b 968 -91 1058 -131 1017 -91 b 877 -181 917 -91 877 -131 b 968 -272 877 -232 917 -272 b 1058 -181 1017 -272 1058 -232 z m 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 1058 360 l 877 360 l 366 -360 l 547 -360 z',\n },\n repeat4Bars: {\n x_min: 0,\n x_max: 1243,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 1058 360 l 877 360 l 366 -360 l 547 -360 z m 1424 360 l 1243 360 l 732 -360 l 913 -360 z m 1790 360 l 1608 360 l 1097 -360 l 1279 -360 z m 1790 -181 b 1699 -91 1790 -131 1748 -91 b 1608 -181 1649 -91 1608 -131 b 1699 -272 1608 -232 1649 -272 b 1790 -181 1748 -272 1790 -232 z',\n },\n repeatBarSlash: {\n x_min: 0,\n x_max: 481,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 693 360 l 511 360 l 0 -360 l 181 -360 z',\n },\n csymDiminished: {\n x_min: 0,\n x_max: 501,\n y_min: 0,\n y_max: 501,\n ha: 501,\n o: 'm 361 721 b 0 361 161 721 0 560 b 361 0 0 161 161 0 b 721 361 560 0 721 161 b 361 721 721 560 560 721 z m 557 164 b 361 82 505 111 435 82 b 164 164 287 82 216 111 b 82 361 111 216 82 287 b 164 557 82 436 111 505 b 361 639 216 611 287 639 b 557 557 436 639 505 611 b 639 361 611 505 639 436 b 557 164 639 287 609 216 z',\n },\n csymHalfDiminished: {\n x_min: -1,\n x_max: 502,\n y_min: -1,\n y_max: 502,\n ha: 503,\n o: 'm 723 684 l 684 723 l 596 634 b 361 721 533 688 451 721 b 0 361 161 721 0 560 b 88 125 0 271 33 189 l -1 36 l 36 -1 l 125 88 b 361 0 189 33 271 0 b 721 361 560 0 721 161 b 634 596 721 451 688 533 z m 82 361 b 164 557 82 436 111 505 b 361 639 216 611 287 639 b 537 576 426 639 488 616 l 145 184 b 82 361 105 233 82 295 z m 639 361 b 557 164 639 287 609 216 b 361 82 505 111 435 82 b 184 145 295 82 233 105 l 576 537 b 639 361 616 488 639 426 z',\n },\n csymAugmented: {\n x_min: 1,\n x_max: 321,\n y_min: 90,\n y_max: 410,\n ha: 320,\n o: 'm 462 400 l 272 400 l 272 590 l 192 590 l 192 400 l 1 400 l 1 320 l 192 320 l 192 130 l 272 130 l 272 320 l 462 320 z',\n },\n csymMajorSeventh: {\n x_min: 0,\n x_max: 500,\n y_min: 10,\n y_max: 490,\n ha: 480,\n o: 'm 360 528 l 585 96 l 135 96 z m 360 706 l 0 14 l 720 14 z',\n },\n accidentalNarrowReversedFlat: {\n x_min: 0,\n x_max: 160,\n y_min: -176,\n y_max: 452,\n ha: 628,\n o: 'm 0 84 b 101 -153 0 -26 65 -107 b 196 -249 153 -217 196 -249 b 206 -253 199 -251 202 -253 b 225 -235 216 -253 225 -245 l 230 632 b 212 651 230 642 222 651 l 199 651 b 180 632 189 651 180 642 l 184 204 b 125 217 184 204 171 217 b 0 84 53 217 0 173 z m 145 154 b 184 107 181 154 184 120 l 187 -179 b 114 -72 167 -158 132 -112 b 82 58 86 -13 82 36 b 145 154 82 79 82 154 z',\n },\n accidentalNarrowReversedFlatAndFlat: {\n x_min: 0,\n x_max: 416,\n y_min: -176,\n y_max: 452,\n ha: 628,\n o: 'm 462 217 b 330 174 374 217 338 181 l 334 632 b 315 651 334 642 325 651 l 302 651 b 284 632 292 651 284 642 l 289 -235 b 308 -253 289 -245 298 -253 b 320 -249 312 -253 317 -251 b 492 -138 320 -249 433 -194 b 599 84 534 -98 599 -26 b 462 217 599 173 534 217 z m 501 58 b 459 -72 501 36 498 -19 b 327 -179 431 -111 359 -164 l 330 85 l 330 91 b 422 154 330 125 359 154 b 501 58 503 154 501 79 z m 0 84 b 101 -153 0 -26 65 -107 b 196 -249 153 -217 196 -249 b 206 -253 199 -251 202 -253 b 225 -235 216 -253 225 -245 l 230 632 b 212 651 230 642 222 651 l 199 651 b 180 632 189 651 180 642 l 184 204 b 125 217 184 204 171 217 b 0 84 53 217 0 173 z m 145 154 b 184 107 181 154 184 120 l 187 -179 b 114 -72 167 -158 132 -112 b 82 58 86 -13 82 36 b 145 154 82 79 82 154 z',\n },\n },\n fontFamily: 'Leland',\n resolution: 1000,\n generatedOn: '2022-06-26T17:49:33.853Z',\n};\n","export const LelandMetrics = {\n name: 'Leland',\n smufl: true,\n stave: {\n padding: 12,\n endPaddingMax: 10,\n endPaddingMin: 5,\n unalignedNotePadding: 10,\n },\n accidental: {\n noteheadAccidentalPadding: 1,\n leftPadding: 2,\n accidentalSpacing: 3,\n },\n clef: {\n default: {\n point: 32,\n width: 26,\n },\n small: {\n point: 26,\n width: 20,\n },\n annotations: {\n '8va': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: -1.4,\n shiftX: 12,\n },\n },\n small: {\n point: 16,\n treble: {\n line: -0.2,\n shiftX: 8,\n },\n },\n },\n '8vb': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: 6,\n shiftX: 10,\n },\n bass: {\n line: 3.5,\n shiftX: 1,\n },\n },\n small: {\n point: 16,\n treble: {\n line: 5.3,\n shiftX: 6,\n },\n bass: {\n line: 3.1,\n shiftX: 0.5,\n },\n },\n },\n },\n // These may no longer be necessary\n lineCount: {\n '8': { point: 55, shiftY: 14 },\n '7': { point: 47, shiftY: 8 },\n '6': { point: 32, shiftY: 1 },\n '5': { point: 30, shiftY: -6 },\n '4': { point: 23, shiftY: -12 },\n },\n },\n parenthesis: {\n default: {\n point: 39,\n width: 7,\n },\n gracenote: {\n point: (39 * 3) / 5,\n width: 3,\n },\n },\n pedalMarking: {\n up: {\n point: 40,\n },\n down: {\n point: 34,\n },\n },\n // These are for numeric digits, such as in time signatures\n digits: {\n // used by timesig\n shiftLine: -1,\n point: 34,\n // used by tuplets\n tupletPoint: 22,\n shiftY: -6,\n },\n articulation: {\n articStaccatissimoAbove: {\n padding: 2,\n },\n articStaccatissimoBelow: {\n padding: 2,\n },\n },\n tremolo: {\n default: {\n point: 25,\n spacing: 5,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 11,\n offsetXStemDown: 1,\n },\n grace: {\n point: 18,\n spacing: 4,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 7,\n offsetXStemDown: 1,\n },\n },\n staveRepetition: {\n symbolText: {\n offsetX: 12,\n offsetY: 25,\n spacing: 5,\n },\n coda: {\n offsetY: 25,\n },\n segno: {\n offsetY: 10,\n },\n },\n // noteHead: {\n // },\n stem: {\n heightAdjustmentForFlag: -3,\n // These are stem (Y) offsets to the note heads. To shift the\n // noteheads (x-position) themselves, see glyphs.notehead.custom.\n noteHead: {\n noteheadTriangleUpHalf: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpBlack: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpWhole: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadXHalf: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXBlack: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXWhole: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadHalf: {\n offsetYBaseStemUp: -2.55,\n offsetYBaseStemDown: 2.65,\n },\n noteheadBlack: {\n offsetYBaseStemUp: -2,\n offsetYBaseStemDown: 2,\n },\n noteheadSquareWhite: {\n offsetYBaseStemDown: -5,\n offsetYBaseStemUp: 5,\n },\n },\n },\n // Values under here are used by the Glyph class to reposition and rescale\n // glyphs based on their category. This should be the first stop for\n // custom font glyph repositioning.\n //\n // The glyph loader first looks up a specific set of settings based on the\n // glyph code, and if not found, uses the defaults from the category. See\n // glyphs.textNote for an example of this.\n //\n // Details in Glyph.lookupFontMetrics.\n glyphs: {\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n segno: {\n shiftX: -7,\n },\n flag: {\n shiftX: -0.75,\n staveTempo: {\n shiftX: -1,\n },\n },\n clef: {\n gClef: {\n default: { scale: 1.1, shiftY: 1 },\n small: { shiftY: 1.5 },\n },\n fClef: {\n default: { shiftY: -0.5 },\n },\n },\n ornament: {\n ornamentTurn: {\n scale: 1.2,\n },\n ornamentTurnSlash: {\n scale: 1.2,\n },\n },\n stringNumber: {\n verticalPadding: 8,\n stemPadding: 2,\n leftPadding: 5,\n rightPadding: 6,\n },\n stroke: {\n arrowheadBlackDown: {\n straight: {\n shiftX: -4.5,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n arrowheadBlackUp: {\n straight: {\n shiftX: -0.85,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n },\n textNote: {\n point: 34,\n breathMarkTick: {\n point: 36,\n shiftY: 9,\n },\n breathMarkComma: {\n point: 36,\n },\n segno: {\n point: 30,\n shiftX: -7,\n shiftY: 8,\n },\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n ornamentTrill: {\n shiftX: -8,\n shiftY: 8,\n },\n ornamentTurn: {\n point: 42,\n },\n ornamentTurnSlash: {\n point: 42,\n },\n ornamentMordent: {\n shiftX: -8,\n },\n ornamentShortTrill: {\n shiftX: -8,\n },\n },\n noteHead: {\n minPadding: 2,\n standard: {\n restQuarterStemUp: {\n point: 35,\n },\n restQuarterStemDown: {\n point: 35,\n },\n },\n custom: {\n noteheadCircleXStemUp: {\n shiftX: 1.5,\n },\n noteheadCircleXStemDown: {\n shiftX: 0.25,\n },\n noteheadDiamondHalfStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondBlackStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondWholeStemUp: {\n shiftX: 1,\n },\n noteheadXHalfStemUp: {\n shiftX: -2,\n },\n noteheadXHalfStemDown: {\n shiftX: 1,\n },\n noteheadXWholeStemUp: {\n shiftX: -4,\n },\n noteheadXWholeStemDown: {\n shiftX: 1,\n },\n noteheadSquareWhiteStemDown: {\n shiftX: 0.25,\n },\n noteheadSquareWhiteStemUp: {\n shiftX: -0.75,\n },\n noteheadSquareBlackStemUp: {\n shiftX: -0.75,\n },\n noteheadTriangleUpWholeStemUp: {\n shiftX: -0.75,\n },\n },\n },\n chordSymbol: {\n global: {\n superscriptOffset: -400,\n subscriptOffset: 300,\n kerningOffset: -250,\n lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'],\n upperKerningText: ['A', 'L'],\n spacing: 100,\n superSubRatio: 0.66,\n },\n csymDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymHalfDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymAugmented: {\n scale: 1,\n leftSideBearing: 0,\n advanceWidth: 530,\n yOffset: 0,\n },\n csymParensLeftTall: {\n scale: 0.8,\n leftSideBearing: -20,\n advanceWidth: 184,\n yOffset: 250,\n },\n csymParensRightTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 189,\n yOffset: 250,\n },\n csymBracketLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 328,\n yOffset: 0,\n },\n csymBracketRightTall: {\n scale: 0.8,\n leftSideBearing: 1,\n advanceWidth: 600,\n yOffset: 0,\n },\n csymParensLeftVeryTall: {\n scale: 0.9,\n leftSideBearing: 50,\n advanceWidth: 121,\n yOffset: 350,\n },\n csymParensRightVeryTall: {\n scale: 0.9,\n leftSideBearing: 0,\n advanceWidth: 111,\n yOffset: 350,\n },\n csymDiagonalArrangementSlash: {\n scale: 0.6,\n leftSideBearing: -1,\n advanceWidth: 990,\n yOffset: 0,\n },\n csymMinor: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 482,\n yOffset: 0,\n },\n csymMajorSeventh: {\n scale: 0.9,\n leftSideBearing: 200,\n yOffset: 0,\n advanceWidth: 600,\n },\n accidentalSharp: {\n scale: 0.75,\n leftSideBearing: 20,\n advanceWidth: 250,\n yOffset: -302,\n },\n accidentalFlat: {\n scale: 0.9,\n leftSideBearing: -20,\n advanceWidth: 226,\n yOffset: -184,\n },\n },\n jazzOrnaments: {\n brassScoop: {\n scale: 1.0,\n xOffset: -12,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 20,\n },\n brassDoitMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 22,\n },\n brassFallLipShort: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassLiftMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 5,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassFallRoughMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 28,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassBend: {\n scale: 1.0,\n xOffset: 2,\n yOffset: -8,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassMuteClosed: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -8,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassMuteOpen: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -7,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassFlip: {\n scale: 1.0,\n xOffset: 10,\n yOffset: 0,\n stemUpYOffset: 7,\n reportedWidth: 10,\n },\n brassJazzTurn: {\n scale: 1.0,\n xOffset: 0,\n yOffset: 0,\n stemUpYOffset: 8,\n reportedWidth: 31,\n },\n brassSmear: {\n scale: 1.0,\n xOffset: 10,\n yOffset: 0,\n stemUpYOffset: 8,\n reportedWidth: 5,\n },\n },\n tuplet: {\n noteHeadOffset: 20,\n stemOffset: 10,\n bottomLine: 4,\n topModifierOffset: 15,\n },\n },\n};\n","export const PetalumaScriptFont = {\n spacing: 50,\n glyphs: {\n ' ': {\n x_min: 0,\n x_max: 250,\n y_min: 0,\n y_max: 500,\n ha: 500,\n leftSideBearing: 0,\n advanceWidth: 250,\n },\n '0': {\n x_min: 33,\n x_max: 534,\n y_min: -13,\n y_max: 751,\n ha: 764,\n leftSideBearing: 33,\n advanceWidth: 570,\n },\n '1': {\n x_min: 48,\n x_max: 235,\n y_min: -17,\n y_max: 734,\n ha: 751,\n leftSideBearing: 48,\n advanceWidth: 286,\n },\n '2': {\n x_min: 56,\n x_max: 571,\n y_min: -19,\n y_max: 741,\n ha: 760,\n leftSideBearing: 56,\n advanceWidth: 626,\n },\n '3': {\n x_min: 50,\n x_max: 528,\n y_min: -7,\n y_max: 731,\n ha: 738,\n leftSideBearing: 50,\n advanceWidth: 589,\n },\n '4': {\n x_min: 38,\n x_max: 564,\n y_min: -13,\n y_max: 743,\n ha: 756,\n leftSideBearing: 38,\n advanceWidth: 614,\n },\n '5': {\n x_min: 42,\n x_max: 601,\n y_min: -34,\n y_max: 743,\n ha: 777,\n leftSideBearing: 42,\n advanceWidth: 648,\n },\n '6': {\n x_min: 47,\n x_max: 606,\n y_min: -16,\n y_max: 743,\n ha: 759,\n leftSideBearing: 47,\n advanceWidth: 667,\n },\n '7': {\n x_min: 47,\n x_max: 567,\n y_min: 5,\n y_max: 739,\n ha: 734,\n leftSideBearing: 0,\n advanceWidth: 615,\n },\n '8': {\n x_min: 40,\n x_max: 541,\n y_min: -15,\n y_max: 752,\n ha: 767,\n leftSideBearing: 40,\n advanceWidth: 585,\n },\n '9': {\n x_min: 40,\n x_max: 537,\n y_min: -52,\n y_max: 736,\n ha: 788,\n leftSideBearing: 40,\n advanceWidth: 592,\n },\n '!': {\n x_min: 49,\n x_max: 180,\n y_min: -7,\n y_max: 761,\n ha: 768,\n leftSideBearing: 49,\n advanceWidth: 230,\n },\n '\"': {\n x_min: 39,\n x_max: 304,\n y_min: 596,\n y_max: 804,\n ha: 208,\n leftSideBearing: 39,\n advanceWidth: 353,\n },\n '#': {\n x_min: 33,\n x_max: 599,\n y_min: -8,\n y_max: 765,\n ha: 773,\n leftSideBearing: 33,\n advanceWidth: 648,\n },\n $: {\n x_min: 53,\n x_max: 495,\n y_min: -111,\n y_max: 823,\n ha: 934,\n leftSideBearing: 53,\n advanceWidth: 560,\n },\n '%': {\n x_min: 35,\n x_max: 656,\n y_min: -128,\n y_max: 808,\n ha: 936,\n leftSideBearing: 35,\n advanceWidth: 711,\n },\n '&': {\n x_min: 53,\n x_max: 441,\n y_min: -3,\n y_max: 753,\n ha: 756,\n leftSideBearing: 53,\n advanceWidth: 500,\n },\n \"'\": {\n x_min: 43,\n x_max: 161,\n y_min: 590,\n y_max: 811,\n ha: 221,\n leftSideBearing: 43,\n advanceWidth: 217,\n },\n '(': {\n x_min: 41,\n x_max: 311,\n y_min: -36,\n y_max: 845,\n ha: 881,\n leftSideBearing: 41,\n advanceWidth: 308,\n },\n ')': {\n x_min: -8,\n x_max: 257,\n y_min: -21,\n y_max: 852,\n ha: 873,\n leftSideBearing: -8,\n advanceWidth: 280,\n },\n '*': {\n x_min: 59,\n x_max: 539,\n y_min: 175,\n y_max: 589,\n ha: 414,\n leftSideBearing: 59,\n advanceWidth: 601,\n },\n '+': {\n x_min: 33,\n x_max: 361,\n y_min: 180,\n y_max: 587,\n ha: 407,\n leftSideBearing: 33,\n advanceWidth: 400,\n },\n ',': {\n x_min: 15,\n x_max: 176,\n y_min: -129,\n y_max: 92,\n ha: 221,\n leftSideBearing: 15,\n advanceWidth: 205,\n },\n '-': {\n x_min: 40,\n x_max: 380,\n y_min: 317,\n y_max: 452,\n ha: 135,\n leftSideBearing: 40,\n advanceWidth: 422,\n },\n '.': {\n x_min: 48,\n x_max: 185,\n y_min: -56,\n y_max: 84,\n ha: 140,\n leftSideBearing: 48,\n advanceWidth: 227,\n },\n '/': {\n x_min: -58,\n x_max: 654,\n y_min: -122,\n y_max: 844,\n ha: 966,\n leftSideBearing: -58,\n advanceWidth: 626,\n },\n ':': {\n x_min: 65,\n x_max: 225,\n y_min: 97,\n y_max: 536,\n ha: 439,\n leftSideBearing: 65,\n advanceWidth: 302,\n },\n ';': {\n x_min: 13,\n x_max: 295,\n y_min: -139,\n y_max: 536,\n ha: 675,\n leftSideBearing: 13,\n advanceWidth: 334,\n },\n '<': {\n x_min: 28,\n x_max: 438,\n y_min: -1,\n y_max: 607,\n ha: 608,\n leftSideBearing: 28,\n advanceWidth: 475,\n },\n '=': {\n x_min: 40,\n x_max: 383,\n y_min: 199.9598640852289,\n y_max: 541,\n ha: 341.0401359147711,\n leftSideBearing: 40,\n advanceWidth: 422,\n },\n '>': {\n x_min: 35,\n x_max: 421,\n y_min: 28,\n y_max: 632,\n ha: 604,\n leftSideBearing: 35,\n advanceWidth: 466,\n },\n '?': {\n x_min: 45,\n x_max: 548,\n y_min: -17,\n y_max: 767,\n ha: 784,\n leftSideBearing: 45,\n advanceWidth: 592,\n },\n '@': {\n x_min: 51,\n x_max: 730,\n y_min: -78,\n y_max: 753,\n ha: 831,\n leftSideBearing: 51,\n advanceWidth: 781,\n },\n A: {\n x_min: 37,\n x_max: 554,\n y_min: -4,\n y_max: 746,\n ha: 750,\n leftSideBearing: 37,\n advanceWidth: 617,\n },\n B: {\n x_min: 37,\n x_max: 532,\n y_min: 3,\n y_max: 783,\n ha: 780,\n leftSideBearing: 37,\n advanceWidth: 579,\n },\n C: {\n x_min: 37,\n x_max: 583,\n y_min: -3,\n y_max: 775,\n ha: 778,\n leftSideBearing: 37,\n advanceWidth: 623,\n },\n D: {\n x_min: 50,\n x_max: 530,\n y_min: -15,\n y_max: 749,\n ha: 764,\n leftSideBearing: 50,\n advanceWidth: 579,\n },\n E: {\n x_min: 45,\n x_max: 531,\n y_min: -1,\n y_max: 743,\n ha: 744,\n leftSideBearing: 45,\n advanceWidth: 585,\n },\n F: {\n x_min: 45,\n x_max: 459,\n y_min: 23,\n y_max: 727,\n ha: 704,\n leftSideBearing: 45,\n advanceWidth: 510,\n },\n G: {\n x_min: 31,\n x_max: 577,\n y_min: -8,\n y_max: 733,\n ha: 741,\n leftSideBearing: 31,\n advanceWidth: 611,\n },\n H: {\n x_min: 37,\n x_max: 493,\n y_min: -22,\n y_max: 758,\n ha: 780,\n leftSideBearing: 37,\n advanceWidth: 535,\n },\n I: {\n x_min: 47,\n x_max: 501,\n y_min: -3,\n y_max: 731,\n ha: 734,\n leftSideBearing: 47,\n advanceWidth: 541,\n },\n J: {\n x_min: 33,\n x_max: 531,\n y_min: -23,\n y_max: 725,\n ha: 748,\n leftSideBearing: 33,\n advanceWidth: 573,\n },\n K: {\n x_min: 43,\n x_max: 505,\n y_min: -10,\n y_max: 740,\n ha: 750,\n leftSideBearing: 43,\n advanceWidth: 560,\n },\n L: {\n x_min: 49,\n x_max: 457,\n y_min: -2,\n y_max: 746,\n ha: 748,\n leftSideBearing: 49,\n advanceWidth: 510,\n },\n M: {\n x_min: 35,\n x_max: 699,\n y_min: 1,\n y_max: 744,\n ha: 743,\n leftSideBearing: 35,\n advanceWidth: 743,\n },\n N: {\n x_min: 34,\n x_max: 533,\n y_min: -17,\n y_max: 761,\n ha: 778,\n leftSideBearing: 34,\n advanceWidth: 579,\n },\n O: {\n x_min: 41,\n x_max: 608,\n y_min: -5,\n y_max: 735,\n ha: 740,\n leftSideBearing: 41,\n advanceWidth: 667,\n },\n P: {\n x_min: 53,\n x_max: 451,\n y_min: -18,\n y_max: 735,\n ha: 753,\n leftSideBearing: 53,\n advanceWidth: 497,\n },\n Q: {\n x_min: 40,\n x_max: 599,\n y_min: -67,\n y_max: 744,\n ha: 811,\n leftSideBearing: 40,\n advanceWidth: 648,\n },\n R: {\n x_min: 39,\n x_max: 487,\n y_min: 16,\n y_max: 735,\n ha: 719,\n leftSideBearing: 39,\n advanceWidth: 535,\n },\n S: {\n x_min: 35,\n x_max: 552,\n y_min: -47,\n y_max: 708,\n ha: 755,\n leftSideBearing: 35,\n advanceWidth: 604,\n },\n T: {\n x_min: 26,\n x_max: 656,\n y_min: -13,\n y_max: 718,\n ha: 731,\n leftSideBearing: 26,\n advanceWidth: 705,\n },\n U: {\n x_min: 41,\n x_max: 518,\n y_min: -20,\n y_max: 748,\n ha: 768,\n leftSideBearing: 41,\n advanceWidth: 567,\n },\n V: {\n x_min: 47,\n x_max: 509,\n y_min: -26,\n y_max: 744,\n ha: 770,\n leftSideBearing: 47,\n advanceWidth: 567,\n },\n W: {\n x_min: 44,\n x_max: 789,\n y_min: -35,\n y_max: 720,\n ha: 755,\n leftSideBearing: 44,\n advanceWidth: 833,\n },\n X: {\n x_min: 63,\n x_max: 635,\n y_min: -10,\n y_max: 745,\n ha: 755,\n leftSideBearing: 63,\n advanceWidth: 680,\n },\n Y: {\n x_min: 43,\n x_max: 503,\n y_min: -21,\n y_max: 734,\n ha: 755,\n leftSideBearing: 43,\n advanceWidth: 541,\n },\n Z: {\n x_min: 42,\n x_max: 584,\n y_min: -10,\n y_max: 739,\n ha: 749,\n leftSideBearing: 42,\n advanceWidth: 629,\n },\n '[': {\n x_min: 46,\n x_max: 346,\n y_min: -150,\n y_max: 884,\n ha: 1034,\n leftSideBearing: 46,\n advanceWidth: 291,\n },\n '\\\\': {\n x_min: 20,\n x_max: 616,\n y_min: -100,\n y_max: 797,\n ha: 897,\n leftSideBearing: 20,\n advanceWidth: 645,\n },\n ']': {\n x_min: -76,\n x_max: 226,\n y_min: -150,\n y_max: 881,\n ha: 1031,\n leftSideBearing: -76,\n advanceWidth: 297,\n },\n '^': {\n x_min: 43,\n x_max: 437,\n y_min: 517,\n y_max: 812,\n ha: 295,\n leftSideBearing: 43,\n advanceWidth: 478,\n },\n _: {\n x_min: 29,\n x_max: 563,\n y_min: -110,\n y_max: -1,\n ha: 109,\n leftSideBearing: 29,\n advanceWidth: 598,\n },\n '`': {\n x_min: 54,\n x_max: 321,\n y_min: 540,\n y_max: 747,\n ha: 207,\n leftSideBearing: 54,\n advanceWidth: 368,\n },\n a: {\n x_min: 20,\n x_max: 447,\n y_min: -17,\n y_max: 495,\n ha: 512,\n leftSideBearing: 20,\n advanceWidth: 494,\n },\n b: {\n x_min: 37,\n x_max: 466,\n y_min: -27,\n y_max: 770,\n ha: 797,\n leftSideBearing: 37,\n advanceWidth: 510,\n },\n c: {\n x_min: 35,\n x_max: 456,\n y_min: -9,\n y_max: 507,\n ha: 516,\n leftSideBearing: 35,\n advanceWidth: 460,\n },\n d: {\n x_min: 45,\n x_max: 520,\n y_min: -15,\n y_max: 764,\n ha: 779,\n leftSideBearing: 45,\n advanceWidth: 560,\n },\n e: {\n x_min: 33,\n x_max: 370,\n y_min: -5,\n y_max: 501,\n ha: 506,\n leftSideBearing: 33,\n advanceWidth: 397,\n },\n f: {\n x_min: 35,\n x_max: 411,\n y_min: -13,\n y_max: 695,\n ha: 708,\n leftSideBearing: 35,\n advanceWidth: 453,\n },\n g: {\n x_min: 33,\n x_max: 551,\n y_min: -257,\n y_max: 505,\n ha: 762,\n leftSideBearing: 33,\n advanceWidth: 611,\n },\n h: {\n x_min: 32,\n x_max: 458,\n y_min: -29,\n y_max: 743,\n ha: 772,\n leftSideBearing: 32,\n advanceWidth: 491,\n },\n i: {\n x_min: 45,\n x_max: 167,\n y_min: -13,\n y_max: 631,\n ha: 644,\n leftSideBearing: 45,\n advanceWidth: 220,\n },\n j: {\n x_min: -127,\n x_max: 261,\n y_min: -231,\n y_max: 601,\n ha: 832,\n leftSideBearing: -127,\n advanceWidth: 308,\n },\n k: {\n x_min: 39,\n x_max: 443,\n y_min: -3,\n y_max: 700,\n ha: 703,\n leftSideBearing: 39,\n advanceWidth: 497,\n },\n l: {\n x_min: 58,\n x_max: 168,\n y_min: -8,\n y_max: 686,\n ha: 694,\n leftSideBearing: 58,\n advanceWidth: 227,\n },\n m: {\n x_min: 39,\n x_max: 688,\n y_min: -14,\n y_max: 501,\n ha: 515,\n leftSideBearing: 39,\n advanceWidth: 718,\n },\n n: {\n x_min: 45,\n x_max: 491,\n y_min: -32,\n y_max: 512,\n ha: 544,\n leftSideBearing: 45,\n advanceWidth: 541,\n },\n o: {\n x_min: 41,\n x_max: 424,\n y_min: -12,\n y_max: 493,\n ha: 505,\n leftSideBearing: 41,\n advanceWidth: 447,\n },\n p: {\n x_min: 25,\n x_max: 529,\n y_min: -260,\n y_max: 500,\n ha: 760,\n leftSideBearing: 25,\n advanceWidth: 573,\n },\n q: {\n x_min: 53,\n x_max: 603,\n y_min: -235,\n y_max: 514,\n ha: 749,\n leftSideBearing: 53,\n advanceWidth: 623,\n },\n r: {\n x_min: 32,\n x_max: 407,\n y_min: -7,\n y_max: 492,\n ha: 499,\n leftSideBearing: 32,\n advanceWidth: 460,\n },\n s: {\n x_min: 49,\n x_max: 416,\n y_min: -12,\n y_max: 519,\n ha: 531,\n leftSideBearing: 49,\n advanceWidth: 460,\n },\n t: {\n x_min: 32,\n x_max: 442,\n y_min: -5,\n y_max: 684,\n ha: 689,\n leftSideBearing: 32,\n advanceWidth: 469,\n },\n u: {\n x_min: 41,\n x_max: 487,\n y_min: -5,\n y_max: 507,\n ha: 512,\n leftSideBearing: 41,\n advanceWidth: 510,\n },\n v: {\n x_min: 16,\n x_max: 441,\n y_min: -20,\n y_max: 542,\n ha: 562,\n leftSideBearing: 16,\n advanceWidth: 456,\n },\n w: {\n x_min: 39,\n x_max: 639,\n y_min: -22,\n y_max: 505,\n ha: 527,\n leftSideBearing: 39,\n advanceWidth: 661,\n },\n x: {\n x_min: 15,\n x_max: 505,\n y_min: -39,\n y_max: 539,\n ha: 578,\n leftSideBearing: 15,\n advanceWidth: 541,\n },\n y: {\n x_min: -98,\n x_max: 501,\n y_min: -242,\n y_max: 511,\n ha: 753,\n leftSideBearing: -98,\n advanceWidth: 548,\n },\n z: {\n x_min: 27,\n x_max: 479,\n y_min: -3,\n y_max: 494,\n ha: 497,\n leftSideBearing: 27,\n advanceWidth: 494,\n },\n '{': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '|': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '}': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '~': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n },\n fontFamily: 'PetalumaScript',\n resolution: 1000,\n generatedOn: '2020-06-14T18:33:25.407Z',\n};\n","export const RobotoSlabFont = {\n spacing: 50,\n glyphs: {\n ' ': {\n x_min: 0,\n x_max: 509,\n y_min: 0,\n y_max: 2000,\n ha: 2000,\n leftSideBearing: 0,\n advanceWidth: 509,\n },\n '0': {\n x_min: 121,\n x_max: 1048,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 121,\n advanceWidth: 1168,\n },\n '1': {\n x_min: 117,\n x_max: 767,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 117,\n advanceWidth: 844,\n },\n '2': {\n x_min: 75.8474576645637,\n x_max: 1040,\n y_min: 0,\n y_max: 1477,\n ha: 1477,\n leftSideBearing: 75,\n advanceWidth: 1131,\n },\n '3': {\n x_min: 74.85365853658536,\n x_max: 994,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 74,\n advanceWidth: 1106,\n },\n '4': {\n x_min: 63,\n x_max: 1114,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 63,\n advanceWidth: 1187,\n },\n '5': {\n x_min: 96.8448275474953,\n x_max: 982,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 96,\n advanceWidth: 1081,\n },\n '6': {\n x_min: 121,\n x_max: 1067,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 121,\n advanceWidth: 1144,\n },\n '7': {\n x_min: 76,\n x_max: 1060,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: -30,\n advanceWidth: 1128,\n },\n '8': {\n x_min: 92,\n x_max: 1039,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 92,\n advanceWidth: 1131,\n },\n '9': {\n x_min: 84,\n x_max: 1026,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 84,\n advanceWidth: 1154,\n },\n '!': {\n x_min: 143,\n x_max: 340,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 143,\n advanceWidth: 483,\n },\n '\"': {\n x_min: 166,\n x_max: 634,\n y_min: 1055,\n y_max: 1560,\n ha: 505,\n leftSideBearing: 166,\n advanceWidth: 770,\n },\n '#': {\n x_min: 63,\n x_max: 1179,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 63,\n advanceWidth: 1246,\n },\n $: {\n x_min: 81.92156915727656,\n x_max: 1012,\n y_min: -208,\n y_max: 1693,\n ha: 1901,\n leftSideBearing: 81,\n advanceWidth: 1110,\n },\n '%': {\n x_min: 77,\n x_max: 1384,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 77,\n advanceWidth: 1460,\n },\n '&': {\n x_min: 74,\n x_max: 1242,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 74,\n advanceWidth: 1289,\n },\n \"'\": {\n x_min: 166,\n x_max: 324,\n y_min: 1055,\n y_max: 1560,\n ha: 505,\n leftSideBearing: 166,\n advanceWidth: 460,\n },\n '(': {\n x_min: 114,\n x_max: 650,\n y_min: -463,\n y_max: 1636,\n ha: 2099,\n leftSideBearing: 114,\n advanceWidth: 662,\n },\n ')': {\n x_min: 11,\n x_max: 547,\n y_min: -463,\n y_max: 1636,\n ha: 2099,\n leftSideBearing: 11,\n advanceWidth: 654,\n },\n '*': {\n x_min: 66,\n x_max: 893,\n y_min: 607,\n y_max: 1456,\n ha: 849,\n leftSideBearing: 66,\n advanceWidth: 958,\n },\n '+': {\n x_min: 73,\n x_max: 1071,\n y_min: 146,\n y_max: 1206,\n ha: 1060,\n leftSideBearing: 73,\n advanceWidth: 1145,\n },\n ',': {\n x_min: 23,\n x_max: 315,\n y_min: -311,\n y_max: 221,\n ha: 532,\n leftSideBearing: 23,\n advanceWidth: 404,\n },\n '-': {\n x_min: 154,\n x_max: 643,\n y_min: 538,\n y_max: 692,\n ha: 154,\n leftSideBearing: 154,\n advanceWidth: 797,\n },\n '.': {\n x_min: 145,\n x_max: 342,\n y_min: 0,\n y_max: 202,\n ha: 202,\n leftSideBearing: 145,\n advanceWidth: 493,\n },\n '/': {\n x_min: 0,\n x_max: 774,\n y_min: -125,\n y_max: 1456,\n ha: 1581,\n leftSideBearing: 0,\n advanceWidth: 824,\n },\n ':': {\n x_min: 145,\n x_max: 342,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 145,\n advanceWidth: 419,\n },\n ';': {\n x_min: 53,\n x_max: 345,\n y_min: -311,\n y_max: 1082,\n ha: 1393,\n leftSideBearing: 53,\n advanceWidth: 424,\n },\n '<': {\n x_min: 76,\n x_max: 892,\n y_min: 107,\n y_max: 1013,\n ha: 906,\n leftSideBearing: 76,\n advanceWidth: 1017,\n },\n '=': {\n x_min: 147,\n x_max: 981,\n y_min: 407,\n y_max: 987,\n ha: 580,\n leftSideBearing: 147,\n advanceWidth: 1127,\n },\n '>': {\n x_min: 125,\n x_max: 980,\n y_min: 87,\n y_max: 993,\n ha: 906,\n leftSideBearing: 125,\n advanceWidth: 1060,\n },\n '?': {\n x_min: 65.92660602419838,\n x_max: 890,\n y_min: 0,\n y_max: 1477,\n ha: 1477,\n leftSideBearing: 65,\n advanceWidth: 953,\n },\n '@': {\n x_min: 84.3592218305664,\n x_max: 1705.2346925277395,\n y_min: -453,\n y_max: 1431,\n ha: 1884,\n leftSideBearing: 84,\n advanceWidth: 1821,\n },\n A: {\n x_min: 70,\n x_max: 1463,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 70,\n advanceWidth: 1533,\n },\n B: {\n x_min: 81,\n x_max: 1253,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1322,\n },\n C: {\n x_min: 80,\n x_max: 1174,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 80,\n advanceWidth: 1290,\n },\n D: {\n x_min: 81,\n x_max: 1291,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1356,\n },\n E: {\n x_min: 81,\n x_max: 1190,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1306,\n },\n F: {\n x_min: 81,\n x_max: 1176,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1256,\n },\n G: {\n x_min: 80,\n x_max: 1226,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 80,\n advanceWidth: 1346,\n },\n H: {\n x_min: 81,\n x_max: 1497,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1578,\n },\n I: {\n x_min: 81,\n x_max: 604,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 685,\n },\n J: {\n x_min: 60,\n x_max: 1100,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 60,\n advanceWidth: 1169,\n },\n K: {\n x_min: 81,\n x_max: 1427,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1501,\n },\n L: {\n x_min: 81,\n x_max: 1130,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1210,\n },\n M: {\n x_min: 94,\n x_max: 1888,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 94,\n advanceWidth: 1982,\n },\n N: {\n x_min: 83,\n x_max: 1509,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 83,\n advanceWidth: 1592,\n },\n O: {\n x_min: 70,\n x_max: 1281,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 70,\n advanceWidth: 1351,\n },\n P: {\n x_min: 81,\n x_max: 1242,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1297,\n },\n Q: {\n x_min: 70,\n x_max: 1348,\n y_min: -245,\n y_max: 1477,\n ha: 1722,\n leftSideBearing: 70,\n advanceWidth: 1376,\n },\n R: {\n x_min: 81,\n x_max: 1285,\n y_min: 0,\n y_max: 1455,\n ha: 1455,\n leftSideBearing: 81,\n advanceWidth: 1385,\n },\n S: {\n x_min: 115,\n x_max: 1116,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 115,\n advanceWidth: 1206,\n },\n T: {\n x_min: 96,\n x_max: 1306,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 96,\n advanceWidth: 1406,\n },\n U: {\n x_min: 70,\n x_max: 1452,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 70,\n advanceWidth: 1522,\n },\n V: {\n x_min: 65,\n x_max: 1443,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 65,\n advanceWidth: 1508,\n },\n W: {\n x_min: 72,\n x_max: 2057,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 72,\n advanceWidth: 2129,\n },\n X: {\n x_min: 80,\n x_max: 1449,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 80,\n advanceWidth: 1529,\n },\n Y: {\n x_min: 65,\n x_max: 1396,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 65,\n advanceWidth: 1461,\n },\n Z: {\n x_min: 90,\n x_max: 1107,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 90,\n advanceWidth: 1197,\n },\n '[': {\n x_min: 157,\n x_max: 541,\n y_min: -312,\n y_max: 1664,\n ha: 1976,\n leftSideBearing: 157,\n advanceWidth: 573,\n },\n '\\\\': {\n x_min: 36,\n x_max: 830,\n y_min: -125,\n y_max: 1456,\n ha: 1581,\n leftSideBearing: 36,\n advanceWidth: 841,\n },\n ']': {\n x_min: 23,\n x_max: 408,\n y_min: -312,\n y_max: 1664,\n ha: 1976,\n leftSideBearing: 23,\n advanceWidth: 552,\n },\n '^': {\n x_min: 71,\n x_max: 802,\n y_min: 729,\n y_max: 1456,\n ha: 727,\n leftSideBearing: 71,\n advanceWidth: 864,\n },\n _: {\n x_min: 119,\n x_max: 1041,\n y_min: -154,\n y_max: 0,\n ha: 154,\n leftSideBearing: 119,\n advanceWidth: 1168,\n },\n '`': {\n x_min: 40,\n x_max: 456,\n y_min: 1288,\n y_max: 1560,\n ha: 272,\n leftSideBearing: 40,\n advanceWidth: 496,\n },\n a: {\n x_min: 79,\n x_max: 1053,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 79,\n advanceWidth: 1132,\n },\n b: {\n x_min: -16,\n x_max: 1071,\n y_min: -21,\n y_max: 1560,\n ha: 1581,\n leftSideBearing: -16,\n advanceWidth: 1145,\n },\n c: {\n x_min: 78,\n x_max: 988,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 78,\n advanceWidth: 1067,\n },\n d: {\n x_min: 78,\n x_max: 1156,\n y_min: -21,\n y_max: 1560,\n ha: 1581,\n leftSideBearing: 78,\n advanceWidth: 1218,\n },\n e: {\n x_min: 74,\n x_max: 980,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 74,\n advanceWidth: 1059,\n },\n f: {\n x_min: 64,\n x_max: 731,\n y_min: 0,\n y_max: 1581,\n ha: 1581,\n leftSideBearing: 64,\n advanceWidth: 725,\n },\n g: {\n x_min: 78,\n x_max: 1133,\n y_min: -437,\n y_max: 1102,\n ha: 1539,\n leftSideBearing: 78,\n advanceWidth: 1157,\n },\n h: {\n x_min: 49,\n x_max: 1255,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 49,\n advanceWidth: 1315,\n },\n i: {\n x_min: 67,\n x_max: 590,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 67,\n advanceWidth: 652,\n },\n j: {\n x_min: -56,\n x_max: 381,\n y_min: -437,\n y_max: 1560,\n ha: 1997,\n leftSideBearing: -56,\n advanceWidth: 525,\n },\n k: {\n x_min: 64,\n x_max: 1248,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 64,\n advanceWidth: 1287,\n },\n l: {\n x_min: 64,\n x_max: 587,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 64,\n advanceWidth: 653,\n },\n m: {\n x_min: 74,\n x_max: 1905,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 74,\n advanceWidth: 1977,\n },\n n: {\n x_min: 74,\n x_max: 1278,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 74,\n advanceWidth: 1343,\n },\n o: {\n x_min: 78,\n x_max: 1046,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 78,\n advanceWidth: 1124,\n },\n p: {\n x_min: 34,\n x_max: 1119,\n y_min: -416,\n y_max: 1102,\n ha: 1518,\n leftSideBearing: 34,\n advanceWidth: 1197,\n },\n q: {\n x_min: 78,\n x_max: 1135,\n y_min: -416,\n y_max: 1102,\n ha: 1518,\n leftSideBearing: 78,\n advanceWidth: 1139,\n },\n r: {\n x_min: 72,\n x_max: 808,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 72,\n advanceWidth: 854,\n },\n s: {\n x_min: 104,\n x_max: 933,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 104,\n advanceWidth: 1022,\n },\n t: {\n x_min: 24,\n x_max: 678,\n y_min: -17,\n y_max: 1343,\n ha: 1360,\n leftSideBearing: 24,\n advanceWidth: 730,\n },\n u: {\n x_min: 52,\n x_max: 1181,\n y_min: -21,\n y_max: 1082,\n ha: 1103,\n leftSideBearing: 52,\n advanceWidth: 1245,\n },\n v: {\n x_min: 26,\n x_max: 1176,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 26,\n advanceWidth: 1206,\n },\n w: {\n x_min: 52,\n x_max: 1777,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 52,\n advanceWidth: 1823,\n },\n x: {\n x_min: 42,\n x_max: 1163,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 42,\n advanceWidth: 1203,\n },\n y: {\n x_min: 24,\n x_max: 1172,\n y_min: -437,\n y_max: 1082,\n ha: 1519,\n leftSideBearing: 24,\n advanceWidth: 1192,\n },\n z: {\n x_min: 88,\n x_max: 960,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 88,\n advanceWidth: 1032,\n },\n '{': {\n x_min: 63,\n x_max: 671,\n y_min: -364,\n y_max: 1597,\n ha: 1961,\n leftSideBearing: 63,\n advanceWidth: 701,\n },\n '|': {\n x_min: 150,\n x_max: 307,\n y_min: -270,\n y_max: 1456,\n ha: 1726,\n leftSideBearing: 150,\n advanceWidth: 451,\n },\n '}': {\n x_min: 27,\n x_max: 635,\n y_min: -364,\n y_max: 1597,\n ha: 1961,\n leftSideBearing: 27,\n advanceWidth: 701,\n },\n '~': {\n x_min: 121,\n x_max: 1257,\n y_min: 401,\n y_max: 803,\n ha: 402,\n leftSideBearing: 121,\n advanceWidth: 1386,\n },\n },\n fontFamily: 'Roboto Slab',\n resolution: 2048,\n generatedOn: '2020-06-15T19:12:58.120Z',\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Utility methods used by the rest of the VexFlow codebase.\nimport { Flow } from './flow';\nimport { log, RuntimeError } from './util';\nexport class Vex {\n // Users of `Vex.forEach(a, fn)` should use `Array.prototype.forEach()` instead.\n // static forEach(arr: T[], callbackFn: (value: T, index: number, array: T[]) => void) {\n // arr.forEach(callbackFn);\n // }\n /**\n * Take `arr` and return a new list consisting of the sorted, unique,\n * contents of arr. Does not modify `arr`.\n */\n // eslint-disable-next-line\n static sortAndUnique(arr, cmp, eq) {\n if (arr.length > 1) {\n const newArr = [];\n let last;\n arr.sort(cmp);\n for (let i = 0; i < arr.length; ++i) {\n if (i === 0 || !eq(arr[i], last)) {\n newArr.push(arr[i]);\n }\n last = arr[i];\n }\n return newArr;\n }\n else {\n return arr;\n }\n }\n /** Check if array `arr` contains `obj`. */\n // eslint-disable-next-line\n static contains(arr, obj) {\n let i = arr.length;\n while (i--) {\n if (arr[i] === obj) {\n return true;\n }\n }\n return false;\n }\n // Get the 2D Canvas context from DOM element `canvas_sel`.\n static getCanvasContext(canvasSelector) {\n if (!canvasSelector) {\n throw new RuntimeError('BadArgument', 'Invalid canvas selector: ' + canvasSelector);\n }\n const canvas = document.getElementById(canvasSelector);\n if (!(canvas && canvas.getContext)) {\n throw new RuntimeError('UnsupportedBrowserError', 'This browser does not support HTML5 Canvas');\n }\n return canvas.getContext('2d');\n }\n /** Benchmark. Run function `f` once and report time elapsed shifted by `s` milliseconds. */\n // eslint-disable-next-line\n static benchmark(s, f) {\n const start_time = new Date().getTime();\n f();\n const elapsed = new Date().getTime() - start_time;\n log(s, elapsed + 'ms');\n }\n // Get stack trace.\n static stackTrace() {\n const err = new Error();\n return err.stack;\n }\n}\nVex.Flow = Flow;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { LelandFont } from './leland_glyphs';\nimport { LelandMetrics } from './leland_metrics';\nexport function loadLeland() {\n Font.load('Leland', LelandFont, LelandMetrics);\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { CustomFont } from './custom_glyphs';\nimport { CustomMetrics } from './custom_metrics';\nexport function loadCustom() {\n Font.load('Custom', CustomFont, CustomMetrics);\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// vexflow-gonville.ts is the entry point for vexflow-gonville.js.\n// This version bundles the Gonville music engraving font.\nimport { Flow } from '../src/flow';\nimport { loadCustom } from '../src/fonts/load_custom';\nimport { loadLeland } from '../src/fonts/load_leland';\nimport { loadTextFonts } from '../src/fonts/textfonts';\nloadLeland();\nloadCustom();\nFlow.setMusicFont('Leland', 'Custom');\nloadTextFonts();\n// Re-export all exports from index.ts.\nexport * from '../src/index';\n// Also collect all exports into a default export for CJS projects.\nexport * as default from '../src/index';\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { TextFormatter } from '../textformatter';\nimport { PetalumaScriptFont } from './petalumascript_glyphs';\nimport { RobotoSlabFont } from './robotoslab_glyphs';\nexport function loadTextFonts() {\n // Roboto Slab\n {\n const fontData = RobotoSlabFont;\n const { fontFamily, resolution, glyphs } = fontData;\n Font.load(fontFamily, fontData);\n // Previously we used 'H', but it isn't actually the tallest or the widest.\n // Interestingly, the lowercase 'b' is the tallest glyph.\n const maxSizeGlyph = 'b';\n TextFormatter.registerInfo({\n family: fontFamily,\n resolution,\n glyphs,\n maxSizeGlyph,\n monospaced: false,\n bold: false,\n italic: false,\n superscriptOffset: 0.66,\n subscriptOffset: 0.66,\n serifs: true,\n description: 'Text font to pair with the Bravura / Gonville music fonts.',\n });\n }\n // PetalumaScript\n {\n const fontData = PetalumaScriptFont;\n const { fontFamily, resolution, glyphs } = fontData;\n Font.load(fontFamily, fontData);\n // M is wider, but H is taller. :-)\n // Lowercase b is also taller in this font.\n const maxSizeGlyph = 'b';\n TextFormatter.registerInfo({\n family: fontFamily,\n resolution,\n glyphs,\n maxSizeGlyph,\n monospaced: false,\n bold: false,\n italic: false,\n superscriptOffset: 0.66,\n subscriptOffset: 0.66,\n serifs: false,\n description: 'Text font to pair with the Petaluma music font.',\n });\n }\n}\n"],"names":["root","factory","exports","module","define","amd","window","globalThis","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","g","Function","e","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","isCategory","category","checkAncestors","constructorFcn","constructor","CATEGORY","getPrototypeOf","isAccidental","Category","Accidental","isAnnotation","Annotation","isBarline","Barline","isDot","Dot","isGraceNote","GraceNote","isGraceNoteGroup","GraceNoteGroup","isNote","Note","isRenderContext","RenderContext","isStaveNote","StaveNote","isStemmableNote","StemmableNote","isTabNote","TabNote","RuntimeError","Error","code","message","super","globalObject","self","defined","x","undefined","log","block","args","line","Array","slice","join","console","warn","err","stack","midLine","a","b","mid_line","n","parseInt","prefix","text","normalizeAngle","Math","PI","Fraction","numerator","denominator","set","static","Number","isNaN","t","GCD","length","LCM","shift","LCMM","simplify","u","d","gcd","add","param1","param2","otherNumerator","otherDenominator","getNumeratorAndDenominator","lcm","subtract","multiply","divide","equals","compare","__staticFractionA","copy","__staticFractionB","greaterThan","greaterThanEquals","lessThan","lessThanEquals","clone","other","quotient","floor","remainder","makeAbs","abs","toString","toSimplifiedString","__staticFractionTmp","toMixedString","s","q","f","parse","str","i","split","BoundingBox","y","w","h","that","getX","getY","getW","getH","setX","setY","setW","setH","move","mergeWith","boundingBox","new_x","new_y","new_w","max","new_h","BoundingBoxComputation","x1","NaN","y1","x2","y2","getX1","getY1","width","height","addPoint","addX","addY","addQuadraticCurve","p0x","p0y","p1x","p1y","p2x","p2y","p01x","denom","it","p01y","addBezierCurve","p3x","p3y","p0","p1","p2","p3","pow","c","b2ac","t1","sqrt","t2","FontWeight","FontStyle","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","apply","fontParser","Fonts","Font","fontName","name","fontSize","SIZE","_a","scaleToPxFrom","pt","parseFloat","unit","replace","toLowerCase","size","weight","style","fromCSSString","family","SANS_SERIF","NORMAL","cssFontShorthand","document","createElement","font","fontFamily","fontWeight","fontStyle","fontInfo","st","trim","wt","sz","scaleFactor","parsedWeight","ITALIC","woffURL","includeWoff2","fontFace","FontFace","load","fonts","host","WEB_FONT_HOST","files","WEB_FONT_FILES","fontPath","loadWebFont","data","metrics","setData","setMetrics","getName","getData","getMetrics","hasData","getResolution","resolution","getGlyphs","glyphs","lookupMetric","defaultValue","keyParts","currObj","SERIF","px","em","in","mm","cm","PetalumaScript","Index","id","type","class","Registry","index","defaultRegistry","registry","clear","setIndexValue","elem","updateIndex","oldValue","getElementById","getAttribute","register","setAttribute","onRegister","_b","getElementsByAttribute","attribute","index_attr","index_attr_val","keys","map","k","getElementsByType","getElementsByClass","className","onUpdate","info","includes","Element","children","attrs","newID","el","getCategory","classes","rendered","getDefaultRegistry","ID","addChildElement","child","push","setStyle","setGroupStyle","forEach","getStyle","applyStyle","context","save","shadowColor","setShadowColor","shadowBlur","setShadowBlur","fillStyle","setFillStyle","strokeStyle","setStrokeStyle","lineWidth","setLineWidth","restoreStyle","restore","drawWithStyle","checkContext","draw","hasClass","addClass","removeClass","isRendered","setRendered","getAttributes","getSVGElement","suffix","element","oldID","getBoundingBox","getContext","setContext","setFont","toCSSString","textFont","defaultTextFont","TEXT_FONT","fontIsObject","fontIsString","fontIsUndefined","sizeWeightStyleAreUndefined","assign","validate","getFont","resetFont","setFontSize","getFontSize","fontSizeInPoints","convertSizeToPointValue","fontSizeInPixels","convertSizeToPixelValue","RESOLUTION","durations","durationAliases","keySignatures","C","num","Am","F","acc","Dm","Bb","Gm","Eb","Cm","Ab","Fm","Db","Bbm","Gb","Ebm","Cb","Abm","G","Em","D","Bm","A","E","B","clefs","treble","line_shift","bass","tenor","alto","soprano","percussion","subbass","french","notesInfo","int_val","CN","accidental","CB","CBB","DN","DB","DBB","EN","EB","EBB","FN","FB","FBB","GN","GB","GBB","AN","AB","ABB","BN","BB","BBB","R","rest","X","octave","shift_right","accidentals","parenRightPaddingAdjustment","bb","db","bs","bss","bbs","ashs","afhf","accSagittal5v7KleismaUp","accSagittal5v7KleismaDown","accSagittal5CommaUp","accSagittal5CommaDown","accSagittal7CommaUp","accSagittal7CommaDown","accSagittal25SmallDiesisUp","accSagittal25SmallDiesisDown","accSagittal35MediumDiesisUp","accSagittal35MediumDiesisDown","accSagittal11MediumDiesisUp","accSagittal11MediumDiesisDown","accSagittal11LargeDiesisUp","accSagittal11LargeDiesisDown","accSagittal35LargeDiesisUp","accSagittal35LargeDiesisDown","accSagittalSharp25SDown","accSagittalFlat25SUp","accSagittalSharp7CDown","accSagittalFlat7CUp","accSagittalSharp5CDown","accSagittalFlat5CUp","accSagittalSharp5v7kDown","accSagittalFlat5v7kUp","accSagittalSharp","accSagittalFlat","accSagittalSharp5v7kUp","accSagittalFlat5v7kDown","accSagittalSharp5CUp","accSagittalFlat5CDown","accSagittalSharp7CUp","accSagittalFlat7CDown","accSagittalSharp25SUp","accSagittalFlat25SDown","accSagittalSharp35MUp","accSagittalFlat35MDown","accSagittalSharp11MUp","accSagittalFlat11MDown","accSagittalSharp11LUp","accSagittalFlat11LDown","accSagittalSharp35LUp","accSagittalFlat35LDown","accSagittalDoubleSharp25SDown","accSagittalDoubleFlat25SUp","accSagittalDoubleSharp7CDown","accSagittalDoubleFlat7CUp","accSagittalDoubleSharp5CDown","accSagittalDoubleFlat5CUp","accSagittalDoubleSharp5v7kDown","accSagittalDoubleFlat5v7kUp","accSagittalDoubleSharp","accSagittalDoubleFlat","accSagittal7v11KleismaUp","accSagittal7v11KleismaDown","accSagittal17CommaUp","accSagittal17CommaDown","accSagittal55CommaUp","accSagittal55CommaDown","accSagittal7v11CommaUp","accSagittal7v11CommaDown","accSagittal5v11SmallDiesisUp","accSagittal5v11SmallDiesisDown","accSagittalSharp5v11SDown","accSagittalFlat5v11SUp","accSagittalSharp7v11CDown","accSagittalFlat7v11CUp","accSagittalSharp55CDown","accSagittalFlat55CUp","accSagittalSharp17CDown","accSagittalFlat17CUp","accSagittalSharp7v11kDown","accSagittalFlat7v11kUp","accSagittalSharp7v11kUp","accSagittalFlat7v11kDown","accSagittalSharp17CUp","accSagittalFlat17CDown","accSagittalSharp55CUp","accSagittalFlat55CDown","accSagittalSharp7v11CUp","accSagittalFlat7v11CDown","accSagittalSharp5v11SUp","accSagittalFlat5v11SDown","accSagittalDoubleSharp5v11SDown","accSagittalDoubleFlat5v11SUp","accSagittalDoubleSharp7v11CDown","accSagittalDoubleFlat7v11CUp","accSagittalDoubleSharp55CDown","accSagittalDoubleFlat55CUp","accSagittalDoubleSharp17CDown","accSagittalDoubleFlat17CUp","accSagittalDoubleSharp7v11kDown","accSagittalDoubleFlat7v11kUp","accSagittal23CommaUp","accSagittal23CommaDown","accSagittal5v19CommaUp","accSagittal5v19CommaDown","accSagittal5v23SmallDiesisUp","accSagittal5v23SmallDiesisDown","accSagittalSharp5v23SDown","accSagittalFlat5v23SUp","accSagittalSharp5v19CDown","accSagittalFlat5v19CUp","accSagittalSharp23CDown","accSagittalFlat23CUp","accSagittalSharp23CUp","accSagittalFlat23CDown","accSagittalSharp5v19CUp","accSagittalFlat5v19CDown","accSagittalSharp5v23SUp","accSagittalFlat5v23SDown","accSagittalDoubleSharp5v23SDown","accSagittalDoubleFlat5v23SUp","accSagittalDoubleSharp5v19CDown","accSagittalDoubleFlat5v19CUp","accSagittalDoubleSharp23CDown","accSagittalDoubleFlat23CUp","accSagittal19SchismaUp","accSagittal19SchismaDown","accSagittal17KleismaUp","accSagittal17KleismaDown","accSagittal143CommaUp","accSagittal143CommaDown","accSagittal11v49CommaUp","accSagittal11v49CommaDown","accSagittal19CommaUp","accSagittal19CommaDown","accSagittal7v19CommaUp","accSagittal7v19CommaDown","accSagittal49SmallDiesisUp","accSagittal49SmallDiesisDown","accSagittal23SmallDiesisUp","accSagittal23SmallDiesisDown","accSagittal5v13MediumDiesisUp","accSagittal5v13MediumDiesisDown","accSagittal11v19MediumDiesisUp","accSagittal11v19MediumDiesisDown","accSagittal49MediumDiesisUp","accSagittal49MediumDiesisDown","accSagittal5v49MediumDiesisUp","accSagittal5v49MediumDiesisDown","accSagittal49LargeDiesisUp","accSagittal49LargeDiesisDown","accSagittal11v19LargeDiesisUp","accSagittal11v19LargeDiesisDown","accSagittal5v13LargeDiesisUp","accSagittal5v13LargeDiesisDown","accSagittalSharp23SDown","accSagittalFlat23SUp","accSagittalSharp49SDown","accSagittalFlat49SUp","accSagittalSharp7v19CDown","accSagittalFlat7v19CUp","accSagittalSharp19CDown","accSagittalFlat19CUp","accSagittalSharp11v49CDown","accSagittalFlat11v49CUp","accSagittalSharp143CDown","accSagittalFlat143CUp","accSagittalSharp17kDown","accSagittalFlat17kUp","accSagittalSharp19sDown","accSagittalFlat19sUp","accSagittalSharp19sUp","accSagittalFlat19sDown","accSagittalSharp17kUp","accSagittalFlat17kDown","accSagittalSharp143CUp","accSagittalFlat143CDown","accSagittalSharp11v49CUp","accSagittalFlat11v49CDown","accSagittalSharp19CUp","accSagittalFlat19CDown","accSagittalSharp7v19CUp","accSagittalFlat7v19CDown","accSagittalSharp49SUp","accSagittalFlat49SDown","accSagittalSharp23SUp","accSagittalFlat23SDown","accSagittalSharp5v13MUp","accSagittalFlat5v13MDown","accSagittalSharp11v19MUp","accSagittalFlat11v19MDown","accSagittalSharp49MUp","accSagittalFlat49MDown","accSagittalSharp5v49MUp","accSagittalFlat5v49MDown","accSagittalSharp49LUp","accSagittalFlat49LDown","accSagittalSharp11v19LUp","accSagittalFlat11v19LDown","accSagittalSharp5v13LUp","accSagittalFlat5v13LDown","accSagittalDoubleSharp23SDown","accSagittalDoubleFlat23SUp","accSagittalDoubleSharp49SDown","accSagittalDoubleFlat49SUp","accSagittalDoubleSharp7v19CDown","accSagittalDoubleFlat7v19CUp","accSagittalDoubleSharp19CDown","accSagittalDoubleFlat19CUp","accSagittalDoubleSharp11v49CDown","accSagittalDoubleFlat11v49CUp","accSagittalDoubleSharp143CDown","accSagittalDoubleFlat143CUp","accSagittalDoubleSharp17kDown","accSagittalDoubleFlat17kUp","accSagittalDoubleSharp19sDown","accSagittalDoubleFlat19sUp","accSagittalShaftUp","accSagittalShaftDown","accSagittalAcute","accSagittalGrave","accSagittal1MinaUp","accSagittal1MinaDown","accSagittal2MinasUp","accSagittal2MinasDown","accSagittal1TinaUp","accSagittal1TinaDown","accSagittal2TinasUp","accSagittal2TinasDown","accSagittal3TinasUp","accSagittal3TinasDown","accSagittal4TinasUp","accSagittal4TinasDown","accSagittal5TinasUp","accSagittal5TinasDown","accSagittal6TinasUp","accSagittal6TinasDown","accSagittal7TinasUp","accSagittal7TinasDown","accSagittal8TinasUp","accSagittal8TinasDown","accSagittal9TinasUp","accSagittal9TinasDown","accSagittalFractionalTinaUp","accSagittalFractionalTinaDown","accidentalNarrowReversedFlat","accidentalNarrowReversedFlatAndFlat","accidentalWilsonPlus","accidentalWilsonMinus","articulations","between_lines","av","aboveCode","belowCode","ao","ah","am","ornaments","mordent","mordent_inverted","turn","turn_inverted","tr","upprall","downprall","prallup","pralldown","upmordent","downmordent","lineprall","prallprall","scoop","doit","fall","doitLong","fallLong","bend","plungerClosed","plungerOpen","flip","jazzTurn","smear","Tables","MUSIC_FONT_STACK","clef","keyOctaveGlyph","params","options","octave_shift","duration","sanitizeDuration","pieces","toUpperCase","clefProperties","stroke","int_value","customNoteHeadProps","glyphName","codeNoteHead","displaced","integer","noteValue","fret","scale","glyph","shift_y","glyphMetrics","Glyph","TABLATURE_FONT_SCALE","textWidth","getWidth","artic","spec","keySpec","notes","acc_list","durationNumber","durationToFraction","ticks","durationCodes","glyphTypeProperties","code_head","common","NOTATION_FONT_SCALE","SOFTMAX_FACTOR","STEM_WIDTH","STEM_HEIGHT","STAVE_LINE_THICKNESS","RENDER_PRECISION_PLACES","SLASH_NOTEHEAD_WIDTH","STAVE_LINE_DISTANCE","TEXT_HEIGHT_OFFSET_HACK","accidentalMap","accidentalColumnsTable","second_on_bottom","spaced_out_tetrachord","spaced_out_pentachord","very_spaced_out_pentachord","spaced_out_hexachord","very_spaced_out_hexachord","unicode","sharp","String","fromCharCode","flat","natural","triangle","degrees","circle","validTypes","m","ci","cx","sf","sb","sq","tu","td","TIME4_4","num_beats","beat_value","stem","stem_offset","flag","stem_up_extension","stem_down_extension","tabnote_stem_up_extension","tabnote_stem_down_extension","dot_shiftY","line_above","line_below","position","leger_code_head","beam_count","stem_beam_extension","code_flag_upstem","code_flag_downstem","OutlineCode","ModifierPosition","GlyphCacheEntry","fontStack","point","loadMetrics","bbox","getOutlineBoundingBox","outline","x_shift","y_shift","lookupFontMetric","GlyphOutline","originX","originY","precision","round","nextX","nextY","parts","MOVE","LINE","QUADRATIC","BEZIER","topGlyphs","botGlyphs","originShift","setOptions","reset","lookupGlyph","x_min","x_max","ha","cached_outline","ctx","x_pos","y_pos","cache","lookup","customScale","renderOutline","go","beginPath","moveTo","lineTo","quadraticCurveTo","bezierCurveTo","fill","bboxComp","penX","penY","getCode","setPoint","setStave","stave","getXShift","setXShift","getYshift","setYShift","checkMetrics","metricsScale","setOriginX","xShift","setOriginY","yShift","setOrigin","render","xPos","yPos","checkStave","renderToStave","getYForGlyphs","Map","entries","CURRENT_CACHE_KEY","entry","Modifier","text_line","Position","LEFT","spacingFromNextModifier","PositionString","center","CENTER","above","ABOVE","below","BELOW","left","right","RIGHT","setWidth","getNote","note","checkAttachedNote","setNote","getIndex","checkIndex","setIndex","getModifierContext","modifierContext","checkModifierContext","setModifierContext","getPosition","setPosition","setTextLine","setSpacingFromNextModifier","getSpacingFromNextModifier","alignSubNotesWithNote","subNotes","tickContext","getTickContext","getStave","subNoteXOffset","modLeftPx","modRightPx","subNote","subTickContext","setXOffset","Music","NUM_TONES","canonical_notes","roots","root_values","root_indices","diatonic_intervals","diatonic_accidentals","unison","m2","M2","m3","M3","p4","dim5","p5","m6","M6","b7","M7","intervals","b2","min2","S","H","maj2","T","W","b3","min3","maj3","b5","aug4","b6","aug5","maj6","m7","min7","dom7","maj7","scales","major","minor","ionian","dorian","phyrgian","lydian","mixolydian","aeolian","locrian","scaleTypes","M","noteValues","root_index","cn","cb","cbb","dn","dbb","en","eb","ebb","fn","fb","fbb","gn","gb","gbb","an","ab","abb","bn","bbb","isValidNoteValue","isValidIntervalValue","interval","getNoteParts","noteString","match","exec","getKeyParts","keyString","getNoteValue","getIntervalValue","intervalString","getCanonicalNoteName","getCanonicalIntervalName","intervalValue","getRelativeNoteValue","direction","sum","getRelativeNoteName","rootValue","multiplier","reverse_interval","relativeNoteName","getScaleTones","tones","nextNote","getIntervalBetween","note1","note2","difference","createScaleMap","keySignature","keySigParts","scaleName","keySigString","noteLocation","scaleMap","rootName","noteName","L","DEBUG","render_options","font_scale","parenLeftPadding","parenRightPadding","accidentalCodes","cautionary","state","musicFont","currentMusicFont","noteheadAccidentalPadding","leftShift","left_shift","accidentalSpacing","additionalPadding","accList","prevNote","shiftL","props","getKeyProps","getLeftDisplacedHeadPx","lineSpace","getSpacingBetweenLines","getYForLine","accLine","sort","lineList","previousLine","accShift","flatLine","dblSharpLine","numAcc","column","totalColumns","noFurtherConflicts","groupStart","groupEnd","checkCollision","getGroupLine","getGroupLines","indexes","lineDifference","indexA","indexB","item","notColliding","indexPairs","every","line1","line2","groupLength","groupMember","endCase","patternLength","collisionDetected","columnWidths","columnXOffsets","totalShift","accCount","lastAccOnLine","clearance","clearanceRequired","collision","voices","tickPositions","tickNoteMap","voice","tickPosition","getTickables","shouldIgnoreTicks","notesAtPosition","getTicks","music","scaleMapKey","tickPos","tickables","modifiedPitches","processNote","isRest","staveNote","keyIndex","accidentalString","pitch","sameAccidental","previouslyModified","indexOf","getModifiers","modifier","splice","addModifier","getGraceNotes","fontScale","parenLeft","parenRight","parenWidth","setAsCautionary","start","getModifierStartXY","accX","accY","Stem","stem_up_y_offset","stem_down_y_offset","stem_up_y_base_offset","stem_down_y_base_offset","x_begin","x_end","y_top","y_bottom","stem_extension","stem_direction","hide","isStemlet","stemletHeight","renderHeightAdjustment","UP","DOWN","WIDTH","HEIGHT","setNoteHeadXBounds","setDirection","setExtension","ext","getExtension","setYBounds","getHeight","y_offset","getExtents","isStemUp","ys","stemHeight","innerMostNoteheadY","min","outerMostNoteheadY","topY","baseY","setVisibility","isVisible","setStemlet","adjustHeightForFlag","adjustHeightForBeam","stem_x","stem_y","y_base_offset","stemletYOffset","openGroup","pointerBBox","closeGroup","TextFormatter","textWidthCache","formatterInfo","serifs","monospaced","italic","bold","superscriptOffset","subscriptOffset","maxSizeGlyph","cacheKey","updateParams","registeredFonts","requestedFont","candidates","requestedFamilies","requestedFamily","startsWith","formatter","values","isBold","isItalic","perfectMatch","find","partialMatch","fontSizeInPt","overwrite","updateCacheKey","BOLD","getGlyphMetrics","character","maxHeight","getWidthForCharacterInEm","advanceWidth","getWidthForTextInEm","cachedWidths","getWidthForTextInPx","AnnotationHorizontalJustify","AnnotationVerticalJustify","horizontalJustification","verticalJustification","TOP","minAnnotationPadding","annotations","leftWidth","rightWidth","maxLeftGlyphWidth","maxRightGlyphWidth","annotation","textFormatter","create","verticalSpaceNeeded","glyphWidth","getGlyph","stemDirection","hasStem","getStemDirection","lines","draw_stem","getStem","getNoteType","getNumLines","VerticalJustify","noteLine","getLineNumber","leastString","top_text_line","BOTTOM","greatestString","curBottom","rightOverlap","right_shift","leftOverlap","setVerticalJustification","just","VerticalJustifyString","getJustification","setJustification","HorizontalJustifyString","text_width","measureText","text_height","getStemX","stem_ext","spacing","has_stem","checkStem","getYs","reduce","yt","getYForTopText","getYForBottomText","getTopLineTopY","extents","getStemExtents","fillText","HorizontalJustify","centerStem","CENTER_STEM","top","bottom","roundToNearestHalf","mathFn","isWithinLines","getRoundingFunction","ceil","isStaveOrGraceNote","Articulation","maxGlyphWidth","getIncrement","articulation","increment","curTop","maxWidth","articWidth","overlap","builder","articNameToCode","staccato","tenuto","accent","articString","getFactory","articulationCodes","textLine","canSitBetweenLines","staffSpace","isTab","shouldSitOutsideStaff","initialOffset","isOnStemTip","getInitialOffset","padding","stemTipY","stemBaseY","getTopY","INITIAL_OFFSET","getBottomY","offsetDirection","articLine","snappedLine","snapLineToStaff","setRawFont","drawDot","color","arc","closePath","Tickable","_preFormatted","_postFormatted","intrinsicTicks","tickMultiplier","modifiers","tupletStack","align_center","center_x_shift","ignore_ticks","formatterMetrics","freedom","iterations","space","used","mean","deviation","setIgnoreTicks","checkTickContext","getFormatterMetrics","getCenterXShift","isCenterAligned","setCenterXShift","centerXShift","setCenterAlignment","getVoice","setVoice","getTuplet","tuplet","getTupletStack","resetTuplet","noteCount","notesOccupied","getNoteCount","getNotesOccupied","applyTickMultiplier","pop","setTuplet","addToModifierContext","mc","addMember","setTickContext","tc","preFormat","preFormatted","postFormat","postFormatted","getIntrinsicTicks","setIntrinsicTicks","getTickMultiplier","setDuration","getAbsoluteX","noteStruct","parsedNoteStruct","parseNoteStruct","JSON","stringify","keyProps","noteType","customTypes","duration_override","getGlyphProps","customGlyphs","playNote","leftDisplacedHeadPx","rightDisplacedHeadPx","annotation_spacing","glyph_font_scale","stroke_px","xStart","xPre1","xAbs","xPost1","notePx","xPost2","xEnd","xFreedomRight","xWidth","yy","spaceDeviation","durationString","dots","durationProps","parseDuration","durationToTicks","currentTicks","getPlayNote","setPlayNote","addStroke","setYs","getRightDisplacedHeadPx","setLeftDisplacedHeadPx","setRightDisplacedHeadPx","isTopNote","getLineForRest","getGlyphWidth","getDuration","isDotted","getModifiersByType","getBeam","beam","checkBeam","hasBeam","setBeam","signature","filter","getRightParenthesisPx","getLeftParenthesisPx","getFirstDotPx","getMembers","getState","glyphPx","getNoteStartX","getTieRightX","tieStartX","getTieLeftX","tieEndX","getKeys","StaveModifierPosition","BarlineType","ChordSymbolHorizontalJustify","ChordSymbolVerticalJustify","SymbolTypes","SymbolModifiers","StaveModifier","placeGlyphOnLine","customShift","getPadding","setPadding","setLayoutMetrics","layoutMetrics","getLayoutMetrics","thickness","TYPE","widths","SINGLE","DOUBLE","END","REPEAT_BEGIN","REPEAT_END","REPEAT_BOTH","NONE","paddings","layoutMetricsMap","xMin","xMax","paddingLeft","paddingRight","BEGIN","setType","typeString","single","double","end","repeatBegin","repeatEnd","repeatBoth","none","getType","drawVerticalBar","drawVerticalEndBar","drawRepeatBar","double_bar","staveCtx","botY","getBottomLineBottomY","fillRect","begin","dot_x","dot_radius","dot_y","BarNote","barline","Bend","release","phrase","tap","line_width","line_style","bend_width","release_width","updateWidth","bends","last_width","stringPos","setTap","getText","getTextHeight","totalWidth","additional_width","draw_width","lowestY","bend_height","annotation_y","renderBend","cp_x","cp_y","renderRelease","renderArrowHead","yBase","renderText","render_x","last_bend","last_bend_draw_width","last_drawn_width","ChordSymbol","symbolBlocks","horizontal","vertical","useKerning","reportWidth","superSubRatio","global","NO_TEXT_FORMAT","val","noFormat","glyphCode","engravingFontResolution","spacingBetweenBlocks","metric","getMetricForGlyph","yOffset","leftSideBearing","kerningOffset","chordSymbol","lowerKerningText","upperKerningText","symbolModifier","SUPERSCRIPT","SUBSCRIPT","minPadding","symbols","nonSuperWidth","symbol","fontAdj","scaleSize","glyphAdj","symbolWidth","lineSpaces","vAlign","j","sup","isSuperscript","sub","isSubscript","superSubScale","adj","symbolType","GLYPH","superSubFontSize","getWidthForGlyph","getYShiftForGlyph","getXShiftForGlyph","TEXT","getYOffsetForText","over","prev","setEnableKerning","updateKerningAdjustments","updateOverBarAdjustments","getVertical","getReportWidth","getHorizontal","setReportWidth","barIndex","findIndex","xoff","yoff","symIndex","accum","getKerningAdjustment","currSymbol","prevSymbol","adjustment","preKernUpper","preKernLower","some","xx","kerningOffsetPixels","getSymbolBlock","_c","symbolBlock","glyphArgs","glyphPoints","addSymbolBlock","parameters","addText","addTextSuperscript","addTextSubscript","addGlyphSuperscript","addGlyph","addGlyphOrText","char","addLine","setVertical","vj","setHorizontal","hj","yMax","y_max","stem_base","isSuper","isSub","curY","smallerFontSize","diminished","dim","halfDiminished","augmented","majorSeventh","leftParen","rightParen","leftBracket","rightBracket","leftParenTall","rightParenTall","symbolTypes","symbolModifiers","radius","all","dot","setDotShiftY","dot_list","max_shift_map","note_id","dot_shift","x_width","last_line","last_note","prev_dotted_space","half_shiftY","forceFlagRight","FretHandFinger","finger","x_offset","nums","nums_list","prev_note","shiftLeft","shiftRight","pos","textHeight","shiftR","numShiftL","numShiftR","xWidthL","xWidthR","lastLine","lastNote","num_shift","numWidth","fingerings","fingeringString","number","Fingering","fingering","setFretHandFinger","getFretHandFinger","setOffsetX","setOffsetY","NoteHead","custom_glyph","stem_up_x_offset","stem_down_x_offset","note_type","glyph_code","custom_glyph_code","slashed","isDisplaced","getLine","setLine","displacementStemAdjustment","fontShift","displacedFontShift","half_spacing","min_y","getYForNote","head_x","categorySuffix","staveSpace","durationToNumber","breve_lines","drawSlashNoteHead","renderGlyph","setStem","buildStem","buildFlag","hasFlag","flagCode","getBaseCustomNoteHeadGlyph","getStemLength","getStemExtension","getBeamCount","getStemMinimumLength","setStemDirection","offsets","offsetYBaseStemUp","offsetYTopStemUp","offsetYBaseStemDown","offsetYTopStemDown","getCenterGlyphX","stem_extension_override","setStemLength","drawStem","stemOptions","shiftRestVertical","dir","delta","maxLine","minLine","setKeyLine","getKeyLine","sortedKeyProps","ledgerLineStyle","use_default_head_x","_noteHeads","LEDGER_LINE_OFFSET","calculateKeyProps","auto_stem","autoStem","STEM_UP","STEM_DOWN","minNoteheadPadding","notesList","minL","stemMax","stemMin","maxL","isrest","voice_shift","getVoiceShiftWidth","is_displaced","noteU","noteM","noteL","voiceXShift","lineSpacing","lineDiff","whiteNoteHeadCount","blackNoteHeadCount","centerRest","noteHeadStyles","noteHead","buildNoteHeads","noteHeadStyle","head","calcNoteDisplacements","noteProps","notehead","calculateOptimalStemDirection","keyProperties","minY","maxY","halfLineSpacing","frac","resultLine","thisLine","isChord","getNoteHeadBounds","setNoteDisplaced","getRightShift","restLine","isInnerNoteIndex","setStemStyle","getStemStyle","setLedgerLineStyle","getLedgerLineStyle","setFlagStyle","getFlagStyle","setKeyStyle","noteHeadPadding","shouldDrawFlag","nonDisplacedX","displacedX","highestDisplacedLine","lowestDisplacedLine","yTop","Infinity","yBottom","highestLine","lowestLine","highestNonDisplacedLine","lowestNonDisplacedLine","displaced_x","non_displaced_x","highest_line","lowest_line","highest_displaced_line","lowest_displaced_line","highest_non_displaced_line","lowest_non_displaced_line","getNoteHeadBeginX","getNoteHeadEndX","noteHeads","note_heads","drawLedgerLines","doubleWidth","min_x","drawLedgerLine","normal","ledgerWidth","getDefaultLedgerLineStyle","drawModifiers","noteheadParam","noteheadStyle","hasNoBeam","drawFlag","_d","_e","noteStemHeight","flagX","flagY","getStaveNoteScale","drawNoteHeads","super_stem_extension","mid_line_distance","lines_over_octave_from_mid_line","spacing_between_lines","xBegin","shouldRenderStem","stemX","StaveTie","setNotes","cp1","cp2","text_shift_x","first_x_shift","last_x_shift","tie_spacing","first_note","first_indices","last_indices","isPartial","renderTie","first_ys","last_ys","last_x_px","first_x_px","first_y_px","last_y_px","top_cp_y","bottom_cp_y","center_x","getNotes","getTieStartX","getTieEndX","TabTie","VoiceMode","Voice","time","voiceTime","resolutionMultiplier","mode","STRICT","ticksUsed","largestTickWidth","softmaxFactor","totalTicks","smallestTickCount","Mode","getTotalTicks","getTicksUsed","getLargestTickWidth","getSmallestTickCount","getMode","setMode","getResolutionMultiplier","getActualResolution","tickable","setStrict","strict","SOFT","isComplete","FULL","setSoftmaxFactor","factor","reCalculateExpTicksUsed","expTicksUsed","softmax","tickValue","v","exp","addTickable","addTickables","grace_notes","show_slur","slur","slur_y_shift","beams","gracenote_groups","group_list","gracenote_group","is_stavenote","formatWidth","group_shift","Formatter","joinVoices","format","getMinTotalWidth","beamNotes","Beam","beam_width","partial_beam_length","graceNote","TieClass","NoteSubGroup","groups","group","TickContext","tickID","currentTick","maxTicks","maxTickable","minTicks","minTickable","xBase","xOffset","tickablesByVoice","totalLeftPx","totalRightPx","tContexts","tContext","contexts","getTickID","getXBase","setXBase","getXOffset","getMaxTicks","getMinTicks","getMaxTickable","getMinTickable","getTickableForVoice","voiceIndex","getTickablesByVoice","getCenterAlignedTickables","getCurrentTick","setCurrentTick","tick","Ornament","delayed","accidentalLowerPadding","accidentalUpperPadding","ornament","ornamentCodes","adjustForStemDirection","reportedWidth","stemUpYOffset","ornamentAlignWithNoteHead","ornamentNoteTransition","ornamentRelease","ornamentAttack","ornamentArticulation","jazzOrnaments","setDelayed","setUpperAccidental","accid","accidentalUpper","setLowerAccidental","accidentalLower","stemDir","stemExtents","isPlacedOnNoteheadSide","glyphYBetweenLines","glyphX","glyphY","delayXShift","startX","nextContext","getNextContext","Parenthesis","parentheses","x_widthL","x_widthR","parenthesis","isHTMLCanvas","HTMLCanvasElement","toDataURL","isHTMLDiv","HTMLDivElement","appendChild","CanvasContext","context2D","canvas","CANVAS_BROWSER_SIZE_LIMIT","limit","clearRect","cls","setBackgroundFillStyle","blur","getTransform","setLineCap","capType","lineCap","setLineDash","dash","resize","devicePixelRatio","sanitizeCanvasDims","rect","cp1x","cp1y","cp2x","cp2y","cpx","cpy","startAngle","endAngle","counterclockwise","fontBoundingBoxAscent","fontBoundingBoxDescent","actualBoundingBoxAscent","actualBoundingBoxDescent","ATTRIBUTES_TO_IGNORE","path","SVG_NS","TWO_PI","SVGContext","backgroundFillStyle","fontCSSString","svg","parent","pen","defaultFontAttributes","attributes","shadow_attributes","state_stack","svgElementType","createElementNS","lineDash","applyAttributes","visibleWidth","visibleHeight","setViewBox","viewBox_or_minX","viewBoxString","attrNamesToIgnore","nodeName","attrName","setAttributeNS","lastChild","removeChild","rectangle","x0","cos","y0","sin","tmpStartTest","tmpEndTest","large","sweep","getShadowStyle","sa","measureTextCache","txt","textContent","savedState","fontAttributes","RendererBackends","RendererLineEndType","TextJustification","VoltaType","measureImpl","getBBox","Renderer","arg0","arg1","backend","maybeElement","Backends","CANVAS","SVG","elementId","background","renderer","lastContext","buildContext","fromX","fromY","toX","toY","dashPattern","dx","dy","angle","atan2","idx","dashLength","nx","ny","LineEndType","StringNumber","string_number","dashed","leg","drawCircle","stringNumber","shift_left","glyphLine","num_shiftR","num_width","setLineEndType","setStringNumber","setLastNote","setDashed","setDrawCircle","stemPadding","verticalPadding","leftPadding","rightPadding","len","pattern","drawDashedLine","Stroke","all_voices","strokes","strokeList","string","getPositions","strokeShift","addEndNote","note_end","line_space","arrow","arrow_shift_x","arrow_y","text_y","Type","BRUSH_DOWN","BRUSH_UP","ROLL_DOWN","RASQUEDO_DOWN","ROLL_UP","RASQUEDO_UP","ARPEGGIO_DIRECTIONLESS","strokeLine","Vibrato","harsh","vibrato_width","wave_height","wave_width","wave_girth","setVibratoWidth","vibratos","vibrato","setHarsh","vx","vy","renderVibrato","opts","num_waves","ModifierContext","members","formatted","member","getLeftShift","Clef","types","tab","attachment","numLines","shiftY","KeySignature","cancelKeySpec","alterKeySpec","setKeySig","glyphFontScale","xPositions","paddingForced","convertToGlyph","nextAcc","accGlyphData","extraWidth","xPosition","cancelKey","convertToCancelAccList","cancel_accList","different_types","naturals","cancelled","concat","addToStave","convertAccLines","customLines","offset","alterKey","convertToAlterAccList","firstAccidentalType","cancelAccList","getEndClef","getClef","Repetition","symbol_type","setShiftX","setShiftY","CODA_RIGHT","drawCodaFixed","CODA_LEFT","drawSymbolText","SEGNO_LEFT","drawSignoFixed","SEGNO_RIGHT","DC","DC_AL_CODA","DC_AL_FINE","DS","DS_AL_CODA","DS_AL_FINE","FINE","TO_CODA","draw_coda","text_x","symbol_x","modifierWidth","getVerticalBarWidth","StaveSection","section","drawRect","shift_x","setStaveSection","textMeasurements","StaveTempo","tempo","setTempo","bpm","stem_height","TextNote","superscript","subscript","smooth","justification","struct","GLYPHS","segno","mordent_upper","mordent_lower","p","z","coda","pedal_open","pedal_close","caesura_straight","caesura_curved","breath","Justification","StaveText","setStaveText","setText","getBottomLineY","Volta","volta","top_y","vert_height","BEGIN_END","TimeSignatureGlyph","timeSignature","topDigits","botDigits","topWidth","timeSigType","topGlyph","botWidth","botGlyph","topStartX","botStartX","start_x","topLine","bottomLine","TimeSignature","timeSpec","customPadding","validate_args","fontLineShift","parseTimeSpec","numbers","test","assertIsValidTimeSig","makeTimeSignatureGlyph","getInfo","setTimeSig","SORT_ORDER_BEG_MODIFIERS","SORT_ORDER_END_MODIFIERS","Stave","end_x","measure","endClef","vertical_bar_width","num_lines","fill_style","left_bar","right_bar","spacing_between_lines_px","space_above_staff_ln","space_below_staff_ln","top_text_position","bottom_text_position","line_config","bounds","defaultLedgerLineStyle","resetLines","addEndModifier","defaultPadding","setDefaultLedgerLineStyle","visible","setNoteStartX","getNoteEndX","setNumLines","mod","setMeasure","getMeasure","getModifierXShift","begBarline","setRepetitionType","setVoltaType","number_t","setSection","staveSection","headroom","getLineForY","setBegBarType","setEndBarType","setClef","clefSpec","addClef","setEndClef","setKeySignature","addKeySignature","setEndKeySignature","setTimeSignature","timeSignatures","addTimeSignature","setEndTimeSignature","addEndClef","addEndTimeSignature","addTrebleGlyph","noPosition","noCategory","sortByCategory","items","order","temp","endBarline","begModifiers","endModifiers","lastBarlineIdx","getConfigForLines","setConfigForLine","line_number","setConfigForLines","lines_configuration","staves","maxX","drawBoldDoubleLine","topX","StaveConnector","BOLD_DOUBLE_LEFT","BOLD_DOUBLE_RIGHT","variableWidth","top_stave","bottom_stave","texts","newType","content","SINGLE_RIGHT","THIN_DOUBLE","attachment_height","SINGLE_LEFT","BRACE","x3","y3","cpx1","cpy1","cpx2","cpy2","cpx3","cpy3","cpx4","cpy4","cpx5","cpy5","cpx6","cpy6","cpx7","cpy7","cpx8","cpy8","BRACKET","singleRight","singleLeft","brace","bracket","boldDoubleLeft","boldDoubleRight","thinDouble","sumArray","arr","getRestLineForNextNoteGroup","currRestLine","currNoteIndex","nextRestLine","noteIndex","formatterOptions","globalSoftmax","maxIterations","justifyWidth","totalCost","durationStats","minTotalWidth","hasMinTotalWidth","tickContexts","array","list","modifierContexts","contextGaps","total","gaps","lossHistory","paddingBetween","accumulator","stavePadding","gap","toFixed","auto_beam","align_rests","applyAndGetBeams","formatToStave","tabstave","tabnotes","autobeam","notevoice","tabvoice","alignAllNotes","alignTuplets","currTickable","prevTickable","alignRests","AlignRestsToNotes","preCalculateMinTotalWidth","unalignedPadding","unalignedCtxCount","wsum","dsum","createTickContexts","contextList","contextMap","wavg","wvar","ll","wpads","davg","dvar","dpads","padmax","unalignedPad","createModifierContexts","tickToContextMap","integerTicks","staveTickToContextMap","newContext","makeContext","addToContext","tickList","createContexts","contextArray","getTickContexts","renderingContext","voicesParam","evaluate","firstContext","calculateIdealDistances","adjustedJustifyWidth","backTickable","prevContext","backVoices","matchingVoices","maxNegativeShiftPx","expectedDistance","thisTickable","insideLeftEdge","backMetrics","insideRightEdge","fromTickable","fromTickablePx","shiftToIdealDistances","idealDistances","centerX","spaceAccum","contextX","ideal","errorPx","negativeShiftPx","configMinPadding","configMaxPadding","targetWidth","distances","actualWidth","minDistance","mdCalc","di","calcMinDistance","paddingMaxCalc","curTargetWidth","lastTickablePadding","lastTickable","tickWidth","paddingMax","paddingMin","prevTick","prevMetrics","currMetrics","leftNoteEdge","rightNote","rightMetrics","stats","count","updateStats","totalDeviation","tune","alpha","current","cost","optionsParam","TupletLocation","Tuplet","numerator_glyphs","denom_glyphs","num_notes","beats_occupied","beatsOccupiedDeprecationWarning","notes_occupied","bracketed","ratioed","setTupletLocation","location","LOCATION_TOP","resolveGlyphs","attach","LOCATION_BOTTOM","NESTING_OFFSET","detach","setBracketed","setRatioed","getBeatsOccupied","setBeatsOccupied","beats","setNotesOccupied","unshift","getNestedTupletCount","maxTupletCount","countTuplets","minTupletCount","tupletCount","getYPosition","nested_tuplet_y_offset","topModifierOffset","modLines","modY","noteHeadOffset","stemOffset","lineCheck","nn","bottom_y","addGlyphWidth","notation_start_x","colon_x","colon_radius","calculateStemDirection","lineSum","keyProp","BEAM_LEFT","BEAM_RIGHT","BEAM_BOTH","slope","forcedPartialDirections","stem_weight","memo","break_on_indices","max_slope","min_slope","slope_iterations","slope_cost","show_stemlets","stemlet_extension","flat_beams","min_flat_beam_offset","time_sig","beatTotal","beatValue","generateBeams","config","tickGroups","unprocessedNotes","currentTickGroup","noteGroups","currentGroup","nextTickGroup","nextGroup","currentGroupTotalTicks","unprocessedNote","ticksPerGroup","vf_notes","unbeamable","createGroups","sanitizedGroups","tempGroup","isFirstOrLast","breaksOnEachRest","beam_rests","breaksOnFirstOrLastRest","beam_middle_only","breakOnStemChange","maintain_stem_directions","prevDirection","isUnbeamableDuration","sanitizeGroups","findFirstNote","applyStemDirection","beamedNoteGroups","beamable","allTuplets","uniqueTuplets","noteTuplet","getTuplets","secondary_breaks","secondary_break_ticks","flat_beam_offset","beamCount","breakSecondaryAt","indices","setPartialBeamSideAt","side","unsetPartialBeamSideAt","getSlopeY","calculateSlope","firstNote","initialSlope","firstStemTipY","firstStemX","getStemSlope","minCost","MAX_VALUE","bestSlope","totalStemExtension","yShiftTemp","adjustedStemTipY","diff","idealSlope","calculateFlatSlope","extremeY","extremeBeamCount","currentExtreme","extremeTest","newOffset","getBeamYToDraw","beamY","applyStemExtensions","beamedStemTipY","preBeamExtension","beamExtension","totalBeamWidth","lookupBeamDirection","prev_tick","next_tick","forcedBeamDirection","lookup_duration","prev_note_gets_beam","next_note_gets_beam","note_gets_beam","getBeamLines","tick_of_duration","beam_started","beam_lines","current_beam","previous_should_break","tick_tally","should_break","next_note","beam_alone","beam_direction","last_beam","drawStems","drawBeamLines","valid_beam_durations","beamThickness","beamLines","beam_line","startBeamX","startBeamY","lastBeamX","lastBeamY","ClefNote","clef_obj","abs_x","Crescendo","extend_left","extend_right","decrescendo","setHeight","setDecrescendo","decresc","tick_context","next_context","begin_x","half_height","reverse","renderHairpin","CurvePosition","Curve","from","to","NEAR_HEAD","position_end","invert","cps","nearHead","nearTop","NEAR_TOP","renderCurve","first_x","first_y","last_x","last_y","cp0x","cp0y","cp_spacing","end_metric","Parser","flattenMatches","matchedString","results","grammar","errorPos","expect","matchFail","returnPos","matchSuccess","matchToken","token","noSpace","regexp","RegExp","success","incrementPos","expectOne","rule","maybe","allMatches","oneMatch","localPos","or","gotOne","numMatches","expectOneOrMore","more","expectZeroOrMore","ruleFunc","bind","oneOrMore","zeroOrMore","matches","run","EasyScore","EasyScoreGrammar","PIECE","PIECES","EOL","CHORDORNOTE","PARAMS","commitPiece","COMMA","DURATION","DOTS","OPTS","CHORD","SINGLENOTE","LPAREN","NOTES","RPAREN","addChord","NOTE","NOTENAME","ACCIDENTAL","OCTAVE","addSingleNote","MICROTONES","ACCIDENTALS","DOT","setNoteDots","SLASH","MAYBESLASH","TYPES","setNoteType","DURATIONS","setNoteDuration","LBRACKET","KEYVAL","KEYVALS","RBRACKET","KEY","EQUALS","VAL","addNoteOption","SVAL","DVAL","Piece","chord","Builder","commitHooks","elements","rollingDuration","resetPiece","getElements","addCommitHook","commitHook","piece","addNote","standardAccidentals","notePiece","GhostNote","buildAndAttach","setId","commaSeparatedRegex","setClass","defaults","easyScoreHook","throwOnError","parser","ERROR_MSG","parameter","GlyphNote","ignoreTicks","setGlyph","SCALE","slash","ret","staveNoteScale","offsetScale","slashBBox","calcBeamedNotesSlashBBox","noteHeadBounds","defaultStemExtention","defaultOffsetY","slashStemOffset","slashBeamOffset","protrusions","beam_slope","scaleX","beam_angle","atan","iPointOnBeam","slash_angle","protrusion_stem_dx","protrusion_stem_dy","protrusion_beam_dx","protrusion_beam_dy","stem0X","stemY","KeySigNote","semibreve_rest","MultiMeasureRest","number_of_measures","xs","hasPaddingLeft","hasPaddingRight","hasLineThickness","hasSymbolSpacing","padding_left","padding_right","line_thickness","symbol_spacing","use_symbols","show_number","number_line","number_glyph_point","serif_thickness","semibreve_rest_glyph_scale","getXs","drawLine","spacingBetweenLines","lineThicknessHalf","serifThickness","bot","leftIndented","rightIndented","lineTop","lineBottom","drawSymbols","n4","n2","n1","get_semibreve_rest","rest_scale","rest_width","yMiddle","timeSig","drawPedalGlyph","glyph_data","PedalMarking","custom_depress_text","custom_release_text","bracket_height","text_margin_right","bracket_line_width","pedal","MIXED","setCustomText","depress","drawBracketed","prev_x","prev_y","is_pedal_depressed","next_is_same","prev_is_same","drawText","pedal_depress","pedal_release","mixed","CODES","RepeatNote","drawArrowHead","StaveLine","line_dash","rounded_end","draw_start_arrow","draw_end_arrow","arrowhead_length","arrowhead_angle","text_position_vertical","TextVerticalPosition","text_justification","applyLineStyle","applyFontStyle","drawArrowLine","pt1","pt2","both_arrows","distance","ratio","end_y","start_y","line_angle","angle1","angle2","top_x","bottom_x","start_position","end_position","first_index","last_index","upwards_slope","notehead_width","vertical_position","System","spaceBetweenStaves","autoWidth","noJustification","debugFormatter","formatIterations","noPadding","details","formatOptions","addConnector","connector","addStave","staveOptions","spaceAbove","spaceBelow","debugNoteMetrics","options_details","allVoices","allStaves","debugNoteMetricsYs","part","lastY","formatBegModifiers","plotDebugging","plotMetrics","positions","ghost","draw_dots","draw_stem_through_stave","setGhost","tabToGlyph","getStemY","stemDownLine","stemStartLine","flag_x","flag_y","drawStemThrough","stemThrough","stemLines","unused_strings","up_stem","down_stem","line_spacing","total_lines","stem_lines","strings","containsLastString","containsFirstString","line_ys","isTopBound","isBottomBound","getPartialStemLines","strings_used","stem_through","getUnusedStringGroups","drawPositions","tab_x","render_stem","TabStave","addTabGlyph","TextBracket","TextBracketPosition","stop","show_bracket","underline_superscript","Positions","PositionsString","main_measure","main_width","main_height","super_y","super_measure","super_width","super_height","line_y","TextDynamics","sequence","glyph_font_size","total_width","letter","letter_x","current_letter","TimeSigNote","timeSigInfo","VibratoBracket","bracket_data","stop_x","Factory","renderQ","systems","initRenderer","getVoices","ghostNote","textNote","barNote","clefNote","timeSigNote","keySigNote","hJustify","vJustify","kerning","upperAccidental","lowerAccidental","numMeasures","multiMeasureRest","secondaryBeamBreaks","partialBeamDirections","curve","tie","vibratoBracket","textBracket","system","GraceTabNote","KeyManager","setKey","getKey","scaleMapByValue","originalScaleMapByValue","getAccidental","selectNote","scaleNote","modparts","change","valueNote","originalValueNote","StaveHairpin","hairpin","left_shift_px","right_shift_px","right_shift_ticks","left_shift_ticks","ppt","pixelsPerTick","l_shift_px","r_shift_px","hairpin_options","setRenderOptions","dis","staff_height","l_shift","r_shift","CRESC","DECRESC","TabSlide","first_fret","last_fret","SLIDE_UP","SLIDE_DOWN","slide_y","Tremolo","y_spacing_scale","extra_stroke_scale","y_spacing","Tuning","tuningString","tuningValues","setTuning","names","standard","dagdad","dropd","standardBanjo","noteToInteger","getValueForString","stringNum","getValueForFret","fretNum","stringValue","getNoteForFret","integerToNote","Flow","BUILD","VERSION","DATE","fontNames","fontModuleOrPath","hasKeySignature","getKeySignatures","CustomFont","noteheadSquareWhite","noteheadSquareBlack","accidentalBuyukMucennebFlat","accidentalBakiyeFlat","accidentalKucukMucennebSharp","accidentalKoron","accidentalSori","vexAccidentalMicrotonal2","vexAccidentalMicrotonal3","vexAccidentalMicrotonal4","vexNoteHeadRectBlack","vexNoteHeadRectWhite","CustomMetrics","smufl","LelandFont","bracketTop","y_min","bracketBottom","gClef","cClef","fClef","unpitchedPercussionClef1","timeSig0","timeSig1","timeSig2","timeSig3","timeSig4","timeSig5","timeSig6","timeSig7","timeSig8","timeSig9","timeSigCommon","timeSigCutCommon","timeSigPlus","noteheadDoubleWhole","noteheadWhole","noteheadHalf","noteheadBlack","noteheadXBlack","noteheadCircleX","noteheadDoubleWholeSquare","noteheadTriangleUpBlack","noteheadSlashedDoubleWhole1","noteheadSlashedWhole1","noteheadSlashedHalf1","noteheadSlashedBlack1","noteheadSlashedDoubleWhole2","noteheadSlashedWhole2","noteheadSlashedHalf2","noteheadSlashedBlack2","noteheadDiamondDoubleWhole","noteheadDiamondWhole","noteheadDiamondHalf","noteheadDiamondBlack","noteheadParenthesisRight","noteheadParenthesisLeft","noteheadMoonBlack","noteheadTriangleLeftBlack","noteheadTriangleRightBlack","noteheadTriangleRoundDownBlack","augmentationDot","tremolo1","flag8thUp","flag8thDown","flag16thUp","flag16thDown","flag32ndUp","flag32ndDown","flag64thUp","flag64thDown","flag128thUp","flag128thDown","accidentalFlat","accidentalNatural","accidentalSharp","accidentalDoubleSharp","accidentalDoubleFlat","accidentalParensLeft","accidentalParensRight","accidentalQuarterToneFlatStein","accidentalThreeQuarterTonesFlatZimmermann","accidentalQuarterToneSharpStein","accidentalThreeQuarterTonesSharpStein","articAccentAbove","articAccentBelow","articTenutoAbove","articTenutoBelow","articStaccatoAbove","articStaccatoBelow","articStaccatissimoAbove","articStaccatissimoBelow","articMarcatoAbove","articMarcatoBelow","fermataAbove","fermataBelow","fermataLongAbove","fermataLongBelow","fermataVeryLongAbove","fermataVeryLongBelow","fermataShortAbove","fermataShortBelow","breathMarkComma","caesura","caesuraCurved","restMaxima","restDoubleWhole","restWhole","restWholeLegerLine","restHalf","restHalfLegerLine","restQuarter","rest8th","rest16th","rest32nd","rest64th","rest128th","dynamicPiano","dynamicMezzo","dynamicForte","dynamicRinforzando","dynamicSforzando","dynamicZ","ornamentTrill","ornamentTurn","ornamentTurnSlash","ornamentMordent","ornamentShortTrill","ornamentTremblement","ornamentPrecompAppoggTrill","ornamentPrecompSlideTrillDAnglebert","ornamentPrecompSlideTrillBach","ornamentPrecompTrillSuffixDandrieu","ornamentPrecompDoubleCadenceUpperPrefix","ornamentPrecompTrillLowerSuffix","brassMuteClosed","brassMuteOpen","stringsDownBow","stringsUpBow","stringsHarmonic","pluckedSnapPizzicatoAbove","pluckedSnapPizzicatoBelow","keyboardPedalPed","keyboardPedalUp","wiggleArpeggiatoUp","repeat1Bar","repeat2Bars","repeat4Bars","repeatBarSlash","csymDiminished","csymHalfDiminished","csymAugmented","csymMajorSeventh","generatedOn","LelandMetrics","endPaddingMax","endPaddingMin","unalignedNotePadding","default","small","smuflCode","shiftX","lineCount","gracenote","pedalMarking","up","down","digits","shiftLine","tupletPoint","tremolo","offsetYStemUp","offsetYStemDown","offsetXStemUp","offsetXStemDown","grace","staveRepetition","symbolText","offsetX","offsetY","heightAdjustmentForFlag","noteheadTriangleUpHalf","noteheadTriangleUpWhole","noteheadXHalf","noteheadXWhole","staveTempo","arrowheadBlackDown","straight","wiggly","arrowheadBlackUp","breathMarkTick","restQuarterStemUp","restQuarterStemDown","custom","noteheadCircleXStemUp","noteheadCircleXStemDown","noteheadDiamondHalfStemUp","noteheadDiamondBlackStemUp","noteheadDiamondWholeStemUp","noteheadXHalfStemUp","noteheadXHalfStemDown","noteheadXWholeStemUp","noteheadXWholeStemDown","noteheadSquareWhiteStemDown","noteheadSquareWhiteStemUp","noteheadSquareBlackStemUp","noteheadTriangleUpWholeStemUp","csymParensLeftTall","csymParensRightTall","csymBracketLeftTall","csymBracketRightTall","csymParensLeftVeryTall","csymParensRightVeryTall","csymDiagonalArrangementSlash","csymMinor","brassScoop","brassDoitMedium","brassFallLipShort","brassLiftMedium","brassFallRoughMedium","brassBend","brassFlip","brassJazzTurn","brassSmear","PetalumaScriptFont","$","I","J","K","N","O","Q","U","V","Y","Z","_","l","RobotoSlabFont","Vex","cmp","eq","newArr","last","canvasSelector","start_time","Date","getTime","setMusicFont","fontData","registerInfo","description","loadTextFonts"],"sourceRoot":""} \ No newline at end of file diff --git a/build/cjs/vexflow-petaluma.js b/build/cjs/vexflow-petaluma.js new file mode 100644 index 0000000000..7a6ee92448 --- /dev/null +++ b/build/cjs/vexflow-petaluma.js @@ -0,0 +1,7 @@ +/*! + * VexFlow 4.1.0-alpha.0 2022-10-10T04:47:38.237Z 847bc9014672858aedc7f8460384f51f98d6bd84 + * Copyright (c) 2010 Mohit Muthanna Cheppudira + * https://www.vexflow.com https://github.com/0xfe/vexflow + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Vex=e():t.Vex=e()}("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:this,(function(){return(()=>{"use strict";var t={d:(e,i)=>{for(var s in i)t.o(i,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:i[s]})}};t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),t.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),t.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var e={};t.d(e,{default:()=>i});var i={};function s(t,e,i=!0){if("object"!=typeof t||null===t)return!1;let s=t.constructor;if(i){for(;null!==t;){if(s=t.constructor,"CATEGORY"in s&&s.CATEGORY===e)return!0;t=Object.getPrototypeOf(t)}return!1}return"CATEGORY"in s&&s.CATEGORY===e}t.r(i),t.d(i,{Accidental:()=>it,Annotation:()=>lt,AnnotationHorizontalJustify:()=>ht,AnnotationVerticalJustify:()=>bt,Articulation:()=>_t,BEAM_BOTH:()=>Re,BEAM_LEFT:()=>Be,BEAM_RIGHT:()=>Fe,BarNote:()=>Pt,Barline:()=>Nt,BarlineType:()=>wt,Beam:()=>Oe,Bend:()=>At,BoundingBox:()=>C,BoundingBoxComputation:()=>k,Builder:()=>Ve,CanvasContext:()=>Jt,Category:()=>u,ChordSymbol:()=>Bt,ChordSymbolHorizontalJustify:()=>vt,ChordSymbolVerticalJustify:()=>Et,Clef:()=>de,ClefNote:()=>Le,Crescendo:()=>We,Curve:()=>ze,CurvePosition:()=>Ie,Dot:()=>Ft,EasyScore:()=>Je,EasyScoreGrammar:()=>Xe,Element:()=>O,Factory:()=>Ti,Flow:()=>Pi,Font:()=>B,FontStyle:()=>N,FontWeight:()=>D,Formatter:()=>Ne,Fraction:()=>v,FretHandFinger:()=>Rt,GhostNote:()=>Ze,Glyph:()=>Q,GlyphNote:()=>ti,GraceNote:()=>ei,GraceNoteGroup:()=>Ht,GraceTabNote:()=>wi,KeyManager:()=>vi,KeySigNote:()=>ii,KeySignature:()=>me,Modifier:()=>Z,ModifierContext:()=>ce,ModifierPosition:()=>$,MultiMeasureRest:()=>ni,Music:()=>tt,Note:()=>St,NoteHead:()=>Ot,NoteSubGroup:()=>Xt,Ornament:()=>Vt,OutlineCode:()=>K,Parenthesis:()=>Kt,Parser:()=>Ye,PedalMarking:()=>oi,Piece:()=>je,Registry:()=>R,RenderContext:()=>xt,Renderer:()=>oe,RendererBackends:()=>ie,RendererLineEndType:()=>se,RepeatNote:()=>hi,Repetition:()=>ge,RuntimeError:()=>p,SVGContext:()=>ee,Stave:()=>ve,StaveConnector:()=>Ce,StaveHairpin:()=>Ei,StaveLine:()=>li,StaveModifier:()=>Dt,StaveModifierPosition:()=>Tt,StaveNote:()=>It,StaveSection:()=>ue,StaveTempo:()=>pe,StaveText:()=>xe,StaveTie:()=>zt,Stem:()=>st,StemmableNote:()=>Lt,StringNumber:()=>re,Stroke:()=>he,SymbolModifiers:()=>kt,SymbolTypes:()=>Ct,System:()=>ci,TabNote:()=>di,TabSlide:()=>Ci,TabStave:()=>mi,TabTie:()=>Ut,TextBracket:()=>pi,TextBracketPosition:()=>ui,TextDynamics:()=>xi,TextFormatter:()=>rt,TextJustification:()=>ne,TextNote:()=>_e,TickContext:()=>jt,Tickable:()=>yt,TimeSigNote:()=>fi,TimeSignature:()=>Se,TimeSignatureGlyph:()=>ye,Tremolo:()=>ki,Tuning:()=>Di,Tuplet:()=>Ae,TupletLocation:()=>Pe,Vex:()=>Li,Vibrato:()=>be,VibratoBracket:()=>yi,Voice:()=>Yt,VoiceMode:()=>Gt,Volta:()=>fe,VoltaType:()=>ae,defined:()=>x,drawDot:()=>ft,globalObject:()=>_,isAccidental:()=>n,isAnnotation:()=>a,isBarline:()=>o,isCategory:()=>s,isDot:()=>r,isGraceNote:()=>h,isGraceNoteGroup:()=>b,isHTMLCanvas:()=>$t,isHTMLDiv:()=>qt,isNote:()=>l,isRenderContext:()=>c,isStaveNote:()=>d,isStemmableNote:()=>m,isTabNote:()=>g,log:()=>f,midLine:()=>S,normalizeAngle:()=>w,prefix:()=>T,warn:()=>y});const n=t=>s(t,u.Accidental),a=t=>s(t,u.Annotation),o=t=>s(t,u.Barline),r=t=>s(t,u.Dot),h=t=>s(t,u.GraceNote),b=t=>s(t,u.GraceNoteGroup),l=t=>s(t,u.Note),c=t=>s(t,u.RenderContext),d=t=>s(t,u.StaveNote),m=t=>s(t,u.StemmableNote),g=t=>s(t,u.TabNote);var u;!function(t){t.Accidental="Accidental",t.Annotation="Annotation",t.Articulation="Articulation",t.Barline="Barline",t.BarNote="BarNote",t.Beam="Beam",t.Bend="Bend",t.ChordSymbol="ChordSymbol",t.Clef="Clef",t.ClefNote="ClefNote",t.Crescendo="Crescendo",t.Curve="Curve",t.Dot="Dot",t.Element="Element",t.Fraction="Fraction",t.FretHandFinger="FretHandFinger",t.GhostNote="GhostNote",t.Glyph="Glyph",t.GlyphNote="GlyphNote",t.GraceNote="GraceNote",t.GraceNoteGroup="GraceNoteGroup",t.GraceTabNote="GraceTabNote",t.KeySignature="KeySignature",t.KeySigNote="KeySigNote",t.Modifier="Modifier",t.MultiMeasureRest="MultiMeasureRest",t.Note="Note",t.NoteHead="NoteHead",t.NoteSubGroup="NoteSubGroup",t.Ornament="Ornament",t.Parenthesis="Parenthesis",t.PedalMarking="PedalMarking",t.RenderContext="RenderContext",t.RepeatNote="RepeatNote",t.Repetition="Repetition",t.Stave="Stave",t.StaveConnector="StaveConnector",t.StaveHairpin="StaveHairpin",t.StaveLine="StaveLine",t.StaveModifier="StaveModifier",t.StaveNote="StaveNote",t.StaveSection="StaveSection",t.StaveTempo="StaveTempo",t.StaveText="StaveText",t.StaveTie="StaveTie",t.Stem="Stem",t.StemmableNote="StemmableNote",t.StringNumber="StringNumber",t.Stroke="Stroke",t.System="System",t.TabNote="TabNote",t.TabSlide="TabSlide",t.TabStave="TabStave",t.TabTie="TabTie",t.TextBracket="TextBracket",t.TextDynamics="TextDynamics",t.TextNote="TextNote",t.Tickable="Tickable",t.TimeSignature="TimeSignature",t.TimeSigNote="TimeSigNote",t.Tremolo="Tremolo",t.Tuplet="Tuplet",t.Vibrato="Vibrato",t.VibratoBracket="VibratoBracket",t.Voice="Voice",t.Volta="Volta"}(u||(u={}));class p extends Error{constructor(t,e=""){super("[RuntimeError] "+t+": "+e),this.code=t}}function _(){return"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==t.g?t.g:Function("return this")()}function x(t,e="undefined",i=""){if(void 0===t)throw new p(e,i);return t}function f(t,...e){if(!e)return;const i=Array.prototype.slice.call(e).join(" ");_().console.log(t+": "+i)}function y(...t){const e=t.join(" "),i=new Error;_().console.log("Warning: ",e,i.stack)}function S(t,e){let i=e+(t-e)/2;var s,n;return i%2>0&&(i=((s=10*i)%(n=5)>=n/2?parseInt(""+s/n,10)*n+n:parseInt(""+s/n,10)*n)/10),i}function T(t){return`vf-${t}`}function w(t){return(t%=2*Math.PI)<0&&(t+=2*Math.PI),t}class v{constructor(t,e){this.numerator=1,this.denominator=1,this.set(t,e)}static get CATEGORY(){return u.Fraction}static GCD(t,e){if("number"!=typeof t||Number.isNaN(t)||"number"!=typeof e||Number.isNaN(e))throw new p("BadArgument",`Invalid numbers: ${t}, ${e}`);let i;for(;0!==e;)i=e,e=t%e,t=i;return t}static LCM(t,e){return t*e/v.GCD(t,e)}static LCMM(t){return 0===t.length?0:1===t.length?t[0]:2===t.length?v.LCM(t[0],t[1]):v.LCM(t.shift(),v.LCMM(t))}set(t=1,e=1){return this.numerator=t,this.denominator=e,this}value(){return this.numerator/this.denominator}simplify(){let t=this.numerator,e=this.denominator;const i=v.GCD(t,e);return t/=i,e/=i,e<0&&(e=-e,t=-t),this.set(t,e)}add(t=0,e=1){const[i,s]=E(t,e),n=v.LCM(this.denominator,s),a=n/this.denominator,o=n/s,r=this.numerator*a+i*o;return this.set(r,n)}subtract(t=0,e=1){const[i,s]=E(t,e),n=v.LCM(this.denominator,s),a=n/this.denominator,o=n/s,r=this.numerator*a-i*o;return this.set(r,n)}multiply(t=1,e=1){const[i,s]=E(t,e);return this.set(this.numerator*i,this.denominator*s)}divide(t=1,e=1){const[i,s]=E(t,e);return this.set(this.numerator*s,this.denominator*i)}equals(t){const e=v.__staticFractionA.copy(t).simplify(),i=v.__staticFractionB.copy(this).simplify();return e.numerator===i.numerator&&e.denominator===i.denominator}greaterThan(t){const e=v.__staticFractionB.copy(this);return e.subtract(t),e.numerator>0}greaterThanEquals(t){const e=v.__staticFractionB.copy(this);return e.subtract(t),e.numerator>=0}lessThan(t){return!this.greaterThanEquals(t)}lessThanEquals(t){return!this.greaterThan(t)}clone(){return new v(this.numerator,this.denominator)}copy(t){return"number"==typeof t?this.set(t,1):this.set(t.numerator,t.denominator)}quotient(){return Math.floor(this.numerator/this.denominator)}remainder(){return this.numerator%this.denominator}makeAbs(){return this.denominator=Math.abs(this.denominator),this.numerator=Math.abs(this.numerator),this}toString(){return`${this.numerator}/${this.denominator}`}toSimplifiedString(){return v.__staticFractionTmp.copy(this).simplify().toString()}toMixedString(){let t="";const e=this.quotient(),i=v.__staticFractionTmp.copy(this);return e<0&&i.makeAbs(),0!==e?(t+=e,0!==i.numerator&&(t+=` ${i.toSimplifiedString()}`)):t=0===i.numerator?"0":i.toSimplifiedString(),t}parse(t){const e=t.split("/"),i=parseInt(e[0],10),s=e[1]?parseInt(e[1],10):1;return this.set(i,s)}}function E(t,e=1){return"number"==typeof t?[t,e]:[t.numerator,t.denominator]}v.__staticFractionA=new v,v.__staticFractionB=new v,v.__staticFractionTmp=new v;class C{constructor(t,e,i,s){this.x=t,this.y=e,this.w=i,this.h=s}static copy(t){return new C(t.x,t.y,t.w,t.h)}getX(){return this.x}getY(){return this.y}getW(){return this.w}getH(){return this.h}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setW(t){return this.w=t,this}setH(t){return this.h=t,this}move(t,e){return this.x+=t,this.y+=e,this}clone(){return C.copy(this)}mergeWith(t){const e=t,i=this.xthis.x2)&&(this.x2=t),(isNaN(this.y1)||ethis.y2)&&(this.y2=e)}addX(t){this.addPoint(t,this.y1)}addY(t){this.addPoint(this.x1,t)}addQuadraticCurve(t,e,i,s,n,a){this.addPoint(t,e),this.addPoint(n,a);const o=i-t;let r=o-(n-i);if(0!=r){const e=o/r;if(e>0&&e<1){const s=1-e;this.addX(s*s*t+2*s*e*i+e*e*n)}}const h=s-e;if(r=h-(a-s),0!=r){const t=h/r;if(t>0&&t<1){const i=1-t;this.addY(i*i*e+2*i*t*s+t*t*a)}}}addBezierCurve(t,e,i,s,n,a,o,r){const h=[t,e],b=[i,s],l=[n,a],c=[o,r];let d;this.addPoint(h[0],h[1]),this.addPoint(c[0],c[1]);const m=(t,e)=>Math.pow(1-t,3)*h[e]+3*Math.pow(1-t,2)*t*b[e]+3*(1-t)*Math.pow(t,2)*l[e]+Math.pow(t,3)*c[e];for(d=0;d<=1;d++){const t=6*h[d]-12*b[d]+6*l[d],e=-3*h[d]+9*b[d]-9*l[d]+3*c[d],i=3*b[d]-3*h[d];if(0===e){if(0===t)continue;const e=-i/t;0=600;{const e=parseInt(t,10);return isNaN(e)?"bold"===t.toLowerCase():e>=600}}return!1}static isItalic(t){return!!t&&t.toLowerCase()===N.ITALIC}static loadWebFont(t,e,i=!0){return P(this,void 0,void 0,(function*(){const s=new FontFace(t,(i?`url(${e}2) format('woff2'), `:"")+`url(${e}) format('woff')`);return yield s.load(),document.fonts.add(s),s}))}static loadWebFonts(){return P(this,void 0,void 0,(function*(){const t=B.WEB_FONT_HOST,e=B.WEB_FONT_FILES;for(const i in e){const s=e[i];B.loadWebFont(i,t+s)}}))}static load(t,e,i){let s=M[t];return s||(s=new B(t),M[t]=s),e&&s.setData(e),i&&s.setMetrics(i),s}getName(){return this.name}getData(){return x(this.data,"FontError","Missing font data")}getMetrics(){return x(this.metrics,"FontError","Missing metrics")}setData(t){this.data=t}setMetrics(t){this.metrics=t}hasData(){return void 0!==this.data}getResolution(){return this.getData().resolution}getGlyphs(){return this.getData().glyphs}lookupMetric(t,e){const i=t.split(".");let s=this.getMetrics();for(let t=0;tt[e]))}}return[]}getElementsByType(t){return this.getElementsByAttribute("type",t)}getElementsByClass(t){return this.getElementsByAttribute("class",t)}onUpdate(t){return["id","type","class"].includes(t.name)&&this.updateIndex(t),this}}class O{constructor(){var t;this.children=[],this.attrs={id:O.newID(),el:void 0,type:this.getCategory(),classes:{}},this.rendered=!1,null===(t=R.getDefaultRegistry())||void 0===t||t.register(this)}static get CATEGORY(){return u.Element}static newID(){return"auto"+O.ID++}addChildElement(t){return this.children.push(t),this}getCategory(){return this.constructor.CATEGORY}setStyle(t){return this.style=t,this}setGroupStyle(t){return this.style=t,this.children.forEach((e=>e.setGroupStyle(t))),this}getStyle(){return this.style}applyStyle(t=this.context,e=this.getStyle()){return e&&t?(t.save(),e.shadowColor&&t.setShadowColor(e.shadowColor),e.shadowBlur&&t.setShadowBlur(e.shadowBlur),e.fillStyle&&t.setFillStyle(e.fillStyle),e.strokeStyle&&t.setStrokeStyle(e.strokeStyle),e.lineWidth&&t.setLineWidth(e.lineWidth),this):this}restoreStyle(t=this.context,e=this.getStyle()){return e&&t?(t.restore(),this):this}drawWithStyle(){this.checkContext(),this.applyStyle(),this.draw(),this.restoreStyle()}hasClass(t){return!0===this.attrs.classes[t]}addClass(t){var e;return this.attrs.classes[t]=!0,null===(e=this.registry)||void 0===e||e.onUpdate({id:this.attrs.id,name:"class",value:t,oldValue:void 0}),this}removeClass(t){var e;return delete this.attrs.classes[t],null===(e=this.registry)||void 0===e||e.onUpdate({id:this.attrs.id,name:"class",value:void 0,oldValue:t}),this}onRegister(t){return this.registry=t,this}isRendered(){return this.rendered}setRendered(t=!0){return this.rendered=t,this}getAttributes(){return this.attrs}getAttribute(t){return this.attrs[t]}getSVGElement(t=""){const e=T(this.attrs.id+t),i=document.getElementById(e);if(i)return i}setAttribute(t,e){var i;const s=this.attrs.id,n=this.attrs[t];return this.attrs[t]=e,null===(i=this.registry)||void 0===i||i.onUpdate({id:s,name:t,value:e,oldValue:n}),this}getBoundingBox(){return this.boundingBox}getContext(){return this.context}setContext(t){return this.context=t,this}checkContext(){return x(this.context,"NoContext","No rendering context attached to instance.")}set font(t){this.setFont(t)}get font(){return B.toCSSString(this.textFont)}setFont(t,e,i,s){const n=this.constructor.TEXT_FONT,a="object"==typeof t,o="string"==typeof t,r=void 0===t,h=void 0===e&&void 0===i&&void 0===s;return this.textFont=a?Object.assign(Object.assign({},n),t):o&&h?B.fromCSSString(t):r&&h?Object.assign({},n):B.validate(null!=t?t:n.family,null!=e?e:n.size,null!=i?i:n.weight,null!=s?s:n.style),this}getFont(){return this.textFont||this.resetFont(),B.toCSSString(this.textFont)}resetFont(){this.setFont()}get fontInfo(){return this.textFont||this.resetFont(),Object.assign({},this.textFont)}set fontInfo(t){this.setFont(t)}setFontSize(t){const e=this.fontInfo;return this.setFont(e.family,t,e.weight,e.style),this}getFontSize(){return this.fontSize}set fontSize(t){this.setFontSize(t)}get fontSize(){let t=this.fontInfo.size;return"number"==typeof t&&(t=`${t}pt`),t}get fontSizeInPoints(){return B.convertSizeToPointValue(this.fontSize)}get fontSizeInPixels(){return B.convertSizeToPixelValue(this.fontSize)}get fontStyle(){return this.fontInfo.style}set fontStyle(t){const e=this.fontInfo;this.setFont(e.family,e.size,e.weight,t)}get fontWeight(){return this.fontInfo.weight+""}set fontWeight(t){const e=this.fontInfo;this.setFont(e.family,e.size,t,e.style)}}O.ID=1e3,O.TEXT_FONT={family:B.SANS_SERIF,size:B.SIZE,weight:D.NORMAL,style:N.NORMAL};const L=16384,W={"1/2":32768,1:16384,2:8192,4:4096,8:2048,16:1024,32:512,64:256,128:128,256:64},I={w:"1",h:"2",q:"4",b:"256"},z={C:{num:0},Am:{num:0},F:{acc:"b",num:1},Dm:{acc:"b",num:1},Bb:{acc:"b",num:2},Gm:{acc:"b",num:2},Eb:{acc:"b",num:3},Cm:{acc:"b",num:3},Ab:{acc:"b",num:4},Fm:{acc:"b",num:4},Db:{acc:"b",num:5},Bbm:{acc:"b",num:5},Gb:{acc:"b",num:6},Ebm:{acc:"b",num:6},Cb:{acc:"b",num:7},Abm:{acc:"b",num:7},G:{acc:"#",num:1},Em:{acc:"#",num:1},D:{acc:"#",num:2},Bm:{acc:"#",num:2},A:{acc:"#",num:3},"F#m":{acc:"#",num:3},E:{acc:"#",num:4},"C#m":{acc:"#",num:4},B:{acc:"#",num:5},"G#m":{acc:"#",num:5},"F#":{acc:"#",num:6},"D#m":{acc:"#",num:6},"C#":{acc:"#",num:7},"A#m":{acc:"#",num:7}},U={treble:{line_shift:0},bass:{line_shift:6},tenor:{line_shift:4},alto:{line_shift:3},soprano:{line_shift:1},percussion:{line_shift:0},"mezzo-soprano":{line_shift:2},"baritone-c":{line_shift:5},"baritone-f":{line_shift:5},subbass:{line_shift:7},french:{line_shift:-1}},G={C:{index:0,int_val:0},CN:{index:0,int_val:0,accidental:"n"},"C#":{index:0,int_val:1,accidental:"#"},"C##":{index:0,int_val:2,accidental:"##"},CB:{index:0,int_val:11,accidental:"b"},CBB:{index:0,int_val:10,accidental:"bb"},D:{index:1,int_val:2},DN:{index:1,int_val:2,accidental:"n"},"D#":{index:1,int_val:3,accidental:"#"},"D##":{index:1,int_val:4,accidental:"##"},DB:{index:1,int_val:1,accidental:"b"},DBB:{index:1,int_val:0,accidental:"bb"},E:{index:2,int_val:4},EN:{index:2,int_val:4,accidental:"n"},"E#":{index:2,int_val:5,accidental:"#"},"E##":{index:2,int_val:6,accidental:"##"},EB:{index:2,int_val:3,accidental:"b"},EBB:{index:2,int_val:2,accidental:"bb"},F:{index:3,int_val:5},FN:{index:3,int_val:5,accidental:"n"},"F#":{index:3,int_val:6,accidental:"#"},"F##":{index:3,int_val:7,accidental:"##"},FB:{index:3,int_val:4,accidental:"b"},FBB:{index:3,int_val:3,accidental:"bb"},G:{index:4,int_val:7},GN:{index:4,int_val:7,accidental:"n"},"G#":{index:4,int_val:8,accidental:"#"},"G##":{index:4,int_val:9,accidental:"##"},GB:{index:4,int_val:6,accidental:"b"},GBB:{index:4,int_val:5,accidental:"bb"},A:{index:5,int_val:9},AN:{index:5,int_val:9,accidental:"n"},"A#":{index:5,int_val:10,accidental:"#"},"A##":{index:5,int_val:11,accidental:"##"},AB:{index:5,int_val:8,accidental:"b"},ABB:{index:5,int_val:7,accidental:"bb"},B:{index:6,int_val:11},BN:{index:6,int_val:11,accidental:"n"},"B#":{index:6,int_val:12,accidental:"#"},"B##":{index:6,int_val:13,accidental:"##"},BB:{index:6,int_val:10,accidental:"b"},BBB:{index:6,int_val:9,accidental:"bb"},R:{index:6,rest:!0},X:{index:6,accidental:"",octave:4,code:"noteheadXBlack",shift_right:5.5}},Y={"#":{code:"accidentalSharp",parenRightPaddingAdjustment:-1},"##":{code:"accidentalDoubleSharp",parenRightPaddingAdjustment:-1},b:{code:"accidentalFlat",parenRightPaddingAdjustment:-2},bb:{code:"accidentalDoubleFlat",parenRightPaddingAdjustment:-2},n:{code:"accidentalNatural",parenRightPaddingAdjustment:-1},"{":{code:"accidentalParensLeft",parenRightPaddingAdjustment:-1},"}":{code:"accidentalParensRight",parenRightPaddingAdjustment:-1},db:{code:"accidentalThreeQuarterTonesFlatZimmermann",parenRightPaddingAdjustment:-1},d:{code:"accidentalQuarterToneFlatStein",parenRightPaddingAdjustment:0},"++":{code:"accidentalThreeQuarterTonesSharpStein",parenRightPaddingAdjustment:-1},"+":{code:"accidentalQuarterToneSharpStein",parenRightPaddingAdjustment:-1},"+-":{code:"accidentalKucukMucennebSharp",parenRightPaddingAdjustment:-1},bs:{code:"accidentalBakiyeFlat",parenRightPaddingAdjustment:-1},bss:{code:"accidentalBuyukMucennebFlat",parenRightPaddingAdjustment:-1},o:{code:"accidentalSori",parenRightPaddingAdjustment:-1},k:{code:"accidentalKoron",parenRightPaddingAdjustment:-1},bbs:{code:"vexAccidentalMicrotonal1",parenRightPaddingAdjustment:-1},"++-":{code:"vexAccidentalMicrotonal2",parenRightPaddingAdjustment:-1},ashs:{code:"vexAccidentalMicrotonal3",parenRightPaddingAdjustment:-1},afhf:{code:"vexAccidentalMicrotonal4",parenRightPaddingAdjustment:-1},accSagittal5v7KleismaUp:{code:"accSagittal5v7KleismaUp",parenRightPaddingAdjustment:-1},accSagittal5v7KleismaDown:{code:"accSagittal5v7KleismaDown",parenRightPaddingAdjustment:-1},accSagittal5CommaUp:{code:"accSagittal5CommaUp",parenRightPaddingAdjustment:-1},accSagittal5CommaDown:{code:"accSagittal5CommaDown",parenRightPaddingAdjustment:-1},accSagittal7CommaUp:{code:"accSagittal7CommaUp",parenRightPaddingAdjustment:-1},accSagittal7CommaDown:{code:"accSagittal7CommaDown",parenRightPaddingAdjustment:-1},accSagittal25SmallDiesisUp:{code:"accSagittal25SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal25SmallDiesisDown:{code:"accSagittal25SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittal35MediumDiesisUp:{code:"accSagittal35MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal35MediumDiesisDown:{code:"accSagittal35MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11MediumDiesisUp:{code:"accSagittal11MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11MediumDiesisDown:{code:"accSagittal11MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11LargeDiesisUp:{code:"accSagittal11LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11LargeDiesisDown:{code:"accSagittal11LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittal35LargeDiesisUp:{code:"accSagittal35LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal35LargeDiesisDown:{code:"accSagittal35LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp25SDown:{code:"accSagittalSharp25SDown",parenRightPaddingAdjustment:-1},accSagittalFlat25SUp:{code:"accSagittalFlat25SUp",parenRightPaddingAdjustment:-1},accSagittalSharp7CDown:{code:"accSagittalSharp7CDown",parenRightPaddingAdjustment:-1},accSagittalFlat7CUp:{code:"accSagittalFlat7CUp",parenRightPaddingAdjustment:-1},accSagittalSharp5CDown:{code:"accSagittalSharp5CDown",parenRightPaddingAdjustment:-1},accSagittalFlat5CUp:{code:"accSagittalFlat5CUp",parenRightPaddingAdjustment:-1},accSagittalSharp5v7kDown:{code:"accSagittalSharp5v7kDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v7kUp:{code:"accSagittalFlat5v7kUp",parenRightPaddingAdjustment:-1},accSagittalSharp:{code:"accSagittalSharp",parenRightPaddingAdjustment:-1},accSagittalFlat:{code:"accSagittalFlat",parenRightPaddingAdjustment:-1},accSagittalSharp5v7kUp:{code:"accSagittalSharp5v7kUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v7kDown:{code:"accSagittalFlat5v7kDown",parenRightPaddingAdjustment:-1},accSagittalSharp5CUp:{code:"accSagittalSharp5CUp",parenRightPaddingAdjustment:-1},accSagittalFlat5CDown:{code:"accSagittalFlat5CDown",parenRightPaddingAdjustment:-1},accSagittalSharp7CUp:{code:"accSagittalSharp7CUp",parenRightPaddingAdjustment:-1},accSagittalFlat7CDown:{code:"accSagittalFlat7CDown",parenRightPaddingAdjustment:-1},accSagittalSharp25SUp:{code:"accSagittalSharp25SUp",parenRightPaddingAdjustment:-1},accSagittalFlat25SDown:{code:"accSagittalFlat25SDown",parenRightPaddingAdjustment:-1},accSagittalSharp35MUp:{code:"accSagittalSharp35MUp",parenRightPaddingAdjustment:-1},accSagittalFlat35MDown:{code:"accSagittalFlat35MDown",parenRightPaddingAdjustment:-1},accSagittalSharp11MUp:{code:"accSagittalSharp11MUp",parenRightPaddingAdjustment:-1},accSagittalFlat11MDown:{code:"accSagittalFlat11MDown",parenRightPaddingAdjustment:-1},accSagittalSharp11LUp:{code:"accSagittalSharp11LUp",parenRightPaddingAdjustment:-1},accSagittalFlat11LDown:{code:"accSagittalFlat11LDown",parenRightPaddingAdjustment:-1},accSagittalSharp35LUp:{code:"accSagittalSharp35LUp",parenRightPaddingAdjustment:-1},accSagittalFlat35LDown:{code:"accSagittalFlat35LDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp25SDown:{code:"accSagittalDoubleSharp25SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat25SUp:{code:"accSagittalDoubleFlat25SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7CDown:{code:"accSagittalDoubleSharp7CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7CUp:{code:"accSagittalDoubleFlat7CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5CDown:{code:"accSagittalDoubleSharp5CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5CUp:{code:"accSagittalDoubleFlat5CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v7kDown:{code:"accSagittalDoubleSharp5v7kDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v7kUp:{code:"accSagittalDoubleFlat5v7kUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp:{code:"accSagittalDoubleSharp",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat:{code:"accSagittalDoubleFlat",parenRightPaddingAdjustment:-1},accSagittal7v11KleismaUp:{code:"accSagittal7v11KleismaUp",parenRightPaddingAdjustment:-1},accSagittal7v11KleismaDown:{code:"accSagittal7v11KleismaDown",parenRightPaddingAdjustment:-1},accSagittal17CommaUp:{code:"accSagittal17CommaUp",parenRightPaddingAdjustment:-1},accSagittal17CommaDown:{code:"accSagittal17CommaDown",parenRightPaddingAdjustment:-1},accSagittal55CommaUp:{code:"accSagittal55CommaUp",parenRightPaddingAdjustment:-1},accSagittal55CommaDown:{code:"accSagittal55CommaDown",parenRightPaddingAdjustment:-1},accSagittal7v11CommaUp:{code:"accSagittal7v11CommaUp",parenRightPaddingAdjustment:-1},accSagittal7v11CommaDown:{code:"accSagittal7v11CommaDown",parenRightPaddingAdjustment:-1},accSagittal5v11SmallDiesisUp:{code:"accSagittal5v11SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v11SmallDiesisDown:{code:"accSagittal5v11SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v11SDown:{code:"accSagittalSharp5v11SDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v11SUp:{code:"accSagittalFlat5v11SUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v11CDown:{code:"accSagittalSharp7v11CDown",parenRightPaddingAdjustment:-1},accSagittalFlat7v11CUp:{code:"accSagittalFlat7v11CUp",parenRightPaddingAdjustment:-1},accSagittalSharp55CDown:{code:"accSagittalSharp55CDown",parenRightPaddingAdjustment:-1},accSagittalFlat55CUp:{code:"accSagittalFlat55CUp",parenRightPaddingAdjustment:-1},accSagittalSharp17CDown:{code:"accSagittalSharp17CDown",parenRightPaddingAdjustment:-1},accSagittalFlat17CUp:{code:"accSagittalFlat17CUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v11kDown:{code:"accSagittalSharp7v11kDown",parenRightPaddingAdjustment:-1},accSagittalFlat7v11kUp:{code:"accSagittalFlat7v11kUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v11kUp:{code:"accSagittalSharp7v11kUp",parenRightPaddingAdjustment:-1},accSagittalFlat7v11kDown:{code:"accSagittalFlat7v11kDown",parenRightPaddingAdjustment:-1},accSagittalSharp17CUp:{code:"accSagittalSharp17CUp",parenRightPaddingAdjustment:-1},accSagittalFlat17CDown:{code:"accSagittalFlat17CDown",parenRightPaddingAdjustment:-1},accSagittalSharp55CUp:{code:"accSagittalSharp55CUp",parenRightPaddingAdjustment:-1},accSagittalFlat55CDown:{code:"accSagittalFlat55CDown",parenRightPaddingAdjustment:-1},accSagittalSharp7v11CUp:{code:"accSagittalSharp7v11CUp",parenRightPaddingAdjustment:-1},accSagittalFlat7v11CDown:{code:"accSagittalFlat7v11CDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v11SUp:{code:"accSagittalSharp5v11SUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v11SDown:{code:"accSagittalFlat5v11SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v11SDown:{code:"accSagittalDoubleSharp5v11SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v11SUp:{code:"accSagittalDoubleFlat5v11SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7v11CDown:{code:"accSagittalDoubleSharp7v11CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7v11CUp:{code:"accSagittalDoubleFlat7v11CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp55CDown:{code:"accSagittalDoubleSharp55CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat55CUp:{code:"accSagittalDoubleFlat55CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp17CDown:{code:"accSagittalDoubleSharp17CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat17CUp:{code:"accSagittalDoubleFlat17CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7v11kDown:{code:"accSagittalDoubleSharp7v11kDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7v11kUp:{code:"accSagittalDoubleFlat7v11kUp",parenRightPaddingAdjustment:-1},accSagittal23CommaUp:{code:"accSagittal23CommaUp",parenRightPaddingAdjustment:-1},accSagittal23CommaDown:{code:"accSagittal23CommaDown",parenRightPaddingAdjustment:-1},accSagittal5v19CommaUp:{code:"accSagittal5v19CommaUp",parenRightPaddingAdjustment:-1},accSagittal5v19CommaDown:{code:"accSagittal5v19CommaDown",parenRightPaddingAdjustment:-1},accSagittal5v23SmallDiesisUp:{code:"accSagittal5v23SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v23SmallDiesisDown:{code:"accSagittal5v23SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v23SDown:{code:"accSagittalSharp5v23SDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v23SUp:{code:"accSagittalFlat5v23SUp",parenRightPaddingAdjustment:-1},accSagittalSharp5v19CDown:{code:"accSagittalSharp5v19CDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v19CUp:{code:"accSagittalFlat5v19CUp",parenRightPaddingAdjustment:-1},accSagittalSharp23CDown:{code:"accSagittalSharp23CDown",parenRightPaddingAdjustment:-1},accSagittalFlat23CUp:{code:"accSagittalFlat23CUp",parenRightPaddingAdjustment:-1},accSagittalSharp23CUp:{code:"accSagittalSharp23CUp",parenRightPaddingAdjustment:-1},accSagittalFlat23CDown:{code:"accSagittalFlat23CDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v19CUp:{code:"accSagittalSharp5v19CUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v19CDown:{code:"accSagittalFlat5v19CDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v23SUp:{code:"accSagittalSharp5v23SUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v23SDown:{code:"accSagittalFlat5v23SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v23SDown:{code:"accSagittalDoubleSharp5v23SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v23SUp:{code:"accSagittalDoubleFlat5v23SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v19CDown:{code:"accSagittalDoubleSharp5v19CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v19CUp:{code:"accSagittalDoubleFlat5v19CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp23CDown:{code:"accSagittalDoubleSharp23CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat23CUp:{code:"accSagittalDoubleFlat23CUp",parenRightPaddingAdjustment:-1},accSagittal19SchismaUp:{code:"accSagittal19SchismaUp",parenRightPaddingAdjustment:-1},accSagittal19SchismaDown:{code:"accSagittal19SchismaDown",parenRightPaddingAdjustment:-1},accSagittal17KleismaUp:{code:"accSagittal17KleismaUp",parenRightPaddingAdjustment:-1},accSagittal17KleismaDown:{code:"accSagittal17KleismaDown",parenRightPaddingAdjustment:-1},accSagittal143CommaUp:{code:"accSagittal143CommaUp",parenRightPaddingAdjustment:-1},accSagittal143CommaDown:{code:"accSagittal143CommaDown",parenRightPaddingAdjustment:-1},accSagittal11v49CommaUp:{code:"accSagittal11v49CommaUp",parenRightPaddingAdjustment:-1},accSagittal11v49CommaDown:{code:"accSagittal11v49CommaDown",parenRightPaddingAdjustment:-1},accSagittal19CommaUp:{code:"accSagittal19CommaUp",parenRightPaddingAdjustment:-1},accSagittal19CommaDown:{code:"accSagittal19CommaDown",parenRightPaddingAdjustment:-1},accSagittal7v19CommaUp:{code:"accSagittal7v19CommaUp",parenRightPaddingAdjustment:-1},accSagittal7v19CommaDown:{code:"accSagittal7v19CommaDown",parenRightPaddingAdjustment:-1},accSagittal49SmallDiesisUp:{code:"accSagittal49SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal49SmallDiesisDown:{code:"accSagittal49SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittal23SmallDiesisUp:{code:"accSagittal23SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal23SmallDiesisDown:{code:"accSagittal23SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittal5v13MediumDiesisUp:{code:"accSagittal5v13MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v13MediumDiesisDown:{code:"accSagittal5v13MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11v19MediumDiesisUp:{code:"accSagittal11v19MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11v19MediumDiesisDown:{code:"accSagittal11v19MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal49MediumDiesisUp:{code:"accSagittal49MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal49MediumDiesisDown:{code:"accSagittal49MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal5v49MediumDiesisUp:{code:"accSagittal5v49MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v49MediumDiesisDown:{code:"accSagittal5v49MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal49LargeDiesisUp:{code:"accSagittal49LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal49LargeDiesisDown:{code:"accSagittal49LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11v19LargeDiesisUp:{code:"accSagittal11v19LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11v19LargeDiesisDown:{code:"accSagittal11v19LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittal5v13LargeDiesisUp:{code:"accSagittal5v13LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v13LargeDiesisDown:{code:"accSagittal5v13LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp23SDown:{code:"accSagittalSharp23SDown",parenRightPaddingAdjustment:-1},accSagittalFlat23SUp:{code:"accSagittalFlat23SUp",parenRightPaddingAdjustment:-1},accSagittalSharp49SDown:{code:"accSagittalSharp49SDown",parenRightPaddingAdjustment:-1},accSagittalFlat49SUp:{code:"accSagittalFlat49SUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v19CDown:{code:"accSagittalSharp7v19CDown",parenRightPaddingAdjustment:-1},accSagittalFlat7v19CUp:{code:"accSagittalFlat7v19CUp",parenRightPaddingAdjustment:-1},accSagittalSharp19CDown:{code:"accSagittalSharp19CDown",parenRightPaddingAdjustment:-1},accSagittalFlat19CUp:{code:"accSagittalFlat19CUp",parenRightPaddingAdjustment:-1},accSagittalSharp11v49CDown:{code:"accSagittalSharp11v49CDown",parenRightPaddingAdjustment:-1},accSagittalFlat11v49CUp:{code:"accSagittalFlat11v49CUp",parenRightPaddingAdjustment:-1},accSagittalSharp143CDown:{code:"accSagittalSharp143CDown",parenRightPaddingAdjustment:-1},accSagittalFlat143CUp:{code:"accSagittalFlat143CUp",parenRightPaddingAdjustment:-1},accSagittalSharp17kDown:{code:"accSagittalSharp17kDown",parenRightPaddingAdjustment:-1},accSagittalFlat17kUp:{code:"accSagittalFlat17kUp",parenRightPaddingAdjustment:-1},accSagittalSharp19sDown:{code:"accSagittalSharp19sDown",parenRightPaddingAdjustment:-1},accSagittalFlat19sUp:{code:"accSagittalFlat19sUp",parenRightPaddingAdjustment:-1},accSagittalSharp19sUp:{code:"accSagittalSharp19sUp",parenRightPaddingAdjustment:-1},accSagittalFlat19sDown:{code:"accSagittalFlat19sDown",parenRightPaddingAdjustment:-1},accSagittalSharp17kUp:{code:"accSagittalSharp17kUp",parenRightPaddingAdjustment:-1},accSagittalFlat17kDown:{code:"accSagittalFlat17kDown",parenRightPaddingAdjustment:-1},accSagittalSharp143CUp:{code:"accSagittalSharp143CUp",parenRightPaddingAdjustment:-1},accSagittalFlat143CDown:{code:"accSagittalFlat143CDown",parenRightPaddingAdjustment:-1},accSagittalSharp11v49CUp:{code:"accSagittalSharp11v49CUp",parenRightPaddingAdjustment:-1},accSagittalFlat11v49CDown:{code:"accSagittalFlat11v49CDown",parenRightPaddingAdjustment:-1},accSagittalSharp19CUp:{code:"accSagittalSharp19CUp",parenRightPaddingAdjustment:-1},accSagittalFlat19CDown:{code:"accSagittalFlat19CDown",parenRightPaddingAdjustment:-1},accSagittalSharp7v19CUp:{code:"accSagittalSharp7v19CUp",parenRightPaddingAdjustment:-1},accSagittalFlat7v19CDown:{code:"accSagittalFlat7v19CDown",parenRightPaddingAdjustment:-1},accSagittalSharp49SUp:{code:"accSagittalSharp49SUp",parenRightPaddingAdjustment:-1},accSagittalFlat49SDown:{code:"accSagittalFlat49SDown",parenRightPaddingAdjustment:-1},accSagittalSharp23SUp:{code:"accSagittalSharp23SUp",parenRightPaddingAdjustment:-1},accSagittalFlat23SDown:{code:"accSagittalFlat23SDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v13MUp:{code:"accSagittalSharp5v13MUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v13MDown:{code:"accSagittalFlat5v13MDown",parenRightPaddingAdjustment:-1},accSagittalSharp11v19MUp:{code:"accSagittalSharp11v19MUp",parenRightPaddingAdjustment:-1},accSagittalFlat11v19MDown:{code:"accSagittalFlat11v19MDown",parenRightPaddingAdjustment:-1},accSagittalSharp49MUp:{code:"accSagittalSharp49MUp",parenRightPaddingAdjustment:-1},accSagittalFlat49MDown:{code:"accSagittalFlat49MDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v49MUp:{code:"accSagittalSharp5v49MUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v49MDown:{code:"accSagittalFlat5v49MDown",parenRightPaddingAdjustment:-1},accSagittalSharp49LUp:{code:"accSagittalSharp49LUp",parenRightPaddingAdjustment:-1},accSagittalFlat49LDown:{code:"accSagittalFlat49LDown",parenRightPaddingAdjustment:-1},accSagittalSharp11v19LUp:{code:"accSagittalSharp11v19LUp",parenRightPaddingAdjustment:-1},accSagittalFlat11v19LDown:{code:"accSagittalFlat11v19LDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v13LUp:{code:"accSagittalSharp5v13LUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v13LDown:{code:"accSagittalFlat5v13LDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp23SDown:{code:"accSagittalDoubleSharp23SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat23SUp:{code:"accSagittalDoubleFlat23SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp49SDown:{code:"accSagittalDoubleSharp49SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat49SUp:{code:"accSagittalDoubleFlat49SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7v19CDown:{code:"accSagittalDoubleSharp7v19CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7v19CUp:{code:"accSagittalDoubleFlat7v19CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp19CDown:{code:"accSagittalDoubleSharp19CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat19CUp:{code:"accSagittalDoubleFlat19CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp11v49CDown:{code:"accSagittalDoubleSharp11v49CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat11v49CUp:{code:"accSagittalDoubleFlat11v49CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp143CDown:{code:"accSagittalDoubleSharp143CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat143CUp:{code:"accSagittalDoubleFlat143CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp17kDown:{code:"accSagittalDoubleSharp17kDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat17kUp:{code:"accSagittalDoubleFlat17kUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp19sDown:{code:"accSagittalDoubleSharp19sDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat19sUp:{code:"accSagittalDoubleFlat19sUp",parenRightPaddingAdjustment:-1},accSagittalShaftUp:{code:"accSagittalShaftUp",parenRightPaddingAdjustment:-1},accSagittalShaftDown:{code:"accSagittalShaftDown",parenRightPaddingAdjustment:-1},accSagittalAcute:{code:"accSagittalAcute",parenRightPaddingAdjustment:-1},accSagittalGrave:{code:"accSagittalGrave",parenRightPaddingAdjustment:-1},accSagittal1MinaUp:{code:"accSagittal1MinaUp",parenRightPaddingAdjustment:-1},accSagittal1MinaDown:{code:"accSagittal1MinaDown",parenRightPaddingAdjustment:-1},accSagittal2MinasUp:{code:"accSagittal2MinasUp",parenRightPaddingAdjustment:-1},accSagittal2MinasDown:{code:"accSagittal2MinasDown",parenRightPaddingAdjustment:-1},accSagittal1TinaUp:{code:"accSagittal1TinaUp",parenRightPaddingAdjustment:-1},accSagittal1TinaDown:{code:"accSagittal1TinaDown",parenRightPaddingAdjustment:-1},accSagittal2TinasUp:{code:"accSagittal2TinasUp",parenRightPaddingAdjustment:-1},accSagittal2TinasDown:{code:"accSagittal2TinasDown",parenRightPaddingAdjustment:-1},accSagittal3TinasUp:{code:"accSagittal3TinasUp",parenRightPaddingAdjustment:-1},accSagittal3TinasDown:{code:"accSagittal3TinasDown",parenRightPaddingAdjustment:-1},accSagittal4TinasUp:{code:"accSagittal4TinasUp",parenRightPaddingAdjustment:-1},accSagittal4TinasDown:{code:"accSagittal4TinasDown",parenRightPaddingAdjustment:-1},accSagittal5TinasUp:{code:"accSagittal5TinasUp",parenRightPaddingAdjustment:-1},accSagittal5TinasDown:{code:"accSagittal5TinasDown",parenRightPaddingAdjustment:-1},accSagittal6TinasUp:{code:"accSagittal6TinasUp",parenRightPaddingAdjustment:-1},accSagittal6TinasDown:{code:"accSagittal6TinasDown",parenRightPaddingAdjustment:-1},accSagittal7TinasUp:{code:"accSagittal7TinasUp",parenRightPaddingAdjustment:-1},accSagittal7TinasDown:{code:"accSagittal7TinasDown",parenRightPaddingAdjustment:-1},accSagittal8TinasUp:{code:"accSagittal8TinasUp",parenRightPaddingAdjustment:-1},accSagittal8TinasDown:{code:"accSagittal8TinasDown",parenRightPaddingAdjustment:-1},accSagittal9TinasUp:{code:"accSagittal9TinasUp",parenRightPaddingAdjustment:-1},accSagittal9TinasDown:{code:"accSagittal9TinasDown",parenRightPaddingAdjustment:-1},accSagittalFractionalTinaUp:{code:"accSagittalFractionalTinaUp",parenRightPaddingAdjustment:-1},accSagittalFractionalTinaDown:{code:"accSagittalFractionalTinaDown",parenRightPaddingAdjustment:-1},accidentalNarrowReversedFlat:{code:"accidentalNarrowReversedFlat",parenRightPaddingAdjustment:-1},accidentalNarrowReversedFlatAndFlat:{code:"accidentalNarrowReversedFlatAndFlat",parenRightPaddingAdjustment:-1},accidentalWilsonPlus:{code:"accidentalWilsonPlus",parenRightPaddingAdjustment:-1},accidentalWilsonMinus:{code:"accidentalWilsonMinus",parenRightPaddingAdjustment:-1}},H={"a.":{code:"augmentationDot",between_lines:!0},av:{aboveCode:"articStaccatissimoAbove",belowCode:"articStaccatissimoBelow",between_lines:!0},"a>":{aboveCode:"articAccentAbove",belowCode:"articAccentBelow",between_lines:!0},"a-":{aboveCode:"articTenutoAbove",belowCode:"articTenutoBelow",between_lines:!0},"a^":{aboveCode:"articMarcatoAbove",belowCode:"articMarcatoBelow",between_lines:!1},"a+":{code:"pluckedLeftHandPizzicato",between_lines:!1},ao:{aboveCode:"pluckedSnapPizzicatoAbove",belowCode:"pluckedSnapPizzicatoBelow",between_lines:!1},ah:{code:"stringsHarmonic",between_lines:!1},"a@":{aboveCode:"fermataAbove",belowCode:"fermataBelow",between_lines:!1},"a@a":{code:"fermataAbove",between_lines:!1},"a@u":{code:"fermataBelow",between_lines:!1},"a@s":{aboveCode:"fermataShortAbove",belowCode:"fermataShortBelow",between_lines:!1},"a@as":{code:"fermataShortAbove",between_lines:!1},"a@us":{code:"fermataShortBelow",between_lines:!1},"a@l":{aboveCode:"fermataLongAbove",belowCode:"fermataLongBelow",between_lines:!1},"a@al":{code:"fermataLongAbove",between_lines:!1},"a@ul":{code:"fermataLongBelow",between_lines:!1},"a@vl":{aboveCode:"fermataVeryLongAbove",belowCode:"fermataVeryLongBelow",between_lines:!1},"a@avl":{code:"fermataVeryLongAbove",between_lines:!1},"a@uvl":{code:"fermataVeryLongBelow",between_lines:!1},"a|":{code:"stringsUpBow",between_lines:!1},am:{code:"stringsDownBow",between_lines:!1},"a,":{code:"pictChokeCymbal",between_lines:!1}},X={mordent:{code:"ornamentShortTrill"},mordent_inverted:{code:"ornamentMordent"},turn:{code:"ornamentTurn"},turn_inverted:{code:"ornamentTurnSlash"},tr:{code:"ornamentTrill"},upprall:{code:"ornamentPrecompSlideTrillDAnglebert"},downprall:{code:"ornamentPrecompDoubleCadenceUpperPrefix"},prallup:{code:"ornamentPrecompTrillSuffixDandrieu"},pralldown:{code:"ornamentPrecompTrillLowerSuffix"},upmordent:{code:"ornamentPrecompSlideTrillBach"},downmordent:{code:"ornamentPrecompDoubleCadenceUpperPrefixTurn"},lineprall:{code:"ornamentPrecompAppoggTrill"},prallprall:{code:"ornamentTremblement"},scoop:{code:"brassScoop"},doit:{code:"brassDoitMedium"},fall:{code:"brassFallLipShort"},doitLong:{code:"brassLiftMedium"},fallLong:{code:"brassFallRoughMedium"},bend:{code:"brassBend"},plungerClosed:{code:"brassMuteClosed"},plungerOpen:{code:"brassMuteOpen"},flip:{code:"brassFlip"},jazzTurn:{code:"brassJazzTurn"},smear:{code:"brassSmear"}};class j{static currentMusicFont(){if(0===j.MUSIC_FONT_STACK.length)throw new p("NoFonts","The font stack is empty. See: await Flow.fetchMusicFont(...); Flow.setMusicFont(...).");return j.MUSIC_FONT_STACK[0]}static clefProperties(t){if(!t||!(t in U))throw new p("BadArgument","Invalid clef: "+t);return U[t]}static keyProperties(t,e="treble",i){let s={octave_shift:0,duration:"4"};"object"==typeof i&&(s=Object.assign(Object.assign({},s),i));const n=j.sanitizeDuration(s.duration),a=t.split("/");if(a.length<2)throw new p("BadArguments",`First argument must be note/octave or note/octave/glyph-code: ${t}`);const o=a[0].toUpperCase(),r=G[o];if(!r)throw new p("BadArguments","Invalid key name: "+o);r.octave&&(a[1]=r.octave.toString());let h=parseInt(a[1],10);h+=-1*s.octave_shift;let b=(7*h-28+r.index)/2;b+=j.clefProperties(e).line_shift;let l=0;b<=0&&2*b%2==0&&(l=1),b>=6&&2*b%2==0&&(l=-1);const c=void 0!==r.int_val?12*h+r.int_val:void 0,d=r.code,m=r.shift_right;let g={};if(a.length>2&&a[2]){const t=a[2].toUpperCase();g={code:this.codeNoteHead(t,n)}||{}}return Object.assign({key:o,octave:h,line:b,int_value:c,accidental:r.accidental,code:d,stroke:l,shift_right:m,displaced:!1},g)}static integerToNote(t){if(void 0===t||t<0||t>11)throw new p("BadArguments",`integerToNote() requires an integer in the range [0, 11]: ${t}`);const e={0:"C",1:"C#",2:"D",3:"D#",4:"E",5:"F",6:"F#",7:"G",8:"G#",9:"A",10:"A#",11:"B"}[t];if(!e)throw new p("BadArguments",`Unknown note value for integer: ${t}`);return e}static tabToGlyph(t,e=1){let i,s=0,n=0;if("X"===t.toUpperCase()){const t=new Q("accidentalDoubleSharp",j.TABLATURE_FONT_SCALE).getMetrics();if(i="accidentalDoubleSharp",null==t.width||null==t.height)throw new p("InvalidMetrics","Width and height required");s=t.width,n=-t.height/2}else s=j.textWidth(t);return{text:t,code:i,getWidth:()=>s*e,shift_y:n}}static textWidth(t){return 7*t.toString().length}static articulationCodes(t){return H[t]}static accidentalCodes(t){return Y[t]}static ornamentCodes(t){return X[t]}static keySignature(t){const e=z[t];if(!e)throw new p("BadKeySignature",`Bad key signature spec: '${t}'`);if(!e.acc)return[];const i={b:[2,.5,2.5,1,3,1.5,3.5],"#":[0,1.5,-.5,1,2.5,.5,2]}[e.acc],s=[];for(let t=0;tQ.getWidth(a,t)}),s)}}j.SOFTMAX_FACTOR=100,j.STEM_WIDTH=1.5,j.STEM_HEIGHT=35,j.STAVE_LINE_THICKNESS=1,j.RENDER_PRECISION_PLACES=3,j.RESOLUTION=L,j.MUSIC_FONT_STACK=[],j.NOTATION_FONT_SCALE=39,j.TABLATURE_FONT_SCALE=39,j.SLASH_NOTEHEAD_WIDTH=15,j.STAVE_LINE_DISTANCE=10,j.TEXT_HEIGHT_OFFSET_HACK=1,j.accidentalMap=Y,j.accidentalColumnsTable={1:{a:[1],b:[1]},2:{a:[1,2]},3:{a:[1,3,2],b:[1,2,1],second_on_bottom:[1,2,3]},4:{a:[1,3,4,2],b:[1,2,3,1],spaced_out_tetrachord:[1,2,1,2]},5:{a:[1,3,5,4,2],b:[1,2,4,3,1],spaced_out_pentachord:[1,2,3,2,1],very_spaced_out_pentachord:[1,2,1,2,1]},6:{a:[1,3,5,6,4,2],b:[1,2,4,5,3,1],spaced_out_hexachord:[1,3,2,1,3,2],very_spaced_out_hexachord:[1,2,1,2,1,2]}},j.unicode={sharp:String.fromCharCode(9839),flat:String.fromCharCode(9837),natural:String.fromCharCode(9838),triangle:String.fromCharCode(9651),"o-with-slash":String.fromCharCode(248),degrees:String.fromCharCode(176),circle:String.fromCharCode(9675)},j.validTypes={n:{name:"note"},r:{name:"rest"},h:{name:"harmonic"},m:{name:"muted"},s:{name:"slash"},g:{name:"ghost"},d:{name:"diamond"},x:{name:"x"},ci:{name:"circled"},cx:{name:"circle x"},sf:{name:"slashed"},sb:{name:"slashed backward"},sq:{name:"square"},tu:{name:"triangle up"},td:{name:"triangle down"}},j.TIME4_4={num_beats:4,beat_value:4,resolution:L};const V={"1/2":{common:{stem:!1,stem_offset:0,flag:!1,stem_up_extension:-j.STEM_HEIGHT,stem_down_extension:-j.STEM_HEIGHT,tabnote_stem_up_extension:-j.STEM_HEIGHT,tabnote_stem_down_extension:-j.STEM_HEIGHT,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restDoubleWhole",rest:!0,position:"B/5",dot_shiftY:.5},s:{getWidth:()=>j.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},1:{common:{stem:!1,stem_offset:0,flag:!1,stem_up_extension:-j.STEM_HEIGHT,stem_down_extension:-j.STEM_HEIGHT,tabnote_stem_up_extension:-j.STEM_HEIGHT,tabnote_stem_down_extension:-j.STEM_HEIGHT,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restWhole",leger_code_head:"restWholeLegerLine",rest:!0,position:"D/5",dot_shiftY:.5},s:{getWidth:()=>j.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},2:{common:{stem:!0,stem_offset:0,flag:!1,stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restHalf",leger_code_head:"restHalfLegerLine",stem:!1,rest:!0,position:"B/4",dot_shiftY:-.5},s:{getWidth:()=>j.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},4:{common:{stem:!0,stem_offset:0,flag:!1,stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restQuarter",stem:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1.5,line_below:1.5},s:{getWidth:()=>j.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},8:{common:{stem:!0,stem_offset:0,flag:!0,beam_count:1,stem_beam_extension:0,code_flag_upstem:"flag8thUp",code_flag_downstem:"flag8thDown",stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest8th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1,line_below:1},s:{getWidth:()=>j.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},16:{common:{beam_count:2,stem_beam_extension:0,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag16thUp",code_flag_downstem:"flag16thDown",stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest16th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1,line_below:2},s:{getWidth:()=>j.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},32:{common:{beam_count:3,stem_beam_extension:7.5,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag32ndUp",code_flag_downstem:"flag32ndDown",stem_up_extension:9,stem_down_extension:9,tabnote_stem_up_extension:9,tabnote_stem_down_extension:9,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest32nd",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-1.5,line_above:2,line_below:2},s:{getWidth:()=>j.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},64:{common:{beam_count:4,stem_beam_extension:15,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag64thUp",code_flag_downstem:"flag64thDown",stem_up_extension:13,stem_down_extension:13,tabnote_stem_up_extension:13,tabnote_stem_down_extension:13,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest64th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-1.5,line_above:2,line_below:3},s:{getWidth:()=>j.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},128:{common:{beam_count:5,stem_beam_extension:22.5,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag128thUp",code_flag_downstem:"flag128thDown",stem_up_extension:22,stem_down_extension:22,tabnote_stem_up_extension:22,tabnote_stem_down_extension:22,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest128th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-2.5,line_above:3,line_below:3},s:{getWidth:()=>j.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}}};var K,$;!function(t){t[t.MOVE=0]="MOVE",t[t.LINE=1]="LINE",t[t.QUADRATIC=2]="QUADRATIC",t[t.BEZIER=3]="BEZIER"}(K||(K={}));class q{constructor(t,e,i){this.point=-1,this.metrics=Q.loadMetrics(t,e,i),this.bbox=Q.getOutlineBoundingBox(this.metrics.outline,this.metrics.scale,this.metrics.x_shift,this.metrics.y_shift),i&&(this.point=Q.lookupFontMetric(this.metrics.font,i,e,"point",-1))}}class J{constructor(t,e,i,s){this.outline=t,this.originX=e,this.originY=i,this.scale=s,this.i=0,this.precision=1,this.precision=Math.pow(10,j.RENDER_PRECISION_PLACES)}done(){return this.i>=this.outline.length}next(){return Math.round(this.outline[this.i++]*this.precision/this.precision)}nextX(){return Math.round((this.originX+this.outline[this.i++]*this.scale)*this.precision)/this.precision}nextY(){return Math.round((this.originY-this.outline[this.i++]*this.scale)*this.precision)/this.precision}static parse(t){const e=[],i=t.split(" ");let s=0;for(;s{const e=t.getTickContext();n&&t.setStave(n),e.setXOffset(a)}))}}class tt{static get NUM_TONES(){return this.canonical_notes.length}static get roots(){return["c","d","e","f","g","a","b"]}static get root_values(){return[0,2,4,5,7,9,11]}static get root_indices(){return{c:0,d:1,e:2,f:3,g:4,a:5,b:6}}static get canonical_notes(){return["c","c#","d","d#","e","f","f#","g","g#","a","a#","b"]}static get diatonic_intervals(){return["unison","m2","M2","m3","M3","p4","dim5","p5","m6","M6","b7","M7","octave"]}static get diatonic_accidentals(){return{unison:{note:0,accidental:0},m2:{note:1,accidental:-1},M2:{note:1,accidental:0},m3:{note:2,accidental:-1},M3:{note:2,accidental:0},p4:{note:3,accidental:0},dim5:{note:4,accidental:-1},p5:{note:4,accidental:0},m6:{note:5,accidental:-1},M6:{note:5,accidental:0},b7:{note:6,accidental:-1},M7:{note:6,accidental:0},octave:{note:7,accidental:0}}}static get intervals(){return{u:0,unison:0,m2:1,b2:1,min2:1,S:1,H:1,2:2,M2:2,maj2:2,T:2,W:2,m3:3,b3:3,min3:3,M3:4,3:4,maj3:4,4:5,p4:5,"#4":6,b5:6,aug4:6,dim5:6,5:7,p5:7,"#5":8,b6:8,aug5:8,6:9,M6:9,maj6:9,b7:10,m7:10,min7:10,dom7:10,M7:11,maj7:11,8:12,octave:12}}static get scales(){return{major:[2,2,1,2,2,2,1],minor:[2,1,2,2,1,2,2],ionian:[2,2,1,2,2,2,1],dorian:[2,1,2,2,2,1,2],phyrgian:[1,2,2,2,1,2,2],lydian:[2,2,2,1,2,2,1],mixolydian:[2,2,1,2,2,1,2],aeolian:[2,1,2,2,1,2,2],locrian:[1,2,2,1,2,2,2]}}static get scaleTypes(){return{M:tt.scales.major,m:tt.scales.minor}}static get accidentals(){return["bb","b","n","#","##"]}static get noteValues(){return{c:{root_index:0,int_val:0},cn:{root_index:0,int_val:0},"c#":{root_index:0,int_val:1},"c##":{root_index:0,int_val:2},cb:{root_index:0,int_val:11},cbb:{root_index:0,int_val:10},d:{root_index:1,int_val:2},dn:{root_index:1,int_val:2},"d#":{root_index:1,int_val:3},"d##":{root_index:1,int_val:4},db:{root_index:1,int_val:1},dbb:{root_index:1,int_val:0},e:{root_index:2,int_val:4},en:{root_index:2,int_val:4},"e#":{root_index:2,int_val:5},"e##":{root_index:2,int_val:6},eb:{root_index:2,int_val:3},ebb:{root_index:2,int_val:2},f:{root_index:3,int_val:5},fn:{root_index:3,int_val:5},"f#":{root_index:3,int_val:6},"f##":{root_index:3,int_val:7},fb:{root_index:3,int_val:4},fbb:{root_index:3,int_val:3},g:{root_index:4,int_val:7},gn:{root_index:4,int_val:7},"g#":{root_index:4,int_val:8},"g##":{root_index:4,int_val:9},gb:{root_index:4,int_val:6},gbb:{root_index:4,int_val:5},a:{root_index:5,int_val:9},an:{root_index:5,int_val:9},"a#":{root_index:5,int_val:10},"a##":{root_index:5,int_val:11},ab:{root_index:5,int_val:8},abb:{root_index:5,int_val:7},b:{root_index:6,int_val:11},bn:{root_index:6,int_val:11},"b#":{root_index:6,int_val:0},"b##":{root_index:6,int_val:1},bb:{root_index:6,int_val:10},bbb:{root_index:6,int_val:9}}}isValidNoteValue(t){return t>=0&&t=0&&t3)throw new p("BadArguments","Invalid note name: "+t);const e=t.toLowerCase(),i=/^([cdefgab])(b|bb|n|#|##)?$/.exec(e);if(null!==i){return{root:i[1],accidental:i[2]}}throw new p("BadArguments","Invalid note name: "+t)}getKeyParts(t){if(!t||t.length<1)throw new p("BadArguments","Invalid key: "+t);const e=t.toLowerCase(),i=/^([cdefgab])(b|#)?(mel|harm|m|M)?$/.exec(e);if(null!==i){const t=i[1],e=i[2];let s=i[3];return s||(s="M"),{root:t,accidental:e,type:s}}throw new p("BadArguments",`Invalid key: ${t}`)}getNoteValue(t){const e=tt.noteValues[t];if(void 0===e)throw new p("BadArguments",`Invalid note name: ${t}`);return e.int_val}getIntervalValue(t){const e=tt.intervals[t];if(void 0===e)throw new p("BadArguments",`Invalid interval name: ${t}`);return e}getCanonicalNoteName(t){if(!this.isValidNoteValue(t))throw new p("BadArguments",`Invalid note value: ${t}`);return tt.canonical_notes[t]}getCanonicalIntervalName(t){if(!this.isValidIntervalValue(t))throw new p("BadArguments",`Invalid interval value: ${t}`);return tt.diatonic_intervals[t]}getRelativeNoteValue(t,e,i=1){if(1!==i&&-1!==i)throw new p("BadArguments",`Invalid direction: ${i}`);let s=(t+i*e)%tt.NUM_TONES;return s<0&&(s+=tt.NUM_TONES),s}getRelativeNoteName(t,e){const i=this.getNoteParts(t),s=this.getNoteValue(i.root);let n=e-s;if(Math.abs(n)>tt.NUM_TONES-3){let i=1;n>0&&(i=-1);const a=(e+1+(s+1))%tt.NUM_TONES*i;if(Math.abs(a)>2)throw new p("BadArguments",`Notes not related: ${t}, ${e})`);n=a}if(Math.abs(n)>2)throw new p("BadArguments",`Notes not related: ${t}, ${e})`);let a=i.root;if(n>0)for(let t=1;t<=n;++t)a+="#";else if(n<0)for(let t=-1;t>=n;--t)a+="b";return a}getScaleTones(t,e){const i=[t];let s=t;for(let n=0;ne.line-t.line));const l=[];let c,d=0;for(let t=0;td?e.shift:d,c=e.line}let m=0;for(let t=0;tl[i+t],a=t=>t.map(n),o=(t,e)=>{const[i,s]=a([t,e]).map((t=>t.line));return i-s},r=(...t)=>t.map(a).every((([t,e])=>!this.checkCollision(t,e))),h=s-i+1;let b,c,d=this.checkCollision(l[i],l[s])?"a":"b";switch(h){case 3:"a"===d&&.5===o(1,2)&&.5!==o(0,1)&&(d="second_on_bottom");break;case 4:r([0,2],[1,3])&&(d="spaced_out_tetrachord");break;case 5:"b"===d&&r([1,3])&&(d="spaced_out_pentachord",r([0,2],[2,4])&&(d="very_spaced_out_pentachord"));break;case 6:r([0,3],[1,4],[2,5])&&(d="spaced_out_hexachord"),r([0,2],[2,4],[1,3],[3,5])&&(d="very_spaced_out_hexachord")}if(h>=7){let e=2,i=!0;for(;!0===i;){i=!1;for(let t=0;t+ec?m:c}else for(b=t;b<=s;b++)c=j.accidentalColumnsTable[h][d][b-t],l[b].column=c,m=m>c?m:c;t=s}const g=[],u=[];for(let t=0;t<=m;t++)g[t]=0,u[t]=0;g[0]=d+n,u[0]=d+n,l.forEach((t=>{t.width>g[t.column]&&(g[t.column]=t.width)}));for(let t=1;t{let e=0;const i=_+t.numAcc;for(;_0?(s=e.flatLine||e.dblSharpLine?2.5:3,t.dblSharpLine&&(i-=.5)):(s=t.flatLine||t.dblSharpLine?2.5:3,e.dblSharpLine&&(i-=.5));const n=Math.abs(i){const e=new v(0,1);t.getTickables().forEach((t=>{if(t.shouldIgnoreTicks())return;const n=s[e.value()];n?n.push(t):(i.push(e.value()),s[e.value()]=[t]),e.add(t.getTicks())}))}));const a=new tt;e||(e="C");const o=a.createScaleMap(e),r={};i.forEach((t=>{const e=s[t],i=[],h=t=>{if(!d(t)||t.isRest()||t.shouldIgnoreTicks())return;const e=t;e.keys.forEach(((t,s)=>{const h=a.getNoteParts(t.split("/")[0]),b=t.split("/")[1],l=h.accidental||"n",c=h.root+l;r[h.root+b]||(r[h.root+b]=o[h.root]);const d=r[h.root+b]===c,m=i.indexOf(t)>-1;if(e.getModifiers().forEach(((t,i)=>{n(t)&&t.type==l&&t.getIndex()==s&&e.getModifiers().splice(i,1)})),!d||d&&m){r[h.root+b]=c;const n=new it(l);e.addModifier(n,s),i.push(t)}})),e.getModifiers().forEach((t=>{b(t)&&t.getGraceNotes().forEach(h)}))};e.forEach(h)}))}reset(){const t=this.render_options.font_scale;this.glyph=new Q(this.accidental.code,t),this.glyph.setOriginX(1),this.cautionary&&(this.parenLeft=new Q(j.accidentalCodes("{").code,t),this.parenRight=new Q(j.accidentalCodes("}").code,t),this.parenLeft.setOriginX(1),this.parenRight.setOriginX(1))}getWidth(){if(this.cautionary){const t=x(this.parenLeft),e=x(this.parenRight),i=t.getMetrics().width+e.getMetrics().width+this.render_options.parenLeftPadding+this.render_options.parenRightPadding;return this.glyph.getMetrics().width+i}return this.glyph.getMetrics().width}setNote(t){return x(t,"ArgumentError",`Bad note value: ${t}`),this.note=t,h(t)&&(this.render_options.font_scale=25,this.reset()),this}setAsCautionary(){return this.cautionary=!0,this.render_options.font_scale=28,this.reset(),this}draw(){const{type:t,position:e,index:i,cautionary:s,x_shift:n,y_shift:a,glyph:o,render_options:{parenLeftPadding:r,parenRightPadding:h}}=this,b=this.checkContext(),l=this.checkAttachedNote();this.setRendered();const c=l.getModifierStartXY(e,i);let d=c.x+n;const m=c.y+a;if(et("Rendering: ",t,d,m),s){const t=x(this.parenLeft),e=x(this.parenRight);e.render(b,d,m),d-=e.getMetrics().width,d-=h,d-=this.accidental.parenRightPaddingAdjustment,o.render(b,d,m),d-=o.getMetrics().width,d-=r,t.render(b,d,m)}else o.render(b,d,m)}}it.DEBUG=!1;class st extends O{constructor(t){super(),this.stem_up_y_offset=0,this.stem_down_y_offset=0,this.stem_up_y_base_offset=0,this.stem_down_y_base_offset=0,this.x_begin=(null==t?void 0:t.x_begin)||0,this.x_end=(null==t?void 0:t.x_end)||0,this.y_top=(null==t?void 0:t.y_top)||0,this.y_bottom=(null==t?void 0:t.y_bottom)||0,this.stem_extension=(null==t?void 0:t.stem_extension)||0,this.stem_direction=(null==t?void 0:t.stem_direction)||0,this.hide=(null==t?void 0:t.hide)||!1,this.isStemlet=(null==t?void 0:t.isStemlet)||!1,this.stemletHeight=(null==t?void 0:t.stemletHeight)||0,this.renderHeightAdjustment=0,this.setOptions(t)}static get CATEGORY(){return u.Stem}static get UP(){return 1}static get DOWN(){return-1}static get WIDTH(){return j.STEM_WIDTH}static get HEIGHT(){return j.STEM_HEIGHT}setOptions(t){this.stem_up_y_offset=(null==t?void 0:t.stem_up_y_offset)||0,this.stem_down_y_offset=(null==t?void 0:t.stem_down_y_offset)||0,this.stem_up_y_base_offset=(null==t?void 0:t.stem_up_y_base_offset)||0,this.stem_down_y_base_offset=(null==t?void 0:t.stem_down_y_base_offset)||0}setNoteHeadXBounds(t,e){return this.x_begin=t,this.x_end=e,this}setDirection(t){this.stem_direction=t}setExtension(t){this.stem_extension=t}getExtension(){return this.stem_extension}setYBounds(t,e){this.y_top=t,this.y_bottom=e}getHeight(){const t=this.stem_direction===st.UP?this.stem_up_y_offset:this.stem_down_y_offset;return(this.y_bottom-this.y_top+(st.HEIGHT-t+this.stem_extension))*this.stem_direction}getBoundingBox(){throw new p("NotImplemented","getBoundingBox() not implemented.")}getExtents(){const t=this.stem_direction===st.UP,e=[this.y_top,this.y_bottom],i=st.HEIGHT+this.stem_extension,s=(t?Math.min:Math.max)(...e),n=(t?Math.max:Math.min)(...e);return{topY:s+i*-this.stem_direction,baseY:n}}setVisibility(t){return this.hide=!t,this}setStemlet(t,e){return this.isStemlet=t,this.stemletHeight=e,this}adjustHeightForFlag(){this.renderHeightAdjustment=j.currentMusicFont().lookupMetric("stem.heightAdjustmentForFlag",-3)}adjustHeightForBeam(){this.renderHeightAdjustment=-st.WIDTH/2}draw(){if(this.setRendered(),this.hide)return;const t=this.checkContext();let e,i;const s=this.stem_direction;let n=0;s===st.DOWN?(e=this.x_begin,i=this.y_top+this.stem_down_y_offset,n=this.stem_down_y_base_offset):(e=this.x_end,i=this.y_bottom-this.stem_up_y_offset,n=this.stem_up_y_base_offset);const a=this.getHeight();!function(...t){st.DEBUG&&f("Vex.Flow.Stem",t)}("Rendering stem - ","Top Y: ",this.y_top,"Bottom Y: ",this.y_bottom);const o=this.isStemlet?a-this.stemletHeight*this.stem_direction:0;t.save(),t.openGroup("stem",this.getAttribute("id"),{pointerBBox:!0}),this.applyStyle(t),t.beginPath(),t.setLineWidth(st.WIDTH),t.moveTo(e,i-o+n),t.lineTo(e,i-a-this.renderHeightAdjustment*s),t.stroke(),this.restoreStyle(t),t.closeGroup(),t.restore()}}function nt(...t){rt.DEBUG&&f("Vex.Flow.TextFormatter",t)}st.DEBUG=!1;const at={},ot={};class rt{constructor(t){this.family="",this.size=14,this.resolution=1e3,this.glyphs={},this.serifs=!1,this.monospaced=!1,this.italic=!1,this.bold=!1,this.superscriptOffset=0,this.subscriptOffset=0,this.maxSizeGlyph="H",this.cacheKey="",this.updateParams(t)}static getFontFamilies(){const t=[];for(const e in ot){const i=ot[e];t.push(Object.assign({},i))}return t}static create(t={}){nt("create: ",t),t.family||(t.family=B.SANS_SERIF);const e=[],i=t.family.split(/\s*,\s*/);for(const t of i){for(const i in ot)i.startsWith(t)&&e.push(ot[i]);if(e.length>0)break}let s;if(0===e.length)s=new rt(Object.values(ot)[0]);else if(1===e.length)s=new rt(e[0]);else{const i=B.isBold(t.weight),n=B.isItalic(t.style),a=e.find((t=>t.bold===i&&t.italic===n));if(a)s=new rt(a);else{const t=e.find((t=>t.italic===n||t.bold===i));s=new rt(t||e[0])}}const n=t.size;if(void 0!==n){const t=B.convertSizeToPointValue(n);s.setFontSize(t)}return s}static getInfo(t){return ot[t]}static registerInfo(t,e=!1){nt("registerInfo: ",t,e);const i=t.family;(void 0===ot[i]||e)&&(ot[i]=t)}updateParams(t){t.family&&(this.family=t.family),t.resolution&&(this.resolution=t.resolution),t.glyphs&&(this.glyphs=t.glyphs),t.serifs&&(this.serifs=t.serifs),t.monospaced&&(this.monospaced=t.monospaced),t.italic&&(this.italic=t.italic),t.bold&&(this.bold=t.bold),t.maxSizeGlyph&&(this.maxSizeGlyph=t.maxSizeGlyph),t.superscriptOffset&&(this.superscriptOffset=t.superscriptOffset),t.subscriptOffset&&(this.subscriptOffset=t.subscriptOffset),this.updateCacheKey()}updateCacheKey(){const t=this.family.replace(/\s+/g,"_"),e=this.size,i=this.bold?D.BOLD:D.NORMAL,s=this.italic?N.ITALIC:N.NORMAL;this.cacheKey=`${t}%${e}%${i}%${s}`}getGlyphMetrics(t){return this.glyphs[t]?this.glyphs[t]:this.glyphs[this.maxSizeGlyph]}get maxHeight(){return this.getGlyphMetrics(this.maxSizeGlyph).ha/this.resolution*this.fontSizeInPixels}getWidthForCharacterInEm(t){var e;const i=this.getGlyphMetrics(t);if(i){return(null!==(e=i.advanceWidth)&&void 0!==e?e:0)/this.resolution}return.65}getWidthForTextInEm(t){const e=this.cacheKey;let i=at[e];void 0===i&&(i={},at[e]=i);let s=i[t];if(void 0===s){s=0;for(let e=0;et>e?t:e)),h+=(this.text_line+1)*j.STAVE_LINE_DISTANCE+o,c&&i===st.DOWN&&(h=Math.max(h,b.topY+o+l*this.text_line))}else if(this.verticalJustification===bt.CENTER){const t=e.getYForTopText(this.text_line)-1;h=t+(d.getYForBottomText(this.text_line)-t)/2+o/2}else if(this.verticalJustification===bt.TOP)h=e.getYs()[0]-(this.text_line+1)*j.STAVE_LINE_DISTANCE,c&&i===st.UP&&(l=b.topY=1}function ut(t,e){return gt(t,e)?e===ct?Math.ceil:Math.floor:Math.round}const pt=t=>d(t)||h(t);class _t extends Z{constructor(t){super(),this.type=t,this.position=dt,this.render_options={font_scale:38},this.reset()}static get CATEGORY(){return u.Articulation}static format(t,e){if(!t||0===t.length)return!1;let i=0;const s=(t,e,i)=>mt(ut(e,i),x(t.glyph.getMetrics().height)/10+.5);t.forEach((t=>{const n=t.checkAttachedNote();i=Math.max(n.getGlyph().getWidth(),i);let a=5;const o=n.hasStem()?n.getStemDirection():st.UP;let r=0;if(m(n)){const t=n.getStem();t&&(r=Math.abs(t.getHeight())/j.STAVE_LINE_DISTANCE)}const h=n.getStave();if(h&&(a=h.getNumLines()),t.getPosition()===ct){let i=n.getLineNumber(!0);o===st.UP&&(i+=r);let h=s(t,e.top_text_line,ct);const b=i+e.top_text_line+.5;!t.articulation.between_lines&&bt.getWidth())).reduce(((t,e)=>Math.max(e,t))),a=Math.min(Math.max(n-i,0),Math.max(n-(e.left_shift+e.right_shift),0));return e.left_shift+=a/2,e.right_shift+=a/2,!0}static easyScoreHook({articulations:t},e,i){if(!t)return;const s={staccato:"a.",tenuto:"a-",accent:"a>"};t.split(",").map((t=>t.trim().split("."))).map((([t,e])=>{const n={type:s[t]};return e&&(n.position=Z.PositionString[e]),i.getFactory().Articulation(n)})).map((t=>e.addModifier(t,0)))}reset(){this.articulation=j.articulationCodes(this.type);const t=x(this.articulation,"ArgumentError",`Articulation not found: ${this.type}`),e=(this.position===ct?t.aboveCode:t.belowCode)||t.code;this.glyph=new Q(null!=e?e:"",this.render_options.font_scale),this.setWidth(x(this.glyph.getMetrics().width))}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=this.checkIndex(),{position:s,glyph:n,text_line:a}=this,o=this.articulation.between_lines,r=e.checkStave(),h=r.getSpacingBetweenLines(),b=g(e),{x:l}=e.getModifierStartXY(s,i),c=!o||b,d=function(t,e){const i=e===ct&&t.getStemDirection()===st.UP||e===dt&&t.getStemDirection()===st.DOWN;return pt(t)?t.hasStem()&&i?.5:1:t.hasStem()&&i?1:0}(e,s),m=j.currentMusicFont().lookupMetric(`articulation.${n.getCode()}.padding`,0);let u={[ct]:()=>{n.setOrigin(.5,1);const t=function(t,e){const i=t.getStemDirection(),{topY:s,baseY:n}=t.getStemExtents();if(pt(t))return t.hasStem()?i===st.UP?s:n:Math.min(...t.getYs());if(g(t))return t.hasStem()&&i===st.UP?s:t.checkStave().getYForTopText(e);throw new p("UnknownCategory","Only can get the top and bottom ys of stavenotes and tabnotes")}(e,a)-(a+d)*h;return c?Math.min(r.getYForTopText(_t.INITIAL_OFFSET),t):t},[dt]:()=>{n.setOrigin(.5,0);const t=function(t,e){const i=t.getStemDirection(),{topY:s,baseY:n}=t.getStemExtents();if(pt(t))return t.hasStem()?i===st.UP?n:s:Math.max(...t.getYs());if(g(t))return t.hasStem()?i===st.UP?t.checkStave().getYForBottomText(e):s:t.checkStave().getYForBottomText(e);throw new p("UnknownCategory","Only can get the top and bottom ys of stavenotes and tabnotes")}(e,a)+(a+d)*h;return c?Math.max(r.getYForBottomText(_t.INITIAL_OFFSET),t):t}}[s]();if(!b){const t=s===ct?-1:1,a=e.getKeyProps()[i].line,r=(e.getYs()[i]-u)/h+Number(a),b=function(t,e,i,s){const n=mt(ut(e,i),e);if(t&>(n,i)&&n%1==0)return n+.5*-s;return n}(o,r,s,t);gt(b,s)&&n.setOrigin(.5,.5),u+=Math.abs(b-r)*h*t+m*t}!function(...t){_t.DEBUG&&f("Vex.Flow.Articulation",t)}(`Rendering articulation at (x: ${l}, y: ${u})`),n.render(t,l,u)}}_t.DEBUG=!1,_t.INITIAL_OFFSET=-.5;class xt{static get CATEGORY(){return u.RenderContext}set font(t){this.setFont(t)}get font(){return this.getFont()}setRawFont(t){return this.setFont(t),this}}function ft(t,e,i,s="#F55"){t.save(),t.setFillStyle(s),t.beginPath(),t.arc(e,i,3,0,2*Math.PI,!1),t.closePath(),t.fill(),t.restore()}class yt extends O{constructor(){super(),this._preFormatted=!1,this._postFormatted=!1,this.ticks=new v(0,1),this.intrinsicTicks=0,this.tickMultiplier=new v(1,1),this.width=0,this.x_shift=0,this.modifiers=[],this.tupletStack=[],this.align_center=!1,this.center_x_shift=0,this.ignore_ticks=!1,this.formatterMetrics={freedom:{left:0,right:0},duration:"",iterations:0,space:{used:0,mean:0,deviation:0}}}static get CATEGORY(){return u.Tickable}reset(){return this}getTicks(){return this.ticks}shouldIgnoreTicks(){return this.ignore_ticks}setIgnoreTicks(t){return this.ignore_ticks=t,this}setWidth(t){this.width=t}getWidth(){if(!this._preFormatted)throw new p("UnformattedNote","Can't call GetWidth on an unformatted note.");return this.width+(this.modifierContext?this.modifierContext.getWidth():0)}setXShift(t){return this.x_shift=t,this}getXShift(){return this.x_shift}getX(){return this.checkTickContext("Can't getX() without a TickContext.").getX()+this.x_shift}getFormatterMetrics(){return this.formatterMetrics}getCenterXShift(){return this.isCenterAligned()?this.center_x_shift:0}setCenterXShift(t){return this.center_x_shift=t,this}isCenterAligned(){return this.align_center}setCenterAlignment(t){return this.align_center=t,this}getVoice(){return x(this.voice,"NoVoice","Tickable has no voice.")}setVoice(t){this.voice=t}getTuplet(){return this.tuplet}getTupletStack(){return this.tupletStack}resetTuplet(t){let e,i;if(t){const s=this.tupletStack.indexOf(t);return-1!==s&&(this.tupletStack.splice(s,1),e=t.getNoteCount(),i=t.getNotesOccupied(),this.applyTickMultiplier(e,i)),this}for(;this.tupletStack.length;)e=(t=this.tupletStack.pop()).getNoteCount(),i=t.getNotesOccupied(),this.applyTickMultiplier(e,i);return this}setTuplet(t){if(t){this.tupletStack.push(t);const e=t.getNoteCount(),i=t.getNotesOccupied();this.applyTickMultiplier(i,e)}return this.tuplet=t,this}addToModifierContext(t){this.modifierContext=t;for(let t=0;tj.getGlyphProps(this.duration,t))),this.playNote=void 0,this.ignore_ticks=!1,this.width=0,this.leftDisplacedHeadPx=0,this.rightDisplacedHeadPx=0,this.x_shift=0,this.ys=[],t.align_center&&this.setCenterAlignment(t.align_center),this.render_options={annotation_spacing:5,glyph_font_scale:1,stroke_px:1,scale:1,font:"",y_shift:0}}static get CATEGORY(){return u.Note}static plotMetrics(t,e,i){const s=e.getMetrics(),n=e.getAbsoluteX()-s.modLeftPx-s.leftDisplacedHeadPx,a=e.getAbsoluteX()-s.leftDisplacedHeadPx,o=e.getAbsoluteX(),r=e.getAbsoluteX()+s.notePx,h=e.getAbsoluteX()+s.notePx+s.rightDisplacedHeadPx,b=e.getAbsoluteX()+s.notePx+s.rightDisplacedHeadPx+s.modRightPx,l=b+(e.getFormatterMetrics().freedom.right||0),c=b-n;t.save(),t.setFont(B.SANS_SERIF,8),t.fillText(Math.round(c)+"px",n+e.getXShift(),i);const d=i+7;function m(i,s,n,a=d){t.beginPath(),t.setStrokeStyle(n),t.setFillStyle(n),t.setLineWidth(3),t.moveTo(i+e.getXShift(),a),t.lineTo(s+e.getXShift(),a),t.stroke()}m(n,a,"red"),m(a,o,"#999"),m(o,r,"green"),m(r,h,"#999"),m(h,b,"red"),m(b,l,"#DD0"),m(n-e.getXShift(),n,"#BBB"),ft(t,o+e.getXShift(),d,"blue");const g=e.getFormatterMetrics();if(g.iterations>0){const s=g.space.deviation,n=s>=0?"+":"";t.setFillStyle("red"),t.fillText(n+Math.round(s),o+e.getXShift(),i-10)}t.restore()}static parseDuration(t){if(!t)return;const e=/(\d*\/?\d+|[a-z])(d*)([nrhms]|$)/.exec(t);if(!e)return;return{duration:e[1],dots:e[2].length,type:e[3]||"n"}}static parseNoteStruct(t){const e=St.parseDuration(t.duration);if(!e)return;let i=t.type;if(i&&!j.validTypes[i])return;const s=[];i||(i=e.type||"n",void 0!==t.keys&&t.keys.forEach(((t,e)=>{const n=t.split("/");s[e]=n&&3===n.length?n[2]:i})));let n=j.durationToTicks(e.duration);if(!n)return;const a=t.dots?t.dots:e.dots;if("number"!=typeof a)return;let o=n;for(let t=0;t0}hasStem(){return!1}getNoteType(){return this.noteType}getBeam(){return this.beam}checkBeam(){return x(this.beam,"NoBeam","No beam attached to instance")}hasBeam(){return null!=this.beam}setBeam(t){return this.beam=t,this}addModifier(t,e=0){const i="Note.addModifier(modifier: Modifier, index: number=0)";if("string"==typeof e&&(e=parseInt(e),console.warn(i+" expected a number for `index`, but received a string.")),"object"!=typeof t||"number"!=typeof e)throw new p("WrongParams","Incorrect call signature. Use "+i+" instead.");return t.setNote(this),t.setIndex(e),super.addModifier(t),this}getModifiersByType(t){return this.modifiers.filter((e=>e.getCategory()===t))}getModifierStartXY(t,e,i){if(!this.preFormatted)throw new p("UnformattedNote","Can't call GetModifierStartXY on an unformatted note");return{x:this.getAbsoluteX(),y:this.ys[0]}}getRightParenthesisPx(t){return this.getKeyProps()[t].displaced?this.getRightDisplacedHeadPx():0}getLeftParenthesisPx(t){return this.getKeyProps()[t].displaced?this.getLeftDisplacedHeadPx()-this.x_shift:-this.x_shift}getFirstDotPx(){let t=this.getRightDisplacedHeadPx();return 0!==this.checkModifierContext().getMembers("Parenthesis").length&&(t+=j.currentMusicFont().lookupMetric("parenthesis.default.width")),t}getMetrics(){if(!this.preFormatted)throw new p("UnformattedNote","Can't call getMetrics on an unformatted note.");const t=this.modifierContext?this.modifierContext.getState().left_shift:0,e=this.modifierContext?this.modifierContext.getState().right_shift:0,i=this.getWidth();return{width:i,glyphWidth:this.getGlyphWidth(),notePx:i-t-e-this.leftDisplacedHeadPx-this.rightDisplacedHeadPx,modLeftPx:t,modRightPx:e,leftDisplacedHeadPx:this.leftDisplacedHeadPx,rightDisplacedHeadPx:this.rightDisplacedHeadPx,glyphPx:0}}getAbsoluteX(){let t=this.checkTickContext("Can't getAbsoluteX() without a TickContext.").getX();return this.stave&&(t+=this.stave.getNoteStartX()+j.currentMusicFont().lookupMetric("stave.padding")),this.isCenterAligned()&&(t+=this.getCenterXShift()),t}getStemDirection(){throw new p("NoStem","No stem attached to this note.")}getStemExtents(){throw new p("NoStem","No stem attached to this note.")}getTieRightX(){let t=this.getAbsoluteX();return t+=this.glyph.getWidth()/2,t+=-this.width/2+this.width+2,t}getTieLeftX(){let t=this.getAbsoluteX();return t+=this.glyph.getWidth()/2,t-=this.width/2+2,t}getKeys(){return this.keys}getKeyProps(){return this.keyProps}}var Tt,wt,vt,Et,Ct,kt;!function(t){t[t.CENTER=0]="CENTER",t[t.LEFT=1]="LEFT",t[t.RIGHT=2]="RIGHT",t[t.ABOVE=3]="ABOVE",t[t.BELOW=4]="BELOW",t[t.BEGIN=5]="BEGIN",t[t.END=6]="END"}(Tt||(Tt={}));class Dt extends O{constructor(){super(),this.width=0,this.x=0,this.padding=10,this.position=Tt.ABOVE}static get CATEGORY(){return u.StaveModifier}static get Position(){return Tt}getPosition(){return this.position}setPosition(t){return this.position=t,this}getStave(){return this.stave}checkStave(){return x(this.stave,"NoStave","No stave attached to instance.")}setStave(t){return this.stave=t,this}getWidth(){return this.width}setWidth(t){return this.width=t,this}getX(){return this.x}setX(t){return this.x=t,this}placeGlyphOnLine(t,e,i,s=0){t.setYShift(e.getYForLine(null!=i?i:0)-e.getYForGlyphs()+s)}getPadding(t){return void 0!==t&&t<2?0:this.padding}setPadding(t){return this.padding=t,this}setLayoutMetrics(t){return this.layoutMetrics=t,this}getLayoutMetrics(){return this.layoutMetrics}draw(...t){}}!function(t){t[t.SINGLE=1]="SINGLE",t[t.DOUBLE=2]="DOUBLE",t[t.END=3]="END",t[t.REPEAT_BEGIN=4]="REPEAT_BEGIN",t[t.REPEAT_END=5]="REPEAT_END",t[t.REPEAT_BOTH=6]="REPEAT_BOTH",t[t.NONE=7]="NONE"}(wt||(wt={}));class Nt extends Dt{constructor(t){super(),this.thickness=j.STAVE_LINE_THICKNESS;const e=wt;this.widths={},this.widths[e.SINGLE]=5,this.widths[e.DOUBLE]=5,this.widths[e.END]=5,this.widths[e.REPEAT_BEGIN]=5,this.widths[e.REPEAT_END]=5,this.widths[e.REPEAT_BOTH]=5,this.widths[e.NONE]=5,this.paddings={},this.paddings[e.SINGLE]=0,this.paddings[e.DOUBLE]=0,this.paddings[e.END]=0,this.paddings[e.REPEAT_BEGIN]=15,this.paddings[e.REPEAT_END]=15,this.paddings[e.REPEAT_BOTH]=15,this.paddings[e.NONE]=0,this.layoutMetricsMap={},this.layoutMetricsMap[e.SINGLE]={xMin:0,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.DOUBLE]={xMin:-3,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.END]={xMin:-5,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.REPEAT_END]={xMin:-10,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.REPEAT_BEGIN]={xMin:-2,xMax:10,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.REPEAT_BOTH]={xMin:-10,xMax:10,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.NONE]={xMin:0,xMax:0,paddingLeft:5,paddingRight:5},this.setPosition(Tt.BEGIN),this.setType(t)}static get CATEGORY(){return u.Barline}static get type(){return wt}static get typeString(){return{single:wt.SINGLE,double:wt.DOUBLE,end:wt.END,repeatBegin:wt.REPEAT_BEGIN,repeatEnd:wt.REPEAT_END,repeatBoth:wt.REPEAT_BOTH,none:wt.NONE}}getType(){return this.type}setType(t){return this.type="string"==typeof t?Nt.typeString[t]:t,this.setWidth(this.widths[this.type]),this.setPadding(this.paddings[this.type]),this.setLayoutMetrics(this.layoutMetricsMap[this.type]),this}draw(t){switch(t.checkContext(),this.setRendered(),this.type){case wt.SINGLE:this.drawVerticalBar(t,this.x,!1);break;case wt.DOUBLE:this.drawVerticalBar(t,this.x,!0);break;case wt.END:this.drawVerticalEndBar(t,this.x);break;case wt.REPEAT_BEGIN:this.drawRepeatBar(t,this.x,!0),t.getX()!==this.x&&this.drawVerticalBar(t,t.getX());break;case wt.REPEAT_END:this.drawRepeatBar(t,this.x,!1);break;case wt.REPEAT_BOTH:this.drawRepeatBar(t,this.x,!1),this.drawRepeatBar(t,this.x,!0)}}drawVerticalBar(t,e,i){const s=t.checkContext(),n=t.getTopLineTopY(),a=t.getBottomLineBottomY();i&&s.fillRect(e-3,n,1,a-n),s.fillRect(e,n,1,a-n)}drawVerticalEndBar(t,e){const i=t.checkContext(),s=t.getTopLineTopY(),n=t.getBottomLineBottomY();i.fillRect(e-5,s,1,n-s),i.fillRect(e-2,s,3,n-s)}drawRepeatBar(t,e,i){const s=t.checkContext(),n=t.getTopLineTopY(),a=t.getBottomLineBottomY();let o=3;i||(o=-5),s.fillRect(e+o,n,1,a-n),s.fillRect(e-2,n,3,a-n);i?o+=4:o-=4;const r=e+o+1;let h=(t.getNumLines()-1)*t.getSpacingBetweenLines();h=h/2-t.getSpacingBetweenLines()/2;let b=n+h+1;s.beginPath(),s.arc(r,b,2,0,2*Math.PI,!1),s.fill(),b+=t.getSpacingBetweenLines(),s.beginPath(),s.arc(r,b,2,0,2*Math.PI,!1),s.fill()}}class Pt extends St{constructor(t=wt.SINGLE){super({duration:"b"}),this.metrics={widths:{}};const e=wt;this.metrics.widths={[e.SINGLE]:8,[e.DOUBLE]:12,[e.END]:15,[e.REPEAT_BEGIN]:14,[e.REPEAT_END]:14,[e.REPEAT_BOTH]:18,[e.NONE]:0},this.ignore_ticks=!0,this.setType(t)}static get CATEGORY(){return u.BarNote}getType(){return this.type}setType(t){return this.type="string"==typeof t?Nt.typeString[t]:t,this.setWidth(this.metrics.widths[this.type]),this}addToModifierContext(t){return this}preFormat(){return this.preFormatted=!0,this}draw(){const t=this.checkContext();!function(...t){Pt.DEBUG&&f("Vex.Flow.BarNote",t)}("Rendering bar line at: ",this.getAbsoluteX()),this.applyStyle(t);const e=new Nt(this.type);e.setX(this.getAbsoluteX()),e.draw(this.checkStave()),this.restoreStyle(t),this.setRendered()}}Pt.DEBUG=!1;class At extends Z{constructor(t,e=!1,i){super(),this.text=t,this.x_shift=0,this.release=e,this.tap="",this.resetFont(),this.render_options={line_width:1.5,line_style:"#777777",bend_width:8,release_width:8},i?this.phrase=i:(this.phrase=[{type:At.UP,text:this.text}],this.release&&this.phrase.push({type:At.DOWN,text:""})),this.updateWidth()}static get CATEGORY(){return u.Bend}static get UP(){return 0}static get DOWN(){return 1}static format(t,e){if(!t||0===t.length)return!1;let i=0;for(let s=0;st{const a=t+s,o=i;e.save(),e.beginPath(),e.setLineWidth(this.render_options.line_width),e.setStrokeStyle(this.render_options.line_style),e.setFillStyle(this.render_options.line_style),e.moveTo(t,i),e.quadraticCurveTo(a,o,t+s,n),e.stroke(),e.restore()},l=(t,i,s,n)=>{e.save(),e.beginPath(),e.setLineWidth(this.render_options.line_width),e.setStrokeStyle(this.render_options.line_style),e.setFillStyle(this.render_options.line_style),e.moveTo(t,n),e.quadraticCurveTo(t+s,n,t+s,i),e.stroke(),e.restore()},c=(t,i,s)=>{const n=i+4*s;e.beginPath(),e.moveTo(t,i),e.lineTo(t-4,n),e.lineTo(t+4,n),e.closePath(),e.fill()},d=(t,i)=>{e.save(),e.setFont(this.textFont);const s=t-e.measureText(i).width/2;e.fillText(i,s,h),e.restore()};let m,g=0,u=0;if(null===(t=this.tap)||void 0===t?void 0:t.length){d(i.getModifierStartXY(Z.Position.CENTER,this.index).x,this.tap)}for(let t=0;t0){const e=b.symbolBlocks[t-1];Bt.isSuperscript(e)||(n=s)}a&&n>0&&(p=!0,e.xShift=e.xShift+(n-s),s=n,n=0,b.setEnableKerning(!1)),i||a||(n=0),e.vAlign=p,s+=e.width,g=s}if(b.updateKerningAdjustments(),b.updateOverBarAdjustments(),b.getVertical()===Et.TOP?(b.setTextLine(e.top_text_line),e.top_text_line+=u):(b.setTextLine(e.text_line+1),e.text_line+=u+1),b.getReportWidth()&&m(d)){const t=d.getGlyph().getWidth();b.getHorizontal()===vt.LEFT?(r=Math.max(t,r),a=Math.max(a,g)+Bt.minPadding):b.getHorizontal()===vt.RIGHT?(h=Math.max(t,h),o=Math.max(o,g)):(a=Math.max(a,g/2)+Bt.minPadding,o=Math.max(o,g/2),r=Math.max(t/2,r),h=Math.max(t/2,h))}s=0}const b=Math.min(Math.max(o-h,0),Math.max(o-e.right_shift,0)),l=Math.min(Math.max(a-r,0),Math.max(a-e.left_shift,0));return e.left_shift+=l,e.right_shift+=b,!0}static get TEXT_FONT(){let t="Roboto Slab, Times, serif";return"Petaluma"===j.currentMusicFont().getName()&&(t="PetalumaScript, Arial, sans-serif"),{family:t,size:12,weight:D.NORMAL,style:N.NORMAL}}get superscriptOffset(){return Bt.superscriptOffset*this.textFormatter.fontSizeInPixels}get subscriptOffset(){return Bt.subscriptOffset*this.textFormatter.fontSizeInPixels}setReportWidth(t){return this.reportWidth=t,this}getReportWidth(){return this.reportWidth}updateOverBarAdjustments(){const t=this.symbolBlocks.findIndex((({symbolType:t,glyph:e})=>t===Ct.GLYPH&&void 0!==e&&"csymDiagonalArrangementSlash"===e.code));if(t<0)return;const e=this.symbolBlocks[t].width/4,i=.25*this.textFormatter.fontSizeInPixels;let s=0;for(;s0?this.symbolBlocks[t-1]:void 0;let s=0;e.symbolType===Ct.GLYPH&&void 0!==e.glyph&&e.glyph.code===Bt.glyphs.over.code&&(s+=e.glyph.metrics.x_shift),void 0!==i&&i.symbolType===Ct.GLYPH&&void 0!==i.glyph&&i.glyph.code===Bt.glyphs.over.code&&(s+=i.glyph.metrics.x_shift);let n=!1,a=!1;void 0!==i&&i.symbolType===Ct.TEXT&&(n=Bt.upperKerningText.some((t=>t===i.text[i.text.length-1])),a=Bt.lowerKerningText.some((t=>t===i.text[i.text.length-1])));const o=Bt.kerningOffset*this.textFormatter.fontSizeInPixels;return n&&e.symbolModifier===kt.SUPERSCRIPT&&(s+=o),a&&e.symbolType===Ct.TEXT&&(e.text[0]>="a"&&e.text[0]<="z"&&(s+=o/2),Bt.upperKerningText.some((t=>t===(null==i?void 0:i.text[i.text.length-1])))&&(s+=o/2)),s}getSymbolBlock(t={}){var e,i,s;const n=null!==(e=t.symbolType)&&void 0!==e?e:Ct.TEXT,a={text:null!==(i=t.text)&&void 0!==i?i:"",symbolType:n,symbolModifier:null!==(s=t.symbolModifier)&&void 0!==s?s:kt.NONE,xShift:0,yShift:0,vAlign:!1,width:0};if(n===Ct.GLYPH&&"string"==typeof t.glyph){const e=Bt.glyphs[t.glyph],i=20;a.glyph=new Q(e.code,i,{category:"chordSymbol"})}else n===Ct.TEXT?a.width=this.textFormatter.getWidthForTextInEm(a.text):n===Ct.LINE&&(a.width=t.width);return a}addSymbolBlock(t){return this.symbolBlocks.push(this.getSymbolBlock(t)),this}addText(t,e={}){const i=Ct.TEXT;return this.addSymbolBlock(Object.assign(Object.assign({},e),{text:t,symbolType:i}))}addTextSuperscript(t){const e=Ct.TEXT,i=kt.SUPERSCRIPT;return this.addSymbolBlock({text:t,symbolType:e,symbolModifier:i})}addTextSubscript(t){const e=Ct.TEXT,i=kt.SUBSCRIPT;return this.addSymbolBlock({text:t,symbolType:e,symbolModifier:i})}addGlyphSuperscript(t){const e=Ct.GLYPH,i=kt.SUPERSCRIPT;return this.addSymbolBlock({glyph:t,symbolType:e,symbolModifier:i})}addGlyph(t,e={}){const i=Ct.GLYPH;return this.addSymbolBlock(Object.assign(Object.assign({},e),{glyph:t,symbolType:i}))}addGlyphOrText(t,e={}){let i="";for(let s=0;s0&&(this.addText(i,e),i=""),this.addGlyph(n,e)):i+=n}return i.length>0&&this.addText(i,e),this}addLine(t,e={}){const i=Ct.LINE;return this.addSymbolBlock(Object.assign(Object.assign({},e),{symbolType:i,width:t}))}setFont(t,e,i,s){return super.setFont(t,e,i,s),this.textFormatter=rt.create(this.textFont),this}setEnableKerning(t){return this.useKerning=t,this}setVertical(t){return this.vertical="string"==typeof t?Bt.VerticalJustifyString[t]:t,this}getVertical(){return this.vertical}setHorizontal(t){return this.horizontal="string"==typeof t?Bt.HorizontalJustifyString[t]:t,this}getHorizontal(){return this.horizontal}getWidth(){let t=0;return this.symbolBlocks.forEach((e=>{t+=e.vAlign?0:e.width})),t}getYOffsetForText(t){var e;let i=0,s=0;for(s=0;s0?i/n*-1:0}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered(),t.save(),t.openGroup("chordsymbol",this.getAttribute("id"));const i=e.getModifierStartXY(Z.Position.ABOVE,this.index);let s;t.setFont(this.textFont);const n=e.hasStem(),a=e.checkStave();if(this.vertical===Et.BOTTOM){if(s=a.getYForBottomText(this.text_line+j.TEXT_HEIGHT_OFFSET_HACK),n){const t=e.checkStem().getExtents(),i=a.getSpacingBetweenLines(),n=1===e.getStemDirection()?t.baseY:t.topY;s=Math.max(s,n+i*(this.text_line+2))}}else if(s=Math.min(a.getYForTopText(this.text_line),e.getYs()[0]-10),n){const t=e.checkStem().getExtents(),i=a.getSpacingBetweenLines();s=Math.min(s,t.topY-5-i*this.text_line)}let o=i.x;o=this.horizontal===vt.LEFT?i.x:this.horizontal===vt.RIGHT?i.x+this.getWidth():this.horizontal===vt.CENTER?i.x-this.getWidth()/2:e.getStemX()-this.getWidth()/2,Mt("Rendering ChordSymbol: ",this.textFormatter,o,s),this.symbolBlocks.forEach((e=>{const i=Bt.isSuperscript(e),n=Bt.isSubscript(e);let a=s;if(Mt("shift was ",e.xShift,e.yShift),Mt("curY pre sub ",a),i&&(a+=this.superscriptOffset),n&&(a+=this.subscriptOffset),Mt("curY sup/sub ",a),e.symbolType===Ct.TEXT){if((i||n)&&(t.save(),this.textFont)){const{family:e,size:i,weight:s,style:n}=this.textFont,a=B.scaleSize(i,Bt.superSubRatio);t.setFont(e,a,s,n)}Mt("Rendering Text: ",e.text,o+e.xShift,a+e.yShift),t.fillText(e.text,o+e.xShift,a+e.yShift),(i||n)&&t.restore()}else e.symbolType===Ct.GLYPH&&e.glyph?(a+=e.yShift,Mt("Rendering Glyph: ",e.glyph.code,o+e.xShift,a),e.glyph.render(t,o+e.xShift,a)):e.symbolType===Ct.LINE&&(Mt("Rendering Line : ",e.width,o,a),t.beginPath(),t.setLineWidth(1),t.moveTo(o,s),t.lineTo(o+e.width,a),t.stroke());o+=e.width,e.vAlign&&(o+=e.xShift)})),t.closeGroup(),t.restore()}}Bt.DEBUG=!1,Bt.HorizontalJustify=vt,Bt.HorizontalJustifyString={left:vt.LEFT,right:vt.RIGHT,center:vt.CENTER,centerStem:vt.CENTER_STEM},Bt.VerticalJustify=Et,Bt.VerticalJustifyString={top:Et.TOP,above:Et.TOP,below:Et.BOTTOM,bottom:Et.BOTTOM},Bt.glyphs={diminished:{code:"csymDiminished"},dim:{code:"csymDiminished"},halfDiminished:{code:"csymHalfDiminished"},"+":{code:"csymAugmented"},augmented:{code:"csymAugmented"},majorSeventh:{code:"csymMajorSeventh"},minor:{code:"csymMinor"},"-":{code:"csymMinor"},"(":{code:"csymParensLeftTall"},leftParen:{code:"csymParensLeftTall"},")":{code:"csymParensRightTall"},rightParen:{code:"csymParensRightTall"},leftBracket:{code:"csymBracketLeftTall"},rightBracket:{code:"csymBracketRightTall"},leftParenTall:{code:"csymParensLeftVeryTall"},rightParenTall:{code:"csymParensRightVeryTall"},"/":{code:"csymDiagonalArrangementSlash"},over:{code:"csymDiagonalArrangementSlash"},"#":{code:"accidentalSharp"},b:{code:"accidentalFlat"}},Bt.symbolTypes=Ct,Bt.symbolModifiers=kt,Bt.noFormat=!1;class Ft extends Z{constructor(){super(),this.position=Z.Position.RIGHT,this.radius=2,this.setWidth(5),this.dot_shiftY=0}static get CATEGORY(){return u.Dot}static getDots(t){return t.getModifiersByType(Ft.CATEGORY)}static buildAndAttach(t,e){for(const i of t)if(null==e?void 0:e.all)for(let t=0;te.line-t.line));let a=i,o=0,r=null,h=null,b=null,l=0;for(let t=0;to?a:o,r=d,h=i}return e.right_shift+=o,!0}setNote(t){return this.note=t,h(t)&&(this.radius*=.5,this.setWidth(3)),this}setDotShiftY(t){return this.dot_shiftY=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.checkStave().getSpacingBetweenLines(),s=e.getModifierStartXY(this.position,this.index,{forceFlagRight:!0});g(e)&&(s.y=e.getStemExtents().baseY);const n=s.x+this.x_shift+this.width-this.radius,a=s.y+this.y_shift+this.dot_shiftY*i;t.beginPath(),t.arc(n,a,this.radius,0,2*Math.PI,!1),t.fill()}}class Rt extends Z{constructor(t){super(),this.finger=t,this.width=7,this.position=Z.Position.LEFT,this.x_shift=0,this.y_shift=0,this.x_offset=0,this.y_offset=0,this.resetFont()}static get CATEGORY(){return u.FretHandFinger}static format(t,e){const{left_shift:i,right_shift:s}=e;if(!t||0===t.length)return!1;const n=[];let a=null,o=0,r=0;for(let h=0;he.line-t.line));let h=0,b=0,l=0,c=0,d=null,m=null;for(let t=0;tl?e:l):o===Z.Position.RIGHT&&(g.setXShift(b),e=r+x,c=e>c?e:c),d=u,m=a}return e.left_shift+=l,e.right_shift+=c,!0}static easyScoreHook({fingerings:t}={},e,i){null==t||t.split(",").map((t=>{const e=t.trim().split("."),s={number:e[0]};return e[1]&&(s.position=e[1]),i.getFactory().Fingering(s)})).map(((t,i)=>e.addModifier(t,i)))}setFretHandFinger(t){return this.finger=t,this}getFretHandFinger(){return this.finger}setOffsetX(t){return this.x_offset=t,this}setOffsetY(t){return this.y_offset=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getModifierStartXY(this.position,this.index);let s=i.x+this.x_shift+this.x_offset,n=i.y+this.y_shift+this.y_offset+5;switch(this.position){case Z.Position.ABOVE:s-=4,n-=12;break;case Z.Position.BELOW:s-=2,n+=10;break;case Z.Position.LEFT:s-=this.width;break;case Z.Position.RIGHT:s+=1;break;default:throw new p("InvalidPosition",`The position ${this.position} does not exist`)}t.save(),t.setFont(this.textFont),t.fillText(""+this.finger,s,n),t.restore()}}Rt.TEXT_FONT={family:B.SANS_SERIF,size:9,weight:D.BOLD,style:N.NORMAL};class Ot extends St{constructor(t){super(t),this.custom_glyph=!1,this.stem_up_x_offset=0,this.stem_down_x_offset=0,this.index=t.index,this.x=t.x||0,this.y=t.y||0,t.note_type&&(this.noteType=t.note_type),this.displaced=t.displaced||!1,this.stem_direction=t.stem_direction||st.UP,this.line=t.line||0,this.glyph=j.getGlyphProps(this.duration,this.noteType),x(this.glyph,"BadArguments",`No glyph found for duration '${this.duration}' and type '${this.noteType}'`),(this.line>5||this.line<0)&&this.glyph.leger_code_head&&(this.glyph.code_head=this.glyph.leger_code_head),this.glyph_code=this.glyph.code_head,this.x_shift=t.x_shift||0,t.custom_glyph_code&&(this.custom_glyph=!0,this.glyph_code=t.custom_glyph_code,this.stem_up_x_offset=t.stem_up_x_offset||0,this.stem_down_x_offset=t.stem_down_x_offset||0),this.setStyle(t.style),this.slashed=t.slashed||!1,this.render_options=Object.assign(Object.assign({},this.render_options),{glyph_font_scale:t.glyph_font_scale||j.NOTATION_FONT_SCALE}),this.setWidth(this.glyph.getWidth(this.render_options.glyph_font_scale))}static get CATEGORY(){return u.NoteHead}getWidth(){return this.width}isDisplaced(){return!0===this.displaced}getGlyph(){return this.glyph}setX(t){return this.x=t,this}getY(){return this.y}setY(t){return this.y=t,this}getLine(){return this.line}setLine(t){return this.line=t,this}getAbsoluteX(){const t=this.preFormatted?super.getAbsoluteX():this.x,e=st.WIDTH/2,i=j.currentMusicFont(),s=i.lookupMetric("notehead.shiftX",0)*this.stem_direction,n=i.lookupMetric("noteHead.displaced.shiftX",0)*this.stem_direction;return t+s+(this.displaced?(this.width-e)*this.stem_direction+n:0)}getBoundingBox(){if(!this.preFormatted)throw new p("UnformattedNote","Can't call getBoundingBox on an unformatted note.");const t=this.checkStave().getSpacingBetweenLines(),e=t/2,i=this.y-e;return new C(this.getAbsoluteX(),i,this.width,t)}setStave(t){const e=this.getLine();return this.stave=t,this.stave&&(this.setY(this.stave.getYForNote(e)),this.setContext(this.stave.getContext())),this}preFormat(){if(this.preFormatted)return this;const t=this.getWidth()+this.leftDisplacedHeadPx+this.rightDisplacedHeadPx;return this.setWidth(t),this.preFormatted=!0,this}draw(){const t=this.checkContext();this.setRendered();let e=this.getAbsoluteX();this.custom_glyph&&(e+=this.stem_direction===st.UP?this.stem_up_x_offset:this.stem_down_x_offset);const i=this.y;!function(...t){Ot.DEBUG&&f("Vex.Flow.NoteHead",t)}("Drawing note head '",this.noteType,this.duration,"' at",e,i);const s=this.stem_direction,n=this.render_options.glyph_font_scale;this.applyStyle(t);const a=`${this.glyph_code}Stem${s===st.UP?"Up":"Down"}`;if("s"===this.noteType){const n=this.checkStave().getSpacingBetweenLines();!function(t,e,i,s,n,a){const o=j.SLASH_NOTEHEAD_WIDTH;t.save(),t.setLineWidth(j.STEM_WIDTH);let r=!1;if(j.durationToNumber(e)>2&&(r=!0),r||(i-=j.STEM_WIDTH/2*n),t.beginPath(),t.moveTo(i,s+a),t.lineTo(i,s+1),t.lineTo(i+o,s-a),t.lineTo(i+o,s),t.lineTo(i,s+a),t.closePath(),r?t.fill():t.stroke(),j.durationToFraction(e).equals(.5)){const e=[-3,-1,o+1,o+3];for(let n=0;n2&&i++,2===j.durationToNumber(a.note.duration)?e++:j.durationToNumber(a.note.duration)>2&&i++,2!==e&&2!==i||s.note.getModifiersByType(u.Dot).length!==a.note.getModifiersByType(u.Dot).length||t<1&&t>0?(b=h+2,s.stemDirection===a.stemDirection?s.note.setXShift(b):a.note.setXShift(b)):s.note.voice!==a.note.voice&&s.stemDirection===a.stemDirection&&(s.line!=a.line?(b=h+2,s.note.setXShift(b)):1===a.stemDirection&&(a.stemDirection=-1,a.note.setStemDirection(-1)))}else t<1?(b=h+2,s.stemDirection===a.stemDirection?s.note.setXShift(b):a.note.setXShift(b)):s.note.hasStem()?(s.stemDirection=-s.note.getStemDirection(),s.note.setStemDirection(s.stemDirection)):a.note.hasStem()&&(a.stemDirection=-a.note.getStemDirection(),a.note.setStemDirection(a.stemDirection))}return e.right_shift+=b,!0}if(!n)throw new p("InvalidState","noteM not defined.");if(n.isrest&&!s.isrest&&!a.isrest&&(s.minLine<=n.maxLine||n.minLine<=a.maxLine)){return n.maxLine-n.minLinet.postFormat())),!0)}reset(){super.reset();const t=this._noteHeads.map((t=>t.getStyle()));this.buildNoteHeads(),this._noteHeads.forEach(((e,i)=>{const s=t[i];s&&e.setStyle(s)}));const e=this.stave;return e&&this._noteHeads.forEach((t=>t.setStave(e))),this.calcNoteDisplacements(),this}setBeam(t){return this.beam=t,this.calcNoteDisplacements(),this.stem&&this.stem.setExtension(this.getStemExtension()),this}buildStem(){return this.setStem(new st({hide:!!this.isRest()})),this}buildNoteHeads(){this._noteHeads=[];const t=this.getStemDirection(),e=this.getKeys();let i,s,n,a,o,r=!1;t===st.UP?(n=0,a=e.length,o=1):(n=e.length-1,a=-1,o=-1);for(let e=n;e!==a;e+=o){const n=this.sortedKeyProps[e].keyProps,a=n.line;void 0===i?i=a:(s=Math.abs(i-a),0===s||.5===s?r=!r:(r=!1,this.use_default_head_x=!0)),i=a;const o=new Ot({duration:this.duration,note_type:this.noteType,displaced:r,stem_direction:t,custom_glyph_code:n.code,glyph_font_scale:this.render_options.glyph_font_scale,x_shift:n.shift_right,stem_up_x_offset:n.stem_up_x_offset,stem_down_x_offset:n.stem_down_x_offset,line:n.line});this.addChildElement(o),this._noteHeads[this.sortedKeyProps[e].index]=o}}autoStem(){this.setStemDirection(this.calculateOptimalStemDirection())}calculateOptimalStemDirection(){this.minLine=this.sortedKeyProps[0].keyProps.line,this.maxLine=this.sortedKeyProps[this.keyProps.length-1].keyProps.line;return(this.minLine+this.maxLine)/2<3?st.UP:st.DOWN}calculateKeyProps(){let t;for(let e=0;e0&&(this.keyProps[e-1].displaced=!0)),t=a,this.keyProps.push(n)}this.keyProps.forEach(((t,e)=>{this.sortedKeyProps.push({keyProps:t,index:e})})),this.sortedKeyProps.sort(((t,e)=>t.keyProps.line-e.keyProps.line))}getBoundingBox(){var t,e;if(!this.preFormatted)throw new p("UnformattedNote","Can't call getBoundingBox on an unformatted note.");const{width:i,modLeftPx:s,leftDisplacedHeadPx:n}=this.getMetrics(),a=this.getAbsoluteX()-s-n;let o=0,r=0;const h=(null!==(e=null===(t=this.getStave())||void 0===t?void 0:t.getSpacingBetweenLines())&&void 0!==e?e:0)/2,b=2*h;if(this.isRest()){const t=this.ys[0],e=j.durationToFraction(this.duration);e.equals(1)||e.equals(2)?(o=t-h,r=t+h):(o=t-this.glyph.line_above*b,r=t+this.glyph.line_below*b)}else if(this.glyph.stem){const t=this.getStemExtents();t.baseY+=h*this.getStemDirection(),o=Math.min(t.topY,t.baseY),r=Math.max(t.topY,t.baseY)}else{o=0,r=0;for(let t=0;te&&(e=s):s1}hasStem(){return this.glyph.stem}hasFlag(){return super.hasFlag()&&!this.isRest()}getStemX(){return"r"===this.noteType?this.getCenterGlyphX():super.getStemX()+(this.stem_direction?st.WIDTH/(2*-this.stem_direction):0)}getYForTopText(t){const e=this.getStemExtents();return Math.min(this.checkStave().getYForTopText(t),e.topY-this.render_options.annotation_spacing*(t+1))}getYForBottomText(t){const e=this.getStemExtents();return Math.max(this.checkStave().getYForTopText(t),e.baseY+this.render_options.annotation_spacing*t)}setStave(t){super.setStave(t);const e=this._noteHeads.map((e=>(e.setStave(t),e.getY())));if(this.setYs(e),this.stem){const{y_top:t,y_bottom:e}=this.getNoteHeadBounds();this.stem.setYBounds(t,e)}return this}isDisplaced(){return this.displaced}setNoteDisplaced(t){return this.displaced=t,this}getTieRightX(){let t=this.getAbsoluteX();return t+=this.getGlyphWidth()+this.x_shift+this.rightDisplacedHeadPx,this.modifierContext&&(t+=this.modifierContext.getRightShift()),t}getTieLeftX(){let t=this.getAbsoluteX();return t+=this.x_shift-this.leftDisplacedHeadPx,t}getLineForRest(){let t=this.keyProps[0].line;if(this.keyProps.length>1){const e=this.keyProps[this.keyProps.length-1].line;t=S(Math.max(t,e),Math.min(t,e))}return t}getModifierStartXY(t,e,i={}){var s,n;if(!this.preFormatted)throw new p("UnformattedNote","Can't call GetModifierStartXY on an unformatted note");if(0===this.ys.length)throw new p("NoYValues","No Y-Values calculated for this note.");const{ABOVE:a,BELOW:o,LEFT:r,RIGHT:h}=Z.Position;let b=0;return t===r?b=-2:t===h?(b=this.getGlyphWidth()+this.x_shift+2,this.stem_direction===st.UP&&this.hasFlag()&&(i.forceFlagRight||((t,e)=>e===(t.getStemDirection()===st.UP?t.keyProps.length-1:0))(this,e))&&(b+=null!==(n=null===(s=null==this?void 0:this.flag)||void 0===s?void 0:s.getMetrics().width)&&void 0!==n?n:0)):t!==o&&t!==a||(b=this.getGlyphWidth()/2),{x:this.getAbsoluteX()+b,y:this.ys[e]}}setStyle(t){return super.setGroupStyle(t)}setStemStyle(t){const e=this.getStem();return e&&e.setStyle(t),this}getStemStyle(){var t;return null===(t=this.stem)||void 0===t?void 0:t.getStyle()}setLedgerLineStyle(t){this.ledgerLineStyle=t}getLedgerLineStyle(){return this.ledgerLineStyle}setFlagStyle(t){var e;null===(e=this.flag)||void 0===e||e.setStyle(t)}getFlagStyle(){var t;return null===(t=this.flag)||void 0===t?void 0:t.getStyle()}setKeyStyle(t,e){return this._noteHeads[t].setStyle(e),this}setKeyLine(t,e){return this.keyProps[t].line=e,this.reset(),this}getKeyLine(t){return this.keyProps[t].line}getVoiceShiftWidth(){return this.getGlyphWidth()*(this.displaced?2:1)}calcNoteDisplacements(){this.setLeftDisplacedHeadPx(this.displaced&&this.stem_direction===st.DOWN?this.getGlyphWidth():0),this.setRightDisplacedHeadPx(!this.hasFlag()&&this.displaced&&this.stem_direction===st.UP?this.getGlyphWidth():0)}preFormat(){if(this.preFormatted)return;let t=0;this.modifierContext&&(this.modifierContext.preFormat(),0===this.modifierContext.getWidth()&&(t=It.minNoteheadPadding));let e=this.getGlyphWidth()+this.leftDisplacedHeadPx+this.rightDisplacedHeadPx+t;this.shouldDrawFlag()&&this.stem_direction===st.UP&&(e+=this.getGlyphWidth()),this.setWidth(e),this.preFormatted=!0}getNoteHeadBounds(){let t,e,i,s,n=1/0,a=-1/0,o=this.checkStave().getNumLines(),r=1,h=o,b=r;return this._noteHeads.forEach((l=>{const c=l.getLine(),d=l.getY();n=Math.min(d,n),a=Math.max(d,a),void 0===e&&l.isDisplaced()&&(e=l.getAbsoluteX()),void 0!==t||l.isDisplaced()||(t=l.getAbsoluteX()),o=Math.max(c,o),r=Math.min(c,r),l.isDisplaced()?(i=void 0===i?c:Math.max(c,i),s=void 0===s?c:Math.min(c,s)):(h=Math.max(c,h),b=Math.min(c,b))}),this),{y_top:n,y_bottom:a,displaced_x:e,non_displaced_x:t,highest_line:o,lowest_line:r,highest_displaced_line:i,lowest_displaced_line:s,highest_non_displaced_line:h,lowest_non_displaced_line:b}}getNoteHeadBeginX(){return this.getAbsoluteX()+this.x_shift}getNoteHeadEndX(){return this.getNoteHeadBeginX()+this.getGlyphWidth()}get noteHeads(){return this._noteHeads.slice()}get note_heads(){return console.warn("StaveNote.note_heads is deprecated. Use StaveNote.noteHeads instead.","This accessor will be removed in VexFlow 5.0."),this.noteHeads}drawLedgerLines(){const t=this.checkStave(),{glyph:e,render_options:{stroke_px:i}}=this,s=this.checkContext(),n=e.getWidth()+2*i,a=2*(e.getWidth()+i)-st.WIDTH/2;if(this.isRest())return;if(!s)throw new p("NoCanvasContext","Can't draw without a canvas context.");const{highest_line:o,lowest_line:r,highest_displaced_line:h,highest_non_displaced_line:b,lowest_displaced_line:l,lowest_non_displaced_line:c,displaced_x:d,non_displaced_x:m}=this.getNoteHeadBounds();if(o<6&&r>0)return;const g=Math.min(null!=d?d:0,null!=m?m:0),u=(t,e,o)=>{let r;r=o&&e?g-i:e?(null!=m?m:0)-i:(null!=d?d:0)-i;const h=e&&o?a:n;s.beginPath(),s.moveTo(r,t),s.lineTo(r+h,t),s.stroke()},_=Object.assign(Object.assign({},t.getDefaultLedgerLineStyle()),this.getLedgerLineStyle());this.applyStyle(s,_);for(let e=6;e<=o;++e){const i=void 0!==m&&e<=b,s=void 0!==h&&e<=h;u(t.getYForNote(e),i,s)}for(let e=0;e>=r;--e){const i=void 0!==m&&e>=c,s=void 0!==l&&e>=l;u(t.getYForNote(e),i,s)}this.restoreStyle(s,_)}drawModifiers(t){const e=this.checkContext();for(let i=0;i{t.openGroup("notehead",e.getAttribute("id"),{pointerBBox:!0}),e.setContext(t).draw(),this.drawModifiers(e),t.closeGroup()}))}drawStem(t){const e=this.checkContext();t&&this.setStem(new st(t)),this.shouldDrawFlag()&&this.stem&&this.stem.adjustHeightForFlag(),this.stem&&this.stem.setContext(e).draw()}getStaveNoteScale(){return 1}getStemExtension(){const t=super.getStemExtension();if(!this.glyph.stem)return t;const e=this.getStemDirection();if(e!==this.calculateOptimalStemDirection())return t;let i;i=e===st.UP?3-this.maxLine:this.minLine-3;const s=i-3.5;if(s<=0)return t;const n=this.getStave();let a=10;return null!=n&&(a=n.getSpacingBetweenLines()),t+s*a}draw(){if(!1===this.render_options.draw)return;if(0===this.ys.length)throw new p("NoYValues","Can't draw note without Y values.");const t=this.checkContext(),e=this.getNoteHeadBeginX(),i=this.hasStem()&&!this.beam;if(this._noteHeads.forEach((t=>t.setX(e))),this.stem){const t=this.getStemX();this.stem.setNoteHeadXBounds(t,t)}!function(...t){It.DEBUG&&f("Vex.Flow.StaveNote",t)}("Rendering ",this.isChord()?"chord :":"note :",this.keys),this.applyStyle(),t.openGroup("stavenote",this.getAttribute("id")),this.drawLedgerLines(),i&&this.drawStem(),this.drawNoteHeads(),this.drawFlag(),t.closeGroup(),this.restoreStyle(),this.setRendered()}}It.DEBUG=!1;class zt extends O{constructor(t,e){super(),this.setNotes(t),this.text=e,this.render_options={cp1:8,cp2:12,text_shift_x:0,first_x_shift:0,last_x_shift:0,y_shift:7,tie_spacing:0},this.resetFont()}static get CATEGORY(){return u.StaveTie}setDirection(t){return this.direction=t,this}setNotes(t){if(!t.first_note&&!t.last_note)throw new p("BadArguments","Tie needs to have either first_note or last_note set.");if(t.first_indices||(t.first_indices=[0]),t.last_indices||(t.last_indices=[0]),t.first_indices.length!==t.last_indices.length)throw new p("BadArguments","Tied notes must have same number of indices.");return this.notes=t,this}isPartial(){return!this.notes.first_note||!this.notes.last_note}renderTie(t){if(0===t.first_ys.length||0===t.last_ys.length)throw new p("BadArguments","No Y-values to render");const e=this.checkContext();let i=this.render_options.cp1,s=this.render_options.cp2;Math.abs(t.last_x_px-t.first_x_px)<10&&(i=2,s=8);const n=this.render_options.first_x_shift,a=this.render_options.last_x_shift,o=this.render_options.y_shift*t.direction,r=this.notes.first_indices,h=this.notes.last_indices;for(let b=0;bMath.pow(this.options.softmaxFactor,e.getTicks().value()/t))).reduce(((t,e)=>t+e),0),this.expTicksUsed}softmax(t){this.expTicksUsed||(this.expTicksUsed=this.reCalculateExpTicksUsed());const e=this.ticksUsed.value();return(t=>Math.pow(this.options.softmaxFactor,t/e))(t)/this.expTicksUsed}addTickable(t){if(!t.shouldIgnoreTicks()){const e=t.getTicks();if(this.ticksUsed.add(e),this.expTicksUsed=0,(this.mode===Gt.STRICT||this.mode===Gt.FULL)&&this.ticksUsed.greaterThan(this.totalTicks))throw this.ticksUsed.subtract(e),new p("BadArgument","Too many ticks.");e.lessThan(this.smallestTickCount)&&(this.smallestTickCount=e.clone()),this.resolutionMultiplier=this.ticksUsed.denominator,this.totalTicks.add(0,this.ticksUsed.denominator)}return this.tickables.push(t),t.setVoice(this),this}addTickables(t){for(let e=0;e{e.getStave()||e.setStave(t)})),this.preFormatted=!0,this}checkStave(){return x(this.stave,"NoStave","No stave attached to instance.")}draw(t=this.checkContext(),e){let i;e=null!=e?e:this.stave,this.setRendered();for(let s=0;s1){const e=new Oe(t);e.render_options.beam_width=3,e.render_options.partial_beam_length=4,this.beams.push(e)}return this}setWidth(t){return this.width=t,this}getWidth(){return this.width+It.minNoteheadPadding}getGraceNotes(){return this.grace_notes}draw(){const t=this.checkContext(),e=this.checkAttachedNote();if(this.setRendered(),function(...t){Ht.DEBUG&&f("Vex.Flow.GraceNoteGroup",t)}("Drawing grace note group for:",e),this.alignSubNotesWithNote(this.getGraceNotes(),e),this.grace_notes.forEach((e=>e.setContext(t).draw())),this.beams.forEach((e=>e.setContext(t).draw())),this.show_slur){const i=d(e),s=i?zt:Ut;this.slur=new s({last_note:this.grace_notes[0],first_note:e,first_indices:[0],last_indices:[0]}),this.slur.render_options.cp2=12,this.slur.render_options.y_shift=(i?7:5)+this.render_options.slur_y_shift,this.slur.setContext(t).draw()}}}Ht.DEBUG=!1;class Xt extends Z{constructor(t){super(),this.preFormatted=!1,this.position=Z.Position.LEFT,this.subNotes=t,this.subNotes.forEach((t=>{t.setIgnoreTicks(!1)})),this.width=0,this.formatter=new Ne,this.voice=new Yt({num_beats:4,beat_value:4,resolution:j.RESOLUTION}).setStrict(!1),this.voice.addTickables(this.subNotes)}static get CATEGORY(){return u.NoteSubGroup}static format(t,e){if(!t||0===t.length)return!1;let i=0;for(let e=0;ee.setContext(t).drawWithStyle()))}}class jt{constructor(t){this.preFormatted=!1,this.postFormatted=!1,this.tickID=t&&t.tickID?t.tickID:0,this.currentTick=new v(0,1),this.maxTicks=new v(0,1),this.maxTickable=void 0,this.minTicks=void 0,this.minTickable=void 0,this.padding=1,this.x=0,this.xBase=0,this.xOffset=0,this.tickables=[],this.tickablesByVoice={},this.notePx=0,this.glyphPx=0,this.leftDisplacedHeadPx=0,this.rightDisplacedHeadPx=0,this.modLeftPx=0,this.modRightPx=0,this.totalLeftPx=0,this.totalRightPx=0,this.tContexts=[],this.width=0,this.formatterMetrics={freedom:{left:0,right:0}}}static getNextContext(t){const e=t.tContexts,i=e.indexOf(t);if(i+1t.isCenterAligned()))}getMetrics(){const{width:t,glyphPx:e,notePx:i,leftDisplacedHeadPx:s,rightDisplacedHeadPx:n,modLeftPx:a,modRightPx:o,totalLeftPx:r,totalRightPx:h}=this;return{width:t,glyphPx:e,notePx:i,leftDisplacedHeadPx:s,rightDisplacedHeadPx:n,modLeftPx:a,modRightPx:o,totalLeftPx:r,totalRightPx:h}}getCurrentTick(){return this.currentTick}setCurrentTick(t){this.currentTick=t,this.preFormatted=!1}addTickable(t,e){if(!t)throw new p("BadArgument","Invalid tickable added.");if(!t.shouldIgnoreTicks()){const e=t.getTicks();e.greaterThan(this.maxTicks)&&(this.maxTicks=e.clone(),this.maxTickable=t),(null==this.minTicks||e.lessThan(this.minTicks))&&(this.minTicks=e.clone(),this.minTickable=t)}return t.setTickContext(this),this.tickables.push(t),this.tickablesByVoice[e||0]=t,this.preFormatted=!1,this}preFormat(){if(this.preFormatted)return this;for(let t=0;t=0,!this.ornament)throw new p("ArgumentError",`Ornament not found: '${this.type}'`);this.x_shift=e?e.xOffset:0,this.y_shift=e?e.yOffset:0,this.glyph=new Q(this.ornament.code,this.render_options.font_scale,{category:`ornament.${this.ornament.code}`}),Vt.ornamentNoteTransition.indexOf(this.type)>=0&&(this.delayed=!0),e||this.glyph.setOrigin(.5,1)}static get CATEGORY(){return u.Ornament}static get minPadding(){return j.currentMusicFont().lookupMetric("glyphs.noteHead.minPadding")}static format(t,e){if(!t||0===t.length)return!1;let i=0,s=e.right_shift,n=e.left_shift,a=0;for(let o=0;o=0&&(r.x_shift+=s+2),Vt.ornamentAttack.indexOf(r.type)>=0&&(r.x_shift-=n+2),r.reportedWidth&&r.x_shift<0?n+=r.reportedWidth:r.reportedWidth&&r.x_shift>=0?s+=r.reportedWidth+Vt.minPadding:i=Math.max(r.getWidth(),i),Vt.ornamentArticulation.indexOf(r.type)>=0){x(r.note,"NoAttachedNote").getLineNumber()>=3||r.getPosition()===Z.Position.ABOVE?(e.top_text_line+=h,r.y_shift+=a,a-=r.glyph.bbox.getH()):(e.text_line+=h,r.y_shift+=a,a+=r.glyph.bbox.getH())}else r.getPosition()===Z.Position.ABOVE?(r.setTextLine(e.top_text_line),e.top_text_line+=h):(r.setTextLine(e.text_line),e.text_line+=h)}return e.left_shift=n+i/2,e.right_shift=s+i/2,!0}static get ornamentNoteTransition(){return["flip","jazzTurn","smear"]}static get ornamentAttack(){return["scoop"]}static get ornamentAlignWithNoteHead(){return["doit","fall","fallLong","doitLong","bend","plungerClosed","plungerOpen","scoop"]}static get ornamentRelease(){return["doit","fall","fallLong","doitLong","jazzTurn","smear","flip"]}static get ornamentArticulation(){return["bend","plungerClosed","plungerOpen"]}getMetrics(){return j.currentMusicFont().getMetrics().glyphs.jazzOrnaments[this.ornament.code]}setDelayed(t){return this.delayed=t,this}setUpperAccidental(t){const e=this.render_options.font_scale/1.3;return this.accidentalUpper=new Q(j.accidentalCodes(t).code,e),this.accidentalUpper.setOrigin(.5,1),this}setLowerAccidental(t){const e=this.render_options.font_scale/1.3;return this.accidentalLower=new Q(j.accidentalCodes(t).code,e),this.accidentalLower.setOrigin(.5,1),this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getStemDirection(),s=e.checkStave();t.openGroup("ornament",this.getAttribute("id"));const n=e.checkStem().getExtents();let a=i===st.DOWN?n.baseY:n.topY;g(e)&&(e.hasStem()?i===st.DOWN&&(a=s.getYForTopText(this.text_line)):a=s.getYForTopText(this.text_line));const o=i===st.DOWN,r=s.getSpacingBetweenLines();let h=1;!o&&e.hasBeam()&&(h+=.5);const b=a-r*(this.text_line+h),l=e.getModifierStartXY(this.position,this.index);let c=l.x,d=this.ornamentAlignWithNoteHead?l.y:Math.min(s.getYForTopText(this.text_line),b);if(d+=this.y_shift,this.delayed){let t=0;const i=c-(s.getX()-10);if(void 0!==this.delayXShift)t=this.delayXShift;else{t+=this.glyph.getMetrics().width/2;const n=jt.getNextContext(e.getTickContext());t+=n?.5*(n.getX()-i):.5*(s.getX()+s.getWidth()-i),this.delayXShift=t}c+=t}!function(...t){Vt.DEBUG&&f("Vex.Flow.Ornament",t)}("Rendering ornament: ",this.ornament,c,d),this.accidentalLower&&(this.accidentalLower.render(t,c,d),d-=this.accidentalLower.getMetrics().height,d-=this.render_options.accidentalLowerPadding),this.stemUpYOffset&&e.hasStem()&&1===e.getStemDirection()&&(d+=this.stemUpYOffset),e.getLineNumber()<5&&Vt.ornamentNoteTransition.indexOf(this.type)>=0&&(d=e.checkStave().getBoundingBox().getY()+40),this.glyph.render(t,c+this.x_shift,d),this.accidentalUpper&&(d-=this.glyph.getMetrics().height+this.render_options.accidentalUpperPadding,this.accidentalUpper.render(t,c,d)),t.closeGroup()}}Vt.DEBUG=!1;class Kt extends Z{constructor(t){super(),this.position=null!=t?t:Z.Position.LEFT,this.point=j.currentMusicFont().lookupMetric("parenthesis.default.point"),this.setWidth(j.currentMusicFont().lookupMetric("parenthesis.default.width"))}static get CATEGORY(){return u.Parenthesis}static buildAndAttach(t){for(const e of t)for(let t=0;th+n.width?s:h+n.width),o===$.LEFT&&(h=a.getLeftParenthesisPx(r),i=i>h+n.width?i:h+n.width),n.setXShift(h)}return e.left_shift+=i,e.right_shift+=s,!0}setNote(t){return this.note=t,this.point=j.currentMusicFont().lookupMetric("parenthesis.default.point"),this.setWidth(j.currentMusicFont().lookupMetric("parenthesis.default.width")),h(t)&&(this.point=j.currentMusicFont().lookupMetric("parenthesis.gracenote.point"),this.setWidth(j.currentMusicFont().lookupMetric("parenthesis.gracenote.width"))),this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getModifierStartXY(this.position,this.index,{forceFlagRight:!0}),s=i.x+this.x_shift,n=i.y+this.y_shift;this.position==Z.Position.RIGHT?Q.renderGlyph(t,s+1,n,this.point,"noteheadParenthesisRight",{category:"noteHead.standard.noteheadParenthesisRight"}):this.position==Z.Position.LEFT&&Q.renderGlyph(t,s-2,n,this.point,"noteheadParenthesisLeft",{category:"noteHead.standard.noteheadParenthesisLeft"})}}function $t(t){if(!t)return!1;const e=_();return"function"==typeof e.HTMLCanvasElement&&t instanceof e.HTMLCanvasElement||"function"==typeof t.getContext&&"function"==typeof t.toDataURL}function qt(t){if(!t)return!1;const e=_();return"function"==typeof e.HTMLDivElement&&t instanceof e.HTMLDivElement||"function"==typeof t.appendChild&&"object"==typeof t.style}class Jt extends xt{constructor(t){super(),this.textHeight=0,this.context2D=t,t.canvas?this.canvas=t.canvas:this.canvas={width:Jt.WIDTH,height:Jt.HEIGHT}}static get WIDTH(){return 600}static get HEIGHT(){return 400}static get CANVAS_BROWSER_SIZE_LIMIT(){return 32767}static sanitizeCanvasDims(t,e){const i=this.CANVAS_BROWSER_SIZE_LIMIT;return Math.max(t,e)>i&&(y("Canvas dimensions exceed browser limit. Cropping to "+i),t>i&&(t=i),e>i&&(e=i)),[t,e]}clear(){this.context2D.clearRect(0,0,this.canvas.width,this.canvas.height)}openGroup(t,e,i){}closeGroup(){}add(t){}setFillStyle(t){return this.context2D.fillStyle=t,this}setBackgroundFillStyle(t){return this}setStrokeStyle(t){return this.context2D.strokeStyle=t,this}setShadowColor(t){return this.context2D.shadowColor=t,this}setShadowBlur(t){const e=this.context2D.getTransform(),i=Math.sqrt(e.a*e.a+e.b*e.b+e.c*e.c+e.d*e.d);return this.context2D.shadowBlur=i*t,this}setLineWidth(t){return this.context2D.lineWidth=t,this}setLineCap(t){return this.context2D.lineCap=t,this}setLineDash(t){return this.context2D.setLineDash(t),this}scale(t,e){return this.context2D.scale(t,e),this}resize(t,e){const i=this.context2D.canvas,s=_().devicePixelRatio||1;return[t,e]=Jt.sanitizeCanvasDims(t*s,e*s),t=t/s|0,e=e/s|0,i.width=t*s,i.height=e*s,$t(i)&&(i.style.width=t+"px",i.style.height=e+"px"),this.scale(s,s)}rect(t,e,i,s){return this.context2D.rect(t,e,i,s),this}fillRect(t,e,i,s){return this.context2D.fillRect(t,e,i,s),this}clearRect(t,e,i,s){return this.context2D.clearRect(t,e,i,s),this}beginPath(){return this.context2D.beginPath(),this}moveTo(t,e){return this.context2D.moveTo(t,e),this}lineTo(t,e){return this.context2D.lineTo(t,e),this}bezierCurveTo(t,e,i,s,n,a){return this.context2D.bezierCurveTo(t,e,i,s,n,a),this}quadraticCurveTo(t,e,i,s){return this.context2D.quadraticCurveTo(t,e,i,s),this}arc(t,e,i,s,n,a){return this.context2D.arc(t,e,i,s,n,a),this}fill(){return this.context2D.fill(),this}stroke(){return this.context2D.stroke(),this}closePath(){return this.context2D.closePath(),this}measureText(t){const e=this.context2D.measureText(t);let i=0,s=0;return e.fontBoundingBoxAscent?(i=-e.fontBoundingBoxAscent,s=e.fontBoundingBoxDescent+e.fontBoundingBoxAscent):(i=-e.actualBoundingBoxAscent,s=e.actualBoundingBoxDescent+e.actualBoundingBoxAscent),{x:0,y:i,width:e.width,height:s}}fillText(t,e,i){return this.context2D.fillText(t,e,i),this}save(){return this.context2D.save(),this}restore(){return this.context2D.restore(),this}set fillStyle(t){this.context2D.fillStyle=t}get fillStyle(){return this.context2D.fillStyle}set strokeStyle(t){this.context2D.strokeStyle=t}get strokeStyle(){return this.context2D.strokeStyle}setFont(t,e,i,s){const n=B.validate(t,e,i,s);return this.context2D.font=B.toCSSString(n),this.textHeight=B.convertSizeToPixelValue(n.size),this}getFont(){return this.context2D.font}}const Qt={path:{x:!0,y:!0,width:!0,height:!0,"font-family":!0,"font-weight":!0,"font-style":!0,"font-size":!0},rect:{"font-family":!0,"font-weight":!0,"font-style":!0,"font-size":!0},text:{width:!0,height:!0}},Zt="http://www.w3.org/2000/svg",te=2*Math.PI;class ee extends xt{constructor(t){super(),this.width=0,this.height=0,this.backgroundFillStyle="white",this.fontCSSString="",this.element=t;const e=this.create("svg");this.element.appendChild(e),this.svg=e,this.parent=this.svg,this.groups=[this.svg],this.path="",this.pen={x:NaN,y:NaN},this.lineWidth=1;const i={"font-family":B.SANS_SERIF,"font-size":B.SIZE+"pt","font-weight":D.NORMAL,"font-style":N.NORMAL};this.state=Object.assign({scale:{x:1,y:1}},i),this.attributes=Object.assign({"stroke-width":.3,"stroke-dasharray":"none",fill:"black",stroke:"black"},i),this.shadow_attributes={width:0,color:"black"},this.state_stack=[]}create(t){return document.createElementNS(Zt,t)}openGroup(t,e,i){const s=this.create("g");return this.groups.push(s),this.parent.appendChild(s),this.parent=s,t&&s.setAttribute("class",T(t)),e&&s.setAttribute("id",T(e)),i&&i.pointerBBox&&s.setAttribute("pointer-events","bounding-box"),s}closeGroup(){this.groups.pop(),this.parent=this.groups[this.groups.length-1]}add(t){this.parent.appendChild(t)}setFillStyle(t){return this.attributes.fill=t,this}setBackgroundFillStyle(t){return this.backgroundFillStyle=t,this}setStrokeStyle(t){return this.attributes.stroke=t,this}setShadowColor(t){return this.shadow_attributes.color=t,this}setShadowBlur(t){return this.shadow_attributes.width=t,this}setLineWidth(t){return this.attributes["stroke-width"]=t,this.lineWidth=t,this}setLineDash(t){if("[object Array]"===Object.prototype.toString.call(t))return this.attributes["stroke-dasharray"]=t.join(","),this;throw new p("ArgumentError","lineDash must be an array of integers.")}setLineCap(t){return this.attributes["stroke-linecap"]=t,this}resize(t,e){this.width=t,this.height=e,this.element.style.width=t.toString(),this.svg.style.width=t.toString(),this.svg.style.height=e.toString();const i={width:t,height:e};return this.applyAttributes(this.svg,i),this.scale(this.state.scale.x,this.state.scale.y),this}scale(t,e){this.state.scale={x:t,y:e};const i=this.width/t,s=this.height/e;return this.setViewBox(0,0,i,s),this}setViewBox(t,e,i,s){if("string"==typeof t)this.svg.setAttribute("viewBox",t);else{const n=t+" "+e+" "+i+" "+s;this.svg.setAttribute("viewBox",n)}}applyAttributes(t,e){const i=Qt[t.nodeName];for(const s in e)i&&i[s]||t.setAttributeNS(null,s,e[s]);return t}clear(){for(;this.svg.lastChild;)this.svg.removeChild(this.svg.lastChild);this.scale(this.state.scale.x,this.state.scale.y)}rect(t,e,i,s,n){s<0&&(e+=s,s*=-1);const a=this.create("rect");return n=null!=n?n:{fill:"none","stroke-width":this.lineWidth,stroke:"black"},this.applyAttributes(a,Object.assign({x:t,y:e,width:i,height:s},n)),this.add(a),this}fillRect(t,e,i,s){const n={fill:this.attributes.fill};return this.rect(t,e,i,s,n),this}clearRect(t,e,i,s){return this.rect(t,e,i,s,{"stroke-width":0,fill:this.backgroundFillStyle}),this}beginPath(){return this.path="",this.pen.x=NaN,this.pen.y=NaN,this}moveTo(t,e){return this.path+="M"+t+" "+e,this.pen.x=t,this.pen.y=e,this}lineTo(t,e){return this.path+="L"+t+" "+e,this.pen.x=t,this.pen.y=e,this}bezierCurveTo(t,e,i,s,n,a){return this.path+="C"+t+" "+e+","+i+" "+s+","+n+" "+a,this.pen.x=n,this.pen.y=a,this}quadraticCurveTo(t,e,i,s){return this.path+="Q"+t+" "+e+","+i+" "+s,this.pen.x=i,this.pen.y=s,this}arc(t,e,i,s,n,a){const o=t+i*Math.cos(s),r=e+i*Math.sin(s),h=w(s),b=w(n);if(!a&&n-s>=te||a&&s-n>=te||h===b){const n=t+i*Math.cos(s+Math.PI),a=e+i*Math.sin(s+Math.PI);this.path+=`M${o} ${r} A${i} ${i} 0 0 0 ${n} ${a} `,this.path+=`A${i} ${i} 0 0 0 ${o} ${r}`,this.pen.x=o,this.pen.y=r}else{const l=t+i*Math.cos(n),c=e+i*Math.sin(n);let d;s=h,n=b,d=Math.abs(n-s)n&&(d=!d);const m=!a;this.path+=`M${o} ${r} A${i} ${i} 0 ${+d} ${+m} ${l} ${c}`,this.pen.x=l,this.pen.y=c}return this}closePath(){return this.path+="Z",this}getShadowStyle(){const t=this.shadow_attributes;return`filter: drop-shadow(0 0 ${t.width/1.5}px ${t.color})`}fill(t){const e=this.create("path");return void 0===t&&(t=Object.assign(Object.assign({},this.attributes),{stroke:"none"})),t.d=this.path,this.shadow_attributes.width>0&&(t.style=this.getShadowStyle()),this.applyAttributes(e,t),this.add(e),this}stroke(){const t=this.create("path"),e=Object.assign(Object.assign({},this.attributes),{fill:"none","stroke-width":this.lineWidth,d:this.path});return this.shadow_attributes.width>0&&(e.style=this.getShadowStyle()),this.applyAttributes(t,e),this.add(t),this}measureText(t){return ee.measureTextCache.lookup(t,this.svg,this.attributes)}fillText(t,e,i){if(!t||t.length<=0)return this;const s=Object.assign(Object.assign({},this.attributes),{stroke:"none",x:e,y:i}),n=this.create("text");return n.textContent=t,this.applyAttributes(n,s),this.add(n),this}save(){return this.state_stack.push({state:{"font-family":this.state["font-family"],"font-weight":this.state["font-weight"],"font-style":this.state["font-style"],"font-size":this.state["font-size"],scale:this.state.scale},attributes:{"font-family":this.attributes["font-family"],"font-weight":this.attributes["font-weight"],"font-style":this.attributes["font-style"],"font-size":this.attributes["font-size"],fill:this.attributes.fill,stroke:this.attributes.stroke,"stroke-width":this.attributes["stroke-width"],"stroke-dasharray":this.attributes["stroke-dasharray"]},shadow_attributes:{width:this.shadow_attributes.width,color:this.shadow_attributes.color},lineWidth:this.lineWidth}),this}restore(){const t=this.state_stack.pop();if(t){const e=t;this.state["font-family"]=e.state["font-family"],this.state["font-weight"]=e.state["font-weight"],this.state["font-style"]=e.state["font-style"],this.state["font-size"]=e.state["font-size"],this.state.scale=e.state.scale,this.attributes["font-family"]=e.attributes["font-family"],this.attributes["font-weight"]=e.attributes["font-weight"],this.attributes["font-style"]=e.attributes["font-style"],this.attributes["font-size"]=e.attributes["font-size"],this.attributes.fill=e.attributes.fill,this.attributes.stroke=e.attributes.stroke,this.attributes["stroke-width"]=e.attributes["stroke-width"],this.attributes["stroke-dasharray"]=e.attributes["stroke-dasharray"],this.shadow_attributes.width=e.shadow_attributes.width,this.shadow_attributes.color=e.shadow_attributes.color,this.lineWidth=e.lineWidth}return this}set fillStyle(t){this.setFillStyle(t)}get fillStyle(){return this.attributes.fill}set strokeStyle(t){this.setStrokeStyle(t)}get strokeStyle(){return this.attributes.stroke}setFont(t,e,i,s){const n=B.validate(t,e,i,s);this.fontCSSString=B.toCSSString(n);const a={"font-family":n.family,"font-size":n.size,"font-weight":n.weight,"font-style":n.style};return this.attributes=Object.assign(Object.assign({},this.attributes),a),this.state=Object.assign(Object.assign({},this.state),a),this}getFont(){return this.fontCSSString}}var ie,se,ne,ae;ee.measureTextCache=new class{constructor(){this.cache={}}lookup(t,e,i){let s=this.cache[t];void 0===s&&(s={},this.cache[t]=s);const n=`${i["font-family"]}%${i["font-size"]}%${i["font-weight"]}%${i["font-style"]}`;let a=s[n];return void 0===a&&(a=this.measureImpl(t,e,i),s[n]=a),a}measureImpl(t,e,i){let s=this.txt;s||(s=document.createElementNS(Zt,"text"),this.txt=s),s.textContent=t,s.setAttributeNS(null,"font-family",i["font-family"]),s.setAttributeNS(null,"font-size",i["font-size"]),s.setAttributeNS(null,"font-style",i["font-style"]),s.setAttributeNS(null,"font-weight",i["font-weight"]),e.appendChild(s);const n=s.getBBox();return e.removeChild(s),{x:n.x,y:n.y,width:n.width,height:n.height}}},function(t){t[t.CANVAS=1]="CANVAS",t[t.SVG=2]="SVG"}(ie||(ie={})),function(t){t[t.NONE=1]="NONE",t[t.UP=2]="UP",t[t.DOWN=3]="DOWN"}(se||(se={}));class oe{constructor(t,e){if(c(t))this.ctx=t;else{if(void 0===e)throw new p("InvalidArgument","Missing backend argument");const i=e;let s;if("string"==typeof t){const e=document.getElementById(t);if(!e)throw new p("BadElementId",`Can't find element with ID "${e}"`);s=e}else s=t;if(i===oe.Backends.CANVAS){if(!$t(s))throw new p("BadElement","CANVAS context requires an HTMLCanvasElement.");const t=s.getContext("2d");if(!t)throw new p("BadElement","Can't get canvas context");this.ctx=new Jt(t)}else{if(i!==oe.Backends.SVG)throw new p("InvalidBackend",`No support for backend: ${i}`);if(!qt(s))throw new p("BadElement","SVG context requires an HTMLDivElement.");this.ctx=new ee(s)}}}static buildContext(t,e,i,s,n="#FFF"){const a=new oe(t,e);i&&s&&a.resize(i,s);const o=a.getContext();return o.setBackgroundFillStyle(n),oe.lastContext=o,o}static getCanvasContext(t,e,i,s){return oe.buildContext(t,oe.Backends.CANVAS,e,i,s)}static getSVGContext(t,e,i,s){return oe.buildContext(t,oe.Backends.SVG,e,i,s)}static drawDashedLine(t,e,i,s,n,a){t.beginPath();const o=s-e,r=n-i,h=Math.atan2(r,o);let b=e,l=i;t.moveTo(e,i);let c=0,d=!0;for(;!(o<0?b<=s:b>=s)||!(r<0?l<=n:l>=n);){const e=a[c++%a.length],i=b+Math.cos(h)*e;b=o<0?Math.max(s,i):Math.min(s,i);const m=l+Math.sin(h)*e;l=r<0?Math.max(n,m):Math.min(n,m),d?t.lineTo(b,l):t.moveTo(b,l),d=!d}t.closePath(),t.stroke()}resize(t,e){return this.ctx.resize(t,e),this}getContext(){return this.ctx}}oe.Backends=ie,oe.LineEndType=se,oe.lastContext=void 0;class re extends Z{constructor(t){super(),this.string_number=t,this.position=Z.Position.ABOVE,this.x_shift=0,this.y_shift=0,this.text_line=0,this.stem_offset=0,this.x_offset=0,this.y_offset=0,this.dashed=!0,this.leg=oe.LineEndType.NONE,this.radius=8,this.drawCircle=!0,this.setWidth(2*this.radius+4),this.resetFont()}static get CATEGORY(){return u.StringNumber}static get metrics(){return j.currentMusicFont().getMetrics().glyphs.stringNumber}static format(t,e){const i=e.left_shift,s=e.right_shift;if(!t||0===t.length)return!1;const n=[];let a=null,o=0,r=0;for(let h=0;he.line-t.line));let h=0,b=0,l=0,c=null,m=null;for(let t=0;tb?e:b):r===Z.Position.RIGHT&&(d.setXShift(h),e+=p,l=e>l?e:l),c=g,m=a}return e.left_shift+=b,e.right_shift+=l,!0}setLineEndType(t){return t>=oe.LineEndType.NONE&&t<=oe.LineEndType.DOWN&&(this.leg=t),this}setStringNumber(t){return this.string_number=t,this}setOffsetX(t){return this.x_offset=t,this}setOffsetY(t){return this.y_offset=t,this}setLastNote(t){return this.last_note=t,this}setDashed(t){return this.dashed=t,this}setDrawCircle(t){return this.drawCircle=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getModifierStartXY(this.position,this.index),s=e.hasStem()?e.getStemDirection():st.UP;let n=i.x+this.x_shift+this.x_offset,a={};e.hasStem()&&(a=e.checkStem().getExtents());let o=i.y+this.y_shift+this.y_offset;switch(this.position){case Z.Position.ABOVE:o=e.getYs().reduce(((t,e)=>tt>e?t:e)),e.hasStem()&&s==st.DOWN&&(o=a.topY-re.metrics.stemPadding),o+=this.radius+re.metrics.verticalPadding+this.text_line*j.STAVE_LINE_DISTANCE;break;case Z.Position.LEFT:n-=this.radius/2+re.metrics.leftPadding;break;case Z.Position.RIGHT:n+=this.radius/2+re.metrics.rightPadding;break;default:throw new p("InvalidPosition",`The position ${this.position} is invalid`)}t.save(),this.drawCircle&&(t.beginPath(),t.arc(n,o,this.radius,0,2*Math.PI,!1),t.setLineWidth(1.5),t.stroke()),t.setFont(this.textFont);const r=n-t.measureText(this.string_number).width/2;t.fillText(""+this.string_number,r,o+4.5);const h=this.last_note;if(m(h)){const i=h.getStemX()-e.getX()+5;let s,a;switch(t.setStrokeStyle("#000000"),t.setLineCap("round"),t.setLineWidth(.6),this.dashed?oe.drawDashedLine(t,n+10,o,n+i,o,[3,3]):oe.drawDashedLine(t,n+10,o,n+i,o,[3,0]),this.leg){case oe.LineEndType.UP:s=-10,a=this.dashed?[3,3]:[3,0],oe.drawDashedLine(t,n+i,o,n+i,o+s,a);break;case oe.LineEndType.DOWN:s=10,a=this.dashed?[3,3]:[3,0],oe.drawDashedLine(t,n+i,o,n+i,o+s,a)}}t.restore()}}re.TEXT_FONT={family:B.SANS_SERIF,size:B.SIZE,weight:D.BOLD,style:N.NORMAL};class he extends Z{constructor(t,e){super(),this.options=Object.assign({all_voices:!0},e),this.all_voices=this.options.all_voices,this.type=t,this.position=Z.Position.LEFT,this.render_options={font_scale:38},this.resetFont(),this.setXShift(0),this.setWidth(10)}static get CATEGORY(){return u.Stroke}static format(t,e){const i=e.left_shift;if(!t||0===t.length)return!1;const s=t.map((t=>{const e=t.getNote(),i=t.checkIndex();if(d(e)){const{line:s}=e.getKeyProps()[i];return{line:s,shift:e.getLeftDisplacedHeadPx(),stroke:t}}if(g(e)){const{str:s}=e.getPositions()[i];return{line:s,shift:0,stroke:t}}throw new p("Internal","Unexpected instance.")})),n=i,a=s.reduce(((t,{stroke:e,shift:i})=>(e.setXShift(n+i),Math.max(e.getWidth()+0,t))),0);return e.left_shift+=a,!0}getPosition(){return this.position}addEndNote(t){return this.note_end=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const i=e.getModifierStartXY(this.position,this.index);let s=e.getYs(),n=i.y,a=i.y;const o=i.x-5,r=e.checkStave().getSpacingBetweenLines(),h=this.checkModifierContext().getMembers(e.getCategory());for(let t=0;t0){s-=o.map((t=>t.getTextHeight())).reduce(((t,e)=>t>e?t:e))/j.STAVE_LINE_DISTANCE+1}else e.top_text_line+=1;for(let e=0;e=t.line?i.above:i.below}}this.placeGlyphOnLine(s,this.checkStave(),t.line),this.glyphs.push(s);const a=this.xPositions[this.xPositions.length-1],o=s.getMetrics().width+n;this.xPositions.push(a+o),this.width+=o}cancelKey(t){return this.formatted=!1,this.cancelKeySpec=t,this}convertToCancelAccList(t){const e=j.keySignature(t),i=this.accList.length>0&&e.length>0&&e[0].type!==this.accList[0].type,s=i?e.length:e.length-this.accList.length;if(s<1)return;const n=[];for(let t=0;t0?e[0].type:void 0;let s;if(this.cancelKeySpec&&(s=this.convertToCancelAccList(this.cancelKeySpec)),this.alterKeySpec&&this.convertToAlterAccList(this.alterKeySpec),this.accList.length>0){const n=(this.position===Tt.END?t.getEndClef():t.getClef())||t.getClef();s&&this.convertAccLines(n,s.type,s.accList),this.convertAccLines(n,i,e);for(let t=0;t0?"PlusSmall":"Plus";break;case"(":s=i.length>0?"ParensLeftSmall":"ParensLeft";break;case")":s=i.length>0?"ParensRightSmall":"ParensRight"}const n=new Q("timeSig"+s,this.timeSignature.point);this.topGlyphs.push(n),r+=null!==(o=n.getMetrics().width)&&void 0!==o?o:0}let h=0;for(let t=0;t0?e.getYForLine(this.timeSignature.topLine):(e.getYForLine(this.timeSignature.topLine)+e.getYForLine(this.timeSignature.bottomLine))/2;for(let t=0;t{const e=t.split("/");if(2!==e.length&&"+"!==e[0]&&"-"!==e[0])throw new p("BadTimeSignature",`Invalid time spec: ${t}. Must be in the form "/"`);e.forEach((e=>{if(0==/^[0-9+\-()]+$/.test(e))throw new p("BadTimeSignature",`Invalid time spec: ${t}. Must contain valid signatures.`)}))})(t);const s=t.split("/");return{num:!0,glyph:this.makeTimeSignatureGlyph(null!==(e=s[0])&&void 0!==e?e:"",null!==(i=s[1])&&void 0!==i?i:"")}}makeTimeSignatureGlyph(t,e){return new ye(this,t,e,"timeSig0",this.point)}getInfo(){return this.info}setTimeSig(t){return this.info=this.parseTimeSpec(t),this}draw(){const t=this.checkStave(),e=t.checkContext();this.setRendered(),e.openGroup("timesignature",this.getAttribute("id")),this.info.glyph.setStave(t),this.info.glyph.setContext(e),this.placeGlyphOnLine(this.info.glyph,t,this.info.line),this.info.glyph.renderToStave(this.x),e.closeGroup()}}const Te={[Nt.CATEGORY]:0,[de.CATEGORY]:1,[me.CATEGORY]:2,[Se.CATEGORY]:3},we={[Se.CATEGORY]:0,[me.CATEGORY]:1,[Nt.CATEGORY]:2,[de.CATEGORY]:3};class ve extends O{constructor(t,e,i,s){super(),this.height=0,this.x=t,this.y=e,this.width=i,this.formatted=!1,this.start_x=t+5,this.end_x=t+i,this.modifiers=[],this.measure=0,this.clef="treble",this.endClef=void 0,this.resetFont(),this.options=Object.assign({vertical_bar_width:10,num_lines:5,fill_style:"#999999",left_bar:!0,right_bar:!0,spacing_between_lines_px:j.STAVE_LINE_DISTANCE,space_above_staff_ln:4,space_below_staff_ln:4,top_text_position:1,bottom_text_position:4,line_config:[]},s),this.bounds={x:this.x,y:this.y,w:this.width,h:0},this.defaultLedgerLineStyle={strokeStyle:"#444",lineWidth:1.4},this.resetLines(),this.addModifier(new Nt(this.options.left_bar?wt.SINGLE:wt.NONE)),this.addEndModifier(new Nt(this.options.right_bar?wt.SINGLE:wt.NONE))}static get CATEGORY(){return u.Stave}static get defaultPadding(){const t=j.currentMusicFont();return t.lookupMetric("stave.padding")+t.lookupMetric("stave.endPaddingMax")}static get rightPadding(){return j.currentMusicFont().lookupMetric("stave.endPaddingMax")}setDefaultLedgerLineStyle(t){this.defaultLedgerLineStyle=t}getDefaultLedgerLineStyle(){return Object.assign(Object.assign({},this.getStyle()),this.defaultLedgerLineStyle)}space(t){return this.options.spacing_between_lines_px*t}resetLines(){this.options.line_config=[];for(let t=0;ti.getWidth()&&(e-=i.getWidth()),e}setRepetitionType(t,e=0){return this.modifiers.push(new ge(t,this.x,e)),this}setVoltaType(t,e,i){return this.modifiers.push(new fe(t,e,this.x,i)),this}setSection(t,e,i=0,s,n=!0){const a=new ue(t,this.x+i,e,n);return s&&a.setFontSize(s),this.modifiers.push(a),this}setTempo(t,e){return this.modifiers.push(new pe(t,this.x,e)),this}setText(t,e,i={}){return this.modifiers.push(new xe(t,e,i)),this}getHeight(){return this.height}getSpacingBetweenLines(){return this.options.spacing_between_lines_px}getBoundingBox(){return new C(this.x,this.y,this.width,this.getBottomY()-this.y)}getBottomY(){const t=this.options,e=t.spacing_between_lines_px;return this.getYForLine(t.num_lines)+t.space_below_staff_ln*e}getBottomLineY(){return this.getYForLine(this.options.num_lines)}getYForLine(t){const e=this.options,i=e.spacing_between_lines_px,s=e.space_above_staff_ln;return this.y+t*i+s*i}getLineForY(t){const e=this.options,i=e.spacing_between_lines_px,s=e.space_above_staff_ln;return(t-this.y)/i-s}getYForTopText(t=0){return this.getYForLine(-t-this.options.top_text_position)}getYForBottomText(t=0){return this.getYForLine(this.options.bottom_text_position+t)}getYForNote(t){const e=this.options,i=e.spacing_between_lines_px,s=e.space_above_staff_ln;return this.y+s*i+5*i-t*i}getYForGlyphs(){return this.getYForLine(3)}addModifier(t,e){return void 0!==e&&t.setPosition(e),t.setStave(this),this.formatted=!1,this.modifiers.push(t),this}addEndModifier(t){return this.addModifier(t,Tt.END),this}setBegBarType(t){const{SINGLE:e,REPEAT_BEGIN:i,NONE:s}=wt;return t!==e&&t!==i&&t!==s||(this.modifiers[0].setType(t),this.formatted=!1),this}setEndBarType(t){return t!==wt.REPEAT_BEGIN&&(this.modifiers[1].setType(t),this.formatted=!1),this}setClef(t,e,i,s){void 0===s&&(s=Tt.BEGIN),s===Tt.END?this.endClef=t:this.clef=t;const n=this.getModifiers(s,de.CATEGORY);return 0===n.length?this.addClef(t,e,i,s):n[0].setType(t,e,i),this}getClef(){return this.clef}setEndClef(t,e,i){return this.setClef(t,e,i,Tt.END),this}getEndClef(){return this.endClef}setKeySignature(t,e,i){void 0===i&&(i=Tt.BEGIN);const s=this.getModifiers(i,me.CATEGORY);return 0===s.length?this.addKeySignature(t,e,i):s[0].setKeySig(t,e),this}setEndKeySignature(t,e){return this.setKeySignature(t,e,Tt.END),this}setTimeSignature(t,e,i){void 0===i&&(i=Tt.BEGIN);const s=this.getModifiers(i,Se.CATEGORY);return 0===s.length?this.addTimeSignature(t,e,i):s[0].setTimeSig(t),this}setEndTimeSignature(t,e){return this.setTimeSignature(t,e,Tt.END),this}addKeySignature(t,e,i){return void 0===i&&(i=Tt.BEGIN),this.addModifier(new me(t,e).setPosition(i),i),this}addClef(t,e,i,s){return void 0===s||s===Tt.BEGIN?this.clef=t:s===Tt.END&&(this.endClef=t),this.addModifier(new de(t,e,i),s),this}addEndClef(t,e,i){return this.addClef(t,e,i,Tt.END),this}addTimeSignature(t,e,i){return this.addModifier(new Se(t,e),i),this}addEndTimeSignature(t,e){return this.addTimeSignature(t,e,Tt.END),this}addTrebleGlyph(){return this.addClef("treble"),this}getModifiers(t,e){const i=void 0===t,s=void 0===e;return i&&s?this.modifiers:i?this.modifiers.filter((t=>e===t.getCategory())):s?this.modifiers.filter((e=>t===e.getPosition())):this.modifiers.filter((i=>t===i.getPosition()&&e===i.getCategory()))}sortByCategory(t,e){for(let i=t.length-1;i>=0;i--)for(let s=0;se[t[s+1].getCategory()]){const e=t[s];t[s]=t[s+1],t[s+1]=e}}format(){const t=this.modifiers[0],e=this.modifiers[1],i=this.getModifiers(Tt.BEGIN),s=this.getModifiers(Tt.END);let n,a,r;this.sortByCategory(i,Te),this.sortByCategory(s,we),i.length>1&&t.getType()===wt.REPEAT_BEGIN&&(i.push(i.splice(0,1)[0]),i.splice(0,0,new Nt(wt.SINGLE))),s.indexOf(e)>0&&s.splice(0,0,new Nt(wt.NONE));let h=0,b=this.x;for(let t=0;t0){t.save(),t.setFont(this.textFont);const e=t.measureText(""+this.measure).width;n=this.getYForTopText(0)+3,t.fillText(""+this.measure,this.x-e/2,n),t.restore()}return t.closeGroup(),this}getVerticalBarWidth(){return this.options.vertical_bar_width}getConfigForLines(){return this.options.line_config}setConfigForLine(t,e){if(t>=this.options.num_lines||t<0)throw new p("StaveConfigError","The line number must be within the range of the number of lines in the Stave.");if(void 0===e.visible)throw new p("StaveConfigError","The line configuration object is missing the 'visible' property.");if("boolean"!=typeof e.visible)throw new p("StaveConfigError","The line configuration objects 'visible' property must be true or false.");return this.options.line_config[t]=e,this}setConfigForLines(t){if(t.length!==this.options.num_lines)throw new p("StaveConfigError","The length of the lines configuration array must match the number of lines in the Stave");for(const e in t)null==t[e].visible&&(t[e]=this.options.line_config[e]),this.options.line_config[e]=Object.assign(Object.assign({},this.options.line_config[e]),t[e]);return this.options.line_config=t,this}static formatBegModifiers(t){let e=0;t.forEach((t=>{t.getNoteStartX()>e&&(e=t.getNoteStartX())})),t.forEach((t=>{t.setNoteStartX(e)})),e=0,t.forEach((t=>{t.getModifiers(Tt.BEGIN,u.Barline).forEach((t=>{t.getType()==wt.REPEAT_BEGIN&&t.getX()>e&&(e=t.getX())}))})),t.forEach((t=>{t.getModifiers(Tt.BEGIN,u.Barline).forEach((t=>{t.getType()==wt.REPEAT_BEGIN&&t.setX(e)}))})),e=0,t.forEach((t=>{t.getModifiers(Tt.BEGIN,u.TimeSignature).forEach((t=>{t.getX()>e&&(e=t.getX())}))})),t.forEach((t=>{t.getModifiers(Tt.BEGIN,u.TimeSignature).forEach((t=>{t.setX(e)}))}))}}function Ee(t,e,i,s,n){if(e!==Ce.type.BOLD_DOUBLE_LEFT&&e!==Ce.type.BOLD_DOUBLE_RIGHT)throw new p("InvalidConnector","A REPEAT_BEGIN or REPEAT_END type must be provided.");let a=3,o=3.5;e===Ce.type.BOLD_DOUBLE_RIGHT&&(a=-5,o=3),t.fillRect(i+a,s,1,n-s),t.fillRect(i-2,s,o,n-s)}ve.TEXT_FONT={family:B.SANS_SERIF,size:8,weight:D.NORMAL,style:N.NORMAL};class Ce extends O{constructor(t,e){super(),this.thickness=j.STAVE_LINE_THICKNESS,this.width=3,this.top_stave=t,this.bottom_stave=e,this.type=Ce.type.DOUBLE,this.resetFont(),this.x_shift=0,this.texts=[]}static get CATEGORY(){return u.StaveConnector}setType(t){const e="string"==typeof t?Ce.typeString[t]:t;return Object.values(Ce.type).includes(e)&&(this.type=e),this}getType(){return this.type}setText(t,e={}){return this.texts.push({content:t,options:Object.assign({shift_x:0,shift_y:0},e)}),this}setXShift(t){if("number"!=typeof t)throw new p("InvalidType","x_shift must be a Number");return this.x_shift=t,this}getXShift(){return this.x_shift}draw(){const t=this.checkContext();this.setRendered();let e=this.top_stave.getYForLine(0),i=this.bottom_stave.getYForLine(this.bottom_stave.getNumLines()-1)+this.thickness,s=this.width,n=this.top_stave.getX();(this.type===Ce.type.SINGLE_RIGHT||this.type===Ce.type.BOLD_DOUBLE_RIGHT||this.type===Ce.type.THIN_DOUBLE)&&(n=this.top_stave.getX()+this.top_stave.getWidth());let a=i-e;switch(this.type){case Ce.type.SINGLE:case Ce.type.SINGLE_LEFT:case Ce.type.SINGLE_RIGHT:s=1;break;case Ce.type.DOUBLE:n-=this.width+2,e-=this.thickness,a+=.5;break;case Ce.type.BRACE:{s=12;const n=this.top_stave.getX()-2+this.x_shift,o=e,r=n,h=i,b=n-s,l=o+a/2,c=b-.9*s,d=o+.2*a,m=n+1.1*s,g=l-.135*a,u=m,p=l+.135*a,_=c,x=h-.2*a,f=b-s,y=x,S=n+.4*s,T=l+.135*a,w=S,v=l-.135*a,E=f,C=d;t.beginPath(),t.moveTo(n,o),t.bezierCurveTo(c,d,m,g,b,l),t.bezierCurveTo(u,p,_,x,r,h),t.bezierCurveTo(f,y,S,T,b,l),t.bezierCurveTo(w,v,E,C,n,o),t.fill(),t.stroke();break}case Ce.type.BRACKET:e-=6,i+=6,a=i-e,Q.renderGlyph(t,n-5,e,40,"bracketTop"),Q.renderGlyph(t,n-5,i,40,"bracketBottom"),n-=this.width+2;break;case Ce.type.BOLD_DOUBLE_LEFT:Ee(t,this.type,n+this.x_shift,e,i-this.thickness);break;case Ce.type.BOLD_DOUBLE_RIGHT:Ee(t,this.type,n,e,i-this.thickness);break;case Ce.type.THIN_DOUBLE:s=1,a-=this.thickness;break;case Ce.type.NONE:break;default:throw new p("InvalidType",`The provided StaveConnector.type (${this.type}) is invalid.`)}this.type!==Ce.type.BRACE&&this.type!==Ce.type.BOLD_DOUBLE_LEFT&&this.type!==Ce.type.BOLD_DOUBLE_RIGHT&&this.type!==Ce.type.NONE&&t.fillRect(n,e,s,a),this.type===Ce.type.THIN_DOUBLE&&t.fillRect(n-3,e,s,a),t.save(),t.setLineWidth(2),t.setFont(this.textFont);for(let e=0;et.reduce(((t,e)=>t+e),0);function De(t,e,i,s){let n=e;for(let e=i+1;e{e.addToModifierContext(new ce);const s=(new jt).addTickable(e).preFormat(),n=s.getMetrics();return s.setX(t+n.totalLeftPx),t+s.getWidth()+n.totalRightPx+i}),e)}static plotDebugging(t,e,i,s,n,a){const o=i+(a=Object.assign({stavePadding:j.currentMusicFont().lookupMetric("stave.padding")},a)).stavePadding,r=e.contextGaps;t.save(),t.setFont(B.SANS_SERIF,8),r.gaps.forEach((e=>{var i,a,r;i=o+e.x1,a=o+e.x2,r="rgba(100,200,100,0.4)",t.beginPath(),t.setStrokeStyle(r),t.setFillStyle(r),t.setLineWidth(1),t.fillRect(i,s,Math.max(a-i,0),n-s),t.setFillStyle("green"),t.fillText(Math.round(e.x2-e.x1).toString(),o+e.x1,n+12)})),t.setFillStyle("red"),t.fillText(`Loss: ${(e.totalCost||0).toFixed(2)} Shift: ${(e.totalShift||0).toFixed(2)} Gap: ${r.total.toFixed(2)}`,o-20,n+27),t.restore()}static FormatAndDraw(t,e,i,s){let n={auto_beam:!1,align_rests:!1};"object"==typeof s?n=Object.assign(Object.assign({},n),s):"boolean"==typeof s&&(n.auto_beam=s);const a=new Yt(j.TIME4_4).setMode(Yt.Mode.SOFT).addTickables(i),o=n.auto_beam?Oe.applyAndGetBeams(a):[];return(new Ne).joinVoices([a]).formatToStave([a],e,{align_rests:n.align_rests,stave:e}),a.setStave(e).draw(t,e),o.forEach((e=>e.setContext(t).draw())),a.getBoundingBox()}static FormatAndDrawTab(t,e,i,s,n,a,o){let r={auto_beam:a,align_rests:!1};"object"==typeof o?r=Object.assign(Object.assign({},r),o):"boolean"==typeof o&&(r.auto_beam=o);const h=new Yt(j.TIME4_4).setMode(Yt.Mode.SOFT).addTickables(n),b=new Yt(j.TIME4_4).setMode(Yt.Mode.SOFT).addTickables(s),l=r.auto_beam?Oe.applyAndGetBeams(h):[];(new Ne).joinVoices([h]).joinVoices([b]).formatToStave([h,b],i,{align_rests:r.align_rests}),h.draw(t,i),b.draw(t,e),l.forEach((e=>e.setContext(t).draw())),new Ce(i,e).setContext(t).draw()}static AlignRestsToNotes(t,e,i){t.forEach(((s,n)=>{if(d(s)&&s.isRest()){if(s.getTuplet()&&!i)return;const a=s.getGlyph().position.toUpperCase();if("R/4"!==a&&"B/4"!==a)return;if(e||s.getBeam()){const e=s.getKeyProps()[0];if(0===n)e.line=De(t,e.line,n,!1);else if(n>0&&nNe.AlignRestsToNotes(t.getTickables(),e)))}preCalculateMinTotalWidth(t){const e=j.currentMusicFont().lookupMetric("stave.unalignedNotePadding");let i=0,s=0,n=0;const a=[],o=[];if(this.hasMinTotalWidth)return this.minTotalWidth;if(!t)throw new p("BadArgument","'voices' required to run preCalculateMinTotalWidth");this.createTickContexts(t);const{list:r,map:h}=this.tickContexts;this.minTotalWidth=0,r.forEach((e=>{const r=h[e];r.preFormat(),r.getTickables().length{s+=t.getMetrics().width,n+=t.getTicks().value(),a.push(t.getMetrics().width),o.push(t.getTicks().value())}));const b=r.getWidth();this.minTotalWidth+=b})),this.hasMinTotalWidth=!0;const b=s>0?s/a.length:1/a.length,l=ke(a.map((t=>Math.pow(t-b,2)))),c=Math.pow(l/a.length,.5)/b,d=n/o.length,m=ke(o.map((t=>Math.pow(t-d,2)))),g=Math.pow(m/o.length,.5)/d,u=Math.max(g,c)*r.length*e,_=e*i;return this.minTotalWidth+Math.max(_,u)}getMinTotalWidth(){if(!this.hasMinTotalWidth)throw new p("NoMinTotalWidth","Call 'preCalculateMinTotalWidth' or 'preFormat' before calling 'getMinTotalWidth'");return this.minTotalWidth}static getResolutionMultiplier(t){if(!t||!t.length)throw new p("BadArgument","No voices to format");const e=t[0].getTotalTicks();return t.reduce(((t,i)=>{if(!i.getTotalTicks().equals(e))throw new p("TickMismatch","Voices should have same total note duration in ticks.");if(i.getMode()===Yt.Mode.STRICT&&!i.isComplete())throw new p("IncompleteVoice","Voice does not have enough notes.");return Math.max(t,v.LCM(t,i.getResolutionMultiplier()))}),1)}createModifierContexts(t){if(0==t.length)return;const e=Ne.getResolutionMultiplier(t),i=new Map,s=[];t.forEach((t=>{const n=new v(0,e);t.getTickables().forEach((t=>{const e=n.numerator;let a=i.get(t.getStave());if(a||(i.set(t.getStave(),{}),a=i.get(t.getStave())),!(a?a[e]:void 0)){const t=new ce;s.push(t),a[e]=t}t.addToModifierContext(a[e]),n.add(t.getTicks())}))})),this.modifierContexts.push({map:i,array:s,resolutionMultiplier:e})}createTickContexts(t){const e=function(t,e,i){if(0==t.length)return{map:{},array:[],list:[],resolutionMultiplier:0};const s={},n=[],a=[],o=Ne.getResolutionMultiplier(t);return t.forEach(((t,r)=>{const h=new v(0,o);t.getTickables().forEach((t=>{const o=h.numerator;if(!s[o]){const t=e({tickID:o});a.push(t),s[o]=t,n.push(o)}i(t,s[o],r),h.add(t.getTicks())}))})),{map:s,array:a,list:n.sort(((t,e)=>t-e)),resolutionMultiplier:o}}(t,(t=>new jt(t)),((t,e,i)=>e.addTickable(t,i)));this.tickContexts=e;const i=this.tickContexts.array;return i.forEach((t=>{t.tContexts=i})),e}getTickContexts(){return this.tickContexts}preFormat(t=0,e,i,s){const n=this.tickContexts;if(!n)throw new p("NoTickContexts","preFormat requires TickContexts");const{list:a,map:o}=n;this.lossHistory=[],i&&s&&i.forEach((t=>t.setStave(s).preFormat()));let r=0,h=0;this.minTotalWidth=0;let b=0;a.forEach((t=>{const e=o[t];e.preFormat();const i=e.getWidth();this.minTotalWidth+=i;const s=e.getMaxTicks().value();b+=s;const n=e.getMetrics();r=r+h+n.totalLeftPx,e.setX(r),h=i-n.totalLeftPx}));const{globalSoftmax:l,softmaxFactor:c,maxIterations:d}=this.formatterOptions,m=ke(a.map((t=>Math.pow(c,o[t].getMaxTicks().value()/b))));if(this.minTotalWidth=r+h,this.hasMinTotalWidth=!0,t<=0)return this.evaluate();const g=o[a[0]],u=o[a[a.length-1]];function _(t){return a.map(((e,i)=>{const s=o[e],n=s.getTickablesByVoice();let r;if(i>0){const e=o[a[i-1]];for(let h=i-1;h>=0;h--){const i=o[a[h]].getTickablesByVoice(),d=[];if(Object.keys(n).forEach((t=>{i[t]&&d.push(t)})),d.length>0){let a=0,o=1/0,h=0;if(d.forEach((t=>{const e=i[t].getTicks().value();e>a&&(r=i[t],a=e);const s=n[t],h=s.getX()-(s.getMetrics().modLeftPx+s.getMetrics().leftDisplacedHeadPx),b=i[t].getMetrics(),l=i[t].getX()+b.notePx+b.modRightPx+b.rightDisplacedHeadPx;o=Math.min(o,h-l)})),o=Math.min(o,s.getX()-(e.getX()+.05*t)),l){const e=b;h=Math.pow(c,a/e)/m*t}else void 0!==r&&(h=r.getVoice().softmax(a)*t);return{expectedDistance:h,maxNegativeShiftPx:o,fromTickable:r}}}}return{expectedDistance:0,fromTickablePx:0,maxNegativeShiftPx:0}}))}function f(t){const e=y/2;let i=0;return a.forEach(((s,n)=>{const a=o[s];if(n>0){const e=a.getX(),s=t[n],o=x(s.fromTickable).getX()+s.expectedDistance-(e+i);let r=0;o>0?i+=o:o<0&&(r=Math.min(s.maxNegativeShiftPx,Math.abs(o)),i+=-r),a.setX(e+i)}a.getCenterAlignedTickables().forEach((t=>{t.setCenterXShift(e-a.getX())}))})),u.getX()-g.getX()}const y=t-u.getMetrics().notePx-u.getMetrics().totalRightPx-g.getMetrics().totalLeftPx,S=j.currentMusicFont(),T=S.lookupMetric("stave.endPaddingMin"),w=S.lookupMetric("stave.endPaddingMax"),v=S.lookupMetric("stave.padding");let E=y;const C=_(E);let k=f(C);if(1===a.length)return 0;const D=((t,e)=>{let i=t/2;if(e.length>1)for(let t=1;t{let e=0;const i=u&&u.getMaxTickable();if(i){const s=i.getVoice();if(s.getTicksUsed().value()>s.getTotalTicks().value())return 2*wM&&B>0||k+P1;)E-=k-M,P=N(E),A=P-(w-T),k=f(_(E)),B--;return this.justifyWidth=t,this.evaluate()}evaluate(){const t=this.tickContexts,e=this.justifyWidth;this.contextGaps={total:0,gaps:[]},t.list.forEach(((e,i)=>{if(0===i)return;const s=t.list[i-1],n=t.map[s],a=t.map[e],o=n.getMetrics(),r=a.getMetrics(),h=n.getX()+o.notePx+o.totalRightPx,b=a.getX()-r.totalLeftPx,l=b-h;this.contextGaps.total+=l,this.contextGaps.gaps.push({x1:h,x2:b}),a.getFormatterMetrics().freedom.left=l,n.getFormatterMetrics().freedom.right=l})),this.durationStats={};const i=this.durationStats;this.voices.forEach((t=>{t.getTickables().forEach(((t,s,n)=>{const a=t.getTicks().clone().simplify().toString(),o=t.getMetrics(),r=t.getFormatterMetrics(),h=t.getX()+o.notePx+o.modRightPx+o.rightDisplacedHeadPx;let b=0;if(s{t.getTickables().forEach((t=>{const e=t.getTicks().clone().simplify().toString(),n=t.getFormatterMetrics();n.space.mean=i[e].mean,n.duration=e,n.iterations+=1,n.space.deviation=n.space.used-n.space.mean,s+=Math.pow(n.space.deviation,2)}))})),this.totalCost=Math.sqrt(s),this.lossHistory.push(this.totalCost),this.totalCost}tune(t){var e;const i=this.tickContexts;if(!i)return 0;const s=null!==(e=null==t?void 0:t.alpha)&&void 0!==e?e:.5;let n=0;return this.totalShift=0,i.list.forEach(((t,e,a)=>{const o=i.map[t],r=e>0?i.map[a[e-1]]:void 0,h=et.getFormatterMetrics().space.deviation)));b>0?n=-Math.min(o.getFormatterMetrics().freedom.right,Math.abs(b)):b<0&&(n=h?Math.min(h.getFormatterMetrics().freedom.right,Math.abs(b)):0),n*=s,this.totalShift+=n})),this.evaluate()}postFormat(){return this.modifierContexts.forEach((t=>{t.array.forEach((t=>t.postFormat()))})),this.tickContexts.list.forEach((t=>{this.tickContexts.map[t].postFormat()})),this}joinVoices(t){return this.createModifierContexts(t),this.hasMinTotalWidth=!1,this}format(t,e,i){const s=Object.assign({align_rests:!1},i);this.voices=t;const n=this.formatterOptions.softmaxFactor;return n&&this.voices.forEach((t=>t.setSoftmaxFactor(n))),this.alignRests(t,s.align_rests),this.createTickContexts(t),this.preFormat(e,s.context,t,s.stave),s.stave&&this.postFormat(),this}formatToStave(t,e,i){const s=Object.assign({context:e.getContext()},i),n=e.getNoteEndX()-e.getNoteStartX()-ve.defaultPadding;return function(...t){Ne.DEBUG&&f("Vex.Flow.Formatter",t)}("Formatting voices to width: ",n),this.format(t,n,s)}getTickContext(t){var e;return null===(e=this.tickContexts)||void 0===e?void 0:e.map[t]}}var Pe;Ne.DEBUG=!1,function(t){t[t.BOTTOM=-1]="BOTTOM",t[t.TOP=1]="TOP"}(Pe||(Pe={}));class Ae extends O{constructor(t,e={}){if(super(),this.numerator_glyphs=[],this.denom_glyphs=[],!t||!t.length)throw new p("BadArguments","No notes provided for tuplet.");this.options=e,this.notes=t,this.num_notes=null!=this.options.num_notes?this.options.num_notes:t.length,this.options.beats_occupied&&this.beatsOccupiedDeprecationWarning(),this.notes_occupied=this.options.notes_occupied||this.options.beats_occupied||2,null!=this.options.bracketed?this.bracketed=this.options.bracketed:this.bracketed=t.some((t=>!t.hasBeam())),this.ratioed=null!=this.options.ratioed?this.options.ratioed:Math.abs(this.notes_occupied-this.num_notes)>1,this.point=j.currentMusicFont().lookupMetric("digits.tupletPoint"),this.y_pos=16,this.x_pos=100,this.width=200,this.setTupletLocation(this.options.location||Ae.LOCATION_TOP),Ne.AlignRestsToNotes(t,!0,!0),this.resolveGlyphs(),this.attach()}static get CATEGORY(){return u.Tuplet}static get LOCATION_TOP(){return Pe.TOP}static get LOCATION_BOTTOM(){return Pe.BOTTOM}static get NESTING_OFFSET(){return 15}static get metrics(){return j.currentMusicFont().getMetrics().glyphs.tuplet}attach(){for(let t=0;t=1;)this.numerator_glyphs.unshift(new Q("timeSig"+t%10,this.point)),t=parseInt((t/10).toString(),10);for(this.denom_glyphs=[],t=this.notes_occupied;t>=1;)this.denom_glyphs.unshift(new Q("timeSig"+t%10,this.point)),t=parseInt((t/10).toString(),10)}getNestedTupletCount(){const t=this.location,e=this.notes[0];let i=n(e,t),s=n(e,t);function n(t,e){return t.getTupletStack().filter((t=>t.location===e)).length}return this.notes.forEach((e=>{const a=n(e,t);i=a>i?a:i,s=a0&&(s=Math.min(a,s))}}}else{let t=Ae.metrics.bottomLine;this.notes.forEach((e=>{const i=e.getModifierContext();i&&(t=Math.max(t,i.getState().text_line+1))})),s=i.checkStave().getYForLine(t)+Ae.metrics.noteHeadOffset;for(let t=0;ts&&(s=e)}}return s+t+e}draw(){const t=this.checkContext();this.setRendered();const e=this.notes[0],i=this.notes[this.notes.length-1];this.bracketed?(this.x_pos=e.getTieLeftX()-5,this.width=i.getTieRightX()-this.x_pos+5):(this.x_pos=e.getStemX(),this.width=i.getStemX()-this.x_pos),this.y_pos=this.getYPosition();const s=(t,e)=>t+x(e.getMetrics().width);let n=this.numerator_glyphs.reduce(s,0);this.ratioed&&(n=this.denom_glyphs.reduce(s,n),n+=.32*this.point);const a=this.x_pos+this.width/2-n/2;if(this.bracketed){const e=this.width/2-n/2-5;e>0&&(t.fillRect(this.x_pos,this.y_pos,e,1),t.fillRect(this.x_pos+this.width/2+n/2+5,this.y_pos,e,1),t.fillRect(this.x_pos,this.y_pos+(this.location===Ae.LOCATION_BOTTOM?1:0),1,10*this.location),t.fillRect(this.x_pos+this.width,this.y_pos+(this.location===Ae.LOCATION_BOTTOM?1:0),1,10*this.location))}const o=j.currentMusicFont().lookupMetric("digits.shiftY",0);let r=0;if(this.numerator_glyphs.forEach((e=>{e.render(t,a+r,this.y_pos+this.point/3-2+o),r+=x(e.getMetrics().width)})),this.ratioed){const e=a+r+.16*this.point,i=.06*this.point;t.beginPath(),t.arc(e,this.y_pos-.08*this.point,i,0,2*Math.PI,!1),t.closePath(),t.fill(),t.beginPath(),t.arc(e,this.y_pos+.12*this.point,i,0,2*Math.PI,!1),t.closePath(),t.fill(),r+=.32*this.point,this.denom_glyphs.forEach((e=>{e.render(t,a+r,this.y_pos+this.point/3-2+o),r+=x(e.getMetrics().width)}))}}}function Me(t){let e=0;return t.forEach((t=>{t.keyProps&&t.keyProps.forEach((t=>{e+=t.line-3}))})),e>=0?st.DOWN:st.UP}const Be="L",Fe="R",Re="B";class Oe extends O{constructor(t,e=!1){if(super(),this.slope=0,this.y_shift=0,this.forcedPartialDirections={},!t||0===t.length)throw new p("BadArguments","No notes provided for beam.");if(1===t.length)throw new p("BadArguments","Too few notes for beam.");if(this.ticks=t[0].getIntrinsicTicks(),this.ticks>=j.durationToTicks("4"))throw new p("BadArguments","Beams can only be applied to notes shorter than a quarter note.");let i,s;for(this.stem_direction=st.UP,i=0;it+e.getStemDirection()),0);n=e>-1?st.UP:st.DOWN}for(i=0;i(new v).parse(t)));{const e=parseInt(t.split("/")[0],10),i=parseInt(t.split("/")[1],10);if(e%3==0)return[new v(3,i)];if(i>4)return[new v(2,i)];if(i<=4)return[new v(1,i)]}return[new v(1,4)]}static applyAndGetBeams(t,e,i){return Oe.generateBeams(t.getTickables(),{groups:i,stem_direction:e})}static generateBeams(t,e={}){e.groups&&e.groups.length||(e.groups=[new v(2,8)]);const i=e.groups.map((t=>{if(!t.multiply)throw new p("InvalidBeamGroups","The beam groups must be an array of Vex.Flow.Fractions");return t.clone().multiply(j.RESOLUTION,1)})),s=t;let n=0,a=[],o=[];function r(){i.length-1>n?n+=1:n=0}!function(){let t=[],e=new v(0,1);s.forEach((s=>{if(t=[],s.shouldIgnoreTicks())return a.push(o),void(o=t);o.push(s);const h=i[n].clone(),b=(l=o,l.reduce(((t,e)=>e.getTicks().clone().add(t)),new v(0,1))).add(e);var l;const c=j.durationToNumber(s.getDuration())<8;if(c&&s.getTuplet()&&(h.numerator*=2),b.greaterThan(h)){if(!c){const e=o.pop();e&&t.push(e)}a.push(o);do{e=b.subtract(i[n]),r()}while(e.greaterThanEquals(i[n]));o=t}else b.equals(h)&&(a.push(o),e=new v(0,1),o=t,r())})),o.length>0&&a.push(o)}(),function(){const t=[];a.forEach((i=>{let s=[];i.forEach(((i,n,a)=>{const o=0===n||n===a.length-1,r=a[n-1],h=!e.beam_rests&&i.isRest(),b=e.beam_rests&&e.beam_middle_only&&i.isRest()&&o;let l=!1;if(e.maintain_stem_directions&&r&&!i.isRest()&&!r.isRest()){const t=r.getStemDirection();l=i.getStemDirection()!==t}const c=parseInt(i.getDuration(),10)<8;h||b||l||c?(s.length>0&&t.push(s),s=l?[i]:[]):s.push(i)})),s.length>0&&t.push(s)})),a=t}(),a.forEach((t=>{let i;if(e.maintain_stem_directions){const e=function(t){for(let e=0;e{t.setStemDirection(e)}))}(t,i)}));const h=a.filter((t=>{if(t.length>1){let e=!0;return t.forEach((t=>{t.getIntrinsicTicks()>=j.durationToTicks("4")&&(e=!1)})),e}return!1})),b=function(){const t=[];return a.forEach((e=>{let i;e.forEach((e=>{const s=e.getTuplet();s&&i!==s&&(i=s,t.push(i))}))})),t}(),l=[];return h.forEach((t=>{const i=new Oe(t);e.show_stemlets&&(i.render_options.show_stemlets=!0),e.secondary_breaks&&(i.render_options.secondary_break_ticks=j.durationToTicks(e.secondary_breaks)),!0===e.flat_beams&&(i.render_options.flat_beams=!0,i.render_options.flat_beam_offset=e.flat_beam_offset),l.push(i)})),b.forEach((t=>{const e=t.notes[0].stem_direction===st.DOWN?Pe.BOTTOM:Pe.TOP;t.setTupletLocation(e);let i=!1;for(let e=0;et.getGlyph().beam_count)).reduce(((t,e)=>e>t?e:t))}breakSecondaryAt(t){return this.break_on_indices=t,this}setPartialBeamSideAt(t,e){return this.forcedPartialDirections[t]=e,this}unsetPartialBeamSideAt(t){return delete this.forcedPartialDirections[t],this}getSlopeY(t,e,i,s){return i+(t-e)*s}calculateSlope(){const{notes:t,stem_direction:e,render_options:{max_slope:i,min_slope:s,slope_iterations:n,slope_cost:a}}=this,o=t[0],r=function(t,e){const i=t.getStemExtents().topY,s=t.getStemX();return(e.getStemExtents().topY-i)/(e.getStemX()-s)}(o,t[t.length-1]),h=(i-s)/n;let b=Number.MAX_VALUE,l=0,c=0;for(let n=s;n<=i;n+=h){let i=0,s=0;for(let a=1;an)&&(h=n,o=Math.min(...s.getYs()),r=s.getBeamCount())}let b=a/t.length;const l=s+r*(1.5*i),c=o+l*-e;e===st.DOWN&&bc&&(b=o-l),n?(e===st.DOWN&&b>n||e===st.UP&&b=8&&(l=-1!==this.break_on_indices.indexOf(h),this.render_options.secondary_break_ticks&&r>=this.render_options.secondary_break_ticks&&(r=0,l=!0));const c=b.getIntrinsicTicks(){const i=e.getStem();if(i){const s=e.getStemX();i.setNoteHeadXBounds(s,s),i.setContext(t).draw()}}),this)}drawBeamLines(t){const e=["4","8","16","32","64"],i=this.notes[0];let s=this.getBeamYToDraw();const n=i.getStemX(),a=this.render_options.beam_width*this.stem_direction;for(let i=0;i0||!0===e;return!e||n>0||(this.pos=s),o?this.matchSuccess():this.matchFail(s),{success:o,results:i,numMatches:n}}expectZeroOrMore(t){return this.expectOneOrMore(t,!0)}expect(t){if(Ue("Evaluating rule function:",t),!t)throw new p("Invalid rule function");let e;const i=t.bind(this.grammar)();if(i.token)e=this.matchToken(i.token,!0===i.noSpace),e.success&&(this.pos+=e.incrementPos);else{if(!i.expect)throw Ue(i),new p("Bad grammar! No `token` or `expect` property "+i);e=i.oneOrMore?this.expectOneOrMore(i):i.zeroOrMore?this.expectZeroOrMore(i):this.expectOne(i)}const s=[];return e.matches=s,e.results&&e.results.forEach((t=>s.push(Ge(t)))),i.run&&e.success&&i.run({matches:s}),e}}function He(...t){Je.DEBUG&&f("Vex.Flow.EasyScore",t)}Ye.DEBUG=!1;class Xe{constructor(t){this.builder=t}begin(){return this.LINE}LINE(){return{expect:[this.PIECE,this.PIECES,this.EOL]}}PIECE(){return{expect:[this.CHORDORNOTE,this.PARAMS],run:()=>this.builder.commitPiece()}}PIECES(){return{expect:[this.COMMA,this.PIECE],zeroOrMore:!0}}PARAMS(){return{expect:[this.DURATION,this.TYPE,this.DOTS,this.OPTS]}}CHORDORNOTE(){return{expect:[this.CHORD,this.SINGLENOTE],or:!0}}CHORD(){return{expect:[this.LPAREN,this.NOTES,this.RPAREN],run:t=>this.builder.addChord(t.matches[1])}}NOTES(){return{expect:[this.NOTE],oneOrMore:!0}}NOTE(){return{expect:[this.NOTENAME,this.ACCIDENTAL,this.OCTAVE]}}SINGLENOTE(){return{expect:[this.NOTENAME,this.ACCIDENTAL,this.OCTAVE],run:t=>{const e=t;this.builder.addSingleNote(e.matches[0],e.matches[1],e.matches[2])}}}ACCIDENTAL(){return{expect:[this.MICROTONES,this.ACCIDENTALS],maybe:!0,or:!0}}DOTS(){return{expect:[this.DOT],zeroOrMore:!0,run:t=>this.builder.setNoteDots(t.matches)}}TYPE(){return{expect:[this.SLASH,this.MAYBESLASH,this.TYPES],maybe:!0,run:t=>this.builder.setNoteType(t.matches[2])}}DURATION(){return{expect:[this.SLASH,this.DURATIONS],maybe:!0,run:t=>this.builder.setNoteDuration(t.matches[1])}}OPTS(){return{expect:[this.LBRACKET,this.KEYVAL,this.KEYVALS,this.RBRACKET],maybe:!0}}KEYVALS(){return{expect:[this.COMMA,this.KEYVAL],zeroOrMore:!0}}KEYVAL(){return{expect:[this.KEY,this.EQUALS,this.VAL],run:t=>this.builder.addNoteOption(t.matches[0],t.matches[2].slice(1,-1))}}VAL(){return{expect:[this.SVAL,this.DVAL],or:!0}}KEY(){return{token:"[a-zA-Z][a-zA-Z0-9]*"}}DVAL(){return{token:'["][^"]*["]'}}SVAL(){return{token:"['][^']*[']"}}NOTENAME(){return{token:"[a-gA-G]"}}OCTAVE(){return{token:"[0-9]+"}}ACCIDENTALS(){return{token:"bb|b|##|#|n"}}MICROTONES(){return{token:"bbs|bss|bs|db|d|\\+\\+-|\\+-|\\+\\+|\\+|k|o"}}DURATIONS(){return{token:"[0-9whq]+"}}TYPES(){return{token:"[rRsSmMhHgG]"}}LPAREN(){return{token:"[(]"}}RPAREN(){return{token:"[)]"}}COMMA(){return{token:"[,]"}}DOT(){return{token:"[.]"}}SLASH(){return{token:"[/]"}}MAYBESLASH(){return{token:"[/]?"}}EQUALS(){return{token:"[=]"}}LBRACKET(){return{token:"\\["}}RBRACKET(){return{token:"\\]"}}EOL(){return{token:"$"}}}class je{constructor(t){this.chord=[],this.dots=0,this.options={},this.duration=t}}class Ve{constructor(t){this.commitHooks=[],this.factory=t,this.reset()}reset(t){this.options=Object.assign({stem:"auto",clef:"treble"},t),this.elements={notes:[],accidentals:[]},this.rollingDuration="8",this.resetPiece()}getFactory(){return this.factory}getElements(){return this.elements}addCommitHook(t){this.commitHooks.push(t)}resetPiece(){He("resetPiece"),this.piece=new je(this.rollingDuration)}setNoteDots(t){He("setNoteDots:",t),t&&(this.piece.dots=t.length)}setNoteDuration(t){He("setNoteDuration:",t),this.rollingDuration=this.piece.duration=t||this.rollingDuration}setNoteType(t){He("setNoteType:",t),t&&(this.piece.type=t)}addNoteOption(t,e){He("addNoteOption: key:",t,"value:",e),this.piece.options[t]=e}addNote(t,e,i){He("addNote:",t,e,i),this.piece.chord.push({key:t,accid:e,octave:i})}addSingleNote(t,e,i){He("addSingleNote:",t,e,i),this.addNote(t,e,i)}addChord(t){He("startChord"),"object"!=typeof t[0]?this.addSingleNote(t[0]):t.forEach((t=>{t&&this.addNote(...t)})),He("endChord")}commitPiece(){He("commitPiece");const{factory:t}=this;if(!t)return;const e=Object.assign(Object.assign({},this.options),this.piece.options),i=x(e.stem,"BadArguments","options.stem is not defined").toLowerCase(),s=x(e.clef,"BadArguments","options.clef is not defined").toLowerCase(),{chord:n,duration:a,dots:o,type:r}=this.piece,h=tt.accidentals,b=n.map((t=>{var e;return t.key+(h.includes(null!==(e=t.accid)&&void 0!==e?e:"")?t.accid:"")+"/"+t.octave})),l="auto"===i,c="g"==(null==r?void 0:r.toLowerCase())?t.GhostNote({duration:a,dots:o}):t.StaveNote({keys:b,duration:a,dots:o,type:r,clef:s,auto_stem:l});l||c.setStemDirection("up"===i?st.UP:st.DOWN);const d=[];n.forEach(((e,i)=>{const s=e.accid;if("string"==typeof s){const e=t.Accidental({type:s});c.addModifier(e,i),d.push(e)}else d.push(void 0)}));for(let t=0;tt(e,c,this))),this.elements.notes.push(c),this.elements.accidentals.push(d),this.resetPiece()}}function Ke(t,e){void 0!==t.id&&e.setAttribute("id",t.id)}const $e=/\s*,\s*/;function qe(t,e){void 0!==t.class&&t.class.split($e).forEach((t=>e.addClass(t)))}class Je{constructor(t={}){this.defaults={clef:"treble",time:"4/4",stem:"auto"},this.setOptions(t)}set(t){return this.defaults=Object.assign(Object.assign({},this.defaults),t),this}setOptions(t){var e,i;const s=t.factory,n=null!==(e=t.builder)&&void 0!==e?e:new Ve(s);return this.options=Object.assign(Object.assign({commitHooks:[Ke,qe,_t.easyScoreHook,Rt.easyScoreHook],throwOnError:!1},t),{factory:s,builder:n}),this.factory=s,this.builder=n,this.grammar=new Xe(this.builder),this.parser=new Ye(this.grammar),null===(i=this.options.commitHooks)||void 0===i||i.forEach((t=>this.addCommitHook(t))),this}setContext(t){return this.factory.setContext(t),this}parse(t,e={}){this.builder.reset(e);const i=this.parser.parse(t);if(!i.success&&this.options.throwOnError)throw He(i),new p("Error parsing line: "+t);return i}beam(t,e){return this.factory.Beam({notes:t,options:e}),t}tuplet(t,e){return this.factory.Tuplet({notes:t,options:e}),t}notes(t,e={}){return e=Object.assign({clef:this.defaults.clef,stem:this.defaults.stem},e),this.parse(t,e),this.builder.getElements().notes}voice(t,e={}){return e=Object.assign({time:this.defaults.time},e),this.factory.Voice(e).addTickables(t)}addCommitHook(t){this.builder.addCommitHook(t)}}Je.DEBUG=!1;const Qe="Ghost note must have valid initialization data to identify duration.";class Ze extends Lt{static get CATEGORY(){return u.GhostNote}constructor(t){if(!t)throw new p("BadArguments",Qe);let e;if("string"==typeof t)e={duration:t};else{if("object"!=typeof t)throw new p("BadArguments",Qe);e=t}super(e),this.setWidth(0)}isRest(){return!0}setStave(t){return super.setStave(t),this}addToModifierContext(t){return this}preFormat(){return this.preFormatted=!0,this}draw(){this.setRendered();for(let t=0;t=oi.type.TEXT&&t<=oi.type.MIXED&&(this.type=t),this}setCustomText(t,e){return this.custom_depress_text=t||"",this.custom_release_text=e||"",this}setLine(t){return this.line=t,this}drawBracketed(){const t=this.checkContext();let e,i,s=!1;this.notes.forEach(((n,a,o)=>{s=!s;const r=n.getAbsoluteX(),h=n.checkStave().getYForBottomText(this.line+3);if(r{e=!e;const s=i.checkStave(),n=i.getAbsoluteX(),a=s.getYForBottomText(this.line+3),o=j.currentMusicFont().lookupMetric(`pedalMarking.${e?"down":"up"}.point`);let r=0;e?this.custom_depress_text?(r=t.measureText(this.custom_depress_text).width,t.fillText(this.custom_depress_text,n-r/2,a)):ai("pedal_depress",t,n,a,o):this.custom_release_text?(r=t.measureText(this.custom_release_text).width,t.fillText(this.custom_release_text,n-r/2,a)):ai("pedal_release",t,n,a,o)}))}draw(){const t=this.checkContext();this.setRendered(),t.save(),t.setStrokeStyle(this.render_options.color),t.setFillStyle(this.render_options.color),t.setFont(this.textFont),function(...t){oi.DEBUG&&f("Vex.Flow.PedalMarking",t)}("Rendering Pedal Marking"),this.type===oi.type.BRACKET||this.type===oi.type.MIXED?(t.setLineWidth(this.render_options.bracket_line_width),this.drawBracketed()):this.type===oi.type.TEXT&&this.drawText(),t.restore()}}oi.DEBUG=!1,oi.TEXT_FONT={family:B.SERIF,size:12,weight:D.BOLD,style:N.ITALIC},oi.GLYPHS={pedal_depress:{code:"keyboardPedalPed",x_shift:-10,y_shift:0},pedal_release:{code:"keyboardPedalUp",x_shift:-2,y_shift:3}},oi.type={TEXT:1,BRACKET:2,MIXED:3},oi.typeString={text:oi.type.TEXT,bracket:oi.type.BRACKET,mixed:oi.type.MIXED};const ri={1:"repeat1Bar",2:"repeat2Bars",4:"repeat4Bars",slash:"repeatBarSlash"};class hi extends ti{static get CATEGORY(){return u.RepeatNote}constructor(t,e,i){super(void 0,Object.assign({duration:"q",align_center:"slash"!==t},e),i);const s=new Q(ri[t]||"repeat1Bar",j.currentMusicFont().lookupMetric("repeatNote.point",40),{category:"repeatNote"});this.setGlyph(s)}}function bi(t,e,i,s,n,a,o){t.beginPath(),t.moveTo(e,i),t.lineTo(s,n),t.lineTo(a,o),t.lineTo(e,i),t.closePath(),t.fill()}class li extends O{constructor(t){super(),this.setNotes(t),this.text="",this.resetFont(),this.render_options={padding_left:4,padding_right:3,line_width:1,line_dash:void 0,rounded_end:!0,color:void 0,draw_start_arrow:!1,draw_end_arrow:!1,arrowhead_length:10,arrowhead_angle:Math.PI/8,text_position_vertical:li.TextVerticalPosition.TOP,text_justification:li.TextJustification.CENTER}}static get CATEGORY(){return u.StaveLine}setText(t){return this.text=t,this}setNotes(t){if(!t.first_note&&!t.last_note)throw new p("BadArguments","Notes needs to have either first_note or last_note set.");if(t.first_indices||(t.first_indices=[0]),t.last_indices||(t.last_indices=[0]),t.first_indices.length!==t.last_indices.length)throw new p("BadArguments","Connected notes must have same number of indices.");return this.notes=t,this.first_note=t.first_note,this.first_indices=t.first_indices,this.last_note=t.last_note,this.last_indices=t.last_indices,this}applyLineStyle(){const t=this.checkContext(),e=this.render_options;e.line_dash&&t.setLineDash(e.line_dash),e.line_width&&t.setLineWidth(e.line_width),e.rounded_end?t.setLineCap("round"):t.setLineCap("square")}applyFontStyle(){const t=this.checkContext();t.setFont(this.textFont);const e=this.render_options.color;e&&(t.setStrokeStyle(e),t.setFillStyle(e))}drawArrowLine(t,e,i){const s=this.render_options.draw_start_arrow&&this.render_options.draw_end_arrow,n=e.x,a=e.y,o=i.x,r=i.y,h=Math.sqrt((o-n)*(o-n)+(r-a)*(r-a)),b=(h-this.render_options.arrowhead_length/3)/h;let l,c,d,m;this.render_options.draw_end_arrow||s?(l=Math.round(n+(o-n)*b),c=Math.round(a+(r-a)*b)):(l=o,c=r),this.render_options.draw_start_arrow||s?(d=n+(o-n)*(1-b),m=a+(r-a)*(1-b)):(d=n,m=a),this.render_options.color&&(t.setStrokeStyle(this.render_options.color),t.setFillStyle(this.render_options.color)),t.beginPath(),t.moveTo(d,m),t.lineTo(l,c),t.stroke(),t.closePath();const g=Math.atan2(r-a,o-n),u=Math.abs(this.render_options.arrowhead_length/Math.cos(this.render_options.arrowhead_angle));let p,_,x,f,y,S;(this.render_options.draw_end_arrow||s)&&(p=g+Math.PI+this.render_options.arrowhead_angle,x=o+Math.cos(p)*u,f=r+Math.sin(p)*u,_=g+Math.PI-this.render_options.arrowhead_angle,y=o+Math.cos(_)*u,S=r+Math.sin(_)*u,bi(t,x,f,o,r,y,S)),(this.render_options.draw_start_arrow||s)&&(p=g+this.render_options.arrowhead_angle,x=n+Math.cos(p)*u,f=a+Math.sin(p)*u,_=g-this.render_options.arrowhead_angle,y=n+Math.cos(_)*u,S=a+Math.sin(_)*u,bi(t,x,f,n,a,y,S))}draw(){const t=this.checkContext();this.setRendered();const e=this.first_note,i=this.last_note,s=this.render_options;t.save(),this.applyLineStyle();let n={x:0,y:0},a={x:0,y:0};this.first_indices.forEach(((o,r)=>{const h=this.last_indices[r];n=e.getModifierStartXY(2,o),a=i.getModifierStartXY(1,h);const b=n.y>a.y;n.x+=e.getMetrics().modRightPx+s.padding_left,a.x-=i.getMetrics().modLeftPx+s.padding_right;const l=e.getGlyph().getWidth();e.getKeyProps()[o].displaced&&1===e.getStemDirection()&&(n.x+=l+s.padding_left);i.getKeyProps()[h].displaced&&-1===i.getStemDirection()&&(a.x-=l+s.padding_right),n.y+=b?-3:1,a.y+=b?2:0,this.drawArrowLine(t,n,a)})),t.restore();const o=t.measureText(this.text).width,r=s.text_justification;let h=0;if(r===li.TextJustification.LEFT)h=n.x;else if(r===li.TextJustification.CENTER){h=(a.x-n.x)/2+n.x-o/2}else r===li.TextJustification.RIGHT&&(h=a.x-o);let b=0;const l=s.text_position_vertical;return l===li.TextVerticalPosition.TOP?b=e.checkStave().getYForTopText():l===li.TextVerticalPosition.BOTTOM&&(b=e.checkStave().getYForBottomText(j.TEXT_HEIGHT_OFFSET_HACK)),t.save(),this.applyFontStyle(),t.fillText(this.text,h,b),t.restore(),this}}li.TEXT_FONT=Object.assign({},O.TEXT_FONT),li.TextVerticalPosition={TOP:1,BOTTOM:2},li.TextJustification=ne;class ci extends O{constructor(t={}){super(),this.setOptions(t),this.parts=[]}static get CATEGORY(){return u.System}setOptions(t={}){if(!t.factory)throw new p("NoFactory","System.setOptions(options) requires a factory.");this.factory=t.factory,this.options=Object.assign(Object.assign({factory:this.factory,x:10,y:10,width:500,spaceBetweenStaves:12,autoWidth:!1,noJustification:!1,debugFormatter:!1,formatIterations:0,noPadding:!1},t),{details:Object.assign({alpha:.5},t.details),formatOptions:Object.assign({},t.formatOptions)}),!1===this.options.noJustification&&void 0===t.width&&(this.options.autoWidth=!0)}setContext(t){return super.setContext(t),this.factory.setContext(t),this}addConnector(t="double"){return this.connector=this.factory.StaveConnector({top_stave:this.parts[0].stave,bottom_stave:this.parts[this.parts.length-1].stave,type:t}),this.connector}addStave(t){var e;const i=Object.assign({left_bar:!1},t.options),s=null!==(e=t.stave)&&void 0!==e?e:this.factory.Stave({x:this.options.x,y:this.options.y,width:this.options.width,options:i}),n=Object.assign(Object.assign({stave:s,spaceAbove:0,spaceBelow:0,debugNoteMetrics:!1,noJustification:!1},t),{options:i}),a=this.getContext();return n.voices.forEach((t=>t.setContext(a).setStave(s).getTickables().forEach((t=>t.setStave(s))))),this.parts.push(n),s}format(){const t=this.options.details;let e=0;const i=new Ne(t);this.formatter=i;let s=this.options.y,n=0,a=[],o=[];const r=[];this.parts.forEach((t=>{s+=t.stave.space(t.spaceAbove),t.stave.setY(s),i.joinVoices(t.voices),s+=t.stave.space(t.spaceBelow),s+=t.stave.space(this.options.spaceBetweenStaves),t.debugNoteMetrics&&(r.push({y:s,voice:t.voices[0]}),s+=15),a=a.concat(t.voices),o=o.concat(t.stave),n=Math.max(n,t.stave.getNoteStartX())})),this.parts.forEach((t=>t.stave.setNoteStartX(n))),this.options.autoWidth?(e=i.preCalculateMinTotalWidth(a),this.parts.forEach((t=>{t.stave.setWidth(e+ve.rightPadding+(n-this.options.x))}))):e=this.options.noPadding?this.options.width-(n-this.options.x):this.options.width-(n-this.options.x)-ve.defaultPadding,i.format(a,this.options.noJustification?0:e,this.options.formatOptions),i.postFormat();for(let e=0;e{e.voice.getTickables().forEach((i=>St.plotMetrics(t,i,e.y)))}))}}class di extends Lt{constructor(t,e=!1){super(t),this.glyphs=[],this.greatestString=()=>this.positions.map((t=>t.str)).reduce(((t,e)=>t>e?t:e)),this.leastString=()=>this.positions.map((t=>t.str)).reduce(((t,e)=>tthis.width}setStave(t){super.setStave(t);const e=t.getContext();if(this.setContext(e),e){this.width=0;for(let t=0;ti.width),this.width=Math.max(i.getWidth(),this.width)}this.glyph.getWidth=()=>this.width}const i=this.positions.map((({str:e})=>t.getYForLine(Number(e)-1)));return this.setYs(i),this.stem&&this.stem.setYBounds(this.getStemY(),this.getStemY()),this}getPositions(){return this.positions}getModifierStartXY(t,e){if(!this.preFormatted)throw new p("UnformattedNote","Can't call GetModifierStartXY on an unformatted note");if(0===this.ys.length)throw new p("NoYValues","No Y-Values calculated for this note.");let i=0;if(t===Z.Position.LEFT)i=-2;else if(t===Z.Position.RIGHT)i=this.width+2;else if(t===Z.Position.BELOW||t===Z.Position.ABOVE){i=this.glyph.getWidth()/2}return{x:this.getAbsoluteX()+i,y:this.ys[e]}}getLineForRest(){return Number(this.positions[0].str)}preFormat(){this.preFormatted||(this.modifierContext&&this.modifierContext.preFormat(),this.preFormatted=!0)}getStemX(){return this.getCenterGlyphX()}getStemY(){const t=this.checkStave().getNumLines()-.5,e=st.UP===this.stem_direction?-.5:t;return this.checkStave().getYForLine(e)}getStemExtents(){return this.checkStem().getExtents()}drawFlag(){var t;const{beam:e,glyph:i,render_options:{draw_stem:s}}=this,n=this.checkContext(),a=null==e&&s;if(i.flag&&a){const e=this.getStemX(),i=this.getStemDirection()===st.DOWN?this.getStemY()-this.checkStem().getHeight()-(this.glyph?this.glyph.stem_down_extension:0):this.getStemY()-this.checkStem().getHeight()+(this.glyph?this.glyph.stem_up_extension:0);null===(t=this.flag)||void 0===t||t.render(n,e,i)}}drawModifiers(){this.modifiers.forEach((t=>{r(t)&&!this.render_options.draw_dots||(t.setContext(this.getContext()),t.drawWithStyle())}))}drawStemThrough(){const t=this.getStemX(),e=this.getStemY(),i=this.checkContext(),s=this.render_options.draw_stem,n=this.render_options.draw_stem_through_stave;if(s&&n){const s=function(t,e,i,s){const n=1!==s,a=-1!==s,o=i.getSpacingBetweenLines(),r=i.getNumLines(),h=[];return e.forEach((e=>{const b=e.indexOf(r)>-1,l=e.indexOf(1)>-1;if(n&&l||a&&b)return;1===e.length&&e.push(e[0]);const c=[];e.forEach(((e,n,a)=>{const h=1===e,b=e===r;let l=i.getYForLine(e-1);0!==n||h?n!==a.length-1||b||(l+=o/2-1):l-=o/2-1,c.push(l),1===s&&h?c.push(t-2):-1===s&&b&&c.push(t+2)})),h.push(c.sort(((t,e)=>t-e)))})),h}(e,function(t,e){const i=[];let s=[];for(let n=1;n<=t;n++)e.indexOf(n)>-1?(i.push(s),s=[]):s.push(n);return s.length>0&&i.push(s),i}(this.checkStave().getNumLines(),this.positions.map((t=>Number(t.str)))),this.checkStave(),this.getStemDirection());i.save(),i.setLineWidth(st.WIDTH),s.forEach((e=>{0!==e.length&&(i.beginPath(),i.moveTo(t,e[0]),i.lineTo(t,e[e.length-1]),i.stroke(),i.closePath())})),i.restore()}}drawPositions(){const t=this.checkContext(),e=this.getAbsoluteX(),i=this.ys;for(let s=0;s{const i=xi.GLYPHS[e];if(!i)throw new p("Invalid dynamics character: "+e);const s=x(this.render_options.glyph_font_size),n=new Q(i.code,s,{category:"textNote"});this.glyphs.push(n),t+=i.width})),this.setWidth(t),this.preFormatted=!0,this}draw(){this.setRendered();const t=this.getAbsoluteX(),e=this.checkStave().getYForLine(this.line+-3);_i("Rendering Dynamics: ",this.sequence);let i=t;this.glyphs.forEach(((t,s)=>{const n=this.sequence[s];t.render(this.checkContext(),i,e),i+=xi.GLYPHS[n].width}))}}xi.DEBUG=!1;class fi extends St{constructor(t,e){super({duration:"b"});const i=new Se(t,e);this.timeSigInfo=i.getInfo(),this.setWidth(this.timeSigInfo.glyph.getMetrics().width),this.ignore_ticks=!0}static get CATEGORY(){return u.TimeSigNote}addToModifierContext(t){return this}preFormat(){return this.preFormatted=!0,this}draw(){const t=this.checkStave(),e=this.checkContext();this.setRendered(),this.timeSigInfo.glyph.getContext()||this.timeSigInfo.glyph.setContext(e),this.timeSigInfo.glyph.setStave(t),this.timeSigInfo.glyph.setYShift(t.getYForLine(2)-t.getYForGlyphs()),this.timeSigInfo.glyph.renderToStave(this.getAbsoluteX())}}class yi extends O{constructor(t){super(),t.start&&(this.start=t.start),t.stop&&(this.stop=t.stop),this.line=1,this.render_options={harsh:!1,wave_height:6,wave_width:4,wave_girth:2,vibrato_width:0}}static get CATEGORY(){return u.VibratoBracket}setLine(t){return this.line=t,this}setHarsh(t){return this.render_options.harsh=t,this}draw(){const t=this.checkContext();this.setRendered();const e=this.start&&this.start.checkStave().getYForTopText(this.line)||this.stop&&this.stop.checkStave().getYForTopText(this.line)||0,i=this.start&&this.start.getAbsoluteX()||this.stop&&this.stop.checkStave().getTieStartX()||0,s=this.stop&&this.stop.getAbsoluteX()-this.stop.getWidth()-5||this.start&&this.start.checkStave().getTieEndX()-10||0;this.render_options.vibrato_width=s-i,function(...t){yi.DEBUG&&f("Vex.Flow.VibratoBracket",t)}("Rendering VibratoBracket: start_x:",i,"stop_x:",s,"y:",e),be.renderVibrato(t,i,e,this.render_options)}}function Si(...t){Ti.DEBUG&&f("Vex.Flow.Factory",t)}yi.DEBUG=!1;class Ti{constructor(t={}){Si("New factory: ",t),this.options={stave:{space:10},renderer:{elementId:"",width:500,height:200,background:"#FFF"},font:Ti.TEXT_FONT},this.setOptions(t)}static newFromElementId(t,e=500,i=200){return new Ti({renderer:{elementId:t,width:e,height:i}})}reset(){this.renderQ=[],this.systems=[],this.staves=[],this.voices=[],this.stave=void 0}setOptions(t){this.options=Object.assign(Object.assign({},this.options),t),this.initRenderer(),this.reset()}initRenderer(){const{elementId:t,width:e,height:i,background:s}=this.options.renderer;if(null==t)return;if(""==t)throw Si(this),new p("renderer.elementId not set in FactoryOptions");let n=this.options.renderer.backend;if(void 0===n){n=$t(document.getElementById(t))?oe.Backends.CANVAS:oe.Backends.SVG}this.context=oe.buildContext(t,n,e,i,s)}getContext(){return this.context}setContext(t){return this.context=t,this}getStave(){return this.stave}getVoices(){return this.voices}Stave(t){const e=this.options.stave.space,i=Object.assign({x:0,y:0,width:this.options.renderer.width-1*e,options:{spacing_between_lines_px:1*e}},t),s=new ve(i.x,i.y,i.width,i.options);return this.staves.push(s),s.setContext(this.context),this.stave=s,s}TabStave(t){const e=this.options.stave.space,i=Object.assign({x:0,y:0,width:this.options.renderer.width-1*e,options:{spacing_between_lines_px:1.3*e}},t),s=new mi(i.x,i.y,i.width,i.options);return this.staves.push(s),s.setContext(this.context),this.stave=s,s}StaveNote(t){const e=new It(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}GlyphNote(t,e,i){const s=new ti(t,e,i);return this.stave&&s.setStave(this.stave),s.setContext(this.context),this.renderQ.push(s),s}RepeatNote(t,e,i){const s=new hi(t,e,i);return this.stave&&s.setStave(this.stave),s.setContext(this.context),this.renderQ.push(s),s}GhostNote(t){const e=new Ze(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}TextNote(t){const e=new _e(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}BarNote(t={}){const e=new Pt(t.type);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}ClefNote(t){const e=Object.assign({type:"treble",options:{size:"default",annotation:void 0}},t),i=new Le(e.type,e.options.size,e.options.annotation);return this.stave&&i.setStave(this.stave),i.setContext(this.context),this.renderQ.push(i),i}TimeSigNote(t){const e=Object.assign({time:"4/4"},t),i=new fi(e.time);return this.stave&&i.setStave(this.stave),i.setContext(this.context),this.renderQ.push(i),i}KeySigNote(t){const e=new ii(t.key,t.cancelKey,t.alterKey);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}TabNote(t){const e=new di(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}GraceNote(t){const e=new ei(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),e}GraceNoteGroup(t){const e=new Ht(t.notes,t.slur);return e.setContext(this.context),e}Accidental(t){const e=new it(t.type);return e.setContext(this.context),e}Annotation(t){const e=Object.assign({text:"p",hJustify:ht.CENTER,vJustify:bt.BOTTOM},t),i=new lt(e.text);return i.setJustification(e.hJustify),i.setVerticalJustification(e.vJustify),i.setFont(e.font),i.setContext(this.context),i}ChordSymbol(t){const e=Object.assign({vJustify:"top",hJustify:"center",kerning:!0,reportWidth:!0},t),i=new Bt;return i.setHorizontal(e.hJustify),i.setVertical(e.vJustify),i.setEnableKerning(e.kerning),i.setReportWidth(e.reportWidth),"string"==typeof e.fontFamily&&"number"==typeof e.fontSize?"string"==typeof e.fontWeight?i.setFont(e.fontFamily,e.fontSize,e.fontWeight):i.setFont(e.fontFamily,e.fontSize,""):"number"==typeof e.fontSize&&i.setFontSize(e.fontSize),i.setContext(this.context),i}Articulation(t){const e=Object.assign({type:"a.",position:"above"},t),i=new _t(e.type);return i.setPosition(e.position),i.setContext(this.context),i}Ornament(t,e){const i=Object.assign({type:t,position:0,accidental:""},e),s=new Vt(t);return s.setPosition(i.position),i.upperAccidental&&s.setUpperAccidental(i.upperAccidental),i.lowerAccidental&&s.setLowerAccidental(i.lowerAccidental),void 0!==i.delayed&&s.setDelayed(i.delayed),s.setContext(this.context),s}TextDynamics(t){const e=Object.assign({text:"p",duration:"q",dots:0,line:0},t),i=new xi({text:e.text,line:e.line,duration:e.duration,dots:e.dots});return this.stave&&i.setStave(this.stave),i.setContext(this.context),this.renderQ.push(i),i}Fingering(t){const e=Object.assign({number:"0",position:"left"},t),i=new Rt(e.number);return i.setPosition(e.position),i.setContext(this.context),i}StringNumber(t,e=!0){const i=new re(t.number);return i.setPosition(t.position),i.setContext(this.context),i.setDrawCircle(e),i}TickContext(){return new jt}ModifierContext(){return new ce}MultiMeasureRest(t){const e=x(t.number_of_measures,"NoNumberOfMeasures"),i=new ni(e,t);return i.setContext(this.context),this.renderQ.push(i),i}Voice(t){const e=Object.assign({time:"4/4"},t),i=new Yt(e.time);return this.voices.push(i),i}StaveConnector(t){const e=new Ce(t.top_stave,t.bottom_stave);return e.setType(t.type).setContext(this.context),this.renderQ.push(e),e}Formatter(t){return new Ne(t)}Tuplet(t){const e=Object.assign({notes:[],options:{}},t),i=new Ae(e.notes,e.options).setContext(this.context);return this.renderQ.push(i),i}Beam(t){var e,i,s,n,a;const o=new Oe(t.notes,null===(e=t.options)||void 0===e?void 0:e.autoStem).setContext(this.context);return o.breakSecondaryAt(null!==(s=null===(i=t.options)||void 0===i?void 0:i.secondaryBeamBreaks)&&void 0!==s?s:[]),(null===(n=t.options)||void 0===n?void 0:n.partialBeamDirections)&&Object.entries(null===(a=t.options)||void 0===a?void 0:a.partialBeamDirections).forEach((([t,e])=>{o.setPartialBeamSideAt(Number(t),e)})),this.renderQ.push(o),o}Curve(t){const e=new ze(t.from,t.to,t.options).setContext(this.context);return this.renderQ.push(e),e}StaveTie(t){var e;const i=new zt({first_note:t.from,last_note:t.to,first_indices:t.first_indices,last_indices:t.last_indices},t.text);return(null===(e=t.options)||void 0===e?void 0:e.direction)&&i.setDirection(t.options.direction),i.setContext(this.context),this.renderQ.push(i),i}StaveLine(t){var e,i;const s=new li({first_note:t.from,last_note:t.to,first_indices:t.first_indices,last_indices:t.last_indices});return(null===(e=t.options)||void 0===e?void 0:e.text)&&s.setText(t.options.text),(null===(i=t.options)||void 0===i?void 0:i.font)&&s.setFont(t.options.font),s.setContext(this.context),this.renderQ.push(s),s}VibratoBracket(t){const e=new yi({start:t.from,stop:t.to});return t.options.line&&e.setLine(t.options.line),t.options.harsh&&e.setHarsh(t.options.harsh),e.setContext(this.context),this.renderQ.push(e),e}TextBracket(t){const e=new pi({start:t.from,stop:t.to,text:t.text,superscript:t.options.superscript,position:t.options.position});return t.options.line&&e.setLine(t.options.line),t.options.font&&e.setFont(t.options.font),e.setContext(this.context),this.renderQ.push(e),e}System(t={}){t.factory=this;const e=new ci(t).setContext(this.context);return this.systems.push(e),e}EasyScore(t={}){return t.factory=this,new Je(t)}PedalMarking(t){const e=Object.assign({notes:[],options:{style:"mixed"}},t),i=new oi(e.notes);return i.setType(oi.typeString[e.options.style]),i.setContext(this.context),this.renderQ.push(i),i}NoteSubGroup(t){const e=Object.assign({notes:[]},t),i=new Xt(e.notes);return i.setContext(this.context),i}draw(){const t=this.context;this.systems.forEach((e=>e.setContext(t).format())),this.staves.forEach((e=>e.setContext(t).draw())),this.voices.forEach((e=>e.setContext(t).draw())),this.renderQ.forEach((e=>{e.isRendered()||e.setContext(t).draw()})),this.systems.forEach((e=>e.setContext(t).draw())),this.reset()}}Ti.DEBUG=!1,Ti.TEXT_FONT=Object.assign({},O.TEXT_FONT);class wi extends di{static get CATEGORY(){return u.GraceTabNote}constructor(t){super(t,!1),this.render_options=Object.assign(Object.assign({},this.render_options),{y_shift:.3,scale:.6,font:`7.5pt ${B.SANS_SERIF}`}),this.updateWidth()}}class vi{constructor(t){this.music=new tt,this.setKey(t)}setKey(t){return this.key=t,this.reset(),this}getKey(){return this.key}reset(){this.keyParts=this.music.getKeyParts(this.key),this.keyString=this.keyParts.root,this.keyParts.accidental&&(this.keyString+=this.keyParts.accidental);if(!tt.scaleTypes[this.keyParts.type])throw new p("BadArguments",`Unsupported key type: ${this.key}`);this.scale=this.music.getScaleTones(this.music.getNoteValue(this.keyString),tt.scaleTypes[this.keyParts.type]),this.scaleMap={},this.scaleMapByValue={},this.originalScaleMapByValue={};const t=tt.root_indices[this.keyParts.root];for(let e=0;es?Ci.SLIDE_DOWN:Ci.SLIDE_UP}this.direction=e,this.render_options.cp1=11,this.render_options.cp2=14,this.render_options.y_shift=.5,this.resetFont()}static get CATEGORY(){return u.TabSlide}static get SLIDE_UP(){return 1}static get SLIDE_DOWN(){return-1}static createSlideUp(t){return new Ci(t,Ci.SLIDE_UP)}static createSlideDown(t){return new Ci(t,Ci.SLIDE_DOWN)}renderTie(t){if(0===t.first_ys.length||0===t.last_ys.length)throw new p("BadArguments","No Y-values to render");const e=this.checkContext(),i=t.first_x_px,s=t.first_ys,n=t.last_x_px,a=t.direction;if(a!==Ci.SLIDE_UP&&a!==Ci.SLIDE_DOWN)throw new p("BadSlide","Invalid slide direction");const o=this.notes.first_indices;for(let t=0;tthis.tuningValues.length)throw new p("BadArguments",`String number must be between 1 and ${this.tuningValues.length}:${t}`);return this.tuningValues[e-1]}getValueForFret(t,e){const i=this.getValueForString(e),s=Number(t);if(s<0)throw new p("BadArguments",`Fret number must be 0 or higher: ${t}`);return i+s}getNoteForFret(t,e){const i=this.getValueForFret(t,e),s=Math.floor(i/12),n=i%12;return`${j.integerToNote(n)}/${s}`}}var Ni=function(t,e,i,s){return new(i||(i=Promise))((function(n,a){function o(t){try{h(s.next(t))}catch(t){a(t)}}function r(t){try{h(s.throw(t))}catch(t){a(t)}}function h(t){var e;t.done?n(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(o,r)}h((s=s.apply(t,e||[])).next())}))};class Pi{static get BUILD(){return{VERSION:"4.1.0-alpha.0",ID:"847bc9014672858aedc7f8460384f51f98d6bd84",DATE:"2022-10-10T04:47:38.237Z"}}static setMusicFont(...t){const e=t.map((t=>B.load(t)));return j.MUSIC_FONT_STACK=e,Q.MUSIC_FONT_STACK=e.slice(),Q.CURRENT_CACHE_KEY=t.join(","),e}static fetchMusicFont(t,e){return Ni(this,void 0,void 0,(function*(){}))}static getMusicFont(){return j.MUSIC_FONT_STACK.map((t=>t.getName()))}static get RENDER_PRECISION_PLACES(){return j.RENDER_PRECISION_PLACES}static set RENDER_PRECISION_PLACES(t){j.RENDER_PRECISION_PLACES=t}static get SOFTMAX_FACTOR(){return j.SOFTMAX_FACTOR}static set SOFTMAX_FACTOR(t){j.SOFTMAX_FACTOR=t}static get NOTATION_FONT_SCALE(){return j.NOTATION_FONT_SCALE}static set NOTATION_FONT_SCALE(t){j.NOTATION_FONT_SCALE=t}static get TABLATURE_FONT_SCALE(){return j.TABLATURE_FONT_SCALE}static set TABLATURE_FONT_SCALE(t){j.TABLATURE_FONT_SCALE=t}static get RESOLUTION(){return j.RESOLUTION}static set RESOLUTION(t){j.RESOLUTION=t}static get SLASH_NOTEHEAD_WIDTH(){return j.SLASH_NOTEHEAD_WIDTH}static set SLASH_NOTEHEAD_WIDTH(t){j.SLASH_NOTEHEAD_WIDTH=t}static get STAVE_LINE_DISTANCE(){return j.STAVE_LINE_DISTANCE}static set STAVE_LINE_DISTANCE(t){j.STAVE_LINE_DISTANCE=t}static get STAVE_LINE_THICKNESS(){return j.STAVE_LINE_THICKNESS}static set STAVE_LINE_THICKNESS(t){j.STAVE_LINE_THICKNESS=t}static get STEM_HEIGHT(){return j.STEM_HEIGHT}static set STEM_HEIGHT(t){j.STEM_HEIGHT=t}static get STEM_WIDTH(){return j.STEM_WIDTH}static set STEM_WIDTH(t){j.STEM_WIDTH=t}static get TIME4_4(){return j.TIME4_4}static get accidentalMap(){return j.accidentalMap}static get unicode(){return j.unicode}static keySignature(t){return j.keySignature(t)}static hasKeySignature(t){return j.hasKeySignature(t)}static getKeySignatures(){return j.getKeySignatures()}static clefProperties(t){return j.clefProperties(t)}static keyProperties(t,e,i){return j.keyProperties(t,e,i)}static durationToTicks(t){return j.durationToTicks(t)}}Pi.Accidental=it,Pi.Annotation=lt,Pi.Articulation=_t,Pi.Barline=Nt,Pi.BarNote=Pt,Pi.Beam=Oe,Pi.Bend=At,Pi.BoundingBox=C,Pi.BoundingBoxComputation=k,Pi.CanvasContext=Jt,Pi.ChordSymbol=Bt,Pi.Clef=de,Pi.ClefNote=Le,Pi.Crescendo=We,Pi.Curve=ze,Pi.Dot=Ft,Pi.EasyScore=Je,Pi.Element=O,Pi.Factory=Ti,Pi.Font=B,Pi.Formatter=Ne,Pi.Fraction=v,Pi.FretHandFinger=Rt,Pi.GhostNote=Ze,Pi.Glyph=Q,Pi.GlyphNote=ti,Pi.GraceNote=ei,Pi.GraceNoteGroup=Ht,Pi.GraceTabNote=wi,Pi.KeyManager=vi,Pi.KeySignature=me,Pi.KeySigNote=ii,Pi.Modifier=Z,Pi.ModifierContext=ce,Pi.MultiMeasureRest=ni,Pi.Music=tt,Pi.Note=St,Pi.NoteHead=Ot,Pi.NoteSubGroup=Xt,Pi.Ornament=Vt,Pi.Parenthesis=Kt,Pi.Parser=Ye,Pi.PedalMarking=oi,Pi.Registry=R,Pi.RenderContext=xt,Pi.Renderer=oe,Pi.RepeatNote=hi,Pi.Repetition=ge,Pi.Stave=ve,Pi.StaveConnector=Ce,Pi.StaveHairpin=Ei,Pi.StaveLine=li,Pi.StaveModifier=Dt,Pi.StaveNote=It,Pi.StaveTempo=pe,Pi.StaveText=xe,Pi.StaveTie=zt,Pi.Stem=st,Pi.StringNumber=re,Pi.Stroke=he,Pi.SVGContext=ee,Pi.System=ci,Pi.TabNote=di,Pi.TabSlide=Ci,Pi.TabStave=mi,Pi.TabTie=Ut,Pi.TextBracket=pi,Pi.TextDynamics=xi,Pi.TextFormatter=rt,Pi.TextNote=_e,Pi.TickContext=jt,Pi.TimeSignature=Se,Pi.TimeSigNote=fi,Pi.Tremolo=ki,Pi.Tuning=Di,Pi.Tuplet=Ae,Pi.Vibrato=be,Pi.VibratoBracket=yi,Pi.Voice=Yt,Pi.Volta=fe,Pi.AnnotationHorizontalJustify=ht,Pi.AnnotationVerticalJustify=bt,Pi.ChordSymbolHorizontalJustify=vt,Pi.ChordSymbolVerticalJustify=Et,Pi.SymbolTypes=Ct,Pi.SymbolModifiers=kt,Pi.CurvePosition=Ie,Pi.FontWeight=D,Pi.FontStyle=N,Pi.ModifierPosition=$,Pi.RendererBackends=ie,Pi.RendererLineEndType=se,Pi.BarlineType=wt,Pi.StaveModifierPosition=Tt,Pi.VoltaType=ae,Pi.TextBracketPosition=ui,Pi.TextJustification=ne,Pi.VoiceMode=Gt;const Ai={resolution:1e3,fontFamily:"VexFlowCustom",glyphs:{noteheadSquareWhite:{x_min:0,x_max:430.75,ha:386,o:"m 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 l 50 150 l 380 150 l 380 -150 l 50 -150 l 50 150 "},noteheadSquareBlack:{x_min:0,x_max:430.75,ha:386,o:"m 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 "},accidentalBuyukMucennebFlat:{x_min:-171.5,x_max:251.8125,ha:257,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 "},accidentalBakiyeFlat:{x_min:-176.9375,x_max:251.8125,ha:257,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 "},accidentalKucukMucennebSharp:{x_min:-1.359375,x_max:255.890625,ha:261,o:"m 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 "},accidentalKoron:{x_min:-20,x_max:320,ha:257,o:"m -8 200 b -8 210 8 200 16 200 l 20 148 -199 l 23 -615 b 0 -629 9 -629 6 -629 l -21 -612 l -21 -201 l -21 216 l -20 200 m 16 200 l 310 0 l 240 0 l 16 140 l 16 -120 l 240 0 l 310 0 l 16 -200 "},accidentalSori:{x_min:-10.890625,x_max:299.4375,ha:294,o:"m 44 174 b 51 174 47 174 49 174 b 68 173 55 174 61 174 l 287 112 l 551 40 b 615 20 617 22 609 23 b 626 0 622 16 626 8 b 615 -22 626 -9 622 -18 b 613 -23 613 -23 613 -23 b 613 -23 613 -23 613 -23 b 287 -113 613 -24 597 -29 l 68 -174 b 53 -176 61 -176 57 -176 b 39 -172 47 -176 43 -174 b 27 -151 31 -167 27 -159 b 39 -129 27 -141 31 -133 b 230 -74 43 -124 20 -131 l 370 -36 l 468 -9 b 498 0 484 -4 498 -1 b 468 8 498 0 484 2 l 370 34 l 230 73 b 40 126 28 129 43 124 b 27 149 31 131 27 140 b 44 174 27 161 34 170 m 205 110 l 205 300 b 205 330 245 330 245 300 l 245 300 l 245 -300 b 245 -330 205 -330 205 -300 l 205 -300 l 205 110 l 345 90 m 345 90 l 345 330 b 345 360 385 360 385 330 l 385 330 l 385 -270 b 385 -300 345 -300 345 -270 l 345 -270 l 345 90 "},vexAccidentalMicrotonal2:{x_min:-1.359375,x_max:386.5625,ha:394,o:"m 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 "},vexAccidentalMicrotonal3:{x_min:0,x_max:430.75,ha:360,o:"m -146 537 b -138 538 -143 538 -141 538 b -118 525 -129 538 -121 533 b -117 390 -117 522 -117 521 b -115 259 -117 268 -117 259 b -115 259 -115 259 -115 259 b -59 272 -104 263 -62 272 b -39 259 -50 272 -42 267 b -37 209 -38 257 -37 233 b -39 159 -37 185 -38 162 b -85 138 -43 149 -44 149 l -117 131 l -117 21 b -115 -88 -117 -80 -117 -88 b -115 -88 -115 -88 -115 -88 b -59 -75 -104 -84 -62 -75 b -44 -81 -52 -75 -48 -77 b -38 -124 -38 -87 -38 -85 b -38 -138 -38 -124 -38 -138 b -38 -152 -38 -138 -38 -152 b -44 -195 -38 -191 -38 -190 b -85 -209 -48 -200 -48 -200 l -117 -217 l -117 -349 b -118 -486 -117 -481 -117 -482 b -138 -499 -121 -494 -129 -499 b -153 -493 -143 -499 -149 -497 b -159 -415 -158 -487 -159 -496 b -159 -355 -159 -398 -159 -379 b -159 -227 -159 -284 -159 -227 b -205 -238 -159 -227 -180 -232 b -250 -249 -230 -244 -250 -249 b -251 -386 -251 -249 -251 -311 b -252 -525 -251 -521 -251 -522 b -272 -538 -255 -534 -264 -538 b -287 -532 -277 -538 -283 -536 b -293 -452 -292 -527 -293 -536 b -293 -391 -293 -436 -293 -415 b -294 -260 -293 -269 -293 -260 b -294 -260 -294 -260 -294 -260 b -348 -272 -306 -264 -345 -272 b -368 -259 -357 -272 -365 -267 b -369 -209 -369 -257 -369 -233 b -368 -159 -369 -185 -369 -162 b -323 -139 -364 -149 -362 -148 l -293 -131 l -293 -22 b -294 87 -293 80 -293 87 b -294 87 -294 87 -294 87 b -348 75 -306 84 -345 75 b -368 88 -357 75 -365 80 b -369 138 -369 91 -369 114 b -368 188 -369 162 -369 186 b -323 209 -364 198 -362 199 l -293 216 l -293 349 b -292 486 -293 481 -293 482 b -272 499 -288 494 -280 499 b -257 493 -266 499 -261 497 b -251 414 -251 487 -251 496 b -251 354 -251 398 -251 378 b -251 226 -251 284 -251 226 b -205 238 -250 226 -230 231 b -159 249 -180 244 -159 249 b -159 385 -159 249 -159 310 b -157 525 -159 521 -159 522 b -146 537 -156 530 -151 535 z m -159 11 b -159 120 -159 98 -159 120 l -159 120 b -175 116 -160 120 -167 119 b -221 105 -184 114 -204 109 l -251 98 l -251 -12 b -251 -121 -251 -72 -251 -121 b -205 -110 -250 -121 -230 -116 b -159 -99 -180 -104 -159 -99 b -159 11 -159 -99 -159 -49 z m 89 517 b 97 519 92 518 94 519 b 117 505 106 519 114 513 b 119 376 119 502 119 501 l 119 249 l 145 258 b 176 267 169 266 172 267 b 177 267 176 267 177 267 b 196 255 186 267 192 263 l 197 252 l 197 205 b 197 181 197 195 197 187 b 193 149 197 153 197 153 b 152 131 190 144 187 143 l 119 120 l 119 10 b 119 -100 119 -62 119 -100 b 145 -91 120 -100 131 -96 b 173 -82 159 -86 171 -82 b 176 -81 174 -81 175 -81 b 196 -94 185 -81 193 -87 b 198 -151 197 -97 198 -125 b 197 -194 198 -172 197 -192 b 153 -218 193 -203 192 -204 l 119 -230 l 119 -367 l 118 -504 l 117 -507 b 97 -519 113 -514 105 -519 b 82 -512 92 -519 87 -517 b 76 -434 77 -507 76 -516 b 76 -374 76 -418 76 -398 b 76 -245 76 -303 76 -245 b 52 -254 76 -245 65 -249 b 19 -263 34 -260 25 -263 b 6 -257 13 -263 10 -261 b 0 -214 0 -251 0 -253 b 0 -200 0 -210 0 -205 b 0 -188 0 -196 0 -192 b 6 -143 0 -147 0 -149 b 46 -126 10 -139 10 -139 l 76 -115 l 76 -5 b 76 106 76 56 76 106 b 51 98 76 106 64 102 b 18 89 34 92 25 89 b 6 95 13 89 10 91 b 0 139 0 101 0 99 b 0 153 0 143 0 148 b 0 179 0 163 0 172 b 44 225 0 215 3 211 l 76 236 l 76 369 b 78 505 76 501 76 502 b 89 517 80 510 85 515 z "},vexAccidentalMicrotonal4:{x_min:0,x_max:430.75,ha:360,o:"m 283 633 b 291 634 286 634 289 634 b 311 621 300 634 308 629 b 313 505 313 618 313 617 b 313 393 313 443 313 393 b 378 425 313 393 343 407 l 443 458 l 448 458 b 449 458 449 458 449 458 b 471 437 462 458 471 448 b 469 429 471 434 470 432 b 387 382 466 421 469 423 l 313 344 l 313 247 l 313 150 l 315 152 b 433 201 353 184 394 201 b 479 193 448 201 464 198 b 549 86 524 177 549 135 b 526 1 549 59 541 29 b 395 -143 504 -39 475 -71 b 316 -214 351 -182 341 -191 b 292 -229 302 -228 300 -229 b 272 -216 283 -229 275 -224 b 271 55 271 -212 271 -212 b 270 323 271 203 270 323 b 205 291 270 323 241 308 l 140 258 l 135 258 b 134 258 135 258 134 258 b 112 279 121 258 112 267 b 114 287 112 281 113 284 b 196 334 117 295 114 293 l 271 371 l 271 495 b 272 621 271 617 271 618 b 283 633 274 626 279 631 z m 404 133 b 391 134 400 134 395 134 b 384 134 388 134 386 134 b 318 88 358 130 335 114 l 313 81 l 313 -37 l 313 -156 l 316 -152 b 439 83 391 -71 439 22 l 439 84 b 404 133 439 115 430 128 z m -8 633 l -8 633 b 0 634 -6 634 -3 634 b 20 621 8 634 17 629 b 21 384 21 618 21 617 l 21 150 l 24 152 b 141 201 62 184 102 201 b 187 193 157 201 172 198 b 257 86 232 177 257 135 b 234 1 257 59 250 29 b 103 -143 212 -39 183 -71 b 24 -214 60 -182 49 -191 b 0 -229 10 -228 8 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 203 l -21 618 l -20 621 b -8 633 -18 626 -13 631 z m 113 133 l 113 133 b 99 134 109 134 103 134 b 93 134 97 134 94 134 b 26 88 66 130 43 114 l 21 81 l 21 -37 l 21 -156 l 25 -152 b 148 83 99 -71 148 22 l 148 84 b 113 133 148 115 138 128 z "},vexNoteHeadRectBlack:{x_min:0,x_max:430.75,ha:360,o:"m 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 "},vexNoteHeadRectWhite:{x_min:0,x_max:430.75,ha:360,o:"m 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 l 50 100 l 380 100 l 380 -100 l 50 -100 l 50 100"}}},Mi={name:"VexFlowCustom",smufl:!1,glyphs:{}};const Bi={glyphs:{bracketTop:{x_min:0,x_max:508,y_min:0,y_max:370,ha:370,o:"m 22 0 b 122 0 55 1 89 0 l 157 0 b 713 376 425 0 622 137 b 732 467 724 406 732 436 b 726 514 732 482 730 498 b 711 533 723 528 719 533 b 693 526 707 533 700 530 b 674 498 683 520 678 508 b 635 406 662 467 652 435 b 310 164 560 281 458 193 b 154 151 258 154 206 151 b 39 154 117 151 78 154 b 1 120 17 154 4 145 b 0 84 0 108 0 96 b 0 20 0 63 1 40 b 22 0 0 4 7 0 z"},bracketBottom:{x_min:0,x_max:496,y_min:-393,y_max:0,ha:393,o:"m 696 -566 b 711 -539 713 -566 708 -549 b 714 -521 713 -533 714 -527 b 713 -508 714 -517 713 -513 b 661 -327 706 -445 688 -384 b 392 -42 603 -203 513 -109 b 206 0 331 -7 266 0 b 160 -1 190 0 174 -1 b 26 -1 107 -1 66 -3 b 0 -19 12 -1 0 -4 l 0 -23 b 3 -50 1 -32 3 -42 b 1 -86 3 -62 1 -73 b 4 -118 1 -96 1 -108 b 45 -151 10 -145 23 -154 b 180 -143 89 -144 135 -145 b 621 -419 392 -135 523 -236 b 662 -539 641 -456 655 -497 b 696 -566 667 -557 680 -566 z"},barlineTick:{x_min:0,x_max:56.036101509664164,y_min:876.905249806889,y_max:1121.5430338167066,ha:244.63778400981766,o:"m 42 1263 b 66 1287 62 1261 66 1272 b 81 1583 65 1387 72 1485 b 35 1614 82 1610 53 1610 b 14 1591 17 1619 16 1604 b 0 1408 7 1525 0 1459 l 0 1292 b 42 1263 1 1263 23 1266 z"},breathMarkTick:{x_min:0,x_max:568,y_min:0,y_max:621,ha:621,o:"m 258 0 b 278 39 276 0 274 24 b 279 56 279 45 279 50 l 279 73 b 278 117 279 88 278 102 b 281 148 278 127 279 138 b 536 600 312 330 387 487 b 744 719 600 651 670 690 b 815 779 775 730 808 740 b 818 824 818 793 818 808 b 815 868 818 838 818 852 b 796 894 814 881 808 894 b 779 888 791 894 786 893 b 719 864 760 878 739 871 b 372 602 580 806 459 724 b 229 252 298 498 251 383 b 220 268 225 262 222 264 b 209 302 217 279 213 291 b 75 527 181 387 143 467 b 16 563 58 543 39 573 b 0 539 3 557 0 549 b 12 492 0 524 9 507 b 56 400 19 459 22 425 b 163 269 104 367 138 323 b 238 36 197 194 216 115 b 258 0 242 22 243 0 z"},segno:{x_min:0,x_max:798,y_min:-65,y_max:806,ha:871,o:"m 16 -94 b 66 -69 39 -92 53 -85 b 177 59 102 -26 138 17 b 543 456 298 192 420 324 b 726 300 615 420 680 373 b 753 217 744 271 753 243 b 655 112 753 170 719 131 b 599 104 636 107 618 104 b 461 173 544 104 495 128 b 432 190 454 183 444 190 b 409 179 425 190 418 187 b 359 118 390 160 373 141 b 341 72 347 101 341 86 b 373 24 341 56 351 40 b 409 6 384 17 396 10 b 550 -13 454 -12 501 -14 b 599 -6 566 -12 583 -10 b 864 213 720 27 806 104 b 886 300 878 242 886 271 b 857 395 886 331 877 363 b 799 467 840 420 821 445 b 648 572 755 513 704 546 b 1110 1083 802 743 955 914 b 1140 1129 1123 1097 1136 1110 b 1149 1148 1142 1135 1149 1142 b 1145 1153 1149 1149 1148 1152 b 1123 1161 1139 1158 1130 1161 b 1109 1156 1119 1161 1113 1159 b 1089 1138 1102 1151 1094 1145 b 946 988 1040 1089 989 1041 b 595 602 834 855 711 732 l 590 598 l 549 615 b 432 793 462 647 432 723 b 534 888 432 851 474 888 b 671 834 588 888 631 864 b 710 818 684 824 696 818 b 724 821 714 818 719 819 b 809 883 757 834 788 852 b 816 901 814 890 816 896 b 802 923 816 910 812 916 b 706 984 770 945 742 971 b 593 1011 668 998 631 1011 b 516 991 567 1011 541 1005 b 333 799 433 949 380 876 b 302 693 312 765 302 729 b 330 589 302 658 311 624 b 469 488 360 533 415 511 b 485 482 475 487 480 485 b 266 249 412 405 338 327 b 121 88 217 196 170 141 b 9 -65 78 40 37 -7 b 0 -85 4 -72 0 -79 b 16 -94 0 -91 4 -94 z m 861 536 b 927 575 890 539 909 557 b 965 628 952 598 965 613 b 926 680 965 644 952 658 b 865 713 900 701 883 713 b 805 667 845 713 828 698 b 768 611 791 649 770 631 b 812 564 766 589 798 582 b 861 536 824 550 840 537 z m 251 350 b 363 436 285 348 353 403 b 354 456 366 448 360 452 b 271 518 327 477 298 497 b 243 528 261 526 252 528 b 210 513 232 528 222 523 b 157 454 190 494 176 472 b 141 428 147 444 141 436 b 158 406 141 420 147 413 b 216 361 180 393 197 376 b 245 350 225 356 235 350 z"},coda:{x_min:0,x_max:1380,y_min:-196,y_max:1037,ha:1233,o:"m 1028 -282 b 1057 -245 1045 -282 1053 -261 b 1060 -203 1060 -232 1060 -217 b 1063 9 1060 -132 1061 -62 b 1390 194 1192 22 1303 81 b 1531 543 1467 298 1512 415 b 1532 556 1531 547 1532 552 b 1904 559 1656 557 1780 559 b 1950 582 1920 559 1941 569 b 1987 674 1970 609 1987 638 b 1984 698 1987 681 1986 690 b 1950 700 1973 698 1961 700 l 1941 700 l 1545 696 b 1535 776 1545 723 1541 749 b 1103 1113 1477 996 1326 1107 b 1080 1115 1096 1115 1087 1115 b 1081 1322 1080 1184 1080 1253 b 1079 1467 1083 1371 1081 1418 b 1061 1493 1079 1476 1080 1493 l 1060 1493 b 1028 1467 1044 1490 1031 1485 b 1020 1403 1025 1446 1020 1424 b 1017 1110 1020 1305 1018 1208 l 962 1106 b 569 914 808 1087 671 1035 b 451 683 510 844 472 766 l 161 678 b 118 680 148 678 132 680 b 79 670 101 680 86 678 b 0 544 48 636 29 592 l 37 544 l 429 549 b 428 518 428 539 428 528 b 488 285 428 435 458 360 b 681 81 526 192 593 124 b 946 9 763 40 854 19 b 1008 6 966 7 988 6 b 1005 -137 1008 -42 1005 -89 b 1012 -243 1005 -173 1005 -209 b 1028 -282 1015 -258 1011 -282 z m 1074 690 b 1079 935 1077 772 1077 852 b 1326 855 1166 932 1250 909 b 1446 694 1385 814 1426 759 b 1269 693 1387 694 1328 693 b 1074 690 1204 693 1139 691 z m 577 684 b 766 874 618 763 678 828 b 989 932 837 912 913 923 b 1015 933 998 932 1007 933 b 1014 822 1015 896 1014 860 b 1011 688 1012 791 1012 743 z m 1067 184 b 1071 553 1070 307 1068 429 b 1439 556 1194 553 1316 554 b 1437 554 1439 554 1437 554 b 1341 337 1413 478 1387 402 b 1119 192 1286 261 1211 212 b 1067 184 1102 189 1084 186 z m 1008 180 b 660 264 886 181 770 212 b 524 471 570 305 524 374 b 528 524 524 488 526 505 l 533 549 b 792 552 619 550 706 550 b 1009 553 865 553 937 552 b 1008 180 1009 428 1008 288 z"},gClef:{x_min:0,x_max:664,y_min:-559,y_max:1009,ha:1568,o:"m 343 -805 b 366 -801 350 -805 357 -804 b 409 -773 383 -795 397 -786 b 582 -328 528 -648 577 -497 b 583 -294 582 -315 583 -294 b 612 -279 583 -294 603 -282 b 747 -197 660 -256 706 -230 b 949 143 857 -109 920 10 b 956 206 955 164 956 186 b 791 384 956 297 906 363 b 704 393 762 390 733 393 b 498 336 632 393 563 374 b 481 325 490 331 481 325 l 444 465 b 442 485 442 472 442 485 b 609 880 442 485 589 746 b 619 996 616 919 619 958 b 613 1084 619 1027 618 1056 b 534 1387 599 1188 560 1286 b 482 1453 527 1417 517 1453 b 422 1407 456 1453 438 1428 b 305 1063 348 1305 312 1188 b 304 1002 304 1043 304 1022 b 338 654 304 886 323 769 b 343 629 338 645 341 636 b 144 356 278 537 206 451 b 23 144 101 288 53 220 b 0 20 7 107 0 63 b 82 -210 0 -69 30 -160 b 207 -288 112 -239 160 -271 b 410 -328 274 -312 340 -328 b 474 -324 431 -328 452 -327 l 491 -321 b 491 -341 491 -321 492 -334 b 402 -585 475 -428 454 -513 b 294 -668 374 -622 348 -664 b 271 -693 278 -670 271 -680 b 274 -708 271 -698 272 -703 b 302 -775 282 -730 292 -753 b 343 -805 311 -795 325 -805 z m 400 717 b 382 922 389 786 382 854 b 481 1286 382 1047 408 1169 b 507 1125 498 1233 507 1179 b 500 1040 507 1097 504 1068 b 400 717 481 927 455 818 z m 252 -135 b 196 -121 232 -134 215 -127 b 117 -69 158 -108 127 -94 b 111 -32 112 -58 111 -45 b 117 19 111 -16 114 1 b 130 56 118 27 127 52 b 324 337 186 156 253 246 l 384 416 l 395 384 b 416 291 406 348 416 291 b 350 213 416 291 376 239 b 243 -42 278 143 243 55 b 251 -117 243 -66 246 -91 b 252 -135 252 -122 252 -127 z m 563 -91 b 510 168 552 3 530 78 b 513 192 508 179 508 186 b 624 202 550 199 586 202 b 730 192 660 202 694 199 b 850 141 773 183 816 176 b 858 134 852 138 855 135 b 595 -121 801 19 716 -68 l 569 -131 z m 410 -160 b 311 -147 360 -160 311 -147 b 307 -98 311 -147 307 -127 b 314 -33 307 -79 308 -56 b 429 131 328 36 377 85 b 441 138 433 135 438 138 b 449 122 446 138 448 132 b 490 -131 462 37 484 -46 b 490 -153 491 -140 490 -153 b 410 -160 490 -153 452 -163 z"},cClef:{x_min:0,x_max:731,y_min:-543,y_max:543,ha:1086,o:"m 131 -782 b 141 -755 138 -782 140 -773 b 147 -490 143 -667 145 -577 b 160 207 150 -258 153 -24 b 168 618 164 344 158 481 b 81 768 173 690 132 732 b 45 782 66 778 55 782 b 3 740 26 782 13 768 b 0 724 1 736 0 730 l 1 710 b 4 596 4 672 4 634 l 4 382 b 9 102 4 288 4 196 b 17 -301 13 -32 10 -166 l 17 -672 b 50 -736 17 -701 27 -720 b 109 -772 69 -749 91 -759 b 131 -782 120 -778 127 -782 z m 615 -770 b 881 -684 710 -770 801 -739 b 1020 -395 986 -612 1020 -510 b 1017 -334 1020 -374 1018 -354 b 769 -62 1007 -209 896 -75 b 746 -60 762 -60 755 -60 b 639 -73 710 -60 675 -69 b 524 -109 598 -79 560 -92 b 528 -36 526 -85 528 -60 b 527 -4 528 -26 528 -14 b 528 39 527 10 528 24 b 526 99 528 59 527 79 b 592 94 549 95 570 94 b 648 99 611 94 629 95 b 912 157 744 94 844 117 b 1053 377 1009 215 1053 284 b 1050 425 1053 393 1053 409 b 914 665 1037 521 986 602 b 717 753 855 717 791 753 b 626 734 688 753 658 747 l 462 665 b 347 500 374 628 347 580 b 350 449 347 484 348 468 b 392 419 353 428 367 416 b 492 438 425 425 459 428 b 541 498 524 448 541 468 b 540 514 541 503 541 508 b 537 546 537 524 537 536 b 573 639 537 580 550 611 b 606 657 582 649 593 657 l 609 657 b 716 622 647 652 684 647 b 834 372 801 556 834 469 b 831 323 834 356 832 338 b 743 187 825 266 795 217 b 710 176 732 180 720 176 b 694 179 704 176 700 177 b 527 223 638 193 582 206 b 495 229 516 228 505 229 b 454 220 481 229 468 225 b 395 189 432 213 415 200 b 363 180 384 186 374 181 b 348 168 356 179 348 176 b 340 161 343 167 340 164 b 347 150 340 157 343 154 b 356 147 348 148 353 147 b 364 92 361 130 363 111 b 369 -37 367 49 369 6 b 363 -154 369 -76 367 -115 b 357 -236 360 -183 357 -210 b 376 -264 357 -253 361 -259 b 456 -289 402 -284 429 -289 b 521 -282 478 -289 500 -285 b 549 -255 537 -279 546 -271 b 598 -177 556 -225 577 -202 b 622 -164 605 -168 613 -164 b 636 -167 626 -164 631 -166 b 749 -225 678 -177 714 -199 b 848 -405 814 -276 848 -337 b 824 -507 848 -436 840 -471 b 657 -657 792 -582 730 -625 b 608 -668 638 -664 622 -668 b 534 -602 572 -668 547 -645 b 513 -575 530 -589 523 -575 b 507 -576 510 -575 508 -575 b 478 -582 497 -580 488 -582 b 405 -570 454 -582 428 -570 b 389 -572 399 -570 395 -570 l 363 -572 b 321 -575 348 -572 333 -569 l 321 631 b 323 662 323 641 323 652 b 315 716 323 681 321 698 b 304 736 314 723 317 736 l 302 736 b 281 716 294 734 285 729 b 275 665 276 700 275 683 l 275 382 b 276 99 275 288 275 193 b 279 -170 278 10 276 -81 b 284 -399 282 -246 284 -323 b 282 -629 284 -475 282 -553 b 289 -721 282 -660 289 -690 b 300 -736 289 -727 291 -736 b 312 -724 307 -736 310 -730 b 321 -667 323 -706 321 -687 l 321 -632 l 328 -644 l 340 -657 b 510 -757 386 -707 445 -740 b 615 -770 546 -766 580 -770 z"},fClef:{x_min:0,x_max:776,y_min:-496,y_max:216,ha:712,o:"m 402 -706 b 804 -405 592 -678 716 -566 b 876 -53 861 -298 874 -183 b 868 33 876 -32 873 1 b 560 311 845 217 723 311 b 524 310 549 311 536 311 b 131 134 373 297 239 242 b 17 -29 84 86 37 39 b 9 -89 12 -50 9 -71 b 112 -238 9 -154 43 -206 b 124 -243 117 -239 120 -242 b 186 -261 145 -255 166 -261 b 268 -228 215 -261 242 -249 b 351 -59 325 -181 351 -124 b 343 10 351 -36 348 -13 b 340 36 341 19 340 27 b 409 105 340 75 363 102 b 441 107 420 107 431 107 b 624 36 510 107 573 86 b 744 -200 688 -27 724 -109 b 747 -230 747 -210 747 -222 b 717 -323 747 -264 736 -292 b 608 -445 688 -370 654 -410 b 307 -541 518 -513 415 -541 l 213 -541 b 39 -521 154 -541 96 -539 b 0 -552 17 -514 0 -531 b 1 -564 0 -556 0 -560 b 17 -611 6 -580 10 -596 b 101 -694 35 -648 50 -684 b 288 -714 164 -707 225 -714 b 402 -706 325 -714 363 -711 z m 1018 92 b 1080 118 1041 91 1068 96 b 1117 219 1099 150 1117 180 b 1113 252 1117 229 1116 240 b 1045 288 1102 297 1068 276 b 1017 262 1028 297 1024 274 b 984 124 989 220 996 170 b 1008 91 979 108 986 91 z m 972 -281 b 1070 -148 1024 -279 1070 -210 b 1025 -105 1070 -105 1045 -112 b 989 -127 1004 -96 998 -114 b 949 -249 963 -164 963 -209 b 969 -281 943 -265 949 -281 z"},unpitchedPercussionClef1:{x_min:0,x_max:379.13761966945304,y_min:-250,y_max:250,ha:500,o:"m 481 -360 b 507 -357 491 -360 500 -360 b 546 -295 541 -346 547 -325 b 536 79 543 -170 540 -46 b 523 311 533 157 534 235 b 475 359 518 340 508 359 b 425 360 459 359 442 360 b 400 359 416 360 409 360 b 337 294 348 353 340 347 l 337 -73 b 336 -264 337 -137 337 -200 b 343 -294 336 -274 338 -284 b 481 -360 359 -330 431 -360 z m 144 -341 b 207 -320 167 -341 189 -331 b 217 -301 215 -315 217 -308 b 210 -262 217 -289 210 -275 b 228 187 212 -112 209 37 b 228 287 228 220 229 253 b 174 353 228 336 222 343 b 120 359 157 357 138 359 b 48 357 96 359 72 356 b 17 323 29 357 19 344 b 7 120 16 255 9 187 b 6 -109 6 43 6 -33 l 6 -204 b 0 -251 6 -220 0 -235 b 3 -269 0 -256 0 -262 b 127 -340 24 -330 79 -328 b 144 -341 132 -341 138 -341 z"},"6stringTabClef":{x_min:0,x_max:438,y_min:-768,y_max:767,ha:1535,o:"m 369 438 b 374 439 370 438 372 438 b 384 462 383 444 384 452 l 384 474 b 390 697 386 547 390 622 b 373 1002 390 799 390 901 l 533 1002 b 560 1001 541 1004 552 1001 b 573 1007 567 1001 572 1002 b 546 1050 579 1025 559 1038 b 536 1056 543 1053 539 1053 b 324 1104 472 1102 397 1104 b 72 1090 238 1104 154 1099 b 55 1093 66 1090 60 1092 b 37 1073 46 1093 37 1089 b 60 1045 37 1061 48 1051 b 203 1001 105 1022 151 1001 b 233 1004 213 1001 223 1002 b 246 1005 238 1004 243 1005 b 272 975 264 1005 272 996 l 272 965 b 258 596 264 842 265 719 b 315 474 253 540 272 504 l 343 455 b 369 438 351 448 357 438 z m 114 -320 b 127 -304 120 -320 124 -315 b 171 -174 141 -261 158 -219 b 222 -135 179 -147 196 -137 b 426 -122 289 -131 359 -128 b 498 -164 462 -120 482 -127 b 628 -301 521 -226 575 -264 b 631 -288 631 -295 631 -291 b 628 -269 631 -281 629 -276 b 569 -134 616 -220 589 -179 b 408 225 514 -14 462 107 b 314 357 384 274 351 318 b 278 380 298 372 288 379 b 251 351 268 380 261 372 b 4 -209 156 171 75 -17 b 0 -228 1 -215 0 -222 b 19 -258 0 -240 7 -249 b 102 -314 45 -279 75 -294 b 114 -320 107 -318 111 -320 z m 425 6 b 360 20 403 17 382 20 b 274 14 331 20 302 14 l 246 14 l 340 206 b 425 6 369 137 395 75 z m 245 -1106 b 281 -1104 256 -1106 269 -1106 b 511 -888 400 -1094 511 -1035 b 454 -688 511 -814 504 -744 b 448 -678 449 -685 448 -681 b 454 -667 448 -675 449 -671 b 504 -497 503 -619 507 -559 b 324 -288 500 -383 436 -308 b 295 -287 314 -287 304 -287 l 282 -287 b 115 -330 223 -287 168 -307 b 94 -366 102 -336 94 -348 l 94 -370 b 96 -435 96 -392 96 -413 b 73 -858 89 -576 71 -717 b 78 -919 73 -878 78 -899 b 72 -950 78 -930 76 -940 b 63 -992 66 -965 63 -978 b 66 -1015 63 -999 65 -1008 b 173 -1104 84 -1106 84 -1106 b 245 -1106 197 -1104 220 -1104 z m 161 -622 b 147 -618 156 -622 151 -621 b 140 -600 141 -612 140 -606 b 144 -564 140 -589 144 -575 b 143 -554 144 -560 144 -557 l 143 -546 b 220 -451 144 -467 143 -465 b 278 -445 239 -446 259 -444 b 418 -497 328 -445 376 -461 b 429 -516 426 -504 429 -510 b 415 -533 429 -521 423 -527 b 219 -608 357 -579 287 -590 b 215 -609 217 -608 216 -609 b 161 -622 197 -609 177 -622 z m 154 -953 b 130 -933 135 -953 130 -948 l 130 -865 l 128 -865 b 135 -788 130 -838 124 -808 b 203 -769 145 -769 180 -776 b 259 -762 223 -765 242 -762 b 441 -852 330 -762 386 -805 b 449 -867 446 -858 449 -863 b 436 -884 449 -874 444 -878 b 318 -942 402 -914 363 -935 b 154 -953 264 -950 209 -953 z"},timeSig0:{x_min:20,x_max:513,y_min:-358.159536277652,y_max:359,ha:717.159536277652,o:"m 341 -516 b 420 -510 367 -516 395 -514 b 675 -338 533 -494 622 -448 b 737 -92 716 -256 734 -171 b 739 -35 739 -73 739 -53 b 680 305 739 86 720 207 b 400 517 622 449 537 517 b 337 514 380 517 359 517 b 289 507 321 511 305 513 b 91 317 192 477 127 412 b 29 9 50 212 29 108 b 217 -458 29 -157 88 -312 b 341 -516 251 -494 291 -518 z m 412 -452 b 359 -425 393 -452 376 -444 b 187 14 242 -301 179 -158 b 268 334 193 127 212 235 b 387 448 295 383 330 428 b 406 452 395 451 400 452 b 428 444 413 452 420 449 b 517 324 471 413 497 372 b 586 -29 560 222 586 86 b 556 -271 586 -112 585 -193 b 468 -422 536 -327 508 -377 b 412 -452 449 -442 431 -452 z"},timeSig1:{x_min:20,x_max:283,y_min:-364,y_max:366,ha:730,o:"m 264 -524 b 357 -510 297 -524 325 -516 b 374 -490 369 -508 374 -501 b 380 -438 376 -472 380 -455 l 406 246 b 408 301 408 265 408 282 b 400 445 408 348 405 396 b 288 527 395 491 338 527 b 253 520 276 527 264 526 b 240 508 249 517 245 513 b 49 409 192 445 127 413 b 29 396 33 408 29 403 b 32 380 29 392 30 386 b 59 363 36 366 49 364 b 164 348 95 356 130 348 b 222 357 183 348 203 351 b 238 361 228 360 233 360 b 252 334 248 361 252 353 b 243 59 252 242 249 150 b 219 -490 229 -124 233 -307 b 264 -524 217 -516 232 -524 z"},timeSig2:{x_min:20,x_max:660.4636303241031,y_min:-378.7201231608281,y_max:382,ha:760.720123160828,o:"m 99 -543 b 130 -533 111 -550 121 -540 b 255 -448 168 -501 213 -475 b 338 -425 282 -431 310 -425 b 392 -431 356 -425 374 -426 b 485 -462 423 -438 454 -451 b 648 -497 540 -482 595 -497 b 834 -441 711 -497 773 -480 b 950 -242 906 -395 958 -334 b 942 -210 950 -230 950 -215 b 912 -220 932 -204 920 -213 b 861 -264 894 -235 877 -248 b 775 -317 835 -289 808 -305 b 675 -334 742 -328 708 -334 b 510 -295 619 -334 563 -318 b 372 -264 465 -278 420 -264 b 305 -272 350 -264 328 -266 b 331 -242 318 -256 324 -249 b 490 -73 386 -187 438 -131 b 675 340 595 43 664 180 b 677 369 677 350 677 360 b 556 536 677 461 638 508 b 468 550 526 546 497 550 b 297 508 409 550 353 533 b 111 354 220 475 168 412 b 29 197 65 308 29 261 b 32 164 29 187 29 176 b 29 140 33 157 29 147 b 43 125 29 132 32 125 b 73 147 55 125 65 138 b 86 163 79 153 82 158 b 238 320 134 219 183 272 b 425 389 292 367 360 389 b 575 341 480 389 531 373 b 606 298 590 330 606 317 b 600 278 606 292 603 285 b 501 107 576 217 544 158 b 304 -104 439 33 372 -35 b 111 -356 230 -180 167 -265 b 84 -446 92 -386 84 -415 b 86 -481 84 -458 85 -469 b 88 -514 88 -491 88 -503 b 99 -543 89 -526 91 -537 z"},timeSig3:{x_min:19.824321427094187,x_max:540,y_min:-392,y_max:392,ha:784,o:"m 216 -540 b 354 -564 264 -556 310 -564 b 605 -465 445 -564 530 -530 b 729 -161 697 -383 729 -275 b 724 -82 729 -135 727 -108 b 589 95 716 -1 670 62 b 523 114 567 102 546 108 b 750 418 606 213 677 315 b 778 503 769 444 778 472 b 773 540 778 514 776 527 b 750 564 769 557 762 564 b 736 562 746 564 742 563 b 641 552 704 553 672 552 b 402 554 562 552 481 554 l 346 554 b 84 546 258 554 170 554 b 36 501 55 543 40 531 b 29 412 30 472 32 442 b 52 384 27 393 32 384 l 56 384 b 210 392 107 389 158 392 l 602 392 b 354 108 523 285 445 192 b 246 -65 300 58 246 12 b 252 -108 246 -78 248 -92 l 252 -111 b 264 -141 251 -122 251 -135 b 291 -132 274 -145 284 -140 b 425 -72 328 -95 377 -84 b 475 -65 442 -68 459 -65 b 592 -108 517 -65 557 -79 b 645 -179 615 -125 645 -147 b 642 -194 645 -184 644 -189 b 485 -376 616 -278 569 -344 b 361 -399 444 -392 402 -399 b 151 -340 289 -399 219 -376 b 88 -275 122 -323 98 -310 b 71 -249 86 -268 85 -249 b 63 -251 68 -249 66 -249 b 36 -288 48 -255 36 -266 b 55 -423 33 -336 45 -377 b 101 -482 60 -448 78 -468 b 216 -540 138 -504 174 -526 z"},timeSig4:{x_min:20,x_max:633.0785282750762,y_min:-489.59088556716864,y_max:491.18559127100053,ha:980.7764768381692,o:"m 608 -704 b 641 -684 622 -708 634 -696 b 667 -602 660 -660 662 -631 b 685 -190 683 -465 680 -327 l 685 -176 b 831 -127 736 -166 783 -148 b 912 0 901 -94 913 -76 b 886 53 912 36 904 52 b 848 40 877 53 864 49 l 838 36 b 687 -13 789 14 739 -3 b 681 177 687 50 684 114 b 672 338 678 230 677 285 b 654 373 671 350 672 373 b 622 340 636 373 624 361 b 615 262 621 314 613 288 b 619 -22 616 167 619 72 b 569 -22 602 -23 585 -23 b 305 -3 481 -16 395 -1 b 210 -9 274 -3 242 -4 b 301 163 242 52 268 108 b 513 552 377 288 459 412 b 536 652 526 585 536 618 b 533 683 536 662 534 672 b 520 707 531 691 531 707 b 487 693 508 708 494 704 b 474 668 482 684 477 677 b 384 490 454 603 418 547 b 253 281 343 419 295 351 b 73 -13 194 181 145 78 b 29 -108 50 -42 29 -72 b 37 -147 29 -121 32 -134 b 50 -186 43 -160 50 -173 b 68 -216 52 -207 56 -215 b 92 -207 73 -216 82 -213 b 288 -166 156 -180 220 -166 b 556 -186 377 -166 467 -180 b 586 -189 566 -187 576 -187 b 616 -186 596 -189 606 -189 b 606 -432 613 -268 612 -350 b 596 -625 603 -495 596 -559 b 598 -670 596 -641 596 -655 b 608 -704 598 -683 596 -700 z"},timeSig5:{x_min:19.663871085403297,x_max:583,y_min:-389,y_max:389,ha:778,o:"m 132 -536 b 249 -560 168 -553 209 -559 b 507 -462 351 -560 454 -514 b 677 -183 588 -384 642 -289 b 694 -85 688 -150 694 -117 b 540 138 694 12 642 94 b 422 173 501 154 462 167 b 400 187 408 174 400 177 b 405 202 400 190 402 196 b 428 284 416 228 426 255 b 469 312 431 307 442 312 b 757 372 569 312 662 343 b 840 490 821 392 840 432 b 812 560 840 540 834 560 b 763 546 801 560 785 556 b 757 543 762 546 759 544 b 465 484 665 505 570 484 b 396 484 452 484 425 487 b 353 454 377 482 366 474 b 281 300 323 405 304 351 b 245 164 262 255 245 212 b 246 144 245 158 246 151 b 233 63 249 115 243 89 b 225 35 228 50 225 40 b 264 14 225 22 236 19 b 445 -26 325 7 387 0 b 569 -151 501 -52 547 -89 b 575 -180 573 -161 575 -170 b 527 -275 575 -217 547 -245 b 347 -367 484 -334 419 -367 b 261 -351 318 -367 289 -363 b 95 -300 206 -333 154 -307 b 55 -321 73 -297 65 -302 b 29 -468 29 -367 40 -419 b 56 -505 26 -482 36 -500 b 132 -536 82 -514 108 -524 z"},timeSig6:{x_min:20,x_max:565,y_min:-363,y_max:363,ha:726,o:"m 390 -518 b 621 -458 469 -507 549 -494 b 814 -134 753 -390 814 -281 b 652 59 814 -16 750 58 b 580 48 629 59 606 55 b 233 -334 392 -9 276 -138 b 115 -228 181 -314 143 -278 b 98 -160 104 -206 98 -183 b 107 -109 98 -144 101 -127 b 167 37 124 -59 145 -12 b 508 340 236 189 347 292 b 575 353 530 347 553 353 b 648 327 600 353 625 346 b 665 320 654 321 661 320 b 687 336 674 320 681 325 b 703 405 697 359 703 382 b 684 472 703 429 697 451 b 593 523 664 504 631 521 b 576 521 588 523 582 523 b 297 403 472 508 380 465 b 115 177 217 344 164 264 b 29 -121 60 82 29 -17 b 53 -278 29 -173 36 -225 b 226 -497 82 -374 131 -454 b 347 -523 265 -514 305 -523 b 390 -518 361 -523 376 -521 z m 351 -357 b 312 -351 337 -356 320 -363 b 325 -315 304 -340 320 -327 b 543 -120 373 -222 448 -158 b 622 -104 570 -108 596 -102 b 717 -132 655 -104 687 -112 b 740 -167 732 -143 740 -153 b 730 -196 740 -176 737 -184 b 563 -321 690 -258 634 -300 b 359 -357 497 -341 428 -354 z"},timeSig7:{x_min:20.3617407597707,x_max:592,y_min:-345,y_max:345,ha:690,o:"m 253 -497 b 318 -485 276 -497 297 -487 b 366 -441 348 -482 360 -468 b 487 -104 390 -323 433 -210 b 835 403 580 82 701 246 b 852 436 847 416 852 428 b 815 467 852 451 840 461 b 762 474 798 471 779 474 b 674 445 732 474 701 465 b 603 410 652 431 628 420 b 383 360 533 379 459 360 b 200 435 315 360 249 382 b 88 494 168 469 131 485 b 66 497 81 495 73 497 b 33 484 52 497 39 492 b 50 436 22 469 39 451 b 295 310 114 360 199 324 b 406 301 331 304 369 301 b 593 324 468 301 530 308 b 585 307 589 314 588 310 b 265 -249 451 137 338 -46 b 207 -442 242 -312 223 -377 b 204 -462 206 -449 204 -456 b 253 -497 204 -487 220 -497 z"},timeSig8:{x_min:20,x_max:504.15101530718516,y_min:-428,y_max:428,ha:856,o:"m 265 -616 b 289 -615 274 -616 281 -616 b 710 -271 492 -592 657 -485 b 726 -148 721 -229 727 -187 b 585 108 726 -48 687 42 b 572 127 576 114 573 120 b 576 144 572 132 575 138 b 598 301 590 196 598 249 b 586 413 598 338 593 376 b 356 616 559 531 467 616 b 233 582 317 616 275 606 b 29 233 101 505 29 384 b 104 9 29 153 46 72 b 189 -48 127 -16 160 -27 b 92 -158 141 -73 114 -114 b 37 -343 63 -217 50 -279 b 33 -390 35 -359 33 -374 b 265 -616 33 -524 148 -616 z m 258 105 b 124 148 215 105 167 117 b 96 196 105 163 96 177 b 99 217 96 202 96 209 b 197 384 120 281 151 337 b 350 451 242 429 297 451 b 516 364 412 451 472 422 b 530 331 523 354 530 343 l 530 327 l 530 320 b 468 151 520 261 507 200 b 419 122 455 135 442 125 b 258 105 370 117 320 105 z m 328 -438 b 158 -276 233 -436 160 -359 b 166 -239 158 -264 161 -252 b 230 -157 176 -203 202 -179 b 367 -72 274 -125 320 -98 b 448 -49 396 -56 423 -49 b 562 -118 491 -49 528 -72 b 611 -251 590 -157 611 -199 b 569 -341 611 -288 595 -318 b 328 -438 500 -402 416 -432 z"},timeSig9:{x_min:20,x_max:494,y_min:-421,y_max:421,ha:842,o:"m 235 -606 b 361 -564 275 -606 318 -593 b 619 -229 487 -482 566 -366 b 706 127 664 -114 694 4 b 711 233 708 163 711 197 b 700 346 711 271 708 308 b 389 606 658 517 530 606 b 351 605 376 606 364 606 b 56 272 171 586 56 441 b 96 98 56 216 69 156 b 334 -53 144 -3 238 -53 b 544 36 408 -53 484 -24 b 652 176 586 78 622 124 b 631 71 645 141 639 105 b 467 -302 599 -63 562 -196 b 271 -442 412 -364 354 -422 b 225 -448 255 -446 239 -448 b 95 -305 148 -448 98 -395 b 89 -255 95 -288 94 -271 b 73 -233 86 -246 85 -233 b 52 -248 65 -233 56 -239 b 29 -317 42 -271 30 -291 b 49 -448 29 -361 40 -405 b 235 -606 69 -541 144 -606 z m 340 104 b 144 209 264 108 194 141 b 127 258 132 225 127 240 b 137 297 127 271 130 284 b 366 449 184 396 269 449 b 517 408 415 449 467 436 b 595 348 546 392 572 372 b 616 305 608 336 616 321 b 609 281 616 298 613 289 b 340 104 557 184 477 104 z"},timeSigCommon:{x_min:20,x_max:585,y_min:-298,y_max:294.49658092772603,ha:592.496580927726,o:"m 444 -405 b 829 -45 626 -346 740 -207 b 842 26 842 -23 842 1 b 821 58 842 39 841 58 b 795 40 811 58 802 48 b 765 3 785 29 773 16 b 469 -223 690 -104 596 -183 b 354 -242 431 -235 392 -242 b 180 -177 292 -242 235 -223 b 135 -99 154 -157 140 -131 b 132 -59 134 -85 132 -72 b 141 7 132 -37 135 -16 b 449 274 189 160 297 243 b 477 278 459 276 468 276 b 546 203 517 278 539 253 b 517 157 550 177 533 166 b 485 143 507 153 497 143 l 482 143 b 467 148 478 143 472 144 b 374 183 438 170 406 181 b 264 118 333 183 292 161 b 238 48 246 92 238 69 b 261 -9 238 29 245 10 b 383 -73 287 -39 337 -73 b 412 -68 392 -73 402 -72 b 631 164 526 -27 586 59 b 649 252 644 193 649 222 b 636 328 649 278 645 304 b 504 423 615 400 579 429 b 242 318 408 415 317 387 b 29 -158 104 190 29 33 b 30 -176 29 -164 29 -170 b 115 -364 42 -246 52 -315 b 307 -429 177 -410 240 -429 b 444 -405 351 -429 397 -420 z"},timeSigCutCommon:{x_min:20,x_max:695,y_min:-687.0379164869064,y_max:687,ha:1374.0379164869064,o:"m 564 -989 b 595 -945 585 -991 589 -963 l 599 -922 b 605 -628 600 -824 603 -726 l 609 -399 b 878 -251 706 -363 798 -320 b 996 -85 932 -204 976 -153 b 1001 -63 998 -78 1001 -71 b 989 -46 1001 -56 998 -49 b 978 -43 985 -45 982 -43 b 950 -59 968 -43 959 -49 b 733 -216 894 -132 815 -177 b 611 -259 694 -235 652 -249 b 616 -20 612 -179 615 -99 b 680 29 642 -7 665 9 b 698 43 685 36 690 40 b 870 251 792 82 840 160 b 877 294 874 265 877 279 b 818 410 877 338 855 382 b 683 458 779 442 730 448 b 625 468 664 462 644 465 l 625 514 b 638 958 626 662 636 811 b 626 989 638 979 635 989 b 603 981 621 989 613 986 b 422 840 534 945 481 888 b 412 805 412 832 413 818 b 426 713 410 773 420 743 b 445 678 429 690 435 678 b 474 691 452 678 461 683 b 563 755 503 710 530 732 b 564 724 564 740 564 733 b 559 469 563 639 560 554 b 462 454 526 469 494 464 b 112 143 302 399 199 281 b 33 -94 66 71 45 -10 b 29 -148 30 -112 29 -131 b 105 -351 29 -223 52 -291 b 359 -455 171 -426 258 -451 b 517 -431 409 -451 464 -446 l 539 -422 l 539 -477 b 533 -739 536 -563 539 -651 b 530 -824 531 -768 530 -795 b 546 -948 530 -865 533 -907 b 564 -989 552 -962 543 -989 z m 410 -288 b 193 -197 328 -288 253 -264 b 141 -60 160 -161 141 -108 b 157 6 141 -35 147 -12 b 259 158 189 58 217 112 b 438 291 311 215 364 266 b 528 305 468 301 498 305 b 554 304 537 305 546 304 b 553 212 554 274 554 242 b 426 115 498 199 446 164 b 416 68 419 99 416 84 b 425 12 416 49 420 30 b 474 -39 432 -17 448 -32 b 513 -43 487 -42 498 -43 b 547 -40 524 -43 536 -42 l 543 -272 b 461 -285 516 -278 488 -281 b 410 -288 444 -287 426 -288 z m 694 197 b 668 203 685 197 677 199 b 621 216 654 210 638 215 b 622 294 622 242 622 268 b 706 268 651 287 678 278 b 746 235 721 261 734 249 b 752 222 749 230 752 226 b 743 213 752 219 749 215 b 694 197 727 206 711 197 z"},timeSigPlus:{x_min:0,x_max:661,y_min:-358,y_max:358,ha:716,o:"m 605 -516 b 629 -490 624 -516 629 -507 b 628 -475 629 -485 628 -481 b 613 -131 624 -405 616 -174 b 612 -96 612 -114 612 -96 l 647 -98 b 897 -115 730 -99 814 -109 b 940 -89 919 -117 935 -109 b 952 -24 946 -69 952 -46 b 948 9 952 -14 950 -3 b 912 39 942 26 933 37 b 609 60 822 48 609 60 b 616 392 609 60 608 291 b 567 488 619 436 605 467 b 511 516 550 498 531 514 b 498 511 507 516 503 514 b 478 446 475 501 480 469 b 467 150 474 348 469 249 b 465 59 465 121 465 59 l 372 49 b 73 14 272 36 173 24 b 49 13 65 13 56 13 b 0 -33 9 13 0 6 b 60 -141 0 -117 6 -140 b 112 -135 73 -141 91 -140 b 413 -102 213 -125 314 -112 b 464 -98 441 -99 464 -98 l 464 -145 b 477 -456 464 -249 468 -353 b 526 -510 478 -488 491 -507 b 589 -513 546 -511 569 -510 b 605 -516 595 -514 600 -516 z"},timeSigPlusSmall:{x_min:0,x_max:418,y_min:-197,y_max:199,ha:396,o:"m 301 -284 b 330 -238 320 -284 324 -255 b 348 -46 350 -176 341 -111 b 374 -20 351 -27 356 -23 b 481 -17 409 -16 445 -17 b 566 -9 510 -17 537 -16 b 602 3 579 -7 602 -16 b 566 29 602 19 582 24 b 526 33 553 32 539 33 b 384 39 478 36 432 39 b 356 62 363 39 356 42 l 356 68 b 359 177 359 104 359 141 l 359 251 b 341 287 359 264 361 285 b 311 255 324 287 314 272 b 310 228 311 246 310 236 l 301 69 b 275 39 301 49 295 39 l 271 39 b 210 40 251 40 230 40 b 167 39 196 40 181 40 b 89 40 141 37 115 40 b 24 30 68 40 46 37 b 0 17 17 27 0 30 l 0 13 b 27 -17 3 0 7 -13 b 91 -22 49 -22 71 -22 b 153 -22 115 -22 137 -20 l 275 -22 b 295 -40 289 -22 295 -27 l 295 -48 b 288 -235 288 -109 287 -171 b 287 -264 288 -243 287 -253 b 301 -284 287 -275 289 -284 z"},timeSigMinus:{x_min:0,x_max:662,y_min:-54,y_max:55,ha:109,o:"m 39 -78 b 49 -76 42 -78 45 -76 b 452 -75 94 -75 272 -75 b 861 -76 632 -75 814 -76 b 953 -20 927 -79 953 -66 b 948 27 953 -7 950 9 b 946 37 948 30 948 35 b 896 79 940 63 929 79 b 471 78 827 78 648 78 l 42 78 b 0 37 14 78 0 69 b 23 -66 0 0 17 -32 b 39 -78 24 -75 32 -76 z"},timeSigParensRight:{x_min:0,x_max:274.26483738379414,y_min:-722.6326530612245,y_max:725,ha:1447.6326530612246,o:"m 37 -1038 b 69 -1031 48 -1044 59 -1038 b 88 -1015 76 -1027 82 -1021 b 164 -886 120 -976 147 -933 b 333 -351 233 -711 292 -534 b 395 118 366 -204 399 -59 b 389 245 392 144 392 194 b 120 996 369 521 265 766 b 68 1044 99 1030 84 1044 b 19 988 50 1044 36 1024 b 0 922 7 965 0 945 b 20 858 0 901 6 881 b 259 215 141 660 236 449 b 271 -1 266 143 271 71 b 252 -239 271 -82 265 -161 b 148 -667 228 -384 183 -524 b 39 -1009 120 -785 66 -893 b 33 -1031 37 -1017 33 -1024 b 37 -1038 33 -1034 35 -1037 z"},timeSigParensRightSmall:{x_min:0,x_max:154.4025307335204,y_min:-422,y_max:422,ha:844,o:"m 43 -608 b 60 -598 48 -608 53 -605 b 117 -511 82 -572 102 -543 b 222 23 193 -350 219 -177 b 213 166 225 55 216 109 b 115 531 206 294 174 416 b 45 603 99 562 76 588 b 30 608 39 606 35 608 b 10 598 23 608 17 603 b 0 546 3 590 0 570 b 23 451 0 507 9 458 b 102 351 66 429 84 390 b 167 42 150 252 167 148 b 163 -49 167 12 166 -19 b 35 -449 151 -192 121 -330 b 14 -504 22 -467 14 -485 b 17 -527 14 -511 16 -520 l 30 -590 b 43 -608 33 -603 37 -608 z"},timeSigParensLeft:{x_min:.5555555555555556,x_max:399.6216117372966,y_min:-728,y_max:728,ha:1456,o:"m 562 -1048 b 573 -1043 566 -1048 570 -1047 b 553 -988 582 -1025 564 -1004 b 472 -884 527 -952 497 -920 b 210 -354 366 -717 275 -541 b 148 -6 170 -240 148 -124 b 160 148 148 45 153 96 b 315 678 189 331 242 508 b 431 901 350 755 380 834 b 459 950 451 926 461 939 b 435 995 459 962 451 972 b 364 1048 405 1034 383 1048 b 305 996 343 1048 325 1028 b 127 624 226 881 174 753 b 1 30 56 432 9 235 b 1 -32 1 9 0 -12 b 180 -629 13 -245 92 -438 b 363 -936 230 -739 298 -835 b 526 -1041 402 -995 448 -1041 b 562 -1048 537 -1040 552 -1048 z"},timeSigParensLeftSmall:{x_min:0,x_max:173.45497224367904,y_min:-405,y_max:404,ha:809,o:"m 197 -583 b 222 -553 212 -582 219 -566 b 229 -497 226 -534 229 -516 b 213 -425 229 -472 225 -448 b 102 -177 173 -344 132 -262 b 62 30 78 -111 58 -42 b 91 183 66 82 75 134 b 215 426 118 271 156 356 b 249 552 246 465 252 505 b 230 582 249 563 246 582 b 197 563 219 582 206 576 b 71 356 144 500 105 429 b 0 50 26 259 3 158 b 13 -112 4 -3 7 -58 b 176 -559 29 -275 105 -416 b 196 -583 180 -569 186 -583 z"},noteheadDoubleWhole:{x_min:-.4444444444444444,x_max:614.1875,y_min:-223.03296670127517,y_max:223,ha:446.0329667012752,o:"m 35 -321 b 62 -266 58 -318 58 -288 l 62 -194 b 63 50 62 -114 63 -32 b 60 189 63 96 63 143 b 43 300 59 226 60 265 b 29 321 40 308 39 321 l 26 321 b 0 292 13 318 0 310 b 0 248 0 278 -1 262 b 6 147 4 215 6 181 b 4 48 6 114 4 81 b 6 0 4 32 6 16 b 7 -36 7 -12 7 -24 l 7 -52 b 6 -156 7 -86 6 -121 b 19 -275 6 -196 9 -236 b 35 -321 23 -291 16 -323 z m 847 -314 b 871 -288 860 -315 867 -300 b 884 -187 881 -255 886 -222 b 876 115 878 -86 876 14 b 877 255 876 161 876 209 b 868 291 877 268 873 279 b 855 304 867 301 863 304 b 844 301 852 304 848 304 b 822 265 825 292 822 278 b 824 251 822 259 822 255 b 822 170 822 225 822 197 l 822 -20 b 835 -284 827 -86 825 -186 b 847 -314 837 -295 835 -311 z m 757 -291 b 793 -171 796 -255 792 -212 b 795 -49 795 -131 795 -91 b 786 207 795 36 791 121 b 779 240 786 217 783 229 b 766 258 776 246 776 258 b 762 256 765 258 763 256 b 739 236 752 253 740 252 b 733 177 737 216 732 197 b 737 20 737 125 739 73 l 737 -107 b 740 -202 737 -138 739 -170 b 757 -291 740 -230 743 -261 z m 128 -261 b 144 -251 135 -264 141 -256 b 158 -203 156 -236 157 -220 b 161 -137 161 -181 161 -158 b 157 30 161 -81 157 -26 b 158 76 157 45 157 60 l 158 101 b 156 225 158 141 158 183 b 137 253 156 235 154 253 l 134 253 b 109 222 120 251 109 242 b 104 91 108 179 104 134 b 108 -58 104 42 109 -9 b 107 -105 108 -73 108 -89 b 105 -127 107 -112 107 -120 b 118 -245 105 -167 114 -204 b 128 -261 118 -252 121 -259 z m 488 -242 b 693 -79 595 -249 685 -166 l 693 -55 b 690 0 693 -36 691 -17 b 540 187 684 84 621 164 b 449 200 508 196 480 200 b 210 104 363 200 282 163 b 186 56 196 92 186 76 b 207 -82 186 9 192 -37 b 300 -204 225 -132 248 -181 b 488 -242 356 -229 415 -240 z m 490 -88 b 449 -86 477 -88 464 -88 b 287 -56 399 -85 341 -78 b 258 -33 275 -52 258 -48 b 282 -7 258 -20 272 -13 b 458 43 340 23 399 43 b 580 14 497 43 537 35 b 618 -20 606 1 619 -9 b 592 -58 618 -30 609 -42 b 490 -88 562 -82 528 -88 z"},noteheadWhole:{x_min:0,x_max:380.16649762501584,y_min:-186.17102907059297,y_max:165,ha:351.17102907059297,o:"m 547 40 b 223 -268 543 -151 367 -259 b 102 -233 180 -271 143 -248 l 62 -216 b 0 -127 22 -197 0 -166 b 6 -91 0 -115 1 -104 b 122 141 33 -9 69 71 b 327 238 170 204 249 238 b 514 158 397 238 467 212 b 547 40 544 125 549 84 z m 248 -107 b 384 -63 295 -102 341 -88 b 426 -23 402 -53 415 -40 b 435 3 432 -14 435 -6 b 413 32 435 14 428 24 b 301 73 376 49 343 73 b 272 69 291 73 282 72 b 121 -35 207 53 157 20 b 111 -58 117 -42 111 -50 b 125 -75 111 -65 115 -71 b 248 -107 164 -89 202 -107 z"},noteheadHalf:{x_min:0,x_max:334,y_min:-174,y_max:175,ha:349,o:"m 480 56 b 167 -251 478 -115 331 -251 b 94 -242 143 -251 118 -248 b 9 -141 43 -229 20 -192 b 0 -68 3 -115 0 -91 b 284 249 0 95 127 200 b 304 252 289 251 297 252 b 481 78 374 252 481 170 b 480 56 481 71 481 63 z m 213 -102 b 399 6 274 -81 341 -48 b 402 17 400 7 402 13 b 399 27 402 22 400 26 b 311 94 373 53 353 88 b 292 95 305 95 300 95 b 130 27 230 95 181 55 b 69 -62 98 9 62 -29 b 161 -98 76 -98 128 -91 b 213 -102 174 -101 186 -101 z"},noteheadBlack:{x_min:0,x_max:334.04644433966797,y_min:-164,y_max:164,ha:328,o:"m 112 -233 b 141 -236 122 -235 131 -236 b 481 104 279 -236 485 -48 b 403 222 477 141 478 192 b 334 236 382 232 359 236 b 1 -59 180 236 13 59 b 0 -85 1 -68 0 -76 b 112 -233 0 -157 32 -215 z"},noteheadXDoubleWhole:{x_min:0,x_max:730,y_min:-266,y_max:267,ha:533,o:"m 1018 -373 b 1032 -361 1025 -376 1028 -367 b 1051 -287 1047 -338 1051 -314 b 1050 -252 1051 -276 1051 -264 b 1030 186 1031 -107 1037 40 b 1031 266 1028 213 1031 239 b 1018 363 1031 300 1028 331 b 1005 384 1015 373 1017 384 l 1004 384 b 984 363 992 384 986 373 b 982 343 982 356 982 348 b 981 235 982 307 981 271 b 996 -285 981 60 986 -112 b 1009 -360 998 -311 1005 -336 b 1018 -373 1011 -364 1014 -373 z m 16 -383 b 49 -328 39 -367 48 -350 b 69 56 58 -202 62 -73 b 75 212 72 107 72 160 b 78 278 76 233 78 255 b 59 382 78 312 73 347 b 29 328 33 372 29 350 b 13 -29 29 209 23 88 b 3 -222 7 -95 10 -157 b 0 -265 1 -236 0 -252 b 16 -383 0 -304 6 -343 z m 923 -314 b 955 -240 948 -289 952 -265 b 965 -65 962 -181 965 -125 b 963 0 965 -45 965 -22 b 962 111 960 37 962 73 b 953 240 962 154 960 197 b 939 275 952 253 952 275 b 913 239 924 274 913 258 b 913 173 914 217 913 194 b 914 135 913 160 913 147 b 920 27 919 98 920 63 b 909 -128 920 -26 917 -78 b 906 -179 906 -147 906 -163 b 923 -314 906 -223 913 -266 z m 121 -301 b 143 -272 134 -301 138 -284 b 147 -255 145 -268 145 -261 b 173 160 161 -117 166 22 b 173 233 173 184 174 209 b 157 264 171 243 171 264 b 137 235 143 264 138 249 b 132 207 135 226 132 216 b 121 43 128 153 124 96 b 105 -186 117 -36 105 -111 b 111 -269 105 -215 107 -242 b 121 -301 114 -281 104 -300 z m 210 -238 b 376 -193 274 -239 327 -226 b 471 -134 406 -173 439 -154 b 534 -94 491 -120 513 -107 b 671 -192 579 -127 624 -161 b 733 -226 691 -204 708 -228 b 746 -225 737 -228 742 -226 b 845 -204 782 -226 814 -213 b 868 -194 854 -203 865 -203 b 852 -173 871 -183 860 -179 b 661 -40 789 -128 724 -84 b 642 -27 654 -36 648 -32 b 861 114 716 17 791 63 b 886 132 870 120 886 121 l 886 137 b 852 164 883 151 867 161 b 776 176 827 170 801 176 b 685 145 744 176 714 168 b 530 45 638 107 583 76 b 403 132 487 73 444 101 b 279 176 364 161 324 171 b 223 160 259 176 229 176 b 258 115 215 141 242 127 b 431 -17 314 71 372 26 b 173 -196 341 -73 253 -130 b 157 -209 168 -200 157 -203 b 158 -215 157 -212 157 -215 b 183 -236 166 -223 168 -235 b 210 -238 194 -236 206 -239 z m 768 -207 b 533 -40 687 -150 609 -94 b 321 -173 462 -85 392 -130 b 261 -194 304 -184 287 -196 b 239 -193 253 -196 246 -194 b 387 -95 294 -157 340 -125 b 505 -20 426 -71 465 -45 l 484 -4 b 353 89 441 27 396 56 b 320 115 341 96 330 107 b 297 141 311 124 297 132 b 300 148 297 144 298 145 b 336 135 311 164 324 143 b 528 -4 400 89 464 42 l 723 121 b 770 140 737 131 753 138 b 792 132 779 140 789 141 b 778 115 795 122 783 120 b 586 -6 714 75 651 35 b 557 -24 576 -13 567 -19 b 726 -147 613 -66 670 -109 b 768 -207 744 -161 765 -173 z"},noteheadXWhole:{x_min:0,x_max:506,y_min:-143.0823320899293,y_max:144,ha:287.0823320899293,o:"m 53 -206 b 219 -163 117 -207 170 -196 b 314 -102 249 -141 282 -122 b 377 -63 334 -89 356 -76 b 514 -161 422 -96 468 -128 b 576 -196 534 -174 552 -196 b 589 -193 580 -196 585 -196 b 688 -174 625 -194 657 -181 b 711 -158 698 -171 711 -173 b 696 -143 711 -151 701 -147 b 503 -9 632 -98 567 -52 l 485 4 b 704 145 559 49 634 95 b 729 164 711 150 729 151 l 729 168 b 696 196 726 183 710 193 b 621 207 671 202 645 207 b 528 177 589 207 557 200 b 373 76 480 140 426 108 b 246 164 330 104 287 132 b 122 206 207 193 167 203 b 66 192 102 207 72 207 b 99 147 58 173 85 158 b 274 14 157 102 215 58 b 16 -164 184 -42 96 -98 b 0 -179 12 -168 0 -170 b 1 -183 0 -180 0 -183 b 26 -204 6 -193 12 -204 b 53 -206 37 -206 49 -206 z m 611 -177 b 376 -9 530 -118 452 -63 l 164 -143 b 104 -164 147 -154 130 -164 b 82 -161 96 -164 89 -164 b 230 -65 137 -125 183 -95 l 347 12 b 327 26 341 16 334 22 l 196 121 b 163 147 184 128 173 137 b 140 173 154 154 140 163 b 143 180 140 176 141 177 b 179 166 154 194 167 174 l 372 27 l 566 153 b 613 171 580 161 596 170 b 635 160 624 171 635 174 b 621 147 635 153 626 150 l 429 24 b 400 6 419 19 409 13 b 569 -117 456 -35 513 -75 b 611 -177 588 -130 608 -143 z"},noteheadXHalf:{x_min:0,x_max:421,y_min:-145.51844828189743,y_max:151,ha:296.51844828189746,o:"m 490 -209 b 539 -207 505 -207 521 -207 b 606 -209 560 -207 583 -209 b 598 -196 602 -203 600 -199 l 406 -19 l 540 130 b 547 144 546 135 547 140 b 536 156 547 148 543 153 b 488 192 518 166 503 176 b 416 217 471 209 444 217 b 323 180 380 217 344 204 l 264 115 b 239 138 256 122 248 131 b 33 197 180 196 108 200 b 3 186 23 197 6 193 b 19 154 -1 174 10 163 b 171 12 69 107 120 59 b 19 -157 120 -45 69 -101 b 0 -177 14 -163 0 -166 b 1 -181 0 -179 0 -180 b 39 -203 9 -197 22 -203 l 186 -203 b 197 -202 190 -202 193 -200 l 213 -202 b 262 -180 228 -202 246 -199 l 314 -122 b 490 -209 363 -170 412 -216 z m 435 -148 b 291 -30 379 -112 337 -69 l 213 -118 b 190 -137 207 -125 202 -137 b 145 -111 173 -130 154 -127 b 160 -79 137 -98 151 -88 b 238 16 184 -48 212 -16 b 141 99 204 43 173 72 l 124 117 b 115 132 121 121 115 127 b 118 137 115 134 117 137 b 141 132 127 147 135 138 l 253 36 b 347 150 285 75 315 112 b 370 164 354 160 363 163 b 403 145 382 164 393 156 b 416 127 412 140 416 132 b 405 102 416 118 412 111 l 307 -10 b 413 -105 343 -42 379 -73 b 435 -148 425 -115 436 -125 z"},noteheadXBlack:{x_min:0,x_max:289,y_min:-156,y_max:157,ha:313,o:"m 23 -225 b 69 -204 40 -223 56 -219 b 137 -131 92 -180 115 -157 l 209 -50 b 377 -197 264 -101 321 -148 b 403 -210 384 -203 393 -210 l 408 -210 b 416 -192 416 -207 416 -199 l 416 -186 b 403 -148 416 -171 413 -158 b 344 -81 384 -125 367 -101 b 252 -1 312 -55 282 -29 b 377 157 297 49 340 101 b 402 202 387 170 402 187 b 395 217 402 207 400 213 b 376 226 389 223 382 226 b 334 192 360 226 346 204 b 206 42 289 143 248 94 b 96 161 167 81 131 120 b 60 193 86 174 76 189 b 33 206 52 196 42 206 b 22 199 29 206 26 204 b 10 173 14 190 10 181 b 22 147 10 166 14 157 b 148 7 62 98 104 52 b 164 -7 154 1 158 -3 b 10 -189 111 -66 55 -122 b 0 -212 6 -197 0 -203 b 1 -217 0 -213 0 -216 b 23 -225 4 -226 14 -222 z"},noteheadCircleXDoubleWhole:{x_min:0,x_max:437,y_min:-220,y_max:219.03988406941295,ha:439.03988406941295,o:"m 10 -304 b 40 -206 43 -275 37 -239 b 55 168 48 -81 50 45 b 53 269 56 202 55 236 b 33 315 52 287 46 314 b 3 269 9 317 4 291 b 0 239 1 259 0 249 l 0 -196 b 10 -304 1 -232 7 -268 z m 592 -317 b 621 -220 619 -287 621 -253 b 622 -121 622 -187 622 -154 b 625 -20 622 -88 622 -55 b 629 101 628 20 629 60 b 628 220 629 141 628 181 b 618 253 628 232 625 243 b 608 275 613 259 616 274 b 602 272 606 275 603 275 b 575 249 590 269 575 266 l 575 246 b 573 222 575 239 573 230 l 573 -50 b 592 -317 575 -137 570 -225 z m 79 -285 b 114 -6 96 -261 109 -131 b 117 -63 114 -24 114 -45 b 249 -242 124 -151 166 -212 b 324 -256 275 -252 300 -256 b 504 -137 406 -256 478 -209 b 505 -265 504 -180 505 -222 b 513 -282 505 -269 510 -275 b 533 -248 526 -272 528 -261 b 540 -174 539 -223 540 -199 l 540 -127 b 553 207 546 -16 549 95 b 543 232 553 216 554 232 b 518 207 530 233 518 222 b 511 118 520 177 510 148 l 511 92 b 330 216 488 174 420 223 b 301 215 320 216 311 216 b 122 65 202 204 151 163 b 114 9 117 46 114 27 b 115 75 114 32 115 53 b 101 248 115 157 109 228 b 76 206 78 242 76 225 l 76 91 b 75 -26 76 52 76 13 b 69 -189 72 -81 66 -134 b 79 -285 71 -219 76 -249 z m 317 4 b 219 109 285 40 252 75 l 209 120 b 331 153 248 141 289 151 b 420 137 360 153 390 147 b 446 120 435 131 442 127 l 436 108 l 328 -7 z m 215 -131 b 216 -101 215 -122 215 -114 b 219 -45 217 -82 219 -63 b 197 94 219 3 213 49 l 197 95 b 199 94 199 95 199 94 l 310 -27 b 233 -108 285 -55 259 -81 z m 442 -141 b 432 -122 441 -134 436 -128 l 344 -26 l 426 58 l 445 81 b 444 75 445 78 444 76 b 428 -13 433 46 428 16 b 446 -104 428 -45 433 -75 b 452 -122 449 -111 452 -117 b 442 -141 452 -131 448 -137 z m 323 -190 b 272 -180 305 -187 288 -184 b 217 -158 239 -173 225 -168 l 327 -45 b 330 -48 328 -46 328 -48 b 432 -150 363 -82 393 -121 b 323 -190 400 -174 364 -189 z"},noteheadCircleXWhole:{x_min:0,x_max:323,y_min:-190,y_max:184.44625787787314,ha:374.4462578778731,o:"m 156 -258 b 240 -274 184 -268 213 -274 b 455 -101 347 -274 441 -202 b 465 19 462 -60 465 -22 b 464 71 465 36 465 52 b 246 265 455 194 370 274 b 216 264 236 265 226 264 b 12 94 102 251 45 203 b 0 13 3 66 1 40 b 4 -55 0 -10 3 -32 b 156 -258 14 -154 60 -222 z m 245 10 b 233 23 242 14 238 19 b 121 144 196 65 158 104 l 109 154 b 249 192 156 179 202 192 b 351 174 284 192 317 186 b 380 154 366 168 376 163 b 379 153 380 154 380 153 b 369 141 376 148 372 145 b 245 10 327 98 287 53 z m 115 -131 b 118 -96 117 -121 117 -111 b 121 -27 120 -73 121 -50 b 98 124 121 24 115 75 b 96 127 96 125 98 125 b 99 125 98 127 98 125 b 225 -12 140 79 181 33 l 138 -105 b 115 -131 131 -114 122 -121 z m 376 -143 b 363 -121 374 -134 369 -128 b 265 -12 331 -85 298 -48 l 357 85 b 379 111 364 94 372 101 b 377 102 379 108 377 105 b 359 4 364 71 359 37 b 382 -99 359 -32 366 -66 b 387 -121 384 -108 386 -115 b 376 -143 387 -130 382 -135 z m 239 -197 b 181 -187 220 -194 200 -192 b 121 -161 145 -177 128 -173 b 243 -33 161 -118 203 -75 l 248 -36 b 364 -153 285 -75 320 -118 b 239 -197 327 -180 287 -197 z"},noteheadCircleXHalf:{x_min:0,x_max:309,y_min:-179,y_max:179,ha:358,o:"m 232 -258 b 435 -94 328 -258 412 -196 b 445 6 444 -60 445 -27 b 444 69 445 27 445 48 b 258 258 439 170 374 258 l 230 258 l 207 256 b 14 107 111 248 45 202 b 0 12 4 75 0 43 b 12 -82 0 -20 4 -50 b 144 -242 27 -160 69 -212 b 232 -258 174 -252 203 -258 z m 192 60 b 115 141 166 88 141 115 l 108 150 b 226 189 141 173 186 189 b 253 186 236 189 245 187 b 305 180 271 183 288 183 b 192 60 268 140 229 101 z m 56 -78 b 45 6 43 -56 45 -23 b 65 84 49 39 50 45 b 85 121 72 96 78 107 b 95 124 88 124 92 127 b 171 39 120 95 145 68 z m 360 -132 b 348 -112 359 -124 353 -118 l 300 -58 l 387 37 b 410 63 397 48 405 56 b 413 26 412 52 413 40 b 360 -132 413 -42 393 -95 z m 232 -183 b 184 -177 217 -183 202 -181 l 281 -78 b 348 -143 301 -101 323 -122 b 232 -183 318 -168 279 -183 z"},noteheadCircleX:{x_min:0,x_max:344,y_min:-179,y_max:175.12551922594866,ha:354.12551922594866,o:"m 99 -210 b 236 -258 137 -242 186 -258 b 418 -183 305 -258 374 -230 b 495 33 475 -120 495 -48 b 494 66 495 45 494 55 b 302 252 487 183 405 256 b 181 243 262 249 222 248 b 46 171 128 236 79 219 b 0 19 14 127 0 73 b 99 -210 0 -68 35 -156 z m 245 42 l 124 156 b 200 176 145 166 170 173 b 337 183 245 181 291 184 b 377 176 351 183 364 180 b 245 42 333 131 288 86 z m 392 -99 l 285 3 l 400 121 b 418 154 409 131 418 140 b 465 50 448 130 465 94 b 405 -112 462 -17 439 -73 z m 89 -120 b 48 0 56 -82 48 -42 b 89 112 48 35 59 76 b 109 101 96 111 102 108 l 210 7 l 187 -17 b 89 -120 151 -53 125 -82 z m 176 -183 b 127 -163 158 -179 141 -171 l 252 -32 l 372 -144 b 233 -189 334 -173 285 -189 b 176 -183 215 -189 196 -187 z"},noteheadCircledDoubleWhole:{x_min:0,x_max:672,y_min:-291,y_max:291,ha:582,o:"m 27 -419 b 43 -369 37 -403 43 -387 b 49 -82 45 -272 49 -177 b 50 370 50 69 50 219 b 30 419 50 389 50 419 b 7 369 7 419 7 389 b 0 -284 4 151 1 -66 b 16 -418 0 -328 10 -373 z m 945 -374 b 968 -282 963 -343 968 -312 b 966 -245 968 -269 968 -258 b 958 -45 959 -179 962 -111 b 948 262 949 56 952 160 b 936 377 946 301 946 340 b 922 399 933 386 933 399 l 919 397 b 897 374 909 396 899 389 b 894 308 897 353 893 331 b 904 120 899 246 903 183 b 913 -111 907 43 909 -35 b 927 -297 916 -173 919 -235 b 945 -374 930 -320 927 -347 z m 95 -347 b 120 -292 115 -325 117 -310 b 124 -223 122 -269 124 -246 b 122 -141 124 -196 122 -168 b 121 -85 121 -122 121 -104 b 462 -297 170 -209 300 -297 b 727 -219 543 -294 639 -271 b 828 -118 773 -190 808 -157 b 842 -268 831 -168 834 -219 b 851 -288 844 -275 840 -287 b 865 -272 861 -289 863 -279 b 873 -225 871 -256 873 -240 b 873 -171 873 -207 871 -190 b 858 196 868 -48 863 75 b 848 295 857 229 854 262 b 840 315 848 301 850 315 l 837 315 b 816 295 827 314 816 307 b 809 216 815 268 808 243 b 815 102 812 179 814 140 b 672 295 780 176 733 240 b 500 370 621 340 566 370 b 436 361 480 370 459 367 b 120 95 288 321 183 233 l 120 256 b 115 287 120 266 118 276 b 104 305 112 292 115 305 l 101 305 b 82 284 91 304 82 297 b 76 216 81 262 76 239 b 84 -253 78 59 79 -96 b 95 -347 84 -282 89 -311 z m 780 -33 b 779 -24 780 -30 779 -27 b 704 92 766 22 743 62 b 544 173 655 128 599 147 b 400 206 497 194 448 204 b 307 193 369 206 338 202 b 202 118 264 181 226 153 b 235 168 212 135 222 151 b 505 337 302 262 396 312 b 523 338 511 337 517 338 b 611 288 559 338 586 312 b 763 62 678 225 733 151 b 780 -33 776 26 782 -4 z m 435 -88 b 337 -23 387 -88 354 -65 b 333 6 334 -14 333 -6 b 366 86 333 35 344 66 b 456 122 390 111 423 121 b 602 27 517 122 582 88 b 606 1 605 19 606 10 b 575 -49 606 -20 596 -36 b 435 -88 530 -76 481 -82 z m 441 -269 b 194 -96 327 -262 249 -194 b 167 1 176 -62 167 -30 b 177 59 167 22 171 42 b 174 39 176 52 174 46 b 266 -104 174 -27 210 -73 b 511 -151 346 -148 435 -144 l 552 -151 b 740 -104 616 -145 683 -141 b 776 -66 756 -94 769 -81 b 700 -174 766 -105 740 -140 b 441 -269 632 -232 533 -268 z"},noteheadCircledWhole:{x_min:-50,x_max:472,y_min:-231.00750990437078,y_max:232,ha:463.00750990437075,o:"m 289 -333 b 553 -255 370 -330 465 -307 b 680 -62 635 -206 680 -138 b 662 22 680 -36 674 -7 b 500 259 626 112 573 193 b 327 334 448 304 393 334 b 264 325 307 334 287 331 b -59 49 111 284 4 193 b -72 -19 -68 26 -72 4 b 289 -333 -72 -192 84 -334 z m 608 -69 b 605 -60 606 -66 606 -63 b 530 56 592 -14 570 26 b 372 137 482 92 425 111 b 228 170 324 158 275 168 b 134 157 196 170 166 166 b 29 82 91 145 53 117 b 60 132 37 99 49 115 b 333 301 128 226 223 276 b 350 302 338 301 344 302 b 438 252 386 302 413 276 b 590 26 505 189 560 115 b 608 -69 603 -10 608 -40 z m 262 -124 b 164 -59 215 -124 180 -101 b 160 -32 161 -50 160 -42 b 193 50 160 -3 171 30 b 284 86 217 75 251 85 b 429 -9 344 86 409 52 b 433 -36 432 -17 433 -26 b 402 -85 433 -56 423 -72 b 262 -124 357 -112 307 -118 z m 268 -305 b 22 -132 154 -298 76 -230 b -6 -33 3 -98 -6 -65 b 3 23 -6 -14 -3 6 b 1 3 1 16 1 10 b 94 -140 1 -63 37 -109 b 338 -187 173 -184 261 -180 l 379 -187 b 566 -140 444 -181 510 -177 b 602 -102 582 -130 595 -117 b 526 -210 592 -141 567 -176 b 268 -305 459 -268 360 -304 z"},noteheadCircledHalf:{x_min:-50,x_max:393,y_min:-175,y_max:175,ha:350,o:"m 540 39 b 408 187 503 94 464 148 b 259 252 356 223 301 252 b 35 192 160 252 95 229 b -68 50 -17 160 -53 112 b -72 13 -71 37 -72 24 b 69 -204 -72 -79 -1 -161 b 246 -252 125 -238 186 -252 b 500 -164 336 -252 426 -219 b 566 -42 543 -132 566 -88 b 540 39 566 -14 557 14 z m 9 -42 b 12 -68 10 -50 10 -59 b -7 6 3 -46 -4 -22 b 131 189 1 98 55 153 b 243 220 167 206 204 215 b 261 222 249 222 255 222 b 377 161 308 222 341 189 b 435 89 402 141 420 117 b 431 92 433 89 432 91 b 346 120 402 102 372 107 b 253 143 314 135 282 143 b 85 79 193 143 138 115 b 9 -42 45 52 10 13 z m 356 39 b 343 1 356 24 351 12 b 206 -111 304 -46 259 -84 b 181 -118 196 -115 189 -118 b 156 -71 163 -118 154 -102 b 238 35 164 -22 199 9 b 324 66 264 52 294 59 b 356 39 348 71 356 62 z m 488 -78 b 392 -176 471 -125 433 -154 b 246 -225 346 -200 297 -217 b 230 -226 240 -226 235 -226 b 157 -204 203 -226 180 -215 b 78 -154 128 -190 101 -174 b 232 -184 128 -171 180 -184 b 344 -161 269 -184 307 -179 b 491 -39 405 -135 455 -94 b 500 -23 495 -33 497 -29 b 488 -78 500 -40 494 -59 z"},noteheadCircledBlack:{x_min:-70,x_max:326,y_min:-168,y_max:192,ha:360,o:"m 176 -239 b 190 -242 180 -240 186 -240 b 262 -232 213 -242 238 -235 b 469 -19 384 -225 469 -131 b 467 22 469 -6 468 9 b 383 194 455 86 436 151 b 183 276 315 249 251 275 b 32 236 134 276 85 264 b -94 88 -30 207 -75 160 b -101 30 -98 69 -101 49 b 176 -239 -101 -107 9 -251 z m 177 -212 b -30 -27 81 -213 -13 -131 b -33 17 -33 -13 -33 3 b 127 226 -33 111 14 187 b 194 239 151 233 173 238 b 301 203 232 239 266 226 b 364 134 330 184 350 160 b 233 181 341 160 279 180 b 192 171 216 181 202 179 b 13 1 117 131 46 86 b 3 -48 6 -17 3 -33 b 60 -115 3 -79 20 -101 b 203 -135 105 -131 151 -138 b 229 -138 212 -137 220 -137 b 295 -122 251 -138 274 -135 b 400 -33 337 -99 373 -71 b 228 -206 393 -125 330 -192 b 177 -212 209 -209 192 -213 z"},noteheadDoubleWholeSquare:{x_min:0,x_max:474,y_min:-209.39230484541326,y_max:211,ha:420.39230484541326,o:"m 648 -301 b 668 -287 658 -304 665 -295 b 683 -209 678 -262 683 -235 b 677 258 681 -55 678 102 b 672 284 677 266 677 276 b 661 304 670 291 672 304 l 658 304 b 635 279 647 301 635 297 b 629 240 635 266 629 252 l 629 236 b 631 225 629 232 631 228 b 583 194 631 197 611 194 l 528 194 b 125 207 393 194 259 202 b 89 207 114 209 101 206 b 63 210 79 207 71 207 b 52 229 55 213 52 220 b 55 258 52 238 55 248 b 53 266 55 261 55 264 b 36 298 48 276 53 298 l 35 298 b 4 264 14 298 7 284 b 0 187 0 238 0 213 b 4 50 0 143 3 96 b 6 -10 6 30 6 10 b 4 -130 6 -50 4 -91 b 12 -268 4 -176 6 -222 b 19 -287 13 -275 10 -284 b 35 -275 26 -288 30 -281 b 52 -220 50 -261 48 -239 b 75 -199 55 -206 58 -199 l 141 -197 l 274 -197 l 634 -197 b 639 -281 635 -219 636 -251 b 648 -301 641 -288 638 -300 z m 72 -66 b 55 -56 59 -69 55 -65 l 55 -50 b 53 53 55 -16 55 20 b 69 73 53 69 60 72 l 79 72 b 330 65 163 66 246 63 l 592 65 b 634 81 606 65 618 71 b 635 -30 634 39 635 6 b 605 -58 635 -49 628 -58 b 451 -60 553 -60 503 -60 b 219 -59 373 -60 295 -59 l 166 -59 b 72 -66 134 -59 104 -60 z"},noteheadSquareWhite:{x_min:0,x_max:350,y_min:-131,y_max:131,ha:262,o:"m 468 -189 b 485 -187 474 -189 480 -189 b 500 -176 495 -187 500 -183 b 498 -168 500 -174 498 -171 b 497 -166 498 -167 497 -167 l 498 -164 b 504 -154 503 -163 504 -158 b 503 -138 504 -150 503 -144 l 503 -135 l 503 -94 b 492 66 500 -45 494 10 b 488 135 492 89 488 112 b 484 150 488 141 485 145 b 482 154 482 151 482 153 b 429 189 472 177 456 189 b 53 184 304 186 179 186 l 39 184 b 33 181 36 183 35 183 b 12 160 20 181 12 177 b 0 -109 9 71 4 -19 b 19 -137 0 -125 7 -134 b 23 -151 19 -141 20 -145 b 85 -187 37 -173 55 -187 b 468 -189 212 -187 340 -187 z m 246 -125 l 63 -125 b 66 -111 65 -122 66 -117 b 73 72 69 -50 71 10 l 73 130 b 88 128 78 128 82 128 b 148 130 108 130 128 130 b 271 128 190 130 230 128 l 271 130 l 420 130 b 428 20 425 92 425 56 l 436 -127 l 246 -127 z"},noteheadSquareBlack:{x_min:0,x_max:342,y_min:-129.98961937716263,y_max:132.44444444444446,ha:262.4340638216071,o:"m 217 190 b 439 186 304 190 372 190 b 467 180 448 184 458 183 b 492 145 484 176 492 167 b 490 -124 490 56 490 -33 b 488 -141 490 -130 488 -135 b 456 -170 488 -163 478 -168 b 118 -183 344 -176 230 -181 b 29 -184 89 -183 60 -192 b 0 -148 4 -180 0 -168 b 1 29 1 -89 1 -30 l 1 156 b 36 190 3 187 4 190 b 217 190 102 192 168 190 z"},noteheadTriangleDownDoubleWhole:{x_min:0,x_max:510,y_min:-213,y_max:213,ha:426,o:"m 16 -307 b 30 -289 26 -307 29 -297 b 43 -236 36 -272 42 -253 l 65 219 b 59 285 62 240 69 264 b 46 307 55 294 58 307 l 43 307 b 19 279 30 304 20 295 b 13 184 17 248 14 216 b 1 -125 9 81 7 -23 b 0 -163 0 -138 0 -150 b 6 -287 0 -204 4 -245 b 16 -307 6 -295 7 -305 z m 707 -294 b 734 -213 733 -271 734 -242 b 729 245 733 -60 730 92 b 719 285 729 259 724 272 b 707 298 716 291 714 298 l 703 298 b 685 284 696 297 687 292 b 683 253 683 274 683 264 b 691 -181 685 108 685 -36 b 707 -294 693 -217 690 -256 z m 108 -238 b 125 -203 125 -238 121 -216 b 127 -190 127 -199 127 -194 b 120 -138 127 -173 120 -156 l 120 -66 b 114 167 120 12 118 89 l 118 161 b 314 -153 184 58 248 -48 b 350 -184 327 -173 338 -184 b 387 -154 361 -184 374 -174 b 567 108 449 -68 508 20 b 626 193 588 137 608 164 b 615 -132 622 85 619 -24 l 615 -166 b 619 -207 615 -180 615 -194 b 638 -226 622 -217 629 -225 b 651 -209 648 -226 649 -216 b 658 -177 655 -199 658 -187 l 658 -171 b 667 49 655 -98 667 -23 b 665 88 667 62 667 75 b 665 220 665 135 667 179 b 641 265 664 238 660 265 b 626 243 629 265 626 255 b 628 222 626 236 628 228 b 612 225 624 223 619 225 b 384 223 537 223 461 223 l 384 225 l 170 225 b 131 215 157 225 144 222 b 112 200 122 210 117 206 b 88 266 111 225 108 249 b 75 239 76 259 75 249 b 73 147 75 207 73 179 b 82 -189 73 35 79 -78 b 84 -203 82 -194 82 -199 b 108 -238 86 -219 91 -238 z m 361 -79 b 295 78 336 -26 314 26 b 284 151 287 101 284 125 b 310 177 284 171 291 177 b 419 176 346 176 383 174 l 423 176 b 445 153 441 176 445 168 l 445 147 b 361 -79 442 65 415 -10 z"},noteheadTriangleDownWhole:{x_min:0,x_max:366,y_min:-145,y_max:138,ha:283,o:"m 242 -209 b 279 -180 253 -209 266 -200 b 459 84 341 -92 400 -4 b 520 170 480 112 501 141 b 527 189 524 177 527 183 b 504 199 527 196 520 199 l 55 199 b 23 190 45 199 33 196 b 0 161 9 181 0 173 b 10 135 0 154 3 145 b 206 -177 76 32 140 -73 b 242 -209 219 -199 230 -209 z m 253 -105 b 187 52 228 -52 206 0 b 176 127 179 76 176 101 b 197 151 176 144 181 151 l 202 151 b 256 150 220 151 238 150 b 311 151 275 150 294 151 b 337 128 331 151 337 144 l 337 122 b 253 -105 334 39 307 -35 z"},noteheadTriangleDownHalf:{x_min:-.0833130378007211,x_max:341,y_min:-159,y_max:159,ha:318,o:"m 266 -229 b 282 -215 274 -229 278 -225 b 487 153 350 -92 418 30 b 491 170 490 158 491 164 b 480 189 491 177 487 183 b 425 215 464 202 448 213 b 33 226 297 217 168 222 b 13 229 29 223 22 229 b 1 222 9 229 4 228 b 14 184 -4 207 7 196 b 210 -176 81 65 145 -56 b 253 -225 222 -194 230 -213 b 266 -229 259 -226 264 -228 z m 134 22 b 147 43 138 27 141 37 b 206 163 174 79 179 127 b 213 170 209 166 212 167 l 340 167 b 193 -75 287 89 251 1 b 190 -82 192 -76 190 -79 z"},noteheadTriangleDownBlack:{x_min:0,x_max:346,y_min:-149,y_max:149,ha:298,o:"m 229 -215 b 259 -202 238 -215 248 -210 b 284 -173 269 -194 278 -184 l 482 173 b 498 209 488 184 498 194 b 481 215 492 215 487 215 b 63 213 343 215 203 213 b 12 197 45 213 29 206 b 0 180 4 193 0 187 b 3 168 0 177 1 173 b 13 150 6 163 9 156 l 196 -189 b 229 -215 206 -206 216 -215 z"},noteheadTriangleUpDoubleWhole:{x_min:0,x_max:510,y_min:-213,y_max:213,ha:426,o:"m 16 -307 b 30 -289 26 -307 29 -297 b 43 -236 36 -272 42 -253 l 65 219 b 59 285 62 240 69 264 b 46 307 55 294 58 307 l 43 307 b 19 279 30 304 20 295 b 13 184 17 248 14 216 b 1 -125 9 81 7 -23 b 0 -163 0 -138 0 -150 b 6 -287 0 -204 4 -245 b 16 -307 6 -295 7 -305 z m 707 -298 b 734 -217 733 -275 734 -246 b 729 240 733 -65 730 88 b 719 281 729 255 724 268 b 707 294 716 287 714 294 l 703 294 b 685 279 696 292 687 288 b 683 249 683 269 683 259 b 691 -186 685 104 685 -40 b 707 -298 693 -222 690 -261 z m 88 -266 b 112 -200 108 -249 111 -225 b 131 -215 117 -206 122 -210 b 170 -225 144 -222 157 -225 l 384 -225 l 384 -223 b 612 -225 461 -223 537 -223 b 628 -222 619 -225 624 -223 b 641 -265 628 -238 622 -265 b 665 -220 660 -265 664 -238 b 665 -88 667 -179 665 -135 b 667 -49 667 -75 667 -62 b 658 171 667 23 655 98 b 651 209 660 184 655 197 b 638 226 649 216 648 226 b 619 207 629 225 622 217 b 615 166 615 194 615 180 l 615 132 b 626 -193 619 24 622 -85 b 567 -108 608 -164 588 -137 b 387 154 508 -20 449 68 b 350 184 374 174 361 184 b 314 153 338 184 327 173 b 118 -161 248 48 184 -58 l 114 -167 b 120 66 118 -89 120 -12 l 120 138 b 127 190 120 156 127 173 b 125 203 127 194 127 199 b 108 238 121 216 125 238 b 84 203 91 238 86 219 b 82 189 82 199 82 194 b 73 -147 79 78 73 -35 b 75 -239 73 -179 75 -207 b 88 -266 75 -249 76 -259 z m 310 -177 b 284 -151 291 -177 284 -171 b 295 -78 284 -125 287 -101 b 361 79 314 -26 336 26 b 445 -147 415 10 442 -65 b 423 -176 446 -166 442 -176 l 419 -176 b 310 -177 383 -174 346 -176 z"},noteheadTriangleUpWhole:{x_min:0,x_max:366,y_min:-145,y_max:138,ha:283,o:"m 504 -209 b 527 -199 520 -209 527 -206 b 520 -180 527 -193 524 -187 b 459 -94 501 -151 480 -122 b 279 170 400 -6 341 82 b 242 199 266 190 253 199 b 206 167 230 199 219 189 b 10 -145 140 63 76 -42 b 0 -171 3 -156 0 -164 b 23 -200 0 -183 9 -192 b 55 -209 33 -206 45 -209 z m 202 -161 b 176 -137 183 -163 176 -156 b 187 -62 176 -111 179 -86 b 253 95 206 -10 228 42 b 337 -132 307 24 334 -49 b 311 -161 338 -153 334 -161 b 256 -160 294 -161 275 -160 b 202 -161 238 -160 220 -161 z"},noteheadTriangleUpHalf:{x_min:0,x_max:341.0833130378007,y_min:-159,y_max:159,ha:318,o:"m 458 -226 b 478 -229 462 -223 469 -229 b 490 -222 482 -229 487 -228 b 477 -184 495 -207 484 -196 b 281 176 410 -65 346 56 b 238 225 269 194 261 213 b 225 229 232 226 228 228 b 209 215 217 229 213 225 b 4 -153 141 92 73 -30 b 0 -170 1 -158 0 -164 b 12 -189 0 -177 4 -183 b 66 -215 27 -202 43 -213 b 458 -226 194 -217 323 -222 z m 151 -167 b 298 75 204 -89 240 -1 b 301 82 300 76 301 79 l 357 -22 b 344 -43 353 -27 350 -37 b 285 -163 317 -79 312 -127 b 278 -170 282 -166 279 -167 z"},noteheadTriangleUpBlack:{x_min:0,x_max:346,y_min:-149,y_max:149,ha:298,o:"m 481 -215 b 498 -209 487 -215 492 -215 b 482 -173 498 -194 488 -184 l 284 173 b 259 202 278 184 269 194 b 229 215 248 210 238 215 b 196 189 216 215 206 206 l 13 -150 b 3 -168 9 -156 6 -163 b 0 -180 1 -173 0 -177 b 12 -197 0 -187 4 -193 b 63 -213 29 -206 45 -213 b 481 -215 203 -213 343 -215 z"},noteheadSlashedDoubleWhole1:{x_min:0,x_max:697,y_min:-290,y_max:290,ha:580,o:"m 20 -418 b 42 -376 40 -418 37 -392 b 43 -356 45 -370 43 -363 l 43 -348 b 50 -197 43 -298 49 -248 b 78 317 58 -24 69 147 b 72 387 75 343 82 366 b 52 418 68 397 69 418 l 49 416 b 24 380 33 413 24 399 b 19 235 23 333 20 284 b 7 -82 14 130 10 24 b 0 -264 6 -143 0 -203 b 10 -382 0 -302 1 -343 b 20 -418 13 -393 6 -418 z m 976 -344 b 991 -331 985 -346 988 -337 b 1004 -271 999 -312 1004 -292 l 1004 -194 b 996 184 1004 -68 1001 59 b 996 281 996 216 998 249 b 984 379 995 314 991 347 b 971 397 981 392 976 396 b 952 386 965 397 959 392 b 943 361 943 380 945 370 b 937 288 939 337 937 312 b 945 158 937 245 942 203 b 959 -248 950 23 953 -112 b 966 -325 960 -274 963 -300 b 976 -344 966 -334 968 -344 z m 102 -331 b 124 -272 120 -314 122 -294 b 135 -278 127 -276 131 -278 l 141 -278 b 320 -199 206 -262 272 -252 b 348 -171 328 -189 338 -180 b 482 -199 392 -190 436 -199 b 704 -173 576 -199 641 -187 b 847 -82 760 -158 809 -130 l 855 -69 l 855 -73 b 863 -229 857 -125 860 -177 b 876 -255 863 -239 863 -255 b 893 -233 886 -255 888 -242 b 900 -189 899 -219 900 -203 l 900 66 b 900 192 899 108 900 150 b 893 301 900 228 899 265 b 877 325 890 310 893 325 l 876 325 b 855 301 865 324 855 315 b 850 202 852 268 847 235 b 854 50 854 151 854 101 b 821 99 847 68 835 85 b 733 167 795 127 765 148 b 831 253 766 196 799 225 b 851 265 837 258 844 261 b 829 282 840 275 835 279 b 772 295 815 291 795 295 b 685 271 739 295 704 287 b 624 215 665 252 645 233 l 566 232 b 527 239 553 236 540 239 b 490 228 514 239 501 236 b 451 219 475 217 467 219 b 275 176 389 219 331 200 b 184 53 216 150 184 105 b 199 -14 184 32 189 10 b 262 -108 215 -52 236 -82 l 125 -230 b 134 225 130 -78 132 73 b 135 269 134 239 135 255 b 121 330 135 291 132 311 b 95 287 99 323 95 307 b 92 124 94 233 95 179 b 85 -143 88 36 85 -53 b 89 -300 85 -196 86 -248 b 102 -331 89 -311 89 -323 z m 367 -14 b 350 43 359 3 351 22 b 392 122 350 82 363 107 b 544 171 439 150 492 160 b 572 168 554 174 563 171 z m 564 -132 b 467 -105 528 -138 497 -121 b 442 -89 458 -101 449 -95 l 658 101 b 690 30 677 82 690 59 b 688 10 690 24 690 17 b 564 -132 678 -45 611 -127 z"},noteheadSlashedWhole1:{x_min:-76,x_max:498,y_min:-168,y_max:168,ha:336,o:"m -79 -242 b 55 -202 -32 -236 14 -228 l 145 -143 b 333 -171 203 -166 265 -171 b 429 -164 361 -174 395 -168 b 582 -130 481 -158 534 -154 b 657 -20 631 -105 657 -65 b 619 68 657 9 644 40 b 552 120 599 89 577 107 b 582 138 562 127 572 132 b 717 226 625 167 668 194 b 638 242 688 236 662 242 b 543 213 603 242 573 232 b 455 154 514 194 484 174 b 325 199 412 167 367 179 b 233 215 298 210 265 215 b 75 156 173 215 124 186 b 0 27 24 122 0 76 b 66 -98 0 -17 22 -63 b 72 -102 69 -99 71 -101 b -89 -209 17 -137 -36 -173 b -109 -225 -95 -213 -109 -216 b -108 -229 -109 -226 -108 -228 b -85 -242 -104 -239 -95 -242 z m 181 -29 b 167 14 171 -13 167 1 b 187 62 167 30 173 46 b 301 137 217 99 258 118 b 312 138 304 138 308 138 l 317 138 b 389 109 340 125 364 118 l 383 105 z m 337 -109 b 239 -82 301 -107 268 -99 l 468 65 b 482 24 477 53 482 40 b 480 4 482 19 481 12 b 337 -109 467 -56 399 -111 z"},noteheadSlashedHalf1:{x_min:-79.3435119522494,x_max:471,y_min:-184,y_max:184,ha:368,o:"m -112 -251 b -94 -265 -107 -261 -101 -264 b -52 -242 -79 -265 -63 -249 l 89 -148 b 212 -180 125 -170 167 -179 b 238 -177 220 -180 229 -179 l 262 -180 b 346 -171 289 -180 318 -176 b 576 -91 431 -166 507 -140 b 641 4 619 -60 641 -29 b 592 96 641 35 625 65 l 583 104 b 533 147 567 121 550 134 l 613 200 b 678 261 636 216 664 232 b 658 265 671 264 664 265 b 611 248 641 265 625 258 l 491 171 b 337 204 444 194 392 204 b 281 200 318 204 300 204 b 27 62 180 187 92 145 b -1 -19 9 37 -1 10 b 36 -107 -1 -50 12 -82 b 52 -121 42 -112 46 -117 l -72 -203 b -112 -251 -91 -216 -122 -233 z m 161 -49 b 158 -29 160 -42 158 -35 b 183 33 158 -7 167 16 b 395 137 239 95 311 122 b 420 125 405 134 413 130 z m 276 -128 b 261 -131 271 -130 266 -131 b 181 -86 233 -131 203 -114 l 454 94 l 468 72 b 481 36 477 60 481 49 b 469 1 481 26 477 14 b 276 -128 422 -66 354 -105 z"},noteheadSlashedBlack1:{x_min:-110,x_max:452,y_min:-190,y_max:190,ha:380,o:"m -131 -274 b -102 -262 -121 -272 -111 -266 b 7 -186 -65 -239 -29 -212 b 50 -157 22 -176 36 -166 b 105 -176 65 -166 84 -173 b 207 -183 140 -181 173 -183 b 239 -184 219 -184 229 -184 b 428 -91 327 -184 377 -150 b 487 43 461 -52 487 -7 b 482 76 487 53 485 65 b 459 128 478 95 469 112 b 507 161 475 138 491 150 l 651 262 b 622 274 641 271 632 274 b 605 271 616 274 611 272 b 514 233 573 262 541 252 l 422 167 b 317 203 392 190 354 203 b 271 196 301 203 285 200 b 168 157 236 186 200 173 b 6 -16 94 120 33 68 b -1 -62 1 -32 -1 -48 b 17 -125 -1 -86 4 -108 b -81 -196 -16 -148 -48 -173 b -145 -242 -102 -212 -128 -219 b -158 -256 -150 -246 -158 -251 b -157 -261 -158 -258 -157 -259 b -131 -274 -153 -269 -141 -274 z"},noteheadSlashedDoubleWhole2:{x_min:-.12386605641055257,x_max:697.4733477320805,y_min:-295,y_max:295,ha:590,o:"m 870 -338 b 891 -315 884 -341 887 -325 b 906 -183 907 -274 903 -228 b 914 186 912 -60 904 62 b 914 240 914 203 916 222 b 916 276 913 251 916 265 b 899 300 916 289 913 300 b 871 253 874 300 871 274 b 858 -168 871 111 858 -27 b 860 -235 858 -190 860 -213 l 736 -131 b 834 -20 799 -111 834 -69 b 789 85 834 13 819 49 b 683 160 760 118 723 140 b 383 216 589 209 487 215 b 330 213 364 217 347 216 b 228 300 295 242 261 271 b 86 347 184 337 138 348 b 58 343 76 347 63 350 l 58 360 b 35 425 58 384 53 423 b 6 382 9 425 6 403 l 6 131 b 0 -164 6 33 4 -66 b 24 -327 -1 -216 6 -271 b 50 -262 46 -305 50 -284 l 50 -154 b 52 -45 50 -118 50 -81 b 58 325 55 79 58 202 b 73 310 60 320 68 315 b 94 294 79 304 86 298 b 89 271 89 287 89 278 l 89 94 b 104 -194 101 -20 88 -108 b 118 -245 107 -213 104 -248 b 140 -190 140 -243 140 -212 l 140 -62 b 132 258 140 46 138 153 l 132 259 l 235 173 b 193 132 219 161 204 148 b 153 26 167 101 153 63 b 164 -35 153 7 157 -16 b 341 -170 196 -114 261 -158 b 433 -177 372 -174 403 -177 b 619 -157 497 -177 559 -170 l 706 -230 b 799 -276 736 -258 765 -276 b 818 -274 806 -276 812 -276 l 861 -274 b 863 -312 861 -287 863 -300 b 870 -338 864 -321 858 -337 z m 966 -425 b 986 -397 979 -425 982 -408 b 991 -373 989 -390 989 -382 b 995 -239 991 -328 995 -284 b 1004 334 1001 -49 1002 143 b 995 380 1005 350 1005 367 b 982 402 989 386 992 402 l 978 400 b 949 374 965 396 950 390 b 948 333 948 360 948 346 l 948 -37 b 949 -84 949 -52 949 -68 b 946 -248 949 -132 946 -189 b 953 -396 946 -297 948 -346 b 966 -425 955 -408 950 -425 z m 624 -36 b 416 140 554 22 485 81 b 482 156 439 150 461 154 b 625 81 537 156 588 124 b 647 27 639 63 647 46 b 624 -36 647 7 638 -14 z m 469 -117 b 320 14 386 -118 320 -60 b 343 81 320 37 327 60 l 547 -95 b 469 -117 521 -105 494 -111 z"},noteheadSlashedWhole2:{x_min:-83,x_max:510,y_min:-201,y_max:198,ha:399,o:"m 734 -289 b 696 -245 726 -266 710 -256 b 586 -164 660 -217 622 -192 l 589 -161 b 654 -50 631 -135 654 -94 b 616 40 654 -19 641 13 b 305 174 536 127 420 174 b 171 151 261 174 215 167 b 166 150 170 151 168 150 b 86 209 140 170 112 189 b -94 284 32 249 -22 289 l -108 285 b -120 274 -114 285 -120 284 b -104 251 -120 266 -112 258 b 71 124 -46 209 12 166 l 85 114 b 36 72 66 102 50 89 b 0 -30 12 40 0 4 b 122 -186 0 -96 45 -160 b 343 -222 194 -210 268 -222 b 514 -197 410 -220 467 -213 l 554 -228 b 734 -289 609 -268 668 -275 z m 477 -82 b 268 73 408 -30 338 22 l 301 91 b 336 101 314 96 324 101 b 370 88 347 101 359 96 b 459 9 405 66 436 43 b 481 -56 474 -13 481 -35 b 477 -82 481 -65 480 -73 z m 310 -161 b 216 -143 276 -161 246 -156 b 166 -72 181 -128 166 -105 b 168 -46 166 -65 167 -55 b 206 26 176 -16 189 7 b 436 -140 282 -29 360 -84 b 382 -158 420 -150 402 -157 b 310 -161 357 -161 333 -161 z"},noteheadSlashedHalf2:{x_min:-73,x_max:454,y_min:-188,y_max:188,ha:376,o:"m 654 -271 b 603 -202 649 -233 625 -217 b 481 -115 563 -173 523 -144 b 564 -60 510 -101 539 -82 b 615 40 596 -33 615 4 b 609 69 615 50 613 60 b 505 167 590 120 554 151 b 336 190 451 184 392 190 b 124 134 259 190 189 171 l -42 248 b -88 271 -56 256 -75 271 b -101 265 -94 271 -98 269 b -105 252 -104 259 -105 255 b -66 210 -105 235 -82 222 l 85 107 b 0 -24 42 73 0 35 b 183 -183 0 -118 75 -184 b 262 -176 206 -180 233 -177 b 438 -135 324 -171 383 -158 b 570 -228 482 -166 527 -197 b 654 -271 595 -243 621 -259 z m 393 -53 l 311 4 l 225 65 b 392 134 274 102 331 122 b 455 50 425 141 455 101 b 439 -3 455 35 451 14 b 393 -53 425 -22 409 -37 z m 287 -121 b 246 -130 272 -127 259 -130 b 171 -89 215 -130 189 -115 b 156 -40 161 -73 156 -58 b 186 29 156 -17 166 7 l 192 35 l 359 -82 b 287 -121 337 -98 312 -111 z"},noteheadSlashedBlack2:{x_min:-84,x_max:405,y_min:-189,y_max:189,ha:378,o:"m 557 -265 b 573 -272 562 -268 567 -272 b 583 -261 577 -272 580 -269 b 575 -242 580 -253 579 -248 b 524 -190 563 -220 544 -204 b 405 -99 485 -160 445 -130 b 497 50 449 -60 482 -9 b 500 72 498 58 500 65 b 478 122 500 91 492 107 b 331 186 438 167 387 186 b 120 131 258 186 186 167 l 107 124 b -52 242 53 163 1 203 b -89 265 -63 251 -76 259 b -107 272 -95 268 -101 272 b -117 266 -109 272 -114 271 b -121 251 -120 262 -121 256 b -114 235 -121 245 -120 239 b -60 186 -96 217 -81 199 b 63 95 -20 156 22 125 b -1 -35 26 66 -1 27 b 137 -183 -1 -130 46 -183 b 174 -180 148 -183 161 -181 l 245 -171 b 366 -128 289 -166 331 -150 l 426 -171 b 557 -265 469 -203 514 -233 z"},noteheadDiamondDoubleWhole:{x_min:0,x_max:429,y_min:-221,y_max:221,ha:442,o:"m 22 -318 b 42 -294 33 -318 37 -302 b 46 -266 45 -285 45 -275 b 50 -219 49 -249 50 -233 b 48 -153 50 -197 49 -176 b 43 120 43 -62 43 29 l 43 253 b 37 298 43 269 45 284 b 26 318 35 305 35 318 l 24 318 b 1 295 13 317 3 308 b 0 268 0 285 0 276 l 0 -121 b 10 -291 0 -177 1 -235 b 22 -318 12 -301 10 -318 z m 593 -312 b 618 -256 611 -294 616 -276 l 618 -186 b 611 253 618 -40 612 108 b 605 276 611 261 608 268 b 589 295 600 284 600 297 b 567 272 577 294 569 285 l 567 251 b 575 -197 573 102 575 -48 b 593 -312 575 -233 579 -271 z m 99 -268 b 114 -256 107 -269 111 -262 b 127 -196 124 -238 125 -217 b 128 -144 128 -179 128 -161 b 122 -9 128 -99 125 -55 l 135 -19 b 344 -179 206 -71 276 -122 b 370 -190 354 -186 363 -190 b 395 -173 379 -190 386 -184 b 492 -33 426 -127 459 -79 b 491 -86 491 -50 491 -68 b 507 -251 491 -138 495 -193 b 534 -184 530 -228 533 -206 b 541 144 537 -75 539 35 b 530 204 541 164 539 186 b 520 220 528 210 528 220 b 500 203 511 219 503 213 b 498 192 498 200 498 194 l 498 176 b 494 7 497 120 497 63 l 490 12 l 287 176 b 258 190 279 181 274 190 b 212 153 239 186 225 168 l 127 40 b 121 32 124 37 122 35 b 118 114 120 59 118 86 b 102 249 117 158 122 206 b 75 219 85 246 79 236 b 72 187 72 209 72 197 b 76 117 72 164 75 141 b 85 -151 79 27 79 -62 b 91 -251 86 -184 91 -217 b 99 -268 91 -258 92 -266 z m 392 -128 b 374 -122 387 -134 380 -127 l 180 29 b 170 45 173 35 170 39 b 176 56 170 48 173 52 b 236 122 204 101 219 122 b 308 76 252 122 272 107 l 433 -26 b 449 -50 439 -32 449 -36 b 392 -128 432 -75 413 -102 z"},noteheadDiamondWhole:{x_min:0,x_max:271,y_min:-132,y_max:132,ha:264,o:"m 230 -177 b 256 -190 240 -186 249 -190 b 281 -173 265 -190 272 -184 b 382 -29 314 -124 347 -76 b 390 -10 387 -22 390 -14 b 376 12 390 -3 386 4 b 173 177 308 66 240 121 b 144 190 166 183 160 190 b 98 153 127 186 112 170 b 13 40 69 115 42 76 b 0 13 4 29 0 20 b 22 -19 0 3 7 -9 b 230 -177 92 -69 163 -122 z m 279 -128 b 261 -122 274 -134 266 -127 l 66 30 b 56 45 59 35 56 39 b 62 56 56 48 59 52 b 122 122 91 101 105 122 b 194 76 138 122 158 107 l 320 -26 b 336 -50 325 -32 336 -35 b 279 -128 318 -75 300 -102 z"},noteheadDiamondHalf:{x_min:0,x_max:295,y_min:-148,y_max:148,ha:296,o:"m 228 -207 b 245 -213 235 -210 240 -213 b 264 -203 252 -213 258 -210 b 415 -46 314 -150 364 -98 b 425 -27 420 -40 425 -35 b 416 -10 425 -22 422 -16 b 217 200 350 60 284 131 b 194 213 212 207 204 213 b 170 196 181 213 177 203 b 14 33 118 143 68 86 b 0 7 4 23 0 16 b 17 -20 0 -1 6 -10 b 118 -114 52 -50 82 -85 b 228 -207 156 -144 184 -184 z m 209 -157 b 134 -69 177 -138 141 -115 b 130 -26 131 -55 130 -40 b 215 148 130 42 160 99 b 225 156 217 151 220 156 b 230 153 226 156 228 156 b 323 -26 276 104 321 55 b 298 -75 324 -42 315 -59 b 265 -109 287 -86 276 -99 b 209 -157 245 -125 228 -167 z"},noteheadDiamondBlack:{x_min:0,x_max:310,y_min:-146,y_max:146,ha:292,o:"m 266 -210 b 289 -194 278 -209 284 -200 b 406 -76 330 -156 367 -115 b 446 -23 433 -49 446 -36 b 412 29 446 -10 435 3 b 405 36 409 30 408 33 b 252 196 354 89 304 143 b 225 210 243 204 235 210 b 204 202 219 210 212 209 b 10 24 141 141 75 82 b 0 9 4 19 0 14 b 9 -6 0 4 3 0 l 232 -192 b 266 -210 242 -200 256 -204 z"},noteheadParenthesis:{x_min:-70.190112022022,x_max:329,y_min:-196,y_max:201,ha:397,o:"m 344 -279 b 382 -262 361 -288 370 -272 b 405 -233 390 -255 399 -245 b 474 9 455 -158 468 -73 b 416 228 474 78 448 174 b 364 282 403 249 387 271 b 344 289 359 285 350 288 b 331 279 338 289 333 287 b 325 248 328 269 325 258 b 338 225 325 238 328 229 b 412 138 379 207 396 174 b 445 1 433 92 445 45 b 346 -217 445 -81 410 -154 b 336 -252 340 -223 336 -238 b 344 -279 336 -265 338 -276 z m 19 -274 b 35 -282 24 -279 30 -281 b 49 -265 42 -282 46 -275 b 52 -243 50 -256 52 -249 b 36 -210 52 -230 49 -220 b -60 -59 -16 -173 -35 -114 b -73 9 -69 -39 -73 -16 b 33 223 -73 92 -24 189 b 50 265 43 229 50 249 b 33 288 50 278 46 289 b 4 272 23 288 14 275 b -9 261 0 269 -4 265 b -101 23 -58 193 -105 124 b -37 -206 -104 -52 -75 -130 b 19 -274 -23 -232 -6 -255 z"},noteheadParenthesisRight:{x_min:-30,x_max:82,y_min:-199.08429092881173,y_max:206,ha:405.0842909288117,o:"m -17 -282 b 24 -264 -6 -297 12 -272 b 60 -219 40 -253 52 -236 b 117 1 96 -150 112 -75 b 118 16 118 6 118 12 b 109 73 118 36 112 55 b 4 279 99 154 68 226 b -23 297 -4 287 -13 297 b -37 289 -27 297 -32 294 b -43 266 -42 285 -43 276 b -32 225 -43 251 -37 229 b 84 -7 48 170 84 82 b 32 -184 84 -69 65 -132 b -10 -222 22 -200 4 -209 b -24 -258 -20 -232 -24 -245 b -17 -282 -24 -266 -22 -276 z"},noteheadParenthesisLeft:{x_min:0,x_max:106,y_min:-197,y_max:197,ha:394,o:"m 134 -284 b 138 -281 135 -284 137 -284 b 145 -268 144 -278 145 -274 l 144 -253 b 107 -180 138 -225 121 -204 b 42 13 71 -120 42 -56 b 49 73 42 32 43 52 b 137 210 62 128 95 171 b 153 255 147 219 153 239 b 145 278 153 265 151 274 b 130 284 140 281 135 284 b 98 259 117 284 108 268 b 0 37 35 203 1 131 b 118 -268 9 -69 53 -173 b 134 -284 121 -274 127 -284 z"},noteheadMoonBlack:{x_min:0,x_max:328,y_min:-125,y_max:125,ha:250,o:"m 353 -160 b 465 -40 412 -140 451 -102 b 472 30 471 -17 472 6 b 469 124 472 60 469 92 b 406 179 469 170 459 177 l 128 179 b 37 180 98 179 68 179 b 0 141 7 180 0 170 b 3 -20 3 88 3 33 b 69 -134 3 -72 26 -109 b 240 -180 125 -164 181 -180 b 353 -160 278 -180 315 -174 z"},noteheadTriangleLeftBlack:{x_min:0,x_max:391.1554175279994,y_min:-142,y_max:142,ha:284,o:"m 138 -204 b 318 -197 197 -199 258 -197 l 431 -197 b 544 -192 469 -196 507 -193 b 563 -184 552 -190 560 -193 b 553 -167 564 -177 559 -171 l 540 -157 b 232 60 436 -85 334 -12 l 50 190 b 20 204 42 197 32 204 b 10 202 17 204 14 204 b 0 184 1 197 0 192 b 1 164 0 177 1 170 b 6 -150 3 59 6 -45 b 39 -193 7 -176 17 -186 b 138 -204 72 -204 105 -204 z"},noteheadTriangleRightBlack:{x_min:-.3332953162522517,x_max:398,y_min:-139,y_max:140,ha:279,o:"m 543 -200 b 573 -176 566 -200 573 -194 l 573 -168 b 554 141 566 -66 560 37 b 520 197 553 167 546 187 b 495 202 511 200 504 202 b 454 184 481 202 467 196 l 35 -137 b 0 -171 22 -147 -4 -154 b 52 -199 6 -193 33 -193 b 69 -199 58 -200 63 -199 z"},noteheadTriangleRoundDownBlack:{x_min:0,x_max:334,y_min:-133.78604087938328,y_max:136,ha:269.7860408793833,o:"m 252 -192 b 285 -176 269 -196 276 -187 b 468 52 346 -99 406 -23 b 481 79 477 62 481 71 b 465 104 481 88 475 95 b 441 124 456 109 449 117 b 249 196 380 174 314 194 b 13 104 157 196 69 154 b 0 86 6 98 0 92 b 7 69 0 82 3 76 b 202 -164 73 -7 137 -85 b 252 -192 216 -181 235 -186 z"},augmentationDot:{x_min:0,x_max:96,y_min:-57,y_max:57,ha:114,o:"m 13 -82 b 16 -81 14 -82 14 -82 b 105 -73 46 -76 75 -76 b 131 -48 121 -72 131 -60 b 138 26 134 -24 138 0 b 137 48 138 33 138 40 b 108 82 134 71 125 82 b 95 81 104 82 99 82 b 33 71 75 78 53 75 b 4 46 20 68 6 62 b 0 -66 1 9 0 -29 b 13 -82 0 -73 1 -82 z"},tremolo1:{x_min:-158,x_max:156.19381479578487,y_min:-88,y_max:88,ha:176,o:"m -206 -127 b -194 -125 -203 -127 -199 -127 b 173 -36 -72 -94 50 -65 b 220 16 202 -29 215 -12 b 225 50 223 30 225 45 b 216 107 226 76 222 91 b 194 127 210 120 204 127 b 183 124 192 127 189 127 l -192 33 b -226 -9 -213 27 -222 14 b -228 -32 -226 -16 -228 -23 b -222 -108 -228 -58 -222 -82 b -206 -127 -222 -120 -217 -127 z"},flag8thUp:{x_min:0,x_max:261,y_min:-819,y_max:0,ha:819,o:"m 265 -1171 b 351 -1035 301 -1130 336 -1087 b 376 -867 369 -979 376 -923 b 367 -755 376 -829 373 -792 b 233 -422 350 -632 311 -520 b 131 -291 199 -379 166 -334 b 65 -125 91 -239 66 -192 b 62 -75 65 -112 62 -91 b 42 0 62 -49 52 -24 l 35 0 b 0 -63 6 -13 0 -36 l 0 -144 b 96 -445 0 -255 29 -356 b 177 -547 124 -478 150 -514 b 308 -831 246 -629 298 -721 b 317 -890 310 -851 317 -871 b 311 -919 317 -900 315 -910 b 256 -1005 297 -950 282 -984 b 228 -1068 233 -1024 228 -1045 b 230 -1106 228 -1080 229 -1093 b 240 -1162 232 -1125 239 -1143 b 251 -1179 242 -1174 246 -1179 b 265 -1171 255 -1179 259 -1176 z"},flag8thDown:{x_min:0,x_max:261,y_min:0,y_max:819,ha:819,o:"m 265 1171 b 251 1179 259 1176 255 1179 b 240 1162 246 1179 242 1174 b 230 1106 239 1143 232 1125 b 228 1068 229 1093 228 1080 b 256 1005 228 1045 233 1024 b 311 919 282 984 297 950 b 317 890 315 910 317 900 b 308 831 317 871 310 851 b 177 547 298 721 246 629 b 96 445 150 514 124 478 b 0 144 29 356 0 255 l 0 63 b 35 0 0 36 6 13 l 42 0 b 62 75 52 24 62 49 b 59 117 62 91 59 104 b 131 291 60 183 91 239 b 233 422 166 334 199 379 b 367 755 311 520 350 632 b 376 867 373 792 376 829 b 351 1035 376 923 369 979 b 265 1171 336 1087 301 1130 z"},flag16thUp:{x_min:0,x_max:327.1591498636094,y_min:-819.3972596310256,y_max:0,ha:819.3972596310256,o:"m 415 -1179 b 435 -1168 423 -1182 429 -1174 b 451 -1138 442 -1159 446 -1149 b 465 -1020 464 -1102 467 -1064 b 461 -962 464 -1004 464 -984 b 471 -821 467 -916 472 -870 b 465 -721 472 -791 467 -756 b 415 -520 459 -651 441 -585 b 200 -245 370 -408 284 -327 b 96 -114 160 -206 118 -168 b 75 -24 84 -85 85 -53 b 59 0 72 -16 72 0 b 53 -1 58 0 56 -1 b 27 -32 40 -6 27 -10 b 29 -68 27 -43 29 -55 b 10 -79 20 -69 13 -72 b 1 -109 6 -89 1 -99 b 0 -170 0 -130 0 -148 b 35 -410 0 -252 12 -333 b 258 -793 76 -557 156 -681 b 409 -1158 350 -896 410 -1014 b 415 -1179 409 -1165 405 -1175 z m 413 -816 b 331 -681 392 -769 364 -723 b 145 -420 266 -596 189 -521 b 86 -281 125 -374 102 -330 b 156 -370 105 -312 128 -343 b 318 -539 210 -425 269 -478 b 413 -816 383 -621 420 -713 z"},flag16thDown:{x_min:0,x_max:327.1591498636094,y_min:0,y_max:819,ha:819,o:"m 59 0 b 75 24 72 0 72 16 b 96 114 85 53 84 85 b 200 245 118 168 160 206 b 415 520 284 327 370 408 b 465 721 441 585 459 651 b 471 821 467 756 472 791 b 461 962 472 870 467 916 b 465 1020 464 984 464 1004 b 451 1138 467 1064 464 1102 b 435 1168 446 1149 442 1159 b 418 1179 431 1172 425 1179 l 415 1179 b 408 1169 409 1176 408 1174 b 409 1158 408 1165 409 1161 b 258 793 410 1014 350 896 b 35 410 156 681 76 557 b 0 170 12 333 0 252 l 0 88 b 29 7 0 71 6 23 b 59 0 33 4 58 0 z m 86 281 b 145 420 102 330 125 374 b 331 681 189 521 266 596 b 413 816 364 723 392 769 b 415 791 413 808 415 799 b 318 539 415 698 377 613 b 156 370 269 478 210 425 b 86 281 128 343 105 312 z"},flag32ndUp:{x_min:-.19862981551275186,x_max:268.0942440943661,y_min:-849.4710740978672,y_max:149.0769891455102,ha:998.5480632433774,o:"m 323 -1223 b 351 -1198 337 -1227 344 -1210 b 359 -1184 354 -1194 356 -1188 b 386 -999 377 -1122 387 -1060 b 341 -783 386 -927 372 -855 b 330 -736 334 -769 330 -753 b 333 -708 330 -727 330 -717 b 344 -621 340 -678 344 -649 b 341 -579 344 -608 343 -593 b 328 -500 338 -553 328 -526 b 331 -475 328 -491 328 -484 b 347 -370 343 -438 348 -402 b 151 27 348 -212 288 -56 b 53 176 98 59 50 102 b 45 197 53 183 48 192 b 33 215 40 203 40 216 l 30 215 b 6 194 22 212 9 209 b 0 120 3 170 -1 145 b 0 -43 4 65 0 13 b 0 -98 0 -60 1 -79 b 4 -276 0 -157 6 -216 b 7 -456 4 -337 7 -397 b 66 -638 7 -523 22 -585 b 158 -724 94 -671 127 -697 b 318 -1011 246 -801 295 -899 b 321 -1044 321 -1021 321 -1032 b 312 -1152 321 -1080 312 -1116 b 317 -1192 312 -1165 314 -1179 b 323 -1223 320 -1202 311 -1220 z m 285 -376 b 121 -180 249 -289 173 -245 b 91 -105 104 -158 92 -135 b 288 -354 181 -144 288 -269 b 285 -376 288 -363 287 -370 z m 275 -657 b 111 -492 226 -589 163 -547 b 65 -376 78 -456 66 -418 b 71 -323 65 -360 68 -341 b 275 -657 164 -418 265 -504 z"},flag32ndDown:{x_min:-2.800802874905624,x_max:268.09424409436605,y_min:-169.07698914551014,y_max:829.4710740978672,ha:998.5480632433773,o:"m 323 1194 b 317 1164 311 1191 320 1174 b 312 1123 314 1151 312 1136 b 321 1015 312 1087 321 1051 b 318 982 321 1004 321 992 b 158 696 295 870 246 772 b 66 609 127 668 94 642 b 7 428 22 556 7 494 b 4 248 7 369 4 308 b -1 78 6 187 -10 137 b 0 14 0 59 0 32 l 0 -148 b 6 -223 0 -174 3 -199 b 30 -243 9 -238 22 -240 l 33 -243 b 45 -226 40 -245 40 -232 b 53 -204 48 -220 53 -212 b 151 -56 50 -131 98 -88 b 347 341 288 27 348 183 b 331 446 348 373 343 409 b 328 471 328 455 328 462 b 341 550 328 497 338 524 b 344 592 343 564 344 579 b 333 680 344 621 340 649 b 330 707 330 688 330 698 b 341 755 330 724 334 740 b 386 971 372 827 386 899 b 359 1155 387 1031 377 1093 b 351 1169 356 1159 354 1165 b 323 1194 344 1181 337 1198 z m 275 628 b 71 294 265 475 164 389 b 65 347 68 312 65 331 b 111 464 66 389 78 428 b 275 628 163 518 226 560 z m 285 347 b 288 325 287 341 288 334 b 91 76 288 240 181 115 b 121 151 92 107 104 130 b 285 347 173 216 249 261 z"},flag64thUp:{x_min:-4,x_max:282,y_min:-823.5430338167067,y_max:347,ha:1170.5430338167066,o:"m 350 -1185 b 380 -1162 364 -1189 374 -1175 b 406 -1022 399 -1119 406 -1071 b 359 -798 406 -945 384 -871 b 348 -756 353 -785 348 -772 b 350 -744 348 -753 350 -749 b 363 -621 356 -704 363 -664 b 360 -580 363 -608 363 -593 b 359 -560 359 -573 359 -567 b 373 -490 359 -536 366 -513 b 393 -346 386 -444 393 -395 b 387 -269 393 -320 390 -294 b 348 -127 382 -219 348 -173 b 351 -104 348 -120 348 -111 b 353 -65 351 -91 353 -78 b 341 37 353 -26 348 6 b 226 215 323 108 278 164 b 86 336 181 258 127 288 b 62 395 72 353 62 370 b 42 481 62 423 55 454 b 27 500 37 488 36 500 b 24 498 26 500 26 500 b -1 480 14 497 1 492 b -6 444 -4 467 -6 455 l -6 435 b -1 341 -1 403 -1 372 l -1 266 b 6 156 -1 230 0 193 b 13 35 12 117 13 75 l 13 -35 b 14 -85 13 -52 14 -68 b 29 -276 19 -150 33 -213 b 20 -448 24 -334 20 -392 b 24 -534 20 -477 22 -505 b 114 -708 30 -605 59 -664 b 197 -780 143 -732 171 -755 b 344 -1153 301 -884 341 -1011 b 343 -1172 344 -1159 343 -1166 b 350 -1185 343 -1176 344 -1182 z m 287 -88 b 62 193 186 -17 79 48 b 229 52 121 144 174 98 b 289 -33 256 29 274 -3 b 295 -56 294 -42 295 -49 b 287 -88 295 -66 292 -76 z m 298 -410 b 118 -235 238 -351 176 -295 b 76 -88 82 -197 78 -147 b 268 -252 137 -153 203 -202 b 330 -360 304 -279 330 -315 b 323 -402 330 -373 327 -387 b 311 -418 318 -413 315 -418 b 298 -410 307 -418 302 -415 z m 300 -691 b 117 -508 243 -616 168 -575 b 82 -408 94 -480 82 -448 b 84 -379 82 -397 82 -387 b 259 -553 135 -451 206 -492 b 301 -667 287 -583 301 -619 b 300 -691 301 -674 301 -683 z"},flag64thDown:{x_min:-5,x_max:281,y_min:-375,y_max:795.5430338167066,ha:1170.5430338167066,o:"m 348 1145 b 341 1132 343 1142 341 1136 b 343 1113 341 1126 343 1119 b 196 740 340 971 300 844 b 112 668 170 714 141 691 b 23 494 58 624 29 564 b 19 408 20 465 19 436 b 27 236 19 351 23 294 b 13 45 32 173 17 109 b 12 -6 13 27 12 12 l 12 -75 b 4 -196 12 -115 10 -157 b -3 -307 -1 -233 -3 -271 l -3 -382 b -7 -475 -3 -412 -3 -444 l -7 -484 b -3 -520 -7 -495 -6 -507 b 23 -539 0 -533 13 -537 b 26 -540 24 -540 24 -540 b 40 -521 35 -540 36 -528 b 60 -435 53 -494 60 -464 b 85 -376 60 -410 71 -393 b 225 -255 125 -328 180 -298 b 340 -78 276 -204 321 -148 b 351 24 347 -46 351 -14 b 350 63 351 37 350 50 b 347 86 347 71 347 79 b 386 229 347 132 380 179 b 392 305 389 253 392 279 b 372 449 392 354 384 403 b 357 520 364 472 357 495 b 359 540 357 527 357 533 b 361 580 361 553 361 567 b 348 704 361 624 354 664 b 347 716 348 708 347 713 b 357 757 347 732 351 744 b 405 982 383 831 405 904 b 379 1122 405 1031 397 1079 b 348 1145 373 1135 363 1149 z m 298 651 b 300 626 300 642 300 634 b 258 513 300 579 285 543 b 82 338 204 452 134 410 b 81 367 81 347 81 357 b 115 468 81 408 92 439 b 298 651 167 534 242 576 z m 297 370 b 310 377 301 374 305 377 b 321 361 314 377 317 373 b 328 320 325 347 328 333 b 266 212 328 275 302 239 b 75 48 202 161 135 112 b 117 194 76 107 81 157 b 297 370 174 255 236 311 z m 285 48 b 294 16 291 36 294 26 b 288 -7 294 9 292 1 b 228 -92 272 -37 255 -69 b 60 -233 173 -138 120 -184 b 285 48 78 -88 184 -23 z"},flag128thUp:{x_min:0,x_max:252,y_min:-804,y_max:530,ha:1334,o:"m 298 -1158 b 328 -1126 312 -1158 320 -1139 b 330 -1116 330 -1123 330 -1119 b 347 -996 343 -1076 347 -1037 b 328 -837 347 -943 338 -890 b 320 -778 324 -816 320 -798 b 330 -733 320 -763 323 -749 b 340 -665 338 -714 337 -688 b 341 -645 340 -660 341 -652 b 333 -534 341 -609 333 -572 b 343 -471 333 -513 334 -492 b 361 -366 356 -436 361 -402 b 331 -202 361 -311 348 -256 b 328 -187 330 -197 328 -193 b 331 -179 328 -184 328 -181 b 363 -55 353 -137 363 -96 b 337 79 363 -12 351 33 b 327 114 333 92 327 104 b 344 144 327 124 331 132 b 359 174 353 150 357 163 b 361 228 360 193 361 210 b 243 517 361 337 325 435 b 147 596 213 546 179 569 b 75 708 111 626 75 655 b 62 744 75 723 68 733 b 50 763 58 752 58 763 b 46 762 49 763 48 762 b 17 742 36 757 22 757 b 0 697 14 726 0 711 b 1 595 0 662 3 631 b 0 469 0 552 0 511 b 1 429 0 456 0 442 b 22 289 6 382 22 337 b 24 128 22 238 24 184 b 22 66 24 108 23 86 b 19 -19 20 37 19 10 b 20 -132 19 -56 20 -95 b 13 -276 20 -180 19 -229 b 9 -359 10 -304 9 -330 b 12 -487 9 -402 12 -445 b 56 -582 12 -526 29 -554 b 197 -742 107 -632 160 -681 b 288 -1100 265 -851 276 -976 b 288 -1122 288 -1107 287 -1115 b 287 -1145 289 -1129 287 -1138 b 298 -1158 287 -1153 288 -1158 z m 304 150 b 75 475 229 256 112 334 b 304 150 233 357 305 287 z m 271 -73 b 127 72 233 -14 179 26 b 81 167 96 98 81 127 b 84 194 81 176 82 184 b 271 -73 148 102 242 39 z m 279 -396 b 132 -223 233 -330 180 -279 b 81 -112 104 -192 81 -156 b 82 -91 81 -105 81 -98 b 279 -396 167 -125 269 -281 z m 249 -609 b 69 -357 197 -520 88 -471 b 249 -609 131 -441 229 -498 z"},flag128thDown:{x_min:-.8888888888888888,x_max:252,y_min:-580,y_max:754,ha:1334,o:"m 298 1086 b 287 1073 288 1086 287 1081 b 288 1050 287 1066 289 1057 b 288 1028 287 1043 288 1035 b 197 670 276 904 265 779 b 56 510 160 609 107 560 b 12 415 29 482 12 454 b 9 287 12 373 9 330 b 13 204 9 258 10 232 b 20 60 19 157 20 108 b 19 -53 20 23 19 -16 b 22 -138 19 -82 20 -109 b 24 -200 23 -158 24 -180 b 22 -361 24 -256 22 -310 b 1 -501 22 -409 6 -454 b 0 -541 0 -514 0 -528 b 0 -667 0 -583 -3 -624 b 0 -809 0 -675 -3 -791 b 46 -834 4 -825 36 -829 b 50 -835 48 -834 49 -835 b 62 -816 58 -835 58 -824 b 75 -780 68 -805 75 -795 b 147 -668 75 -727 111 -698 b 243 -589 179 -641 213 -618 b 361 -300 325 -507 361 -409 b 359 -246 361 -282 360 -265 b 344 -216 357 -235 353 -222 b 327 -186 331 -204 327 -196 b 337 -151 327 -176 333 -164 b 363 -17 351 -105 363 -60 b 331 107 363 24 353 65 b 328 115 328 109 328 112 b 331 130 328 121 330 125 b 361 294 348 184 361 239 b 343 399 361 330 356 364 b 333 462 334 420 333 441 b 341 573 333 500 341 537 b 340 593 341 580 340 588 b 330 661 337 616 338 642 b 320 706 323 677 320 691 b 328 765 320 726 324 744 b 347 924 338 818 347 871 b 330 1044 347 965 343 1004 b 328 1054 330 1047 330 1051 b 298 1086 320 1067 312 1086 z m 249 537 b 69 285 229 426 131 369 b 249 537 88 399 197 448 z m 279 324 b 82 19 269 209 167 53 b 81 40 81 26 81 33 b 132 151 81 84 104 120 b 279 324 180 207 233 258 z m 271 1 b 84 -266 242 -111 148 -174 b 81 -239 82 -256 81 -248 b 127 -144 81 -199 96 -170 b 271 1 179 -98 233 -58 z m 304 -222 b 75 -547 305 -359 233 -429 b 304 -222 112 -406 229 -328 z"},accidentalFlat:{x_min:1,x_max:209,y_min:-208,y_max:472,ha:680,o:"m 29 -300 b 46 -289 33 -300 39 -297 b 107 -243 65 -274 86 -258 b 301 127 233 -153 301 -30 b 298 186 301 147 301 166 b 190 297 291 256 251 297 b 147 289 177 297 163 294 b 86 265 127 284 107 274 l 85 264 l 85 301 b 91 465 85 356 88 410 b 94 559 91 497 94 527 b 84 651 94 589 91 621 b 66 680 81 661 81 680 l 65 680 b 37 645 49 678 37 665 b 33 523 36 605 32 563 l 33 478 b 26 223 33 393 29 308 b 1 -141 22 101 1 -19 b 17 -287 1 -189 4 -239 b 29 -300 20 -295 23 -300 z m 68 -105 b 76 12 71 -68 72 -29 b 81 107 79 43 81 75 l 86 109 b 171 135 114 121 141 135 b 204 128 181 135 193 132 b 238 92 228 120 239 108 b 230 63 238 84 236 75 b 68 -105 193 -10 132 -59 z"},accidentalNatural:{x_min:0,x_max:213.5,y_min:-456,y_max:462,ha:918,o:"m 255 -657 b 281 -624 271 -657 275 -636 b 285 -599 282 -615 285 -608 b 292 -300 288 -500 289 -400 b 289 -161 292 -253 289 -207 b 300 128 292 -65 297 32 b 304 168 300 128 302 150 l 304 173 l 305 190 l 305 199 l 307 225 b 304 259 307 229 310 246 b 272 298 297 274 302 305 b 63 266 204 279 134 272 b 72 514 68 348 72 432 b 71 595 72 541 72 567 b 56 665 71 619 66 642 b 17 579 9 651 17 608 b 3 144 19 433 7 289 b 0 -7 1 94 0 43 b 3 -134 0 -50 1 -92 b 7 -219 3 -163 7 -192 b 35 -251 7 -243 17 -251 b 49 -249 39 -251 43 -251 l 223 -223 l 230 -222 l 230 -359 b 223 -516 230 -410 223 -464 b 236 -619 223 -550 226 -585 b 255 -657 240 -634 236 -657 z m 58 -63 b 55 81 56 -14 53 33 l 56 99 b 85 99 65 99 75 98 b 232 108 134 104 183 107 l 240 109 l 236 66 b 232 -48 235 29 232 -10 b 58 -81 174 -63 115 -73 z"},accidentalSharp:{x_min:-22,x_max:390,y_min:-384,y_max:383,ha:767,o:"m 202 -553 b 219 -526 213 -552 216 -536 b 226 -471 225 -507 226 -488 b 225 -425 226 -455 225 -441 b 226 -392 225 -415 225 -402 b 233 -305 229 -363 232 -334 l 297 -292 b 331 -469 300 -353 311 -412 b 347 -485 333 -477 338 -485 b 363 -469 356 -487 359 -477 b 374 -418 373 -454 374 -435 b 376 -382 376 -405 376 -393 b 372 -276 376 -347 373 -311 l 455 -259 b 550 -156 534 -243 544 -232 b 550 -109 550 -137 552 -124 b 526 -78 549 -91 541 -78 l 523 -78 b 507 -79 517 -78 513 -78 b 403 -101 474 -88 438 -95 l 379 -105 b 382 -42 380 -85 380 -63 b 384 96 383 4 384 50 b 503 131 425 107 464 118 b 549 173 524 138 543 150 b 562 249 554 199 562 223 b 554 294 562 264 560 279 b 536 315 549 308 544 315 l 533 315 b 517 312 528 315 523 315 b 382 266 472 294 428 279 l 377 344 b 359 531 374 406 372 469 b 348 552 356 539 357 552 l 347 552 l 343 552 b 315 528 331 549 317 544 l 315 501 b 320 249 315 416 318 333 l 243 232 b 239 361 243 275 242 318 b 226 425 238 383 238 403 b 199 359 194 409 199 382 b 193 223 196 312 194 268 b 72 202 153 215 112 209 b 4 118 13 192 4 183 b 10 66 0 102 12 84 b 33 29 7 39 14 30 b 48 32 37 29 42 30 b 187 55 95 39 141 46 l 183 -75 b 176 -145 181 -99 179 -122 b 16 -179 122 -156 69 -166 b -32 -232 -14 -186 -32 -197 b -17 -331 -32 -266 -19 -298 b -1 -356 -17 -347 -13 -354 b 12 -353 1 -356 6 -354 b 167 -320 63 -341 115 -331 b 166 -377 166 -338 166 -357 b 189 -526 166 -428 171 -477 b 202 -553 192 -536 189 -553 z m 240 -132 b 243 -37 242 -101 242 -69 b 245 65 245 -3 245 30 b 315 79 269 69 292 73 b 301 -120 308 13 305 -53 z"},accidentalDoubleSharp:{x_min:0,x_max:287,y_min:-159,y_max:159,ha:318,o:"m 84 -229 b 107 -216 91 -229 98 -225 b 200 -125 138 -186 167 -154 b 232 -95 212 -115 222 -105 b 347 -189 271 -125 310 -157 b 370 -200 356 -196 363 -200 b 396 -179 380 -200 389 -192 b 412 -102 410 -154 406 -125 b 377 -27 410 -69 400 -46 l 325 14 b 402 91 350 42 374 68 b 413 127 410 96 413 107 b 382 200 409 148 397 176 b 350 229 370 220 360 229 b 314 210 340 229 328 223 b 274 174 300 199 285 187 b 212 104 252 151 232 128 b 92 187 173 132 132 161 b 78 193 86 192 82 193 b 68 190 75 193 72 193 b 48 179 62 186 53 187 b 40 137 43 168 40 154 b 81 16 40 92 56 32 b 107 -3 89 10 98 4 b 14 -94 76 -32 45 -62 b 0 -124 6 -102 0 -114 b 12 -154 0 -134 3 -144 b 62 -215 26 -176 48 -193 b 84 -229 69 -225 76 -229 z"},accidentalDoubleFlat:{x_min:0,x_max:359,y_min:-220,y_max:446,ha:666,o:"m 43 -317 b 72 -301 55 -317 63 -310 b 160 -186 108 -268 134 -226 b 236 -60 186 -145 212 -102 b 233 -131 235 -85 233 -108 b 239 -220 233 -161 235 -190 b 259 -246 240 -233 239 -240 b 301 -228 284 -252 291 -238 b 465 -7 369 -163 416 -85 b 517 173 500 48 517 108 b 451 307 517 229 505 284 b 409 315 436 312 422 315 b 331 287 382 315 356 305 b 311 274 324 282 320 274 l 310 274 l 310 566 b 305 621 310 585 312 603 b 294 642 301 628 305 642 l 292 642 b 264 622 282 641 266 636 b 253 575 259 606 256 590 b 246 418 248 523 246 471 b 248 243 246 360 248 302 l 248 187 b 164 238 220 225 193 238 b 85 213 140 238 112 226 b 84 229 85 220 84 225 b 86 315 85 258 86 287 b 81 528 86 386 82 458 b 71 582 81 547 78 566 b 56 603 66 590 68 603 l 53 603 b 23 580 40 600 26 598 b 19 537 20 566 19 552 b 20 514 19 530 19 521 b 26 390 24 472 26 432 b 14 66 26 282 16 174 b 0 -168 13 -12 0 -91 b 12 -279 0 -206 3 -242 b 30 -314 16 -294 14 -308 b 43 -317 35 -317 39 -317 z m 301 -72 b 302 7 302 -45 302 -19 l 302 86 b 351 158 304 121 321 145 b 383 166 361 163 373 166 b 435 143 402 166 419 157 b 445 127 441 138 445 132 b 441 114 445 122 444 118 b 301 -72 397 49 354 -14 z m 75 -147 b 73 30 75 -86 75 -29 b 118 82 73 62 92 76 b 132 84 124 84 128 84 b 190 52 156 84 174 69 b 193 40 192 49 193 45 b 192 33 193 37 193 35 b 75 -147 157 -30 125 -95 z"},accidentalParensLeft:{x_min:0,x_max:130.18934911242604,y_min:-270,y_max:267.6082500723851,ha:537.6082500723851,o:"m 107 -389 b 127 -374 114 -389 120 -384 b 141 -347 132 -367 137 -357 b 151 -294 148 -330 151 -311 b 122 -207 151 -265 141 -236 b 63 -65 94 -164 72 -117 b 59 -10 60 -46 59 -27 b 145 223 59 78 94 153 b 187 354 176 262 189 305 b 177 384 187 364 190 380 b 143 373 166 387 153 383 b 124 354 137 367 130 361 b 0 -35 33 240 0 108 l 0 -92 b 85 -372 4 -193 27 -287 b 107 -389 92 -383 99 -389 z"},accidentalParensRight:{x_min:-.4444444444444445,x_max:139,y_min:-275,y_max:277,ha:552,o:"m 58 -396 b 96 -354 75 -396 85 -370 b 200 13 168 -238 200 -111 b 153 268 200 109 184 190 b 49 392 131 320 101 364 b 26 399 40 397 33 399 b 0 366 10 399 0 387 b 0 318 -1 350 0 334 l 0 291 b 27 238 -3 266 7 253 b 143 9 105 180 143 98 b 141 -20 143 -1 143 -10 b 63 -225 135 -92 108 -164 b 36 -307 45 -251 36 -278 b 40 -344 36 -320 37 -331 b 42 -356 42 -347 42 -351 b 58 -396 42 -374 37 -396 z"},accidentalQuarterToneFlatStein:{x_min:0,x_max:208,y_min:-240,y_max:440,ha:680,o:"m 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z"},accidentalThreeQuarterTonesFlatZimmermann:{x_min:0,x_max:422,y_min:-240,y_max:440,ha:680,o:"m 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 336 -346 b 353 -336 340 -346 346 -343 b 413 -289 372 -320 393 -304 b 608 81 540 -199 608 -76 b 605 140 608 101 608 120 b 497 251 598 210 557 251 b 454 243 484 251 469 248 b 393 219 433 238 413 228 l 392 217 l 392 255 b 397 419 392 310 395 364 b 400 513 397 451 400 481 b 390 605 400 543 397 575 b 373 634 387 615 387 634 l 372 634 b 344 599 356 632 344 619 b 340 477 343 559 338 517 l 340 432 b 333 177 340 347 336 262 b 308 -187 328 55 308 -65 b 324 -333 308 -235 311 -285 b 336 -346 327 -341 330 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z m 374 -151 b 383 -35 377 -114 379 -75 b 387 60 386 -3 387 29 l 393 63 b 478 89 420 75 448 89 b 511 82 488 89 500 86 b 544 46 534 73 546 62 b 537 17 544 37 543 29 b 374 -151 500 -56 439 -105 z"},accidentalQuarterToneSharpStein:{x_min:0,x_max:300,y_min:-338,y_max:351,ha:689,o:"m 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 l 35 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z"},accidentalThreeQuarterTonesSharpStein:{x_min:-23,x_max:388,y_min:-373,y_max:445,ha:818,o:"m 114 -537 b 138 -475 137 -518 138 -495 b 147 -292 138 -413 144 -353 b 212 -278 168 -287 190 -282 b 243 -444 215 -333 225 -389 b 261 -467 248 -454 251 -465 b 281 -446 272 -469 276 -455 b 292 -347 292 -416 288 -384 b 288 -262 289 -320 288 -291 l 374 -245 b 376 -311 374 -266 374 -288 b 390 -456 379 -357 379 -405 b 416 -396 412 -436 415 -418 b 423 -287 420 -360 423 -323 b 422 -235 423 -269 423 -252 b 451 -229 432 -233 441 -232 b 547 -98 524 -215 547 -199 l 547 -89 b 521 -49 546 -59 540 -49 b 497 -52 516 -49 507 -49 b 418 -68 469 -56 444 -63 b 423 52 419 -29 422 12 b 426 140 425 81 425 109 b 495 160 449 145 472 153 b 552 219 526 170 546 189 b 559 279 557 240 553 262 b 530 341 559 324 552 341 b 490 331 520 341 507 338 b 432 311 471 324 452 318 b 449 552 436 392 442 471 b 452 588 451 563 452 575 b 446 622 452 599 451 611 b 436 641 444 629 448 641 b 418 628 428 641 420 636 b 409 602 413 621 410 611 b 386 297 396 501 390 399 b 297 274 356 288 327 281 b 291 403 295 317 294 360 b 274 550 288 452 284 501 b 259 569 271 564 265 569 b 240 559 253 569 248 563 b 230 537 232 554 230 546 l 230 488 b 233 369 230 448 232 409 b 236 261 236 333 238 297 b 156 245 210 255 183 251 b 154 396 154 295 154 346 b 150 416 154 403 153 410 b 140 438 145 423 150 438 l 138 438 b 118 413 128 436 118 428 b 112 354 118 393 114 374 b 109 238 109 315 109 276 b 49 226 89 233 69 230 b 3 163 16 222 3 202 b 7 91 3 138 9 114 b 29 62 7 69 13 62 b 39 63 32 62 35 63 b 104 73 60 66 82 71 b 101 -10 104 46 102 17 l 92 -132 l 10 -150 b -33 -204 -19 -157 -33 -170 b -19 -310 -32 -240 -19 -274 b -6 -324 -19 -321 -13 -324 b 6 -323 -1 -324 1 -324 b 82 -307 32 -317 58 -311 b 81 -376 82 -330 81 -353 b 114 -537 81 -431 94 -484 z m 294 -92 b 297 -37 295 -73 295 -56 b 300 49 300 -9 300 20 l 300 108 b 379 127 325 114 353 120 b 374 -76 376 59 374 -9 b 294 -92 347 -82 320 -86 z m 154 -120 b 157 20 154 -73 156 -26 b 158 82 158 40 158 62 b 230 95 183 86 206 89 b 225 0 229 63 226 32 b 217 -107 223 -35 220 -71 z"},accidentalBuyukMucennebFlat:{x_min:1.8692317181955784,x_max:287,y_min:-248,y_max:432.4720949426819,ha:680.4720949426819,o:"m 410 128 b 302 239 403 199 363 239 b 259 232 289 239 275 236 b 199 207 239 226 219 216 l 197 206 l 197 243 l 197 251 b 347 317 248 272 298 295 b 376 347 360 324 372 334 b 389 435 387 376 393 405 b 348 454 384 462 377 465 b 202 387 300 432 251 409 b 203 408 203 395 203 402 l 203 431 b 347 490 252 451 300 469 b 376 517 360 495 372 505 b 389 599 387 546 393 572 b 348 616 384 625 377 628 l 203 556 b 196 593 202 569 199 582 b 179 622 193 603 193 622 l 177 622 b 150 588 161 621 150 608 b 147 533 150 570 148 552 b 29 488 108 517 69 503 b 3 455 12 482 3 472 b 12 353 1 422 9 389 b 145 408 56 372 101 389 b 145 363 145 392 145 377 l 29 315 b 3 281 12 310 3 298 b 12 170 1 245 9 209 l 141 226 b 138 166 140 206 138 186 b 114 -199 134 43 115 -76 b 130 -344 114 -246 117 -297 b 141 -357 132 -353 135 -357 b 158 -347 145 -357 151 -354 b 219 -301 177 -331 199 -315 b 413 69 346 -210 413 -88 b 410 128 413 89 413 108 z m 350 35 b 343 6 350 26 348 17 b 180 -163 308 -69 245 -117 b 189 -46 183 -125 184 -86 b 193 49 192 -14 193 17 l 199 52 b 284 78 226 63 253 78 b 317 71 294 78 305 75 b 350 35 340 62 351 50 z"},accidentalBakiyeFlat:{x_min:1.8692317181955784,x_max:287,y_min:-236,y_max:444,ha:680,o:"m 141 -340 b 158 -330 145 -340 151 -337 b 219 -284 177 -314 199 -298 b 413 86 346 -193 413 -71 b 410 145 413 107 413 125 b 302 256 403 216 363 256 b 259 249 289 256 275 253 b 199 225 239 243 219 233 l 197 223 l 197 261 b 199 334 197 285 199 310 b 347 406 249 357 298 382 b 376 439 360 413 372 425 b 390 516 384 465 390 490 b 389 537 390 523 390 530 b 372 564 384 556 382 564 b 348 557 367 564 359 562 b 204 487 300 537 253 510 b 206 518 206 497 206 507 b 196 611 206 549 203 580 b 179 639 193 621 193 639 l 177 639 b 150 605 161 638 150 625 b 145 482 148 564 144 523 l 145 458 b 29 405 107 439 68 420 b 3 366 12 397 3 386 b 12 243 1 325 9 287 b 143 307 56 265 99 285 l 138 183 b 114 -181 134 60 114 -59 b 130 -327 114 -229 117 -279 b 141 -340 132 -336 135 -340 z m 180 -145 b 189 -29 183 -108 184 -69 b 193 66 192 3 193 35 l 199 69 b 284 95 226 81 253 95 b 317 88 294 95 305 92 b 350 52 340 79 351 68 b 343 23 350 43 348 35 b 180 -145 305 -50 245 -99 z"},accidentalKomaSharp:{x_min:0,x_max:300,y_min:-338,y_max:351,ha:689,o:"m 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 l 35 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z"},accidentalKucukMucennebSharp:{x_min:-.15206251809627475,x_max:359,y_min:-420,y_max:343,ha:763,o:"m 236 -605 b 262 -543 256 -583 261 -564 b 269 -423 268 -503 269 -464 b 266 -340 269 -396 268 -367 l 361 -318 b 405 -276 384 -312 399 -298 b 413 -189 412 -248 416 -219 b 395 -164 412 -171 409 -164 b 382 -166 392 -164 387 -164 b 264 -193 343 -176 304 -184 b 269 -102 265 -163 268 -132 b 454 -62 331 -89 392 -78 b 501 -23 477 -58 494 -45 b 517 62 511 6 517 33 b 487 112 517 95 513 112 b 471 111 482 112 477 112 b 274 66 406 95 340 81 b 276 138 275 91 276 114 b 350 154 301 144 325 148 b 402 203 377 160 396 176 b 412 284 408 230 412 258 b 392 311 412 302 406 311 b 372 308 386 311 379 310 b 287 291 343 301 314 297 l 295 405 b 298 441 297 416 298 428 b 292 475 298 452 297 464 b 282 494 289 482 294 494 b 264 481 274 494 266 490 b 255 455 259 474 256 464 b 239 282 248 397 243 340 b 148 268 209 278 179 274 b 62 164 62 252 62 253 l 62 132 b 79 108 60 117 65 108 l 86 108 l 230 130 b 229 92 230 118 229 105 b 228 56 228 79 228 68 b 66 20 173 43 120 32 b 0 -59 6 7 3 1 l 0 -138 b 14 -160 -1 -156 4 -160 b 27 -158 19 -160 23 -160 b 222 -112 92 -141 157 -127 b 220 -203 220 -143 220 -173 b 147 -217 196 -207 171 -213 b 89 -288 92 -228 89 -229 b 95 -347 85 -305 96 -325 b 112 -374 92 -366 98 -374 b 125 -373 117 -374 121 -374 l 220 -351 b 222 -458 220 -386 220 -422 b 236 -605 223 -504 225 -552 z"},accidentalKoron:{x_min:0,x_max:303,y_min:-462.4598053473055,y_max:180,ha:642.4598053473055,o:"m 59 -665 b 72 -649 69 -662 72 -657 b 69 -626 72 -642 69 -634 b 69 -622 69 -625 69 -624 l 69 -600 b 55 -156 60 -456 68 -311 b 86 -170 66 -166 76 -170 b 112 -163 95 -170 104 -166 b 390 -35 204 -120 298 -78 b 436 -1 409 -27 436 -27 b 396 46 436 22 413 33 l 382 55 b 46 243 271 121 157 179 b 12 259 29 253 17 259 b 0 219 1 259 0 248 b 3 -372 0 22 3 -176 b 6 -616 3 -454 6 -536 b 59 -665 6 -638 40 -671 z m 55 199 b 363 24 156 141 258 84 b 55 -118 259 -24 160 -69 z"},accidentalSori:{x_min:0,x_max:434,y_min:-295,y_max:325,ha:620,o:"m 194 -425 b 196 -409 194 -418 196 -413 b 194 -194 196 -337 196 -266 b 364 -127 251 -171 308 -150 b 361 -321 363 -192 364 -256 b 410 -387 360 -357 373 -377 b 413 -373 412 -382 413 -377 b 418 -114 418 -287 418 -200 l 418 -105 b 595 -35 477 -82 536 -59 b 625 0 612 -27 625 -22 b 593 48 624 23 618 39 l 419 117 b 423 370 419 202 423 285 b 426 403 423 382 426 393 b 418 436 426 415 425 426 b 384 468 409 449 399 468 b 369 448 370 468 369 459 b 369 436 369 444 369 441 l 369 428 l 369 423 b 367 138 369 328 367 233 l 353 143 l 192 207 l 192 367 b 173 406 192 383 184 396 b 151 422 167 413 160 422 b 144 420 148 422 147 422 b 137 403 138 416 137 410 l 137 392 l 137 229 b 33 271 102 243 68 256 b 13 276 26 274 19 276 b 0 262 6 276 0 272 b 35 199 1 239 0 212 l 138 160 b 140 -148 138 58 138 -45 b 56 -181 111 -158 84 -170 b 24 -215 35 -189 24 -199 b 29 -235 24 -220 26 -228 b 49 -253 35 -249 42 -253 b 78 -240 59 -253 69 -243 b 140 -216 98 -233 120 -225 l 140 -356 b 194 -425 140 -406 141 -406 z m 194 -125 b 193 138 194 -37 193 50 b 315 89 233 122 275 107 b 366 71 333 84 350 76 b 364 -58 366 27 366 -16 b 194 -125 308 -81 251 -104 z m 419 49 l 526 7 l 485 -10 l 419 -36 z"},articAccentAbove:{x_min:0,x_max:425,y_min:0,y_max:326,ha:326,o:"m 27 1 b 78 12 46 0 62 6 b 347 112 168 45 253 91 b 521 184 409 128 459 167 b 608 259 557 194 589 220 b 612 274 611 265 612 271 b 598 292 612 281 608 287 b 477 347 559 312 518 331 b 176 465 374 384 275 425 b 156 469 168 468 161 469 b 125 456 145 469 137 465 b 53 370 96 432 78 399 b 45 353 48 363 45 357 b 68 333 45 344 52 337 b 360 225 166 298 262 261 b 192 154 302 203 249 171 b 13 36 120 132 53 105 b 0 13 9 29 0 22 l 0 9 b 16 0 3 1 10 0 l 26 0 b 27 1 27 0 27 0 z"},articAccentBelow:{x_min:0,x_max:425,y_min:-326,y_max:0,ha:326,o:"m 26 -469 l 27 -469 b 78 -458 46 -469 62 -464 b 347 -357 168 -426 253 -380 b 521 -285 409 -341 459 -302 b 608 -210 557 -276 589 -249 b 612 -196 611 -204 612 -200 b 598 -179 612 -189 608 -183 b 477 -122 559 -157 518 -138 b 176 -4 374 -85 275 -45 b 156 0 168 -1 161 0 b 125 -13 145 0 137 -4 b 53 -99 96 -37 78 -71 b 45 -117 48 -107 45 -112 b 68 -137 45 -125 52 -132 b 360 -245 166 -171 262 -209 b 192 -315 302 -266 249 -300 b 13 -433 120 -337 53 -366 b 0 -456 9 -442 0 -448 l 0 -461 b 16 -469 3 -468 10 -469 z"},articTenutoAbove:{x_min:.35192668236256364,x_max:471.1238660564107,y_min:0,y_max:56,ha:56,o:"m 137 0 b 197 1 156 0 179 1 b 409 6 268 1 338 6 b 482 4 432 6 459 6 b 556 0 508 3 534 0 b 651 10 588 0 621 3 b 678 27 662 12 678 10 b 654 59 680 45 672 53 b 511 75 606 73 560 73 b 255 81 426 78 341 81 b 160 79 222 81 193 79 l 36 79 b 1 71 24 78 7 85 b 19 32 -3 56 9 43 b 45 16 26 24 36 20 b 137 0 76 3 108 0 z"},articTenutoBelow:{x_min:.35192668236256364,x_max:471.1238660564107,y_min:-59,y_max:-3,ha:56,o:"m 137 -85 b 197 -84 156 -85 179 -84 b 409 -79 268 -84 338 -79 b 482 -81 432 -79 459 -79 b 556 -85 508 -82 534 -85 b 651 -75 588 -85 621 -82 b 678 -58 662 -73 678 -75 b 654 -26 680 -40 672 -32 b 511 -10 606 -12 560 -12 b 255 -4 426 -7 341 -4 b 160 -6 222 -4 193 -6 l 36 -6 b 1 -14 24 -7 7 0 b 19 -53 -3 -29 9 -42 b 45 -69 26 -60 36 -65 b 137 -85 76 -82 108 -85 z"},articStaccatoAbove:{x_min:1.4151102965496913,x_max:112,y_min:0,y_max:156,ha:156,o:"m 98 0 b 132 23 109 0 122 7 b 161 112 150 50 161 79 b 158 148 161 124 161 137 b 125 186 154 167 131 167 b 63 225 117 215 85 216 b 23 197 45 222 30 219 b 3 91 12 163 12 127 b 19 66 0 79 4 69 b 65 27 40 62 53 46 b 98 0 76 9 88 0 z"},articStaccatoBelow:{x_min:1.4151102965496913,x_max:112.08403222864916,y_min:-156,y_max:0,ha:156,o:"m 132 -202 b 161 -112 151 -174 163 -145 b 158 -76 161 -101 161 -88 b 125 -39 153 -58 131 -58 b 63 0 115 -10 85 -9 b 23 -27 45 -3 30 -6 b 3 -134 12 -62 10 -98 b 19 -158 0 -145 4 -156 b 65 -197 40 -164 53 -179 b 98 -225 75 -216 88 -225 b 132 -202 109 -225 122 -217 z"},articStaccatissimoAbove:{x_min:0,x_max:139,y_min:0,y_max:411,ha:411,o:"m 104 0 b 144 115 143 29 138 75 b 197 423 158 217 180 320 b 200 454 199 433 200 444 b 181 540 200 482 193 513 b 112 592 167 573 141 592 b 55 567 92 592 72 585 b 0 490 32 546 3 527 l 0 484 b 27 279 14 416 14 347 b 84 20 43 193 52 104 b 96 0 86 13 92 6 z"},articStaccatissimoBelow:{x_min:0,x_max:139,y_min:-411,y_max:0,ha:411,o:"m 88 -592 b 145 -567 108 -592 128 -585 b 200 -490 168 -546 197 -527 l 200 -484 b 173 -279 186 -416 186 -347 b 117 -20 157 -193 148 -104 b 104 0 114 -13 108 -6 l 96 0 b 56 -115 58 -29 62 -75 b 3 -423 42 -217 20 -320 b 0 -454 1 -433 0 -444 b 19 -540 0 -482 7 -513 b 88 -592 33 -573 59 -592 z"},articMarcatoAbove:{x_min:.04121419527862119,x_max:396,y_min:0,y_max:328.0000000000001,ha:328.0000000000001,o:"m 477 0 b 510 13 488 0 500 6 b 570 124 546 40 563 81 b 547 183 570 147 560 166 b 356 422 487 265 405 330 b 346 442 354 429 350 436 l 346 444 b 318 465 340 456 330 464 l 312 469 b 274 449 294 480 284 461 b 242 413 262 438 253 425 b 56 196 177 343 112 274 b 1 56 26 154 13 105 b 27 20 -4 35 9 20 b 42 23 32 20 37 20 b 84 53 59 29 72 39 b 255 269 141 125 193 200 b 275 229 262 255 266 242 b 448 14 324 151 390 86 b 477 0 456 4 467 0 z"},articMarcatoBelow:{x_min:0,x_max:395.9587858047214,y_min:-328.0000000000001,y_max:0,ha:328.0000000000001,o:"m 258 -469 b 297 -449 276 -480 287 -461 b 328 -413 308 -438 317 -425 b 514 -196 393 -343 458 -274 b 569 -56 544 -154 557 -105 b 543 -20 575 -35 562 -20 b 528 -23 539 -20 533 -20 b 487 -53 511 -29 498 -39 b 315 -269 429 -125 377 -200 b 295 -229 308 -255 304 -242 b 122 -14 246 -151 180 -86 b 94 0 114 -4 104 0 b 60 -13 82 0 71 -6 b 0 -124 24 -40 7 -81 b 23 -183 0 -147 10 -166 b 215 -422 84 -265 166 -330 b 225 -442 216 -429 220 -436 l 225 -444 b 252 -465 230 -456 240 -464 z"},fermataAbove:{x_min:-.04550444040404433,x_max:472,y_min:2.015071727506986,y_max:454,ha:451.984928272493,o:"m 39 10 b 78 108 66 37 71 73 b 163 311 92 181 111 252 b 284 423 199 353 239 392 b 373 458 312 444 340 454 b 433 431 395 458 410 446 b 603 153 530 361 596 276 b 595 121 603 144 595 131 l 595 88 b 602 50 596 75 589 55 b 639 73 619 43 631 60 b 651 102 645 82 648 92 b 667 194 660 132 662 163 b 680 278 671 222 672 248 b 560 567 680 386 638 481 b 396 654 508 625 452 649 b 291 632 364 654 325 644 b 161 526 235 613 200 566 b 4 249 85 446 26 357 b 4 174 0 222 -3 196 b 10 19 4 124 4 69 b 29 4 12 6 16 0 b 39 10 35 4 33 4 z m 338 37 b 370 40 350 36 357 36 b 380 75 387 40 380 43 b 389 94 382 79 382 85 b 356 132 389 111 374 122 b 269 154 328 147 300 156 b 225 125 252 154 228 157 b 261 48 222 81 232 56 b 338 37 287 40 312 40 z"},fermataBelow:{x_min:-.310835055998654,x_max:518.570567335755,y_min:-430,y_max:-.9161449836506543,ha:429.08385501634933,o:"m 344 -615 b 500 -543 402 -602 452 -576 b 713 -253 605 -471 661 -364 b 746 -98 737 -204 750 -153 b 727 -59 744 -82 744 -59 b 688 -88 711 -59 694 -68 b 678 -109 687 -96 683 -102 b 562 -314 648 -183 611 -252 b 387 -439 516 -373 458 -416 b 328 -449 367 -446 347 -449 b 180 -386 274 -449 225 -423 b 69 -179 111 -330 69 -262 b 75 -121 69 -160 71 -141 b 84 -58 78 -101 84 -79 b 82 -39 84 -52 84 -45 b 68 -1 79 -26 82 -4 b 26 -32 49 0 33 -12 b 20 -52 24 -39 22 -45 b 0 -223 9 -107 -3 -161 b 141 -553 1 -348 27 -468 b 304 -619 192 -590 243 -619 b 344 -615 317 -619 330 -618 z m 415 -190 b 435 -157 429 -192 435 -184 b 308 -27 435 -86 379 -27 b 271 -46 287 -27 272 -35 b 269 -69 269 -55 269 -62 b 364 -183 269 -128 302 -170 z"},fermataLongAbove:{x_min:0,x_max:591.4911182523068,y_min:-6,y_max:337.10134960318186,ha:343.10134960318186,o:"m 20 -9 b 36 14 29 -9 35 3 b 49 109 45 45 49 78 b 48 143 49 121 49 131 b 42 312 40 200 45 256 b 63 338 42 331 46 338 b 68 340 65 338 66 338 b 279 333 138 336 209 334 b 760 317 439 330 599 323 b 783 298 775 317 782 315 l 796 161 b 814 17 801 115 802 68 b 851 144 840 45 855 102 b 824 396 842 228 834 312 b 760 468 816 459 812 467 l 55 485 b 1 433 12 487 1 478 l 1 387 b 0 203 1 325 0 264 b 9 17 0 141 3 79 b 20 -9 9 7 6 -9 z m 403 3 b 439 6 413 3 425 4 b 477 42 464 9 474 22 b 478 62 478 49 478 55 l 478 84 b 465 160 478 109 478 135 b 449 173 461 167 459 173 b 354 105 386 179 354 156 b 359 71 354 95 356 84 b 360 65 360 69 360 66 b 403 3 372 14 373 3 z"},fermataLongBelow:{x_min:0,x_max:602,y_min:-335,y_max:7,ha:342,o:"m 793 -482 b 851 -444 822 -482 842 -471 b 867 -357 860 -416 867 -387 b 865 -336 867 -350 867 -343 b 851 -189 858 -287 855 -238 b 832 -32 847 -135 840 -84 b 824 -17 832 -26 832 -17 l 822 -17 b 805 -30 816 -19 806 -20 b 798 -88 802 -50 798 -69 b 805 -292 798 -157 801 -225 b 772 -327 806 -318 801 -327 b 360 -324 635 -327 497 -325 b 78 -327 265 -323 171 -327 b 50 -304 59 -327 50 -320 l 50 -297 b 62 -187 55 -261 60 -225 b 71 -60 62 -144 71 -102 b 68 -20 71 -48 71 -33 b 53 10 66 -10 69 10 l 52 10 b 22 -22 37 9 24 -1 b 14 -121 17 -55 16 -89 b 0 -359 10 -200 0 -279 b 6 -452 0 -390 3 -420 b 42 -481 9 -478 20 -481 l 415 -481 l 415 -482 z m 409 -183 b 454 -179 420 -183 435 -181 b 505 -124 487 -176 504 -158 b 505 -89 507 -112 505 -101 b 507 -58 505 -79 507 -68 b 505 -42 507 -52 507 -48 b 485 -10 503 -29 501 -10 b 448 -9 472 -9 461 -9 b 380 -22 425 -9 402 -12 b 363 -46 372 -27 363 -35 l 363 -49 b 364 -114 363 -71 361 -94 b 409 -183 374 -168 377 -183 z"},fermataVeryLongAbove:{x_min:0,x_max:715,y_min:-14.096346766617495,y_max:437,ha:451.0963467666175,o:"m 26 -20 b 42 -4 36 -22 39 -12 b 49 53 49 14 49 33 l 49 448 b 69 478 49 467 52 478 l 72 478 b 81 480 75 478 78 478 b 144 477 102 477 122 477 l 207 477 b 943 471 452 477 698 471 b 978 442 966 471 976 467 b 989 99 985 327 985 213 b 999 -19 991 60 995 22 b 1030 62 1028 6 1030 35 b 1021 507 1028 210 1025 359 b 1012 596 1021 537 1017 567 b 976 624 1009 618 998 624 b 507 626 819 624 662 625 b 46 629 353 628 200 629 b 7 590 19 629 7 618 b 0 101 7 428 0 264 b 16 -4 0 65 13 32 b 26 -20 17 -10 22 -19 z m 187 -9 b 207 30 206 -7 204 14 b 207 55 209 37 207 46 b 200 240 210 117 197 179 b 219 262 200 256 203 262 l 223 262 b 456 252 301 258 379 255 l 772 239 b 804 209 792 238 802 235 b 818 69 806 163 809 115 b 834 -4 821 46 816 19 b 857 56 852 13 857 35 b 851 183 857 99 858 141 b 827 360 841 242 841 301 b 786 390 821 383 809 389 b 189 409 588 403 387 402 b 153 377 163 409 153 400 b 173 27 153 259 150 143 b 187 -9 176 13 177 -9 z m 478 3 b 536 10 491 3 510 6 b 582 60 569 14 580 32 l 582 89 l 580 89 b 580 117 580 98 582 107 b 540 171 577 158 572 171 b 521 171 534 171 528 170 b 459 166 500 170 480 168 b 423 132 436 164 423 154 b 428 88 423 118 425 102 b 478 3 438 22 439 4 z"},fermataVeryLongBelow:{x_min:-.012345679012345682,x_max:686.4443937550029,y_min:-427,y_max:30,ha:457,o:"m 56 -615 b 282 -612 132 -612 207 -613 b 924 -606 497 -608 710 -606 b 973 -570 953 -606 968 -593 b 988 -455 984 -533 991 -494 b 982 -262 984 -390 982 -327 b 976 -69 982 -197 981 -134 b 976 -14 975 -50 976 -33 b 966 43 976 4 975 23 b 940 20 953 37 943 35 b 933 -76 936 -12 933 -45 b 935 -121 933 -91 933 -107 b 940 -307 940 -183 940 -245 l 940 -435 b 919 -458 940 -451 935 -458 b 894 -459 910 -458 903 -458 b 206 -467 665 -461 435 -467 b 88 -467 167 -467 127 -468 b 45 -425 45 -467 42 -465 b 46 -400 46 -416 46 -408 b 43 -325 46 -376 43 -350 b 42 -59 42 -236 42 -148 b 22 17 42 -32 36 -6 b 0 -27 -1 7 0 -10 b 7 -420 0 -158 7 -289 l 7 -474 b 16 -579 7 -510 7 -544 b 56 -615 22 -603 27 -615 z m 789 -390 b 835 -357 816 -392 829 -380 b 850 -256 844 -324 850 -291 b 848 -230 850 -248 850 -239 b 845 -135 845 -199 845 -167 l 845 -72 b 837 23 845 -40 848 -9 b 809 -27 809 14 809 -7 l 809 -222 b 788 -242 809 -238 805 -242 l 203 -229 b 180 -209 186 -229 180 -223 l 180 -160 b 179 -115 180 -145 180 -131 b 179 -50 177 -94 179 -72 b 163 24 179 -26 176 0 b 137 -6 145 19 140 10 b 134 -39 134 -17 134 -27 b 138 -105 134 -60 137 -82 l 138 -197 b 145 -343 138 -246 138 -294 b 179 -377 148 -364 151 -377 b 789 -390 383 -377 586 -380 z m 480 -164 b 566 -65 549 -164 566 -140 b 527 1 566 -10 564 1 b 436 -71 426 1 436 -9 l 436 -88 l 436 -143 b 454 -163 436 -153 439 -161 b 480 -164 464 -163 472 -164 z"},fermataShortAbove:{x_min:0,x_max:545,y_min:-18.08551453529649,y_max:348,ha:366.0855145352965,o:"m 16 -26 b 36 -9 26 -27 30 -16 b 354 340 143 107 249 223 b 369 348 360 346 364 348 b 382 341 373 348 377 346 l 530 199 b 743 0 599 131 672 68 b 753 -7 747 -3 750 -7 b 762 -1 756 -7 759 -6 b 785 84 776 10 785 48 b 768 150 785 112 779 138 l 399 491 b 379 501 392 498 384 501 b 357 488 372 501 364 495 b 27 137 248 370 141 251 b 1 84 12 121 1 105 b 3 69 1 79 1 75 b 0 55 1 65 0 59 b 9 1 0 36 9 20 b 16 -26 10 -7 3 -22 z m 357 24 b 367 27 360 24 363 24 b 431 118 422 42 431 49 b 429 151 431 130 431 141 b 400 193 428 171 429 193 b 333 147 359 193 333 176 b 341 42 333 111 337 78 b 357 24 343 30 346 24 z"},fermataShortBelow:{x_min:0,x_max:565,y_min:-335,y_max:10,ha:345,o:"m 386 -482 b 422 -455 395 -482 405 -474 b 732 -117 526 -343 631 -232 b 814 12 765 -79 799 -42 b 752 -22 780 14 768 -7 b 436 -320 645 -120 540 -219 b 419 -328 429 -325 425 -328 b 400 -318 413 -328 408 -325 b 35 0 279 -212 157 -105 b 16 14 29 4 23 14 b 7 12 13 14 10 14 b 0 -3 1 7 0 1 b 7 -23 0 -10 3 -17 b 20 -48 12 -30 14 -39 b 167 -238 60 -117 115 -177 b 351 -455 229 -310 289 -383 b 386 -482 367 -474 377 -482 z m 382 -213 b 406 -207 389 -213 396 -210 b 452 -156 431 -199 446 -180 b 461 -85 456 -132 458 -108 b 448 -32 461 -66 454 -49 b 418 -6 442 -12 431 -6 b 397 -9 410 -6 405 -7 b 348 -50 376 -14 350 -14 b 356 -170 348 -91 354 -130 b 382 -213 357 -199 363 -213 z"},breathMarkComma:{x_min:0,x_max:148,y_min:0,y_max:275,ha:275,o:"m 120 0 b 187 78 156 20 174 48 b 213 209 206 121 213 164 b 206 294 213 238 210 265 b 140 390 200 337 171 367 b 122 396 134 395 128 396 b 68 382 105 396 85 384 b 46 379 60 382 53 382 b 0 328 12 369 0 357 b 1 311 0 323 1 317 b 30 210 4 275 22 243 b 66 167 39 179 46 167 b 94 171 73 167 82 168 b 143 180 109 174 124 180 b 160 179 148 180 154 180 b 120 66 124 145 120 107 b 120 0 120 45 121 23 z"},breathMarkUpbow:{x_min:0,x_max:254,y_min:0,y_max:595,ha:595,o:"m 233 0 b 256 48 251 14 253 30 b 272 183 264 92 265 138 b 311 455 289 274 295 364 b 350 716 327 541 341 628 b 366 815 354 749 366 782 b 359 857 366 829 363 842 b 327 815 334 852 330 832 b 302 674 315 769 310 721 b 248 357 288 567 269 462 b 225 226 240 314 242 268 b 210 251 212 232 213 243 b 69 721 163 408 117 564 b 32 835 58 760 53 801 b 20 851 29 841 27 851 b 14 850 19 851 16 851 b 0 828 6 847 0 838 l 0 825 b 12 765 1 804 7 785 b 194 125 73 552 132 338 b 233 0 206 84 213 42 z"},caesura:{x_min:0,x_max:565.5831864753837,y_min:-.09016994374947417,y_max:562.4481112129314,ha:562.5382811566809,o:"m 0 76 b 49 122 24 92 37 107 b 444 613 180 287 305 455 b 528 770 484 660 518 708 b 531 792 530 778 531 785 b 524 808 531 799 530 805 b 490 792 513 815 498 802 b 390 683 456 756 420 721 b 48 262 275 543 164 400 b 0 76 0 207 7 145 z m 226 1 b 248 13 238 -4 243 7 l 353 137 b 759 638 490 302 632 464 b 814 805 795 688 819 740 b 779 786 796 805 788 796 b 628 609 724 732 678 668 b 310 242 523 485 416 363 b 217 69 265 190 217 140 b 222 30 217 58 219 45 b 222 23 222 29 220 26 b 220 12 222 20 220 16 b 226 1 220 7 222 3 z"},caesuraCurved:{x_min:0,x_max:386,y_min:-10,y_max:584,ha:594,o:"m 180 -14 b 246 14 213 -13 230 0 b 347 144 288 52 315 99 b 526 471 420 246 488 350 b 556 671 546 537 556 603 b 543 798 556 713 553 756 b 504 837 537 822 521 828 b 490 841 500 840 494 841 b 472 832 482 841 477 838 b 406 678 436 785 406 737 b 410 638 406 665 408 652 b 425 511 419 595 425 553 b 315 186 425 395 387 287 b 180 -14 271 122 228 58 z m 14 24 b 49 39 29 24 40 32 b 120 114 76 60 99 85 b 216 276 156 166 184 223 b 317 626 281 384 317 501 b 315 664 317 639 317 651 b 301 773 314 701 311 737 b 262 808 295 795 278 808 b 245 799 256 808 249 805 b 170 641 209 750 170 706 b 171 621 170 634 170 628 b 177 511 176 585 177 549 b 114 229 177 415 160 320 b 0 26 79 161 42 95 b 14 24 6 24 10 24 z"},restMaxima:{x_min:0,x_max:366,y_min:-255,y_max:255,ha:510,o:"m 397 -367 b 504 -343 436 -367 468 -347 b 518 -318 516 -341 518 -330 b 527 -30 518 -217 527 -117 b 526 33 527 -7 527 13 l 526 301 b 501 350 526 323 520 341 b 428 367 477 361 452 367 b 374 359 410 367 393 364 b 357 333 361 354 357 347 b 356 91 357 252 356 171 l 356 30 b 340 -307 357 -82 346 -194 b 397 -367 337 -354 350 -367 z m 46 -357 b 58 -356 49 -357 53 -357 b 154 -333 91 -351 121 -338 b 173 -305 168 -330 173 -320 l 173 302 b 132 356 173 330 157 348 b 68 364 112 363 89 364 b 3 304 19 363 1 348 l 3 4 l 0 4 b 1 -302 0 -98 0 -200 b 46 -357 1 -331 16 -357 z"},restDoubleWhole:{x_min:0,x_max:122,y_min:0,y_max:249,ha:249,o:"m 43 0 b 58 1 48 0 52 0 b 124 20 81 6 102 17 b 176 96 173 27 176 58 b 173 220 174 138 173 179 b 176 304 173 248 176 276 b 140 353 176 331 163 346 b 95 359 125 356 111 359 b 32 346 73 359 52 354 b 0 315 20 340 0 337 b 1 243 0 291 1 268 l 1 174 l 4 174 l 4 48 b 43 0 4 16 17 0 z"},restWhole:{x_min:.8908513171538642,x_max:500,y_min:-120,y_max:14,ha:134,o:"m 356 -173 l 356 -171 l 642 -171 b 719 -115 680 -171 717 -145 b 720 -82 719 -104 720 -92 b 711 -20 720 -60 719 -40 b 672 17 704 0 694 10 b 649 20 664 20 657 20 b 605 17 634 20 621 17 b 92 19 433 17 262 17 b 29 7 69 20 49 12 b 9 -17 12 4 9 -6 b 10 -43 9 -26 10 -35 b 1 -84 10 -58 3 -72 b 76 -173 0 -147 7 -173 z"},restWholeLegerLine:{x_min:-196.7269258015421,x_max:685,y_min:-157,y_max:29,ha:186,o:"m 96 -226 b 167 -223 121 -226 144 -225 b 300 -222 207 -222 252 -222 l 444 -222 b 660 -217 520 -222 595 -222 b 746 -131 703 -216 746 -200 b 744 -62 746 -108 747 -85 b 743 -39 743 -53 743 -46 b 789 -14 743 -16 752 -17 b 883 -16 821 -13 851 -16 b 965 -9 910 -16 937 -14 b 986 3 972 -7 986 -10 l 986 6 b 963 35 984 17 982 32 b 887 42 937 39 913 42 b 39 27 605 42 321 33 l -76 27 b -261 20 -138 27 -200 26 b -282 14 -269 20 -279 23 b -271 -7 -287 4 -276 -1 b -209 -27 -253 -23 -230 -24 b -153 -30 -190 -30 -173 -30 b -48 -29 -118 -30 -82 -27 b 6 -32 -22 -29 -6 -27 b 1 -72 3 -43 1 -58 b 4 -167 1 -105 7 -140 b 53 -223 3 -207 14 -217 b 96 -226 68 -226 82 -226 z"},restHalf:{x_min:0,x_max:518.3998530468286,y_min:0,y_max:162,ha:162,o:"m 98 0 l 556 0 b 665 1 592 0 629 0 b 746 82 720 3 743 29 b 736 174 749 114 740 144 b 670 232 729 215 708 232 b 570 229 636 232 603 229 b 356 233 498 229 426 233 l 73 233 b 0 179 19 233 0 220 b 1 154 0 171 0 164 b 6 95 4 135 6 115 b 98 0 3 27 29 0 z"},restHalfLegerLine:{x_min:-120,x_max:448.2056815990121,y_min:-20,y_max:143,ha:163,o:"m 397 -29 b 482 -23 426 -29 455 -27 b 526 -24 497 -24 511 -24 b 608 -17 554 -24 582 -23 b 645 -1 622 -14 644 -17 b 615 26 648 13 629 20 b 595 32 608 29 602 30 b 526 37 572 35 549 37 b 498 36 517 37 507 37 b 471 35 487 35 478 35 b 445 53 451 35 445 39 b 449 89 445 60 446 73 l 454 117 b 373 206 456 173 428 206 b 324 204 356 206 340 206 b 209 203 287 203 248 203 b 46 193 156 203 101 202 b 16 170 32 190 19 187 b 9 112 13 151 9 131 b 14 78 9 101 10 89 b 19 59 17 71 19 63 b -4 45 19 49 12 45 l -10 45 b -150 33 -58 45 -104 46 b -173 22 -158 32 -173 33 l -173 19 b -151 -13 -170 6 -168 -10 b -117 -17 -140 -16 -128 -17 b 118 -13 -37 -17 39 -13 b 397 -29 213 -13 308 -29 z"},restQuarter:{x_min:-.3784452492533808,x_max:263,y_min:-415,y_max:415,ha:830,o:"m 151 -596 b 164 -563 163 -589 161 -575 b 160 -546 164 -557 161 -552 b 124 -396 148 -495 135 -446 b 122 -380 122 -390 122 -384 b 199 -255 122 -331 158 -272 b 228 -256 209 -249 217 -253 b 324 -346 274 -271 298 -310 b 353 -369 331 -356 341 -369 b 360 -367 356 -369 357 -369 b 379 -336 373 -361 379 -348 l 377 -325 b 344 -232 372 -292 366 -258 b 249 -58 301 -180 278 -117 b 242 -36 245 -49 242 -42 b 258 -7 242 -26 248 -17 b 328 78 284 20 311 45 b 354 158 344 104 354 131 b 337 216 354 177 350 196 b 213 435 294 288 249 359 b 115 575 189 487 158 536 b 78 598 105 585 92 598 b 59 592 72 598 66 596 b 39 562 45 583 39 572 b 53 527 39 550 45 539 b 168 344 98 469 125 402 b 187 307 181 328 187 317 b 153 269 187 294 176 284 b 62 213 122 252 91 235 b 40 180 48 203 40 192 b 46 158 40 173 43 166 b 99 65 60 125 79 95 b 183 -79 131 20 160 -29 b 156 -86 173 -88 164 -85 b 0 -261 58 -99 -7 -173 b 96 -557 10 -366 49 -464 b 124 -585 102 -569 109 -580 b 145 -598 132 -588 138 -598 b 151 -596 147 -598 150 -598 z"},rest8th:{x_min:0,x_max:289,y_min:-260,y_max:261,ha:521,o:"m 164 -374 b 212 -340 190 -373 203 -357 b 276 -190 238 -292 258 -242 b 410 285 333 -36 359 128 b 416 314 413 294 416 304 l 416 321 b 393 354 415 341 410 354 b 382 353 389 354 386 354 b 292 311 347 347 315 333 b 174 225 256 276 216 251 b 157 219 168 222 163 219 b 140 228 151 219 145 222 b 131 246 134 233 131 240 b 135 262 131 252 132 256 b 147 298 141 272 147 285 b 127 367 147 323 154 354 b 94 376 114 373 102 376 b 48 336 75 376 63 363 b 3 181 20 288 12 235 b 0 150 1 170 0 160 b 109 24 0 84 35 24 b 171 36 127 24 148 27 b 289 101 213 52 248 75 b 164 -374 256 -62 193 -213 z"},rest16th:{x_min:0,x_max:333,y_min:-328.283950617284,y_max:244,ha:572.2839506172841,o:"m 209 -471 b 246 -458 222 -477 236 -468 b 307 -338 279 -425 300 -384 b 324 -226 312 -301 317 -262 b 428 161 350 -94 386 35 b 480 318 445 215 480 259 b 467 347 480 331 477 341 b 445 351 461 350 454 351 b 408 337 432 351 419 347 b 402 333 405 336 403 334 b 223 215 344 294 294 245 b 236 259 229 233 235 246 b 238 276 238 265 238 271 b 212 338 238 302 226 334 b 193 341 206 340 199 341 b 86 289 156 341 104 317 b 59 180 66 255 59 217 b 156 27 59 76 92 27 b 236 46 179 27 204 35 b 338 101 271 59 298 82 b 289 -49 312 49 302 0 b 196 -122 276 -99 235 -107 b 176 -114 187 -127 176 -127 l 176 -111 b 157 -53 177 -88 164 -72 b 69 -9 141 -7 101 -16 b 17 -48 43 -3 29 -27 b 0 -127 4 -73 0 -99 b 6 -186 0 -147 1 -167 b 82 -294 17 -262 37 -294 b 160 -276 102 -294 128 -289 b 219 -242 181 -268 203 -259 b 236 -230 223 -236 229 -230 b 243 -232 239 -230 240 -230 b 235 -275 248 -246 239 -261 b 202 -456 220 -334 202 -395 b 209 -471 202 -462 203 -468 z"},rest32nd:{x_min:0,x_max:347,y_min:-497.5023916875033,y_max:483,ha:980.5023916875033,o:"m 177 -716 b 217 -690 194 -720 209 -704 b 233 -655 225 -680 230 -668 b 292 -390 253 -567 275 -480 b 361 -48 312 -275 336 -161 b 452 400 393 102 422 252 b 497 629 467 477 482 553 b 500 647 498 635 500 641 b 480 691 500 665 492 684 b 464 696 475 694 469 696 b 418 674 448 696 431 685 l 361 626 b 333 611 353 618 343 612 b 308 629 325 611 317 616 b 239 667 292 651 265 661 b 204 670 228 668 216 670 b 86 559 141 670 95 628 b 85 537 86 552 85 544 b 107 416 85 495 95 455 b 161 372 114 389 134 372 b 174 373 166 372 170 372 b 226 383 192 374 209 377 b 387 478 285 402 330 444 b 364 386 379 444 364 415 b 276 271 364 323 320 298 b 265 266 272 268 268 266 b 252 276 261 266 256 269 b 143 333 229 311 186 333 b 107 327 130 333 118 330 b 43 243 62 314 46 291 b 58 145 43 210 52 179 b 150 63 68 92 99 63 b 315 132 213 63 259 98 b 266 -58 297 63 281 4 b 207 -101 259 -91 230 -96 b 186 -66 186 -107 199 -75 b 180 -50 181 -63 183 -55 b 101 -3 160 -23 135 -3 b 9 -66 59 -3 20 -32 b 0 -118 3 -84 0 -101 b 10 -196 0 -144 6 -170 b 104 -287 20 -256 52 -287 b 137 -282 114 -287 125 -287 b 184 -269 151 -281 171 -269 b 196 -275 190 -269 193 -271 b 199 -287 197 -278 199 -282 b 184 -343 199 -304 189 -325 b 181 -348 184 -346 183 -347 b 134 -595 158 -429 131 -508 b 156 -677 134 -624 150 -648 b 177 -716 158 -693 160 -713 z"},rest64th:{x_min:0,x_max:428,y_min:-720,y_max:473.6797408388932,ha:1193.6797408388932,o:"m 200 -1037 b 229 -1012 215 -1037 222 -1025 b 238 -984 233 -1004 236 -994 b 282 -780 248 -914 265 -848 b 386 -369 317 -644 354 -507 b 491 104 422 -212 451 -53 b 600 541 528 249 550 399 b 616 629 611 570 616 599 b 600 680 616 648 615 671 b 550 665 586 687 566 677 b 480 618 527 649 501 635 b 464 611 474 613 468 611 b 448 622 458 611 454 615 b 366 662 425 651 397 662 b 331 658 354 662 343 661 b 242 572 285 647 253 619 b 236 528 239 557 236 543 b 266 400 236 484 251 442 b 325 373 274 377 301 373 b 436 409 366 373 403 383 l 494 452 b 474 360 485 416 474 389 b 383 248 474 297 435 269 b 320 328 377 288 351 310 b 276 341 305 337 291 341 b 186 269 235 341 194 311 b 181 230 183 256 181 243 b 187 153 181 204 186 179 b 279 63 192 86 233 63 b 304 65 288 63 295 63 b 416 115 344 72 379 92 b 387 -14 406 69 397 27 b 320 -95 380 -52 369 -86 b 318 -79 320 -89 320 -84 b 223 0 305 -29 271 0 b 122 -81 171 0 135 -30 b 118 -127 120 -96 118 -112 l 118 -196 b 137 -242 118 -215 125 -229 b 209 -275 157 -266 181 -275 b 249 -269 222 -275 235 -274 b 318 -248 272 -264 294 -255 b 281 -390 315 -301 292 -344 b 276 -400 279 -393 279 -397 b 259 -420 272 -408 266 -416 b 246 -429 255 -425 251 -429 b 233 -415 242 -429 238 -426 b 176 -359 225 -389 200 -372 b 121 -346 158 -348 140 -346 b 14 -408 73 -346 27 -370 b 0 -498 4 -438 0 -468 b 6 -564 0 -520 3 -543 b 91 -635 12 -611 45 -635 b 131 -629 104 -635 117 -634 b 223 -590 163 -622 190 -603 b 166 -824 203 -671 189 -747 b 148 -912 157 -852 148 -881 b 156 -955 148 -926 150 -940 b 177 -1008 161 -972 170 -991 b 200 -1037 181 -1020 183 -1037 z"},rest128th:{x_min:.6717818579024267,x_max:491,y_min:-711,y_max:719,ha:1430,o:"m 233 -1015 b 271 -956 256 -1002 266 -981 l 314 -723 b 393 -350 337 -598 366 -474 b 543 312 442 -128 492 91 b 687 841 583 490 635 665 b 707 958 698 880 707 919 b 706 986 707 968 707 976 b 688 1025 704 999 704 1024 b 670 1027 683 1025 677 1027 b 629 1007 655 1027 639 1022 b 559 945 613 981 586 968 b 541 1004 553 968 559 991 b 456 1035 516 1024 488 1035 b 419 1030 444 1035 431 1034 b 344 953 379 1018 353 995 b 340 900 341 936 340 917 b 341 847 340 881 341 864 b 380 779 340 815 354 793 b 464 763 406 765 435 762 b 592 814 510 763 549 786 b 546 660 575 757 556 710 b 480 585 537 619 517 598 b 478 599 480 590 478 595 b 386 678 472 641 428 678 b 294 612 343 678 304 651 b 279 477 282 567 278 521 b 363 395 281 428 317 395 b 380 396 369 395 374 395 b 488 436 416 403 449 419 b 384 233 469 357 468 275 b 359 291 373 252 377 276 b 282 318 337 310 310 318 b 181 264 243 318 203 298 b 154 107 153 216 154 161 b 242 6 154 42 187 6 b 278 10 253 6 265 7 b 408 88 330 22 366 55 b 387 -1 400 56 393 27 b 301 -112 379 -55 354 -94 b 289 -65 297 -95 302 -79 b 219 -32 269 -42 245 -32 b 183 -37 207 -32 196 -35 b 112 -109 144 -46 121 -71 b 105 -219 104 -145 108 -183 b 186 -315 101 -276 134 -315 b 230 -307 199 -315 215 -312 b 324 -256 264 -295 292 -275 b 180 -491 323 -383 266 -471 b 183 -459 180 -480 180 -469 b 184 -442 184 -454 184 -448 l 184 -436 b 135 -369 184 -403 170 -383 b 102 -363 125 -364 114 -363 b 29 -399 73 -363 45 -376 b 1 -556 -4 -448 6 -503 b 109 -670 -4 -625 43 -670 b 140 -667 118 -670 130 -668 b 253 -616 180 -658 213 -638 b 238 -688 248 -644 242 -665 b 192 -959 220 -779 192 -867 b 193 -992 192 -971 192 -981 b 210 -1024 194 -1014 199 -1024 b 233 -1015 216 -1024 223 -1021 z"},dynamicPiano:{x_min:-49,x_max:326.5019318364244,y_min:-142,y_max:515,ha:657,o:"m -56 -204 b -42 -202 -52 -204 -46 -203 b -19 -194 -35 -202 -26 -197 b 147 -138 35 -170 91 -151 b 249 -58 194 -127 223 -95 b 262 -29 255 -50 262 -39 b 258 -17 262 -24 261 -20 b 232 -7 252 -10 242 -7 b 210 -12 225 -7 217 -9 b 125 -40 184 -23 157 -30 b 183 140 153 19 171 79 b 251 167 207 144 230 153 b 469 518 383 262 480 382 b 357 687 472 626 420 687 b 315 678 344 687 330 684 b 204 600 279 664 240 634 b 210 704 206 635 209 670 b 215 721 212 710 215 716 b 206 733 215 727 212 730 b 180 742 197 736 189 742 b 164 734 176 742 170 740 b 1 575 108 684 36 645 b -7 557 -1 569 -7 563 b -6 553 -7 556 -7 554 b 7 547 -3 547 3 547 l 17 547 b 82 575 43 547 59 567 l 82 452 b 56 46 82 317 81 180 b 17 -66 49 7 46 -36 b -62 -173 -13 -99 -37 -135 b -71 -192 -66 -179 -71 -184 b -68 -199 -71 -193 -69 -196 b -56 -204 -65 -203 -60 -204 z m 196 258 b 197 266 197 261 197 264 b 200 510 200 347 199 429 b 233 543 210 521 222 533 b 281 560 249 554 266 560 b 340 503 310 560 333 540 b 344 461 343 488 344 474 b 321 323 344 413 333 369 b 268 272 315 300 295 281 b 196 258 245 265 220 261 z"},dynamicMezzo:{x_min:-18,x_max:559,y_min:-50,y_max:365,ha:415,o:"m 43 -71 b 160 19 86 -71 143 -26 b 230 264 189 99 200 184 b 282 363 243 297 259 327 b 287 320 285 347 287 333 b 284 279 287 305 285 292 l 249 -12 b 275 -43 248 -29 245 -43 b 395 45 321 -43 389 3 b 462 271 406 124 436 197 b 523 387 475 310 490 348 l 523 346 b 504 130 521 274 513 202 b 501 81 501 114 501 98 b 510 3 501 55 504 29 b 580 -72 521 -48 543 -72 b 625 -63 593 -72 608 -69 b 789 50 690 -43 744 -3 b 805 72 795 56 805 63 b 798 85 805 76 802 81 b 778 94 792 91 785 94 b 755 85 770 94 763 91 l 693 40 b 675 33 685 36 680 33 b 658 52 668 33 662 39 b 645 144 651 82 645 112 b 658 448 641 246 660 346 b 606 507 658 485 638 507 b 583 504 599 507 592 505 b 495 446 547 497 521 471 b 420 373 471 423 448 399 b 413 458 418 406 418 432 b 361 507 408 490 386 507 b 320 491 347 507 333 501 b 160 307 256 444 207 382 l 160 337 b 174 488 160 387 174 438 b 156 521 174 501 173 513 b 137 526 148 524 143 526 b 109 513 127 526 118 520 b -16 399 66 477 23 439 b -26 383 -20 395 -26 389 l -26 379 b -14 370 -24 372 -20 370 b -6 372 -12 370 -9 372 b 19 376 4 374 12 376 b 36 359 32 376 36 370 b 30 330 36 350 35 341 l 30 323 b 9 -35 23 203 17 85 b 43 -71 6 -65 19 -71 z"},dynamicForte:{x_min:-144,x_max:311.30112136775,y_min:-115.3876295915697,y_max:504,ha:619.3876295915697,o:"m -101 -166 b 173 76 7 -153 150 -30 b 206 344 192 164 202 253 b 268 338 226 343 246 341 b 384 395 317 333 353 361 b 397 419 393 405 397 412 b 367 442 397 429 387 436 b 350 444 361 444 356 444 b 206 455 302 449 255 454 l 206 474 b 202 540 204 495 202 518 b 209 593 202 557 203 576 b 236 624 215 613 225 624 b 265 612 245 624 253 619 b 308 552 287 596 302 577 b 336 533 312 534 323 533 b 448 611 366 533 444 583 b 399 696 452 648 423 671 b 382 706 395 700 387 703 b 308 726 357 720 333 726 b 207 684 272 726 239 711 b 60 455 135 622 60 560 l 10 455 b -23 448 -1 455 -13 454 b -102 372 -55 426 -76 397 b -109 357 -108 367 -109 361 b -95 347 -109 353 -105 348 b -63 346 -84 346 -73 346 b 0 344 -43 344 -22 344 l 63 344 b 53 186 63 291 59 239 b 23 0 46 124 42 60 b -35 -60 10 -42 -6 -60 b -73 -52 -45 -60 -58 -58 b -91 -48 -79 -49 -85 -48 b -109 -53 -96 -48 -102 -49 b -199 -124 -143 -72 -168 -99 b -207 -137 -203 -128 -207 -132 b -194 -148 -207 -141 -203 -145 b -101 -166 -164 -160 -132 -168 z"},dynamicRinforzando:{x_min:-75,x_max:322.0960720195126,y_min:-90,y_max:325,ha:415,o:"m 23 -130 b 40 -125 27 -130 33 -128 b 128 -9 81 -114 125 -53 b 145 200 132 62 141 130 b 148 238 147 212 148 225 b 308 321 184 291 245 321 b 363 314 325 321 344 318 b 377 310 369 312 373 310 b 384 311 380 310 382 310 b 464 415 410 317 464 389 b 446 433 465 429 455 429 b 390 445 428 441 409 445 b 305 429 361 445 334 438 b 167 346 252 413 202 393 b 153 325 163 338 158 333 b 148 438 154 363 151 399 b 121 468 147 456 134 468 b 101 458 115 468 108 465 b -63 310 46 409 -16 367 b -108 240 -78 289 -98 271 b 32 330 -50 256 -13 297 b 37 304 37 320 37 312 l 37 292 b 10 -101 27 161 20 30 b 23 -130 9 -120 12 -130 z"},dynamicSforzando:{x_min:0,x_max:296,y_min:0,y_max:379,ha:379,o:"m 151 0 b 174 1 160 0 166 0 b 392 158 272 14 346 71 b 405 207 400 174 405 190 b 359 287 405 236 389 265 b 261 325 328 308 294 315 b 168 413 216 340 181 366 b 166 426 167 418 166 423 b 176 438 166 432 167 436 b 199 441 183 441 190 441 b 310 393 238 441 295 422 b 334 370 317 376 325 370 b 363 386 343 370 353 379 b 422 445 386 402 408 420 b 426 458 425 449 426 454 b 422 469 426 462 425 465 b 274 546 395 518 333 546 b 161 503 232 546 190 531 b 86 405 132 472 108 439 b 71 347 75 387 71 367 b 112 256 71 312 85 279 b 209 215 141 232 176 226 b 284 168 238 206 266 197 b 300 131 291 157 300 144 b 298 120 300 127 298 122 b 278 107 294 109 285 108 b 262 108 271 107 266 108 l 259 108 b 114 157 200 107 156 125 b 96 181 104 163 96 170 l 96 184 b 102 202 96 190 102 196 b 96 209 102 204 101 207 b 63 194 82 215 72 204 b 7 109 42 168 26 138 b 0 86 3 101 0 94 b 13 60 0 78 4 68 b 151 0 53 23 101 0 z"},dynamicZ:{x_min:-42.73880183193087,x_max:331,y_min:0,y_max:328,ha:328,o:"m -45 0 b -6 16 -32 0 -17 10 b 3 20 -3 16 0 19 b 144 60 49 48 96 60 b 284 22 190 60 238 46 b 348 4 305 10 327 4 b 461 75 393 4 435 30 b 468 91 464 81 467 86 b 456 104 468 95 465 99 b 287 173 402 131 348 167 b 239 176 271 174 255 176 b 168 174 217 176 194 174 b 367 340 236 236 298 294 b 459 423 402 363 432 392 b 477 454 467 431 475 442 b 474 462 477 456 475 459 b 454 472 469 469 462 472 b 432 468 446 472 439 469 b 356 448 406 461 380 455 b 210 422 307 433 258 422 b 109 442 177 422 144 428 b 94 445 104 444 99 445 b 69 433 85 445 76 442 b 27 390 56 419 39 406 b -9 343 16 373 -17 357 b 63 311 3 320 36 314 l 78 311 b 132 307 95 308 114 307 b 240 314 168 307 203 311 l 193 271 b -37 50 117 196 19 145 b -59 7 -46 36 -69 20 b -45 0 -55 3 -50 0 z"},ornamentTrill:{x_min:1,x_max:551,y_min:-18,y_max:539,ha:557,o:"m 321 612 b 190 602 278 605 235 605 l 190 638 b 187 693 190 652 190 667 b 161 776 184 717 193 776 b 137 747 150 776 137 766 b 130 654 135 716 131 685 l 130 596 l 52 588 b 4 539 23 585 7 570 b 1 477 3 530 1 500 b 3 448 1 461 3 448 l 3 452 b 53 432 6 436 23 432 b 134 435 75 432 102 433 b 151 117 138 328 147 223 b 170 13 153 82 157 46 b 209 -26 179 -10 193 -26 b 222 -22 213 -26 217 -24 b 269 -17 233 -16 253 -27 b 343 135 325 19 346 66 b 343 158 343 147 344 147 b 323 192 341 171 337 187 b 291 176 311 194 300 184 l 264 148 b 229 131 261 145 238 131 b 212 170 209 131 213 154 b 194 438 203 259 199 348 l 272 442 b 284 452 276 441 279 441 b 305 462 287 461 295 462 l 312 462 b 346 477 325 462 340 464 b 366 560 357 503 366 531 b 321 612 366 598 356 618 z m 759 588 b 711 560 749 592 733 570 b 588 500 671 541 631 521 b 583 533 586 514 586 524 b 560 576 577 549 577 572 b 517 550 541 582 528 564 b 416 423 482 508 452 462 b 382 353 392 397 384 370 b 387 305 380 341 386 318 b 392 275 389 295 392 285 b 409 243 393 262 393 243 b 431 262 419 243 425 255 b 521 373 459 298 488 333 b 523 354 521 366 523 360 b 520 337 523 346 521 340 b 508 295 513 323 508 310 b 530 102 508 279 524 122 b 549 66 533 88 530 66 b 577 99 563 66 572 84 b 580 131 580 109 580 121 l 580 302 b 600 347 580 318 582 337 b 701 392 632 364 665 384 b 793 518 785 409 793 435 b 759 588 793 559 785 576 z"},ornamentTurn:{x_min:0,x_max:574,y_min:0,y_max:312,ha:312,o:"m 651 0 b 816 132 727 0 796 46 b 827 223 822 163 827 193 b 808 340 827 262 821 301 b 665 449 785 408 729 449 b 636 446 655 449 647 448 b 589 384 600 441 586 422 l 602 300 b 611 285 603 291 605 285 b 621 288 613 285 616 287 b 655 295 632 294 644 295 b 711 284 674 295 693 289 b 773 209 740 275 773 232 b 697 156 773 184 734 160 b 664 154 685 154 675 154 b 579 168 635 154 608 158 b 455 242 533 186 495 213 b 261 400 387 291 331 354 b 160 432 225 422 190 432 b 20 328 98 432 49 392 b 0 229 6 295 0 262 b 30 71 0 176 14 122 b 144 3 43 29 96 3 b 168 6 153 3 160 4 b 248 122 233 20 248 39 b 246 147 248 124 248 135 b 226 177 243 164 239 177 b 206 170 220 177 215 174 b 144 154 186 158 166 154 b 79 170 122 154 101 160 b 53 202 62 179 53 189 b 60 228 53 209 55 217 b 161 281 81 261 120 281 b 183 279 168 281 176 281 b 325 190 243 269 284 229 b 572 16 402 124 475 53 b 651 0 598 6 625 0 z"},ornamentTurnSlash:{x_min:0,x_max:574,y_min:-106,y_max:405,ha:511,o:"m 441 -153 b 456 -60 455 -118 456 -89 b 455 81 455 -14 455 33 b 572 14 491 55 530 30 b 651 -1 598 4 625 -1 b 816 131 727 -1 796 45 b 827 222 822 161 827 192 b 808 338 827 261 821 300 b 665 448 785 406 729 448 b 636 445 655 448 647 446 b 589 383 600 439 586 420 l 602 298 b 611 284 603 289 605 284 b 621 287 613 284 616 285 b 655 294 632 292 644 294 b 711 282 674 294 693 288 b 773 207 740 274 773 230 b 697 154 773 183 734 158 b 664 153 685 153 675 153 b 579 167 635 153 608 157 b 455 240 533 183 495 212 b 454 242 455 240 455 242 l 454 337 b 452 488 454 386 452 439 b 433 570 452 517 451 546 b 425 583 431 575 431 583 l 422 583 b 403 566 415 582 408 573 b 402 546 400 560 402 553 l 397 287 b 261 399 353 325 310 366 b 160 431 225 420 190 431 b 20 327 98 431 48 390 b 0 228 6 294 0 261 b 30 69 0 174 14 121 b 144 1 43 27 96 1 b 168 4 153 1 160 3 b 248 121 233 19 248 37 b 246 145 248 122 248 134 b 226 176 243 163 239 176 b 206 168 220 176 215 173 b 144 153 186 157 166 153 b 79 168 122 153 101 158 b 53 200 62 177 53 187 b 60 226 53 207 55 216 b 161 279 79 259 120 279 b 183 278 168 279 176 279 b 325 189 243 266 282 226 b 395 130 348 168 372 148 b 393 71 393 109 393 89 b 441 -153 390 -6 402 -78 z"},ornamentMordent:{x_min:0,x_max:700,y_min:0,y_max:497,ha:497,o:"m 513 0 b 528 39 526 14 527 27 b 531 72 531 50 531 60 b 528 138 531 94 528 117 l 528 347 b 552 359 537 354 544 359 b 579 338 560 359 569 353 b 674 217 609 297 639 255 b 719 190 690 200 704 190 b 759 215 732 190 744 197 b 940 395 815 279 877 337 b 1001 490 968 422 986 455 b 1008 513 1004 495 1008 505 b 1002 524 1008 517 1007 521 b 968 516 994 530 978 524 b 960 508 965 513 963 510 b 798 356 900 464 848 410 b 778 341 791 347 783 341 b 757 354 772 341 765 346 b 661 475 720 392 690 432 b 611 517 644 504 629 517 b 563 498 598 517 583 511 b 527 471 550 490 539 481 l 527 570 b 492 716 526 619 523 671 b 472 677 480 704 472 694 b 465 399 474 585 468 491 b 439 366 456 387 448 376 b 384 320 415 336 399 320 b 330 367 369 320 354 336 b 325 376 328 369 327 373 b 226 490 291 413 265 456 b 189 505 213 500 202 505 b 157 491 177 505 167 500 b 0 229 75 420 0 346 b 1 202 0 220 0 212 b 22 215 12 203 16 209 b 124 327 55 252 89 289 b 147 343 132 337 140 343 b 171 323 156 343 164 336 b 266 197 196 276 232 236 b 337 157 291 170 314 157 b 410 207 361 157 386 174 b 461 274 428 229 444 252 b 462 166 461 238 461 202 b 513 0 465 108 487 55 z"},ornamentShortTrill:{x_min:0,x_max:747,y_min:0,y_max:243,ha:243,o:"m 379 0 b 428 14 395 0 410 4 b 474 56 445 26 461 39 b 552 157 500 89 526 122 b 566 168 556 163 560 168 b 575 157 569 168 572 166 b 664 36 592 107 628 72 b 733 1 685 13 710 1 b 802 35 757 1 780 13 b 1007 249 871 105 940 177 b 1067 324 1028 272 1054 295 b 1076 340 1068 330 1076 334 b 1073 346 1076 341 1076 343 b 1057 350 1068 348 1063 350 b 1047 347 1053 350 1050 350 b 1001 310 1031 336 1015 324 l 857 157 b 844 143 852 153 848 143 b 835 150 841 143 838 144 b 757 242 815 186 780 209 b 685 298 739 268 713 284 b 641 310 670 305 655 310 b 590 288 625 310 608 304 b 497 179 554 256 527 215 b 480 164 490 170 485 164 b 462 179 474 164 469 168 b 372 295 436 220 405 258 b 278 344 346 324 312 344 b 199 310 252 344 226 334 b 92 196 161 274 128 233 b 0 24 46 148 23 89 b 42 48 22 27 32 37 b 156 168 84 85 114 132 b 196 192 174 184 186 192 b 228 158 206 192 215 181 b 312 36 252 114 282 75 b 379 0 331 12 354 0 z"},ornamentTremblement:{x_min:0,x_max:982.17691453624,y_min:0,y_max:224,ha:224,o:"m 0 0 b 63 36 30 12 48 23 b 157 124 94 66 125 94 b 177 135 164 131 170 135 b 196 122 183 135 189 131 b 268 40 217 94 245 68 b 323 6 288 16 304 6 b 369 20 336 6 350 10 b 412 53 384 29 399 40 b 501 145 442 84 472 114 b 523 158 508 154 516 158 b 543 145 528 158 536 154 b 641 45 576 112 608 78 b 698 17 658 27 677 17 b 729 23 708 17 719 20 b 804 65 756 32 780 46 b 904 154 837 95 871 124 b 920 163 910 160 916 163 b 936 153 924 163 930 160 b 1024 60 965 121 996 92 b 1112 13 1053 29 1080 13 b 1184 39 1135 13 1158 22 b 1359 194 1248 84 1305 138 b 1413 301 1388 223 1403 261 b 1404 323 1417 315 1413 323 b 1391 320 1400 323 1395 321 b 1344 294 1375 314 1358 307 b 1224 186 1305 258 1269 216 b 1194 173 1212 179 1202 173 b 1165 193 1184 173 1175 179 b 1096 271 1145 222 1122 248 b 1001 318 1061 302 1031 318 b 903 268 969 318 937 301 b 806 186 871 239 841 210 b 782 174 796 179 789 174 b 756 193 773 174 765 180 b 652 291 729 232 693 266 b 596 308 634 302 615 308 b 530 278 573 308 552 298 l 415 168 b 393 157 408 161 400 157 b 373 171 387 157 380 161 b 305 245 353 197 330 222 b 248 276 285 266 266 278 b 189 245 229 276 210 266 b 81 144 156 209 120 174 b 0 0 33 109 26 56 z"},ornamentPrecompAppoggTrill:{x_min:-.11067192132025548,x_max:1066,y_min:-50,y_max:533.1706452421108,ha:583.1706452421108,o:"m 187 -46 b 213 -14 197 -37 204 -26 b 285 151 251 36 266 94 b 304 189 294 177 297 189 b 337 168 311 189 320 181 b 458 33 386 131 415 76 b 495 12 472 19 484 12 b 531 40 508 12 518 22 b 580 168 557 79 569 124 b 622 235 592 213 603 235 b 683 194 636 235 655 222 b 838 26 737 140 791 86 b 919 -33 860 -1 881 -39 b 984 53 960 -27 971 19 b 1022 156 998 86 1008 122 b 1054 190 1032 179 1041 190 b 1089 167 1063 190 1074 183 b 1208 32 1129 122 1171 78 b 1244 10 1221 17 1231 10 b 1273 22 1253 10 1263 14 b 1496 206 1352 78 1427 137 b 1535 310 1526 236 1535 272 b 1531 359 1535 325 1534 343 b 1496 343 1515 360 1506 351 l 1309 192 b 1269 167 1289 176 1279 167 b 1234 199 1260 167 1251 177 b 1122 324 1200 243 1168 289 b 1074 344 1106 337 1089 344 b 1014 301 1051 344 1030 328 b 952 144 985 252 971 197 b 933 121 946 128 940 121 b 910 137 927 121 920 125 b 850 210 888 161 870 186 b 687 369 799 266 750 325 b 631 390 665 383 647 390 b 567 327 602 390 580 369 b 527 199 554 284 543 242 b 508 168 520 179 514 168 b 482 192 503 168 495 177 b 353 328 444 240 405 292 b 312 343 338 338 324 343 b 266 297 292 343 276 327 b 204 125 248 239 232 180 b 143 79 193 102 173 79 b 92 122 117 79 105 102 b 81 154 86 131 84 143 b 48 423 59 242 50 333 b 45 544 46 464 45 504 b 53 730 45 606 48 668 b 40 768 55 744 52 766 b 13 730 19 770 14 747 b 0 514 7 658 -1 586 b 26 122 3 383 6 252 b 75 -36 35 66 40 10 b 134 -72 92 -59 112 -72 b 187 -46 151 -72 170 -63 z"},ornamentPrecompSlideTrillDAnglebert:{x_min:0,x_max:1088,y_min:-380,y_max:252,ha:632,o:"m 560 -539 b 439 -481 527 -497 484 -485 b 354 -461 409 -478 380 -477 b 131 -154 236 -389 161 -285 b 124 -98 127 -135 124 -117 b 196 55 124 -40 148 10 b 308 99 230 86 268 99 b 399 81 337 99 367 92 b 514 22 441 66 477 43 b 619 -30 567 -9 590 -30 b 719 17 642 -30 670 -16 b 861 131 769 52 818 88 b 899 150 874 144 887 150 b 936 117 913 150 926 138 b 965 43 948 94 956 68 b 1007 -1 973 24 978 -1 b 1048 30 1025 -1 1037 16 b 1070 65 1057 40 1064 52 b 1110 148 1084 92 1096 121 b 1145 190 1120 164 1120 190 b 1191 153 1169 192 1179 168 b 1256 29 1218 115 1231 68 b 1292 1 1267 10 1277 1 b 1320 10 1300 1 1309 4 b 1369 48 1339 19 1355 33 b 1515 196 1418 96 1464 148 b 1567 343 1558 238 1567 287 b 1555 363 1565 357 1562 363 b 1539 356 1551 363 1547 360 b 1433 268 1502 330 1466 301 b 1335 171 1401 236 1374 199 b 1310 163 1325 166 1318 163 b 1286 183 1302 163 1293 168 b 1218 311 1264 226 1247 272 b 1164 351 1200 337 1182 351 b 1110 308 1146 351 1128 337 b 1031 176 1084 265 1058 219 b 1015 161 1025 166 1021 161 b 999 179 1009 161 1005 167 b 955 279 985 213 973 248 b 913 307 943 300 930 307 b 887 302 904 307 896 305 b 852 281 874 298 863 291 b 693 167 804 236 747 204 b 612 140 667 150 639 140 b 549 157 592 140 570 145 b 403 220 503 181 452 202 b 271 248 360 236 315 248 b 179 229 239 248 209 242 b 0 -29 65 180 0 85 b 9 -104 0 -53 3 -78 b 397 -526 56 -317 183 -464 b 505 -547 432 -536 468 -547 b 560 -539 524 -547 541 -544 z"},ornamentPrecompSlideTrillBach:{x_min:0,x_max:1185,y_min:-380,y_max:465,ha:845,o:"m 624 -544 b 642 -528 638 -543 642 -537 b 639 -514 642 -524 642 -520 b 590 -444 629 -487 609 -467 b 523 -413 573 -422 553 -410 b 498 -415 514 -415 507 -415 b 399 -389 464 -415 431 -405 b 89 -157 281 -330 176 -255 b 72 -117 78 -144 72 -131 b 73 -101 72 -111 72 -107 b 187 186 91 3 147 91 b 246 230 200 216 222 230 b 300 209 262 230 281 223 b 456 48 359 163 403 101 b 540 -10 494 10 518 -10 b 625 59 566 -10 589 13 b 690 148 648 88 668 118 b 711 167 697 160 704 167 b 733 153 719 167 724 163 b 844 14 769 105 808 60 b 903 -42 873 -23 886 -42 b 973 -1 919 -42 937 -27 b 1008 33 986 7 996 20 b 1048 81 1021 48 1035 65 b 1050 37 1048 66 1050 52 b 1047 -24 1050 17 1048 -3 b 1038 -275 1038 -108 1040 -192 l 1037 -289 b 1045 -302 1037 -295 1038 -301 b 1068 -284 1056 -304 1064 -292 b 1084 -242 1076 -271 1081 -256 b 1099 -109 1096 -199 1099 -154 b 1106 158 1099 -19 1106 71 b 1128 187 1113 167 1120 177 b 1168 223 1143 212 1155 223 b 1210 193 1179 223 1191 213 b 1220 183 1214 190 1215 186 b 1329 36 1261 138 1292 84 b 1374 7 1345 16 1358 7 b 1411 20 1384 7 1395 12 b 1479 84 1437 37 1459 59 b 1610 235 1521 135 1564 186 b 1706 403 1655 282 1695 334 b 1614 346 1663 400 1637 373 b 1464 170 1564 287 1515 228 b 1440 150 1453 156 1447 150 b 1414 173 1433 150 1426 158 b 1283 336 1371 228 1333 288 b 1220 366 1261 356 1240 366 b 1148 318 1194 366 1169 350 b 1103 255 1133 297 1119 275 b 1097 301 1102 271 1100 285 b 1099 334 1099 312 1099 324 b 1092 428 1099 367 1094 397 b 1071 647 1087 501 1079 575 b 1058 670 1071 657 1071 670 b 1035 648 1047 670 1038 661 b 1018 516 1024 605 1015 560 b 1041 203 1025 412 1037 307 b 1043 180 1041 196 1043 187 b 992 127 1027 161 1009 143 b 965 111 981 117 972 111 b 936 132 955 111 946 120 b 829 268 900 179 867 225 b 760 317 801 301 780 317 b 691 258 739 317 719 297 b 605 147 664 219 641 177 b 589 138 599 141 593 138 b 572 148 583 138 579 141 b 415 317 520 206 467 261 b 327 372 390 343 366 366 b 300 373 317 373 308 373 b 154 295 239 373 190 348 b 55 138 120 243 85 192 b 0 -53 22 79 0 13 b 160 -317 0 -156 49 -252 b 209 -354 177 -327 192 -343 b 510 -531 305 -419 397 -495 b 593 -547 537 -540 564 -547 b 624 -544 603 -547 613 -546 z"},ornamentPrecompTrillSuffixDandrieu:{x_min:0,x_max:1003,y_min:-20,y_max:521,ha:541,o:"m 791 -16 b 844 33 812 -3 829 14 b 981 271 900 107 937 190 b 994 288 984 278 985 288 b 1009 269 1004 288 1007 278 b 1077 112 1034 217 1051 163 b 1158 43 1103 62 1129 43 b 1231 69 1179 43 1204 55 b 1348 189 1280 98 1315 143 b 1444 451 1407 271 1444 357 b 1431 547 1444 482 1440 514 b 1188 750 1401 665 1299 750 b 1158 747 1178 750 1168 749 b 1079 684 1119 742 1089 727 b 1063 632 1076 665 1071 648 b 1056 609 1058 622 1056 615 b 1071 599 1056 602 1060 599 b 1086 600 1076 599 1080 600 b 1130 605 1102 603 1116 605 b 1244 569 1171 605 1210 595 b 1349 346 1322 511 1349 433 b 1348 312 1349 334 1349 324 b 1289 197 1345 266 1325 228 b 1238 174 1270 181 1253 174 b 1188 215 1220 174 1202 187 b 1145 308 1172 245 1159 276 b 1096 413 1129 343 1120 382 b 1053 438 1084 431 1068 438 b 1011 413 1038 438 1022 431 b 955 324 989 384 971 354 b 850 127 920 258 886 192 b 838 112 847 121 842 112 b 824 128 828 109 825 121 b 802 193 815 150 809 171 b 730 400 779 264 766 337 b 688 431 719 420 703 431 b 647 403 674 431 660 422 b 606 338 632 383 619 361 b 513 167 575 282 546 223 b 480 122 503 150 498 122 b 452 171 459 122 459 153 b 420 255 442 199 432 228 b 337 408 399 308 380 364 b 276 436 317 428 297 436 b 215 397 253 436 230 423 b 23 72 148 289 81 184 b 0 29 17 59 0 40 b 7 17 0 23 1 20 b 59 58 26 7 46 39 b 190 276 111 127 143 206 b 216 301 202 292 207 301 b 245 279 223 301 232 294 b 311 166 278 248 292 206 b 367 16 331 117 346 65 b 402 -19 377 -7 387 -19 b 438 -4 412 -19 423 -13 b 518 88 474 17 495 55 b 628 284 562 150 592 216 b 657 223 648 266 651 243 b 717 13 677 154 696 84 b 755 -29 726 -16 737 -29 b 791 -16 765 -29 776 -24 z"},ornamentPrecompDoubleCadenceUpperPrefix:{x_min:0,x_max:1246,y_min:-30,y_max:296.0302860502196,ha:326.0302860502196,o:"m 360 -43 b 559 59 445 -43 503 7 b 698 236 615 111 652 179 b 714 248 704 243 710 248 b 727 235 719 248 721 243 l 848 42 b 883 12 860 22 870 12 b 917 32 891 12 903 19 b 946 62 927 42 939 50 b 1037 192 972 108 1009 147 b 1057 210 1044 204 1051 210 b 1076 190 1063 210 1068 203 l 1176 12 b 1215 -19 1188 -9 1201 -19 b 1250 -6 1225 -19 1237 -14 b 1284 27 1264 3 1274 16 b 1380 190 1323 78 1351 135 b 1395 210 1384 197 1385 210 b 1413 190 1405 210 1410 197 b 1508 40 1436 134 1467 85 b 1564 3 1529 14 1547 3 b 1617 32 1580 3 1597 12 b 1767 238 1678 92 1719 167 b 1794 310 1781 259 1791 282 b 1752 294 1776 317 1764 304 b 1656 164 1711 258 1689 206 b 1629 144 1646 151 1637 144 b 1603 161 1620 144 1613 150 b 1502 315 1562 207 1525 258 b 1452 357 1490 344 1470 357 b 1397 320 1431 357 1411 344 b 1316 170 1368 271 1345 219 b 1280 127 1306 154 1303 127 b 1244 171 1256 127 1254 154 b 1145 337 1210 226 1179 282 b 1110 363 1135 354 1122 363 b 1070 338 1097 363 1084 354 b 1050 311 1063 330 1057 320 b 959 181 1017 271 992 223 b 939 167 950 173 945 167 b 920 184 933 167 927 173 b 818 343 887 238 852 291 b 759 395 795 377 778 395 b 701 344 742 395 724 377 b 698 338 700 341 700 340 b 544 154 652 272 605 207 b 412 98 501 117 458 98 b 304 130 377 98 341 108 b 95 373 204 187 144 275 b 58 426 85 393 82 428 b 19 366 26 426 26 389 b 0 307 13 346 0 327 b 4 287 0 300 1 294 b 174 36 49 194 91 102 b 360 -43 230 -9 289 -43 z"},ornamentPrecompDoubleCadenceUpperPrefixTurn:{x_min:0,x_max:1226,y_min:-237,y_max:436,ha:673,o:"m 1279 -341 b 1293 -252 1293 -307 1295 -278 b 1277 36 1287 -156 1282 -59 l 1273 118 b 1318 176 1289 137 1303 157 b 1349 203 1332 193 1342 203 b 1378 168 1359 203 1367 192 b 1456 35 1401 122 1428 78 b 1511 -12 1476 3 1493 -12 b 1568 23 1526 -12 1544 0 b 1597 53 1578 32 1588 42 b 1705 186 1629 101 1669 143 b 1761 284 1728 216 1751 246 b 1765 300 1763 288 1765 295 b 1763 307 1765 302 1765 305 b 1737 302 1754 311 1744 308 b 1718 287 1729 298 1725 292 b 1598 145 1673 245 1637 194 b 1578 130 1590 135 1584 130 b 1557 147 1571 130 1565 135 b 1447 321 1516 202 1488 265 b 1403 351 1433 341 1417 351 b 1358 323 1388 351 1372 341 b 1269 209 1329 285 1299 248 b 1254 521 1264 314 1259 418 b 1228 616 1253 554 1247 588 b 1218 628 1224 621 1223 628 l 1215 628 b 1201 613 1210 626 1202 619 b 1200 600 1200 609 1200 605 l 1200 586 b 1211 348 1204 507 1207 428 b 1217 166 1214 288 1215 226 b 1202 181 1212 168 1208 174 b 1094 334 1168 233 1130 284 b 1048 366 1079 356 1064 366 b 1004 331 1034 366 1018 354 b 904 154 969 275 930 220 b 873 202 887 171 880 187 b 778 356 845 256 819 311 b 737 379 763 372 750 379 b 698 353 724 379 711 370 l 621 232 b 415 114 570 154 495 114 b 302 138 377 114 340 121 b 73 400 187 192 117 284 b 55 420 69 415 62 420 b 42 410 50 420 45 416 b 0 292 23 373 0 334 b 4 262 0 282 1 272 b 168 39 32 168 92 99 b 359 -26 225 -6 292 -26 b 585 76 446 -26 530 10 b 668 202 616 115 641 160 b 693 228 680 219 687 228 b 720 203 700 228 707 219 b 801 63 752 160 775 111 b 844 7 812 42 818 7 b 910 66 877 6 894 39 b 923 94 916 75 919 85 b 995 219 945 137 968 179 b 1025 184 1009 210 1017 197 b 1119 56 1054 141 1087 98 b 1166 20 1138 32 1152 20 b 1215 50 1181 20 1195 30 b 1221 56 1217 52 1218 55 b 1228 -163 1223 -17 1225 -89 b 1279 -341 1231 -223 1251 -278 z"},ornamentPrecompTrillLowerSuffix:{x_min:0,x_max:833,y_min:-309,y_max:319,ha:628,o:"m 778 -444 b 801 -445 785 -444 793 -445 b 1037 -338 894 -445 969 -397 b 1200 37 1149 -240 1200 -109 b 1084 406 1200 171 1172 300 b 1024 444 1064 431 1043 444 b 960 390 999 444 978 426 b 841 163 923 314 886 236 b 812 128 832 150 827 128 b 786 167 796 130 793 153 b 660 418 744 251 716 341 b 599 459 639 445 619 459 b 541 410 577 459 557 444 b 439 197 507 340 474 269 b 422 179 435 190 435 179 b 338 393 392 251 379 328 b 275 439 320 423 298 439 b 212 396 253 439 230 425 b 71 219 170 333 128 268 b 0 45 17 173 16 112 b 68 98 32 62 50 78 b 194 264 112 150 153 209 b 230 292 209 282 219 292 b 264 261 240 292 251 282 b 274 242 268 255 269 248 b 346 46 304 179 325 112 b 376 10 351 32 354 10 b 412 35 392 10 403 22 b 452 107 429 56 441 82 b 541 291 481 168 511 230 b 556 307 547 302 552 307 b 573 295 562 307 567 302 b 624 217 595 272 611 246 b 721 1 657 145 685 72 b 755 -27 732 -19 742 -27 b 786 -16 765 -27 775 -24 b 857 73 819 7 840 39 b 952 256 887 134 920 194 b 978 289 963 279 969 289 b 1009 262 985 289 994 281 b 1030 235 1017 253 1024 245 b 1110 -4 1071 161 1099 81 b 1116 -68 1113 -26 1116 -48 b 1009 -243 1116 -140 1090 -200 b 848 -291 956 -272 901 -291 b 730 -261 809 -291 770 -282 b 696 -248 714 -252 703 -248 b 671 -284 684 -248 678 -258 l 662 -312 b 657 -357 658 -330 657 -344 b 744 -439 657 -403 683 -425 z"},brassScoop:{x_min:-.4444444444444445,x_max:312,y_min:-390,y_max:28,ha:418,o:"m 0 -562 b 393 -256 171 -504 307 -412 b 449 -39 431 -189 449 -115 b 448 -1 449 -26 449 -14 b 433 40 446 14 448 40 b 408 -3 410 40 412 14 b 396 -66 403 -23 402 -46 b 45 -397 346 -243 209 -337 b 0 -451 13 -409 1 -423 b 0 -562 -1 -485 0 -520 z"},brassDoitMedium:{x_min:-.32815253965710617,x_max:476.21251177608565,y_min:-50,y_max:333.1535583875376,ha:383.1535583875376,o:"m 16 -72 b 27 -71 19 -72 23 -72 b 215 -33 89 -56 153 -48 b 521 114 327 -7 435 35 b 685 432 615 199 691 295 b 670 480 684 449 688 475 b 642 441 654 482 648 456 b 403 183 599 321 513 240 b 79 89 301 130 192 105 b 0 -1 -12 76 0 76 b 0 -50 0 -17 1 -33 b 16 -72 0 -65 3 -72 z"},brassFallLipShort:{x_min:0,x_max:298,y_min:-344,y_max:65,ha:409,o:"m 396 -495 b 420 -461 412 -487 418 -474 b 429 -382 428 -435 429 -409 b 426 -330 429 -364 428 -347 b 285 -6 410 -209 356 -104 b 98 94 239 59 173 94 b 39 86 79 94 58 92 b 0 49 20 81 0 73 l 0 -52 b 10 -69 0 -62 1 -69 b 20 -68 13 -69 16 -69 b 88 -56 45 -59 66 -56 b 261 -160 156 -56 213 -95 b 396 -495 333 -259 382 -369 z"},brassLiftMedium:{x_min:0,x_max:807,y_min:0,y_max:838,ha:838,o:"m 50 0 b 55 1 52 0 53 0 b 58 23 65 7 59 16 b 55 58 56 36 55 48 b 130 117 55 99 75 112 b 220 213 202 121 220 141 b 315 308 220 289 238 308 l 336 308 b 408 380 393 310 406 321 b 461 452 409 438 416 452 b 485 451 468 452 477 451 b 569 510 531 448 556 464 b 573 543 572 520 572 531 b 657 619 580 605 595 618 b 698 621 670 619 684 619 b 788 700 749 625 778 649 b 798 778 792 726 793 752 b 873 857 806 841 809 845 b 985 950 927 867 973 887 b 1084 1047 1002 1035 1004 1034 b 1162 1128 1133 1056 1162 1087 b 1146 1182 1162 1145 1158 1164 b 1125 1207 1140 1191 1136 1207 l 1122 1207 b 1110 1191 1113 1205 1110 1198 b 1112 1174 1110 1185 1112 1178 b 1048 1110 1109 1126 1096 1113 b 1028 1109 1043 1110 1035 1109 b 939 1022 969 1102 948 1081 b 845 922 929 949 917 936 b 746 812 773 909 753 886 b 744 780 744 802 744 791 b 635 681 737 700 717 683 b 524 583 553 680 536 665 b 439 510 514 520 503 510 b 357 431 377 510 360 492 l 357 406 b 314 364 356 379 343 364 b 238 361 288 364 264 364 b 173 300 202 357 180 334 b 167 245 168 281 167 262 b 105 174 166 192 157 180 b 75 171 95 173 85 171 b 6 112 30 166 14 153 b 0 73 1 98 0 85 b 37 10 0 45 13 26 b 50 0 42 7 46 0 z"},brassFallRoughMedium:{x_min:0,x_max:791,y_min:0,y_max:819,ha:819,o:"m 1117 0 b 1139 101 1129 26 1139 71 b 1138 121 1139 109 1139 115 b 1084 193 1125 171 1110 193 b 1044 183 1073 193 1060 189 b 1022 177 1035 179 1028 177 b 1007 209 1012 177 1008 186 b 876 324 1004 292 959 330 b 799 317 850 321 825 320 b 759 354 772 314 755 320 b 760 373 760 360 760 366 b 759 392 760 379 760 384 b 681 477 753 451 730 477 b 654 474 672 477 664 475 b 606 467 638 471 622 468 b 586 465 599 465 592 465 b 564 481 570 465 564 469 b 569 505 564 487 566 495 b 575 553 572 521 575 537 b 572 585 575 564 573 575 b 481 665 560 657 539 668 b 412 665 458 664 435 665 b 382 690 392 667 382 672 b 383 700 382 693 383 696 b 386 773 387 724 387 749 b 297 858 382 828 351 857 b 229 861 274 858 251 858 b 190 897 207 863 193 871 b 163 1012 186 936 180 976 b 79 1084 145 1050 124 1084 b 66 1083 75 1084 71 1083 b 43 1096 49 1081 43 1087 b 48 1112 43 1100 45 1106 b 53 1130 52 1119 53 1125 b 39 1169 53 1145 45 1158 b 26 1179 36 1175 30 1179 b 16 1171 22 1179 17 1176 b 0 1103 10 1149 0 1126 b 9 1067 0 1092 1 1079 b 91 1021 26 1031 52 1018 b 145 978 122 1024 141 1011 b 156 913 147 956 151 935 b 291 795 170 831 210 795 b 346 768 337 795 346 796 b 344 743 346 760 344 753 b 343 716 344 733 343 724 b 455 600 343 651 390 602 b 505 605 471 599 490 605 b 528 598 514 605 523 603 b 536 579 534 592 536 586 b 524 523 536 562 526 541 b 523 505 524 517 523 511 b 621 405 523 442 560 405 b 639 406 626 405 634 406 b 677 413 652 408 664 410 b 701 416 687 415 696 416 b 721 392 716 416 721 410 b 720 373 721 386 720 380 b 831 255 714 301 759 252 b 897 261 854 255 876 261 b 926 262 909 261 919 262 b 969 197 963 262 965 252 b 971 184 969 193 971 189 b 1031 115 979 137 998 115 b 1071 122 1043 115 1056 118 b 1096 130 1079 125 1086 127 b 1087 59 1094 107 1087 82 b 1117 0 1087 37 1094 17 z"},brassBend:{x_min:0,x_max:381,y_min:0,y_max:367,ha:367,o:"m 298 0 b 472 50 359 0 418 14 b 537 135 501 71 530 92 b 543 216 543 163 543 190 l 543 266 b 544 308 543 281 543 295 b 549 433 546 354 549 395 b 543 507 549 459 547 482 b 533 528 541 516 544 528 b 511 508 524 528 514 520 b 508 478 510 498 508 488 b 504 318 507 425 504 372 b 505 264 504 300 505 282 b 446 181 505 220 484 199 b 294 150 396 160 344 150 b 92 194 226 150 158 167 b 45 269 62 207 45 230 b 46 359 46 300 46 328 b 37 497 46 405 45 451 b 27 523 36 507 37 523 b 4 498 14 524 6 513 b 3 481 3 492 3 487 b 0 409 1 456 0 433 b 4 228 0 348 4 288 b 3 177 4 210 4 194 b 68 53 1 125 20 84 b 200 10 108 27 154 17 b 298 0 233 4 266 0 z"},brassMuteClosed:{x_min:0,x_max:274,y_min:0,y_max:260,ha:260,o:"m 203 0 b 209 1 206 0 207 0 b 216 13 215 4 216 9 l 215 27 l 215 153 b 216 161 216 156 216 158 b 372 164 268 163 318 164 b 395 184 383 164 395 166 l 395 189 b 357 229 392 209 386 229 b 219 228 311 229 265 228 l 223 310 b 209 357 225 328 219 344 b 189 374 203 364 197 374 b 184 373 187 374 186 373 b 177 359 179 372 177 366 l 177 348 l 173 222 l 39 222 b 0 206 12 222 0 219 b 10 174 0 199 3 189 b 46 157 19 157 30 157 b 108 160 68 158 88 160 b 171 161 130 161 150 161 l 167 58 b 184 16 167 40 171 26 b 203 0 192 12 196 0 z"},brassMuteOpen:{x_min:1,x_max:313.01193341111656,y_min:0,y_max:309,ha:309,o:"m 265 0 b 451 189 363 7 452 88 l 451 215 b 348 383 441 285 405 343 b 209 445 288 426 248 445 b 84 379 168 445 132 420 b 69 364 79 373 73 369 b 1 213 30 323 1 275 b 230 0 1 88 94 0 z m 210 62 b 128 73 181 62 154 66 b 40 171 71 91 42 125 b 52 226 40 187 45 206 b 197 374 79 295 130 344 b 228 382 207 380 217 382 b 300 361 252 382 276 370 b 374 308 328 350 353 331 b 410 223 397 284 410 253 b 393 163 410 202 405 181 b 210 62 354 91 288 63 z"},brassFlip:{x_min:0,x_max:402,y_min:0,y_max:361,ha:361,o:"m 579 0 b 511 153 579 68 557 117 b 52 504 359 271 206 387 b 29 520 45 510 39 520 b 20 517 26 520 23 518 b 0 477 3 510 0 494 l 0 125 b 17 20 1 92 1 56 b 40 84 37 40 40 60 b 42 287 40 151 42 219 l 42 363 z"},brassJazzTurn:{x_min:0,x_max:646,y_min:0,y_max:212,ha:212,o:"m 310 0 b 367 33 327 0 344 10 b 389 55 374 40 382 49 b 490 145 423 85 456 114 b 507 154 495 151 501 154 b 524 144 513 154 517 151 b 598 72 547 120 575 98 b 700 24 625 42 662 24 b 765 43 721 24 744 30 b 893 147 812 72 855 105 b 930 212 910 166 923 186 b 912 215 923 213 917 215 b 871 199 896 215 883 209 b 812 153 852 183 832 167 b 789 144 805 148 796 144 b 773 156 782 144 776 147 b 691 251 757 199 720 222 b 603 301 658 282 631 301 b 527 258 580 301 556 288 b 420 156 494 222 455 190 b 399 143 412 147 405 143 b 377 157 392 143 386 147 b 259 282 340 200 300 242 b 219 305 245 298 232 305 b 177 279 204 305 192 297 b 55 127 137 228 95 177 b 0 52 36 104 20 79 b 14 50 6 50 10 50 b 53 66 32 50 45 58 b 115 131 75 88 98 108 b 135 148 124 143 130 148 b 157 132 141 148 148 143 b 252 33 186 96 219 65 b 310 0 275 12 292 0 z"},brassSmear:{x_min:0,x_max:334,y_min:0,y_max:151,ha:151,o:"m 321 0 b 475 125 390 0 436 43 b 481 143 478 131 481 137 b 475 154 481 147 480 151 b 449 148 468 158 458 154 b 395 132 432 137 413 132 b 343 140 377 132 360 137 b 229 194 301 148 266 173 b 168 217 206 209 186 217 b 109 192 148 217 130 209 b 0 26 59 148 32 89 b 59 63 32 29 45 48 b 98 84 72 78 84 84 b 130 73 108 84 118 81 b 213 26 157 58 183 37 b 321 0 255 9 289 0 z"},stringsDownBow:{x_min:0,x_max:306,y_min:-.09607201951262866,y_max:366,ha:366.09607201951263,o:"m 405 0 b 425 17 413 -1 420 9 b 439 66 435 32 439 48 b 441 268 439 137 441 202 b 436 412 441 314 439 361 l 435 413 b 423 469 435 436 431 456 b 344 508 406 501 373 501 b 204 527 298 520 251 527 b 60 498 156 527 108 518 b 7 438 32 485 10 468 l 7 426 b 4 337 7 396 7 367 b 0 140 0 272 0 206 b 1 42 0 107 0 73 b 13 3 1 27 -3 4 b 40 39 29 3 35 24 b 42 53 42 43 40 49 b 49 141 48 84 49 112 b 48 215 49 167 48 192 b 49 252 48 228 48 240 l 49 312 b 130 343 72 331 99 340 b 206 347 156 346 180 347 b 372 314 262 347 318 338 l 390 307 l 390 245 b 390 138 392 212 390 176 b 397 23 390 101 392 62 b 405 0 399 14 393 1 z"},stringsUpBow:{x_min:0,x_max:219.2842808242076,y_min:0,y_max:489,ha:489,o:"m 151 0 b 184 42 170 12 180 26 b 297 554 223 212 261 382 b 315 690 305 598 318 645 b 304 704 315 697 311 704 b 276 670 288 704 282 697 b 157 131 236 490 196 311 l 157 144 b 73 526 134 276 104 396 b 30 677 60 576 52 638 b 13 694 26 684 22 694 b 0 674 9 694 0 691 l 0 671 b 10 603 3 649 6 626 b 105 174 42 461 72 317 b 150 0 117 117 128 58 z"},stringsHarmonic:{x_min:0,x_max:191,y_min:0,y_max:202,ha:202,o:"m 143 0 b 275 122 217 0 275 53 b 127 291 275 206 202 291 b 0 154 63 291 0 222 b 143 0 0 76 71 0 z m 122 68 b 43 105 89 66 59 75 b 39 124 40 111 39 117 b 79 199 39 148 56 180 b 145 226 101 216 122 226 b 199 210 163 226 180 220 b 235 150 223 196 235 173 b 203 92 235 128 225 107 b 122 68 181 76 150 68 z"},pluckedSnapPizzicatoAbove:{x_min:0,x_max:201,y_min:0,y_max:325,ha:325,o:"m 171 0 b 289 99 240 0 289 45 b 258 183 289 130 274 156 b 174 269 236 217 203 240 l 174 408 b 174 429 174 415 176 422 b 131 468 168 451 153 468 b 117 451 120 468 117 461 b 118 429 117 444 118 435 b 115 307 117 389 115 347 b 0 166 59 295 0 223 b 171 0 0 85 89 0 z m 134 55 b 52 131 84 55 52 85 b 115 233 52 179 81 209 b 114 192 114 220 114 206 b 174 120 114 137 114 137 l 174 228 b 233 148 200 207 223 183 b 236 130 235 143 236 135 b 197 72 236 105 223 85 b 134 55 177 60 157 55 z"},pluckedSnapPizzicatoBelow:{x_min:0,x_max:211,y_min:0,y_max:307,ha:307,o:"m 145 7 b 163 0 153 3 158 0 b 173 23 170 0 173 7 l 173 140 l 170 140 l 170 163 l 171 163 b 206 170 179 164 193 166 b 304 287 264 186 304 233 b 281 354 304 308 297 333 b 118 442 240 412 186 439 b 0 324 69 442 0 370 b 115 176 0 266 55 202 l 115 56 b 145 7 114 33 125 19 z m 115 220 b 62 256 92 223 73 230 b 53 292 56 269 53 281 b 78 344 53 311 60 328 b 168 384 105 372 135 384 b 213 376 183 384 199 382 b 253 321 239 366 253 346 b 246 291 253 311 251 301 b 170 226 230 256 203 236 l 170 258 b 148 305 171 278 163 292 b 128 315 143 310 135 315 l 124 315 b 115 301 117 314 115 308 z"},pluckedLeftHandPizzicato:{x_min:0,x_max:271,y_min:0,y_max:284,ha:284,o:"m 213 0 b 223 14 222 0 223 7 b 222 35 223 22 222 29 l 222 176 b 373 170 272 174 323 170 b 390 180 382 170 390 171 l 390 184 b 347 232 386 207 382 232 b 219 238 307 233 266 235 l 219 364 b 171 409 219 395 193 409 b 156 393 160 409 156 402 b 158 370 156 384 158 376 l 158 240 b 16 239 115 240 66 239 b 0 226 7 239 0 238 l 0 223 b 50 179 1 203 29 179 b 158 177 86 179 122 179 l 158 63 b 161 29 158 52 158 40 b 213 0 166 -1 194 1 z"},keyboardPedalPed:{x_min:0,x_max:944,y_min:-13,y_max:550,ha:563,o:"m 22 0 b 109 78 53 0 105 46 l 144 333 b 163 376 147 347 140 372 b 364 465 238 390 301 426 b 454 599 416 497 454 540 b 452 618 454 605 454 612 b 320 770 442 694 396 747 b 248 779 295 778 272 779 b 193 778 229 779 212 779 b 160 780 181 778 167 775 b 137 792 153 789 144 791 b 109 789 128 792 118 789 b 7 719 59 789 48 737 b 23 708 16 714 20 708 b 36 710 29 710 33 710 b 53 684 52 710 53 698 l 53 674 b 43 386 53 577 53 482 b 20 164 36 312 30 238 b 1 30 14 120 7 75 b 0 19 0 26 0 22 b 22 0 0 9 4 0 z m 171 425 b 156 442 160 425 156 429 b 157 475 157 452 157 464 b 164 602 161 517 164 560 b 161 698 164 635 163 667 b 184 729 161 720 167 729 l 193 729 b 348 563 278 719 348 641 b 346 539 348 554 347 547 b 171 425 328 459 229 422 z m 979 6 b 1008 13 986 6 995 9 b 1081 101 1047 29 1079 46 b 1116 449 1087 217 1104 333 b 1143 654 1123 518 1133 586 b 1148 685 1145 664 1148 675 b 1140 704 1148 693 1146 700 b 1107 716 1130 713 1119 716 b 1056 706 1092 716 1073 710 b 1037 671 1035 703 1038 685 b 1004 439 1025 595 1014 517 b 986 419 1001 428 999 419 b 979 419 985 419 982 420 b 935 426 965 423 949 425 b 795 376 884 426 838 405 b 664 153 714 323 664 249 b 665 130 664 145 665 138 b 753 29 671 65 704 29 b 815 40 773 29 792 33 b 975 147 873 65 923 101 b 965 45 971 108 968 76 b 979 6 963 17 966 6 z m 393 -17 b 634 145 494 16 579 52 b 638 160 636 151 638 156 b 625 168 638 166 634 168 b 621 167 624 168 622 168 b 524 118 582 164 544 160 b 495 79 517 104 505 92 b 435 33 471 49 452 33 b 380 96 416 33 397 55 b 369 145 373 114 369 131 b 442 225 369 186 395 213 b 468 232 451 228 459 229 b 654 344 539 255 606 285 b 677 395 667 360 677 376 b 672 415 677 402 675 408 b 612 459 661 442 639 455 b 589 461 602 461 592 461 b 348 328 500 461 409 408 b 269 120 302 268 269 199 b 379 -19 269 45 318 -19 b 393 -17 383 -19 389 -19 z m 395 240 b 494 383 418 300 452 344 l 521 405 b 544 419 528 409 536 418 b 554 415 547 419 550 418 b 570 383 564 406 570 396 l 570 379 b 552 331 570 360 562 344 b 395 240 511 285 462 253 z m 827 89 b 792 111 815 89 804 96 b 766 204 775 131 766 158 b 845 360 772 256 799 314 b 871 372 854 369 863 372 b 897 366 880 372 888 369 b 978 279 942 353 963 320 b 976 259 981 272 981 265 b 858 104 942 203 909 147 b 827 89 847 94 837 89 z m 1282 12 b 1336 35 1303 14 1320 23 b 1359 71 1351 45 1359 58 b 1338 102 1359 82 1352 95 b 1254 130 1312 118 1284 130 b 1187 88 1223 130 1202 109 b 1178 65 1182 81 1178 72 b 1195 37 1178 55 1182 45 b 1282 12 1223 23 1253 19 z"},keyboardPedalUp:{x_min:0,x_max:436.6015132318337,y_min:0,y_max:461,ha:461,o:"m 330 0 b 334 1 331 0 333 0 b 340 12 338 4 340 7 l 338 26 b 340 264 338 105 338 184 b 526 95 400 206 461 148 b 559 71 536 88 547 71 b 564 72 560 71 563 71 b 580 121 580 79 580 102 l 580 127 b 543 203 585 158 573 184 b 472 259 518 219 495 238 l 445 285 b 590 292 494 288 541 291 b 622 318 609 294 618 302 b 628 359 625 331 626 346 b 586 402 632 393 621 405 b 464 395 546 399 504 396 l 559 491 b 567 524 567 500 567 510 b 564 543 567 527 567 536 b 539 596 559 563 560 590 b 494 564 521 600 508 577 b 340 413 442 514 390 464 l 340 560 b 287 664 340 600 321 632 b 271 518 274 612 272 566 b 268 445 269 494 269 469 b 117 569 219 488 168 530 b 96 579 109 575 102 579 b 85 560 89 579 85 573 b 124 446 85 518 82 477 b 209 380 153 426 181 403 b 45 374 154 377 99 376 b 0 324 9 374 0 359 b 63 266 0 265 1 265 b 144 272 89 269 117 272 l 196 272 b 108 193 167 246 138 219 b 60 135 76 164 60 151 b 99 73 60 121 73 105 b 104 68 101 72 102 71 b 114 58 107 60 111 58 b 130 66 120 58 124 62 b 259 186 173 107 217 145 b 256 117 259 163 256 140 b 311 13 256 72 271 37 b 330 0 317 10 323 0 z"},pictChokeCymbal:{x_min:1,x_max:147,y_min:0,y_max:242,ha:242,o:"m 79 4 b 207 158 153 32 192 88 b 212 200 210 173 212 187 b 143 336 212 253 187 298 b 98 348 131 344 115 348 b 4 295 60 348 16 327 b 1 276 1 289 1 282 b 9 249 1 266 3 258 b 121 183 35 206 72 183 b 156 186 132 183 144 183 b 26 53 134 115 91 73 b 7 39 13 49 7 45 b 19 20 7 33 12 27 b 59 0 30 9 43 0 b 79 4 65 0 72 1 z"},wiggleArpeggiatoUp:{x_min:-22,x_max:300,y_min:0,y_max:176,ha:176,o:"m 173 4 b 196 0 180 1 189 0 b 246 26 215 0 230 9 b 301 117 271 53 285 85 b 312 131 305 125 307 131 b 327 124 315 131 321 128 b 373 86 341 112 353 101 b 412 69 389 75 402 69 b 432 94 425 69 432 79 b 373 181 432 117 413 154 b 235 252 323 216 285 245 b 220 253 229 253 225 253 b 168 215 196 253 181 240 b 111 112 151 180 140 141 b 94 102 105 105 99 102 b 78 111 89 102 84 105 b 0 181 55 135 35 160 b -32 153 -20 194 -32 168 b 0 86 -32 124 -32 109 b 94 36 22 71 73 46 b 173 4 134 16 131 17 z"},arpeggiatoUp:{x_min:0,x_max:262,y_min:0,y_max:1459,ha:1459,o:"m 190 0 b 160 63 187 29 170 45 b 145 108 150 81 145 95 b 183 163 145 128 157 145 b 300 246 222 190 262 216 b 347 318 333 272 347 295 b 301 393 347 341 331 364 b 258 413 289 403 272 408 b 145 449 220 425 183 436 b 117 464 135 452 120 452 b 140 491 115 477 128 484 b 294 593 192 526 243 557 b 330 647 318 611 330 626 b 314 693 330 660 324 675 b 262 736 302 714 285 729 b 170 763 230 744 200 753 b 122 783 153 768 125 768 b 160 831 120 804 143 818 b 288 922 202 861 246 890 b 333 999 318 945 333 972 b 266 1083 333 1032 310 1064 b 189 1115 240 1094 215 1103 b 122 1178 145 1133 122 1153 b 168 1250 122 1200 138 1223 l 180 1257 b 269 1333 210 1283 240 1306 b 305 1405 294 1356 305 1381 b 284 1469 305 1426 298 1447 b 228 1525 269 1492 251 1511 b 183 1600 197 1545 183 1571 b 190 1640 183 1613 184 1626 b 197 1670 193 1650 194 1660 b 272 1735 213 1719 230 1735 b 295 1734 279 1735 287 1735 b 323 1732 305 1732 314 1732 b 350 1731 333 1732 341 1732 b 377 1742 369 1729 377 1732 b 370 1761 377 1747 374 1754 l 301 1898 b 217 2066 274 1954 248 2012 b 186 2101 204 2089 196 2101 b 154 2069 177 2101 167 2091 b 12 1824 105 1987 59 1907 b 0 1787 4 1810 0 1797 b 59 1744 0 1761 20 1745 b 160 1738 92 1744 125 1740 b 145 1692 156 1721 151 1706 b 135 1633 138 1672 135 1652 b 184 1518 135 1591 151 1552 b 229 1475 199 1503 213 1488 b 259 1431 249 1456 259 1444 b 229 1388 259 1420 249 1407 b 151 1325 203 1365 177 1345 b 105 1279 134 1310 118 1296 b 73 1202 84 1251 73 1227 b 108 1123 73 1176 85 1152 b 255 1031 148 1077 199 1051 b 282 1014 274 1025 282 1021 b 262 991 282 1008 275 1001 b 151 914 226 963 189 939 b 79 851 125 896 99 877 b 63 809 69 837 63 824 b 79 769 63 796 68 783 b 202 697 111 729 154 710 b 266 670 225 690 266 688 b 210 622 266 648 232 635 b 82 534 167 593 120 570 b 55 491 63 518 55 505 b 79 448 55 478 63 465 b 255 361 127 395 192 380 b 288 343 269 359 288 357 b 266 312 288 331 275 320 b 144 223 229 278 184 253 b 85 134 104 193 85 166 b 118 53 85 111 96 85 b 190 0 135 29 160 14 z"},arpeggiatoDown:{x_min:0,x_max:218,y_min:0,y_max:1440,ha:1440,o:"m 161 16 b 310 261 210 98 259 180 b 314 275 312 266 314 271 b 302 295 314 282 310 289 b 252 311 287 308 269 311 b 217 310 240 311 229 310 b 190 333 202 310 194 315 b 151 412 186 363 171 389 b 102 501 120 452 102 477 b 150 588 102 524 118 547 b 161 603 154 592 158 598 b 181 661 176 622 181 641 b 173 704 181 675 179 690 b 86 795 156 746 121 770 b 53 829 63 811 53 819 b 78 868 53 840 62 851 b 102 888 85 876 94 883 b 180 956 128 912 156 933 b 216 1028 204 979 216 1002 b 203 1081 216 1044 212 1061 b 115 1171 186 1123 148 1145 b 75 1221 88 1191 75 1207 b 114 1272 75 1237 88 1251 b 173 1308 132 1284 154 1296 b 226 1339 190 1318 209 1328 b 265 1405 253 1359 265 1380 b 258 1447 265 1418 264 1431 b 154 1541 242 1499 199 1521 b 109 1581 124 1555 109 1567 b 141 1627 109 1594 121 1608 b 204 1680 163 1646 184 1662 b 233 1742 223 1699 233 1719 b 226 1777 233 1752 230 1764 b 135 1862 210 1822 173 1840 b 104 1895 114 1875 104 1884 b 118 1930 104 1904 109 1914 b 192 2006 135 1961 161 1986 b 206 2029 203 2013 206 2022 b 192 2064 206 2040 197 2052 b 180 2074 187 2071 184 2074 b 156 2061 171 2074 163 2065 b 84 1983 125 2040 102 2013 b 65 1921 71 1961 65 1941 b 88 1853 65 1899 72 1876 b 171 1784 108 1820 138 1801 b 190 1764 184 1777 190 1770 b 174 1741 190 1757 184 1750 b 107 1683 153 1722 128 1704 b 68 1610 81 1659 68 1636 b 88 1548 68 1591 75 1571 b 177 1470 109 1512 141 1489 b 223 1431 209 1453 223 1443 b 179 1390 223 1420 209 1408 b 128 1361 163 1380 145 1371 b 71 1322 108 1348 88 1338 b 32 1253 45 1300 32 1277 b 48 1198 32 1236 37 1218 b 147 1090 71 1152 108 1120 b 174 1057 166 1076 174 1067 b 153 1022 174 1047 167 1037 b 109 982 140 1008 124 995 b 37 919 85 962 59 942 b 9 860 17 899 9 880 b 26 806 9 844 14 827 b 120 717 50 769 84 740 b 138 691 132 708 138 700 b 130 668 138 684 135 677 b 92 618 118 651 105 635 b 59 531 71 589 59 560 b 84 455 59 507 68 481 b 132 386 98 431 115 408 b 148 341 144 372 148 357 b 144 317 148 333 147 324 b 121 305 140 307 131 305 l 98 305 b 82 304 94 304 88 304 l 32 304 b 0 292 10 304 0 302 b 12 266 0 287 4 279 b 60 164 32 233 46 199 b 127 20 84 117 105 68 b 144 0 132 9 137 0 b 161 16 150 0 154 4 z"},repeat1Bar:{x_min:0,x_max:599.1057280164835,y_min:-250,y_max:175,ha:425,o:"m 216 98 b 255 75 236 84 246 75 b 291 104 265 75 274 85 b 323 147 304 117 327 125 b 289 215 323 168 314 184 b 238 252 269 239 253 252 b 187 222 222 252 207 242 b 173 206 183 216 177 212 b 157 170 163 194 157 183 b 174 138 157 160 161 150 b 216 98 189 127 200 109 z m 76 -334 b 181 -285 111 -315 148 -302 b 831 52 396 -168 613 -58 b 863 114 855 63 864 82 b 828 202 855 140 855 176 b 808 213 821 209 815 213 b 793 209 804 213 799 212 l 422 19 b 26 -179 291 -48 164 -124 b 0 -213 10 -186 0 -196 b 3 -232 0 -219 0 -225 b 52 -325 14 -265 37 -294 b 66 -337 55 -331 59 -337 b 76 -334 69 -337 72 -336 z m 769 -360 b 829 -264 779 -360 829 -284 b 769 -176 822 -232 799 -200 b 742 -163 760 -167 750 -163 b 716 -184 733 -163 723 -168 b 683 -228 708 -202 693 -213 b 672 -253 675 -236 672 -245 b 683 -281 672 -262 675 -271 b 752 -353 703 -308 732 -327 b 769 -360 756 -357 763 -360 z"},repeat2Bars:{x_min:.008571918423331715,x_max:775,y_min:-246.92374029115243,y_max:362.82068246705313,ha:609.7444227582056,o:"m 909 412 b 873 351 906 384 893 367 b 436 50 729 249 585 147 l 91 -179 b 62 -174 76 -189 68 -183 b 12 -96 48 -147 24 -125 b 36 -16 -7 -53 -6 -43 b 220 104 96 24 158 65 b 819 507 425 232 624 369 b 881 495 852 530 861 528 b 909 412 899 469 900 439 z m 333 338 b 302 240 330 307 317 274 b 276 235 297 225 287 228 l 233 269 b 203 376 186 307 183 318 b 225 441 212 397 217 419 b 246 454 228 452 232 458 b 333 338 284 441 333 380 z m 1116 228 b 1067 158 1115 192 1092 174 b 910 59 1015 125 963 92 b 478 -240 762 -33 622 -140 b 311 -350 423 -279 366 -314 b 285 -344 298 -360 289 -356 b 239 -258 272 -314 251 -288 b 261 -196 228 -228 235 -210 b 517 -29 348 -144 436 -91 b 1030 321 681 98 861 202 b 1093 307 1060 343 1076 340 b 1116 228 1107 281 1109 252 z m 1070 -105 b 1020 -210 1057 -143 1038 -176 b 998 -210 1014 -219 1004 -215 l 924 -153 b 913 -88 899 -135 897 -112 b 949 -22 926 -66 939 -45 b 998 -7 960 6 976 9 b 1070 -105 1032 -32 1058 -63 z"},repeat4Bars:{x_min:0,x_max:1374,y_min:-304,y_max:304,ha:608,o:"m 78 -266 b 92 -258 82 -266 88 -264 b 114 -240 98 -251 107 -246 b 638 107 289 -125 467 -14 b 873 271 716 161 793 216 b 907 337 894 285 906 305 b 887 400 901 354 897 379 b 852 438 877 426 867 438 b 814 420 842 438 829 432 b 135 -33 592 262 366 111 b 12 -121 92 -60 48 -84 b 0 -144 4 -128 0 -135 b 4 -160 0 -148 1 -154 b 63 -255 17 -196 45 -223 b 78 -266 68 -262 72 -266 z m 291 148 b 325 223 302 148 308 170 b 333 256 328 235 330 246 b 264 363 330 305 298 336 b 242 373 255 369 248 373 b 220 347 232 373 225 364 b 202 288 216 327 213 305 b 190 252 193 275 190 262 b 222 200 190 232 202 215 b 291 148 264 170 279 148 z m 815 -367 b 829 -359 819 -367 824 -364 b 851 -343 835 -353 844 -347 b 1375 6 1027 -228 1205 -117 l 1610 170 b 1644 235 1632 184 1643 203 b 1626 300 1639 253 1634 276 b 1590 337 1614 325 1604 337 b 1551 320 1580 337 1567 330 b 873 -135 1329 161 1103 10 b 749 -222 829 -161 785 -184 b 737 -245 742 -230 737 -238 b 742 -261 737 -249 739 -255 b 802 -357 755 -297 782 -325 b 815 -367 805 -363 809 -367 z m 396 -360 b 408 -356 400 -360 403 -359 b 609 -223 471 -307 543 -269 b 896 -19 706 -156 795 -81 b 1164 154 985 37 1074 96 b 1214 223 1189 170 1211 187 b 1176 321 1204 253 1205 292 b 1159 330 1169 327 1165 330 b 1145 324 1155 330 1151 328 b 1048 258 1113 302 1081 278 b 357 -202 809 117 598 -65 b 333 -238 341 -212 333 -223 b 338 -262 333 -245 334 -253 b 384 -350 350 -294 372 -318 b 396 -360 386 -354 390 -360 z m 1162 -438 b 1174 -433 1166 -438 1169 -436 b 1374 -300 1237 -384 1309 -346 b 1660 -96 1470 -233 1561 -158 b 1930 76 1751 -39 1840 19 b 1979 147 1954 92 1977 109 b 1943 243 1968 177 1971 216 b 1924 253 1935 251 1930 253 b 1911 248 1920 253 1915 252 b 1814 181 1878 225 1848 202 b 1123 -279 1575 40 1364 -141 b 1099 -315 1106 -289 1099 -300 b 1103 -338 1099 -321 1100 -330 b 1149 -426 1115 -370 1138 -396 b 1162 -438 1151 -432 1156 -438 z m 1875 -295 b 1882 -291 1878 -295 1879 -294 b 1934 -189 1904 -258 1921 -223 b 1872 -96 1925 -147 1901 -120 b 1840 -78 1858 -84 1848 -78 b 1812 -109 1830 -78 1823 -88 l 1777 -173 b 1770 -199 1773 -181 1770 -190 b 1786 -230 1770 -210 1774 -220 b 1862 -289 1809 -253 1837 -269 b 1875 -295 1865 -292 1871 -295 z"},repeatBarSlash:{x_min:0,x_max:630,y_min:-225.19160170741762,y_max:265.12618221237005,ha:490.31778391978764,o:"m 78 -324 b 92 -314 82 -325 88 -321 b 114 -298 96 -307 107 -302 b 638 49 289 -183 467 -72 b 873 215 716 104 792 161 b 907 279 894 229 906 248 b 887 344 901 298 897 321 b 852 382 877 369 867 380 b 814 363 842 383 829 376 b 135 -91 603 192 364 55 b 12 -177 92 -118 45 -137 b 0 -202 4 -186 0 -192 b 4 -217 0 -206 1 -212 b 63 -312 17 -253 42 -284 b 78 -324 68 -318 72 -323 z"},csymDiminished:{x_min:0,x_max:506,y_min:-.011036179317259481,y_max:500,ha:500.0110361793173,o:"m 397 0 b 729 265 576 -1 729 95 b 711 367 729 297 723 331 b 472 670 668 498 586 595 b 315 720 423 701 372 720 b 253 713 295 720 275 719 b 32 514 144 687 75 615 b 0 374 12 468 0 420 b 27 251 0 333 9 292 b 140 117 52 196 92 153 b 397 0 223 52 317 4 z m 340 95 b 132 314 233 84 122 216 b 324 589 145 438 200 539 b 415 611 360 603 389 611 b 544 505 469 611 505 576 b 590 392 564 471 583 432 b 596 343 593 374 596 359 b 340 95 596 210 485 96 z"},csymHalfDiminished:{x_min:-32,x_max:496,y_min:-33,y_max:492,ha:525,o:"m -29 -48 b 0 -36 -19 -48 -9 -40 b 17 -20 7 -32 12 -24 b 134 94 56 19 95 56 b 372 0 207 43 282 0 b 455 13 397 0 426 4 b 677 258 556 45 671 141 b 678 289 677 268 678 278 b 593 539 678 380 654 467 b 592 541 593 540 592 540 l 684 632 b 713 678 700 647 711 665 b 714 691 714 684 714 688 b 707 704 714 698 711 701 b 691 708 701 707 696 708 b 660 691 680 708 670 701 l 552 585 b 478 634 530 606 507 624 b 361 684 438 648 397 661 b 301 703 341 697 320 703 b 226 677 275 703 251 693 b 27 449 140 618 72 543 b 0 324 9 410 -4 370 b 88 128 -1 243 30 177 b -30 -7 43 86 0 46 b -46 -33 -35 -16 -46 -24 b -42 -42 -46 -36 -45 -39 b -29 -48 -37 -46 -33 -48 z m 141 179 b 121 251 128 200 121 225 b 128 297 121 265 124 281 b 351 575 163 420 248 505 b 377 582 359 579 369 580 b 501 536 422 586 468 567 b 141 179 382 416 261 298 z m 281 105 b 179 137 240 105 206 117 b 210 168 189 147 200 157 l 537 487 b 547 455 541 477 544 467 b 556 370 552 426 556 397 b 429 154 556 274 503 207 b 281 105 384 122 336 105 z"},csymAugmented:{x_min:0,x_max:530,y_min:0,y_max:539,ha:539,o:"m 380 0 b 393 14 384 4 390 9 b 397 46 397 24 397 36 l 397 333 b 736 327 511 331 624 330 b 763 343 755 327 763 333 b 755 361 763 348 760 354 b 635 431 726 402 688 431 l 390 431 l 390 485 b 386 606 392 526 386 566 b 392 664 386 625 387 645 b 395 690 393 672 395 681 b 376 753 395 711 389 734 b 357 776 372 762 369 776 b 350 775 354 776 353 776 b 327 740 337 769 327 759 b 327 621 328 700 327 661 b 330 438 328 559 328 498 l 29 438 b 4 431 20 438 7 442 b 0 413 3 425 0 419 b 7 399 0 408 1 403 b 131 338 45 369 85 340 b 331 334 199 336 265 334 b 333 163 333 276 333 220 b 366 13 333 109 348 63 b 380 0 367 7 374 4 z"},csymMajorSeventh:{x_min:0,x_max:593.1050509327923,y_min:0,y_max:569,ha:569,o:"m 124 1 l 497 27 b 819 50 605 35 711 43 b 854 98 847 52 855 63 b 812 200 845 128 835 166 b 564 585 730 328 648 456 b 435 786 521 652 480 720 b 397 819 419 809 408 819 b 369 792 387 819 379 811 b 7 173 248 585 128 379 b 0 150 3 166 0 158 b 7 128 0 143 3 135 b 89 10 30 86 65 50 b 109 0 95 1 102 0 z m 163 147 b 153 153 158 147 156 148 b 164 179 147 163 158 170 b 426 644 251 334 338 488 b 442 660 432 655 436 660 b 458 645 446 660 452 655 b 727 220 547 503 636 361 b 736 202 732 213 736 206 b 714 190 736 196 730 192 b 179 148 537 177 359 163 b 163 147 174 150 168 147 z"},csymMinor:{x_min:0,x_max:481.64484584675915,y_min:193,y_max:265.20435472429375,ha:72.20435472429375,o:"m 168 278 b 197 279 177 278 187 278 b 431 292 275 287 353 288 l 431 291 b 661 302 508 295 585 300 b 693 311 672 304 688 300 b 674 346 697 324 685 338 b 564 382 641 366 606 384 l 27 360 b 0 347 17 360 1 366 b 19 314 0 333 3 321 b 168 278 66 291 115 278 z"},csymParensLeftTall:{x_min:0,x_max:185,y_min:0,y_max:1034,ha:1034,o:"m 215 0 b 226 17 223 1 223 10 b 229 37 229 24 229 32 b 220 81 229 52 225 66 b 167 203 206 124 181 160 b 86 616 124 338 89 474 b 82 765 85 665 82 716 b 91 886 82 805 84 845 b 245 1319 120 1038 171 1184 b 266 1397 259 1346 266 1371 b 259 1443 266 1411 264 1427 b 226 1489 253 1463 248 1489 b 193 1454 212 1489 203 1467 b 114 1292 158 1404 140 1346 b 0 806 40 1138 0 978 b 3 721 0 779 0 750 b 1 677 1 707 1 693 b 36 418 1 593 16 504 b 144 96 62 307 95 199 b 196 12 158 66 179 39 b 212 0 200 7 204 0 z"},csymParensRightTall:{x_min:-40,x_max:188.5411603861406,y_min:.20204102886728756,y_max:1058,ha:1057.7979589711326,o:"m 30 1 b 63 14 42 -3 55 6 b 122 99 86 40 108 68 b 189 258 145 153 166 204 b 271 667 239 379 268 503 b 246 852 275 708 261 780 b 10 1495 197 1077 128 1295 b -14 1524 4 1505 1 1524 b -16 1522 -14 1524 -16 1524 b -46 1489 -33 1521 -43 1503 b -58 1417 -53 1464 -58 1440 b -36 1335 -58 1390 -52 1364 b 68 1138 0 1270 35 1204 b 163 883 108 1056 137 969 b 206 668 184 814 200 742 b 207 631 207 655 207 642 b 166 426 207 560 192 492 b 46 143 130 330 111 228 b 19 29 19 109 17 69 b 30 1 20 19 24 3 z"},csymBracketLeftTall:{x_min:0,x_max:328,y_min:2,y_max:807,ha:805,o:"m 68 3 b 76 4 71 3 73 3 b 186 13 112 12 150 13 b 240 13 204 13 222 13 l 287 13 b 379 17 317 13 348 13 b 472 121 435 24 472 69 b 467 156 472 132 469 144 b 446 174 462 168 456 174 l 439 174 b 327 166 402 167 364 166 b 265 167 307 166 285 167 l 209 167 b 187 475 199 269 189 372 b 166 985 186 645 187 815 l 377 1002 b 415 1001 389 1002 402 1001 b 456 1027 432 1001 448 1005 b 472 1096 467 1048 472 1073 b 464 1146 472 1113 469 1130 b 439 1162 459 1161 452 1162 b 40 1129 305 1151 173 1139 b 1 1093 17 1128 1 1120 b 0 1009 0 1064 0 1037 b 13 975 0 991 3 981 b 30 670 23 873 30 772 b 29 608 30 649 29 628 l 29 563 b 56 88 29 405 49 246 b 53 22 55 66 55 43 b 68 3 53 12 56 3 z"},csymBracketRightTall:{x_min:.8519422934604696,x_max:306,y_min:-.17180889215212544,y_max:829.1037519824849,ha:829.2755608746371,o:"m 117 0 b 372 29 203 -3 287 20 l 373 29 b 406 32 383 30 395 30 b 436 60 428 33 432 43 b 441 109 439 76 441 92 b 433 200 441 140 436 170 b 409 696 422 366 409 530 b 416 887 409 763 416 831 b 415 920 416 899 415 910 l 415 1106 b 412 1135 415 1116 415 1126 l 412 1145 b 373 1189 413 1171 408 1192 b 321 1189 356 1189 338 1189 l 215 1189 l 215 1194 l 56 1194 b 6 1153 27 1195 10 1187 b 1 1064 3 1123 4 1093 b 22 1043 0 1050 6 1043 b 84 1044 42 1044 63 1044 b 264 1038 144 1044 203 1040 b 265 958 264 1011 265 985 b 262 845 265 920 264 883 b 259 710 259 801 259 755 b 279 243 259 554 271 399 b 285 170 281 219 284 194 b 95 151 222 161 158 156 b 29 81 27 147 27 147 l 29 73 b 105 0 33 0 33 0 z"},csymParensLeftVeryTall:{x_min:0,x_max:116,y_min:0,y_max:934.1531437146923,ha:934.1531437146923,o:"m 128 0 b 147 17 137 0 144 9 b 167 102 160 45 167 73 b 158 154 167 120 164 137 b 117 307 141 204 130 256 b 63 698 84 435 71 567 b 62 788 62 729 62 757 b 69 916 62 829 63 873 b 109 1172 81 1001 94 1087 b 132 1320 118 1221 137 1269 b 124 1345 131 1329 134 1342 b 96 1332 114 1346 102 1341 b 71 1269 82 1313 75 1292 b 39 1104 59 1214 48 1159 b 0 742 19 988 0 871 b 10 559 3 688 6 624 b 58 226 16 446 33 336 b 112 20 73 157 94 89 b 128 0 115 13 118 0 z"},csymParensRightVeryTall:{x_min:-20,x_max:111.4332498248095,y_min:-.07657185734616112,y_max:1009,ha:1009.0765718573462,o:"m -3 0 b 20 22 9 -1 14 12 b 36 56 26 33 32 45 b 99 274 58 128 84 199 b 160 788 135 439 163 605 b 122 1181 164 912 145 1047 b 50 1431 108 1267 86 1351 b 36 1453 48 1439 46 1453 l 35 1453 l 30 1453 b 7 1423 17 1449 7 1440 b 27 1287 9 1377 10 1331 b 96 963 71 1184 85 1074 b 105 818 102 914 105 867 b 91 624 105 753 99 688 b -4 213 72 484 48 344 b -29 101 -19 174 -29 138 b -16 27 -29 76 -24 52 b -3 0 -13 17 -14 3 z"},csymDiagonalArrangementSlash:{x_min:-.19862981551275186,x_max:990,y_min:-26.946823529189132,y_max:1027.5514326488437,ha:1054.4982561780328,o:"m 14 -37 b 58 -9 35 -45 46 -22 b 392 333 170 105 279 217 l 765 711 b 1372 1329 968 916 1168 1125 b 1424 1439 1403 1359 1417 1397 b 1426 1457 1424 1444 1426 1450 b 1416 1477 1426 1466 1423 1475 b 1374 1462 1400 1485 1385 1473 b 1181 1269 1309 1397 1246 1331 b 736 831 1031 1122 884 979 b 356 452 609 704 485 576 b 32 132 246 347 143 236 b 0 50 7 109 1 84 b 6 9 -1 37 3 23 b 14 -37 10 -9 0 -32 z"},accidentalNarrowReversedFlat:{x_min:0,x_max:208,y_min:-231,y_max:449,ha:680,o:"m 272 -333 b 284 -320 278 -333 281 -328 b 300 -174 297 -272 300 -222 b 275 190 298 -52 279 68 b 268 445 272 275 268 360 l 268 490 b 264 612 269 530 265 572 b 236 647 264 632 252 645 l 235 647 b 217 618 220 647 220 628 b 207 526 210 588 207 556 b 210 432 207 494 210 464 b 216 268 213 377 215 323 l 216 230 l 215 232 b 154 256 194 240 174 251 b 111 264 138 261 124 264 b 3 153 50 264 10 223 b 0 94 0 132 0 114 b 194 -276 0 -63 68 -186 b 255 -323 215 -291 236 -307 b 272 -333 262 -330 268 -333 z m 233 -138 b 71 30 168 -92 105 -45 b 63 59 65 42 63 50 b 96 95 62 75 73 86 b 130 102 108 99 120 102 b 215 76 160 102 187 88 l 220 73 b 225 -22 220 42 222 10 b 233 -138 229 -62 230 -101 z"},accidentalNarrowReversedFlatAndFlat:{x_min:0,x_max:335,y_min:-231,y_max:449,ha:680,o:"m 151 490 b 148 612 151 530 150 572 b 132 647 148 632 141 645 b 122 618 124 647 124 628 b 117 526 118 588 117 556 b 118 432 117 494 118 464 b 121 268 120 377 121 323 l 121 232 b 86 256 109 240 98 251 b 62 264 78 261 69 264 b 1 153 29 264 6 223 b 0 94 0 132 0 114 b 109 -276 0 -63 37 -186 b 144 -323 121 -291 132 -307 b 153 -333 147 -330 151 -333 b 160 -320 157 -333 158 -328 b 168 -174 167 -272 168 -222 b 154 190 168 -52 157 68 b 151 445 153 275 151 360 z m 480 153 b 372 264 472 223 432 264 b 328 256 359 264 344 261 b 268 232 308 251 288 240 l 266 230 l 266 268 b 272 432 266 323 269 377 b 275 526 272 464 275 494 b 265 618 275 556 272 588 b 248 647 262 628 262 647 l 246 647 b 219 612 230 645 219 632 b 215 490 217 572 213 530 l 215 445 b 207 190 215 360 210 275 b 183 -174 203 68 183 -52 b 199 -320 183 -222 186 -272 b 210 -333 202 -328 204 -333 b 228 -323 215 -333 220 -330 b 288 -276 246 -307 268 -291 b 482 94 415 -186 482 -63 b 480 153 482 114 482 132 z m 40 30 b 36 59 36 42 36 50 b 55 95 35 75 42 86 b 73 102 60 99 68 102 b 121 76 89 102 105 88 l 124 73 b 127 -22 124 42 125 10 l 131 -138 b 40 30 95 -92 60 -43 z m 419 59 b 412 30 419 50 418 42 b 249 -138 374 -43 314 -92 b 258 -22 252 -101 253 -62 b 262 73 261 10 262 42 l 268 76 b 353 102 295 88 323 102 b 386 95 363 102 374 99 b 419 59 409 86 420 75 z"},accidentalWilsonPlus:{x_min:0,x_max:298,y_min:-218,y_max:218,ha:436,o:"m 232 -314 b 236 -301 236 -310 236 -305 l 236 -295 b 243 -52 239 -213 242 -132 l 369 62 b 429 200 413 101 425 147 b 416 243 429 216 428 236 b 383 225 406 251 393 232 l 377 220 b 246 98 336 177 291 138 b 249 242 248 145 246 193 b 225 304 251 265 242 287 b 209 314 220 308 215 314 b 204 312 207 314 206 312 b 196 292 196 310 196 300 b 193 184 194 256 194 220 b 187 48 192 140 190 94 b 46 -72 141 7 94 -32 b 0 -163 13 -98 0 -127 b 1 -187 0 -170 0 -179 b 10 -235 4 -203 6 -219 b 20 -255 12 -242 14 -251 b 36 -245 26 -259 30 -249 b 181 -109 85 -200 132 -154 b 176 -258 180 -158 176 -209 b 232 -314 176 -298 186 -307 z"},accidentalWilsonMinus:{x_min:0,x_max:284.2093390143919,y_min:-163,y_max:163,ha:326,o:"m 386 -232 b 409 -163 415 -222 408 -180 b 382 -69 410 -120 408 -89 b 32 228 264 30 141 118 b 17 235 26 233 22 235 b 3 219 9 235 3 228 b 0 157 3 199 0 179 b 29 69 0 125 6 95 b 323 -194 115 -29 222 -111 b 374 -235 338 -206 353 -235 b 386 -232 377 -235 382 -233 z"}},fontFamily:"Petaluma",resolution:1e3,generatedOn:"2022-06-26T17:47:23.560Z"},Fi={name:"Petaluma",smufl:!0,stave:{padding:15,endPaddingMax:15,endPaddingMin:7,unalignedNotePadding:12},accidental:{noteheadAccidentalPadding:1,leftPadding:2,accidentalSpacing:3},clef:{default:{point:32,width:26},small:{point:26,width:20},annotations:{"8va":{smuflCode:"timeSig8",default:{point:18,treble:{line:-1.4,shiftX:12}},small:{point:16,treble:{line:-.2,shiftX:8}}},"8vb":{smuflCode:"timeSig8",default:{point:18,treble:{line:6,shiftX:10},bass:{line:3.5,shiftX:1}},small:{point:16,treble:{line:5.3,shiftX:6},bass:{line:3.1,shiftX:.5}}}},lineCount:{8:{point:55,shiftY:14},7:{point:47,shiftY:8},6:{point:32,shiftY:1},5:{point:30,shiftY:-6},4:{point:23,shiftY:-12}}},parenthesis:{default:{point:39,width:7},gracenote:{point:23.4,width:3}},pedalMarking:{up:{point:40},down:{point:34}},digits:{shiftLine:-1,point:22,tupletPoint:16,shiftY:-2},articulation:{articStaccatissimoAbove:{padding:2},articStaccatissimoBelow:{padding:2}},tremolo:{default:{point:25,spacing:5,offsetYStemUp:-5,offsetYStemDown:5,offsetXStemUp:13,offsetXStemDown:1},grace:{point:18,spacing:4,offsetYStemUp:-5,offsetYStemDown:5,offsetXStemUp:8,offsetXStemDown:1}},staveRepetition:{symbolText:{offsetX:12,offsetY:25,spacing:5},coda:{offsetY:25},segno:{offsetY:10}},noteHead:{displaced:{shiftX:-2}},stem:{heightAdjustmentForFlag:-3,noteHead:{noteheadTriangleUpHalf:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpBlack:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpWhole:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadXHalf:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXBlack:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXWhole:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadHalf:{offsetYBaseStemDown:1.8,offsetYBaseStemUp:-1.8},noteheadBlack:{offsetYBaseStemDown:2,offsetYBaseStemUp:-2},noteheadSquareWhite:{offsetYBaseStemDown:-5,offsetYBaseStemUp:5}}},glyphs:{coda:{point:20,shiftX:-7,shiftY:8},segno:{shiftX:-7},flag:{shiftX:-.77,flag16thUp:{shiftX:-.75},flag32ndUp:{shiftX:-.85},flag64thUp:{shiftX:-1.55},flag128thUp:{shiftX:-1.3},flag16thDown:{shiftX:-.75},flag32ndDown:{shiftX:-.76},flag64thDown:{shiftX:-1.5},flag128thDown:{shiftX:-1.2},staveTempo:{shiftX:-1}},clef:{gClef:{default:{scale:1.1,shiftY:1},small:{shiftY:1.5}},fClef:{default:{shiftY:-.5}}},ornament:{ornamentTurn:{scale:1.2},ornamentTurnSlash:{scale:1.2}},stringNumber:{verticalPadding:8,stemPadding:2,leftPadding:5,rightPadding:6},stroke:{arrowheadBlackDown:{straight:{shiftX:-4.5},wiggly:{shiftX:-1,shiftY:1}},arrowheadBlackUp:{straight:{shiftX:-.85},wiggly:{shiftX:-1,shiftY:1}}},textNote:{point:34,breathMarkTick:{point:36,shiftY:9},breathMarkComma:{point:36},segno:{point:30,shiftX:-7,shiftY:8},coda:{point:20,shiftX:-7,shiftY:8},ornamentTrill:{shiftX:-10,shiftY:8},ornamentMordent:{shiftX:-8},ornamentShortTrill:{shiftX:-8}},noteHead:{minPadding:2,standard:{noteheadBlackStemUp:{shiftX:.5},noteheadHalfStemUp:{shiftX:.725},noteheadWholeStemUp:{shiftX:1}},custom:{noteheadCircleXStemUp:{shiftX:-1},noteheadCircleXStemDown:{shiftX:.25},noteheadDiamondHalfStemUp:{shiftX:1.5},noteheadDiamondBlackStemUp:{shiftX:1.5},noteheadDiamondWholeStemUp:{shiftX:1},noteheadXBlackStemUp:{shiftX:1},noteheadXHalfStemUp:{shiftX:-3},noteheadXHalfStemDown:{shiftX:1},noteheadXWholeStemUp:{shiftX:-7},noteheadXWholeStemDown:{shiftX:1},noteheadXDoubleWholeStemUp:{shiftX:-12},noteheadXDoubleWholeStemDown:{shiftX:-4},noteheadSquareWhiteStemDown:{shiftX:.25},noteheadSquareWhiteStemUp:{shiftX:-.75},noteheadSquareBlackStemUp:{shiftX:-.75},noteheadTriangleUpWholeStemUp:{shiftX:-.75}}},chordSymbol:{global:{superscriptOffset:-400,subscriptOffset:300,kerningOffset:-150,lowerKerningText:["D","F","P","T","V","Y"],upperKerningText:["L"],spacing:20,superSubRatio:.73},csymDiminished:{scale:.8,leftSideBearing:-95,advanceWidth:506,yOffset:0},csymHalfDiminished:{scale:.8,leftSideBearing:-32,advanceWidth:506,yOffset:0},csymAugmented:{scale:1,leftSideBearing:-25,advanceWidth:530,yOffset:0},csymParensLeftTall:{scale:.8,leftSideBearing:0,advanceWidth:155,yOffset:150},csymParensRightTall:{scale:.8,leftSideBearing:40,advanceWidth:189,yOffset:150},csymBracketLeftTall:{scale:.8,leftSideBearing:0,advanceWidth:328,yOffset:0},csymBracketRightTall:{scale:.8,leftSideBearing:1,advanceWidth:600,yOffset:0},csymParensLeftVeryTall:{scale:.95,leftSideBearing:0,advanceWidth:210,yOffset:250},csymParensRightVeryTall:{scale:.9,leftSideBearing:-100,advanceWidth:111,yOffset:250},csymDiagonalArrangementSlash:{scale:.6,leftSideBearing:-1,advanceWidth:990,yOffset:0},csymMinor:{scale:.7,leftSideBearing:0,advanceWidth:482,yOffset:0},csymMajorSeventh:{scale:.8,leftSideBearing:100,yOffset:0,advanceWidth:600},accidentalSharp:{scale:.7,leftSideBearing:0,advanceWidth:425,yOffset:-422},accidentalFlat:{scale:.8,leftSideBearing:-10,advanceWidth:228,yOffset:-284}},jazzOrnaments:{brassScoop:{scale:1,xOffset:-12,yOffset:0,stemUpYOffset:0,reportedWidth:15},brassDoitMedium:{scale:1,xOffset:16,yOffset:0,stemUpYOffset:0,reportedWidth:19},brassFallLipShort:{scale:1,xOffset:16,yOffset:0,stemUpYOffset:0,reportedWidth:19},brassLiftMedium:{scale:1,xOffset:16,yOffset:5,stemUpYOffset:0,reportedWidth:15},brassFallRoughMedium:{scale:1,xOffset:16,yOffset:26,stemUpYOffset:0,reportedWidth:5},brassBend:{scale:1,xOffset:3,yOffset:-8,stemUpYOffset:28,reportedWidth:5},brassMuteClosed:{scale:1,xOffset:3,yOffset:-8,stemUpYOffset:26,reportedWidth:5},brassMuteOpen:{scale:1,xOffset:4,yOffset:-8,stemUpYOffset:27,reportedWidth:5},brassFlip:{scale:1,xOffset:10,yOffset:-4,stemUpYOffset:7,reportedWidth:5},brassJazzTurn:{scale:1,xOffset:6,yOffset:-4,stemUpYOffset:5,reportedWidth:30},brassSmear:{scale:1,xOffset:10,yOffset:-4,stemUpYOffset:5,reportedWidth:5}},tuplet:{noteHeadOffset:20,stemOffset:10,bottomLine:4,topModifierOffset:20}}};const Ri={spacing:50,glyphs:{" ":{x_min:0,x_max:250,y_min:0,y_max:500,ha:500,leftSideBearing:0,advanceWidth:250},0:{x_min:33,x_max:534,y_min:-13,y_max:751,ha:764,leftSideBearing:33,advanceWidth:570},1:{x_min:48,x_max:235,y_min:-17,y_max:734,ha:751,leftSideBearing:48,advanceWidth:286},2:{x_min:56,x_max:571,y_min:-19,y_max:741,ha:760,leftSideBearing:56,advanceWidth:626},3:{x_min:50,x_max:528,y_min:-7,y_max:731,ha:738,leftSideBearing:50,advanceWidth:589},4:{x_min:38,x_max:564,y_min:-13,y_max:743,ha:756,leftSideBearing:38,advanceWidth:614},5:{x_min:42,x_max:601,y_min:-34,y_max:743,ha:777,leftSideBearing:42,advanceWidth:648},6:{x_min:47,x_max:606,y_min:-16,y_max:743,ha:759,leftSideBearing:47,advanceWidth:667},7:{x_min:47,x_max:567,y_min:5,y_max:739,ha:734,leftSideBearing:0,advanceWidth:615},8:{x_min:40,x_max:541,y_min:-15,y_max:752,ha:767,leftSideBearing:40,advanceWidth:585},9:{x_min:40,x_max:537,y_min:-52,y_max:736,ha:788,leftSideBearing:40,advanceWidth:592},"!":{x_min:49,x_max:180,y_min:-7,y_max:761,ha:768,leftSideBearing:49,advanceWidth:230},'"':{x_min:39,x_max:304,y_min:596,y_max:804,ha:208,leftSideBearing:39,advanceWidth:353},"#":{x_min:33,x_max:599,y_min:-8,y_max:765,ha:773,leftSideBearing:33,advanceWidth:648},$:{x_min:53,x_max:495,y_min:-111,y_max:823,ha:934,leftSideBearing:53,advanceWidth:560},"%":{x_min:35,x_max:656,y_min:-128,y_max:808,ha:936,leftSideBearing:35,advanceWidth:711},"&":{x_min:53,x_max:441,y_min:-3,y_max:753,ha:756,leftSideBearing:53,advanceWidth:500},"'":{x_min:43,x_max:161,y_min:590,y_max:811,ha:221,leftSideBearing:43,advanceWidth:217},"(":{x_min:41,x_max:311,y_min:-36,y_max:845,ha:881,leftSideBearing:41,advanceWidth:308},")":{x_min:-8,x_max:257,y_min:-21,y_max:852,ha:873,leftSideBearing:-8,advanceWidth:280},"*":{x_min:59,x_max:539,y_min:175,y_max:589,ha:414,leftSideBearing:59,advanceWidth:601},"+":{x_min:33,x_max:361,y_min:180,y_max:587,ha:407,leftSideBearing:33,advanceWidth:400},",":{x_min:15,x_max:176,y_min:-129,y_max:92,ha:221,leftSideBearing:15,advanceWidth:205},"-":{x_min:40,x_max:380,y_min:317,y_max:452,ha:135,leftSideBearing:40,advanceWidth:422},".":{x_min:48,x_max:185,y_min:-56,y_max:84,ha:140,leftSideBearing:48,advanceWidth:227},"/":{x_min:-58,x_max:654,y_min:-122,y_max:844,ha:966,leftSideBearing:-58,advanceWidth:626},":":{x_min:65,x_max:225,y_min:97,y_max:536,ha:439,leftSideBearing:65,advanceWidth:302},";":{x_min:13,x_max:295,y_min:-139,y_max:536,ha:675,leftSideBearing:13,advanceWidth:334},"<":{x_min:28,x_max:438,y_min:-1,y_max:607,ha:608,leftSideBearing:28,advanceWidth:475},"=":{x_min:40,x_max:383,y_min:199.9598640852289,y_max:541,ha:341.0401359147711,leftSideBearing:40,advanceWidth:422},">":{x_min:35,x_max:421,y_min:28,y_max:632,ha:604,leftSideBearing:35,advanceWidth:466},"?":{x_min:45,x_max:548,y_min:-17,y_max:767,ha:784,leftSideBearing:45,advanceWidth:592},"@":{x_min:51,x_max:730,y_min:-78,y_max:753,ha:831,leftSideBearing:51,advanceWidth:781},A:{x_min:37,x_max:554,y_min:-4,y_max:746,ha:750,leftSideBearing:37,advanceWidth:617},B:{x_min:37,x_max:532,y_min:3,y_max:783,ha:780,leftSideBearing:37,advanceWidth:579},C:{x_min:37,x_max:583,y_min:-3,y_max:775,ha:778,leftSideBearing:37,advanceWidth:623},D:{x_min:50,x_max:530,y_min:-15,y_max:749,ha:764,leftSideBearing:50,advanceWidth:579},E:{x_min:45,x_max:531,y_min:-1,y_max:743,ha:744,leftSideBearing:45,advanceWidth:585},F:{x_min:45,x_max:459,y_min:23,y_max:727,ha:704,leftSideBearing:45,advanceWidth:510},G:{x_min:31,x_max:577,y_min:-8,y_max:733,ha:741,leftSideBearing:31,advanceWidth:611},H:{x_min:37,x_max:493,y_min:-22,y_max:758,ha:780,leftSideBearing:37,advanceWidth:535},I:{x_min:47,x_max:501,y_min:-3,y_max:731,ha:734,leftSideBearing:47,advanceWidth:541},J:{x_min:33,x_max:531,y_min:-23,y_max:725,ha:748,leftSideBearing:33,advanceWidth:573},K:{x_min:43,x_max:505,y_min:-10,y_max:740,ha:750,leftSideBearing:43,advanceWidth:560},L:{x_min:49,x_max:457,y_min:-2,y_max:746,ha:748,leftSideBearing:49,advanceWidth:510},M:{x_min:35,x_max:699,y_min:1,y_max:744,ha:743,leftSideBearing:35,advanceWidth:743},N:{x_min:34,x_max:533,y_min:-17,y_max:761,ha:778,leftSideBearing:34,advanceWidth:579},O:{x_min:41,x_max:608,y_min:-5,y_max:735,ha:740,leftSideBearing:41,advanceWidth:667},P:{x_min:53,x_max:451,y_min:-18,y_max:735,ha:753,leftSideBearing:53,advanceWidth:497},Q:{x_min:40,x_max:599,y_min:-67,y_max:744,ha:811,leftSideBearing:40,advanceWidth:648},R:{x_min:39,x_max:487,y_min:16,y_max:735,ha:719,leftSideBearing:39,advanceWidth:535},S:{x_min:35,x_max:552,y_min:-47,y_max:708,ha:755,leftSideBearing:35,advanceWidth:604},T:{x_min:26,x_max:656,y_min:-13,y_max:718,ha:731,leftSideBearing:26,advanceWidth:705},U:{x_min:41,x_max:518,y_min:-20,y_max:748,ha:768,leftSideBearing:41,advanceWidth:567},V:{x_min:47,x_max:509,y_min:-26,y_max:744,ha:770,leftSideBearing:47,advanceWidth:567},W:{x_min:44,x_max:789,y_min:-35,y_max:720,ha:755,leftSideBearing:44,advanceWidth:833},X:{x_min:63,x_max:635,y_min:-10,y_max:745,ha:755,leftSideBearing:63,advanceWidth:680},Y:{x_min:43,x_max:503,y_min:-21,y_max:734,ha:755,leftSideBearing:43,advanceWidth:541},Z:{x_min:42,x_max:584,y_min:-10,y_max:739,ha:749,leftSideBearing:42,advanceWidth:629},"[":{x_min:46,x_max:346,y_min:-150,y_max:884,ha:1034,leftSideBearing:46,advanceWidth:291},"\\":{x_min:20,x_max:616,y_min:-100,y_max:797,ha:897,leftSideBearing:20,advanceWidth:645},"]":{x_min:-76,x_max:226,y_min:-150,y_max:881,ha:1031,leftSideBearing:-76,advanceWidth:297},"^":{x_min:43,x_max:437,y_min:517,y_max:812,ha:295,leftSideBearing:43,advanceWidth:478},_:{x_min:29,x_max:563,y_min:-110,y_max:-1,ha:109,leftSideBearing:29,advanceWidth:598},"`":{x_min:54,x_max:321,y_min:540,y_max:747,ha:207,leftSideBearing:54,advanceWidth:368},a:{x_min:20,x_max:447,y_min:-17,y_max:495,ha:512,leftSideBearing:20,advanceWidth:494},b:{x_min:37,x_max:466,y_min:-27,y_max:770,ha:797,leftSideBearing:37,advanceWidth:510},c:{x_min:35,x_max:456,y_min:-9,y_max:507,ha:516,leftSideBearing:35,advanceWidth:460},d:{x_min:45,x_max:520,y_min:-15,y_max:764,ha:779,leftSideBearing:45,advanceWidth:560},e:{x_min:33,x_max:370,y_min:-5,y_max:501,ha:506,leftSideBearing:33,advanceWidth:397},f:{x_min:35,x_max:411,y_min:-13,y_max:695,ha:708,leftSideBearing:35,advanceWidth:453},g:{x_min:33,x_max:551,y_min:-257,y_max:505,ha:762,leftSideBearing:33,advanceWidth:611},h:{x_min:32,x_max:458,y_min:-29,y_max:743,ha:772,leftSideBearing:32,advanceWidth:491},i:{x_min:45,x_max:167,y_min:-13,y_max:631,ha:644,leftSideBearing:45,advanceWidth:220},j:{x_min:-127,x_max:261,y_min:-231,y_max:601,ha:832,leftSideBearing:-127,advanceWidth:308},k:{x_min:39,x_max:443,y_min:-3,y_max:700,ha:703,leftSideBearing:39,advanceWidth:497},l:{x_min:58,x_max:168,y_min:-8,y_max:686,ha:694,leftSideBearing:58,advanceWidth:227},m:{x_min:39,x_max:688,y_min:-14,y_max:501,ha:515,leftSideBearing:39,advanceWidth:718},n:{x_min:45,x_max:491,y_min:-32,y_max:512,ha:544,leftSideBearing:45,advanceWidth:541},o:{x_min:41,x_max:424,y_min:-12,y_max:493,ha:505,leftSideBearing:41,advanceWidth:447},p:{x_min:25,x_max:529,y_min:-260,y_max:500,ha:760,leftSideBearing:25,advanceWidth:573},q:{x_min:53,x_max:603,y_min:-235,y_max:514,ha:749,leftSideBearing:53,advanceWidth:623},r:{x_min:32,x_max:407,y_min:-7,y_max:492,ha:499,leftSideBearing:32,advanceWidth:460},s:{x_min:49,x_max:416,y_min:-12,y_max:519,ha:531,leftSideBearing:49,advanceWidth:460},t:{x_min:32,x_max:442,y_min:-5,y_max:684,ha:689,leftSideBearing:32,advanceWidth:469},u:{x_min:41,x_max:487,y_min:-5,y_max:507,ha:512,leftSideBearing:41,advanceWidth:510},v:{x_min:16,x_max:441,y_min:-20,y_max:542,ha:562,leftSideBearing:16,advanceWidth:456},w:{x_min:39,x_max:639,y_min:-22,y_max:505,ha:527,leftSideBearing:39,advanceWidth:661},x:{x_min:15,x_max:505,y_min:-39,y_max:539,ha:578,leftSideBearing:15,advanceWidth:541},y:{x_min:-98,x_max:501,y_min:-242,y_max:511,ha:753,leftSideBearing:-98,advanceWidth:548},z:{x_min:27,x_max:479,y_min:-3,y_max:494,ha:497,leftSideBearing:27,advanceWidth:494},"{":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308},"|":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308},"}":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308},"~":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308}},fontFamily:"PetalumaScript",resolution:1e3,generatedOn:"2020-06-14T18:33:25.407Z"},Oi={spacing:50,glyphs:{" ":{x_min:0,x_max:509,y_min:0,y_max:2e3,ha:2e3,leftSideBearing:0,advanceWidth:509},0:{x_min:121,x_max:1048,y_min:-21,y_max:1477,ha:1498,leftSideBearing:121,advanceWidth:1168},1:{x_min:117,x_max:767,y_min:0,y_max:1456,ha:1456,leftSideBearing:117,advanceWidth:844},2:{x_min:75.8474576645637,x_max:1040,y_min:0,y_max:1477,ha:1477,leftSideBearing:75,advanceWidth:1131},3:{x_min:74.85365853658536,x_max:994,y_min:-21,y_max:1477,ha:1498,leftSideBearing:74,advanceWidth:1106},4:{x_min:63,x_max:1114,y_min:0,y_max:1456,ha:1456,leftSideBearing:63,advanceWidth:1187},5:{x_min:96.8448275474953,x_max:982,y_min:-21,y_max:1456,ha:1477,leftSideBearing:96,advanceWidth:1081},6:{x_min:121,x_max:1067,y_min:-21,y_max:1477,ha:1498,leftSideBearing:121,advanceWidth:1144},7:{x_min:76,x_max:1060,y_min:0,y_max:1456,ha:1456,leftSideBearing:-30,advanceWidth:1128},8:{x_min:92,x_max:1039,y_min:-21,y_max:1477,ha:1498,leftSideBearing:92,advanceWidth:1131},9:{x_min:84,x_max:1026,y_min:-21,y_max:1477,ha:1498,leftSideBearing:84,advanceWidth:1154},"!":{x_min:143,x_max:340,y_min:0,y_max:1456,ha:1456,leftSideBearing:143,advanceWidth:483},'"':{x_min:166,x_max:634,y_min:1055,y_max:1560,ha:505,leftSideBearing:166,advanceWidth:770},"#":{x_min:63,x_max:1179,y_min:0,y_max:1456,ha:1456,leftSideBearing:63,advanceWidth:1246},$:{x_min:81.92156915727656,x_max:1012,y_min:-208,y_max:1693,ha:1901,leftSideBearing:81,advanceWidth:1110},"%":{x_min:77,x_max:1384,y_min:-21,y_max:1477,ha:1498,leftSideBearing:77,advanceWidth:1460},"&":{x_min:74,x_max:1242,y_min:-21,y_max:1477,ha:1498,leftSideBearing:74,advanceWidth:1289},"'":{x_min:166,x_max:324,y_min:1055,y_max:1560,ha:505,leftSideBearing:166,advanceWidth:460},"(":{x_min:114,x_max:650,y_min:-463,y_max:1636,ha:2099,leftSideBearing:114,advanceWidth:662},")":{x_min:11,x_max:547,y_min:-463,y_max:1636,ha:2099,leftSideBearing:11,advanceWidth:654},"*":{x_min:66,x_max:893,y_min:607,y_max:1456,ha:849,leftSideBearing:66,advanceWidth:958},"+":{x_min:73,x_max:1071,y_min:146,y_max:1206,ha:1060,leftSideBearing:73,advanceWidth:1145},",":{x_min:23,x_max:315,y_min:-311,y_max:221,ha:532,leftSideBearing:23,advanceWidth:404},"-":{x_min:154,x_max:643,y_min:538,y_max:692,ha:154,leftSideBearing:154,advanceWidth:797},".":{x_min:145,x_max:342,y_min:0,y_max:202,ha:202,leftSideBearing:145,advanceWidth:493},"/":{x_min:0,x_max:774,y_min:-125,y_max:1456,ha:1581,leftSideBearing:0,advanceWidth:824},":":{x_min:145,x_max:342,y_min:0,y_max:1082,ha:1082,leftSideBearing:145,advanceWidth:419},";":{x_min:53,x_max:345,y_min:-311,y_max:1082,ha:1393,leftSideBearing:53,advanceWidth:424},"<":{x_min:76,x_max:892,y_min:107,y_max:1013,ha:906,leftSideBearing:76,advanceWidth:1017},"=":{x_min:147,x_max:981,y_min:407,y_max:987,ha:580,leftSideBearing:147,advanceWidth:1127},">":{x_min:125,x_max:980,y_min:87,y_max:993,ha:906,leftSideBearing:125,advanceWidth:1060},"?":{x_min:65.92660602419838,x_max:890,y_min:0,y_max:1477,ha:1477,leftSideBearing:65,advanceWidth:953},"@":{x_min:84.3592218305664,x_max:1705.2346925277395,y_min:-453,y_max:1431,ha:1884,leftSideBearing:84,advanceWidth:1821},A:{x_min:70,x_max:1463,y_min:0,y_max:1456,ha:1456,leftSideBearing:70,advanceWidth:1533},B:{x_min:81,x_max:1253,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1322},C:{x_min:80,x_max:1174,y_min:-21,y_max:1477,ha:1498,leftSideBearing:80,advanceWidth:1290},D:{x_min:81,x_max:1291,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1356},E:{x_min:81,x_max:1190,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1306},F:{x_min:81,x_max:1176,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1256},G:{x_min:80,x_max:1226,y_min:-21,y_max:1477,ha:1498,leftSideBearing:80,advanceWidth:1346},H:{x_min:81,x_max:1497,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1578},I:{x_min:81,x_max:604,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:685},J:{x_min:60,x_max:1100,y_min:-21,y_max:1456,ha:1477,leftSideBearing:60,advanceWidth:1169},K:{x_min:81,x_max:1427,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1501},L:{x_min:81,x_max:1130,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1210},M:{x_min:94,x_max:1888,y_min:0,y_max:1456,ha:1456,leftSideBearing:94,advanceWidth:1982},N:{x_min:83,x_max:1509,y_min:0,y_max:1456,ha:1456,leftSideBearing:83,advanceWidth:1592},O:{x_min:70,x_max:1281,y_min:-21,y_max:1477,ha:1498,leftSideBearing:70,advanceWidth:1351},P:{x_min:81,x_max:1242,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1297},Q:{x_min:70,x_max:1348,y_min:-245,y_max:1477,ha:1722,leftSideBearing:70,advanceWidth:1376},R:{x_min:81,x_max:1285,y_min:0,y_max:1455,ha:1455,leftSideBearing:81,advanceWidth:1385},S:{x_min:115,x_max:1116,y_min:-21,y_max:1477,ha:1498,leftSideBearing:115,advanceWidth:1206},T:{x_min:96,x_max:1306,y_min:0,y_max:1456,ha:1456,leftSideBearing:96,advanceWidth:1406},U:{x_min:70,x_max:1452,y_min:-21,y_max:1456,ha:1477,leftSideBearing:70,advanceWidth:1522},V:{x_min:65,x_max:1443,y_min:0,y_max:1456,ha:1456,leftSideBearing:65,advanceWidth:1508},W:{x_min:72,x_max:2057,y_min:0,y_max:1456,ha:1456,leftSideBearing:72,advanceWidth:2129},X:{x_min:80,x_max:1449,y_min:0,y_max:1456,ha:1456,leftSideBearing:80,advanceWidth:1529},Y:{x_min:65,x_max:1396,y_min:0,y_max:1456,ha:1456,leftSideBearing:65,advanceWidth:1461},Z:{x_min:90,x_max:1107,y_min:0,y_max:1456,ha:1456,leftSideBearing:90,advanceWidth:1197},"[":{x_min:157,x_max:541,y_min:-312,y_max:1664,ha:1976,leftSideBearing:157,advanceWidth:573},"\\":{x_min:36,x_max:830,y_min:-125,y_max:1456,ha:1581,leftSideBearing:36,advanceWidth:841},"]":{x_min:23,x_max:408,y_min:-312,y_max:1664,ha:1976,leftSideBearing:23,advanceWidth:552},"^":{x_min:71,x_max:802,y_min:729,y_max:1456,ha:727,leftSideBearing:71,advanceWidth:864},_:{x_min:119,x_max:1041,y_min:-154,y_max:0,ha:154,leftSideBearing:119,advanceWidth:1168},"`":{x_min:40,x_max:456,y_min:1288,y_max:1560,ha:272,leftSideBearing:40,advanceWidth:496},a:{x_min:79,x_max:1053,y_min:-21,y_max:1102,ha:1123,leftSideBearing:79,advanceWidth:1132},b:{x_min:-16,x_max:1071,y_min:-21,y_max:1560,ha:1581,leftSideBearing:-16,advanceWidth:1145},c:{x_min:78,x_max:988,y_min:-21,y_max:1102,ha:1123,leftSideBearing:78,advanceWidth:1067},d:{x_min:78,x_max:1156,y_min:-21,y_max:1560,ha:1581,leftSideBearing:78,advanceWidth:1218},e:{x_min:74,x_max:980,y_min:-21,y_max:1102,ha:1123,leftSideBearing:74,advanceWidth:1059},f:{x_min:64,x_max:731,y_min:0,y_max:1581,ha:1581,leftSideBearing:64,advanceWidth:725},g:{x_min:78,x_max:1133,y_min:-437,y_max:1102,ha:1539,leftSideBearing:78,advanceWidth:1157},h:{x_min:49,x_max:1255,y_min:0,y_max:1560,ha:1560,leftSideBearing:49,advanceWidth:1315},i:{x_min:67,x_max:590,y_min:0,y_max:1560,ha:1560,leftSideBearing:67,advanceWidth:652},j:{x_min:-56,x_max:381,y_min:-437,y_max:1560,ha:1997,leftSideBearing:-56,advanceWidth:525},k:{x_min:64,x_max:1248,y_min:0,y_max:1560,ha:1560,leftSideBearing:64,advanceWidth:1287},l:{x_min:64,x_max:587,y_min:0,y_max:1560,ha:1560,leftSideBearing:64,advanceWidth:653},m:{x_min:74,x_max:1905,y_min:0,y_max:1102,ha:1102,leftSideBearing:74,advanceWidth:1977},n:{x_min:74,x_max:1278,y_min:0,y_max:1102,ha:1102,leftSideBearing:74,advanceWidth:1343},o:{x_min:78,x_max:1046,y_min:-21,y_max:1102,ha:1123,leftSideBearing:78,advanceWidth:1124},p:{x_min:34,x_max:1119,y_min:-416,y_max:1102,ha:1518,leftSideBearing:34,advanceWidth:1197},q:{x_min:78,x_max:1135,y_min:-416,y_max:1102,ha:1518,leftSideBearing:78,advanceWidth:1139},r:{x_min:72,x_max:808,y_min:0,y_max:1102,ha:1102,leftSideBearing:72,advanceWidth:854},s:{x_min:104,x_max:933,y_min:-21,y_max:1102,ha:1123,leftSideBearing:104,advanceWidth:1022},t:{x_min:24,x_max:678,y_min:-17,y_max:1343,ha:1360,leftSideBearing:24,advanceWidth:730},u:{x_min:52,x_max:1181,y_min:-21,y_max:1082,ha:1103,leftSideBearing:52,advanceWidth:1245},v:{x_min:26,x_max:1176,y_min:0,y_max:1082,ha:1082,leftSideBearing:26,advanceWidth:1206},w:{x_min:52,x_max:1777,y_min:0,y_max:1082,ha:1082,leftSideBearing:52,advanceWidth:1823},x:{x_min:42,x_max:1163,y_min:0,y_max:1082,ha:1082,leftSideBearing:42,advanceWidth:1203},y:{x_min:24,x_max:1172,y_min:-437,y_max:1082,ha:1519,leftSideBearing:24,advanceWidth:1192},z:{x_min:88,x_max:960,y_min:0,y_max:1082,ha:1082,leftSideBearing:88,advanceWidth:1032},"{":{x_min:63,x_max:671,y_min:-364,y_max:1597,ha:1961,leftSideBearing:63,advanceWidth:701},"|":{x_min:150,x_max:307,y_min:-270,y_max:1456,ha:1726,leftSideBearing:150,advanceWidth:451},"}":{x_min:27,x_max:635,y_min:-364,y_max:1597,ha:1961,leftSideBearing:27,advanceWidth:701},"~":{x_min:121,x_max:1257,y_min:401,y_max:803,ha:402,leftSideBearing:121,advanceWidth:1386}},fontFamily:"Roboto Slab",resolution:2048,generatedOn:"2020-06-15T19:12:58.120Z"};class Li{static sortAndUnique(t,e,i){if(t.length>1){const s=[];let n;t.sort(e);for(let e=0;e {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Ron B. Yeh\n// MIT License\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Use instead of `instanceof` as a more flexible type guard.\n * @param obj check if this object's CATEGORY matches the provided category.\n * @param category a string representing a category of VexFlow objects.\n * @param checkAncestors defaults to `true`, so we walk up the prototype chain to look for a matching `CATEGORY`.\n * If `false`, we do not check the superclass or other ancestors.\n * @returns true if `obj` has a static `CATEGORY` property that matches `category`.\n */\nexport function isCategory(obj, category, checkAncestors = true) {\n // obj is undefined, a number, a primitive string, or null.\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n // `obj.constructor` is a reference to the constructor function that created the `obj` instance.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor\n let constructorFcn = obj.constructor;\n // Check if the object's static .CATEGORY matches the provided category.\n if (checkAncestors) {\n // Walk up the prototype chain to look for a matching obj.constructor.CATEGORY.\n while (obj !== null) {\n constructorFcn = obj.constructor;\n if ('CATEGORY' in constructorFcn && constructorFcn.CATEGORY === category) {\n return true;\n }\n obj = Object.getPrototypeOf(obj);\n }\n return false;\n }\n else {\n // Do not walk up the prototype chain. Just check this particular object's static .CATEGORY string.\n return 'CATEGORY' in constructorFcn && constructorFcn.CATEGORY === category;\n }\n}\nexport const isAccidental = (obj) => isCategory(obj, Category.Accidental);\nexport const isAnnotation = (obj) => isCategory(obj, Category.Annotation);\nexport const isBarline = (obj) => isCategory(obj, Category.Barline);\nexport const isDot = (obj) => isCategory(obj, Category.Dot);\nexport const isGraceNote = (obj) => isCategory(obj, Category.GraceNote);\nexport const isGraceNoteGroup = (obj) => isCategory(obj, Category.GraceNoteGroup);\nexport const isNote = (obj) => isCategory(obj, Category.Note);\nexport const isRenderContext = (obj) => isCategory(obj, Category.RenderContext);\nexport const isStaveNote = (obj) => isCategory(obj, Category.StaveNote);\nexport const isStemmableNote = (obj) => isCategory(obj, Category.StemmableNote);\nexport const isTabNote = (obj) => isCategory(obj, Category.TabNote);\n// 'const' enums are erased by the TypeScript compiler. The string values are inlined at all the use sites.\n// See: https://www.typescriptlang.org/docs/handbook/enums.html#const-enums\nexport var Category;\n(function (Category) {\n Category[\"Accidental\"] = \"Accidental\";\n Category[\"Annotation\"] = \"Annotation\";\n Category[\"Articulation\"] = \"Articulation\";\n Category[\"Barline\"] = \"Barline\";\n Category[\"BarNote\"] = \"BarNote\";\n Category[\"Beam\"] = \"Beam\";\n Category[\"Bend\"] = \"Bend\";\n Category[\"ChordSymbol\"] = \"ChordSymbol\";\n Category[\"Clef\"] = \"Clef\";\n Category[\"ClefNote\"] = \"ClefNote\";\n Category[\"Crescendo\"] = \"Crescendo\";\n Category[\"Curve\"] = \"Curve\";\n Category[\"Dot\"] = \"Dot\";\n Category[\"Element\"] = \"Element\";\n Category[\"Fraction\"] = \"Fraction\";\n Category[\"FretHandFinger\"] = \"FretHandFinger\";\n Category[\"GhostNote\"] = \"GhostNote\";\n Category[\"Glyph\"] = \"Glyph\";\n Category[\"GlyphNote\"] = \"GlyphNote\";\n Category[\"GraceNote\"] = \"GraceNote\";\n Category[\"GraceNoteGroup\"] = \"GraceNoteGroup\";\n Category[\"GraceTabNote\"] = \"GraceTabNote\";\n Category[\"KeySignature\"] = \"KeySignature\";\n Category[\"KeySigNote\"] = \"KeySigNote\";\n Category[\"Modifier\"] = \"Modifier\";\n Category[\"MultiMeasureRest\"] = \"MultiMeasureRest\";\n Category[\"Note\"] = \"Note\";\n Category[\"NoteHead\"] = \"NoteHead\";\n Category[\"NoteSubGroup\"] = \"NoteSubGroup\";\n Category[\"Ornament\"] = \"Ornament\";\n Category[\"Parenthesis\"] = \"Parenthesis\";\n Category[\"PedalMarking\"] = \"PedalMarking\";\n Category[\"RenderContext\"] = \"RenderContext\";\n Category[\"RepeatNote\"] = \"RepeatNote\";\n Category[\"Repetition\"] = \"Repetition\";\n Category[\"Stave\"] = \"Stave\";\n Category[\"StaveConnector\"] = \"StaveConnector\";\n Category[\"StaveHairpin\"] = \"StaveHairpin\";\n Category[\"StaveLine\"] = \"StaveLine\";\n Category[\"StaveModifier\"] = \"StaveModifier\";\n Category[\"StaveNote\"] = \"StaveNote\";\n Category[\"StaveSection\"] = \"StaveSection\";\n Category[\"StaveTempo\"] = \"StaveTempo\";\n Category[\"StaveText\"] = \"StaveText\";\n Category[\"StaveTie\"] = \"StaveTie\";\n Category[\"Stem\"] = \"Stem\";\n Category[\"StemmableNote\"] = \"StemmableNote\";\n Category[\"StringNumber\"] = \"StringNumber\";\n Category[\"Stroke\"] = \"Stroke\";\n Category[\"System\"] = \"System\";\n Category[\"TabNote\"] = \"TabNote\";\n Category[\"TabSlide\"] = \"TabSlide\";\n Category[\"TabStave\"] = \"TabStave\";\n Category[\"TabTie\"] = \"TabTie\";\n Category[\"TextBracket\"] = \"TextBracket\";\n Category[\"TextDynamics\"] = \"TextDynamics\";\n Category[\"TextNote\"] = \"TextNote\";\n Category[\"Tickable\"] = \"Tickable\";\n Category[\"TimeSignature\"] = \"TimeSignature\";\n Category[\"TimeSigNote\"] = \"TimeSigNote\";\n Category[\"Tremolo\"] = \"Tremolo\";\n Category[\"Tuplet\"] = \"Tuplet\";\n Category[\"Vibrato\"] = \"Vibrato\";\n Category[\"VibratoBracket\"] = \"VibratoBracket\";\n Category[\"Voice\"] = \"Voice\";\n Category[\"Volta\"] = \"Volta\";\n})(Category || (Category = {}));\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// Note: Keep this module free of imports to reduce the chance of circular dependencies.\n/** `RuntimeError` will be thrown by VexFlow classes in case of error. */\nexport class RuntimeError extends Error {\n constructor(code, message = '') {\n super('[RuntimeError] ' + code + ': ' + message);\n this.code = code;\n }\n}\n/** VexFlow can be used outside of the browser (e.g., Node) where `window` may not be defined. */\n// eslint-disable-next-line\nexport function globalObject() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return Function('return this')();\n}\n/**\n * Check that `x` is of type `T` and not `undefined`.\n * If `x` is `undefined`, throw a RuntimeError with the optionally provided error code and message.\n */\nexport function defined(x, code = 'undefined', message = '') {\n if (x === undefined) {\n throw new RuntimeError(code, message);\n }\n return x;\n}\n/** Default log function sends all arguments to console. */\n// eslint-disable-next-line\nexport function log(block, ...args) {\n if (!args)\n return;\n const line = Array.prototype.slice.call(args).join(' ');\n globalObject().console.log(block + ': ' + line);\n}\n/** Dump warning to console. */\n// eslint-disable-next-line\nexport function warn(...args) {\n const line = args.join(' ');\n const err = new Error();\n globalObject().console.log('Warning: ', line, err.stack);\n}\n/** Round number to nearest fractional value (`.5`, `.25`, etc.) */\nfunction roundN(x, n) {\n return x % n >= n / 2 ? parseInt(`${x / n}`, 10) * n + n : parseInt(`${x / n}`, 10) * n;\n}\n/** Locate the mid point between stave lines. Returns a fractional line if a space. */\nexport function midLine(a, b) {\n let mid_line = b + (a - b) / 2;\n if (mid_line % 2 > 0) {\n mid_line = roundN(mid_line * 10, 5) / 10;\n }\n return mid_line;\n}\n/**\n * Used by various classes (e.g., SVGContext) to provide a\n * unique prefix to element names (or other keys in shared namespaces).\n */\nexport function prefix(text) {\n return `vf-${text}`;\n}\n/**\n * Convert an arbitrary angle in radians to the equivalent one in the range [0, pi).\n */\nexport function normalizeAngle(a) {\n a = a % (2 * Math.PI);\n if (a < 0) {\n a += 2 * Math.PI;\n }\n return a;\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Author: Joshua Koo / @zz85\n// Author: @incompleteopus\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n/** Fraction represents a rational number. */\nexport class Fraction {\n /** Set the numerator and denominator. */\n constructor(numerator, denominator) {\n this.numerator = 1;\n this.denominator = 1;\n this.set(numerator, denominator);\n }\n static get CATEGORY() {\n return Category.Fraction;\n }\n /**\n * GCD: Greatest common divisor using the Euclidean algorithm.\n * Note: GCD(0, 0) => 0 and GCD(0, n) => n.\n */\n static GCD(a, b) {\n if (typeof a !== 'number' || Number.isNaN(a) || typeof b !== 'number' || Number.isNaN(b)) {\n throw new RuntimeError('BadArgument', `Invalid numbers: ${a}, ${b}`);\n }\n let t;\n while (b !== 0) {\n t = b;\n b = a % b;\n a = t;\n }\n return a;\n }\n /** LCM: Lowest common multiple. */\n static LCM(a, b) {\n return (a * b) / Fraction.GCD(a, b);\n }\n /** Lowest common multiple for more than two numbers. */\n static LCMM(args) {\n if (args.length === 0) {\n return 0;\n }\n else if (args.length === 1) {\n return args[0];\n }\n else if (args.length === 2) {\n return Fraction.LCM(args[0], args[1]);\n }\n else {\n // args.shift() removes the first number.\n // LCM the first number with the rest of the numbers.\n return Fraction.LCM(args.shift(), Fraction.LCMM(args));\n }\n }\n /** Set the numerator and denominator. */\n set(numerator = 1, denominator = 1) {\n this.numerator = numerator;\n this.denominator = denominator;\n return this;\n }\n /** Return the value of the fraction. */\n value() {\n return this.numerator / this.denominator;\n }\n /** Simplify numerator and denominator using GCD. */\n simplify() {\n let u = this.numerator;\n let d = this.denominator;\n const gcd = Fraction.GCD(u, d);\n u /= gcd;\n d /= gcd;\n if (d < 0) {\n d = -d;\n u = -u;\n }\n return this.set(u, d);\n }\n /** Add value of another fraction. */\n add(param1 = 0, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n const lcm = Fraction.LCM(this.denominator, otherDenominator);\n const a = lcm / this.denominator;\n const b = lcm / otherDenominator;\n const u = this.numerator * a + otherNumerator * b;\n return this.set(u, lcm);\n }\n /** Substract value of another fraction. */\n subtract(param1 = 0, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n const lcm = Fraction.LCM(this.denominator, otherDenominator);\n const a = lcm / this.denominator;\n const b = lcm / otherDenominator;\n const u = this.numerator * a - otherNumerator * b;\n return this.set(u, lcm);\n }\n /** Multiply by value of another fraction. */\n multiply(param1 = 1, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n return this.set(this.numerator * otherNumerator, this.denominator * otherDenominator);\n }\n /** Divide by value of another Fraction. */\n divide(param1 = 1, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n return this.set(this.numerator * otherDenominator, this.denominator * otherNumerator);\n }\n /** Simplify both sides and check if they are equal. */\n equals(compare) {\n const a = Fraction.__staticFractionA.copy(compare).simplify();\n const b = Fraction.__staticFractionB.copy(this).simplify();\n return a.numerator === b.numerator && a.denominator === b.denominator;\n }\n /** Greater than operator. */\n greaterThan(compare) {\n const a = Fraction.__staticFractionB.copy(this);\n a.subtract(compare);\n return a.numerator > 0;\n }\n /** Greater than or equals operator. */\n greaterThanEquals(compare) {\n const a = Fraction.__staticFractionB.copy(this);\n a.subtract(compare);\n return a.numerator >= 0;\n }\n /** Less than operator. */\n lessThan(compare) {\n return !this.greaterThanEquals(compare);\n }\n /** Less than or equals operator. */\n lessThanEquals(compare) {\n return !this.greaterThan(compare);\n }\n /** Return a new copy with current values. */\n clone() {\n return new Fraction(this.numerator, this.denominator);\n }\n /** Copy value of another fraction. */\n copy(other) {\n if (typeof other === 'number') {\n return this.set(other, 1);\n }\n else {\n return this.set(other.numerator, other.denominator);\n }\n }\n /** Return the integer component (eg. 5/2 => 2). */\n quotient() {\n return Math.floor(this.numerator / this.denominator);\n }\n /** Return the remainder component (eg. 5/2 => 1). */\n remainder() {\n return this.numerator % this.denominator;\n }\n /** Calculate absolute value. */\n makeAbs() {\n this.denominator = Math.abs(this.denominator);\n this.numerator = Math.abs(this.numerator);\n return this;\n }\n /** Return a raw string representation (eg. \"5/2\"). */\n toString() {\n return `${this.numerator}/${this.denominator}`;\n }\n /** Return a simplified string respresentation. */\n toSimplifiedString() {\n return Fraction.__staticFractionTmp.copy(this).simplify().toString();\n }\n /** Return string representation in mixed form. */\n toMixedString() {\n let s = '';\n const q = this.quotient();\n const f = Fraction.__staticFractionTmp.copy(this);\n if (q < 0) {\n f.makeAbs();\n }\n if (q !== 0) {\n s += q;\n if (f.numerator !== 0) {\n s += ` ${f.toSimplifiedString()}`;\n }\n }\n else if (f.numerator === 0) {\n s = '0';\n }\n else {\n s = f.toSimplifiedString();\n }\n return s;\n }\n /** Parse a fraction string. */\n parse(str) {\n const i = str.split('/');\n const n = parseInt(i[0], 10);\n const d = i[1] ? parseInt(i[1], 10) : 1;\n return this.set(n, d);\n }\n}\n// Cached objects for comparisons.\nFraction.__staticFractionA = new Fraction();\nFraction.__staticFractionB = new Fraction();\nFraction.__staticFractionTmp = new Fraction();\n/** Helper function to extract the numerator and denominator from another fraction. */\nfunction getNumeratorAndDenominator(n, d = 1) {\n if (typeof n === 'number') {\n // Both params are numbers, so we return them as [numerator, denominator].\n return [n, d];\n }\n else {\n // First param is a Fraction object. We ignore the second param.\n return [n.numerator, n.denominator];\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nexport class BoundingBox {\n constructor(x, y, w, h) {\n this.x = x;\n this.y = y;\n this.w = w;\n this.h = h;\n }\n /**\n * Create a new copy.\n */\n static copy(that) {\n return new BoundingBox(that.x, that.y, that.w, that.h);\n }\n /** Get x position. */\n getX() {\n return this.x;\n }\n /** Get y position. */\n getY() {\n return this.y;\n }\n /** Get width. */\n getW() {\n return this.w;\n }\n /** Get height. */\n getH() {\n return this.h;\n }\n /** Set x position. */\n setX(x) {\n this.x = x;\n return this;\n }\n /** Set y position. */\n setY(y) {\n this.y = y;\n return this;\n }\n /** Set width. */\n setW(w) {\n this.w = w;\n return this;\n }\n /** Set height. */\n setH(h) {\n this.h = h;\n return this;\n }\n /** Move to position. */\n move(x, y) {\n this.x += x;\n this.y += y;\n return this;\n }\n /** Clone. */\n clone() {\n return BoundingBox.copy(this);\n }\n /**\n * Merge my box with given box. Creates a bigger bounding box unless\n * the given box is contained in this one.\n */\n mergeWith(boundingBox) {\n const that = boundingBox;\n const new_x = this.x < that.x ? this.x : that.x;\n const new_y = this.y < that.y ? this.y : that.y;\n const new_w = Math.max(this.x + this.w, that.x + that.w) - new_x;\n const new_h = Math.max(this.y + this.h, that.y + that.h) - new_y;\n this.x = new_x;\n this.y = new_y;\n this.w = new_w;\n this.h = new_h;\n return this;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n/**\n * BoundingBoxComputation computes metrics for a bounding box by continuously\n * taking canvas path commands.\n *\n * Warning: This class is merely a crutch to get bounding box information without\n * explicit metadata. This is likely to get deprecated following SMuFL support.\n *\n * based on: https://github.com/canvg/canvg/blob/master/src/BoundingBox.ts (MIT License)\n */\nexport class BoundingBoxComputation {\n constructor() {\n this.x1 = Number.NaN;\n this.y1 = Number.NaN;\n this.x2 = Number.NaN;\n this.y2 = Number.NaN;\n }\n /** Get calculated X1. */\n getX1() {\n return this.x1;\n }\n /** Get calculated Y1. */\n getY1() {\n return this.y1;\n }\n /** Get calculated width. */\n width() {\n return this.x2 - this.x1;\n }\n /** Get calculated height. */\n height() {\n return this.y2 - this.y1;\n }\n /** Add point to BoundingBox. */\n addPoint(x, y) {\n if (isNaN(this.x1) || x < this.x1)\n this.x1 = x;\n if (isNaN(this.x2) || x > this.x2)\n this.x2 = x;\n if (isNaN(this.y1) || y < this.y1)\n this.y1 = y;\n if (isNaN(this.y2) || y > this.y2)\n this.y2 = y;\n }\n /** Add X to BoundingBox. */\n addX(x) {\n this.addPoint(x, this.y1);\n }\n /** Add Y to BoundingBox. */\n addY(y) {\n this.addPoint(this.x1, y);\n }\n /** Add quadratic curve to BoundingBox. */\n addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {\n this.addPoint(p0x, p0y);\n this.addPoint(p2x, p2y);\n const p01x = p1x - p0x;\n const p12x = p2x - p1x;\n let denom = p01x - p12x;\n if (denom != 0) {\n const t = p01x / denom;\n if (t > 0 && t < 1) {\n const it = 1 - t;\n this.addX(it * it * p0x + 2 * it * t * p1x + t * t * p2x);\n }\n }\n const p01y = p1y - p0y;\n const p12y = p2y - p1y;\n denom = p01y - p12y;\n if (denom != 0) {\n const t = p01y / denom;\n if (t > 0 && t < 1) {\n const it = 1 - t;\n this.addY(it * it * p0y + 2 * it * t * p1y + t * t * p2y);\n }\n }\n }\n /** Add bezier curve to BoundingBox. */\n addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\n // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n const p0 = [p0x, p0y];\n const p1 = [p1x, p1y];\n const p2 = [p2x, p2y];\n const p3 = [p3x, p3y];\n let i;\n this.addPoint(p0[0], p0[1]);\n this.addPoint(p3[0], p3[1]);\n const f = (t, i) => Math.pow(1 - t, 3) * p0[i] +\n 3 * Math.pow(1 - t, 2) * t * p1[i] +\n 3 * (1 - t) * Math.pow(t, 2) * p2[i] +\n Math.pow(t, 3) * p3[i];\n for (i = 0; i <= 1; i++) {\n const b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n const a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n const c = 3 * p1[i] - 3 * p0[i];\n if (a === 0) {\n if (b === 0)\n continue;\n const t = -c / b;\n if (0 < t && t < 1) {\n if (i === 0)\n this.addX(f(t, i));\n if (i === 1)\n this.addY(f(t, i));\n }\n continue;\n }\n const b2ac = Math.pow(b, 2) - 4 * c * a;\n if (b2ac < 0)\n continue;\n const t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n if (0 < t1 && t1 < 1) {\n if (i === 0)\n this.addX(f(t1, i));\n if (i === 1)\n this.addY(f(t1, i));\n }\n const t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n if (0 < t2 && t2 < 1) {\n if (i === 0)\n this.addX(f(t2, i));\n if (i === 1)\n this.addY(f(t2, i));\n }\n }\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { defined } from './util';\nexport var FontWeight;\n(function (FontWeight) {\n FontWeight[\"NORMAL\"] = \"normal\";\n FontWeight[\"BOLD\"] = \"bold\";\n})(FontWeight || (FontWeight = {}));\nexport var FontStyle;\n(function (FontStyle) {\n FontStyle[\"NORMAL\"] = \"normal\";\n FontStyle[\"ITALIC\"] = \"italic\";\n})(FontStyle || (FontStyle = {}));\n// Internal element for parsing CSS font shorthand strings.\nlet fontParser;\nconst Fonts = {};\nexport class Font {\n /**\n * Use `Font.load(fontName)` to get a Font object.\n * Do not call this constructor directly.\n */\n constructor(fontName) {\n this.name = fontName;\n }\n /**\n * @param fontSize a font size to convert. Can be specified as a CSS length string (e.g., '16pt', '1em')\n * or as a number (the unit is assumed to be 'pt'). See `Font.scaleToPxFrom` for the supported\n * units (e.g., pt, em, %).\n * @returns the number of pixels that is equivalent to `fontSize`\n */\n static convertSizeToPixelValue(fontSize = Font.SIZE) {\n var _a;\n if (typeof fontSize === 'number') {\n // Assume the numeric fontSize is specified in pt.\n return fontSize * Font.scaleToPxFrom.pt;\n }\n else {\n const value = parseFloat(fontSize);\n if (isNaN(value)) {\n return 0;\n }\n const unit = fontSize.replace(/[\\d.\\s]/g, '').toLowerCase(); // Extract the unit by removing all numbers, dots, spaces.\n const conversionFactor = (_a = Font.scaleToPxFrom[unit]) !== null && _a !== void 0 ? _a : 1;\n return value * conversionFactor;\n }\n }\n /**\n * @param fontSize a font size to convert. Can be specified as a CSS length string (e.g., '16pt', '1em')\n * or as a number (the unit is assumed to be 'pt'). See `Font.scaleToPxFrom` for the supported\n * units (e.g., pt, em, %).\n * @returns the number of points that is equivalent to `fontSize`\n */\n static convertSizeToPointValue(fontSize = Font.SIZE) {\n var _a;\n if (typeof fontSize === 'number') {\n // Assume the numeric fontSize is specified in pt.\n return fontSize;\n }\n else {\n const value = parseFloat(fontSize);\n if (isNaN(value)) {\n return 0;\n }\n const unit = fontSize.replace(/[\\d.\\s]/g, '').toLowerCase(); // Extract the unit by removing all numbers, dots, spaces.\n const conversionFactor = ((_a = Font.scaleToPxFrom[unit]) !== null && _a !== void 0 ? _a : 1) / Font.scaleToPxFrom.pt;\n return value * conversionFactor;\n }\n }\n /**\n * @param f\n * @param size\n * @param weight\n * @param style\n * @returns the `size` field will include the units (e.g., '12pt', '16px').\n */\n static validate(f, size, weight, style) {\n // If f is a string but all other arguments are undefined, we assume that\n // f is CSS font shorthand (e.g., 'italic bold 10pt Arial').\n if (typeof f === 'string' && size === undefined && weight === undefined && style === undefined) {\n return Font.fromCSSString(f);\n }\n let family;\n if (typeof f === 'object') {\n // f is a FontInfo object, so we extract its fields.\n family = f.family;\n size = f.size;\n weight = f.weight;\n style = f.style;\n }\n else {\n // f is a string representing the font family name or undefined.\n family = f;\n }\n family = family !== null && family !== void 0 ? family : Font.SANS_SERIF;\n size = size !== null && size !== void 0 ? size : Font.SIZE + 'pt';\n weight = weight !== null && weight !== void 0 ? weight : FontWeight.NORMAL;\n style = style !== null && style !== void 0 ? style : FontStyle.NORMAL;\n if (weight === '') {\n weight = FontWeight.NORMAL;\n }\n if (style === '') {\n style = FontStyle.NORMAL;\n }\n // If size is a number, we assume the unit is `pt`.\n if (typeof size === 'number') {\n size = `${size}pt`;\n }\n // If weight is a number (e.g., 900), turn it into a string representation of that number.\n if (typeof weight === 'number') {\n weight = weight.toString();\n }\n // At this point, `family`, `size`, `weight`, and `style` are all strings.\n return { family, size, weight, style };\n }\n /**\n * @param cssFontShorthand a string formatted as CSS font shorthand (e.g., 'italic bold 15pt Arial').\n */\n static fromCSSString(cssFontShorthand) {\n // Let the browser parse this string for us.\n // First, create a span element.\n // Then, set its style.font and extract it back out.\n if (!fontParser) {\n fontParser = document.createElement('span');\n }\n fontParser.style.font = cssFontShorthand;\n const { fontFamily, fontSize, fontWeight, fontStyle } = fontParser.style;\n return { family: fontFamily, size: fontSize, weight: fontWeight, style: fontStyle };\n }\n /**\n * @returns a CSS font shorthand string of the form `italic bold 16pt Arial`.\n */\n static toCSSString(fontInfo) {\n var _a;\n if (!fontInfo) {\n return '';\n }\n let style;\n const st = fontInfo.style;\n if (st === FontStyle.NORMAL || st === '' || st === undefined) {\n style = ''; // no space! Omit the style section.\n }\n else {\n style = st.trim() + ' ';\n }\n let weight;\n const wt = fontInfo.weight;\n if (wt === FontWeight.NORMAL || wt === '' || wt === undefined) {\n weight = ''; // no space! Omit the weight section.\n }\n else if (typeof wt === 'number') {\n weight = wt + ' ';\n }\n else {\n weight = wt.trim() + ' ';\n }\n let size;\n const sz = fontInfo.size;\n if (sz === undefined) {\n size = Font.SIZE + 'pt ';\n }\n else if (typeof sz === 'number') {\n size = sz + 'pt ';\n }\n else {\n // size is already a string.\n size = sz.trim() + ' ';\n }\n const family = (_a = fontInfo.family) !== null && _a !== void 0 ? _a : Font.SANS_SERIF;\n return `${style}${weight}${size}${family}`;\n }\n /**\n * @param fontSize a number representing a font size, or a string font size with units.\n * @param scaleFactor multiply the size by this factor.\n * @returns size * scaleFactor (e.g., 16pt * 3 = 48pt, 8px * 0.5 = 4px, 24 * 2 = 48).\n * If the fontSize argument was a number, the return value will be a number.\n * If the fontSize argument was a string, the return value will be a string.\n */\n static scaleSize(fontSize, scaleFactor) {\n if (typeof fontSize === 'number') {\n return (fontSize * scaleFactor);\n }\n else {\n const value = parseFloat(fontSize);\n const unit = fontSize.replace(/[\\d.\\s]/g, ''); // Remove all numbers, dots, spaces.\n return `${value * scaleFactor}${unit}`;\n }\n }\n /**\n * @param weight a string (e.g., 'bold') or a number (e.g., 600 / semi-bold in the OpenType spec).\n * @returns true if the font weight indicates bold.\n */\n static isBold(weight) {\n if (!weight) {\n return false;\n }\n else if (typeof weight === 'number') {\n return weight >= 600;\n }\n else {\n // a string can be 'bold' or '700'\n const parsedWeight = parseInt(weight, 10);\n if (isNaN(parsedWeight)) {\n return weight.toLowerCase() === 'bold';\n }\n else {\n return parsedWeight >= 600;\n }\n }\n }\n /**\n * @param style\n * @returns true if the font style indicates 'italic'.\n */\n static isItalic(style) {\n if (!style) {\n return false;\n }\n else {\n return style.toLowerCase() === FontStyle.ITALIC;\n }\n }\n /**\n * @param fontName\n * @param woffURL The absolute or relative URL to the woff file.\n * @param includeWoff2 If true, we assume that a woff2 file is in\n * the same folder as the woff file, and will append a `2` to the url.\n */\n // Support distributions of the typescript compiler that do not yet include the FontFace API declarations.\n // eslint-disable-next-line\n // @ts-ignore\n static loadWebFont(fontName, woffURL, includeWoff2 = true) {\n return __awaiter(this, void 0, void 0, function* () {\n const woff2URL = includeWoff2 ? `url(${woffURL}2) format('woff2'), ` : '';\n const woff1URL = `url(${woffURL}) format('woff')`;\n const woffURLs = woff2URL + woff1URL;\n // eslint-disable-next-line\n // @ts-ignore\n const fontFace = new FontFace(fontName, woffURLs);\n yield fontFace.load();\n // eslint-disable-next-line\n // @ts-ignore\n document.fonts.add(fontFace);\n return fontFace;\n });\n }\n /**\n * Load the web fonts that are used by ChordSymbol. For example, `flow.html` calls:\n * `await Vex.Flow.Font.loadWebFonts();`\n * Alternatively, you may load web fonts with a stylesheet link (e.g., from Google Fonts),\n * and a @font-face { font-family: ... } rule in your CSS.\n * If you do not load either of these fonts, ChordSymbol will fall back to Times or Arial,\n * depending on the current music engraving font.\n *\n * You can customize `Font.WEB_FONT_HOST` and `Font.WEB_FONT_FILES` to load different fonts\n * for your app.\n */\n static loadWebFonts() {\n return __awaiter(this, void 0, void 0, function* () {\n const host = Font.WEB_FONT_HOST;\n const files = Font.WEB_FONT_FILES;\n for (const fontName in files) {\n const fontPath = files[fontName];\n Font.loadWebFont(fontName, host + fontPath);\n }\n });\n }\n /**\n * @param fontName\n * @param data optionally set the Font object's `.data` property.\n * This is usually done when setting up a font for the first time.\n * @param metrics optionally set the Font object's `.metrics` property.\n * This is usually done when setting up a font for the first time.\n * @returns a Font object with the given `fontName`.\n * Reuse an existing Font object if a matching one is found.\n */\n static load(fontName, data, metrics) {\n let font = Fonts[fontName];\n if (!font) {\n font = new Font(fontName);\n Fonts[fontName] = font;\n }\n if (data) {\n font.setData(data);\n }\n if (metrics) {\n font.setMetrics(metrics);\n }\n return font;\n }\n getName() {\n return this.name;\n }\n getData() {\n return defined(this.data, 'FontError', 'Missing font data');\n }\n getMetrics() {\n return defined(this.metrics, 'FontError', 'Missing metrics');\n }\n setData(data) {\n this.data = data;\n }\n setMetrics(metrics) {\n this.metrics = metrics;\n }\n hasData() {\n return this.data !== undefined;\n }\n getResolution() {\n return this.getData().resolution;\n }\n getGlyphs() {\n return this.getData().glyphs;\n }\n /**\n * Use the provided key to look up a value in this font's metrics file (e.g., bravura_metrics.ts, petaluma_metrics.ts).\n * @param key is a string separated by periods (e.g., stave.endPaddingMax, clef.lineCount.'5'.shiftY).\n * @param defaultValue is returned if the lookup fails.\n * @returns the retrieved value (or `defaultValue` if the lookup fails).\n */\n // eslint-disable-next-line\n lookupMetric(key, defaultValue) {\n const keyParts = key.split('.');\n // Start with the top level font metrics object, and keep looking deeper into the object (via each part of the period-delimited key).\n let currObj = this.getMetrics();\n for (let i = 0; i < keyParts.length; i++) {\n const keyPart = keyParts[i];\n const value = currObj[keyPart];\n if (value === undefined) {\n // If the key lookup fails, we fall back to the defaultValue.\n return defaultValue;\n }\n // The most recent lookup succeeded, so we drill deeper into the object.\n currObj = value;\n }\n // After checking every part of the key (i.e., the loop completed), return the most recently retrieved value.\n return currObj;\n }\n /** For debugging. */\n toString() {\n return '[' + this.name + ' Font]';\n }\n}\n//////////////////////////////////////////////////////////////////////////////////////////////////\n// STATIC MEMBERS\n/** Default sans-serif font family. */\nFont.SANS_SERIF = 'Arial, sans-serif';\n/** Default serif font family. */\nFont.SERIF = 'Times New Roman, serif';\n/** Default font size in `pt`. */\nFont.SIZE = 10;\n// CSS Font Sizes: 36pt == 48px == 3em == 300% == 0.5in\n/** Given a length (for units: pt, px, em, %, in, mm, cm) what is the scale factor to convert it to px? */\nFont.scaleToPxFrom = {\n pt: 4 / 3,\n px: 1,\n em: 16,\n '%': 4 / 25,\n in: 96,\n mm: 96 / 25.4,\n cm: 96 / 2.54,\n};\n/**\n * Customize this field to specify a different CDN for delivering web fonts.\n * Alternative: https://cdn.jsdelivr.net/npm/vexflow-fonts@1.0.3/\n * Or you can use your own host.\n */\nFont.WEB_FONT_HOST = 'https://unpkg.com/vexflow-fonts@1.0.3/';\n/**\n * These font files will be loaded from the CDN specified by `Font.WEB_FONT_HOST` when\n * `await Font.loadWebFonts()` is called. Customize this field to specify a different\n * set of fonts to load. See: `Font.loadWebFonts()`.\n */\nFont.WEB_FONT_FILES = {\n 'Roboto Slab': 'robotoslab/RobotoSlab-Medium_2.001.woff',\n PetalumaScript: 'petaluma/PetalumaScript_1.10_FS.woff',\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n//\n// ## Description\n//\n// This file implements a registry for VexFlow elements. It allows users\n// to track, query, and manage some subset of generated elements, and\n// dynamically get and set attributes.\n//\n// There are two ways to register with a registry:\n//\n// 1) Explicitly call `registry.register(elem:Element, id?:string)`, or,\n// 2) Call `Registry.enableDefaultRegistry(registry)` when ready, and all future\n// elements will automatically register with it.\n//\n// Once an element is registered, selected attributes are tracked and indexed by\n// the registry. This allows fast look up of elements by attributes like id, type,\n// and class.\nimport { RuntimeError } from './util';\n// Indexes are represented as maps of maps of maps. This allows\n// for both multi-labeling (e.g., an element can have multiple classes)\n// and efficient lookup.\nclass Index {\n constructor() {\n this.id = {};\n this.type = {};\n this.class = {};\n }\n}\nexport class Registry {\n constructor() {\n this.index = new Index();\n }\n static getDefaultRegistry() {\n return Registry.defaultRegistry;\n }\n // If you call `enableDefaultRegistry`, any new elements will auto-register with\n // the provided registry as soon as they're constructed.\n static enableDefaultRegistry(registry) {\n Registry.defaultRegistry = registry;\n }\n static disableDefaultRegistry() {\n Registry.defaultRegistry = undefined;\n }\n clear() {\n this.index = new Index();\n return this;\n }\n setIndexValue(name, value, id, elem) {\n const index = this.index;\n if (!index[name][value]) {\n index[name][value] = {};\n }\n index[name][value][id] = elem;\n }\n // Updates the indexes for element 'id'. If an element's attribute changes\n // from A -> B, make sure to remove the element from A.\n updateIndex({ id, name, value, oldValue }) {\n const elem = this.getElementById(id);\n if (oldValue !== undefined && this.index[name][oldValue]) {\n delete this.index[name][oldValue][id];\n }\n if (value && elem) {\n this.setIndexValue(name, value, elem.getAttribute('id'), elem);\n }\n }\n /**\n * Register element `elem` with this registry.\n * This adds the element to its index and watches it for attribute changes.\n * @param elem\n * @param id\n * @returns this\n */\n register(elem, id) {\n id = id || elem.getAttribute('id');\n if (!id) {\n throw new RuntimeError(\"Can't add element without `id` attribute to registry\");\n }\n // Manually add id to index, then update other indexes.\n elem.setAttribute('id', id);\n this.setIndexValue('id', id, id, elem);\n this.updateIndex({ id, name: 'type', value: elem.getAttribute('type'), oldValue: undefined });\n elem.onRegister(this);\n return this;\n }\n getElementById(id) {\n var _a, _b;\n return (_b = (_a = this.index.id) === null || _a === void 0 ? void 0 : _a[id]) === null || _b === void 0 ? void 0 : _b[id]; // return undefined if the id is not found.\n }\n getElementsByAttribute(attribute, value) {\n const index_attr = this.index[attribute];\n if (index_attr) {\n const index_attr_val = index_attr[value];\n if (index_attr_val) {\n const keys = Object.keys(index_attr_val);\n return keys.map((k) => index_attr_val[k]);\n }\n }\n return [];\n }\n getElementsByType(type) {\n return this.getElementsByAttribute('type', type);\n }\n getElementsByClass(className) {\n return this.getElementsByAttribute('class', className);\n }\n // This is called by the element when an attribute value changes. If an indexed\n // attribute changes, then update the local index.\n onUpdate(info) {\n const allowedNames = ['id', 'type', 'class'];\n if (allowedNames.includes(info.name)) {\n this.updateIndex(info);\n }\n return this;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Registry } from './registry';\nimport { Category } from './typeguard';\nimport { defined, prefix } from './util';\n/**\n * Element implements a generic base class for VexFlow, with implementations\n * of general functions and properties that can be inherited by all VexFlow elements.\n */\nexport class Element {\n constructor() {\n var _a;\n this.children = [];\n this.attrs = {\n id: Element.newID(),\n el: undefined,\n type: this.getCategory(),\n classes: {},\n };\n this.rendered = false;\n // If a default registry exist, then register with it right away.\n (_a = Registry.getDefaultRegistry()) === null || _a === void 0 ? void 0 : _a.register(this);\n }\n static get CATEGORY() {\n return Category.Element;\n }\n static newID() {\n return `auto${Element.ID++}`;\n }\n addChildElement(child) {\n this.children.push(child);\n return this;\n }\n getCategory() {\n return this.constructor.CATEGORY;\n }\n /**\n * Set the element style used to render.\n *\n * Example:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.draw();\n * ```\n * Note: If the element draws additional sub-elements (ie.: Modifiers in a Stave),\n * the style can be applied to all of them by means of the context:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.getContext().setFillStyle('red');\n * element.getContext().setStrokeStyle('red');\n * element.draw();\n * ```\n * or using drawWithStyle:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.drawWithStyle();\n * ```\n */\n setStyle(style) {\n this.style = style;\n return this;\n }\n /** Set the element & associated children style used for rendering. */\n setGroupStyle(style) {\n this.style = style;\n this.children.forEach((child) => child.setGroupStyle(style));\n return this;\n }\n /** Get the element style used for rendering. */\n getStyle() {\n return this.style;\n }\n /** Apply the element style to `context`. */\n applyStyle(context = this.context, style = this.getStyle()) {\n if (!style)\n return this;\n if (!context)\n return this;\n context.save();\n if (style.shadowColor)\n context.setShadowColor(style.shadowColor);\n if (style.shadowBlur)\n context.setShadowBlur(style.shadowBlur);\n if (style.fillStyle)\n context.setFillStyle(style.fillStyle);\n if (style.strokeStyle)\n context.setStrokeStyle(style.strokeStyle);\n if (style.lineWidth)\n context.setLineWidth(style.lineWidth);\n return this;\n }\n /** Restore the style of `context`. */\n restoreStyle(context = this.context, style = this.getStyle()) {\n if (!style)\n return this;\n if (!context)\n return this;\n context.restore();\n return this;\n }\n /**\n * Draw the element and all its sub-elements (ie.: Modifiers in a Stave)\n * with the element style.\n */\n drawWithStyle() {\n this.checkContext();\n this.applyStyle();\n this.draw();\n this.restoreStyle();\n }\n /** Check if it has a class label (An element can have multiple class labels). */\n hasClass(className) {\n return this.attrs.classes[className] === true;\n }\n /** Add a class label (An element can have multiple class labels). */\n addClass(className) {\n var _a;\n this.attrs.classes[className] = true;\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({\n id: this.attrs.id,\n name: 'class',\n value: className,\n oldValue: undefined,\n });\n return this;\n }\n /** Remove a class label (An element can have multiple class labels). */\n removeClass(className) {\n var _a;\n delete this.attrs.classes[className];\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({\n id: this.attrs.id,\n name: 'class',\n value: undefined,\n oldValue: className,\n });\n return this;\n }\n /** Call back from registry after the element is registered. */\n onRegister(registry) {\n this.registry = registry;\n return this;\n }\n /** Return the rendered status. */\n isRendered() {\n return this.rendered;\n }\n /** Set the rendered status. */\n setRendered(rendered = true) {\n this.rendered = rendered;\n return this;\n }\n /** Return the element attributes. */\n getAttributes() {\n return this.attrs;\n }\n /** Return an attribute. */\n // eslint-disable-next-line\n getAttribute(name) {\n return this.attrs[name];\n }\n /** Return associated SVGElement. */\n getSVGElement(suffix = '') {\n const id = prefix(this.attrs.id + suffix);\n const element = document.getElementById(id);\n if (element)\n return element;\n }\n /** Set an attribute. */\n // eslint-disable-next-line\n setAttribute(name, value) {\n var _a;\n const oldID = this.attrs.id;\n const oldValue = this.attrs[name];\n this.attrs[name] = value;\n // Register with old id to support id changes.\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({ id: oldID, name, value, oldValue });\n return this;\n }\n /** Get the boundingBox. */\n getBoundingBox() {\n return this.boundingBox;\n }\n /** Return the context. */\n getContext() {\n return this.context;\n }\n /** Set the context. */\n setContext(context) {\n this.context = context;\n return this;\n }\n /** Validate and return the context. */\n checkContext() {\n return defined(this.context, 'NoContext', 'No rendering context attached to instance.');\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // Font Handling\n /**\n * Provide a CSS compatible font string (e.g., 'bold 16px Arial').\n */\n set font(f) {\n this.setFont(f);\n }\n /** Returns the CSS compatible font string. */\n get font() {\n return Font.toCSSString(this.textFont);\n }\n /**\n * Set the element's font family, size, weight, style (e.g., `Arial`, `10pt`, `bold`, `italic`).\n * @param font is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (at least one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n * If no arguments are provided, then the font is set to the default font.\n * Each Element subclass may specify its own default by overriding the static `TEXT_FONT` property.\n */\n setFont(font, size, weight, style) {\n // Allow subclasses to override `TEXT_FONT`.\n const defaultTextFont = this.constructor.TEXT_FONT;\n const fontIsObject = typeof font === 'object';\n const fontIsString = typeof font === 'string';\n const fontIsUndefined = font === undefined;\n const sizeWeightStyleAreUndefined = size === undefined && weight === undefined && style === undefined;\n if (fontIsObject) {\n // `font` is case 1) a FontInfo object\n this.textFont = Object.assign(Object.assign({}, defaultTextFont), font);\n }\n else if (fontIsString && sizeWeightStyleAreUndefined) {\n // `font` is case 2) CSS font shorthand.\n this.textFont = Font.fromCSSString(font);\n }\n else if (fontIsUndefined && sizeWeightStyleAreUndefined) {\n // All arguments are undefined. Do not check for `arguments.length === 0`,\n // which fails on the edge case: `setFont(undefined)`.\n // TODO: See if we can remove this case entirely without introducing a visual diff.\n // The else case below seems like it should be equivalent to this case.\n this.textFont = Object.assign({}, defaultTextFont);\n }\n else {\n // `font` is case 3) a font family string (e.g., 'Times New Roman').\n // The other parameters represent the size, weight, and style.\n // It is okay for `font` to be undefined while one or more of the other arguments is provided.\n // Following CSS conventions, unspecified params are reset to the default.\n this.textFont = Font.validate(font !== null && font !== void 0 ? font : defaultTextFont.family, size !== null && size !== void 0 ? size : defaultTextFont.size, weight !== null && weight !== void 0 ? weight : defaultTextFont.weight, style !== null && style !== void 0 ? style : defaultTextFont.style);\n }\n return this;\n }\n getFont() {\n if (!this.textFont) {\n this.resetFont();\n }\n return Font.toCSSString(this.textFont);\n }\n /**\n * Reset the text font to the style indicated by the static `TEXT_FONT` property.\n * Subclasses can call this to initialize `textFont` for the first time.\n */\n resetFont() {\n this.setFont();\n }\n /** Return a copy of the current FontInfo object. */\n get fontInfo() {\n if (!this.textFont) {\n this.resetFont();\n }\n // We can cast to Required here, because\n // we just called resetFont() above to ensure this.textFont is set.\n return Object.assign({}, this.textFont);\n }\n set fontInfo(fontInfo) {\n this.setFont(fontInfo);\n }\n /** Change the font size, while keeping everything else the same. */\n setFontSize(size) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, size, fontInfo.weight, fontInfo.style);\n return this;\n }\n /**\n * @returns a CSS font-size string (e.g., '18pt', '12px', '1em').\n * See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.\n */\n getFontSize() {\n return this.fontSize;\n }\n /**\n * The size is 1) a string of the form '10pt' or '16px', compatible with the CSS font-size property.\n * or 2) a number, which is interpreted as a point size (i.e. 12 == '12pt').\n */\n set fontSize(size) {\n this.setFontSize(size);\n }\n /**\n * @returns a CSS font-size string (e.g., '18pt', '12px', '1em').\n */\n get fontSize() {\n let size = this.fontInfo.size;\n if (typeof size === 'number') {\n size = `${size}pt`;\n }\n return size;\n }\n /**\n * @returns the font size in `pt`.\n */\n get fontSizeInPoints() {\n return Font.convertSizeToPointValue(this.fontSize);\n }\n /**\n * @returns the font size in `px`.\n */\n get fontSizeInPixels() {\n return Font.convertSizeToPixelValue(this.fontSize);\n }\n /**\n * @returns a CSS font-style string (e.g., 'italic').\n */\n get fontStyle() {\n return this.fontInfo.style;\n }\n set fontStyle(style) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, fontInfo.size, fontInfo.weight, style);\n }\n /**\n * @returns a CSS font-weight string (e.g., 'bold').\n * As in CSS, font-weight is always returned as a string, even if it was set as a number.\n */\n get fontWeight() {\n return this.fontInfo.weight + '';\n }\n set fontWeight(weight) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, fontInfo.size, weight, fontInfo.style);\n }\n}\nElement.ID = 1000;\n/**\n * Default font for text. This is not related to music engraving. Instead, see `Flow.setMusicFont(...fontNames)`\n * to customize the font for musical symbols placed on the score.\n */\nElement.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: Font.SIZE,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Fraction } from './fraction';\nimport { Glyph } from './glyph';\nimport { RuntimeError } from './util';\nconst RESOLUTION = 16384;\n/**\n * Map duration numbers to 'ticks', the unit of duration used throughout VexFlow.\n * For example, a quarter note is 4, so it maps to RESOLUTION / 4 = 4096 ticks.\n */\nconst durations = {\n '1/2': RESOLUTION * 2,\n 1: RESOLUTION / 1,\n 2: RESOLUTION / 2,\n 4: RESOLUTION / 4,\n 8: RESOLUTION / 8,\n 16: RESOLUTION / 16,\n 32: RESOLUTION / 32,\n 64: RESOLUTION / 64,\n 128: RESOLUTION / 128,\n 256: RESOLUTION / 256,\n};\nconst durationAliases = {\n w: '1',\n h: '2',\n q: '4',\n // This is the default duration used to render bars (BarNote). Bars no longer\n // consume ticks, so this should be a no-op.\n // TODO(0xfe): This needs to be cleaned up.\n b: '256',\n};\nconst keySignatures = {\n C: { num: 0 },\n Am: { num: 0 },\n F: { acc: 'b', num: 1 },\n Dm: { acc: 'b', num: 1 },\n Bb: { acc: 'b', num: 2 },\n Gm: { acc: 'b', num: 2 },\n Eb: { acc: 'b', num: 3 },\n Cm: { acc: 'b', num: 3 },\n Ab: { acc: 'b', num: 4 },\n Fm: { acc: 'b', num: 4 },\n Db: { acc: 'b', num: 5 },\n Bbm: { acc: 'b', num: 5 },\n Gb: { acc: 'b', num: 6 },\n Ebm: { acc: 'b', num: 6 },\n Cb: { acc: 'b', num: 7 },\n Abm: { acc: 'b', num: 7 },\n G: { acc: '#', num: 1 },\n Em: { acc: '#', num: 1 },\n D: { acc: '#', num: 2 },\n Bm: { acc: '#', num: 2 },\n A: { acc: '#', num: 3 },\n 'F#m': { acc: '#', num: 3 },\n E: { acc: '#', num: 4 },\n 'C#m': { acc: '#', num: 4 },\n B: { acc: '#', num: 5 },\n 'G#m': { acc: '#', num: 5 },\n 'F#': { acc: '#', num: 6 },\n 'D#m': { acc: '#', num: 6 },\n 'C#': { acc: '#', num: 7 },\n 'A#m': { acc: '#', num: 7 },\n};\nconst clefs = {\n treble: { line_shift: 0 },\n bass: { line_shift: 6 },\n tenor: { line_shift: 4 },\n alto: { line_shift: 3 },\n soprano: { line_shift: 1 },\n percussion: { line_shift: 0 },\n 'mezzo-soprano': { line_shift: 2 },\n 'baritone-c': { line_shift: 5 },\n 'baritone-f': { line_shift: 5 },\n subbass: { line_shift: 7 },\n french: { line_shift: -1 },\n};\nconst notesInfo = {\n C: { index: 0, int_val: 0 },\n CN: { index: 0, int_val: 0, accidental: 'n' },\n 'C#': { index: 0, int_val: 1, accidental: '#' },\n 'C##': { index: 0, int_val: 2, accidental: '##' },\n CB: { index: 0, int_val: 11, accidental: 'b' },\n CBB: { index: 0, int_val: 10, accidental: 'bb' },\n D: { index: 1, int_val: 2 },\n DN: { index: 1, int_val: 2, accidental: 'n' },\n 'D#': { index: 1, int_val: 3, accidental: '#' },\n 'D##': { index: 1, int_val: 4, accidental: '##' },\n DB: { index: 1, int_val: 1, accidental: 'b' },\n DBB: { index: 1, int_val: 0, accidental: 'bb' },\n E: { index: 2, int_val: 4 },\n EN: { index: 2, int_val: 4, accidental: 'n' },\n 'E#': { index: 2, int_val: 5, accidental: '#' },\n 'E##': { index: 2, int_val: 6, accidental: '##' },\n EB: { index: 2, int_val: 3, accidental: 'b' },\n EBB: { index: 2, int_val: 2, accidental: 'bb' },\n F: { index: 3, int_val: 5 },\n FN: { index: 3, int_val: 5, accidental: 'n' },\n 'F#': { index: 3, int_val: 6, accidental: '#' },\n 'F##': { index: 3, int_val: 7, accidental: '##' },\n FB: { index: 3, int_val: 4, accidental: 'b' },\n FBB: { index: 3, int_val: 3, accidental: 'bb' },\n G: { index: 4, int_val: 7 },\n GN: { index: 4, int_val: 7, accidental: 'n' },\n 'G#': { index: 4, int_val: 8, accidental: '#' },\n 'G##': { index: 4, int_val: 9, accidental: '##' },\n GB: { index: 4, int_val: 6, accidental: 'b' },\n GBB: { index: 4, int_val: 5, accidental: 'bb' },\n A: { index: 5, int_val: 9 },\n AN: { index: 5, int_val: 9, accidental: 'n' },\n 'A#': { index: 5, int_val: 10, accidental: '#' },\n 'A##': { index: 5, int_val: 11, accidental: '##' },\n AB: { index: 5, int_val: 8, accidental: 'b' },\n ABB: { index: 5, int_val: 7, accidental: 'bb' },\n B: { index: 6, int_val: 11 },\n BN: { index: 6, int_val: 11, accidental: 'n' },\n 'B#': { index: 6, int_val: 12, accidental: '#' },\n 'B##': { index: 6, int_val: 13, accidental: '##' },\n BB: { index: 6, int_val: 10, accidental: 'b' },\n BBB: { index: 6, int_val: 9, accidental: 'bb' },\n R: { index: 6, rest: true },\n X: {\n index: 6,\n accidental: '',\n octave: 4,\n code: 'noteheadXBlack',\n shift_right: 5.5,\n },\n};\nconst validNoteTypes = {\n n: { name: 'note' },\n r: { name: 'rest' },\n h: { name: 'harmonic' },\n m: { name: 'muted' },\n s: { name: 'slash' },\n g: { name: 'ghost' },\n d: { name: 'diamond' },\n x: { name: 'x' },\n ci: { name: 'circled' },\n cx: { name: 'circle x' },\n sf: { name: 'slashed' },\n sb: { name: 'slashed backward' },\n sq: { name: 'square' },\n tu: { name: 'triangle up' },\n td: { name: 'triangle down' },\n};\nconst accidentals = {\n '#': { code: 'accidentalSharp', parenRightPaddingAdjustment: -1 },\n '##': { code: 'accidentalDoubleSharp', parenRightPaddingAdjustment: -1 },\n b: { code: 'accidentalFlat', parenRightPaddingAdjustment: -2 },\n bb: { code: 'accidentalDoubleFlat', parenRightPaddingAdjustment: -2 },\n n: { code: 'accidentalNatural', parenRightPaddingAdjustment: -1 },\n '{': { code: 'accidentalParensLeft', parenRightPaddingAdjustment: -1 },\n '}': { code: 'accidentalParensRight', parenRightPaddingAdjustment: -1 },\n db: { code: 'accidentalThreeQuarterTonesFlatZimmermann', parenRightPaddingAdjustment: -1 },\n d: { code: 'accidentalQuarterToneFlatStein', parenRightPaddingAdjustment: 0 },\n '++': { code: 'accidentalThreeQuarterTonesSharpStein', parenRightPaddingAdjustment: -1 },\n '+': { code: 'accidentalQuarterToneSharpStein', parenRightPaddingAdjustment: -1 },\n '+-': { code: 'accidentalKucukMucennebSharp', parenRightPaddingAdjustment: -1 },\n bs: { code: 'accidentalBakiyeFlat', parenRightPaddingAdjustment: -1 },\n bss: { code: 'accidentalBuyukMucennebFlat', parenRightPaddingAdjustment: -1 },\n o: { code: 'accidentalSori', parenRightPaddingAdjustment: -1 },\n k: { code: 'accidentalKoron', parenRightPaddingAdjustment: -1 },\n bbs: { code: 'vexAccidentalMicrotonal1', parenRightPaddingAdjustment: -1 },\n '++-': { code: 'vexAccidentalMicrotonal2', parenRightPaddingAdjustment: -1 },\n ashs: { code: 'vexAccidentalMicrotonal3', parenRightPaddingAdjustment: -1 },\n afhf: { code: 'vexAccidentalMicrotonal4', parenRightPaddingAdjustment: -1 },\n accSagittal5v7KleismaUp: { code: 'accSagittal5v7KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v7KleismaDown: { code: 'accSagittal5v7KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5CommaUp: { code: 'accSagittal5CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5CommaDown: { code: 'accSagittal5CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7CommaUp: { code: 'accSagittal7CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7CommaDown: { code: 'accSagittal7CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal25SmallDiesisUp: { code: 'accSagittal25SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal25SmallDiesisDown: { code: 'accSagittal25SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal35MediumDiesisUp: { code: 'accSagittal35MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal35MediumDiesisDown: { code: 'accSagittal35MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11MediumDiesisUp: { code: 'accSagittal11MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11MediumDiesisDown: { code: 'accSagittal11MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11LargeDiesisUp: { code: 'accSagittal11LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11LargeDiesisDown: { code: 'accSagittal11LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal35LargeDiesisUp: { code: 'accSagittal35LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal35LargeDiesisDown: { code: 'accSagittal35LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp25SDown: { code: 'accSagittalSharp25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat25SUp: { code: 'accSagittalFlat25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7CDown: { code: 'accSagittalSharp7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7CUp: { code: 'accSagittalFlat7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5CDown: { code: 'accSagittalSharp5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5CUp: { code: 'accSagittalFlat5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v7kDown: { code: 'accSagittalSharp5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v7kUp: { code: 'accSagittalFlat5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp: { code: 'accSagittalSharp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat: { code: 'accSagittalFlat', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v7kUp: { code: 'accSagittalSharp5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v7kDown: { code: 'accSagittalFlat5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5CUp: { code: 'accSagittalSharp5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5CDown: { code: 'accSagittalFlat5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7CUp: { code: 'accSagittalSharp7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7CDown: { code: 'accSagittalFlat7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp25SUp: { code: 'accSagittalSharp25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat25SDown: { code: 'accSagittalFlat25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp35MUp: { code: 'accSagittalSharp35MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat35MDown: { code: 'accSagittalFlat35MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11MUp: { code: 'accSagittalSharp11MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11MDown: { code: 'accSagittalFlat11MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11LUp: { code: 'accSagittalSharp11LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11LDown: { code: 'accSagittalFlat11LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp35LUp: { code: 'accSagittalSharp35LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat35LDown: { code: 'accSagittalFlat35LDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp25SDown: { code: 'accSagittalDoubleSharp25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat25SUp: { code: 'accSagittalDoubleFlat25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7CDown: { code: 'accSagittalDoubleSharp7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7CUp: { code: 'accSagittalDoubleFlat7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5CDown: { code: 'accSagittalDoubleSharp5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5CUp: { code: 'accSagittalDoubleFlat5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v7kDown: { code: 'accSagittalDoubleSharp5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v7kUp: { code: 'accSagittalDoubleFlat5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp: { code: 'accSagittalDoubleSharp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat: { code: 'accSagittalDoubleFlat', parenRightPaddingAdjustment: -1 },\n accSagittal7v11KleismaUp: { code: 'accSagittal7v11KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v11KleismaDown: { code: 'accSagittal7v11KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal17CommaUp: { code: 'accSagittal17CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal17CommaDown: { code: 'accSagittal17CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal55CommaUp: { code: 'accSagittal55CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal55CommaDown: { code: 'accSagittal55CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7v11CommaUp: { code: 'accSagittal7v11CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v11CommaDown: { code: 'accSagittal7v11CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v11SmallDiesisUp: { code: 'accSagittal5v11SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v11SmallDiesisDown: { code: 'accSagittal5v11SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v11SDown: { code: 'accSagittalSharp5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v11SUp: { code: 'accSagittalFlat5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11CDown: { code: 'accSagittalSharp7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11CUp: { code: 'accSagittalFlat7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp55CDown: { code: 'accSagittalSharp55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat55CUp: { code: 'accSagittalFlat55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17CDown: { code: 'accSagittalSharp17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17CUp: { code: 'accSagittalFlat17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11kDown: { code: 'accSagittalSharp7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11kUp: { code: 'accSagittalFlat7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11kUp: { code: 'accSagittalSharp7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11kDown: { code: 'accSagittalFlat7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17CUp: { code: 'accSagittalSharp17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17CDown: { code: 'accSagittalFlat17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp55CUp: { code: 'accSagittalSharp55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat55CDown: { code: 'accSagittalFlat55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11CUp: { code: 'accSagittalSharp7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11CDown: { code: 'accSagittalFlat7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v11SUp: { code: 'accSagittalSharp5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v11SDown: { code: 'accSagittalFlat5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v11SDown: { code: 'accSagittalDoubleSharp5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v11SUp: { code: 'accSagittalDoubleFlat5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v11CDown: { code: 'accSagittalDoubleSharp7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v11CUp: { code: 'accSagittalDoubleFlat7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp55CDown: { code: 'accSagittalDoubleSharp55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat55CUp: { code: 'accSagittalDoubleFlat55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp17CDown: { code: 'accSagittalDoubleSharp17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat17CUp: { code: 'accSagittalDoubleFlat17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v11kDown: { code: 'accSagittalDoubleSharp7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v11kUp: { code: 'accSagittalDoubleFlat7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittal23CommaUp: { code: 'accSagittal23CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal23CommaDown: { code: 'accSagittal23CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v19CommaUp: { code: 'accSagittal5v19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v19CommaDown: { code: 'accSagittal5v19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v23SmallDiesisUp: { code: 'accSagittal5v23SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v23SmallDiesisDown: { code: 'accSagittal5v23SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v23SDown: { code: 'accSagittalSharp5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v23SUp: { code: 'accSagittalFlat5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v19CDown: { code: 'accSagittalSharp5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v19CUp: { code: 'accSagittalFlat5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23CDown: { code: 'accSagittalSharp23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23CUp: { code: 'accSagittalFlat23CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23CUp: { code: 'accSagittalSharp23CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23CDown: { code: 'accSagittalFlat23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v19CUp: { code: 'accSagittalSharp5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v19CDown: { code: 'accSagittalFlat5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v23SUp: { code: 'accSagittalSharp5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v23SDown: { code: 'accSagittalFlat5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v23SDown: { code: 'accSagittalDoubleSharp5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v23SUp: { code: 'accSagittalDoubleFlat5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v19CDown: { code: 'accSagittalDoubleSharp5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v19CUp: { code: 'accSagittalDoubleFlat5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp23CDown: { code: 'accSagittalDoubleSharp23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat23CUp: { code: 'accSagittalDoubleFlat23CUp', parenRightPaddingAdjustment: -1 },\n accSagittal19SchismaUp: { code: 'accSagittal19SchismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal19SchismaDown: { code: 'accSagittal19SchismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal17KleismaUp: { code: 'accSagittal17KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal17KleismaDown: { code: 'accSagittal17KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal143CommaUp: { code: 'accSagittal143CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal143CommaDown: { code: 'accSagittal143CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v49CommaUp: { code: 'accSagittal11v49CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v49CommaDown: { code: 'accSagittal11v49CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal19CommaUp: { code: 'accSagittal19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal19CommaDown: { code: 'accSagittal19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7v19CommaUp: { code: 'accSagittal7v19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v19CommaDown: { code: 'accSagittal7v19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal49SmallDiesisUp: { code: 'accSagittal49SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49SmallDiesisDown: { code: 'accSagittal49SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal23SmallDiesisUp: { code: 'accSagittal23SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal23SmallDiesisDown: { code: 'accSagittal23SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v13MediumDiesisUp: { code: 'accSagittal5v13MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v13MediumDiesisDown: { code: 'accSagittal5v13MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v19MediumDiesisUp: { code: 'accSagittal11v19MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v19MediumDiesisDown: { code: 'accSagittal11v19MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal49MediumDiesisUp: { code: 'accSagittal49MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49MediumDiesisDown: { code: 'accSagittal49MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v49MediumDiesisUp: { code: 'accSagittal5v49MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v49MediumDiesisDown: { code: 'accSagittal5v49MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal49LargeDiesisUp: { code: 'accSagittal49LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49LargeDiesisDown: { code: 'accSagittal49LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v19LargeDiesisUp: { code: 'accSagittal11v19LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v19LargeDiesisDown: { code: 'accSagittal11v19LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v13LargeDiesisUp: { code: 'accSagittal5v13LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v13LargeDiesisDown: { code: 'accSagittal5v13LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23SDown: { code: 'accSagittalSharp23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23SUp: { code: 'accSagittalFlat23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49SDown: { code: 'accSagittalSharp49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49SUp: { code: 'accSagittalFlat49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v19CDown: { code: 'accSagittalSharp7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v19CUp: { code: 'accSagittalFlat7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19CDown: { code: 'accSagittalSharp19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19CUp: { code: 'accSagittalFlat19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v49CDown: { code: 'accSagittalSharp11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v49CUp: { code: 'accSagittalFlat11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp143CDown: { code: 'accSagittalSharp143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat143CUp: { code: 'accSagittalFlat143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17kDown: { code: 'accSagittalSharp17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17kUp: { code: 'accSagittalFlat17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19sDown: { code: 'accSagittalSharp19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19sUp: { code: 'accSagittalFlat19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19sUp: { code: 'accSagittalSharp19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19sDown: { code: 'accSagittalFlat19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17kUp: { code: 'accSagittalSharp17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17kDown: { code: 'accSagittalFlat17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp143CUp: { code: 'accSagittalSharp143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat143CDown: { code: 'accSagittalFlat143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v49CUp: { code: 'accSagittalSharp11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v49CDown: { code: 'accSagittalFlat11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19CUp: { code: 'accSagittalSharp19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19CDown: { code: 'accSagittalFlat19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v19CUp: { code: 'accSagittalSharp7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v19CDown: { code: 'accSagittalFlat7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49SUp: { code: 'accSagittalSharp49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49SDown: { code: 'accSagittalFlat49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23SUp: { code: 'accSagittalSharp23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23SDown: { code: 'accSagittalFlat23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v13MUp: { code: 'accSagittalSharp5v13MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v13MDown: { code: 'accSagittalFlat5v13MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v19MUp: { code: 'accSagittalSharp11v19MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v19MDown: { code: 'accSagittalFlat11v19MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49MUp: { code: 'accSagittalSharp49MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49MDown: { code: 'accSagittalFlat49MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v49MUp: { code: 'accSagittalSharp5v49MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v49MDown: { code: 'accSagittalFlat5v49MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49LUp: { code: 'accSagittalSharp49LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49LDown: { code: 'accSagittalFlat49LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v19LUp: { code: 'accSagittalSharp11v19LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v19LDown: { code: 'accSagittalFlat11v19LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v13LUp: { code: 'accSagittalSharp5v13LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v13LDown: { code: 'accSagittalFlat5v13LDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp23SDown: { code: 'accSagittalDoubleSharp23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat23SUp: { code: 'accSagittalDoubleFlat23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp49SDown: { code: 'accSagittalDoubleSharp49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat49SUp: { code: 'accSagittalDoubleFlat49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v19CDown: { code: 'accSagittalDoubleSharp7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v19CUp: { code: 'accSagittalDoubleFlat7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp19CDown: { code: 'accSagittalDoubleSharp19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat19CUp: { code: 'accSagittalDoubleFlat19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp11v49CDown: { code: 'accSagittalDoubleSharp11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat11v49CUp: { code: 'accSagittalDoubleFlat11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp143CDown: { code: 'accSagittalDoubleSharp143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat143CUp: { code: 'accSagittalDoubleFlat143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp17kDown: { code: 'accSagittalDoubleSharp17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat17kUp: { code: 'accSagittalDoubleFlat17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp19sDown: { code: 'accSagittalDoubleSharp19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat19sUp: { code: 'accSagittalDoubleFlat19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalShaftUp: { code: 'accSagittalShaftUp', parenRightPaddingAdjustment: -1 },\n accSagittalShaftDown: { code: 'accSagittalShaftDown', parenRightPaddingAdjustment: -1 },\n accSagittalAcute: { code: 'accSagittalAcute', parenRightPaddingAdjustment: -1 },\n accSagittalGrave: { code: 'accSagittalGrave', parenRightPaddingAdjustment: -1 },\n accSagittal1MinaUp: { code: 'accSagittal1MinaUp', parenRightPaddingAdjustment: -1 },\n accSagittal1MinaDown: { code: 'accSagittal1MinaDown', parenRightPaddingAdjustment: -1 },\n accSagittal2MinasUp: { code: 'accSagittal2MinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal2MinasDown: { code: 'accSagittal2MinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal1TinaUp: { code: 'accSagittal1TinaUp', parenRightPaddingAdjustment: -1 },\n accSagittal1TinaDown: { code: 'accSagittal1TinaDown', parenRightPaddingAdjustment: -1 },\n accSagittal2TinasUp: { code: 'accSagittal2TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal2TinasDown: { code: 'accSagittal2TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal3TinasUp: { code: 'accSagittal3TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal3TinasDown: { code: 'accSagittal3TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal4TinasUp: { code: 'accSagittal4TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal4TinasDown: { code: 'accSagittal4TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal5TinasUp: { code: 'accSagittal5TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal5TinasDown: { code: 'accSagittal5TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal6TinasUp: { code: 'accSagittal6TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal6TinasDown: { code: 'accSagittal6TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal7TinasUp: { code: 'accSagittal7TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal7TinasDown: { code: 'accSagittal7TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal8TinasUp: { code: 'accSagittal8TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal8TinasDown: { code: 'accSagittal8TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal9TinasUp: { code: 'accSagittal9TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal9TinasDown: { code: 'accSagittal9TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittalFractionalTinaUp: { code: 'accSagittalFractionalTinaUp', parenRightPaddingAdjustment: -1 },\n accSagittalFractionalTinaDown: { code: 'accSagittalFractionalTinaDown', parenRightPaddingAdjustment: -1 },\n accidentalNarrowReversedFlat: { code: 'accidentalNarrowReversedFlat', parenRightPaddingAdjustment: -1 },\n accidentalNarrowReversedFlatAndFlat: {\n code: 'accidentalNarrowReversedFlatAndFlat',\n parenRightPaddingAdjustment: -1,\n },\n accidentalWilsonPlus: { code: 'accidentalWilsonPlus', parenRightPaddingAdjustment: -1 },\n accidentalWilsonMinus: { code: 'accidentalWilsonMinus', parenRightPaddingAdjustment: -1 },\n};\n// Helps determine the layout of accidentals.\nconst accidentalColumns = {\n 1: {\n a: [1],\n b: [1],\n },\n 2: {\n a: [1, 2],\n },\n 3: {\n a: [1, 3, 2],\n b: [1, 2, 1],\n second_on_bottom: [1, 2, 3],\n },\n 4: {\n a: [1, 3, 4, 2],\n b: [1, 2, 3, 1],\n spaced_out_tetrachord: [1, 2, 1, 2],\n },\n 5: {\n a: [1, 3, 5, 4, 2],\n b: [1, 2, 4, 3, 1],\n spaced_out_pentachord: [1, 2, 3, 2, 1],\n very_spaced_out_pentachord: [1, 2, 1, 2, 1],\n },\n 6: {\n a: [1, 3, 5, 6, 4, 2],\n b: [1, 2, 4, 5, 3, 1],\n spaced_out_hexachord: [1, 3, 2, 1, 3, 2],\n very_spaced_out_hexachord: [1, 2, 1, 2, 1, 2],\n },\n};\nconst articulations = {\n 'a.': { code: 'augmentationDot', between_lines: true },\n av: {\n aboveCode: 'articStaccatissimoAbove',\n belowCode: 'articStaccatissimoBelow',\n between_lines: true,\n },\n 'a>': {\n aboveCode: 'articAccentAbove',\n belowCode: 'articAccentBelow',\n between_lines: true,\n },\n 'a-': {\n aboveCode: 'articTenutoAbove',\n belowCode: 'articTenutoBelow',\n between_lines: true,\n },\n 'a^': {\n aboveCode: 'articMarcatoAbove',\n belowCode: 'articMarcatoBelow',\n between_lines: false,\n },\n 'a+': { code: 'pluckedLeftHandPizzicato', between_lines: false },\n ao: {\n aboveCode: 'pluckedSnapPizzicatoAbove',\n belowCode: 'pluckedSnapPizzicatoBelow',\n between_lines: false,\n },\n ah: { code: 'stringsHarmonic', between_lines: false },\n 'a@': { aboveCode: 'fermataAbove', belowCode: 'fermataBelow', between_lines: false },\n 'a@a': { code: 'fermataAbove', between_lines: false },\n 'a@u': { code: 'fermataBelow', between_lines: false },\n 'a@s': { aboveCode: 'fermataShortAbove', belowCode: 'fermataShortBelow', between_lines: false },\n 'a@as': { code: 'fermataShortAbove', between_lines: false },\n 'a@us': { code: 'fermataShortBelow', between_lines: false },\n 'a@l': { aboveCode: 'fermataLongAbove', belowCode: 'fermataLongBelow', between_lines: false },\n 'a@al': { code: 'fermataLongAbove', between_lines: false },\n 'a@ul': { code: 'fermataLongBelow', between_lines: false },\n 'a@vl': { aboveCode: 'fermataVeryLongAbove', belowCode: 'fermataVeryLongBelow', between_lines: false },\n 'a@avl': { code: 'fermataVeryLongAbove', between_lines: false },\n 'a@uvl': { code: 'fermataVeryLongBelow', between_lines: false },\n 'a|': { code: 'stringsUpBow', between_lines: false },\n am: { code: 'stringsDownBow', between_lines: false },\n 'a,': { code: 'pictChokeCymbal', between_lines: false }, // Choked\n};\nconst ornaments = {\n mordent: { code: 'ornamentShortTrill' },\n mordent_inverted: { code: 'ornamentMordent' },\n turn: { code: 'ornamentTurn' },\n turn_inverted: { code: 'ornamentTurnSlash' },\n tr: { code: 'ornamentTrill' },\n upprall: { code: 'ornamentPrecompSlideTrillDAnglebert' },\n downprall: { code: 'ornamentPrecompDoubleCadenceUpperPrefix' },\n prallup: { code: 'ornamentPrecompTrillSuffixDandrieu' },\n pralldown: { code: 'ornamentPrecompTrillLowerSuffix' },\n upmordent: { code: 'ornamentPrecompSlideTrillBach' },\n downmordent: { code: 'ornamentPrecompDoubleCadenceUpperPrefixTurn' },\n lineprall: { code: 'ornamentPrecompAppoggTrill' },\n prallprall: { code: 'ornamentTremblement' },\n scoop: { code: 'brassScoop' },\n doit: { code: 'brassDoitMedium' },\n fall: { code: 'brassFallLipShort' },\n doitLong: { code: 'brassLiftMedium' },\n fallLong: { code: 'brassFallRoughMedium' },\n bend: { code: 'brassBend' },\n plungerClosed: { code: 'brassMuteClosed' },\n plungerOpen: { code: 'brassMuteOpen' },\n flip: { code: 'brassFlip' },\n jazzTurn: { code: 'brassJazzTurn' },\n smear: { code: 'brassSmear' },\n};\nexport class Tables {\n /**\n * @returns the `Font` object at the head of the music font stack.\n */\n static currentMusicFont() {\n if (Tables.MUSIC_FONT_STACK.length === 0) {\n throw new RuntimeError('NoFonts', 'The font stack is empty. See: await Flow.fetchMusicFont(...); Flow.setMusicFont(...).');\n }\n else {\n return Tables.MUSIC_FONT_STACK[0];\n }\n }\n static clefProperties(clef) {\n if (!clef || !(clef in clefs))\n throw new RuntimeError('BadArgument', 'Invalid clef: ' + clef);\n return clefs[clef];\n }\n /**\n * @param keyOctaveGlyph a string in the format \"key/octave\" (e.g., \"c/5\") or \"key/octave/custom-note-head-code\" (e.g., \"g/5/t3\").\n * @param clef\n * @param params a struct with one option, `octave_shift` for clef ottavation (0 = default; 1 = 8va; -1 = 8vb, etc.).\n * @returns properties for the specified note.\n */\n // eslint-disable-next-line\n static keyProperties(keyOctaveGlyph, clef = 'treble', params) {\n let options = { octave_shift: 0, duration: '4' };\n if (typeof params === 'object') {\n options = Object.assign(Object.assign({}, options), params);\n }\n const duration = Tables.sanitizeDuration(options.duration);\n const pieces = keyOctaveGlyph.split('/');\n if (pieces.length < 2) {\n throw new RuntimeError('BadArguments', `First argument must be note/octave or note/octave/glyph-code: ${keyOctaveGlyph}`);\n }\n const key = pieces[0].toUpperCase();\n const value = notesInfo[key];\n if (!value)\n throw new RuntimeError('BadArguments', 'Invalid key name: ' + key);\n if (value.octave)\n pieces[1] = value.octave.toString();\n let octave = parseInt(pieces[1], 10);\n // Octave_shift is the shift to compensate for clef 8va/8vb.\n octave += -1 * options.octave_shift;\n const baseIndex = octave * 7 - 4 * 7;\n let line = (baseIndex + value.index) / 2;\n line += Tables.clefProperties(clef).line_shift;\n let stroke = 0;\n if (line <= 0 && (line * 2) % 2 === 0)\n stroke = 1; // stroke up\n if (line >= 6 && (line * 2) % 2 === 0)\n stroke = -1; // stroke down\n // Integer value for note arithmetic.\n const int_value = typeof value.int_val !== 'undefined' ? octave * 12 + value.int_val : undefined;\n // If the user specified a glyph, overwrite the glyph code.\n const code = value.code;\n const shift_right = value.shift_right;\n let customNoteHeadProps = {};\n if (pieces.length > 2 && pieces[2]) {\n const glyphName = pieces[2].toUpperCase();\n customNoteHeadProps = { code: this.codeNoteHead(glyphName, duration) } || {};\n }\n return Object.assign({ key,\n octave,\n line,\n int_value, accidental: value.accidental, code,\n stroke,\n shift_right, displaced: false }, customNoteHeadProps);\n }\n static integerToNote(integer) {\n if (typeof integer === 'undefined' || integer < 0 || integer > 11) {\n throw new RuntimeError('BadArguments', `integerToNote() requires an integer in the range [0, 11]: ${integer}`);\n }\n const table = {\n 0: 'C',\n 1: 'C#',\n 2: 'D',\n 3: 'D#',\n 4: 'E',\n 5: 'F',\n 6: 'F#',\n 7: 'G',\n 8: 'G#',\n 9: 'A',\n 10: 'A#',\n 11: 'B',\n };\n const noteValue = table[integer];\n if (!noteValue) {\n throw new RuntimeError('BadArguments', `Unknown note value for integer: ${integer}`);\n }\n return noteValue;\n }\n static tabToGlyph(fret, scale = 1.0) {\n let glyph = undefined;\n let width = 0;\n let shift_y = 0;\n if (fret.toUpperCase() === 'X') {\n const glyphMetrics = new Glyph('accidentalDoubleSharp', Tables.TABLATURE_FONT_SCALE).getMetrics();\n glyph = 'accidentalDoubleSharp';\n if (glyphMetrics.width == undefined || glyphMetrics.height == undefined)\n throw new RuntimeError('InvalidMetrics', 'Width and height required');\n width = glyphMetrics.width;\n shift_y = -glyphMetrics.height / 2;\n }\n else {\n width = Tables.textWidth(fret);\n }\n return {\n text: fret,\n code: glyph,\n getWidth: () => width * scale,\n shift_y,\n };\n }\n // Used by annotation.ts and bend.ts. Clearly this implementation only works for the default font size.\n // TODO: The actual width depends on the font family, size, weight, style.\n static textWidth(text) {\n return 7 * text.toString().length;\n }\n static articulationCodes(artic) {\n return articulations[artic];\n }\n static accidentalCodes(acc) {\n return accidentals[acc];\n }\n static ornamentCodes(acc) {\n return ornaments[acc];\n }\n static keySignature(spec) {\n const keySpec = keySignatures[spec];\n if (!keySpec) {\n throw new RuntimeError('BadKeySignature', `Bad key signature spec: '${spec}'`);\n }\n if (!keySpec.acc) {\n return [];\n }\n const accidentalList = {\n b: [2, 0.5, 2.5, 1, 3, 1.5, 3.5],\n '#': [0, 1.5, -0.5, 1, 2.5, 0.5, 2],\n };\n const notes = accidentalList[keySpec.acc];\n const acc_list = [];\n for (let i = 0; i < keySpec.num; ++i) {\n const line = notes[i];\n acc_list.push({ type: keySpec.acc, line });\n }\n return acc_list;\n }\n static getKeySignatures() {\n return keySignatures;\n }\n static hasKeySignature(spec) {\n return spec in keySignatures;\n }\n /**\n * Convert duration aliases to the number based duration.\n * If the input isn't an alias, simply return the input.\n * @param duration\n * @returns Example: 'q' -> '4', '8' -> '8'\n */\n static sanitizeDuration(duration) {\n const durationNumber = durationAliases[duration];\n if (durationNumber !== undefined) {\n duration = durationNumber;\n }\n if (durations[duration] === undefined) {\n throw new RuntimeError('BadArguments', `The provided duration is not valid: ${duration}`);\n }\n return duration;\n }\n /** Convert the `duration` to a fraction. */\n static durationToFraction(duration) {\n return new Fraction().parse(Tables.sanitizeDuration(duration));\n }\n /** Convert the `duration` to a number. */\n static durationToNumber(duration) {\n return Tables.durationToFraction(duration).value();\n }\n /* Convert the `duration` to total ticks. */\n static durationToTicks(duration) {\n duration = Tables.sanitizeDuration(duration);\n const ticks = durations[duration];\n if (ticks === undefined) {\n throw new RuntimeError('InvalidDuration');\n }\n return ticks;\n }\n static codeNoteHead(type, duration) {\n let code = '';\n switch (type) {\n /* Diamond */\n case 'D0':\n code = 'noteheadDiamondWhole';\n break;\n case 'D1':\n code = 'noteheadDiamondHalf';\n break;\n case 'D2':\n code = 'noteheadDiamondBlack';\n break;\n case 'D3':\n code = 'noteheadDiamondBlack';\n break;\n /* Triangle */\n case 'T0':\n code = 'noteheadTriangleUpWhole';\n break;\n case 'T1':\n code = 'noteheadTriangleUpHalf';\n break;\n case 'T2':\n code = 'noteheadTriangleUpBlack';\n break;\n case 'T3':\n code = 'noteheadTriangleUpBlack';\n break;\n /* Cross */\n case 'X0':\n code = 'noteheadXWhole';\n break;\n case 'X1':\n code = 'noteheadXHalf';\n break;\n case 'X2':\n code = 'noteheadXBlack';\n break;\n case 'X3':\n code = 'noteheadCircleX';\n break;\n /* Square */\n case 'S1':\n code = 'noteheadSquareWhite';\n break;\n case 'S2':\n code = 'noteheadSquareBlack';\n break;\n /* Rectangle */\n case 'R1':\n code = 'vexNoteHeadRectWhite'; // no smufl code\n break;\n case 'R2':\n code = 'vexNoteHeadRectBlack'; // no smufl code\n break;\n case 'DO':\n code = 'noteheadTriangleUpBlack';\n break;\n case 'RE':\n code = 'noteheadMoonBlack';\n break;\n case 'MI':\n code = 'noteheadDiamondBlack';\n break;\n case 'FA':\n code = 'noteheadTriangleLeftBlack';\n break;\n case 'FAUP':\n code = 'noteheadTriangleRightBlack';\n break;\n case 'SO':\n code = 'noteheadBlack';\n break;\n case 'LA':\n code = 'noteheadSquareBlack';\n break;\n case 'TI':\n code = 'noteheadTriangleRoundDownBlack';\n break;\n case 'D':\n case 'H': // left for backwards compatibility\n switch (duration) {\n case '1/2':\n code = 'noteheadDiamondDoubleWhole';\n break;\n case '1':\n code = 'noteheadDiamondWhole';\n break;\n case '2':\n code = 'noteheadDiamondHalf';\n break;\n default:\n code = 'noteheadDiamondBlack';\n break;\n }\n break;\n case 'N':\n case 'G':\n switch (duration) {\n case '1/2':\n code = 'noteheadDoubleWhole';\n break;\n case '1':\n code = 'noteheadWhole';\n break;\n case '2':\n code = 'noteheadHalf';\n break;\n default:\n code = 'noteheadBlack';\n break;\n }\n break;\n case 'M': // left for backwards compatibility\n case 'X':\n switch (duration) {\n case '1/2':\n code = 'noteheadXDoubleWhole';\n break;\n case '1':\n code = 'noteheadXWhole';\n break;\n case '2':\n code = 'noteheadXHalf';\n break;\n default:\n code = 'noteheadXBlack';\n break;\n }\n break;\n case 'CX':\n switch (duration) {\n case '1/2':\n code = 'noteheadCircleXDoubleWhole';\n break;\n case '1':\n code = 'noteheadCircleXWhole';\n break;\n case '2':\n code = 'noteheadCircleXHalf';\n break;\n default:\n code = 'noteheadCircleX';\n break;\n }\n break;\n case 'CI':\n switch (duration) {\n case '1/2':\n code = 'noteheadCircledDoubleWhole';\n break;\n case '1':\n code = 'noteheadCircledWhole';\n break;\n case '2':\n code = 'noteheadCircledHalf';\n break;\n default:\n code = 'noteheadCircledBlack';\n break;\n }\n break;\n case 'SQ':\n switch (duration) {\n case '1/2':\n code = 'noteheadDoubleWholeSquare';\n break;\n case '1':\n code = 'noteheadSquareWhite';\n break;\n case '2':\n code = 'noteheadSquareWhite';\n break;\n default:\n code = 'noteheadSquareBlack';\n break;\n }\n break;\n case 'TU':\n switch (duration) {\n case '1/2':\n code = 'noteheadTriangleUpDoubleWhole';\n break;\n case '1':\n code = 'noteheadTriangleUpWhole';\n break;\n case '2':\n code = 'noteheadTriangleUpHalf';\n break;\n default:\n code = 'noteheadTriangleUpBlack';\n break;\n }\n break;\n case 'TD':\n switch (duration) {\n case '1/2':\n code = 'noteheadTriangleDownDoubleWhole';\n break;\n case '1':\n code = 'noteheadTriangleDownWhole';\n break;\n case '2':\n code = 'noteheadTriangleDownHalf';\n break;\n default:\n code = 'noteheadTriangleDownBlack';\n break;\n }\n break;\n case 'SF':\n switch (duration) {\n case '1/2':\n code = 'noteheadSlashedDoubleWhole1';\n break;\n case '1':\n code = 'noteheadSlashedWhole1';\n break;\n case '2':\n code = 'noteheadSlashedHalf1';\n break;\n default:\n code = 'noteheadSlashedBlack1';\n }\n break;\n case 'SB':\n switch (duration) {\n case '1/2':\n code = 'noteheadSlashedDoubleWhole2';\n break;\n case '1':\n code = 'noteheadSlashedWhole2';\n break;\n case '2':\n code = 'noteheadSlashedHalf2';\n break;\n default:\n code = 'noteheadSlashedBlack2';\n }\n break;\n }\n return code;\n }\n // Return a glyph given duration and type. The type can be a custom glyph code from customNoteHeads.\n // The default type is a regular note ('n').\n // eslint-disable-next-line\n static getGlyphProps(duration, type = 'n') {\n duration = Tables.sanitizeDuration(duration);\n // Lookup duration for default glyph head code\n const code = durationCodes[duration];\n if (code === undefined) {\n return undefined;\n }\n // Get glyph properties for 'type' from duration string (note, rest, harmonic, muted, slash)\n let glyphTypeProperties = code.type[type];\n // Try and get it from the custom list of note heads\n const codeNoteHead = Tables.codeNoteHead(type.toUpperCase(), duration);\n if (codeNoteHead != '')\n glyphTypeProperties = Object.assign(Object.assign({}, glyphTypeProperties), { code_head: codeNoteHead, code: codeNoteHead });\n const code_head = glyphTypeProperties.code_head;\n // The default implementation of getWidth() calls Glyph.getWidth(code_head, scale).\n // This can be overridden by an individual glyph type (see slash noteheads below: Tables.SLASH_NOTEHEAD_WIDTH).\n const getWidth = (scale = Tables.NOTATION_FONT_SCALE) => Glyph.getWidth(code_head, scale);\n // Merge duration props for 'duration' with the note head properties.\n return Object.assign(Object.assign(Object.assign({}, code.common), { getWidth: getWidth }), glyphTypeProperties);\n }\n}\nTables.SOFTMAX_FACTOR = 100;\nTables.STEM_WIDTH = 1.5;\nTables.STEM_HEIGHT = 35;\nTables.STAVE_LINE_THICKNESS = 1;\nTables.RENDER_PRECISION_PLACES = 3;\nTables.RESOLUTION = RESOLUTION;\n/**\n * Customize this by calling Flow.setMusicFont(...fontNames);\n */\nTables.MUSIC_FONT_STACK = [];\nTables.NOTATION_FONT_SCALE = 39;\nTables.TABLATURE_FONT_SCALE = 39;\nTables.SLASH_NOTEHEAD_WIDTH = 15;\nTables.STAVE_LINE_DISTANCE = 10;\n// HACK:\n// Since text origins are positioned at the baseline, we must\n// compensate for the ascender of the text. Of course, 1 staff space is\n// a very poor approximation.\n//\n// This will be deprecated in the future. This is a temporary solution until\n// we have more robust text metrics.\nTables.TEXT_HEIGHT_OFFSET_HACK = 1;\nTables.accidentalMap = accidentals;\nTables.accidentalColumnsTable = accidentalColumns;\nTables.unicode = {\n // ♯ accidental sharp\n sharp: String.fromCharCode(0x266f),\n // ♭ accidental flat\n flat: String.fromCharCode(0x266d),\n // ♮ accidental natural\n natural: String.fromCharCode(0x266e),\n // △ major seventh\n triangle: String.fromCharCode(0x25b3),\n // ø half-diminished\n 'o-with-slash': String.fromCharCode(0x00f8),\n // ° diminished\n degrees: String.fromCharCode(0x00b0),\n // ○ diminished\n circle: String.fromCharCode(0x25cb),\n};\n/* The list of valid note types. Used by note.ts during parseNoteStruct(). */\nTables.validTypes = validNoteTypes;\n// Default time signature.\nTables.TIME4_4 = {\n num_beats: 4,\n beat_value: 4,\n resolution: RESOLUTION,\n};\n// 1/2, 1, 2, 4, 8, 16, 32, 64, 128\n// NOTE: There is no 256 here! However, there are other mentions of 256 in this file.\n// For example, in durations has a 256 key, and sanitizeDuration() can return 256.\n// The sanitizeDuration() bit may need to be removed by 0xfe.\n// eslint-disable-next-line\nconst durationCodes = {\n '1/2': {\n common: {\n stem: false,\n stem_offset: 0,\n flag: false,\n stem_up_extension: -Tables.STEM_HEIGHT,\n stem_down_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_up_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_down_extension: -Tables.STEM_HEIGHT,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Breve rest\n code_head: 'restDoubleWhole',\n rest: true,\n position: 'B/5',\n dot_shiftY: 0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restDoubleWhole', scale);\n // },\n },\n s: {\n // Breve note slash -\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 1: {\n common: {\n stem: false,\n stem_offset: 0,\n flag: false,\n stem_up_extension: -Tables.STEM_HEIGHT,\n stem_down_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_up_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_down_extension: -Tables.STEM_HEIGHT,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Whole rest\n code_head: 'restWhole',\n leger_code_head: 'restWholeLegerLine',\n rest: true,\n position: 'D/5',\n dot_shiftY: 0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restWhole', scale);\n // },\n },\n s: {\n // Whole note slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 2: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: false,\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Half rest\n code_head: 'restHalf',\n leger_code_head: 'restHalfLegerLine',\n stem: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restHalf', scale);\n // },\n },\n s: {\n // Half note slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 4: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: false,\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Quarter rest\n code_head: 'restQuarter',\n stem: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.5,\n line_below: 1.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restQuarter', scale);\n // },\n },\n s: {\n // Quarter slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 8: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: true,\n beam_count: 1,\n stem_beam_extension: 0,\n code_flag_upstem: 'flag8thUp',\n code_flag_downstem: 'flag8thDown',\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Eighth rest\n code_head: 'rest8th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.0,\n line_below: 1.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest8th', scale);\n // },\n },\n s: {\n // Eighth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 16: {\n common: {\n beam_count: 2,\n stem_beam_extension: 0,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag16thUp',\n code_flag_downstem: 'flag16thDown',\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Sixteenth rest\n code_head: 'rest16th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.0,\n line_below: 2.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest16th', scale);\n // },\n },\n s: {\n // Sixteenth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 32: {\n common: {\n beam_count: 3,\n stem_beam_extension: 7.5,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag32ndUp',\n code_flag_downstem: 'flag32ndDown',\n stem_up_extension: 9,\n stem_down_extension: 9,\n tabnote_stem_up_extension: 9,\n tabnote_stem_down_extension: 9,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Thirty-second rest\n code_head: 'rest32nd',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -1.5,\n line_above: 2.0,\n line_below: 2.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest32nd', scale);\n // },\n },\n s: {\n // Thirty-second slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 64: {\n common: {\n beam_count: 4,\n stem_beam_extension: 15,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag64thUp',\n code_flag_downstem: 'flag64thDown',\n stem_up_extension: 13,\n stem_down_extension: 13,\n tabnote_stem_up_extension: 13,\n tabnote_stem_down_extension: 13,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Sixty-fourth rest\n code_head: 'rest64th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -1.5,\n line_above: 2.0,\n line_below: 3.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest64th', scale);\n // },\n },\n s: {\n // Sixty-fourth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 128: {\n common: {\n beam_count: 5,\n stem_beam_extension: 22.5,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag128thUp',\n code_flag_downstem: 'flag128thDown',\n stem_up_extension: 22,\n stem_down_extension: 22,\n tabnote_stem_up_extension: 22,\n tabnote_stem_down_extension: 22,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Hundred-twenty-eight rest\n code_head: 'rest128th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -2.5,\n line_above: 3.0,\n line_below: 3.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest128th', scale);\n // },\n },\n s: {\n // Hundred-twenty-eight slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { BoundingBoxComputation } from './boundingboxcomputation';\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var OutlineCode;\n(function (OutlineCode) {\n OutlineCode[OutlineCode[\"MOVE\"] = 0] = \"MOVE\";\n OutlineCode[OutlineCode[\"LINE\"] = 1] = \"LINE\";\n OutlineCode[OutlineCode[\"QUADRATIC\"] = 2] = \"QUADRATIC\";\n OutlineCode[OutlineCode[\"BEZIER\"] = 3] = \"BEZIER\";\n})(OutlineCode || (OutlineCode = {}));\nclass GlyphCacheEntry {\n constructor(fontStack, code, category) {\n this.point = -1;\n this.metrics = Glyph.loadMetrics(fontStack, code, category);\n this.bbox = Glyph.getOutlineBoundingBox(this.metrics.outline, this.metrics.scale, this.metrics.x_shift, this.metrics.y_shift);\n if (category) {\n this.point = Glyph.lookupFontMetric(this.metrics.font, category, code, 'point', -1);\n }\n }\n}\nclass GlyphCache {\n constructor() {\n this.cache = new Map();\n }\n lookup(code, category) {\n let entries = this.cache.get(Glyph.CURRENT_CACHE_KEY);\n if (entries === undefined) {\n entries = {};\n this.cache.set(Glyph.CURRENT_CACHE_KEY, entries);\n }\n const key = category ? `${code}%${category}` : code;\n let entry = entries[key];\n if (entry === undefined) {\n entry = new GlyphCacheEntry(Glyph.MUSIC_FONT_STACK, code, category);\n entries[key] = entry;\n }\n return entry;\n }\n}\nclass GlyphOutline {\n constructor(outline, originX, originY, scale) {\n this.outline = outline;\n this.originX = originX;\n this.originY = originY;\n this.scale = scale;\n this.i = 0;\n this.precision = 1;\n // Automatically assign private properties: this.outline, this.originX, this.originY, and this.scale.\n this.precision = Math.pow(10, Tables.RENDER_PRECISION_PLACES);\n }\n done() {\n return this.i >= this.outline.length;\n }\n next() {\n return Math.round((this.outline[this.i++] * this.precision) / this.precision);\n }\n nextX() {\n return Math.round((this.originX + this.outline[this.i++] * this.scale) * this.precision) / this.precision;\n }\n nextY() {\n return Math.round((this.originY - this.outline[this.i++] * this.scale) * this.precision) / this.precision;\n }\n static parse(str) {\n const result = [];\n const parts = str.split(' ');\n let i = 0;\n while (i < parts.length) {\n switch (parts[i++]) {\n case 'm':\n result.push(OutlineCode.MOVE, parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'l':\n result.push(OutlineCode.LINE, parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'q':\n result.push(OutlineCode.QUADRATIC, parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'b':\n result.push(OutlineCode.BEZIER, parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n }\n }\n return result;\n }\n}\nexport class Glyph extends Element {\n /**\n * @param code\n * @param point\n * @param options\n */\n constructor(code, point, options) {\n super();\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // INSTANCE MEMBERS\n this.bbox = new BoundingBox(0, 0, 0, 0);\n this.topGlyphs = [];\n this.botGlyphs = [];\n this.options = {};\n this.scale = 1;\n this.code = code;\n this.point = point;\n this.originShift = { x: 0, y: 0 };\n this.x_shift = 0;\n this.y_shift = 0;\n if (options) {\n this.setOptions(options);\n }\n else {\n this.reset();\n }\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // STATIC MEMBERS\n static get CATEGORY() {\n return Category.Glyph;\n }\n /**\n * Pass a key of the form `glyphs.{category}.{code}.{key}` to Font.lookupMetric(). If the initial lookup fails,\n * try again with the path `glyphs.{category}.{key}`. If the second lookup fails, return the defaultValue.\n *\n * @param font\n * @param category any metric path under 'glyphs', so 'stem.up' could resolve to glyphs.stem.up.shiftX, glyphs.stem.up.shiftY, etc.\n * @param code\n * @param key\n * @param defaultValue\n */\n static lookupFontMetric(font, category, code, key, defaultValue) {\n let value = font.lookupMetric(`glyphs.${category}.${code}.${key}`, undefined);\n if (value === undefined) {\n // The first lookup failed, so we omit .${code} and try again (with a defaultValue this time).\n value = font.lookupMetric(`glyphs.${category}.${key}`, defaultValue);\n }\n return value;\n }\n static lookupGlyph(fontStack, code) {\n defined(fontStack, 'BadFontStack', 'Font stack is misconfigured');\n let glyph;\n let font;\n for (let i = 0; i < fontStack.length; i++) {\n font = fontStack[i];\n glyph = font.getGlyphs()[code];\n if (glyph)\n return { glyph, font };\n }\n throw new RuntimeError('BadGlyph', `Glyph ${code} does not exist in font.`);\n }\n static loadMetrics(fontStack, code, category) {\n const { glyph, font } = Glyph.lookupGlyph(fontStack, code);\n if (!glyph.o)\n throw new RuntimeError('BadGlyph', `Glyph ${code} has no outline defined.`);\n let x_shift = 0;\n let y_shift = 0;\n let scale = 1;\n if (category && font) {\n x_shift = Glyph.lookupFontMetric(font, category, code, 'shiftX', 0);\n y_shift = Glyph.lookupFontMetric(font, category, code, 'shiftY', 0);\n scale = Glyph.lookupFontMetric(font, category, code, 'scale', 1);\n }\n const x_min = glyph.x_min;\n const x_max = glyph.x_max;\n const ha = glyph.ha;\n if (!glyph.cached_outline) {\n glyph.cached_outline = GlyphOutline.parse(glyph.o);\n }\n return {\n x_min,\n x_max,\n x_shift,\n y_shift,\n scale,\n ha,\n outline: glyph.cached_outline,\n font,\n width: x_max - x_min,\n height: ha,\n };\n }\n /**\n * Renders glyphs from the default font stack.\n *\n * @param ctx Canvas or SVG context\n * @param x_pos x coordinate\n * @param y_pos y coordinate\n * @param point the point size of the font\n * @param code the glyph code in font.getGlyphs()\n * @param options\n * @returns\n */\n static renderGlyph(ctx, x_pos, y_pos, point, code, options) {\n var _a;\n const data = Glyph.cache.lookup(code, options === null || options === void 0 ? void 0 : options.category);\n const metrics = data.metrics;\n if (data.point != -1) {\n point = data.point;\n }\n const customScale = (_a = options === null || options === void 0 ? void 0 : options.scale) !== null && _a !== void 0 ? _a : 1;\n const scale = ((point * 72.0) / (metrics.font.getResolution() * 100.0)) * metrics.scale * customScale;\n Glyph.renderOutline(ctx, metrics.outline, scale, x_pos + metrics.x_shift * customScale, y_pos + metrics.y_shift * customScale);\n return metrics;\n }\n static renderOutline(ctx, outline, scale, x_pos, y_pos) {\n const go = new GlyphOutline(outline, x_pos, y_pos, scale);\n ctx.beginPath();\n let x, y;\n while (!go.done()) {\n switch (go.next()) {\n case OutlineCode.MOVE:\n ctx.moveTo(go.nextX(), go.nextY());\n break;\n case OutlineCode.LINE:\n ctx.lineTo(go.nextX(), go.nextY());\n break;\n case OutlineCode.QUADRATIC:\n x = go.nextX();\n y = go.nextY();\n ctx.quadraticCurveTo(go.nextX(), go.nextY(), x, y);\n break;\n case OutlineCode.BEZIER:\n x = go.nextX();\n y = go.nextY();\n ctx.bezierCurveTo(go.nextX(), go.nextY(), go.nextX(), go.nextY(), x, y);\n break;\n }\n }\n ctx.fill();\n }\n static getOutlineBoundingBox(outline, scale, x_pos, y_pos) {\n const go = new GlyphOutline(outline, x_pos, y_pos, scale);\n const bboxComp = new BoundingBoxComputation();\n // (penX, penY) hold the pen position: the start of each stroke.\n let penX = x_pos;\n let penY = y_pos;\n let x, y;\n while (!go.done()) {\n switch (go.next()) {\n case OutlineCode.MOVE:\n // Note that we don't add any points to the bounding box until a srroke is actually drawn.\n penX = go.nextX();\n penY = go.nextY();\n break;\n case OutlineCode.LINE:\n bboxComp.addPoint(penX, penY);\n penX = go.nextX();\n penY = go.nextY();\n bboxComp.addPoint(penX, penY);\n break;\n case OutlineCode.QUADRATIC:\n x = go.nextX();\n y = go.nextY();\n bboxComp.addQuadraticCurve(penX, penY, go.nextX(), go.nextY(), x, y);\n penX = x;\n penY = y;\n break;\n case OutlineCode.BEZIER:\n x = go.nextX();\n y = go.nextY();\n bboxComp.addBezierCurve(penX, penY, go.nextX(), go.nextY(), go.nextX(), go.nextY(), x, y);\n penX = x;\n penY = y;\n break;\n }\n }\n return new BoundingBox(bboxComp.getX1(), bboxComp.getY1(), bboxComp.width(), bboxComp.height());\n }\n static getWidth(code, point, category) {\n const data = Glyph.cache.lookup(code, category);\n if (data.point != -1) {\n point = data.point;\n }\n const scale = (point * 72) / (data.metrics.font.getResolution() * 100);\n return data.bbox.getW() * scale;\n }\n // eslint-disable-next-line\n draw(...args) {\n // DO NOTHING.\n }\n getCode() {\n return this.code;\n }\n // eslint-disable-next-line\n setOptions(options) {\n this.options = Object.assign(Object.assign({}, this.options), options);\n this.reset();\n }\n setPoint(point) {\n this.point = point;\n return this;\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getXShift() {\n return this.x_shift;\n }\n setXShift(x_shift) {\n this.x_shift = x_shift;\n return this;\n }\n getYshift() {\n return this.y_shift;\n }\n setYShift(y_shift) {\n this.y_shift = y_shift;\n return this;\n }\n reset() {\n const data = Glyph.cache.lookup(this.code, this.options.category);\n this.metrics = data.metrics;\n // Override point from metrics file\n if (data.point != -1) {\n this.point = data.point;\n }\n this.scale = (this.point * 72) / (this.metrics.font.getResolution() * 100);\n this.bbox = new BoundingBox(data.bbox.getX() * this.scale, data.bbox.getY() * this.scale, data.bbox.getW() * this.scale, data.bbox.getH() * this.scale);\n }\n checkMetrics() {\n return defined(this.metrics, 'BadGlyph', `Glyph ${this.code} is not initialized.`);\n }\n getMetrics() {\n const metrics = this.checkMetrics();\n const metricsScale = metrics.scale;\n return {\n x_min: metrics.x_min * this.scale * metricsScale,\n x_max: metrics.x_max * this.scale * metricsScale,\n width: this.bbox.getW(),\n height: this.bbox.getH(),\n scale: this.scale * metricsScale,\n x_shift: metrics.x_shift,\n y_shift: metrics.y_shift,\n outline: metrics.outline,\n font: metrics.font,\n ha: metrics.ha,\n };\n }\n setOriginX(x) {\n const { bbox } = this;\n const originX = Math.abs(bbox.getX() / bbox.getW());\n const xShift = (x - originX) * bbox.getW();\n this.originShift.x = -xShift;\n }\n setOriginY(y) {\n const { bbox } = this;\n const originY = Math.abs(bbox.getY() / bbox.getH());\n const yShift = (y - originY) * bbox.getH();\n this.originShift.y = -yShift;\n }\n setOrigin(x, y) {\n this.setOriginX(x);\n this.setOriginY(y);\n }\n render(ctx, x, y) {\n const metrics = this.checkMetrics();\n const outline = metrics.outline;\n const scale = this.scale * metrics.scale;\n this.setRendered();\n this.applyStyle(ctx);\n const xPos = x + this.originShift.x + metrics.x_shift;\n const yPos = y + this.originShift.y + metrics.y_shift;\n Glyph.renderOutline(ctx, outline, scale, xPos, yPos);\n this.restoreStyle(ctx);\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n renderToStave(x) {\n const context = this.checkContext();\n const metrics = this.checkMetrics();\n const stave = this.checkStave();\n const outline = metrics.outline;\n const scale = this.scale * metrics.scale;\n this.setRendered();\n this.applyStyle();\n const xPos = x + this.x_shift + metrics.x_shift;\n const yPos = stave.getYForGlyphs() + this.y_shift + metrics.y_shift;\n Glyph.renderOutline(context, outline, scale, xPos, yPos);\n this.restoreStyle();\n }\n}\nGlyph.cache = new GlyphCache();\n// The current cache key for GlyphCache above.\n// Computed when Flow.setMusicFont(...) is called.\n// It is set to a comma separated list of font names.\nGlyph.CURRENT_CACHE_KEY = '';\n// Used by the GlyphCache above.\n// Set when Flow.setMusicFont(...) is called.\nGlyph.MUSIC_FONT_STACK = [];\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var ModifierPosition;\n(function (ModifierPosition) {\n ModifierPosition[ModifierPosition[\"CENTER\"] = 0] = \"CENTER\";\n ModifierPosition[ModifierPosition[\"LEFT\"] = 1] = \"LEFT\";\n ModifierPosition[ModifierPosition[\"RIGHT\"] = 2] = \"RIGHT\";\n ModifierPosition[ModifierPosition[\"ABOVE\"] = 3] = \"ABOVE\";\n ModifierPosition[ModifierPosition[\"BELOW\"] = 4] = \"BELOW\";\n})(ModifierPosition || (ModifierPosition = {}));\n// To enable logging for this class. Set `Vex.Flow.Modifier.DEBUG` to `true`.\n// function L(...args) { if (Modifier.DEBUG) log('Vex.Flow.Modifier', args); }\n/**\n * `Modifier` is an abstract interface for notational elements that modify\n * a `Note`. Examples of modifiers are `Accidental`, `Annotation`, `Stroke`, etc.\n *\n * For a `Modifier` instance to be positioned correctly, it must be part of\n * a `ModifierContext`. All modifiers in the same context are rendered relative to\n * one another.\n *\n * Typically, all modifiers to a note are part of the same `ModifierContext` instance. Also,\n * in multi-voice staves, all modifiers to notes on the same `tick` are part of the same\n * `ModifierContext`. This ensures that multiple voices don't trample all over each other.\n */\nexport class Modifier extends Element {\n constructor() {\n super();\n this.width = 0;\n // The `text_line` is reserved space above or below a stave.\n this.text_line = 0;\n this.position = Modifier.Position.LEFT;\n this.x_shift = 0;\n this.y_shift = 0;\n this.spacingFromNextModifier = 0;\n }\n /**\n * Modifiers category string. Every modifier has a different category.\n * The `ModifierContext` uses this to determine the type and order of the modifiers.\n */\n static get CATEGORY() {\n return Category.Modifier;\n }\n /** Modifiers can be positioned almost anywhere, relative to a note. */\n static get Position() {\n return ModifierPosition;\n }\n static get PositionString() {\n return {\n center: ModifierPosition.CENTER,\n above: ModifierPosition.ABOVE,\n below: ModifierPosition.BELOW,\n left: ModifierPosition.LEFT,\n right: ModifierPosition.RIGHT,\n };\n }\n /** Called when position changes. */\n reset() {\n // DO NOTHING.\n }\n /** Get modifier widths. */\n getWidth() {\n return this.width;\n }\n /** Set modifier widths. */\n setWidth(width) {\n this.width = width;\n return this;\n }\n /** Get attached note (`StaveNote`, `TabNote`, etc.) */\n getNote() {\n return defined(this.note, 'NoNote', 'Modifier has no note.');\n }\n /**\n * Used in draw() to check and get the attached note (`StaveNote`, `TabNote`, etc.).\n * Also verifies that the index is valid.\n */\n checkAttachedNote() {\n const category = this.getCategory();\n defined(this.index, 'NoIndex', `Can't draw ${category} without an index.`);\n return defined(this.note, 'NoNote', `Can't draw ${category} without a note.`);\n }\n /**\n * Set attached note.\n * @param note (`StaveNote`, `TabNote`, etc.)\n */\n setNote(note) {\n this.note = note;\n return this;\n }\n /** Get note index, which is a specific note in a chord. */\n getIndex() {\n return this.index;\n }\n /** Check and get note index, which is a specific note in a chord. */\n checkIndex() {\n return defined(this.index, 'NoIndex', 'Modifier has an invalid index.');\n }\n /** Set note index, which is a specific note in a chord. */\n setIndex(index) {\n this.index = index;\n return this;\n }\n /** Get `ModifierContext`. */\n getModifierContext() {\n return this.modifierContext;\n }\n /** Check and get `ModifierContext`. */\n checkModifierContext() {\n return defined(this.modifierContext, 'NoModifierContext', 'Modifier Context Required');\n }\n /** Every modifier must be part of a `ModifierContext`. */\n setModifierContext(c) {\n this.modifierContext = c;\n return this;\n }\n /** Get position. */\n getPosition() {\n return this.position;\n }\n /**\n * Set position.\n * @param position CENTER | LEFT | RIGHT | ABOVE | BELOW\n */\n setPosition(position) {\n this.position = typeof position === 'string' ? Modifier.PositionString[position] : position;\n this.reset();\n return this;\n }\n /** Set the `text_line` for the modifier. */\n setTextLine(line) {\n this.text_line = line;\n return this;\n }\n /** Shift modifier down `y` pixels. Negative values shift up. */\n setYShift(y) {\n this.y_shift = y;\n return this;\n }\n /** Set spacing from next modifier. */\n setSpacingFromNextModifier(x) {\n this.spacingFromNextModifier = x;\n }\n /** Get spacing from next modifier. */\n getSpacingFromNextModifier() {\n return this.spacingFromNextModifier;\n }\n /**\n * Shift modifier `x` pixels in the direction of the modifier. Negative values\n * shift reverse.\n */\n setXShift(x) {\n this.x_shift = 0;\n if (this.position === Modifier.Position.LEFT) {\n this.x_shift -= x;\n }\n else {\n this.x_shift += x;\n }\n return this;\n }\n /** Get shift modifier `x` */\n getXShift() {\n return this.x_shift;\n }\n /** Render the modifier onto the canvas. */\n draw() {\n this.checkContext();\n throw new RuntimeError('NotImplemented', 'draw() not implemented for this modifier.');\n }\n // aligns sub notes of NoteSubGroup (or GraceNoteGroup) to the main note with correct x-offset\n alignSubNotesWithNote(subNotes, note) {\n // Shift over the tick contexts of each note\n const tickContext = note.getTickContext();\n const metrics = tickContext.getMetrics();\n const stave = note.getStave();\n const subNoteXOffset = tickContext.getX() - metrics.modLeftPx - metrics.modRightPx + this.getSpacingFromNextModifier();\n subNotes.forEach((subNote) => {\n const subTickContext = subNote.getTickContext();\n if (stave)\n subNote.setStave(stave);\n subTickContext.setXOffset(subNoteXOffset); // don't touch baseX to avoid shift each render\n });\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { RuntimeError } from './util';\n/** Music implements some standard music theory routines. */\nexport class Music {\n /** Number of an canonical notes (12). */\n static get NUM_TONES() {\n return this.canonical_notes.length;\n }\n /** Names of root notes ('c', 'd',...) */\n static get roots() {\n return ['c', 'd', 'e', 'f', 'g', 'a', 'b'];\n }\n /** Values of the root notes.*/\n static get root_values() {\n return [0, 2, 4, 5, 7, 9, 11];\n }\n /** Indices of the root notes.*/\n static get root_indices() {\n return {\n c: 0,\n d: 1,\n e: 2,\n f: 3,\n g: 4,\n a: 5,\n b: 6,\n };\n }\n /** Names of canonical notes ('c', 'c#', 'd',...). */\n static get canonical_notes() {\n return ['c', 'c#', 'd', 'd#', 'e', 'f', 'f#', 'g', 'g#', 'a', 'a#', 'b'];\n }\n /** Names of diatonic intervals ('unison', 'm2', 'M2',...). */\n static get diatonic_intervals() {\n return ['unison', 'm2', 'M2', 'm3', 'M3', 'p4', 'dim5', 'p5', 'm6', 'M6', 'b7', 'M7', 'octave'];\n }\n /** NoteAccidental associated to diatonic intervals. */\n static get diatonic_accidentals() {\n return {\n unison: { note: 0, accidental: 0 },\n m2: { note: 1, accidental: -1 },\n M2: { note: 1, accidental: 0 },\n m3: { note: 2, accidental: -1 },\n M3: { note: 2, accidental: 0 },\n p4: { note: 3, accidental: 0 },\n dim5: { note: 4, accidental: -1 },\n p5: { note: 4, accidental: 0 },\n m6: { note: 5, accidental: -1 },\n M6: { note: 5, accidental: 0 },\n b7: { note: 6, accidental: -1 },\n M7: { note: 6, accidental: 0 },\n octave: { note: 7, accidental: 0 },\n };\n }\n /** Semitones shift associated to intervals .*/\n static get intervals() {\n return {\n u: 0,\n unison: 0,\n m2: 1,\n b2: 1,\n min2: 1,\n S: 1,\n H: 1,\n 2: 2,\n M2: 2,\n maj2: 2,\n T: 2,\n W: 2,\n m3: 3,\n b3: 3,\n min3: 3,\n M3: 4,\n 3: 4,\n maj3: 4,\n 4: 5,\n p4: 5,\n '#4': 6,\n b5: 6,\n aug4: 6,\n dim5: 6,\n 5: 7,\n p5: 7,\n '#5': 8,\n b6: 8,\n aug5: 8,\n 6: 9,\n M6: 9,\n maj6: 9,\n b7: 10,\n m7: 10,\n min7: 10,\n dom7: 10,\n M7: 11,\n maj7: 11,\n 8: 12,\n octave: 12,\n };\n }\n /** Semitones shifts associated with scales. */\n static get scales() {\n return {\n major: [2, 2, 1, 2, 2, 2, 1],\n minor: [2, 1, 2, 2, 1, 2, 2],\n ionian: [2, 2, 1, 2, 2, 2, 1],\n dorian: [2, 1, 2, 2, 2, 1, 2],\n phyrgian: [1, 2, 2, 2, 1, 2, 2],\n lydian: [2, 2, 2, 1, 2, 2, 1],\n mixolydian: [2, 2, 1, 2, 2, 1, 2],\n aeolian: [2, 1, 2, 2, 1, 2, 2],\n locrian: [1, 2, 2, 1, 2, 2, 2],\n };\n }\n /** Scales associated with m (minor) and M (major). */\n static get scaleTypes() {\n return {\n M: Music.scales.major,\n m: Music.scales.minor,\n };\n }\n /** Accidentals abbreviations. */\n static get accidentals() {\n return ['bb', 'b', 'n', '#', '##'];\n }\n /** Note values. */\n static get noteValues() {\n return {\n c: { root_index: 0, int_val: 0 },\n cn: { root_index: 0, int_val: 0 },\n 'c#': { root_index: 0, int_val: 1 },\n 'c##': { root_index: 0, int_val: 2 },\n cb: { root_index: 0, int_val: 11 },\n cbb: { root_index: 0, int_val: 10 },\n d: { root_index: 1, int_val: 2 },\n dn: { root_index: 1, int_val: 2 },\n 'd#': { root_index: 1, int_val: 3 },\n 'd##': { root_index: 1, int_val: 4 },\n db: { root_index: 1, int_val: 1 },\n dbb: { root_index: 1, int_val: 0 },\n e: { root_index: 2, int_val: 4 },\n en: { root_index: 2, int_val: 4 },\n 'e#': { root_index: 2, int_val: 5 },\n 'e##': { root_index: 2, int_val: 6 },\n eb: { root_index: 2, int_val: 3 },\n ebb: { root_index: 2, int_val: 2 },\n f: { root_index: 3, int_val: 5 },\n fn: { root_index: 3, int_val: 5 },\n 'f#': { root_index: 3, int_val: 6 },\n 'f##': { root_index: 3, int_val: 7 },\n fb: { root_index: 3, int_val: 4 },\n fbb: { root_index: 3, int_val: 3 },\n g: { root_index: 4, int_val: 7 },\n gn: { root_index: 4, int_val: 7 },\n 'g#': { root_index: 4, int_val: 8 },\n 'g##': { root_index: 4, int_val: 9 },\n gb: { root_index: 4, int_val: 6 },\n gbb: { root_index: 4, int_val: 5 },\n a: { root_index: 5, int_val: 9 },\n an: { root_index: 5, int_val: 9 },\n 'a#': { root_index: 5, int_val: 10 },\n 'a##': { root_index: 5, int_val: 11 },\n ab: { root_index: 5, int_val: 8 },\n abb: { root_index: 5, int_val: 7 },\n b: { root_index: 6, int_val: 11 },\n bn: { root_index: 6, int_val: 11 },\n 'b#': { root_index: 6, int_val: 0 },\n 'b##': { root_index: 6, int_val: 1 },\n bb: { root_index: 6, int_val: 10 },\n bbb: { root_index: 6, int_val: 9 },\n };\n }\n isValidNoteValue(note) {\n return note >= 0 && note < Music.canonical_notes.length;\n }\n isValidIntervalValue(interval) {\n return interval >= 0 && interval < Music.diatonic_intervals.length;\n }\n /** Return root and accidental associated to a note. */\n getNoteParts(noteString) {\n if (!noteString || noteString.length < 1) {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n if (noteString.length > 3) {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n const note = noteString.toLowerCase();\n const regex = /^([cdefgab])(b|bb|n|#|##)?$/;\n const match = regex.exec(note);\n if (match !== null) {\n const root = match[1];\n const accidental = match[2];\n return {\n root,\n accidental,\n };\n }\n else {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n }\n /** Return root, accidental and type associated to a key. */\n getKeyParts(keyString) {\n if (!keyString || keyString.length < 1) {\n throw new RuntimeError('BadArguments', 'Invalid key: ' + keyString);\n }\n const key = keyString.toLowerCase();\n // Support Major, Minor, Melodic Minor, and Harmonic Minor key types.\n const regex = /^([cdefgab])(b|#)?(mel|harm|m|M)?$/;\n const match = regex.exec(key);\n if (match !== null) {\n const root = match[1];\n const accidental = match[2];\n let type = match[3];\n // Unspecified type implies major\n if (!type)\n type = 'M';\n return {\n root,\n accidental,\n type,\n };\n }\n else {\n throw new RuntimeError('BadArguments', `Invalid key: ${keyString}`);\n }\n }\n /** Note value associated to a note name. */\n getNoteValue(noteString) {\n const value = Music.noteValues[noteString];\n if (value === undefined) {\n throw new RuntimeError('BadArguments', `Invalid note name: ${noteString}`);\n }\n return value.int_val;\n }\n /** Interval value associated to an interval name. */\n getIntervalValue(intervalString) {\n const value = Music.intervals[intervalString];\n if (value === undefined) {\n throw new RuntimeError('BadArguments', `Invalid interval name: ${intervalString}`);\n }\n return value;\n }\n /** Canonical note name associated to a value. */\n getCanonicalNoteName(noteValue) {\n if (!this.isValidNoteValue(noteValue)) {\n throw new RuntimeError('BadArguments', `Invalid note value: ${noteValue}`);\n }\n return Music.canonical_notes[noteValue];\n }\n /** Interval name associated to a value. */\n getCanonicalIntervalName(intervalValue) {\n if (!this.isValidIntervalValue(intervalValue)) {\n throw new RuntimeError('BadArguments', `Invalid interval value: ${intervalValue}`);\n }\n return Music.diatonic_intervals[intervalValue];\n }\n /**\n * Given a note, interval, and interval direction, produce the relative note.\n */\n getRelativeNoteValue(noteValue, intervalValue, direction = 1) {\n if (direction !== 1 && direction !== -1) {\n throw new RuntimeError('BadArguments', `Invalid direction: ${direction}`);\n }\n let sum = (noteValue + direction * intervalValue) % Music.NUM_TONES;\n if (sum < 0)\n sum += Music.NUM_TONES;\n return sum;\n }\n /**\n * Given a root and note value, produce the relative note name.\n */\n getRelativeNoteName(root, noteValue) {\n const parts = this.getNoteParts(root);\n const rootValue = this.getNoteValue(parts.root);\n let interval = noteValue - rootValue;\n if (Math.abs(interval) > Music.NUM_TONES - 3) {\n let multiplier = 1;\n if (interval > 0)\n multiplier = -1;\n // Possibly wrap around. (Add +1 for modulo operator)\n const reverse_interval = ((noteValue + 1 + (rootValue + 1)) % Music.NUM_TONES) * multiplier;\n if (Math.abs(reverse_interval) > 2) {\n throw new RuntimeError('BadArguments', `Notes not related: ${root}, ${noteValue})`);\n }\n else {\n interval = reverse_interval;\n }\n }\n if (Math.abs(interval) > 2) {\n throw new RuntimeError('BadArguments', `Notes not related: ${root}, ${noteValue})`);\n }\n let relativeNoteName = parts.root;\n if (interval > 0) {\n for (let i = 1; i <= interval; ++i) {\n relativeNoteName += '#';\n }\n }\n else if (interval < 0) {\n for (let i = -1; i >= interval; --i) {\n relativeNoteName += 'b';\n }\n }\n return relativeNoteName;\n }\n /**\n * Return scale tones, given intervals. Each successive interval is\n * relative to the previous one, e.g., Major Scale:\n *\n * TTSTTTS = [2,2,1,2,2,2,1]\n *\n * When used with key = 0, returns C scale (which is isomorphic to\n * interval list).\n */\n getScaleTones(key, intervals) {\n const tones = [key];\n let nextNote = key;\n for (let i = 0; i < intervals.length; i++) {\n nextNote = this.getRelativeNoteValue(nextNote, intervals[i]);\n if (nextNote !== key)\n tones.push(nextNote);\n }\n return tones;\n }\n /**\n * Return the interval of a note, given a diatonic scale.\n * e.g., given the scale C, and the note E, returns M3.\n */\n getIntervalBetween(note1, note2, direction = 1) {\n if (direction !== 1 && direction !== -1) {\n throw new RuntimeError('BadArguments', `Invalid direction: ${direction}`);\n }\n if (!this.isValidNoteValue(note1) || !this.isValidNoteValue(note2)) {\n throw new RuntimeError('BadArguments', `Invalid notes: ${note1}, ${note2}`);\n }\n let difference = direction === 1 ? note2 - note1 : note1 - note2;\n if (difference < 0)\n difference += Music.NUM_TONES;\n return difference;\n }\n /**\n * Create a scale map that represents the pitch state for a\n * `keySignature`. For example, passing a `G` to `keySignature` would\n * return a scale map with every note naturalized except for `F` which\n * has an `F#` state.\n */\n createScaleMap(keySignature) {\n const keySigParts = this.getKeyParts(keySignature);\n if (!keySigParts.type)\n throw new RuntimeError('BadArguments', 'Unsupported key type: undefined');\n const scaleName = Music.scaleTypes[keySigParts.type];\n let keySigString = keySigParts.root;\n if (keySigParts.accidental)\n keySigString += keySigParts.accidental;\n if (!scaleName)\n throw new RuntimeError('BadArguments', 'Unsupported key type: ' + keySignature);\n const scale = this.getScaleTones(this.getNoteValue(keySigString), scaleName);\n const noteLocation = Music.root_indices[keySigParts.root];\n const scaleMap = {};\n for (let i = 0; i < Music.roots.length; ++i) {\n const index = (noteLocation + i) % Music.roots.length;\n const rootName = Music.roots[index];\n let noteName = this.getRelativeNoteName(rootName, scale[i]);\n if (noteName.length === 1) {\n noteName += 'n';\n }\n scaleMap[rootName] = noteName;\n }\n return scaleMap;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// @author Mohit Cheppudira\n// @author Greg Ristow (modifications)\nimport { Fraction } from './fraction';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Music } from './music';\nimport { Tables } from './tables';\nimport { Category, isAccidental, isGraceNote, isGraceNoteGroup, isStaveNote } from './typeguard';\nimport { defined, log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Accidental.DEBUG)\n log('Vex.Flow.Accidental', args);\n}\n/**\n * An `Accidental` inherits from `Modifier`, and is formatted within a\n * `ModifierContext`. Accidentals are modifiers that can be attached to\n * notes. Support is included for both western and microtonal accidentals.\n *\n * See `tests/accidental_tests.ts` for usage examples.\n */\nexport class Accidental extends Modifier {\n /**\n * Create accidental.\n * @param type value from `Vex.Flow.accidentalCodes.accidentals` table in `tables.ts`.\n * For example: `#`, `##`, `b`, `n`, etc.\n */\n constructor(type) {\n super();\n L('New accidental: ', type);\n this.type = type;\n this.position = Modifier.Position.LEFT;\n this.render_options = {\n // Font size for glyphs\n font_scale: 38,\n // Padding between accidental and parentheses on each side\n parenLeftPadding: 2,\n parenRightPadding: 2,\n };\n this.accidental = Tables.accidentalCodes(this.type);\n defined(this.accidental, 'ArgumentError', `Unknown accidental type: ${type}`);\n // Cautionary accidentals have parentheses around them\n this.cautionary = false;\n this.reset();\n }\n /** Accidentals category string. */\n static get CATEGORY() {\n return Category.Accidental;\n }\n /** Arrange accidentals inside a ModifierContext. */\n static format(accidentals, state) {\n // If there are no accidentals, no need to format their positions.\n if (!accidentals || accidentals.length === 0)\n return;\n const musicFont = Tables.currentMusicFont();\n const noteheadAccidentalPadding = musicFont.lookupMetric('accidental.noteheadAccidentalPadding');\n const leftShift = state.left_shift + noteheadAccidentalPadding;\n const accidentalSpacing = musicFont.lookupMetric('accidental.accidentalSpacing');\n const additionalPadding = musicFont.lookupMetric('accidental.leftPadding'); // padding to the left of all accidentals\n const accList = [];\n let prevNote = undefined;\n let shiftL = 0;\n // First determine the accidentals' Y positions from the note.keys\n for (let i = 0; i < accidentals.length; ++i) {\n const acc = accidentals[i];\n const note = acc.getNote();\n const stave = note.getStave();\n const index = acc.checkIndex();\n const props = note.getKeyProps()[index];\n if (note !== prevNote) {\n // Iterate through all notes to get the displaced pixels\n for (let n = 0; n < note.keys.length; ++n) {\n shiftL = Math.max(note.getLeftDisplacedHeadPx() - note.getXShift(), shiftL);\n }\n prevNote = note;\n }\n if (stave) {\n const lineSpace = stave.getSpacingBetweenLines();\n const y = stave.getYForLine(props.line);\n const accLine = Math.round((y / lineSpace) * 2) / 2;\n accList.push({ y, line: accLine, shift: shiftL, acc, lineSpace });\n }\n else {\n accList.push({ line: props.line, shift: shiftL, acc });\n }\n }\n // Sort accidentals by line number.\n accList.sort((a, b) => b.line - a.line);\n // FIXME: Confusing name. Each object in this array has a property called `line`.\n // So if this is a list of lines, you end up with: `line.line` which is very awkward.\n const lineList = [];\n // amount by which all accidentals must be shifted right or left for\n // stem flipping, notehead shifting concerns.\n let accShift = 0;\n let previousLine = undefined;\n // Create an array of unique line numbers (lineList) from accList\n for (let i = 0; i < accList.length; i++) {\n const acc = accList[i];\n // if this is the first line, or a new line, add a lineList\n if (previousLine === undefined || previousLine !== acc.line) {\n lineList.push({\n line: acc.line,\n flatLine: true,\n dblSharpLine: true,\n numAcc: 0,\n width: 0,\n column: 0,\n });\n }\n // if this accidental is not a flat, the accidental needs 3.0 lines lower\n // clearance instead of 2.5 lines for b or bb.\n // FIXME: Naming could use work. acc.acc is very awkward\n if (acc.acc.type !== 'b' && acc.acc.type !== 'bb') {\n lineList[lineList.length - 1].flatLine = false;\n }\n // if this accidental is not a double sharp, the accidental needs 3.0 lines above\n if (acc.acc.type !== '##') {\n lineList[lineList.length - 1].dblSharpLine = false;\n }\n // Track how many accidentals are on this line:\n lineList[lineList.length - 1].numAcc++;\n // Track the total x_offset needed for this line which will be needed\n // for formatting lines w/ multiple accidentals:\n // width = accidental width + universal spacing between accidentals\n lineList[lineList.length - 1].width += acc.acc.getWidth() + accidentalSpacing;\n // if this accShift is larger, use it to keep first column accidentals in the same line\n accShift = acc.shift > accShift ? acc.shift : accShift;\n previousLine = acc.line;\n }\n // ### Place Accidentals in Columns\n //\n // Default to a classic triangular layout (middle accidental farthest left),\n // but follow exceptions as outlined in G. Read's _Music Notation_ and\n // Elaine Gould's _Behind Bars_.\n //\n // Additionally, this implements different vertical collision rules for\n // flats (only need 2.5 lines clearance below) and double sharps (only\n // need 2.5 lines of clearance above or below).\n //\n // Classic layouts and exception patterns are found in the 'tables.js'\n // in 'Tables.accidentalColumnsTable'\n //\n // Beyond 6 vertical accidentals, default to the parallel ascending lines approach,\n // using as few columns as possible for the verticle structure.\n //\n // TODO (?): Allow column to be specified for an accidental at run-time?\n let totalColumns = 0;\n // establish the boundaries for a group of notes with clashing accidentals:\n for (let i = 0; i < lineList.length; i++) {\n let noFurtherConflicts = false;\n const groupStart = i;\n let groupEnd = i;\n while (groupEnd + 1 < lineList.length && !noFurtherConflicts) {\n // if this note conflicts with the next:\n if (this.checkCollision(lineList[groupEnd], lineList[groupEnd + 1])) {\n // include the next note in the group:\n groupEnd++;\n }\n else {\n noFurtherConflicts = true;\n }\n }\n // Gets an a line from the `lineList`, relative to the current group\n const getGroupLine = (index) => lineList[groupStart + index];\n const getGroupLines = (indexes) => indexes.map(getGroupLine);\n const lineDifference = (indexA, indexB) => {\n const [a, b] = getGroupLines([indexA, indexB]).map((item) => item.line);\n return a - b;\n };\n const notColliding = (...indexPairs) => indexPairs.map(getGroupLines).every(([line1, line2]) => !this.checkCollision(line1, line2));\n // Set columns for the lines in this group:\n const groupLength = groupEnd - groupStart + 1;\n // Set the accidental column for each line of the group\n let endCase = this.checkCollision(lineList[groupStart], lineList[groupEnd]) ? 'a' : 'b';\n switch (groupLength) {\n case 3:\n if (endCase === 'a' && lineDifference(1, 2) === 0.5 && lineDifference(0, 1) !== 0.5) {\n endCase = 'second_on_bottom';\n }\n break;\n case 4:\n if (notColliding([0, 2], [1, 3])) {\n endCase = 'spaced_out_tetrachord';\n }\n break;\n case 5:\n if (endCase === 'b' && notColliding([1, 3])) {\n endCase = 'spaced_out_pentachord';\n if (notColliding([0, 2], [2, 4])) {\n endCase = 'very_spaced_out_pentachord';\n }\n }\n break;\n case 6:\n if (notColliding([0, 3], [1, 4], [2, 5])) {\n endCase = 'spaced_out_hexachord';\n }\n if (notColliding([0, 2], [2, 4], [1, 3], [3, 5])) {\n endCase = 'very_spaced_out_hexachord';\n }\n break;\n default:\n break;\n }\n let groupMember;\n let column;\n // If the group contains seven members or more, use ascending parallel lines\n // of accidentals, using as few columns as possible while avoiding collisions.\n if (groupLength >= 7) {\n // First, determine how many columns to use:\n let patternLength = 2;\n let collisionDetected = true;\n while (collisionDetected === true) {\n collisionDetected = false;\n for (let line = 0; line + patternLength < lineList.length; line++) {\n if (this.checkCollision(lineList[line], lineList[line + patternLength])) {\n collisionDetected = true;\n patternLength++;\n break;\n }\n }\n }\n // Then, assign a column to each line of accidentals\n for (groupMember = i; groupMember <= groupEnd; groupMember++) {\n column = ((groupMember - i) % patternLength) + 1;\n lineList[groupMember].column = column;\n totalColumns = totalColumns > column ? totalColumns : column;\n }\n }\n else {\n // If the group contains fewer than seven members, use the layouts from\n // the Tables.accidentalColumnsTable (See: tables.ts).\n for (groupMember = i; groupMember <= groupEnd; groupMember++) {\n column = Tables.accidentalColumnsTable[groupLength][endCase][groupMember - i];\n lineList[groupMember].column = column;\n totalColumns = totalColumns > column ? totalColumns : column;\n }\n }\n // Increment i to the last note that was set, so that if a lower set of notes\n // does not conflict at all with this group, it can have its own classic shape.\n i = groupEnd;\n }\n // ### Convert Columns to x_offsets\n //\n // This keeps columns aligned, even if they have different accidentals within them\n // which sometimes results in a larger x_offset than is an accidental might need\n // to preserve the symmetry of the accidental shape.\n //\n // Neither A.C. Vinci nor G. Read address this, and it typically only happens in\n // music with complex chord clusters.\n //\n // TODO (?): Optionally allow closer compression of accidentals, instead of forcing\n // parallel columns.\n // track each column's max width, which will be used as initial shift of later columns:\n const columnWidths = [];\n const columnXOffsets = [];\n for (let i = 0; i <= totalColumns; i++) {\n columnWidths[i] = 0;\n columnXOffsets[i] = 0;\n }\n columnWidths[0] = accShift + leftShift;\n columnXOffsets[0] = accShift + leftShift;\n // Fill columnWidths with widest needed x-space;\n // this is what keeps the columns parallel.\n lineList.forEach((line) => {\n if (line.width > columnWidths[line.column])\n columnWidths[line.column] = line.width;\n });\n for (let i = 1; i < columnWidths.length; i++) {\n // this column's offset = this column's width + previous column's offset\n columnXOffsets[i] = columnWidths[i] + columnXOffsets[i - 1];\n }\n const totalShift = columnXOffsets[columnXOffsets.length - 1];\n // Set the xShift for each accidental according to column offsets:\n let accCount = 0;\n lineList.forEach((line) => {\n let lineWidth = 0;\n const lastAccOnLine = accCount + line.numAcc;\n // handle all of the accidentals on a given line:\n for (accCount; accCount < lastAccOnLine; accCount++) {\n const xShift = columnXOffsets[line.column - 1] + lineWidth;\n accList[accCount].acc.setXShift(xShift);\n // keep track of the width of accidentals we've added so far, so that when\n // we loop, we add space for them.\n lineWidth += accList[accCount].acc.getWidth() + accidentalSpacing;\n L('Line, accCount, shift: ', line.line, accCount, xShift);\n }\n });\n // update the overall layout with the full width of the accidental shapes:\n state.left_shift += totalShift + additionalPadding;\n }\n /** Helper function to determine whether two lines of accidentals collide vertically */\n static checkCollision(line1, line2) {\n let clearance = line2.line - line1.line;\n let clearanceRequired = 3;\n // But less clearance is required for certain accidentals: b, bb and ##.\n if (clearance > 0) {\n // then line 2 is on top\n clearanceRequired = line2.flatLine || line2.dblSharpLine ? 2.5 : 3.0;\n if (line1.dblSharpLine)\n clearance -= 0.5;\n }\n else {\n // line 1 is on top\n clearanceRequired = line1.flatLine || line1.dblSharpLine ? 2.5 : 3.0;\n if (line2.dblSharpLine)\n clearance -= 0.5;\n }\n const collision = Math.abs(clearance) < clearanceRequired;\n L('Line_1, Line_2, Collision: ', line1.line, line2.line, collision);\n return collision;\n }\n /**\n * Use this method to automatically apply accidentals to a set of `voices`.\n * The accidentals will be remembered between all the voices provided.\n * Optionally, you can also provide an initial `keySignature`.\n */\n static applyAccidentals(voices, keySignature) {\n const tickPositions = [];\n const tickNoteMap = {};\n // Sort the tickables in each voice by their tick position in the voice.\n voices.forEach((voice) => {\n const tickPosition = new Fraction(0, 1);\n const tickable = voice.getTickables();\n tickable.forEach((t) => {\n if (t.shouldIgnoreTicks())\n return;\n const notesAtPosition = tickNoteMap[tickPosition.value()];\n if (!notesAtPosition) {\n tickPositions.push(tickPosition.value());\n tickNoteMap[tickPosition.value()] = [t];\n }\n else {\n notesAtPosition.push(t);\n }\n tickPosition.add(t.getTicks());\n });\n });\n const music = new Music();\n // Default key signature is C major.\n if (!keySignature)\n keySignature = 'C';\n // Get the scale map, which represents the current state of each pitch.\n const scaleMapKey = music.createScaleMap(keySignature);\n const scaleMap = {};\n tickPositions.forEach((tickPos) => {\n const tickables = tickNoteMap[tickPos];\n // Array to store all pitches that modified accidental states\n // at this tick position\n const modifiedPitches = [];\n const processNote = (t) => {\n // Only StaveNote implements .addModifier(), which is used below.\n if (!isStaveNote(t) || t.isRest() || t.shouldIgnoreTicks()) {\n return;\n }\n // Go through each key and determine if an accidental should be applied.\n const staveNote = t;\n staveNote.keys.forEach((keyString, keyIndex) => {\n const key = music.getNoteParts(keyString.split('/')[0]);\n const octave = keyString.split('/')[1];\n // Force a natural for every key without an accidental\n const accidentalString = key.accidental || 'n';\n const pitch = key.root + accidentalString;\n // Determine if the current pitch has the same accidental\n // as the scale state\n if (!scaleMap[key.root + octave])\n scaleMap[key.root + octave] = scaleMapKey[key.root];\n const sameAccidental = scaleMap[key.root + octave] === pitch;\n // Determine if an identical pitch in the chord already\n // modified the accidental state\n const previouslyModified = modifiedPitches.indexOf(keyString) > -1;\n // Remove accidentals\n staveNote.getModifiers().forEach((modifier, index) => {\n if (isAccidental(modifier) && modifier.type == accidentalString && modifier.getIndex() == keyIndex) {\n staveNote.getModifiers().splice(index, 1);\n }\n });\n // Add the accidental to the StaveNote\n if (!sameAccidental || (sameAccidental && previouslyModified)) {\n // Modify the scale map so that the root pitch has an\n // updated state\n scaleMap[key.root + octave] = pitch;\n // Create the accidental\n const accidental = new Accidental(accidentalString);\n // Attach the accidental to the StaveNote\n staveNote.addModifier(accidental, keyIndex);\n // Add the pitch to list of pitches that modified accidentals\n modifiedPitches.push(keyString);\n }\n });\n // process grace notes\n staveNote.getModifiers().forEach((modifier) => {\n if (isGraceNoteGroup(modifier)) {\n modifier.getGraceNotes().forEach(processNote);\n }\n });\n };\n tickables.forEach(processNote);\n });\n }\n reset() {\n const fontScale = this.render_options.font_scale;\n this.glyph = new Glyph(this.accidental.code, fontScale);\n this.glyph.setOriginX(1.0);\n if (this.cautionary) {\n this.parenLeft = new Glyph(Tables.accidentalCodes('{').code, fontScale);\n this.parenRight = new Glyph(Tables.accidentalCodes('}').code, fontScale);\n this.parenLeft.setOriginX(1.0);\n this.parenRight.setOriginX(1.0);\n }\n }\n /** Get width in pixels. */\n getWidth() {\n if (this.cautionary) {\n const parenLeft = defined(this.parenLeft);\n const parenRight = defined(this.parenRight);\n const parenWidth = parenLeft.getMetrics().width +\n parenRight.getMetrics().width +\n this.render_options.parenLeftPadding +\n this.render_options.parenRightPadding;\n return this.glyph.getMetrics().width + parenWidth;\n }\n else {\n return this.glyph.getMetrics().width;\n }\n }\n /** Attach this accidental to `note`, which must be a `StaveNote`. */\n setNote(note) {\n defined(note, 'ArgumentError', `Bad note value: ${note}`);\n this.note = note;\n // Accidentals attached to grace notes are rendered smaller.\n if (isGraceNote(note)) {\n this.render_options.font_scale = 25;\n this.reset();\n }\n return this;\n }\n /** If called, draws parenthesis around accidental. */\n setAsCautionary() {\n this.cautionary = true;\n this.render_options.font_scale = 28;\n this.reset();\n return this;\n }\n /** Render accidental onto canvas. */\n draw() {\n const { type, position, index, cautionary, x_shift, y_shift, glyph, render_options: { parenLeftPadding, parenRightPadding }, } = this;\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n // Figure out the start `x` and `y` coordinates for note and index.\n const start = note.getModifierStartXY(position, index);\n let accX = start.x + x_shift;\n const accY = start.y + y_shift;\n L('Rendering: ', type, accX, accY);\n if (!cautionary) {\n glyph.render(ctx, accX, accY);\n }\n else {\n const parenLeft = defined(this.parenLeft);\n const parenRight = defined(this.parenRight);\n // Render the accidental in parentheses.\n parenRight.render(ctx, accX, accY);\n accX -= parenRight.getMetrics().width;\n accX -= parenRightPadding;\n accX -= this.accidental.parenRightPaddingAdjustment;\n glyph.render(ctx, accX, accY);\n accX -= glyph.getMetrics().width;\n accX -= parenLeftPadding;\n parenLeft.render(ctx, accX, accY);\n }\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Accidental.DEBUG` to `true`. */\nAccidental.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// This file implements the `Stem` object. Generally this object is handled\n// by its parent `StemmableNote`.\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Stem.DEBUG)\n log('Vex.Flow.Stem', args);\n}\nexport class Stem extends Element {\n constructor(options) {\n super();\n this.stem_up_y_offset = 0;\n this.stem_down_y_offset = 0;\n this.stem_up_y_base_offset = 0;\n this.stem_down_y_base_offset = 0;\n // Default notehead x bounds\n this.x_begin = (options === null || options === void 0 ? void 0 : options.x_begin) || 0;\n this.x_end = (options === null || options === void 0 ? void 0 : options.x_end) || 0;\n // Y bounds for top/bottom most notehead\n this.y_top = (options === null || options === void 0 ? void 0 : options.y_top) || 0;\n this.y_bottom = (options === null || options === void 0 ? void 0 : options.y_bottom) || 0;\n // Stem top extension\n this.stem_extension = (options === null || options === void 0 ? void 0 : options.stem_extension) || 0;\n // Direction of the stem\n this.stem_direction = (options === null || options === void 0 ? void 0 : options.stem_direction) || 0;\n // Flag to override all draw calls\n this.hide = (options === null || options === void 0 ? void 0 : options.hide) || false;\n this.isStemlet = (options === null || options === void 0 ? void 0 : options.isStemlet) || false;\n this.stemletHeight = (options === null || options === void 0 ? void 0 : options.stemletHeight) || 0;\n // Use to adjust the rendered height without affecting\n // the results of `.getExtents()`\n this.renderHeightAdjustment = 0;\n this.setOptions(options);\n }\n static get CATEGORY() {\n return Category.Stem;\n }\n // Stem directions\n static get UP() {\n return 1;\n }\n static get DOWN() {\n return -1;\n }\n // Theme\n static get WIDTH() {\n return Tables.STEM_WIDTH;\n }\n static get HEIGHT() {\n return Tables.STEM_HEIGHT;\n }\n setOptions(options) {\n // Changing where the stem meets the head\n this.stem_up_y_offset = (options === null || options === void 0 ? void 0 : options.stem_up_y_offset) || 0;\n this.stem_down_y_offset = (options === null || options === void 0 ? void 0 : options.stem_down_y_offset) || 0;\n this.stem_up_y_base_offset = (options === null || options === void 0 ? void 0 : options.stem_up_y_base_offset) || 0;\n this.stem_down_y_base_offset = (options === null || options === void 0 ? void 0 : options.stem_down_y_base_offset) || 0;\n }\n // Set the x bounds for the default notehead\n setNoteHeadXBounds(x_begin, x_end) {\n this.x_begin = x_begin;\n this.x_end = x_end;\n return this;\n }\n // Set the direction of the stem in relation to the noteheads\n setDirection(direction) {\n this.stem_direction = direction;\n }\n // Set the extension for the stem, generally for flags or beams\n setExtension(ext) {\n this.stem_extension = ext;\n }\n getExtension() {\n return this.stem_extension;\n }\n // The the y bounds for the top and bottom noteheads\n setYBounds(y_top, y_bottom) {\n this.y_top = y_top;\n this.y_bottom = y_bottom;\n }\n // Gets the entire height for the stem\n getHeight() {\n const y_offset = this.stem_direction === Stem.UP ? this.stem_up_y_offset : this.stem_down_y_offset;\n const unsigned_height = this.y_bottom - this.y_top + (Stem.HEIGHT - y_offset + this.stem_extension); // parentheses just for grouping.\n return unsigned_height * this.stem_direction;\n }\n getBoundingBox() {\n throw new RuntimeError('NotImplemented', 'getBoundingBox() not implemented.');\n }\n // Get the y coordinates for the very base of the stem to the top of\n // the extension\n getExtents() {\n const isStemUp = this.stem_direction === Stem.UP;\n const ys = [this.y_top, this.y_bottom];\n const stemHeight = Stem.HEIGHT + this.stem_extension;\n const innerMostNoteheadY = (isStemUp ? Math.min : Math.max)(...ys);\n const outerMostNoteheadY = (isStemUp ? Math.max : Math.min)(...ys);\n const stemTipY = innerMostNoteheadY + stemHeight * -this.stem_direction;\n return { topY: stemTipY, baseY: outerMostNoteheadY };\n }\n setVisibility(isVisible) {\n this.hide = !isVisible;\n return this;\n }\n setStemlet(isStemlet, stemletHeight) {\n this.isStemlet = isStemlet;\n this.stemletHeight = stemletHeight;\n return this;\n }\n adjustHeightForFlag() {\n this.renderHeightAdjustment = Tables.currentMusicFont().lookupMetric('stem.heightAdjustmentForFlag', -3);\n }\n adjustHeightForBeam() {\n this.renderHeightAdjustment = -Stem.WIDTH / 2;\n }\n // Render the stem onto the canvas\n draw() {\n this.setRendered();\n if (this.hide)\n return;\n const ctx = this.checkContext();\n let stem_x;\n let stem_y;\n const stem_direction = this.stem_direction;\n let y_base_offset = 0;\n if (stem_direction === Stem.DOWN) {\n // Down stems are rendered to the left of the head.\n stem_x = this.x_begin;\n stem_y = this.y_top + this.stem_down_y_offset;\n y_base_offset = this.stem_down_y_base_offset;\n }\n else {\n // Up stems are rendered to the right of the head.\n stem_x = this.x_end;\n stem_y = this.y_bottom - this.stem_up_y_offset;\n y_base_offset = this.stem_up_y_base_offset;\n }\n const stemHeight = this.getHeight();\n L('Rendering stem - ', 'Top Y: ', this.y_top, 'Bottom Y: ', this.y_bottom);\n // The offset from the stem's base which is required fo satisfy the stemlet height\n const stemletYOffset = this.isStemlet ? stemHeight - this.stemletHeight * this.stem_direction : 0;\n // Draw the stem\n ctx.save();\n ctx.openGroup('stem', this.getAttribute('id'), { pointerBBox: true });\n this.applyStyle(ctx);\n ctx.beginPath();\n ctx.setLineWidth(Stem.WIDTH);\n ctx.moveTo(stem_x, stem_y - stemletYOffset + y_base_offset);\n ctx.lineTo(stem_x, stem_y - stemHeight - this.renderHeightAdjustment * stem_direction);\n ctx.stroke();\n this.restoreStyle(ctx);\n ctx.closeGroup();\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Stem.DEBUG` to `true`. */\nStem.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextFormatter.DEBUG)\n log('Vex.Flow.TextFormatter', args);\n}\n/**\n * Text widths are stored in a cache, so we don't have to recompute widths\n * for the same font + string combination.\n *\n * The cache is first keyed by the font information. The key is of the form:\n * `${family}-${size}-${weight}-${style}`\n * The second level key is the specific text to be measured.\n *\n * The stored value is the measured width in `em` units.\n * textWidth == textWidthCache[cacheKey][textToMeasure]\n */\nconst textWidthCache = {};\n/**\n * Applications may register additional fonts via `TextFormatter.registerInfo(info)`.\n * The metrics for those fonts will be made available to the application.\n */\nconst registry = {};\nexport class TextFormatter {\n /**\n * Use `TextFormatter.create(...)` to build an instance from information previously\n * registered via `TextFormatter.registerInfo(info)`.\n */\n constructor(formatterInfo) {\n /** Font family. */\n this.family = '';\n /** Specified in `pt` units. */\n this.size = 14;\n /** Font metrics are extracted at 1000 upem (units per em). */\n this.resolution = 1000;\n /**\n * For text formatting, we do not require glyph outlines, but instead rely on glyph\n * bounding box metrics such as:\n * ```\n * {\n * x_min: 48,\n * x_max: 235,\n * y_min: -17,\n * y_max: 734,\n * ha: 751,\n * leftSideBearing: 48,\n * advanceWidth: 286,\n * }\n * ```\n */\n this.glyphs = {};\n this.serifs = false;\n this.monospaced = false;\n this.italic = false;\n this.bold = false;\n this.superscriptOffset = 0;\n this.subscriptOffset = 0;\n this.maxSizeGlyph = 'H';\n // This is an internal key used to index the `textWidthCache`.\n this.cacheKey = '';\n this.updateParams(formatterInfo);\n }\n /**\n * Return all registered font families.\n */\n static getFontFamilies() {\n const registeredFonts = [];\n for (const fontFamily in registry) {\n const formatterInfo = registry[fontFamily];\n registeredFonts.push(Object.assign({}, formatterInfo));\n }\n return registeredFonts;\n }\n /**\n * Call `TextFormatter.registerInfo(info)` to register font information before using this method.\n *\n * This method creates a formatter for the font that most closely matches the requested font.\n * We compare font family, bold, and italic attributes.\n * This method will return a fallback formatter if there are no matches.\n */\n static create(requestedFont = {}) {\n L('create: ', requestedFont);\n if (!requestedFont.family) {\n requestedFont.family = Font.SANS_SERIF;\n }\n // TODO: One potential (small) optimization is to cache the TextFormatter object\n // returned for each font info. We would probably want to clear the cache if\n // the registry is ever updated.\n const candidates = [];\n // The incoming font family is a string of comma-separated font family names.\n // (e.g., `PetalumaScript, Arial, sans-serif`).\n const requestedFamilies = requestedFont.family.split(/\\s*,\\s*/);\n for (const requestedFamily of requestedFamilies) {\n for (const fontFamily in registry) {\n // Support cases where the registry contains 'Roboto Slab Medium',\n // but the requestedFont.family is 'Roboto Slab'.\n if (fontFamily.startsWith(requestedFamily)) {\n candidates.push(registry[fontFamily]);\n }\n }\n if (candidates.length > 0) {\n break;\n }\n }\n let formatter;\n if (candidates.length === 0) {\n // No match, so return a fallback text formatter.\n formatter = new TextFormatter(Object.values(registry)[0]);\n }\n else if (candidates.length === 1) {\n formatter = new TextFormatter(candidates[0]);\n }\n else {\n const bold = Font.isBold(requestedFont.weight);\n const italic = Font.isItalic(requestedFont.style);\n const perfectMatch = candidates.find((f) => f.bold === bold && f.italic === italic);\n if (perfectMatch) {\n formatter = new TextFormatter(perfectMatch);\n }\n else {\n const partialMatch = candidates.find((f) => f.italic === italic || f.bold === bold);\n if (partialMatch) {\n formatter = new TextFormatter(partialMatch);\n }\n else {\n formatter = new TextFormatter(candidates[0]);\n }\n }\n }\n const fontSize = requestedFont.size;\n if (typeof fontSize !== 'undefined') {\n const fontSizeInPt = Font.convertSizeToPointValue(fontSize);\n formatter.setFontSize(fontSizeInPt);\n }\n return formatter;\n }\n /**\n * @param fontFamily used as a key to the font registry.\n * @returns the same info object that was passed in via `TextFormatter.registerInfo(info)`\n */\n static getInfo(fontFamily) {\n return registry[fontFamily];\n }\n /**\n * Apps may register their own fonts and metrics, and those metrics\n * will be available to the app for formatting.\n *\n * Metrics can be generated from a font file using fontgen_text.js in the tools/fonts directory.\n * @param info\n * @param overwrite\n */\n static registerInfo(info, overwrite = false) {\n L('registerInfo: ', info, overwrite);\n const fontFamily = info.family;\n const currFontInfo = registry[fontFamily];\n if (currFontInfo === undefined || overwrite) {\n registry[fontFamily] = info;\n }\n }\n updateParams(params) {\n if (params.family)\n this.family = params.family;\n if (params.resolution)\n this.resolution = params.resolution;\n if (params.glyphs)\n this.glyphs = params.glyphs;\n if (params.serifs)\n this.serifs = params.serifs;\n if (params.monospaced)\n this.monospaced = params.monospaced;\n if (params.italic)\n this.italic = params.italic;\n if (params.bold)\n this.bold = params.bold;\n if (params.maxSizeGlyph)\n this.maxSizeGlyph = params.maxSizeGlyph;\n if (params.superscriptOffset)\n this.superscriptOffset = params.superscriptOffset;\n if (params.subscriptOffset)\n this.subscriptOffset = params.subscriptOffset;\n this.updateCacheKey();\n }\n /** Create a hash with the current font data, so we can cache computed widths. */\n updateCacheKey() {\n const family = this.family.replace(/\\s+/g, '_');\n const size = this.size;\n const weight = this.bold ? FontWeight.BOLD : FontWeight.NORMAL;\n const style = this.italic ? FontStyle.ITALIC : FontStyle.NORMAL;\n // Use the same key format as SVGContext.\n this.cacheKey = `${family}%${size}%${weight}%${style}`;\n }\n /**\n * The glyphs table is indexed by the character (e.g., 'C', '@').\n * See: robotoslab_glyphs.ts & petalumascript_glyphs.ts.\n */\n getGlyphMetrics(character) {\n if (this.glyphs[character]) {\n return this.glyphs[character];\n }\n else {\n return this.glyphs[this.maxSizeGlyph];\n }\n }\n get maxHeight() {\n const metrics = this.getGlyphMetrics(this.maxSizeGlyph);\n return (metrics.ha / this.resolution) * this.fontSizeInPixels;\n }\n /**\n * Retrieve the character's advanceWidth as a fraction of an `em` unit.\n * For the space character ' ' as defined in the:\n * petalumascript_glyphs.ts: 250 advanceWidth in the 1000 unitsPerEm font returns 0.25.\n * robotoslab_glyphs.ts: 509 advanceWidth in the 2048 unitsPerEm font returns 0.2485.\n */\n getWidthForCharacterInEm(c) {\n var _a;\n const metrics = this.getGlyphMetrics(c);\n if (!metrics) {\n // An arbitrary number, close to the `em` width of the '#' and '5' characters in PetalumaScript.\n return 0.65;\n }\n else {\n const advanceWidth = (_a = metrics.advanceWidth) !== null && _a !== void 0 ? _a : 0;\n return advanceWidth / this.resolution;\n }\n }\n /**\n * Retrieve the total width of `text` in `em` units.\n */\n getWidthForTextInEm(text) {\n const key = this.cacheKey;\n // Get the cache for this specific font family, size, weight, style combination.\n // The cache contains previously computed widths for different `text` strings.\n let cachedWidths = textWidthCache[key];\n if (cachedWidths === undefined) {\n cachedWidths = {};\n textWidthCache[key] = cachedWidths;\n }\n let width = cachedWidths[text];\n if (width === undefined) {\n width = 0;\n for (let i = 0; i < text.length; ++i) {\n width += this.getWidthForCharacterInEm(text[i]);\n }\n cachedWidths[text] = width;\n }\n return width;\n }\n /** The width of the text (in `em`) is scaled by the font size (in `px`). */\n getWidthForTextInPx(text) {\n return this.getWidthForTextInEm(text) * this.fontSizeInPixels;\n }\n /**\n * @param size in pt.\n */\n setFontSize(size) {\n this.size = size;\n // The width cache key depends on the current font size.\n this.updateCacheKey();\n return this;\n }\n /** `this.size` is specified in points. Convert to pixels. */\n get fontSizeInPixels() {\n return this.size * Font.scaleToPxFrom.pt;\n }\n getResolution() {\n return this.resolution;\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.TextFormatter.DEBUG` to `true`. */\nTextFormatter.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category, isStemmableNote, isTabNote } from './typeguard';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Annotation.DEBUG)\n log('Vex.Flow.Annotation', args);\n}\nexport var AnnotationHorizontalJustify;\n(function (AnnotationHorizontalJustify) {\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"LEFT\"] = 1] = \"LEFT\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"CENTER\"] = 2] = \"CENTER\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"RIGHT\"] = 3] = \"RIGHT\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(AnnotationHorizontalJustify || (AnnotationHorizontalJustify = {}));\nexport var AnnotationVerticalJustify;\n(function (AnnotationVerticalJustify) {\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"TOP\"] = 1] = \"TOP\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"CENTER\"] = 2] = \"CENTER\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"BOTTOM\"] = 3] = \"BOTTOM\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(AnnotationVerticalJustify || (AnnotationVerticalJustify = {}));\n/**\n * Annotations are modifiers that can be attached to\n * notes.\n *\n * See `tests/annotation_tests.ts` for usage examples.\n */\nexport class Annotation extends Modifier {\n /**\n * Annotations inherit from `Modifier` and is positioned correctly when\n * in a `ModifierContext`.\n * Create a new `Annotation` with the string `text`.\n */\n constructor(text) {\n super();\n this.text = text;\n this.horizontalJustification = AnnotationHorizontalJustify.CENTER;\n // warning: the default in the constructor is TOP, but in the factory the default is BOTTOM.\n // this is to support legacy application that may expect this.\n this.verticalJustification = AnnotationVerticalJustify.TOP;\n this.resetFont();\n // The default width is calculated from the text.\n this.setWidth(Tables.textWidth(text));\n }\n /** Annotations category string. */\n static get CATEGORY() {\n return Category.Annotation;\n }\n // Use the same padding for annotations as note head so the\n // words don't run into each other.\n static get minAnnotationPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Arrange annotations within a `ModifierContext` */\n static format(annotations, state) {\n if (!annotations || annotations.length === 0)\n return false;\n let leftWidth = 0;\n let rightWidth = 0;\n let maxLeftGlyphWidth = 0;\n let maxRightGlyphWidth = 0;\n for (let i = 0; i < annotations.length; ++i) {\n const annotation = annotations[i];\n const textFormatter = TextFormatter.create(annotation.textFont);\n // Text height is expressed in fractional stave spaces.\n const textLines = (5 + textFormatter.maxHeight) / Tables.STAVE_LINE_DISTANCE;\n let verticalSpaceNeeded = textLines;\n const note = annotation.checkAttachedNote();\n const glyphWidth = note.getGlyph().getWidth();\n // Get the text width from the font metrics.\n const textWidth = textFormatter.getWidthForTextInPx(annotation.text);\n if (annotation.horizontalJustification === AnnotationHorizontalJustify.LEFT) {\n maxLeftGlyphWidth = Math.max(glyphWidth, maxLeftGlyphWidth);\n leftWidth = Math.max(leftWidth, textWidth) + Annotation.minAnnotationPadding;\n }\n else if (annotation.horizontalJustification === AnnotationHorizontalJustify.RIGHT) {\n maxRightGlyphWidth = Math.max(glyphWidth, maxRightGlyphWidth);\n rightWidth = Math.max(rightWidth, textWidth);\n }\n else {\n leftWidth = Math.max(leftWidth, textWidth / 2) + Annotation.minAnnotationPadding;\n rightWidth = Math.max(rightWidth, textWidth / 2);\n maxLeftGlyphWidth = Math.max(glyphWidth / 2, maxLeftGlyphWidth);\n maxRightGlyphWidth = Math.max(glyphWidth / 2, maxRightGlyphWidth);\n }\n const stave = note.getStave();\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let stemHeight = 0;\n let lines = 5;\n if (isTabNote(note)) {\n if (note.render_options.draw_stem) {\n const stem = note.getStem();\n if (stem) {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n else {\n stemHeight = 0;\n }\n }\n else if (isStemmableNote(note)) {\n const stem = note.getStem();\n if (stem && note.getNoteType() === 'n') {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n if (stave) {\n lines = stave.getNumLines();\n }\n if (annotation.verticalJustification === this.VerticalJustify.TOP) {\n let noteLine = note.getLineNumber(true);\n if (isTabNote(note)) {\n noteLine = lines - (note.leastString() - 0.5);\n }\n if (stemDirection === Stem.UP) {\n noteLine += stemHeight;\n }\n const curTop = noteLine + state.top_text_line + 0.5;\n if (curTop < lines) {\n annotation.setTextLine(lines - noteLine);\n verticalSpaceNeeded += lines - noteLine;\n state.top_text_line = verticalSpaceNeeded;\n }\n else {\n annotation.setTextLine(state.top_text_line);\n state.top_text_line += verticalSpaceNeeded;\n }\n }\n else if (annotation.verticalJustification === this.VerticalJustify.BOTTOM) {\n let noteLine = lines - note.getLineNumber();\n if (isTabNote(note)) {\n noteLine = note.greatestString() - 1;\n }\n if (stemDirection === Stem.DOWN) {\n noteLine += stemHeight;\n }\n const curBottom = noteLine + state.text_line + 1;\n if (curBottom < lines) {\n annotation.setTextLine(lines - curBottom);\n verticalSpaceNeeded += lines - curBottom;\n state.text_line = verticalSpaceNeeded;\n }\n else {\n annotation.setTextLine(state.text_line);\n state.text_line += verticalSpaceNeeded;\n }\n }\n else {\n annotation.setTextLine(state.text_line);\n }\n }\n const rightOverlap = Math.min(Math.max(rightWidth - maxRightGlyphWidth, 0), Math.max(rightWidth - state.right_shift, 0));\n const leftOverlap = Math.min(Math.max(leftWidth - maxLeftGlyphWidth, 0), Math.max(leftWidth - state.left_shift, 0));\n state.left_shift += leftOverlap;\n state.right_shift += rightOverlap;\n return true;\n }\n /**\n * Set vertical position of text (above or below stave).\n * @param just value in `AnnotationVerticalJustify`.\n */\n setVerticalJustification(just) {\n this.verticalJustification = typeof just === 'string' ? Annotation.VerticalJustifyString[just] : just;\n return this;\n }\n /**\n * Get horizontal justification.\n */\n getJustification() {\n return this.horizontalJustification;\n }\n /**\n * Set horizontal justification.\n * @param justification value in `Annotation.Justify`.\n */\n setJustification(just) {\n this.horizontalJustification = typeof just === 'string' ? Annotation.HorizontalJustifyString[just] : just;\n return this;\n }\n /** Render text beside the note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n const textFormatter = TextFormatter.create(this.textFont);\n const start = note.getModifierStartXY(ModifierPosition.ABOVE, this.index);\n this.setRendered();\n // We're changing context parameters. Save current state.\n ctx.save();\n // Apply style might not save context, if this.style is undefined, so we\n // still need to save context state just before this, since we will be\n // changing ctx parameters below.\n this.applyStyle();\n ctx.openGroup('annotation', this.getAttribute('id'));\n ctx.setFont(this.textFont);\n const text_width = ctx.measureText(this.text).width;\n const text_height = textFormatter.maxHeight + 2;\n let x;\n let y;\n if (this.horizontalJustification === AnnotationHorizontalJustify.LEFT) {\n x = start.x;\n }\n else if (this.horizontalJustification === AnnotationHorizontalJustify.RIGHT) {\n x = start.x - text_width;\n }\n else if (this.horizontalJustification === AnnotationHorizontalJustify.CENTER) {\n x = start.x - text_width / 2;\n } /* CENTER_STEM */\n else {\n x = note.getStemX() - text_width / 2;\n }\n let stem_ext = {};\n let spacing = 0;\n const has_stem = note.hasStem();\n const stave = note.checkStave();\n // The position of the text varies based on whether or not the note\n // has a stem.\n if (has_stem) {\n stem_ext = note.checkStem().getExtents();\n spacing = stave.getSpacingBetweenLines();\n }\n if (this.verticalJustification === AnnotationVerticalJustify.BOTTOM) {\n // Use the largest (lowest) Y value\n const ys = note.getYs();\n y = ys.reduce((a, b) => (a > b ? a : b));\n y += (this.text_line + 1) * Tables.STAVE_LINE_DISTANCE + text_height;\n if (has_stem && stemDirection === Stem.DOWN) {\n y = Math.max(y, stem_ext.topY + text_height + spacing * this.text_line);\n }\n }\n else if (this.verticalJustification === AnnotationVerticalJustify.CENTER) {\n const yt = note.getYForTopText(this.text_line) - 1;\n const yb = stave.getYForBottomText(this.text_line);\n y = yt + (yb - yt) / 2 + text_height / 2;\n }\n else if (this.verticalJustification === AnnotationVerticalJustify.TOP) {\n y = note.getYs()[0] - (this.text_line + 1) * Tables.STAVE_LINE_DISTANCE;\n if (has_stem && stemDirection === Stem.UP) {\n // If the stem is above the stave already, go with default line width vs. actual\n // since the lines between don't really matter.\n spacing = stem_ext.topY < stave.getTopLineTopY() ? Tables.STAVE_LINE_DISTANCE : spacing;\n y = Math.min(y, stem_ext.topY - spacing * (this.text_line + 1));\n }\n } /* CENTER_STEM */\n else {\n const extents = note.getStemExtents();\n y = extents.topY + (extents.baseY - extents.topY) / 2 + text_height / 2;\n }\n L('Rendering annotation: ', this.text, x, y);\n ctx.fillText(this.text, x, y);\n ctx.closeGroup();\n this.restoreStyle();\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Annotation.DEBUG` to `true`. */\nAnnotation.DEBUG = false;\nAnnotation.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n/** Text annotations can be positioned and justified relative to the note. */\nAnnotation.HorizontalJustify = AnnotationHorizontalJustify;\nAnnotation.HorizontalJustifyString = {\n left: AnnotationHorizontalJustify.LEFT,\n right: AnnotationHorizontalJustify.RIGHT,\n center: AnnotationHorizontalJustify.CENTER,\n centerStem: AnnotationHorizontalJustify.CENTER_STEM,\n};\nAnnotation.VerticalJustify = AnnotationVerticalJustify;\nAnnotation.VerticalJustifyString = {\n above: AnnotationVerticalJustify.TOP,\n top: AnnotationVerticalJustify.TOP,\n below: AnnotationVerticalJustify.BOTTOM,\n bottom: AnnotationVerticalJustify.BOTTOM,\n center: AnnotationVerticalJustify.CENTER,\n centerStem: AnnotationVerticalJustify.CENTER_STEM,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns.\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isGraceNote, isStaveNote, isStemmableNote, isTabNote } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Articulation.DEBUG)\n log('Vex.Flow.Articulation', args);\n}\nconst { ABOVE, BELOW } = Modifier.Position;\nfunction roundToNearestHalf(mathFn, value) {\n return mathFn(value / 0.5) * 0.5;\n}\n// This includes both staff and ledger lines\nfunction isWithinLines(line, position) {\n return position === ABOVE ? line <= 5 : line >= 1;\n}\nfunction getRoundingFunction(line, position) {\n if (isWithinLines(line, position)) {\n if (position === ABOVE) {\n return Math.ceil;\n }\n else {\n return Math.floor;\n }\n }\n else {\n return Math.round;\n }\n}\nfunction snapLineToStaff(canSitBetweenLines, line, position, offsetDirection) {\n // Initially, snap to nearest staff line or space\n const snappedLine = roundToNearestHalf(getRoundingFunction(line, position), line);\n const canSnapToStaffSpace = canSitBetweenLines && isWithinLines(snappedLine, position);\n const onStaffLine = snappedLine % 1 === 0;\n if (canSnapToStaffSpace && onStaffLine) {\n const HALF_STAFF_SPACE = 0.5;\n return snappedLine + HALF_STAFF_SPACE * -offsetDirection;\n }\n else {\n return snappedLine;\n }\n}\n// Helper function for checking if a Note object is either a StaveNote or a GraceNote.\nconst isStaveOrGraceNote = (note) => isStaveNote(note) || isGraceNote(note);\nfunction getTopY(note, textLine) {\n const stemDirection = note.getStemDirection();\n const { topY: stemTipY, baseY: stemBaseY } = note.getStemExtents();\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemTipY;\n }\n else {\n return stemBaseY;\n }\n }\n else {\n return Math.min(...note.getYs());\n }\n }\n else if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemTipY;\n }\n else {\n return note.checkStave().getYForTopText(textLine);\n }\n }\n else {\n return note.checkStave().getYForTopText(textLine);\n }\n }\n else {\n throw new RuntimeError('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes');\n }\n}\nfunction getBottomY(note, textLine) {\n const stemDirection = note.getStemDirection();\n const { topY: stemTipY, baseY: stemBaseY } = note.getStemExtents();\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemBaseY;\n }\n else {\n return stemTipY;\n }\n }\n else {\n return Math.max(...note.getYs());\n }\n }\n else if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return note.checkStave().getYForBottomText(textLine);\n }\n else {\n return stemTipY;\n }\n }\n else {\n return note.checkStave().getYForBottomText(textLine);\n }\n }\n else {\n throw new RuntimeError('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes');\n }\n}\n/**\n * Get the initial offset of the articulation from the y value of the starting position.\n * This is required because the top/bottom text positions already have spacing applied to\n * provide a \"visually pleasant\" default position. However the y values provided from\n * the stavenote's top/bottom do *not* have any pre-applied spacing. This function\n * normalizes this asymmetry.\n * @param note\n * @param position\n * @returns\n */\nfunction getInitialOffset(note, position) {\n const isOnStemTip = (position === ABOVE && note.getStemDirection() === Stem.UP) ||\n (position === BELOW && note.getStemDirection() === Stem.DOWN);\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem() && isOnStemTip) {\n return 0.5;\n }\n else {\n // this amount is larger than the stem-tip offset because we start from\n // the center of the notehead\n return 1;\n }\n }\n else {\n if (note.hasStem() && isOnStemTip) {\n return 1;\n }\n else {\n return 0;\n }\n }\n}\n/**\n * Articulations and Accents are modifiers that can be\n * attached to notes. The complete list of articulations is available in\n * `tables.ts` under `Vex.Flow.articulationCodes`.\n *\n * See `tests/articulation_tests.ts` for usage examples.\n */\nexport class Articulation extends Modifier {\n /**\n * Create a new articulation.\n * @param type entry in `Vex.Flow.articulationCodes` in `tables.ts`\n */\n constructor(type) {\n super();\n this.type = type;\n this.position = BELOW;\n this.render_options = {\n font_scale: 38,\n };\n this.reset();\n }\n /** Articulations category string. */\n static get CATEGORY() {\n return Category.Articulation;\n }\n /**\n * FIXME:\n * Most of the complex formatting logic (ie: snapping to space) is\n * actually done in .render(). But that logic belongs in this method.\n *\n * Unfortunately, this isn't possible because, by this point, stem lengths\n * have not yet been finalized. Finalized stem lengths are required to determine the\n * initial position of any stem-side articulation.\n *\n * This indicates that all objects should have their stave set before being\n * formatted. It can't be an optional if you want accurate vertical positioning.\n * Consistently positioned articulations that play nice with other modifiers\n * won't be possible until we stop relying on render-time formatting.\n *\n * Ideally, when this function has completed, the vertical articulation positions\n * should be ready to render without further adjustment. But the current state\n * is far from this ideal.\n */\n static format(articulations, state) {\n if (!articulations || articulations.length === 0)\n return false;\n const margin = 0.5;\n let maxGlyphWidth = 0;\n const getIncrement = (articulation, line, position) => roundToNearestHalf(getRoundingFunction(line, position), defined(articulation.glyph.getMetrics().height) / 10 + margin);\n articulations.forEach((articulation) => {\n const note = articulation.checkAttachedNote();\n maxGlyphWidth = Math.max(note.getGlyph().getWidth(), maxGlyphWidth);\n let lines = 5;\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let stemHeight = 0;\n // Decide if we need to consider beam direction in placement.\n if (isStemmableNote(note)) {\n const stem = note.getStem();\n if (stem) {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n const stave = note.getStave();\n if (stave) {\n lines = stave.getNumLines();\n }\n if (articulation.getPosition() === ABOVE) {\n let noteLine = note.getLineNumber(true);\n if (stemDirection === Stem.UP) {\n noteLine += stemHeight;\n }\n let increment = getIncrement(articulation, state.top_text_line, ABOVE);\n const curTop = noteLine + state.top_text_line + 0.5;\n // If articulation must be above stave, add lines between note and stave top\n if (!articulation.articulation.between_lines && curTop < lines) {\n increment += lines - curTop;\n }\n articulation.setTextLine(state.top_text_line);\n state.top_text_line += increment;\n }\n else if (articulation.getPosition() === BELOW) {\n let noteLine = Math.max(lines - note.getLineNumber(), 0);\n if (stemDirection === Stem.DOWN) {\n noteLine += stemHeight;\n }\n let increment = getIncrement(articulation, state.text_line, BELOW);\n const curBottom = noteLine + state.text_line + 0.5;\n // if articulation must be below stave, add lines from note to stave bottom\n if (!articulation.articulation.between_lines && curBottom < lines) {\n increment += lines - curBottom;\n }\n articulation.setTextLine(state.text_line);\n state.text_line += increment;\n }\n });\n const width = articulations\n .map((articulation) => articulation.getWidth())\n .reduce((maxWidth, articWidth) => Math.max(articWidth, maxWidth));\n const overlap = Math.min(Math.max(width - maxGlyphWidth, 0), Math.max(width - (state.left_shift + state.right_shift), 0));\n state.left_shift += overlap / 2;\n state.right_shift += overlap / 2;\n return true;\n }\n static easyScoreHook({ articulations }, note, builder) {\n if (!articulations)\n return;\n const articNameToCode = {\n staccato: 'a.',\n tenuto: 'a-',\n accent: 'a>',\n };\n articulations\n .split(',')\n .map((articString) => articString.trim().split('.'))\n .map(([name, position]) => {\n const artic = { type: articNameToCode[name] };\n if (position)\n artic.position = Modifier.PositionString[position];\n return builder.getFactory().Articulation(artic);\n })\n .map((artic) => note.addModifier(artic, 0));\n }\n reset() {\n this.articulation = Tables.articulationCodes(this.type);\n const articulation = defined(this.articulation, 'ArgumentError', `Articulation not found: ${this.type}`);\n const code = (this.position === ABOVE ? articulation.aboveCode : articulation.belowCode) || articulation.code;\n this.glyph = new Glyph(code !== null && code !== void 0 ? code : '', this.render_options.font_scale);\n this.setWidth(defined(this.glyph.getMetrics().width));\n }\n /** Render articulation in position next to note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const index = this.checkIndex();\n const { position, glyph, text_line: textLine } = this;\n const canSitBetweenLines = this.articulation.between_lines;\n const stave = note.checkStave();\n const staffSpace = stave.getSpacingBetweenLines();\n const isTab = isTabNote(note);\n // Articulations are centered over/under the note head.\n const { x } = note.getModifierStartXY(position, index);\n const shouldSitOutsideStaff = !canSitBetweenLines || isTab;\n const initialOffset = getInitialOffset(note, position);\n const padding = Tables.currentMusicFont().lookupMetric(`articulation.${glyph.getCode()}.padding`, 0);\n let y = {\n [ABOVE]: () => {\n glyph.setOrigin(0.5, 1);\n const y = getTopY(note, textLine) - (textLine + initialOffset) * staffSpace;\n return shouldSitOutsideStaff ? Math.min(stave.getYForTopText(Articulation.INITIAL_OFFSET), y) : y;\n },\n [BELOW]: () => {\n glyph.setOrigin(0.5, 0);\n const y = getBottomY(note, textLine) + (textLine + initialOffset) * staffSpace;\n return shouldSitOutsideStaff ? Math.max(stave.getYForBottomText(Articulation.INITIAL_OFFSET), y) : y;\n },\n }[position]();\n if (!isTab) {\n const offsetDirection = position === ABOVE ? -1 : +1;\n const noteLine = note.getKeyProps()[index].line;\n const distanceFromNote = (note.getYs()[index] - y) / staffSpace;\n const articLine = distanceFromNote + Number(noteLine);\n const snappedLine = snapLineToStaff(canSitBetweenLines, articLine, position, offsetDirection);\n if (isWithinLines(snappedLine, position))\n glyph.setOrigin(0.5, 0.5);\n y += Math.abs(snappedLine - articLine) * staffSpace * offsetDirection + padding * offsetDirection;\n }\n L(`Rendering articulation at (x: ${x}, y: ${y})`);\n glyph.render(ctx, x, y);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Articulation.DEBUG` to `true`. */\nArticulation.DEBUG = false;\nArticulation.INITIAL_OFFSET = -0.5;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2021.\n// MIT License\nimport { Category } from './typeguard';\nexport class RenderContext {\n static get CATEGORY() {\n return Category.RenderContext;\n }\n set font(f) {\n this.setFont(f);\n }\n get font() {\n return this.getFont();\n }\n /**\n * This is kept for backwards compatibility with 3.0.9.\n * @deprecated use `setFont(...)` instead since it now supports CSS font shorthand.\n */\n setRawFont(f) {\n this.setFont(f);\n return this;\n }\n}\n/**\n * Draw a tiny dot marker on the specified context. A great debugging aid.\n * @param ctx context\n * @param x dot x coordinate\n * @param y dot y coordinate\n * @param color\n */\nexport function drawDot(ctx, x, y, color = '#F55') {\n ctx.save();\n ctx.setFillStyle(color);\n // draw a circle\n ctx.beginPath();\n ctx.arc(x, y, 3, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n ctx.restore();\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\n/**\n * Tickable represents a element that sit on a score and\n * has a duration, i.e., Tickables occupy space in the musical rendering dimension.\n */\nexport class Tickable extends Element {\n constructor() {\n super();\n this._preFormatted = false;\n this._postFormatted = false;\n // These properties represent the duration of\n // this tickable element.\n this.ticks = new Fraction(0, 1); // Fractional value of ticks\n this.intrinsicTicks = 0; // Floating point value of ticks\n this.tickMultiplier = new Fraction(1, 1);\n // Formatter metrics\n this.width = 0;\n this.x_shift = 0; // Shift from tick context\n this.modifiers = [];\n this.tupletStack = [];\n this.align_center = false;\n this.center_x_shift = 0; // Shift from tick context if center aligned\n // This flag tells the formatter to ignore this tickable during\n // formatting and justification. It is set by tickables such as BarNote.\n this.ignore_ticks = false;\n // This is a space for an external formatting class or function to maintain\n // metrics.\n this.formatterMetrics = {\n // The freedom of a tickable is the distance it can move without colliding\n // with neighboring elements. A formatter can set these values during its\n // formatting pass, which a different formatter can then use to fine tune.\n freedom: { left: 0, right: 0 },\n // The simplified rational duration of this tick as a string. It can be\n // used as an index to a map or hashtable.\n duration: '',\n // The number of formatting iterations undergone.\n iterations: 0,\n // The space in pixels allocated by this formatter, along with the mean space\n // for tickables of this duration, and the deviation from the mean.\n space: {\n used: 0,\n mean: 0,\n deviation: 0,\n },\n };\n }\n static get CATEGORY() {\n return Category.Tickable;\n }\n /** Reset the Tickable, this function will be overloaded. */\n reset() {\n return this;\n }\n /** Return the ticks. */\n getTicks() {\n return this.ticks;\n }\n /** Check if it ignores the ticks. */\n shouldIgnoreTicks() {\n return this.ignore_ticks;\n }\n /** Ignore the ticks. */\n setIgnoreTicks(flag) {\n this.ignore_ticks = flag;\n return this;\n }\n /** Set width of note. Used by the formatter for positioning. */\n setWidth(width) {\n this.width = width;\n }\n /** Get width of note. Used by the formatter for positioning. */\n getWidth() {\n if (!this._preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetWidth on an unformatted note.\");\n }\n return this.width + (this.modifierContext ? this.modifierContext.getWidth() : 0);\n }\n /** Displace note by `x` pixels. Used by the formatter. */\n setXShift(x) {\n this.x_shift = x;\n return this;\n }\n /** Get the `x` displaced pixels of the note. */\n getXShift() {\n return this.x_shift;\n }\n /** Get `x` position of this tick context. */\n getX() {\n const tickContext = this.checkTickContext(`Can't getX() without a TickContext.`);\n return tickContext.getX() + this.x_shift;\n }\n /** Return the formatterMetrics. */\n getFormatterMetrics() {\n return this.formatterMetrics;\n }\n /** Return the center `x` shift. */\n getCenterXShift() {\n if (this.isCenterAligned()) {\n return this.center_x_shift;\n }\n return 0;\n }\n /** Set the center `x` shift. */\n setCenterXShift(centerXShift) {\n this.center_x_shift = centerXShift;\n return this;\n }\n // Check if tickable is center aligned. */\n isCenterAligned() {\n return this.align_center;\n }\n // Set/unset center alignment. */\n setCenterAlignment(align_center) {\n this.align_center = align_center;\n return this;\n }\n /**\n * Return the associated voice. Every tickable must be associated with a voice.\n * This allows formatters and preFormatter to associate them with the right modifierContexts.\n */\n getVoice() {\n return defined(this.voice, 'NoVoice', 'Tickable has no voice.');\n }\n /** Set the associated voice. */\n setVoice(voice) {\n this.voice = voice;\n }\n /** Get the tuplet. */\n getTuplet() {\n return this.tuplet;\n }\n /** Return the intrinsic ticks. */\n getTupletStack() {\n return this.tupletStack;\n }\n /**\n * Reset the specific Tuplet if this is not provided, all tuplets are reset.\n * Remove any prior tuplets from the tick calculation and\n * reset the intrinsic tick value.\n */\n resetTuplet(tuplet) {\n let noteCount;\n let notesOccupied;\n if (tuplet) {\n const i = this.tupletStack.indexOf(tuplet);\n if (i !== -1) {\n this.tupletStack.splice(i, 1);\n noteCount = tuplet.getNoteCount();\n notesOccupied = tuplet.getNotesOccupied();\n // Revert old multiplier by inverting numerator & denom.:\n this.applyTickMultiplier(noteCount, notesOccupied);\n }\n return this;\n }\n while (this.tupletStack.length) {\n tuplet = this.tupletStack.pop();\n noteCount = tuplet.getNoteCount();\n notesOccupied = tuplet.getNotesOccupied();\n // Revert old multiplier by inverting numerator & denom.:\n this.applyTickMultiplier(noteCount, notesOccupied);\n }\n return this;\n }\n /** Attach to new tuplet. */\n setTuplet(tuplet) {\n if (tuplet) {\n this.tupletStack.push(tuplet);\n const noteCount = tuplet.getNoteCount();\n const notesOccupied = tuplet.getNotesOccupied();\n this.applyTickMultiplier(notesOccupied, noteCount);\n }\n this.tuplet = tuplet;\n return this;\n }\n /**\n * Add self to the provided ModifierContext `mc`.\n * If this tickable has modifiers, set modifierContext.\n * @returns this\n */\n addToModifierContext(mc) {\n this.modifierContext = mc;\n for (let i = 0; i < this.modifiers.length; ++i) {\n this.modifierContext.addMember(this.modifiers[i]);\n }\n this.modifierContext.addMember(this);\n this._preFormatted = false;\n return this;\n }\n /**\n * Optional, if tickable has modifiers, associate a Modifier.\n * @param mod the modifier\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n addModifier(modifier, index = 0) {\n this.modifiers.push(modifier);\n this._preFormatted = false;\n return this;\n }\n /** Get the list of associated modifiers. */\n getModifiers() {\n return this.modifiers;\n }\n /** Set the Tick Context. */\n setTickContext(tc) {\n this.tickContext = tc;\n this._preFormatted = false;\n }\n checkTickContext(message = 'Tickable has no tick context.') {\n return defined(this.tickContext, 'NoTickContext', message);\n }\n /** Preformat the Tickable. */\n preFormat() {\n if (this._preFormatted)\n return;\n this.width = 0;\n if (this.modifierContext) {\n this.modifierContext.preFormat();\n this.width += this.modifierContext.getWidth();\n }\n }\n /** Set preformatted status. */\n set preFormatted(value) {\n this._preFormatted = value;\n }\n get preFormatted() {\n return this._preFormatted;\n }\n /** Postformat the Tickable. */\n postFormat() {\n if (this._postFormatted)\n return this;\n this._postFormatted = true;\n return this;\n }\n /** Set postformatted status. */\n set postFormatted(value) {\n this._postFormatted = value;\n }\n get postFormatted() {\n return this._postFormatted;\n }\n /** Return the intrinsic ticks. */\n getIntrinsicTicks() {\n return this.intrinsicTicks;\n }\n /** Set the intrinsic ticks. */\n setIntrinsicTicks(intrinsicTicks) {\n this.intrinsicTicks = intrinsicTicks;\n this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks);\n }\n /** Get the tick multiplier. */\n getTickMultiplier() {\n return this.tickMultiplier;\n }\n /** Apply a tick multiplier. */\n applyTickMultiplier(numerator, denominator) {\n this.tickMultiplier.multiply(numerator, denominator);\n this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks);\n }\n /** Set the duration. */\n setDuration(duration) {\n const ticks = duration.numerator * (Tables.RESOLUTION / duration.denominator);\n this.ticks = this.tickMultiplier.clone().multiply(ticks);\n this.intrinsicTicks = this.ticks.value();\n }\n getAbsoluteX() {\n const tickContext = this.checkTickContext(`Can't getAbsoluteX() without a TickContext.`);\n return tickContext.getX();\n }\n /** Attach this note to a modifier context. */\n setModifierContext(mc) {\n this.modifierContext = mc;\n return this;\n }\n /** Get `ModifierContext`. */\n getModifierContext() {\n return this.modifierContext;\n }\n /** Check and get `ModifierContext`. */\n checkModifierContext() {\n return defined(this.modifierContext, 'NoModifierContext', 'No modifier context attached to this tickable.');\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from './font';\nimport { drawDot } from './rendercontext';\nimport { Tables } from './tables';\nimport { Tickable } from './tickable';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\n/**\n * Note implements an abstract interface for notes and chords that\n * are rendered on a stave. Notes have some common properties: All of them\n * have a value (e.g., pitch, fret, etc.) and a duration (quarter, half, etc.)\n *\n * Some notes have stems, heads, dots, etc. Most notational elements that\n * surround a note are called *modifiers*, and every note has an associated\n * array of them. All notes also have a rendering context and belong to a stave.\n */\nexport class Note extends Tickable {\n /**\n * Every note is a tickable, i.e., it can be mutated by the `Formatter` class for\n * positioning and layout.\n *\n * @param noteStruct To create a new note you need to provide a `noteStruct`.\n */\n constructor(noteStruct) {\n super();\n if (!noteStruct) {\n throw new RuntimeError('BadArguments', 'Note must have valid initialization data to identify duration and type.');\n }\n /** Parses `noteStruct` and get note properties. */\n const parsedNoteStruct = Note.parseNoteStruct(noteStruct);\n if (!parsedNoteStruct) {\n throw new RuntimeError('BadArguments', `Invalid note initialization object: ${JSON.stringify(noteStruct)}`);\n }\n // Set note properties from parameters.\n this.keys = noteStruct.keys || [];\n // per-pitch properties\n this.keyProps = [];\n this.duration = parsedNoteStruct.duration;\n this.noteType = parsedNoteStruct.type;\n this.customTypes = parsedNoteStruct.customTypes;\n if (noteStruct.duration_override) {\n // Custom duration\n this.setDuration(noteStruct.duration_override);\n }\n else {\n // Default duration\n this.setIntrinsicTicks(parsedNoteStruct.ticks);\n }\n this.modifiers = [];\n // Get the glyph code for this note from the font.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n this.customGlyphs = this.customTypes.map((t) => Tables.getGlyphProps(this.duration, t));\n // Note to play for audio players.\n this.playNote = undefined;\n // Positioning contexts used by the Formatter.\n this.ignore_ticks = false;\n // Positioning variables\n this.width = 0; // Width in pixels calculated after preFormat\n this.leftDisplacedHeadPx = 0; // Extra room on left for displaced note head\n this.rightDisplacedHeadPx = 0; // Extra room on right for displaced note head\n this.x_shift = 0; // X shift from tick context X\n this.ys = []; // list of y coordinates for each note\n // we need to hold on to these for ties and beams.\n if (noteStruct.align_center) {\n this.setCenterAlignment(noteStruct.align_center);\n }\n // The render surface.\n this.render_options = {\n annotation_spacing: 5,\n glyph_font_scale: 1,\n stroke_px: 1,\n scale: 1,\n font: '',\n y_shift: 0,\n };\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // STATIC MEMBERS\n static get CATEGORY() {\n return Category.Note;\n }\n /** Debug helper. Displays various note metrics for the given note. */\n static plotMetrics(ctx, note, yPos) {\n const metrics = note.getMetrics();\n const xStart = note.getAbsoluteX() - metrics.modLeftPx - metrics.leftDisplacedHeadPx;\n const xPre1 = note.getAbsoluteX() - metrics.leftDisplacedHeadPx;\n const xAbs = note.getAbsoluteX();\n const xPost1 = note.getAbsoluteX() + metrics.notePx;\n const xPost2 = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx;\n const xEnd = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx + metrics.modRightPx;\n const xFreedomRight = xEnd + (note.getFormatterMetrics().freedom.right || 0);\n const xWidth = xEnd - xStart;\n ctx.save();\n ctx.setFont(Font.SANS_SERIF, 8);\n ctx.fillText(Math.round(xWidth) + 'px', xStart + note.getXShift(), yPos);\n const y = yPos + 7;\n function stroke(x1, x2, color, yy = y) {\n ctx.beginPath();\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n ctx.setLineWidth(3);\n ctx.moveTo(x1 + note.getXShift(), yy);\n ctx.lineTo(x2 + note.getXShift(), yy);\n ctx.stroke();\n }\n stroke(xStart, xPre1, 'red');\n stroke(xPre1, xAbs, '#999');\n stroke(xAbs, xPost1, 'green');\n stroke(xPost1, xPost2, '#999');\n stroke(xPost2, xEnd, 'red');\n stroke(xEnd, xFreedomRight, '#DD0');\n stroke(xStart - note.getXShift(), xStart, '#BBB'); // Shift\n drawDot(ctx, xAbs + note.getXShift(), y, 'blue');\n const formatterMetrics = note.getFormatterMetrics();\n if (formatterMetrics.iterations > 0) {\n const spaceDeviation = formatterMetrics.space.deviation;\n const prefix = spaceDeviation >= 0 ? '+' : '';\n ctx.setFillStyle('red');\n ctx.fillText(prefix + Math.round(spaceDeviation), xAbs + note.getXShift(), yPos - 10);\n }\n ctx.restore();\n }\n static parseDuration(durationString) {\n if (!durationString) {\n return undefined;\n }\n const regexp = /(\\d*\\/?\\d+|[a-z])(d*)([nrhms]|$)/;\n const result = regexp.exec(durationString);\n if (!result) {\n return undefined;\n }\n const duration = result[1];\n const dots = result[2].length;\n const type = result[3] || 'n';\n return { duration, dots, type };\n }\n static parseNoteStruct(noteStruct) {\n // Preserve backwards-compatibility\n const durationProps = Note.parseDuration(noteStruct.duration);\n if (!durationProps) {\n return undefined;\n }\n // If specified type is invalid, return undefined.\n let type = noteStruct.type;\n if (type && !Tables.validTypes[type]) {\n return undefined;\n }\n // If no type specified, check duration or custom types\n const customTypes = [];\n if (!type) {\n type = durationProps.type || 'n';\n // If we have keys, try and check if we've got a custom glyph\n if (noteStruct.keys !== undefined) {\n noteStruct.keys.forEach((k, i) => {\n const result = k.split('/');\n // We have a custom glyph specified after the note eg. /X2\n customTypes[i] = (result && result.length === 3 ? result[2] : type);\n });\n }\n }\n // Calculate the tick duration of the note\n let ticks = Tables.durationToTicks(durationProps.duration);\n if (!ticks) {\n return undefined;\n }\n // Are there any dots?\n const dots = noteStruct.dots ? noteStruct.dots : durationProps.dots;\n if (typeof dots !== 'number') {\n return undefined;\n }\n // Add ticks as necessary depending on the numbr of dots\n let currentTicks = ticks;\n for (let i = 0; i < dots; i++) {\n if (currentTicks <= 1)\n return undefined;\n currentTicks = currentTicks / 2;\n ticks += currentTicks;\n }\n return {\n duration: durationProps.duration,\n type,\n customTypes,\n dots,\n ticks,\n };\n }\n /**\n * Get the play note, which is arbitrary data that can be used by an\n * audio player.\n */\n getPlayNote() {\n return this.playNote;\n }\n /**\n * Set the play note, which is arbitrary data that can be used by an\n * audio player.\n */\n setPlayNote(note) {\n this.playNote = note;\n return this;\n }\n /**\n * @returns true if this note is a type of rest.\n *\n * Rests don't have pitches, but take up space in the score.\n * Subclasses should override this default implementation.\n */\n isRest() {\n return false;\n }\n /** Add stroke. */\n addStroke(index, stroke) {\n stroke.setNote(this);\n stroke.setIndex(index);\n this.modifiers.push(stroke);\n this.preFormatted = false;\n return this;\n }\n /** Get the target stave. */\n getStave() {\n return this.stave;\n }\n /** Check and get the target stave. */\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n /** Set the target stave. */\n setStave(stave) {\n this.stave = stave;\n this.setYs([stave.getYForLine(0)]); // Update Y values if the stave is changed.\n this.setContext(this.stave.getContext());\n return this;\n }\n /** Get spacing to the left of the notes. */\n getLeftDisplacedHeadPx() {\n return this.leftDisplacedHeadPx;\n }\n /** Get spacing to the right of the notes. */\n getRightDisplacedHeadPx() {\n return this.rightDisplacedHeadPx;\n }\n /** Set spacing to the left of the notes. */\n setLeftDisplacedHeadPx(x) {\n this.leftDisplacedHeadPx = x;\n return this;\n }\n /** Set spacing to the right of the notes. */\n setRightDisplacedHeadPx(x) {\n this.rightDisplacedHeadPx = x;\n return this;\n }\n /** True if this note has no duration (e.g., bar notes, spacers, etc.). */\n shouldIgnoreTicks() {\n return this.ignore_ticks;\n }\n /** Get the stave line number for the note. */\n // eslint-disable-next-line\n getLineNumber(isTopNote) {\n return 0;\n }\n /** Get the stave line number for rest. */\n getLineForRest() {\n return 0;\n }\n /** Get the glyph associated with this note. */\n // eslint-disable-next-line\n getGlyph() {\n return this.glyph;\n }\n /** Get the glyph width. */\n getGlyphWidth() {\n // TODO: FIXME (multiple potential values for this.glyph)\n if (this.glyph) {\n if (this.glyph.getMetrics) {\n return this.glyph.getMetrics().width;\n }\n else if (this.glyph.getWidth) {\n return this.glyph.getWidth(this.render_options.glyph_font_scale);\n }\n }\n return 0;\n }\n /**\n * Set Y positions for this note. Each Y value is associated with\n * an individual pitch/key within the note/chord.\n */\n setYs(ys) {\n this.ys = ys;\n return this;\n }\n /**\n * Get Y positions for this note. Each Y value is associated with\n * an individual pitch/key within the note/chord.\n */\n getYs() {\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-values calculated for this note.');\n }\n return this.ys;\n }\n /**\n * Get the Y position of the space above the stave onto which text can\n * be rendered.\n */\n getYForTopText(text_line) {\n return this.checkStave().getYForTopText(text_line);\n }\n /** Return the voice that this note belongs in. */\n getVoice() {\n if (!this.voice)\n throw new RuntimeError('NoVoice', 'Note has no voice.');\n return this.voice;\n }\n /** Attach this note to `voice`. */\n setVoice(voice) {\n this.voice = voice;\n this.preFormatted = false;\n return this;\n }\n /** Get the `TickContext` for this note. */\n getTickContext() {\n return this.checkTickContext();\n }\n /** Set the `TickContext` for this note. */\n setTickContext(tc) {\n this.tickContext = tc;\n this.preFormatted = false;\n return this;\n }\n /** Accessor to duration. */\n getDuration() {\n return this.duration;\n }\n /** Accessor to isDotted. */\n isDotted() {\n return this.getModifiersByType('Dot').length > 0;\n }\n /** Accessor to hasStem. */\n hasStem() {\n return false;\n }\n /** Accessor to note type. */\n getNoteType() {\n return this.noteType;\n }\n /** Get the beam. */\n getBeam() {\n return this.beam;\n }\n /** Check and get the beam. */\n checkBeam() {\n return defined(this.beam, 'NoBeam', 'No beam attached to instance');\n }\n /** Check it has a beam. */\n hasBeam() {\n return this.beam != undefined;\n }\n /** Set the beam. */\n setBeam(beam) {\n this.beam = beam;\n return this;\n }\n /**\n * Attach a modifier to this note.\n * @param modifier the Modifier to add.\n * @param index of the key to modify.\n * @returns this\n */\n addModifier(modifier, index = 0) {\n const signature = 'Note.addModifier(modifier: Modifier, index: number=0)';\n // Backwards compatibility with 3.0.9.\n if (typeof index === 'string') {\n index = parseInt(index);\n // eslint-disable-next-line\n console.warn(signature + ' expected a number for `index`, but received a string.');\n }\n // Some versions of VexFlow had the two parameters reversed.\n // Check here and throw an error if the argument types are not correct.\n if (typeof modifier !== 'object' || typeof index !== 'number') {\n throw new RuntimeError('WrongParams', 'Incorrect call signature. Use ' + signature + ' instead.');\n }\n modifier.setNote(this);\n modifier.setIndex(index);\n super.addModifier(modifier);\n return this;\n }\n /** Get all modifiers of a specific type in `this.modifiers`. */\n getModifiersByType(type) {\n return this.modifiers.filter((modifier) => modifier.getCategory() === type);\n }\n /** Get the coordinates for where modifiers begin. */\n // eslint-disable-next-line\n getModifierStartXY(position, index, options) {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n return {\n x: this.getAbsoluteX(),\n y: this.ys[0],\n };\n }\n getRightParenthesisPx(index) {\n const props = this.getKeyProps()[index];\n return props.displaced ? this.getRightDisplacedHeadPx() : 0;\n }\n getLeftParenthesisPx(index) {\n const props = this.getKeyProps()[index];\n return props.displaced ? this.getLeftDisplacedHeadPx() - this.x_shift : -this.x_shift;\n }\n getFirstDotPx() {\n let px = this.getRightDisplacedHeadPx();\n if (this.checkModifierContext().getMembers('Parenthesis').length !== 0)\n px += Tables.currentMusicFont().lookupMetric('parenthesis.default.width');\n return px;\n }\n /** Get the metrics for this note. */\n getMetrics() {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getMetrics on an unformatted note.\");\n }\n const modLeftPx = this.modifierContext ? this.modifierContext.getState().left_shift : 0;\n const modRightPx = this.modifierContext ? this.modifierContext.getState().right_shift : 0;\n const width = this.getWidth();\n const glyphWidth = this.getGlyphWidth();\n const notePx = width -\n modLeftPx - // subtract left modifiers\n modRightPx - // subtract right modifiers\n this.leftDisplacedHeadPx - // subtract left displaced head\n this.rightDisplacedHeadPx; // subtract right displaced head\n // NOTE: If you change this, remember to update MockTickable.getMetrics() in the tests/ directory.\n return {\n width,\n glyphWidth,\n notePx,\n // Modifier spacing.\n modLeftPx,\n modRightPx,\n // Displaced note head on left or right.\n leftDisplacedHeadPx: this.leftDisplacedHeadPx,\n rightDisplacedHeadPx: this.rightDisplacedHeadPx,\n glyphPx: 0,\n };\n }\n /**\n * Get the absolute `X` position of this note's tick context. This\n * excludes x_shift, so you'll need to factor it in if you're\n * looking for the post-formatted x-position.\n */\n getAbsoluteX() {\n const tickContext = this.checkTickContext(`Can't getAbsoluteX() without a TickContext.`);\n // Position note to left edge of tick context.\n let x = tickContext.getX();\n if (this.stave) {\n x += this.stave.getNoteStartX() + Tables.currentMusicFont().lookupMetric('stave.padding');\n }\n if (this.isCenterAligned()) {\n x += this.getCenterXShift();\n }\n return x;\n }\n /** Get the direction of the stem. */\n getStemDirection() {\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n }\n /** Get the top and bottom `y` values of the stem. */\n getStemExtents() {\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n }\n /** Get the `x` coordinate to the right of the note. */\n getTieRightX() {\n let tieStartX = this.getAbsoluteX();\n const note_glyph_width = this.glyph.getWidth();\n tieStartX += note_glyph_width / 2;\n tieStartX += -this.width / 2 + this.width + 2;\n return tieStartX;\n }\n /** Get the `x` coordinate to the left of the note. */\n getTieLeftX() {\n let tieEndX = this.getAbsoluteX();\n const note_glyph_width = this.glyph.getWidth();\n tieEndX += note_glyph_width / 2;\n tieEndX -= this.width / 2 + 2;\n return tieEndX;\n }\n // Get the pitches in the note\n getKeys() {\n return this.keys;\n }\n // Get the properties for all the keys in the note\n getKeyProps() {\n return this.keyProps;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// A base class for stave modifiers (e.g. clefs, key signatures)\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { defined } from './util';\nexport var StaveModifierPosition;\n(function (StaveModifierPosition) {\n StaveModifierPosition[StaveModifierPosition[\"CENTER\"] = 0] = \"CENTER\";\n StaveModifierPosition[StaveModifierPosition[\"LEFT\"] = 1] = \"LEFT\";\n StaveModifierPosition[StaveModifierPosition[\"RIGHT\"] = 2] = \"RIGHT\";\n StaveModifierPosition[StaveModifierPosition[\"ABOVE\"] = 3] = \"ABOVE\";\n StaveModifierPosition[StaveModifierPosition[\"BELOW\"] = 4] = \"BELOW\";\n StaveModifierPosition[StaveModifierPosition[\"BEGIN\"] = 5] = \"BEGIN\";\n StaveModifierPosition[StaveModifierPosition[\"END\"] = 6] = \"END\";\n})(StaveModifierPosition || (StaveModifierPosition = {}));\nexport class StaveModifier extends Element {\n constructor() {\n super();\n this.width = 0;\n this.x = 0;\n this.padding = 10;\n this.position = StaveModifierPosition.ABOVE;\n }\n static get CATEGORY() {\n return Category.StaveModifier;\n }\n static get Position() {\n return StaveModifierPosition;\n }\n getPosition() {\n return this.position;\n }\n setPosition(position) {\n this.position = position;\n return this;\n }\n getStave() {\n return this.stave;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getWidth() {\n return this.width;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getX() {\n return this.x;\n }\n setX(x) {\n this.x = x;\n return this;\n }\n placeGlyphOnLine(glyph, stave, line, customShift = 0) {\n glyph.setYShift(stave.getYForLine(line !== null && line !== void 0 ? line : 0) - stave.getYForGlyphs() + customShift);\n }\n getPadding(index) {\n return index !== undefined && index < 2 ? 0 : this.padding;\n }\n setPadding(padding) {\n this.padding = padding;\n return this;\n }\n setLayoutMetrics(layoutMetrics) {\n this.layoutMetrics = layoutMetrics;\n return this;\n }\n getLayoutMetrics() {\n return this.layoutMetrics;\n }\n // eslint-disable-next-line\n draw(...args) {\n // DO NOTHING.\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Author Larry Kuhns 2011\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport var BarlineType;\n(function (BarlineType) {\n BarlineType[BarlineType[\"SINGLE\"] = 1] = \"SINGLE\";\n BarlineType[BarlineType[\"DOUBLE\"] = 2] = \"DOUBLE\";\n BarlineType[BarlineType[\"END\"] = 3] = \"END\";\n BarlineType[BarlineType[\"REPEAT_BEGIN\"] = 4] = \"REPEAT_BEGIN\";\n BarlineType[BarlineType[\"REPEAT_END\"] = 5] = \"REPEAT_END\";\n BarlineType[BarlineType[\"REPEAT_BOTH\"] = 6] = \"REPEAT_BOTH\";\n BarlineType[BarlineType[\"NONE\"] = 7] = \"NONE\";\n})(BarlineType || (BarlineType = {}));\nexport class Barline extends StaveModifier {\n constructor(type) {\n super();\n this.thickness = Tables.STAVE_LINE_THICKNESS;\n const TYPE = BarlineType;\n this.widths = {};\n this.widths[TYPE.SINGLE] = 5;\n this.widths[TYPE.DOUBLE] = 5;\n this.widths[TYPE.END] = 5;\n this.widths[TYPE.REPEAT_BEGIN] = 5;\n this.widths[TYPE.REPEAT_END] = 5;\n this.widths[TYPE.REPEAT_BOTH] = 5;\n this.widths[TYPE.NONE] = 5;\n this.paddings = {};\n this.paddings[TYPE.SINGLE] = 0;\n this.paddings[TYPE.DOUBLE] = 0;\n this.paddings[TYPE.END] = 0;\n this.paddings[TYPE.REPEAT_BEGIN] = 15;\n this.paddings[TYPE.REPEAT_END] = 15;\n this.paddings[TYPE.REPEAT_BOTH] = 15;\n this.paddings[TYPE.NONE] = 0;\n this.layoutMetricsMap = {};\n this.layoutMetricsMap[TYPE.SINGLE] = {\n xMin: 0,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.DOUBLE] = {\n xMin: -3,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.END] = {\n xMin: -5,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_END] = {\n xMin: -10,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_BEGIN] = {\n xMin: -2,\n xMax: 10,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_BOTH] = {\n xMin: -10,\n xMax: 10,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.NONE] = {\n xMin: 0,\n xMax: 0,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.setPosition(StaveModifierPosition.BEGIN);\n this.setType(type);\n }\n static get CATEGORY() {\n return Category.Barline;\n }\n static get type() {\n return BarlineType;\n }\n static get typeString() {\n return {\n single: BarlineType.SINGLE,\n double: BarlineType.DOUBLE,\n end: BarlineType.END,\n repeatBegin: BarlineType.REPEAT_BEGIN,\n repeatEnd: BarlineType.REPEAT_END,\n repeatBoth: BarlineType.REPEAT_BOTH,\n none: BarlineType.NONE,\n };\n }\n getType() {\n return this.type;\n }\n setType(type) {\n this.type = typeof type === 'string' ? Barline.typeString[type] : type;\n this.setWidth(this.widths[this.type]);\n this.setPadding(this.paddings[this.type]);\n this.setLayoutMetrics(this.layoutMetricsMap[this.type]);\n return this;\n }\n // Draw barlines\n draw(stave) {\n stave.checkContext();\n this.setRendered();\n switch (this.type) {\n case BarlineType.SINGLE:\n this.drawVerticalBar(stave, this.x, false);\n break;\n case BarlineType.DOUBLE:\n this.drawVerticalBar(stave, this.x, true);\n break;\n case BarlineType.END:\n this.drawVerticalEndBar(stave, this.x);\n break;\n case BarlineType.REPEAT_BEGIN:\n // If the barline is shifted over (in front of clef/time/key)\n // Draw vertical bar at the beginning.\n this.drawRepeatBar(stave, this.x, true);\n if (stave.getX() !== this.x) {\n this.drawVerticalBar(stave, stave.getX());\n }\n break;\n case BarlineType.REPEAT_END:\n this.drawRepeatBar(stave, this.x, false);\n break;\n case BarlineType.REPEAT_BOTH:\n this.drawRepeatBar(stave, this.x, false);\n this.drawRepeatBar(stave, this.x, true);\n break;\n default:\n // Default is NONE, so nothing to draw\n break;\n }\n }\n drawVerticalBar(stave, x, double_bar) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n if (double_bar) {\n staveCtx.fillRect(x - 3, topY, 1, botY - topY);\n }\n staveCtx.fillRect(x, topY, 1, botY - topY);\n }\n drawVerticalEndBar(stave, x) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n staveCtx.fillRect(x - 5, topY, 1, botY - topY);\n staveCtx.fillRect(x - 2, topY, 3, botY - topY);\n }\n drawRepeatBar(stave, x, begin) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n let x_shift = 3;\n if (!begin) {\n x_shift = -5;\n }\n staveCtx.fillRect(x + x_shift, topY, 1, botY - topY);\n staveCtx.fillRect(x - 2, topY, 3, botY - topY);\n const dot_radius = 2;\n // Shift dots left or right\n if (begin) {\n x_shift += 4;\n }\n else {\n x_shift -= 4;\n }\n const dot_x = x + x_shift + dot_radius / 2;\n // calculate the y offset based on number of stave lines\n let y_offset = (stave.getNumLines() - 1) * stave.getSpacingBetweenLines();\n y_offset = y_offset / 2 - stave.getSpacingBetweenLines() / 2;\n let dot_y = topY + y_offset + dot_radius / 2;\n // draw the top repeat dot\n staveCtx.beginPath();\n staveCtx.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false);\n staveCtx.fill();\n // draw the bottom repeat dot\n dot_y += stave.getSpacingBetweenLines();\n staveCtx.beginPath();\n staveCtx.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false);\n staveCtx.fill();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Author: Aaron (@AaronDavidNewman)\n//\n// This implements chord symbols above/below a chord.\n// Chord symbols are modifiers that can be attached to notes.\n// They can contain multiple 'blocks' which represent text or\n// glyphs with various positioning options.\n//\n// See `tests/chordsymbol_tests.ts` for usage examples.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category, isStemmableNote } from './typeguard';\nimport { log } from './util';\n// To enable logging for this class. Set `Vex.Flow.ChordSymbol.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (ChordSymbol.DEBUG)\n log('Vex.Flow.ChordSymbol', args);\n}\nexport var ChordSymbolHorizontalJustify;\n(function (ChordSymbolHorizontalJustify) {\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"LEFT\"] = 1] = \"LEFT\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"CENTER\"] = 2] = \"CENTER\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"RIGHT\"] = 3] = \"RIGHT\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(ChordSymbolHorizontalJustify || (ChordSymbolHorizontalJustify = {}));\nexport var ChordSymbolVerticalJustify;\n(function (ChordSymbolVerticalJustify) {\n ChordSymbolVerticalJustify[ChordSymbolVerticalJustify[\"TOP\"] = 1] = \"TOP\";\n ChordSymbolVerticalJustify[ChordSymbolVerticalJustify[\"BOTTOM\"] = 2] = \"BOTTOM\";\n})(ChordSymbolVerticalJustify || (ChordSymbolVerticalJustify = {}));\nexport var SymbolTypes;\n(function (SymbolTypes) {\n SymbolTypes[SymbolTypes[\"GLYPH\"] = 1] = \"GLYPH\";\n SymbolTypes[SymbolTypes[\"TEXT\"] = 2] = \"TEXT\";\n SymbolTypes[SymbolTypes[\"LINE\"] = 3] = \"LINE\";\n})(SymbolTypes || (SymbolTypes = {}));\nexport var SymbolModifiers;\n(function (SymbolModifiers) {\n SymbolModifiers[SymbolModifiers[\"NONE\"] = 1] = \"NONE\";\n SymbolModifiers[SymbolModifiers[\"SUBSCRIPT\"] = 2] = \"SUBSCRIPT\";\n SymbolModifiers[SymbolModifiers[\"SUPERSCRIPT\"] = 3] = \"SUPERSCRIPT\";\n})(SymbolModifiers || (SymbolModifiers = {}));\n/**\n * ChordSymbol is a modifier that creates a chord symbol above/below a chord.\n * As a modifier, it is attached to an existing note.\n */\nexport class ChordSymbol extends Modifier {\n constructor() {\n super();\n this.symbolBlocks = [];\n this.horizontal = ChordSymbolHorizontalJustify.LEFT;\n this.vertical = ChordSymbolVerticalJustify.TOP;\n this.useKerning = true;\n this.reportWidth = true;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.ChordSymbol;\n }\n static get superSubRatio() {\n return ChordSymbol.metrics.global.superSubRatio;\n }\n /** Currently unused: Globally turn off text formatting, if the built-in formatting does not work for your font. */\n static set NO_TEXT_FORMAT(val) {\n ChordSymbol.noFormat = val;\n }\n static get NO_TEXT_FORMAT() {\n return ChordSymbol.noFormat;\n }\n // eslint-disable-next-line\n static getMetricForGlyph(glyphCode) {\n if (ChordSymbol.metrics[glyphCode]) {\n return ChordSymbol.metrics[glyphCode];\n }\n return undefined;\n }\n static get engravingFontResolution() {\n return Tables.currentMusicFont().getResolution();\n }\n static get spacingBetweenBlocks() {\n return ChordSymbol.metrics.global.spacing / ChordSymbol.engravingFontResolution;\n }\n static getWidthForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0.65; // probably should do something here.\n }\n return metric.advanceWidth / ChordSymbol.engravingFontResolution;\n }\n static getYShiftForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0;\n }\n return metric.yOffset / ChordSymbol.engravingFontResolution;\n }\n static getXShiftForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0;\n }\n return (-1 * metric.leftSideBearing) / ChordSymbol.engravingFontResolution;\n }\n static get superscriptOffset() {\n return ChordSymbol.metrics.global.superscriptOffset / ChordSymbol.engravingFontResolution;\n }\n static get subscriptOffset() {\n return ChordSymbol.metrics.global.subscriptOffset / ChordSymbol.engravingFontResolution;\n }\n static get kerningOffset() {\n return ChordSymbol.metrics.global.kerningOffset / ChordSymbol.engravingFontResolution;\n }\n // eslint-disable-next-line\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.chordSymbol;\n }\n static get lowerKerningText() {\n // For example, see: `bravura_metrics.ts`\n // BravuraMetrics.glyphs.chordSymbol.global.lowerKerningText, which returns an array of letters.\n // ['D', 'F', 'P', 'T', 'V', 'Y']\n return ChordSymbol.metrics.global.lowerKerningText;\n }\n static get upperKerningText() {\n return ChordSymbol.metrics.global.upperKerningText;\n }\n static isSuperscript(block) {\n return block.symbolModifier !== undefined && block.symbolModifier === SymbolModifiers.SUPERSCRIPT;\n }\n static isSubscript(block) {\n return block.symbolModifier !== undefined && block.symbolModifier === SymbolModifiers.SUBSCRIPT;\n }\n static get minPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /**\n * Estimate the width of the whole chord symbol, based on the sum of the widths of the individual blocks.\n * Estimate how many lines above/below the staff we need.\n */\n static format(symbols, state) {\n var _a;\n if (!symbols || symbols.length === 0)\n return false;\n let width = 0;\n let nonSuperWidth = 0;\n let leftWidth = 0;\n let rightWidth = 0;\n let maxLeftGlyphWidth = 0;\n let maxRightGlyphWidth = 0;\n for (const symbol of symbols) {\n const fontSize = Font.convertSizeToPointValue((_a = symbol.textFont) === null || _a === void 0 ? void 0 : _a.size);\n const fontAdj = Font.scaleSize(fontSize, 0.05);\n const glyphAdj = fontAdj * 2;\n const note = symbol.checkAttachedNote();\n let symbolWidth = 0;\n let lineSpaces = 1;\n let vAlign = false;\n for (let j = 0; j < symbol.symbolBlocks.length; ++j) {\n const block = symbol.symbolBlocks[j];\n const sup = ChordSymbol.isSuperscript(block);\n const sub = ChordSymbol.isSubscript(block);\n const superSubScale = sup || sub ? ChordSymbol.superSubRatio : 1;\n const adj = block.symbolType === SymbolTypes.GLYPH ? glyphAdj * superSubScale : fontAdj * superSubScale;\n // If there are super/subscripts, they extend beyond the line so\n // assume they take up 2 lines\n if (sup || sub) {\n lineSpaces = 2;\n }\n // If there is a symbol-specific offset, add it but consider font\n // size since font and glyphs will be interspersed.\n const fontSize = symbol.textFormatter.fontSizeInPixels;\n const superSubFontSize = fontSize * superSubScale;\n if (block.symbolType === SymbolTypes.GLYPH && block.glyph !== undefined) {\n block.width = ChordSymbol.getWidthForGlyph(block.glyph) * superSubFontSize;\n block.yShift += ChordSymbol.getYShiftForGlyph(block.glyph) * superSubFontSize;\n block.xShift += ChordSymbol.getXShiftForGlyph(block.glyph) * superSubFontSize;\n block.glyph.scale = block.glyph.scale * adj;\n }\n else if (block.symbolType === SymbolTypes.TEXT) {\n block.width = block.width * superSubFontSize;\n block.yShift += symbol.getYOffsetForText(block.text) * adj;\n }\n if (block.symbolType === SymbolTypes.GLYPH &&\n block.glyph !== undefined &&\n block.glyph.code === ChordSymbol.glyphs.over.code) {\n lineSpaces = 2;\n }\n block.width += ChordSymbol.spacingBetweenBlocks * fontSize * superSubScale;\n // If a subscript immediately follows a superscript block, try to\n // overlay them.\n if (sup && j > 0) {\n const prev = symbol.symbolBlocks[j - 1];\n if (!ChordSymbol.isSuperscript(prev)) {\n nonSuperWidth = width;\n }\n }\n if (sub && nonSuperWidth > 0) {\n vAlign = true;\n // slide the symbol over so it lines up with superscript\n block.xShift = block.xShift + (nonSuperWidth - width);\n width = nonSuperWidth;\n nonSuperWidth = 0;\n // If we have vertically lined up, turn kerning off.\n symbol.setEnableKerning(false);\n }\n if (!sup && !sub) {\n nonSuperWidth = 0;\n }\n block.vAlign = vAlign;\n width += block.width;\n symbolWidth = width;\n }\n // make kerning adjustments after computing super/subscripts\n symbol.updateKerningAdjustments();\n symbol.updateOverBarAdjustments();\n if (symbol.getVertical() === ChordSymbolVerticalJustify.TOP) {\n symbol.setTextLine(state.top_text_line);\n state.top_text_line += lineSpaces;\n }\n else {\n symbol.setTextLine(state.text_line + 1);\n state.text_line += lineSpaces + 1;\n }\n if (symbol.getReportWidth() && isStemmableNote(note)) {\n const glyphWidth = note.getGlyph().getWidth();\n if (symbol.getHorizontal() === ChordSymbolHorizontalJustify.LEFT) {\n maxLeftGlyphWidth = Math.max(glyphWidth, maxLeftGlyphWidth);\n leftWidth = Math.max(leftWidth, symbolWidth) + ChordSymbol.minPadding;\n }\n else if (symbol.getHorizontal() === ChordSymbolHorizontalJustify.RIGHT) {\n maxRightGlyphWidth = Math.max(glyphWidth, maxRightGlyphWidth);\n rightWidth = Math.max(rightWidth, symbolWidth);\n }\n else {\n leftWidth = Math.max(leftWidth, symbolWidth / 2) + ChordSymbol.minPadding;\n rightWidth = Math.max(rightWidth, symbolWidth / 2);\n maxLeftGlyphWidth = Math.max(glyphWidth / 2, maxLeftGlyphWidth);\n maxRightGlyphWidth = Math.max(glyphWidth / 2, maxRightGlyphWidth);\n }\n }\n width = 0; // reset symbol width\n }\n const rightOverlap = Math.min(Math.max(rightWidth - maxRightGlyphWidth, 0), Math.max(rightWidth - state.right_shift, 0));\n const leftOverlap = Math.min(Math.max(leftWidth - maxLeftGlyphWidth, 0), Math.max(leftWidth - state.left_shift, 0));\n state.left_shift += leftOverlap;\n state.right_shift += rightOverlap;\n return true;\n }\n /**\n * Default text font.\n * Choose a font family that works well with the current music engraving font.\n * @override `Element.TEXT_FONT`.\n */\n static get TEXT_FONT() {\n let family = 'Roboto Slab, Times, serif';\n if (Tables.currentMusicFont().getName() === 'Petaluma') {\n // Fixes Issue #1180\n family = 'PetalumaScript, Arial, sans-serif';\n }\n return {\n family,\n size: 12,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n };\n }\n /**\n * The offset is specified in `em`. Scale this value by the font size in pixels.\n */\n get superscriptOffset() {\n return ChordSymbol.superscriptOffset * this.textFormatter.fontSizeInPixels;\n }\n get subscriptOffset() {\n return ChordSymbol.subscriptOffset * this.textFormatter.fontSizeInPixels;\n }\n setReportWidth(value) {\n this.reportWidth = value;\n return this;\n }\n getReportWidth() {\n return this.reportWidth;\n }\n updateOverBarAdjustments() {\n const barIndex = this.symbolBlocks.findIndex(({ symbolType, glyph }) => symbolType === SymbolTypes.GLYPH && glyph !== undefined && glyph.code === 'csymDiagonalArrangementSlash');\n if (barIndex < 0) {\n return;\n }\n const bar = this.symbolBlocks[barIndex];\n const xoff = bar.width / 4;\n const yoff = 0.25 * this.textFormatter.fontSizeInPixels;\n let symIndex = 0;\n for (symIndex === 0; symIndex < barIndex; ++symIndex) {\n const symbol = this.symbolBlocks[symIndex];\n symbol.xShift = symbol.xShift + xoff;\n symbol.yShift = symbol.yShift - yoff;\n }\n for (symIndex = barIndex + 1; symIndex < this.symbolBlocks.length; ++symIndex) {\n const symbol = this.symbolBlocks[symIndex];\n symbol.xShift = symbol.xShift - xoff;\n symbol.yShift = symbol.yShift + yoff;\n }\n }\n updateKerningAdjustments() {\n let accum = 0;\n for (let j = 0; j < this.symbolBlocks.length; ++j) {\n const symbol = this.symbolBlocks[j];\n accum += this.getKerningAdjustment(j);\n symbol.xShift += accum;\n }\n }\n /** Do some basic kerning so that letter chords like 'A' don't have the extensions hanging off to the right. */\n getKerningAdjustment(j) {\n if (!this.useKerning) {\n return 0;\n }\n const currSymbol = this.symbolBlocks[j];\n const prevSymbol = j > 0 ? this.symbolBlocks[j - 1] : undefined;\n let adjustment = 0;\n // Move things into the '/' over bar\n if (currSymbol.symbolType === SymbolTypes.GLYPH &&\n currSymbol.glyph !== undefined &&\n currSymbol.glyph.code === ChordSymbol.glyphs.over.code) {\n adjustment += currSymbol.glyph.metrics.x_shift;\n }\n if (prevSymbol !== undefined &&\n prevSymbol.symbolType === SymbolTypes.GLYPH &&\n prevSymbol.glyph !== undefined &&\n prevSymbol.glyph.code === ChordSymbol.glyphs.over.code) {\n adjustment += prevSymbol.glyph.metrics.x_shift;\n }\n // For superscripts that follow a letter without much top part, move it to the left slightly\n let preKernUpper = false;\n let preKernLower = false;\n if (prevSymbol !== undefined && prevSymbol.symbolType === SymbolTypes.TEXT) {\n preKernUpper = ChordSymbol.upperKerningText.some((xx) => xx === prevSymbol.text[prevSymbol.text.length - 1]);\n preKernLower = ChordSymbol.lowerKerningText.some((xx) => xx === prevSymbol.text[prevSymbol.text.length - 1]);\n }\n const kerningOffsetPixels = ChordSymbol.kerningOffset * this.textFormatter.fontSizeInPixels;\n // TODO: adjust kern for font size.\n // Where should this constant live?\n if (preKernUpper && currSymbol.symbolModifier === SymbolModifiers.SUPERSCRIPT) {\n adjustment += kerningOffsetPixels;\n }\n if (preKernLower && currSymbol.symbolType === SymbolTypes.TEXT) {\n if (currSymbol.text[0] >= 'a' && currSymbol.text[0] <= 'z') {\n adjustment += kerningOffsetPixels / 2;\n }\n if (ChordSymbol.upperKerningText.some((xx) => xx === (prevSymbol === null || prevSymbol === void 0 ? void 0 : prevSymbol.text[prevSymbol.text.length - 1]))) {\n adjustment += kerningOffsetPixels / 2;\n }\n }\n return adjustment;\n }\n /**\n * ChordSymbol allows multiple blocks so we can mix glyphs and font text.\n * Each block can have its own vertical orientation.\n */\n // eslint-disable-next-line\n getSymbolBlock(params = {}) {\n var _a, _b, _c;\n const symbolType = (_a = params.symbolType) !== null && _a !== void 0 ? _a : SymbolTypes.TEXT;\n const symbolBlock = {\n text: (_b = params.text) !== null && _b !== void 0 ? _b : '',\n symbolType,\n symbolModifier: (_c = params.symbolModifier) !== null && _c !== void 0 ? _c : SymbolModifiers.NONE,\n xShift: 0,\n yShift: 0,\n vAlign: false,\n width: 0,\n };\n // Note: symbol widths are resolution and font-independent.\n // We convert to pixel values when we know what the font is.\n if (symbolType === SymbolTypes.GLYPH && typeof params.glyph === 'string') {\n const glyphArgs = ChordSymbol.glyphs[params.glyph];\n const glyphPoints = 20;\n symbolBlock.glyph = new Glyph(glyphArgs.code, glyphPoints, { category: 'chordSymbol' });\n // Beware: glyph.metrics is not the same as glyph.getMetrics() !\n // rv.glyph.point = rv.glyph.point * rv.glyph.metrics.scale;\n // rv.width = rv.glyph.getMetrics().width;\n // don't set yShift here, b/c we need to do it at formatting time after the font is set.\n }\n else if (symbolType === SymbolTypes.TEXT) {\n symbolBlock.width = this.textFormatter.getWidthForTextInEm(symbolBlock.text);\n }\n else if (symbolType === SymbolTypes.LINE) {\n symbolBlock.width = params.width;\n }\n return symbolBlock;\n }\n /** Add a symbol to this chord, could be text, glyph or line. */\n // eslint-disable-next-line\n addSymbolBlock(parameters) {\n this.symbolBlocks.push(this.getSymbolBlock(parameters));\n return this;\n }\n // ### Convenience functions for creating different types of chord symbol parts.\n /** Add a text block. */\n // eslint-disable-next-line\n addText(text, parameters = {}) {\n const symbolType = SymbolTypes.TEXT;\n return this.addSymbolBlock(Object.assign(Object.assign({}, parameters), { text, symbolType }));\n }\n /** Add a text block with superscript modifier. */\n addTextSuperscript(text) {\n const symbolType = SymbolTypes.TEXT;\n const symbolModifier = SymbolModifiers.SUPERSCRIPT;\n return this.addSymbolBlock({ text, symbolType, symbolModifier });\n }\n /** Add a text block with subscript modifier. */\n addTextSubscript(text) {\n const symbolType = SymbolTypes.TEXT;\n const symbolModifier = SymbolModifiers.SUBSCRIPT;\n return this.addSymbolBlock({ text, symbolType, symbolModifier });\n }\n /** Add a glyph block with superscript modifier. */\n addGlyphSuperscript(glyph) {\n const symbolType = SymbolTypes.GLYPH;\n const symbolModifier = SymbolModifiers.SUPERSCRIPT;\n return this.addSymbolBlock({ glyph, symbolType, symbolModifier });\n }\n /** Add a glyph block. */\n // eslint-disable-next-line\n addGlyph(glyph, params = {}) {\n const symbolType = SymbolTypes.GLYPH;\n return this.addSymbolBlock(Object.assign(Object.assign({}, params), { glyph, symbolType }));\n }\n /**\n * Add a glyph for each character in 'text'. If the glyph is not available, use text from the font.\n * e.g. `addGlyphOrText('(+5#11)')` will use text for the '5' and '11', and glyphs for everything else.\n */\n // eslint-disable-next-line\n addGlyphOrText(text, params = {}) {\n let str = '';\n for (let i = 0; i < text.length; ++i) {\n const char = text[i];\n if (ChordSymbol.glyphs[char]) {\n if (str.length > 0) {\n this.addText(str, params);\n str = '';\n }\n this.addGlyph(char, params);\n }\n else {\n // Collect consecutive characters with no glyphs.\n str += char;\n }\n }\n if (str.length > 0) {\n this.addText(str, params);\n }\n return this;\n }\n /** Add a line of the given width, used as a continuation of the previous symbol in analysis, or lyrics, etc. */\n // eslint-disable-next-line\n addLine(width, params = {}) {\n const symbolType = SymbolTypes.LINE;\n return this.addSymbolBlock(Object.assign(Object.assign({}, params), { symbolType, width }));\n }\n /**\n * Set the chord symbol's font family, size, weight, style (e.g., `Arial`, `10pt`, `bold`, `italic`).\n *\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n *\n * @override See: Element.\n */\n setFont(f, size, weight, style) {\n super.setFont(f, size, weight, style);\n this.textFormatter = TextFormatter.create(this.textFont);\n return this;\n }\n setEnableKerning(val) {\n this.useKerning = val;\n return this;\n }\n /** Set vertical position of text (above or below stave). */\n setVertical(vj) {\n this.vertical = typeof vj === 'string' ? ChordSymbol.VerticalJustifyString[vj] : vj;\n return this;\n }\n getVertical() {\n return this.vertical;\n }\n /** Set horizontal justification. */\n setHorizontal(hj) {\n this.horizontal = typeof hj === 'string' ? ChordSymbol.HorizontalJustifyString[hj] : hj;\n return this;\n }\n getHorizontal() {\n return this.horizontal;\n }\n getWidth() {\n let width = 0;\n this.symbolBlocks.forEach((symbol) => {\n width += symbol.vAlign ? 0 : symbol.width;\n });\n return width;\n }\n getYOffsetForText(text) {\n var _a;\n let acc = 0;\n let i = 0;\n for (i = 0; i < text.length; ++i) {\n const metrics = this.textFormatter.getGlyphMetrics(text[i]);\n if (metrics) {\n const yMax = (_a = metrics.y_max) !== null && _a !== void 0 ? _a : 0;\n acc = yMax < acc ? yMax : acc;\n }\n }\n const resolution = this.textFormatter.getResolution();\n return i > 0 ? -1 * (acc / resolution) : 0;\n }\n /** Render text and glyphs above/below the note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n // We're changing context parameters. Save current state.\n ctx.save();\n ctx.openGroup('chordsymbol', this.getAttribute('id'));\n const start = note.getModifierStartXY(Modifier.Position.ABOVE, this.index);\n ctx.setFont(this.textFont);\n let y;\n // The position of the text varies based on whether or not the note\n // has a stem.\n const hasStem = note.hasStem();\n const stave = note.checkStave();\n if (this.vertical === ChordSymbolVerticalJustify.BOTTOM) {\n // HACK: We need to compensate for the text's height since its origin is bottom-right.\n y = stave.getYForBottomText(this.text_line + Tables.TEXT_HEIGHT_OFFSET_HACK);\n if (hasStem) {\n const stem_ext = note.checkStem().getExtents();\n const spacing = stave.getSpacingBetweenLines();\n const stem_base = note.getStemDirection() === 1 ? stem_ext.baseY : stem_ext.topY;\n y = Math.max(y, stem_base + spacing * (this.text_line + 2));\n }\n }\n else {\n // (this.vertical === VerticalJustify.TOP)\n y = Math.min(stave.getYForTopText(this.text_line), note.getYs()[0] - 10);\n if (hasStem) {\n const stem_ext = note.checkStem().getExtents();\n const spacing = stave.getSpacingBetweenLines();\n y = Math.min(y, stem_ext.topY - 5 - spacing * this.text_line);\n }\n }\n let x = start.x;\n if (this.horizontal === ChordSymbolHorizontalJustify.LEFT) {\n x = start.x;\n }\n else if (this.horizontal === ChordSymbolHorizontalJustify.RIGHT) {\n x = start.x + this.getWidth();\n }\n else if (this.horizontal === ChordSymbolHorizontalJustify.CENTER) {\n x = start.x - this.getWidth() / 2;\n }\n else {\n // HorizontalJustify.CENTER_STEM\n x = note.getStemX() - this.getWidth() / 2;\n }\n L('Rendering ChordSymbol: ', this.textFormatter, x, y);\n this.symbolBlocks.forEach((symbol) => {\n const isSuper = ChordSymbol.isSuperscript(symbol);\n const isSub = ChordSymbol.isSubscript(symbol);\n let curY = y;\n L('shift was ', symbol.xShift, symbol.yShift);\n L('curY pre sub ', curY);\n if (isSuper) {\n curY += this.superscriptOffset;\n }\n if (isSub) {\n curY += this.subscriptOffset;\n }\n L('curY sup/sub ', curY);\n if (symbol.symbolType === SymbolTypes.TEXT) {\n if (isSuper || isSub) {\n ctx.save();\n if (this.textFont) {\n const { family, size, weight, style } = this.textFont;\n const smallerFontSize = Font.scaleSize(size, ChordSymbol.superSubRatio);\n ctx.setFont(family, smallerFontSize, weight, style);\n }\n }\n // TODO???\n // We estimate the text width, fill it in with the empirical value so the formatting is even.\n // const textDim = ctx.measureText(symbol.text);\n // symbol.width = textDim.width;\n L('Rendering Text: ', symbol.text, x + symbol.xShift, curY + symbol.yShift);\n ctx.fillText(symbol.text, x + symbol.xShift, curY + symbol.yShift);\n if (isSuper || isSub) {\n ctx.restore();\n }\n }\n else if (symbol.symbolType === SymbolTypes.GLYPH && symbol.glyph) {\n curY += symbol.yShift;\n L('Rendering Glyph: ', symbol.glyph.code, x + symbol.xShift, curY);\n symbol.glyph.render(ctx, x + symbol.xShift, curY);\n }\n else if (symbol.symbolType === SymbolTypes.LINE) {\n L('Rendering Line : ', symbol.width, x, curY);\n ctx.beginPath();\n ctx.setLineWidth(1); // ?\n ctx.moveTo(x, y);\n ctx.lineTo(x + symbol.width, curY);\n ctx.stroke();\n }\n x += symbol.width;\n if (symbol.vAlign) {\n x += symbol.xShift;\n }\n });\n ctx.closeGroup();\n ctx.restore();\n }\n}\nChordSymbol.DEBUG = false;\n// Chord symbols can be positioned and justified relative to the note.\nChordSymbol.HorizontalJustify = ChordSymbolHorizontalJustify;\nChordSymbol.HorizontalJustifyString = {\n left: ChordSymbolHorizontalJustify.LEFT,\n right: ChordSymbolHorizontalJustify.RIGHT,\n center: ChordSymbolHorizontalJustify.CENTER,\n centerStem: ChordSymbolHorizontalJustify.CENTER_STEM,\n};\nChordSymbol.VerticalJustify = ChordSymbolVerticalJustify;\nChordSymbol.VerticalJustifyString = {\n top: ChordSymbolVerticalJustify.TOP,\n above: ChordSymbolVerticalJustify.TOP,\n below: ChordSymbolVerticalJustify.BOTTOM,\n bottom: ChordSymbolVerticalJustify.BOTTOM,\n};\n// Glyph data\nChordSymbol.glyphs = {\n diminished: {\n code: 'csymDiminished',\n },\n dim: {\n code: 'csymDiminished',\n },\n halfDiminished: {\n code: 'csymHalfDiminished',\n },\n '+': {\n code: 'csymAugmented',\n },\n augmented: {\n code: 'csymAugmented',\n },\n majorSeventh: {\n code: 'csymMajorSeventh',\n },\n minor: {\n code: 'csymMinor',\n },\n '-': {\n code: 'csymMinor',\n },\n '(': {\n code: 'csymParensLeftTall',\n },\n leftParen: {\n code: 'csymParensLeftTall',\n },\n ')': {\n code: 'csymParensRightTall',\n },\n rightParen: {\n code: 'csymParensRightTall',\n },\n leftBracket: {\n code: 'csymBracketLeftTall',\n },\n rightBracket: {\n code: 'csymBracketRightTall',\n },\n leftParenTall: {\n code: 'csymParensLeftVeryTall',\n },\n rightParenTall: {\n code: 'csymParensRightVeryTall',\n },\n '/': {\n code: 'csymDiagonalArrangementSlash',\n },\n over: {\n code: 'csymDiagonalArrangementSlash',\n },\n '#': {\n code: 'accidentalSharp',\n },\n b: {\n code: 'accidentalFlat',\n },\n};\nChordSymbol.symbolTypes = SymbolTypes;\nChordSymbol.symbolModifiers = SymbolModifiers;\n/** Currently unused. */\nChordSymbol.noFormat = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Note } from './note';\nimport { Barline, BarlineType } from './stavebarline';\nimport { Category } from './typeguard';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (BarNote.DEBUG)\n log('Vex.Flow.BarNote', args);\n}\n/**\n * A `BarNote` is used to render bar lines (from `barline.ts`). `BarNote`s can\n * be added to a voice and rendered in the middle of a stave. Since it has no\n * duration, it consumes no `tick`s, and is dealt with appropriately by the formatter.\n *\n * See `tests/barnote_tests.ts` for usage examples.\n */\nexport class BarNote extends Note {\n constructor(type = BarlineType.SINGLE) {\n super({ duration: 'b' });\n this.metrics = {\n widths: {},\n };\n const TYPE = BarlineType;\n this.metrics.widths = {\n [TYPE.SINGLE]: 8,\n [TYPE.DOUBLE]: 12,\n [TYPE.END]: 15,\n [TYPE.REPEAT_BEGIN]: 14,\n [TYPE.REPEAT_END]: 14,\n [TYPE.REPEAT_BOTH]: 18,\n [TYPE.NONE]: 0,\n };\n // Tell the formatter that bar notes have no duration.\n this.ignore_ticks = true;\n this.setType(type);\n }\n static get CATEGORY() {\n return Category.BarNote;\n }\n /** Get the type of bar note.*/\n getType() {\n return this.type;\n }\n /** Set the type of bar note. */\n setType(type) {\n this.type = typeof type === 'string' ? Barline.typeString[type] : type;\n // Set width to width of relevant `Barline`.\n this.setWidth(this.metrics.widths[this.type]);\n return this;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n /** Overridden to ignore. */\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n /** Render note to stave. */\n draw() {\n const ctx = this.checkContext();\n L('Rendering bar line at: ', this.getAbsoluteX());\n this.applyStyle(ctx);\n const barline = new Barline(this.type);\n barline.setX(this.getAbsoluteX());\n barline.draw(this.checkStave());\n this.restoreStyle(ctx);\n this.setRendered();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.BarNote.DEBUG` to `true`. */\nBarNote.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Modifier } from './modifier';\nimport { TextFormatter } from './textformatter';\nimport { Category, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\n/** Bend implements tablature bends. */\nexport class Bend extends Modifier {\n /**\n * Example of a phrase:\n * ```\n * [{\n * type: UP,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: DOWN,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: UP,\n * text: \"half\"\n * width: 8;\n * },\n * {\n * type: UP,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: DOWN,\n * text: \"1 1/2\"\n * width: 8;\n * }]\n * ```\n * @param text text for bend (\"Full\", \"Half\", etc.) (DEPRECATED)\n * @param release if true, render a release. (DEPRECATED)\n * @param phrase if set, ignore \"text\" and \"release\", and use the more sophisticated phrase specified\n */\n constructor(text, release = false, phrase) {\n super();\n this.text = text;\n this.x_shift = 0;\n this.release = release;\n this.tap = '';\n this.resetFont();\n this.render_options = {\n line_width: 1.5,\n line_style: '#777777',\n bend_width: 8,\n release_width: 8,\n };\n if (phrase) {\n this.phrase = phrase;\n }\n else {\n // Backward compatibility\n this.phrase = [{ type: Bend.UP, text: this.text }];\n if (this.release)\n this.phrase.push({ type: Bend.DOWN, text: '' });\n }\n this.updateWidth();\n }\n static get CATEGORY() {\n return Category.Bend;\n }\n static get UP() {\n return 0;\n }\n static get DOWN() {\n return 1;\n }\n // Arrange bends in `ModifierContext`\n static format(bends, state) {\n if (!bends || bends.length === 0)\n return false;\n let last_width = 0;\n // Format Bends\n for (let i = 0; i < bends.length; ++i) {\n const bend = bends[i];\n const note = bend.checkAttachedNote();\n if (isTabNote(note)) {\n const stringPos = note.leastString() - 1;\n if (state.top_text_line < stringPos) {\n state.top_text_line = stringPos;\n }\n }\n bend.setXShift(last_width);\n last_width = bend.getWidth();\n bend.setTextLine(state.top_text_line);\n }\n state.right_shift += last_width;\n state.top_text_line += 1;\n return true;\n }\n /** Set horizontal shift in pixels. */\n setXShift(value) {\n this.x_shift = value;\n this.updateWidth();\n return this;\n }\n setTap(value) {\n this.tap = value;\n return this;\n }\n /** Get text provided in the constructor. */\n getText() {\n return this.text;\n }\n getTextHeight() {\n const textFormatter = TextFormatter.create(this.textFont);\n return textFormatter.maxHeight;\n }\n /** Recalculate width. */\n updateWidth() {\n const textFormatter = TextFormatter.create(this.textFont);\n const measureText = (text) => {\n return textFormatter.getWidthForTextInPx(text);\n };\n let totalWidth = 0;\n for (let i = 0; i < this.phrase.length; ++i) {\n const bend = this.phrase[i];\n if (bend.width !== undefined) {\n totalWidth += bend.width;\n }\n else {\n const additional_width = bend.type === Bend.UP ? this.render_options.bend_width : this.render_options.release_width;\n bend.width = Math.max(additional_width, measureText(bend.text)) + 3;\n bend.draw_width = bend.width / 2;\n totalWidth += bend.width;\n }\n }\n this.setWidth(totalWidth + this.x_shift);\n return this;\n }\n /** Draw the bend on the rendering context. */\n draw() {\n var _a;\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(Modifier.Position.RIGHT, this.index);\n start.x += 3;\n start.y += 0.5;\n const x_shift = this.x_shift;\n const stave = note.checkStave();\n const spacing = stave.getSpacingBetweenLines();\n const lowestY = note.getYs().reduce((a, b) => (a < b ? a : b));\n // this.text_line is relative to top string in the group.\n const bend_height = start.y - ((this.text_line + 1) * spacing + start.y - lowestY) + 3;\n const annotation_y = start.y - ((this.text_line + 1) * spacing + start.y - lowestY) - 1;\n const renderBend = (x, y, width, height) => {\n const cp_x = x + width;\n const cp_y = y;\n ctx.save();\n ctx.beginPath();\n ctx.setLineWidth(this.render_options.line_width);\n ctx.setStrokeStyle(this.render_options.line_style);\n ctx.setFillStyle(this.render_options.line_style);\n ctx.moveTo(x, y);\n ctx.quadraticCurveTo(cp_x, cp_y, x + width, height);\n ctx.stroke();\n ctx.restore();\n };\n const renderRelease = (x, y, width, height) => {\n ctx.save();\n ctx.beginPath();\n ctx.setLineWidth(this.render_options.line_width);\n ctx.setStrokeStyle(this.render_options.line_style);\n ctx.setFillStyle(this.render_options.line_style);\n ctx.moveTo(x, height);\n ctx.quadraticCurveTo(x + width, height, x + width, y);\n ctx.stroke();\n ctx.restore();\n };\n const renderArrowHead = (x, y, direction) => {\n const width = 4;\n const yBase = y + width * direction;\n ctx.beginPath();\n ctx.moveTo(x, y); // tip of the arrow\n ctx.lineTo(x - width, yBase);\n ctx.lineTo(x + width, yBase);\n ctx.closePath();\n ctx.fill();\n };\n const renderText = (x, text) => {\n ctx.save();\n ctx.setFont(this.textFont);\n const render_x = x - ctx.measureText(text).width / 2;\n ctx.fillText(text, render_x, annotation_y);\n ctx.restore();\n };\n let last_bend = undefined;\n let last_bend_draw_width = 0;\n let last_drawn_width = 0;\n if ((_a = this.tap) === null || _a === void 0 ? void 0 : _a.length) {\n const tapStart = note.getModifierStartXY(Modifier.Position.CENTER, this.index);\n renderText(tapStart.x, this.tap);\n }\n for (let i = 0; i < this.phrase.length; ++i) {\n const bend = this.phrase[i];\n if (!bend.draw_width)\n bend.draw_width = 0;\n if (i === 0)\n bend.draw_width += x_shift;\n last_drawn_width = bend.draw_width + last_bend_draw_width - (i === 1 ? x_shift : 0);\n if (bend.type === Bend.UP) {\n if (last_bend && last_bend.type === Bend.UP) {\n renderArrowHead(start.x, bend_height, +1);\n }\n renderBend(start.x, start.y, last_drawn_width, bend_height);\n }\n if (bend.type === Bend.DOWN) {\n if (last_bend && last_bend.type === Bend.UP) {\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n if (last_bend && last_bend.type === Bend.DOWN) {\n renderArrowHead(start.x, start.y, -1);\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n if (!last_bend) {\n last_drawn_width = bend.draw_width;\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n }\n renderText(start.x + last_drawn_width, bend.text);\n last_bend = bend;\n last_bend_draw_width = bend.draw_width;\n last_bend.x = start.x;\n start.x += last_drawn_width;\n }\n if (!last_bend || last_bend.x == undefined) {\n throw new RuntimeError('NoLastBendForBend', 'Internal error.');\n }\n // Final arrowhead and text\n if (last_bend.type === Bend.UP) {\n renderArrowHead(last_bend.x + last_drawn_width, bend_height, +1);\n }\n else if (last_bend.type === Bend.DOWN) {\n renderArrowHead(last_bend.x + last_drawn_width, start.y, -1);\n }\n }\n}\n/** Default text font. */\nBend.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements dot modifiers for notes.\nimport { Modifier } from './modifier';\nimport { Category, isGraceNote, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class Dot extends Modifier {\n constructor() {\n super();\n this.position = Modifier.Position.RIGHT;\n this.radius = 2;\n this.setWidth(5);\n this.dot_shiftY = 0;\n }\n static get CATEGORY() {\n return Category.Dot;\n }\n /** Returns the dots associated to a Note. */\n static getDots(note) {\n return note.getModifiersByType(Dot.CATEGORY);\n }\n /** Add a dot on the specified keys to the notes. */\n static buildAndAttach(notes, options) {\n for (const note of notes) {\n if (options === null || options === void 0 ? void 0 : options.all) {\n for (let i = 0; i < note.keys.length; i++) {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, i);\n }\n }\n else if ((options === null || options === void 0 ? void 0 : options.index) != undefined) {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, options === null || options === void 0 ? void 0 : options.index);\n }\n else {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, 0);\n }\n }\n }\n // Arrange dots inside a ModifierContext.\n static format(dots, state) {\n const right_shift = state.right_shift;\n const dot_spacing = 1;\n if (!dots || dots.length === 0)\n return false;\n const dot_list = [];\n const max_shift_map = {};\n for (let i = 0; i < dots.length; ++i) {\n const dot = dots[i];\n const note = dot.getNote();\n let props;\n let shift;\n if (isStaveNote(note)) {\n const index = dot.checkIndex();\n props = note.getKeyProps()[index];\n // consider right displaced head with no previous modifier\n shift = note.getFirstDotPx();\n }\n else if (isTabNote(note)) {\n props = { line: 0.5 }; // Shim key props for dot placement\n shift = right_shift;\n }\n else {\n // note object is not StaveNote or TabNote.\n throw new RuntimeError('Internal', 'Unexpected instance.');\n }\n const note_id = note.getAttribute('id');\n dot_list.push({ line: props.line, note, note_id, dot });\n max_shift_map[note_id] = Math.max(max_shift_map[note_id] || shift, shift);\n }\n // Sort dots by line number.\n dot_list.sort((a, b) => b.line - a.line);\n let dot_shift = right_shift;\n let x_width = 0;\n let last_line = null;\n let last_note = null;\n let prev_dotted_space = null;\n let half_shiftY = 0;\n for (let i = 0; i < dot_list.length; ++i) {\n const { dot, note, note_id, line } = dot_list[i];\n // Reset the position of the dot every line.\n if (line !== last_line || note !== last_note) {\n dot_shift = max_shift_map[note_id];\n }\n if (!note.isRest() && line !== last_line) {\n if (Math.abs(line % 1) === 0.5) {\n // note is on a space, so no dot shift\n half_shiftY = 0;\n }\n else {\n // note is on a line, so shift dot to space above the line\n half_shiftY = 0.5;\n if (last_note != null && !last_note.isRest() && last_line != null && last_line - line === 0.5) {\n // previous note on a space, so shift dot to space below the line\n half_shiftY = -0.5;\n }\n else if (line + half_shiftY === prev_dotted_space) {\n // previous space is dotted, so shift dot to space below the line\n half_shiftY = -0.5;\n }\n }\n }\n // convert half_shiftY to a multiplier for dots.draw()\n if (note.isRest()) {\n dot.dot_shiftY += -half_shiftY;\n }\n else {\n dot.dot_shiftY = -half_shiftY;\n }\n prev_dotted_space = line + half_shiftY;\n dot.setXShift(dot_shift);\n dot_shift += dot.getWidth() + dot_spacing; // spacing\n x_width = dot_shift > x_width ? dot_shift : x_width;\n last_line = line;\n last_note = note;\n }\n // Update state.\n state.right_shift += x_width;\n return true;\n }\n setNote(note) {\n this.note = note;\n if (isGraceNote(note)) {\n this.radius *= 0.5;\n this.setWidth(3);\n }\n return this;\n }\n setDotShiftY(y) {\n this.dot_shiftY = y;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stave = note.checkStave();\n const lineSpace = stave.getSpacingBetweenLines();\n const start = note.getModifierStartXY(this.position, this.index, { forceFlagRight: true });\n // Set the starting y coordinate to the base of the stem for TabNotes.\n if (isTabNote(note)) {\n start.y = note.getStemExtents().baseY;\n }\n const x = start.x + this.x_shift + this.width - this.radius;\n const y = start.y + this.y_shift + this.dot_shiftY * lineSpace;\n ctx.beginPath();\n ctx.arc(x, y, this.radius, 0, Math.PI * 2, false);\n ctx.fill();\n }\n}\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n// Author Larry Kuhns 2013\n// Class to draws string numbers into the notation.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class FretHandFinger extends Modifier {\n constructor(finger) {\n super();\n this.finger = finger;\n this.width = 7;\n this.position = Modifier.Position.LEFT; // Default position above stem or note head\n this.x_shift = 0;\n this.y_shift = 0;\n this.x_offset = 0; // Horizontal offset from default\n this.y_offset = 0; // Vertical offset from default\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.FretHandFinger;\n }\n // Arrange fingerings inside a ModifierContext.\n static format(nums, state) {\n const { left_shift, right_shift } = state;\n const num_spacing = 1;\n if (!nums || nums.length === 0)\n return false;\n const nums_list = [];\n let prev_note = null;\n let shiftLeft = 0;\n let shiftRight = 0;\n for (let i = 0; i < nums.length; ++i) {\n const num = nums[i];\n const note = num.getNote();\n const pos = num.getPosition();\n const index = num.checkIndex();\n const props = note.getKeyProps()[index];\n const textFormatter = TextFormatter.create(num.textFont);\n const textHeight = textFormatter.maxHeight;\n if (num.position === ModifierPosition.ABOVE) {\n state.top_text_line += textHeight / Tables.STAVE_LINE_DISTANCE + 0.5;\n }\n if (num.position === ModifierPosition.BELOW) {\n state.text_line += textHeight / Tables.STAVE_LINE_DISTANCE + 0.5;\n }\n if (note !== prev_note) {\n for (let n = 0; n < note.keys.length; ++n) {\n if (left_shift === 0) {\n shiftLeft = Math.max(note.getLeftDisplacedHeadPx(), shiftLeft);\n }\n if (right_shift === 0) {\n shiftRight = Math.max(note.getRightDisplacedHeadPx(), shiftRight);\n }\n }\n prev_note = note;\n }\n nums_list.push({\n note,\n num,\n pos,\n line: props.line,\n shiftL: shiftLeft,\n shiftR: shiftRight,\n });\n }\n // Sort fingernumbers by line number.\n nums_list.sort((a, b) => b.line - a.line);\n let numShiftL = 0;\n let numShiftR = 0;\n let xWidthL = 0;\n let xWidthR = 0;\n let lastLine = null;\n let lastNote = null;\n for (let i = 0; i < nums_list.length; ++i) {\n let num_shift = 0;\n const { note, pos, num, line, shiftL, shiftR } = nums_list[i];\n // Reset the position of the string number every line.\n if (line !== lastLine || note !== lastNote) {\n numShiftL = left_shift + shiftL;\n numShiftR = right_shift + shiftR;\n }\n const numWidth = num.getWidth() + num_spacing;\n if (pos === Modifier.Position.LEFT) {\n num.setXShift(left_shift + numShiftL);\n num_shift = left_shift + numWidth; // spacing\n xWidthL = num_shift > xWidthL ? num_shift : xWidthL;\n }\n else if (pos === Modifier.Position.RIGHT) {\n num.setXShift(numShiftR);\n num_shift = shiftRight + numWidth; // spacing\n xWidthR = num_shift > xWidthR ? num_shift : xWidthR;\n }\n lastLine = line;\n lastNote = note;\n }\n state.left_shift += xWidthL;\n state.right_shift += xWidthR;\n return true;\n }\n static easyScoreHook({ fingerings } = {}, note, builder) {\n fingerings === null || fingerings === void 0 ? void 0 : fingerings.split(',').map((fingeringString) => {\n const split = fingeringString.trim().split('.');\n const params = { number: split[0] };\n if (split[1])\n params.position = split[1];\n return builder.getFactory().Fingering(params);\n }).map((fingering, index) => note.addModifier(fingering, index));\n }\n setFretHandFinger(finger) {\n this.finger = finger;\n return this;\n }\n getFretHandFinger() {\n return this.finger;\n }\n setOffsetX(x) {\n this.x_offset = x;\n return this;\n }\n setOffsetY(y) {\n this.y_offset = y;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n let dot_x = start.x + this.x_shift + this.x_offset;\n let dot_y = start.y + this.y_shift + this.y_offset + 5;\n switch (this.position) {\n case Modifier.Position.ABOVE:\n dot_x -= 4;\n dot_y -= 12;\n break;\n case Modifier.Position.BELOW:\n dot_x -= 2;\n dot_y += 10;\n break;\n case Modifier.Position.LEFT:\n dot_x -= this.width;\n break;\n case Modifier.Position.RIGHT:\n dot_x += 1;\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} does not exist`);\n }\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText('' + this.finger, dot_x, dot_y);\n ctx.restore();\n }\n}\nFretHandFinger.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 9,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (NoteHead.DEBUG)\n log('Vex.Flow.NoteHead', args);\n}\n/**\n * Draw slashnote head manually. No glyph exists for this.\n * @param ctx the Canvas context\n * @param duration the duration of the note. ex: \"4\"\n * @param x the x coordinate to draw at\n * @param y the y coordinate to draw at\n * @param stem_direction the direction of the stem\n */\nfunction drawSlashNoteHead(ctx, duration, x, y, stem_direction, staveSpace) {\n const width = Tables.SLASH_NOTEHEAD_WIDTH;\n ctx.save();\n ctx.setLineWidth(Tables.STEM_WIDTH);\n let fill = false;\n if (Tables.durationToNumber(duration) > 2) {\n fill = true;\n }\n if (!fill)\n x -= (Tables.STEM_WIDTH / 2) * stem_direction;\n ctx.beginPath();\n ctx.moveTo(x, y + staveSpace);\n ctx.lineTo(x, y + 1);\n ctx.lineTo(x + width, y - staveSpace);\n ctx.lineTo(x + width, y);\n ctx.lineTo(x, y + staveSpace);\n ctx.closePath();\n if (fill) {\n ctx.fill();\n }\n else {\n ctx.stroke();\n }\n if (Tables.durationToFraction(duration).equals(0.5)) {\n const breve_lines = [-3, -1, width + 1, width + 3];\n for (let i = 0; i < breve_lines.length; i++) {\n ctx.beginPath();\n ctx.moveTo(x + breve_lines[i], y - 10);\n ctx.lineTo(x + breve_lines[i], y + 11);\n ctx.stroke();\n }\n }\n ctx.restore();\n}\n/**\n * `NoteHeads` are typically not manipulated\n * directly, but used internally in `StaveNote`.\n *\n * See `tests/notehead_tests.ts` for usage examples.\n */\nexport class NoteHead extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n this.custom_glyph = false;\n this.stem_up_x_offset = 0;\n this.stem_down_x_offset = 0;\n this.index = noteStruct.index;\n this.x = noteStruct.x || 0;\n this.y = noteStruct.y || 0;\n if (noteStruct.note_type)\n this.noteType = noteStruct.note_type;\n this.displaced = noteStruct.displaced || false;\n this.stem_direction = noteStruct.stem_direction || Stem.UP;\n this.line = noteStruct.line || 0;\n // Get glyph code based on duration and note type. This could be\n // regular notes, rests, or other custom codes.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n // Swap out the glyph with leger lines\n if ((this.line > 5 || this.line < 0) && this.glyph.leger_code_head) {\n this.glyph.code_head = this.glyph.leger_code_head;\n }\n this.glyph_code = this.glyph.code_head;\n this.x_shift = noteStruct.x_shift || 0;\n if (noteStruct.custom_glyph_code) {\n this.custom_glyph = true;\n this.glyph_code = noteStruct.custom_glyph_code;\n this.stem_up_x_offset = noteStruct.stem_up_x_offset || 0;\n this.stem_down_x_offset = noteStruct.stem_down_x_offset || 0;\n }\n this.setStyle(noteStruct.style);\n this.slashed = noteStruct.slashed || false;\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads\n glyph_font_scale: noteStruct.glyph_font_scale || Tables.NOTATION_FONT_SCALE });\n this.setWidth(this.glyph.getWidth(this.render_options.glyph_font_scale));\n }\n static get CATEGORY() {\n return Category.NoteHead;\n }\n /** Get the width of the notehead. */\n getWidth() {\n return this.width;\n }\n /** Determine if the notehead is displaced. */\n isDisplaced() {\n return this.displaced === true;\n }\n /** Get the glyph data. */\n getGlyph() {\n return this.glyph;\n }\n /** Set the X coordinate. */\n setX(x) {\n this.x = x;\n return this;\n }\n /** Get the Y coordinate. */\n getY() {\n return this.y;\n }\n /** Set the Y coordinate. */\n setY(y) {\n this.y = y;\n return this;\n }\n /** Get the stave line the notehead is placed on. */\n getLine() {\n return this.line;\n }\n /** Set the stave line the notehead is placed on. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Get the canvas `x` coordinate position of the notehead. */\n getAbsoluteX() {\n // If the note has not been preformatted, then get the static x value\n // Otherwise, it's been formatted and we should use it's x value relative\n // to its tick context\n const x = !this.preFormatted ? this.x : super.getAbsoluteX();\n // For a more natural displaced notehead, we adjust the displacement amount\n // by half the stem width in order to maintain a slight overlap with the stem\n const displacementStemAdjustment = Stem.WIDTH / 2;\n const musicFont = Tables.currentMusicFont();\n const fontShift = musicFont.lookupMetric('notehead.shiftX', 0) * this.stem_direction;\n const displacedFontShift = musicFont.lookupMetric('noteHead.displaced.shiftX', 0) * this.stem_direction;\n return (x +\n fontShift +\n (this.displaced ? (this.width - displacementStemAdjustment) * this.stem_direction + displacedFontShift : 0));\n }\n /** Get the `BoundingBox` for the `NoteHead`. */\n getBoundingBox() {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getBoundingBox on an unformatted note.\");\n }\n const spacing = this.checkStave().getSpacingBetweenLines();\n const half_spacing = spacing / 2;\n const min_y = this.y - half_spacing;\n return new BoundingBox(this.getAbsoluteX(), min_y, this.width, spacing);\n }\n /** Set notehead to a provided `stave`. */\n setStave(stave) {\n const line = this.getLine();\n this.stave = stave;\n if (this.stave) {\n this.setY(this.stave.getYForNote(line));\n this.setContext(this.stave.getContext());\n }\n return this;\n }\n /** Pre-render formatting. */\n preFormat() {\n if (this.preFormatted)\n return this;\n const width = this.getWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx;\n this.setWidth(width);\n this.preFormatted = true;\n return this;\n }\n /** Draw the notehead. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let head_x = this.getAbsoluteX();\n if (this.custom_glyph) {\n // head_x += this.x_shift;\n head_x += this.stem_direction === Stem.UP ? this.stem_up_x_offset : this.stem_down_x_offset;\n }\n const y = this.y;\n L(\"Drawing note head '\", this.noteType, this.duration, \"' at\", head_x, y);\n // Begin and end positions for head.\n const stem_direction = this.stem_direction;\n const glyph_font_scale = this.render_options.glyph_font_scale;\n this.applyStyle(ctx);\n const categorySuffix = `${this.glyph_code}Stem${stem_direction === Stem.UP ? 'Up' : 'Down'}`;\n if (this.noteType === 's') {\n const staveSpace = this.checkStave().getSpacingBetweenLines();\n drawSlashNoteHead(ctx, this.duration, head_x, y, stem_direction, staveSpace);\n }\n else {\n Glyph.renderGlyph(ctx, head_x, y, glyph_font_scale, this.glyph_code, {\n category: this.custom_glyph ? `noteHead.custom.${categorySuffix}` : `noteHead.standard.${categorySuffix}`,\n });\n }\n this.restoreStyle(ctx);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.NoteHead.DEBUG` to `true`. */\nNoteHead.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// `StemmableNote` is an abstract interface for notes with optional stems.\n// Examples of stemmable notes are `StaveNote` and `TabNote`\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StemmableNote extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n }\n static get CATEGORY() {\n return Category.StemmableNote;\n }\n // Get and set the note's `Stem`\n getStem() {\n return this.stem;\n }\n checkStem() {\n if (!this.stem) {\n throw new RuntimeError('NoStem', 'No stem attached to instance');\n }\n return this.stem;\n }\n setStem(stem) {\n this.stem = stem;\n this.addChildElement(stem);\n return this;\n }\n // Builds and sets a new stem\n buildStem() {\n const stem = new Stem();\n this.setStem(stem);\n return this;\n }\n buildFlag(category = 'flag') {\n const { glyph } = this;\n if (this.hasFlag()) {\n const flagCode = this.getStemDirection() === Stem.DOWN ? glyph.code_flag_downstem : glyph.code_flag_upstem;\n this.flag = new Glyph(flagCode, this.render_options.glyph_font_scale, { category });\n }\n }\n // Get the custom glyph associated with the outer note head on the base of the stem.\n getBaseCustomNoteHeadGlyph() {\n if (this.getStemDirection() === Stem.DOWN) {\n return this.customGlyphs[this.customGlyphs.length - 1];\n }\n else {\n return this.customGlyphs[0];\n }\n }\n // Get the full length of stem\n getStemLength() {\n return Stem.HEIGHT + this.getStemExtension();\n }\n // Get the number of beams for this duration\n getBeamCount() {\n const glyph = this.getGlyph();\n if (glyph) {\n return glyph.beam_count;\n }\n else {\n return 0;\n }\n }\n // Get the minimum length of stem\n getStemMinimumLength() {\n const frac = Tables.durationToFraction(this.duration);\n let length = frac.value() <= 1 ? 0 : 20;\n // if note is flagged, cannot shorten beam\n switch (this.duration) {\n case '8':\n if (this.beam == undefined)\n length = 35;\n break;\n case '16':\n length = this.beam == undefined ? 35 : 25;\n break;\n case '32':\n length = this.beam == undefined ? 45 : 35;\n break;\n case '64':\n length = this.beam == undefined ? 50 : 40;\n break;\n case '128':\n length = this.beam == undefined ? 55 : 45;\n break;\n default:\n break;\n }\n return length;\n }\n // Get/set the direction of the stem\n getStemDirection() {\n if (!this.stem_direction)\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n return this.stem_direction;\n }\n setStemDirection(direction) {\n if (!direction)\n direction = Stem.UP;\n if (direction !== Stem.UP && direction !== Stem.DOWN) {\n throw new RuntimeError('BadArgument', `Invalid stem direction: ${direction}`);\n }\n this.stem_direction = direction;\n // Reset and reformat everything. Flag has to be built before calling getStemExtension.\n this.reset();\n if (this.hasFlag()) {\n this.buildFlag();\n }\n this.beam = undefined;\n if (this.stem) {\n this.stem.setDirection(direction);\n this.stem.setExtension(this.getStemExtension());\n // Lookup the base custom notehead (closest to the base of the stem) to extend or shorten\n // the stem appropriately. If there's no custom note head, lookup the standard notehead.\n const glyph = this.getBaseCustomNoteHeadGlyph() || this.getGlyph();\n // Get the font-specific customizations for the note heads.\n const offsets = Tables.currentMusicFont().lookupMetric(`stem.noteHead.${glyph.code_head}`, {\n offsetYBaseStemUp: 0,\n offsetYTopStemUp: 0,\n offsetYBaseStemDown: 0,\n offsetYTopStemDown: 0,\n });\n // Configure the stem to use these offsets.\n this.stem.setOptions({\n stem_up_y_offset: offsets.offsetYTopStemUp,\n stem_down_y_offset: offsets.offsetYTopStemDown,\n stem_up_y_base_offset: offsets.offsetYBaseStemUp,\n stem_down_y_base_offset: offsets.offsetYBaseStemDown, // glyph.stem_down_y_base_offset,\n });\n }\n if (this.preFormatted) {\n this.preFormat();\n }\n return this;\n }\n // Get the `x` coordinate of the stem\n getStemX() {\n const x_begin = this.getAbsoluteX() + this.x_shift;\n const x_end = this.getAbsoluteX() + this.x_shift + this.getGlyphWidth();\n const stem_x = this.stem_direction === Stem.DOWN ? x_begin : x_end;\n return stem_x;\n }\n // Get the `x` coordinate for the center of the glyph.\n // Used for `TabNote` stems and stemlets over rests\n getCenterGlyphX() {\n return this.getAbsoluteX() + this.x_shift + this.getGlyphWidth() / 2;\n }\n // Get the stem extension for the current duration\n getStemExtension() {\n const glyph = this.getGlyph();\n if (this.stem_extension_override != undefined) {\n return this.stem_extension_override;\n }\n // Use stem_beam_extension with beams\n if (this.beam) {\n return glyph.stem_beam_extension;\n }\n if (glyph) {\n return this.getStemDirection() === Stem.UP ? glyph.stem_up_extension : glyph.stem_down_extension;\n }\n return 0;\n }\n // Set the stem length to a specific. Will override the default length.\n setStemLength(height) {\n this.stem_extension_override = height - Stem.HEIGHT;\n return this;\n }\n // Get the top and bottom `y` values of the stem.\n getStemExtents() {\n if (!this.stem)\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n return this.stem.getExtents();\n }\n /** Gets the `y` value for the top modifiers at a specific `textLine`. */\n getYForTopText(textLine) {\n const stave = this.checkStave();\n if (this.hasStem()) {\n const extents = this.getStemExtents();\n if (!extents)\n throw new RuntimeError('InvalidState', 'Stem does not have extents.');\n return Math.min(stave.getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1));\n }\n else {\n return stave.getYForTopText(textLine);\n }\n }\n /** Gets the `y` value for the bottom modifiers at a specific `textLine`. */\n getYForBottomText(textLine) {\n const stave = this.checkStave();\n if (this.hasStem()) {\n const extents = this.getStemExtents();\n if (!extents)\n throw new RuntimeError('InvalidState', 'Stem does not have extents.');\n return Math.max(stave.getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine);\n }\n else {\n return stave.getYForBottomText(textLine);\n }\n }\n hasFlag() {\n return Tables.getGlyphProps(this.duration).flag && !this.beam;\n }\n /** Post formats the note. */\n postFormat() {\n var _a;\n (_a = this.beam) === null || _a === void 0 ? void 0 : _a.postFormat();\n this.postFormatted = true;\n return this;\n }\n /** Renders the stem onto the canvas. */\n drawStem(stemOptions) {\n var _a;\n this.checkContext();\n this.setRendered();\n this.setStem(new Stem(stemOptions));\n (_a = this.stem) === null || _a === void 0 ? void 0 : _a.setContext(this.getContext()).draw();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This file implements notes for standard notation. This consists of one or\n// more `NoteHeads`, an optional stem, and an optional flag.\n//\n// Throughout these comments, a \"note\" refers to the entire `StaveNote`,\n// and a \"key\" refers to a specific pitch/notehead within a note.\n//\n// See `tests/stavenote_tests.ts` for usage examples.\nimport { BoundingBox } from './boundingbox';\nimport { Modifier } from './modifier';\nimport { NoteHead } from './notehead';\nimport { Stem } from './stem';\nimport { StemmableNote } from './stemmablenote';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log, midLine, RuntimeError } from './util';\nfunction showDeprecationWarningForNoteHeads() {\n // eslint-disable-next-line\n console.warn('StaveNote.note_heads is deprecated. Use StaveNote.noteHeads instead.', 'This accessor will be removed in VexFlow 5.0.');\n}\n// To enable logging for this class. Set `Vex.Flow.StaveNote.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (StaveNote.DEBUG)\n log('Vex.Flow.StaveNote', args);\n}\nconst isInnerNoteIndex = (note, index) => index === (note.getStemDirection() === Stem.UP ? note.keyProps.length - 1 : 0);\n// Helper methods for rest positioning in ModifierContext.\nfunction shiftRestVertical(rest, note, dir) {\n const delta = dir;\n rest.line += delta;\n rest.maxLine += delta;\n rest.minLine += delta;\n rest.note.setKeyLine(0, rest.note.getKeyLine(0) + delta);\n}\n// Called from formatNotes :: center a rest between two notes\nfunction centerRest(rest, noteU, noteL) {\n const delta = rest.line - midLine(noteU.minLine, noteL.maxLine);\n rest.note.setKeyLine(0, rest.note.getKeyLine(0) - delta);\n rest.line -= delta;\n rest.maxLine -= delta;\n rest.minLine -= delta;\n}\nexport class StaveNote extends StemmableNote {\n constructor(noteStruct) {\n var _a, _b, _c;\n super(noteStruct);\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // INSTANCE MEMBERS\n this.minLine = 0;\n this.maxLine = 0;\n // Sorted variant of keyProps used internally\n this.sortedKeyProps = [];\n this.ledgerLineStyle = {};\n this.clef = (_a = noteStruct.clef) !== null && _a !== void 0 ? _a : 'treble';\n this.octave_shift = (_b = noteStruct.octave_shift) !== null && _b !== void 0 ? _b : 0;\n // Pull note rendering properties.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n // if true, displace note to right\n this.displaced = false;\n this.dot_shiftY = 0;\n // for displaced ledger lines\n this.use_default_head_x = false;\n // Drawing\n this._noteHeads = [];\n this.modifiers = [];\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads and rests\n glyph_font_scale: noteStruct.glyph_font_scale || Tables.NOTATION_FONT_SCALE, \n // number of stroke px to the left and right of head\n stroke_px: noteStruct.stroke_px || StaveNote.LEDGER_LINE_OFFSET });\n this.calculateKeyProps();\n this.buildStem();\n // Set the stem direction\n if (noteStruct.auto_stem) {\n this.autoStem();\n }\n else {\n this.setStemDirection((_c = noteStruct.stem_direction) !== null && _c !== void 0 ? _c : Stem.UP);\n }\n this.reset();\n this.buildFlag();\n }\n static get CATEGORY() {\n return Category.StaveNote;\n }\n /**\n * @deprecated Use Stem.UP.\n */\n static get STEM_UP() {\n return Stem.UP;\n }\n /**\n * @deprecated Use Stem.DOWN.\n */\n static get STEM_DOWN() {\n return Stem.DOWN;\n }\n static get LEDGER_LINE_OFFSET() {\n return 3;\n }\n static get minNoteheadPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Format notes inside a ModifierContext. */\n static format(notes, state) {\n if (!notes || notes.length < 2)\n return false;\n const notesList = [];\n for (let i = 0; i < notes.length; i++) {\n // Formatting uses sortedKeyProps to calculate line and minL.\n const props = notes[i].sortedKeyProps;\n const line = props[0].keyProps.line;\n let minL = props[props.length - 1].keyProps.line;\n const stemDirection = notes[i].getStemDirection();\n const stemMax = notes[i].getStemLength() / 10;\n const stemMin = notes[i].getStemMinimumLength() / 10;\n let maxL;\n if (notes[i].isRest()) {\n maxL = line + notes[i].glyph.line_above;\n minL = line - notes[i].glyph.line_below;\n }\n else {\n maxL =\n stemDirection === 1 ? props[props.length - 1].keyProps.line + stemMax : props[props.length - 1].keyProps.line;\n minL = stemDirection === 1 ? props[0].keyProps.line : props[0].keyProps.line - stemMax;\n }\n notesList.push({\n line: props[0].keyProps.line,\n maxLine: maxL,\n minLine: minL,\n isrest: notes[i].isRest(),\n stemDirection: stemDirection,\n stemMax,\n stemMin,\n voice_shift: notes[i].getVoiceShiftWidth(),\n is_displaced: notes[i].isDisplaced(),\n note: notes[i],\n });\n }\n let voices = 0;\n let noteU = undefined;\n let noteM = undefined;\n let noteL = undefined;\n const draw = [false, false, false];\n for (let i = 0; i < notesList.length; i++) {\n draw[i] = notesList[i].note.render_options.draw == false ? false : true;\n }\n if (draw[0] && draw[1] && draw[2]) {\n // Three visible notes\n voices = 3;\n noteU = notesList[0];\n noteM = notesList[1];\n noteL = notesList[2];\n }\n else if (draw[0] && draw[1]) {\n // Two visible notes, 0 & 1\n voices = 2;\n noteU = notesList[0];\n noteL = notesList[1];\n }\n else if (draw[0] && draw[2]) {\n // Two visible notes, 0 & 2\n voices = 2;\n noteU = notesList[0];\n noteL = notesList[2];\n }\n else if (draw[1] && draw[2]) {\n // Two visible notes, 1 & 2\n voices = 2;\n noteU = notesList[1];\n noteL = notesList[2];\n }\n else {\n // No shift required for less than 2 visible notes\n return true;\n }\n // for two voice backward compatibility, ensure upper voice is stems up\n // for three voices, the voices must be in order (upper, middle, lower)\n if (voices === 2 && noteU.stemDirection === -1 && noteL.stemDirection === 1) {\n noteU = notesList[1];\n noteL = notesList[0];\n }\n const voiceXShift = Math.max(noteU.voice_shift, noteL.voice_shift);\n let xShift = 0;\n // Test for two voice note intersection\n if (voices === 2) {\n const lineSpacing = noteU.note.hasStem() && noteL.note.hasStem() && noteU.stemDirection === noteL.stemDirection ? 0.0 : 0.5;\n if (noteL.isrest && noteU.isrest && noteU.note.duration === noteL.note.duration) {\n noteL.note.render_options.draw = false;\n }\n else if (noteU.minLine <= noteL.maxLine + lineSpacing) {\n if (noteU.isrest) {\n // shift rest up\n shiftRestVertical(noteU, noteL, 1);\n }\n else if (noteL.isrest) {\n // shift rest down\n shiftRestVertical(noteL, noteU, -1);\n }\n else {\n //Instead of shifting notes, remove the appropriate flag\n //If we are sharing a line, switch one notes stem direction.\n //If we are sharing a line and in the same voice, only then offset one note\n const lineDiff = Math.abs(noteU.line - noteL.line);\n if (noteU.note.hasStem() && noteL.note.hasStem()) {\n //If we have different dot values, must offset\n //Or If we have a white mixed with a black notehead, must offset\n let whiteNoteHeadCount = 0;\n let blackNoteHeadCount = 0;\n if (Tables.durationToNumber(noteU.note.duration) === 2) {\n whiteNoteHeadCount++;\n }\n else if (Tables.durationToNumber(noteU.note.duration) > 2) {\n blackNoteHeadCount++;\n }\n if (Tables.durationToNumber(noteL.note.duration) === 2) {\n whiteNoteHeadCount++;\n }\n else if (Tables.durationToNumber(noteL.note.duration) > 2) {\n blackNoteHeadCount++;\n }\n if ((whiteNoteHeadCount !== 2 && blackNoteHeadCount !== 2) ||\n noteU.note.getModifiersByType(Category.Dot).length !== noteL.note.getModifiersByType(Category.Dot).length) {\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (lineDiff < 1 && lineDiff > 0) {\n //if the notes are quite close but not on the same line, shift\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (noteU.note.voice !== noteL.note.voice) {\n //If we are not in the same voice\n if (noteU.stemDirection === noteL.stemDirection) {\n if (noteU.line != noteL.line) {\n xShift = voiceXShift + 2;\n noteU.note.setXShift(xShift);\n }\n else {\n //same line, swap stem direction for one note\n if (noteL.stemDirection === 1) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n }\n }\n } //Very close whole notes\n }\n else if (lineDiff < 1) {\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (noteU.note.hasStem()) {\n noteU.stemDirection = -noteU.note.getStemDirection();\n noteU.note.setStemDirection(noteU.stemDirection);\n }\n else if (noteL.note.hasStem()) {\n noteL.stemDirection = -noteL.note.getStemDirection();\n noteL.note.setStemDirection(noteL.stemDirection);\n }\n }\n }\n // format complete\n state.right_shift += xShift;\n return true;\n }\n if (!noteM)\n throw new RuntimeError('InvalidState', 'noteM not defined.');\n // For three voices, test if rests can be repositioned\n //\n // Special case 1 :: middle voice rest between two notes\n //\n if (noteM.isrest && !noteU.isrest && !noteL.isrest) {\n if (noteU.minLine <= noteM.maxLine || noteM.minLine <= noteL.maxLine) {\n const restHeight = noteM.maxLine - noteM.minLine;\n const space = noteU.minLine - noteL.maxLine;\n if (restHeight < space) {\n // center middle voice rest between the upper and lower voices\n centerRest(noteM, noteU, noteL);\n }\n else {\n xShift = voiceXShift + 2; // shift middle rest right\n noteM.note.setXShift(xShift);\n if (noteL.note.hasBeam() === false) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n if (noteU.minLine <= noteL.maxLine && noteU.note.hasBeam() === false) {\n noteU.stemDirection = 1;\n noteU.note.setStemDirection(1);\n }\n }\n // format complete\n state.right_shift += xShift;\n return true;\n }\n }\n // Special case 2 :: all voices are rests\n if (noteU.isrest && noteM.isrest && noteL.isrest) {\n // Hide upper voice rest\n noteU.note.render_options.draw = false;\n // Hide lower voice rest\n noteL.note.render_options.draw = false;\n // format complete\n state.right_shift += xShift;\n return true;\n }\n // Test if any other rests can be repositioned\n if (noteM.isrest && noteU.isrest && noteM.minLine <= noteL.maxLine) {\n // Hide middle voice rest\n noteM.note.render_options.draw = false;\n }\n if (noteM.isrest && noteL.isrest && noteU.minLine <= noteM.maxLine) {\n // Hide middle voice rest\n noteM.note.render_options.draw = false;\n }\n if (noteU.isrest && noteU.minLine <= noteM.maxLine) {\n // shift upper voice rest up;\n shiftRestVertical(noteU, noteM, 1);\n }\n if (noteL.isrest && noteM.minLine <= noteL.maxLine) {\n // shift lower voice rest down\n shiftRestVertical(noteL, noteM, -1);\n }\n // If middle voice intersects upper or lower voice\n if (noteU.minLine <= noteM.maxLine + 0.5 || noteM.minLine <= noteL.maxLine) {\n // shift middle note right\n xShift = voiceXShift + 2;\n noteM.note.setXShift(xShift);\n if (noteL.note.hasBeam() === false) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n if (noteU.minLine <= noteL.maxLine && noteU.note.hasBeam() === false) {\n noteU.stemDirection = 1;\n noteU.note.setStemDirection(1);\n }\n }\n state.right_shift += xShift;\n return true;\n }\n static postFormat(notes) {\n if (!notes)\n return false;\n notes.forEach((note) => note.postFormat());\n return true;\n }\n reset() {\n super.reset();\n // Save prior noteHead styles & reapply them after making new noteheads.\n const noteHeadStyles = this._noteHeads.map((noteHead) => noteHead.getStyle());\n this.buildNoteHeads();\n this._noteHeads.forEach((noteHead, index) => {\n const noteHeadStyle = noteHeadStyles[index];\n if (noteHeadStyle)\n noteHead.setStyle(noteHeadStyle);\n });\n const stave = this.stave;\n if (stave) {\n this._noteHeads.forEach((head) => head.setStave(stave));\n }\n this.calcNoteDisplacements();\n return this;\n }\n setBeam(beam) {\n this.beam = beam;\n this.calcNoteDisplacements();\n // Update stem extension if a beam is assigned.\n if (this.stem) {\n this.stem.setExtension(this.getStemExtension());\n }\n return this;\n }\n // Builds a `Stem` for the note\n buildStem() {\n this.setStem(new Stem({ hide: !!this.isRest() }));\n return this;\n }\n // Builds a `NoteHead` for each key in the note\n buildNoteHeads() {\n this._noteHeads = [];\n const stemDirection = this.getStemDirection();\n const keys = this.getKeys();\n let lastLine = undefined;\n let lineDiff = undefined;\n let displaced = false;\n // Draw notes from bottom to top.\n // For down-stem notes, we draw from top to bottom.\n let start;\n let end;\n let step;\n if (stemDirection === Stem.UP) {\n start = 0;\n end = keys.length;\n step = 1;\n }\n else {\n start = keys.length - 1;\n end = -1;\n step = -1;\n }\n for (let i = start; i !== end; i += step) {\n // Building noteheads rely on sortedKeNotes in order to calculate the displacements\n const noteProps = this.sortedKeyProps[i].keyProps;\n const line = noteProps.line;\n // Keep track of last line with a note head, so that consecutive heads\n // are correctly displaced.\n if (lastLine === undefined) {\n lastLine = line;\n }\n else {\n lineDiff = Math.abs(lastLine - line);\n if (lineDiff === 0 || lineDiff === 0.5) {\n displaced = !displaced;\n }\n else {\n displaced = false;\n this.use_default_head_x = true;\n }\n }\n lastLine = line;\n const notehead = new NoteHead({\n duration: this.duration,\n note_type: this.noteType,\n displaced,\n stem_direction: stemDirection,\n custom_glyph_code: noteProps.code,\n glyph_font_scale: this.render_options.glyph_font_scale,\n x_shift: noteProps.shift_right,\n stem_up_x_offset: noteProps.stem_up_x_offset,\n stem_down_x_offset: noteProps.stem_down_x_offset,\n line: noteProps.line,\n });\n this.addChildElement(notehead);\n this._noteHeads[this.sortedKeyProps[i].index] = notehead;\n }\n }\n // Automatically sets the stem direction based on the keys in the note\n autoStem() {\n this.setStemDirection(this.calculateOptimalStemDirection());\n }\n calculateOptimalStemDirection() {\n // Figure out optimal stem direction based on given notes\n // minLine & maxLine rely on sortedKeyProps\n this.minLine = this.sortedKeyProps[0].keyProps.line;\n this.maxLine = this.sortedKeyProps[this.keyProps.length - 1].keyProps.line;\n const MIDDLE_LINE = 3;\n const decider = (this.minLine + this.maxLine) / 2;\n const stemDirection = decider < MIDDLE_LINE ? Stem.UP : Stem.DOWN;\n return stemDirection;\n }\n // Calculates and stores the properties for each key in the note\n calculateKeyProps() {\n let lastLine;\n for (let i = 0; i < this.keys.length; ++i) {\n const key = this.keys[i];\n // All rests use the same position on the line.\n // if (this.glyph.rest) key = this.glyph.position;\n if (this.glyph.rest)\n this.glyph.position = key;\n const options = { octave_shift: this.octave_shift || 0, duration: this.duration };\n const props = Tables.keyProperties(key, this.clef, options);\n if (!props) {\n throw new RuntimeError('BadArguments', `Invalid key for note properties: ${key}`);\n }\n // Override line placement for default rests\n if (props.key === 'R') {\n if (this.duration === '1' || this.duration === 'w') {\n props.line = 4;\n }\n else {\n props.line = 3;\n }\n }\n // Calculate displacement of this note\n const line = props.line;\n if (lastLine == undefined) {\n lastLine = line;\n }\n else {\n if (Math.abs(lastLine - line) === 0.5) {\n this.displaced = true;\n props.displaced = true;\n // Have to mark the previous note as\n // displaced as well, for modifier placement\n if (this.keyProps.length > 0) {\n this.keyProps[i - 1].displaced = true;\n }\n }\n }\n lastLine = line;\n this.keyProps.push(props);\n }\n // Sort the notes from lowest line to highest line in sortedKeyProps\n // Warn no longer required as keyProps remains unsorted\n this.keyProps.forEach((keyProps, index) => {\n this.sortedKeyProps.push({ keyProps, index });\n });\n this.sortedKeyProps.sort((a, b) => a.keyProps.line - b.keyProps.line);\n }\n // Get the `BoundingBox` for the entire note\n getBoundingBox() {\n var _a, _b;\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getBoundingBox on an unformatted note.\");\n }\n const { width: w, modLeftPx, leftDisplacedHeadPx } = this.getMetrics();\n const x = this.getAbsoluteX() - modLeftPx - leftDisplacedHeadPx;\n let minY = 0;\n let maxY = 0;\n const halfLineSpacing = ((_b = (_a = this.getStave()) === null || _a === void 0 ? void 0 : _a.getSpacingBetweenLines()) !== null && _b !== void 0 ? _b : 0) / 2;\n const lineSpacing = halfLineSpacing * 2;\n if (this.isRest()) {\n const y = this.ys[0];\n const frac = Tables.durationToFraction(this.duration);\n if (frac.equals(1) || frac.equals(2)) {\n minY = y - halfLineSpacing;\n maxY = y + halfLineSpacing;\n }\n else {\n minY = y - this.glyph.line_above * lineSpacing;\n maxY = y + this.glyph.line_below * lineSpacing;\n }\n }\n else if (this.glyph.stem) {\n const ys = this.getStemExtents();\n ys.baseY += halfLineSpacing * this.getStemDirection();\n minY = Math.min(ys.topY, ys.baseY);\n maxY = Math.max(ys.topY, ys.baseY);\n }\n else {\n minY = 0;\n maxY = 0;\n for (let i = 0; i < this.ys.length; ++i) {\n const yy = this.ys[i];\n if (i === 0) {\n minY = yy;\n maxY = yy;\n }\n else {\n minY = Math.min(yy, minY);\n maxY = Math.max(yy, maxY);\n }\n }\n minY -= halfLineSpacing;\n maxY += halfLineSpacing;\n }\n return new BoundingBox(x, minY, w, maxY - minY);\n }\n // Gets the line number of the bottom note in the chord.\n // If `isTopNote` is `true` then get the top note's line number instead\n getLineNumber(isTopNote) {\n if (!this.keyProps.length) {\n throw new RuntimeError('NoKeyProps', \"Can't get bottom note line, because note is not initialized properly.\");\n }\n let resultLine = this.keyProps[0].line;\n // No precondition assumed for sortedness of keyProps array\n for (let i = 0; i < this.keyProps.length; i++) {\n const thisLine = this.keyProps[i].line;\n if (isTopNote) {\n if (thisLine > resultLine)\n resultLine = thisLine;\n }\n else {\n if (thisLine < resultLine)\n resultLine = thisLine;\n }\n }\n return resultLine;\n }\n /**\n * @returns true if this note is a type of rest. Rests don't have pitches, but take up space in the score.\n */\n isRest() {\n return this.glyph.rest;\n }\n // Determine if the current note is a chord\n isChord() {\n return !this.isRest() && this.keys.length > 1;\n }\n // Determine if the `StaveNote` has a stem\n hasStem() {\n return this.glyph.stem;\n }\n hasFlag() {\n return super.hasFlag() && !this.isRest();\n }\n getStemX() {\n if (this.noteType === 'r') {\n return this.getCenterGlyphX();\n }\n else {\n // We adjust the origin of the stem because we want the stem left-aligned\n // with the notehead if stemmed-down, and right-aligned if stemmed-up\n return super.getStemX() + (this.stem_direction ? Stem.WIDTH / (2 * -this.stem_direction) : 0);\n }\n }\n // Get the `y` coordinate for text placed on the top/bottom of a\n // note at a desired `text_line`\n getYForTopText(textLine) {\n const extents = this.getStemExtents();\n return Math.min(this.checkStave().getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1));\n }\n getYForBottomText(textLine) {\n const extents = this.getStemExtents();\n return Math.max(this.checkStave().getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine);\n }\n // Sets the current note to the provided `stave`. This applies\n // `y` values to the `NoteHeads`.\n setStave(stave) {\n super.setStave(stave);\n const ys = this._noteHeads.map((notehead) => {\n notehead.setStave(stave);\n return notehead.getY();\n });\n this.setYs(ys);\n if (this.stem) {\n const { y_top, y_bottom } = this.getNoteHeadBounds();\n this.stem.setYBounds(y_top, y_bottom);\n }\n return this;\n }\n // Check if note is shifted to the right\n isDisplaced() {\n return this.displaced;\n }\n // Sets whether shift note to the right. `displaced` is a `boolean`\n setNoteDisplaced(displaced) {\n this.displaced = displaced;\n return this;\n }\n // Get the starting `x` coordinate for a `StaveTie`\n getTieRightX() {\n let tieStartX = this.getAbsoluteX();\n tieStartX += this.getGlyphWidth() + this.x_shift + this.rightDisplacedHeadPx;\n if (this.modifierContext)\n tieStartX += this.modifierContext.getRightShift();\n return tieStartX;\n }\n // Get the ending `x` coordinate for a `StaveTie`\n getTieLeftX() {\n let tieEndX = this.getAbsoluteX();\n tieEndX += this.x_shift - this.leftDisplacedHeadPx;\n return tieEndX;\n }\n // Get the stave line on which to place a rest\n getLineForRest() {\n let restLine = this.keyProps[0].line;\n if (this.keyProps.length > 1) {\n const lastLine = this.keyProps[this.keyProps.length - 1].line;\n const top = Math.max(restLine, lastLine);\n const bot = Math.min(restLine, lastLine);\n restLine = midLine(top, bot);\n }\n return restLine;\n }\n // Get the default `x` and `y` coordinates for the provided `position`\n // and key `index`\n getModifierStartXY(position, index, options = {}) {\n var _a, _b;\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-Values calculated for this note.');\n }\n const { ABOVE, BELOW, LEFT, RIGHT } = Modifier.Position;\n let x = 0;\n if (position === LEFT) {\n // FIXME: Left modifier padding, move to font file\n x = -1 * 2;\n }\n else if (position === RIGHT) {\n // FIXME: Right modifier padding, move to font file\n x = this.getGlyphWidth() + this.x_shift + 2;\n if (this.stem_direction === Stem.UP &&\n this.hasFlag() &&\n (options.forceFlagRight || isInnerNoteIndex(this, index))) {\n x += (_b = (_a = this === null || this === void 0 ? void 0 : this.flag) === null || _a === void 0 ? void 0 : _a.getMetrics().width) !== null && _b !== void 0 ? _b : 0;\n }\n }\n else if (position === BELOW || position === ABOVE) {\n x = this.getGlyphWidth() / 2;\n }\n return {\n x: this.getAbsoluteX() + x,\n y: this.ys[index],\n };\n }\n // Sets the style of the complete StaveNote, including all keys\n // and the stem.\n setStyle(style) {\n return super.setGroupStyle(style);\n }\n setStemStyle(style) {\n const stem = this.getStem();\n if (stem)\n stem.setStyle(style);\n return this;\n }\n getStemStyle() {\n var _a;\n return (_a = this.stem) === null || _a === void 0 ? void 0 : _a.getStyle();\n }\n setLedgerLineStyle(style) {\n this.ledgerLineStyle = style;\n }\n getLedgerLineStyle() {\n return this.ledgerLineStyle;\n }\n setFlagStyle(style) {\n var _a;\n (_a = this.flag) === null || _a === void 0 ? void 0 : _a.setStyle(style);\n }\n getFlagStyle() {\n var _a;\n return (_a = this.flag) === null || _a === void 0 ? void 0 : _a.getStyle();\n }\n // Sets the notehead at `index` to the provided coloring `style`.\n //\n // `style` is an `object` with the following properties: `shadowColor`,\n // `shadowBlur`, `fillStyle`, `strokeStyle`\n setKeyStyle(index, style) {\n this._noteHeads[index].setStyle(style);\n return this;\n }\n setKeyLine(index, line) {\n this.keyProps[index].line = line;\n this.reset();\n return this;\n }\n getKeyLine(index) {\n return this.keyProps[index].line;\n }\n // Get the width of the note if it is displaced. Used for `Voice`\n // formatting\n getVoiceShiftWidth() {\n // TODO: may need to accommodate for dot here.\n return this.getGlyphWidth() * (this.displaced ? 2 : 1);\n }\n // Calculates and sets the extra pixels to the left or right\n // if the note is displaced.\n calcNoteDisplacements() {\n this.setLeftDisplacedHeadPx(this.displaced && this.stem_direction === Stem.DOWN ? this.getGlyphWidth() : 0);\n // For upstems with flags, the extra space is unnecessary, since it's taken\n // up by the flag.\n this.setRightDisplacedHeadPx(!this.hasFlag() && this.displaced && this.stem_direction === Stem.UP ? this.getGlyphWidth() : 0);\n }\n // Pre-render formatting\n preFormat() {\n if (this.preFormatted)\n return;\n let noteHeadPadding = 0;\n if (this.modifierContext) {\n this.modifierContext.preFormat();\n // If there are no modifiers on this note, make sure there is adequate padding\n // between the notes.\n if (this.modifierContext.getWidth() === 0) {\n noteHeadPadding = StaveNote.minNoteheadPadding;\n }\n }\n let width = this.getGlyphWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx + noteHeadPadding;\n // For upward flagged notes, the width of the flag needs to be added\n if (this.shouldDrawFlag() && this.stem_direction === Stem.UP) {\n width += this.getGlyphWidth();\n // TODO: Add flag width as a separate metric\n }\n this.setWidth(width);\n this.preFormatted = true;\n }\n /**\n * @typedef {Object} noteHeadBounds\n * @property {number} y_top the highest notehead bound\n * @property {number} y_bottom the lowest notehead bound\n * @property {number|Null} displaced_x the starting x for displaced noteheads\n * @property {number|Null} non_displaced_x the starting x for non-displaced noteheads\n * @property {number} highest_line the highest notehead line in traditional music line\n * numbering (bottom line = 1, top line = 5)\n * @property {number} lowest_line the lowest notehead line\n * @property {number|false} highest_displaced_line the highest staff line number\n * for a displaced notehead\n * @property {number|false} lowest_displaced_line\n * @property {number} highest_non_displaced_line\n * @property {number} lowest_non_displaced_line\n */\n /**\n * Get the staff line and y value for the highest & lowest noteheads\n * @returns {noteHeadBounds}\n */\n getNoteHeadBounds() {\n // Top and bottom Y values for stem.\n let yTop = +Infinity;\n let yBottom = -Infinity;\n let nonDisplacedX;\n let displacedX;\n let highestLine = this.checkStave().getNumLines();\n let lowestLine = 1;\n let highestDisplacedLine;\n let lowestDisplacedLine;\n let highestNonDisplacedLine = highestLine;\n let lowestNonDisplacedLine = lowestLine;\n this._noteHeads.forEach((notehead) => {\n const line = notehead.getLine();\n const y = notehead.getY();\n yTop = Math.min(y, yTop);\n yBottom = Math.max(y, yBottom);\n if (displacedX === undefined && notehead.isDisplaced()) {\n displacedX = notehead.getAbsoluteX();\n }\n if (nonDisplacedX === undefined && !notehead.isDisplaced()) {\n nonDisplacedX = notehead.getAbsoluteX();\n }\n highestLine = Math.max(line, highestLine);\n lowestLine = Math.min(line, lowestLine);\n if (notehead.isDisplaced()) {\n highestDisplacedLine = highestDisplacedLine === undefined ? line : Math.max(line, highestDisplacedLine);\n lowestDisplacedLine = lowestDisplacedLine === undefined ? line : Math.min(line, lowestDisplacedLine);\n }\n else {\n highestNonDisplacedLine = Math.max(line, highestNonDisplacedLine);\n lowestNonDisplacedLine = Math.min(line, lowestNonDisplacedLine);\n }\n }, this);\n return {\n y_top: yTop,\n y_bottom: yBottom,\n displaced_x: displacedX,\n non_displaced_x: nonDisplacedX,\n highest_line: highestLine,\n lowest_line: lowestLine,\n highest_displaced_line: highestDisplacedLine,\n lowest_displaced_line: lowestDisplacedLine,\n highest_non_displaced_line: highestNonDisplacedLine,\n lowest_non_displaced_line: lowestNonDisplacedLine,\n };\n }\n // Get the starting `x` coordinate for the noteheads\n getNoteHeadBeginX() {\n return this.getAbsoluteX() + this.x_shift;\n }\n // Get the ending `x` coordinate for the noteheads\n getNoteHeadEndX() {\n const xBegin = this.getNoteHeadBeginX();\n return xBegin + this.getGlyphWidth();\n }\n get noteHeads() {\n return this._noteHeads.slice();\n }\n /** @deprecated use StaveNote.noteHeads instead. */\n get note_heads() {\n showDeprecationWarningForNoteHeads();\n return this.noteHeads;\n }\n // Draw the ledger lines between the stave and the highest/lowest keys\n drawLedgerLines() {\n const stave = this.checkStave();\n const { glyph, render_options: { stroke_px }, } = this;\n const ctx = this.checkContext();\n const width = glyph.getWidth() + stroke_px * 2;\n const doubleWidth = 2 * (glyph.getWidth() + stroke_px) - Stem.WIDTH / 2;\n if (this.isRest())\n return;\n if (!ctx) {\n throw new RuntimeError('NoCanvasContext', \"Can't draw without a canvas context.\");\n }\n const { highest_line, lowest_line, highest_displaced_line, highest_non_displaced_line, lowest_displaced_line, lowest_non_displaced_line, displaced_x, non_displaced_x, } = this.getNoteHeadBounds();\n // Early out if there are no ledger lines to draw.\n if (highest_line < 6 && lowest_line > 0)\n return;\n const min_x = Math.min(displaced_x !== null && displaced_x !== void 0 ? displaced_x : 0, non_displaced_x !== null && non_displaced_x !== void 0 ? non_displaced_x : 0);\n const drawLedgerLine = (y, normal, displaced) => {\n let x;\n if (displaced && normal)\n x = min_x - stroke_px;\n else if (normal)\n x = (non_displaced_x !== null && non_displaced_x !== void 0 ? non_displaced_x : 0) - stroke_px;\n else\n x = (displaced_x !== null && displaced_x !== void 0 ? displaced_x : 0) - stroke_px;\n const ledgerWidth = normal && displaced ? doubleWidth : width;\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.lineTo(x + ledgerWidth, y);\n ctx.stroke();\n };\n const style = Object.assign(Object.assign({}, stave.getDefaultLedgerLineStyle()), this.getLedgerLineStyle());\n this.applyStyle(ctx, style);\n // Draw ledger lines below the staff:\n for (let line = 6; line <= highest_line; ++line) {\n const normal = non_displaced_x !== undefined && line <= highest_non_displaced_line;\n const displaced = highest_displaced_line !== undefined && line <= highest_displaced_line;\n drawLedgerLine(stave.getYForNote(line), normal, displaced);\n }\n // Draw ledger lines above the staff:\n for (let line = 0; line >= lowest_line; --line) {\n const normal = non_displaced_x !== undefined && line >= lowest_non_displaced_line;\n const displaced = lowest_displaced_line !== undefined && line >= lowest_displaced_line;\n drawLedgerLine(stave.getYForNote(line), normal, displaced);\n }\n this.restoreStyle(ctx, style);\n }\n // Draw all key modifiers\n drawModifiers(noteheadParam) {\n const ctx = this.checkContext();\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n const index = modifier.checkIndex();\n const notehead = this._noteHeads[index];\n if (notehead == noteheadParam) {\n const noteheadStyle = notehead.getStyle();\n notehead.applyStyle(ctx, noteheadStyle);\n modifier.setContext(ctx);\n modifier.drawWithStyle();\n notehead.restoreStyle(ctx, noteheadStyle);\n }\n }\n }\n shouldDrawFlag() {\n const hasStem = this.stem !== undefined;\n const hasFlag = this.glyph.flag; // specified in tables.js\n const hasNoBeam = this.beam === undefined;\n return hasStem && hasFlag && hasNoBeam;\n }\n // Draw the flag for the note\n drawFlag() {\n var _a, _b, _c, _d, _e;\n const ctx = this.checkContext();\n if (!ctx) {\n throw new RuntimeError('NoCanvasContext', \"Can't draw without a canvas context.\");\n }\n if (this.shouldDrawFlag()) {\n const { y_top, y_bottom } = this.getNoteHeadBounds();\n // eslint-disable-next-line\n const noteStemHeight = this.stem.getHeight();\n const flagX = this.getStemX();\n // What's with the magic +/- 2\n // ANSWER: a corner of the note stem pokes out beyond the tip of the flag.\n // The extra +/- 2 pushes the flag glyph outward so it covers the stem entirely.\n // Alternatively, we could shorten the stem.\n const flagY = this.getStemDirection() === Stem.DOWN\n ? // Down stems are below the note head and have flags on the right.\n y_top -\n noteStemHeight +\n 2 -\n (this.glyph ? this.glyph.stem_down_extension : 0) * this.getStaveNoteScale() -\n ((_b = (_a = this.flag) === null || _a === void 0 ? void 0 : _a.getMetrics().y_shift) !== null && _b !== void 0 ? _b : 0) * (1 - this.getStaveNoteScale())\n : // Up stems are above the note head and have flags on the right.\n y_bottom -\n noteStemHeight -\n 2 +\n (this.glyph ? this.glyph.stem_up_extension : 0) * this.getStaveNoteScale() -\n ((_d = (_c = this.flag) === null || _c === void 0 ? void 0 : _c.getMetrics().y_shift) !== null && _d !== void 0 ? _d : 0) * (1 - this.getStaveNoteScale());\n // Draw the Flag\n (_e = this.flag) === null || _e === void 0 ? void 0 : _e.render(ctx, flagX, flagY);\n }\n }\n // Draw the NoteHeads\n drawNoteHeads() {\n const ctx = this.checkContext();\n this._noteHeads.forEach((notehead) => {\n ctx.openGroup('notehead', notehead.getAttribute('id'), { pointerBBox: true });\n notehead.setContext(ctx).draw();\n this.drawModifiers(notehead);\n ctx.closeGroup();\n });\n }\n drawStem(stemOptions) {\n // GCR TODO: I can't find any context in which this is called with the stemStruct\n // argument in the codebase or tests. Nor can I find a case where super.drawStem\n // is called at all. Perhaps these should be removed?\n const ctx = this.checkContext();\n if (stemOptions) {\n this.setStem(new Stem(stemOptions));\n }\n // If we will render a flag, we shorten the stem so that the tip\n // does not poke through the flag.\n if (this.shouldDrawFlag() && this.stem) {\n this.stem.adjustHeightForFlag();\n }\n if (this.stem) {\n this.stem.setContext(ctx).draw();\n }\n }\n /** Primarily used as the scaling factor for grace notes, GraceNote will return the required scale. */\n getStaveNoteScale() {\n return 1.0;\n }\n /**\n * Override stemmablenote stem extension to adjust for distance from middle line.\n */\n getStemExtension() {\n const super_stem_extension = super.getStemExtension();\n if (!this.glyph.stem) {\n return super_stem_extension;\n }\n const stem_direction = this.getStemDirection();\n if (stem_direction !== this.calculateOptimalStemDirection()) {\n return super_stem_extension; // no adjustment for manually set stem direction.\n }\n let mid_line_distance;\n const MIDDLE_LINE = 3;\n if (stem_direction === Stem.UP) {\n // Note that the use of maxLine here instead of minLine might\n // seem counterintuitive, but in the case of (say) treble clef\n // chord(F2, E4) stem up, we do not want to extend the stem because\n // of F2, when a normal octave-length stem above E4 is fine.\n //\n // maxLine and minLine are set in calculateOptimalStemDirection() so\n // will be known.\n mid_line_distance = MIDDLE_LINE - this.maxLine;\n }\n else {\n mid_line_distance = this.minLine - MIDDLE_LINE;\n }\n // how many lines more than an octave is the relevant notehead?\n const lines_over_octave_from_mid_line = mid_line_distance - 3.5;\n if (lines_over_octave_from_mid_line <= 0) {\n return super_stem_extension;\n }\n const stave = this.getStave();\n let spacing_between_lines = 10;\n if (stave != undefined) {\n spacing_between_lines = stave.getSpacingBetweenLines();\n }\n return super_stem_extension + lines_over_octave_from_mid_line * spacing_between_lines;\n }\n // Draws all the `StaveNote` parts. This is the main drawing method.\n draw() {\n if (this.render_options.draw === false)\n return;\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', \"Can't draw note without Y values.\");\n }\n const ctx = this.checkContext();\n const xBegin = this.getNoteHeadBeginX();\n const shouldRenderStem = this.hasStem() && !this.beam;\n // Format note head x positions\n this._noteHeads.forEach((notehead) => notehead.setX(xBegin));\n if (this.stem) {\n // Format stem x positions\n const stemX = this.getStemX();\n this.stem.setNoteHeadXBounds(stemX, stemX);\n }\n L('Rendering ', this.isChord() ? 'chord :' : 'note :', this.keys);\n // Apply the overall style -- may be contradicted by local settings:\n this.applyStyle();\n ctx.openGroup('stavenote', this.getAttribute('id'));\n this.drawLedgerLines();\n if (shouldRenderStem)\n this.drawStem();\n this.drawNoteHeads();\n this.drawFlag();\n ctx.closeGroup();\n this.restoreStyle();\n this.setRendered();\n }\n}\nStaveNote.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveTie extends Element {\n /**\n * @param notes is a struct that has:\n *\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n *\n * @param text\n */\n constructor(notes, text) {\n super();\n this.setNotes(notes);\n this.text = text;\n this.render_options = {\n cp1: 8,\n cp2: 12,\n text_shift_x: 0,\n first_x_shift: 0,\n last_x_shift: 0,\n y_shift: 7,\n tie_spacing: 0,\n };\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveTie;\n }\n setDirection(direction) {\n this.direction = direction;\n return this;\n }\n /**\n * Set the notes to attach this tie to.\n *\n * @param {!Object} notes The notes to tie up.\n */\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Tie needs to have either first_note or last_note set.');\n }\n if (!notes.first_indices) {\n notes.first_indices = [0];\n }\n if (!notes.last_indices) {\n notes.last_indices = [0];\n }\n if (notes.first_indices.length !== notes.last_indices.length) {\n throw new RuntimeError('BadArguments', 'Tied notes must have same number of indices.');\n }\n this.notes = notes;\n return this;\n }\n /**\n * @return {boolean} Returns true if this is a partial bar.\n */\n isPartial() {\n return !this.notes.first_note || !this.notes.last_note;\n }\n renderTie(params) {\n if (params.first_ys.length === 0 || params.last_ys.length === 0) {\n throw new RuntimeError('BadArguments', 'No Y-values to render');\n }\n const ctx = this.checkContext();\n let cp1 = this.render_options.cp1;\n let cp2 = this.render_options.cp2;\n if (Math.abs(params.last_x_px - params.first_x_px) < 10) {\n cp1 = 2;\n cp2 = 8;\n }\n const first_x_shift = this.render_options.first_x_shift;\n const last_x_shift = this.render_options.last_x_shift;\n const y_shift = this.render_options.y_shift * params.direction;\n // setNotes(...) verified that first_indices and last_indices are not undefined.\n // As a result, we use the ! non-null assertion operator here.\n // eslint-disable-next-line\n const first_indices = this.notes.first_indices;\n // eslint-disable-next-line\n const last_indices = this.notes.last_indices;\n for (let i = 0; i < first_indices.length; ++i) {\n const cp_x = (params.last_x_px + last_x_shift + (params.first_x_px + first_x_shift)) / 2;\n const first_y_px = params.first_ys[first_indices[i]] + y_shift;\n const last_y_px = params.last_ys[last_indices[i]] + y_shift;\n if (isNaN(first_y_px) || isNaN(last_y_px)) {\n throw new RuntimeError('BadArguments', 'Bad indices for tie rendering.');\n }\n const top_cp_y = (first_y_px + last_y_px) / 2 + cp1 * params.direction;\n const bottom_cp_y = (first_y_px + last_y_px) / 2 + cp2 * params.direction;\n ctx.openGroup('stavetie', this.getAttribute('id'));\n ctx.beginPath();\n ctx.moveTo(params.first_x_px + first_x_shift, first_y_px);\n ctx.quadraticCurveTo(cp_x, top_cp_y, params.last_x_px + last_x_shift, last_y_px);\n ctx.quadraticCurveTo(cp_x, bottom_cp_y, params.first_x_px + first_x_shift, first_y_px);\n ctx.closePath();\n ctx.fill();\n ctx.closeGroup();\n }\n }\n renderText(first_x_px, last_x_px) {\n var _a, _b, _c;\n if (!this.text)\n return;\n const ctx = this.checkContext();\n let center_x = (first_x_px + last_x_px) / 2;\n center_x -= ctx.measureText(this.text).width / 2;\n const stave = (_b = (_a = this.notes.first_note) === null || _a === void 0 ? void 0 : _a.checkStave()) !== null && _b !== void 0 ? _b : (_c = this.notes.last_note) === null || _c === void 0 ? void 0 : _c.checkStave();\n if (stave) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText(this.text, center_x + this.render_options.text_shift_x, stave.getYForTopText() - 1);\n ctx.restore();\n }\n }\n /**\n * Returns the TieNotes structure of the first and last note this tie connects.\n */\n getNotes() {\n return this.notes;\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const first_note = this.notes.first_note;\n const last_note = this.notes.last_note;\n // Provide some default values so the compiler doesn't complain.\n let first_x_px = 0;\n let last_x_px = 0;\n let first_ys = [0];\n let last_ys = [0];\n let stem_direction = 0;\n if (first_note) {\n first_x_px = first_note.getTieRightX() + this.render_options.tie_spacing;\n stem_direction = first_note.getStemDirection();\n first_ys = first_note.getYs();\n }\n else if (last_note) {\n const stave = last_note.checkStave();\n first_x_px = stave.getTieStartX();\n first_ys = last_note.getYs();\n this.notes.first_indices = this.notes.last_indices;\n }\n if (last_note) {\n last_x_px = last_note.getTieLeftX() + this.render_options.tie_spacing;\n stem_direction = last_note.getStemDirection();\n last_ys = last_note.getYs();\n }\n else if (first_note) {\n const stave = first_note.checkStave();\n last_x_px = stave.getTieEndX();\n last_ys = first_note.getYs();\n this.notes.last_indices = this.notes.first_indices;\n }\n if (this.direction) {\n stem_direction = this.direction;\n }\n this.renderTie({\n first_x_px,\n last_x_px,\n first_ys,\n last_ys,\n direction: stem_direction,\n });\n this.renderText(first_x_px, last_x_px);\n return true;\n }\n}\n/** Default text font. */\nStaveTie.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","// / [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { StaveTie } from './stavetie';\nimport { Category } from './typeguard';\nexport class TabTie extends StaveTie {\n static get CATEGORY() {\n return Category.TabTie;\n }\n static createHammeron(notes) {\n return new TabTie(notes, 'H');\n }\n static createPulloff(notes) {\n return new TabTie(notes, 'P');\n }\n /**\n * @param notes is a struct that has:\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n *\n * @param text\n */\n constructor(notes, text) {\n super(notes, text);\n this.render_options.cp1 = 9;\n this.render_options.cp2 = 11;\n this.render_options.y_shift = 3;\n this.direction = -1; // Tab tie's are always face up.\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var VoiceMode;\n(function (VoiceMode) {\n VoiceMode[VoiceMode[\"STRICT\"] = 1] = \"STRICT\";\n VoiceMode[VoiceMode[\"SOFT\"] = 2] = \"SOFT\";\n VoiceMode[VoiceMode[\"FULL\"] = 3] = \"FULL\";\n})(VoiceMode || (VoiceMode = {}));\n/**\n * `Voice` is mainly a container object to group `Tickables` for formatting.\n */\nexport class Voice extends Element {\n constructor(time) {\n super();\n this.resolutionMultiplier = 1;\n this.mode = VoiceMode.STRICT;\n this.preFormatted = false;\n this.ticksUsed = new Fraction(0, 1);\n this.largestTickWidth = 0;\n this.tickables = [];\n this.options = {\n softmaxFactor: Tables.SOFTMAX_FACTOR,\n };\n // Convert the `time` string into a VoiceTime object if necessary.\n let voiceTime;\n if (typeof time === 'string') {\n // Time signature shortcut: \"4/4\", \"3/8\", etc.\n const match = time.match(/(\\d+)\\/(\\d+)/);\n if (match) {\n voiceTime = {\n num_beats: parseInt(match[1]),\n beat_value: parseInt(match[2]),\n };\n }\n }\n else {\n voiceTime = time;\n }\n // Default time signature is 4/4.\n this.time = Object.assign({ num_beats: 4, beat_value: 4, resolution: Tables.RESOLUTION }, voiceTime);\n // Recalculate total ticks.\n this.totalTicks = new Fraction(this.time.num_beats * (this.time.resolution / this.time.beat_value), 1);\n this.smallestTickCount = this.totalTicks.clone();\n }\n static get CATEGORY() {\n return Category.Voice;\n }\n /**\n * Modes allow the addition of ticks in three different ways:\n * - STRICT: This is the default. Ticks must fill the voice.\n * - SOFT: Ticks can be added without restrictions.\n * - FULL: Ticks do not need to fill the voice, but can't exceed the maximum tick length.\n */\n static get Mode() {\n return VoiceMode;\n }\n /** Get the total ticks in the voice. */\n getTotalTicks() {\n return this.totalTicks;\n }\n /** Get the total ticks used in the voice by all the tickables. */\n getTicksUsed() {\n return this.ticksUsed;\n }\n /** Get the largest width of all the tickables. */\n getLargestTickWidth() {\n return this.largestTickWidth;\n }\n /** Get the tick count for the shortest tickable */\n getSmallestTickCount() {\n return this.smallestTickCount;\n }\n /** Get the tickables in the voice. */\n getTickables() {\n return this.tickables;\n }\n /** Get the voice mode. */\n getMode() {\n return this.mode;\n }\n /**\n * Set the voice mode.\n * @param mode value from `VoiceMode`\n */\n setMode(mode) {\n this.mode = mode;\n return this;\n }\n /** Get the resolution multiplier for the voice. */\n getResolutionMultiplier() {\n return this.resolutionMultiplier;\n }\n /** Get the actual tick resolution for the voice. */\n getActualResolution() {\n return this.resolutionMultiplier * this.time.resolution;\n }\n /** Set the voice's stave. */\n setStave(stave) {\n this.stave = stave;\n // Reset the bounding box so we can reformat.\n this.boundingBox = undefined;\n return this;\n }\n getStave() {\n return this.stave;\n }\n /** Get the bounding box for the voice. */\n getBoundingBox() {\n if (!this.boundingBox) {\n const stave = this.checkStave();\n let boundingBox = undefined;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n tickable.setStave(stave);\n const bb = tickable.getBoundingBox();\n if (bb) {\n boundingBox = boundingBox ? boundingBox.mergeWith(bb) : bb;\n }\n }\n this.boundingBox = boundingBox;\n }\n return this.boundingBox;\n }\n /** Set the voice mode to strict or soft. */\n setStrict(strict) {\n this.mode = strict ? VoiceMode.STRICT : VoiceMode.SOFT;\n return this;\n }\n /** Determine if the voice is complete according to the voice mode. */\n isComplete() {\n if (this.mode === VoiceMode.STRICT || this.mode === VoiceMode.FULL) {\n return this.ticksUsed.equals(this.totalTicks);\n }\n else {\n return true;\n }\n }\n /**\n * We use softmax to layout the tickables proportional to the exponent of\n * their duration. The softmax factor is used to determine the 'linearness' of\n * the layout.\n *\n * The softmax of all the tickables in this voice should sum to 1.\n */\n setSoftmaxFactor(factor) {\n this.options.softmaxFactor = factor;\n return this;\n }\n /**\n * Calculate the sum of the exponents of all the ticks in this voice to use\n * as the denominator of softmax.\n */\n reCalculateExpTicksUsed() {\n const totalTicks = this.ticksUsed.value();\n const exp = (tickable) => Math.pow(this.options.softmaxFactor, tickable.getTicks().value() / totalTicks);\n this.expTicksUsed = this.tickables.map(exp).reduce((a, b) => a + b, 0);\n return this.expTicksUsed;\n }\n /** Get the softmax-scaled value of a tick duration. 'tickValue' is a number. */\n softmax(tickValue) {\n if (!this.expTicksUsed) {\n this.expTicksUsed = this.reCalculateExpTicksUsed();\n }\n const totalTicks = this.ticksUsed.value();\n const exp = (v) => Math.pow(this.options.softmaxFactor, v / totalTicks);\n const sm = exp(tickValue) / this.expTicksUsed;\n return sm;\n }\n /** Add a tickable to the voice. */\n addTickable(tickable) {\n if (!tickable.shouldIgnoreTicks()) {\n const ticks = tickable.getTicks();\n // Update the total ticks for this line.\n this.ticksUsed.add(ticks);\n this.expTicksUsed = 0; // reset\n if ((this.mode === VoiceMode.STRICT || this.mode === VoiceMode.FULL) &&\n this.ticksUsed.greaterThan(this.totalTicks)) {\n this.ticksUsed.subtract(ticks);\n throw new RuntimeError('BadArgument', 'Too many ticks.');\n }\n // Track the smallest tickable for formatting.\n if (ticks.lessThan(this.smallestTickCount)) {\n this.smallestTickCount = ticks.clone();\n }\n this.resolutionMultiplier = this.ticksUsed.denominator;\n // Expand total ticks using denominator from ticks used.\n this.totalTicks.add(0, this.ticksUsed.denominator);\n }\n // Add the tickable to the line.\n this.tickables.push(tickable);\n tickable.setVoice(this);\n return this;\n }\n /** Add an array of tickables to the voice. */\n addTickables(tickables) {\n for (let i = 0; i < tickables.length; ++i) {\n this.addTickable(tickables[i]);\n }\n return this;\n }\n /** Preformat the voice by applying the voice's stave to each note. */\n preFormat() {\n if (this.preFormatted)\n return this;\n const stave = this.checkStave();\n this.tickables.forEach((tickable) => {\n if (!tickable.getStave()) {\n tickable.setStave(stave);\n }\n });\n this.preFormatted = true;\n return this;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n /**\n * Render the voice onto the canvas `context` and an optional `stave`.\n * If `stave` is omitted, it is expected that the notes have staves\n * already set.\n *\n * This method also calculates the voice's boundingBox while drawing\n * the notes. Note the similarities with this.getBoundingBox().\n */\n draw(context = this.checkContext(), stave) {\n stave = stave !== null && stave !== void 0 ? stave : this.stave;\n this.setRendered();\n let boundingBox = undefined;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n // Set the stave if provided.\n if (stave) {\n tickable.setStave(stave);\n }\n defined(tickable.getStave(), 'MissingStave', 'The voice cannot draw tickables without staves.');\n const bb = tickable.getBoundingBox();\n if (bb) {\n boundingBox = boundingBox ? boundingBox.mergeWith(bb) : bb;\n }\n tickable.setContext(context);\n tickable.drawWithStyle();\n }\n this.boundingBox = boundingBox;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This file implements `GraceNoteGroup` which is used to format and\n// render grace notes.\nimport { Beam } from './beam';\nimport { Formatter } from './formatter';\nimport { Modifier } from './modifier';\nimport { StaveNote } from './stavenote';\nimport { StaveTie } from './stavetie';\nimport { Tables } from './tables';\nimport { TabTie } from './tabtie';\nimport { Category, isStaveNote } from './typeguard';\nimport { log } from './util';\nimport { Voice } from './voice';\n// To enable logging for this class. Set `GraceNoteGroup.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (GraceNoteGroup.DEBUG)\n log('Vex.Flow.GraceNoteGroup', args);\n}\n/** GraceNoteGroup is used to format and render grace notes. */\nexport class GraceNoteGroup extends Modifier {\n //** `GraceNoteGroup` inherits from `Modifier` and is placed inside a `ModifierContext`. */\n constructor(grace_notes, show_slur) {\n super();\n this.preFormatted = false;\n this.position = Modifier.Position.LEFT;\n this.grace_notes = grace_notes;\n this.width = 0;\n this.show_slur = show_slur;\n this.slur = undefined;\n this.voice = new Voice({\n num_beats: 4,\n beat_value: 4,\n resolution: Tables.RESOLUTION,\n }).setStrict(false);\n this.render_options = {\n slur_y_shift: 0,\n };\n this.beams = [];\n this.voice.addTickables(this.grace_notes);\n return this;\n }\n static get CATEGORY() {\n return Category.GraceNoteGroup;\n }\n /** Arranges groups inside a `ModifierContext`. */\n static format(gracenote_groups, state) {\n const group_spacing_stave = 4;\n const group_spacing_tab = 0;\n if (!gracenote_groups || gracenote_groups.length === 0)\n return false;\n const group_list = [];\n let prev_note = null;\n let shiftL = 0;\n for (let i = 0; i < gracenote_groups.length; ++i) {\n const gracenote_group = gracenote_groups[i];\n const note = gracenote_group.getNote();\n const is_stavenote = isStaveNote(note);\n const spacing = is_stavenote ? group_spacing_stave : group_spacing_tab;\n if (is_stavenote && note !== prev_note) {\n // Iterate through all notes to get the displaced pixels\n for (let n = 0; n < note.keys.length; ++n) {\n shiftL = Math.max(note.getLeftDisplacedHeadPx(), shiftL);\n }\n prev_note = note;\n }\n group_list.push({ shift: shiftL, gracenote_group, spacing });\n }\n // If first note left shift in case it is displaced\n let group_shift = group_list[0].shift;\n let formatWidth;\n for (let i = 0; i < group_list.length; ++i) {\n const gracenote_group = group_list[i].gracenote_group;\n gracenote_group.preFormat();\n formatWidth = gracenote_group.getWidth() + group_list[i].spacing;\n group_shift = Math.max(formatWidth, group_shift);\n }\n for (let i = 0; i < group_list.length; ++i) {\n const gracenote_group = group_list[i].gracenote_group;\n formatWidth = gracenote_group.getWidth() + group_list[i].spacing;\n gracenote_group.setSpacingFromNextModifier(group_shift - Math.min(formatWidth, group_shift) + StaveNote.minNoteheadPadding);\n }\n state.left_shift += group_shift;\n return true;\n }\n preFormat() {\n if (this.preFormatted)\n return;\n if (!this.formatter) {\n this.formatter = new Formatter();\n }\n this.formatter.joinVoices([this.voice]).format([this.voice], 0, {});\n this.setWidth(this.formatter.getMinTotalWidth());\n this.preFormatted = true;\n }\n beamNotes(grace_notes) {\n grace_notes = grace_notes || this.grace_notes;\n if (grace_notes.length > 1) {\n const beam = new Beam(grace_notes);\n beam.render_options.beam_width = 3;\n beam.render_options.partial_beam_length = 4;\n this.beams.push(beam);\n }\n return this;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getWidth() {\n return this.width + StaveNote.minNoteheadPadding;\n }\n getGraceNotes() {\n return this.grace_notes;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n L('Drawing grace note group for:', note);\n this.alignSubNotesWithNote(this.getGraceNotes(), note); // Modifier function\n // Draw grace notes.\n this.grace_notes.forEach((graceNote) => graceNote.setContext(ctx).draw());\n // Draw beams.\n this.beams.forEach((beam) => beam.setContext(ctx).draw());\n if (this.show_slur) {\n // Create and draw slur.\n const is_stavenote = isStaveNote(note);\n const TieClass = is_stavenote ? StaveTie : TabTie;\n this.slur = new TieClass({\n last_note: this.grace_notes[0],\n first_note: note,\n first_indices: [0],\n last_indices: [0],\n });\n this.slur.render_options.cp2 = 12;\n this.slur.render_options.y_shift = (is_stavenote ? 7 : 5) + this.render_options.slur_y_shift;\n this.slur.setContext(ctx).draw();\n }\n }\n}\nGraceNoteGroup.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2016\n//\n// ## Description\n//\n// This file implements `NoteSubGroup` which is used to format and\n// render notes as a `Modifier`\n// ex) ClefNote, TimeSigNote and BarNote.\nimport { Formatter } from './formatter';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { Voice } from './voice';\nexport class NoteSubGroup extends Modifier {\n constructor(subNotes) {\n super();\n this.preFormatted = false;\n this.position = Modifier.Position.LEFT;\n this.subNotes = subNotes;\n this.subNotes.forEach((subNote) => {\n subNote.setIgnoreTicks(false);\n });\n this.width = 0;\n this.formatter = new Formatter();\n this.voice = new Voice({\n num_beats: 4,\n beat_value: 4,\n resolution: Tables.RESOLUTION,\n }).setStrict(false);\n this.voice.addTickables(this.subNotes);\n }\n static get CATEGORY() {\n return Category.NoteSubGroup;\n }\n // Arrange groups inside a `ModifierContext`\n static format(groups, state) {\n if (!groups || groups.length === 0)\n return false;\n let width = 0;\n for (let i = 0; i < groups.length; ++i) {\n const group = groups[i];\n group.preFormat();\n width += group.getWidth();\n }\n state.left_shift += width;\n return true;\n }\n preFormat() {\n if (this.preFormatted)\n return;\n this.formatter.joinVoices([this.voice]).format([this.voice], 0);\n this.setWidth(this.formatter.getMinTotalWidth());\n this.preFormatted = true;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getWidth() {\n return this.width;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n this.alignSubNotesWithNote(this.subNotes, note); // Modifier function\n this.subNotes.forEach((subNote) => subNote.setContext(ctx).drawWithStyle());\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// A formatter for abstract tickable objects, such as notes, chords,\n// tabs, etc.\nimport { Fraction } from './fraction';\nimport { RuntimeError } from './util';\n/**\n * TickContext formats abstract tickable objects, such as notes, chords, tabs, etc.\n */\nexport class TickContext {\n constructor(options) {\n this.preFormatted = false;\n this.postFormatted = false;\n this.tickID = options && options.tickID ? options.tickID : 0;\n this.currentTick = new Fraction(0, 1);\n this.maxTicks = new Fraction(0, 1);\n this.maxTickable = undefined; // Biggest tickable\n this.minTicks = undefined; // this can remian null if all tickables have ignore_ticks\n this.minTickable = undefined;\n this.padding = 1; // padding on each side (width += padding * 2)\n this.x = 0;\n this.xBase = 0; // base x position without xOffset\n this.xOffset = 0; // xBase and xOffset are an alternative way to describe x (x = xB + xO)\n this.tickables = []; // Notes, tabs, chords, lyrics.\n this.tickablesByVoice = {}; // Tickables indexed by voice number\n // Formatting metrics\n this.notePx = 0; // width of widest note in this context\n this.glyphPx = 0; // width of glyph (note head)\n this.leftDisplacedHeadPx = 0; // Extra left pixels for displaced notes\n this.rightDisplacedHeadPx = 0; // Extra right pixels for displaced notes\n this.modLeftPx = 0; // Left modifier pixels\n this.modRightPx = 0; // Right modifier pixels\n this.totalLeftPx = 0; // Total left pixels\n this.totalRightPx = 0; // Total right pixels\n this.tContexts = []; // Parent array of tick contexts\n this.width = 0;\n this.formatterMetrics = {\n // The freedom of a tickcontext is the distance it can move without colliding\n // with neighboring elements. A formatter can set these values during its\n // formatting pass, which a different formatter can then use to fine tune.\n freedom: { left: 0, right: 0 },\n };\n }\n static getNextContext(tContext) {\n const contexts = tContext.tContexts;\n const index = contexts.indexOf(tContext);\n if (index + 1 < contexts.length)\n return contexts[index + 1];\n }\n getTickID() {\n return this.tickID;\n }\n getX() {\n return this.x;\n }\n setX(x) {\n this.x = x;\n this.xBase = x;\n this.xOffset = 0;\n return this;\n }\n getXBase() {\n return this.xBase;\n } // use of xBase and xOffset is optional, avoids offset creep\n setXBase(xBase) {\n this.xBase = xBase;\n this.x = xBase + this.xOffset;\n }\n getXOffset() {\n return this.xOffset;\n }\n setXOffset(xOffset) {\n this.xOffset = xOffset;\n this.x = this.xBase + xOffset;\n }\n getWidth() {\n return this.width + this.padding * 2;\n }\n setPadding(padding) {\n this.padding = padding;\n return this;\n }\n getMaxTicks() {\n return this.maxTicks;\n }\n getMinTicks() {\n return this.minTicks;\n }\n getMaxTickable() {\n return this.maxTickable;\n }\n getMinTickable() {\n return this.minTickable;\n }\n getTickables() {\n return this.tickables;\n }\n /**\n * Introduced on 2020-04-17 as getTickablesForVoice(voiceIndex).\n * https://github.com/0xfe/vexflow/blame/dc97b0cc5bb93171c0038638c34362dc958222ca/src/tickcontext.js#L63\n * Renamed on 2021-08-05 to getTickableForVoice(voiceIndex). Method renamed to singular, since it returns one Tickable.\n */\n getTickableForVoice(voiceIndex) {\n return this.tickablesByVoice[voiceIndex];\n }\n getTickablesByVoice() {\n return this.tickablesByVoice;\n }\n getCenterAlignedTickables() {\n return this.tickables.filter((tickable) => tickable.isCenterAligned());\n }\n /** Gets widths context, note and left/right modifiers for formatting. */\n getMetrics() {\n const { width, glyphPx, notePx, leftDisplacedHeadPx, rightDisplacedHeadPx, modLeftPx, modRightPx, totalLeftPx, totalRightPx, } = this;\n return {\n width,\n glyphPx,\n notePx,\n leftDisplacedHeadPx,\n rightDisplacedHeadPx,\n modLeftPx,\n modRightPx,\n totalLeftPx,\n totalRightPx,\n };\n }\n getCurrentTick() {\n return this.currentTick;\n }\n setCurrentTick(tick) {\n this.currentTick = tick;\n this.preFormatted = false;\n }\n addTickable(tickable, voiceIndex) {\n if (!tickable) {\n throw new RuntimeError('BadArgument', 'Invalid tickable added.');\n }\n if (!tickable.shouldIgnoreTicks()) {\n const ticks = tickable.getTicks();\n if (ticks.greaterThan(this.maxTicks)) {\n this.maxTicks = ticks.clone();\n this.maxTickable = tickable;\n }\n if (this.minTicks == null) {\n this.minTicks = ticks.clone();\n this.minTickable = tickable;\n }\n else if (ticks.lessThan(this.minTicks)) {\n this.minTicks = ticks.clone();\n this.minTickable = tickable;\n }\n }\n tickable.setTickContext(this);\n this.tickables.push(tickable);\n this.tickablesByVoice[voiceIndex || 0] = tickable;\n this.preFormatted = false;\n return this;\n }\n preFormat() {\n if (this.preFormatted)\n return this;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n tickable.preFormat();\n const metrics = tickable.getMetrics();\n // Maintain max displaced head pixels from all tickables in the context\n this.leftDisplacedHeadPx = Math.max(this.leftDisplacedHeadPx, metrics.leftDisplacedHeadPx);\n this.rightDisplacedHeadPx = Math.max(this.rightDisplacedHeadPx, metrics.rightDisplacedHeadPx);\n // Maintain the widest note for all tickables in the context\n this.notePx = Math.max(this.notePx, metrics.notePx);\n // Maintain the widest note head\n this.glyphPx = Math.max(this.glyphPx, metrics.glyphWidth || 0);\n // Total modifier shift\n this.modLeftPx = Math.max(this.modLeftPx, metrics.modLeftPx);\n this.modRightPx = Math.max(this.modRightPx, metrics.modRightPx);\n // Total shift\n this.totalLeftPx = Math.max(this.totalLeftPx, metrics.modLeftPx + metrics.leftDisplacedHeadPx);\n this.totalRightPx = Math.max(this.totalRightPx, metrics.modRightPx + metrics.rightDisplacedHeadPx);\n // Recalculate the tick context total width\n this.width = this.notePx + this.totalLeftPx + this.totalRightPx;\n }\n return this;\n }\n postFormat() {\n if (this.postFormatted)\n return this;\n this.postFormatted = true;\n return this;\n }\n getFormatterMetrics() {\n return this.formatterMetrics;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TickContext } from './tickcontext';\nimport { Category, isTabNote } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Ornament.DEBUG)\n log('Vex.Flow.Ornament', args);\n}\n/**\n * Ornament implements ornaments as modifiers that can be\n * attached to notes. The complete list of ornaments is available in\n * `tables.ts` under `Vex.Flow.ornamentCodes`.\n *\n * See `tests/ornament_tests.ts` for usage examples.\n */\nexport class Ornament extends Modifier {\n /**\n * Create a new ornament of type `type`, which is an entry in\n * `Vex.Flow.ornamentCodes` in `tables.ts`.\n */\n constructor(type) {\n super();\n this.type = type;\n this.delayed = false;\n this.render_options = {\n font_scale: 38,\n accidentalLowerPadding: 3,\n accidentalUpperPadding: 3,\n };\n this.ornament = Tables.ornamentCodes(this.type);\n // new ornaments have their origin at the origin, and have more specific\n // metrics. Legacy ornaments do some\n // x scaling, and have hard-coded metrics\n const metrics = this.getMetrics();\n // some jazz ornaments are above or below depending on stem direction.\n this.adjustForStemDirection = false;\n // some jazz ornaments like falls are supposed to overlap with future bars\n // and so we report a different width than they actually take up.\n this.reportedWidth = metrics && metrics.reportedWidth ? metrics.reportedWidth : 0;\n this.stemUpYOffset = metrics && metrics.stemUpYOffset ? metrics.stemUpYOffset : 0;\n this.ornamentAlignWithNoteHead = Ornament.ornamentAlignWithNoteHead.indexOf(this.type) >= 0;\n if (!this.ornament) {\n throw new RuntimeError('ArgumentError', `Ornament not found: '${this.type}'`);\n }\n this.x_shift = metrics ? metrics.xOffset : 0;\n this.y_shift = metrics ? metrics.yOffset : 0;\n this.glyph = new Glyph(this.ornament.code, this.render_options.font_scale, {\n category: `ornament.${this.ornament.code}`,\n });\n // Is this a jazz ornament that goes between this note and the next note.\n if (Ornament.ornamentNoteTransition.indexOf(this.type) >= 0) {\n this.delayed = true;\n }\n // Legacy ornaments need this. I don't know why, but horizontal spacing issues\n // happen if I don't set it.\n if (!metrics) {\n this.glyph.setOrigin(0.5, 1.0); // FIXME: SMuFL won't require a vertical origin shift\n }\n }\n /** Ornaments category string. */\n static get CATEGORY() {\n return Category.Ornament;\n }\n static get minPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Arrange ornaments inside `ModifierContext` */\n static format(ornaments, state) {\n if (!ornaments || ornaments.length === 0)\n return false;\n let width = 0; // width is used by ornaments, which are always centered on the note head\n let right_shift = state.right_shift; // jazz ornaments calculate r/l shift separately\n let left_shift = state.left_shift;\n let yOffset = 0;\n for (let i = 0; i < ornaments.length; ++i) {\n const ornament = ornaments[i];\n const increment = 2;\n if (Ornament.ornamentRelease.indexOf(ornament.type) >= 0) {\n ornament.x_shift += right_shift + 2;\n }\n if (Ornament.ornamentAttack.indexOf(ornament.type) >= 0) {\n ornament.x_shift -= left_shift + 2;\n }\n if (ornament.reportedWidth && ornament.x_shift < 0) {\n left_shift += ornament.reportedWidth;\n }\n else if (ornament.reportedWidth && ornament.x_shift >= 0) {\n right_shift += ornament.reportedWidth + Ornament.minPadding;\n }\n else {\n width = Math.max(ornament.getWidth(), width);\n }\n // articulations above/below the line can be stacked.\n if (Ornament.ornamentArticulation.indexOf(ornament.type) >= 0) {\n // Unfortunately we don't know the stem direction. So we base it\n // on the line number, but also allow it to be overridden.\n const ornamentNote = defined(ornament.note, 'NoAttachedNote');\n if (ornamentNote.getLineNumber() >= 3 || ornament.getPosition() === Modifier.Position.ABOVE) {\n state.top_text_line += increment;\n ornament.y_shift += yOffset;\n yOffset -= ornament.glyph.bbox.getH();\n }\n else {\n state.text_line += increment;\n ornament.y_shift += yOffset;\n yOffset += ornament.glyph.bbox.getH();\n }\n }\n else {\n if (ornament.getPosition() === Modifier.Position.ABOVE) {\n ornament.setTextLine(state.top_text_line);\n state.top_text_line += increment;\n }\n else {\n ornament.setTextLine(state.text_line);\n state.text_line += increment;\n }\n }\n }\n // Note: 'legit' ornaments don't consider other modifiers when calculating their\n // X position, but jazz ornaments sometimes need to.\n state.left_shift = left_shift + width / 2;\n state.right_shift = right_shift + width / 2;\n return true;\n }\n /**\n * ornamentNoteTransition means the jazz ornament represents an effect from one note to another,\n * these are generally on the top of the staff.\n */\n static get ornamentNoteTransition() {\n return ['flip', 'jazzTurn', 'smear'];\n }\n /**\n * ornamentAttack indicates something that happens in the attach, placed before the note and\n * any accidentals\n */\n static get ornamentAttack() {\n return ['scoop'];\n }\n /**\n * The ornament is aligned based on the note head, but without regard to whether the\n * stem goes up or down.\n */\n static get ornamentAlignWithNoteHead() {\n return ['doit', 'fall', 'fallLong', 'doitLong', 'bend', 'plungerClosed', 'plungerOpen', 'scoop'];\n }\n /**\n * An ornament that happens on the release of the note, generally placed after the\n * note and overlapping the next beat/measure..\n */\n static get ornamentRelease() {\n return ['doit', 'fall', 'fallLong', 'doitLong', 'jazzTurn', 'smear', 'flip'];\n }\n /** ornamentArticulation goes above/below the note based on space availablity */\n static get ornamentArticulation() {\n return ['bend', 'plungerClosed', 'plungerOpen'];\n }\n /**\n * Legacy ornaments have hard-coded metrics. If additional ornament types are\n * added, get their metrics here.\n */\n // eslint-disable-next-line\n getMetrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.jazzOrnaments[this.ornament.code];\n }\n /** Set whether the ornament is to be delayed. */\n setDelayed(delayed) {\n this.delayed = delayed;\n return this;\n }\n /** Set the upper accidental for the ornament. */\n setUpperAccidental(accid) {\n const scale = this.render_options.font_scale / 1.3;\n this.accidentalUpper = new Glyph(Tables.accidentalCodes(accid).code, scale);\n this.accidentalUpper.setOrigin(0.5, 1.0);\n return this;\n }\n /** Set the lower accidental for the ornament. */\n setLowerAccidental(accid) {\n const scale = this.render_options.font_scale / 1.3;\n this.accidentalLower = new Glyph(Tables.accidentalCodes(accid).code, scale);\n this.accidentalLower.setOrigin(0.5, 1.0);\n return this;\n }\n /** Render ornament in position next to note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stemDir = note.getStemDirection();\n const stave = note.checkStave();\n ctx.openGroup('ornament', this.getAttribute('id'));\n // Get stem extents\n const stemExtents = note.checkStem().getExtents();\n let y = stemDir === Stem.DOWN ? stemExtents.baseY : stemExtents.topY;\n // TabNotes don't have stems attached to them. Tab stems are rendered outside the stave.\n if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDir === Stem.DOWN) {\n y = stave.getYForTopText(this.text_line);\n }\n }\n else {\n // Without a stem\n y = stave.getYForTopText(this.text_line);\n }\n }\n const isPlacedOnNoteheadSide = stemDir === Stem.DOWN;\n const spacing = stave.getSpacingBetweenLines();\n let lineSpacing = 1;\n // Beamed stems are longer than quarter note stems, adjust accordingly\n if (!isPlacedOnNoteheadSide && note.hasBeam()) {\n lineSpacing += 0.5;\n }\n const totalSpacing = spacing * (this.text_line + lineSpacing);\n const glyphYBetweenLines = y - totalSpacing;\n // Get initial coordinates for the modifier position\n const start = note.getModifierStartXY(this.position, this.index);\n let glyphX = start.x;\n // If the ornament is aligned with the note head, don't consider the stave y\n // but use the 'natural' modifier y\n let glyphY = this.ornamentAlignWithNoteHead\n ? start.y\n : Math.min(stave.getYForTopText(this.text_line), glyphYBetweenLines);\n glyphY += this.y_shift;\n // Ajdust x position if ornament is delayed\n if (this.delayed) {\n let delayXShift = 0;\n const startX = glyphX - (stave.getX() - 10);\n if (this.delayXShift !== undefined) {\n delayXShift = this.delayXShift;\n }\n else {\n delayXShift += this.glyph.getMetrics().width / 2;\n const nextContext = TickContext.getNextContext(note.getTickContext());\n if (nextContext) {\n delayXShift += (nextContext.getX() - startX) * 0.5;\n }\n else {\n delayXShift += (stave.getX() + stave.getWidth() - startX) * 0.5;\n }\n this.delayXShift = delayXShift;\n }\n glyphX += delayXShift;\n }\n L('Rendering ornament: ', this.ornament, glyphX, glyphY);\n if (this.accidentalLower) {\n this.accidentalLower.render(ctx, glyphX, glyphY);\n glyphY -= this.accidentalLower.getMetrics().height;\n glyphY -= this.render_options.accidentalLowerPadding;\n }\n if (this.stemUpYOffset && note.hasStem() && note.getStemDirection() === 1) {\n glyphY += this.stemUpYOffset;\n }\n if (note.getLineNumber() < 5 && Ornament.ornamentNoteTransition.indexOf(this.type) >= 0) {\n glyphY = note.checkStave().getBoundingBox().getY() + 40;\n }\n this.glyph.render(ctx, glyphX + this.x_shift, glyphY);\n if (this.accidentalUpper) {\n glyphY -= this.glyph.getMetrics().height + this.render_options.accidentalUpperPadding;\n this.accidentalUpper.render(ctx, glyphX, glyphY);\n }\n ctx.closeGroup();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Ornament.DEBUG` to `true`. */\nOrnament.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Rodrigo Vilar\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Tables } from './tables';\nimport { Category, isGraceNote } from './typeguard';\n/** Parenthesis implements parenthesis modifiers for notes. */\nexport class Parenthesis extends Modifier {\n /**\n * Constructor\n *\n * @param position Modifier.Position.LEFT (default) or Modifier.Position.RIGHT\n */\n constructor(position) {\n super();\n this.position = position !== null && position !== void 0 ? position : Modifier.Position.LEFT;\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.default.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.default.width'));\n }\n static get CATEGORY() {\n return Category.Parenthesis;\n }\n /** Add parentheses to the notes. */\n static buildAndAttach(notes) {\n for (const note of notes) {\n for (let i = 0; i < note.keys.length; i++) {\n note.addModifier(new Parenthesis(ModifierPosition.LEFT), i);\n note.addModifier(new Parenthesis(ModifierPosition.RIGHT), i);\n }\n }\n }\n /** Arrange parentheses inside a ModifierContext. */\n static format(parentheses, state) {\n if (!parentheses || parentheses.length === 0)\n return false;\n let x_widthL = 0;\n let x_widthR = 0;\n for (let i = 0; i < parentheses.length; ++i) {\n const parenthesis = parentheses[i];\n const note = parenthesis.getNote();\n const pos = parenthesis.getPosition();\n const index = parenthesis.checkIndex();\n let shift = 0;\n if (pos === ModifierPosition.RIGHT) {\n shift = note.getRightParenthesisPx(index);\n x_widthR = x_widthR > shift + parenthesis.width ? x_widthR : shift + parenthesis.width;\n }\n if (pos === ModifierPosition.LEFT) {\n shift = note.getLeftParenthesisPx(index);\n x_widthL = x_widthL > shift + parenthesis.width ? x_widthL : shift + parenthesis.width;\n }\n parenthesis.setXShift(shift);\n }\n state.left_shift += x_widthL;\n state.right_shift += x_widthR;\n return true;\n }\n /** Set the associated note. */\n setNote(note) {\n this.note = note;\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.default.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.default.width'));\n if (isGraceNote(note)) {\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.gracenote.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.gracenote.width'));\n }\n return this;\n }\n /** Render the parenthesis. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index, { forceFlagRight: true });\n const x = start.x + this.x_shift;\n const y = start.y + this.y_shift;\n if (this.position == Modifier.Position.RIGHT) {\n Glyph.renderGlyph(ctx, x + 1, y, this.point, 'noteheadParenthesisRight', {\n category: `noteHead.standard.noteheadParenthesisRight`,\n });\n }\n else if (this.position == Modifier.Position.LEFT) {\n Glyph.renderGlyph(ctx, x - 2, y, this.point, 'noteheadParenthesisLeft', {\n category: `noteHead.standard.noteheadParenthesisLeft`,\n });\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Ron B. Yeh\n// MIT License\n//\n// Utilities for working with Web APIs.\n// See: https://developer.mozilla.org/en-US/docs/Web/API\nimport { globalObject } from './util';\n// eslint-disable-next-line\nexport function isHTMLCanvas(element) {\n if (!element)\n return false;\n const global = globalObject();\n return (\n // It's either an instance of the HTMLCanvasElement class,\n (typeof global.HTMLCanvasElement === 'function' && element instanceof global.HTMLCanvasElement) ||\n // OR it's pretending to be a element. Good enough!\n // Do not rely on .tagName, because node-canvas doesn't provide a tagName.\n (typeof element.getContext === 'function' && typeof element.toDataURL === 'function'));\n}\n// eslint-disable-next-line\nexport function isHTMLDiv(element) {\n if (!element)\n return false;\n const global = globalObject();\n return (\n // It's either an instance of the HTMLDivElement class.\n (typeof global.HTMLDivElement === 'function' && element instanceof global.HTMLDivElement) ||\n // OR it's pretending to be a
. See: svgcontext.ts.\n (typeof element.appendChild === 'function' && typeof element.style === 'object'));\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from './font';\nimport { RenderContext } from './rendercontext';\nimport { globalObject, warn } from './util';\nimport { isHTMLCanvas } from './web';\n/**\n * A rendering context for the Canvas backend. This class serves as a proxy for the\n * underlying CanvasRenderingContext2D object, part of the browser's API.\n */\nexport class CanvasContext extends RenderContext {\n constructor(context) {\n super();\n /** Height of one line of text (in pixels). */\n this.textHeight = 0;\n this.context2D = context;\n if (!context.canvas) {\n this.canvas = {\n width: CanvasContext.WIDTH,\n height: CanvasContext.HEIGHT,\n };\n }\n else {\n this.canvas = context.canvas;\n }\n }\n static get WIDTH() {\n return 600;\n }\n static get HEIGHT() {\n return 400;\n }\n static get CANVAS_BROWSER_SIZE_LIMIT() {\n return 32767; // Chrome/Firefox. Could be determined more precisely by npm module canvas-size.\n }\n /**\n * Ensure that width and height do not exceed the browser limit.\n * @returns array of [width, height] clamped to the browser limit.\n */\n static sanitizeCanvasDims(width, height) {\n const limit = this.CANVAS_BROWSER_SIZE_LIMIT;\n if (Math.max(width, height) > limit) {\n warn('Canvas dimensions exceed browser limit. Cropping to ' + limit);\n if (width > limit) {\n width = limit;\n }\n if (height > limit) {\n height = limit;\n }\n }\n return [width, height];\n }\n /**\n * Set all pixels to transparent black rgba(0,0,0,0).\n */\n clear() {\n this.context2D.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n // eslint-disable-next-line\n openGroup(cls, id, attrs) {\n // Containers not implemented.\n }\n closeGroup() {\n // Containers not implemented.\n }\n // eslint-disable-next-line\n add(child) {\n // Containers not implemented.\n }\n setFillStyle(style) {\n this.context2D.fillStyle = style;\n return this;\n }\n /** CanvasContext ignores `setBackgroundFillStyle()`. */\n // eslint-disable-next-line\n setBackgroundFillStyle(style) {\n // DO NOTHING\n return this;\n }\n setStrokeStyle(style) {\n this.context2D.strokeStyle = style;\n return this;\n }\n setShadowColor(color) {\n this.context2D.shadowColor = color;\n return this;\n }\n setShadowBlur(blur) {\n // CanvasRenderingContext2D does not scale the shadow blur by the current\n // transform, so we have to do it manually. We assume uniform scaling\n // (though allow for rotation) because the blur can only be scaled\n // uniformly anyway.\n const t = this.context2D.getTransform();\n const scale = Math.sqrt(t.a * t.a + t.b * t.b + t.c * t.c + t.d * t.d);\n this.context2D.shadowBlur = scale * blur;\n return this;\n }\n setLineWidth(width) {\n this.context2D.lineWidth = width;\n return this;\n }\n setLineCap(capType) {\n this.context2D.lineCap = capType;\n return this;\n }\n setLineDash(dash) {\n this.context2D.setLineDash(dash);\n return this;\n }\n scale(x, y) {\n this.context2D.scale(x, y);\n return this;\n }\n resize(width, height) {\n const canvas = this.context2D.canvas;\n const devicePixelRatio = globalObject().devicePixelRatio || 1;\n // Scale the canvas size by the device pixel ratio clamping to the maximum supported size.\n [width, height] = CanvasContext.sanitizeCanvasDims(width * devicePixelRatio, height * devicePixelRatio);\n // Divide back down by the pixel ratio and convert to integers.\n width = (width / devicePixelRatio) | 0;\n height = (height / devicePixelRatio) | 0;\n canvas.width = width * devicePixelRatio;\n canvas.height = height * devicePixelRatio;\n // The canvas could be an instance of either HTMLCanvasElement or an OffscreenCanvas.\n // Only HTMLCanvasElement has a style attribute.\n if (isHTMLCanvas(canvas)) {\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n }\n return this.scale(devicePixelRatio, devicePixelRatio);\n }\n rect(x, y, width, height) {\n this.context2D.rect(x, y, width, height);\n return this;\n }\n fillRect(x, y, width, height) {\n this.context2D.fillRect(x, y, width, height);\n return this;\n }\n /**\n * Set the pixels in a rectangular area to transparent black rgba(0,0,0,0).\n */\n clearRect(x, y, width, height) {\n this.context2D.clearRect(x, y, width, height);\n return this;\n }\n beginPath() {\n this.context2D.beginPath();\n return this;\n }\n moveTo(x, y) {\n this.context2D.moveTo(x, y);\n return this;\n }\n lineTo(x, y) {\n this.context2D.lineTo(x, y);\n return this;\n }\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\n this.context2D.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n return this;\n }\n quadraticCurveTo(cpx, cpy, x, y) {\n this.context2D.quadraticCurveTo(cpx, cpy, x, y);\n return this;\n }\n arc(x, y, radius, startAngle, endAngle, counterclockwise) {\n this.context2D.arc(x, y, radius, startAngle, endAngle, counterclockwise);\n return this;\n }\n fill() {\n this.context2D.fill();\n return this;\n }\n stroke() {\n this.context2D.stroke();\n return this;\n }\n closePath() {\n this.context2D.closePath();\n return this;\n }\n measureText(text) {\n const metrics = this.context2D.measureText(text);\n let y = 0;\n let height = 0;\n if (metrics.fontBoundingBoxAscent) {\n y = -metrics.fontBoundingBoxAscent;\n height = metrics.fontBoundingBoxDescent + metrics.fontBoundingBoxAscent;\n }\n else {\n y = -metrics.actualBoundingBoxAscent;\n height = metrics.actualBoundingBoxDescent + metrics.actualBoundingBoxAscent;\n }\n // Return x, y, width & height in the same manner as svg getBBox\n return {\n x: 0,\n y: y,\n width: metrics.width,\n height: height,\n };\n }\n fillText(text, x, y) {\n this.context2D.fillText(text, x, y);\n return this;\n }\n save() {\n this.context2D.save();\n return this;\n }\n restore() {\n this.context2D.restore();\n return this;\n }\n set fillStyle(style) {\n this.context2D.fillStyle = style;\n }\n get fillStyle() {\n return this.context2D.fillStyle;\n }\n set strokeStyle(style) {\n this.context2D.strokeStyle = style;\n }\n get strokeStyle() {\n return this.context2D.strokeStyle;\n }\n /**\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n */\n setFont(f, size, weight, style) {\n const fontInfo = Font.validate(f, size, weight, style);\n this.context2D.font = Font.toCSSString(fontInfo);\n this.textHeight = Font.convertSizeToPixelValue(fontInfo.size);\n return this;\n }\n /** Return a string of the form `'italic bold 15pt Arial'` */\n getFont() {\n return this.context2D.font;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// @author Gregory Ristow (2015)\nimport { Font, FontStyle, FontWeight } from './font';\nimport { RenderContext } from './rendercontext';\nimport { normalizeAngle, prefix, RuntimeError } from './util';\n/** For a particular element type (e.g., rect), we will not apply certain presentation attributes. */\nconst ATTRIBUTES_TO_IGNORE = {\n path: {\n x: true,\n y: true,\n width: true,\n height: true,\n 'font-family': true,\n 'font-weight': true,\n 'font-style': true,\n 'font-size': true,\n },\n rect: {\n 'font-family': true,\n 'font-weight': true,\n 'font-style': true,\n 'font-size': true,\n },\n text: {\n width: true,\n height: true,\n },\n};\n/** Create the SVG in the SVG namespace. */\nconst SVG_NS = 'http://www.w3.org/2000/svg';\nconst TWO_PI = 2 * Math.PI;\nclass MeasureTextCache {\n constructor() {\n // The cache is keyed first by the text string, then by the font attributes\n // joined together.\n this.cache = {};\n }\n lookup(text, svg, attributes) {\n let entries = this.cache[text];\n if (entries === undefined) {\n entries = {};\n this.cache[text] = entries;\n }\n const family = attributes['font-family'];\n const size = attributes['font-size'];\n const weight = attributes['font-weight'];\n const style = attributes['font-style'];\n const key = `${family}%${size}%${weight}%${style}`;\n let entry = entries[key];\n if (entry === undefined) {\n entry = this.measureImpl(text, svg, attributes);\n entries[key] = entry;\n }\n return entry;\n }\n measureImpl(text, svg, attributes) {\n let txt = this.txt;\n if (!txt) {\n // Create the SVG text element that will be used to measure text in the event\n // of a cache miss.\n txt = document.createElementNS(SVG_NS, 'text');\n this.txt = txt;\n }\n txt.textContent = text;\n txt.setAttributeNS(null, 'font-family', attributes['font-family']);\n txt.setAttributeNS(null, 'font-size', attributes['font-size']);\n txt.setAttributeNS(null, 'font-style', attributes['font-style']);\n txt.setAttributeNS(null, 'font-weight', attributes['font-weight']);\n svg.appendChild(txt);\n const bbox = txt.getBBox();\n svg.removeChild(txt);\n return { x: bbox.x, y: bbox.y, width: bbox.width, height: bbox.height };\n }\n}\n/**\n * SVG rendering context with an API similar to CanvasRenderingContext2D.\n */\nexport class SVGContext extends RenderContext {\n constructor(element) {\n super();\n this.width = 0;\n this.height = 0;\n this.backgroundFillStyle = 'white';\n /** Formatted as CSS font shorthand (e.g., 'italic bold 12pt Arial') */\n this.fontCSSString = '';\n this.element = element;\n // Create a SVG element and add it to the container element.\n const svg = this.create('svg');\n this.element.appendChild(svg);\n this.svg = svg;\n this.parent = this.svg;\n this.groups = [this.svg];\n this.path = '';\n this.pen = { x: NaN, y: NaN };\n this.lineWidth = 1.0;\n const defaultFontAttributes = {\n 'font-family': Font.SANS_SERIF,\n 'font-size': Font.SIZE + 'pt',\n 'font-weight': FontWeight.NORMAL,\n 'font-style': FontStyle.NORMAL,\n };\n this.state = Object.assign({ scale: { x: 1, y: 1 } }, defaultFontAttributes);\n this.attributes = Object.assign({ 'stroke-width': 0.3, 'stroke-dasharray': 'none', fill: 'black', stroke: 'black' }, defaultFontAttributes);\n this.shadow_attributes = {\n width: 0,\n color: 'black',\n };\n this.state_stack = [];\n }\n create(svgElementType) {\n return document.createElementNS(SVG_NS, svgElementType);\n }\n // Allow grouping elements in containers for interactivity.\n openGroup(cls, id, attrs) {\n const group = this.create('g');\n this.groups.push(group);\n this.parent.appendChild(group);\n this.parent = group;\n if (cls)\n group.setAttribute('class', prefix(cls));\n if (id)\n group.setAttribute('id', prefix(id));\n if (attrs && attrs.pointerBBox) {\n group.setAttribute('pointer-events', 'bounding-box');\n }\n return group;\n }\n closeGroup() {\n this.groups.pop();\n this.parent = this.groups[this.groups.length - 1];\n }\n add(elem) {\n this.parent.appendChild(elem);\n }\n setFillStyle(style) {\n this.attributes.fill = style;\n return this;\n }\n /**\n * Used to set the fill color for `clearRect()`. This allows us to simulate\n * cutting a \"hole\" into the SVG drawing.\n */\n setBackgroundFillStyle(style) {\n this.backgroundFillStyle = style;\n return this;\n }\n setStrokeStyle(style) {\n this.attributes.stroke = style;\n return this;\n }\n setShadowColor(color) {\n this.shadow_attributes.color = color;\n return this;\n }\n /**\n * @param blur A non-negative float specifying the level of shadow blur, where 0\n * represents no blur and larger numbers represent increasingly more blur.\n * @returns this\n */\n setShadowBlur(blur) {\n this.shadow_attributes.width = blur;\n return this;\n }\n /**\n * @param width\n * @returns this\n */\n setLineWidth(width) {\n this.attributes['stroke-width'] = width;\n this.lineWidth = width;\n return this;\n }\n /**\n * @param lineDash an array of integers in the form of [dash, space, dash, space, etc...]\n * @returns this\n *\n * See: [SVG `stroke-dasharray` attribute](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray)\n */\n setLineDash(lineDash) {\n if (Object.prototype.toString.call(lineDash) === '[object Array]') {\n this.attributes['stroke-dasharray'] = lineDash.join(',');\n return this;\n }\n else {\n throw new RuntimeError('ArgumentError', 'lineDash must be an array of integers.');\n }\n }\n /**\n * @param capType\n * @returns this\n */\n setLineCap(capType) {\n this.attributes['stroke-linecap'] = capType;\n return this;\n }\n // ### Sizing & Scaling Methods:\n // TODO (GCR): See note at scale() -- separate our internal\n // conception of pixel-based width/height from the style.width\n // and style.height properties eventually to allow users to\n // apply responsive sizing attributes to the SVG.\n resize(width, height) {\n this.width = width;\n this.height = height;\n this.element.style.width = width.toString();\n this.svg.style.width = width.toString();\n this.svg.style.height = height.toString();\n const attributes = {\n width,\n height,\n };\n this.applyAttributes(this.svg, attributes);\n this.scale(this.state.scale.x, this.state.scale.y);\n return this;\n }\n scale(x, y) {\n // uses viewBox to scale\n // TODO (GCR): we may at some point want to distinguish the\n // style.width / style.height properties that are applied to\n // the SVG object from our internal conception of the SVG\n // width/height. This would allow us to create automatically\n // scaling SVG's that filled their containers, for instance.\n //\n // As this isn't implemented in Canvas contexts,\n // I've left as is for now, but in using the viewBox to\n // handle internal scaling, am trying to make it possible\n // for us to eventually move in that direction.\n this.state.scale = { x, y };\n const visibleWidth = this.width / x;\n const visibleHeight = this.height / y;\n this.setViewBox(0, 0, visibleWidth, visibleHeight);\n return this;\n }\n /**\n * 1 arg: string in the \"x y w h\" format\n * 4 args: x:number, y:number, w:number, h:number\n */\n setViewBox(viewBox_or_minX, minY, width, height) {\n if (typeof viewBox_or_minX === 'string') {\n this.svg.setAttribute('viewBox', viewBox_or_minX);\n }\n else {\n const viewBoxString = viewBox_or_minX + ' ' + minY + ' ' + width + ' ' + height;\n this.svg.setAttribute('viewBox', viewBoxString);\n }\n }\n // ### Drawing helper methods:\n applyAttributes(element, attributes) {\n const attrNamesToIgnore = ATTRIBUTES_TO_IGNORE[element.nodeName];\n for (const attrName in attributes) {\n if (attrNamesToIgnore && attrNamesToIgnore[attrName]) {\n continue;\n }\n element.setAttributeNS(null, attrName, attributes[attrName]);\n }\n return element;\n }\n // ### Shape & Path Methods:\n clear() {\n // Clear the SVG by removing all inner children.\n // (This approach is usually slightly more efficient\n // than removing the old SVG & adding a new one to\n // the container element, since it does not cause the\n // container to resize twice. Also, the resize\n // triggered by removing the entire SVG can trigger\n // a touchcancel event when the element resizes away\n // from a touch point.)\n while (this.svg.lastChild) {\n this.svg.removeChild(this.svg.lastChild);\n }\n // Replace the viewbox attribute we just removed.\n this.scale(this.state.scale.x, this.state.scale.y);\n }\n // ## Rectangles:\n rect(x, y, width, height, attributes) {\n // Avoid invalid negative height attributes by flipping the rectangle on its head:\n if (height < 0) {\n y += height;\n height *= -1;\n }\n const rectangle = this.create('rect');\n attributes = attributes !== null && attributes !== void 0 ? attributes : { fill: 'none', 'stroke-width': this.lineWidth, stroke: 'black' };\n this.applyAttributes(rectangle, Object.assign({ x, y, width, height }, attributes));\n this.add(rectangle);\n return this;\n }\n fillRect(x, y, width, height) {\n const attributes = { fill: this.attributes.fill };\n this.rect(x, y, width, height, attributes);\n return this;\n }\n clearRect(x, y, width, height) {\n // Currently this fills a rect with the backgroundFillStyle, rather\n // than \"cut a hole\" into the existing shapes.\n //\n // Since tabNote seems to be the only module that makes use of this\n // it may be worth creating a separate tabStave that would\n // draw lines around locations of tablature fingering.\n this.rect(x, y, width, height, { 'stroke-width': 0, fill: this.backgroundFillStyle });\n return this;\n }\n // ## Paths:\n beginPath() {\n this.path = '';\n this.pen.x = NaN;\n this.pen.y = NaN;\n return this;\n }\n moveTo(x, y) {\n this.path += 'M' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n lineTo(x, y) {\n this.path += 'L' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this.path += 'C' + x1 + ' ' + y1 + ',' + x2 + ' ' + y2 + ',' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this.path += 'Q' + x1 + ' ' + y1 + ',' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n arc(x, y, radius, startAngle, endAngle, counterclockwise) {\n const x0 = x + radius * Math.cos(startAngle);\n const y0 = y + radius * Math.sin(startAngle);\n // svg behavior different from canvas. Don't normalize angles if\n // we are drawing a circle because they both normalize to 0\n const tmpStartTest = normalizeAngle(startAngle);\n const tmpEndTest = normalizeAngle(endAngle);\n if ((!counterclockwise && endAngle - startAngle >= TWO_PI) ||\n (counterclockwise && startAngle - endAngle >= TWO_PI) ||\n tmpStartTest === tmpEndTest) {\n const x1 = x + radius * Math.cos(startAngle + Math.PI);\n const y1 = y + radius * Math.sin(startAngle + Math.PI);\n // There's no way to specify a completely circular arc in SVG so we have to\n // use two semi-circular arcs.\n this.path += `M${x0} ${y0} A${radius} ${radius} 0 0 0 ${x1} ${y1} `;\n this.path += `A${radius} ${radius} 0 0 0 ${x0} ${y0}`;\n this.pen.x = x0;\n this.pen.y = y0;\n }\n else {\n const x1 = x + radius * Math.cos(endAngle);\n const y1 = y + radius * Math.sin(endAngle);\n startAngle = tmpStartTest;\n endAngle = tmpEndTest;\n let large;\n if (Math.abs(endAngle - startAngle) < Math.PI) {\n large = counterclockwise;\n }\n else {\n large = !counterclockwise;\n }\n if (startAngle > endAngle) {\n large = !large;\n }\n const sweep = !counterclockwise;\n this.path += `M${x0} ${y0} A${radius} ${radius} 0 ${+large} ${+sweep} ${x1} ${y1}`;\n this.pen.x = x1;\n this.pen.y = y1;\n }\n return this;\n }\n closePath() {\n this.path += 'Z';\n return this;\n }\n getShadowStyle() {\n const sa = this.shadow_attributes;\n // A CSS drop-shadow filter blur looks different than a canvas shadowBlur\n // of the same radius, so we scale the drop-shadow radius here to make it\n // look close to the canvas shadow.\n return `filter: drop-shadow(0 0 ${sa.width / 1.5}px ${sa.color})`;\n }\n fill(attributes) {\n const path = this.create('path');\n if (typeof attributes === 'undefined') {\n attributes = Object.assign(Object.assign({}, this.attributes), { stroke: 'none' });\n }\n attributes.d = this.path;\n if (this.shadow_attributes.width > 0) {\n attributes.style = this.getShadowStyle();\n }\n this.applyAttributes(path, attributes);\n this.add(path);\n return this;\n }\n stroke() {\n const path = this.create('path');\n const attributes = Object.assign(Object.assign({}, this.attributes), { fill: 'none', 'stroke-width': this.lineWidth, d: this.path });\n if (this.shadow_attributes.width > 0) {\n attributes.style = this.getShadowStyle();\n }\n this.applyAttributes(path, attributes);\n this.add(path);\n return this;\n }\n // ## Text Methods:\n measureText(text) {\n return SVGContext.measureTextCache.lookup(text, this.svg, this.attributes);\n }\n fillText(text, x, y) {\n if (!text || text.length <= 0) {\n return this;\n }\n const attributes = Object.assign(Object.assign({}, this.attributes), { stroke: 'none', x,\n y });\n const txt = this.create('text');\n txt.textContent = text;\n this.applyAttributes(txt, attributes);\n this.add(txt);\n return this;\n }\n // TODO: State should be deep-copied.\n save() {\n this.state_stack.push({\n state: {\n 'font-family': this.state['font-family'],\n 'font-weight': this.state['font-weight'],\n 'font-style': this.state['font-style'],\n 'font-size': this.state['font-size'],\n scale: this.state.scale,\n },\n attributes: {\n 'font-family': this.attributes['font-family'],\n 'font-weight': this.attributes['font-weight'],\n 'font-style': this.attributes['font-style'],\n 'font-size': this.attributes['font-size'],\n fill: this.attributes.fill,\n stroke: this.attributes.stroke,\n 'stroke-width': this.attributes['stroke-width'],\n 'stroke-dasharray': this.attributes['stroke-dasharray'],\n },\n shadow_attributes: {\n width: this.shadow_attributes.width,\n color: this.shadow_attributes.color,\n },\n lineWidth: this.lineWidth,\n });\n return this;\n }\n // TODO: State should be deep-restored.\n restore() {\n const savedState = this.state_stack.pop();\n if (savedState) {\n const state = savedState;\n this.state['font-family'] = state.state['font-family'];\n this.state['font-weight'] = state.state['font-weight'];\n this.state['font-style'] = state.state['font-style'];\n this.state['font-size'] = state.state['font-size'];\n this.state.scale = state.state.scale;\n this.attributes['font-family'] = state.attributes['font-family'];\n this.attributes['font-weight'] = state.attributes['font-weight'];\n this.attributes['font-style'] = state.attributes['font-style'];\n this.attributes['font-size'] = state.attributes['font-size'];\n this.attributes.fill = state.attributes.fill;\n this.attributes.stroke = state.attributes.stroke;\n this.attributes['stroke-width'] = state.attributes['stroke-width'];\n this.attributes['stroke-dasharray'] = state.attributes['stroke-dasharray'];\n this.shadow_attributes.width = state.shadow_attributes.width;\n this.shadow_attributes.color = state.shadow_attributes.color;\n this.lineWidth = state.lineWidth;\n }\n return this;\n }\n set fillStyle(style) {\n this.setFillStyle(style);\n }\n get fillStyle() {\n return this.attributes.fill;\n }\n set strokeStyle(style) {\n this.setStrokeStyle(style);\n }\n get strokeStyle() {\n return this.attributes.stroke;\n }\n /**\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900). It is inserted\n * into the font-weight attribute (e.g., font-weight=\"bold\")\n * @param style is a string (e.g., 'italic', 'normal') that is inserted into the\n * font-style attribute (e.g., font-style=\"italic\")\n */\n setFont(f, size, weight, style) {\n const fontInfo = Font.validate(f, size, weight, style);\n this.fontCSSString = Font.toCSSString(fontInfo);\n const fontAttributes = {\n 'font-family': fontInfo.family,\n 'font-size': fontInfo.size,\n 'font-weight': fontInfo.weight,\n 'font-style': fontInfo.style,\n };\n this.attributes = Object.assign(Object.assign({}, this.attributes), fontAttributes);\n this.state = Object.assign(Object.assign({}, this.state), fontAttributes);\n return this;\n }\n /** Return a string of the form `'italic bold 15pt Arial'` */\n getFont() {\n return this.fontCSSString;\n }\n}\nSVGContext.measureTextCache = new MeasureTextCache();\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { CanvasContext } from './canvascontext';\nimport { SVGContext } from './svgcontext';\nimport { isRenderContext } from './typeguard';\nimport { RuntimeError } from './util';\nimport { isHTMLCanvas, isHTMLDiv } from './web';\nexport var RendererBackends;\n(function (RendererBackends) {\n RendererBackends[RendererBackends[\"CANVAS\"] = 1] = \"CANVAS\";\n RendererBackends[RendererBackends[\"SVG\"] = 2] = \"SVG\";\n})(RendererBackends || (RendererBackends = {}));\n// End of line types\nexport var RendererLineEndType;\n(function (RendererLineEndType) {\n RendererLineEndType[RendererLineEndType[\"NONE\"] = 1] = \"NONE\";\n RendererLineEndType[RendererLineEndType[\"UP\"] = 2] = \"UP\";\n RendererLineEndType[RendererLineEndType[\"DOWN\"] = 3] = \"DOWN\";\n})(RendererLineEndType || (RendererLineEndType = {}));\n/**\n * Support Canvas & SVG rendering contexts.\n */\nexport class Renderer {\n constructor(arg0, arg1) {\n if (isRenderContext(arg0)) {\n // The user has provided what looks like a RenderContext, let's just use it.\n this.ctx = arg0;\n }\n else {\n if (arg1 === undefined) {\n // The backend must be specified if the render context isn't directly provided.\n throw new RuntimeError('InvalidArgument', 'Missing backend argument');\n }\n const backend = arg1;\n let element;\n if (typeof arg0 == 'string') {\n const maybeElement = document.getElementById(arg0);\n if (!maybeElement) {\n throw new RuntimeError('BadElementId', `Can't find element with ID \"${maybeElement}\"`);\n }\n element = maybeElement;\n }\n else {\n element = arg0;\n }\n // Verify backend and create context\n if (backend === Renderer.Backends.CANVAS) {\n if (!isHTMLCanvas(element)) {\n throw new RuntimeError('BadElement', 'CANVAS context requires an HTMLCanvasElement.');\n }\n const context = element.getContext('2d');\n if (!context) {\n throw new RuntimeError('BadElement', \"Can't get canvas context\");\n }\n this.ctx = new CanvasContext(context);\n }\n else if (backend === Renderer.Backends.SVG) {\n if (!isHTMLDiv(element)) {\n throw new RuntimeError('BadElement', 'SVG context requires an HTMLDivElement.');\n }\n this.ctx = new SVGContext(element);\n }\n else {\n throw new RuntimeError('InvalidBackend', `No support for backend: ${backend}`);\n }\n }\n }\n static buildContext(elementId, backend, width, height, background = '#FFF') {\n const renderer = new Renderer(elementId, backend);\n if (width && height) {\n renderer.resize(width, height);\n }\n const ctx = renderer.getContext();\n ctx.setBackgroundFillStyle(background);\n Renderer.lastContext = ctx;\n return ctx;\n }\n static getCanvasContext(elementId, width, height, background) {\n return Renderer.buildContext(elementId, Renderer.Backends.CANVAS, width, height, background);\n }\n static getSVGContext(elementId, width, height, background) {\n return Renderer.buildContext(elementId, Renderer.Backends.SVG, width, height, background);\n }\n // Draw a dashed line (horizontal, vertical or diagonal\n // dashPattern = [3,3] draws a 3 pixel dash followed by a three pixel space.\n // setting the second number to 0 draws a solid line.\n static drawDashedLine(context, fromX, fromY, toX, toY, dashPattern) {\n context.beginPath();\n const dx = toX - fromX;\n const dy = toY - fromY;\n const angle = Math.atan2(dy, dx);\n let x = fromX;\n let y = fromY;\n context.moveTo(fromX, fromY);\n let idx = 0;\n let draw = true;\n while (!((dx < 0 ? x <= toX : x >= toX) && (dy < 0 ? y <= toY : y >= toY))) {\n const dashLength = dashPattern[idx++ % dashPattern.length];\n const nx = x + Math.cos(angle) * dashLength;\n x = dx < 0 ? Math.max(toX, nx) : Math.min(toX, nx);\n const ny = y + Math.sin(angle) * dashLength;\n y = dy < 0 ? Math.max(toY, ny) : Math.min(toY, ny);\n if (draw) {\n context.lineTo(x, y);\n }\n else {\n context.moveTo(x, y);\n }\n draw = !draw;\n }\n context.closePath();\n context.stroke();\n }\n resize(width, height) {\n this.ctx.resize(width, height);\n return this;\n }\n getContext() {\n return this.ctx;\n }\n}\nRenderer.Backends = RendererBackends;\nRenderer.LineEndType = RendererLineEndType;\n// Used by vexflow_test_helpers.ts\n// Should this be private?\n// Can we do this in a cleaner way?\nRenderer.lastContext = undefined;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport var TextJustification;\n(function (TextJustification) {\n TextJustification[TextJustification[\"LEFT\"] = 1] = \"LEFT\";\n TextJustification[TextJustification[\"CENTER\"] = 2] = \"CENTER\";\n TextJustification[TextJustification[\"RIGHT\"] = 3] = \"RIGHT\";\n})(TextJustification || (TextJustification = {}));\n/**\n * `TextNote` is a notation element that is positioned in time. Generally\n * meant for objects that sit above/below the staff and inline with each other.\n * `TextNote` has to be assigned to a `Stave` before rendering by means of `setStave`.\n * Examples of this would be such as dynamics, lyrics, chord changes, etc.\n */\nexport class TextNote extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n this.text = noteStruct.text || '';\n this.superscript = noteStruct.superscript;\n this.subscript = noteStruct.subscript;\n this.setFont(noteStruct.font);\n this.line = noteStruct.line || 0;\n this.smooth = noteStruct.smooth || false;\n this.ignore_ticks = noteStruct.ignore_ticks || false;\n this.justification = TextJustification.LEFT;\n // Determine and set initial note width. Note that the text width is\n // an approximation and isn't very accurate. The only way to accurately\n // measure the length of text is with `CanvasRenderingContext2D.measureText()`.\n if (noteStruct.glyph) {\n const struct = TextNote.GLYPHS[noteStruct.glyph];\n if (!struct)\n throw new RuntimeError('Invalid glyph type: ' + noteStruct.glyph);\n this.glyph = new Glyph(struct.code, 40, { category: 'textNote' });\n this.setWidth(this.glyph.getMetrics().width);\n }\n else {\n this.glyph = undefined;\n }\n }\n static get CATEGORY() {\n return Category.TextNote;\n }\n /** Glyph data. */\n static get GLYPHS() {\n return {\n segno: {\n code: 'segno',\n },\n tr: {\n code: 'ornamentTrill',\n },\n mordent: {\n code: 'ornamentMordent',\n },\n mordent_upper: {\n code: 'ornamentShortTrill',\n },\n mordent_lower: {\n code: 'ornamentMordent',\n },\n f: {\n code: 'dynamicForte',\n },\n p: {\n code: 'dynamicPiano',\n },\n m: {\n code: 'dynamicMezzo',\n },\n s: {\n code: 'dynamicSforzando',\n },\n z: {\n code: 'dynamicZ',\n },\n coda: {\n code: 'coda',\n },\n pedal_open: {\n code: 'keyboardPedalPed',\n },\n pedal_close: {\n code: 'keyboardPedalUp',\n },\n caesura_straight: {\n code: 'caesura',\n },\n caesura_curved: {\n code: 'caesuraCurved',\n },\n breath: {\n code: 'breathMarkComma',\n },\n tick: {\n code: 'breathMarkTick',\n },\n turn: {\n code: 'ornamentTurn',\n },\n turn_inverted: {\n code: 'ornamentTurnSlash',\n },\n };\n }\n /** Set the horizontal justification of the TextNote. */\n setJustification(just) {\n this.justification = just;\n return this;\n }\n /** Set the Stave line on which the note should be placed. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Return the Stave line on which the TextNote is placed. */\n getLine() {\n return this.line;\n }\n /** Return the unformatted text of this TextNote. */\n getText() {\n return this.text;\n }\n /** Pre-render formatting. */\n preFormat() {\n if (this.preFormatted)\n return;\n const tickContext = this.checkTickContext(`Can't preformat without a TickContext.`);\n if (this.smooth) {\n this.setWidth(0);\n }\n else {\n if (this.glyph) {\n // Width already set.\n }\n else {\n const ctx = this.checkContext();\n ctx.setFont(this.textFont);\n this.setWidth(ctx.measureText(this.text).width);\n }\n }\n if (this.justification === TextJustification.CENTER) {\n this.leftDisplacedHeadPx = this.width / 2;\n }\n else if (this.justification === TextJustification.RIGHT) {\n this.leftDisplacedHeadPx = this.width;\n }\n // We reposition to the center of the note head\n this.rightDisplacedHeadPx = tickContext.getMetrics().glyphPx / 2;\n this.preFormatted = true;\n }\n /**\n * Renders the TextNote.\n * `TextNote` has to be assigned to a `Stave` before rendering by means of `setStave`.\n */\n draw() {\n const ctx = this.checkContext();\n const stave = this.checkStave();\n const tickContext = this.checkTickContext(`Can't draw without a TickContext.`);\n this.setRendered();\n // Reposition to center of note head\n let x = this.getAbsoluteX() + tickContext.getMetrics().glyphPx / 2;\n // Align based on tick-context width.\n const width = this.getWidth();\n if (this.justification === TextJustification.CENTER) {\n x -= width / 2;\n }\n else if (this.justification === TextJustification.RIGHT) {\n x -= width;\n }\n let y;\n if (this.glyph) {\n y = stave.getYForLine(this.line + -3);\n this.glyph.render(ctx, x, y);\n }\n else {\n y = stave.getYForLine(this.line + -3);\n this.applyStyle(ctx);\n ctx.setFont(this.textFont);\n ctx.fillText(this.text, x, y);\n const height = ctx.measureText(this.text).height;\n // We called this.setFont(...) in the constructor, so we know this.textFont is available.\n // eslint-disable-next-line\n const { family, size, weight, style } = this.textFont;\n // Scale the font size by 1/1.3.\n const smallerFontSize = Font.scaleSize(size, 0.769231);\n if (this.superscript) {\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.superscript, x + this.width + 2, y - height / 2.2);\n }\n if (this.subscript) {\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.subscript, x + this.width + 2, y + height / 2.2 - 1);\n }\n this.restoreStyle(ctx);\n }\n }\n}\nTextNote.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 12,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\nTextNote.Justification = TextJustification;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier } from './stavemodifier';\nimport { Category } from './typeguard';\nexport var VoltaType;\n(function (VoltaType) {\n VoltaType[VoltaType[\"NONE\"] = 1] = \"NONE\";\n VoltaType[VoltaType[\"BEGIN\"] = 2] = \"BEGIN\";\n VoltaType[VoltaType[\"MID\"] = 3] = \"MID\";\n VoltaType[VoltaType[\"END\"] = 4] = \"END\";\n VoltaType[VoltaType[\"BEGIN_END\"] = 5] = \"BEGIN_END\";\n})(VoltaType || (VoltaType = {}));\nexport class Volta extends StaveModifier {\n constructor(type, number, x, y_shift) {\n super();\n this.volta = type;\n this.x = x;\n this.y_shift = y_shift;\n this.number = number;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.Volta;\n }\n static get type() {\n return VoltaType;\n }\n setShiftY(y) {\n this.y_shift = y;\n return this;\n }\n draw(stave, x) {\n const ctx = stave.checkContext();\n this.setRendered();\n let width = stave.getWidth() - x; // don't include x (offset) for width\n const top_y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n const vert_height = 1.5 * stave.getSpacingBetweenLines();\n switch (this.volta) {\n case VoltaType.BEGIN:\n ctx.fillRect(this.x + x, top_y, 1, vert_height);\n break;\n case VoltaType.END:\n width -= 5;\n ctx.fillRect(this.x + x + width, top_y, 1, vert_height);\n break;\n case VoltaType.BEGIN_END:\n width -= 3;\n ctx.fillRect(this.x + x, top_y, 1, vert_height);\n ctx.fillRect(this.x + x + width, top_y, 1, vert_height);\n break;\n default:\n break;\n }\n // If the beginning of a volta, draw measure number\n if (this.volta === VoltaType.BEGIN || this.volta === VoltaType.BEGIN_END) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText(this.number, this.x + x + 5, top_y + 15);\n ctx.restore();\n }\n ctx.fillRect(this.x + x, top_y, width, 1);\n return this;\n }\n}\nVolta.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 9,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns\n//\n// This file implements the `StringNumber` class which renders string\n// number annotations beside notes.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Renderer } from './renderer';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isStaveNote, isStemmableNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StringNumber extends Modifier {\n constructor(number) {\n super();\n this.string_number = number;\n this.position = Modifier.Position.ABOVE; // Default position above stem or note head\n this.x_shift = 0;\n this.y_shift = 0;\n this.text_line = 0;\n this.stem_offset = 0;\n this.x_offset = 0; // Horizontal offset from default\n this.y_offset = 0; // Vertical offset from default\n this.dashed = true; // true - draw dashed extension false - no extension\n this.leg = Renderer.LineEndType.NONE; // draw upward/downward leg at the of extension line\n this.radius = 8;\n this.drawCircle = true;\n this.setWidth(this.radius * 2 + 4);\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StringNumber;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.stringNumber;\n }\n // ## Static Methods\n // Arrange string numbers inside a `ModifierContext`\n static format(nums, state) {\n const left_shift = state.left_shift;\n const right_shift = state.right_shift;\n const num_spacing = 1;\n if (!nums || nums.length === 0)\n return false;\n const nums_list = [];\n let prev_note = null;\n let shift_left = 0;\n let shift_right = 0;\n const modLines = 0;\n for (let i = 0; i < nums.length; ++i) {\n const num = nums[i];\n const note = num.getNote();\n const pos = num.getPosition();\n if (!isStaveNote(note)) {\n throw new RuntimeError('NoStaveNote');\n }\n const index = num.checkIndex();\n const props = note.getKeyProps()[index];\n const mc = note.getModifierContext();\n const verticalSpaceNeeded = (num.radius * 2) / Tables.STAVE_LINE_DISTANCE + 0.5;\n if (mc) {\n if (pos === ModifierPosition.ABOVE) {\n num.text_line = mc.getState().top_text_line;\n state.top_text_line += verticalSpaceNeeded;\n }\n else if (pos === ModifierPosition.BELOW) {\n num.text_line = mc.getState().text_line;\n state.text_line += verticalSpaceNeeded;\n }\n }\n if (note !== prev_note) {\n for (let n = 0; n < note.keys.length; ++n) {\n if (left_shift === 0) {\n shift_left = Math.max(note.getLeftDisplacedHeadPx(), shift_left);\n }\n if (right_shift === 0) {\n shift_right = Math.max(note.getRightDisplacedHeadPx(), shift_right);\n }\n }\n prev_note = note;\n }\n const glyphLine = modLines === 0 ? props.line : modLines;\n nums_list.push({\n pos,\n note,\n num,\n line: glyphLine,\n shiftL: shift_left,\n shiftR: shift_right,\n });\n }\n // Sort string numbers by line number.\n nums_list.sort((a, b) => b.line - a.line);\n let num_shiftR = 0;\n let x_widthL = 0;\n let x_widthR = 0;\n let last_line = null;\n let last_note = null;\n for (let i = 0; i < nums_list.length; ++i) {\n let num_shift = 0;\n const note = nums_list[i].note;\n const pos = nums_list[i].pos;\n const num = nums_list[i].num;\n const line = nums_list[i].line;\n const shiftR = nums_list[i].shiftR;\n // Reset the position of the string number every line.\n if (line !== last_line || note !== last_note) {\n num_shiftR = right_shift + shiftR;\n }\n const num_width = num.getWidth() + num_spacing;\n if (pos === Modifier.Position.LEFT) {\n num.setXShift(left_shift);\n num_shift = shift_left + num_width; // spacing\n x_widthL = num_shift > x_widthL ? num_shift : x_widthL;\n }\n else if (pos === Modifier.Position.RIGHT) {\n num.setXShift(num_shiftR);\n num_shift += num_width; // spacing\n x_widthR = num_shift > x_widthR ? num_shift : x_widthR;\n }\n last_line = line;\n last_note = note;\n }\n state.left_shift += x_widthL;\n state.right_shift += x_widthR;\n return true;\n }\n setLineEndType(leg) {\n if (leg >= Renderer.LineEndType.NONE && leg <= Renderer.LineEndType.DOWN) {\n this.leg = leg;\n }\n return this;\n }\n setStringNumber(number) {\n this.string_number = number;\n return this;\n }\n setOffsetX(x) {\n this.x_offset = x;\n return this;\n }\n setOffsetY(y) {\n this.y_offset = y;\n return this;\n }\n setLastNote(note) {\n this.last_note = note;\n return this;\n }\n setDashed(dashed) {\n this.dashed = dashed;\n return this;\n }\n setDrawCircle(drawCircle) {\n this.drawCircle = drawCircle;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let dot_x = start.x + this.x_shift + this.x_offset;\n let stem_ext = {};\n if (note.hasStem()) {\n stem_ext = note.checkStem().getExtents();\n }\n let dot_y = start.y + this.y_shift + this.y_offset;\n switch (this.position) {\n case Modifier.Position.ABOVE:\n {\n const ys = note.getYs();\n dot_y = ys.reduce((a, b) => (a < b ? a : b));\n if (note.hasStem() && stemDirection == Stem.UP) {\n dot_y = stem_ext.topY + StringNumber.metrics.stemPadding;\n }\n dot_y -= this.radius + StringNumber.metrics.verticalPadding + this.text_line * Tables.STAVE_LINE_DISTANCE;\n }\n break;\n case Modifier.Position.BELOW:\n {\n const ys = note.getYs();\n dot_y = ys.reduce((a, b) => (a > b ? a : b));\n if (note.hasStem() && stemDirection == Stem.DOWN) {\n dot_y = stem_ext.topY - StringNumber.metrics.stemPadding;\n }\n dot_y += this.radius + StringNumber.metrics.verticalPadding + this.text_line * Tables.STAVE_LINE_DISTANCE;\n }\n break;\n case Modifier.Position.LEFT:\n dot_x -= this.radius / 2 + StringNumber.metrics.leftPadding;\n break;\n case Modifier.Position.RIGHT:\n dot_x += this.radius / 2 + StringNumber.metrics.rightPadding;\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} is invalid`);\n }\n ctx.save();\n if (this.drawCircle) {\n ctx.beginPath();\n ctx.arc(dot_x, dot_y, this.radius, 0, Math.PI * 2, false);\n ctx.setLineWidth(1.5);\n ctx.stroke();\n }\n ctx.setFont(this.textFont);\n const x = dot_x - ctx.measureText(this.string_number).width / 2;\n ctx.fillText('' + this.string_number, x, dot_y + 4.5);\n const lastNote = this.last_note;\n if (isStemmableNote(lastNote)) {\n // Only StemmableNote objects have getStemX().\n const end = lastNote.getStemX() - note.getX() + 5;\n ctx.setStrokeStyle('#000000');\n ctx.setLineCap('round');\n ctx.setLineWidth(0.6);\n if (this.dashed) {\n Renderer.drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 3]);\n }\n else {\n Renderer.drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 0]);\n }\n let len;\n let pattern;\n switch (this.leg) {\n case Renderer.LineEndType.UP:\n len = -10;\n pattern = this.dashed ? [3, 3] : [3, 0];\n Renderer.drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern);\n break;\n case Renderer.LineEndType.DOWN:\n len = 10;\n pattern = this.dashed ? [3, 3] : [3, 0];\n Renderer.drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern);\n break;\n default:\n break;\n }\n }\n ctx.restore();\n }\n}\nStringNumber.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: Font.SIZE,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns\n//\n// This file implements the `Stroke` class which renders chord strokes\n// that can be arpeggiated, brushed, rasquedo, etc.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Category, isNote, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class Stroke extends Modifier {\n constructor(type, options) {\n super();\n this.options = Object.assign({ all_voices: true }, options);\n // multi voice - span stroke across all voices if true\n this.all_voices = this.options.all_voices;\n // multi voice - end note of stroke, set in draw()\n this.type = type;\n this.position = Modifier.Position.LEFT;\n this.render_options = {\n font_scale: 38,\n };\n this.resetFont();\n this.setXShift(0);\n this.setWidth(10);\n }\n static get CATEGORY() {\n return Category.Stroke;\n }\n // Arrange strokes inside `ModifierContext`\n static format(strokes, state) {\n const left_shift = state.left_shift;\n const stroke_spacing = 0;\n if (!strokes || strokes.length === 0)\n return false;\n const strokeList = strokes.map((stroke) => {\n const note = stroke.getNote();\n const index = stroke.checkIndex();\n if (isStaveNote(note)) {\n // Only StaveNote objects have getKeyProps().\n const { line } = note.getKeyProps()[index];\n const shift = note.getLeftDisplacedHeadPx();\n return { line, shift, stroke };\n }\n else if (isTabNote(note)) {\n // Only TabNote objects have getPositions().\n const { str: string } = note.getPositions()[index];\n return { line: string, shift: 0, stroke };\n }\n else {\n throw new RuntimeError('Internal', 'Unexpected instance.');\n }\n });\n const strokeShift = left_shift;\n // There can only be one stroke .. if more than one, they overlay each other\n const xShift = strokeList.reduce((xShift, { stroke, shift }) => {\n stroke.setXShift(strokeShift + shift);\n return Math.max(stroke.getWidth() + stroke_spacing, xShift);\n }, 0);\n state.left_shift += xShift;\n return true;\n }\n getPosition() {\n return this.position;\n }\n addEndNote(note) {\n this.note_end = note;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n let ys = note.getYs();\n let topY = start.y;\n let botY = start.y;\n const x = start.x - 5;\n const line_space = note.checkStave().getSpacingBetweenLines();\n const notes = this.checkModifierContext().getMembers(note.getCategory());\n for (let i = 0; i < notes.length; i++) {\n const note = notes[i];\n if (isNote(note)) {\n // Only Note objects have getYs().\n // note is an instance of either StaveNote or TabNote.\n ys = note.getYs();\n for (let n = 0; n < ys.length; n++) {\n if (this.note === notes[i] || this.all_voices) {\n topY = Math.min(topY, ys[n]);\n botY = Math.max(botY, ys[n]);\n }\n }\n }\n }\n let arrow = '';\n let arrow_shift_x = 0;\n let arrow_y = 0;\n let text_shift_x = 0;\n let text_y = 0;\n switch (this.type) {\n case Stroke.Type.BRUSH_DOWN:\n arrow = 'arrowheadBlackUp';\n arrow_shift_x = -3;\n arrow_y = topY - line_space / 2 + 10;\n botY += line_space / 2;\n break;\n case Stroke.Type.BRUSH_UP:\n arrow = 'arrowheadBlackDown';\n arrow_shift_x = 0.5;\n arrow_y = botY + line_space / 2;\n topY -= line_space / 2;\n break;\n case Stroke.Type.ROLL_DOWN:\n case Stroke.Type.RASQUEDO_DOWN:\n arrow = 'arrowheadBlackUp';\n arrow_shift_x = -3;\n text_shift_x = this.x_shift + arrow_shift_x - 2;\n if (isStaveNote(note)) {\n topY += 1.5 * line_space;\n if ((botY - topY) % 2 !== 0) {\n botY += 0.5 * line_space;\n }\n else {\n botY += line_space;\n }\n arrow_y = topY - line_space;\n text_y = botY + line_space + 2;\n }\n else {\n topY += 1.5 * line_space;\n botY += line_space;\n arrow_y = topY - 0.75 * line_space;\n text_y = botY + 0.25 * line_space;\n }\n break;\n case Stroke.Type.ROLL_UP:\n case Stroke.Type.RASQUEDO_UP:\n arrow = 'arrowheadBlackDown';\n arrow_shift_x = -4;\n text_shift_x = this.x_shift + arrow_shift_x - 1;\n if (isStaveNote(note)) {\n arrow_y = line_space / 2;\n topY += 0.5 * line_space;\n if ((botY - topY) % 2 === 0) {\n botY += line_space / 2;\n }\n arrow_y = botY + 0.5 * line_space;\n text_y = topY - 1.25 * line_space;\n }\n else {\n topY += 0.25 * line_space;\n botY += 0.5 * line_space;\n arrow_y = botY + 0.25 * line_space;\n text_y = topY - line_space;\n }\n break;\n case Stroke.Type.ARPEGGIO_DIRECTIONLESS:\n topY += 0.5 * line_space;\n botY += line_space; // * 0.5 can lead to slight underlap instead of overlap sometimes\n break;\n default:\n throw new RuntimeError('InvalidType', `The stroke type ${this.type} does not exist`);\n }\n let strokeLine = 'straight';\n // Draw the stroke\n if (this.type === Stroke.Type.BRUSH_DOWN || this.type === Stroke.Type.BRUSH_UP) {\n ctx.fillRect(x + this.x_shift, topY, 1, botY - topY);\n }\n else {\n strokeLine = 'wiggly';\n if (isStaveNote(note)) {\n for (let i = topY; i <= botY; i += line_space) {\n Glyph.renderGlyph(ctx, x + this.x_shift - 4, i, this.render_options.font_scale, 'vexWiggleArpeggioUp');\n }\n }\n else {\n let i;\n for (i = topY; i <= botY; i += 10) {\n Glyph.renderGlyph(ctx, x + this.x_shift - 4, i, this.render_options.font_scale, 'vexWiggleArpeggioUp');\n }\n if (this.type === Stroke.Type.RASQUEDO_DOWN) {\n text_y = i + 0.25 * line_space;\n }\n }\n }\n if (this.type === Stroke.Type.ARPEGGIO_DIRECTIONLESS) {\n return; // skip drawing arrow heads or text\n }\n // Draw the arrow head\n Glyph.renderGlyph(ctx, x + this.x_shift + arrow_shift_x, arrow_y, this.render_options.font_scale, arrow, {\n category: `stroke.${arrow}.${strokeLine}`,\n });\n // Draw the rasquedo \"R\"\n if (this.type === Stroke.Type.RASQUEDO_DOWN || this.type === Stroke.Type.RASQUEDO_UP) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText('R', x + text_shift_x, text_y);\n ctx.restore();\n }\n }\n}\nStroke.Type = {\n BRUSH_DOWN: 1,\n BRUSH_UP: 2,\n ROLL_DOWN: 3,\n ROLL_UP: 4,\n RASQUEDO_DOWN: 5,\n RASQUEDO_UP: 6,\n ARPEGGIO_DIRECTIONLESS: 7, // Arpeggiated chord without upwards or downwards arrow\n};\nStroke.TEXT_FONT = {\n family: Font.SERIF,\n size: Font.SIZE,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Bend } from './bend';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\n/** `Vibrato` implements diverse vibratos. */\nexport class Vibrato extends Modifier {\n constructor() {\n super();\n this.position = Modifier.Position.RIGHT;\n this.render_options = {\n harsh: false,\n vibrato_width: 20,\n wave_height: 6,\n wave_width: 4,\n wave_girth: 2,\n };\n this.setVibratoWidth(this.render_options.vibrato_width);\n }\n static get CATEGORY() {\n return Category.Vibrato;\n }\n /** Arrange vibratos inside a `ModifierContext`. */\n static format(vibratos, state, context) {\n if (!vibratos || vibratos.length === 0)\n return false;\n // Vibratos are always on top.\n let text_line = state.top_text_line;\n let width = 0;\n let shift = state.right_shift - 7;\n // If there's a bend, drop the text line\n const bends = context.getMembers(Bend.CATEGORY);\n if (bends && bends.length > 0) {\n const bendHeight = bends.map((bb) => bb.getTextHeight()).reduce((a, b) => (a > b ? a : b)) / Tables.STAVE_LINE_DISTANCE;\n text_line = text_line - (bendHeight + 1);\n }\n else {\n state.top_text_line += 1;\n }\n // Format Vibratos\n for (let i = 0; i < vibratos.length; ++i) {\n const vibrato = vibratos[i];\n vibrato.setXShift(shift);\n vibrato.setTextLine(text_line);\n width += vibrato.getWidth();\n shift += width;\n }\n state.right_shift += width;\n return true;\n }\n /** Set harsh vibrato. */\n setHarsh(harsh) {\n this.render_options.harsh = harsh;\n return this;\n }\n /** Set vibrato width in pixels. */\n setVibratoWidth(width) {\n this.render_options.vibrato_width = width;\n this.setWidth(width);\n return this;\n }\n /** Draw the vibrato on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(Modifier.Position.RIGHT, this.index);\n const vx = start.x + this.x_shift;\n const vy = note.getYForTopText(this.text_line) + 2;\n Vibrato.renderVibrato(ctx, vx, vy, this.render_options);\n }\n /**\n * Static rendering method that can be called from\n * other classes (e.g. VibratoBracket).\n */\n static renderVibrato(ctx, x, y, opts) {\n const { harsh, vibrato_width, wave_width, wave_girth, wave_height } = opts;\n const num_waves = vibrato_width / wave_width;\n ctx.beginPath();\n let i;\n if (harsh) {\n ctx.moveTo(x, y + wave_girth + 1);\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.lineTo(x + wave_width, y - wave_height / 2);\n x += wave_width;\n ctx.lineTo(x + wave_width, y + wave_height / 2);\n x += wave_width;\n }\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.lineTo(x - wave_width, y - wave_height / 2 + wave_girth + 1);\n x -= wave_width;\n ctx.lineTo(x - wave_width, y + wave_height / 2 + wave_girth + 1);\n x -= wave_width;\n }\n ctx.fill();\n }\n else {\n ctx.moveTo(x, y + wave_girth);\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.quadraticCurveTo(x + wave_width / 2, y - wave_height / 2, x + wave_width, y);\n x += wave_width;\n ctx.quadraticCurveTo(x + wave_width / 2, y + wave_height / 2, x + wave_width, y);\n x += wave_width;\n }\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.quadraticCurveTo(x - wave_width / 2, y + wave_height / 2 + wave_girth, x - wave_width, y + wave_girth);\n x -= wave_width;\n ctx.quadraticCurveTo(x - wave_width / 2, y - wave_height / 2 + wave_girth, x - wave_width, y + wave_girth);\n x -= wave_width;\n }\n ctx.fill();\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This class implements various types of members to notes (e.g. bends,\n// fingering positions etc.)\nimport { Accidental } from './accidental';\nimport { Annotation } from './annotation';\nimport { Articulation } from './articulation';\nimport { Bend } from './bend';\nimport { ChordSymbol } from './chordsymbol';\nimport { Dot } from './dot';\nimport { FretHandFinger } from './frethandfinger';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { Parenthesis } from './parenthesis';\nimport { StaveNote } from './stavenote';\nimport { StringNumber } from './stringnumber';\nimport { Stroke } from './strokes';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\nimport { Vibrato } from './vibrato';\n// To enable logging for this class. Set `Vex.Flow.ModifierContext.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (ModifierContext.DEBUG)\n log('Vex.Flow.ModifierContext', args);\n}\nexport class ModifierContext {\n constructor() {\n // Formatting data.\n this.state = {\n left_shift: 0,\n right_shift: 0,\n text_line: 0,\n top_text_line: 0,\n };\n // Current members\n this.members = {};\n this.preFormatted = false;\n this.postFormatted = false;\n this.formatted = false;\n this.width = 0;\n this.spacing = 0;\n }\n addModifier(member) {\n L('addModifier is deprecated, use addMember instead.');\n return this.addMember(member);\n }\n /**\n * this.members maps CATEGORY strings to arrays of Tickable | Modifier | StaveNote | TabNote.\n * Here we add a new member to this.members, and create a new array if needed.\n * @param member\n * @returns this\n */\n addMember(member) {\n const category = member.getCategory();\n if (!this.members[category]) {\n this.members[category] = [];\n }\n this.members[category].push(member);\n member.setModifierContext(this);\n this.preFormatted = false;\n return this;\n }\n /**\n * @deprecated\n */\n getModifiers(category) {\n L('getModifiers is deprecated, use getMembers instead.');\n return this.getMembers(category);\n }\n getMembers(category) {\n var _a;\n return (_a = this.members[category]) !== null && _a !== void 0 ? _a : [];\n }\n getWidth() {\n return this.width;\n }\n getLeftShift() {\n return this.state.left_shift;\n }\n getRightShift() {\n return this.state.right_shift;\n }\n getState() {\n return this.state;\n }\n getMetrics() {\n if (!this.formatted) {\n throw new RuntimeError('UnformattedMember', 'Unformatted member has no metrics.');\n }\n return {\n width: this.state.left_shift + this.state.right_shift + this.spacing,\n spacing: this.spacing,\n };\n }\n preFormat() {\n if (this.preFormatted)\n return;\n L('Preformatting ModifierContext');\n const state = this.state;\n const members = this.members;\n // The ordering below determines when different members are formatted and rendered.\n StaveNote.format(members[Category.StaveNote], state);\n Parenthesis.format(members[Category.Parenthesis], state);\n Dot.format(members[Category.Dot], state);\n FretHandFinger.format(members[Category.FretHandFinger], state);\n Accidental.format(members[Category.Accidental], state);\n Stroke.format(members[Category.Stroke], state);\n GraceNoteGroup.format(members[Category.GraceNoteGroup], state);\n NoteSubGroup.format(members[Category.NoteSubGroup], state);\n StringNumber.format(members[Category.StringNumber], state);\n Articulation.format(members[Category.Articulation], state);\n Ornament.format(members[Category.Ornament], state);\n Annotation.format(members[Category.Annotation], state);\n ChordSymbol.format(members[Category.ChordSymbol], state);\n Bend.format(members[Category.Bend], state);\n Vibrato.format(members[Category.Vibrato], state, this);\n // Update width of this member context\n this.width = state.left_shift + state.right_shift;\n this.preFormatted = true;\n }\n postFormat() {\n if (this.postFormatted)\n return;\n L('Postformatting ModifierContext');\n // If post-formatting is required for an element, add more lines below.\n StaveNote.postFormat(this.getMembers(Category.StaveNote));\n }\n}\nModifierContext.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna Cheppudira 2013.\n// Co-author: Benjamin W. Bohl\n// MIT License\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Clef.DEBUG)\n log('Vex.Flow.Clef', args);\n}\n/**\n * Clef implements various types of clefs that can be rendered on a stave.\n *\n * See `tests/clef_tests.ts` for usage examples.\n */\nexport class Clef extends StaveModifier {\n /** Create a new clef. */\n constructor(type, size, annotation) {\n super();\n /**\n * The attribute `clef` must be a key from\n * `Clef.types`\n */\n this.clef = Clef.types['treble'];\n this.setPosition(StaveModifierPosition.BEGIN);\n this.setType(type, size, annotation);\n this.setWidth(Tables.currentMusicFont().lookupMetric(`clef.${this.size}.width`));\n L('Creating clef:', type);\n }\n static get CATEGORY() {\n return Category.Clef;\n }\n /**\n * Every clef name is associated with a glyph code from the font file\n * and a default stave line number.\n */\n static get types() {\n return {\n treble: {\n code: 'gClef',\n line: 3,\n point: 0,\n },\n bass: {\n code: 'fClef',\n line: 1,\n point: 0,\n },\n alto: {\n code: 'cClef',\n line: 2,\n point: 0,\n },\n tenor: {\n code: 'cClef',\n line: 1,\n point: 0,\n },\n percussion: {\n code: 'restMaxima',\n line: 2,\n point: 0,\n },\n soprano: {\n code: 'cClef',\n line: 4,\n point: 0,\n },\n 'mezzo-soprano': {\n code: 'cClef',\n line: 3,\n point: 0,\n },\n 'baritone-c': {\n code: 'cClef',\n line: 0,\n point: 0,\n },\n 'baritone-f': {\n code: 'fClef',\n line: 2,\n point: 0,\n },\n subbass: {\n code: 'fClef',\n line: 0,\n point: 0,\n },\n french: {\n code: 'gClef',\n line: 4,\n point: 0,\n },\n tab: {\n code: '6stringTabClef',\n point: 0,\n },\n };\n }\n /** Set clef type, size and annotation. */\n setType(type, size, annotation) {\n this.type = type;\n this.clef = Clef.types[type];\n if (size === undefined) {\n this.size = 'default';\n }\n else {\n this.size = size;\n }\n const musicFont = Tables.currentMusicFont();\n this.clef.point = musicFont.lookupMetric(`clef.${this.size}.point`, 0);\n this.glyph = new Glyph(this.clef.code, this.clef.point, {\n category: `clef.${this.clef.code}.${this.size}`,\n });\n // If an annotation, such as 8va, is specified, add it to the Clef object.\n if (annotation !== undefined) {\n const code = musicFont.lookupMetric(`clef.annotations.${annotation}.smuflCode`);\n const point = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.point`);\n const line = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.${this.type}.line`);\n const x_shift = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.${this.type}.shiftX`);\n this.annotation = { code, point, line, x_shift };\n this.attachment = new Glyph(this.annotation.code, this.annotation.point);\n this.attachment.metrics.x_max = 0;\n this.attachment.setXShift(this.annotation.x_shift);\n }\n else {\n this.annotation = undefined;\n }\n return this;\n }\n /** Get clef width. */\n getWidth() {\n if (this.type === 'tab') {\n defined(this.stave, 'ClefError', \"Can't get width without stave.\");\n }\n return this.width;\n }\n /** Set associated stave. */\n setStave(stave) {\n this.stave = stave;\n if (this.type === 'tab') {\n const glyph = defined(this.glyph, 'ClefError', \"Can't set stave without glyph.\");\n const numLines = this.stave.getNumLines();\n const musicFont = Tables.currentMusicFont();\n const point = musicFont.lookupMetric(`clef.lineCount.${numLines}.point`);\n const shiftY = musicFont.lookupMetric(`clef.lineCount.${numLines}.shiftY`);\n glyph.setPoint(point);\n glyph.setYShift(shiftY);\n }\n return this;\n }\n /** Render clef. */\n draw() {\n const glyph = defined(this.glyph, 'ClefError', \"Can't draw clef without glyph.\");\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('clef', this.getAttribute('id'));\n glyph.setStave(stave);\n glyph.setContext(ctx);\n if (this.clef.line !== undefined) {\n this.placeGlyphOnLine(glyph, stave, this.clef.line);\n }\n glyph.renderToStave(this.x);\n if (this.annotation !== undefined && this.attachment !== undefined) {\n this.placeGlyphOnLine(this.attachment, stave, this.annotation.line);\n this.attachment.setStave(stave);\n this.attachment.setContext(ctx);\n this.attachment.renderToStave(this.x);\n }\n ctx.closeGroup();\n }\n}\n/** To enable logging for this class, set `Vex.Flow.Clef.DEBUG` to `true`. */\nClef.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n//\n// ## Description\n//\n// This file implements key signatures. A key signature sits on a stave\n// and indicates the notes with implicit accidentals.\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined } from './util';\nexport class KeySignature extends StaveModifier {\n // Create a new Key Signature based on a `key_spec`\n constructor(keySpec, cancelKeySpec, alterKeySpec) {\n super();\n this.accList = [];\n this.setKeySig(keySpec, cancelKeySpec, alterKeySpec);\n this.setPosition(StaveModifierPosition.BEGIN);\n this.glyphFontScale = 38; // TODO(0xFE): Should this match StaveNote?\n this.glyphs = [];\n this.xPositions = []; // relative to this.x\n this.paddingForced = false;\n }\n static get CATEGORY() {\n return Category.KeySignature;\n }\n // Add an accidental glyph to the `KeySignature` instance which represents\n // the provided `acc`. If `nextAcc` is also provided, the appropriate\n // spacing will be included in the glyph's position\n convertToGlyph(acc, nextAcc) {\n const accGlyphData = Tables.accidentalCodes(acc.type);\n const glyph = new Glyph(accGlyphData.code, this.glyphFontScale);\n // Determine spacing between current accidental and the next accidental\n let extraWidth = 1;\n if (acc.type === 'n' && nextAcc) {\n const spacing = KeySignature.accidentalSpacing[nextAcc.type];\n if (spacing) {\n const isAbove = nextAcc.line >= acc.line;\n extraWidth = isAbove ? spacing.above : spacing.below;\n }\n }\n // Place the glyph on the stave\n this.placeGlyphOnLine(glyph, this.checkStave(), acc.line);\n this.glyphs.push(glyph);\n const xPosition = this.xPositions[this.xPositions.length - 1];\n const glyphWidth = glyph.getMetrics().width + extraWidth;\n // Store the next accidental's x position\n this.xPositions.push(xPosition + glyphWidth);\n // Expand size of key signature\n this.width += glyphWidth;\n }\n // Cancel out a key signature provided in the `spec` parameter. This will\n // place appropriate natural accidentals before the key signature.\n cancelKey(spec) {\n this.formatted = false;\n this.cancelKeySpec = spec;\n return this;\n }\n convertToCancelAccList(spec) {\n // Get the accidental list for the cancelled key signature\n const cancel_accList = Tables.keySignature(spec);\n // If the cancelled key has a different accidental type, ie: # vs b\n const different_types = this.accList.length > 0 && cancel_accList.length > 0 && cancel_accList[0].type !== this.accList[0].type;\n // Determine how many naturals needed to add\n const naturals = different_types ? cancel_accList.length : cancel_accList.length - this.accList.length;\n // Return if no naturals needed\n if (naturals < 1)\n return undefined;\n // Get the line position for each natural\n const cancelled = [];\n for (let i = 0; i < naturals; i++) {\n let index = i;\n if (!different_types) {\n index = cancel_accList.length - naturals + i;\n }\n const acc = cancel_accList[index];\n cancelled.push({ type: 'n', line: acc.line });\n }\n // Combine naturals with main accidental list for the key signature\n this.accList = cancelled.concat(this.accList);\n return {\n accList: cancelled,\n type: cancel_accList[0].type,\n };\n }\n // Deprecated\n addToStave(stave) {\n this.paddingForced = true;\n stave.addModifier(this);\n return this;\n }\n // Apply the accidental staff line placement based on the `clef` and\n // the accidental `type` for the key signature ('# or 'b').\n convertAccLines(clef, type, accList = this.accList) {\n let offset = 0.0; // if clef === \"treble\"\n let customLines; // when clef doesn't follow treble key sig shape\n switch (clef) {\n // Treble & Subbass both have offsets of 0, so are not included.\n case 'soprano':\n if (type === '#')\n customLines = [2.5, 0.5, 2, 0, 1.5, -0.5, 1];\n else\n offset = -1;\n break;\n case 'mezzo-soprano':\n if (type === 'b')\n customLines = [0, 2, 0.5, 2.5, 1, 3, 1.5];\n else\n offset = 1.5;\n break;\n case 'alto':\n offset = 0.5;\n break;\n case 'tenor':\n if (type === '#')\n customLines = [3, 1, 2.5, 0.5, 2, 0, 1.5];\n else\n offset = -0.5;\n break;\n case 'baritone-f':\n case 'baritone-c':\n if (type === 'b')\n customLines = [0.5, 2.5, 1, 3, 1.5, 3.5, 2];\n else\n offset = 2;\n break;\n case 'bass':\n case 'french':\n offset = 1;\n break;\n default:\n break;\n }\n // If there's a special case, assign those lines/spaces:\n let i;\n if (typeof customLines !== 'undefined') {\n for (i = 0; i < accList.length; ++i) {\n accList[i].line = customLines[i];\n }\n }\n else if (offset !== 0) {\n for (i = 0; i < accList.length; ++i) {\n accList[i].line += offset;\n }\n }\n }\n getPadding(index) {\n if (!this.formatted)\n this.format();\n return this.glyphs.length === 0 || (!this.paddingForced && index < 2) ? 0 : this.padding;\n }\n getWidth() {\n if (!this.formatted)\n this.format();\n return this.width;\n }\n setKeySig(keySpec, cancelKeySpec, alterKeySpec) {\n this.formatted = false;\n this.keySpec = keySpec;\n this.cancelKeySpec = cancelKeySpec;\n this.alterKeySpec = alterKeySpec;\n return this;\n }\n // Alter the accidentals of a key spec one by one.\n // Each alteration is a new accidental that replaces the\n // original accidental (or the canceled one).\n alterKey(alterKeySpec) {\n this.formatted = false;\n this.alterKeySpec = alterKeySpec;\n return this;\n }\n convertToAlterAccList(alterKeySpec) {\n const max = Math.min(alterKeySpec.length, this.accList.length);\n for (let i = 0; i < max; ++i) {\n if (alterKeySpec[i]) {\n this.accList[i].type = alterKeySpec[i];\n }\n }\n }\n format() {\n const stave = this.checkStave();\n this.width = 0;\n this.glyphs = [];\n this.xPositions = [0]; // initialize with initial x position\n this.accList = Tables.keySignature(defined(this.keySpec));\n const accList = this.accList;\n const firstAccidentalType = accList.length > 0 ? accList[0].type : undefined;\n let cancelAccList;\n if (this.cancelKeySpec) {\n cancelAccList = this.convertToCancelAccList(this.cancelKeySpec);\n }\n if (this.alterKeySpec) {\n this.convertToAlterAccList(this.alterKeySpec);\n }\n if (this.accList.length > 0) {\n const clef = (this.position === StaveModifierPosition.END ? stave.getEndClef() : stave.getClef()) || stave.getClef();\n if (cancelAccList) {\n this.convertAccLines(clef, cancelAccList.type, cancelAccList.accList);\n }\n this.convertAccLines(clef, firstAccidentalType, accList);\n for (let i = 0; i < this.accList.length; ++i) {\n this.convertToGlyph(this.accList[i], this.accList[i + 1]);\n }\n }\n this.formatted = true;\n }\n /**\n * Return the Glyph objects making up this KeySignature.\n */\n getGlyphs() {\n if (!this.formatted)\n this.format();\n return this.glyphs;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n if (!this.formatted)\n this.format();\n this.setRendered();\n ctx.openGroup('keysignature', this.getAttribute('id'));\n for (let i = 0; i < this.glyphs.length; i++) {\n const glyph = this.glyphs[i];\n const x = this.x + this.xPositions[i];\n glyph.setStave(stave);\n glyph.setContext(ctx);\n glyph.renderToStave(x);\n }\n ctx.closeGroup();\n }\n}\n// Space between natural and following accidental depending\n// on vertical position\nKeySignature.accidentalSpacing = {\n '#': {\n above: 6,\n below: 4,\n },\n b: {\n above: 4,\n below: 7,\n },\n n: {\n above: 4,\n below: 1,\n },\n '##': {\n above: 6,\n below: 4,\n },\n bb: {\n above: 4,\n below: 7,\n },\n db: {\n above: 4,\n below: 7,\n },\n d: {\n above: 4,\n below: 7,\n },\n bbs: {\n above: 4,\n below: 7,\n },\n '++': {\n above: 6,\n below: 4,\n },\n '+': {\n above: 6,\n below: 4,\n },\n '+-': {\n above: 6,\n below: 4,\n },\n '++-': {\n above: 6,\n below: 4,\n },\n bs: {\n above: 4,\n below: 10,\n },\n bss: {\n above: 4,\n below: 10,\n },\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { StaveModifier } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport class Repetition extends StaveModifier {\n constructor(type, x, y_shift) {\n super();\n this.symbol_type = type;\n this.x = x;\n this.x_shift = 0;\n this.y_shift = y_shift;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.Repetition;\n }\n setShiftX(x) {\n this.x_shift = x;\n return this;\n }\n setShiftY(y) {\n this.y_shift = y;\n return this;\n }\n draw(stave, x) {\n this.setRendered();\n switch (this.symbol_type) {\n case Repetition.type.CODA_RIGHT:\n this.drawCodaFixed(stave, x + stave.getWidth());\n break;\n case Repetition.type.CODA_LEFT:\n this.drawSymbolText(stave, x, 'Coda', true);\n break;\n case Repetition.type.SEGNO_LEFT:\n this.drawSignoFixed(stave, x);\n break;\n case Repetition.type.SEGNO_RIGHT:\n this.drawSignoFixed(stave, x + stave.getWidth());\n break;\n case Repetition.type.DC:\n this.drawSymbolText(stave, x, 'D.C.', false);\n break;\n case Repetition.type.DC_AL_CODA:\n this.drawSymbolText(stave, x, 'D.C. al', true);\n break;\n case Repetition.type.DC_AL_FINE:\n this.drawSymbolText(stave, x, 'D.C. al Fine', false);\n break;\n case Repetition.type.DS:\n this.drawSymbolText(stave, x, 'D.S.', false);\n break;\n case Repetition.type.DS_AL_CODA:\n this.drawSymbolText(stave, x, 'D.S. al', true);\n break;\n case Repetition.type.DS_AL_FINE:\n this.drawSymbolText(stave, x, 'D.S. al Fine', false);\n break;\n case Repetition.type.FINE:\n this.drawSymbolText(stave, x, 'Fine', false);\n break;\n case Repetition.type.TO_CODA:\n this.drawSymbolText(stave, x, 'To', true);\n break;\n default:\n break;\n }\n return this;\n }\n drawCodaFixed(stave, x) {\n const y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n Glyph.renderGlyph(stave.checkContext(), this.x + x + this.x_shift, y + Tables.currentMusicFont().lookupMetric('staveRepetition.coda.offsetY'), 40, 'coda', { category: 'coda' });\n return this;\n }\n drawSignoFixed(stave, x) {\n const y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n Glyph.renderGlyph(stave.checkContext(), this.x + x + this.x_shift, y + Tables.currentMusicFont().lookupMetric('staveRepetition.segno.offsetY'), 30, 'segno', { category: 'segno' });\n return this;\n }\n drawSymbolText(stave, x, text, draw_coda) {\n const ctx = stave.checkContext();\n ctx.save();\n ctx.setFont(this.textFont);\n let text_x = 0;\n let symbol_x = 0;\n const modifierWidth = stave.getNoteStartX() - this.x;\n switch (this.symbol_type) {\n // To the left with symbol\n case Repetition.type.CODA_LEFT:\n // Offset Coda text to right of stave beginning\n text_x = this.x + stave.getVerticalBarWidth();\n symbol_x =\n text_x +\n ctx.measureText(text).width +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n break;\n // To the right without symbol\n case Repetition.type.DC:\n case Repetition.type.DC_AL_FINE:\n case Repetition.type.DS:\n case Repetition.type.DS_AL_FINE:\n case Repetition.type.FINE:\n text_x =\n this.x +\n x +\n this.x_shift +\n stave.getWidth() -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.spacing') -\n modifierWidth -\n ctx.measureText(text).width;\n break;\n // To the right with symbol\n default:\n text_x =\n this.x +\n x +\n this.x_shift +\n stave.getWidth() -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.spacing') -\n modifierWidth -\n ctx.measureText(text).width -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n symbol_x =\n text_x +\n ctx.measureText(text).width +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n break;\n }\n const y = stave.getYForTopText(stave.getNumLines()) +\n this.y_shift +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetY');\n if (draw_coda) {\n Glyph.renderGlyph(ctx, symbol_x, y, 40, 'coda', { category: 'coda' });\n }\n ctx.fillText(text, text_x, y + 5);\n ctx.restore();\n return this;\n }\n}\nRepetition.TEXT_FONT = {\n family: Font.SERIF,\n size: 12,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\nRepetition.type = {\n NONE: 1,\n CODA_LEFT: 2,\n CODA_RIGHT: 3,\n SEGNO_LEFT: 4,\n SEGNO_RIGHT: 5,\n DC: 6,\n DC_AL_CODA: 7,\n DC_AL_FINE: 8,\n DS: 9,\n DS_AL_CODA: 10,\n DS_AL_FINE: 11,\n FINE: 12,\n TO_CODA: 13, // To Coda at end of stave\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier } from './stavemodifier';\nimport { Category } from './typeguard';\nexport class StaveSection extends StaveModifier {\n constructor(section, x, shift_y, drawRect = true) {\n super();\n this.setWidth(16);\n this.section = section;\n this.x = x;\n this.shift_x = 0;\n this.shift_y = shift_y;\n this.drawRect = drawRect;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveSection;\n }\n setStaveSection(section) {\n this.section = section;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n draw(stave, shift_x) {\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n const paddingX = 2;\n const paddingY = 2;\n const rectWidth = 2;\n const textMeasurements = ctx.measureText(this.section);\n const textWidth = textMeasurements.width;\n const textHeight = textMeasurements.height;\n const width = textWidth + 2 * paddingX; // add left & right padding\n const height = textHeight + 2 * paddingY; // add top & bottom padding\n // Seems to be a good default y\n const y = stave.getYForTopText(1.5) + this.shift_y;\n const x = this.x + shift_x;\n if (this.drawRect) {\n ctx.beginPath();\n ctx.setLineWidth(rectWidth);\n ctx.rect(x, y + textMeasurements.y - paddingY, width, height);\n ctx.stroke();\n }\n ctx.fillText(this.section, x + paddingX, y);\n ctx.restore();\n return this;\n }\n}\nStaveSection.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 10,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Radosaw Eichler 2012\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport class StaveTempo extends StaveModifier {\n constructor(tempo, x, shift_y) {\n super();\n /** Font size for note. */\n this.render_options = { glyph_font_scale: 30 };\n this.tempo = tempo;\n this.position = StaveModifierPosition.ABOVE;\n this.x = x;\n this.shift_x = 10;\n this.shift_y = shift_y;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveTempo;\n }\n setTempo(tempo) {\n this.tempo = tempo;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n draw(stave, shift_x) {\n const ctx = stave.checkContext();\n this.setRendered();\n const options = this.render_options;\n // FIXME: What does the '38' mean? Why 38? Is that supposed to\n // be the default font size for standard notation?\n const scale = options.glyph_font_scale / 38;\n const name = this.tempo.name;\n const duration = this.tempo.duration;\n const dots = this.tempo.dots || 0;\n const bpm = this.tempo.bpm;\n let x = this.x + this.shift_x + shift_x;\n const y = stave.getYForTopText(1) + this.shift_y;\n ctx.save();\n if (name) {\n ctx.setFont(this.textFont);\n ctx.fillText(name, x, y);\n x += ctx.measureText(name).width;\n }\n if (duration && bpm) {\n // Override the weight and style.\n ctx.setFont(Object.assign(Object.assign({}, this.textFont), { weight: 'normal', style: 'normal' }));\n if (name) {\n x += ctx.measureText(' ').width;\n ctx.fillText('(', x, y);\n x += ctx.measureText('(').width;\n }\n const code = Tables.getGlyphProps(duration);\n x += 3 * scale;\n Glyph.renderGlyph(ctx, x, y, options.glyph_font_scale, code.code_head);\n x += code.getWidth() * scale;\n // Draw stem and flags\n if (code.stem) {\n let stem_height = 30;\n if (code.beam_count)\n stem_height += 3 * (code.beam_count - 1);\n stem_height *= scale;\n const y_top = y - stem_height;\n ctx.fillRect(x - scale, y_top, scale, stem_height);\n if (code.flag) {\n Glyph.renderGlyph(ctx, x, y_top, options.glyph_font_scale, code.code_flag_upstem, {\n category: 'flag.staveTempo',\n });\n if (!dots)\n x += 6 * scale;\n }\n }\n // Draw dot\n for (let i = 0; i < dots; i++) {\n x += 6 * scale;\n ctx.beginPath();\n ctx.arc(x, y + 2 * scale, 2 * scale, 0, Math.PI * 2, false);\n ctx.fill();\n }\n ctx.fillText(' = ' + bpm + (name ? ')' : ''), x + 3 * scale, y);\n }\n ctx.restore();\n return this;\n }\n}\nStaveTempo.TEXT_FONT = {\n family: Font.SERIF,\n size: 14,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { TextJustification, TextNote } from './textnote';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveText extends StaveModifier {\n constructor(text, position, options = {}) {\n super();\n this.setWidth(16);\n this.text = text;\n this.position = position;\n this.options = Object.assign({ shift_x: 0, shift_y: 0, justification: TextNote.Justification.CENTER }, options);\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveText;\n }\n setStaveText(text) {\n this.text = text;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n setText(text) {\n this.text = text;\n return this;\n }\n draw(stave) {\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n const text_width = ctx.measureText('' + this.text).width;\n let x;\n let y;\n switch (this.position) {\n case StaveModifierPosition.LEFT:\n case StaveModifierPosition.RIGHT:\n y = (stave.getYForLine(0) + stave.getBottomLineY()) / 2 + this.options.shift_y;\n if (this.position === StaveModifierPosition.LEFT) {\n x = stave.getX() - text_width - 24 + this.options.shift_x;\n }\n else {\n x = stave.getX() + stave.getWidth() + 24 + this.options.shift_x;\n }\n break;\n case StaveModifierPosition.ABOVE:\n case StaveModifierPosition.BELOW:\n x = stave.getX() + this.options.shift_x;\n if (this.options.justification === TextJustification.CENTER) {\n x += stave.getWidth() / 2 - text_width / 2;\n }\n else if (this.options.justification === TextJustification.RIGHT) {\n x += stave.getWidth() - text_width;\n }\n if (this.position === StaveModifierPosition.ABOVE) {\n y = stave.getYForTopText(2) + this.options.shift_y;\n }\n else {\n y = stave.getYForBottomText(2) + this.options.shift_y;\n }\n break;\n default:\n throw new RuntimeError('InvalidPosition', 'Value Must be in Modifier.Position.');\n }\n ctx.fillText('' + this.text, x, y + 4);\n ctx.restore();\n return this;\n }\n}\nStaveText.TEXT_FONT = {\n family: Font.SERIF,\n size: 16,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Renders time signatures glyphs for staffs\n// This class is used by TimeSignature to render the associated glyphs\nimport { Glyph } from './glyph';\nimport { defined } from './util';\nexport class TimeSignatureGlyph extends Glyph {\n constructor(timeSignature, topDigits, botDigits, code, point, options) {\n var _a;\n super(code, point, options);\n this.timeSignature = timeSignature;\n this.topGlyphs = [];\n this.botGlyphs = [];\n let topWidth = 0;\n for (let i = 0; i < topDigits.length; ++i) {\n let timeSigType = topDigits[i];\n switch (topDigits[i]) {\n case '-':\n timeSigType = 'Minus';\n break;\n case '+':\n timeSigType = botDigits.length > 0 ? 'PlusSmall' : 'Plus';\n break;\n case '(':\n timeSigType = botDigits.length > 0 ? 'ParensLeftSmall' : 'ParensLeft';\n break;\n case ')':\n timeSigType = botDigits.length > 0 ? 'ParensRightSmall' : 'ParensRight';\n break;\n }\n const topGlyph = new Glyph('timeSig' + timeSigType, this.timeSignature.point);\n this.topGlyphs.push(topGlyph);\n topWidth += (_a = topGlyph.getMetrics().width) !== null && _a !== void 0 ? _a : 0;\n }\n let botWidth = 0;\n for (let i = 0; i < botDigits.length; ++i) {\n let timeSigType = botDigits[i];\n switch (botDigits[i]) {\n case '+':\n timeSigType = 'PlusSmall';\n break;\n case '(':\n timeSigType = 'ParensLeftSmall';\n break;\n case ')':\n timeSigType = 'ParensRightSmall';\n break;\n }\n const botGlyph = new Glyph('timeSig' + timeSigType, this.timeSignature.point);\n this.botGlyphs.push(botGlyph);\n botWidth += defined(botGlyph.getMetrics().width);\n }\n this.width = Math.max(topWidth, botWidth);\n this.xMin = this.getMetrics().x_min;\n this.topStartX = (this.width - topWidth) / 2.0;\n this.botStartX = (this.width - botWidth) / 2.0;\n this.reset();\n }\n getMetrics() {\n return {\n x_min: this.xMin,\n x_max: this.xMin + this.width,\n width: this.width,\n };\n }\n renderToStave(x) {\n const stave = this.checkStave();\n const ctx = this.checkContext();\n let start_x = x + this.topStartX;\n let y = 0;\n if (this.botGlyphs.length > 0)\n y = stave.getYForLine(this.timeSignature.topLine);\n else\n y = (stave.getYForLine(this.timeSignature.topLine) + stave.getYForLine(this.timeSignature.bottomLine)) / 2;\n for (let i = 0; i < this.topGlyphs.length; ++i) {\n const glyph = this.topGlyphs[i];\n Glyph.renderOutline(ctx, glyph.getMetrics().outline, this.scale, start_x + this.x_shift, y);\n start_x += defined(glyph.getMetrics().width);\n }\n start_x = x + this.botStartX;\n y = stave.getYForLine(this.timeSignature.bottomLine);\n for (let i = 0; i < this.botGlyphs.length; ++i) {\n const glyph = this.botGlyphs[i];\n this.timeSignature.placeGlyphOnLine(glyph, stave, 0);\n Glyph.renderOutline(ctx, glyph.getMetrics().outline, this.scale, start_x + glyph.getMetrics().x_shift, y);\n start_x += defined(glyph.getMetrics().width);\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Implements time signatures glyphs for staffs\n// See tables.js for the internal time signatures\n// representation\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { TimeSignatureGlyph } from './timesigglyph';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nconst assertIsValidTimeSig = (timeSpec) => {\n const numbers = timeSpec.split('/');\n if (numbers.length !== 2 && numbers[0] !== '+' && numbers[0] !== '-') {\n throw new RuntimeError('BadTimeSignature', `Invalid time spec: ${timeSpec}. Must be in the form \"/\"`);\n }\n numbers.forEach((number) => {\n // Characters consisting in number 0..9, '+', '-', '(' or ')'\n if (/^[0-9+\\-()]+$/.test(number) == false) {\n throw new RuntimeError('BadTimeSignature', `Invalid time spec: ${timeSpec}. Must contain valid signatures.`);\n }\n });\n};\nexport class TimeSignature extends StaveModifier {\n constructor(timeSpec = '4/4', customPadding = 15, validate_args = true) {\n super();\n this.validate_args = validate_args;\n const padding = customPadding;\n const musicFont = Tables.currentMusicFont();\n this.point = musicFont.lookupMetric('digits.point');\n const fontLineShift = musicFont.lookupMetric('digits.shiftLine', 0);\n this.topLine = 2 + fontLineShift;\n this.bottomLine = 4 + fontLineShift;\n this.setPosition(StaveModifierPosition.BEGIN);\n this.info = this.parseTimeSpec(timeSpec);\n this.setWidth(defined(this.info.glyph.getMetrics().width));\n this.setPadding(padding);\n }\n static get CATEGORY() {\n return Category.TimeSignature;\n }\n static get glyphs() {\n return {\n C: {\n code: 'timeSigCommon',\n point: 40,\n line: 2,\n },\n 'C|': {\n code: 'timeSigCutCommon',\n point: 40,\n line: 2,\n },\n };\n }\n parseTimeSpec(timeSpec) {\n var _a, _b;\n if (timeSpec === 'C' || timeSpec === 'C|') {\n const { line, code, point } = TimeSignature.glyphs[timeSpec];\n return {\n line,\n num: false,\n glyph: new Glyph(code, point),\n };\n }\n if (this.validate_args) {\n assertIsValidTimeSig(timeSpec);\n }\n const parts = timeSpec.split('/');\n return {\n num: true,\n glyph: this.makeTimeSignatureGlyph((_a = parts[0]) !== null && _a !== void 0 ? _a : '', (_b = parts[1]) !== null && _b !== void 0 ? _b : ''),\n };\n }\n makeTimeSignatureGlyph(topDigits, botDigits) {\n return new TimeSignatureGlyph(this, topDigits, botDigits, 'timeSig0', this.point);\n }\n getInfo() {\n return this.info;\n }\n setTimeSig(timeSpec) {\n this.info = this.parseTimeSpec(timeSpec);\n return this;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('timesignature', this.getAttribute('id'));\n this.info.glyph.setStave(stave);\n this.info.glyph.setContext(ctx);\n this.placeGlyphOnLine(this.info.glyph, stave, this.info.line);\n this.info.glyph.renderToStave(this.x);\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Clef } from './clef';\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { KeySignature } from './keysignature';\nimport { Barline, BarlineType } from './stavebarline';\nimport { StaveModifierPosition } from './stavemodifier';\nimport { Repetition } from './staverepetition';\nimport { StaveSection } from './stavesection';\nimport { StaveTempo } from './stavetempo';\nimport { StaveText } from './stavetext';\nimport { Volta } from './stavevolta';\nimport { Tables } from './tables';\nimport { TimeSignature } from './timesignature';\nimport { Category, isBarline } from './typeguard';\nimport { RuntimeError } from './util';\n// Used by Stave.format() to sort the modifiers at the beginning and end of a stave.\n// The keys (computed property names) match the CATEGORY property in the\n// Barline, Clef, KeySignature, TimeSignature classes.\nconst SORT_ORDER_BEG_MODIFIERS = {\n [Barline.CATEGORY]: 0,\n [Clef.CATEGORY]: 1,\n [KeySignature.CATEGORY]: 2,\n [TimeSignature.CATEGORY]: 3,\n};\nconst SORT_ORDER_END_MODIFIERS = {\n [TimeSignature.CATEGORY]: 0,\n [KeySignature.CATEGORY]: 1,\n [Barline.CATEGORY]: 2,\n [Clef.CATEGORY]: 3,\n};\nexport class Stave extends Element {\n constructor(x, y, width, options) {\n super();\n // Initialized by the constructor via this.resetLines().\n this.height = 0;\n this.x = x;\n this.y = y;\n this.width = width;\n this.formatted = false;\n this.start_x = x + 5;\n this.end_x = x + width;\n this.modifiers = []; // stave modifiers (clef, key, time, barlines, coda, segno, etc.)\n this.measure = 0;\n this.clef = 'treble';\n this.endClef = undefined;\n this.resetFont();\n this.options = Object.assign({ vertical_bar_width: 10, num_lines: 5, fill_style: '#999999', left_bar: true, right_bar: true, spacing_between_lines_px: Tables.STAVE_LINE_DISTANCE, space_above_staff_ln: 4, space_below_staff_ln: 4, top_text_position: 1, bottom_text_position: 4, line_config: [] }, options);\n this.bounds = { x: this.x, y: this.y, w: this.width, h: 0 };\n this.defaultLedgerLineStyle = { strokeStyle: '#444', lineWidth: 1.4 };\n this.resetLines();\n // beg bar\n this.addModifier(new Barline(this.options.left_bar ? BarlineType.SINGLE : BarlineType.NONE));\n // end bar\n this.addEndModifier(new Barline(this.options.right_bar ? BarlineType.SINGLE : BarlineType.NONE));\n }\n static get CATEGORY() {\n return Category.Stave;\n }\n // This is the sum of the padding that normally goes on left + right of a stave during\n // drawing. Used to size staves correctly with content width.\n static get defaultPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('stave.padding') + musicFont.lookupMetric('stave.endPaddingMax');\n }\n // Right padding, used by system if startX is already determined.\n static get rightPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('stave.endPaddingMax');\n }\n /** Set default style for ledger lines. */\n setDefaultLedgerLineStyle(style) {\n this.defaultLedgerLineStyle = style;\n }\n /** Get default style for ledger lines. */\n getDefaultLedgerLineStyle() {\n return Object.assign(Object.assign({}, this.getStyle()), this.defaultLedgerLineStyle);\n }\n space(spacing) {\n return this.options.spacing_between_lines_px * spacing;\n }\n resetLines() {\n this.options.line_config = [];\n for (let i = 0; i < this.options.num_lines; i++) {\n this.options.line_config.push({ visible: true });\n }\n this.height = (this.options.num_lines + this.options.space_above_staff_ln) * this.options.spacing_between_lines_px;\n this.options.bottom_text_position = this.options.num_lines;\n }\n setNoteStartX(x) {\n if (!this.formatted)\n this.format();\n this.start_x = x;\n return this;\n }\n getNoteStartX() {\n if (!this.formatted)\n this.format();\n return this.start_x;\n }\n getNoteEndX() {\n if (!this.formatted)\n this.format();\n return this.end_x;\n }\n getTieStartX() {\n return this.start_x;\n }\n getTieEndX() {\n return this.end_x;\n }\n getX() {\n return this.x;\n }\n getNumLines() {\n return this.options.num_lines;\n }\n setNumLines(n) {\n this.options.num_lines = n;\n this.resetLines();\n return this;\n }\n setY(y) {\n this.y = y;\n return this;\n }\n getY() {\n return this.y;\n }\n getTopLineTopY() {\n return this.getYForLine(0) - Tables.STAVE_LINE_THICKNESS / 2;\n }\n getBottomLineBottomY() {\n return this.getYForLine(this.getNumLines() - 1) + Tables.STAVE_LINE_THICKNESS / 2;\n }\n setX(x) {\n const shift = x - this.x;\n this.formatted = false;\n this.x = x;\n this.start_x += shift;\n this.end_x += shift;\n for (let i = 0; i < this.modifiers.length; i++) {\n const mod = this.modifiers[i];\n mod.setX(mod.getX() + shift);\n }\n return this;\n }\n setWidth(width) {\n this.formatted = false;\n this.width = width;\n this.end_x = this.x + width;\n // reset the x position of the end barline (TODO(0xfe): This makes no sense)\n // this.modifiers[1].setX(this.end_x);\n return this;\n }\n getWidth() {\n return this.width;\n }\n getStyle() {\n return Object.assign({ fillStyle: this.options.fill_style, strokeStyle: this.options.fill_style, lineWidth: Tables.STAVE_LINE_THICKNESS }, super.getStyle());\n }\n /**\n * Set the measure number of this Stave.\n */\n setMeasure(measure) {\n this.measure = measure;\n return this;\n }\n /**\n * Return the measure number of this Stave.\n */\n getMeasure() {\n return this.measure;\n }\n /**\n * Gets the pixels to shift from the beginning of the stave\n * following the modifier at the provided index\n * @param {Number} index The index from which to determine the shift\n * @return {Number} The amount of pixels shifted\n */\n getModifierXShift(index = 0) {\n if (typeof index !== 'number') {\n throw new RuntimeError('InvalidIndex', 'Must be of number type');\n }\n if (!this.formatted)\n this.format();\n if (this.getModifiers(StaveModifierPosition.BEGIN).length === 1) {\n return 0;\n }\n // for right position modifiers zero shift seems correct, see 'Volta + Modifier Measure Test'\n if (this.modifiers[index].getPosition() === StaveModifierPosition.RIGHT) {\n return 0;\n }\n let start_x = this.start_x - this.x;\n const begBarline = this.modifiers[0];\n if (begBarline.getType() === BarlineType.REPEAT_BEGIN && start_x > begBarline.getWidth()) {\n start_x -= begBarline.getWidth();\n }\n return start_x;\n }\n /** Coda & Segno Symbol functions */\n setRepetitionType(type, yShift = 0) {\n this.modifiers.push(new Repetition(type, this.x, yShift));\n return this;\n }\n // Volta functions\n setVoltaType(type, number_t, y) {\n this.modifiers.push(new Volta(type, number_t, this.x, y));\n return this;\n }\n // Section functions\n setSection(section, y, xOffset = 0, fontSize, drawRect = true) {\n const staveSection = new StaveSection(section, this.x + xOffset, y, drawRect);\n if (fontSize)\n staveSection.setFontSize(fontSize);\n this.modifiers.push(staveSection);\n return this;\n }\n // Tempo functions\n setTempo(tempo, y) {\n this.modifiers.push(new StaveTempo(tempo, this.x, y));\n return this;\n }\n // Text functions\n setText(text, position, options = {}) {\n this.modifiers.push(new StaveText(text, position, options));\n return this;\n }\n getHeight() {\n return this.height;\n }\n getSpacingBetweenLines() {\n return this.options.spacing_between_lines_px;\n }\n getBoundingBox() {\n return new BoundingBox(this.x, this.y, this.width, this.getBottomY() - this.y);\n }\n getBottomY() {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const score_bottom = this.getYForLine(options.num_lines) + options.space_below_staff_ln * spacing;\n return score_bottom;\n }\n getBottomLineY() {\n return this.getYForLine(this.options.num_lines);\n }\n // This returns\n /** @returns the y for the *center* of a staff line */\n getYForLine(line) {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n const y = this.y + line * spacing + headroom * spacing;\n return y;\n }\n getLineForY(y) {\n // Does the reverse of getYForLine - somewhat dumb and just calls\n // getYForLine until the right value is reaches\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n return (y - this.y) / spacing - headroom;\n }\n getYForTopText(line = 0) {\n return this.getYForLine(-line - this.options.top_text_position);\n }\n getYForBottomText(line = 0) {\n return this.getYForLine(this.options.bottom_text_position + line);\n }\n getYForNote(line) {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n return this.y + headroom * spacing + 5 * spacing - line * spacing;\n }\n getYForGlyphs() {\n return this.getYForLine(3);\n }\n // This method adds a stave modifier to the stave. Note that the first two\n // modifiers (BarLines) are automatically added upon construction.\n addModifier(modifier, position) {\n if (position !== undefined) {\n modifier.setPosition(position);\n }\n modifier.setStave(this);\n this.formatted = false;\n this.modifiers.push(modifier);\n return this;\n }\n addEndModifier(modifier) {\n this.addModifier(modifier, StaveModifierPosition.END);\n return this;\n }\n // Bar Line functions\n setBegBarType(type) {\n // Only valid bar types at beginning of stave is none, single or begin repeat\n const { SINGLE, REPEAT_BEGIN, NONE } = BarlineType;\n if (type === SINGLE || type === REPEAT_BEGIN || type === NONE) {\n this.modifiers[0].setType(type);\n this.formatted = false;\n }\n return this;\n }\n setEndBarType(type) {\n // Repeat end not valid at end of stave\n if (type !== BarlineType.REPEAT_BEGIN) {\n this.modifiers[1].setType(type);\n this.formatted = false;\n }\n return this;\n }\n setClef(clefSpec, size, annotation, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n if (position === StaveModifierPosition.END) {\n this.endClef = clefSpec;\n }\n else {\n this.clef = clefSpec;\n }\n const clefs = this.getModifiers(position, Clef.CATEGORY);\n if (clefs.length === 0) {\n this.addClef(clefSpec, size, annotation, position);\n }\n else {\n clefs[0].setType(clefSpec, size, annotation);\n }\n return this;\n }\n getClef() {\n return this.clef;\n }\n setEndClef(clefSpec, size, annotation) {\n this.setClef(clefSpec, size, annotation, StaveModifierPosition.END);\n return this;\n }\n getEndClef() {\n return this.endClef;\n }\n setKeySignature(keySpec, cancelKeySpec, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n const keySignatures = this.getModifiers(position, KeySignature.CATEGORY);\n if (keySignatures.length === 0) {\n this.addKeySignature(keySpec, cancelKeySpec, position);\n }\n else {\n keySignatures[0].setKeySig(keySpec, cancelKeySpec);\n }\n return this;\n }\n setEndKeySignature(keySpec, cancelKeySpec) {\n this.setKeySignature(keySpec, cancelKeySpec, StaveModifierPosition.END);\n return this;\n }\n setTimeSignature(timeSpec, customPadding, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n const timeSignatures = this.getModifiers(position, TimeSignature.CATEGORY);\n if (timeSignatures.length === 0) {\n this.addTimeSignature(timeSpec, customPadding, position);\n }\n else {\n timeSignatures[0].setTimeSig(timeSpec);\n }\n return this;\n }\n setEndTimeSignature(timeSpec, customPadding) {\n this.setTimeSignature(timeSpec, customPadding, StaveModifierPosition.END);\n return this;\n }\n /**\n * Add a key signature to the stave.\n *\n * Example:\n * `stave.addKeySignature('Db');`\n * @param keySpec new key specification `[A-G][b|#]?`\n * @param cancelKeySpec\n * @param position\n * @returns\n */\n addKeySignature(keySpec, cancelKeySpec, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n this.addModifier(new KeySignature(keySpec, cancelKeySpec).setPosition(position), position);\n return this;\n }\n /**\n * Add a clef to the stave.\n *\n * Example:\n *\n * stave.addClef('treble')\n * @param clef clef (treble|bass|...) see {@link Clef.types}\n * @param size\n * @param annotation\n * @param position\n * @returns\n */\n addClef(clef, size, annotation, position) {\n if (position === undefined || position === StaveModifierPosition.BEGIN) {\n this.clef = clef;\n }\n else if (position === StaveModifierPosition.END) {\n this.endClef = clef;\n }\n this.addModifier(new Clef(clef, size, annotation), position);\n return this;\n }\n addEndClef(clef, size, annotation) {\n this.addClef(clef, size, annotation, StaveModifierPosition.END);\n return this;\n }\n /**\n * Add a time signature to the stave\n *\n * Example:\n *\n * `stave.addTimeSignature('4/4');`\n * @param timeSpec time signature specification `(C\\||C|\\d\\/\\d)`\n * @param customPadding\n * @param position\n * @returns\n */\n addTimeSignature(timeSpec, customPadding, position) {\n this.addModifier(new TimeSignature(timeSpec, customPadding), position);\n return this;\n }\n addEndTimeSignature(timeSpec, customPadding) {\n this.addTimeSignature(timeSpec, customPadding, StaveModifierPosition.END);\n return this;\n }\n // Deprecated\n addTrebleGlyph() {\n this.addClef('treble');\n return this;\n }\n /**\n * @param position\n * @param category\n * @returns array of StaveModifiers that match the provided position and category.\n */\n getModifiers(position, category) {\n const noPosition = position === undefined;\n const noCategory = category === undefined;\n if (noPosition && noCategory) {\n return this.modifiers;\n }\n else if (noPosition) {\n // A category was provided.\n return this.modifiers.filter((m) => category === m.getCategory());\n }\n else if (noCategory) {\n // A position was provided.\n return this.modifiers.filter((m) => position === m.getPosition());\n }\n else {\n // Both position and category were provided!\n return this.modifiers.filter((m) => position === m.getPosition() && category === m.getCategory());\n }\n }\n /**\n * Use the modifier's `getCategory()` as a key for the `order` array.\n * The retrieved value is used to sort modifiers from left to right (0 to to 3).\n */\n sortByCategory(items, order) {\n for (let i = items.length - 1; i >= 0; i--) {\n for (let j = 0; j < i; j++) {\n if (order[items[j].getCategory()] > order[items[j + 1].getCategory()]) {\n const temp = items[j];\n items[j] = items[j + 1];\n items[j + 1] = temp;\n }\n }\n }\n }\n format() {\n const begBarline = this.modifiers[0];\n const endBarline = this.modifiers[1];\n const begModifiers = this.getModifiers(StaveModifierPosition.BEGIN);\n const endModifiers = this.getModifiers(StaveModifierPosition.END);\n this.sortByCategory(begModifiers, SORT_ORDER_BEG_MODIFIERS);\n this.sortByCategory(endModifiers, SORT_ORDER_END_MODIFIERS);\n if (begModifiers.length > 1 && begBarline.getType() === BarlineType.REPEAT_BEGIN) {\n begModifiers.push(begModifiers.splice(0, 1)[0]);\n begModifiers.splice(0, 0, new Barline(BarlineType.SINGLE));\n }\n if (endModifiers.indexOf(endBarline) > 0) {\n endModifiers.splice(0, 0, new Barline(BarlineType.NONE));\n }\n let width;\n let padding;\n let modifier;\n let offset = 0;\n let x = this.x;\n for (let i = 0; i < begModifiers.length; i++) {\n modifier = begModifiers[i];\n padding = modifier.getPadding(i + offset);\n width = modifier.getWidth();\n x += padding;\n modifier.setX(x);\n x += width;\n if (padding + width === 0)\n offset--;\n }\n this.start_x = x;\n x = this.x + this.width;\n const widths = {\n left: 0,\n right: 0,\n paddingRight: 0,\n paddingLeft: 0,\n };\n let lastBarlineIdx = 0;\n for (let i = 0; i < endModifiers.length; i++) {\n modifier = endModifiers[i];\n lastBarlineIdx = isBarline(modifier) ? i : lastBarlineIdx;\n widths.right = 0;\n widths.left = 0;\n widths.paddingRight = 0;\n widths.paddingLeft = 0;\n const layoutMetrics = modifier.getLayoutMetrics();\n if (layoutMetrics) {\n if (i !== 0) {\n widths.right = layoutMetrics.xMax || 0;\n widths.paddingRight = layoutMetrics.paddingRight || 0;\n }\n widths.left = -layoutMetrics.xMin || 0;\n widths.paddingLeft = layoutMetrics.paddingLeft || 0;\n if (i === endModifiers.length - 1) {\n widths.paddingLeft = 0;\n }\n }\n else {\n widths.paddingRight = modifier.getPadding(i - lastBarlineIdx);\n if (i !== 0) {\n widths.right = modifier.getWidth();\n }\n if (i === 0) {\n widths.left = modifier.getWidth();\n }\n }\n x -= widths.paddingRight;\n x -= widths.right;\n modifier.setX(x);\n x -= widths.left;\n x -= widths.paddingLeft;\n }\n this.end_x = endModifiers.length === 1 ? this.x + this.width : x;\n this.formatted = true;\n }\n /**\n * All drawing functions below need the context to be set.\n */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n ctx.openGroup('stave', this.getAttribute('id'));\n if (!this.formatted)\n this.format();\n const num_lines = this.options.num_lines;\n const width = this.width;\n const x = this.x;\n let y;\n // Render lines\n for (let line = 0; line < num_lines; line++) {\n y = this.getYForLine(line);\n this.applyStyle();\n if (this.options.line_config[line].visible) {\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.lineTo(x + width, y);\n ctx.stroke();\n }\n this.restoreStyle();\n }\n // Draw the modifiers (bar lines, coda, segno, repeat brackets, etc.)\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n // Only draw modifier if it has a draw function\n if (typeof modifier.draw === 'function') {\n modifier.applyStyle(ctx);\n modifier.draw(this, this.getModifierXShift(i));\n modifier.restoreStyle(ctx);\n }\n }\n // Render measure numbers\n if (this.measure > 0) {\n ctx.save();\n ctx.setFont(this.textFont);\n const textWidth = ctx.measureText('' + this.measure).width;\n y = this.getYForTopText(0) + 3;\n ctx.fillText('' + this.measure, this.x - textWidth / 2, y);\n ctx.restore();\n }\n ctx.closeGroup();\n return this;\n }\n getVerticalBarWidth() {\n return this.options.vertical_bar_width;\n }\n /**\n * Get the current configuration for the Stave.\n * @return {Array} An array of configuration objects.\n */\n getConfigForLines() {\n return this.options.line_config;\n }\n /**\n * Configure properties of the lines in the Stave\n * @param line_number The index of the line to configure.\n * @param line_config An configuration object for the specified line.\n * @throws RuntimeError \"StaveConfigError\" When the specified line number is out of\n * range of the number of lines specified in the constructor.\n */\n setConfigForLine(line_number, line_config) {\n if (line_number >= this.options.num_lines || line_number < 0) {\n throw new RuntimeError('StaveConfigError', 'The line number must be within the range of the number of lines in the Stave.');\n }\n if (line_config.visible === undefined) {\n throw new RuntimeError('StaveConfigError', \"The line configuration object is missing the 'visible' property.\");\n }\n if (typeof line_config.visible !== 'boolean') {\n throw new RuntimeError('StaveConfigError', \"The line configuration objects 'visible' property must be true or false.\");\n }\n this.options.line_config[line_number] = line_config;\n return this;\n }\n /**\n * Set the staff line configuration array for all of the lines at once.\n * @param lines_configuration An array of line configuration objects. These objects\n * are of the same format as the single one passed in to setLineConfiguration().\n * The caller can set null for any line config entry if it is desired that the default be used\n * @throws RuntimeError \"StaveConfigError\" When the lines_configuration array does not have\n * exactly the same number of elements as the num_lines configuration object set in\n * the constructor.\n */\n setConfigForLines(lines_configuration) {\n if (lines_configuration.length !== this.options.num_lines) {\n throw new RuntimeError('StaveConfigError', 'The length of the lines configuration array must match the number of lines in the Stave');\n }\n // Make sure the defaults are present in case an incomplete set of\n // configuration options were supplied.\n // eslint-disable-next-line\n for (const line_config in lines_configuration) {\n // Allow '{}' to be used if the caller just wants the default for a particular node.\n if (lines_configuration[line_config].visible == undefined) {\n lines_configuration[line_config] = this.options.line_config[line_config];\n }\n this.options.line_config[line_config] = Object.assign(Object.assign({}, this.options.line_config[line_config]), lines_configuration[line_config]);\n }\n this.options.line_config = lines_configuration;\n return this;\n }\n static formatBegModifiers(staves) {\n let maxX = 0;\n // align note start\n staves.forEach((stave) => {\n if (stave.getNoteStartX() > maxX)\n maxX = stave.getNoteStartX();\n });\n staves.forEach((stave) => {\n stave.setNoteStartX(maxX);\n });\n maxX = 0;\n // align REPEAT_BEGIN\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.Barline);\n modifiers.forEach((modifier) => {\n if (modifier.getType() == BarlineType.REPEAT_BEGIN)\n if (modifier.getX() > maxX)\n maxX = modifier.getX();\n });\n });\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.Barline);\n modifiers.forEach((modifier) => {\n if (modifier.getType() == BarlineType.REPEAT_BEGIN)\n modifier.setX(maxX);\n });\n });\n maxX = 0;\n // Align time signatures\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.TimeSignature);\n modifiers.forEach((modifier) => {\n if (modifier.getX() > maxX)\n maxX = modifier.getX();\n });\n });\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.TimeSignature);\n modifiers.forEach((modifier) => {\n modifier.setX(maxX);\n });\n });\n }\n}\nStave.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 8,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nfunction drawBoldDoubleLine(ctx, type, topX, topY, botY) {\n if (type !== StaveConnector.type.BOLD_DOUBLE_LEFT && type !== StaveConnector.type.BOLD_DOUBLE_RIGHT) {\n throw new RuntimeError('InvalidConnector', 'A REPEAT_BEGIN or REPEAT_END type must be provided.');\n }\n let x_shift = 3;\n let variableWidth = 3.5; // Width for avoiding anti-aliasing width issues\n const thickLineOffset = 2; // For aesthetics\n if (type === StaveConnector.type.BOLD_DOUBLE_RIGHT) {\n x_shift = -5; // Flips the side of the thin line\n variableWidth = 3;\n }\n // Thin line\n ctx.fillRect(topX + x_shift, topY, 1, botY - topY);\n // Thick line\n ctx.fillRect(topX - thickLineOffset, topY, variableWidth, botY - topY);\n}\n/** StaveConnector implements the connector lines between staves of a system. */\nexport class StaveConnector extends Element {\n constructor(top_stave, bottom_stave) {\n super();\n this.thickness = Tables.STAVE_LINE_THICKNESS;\n this.width = 3;\n this.top_stave = top_stave;\n this.bottom_stave = bottom_stave;\n this.type = StaveConnector.type.DOUBLE;\n this.resetFont();\n // 1. Offset Bold Double Left to align with offset Repeat Begin bars\n // 2. Offset BRACE type not to overlap with another StaveConnector\n this.x_shift = 0;\n this.texts = [];\n }\n static get CATEGORY() {\n return Category.StaveConnector;\n }\n /**\n * Set type.\n * @param type see {@link StaveConnector.type} & {@link StaveConnector.typeString}\n */\n setType(type) {\n const newType = typeof type === 'string' ? StaveConnector.typeString[type] : type;\n // Be certain that the type is a valid type:\n if (Object.values(StaveConnector.type).includes(newType)) {\n this.type = newType;\n }\n return this;\n }\n /**\n * Get type.\n * @returns number {@link StaveConnector.type}\n */\n getType() {\n return this.type;\n }\n /** Set optional associated Text. */\n setText(text, options = {}) {\n this.texts.push({\n content: text,\n options: Object.assign({ shift_x: 0, shift_y: 0 }, options),\n });\n return this;\n }\n setXShift(x_shift) {\n if (typeof x_shift !== 'number') {\n throw new RuntimeError('InvalidType', 'x_shift must be a Number');\n }\n this.x_shift = x_shift;\n return this;\n }\n getXShift() {\n return this.x_shift;\n }\n /** Render connector and associated text. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let topY = this.top_stave.getYForLine(0);\n let botY = this.bottom_stave.getYForLine(this.bottom_stave.getNumLines() - 1) + this.thickness;\n let width = this.width;\n let topX = this.top_stave.getX();\n const isRightSidedConnector = this.type === StaveConnector.type.SINGLE_RIGHT ||\n this.type === StaveConnector.type.BOLD_DOUBLE_RIGHT ||\n this.type === StaveConnector.type.THIN_DOUBLE;\n if (isRightSidedConnector) {\n topX = this.top_stave.getX() + this.top_stave.getWidth();\n }\n let attachment_height = botY - topY;\n switch (this.type) {\n case StaveConnector.type.SINGLE:\n width = 1;\n break;\n case StaveConnector.type.SINGLE_LEFT:\n width = 1;\n break;\n case StaveConnector.type.SINGLE_RIGHT:\n width = 1;\n break;\n case StaveConnector.type.DOUBLE:\n topX -= this.width + 2;\n topY -= this.thickness;\n attachment_height += 0.5;\n break;\n case StaveConnector.type.BRACE: {\n width = 12;\n // May need additional code to draw brace\n const x1 = this.top_stave.getX() - 2 + this.x_shift;\n const y1 = topY;\n const x3 = x1;\n const y3 = botY;\n const x2 = x1 - width;\n const y2 = y1 + attachment_height / 2.0;\n const cpx1 = x2 - 0.9 * width;\n const cpy1 = y1 + 0.2 * attachment_height;\n const cpx2 = x1 + 1.1 * width;\n const cpy2 = y2 - 0.135 * attachment_height;\n const cpx3 = cpx2;\n const cpy3 = y2 + 0.135 * attachment_height;\n const cpx4 = cpx1;\n const cpy4 = y3 - 0.2 * attachment_height;\n const cpx5 = x2 - width;\n const cpy5 = cpy4;\n const cpx6 = x1 + 0.4 * width;\n const cpy6 = y2 + 0.135 * attachment_height;\n const cpx7 = cpx6;\n const cpy7 = y2 - 0.135 * attachment_height;\n const cpx8 = cpx5;\n const cpy8 = cpy1;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);\n ctx.bezierCurveTo(cpx3, cpy3, cpx4, cpy4, x3, y3);\n ctx.bezierCurveTo(cpx5, cpy5, cpx6, cpy6, x2, y2);\n ctx.bezierCurveTo(cpx7, cpy7, cpx8, cpy8, x1, y1);\n ctx.fill();\n ctx.stroke();\n break;\n }\n case StaveConnector.type.BRACKET:\n topY -= 6;\n botY += 6;\n attachment_height = botY - topY;\n Glyph.renderGlyph(ctx, topX - 5, topY, 40, 'bracketTop');\n Glyph.renderGlyph(ctx, topX - 5, botY, 40, 'bracketBottom');\n topX -= this.width + 2;\n break;\n case StaveConnector.type.BOLD_DOUBLE_LEFT:\n drawBoldDoubleLine(ctx, this.type, topX + this.x_shift, topY, botY - this.thickness);\n break;\n case StaveConnector.type.BOLD_DOUBLE_RIGHT:\n drawBoldDoubleLine(ctx, this.type, topX, topY, botY - this.thickness);\n break;\n case StaveConnector.type.THIN_DOUBLE:\n width = 1;\n attachment_height -= this.thickness;\n break;\n case StaveConnector.type.NONE:\n break;\n default:\n throw new RuntimeError('InvalidType', `The provided StaveConnector.type (${this.type}) is invalid.`);\n }\n if (this.type !== StaveConnector.type.BRACE &&\n this.type !== StaveConnector.type.BOLD_DOUBLE_LEFT &&\n this.type !== StaveConnector.type.BOLD_DOUBLE_RIGHT &&\n this.type !== StaveConnector.type.NONE) {\n ctx.fillRect(topX, topY, width, attachment_height);\n }\n // If the connector is a thin double barline, draw the paralell line\n if (this.type === StaveConnector.type.THIN_DOUBLE) {\n ctx.fillRect(topX - 3, topY, width, attachment_height);\n }\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n // Add stave connector text\n for (let i = 0; i < this.texts.length; i++) {\n const text = this.texts[i];\n const text_width = ctx.measureText('' + text.content).width;\n const x = this.top_stave.getX() - text_width - 24 + text.options.shift_x;\n const y = (this.top_stave.getYForLine(0) + this.bottom_stave.getBottomLineY()) / 2 + text.options.shift_y;\n ctx.fillText('' + text.content, x, y + 4);\n }\n ctx.restore();\n }\n}\nStaveConnector.TEXT_FONT = {\n family: Font.SERIF,\n size: 16,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n/**\n * SINGLE_LEFT and SINGLE are the same value for compatibility\n * with older versions of vexflow which didn't have right sided\n * stave connectors.\n */\nStaveConnector.type = {\n SINGLE_RIGHT: 0,\n SINGLE_LEFT: 1,\n SINGLE: 1,\n DOUBLE: 2,\n BRACE: 3,\n BRACKET: 4,\n BOLD_DOUBLE_LEFT: 5,\n BOLD_DOUBLE_RIGHT: 6,\n THIN_DOUBLE: 7,\n NONE: 8,\n};\n/**\n * Connector type:\n * * \"singleRight\"\n * * \"singleLeft\"\n * * \"single\"\n * * \"double\"\n * * \"brace\"\n * * \"bracket\"\n * * \"boldDoubleLeft\"\n * * \"boldDoubleRight\"\n * * \"thinDouble\"\n * * \"none\"\n */\nStaveConnector.typeString = {\n singleRight: StaveConnector.type.SINGLE_RIGHT,\n singleLeft: StaveConnector.type.SINGLE_LEFT,\n single: StaveConnector.type.SINGLE,\n double: StaveConnector.type.DOUBLE,\n brace: StaveConnector.type.BRACE,\n bracket: StaveConnector.type.BRACKET,\n boldDoubleLeft: StaveConnector.type.BOLD_DOUBLE_LEFT,\n boldDoubleRight: StaveConnector.type.BOLD_DOUBLE_RIGHT,\n thinDouble: StaveConnector.type.THIN_DOUBLE,\n none: StaveConnector.type.NONE,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Beam } from './beam';\nimport { Font } from './font';\nimport { Fraction } from './fraction';\nimport { ModifierContext } from './modifiercontext';\nimport { Stave } from './stave';\nimport { StaveConnector } from './staveconnector';\nimport { Tables } from './tables';\nimport { TickContext } from './tickcontext';\nimport { isNote, isStaveNote } from './typeguard';\nimport { defined, log, midLine, RuntimeError } from './util';\nimport { Voice } from './voice';\n// Helper function\nconst sumArray = (arr) => arr.reduce((a, b) => a + b, 0);\n/**\n * Create `Alignment`s for each tick in `voices`. Also calculate the\n * total number of ticks in voices.\n */\nfunction createContexts(voices, makeContext, addToContext) {\n if (voices.length == 0)\n return {\n map: {},\n array: [],\n list: [],\n resolutionMultiplier: 0,\n };\n // Initialize tick maps.\n const tickToContextMap = {};\n const tickList = [];\n const contexts = [];\n const resolutionMultiplier = Formatter.getResolutionMultiplier(voices);\n // For each voice, extract notes and create a context for every\n // new tick that hasn't been seen before.\n voices.forEach((voice, voiceIndex) => {\n // Use resolution multiplier as denominator so that no additional expansion\n // of fractional tick values is needed.\n const ticksUsed = new Fraction(0, resolutionMultiplier);\n voice.getTickables().forEach((tickable) => {\n const integerTicks = ticksUsed.numerator;\n // If we have no tick context for this tick, create one.\n if (!tickToContextMap[integerTicks]) {\n const newContext = makeContext({ tickID: integerTicks });\n contexts.push(newContext);\n tickToContextMap[integerTicks] = newContext;\n // Maintain a list of unique integerTicks.\n tickList.push(integerTicks);\n }\n // Add this tickable to the TickContext.\n addToContext(tickable, tickToContextMap[integerTicks], voiceIndex);\n ticksUsed.add(tickable.getTicks());\n });\n });\n return {\n map: tickToContextMap,\n array: contexts,\n list: tickList.sort((a, b) => a - b),\n resolutionMultiplier,\n };\n}\n// eslint-disable-next-line\nfunction L(...args) {\n if (Formatter.DEBUG)\n log('Vex.Flow.Formatter', args);\n}\n/**\n * Get the rest line number of the next non-rest note(s).\n * @param notes array of Notes\n * @param currRestLine\n * @param currNoteIndex current note index\n * @param compare if true, return the midpoint between the current rest line and the next rest line\n * @returns a line number, which determines the vertical position of a rest.\n */\nfunction getRestLineForNextNoteGroup(notes, currRestLine, currNoteIndex, compare) {\n // If no valid next note group, nextRestLine is same as current.\n let nextRestLine = currRestLine;\n // Start with the next note and keep going until we find a valid non-rest note group.\n for (let noteIndex = currNoteIndex + 1; noteIndex < notes.length; noteIndex++) {\n const note = notes[noteIndex];\n if (isNote(note) && !note.isRest() && !note.shouldIgnoreTicks()) {\n nextRestLine = note.getLineForRest();\n break;\n }\n }\n // Locate the mid point between two lines.\n if (compare && currRestLine !== nextRestLine) {\n const top = Math.max(currRestLine, nextRestLine);\n const bot = Math.min(currRestLine, nextRestLine);\n nextRestLine = midLine(top, bot);\n }\n return nextRestLine;\n}\n/**\n * Format implements the formatting and layout algorithms that are used\n * to position notes in a voice. The algorithm can align multiple voices both\n * within a stave, and across multiple staves.\n *\n * To do this, the formatter breaks up voices into a grid of rational-valued\n * `ticks`, to which each note is assigned. Then, minimum widths are assigned\n * to each tick based on the widths of the notes and modifiers in that tick. This\n * establishes the smallest amount of space required for each tick.\n *\n * Finally, the formatter distributes the left over space proportionally to\n * all the ticks, setting the `x` values of the notes in each tick.\n *\n * See `tests/formatter_tests.ts` for usage examples. The helper functions included\n * here (`FormatAndDraw`, `FormatAndDrawTab`) also serve as useful usage examples.\n */\nexport class Formatter {\n constructor(options) {\n this.formatterOptions = Object.assign({ globalSoftmax: false, softmaxFactor: Tables.SOFTMAX_FACTOR, maxIterations: 5 }, options);\n this.justifyWidth = 0;\n this.totalCost = 0;\n this.totalShift = 0;\n this.durationStats = {};\n // Minimum width required to render all the notes in the voices.\n this.minTotalWidth = 0;\n // This is set to `true` after `minTotalWidth` is calculated.\n this.hasMinTotalWidth = false;\n // Arrays of tick and modifier contexts.\n this.tickContexts = {\n map: {},\n array: [],\n list: [],\n resolutionMultiplier: 0,\n };\n this.modifierContexts = [];\n // Gaps between contexts, for free movement of notes post\n // formatting.\n this.contextGaps = {\n total: 0,\n gaps: [],\n };\n this.voices = [];\n this.lossHistory = [];\n }\n /**\n * Helper function to layout \"notes\" one after the other without\n * regard for proportions. Useful for tests and debugging.\n */\n static SimpleFormat(notes, x = 0, { paddingBetween = 10 } = {}) {\n notes.reduce((accumulator, note) => {\n note.addToModifierContext(new ModifierContext());\n const tick = new TickContext().addTickable(note).preFormat();\n const metrics = tick.getMetrics();\n tick.setX(accumulator + metrics.totalLeftPx);\n return accumulator + tick.getWidth() + metrics.totalRightPx + paddingBetween;\n }, x);\n }\n /** Helper function to plot formatter debug info. */\n static plotDebugging(ctx, formatter, xPos, y1, y2, options) {\n options = Object.assign({ stavePadding: Tables.currentMusicFont().lookupMetric('stave.padding') }, options);\n const x = xPos + options.stavePadding;\n const contextGaps = formatter.contextGaps;\n function stroke(x1, x2, color) {\n ctx.beginPath();\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n ctx.setLineWidth(1);\n ctx.fillRect(x1, y1, Math.max(x2 - x1, 0), y2 - y1);\n }\n ctx.save();\n ctx.setFont(Font.SANS_SERIF, 8);\n contextGaps.gaps.forEach((gap) => {\n stroke(x + gap.x1, x + gap.x2, 'rgba(100,200,100,0.4)');\n ctx.setFillStyle('green');\n ctx.fillText(Math.round(gap.x2 - gap.x1).toString(), x + gap.x1, y2 + 12);\n });\n ctx.setFillStyle('red');\n ctx.fillText(`Loss: ${(formatter.totalCost || 0).toFixed(2)} Shift: ${(formatter.totalShift || 0).toFixed(2)} Gap: ${contextGaps.total.toFixed(2)}`, x - 20, y2 + 27);\n ctx.restore();\n }\n /**\n * Helper function to format and draw a single voice. Returns a bounding\n * box for the notation.\n * @param ctx the rendering context\n * @param stave the stave to which to draw (`Stave` or `TabStave`)\n * @param notes array of `Note` instances (`Note`, `TextNote`, `TabNote`, etc.)\n * @param params one of below:\n * * Setting `autobeam` only `(context, stave, notes, true)` or\n * `(ctx, stave, notes, {autobeam: true})`\n * * Setting `align_rests` a struct is needed `(context, stave, notes, {align_rests: true})`\n * * Setting both a struct is needed `(context, stave, notes, {\n * autobeam: true, align_rests: true})`\n * * `autobeam` automatically generates beams for the notes.\n * * `align_rests` aligns rests with nearby notes.\n */\n static FormatAndDraw(ctx, stave, notes, params) {\n let options = {\n auto_beam: false,\n align_rests: false,\n };\n if (typeof params === 'object') {\n options = Object.assign(Object.assign({}, options), params);\n }\n else if (typeof params === 'boolean') {\n options.auto_beam = params;\n }\n // Start by creating a voice and adding all the notes to it.\n const voice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(notes);\n // Then create beams, if requested.\n const beams = options.auto_beam ? Beam.applyAndGetBeams(voice) : [];\n // Instantiate a `Formatter` and format the notes.\n new Formatter()\n .joinVoices([voice]) // , { align_rests: options.align_rests })\n .formatToStave([voice], stave, { align_rests: options.align_rests, stave });\n // Render the voice and beams to the stave.\n voice.setStave(stave).draw(ctx, stave);\n beams.forEach((beam) => beam.setContext(ctx).draw());\n // Return the bounding box of the voice.\n return voice.getBoundingBox();\n }\n /**\n * Helper function to format and draw aligned tab and stave notes in two\n * separate staves.\n * @param ctx the rendering context\n * @param tabstave a `TabStave` instance on which to render `TabNote`s.\n * @param stave a `Stave` instance on which to render `Note`s.\n * @param notes array of `Note` instances for the stave (`Note`, `BarNote`, etc.)\n * @param tabnotes array of `Note` instances for the tab stave (`TabNote`, `BarNote`, etc.)\n * @param autobeam automatically generate beams.\n * @param params a configuration object:\n * * `autobeam` automatically generates beams for the notes.\n * * `align_rests` aligns rests with nearby notes.\n */\n static FormatAndDrawTab(ctx, tabstave, stave, tabnotes, notes, autobeam, params) {\n let opts = {\n auto_beam: autobeam,\n align_rests: false,\n };\n if (typeof params === 'object') {\n opts = Object.assign(Object.assign({}, opts), params);\n }\n else if (typeof params === 'boolean') {\n opts.auto_beam = params;\n }\n // Create a `4/4` voice for `notes`.\n const notevoice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(notes);\n // Create a `4/4` voice for `tabnotes`.\n const tabvoice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(tabnotes);\n // Then create beams, if requested.\n const beams = opts.auto_beam ? Beam.applyAndGetBeams(notevoice) : [];\n // Instantiate a `Formatter` and align tab and stave notes.\n new Formatter()\n .joinVoices([notevoice]) // , { align_rests: opts.align_rests })\n .joinVoices([tabvoice])\n .formatToStave([notevoice, tabvoice], stave, { align_rests: opts.align_rests });\n // Render voices and beams to staves.\n notevoice.draw(ctx, stave);\n tabvoice.draw(ctx, tabstave);\n beams.forEach((beam) => beam.setContext(ctx).draw());\n // Draw a connector between tab and note staves.\n new StaveConnector(stave, tabstave).setContext(ctx).draw();\n }\n /**\n * Automatically set the vertical position of rests based on previous/next note positions.\n * @param tickables an array of Tickables.\n * @param alignAllNotes If `false`, only align rests that are within a group of beamed notes.\n * @param alignTuplets If `false`, ignores tuplets.\n */\n static AlignRestsToNotes(tickables, alignAllNotes, alignTuplets) {\n tickables.forEach((currTickable, index) => {\n if (isStaveNote(currTickable) && currTickable.isRest()) {\n if (currTickable.getTuplet() && !alignTuplets) {\n return;\n }\n // If activated rests not on default can be rendered as specified.\n const position = currTickable.getGlyph().position.toUpperCase();\n if (position !== 'R/4' && position !== 'B/4') {\n return;\n }\n if (alignAllNotes || currTickable.getBeam()) {\n // Align rests with previous/next notes.\n const props = currTickable.getKeyProps()[0];\n if (index === 0) {\n props.line = getRestLineForNextNoteGroup(tickables, props.line, index, false);\n }\n else if (index > 0 && index < tickables.length) {\n // If previous tickable is a rest, use its line number.\n const prevTickable = tickables[index - 1];\n if (isStaveNote(prevTickable)) {\n if (prevTickable.isRest()) {\n props.line = prevTickable.getKeyProps()[0].line;\n }\n else {\n const restLine = prevTickable.getLineForRest();\n // Get the rest line for next valid non-rest note group.\n props.line = getRestLineForNextNoteGroup(tickables, restLine, index, true);\n }\n }\n }\n currTickable.setKeyLine(0, props.line);\n }\n }\n });\n }\n /**\n * Find all the rests in each of the `voices` and align them to neighboring notes.\n *\n * @param voices\n * @param alignAllNotes If `false`, only align rests within beamed groups of notes. If `true`, align all rests.\n */\n alignRests(voices, alignAllNotes) {\n if (!voices || !voices.length) {\n throw new RuntimeError('BadArgument', 'No voices to format rests');\n }\n voices.forEach((voice) => Formatter.AlignRestsToNotes(voice.getTickables(), alignAllNotes));\n }\n /**\n * Estimate the width required to render 'voices'. This is done by:\n * 1. Sum the widths of all the tick contexts\n * 2. Estimate the padding.\n * The latter is done by calculating the padding 3 different ways, and taking the\n * greatest value:\n * 1. the padding required for unaligned notes in different voices\n * 2. the padding based on the stddev of the tickable widths\n * 3. the padding based on the stddev of the tickable durations.\n *\n * The last 2 quantities estimate a 'width entropy', where notes might need more\n * room than the proportional formatting gives them. A measure of all same duration\n * and width will need no extra padding, and all these quantities will be\n * zero in that case.\n *\n * Note: joinVoices has to be called before calling preCalculateMinTotalWidth.\n *\n * @param voices the voices that contain the notes\n * @returns the estimated width in pixels\n */\n preCalculateMinTotalWidth(voices) {\n const unalignedPadding = Tables.currentMusicFont().lookupMetric('stave.unalignedNotePadding');\n // Calculate additional padding based on 3 methods:\n // 1) unaligned beats in voices, 2) variance of width, 3) variance of durations\n let unalignedCtxCount = 0;\n let wsum = 0;\n let dsum = 0;\n const widths = [];\n const durations = [];\n // Cache results.\n if (this.hasMinTotalWidth)\n return this.minTotalWidth;\n // Create tick contexts.\n if (!voices) {\n throw new RuntimeError('BadArgument', \"'voices' required to run preCalculateMinTotalWidth\");\n }\n this.createTickContexts(voices);\n // eslint-disable-next-line\n const { list: contextList, map: contextMap } = this.tickContexts;\n this.minTotalWidth = 0;\n // Go through each tick context and calculate total width,\n // and also accumulate values used in padding hints\n contextList.forEach((tick) => {\n const context = contextMap[tick];\n context.preFormat();\n // If this TC doesn't have all the voices on it, it's unaligned.\n // so increment the unaligned padding accumulator\n if (context.getTickables().length < voices.length) {\n unalignedCtxCount += 1;\n }\n // Calculate the 'width entropy' over all the Tickables.\n context.getTickables().forEach((t) => {\n wsum += t.getMetrics().width;\n dsum += t.getTicks().value();\n widths.push(t.getMetrics().width);\n durations.push(t.getTicks().value());\n });\n const width = context.getWidth();\n this.minTotalWidth += width;\n });\n this.hasMinTotalWidth = true;\n // normalized (0-1) STDDEV of widths/durations gives us padding hints.\n const wavg = wsum > 0 ? wsum / widths.length : 1 / widths.length;\n const wvar = sumArray(widths.map((ll) => Math.pow(ll - wavg, 2)));\n const wpads = Math.pow(wvar / widths.length, 0.5) / wavg;\n const davg = dsum / durations.length;\n const dvar = sumArray(durations.map((ll) => Math.pow(ll - davg, 2)));\n const dpads = Math.pow(dvar / durations.length, 0.5) / davg;\n // Find max of 3 methods pad the width with that\n const padmax = Math.max(dpads, wpads) * contextList.length * unalignedPadding;\n const unalignedPad = unalignedPadding * unalignedCtxCount;\n return this.minTotalWidth + Math.max(unalignedPad, padmax);\n }\n /**\n * Get minimum width required to render all voices. Either `format` or\n * `preCalculateMinTotalWidth` must be called before this method.\n */\n getMinTotalWidth() {\n if (!this.hasMinTotalWidth) {\n throw new RuntimeError('NoMinTotalWidth', \"Call 'preCalculateMinTotalWidth' or 'preFormat' before calling 'getMinTotalWidth'\");\n }\n return this.minTotalWidth;\n }\n /** Calculate the resolution multiplier for `voices`. */\n static getResolutionMultiplier(voices) {\n if (!voices || !voices.length) {\n throw new RuntimeError('BadArgument', 'No voices to format');\n }\n const totalTicks = voices[0].getTotalTicks();\n const resolutionMultiplier = voices.reduce((accumulator, voice) => {\n if (!voice.getTotalTicks().equals(totalTicks)) {\n throw new RuntimeError('TickMismatch', 'Voices should have same total note duration in ticks.');\n }\n if (voice.getMode() === Voice.Mode.STRICT && !voice.isComplete()) {\n throw new RuntimeError('IncompleteVoice', 'Voice does not have enough notes.');\n }\n return Math.max(accumulator, Fraction.LCM(accumulator, voice.getResolutionMultiplier()));\n }, 1);\n return resolutionMultiplier;\n }\n /** Create a `ModifierContext` for each tick in `voices`. */\n createModifierContexts(voices) {\n if (voices.length == 0)\n return;\n const resolutionMultiplier = Formatter.getResolutionMultiplier(voices);\n // Initialize tick maps.\n const tickToContextMap = new Map();\n const contexts = [];\n // For each voice, extract notes and create a context for every\n // new tick that hasn't been seen before.\n voices.forEach((voice) => {\n // Use resolution multiplier as denominator so that no additional expansion\n // of fractional tick values is needed.\n const ticksUsed = new Fraction(0, resolutionMultiplier);\n voice.getTickables().forEach((tickable) => {\n const integerTicks = ticksUsed.numerator;\n let staveTickToContextMap = tickToContextMap.get(tickable.getStave());\n // If we have no tick context for this tick, create one.\n if (!staveTickToContextMap) {\n tickToContextMap.set(tickable.getStave(), {});\n staveTickToContextMap = tickToContextMap.get(tickable.getStave());\n }\n if (!(staveTickToContextMap ? staveTickToContextMap[integerTicks] : undefined)) {\n const newContext = new ModifierContext();\n contexts.push(newContext);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n staveTickToContextMap[integerTicks] = newContext;\n }\n // Add this tickable to the TickContext.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n tickable.addToModifierContext(staveTickToContextMap[integerTicks]);\n ticksUsed.add(tickable.getTicks());\n });\n });\n this.modifierContexts.push({\n map: tickToContextMap,\n array: contexts,\n resolutionMultiplier,\n });\n }\n /**\n * Create a `TickContext` for each tick in `voices`. Also calculate the\n * total number of ticks in voices.\n */\n createTickContexts(voices) {\n const fn = (tickable, context, voiceIndex) => context.addTickable(tickable, voiceIndex);\n const contexts = createContexts(voices, (tick) => new TickContext(tick), fn);\n this.tickContexts = contexts;\n const contextArray = this.tickContexts.array;\n contextArray.forEach((context) => {\n context.tContexts = contextArray;\n });\n return contexts;\n }\n /**\n * Get the AlignmentContexts of TickContexts that were created by createTickContexts.\n * Returns undefined if createTickContexts has not yet been run.\n */\n getTickContexts() {\n return this.tickContexts;\n }\n /**\n * This is the core formatter logic. Format voices and justify them\n * to `justifyWidth` pixels. `renderingContext` is required to justify elements\n * that can't retrieve widths without a canvas. This method sets the `x` positions\n * of all the tickables/notes in the formatter.\n */\n preFormat(justifyWidth = 0, renderingContext, voicesParam, stave) {\n // Initialize context maps.\n const contexts = this.tickContexts;\n if (!contexts) {\n throw new RuntimeError('NoTickContexts', 'preFormat requires TickContexts');\n }\n const { list: contextList, map: contextMap } = contexts;\n // Reset loss history for evaluator.\n this.lossHistory = [];\n // If voices and a stave were provided, set the Stave for each voice\n // and preFormat to apply Y values to the notes;\n if (voicesParam && stave) {\n voicesParam.forEach((voice) => voice.setStave(stave).preFormat());\n }\n // Now distribute the ticks to each tick context, and assign them their\n // own X positions.\n let x = 0;\n let shift = 0;\n this.minTotalWidth = 0;\n let totalTicks = 0;\n // Pass 1: Give each note maximum width requested by context.\n contextList.forEach((tick) => {\n const context = contextMap[tick];\n // Make sure that all tickables in this context have calculated their\n // space requirements.\n context.preFormat();\n const width = context.getWidth();\n this.minTotalWidth += width;\n const maxTicks = context.getMaxTicks().value();\n totalTicks += maxTicks;\n const metrics = context.getMetrics();\n x = x + shift + metrics.totalLeftPx;\n context.setX(x);\n // Calculate shift for the next tick.\n shift = width - metrics.totalLeftPx;\n });\n // Use softmax based on all notes across all staves. (options.globalSoftmax)\n const { globalSoftmax, softmaxFactor, maxIterations } = this.formatterOptions;\n const exp = (tick) => Math.pow(softmaxFactor, (contextMap[tick].getMaxTicks().value() / totalTicks));\n const expTicksUsed = sumArray(contextList.map(exp));\n this.minTotalWidth = x + shift;\n this.hasMinTotalWidth = true;\n // No justification needed. End formatting.\n if (justifyWidth <= 0)\n return this.evaluate();\n // Start justification. Subtract the right extra pixels of the final context because the formatter\n // justifies based on the context's X position, which is the left-most part of the note head.\n const firstContext = contextMap[contextList[0]];\n const lastContext = contextMap[contextList[contextList.length - 1]];\n // Calculate the \"distance error\" between the tick contexts. The expected distance is the spacing proportional to\n // the softmax of the ticks.\n function calculateIdealDistances(adjustedJustifyWidth) {\n const distances = contextList.map((tick, i) => {\n const context = contextMap[tick];\n const voices = context.getTickablesByVoice();\n let backTickable;\n if (i > 0) {\n const prevContext = contextMap[contextList[i - 1]];\n // Go through each tickable and search backwards for another tickable\n // in the same voice. If found, use that duration (ticks) to calculate\n // the expected distance.\n for (let j = i - 1; j >= 0; j--) {\n const backTick = contextMap[contextList[j]];\n const backVoices = backTick.getTickablesByVoice();\n // Look for matching voices between tick contexts.\n const matchingVoices = [];\n Object.keys(voices).forEach((v) => {\n if (backVoices[v]) {\n matchingVoices.push(v);\n }\n });\n if (matchingVoices.length > 0) {\n // Found matching voices, get largest duration\n let maxTicks = 0;\n let maxNegativeShiftPx = Infinity;\n let expectedDistance = 0;\n matchingVoices.forEach((v) => {\n const ticks = backVoices[v].getTicks().value();\n if (ticks > maxTicks) {\n backTickable = backVoices[v];\n maxTicks = ticks;\n }\n // Calculate the limits of the shift based on modifiers, etc.\n const thisTickable = voices[v];\n const insideLeftEdge = thisTickable.getX() -\n (thisTickable.getMetrics().modLeftPx + thisTickable.getMetrics().leftDisplacedHeadPx);\n const backMetrics = backVoices[v].getMetrics();\n const insideRightEdge = backVoices[v].getX() + backMetrics.notePx + backMetrics.modRightPx + backMetrics.rightDisplacedHeadPx;\n // Don't allow shifting if notes in the same voice can collide\n maxNegativeShiftPx = Math.min(maxNegativeShiftPx, insideLeftEdge - insideRightEdge);\n });\n // Don't shift further left than the notehead of the last context. Actually, stay at most 5% to the right\n // so that two different tick contexts don't align across staves.\n maxNegativeShiftPx = Math.min(maxNegativeShiftPx, context.getX() - (prevContext.getX() + adjustedJustifyWidth * 0.05));\n // Calculate the expected distance of the current context from the last matching tickable. The\n // distance is scaled down by the softmax for the voice.\n if (globalSoftmax) {\n const t = totalTicks;\n expectedDistance = (Math.pow(softmaxFactor, (maxTicks / t)) / expTicksUsed) * adjustedJustifyWidth;\n }\n else if (typeof backTickable !== 'undefined') {\n expectedDistance = backTickable.getVoice().softmax(maxTicks) * adjustedJustifyWidth;\n }\n return {\n expectedDistance,\n maxNegativeShiftPx,\n fromTickable: backTickable,\n };\n }\n }\n }\n return { expectedDistance: 0, fromTickablePx: 0, maxNegativeShiftPx: 0 };\n });\n return distances;\n }\n function shiftToIdealDistances(idealDistances) {\n // Distribute ticks to the contexts based on the calculated distance error.\n const centerX = adjustedJustifyWidth / 2;\n let spaceAccum = 0;\n contextList.forEach((tick, index) => {\n const context = contextMap[tick];\n if (index > 0) {\n const contextX = context.getX();\n const ideal = idealDistances[index];\n const errorPx = defined(ideal.fromTickable).getX() + ideal.expectedDistance - (contextX + spaceAccum);\n let negativeShiftPx = 0;\n if (errorPx > 0) {\n spaceAccum += errorPx;\n }\n else if (errorPx < 0) {\n negativeShiftPx = Math.min(ideal.maxNegativeShiftPx, Math.abs(errorPx));\n spaceAccum += -negativeShiftPx;\n }\n context.setX(contextX + spaceAccum);\n }\n // Move center aligned tickables to middle\n context.getCenterAlignedTickables().forEach((tickable) => {\n tickable.setCenterXShift(centerX - context.getX());\n });\n });\n return lastContext.getX() - firstContext.getX();\n }\n const adjustedJustifyWidth = justifyWidth -\n lastContext.getMetrics().notePx -\n lastContext.getMetrics().totalRightPx -\n firstContext.getMetrics().totalLeftPx;\n const musicFont = Tables.currentMusicFont();\n const configMinPadding = musicFont.lookupMetric('stave.endPaddingMin');\n const configMaxPadding = musicFont.lookupMetric('stave.endPaddingMax');\n const leftPadding = musicFont.lookupMetric('stave.padding');\n let targetWidth = adjustedJustifyWidth;\n const distances = calculateIdealDistances(targetWidth);\n let actualWidth = shiftToIdealDistances(distances);\n // Just one context. Done formatting.\n if (contextList.length === 1)\n return 0;\n const calcMinDistance = (targetWidth, distances) => {\n let mdCalc = targetWidth / 2;\n if (distances.length > 1) {\n for (let di = 1; di < distances.length; ++di) {\n mdCalc = Math.min(distances[di].expectedDistance / 2, mdCalc);\n }\n }\n return mdCalc;\n };\n const minDistance = calcMinDistance(targetWidth, distances);\n // right justify to either the configured padding, or the min distance between notes, whichever is greatest.\n // This * 2 keeps the existing formatting unless there is 'a lot' of extra whitespace, which won't break\n // existing visual regression tests.\n const paddingMaxCalc = (curTargetWidth) => {\n let lastTickablePadding = 0;\n const lastTickable = lastContext && lastContext.getMaxTickable();\n if (lastTickable) {\n const voice = lastTickable.getVoice();\n // If the number of actual ticks in the measure <> configured ticks, right-justify\n // because the softmax won't yield the correct value\n if (voice.getTicksUsed().value() > voice.getTotalTicks().value()) {\n return configMaxPadding * 2 < minDistance ? minDistance : configMaxPadding;\n }\n const tickWidth = lastTickable.getWidth();\n lastTickablePadding =\n voice.softmax(lastContext.getMaxTicks().value()) * curTargetWidth - (tickWidth + leftPadding);\n }\n return configMaxPadding * 2 < lastTickablePadding ? lastTickablePadding : configMaxPadding;\n };\n let paddingMax = paddingMaxCalc(targetWidth);\n let paddingMin = paddingMax - (configMaxPadding - configMinPadding);\n const maxX = adjustedJustifyWidth - paddingMin;\n let iterations = maxIterations;\n // Adjust justification width until the right margin is as close as possible to the calculated padding,\n // without going over\n while ((actualWidth > maxX && iterations > 0) || (actualWidth + paddingMax < maxX && iterations > 1)) {\n targetWidth -= actualWidth - maxX;\n paddingMax = paddingMaxCalc(targetWidth);\n paddingMin = paddingMax - (configMaxPadding - configMinPadding);\n actualWidth = shiftToIdealDistances(calculateIdealDistances(targetWidth));\n iterations--;\n }\n this.justifyWidth = justifyWidth;\n return this.evaluate();\n }\n /** Calculate the total cost of this formatting decision. */\n evaluate() {\n const contexts = this.tickContexts;\n const justifyWidth = this.justifyWidth;\n // Calculate available slack per tick context. This works out how much freedom\n // to move a context has in either direction, without affecting other notes.\n this.contextGaps = { total: 0, gaps: [] };\n contexts.list.forEach((tick, index) => {\n if (index === 0)\n return;\n const prevTick = contexts.list[index - 1];\n const prevContext = contexts.map[prevTick];\n const context = contexts.map[tick];\n const prevMetrics = prevContext.getMetrics();\n const currMetrics = context.getMetrics();\n // Calculate X position of right edge of previous note\n const insideRightEdge = prevContext.getX() + prevMetrics.notePx + prevMetrics.totalRightPx;\n // Calculate X position of left edge of current note\n const insideLeftEdge = context.getX() - currMetrics.totalLeftPx;\n const gap = insideLeftEdge - insideRightEdge;\n this.contextGaps.total += gap;\n this.contextGaps.gaps.push({ x1: insideRightEdge, x2: insideLeftEdge });\n // Tell the tick contexts how much they can reposition themselves.\n context.getFormatterMetrics().freedom.left = gap;\n prevContext.getFormatterMetrics().freedom.right = gap;\n });\n // Calculate mean distance in each voice for each duration type, then calculate\n // how far each note is from the mean.\n this.durationStats = {};\n const durationStats = this.durationStats;\n function updateStats(duration, space) {\n const stats = durationStats[duration];\n if (stats === undefined) {\n durationStats[duration] = { mean: space, count: 1 };\n }\n else {\n stats.count += 1;\n stats.mean = (stats.mean + space) / 2;\n }\n }\n this.voices.forEach((voice) => {\n voice.getTickables().forEach((note, i, notes) => {\n const duration = note.getTicks().clone().simplify().toString();\n const metrics = note.getMetrics();\n const formatterMetrics = note.getFormatterMetrics();\n const leftNoteEdge = note.getX() + metrics.notePx + metrics.modRightPx + metrics.rightDisplacedHeadPx;\n let space = 0;\n if (i < notes.length - 1) {\n const rightNote = notes[i + 1];\n const rightMetrics = rightNote.getMetrics();\n const rightNoteEdge = rightNote.getX() - rightMetrics.modLeftPx - rightMetrics.leftDisplacedHeadPx;\n space = rightNoteEdge - leftNoteEdge;\n formatterMetrics.space.used = rightNote.getX() - note.getX();\n rightNote.getFormatterMetrics().freedom.left = space;\n }\n else {\n space = justifyWidth - leftNoteEdge;\n formatterMetrics.space.used = justifyWidth - note.getX();\n }\n formatterMetrics.freedom.right = space;\n updateStats(duration, formatterMetrics.space.used);\n });\n });\n // Calculate how much each note deviates from the mean. Loss function is square\n // root of the sum of squared deviations.\n let totalDeviation = 0;\n this.voices.forEach((voice) => {\n voice.getTickables().forEach((note) => {\n const duration = note.getTicks().clone().simplify().toString();\n const metrics = note.getFormatterMetrics();\n metrics.space.mean = durationStats[duration].mean;\n metrics.duration = duration;\n metrics.iterations += 1;\n metrics.space.deviation = metrics.space.used - metrics.space.mean;\n totalDeviation += Math.pow(metrics.space.deviation, 2);\n });\n });\n this.totalCost = Math.sqrt(totalDeviation);\n this.lossHistory.push(this.totalCost);\n return this.totalCost;\n }\n /**\n * Run a single iteration of rejustification. At a high level, this method calculates\n * the overall \"loss\" (or cost) of this layout, and repositions tickcontexts in an\n * attempt to reduce the cost. You can call this method multiple times until it finds\n * and oscillates around a global minimum.\n * @param options[alpha] the \"learning rate\" for the formatter. It determines how much of a shift\n * the formatter should make based on its cost function.\n */\n tune(options) {\n var _a;\n const contexts = this.tickContexts;\n if (!contexts) {\n return 0;\n }\n const alpha = (_a = options === null || options === void 0 ? void 0 : options.alpha) !== null && _a !== void 0 ? _a : 0.5;\n // Move `current` tickcontext by `shift` pixels, and adjust the freedom\n // on adjacent tickcontexts.\n function move(current, shift, prev, next) {\n current.setX(current.getX() + shift);\n current.getFormatterMetrics().freedom.left += shift;\n current.getFormatterMetrics().freedom.right -= shift;\n if (prev)\n prev.getFormatterMetrics().freedom.right += shift;\n if (next)\n next.getFormatterMetrics().freedom.left -= shift;\n }\n let shift = 0;\n this.totalShift = 0;\n contexts.list.forEach((tick, index, list) => {\n const context = contexts.map[tick];\n const prevContext = index > 0 ? contexts.map[list[index - 1]] : undefined;\n const nextContext = index < list.length - 1 ? contexts.map[list[index + 1]] : undefined;\n move(context, shift, prevContext, nextContext);\n const cost = -sumArray(context.getTickables().map((t) => t.getFormatterMetrics().space.deviation));\n if (cost > 0) {\n shift = -Math.min(context.getFormatterMetrics().freedom.right, Math.abs(cost));\n }\n else if (cost < 0) {\n if (nextContext) {\n shift = Math.min(nextContext.getFormatterMetrics().freedom.right, Math.abs(cost));\n }\n else {\n shift = 0;\n }\n }\n shift *= alpha;\n this.totalShift += shift;\n });\n return this.evaluate();\n }\n /**\n * This is the top-level call for all formatting logic completed\n * after `x` *and* `y` values have been computed for the notes\n * in the voices.\n */\n postFormat() {\n this.modifierContexts.forEach((modifierContexts) => {\n modifierContexts.array.forEach((mc) => mc.postFormat());\n });\n this.tickContexts.list.forEach((tick) => {\n this.tickContexts.map[tick].postFormat();\n });\n return this;\n }\n /**\n * Take all `voices` and create `ModifierContext`s out of them. This tells\n * the formatters that the voices belong on a single stave.\n */\n joinVoices(voices) {\n this.createModifierContexts(voices);\n this.hasMinTotalWidth = false;\n return this;\n }\n /**\n * Align rests in voices, justify the contexts, and position the notes\n * so voices are aligned and ready to render onto the stave. This method\n * mutates the `x` positions of all tickables in `voices`.\n *\n * Voices are full justified to fit in `justifyWidth` pixels.\n *\n * Set `options.context` to the rendering context. Set `options.align_rests`\n * to true to enable rest alignment.\n */\n format(voices, justifyWidth, options) {\n const opts = Object.assign({ align_rests: false }, options);\n this.voices = voices;\n const softmaxFactor = this.formatterOptions.softmaxFactor;\n if (softmaxFactor) {\n this.voices.forEach((v) => v.setSoftmaxFactor(softmaxFactor));\n }\n this.alignRests(voices, opts.align_rests);\n this.createTickContexts(voices);\n this.preFormat(justifyWidth, opts.context, voices, opts.stave);\n // Only postFormat if a stave was supplied for y value formatting\n if (opts.stave)\n this.postFormat();\n return this;\n }\n // This method is just like `format` except that the `justifyWidth` is inferred from the `stave`.\n formatToStave(voices, stave, optionsParam) {\n const options = Object.assign({ context: stave.getContext() }, optionsParam);\n // eslint-disable-next-line\n const justifyWidth = stave.getNoteEndX() - stave.getNoteStartX() - Stave.defaultPadding;\n L('Formatting voices to width: ', justifyWidth);\n return this.format(voices, justifyWidth, options);\n }\n getTickContext(tick) {\n var _a;\n return (_a = this.tickContexts) === null || _a === void 0 ? void 0 : _a.map[tick];\n }\n}\n// To enable logging for this class. Set `Vex.Flow.Formatter.DEBUG` to `true`.\nFormatter.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n/**\n * ## Description\n *\n * Create a new tuplet from the specified notes. The notes must\n * be part of the same voice. If they are of different rhythmic\n * values, then options.num_notes must be set.\n *\n * @constructor\n * @param {Array.} A set of notes: staveNotes,\n * notes, etc... any class that inherits stemmableNote at some\n * point in its prototype chain.\n * @param options: object {\n *\n * num_notes: fit this many notes into...\n * notes_occupied: ...the space of this many notes\n *\n * Together, these two properties make up the tuplet ratio\n * in the form of num_notes : notes_occupied.\n * num_notes defaults to the number of notes passed in, so\n * it is important that if you omit this property, all of\n * the notes passed should be of the same note value.\n * notes_occupied defaults to 2 -- so you should almost\n * certainly pass this parameter for anything other than\n * a basic triplet.\n *\n * location:\n * default 1, which is above the notes: ┌─── 3 ───┐\n * -1 is below the notes └─── 3 ───┘\n *\n * bracketed: boolean, draw a bracket around the tuplet number\n * when true: ┌─── 3 ───┐ when false: 3\n * defaults to true if notes are not beamed, false otherwise\n *\n * ratioed: boolean\n * when true: ┌─── 7:8 ───┐, when false: ┌─── 7 ───┐\n * defaults to true if the difference between num_notes and\n * notes_occupied is greater than 1.\n *\n * y_offset: int, default 0\n * manually offset a tuplet, for instance to avoid collisions\n * with articulations, etc...\n * }\n */\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { Glyph } from './glyph';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var TupletLocation;\n(function (TupletLocation) {\n TupletLocation[TupletLocation[\"BOTTOM\"] = -1] = \"BOTTOM\";\n TupletLocation[TupletLocation[\"TOP\"] = 1] = \"TOP\";\n})(TupletLocation || (TupletLocation = {}));\nexport class Tuplet extends Element {\n constructor(notes, options = {}) {\n super();\n this.numerator_glyphs = [];\n this.denom_glyphs = [];\n if (!notes || !notes.length) {\n throw new RuntimeError('BadArguments', 'No notes provided for tuplet.');\n }\n this.options = options;\n this.notes = notes;\n this.num_notes = this.options.num_notes != undefined ? this.options.num_notes : notes.length;\n // We accept beats_occupied, but warn that it's deprecated:\n // the preferred property name is now notes_occupied.\n if (this.options.beats_occupied) {\n this.beatsOccupiedDeprecationWarning();\n }\n this.notes_occupied = this.options.notes_occupied || this.options.beats_occupied || 2;\n if (this.options.bracketed != undefined) {\n this.bracketed = this.options.bracketed;\n }\n else {\n this.bracketed = notes.some((note) => !note.hasBeam());\n }\n this.ratioed =\n this.options.ratioed != undefined ? this.options.ratioed : Math.abs(this.notes_occupied - this.num_notes) > 1;\n this.point = Tables.currentMusicFont().lookupMetric('digits.tupletPoint');\n this.y_pos = 16;\n this.x_pos = 100;\n this.width = 200;\n this.setTupletLocation(this.options.location || Tuplet.LOCATION_TOP);\n Formatter.AlignRestsToNotes(notes, true, true);\n this.resolveGlyphs();\n this.attach();\n }\n static get CATEGORY() {\n return Category.Tuplet;\n }\n static get LOCATION_TOP() {\n return TupletLocation.TOP;\n }\n static get LOCATION_BOTTOM() {\n return TupletLocation.BOTTOM;\n }\n static get NESTING_OFFSET() {\n return 15;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.tuplet;\n }\n attach() {\n for (let i = 0; i < this.notes.length; i++) {\n const note = this.notes[i];\n note.setTuplet(this);\n }\n }\n detach() {\n for (let i = 0; i < this.notes.length; i++) {\n const note = this.notes[i];\n note.resetTuplet(this);\n }\n }\n /**\n * Set whether or not the bracket is drawn.\n */\n setBracketed(bracketed) {\n this.bracketed = !!bracketed;\n return this;\n }\n /**\n * Set whether or not the ratio is shown.\n */\n setRatioed(ratioed) {\n this.ratioed = !!ratioed;\n return this;\n }\n /**\n * Set the tuplet indicator to be displayed either on the top or bottom of the stave.\n */\n setTupletLocation(location) {\n if (location !== Tuplet.LOCATION_TOP && location !== Tuplet.LOCATION_BOTTOM) {\n // eslint-disable-next-line\n console.warn(`Invalid tuplet location [${location}]. Using Tuplet.LOCATION_TOP.`);\n location = Tuplet.LOCATION_TOP;\n }\n this.location = location;\n return this;\n }\n getNotes() {\n return this.notes;\n }\n getNoteCount() {\n return this.num_notes;\n }\n beatsOccupiedDeprecationWarning() {\n // eslint-disable-next-line\n console.warn('beats_occupied has been deprecated as an option for tuplets. Please use notes_occupied instead.', 'Calls to getBeatsOccupied / setBeatsOccupied should now be routed to getNotesOccupied / setNotesOccupied.', 'The old methods will be removed in VexFlow 5.0.');\n }\n getBeatsOccupied() {\n this.beatsOccupiedDeprecationWarning();\n return this.getNotesOccupied();\n }\n setBeatsOccupied(beats) {\n this.beatsOccupiedDeprecationWarning();\n return this.setNotesOccupied(beats);\n }\n getNotesOccupied() {\n return this.notes_occupied;\n }\n setNotesOccupied(notes) {\n this.detach();\n this.notes_occupied = notes;\n this.resolveGlyphs();\n this.attach();\n }\n resolveGlyphs() {\n this.numerator_glyphs = [];\n let n = this.num_notes;\n while (n >= 1) {\n this.numerator_glyphs.unshift(new Glyph('timeSig' + (n % 10), this.point));\n n = parseInt((n / 10).toString(), 10);\n }\n this.denom_glyphs = [];\n n = this.notes_occupied;\n while (n >= 1) {\n this.denom_glyphs.unshift(new Glyph('timeSig' + (n % 10), this.point));\n n = parseInt((n / 10).toString(), 10);\n }\n }\n // determine how many tuplets are nested within this tuplet\n // on the same side (above/below), to calculate a y\n // offset for this tuplet:\n getNestedTupletCount() {\n const location = this.location;\n const first_note = this.notes[0];\n let maxTupletCount = countTuplets(first_note, location);\n let minTupletCount = countTuplets(first_note, location);\n // Count the tuplets that are on the same side (above/below)\n // as this tuplet:\n function countTuplets(note, location) {\n return note.getTupletStack().filter((tuplet) => tuplet.location === location).length;\n }\n this.notes.forEach((note) => {\n const tupletCount = countTuplets(note, location);\n maxTupletCount = tupletCount > maxTupletCount ? tupletCount : maxTupletCount;\n minTupletCount = tupletCount < minTupletCount ? tupletCount : minTupletCount;\n });\n return maxTupletCount - minTupletCount;\n }\n // determine the y position of the tuplet:\n getYPosition() {\n // offset the tuplet for any nested tuplets between\n // it and the notes:\n const nested_tuplet_y_offset = this.getNestedTupletCount() * Tuplet.NESTING_OFFSET * -this.location;\n // offset the tuplet for any manual y_offset:\n const y_offset = this.options.y_offset || 0;\n // now iterate through the notes and find our highest\n // or lowest locations, to form a base y_pos\n const first_note = this.notes[0];\n let y_pos;\n if (this.location === Tuplet.LOCATION_TOP) {\n y_pos = first_note.checkStave().getYForLine(0) - Tuplet.metrics.topModifierOffset;\n // check modifiers above note to see if they will collide with tuplet beam\n for (let i = 0; i < this.notes.length; ++i) {\n const note = this.notes[i];\n let modLines = 0;\n const mc = note.getModifierContext();\n if (mc) {\n modLines = Math.max(modLines, mc.getState().top_text_line);\n }\n const modY = note.getYForTopText(modLines) - Tuplet.metrics.noteHeadOffset;\n if (note.hasStem() || note.isRest()) {\n const top_y = note.getStemDirection() === Stem.UP\n ? note.getStemExtents().topY - Tuplet.metrics.stemOffset\n : note.getStemExtents().baseY - Tuplet.metrics.noteHeadOffset;\n y_pos = Math.min(top_y, y_pos);\n if (modLines > 0) {\n y_pos = Math.min(modY, y_pos);\n }\n }\n }\n }\n else {\n let lineCheck = Tuplet.metrics.bottomLine; // tuplet default on line 4\n // check modifiers below note to see if they will collide with tuplet beam\n this.notes.forEach((nn) => {\n const mc = nn.getModifierContext();\n if (mc) {\n lineCheck = Math.max(lineCheck, mc.getState().text_line + 1);\n }\n });\n y_pos = first_note.checkStave().getYForLine(lineCheck) + Tuplet.metrics.noteHeadOffset;\n for (let i = 0; i < this.notes.length; ++i) {\n if (this.notes[i].hasStem() || this.notes[i].isRest()) {\n const bottom_y = this.notes[i].getStemDirection() === Stem.UP\n ? this.notes[i].getStemExtents().baseY + Tuplet.metrics.noteHeadOffset\n : this.notes[i].getStemExtents().topY + Tuplet.metrics.stemOffset;\n if (bottom_y > y_pos) {\n y_pos = bottom_y;\n }\n }\n }\n }\n return y_pos + nested_tuplet_y_offset + y_offset;\n }\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n // determine x value of left bound of tuplet\n const first_note = this.notes[0];\n const last_note = this.notes[this.notes.length - 1];\n if (!this.bracketed) {\n this.x_pos = first_note.getStemX();\n this.width = last_note.getStemX() - this.x_pos;\n }\n else {\n this.x_pos = first_note.getTieLeftX() - 5;\n this.width = last_note.getTieRightX() - this.x_pos + 5;\n }\n // determine y value for tuplet\n this.y_pos = this.getYPosition();\n const addGlyphWidth = (width, glyph) => width + defined(glyph.getMetrics().width);\n // calculate total width of tuplet notation\n let width = this.numerator_glyphs.reduce(addGlyphWidth, 0);\n if (this.ratioed) {\n width = this.denom_glyphs.reduce(addGlyphWidth, width);\n width += this.point * 0.32;\n }\n const notation_center_x = this.x_pos + this.width / 2;\n const notation_start_x = notation_center_x - width / 2;\n // draw bracket if the tuplet is not beamed\n if (this.bracketed) {\n const line_width = this.width / 2 - width / 2 - 5;\n // only draw the bracket if it has positive length\n if (line_width > 0) {\n ctx.fillRect(this.x_pos, this.y_pos, line_width, 1);\n ctx.fillRect(this.x_pos + this.width / 2 + width / 2 + 5, this.y_pos, line_width, 1);\n ctx.fillRect(this.x_pos, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM ? 1 : 0), 1, this.location * 10);\n ctx.fillRect(this.x_pos + this.width, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM ? 1 : 0), 1, this.location * 10);\n }\n }\n // draw numerator glyphs\n const shiftY = Tables.currentMusicFont().lookupMetric('digits.shiftY', 0);\n let x_offset = 0;\n this.numerator_glyphs.forEach((glyph) => {\n glyph.render(ctx, notation_start_x + x_offset, this.y_pos + this.point / 3 - 2 + shiftY);\n x_offset += defined(glyph.getMetrics().width);\n });\n // display colon and denominator if the ratio is to be shown\n if (this.ratioed) {\n const colon_x = notation_start_x + x_offset + this.point * 0.16;\n const colon_radius = this.point * 0.06;\n ctx.beginPath();\n ctx.arc(colon_x, this.y_pos - this.point * 0.08, colon_radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n ctx.beginPath();\n ctx.arc(colon_x, this.y_pos + this.point * 0.12, colon_radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n x_offset += this.point * 0.32;\n this.denom_glyphs.forEach((glyph) => {\n glyph.render(ctx, notation_start_x + x_offset, this.y_pos + this.point / 3 - 2 + shiftY);\n x_offset += defined(glyph.getMetrics().width);\n });\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TupletLocation } from './tuplet';\nimport { Category, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nfunction calculateStemDirection(notes) {\n let lineSum = 0;\n notes.forEach((note) => {\n if (note.keyProps) {\n note.keyProps.forEach((keyProp) => {\n lineSum += keyProp.line - 3;\n });\n }\n });\n if (lineSum >= 0) {\n return Stem.DOWN;\n }\n return Stem.UP;\n}\nfunction getStemSlope(firstNote, lastNote) {\n const firstStemTipY = firstNote.getStemExtents().topY;\n const firstStemX = firstNote.getStemX();\n const lastStemTipY = lastNote.getStemExtents().topY;\n const lastStemX = lastNote.getStemX();\n return (lastStemTipY - firstStemTipY) / (lastStemX - firstStemX);\n}\nexport const BEAM_LEFT = 'L';\nexport const BEAM_RIGHT = 'R';\nexport const BEAM_BOTH = 'B';\n/** `Beams` span over a set of `StemmableNotes`. */\nexport class Beam extends Element {\n constructor(notes, auto_stem = false) {\n super();\n this.slope = 0;\n this.y_shift = 0;\n /**\n * Overrides to default beam directions for secondary-level beams that do not\n * connect to any other note. See further explanation at\n * `setPartialBeamSideAt`\n */\n this.forcedPartialDirections = {};\n if (!notes || notes.length === 0) {\n throw new RuntimeError('BadArguments', 'No notes provided for beam.');\n }\n if (notes.length === 1) {\n throw new RuntimeError('BadArguments', 'Too few notes for beam.');\n }\n // Validate beam line, direction and ticks.\n this.ticks = notes[0].getIntrinsicTicks();\n if (this.ticks >= Tables.durationToTicks('4')) {\n throw new RuntimeError('BadArguments', 'Beams can only be applied to notes shorter than a quarter note.');\n }\n let i; // shared iterator\n let note;\n this.stem_direction = Stem.UP;\n for (i = 0; i < notes.length; ++i) {\n note = notes[i];\n if (note.hasStem()) {\n this.stem_direction = note.getStemDirection();\n break;\n }\n }\n let stem_direction = this.stem_direction;\n // Figure out optimal stem direction based on given notes\n if (auto_stem && isStaveNote(notes[0])) {\n stem_direction = calculateStemDirection(notes);\n }\n else if (auto_stem && isTabNote(notes[0])) {\n // Auto Stem TabNotes\n const stem_weight = notes.reduce((memo, note) => memo + note.getStemDirection(), 0);\n stem_direction = stem_weight > -1 ? Stem.UP : Stem.DOWN;\n }\n // Apply stem directions and attach beam to notes\n for (i = 0; i < notes.length; ++i) {\n note = notes[i];\n if (auto_stem) {\n note.setStemDirection(stem_direction);\n this.stem_direction = stem_direction;\n }\n note.setBeam(this);\n }\n this.postFormatted = false;\n this.notes = notes;\n this.beam_count = this.getBeamCount();\n this.break_on_indices = [];\n this.render_options = {\n beam_width: 5,\n max_slope: 0.25,\n min_slope: -0.25,\n slope_iterations: 20,\n slope_cost: 100,\n show_stemlets: false,\n stemlet_extension: 7,\n partial_beam_length: 10,\n flat_beams: false,\n min_flat_beam_offset: 15,\n };\n }\n static get CATEGORY() {\n return Category.Beam;\n }\n /** Get the direction of the beam */\n getStemDirection() {\n return this.stem_direction;\n }\n /**\n * Get the default beam groups for a provided time signature.\n * Attempt to guess if the time signature is not found in table.\n * Currently this is fairly naive.\n */\n static getDefaultBeamGroups(time_sig) {\n if (!time_sig || time_sig === 'c') {\n time_sig = '4/4';\n }\n const defaults = {\n '1/2': ['1/2'],\n '2/2': ['1/2'],\n '3/2': ['1/2'],\n '4/2': ['1/2'],\n '1/4': ['1/4'],\n '2/4': ['1/4'],\n '3/4': ['1/4'],\n '4/4': ['1/4'],\n '1/8': ['1/8'],\n '2/8': ['2/8'],\n '3/8': ['3/8'],\n '4/8': ['2/8'],\n '1/16': ['1/16'],\n '2/16': ['2/16'],\n '3/16': ['3/16'],\n '4/16': ['2/16'],\n };\n const groups = defaults[time_sig];\n if (groups === undefined) {\n // If no beam groups found, naively determine\n // the beam groupings from the time signature\n const beatTotal = parseInt(time_sig.split('/')[0], 10);\n const beatValue = parseInt(time_sig.split('/')[1], 10);\n const tripleMeter = beatTotal % 3 === 0;\n if (tripleMeter) {\n return [new Fraction(3, beatValue)];\n }\n else if (beatValue > 4) {\n return [new Fraction(2, beatValue)];\n }\n else if (beatValue <= 4) {\n return [new Fraction(1, beatValue)];\n }\n }\n else {\n return groups.map((group) => new Fraction().parse(group));\n }\n return [new Fraction(1, 4)];\n }\n /**\n * A helper function to automatically build basic beams for a voice. For more\n * complex auto-beaming use `Beam.generateBeams()`.\n * @param voice the voice to generate the beams for\n * @param stem_direction a stem direction to apply to the entire voice\n * @param groups an array of `Fraction` representing beat groupings for the beam\n */\n static applyAndGetBeams(voice, stem_direction, groups) {\n return Beam.generateBeams(voice.getTickables(), { groups, stem_direction });\n }\n /**\n * A helper function to autimatically build beams for a voice with\n * configuration options.\n *\n * Example configuration object:\n *\n * ```\n * config = {\n * groups: [new Vex.Flow.Fraction(2, 8)],\n * stem_direction: -1,\n * beam_rests: true,\n * beam_middle_only: true,\n * show_stemlets: false\n * };\n * ```\n * @param notes an array of notes to create the beams for\n * @param config the configuration object\n * @param config.stem_direction set to apply the same direction to all notes\n * @param config.beam_rests set to `true` to include rests in the beams\n * @param config.beam_middle_only set to `true` to only beam rests in the middle of the beat\n * @param config.show_stemlets set to `true` to draw stemlets for rests\n * @param config.maintain_stem_directions set to `true` to not apply new stem directions\n * @param config.groups array of `Fractions` that represent the beat structure to beam the notes\n *\n */\n static generateBeams(notes, config = {}) {\n if (!config.groups || !config.groups.length) {\n config.groups = [new Fraction(2, 8)];\n }\n // Convert beam groups to tick amounts\n const tickGroups = config.groups.map((group) => {\n if (!group.multiply) {\n throw new RuntimeError('InvalidBeamGroups', 'The beam groups must be an array of Vex.Flow.Fractions');\n }\n return group.clone().multiply(Tables.RESOLUTION, 1);\n });\n const unprocessedNotes = notes;\n let currentTickGroup = 0;\n let noteGroups = [];\n let currentGroup = [];\n function getTotalTicks(vf_notes) {\n return vf_notes.reduce((memo, note) => note.getTicks().clone().add(memo), new Fraction(0, 1));\n }\n function nextTickGroup() {\n if (tickGroups.length - 1 > currentTickGroup) {\n currentTickGroup += 1;\n }\n else {\n currentTickGroup = 0;\n }\n }\n function createGroups() {\n let nextGroup = [];\n // number of ticks in current group\n let currentGroupTotalTicks = new Fraction(0, 1);\n unprocessedNotes.forEach((unprocessedNote) => {\n nextGroup = [];\n if (unprocessedNote.shouldIgnoreTicks()) {\n noteGroups.push(currentGroup);\n currentGroup = nextGroup;\n return; // Ignore untickables (like bar notes)\n }\n currentGroup.push(unprocessedNote);\n const ticksPerGroup = tickGroups[currentTickGroup].clone();\n const totalTicks = getTotalTicks(currentGroup).add(currentGroupTotalTicks);\n // Double the amount of ticks in a group, if it's an unbeamable tuplet\n const unbeamable = Tables.durationToNumber(unprocessedNote.getDuration()) < 8;\n if (unbeamable && unprocessedNote.getTuplet()) {\n ticksPerGroup.numerator *= 2;\n }\n // If the note that was just added overflows the group tick total\n if (totalTicks.greaterThan(ticksPerGroup)) {\n // If the overflow note can be beamed, start the next group\n // with it. Unbeamable notes leave the group overflowed.\n if (!unbeamable) {\n const note = currentGroup.pop();\n if (note)\n nextGroup.push(note);\n }\n noteGroups.push(currentGroup);\n // We have overflown, so we're going to next tick group. As we might have\n // overflown by more than 1 group, we need to go forward as many times as\n // needed, decreasing currentGroupTotalTicks by as many ticks as there are\n // in current groups as we go forward.\n do {\n currentGroupTotalTicks = totalTicks.subtract(tickGroups[currentTickGroup]);\n nextTickGroup();\n } while (currentGroupTotalTicks.greaterThanEquals(tickGroups[currentTickGroup]));\n currentGroup = nextGroup;\n }\n else if (totalTicks.equals(ticksPerGroup)) {\n noteGroups.push(currentGroup);\n currentGroupTotalTicks = new Fraction(0, 1);\n currentGroup = nextGroup;\n nextTickGroup();\n }\n });\n // Adds any remainder notes beam\n if (currentGroup.length > 0) {\n noteGroups.push(currentGroup);\n }\n }\n function getBeamGroups() {\n return noteGroups.filter((group) => {\n if (group.length > 1) {\n let beamable = true;\n group.forEach((note) => {\n if (note.getIntrinsicTicks() >= Tables.durationToTicks('4')) {\n beamable = false;\n }\n });\n return beamable;\n }\n return false;\n });\n }\n // Splits up groups by Rest\n function sanitizeGroups() {\n const sanitizedGroups = [];\n noteGroups.forEach((group) => {\n let tempGroup = [];\n group.forEach((note, index, group) => {\n const isFirstOrLast = index === 0 || index === group.length - 1;\n const prevNote = group[index - 1];\n const breaksOnEachRest = !config.beam_rests && note.isRest();\n const breaksOnFirstOrLastRest = config.beam_rests && config.beam_middle_only && note.isRest() && isFirstOrLast;\n let breakOnStemChange = false;\n if (config.maintain_stem_directions && prevNote && !note.isRest() && !prevNote.isRest()) {\n const prevDirection = prevNote.getStemDirection();\n const currentDirection = note.getStemDirection();\n breakOnStemChange = currentDirection !== prevDirection;\n }\n const isUnbeamableDuration = parseInt(note.getDuration(), 10) < 8;\n // Determine if the group should be broken at this note\n const shouldBreak = breaksOnEachRest || breaksOnFirstOrLastRest || breakOnStemChange || isUnbeamableDuration;\n if (shouldBreak) {\n // Add current group\n if (tempGroup.length > 0) {\n sanitizedGroups.push(tempGroup);\n }\n // Start a new group. Include the current note if the group\n // was broken up by stem direction, as that note needs to start\n // the next group of notes\n tempGroup = breakOnStemChange ? [note] : [];\n }\n else {\n // Add note to group\n tempGroup.push(note);\n }\n });\n // If there is a remaining group, add it as well\n if (tempGroup.length > 0) {\n sanitizedGroups.push(tempGroup);\n }\n });\n noteGroups = sanitizedGroups;\n }\n function formatStems() {\n noteGroups.forEach((group) => {\n let stemDirection;\n if (config.maintain_stem_directions) {\n const note = findFirstNote(group);\n stemDirection = note ? note.getStemDirection() : Stem.UP;\n }\n else {\n if (config.stem_direction) {\n stemDirection = config.stem_direction;\n }\n else {\n stemDirection = calculateStemDirection(group);\n }\n }\n applyStemDirection(group, stemDirection);\n });\n }\n function findFirstNote(group) {\n for (let i = 0; i < group.length; i++) {\n const note = group[i];\n if (!note.isRest()) {\n return note;\n }\n }\n return false;\n }\n function applyStemDirection(group, direction) {\n group.forEach((note) => {\n note.setStemDirection(direction);\n });\n }\n // Get all of the tuplets in all of the note groups\n function getTuplets() {\n const uniqueTuplets = [];\n // Go through all of the note groups and inspect for tuplets\n noteGroups.forEach((group) => {\n let tuplet;\n group.forEach((note) => {\n const noteTuplet = note.getTuplet();\n if (noteTuplet && tuplet !== noteTuplet) {\n tuplet = noteTuplet;\n uniqueTuplets.push(tuplet);\n }\n });\n });\n return uniqueTuplets;\n }\n // Using closures to store the variables throughout the various functions\n // IMO Keeps it this process lot cleaner - but not super consistent with\n // the rest of the API's style - Silverwolf90 (Cyril)\n createGroups();\n sanitizeGroups();\n formatStems();\n // Get the notes to be beamed\n const beamedNoteGroups = getBeamGroups();\n // Get the tuplets in order to format them accurately\n const allTuplets = getTuplets();\n // Create a Vex.Flow.Beam from each group of notes to be beamed\n const beams = [];\n beamedNoteGroups.forEach((group) => {\n const beam = new Beam(group);\n if (config.show_stemlets) {\n beam.render_options.show_stemlets = true;\n }\n if (config.secondary_breaks) {\n beam.render_options.secondary_break_ticks = Tables.durationToTicks(config.secondary_breaks);\n }\n if (config.flat_beams === true) {\n beam.render_options.flat_beams = true;\n beam.render_options.flat_beam_offset = config.flat_beam_offset;\n }\n beams.push(beam);\n });\n // Reformat tuplets\n allTuplets.forEach((tuplet) => {\n // Set the tuplet location based on the stem direction\n const direction = tuplet.notes[0].stem_direction === Stem.DOWN ? TupletLocation.BOTTOM : TupletLocation.TOP;\n tuplet.setTupletLocation(direction);\n // If any of the notes in the tuplet are not beamed, draw a bracket.\n let bracketed = false;\n for (let i = 0; i < tuplet.notes.length; i++) {\n const note = tuplet.notes[i];\n if (!note.hasBeam()) {\n bracketed = true;\n break;\n }\n }\n tuplet.setBracketed(bracketed);\n });\n return beams;\n }\n /** Get the notes in this beam. */\n getNotes() {\n return this.notes;\n }\n /** Get the max number of beams in the set of notes. */\n getBeamCount() {\n const beamCounts = this.notes.map((note) => note.getGlyph().beam_count);\n const maxBeamCount = beamCounts.reduce((max, beamCount) => (beamCount > max ? beamCount : max));\n return maxBeamCount;\n }\n /** Set which note `indices` to break the secondary beam at. */\n breakSecondaryAt(indices) {\n this.break_on_indices = indices;\n return this;\n }\n /**\n * Forces the direction of a partial beam (a secondary-level beam that exists\n * on one note only of the beam group). This is useful in rhythms such as 6/8\n * eighth-sixteenth-eighth-sixteenth, where the direction of the beam on the\n * first sixteenth note can help imply whether the rhythm is to be felt as\n * three groups of eighth notes (typical) or as two groups of three-sixteenths\n * (less common):\n * ```\n * ┌───┬──┬──┐ ┌──┬──┬──┐\n * │ ├─ │ ─┤ vs │ ─┤ │ ─┤\n * │ │ │ │ │ │ │ │\n * ```\n */\n setPartialBeamSideAt(noteIndex, side) {\n this.forcedPartialDirections[noteIndex] = side;\n return this;\n }\n /**\n * Restore the default direction of a partial beam (a secondary-level beam\n * that does not connect to any other notes).\n */\n unsetPartialBeamSideAt(noteIndex) {\n delete this.forcedPartialDirections[noteIndex];\n return this;\n }\n /** Return the y coordinate for linear function. */\n getSlopeY(x, first_x_px, first_y_px, slope) {\n return first_y_px + (x - first_x_px) * slope;\n }\n /** Calculate the best possible slope for the provided notes. */\n calculateSlope() {\n const { notes, stem_direction: stemDirection, render_options: { max_slope, min_slope, slope_iterations, slope_cost }, } = this;\n const firstNote = notes[0];\n const initialSlope = getStemSlope(firstNote, notes[notes.length - 1]);\n const increment = (max_slope - min_slope) / slope_iterations;\n let minCost = Number.MAX_VALUE;\n let bestSlope = 0;\n let yShift = 0;\n // iterate through slope values to find best weighted fit\n for (let slope = min_slope; slope <= max_slope; slope += increment) {\n let totalStemExtension = 0;\n let yShiftTemp = 0;\n // iterate through notes, calculating y shift and stem extension\n for (let i = 1; i < notes.length; ++i) {\n const note = notes[i];\n if (note.hasStem() || note.isRest()) {\n const adjustedStemTipY = this.getSlopeY(note.getStemX(), firstNote.getStemX(), firstNote.getStemExtents().topY, slope) + yShiftTemp;\n const stemTipY = note.getStemExtents().topY;\n // beam needs to be shifted up to accommodate note\n if (stemTipY * stemDirection < adjustedStemTipY * stemDirection) {\n const diff = Math.abs(stemTipY - adjustedStemTipY);\n yShiftTemp += diff * -stemDirection;\n totalStemExtension += diff * i;\n }\n else {\n // beam overshoots note, account for the difference\n totalStemExtension += (stemTipY - adjustedStemTipY) * stemDirection;\n }\n }\n }\n // most engraving books suggest aiming for a slope about half the angle of the\n // difference between the first and last notes' stem length;\n const idealSlope = initialSlope / 2;\n const distanceFromIdeal = Math.abs(idealSlope - slope);\n // This tries to align most beams to something closer to the idealSlope, but\n // doesn't go crazy. To disable, set this.render_options.slope_cost = 0\n const cost = slope_cost * distanceFromIdeal + Math.abs(totalStemExtension);\n // update state when a more ideal slope is found\n if (cost < minCost) {\n minCost = cost;\n bestSlope = slope;\n yShift = yShiftTemp;\n }\n }\n this.slope = bestSlope;\n this.y_shift = yShift;\n }\n /** Calculate a slope and y-shift for flat beams. */\n calculateFlatSlope() {\n const { notes, stem_direction, render_options: { beam_width, min_flat_beam_offset, flat_beam_offset }, } = this;\n // If a flat beam offset has not yet been supplied or calculated,\n // generate one based on the notes in this particular note group\n let total = 0;\n let extremeY = 0; // Store the highest or lowest note here\n let extremeBeamCount = 0; // The beam count of the extreme note\n let currentExtreme = 0;\n for (let i = 0; i < notes.length; i++) {\n // Total up all of the offsets so we can average them out later\n const note = notes[i];\n const stemTipY = note.getStemExtents().topY;\n total += stemTipY;\n // Store the highest (stems-up) or lowest (stems-down) note so the\n // offset can be adjusted in case the average isn't enough\n if (stem_direction === Stem.DOWN && currentExtreme < stemTipY) {\n currentExtreme = stemTipY;\n extremeY = Math.max(...note.getYs());\n extremeBeamCount = note.getBeamCount();\n }\n else if (stem_direction === Stem.UP && (currentExtreme === 0 || currentExtreme > stemTipY)) {\n currentExtreme = stemTipY;\n extremeY = Math.min(...note.getYs());\n extremeBeamCount = note.getBeamCount();\n }\n }\n // Average the offsets to try and come up with a reasonable one that\n // works for all of the notes in the beam group.\n let offset = total / notes.length;\n // In case the average isn't long enough, add or subtract some more\n // based on the highest or lowest note (again, based on the stem\n // direction). This also takes into account the added height due to\n // the width of the beams.\n const beamWidth = beam_width * 1.5;\n const extremeTest = min_flat_beam_offset + extremeBeamCount * beamWidth;\n const newOffset = extremeY + extremeTest * -stem_direction;\n if (stem_direction === Stem.DOWN && offset < newOffset) {\n offset = extremeY + extremeTest;\n }\n else if (stem_direction === Stem.UP && offset > newOffset) {\n offset = extremeY - extremeTest;\n }\n if (!flat_beam_offset) {\n // Set the offset for the group based on the calculations above.\n this.render_options.flat_beam_offset = offset;\n }\n else if (stem_direction === Stem.DOWN && offset > flat_beam_offset) {\n this.render_options.flat_beam_offset = offset;\n }\n else if (stem_direction === Stem.UP && offset < flat_beam_offset) {\n this.render_options.flat_beam_offset = offset;\n }\n // for flat beams, the slope and y_shift are simply 0\n this.slope = 0;\n this.y_shift = 0;\n }\n /** Return the Beam y offset. */\n getBeamYToDraw() {\n const firstNote = this.notes[0];\n const firstStemTipY = firstNote.getStemExtents().topY;\n let beamY = firstStemTipY;\n // For flat beams, set the first and last Y to the offset, rather than\n // using the note's stem extents.\n if (this.render_options.flat_beams && this.render_options.flat_beam_offset) {\n beamY = this.render_options.flat_beam_offset;\n }\n return beamY;\n }\n /**\n * Create new stems for the notes in the beam, so that each stem\n * extends into the beams.\n */\n applyStemExtensions() {\n const { notes, slope, y_shift, stem_direction, beam_count, render_options: { show_stemlets, stemlet_extension, beam_width }, } = this;\n const firstNote = notes[0];\n const firstStemTipY = this.getBeamYToDraw();\n const firstStemX = firstNote.getStemX();\n for (let i = 0; i < notes.length; ++i) {\n const note = notes[i];\n const stem = note.getStem();\n if (stem) {\n const stemX = note.getStemX();\n const { topY: stemTipY } = note.getStemExtents();\n const beamedStemTipY = this.getSlopeY(stemX, firstStemX, firstStemTipY, slope) + y_shift;\n const preBeamExtension = stem.getExtension();\n const beamExtension = stem_direction === Stem.UP ? stemTipY - beamedStemTipY : beamedStemTipY - stemTipY;\n stem.setExtension(preBeamExtension + beamExtension);\n stem.adjustHeightForBeam();\n if (note.isRest() && show_stemlets) {\n const beamWidth = beam_width;\n const totalBeamWidth = (beam_count - 1) * beamWidth * 1.5 + beamWidth;\n stem.setVisibility(true).setStemlet(true, totalBeamWidth + stemlet_extension);\n }\n }\n }\n }\n /** Return upper level beam direction. */\n lookupBeamDirection(duration, prev_tick, tick, next_tick, noteIndex) {\n if (duration === '4') {\n return BEAM_LEFT;\n }\n const forcedBeamDirection = this.forcedPartialDirections[noteIndex];\n if (forcedBeamDirection)\n return forcedBeamDirection;\n const lookup_duration = `${Tables.durationToNumber(duration) / 2}`;\n const prev_note_gets_beam = prev_tick < Tables.durationToTicks(lookup_duration);\n const next_note_gets_beam = next_tick < Tables.durationToTicks(lookup_duration);\n const note_gets_beam = tick < Tables.durationToTicks(lookup_duration);\n if (prev_note_gets_beam && next_note_gets_beam && note_gets_beam) {\n return BEAM_BOTH;\n }\n else if (prev_note_gets_beam && !next_note_gets_beam && note_gets_beam) {\n return BEAM_LEFT;\n }\n else if (!prev_note_gets_beam && next_note_gets_beam && note_gets_beam) {\n return BEAM_RIGHT;\n }\n return this.lookupBeamDirection(lookup_duration, prev_tick, tick, next_tick, noteIndex);\n }\n /** Get the x coordinates for the beam lines of specific `duration`. */\n getBeamLines(duration) {\n const tick_of_duration = Tables.durationToTicks(duration);\n let beam_started = false;\n const beam_lines = [];\n let current_beam = undefined;\n const partial_beam_length = this.render_options.partial_beam_length;\n let previous_should_break = false;\n let tick_tally = 0;\n for (let i = 0; i < this.notes.length; ++i) {\n const note = this.notes[i];\n // See if we need to break secondary beams on this note.\n const ticks = note.getTicks().value();\n tick_tally += ticks;\n let should_break = false;\n // 8th note beams are always drawn.\n if (parseInt(duration, 10) >= 8) {\n // First, check to see if any indices were set up through breakSecondaryAt()\n should_break = this.break_on_indices.indexOf(i) !== -1;\n // If the secondary breaks were auto-configured in the render options,\n // handle that as well.\n if (this.render_options.secondary_break_ticks && tick_tally >= this.render_options.secondary_break_ticks) {\n tick_tally = 0;\n should_break = true;\n }\n }\n const note_gets_beam = note.getIntrinsicTicks() < tick_of_duration;\n const stem_x = note.getStemX() - Stem.WIDTH / 2;\n // Check to see if the next note in the group will get a beam at this\n // level. This will help to inform the partial beam logic below.\n const prev_note = this.notes[i - 1];\n const next_note = this.notes[i + 1];\n const next_note_gets_beam = next_note && next_note.getIntrinsicTicks() < tick_of_duration;\n const prev_note_gets_beam = prev_note && prev_note.getIntrinsicTicks() < tick_of_duration;\n const beam_alone = prev_note && next_note && note_gets_beam && !prev_note_gets_beam && !next_note_gets_beam;\n // const beam_alone = note_gets_beam && !prev_note_gets_beam && !next_note_gets_beam;\n if (note_gets_beam) {\n // This note gets a beam at the current level\n if (beam_started) {\n // We're currently in the middle of a beam. Just continue it on to\n // the stem X of the current note.\n current_beam = beam_lines[beam_lines.length - 1];\n current_beam.end = stem_x;\n // If a secondary beam break is set up, end the beam right now.\n if (should_break) {\n beam_started = false;\n if (next_note && !next_note_gets_beam && current_beam.end === undefined) {\n // This note gets a beam,.but the next one does not. This means\n // we need a partial pointing right.\n current_beam.end = current_beam.start - partial_beam_length;\n }\n }\n }\n else {\n // No beam started yet. Start a new one.\n current_beam = { start: stem_x, end: undefined };\n beam_started = true;\n if (beam_alone) {\n // previous and next beam exists and does not get a beam but current gets it.\n const prev_tick = prev_note.getIntrinsicTicks();\n const next_tick = next_note.getIntrinsicTicks();\n const tick = note.getIntrinsicTicks();\n const beam_direction = this.lookupBeamDirection(duration, prev_tick, tick, next_tick, i);\n if ([BEAM_LEFT, BEAM_BOTH].includes(beam_direction)) {\n current_beam.end = current_beam.start - partial_beam_length;\n }\n else {\n current_beam.end = current_beam.start + partial_beam_length;\n }\n }\n else if (!next_note_gets_beam) {\n // The next note doesn't get a beam. Draw a partial.\n if ((previous_should_break || i === 0) && next_note) {\n // This is the first note (but not the last one), or it is\n // following a secondary break. Draw a partial to the right.\n current_beam.end = current_beam.start + partial_beam_length;\n }\n else {\n // By default, draw a partial to the left.\n current_beam.end = current_beam.start - partial_beam_length;\n }\n }\n else if (should_break) {\n // This note should have a secondary break after it. Even though\n // we just started a beam, it needs to end immediately.\n current_beam.end = current_beam.start - partial_beam_length;\n beam_started = false;\n }\n beam_lines.push(current_beam);\n }\n }\n else {\n // The current note does not get a beam.\n beam_started = false;\n }\n // Store the secondary break flag to inform the partial beam logic in\n // the next iteration of the loop.\n previous_should_break = should_break;\n }\n // Add a partial beam pointing left if this is the last note in the group\n const last_beam = beam_lines[beam_lines.length - 1];\n if (last_beam && last_beam.end === undefined) {\n last_beam.end = last_beam.start - partial_beam_length;\n }\n return beam_lines;\n }\n /** Render the stems for each note. */\n drawStems(ctx) {\n this.notes.forEach((note) => {\n const stem = note.getStem();\n if (stem) {\n const stem_x = note.getStemX();\n stem.setNoteHeadXBounds(stem_x, stem_x);\n stem.setContext(ctx).draw();\n }\n }, this);\n }\n // Render the beam lines\n drawBeamLines(ctx) {\n const valid_beam_durations = ['4', '8', '16', '32', '64'];\n const firstNote = this.notes[0];\n let beamY = this.getBeamYToDraw();\n const firstStemX = firstNote.getStemX();\n const beamThickness = this.render_options.beam_width * this.stem_direction;\n // Draw the beams.\n for (let i = 0; i < valid_beam_durations.length; ++i) {\n const duration = valid_beam_durations[i];\n const beamLines = this.getBeamLines(duration);\n for (let j = 0; j < beamLines.length; ++j) {\n const beam_line = beamLines[j];\n const startBeamX = beam_line.start;\n const startBeamY = this.getSlopeY(startBeamX, firstStemX, beamY, this.slope);\n const lastBeamX = beam_line.end;\n if (lastBeamX) {\n const lastBeamY = this.getSlopeY(lastBeamX, firstStemX, beamY, this.slope);\n ctx.openGroup('beam', this.getAttribute('id'));\n ctx.beginPath();\n ctx.moveTo(startBeamX, startBeamY);\n ctx.lineTo(startBeamX, startBeamY + beamThickness);\n ctx.lineTo(lastBeamX + 1, lastBeamY + beamThickness);\n ctx.lineTo(lastBeamX + 1, lastBeamY);\n ctx.closePath();\n ctx.fill();\n ctx.closeGroup();\n }\n else {\n throw new RuntimeError('NoLastBeamX', 'lastBeamX undefined.');\n }\n }\n beamY += beamThickness * 1.5;\n }\n }\n /** Pre-format the beam. */\n preFormat() {\n return this;\n }\n /**\n * Post-format the beam. This can only be called after\n * the notes in the beam have both `x` and `y` values. ie: they've\n * been formatted and have staves.\n */\n postFormat() {\n if (this.postFormatted)\n return;\n // Calculate a smart slope if we're not forcing the beams to be flat.\n if (isTabNote(this.notes[0]) || this.render_options.flat_beams) {\n this.calculateFlatSlope();\n }\n else {\n this.calculateSlope();\n }\n this.applyStemExtensions();\n this.postFormatted = true;\n }\n /** Render the beam to the canvas context */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n if (this.unbeamable)\n return;\n if (!this.postFormatted) {\n this.postFormat();\n }\n this.drawStems(ctx);\n this.applyStyle();\n this.drawBeamLines(ctx);\n this.restoreStyle();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\n// MIT License\nimport { Clef } from './clef';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\n/** ClefNote implements clef annotations in measures. */\nexport class ClefNote extends Note {\n constructor(type, size, annotation) {\n super({ duration: 'b' });\n this.type = type;\n this.clef_obj = new Clef(type, size, annotation);\n this.clef = this.clef_obj.clef;\n this.glyph = new Glyph(this.clef.code, this.clef.point);\n this.setWidth(this.glyph.getMetrics().width);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.ClefNote;\n }\n /** Set clef type, size and annotation. */\n setType(type, size, annotation) {\n this.type = type;\n this.clef_obj = new Clef(type, size, annotation);\n this.clef = this.clef_obj.clef;\n this.glyph = new Glyph(this.clef.code, this.clef.point);\n this.setWidth(this.glyph.getMetrics().width);\n return this;\n }\n /** Get associated clef. */\n getClef() {\n return this.clef;\n }\n /** Set associated context. */\n setContext(context) {\n super.setContext(context);\n this.glyph.setContext(this.getContext());\n return this;\n }\n /** Get bounding box. */\n getBoundingBox() {\n return super.getBoundingBox();\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n /** Render clef note. */\n draw() {\n var _a;\n const stave = this.checkStave();\n if (!this.glyph.getContext()) {\n this.glyph.setContext(this.getContext());\n }\n this.setRendered();\n const abs_x = this.getAbsoluteX();\n this.glyph.setStave(stave);\n this.glyph.setYShift(stave.getYForLine((_a = this.clef.line) !== null && _a !== void 0 ? _a : 0) - stave.getYForGlyphs());\n this.glyph.renderToStave(abs_x);\n // If the Vex.Flow.Clef has an annotation, such as 8va, draw it.\n if (this.clef_obj.annotation !== undefined) {\n const attachment = new Glyph(this.clef_obj.annotation.code, this.clef_obj.annotation.point);\n if (!attachment.getContext()) {\n attachment.setContext(this.getContext());\n }\n attachment.setStave(stave);\n attachment.setYShift(stave.getYForLine(this.clef_obj.annotation.line) - stave.getYForGlyphs());\n attachment.setXShift(this.clef_obj.annotation.x_shift);\n attachment.renderToStave(abs_x);\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This file implements the `Crescendo` object which draws crescendos and\n// decrescendo dynamics markings. A `Crescendo` is initialized with a\n// duration and formatted as part of a `Voice` like any other `Note`\n// type in VexFlow. This object would most likely be formatted in a Voice\n// with `TextNotes` - which are used to represent other dynamics markings.\nimport { Note } from './note';\nimport { TickContext } from './tickcontext';\nimport { Category } from './typeguard';\nimport { log } from './util';\n// To enable logging for this class. Set `Vex.Flow.Crescendo.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (Crescendo.DEBUG)\n log('Vex.Flow.Crescendo', args);\n}\n// Private helper to draw the hairpin\nfunction renderHairpin(ctx, params) {\n const begin_x = params.begin_x;\n const end_x = params.end_x;\n const y = params.y;\n const half_height = params.height / 2;\n ctx.beginPath();\n if (params.reverse) {\n ctx.moveTo(begin_x, y - half_height);\n ctx.lineTo(end_x, y);\n ctx.lineTo(begin_x, y + half_height);\n }\n else {\n ctx.moveTo(end_x, y - half_height);\n ctx.lineTo(begin_x, y);\n ctx.lineTo(end_x, y + half_height);\n }\n ctx.stroke();\n ctx.closePath();\n}\nexport class Crescendo extends Note {\n // Initialize the crescendo's properties\n constructor(noteStruct) {\n super(noteStruct);\n this.options = {\n // Extensions to the length of the crescendo on either side\n extend_left: 0,\n extend_right: 0,\n // Vertical shift\n y_shift: 0,\n };\n // Whether the object is a decrescendo\n this.decrescendo = false;\n // The staff line to be placed on\n this.line = noteStruct.line || 0;\n // The height at the open end of the cresc/decresc\n this.height = 15;\n }\n /** Crescendo category string. */\n static get CATEGORY() {\n return Category.Crescendo;\n }\n // Set the line to center the element on\n setLine(line) {\n this.line = line;\n return this;\n }\n // Set the full height at the open end\n setHeight(height) {\n this.height = height;\n return this;\n }\n // Set whether the sign should be a descresendo by passing a bool\n // to `decresc`\n setDecrescendo(decresc) {\n this.decrescendo = decresc;\n return this;\n }\n // Preformat the note\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n // Render the Crescendo object onto the canvas\n draw() {\n const ctx = this.checkContext();\n const stave = this.checkStave();\n this.setRendered();\n const tick_context = this.getTickContext();\n const next_context = TickContext.getNextContext(tick_context);\n const begin_x = this.getAbsoluteX();\n const end_x = next_context ? next_context.getX() : stave.getX() + stave.getWidth();\n const y = stave.getYForLine(this.line + -3) + 1;\n L('Drawing ', this.decrescendo ? 'decrescendo ' : 'crescendo ', this.height, 'x', begin_x - end_x);\n renderHairpin(ctx, {\n begin_x: begin_x - this.options.extend_left,\n end_x: end_x + this.options.extend_right,\n y: y + this.options.y_shift,\n height: this.height,\n reverse: this.decrescendo,\n });\n }\n}\nCrescendo.DEBUG = false;\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements curves (for slurs)\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport var CurvePosition;\n(function (CurvePosition) {\n CurvePosition[CurvePosition[\"NEAR_HEAD\"] = 1] = \"NEAR_HEAD\";\n CurvePosition[CurvePosition[\"NEAR_TOP\"] = 2] = \"NEAR_TOP\";\n})(CurvePosition || (CurvePosition = {}));\nexport class Curve extends Element {\n // from: Start note\n // to: End note\n // options:\n // cps: List of control points\n // x_shift: pixels to shift\n // y_shift: pixels to shift\n constructor(from, to, options) {\n super();\n this.render_options = Object.assign({ thickness: 2, x_shift: 0, y_shift: 10, position: CurvePosition.NEAR_HEAD, position_end: CurvePosition.NEAR_HEAD, invert: false, cps: [\n { x: 0, y: 10 },\n { x: 0, y: 10 },\n ] }, options);\n this.from = from;\n this.to = to;\n }\n static get CATEGORY() {\n return Category.Curve;\n }\n static get Position() {\n return CurvePosition;\n }\n static get PositionString() {\n return {\n nearHead: CurvePosition.NEAR_HEAD,\n nearTop: CurvePosition.NEAR_TOP,\n };\n }\n setNotes(from, to) {\n if (!from && !to) {\n throw new RuntimeError('BadArguments', 'Curve needs to have either `from` or `to` set.');\n }\n this.from = from;\n this.to = to;\n return this;\n }\n /**\n * @return {boolean} Returns true if this is a partial bar.\n */\n isPartial() {\n return !this.from || !this.to;\n }\n renderCurve(params) {\n const ctx = this.checkContext();\n const x_shift = this.render_options.x_shift;\n const y_shift = this.render_options.y_shift * params.direction;\n const first_x = params.first_x + x_shift;\n const first_y = params.first_y + y_shift;\n const last_x = params.last_x - x_shift;\n const last_y = params.last_y + y_shift;\n const thickness = this.render_options.thickness;\n const cps = this.render_options.cps;\n const { x: cp0x, y: cp0y } = cps[0];\n const { x: cp1x, y: cp1y } = cps[1];\n const cp_spacing = (last_x - first_x) / (cps.length + 2);\n ctx.beginPath();\n ctx.moveTo(first_x, first_y);\n ctx.bezierCurveTo(first_x + cp_spacing + cp0x, first_y + cp0y * params.direction, last_x - cp_spacing + cp1x, last_y + cp1y * params.direction, last_x, last_y);\n ctx.bezierCurveTo(last_x - cp_spacing + cp1x, last_y + (cp1y + thickness) * params.direction, first_x + cp_spacing + cp0x, first_y + (cp0y + thickness) * params.direction, first_x, first_y);\n ctx.stroke();\n ctx.closePath();\n ctx.fill();\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const first_note = this.from;\n const last_note = this.to;\n let first_x;\n let last_x;\n let first_y;\n let last_y;\n let stem_direction = 0;\n let metric = 'baseY';\n let end_metric = 'baseY';\n function getPosition(position) {\n return typeof position === 'string' ? Curve.PositionString[position] : position;\n }\n const position = getPosition(this.render_options.position);\n const position_end = getPosition(this.render_options.position_end);\n if (position === CurvePosition.NEAR_TOP) {\n metric = 'topY';\n end_metric = 'topY';\n }\n if (position_end === CurvePosition.NEAR_HEAD) {\n end_metric = 'baseY';\n }\n else if (position_end === CurvePosition.NEAR_TOP) {\n end_metric = 'topY';\n }\n if (first_note) {\n first_x = first_note.getTieRightX();\n stem_direction = first_note.getStemDirection();\n first_y = first_note.getStemExtents()[metric];\n }\n else {\n const stave = last_note.checkStave();\n first_x = stave.getTieStartX();\n first_y = last_note.getStemExtents()[metric];\n }\n if (last_note) {\n last_x = last_note.getTieLeftX();\n stem_direction = last_note.getStemDirection();\n last_y = last_note.getStemExtents()[end_metric];\n }\n else {\n const stave = first_note.checkStave();\n last_x = stave.getTieEndX();\n last_y = first_note.getStemExtents()[end_metric];\n }\n this.renderCurve({\n first_x,\n last_x,\n first_y,\n last_y,\n direction: stem_direction * (this.render_options.invert === true ? -1 : 1),\n });\n return true;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// A generic text parsing class for VexFlow.\nimport { log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.Parser.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (Parser.DEBUG)\n log('Vex.Flow.Parser', args);\n}\nconst NO_ERROR_POS = -1;\n// Converts parser results into an easy to reference list that can be\n// used in triggers. This function returns:\n// - nested array in which the leaf elements are string or null\n// - string (including empty strings)\n// - null\nfunction flattenMatches(r) {\n if ('matchedString' in r)\n return r.matchedString; // string\n if ('results' in r)\n return flattenMatches(r.results);\n const results = r;\n if (results.length === 1)\n return flattenMatches(results[0]);\n if (results.length === 0)\n return null;\n return results.map(flattenMatches); // nested array\n}\n// This is the base parser class. Given an arbitrary context-free grammar, it\n// can parse any line and execute code when specific rules are met (e.g.,\n// when a string is terminated.)\nexport class Parser {\n // For an example of a simple grammar, take a look at tests/parser_tests.ts or\n // the EasyScore grammar in easyscore.ts.\n constructor(grammar) {\n this.grammar = grammar;\n this.line = '';\n this.pos = 0;\n this.errorPos = NO_ERROR_POS;\n }\n // Parse `line` using current grammar. Returns `{success: true}` if the\n // line parsed correctly, otherwise returns `{success: false, errorPos: N}`\n // where `errorPos` is the location of the error in the string.\n parse(line) {\n this.line = line;\n this.pos = 0;\n this.errorPos = NO_ERROR_POS;\n const result = this.expect(this.grammar.begin());\n result.errorPos = this.errorPos;\n return result;\n }\n matchFail(returnPos) {\n if (this.errorPos === NO_ERROR_POS)\n this.errorPos = this.pos;\n this.pos = returnPos;\n }\n matchSuccess() {\n this.errorPos = NO_ERROR_POS;\n }\n // Look for `token` in this.line[this.pos], and return success\n // if one is found. `token` is specified as a regular expression.\n matchToken(token, noSpace = false) {\n const regexp = noSpace ? new RegExp('^((' + token + '))') : new RegExp('^((' + token + ')\\\\s*)');\n const workingLine = this.line.slice(this.pos);\n const result = workingLine.match(regexp);\n if (result !== null) {\n return {\n success: true,\n matchedString: result[2],\n incrementPos: result[1].length,\n pos: this.pos,\n };\n }\n else {\n return { success: false, pos: this.pos };\n }\n }\n // Execute rule to match a sequence of tokens (or rules). If `maybe` is\n // set, then return success even if the token is not found, but reset\n // the position before exiting.\n // TODO: expectOne(...) is never called with the `maybe` parameter.\n expectOne(rule, maybe = false) {\n const results = [];\n const pos = this.pos;\n let allMatches = true;\n let oneMatch = false;\n maybe = maybe === true || rule.maybe === true;\n // Execute all sub rules in sequence.\n if (rule.expect) {\n for (const next of rule.expect) {\n const localPos = this.pos;\n const result = this.expect(next);\n // If `rule.or` is set, then return success if any one\n // of the subrules match, else all subrules must match.\n if (result.success) {\n results.push(result);\n oneMatch = true;\n if (rule.or)\n break;\n }\n else {\n allMatches = false;\n if (!rule.or) {\n this.pos = localPos;\n break;\n }\n }\n }\n }\n const gotOne = (rule.or && oneMatch) || allMatches;\n const success = gotOne || maybe === true;\n const numMatches = gotOne ? 1 : 0;\n if (maybe && !gotOne)\n this.pos = pos;\n if (success) {\n this.matchSuccess();\n }\n else {\n this.matchFail(pos);\n }\n return { success, results, numMatches };\n }\n // Try to match multiple (one or more) instances of the rule. If `maybe` is set,\n // then a failed match is also a success (but the position is reset).\n expectOneOrMore(rule, maybe = false) {\n const results = [];\n const pos = this.pos;\n let numMatches = 0;\n let more = true;\n do {\n const result = this.expectOne(rule);\n if (result.success && result.results) {\n numMatches++;\n results.push(result.results);\n }\n else {\n more = false;\n }\n } while (more);\n const success = numMatches > 0 || maybe === true;\n if (maybe && !(numMatches > 0))\n this.pos = pos;\n if (success) {\n this.matchSuccess();\n }\n else {\n this.matchFail(pos);\n }\n return { success, results, numMatches };\n }\n // Match zero or more instances of `rule`. Offloads to `expectOneOrMore`.\n expectZeroOrMore(rule) {\n return this.expectOneOrMore(rule, true);\n }\n // Execute the rule produced by the provided `rules` function. This\n // offloads to one of the above matchers and consolidates the results. It is also\n // responsible for executing any code triggered by the rule (in `rule.run`.)\n expect(ruleFunc) {\n L('Evaluating rule function:', ruleFunc);\n if (!ruleFunc) {\n throw new RuntimeError('Invalid rule function');\n }\n let result;\n // Get rule from Grammar class.\n // expect(...) handles both lexing & parsing:\n // - lexer rules produce tokens.\n // - parser rules produce expressions which may trigger code via the\n // { run: () => ... } trigger functions in easyscore.ts.\n // These functions build the VexFlow objects that are displayed on screen.\n const rule = ruleFunc.bind(this.grammar)();\n if (rule.token) {\n // A lexer rule has a `token` property.\n // Base case: parse the regex and throw an error if the\n // line doesn't match.\n result = this.matchToken(rule.token, rule.noSpace === true);\n if (result.success) {\n // Token match! Update position and throw away parsed portion\n // of string.\n this.pos += result.incrementPos;\n }\n }\n else if (rule.expect) {\n // A parser rule has an `expect` property.\n if (rule.oneOrMore) {\n result = this.expectOneOrMore(rule);\n }\n else if (rule.zeroOrMore) {\n result = this.expectZeroOrMore(rule);\n }\n else {\n result = this.expectOne(rule);\n }\n }\n else {\n L(rule);\n throw new RuntimeError('Bad grammar! No `token` or `expect` property ' + rule);\n }\n // If there's a trigger attached to this rule, then run it.\n // Make the matches accessible through `state.matches` in the\n // `run: (state) => ...` trigger.\n const matches = [];\n result.matches = matches;\n if (result.results) {\n result.results.forEach((r) => matches.push(flattenMatches(r)));\n }\n if (rule.run && result.success) {\n rule.run({ matches });\n }\n return result;\n }\n}\nParser.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Articulation } from './articulation';\nimport { Dot } from './dot';\nimport { FretHandFinger } from './frethandfinger';\nimport { Music } from './music';\nimport { Parser } from './parser';\nimport { Stem } from './stem';\nimport { defined, log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.EasyScore.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (EasyScore.DEBUG)\n log('Vex.Flow.EasyScore', args);\n}\nexport class EasyScoreGrammar {\n constructor(builder) {\n this.builder = builder;\n }\n begin() {\n return this.LINE;\n }\n LINE() {\n return {\n expect: [this.PIECE, this.PIECES, this.EOL],\n };\n }\n PIECE() {\n return {\n expect: [this.CHORDORNOTE, this.PARAMS],\n run: () => this.builder.commitPiece(),\n };\n }\n PIECES() {\n return {\n expect: [this.COMMA, this.PIECE],\n zeroOrMore: true,\n };\n }\n PARAMS() {\n return {\n expect: [this.DURATION, this.TYPE, this.DOTS, this.OPTS],\n };\n }\n CHORDORNOTE() {\n return {\n expect: [this.CHORD, this.SINGLENOTE],\n or: true,\n };\n }\n CHORD() {\n return {\n expect: [this.LPAREN, this.NOTES, this.RPAREN],\n // eslint-disable-next-line\n run: (state) => this.builder.addChord(state.matches[1]),\n };\n }\n NOTES() {\n return {\n expect: [this.NOTE],\n oneOrMore: true,\n };\n }\n NOTE() {\n return {\n expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE],\n };\n }\n SINGLENOTE() {\n return {\n expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE],\n run: (state) => {\n // eslint-disable-next-line\n const s = state;\n this.builder.addSingleNote(s.matches[0], s.matches[1], s.matches[2]);\n },\n };\n }\n ACCIDENTAL() {\n return {\n expect: [this.MICROTONES, this.ACCIDENTALS],\n maybe: true,\n or: true,\n };\n }\n DOTS() {\n return {\n expect: [this.DOT],\n zeroOrMore: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteDots(state.matches),\n };\n }\n TYPE() {\n return {\n expect: [this.SLASH, this.MAYBESLASH, this.TYPES],\n maybe: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteType(state.matches[2]),\n };\n }\n DURATION() {\n return {\n expect: [this.SLASH, this.DURATIONS],\n maybe: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteDuration(state.matches[1]),\n };\n }\n OPTS() {\n return {\n expect: [this.LBRACKET, this.KEYVAL, this.KEYVALS, this.RBRACKET],\n maybe: true,\n };\n }\n KEYVALS() {\n return {\n expect: [this.COMMA, this.KEYVAL],\n zeroOrMore: true,\n };\n }\n KEYVAL() {\n const unquote = (str) => str.slice(1, -1);\n return {\n expect: [this.KEY, this.EQUALS, this.VAL],\n // eslint-disable-next-line\n run: (state) => this.builder.addNoteOption(state.matches[0], unquote(state.matches[2])),\n };\n }\n VAL() {\n return {\n expect: [this.SVAL, this.DVAL],\n or: true,\n };\n }\n KEY() {\n return { token: '[a-zA-Z][a-zA-Z0-9]*' };\n }\n DVAL() {\n return { token: '[\"][^\"]*[\"]' };\n }\n SVAL() {\n return { token: \"['][^']*[']\" };\n }\n NOTENAME() {\n return { token: '[a-gA-G]' };\n }\n OCTAVE() {\n return { token: '[0-9]+' };\n }\n ACCIDENTALS() {\n return { token: 'bb|b|##|#|n' };\n }\n MICROTONES() {\n return { token: 'bbs|bss|bs|db|d|\\\\+\\\\+-|\\\\+-|\\\\+\\\\+|\\\\+|k|o' };\n }\n DURATIONS() {\n return { token: '[0-9whq]+' };\n }\n TYPES() {\n return { token: '[rRsSmMhHgG]' };\n }\n LPAREN() {\n return { token: '[(]' };\n }\n RPAREN() {\n return { token: '[)]' };\n }\n COMMA() {\n return { token: '[,]' };\n }\n DOT() {\n return { token: '[.]' };\n }\n SLASH() {\n return { token: '[/]' };\n }\n MAYBESLASH() {\n return { token: '[/]?' };\n }\n EQUALS() {\n return { token: '[=]' };\n }\n LBRACKET() {\n return { token: '\\\\[' };\n }\n RBRACKET() {\n return { token: '\\\\]' };\n }\n EOL() {\n return { token: '$' };\n }\n}\nexport class Piece {\n constructor(duration) {\n this.chord = [];\n this.dots = 0;\n this.options = {};\n this.duration = duration;\n }\n}\nexport class Builder {\n constructor(factory) {\n this.commitHooks = [];\n this.factory = factory;\n this.reset();\n }\n reset(options) {\n this.options = Object.assign({ stem: 'auto', clef: 'treble' }, options);\n this.elements = { notes: [], accidentals: [] };\n this.rollingDuration = '8';\n this.resetPiece();\n }\n getFactory() {\n return this.factory;\n }\n getElements() {\n return this.elements;\n }\n addCommitHook(commitHook) {\n this.commitHooks.push(commitHook);\n }\n resetPiece() {\n L('resetPiece');\n this.piece = new Piece(this.rollingDuration);\n }\n setNoteDots(dots) {\n L('setNoteDots:', dots);\n if (dots)\n this.piece.dots = dots.length;\n }\n setNoteDuration(duration) {\n L('setNoteDuration:', duration);\n this.rollingDuration = this.piece.duration = duration || this.rollingDuration;\n }\n setNoteType(type) {\n L('setNoteType:', type);\n if (type)\n this.piece.type = type;\n }\n addNoteOption(key, value) {\n L('addNoteOption: key:', key, 'value:', value);\n this.piece.options[key] = value;\n }\n addNote(key, accid, octave) {\n L('addNote:', key, accid, octave);\n this.piece.chord.push({\n key: key,\n accid,\n octave,\n });\n }\n addSingleNote(key, accid, octave) {\n L('addSingleNote:', key, accid, octave);\n this.addNote(key, accid, octave);\n }\n // notes is an array with 3 entries\n addChord(notes) {\n L('startChord');\n if (typeof notes[0] !== 'object') {\n this.addSingleNote(notes[0]);\n }\n else {\n notes.forEach((n) => {\n if (n)\n this.addNote(...n); // n => [string, string | null, string]\n });\n }\n L('endChord');\n }\n commitPiece() {\n L('commitPiece');\n const { factory } = this;\n if (!factory)\n return;\n const options = Object.assign(Object.assign({}, this.options), this.piece.options);\n // reset() sets this.options.stem & this.options.clef but we check to make sure nothing has changed.\n // e.g., auto | up | down\n const stem = defined(options.stem, 'BadArguments', 'options.stem is not defined').toLowerCase();\n // e.g., treble | bass\n const clef = defined(options.clef, 'BadArguments', 'options.clef is not defined').toLowerCase();\n const { chord, duration, dots, type } = this.piece;\n // Create a string[] that will be assigned to the .keys property of the StaveNote.\n // Each string in the array represents a note pitch and is of the form: {NoteName}{Accidental}/{Octave}\n // Only standard accidentals are included in the .keys property. Microtonal accidentals are not included.\n const standardAccidentals = Music.accidentals;\n const keys = chord.map((notePiece) => {\n var _a;\n return notePiece.key +\n (standardAccidentals.includes((_a = notePiece.accid) !== null && _a !== void 0 ? _a : '') ? notePiece.accid : '') +\n '/' +\n notePiece.octave;\n });\n const auto_stem = stem === 'auto'; // StaveNoteStruct expects the underscore & lowercase.\n // Build a GhostNote or StaveNote using the information we gathered.\n const note = (type === null || type === void 0 ? void 0 : type.toLowerCase()) == 'g'\n ? factory.GhostNote({ duration, dots })\n : factory.StaveNote({ keys, duration, dots, type, clef, auto_stem });\n if (!auto_stem)\n note.setStemDirection(stem === 'up' ? Stem.UP : Stem.DOWN);\n // Attach accidentals.\n const accidentals = [];\n chord.forEach((notePiece, index) => {\n const accid = notePiece.accid;\n if (typeof accid === 'string') {\n const accidental = factory.Accidental({ type: accid });\n note.addModifier(accidental, index);\n accidentals.push(accidental);\n }\n else {\n accidentals.push(undefined);\n }\n });\n // Attach dots.\n for (let i = 0; i < dots; i++)\n Dot.buildAndAttach([note], { all: true });\n this.commitHooks.forEach((commitHook) => commitHook(options, note, this));\n this.elements.notes.push(note);\n this.elements.accidentals.push(accidentals);\n this.resetPiece();\n }\n}\n/**\n * Commit hook used by EasyScore.setOptions().\n */\nfunction setId(options, note) {\n if (options.id === undefined)\n return;\n note.setAttribute('id', options.id);\n}\n// Used by setClass() below.\nconst commaSeparatedRegex = /\\s*,\\s*/;\n/**\n * Commit hook used by EasyScore.setOptions().\n */\nfunction setClass(options, note) {\n if (options.class === undefined)\n return;\n options.class.split(commaSeparatedRegex).forEach((className) => note.addClass(className));\n}\n/**\n * EasyScore implements a parser for a simple language to generate VexFlow objects.\n */\nexport class EasyScore {\n constructor(options = {}) {\n this.defaults = {\n clef: 'treble',\n time: '4/4',\n stem: 'auto',\n };\n this.setOptions(options);\n }\n /**\n * Set the score defaults.\n * clef must be set appropriately to avoid errors when adding Staves.\n * @param defaults.clef default clef ( treble | bass ...) see {@link Clef.types}\n * @param defaults.time default time signature ( 4/4 | 9/8 ...)\n * @param defaults.stem default stem arrangement (auto | up | down)\n * @returns this\n */\n set(defaults) {\n this.defaults = Object.assign(Object.assign({}, this.defaults), defaults);\n return this;\n }\n /**\n * @param options.factory is required.\n * @returns this\n */\n setOptions(options) {\n var _a, _b;\n // eslint-disable-next-line\n const factory = options.factory; // ! operator, because options.factory was set in Factory.EasyScore().\n const builder = (_a = options.builder) !== null && _a !== void 0 ? _a : new Builder(factory);\n this.options = Object.assign(Object.assign({ commitHooks: [setId, setClass, Articulation.easyScoreHook, FretHandFinger.easyScoreHook], throwOnError: false }, options), { factory,\n builder });\n this.factory = factory;\n this.builder = builder;\n this.grammar = new EasyScoreGrammar(this.builder);\n this.parser = new Parser(this.grammar);\n (_b = this.options.commitHooks) === null || _b === void 0 ? void 0 : _b.forEach((commitHook) => this.addCommitHook(commitHook));\n return this;\n }\n setContext(context) {\n this.factory.setContext(context);\n return this;\n }\n parse(line, options = {}) {\n this.builder.reset(options);\n const result = this.parser.parse(line);\n if (!result.success && this.options.throwOnError) {\n L(result);\n throw new RuntimeError('Error parsing line: ' + line);\n }\n return result;\n }\n beam(notes, options) {\n this.factory.Beam({ notes, options });\n return notes;\n }\n tuplet(notes, options) {\n this.factory.Tuplet({ notes, options });\n return notes;\n }\n notes(line, options = {}) {\n options = Object.assign({ clef: this.defaults.clef, stem: this.defaults.stem }, options);\n this.parse(line, options);\n return this.builder.getElements().notes;\n }\n voice(notes, options = {}) {\n options = Object.assign({ time: this.defaults.time }, options);\n return this.factory.Voice(options).addTickables(notes);\n }\n addCommitHook(commitHook) {\n this.builder.addCommitHook(commitHook);\n }\n}\nEasyScore.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\nimport { StemmableNote } from './stemmablenote';\nimport { Category, isAnnotation } from './typeguard';\nimport { RuntimeError } from './util';\nconst ERROR_MSG = 'Ghost note must have valid initialization data to identify duration.';\nexport class GhostNote extends StemmableNote {\n static get CATEGORY() {\n return Category.GhostNote;\n }\n constructor(parameter) {\n if (!parameter) {\n throw new RuntimeError('BadArguments', ERROR_MSG);\n }\n let noteStruct;\n if (typeof parameter === 'string') {\n // Preserve backwards-compatibility\n noteStruct = { duration: parameter };\n }\n else if (typeof parameter === 'object') {\n noteStruct = parameter;\n }\n else {\n throw new RuntimeError('BadArguments', ERROR_MSG);\n }\n super(noteStruct);\n // Note properties\n this.setWidth(0);\n }\n /**\n * @returns true if this note is a type of rest. Rests don't have pitches, but take up space in the score.\n */\n isRest() {\n return true;\n }\n setStave(stave) {\n super.setStave(stave);\n return this;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n draw() {\n // Draw Annotations\n this.setRendered();\n for (let i = 0; i < this.modifiers.length; ++i) {\n const modifier = this.modifiers[i];\n if (isAnnotation(modifier)) {\n modifier.setContext(this.getContext());\n modifier.drawWithStyle();\n }\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Note } from './note';\nimport { Category } from './typeguard';\nexport class GlyphNote extends Note {\n constructor(glyph, noteStruct, options) {\n super(noteStruct);\n this.options = Object.assign({ ignoreTicks: false, line: 2 }, options);\n // Note properties\n this.ignore_ticks = this.options.ignoreTicks;\n if (glyph) {\n this.setGlyph(glyph);\n }\n }\n static get CATEGORY() {\n return Category.GlyphNote;\n }\n setGlyph(glyph) {\n this.glyph = glyph;\n this.setWidth(this.glyph.getMetrics().width);\n return this;\n }\n getBoundingBox() {\n return this.glyph.getBoundingBox();\n }\n preFormat() {\n if (!this.preFormatted && this.modifierContext) {\n this.modifierContext.preFormat();\n }\n this.preFormatted = true;\n return this;\n }\n drawModifiers() {\n const ctx = this.checkContext();\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n modifier.setContext(ctx);\n modifier.drawWithStyle();\n }\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('glyphNote', this.getAttribute('id'));\n // Context is set when setStave is called on Note\n const glyph = this.glyph;\n if (!glyph.getContext()) {\n glyph.setContext(ctx);\n }\n glyph.setStave(stave);\n glyph.setYShift(stave.getYForLine(this.options.line) - stave.getYForGlyphs());\n const x = this.isCenterAligned() ? this.getAbsoluteX() - this.getWidth() / 2 : this.getAbsoluteX();\n glyph.renderToStave(x);\n this.drawModifiers();\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { StaveNote } from './stavenote';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class GraceNote extends StaveNote {\n constructor(noteStruct) {\n super(Object.assign({ glyph_font_scale: Tables.NOTATION_FONT_SCALE * GraceNote.SCALE, stroke_px: GraceNote.LEDGER_LINE_OFFSET }, noteStruct));\n this.slash = noteStruct.slash || false;\n this.slur = true;\n this.buildNoteHeads();\n this.width = 3;\n }\n static get CATEGORY() {\n return Category.GraceNote;\n }\n static get LEDGER_LINE_OFFSET() {\n return 2;\n }\n static get SCALE() {\n return 0.66;\n }\n getStemExtension() {\n if (this.stem_extension_override) {\n return this.stem_extension_override;\n }\n const glyph = this.getGlyph();\n if (glyph) {\n let ret = super.getStemExtension();\n if (glyph.stem) {\n const staveNoteScale = this.getStaveNoteScale();\n ret = (Stem.HEIGHT + ret) * staveNoteScale - Stem.HEIGHT;\n }\n return ret;\n }\n return 0;\n }\n getStaveNoteScale() {\n return this.render_options.glyph_font_scale / Tables.NOTATION_FONT_SCALE;\n }\n draw() {\n super.draw();\n this.setRendered();\n const stem = this.stem;\n if (this.slash && stem) {\n const staveNoteScale = this.getStaveNoteScale();\n // some magic numbers are based on the staveNoteScale 0.66.\n const offsetScale = staveNoteScale / 0.66;\n let slashBBox = undefined;\n const beam = this.beam;\n if (beam) {\n // FIXME: should render slash after beam?\n if (!beam.postFormatted) {\n beam.postFormat();\n }\n slashBBox = this.calcBeamedNotesSlashBBox(8 * offsetScale, 8 * offsetScale, {\n stem: 6 * offsetScale,\n beam: 5 * offsetScale,\n });\n }\n else {\n const stem_direction = this.getStemDirection();\n const noteHeadBounds = this.getNoteHeadBounds();\n const noteStemHeight = stem.getHeight();\n let x = this.getAbsoluteX();\n let y = stem_direction === Stem.DOWN\n ? noteHeadBounds.y_top - noteStemHeight\n : noteHeadBounds.y_bottom - noteStemHeight;\n const defaultStemExtention = stem_direction === Stem.DOWN ? this.glyph.stem_down_extension : this.glyph.stem_up_extension;\n let defaultOffsetY = Tables.STEM_HEIGHT;\n defaultOffsetY -= defaultOffsetY / 2.8;\n defaultOffsetY += defaultStemExtention;\n y += defaultOffsetY * staveNoteScale * stem_direction;\n const offsets = stem_direction === Stem.UP\n ? {\n x1: 1,\n y1: 0,\n x2: 13,\n y2: -9,\n }\n : {\n x1: -4,\n y1: 1,\n x2: 13,\n y2: 9,\n };\n x += offsets.x1 * offsetScale;\n y += offsets.y1 * offsetScale;\n slashBBox = {\n x1: x,\n y1: y,\n x2: x + offsets.x2 * offsetScale,\n y2: y + offsets.y2 * offsetScale,\n };\n }\n // FIXME: avoid staff lines, ledger lines or others.\n const ctx = this.checkContext();\n ctx.save();\n ctx.setLineWidth(1 * offsetScale); // FIXME: use more appropriate value.\n ctx.beginPath();\n ctx.moveTo(slashBBox.x1, slashBBox.y1);\n ctx.lineTo(slashBBox.x2, slashBBox.y2);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n }\n }\n calcBeamedNotesSlashBBox(slashStemOffset, slashBeamOffset, protrusions) {\n const beam = this.beam;\n if (!beam)\n throw new RuntimeError('NoBeam', \"Can't calculate without a beam.\");\n const beam_slope = beam.slope;\n const isBeamEndNote = beam.notes[beam.notes.length - 1] === this;\n const scaleX = isBeamEndNote ? -1 : 1;\n const beam_angle = Math.atan(beam_slope * scaleX);\n // slash line intersecting point on beam.\n const iPointOnBeam = {\n dx: Math.cos(beam_angle) * slashBeamOffset,\n dy: Math.sin(beam_angle) * slashBeamOffset,\n };\n slashStemOffset *= this.getStemDirection();\n const slash_angle = Math.atan((iPointOnBeam.dy - slashStemOffset) / iPointOnBeam.dx);\n const protrusion_stem_dx = Math.cos(slash_angle) * protrusions.stem * scaleX;\n const protrusion_stem_dy = Math.sin(slash_angle) * protrusions.stem;\n const protrusion_beam_dx = Math.cos(slash_angle) * protrusions.beam * scaleX;\n const protrusion_beam_dy = Math.sin(slash_angle) * protrusions.beam;\n const stemX = this.getStemX();\n const stem0X = beam.notes[0].getStemX();\n const stemY = beam.getBeamYToDraw() + (stemX - stem0X) * beam_slope;\n const ret = {\n x1: stemX - protrusion_stem_dx,\n y1: stemY + slashStemOffset - protrusion_stem_dy,\n x2: stemX + iPointOnBeam.dx * scaleX + protrusion_beam_dx,\n y2: stemY + iPointOnBeam.dy + protrusion_beam_dy,\n };\n return ret;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Mark Meeus 2019\nimport { KeySignature } from './keysignature';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nexport class KeySigNote extends Note {\n constructor(keySpec, cancelKeySpec, alterKeySpec) {\n super({ duration: 'b' });\n this.keySignature = new KeySignature(keySpec, cancelKeySpec, alterKeySpec);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.KeySigNote;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n this.keySignature.setStave(this.checkStave());\n this.setWidth(this.keySignature.getWidth());\n return this;\n }\n draw() {\n const ctx = this.checkStave().checkContext();\n this.setRendered();\n this.keySignature.setX(this.getAbsoluteX());\n this.keySignature.setContext(ctx);\n this.keySignature.draw();\n }\n}\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements multiple measure rests.\nimport { Element } from './element';\nimport { Glyph } from './glyph';\nimport { NoteHead } from './notehead';\nimport { StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { TimeSignature } from './timesignature';\nimport { Category, isBarline } from './typeguard';\nimport { defined } from './util';\nlet semibreve_rest;\nfunction get_semibreve_rest() {\n if (!semibreve_rest) {\n const noteHead = new NoteHead({ duration: 'w', note_type: 'r' });\n semibreve_rest = {\n glyph_font_scale: noteHead.render_options.glyph_font_scale,\n glyph_code: noteHead.glyph_code,\n width: noteHead.getWidth(),\n };\n }\n return semibreve_rest;\n}\nexport class MultiMeasureRest extends Element {\n /**\n *\n * @param number_of_measures Number of measures.\n * @param options The options object.\n */\n constructor(number_of_measures, options) {\n super();\n this.xs = { left: NaN, right: NaN };\n this.hasPaddingLeft = false;\n this.hasPaddingRight = false;\n this.hasLineThickness = false;\n this.hasSymbolSpacing = false;\n this.number_of_measures = number_of_measures;\n // Keep track of whether these four options were provided.\n this.hasPaddingLeft = typeof options.padding_left === 'number';\n this.hasPaddingRight = typeof options.padding_right === 'number';\n this.hasLineThickness = typeof options.line_thickness === 'number';\n this.hasSymbolSpacing = typeof options.symbol_spacing === 'number';\n const musicFont = Tables.currentMusicFont();\n this.render_options = Object.assign({ use_symbols: false, show_number: true, number_line: -0.5, number_glyph_point: musicFont.lookupMetric('digits.point'), line: 2, spacing_between_lines_px: Tables.STAVE_LINE_DISTANCE, serif_thickness: 2, semibreve_rest_glyph_scale: Tables.NOTATION_FONT_SCALE, padding_left: 0, padding_right: 0, line_thickness: 5, symbol_spacing: 0 }, options);\n const fontLineShift = musicFont.lookupMetric('digits.shiftLine', 0);\n this.render_options.number_line += fontLineShift;\n }\n static get CATEGORY() {\n return Category.MultiMeasureRest;\n }\n getXs() {\n return this.xs;\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getStave() {\n return this.stave;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n drawLine(stave, ctx, left, right, spacingBetweenLines) {\n const options = this.render_options;\n const y = stave.getYForLine(options.line);\n const padding = (right - left) * 0.1;\n left += padding;\n right -= padding;\n let lineThicknessHalf;\n if (this.hasLineThickness) {\n lineThicknessHalf = options.line_thickness * 0.5;\n }\n else {\n lineThicknessHalf = spacingBetweenLines * 0.25;\n }\n const serifThickness = options.serif_thickness;\n const top = y - spacingBetweenLines;\n const bot = y + spacingBetweenLines;\n const leftIndented = left + serifThickness;\n const rightIndented = right - serifThickness;\n const lineTop = y - lineThicknessHalf;\n const lineBottom = y + lineThicknessHalf;\n ctx.save();\n ctx.beginPath();\n ctx.moveTo(left, top);\n ctx.lineTo(leftIndented, top);\n ctx.lineTo(leftIndented, lineTop);\n ctx.lineTo(rightIndented, lineTop);\n ctx.lineTo(rightIndented, top);\n ctx.lineTo(right, top);\n ctx.lineTo(right, bot);\n ctx.lineTo(rightIndented, bot);\n ctx.lineTo(rightIndented, lineBottom);\n ctx.lineTo(leftIndented, lineBottom);\n ctx.lineTo(leftIndented, bot);\n ctx.lineTo(left, bot);\n ctx.closePath();\n ctx.fill();\n }\n drawSymbols(stave, ctx, left, right, spacingBetweenLines) {\n const n4 = Math.floor(this.number_of_measures / 4);\n const n = this.number_of_measures % 4;\n const n2 = Math.floor(n / 2);\n const n1 = n % 2;\n const options = this.render_options;\n // FIXME: TODO: invalidate semibreve_rest at the appropriate time\n // (e.g., if the system font settings are changed).\n semibreve_rest = undefined;\n const rest = get_semibreve_rest();\n const rest_scale = options.semibreve_rest_glyph_scale;\n const rest_width = rest.width * (rest_scale / rest.glyph_font_scale);\n const glyphs = {\n 2: {\n width: rest_width * 0.5,\n height: spacingBetweenLines,\n },\n 1: {\n width: rest_width,\n },\n };\n /* 10: normal spacingBetweenLines */\n const spacing = this.hasSymbolSpacing ? options.symbol_spacing : 10;\n const width = n4 * glyphs[2].width + n2 * glyphs[2].width + n1 * glyphs[1].width + (n4 + n2 + n1 - 1) * spacing;\n let x = left + (right - left) * 0.5 - width * 0.5;\n const line = options.line;\n const yTop = stave.getYForLine(line - 1);\n const yMiddle = stave.getYForLine(line);\n const yBottom = stave.getYForLine(line + 1);\n ctx.save();\n ctx.setStrokeStyle('none');\n ctx.setLineWidth(0);\n for (let i = 0; i < n4; ++i) {\n ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n ctx.fillRect(x, yBottom - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n x += glyphs[2].width + spacing;\n }\n for (let i = 0; i < n2; ++i) {\n ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n x += glyphs[2].width + spacing;\n }\n for (let i = 0; i < n1; ++i) {\n Glyph.renderGlyph(ctx, x, yTop, rest_scale, rest.glyph_code);\n x += glyphs[1].width + spacing;\n }\n ctx.restore();\n }\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const stave = this.checkStave();\n let left = stave.getNoteStartX();\n let right = stave.getNoteEndX();\n // FIXME: getNoteStartX() returns x + 5(barline width)\n // getNoteEndX() returns x + width(no barline width)\n // See Stave constructor. How do we fix this?\n // Here, we subtract the barline width.\n const begModifiers = stave.getModifiers(StaveModifierPosition.BEGIN);\n if (begModifiers.length === 1 && isBarline(begModifiers[0])) {\n left -= begModifiers[0].getWidth();\n }\n const options = this.render_options;\n if (this.hasPaddingLeft) {\n left = stave.getX() + options.padding_left;\n }\n if (this.hasPaddingRight) {\n right = stave.getX() + stave.getWidth() - options.padding_right;\n }\n this.xs.left = left;\n this.xs.right = right;\n const spacingBetweenLines = options.spacing_between_lines_px;\n if (options.use_symbols) {\n this.drawSymbols(stave, ctx, left, right, spacingBetweenLines);\n }\n else {\n this.drawLine(stave, ctx, left, right, spacingBetweenLines);\n }\n if (options.show_number) {\n const timeSpec = '/' + this.number_of_measures;\n const timeSig = new TimeSignature(timeSpec, 0, false);\n timeSig.point = options.number_glyph_point;\n timeSig.setTimeSig(timeSpec);\n timeSig.setStave(stave);\n timeSig.setX(left + (right - left) * 0.5 - timeSig.getInfo().glyph.getMetrics().width * 0.5);\n timeSig.bottomLine = options.number_line;\n timeSig.setContext(ctx).draw();\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (PedalMarking.DEBUG)\n log('Vex.Flow.PedalMarking', args);\n}\n/**\n * Draws a pedal glyph with the provided `name` on a rendering `context`\n * at the coordinates `x` and `y. Takes into account the glyph data\n * coordinate shifts.\n */\nfunction drawPedalGlyph(name, context, x, y, point) {\n const glyph_data = PedalMarking.GLYPHS[name];\n const glyph = new Glyph(glyph_data.code, point, { category: 'pedalMarking' });\n glyph.render(context, x + glyph_data.x_shift, y + glyph_data.y_shift);\n}\n/**\n * PedalMarking implements different types of pedal markings. These notation\n * elements indicate to the performer when to depress and release the a pedal.\n *\n * In order to create \"Sostenuto\", and \"una corda\" markings, you must set\n * custom text for the release/depress pedal markings.\n */\nexport class PedalMarking extends Element {\n constructor(notes) {\n super();\n this.notes = notes;\n this.type = PedalMarking.type.TEXT;\n this.line = 0;\n // Custom text for the release/depress markings\n this.custom_depress_text = '';\n this.custom_release_text = '';\n this.resetFont();\n this.render_options = {\n bracket_height: 10,\n text_margin_right: 6,\n bracket_line_width: 1,\n color: 'black',\n };\n }\n static get CATEGORY() {\n return Category.PedalMarking;\n }\n /**\n * Create a sustain pedal marking. Returns the defaults PedalMarking.\n * Which uses the traditional \"Ped\" and \"*\"\" markings.\n */\n static createSustain(notes) {\n const pedal = new PedalMarking(notes);\n return pedal;\n }\n /** Create a sostenuto pedal marking */\n static createSostenuto(notes) {\n const pedal = new PedalMarking(notes);\n pedal.setType(PedalMarking.type.MIXED);\n pedal.setCustomText('Sost. Ped.');\n return pedal;\n }\n /** Create an una corda pedal marking */\n static createUnaCorda(notes) {\n const pedal = new PedalMarking(notes);\n pedal.setType(PedalMarking.type.TEXT);\n pedal.setCustomText('una corda', 'tre corda');\n return pedal;\n }\n /** Set pedal type. */\n setType(type) {\n type = typeof type === 'string' ? PedalMarking.typeString[type] : type;\n if (type >= PedalMarking.type.TEXT && type <= PedalMarking.type.MIXED) {\n this.type = type;\n }\n return this;\n }\n /**\n * Set custom text for the `depress`/`release` pedal markings. No text is\n * set if the parameter is falsy.\n */\n setCustomText(depress, release) {\n this.custom_depress_text = depress || '';\n this.custom_release_text = release || '';\n return this;\n }\n /** Set the staff line to render the markings on. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Draw the bracket based pedal markings. */\n drawBracketed() {\n const ctx = this.checkContext();\n let is_pedal_depressed = false;\n let prev_x;\n let prev_y;\n // Iterate through each note\n this.notes.forEach((note, index, notes) => {\n // Each note triggers the opposite pedal action\n is_pedal_depressed = !is_pedal_depressed;\n // Get the initial coordinates for the note\n const x = note.getAbsoluteX();\n const y = note.checkStave().getYForBottomText(this.line + 3);\n // Throw if current note is positioned before the previous note\n if (x < prev_x) {\n throw new RuntimeError('InvalidConfiguration', 'The notes provided must be in order of ascending x positions');\n }\n // Determine if the previous or next note are the same\n // as the current note. We need to keep track of this for\n // when adjustments are made for the release+depress action\n const next_is_same = notes[index + 1] === note;\n const prev_is_same = notes[index - 1] === note;\n let x_shift = 0;\n const point = Tables.currentMusicFont().lookupMetric(`pedalMarking.${is_pedal_depressed ? 'down' : 'up'}.point`);\n if (is_pedal_depressed) {\n // Adjustment for release+depress\n x_shift = prev_is_same ? 5 : 0;\n if (this.type === PedalMarking.type.MIXED && !prev_is_same) {\n // For MIXED style, start with text instead of bracket\n if (this.custom_depress_text) {\n // If we have custom text, use instead of the default \"Ped\" glyph\n const text_width = ctx.measureText(this.custom_depress_text).width;\n ctx.fillText(this.custom_depress_text, x - text_width / 2, y);\n x_shift = text_width / 2 + this.render_options.text_margin_right;\n }\n else {\n // Render the Ped glyph in position\n drawPedalGlyph('pedal_depress', ctx, x, y, point);\n x_shift = 20 + this.render_options.text_margin_right;\n }\n }\n else {\n // Draw start bracket\n ctx.beginPath();\n ctx.moveTo(x, y - this.render_options.bracket_height);\n ctx.lineTo(x + x_shift, y);\n ctx.stroke();\n ctx.closePath();\n }\n }\n else {\n // Adjustment for release+depress\n x_shift = next_is_same ? -5 : 0;\n // Draw end bracket\n ctx.beginPath();\n ctx.moveTo(prev_x, prev_y);\n ctx.lineTo(x + x_shift, y);\n ctx.lineTo(x, y - this.render_options.bracket_height);\n ctx.stroke();\n ctx.closePath();\n }\n // Store previous coordinates\n prev_x = x + x_shift;\n prev_y = y;\n });\n }\n /**\n * Draw the text based pedal markings. This defaults to the traditional\n * \"Ped\" and \"*\"\" symbols if no custom text has been provided.\n */\n drawText() {\n const ctx = this.checkContext();\n let is_pedal_depressed = false;\n // Iterate through each note, placing glyphs or custom text accordingly\n this.notes.forEach((note) => {\n is_pedal_depressed = !is_pedal_depressed;\n const stave = note.checkStave();\n const x = note.getAbsoluteX();\n const y = stave.getYForBottomText(this.line + 3);\n const point = Tables.currentMusicFont().lookupMetric(`pedalMarking.${is_pedal_depressed ? 'down' : 'up'}.point`);\n let text_width = 0;\n if (is_pedal_depressed) {\n if (this.custom_depress_text) {\n text_width = ctx.measureText(this.custom_depress_text).width;\n ctx.fillText(this.custom_depress_text, x - text_width / 2, y);\n }\n else {\n drawPedalGlyph('pedal_depress', ctx, x, y, point);\n }\n }\n else {\n if (this.custom_release_text) {\n text_width = ctx.measureText(this.custom_release_text).width;\n ctx.fillText(this.custom_release_text, x - text_width / 2, y);\n }\n else {\n drawPedalGlyph('pedal_release', ctx, x, y, point);\n }\n }\n });\n }\n /** Render the pedal marking in position on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setStrokeStyle(this.render_options.color);\n ctx.setFillStyle(this.render_options.color);\n ctx.setFont(this.textFont);\n L('Rendering Pedal Marking');\n if (this.type === PedalMarking.type.BRACKET || this.type === PedalMarking.type.MIXED) {\n ctx.setLineWidth(this.render_options.bracket_line_width);\n this.drawBracketed();\n }\n else if (this.type === PedalMarking.type.TEXT) {\n this.drawText();\n }\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.PedalMarking.DEBUG` to `true`. */\nPedalMarking.DEBUG = false;\nPedalMarking.TEXT_FONT = {\n family: Font.SERIF,\n size: 12,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n/** Glyph data */\nPedalMarking.GLYPHS = {\n pedal_depress: {\n code: 'keyboardPedalPed',\n x_shift: -10,\n y_shift: 0,\n },\n pedal_release: {\n code: 'keyboardPedalUp',\n x_shift: -2,\n y_shift: 3,\n },\n};\n/** Pedal type as number. */\nPedalMarking.type = {\n TEXT: 1,\n BRACKET: 2,\n MIXED: 3,\n};\n/** Pedal type as string. */\nPedalMarking.typeString = {\n text: PedalMarking.type.TEXT,\n bracket: PedalMarking.type.BRACKET,\n mixed: PedalMarking.type.MIXED,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Glyph } from './glyph';\nimport { GlyphNote } from './glyphnote';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\n// Map `type` to SMuFL glyph code.\nconst CODES = {\n '1': 'repeat1Bar',\n '2': 'repeat2Bars',\n '4': 'repeat4Bars',\n slash: 'repeatBarSlash',\n};\nexport class RepeatNote extends GlyphNote {\n static get CATEGORY() {\n return Category.RepeatNote;\n }\n constructor(type, noteStruct, options) {\n super(undefined, Object.assign({ duration: 'q', align_center: type !== 'slash' }, noteStruct), options);\n const glyphCode = CODES[type] || 'repeat1Bar';\n const glyph = new Glyph(glyphCode, Tables.currentMusicFont().lookupMetric('repeatNote.point', 40), {\n category: 'repeatNote',\n });\n this.setGlyph(glyph);\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This file implements `StaveLine` which are simply lines that connect\n// two notes. This object is highly configurable, see the `render_options`.\n// A simple line is often used for notating glissando articulations, but you\n// can format a `StaveLine` with arrows or colors for more pedagogical\n// purposes, such as diagrams.\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { TextJustification } from './textnote';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n// Attribution: Arrow rendering implementations based off of\n// Patrick Horgan's article, \"Drawing lines and arcs with\n// arrow heads on HTML5 Canvas\"\n//\n// Draw an arrow head that connects between 3 coordinates.\nfunction drawArrowHead(ctx, x0, y0, x1, y1, x2, y2) {\n // all cases do this.\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.lineTo(x0, y0);\n ctx.closePath();\n ctx.fill();\n}\nexport class StaveLine extends Element {\n // Initialize the StaveLine with the given `notes`.\n //\n // `notes` is a struct that has:\n //\n // ```\n // {\n // first_note: Note,\n // last_note: Note,\n // first_indices: [n1, n2, n3],\n // last_indices: [n1, n2, n3]\n // }\n // ```\n constructor(notes) {\n super();\n this.setNotes(notes);\n this.text = '';\n this.resetFont();\n this.render_options = {\n // Space to add to the left or the right\n padding_left: 4,\n padding_right: 3,\n // The width of the line in pixels\n line_width: 1,\n // An array of line/space lengths. (TODO/QUESTION: Is this supported in SVG?).\n line_dash: undefined,\n // Can draw rounded line end, instead of a square. (TODO/QUESTION: Is this supported in SVG?).\n rounded_end: true,\n // The color of the line and arrowheads\n color: undefined,\n // Flags to draw arrows on each end of the line\n draw_start_arrow: false,\n draw_end_arrow: false,\n // The length of the arrowhead sides\n arrowhead_length: 10,\n // The angle of the arrowhead\n arrowhead_angle: Math.PI / 8,\n // The position of the text\n text_position_vertical: StaveLine.TextVerticalPosition.TOP,\n text_justification: StaveLine.TextJustification.CENTER,\n };\n }\n static get CATEGORY() {\n return Category.StaveLine;\n }\n // The the annotation for the `StaveLine`\n setText(text) {\n this.text = text;\n return this;\n }\n // Set the notes for the `StaveLine`\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Notes needs to have either first_note or last_note set.');\n }\n if (!notes.first_indices)\n notes.first_indices = [0];\n if (!notes.last_indices)\n notes.last_indices = [0];\n if (notes.first_indices.length !== notes.last_indices.length) {\n throw new RuntimeError('BadArguments', 'Connected notes must have same number of indices.');\n }\n this.notes = notes;\n this.first_note = notes.first_note;\n this.first_indices = notes.first_indices;\n this.last_note = notes.last_note;\n this.last_indices = notes.last_indices;\n return this;\n }\n // Apply the style of the `StaveLine` to the context\n applyLineStyle() {\n const ctx = this.checkContext();\n const render_options = this.render_options;\n if (render_options.line_dash) {\n ctx.setLineDash(render_options.line_dash);\n }\n if (render_options.line_width) {\n ctx.setLineWidth(render_options.line_width);\n }\n if (render_options.rounded_end) {\n ctx.setLineCap('round');\n }\n else {\n ctx.setLineCap('square');\n }\n }\n // Apply the text styling to the context\n applyFontStyle() {\n const ctx = this.checkContext();\n ctx.setFont(this.textFont);\n const render_options = this.render_options;\n const color = render_options.color;\n if (color) {\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n }\n }\n // Helper function to draw a line with arrow heads\n drawArrowLine(ctx, pt1, pt2) {\n const both_arrows = this.render_options.draw_start_arrow && this.render_options.draw_end_arrow;\n const x1 = pt1.x;\n const y1 = pt1.y;\n const x2 = pt2.x;\n const y2 = pt2.y;\n // For ends with arrow we actually want to stop before we get to the arrow\n // so that wide lines won't put a flat end on the arrow.\n const distance = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n const ratio = (distance - this.render_options.arrowhead_length / 3) / distance;\n let end_x;\n let end_y;\n let start_x;\n let start_y;\n if (this.render_options.draw_end_arrow || both_arrows) {\n end_x = Math.round(x1 + (x2 - x1) * ratio);\n end_y = Math.round(y1 + (y2 - y1) * ratio);\n }\n else {\n end_x = x2;\n end_y = y2;\n }\n if (this.render_options.draw_start_arrow || both_arrows) {\n start_x = x1 + (x2 - x1) * (1 - ratio);\n start_y = y1 + (y2 - y1) * (1 - ratio);\n }\n else {\n start_x = x1;\n start_y = y1;\n }\n if (this.render_options.color) {\n ctx.setStrokeStyle(this.render_options.color);\n ctx.setFillStyle(this.render_options.color);\n }\n // Draw the shaft of the arrow\n ctx.beginPath();\n ctx.moveTo(start_x, start_y);\n ctx.lineTo(end_x, end_y);\n ctx.stroke();\n ctx.closePath();\n // calculate the angle of the line\n const line_angle = Math.atan2(y2 - y1, x2 - x1);\n // h is the line length of a side of the arrow head\n const h = Math.abs(this.render_options.arrowhead_length / Math.cos(this.render_options.arrowhead_angle));\n let angle1;\n let angle2;\n let top_x;\n let top_y;\n let bottom_x;\n let bottom_y;\n if (this.render_options.draw_end_arrow || both_arrows) {\n angle1 = line_angle + Math.PI + this.render_options.arrowhead_angle;\n top_x = x2 + Math.cos(angle1) * h;\n top_y = y2 + Math.sin(angle1) * h;\n angle2 = line_angle + Math.PI - this.render_options.arrowhead_angle;\n bottom_x = x2 + Math.cos(angle2) * h;\n bottom_y = y2 + Math.sin(angle2) * h;\n drawArrowHead(ctx, top_x, top_y, x2, y2, bottom_x, bottom_y);\n }\n if (this.render_options.draw_start_arrow || both_arrows) {\n angle1 = line_angle + this.render_options.arrowhead_angle;\n top_x = x1 + Math.cos(angle1) * h;\n top_y = y1 + Math.sin(angle1) * h;\n angle2 = line_angle - this.render_options.arrowhead_angle;\n bottom_x = x1 + Math.cos(angle2) * h;\n bottom_y = y1 + Math.sin(angle2) * h;\n drawArrowHead(ctx, top_x, top_y, x1, y1, bottom_x, bottom_y);\n }\n }\n // Renders the `StaveLine` on the context\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const first_note = this.first_note;\n const last_note = this.last_note;\n const render_options = this.render_options;\n ctx.save();\n this.applyLineStyle();\n // Cycle through each set of indices and draw lines\n let start_position = { x: 0, y: 0 };\n let end_position = { x: 0, y: 0 };\n this.first_indices.forEach((first_index, i) => {\n const last_index = this.last_indices[i];\n // Get initial coordinates for the start/end of the line\n start_position = first_note.getModifierStartXY(2, first_index);\n end_position = last_note.getModifierStartXY(1, last_index);\n const upwards_slope = start_position.y > end_position.y;\n // Adjust `x` coordinates for modifiers\n start_position.x += first_note.getMetrics().modRightPx + render_options.padding_left;\n end_position.x -= last_note.getMetrics().modLeftPx + render_options.padding_right;\n // Adjust first `x` coordinates for displacements\n const notehead_width = first_note.getGlyph().getWidth();\n const first_displaced = first_note.getKeyProps()[first_index].displaced;\n if (first_displaced && first_note.getStemDirection() === 1) {\n start_position.x += notehead_width + render_options.padding_left;\n }\n // Adjust last `x` coordinates for displacements\n const last_displaced = last_note.getKeyProps()[last_index].displaced;\n if (last_displaced && last_note.getStemDirection() === -1) {\n end_position.x -= notehead_width + render_options.padding_right;\n }\n // Adjust y position better if it's not coming from the center of the note\n start_position.y += upwards_slope ? -3 : 1;\n end_position.y += upwards_slope ? 2 : 0;\n this.drawArrowLine(ctx, start_position, end_position);\n });\n ctx.restore();\n // Determine the x coordinate where to start the text\n const text_width = ctx.measureText(this.text).width;\n const justification = render_options.text_justification;\n let x = 0;\n if (justification === StaveLine.TextJustification.LEFT) {\n x = start_position.x;\n }\n else if (justification === StaveLine.TextJustification.CENTER) {\n const delta_x = end_position.x - start_position.x;\n const center_x = delta_x / 2 + start_position.x;\n x = center_x - text_width / 2;\n }\n else if (justification === StaveLine.TextJustification.RIGHT) {\n x = end_position.x - text_width;\n }\n // Determine the y value to start the text\n let y = 0;\n const vertical_position = render_options.text_position_vertical;\n if (vertical_position === StaveLine.TextVerticalPosition.TOP) {\n y = first_note.checkStave().getYForTopText();\n }\n else if (vertical_position === StaveLine.TextVerticalPosition.BOTTOM) {\n y = first_note.checkStave().getYForBottomText(Tables.TEXT_HEIGHT_OFFSET_HACK);\n }\n // Draw the text\n ctx.save();\n this.applyFontStyle();\n ctx.fillText(this.text, x, y);\n ctx.restore();\n return this;\n }\n}\n/** Default text font. */\nStaveLine.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n// Text Positioning\nStaveLine.TextVerticalPosition = {\n TOP: 1,\n BOTTOM: 2,\n};\nStaveLine.TextJustification = TextJustification;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { Note } from './note';\nimport { Stave } from './stave';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n/**\n * System implements a musical system, which is a collection of staves,\n * each which can have one or more voices. All voices across all staves in\n * the system are formatted together.\n */\nexport class System extends Element {\n constructor(params = {}) {\n super();\n this.setOptions(params);\n this.parts = [];\n }\n static get CATEGORY() {\n return Category.System;\n }\n /** Set formatting options. */\n setOptions(options = {}) {\n if (!options.factory) {\n throw new RuntimeError('NoFactory', 'System.setOptions(options) requires a factory.');\n }\n this.factory = options.factory;\n this.options = Object.assign(Object.assign({ factory: this.factory, x: 10, y: 10, width: 500, spaceBetweenStaves: 12, autoWidth: false, noJustification: false, debugFormatter: false, formatIterations: 0, noPadding: false }, options), { details: Object.assign({ alpha: 0.5 }, options.details), formatOptions: Object.assign({}, options.formatOptions) });\n if (this.options.noJustification === false && typeof options.width === 'undefined') {\n this.options.autoWidth = true;\n }\n }\n /** Set associated context. */\n setContext(context) {\n super.setContext(context);\n this.factory.setContext(context);\n return this;\n }\n /**\n * Add connector between staves.\n * @param type see {@link StaveConnector.typeString}\n */\n addConnector(type = 'double') {\n this.connector = this.factory.StaveConnector({\n top_stave: this.parts[0].stave,\n bottom_stave: this.parts[this.parts.length - 1].stave,\n type,\n });\n return this.connector;\n }\n /**\n * Add a stave to the system.\n *\n * Example (one voice):\n *\n * `system.addStave({voices: [score.voice(score.notes('C#5/q, B4, A4, G#4'))]});`\n *\n * Example (two voices):\n *\n * `system.addStave({voices: [`\n * `score.voice(score.notes('C#5/q, B4, A4, G#4', {stem: 'up'})),`\n * `score.voice(score.notes('C#4/h, C#4', {stem: 'down'}))`\n * `]});`\n */\n addStave(params) {\n var _a;\n const staveOptions = Object.assign({ left_bar: false }, params.options);\n const stave = (_a = params.stave) !== null && _a !== void 0 ? _a : this.factory.Stave({ x: this.options.x, y: this.options.y, width: this.options.width, options: staveOptions });\n const p = Object.assign(Object.assign({ stave, \n /* voices: [], */\n spaceAbove: 0, spaceBelow: 0, debugNoteMetrics: false, noJustification: false }, params), { options: staveOptions });\n const ctx = this.getContext();\n p.voices.forEach((voice) => voice\n .setContext(ctx)\n .setStave(stave)\n .getTickables()\n .forEach((tickable) => tickable.setStave(stave)));\n this.parts.push(p);\n return stave;\n }\n /** Format the system. */\n format() {\n const options_details = this.options.details;\n let justifyWidth = 0;\n const formatter = new Formatter(options_details);\n this.formatter = formatter;\n let y = this.options.y;\n let startX = 0;\n let allVoices = [];\n let allStaves = [];\n const debugNoteMetricsYs = [];\n // Join the voices for each stave.\n this.parts.forEach((part) => {\n y = y + part.stave.space(part.spaceAbove);\n part.stave.setY(y);\n formatter.joinVoices(part.voices);\n y = y + part.stave.space(part.spaceBelow);\n y = y + part.stave.space(this.options.spaceBetweenStaves);\n if (part.debugNoteMetrics) {\n debugNoteMetricsYs.push({ y, voice: part.voices[0] });\n y += 15;\n }\n allVoices = allVoices.concat(part.voices);\n allStaves = allStaves.concat(part.stave);\n startX = Math.max(startX, part.stave.getNoteStartX());\n });\n // Update the start position of all staves.\n this.parts.forEach((part) => part.stave.setNoteStartX(startX));\n if (this.options.autoWidth) {\n justifyWidth = formatter.preCalculateMinTotalWidth(allVoices);\n this.parts.forEach((part) => {\n part.stave.setWidth(justifyWidth + Stave.rightPadding + (startX - this.options.x));\n });\n }\n else {\n justifyWidth = this.options.noPadding\n ? this.options.width - (startX - this.options.x)\n : this.options.width - (startX - this.options.x) - Stave.defaultPadding;\n }\n formatter.format(allVoices, this.options.noJustification ? 0 : justifyWidth, this.options.formatOptions);\n formatter.postFormat();\n for (let i = 0; i < this.options.formatIterations; i++) {\n formatter.tune(options_details);\n }\n this.startX = startX;\n this.debugNoteMetricsYs = debugNoteMetricsYs;\n this.lastY = y;\n this.boundingBox = new BoundingBox(this.options.x, this.options.y, this.options.width, this.lastY - this.options.y);\n Stave.formatBegModifiers(allStaves);\n }\n /** Render the system. */\n draw() {\n // Render debugging information, if requested.\n const ctx = this.checkContext();\n if (!this.formatter || !this.startX || !this.lastY || !this.debugNoteMetricsYs) {\n throw new RuntimeError('NoFormatter', 'format() must be called before draw()');\n }\n this.setRendered();\n if (this.options.debugFormatter) {\n Formatter.plotDebugging(ctx, this.formatter, this.startX, this.options.y, this.lastY);\n }\n this.debugNoteMetricsYs.forEach((d) => {\n d.voice.getTickables().forEach((tickable) => Note.plotMetrics(ctx, tickable, d.y));\n });\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// The file implements notes for Tablature notation. This consists of one or\n// more fret positions, and can either be drawn with or without stems.\n//\n// See `tests/tabnote_tests.ts` for usage examples.\nimport { Font } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { StemmableNote } from './stemmablenote';\nimport { Tables } from './tables';\nimport { Category, isDot } from './typeguard';\nimport { defined, RuntimeError } from './util';\n// Gets the unused strings grouped together if consecutive.\n//\n// Parameters:\n// * num_lines - The number of lines\n// * strings_used - An array of numbers representing which strings have fret positions\nfunction getUnusedStringGroups(num_lines, strings_used) {\n const stem_through = [];\n let group = [];\n for (let string = 1; string <= num_lines; string++) {\n const is_used = strings_used.indexOf(string) > -1;\n if (!is_used) {\n group.push(string);\n }\n else {\n stem_through.push(group);\n group = [];\n }\n }\n if (group.length > 0)\n stem_through.push(group);\n return stem_through;\n}\n// Gets groups of points that outline the partial stem lines\n// between fret positions\n//\n// Parameters:\n// * stem_Y - The `y` coordinate the stem is located on\n// * unused_strings - An array of groups of unused strings\n// * stave - The stave to use for reference\n// * stem_direction - The direction of the stem\nfunction getPartialStemLines(stem_y, unused_strings, stave, stem_direction) {\n const up_stem = stem_direction !== 1;\n const down_stem = stem_direction !== -1;\n const line_spacing = stave.getSpacingBetweenLines();\n const total_lines = stave.getNumLines();\n const stem_lines = [];\n unused_strings.forEach((strings) => {\n const containsLastString = strings.indexOf(total_lines) > -1;\n const containsFirstString = strings.indexOf(1) > -1;\n if ((up_stem && containsFirstString) || (down_stem && containsLastString)) {\n return;\n }\n // If there's only one string in the group, push a duplicate value.\n // We do this because we need 2 strings to convert into upper/lower y\n // values.\n if (strings.length === 1) {\n strings.push(strings[0]);\n }\n const line_ys = [];\n // Iterate through each group string and store it's y position\n strings.forEach((string, index, strings) => {\n const isTopBound = string === 1;\n const isBottomBound = string === total_lines;\n // Get the y value for the appropriate staff line,\n // we adjust for a 0 index array, since string numbers are index 1\n let y = stave.getYForLine(string - 1);\n // Unless the string is the first or last, add padding to each side\n // of the line\n if (index === 0 && !isTopBound) {\n y -= line_spacing / 2 - 1;\n }\n else if (index === strings.length - 1 && !isBottomBound) {\n y += line_spacing / 2 - 1;\n }\n // Store the y value\n line_ys.push(y);\n // Store a subsequent y value connecting this group to the main\n // stem above/below the stave if it's the top/bottom string\n if (stem_direction === 1 && isTopBound) {\n line_ys.push(stem_y - 2);\n }\n else if (stem_direction === -1 && isBottomBound) {\n line_ys.push(stem_y + 2);\n }\n });\n // Add the sorted y values to the\n stem_lines.push(line_ys.sort((a, b) => a - b));\n });\n return stem_lines;\n}\nexport class TabNote extends StemmableNote {\n // Initialize the TabNote with a `noteStruct` full of properties\n // and whether to `draw_stem` when rendering the note\n constructor(noteStruct, draw_stem = false) {\n super(noteStruct);\n this.glyphs = [];\n // Return the number of the greatest string, which is the string lowest on the display\n this.greatestString = () => {\n return this.positions.map((x) => x.str).reduce((a, b) => (a > b ? a : b));\n };\n // Return the number of the least string, which is the string highest on the display\n this.leastString = () => {\n return this.positions.map((x) => x.str).reduce((a, b) => (a < b ? a : b));\n };\n this.ghost = false; // Renders parenthesis around notes\n // Note properties\n // The fret positions in the note. An array of `{ str: X, fret: X }`\n this.positions = noteStruct.positions || [];\n // Render Options\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads and rests\n glyph_font_scale: Tables.TABLATURE_FONT_SCALE, \n // Flag to draw a stem\n draw_stem, \n // Flag to draw dot modifiers\n draw_dots: draw_stem, \n // Flag to extend the main stem through the stave and fret positions\n draw_stem_through_stave: false, \n // vertical shift from stave line\n y_shift: 0, \n // normal glyph scale\n scale: 1.0, \n // default tablature font\n font: `${Font.SIZE}pt ${Font.SANS_SERIF}` });\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n this.buildStem();\n if (noteStruct.stem_direction) {\n this.setStemDirection(noteStruct.stem_direction);\n }\n else {\n this.setStemDirection(Stem.UP);\n }\n // Renders parenthesis around notes\n this.ghost = false;\n this.updateWidth();\n }\n static get CATEGORY() {\n return Category.TabNote;\n }\n reset() {\n super.reset();\n if (this.stave)\n this.setStave(this.stave);\n return this;\n }\n // Set as ghost `TabNote`, surrounds the fret positions with parenthesis.\n // Often used for indicating frets that are being bent to\n setGhost(ghost) {\n this.ghost = ghost;\n this.updateWidth();\n return this;\n }\n // Determine if the note has a stem\n hasStem() {\n if (this.render_options.draw_stem)\n return true;\n return false;\n }\n // Get the default stem extension for the note\n getStemExtension() {\n const glyph = this.getGlyph();\n if (this.stem_extension_override != null) {\n return this.stem_extension_override;\n }\n if (glyph) {\n return this.getStemDirection() === Stem.UP ? glyph.tabnote_stem_up_extension : glyph.tabnote_stem_down_extension;\n }\n return 0;\n }\n // Calculate and store the width of the note\n updateWidth() {\n this.glyphs = [];\n this.width = 0;\n for (let i = 0; i < this.positions.length; ++i) {\n let fret = this.positions[i].fret;\n if (this.ghost)\n fret = '(' + fret + ')';\n const glyph = Tables.tabToGlyph(fret.toString(), this.render_options.scale);\n this.glyphs.push(glyph);\n this.width = Math.max(glyph.getWidth(), this.width);\n }\n // For some reason we associate a notehead glyph with a TabNote, and this\n // glyph is used for certain width calculations. Of course, this is totally\n // incorrect since a notehead is a poor approximation for the dimensions of\n // a fret number which can have multiple digits. As a result, we must\n // overwrite getWidth() to return the correct width\n this.glyph.getWidth = () => this.width;\n }\n // Set the `stave` to the note\n setStave(stave) {\n super.setStave(stave);\n const ctx = stave.getContext();\n this.setContext(ctx);\n // Calculate the fret number width based on font used\n if (ctx) {\n this.width = 0;\n for (let i = 0; i < this.glyphs.length; ++i) {\n const glyph = this.glyphs[i];\n const text = '' + glyph.text;\n if (text.toUpperCase() !== 'X') {\n ctx.save();\n ctx.setFont(this.render_options.font);\n glyph.width = ctx.measureText(text).width;\n ctx.restore();\n glyph.getWidth = () => glyph.width;\n }\n this.width = Math.max(glyph.getWidth(), this.width);\n }\n this.glyph.getWidth = () => this.width;\n }\n // we subtract 1 from `line` because getYForLine expects a 0-based index,\n // while the position.str is a 1-based index\n const ys = this.positions.map(({ str: line }) => stave.getYForLine(Number(line) - 1));\n this.setYs(ys);\n if (this.stem) {\n this.stem.setYBounds(this.getStemY(), this.getStemY());\n }\n return this;\n }\n // Get the fret positions for the note\n getPositions() {\n return this.positions;\n }\n // Get the default `x` and `y` coordinates for a modifier at a specific\n // `position` at a fret position `index`\n getModifierStartXY(position, index) {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-Values calculated for this note.');\n }\n let x = 0;\n if (position === Modifier.Position.LEFT) {\n x = -1 * 2; // FIXME: modifier padding, move to font file\n }\n else if (position === Modifier.Position.RIGHT) {\n x = this.width + 2; // FIXME: modifier padding, move to font file\n }\n else if (position === Modifier.Position.BELOW || position === Modifier.Position.ABOVE) {\n const note_glyph_width = this.glyph.getWidth();\n x = note_glyph_width / 2;\n }\n return {\n x: this.getAbsoluteX() + x,\n y: this.ys[index],\n };\n }\n // Get the default line for rest\n getLineForRest() {\n return Number(this.positions[0].str);\n }\n // Pre-render formatting\n preFormat() {\n if (this.preFormatted)\n return;\n if (this.modifierContext)\n this.modifierContext.preFormat();\n // width is already set during init()\n this.preFormatted = true;\n }\n // Get the x position for the stem\n getStemX() {\n return this.getCenterGlyphX();\n }\n // Get the y position for the stem\n getStemY() {\n const num_lines = this.checkStave().getNumLines();\n // The decimal staff line amounts provide optimal spacing between the\n // fret number and the stem\n const stemUpLine = -0.5;\n const stemDownLine = num_lines - 0.5;\n const stemStartLine = Stem.UP === this.stem_direction ? stemUpLine : stemDownLine;\n return this.checkStave().getYForLine(stemStartLine);\n }\n // Get the stem extents for the tabnote\n getStemExtents() {\n return this.checkStem().getExtents();\n }\n // Draw the fal onto the context\n drawFlag() {\n var _a;\n const { beam, glyph, render_options: { draw_stem }, } = this;\n const context = this.checkContext();\n const shouldDrawFlag = beam == undefined && draw_stem;\n // Now it's the flag's turn.\n if (glyph.flag && shouldDrawFlag) {\n const flag_x = this.getStemX();\n const flag_y = this.getStemDirection() === Stem.DOWN\n ? // Down stems are below the note head and have flags on the right.\n this.getStemY() - this.checkStem().getHeight() - (this.glyph ? this.glyph.stem_down_extension : 0)\n : // Up stems are above the note head and have flags on the right.\n this.getStemY() - this.checkStem().getHeight() + (this.glyph ? this.glyph.stem_up_extension : 0);\n // Draw the Flag\n //this.flag?.setOptions({ category: 'flag.tabStem' });\n (_a = this.flag) === null || _a === void 0 ? void 0 : _a.render(context, flag_x, flag_y);\n //Glyph.renderGlyph(context, flag_x, flag_y, glyph_font_scale, flag_code, { category: 'flag.tabStem' });\n }\n }\n // Render the modifiers onto the context.\n drawModifiers() {\n this.modifiers.forEach((modifier) => {\n // Only draw the dots if enabled.\n if (isDot(modifier) && !this.render_options.draw_dots) {\n return;\n }\n modifier.setContext(this.getContext());\n modifier.drawWithStyle();\n });\n }\n // Render the stem extension through the fret positions\n drawStemThrough() {\n const stemX = this.getStemX();\n const stemY = this.getStemY();\n const ctx = this.checkContext();\n const drawStem = this.render_options.draw_stem;\n const stemThrough = this.render_options.draw_stem_through_stave;\n if (drawStem && stemThrough) {\n const numLines = this.checkStave().getNumLines();\n const stringsUsed = this.positions.map((position) => Number(position.str));\n const unusedStrings = getUnusedStringGroups(numLines, stringsUsed);\n const stemLines = getPartialStemLines(stemY, unusedStrings, this.checkStave(), this.getStemDirection());\n ctx.save();\n ctx.setLineWidth(Stem.WIDTH);\n stemLines.forEach((bounds) => {\n if (bounds.length === 0)\n return;\n ctx.beginPath();\n ctx.moveTo(stemX, bounds[0]);\n ctx.lineTo(stemX, bounds[bounds.length - 1]);\n ctx.stroke();\n ctx.closePath();\n });\n ctx.restore();\n }\n }\n // Render the fret positions onto the context\n drawPositions() {\n const ctx = this.checkContext();\n const x = this.getAbsoluteX();\n const ys = this.ys;\n for (let i = 0; i < this.positions.length; ++i) {\n const y = ys[i] + this.render_options.y_shift;\n const glyph = this.glyphs[i];\n // Center the fret text beneath the notation note head\n const note_glyph_width = this.glyph.getWidth();\n const tab_x = x + note_glyph_width / 2 - glyph.getWidth() / 2;\n // FIXME: Magic numbers.\n ctx.clearRect(tab_x - 2, y - 3, glyph.getWidth() + 4, 6);\n if (glyph.code) {\n Glyph.renderGlyph(ctx, tab_x, y, this.render_options.glyph_font_scale * this.render_options.scale, glyph.code);\n }\n else {\n ctx.save();\n ctx.setFont(this.render_options.font);\n const text = glyph.text.toString();\n ctx.fillText(text, tab_x, y + 5 * this.render_options.scale);\n ctx.restore();\n }\n }\n }\n // The main rendering function for the entire note.\n draw() {\n const ctx = this.checkContext();\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', \"Can't draw note without Y values.\");\n }\n this.setRendered();\n const render_stem = this.beam == undefined && this.render_options.draw_stem;\n ctx.openGroup('tabnote', this.getAttribute('id'), { pointerBBox: true });\n this.drawPositions();\n this.drawStemThrough();\n if (this.stem && render_stem) {\n const stem_x = this.getStemX();\n this.stem.setNoteHeadXBounds(stem_x, stem_x);\n this.stem.setContext(ctx).draw();\n }\n this.drawFlag();\n this.drawModifiers();\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Stave } from './stave';\nimport { Category } from './typeguard';\nexport class TabStave extends Stave {\n static get CATEGORY() {\n return Category.TabStave;\n }\n constructor(x, y, width, options) {\n const tab_options = Object.assign({ spacing_between_lines_px: 13, num_lines: 6, top_text_position: 1 }, options);\n super(x, y, width, tab_options);\n }\n getYForGlyphs() {\n return this.getYForLine(2.5);\n }\n // Deprecated\n addTabGlyph() {\n this.addClef('tab');\n return this;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n//\n// This file implements `TextBrackets` which extend between two notes.\n// The octave transposition markings (8va, 8vb, 15va, 15vb) can be created\n// using this class.\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Renderer } from './renderer';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.TextBracket.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextBracket.DEBUG)\n log('Vex.Flow.TextBracket', args);\n}\nexport var TextBracketPosition;\n(function (TextBracketPosition) {\n TextBracketPosition[TextBracketPosition[\"TOP\"] = 1] = \"TOP\";\n TextBracketPosition[TextBracketPosition[\"BOTTOM\"] = -1] = \"BOTTOM\";\n})(TextBracketPosition || (TextBracketPosition = {}));\nexport class TextBracket extends Element {\n constructor({ start, stop, text = '', superscript = '', position = TextBracketPosition.TOP }) {\n super();\n this.start = start;\n this.stop = stop;\n this.text = text;\n this.superscript = superscript;\n this.position = typeof position === 'string' ? TextBracket.PositionString[position] : position;\n this.line = 1;\n this.resetFont();\n this.render_options = {\n dashed: true,\n dash: [5],\n color: 'black',\n line_width: 1,\n show_bracket: true,\n bracket_height: 8,\n // In the BOTTOM position, the bracket line can extend\n // under the superscript.\n underline_superscript: true,\n };\n }\n static get CATEGORY() {\n return Category.TextBracket;\n }\n static get Position() {\n return TextBracketPosition;\n }\n static get PositionString() {\n return {\n top: TextBracketPosition.TOP,\n bottom: TextBracketPosition.BOTTOM,\n };\n }\n /**\n * @deprecated Use `TextBracket.Position` instead.\n */\n static get Positions() {\n L('Positions is deprecated, use TextBracketPosition instead.');\n return TextBracketPosition;\n }\n /**\n * @deprecated Use `TextBracket.PositionString` instead.\n */\n static get PositionsString() {\n L('PositionsString is deprecated, use PositionString instead.');\n return TextBracket.PositionString;\n }\n /**\n * Apply the text backet styling to the provided context.\n * @param ctx\n * @returns this\n */\n applyStyle(ctx) {\n ctx.setFont(this.font);\n const options = this.render_options;\n ctx.setStrokeStyle(options.color);\n ctx.setFillStyle(options.color);\n ctx.setLineWidth(options.line_width);\n return this;\n }\n // Set whether the bracket line should be `dashed`. You can also\n // optionally set the `dash` pattern by passing in an array of numbers\n setDashed(dashed, dash) {\n this.render_options.dashed = dashed;\n if (dash)\n this.render_options.dash = dash;\n return this;\n }\n // Set the rendering `context` for the octave bracket\n setLine(line) {\n this.line = line;\n return this;\n }\n // Draw the octave bracket on the rendering context\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let y = 0;\n switch (this.position) {\n case TextBracketPosition.TOP:\n y = this.start.checkStave().getYForTopText(this.line);\n break;\n case TextBracketPosition.BOTTOM:\n y = this.start.checkStave().getYForBottomText(this.line + Tables.TEXT_HEIGHT_OFFSET_HACK);\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} is invalid.`);\n }\n // Get the preliminary start and stop coordintates for the bracket\n const start = { x: this.start.getAbsoluteX(), y };\n const stop = { x: this.stop.getAbsoluteX(), y };\n L('Rendering TextBracket: start:', start, 'stop:', stop, 'y:', y);\n const bracket_height = this.render_options.bracket_height * this.position;\n ctx.save();\n this.applyStyle(ctx);\n // Draw text\n ctx.fillText(this.text, start.x, start.y);\n // Get the width and height for the octave number\n const main_measure = ctx.measureText(this.text);\n const main_width = main_measure.width;\n const main_height = main_measure.height;\n // Calculate the y position for the super script\n const super_y = start.y - main_height / 2.5;\n // We called this.resetFont() in the constructor, so we know this.textFont is available.\n // eslint-disable-next-line\n const { family, size, weight, style } = this.textFont;\n // To draw the superscript, we scale the font size by 1/1.4.\n const smallerFontSize = Font.scaleSize(size, 0.714286);\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.superscript, start.x + main_width + 1, super_y);\n // Determine width and height of the superscript\n const super_measure = ctx.measureText(this.superscript);\n const super_width = super_measure.width;\n const super_height = super_measure.height;\n // Setup initial coordinates for the bracket line\n let start_x = start.x;\n let line_y = super_y;\n const end_x = stop.x + this.stop.getGlyph().getWidth();\n // Adjust x and y coordinates based on position\n if (this.position === TextBracketPosition.TOP) {\n start_x += main_width + super_width + 5;\n line_y -= super_height / 2.7;\n }\n else if (this.position === TextBracketPosition.BOTTOM) {\n line_y += super_height / 2.7;\n start_x += main_width + 2;\n if (!this.render_options.underline_superscript) {\n start_x += super_width;\n }\n }\n if (this.render_options.dashed) {\n // Main line\n Renderer.drawDashedLine(ctx, start_x, line_y, end_x, line_y, this.render_options.dash);\n // Ending Bracket\n if (this.render_options.show_bracket) {\n Renderer.drawDashedLine(ctx, end_x, line_y + 1 * this.position, end_x, line_y + bracket_height, this.render_options.dash);\n }\n }\n else {\n ctx.beginPath();\n ctx.moveTo(start_x, line_y);\n // Main line\n ctx.lineTo(end_x, line_y);\n if (this.render_options.show_bracket) {\n // Ending bracket\n ctx.lineTo(end_x, line_y + bracket_height);\n }\n ctx.stroke();\n ctx.closePath();\n }\n ctx.restore();\n }\n}\nTextBracket.DEBUG = false;\nTextBracket.TEXT_FONT = {\n family: Font.SERIF,\n size: 15,\n weight: FontWeight.NORMAL,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextDynamics.DEBUG)\n log('Vex.Flow.TextDynamics', args);\n}\n/**\n * `TextDynamics` renders traditional\n * text dynamics markings, **ie: p, f, sfz, rfz, ppp**\n *\n * You can render any dynamics string that contains a combination of\n * the following letters: P, M, F, Z, R, S\n */\nexport class TextDynamics extends Note {\n /**\n * Create the dynamics marking.\n *\n * A `TextDynamics` object inherits from `Note` so that it can be formatted\n * within a `Voice`.\n *\n * @param noteStruct an object that contains a `duration` property and a\n * `sequence` of letters that represents the letters to render.\n */\n constructor(noteStruct) {\n super(noteStruct);\n this.sequence = (noteStruct.text || '').toLowerCase();\n this.line = noteStruct.line || 0;\n this.glyphs = [];\n this.render_options = Object.assign(Object.assign({}, this.render_options), { glyph_font_size: 40 });\n L('New Dynamics Text: ', this.sequence);\n }\n static get CATEGORY() {\n return Category.TextDynamics;\n }\n /** The glyph data for each dynamics letter. */\n static get GLYPHS() {\n return {\n f: {\n code: 'dynamicForte',\n width: 12,\n },\n p: {\n code: 'dynamicPiano',\n width: 14,\n },\n m: {\n code: 'dynamicMezzo',\n width: 17,\n },\n s: {\n code: 'dynamicSforzando',\n width: 10,\n },\n z: {\n code: 'dynamicZ',\n width: 12,\n },\n r: {\n code: 'dynamicRinforzando',\n width: 12,\n },\n };\n }\n /** Set the Stave line on which the note should be placed. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Preformat the dynamics text. */\n preFormat() {\n let total_width = 0;\n // length of this.glyphs must be <=\n // length of this.sequence, so if we're formatted before\n // create new glyphs.\n this.glyphs = [];\n // Iterate through each letter\n this.sequence.split('').forEach((letter) => {\n // Get the glyph data for the letter\n const glyph_data = TextDynamics.GLYPHS[letter];\n if (!glyph_data)\n throw new RuntimeError('Invalid dynamics character: ' + letter);\n const size = defined(this.render_options.glyph_font_size);\n const glyph = new Glyph(glyph_data.code, size, { category: 'textNote' });\n // Add the glyph\n this.glyphs.push(glyph);\n total_width += glyph_data.width;\n });\n // Store the width of the text\n this.setWidth(total_width);\n this.preFormatted = true;\n return this;\n }\n /** Draw the dynamics text on the rendering context. */\n draw() {\n this.setRendered();\n const x = this.getAbsoluteX();\n const y = this.checkStave().getYForLine(this.line + -3);\n L('Rendering Dynamics: ', this.sequence);\n let letter_x = x;\n this.glyphs.forEach((glyph, index) => {\n const current_letter = this.sequence[index];\n glyph.render(this.checkContext(), letter_x, y);\n letter_x += TextDynamics.GLYPHS[current_letter].width;\n });\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.TextDynamics.DEBUG` to `true`. */\nTextDynamics.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\nimport { Note } from './note';\nimport { TimeSignature } from './timesignature';\nimport { Category } from './typeguard';\nexport class TimeSigNote extends Note {\n constructor(timeSpec, customPadding) {\n super({ duration: 'b' });\n const timeSignature = new TimeSignature(timeSpec, customPadding);\n this.timeSigInfo = timeSignature.getInfo();\n this.setWidth(this.timeSigInfo.glyph.getMetrics().width);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.TimeSigNote;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = this.checkContext();\n this.setRendered();\n if (!this.timeSigInfo.glyph.getContext()) {\n this.timeSigInfo.glyph.setContext(ctx);\n }\n this.timeSigInfo.glyph.setStave(stave);\n this.timeSigInfo.glyph.setYShift(stave.getYForLine(2) - stave.getYForGlyphs());\n this.timeSigInfo.glyph.renderToStave(this.getAbsoluteX());\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Balazs Forian-Szabo\n// MIT License\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { log } from './util';\nimport { Vibrato } from './vibrato';\n// eslint-disable-next-line\nfunction L(...args) {\n if (VibratoBracket.DEBUG)\n log('Vex.Flow.VibratoBracket', args);\n}\n/** `VibratoBracket` renders vibrato effect between two notes. */\nexport class VibratoBracket extends Element {\n /**\n * Either the stop or start note must be set, or both of them.\n * An undefined value for the start or stop note indicates that the vibrato\n * is drawn from the beginning or until the end of the stave accordingly.\n */\n constructor(bracket_data) {\n super();\n if (bracket_data.start)\n this.start = bracket_data.start;\n if (bracket_data.stop)\n this.stop = bracket_data.stop;\n this.line = 1;\n this.render_options = {\n harsh: false,\n wave_height: 6,\n wave_width: 4,\n wave_girth: 2,\n vibrato_width: 0,\n };\n }\n static get CATEGORY() {\n return Category.VibratoBracket;\n }\n /** Set line position of the vibrato bracket. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Set harsh vibrato bracket. */\n setHarsh(harsh) {\n this.render_options.harsh = harsh;\n return this;\n }\n /** Draw the vibrato bracket on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const y = (this.start && this.start.checkStave().getYForTopText(this.line)) ||\n (this.stop && this.stop.checkStave().getYForTopText(this.line)) ||\n 0;\n // If start note is not set then vibrato will be drawn\n // from the beginning of the stave\n const start_x = (this.start && this.start.getAbsoluteX()) || (this.stop && this.stop.checkStave().getTieStartX()) || 0;\n // If stop note is not set then vibrato will be drawn\n // until the end of the stave\n const stop_x = (this.stop && this.stop.getAbsoluteX() - this.stop.getWidth() - 5) ||\n (this.start && this.start.checkStave().getTieEndX() - 10) ||\n 0;\n this.render_options.vibrato_width = stop_x - start_x;\n L('Rendering VibratoBracket: start_x:', start_x, 'stop_x:', stop_x, 'y:', y);\n Vibrato.renderVibrato(ctx, start_x, y, this.render_options);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.VibratoBracket.DEBUG` to `true`. */\nVibratoBracket.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n// MIT License\nimport { Accidental } from './accidental';\nimport { Annotation, AnnotationHorizontalJustify, AnnotationVerticalJustify } from './annotation';\nimport { Articulation } from './articulation';\nimport { BarNote } from './barnote';\nimport { Beam } from './beam';\nimport { ChordSymbol } from './chordsymbol';\nimport { ClefNote } from './clefnote';\nimport { Curve } from './curve';\nimport { EasyScore } from './easyscore';\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { FretHandFinger } from './frethandfinger';\nimport { GhostNote } from './ghostnote';\nimport { GlyphNote } from './glyphnote';\nimport { GraceNote } from './gracenote';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { KeySigNote } from './keysignote';\nimport { ModifierContext } from './modifiercontext';\nimport { MultiMeasureRest } from './multimeasurerest';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { PedalMarking } from './pedalmarking';\nimport { Renderer } from './renderer';\nimport { RepeatNote } from './repeatnote';\nimport { Stave } from './stave';\nimport { StaveConnector } from './staveconnector';\nimport { StaveLine } from './staveline';\nimport { StaveNote } from './stavenote';\nimport { StaveTie } from './stavetie';\nimport { StringNumber } from './stringnumber';\nimport { System } from './system';\nimport { TabNote } from './tabnote';\nimport { TabStave } from './tabstave';\nimport { TextBracket } from './textbracket';\nimport { TextDynamics } from './textdynamics';\nimport { TextNote } from './textnote';\nimport { TickContext } from './tickcontext';\nimport { TimeSigNote } from './timesignote';\nimport { Tuplet } from './tuplet';\nimport { defined, log, RuntimeError } from './util';\nimport { VibratoBracket } from './vibratobracket';\nimport { Voice } from './voice';\nimport { isHTMLCanvas } from './web';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Factory.DEBUG)\n log('Vex.Flow.Factory', args);\n}\n/**\n * Factory implements a high level API around VexFlow.\n */\nexport class Factory {\n /**\n * Example:\n *\n * Create an SVG renderer and attach it to the DIV element named \"boo\" to render using 1200 and 600\n *\n * `const vf: Factory = new Vex.Flow.Factory({renderer: { elementId: 'boo', width: 1200, height: 600 }});`\n */\n constructor(options = {}) {\n L('New factory: ', options);\n this.options = {\n stave: {\n space: 10,\n },\n renderer: {\n elementId: '',\n width: 500,\n height: 200,\n background: '#FFF',\n },\n font: Factory.TEXT_FONT,\n };\n this.setOptions(options);\n }\n /**\n * Static simplified function to access constructor without providing FactoryOptions\n *\n * Example:\n *\n * Create an SVG renderer and attach it to the DIV element named \"boo\" to render using 1200 and 600\n *\n * `const vf: Factory = Vex.Flow.Factory.newFromElementId('boo', 1200, 600 );`\n */\n static newFromElementId(elementId, width = 500, height = 200) {\n return new Factory({ renderer: { elementId, width, height } });\n }\n reset() {\n this.renderQ = [];\n this.systems = [];\n this.staves = [];\n this.voices = [];\n this.stave = undefined; // current stave\n }\n setOptions(options) {\n this.options = Object.assign(Object.assign({}, this.options), options);\n this.initRenderer();\n this.reset();\n }\n initRenderer() {\n const { elementId, width, height, background } = this.options.renderer;\n if (elementId == null) {\n return;\n }\n if (elementId == '') {\n L(this);\n throw new RuntimeError('renderer.elementId not set in FactoryOptions');\n }\n let backend = this.options.renderer.backend;\n if (backend === undefined) {\n const elem = document.getElementById(elementId);\n // We use a custom type check here, because node-canvas mimics canvas,\n // but is not an instance of window.HTMLCanvasElement.\n // In fact, `window` might be undefined here.\n // See: https://www.npmjs.com/package/canvas\n if (isHTMLCanvas(elem)) {\n backend = Renderer.Backends.CANVAS;\n }\n else {\n backend = Renderer.Backends.SVG;\n }\n }\n this.context = Renderer.buildContext(elementId, backend, width, height, background);\n }\n getContext() {\n return this.context;\n }\n setContext(context) {\n this.context = context;\n return this;\n }\n getStave() {\n return this.stave;\n }\n getVoices() {\n return this.voices;\n }\n /** Return pixels from current stave spacing. */\n Stave(params) {\n const staveSpace = this.options.stave.space;\n const p = Object.assign({ x: 0, y: 0, width: this.options.renderer.width - staveSpace * 1.0, options: { spacing_between_lines_px: staveSpace * 1.0 } }, params);\n const stave = new Stave(p.x, p.y, p.width, p.options);\n this.staves.push(stave);\n stave.setContext(this.context);\n this.stave = stave;\n return stave;\n }\n TabStave(params) {\n const staveSpace = this.options.stave.space;\n const p = Object.assign({ x: 0, y: 0, width: this.options.renderer.width - staveSpace * 1.0, options: { spacing_between_lines_px: staveSpace * 1.3 } }, params);\n const stave = new TabStave(p.x, p.y, p.width, p.options);\n this.staves.push(stave);\n stave.setContext(this.context);\n this.stave = stave;\n return stave;\n }\n StaveNote(noteStruct) {\n const note = new StaveNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GlyphNote(glyph, noteStruct, options) {\n const note = new GlyphNote(glyph, noteStruct, options);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n RepeatNote(type, noteStruct, options) {\n const note = new RepeatNote(type, noteStruct, options);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GhostNote(noteStruct) {\n const ghostNote = new GhostNote(noteStruct);\n if (this.stave)\n ghostNote.setStave(this.stave);\n ghostNote.setContext(this.context);\n this.renderQ.push(ghostNote);\n return ghostNote;\n }\n TextNote(noteStruct) {\n const textNote = new TextNote(noteStruct);\n if (this.stave)\n textNote.setStave(this.stave);\n textNote.setContext(this.context);\n this.renderQ.push(textNote);\n return textNote;\n }\n BarNote(params = {}) {\n const barNote = new BarNote(params.type);\n if (this.stave)\n barNote.setStave(this.stave);\n barNote.setContext(this.context);\n this.renderQ.push(barNote);\n return barNote;\n }\n ClefNote(params) {\n const p = Object.assign({ type: 'treble', options: {\n size: 'default',\n annotation: undefined,\n } }, params);\n const clefNote = new ClefNote(p.type, p.options.size, p.options.annotation);\n if (this.stave)\n clefNote.setStave(this.stave);\n clefNote.setContext(this.context);\n this.renderQ.push(clefNote);\n return clefNote;\n }\n TimeSigNote(params) {\n const p = Object.assign({ time: '4/4' }, params);\n const timeSigNote = new TimeSigNote(p.time);\n if (this.stave)\n timeSigNote.setStave(this.stave);\n timeSigNote.setContext(this.context);\n this.renderQ.push(timeSigNote);\n return timeSigNote;\n }\n KeySigNote(params) {\n const keySigNote = new KeySigNote(params.key, params.cancelKey, params.alterKey);\n if (this.stave)\n keySigNote.setStave(this.stave);\n keySigNote.setContext(this.context);\n this.renderQ.push(keySigNote);\n return keySigNote;\n }\n TabNote(noteStruct) {\n const note = new TabNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GraceNote(noteStruct) {\n const note = new GraceNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n return note;\n }\n GraceNoteGroup(params) {\n const group = new GraceNoteGroup(params.notes, params.slur);\n group.setContext(this.context);\n return group;\n }\n Accidental(params) {\n const accid = new Accidental(params.type);\n accid.setContext(this.context);\n return accid;\n }\n Annotation(params) {\n const p = Object.assign({ text: 'p', hJustify: AnnotationHorizontalJustify.CENTER, vJustify: AnnotationVerticalJustify.BOTTOM }, params);\n const annotation = new Annotation(p.text);\n annotation.setJustification(p.hJustify);\n annotation.setVerticalJustification(p.vJustify);\n annotation.setFont(p.font);\n annotation.setContext(this.context);\n return annotation;\n }\n ChordSymbol(params) {\n const p = Object.assign({ vJustify: 'top', hJustify: 'center', kerning: true, reportWidth: true }, params);\n const chordSymbol = new ChordSymbol();\n chordSymbol.setHorizontal(p.hJustify);\n chordSymbol.setVertical(p.vJustify);\n chordSymbol.setEnableKerning(p.kerning);\n chordSymbol.setReportWidth(p.reportWidth);\n // There is a default font based on the engraving font. Only set then\n // font if it is specific, else use the default\n if (typeof p.fontFamily === 'string' && typeof p.fontSize === 'number') {\n if (typeof p.fontWeight === 'string')\n chordSymbol.setFont(p.fontFamily, p.fontSize, p.fontWeight);\n else\n chordSymbol.setFont(p.fontFamily, p.fontSize, '');\n }\n else if (typeof p.fontSize === 'number') {\n chordSymbol.setFontSize(p.fontSize);\n }\n chordSymbol.setContext(this.context);\n return chordSymbol;\n }\n Articulation(params) {\n const p = Object.assign({ type: 'a.', position: 'above' }, params);\n const articulation = new Articulation(p.type);\n articulation.setPosition(p.position);\n articulation.setContext(this.context);\n return articulation;\n }\n Ornament(type, params) {\n const options = Object.assign({ type, position: 0, accidental: '' }, params);\n const ornament = new Ornament(type);\n ornament.setPosition(options.position);\n if (options.upperAccidental) {\n ornament.setUpperAccidental(options.upperAccidental);\n }\n if (options.lowerAccidental) {\n ornament.setLowerAccidental(options.lowerAccidental);\n }\n if (typeof options.delayed !== 'undefined') {\n ornament.setDelayed(options.delayed);\n }\n ornament.setContext(this.context);\n return ornament;\n }\n TextDynamics(params) {\n const p = Object.assign({ text: 'p', duration: 'q', dots: 0, line: 0 }, params);\n const text = new TextDynamics({\n text: p.text,\n line: p.line,\n duration: p.duration,\n dots: p.dots,\n });\n if (this.stave)\n text.setStave(this.stave);\n text.setContext(this.context);\n this.renderQ.push(text);\n return text;\n }\n Fingering(params) {\n const p = Object.assign({ number: '0', position: 'left' }, params);\n const fingering = new FretHandFinger(p.number);\n fingering.setPosition(p.position);\n fingering.setContext(this.context);\n return fingering;\n }\n StringNumber(params, drawCircle = true) {\n const stringNumber = new StringNumber(params.number);\n stringNumber.setPosition(params.position);\n stringNumber.setContext(this.context);\n stringNumber.setDrawCircle(drawCircle);\n return stringNumber;\n }\n TickContext() {\n return new TickContext();\n }\n ModifierContext() {\n return new ModifierContext();\n }\n MultiMeasureRest(params) {\n const numMeasures = defined(params.number_of_measures, 'NoNumberOfMeasures');\n const multiMeasureRest = new MultiMeasureRest(numMeasures, params);\n multiMeasureRest.setContext(this.context);\n this.renderQ.push(multiMeasureRest);\n return multiMeasureRest;\n }\n Voice(params) {\n const p = Object.assign({ time: '4/4' }, params);\n const voice = new Voice(p.time);\n this.voices.push(voice);\n return voice;\n }\n StaveConnector(params) {\n const connector = new StaveConnector(params.top_stave, params.bottom_stave);\n connector.setType(params.type).setContext(this.context);\n this.renderQ.push(connector);\n return connector;\n }\n Formatter(options) {\n return new Formatter(options);\n }\n Tuplet(params) {\n const p = Object.assign({ notes: [], options: {} }, params);\n const tuplet = new Tuplet(p.notes, p.options).setContext(this.context);\n this.renderQ.push(tuplet);\n return tuplet;\n }\n Beam(params) {\n var _a, _b, _c, _d, _e;\n const beam = new Beam(params.notes, (_a = params.options) === null || _a === void 0 ? void 0 : _a.autoStem).setContext(this.context);\n beam.breakSecondaryAt((_c = (_b = params.options) === null || _b === void 0 ? void 0 : _b.secondaryBeamBreaks) !== null && _c !== void 0 ? _c : []);\n if ((_d = params.options) === null || _d === void 0 ? void 0 : _d.partialBeamDirections) {\n Object.entries((_e = params.options) === null || _e === void 0 ? void 0 : _e.partialBeamDirections).forEach(([noteIndex, direction]) => {\n beam.setPartialBeamSideAt(Number(noteIndex), direction);\n });\n }\n this.renderQ.push(beam);\n return beam;\n }\n Curve(params) {\n const curve = new Curve(params.from, params.to, params.options).setContext(this.context);\n this.renderQ.push(curve);\n return curve;\n }\n StaveTie(params) {\n var _a;\n const tie = new StaveTie({\n first_note: params.from,\n last_note: params.to,\n first_indices: params.first_indices,\n last_indices: params.last_indices,\n }, params.text);\n if ((_a = params.options) === null || _a === void 0 ? void 0 : _a.direction)\n tie.setDirection(params.options.direction);\n tie.setContext(this.context);\n this.renderQ.push(tie);\n return tie;\n }\n StaveLine(params) {\n var _a, _b;\n const line = new StaveLine({\n first_note: params.from,\n last_note: params.to,\n first_indices: params.first_indices,\n last_indices: params.last_indices,\n });\n if ((_a = params.options) === null || _a === void 0 ? void 0 : _a.text)\n line.setText(params.options.text);\n if ((_b = params.options) === null || _b === void 0 ? void 0 : _b.font)\n line.setFont(params.options.font);\n line.setContext(this.context);\n this.renderQ.push(line);\n return line;\n }\n VibratoBracket(params) {\n const vibratoBracket = new VibratoBracket({\n start: params.from,\n stop: params.to,\n });\n if (params.options.line)\n vibratoBracket.setLine(params.options.line);\n if (params.options.harsh)\n vibratoBracket.setHarsh(params.options.harsh);\n vibratoBracket.setContext(this.context);\n this.renderQ.push(vibratoBracket);\n return vibratoBracket;\n }\n TextBracket(params) {\n const textBracket = new TextBracket({\n start: params.from,\n stop: params.to,\n text: params.text,\n superscript: params.options.superscript,\n position: params.options.position,\n });\n if (params.options.line)\n textBracket.setLine(params.options.line);\n if (params.options.font)\n textBracket.setFont(params.options.font);\n textBracket.setContext(this.context);\n this.renderQ.push(textBracket);\n return textBracket;\n }\n System(params = {}) {\n params.factory = this;\n const system = new System(params).setContext(this.context);\n this.systems.push(system);\n return system;\n }\n /**\n * Creates EasyScore. Normally the first step after constructing a Factory. For example:\n * ```\n * const vf: Factory = new Vex.Flow.Factory({renderer: { elementId: 'boo', width: 1200, height: 600 }});\n * const score: EasyScore = vf.EasyScore();\n * ```\n * @param options.factory optional instance of Factory\n * @param options.builder instance of Builder\n * @param options.commitHooks function to call after a note element is created\n * @param options.throwOnError throw error in case of parsing error\n */\n EasyScore(options = {}) {\n options.factory = this;\n return new EasyScore(options);\n }\n PedalMarking(params) {\n const p = Object.assign({ notes: [], options: {\n style: 'mixed',\n } }, params);\n const pedal = new PedalMarking(p.notes);\n pedal.setType(PedalMarking.typeString[p.options.style]);\n pedal.setContext(this.context);\n this.renderQ.push(pedal);\n return pedal;\n }\n NoteSubGroup(params) {\n const p = Object.assign({ notes: [] }, params);\n const group = new NoteSubGroup(p.notes);\n group.setContext(this.context);\n return group;\n }\n /** Render the score. */\n draw() {\n const ctx = this.context;\n this.systems.forEach((s) => s.setContext(ctx).format());\n this.staves.forEach((s) => s.setContext(ctx).draw());\n this.voices.forEach((v) => v.setContext(ctx).draw());\n this.renderQ.forEach((e) => {\n if (!e.isRendered())\n e.setContext(ctx).draw();\n });\n this.systems.forEach((s) => s.setContext(ctx).draw());\n this.reset();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Factory.DEBUG` to `true`. */\nFactory.DEBUG = false;\n/** Default text font. */\nFactory.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Balazs Forian-Szabo\n//\n// ## Description\n//\n// A basic implementation of grace notes\n// to be rendered on a tab stave.\n//\n// See `tests/gracetabnote_tests.ts` for usage examples.\nimport { Font } from './font';\nimport { TabNote } from './tabnote';\nimport { Category } from './typeguard';\nexport class GraceTabNote extends TabNote {\n static get CATEGORY() {\n return Category.GraceTabNote;\n }\n constructor(noteStruct) {\n super(noteStruct, false);\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // vertical shift from stave line\n y_shift: 0.3, \n // grace glyph scale\n scale: 0.6, \n // grace tablature font\n font: `7.5pt ${Font.SANS_SERIF}` });\n this.updateWidth();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This class implements diatonic key management.\nimport { Music } from './music';\nimport { RuntimeError } from './util';\nexport class KeyManager {\n constructor(key) {\n this.music = new Music();\n this.setKey(key);\n }\n setKey(key) {\n this.key = key;\n this.reset();\n return this;\n }\n getKey() {\n return this.key;\n }\n reset() {\n this.keyParts = this.music.getKeyParts(this.key);\n this.keyString = this.keyParts.root;\n if (this.keyParts.accidental)\n this.keyString += this.keyParts.accidental;\n const is_supported_type = Music.scaleTypes[this.keyParts.type];\n if (!is_supported_type) {\n throw new RuntimeError('BadArguments', `Unsupported key type: ${this.key}`);\n }\n this.scale = this.music.getScaleTones(this.music.getNoteValue(this.keyString), Music.scaleTypes[this.keyParts.type]);\n this.scaleMap = {};\n this.scaleMapByValue = {};\n this.originalScaleMapByValue = {};\n const noteLocation = Music.root_indices[this.keyParts.root];\n for (let i = 0; i < Music.roots.length; ++i) {\n const index = (noteLocation + i) % Music.roots.length;\n const rootName = Music.roots[index];\n const noteName = this.music.getRelativeNoteName(rootName, this.scale[i]);\n this.scaleMap[rootName] = noteName;\n this.scaleMapByValue[this.scale[i]] = noteName;\n this.originalScaleMapByValue[this.scale[i]] = noteName;\n }\n return this;\n }\n getAccidental(key) {\n const root = this.music.getKeyParts(key).root;\n const parts = this.music.getNoteParts(this.scaleMap[root]);\n return {\n note: this.scaleMap[root],\n accidental: parts.accidental,\n };\n }\n selectNote(note) {\n note = note.toLowerCase();\n const parts = this.music.getNoteParts(note);\n // First look for matching note in our altered scale\n const scaleNote = this.scaleMap[parts.root];\n const modparts = this.music.getNoteParts(scaleNote);\n if (scaleNote === note) {\n return {\n note: scaleNote,\n accidental: parts.accidental,\n change: false,\n };\n }\n // Then search for a note of equivalent value in our altered scale\n const valueNote = this.scaleMapByValue[this.music.getNoteValue(note)];\n if (valueNote != null) {\n return {\n note: valueNote,\n accidental: this.music.getNoteParts(valueNote).accidental,\n change: false,\n };\n }\n // Then search for a note of equivalent value in the original scale\n const originalValueNote = this.originalScaleMapByValue[this.music.getNoteValue(note)];\n if (originalValueNote != null) {\n this.scaleMap[modparts.root] = originalValueNote;\n delete this.scaleMapByValue[this.music.getNoteValue(scaleNote)];\n this.scaleMapByValue[this.music.getNoteValue(note)] = originalValueNote;\n return {\n note: originalValueNote,\n accidental: this.music.getNoteParts(originalValueNote).accidental,\n change: true,\n };\n }\n // Then try to unmodify a currently modified note.\n if (modparts.root === note) {\n delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])];\n this.scaleMapByValue[this.music.getNoteValue(modparts.root)] = modparts.root;\n this.scaleMap[modparts.root] = modparts.root;\n return {\n note: modparts.root,\n accidental: undefined,\n change: true,\n };\n }\n // Last resort -- shitshoot\n delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])];\n this.scaleMapByValue[this.music.getNoteValue(note)] = note;\n delete this.scaleMap[modparts.root];\n this.scaleMap[modparts.root] = note;\n return {\n note,\n accidental: parts.accidental,\n change: true,\n };\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Author: Raffaele Viglianti, 2012 http://itisnotsound.wordpress.com/\n//\n// This class implements hairpins between notes.\n// Hairpins can be either crescendo or decrescendo.\nimport { Element } from './element';\nimport { Modifier } from './modifier';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveHairpin extends Element {\n /**\n * Create a new hairpin from the specified notes.\n *\n * @param {!Object} notes The notes to tie up.\n * Notes is a struct that has:\n *\n * {\n * first_note: Note,\n * last_note: Note,\n * }\n * @param {!Object} type The type of hairpin\n */\n constructor(notes, type) {\n super();\n this.setNotes(notes);\n this.hairpin = type;\n this.position = Modifier.Position.BELOW;\n this.render_options = {\n height: 10,\n y_shift: 0,\n left_shift_px: 0,\n right_shift_px: 0,\n right_shift_ticks: 0,\n left_shift_ticks: 0,\n };\n }\n static get CATEGORY() {\n return Category.StaveHairpin;\n }\n /* Helper function to convert ticks into pixels.\n * Requires a Formatter with voices joined and formatted (to\n * get pixels per tick)\n *\n * options is struct that has:\n *\n * {\n * height: px,\n * y_shift: px, // vertical offset\n * left_shift_ticks: 0, // left horizontal offset expressed in ticks\n * right_shift_ticks: 0 // right horizontal offset expressed in ticks\n * }\n *\n **/\n static FormatByTicksAndDraw(ctx, formatter, notes, type, position, options) {\n var _a, _b;\n const ppt = formatter.pixelsPerTick;\n if (ppt == null) {\n throw new RuntimeError('BadArguments', 'A valid Formatter must be provide to draw offsets by ticks.');\n }\n const l_shift_px = ppt * ((_a = options.left_shift_ticks) !== null && _a !== void 0 ? _a : 0);\n const r_shift_px = ppt * ((_b = options.right_shift_ticks) !== null && _b !== void 0 ? _b : 0);\n const hairpin_options = {\n height: options.height,\n y_shift: options.y_shift,\n left_shift_px: l_shift_px,\n right_shift_px: r_shift_px,\n right_shift_ticks: 0,\n left_shift_ticks: 0,\n };\n new StaveHairpin({\n first_note: notes.first_note,\n last_note: notes.last_note,\n }, type)\n .setContext(ctx)\n .setRenderOptions(hairpin_options)\n .setPosition(position)\n .draw();\n }\n setPosition(position) {\n if (position === Modifier.Position.ABOVE || position === Modifier.Position.BELOW) {\n this.position = position;\n }\n return this;\n }\n setRenderOptions(options) {\n if (options.height != null &&\n options.y_shift != null &&\n options.left_shift_px != null &&\n options.right_shift_px != null) {\n this.render_options = options;\n }\n return this;\n }\n /**\n * Set the notes to attach this hairpin to.\n *\n * @param {!Object} notes The start and end notes.\n */\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Hairpin needs to have either first_note or last_note set.');\n }\n this.notes = notes;\n this.first_note = notes.first_note;\n this.last_note = notes.last_note;\n return this;\n }\n renderHairpin(params) {\n const ctx = this.checkContext();\n let dis = this.render_options.y_shift + 20;\n let y_shift = params.first_y;\n if (this.position === Modifier.Position.ABOVE) {\n dis = -dis + 30;\n y_shift = params.first_y - params.staff_height;\n }\n const l_shift = this.render_options.left_shift_px;\n const r_shift = this.render_options.right_shift_px;\n ctx.beginPath();\n switch (this.hairpin) {\n case StaveHairpin.type.CRESC:\n ctx.moveTo(params.last_x + r_shift, y_shift + dis);\n ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height / 2 + dis);\n ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height + dis);\n break;\n case StaveHairpin.type.DECRESC:\n ctx.moveTo(params.first_x + l_shift, y_shift + dis);\n ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height / 2 + dis);\n ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height + dis);\n break;\n default:\n // Default is NONE, so nothing to draw\n break;\n }\n ctx.stroke();\n ctx.closePath();\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const firstNote = this.first_note;\n const lastNote = this.last_note;\n if (!firstNote || !lastNote)\n throw new RuntimeError('NoNote', 'Notes required to draw');\n const start = firstNote.getModifierStartXY(this.position, 0);\n const end = lastNote.getModifierStartXY(this.position, 0);\n this.renderHairpin({\n first_x: start.x,\n last_x: end.x,\n first_y: firstNote.checkStave().getY() + firstNote.checkStave().getHeight(),\n last_y: lastNote.checkStave().getY() + lastNote.checkStave().getHeight(),\n staff_height: firstNote.checkStave().getHeight(),\n });\n }\n}\nStaveHairpin.type = {\n CRESC: 1,\n DECRESC: 2,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { TabTie } from './tabtie';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class TabSlide extends TabTie {\n /**\n * @param notes is a struct of the form:\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n * @param notes.first_note the starting note of the slide\n * @param notes.last_note the ending note of the slide\n * @param notes.first_indices specifies which string + fret positions of the TabNote are used in this slide. zero indexed.\n * @param notes.last_indices currently unused. we assume it's the same as first_indices.\n *\n * @param direction TabSlide.SLIDE_UP or TabSlide.SLIDE_DOWN\n */\n constructor(notes, direction) {\n super(notes, 'sl.');\n // Determine the direction automatically if it is not provided.\n if (!direction) {\n let first_fret = notes.first_note.getPositions()[0].fret;\n if (typeof first_fret === 'string') {\n first_fret = parseInt(first_fret, 10);\n }\n let last_fret = notes.last_note.getPositions()[0].fret;\n if (typeof last_fret === 'string') {\n last_fret = parseInt(last_fret, 10);\n }\n // If either of the frets are 'X', parseInt() above will return NaN.\n // Choose TabSlide.SLIDE_UP by default.\n if (isNaN(first_fret) || isNaN(last_fret)) {\n direction = TabSlide.SLIDE_UP;\n }\n else {\n direction = first_fret > last_fret ? TabSlide.SLIDE_DOWN : TabSlide.SLIDE_UP;\n }\n }\n this.direction = direction;\n this.render_options.cp1 = 11;\n this.render_options.cp2 = 14;\n this.render_options.y_shift = 0.5;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.TabSlide;\n }\n static get SLIDE_UP() {\n return 1;\n }\n static get SLIDE_DOWN() {\n return -1;\n }\n static createSlideUp(notes) {\n return new TabSlide(notes, TabSlide.SLIDE_UP);\n }\n static createSlideDown(notes) {\n return new TabSlide(notes, TabSlide.SLIDE_DOWN);\n }\n renderTie(params) {\n if (params.first_ys.length === 0 || params.last_ys.length === 0) {\n throw new RuntimeError('BadArguments', 'No Y-values to render');\n }\n const ctx = this.checkContext();\n const first_x_px = params.first_x_px;\n const first_ys = params.first_ys;\n const last_x_px = params.last_x_px;\n const direction = params.direction;\n if (direction !== TabSlide.SLIDE_UP && direction !== TabSlide.SLIDE_DOWN) {\n throw new RuntimeError('BadSlide', 'Invalid slide direction');\n }\n // eslint-disable-next-line\n const first_indices = this.notes.first_indices;\n for (let i = 0; i < first_indices.length; ++i) {\n const slide_y = first_ys[first_indices[i]] + this.render_options.y_shift;\n if (isNaN(slide_y)) {\n throw new RuntimeError('BadArguments', 'Bad indices for slide rendering.');\n }\n ctx.beginPath();\n ctx.moveTo(first_x_px, slide_y + 3 * direction);\n ctx.lineTo(last_x_px, slide_y - 3 * direction);\n ctx.closePath();\n ctx.stroke();\n }\n this.setRendered();\n }\n}\nTabSlide.TEXT_FONT = {\n family: Font.SERIF,\n size: 10,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Mike Corrigan \n// MIT License\nimport { Glyph } from './glyph';\nimport { GraceNote } from './gracenote';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isGraceNote } from './typeguard';\n/** Tremolo implements tremolo notation. */\nexport class Tremolo extends Modifier {\n /**\n * @param num number of bars\n */\n constructor(num) {\n super();\n this.num = num;\n this.position = Modifier.Position.CENTER;\n this.code = 'tremolo1';\n // big strokes scales initialised to 1 (no scale)\n this.y_spacing_scale = 1;\n this.extra_stroke_scale = 1;\n }\n static get CATEGORY() {\n return Category.Tremolo;\n }\n /** Draw the tremolo on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stemDirection = note.getStemDirection();\n const start = note.getModifierStartXY(this.position, this.index);\n let x = start.x;\n const gn = isGraceNote(note);\n const scale = gn ? GraceNote.SCALE : 1;\n const category = `tremolo.${gn ? 'grace' : 'default'}`;\n const musicFont = Tables.currentMusicFont();\n let y_spacing = musicFont.lookupMetric(`${category}.spacing`) * stemDirection;\n // add y_spacing_scale for big strokes (#1258)\n y_spacing *= this.y_spacing_scale;\n const height = this.num * y_spacing;\n let y = note.getStemExtents().baseY - height;\n if (stemDirection < 0) {\n y += musicFont.lookupMetric(`${category}.offsetYStemDown`) * scale;\n }\n else {\n y += musicFont.lookupMetric(`${category}.offsetYStemUp`) * scale;\n }\n const fontScale = musicFont.lookupMetric(`${category}.point`);\n x += musicFont.lookupMetric(`${category}.offsetXStem${stemDirection === Stem.UP ? 'Up' : 'Down'}`);\n for (let i = 0; i < this.num; ++i) {\n Glyph.renderGlyph(ctx, x, y, fontScale, this.code, { category, scale: this.extra_stroke_scale });\n y += y_spacing;\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Tables } from './tables';\nimport { RuntimeError } from './util';\n/** `Tuning` implements varies types of tunings for tablature. */\nexport class Tuning {\n /**\n * Constructor.\n * @param tuningString tuning name (eg. 'dagdad') or comma separated note strings\n */\n constructor(tuningString = 'E/5,B/4,G/4,D/4,A/3,E/3,B/2,E/2') {\n this.tuningValues = [];\n // Default to standard tuning.\n this.setTuning(tuningString);\n }\n static get names() {\n return {\n standard: 'E/5,B/4,G/4,D/4,A/3,E/3',\n dagdad: 'D/5,A/4,G/4,D/4,A/3,D/3',\n dropd: 'E/5,B/4,G/4,D/4,A/3,D/3',\n eb: 'Eb/5,Bb/4,Gb/4,Db/4,Ab/3,Db/3',\n standardBanjo: 'D/5,B/4,G/4,D/4,G/5',\n };\n }\n /** Return the note number associated to the note string. */\n noteToInteger(noteString) {\n return Tables.keyProperties(noteString).int_value;\n }\n /**\n * Set tuning identified by tuning name (eg. 'dagdad')\n * @param tuningString tuning name (eg. 'dagdad') or comma separated note strings\n */\n setTuning(tuningString) {\n if (Tuning.names[tuningString]) {\n tuningString = Tuning.names[tuningString];\n }\n this.tuningValues = [];\n const keys = tuningString.split(/\\s*,\\s*/);\n if (keys.length === 0) {\n throw new RuntimeError('BadArguments', `Invalid tuning string: ${tuningString}`);\n }\n for (let i = 0; i < keys.length; ++i) {\n this.tuningValues[i] = this.noteToInteger(keys[i]);\n }\n }\n /** Return the note number associated with a tablature string. */\n getValueForString(stringNum) {\n const s = Number(stringNum);\n if (s < 1 || s > this.tuningValues.length) {\n throw new RuntimeError('BadArguments', `String number must be between 1 and ${this.tuningValues.length}:${stringNum}`);\n }\n return this.tuningValues[s - 1];\n }\n /** Return the note number associated with a tablature string and fret. */\n getValueForFret(fretNum, stringNum) {\n const stringValue = this.getValueForString(stringNum);\n const f = Number(fretNum);\n if (f < 0) {\n throw new RuntimeError('BadArguments', `Fret number must be 0 or higher: ${fretNum}`);\n }\n return stringValue + f;\n }\n /** Return the note string associated with tablature string and fret. */\n getNoteForFret(fretNum, stringNum) {\n const noteValue = this.getValueForFret(fretNum, stringNum);\n const octave = Math.floor(noteValue / 12);\n const value = noteValue % 12;\n return `${Tables.integerToNote(value)}/${octave}`;\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Accidental } from './accidental';\nimport { Annotation, AnnotationHorizontalJustify, AnnotationVerticalJustify } from './annotation';\nimport { Articulation } from './articulation';\nimport { BarNote } from './barnote';\nimport { Beam } from './beam';\nimport { Bend } from './bend';\nimport { BoundingBox } from './boundingbox';\nimport { BoundingBoxComputation } from './boundingboxcomputation';\nimport { CanvasContext } from './canvascontext';\nimport { ChordSymbol, ChordSymbolHorizontalJustify, ChordSymbolVerticalJustify, SymbolModifiers, SymbolTypes, } from './chordsymbol';\nimport { Clef } from './clef';\nimport { ClefNote } from './clefnote';\nimport { Crescendo } from './crescendo';\nimport { Curve, CurvePosition } from './curve';\nimport { Dot } from './dot';\nimport { EasyScore } from './easyscore';\nimport { Element } from './element';\nimport { Factory } from './factory';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Formatter } from './formatter';\nimport { Fraction } from './fraction';\nimport { FretHandFinger } from './frethandfinger';\nimport { GhostNote } from './ghostnote';\nimport { Glyph } from './glyph';\nimport { GlyphNote } from './glyphnote';\nimport { GraceNote } from './gracenote';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { GraceTabNote } from './gracetabnote';\nimport { KeyManager } from './keymanager';\nimport { KeySignature } from './keysignature';\nimport { KeySigNote } from './keysignote';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { ModifierContext } from './modifiercontext';\nimport { MultiMeasureRest } from './multimeasurerest';\nimport { Music } from './music';\nimport { Note } from './note';\nimport { NoteHead } from './notehead';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { Parenthesis } from './parenthesis';\nimport { Parser } from './parser';\nimport { PedalMarking } from './pedalmarking';\nimport { Registry } from './registry';\nimport { RenderContext } from './rendercontext';\nimport { Renderer, RendererBackends, RendererLineEndType } from './renderer';\nimport { RepeatNote } from './repeatnote';\nimport { Stave } from './stave';\nimport { Barline, BarlineType } from './stavebarline';\nimport { StaveConnector } from './staveconnector';\nimport { StaveHairpin } from './stavehairpin';\nimport { StaveLine } from './staveline';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { StaveNote } from './stavenote';\nimport { Repetition } from './staverepetition';\nimport { StaveTempo } from './stavetempo';\nimport { StaveText } from './stavetext';\nimport { StaveTie } from './stavetie';\nimport { Volta, VoltaType } from './stavevolta';\nimport { Stem } from './stem';\nimport { StringNumber } from './stringnumber';\nimport { Stroke } from './strokes';\nimport { SVGContext } from './svgcontext';\nimport { System } from './system';\nimport { Tables } from './tables';\nimport { TabNote } from './tabnote';\nimport { TabSlide } from './tabslide';\nimport { TabStave } from './tabstave';\nimport { TabTie } from './tabtie';\nimport { TextBracket, TextBracketPosition } from './textbracket';\nimport { TextDynamics } from './textdynamics';\nimport { TextFormatter } from './textformatter';\nimport { TextJustification, TextNote } from './textnote';\nimport { TickContext } from './tickcontext';\nimport { TimeSignature } from './timesignature';\nimport { TimeSigNote } from './timesignote';\nimport { Tremolo } from './tremolo';\nimport { Tuning } from './tuning';\nimport { Tuplet } from './tuplet';\nimport { DATE, ID, VERSION } from './version';\nimport { Vibrato } from './vibrato';\nimport { VibratoBracket } from './vibratobracket';\nimport { Voice, VoiceMode } from './voice';\nexport class Flow {\n static get BUILD() {\n return {\n /** version number. */\n VERSION: VERSION,\n /** git commit ID that this library was built from. */\n ID: ID,\n /** The date when this library was compiled. */\n DATE: DATE,\n };\n }\n /**\n * Examples:\n * ```\n * Vex.Flow.setMusicFont('Petaluma');\n * Vex.Flow.setMusicFont('Bravura', 'Gonville');\n * ```\n *\n * **CASE 1**: You are using `vexflow.js`, which includes all music fonts (Bravura, Gonville, Petaluma, Custom).\n * In this case, calling this method is optional, since VexFlow already defaults to a music font stack of:\n * 'Bravura', 'Gonville', 'Custom'.\n *\n * **CASE 2**: You are using `vexflow-bravura.js` or `vexflow-petaluma.js` or `vexflow-gonville.js`,\n * which includes a single music font. Calling this method is unnecessary.\n *\n * **CASE 3**: You are using the light weight `vexflow-core.js` to take advantage of lazy loading for fonts.\n * In this case, the default music font stack is empty.\n * Example:\n * ```\n * await Vex.Flow.fetchMusicFont('Petaluma');\n * Vex.Flow.setMusicFont('Petaluma');\n * ... (do VexFlow stuff) ...\n * ```\n * See `demos/fonts/` for more examples.\n *\n * @returns an array of Font objects corresponding to the provided `fontNames`.\n */\n static setMusicFont(...fontNames) {\n // Convert the array of font names into an array of Font objects.\n const fonts = fontNames.map((fontName) => Font.load(fontName));\n Tables.MUSIC_FONT_STACK = fonts;\n Glyph.MUSIC_FONT_STACK = fonts.slice();\n Glyph.CURRENT_CACHE_KEY = fontNames.join(',');\n return fonts;\n }\n /**\n * Used with vexflow-core which supports dynamic font loading.\n */\n // eslint-disable-next-line\n static fetchMusicFont(fontName, fontModuleOrPath) {\n return __awaiter(this, void 0, void 0, function* () {\n // The default implementation does nothing.\n // See vexflow-core.ts for the implementation that vexflow-core.js uses.\n });\n }\n static getMusicFont() {\n const fonts = Tables.MUSIC_FONT_STACK;\n return fonts.map((font) => font.getName());\n }\n static get RENDER_PRECISION_PLACES() {\n return Tables.RENDER_PRECISION_PLACES;\n }\n static set RENDER_PRECISION_PLACES(precision) {\n Tables.RENDER_PRECISION_PLACES = precision;\n }\n static get SOFTMAX_FACTOR() {\n return Tables.SOFTMAX_FACTOR;\n }\n static set SOFTMAX_FACTOR(factor) {\n Tables.SOFTMAX_FACTOR = factor;\n }\n static get NOTATION_FONT_SCALE() {\n return Tables.NOTATION_FONT_SCALE;\n }\n static set NOTATION_FONT_SCALE(value) {\n Tables.NOTATION_FONT_SCALE = value;\n }\n static get TABLATURE_FONT_SCALE() {\n return Tables.TABLATURE_FONT_SCALE;\n }\n static set TABLATURE_FONT_SCALE(value) {\n Tables.TABLATURE_FONT_SCALE = value;\n }\n static get RESOLUTION() {\n return Tables.RESOLUTION;\n }\n static set RESOLUTION(value) {\n Tables.RESOLUTION = value;\n }\n static get SLASH_NOTEHEAD_WIDTH() {\n return Tables.SLASH_NOTEHEAD_WIDTH;\n }\n static set SLASH_NOTEHEAD_WIDTH(value) {\n Tables.SLASH_NOTEHEAD_WIDTH = value;\n }\n static get STAVE_LINE_DISTANCE() {\n return Tables.STAVE_LINE_DISTANCE;\n }\n static set STAVE_LINE_DISTANCE(value) {\n Tables.STAVE_LINE_DISTANCE = value;\n }\n static get STAVE_LINE_THICKNESS() {\n return Tables.STAVE_LINE_THICKNESS;\n }\n static set STAVE_LINE_THICKNESS(value) {\n Tables.STAVE_LINE_THICKNESS = value;\n }\n static get STEM_HEIGHT() {\n return Tables.STEM_HEIGHT;\n }\n static set STEM_HEIGHT(value) {\n Tables.STEM_HEIGHT = value;\n }\n static get STEM_WIDTH() {\n return Tables.STEM_WIDTH;\n }\n static set STEM_WIDTH(value) {\n Tables.STEM_WIDTH = value;\n }\n static get TIME4_4() {\n return Tables.TIME4_4;\n }\n static get accidentalMap() {\n return Tables.accidentalMap;\n }\n static get unicode() {\n return Tables.unicode;\n }\n static keySignature(spec) {\n return Tables.keySignature(spec);\n }\n static hasKeySignature(spec) {\n return Tables.hasKeySignature(spec);\n }\n static getKeySignatures() {\n return Tables.getKeySignatures();\n }\n static clefProperties(clef) {\n return Tables.clefProperties(clef);\n }\n // eslint-disable-next-line\n static keyProperties(key, clef, params) {\n return Tables.keyProperties(key, clef, params);\n }\n static durationToTicks(duration) {\n return Tables.durationToTicks(duration);\n }\n}\nFlow.Accidental = Accidental;\nFlow.Annotation = Annotation;\nFlow.Articulation = Articulation;\nFlow.Barline = Barline;\nFlow.BarNote = BarNote;\nFlow.Beam = Beam;\nFlow.Bend = Bend;\nFlow.BoundingBox = BoundingBox;\nFlow.BoundingBoxComputation = BoundingBoxComputation;\nFlow.CanvasContext = CanvasContext;\nFlow.ChordSymbol = ChordSymbol;\nFlow.Clef = Clef;\nFlow.ClefNote = ClefNote;\nFlow.Crescendo = Crescendo;\nFlow.Curve = Curve;\nFlow.Dot = Dot;\nFlow.EasyScore = EasyScore;\nFlow.Element = Element;\nFlow.Factory = Factory;\nFlow.Font = Font;\nFlow.Formatter = Formatter;\nFlow.Fraction = Fraction;\nFlow.FretHandFinger = FretHandFinger;\nFlow.GhostNote = GhostNote;\nFlow.Glyph = Glyph;\nFlow.GlyphNote = GlyphNote;\nFlow.GraceNote = GraceNote;\nFlow.GraceNoteGroup = GraceNoteGroup;\nFlow.GraceTabNote = GraceTabNote;\nFlow.KeyManager = KeyManager;\nFlow.KeySignature = KeySignature;\nFlow.KeySigNote = KeySigNote;\nFlow.Modifier = Modifier;\nFlow.ModifierContext = ModifierContext;\nFlow.MultiMeasureRest = MultiMeasureRest;\nFlow.Music = Music;\nFlow.Note = Note;\nFlow.NoteHead = NoteHead;\nFlow.NoteSubGroup = NoteSubGroup;\nFlow.Ornament = Ornament;\nFlow.Parenthesis = Parenthesis;\nFlow.Parser = Parser;\nFlow.PedalMarking = PedalMarking;\nFlow.Registry = Registry;\nFlow.RenderContext = RenderContext;\nFlow.Renderer = Renderer;\nFlow.RepeatNote = RepeatNote;\nFlow.Repetition = Repetition;\nFlow.Stave = Stave;\nFlow.StaveConnector = StaveConnector;\nFlow.StaveHairpin = StaveHairpin;\nFlow.StaveLine = StaveLine;\nFlow.StaveModifier = StaveModifier;\nFlow.StaveNote = StaveNote;\nFlow.StaveTempo = StaveTempo;\nFlow.StaveText = StaveText;\nFlow.StaveTie = StaveTie;\nFlow.Stem = Stem;\nFlow.StringNumber = StringNumber;\nFlow.Stroke = Stroke;\nFlow.SVGContext = SVGContext;\nFlow.System = System;\nFlow.TabNote = TabNote;\nFlow.TabSlide = TabSlide;\nFlow.TabStave = TabStave;\nFlow.TabTie = TabTie;\nFlow.TextBracket = TextBracket;\nFlow.TextDynamics = TextDynamics;\nFlow.TextFormatter = TextFormatter;\nFlow.TextNote = TextNote;\nFlow.TickContext = TickContext;\nFlow.TimeSignature = TimeSignature;\nFlow.TimeSigNote = TimeSigNote;\nFlow.Tremolo = Tremolo;\nFlow.Tuning = Tuning;\nFlow.Tuplet = Tuplet;\nFlow.Vibrato = Vibrato;\nFlow.VibratoBracket = VibratoBracket;\nFlow.Voice = Voice;\nFlow.Volta = Volta;\n// Exported Enums.\n// Sorted by the module / file they are exported from.\nFlow.AnnotationHorizontalJustify = AnnotationHorizontalJustify;\nFlow.AnnotationVerticalJustify = AnnotationVerticalJustify;\nFlow.ChordSymbolHorizontalJustify = ChordSymbolHorizontalJustify;\nFlow.ChordSymbolVerticalJustify = ChordSymbolVerticalJustify;\nFlow.SymbolTypes = SymbolTypes;\nFlow.SymbolModifiers = SymbolModifiers;\nFlow.CurvePosition = CurvePosition;\nFlow.FontWeight = FontWeight;\nFlow.FontStyle = FontStyle;\nFlow.ModifierPosition = ModifierPosition;\nFlow.RendererBackends = RendererBackends;\nFlow.RendererLineEndType = RendererLineEndType;\nFlow.BarlineType = BarlineType;\nFlow.StaveModifierPosition = StaveModifierPosition;\nFlow.VoltaType = VoltaType;\nFlow.TextBracketPosition = TextBracketPosition;\nFlow.TextJustification = TextJustification;\nFlow.VoiceMode = VoiceMode;\n","export const VERSION = '4.1.0-alpha.0';\nexport const ID = '847bc9014672858aedc7f8460384f51f98d6bd84';\nexport const DATE = '2022-10-10T04:47:38.237Z';\n","export const CustomFont = {\n resolution: 1000,\n fontFamily: 'VexFlowCustom',\n glyphs: {\n noteheadSquareWhite: {\n x_min: 0,\n x_max: 430.75,\n ha: 386,\n o: 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 l 50 150 l 380 150 l 380 -150 l 50 -150 l 50 150 ',\n },\n noteheadSquareBlack: {\n x_min: 0,\n x_max: 430.75,\n ha: 386,\n o: 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 ',\n },\n accidentalBuyukMucennebFlat: {\n x_min: -171.5,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalBakiyeFlat: {\n x_min: -176.9375,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalKucukMucennebSharp: {\n x_min: -1.359375,\n x_max: 255.890625,\n ha: 261,\n o: 'm 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 ',\n },\n accidentalKoron: {\n x_min: -20,\n x_max: 320,\n ha: 257,\n o: 'm -8 200 b -8 210 8 200 16 200 l 20 148 -199 l 23 -615 b 0 -629 9 -629 6 -629 l -21 -612 l -21 -201 l -21 216 l -20 200 m 16 200 l 310 0 l 240 0 l 16 140 l 16 -120 l 240 0 l 310 0 l 16 -200 ',\n },\n accidentalSori: {\n x_min: -10.890625,\n x_max: 299.4375,\n ha: 294,\n o: 'm 44 174 b 51 174 47 174 49 174 b 68 173 55 174 61 174 l 287 112 l 551 40 b 615 20 617 22 609 23 b 626 0 622 16 626 8 b 615 -22 626 -9 622 -18 b 613 -23 613 -23 613 -23 b 613 -23 613 -23 613 -23 b 287 -113 613 -24 597 -29 l 68 -174 b 53 -176 61 -176 57 -176 b 39 -172 47 -176 43 -174 b 27 -151 31 -167 27 -159 b 39 -129 27 -141 31 -133 b 230 -74 43 -124 20 -131 l 370 -36 l 468 -9 b 498 0 484 -4 498 -1 b 468 8 498 0 484 2 l 370 34 l 230 73 b 40 126 28 129 43 124 b 27 149 31 131 27 140 b 44 174 27 161 34 170 m 205 110 l 205 300 b 205 330 245 330 245 300 l 245 300 l 245 -300 b 245 -330 205 -330 205 -300 l 205 -300 l 205 110 l 345 90 m 345 90 l 345 330 b 345 360 385 360 385 330 l 385 330 l 385 -270 b 385 -300 345 -300 345 -270 l 345 -270 l 345 90 ',\n },\n vexAccidentalMicrotonal2: {\n x_min: -1.359375,\n x_max: 386.5625,\n ha: 394,\n o: 'm 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 ',\n },\n vexAccidentalMicrotonal3: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm -146 537 b -138 538 -143 538 -141 538 b -118 525 -129 538 -121 533 b -117 390 -117 522 -117 521 b -115 259 -117 268 -117 259 b -115 259 -115 259 -115 259 b -59 272 -104 263 -62 272 b -39 259 -50 272 -42 267 b -37 209 -38 257 -37 233 b -39 159 -37 185 -38 162 b -85 138 -43 149 -44 149 l -117 131 l -117 21 b -115 -88 -117 -80 -117 -88 b -115 -88 -115 -88 -115 -88 b -59 -75 -104 -84 -62 -75 b -44 -81 -52 -75 -48 -77 b -38 -124 -38 -87 -38 -85 b -38 -138 -38 -124 -38 -138 b -38 -152 -38 -138 -38 -152 b -44 -195 -38 -191 -38 -190 b -85 -209 -48 -200 -48 -200 l -117 -217 l -117 -349 b -118 -486 -117 -481 -117 -482 b -138 -499 -121 -494 -129 -499 b -153 -493 -143 -499 -149 -497 b -159 -415 -158 -487 -159 -496 b -159 -355 -159 -398 -159 -379 b -159 -227 -159 -284 -159 -227 b -205 -238 -159 -227 -180 -232 b -250 -249 -230 -244 -250 -249 b -251 -386 -251 -249 -251 -311 b -252 -525 -251 -521 -251 -522 b -272 -538 -255 -534 -264 -538 b -287 -532 -277 -538 -283 -536 b -293 -452 -292 -527 -293 -536 b -293 -391 -293 -436 -293 -415 b -294 -260 -293 -269 -293 -260 b -294 -260 -294 -260 -294 -260 b -348 -272 -306 -264 -345 -272 b -368 -259 -357 -272 -365 -267 b -369 -209 -369 -257 -369 -233 b -368 -159 -369 -185 -369 -162 b -323 -139 -364 -149 -362 -148 l -293 -131 l -293 -22 b -294 87 -293 80 -293 87 b -294 87 -294 87 -294 87 b -348 75 -306 84 -345 75 b -368 88 -357 75 -365 80 b -369 138 -369 91 -369 114 b -368 188 -369 162 -369 186 b -323 209 -364 198 -362 199 l -293 216 l -293 349 b -292 486 -293 481 -293 482 b -272 499 -288 494 -280 499 b -257 493 -266 499 -261 497 b -251 414 -251 487 -251 496 b -251 354 -251 398 -251 378 b -251 226 -251 284 -251 226 b -205 238 -250 226 -230 231 b -159 249 -180 244 -159 249 b -159 385 -159 249 -159 310 b -157 525 -159 521 -159 522 b -146 537 -156 530 -151 535 z m -159 11 b -159 120 -159 98 -159 120 l -159 120 b -175 116 -160 120 -167 119 b -221 105 -184 114 -204 109 l -251 98 l -251 -12 b -251 -121 -251 -72 -251 -121 b -205 -110 -250 -121 -230 -116 b -159 -99 -180 -104 -159 -99 b -159 11 -159 -99 -159 -49 z m 89 517 b 97 519 92 518 94 519 b 117 505 106 519 114 513 b 119 376 119 502 119 501 l 119 249 l 145 258 b 176 267 169 266 172 267 b 177 267 176 267 177 267 b 196 255 186 267 192 263 l 197 252 l 197 205 b 197 181 197 195 197 187 b 193 149 197 153 197 153 b 152 131 190 144 187 143 l 119 120 l 119 10 b 119 -100 119 -62 119 -100 b 145 -91 120 -100 131 -96 b 173 -82 159 -86 171 -82 b 176 -81 174 -81 175 -81 b 196 -94 185 -81 193 -87 b 198 -151 197 -97 198 -125 b 197 -194 198 -172 197 -192 b 153 -218 193 -203 192 -204 l 119 -230 l 119 -367 l 118 -504 l 117 -507 b 97 -519 113 -514 105 -519 b 82 -512 92 -519 87 -517 b 76 -434 77 -507 76 -516 b 76 -374 76 -418 76 -398 b 76 -245 76 -303 76 -245 b 52 -254 76 -245 65 -249 b 19 -263 34 -260 25 -263 b 6 -257 13 -263 10 -261 b 0 -214 0 -251 0 -253 b 0 -200 0 -210 0 -205 b 0 -188 0 -196 0 -192 b 6 -143 0 -147 0 -149 b 46 -126 10 -139 10 -139 l 76 -115 l 76 -5 b 76 106 76 56 76 106 b 51 98 76 106 64 102 b 18 89 34 92 25 89 b 6 95 13 89 10 91 b 0 139 0 101 0 99 b 0 153 0 143 0 148 b 0 179 0 163 0 172 b 44 225 0 215 3 211 l 76 236 l 76 369 b 78 505 76 501 76 502 b 89 517 80 510 85 515 z ',\n },\n vexAccidentalMicrotonal4: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 283 633 b 291 634 286 634 289 634 b 311 621 300 634 308 629 b 313 505 313 618 313 617 b 313 393 313 443 313 393 b 378 425 313 393 343 407 l 443 458 l 448 458 b 449 458 449 458 449 458 b 471 437 462 458 471 448 b 469 429 471 434 470 432 b 387 382 466 421 469 423 l 313 344 l 313 247 l 313 150 l 315 152 b 433 201 353 184 394 201 b 479 193 448 201 464 198 b 549 86 524 177 549 135 b 526 1 549 59 541 29 b 395 -143 504 -39 475 -71 b 316 -214 351 -182 341 -191 b 292 -229 302 -228 300 -229 b 272 -216 283 -229 275 -224 b 271 55 271 -212 271 -212 b 270 323 271 203 270 323 b 205 291 270 323 241 308 l 140 258 l 135 258 b 134 258 135 258 134 258 b 112 279 121 258 112 267 b 114 287 112 281 113 284 b 196 334 117 295 114 293 l 271 371 l 271 495 b 272 621 271 617 271 618 b 283 633 274 626 279 631 z m 404 133 b 391 134 400 134 395 134 b 384 134 388 134 386 134 b 318 88 358 130 335 114 l 313 81 l 313 -37 l 313 -156 l 316 -152 b 439 83 391 -71 439 22 l 439 84 b 404 133 439 115 430 128 z m -8 633 l -8 633 b 0 634 -6 634 -3 634 b 20 621 8 634 17 629 b 21 384 21 618 21 617 l 21 150 l 24 152 b 141 201 62 184 102 201 b 187 193 157 201 172 198 b 257 86 232 177 257 135 b 234 1 257 59 250 29 b 103 -143 212 -39 183 -71 b 24 -214 60 -182 49 -191 b 0 -229 10 -228 8 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 203 l -21 618 l -20 621 b -8 633 -18 626 -13 631 z m 113 133 l 113 133 b 99 134 109 134 103 134 b 93 134 97 134 94 134 b 26 88 66 130 43 114 l 21 81 l 21 -37 l 21 -156 l 25 -152 b 148 83 99 -71 148 22 l 148 84 b 113 133 148 115 138 128 z ',\n },\n vexNoteHeadRectBlack: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 ',\n },\n vexNoteHeadRectWhite: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 l 50 100 l 380 100 l 380 -100 l 50 -100 l 50 100',\n },\n },\n};\n","export const CustomMetrics = {\n name: 'VexFlowCustom',\n smufl: false,\n glyphs: {},\n};\n","export const PetalumaFont = {\n glyphs: {\n bracketTop: {\n x_min: 0,\n x_max: 508,\n y_min: 0,\n y_max: 370,\n ha: 370,\n o: 'm 22 0 b 122 0 55 1 89 0 l 157 0 b 713 376 425 0 622 137 b 732 467 724 406 732 436 b 726 514 732 482 730 498 b 711 533 723 528 719 533 b 693 526 707 533 700 530 b 674 498 683 520 678 508 b 635 406 662 467 652 435 b 310 164 560 281 458 193 b 154 151 258 154 206 151 b 39 154 117 151 78 154 b 1 120 17 154 4 145 b 0 84 0 108 0 96 b 0 20 0 63 1 40 b 22 0 0 4 7 0 z',\n },\n bracketBottom: {\n x_min: 0,\n x_max: 496,\n y_min: -393,\n y_max: 0,\n ha: 393,\n o: 'm 696 -566 b 711 -539 713 -566 708 -549 b 714 -521 713 -533 714 -527 b 713 -508 714 -517 713 -513 b 661 -327 706 -445 688 -384 b 392 -42 603 -203 513 -109 b 206 0 331 -7 266 0 b 160 -1 190 0 174 -1 b 26 -1 107 -1 66 -3 b 0 -19 12 -1 0 -4 l 0 -23 b 3 -50 1 -32 3 -42 b 1 -86 3 -62 1 -73 b 4 -118 1 -96 1 -108 b 45 -151 10 -145 23 -154 b 180 -143 89 -144 135 -145 b 621 -419 392 -135 523 -236 b 662 -539 641 -456 655 -497 b 696 -566 667 -557 680 -566 z',\n },\n barlineTick: {\n x_min: 0,\n x_max: 56.036101509664164,\n y_min: 876.905249806889,\n y_max: 1121.5430338167066,\n ha: 244.63778400981766,\n o: 'm 42 1263 b 66 1287 62 1261 66 1272 b 81 1583 65 1387 72 1485 b 35 1614 82 1610 53 1610 b 14 1591 17 1619 16 1604 b 0 1408 7 1525 0 1459 l 0 1292 b 42 1263 1 1263 23 1266 z',\n },\n breathMarkTick: {\n x_min: 0,\n x_max: 568,\n y_min: 0,\n y_max: 621,\n ha: 621,\n o: 'm 258 0 b 278 39 276 0 274 24 b 279 56 279 45 279 50 l 279 73 b 278 117 279 88 278 102 b 281 148 278 127 279 138 b 536 600 312 330 387 487 b 744 719 600 651 670 690 b 815 779 775 730 808 740 b 818 824 818 793 818 808 b 815 868 818 838 818 852 b 796 894 814 881 808 894 b 779 888 791 894 786 893 b 719 864 760 878 739 871 b 372 602 580 806 459 724 b 229 252 298 498 251 383 b 220 268 225 262 222 264 b 209 302 217 279 213 291 b 75 527 181 387 143 467 b 16 563 58 543 39 573 b 0 539 3 557 0 549 b 12 492 0 524 9 507 b 56 400 19 459 22 425 b 163 269 104 367 138 323 b 238 36 197 194 216 115 b 258 0 242 22 243 0 z',\n },\n segno: {\n x_min: 0,\n x_max: 798,\n y_min: -65,\n y_max: 806,\n ha: 871,\n o: 'm 16 -94 b 66 -69 39 -92 53 -85 b 177 59 102 -26 138 17 b 543 456 298 192 420 324 b 726 300 615 420 680 373 b 753 217 744 271 753 243 b 655 112 753 170 719 131 b 599 104 636 107 618 104 b 461 173 544 104 495 128 b 432 190 454 183 444 190 b 409 179 425 190 418 187 b 359 118 390 160 373 141 b 341 72 347 101 341 86 b 373 24 341 56 351 40 b 409 6 384 17 396 10 b 550 -13 454 -12 501 -14 b 599 -6 566 -12 583 -10 b 864 213 720 27 806 104 b 886 300 878 242 886 271 b 857 395 886 331 877 363 b 799 467 840 420 821 445 b 648 572 755 513 704 546 b 1110 1083 802 743 955 914 b 1140 1129 1123 1097 1136 1110 b 1149 1148 1142 1135 1149 1142 b 1145 1153 1149 1149 1148 1152 b 1123 1161 1139 1158 1130 1161 b 1109 1156 1119 1161 1113 1159 b 1089 1138 1102 1151 1094 1145 b 946 988 1040 1089 989 1041 b 595 602 834 855 711 732 l 590 598 l 549 615 b 432 793 462 647 432 723 b 534 888 432 851 474 888 b 671 834 588 888 631 864 b 710 818 684 824 696 818 b 724 821 714 818 719 819 b 809 883 757 834 788 852 b 816 901 814 890 816 896 b 802 923 816 910 812 916 b 706 984 770 945 742 971 b 593 1011 668 998 631 1011 b 516 991 567 1011 541 1005 b 333 799 433 949 380 876 b 302 693 312 765 302 729 b 330 589 302 658 311 624 b 469 488 360 533 415 511 b 485 482 475 487 480 485 b 266 249 412 405 338 327 b 121 88 217 196 170 141 b 9 -65 78 40 37 -7 b 0 -85 4 -72 0 -79 b 16 -94 0 -91 4 -94 z m 861 536 b 927 575 890 539 909 557 b 965 628 952 598 965 613 b 926 680 965 644 952 658 b 865 713 900 701 883 713 b 805 667 845 713 828 698 b 768 611 791 649 770 631 b 812 564 766 589 798 582 b 861 536 824 550 840 537 z m 251 350 b 363 436 285 348 353 403 b 354 456 366 448 360 452 b 271 518 327 477 298 497 b 243 528 261 526 252 528 b 210 513 232 528 222 523 b 157 454 190 494 176 472 b 141 428 147 444 141 436 b 158 406 141 420 147 413 b 216 361 180 393 197 376 b 245 350 225 356 235 350 z',\n },\n coda: {\n x_min: 0,\n x_max: 1380,\n y_min: -196,\n y_max: 1037,\n ha: 1233,\n o: 'm 1028 -282 b 1057 -245 1045 -282 1053 -261 b 1060 -203 1060 -232 1060 -217 b 1063 9 1060 -132 1061 -62 b 1390 194 1192 22 1303 81 b 1531 543 1467 298 1512 415 b 1532 556 1531 547 1532 552 b 1904 559 1656 557 1780 559 b 1950 582 1920 559 1941 569 b 1987 674 1970 609 1987 638 b 1984 698 1987 681 1986 690 b 1950 700 1973 698 1961 700 l 1941 700 l 1545 696 b 1535 776 1545 723 1541 749 b 1103 1113 1477 996 1326 1107 b 1080 1115 1096 1115 1087 1115 b 1081 1322 1080 1184 1080 1253 b 1079 1467 1083 1371 1081 1418 b 1061 1493 1079 1476 1080 1493 l 1060 1493 b 1028 1467 1044 1490 1031 1485 b 1020 1403 1025 1446 1020 1424 b 1017 1110 1020 1305 1018 1208 l 962 1106 b 569 914 808 1087 671 1035 b 451 683 510 844 472 766 l 161 678 b 118 680 148 678 132 680 b 79 670 101 680 86 678 b 0 544 48 636 29 592 l 37 544 l 429 549 b 428 518 428 539 428 528 b 488 285 428 435 458 360 b 681 81 526 192 593 124 b 946 9 763 40 854 19 b 1008 6 966 7 988 6 b 1005 -137 1008 -42 1005 -89 b 1012 -243 1005 -173 1005 -209 b 1028 -282 1015 -258 1011 -282 z m 1074 690 b 1079 935 1077 772 1077 852 b 1326 855 1166 932 1250 909 b 1446 694 1385 814 1426 759 b 1269 693 1387 694 1328 693 b 1074 690 1204 693 1139 691 z m 577 684 b 766 874 618 763 678 828 b 989 932 837 912 913 923 b 1015 933 998 932 1007 933 b 1014 822 1015 896 1014 860 b 1011 688 1012 791 1012 743 z m 1067 184 b 1071 553 1070 307 1068 429 b 1439 556 1194 553 1316 554 b 1437 554 1439 554 1437 554 b 1341 337 1413 478 1387 402 b 1119 192 1286 261 1211 212 b 1067 184 1102 189 1084 186 z m 1008 180 b 660 264 886 181 770 212 b 524 471 570 305 524 374 b 528 524 524 488 526 505 l 533 549 b 792 552 619 550 706 550 b 1009 553 865 553 937 552 b 1008 180 1009 428 1008 288 z',\n },\n gClef: {\n x_min: 0,\n x_max: 664,\n y_min: -559,\n y_max: 1009,\n ha: 1568,\n o: 'm 343 -805 b 366 -801 350 -805 357 -804 b 409 -773 383 -795 397 -786 b 582 -328 528 -648 577 -497 b 583 -294 582 -315 583 -294 b 612 -279 583 -294 603 -282 b 747 -197 660 -256 706 -230 b 949 143 857 -109 920 10 b 956 206 955 164 956 186 b 791 384 956 297 906 363 b 704 393 762 390 733 393 b 498 336 632 393 563 374 b 481 325 490 331 481 325 l 444 465 b 442 485 442 472 442 485 b 609 880 442 485 589 746 b 619 996 616 919 619 958 b 613 1084 619 1027 618 1056 b 534 1387 599 1188 560 1286 b 482 1453 527 1417 517 1453 b 422 1407 456 1453 438 1428 b 305 1063 348 1305 312 1188 b 304 1002 304 1043 304 1022 b 338 654 304 886 323 769 b 343 629 338 645 341 636 b 144 356 278 537 206 451 b 23 144 101 288 53 220 b 0 20 7 107 0 63 b 82 -210 0 -69 30 -160 b 207 -288 112 -239 160 -271 b 410 -328 274 -312 340 -328 b 474 -324 431 -328 452 -327 l 491 -321 b 491 -341 491 -321 492 -334 b 402 -585 475 -428 454 -513 b 294 -668 374 -622 348 -664 b 271 -693 278 -670 271 -680 b 274 -708 271 -698 272 -703 b 302 -775 282 -730 292 -753 b 343 -805 311 -795 325 -805 z m 400 717 b 382 922 389 786 382 854 b 481 1286 382 1047 408 1169 b 507 1125 498 1233 507 1179 b 500 1040 507 1097 504 1068 b 400 717 481 927 455 818 z m 252 -135 b 196 -121 232 -134 215 -127 b 117 -69 158 -108 127 -94 b 111 -32 112 -58 111 -45 b 117 19 111 -16 114 1 b 130 56 118 27 127 52 b 324 337 186 156 253 246 l 384 416 l 395 384 b 416 291 406 348 416 291 b 350 213 416 291 376 239 b 243 -42 278 143 243 55 b 251 -117 243 -66 246 -91 b 252 -135 252 -122 252 -127 z m 563 -91 b 510 168 552 3 530 78 b 513 192 508 179 508 186 b 624 202 550 199 586 202 b 730 192 660 202 694 199 b 850 141 773 183 816 176 b 858 134 852 138 855 135 b 595 -121 801 19 716 -68 l 569 -131 z m 410 -160 b 311 -147 360 -160 311 -147 b 307 -98 311 -147 307 -127 b 314 -33 307 -79 308 -56 b 429 131 328 36 377 85 b 441 138 433 135 438 138 b 449 122 446 138 448 132 b 490 -131 462 37 484 -46 b 490 -153 491 -140 490 -153 b 410 -160 490 -153 452 -163 z',\n },\n cClef: {\n x_min: 0,\n x_max: 731,\n y_min: -543,\n y_max: 543,\n ha: 1086,\n o: 'm 131 -782 b 141 -755 138 -782 140 -773 b 147 -490 143 -667 145 -577 b 160 207 150 -258 153 -24 b 168 618 164 344 158 481 b 81 768 173 690 132 732 b 45 782 66 778 55 782 b 3 740 26 782 13 768 b 0 724 1 736 0 730 l 1 710 b 4 596 4 672 4 634 l 4 382 b 9 102 4 288 4 196 b 17 -301 13 -32 10 -166 l 17 -672 b 50 -736 17 -701 27 -720 b 109 -772 69 -749 91 -759 b 131 -782 120 -778 127 -782 z m 615 -770 b 881 -684 710 -770 801 -739 b 1020 -395 986 -612 1020 -510 b 1017 -334 1020 -374 1018 -354 b 769 -62 1007 -209 896 -75 b 746 -60 762 -60 755 -60 b 639 -73 710 -60 675 -69 b 524 -109 598 -79 560 -92 b 528 -36 526 -85 528 -60 b 527 -4 528 -26 528 -14 b 528 39 527 10 528 24 b 526 99 528 59 527 79 b 592 94 549 95 570 94 b 648 99 611 94 629 95 b 912 157 744 94 844 117 b 1053 377 1009 215 1053 284 b 1050 425 1053 393 1053 409 b 914 665 1037 521 986 602 b 717 753 855 717 791 753 b 626 734 688 753 658 747 l 462 665 b 347 500 374 628 347 580 b 350 449 347 484 348 468 b 392 419 353 428 367 416 b 492 438 425 425 459 428 b 541 498 524 448 541 468 b 540 514 541 503 541 508 b 537 546 537 524 537 536 b 573 639 537 580 550 611 b 606 657 582 649 593 657 l 609 657 b 716 622 647 652 684 647 b 834 372 801 556 834 469 b 831 323 834 356 832 338 b 743 187 825 266 795 217 b 710 176 732 180 720 176 b 694 179 704 176 700 177 b 527 223 638 193 582 206 b 495 229 516 228 505 229 b 454 220 481 229 468 225 b 395 189 432 213 415 200 b 363 180 384 186 374 181 b 348 168 356 179 348 176 b 340 161 343 167 340 164 b 347 150 340 157 343 154 b 356 147 348 148 353 147 b 364 92 361 130 363 111 b 369 -37 367 49 369 6 b 363 -154 369 -76 367 -115 b 357 -236 360 -183 357 -210 b 376 -264 357 -253 361 -259 b 456 -289 402 -284 429 -289 b 521 -282 478 -289 500 -285 b 549 -255 537 -279 546 -271 b 598 -177 556 -225 577 -202 b 622 -164 605 -168 613 -164 b 636 -167 626 -164 631 -166 b 749 -225 678 -177 714 -199 b 848 -405 814 -276 848 -337 b 824 -507 848 -436 840 -471 b 657 -657 792 -582 730 -625 b 608 -668 638 -664 622 -668 b 534 -602 572 -668 547 -645 b 513 -575 530 -589 523 -575 b 507 -576 510 -575 508 -575 b 478 -582 497 -580 488 -582 b 405 -570 454 -582 428 -570 b 389 -572 399 -570 395 -570 l 363 -572 b 321 -575 348 -572 333 -569 l 321 631 b 323 662 323 641 323 652 b 315 716 323 681 321 698 b 304 736 314 723 317 736 l 302 736 b 281 716 294 734 285 729 b 275 665 276 700 275 683 l 275 382 b 276 99 275 288 275 193 b 279 -170 278 10 276 -81 b 284 -399 282 -246 284 -323 b 282 -629 284 -475 282 -553 b 289 -721 282 -660 289 -690 b 300 -736 289 -727 291 -736 b 312 -724 307 -736 310 -730 b 321 -667 323 -706 321 -687 l 321 -632 l 328 -644 l 340 -657 b 510 -757 386 -707 445 -740 b 615 -770 546 -766 580 -770 z',\n },\n fClef: {\n x_min: 0,\n x_max: 776,\n y_min: -496,\n y_max: 216,\n ha: 712,\n o: 'm 402 -706 b 804 -405 592 -678 716 -566 b 876 -53 861 -298 874 -183 b 868 33 876 -32 873 1 b 560 311 845 217 723 311 b 524 310 549 311 536 311 b 131 134 373 297 239 242 b 17 -29 84 86 37 39 b 9 -89 12 -50 9 -71 b 112 -238 9 -154 43 -206 b 124 -243 117 -239 120 -242 b 186 -261 145 -255 166 -261 b 268 -228 215 -261 242 -249 b 351 -59 325 -181 351 -124 b 343 10 351 -36 348 -13 b 340 36 341 19 340 27 b 409 105 340 75 363 102 b 441 107 420 107 431 107 b 624 36 510 107 573 86 b 744 -200 688 -27 724 -109 b 747 -230 747 -210 747 -222 b 717 -323 747 -264 736 -292 b 608 -445 688 -370 654 -410 b 307 -541 518 -513 415 -541 l 213 -541 b 39 -521 154 -541 96 -539 b 0 -552 17 -514 0 -531 b 1 -564 0 -556 0 -560 b 17 -611 6 -580 10 -596 b 101 -694 35 -648 50 -684 b 288 -714 164 -707 225 -714 b 402 -706 325 -714 363 -711 z m 1018 92 b 1080 118 1041 91 1068 96 b 1117 219 1099 150 1117 180 b 1113 252 1117 229 1116 240 b 1045 288 1102 297 1068 276 b 1017 262 1028 297 1024 274 b 984 124 989 220 996 170 b 1008 91 979 108 986 91 z m 972 -281 b 1070 -148 1024 -279 1070 -210 b 1025 -105 1070 -105 1045 -112 b 989 -127 1004 -96 998 -114 b 949 -249 963 -164 963 -209 b 969 -281 943 -265 949 -281 z',\n },\n unpitchedPercussionClef1: {\n x_min: 0,\n x_max: 379.13761966945304,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 481 -360 b 507 -357 491 -360 500 -360 b 546 -295 541 -346 547 -325 b 536 79 543 -170 540 -46 b 523 311 533 157 534 235 b 475 359 518 340 508 359 b 425 360 459 359 442 360 b 400 359 416 360 409 360 b 337 294 348 353 340 347 l 337 -73 b 336 -264 337 -137 337 -200 b 343 -294 336 -274 338 -284 b 481 -360 359 -330 431 -360 z m 144 -341 b 207 -320 167 -341 189 -331 b 217 -301 215 -315 217 -308 b 210 -262 217 -289 210 -275 b 228 187 212 -112 209 37 b 228 287 228 220 229 253 b 174 353 228 336 222 343 b 120 359 157 357 138 359 b 48 357 96 359 72 356 b 17 323 29 357 19 344 b 7 120 16 255 9 187 b 6 -109 6 43 6 -33 l 6 -204 b 0 -251 6 -220 0 -235 b 3 -269 0 -256 0 -262 b 127 -340 24 -330 79 -328 b 144 -341 132 -341 138 -341 z',\n },\n '6stringTabClef': {\n x_min: 0,\n x_max: 438,\n y_min: -768,\n y_max: 767,\n ha: 1535,\n o: 'm 369 438 b 374 439 370 438 372 438 b 384 462 383 444 384 452 l 384 474 b 390 697 386 547 390 622 b 373 1002 390 799 390 901 l 533 1002 b 560 1001 541 1004 552 1001 b 573 1007 567 1001 572 1002 b 546 1050 579 1025 559 1038 b 536 1056 543 1053 539 1053 b 324 1104 472 1102 397 1104 b 72 1090 238 1104 154 1099 b 55 1093 66 1090 60 1092 b 37 1073 46 1093 37 1089 b 60 1045 37 1061 48 1051 b 203 1001 105 1022 151 1001 b 233 1004 213 1001 223 1002 b 246 1005 238 1004 243 1005 b 272 975 264 1005 272 996 l 272 965 b 258 596 264 842 265 719 b 315 474 253 540 272 504 l 343 455 b 369 438 351 448 357 438 z m 114 -320 b 127 -304 120 -320 124 -315 b 171 -174 141 -261 158 -219 b 222 -135 179 -147 196 -137 b 426 -122 289 -131 359 -128 b 498 -164 462 -120 482 -127 b 628 -301 521 -226 575 -264 b 631 -288 631 -295 631 -291 b 628 -269 631 -281 629 -276 b 569 -134 616 -220 589 -179 b 408 225 514 -14 462 107 b 314 357 384 274 351 318 b 278 380 298 372 288 379 b 251 351 268 380 261 372 b 4 -209 156 171 75 -17 b 0 -228 1 -215 0 -222 b 19 -258 0 -240 7 -249 b 102 -314 45 -279 75 -294 b 114 -320 107 -318 111 -320 z m 425 6 b 360 20 403 17 382 20 b 274 14 331 20 302 14 l 246 14 l 340 206 b 425 6 369 137 395 75 z m 245 -1106 b 281 -1104 256 -1106 269 -1106 b 511 -888 400 -1094 511 -1035 b 454 -688 511 -814 504 -744 b 448 -678 449 -685 448 -681 b 454 -667 448 -675 449 -671 b 504 -497 503 -619 507 -559 b 324 -288 500 -383 436 -308 b 295 -287 314 -287 304 -287 l 282 -287 b 115 -330 223 -287 168 -307 b 94 -366 102 -336 94 -348 l 94 -370 b 96 -435 96 -392 96 -413 b 73 -858 89 -576 71 -717 b 78 -919 73 -878 78 -899 b 72 -950 78 -930 76 -940 b 63 -992 66 -965 63 -978 b 66 -1015 63 -999 65 -1008 b 173 -1104 84 -1106 84 -1106 b 245 -1106 197 -1104 220 -1104 z m 161 -622 b 147 -618 156 -622 151 -621 b 140 -600 141 -612 140 -606 b 144 -564 140 -589 144 -575 b 143 -554 144 -560 144 -557 l 143 -546 b 220 -451 144 -467 143 -465 b 278 -445 239 -446 259 -444 b 418 -497 328 -445 376 -461 b 429 -516 426 -504 429 -510 b 415 -533 429 -521 423 -527 b 219 -608 357 -579 287 -590 b 215 -609 217 -608 216 -609 b 161 -622 197 -609 177 -622 z m 154 -953 b 130 -933 135 -953 130 -948 l 130 -865 l 128 -865 b 135 -788 130 -838 124 -808 b 203 -769 145 -769 180 -776 b 259 -762 223 -765 242 -762 b 441 -852 330 -762 386 -805 b 449 -867 446 -858 449 -863 b 436 -884 449 -874 444 -878 b 318 -942 402 -914 363 -935 b 154 -953 264 -950 209 -953 z',\n },\n timeSig0: {\n x_min: 20,\n x_max: 513,\n y_min: -358.159536277652,\n y_max: 359,\n ha: 717.159536277652,\n o: 'm 341 -516 b 420 -510 367 -516 395 -514 b 675 -338 533 -494 622 -448 b 737 -92 716 -256 734 -171 b 739 -35 739 -73 739 -53 b 680 305 739 86 720 207 b 400 517 622 449 537 517 b 337 514 380 517 359 517 b 289 507 321 511 305 513 b 91 317 192 477 127 412 b 29 9 50 212 29 108 b 217 -458 29 -157 88 -312 b 341 -516 251 -494 291 -518 z m 412 -452 b 359 -425 393 -452 376 -444 b 187 14 242 -301 179 -158 b 268 334 193 127 212 235 b 387 448 295 383 330 428 b 406 452 395 451 400 452 b 428 444 413 452 420 449 b 517 324 471 413 497 372 b 586 -29 560 222 586 86 b 556 -271 586 -112 585 -193 b 468 -422 536 -327 508 -377 b 412 -452 449 -442 431 -452 z',\n },\n timeSig1: {\n x_min: 20,\n x_max: 283,\n y_min: -364,\n y_max: 366,\n ha: 730,\n o: 'm 264 -524 b 357 -510 297 -524 325 -516 b 374 -490 369 -508 374 -501 b 380 -438 376 -472 380 -455 l 406 246 b 408 301 408 265 408 282 b 400 445 408 348 405 396 b 288 527 395 491 338 527 b 253 520 276 527 264 526 b 240 508 249 517 245 513 b 49 409 192 445 127 413 b 29 396 33 408 29 403 b 32 380 29 392 30 386 b 59 363 36 366 49 364 b 164 348 95 356 130 348 b 222 357 183 348 203 351 b 238 361 228 360 233 360 b 252 334 248 361 252 353 b 243 59 252 242 249 150 b 219 -490 229 -124 233 -307 b 264 -524 217 -516 232 -524 z',\n },\n timeSig2: {\n x_min: 20,\n x_max: 660.4636303241031,\n y_min: -378.7201231608281,\n y_max: 382,\n ha: 760.720123160828,\n o: 'm 99 -543 b 130 -533 111 -550 121 -540 b 255 -448 168 -501 213 -475 b 338 -425 282 -431 310 -425 b 392 -431 356 -425 374 -426 b 485 -462 423 -438 454 -451 b 648 -497 540 -482 595 -497 b 834 -441 711 -497 773 -480 b 950 -242 906 -395 958 -334 b 942 -210 950 -230 950 -215 b 912 -220 932 -204 920 -213 b 861 -264 894 -235 877 -248 b 775 -317 835 -289 808 -305 b 675 -334 742 -328 708 -334 b 510 -295 619 -334 563 -318 b 372 -264 465 -278 420 -264 b 305 -272 350 -264 328 -266 b 331 -242 318 -256 324 -249 b 490 -73 386 -187 438 -131 b 675 340 595 43 664 180 b 677 369 677 350 677 360 b 556 536 677 461 638 508 b 468 550 526 546 497 550 b 297 508 409 550 353 533 b 111 354 220 475 168 412 b 29 197 65 308 29 261 b 32 164 29 187 29 176 b 29 140 33 157 29 147 b 43 125 29 132 32 125 b 73 147 55 125 65 138 b 86 163 79 153 82 158 b 238 320 134 219 183 272 b 425 389 292 367 360 389 b 575 341 480 389 531 373 b 606 298 590 330 606 317 b 600 278 606 292 603 285 b 501 107 576 217 544 158 b 304 -104 439 33 372 -35 b 111 -356 230 -180 167 -265 b 84 -446 92 -386 84 -415 b 86 -481 84 -458 85 -469 b 88 -514 88 -491 88 -503 b 99 -543 89 -526 91 -537 z',\n },\n timeSig3: {\n x_min: 19.824321427094187,\n x_max: 540,\n y_min: -392,\n y_max: 392,\n ha: 784,\n o: 'm 216 -540 b 354 -564 264 -556 310 -564 b 605 -465 445 -564 530 -530 b 729 -161 697 -383 729 -275 b 724 -82 729 -135 727 -108 b 589 95 716 -1 670 62 b 523 114 567 102 546 108 b 750 418 606 213 677 315 b 778 503 769 444 778 472 b 773 540 778 514 776 527 b 750 564 769 557 762 564 b 736 562 746 564 742 563 b 641 552 704 553 672 552 b 402 554 562 552 481 554 l 346 554 b 84 546 258 554 170 554 b 36 501 55 543 40 531 b 29 412 30 472 32 442 b 52 384 27 393 32 384 l 56 384 b 210 392 107 389 158 392 l 602 392 b 354 108 523 285 445 192 b 246 -65 300 58 246 12 b 252 -108 246 -78 248 -92 l 252 -111 b 264 -141 251 -122 251 -135 b 291 -132 274 -145 284 -140 b 425 -72 328 -95 377 -84 b 475 -65 442 -68 459 -65 b 592 -108 517 -65 557 -79 b 645 -179 615 -125 645 -147 b 642 -194 645 -184 644 -189 b 485 -376 616 -278 569 -344 b 361 -399 444 -392 402 -399 b 151 -340 289 -399 219 -376 b 88 -275 122 -323 98 -310 b 71 -249 86 -268 85 -249 b 63 -251 68 -249 66 -249 b 36 -288 48 -255 36 -266 b 55 -423 33 -336 45 -377 b 101 -482 60 -448 78 -468 b 216 -540 138 -504 174 -526 z',\n },\n timeSig4: {\n x_min: 20,\n x_max: 633.0785282750762,\n y_min: -489.59088556716864,\n y_max: 491.18559127100053,\n ha: 980.7764768381692,\n o: 'm 608 -704 b 641 -684 622 -708 634 -696 b 667 -602 660 -660 662 -631 b 685 -190 683 -465 680 -327 l 685 -176 b 831 -127 736 -166 783 -148 b 912 0 901 -94 913 -76 b 886 53 912 36 904 52 b 848 40 877 53 864 49 l 838 36 b 687 -13 789 14 739 -3 b 681 177 687 50 684 114 b 672 338 678 230 677 285 b 654 373 671 350 672 373 b 622 340 636 373 624 361 b 615 262 621 314 613 288 b 619 -22 616 167 619 72 b 569 -22 602 -23 585 -23 b 305 -3 481 -16 395 -1 b 210 -9 274 -3 242 -4 b 301 163 242 52 268 108 b 513 552 377 288 459 412 b 536 652 526 585 536 618 b 533 683 536 662 534 672 b 520 707 531 691 531 707 b 487 693 508 708 494 704 b 474 668 482 684 477 677 b 384 490 454 603 418 547 b 253 281 343 419 295 351 b 73 -13 194 181 145 78 b 29 -108 50 -42 29 -72 b 37 -147 29 -121 32 -134 b 50 -186 43 -160 50 -173 b 68 -216 52 -207 56 -215 b 92 -207 73 -216 82 -213 b 288 -166 156 -180 220 -166 b 556 -186 377 -166 467 -180 b 586 -189 566 -187 576 -187 b 616 -186 596 -189 606 -189 b 606 -432 613 -268 612 -350 b 596 -625 603 -495 596 -559 b 598 -670 596 -641 596 -655 b 608 -704 598 -683 596 -700 z',\n },\n timeSig5: {\n x_min: 19.663871085403297,\n x_max: 583,\n y_min: -389,\n y_max: 389,\n ha: 778,\n o: 'm 132 -536 b 249 -560 168 -553 209 -559 b 507 -462 351 -560 454 -514 b 677 -183 588 -384 642 -289 b 694 -85 688 -150 694 -117 b 540 138 694 12 642 94 b 422 173 501 154 462 167 b 400 187 408 174 400 177 b 405 202 400 190 402 196 b 428 284 416 228 426 255 b 469 312 431 307 442 312 b 757 372 569 312 662 343 b 840 490 821 392 840 432 b 812 560 840 540 834 560 b 763 546 801 560 785 556 b 757 543 762 546 759 544 b 465 484 665 505 570 484 b 396 484 452 484 425 487 b 353 454 377 482 366 474 b 281 300 323 405 304 351 b 245 164 262 255 245 212 b 246 144 245 158 246 151 b 233 63 249 115 243 89 b 225 35 228 50 225 40 b 264 14 225 22 236 19 b 445 -26 325 7 387 0 b 569 -151 501 -52 547 -89 b 575 -180 573 -161 575 -170 b 527 -275 575 -217 547 -245 b 347 -367 484 -334 419 -367 b 261 -351 318 -367 289 -363 b 95 -300 206 -333 154 -307 b 55 -321 73 -297 65 -302 b 29 -468 29 -367 40 -419 b 56 -505 26 -482 36 -500 b 132 -536 82 -514 108 -524 z',\n },\n timeSig6: {\n x_min: 20,\n x_max: 565,\n y_min: -363,\n y_max: 363,\n ha: 726,\n o: 'm 390 -518 b 621 -458 469 -507 549 -494 b 814 -134 753 -390 814 -281 b 652 59 814 -16 750 58 b 580 48 629 59 606 55 b 233 -334 392 -9 276 -138 b 115 -228 181 -314 143 -278 b 98 -160 104 -206 98 -183 b 107 -109 98 -144 101 -127 b 167 37 124 -59 145 -12 b 508 340 236 189 347 292 b 575 353 530 347 553 353 b 648 327 600 353 625 346 b 665 320 654 321 661 320 b 687 336 674 320 681 325 b 703 405 697 359 703 382 b 684 472 703 429 697 451 b 593 523 664 504 631 521 b 576 521 588 523 582 523 b 297 403 472 508 380 465 b 115 177 217 344 164 264 b 29 -121 60 82 29 -17 b 53 -278 29 -173 36 -225 b 226 -497 82 -374 131 -454 b 347 -523 265 -514 305 -523 b 390 -518 361 -523 376 -521 z m 351 -357 b 312 -351 337 -356 320 -363 b 325 -315 304 -340 320 -327 b 543 -120 373 -222 448 -158 b 622 -104 570 -108 596 -102 b 717 -132 655 -104 687 -112 b 740 -167 732 -143 740 -153 b 730 -196 740 -176 737 -184 b 563 -321 690 -258 634 -300 b 359 -357 497 -341 428 -354 z',\n },\n timeSig7: {\n x_min: 20.3617407597707,\n x_max: 592,\n y_min: -345,\n y_max: 345,\n ha: 690,\n o: 'm 253 -497 b 318 -485 276 -497 297 -487 b 366 -441 348 -482 360 -468 b 487 -104 390 -323 433 -210 b 835 403 580 82 701 246 b 852 436 847 416 852 428 b 815 467 852 451 840 461 b 762 474 798 471 779 474 b 674 445 732 474 701 465 b 603 410 652 431 628 420 b 383 360 533 379 459 360 b 200 435 315 360 249 382 b 88 494 168 469 131 485 b 66 497 81 495 73 497 b 33 484 52 497 39 492 b 50 436 22 469 39 451 b 295 310 114 360 199 324 b 406 301 331 304 369 301 b 593 324 468 301 530 308 b 585 307 589 314 588 310 b 265 -249 451 137 338 -46 b 207 -442 242 -312 223 -377 b 204 -462 206 -449 204 -456 b 253 -497 204 -487 220 -497 z',\n },\n timeSig8: {\n x_min: 20,\n x_max: 504.15101530718516,\n y_min: -428,\n y_max: 428,\n ha: 856,\n o: 'm 265 -616 b 289 -615 274 -616 281 -616 b 710 -271 492 -592 657 -485 b 726 -148 721 -229 727 -187 b 585 108 726 -48 687 42 b 572 127 576 114 573 120 b 576 144 572 132 575 138 b 598 301 590 196 598 249 b 586 413 598 338 593 376 b 356 616 559 531 467 616 b 233 582 317 616 275 606 b 29 233 101 505 29 384 b 104 9 29 153 46 72 b 189 -48 127 -16 160 -27 b 92 -158 141 -73 114 -114 b 37 -343 63 -217 50 -279 b 33 -390 35 -359 33 -374 b 265 -616 33 -524 148 -616 z m 258 105 b 124 148 215 105 167 117 b 96 196 105 163 96 177 b 99 217 96 202 96 209 b 197 384 120 281 151 337 b 350 451 242 429 297 451 b 516 364 412 451 472 422 b 530 331 523 354 530 343 l 530 327 l 530 320 b 468 151 520 261 507 200 b 419 122 455 135 442 125 b 258 105 370 117 320 105 z m 328 -438 b 158 -276 233 -436 160 -359 b 166 -239 158 -264 161 -252 b 230 -157 176 -203 202 -179 b 367 -72 274 -125 320 -98 b 448 -49 396 -56 423 -49 b 562 -118 491 -49 528 -72 b 611 -251 590 -157 611 -199 b 569 -341 611 -288 595 -318 b 328 -438 500 -402 416 -432 z',\n },\n timeSig9: {\n x_min: 20,\n x_max: 494,\n y_min: -421,\n y_max: 421,\n ha: 842,\n o: 'm 235 -606 b 361 -564 275 -606 318 -593 b 619 -229 487 -482 566 -366 b 706 127 664 -114 694 4 b 711 233 708 163 711 197 b 700 346 711 271 708 308 b 389 606 658 517 530 606 b 351 605 376 606 364 606 b 56 272 171 586 56 441 b 96 98 56 216 69 156 b 334 -53 144 -3 238 -53 b 544 36 408 -53 484 -24 b 652 176 586 78 622 124 b 631 71 645 141 639 105 b 467 -302 599 -63 562 -196 b 271 -442 412 -364 354 -422 b 225 -448 255 -446 239 -448 b 95 -305 148 -448 98 -395 b 89 -255 95 -288 94 -271 b 73 -233 86 -246 85 -233 b 52 -248 65 -233 56 -239 b 29 -317 42 -271 30 -291 b 49 -448 29 -361 40 -405 b 235 -606 69 -541 144 -606 z m 340 104 b 144 209 264 108 194 141 b 127 258 132 225 127 240 b 137 297 127 271 130 284 b 366 449 184 396 269 449 b 517 408 415 449 467 436 b 595 348 546 392 572 372 b 616 305 608 336 616 321 b 609 281 616 298 613 289 b 340 104 557 184 477 104 z',\n },\n timeSigCommon: {\n x_min: 20,\n x_max: 585,\n y_min: -298,\n y_max: 294.49658092772603,\n ha: 592.496580927726,\n o: 'm 444 -405 b 829 -45 626 -346 740 -207 b 842 26 842 -23 842 1 b 821 58 842 39 841 58 b 795 40 811 58 802 48 b 765 3 785 29 773 16 b 469 -223 690 -104 596 -183 b 354 -242 431 -235 392 -242 b 180 -177 292 -242 235 -223 b 135 -99 154 -157 140 -131 b 132 -59 134 -85 132 -72 b 141 7 132 -37 135 -16 b 449 274 189 160 297 243 b 477 278 459 276 468 276 b 546 203 517 278 539 253 b 517 157 550 177 533 166 b 485 143 507 153 497 143 l 482 143 b 467 148 478 143 472 144 b 374 183 438 170 406 181 b 264 118 333 183 292 161 b 238 48 246 92 238 69 b 261 -9 238 29 245 10 b 383 -73 287 -39 337 -73 b 412 -68 392 -73 402 -72 b 631 164 526 -27 586 59 b 649 252 644 193 649 222 b 636 328 649 278 645 304 b 504 423 615 400 579 429 b 242 318 408 415 317 387 b 29 -158 104 190 29 33 b 30 -176 29 -164 29 -170 b 115 -364 42 -246 52 -315 b 307 -429 177 -410 240 -429 b 444 -405 351 -429 397 -420 z',\n },\n timeSigCutCommon: {\n x_min: 20,\n x_max: 695,\n y_min: -687.0379164869064,\n y_max: 687,\n ha: 1374.0379164869064,\n o: 'm 564 -989 b 595 -945 585 -991 589 -963 l 599 -922 b 605 -628 600 -824 603 -726 l 609 -399 b 878 -251 706 -363 798 -320 b 996 -85 932 -204 976 -153 b 1001 -63 998 -78 1001 -71 b 989 -46 1001 -56 998 -49 b 978 -43 985 -45 982 -43 b 950 -59 968 -43 959 -49 b 733 -216 894 -132 815 -177 b 611 -259 694 -235 652 -249 b 616 -20 612 -179 615 -99 b 680 29 642 -7 665 9 b 698 43 685 36 690 40 b 870 251 792 82 840 160 b 877 294 874 265 877 279 b 818 410 877 338 855 382 b 683 458 779 442 730 448 b 625 468 664 462 644 465 l 625 514 b 638 958 626 662 636 811 b 626 989 638 979 635 989 b 603 981 621 989 613 986 b 422 840 534 945 481 888 b 412 805 412 832 413 818 b 426 713 410 773 420 743 b 445 678 429 690 435 678 b 474 691 452 678 461 683 b 563 755 503 710 530 732 b 564 724 564 740 564 733 b 559 469 563 639 560 554 b 462 454 526 469 494 464 b 112 143 302 399 199 281 b 33 -94 66 71 45 -10 b 29 -148 30 -112 29 -131 b 105 -351 29 -223 52 -291 b 359 -455 171 -426 258 -451 b 517 -431 409 -451 464 -446 l 539 -422 l 539 -477 b 533 -739 536 -563 539 -651 b 530 -824 531 -768 530 -795 b 546 -948 530 -865 533 -907 b 564 -989 552 -962 543 -989 z m 410 -288 b 193 -197 328 -288 253 -264 b 141 -60 160 -161 141 -108 b 157 6 141 -35 147 -12 b 259 158 189 58 217 112 b 438 291 311 215 364 266 b 528 305 468 301 498 305 b 554 304 537 305 546 304 b 553 212 554 274 554 242 b 426 115 498 199 446 164 b 416 68 419 99 416 84 b 425 12 416 49 420 30 b 474 -39 432 -17 448 -32 b 513 -43 487 -42 498 -43 b 547 -40 524 -43 536 -42 l 543 -272 b 461 -285 516 -278 488 -281 b 410 -288 444 -287 426 -288 z m 694 197 b 668 203 685 197 677 199 b 621 216 654 210 638 215 b 622 294 622 242 622 268 b 706 268 651 287 678 278 b 746 235 721 261 734 249 b 752 222 749 230 752 226 b 743 213 752 219 749 215 b 694 197 727 206 711 197 z',\n },\n timeSigPlus: {\n x_min: 0,\n x_max: 661,\n y_min: -358,\n y_max: 358,\n ha: 716,\n o: 'm 605 -516 b 629 -490 624 -516 629 -507 b 628 -475 629 -485 628 -481 b 613 -131 624 -405 616 -174 b 612 -96 612 -114 612 -96 l 647 -98 b 897 -115 730 -99 814 -109 b 940 -89 919 -117 935 -109 b 952 -24 946 -69 952 -46 b 948 9 952 -14 950 -3 b 912 39 942 26 933 37 b 609 60 822 48 609 60 b 616 392 609 60 608 291 b 567 488 619 436 605 467 b 511 516 550 498 531 514 b 498 511 507 516 503 514 b 478 446 475 501 480 469 b 467 150 474 348 469 249 b 465 59 465 121 465 59 l 372 49 b 73 14 272 36 173 24 b 49 13 65 13 56 13 b 0 -33 9 13 0 6 b 60 -141 0 -117 6 -140 b 112 -135 73 -141 91 -140 b 413 -102 213 -125 314 -112 b 464 -98 441 -99 464 -98 l 464 -145 b 477 -456 464 -249 468 -353 b 526 -510 478 -488 491 -507 b 589 -513 546 -511 569 -510 b 605 -516 595 -514 600 -516 z',\n },\n timeSigPlusSmall: {\n x_min: 0,\n x_max: 418,\n y_min: -197,\n y_max: 199,\n ha: 396,\n o: 'm 301 -284 b 330 -238 320 -284 324 -255 b 348 -46 350 -176 341 -111 b 374 -20 351 -27 356 -23 b 481 -17 409 -16 445 -17 b 566 -9 510 -17 537 -16 b 602 3 579 -7 602 -16 b 566 29 602 19 582 24 b 526 33 553 32 539 33 b 384 39 478 36 432 39 b 356 62 363 39 356 42 l 356 68 b 359 177 359 104 359 141 l 359 251 b 341 287 359 264 361 285 b 311 255 324 287 314 272 b 310 228 311 246 310 236 l 301 69 b 275 39 301 49 295 39 l 271 39 b 210 40 251 40 230 40 b 167 39 196 40 181 40 b 89 40 141 37 115 40 b 24 30 68 40 46 37 b 0 17 17 27 0 30 l 0 13 b 27 -17 3 0 7 -13 b 91 -22 49 -22 71 -22 b 153 -22 115 -22 137 -20 l 275 -22 b 295 -40 289 -22 295 -27 l 295 -48 b 288 -235 288 -109 287 -171 b 287 -264 288 -243 287 -253 b 301 -284 287 -275 289 -284 z',\n },\n timeSigMinus: {\n x_min: 0,\n x_max: 662,\n y_min: -54,\n y_max: 55,\n ha: 109,\n o: 'm 39 -78 b 49 -76 42 -78 45 -76 b 452 -75 94 -75 272 -75 b 861 -76 632 -75 814 -76 b 953 -20 927 -79 953 -66 b 948 27 953 -7 950 9 b 946 37 948 30 948 35 b 896 79 940 63 929 79 b 471 78 827 78 648 78 l 42 78 b 0 37 14 78 0 69 b 23 -66 0 0 17 -32 b 39 -78 24 -75 32 -76 z',\n },\n timeSigParensRight: {\n x_min: 0,\n x_max: 274.26483738379414,\n y_min: -722.6326530612245,\n y_max: 725,\n ha: 1447.6326530612246,\n o: 'm 37 -1038 b 69 -1031 48 -1044 59 -1038 b 88 -1015 76 -1027 82 -1021 b 164 -886 120 -976 147 -933 b 333 -351 233 -711 292 -534 b 395 118 366 -204 399 -59 b 389 245 392 144 392 194 b 120 996 369 521 265 766 b 68 1044 99 1030 84 1044 b 19 988 50 1044 36 1024 b 0 922 7 965 0 945 b 20 858 0 901 6 881 b 259 215 141 660 236 449 b 271 -1 266 143 271 71 b 252 -239 271 -82 265 -161 b 148 -667 228 -384 183 -524 b 39 -1009 120 -785 66 -893 b 33 -1031 37 -1017 33 -1024 b 37 -1038 33 -1034 35 -1037 z',\n },\n timeSigParensRightSmall: {\n x_min: 0,\n x_max: 154.4025307335204,\n y_min: -422,\n y_max: 422,\n ha: 844,\n o: 'm 43 -608 b 60 -598 48 -608 53 -605 b 117 -511 82 -572 102 -543 b 222 23 193 -350 219 -177 b 213 166 225 55 216 109 b 115 531 206 294 174 416 b 45 603 99 562 76 588 b 30 608 39 606 35 608 b 10 598 23 608 17 603 b 0 546 3 590 0 570 b 23 451 0 507 9 458 b 102 351 66 429 84 390 b 167 42 150 252 167 148 b 163 -49 167 12 166 -19 b 35 -449 151 -192 121 -330 b 14 -504 22 -467 14 -485 b 17 -527 14 -511 16 -520 l 30 -590 b 43 -608 33 -603 37 -608 z',\n },\n timeSigParensLeft: {\n x_min: 0.5555555555555556,\n x_max: 399.6216117372966,\n y_min: -728,\n y_max: 728,\n ha: 1456,\n o: 'm 562 -1048 b 573 -1043 566 -1048 570 -1047 b 553 -988 582 -1025 564 -1004 b 472 -884 527 -952 497 -920 b 210 -354 366 -717 275 -541 b 148 -6 170 -240 148 -124 b 160 148 148 45 153 96 b 315 678 189 331 242 508 b 431 901 350 755 380 834 b 459 950 451 926 461 939 b 435 995 459 962 451 972 b 364 1048 405 1034 383 1048 b 305 996 343 1048 325 1028 b 127 624 226 881 174 753 b 1 30 56 432 9 235 b 1 -32 1 9 0 -12 b 180 -629 13 -245 92 -438 b 363 -936 230 -739 298 -835 b 526 -1041 402 -995 448 -1041 b 562 -1048 537 -1040 552 -1048 z',\n },\n timeSigParensLeftSmall: {\n x_min: 0,\n x_max: 173.45497224367904,\n y_min: -405,\n y_max: 404,\n ha: 809,\n o: 'm 197 -583 b 222 -553 212 -582 219 -566 b 229 -497 226 -534 229 -516 b 213 -425 229 -472 225 -448 b 102 -177 173 -344 132 -262 b 62 30 78 -111 58 -42 b 91 183 66 82 75 134 b 215 426 118 271 156 356 b 249 552 246 465 252 505 b 230 582 249 563 246 582 b 197 563 219 582 206 576 b 71 356 144 500 105 429 b 0 50 26 259 3 158 b 13 -112 4 -3 7 -58 b 176 -559 29 -275 105 -416 b 196 -583 180 -569 186 -583 z',\n },\n noteheadDoubleWhole: {\n x_min: -0.4444444444444444,\n x_max: 614.1875,\n y_min: -223.03296670127517,\n y_max: 223,\n ha: 446.0329667012752,\n o: 'm 35 -321 b 62 -266 58 -318 58 -288 l 62 -194 b 63 50 62 -114 63 -32 b 60 189 63 96 63 143 b 43 300 59 226 60 265 b 29 321 40 308 39 321 l 26 321 b 0 292 13 318 0 310 b 0 248 0 278 -1 262 b 6 147 4 215 6 181 b 4 48 6 114 4 81 b 6 0 4 32 6 16 b 7 -36 7 -12 7 -24 l 7 -52 b 6 -156 7 -86 6 -121 b 19 -275 6 -196 9 -236 b 35 -321 23 -291 16 -323 z m 847 -314 b 871 -288 860 -315 867 -300 b 884 -187 881 -255 886 -222 b 876 115 878 -86 876 14 b 877 255 876 161 876 209 b 868 291 877 268 873 279 b 855 304 867 301 863 304 b 844 301 852 304 848 304 b 822 265 825 292 822 278 b 824 251 822 259 822 255 b 822 170 822 225 822 197 l 822 -20 b 835 -284 827 -86 825 -186 b 847 -314 837 -295 835 -311 z m 757 -291 b 793 -171 796 -255 792 -212 b 795 -49 795 -131 795 -91 b 786 207 795 36 791 121 b 779 240 786 217 783 229 b 766 258 776 246 776 258 b 762 256 765 258 763 256 b 739 236 752 253 740 252 b 733 177 737 216 732 197 b 737 20 737 125 739 73 l 737 -107 b 740 -202 737 -138 739 -170 b 757 -291 740 -230 743 -261 z m 128 -261 b 144 -251 135 -264 141 -256 b 158 -203 156 -236 157 -220 b 161 -137 161 -181 161 -158 b 157 30 161 -81 157 -26 b 158 76 157 45 157 60 l 158 101 b 156 225 158 141 158 183 b 137 253 156 235 154 253 l 134 253 b 109 222 120 251 109 242 b 104 91 108 179 104 134 b 108 -58 104 42 109 -9 b 107 -105 108 -73 108 -89 b 105 -127 107 -112 107 -120 b 118 -245 105 -167 114 -204 b 128 -261 118 -252 121 -259 z m 488 -242 b 693 -79 595 -249 685 -166 l 693 -55 b 690 0 693 -36 691 -17 b 540 187 684 84 621 164 b 449 200 508 196 480 200 b 210 104 363 200 282 163 b 186 56 196 92 186 76 b 207 -82 186 9 192 -37 b 300 -204 225 -132 248 -181 b 488 -242 356 -229 415 -240 z m 490 -88 b 449 -86 477 -88 464 -88 b 287 -56 399 -85 341 -78 b 258 -33 275 -52 258 -48 b 282 -7 258 -20 272 -13 b 458 43 340 23 399 43 b 580 14 497 43 537 35 b 618 -20 606 1 619 -9 b 592 -58 618 -30 609 -42 b 490 -88 562 -82 528 -88 z',\n },\n noteheadWhole: {\n x_min: 0,\n x_max: 380.16649762501584,\n y_min: -186.17102907059297,\n y_max: 165,\n ha: 351.17102907059297,\n o: 'm 547 40 b 223 -268 543 -151 367 -259 b 102 -233 180 -271 143 -248 l 62 -216 b 0 -127 22 -197 0 -166 b 6 -91 0 -115 1 -104 b 122 141 33 -9 69 71 b 327 238 170 204 249 238 b 514 158 397 238 467 212 b 547 40 544 125 549 84 z m 248 -107 b 384 -63 295 -102 341 -88 b 426 -23 402 -53 415 -40 b 435 3 432 -14 435 -6 b 413 32 435 14 428 24 b 301 73 376 49 343 73 b 272 69 291 73 282 72 b 121 -35 207 53 157 20 b 111 -58 117 -42 111 -50 b 125 -75 111 -65 115 -71 b 248 -107 164 -89 202 -107 z',\n },\n noteheadHalf: {\n x_min: 0,\n x_max: 334,\n y_min: -174,\n y_max: 175,\n ha: 349,\n o: 'm 480 56 b 167 -251 478 -115 331 -251 b 94 -242 143 -251 118 -248 b 9 -141 43 -229 20 -192 b 0 -68 3 -115 0 -91 b 284 249 0 95 127 200 b 304 252 289 251 297 252 b 481 78 374 252 481 170 b 480 56 481 71 481 63 z m 213 -102 b 399 6 274 -81 341 -48 b 402 17 400 7 402 13 b 399 27 402 22 400 26 b 311 94 373 53 353 88 b 292 95 305 95 300 95 b 130 27 230 95 181 55 b 69 -62 98 9 62 -29 b 161 -98 76 -98 128 -91 b 213 -102 174 -101 186 -101 z',\n },\n noteheadBlack: {\n x_min: 0,\n x_max: 334.04644433966797,\n y_min: -164,\n y_max: 164,\n ha: 328,\n o: 'm 112 -233 b 141 -236 122 -235 131 -236 b 481 104 279 -236 485 -48 b 403 222 477 141 478 192 b 334 236 382 232 359 236 b 1 -59 180 236 13 59 b 0 -85 1 -68 0 -76 b 112 -233 0 -157 32 -215 z',\n },\n noteheadXDoubleWhole: {\n x_min: 0,\n x_max: 730,\n y_min: -266,\n y_max: 267,\n ha: 533,\n o: 'm 1018 -373 b 1032 -361 1025 -376 1028 -367 b 1051 -287 1047 -338 1051 -314 b 1050 -252 1051 -276 1051 -264 b 1030 186 1031 -107 1037 40 b 1031 266 1028 213 1031 239 b 1018 363 1031 300 1028 331 b 1005 384 1015 373 1017 384 l 1004 384 b 984 363 992 384 986 373 b 982 343 982 356 982 348 b 981 235 982 307 981 271 b 996 -285 981 60 986 -112 b 1009 -360 998 -311 1005 -336 b 1018 -373 1011 -364 1014 -373 z m 16 -383 b 49 -328 39 -367 48 -350 b 69 56 58 -202 62 -73 b 75 212 72 107 72 160 b 78 278 76 233 78 255 b 59 382 78 312 73 347 b 29 328 33 372 29 350 b 13 -29 29 209 23 88 b 3 -222 7 -95 10 -157 b 0 -265 1 -236 0 -252 b 16 -383 0 -304 6 -343 z m 923 -314 b 955 -240 948 -289 952 -265 b 965 -65 962 -181 965 -125 b 963 0 965 -45 965 -22 b 962 111 960 37 962 73 b 953 240 962 154 960 197 b 939 275 952 253 952 275 b 913 239 924 274 913 258 b 913 173 914 217 913 194 b 914 135 913 160 913 147 b 920 27 919 98 920 63 b 909 -128 920 -26 917 -78 b 906 -179 906 -147 906 -163 b 923 -314 906 -223 913 -266 z m 121 -301 b 143 -272 134 -301 138 -284 b 147 -255 145 -268 145 -261 b 173 160 161 -117 166 22 b 173 233 173 184 174 209 b 157 264 171 243 171 264 b 137 235 143 264 138 249 b 132 207 135 226 132 216 b 121 43 128 153 124 96 b 105 -186 117 -36 105 -111 b 111 -269 105 -215 107 -242 b 121 -301 114 -281 104 -300 z m 210 -238 b 376 -193 274 -239 327 -226 b 471 -134 406 -173 439 -154 b 534 -94 491 -120 513 -107 b 671 -192 579 -127 624 -161 b 733 -226 691 -204 708 -228 b 746 -225 737 -228 742 -226 b 845 -204 782 -226 814 -213 b 868 -194 854 -203 865 -203 b 852 -173 871 -183 860 -179 b 661 -40 789 -128 724 -84 b 642 -27 654 -36 648 -32 b 861 114 716 17 791 63 b 886 132 870 120 886 121 l 886 137 b 852 164 883 151 867 161 b 776 176 827 170 801 176 b 685 145 744 176 714 168 b 530 45 638 107 583 76 b 403 132 487 73 444 101 b 279 176 364 161 324 171 b 223 160 259 176 229 176 b 258 115 215 141 242 127 b 431 -17 314 71 372 26 b 173 -196 341 -73 253 -130 b 157 -209 168 -200 157 -203 b 158 -215 157 -212 157 -215 b 183 -236 166 -223 168 -235 b 210 -238 194 -236 206 -239 z m 768 -207 b 533 -40 687 -150 609 -94 b 321 -173 462 -85 392 -130 b 261 -194 304 -184 287 -196 b 239 -193 253 -196 246 -194 b 387 -95 294 -157 340 -125 b 505 -20 426 -71 465 -45 l 484 -4 b 353 89 441 27 396 56 b 320 115 341 96 330 107 b 297 141 311 124 297 132 b 300 148 297 144 298 145 b 336 135 311 164 324 143 b 528 -4 400 89 464 42 l 723 121 b 770 140 737 131 753 138 b 792 132 779 140 789 141 b 778 115 795 122 783 120 b 586 -6 714 75 651 35 b 557 -24 576 -13 567 -19 b 726 -147 613 -66 670 -109 b 768 -207 744 -161 765 -173 z',\n },\n noteheadXWhole: {\n x_min: 0,\n x_max: 506,\n y_min: -143.0823320899293,\n y_max: 144,\n ha: 287.0823320899293,\n o: 'm 53 -206 b 219 -163 117 -207 170 -196 b 314 -102 249 -141 282 -122 b 377 -63 334 -89 356 -76 b 514 -161 422 -96 468 -128 b 576 -196 534 -174 552 -196 b 589 -193 580 -196 585 -196 b 688 -174 625 -194 657 -181 b 711 -158 698 -171 711 -173 b 696 -143 711 -151 701 -147 b 503 -9 632 -98 567 -52 l 485 4 b 704 145 559 49 634 95 b 729 164 711 150 729 151 l 729 168 b 696 196 726 183 710 193 b 621 207 671 202 645 207 b 528 177 589 207 557 200 b 373 76 480 140 426 108 b 246 164 330 104 287 132 b 122 206 207 193 167 203 b 66 192 102 207 72 207 b 99 147 58 173 85 158 b 274 14 157 102 215 58 b 16 -164 184 -42 96 -98 b 0 -179 12 -168 0 -170 b 1 -183 0 -180 0 -183 b 26 -204 6 -193 12 -204 b 53 -206 37 -206 49 -206 z m 611 -177 b 376 -9 530 -118 452 -63 l 164 -143 b 104 -164 147 -154 130 -164 b 82 -161 96 -164 89 -164 b 230 -65 137 -125 183 -95 l 347 12 b 327 26 341 16 334 22 l 196 121 b 163 147 184 128 173 137 b 140 173 154 154 140 163 b 143 180 140 176 141 177 b 179 166 154 194 167 174 l 372 27 l 566 153 b 613 171 580 161 596 170 b 635 160 624 171 635 174 b 621 147 635 153 626 150 l 429 24 b 400 6 419 19 409 13 b 569 -117 456 -35 513 -75 b 611 -177 588 -130 608 -143 z',\n },\n noteheadXHalf: {\n x_min: 0,\n x_max: 421,\n y_min: -145.51844828189743,\n y_max: 151,\n ha: 296.51844828189746,\n o: 'm 490 -209 b 539 -207 505 -207 521 -207 b 606 -209 560 -207 583 -209 b 598 -196 602 -203 600 -199 l 406 -19 l 540 130 b 547 144 546 135 547 140 b 536 156 547 148 543 153 b 488 192 518 166 503 176 b 416 217 471 209 444 217 b 323 180 380 217 344 204 l 264 115 b 239 138 256 122 248 131 b 33 197 180 196 108 200 b 3 186 23 197 6 193 b 19 154 -1 174 10 163 b 171 12 69 107 120 59 b 19 -157 120 -45 69 -101 b 0 -177 14 -163 0 -166 b 1 -181 0 -179 0 -180 b 39 -203 9 -197 22 -203 l 186 -203 b 197 -202 190 -202 193 -200 l 213 -202 b 262 -180 228 -202 246 -199 l 314 -122 b 490 -209 363 -170 412 -216 z m 435 -148 b 291 -30 379 -112 337 -69 l 213 -118 b 190 -137 207 -125 202 -137 b 145 -111 173 -130 154 -127 b 160 -79 137 -98 151 -88 b 238 16 184 -48 212 -16 b 141 99 204 43 173 72 l 124 117 b 115 132 121 121 115 127 b 118 137 115 134 117 137 b 141 132 127 147 135 138 l 253 36 b 347 150 285 75 315 112 b 370 164 354 160 363 163 b 403 145 382 164 393 156 b 416 127 412 140 416 132 b 405 102 416 118 412 111 l 307 -10 b 413 -105 343 -42 379 -73 b 435 -148 425 -115 436 -125 z',\n },\n noteheadXBlack: {\n x_min: 0,\n x_max: 289,\n y_min: -156,\n y_max: 157,\n ha: 313,\n o: 'm 23 -225 b 69 -204 40 -223 56 -219 b 137 -131 92 -180 115 -157 l 209 -50 b 377 -197 264 -101 321 -148 b 403 -210 384 -203 393 -210 l 408 -210 b 416 -192 416 -207 416 -199 l 416 -186 b 403 -148 416 -171 413 -158 b 344 -81 384 -125 367 -101 b 252 -1 312 -55 282 -29 b 377 157 297 49 340 101 b 402 202 387 170 402 187 b 395 217 402 207 400 213 b 376 226 389 223 382 226 b 334 192 360 226 346 204 b 206 42 289 143 248 94 b 96 161 167 81 131 120 b 60 193 86 174 76 189 b 33 206 52 196 42 206 b 22 199 29 206 26 204 b 10 173 14 190 10 181 b 22 147 10 166 14 157 b 148 7 62 98 104 52 b 164 -7 154 1 158 -3 b 10 -189 111 -66 55 -122 b 0 -212 6 -197 0 -203 b 1 -217 0 -213 0 -216 b 23 -225 4 -226 14 -222 z',\n },\n noteheadCircleXDoubleWhole: {\n x_min: 0,\n x_max: 437,\n y_min: -220,\n y_max: 219.03988406941295,\n ha: 439.03988406941295,\n o: 'm 10 -304 b 40 -206 43 -275 37 -239 b 55 168 48 -81 50 45 b 53 269 56 202 55 236 b 33 315 52 287 46 314 b 3 269 9 317 4 291 b 0 239 1 259 0 249 l 0 -196 b 10 -304 1 -232 7 -268 z m 592 -317 b 621 -220 619 -287 621 -253 b 622 -121 622 -187 622 -154 b 625 -20 622 -88 622 -55 b 629 101 628 20 629 60 b 628 220 629 141 628 181 b 618 253 628 232 625 243 b 608 275 613 259 616 274 b 602 272 606 275 603 275 b 575 249 590 269 575 266 l 575 246 b 573 222 575 239 573 230 l 573 -50 b 592 -317 575 -137 570 -225 z m 79 -285 b 114 -6 96 -261 109 -131 b 117 -63 114 -24 114 -45 b 249 -242 124 -151 166 -212 b 324 -256 275 -252 300 -256 b 504 -137 406 -256 478 -209 b 505 -265 504 -180 505 -222 b 513 -282 505 -269 510 -275 b 533 -248 526 -272 528 -261 b 540 -174 539 -223 540 -199 l 540 -127 b 553 207 546 -16 549 95 b 543 232 553 216 554 232 b 518 207 530 233 518 222 b 511 118 520 177 510 148 l 511 92 b 330 216 488 174 420 223 b 301 215 320 216 311 216 b 122 65 202 204 151 163 b 114 9 117 46 114 27 b 115 75 114 32 115 53 b 101 248 115 157 109 228 b 76 206 78 242 76 225 l 76 91 b 75 -26 76 52 76 13 b 69 -189 72 -81 66 -134 b 79 -285 71 -219 76 -249 z m 317 4 b 219 109 285 40 252 75 l 209 120 b 331 153 248 141 289 151 b 420 137 360 153 390 147 b 446 120 435 131 442 127 l 436 108 l 328 -7 z m 215 -131 b 216 -101 215 -122 215 -114 b 219 -45 217 -82 219 -63 b 197 94 219 3 213 49 l 197 95 b 199 94 199 95 199 94 l 310 -27 b 233 -108 285 -55 259 -81 z m 442 -141 b 432 -122 441 -134 436 -128 l 344 -26 l 426 58 l 445 81 b 444 75 445 78 444 76 b 428 -13 433 46 428 16 b 446 -104 428 -45 433 -75 b 452 -122 449 -111 452 -117 b 442 -141 452 -131 448 -137 z m 323 -190 b 272 -180 305 -187 288 -184 b 217 -158 239 -173 225 -168 l 327 -45 b 330 -48 328 -46 328 -48 b 432 -150 363 -82 393 -121 b 323 -190 400 -174 364 -189 z',\n },\n noteheadCircleXWhole: {\n x_min: 0,\n x_max: 323,\n y_min: -190,\n y_max: 184.44625787787314,\n ha: 374.4462578778731,\n o: 'm 156 -258 b 240 -274 184 -268 213 -274 b 455 -101 347 -274 441 -202 b 465 19 462 -60 465 -22 b 464 71 465 36 465 52 b 246 265 455 194 370 274 b 216 264 236 265 226 264 b 12 94 102 251 45 203 b 0 13 3 66 1 40 b 4 -55 0 -10 3 -32 b 156 -258 14 -154 60 -222 z m 245 10 b 233 23 242 14 238 19 b 121 144 196 65 158 104 l 109 154 b 249 192 156 179 202 192 b 351 174 284 192 317 186 b 380 154 366 168 376 163 b 379 153 380 154 380 153 b 369 141 376 148 372 145 b 245 10 327 98 287 53 z m 115 -131 b 118 -96 117 -121 117 -111 b 121 -27 120 -73 121 -50 b 98 124 121 24 115 75 b 96 127 96 125 98 125 b 99 125 98 127 98 125 b 225 -12 140 79 181 33 l 138 -105 b 115 -131 131 -114 122 -121 z m 376 -143 b 363 -121 374 -134 369 -128 b 265 -12 331 -85 298 -48 l 357 85 b 379 111 364 94 372 101 b 377 102 379 108 377 105 b 359 4 364 71 359 37 b 382 -99 359 -32 366 -66 b 387 -121 384 -108 386 -115 b 376 -143 387 -130 382 -135 z m 239 -197 b 181 -187 220 -194 200 -192 b 121 -161 145 -177 128 -173 b 243 -33 161 -118 203 -75 l 248 -36 b 364 -153 285 -75 320 -118 b 239 -197 327 -180 287 -197 z',\n },\n noteheadCircleXHalf: {\n x_min: 0,\n x_max: 309,\n y_min: -179,\n y_max: 179,\n ha: 358,\n o: 'm 232 -258 b 435 -94 328 -258 412 -196 b 445 6 444 -60 445 -27 b 444 69 445 27 445 48 b 258 258 439 170 374 258 l 230 258 l 207 256 b 14 107 111 248 45 202 b 0 12 4 75 0 43 b 12 -82 0 -20 4 -50 b 144 -242 27 -160 69 -212 b 232 -258 174 -252 203 -258 z m 192 60 b 115 141 166 88 141 115 l 108 150 b 226 189 141 173 186 189 b 253 186 236 189 245 187 b 305 180 271 183 288 183 b 192 60 268 140 229 101 z m 56 -78 b 45 6 43 -56 45 -23 b 65 84 49 39 50 45 b 85 121 72 96 78 107 b 95 124 88 124 92 127 b 171 39 120 95 145 68 z m 360 -132 b 348 -112 359 -124 353 -118 l 300 -58 l 387 37 b 410 63 397 48 405 56 b 413 26 412 52 413 40 b 360 -132 413 -42 393 -95 z m 232 -183 b 184 -177 217 -183 202 -181 l 281 -78 b 348 -143 301 -101 323 -122 b 232 -183 318 -168 279 -183 z',\n },\n noteheadCircleX: {\n x_min: 0,\n x_max: 344,\n y_min: -179,\n y_max: 175.12551922594866,\n ha: 354.12551922594866,\n o: 'm 99 -210 b 236 -258 137 -242 186 -258 b 418 -183 305 -258 374 -230 b 495 33 475 -120 495 -48 b 494 66 495 45 494 55 b 302 252 487 183 405 256 b 181 243 262 249 222 248 b 46 171 128 236 79 219 b 0 19 14 127 0 73 b 99 -210 0 -68 35 -156 z m 245 42 l 124 156 b 200 176 145 166 170 173 b 337 183 245 181 291 184 b 377 176 351 183 364 180 b 245 42 333 131 288 86 z m 392 -99 l 285 3 l 400 121 b 418 154 409 131 418 140 b 465 50 448 130 465 94 b 405 -112 462 -17 439 -73 z m 89 -120 b 48 0 56 -82 48 -42 b 89 112 48 35 59 76 b 109 101 96 111 102 108 l 210 7 l 187 -17 b 89 -120 151 -53 125 -82 z m 176 -183 b 127 -163 158 -179 141 -171 l 252 -32 l 372 -144 b 233 -189 334 -173 285 -189 b 176 -183 215 -189 196 -187 z',\n },\n noteheadCircledDoubleWhole: {\n x_min: 0,\n x_max: 672,\n y_min: -291,\n y_max: 291,\n ha: 582,\n o: 'm 27 -419 b 43 -369 37 -403 43 -387 b 49 -82 45 -272 49 -177 b 50 370 50 69 50 219 b 30 419 50 389 50 419 b 7 369 7 419 7 389 b 0 -284 4 151 1 -66 b 16 -418 0 -328 10 -373 z m 945 -374 b 968 -282 963 -343 968 -312 b 966 -245 968 -269 968 -258 b 958 -45 959 -179 962 -111 b 948 262 949 56 952 160 b 936 377 946 301 946 340 b 922 399 933 386 933 399 l 919 397 b 897 374 909 396 899 389 b 894 308 897 353 893 331 b 904 120 899 246 903 183 b 913 -111 907 43 909 -35 b 927 -297 916 -173 919 -235 b 945 -374 930 -320 927 -347 z m 95 -347 b 120 -292 115 -325 117 -310 b 124 -223 122 -269 124 -246 b 122 -141 124 -196 122 -168 b 121 -85 121 -122 121 -104 b 462 -297 170 -209 300 -297 b 727 -219 543 -294 639 -271 b 828 -118 773 -190 808 -157 b 842 -268 831 -168 834 -219 b 851 -288 844 -275 840 -287 b 865 -272 861 -289 863 -279 b 873 -225 871 -256 873 -240 b 873 -171 873 -207 871 -190 b 858 196 868 -48 863 75 b 848 295 857 229 854 262 b 840 315 848 301 850 315 l 837 315 b 816 295 827 314 816 307 b 809 216 815 268 808 243 b 815 102 812 179 814 140 b 672 295 780 176 733 240 b 500 370 621 340 566 370 b 436 361 480 370 459 367 b 120 95 288 321 183 233 l 120 256 b 115 287 120 266 118 276 b 104 305 112 292 115 305 l 101 305 b 82 284 91 304 82 297 b 76 216 81 262 76 239 b 84 -253 78 59 79 -96 b 95 -347 84 -282 89 -311 z m 780 -33 b 779 -24 780 -30 779 -27 b 704 92 766 22 743 62 b 544 173 655 128 599 147 b 400 206 497 194 448 204 b 307 193 369 206 338 202 b 202 118 264 181 226 153 b 235 168 212 135 222 151 b 505 337 302 262 396 312 b 523 338 511 337 517 338 b 611 288 559 338 586 312 b 763 62 678 225 733 151 b 780 -33 776 26 782 -4 z m 435 -88 b 337 -23 387 -88 354 -65 b 333 6 334 -14 333 -6 b 366 86 333 35 344 66 b 456 122 390 111 423 121 b 602 27 517 122 582 88 b 606 1 605 19 606 10 b 575 -49 606 -20 596 -36 b 435 -88 530 -76 481 -82 z m 441 -269 b 194 -96 327 -262 249 -194 b 167 1 176 -62 167 -30 b 177 59 167 22 171 42 b 174 39 176 52 174 46 b 266 -104 174 -27 210 -73 b 511 -151 346 -148 435 -144 l 552 -151 b 740 -104 616 -145 683 -141 b 776 -66 756 -94 769 -81 b 700 -174 766 -105 740 -140 b 441 -269 632 -232 533 -268 z',\n },\n noteheadCircledWhole: {\n x_min: -50,\n x_max: 472,\n y_min: -231.00750990437078,\n y_max: 232,\n ha: 463.00750990437075,\n o: 'm 289 -333 b 553 -255 370 -330 465 -307 b 680 -62 635 -206 680 -138 b 662 22 680 -36 674 -7 b 500 259 626 112 573 193 b 327 334 448 304 393 334 b 264 325 307 334 287 331 b -59 49 111 284 4 193 b -72 -19 -68 26 -72 4 b 289 -333 -72 -192 84 -334 z m 608 -69 b 605 -60 606 -66 606 -63 b 530 56 592 -14 570 26 b 372 137 482 92 425 111 b 228 170 324 158 275 168 b 134 157 196 170 166 166 b 29 82 91 145 53 117 b 60 132 37 99 49 115 b 333 301 128 226 223 276 b 350 302 338 301 344 302 b 438 252 386 302 413 276 b 590 26 505 189 560 115 b 608 -69 603 -10 608 -40 z m 262 -124 b 164 -59 215 -124 180 -101 b 160 -32 161 -50 160 -42 b 193 50 160 -3 171 30 b 284 86 217 75 251 85 b 429 -9 344 86 409 52 b 433 -36 432 -17 433 -26 b 402 -85 433 -56 423 -72 b 262 -124 357 -112 307 -118 z m 268 -305 b 22 -132 154 -298 76 -230 b -6 -33 3 -98 -6 -65 b 3 23 -6 -14 -3 6 b 1 3 1 16 1 10 b 94 -140 1 -63 37 -109 b 338 -187 173 -184 261 -180 l 379 -187 b 566 -140 444 -181 510 -177 b 602 -102 582 -130 595 -117 b 526 -210 592 -141 567 -176 b 268 -305 459 -268 360 -304 z',\n },\n noteheadCircledHalf: {\n x_min: -50,\n x_max: 393,\n y_min: -175,\n y_max: 175,\n ha: 350,\n o: 'm 540 39 b 408 187 503 94 464 148 b 259 252 356 223 301 252 b 35 192 160 252 95 229 b -68 50 -17 160 -53 112 b -72 13 -71 37 -72 24 b 69 -204 -72 -79 -1 -161 b 246 -252 125 -238 186 -252 b 500 -164 336 -252 426 -219 b 566 -42 543 -132 566 -88 b 540 39 566 -14 557 14 z m 9 -42 b 12 -68 10 -50 10 -59 b -7 6 3 -46 -4 -22 b 131 189 1 98 55 153 b 243 220 167 206 204 215 b 261 222 249 222 255 222 b 377 161 308 222 341 189 b 435 89 402 141 420 117 b 431 92 433 89 432 91 b 346 120 402 102 372 107 b 253 143 314 135 282 143 b 85 79 193 143 138 115 b 9 -42 45 52 10 13 z m 356 39 b 343 1 356 24 351 12 b 206 -111 304 -46 259 -84 b 181 -118 196 -115 189 -118 b 156 -71 163 -118 154 -102 b 238 35 164 -22 199 9 b 324 66 264 52 294 59 b 356 39 348 71 356 62 z m 488 -78 b 392 -176 471 -125 433 -154 b 246 -225 346 -200 297 -217 b 230 -226 240 -226 235 -226 b 157 -204 203 -226 180 -215 b 78 -154 128 -190 101 -174 b 232 -184 128 -171 180 -184 b 344 -161 269 -184 307 -179 b 491 -39 405 -135 455 -94 b 500 -23 495 -33 497 -29 b 488 -78 500 -40 494 -59 z',\n },\n noteheadCircledBlack: {\n x_min: -70,\n x_max: 326,\n y_min: -168,\n y_max: 192,\n ha: 360,\n o: 'm 176 -239 b 190 -242 180 -240 186 -240 b 262 -232 213 -242 238 -235 b 469 -19 384 -225 469 -131 b 467 22 469 -6 468 9 b 383 194 455 86 436 151 b 183 276 315 249 251 275 b 32 236 134 276 85 264 b -94 88 -30 207 -75 160 b -101 30 -98 69 -101 49 b 176 -239 -101 -107 9 -251 z m 177 -212 b -30 -27 81 -213 -13 -131 b -33 17 -33 -13 -33 3 b 127 226 -33 111 14 187 b 194 239 151 233 173 238 b 301 203 232 239 266 226 b 364 134 330 184 350 160 b 233 181 341 160 279 180 b 192 171 216 181 202 179 b 13 1 117 131 46 86 b 3 -48 6 -17 3 -33 b 60 -115 3 -79 20 -101 b 203 -135 105 -131 151 -138 b 229 -138 212 -137 220 -137 b 295 -122 251 -138 274 -135 b 400 -33 337 -99 373 -71 b 228 -206 393 -125 330 -192 b 177 -212 209 -209 192 -213 z',\n },\n noteheadDoubleWholeSquare: {\n x_min: 0,\n x_max: 474,\n y_min: -209.39230484541326,\n y_max: 211,\n ha: 420.39230484541326,\n o: 'm 648 -301 b 668 -287 658 -304 665 -295 b 683 -209 678 -262 683 -235 b 677 258 681 -55 678 102 b 672 284 677 266 677 276 b 661 304 670 291 672 304 l 658 304 b 635 279 647 301 635 297 b 629 240 635 266 629 252 l 629 236 b 631 225 629 232 631 228 b 583 194 631 197 611 194 l 528 194 b 125 207 393 194 259 202 b 89 207 114 209 101 206 b 63 210 79 207 71 207 b 52 229 55 213 52 220 b 55 258 52 238 55 248 b 53 266 55 261 55 264 b 36 298 48 276 53 298 l 35 298 b 4 264 14 298 7 284 b 0 187 0 238 0 213 b 4 50 0 143 3 96 b 6 -10 6 30 6 10 b 4 -130 6 -50 4 -91 b 12 -268 4 -176 6 -222 b 19 -287 13 -275 10 -284 b 35 -275 26 -288 30 -281 b 52 -220 50 -261 48 -239 b 75 -199 55 -206 58 -199 l 141 -197 l 274 -197 l 634 -197 b 639 -281 635 -219 636 -251 b 648 -301 641 -288 638 -300 z m 72 -66 b 55 -56 59 -69 55 -65 l 55 -50 b 53 53 55 -16 55 20 b 69 73 53 69 60 72 l 79 72 b 330 65 163 66 246 63 l 592 65 b 634 81 606 65 618 71 b 635 -30 634 39 635 6 b 605 -58 635 -49 628 -58 b 451 -60 553 -60 503 -60 b 219 -59 373 -60 295 -59 l 166 -59 b 72 -66 134 -59 104 -60 z',\n },\n noteheadSquareWhite: {\n x_min: 0,\n x_max: 350,\n y_min: -131,\n y_max: 131,\n ha: 262,\n o: 'm 468 -189 b 485 -187 474 -189 480 -189 b 500 -176 495 -187 500 -183 b 498 -168 500 -174 498 -171 b 497 -166 498 -167 497 -167 l 498 -164 b 504 -154 503 -163 504 -158 b 503 -138 504 -150 503 -144 l 503 -135 l 503 -94 b 492 66 500 -45 494 10 b 488 135 492 89 488 112 b 484 150 488 141 485 145 b 482 154 482 151 482 153 b 429 189 472 177 456 189 b 53 184 304 186 179 186 l 39 184 b 33 181 36 183 35 183 b 12 160 20 181 12 177 b 0 -109 9 71 4 -19 b 19 -137 0 -125 7 -134 b 23 -151 19 -141 20 -145 b 85 -187 37 -173 55 -187 b 468 -189 212 -187 340 -187 z m 246 -125 l 63 -125 b 66 -111 65 -122 66 -117 b 73 72 69 -50 71 10 l 73 130 b 88 128 78 128 82 128 b 148 130 108 130 128 130 b 271 128 190 130 230 128 l 271 130 l 420 130 b 428 20 425 92 425 56 l 436 -127 l 246 -127 z',\n },\n noteheadSquareBlack: {\n x_min: 0,\n x_max: 342,\n y_min: -129.98961937716263,\n y_max: 132.44444444444446,\n ha: 262.4340638216071,\n o: 'm 217 190 b 439 186 304 190 372 190 b 467 180 448 184 458 183 b 492 145 484 176 492 167 b 490 -124 490 56 490 -33 b 488 -141 490 -130 488 -135 b 456 -170 488 -163 478 -168 b 118 -183 344 -176 230 -181 b 29 -184 89 -183 60 -192 b 0 -148 4 -180 0 -168 b 1 29 1 -89 1 -30 l 1 156 b 36 190 3 187 4 190 b 217 190 102 192 168 190 z',\n },\n noteheadTriangleDownDoubleWhole: {\n x_min: 0,\n x_max: 510,\n y_min: -213,\n y_max: 213,\n ha: 426,\n o: 'm 16 -307 b 30 -289 26 -307 29 -297 b 43 -236 36 -272 42 -253 l 65 219 b 59 285 62 240 69 264 b 46 307 55 294 58 307 l 43 307 b 19 279 30 304 20 295 b 13 184 17 248 14 216 b 1 -125 9 81 7 -23 b 0 -163 0 -138 0 -150 b 6 -287 0 -204 4 -245 b 16 -307 6 -295 7 -305 z m 707 -294 b 734 -213 733 -271 734 -242 b 729 245 733 -60 730 92 b 719 285 729 259 724 272 b 707 298 716 291 714 298 l 703 298 b 685 284 696 297 687 292 b 683 253 683 274 683 264 b 691 -181 685 108 685 -36 b 707 -294 693 -217 690 -256 z m 108 -238 b 125 -203 125 -238 121 -216 b 127 -190 127 -199 127 -194 b 120 -138 127 -173 120 -156 l 120 -66 b 114 167 120 12 118 89 l 118 161 b 314 -153 184 58 248 -48 b 350 -184 327 -173 338 -184 b 387 -154 361 -184 374 -174 b 567 108 449 -68 508 20 b 626 193 588 137 608 164 b 615 -132 622 85 619 -24 l 615 -166 b 619 -207 615 -180 615 -194 b 638 -226 622 -217 629 -225 b 651 -209 648 -226 649 -216 b 658 -177 655 -199 658 -187 l 658 -171 b 667 49 655 -98 667 -23 b 665 88 667 62 667 75 b 665 220 665 135 667 179 b 641 265 664 238 660 265 b 626 243 629 265 626 255 b 628 222 626 236 628 228 b 612 225 624 223 619 225 b 384 223 537 223 461 223 l 384 225 l 170 225 b 131 215 157 225 144 222 b 112 200 122 210 117 206 b 88 266 111 225 108 249 b 75 239 76 259 75 249 b 73 147 75 207 73 179 b 82 -189 73 35 79 -78 b 84 -203 82 -194 82 -199 b 108 -238 86 -219 91 -238 z m 361 -79 b 295 78 336 -26 314 26 b 284 151 287 101 284 125 b 310 177 284 171 291 177 b 419 176 346 176 383 174 l 423 176 b 445 153 441 176 445 168 l 445 147 b 361 -79 442 65 415 -10 z',\n },\n noteheadTriangleDownWhole: {\n x_min: 0,\n x_max: 366,\n y_min: -145,\n y_max: 138,\n ha: 283,\n o: 'm 242 -209 b 279 -180 253 -209 266 -200 b 459 84 341 -92 400 -4 b 520 170 480 112 501 141 b 527 189 524 177 527 183 b 504 199 527 196 520 199 l 55 199 b 23 190 45 199 33 196 b 0 161 9 181 0 173 b 10 135 0 154 3 145 b 206 -177 76 32 140 -73 b 242 -209 219 -199 230 -209 z m 253 -105 b 187 52 228 -52 206 0 b 176 127 179 76 176 101 b 197 151 176 144 181 151 l 202 151 b 256 150 220 151 238 150 b 311 151 275 150 294 151 b 337 128 331 151 337 144 l 337 122 b 253 -105 334 39 307 -35 z',\n },\n noteheadTriangleDownHalf: {\n x_min: -0.0833130378007211,\n x_max: 341,\n y_min: -159,\n y_max: 159,\n ha: 318,\n o: 'm 266 -229 b 282 -215 274 -229 278 -225 b 487 153 350 -92 418 30 b 491 170 490 158 491 164 b 480 189 491 177 487 183 b 425 215 464 202 448 213 b 33 226 297 217 168 222 b 13 229 29 223 22 229 b 1 222 9 229 4 228 b 14 184 -4 207 7 196 b 210 -176 81 65 145 -56 b 253 -225 222 -194 230 -213 b 266 -229 259 -226 264 -228 z m 134 22 b 147 43 138 27 141 37 b 206 163 174 79 179 127 b 213 170 209 166 212 167 l 340 167 b 193 -75 287 89 251 1 b 190 -82 192 -76 190 -79 z',\n },\n noteheadTriangleDownBlack: {\n x_min: 0,\n x_max: 346,\n y_min: -149,\n y_max: 149,\n ha: 298,\n o: 'm 229 -215 b 259 -202 238 -215 248 -210 b 284 -173 269 -194 278 -184 l 482 173 b 498 209 488 184 498 194 b 481 215 492 215 487 215 b 63 213 343 215 203 213 b 12 197 45 213 29 206 b 0 180 4 193 0 187 b 3 168 0 177 1 173 b 13 150 6 163 9 156 l 196 -189 b 229 -215 206 -206 216 -215 z',\n },\n noteheadTriangleUpDoubleWhole: {\n x_min: 0,\n x_max: 510,\n y_min: -213,\n y_max: 213,\n ha: 426,\n o: 'm 16 -307 b 30 -289 26 -307 29 -297 b 43 -236 36 -272 42 -253 l 65 219 b 59 285 62 240 69 264 b 46 307 55 294 58 307 l 43 307 b 19 279 30 304 20 295 b 13 184 17 248 14 216 b 1 -125 9 81 7 -23 b 0 -163 0 -138 0 -150 b 6 -287 0 -204 4 -245 b 16 -307 6 -295 7 -305 z m 707 -298 b 734 -217 733 -275 734 -246 b 729 240 733 -65 730 88 b 719 281 729 255 724 268 b 707 294 716 287 714 294 l 703 294 b 685 279 696 292 687 288 b 683 249 683 269 683 259 b 691 -186 685 104 685 -40 b 707 -298 693 -222 690 -261 z m 88 -266 b 112 -200 108 -249 111 -225 b 131 -215 117 -206 122 -210 b 170 -225 144 -222 157 -225 l 384 -225 l 384 -223 b 612 -225 461 -223 537 -223 b 628 -222 619 -225 624 -223 b 641 -265 628 -238 622 -265 b 665 -220 660 -265 664 -238 b 665 -88 667 -179 665 -135 b 667 -49 667 -75 667 -62 b 658 171 667 23 655 98 b 651 209 660 184 655 197 b 638 226 649 216 648 226 b 619 207 629 225 622 217 b 615 166 615 194 615 180 l 615 132 b 626 -193 619 24 622 -85 b 567 -108 608 -164 588 -137 b 387 154 508 -20 449 68 b 350 184 374 174 361 184 b 314 153 338 184 327 173 b 118 -161 248 48 184 -58 l 114 -167 b 120 66 118 -89 120 -12 l 120 138 b 127 190 120 156 127 173 b 125 203 127 194 127 199 b 108 238 121 216 125 238 b 84 203 91 238 86 219 b 82 189 82 199 82 194 b 73 -147 79 78 73 -35 b 75 -239 73 -179 75 -207 b 88 -266 75 -249 76 -259 z m 310 -177 b 284 -151 291 -177 284 -171 b 295 -78 284 -125 287 -101 b 361 79 314 -26 336 26 b 445 -147 415 10 442 -65 b 423 -176 446 -166 442 -176 l 419 -176 b 310 -177 383 -174 346 -176 z',\n },\n noteheadTriangleUpWhole: {\n x_min: 0,\n x_max: 366,\n y_min: -145,\n y_max: 138,\n ha: 283,\n o: 'm 504 -209 b 527 -199 520 -209 527 -206 b 520 -180 527 -193 524 -187 b 459 -94 501 -151 480 -122 b 279 170 400 -6 341 82 b 242 199 266 190 253 199 b 206 167 230 199 219 189 b 10 -145 140 63 76 -42 b 0 -171 3 -156 0 -164 b 23 -200 0 -183 9 -192 b 55 -209 33 -206 45 -209 z m 202 -161 b 176 -137 183 -163 176 -156 b 187 -62 176 -111 179 -86 b 253 95 206 -10 228 42 b 337 -132 307 24 334 -49 b 311 -161 338 -153 334 -161 b 256 -160 294 -161 275 -160 b 202 -161 238 -160 220 -161 z',\n },\n noteheadTriangleUpHalf: {\n x_min: 0,\n x_max: 341.0833130378007,\n y_min: -159,\n y_max: 159,\n ha: 318,\n o: 'm 458 -226 b 478 -229 462 -223 469 -229 b 490 -222 482 -229 487 -228 b 477 -184 495 -207 484 -196 b 281 176 410 -65 346 56 b 238 225 269 194 261 213 b 225 229 232 226 228 228 b 209 215 217 229 213 225 b 4 -153 141 92 73 -30 b 0 -170 1 -158 0 -164 b 12 -189 0 -177 4 -183 b 66 -215 27 -202 43 -213 b 458 -226 194 -217 323 -222 z m 151 -167 b 298 75 204 -89 240 -1 b 301 82 300 76 301 79 l 357 -22 b 344 -43 353 -27 350 -37 b 285 -163 317 -79 312 -127 b 278 -170 282 -166 279 -167 z',\n },\n noteheadTriangleUpBlack: {\n x_min: 0,\n x_max: 346,\n y_min: -149,\n y_max: 149,\n ha: 298,\n o: 'm 481 -215 b 498 -209 487 -215 492 -215 b 482 -173 498 -194 488 -184 l 284 173 b 259 202 278 184 269 194 b 229 215 248 210 238 215 b 196 189 216 215 206 206 l 13 -150 b 3 -168 9 -156 6 -163 b 0 -180 1 -173 0 -177 b 12 -197 0 -187 4 -193 b 63 -213 29 -206 45 -213 b 481 -215 203 -213 343 -215 z',\n },\n noteheadSlashedDoubleWhole1: {\n x_min: 0,\n x_max: 697,\n y_min: -290,\n y_max: 290,\n ha: 580,\n o: 'm 20 -418 b 42 -376 40 -418 37 -392 b 43 -356 45 -370 43 -363 l 43 -348 b 50 -197 43 -298 49 -248 b 78 317 58 -24 69 147 b 72 387 75 343 82 366 b 52 418 68 397 69 418 l 49 416 b 24 380 33 413 24 399 b 19 235 23 333 20 284 b 7 -82 14 130 10 24 b 0 -264 6 -143 0 -203 b 10 -382 0 -302 1 -343 b 20 -418 13 -393 6 -418 z m 976 -344 b 991 -331 985 -346 988 -337 b 1004 -271 999 -312 1004 -292 l 1004 -194 b 996 184 1004 -68 1001 59 b 996 281 996 216 998 249 b 984 379 995 314 991 347 b 971 397 981 392 976 396 b 952 386 965 397 959 392 b 943 361 943 380 945 370 b 937 288 939 337 937 312 b 945 158 937 245 942 203 b 959 -248 950 23 953 -112 b 966 -325 960 -274 963 -300 b 976 -344 966 -334 968 -344 z m 102 -331 b 124 -272 120 -314 122 -294 b 135 -278 127 -276 131 -278 l 141 -278 b 320 -199 206 -262 272 -252 b 348 -171 328 -189 338 -180 b 482 -199 392 -190 436 -199 b 704 -173 576 -199 641 -187 b 847 -82 760 -158 809 -130 l 855 -69 l 855 -73 b 863 -229 857 -125 860 -177 b 876 -255 863 -239 863 -255 b 893 -233 886 -255 888 -242 b 900 -189 899 -219 900 -203 l 900 66 b 900 192 899 108 900 150 b 893 301 900 228 899 265 b 877 325 890 310 893 325 l 876 325 b 855 301 865 324 855 315 b 850 202 852 268 847 235 b 854 50 854 151 854 101 b 821 99 847 68 835 85 b 733 167 795 127 765 148 b 831 253 766 196 799 225 b 851 265 837 258 844 261 b 829 282 840 275 835 279 b 772 295 815 291 795 295 b 685 271 739 295 704 287 b 624 215 665 252 645 233 l 566 232 b 527 239 553 236 540 239 b 490 228 514 239 501 236 b 451 219 475 217 467 219 b 275 176 389 219 331 200 b 184 53 216 150 184 105 b 199 -14 184 32 189 10 b 262 -108 215 -52 236 -82 l 125 -230 b 134 225 130 -78 132 73 b 135 269 134 239 135 255 b 121 330 135 291 132 311 b 95 287 99 323 95 307 b 92 124 94 233 95 179 b 85 -143 88 36 85 -53 b 89 -300 85 -196 86 -248 b 102 -331 89 -311 89 -323 z m 367 -14 b 350 43 359 3 351 22 b 392 122 350 82 363 107 b 544 171 439 150 492 160 b 572 168 554 174 563 171 z m 564 -132 b 467 -105 528 -138 497 -121 b 442 -89 458 -101 449 -95 l 658 101 b 690 30 677 82 690 59 b 688 10 690 24 690 17 b 564 -132 678 -45 611 -127 z',\n },\n noteheadSlashedWhole1: {\n x_min: -76,\n x_max: 498,\n y_min: -168,\n y_max: 168,\n ha: 336,\n o: 'm -79 -242 b 55 -202 -32 -236 14 -228 l 145 -143 b 333 -171 203 -166 265 -171 b 429 -164 361 -174 395 -168 b 582 -130 481 -158 534 -154 b 657 -20 631 -105 657 -65 b 619 68 657 9 644 40 b 552 120 599 89 577 107 b 582 138 562 127 572 132 b 717 226 625 167 668 194 b 638 242 688 236 662 242 b 543 213 603 242 573 232 b 455 154 514 194 484 174 b 325 199 412 167 367 179 b 233 215 298 210 265 215 b 75 156 173 215 124 186 b 0 27 24 122 0 76 b 66 -98 0 -17 22 -63 b 72 -102 69 -99 71 -101 b -89 -209 17 -137 -36 -173 b -109 -225 -95 -213 -109 -216 b -108 -229 -109 -226 -108 -228 b -85 -242 -104 -239 -95 -242 z m 181 -29 b 167 14 171 -13 167 1 b 187 62 167 30 173 46 b 301 137 217 99 258 118 b 312 138 304 138 308 138 l 317 138 b 389 109 340 125 364 118 l 383 105 z m 337 -109 b 239 -82 301 -107 268 -99 l 468 65 b 482 24 477 53 482 40 b 480 4 482 19 481 12 b 337 -109 467 -56 399 -111 z',\n },\n noteheadSlashedHalf1: {\n x_min: -79.3435119522494,\n x_max: 471,\n y_min: -184,\n y_max: 184,\n ha: 368,\n o: 'm -112 -251 b -94 -265 -107 -261 -101 -264 b -52 -242 -79 -265 -63 -249 l 89 -148 b 212 -180 125 -170 167 -179 b 238 -177 220 -180 229 -179 l 262 -180 b 346 -171 289 -180 318 -176 b 576 -91 431 -166 507 -140 b 641 4 619 -60 641 -29 b 592 96 641 35 625 65 l 583 104 b 533 147 567 121 550 134 l 613 200 b 678 261 636 216 664 232 b 658 265 671 264 664 265 b 611 248 641 265 625 258 l 491 171 b 337 204 444 194 392 204 b 281 200 318 204 300 204 b 27 62 180 187 92 145 b -1 -19 9 37 -1 10 b 36 -107 -1 -50 12 -82 b 52 -121 42 -112 46 -117 l -72 -203 b -112 -251 -91 -216 -122 -233 z m 161 -49 b 158 -29 160 -42 158 -35 b 183 33 158 -7 167 16 b 395 137 239 95 311 122 b 420 125 405 134 413 130 z m 276 -128 b 261 -131 271 -130 266 -131 b 181 -86 233 -131 203 -114 l 454 94 l 468 72 b 481 36 477 60 481 49 b 469 1 481 26 477 14 b 276 -128 422 -66 354 -105 z',\n },\n noteheadSlashedBlack1: {\n x_min: -110,\n x_max: 452,\n y_min: -190,\n y_max: 190,\n ha: 380,\n o: 'm -131 -274 b -102 -262 -121 -272 -111 -266 b 7 -186 -65 -239 -29 -212 b 50 -157 22 -176 36 -166 b 105 -176 65 -166 84 -173 b 207 -183 140 -181 173 -183 b 239 -184 219 -184 229 -184 b 428 -91 327 -184 377 -150 b 487 43 461 -52 487 -7 b 482 76 487 53 485 65 b 459 128 478 95 469 112 b 507 161 475 138 491 150 l 651 262 b 622 274 641 271 632 274 b 605 271 616 274 611 272 b 514 233 573 262 541 252 l 422 167 b 317 203 392 190 354 203 b 271 196 301 203 285 200 b 168 157 236 186 200 173 b 6 -16 94 120 33 68 b -1 -62 1 -32 -1 -48 b 17 -125 -1 -86 4 -108 b -81 -196 -16 -148 -48 -173 b -145 -242 -102 -212 -128 -219 b -158 -256 -150 -246 -158 -251 b -157 -261 -158 -258 -157 -259 b -131 -274 -153 -269 -141 -274 z',\n },\n noteheadSlashedDoubleWhole2: {\n x_min: -0.12386605641055257,\n x_max: 697.4733477320805,\n y_min: -295,\n y_max: 295,\n ha: 590,\n o: 'm 870 -338 b 891 -315 884 -341 887 -325 b 906 -183 907 -274 903 -228 b 914 186 912 -60 904 62 b 914 240 914 203 916 222 b 916 276 913 251 916 265 b 899 300 916 289 913 300 b 871 253 874 300 871 274 b 858 -168 871 111 858 -27 b 860 -235 858 -190 860 -213 l 736 -131 b 834 -20 799 -111 834 -69 b 789 85 834 13 819 49 b 683 160 760 118 723 140 b 383 216 589 209 487 215 b 330 213 364 217 347 216 b 228 300 295 242 261 271 b 86 347 184 337 138 348 b 58 343 76 347 63 350 l 58 360 b 35 425 58 384 53 423 b 6 382 9 425 6 403 l 6 131 b 0 -164 6 33 4 -66 b 24 -327 -1 -216 6 -271 b 50 -262 46 -305 50 -284 l 50 -154 b 52 -45 50 -118 50 -81 b 58 325 55 79 58 202 b 73 310 60 320 68 315 b 94 294 79 304 86 298 b 89 271 89 287 89 278 l 89 94 b 104 -194 101 -20 88 -108 b 118 -245 107 -213 104 -248 b 140 -190 140 -243 140 -212 l 140 -62 b 132 258 140 46 138 153 l 132 259 l 235 173 b 193 132 219 161 204 148 b 153 26 167 101 153 63 b 164 -35 153 7 157 -16 b 341 -170 196 -114 261 -158 b 433 -177 372 -174 403 -177 b 619 -157 497 -177 559 -170 l 706 -230 b 799 -276 736 -258 765 -276 b 818 -274 806 -276 812 -276 l 861 -274 b 863 -312 861 -287 863 -300 b 870 -338 864 -321 858 -337 z m 966 -425 b 986 -397 979 -425 982 -408 b 991 -373 989 -390 989 -382 b 995 -239 991 -328 995 -284 b 1004 334 1001 -49 1002 143 b 995 380 1005 350 1005 367 b 982 402 989 386 992 402 l 978 400 b 949 374 965 396 950 390 b 948 333 948 360 948 346 l 948 -37 b 949 -84 949 -52 949 -68 b 946 -248 949 -132 946 -189 b 953 -396 946 -297 948 -346 b 966 -425 955 -408 950 -425 z m 624 -36 b 416 140 554 22 485 81 b 482 156 439 150 461 154 b 625 81 537 156 588 124 b 647 27 639 63 647 46 b 624 -36 647 7 638 -14 z m 469 -117 b 320 14 386 -118 320 -60 b 343 81 320 37 327 60 l 547 -95 b 469 -117 521 -105 494 -111 z',\n },\n noteheadSlashedWhole2: {\n x_min: -83,\n x_max: 510,\n y_min: -201,\n y_max: 198,\n ha: 399,\n o: 'm 734 -289 b 696 -245 726 -266 710 -256 b 586 -164 660 -217 622 -192 l 589 -161 b 654 -50 631 -135 654 -94 b 616 40 654 -19 641 13 b 305 174 536 127 420 174 b 171 151 261 174 215 167 b 166 150 170 151 168 150 b 86 209 140 170 112 189 b -94 284 32 249 -22 289 l -108 285 b -120 274 -114 285 -120 284 b -104 251 -120 266 -112 258 b 71 124 -46 209 12 166 l 85 114 b 36 72 66 102 50 89 b 0 -30 12 40 0 4 b 122 -186 0 -96 45 -160 b 343 -222 194 -210 268 -222 b 514 -197 410 -220 467 -213 l 554 -228 b 734 -289 609 -268 668 -275 z m 477 -82 b 268 73 408 -30 338 22 l 301 91 b 336 101 314 96 324 101 b 370 88 347 101 359 96 b 459 9 405 66 436 43 b 481 -56 474 -13 481 -35 b 477 -82 481 -65 480 -73 z m 310 -161 b 216 -143 276 -161 246 -156 b 166 -72 181 -128 166 -105 b 168 -46 166 -65 167 -55 b 206 26 176 -16 189 7 b 436 -140 282 -29 360 -84 b 382 -158 420 -150 402 -157 b 310 -161 357 -161 333 -161 z',\n },\n noteheadSlashedHalf2: {\n x_min: -73,\n x_max: 454,\n y_min: -188,\n y_max: 188,\n ha: 376,\n o: 'm 654 -271 b 603 -202 649 -233 625 -217 b 481 -115 563 -173 523 -144 b 564 -60 510 -101 539 -82 b 615 40 596 -33 615 4 b 609 69 615 50 613 60 b 505 167 590 120 554 151 b 336 190 451 184 392 190 b 124 134 259 190 189 171 l -42 248 b -88 271 -56 256 -75 271 b -101 265 -94 271 -98 269 b -105 252 -104 259 -105 255 b -66 210 -105 235 -82 222 l 85 107 b 0 -24 42 73 0 35 b 183 -183 0 -118 75 -184 b 262 -176 206 -180 233 -177 b 438 -135 324 -171 383 -158 b 570 -228 482 -166 527 -197 b 654 -271 595 -243 621 -259 z m 393 -53 l 311 4 l 225 65 b 392 134 274 102 331 122 b 455 50 425 141 455 101 b 439 -3 455 35 451 14 b 393 -53 425 -22 409 -37 z m 287 -121 b 246 -130 272 -127 259 -130 b 171 -89 215 -130 189 -115 b 156 -40 161 -73 156 -58 b 186 29 156 -17 166 7 l 192 35 l 359 -82 b 287 -121 337 -98 312 -111 z',\n },\n noteheadSlashedBlack2: {\n x_min: -84,\n x_max: 405,\n y_min: -189,\n y_max: 189,\n ha: 378,\n o: 'm 557 -265 b 573 -272 562 -268 567 -272 b 583 -261 577 -272 580 -269 b 575 -242 580 -253 579 -248 b 524 -190 563 -220 544 -204 b 405 -99 485 -160 445 -130 b 497 50 449 -60 482 -9 b 500 72 498 58 500 65 b 478 122 500 91 492 107 b 331 186 438 167 387 186 b 120 131 258 186 186 167 l 107 124 b -52 242 53 163 1 203 b -89 265 -63 251 -76 259 b -107 272 -95 268 -101 272 b -117 266 -109 272 -114 271 b -121 251 -120 262 -121 256 b -114 235 -121 245 -120 239 b -60 186 -96 217 -81 199 b 63 95 -20 156 22 125 b -1 -35 26 66 -1 27 b 137 -183 -1 -130 46 -183 b 174 -180 148 -183 161 -181 l 245 -171 b 366 -128 289 -166 331 -150 l 426 -171 b 557 -265 469 -203 514 -233 z',\n },\n noteheadDiamondDoubleWhole: {\n x_min: 0,\n x_max: 429,\n y_min: -221,\n y_max: 221,\n ha: 442,\n o: 'm 22 -318 b 42 -294 33 -318 37 -302 b 46 -266 45 -285 45 -275 b 50 -219 49 -249 50 -233 b 48 -153 50 -197 49 -176 b 43 120 43 -62 43 29 l 43 253 b 37 298 43 269 45 284 b 26 318 35 305 35 318 l 24 318 b 1 295 13 317 3 308 b 0 268 0 285 0 276 l 0 -121 b 10 -291 0 -177 1 -235 b 22 -318 12 -301 10 -318 z m 593 -312 b 618 -256 611 -294 616 -276 l 618 -186 b 611 253 618 -40 612 108 b 605 276 611 261 608 268 b 589 295 600 284 600 297 b 567 272 577 294 569 285 l 567 251 b 575 -197 573 102 575 -48 b 593 -312 575 -233 579 -271 z m 99 -268 b 114 -256 107 -269 111 -262 b 127 -196 124 -238 125 -217 b 128 -144 128 -179 128 -161 b 122 -9 128 -99 125 -55 l 135 -19 b 344 -179 206 -71 276 -122 b 370 -190 354 -186 363 -190 b 395 -173 379 -190 386 -184 b 492 -33 426 -127 459 -79 b 491 -86 491 -50 491 -68 b 507 -251 491 -138 495 -193 b 534 -184 530 -228 533 -206 b 541 144 537 -75 539 35 b 530 204 541 164 539 186 b 520 220 528 210 528 220 b 500 203 511 219 503 213 b 498 192 498 200 498 194 l 498 176 b 494 7 497 120 497 63 l 490 12 l 287 176 b 258 190 279 181 274 190 b 212 153 239 186 225 168 l 127 40 b 121 32 124 37 122 35 b 118 114 120 59 118 86 b 102 249 117 158 122 206 b 75 219 85 246 79 236 b 72 187 72 209 72 197 b 76 117 72 164 75 141 b 85 -151 79 27 79 -62 b 91 -251 86 -184 91 -217 b 99 -268 91 -258 92 -266 z m 392 -128 b 374 -122 387 -134 380 -127 l 180 29 b 170 45 173 35 170 39 b 176 56 170 48 173 52 b 236 122 204 101 219 122 b 308 76 252 122 272 107 l 433 -26 b 449 -50 439 -32 449 -36 b 392 -128 432 -75 413 -102 z',\n },\n noteheadDiamondWhole: {\n x_min: 0,\n x_max: 271,\n y_min: -132,\n y_max: 132,\n ha: 264,\n o: 'm 230 -177 b 256 -190 240 -186 249 -190 b 281 -173 265 -190 272 -184 b 382 -29 314 -124 347 -76 b 390 -10 387 -22 390 -14 b 376 12 390 -3 386 4 b 173 177 308 66 240 121 b 144 190 166 183 160 190 b 98 153 127 186 112 170 b 13 40 69 115 42 76 b 0 13 4 29 0 20 b 22 -19 0 3 7 -9 b 230 -177 92 -69 163 -122 z m 279 -128 b 261 -122 274 -134 266 -127 l 66 30 b 56 45 59 35 56 39 b 62 56 56 48 59 52 b 122 122 91 101 105 122 b 194 76 138 122 158 107 l 320 -26 b 336 -50 325 -32 336 -35 b 279 -128 318 -75 300 -102 z',\n },\n noteheadDiamondHalf: {\n x_min: 0,\n x_max: 295,\n y_min: -148,\n y_max: 148,\n ha: 296,\n o: 'm 228 -207 b 245 -213 235 -210 240 -213 b 264 -203 252 -213 258 -210 b 415 -46 314 -150 364 -98 b 425 -27 420 -40 425 -35 b 416 -10 425 -22 422 -16 b 217 200 350 60 284 131 b 194 213 212 207 204 213 b 170 196 181 213 177 203 b 14 33 118 143 68 86 b 0 7 4 23 0 16 b 17 -20 0 -1 6 -10 b 118 -114 52 -50 82 -85 b 228 -207 156 -144 184 -184 z m 209 -157 b 134 -69 177 -138 141 -115 b 130 -26 131 -55 130 -40 b 215 148 130 42 160 99 b 225 156 217 151 220 156 b 230 153 226 156 228 156 b 323 -26 276 104 321 55 b 298 -75 324 -42 315 -59 b 265 -109 287 -86 276 -99 b 209 -157 245 -125 228 -167 z',\n },\n noteheadDiamondBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -146,\n y_max: 146,\n ha: 292,\n o: 'm 266 -210 b 289 -194 278 -209 284 -200 b 406 -76 330 -156 367 -115 b 446 -23 433 -49 446 -36 b 412 29 446 -10 435 3 b 405 36 409 30 408 33 b 252 196 354 89 304 143 b 225 210 243 204 235 210 b 204 202 219 210 212 209 b 10 24 141 141 75 82 b 0 9 4 19 0 14 b 9 -6 0 4 3 0 l 232 -192 b 266 -210 242 -200 256 -204 z',\n },\n noteheadParenthesis: {\n x_min: -70.190112022022,\n x_max: 329,\n y_min: -196,\n y_max: 201,\n ha: 397,\n o: 'm 344 -279 b 382 -262 361 -288 370 -272 b 405 -233 390 -255 399 -245 b 474 9 455 -158 468 -73 b 416 228 474 78 448 174 b 364 282 403 249 387 271 b 344 289 359 285 350 288 b 331 279 338 289 333 287 b 325 248 328 269 325 258 b 338 225 325 238 328 229 b 412 138 379 207 396 174 b 445 1 433 92 445 45 b 346 -217 445 -81 410 -154 b 336 -252 340 -223 336 -238 b 344 -279 336 -265 338 -276 z m 19 -274 b 35 -282 24 -279 30 -281 b 49 -265 42 -282 46 -275 b 52 -243 50 -256 52 -249 b 36 -210 52 -230 49 -220 b -60 -59 -16 -173 -35 -114 b -73 9 -69 -39 -73 -16 b 33 223 -73 92 -24 189 b 50 265 43 229 50 249 b 33 288 50 278 46 289 b 4 272 23 288 14 275 b -9 261 0 269 -4 265 b -101 23 -58 193 -105 124 b -37 -206 -104 -52 -75 -130 b 19 -274 -23 -232 -6 -255 z',\n },\n noteheadParenthesisRight: {\n x_min: -30,\n x_max: 82,\n y_min: -199.08429092881173,\n y_max: 206,\n ha: 405.0842909288117,\n o: 'm -17 -282 b 24 -264 -6 -297 12 -272 b 60 -219 40 -253 52 -236 b 117 1 96 -150 112 -75 b 118 16 118 6 118 12 b 109 73 118 36 112 55 b 4 279 99 154 68 226 b -23 297 -4 287 -13 297 b -37 289 -27 297 -32 294 b -43 266 -42 285 -43 276 b -32 225 -43 251 -37 229 b 84 -7 48 170 84 82 b 32 -184 84 -69 65 -132 b -10 -222 22 -200 4 -209 b -24 -258 -20 -232 -24 -245 b -17 -282 -24 -266 -22 -276 z',\n },\n noteheadParenthesisLeft: {\n x_min: 0,\n x_max: 106,\n y_min: -197,\n y_max: 197,\n ha: 394,\n o: 'm 134 -284 b 138 -281 135 -284 137 -284 b 145 -268 144 -278 145 -274 l 144 -253 b 107 -180 138 -225 121 -204 b 42 13 71 -120 42 -56 b 49 73 42 32 43 52 b 137 210 62 128 95 171 b 153 255 147 219 153 239 b 145 278 153 265 151 274 b 130 284 140 281 135 284 b 98 259 117 284 108 268 b 0 37 35 203 1 131 b 118 -268 9 -69 53 -173 b 134 -284 121 -274 127 -284 z',\n },\n noteheadMoonBlack: {\n x_min: 0,\n x_max: 328,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 353 -160 b 465 -40 412 -140 451 -102 b 472 30 471 -17 472 6 b 469 124 472 60 469 92 b 406 179 469 170 459 177 l 128 179 b 37 180 98 179 68 179 b 0 141 7 180 0 170 b 3 -20 3 88 3 33 b 69 -134 3 -72 26 -109 b 240 -180 125 -164 181 -180 b 353 -160 278 -180 315 -174 z',\n },\n noteheadTriangleLeftBlack: {\n x_min: 0,\n x_max: 391.1554175279994,\n y_min: -142,\n y_max: 142,\n ha: 284,\n o: 'm 138 -204 b 318 -197 197 -199 258 -197 l 431 -197 b 544 -192 469 -196 507 -193 b 563 -184 552 -190 560 -193 b 553 -167 564 -177 559 -171 l 540 -157 b 232 60 436 -85 334 -12 l 50 190 b 20 204 42 197 32 204 b 10 202 17 204 14 204 b 0 184 1 197 0 192 b 1 164 0 177 1 170 b 6 -150 3 59 6 -45 b 39 -193 7 -176 17 -186 b 138 -204 72 -204 105 -204 z',\n },\n noteheadTriangleRightBlack: {\n x_min: -0.3332953162522517,\n x_max: 398,\n y_min: -139,\n y_max: 140,\n ha: 279,\n o: 'm 543 -200 b 573 -176 566 -200 573 -194 l 573 -168 b 554 141 566 -66 560 37 b 520 197 553 167 546 187 b 495 202 511 200 504 202 b 454 184 481 202 467 196 l 35 -137 b 0 -171 22 -147 -4 -154 b 52 -199 6 -193 33 -193 b 69 -199 58 -200 63 -199 z',\n },\n noteheadTriangleRoundDownBlack: {\n x_min: 0,\n x_max: 334,\n y_min: -133.78604087938328,\n y_max: 136,\n ha: 269.7860408793833,\n o: 'm 252 -192 b 285 -176 269 -196 276 -187 b 468 52 346 -99 406 -23 b 481 79 477 62 481 71 b 465 104 481 88 475 95 b 441 124 456 109 449 117 b 249 196 380 174 314 194 b 13 104 157 196 69 154 b 0 86 6 98 0 92 b 7 69 0 82 3 76 b 202 -164 73 -7 137 -85 b 252 -192 216 -181 235 -186 z',\n },\n augmentationDot: {\n x_min: 0,\n x_max: 96,\n y_min: -57,\n y_max: 57,\n ha: 114,\n o: 'm 13 -82 b 16 -81 14 -82 14 -82 b 105 -73 46 -76 75 -76 b 131 -48 121 -72 131 -60 b 138 26 134 -24 138 0 b 137 48 138 33 138 40 b 108 82 134 71 125 82 b 95 81 104 82 99 82 b 33 71 75 78 53 75 b 4 46 20 68 6 62 b 0 -66 1 9 0 -29 b 13 -82 0 -73 1 -82 z',\n },\n tremolo1: {\n x_min: -158,\n x_max: 156.19381479578487,\n y_min: -88,\n y_max: 88,\n ha: 176,\n o: 'm -206 -127 b -194 -125 -203 -127 -199 -127 b 173 -36 -72 -94 50 -65 b 220 16 202 -29 215 -12 b 225 50 223 30 225 45 b 216 107 226 76 222 91 b 194 127 210 120 204 127 b 183 124 192 127 189 127 l -192 33 b -226 -9 -213 27 -222 14 b -228 -32 -226 -16 -228 -23 b -222 -108 -228 -58 -222 -82 b -206 -127 -222 -120 -217 -127 z',\n },\n flag8thUp: {\n x_min: 0,\n x_max: 261,\n y_min: -819,\n y_max: 0,\n ha: 819,\n o: 'm 265 -1171 b 351 -1035 301 -1130 336 -1087 b 376 -867 369 -979 376 -923 b 367 -755 376 -829 373 -792 b 233 -422 350 -632 311 -520 b 131 -291 199 -379 166 -334 b 65 -125 91 -239 66 -192 b 62 -75 65 -112 62 -91 b 42 0 62 -49 52 -24 l 35 0 b 0 -63 6 -13 0 -36 l 0 -144 b 96 -445 0 -255 29 -356 b 177 -547 124 -478 150 -514 b 308 -831 246 -629 298 -721 b 317 -890 310 -851 317 -871 b 311 -919 317 -900 315 -910 b 256 -1005 297 -950 282 -984 b 228 -1068 233 -1024 228 -1045 b 230 -1106 228 -1080 229 -1093 b 240 -1162 232 -1125 239 -1143 b 251 -1179 242 -1174 246 -1179 b 265 -1171 255 -1179 259 -1176 z',\n },\n flag8thDown: {\n x_min: 0,\n x_max: 261,\n y_min: 0,\n y_max: 819,\n ha: 819,\n o: 'm 265 1171 b 251 1179 259 1176 255 1179 b 240 1162 246 1179 242 1174 b 230 1106 239 1143 232 1125 b 228 1068 229 1093 228 1080 b 256 1005 228 1045 233 1024 b 311 919 282 984 297 950 b 317 890 315 910 317 900 b 308 831 317 871 310 851 b 177 547 298 721 246 629 b 96 445 150 514 124 478 b 0 144 29 356 0 255 l 0 63 b 35 0 0 36 6 13 l 42 0 b 62 75 52 24 62 49 b 59 117 62 91 59 104 b 131 291 60 183 91 239 b 233 422 166 334 199 379 b 367 755 311 520 350 632 b 376 867 373 792 376 829 b 351 1035 376 923 369 979 b 265 1171 336 1087 301 1130 z',\n },\n flag16thUp: {\n x_min: 0,\n x_max: 327.1591498636094,\n y_min: -819.3972596310256,\n y_max: 0,\n ha: 819.3972596310256,\n o: 'm 415 -1179 b 435 -1168 423 -1182 429 -1174 b 451 -1138 442 -1159 446 -1149 b 465 -1020 464 -1102 467 -1064 b 461 -962 464 -1004 464 -984 b 471 -821 467 -916 472 -870 b 465 -721 472 -791 467 -756 b 415 -520 459 -651 441 -585 b 200 -245 370 -408 284 -327 b 96 -114 160 -206 118 -168 b 75 -24 84 -85 85 -53 b 59 0 72 -16 72 0 b 53 -1 58 0 56 -1 b 27 -32 40 -6 27 -10 b 29 -68 27 -43 29 -55 b 10 -79 20 -69 13 -72 b 1 -109 6 -89 1 -99 b 0 -170 0 -130 0 -148 b 35 -410 0 -252 12 -333 b 258 -793 76 -557 156 -681 b 409 -1158 350 -896 410 -1014 b 415 -1179 409 -1165 405 -1175 z m 413 -816 b 331 -681 392 -769 364 -723 b 145 -420 266 -596 189 -521 b 86 -281 125 -374 102 -330 b 156 -370 105 -312 128 -343 b 318 -539 210 -425 269 -478 b 413 -816 383 -621 420 -713 z',\n },\n flag16thDown: {\n x_min: 0,\n x_max: 327.1591498636094,\n y_min: 0,\n y_max: 819,\n ha: 819,\n o: 'm 59 0 b 75 24 72 0 72 16 b 96 114 85 53 84 85 b 200 245 118 168 160 206 b 415 520 284 327 370 408 b 465 721 441 585 459 651 b 471 821 467 756 472 791 b 461 962 472 870 467 916 b 465 1020 464 984 464 1004 b 451 1138 467 1064 464 1102 b 435 1168 446 1149 442 1159 b 418 1179 431 1172 425 1179 l 415 1179 b 408 1169 409 1176 408 1174 b 409 1158 408 1165 409 1161 b 258 793 410 1014 350 896 b 35 410 156 681 76 557 b 0 170 12 333 0 252 l 0 88 b 29 7 0 71 6 23 b 59 0 33 4 58 0 z m 86 281 b 145 420 102 330 125 374 b 331 681 189 521 266 596 b 413 816 364 723 392 769 b 415 791 413 808 415 799 b 318 539 415 698 377 613 b 156 370 269 478 210 425 b 86 281 128 343 105 312 z',\n },\n flag32ndUp: {\n x_min: -0.19862981551275186,\n x_max: 268.0942440943661,\n y_min: -849.4710740978672,\n y_max: 149.0769891455102,\n ha: 998.5480632433774,\n o: 'm 323 -1223 b 351 -1198 337 -1227 344 -1210 b 359 -1184 354 -1194 356 -1188 b 386 -999 377 -1122 387 -1060 b 341 -783 386 -927 372 -855 b 330 -736 334 -769 330 -753 b 333 -708 330 -727 330 -717 b 344 -621 340 -678 344 -649 b 341 -579 344 -608 343 -593 b 328 -500 338 -553 328 -526 b 331 -475 328 -491 328 -484 b 347 -370 343 -438 348 -402 b 151 27 348 -212 288 -56 b 53 176 98 59 50 102 b 45 197 53 183 48 192 b 33 215 40 203 40 216 l 30 215 b 6 194 22 212 9 209 b 0 120 3 170 -1 145 b 0 -43 4 65 0 13 b 0 -98 0 -60 1 -79 b 4 -276 0 -157 6 -216 b 7 -456 4 -337 7 -397 b 66 -638 7 -523 22 -585 b 158 -724 94 -671 127 -697 b 318 -1011 246 -801 295 -899 b 321 -1044 321 -1021 321 -1032 b 312 -1152 321 -1080 312 -1116 b 317 -1192 312 -1165 314 -1179 b 323 -1223 320 -1202 311 -1220 z m 285 -376 b 121 -180 249 -289 173 -245 b 91 -105 104 -158 92 -135 b 288 -354 181 -144 288 -269 b 285 -376 288 -363 287 -370 z m 275 -657 b 111 -492 226 -589 163 -547 b 65 -376 78 -456 66 -418 b 71 -323 65 -360 68 -341 b 275 -657 164 -418 265 -504 z',\n },\n flag32ndDown: {\n x_min: -2.800802874905624,\n x_max: 268.09424409436605,\n y_min: -169.07698914551014,\n y_max: 829.4710740978672,\n ha: 998.5480632433773,\n o: 'm 323 1194 b 317 1164 311 1191 320 1174 b 312 1123 314 1151 312 1136 b 321 1015 312 1087 321 1051 b 318 982 321 1004 321 992 b 158 696 295 870 246 772 b 66 609 127 668 94 642 b 7 428 22 556 7 494 b 4 248 7 369 4 308 b -1 78 6 187 -10 137 b 0 14 0 59 0 32 l 0 -148 b 6 -223 0 -174 3 -199 b 30 -243 9 -238 22 -240 l 33 -243 b 45 -226 40 -245 40 -232 b 53 -204 48 -220 53 -212 b 151 -56 50 -131 98 -88 b 347 341 288 27 348 183 b 331 446 348 373 343 409 b 328 471 328 455 328 462 b 341 550 328 497 338 524 b 344 592 343 564 344 579 b 333 680 344 621 340 649 b 330 707 330 688 330 698 b 341 755 330 724 334 740 b 386 971 372 827 386 899 b 359 1155 387 1031 377 1093 b 351 1169 356 1159 354 1165 b 323 1194 344 1181 337 1198 z m 275 628 b 71 294 265 475 164 389 b 65 347 68 312 65 331 b 111 464 66 389 78 428 b 275 628 163 518 226 560 z m 285 347 b 288 325 287 341 288 334 b 91 76 288 240 181 115 b 121 151 92 107 104 130 b 285 347 173 216 249 261 z',\n },\n flag64thUp: {\n x_min: -4,\n x_max: 282,\n y_min: -823.5430338167067,\n y_max: 347,\n ha: 1170.5430338167066,\n o: 'm 350 -1185 b 380 -1162 364 -1189 374 -1175 b 406 -1022 399 -1119 406 -1071 b 359 -798 406 -945 384 -871 b 348 -756 353 -785 348 -772 b 350 -744 348 -753 350 -749 b 363 -621 356 -704 363 -664 b 360 -580 363 -608 363 -593 b 359 -560 359 -573 359 -567 b 373 -490 359 -536 366 -513 b 393 -346 386 -444 393 -395 b 387 -269 393 -320 390 -294 b 348 -127 382 -219 348 -173 b 351 -104 348 -120 348 -111 b 353 -65 351 -91 353 -78 b 341 37 353 -26 348 6 b 226 215 323 108 278 164 b 86 336 181 258 127 288 b 62 395 72 353 62 370 b 42 481 62 423 55 454 b 27 500 37 488 36 500 b 24 498 26 500 26 500 b -1 480 14 497 1 492 b -6 444 -4 467 -6 455 l -6 435 b -1 341 -1 403 -1 372 l -1 266 b 6 156 -1 230 0 193 b 13 35 12 117 13 75 l 13 -35 b 14 -85 13 -52 14 -68 b 29 -276 19 -150 33 -213 b 20 -448 24 -334 20 -392 b 24 -534 20 -477 22 -505 b 114 -708 30 -605 59 -664 b 197 -780 143 -732 171 -755 b 344 -1153 301 -884 341 -1011 b 343 -1172 344 -1159 343 -1166 b 350 -1185 343 -1176 344 -1182 z m 287 -88 b 62 193 186 -17 79 48 b 229 52 121 144 174 98 b 289 -33 256 29 274 -3 b 295 -56 294 -42 295 -49 b 287 -88 295 -66 292 -76 z m 298 -410 b 118 -235 238 -351 176 -295 b 76 -88 82 -197 78 -147 b 268 -252 137 -153 203 -202 b 330 -360 304 -279 330 -315 b 323 -402 330 -373 327 -387 b 311 -418 318 -413 315 -418 b 298 -410 307 -418 302 -415 z m 300 -691 b 117 -508 243 -616 168 -575 b 82 -408 94 -480 82 -448 b 84 -379 82 -397 82 -387 b 259 -553 135 -451 206 -492 b 301 -667 287 -583 301 -619 b 300 -691 301 -674 301 -683 z',\n },\n flag64thDown: {\n x_min: -5,\n x_max: 281,\n y_min: -375,\n y_max: 795.5430338167066,\n ha: 1170.5430338167066,\n o: 'm 348 1145 b 341 1132 343 1142 341 1136 b 343 1113 341 1126 343 1119 b 196 740 340 971 300 844 b 112 668 170 714 141 691 b 23 494 58 624 29 564 b 19 408 20 465 19 436 b 27 236 19 351 23 294 b 13 45 32 173 17 109 b 12 -6 13 27 12 12 l 12 -75 b 4 -196 12 -115 10 -157 b -3 -307 -1 -233 -3 -271 l -3 -382 b -7 -475 -3 -412 -3 -444 l -7 -484 b -3 -520 -7 -495 -6 -507 b 23 -539 0 -533 13 -537 b 26 -540 24 -540 24 -540 b 40 -521 35 -540 36 -528 b 60 -435 53 -494 60 -464 b 85 -376 60 -410 71 -393 b 225 -255 125 -328 180 -298 b 340 -78 276 -204 321 -148 b 351 24 347 -46 351 -14 b 350 63 351 37 350 50 b 347 86 347 71 347 79 b 386 229 347 132 380 179 b 392 305 389 253 392 279 b 372 449 392 354 384 403 b 357 520 364 472 357 495 b 359 540 357 527 357 533 b 361 580 361 553 361 567 b 348 704 361 624 354 664 b 347 716 348 708 347 713 b 357 757 347 732 351 744 b 405 982 383 831 405 904 b 379 1122 405 1031 397 1079 b 348 1145 373 1135 363 1149 z m 298 651 b 300 626 300 642 300 634 b 258 513 300 579 285 543 b 82 338 204 452 134 410 b 81 367 81 347 81 357 b 115 468 81 408 92 439 b 298 651 167 534 242 576 z m 297 370 b 310 377 301 374 305 377 b 321 361 314 377 317 373 b 328 320 325 347 328 333 b 266 212 328 275 302 239 b 75 48 202 161 135 112 b 117 194 76 107 81 157 b 297 370 174 255 236 311 z m 285 48 b 294 16 291 36 294 26 b 288 -7 294 9 292 1 b 228 -92 272 -37 255 -69 b 60 -233 173 -138 120 -184 b 285 48 78 -88 184 -23 z',\n },\n flag128thUp: {\n x_min: 0,\n x_max: 252,\n y_min: -804,\n y_max: 530,\n ha: 1334,\n o: 'm 298 -1158 b 328 -1126 312 -1158 320 -1139 b 330 -1116 330 -1123 330 -1119 b 347 -996 343 -1076 347 -1037 b 328 -837 347 -943 338 -890 b 320 -778 324 -816 320 -798 b 330 -733 320 -763 323 -749 b 340 -665 338 -714 337 -688 b 341 -645 340 -660 341 -652 b 333 -534 341 -609 333 -572 b 343 -471 333 -513 334 -492 b 361 -366 356 -436 361 -402 b 331 -202 361 -311 348 -256 b 328 -187 330 -197 328 -193 b 331 -179 328 -184 328 -181 b 363 -55 353 -137 363 -96 b 337 79 363 -12 351 33 b 327 114 333 92 327 104 b 344 144 327 124 331 132 b 359 174 353 150 357 163 b 361 228 360 193 361 210 b 243 517 361 337 325 435 b 147 596 213 546 179 569 b 75 708 111 626 75 655 b 62 744 75 723 68 733 b 50 763 58 752 58 763 b 46 762 49 763 48 762 b 17 742 36 757 22 757 b 0 697 14 726 0 711 b 1 595 0 662 3 631 b 0 469 0 552 0 511 b 1 429 0 456 0 442 b 22 289 6 382 22 337 b 24 128 22 238 24 184 b 22 66 24 108 23 86 b 19 -19 20 37 19 10 b 20 -132 19 -56 20 -95 b 13 -276 20 -180 19 -229 b 9 -359 10 -304 9 -330 b 12 -487 9 -402 12 -445 b 56 -582 12 -526 29 -554 b 197 -742 107 -632 160 -681 b 288 -1100 265 -851 276 -976 b 288 -1122 288 -1107 287 -1115 b 287 -1145 289 -1129 287 -1138 b 298 -1158 287 -1153 288 -1158 z m 304 150 b 75 475 229 256 112 334 b 304 150 233 357 305 287 z m 271 -73 b 127 72 233 -14 179 26 b 81 167 96 98 81 127 b 84 194 81 176 82 184 b 271 -73 148 102 242 39 z m 279 -396 b 132 -223 233 -330 180 -279 b 81 -112 104 -192 81 -156 b 82 -91 81 -105 81 -98 b 279 -396 167 -125 269 -281 z m 249 -609 b 69 -357 197 -520 88 -471 b 249 -609 131 -441 229 -498 z',\n },\n flag128thDown: {\n x_min: -0.8888888888888888,\n x_max: 252,\n y_min: -580,\n y_max: 754,\n ha: 1334,\n o: 'm 298 1086 b 287 1073 288 1086 287 1081 b 288 1050 287 1066 289 1057 b 288 1028 287 1043 288 1035 b 197 670 276 904 265 779 b 56 510 160 609 107 560 b 12 415 29 482 12 454 b 9 287 12 373 9 330 b 13 204 9 258 10 232 b 20 60 19 157 20 108 b 19 -53 20 23 19 -16 b 22 -138 19 -82 20 -109 b 24 -200 23 -158 24 -180 b 22 -361 24 -256 22 -310 b 1 -501 22 -409 6 -454 b 0 -541 0 -514 0 -528 b 0 -667 0 -583 -3 -624 b 0 -809 0 -675 -3 -791 b 46 -834 4 -825 36 -829 b 50 -835 48 -834 49 -835 b 62 -816 58 -835 58 -824 b 75 -780 68 -805 75 -795 b 147 -668 75 -727 111 -698 b 243 -589 179 -641 213 -618 b 361 -300 325 -507 361 -409 b 359 -246 361 -282 360 -265 b 344 -216 357 -235 353 -222 b 327 -186 331 -204 327 -196 b 337 -151 327 -176 333 -164 b 363 -17 351 -105 363 -60 b 331 107 363 24 353 65 b 328 115 328 109 328 112 b 331 130 328 121 330 125 b 361 294 348 184 361 239 b 343 399 361 330 356 364 b 333 462 334 420 333 441 b 341 573 333 500 341 537 b 340 593 341 580 340 588 b 330 661 337 616 338 642 b 320 706 323 677 320 691 b 328 765 320 726 324 744 b 347 924 338 818 347 871 b 330 1044 347 965 343 1004 b 328 1054 330 1047 330 1051 b 298 1086 320 1067 312 1086 z m 249 537 b 69 285 229 426 131 369 b 249 537 88 399 197 448 z m 279 324 b 82 19 269 209 167 53 b 81 40 81 26 81 33 b 132 151 81 84 104 120 b 279 324 180 207 233 258 z m 271 1 b 84 -266 242 -111 148 -174 b 81 -239 82 -256 81 -248 b 127 -144 81 -199 96 -170 b 271 1 179 -98 233 -58 z m 304 -222 b 75 -547 305 -359 233 -429 b 304 -222 112 -406 229 -328 z',\n },\n accidentalFlat: {\n x_min: 1,\n x_max: 209,\n y_min: -208,\n y_max: 472,\n ha: 680,\n o: 'm 29 -300 b 46 -289 33 -300 39 -297 b 107 -243 65 -274 86 -258 b 301 127 233 -153 301 -30 b 298 186 301 147 301 166 b 190 297 291 256 251 297 b 147 289 177 297 163 294 b 86 265 127 284 107 274 l 85 264 l 85 301 b 91 465 85 356 88 410 b 94 559 91 497 94 527 b 84 651 94 589 91 621 b 66 680 81 661 81 680 l 65 680 b 37 645 49 678 37 665 b 33 523 36 605 32 563 l 33 478 b 26 223 33 393 29 308 b 1 -141 22 101 1 -19 b 17 -287 1 -189 4 -239 b 29 -300 20 -295 23 -300 z m 68 -105 b 76 12 71 -68 72 -29 b 81 107 79 43 81 75 l 86 109 b 171 135 114 121 141 135 b 204 128 181 135 193 132 b 238 92 228 120 239 108 b 230 63 238 84 236 75 b 68 -105 193 -10 132 -59 z',\n },\n accidentalNatural: {\n x_min: 0,\n x_max: 213.5,\n y_min: -456,\n y_max: 462,\n ha: 918,\n o: 'm 255 -657 b 281 -624 271 -657 275 -636 b 285 -599 282 -615 285 -608 b 292 -300 288 -500 289 -400 b 289 -161 292 -253 289 -207 b 300 128 292 -65 297 32 b 304 168 300 128 302 150 l 304 173 l 305 190 l 305 199 l 307 225 b 304 259 307 229 310 246 b 272 298 297 274 302 305 b 63 266 204 279 134 272 b 72 514 68 348 72 432 b 71 595 72 541 72 567 b 56 665 71 619 66 642 b 17 579 9 651 17 608 b 3 144 19 433 7 289 b 0 -7 1 94 0 43 b 3 -134 0 -50 1 -92 b 7 -219 3 -163 7 -192 b 35 -251 7 -243 17 -251 b 49 -249 39 -251 43 -251 l 223 -223 l 230 -222 l 230 -359 b 223 -516 230 -410 223 -464 b 236 -619 223 -550 226 -585 b 255 -657 240 -634 236 -657 z m 58 -63 b 55 81 56 -14 53 33 l 56 99 b 85 99 65 99 75 98 b 232 108 134 104 183 107 l 240 109 l 236 66 b 232 -48 235 29 232 -10 b 58 -81 174 -63 115 -73 z',\n },\n accidentalSharp: {\n x_min: -22,\n x_max: 390,\n y_min: -384,\n y_max: 383,\n ha: 767,\n o: 'm 202 -553 b 219 -526 213 -552 216 -536 b 226 -471 225 -507 226 -488 b 225 -425 226 -455 225 -441 b 226 -392 225 -415 225 -402 b 233 -305 229 -363 232 -334 l 297 -292 b 331 -469 300 -353 311 -412 b 347 -485 333 -477 338 -485 b 363 -469 356 -487 359 -477 b 374 -418 373 -454 374 -435 b 376 -382 376 -405 376 -393 b 372 -276 376 -347 373 -311 l 455 -259 b 550 -156 534 -243 544 -232 b 550 -109 550 -137 552 -124 b 526 -78 549 -91 541 -78 l 523 -78 b 507 -79 517 -78 513 -78 b 403 -101 474 -88 438 -95 l 379 -105 b 382 -42 380 -85 380 -63 b 384 96 383 4 384 50 b 503 131 425 107 464 118 b 549 173 524 138 543 150 b 562 249 554 199 562 223 b 554 294 562 264 560 279 b 536 315 549 308 544 315 l 533 315 b 517 312 528 315 523 315 b 382 266 472 294 428 279 l 377 344 b 359 531 374 406 372 469 b 348 552 356 539 357 552 l 347 552 l 343 552 b 315 528 331 549 317 544 l 315 501 b 320 249 315 416 318 333 l 243 232 b 239 361 243 275 242 318 b 226 425 238 383 238 403 b 199 359 194 409 199 382 b 193 223 196 312 194 268 b 72 202 153 215 112 209 b 4 118 13 192 4 183 b 10 66 0 102 12 84 b 33 29 7 39 14 30 b 48 32 37 29 42 30 b 187 55 95 39 141 46 l 183 -75 b 176 -145 181 -99 179 -122 b 16 -179 122 -156 69 -166 b -32 -232 -14 -186 -32 -197 b -17 -331 -32 -266 -19 -298 b -1 -356 -17 -347 -13 -354 b 12 -353 1 -356 6 -354 b 167 -320 63 -341 115 -331 b 166 -377 166 -338 166 -357 b 189 -526 166 -428 171 -477 b 202 -553 192 -536 189 -553 z m 240 -132 b 243 -37 242 -101 242 -69 b 245 65 245 -3 245 30 b 315 79 269 69 292 73 b 301 -120 308 13 305 -53 z',\n },\n accidentalDoubleSharp: {\n x_min: 0,\n x_max: 287,\n y_min: -159,\n y_max: 159,\n ha: 318,\n o: 'm 84 -229 b 107 -216 91 -229 98 -225 b 200 -125 138 -186 167 -154 b 232 -95 212 -115 222 -105 b 347 -189 271 -125 310 -157 b 370 -200 356 -196 363 -200 b 396 -179 380 -200 389 -192 b 412 -102 410 -154 406 -125 b 377 -27 410 -69 400 -46 l 325 14 b 402 91 350 42 374 68 b 413 127 410 96 413 107 b 382 200 409 148 397 176 b 350 229 370 220 360 229 b 314 210 340 229 328 223 b 274 174 300 199 285 187 b 212 104 252 151 232 128 b 92 187 173 132 132 161 b 78 193 86 192 82 193 b 68 190 75 193 72 193 b 48 179 62 186 53 187 b 40 137 43 168 40 154 b 81 16 40 92 56 32 b 107 -3 89 10 98 4 b 14 -94 76 -32 45 -62 b 0 -124 6 -102 0 -114 b 12 -154 0 -134 3 -144 b 62 -215 26 -176 48 -193 b 84 -229 69 -225 76 -229 z',\n },\n accidentalDoubleFlat: {\n x_min: 0,\n x_max: 359,\n y_min: -220,\n y_max: 446,\n ha: 666,\n o: 'm 43 -317 b 72 -301 55 -317 63 -310 b 160 -186 108 -268 134 -226 b 236 -60 186 -145 212 -102 b 233 -131 235 -85 233 -108 b 239 -220 233 -161 235 -190 b 259 -246 240 -233 239 -240 b 301 -228 284 -252 291 -238 b 465 -7 369 -163 416 -85 b 517 173 500 48 517 108 b 451 307 517 229 505 284 b 409 315 436 312 422 315 b 331 287 382 315 356 305 b 311 274 324 282 320 274 l 310 274 l 310 566 b 305 621 310 585 312 603 b 294 642 301 628 305 642 l 292 642 b 264 622 282 641 266 636 b 253 575 259 606 256 590 b 246 418 248 523 246 471 b 248 243 246 360 248 302 l 248 187 b 164 238 220 225 193 238 b 85 213 140 238 112 226 b 84 229 85 220 84 225 b 86 315 85 258 86 287 b 81 528 86 386 82 458 b 71 582 81 547 78 566 b 56 603 66 590 68 603 l 53 603 b 23 580 40 600 26 598 b 19 537 20 566 19 552 b 20 514 19 530 19 521 b 26 390 24 472 26 432 b 14 66 26 282 16 174 b 0 -168 13 -12 0 -91 b 12 -279 0 -206 3 -242 b 30 -314 16 -294 14 -308 b 43 -317 35 -317 39 -317 z m 301 -72 b 302 7 302 -45 302 -19 l 302 86 b 351 158 304 121 321 145 b 383 166 361 163 373 166 b 435 143 402 166 419 157 b 445 127 441 138 445 132 b 441 114 445 122 444 118 b 301 -72 397 49 354 -14 z m 75 -147 b 73 30 75 -86 75 -29 b 118 82 73 62 92 76 b 132 84 124 84 128 84 b 190 52 156 84 174 69 b 193 40 192 49 193 45 b 192 33 193 37 193 35 b 75 -147 157 -30 125 -95 z',\n },\n accidentalParensLeft: {\n x_min: 0,\n x_max: 130.18934911242604,\n y_min: -270,\n y_max: 267.6082500723851,\n ha: 537.6082500723851,\n o: 'm 107 -389 b 127 -374 114 -389 120 -384 b 141 -347 132 -367 137 -357 b 151 -294 148 -330 151 -311 b 122 -207 151 -265 141 -236 b 63 -65 94 -164 72 -117 b 59 -10 60 -46 59 -27 b 145 223 59 78 94 153 b 187 354 176 262 189 305 b 177 384 187 364 190 380 b 143 373 166 387 153 383 b 124 354 137 367 130 361 b 0 -35 33 240 0 108 l 0 -92 b 85 -372 4 -193 27 -287 b 107 -389 92 -383 99 -389 z',\n },\n accidentalParensRight: {\n x_min: -0.4444444444444445,\n x_max: 139,\n y_min: -275,\n y_max: 277,\n ha: 552,\n o: 'm 58 -396 b 96 -354 75 -396 85 -370 b 200 13 168 -238 200 -111 b 153 268 200 109 184 190 b 49 392 131 320 101 364 b 26 399 40 397 33 399 b 0 366 10 399 0 387 b 0 318 -1 350 0 334 l 0 291 b 27 238 -3 266 7 253 b 143 9 105 180 143 98 b 141 -20 143 -1 143 -10 b 63 -225 135 -92 108 -164 b 36 -307 45 -251 36 -278 b 40 -344 36 -320 37 -331 b 42 -356 42 -347 42 -351 b 58 -396 42 -374 37 -396 z',\n },\n accidentalQuarterToneFlatStein: {\n x_min: 0,\n x_max: 208,\n y_min: -240,\n y_max: 440,\n ha: 680,\n o: 'm 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z',\n },\n accidentalThreeQuarterTonesFlatZimmermann: {\n x_min: 0,\n x_max: 422,\n y_min: -240,\n y_max: 440,\n ha: 680,\n o: 'm 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 336 -346 b 353 -336 340 -346 346 -343 b 413 -289 372 -320 393 -304 b 608 81 540 -199 608 -76 b 605 140 608 101 608 120 b 497 251 598 210 557 251 b 454 243 484 251 469 248 b 393 219 433 238 413 228 l 392 217 l 392 255 b 397 419 392 310 395 364 b 400 513 397 451 400 481 b 390 605 400 543 397 575 b 373 634 387 615 387 634 l 372 634 b 344 599 356 632 344 619 b 340 477 343 559 338 517 l 340 432 b 333 177 340 347 336 262 b 308 -187 328 55 308 -65 b 324 -333 308 -235 311 -285 b 336 -346 327 -341 330 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z m 374 -151 b 383 -35 377 -114 379 -75 b 387 60 386 -3 387 29 l 393 63 b 478 89 420 75 448 89 b 511 82 488 89 500 86 b 544 46 534 73 546 62 b 537 17 544 37 543 29 b 374 -151 500 -56 439 -105 z',\n },\n accidentalQuarterToneSharpStein: {\n x_min: 0,\n x_max: 300,\n y_min: -338,\n y_max: 351,\n ha: 689,\n o: 'm 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 l 35 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z',\n },\n accidentalThreeQuarterTonesSharpStein: {\n x_min: -23,\n x_max: 388,\n y_min: -373,\n y_max: 445,\n ha: 818,\n o: 'm 114 -537 b 138 -475 137 -518 138 -495 b 147 -292 138 -413 144 -353 b 212 -278 168 -287 190 -282 b 243 -444 215 -333 225 -389 b 261 -467 248 -454 251 -465 b 281 -446 272 -469 276 -455 b 292 -347 292 -416 288 -384 b 288 -262 289 -320 288 -291 l 374 -245 b 376 -311 374 -266 374 -288 b 390 -456 379 -357 379 -405 b 416 -396 412 -436 415 -418 b 423 -287 420 -360 423 -323 b 422 -235 423 -269 423 -252 b 451 -229 432 -233 441 -232 b 547 -98 524 -215 547 -199 l 547 -89 b 521 -49 546 -59 540 -49 b 497 -52 516 -49 507 -49 b 418 -68 469 -56 444 -63 b 423 52 419 -29 422 12 b 426 140 425 81 425 109 b 495 160 449 145 472 153 b 552 219 526 170 546 189 b 559 279 557 240 553 262 b 530 341 559 324 552 341 b 490 331 520 341 507 338 b 432 311 471 324 452 318 b 449 552 436 392 442 471 b 452 588 451 563 452 575 b 446 622 452 599 451 611 b 436 641 444 629 448 641 b 418 628 428 641 420 636 b 409 602 413 621 410 611 b 386 297 396 501 390 399 b 297 274 356 288 327 281 b 291 403 295 317 294 360 b 274 550 288 452 284 501 b 259 569 271 564 265 569 b 240 559 253 569 248 563 b 230 537 232 554 230 546 l 230 488 b 233 369 230 448 232 409 b 236 261 236 333 238 297 b 156 245 210 255 183 251 b 154 396 154 295 154 346 b 150 416 154 403 153 410 b 140 438 145 423 150 438 l 138 438 b 118 413 128 436 118 428 b 112 354 118 393 114 374 b 109 238 109 315 109 276 b 49 226 89 233 69 230 b 3 163 16 222 3 202 b 7 91 3 138 9 114 b 29 62 7 69 13 62 b 39 63 32 62 35 63 b 104 73 60 66 82 71 b 101 -10 104 46 102 17 l 92 -132 l 10 -150 b -33 -204 -19 -157 -33 -170 b -19 -310 -32 -240 -19 -274 b -6 -324 -19 -321 -13 -324 b 6 -323 -1 -324 1 -324 b 82 -307 32 -317 58 -311 b 81 -376 82 -330 81 -353 b 114 -537 81 -431 94 -484 z m 294 -92 b 297 -37 295 -73 295 -56 b 300 49 300 -9 300 20 l 300 108 b 379 127 325 114 353 120 b 374 -76 376 59 374 -9 b 294 -92 347 -82 320 -86 z m 154 -120 b 157 20 154 -73 156 -26 b 158 82 158 40 158 62 b 230 95 183 86 206 89 b 225 0 229 63 226 32 b 217 -107 223 -35 220 -71 z',\n },\n accidentalBuyukMucennebFlat: {\n x_min: 1.8692317181955784,\n x_max: 287,\n y_min: -248,\n y_max: 432.4720949426819,\n ha: 680.4720949426819,\n o: 'm 410 128 b 302 239 403 199 363 239 b 259 232 289 239 275 236 b 199 207 239 226 219 216 l 197 206 l 197 243 l 197 251 b 347 317 248 272 298 295 b 376 347 360 324 372 334 b 389 435 387 376 393 405 b 348 454 384 462 377 465 b 202 387 300 432 251 409 b 203 408 203 395 203 402 l 203 431 b 347 490 252 451 300 469 b 376 517 360 495 372 505 b 389 599 387 546 393 572 b 348 616 384 625 377 628 l 203 556 b 196 593 202 569 199 582 b 179 622 193 603 193 622 l 177 622 b 150 588 161 621 150 608 b 147 533 150 570 148 552 b 29 488 108 517 69 503 b 3 455 12 482 3 472 b 12 353 1 422 9 389 b 145 408 56 372 101 389 b 145 363 145 392 145 377 l 29 315 b 3 281 12 310 3 298 b 12 170 1 245 9 209 l 141 226 b 138 166 140 206 138 186 b 114 -199 134 43 115 -76 b 130 -344 114 -246 117 -297 b 141 -357 132 -353 135 -357 b 158 -347 145 -357 151 -354 b 219 -301 177 -331 199 -315 b 413 69 346 -210 413 -88 b 410 128 413 89 413 108 z m 350 35 b 343 6 350 26 348 17 b 180 -163 308 -69 245 -117 b 189 -46 183 -125 184 -86 b 193 49 192 -14 193 17 l 199 52 b 284 78 226 63 253 78 b 317 71 294 78 305 75 b 350 35 340 62 351 50 z',\n },\n accidentalBakiyeFlat: {\n x_min: 1.8692317181955784,\n x_max: 287,\n y_min: -236,\n y_max: 444,\n ha: 680,\n o: 'm 141 -340 b 158 -330 145 -340 151 -337 b 219 -284 177 -314 199 -298 b 413 86 346 -193 413 -71 b 410 145 413 107 413 125 b 302 256 403 216 363 256 b 259 249 289 256 275 253 b 199 225 239 243 219 233 l 197 223 l 197 261 b 199 334 197 285 199 310 b 347 406 249 357 298 382 b 376 439 360 413 372 425 b 390 516 384 465 390 490 b 389 537 390 523 390 530 b 372 564 384 556 382 564 b 348 557 367 564 359 562 b 204 487 300 537 253 510 b 206 518 206 497 206 507 b 196 611 206 549 203 580 b 179 639 193 621 193 639 l 177 639 b 150 605 161 638 150 625 b 145 482 148 564 144 523 l 145 458 b 29 405 107 439 68 420 b 3 366 12 397 3 386 b 12 243 1 325 9 287 b 143 307 56 265 99 285 l 138 183 b 114 -181 134 60 114 -59 b 130 -327 114 -229 117 -279 b 141 -340 132 -336 135 -340 z m 180 -145 b 189 -29 183 -108 184 -69 b 193 66 192 3 193 35 l 199 69 b 284 95 226 81 253 95 b 317 88 294 95 305 92 b 350 52 340 79 351 68 b 343 23 350 43 348 35 b 180 -145 305 -50 245 -99 z',\n },\n accidentalKomaSharp: {\n x_min: 0,\n x_max: 300,\n y_min: -338,\n y_max: 351,\n ha: 689,\n o: 'm 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 l 35 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z',\n },\n accidentalKucukMucennebSharp: {\n x_min: -0.15206251809627475,\n x_max: 359,\n y_min: -420,\n y_max: 343,\n ha: 763,\n o: 'm 236 -605 b 262 -543 256 -583 261 -564 b 269 -423 268 -503 269 -464 b 266 -340 269 -396 268 -367 l 361 -318 b 405 -276 384 -312 399 -298 b 413 -189 412 -248 416 -219 b 395 -164 412 -171 409 -164 b 382 -166 392 -164 387 -164 b 264 -193 343 -176 304 -184 b 269 -102 265 -163 268 -132 b 454 -62 331 -89 392 -78 b 501 -23 477 -58 494 -45 b 517 62 511 6 517 33 b 487 112 517 95 513 112 b 471 111 482 112 477 112 b 274 66 406 95 340 81 b 276 138 275 91 276 114 b 350 154 301 144 325 148 b 402 203 377 160 396 176 b 412 284 408 230 412 258 b 392 311 412 302 406 311 b 372 308 386 311 379 310 b 287 291 343 301 314 297 l 295 405 b 298 441 297 416 298 428 b 292 475 298 452 297 464 b 282 494 289 482 294 494 b 264 481 274 494 266 490 b 255 455 259 474 256 464 b 239 282 248 397 243 340 b 148 268 209 278 179 274 b 62 164 62 252 62 253 l 62 132 b 79 108 60 117 65 108 l 86 108 l 230 130 b 229 92 230 118 229 105 b 228 56 228 79 228 68 b 66 20 173 43 120 32 b 0 -59 6 7 3 1 l 0 -138 b 14 -160 -1 -156 4 -160 b 27 -158 19 -160 23 -160 b 222 -112 92 -141 157 -127 b 220 -203 220 -143 220 -173 b 147 -217 196 -207 171 -213 b 89 -288 92 -228 89 -229 b 95 -347 85 -305 96 -325 b 112 -374 92 -366 98 -374 b 125 -373 117 -374 121 -374 l 220 -351 b 222 -458 220 -386 220 -422 b 236 -605 223 -504 225 -552 z',\n },\n accidentalKoron: {\n x_min: 0,\n x_max: 303,\n y_min: -462.4598053473055,\n y_max: 180,\n ha: 642.4598053473055,\n o: 'm 59 -665 b 72 -649 69 -662 72 -657 b 69 -626 72 -642 69 -634 b 69 -622 69 -625 69 -624 l 69 -600 b 55 -156 60 -456 68 -311 b 86 -170 66 -166 76 -170 b 112 -163 95 -170 104 -166 b 390 -35 204 -120 298 -78 b 436 -1 409 -27 436 -27 b 396 46 436 22 413 33 l 382 55 b 46 243 271 121 157 179 b 12 259 29 253 17 259 b 0 219 1 259 0 248 b 3 -372 0 22 3 -176 b 6 -616 3 -454 6 -536 b 59 -665 6 -638 40 -671 z m 55 199 b 363 24 156 141 258 84 b 55 -118 259 -24 160 -69 z',\n },\n accidentalSori: {\n x_min: 0,\n x_max: 434,\n y_min: -295,\n y_max: 325,\n ha: 620,\n o: 'm 194 -425 b 196 -409 194 -418 196 -413 b 194 -194 196 -337 196 -266 b 364 -127 251 -171 308 -150 b 361 -321 363 -192 364 -256 b 410 -387 360 -357 373 -377 b 413 -373 412 -382 413 -377 b 418 -114 418 -287 418 -200 l 418 -105 b 595 -35 477 -82 536 -59 b 625 0 612 -27 625 -22 b 593 48 624 23 618 39 l 419 117 b 423 370 419 202 423 285 b 426 403 423 382 426 393 b 418 436 426 415 425 426 b 384 468 409 449 399 468 b 369 448 370 468 369 459 b 369 436 369 444 369 441 l 369 428 l 369 423 b 367 138 369 328 367 233 l 353 143 l 192 207 l 192 367 b 173 406 192 383 184 396 b 151 422 167 413 160 422 b 144 420 148 422 147 422 b 137 403 138 416 137 410 l 137 392 l 137 229 b 33 271 102 243 68 256 b 13 276 26 274 19 276 b 0 262 6 276 0 272 b 35 199 1 239 0 212 l 138 160 b 140 -148 138 58 138 -45 b 56 -181 111 -158 84 -170 b 24 -215 35 -189 24 -199 b 29 -235 24 -220 26 -228 b 49 -253 35 -249 42 -253 b 78 -240 59 -253 69 -243 b 140 -216 98 -233 120 -225 l 140 -356 b 194 -425 140 -406 141 -406 z m 194 -125 b 193 138 194 -37 193 50 b 315 89 233 122 275 107 b 366 71 333 84 350 76 b 364 -58 366 27 366 -16 b 194 -125 308 -81 251 -104 z m 419 49 l 526 7 l 485 -10 l 419 -36 z',\n },\n articAccentAbove: {\n x_min: 0,\n x_max: 425,\n y_min: 0,\n y_max: 326,\n ha: 326,\n o: 'm 27 1 b 78 12 46 0 62 6 b 347 112 168 45 253 91 b 521 184 409 128 459 167 b 608 259 557 194 589 220 b 612 274 611 265 612 271 b 598 292 612 281 608 287 b 477 347 559 312 518 331 b 176 465 374 384 275 425 b 156 469 168 468 161 469 b 125 456 145 469 137 465 b 53 370 96 432 78 399 b 45 353 48 363 45 357 b 68 333 45 344 52 337 b 360 225 166 298 262 261 b 192 154 302 203 249 171 b 13 36 120 132 53 105 b 0 13 9 29 0 22 l 0 9 b 16 0 3 1 10 0 l 26 0 b 27 1 27 0 27 0 z',\n },\n articAccentBelow: {\n x_min: 0,\n x_max: 425,\n y_min: -326,\n y_max: 0,\n ha: 326,\n o: 'm 26 -469 l 27 -469 b 78 -458 46 -469 62 -464 b 347 -357 168 -426 253 -380 b 521 -285 409 -341 459 -302 b 608 -210 557 -276 589 -249 b 612 -196 611 -204 612 -200 b 598 -179 612 -189 608 -183 b 477 -122 559 -157 518 -138 b 176 -4 374 -85 275 -45 b 156 0 168 -1 161 0 b 125 -13 145 0 137 -4 b 53 -99 96 -37 78 -71 b 45 -117 48 -107 45 -112 b 68 -137 45 -125 52 -132 b 360 -245 166 -171 262 -209 b 192 -315 302 -266 249 -300 b 13 -433 120 -337 53 -366 b 0 -456 9 -442 0 -448 l 0 -461 b 16 -469 3 -468 10 -469 z',\n },\n articTenutoAbove: {\n x_min: 0.35192668236256364,\n x_max: 471.1238660564107,\n y_min: 0,\n y_max: 56,\n ha: 56,\n o: 'm 137 0 b 197 1 156 0 179 1 b 409 6 268 1 338 6 b 482 4 432 6 459 6 b 556 0 508 3 534 0 b 651 10 588 0 621 3 b 678 27 662 12 678 10 b 654 59 680 45 672 53 b 511 75 606 73 560 73 b 255 81 426 78 341 81 b 160 79 222 81 193 79 l 36 79 b 1 71 24 78 7 85 b 19 32 -3 56 9 43 b 45 16 26 24 36 20 b 137 0 76 3 108 0 z',\n },\n articTenutoBelow: {\n x_min: 0.35192668236256364,\n x_max: 471.1238660564107,\n y_min: -59,\n y_max: -3,\n ha: 56,\n o: 'm 137 -85 b 197 -84 156 -85 179 -84 b 409 -79 268 -84 338 -79 b 482 -81 432 -79 459 -79 b 556 -85 508 -82 534 -85 b 651 -75 588 -85 621 -82 b 678 -58 662 -73 678 -75 b 654 -26 680 -40 672 -32 b 511 -10 606 -12 560 -12 b 255 -4 426 -7 341 -4 b 160 -6 222 -4 193 -6 l 36 -6 b 1 -14 24 -7 7 0 b 19 -53 -3 -29 9 -42 b 45 -69 26 -60 36 -65 b 137 -85 76 -82 108 -85 z',\n },\n articStaccatoAbove: {\n x_min: 1.4151102965496913,\n x_max: 112,\n y_min: 0,\n y_max: 156,\n ha: 156,\n o: 'm 98 0 b 132 23 109 0 122 7 b 161 112 150 50 161 79 b 158 148 161 124 161 137 b 125 186 154 167 131 167 b 63 225 117 215 85 216 b 23 197 45 222 30 219 b 3 91 12 163 12 127 b 19 66 0 79 4 69 b 65 27 40 62 53 46 b 98 0 76 9 88 0 z',\n },\n articStaccatoBelow: {\n x_min: 1.4151102965496913,\n x_max: 112.08403222864916,\n y_min: -156,\n y_max: 0,\n ha: 156,\n o: 'm 132 -202 b 161 -112 151 -174 163 -145 b 158 -76 161 -101 161 -88 b 125 -39 153 -58 131 -58 b 63 0 115 -10 85 -9 b 23 -27 45 -3 30 -6 b 3 -134 12 -62 10 -98 b 19 -158 0 -145 4 -156 b 65 -197 40 -164 53 -179 b 98 -225 75 -216 88 -225 b 132 -202 109 -225 122 -217 z',\n },\n articStaccatissimoAbove: {\n x_min: 0,\n x_max: 139,\n y_min: 0,\n y_max: 411,\n ha: 411,\n o: 'm 104 0 b 144 115 143 29 138 75 b 197 423 158 217 180 320 b 200 454 199 433 200 444 b 181 540 200 482 193 513 b 112 592 167 573 141 592 b 55 567 92 592 72 585 b 0 490 32 546 3 527 l 0 484 b 27 279 14 416 14 347 b 84 20 43 193 52 104 b 96 0 86 13 92 6 z',\n },\n articStaccatissimoBelow: {\n x_min: 0,\n x_max: 139,\n y_min: -411,\n y_max: 0,\n ha: 411,\n o: 'm 88 -592 b 145 -567 108 -592 128 -585 b 200 -490 168 -546 197 -527 l 200 -484 b 173 -279 186 -416 186 -347 b 117 -20 157 -193 148 -104 b 104 0 114 -13 108 -6 l 96 0 b 56 -115 58 -29 62 -75 b 3 -423 42 -217 20 -320 b 0 -454 1 -433 0 -444 b 19 -540 0 -482 7 -513 b 88 -592 33 -573 59 -592 z',\n },\n articMarcatoAbove: {\n x_min: 0.04121419527862119,\n x_max: 396,\n y_min: 0,\n y_max: 328.0000000000001,\n ha: 328.0000000000001,\n o: 'm 477 0 b 510 13 488 0 500 6 b 570 124 546 40 563 81 b 547 183 570 147 560 166 b 356 422 487 265 405 330 b 346 442 354 429 350 436 l 346 444 b 318 465 340 456 330 464 l 312 469 b 274 449 294 480 284 461 b 242 413 262 438 253 425 b 56 196 177 343 112 274 b 1 56 26 154 13 105 b 27 20 -4 35 9 20 b 42 23 32 20 37 20 b 84 53 59 29 72 39 b 255 269 141 125 193 200 b 275 229 262 255 266 242 b 448 14 324 151 390 86 b 477 0 456 4 467 0 z',\n },\n articMarcatoBelow: {\n x_min: 0,\n x_max: 395.9587858047214,\n y_min: -328.0000000000001,\n y_max: 0,\n ha: 328.0000000000001,\n o: 'm 258 -469 b 297 -449 276 -480 287 -461 b 328 -413 308 -438 317 -425 b 514 -196 393 -343 458 -274 b 569 -56 544 -154 557 -105 b 543 -20 575 -35 562 -20 b 528 -23 539 -20 533 -20 b 487 -53 511 -29 498 -39 b 315 -269 429 -125 377 -200 b 295 -229 308 -255 304 -242 b 122 -14 246 -151 180 -86 b 94 0 114 -4 104 0 b 60 -13 82 0 71 -6 b 0 -124 24 -40 7 -81 b 23 -183 0 -147 10 -166 b 215 -422 84 -265 166 -330 b 225 -442 216 -429 220 -436 l 225 -444 b 252 -465 230 -456 240 -464 z',\n },\n fermataAbove: {\n x_min: -0.04550444040404433,\n x_max: 472,\n y_min: 2.015071727506986,\n y_max: 454,\n ha: 451.984928272493,\n o: 'm 39 10 b 78 108 66 37 71 73 b 163 311 92 181 111 252 b 284 423 199 353 239 392 b 373 458 312 444 340 454 b 433 431 395 458 410 446 b 603 153 530 361 596 276 b 595 121 603 144 595 131 l 595 88 b 602 50 596 75 589 55 b 639 73 619 43 631 60 b 651 102 645 82 648 92 b 667 194 660 132 662 163 b 680 278 671 222 672 248 b 560 567 680 386 638 481 b 396 654 508 625 452 649 b 291 632 364 654 325 644 b 161 526 235 613 200 566 b 4 249 85 446 26 357 b 4 174 0 222 -3 196 b 10 19 4 124 4 69 b 29 4 12 6 16 0 b 39 10 35 4 33 4 z m 338 37 b 370 40 350 36 357 36 b 380 75 387 40 380 43 b 389 94 382 79 382 85 b 356 132 389 111 374 122 b 269 154 328 147 300 156 b 225 125 252 154 228 157 b 261 48 222 81 232 56 b 338 37 287 40 312 40 z',\n },\n fermataBelow: {\n x_min: -0.310835055998654,\n x_max: 518.570567335755,\n y_min: -430,\n y_max: -0.9161449836506543,\n ha: 429.08385501634933,\n o: 'm 344 -615 b 500 -543 402 -602 452 -576 b 713 -253 605 -471 661 -364 b 746 -98 737 -204 750 -153 b 727 -59 744 -82 744 -59 b 688 -88 711 -59 694 -68 b 678 -109 687 -96 683 -102 b 562 -314 648 -183 611 -252 b 387 -439 516 -373 458 -416 b 328 -449 367 -446 347 -449 b 180 -386 274 -449 225 -423 b 69 -179 111 -330 69 -262 b 75 -121 69 -160 71 -141 b 84 -58 78 -101 84 -79 b 82 -39 84 -52 84 -45 b 68 -1 79 -26 82 -4 b 26 -32 49 0 33 -12 b 20 -52 24 -39 22 -45 b 0 -223 9 -107 -3 -161 b 141 -553 1 -348 27 -468 b 304 -619 192 -590 243 -619 b 344 -615 317 -619 330 -618 z m 415 -190 b 435 -157 429 -192 435 -184 b 308 -27 435 -86 379 -27 b 271 -46 287 -27 272 -35 b 269 -69 269 -55 269 -62 b 364 -183 269 -128 302 -170 z',\n },\n fermataLongAbove: {\n x_min: 0,\n x_max: 591.4911182523068,\n y_min: -6,\n y_max: 337.10134960318186,\n ha: 343.10134960318186,\n o: 'm 20 -9 b 36 14 29 -9 35 3 b 49 109 45 45 49 78 b 48 143 49 121 49 131 b 42 312 40 200 45 256 b 63 338 42 331 46 338 b 68 340 65 338 66 338 b 279 333 138 336 209 334 b 760 317 439 330 599 323 b 783 298 775 317 782 315 l 796 161 b 814 17 801 115 802 68 b 851 144 840 45 855 102 b 824 396 842 228 834 312 b 760 468 816 459 812 467 l 55 485 b 1 433 12 487 1 478 l 1 387 b 0 203 1 325 0 264 b 9 17 0 141 3 79 b 20 -9 9 7 6 -9 z m 403 3 b 439 6 413 3 425 4 b 477 42 464 9 474 22 b 478 62 478 49 478 55 l 478 84 b 465 160 478 109 478 135 b 449 173 461 167 459 173 b 354 105 386 179 354 156 b 359 71 354 95 356 84 b 360 65 360 69 360 66 b 403 3 372 14 373 3 z',\n },\n fermataLongBelow: {\n x_min: 0,\n x_max: 602,\n y_min: -335,\n y_max: 7,\n ha: 342,\n o: 'm 793 -482 b 851 -444 822 -482 842 -471 b 867 -357 860 -416 867 -387 b 865 -336 867 -350 867 -343 b 851 -189 858 -287 855 -238 b 832 -32 847 -135 840 -84 b 824 -17 832 -26 832 -17 l 822 -17 b 805 -30 816 -19 806 -20 b 798 -88 802 -50 798 -69 b 805 -292 798 -157 801 -225 b 772 -327 806 -318 801 -327 b 360 -324 635 -327 497 -325 b 78 -327 265 -323 171 -327 b 50 -304 59 -327 50 -320 l 50 -297 b 62 -187 55 -261 60 -225 b 71 -60 62 -144 71 -102 b 68 -20 71 -48 71 -33 b 53 10 66 -10 69 10 l 52 10 b 22 -22 37 9 24 -1 b 14 -121 17 -55 16 -89 b 0 -359 10 -200 0 -279 b 6 -452 0 -390 3 -420 b 42 -481 9 -478 20 -481 l 415 -481 l 415 -482 z m 409 -183 b 454 -179 420 -183 435 -181 b 505 -124 487 -176 504 -158 b 505 -89 507 -112 505 -101 b 507 -58 505 -79 507 -68 b 505 -42 507 -52 507 -48 b 485 -10 503 -29 501 -10 b 448 -9 472 -9 461 -9 b 380 -22 425 -9 402 -12 b 363 -46 372 -27 363 -35 l 363 -49 b 364 -114 363 -71 361 -94 b 409 -183 374 -168 377 -183 z',\n },\n fermataVeryLongAbove: {\n x_min: 0,\n x_max: 715,\n y_min: -14.096346766617495,\n y_max: 437,\n ha: 451.0963467666175,\n o: 'm 26 -20 b 42 -4 36 -22 39 -12 b 49 53 49 14 49 33 l 49 448 b 69 478 49 467 52 478 l 72 478 b 81 480 75 478 78 478 b 144 477 102 477 122 477 l 207 477 b 943 471 452 477 698 471 b 978 442 966 471 976 467 b 989 99 985 327 985 213 b 999 -19 991 60 995 22 b 1030 62 1028 6 1030 35 b 1021 507 1028 210 1025 359 b 1012 596 1021 537 1017 567 b 976 624 1009 618 998 624 b 507 626 819 624 662 625 b 46 629 353 628 200 629 b 7 590 19 629 7 618 b 0 101 7 428 0 264 b 16 -4 0 65 13 32 b 26 -20 17 -10 22 -19 z m 187 -9 b 207 30 206 -7 204 14 b 207 55 209 37 207 46 b 200 240 210 117 197 179 b 219 262 200 256 203 262 l 223 262 b 456 252 301 258 379 255 l 772 239 b 804 209 792 238 802 235 b 818 69 806 163 809 115 b 834 -4 821 46 816 19 b 857 56 852 13 857 35 b 851 183 857 99 858 141 b 827 360 841 242 841 301 b 786 390 821 383 809 389 b 189 409 588 403 387 402 b 153 377 163 409 153 400 b 173 27 153 259 150 143 b 187 -9 176 13 177 -9 z m 478 3 b 536 10 491 3 510 6 b 582 60 569 14 580 32 l 582 89 l 580 89 b 580 117 580 98 582 107 b 540 171 577 158 572 171 b 521 171 534 171 528 170 b 459 166 500 170 480 168 b 423 132 436 164 423 154 b 428 88 423 118 425 102 b 478 3 438 22 439 4 z',\n },\n fermataVeryLongBelow: {\n x_min: -0.012345679012345682,\n x_max: 686.4443937550029,\n y_min: -427,\n y_max: 30,\n ha: 457,\n o: 'm 56 -615 b 282 -612 132 -612 207 -613 b 924 -606 497 -608 710 -606 b 973 -570 953 -606 968 -593 b 988 -455 984 -533 991 -494 b 982 -262 984 -390 982 -327 b 976 -69 982 -197 981 -134 b 976 -14 975 -50 976 -33 b 966 43 976 4 975 23 b 940 20 953 37 943 35 b 933 -76 936 -12 933 -45 b 935 -121 933 -91 933 -107 b 940 -307 940 -183 940 -245 l 940 -435 b 919 -458 940 -451 935 -458 b 894 -459 910 -458 903 -458 b 206 -467 665 -461 435 -467 b 88 -467 167 -467 127 -468 b 45 -425 45 -467 42 -465 b 46 -400 46 -416 46 -408 b 43 -325 46 -376 43 -350 b 42 -59 42 -236 42 -148 b 22 17 42 -32 36 -6 b 0 -27 -1 7 0 -10 b 7 -420 0 -158 7 -289 l 7 -474 b 16 -579 7 -510 7 -544 b 56 -615 22 -603 27 -615 z m 789 -390 b 835 -357 816 -392 829 -380 b 850 -256 844 -324 850 -291 b 848 -230 850 -248 850 -239 b 845 -135 845 -199 845 -167 l 845 -72 b 837 23 845 -40 848 -9 b 809 -27 809 14 809 -7 l 809 -222 b 788 -242 809 -238 805 -242 l 203 -229 b 180 -209 186 -229 180 -223 l 180 -160 b 179 -115 180 -145 180 -131 b 179 -50 177 -94 179 -72 b 163 24 179 -26 176 0 b 137 -6 145 19 140 10 b 134 -39 134 -17 134 -27 b 138 -105 134 -60 137 -82 l 138 -197 b 145 -343 138 -246 138 -294 b 179 -377 148 -364 151 -377 b 789 -390 383 -377 586 -380 z m 480 -164 b 566 -65 549 -164 566 -140 b 527 1 566 -10 564 1 b 436 -71 426 1 436 -9 l 436 -88 l 436 -143 b 454 -163 436 -153 439 -161 b 480 -164 464 -163 472 -164 z',\n },\n fermataShortAbove: {\n x_min: 0,\n x_max: 545,\n y_min: -18.08551453529649,\n y_max: 348,\n ha: 366.0855145352965,\n o: 'm 16 -26 b 36 -9 26 -27 30 -16 b 354 340 143 107 249 223 b 369 348 360 346 364 348 b 382 341 373 348 377 346 l 530 199 b 743 0 599 131 672 68 b 753 -7 747 -3 750 -7 b 762 -1 756 -7 759 -6 b 785 84 776 10 785 48 b 768 150 785 112 779 138 l 399 491 b 379 501 392 498 384 501 b 357 488 372 501 364 495 b 27 137 248 370 141 251 b 1 84 12 121 1 105 b 3 69 1 79 1 75 b 0 55 1 65 0 59 b 9 1 0 36 9 20 b 16 -26 10 -7 3 -22 z m 357 24 b 367 27 360 24 363 24 b 431 118 422 42 431 49 b 429 151 431 130 431 141 b 400 193 428 171 429 193 b 333 147 359 193 333 176 b 341 42 333 111 337 78 b 357 24 343 30 346 24 z',\n },\n fermataShortBelow: {\n x_min: 0,\n x_max: 565,\n y_min: -335,\n y_max: 10,\n ha: 345,\n o: 'm 386 -482 b 422 -455 395 -482 405 -474 b 732 -117 526 -343 631 -232 b 814 12 765 -79 799 -42 b 752 -22 780 14 768 -7 b 436 -320 645 -120 540 -219 b 419 -328 429 -325 425 -328 b 400 -318 413 -328 408 -325 b 35 0 279 -212 157 -105 b 16 14 29 4 23 14 b 7 12 13 14 10 14 b 0 -3 1 7 0 1 b 7 -23 0 -10 3 -17 b 20 -48 12 -30 14 -39 b 167 -238 60 -117 115 -177 b 351 -455 229 -310 289 -383 b 386 -482 367 -474 377 -482 z m 382 -213 b 406 -207 389 -213 396 -210 b 452 -156 431 -199 446 -180 b 461 -85 456 -132 458 -108 b 448 -32 461 -66 454 -49 b 418 -6 442 -12 431 -6 b 397 -9 410 -6 405 -7 b 348 -50 376 -14 350 -14 b 356 -170 348 -91 354 -130 b 382 -213 357 -199 363 -213 z',\n },\n breathMarkComma: {\n x_min: 0,\n x_max: 148,\n y_min: 0,\n y_max: 275,\n ha: 275,\n o: 'm 120 0 b 187 78 156 20 174 48 b 213 209 206 121 213 164 b 206 294 213 238 210 265 b 140 390 200 337 171 367 b 122 396 134 395 128 396 b 68 382 105 396 85 384 b 46 379 60 382 53 382 b 0 328 12 369 0 357 b 1 311 0 323 1 317 b 30 210 4 275 22 243 b 66 167 39 179 46 167 b 94 171 73 167 82 168 b 143 180 109 174 124 180 b 160 179 148 180 154 180 b 120 66 124 145 120 107 b 120 0 120 45 121 23 z',\n },\n breathMarkUpbow: {\n x_min: 0,\n x_max: 254,\n y_min: 0,\n y_max: 595,\n ha: 595,\n o: 'm 233 0 b 256 48 251 14 253 30 b 272 183 264 92 265 138 b 311 455 289 274 295 364 b 350 716 327 541 341 628 b 366 815 354 749 366 782 b 359 857 366 829 363 842 b 327 815 334 852 330 832 b 302 674 315 769 310 721 b 248 357 288 567 269 462 b 225 226 240 314 242 268 b 210 251 212 232 213 243 b 69 721 163 408 117 564 b 32 835 58 760 53 801 b 20 851 29 841 27 851 b 14 850 19 851 16 851 b 0 828 6 847 0 838 l 0 825 b 12 765 1 804 7 785 b 194 125 73 552 132 338 b 233 0 206 84 213 42 z',\n },\n caesura: {\n x_min: 0,\n x_max: 565.5831864753837,\n y_min: -0.09016994374947417,\n y_max: 562.4481112129314,\n ha: 562.5382811566809,\n o: 'm 0 76 b 49 122 24 92 37 107 b 444 613 180 287 305 455 b 528 770 484 660 518 708 b 531 792 530 778 531 785 b 524 808 531 799 530 805 b 490 792 513 815 498 802 b 390 683 456 756 420 721 b 48 262 275 543 164 400 b 0 76 0 207 7 145 z m 226 1 b 248 13 238 -4 243 7 l 353 137 b 759 638 490 302 632 464 b 814 805 795 688 819 740 b 779 786 796 805 788 796 b 628 609 724 732 678 668 b 310 242 523 485 416 363 b 217 69 265 190 217 140 b 222 30 217 58 219 45 b 222 23 222 29 220 26 b 220 12 222 20 220 16 b 226 1 220 7 222 3 z',\n },\n caesuraCurved: {\n x_min: 0,\n x_max: 386,\n y_min: -10,\n y_max: 584,\n ha: 594,\n o: 'm 180 -14 b 246 14 213 -13 230 0 b 347 144 288 52 315 99 b 526 471 420 246 488 350 b 556 671 546 537 556 603 b 543 798 556 713 553 756 b 504 837 537 822 521 828 b 490 841 500 840 494 841 b 472 832 482 841 477 838 b 406 678 436 785 406 737 b 410 638 406 665 408 652 b 425 511 419 595 425 553 b 315 186 425 395 387 287 b 180 -14 271 122 228 58 z m 14 24 b 49 39 29 24 40 32 b 120 114 76 60 99 85 b 216 276 156 166 184 223 b 317 626 281 384 317 501 b 315 664 317 639 317 651 b 301 773 314 701 311 737 b 262 808 295 795 278 808 b 245 799 256 808 249 805 b 170 641 209 750 170 706 b 171 621 170 634 170 628 b 177 511 176 585 177 549 b 114 229 177 415 160 320 b 0 26 79 161 42 95 b 14 24 6 24 10 24 z',\n },\n restMaxima: {\n x_min: 0,\n x_max: 366,\n y_min: -255,\n y_max: 255,\n ha: 510,\n o: 'm 397 -367 b 504 -343 436 -367 468 -347 b 518 -318 516 -341 518 -330 b 527 -30 518 -217 527 -117 b 526 33 527 -7 527 13 l 526 301 b 501 350 526 323 520 341 b 428 367 477 361 452 367 b 374 359 410 367 393 364 b 357 333 361 354 357 347 b 356 91 357 252 356 171 l 356 30 b 340 -307 357 -82 346 -194 b 397 -367 337 -354 350 -367 z m 46 -357 b 58 -356 49 -357 53 -357 b 154 -333 91 -351 121 -338 b 173 -305 168 -330 173 -320 l 173 302 b 132 356 173 330 157 348 b 68 364 112 363 89 364 b 3 304 19 363 1 348 l 3 4 l 0 4 b 1 -302 0 -98 0 -200 b 46 -357 1 -331 16 -357 z',\n },\n restDoubleWhole: {\n x_min: 0,\n x_max: 122,\n y_min: 0,\n y_max: 249,\n ha: 249,\n o: 'm 43 0 b 58 1 48 0 52 0 b 124 20 81 6 102 17 b 176 96 173 27 176 58 b 173 220 174 138 173 179 b 176 304 173 248 176 276 b 140 353 176 331 163 346 b 95 359 125 356 111 359 b 32 346 73 359 52 354 b 0 315 20 340 0 337 b 1 243 0 291 1 268 l 1 174 l 4 174 l 4 48 b 43 0 4 16 17 0 z',\n },\n restWhole: {\n x_min: 0.8908513171538642,\n x_max: 500,\n y_min: -120,\n y_max: 14,\n ha: 134,\n o: 'm 356 -173 l 356 -171 l 642 -171 b 719 -115 680 -171 717 -145 b 720 -82 719 -104 720 -92 b 711 -20 720 -60 719 -40 b 672 17 704 0 694 10 b 649 20 664 20 657 20 b 605 17 634 20 621 17 b 92 19 433 17 262 17 b 29 7 69 20 49 12 b 9 -17 12 4 9 -6 b 10 -43 9 -26 10 -35 b 1 -84 10 -58 3 -72 b 76 -173 0 -147 7 -173 z',\n },\n restWholeLegerLine: {\n x_min: -196.7269258015421,\n x_max: 685,\n y_min: -157,\n y_max: 29,\n ha: 186,\n o: 'm 96 -226 b 167 -223 121 -226 144 -225 b 300 -222 207 -222 252 -222 l 444 -222 b 660 -217 520 -222 595 -222 b 746 -131 703 -216 746 -200 b 744 -62 746 -108 747 -85 b 743 -39 743 -53 743 -46 b 789 -14 743 -16 752 -17 b 883 -16 821 -13 851 -16 b 965 -9 910 -16 937 -14 b 986 3 972 -7 986 -10 l 986 6 b 963 35 984 17 982 32 b 887 42 937 39 913 42 b 39 27 605 42 321 33 l -76 27 b -261 20 -138 27 -200 26 b -282 14 -269 20 -279 23 b -271 -7 -287 4 -276 -1 b -209 -27 -253 -23 -230 -24 b -153 -30 -190 -30 -173 -30 b -48 -29 -118 -30 -82 -27 b 6 -32 -22 -29 -6 -27 b 1 -72 3 -43 1 -58 b 4 -167 1 -105 7 -140 b 53 -223 3 -207 14 -217 b 96 -226 68 -226 82 -226 z',\n },\n restHalf: {\n x_min: 0,\n x_max: 518.3998530468286,\n y_min: 0,\n y_max: 162,\n ha: 162,\n o: 'm 98 0 l 556 0 b 665 1 592 0 629 0 b 746 82 720 3 743 29 b 736 174 749 114 740 144 b 670 232 729 215 708 232 b 570 229 636 232 603 229 b 356 233 498 229 426 233 l 73 233 b 0 179 19 233 0 220 b 1 154 0 171 0 164 b 6 95 4 135 6 115 b 98 0 3 27 29 0 z',\n },\n restHalfLegerLine: {\n x_min: -120,\n x_max: 448.2056815990121,\n y_min: -20,\n y_max: 143,\n ha: 163,\n o: 'm 397 -29 b 482 -23 426 -29 455 -27 b 526 -24 497 -24 511 -24 b 608 -17 554 -24 582 -23 b 645 -1 622 -14 644 -17 b 615 26 648 13 629 20 b 595 32 608 29 602 30 b 526 37 572 35 549 37 b 498 36 517 37 507 37 b 471 35 487 35 478 35 b 445 53 451 35 445 39 b 449 89 445 60 446 73 l 454 117 b 373 206 456 173 428 206 b 324 204 356 206 340 206 b 209 203 287 203 248 203 b 46 193 156 203 101 202 b 16 170 32 190 19 187 b 9 112 13 151 9 131 b 14 78 9 101 10 89 b 19 59 17 71 19 63 b -4 45 19 49 12 45 l -10 45 b -150 33 -58 45 -104 46 b -173 22 -158 32 -173 33 l -173 19 b -151 -13 -170 6 -168 -10 b -117 -17 -140 -16 -128 -17 b 118 -13 -37 -17 39 -13 b 397 -29 213 -13 308 -29 z',\n },\n restQuarter: {\n x_min: -0.3784452492533808,\n x_max: 263,\n y_min: -415,\n y_max: 415,\n ha: 830,\n o: 'm 151 -596 b 164 -563 163 -589 161 -575 b 160 -546 164 -557 161 -552 b 124 -396 148 -495 135 -446 b 122 -380 122 -390 122 -384 b 199 -255 122 -331 158 -272 b 228 -256 209 -249 217 -253 b 324 -346 274 -271 298 -310 b 353 -369 331 -356 341 -369 b 360 -367 356 -369 357 -369 b 379 -336 373 -361 379 -348 l 377 -325 b 344 -232 372 -292 366 -258 b 249 -58 301 -180 278 -117 b 242 -36 245 -49 242 -42 b 258 -7 242 -26 248 -17 b 328 78 284 20 311 45 b 354 158 344 104 354 131 b 337 216 354 177 350 196 b 213 435 294 288 249 359 b 115 575 189 487 158 536 b 78 598 105 585 92 598 b 59 592 72 598 66 596 b 39 562 45 583 39 572 b 53 527 39 550 45 539 b 168 344 98 469 125 402 b 187 307 181 328 187 317 b 153 269 187 294 176 284 b 62 213 122 252 91 235 b 40 180 48 203 40 192 b 46 158 40 173 43 166 b 99 65 60 125 79 95 b 183 -79 131 20 160 -29 b 156 -86 173 -88 164 -85 b 0 -261 58 -99 -7 -173 b 96 -557 10 -366 49 -464 b 124 -585 102 -569 109 -580 b 145 -598 132 -588 138 -598 b 151 -596 147 -598 150 -598 z',\n },\n rest8th: {\n x_min: 0,\n x_max: 289,\n y_min: -260,\n y_max: 261,\n ha: 521,\n o: 'm 164 -374 b 212 -340 190 -373 203 -357 b 276 -190 238 -292 258 -242 b 410 285 333 -36 359 128 b 416 314 413 294 416 304 l 416 321 b 393 354 415 341 410 354 b 382 353 389 354 386 354 b 292 311 347 347 315 333 b 174 225 256 276 216 251 b 157 219 168 222 163 219 b 140 228 151 219 145 222 b 131 246 134 233 131 240 b 135 262 131 252 132 256 b 147 298 141 272 147 285 b 127 367 147 323 154 354 b 94 376 114 373 102 376 b 48 336 75 376 63 363 b 3 181 20 288 12 235 b 0 150 1 170 0 160 b 109 24 0 84 35 24 b 171 36 127 24 148 27 b 289 101 213 52 248 75 b 164 -374 256 -62 193 -213 z',\n },\n rest16th: {\n x_min: 0,\n x_max: 333,\n y_min: -328.283950617284,\n y_max: 244,\n ha: 572.2839506172841,\n o: 'm 209 -471 b 246 -458 222 -477 236 -468 b 307 -338 279 -425 300 -384 b 324 -226 312 -301 317 -262 b 428 161 350 -94 386 35 b 480 318 445 215 480 259 b 467 347 480 331 477 341 b 445 351 461 350 454 351 b 408 337 432 351 419 347 b 402 333 405 336 403 334 b 223 215 344 294 294 245 b 236 259 229 233 235 246 b 238 276 238 265 238 271 b 212 338 238 302 226 334 b 193 341 206 340 199 341 b 86 289 156 341 104 317 b 59 180 66 255 59 217 b 156 27 59 76 92 27 b 236 46 179 27 204 35 b 338 101 271 59 298 82 b 289 -49 312 49 302 0 b 196 -122 276 -99 235 -107 b 176 -114 187 -127 176 -127 l 176 -111 b 157 -53 177 -88 164 -72 b 69 -9 141 -7 101 -16 b 17 -48 43 -3 29 -27 b 0 -127 4 -73 0 -99 b 6 -186 0 -147 1 -167 b 82 -294 17 -262 37 -294 b 160 -276 102 -294 128 -289 b 219 -242 181 -268 203 -259 b 236 -230 223 -236 229 -230 b 243 -232 239 -230 240 -230 b 235 -275 248 -246 239 -261 b 202 -456 220 -334 202 -395 b 209 -471 202 -462 203 -468 z',\n },\n rest32nd: {\n x_min: 0,\n x_max: 347,\n y_min: -497.5023916875033,\n y_max: 483,\n ha: 980.5023916875033,\n o: 'm 177 -716 b 217 -690 194 -720 209 -704 b 233 -655 225 -680 230 -668 b 292 -390 253 -567 275 -480 b 361 -48 312 -275 336 -161 b 452 400 393 102 422 252 b 497 629 467 477 482 553 b 500 647 498 635 500 641 b 480 691 500 665 492 684 b 464 696 475 694 469 696 b 418 674 448 696 431 685 l 361 626 b 333 611 353 618 343 612 b 308 629 325 611 317 616 b 239 667 292 651 265 661 b 204 670 228 668 216 670 b 86 559 141 670 95 628 b 85 537 86 552 85 544 b 107 416 85 495 95 455 b 161 372 114 389 134 372 b 174 373 166 372 170 372 b 226 383 192 374 209 377 b 387 478 285 402 330 444 b 364 386 379 444 364 415 b 276 271 364 323 320 298 b 265 266 272 268 268 266 b 252 276 261 266 256 269 b 143 333 229 311 186 333 b 107 327 130 333 118 330 b 43 243 62 314 46 291 b 58 145 43 210 52 179 b 150 63 68 92 99 63 b 315 132 213 63 259 98 b 266 -58 297 63 281 4 b 207 -101 259 -91 230 -96 b 186 -66 186 -107 199 -75 b 180 -50 181 -63 183 -55 b 101 -3 160 -23 135 -3 b 9 -66 59 -3 20 -32 b 0 -118 3 -84 0 -101 b 10 -196 0 -144 6 -170 b 104 -287 20 -256 52 -287 b 137 -282 114 -287 125 -287 b 184 -269 151 -281 171 -269 b 196 -275 190 -269 193 -271 b 199 -287 197 -278 199 -282 b 184 -343 199 -304 189 -325 b 181 -348 184 -346 183 -347 b 134 -595 158 -429 131 -508 b 156 -677 134 -624 150 -648 b 177 -716 158 -693 160 -713 z',\n },\n rest64th: {\n x_min: 0,\n x_max: 428,\n y_min: -720,\n y_max: 473.6797408388932,\n ha: 1193.6797408388932,\n o: 'm 200 -1037 b 229 -1012 215 -1037 222 -1025 b 238 -984 233 -1004 236 -994 b 282 -780 248 -914 265 -848 b 386 -369 317 -644 354 -507 b 491 104 422 -212 451 -53 b 600 541 528 249 550 399 b 616 629 611 570 616 599 b 600 680 616 648 615 671 b 550 665 586 687 566 677 b 480 618 527 649 501 635 b 464 611 474 613 468 611 b 448 622 458 611 454 615 b 366 662 425 651 397 662 b 331 658 354 662 343 661 b 242 572 285 647 253 619 b 236 528 239 557 236 543 b 266 400 236 484 251 442 b 325 373 274 377 301 373 b 436 409 366 373 403 383 l 494 452 b 474 360 485 416 474 389 b 383 248 474 297 435 269 b 320 328 377 288 351 310 b 276 341 305 337 291 341 b 186 269 235 341 194 311 b 181 230 183 256 181 243 b 187 153 181 204 186 179 b 279 63 192 86 233 63 b 304 65 288 63 295 63 b 416 115 344 72 379 92 b 387 -14 406 69 397 27 b 320 -95 380 -52 369 -86 b 318 -79 320 -89 320 -84 b 223 0 305 -29 271 0 b 122 -81 171 0 135 -30 b 118 -127 120 -96 118 -112 l 118 -196 b 137 -242 118 -215 125 -229 b 209 -275 157 -266 181 -275 b 249 -269 222 -275 235 -274 b 318 -248 272 -264 294 -255 b 281 -390 315 -301 292 -344 b 276 -400 279 -393 279 -397 b 259 -420 272 -408 266 -416 b 246 -429 255 -425 251 -429 b 233 -415 242 -429 238 -426 b 176 -359 225 -389 200 -372 b 121 -346 158 -348 140 -346 b 14 -408 73 -346 27 -370 b 0 -498 4 -438 0 -468 b 6 -564 0 -520 3 -543 b 91 -635 12 -611 45 -635 b 131 -629 104 -635 117 -634 b 223 -590 163 -622 190 -603 b 166 -824 203 -671 189 -747 b 148 -912 157 -852 148 -881 b 156 -955 148 -926 150 -940 b 177 -1008 161 -972 170 -991 b 200 -1037 181 -1020 183 -1037 z',\n },\n rest128th: {\n x_min: 0.6717818579024267,\n x_max: 491,\n y_min: -711,\n y_max: 719,\n ha: 1430,\n o: 'm 233 -1015 b 271 -956 256 -1002 266 -981 l 314 -723 b 393 -350 337 -598 366 -474 b 543 312 442 -128 492 91 b 687 841 583 490 635 665 b 707 958 698 880 707 919 b 706 986 707 968 707 976 b 688 1025 704 999 704 1024 b 670 1027 683 1025 677 1027 b 629 1007 655 1027 639 1022 b 559 945 613 981 586 968 b 541 1004 553 968 559 991 b 456 1035 516 1024 488 1035 b 419 1030 444 1035 431 1034 b 344 953 379 1018 353 995 b 340 900 341 936 340 917 b 341 847 340 881 341 864 b 380 779 340 815 354 793 b 464 763 406 765 435 762 b 592 814 510 763 549 786 b 546 660 575 757 556 710 b 480 585 537 619 517 598 b 478 599 480 590 478 595 b 386 678 472 641 428 678 b 294 612 343 678 304 651 b 279 477 282 567 278 521 b 363 395 281 428 317 395 b 380 396 369 395 374 395 b 488 436 416 403 449 419 b 384 233 469 357 468 275 b 359 291 373 252 377 276 b 282 318 337 310 310 318 b 181 264 243 318 203 298 b 154 107 153 216 154 161 b 242 6 154 42 187 6 b 278 10 253 6 265 7 b 408 88 330 22 366 55 b 387 -1 400 56 393 27 b 301 -112 379 -55 354 -94 b 289 -65 297 -95 302 -79 b 219 -32 269 -42 245 -32 b 183 -37 207 -32 196 -35 b 112 -109 144 -46 121 -71 b 105 -219 104 -145 108 -183 b 186 -315 101 -276 134 -315 b 230 -307 199 -315 215 -312 b 324 -256 264 -295 292 -275 b 180 -491 323 -383 266 -471 b 183 -459 180 -480 180 -469 b 184 -442 184 -454 184 -448 l 184 -436 b 135 -369 184 -403 170 -383 b 102 -363 125 -364 114 -363 b 29 -399 73 -363 45 -376 b 1 -556 -4 -448 6 -503 b 109 -670 -4 -625 43 -670 b 140 -667 118 -670 130 -668 b 253 -616 180 -658 213 -638 b 238 -688 248 -644 242 -665 b 192 -959 220 -779 192 -867 b 193 -992 192 -971 192 -981 b 210 -1024 194 -1014 199 -1024 b 233 -1015 216 -1024 223 -1021 z',\n },\n dynamicPiano: {\n x_min: -49,\n x_max: 326.5019318364244,\n y_min: -142,\n y_max: 515,\n ha: 657,\n o: 'm -56 -204 b -42 -202 -52 -204 -46 -203 b -19 -194 -35 -202 -26 -197 b 147 -138 35 -170 91 -151 b 249 -58 194 -127 223 -95 b 262 -29 255 -50 262 -39 b 258 -17 262 -24 261 -20 b 232 -7 252 -10 242 -7 b 210 -12 225 -7 217 -9 b 125 -40 184 -23 157 -30 b 183 140 153 19 171 79 b 251 167 207 144 230 153 b 469 518 383 262 480 382 b 357 687 472 626 420 687 b 315 678 344 687 330 684 b 204 600 279 664 240 634 b 210 704 206 635 209 670 b 215 721 212 710 215 716 b 206 733 215 727 212 730 b 180 742 197 736 189 742 b 164 734 176 742 170 740 b 1 575 108 684 36 645 b -7 557 -1 569 -7 563 b -6 553 -7 556 -7 554 b 7 547 -3 547 3 547 l 17 547 b 82 575 43 547 59 567 l 82 452 b 56 46 82 317 81 180 b 17 -66 49 7 46 -36 b -62 -173 -13 -99 -37 -135 b -71 -192 -66 -179 -71 -184 b -68 -199 -71 -193 -69 -196 b -56 -204 -65 -203 -60 -204 z m 196 258 b 197 266 197 261 197 264 b 200 510 200 347 199 429 b 233 543 210 521 222 533 b 281 560 249 554 266 560 b 340 503 310 560 333 540 b 344 461 343 488 344 474 b 321 323 344 413 333 369 b 268 272 315 300 295 281 b 196 258 245 265 220 261 z',\n },\n dynamicMezzo: {\n x_min: -18,\n x_max: 559,\n y_min: -50,\n y_max: 365,\n ha: 415,\n o: 'm 43 -71 b 160 19 86 -71 143 -26 b 230 264 189 99 200 184 b 282 363 243 297 259 327 b 287 320 285 347 287 333 b 284 279 287 305 285 292 l 249 -12 b 275 -43 248 -29 245 -43 b 395 45 321 -43 389 3 b 462 271 406 124 436 197 b 523 387 475 310 490 348 l 523 346 b 504 130 521 274 513 202 b 501 81 501 114 501 98 b 510 3 501 55 504 29 b 580 -72 521 -48 543 -72 b 625 -63 593 -72 608 -69 b 789 50 690 -43 744 -3 b 805 72 795 56 805 63 b 798 85 805 76 802 81 b 778 94 792 91 785 94 b 755 85 770 94 763 91 l 693 40 b 675 33 685 36 680 33 b 658 52 668 33 662 39 b 645 144 651 82 645 112 b 658 448 641 246 660 346 b 606 507 658 485 638 507 b 583 504 599 507 592 505 b 495 446 547 497 521 471 b 420 373 471 423 448 399 b 413 458 418 406 418 432 b 361 507 408 490 386 507 b 320 491 347 507 333 501 b 160 307 256 444 207 382 l 160 337 b 174 488 160 387 174 438 b 156 521 174 501 173 513 b 137 526 148 524 143 526 b 109 513 127 526 118 520 b -16 399 66 477 23 439 b -26 383 -20 395 -26 389 l -26 379 b -14 370 -24 372 -20 370 b -6 372 -12 370 -9 372 b 19 376 4 374 12 376 b 36 359 32 376 36 370 b 30 330 36 350 35 341 l 30 323 b 9 -35 23 203 17 85 b 43 -71 6 -65 19 -71 z',\n },\n dynamicForte: {\n x_min: -144,\n x_max: 311.30112136775,\n y_min: -115.3876295915697,\n y_max: 504,\n ha: 619.3876295915697,\n o: 'm -101 -166 b 173 76 7 -153 150 -30 b 206 344 192 164 202 253 b 268 338 226 343 246 341 b 384 395 317 333 353 361 b 397 419 393 405 397 412 b 367 442 397 429 387 436 b 350 444 361 444 356 444 b 206 455 302 449 255 454 l 206 474 b 202 540 204 495 202 518 b 209 593 202 557 203 576 b 236 624 215 613 225 624 b 265 612 245 624 253 619 b 308 552 287 596 302 577 b 336 533 312 534 323 533 b 448 611 366 533 444 583 b 399 696 452 648 423 671 b 382 706 395 700 387 703 b 308 726 357 720 333 726 b 207 684 272 726 239 711 b 60 455 135 622 60 560 l 10 455 b -23 448 -1 455 -13 454 b -102 372 -55 426 -76 397 b -109 357 -108 367 -109 361 b -95 347 -109 353 -105 348 b -63 346 -84 346 -73 346 b 0 344 -43 344 -22 344 l 63 344 b 53 186 63 291 59 239 b 23 0 46 124 42 60 b -35 -60 10 -42 -6 -60 b -73 -52 -45 -60 -58 -58 b -91 -48 -79 -49 -85 -48 b -109 -53 -96 -48 -102 -49 b -199 -124 -143 -72 -168 -99 b -207 -137 -203 -128 -207 -132 b -194 -148 -207 -141 -203 -145 b -101 -166 -164 -160 -132 -168 z',\n },\n dynamicRinforzando: {\n x_min: -75,\n x_max: 322.0960720195126,\n y_min: -90,\n y_max: 325,\n ha: 415,\n o: 'm 23 -130 b 40 -125 27 -130 33 -128 b 128 -9 81 -114 125 -53 b 145 200 132 62 141 130 b 148 238 147 212 148 225 b 308 321 184 291 245 321 b 363 314 325 321 344 318 b 377 310 369 312 373 310 b 384 311 380 310 382 310 b 464 415 410 317 464 389 b 446 433 465 429 455 429 b 390 445 428 441 409 445 b 305 429 361 445 334 438 b 167 346 252 413 202 393 b 153 325 163 338 158 333 b 148 438 154 363 151 399 b 121 468 147 456 134 468 b 101 458 115 468 108 465 b -63 310 46 409 -16 367 b -108 240 -78 289 -98 271 b 32 330 -50 256 -13 297 b 37 304 37 320 37 312 l 37 292 b 10 -101 27 161 20 30 b 23 -130 9 -120 12 -130 z',\n },\n dynamicSforzando: {\n x_min: 0,\n x_max: 296,\n y_min: 0,\n y_max: 379,\n ha: 379,\n o: 'm 151 0 b 174 1 160 0 166 0 b 392 158 272 14 346 71 b 405 207 400 174 405 190 b 359 287 405 236 389 265 b 261 325 328 308 294 315 b 168 413 216 340 181 366 b 166 426 167 418 166 423 b 176 438 166 432 167 436 b 199 441 183 441 190 441 b 310 393 238 441 295 422 b 334 370 317 376 325 370 b 363 386 343 370 353 379 b 422 445 386 402 408 420 b 426 458 425 449 426 454 b 422 469 426 462 425 465 b 274 546 395 518 333 546 b 161 503 232 546 190 531 b 86 405 132 472 108 439 b 71 347 75 387 71 367 b 112 256 71 312 85 279 b 209 215 141 232 176 226 b 284 168 238 206 266 197 b 300 131 291 157 300 144 b 298 120 300 127 298 122 b 278 107 294 109 285 108 b 262 108 271 107 266 108 l 259 108 b 114 157 200 107 156 125 b 96 181 104 163 96 170 l 96 184 b 102 202 96 190 102 196 b 96 209 102 204 101 207 b 63 194 82 215 72 204 b 7 109 42 168 26 138 b 0 86 3 101 0 94 b 13 60 0 78 4 68 b 151 0 53 23 101 0 z',\n },\n dynamicZ: {\n x_min: -42.73880183193087,\n x_max: 331,\n y_min: 0,\n y_max: 328,\n ha: 328,\n o: 'm -45 0 b -6 16 -32 0 -17 10 b 3 20 -3 16 0 19 b 144 60 49 48 96 60 b 284 22 190 60 238 46 b 348 4 305 10 327 4 b 461 75 393 4 435 30 b 468 91 464 81 467 86 b 456 104 468 95 465 99 b 287 173 402 131 348 167 b 239 176 271 174 255 176 b 168 174 217 176 194 174 b 367 340 236 236 298 294 b 459 423 402 363 432 392 b 477 454 467 431 475 442 b 474 462 477 456 475 459 b 454 472 469 469 462 472 b 432 468 446 472 439 469 b 356 448 406 461 380 455 b 210 422 307 433 258 422 b 109 442 177 422 144 428 b 94 445 104 444 99 445 b 69 433 85 445 76 442 b 27 390 56 419 39 406 b -9 343 16 373 -17 357 b 63 311 3 320 36 314 l 78 311 b 132 307 95 308 114 307 b 240 314 168 307 203 311 l 193 271 b -37 50 117 196 19 145 b -59 7 -46 36 -69 20 b -45 0 -55 3 -50 0 z',\n },\n ornamentTrill: {\n x_min: 1,\n x_max: 551,\n y_min: -18,\n y_max: 539,\n ha: 557,\n o: 'm 321 612 b 190 602 278 605 235 605 l 190 638 b 187 693 190 652 190 667 b 161 776 184 717 193 776 b 137 747 150 776 137 766 b 130 654 135 716 131 685 l 130 596 l 52 588 b 4 539 23 585 7 570 b 1 477 3 530 1 500 b 3 448 1 461 3 448 l 3 452 b 53 432 6 436 23 432 b 134 435 75 432 102 433 b 151 117 138 328 147 223 b 170 13 153 82 157 46 b 209 -26 179 -10 193 -26 b 222 -22 213 -26 217 -24 b 269 -17 233 -16 253 -27 b 343 135 325 19 346 66 b 343 158 343 147 344 147 b 323 192 341 171 337 187 b 291 176 311 194 300 184 l 264 148 b 229 131 261 145 238 131 b 212 170 209 131 213 154 b 194 438 203 259 199 348 l 272 442 b 284 452 276 441 279 441 b 305 462 287 461 295 462 l 312 462 b 346 477 325 462 340 464 b 366 560 357 503 366 531 b 321 612 366 598 356 618 z m 759 588 b 711 560 749 592 733 570 b 588 500 671 541 631 521 b 583 533 586 514 586 524 b 560 576 577 549 577 572 b 517 550 541 582 528 564 b 416 423 482 508 452 462 b 382 353 392 397 384 370 b 387 305 380 341 386 318 b 392 275 389 295 392 285 b 409 243 393 262 393 243 b 431 262 419 243 425 255 b 521 373 459 298 488 333 b 523 354 521 366 523 360 b 520 337 523 346 521 340 b 508 295 513 323 508 310 b 530 102 508 279 524 122 b 549 66 533 88 530 66 b 577 99 563 66 572 84 b 580 131 580 109 580 121 l 580 302 b 600 347 580 318 582 337 b 701 392 632 364 665 384 b 793 518 785 409 793 435 b 759 588 793 559 785 576 z',\n },\n ornamentTurn: {\n x_min: 0,\n x_max: 574,\n y_min: 0,\n y_max: 312,\n ha: 312,\n o: 'm 651 0 b 816 132 727 0 796 46 b 827 223 822 163 827 193 b 808 340 827 262 821 301 b 665 449 785 408 729 449 b 636 446 655 449 647 448 b 589 384 600 441 586 422 l 602 300 b 611 285 603 291 605 285 b 621 288 613 285 616 287 b 655 295 632 294 644 295 b 711 284 674 295 693 289 b 773 209 740 275 773 232 b 697 156 773 184 734 160 b 664 154 685 154 675 154 b 579 168 635 154 608 158 b 455 242 533 186 495 213 b 261 400 387 291 331 354 b 160 432 225 422 190 432 b 20 328 98 432 49 392 b 0 229 6 295 0 262 b 30 71 0 176 14 122 b 144 3 43 29 96 3 b 168 6 153 3 160 4 b 248 122 233 20 248 39 b 246 147 248 124 248 135 b 226 177 243 164 239 177 b 206 170 220 177 215 174 b 144 154 186 158 166 154 b 79 170 122 154 101 160 b 53 202 62 179 53 189 b 60 228 53 209 55 217 b 161 281 81 261 120 281 b 183 279 168 281 176 281 b 325 190 243 269 284 229 b 572 16 402 124 475 53 b 651 0 598 6 625 0 z',\n },\n ornamentTurnSlash: {\n x_min: 0,\n x_max: 574,\n y_min: -106,\n y_max: 405,\n ha: 511,\n o: 'm 441 -153 b 456 -60 455 -118 456 -89 b 455 81 455 -14 455 33 b 572 14 491 55 530 30 b 651 -1 598 4 625 -1 b 816 131 727 -1 796 45 b 827 222 822 161 827 192 b 808 338 827 261 821 300 b 665 448 785 406 729 448 b 636 445 655 448 647 446 b 589 383 600 439 586 420 l 602 298 b 611 284 603 289 605 284 b 621 287 613 284 616 285 b 655 294 632 292 644 294 b 711 282 674 294 693 288 b 773 207 740 274 773 230 b 697 154 773 183 734 158 b 664 153 685 153 675 153 b 579 167 635 153 608 157 b 455 240 533 183 495 212 b 454 242 455 240 455 242 l 454 337 b 452 488 454 386 452 439 b 433 570 452 517 451 546 b 425 583 431 575 431 583 l 422 583 b 403 566 415 582 408 573 b 402 546 400 560 402 553 l 397 287 b 261 399 353 325 310 366 b 160 431 225 420 190 431 b 20 327 98 431 48 390 b 0 228 6 294 0 261 b 30 69 0 174 14 121 b 144 1 43 27 96 1 b 168 4 153 1 160 3 b 248 121 233 19 248 37 b 246 145 248 122 248 134 b 226 176 243 163 239 176 b 206 168 220 176 215 173 b 144 153 186 157 166 153 b 79 168 122 153 101 158 b 53 200 62 177 53 187 b 60 226 53 207 55 216 b 161 279 79 259 120 279 b 183 278 168 279 176 279 b 325 189 243 266 282 226 b 395 130 348 168 372 148 b 393 71 393 109 393 89 b 441 -153 390 -6 402 -78 z',\n },\n ornamentMordent: {\n x_min: 0,\n x_max: 700,\n y_min: 0,\n y_max: 497,\n ha: 497,\n o: 'm 513 0 b 528 39 526 14 527 27 b 531 72 531 50 531 60 b 528 138 531 94 528 117 l 528 347 b 552 359 537 354 544 359 b 579 338 560 359 569 353 b 674 217 609 297 639 255 b 719 190 690 200 704 190 b 759 215 732 190 744 197 b 940 395 815 279 877 337 b 1001 490 968 422 986 455 b 1008 513 1004 495 1008 505 b 1002 524 1008 517 1007 521 b 968 516 994 530 978 524 b 960 508 965 513 963 510 b 798 356 900 464 848 410 b 778 341 791 347 783 341 b 757 354 772 341 765 346 b 661 475 720 392 690 432 b 611 517 644 504 629 517 b 563 498 598 517 583 511 b 527 471 550 490 539 481 l 527 570 b 492 716 526 619 523 671 b 472 677 480 704 472 694 b 465 399 474 585 468 491 b 439 366 456 387 448 376 b 384 320 415 336 399 320 b 330 367 369 320 354 336 b 325 376 328 369 327 373 b 226 490 291 413 265 456 b 189 505 213 500 202 505 b 157 491 177 505 167 500 b 0 229 75 420 0 346 b 1 202 0 220 0 212 b 22 215 12 203 16 209 b 124 327 55 252 89 289 b 147 343 132 337 140 343 b 171 323 156 343 164 336 b 266 197 196 276 232 236 b 337 157 291 170 314 157 b 410 207 361 157 386 174 b 461 274 428 229 444 252 b 462 166 461 238 461 202 b 513 0 465 108 487 55 z',\n },\n ornamentShortTrill: {\n x_min: 0,\n x_max: 747,\n y_min: 0,\n y_max: 243,\n ha: 243,\n o: 'm 379 0 b 428 14 395 0 410 4 b 474 56 445 26 461 39 b 552 157 500 89 526 122 b 566 168 556 163 560 168 b 575 157 569 168 572 166 b 664 36 592 107 628 72 b 733 1 685 13 710 1 b 802 35 757 1 780 13 b 1007 249 871 105 940 177 b 1067 324 1028 272 1054 295 b 1076 340 1068 330 1076 334 b 1073 346 1076 341 1076 343 b 1057 350 1068 348 1063 350 b 1047 347 1053 350 1050 350 b 1001 310 1031 336 1015 324 l 857 157 b 844 143 852 153 848 143 b 835 150 841 143 838 144 b 757 242 815 186 780 209 b 685 298 739 268 713 284 b 641 310 670 305 655 310 b 590 288 625 310 608 304 b 497 179 554 256 527 215 b 480 164 490 170 485 164 b 462 179 474 164 469 168 b 372 295 436 220 405 258 b 278 344 346 324 312 344 b 199 310 252 344 226 334 b 92 196 161 274 128 233 b 0 24 46 148 23 89 b 42 48 22 27 32 37 b 156 168 84 85 114 132 b 196 192 174 184 186 192 b 228 158 206 192 215 181 b 312 36 252 114 282 75 b 379 0 331 12 354 0 z',\n },\n ornamentTremblement: {\n x_min: 0,\n x_max: 982.17691453624,\n y_min: 0,\n y_max: 224,\n ha: 224,\n o: 'm 0 0 b 63 36 30 12 48 23 b 157 124 94 66 125 94 b 177 135 164 131 170 135 b 196 122 183 135 189 131 b 268 40 217 94 245 68 b 323 6 288 16 304 6 b 369 20 336 6 350 10 b 412 53 384 29 399 40 b 501 145 442 84 472 114 b 523 158 508 154 516 158 b 543 145 528 158 536 154 b 641 45 576 112 608 78 b 698 17 658 27 677 17 b 729 23 708 17 719 20 b 804 65 756 32 780 46 b 904 154 837 95 871 124 b 920 163 910 160 916 163 b 936 153 924 163 930 160 b 1024 60 965 121 996 92 b 1112 13 1053 29 1080 13 b 1184 39 1135 13 1158 22 b 1359 194 1248 84 1305 138 b 1413 301 1388 223 1403 261 b 1404 323 1417 315 1413 323 b 1391 320 1400 323 1395 321 b 1344 294 1375 314 1358 307 b 1224 186 1305 258 1269 216 b 1194 173 1212 179 1202 173 b 1165 193 1184 173 1175 179 b 1096 271 1145 222 1122 248 b 1001 318 1061 302 1031 318 b 903 268 969 318 937 301 b 806 186 871 239 841 210 b 782 174 796 179 789 174 b 756 193 773 174 765 180 b 652 291 729 232 693 266 b 596 308 634 302 615 308 b 530 278 573 308 552 298 l 415 168 b 393 157 408 161 400 157 b 373 171 387 157 380 161 b 305 245 353 197 330 222 b 248 276 285 266 266 278 b 189 245 229 276 210 266 b 81 144 156 209 120 174 b 0 0 33 109 26 56 z',\n },\n ornamentPrecompAppoggTrill: {\n x_min: -0.11067192132025548,\n x_max: 1066,\n y_min: -50,\n y_max: 533.1706452421108,\n ha: 583.1706452421108,\n o: 'm 187 -46 b 213 -14 197 -37 204 -26 b 285 151 251 36 266 94 b 304 189 294 177 297 189 b 337 168 311 189 320 181 b 458 33 386 131 415 76 b 495 12 472 19 484 12 b 531 40 508 12 518 22 b 580 168 557 79 569 124 b 622 235 592 213 603 235 b 683 194 636 235 655 222 b 838 26 737 140 791 86 b 919 -33 860 -1 881 -39 b 984 53 960 -27 971 19 b 1022 156 998 86 1008 122 b 1054 190 1032 179 1041 190 b 1089 167 1063 190 1074 183 b 1208 32 1129 122 1171 78 b 1244 10 1221 17 1231 10 b 1273 22 1253 10 1263 14 b 1496 206 1352 78 1427 137 b 1535 310 1526 236 1535 272 b 1531 359 1535 325 1534 343 b 1496 343 1515 360 1506 351 l 1309 192 b 1269 167 1289 176 1279 167 b 1234 199 1260 167 1251 177 b 1122 324 1200 243 1168 289 b 1074 344 1106 337 1089 344 b 1014 301 1051 344 1030 328 b 952 144 985 252 971 197 b 933 121 946 128 940 121 b 910 137 927 121 920 125 b 850 210 888 161 870 186 b 687 369 799 266 750 325 b 631 390 665 383 647 390 b 567 327 602 390 580 369 b 527 199 554 284 543 242 b 508 168 520 179 514 168 b 482 192 503 168 495 177 b 353 328 444 240 405 292 b 312 343 338 338 324 343 b 266 297 292 343 276 327 b 204 125 248 239 232 180 b 143 79 193 102 173 79 b 92 122 117 79 105 102 b 81 154 86 131 84 143 b 48 423 59 242 50 333 b 45 544 46 464 45 504 b 53 730 45 606 48 668 b 40 768 55 744 52 766 b 13 730 19 770 14 747 b 0 514 7 658 -1 586 b 26 122 3 383 6 252 b 75 -36 35 66 40 10 b 134 -72 92 -59 112 -72 b 187 -46 151 -72 170 -63 z',\n },\n ornamentPrecompSlideTrillDAnglebert: {\n x_min: 0,\n x_max: 1088,\n y_min: -380,\n y_max: 252,\n ha: 632,\n o: 'm 560 -539 b 439 -481 527 -497 484 -485 b 354 -461 409 -478 380 -477 b 131 -154 236 -389 161 -285 b 124 -98 127 -135 124 -117 b 196 55 124 -40 148 10 b 308 99 230 86 268 99 b 399 81 337 99 367 92 b 514 22 441 66 477 43 b 619 -30 567 -9 590 -30 b 719 17 642 -30 670 -16 b 861 131 769 52 818 88 b 899 150 874 144 887 150 b 936 117 913 150 926 138 b 965 43 948 94 956 68 b 1007 -1 973 24 978 -1 b 1048 30 1025 -1 1037 16 b 1070 65 1057 40 1064 52 b 1110 148 1084 92 1096 121 b 1145 190 1120 164 1120 190 b 1191 153 1169 192 1179 168 b 1256 29 1218 115 1231 68 b 1292 1 1267 10 1277 1 b 1320 10 1300 1 1309 4 b 1369 48 1339 19 1355 33 b 1515 196 1418 96 1464 148 b 1567 343 1558 238 1567 287 b 1555 363 1565 357 1562 363 b 1539 356 1551 363 1547 360 b 1433 268 1502 330 1466 301 b 1335 171 1401 236 1374 199 b 1310 163 1325 166 1318 163 b 1286 183 1302 163 1293 168 b 1218 311 1264 226 1247 272 b 1164 351 1200 337 1182 351 b 1110 308 1146 351 1128 337 b 1031 176 1084 265 1058 219 b 1015 161 1025 166 1021 161 b 999 179 1009 161 1005 167 b 955 279 985 213 973 248 b 913 307 943 300 930 307 b 887 302 904 307 896 305 b 852 281 874 298 863 291 b 693 167 804 236 747 204 b 612 140 667 150 639 140 b 549 157 592 140 570 145 b 403 220 503 181 452 202 b 271 248 360 236 315 248 b 179 229 239 248 209 242 b 0 -29 65 180 0 85 b 9 -104 0 -53 3 -78 b 397 -526 56 -317 183 -464 b 505 -547 432 -536 468 -547 b 560 -539 524 -547 541 -544 z',\n },\n ornamentPrecompSlideTrillBach: {\n x_min: 0,\n x_max: 1185,\n y_min: -380,\n y_max: 465,\n ha: 845,\n o: 'm 624 -544 b 642 -528 638 -543 642 -537 b 639 -514 642 -524 642 -520 b 590 -444 629 -487 609 -467 b 523 -413 573 -422 553 -410 b 498 -415 514 -415 507 -415 b 399 -389 464 -415 431 -405 b 89 -157 281 -330 176 -255 b 72 -117 78 -144 72 -131 b 73 -101 72 -111 72 -107 b 187 186 91 3 147 91 b 246 230 200 216 222 230 b 300 209 262 230 281 223 b 456 48 359 163 403 101 b 540 -10 494 10 518 -10 b 625 59 566 -10 589 13 b 690 148 648 88 668 118 b 711 167 697 160 704 167 b 733 153 719 167 724 163 b 844 14 769 105 808 60 b 903 -42 873 -23 886 -42 b 973 -1 919 -42 937 -27 b 1008 33 986 7 996 20 b 1048 81 1021 48 1035 65 b 1050 37 1048 66 1050 52 b 1047 -24 1050 17 1048 -3 b 1038 -275 1038 -108 1040 -192 l 1037 -289 b 1045 -302 1037 -295 1038 -301 b 1068 -284 1056 -304 1064 -292 b 1084 -242 1076 -271 1081 -256 b 1099 -109 1096 -199 1099 -154 b 1106 158 1099 -19 1106 71 b 1128 187 1113 167 1120 177 b 1168 223 1143 212 1155 223 b 1210 193 1179 223 1191 213 b 1220 183 1214 190 1215 186 b 1329 36 1261 138 1292 84 b 1374 7 1345 16 1358 7 b 1411 20 1384 7 1395 12 b 1479 84 1437 37 1459 59 b 1610 235 1521 135 1564 186 b 1706 403 1655 282 1695 334 b 1614 346 1663 400 1637 373 b 1464 170 1564 287 1515 228 b 1440 150 1453 156 1447 150 b 1414 173 1433 150 1426 158 b 1283 336 1371 228 1333 288 b 1220 366 1261 356 1240 366 b 1148 318 1194 366 1169 350 b 1103 255 1133 297 1119 275 b 1097 301 1102 271 1100 285 b 1099 334 1099 312 1099 324 b 1092 428 1099 367 1094 397 b 1071 647 1087 501 1079 575 b 1058 670 1071 657 1071 670 b 1035 648 1047 670 1038 661 b 1018 516 1024 605 1015 560 b 1041 203 1025 412 1037 307 b 1043 180 1041 196 1043 187 b 992 127 1027 161 1009 143 b 965 111 981 117 972 111 b 936 132 955 111 946 120 b 829 268 900 179 867 225 b 760 317 801 301 780 317 b 691 258 739 317 719 297 b 605 147 664 219 641 177 b 589 138 599 141 593 138 b 572 148 583 138 579 141 b 415 317 520 206 467 261 b 327 372 390 343 366 366 b 300 373 317 373 308 373 b 154 295 239 373 190 348 b 55 138 120 243 85 192 b 0 -53 22 79 0 13 b 160 -317 0 -156 49 -252 b 209 -354 177 -327 192 -343 b 510 -531 305 -419 397 -495 b 593 -547 537 -540 564 -547 b 624 -544 603 -547 613 -546 z',\n },\n ornamentPrecompTrillSuffixDandrieu: {\n x_min: 0,\n x_max: 1003,\n y_min: -20,\n y_max: 521,\n ha: 541,\n o: 'm 791 -16 b 844 33 812 -3 829 14 b 981 271 900 107 937 190 b 994 288 984 278 985 288 b 1009 269 1004 288 1007 278 b 1077 112 1034 217 1051 163 b 1158 43 1103 62 1129 43 b 1231 69 1179 43 1204 55 b 1348 189 1280 98 1315 143 b 1444 451 1407 271 1444 357 b 1431 547 1444 482 1440 514 b 1188 750 1401 665 1299 750 b 1158 747 1178 750 1168 749 b 1079 684 1119 742 1089 727 b 1063 632 1076 665 1071 648 b 1056 609 1058 622 1056 615 b 1071 599 1056 602 1060 599 b 1086 600 1076 599 1080 600 b 1130 605 1102 603 1116 605 b 1244 569 1171 605 1210 595 b 1349 346 1322 511 1349 433 b 1348 312 1349 334 1349 324 b 1289 197 1345 266 1325 228 b 1238 174 1270 181 1253 174 b 1188 215 1220 174 1202 187 b 1145 308 1172 245 1159 276 b 1096 413 1129 343 1120 382 b 1053 438 1084 431 1068 438 b 1011 413 1038 438 1022 431 b 955 324 989 384 971 354 b 850 127 920 258 886 192 b 838 112 847 121 842 112 b 824 128 828 109 825 121 b 802 193 815 150 809 171 b 730 400 779 264 766 337 b 688 431 719 420 703 431 b 647 403 674 431 660 422 b 606 338 632 383 619 361 b 513 167 575 282 546 223 b 480 122 503 150 498 122 b 452 171 459 122 459 153 b 420 255 442 199 432 228 b 337 408 399 308 380 364 b 276 436 317 428 297 436 b 215 397 253 436 230 423 b 23 72 148 289 81 184 b 0 29 17 59 0 40 b 7 17 0 23 1 20 b 59 58 26 7 46 39 b 190 276 111 127 143 206 b 216 301 202 292 207 301 b 245 279 223 301 232 294 b 311 166 278 248 292 206 b 367 16 331 117 346 65 b 402 -19 377 -7 387 -19 b 438 -4 412 -19 423 -13 b 518 88 474 17 495 55 b 628 284 562 150 592 216 b 657 223 648 266 651 243 b 717 13 677 154 696 84 b 755 -29 726 -16 737 -29 b 791 -16 765 -29 776 -24 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefix: {\n x_min: 0,\n x_max: 1246,\n y_min: -30,\n y_max: 296.0302860502196,\n ha: 326.0302860502196,\n o: 'm 360 -43 b 559 59 445 -43 503 7 b 698 236 615 111 652 179 b 714 248 704 243 710 248 b 727 235 719 248 721 243 l 848 42 b 883 12 860 22 870 12 b 917 32 891 12 903 19 b 946 62 927 42 939 50 b 1037 192 972 108 1009 147 b 1057 210 1044 204 1051 210 b 1076 190 1063 210 1068 203 l 1176 12 b 1215 -19 1188 -9 1201 -19 b 1250 -6 1225 -19 1237 -14 b 1284 27 1264 3 1274 16 b 1380 190 1323 78 1351 135 b 1395 210 1384 197 1385 210 b 1413 190 1405 210 1410 197 b 1508 40 1436 134 1467 85 b 1564 3 1529 14 1547 3 b 1617 32 1580 3 1597 12 b 1767 238 1678 92 1719 167 b 1794 310 1781 259 1791 282 b 1752 294 1776 317 1764 304 b 1656 164 1711 258 1689 206 b 1629 144 1646 151 1637 144 b 1603 161 1620 144 1613 150 b 1502 315 1562 207 1525 258 b 1452 357 1490 344 1470 357 b 1397 320 1431 357 1411 344 b 1316 170 1368 271 1345 219 b 1280 127 1306 154 1303 127 b 1244 171 1256 127 1254 154 b 1145 337 1210 226 1179 282 b 1110 363 1135 354 1122 363 b 1070 338 1097 363 1084 354 b 1050 311 1063 330 1057 320 b 959 181 1017 271 992 223 b 939 167 950 173 945 167 b 920 184 933 167 927 173 b 818 343 887 238 852 291 b 759 395 795 377 778 395 b 701 344 742 395 724 377 b 698 338 700 341 700 340 b 544 154 652 272 605 207 b 412 98 501 117 458 98 b 304 130 377 98 341 108 b 95 373 204 187 144 275 b 58 426 85 393 82 428 b 19 366 26 426 26 389 b 0 307 13 346 0 327 b 4 287 0 300 1 294 b 174 36 49 194 91 102 b 360 -43 230 -9 289 -43 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefixTurn: {\n x_min: 0,\n x_max: 1226,\n y_min: -237,\n y_max: 436,\n ha: 673,\n o: 'm 1279 -341 b 1293 -252 1293 -307 1295 -278 b 1277 36 1287 -156 1282 -59 l 1273 118 b 1318 176 1289 137 1303 157 b 1349 203 1332 193 1342 203 b 1378 168 1359 203 1367 192 b 1456 35 1401 122 1428 78 b 1511 -12 1476 3 1493 -12 b 1568 23 1526 -12 1544 0 b 1597 53 1578 32 1588 42 b 1705 186 1629 101 1669 143 b 1761 284 1728 216 1751 246 b 1765 300 1763 288 1765 295 b 1763 307 1765 302 1765 305 b 1737 302 1754 311 1744 308 b 1718 287 1729 298 1725 292 b 1598 145 1673 245 1637 194 b 1578 130 1590 135 1584 130 b 1557 147 1571 130 1565 135 b 1447 321 1516 202 1488 265 b 1403 351 1433 341 1417 351 b 1358 323 1388 351 1372 341 b 1269 209 1329 285 1299 248 b 1254 521 1264 314 1259 418 b 1228 616 1253 554 1247 588 b 1218 628 1224 621 1223 628 l 1215 628 b 1201 613 1210 626 1202 619 b 1200 600 1200 609 1200 605 l 1200 586 b 1211 348 1204 507 1207 428 b 1217 166 1214 288 1215 226 b 1202 181 1212 168 1208 174 b 1094 334 1168 233 1130 284 b 1048 366 1079 356 1064 366 b 1004 331 1034 366 1018 354 b 904 154 969 275 930 220 b 873 202 887 171 880 187 b 778 356 845 256 819 311 b 737 379 763 372 750 379 b 698 353 724 379 711 370 l 621 232 b 415 114 570 154 495 114 b 302 138 377 114 340 121 b 73 400 187 192 117 284 b 55 420 69 415 62 420 b 42 410 50 420 45 416 b 0 292 23 373 0 334 b 4 262 0 282 1 272 b 168 39 32 168 92 99 b 359 -26 225 -6 292 -26 b 585 76 446 -26 530 10 b 668 202 616 115 641 160 b 693 228 680 219 687 228 b 720 203 700 228 707 219 b 801 63 752 160 775 111 b 844 7 812 42 818 7 b 910 66 877 6 894 39 b 923 94 916 75 919 85 b 995 219 945 137 968 179 b 1025 184 1009 210 1017 197 b 1119 56 1054 141 1087 98 b 1166 20 1138 32 1152 20 b 1215 50 1181 20 1195 30 b 1221 56 1217 52 1218 55 b 1228 -163 1223 -17 1225 -89 b 1279 -341 1231 -223 1251 -278 z',\n },\n ornamentPrecompTrillLowerSuffix: {\n x_min: 0,\n x_max: 833,\n y_min: -309,\n y_max: 319,\n ha: 628,\n o: 'm 778 -444 b 801 -445 785 -444 793 -445 b 1037 -338 894 -445 969 -397 b 1200 37 1149 -240 1200 -109 b 1084 406 1200 171 1172 300 b 1024 444 1064 431 1043 444 b 960 390 999 444 978 426 b 841 163 923 314 886 236 b 812 128 832 150 827 128 b 786 167 796 130 793 153 b 660 418 744 251 716 341 b 599 459 639 445 619 459 b 541 410 577 459 557 444 b 439 197 507 340 474 269 b 422 179 435 190 435 179 b 338 393 392 251 379 328 b 275 439 320 423 298 439 b 212 396 253 439 230 425 b 71 219 170 333 128 268 b 0 45 17 173 16 112 b 68 98 32 62 50 78 b 194 264 112 150 153 209 b 230 292 209 282 219 292 b 264 261 240 292 251 282 b 274 242 268 255 269 248 b 346 46 304 179 325 112 b 376 10 351 32 354 10 b 412 35 392 10 403 22 b 452 107 429 56 441 82 b 541 291 481 168 511 230 b 556 307 547 302 552 307 b 573 295 562 307 567 302 b 624 217 595 272 611 246 b 721 1 657 145 685 72 b 755 -27 732 -19 742 -27 b 786 -16 765 -27 775 -24 b 857 73 819 7 840 39 b 952 256 887 134 920 194 b 978 289 963 279 969 289 b 1009 262 985 289 994 281 b 1030 235 1017 253 1024 245 b 1110 -4 1071 161 1099 81 b 1116 -68 1113 -26 1116 -48 b 1009 -243 1116 -140 1090 -200 b 848 -291 956 -272 901 -291 b 730 -261 809 -291 770 -282 b 696 -248 714 -252 703 -248 b 671 -284 684 -248 678 -258 l 662 -312 b 657 -357 658 -330 657 -344 b 744 -439 657 -403 683 -425 z',\n },\n brassScoop: {\n x_min: -0.4444444444444445,\n x_max: 312,\n y_min: -390,\n y_max: 28,\n ha: 418,\n o: 'm 0 -562 b 393 -256 171 -504 307 -412 b 449 -39 431 -189 449 -115 b 448 -1 449 -26 449 -14 b 433 40 446 14 448 40 b 408 -3 410 40 412 14 b 396 -66 403 -23 402 -46 b 45 -397 346 -243 209 -337 b 0 -451 13 -409 1 -423 b 0 -562 -1 -485 0 -520 z',\n },\n brassDoitMedium: {\n x_min: -0.32815253965710617,\n x_max: 476.21251177608565,\n y_min: -50,\n y_max: 333.1535583875376,\n ha: 383.1535583875376,\n o: 'm 16 -72 b 27 -71 19 -72 23 -72 b 215 -33 89 -56 153 -48 b 521 114 327 -7 435 35 b 685 432 615 199 691 295 b 670 480 684 449 688 475 b 642 441 654 482 648 456 b 403 183 599 321 513 240 b 79 89 301 130 192 105 b 0 -1 -12 76 0 76 b 0 -50 0 -17 1 -33 b 16 -72 0 -65 3 -72 z',\n },\n brassFallLipShort: {\n x_min: 0,\n x_max: 298,\n y_min: -344,\n y_max: 65,\n ha: 409,\n o: 'm 396 -495 b 420 -461 412 -487 418 -474 b 429 -382 428 -435 429 -409 b 426 -330 429 -364 428 -347 b 285 -6 410 -209 356 -104 b 98 94 239 59 173 94 b 39 86 79 94 58 92 b 0 49 20 81 0 73 l 0 -52 b 10 -69 0 -62 1 -69 b 20 -68 13 -69 16 -69 b 88 -56 45 -59 66 -56 b 261 -160 156 -56 213 -95 b 396 -495 333 -259 382 -369 z',\n },\n brassLiftMedium: {\n x_min: 0,\n x_max: 807,\n y_min: 0,\n y_max: 838,\n ha: 838,\n o: 'm 50 0 b 55 1 52 0 53 0 b 58 23 65 7 59 16 b 55 58 56 36 55 48 b 130 117 55 99 75 112 b 220 213 202 121 220 141 b 315 308 220 289 238 308 l 336 308 b 408 380 393 310 406 321 b 461 452 409 438 416 452 b 485 451 468 452 477 451 b 569 510 531 448 556 464 b 573 543 572 520 572 531 b 657 619 580 605 595 618 b 698 621 670 619 684 619 b 788 700 749 625 778 649 b 798 778 792 726 793 752 b 873 857 806 841 809 845 b 985 950 927 867 973 887 b 1084 1047 1002 1035 1004 1034 b 1162 1128 1133 1056 1162 1087 b 1146 1182 1162 1145 1158 1164 b 1125 1207 1140 1191 1136 1207 l 1122 1207 b 1110 1191 1113 1205 1110 1198 b 1112 1174 1110 1185 1112 1178 b 1048 1110 1109 1126 1096 1113 b 1028 1109 1043 1110 1035 1109 b 939 1022 969 1102 948 1081 b 845 922 929 949 917 936 b 746 812 773 909 753 886 b 744 780 744 802 744 791 b 635 681 737 700 717 683 b 524 583 553 680 536 665 b 439 510 514 520 503 510 b 357 431 377 510 360 492 l 357 406 b 314 364 356 379 343 364 b 238 361 288 364 264 364 b 173 300 202 357 180 334 b 167 245 168 281 167 262 b 105 174 166 192 157 180 b 75 171 95 173 85 171 b 6 112 30 166 14 153 b 0 73 1 98 0 85 b 37 10 0 45 13 26 b 50 0 42 7 46 0 z',\n },\n brassFallRoughMedium: {\n x_min: 0,\n x_max: 791,\n y_min: 0,\n y_max: 819,\n ha: 819,\n o: 'm 1117 0 b 1139 101 1129 26 1139 71 b 1138 121 1139 109 1139 115 b 1084 193 1125 171 1110 193 b 1044 183 1073 193 1060 189 b 1022 177 1035 179 1028 177 b 1007 209 1012 177 1008 186 b 876 324 1004 292 959 330 b 799 317 850 321 825 320 b 759 354 772 314 755 320 b 760 373 760 360 760 366 b 759 392 760 379 760 384 b 681 477 753 451 730 477 b 654 474 672 477 664 475 b 606 467 638 471 622 468 b 586 465 599 465 592 465 b 564 481 570 465 564 469 b 569 505 564 487 566 495 b 575 553 572 521 575 537 b 572 585 575 564 573 575 b 481 665 560 657 539 668 b 412 665 458 664 435 665 b 382 690 392 667 382 672 b 383 700 382 693 383 696 b 386 773 387 724 387 749 b 297 858 382 828 351 857 b 229 861 274 858 251 858 b 190 897 207 863 193 871 b 163 1012 186 936 180 976 b 79 1084 145 1050 124 1084 b 66 1083 75 1084 71 1083 b 43 1096 49 1081 43 1087 b 48 1112 43 1100 45 1106 b 53 1130 52 1119 53 1125 b 39 1169 53 1145 45 1158 b 26 1179 36 1175 30 1179 b 16 1171 22 1179 17 1176 b 0 1103 10 1149 0 1126 b 9 1067 0 1092 1 1079 b 91 1021 26 1031 52 1018 b 145 978 122 1024 141 1011 b 156 913 147 956 151 935 b 291 795 170 831 210 795 b 346 768 337 795 346 796 b 344 743 346 760 344 753 b 343 716 344 733 343 724 b 455 600 343 651 390 602 b 505 605 471 599 490 605 b 528 598 514 605 523 603 b 536 579 534 592 536 586 b 524 523 536 562 526 541 b 523 505 524 517 523 511 b 621 405 523 442 560 405 b 639 406 626 405 634 406 b 677 413 652 408 664 410 b 701 416 687 415 696 416 b 721 392 716 416 721 410 b 720 373 721 386 720 380 b 831 255 714 301 759 252 b 897 261 854 255 876 261 b 926 262 909 261 919 262 b 969 197 963 262 965 252 b 971 184 969 193 971 189 b 1031 115 979 137 998 115 b 1071 122 1043 115 1056 118 b 1096 130 1079 125 1086 127 b 1087 59 1094 107 1087 82 b 1117 0 1087 37 1094 17 z',\n },\n brassBend: {\n x_min: 0,\n x_max: 381,\n y_min: 0,\n y_max: 367,\n ha: 367,\n o: 'm 298 0 b 472 50 359 0 418 14 b 537 135 501 71 530 92 b 543 216 543 163 543 190 l 543 266 b 544 308 543 281 543 295 b 549 433 546 354 549 395 b 543 507 549 459 547 482 b 533 528 541 516 544 528 b 511 508 524 528 514 520 b 508 478 510 498 508 488 b 504 318 507 425 504 372 b 505 264 504 300 505 282 b 446 181 505 220 484 199 b 294 150 396 160 344 150 b 92 194 226 150 158 167 b 45 269 62 207 45 230 b 46 359 46 300 46 328 b 37 497 46 405 45 451 b 27 523 36 507 37 523 b 4 498 14 524 6 513 b 3 481 3 492 3 487 b 0 409 1 456 0 433 b 4 228 0 348 4 288 b 3 177 4 210 4 194 b 68 53 1 125 20 84 b 200 10 108 27 154 17 b 298 0 233 4 266 0 z',\n },\n brassMuteClosed: {\n x_min: 0,\n x_max: 274,\n y_min: 0,\n y_max: 260,\n ha: 260,\n o: 'm 203 0 b 209 1 206 0 207 0 b 216 13 215 4 216 9 l 215 27 l 215 153 b 216 161 216 156 216 158 b 372 164 268 163 318 164 b 395 184 383 164 395 166 l 395 189 b 357 229 392 209 386 229 b 219 228 311 229 265 228 l 223 310 b 209 357 225 328 219 344 b 189 374 203 364 197 374 b 184 373 187 374 186 373 b 177 359 179 372 177 366 l 177 348 l 173 222 l 39 222 b 0 206 12 222 0 219 b 10 174 0 199 3 189 b 46 157 19 157 30 157 b 108 160 68 158 88 160 b 171 161 130 161 150 161 l 167 58 b 184 16 167 40 171 26 b 203 0 192 12 196 0 z',\n },\n brassMuteOpen: {\n x_min: 1,\n x_max: 313.01193341111656,\n y_min: 0,\n y_max: 309,\n ha: 309,\n o: 'm 265 0 b 451 189 363 7 452 88 l 451 215 b 348 383 441 285 405 343 b 209 445 288 426 248 445 b 84 379 168 445 132 420 b 69 364 79 373 73 369 b 1 213 30 323 1 275 b 230 0 1 88 94 0 z m 210 62 b 128 73 181 62 154 66 b 40 171 71 91 42 125 b 52 226 40 187 45 206 b 197 374 79 295 130 344 b 228 382 207 380 217 382 b 300 361 252 382 276 370 b 374 308 328 350 353 331 b 410 223 397 284 410 253 b 393 163 410 202 405 181 b 210 62 354 91 288 63 z',\n },\n brassFlip: {\n x_min: 0,\n x_max: 402,\n y_min: 0,\n y_max: 361,\n ha: 361,\n o: 'm 579 0 b 511 153 579 68 557 117 b 52 504 359 271 206 387 b 29 520 45 510 39 520 b 20 517 26 520 23 518 b 0 477 3 510 0 494 l 0 125 b 17 20 1 92 1 56 b 40 84 37 40 40 60 b 42 287 40 151 42 219 l 42 363 z',\n },\n brassJazzTurn: {\n x_min: 0,\n x_max: 646,\n y_min: 0,\n y_max: 212,\n ha: 212,\n o: 'm 310 0 b 367 33 327 0 344 10 b 389 55 374 40 382 49 b 490 145 423 85 456 114 b 507 154 495 151 501 154 b 524 144 513 154 517 151 b 598 72 547 120 575 98 b 700 24 625 42 662 24 b 765 43 721 24 744 30 b 893 147 812 72 855 105 b 930 212 910 166 923 186 b 912 215 923 213 917 215 b 871 199 896 215 883 209 b 812 153 852 183 832 167 b 789 144 805 148 796 144 b 773 156 782 144 776 147 b 691 251 757 199 720 222 b 603 301 658 282 631 301 b 527 258 580 301 556 288 b 420 156 494 222 455 190 b 399 143 412 147 405 143 b 377 157 392 143 386 147 b 259 282 340 200 300 242 b 219 305 245 298 232 305 b 177 279 204 305 192 297 b 55 127 137 228 95 177 b 0 52 36 104 20 79 b 14 50 6 50 10 50 b 53 66 32 50 45 58 b 115 131 75 88 98 108 b 135 148 124 143 130 148 b 157 132 141 148 148 143 b 252 33 186 96 219 65 b 310 0 275 12 292 0 z',\n },\n brassSmear: {\n x_min: 0,\n x_max: 334,\n y_min: 0,\n y_max: 151,\n ha: 151,\n o: 'm 321 0 b 475 125 390 0 436 43 b 481 143 478 131 481 137 b 475 154 481 147 480 151 b 449 148 468 158 458 154 b 395 132 432 137 413 132 b 343 140 377 132 360 137 b 229 194 301 148 266 173 b 168 217 206 209 186 217 b 109 192 148 217 130 209 b 0 26 59 148 32 89 b 59 63 32 29 45 48 b 98 84 72 78 84 84 b 130 73 108 84 118 81 b 213 26 157 58 183 37 b 321 0 255 9 289 0 z',\n },\n stringsDownBow: {\n x_min: 0,\n x_max: 306,\n y_min: -0.09607201951262866,\n y_max: 366,\n ha: 366.09607201951263,\n o: 'm 405 0 b 425 17 413 -1 420 9 b 439 66 435 32 439 48 b 441 268 439 137 441 202 b 436 412 441 314 439 361 l 435 413 b 423 469 435 436 431 456 b 344 508 406 501 373 501 b 204 527 298 520 251 527 b 60 498 156 527 108 518 b 7 438 32 485 10 468 l 7 426 b 4 337 7 396 7 367 b 0 140 0 272 0 206 b 1 42 0 107 0 73 b 13 3 1 27 -3 4 b 40 39 29 3 35 24 b 42 53 42 43 40 49 b 49 141 48 84 49 112 b 48 215 49 167 48 192 b 49 252 48 228 48 240 l 49 312 b 130 343 72 331 99 340 b 206 347 156 346 180 347 b 372 314 262 347 318 338 l 390 307 l 390 245 b 390 138 392 212 390 176 b 397 23 390 101 392 62 b 405 0 399 14 393 1 z',\n },\n stringsUpBow: {\n x_min: 0,\n x_max: 219.2842808242076,\n y_min: 0,\n y_max: 489,\n ha: 489,\n o: 'm 151 0 b 184 42 170 12 180 26 b 297 554 223 212 261 382 b 315 690 305 598 318 645 b 304 704 315 697 311 704 b 276 670 288 704 282 697 b 157 131 236 490 196 311 l 157 144 b 73 526 134 276 104 396 b 30 677 60 576 52 638 b 13 694 26 684 22 694 b 0 674 9 694 0 691 l 0 671 b 10 603 3 649 6 626 b 105 174 42 461 72 317 b 150 0 117 117 128 58 z',\n },\n stringsHarmonic: {\n x_min: 0,\n x_max: 191,\n y_min: 0,\n y_max: 202,\n ha: 202,\n o: 'm 143 0 b 275 122 217 0 275 53 b 127 291 275 206 202 291 b 0 154 63 291 0 222 b 143 0 0 76 71 0 z m 122 68 b 43 105 89 66 59 75 b 39 124 40 111 39 117 b 79 199 39 148 56 180 b 145 226 101 216 122 226 b 199 210 163 226 180 220 b 235 150 223 196 235 173 b 203 92 235 128 225 107 b 122 68 181 76 150 68 z',\n },\n pluckedSnapPizzicatoAbove: {\n x_min: 0,\n x_max: 201,\n y_min: 0,\n y_max: 325,\n ha: 325,\n o: 'm 171 0 b 289 99 240 0 289 45 b 258 183 289 130 274 156 b 174 269 236 217 203 240 l 174 408 b 174 429 174 415 176 422 b 131 468 168 451 153 468 b 117 451 120 468 117 461 b 118 429 117 444 118 435 b 115 307 117 389 115 347 b 0 166 59 295 0 223 b 171 0 0 85 89 0 z m 134 55 b 52 131 84 55 52 85 b 115 233 52 179 81 209 b 114 192 114 220 114 206 b 174 120 114 137 114 137 l 174 228 b 233 148 200 207 223 183 b 236 130 235 143 236 135 b 197 72 236 105 223 85 b 134 55 177 60 157 55 z',\n },\n pluckedSnapPizzicatoBelow: {\n x_min: 0,\n x_max: 211,\n y_min: 0,\n y_max: 307,\n ha: 307,\n o: 'm 145 7 b 163 0 153 3 158 0 b 173 23 170 0 173 7 l 173 140 l 170 140 l 170 163 l 171 163 b 206 170 179 164 193 166 b 304 287 264 186 304 233 b 281 354 304 308 297 333 b 118 442 240 412 186 439 b 0 324 69 442 0 370 b 115 176 0 266 55 202 l 115 56 b 145 7 114 33 125 19 z m 115 220 b 62 256 92 223 73 230 b 53 292 56 269 53 281 b 78 344 53 311 60 328 b 168 384 105 372 135 384 b 213 376 183 384 199 382 b 253 321 239 366 253 346 b 246 291 253 311 251 301 b 170 226 230 256 203 236 l 170 258 b 148 305 171 278 163 292 b 128 315 143 310 135 315 l 124 315 b 115 301 117 314 115 308 z',\n },\n pluckedLeftHandPizzicato: {\n x_min: 0,\n x_max: 271,\n y_min: 0,\n y_max: 284,\n ha: 284,\n o: 'm 213 0 b 223 14 222 0 223 7 b 222 35 223 22 222 29 l 222 176 b 373 170 272 174 323 170 b 390 180 382 170 390 171 l 390 184 b 347 232 386 207 382 232 b 219 238 307 233 266 235 l 219 364 b 171 409 219 395 193 409 b 156 393 160 409 156 402 b 158 370 156 384 158 376 l 158 240 b 16 239 115 240 66 239 b 0 226 7 239 0 238 l 0 223 b 50 179 1 203 29 179 b 158 177 86 179 122 179 l 158 63 b 161 29 158 52 158 40 b 213 0 166 -1 194 1 z',\n },\n keyboardPedalPed: {\n x_min: 0,\n x_max: 944,\n y_min: -13,\n y_max: 550,\n ha: 563,\n o: 'm 22 0 b 109 78 53 0 105 46 l 144 333 b 163 376 147 347 140 372 b 364 465 238 390 301 426 b 454 599 416 497 454 540 b 452 618 454 605 454 612 b 320 770 442 694 396 747 b 248 779 295 778 272 779 b 193 778 229 779 212 779 b 160 780 181 778 167 775 b 137 792 153 789 144 791 b 109 789 128 792 118 789 b 7 719 59 789 48 737 b 23 708 16 714 20 708 b 36 710 29 710 33 710 b 53 684 52 710 53 698 l 53 674 b 43 386 53 577 53 482 b 20 164 36 312 30 238 b 1 30 14 120 7 75 b 0 19 0 26 0 22 b 22 0 0 9 4 0 z m 171 425 b 156 442 160 425 156 429 b 157 475 157 452 157 464 b 164 602 161 517 164 560 b 161 698 164 635 163 667 b 184 729 161 720 167 729 l 193 729 b 348 563 278 719 348 641 b 346 539 348 554 347 547 b 171 425 328 459 229 422 z m 979 6 b 1008 13 986 6 995 9 b 1081 101 1047 29 1079 46 b 1116 449 1087 217 1104 333 b 1143 654 1123 518 1133 586 b 1148 685 1145 664 1148 675 b 1140 704 1148 693 1146 700 b 1107 716 1130 713 1119 716 b 1056 706 1092 716 1073 710 b 1037 671 1035 703 1038 685 b 1004 439 1025 595 1014 517 b 986 419 1001 428 999 419 b 979 419 985 419 982 420 b 935 426 965 423 949 425 b 795 376 884 426 838 405 b 664 153 714 323 664 249 b 665 130 664 145 665 138 b 753 29 671 65 704 29 b 815 40 773 29 792 33 b 975 147 873 65 923 101 b 965 45 971 108 968 76 b 979 6 963 17 966 6 z m 393 -17 b 634 145 494 16 579 52 b 638 160 636 151 638 156 b 625 168 638 166 634 168 b 621 167 624 168 622 168 b 524 118 582 164 544 160 b 495 79 517 104 505 92 b 435 33 471 49 452 33 b 380 96 416 33 397 55 b 369 145 373 114 369 131 b 442 225 369 186 395 213 b 468 232 451 228 459 229 b 654 344 539 255 606 285 b 677 395 667 360 677 376 b 672 415 677 402 675 408 b 612 459 661 442 639 455 b 589 461 602 461 592 461 b 348 328 500 461 409 408 b 269 120 302 268 269 199 b 379 -19 269 45 318 -19 b 393 -17 383 -19 389 -19 z m 395 240 b 494 383 418 300 452 344 l 521 405 b 544 419 528 409 536 418 b 554 415 547 419 550 418 b 570 383 564 406 570 396 l 570 379 b 552 331 570 360 562 344 b 395 240 511 285 462 253 z m 827 89 b 792 111 815 89 804 96 b 766 204 775 131 766 158 b 845 360 772 256 799 314 b 871 372 854 369 863 372 b 897 366 880 372 888 369 b 978 279 942 353 963 320 b 976 259 981 272 981 265 b 858 104 942 203 909 147 b 827 89 847 94 837 89 z m 1282 12 b 1336 35 1303 14 1320 23 b 1359 71 1351 45 1359 58 b 1338 102 1359 82 1352 95 b 1254 130 1312 118 1284 130 b 1187 88 1223 130 1202 109 b 1178 65 1182 81 1178 72 b 1195 37 1178 55 1182 45 b 1282 12 1223 23 1253 19 z',\n },\n keyboardPedalUp: {\n x_min: 0,\n x_max: 436.6015132318337,\n y_min: 0,\n y_max: 461,\n ha: 461,\n o: 'm 330 0 b 334 1 331 0 333 0 b 340 12 338 4 340 7 l 338 26 b 340 264 338 105 338 184 b 526 95 400 206 461 148 b 559 71 536 88 547 71 b 564 72 560 71 563 71 b 580 121 580 79 580 102 l 580 127 b 543 203 585 158 573 184 b 472 259 518 219 495 238 l 445 285 b 590 292 494 288 541 291 b 622 318 609 294 618 302 b 628 359 625 331 626 346 b 586 402 632 393 621 405 b 464 395 546 399 504 396 l 559 491 b 567 524 567 500 567 510 b 564 543 567 527 567 536 b 539 596 559 563 560 590 b 494 564 521 600 508 577 b 340 413 442 514 390 464 l 340 560 b 287 664 340 600 321 632 b 271 518 274 612 272 566 b 268 445 269 494 269 469 b 117 569 219 488 168 530 b 96 579 109 575 102 579 b 85 560 89 579 85 573 b 124 446 85 518 82 477 b 209 380 153 426 181 403 b 45 374 154 377 99 376 b 0 324 9 374 0 359 b 63 266 0 265 1 265 b 144 272 89 269 117 272 l 196 272 b 108 193 167 246 138 219 b 60 135 76 164 60 151 b 99 73 60 121 73 105 b 104 68 101 72 102 71 b 114 58 107 60 111 58 b 130 66 120 58 124 62 b 259 186 173 107 217 145 b 256 117 259 163 256 140 b 311 13 256 72 271 37 b 330 0 317 10 323 0 z',\n },\n pictChokeCymbal: {\n x_min: 1,\n x_max: 147,\n y_min: 0,\n y_max: 242,\n ha: 242,\n o: 'm 79 4 b 207 158 153 32 192 88 b 212 200 210 173 212 187 b 143 336 212 253 187 298 b 98 348 131 344 115 348 b 4 295 60 348 16 327 b 1 276 1 289 1 282 b 9 249 1 266 3 258 b 121 183 35 206 72 183 b 156 186 132 183 144 183 b 26 53 134 115 91 73 b 7 39 13 49 7 45 b 19 20 7 33 12 27 b 59 0 30 9 43 0 b 79 4 65 0 72 1 z',\n },\n wiggleArpeggiatoUp: {\n x_min: -22,\n x_max: 300,\n y_min: 0,\n y_max: 176,\n ha: 176,\n o: 'm 173 4 b 196 0 180 1 189 0 b 246 26 215 0 230 9 b 301 117 271 53 285 85 b 312 131 305 125 307 131 b 327 124 315 131 321 128 b 373 86 341 112 353 101 b 412 69 389 75 402 69 b 432 94 425 69 432 79 b 373 181 432 117 413 154 b 235 252 323 216 285 245 b 220 253 229 253 225 253 b 168 215 196 253 181 240 b 111 112 151 180 140 141 b 94 102 105 105 99 102 b 78 111 89 102 84 105 b 0 181 55 135 35 160 b -32 153 -20 194 -32 168 b 0 86 -32 124 -32 109 b 94 36 22 71 73 46 b 173 4 134 16 131 17 z',\n },\n arpeggiatoUp: {\n x_min: 0,\n x_max: 262,\n y_min: 0,\n y_max: 1459,\n ha: 1459,\n o: 'm 190 0 b 160 63 187 29 170 45 b 145 108 150 81 145 95 b 183 163 145 128 157 145 b 300 246 222 190 262 216 b 347 318 333 272 347 295 b 301 393 347 341 331 364 b 258 413 289 403 272 408 b 145 449 220 425 183 436 b 117 464 135 452 120 452 b 140 491 115 477 128 484 b 294 593 192 526 243 557 b 330 647 318 611 330 626 b 314 693 330 660 324 675 b 262 736 302 714 285 729 b 170 763 230 744 200 753 b 122 783 153 768 125 768 b 160 831 120 804 143 818 b 288 922 202 861 246 890 b 333 999 318 945 333 972 b 266 1083 333 1032 310 1064 b 189 1115 240 1094 215 1103 b 122 1178 145 1133 122 1153 b 168 1250 122 1200 138 1223 l 180 1257 b 269 1333 210 1283 240 1306 b 305 1405 294 1356 305 1381 b 284 1469 305 1426 298 1447 b 228 1525 269 1492 251 1511 b 183 1600 197 1545 183 1571 b 190 1640 183 1613 184 1626 b 197 1670 193 1650 194 1660 b 272 1735 213 1719 230 1735 b 295 1734 279 1735 287 1735 b 323 1732 305 1732 314 1732 b 350 1731 333 1732 341 1732 b 377 1742 369 1729 377 1732 b 370 1761 377 1747 374 1754 l 301 1898 b 217 2066 274 1954 248 2012 b 186 2101 204 2089 196 2101 b 154 2069 177 2101 167 2091 b 12 1824 105 1987 59 1907 b 0 1787 4 1810 0 1797 b 59 1744 0 1761 20 1745 b 160 1738 92 1744 125 1740 b 145 1692 156 1721 151 1706 b 135 1633 138 1672 135 1652 b 184 1518 135 1591 151 1552 b 229 1475 199 1503 213 1488 b 259 1431 249 1456 259 1444 b 229 1388 259 1420 249 1407 b 151 1325 203 1365 177 1345 b 105 1279 134 1310 118 1296 b 73 1202 84 1251 73 1227 b 108 1123 73 1176 85 1152 b 255 1031 148 1077 199 1051 b 282 1014 274 1025 282 1021 b 262 991 282 1008 275 1001 b 151 914 226 963 189 939 b 79 851 125 896 99 877 b 63 809 69 837 63 824 b 79 769 63 796 68 783 b 202 697 111 729 154 710 b 266 670 225 690 266 688 b 210 622 266 648 232 635 b 82 534 167 593 120 570 b 55 491 63 518 55 505 b 79 448 55 478 63 465 b 255 361 127 395 192 380 b 288 343 269 359 288 357 b 266 312 288 331 275 320 b 144 223 229 278 184 253 b 85 134 104 193 85 166 b 118 53 85 111 96 85 b 190 0 135 29 160 14 z',\n },\n arpeggiatoDown: {\n x_min: 0,\n x_max: 218,\n y_min: 0,\n y_max: 1440,\n ha: 1440,\n o: 'm 161 16 b 310 261 210 98 259 180 b 314 275 312 266 314 271 b 302 295 314 282 310 289 b 252 311 287 308 269 311 b 217 310 240 311 229 310 b 190 333 202 310 194 315 b 151 412 186 363 171 389 b 102 501 120 452 102 477 b 150 588 102 524 118 547 b 161 603 154 592 158 598 b 181 661 176 622 181 641 b 173 704 181 675 179 690 b 86 795 156 746 121 770 b 53 829 63 811 53 819 b 78 868 53 840 62 851 b 102 888 85 876 94 883 b 180 956 128 912 156 933 b 216 1028 204 979 216 1002 b 203 1081 216 1044 212 1061 b 115 1171 186 1123 148 1145 b 75 1221 88 1191 75 1207 b 114 1272 75 1237 88 1251 b 173 1308 132 1284 154 1296 b 226 1339 190 1318 209 1328 b 265 1405 253 1359 265 1380 b 258 1447 265 1418 264 1431 b 154 1541 242 1499 199 1521 b 109 1581 124 1555 109 1567 b 141 1627 109 1594 121 1608 b 204 1680 163 1646 184 1662 b 233 1742 223 1699 233 1719 b 226 1777 233 1752 230 1764 b 135 1862 210 1822 173 1840 b 104 1895 114 1875 104 1884 b 118 1930 104 1904 109 1914 b 192 2006 135 1961 161 1986 b 206 2029 203 2013 206 2022 b 192 2064 206 2040 197 2052 b 180 2074 187 2071 184 2074 b 156 2061 171 2074 163 2065 b 84 1983 125 2040 102 2013 b 65 1921 71 1961 65 1941 b 88 1853 65 1899 72 1876 b 171 1784 108 1820 138 1801 b 190 1764 184 1777 190 1770 b 174 1741 190 1757 184 1750 b 107 1683 153 1722 128 1704 b 68 1610 81 1659 68 1636 b 88 1548 68 1591 75 1571 b 177 1470 109 1512 141 1489 b 223 1431 209 1453 223 1443 b 179 1390 223 1420 209 1408 b 128 1361 163 1380 145 1371 b 71 1322 108 1348 88 1338 b 32 1253 45 1300 32 1277 b 48 1198 32 1236 37 1218 b 147 1090 71 1152 108 1120 b 174 1057 166 1076 174 1067 b 153 1022 174 1047 167 1037 b 109 982 140 1008 124 995 b 37 919 85 962 59 942 b 9 860 17 899 9 880 b 26 806 9 844 14 827 b 120 717 50 769 84 740 b 138 691 132 708 138 700 b 130 668 138 684 135 677 b 92 618 118 651 105 635 b 59 531 71 589 59 560 b 84 455 59 507 68 481 b 132 386 98 431 115 408 b 148 341 144 372 148 357 b 144 317 148 333 147 324 b 121 305 140 307 131 305 l 98 305 b 82 304 94 304 88 304 l 32 304 b 0 292 10 304 0 302 b 12 266 0 287 4 279 b 60 164 32 233 46 199 b 127 20 84 117 105 68 b 144 0 132 9 137 0 b 161 16 150 0 154 4 z',\n },\n repeat1Bar: {\n x_min: 0,\n x_max: 599.1057280164835,\n y_min: -250,\n y_max: 175,\n ha: 425,\n o: 'm 216 98 b 255 75 236 84 246 75 b 291 104 265 75 274 85 b 323 147 304 117 327 125 b 289 215 323 168 314 184 b 238 252 269 239 253 252 b 187 222 222 252 207 242 b 173 206 183 216 177 212 b 157 170 163 194 157 183 b 174 138 157 160 161 150 b 216 98 189 127 200 109 z m 76 -334 b 181 -285 111 -315 148 -302 b 831 52 396 -168 613 -58 b 863 114 855 63 864 82 b 828 202 855 140 855 176 b 808 213 821 209 815 213 b 793 209 804 213 799 212 l 422 19 b 26 -179 291 -48 164 -124 b 0 -213 10 -186 0 -196 b 3 -232 0 -219 0 -225 b 52 -325 14 -265 37 -294 b 66 -337 55 -331 59 -337 b 76 -334 69 -337 72 -336 z m 769 -360 b 829 -264 779 -360 829 -284 b 769 -176 822 -232 799 -200 b 742 -163 760 -167 750 -163 b 716 -184 733 -163 723 -168 b 683 -228 708 -202 693 -213 b 672 -253 675 -236 672 -245 b 683 -281 672 -262 675 -271 b 752 -353 703 -308 732 -327 b 769 -360 756 -357 763 -360 z',\n },\n repeat2Bars: {\n x_min: 0.008571918423331715,\n x_max: 775,\n y_min: -246.92374029115243,\n y_max: 362.82068246705313,\n ha: 609.7444227582056,\n o: 'm 909 412 b 873 351 906 384 893 367 b 436 50 729 249 585 147 l 91 -179 b 62 -174 76 -189 68 -183 b 12 -96 48 -147 24 -125 b 36 -16 -7 -53 -6 -43 b 220 104 96 24 158 65 b 819 507 425 232 624 369 b 881 495 852 530 861 528 b 909 412 899 469 900 439 z m 333 338 b 302 240 330 307 317 274 b 276 235 297 225 287 228 l 233 269 b 203 376 186 307 183 318 b 225 441 212 397 217 419 b 246 454 228 452 232 458 b 333 338 284 441 333 380 z m 1116 228 b 1067 158 1115 192 1092 174 b 910 59 1015 125 963 92 b 478 -240 762 -33 622 -140 b 311 -350 423 -279 366 -314 b 285 -344 298 -360 289 -356 b 239 -258 272 -314 251 -288 b 261 -196 228 -228 235 -210 b 517 -29 348 -144 436 -91 b 1030 321 681 98 861 202 b 1093 307 1060 343 1076 340 b 1116 228 1107 281 1109 252 z m 1070 -105 b 1020 -210 1057 -143 1038 -176 b 998 -210 1014 -219 1004 -215 l 924 -153 b 913 -88 899 -135 897 -112 b 949 -22 926 -66 939 -45 b 998 -7 960 6 976 9 b 1070 -105 1032 -32 1058 -63 z',\n },\n repeat4Bars: {\n x_min: 0,\n x_max: 1374,\n y_min: -304,\n y_max: 304,\n ha: 608,\n o: 'm 78 -266 b 92 -258 82 -266 88 -264 b 114 -240 98 -251 107 -246 b 638 107 289 -125 467 -14 b 873 271 716 161 793 216 b 907 337 894 285 906 305 b 887 400 901 354 897 379 b 852 438 877 426 867 438 b 814 420 842 438 829 432 b 135 -33 592 262 366 111 b 12 -121 92 -60 48 -84 b 0 -144 4 -128 0 -135 b 4 -160 0 -148 1 -154 b 63 -255 17 -196 45 -223 b 78 -266 68 -262 72 -266 z m 291 148 b 325 223 302 148 308 170 b 333 256 328 235 330 246 b 264 363 330 305 298 336 b 242 373 255 369 248 373 b 220 347 232 373 225 364 b 202 288 216 327 213 305 b 190 252 193 275 190 262 b 222 200 190 232 202 215 b 291 148 264 170 279 148 z m 815 -367 b 829 -359 819 -367 824 -364 b 851 -343 835 -353 844 -347 b 1375 6 1027 -228 1205 -117 l 1610 170 b 1644 235 1632 184 1643 203 b 1626 300 1639 253 1634 276 b 1590 337 1614 325 1604 337 b 1551 320 1580 337 1567 330 b 873 -135 1329 161 1103 10 b 749 -222 829 -161 785 -184 b 737 -245 742 -230 737 -238 b 742 -261 737 -249 739 -255 b 802 -357 755 -297 782 -325 b 815 -367 805 -363 809 -367 z m 396 -360 b 408 -356 400 -360 403 -359 b 609 -223 471 -307 543 -269 b 896 -19 706 -156 795 -81 b 1164 154 985 37 1074 96 b 1214 223 1189 170 1211 187 b 1176 321 1204 253 1205 292 b 1159 330 1169 327 1165 330 b 1145 324 1155 330 1151 328 b 1048 258 1113 302 1081 278 b 357 -202 809 117 598 -65 b 333 -238 341 -212 333 -223 b 338 -262 333 -245 334 -253 b 384 -350 350 -294 372 -318 b 396 -360 386 -354 390 -360 z m 1162 -438 b 1174 -433 1166 -438 1169 -436 b 1374 -300 1237 -384 1309 -346 b 1660 -96 1470 -233 1561 -158 b 1930 76 1751 -39 1840 19 b 1979 147 1954 92 1977 109 b 1943 243 1968 177 1971 216 b 1924 253 1935 251 1930 253 b 1911 248 1920 253 1915 252 b 1814 181 1878 225 1848 202 b 1123 -279 1575 40 1364 -141 b 1099 -315 1106 -289 1099 -300 b 1103 -338 1099 -321 1100 -330 b 1149 -426 1115 -370 1138 -396 b 1162 -438 1151 -432 1156 -438 z m 1875 -295 b 1882 -291 1878 -295 1879 -294 b 1934 -189 1904 -258 1921 -223 b 1872 -96 1925 -147 1901 -120 b 1840 -78 1858 -84 1848 -78 b 1812 -109 1830 -78 1823 -88 l 1777 -173 b 1770 -199 1773 -181 1770 -190 b 1786 -230 1770 -210 1774 -220 b 1862 -289 1809 -253 1837 -269 b 1875 -295 1865 -292 1871 -295 z',\n },\n repeatBarSlash: {\n x_min: 0,\n x_max: 630,\n y_min: -225.19160170741762,\n y_max: 265.12618221237005,\n ha: 490.31778391978764,\n o: 'm 78 -324 b 92 -314 82 -325 88 -321 b 114 -298 96 -307 107 -302 b 638 49 289 -183 467 -72 b 873 215 716 104 792 161 b 907 279 894 229 906 248 b 887 344 901 298 897 321 b 852 382 877 369 867 380 b 814 363 842 383 829 376 b 135 -91 603 192 364 55 b 12 -177 92 -118 45 -137 b 0 -202 4 -186 0 -192 b 4 -217 0 -206 1 -212 b 63 -312 17 -253 42 -284 b 78 -324 68 -318 72 -323 z',\n },\n csymDiminished: {\n x_min: 0,\n x_max: 506,\n y_min: -0.011036179317259481,\n y_max: 500,\n ha: 500.0110361793173,\n o: 'm 397 0 b 729 265 576 -1 729 95 b 711 367 729 297 723 331 b 472 670 668 498 586 595 b 315 720 423 701 372 720 b 253 713 295 720 275 719 b 32 514 144 687 75 615 b 0 374 12 468 0 420 b 27 251 0 333 9 292 b 140 117 52 196 92 153 b 397 0 223 52 317 4 z m 340 95 b 132 314 233 84 122 216 b 324 589 145 438 200 539 b 415 611 360 603 389 611 b 544 505 469 611 505 576 b 590 392 564 471 583 432 b 596 343 593 374 596 359 b 340 95 596 210 485 96 z',\n },\n csymHalfDiminished: {\n x_min: -32,\n x_max: 496,\n y_min: -33,\n y_max: 492,\n ha: 525,\n o: 'm -29 -48 b 0 -36 -19 -48 -9 -40 b 17 -20 7 -32 12 -24 b 134 94 56 19 95 56 b 372 0 207 43 282 0 b 455 13 397 0 426 4 b 677 258 556 45 671 141 b 678 289 677 268 678 278 b 593 539 678 380 654 467 b 592 541 593 540 592 540 l 684 632 b 713 678 700 647 711 665 b 714 691 714 684 714 688 b 707 704 714 698 711 701 b 691 708 701 707 696 708 b 660 691 680 708 670 701 l 552 585 b 478 634 530 606 507 624 b 361 684 438 648 397 661 b 301 703 341 697 320 703 b 226 677 275 703 251 693 b 27 449 140 618 72 543 b 0 324 9 410 -4 370 b 88 128 -1 243 30 177 b -30 -7 43 86 0 46 b -46 -33 -35 -16 -46 -24 b -42 -42 -46 -36 -45 -39 b -29 -48 -37 -46 -33 -48 z m 141 179 b 121 251 128 200 121 225 b 128 297 121 265 124 281 b 351 575 163 420 248 505 b 377 582 359 579 369 580 b 501 536 422 586 468 567 b 141 179 382 416 261 298 z m 281 105 b 179 137 240 105 206 117 b 210 168 189 147 200 157 l 537 487 b 547 455 541 477 544 467 b 556 370 552 426 556 397 b 429 154 556 274 503 207 b 281 105 384 122 336 105 z',\n },\n csymAugmented: {\n x_min: 0,\n x_max: 530,\n y_min: 0,\n y_max: 539,\n ha: 539,\n o: 'm 380 0 b 393 14 384 4 390 9 b 397 46 397 24 397 36 l 397 333 b 736 327 511 331 624 330 b 763 343 755 327 763 333 b 755 361 763 348 760 354 b 635 431 726 402 688 431 l 390 431 l 390 485 b 386 606 392 526 386 566 b 392 664 386 625 387 645 b 395 690 393 672 395 681 b 376 753 395 711 389 734 b 357 776 372 762 369 776 b 350 775 354 776 353 776 b 327 740 337 769 327 759 b 327 621 328 700 327 661 b 330 438 328 559 328 498 l 29 438 b 4 431 20 438 7 442 b 0 413 3 425 0 419 b 7 399 0 408 1 403 b 131 338 45 369 85 340 b 331 334 199 336 265 334 b 333 163 333 276 333 220 b 366 13 333 109 348 63 b 380 0 367 7 374 4 z',\n },\n csymMajorSeventh: {\n x_min: 0,\n x_max: 593.1050509327923,\n y_min: 0,\n y_max: 569,\n ha: 569,\n o: 'm 124 1 l 497 27 b 819 50 605 35 711 43 b 854 98 847 52 855 63 b 812 200 845 128 835 166 b 564 585 730 328 648 456 b 435 786 521 652 480 720 b 397 819 419 809 408 819 b 369 792 387 819 379 811 b 7 173 248 585 128 379 b 0 150 3 166 0 158 b 7 128 0 143 3 135 b 89 10 30 86 65 50 b 109 0 95 1 102 0 z m 163 147 b 153 153 158 147 156 148 b 164 179 147 163 158 170 b 426 644 251 334 338 488 b 442 660 432 655 436 660 b 458 645 446 660 452 655 b 727 220 547 503 636 361 b 736 202 732 213 736 206 b 714 190 736 196 730 192 b 179 148 537 177 359 163 b 163 147 174 150 168 147 z',\n },\n csymMinor: {\n x_min: 0,\n x_max: 481.64484584675915,\n y_min: 193,\n y_max: 265.20435472429375,\n ha: 72.20435472429375,\n o: 'm 168 278 b 197 279 177 278 187 278 b 431 292 275 287 353 288 l 431 291 b 661 302 508 295 585 300 b 693 311 672 304 688 300 b 674 346 697 324 685 338 b 564 382 641 366 606 384 l 27 360 b 0 347 17 360 1 366 b 19 314 0 333 3 321 b 168 278 66 291 115 278 z',\n },\n csymParensLeftTall: {\n x_min: 0,\n x_max: 185,\n y_min: 0,\n y_max: 1034,\n ha: 1034,\n o: 'm 215 0 b 226 17 223 1 223 10 b 229 37 229 24 229 32 b 220 81 229 52 225 66 b 167 203 206 124 181 160 b 86 616 124 338 89 474 b 82 765 85 665 82 716 b 91 886 82 805 84 845 b 245 1319 120 1038 171 1184 b 266 1397 259 1346 266 1371 b 259 1443 266 1411 264 1427 b 226 1489 253 1463 248 1489 b 193 1454 212 1489 203 1467 b 114 1292 158 1404 140 1346 b 0 806 40 1138 0 978 b 3 721 0 779 0 750 b 1 677 1 707 1 693 b 36 418 1 593 16 504 b 144 96 62 307 95 199 b 196 12 158 66 179 39 b 212 0 200 7 204 0 z',\n },\n csymParensRightTall: {\n x_min: -40,\n x_max: 188.5411603861406,\n y_min: 0.20204102886728756,\n y_max: 1058,\n ha: 1057.7979589711326,\n o: 'm 30 1 b 63 14 42 -3 55 6 b 122 99 86 40 108 68 b 189 258 145 153 166 204 b 271 667 239 379 268 503 b 246 852 275 708 261 780 b 10 1495 197 1077 128 1295 b -14 1524 4 1505 1 1524 b -16 1522 -14 1524 -16 1524 b -46 1489 -33 1521 -43 1503 b -58 1417 -53 1464 -58 1440 b -36 1335 -58 1390 -52 1364 b 68 1138 0 1270 35 1204 b 163 883 108 1056 137 969 b 206 668 184 814 200 742 b 207 631 207 655 207 642 b 166 426 207 560 192 492 b 46 143 130 330 111 228 b 19 29 19 109 17 69 b 30 1 20 19 24 3 z',\n },\n csymBracketLeftTall: {\n x_min: 0,\n x_max: 328,\n y_min: 2,\n y_max: 807,\n ha: 805,\n o: 'm 68 3 b 76 4 71 3 73 3 b 186 13 112 12 150 13 b 240 13 204 13 222 13 l 287 13 b 379 17 317 13 348 13 b 472 121 435 24 472 69 b 467 156 472 132 469 144 b 446 174 462 168 456 174 l 439 174 b 327 166 402 167 364 166 b 265 167 307 166 285 167 l 209 167 b 187 475 199 269 189 372 b 166 985 186 645 187 815 l 377 1002 b 415 1001 389 1002 402 1001 b 456 1027 432 1001 448 1005 b 472 1096 467 1048 472 1073 b 464 1146 472 1113 469 1130 b 439 1162 459 1161 452 1162 b 40 1129 305 1151 173 1139 b 1 1093 17 1128 1 1120 b 0 1009 0 1064 0 1037 b 13 975 0 991 3 981 b 30 670 23 873 30 772 b 29 608 30 649 29 628 l 29 563 b 56 88 29 405 49 246 b 53 22 55 66 55 43 b 68 3 53 12 56 3 z',\n },\n csymBracketRightTall: {\n x_min: 0.8519422934604696,\n x_max: 306,\n y_min: -0.17180889215212544,\n y_max: 829.1037519824849,\n ha: 829.2755608746371,\n o: 'm 117 0 b 372 29 203 -3 287 20 l 373 29 b 406 32 383 30 395 30 b 436 60 428 33 432 43 b 441 109 439 76 441 92 b 433 200 441 140 436 170 b 409 696 422 366 409 530 b 416 887 409 763 416 831 b 415 920 416 899 415 910 l 415 1106 b 412 1135 415 1116 415 1126 l 412 1145 b 373 1189 413 1171 408 1192 b 321 1189 356 1189 338 1189 l 215 1189 l 215 1194 l 56 1194 b 6 1153 27 1195 10 1187 b 1 1064 3 1123 4 1093 b 22 1043 0 1050 6 1043 b 84 1044 42 1044 63 1044 b 264 1038 144 1044 203 1040 b 265 958 264 1011 265 985 b 262 845 265 920 264 883 b 259 710 259 801 259 755 b 279 243 259 554 271 399 b 285 170 281 219 284 194 b 95 151 222 161 158 156 b 29 81 27 147 27 147 l 29 73 b 105 0 33 0 33 0 z',\n },\n csymParensLeftVeryTall: {\n x_min: 0,\n x_max: 116,\n y_min: 0,\n y_max: 934.1531437146923,\n ha: 934.1531437146923,\n o: 'm 128 0 b 147 17 137 0 144 9 b 167 102 160 45 167 73 b 158 154 167 120 164 137 b 117 307 141 204 130 256 b 63 698 84 435 71 567 b 62 788 62 729 62 757 b 69 916 62 829 63 873 b 109 1172 81 1001 94 1087 b 132 1320 118 1221 137 1269 b 124 1345 131 1329 134 1342 b 96 1332 114 1346 102 1341 b 71 1269 82 1313 75 1292 b 39 1104 59 1214 48 1159 b 0 742 19 988 0 871 b 10 559 3 688 6 624 b 58 226 16 446 33 336 b 112 20 73 157 94 89 b 128 0 115 13 118 0 z',\n },\n csymParensRightVeryTall: {\n x_min: -20,\n x_max: 111.4332498248095,\n y_min: -0.07657185734616112,\n y_max: 1009,\n ha: 1009.0765718573462,\n o: 'm -3 0 b 20 22 9 -1 14 12 b 36 56 26 33 32 45 b 99 274 58 128 84 199 b 160 788 135 439 163 605 b 122 1181 164 912 145 1047 b 50 1431 108 1267 86 1351 b 36 1453 48 1439 46 1453 l 35 1453 l 30 1453 b 7 1423 17 1449 7 1440 b 27 1287 9 1377 10 1331 b 96 963 71 1184 85 1074 b 105 818 102 914 105 867 b 91 624 105 753 99 688 b -4 213 72 484 48 344 b -29 101 -19 174 -29 138 b -16 27 -29 76 -24 52 b -3 0 -13 17 -14 3 z',\n },\n csymDiagonalArrangementSlash: {\n x_min: -0.19862981551275186,\n x_max: 990,\n y_min: -26.946823529189132,\n y_max: 1027.5514326488437,\n ha: 1054.4982561780328,\n o: 'm 14 -37 b 58 -9 35 -45 46 -22 b 392 333 170 105 279 217 l 765 711 b 1372 1329 968 916 1168 1125 b 1424 1439 1403 1359 1417 1397 b 1426 1457 1424 1444 1426 1450 b 1416 1477 1426 1466 1423 1475 b 1374 1462 1400 1485 1385 1473 b 1181 1269 1309 1397 1246 1331 b 736 831 1031 1122 884 979 b 356 452 609 704 485 576 b 32 132 246 347 143 236 b 0 50 7 109 1 84 b 6 9 -1 37 3 23 b 14 -37 10 -9 0 -32 z',\n },\n accidentalNarrowReversedFlat: {\n x_min: 0,\n x_max: 208,\n y_min: -231,\n y_max: 449,\n ha: 680,\n o: 'm 272 -333 b 284 -320 278 -333 281 -328 b 300 -174 297 -272 300 -222 b 275 190 298 -52 279 68 b 268 445 272 275 268 360 l 268 490 b 264 612 269 530 265 572 b 236 647 264 632 252 645 l 235 647 b 217 618 220 647 220 628 b 207 526 210 588 207 556 b 210 432 207 494 210 464 b 216 268 213 377 215 323 l 216 230 l 215 232 b 154 256 194 240 174 251 b 111 264 138 261 124 264 b 3 153 50 264 10 223 b 0 94 0 132 0 114 b 194 -276 0 -63 68 -186 b 255 -323 215 -291 236 -307 b 272 -333 262 -330 268 -333 z m 233 -138 b 71 30 168 -92 105 -45 b 63 59 65 42 63 50 b 96 95 62 75 73 86 b 130 102 108 99 120 102 b 215 76 160 102 187 88 l 220 73 b 225 -22 220 42 222 10 b 233 -138 229 -62 230 -101 z',\n },\n accidentalNarrowReversedFlatAndFlat: {\n x_min: 0,\n x_max: 335,\n y_min: -231,\n y_max: 449,\n ha: 680,\n o: 'm 151 490 b 148 612 151 530 150 572 b 132 647 148 632 141 645 b 122 618 124 647 124 628 b 117 526 118 588 117 556 b 118 432 117 494 118 464 b 121 268 120 377 121 323 l 121 232 b 86 256 109 240 98 251 b 62 264 78 261 69 264 b 1 153 29 264 6 223 b 0 94 0 132 0 114 b 109 -276 0 -63 37 -186 b 144 -323 121 -291 132 -307 b 153 -333 147 -330 151 -333 b 160 -320 157 -333 158 -328 b 168 -174 167 -272 168 -222 b 154 190 168 -52 157 68 b 151 445 153 275 151 360 z m 480 153 b 372 264 472 223 432 264 b 328 256 359 264 344 261 b 268 232 308 251 288 240 l 266 230 l 266 268 b 272 432 266 323 269 377 b 275 526 272 464 275 494 b 265 618 275 556 272 588 b 248 647 262 628 262 647 l 246 647 b 219 612 230 645 219 632 b 215 490 217 572 213 530 l 215 445 b 207 190 215 360 210 275 b 183 -174 203 68 183 -52 b 199 -320 183 -222 186 -272 b 210 -333 202 -328 204 -333 b 228 -323 215 -333 220 -330 b 288 -276 246 -307 268 -291 b 482 94 415 -186 482 -63 b 480 153 482 114 482 132 z m 40 30 b 36 59 36 42 36 50 b 55 95 35 75 42 86 b 73 102 60 99 68 102 b 121 76 89 102 105 88 l 124 73 b 127 -22 124 42 125 10 l 131 -138 b 40 30 95 -92 60 -43 z m 419 59 b 412 30 419 50 418 42 b 249 -138 374 -43 314 -92 b 258 -22 252 -101 253 -62 b 262 73 261 10 262 42 l 268 76 b 353 102 295 88 323 102 b 386 95 363 102 374 99 b 419 59 409 86 420 75 z',\n },\n accidentalWilsonPlus: {\n x_min: 0,\n x_max: 298,\n y_min: -218,\n y_max: 218,\n ha: 436,\n o: 'm 232 -314 b 236 -301 236 -310 236 -305 l 236 -295 b 243 -52 239 -213 242 -132 l 369 62 b 429 200 413 101 425 147 b 416 243 429 216 428 236 b 383 225 406 251 393 232 l 377 220 b 246 98 336 177 291 138 b 249 242 248 145 246 193 b 225 304 251 265 242 287 b 209 314 220 308 215 314 b 204 312 207 314 206 312 b 196 292 196 310 196 300 b 193 184 194 256 194 220 b 187 48 192 140 190 94 b 46 -72 141 7 94 -32 b 0 -163 13 -98 0 -127 b 1 -187 0 -170 0 -179 b 10 -235 4 -203 6 -219 b 20 -255 12 -242 14 -251 b 36 -245 26 -259 30 -249 b 181 -109 85 -200 132 -154 b 176 -258 180 -158 176 -209 b 232 -314 176 -298 186 -307 z',\n },\n accidentalWilsonMinus: {\n x_min: 0,\n x_max: 284.2093390143919,\n y_min: -163,\n y_max: 163,\n ha: 326,\n o: 'm 386 -232 b 409 -163 415 -222 408 -180 b 382 -69 410 -120 408 -89 b 32 228 264 30 141 118 b 17 235 26 233 22 235 b 3 219 9 235 3 228 b 0 157 3 199 0 179 b 29 69 0 125 6 95 b 323 -194 115 -29 222 -111 b 374 -235 338 -206 353 -235 b 386 -232 377 -235 382 -233 z',\n },\n },\n fontFamily: 'Petaluma',\n resolution: 1000,\n generatedOn: '2022-06-26T17:47:23.560Z',\n};\n","/**\n * The Petaluma font was created by Steinberg Media.\n * https://github.com/steinbergmedia/petaluma\n */\nexport const PetalumaMetrics = {\n name: 'Petaluma',\n smufl: true,\n stave: {\n padding: 15,\n endPaddingMax: 15,\n endPaddingMin: 7,\n unalignedNotePadding: 12,\n },\n accidental: {\n noteheadAccidentalPadding: 1,\n leftPadding: 2,\n accidentalSpacing: 3,\n },\n clef: {\n default: {\n point: 32,\n width: 26,\n },\n small: {\n point: 26,\n width: 20,\n },\n annotations: {\n '8va': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: -1.4,\n shiftX: 12,\n },\n },\n small: {\n point: 16,\n treble: {\n line: -0.2,\n shiftX: 8,\n },\n },\n },\n '8vb': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: 6,\n shiftX: 10,\n },\n bass: {\n line: 3.5,\n shiftX: 1,\n },\n },\n small: {\n point: 16,\n treble: {\n line: 5.3,\n shiftX: 6,\n },\n bass: {\n line: 3.1,\n shiftX: 0.5,\n },\n },\n },\n },\n // These may no longer be necessary\n lineCount: {\n '8': { point: 55, shiftY: 14 },\n '7': { point: 47, shiftY: 8 },\n '6': { point: 32, shiftY: 1 },\n '5': { point: 30, shiftY: -6 },\n '4': { point: 23, shiftY: -12 },\n },\n },\n parenthesis: {\n default: {\n point: 39,\n width: 7,\n },\n gracenote: {\n point: (39 * 3) / 5,\n width: 3,\n },\n },\n pedalMarking: {\n up: {\n point: 40,\n },\n down: {\n point: 34,\n },\n },\n // These are for numeric digits, such as in time signatures\n digits: {\n // used by timesig\n shiftLine: -1,\n point: 22,\n // used by tuplets\n tupletPoint: 16,\n shiftY: -2,\n },\n articulation: {\n articStaccatissimoAbove: {\n padding: 2,\n },\n articStaccatissimoBelow: {\n padding: 2,\n },\n },\n tremolo: {\n default: {\n point: 25,\n spacing: 5,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 13,\n offsetXStemDown: 1,\n },\n grace: {\n point: 18,\n spacing: 4,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 8,\n offsetXStemDown: 1,\n },\n },\n staveRepetition: {\n symbolText: {\n offsetX: 12,\n offsetY: 25,\n spacing: 5,\n },\n coda: {\n offsetY: 25,\n },\n segno: {\n offsetY: 10,\n },\n },\n noteHead: {\n displaced: {\n shiftX: -2,\n },\n },\n stem: {\n heightAdjustmentForFlag: -3,\n // These are stem (Y) offsets to the note heads. To shift the\n // noteheads (x-position) themselves, see glyphs.notehead.custom.\n noteHead: {\n noteheadTriangleUpHalf: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpBlack: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpWhole: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadXHalf: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXBlack: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXWhole: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadHalf: {\n offsetYBaseStemDown: 1.8,\n offsetYBaseStemUp: -1.8,\n },\n noteheadBlack: {\n offsetYBaseStemDown: 2,\n offsetYBaseStemUp: -2,\n },\n noteheadSquareWhite: {\n offsetYBaseStemDown: -5,\n offsetYBaseStemUp: 5,\n },\n },\n },\n // Values under here are used by the Glyph class to reposition and rescale\n // glyphs based on their category. This should be the first stop for\n // custom font glyph repositioning.\n //\n // The glyph loader first looks up a specific set of settings based on the\n // glyph code, and if not found, uses the defaults from the category. See\n // glyphs.textNote for an example of this.\n //\n // Details in Glyph.lookupFontMetrics.\n glyphs: {\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n segno: {\n shiftX: -7,\n },\n flag: {\n shiftX: -0.77,\n flag16thUp: {\n shiftX: -0.75,\n },\n flag32ndUp: {\n shiftX: -0.85,\n },\n flag64thUp: {\n shiftX: -1.55,\n },\n flag128thUp: {\n shiftX: -1.3,\n },\n flag16thDown: {\n shiftX: -0.75,\n },\n flag32ndDown: {\n shiftX: -0.76,\n },\n flag64thDown: {\n shiftX: -1.5,\n },\n flag128thDown: {\n shiftX: -1.2,\n },\n staveTempo: {\n shiftX: -1,\n },\n },\n clef: {\n gClef: {\n default: { scale: 1.1, shiftY: 1 },\n small: { shiftY: 1.5 },\n },\n fClef: {\n default: { shiftY: -0.5 },\n },\n },\n ornament: {\n ornamentTurn: {\n scale: 1.2,\n },\n ornamentTurnSlash: {\n scale: 1.2,\n },\n },\n stringNumber: {\n verticalPadding: 8,\n stemPadding: 2,\n leftPadding: 5,\n rightPadding: 6,\n },\n stroke: {\n arrowheadBlackDown: {\n straight: {\n shiftX: -4.5,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n arrowheadBlackUp: {\n straight: {\n shiftX: -0.85,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n },\n textNote: {\n point: 34,\n breathMarkTick: {\n point: 36,\n shiftY: 9,\n },\n breathMarkComma: {\n point: 36,\n },\n segno: {\n point: 30,\n shiftX: -7,\n shiftY: 8,\n },\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n ornamentTrill: {\n shiftX: -10,\n shiftY: 8,\n },\n ornamentMordent: {\n shiftX: -8,\n },\n ornamentShortTrill: {\n shiftX: -8,\n },\n },\n noteHead: {\n minPadding: 2,\n standard: {\n noteheadBlackStemUp: {\n shiftX: 0.5,\n },\n noteheadHalfStemUp: {\n shiftX: 0.725,\n },\n noteheadWholeStemUp: {\n shiftX: 1,\n },\n },\n custom: {\n noteheadCircleXStemUp: {\n shiftX: -1,\n },\n noteheadCircleXStemDown: {\n shiftX: 0.25,\n },\n noteheadDiamondHalfStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondBlackStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondWholeStemUp: {\n shiftX: 1,\n },\n noteheadXBlackStemUp: {\n shiftX: 1,\n },\n noteheadXHalfStemUp: {\n shiftX: -3,\n },\n noteheadXHalfStemDown: {\n shiftX: 1,\n },\n noteheadXWholeStemUp: {\n shiftX: -7,\n },\n noteheadXWholeStemDown: {\n shiftX: 1,\n },\n noteheadXDoubleWholeStemUp: {\n shiftX: -12,\n },\n noteheadXDoubleWholeStemDown: {\n shiftX: -4,\n },\n noteheadSquareWhiteStemDown: {\n shiftX: 0.25,\n },\n noteheadSquareWhiteStemUp: {\n shiftX: -0.75,\n },\n noteheadSquareBlackStemUp: {\n shiftX: -0.75,\n },\n noteheadTriangleUpWholeStemUp: {\n shiftX: -0.75,\n },\n },\n },\n chordSymbol: {\n global: {\n superscriptOffset: -400,\n subscriptOffset: 300,\n kerningOffset: -150,\n lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'],\n upperKerningText: ['L'],\n spacing: 20,\n superSubRatio: 0.73,\n },\n csymDiminished: {\n scale: 0.8,\n leftSideBearing: -95,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymHalfDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymAugmented: {\n scale: 1,\n leftSideBearing: -25,\n advanceWidth: 530,\n yOffset: 0,\n },\n csymParensLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 155,\n yOffset: 150,\n },\n csymParensRightTall: {\n scale: 0.8,\n leftSideBearing: 40,\n advanceWidth: 189,\n yOffset: 150,\n },\n csymBracketLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 328,\n yOffset: 0,\n },\n csymBracketRightTall: {\n scale: 0.8,\n leftSideBearing: 1,\n advanceWidth: 600,\n yOffset: 0,\n },\n csymParensLeftVeryTall: {\n scale: 0.95,\n leftSideBearing: 0,\n advanceWidth: 210,\n yOffset: 250,\n },\n csymParensRightVeryTall: {\n scale: 0.9,\n leftSideBearing: -100,\n advanceWidth: 111,\n yOffset: 250,\n },\n csymDiagonalArrangementSlash: {\n scale: 0.6,\n leftSideBearing: -1,\n advanceWidth: 990,\n yOffset: 0,\n },\n csymMinor: {\n scale: 0.7,\n leftSideBearing: 0,\n advanceWidth: 482,\n yOffset: 0,\n },\n csymMajorSeventh: {\n scale: 0.8,\n leftSideBearing: 100,\n yOffset: 0,\n advanceWidth: 600,\n },\n accidentalSharp: {\n scale: 0.7,\n leftSideBearing: 0,\n advanceWidth: 425,\n yOffset: -422,\n },\n accidentalFlat: {\n scale: 0.8,\n leftSideBearing: -10,\n advanceWidth: 228,\n yOffset: -284,\n },\n },\n jazzOrnaments: {\n brassScoop: {\n scale: 1.0,\n xOffset: -12,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassDoitMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 19,\n },\n brassFallLipShort: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 19,\n },\n brassLiftMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 5,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassFallRoughMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 26,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassBend: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -8,\n stemUpYOffset: 28,\n reportedWidth: 5,\n },\n brassMuteClosed: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -8,\n stemUpYOffset: 26,\n reportedWidth: 5,\n },\n brassMuteOpen: {\n scale: 1.0,\n xOffset: 4,\n yOffset: -8,\n stemUpYOffset: 27,\n reportedWidth: 5,\n },\n brassFlip: {\n scale: 1.0,\n xOffset: 10,\n yOffset: -4,\n stemUpYOffset: 7,\n reportedWidth: 5,\n },\n brassJazzTurn: {\n scale: 1.0,\n xOffset: 6,\n yOffset: -4,\n stemUpYOffset: 5,\n reportedWidth: 30,\n },\n brassSmear: {\n scale: 1.0,\n xOffset: 10,\n yOffset: -4,\n stemUpYOffset: 5,\n reportedWidth: 5,\n },\n },\n tuplet: {\n noteHeadOffset: 20,\n stemOffset: 10,\n bottomLine: 4,\n topModifierOffset: 20,\n },\n },\n};\n","export const PetalumaScriptFont = {\n spacing: 50,\n glyphs: {\n ' ': {\n x_min: 0,\n x_max: 250,\n y_min: 0,\n y_max: 500,\n ha: 500,\n leftSideBearing: 0,\n advanceWidth: 250,\n },\n '0': {\n x_min: 33,\n x_max: 534,\n y_min: -13,\n y_max: 751,\n ha: 764,\n leftSideBearing: 33,\n advanceWidth: 570,\n },\n '1': {\n x_min: 48,\n x_max: 235,\n y_min: -17,\n y_max: 734,\n ha: 751,\n leftSideBearing: 48,\n advanceWidth: 286,\n },\n '2': {\n x_min: 56,\n x_max: 571,\n y_min: -19,\n y_max: 741,\n ha: 760,\n leftSideBearing: 56,\n advanceWidth: 626,\n },\n '3': {\n x_min: 50,\n x_max: 528,\n y_min: -7,\n y_max: 731,\n ha: 738,\n leftSideBearing: 50,\n advanceWidth: 589,\n },\n '4': {\n x_min: 38,\n x_max: 564,\n y_min: -13,\n y_max: 743,\n ha: 756,\n leftSideBearing: 38,\n advanceWidth: 614,\n },\n '5': {\n x_min: 42,\n x_max: 601,\n y_min: -34,\n y_max: 743,\n ha: 777,\n leftSideBearing: 42,\n advanceWidth: 648,\n },\n '6': {\n x_min: 47,\n x_max: 606,\n y_min: -16,\n y_max: 743,\n ha: 759,\n leftSideBearing: 47,\n advanceWidth: 667,\n },\n '7': {\n x_min: 47,\n x_max: 567,\n y_min: 5,\n y_max: 739,\n ha: 734,\n leftSideBearing: 0,\n advanceWidth: 615,\n },\n '8': {\n x_min: 40,\n x_max: 541,\n y_min: -15,\n y_max: 752,\n ha: 767,\n leftSideBearing: 40,\n advanceWidth: 585,\n },\n '9': {\n x_min: 40,\n x_max: 537,\n y_min: -52,\n y_max: 736,\n ha: 788,\n leftSideBearing: 40,\n advanceWidth: 592,\n },\n '!': {\n x_min: 49,\n x_max: 180,\n y_min: -7,\n y_max: 761,\n ha: 768,\n leftSideBearing: 49,\n advanceWidth: 230,\n },\n '\"': {\n x_min: 39,\n x_max: 304,\n y_min: 596,\n y_max: 804,\n ha: 208,\n leftSideBearing: 39,\n advanceWidth: 353,\n },\n '#': {\n x_min: 33,\n x_max: 599,\n y_min: -8,\n y_max: 765,\n ha: 773,\n leftSideBearing: 33,\n advanceWidth: 648,\n },\n $: {\n x_min: 53,\n x_max: 495,\n y_min: -111,\n y_max: 823,\n ha: 934,\n leftSideBearing: 53,\n advanceWidth: 560,\n },\n '%': {\n x_min: 35,\n x_max: 656,\n y_min: -128,\n y_max: 808,\n ha: 936,\n leftSideBearing: 35,\n advanceWidth: 711,\n },\n '&': {\n x_min: 53,\n x_max: 441,\n y_min: -3,\n y_max: 753,\n ha: 756,\n leftSideBearing: 53,\n advanceWidth: 500,\n },\n \"'\": {\n x_min: 43,\n x_max: 161,\n y_min: 590,\n y_max: 811,\n ha: 221,\n leftSideBearing: 43,\n advanceWidth: 217,\n },\n '(': {\n x_min: 41,\n x_max: 311,\n y_min: -36,\n y_max: 845,\n ha: 881,\n leftSideBearing: 41,\n advanceWidth: 308,\n },\n ')': {\n x_min: -8,\n x_max: 257,\n y_min: -21,\n y_max: 852,\n ha: 873,\n leftSideBearing: -8,\n advanceWidth: 280,\n },\n '*': {\n x_min: 59,\n x_max: 539,\n y_min: 175,\n y_max: 589,\n ha: 414,\n leftSideBearing: 59,\n advanceWidth: 601,\n },\n '+': {\n x_min: 33,\n x_max: 361,\n y_min: 180,\n y_max: 587,\n ha: 407,\n leftSideBearing: 33,\n advanceWidth: 400,\n },\n ',': {\n x_min: 15,\n x_max: 176,\n y_min: -129,\n y_max: 92,\n ha: 221,\n leftSideBearing: 15,\n advanceWidth: 205,\n },\n '-': {\n x_min: 40,\n x_max: 380,\n y_min: 317,\n y_max: 452,\n ha: 135,\n leftSideBearing: 40,\n advanceWidth: 422,\n },\n '.': {\n x_min: 48,\n x_max: 185,\n y_min: -56,\n y_max: 84,\n ha: 140,\n leftSideBearing: 48,\n advanceWidth: 227,\n },\n '/': {\n x_min: -58,\n x_max: 654,\n y_min: -122,\n y_max: 844,\n ha: 966,\n leftSideBearing: -58,\n advanceWidth: 626,\n },\n ':': {\n x_min: 65,\n x_max: 225,\n y_min: 97,\n y_max: 536,\n ha: 439,\n leftSideBearing: 65,\n advanceWidth: 302,\n },\n ';': {\n x_min: 13,\n x_max: 295,\n y_min: -139,\n y_max: 536,\n ha: 675,\n leftSideBearing: 13,\n advanceWidth: 334,\n },\n '<': {\n x_min: 28,\n x_max: 438,\n y_min: -1,\n y_max: 607,\n ha: 608,\n leftSideBearing: 28,\n advanceWidth: 475,\n },\n '=': {\n x_min: 40,\n x_max: 383,\n y_min: 199.9598640852289,\n y_max: 541,\n ha: 341.0401359147711,\n leftSideBearing: 40,\n advanceWidth: 422,\n },\n '>': {\n x_min: 35,\n x_max: 421,\n y_min: 28,\n y_max: 632,\n ha: 604,\n leftSideBearing: 35,\n advanceWidth: 466,\n },\n '?': {\n x_min: 45,\n x_max: 548,\n y_min: -17,\n y_max: 767,\n ha: 784,\n leftSideBearing: 45,\n advanceWidth: 592,\n },\n '@': {\n x_min: 51,\n x_max: 730,\n y_min: -78,\n y_max: 753,\n ha: 831,\n leftSideBearing: 51,\n advanceWidth: 781,\n },\n A: {\n x_min: 37,\n x_max: 554,\n y_min: -4,\n y_max: 746,\n ha: 750,\n leftSideBearing: 37,\n advanceWidth: 617,\n },\n B: {\n x_min: 37,\n x_max: 532,\n y_min: 3,\n y_max: 783,\n ha: 780,\n leftSideBearing: 37,\n advanceWidth: 579,\n },\n C: {\n x_min: 37,\n x_max: 583,\n y_min: -3,\n y_max: 775,\n ha: 778,\n leftSideBearing: 37,\n advanceWidth: 623,\n },\n D: {\n x_min: 50,\n x_max: 530,\n y_min: -15,\n y_max: 749,\n ha: 764,\n leftSideBearing: 50,\n advanceWidth: 579,\n },\n E: {\n x_min: 45,\n x_max: 531,\n y_min: -1,\n y_max: 743,\n ha: 744,\n leftSideBearing: 45,\n advanceWidth: 585,\n },\n F: {\n x_min: 45,\n x_max: 459,\n y_min: 23,\n y_max: 727,\n ha: 704,\n leftSideBearing: 45,\n advanceWidth: 510,\n },\n G: {\n x_min: 31,\n x_max: 577,\n y_min: -8,\n y_max: 733,\n ha: 741,\n leftSideBearing: 31,\n advanceWidth: 611,\n },\n H: {\n x_min: 37,\n x_max: 493,\n y_min: -22,\n y_max: 758,\n ha: 780,\n leftSideBearing: 37,\n advanceWidth: 535,\n },\n I: {\n x_min: 47,\n x_max: 501,\n y_min: -3,\n y_max: 731,\n ha: 734,\n leftSideBearing: 47,\n advanceWidth: 541,\n },\n J: {\n x_min: 33,\n x_max: 531,\n y_min: -23,\n y_max: 725,\n ha: 748,\n leftSideBearing: 33,\n advanceWidth: 573,\n },\n K: {\n x_min: 43,\n x_max: 505,\n y_min: -10,\n y_max: 740,\n ha: 750,\n leftSideBearing: 43,\n advanceWidth: 560,\n },\n L: {\n x_min: 49,\n x_max: 457,\n y_min: -2,\n y_max: 746,\n ha: 748,\n leftSideBearing: 49,\n advanceWidth: 510,\n },\n M: {\n x_min: 35,\n x_max: 699,\n y_min: 1,\n y_max: 744,\n ha: 743,\n leftSideBearing: 35,\n advanceWidth: 743,\n },\n N: {\n x_min: 34,\n x_max: 533,\n y_min: -17,\n y_max: 761,\n ha: 778,\n leftSideBearing: 34,\n advanceWidth: 579,\n },\n O: {\n x_min: 41,\n x_max: 608,\n y_min: -5,\n y_max: 735,\n ha: 740,\n leftSideBearing: 41,\n advanceWidth: 667,\n },\n P: {\n x_min: 53,\n x_max: 451,\n y_min: -18,\n y_max: 735,\n ha: 753,\n leftSideBearing: 53,\n advanceWidth: 497,\n },\n Q: {\n x_min: 40,\n x_max: 599,\n y_min: -67,\n y_max: 744,\n ha: 811,\n leftSideBearing: 40,\n advanceWidth: 648,\n },\n R: {\n x_min: 39,\n x_max: 487,\n y_min: 16,\n y_max: 735,\n ha: 719,\n leftSideBearing: 39,\n advanceWidth: 535,\n },\n S: {\n x_min: 35,\n x_max: 552,\n y_min: -47,\n y_max: 708,\n ha: 755,\n leftSideBearing: 35,\n advanceWidth: 604,\n },\n T: {\n x_min: 26,\n x_max: 656,\n y_min: -13,\n y_max: 718,\n ha: 731,\n leftSideBearing: 26,\n advanceWidth: 705,\n },\n U: {\n x_min: 41,\n x_max: 518,\n y_min: -20,\n y_max: 748,\n ha: 768,\n leftSideBearing: 41,\n advanceWidth: 567,\n },\n V: {\n x_min: 47,\n x_max: 509,\n y_min: -26,\n y_max: 744,\n ha: 770,\n leftSideBearing: 47,\n advanceWidth: 567,\n },\n W: {\n x_min: 44,\n x_max: 789,\n y_min: -35,\n y_max: 720,\n ha: 755,\n leftSideBearing: 44,\n advanceWidth: 833,\n },\n X: {\n x_min: 63,\n x_max: 635,\n y_min: -10,\n y_max: 745,\n ha: 755,\n leftSideBearing: 63,\n advanceWidth: 680,\n },\n Y: {\n x_min: 43,\n x_max: 503,\n y_min: -21,\n y_max: 734,\n ha: 755,\n leftSideBearing: 43,\n advanceWidth: 541,\n },\n Z: {\n x_min: 42,\n x_max: 584,\n y_min: -10,\n y_max: 739,\n ha: 749,\n leftSideBearing: 42,\n advanceWidth: 629,\n },\n '[': {\n x_min: 46,\n x_max: 346,\n y_min: -150,\n y_max: 884,\n ha: 1034,\n leftSideBearing: 46,\n advanceWidth: 291,\n },\n '\\\\': {\n x_min: 20,\n x_max: 616,\n y_min: -100,\n y_max: 797,\n ha: 897,\n leftSideBearing: 20,\n advanceWidth: 645,\n },\n ']': {\n x_min: -76,\n x_max: 226,\n y_min: -150,\n y_max: 881,\n ha: 1031,\n leftSideBearing: -76,\n advanceWidth: 297,\n },\n '^': {\n x_min: 43,\n x_max: 437,\n y_min: 517,\n y_max: 812,\n ha: 295,\n leftSideBearing: 43,\n advanceWidth: 478,\n },\n _: {\n x_min: 29,\n x_max: 563,\n y_min: -110,\n y_max: -1,\n ha: 109,\n leftSideBearing: 29,\n advanceWidth: 598,\n },\n '`': {\n x_min: 54,\n x_max: 321,\n y_min: 540,\n y_max: 747,\n ha: 207,\n leftSideBearing: 54,\n advanceWidth: 368,\n },\n a: {\n x_min: 20,\n x_max: 447,\n y_min: -17,\n y_max: 495,\n ha: 512,\n leftSideBearing: 20,\n advanceWidth: 494,\n },\n b: {\n x_min: 37,\n x_max: 466,\n y_min: -27,\n y_max: 770,\n ha: 797,\n leftSideBearing: 37,\n advanceWidth: 510,\n },\n c: {\n x_min: 35,\n x_max: 456,\n y_min: -9,\n y_max: 507,\n ha: 516,\n leftSideBearing: 35,\n advanceWidth: 460,\n },\n d: {\n x_min: 45,\n x_max: 520,\n y_min: -15,\n y_max: 764,\n ha: 779,\n leftSideBearing: 45,\n advanceWidth: 560,\n },\n e: {\n x_min: 33,\n x_max: 370,\n y_min: -5,\n y_max: 501,\n ha: 506,\n leftSideBearing: 33,\n advanceWidth: 397,\n },\n f: {\n x_min: 35,\n x_max: 411,\n y_min: -13,\n y_max: 695,\n ha: 708,\n leftSideBearing: 35,\n advanceWidth: 453,\n },\n g: {\n x_min: 33,\n x_max: 551,\n y_min: -257,\n y_max: 505,\n ha: 762,\n leftSideBearing: 33,\n advanceWidth: 611,\n },\n h: {\n x_min: 32,\n x_max: 458,\n y_min: -29,\n y_max: 743,\n ha: 772,\n leftSideBearing: 32,\n advanceWidth: 491,\n },\n i: {\n x_min: 45,\n x_max: 167,\n y_min: -13,\n y_max: 631,\n ha: 644,\n leftSideBearing: 45,\n advanceWidth: 220,\n },\n j: {\n x_min: -127,\n x_max: 261,\n y_min: -231,\n y_max: 601,\n ha: 832,\n leftSideBearing: -127,\n advanceWidth: 308,\n },\n k: {\n x_min: 39,\n x_max: 443,\n y_min: -3,\n y_max: 700,\n ha: 703,\n leftSideBearing: 39,\n advanceWidth: 497,\n },\n l: {\n x_min: 58,\n x_max: 168,\n y_min: -8,\n y_max: 686,\n ha: 694,\n leftSideBearing: 58,\n advanceWidth: 227,\n },\n m: {\n x_min: 39,\n x_max: 688,\n y_min: -14,\n y_max: 501,\n ha: 515,\n leftSideBearing: 39,\n advanceWidth: 718,\n },\n n: {\n x_min: 45,\n x_max: 491,\n y_min: -32,\n y_max: 512,\n ha: 544,\n leftSideBearing: 45,\n advanceWidth: 541,\n },\n o: {\n x_min: 41,\n x_max: 424,\n y_min: -12,\n y_max: 493,\n ha: 505,\n leftSideBearing: 41,\n advanceWidth: 447,\n },\n p: {\n x_min: 25,\n x_max: 529,\n y_min: -260,\n y_max: 500,\n ha: 760,\n leftSideBearing: 25,\n advanceWidth: 573,\n },\n q: {\n x_min: 53,\n x_max: 603,\n y_min: -235,\n y_max: 514,\n ha: 749,\n leftSideBearing: 53,\n advanceWidth: 623,\n },\n r: {\n x_min: 32,\n x_max: 407,\n y_min: -7,\n y_max: 492,\n ha: 499,\n leftSideBearing: 32,\n advanceWidth: 460,\n },\n s: {\n x_min: 49,\n x_max: 416,\n y_min: -12,\n y_max: 519,\n ha: 531,\n leftSideBearing: 49,\n advanceWidth: 460,\n },\n t: {\n x_min: 32,\n x_max: 442,\n y_min: -5,\n y_max: 684,\n ha: 689,\n leftSideBearing: 32,\n advanceWidth: 469,\n },\n u: {\n x_min: 41,\n x_max: 487,\n y_min: -5,\n y_max: 507,\n ha: 512,\n leftSideBearing: 41,\n advanceWidth: 510,\n },\n v: {\n x_min: 16,\n x_max: 441,\n y_min: -20,\n y_max: 542,\n ha: 562,\n leftSideBearing: 16,\n advanceWidth: 456,\n },\n w: {\n x_min: 39,\n x_max: 639,\n y_min: -22,\n y_max: 505,\n ha: 527,\n leftSideBearing: 39,\n advanceWidth: 661,\n },\n x: {\n x_min: 15,\n x_max: 505,\n y_min: -39,\n y_max: 539,\n ha: 578,\n leftSideBearing: 15,\n advanceWidth: 541,\n },\n y: {\n x_min: -98,\n x_max: 501,\n y_min: -242,\n y_max: 511,\n ha: 753,\n leftSideBearing: -98,\n advanceWidth: 548,\n },\n z: {\n x_min: 27,\n x_max: 479,\n y_min: -3,\n y_max: 494,\n ha: 497,\n leftSideBearing: 27,\n advanceWidth: 494,\n },\n '{': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '|': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '}': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '~': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n },\n fontFamily: 'PetalumaScript',\n resolution: 1000,\n generatedOn: '2020-06-14T18:33:25.407Z',\n};\n","export const RobotoSlabFont = {\n spacing: 50,\n glyphs: {\n ' ': {\n x_min: 0,\n x_max: 509,\n y_min: 0,\n y_max: 2000,\n ha: 2000,\n leftSideBearing: 0,\n advanceWidth: 509,\n },\n '0': {\n x_min: 121,\n x_max: 1048,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 121,\n advanceWidth: 1168,\n },\n '1': {\n x_min: 117,\n x_max: 767,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 117,\n advanceWidth: 844,\n },\n '2': {\n x_min: 75.8474576645637,\n x_max: 1040,\n y_min: 0,\n y_max: 1477,\n ha: 1477,\n leftSideBearing: 75,\n advanceWidth: 1131,\n },\n '3': {\n x_min: 74.85365853658536,\n x_max: 994,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 74,\n advanceWidth: 1106,\n },\n '4': {\n x_min: 63,\n x_max: 1114,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 63,\n advanceWidth: 1187,\n },\n '5': {\n x_min: 96.8448275474953,\n x_max: 982,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 96,\n advanceWidth: 1081,\n },\n '6': {\n x_min: 121,\n x_max: 1067,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 121,\n advanceWidth: 1144,\n },\n '7': {\n x_min: 76,\n x_max: 1060,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: -30,\n advanceWidth: 1128,\n },\n '8': {\n x_min: 92,\n x_max: 1039,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 92,\n advanceWidth: 1131,\n },\n '9': {\n x_min: 84,\n x_max: 1026,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 84,\n advanceWidth: 1154,\n },\n '!': {\n x_min: 143,\n x_max: 340,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 143,\n advanceWidth: 483,\n },\n '\"': {\n x_min: 166,\n x_max: 634,\n y_min: 1055,\n y_max: 1560,\n ha: 505,\n leftSideBearing: 166,\n advanceWidth: 770,\n },\n '#': {\n x_min: 63,\n x_max: 1179,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 63,\n advanceWidth: 1246,\n },\n $: {\n x_min: 81.92156915727656,\n x_max: 1012,\n y_min: -208,\n y_max: 1693,\n ha: 1901,\n leftSideBearing: 81,\n advanceWidth: 1110,\n },\n '%': {\n x_min: 77,\n x_max: 1384,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 77,\n advanceWidth: 1460,\n },\n '&': {\n x_min: 74,\n x_max: 1242,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 74,\n advanceWidth: 1289,\n },\n \"'\": {\n x_min: 166,\n x_max: 324,\n y_min: 1055,\n y_max: 1560,\n ha: 505,\n leftSideBearing: 166,\n advanceWidth: 460,\n },\n '(': {\n x_min: 114,\n x_max: 650,\n y_min: -463,\n y_max: 1636,\n ha: 2099,\n leftSideBearing: 114,\n advanceWidth: 662,\n },\n ')': {\n x_min: 11,\n x_max: 547,\n y_min: -463,\n y_max: 1636,\n ha: 2099,\n leftSideBearing: 11,\n advanceWidth: 654,\n },\n '*': {\n x_min: 66,\n x_max: 893,\n y_min: 607,\n y_max: 1456,\n ha: 849,\n leftSideBearing: 66,\n advanceWidth: 958,\n },\n '+': {\n x_min: 73,\n x_max: 1071,\n y_min: 146,\n y_max: 1206,\n ha: 1060,\n leftSideBearing: 73,\n advanceWidth: 1145,\n },\n ',': {\n x_min: 23,\n x_max: 315,\n y_min: -311,\n y_max: 221,\n ha: 532,\n leftSideBearing: 23,\n advanceWidth: 404,\n },\n '-': {\n x_min: 154,\n x_max: 643,\n y_min: 538,\n y_max: 692,\n ha: 154,\n leftSideBearing: 154,\n advanceWidth: 797,\n },\n '.': {\n x_min: 145,\n x_max: 342,\n y_min: 0,\n y_max: 202,\n ha: 202,\n leftSideBearing: 145,\n advanceWidth: 493,\n },\n '/': {\n x_min: 0,\n x_max: 774,\n y_min: -125,\n y_max: 1456,\n ha: 1581,\n leftSideBearing: 0,\n advanceWidth: 824,\n },\n ':': {\n x_min: 145,\n x_max: 342,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 145,\n advanceWidth: 419,\n },\n ';': {\n x_min: 53,\n x_max: 345,\n y_min: -311,\n y_max: 1082,\n ha: 1393,\n leftSideBearing: 53,\n advanceWidth: 424,\n },\n '<': {\n x_min: 76,\n x_max: 892,\n y_min: 107,\n y_max: 1013,\n ha: 906,\n leftSideBearing: 76,\n advanceWidth: 1017,\n },\n '=': {\n x_min: 147,\n x_max: 981,\n y_min: 407,\n y_max: 987,\n ha: 580,\n leftSideBearing: 147,\n advanceWidth: 1127,\n },\n '>': {\n x_min: 125,\n x_max: 980,\n y_min: 87,\n y_max: 993,\n ha: 906,\n leftSideBearing: 125,\n advanceWidth: 1060,\n },\n '?': {\n x_min: 65.92660602419838,\n x_max: 890,\n y_min: 0,\n y_max: 1477,\n ha: 1477,\n leftSideBearing: 65,\n advanceWidth: 953,\n },\n '@': {\n x_min: 84.3592218305664,\n x_max: 1705.2346925277395,\n y_min: -453,\n y_max: 1431,\n ha: 1884,\n leftSideBearing: 84,\n advanceWidth: 1821,\n },\n A: {\n x_min: 70,\n x_max: 1463,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 70,\n advanceWidth: 1533,\n },\n B: {\n x_min: 81,\n x_max: 1253,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1322,\n },\n C: {\n x_min: 80,\n x_max: 1174,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 80,\n advanceWidth: 1290,\n },\n D: {\n x_min: 81,\n x_max: 1291,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1356,\n },\n E: {\n x_min: 81,\n x_max: 1190,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1306,\n },\n F: {\n x_min: 81,\n x_max: 1176,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1256,\n },\n G: {\n x_min: 80,\n x_max: 1226,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 80,\n advanceWidth: 1346,\n },\n H: {\n x_min: 81,\n x_max: 1497,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1578,\n },\n I: {\n x_min: 81,\n x_max: 604,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 685,\n },\n J: {\n x_min: 60,\n x_max: 1100,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 60,\n advanceWidth: 1169,\n },\n K: {\n x_min: 81,\n x_max: 1427,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1501,\n },\n L: {\n x_min: 81,\n x_max: 1130,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1210,\n },\n M: {\n x_min: 94,\n x_max: 1888,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 94,\n advanceWidth: 1982,\n },\n N: {\n x_min: 83,\n x_max: 1509,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 83,\n advanceWidth: 1592,\n },\n O: {\n x_min: 70,\n x_max: 1281,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 70,\n advanceWidth: 1351,\n },\n P: {\n x_min: 81,\n x_max: 1242,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1297,\n },\n Q: {\n x_min: 70,\n x_max: 1348,\n y_min: -245,\n y_max: 1477,\n ha: 1722,\n leftSideBearing: 70,\n advanceWidth: 1376,\n },\n R: {\n x_min: 81,\n x_max: 1285,\n y_min: 0,\n y_max: 1455,\n ha: 1455,\n leftSideBearing: 81,\n advanceWidth: 1385,\n },\n S: {\n x_min: 115,\n x_max: 1116,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 115,\n advanceWidth: 1206,\n },\n T: {\n x_min: 96,\n x_max: 1306,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 96,\n advanceWidth: 1406,\n },\n U: {\n x_min: 70,\n x_max: 1452,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 70,\n advanceWidth: 1522,\n },\n V: {\n x_min: 65,\n x_max: 1443,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 65,\n advanceWidth: 1508,\n },\n W: {\n x_min: 72,\n x_max: 2057,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 72,\n advanceWidth: 2129,\n },\n X: {\n x_min: 80,\n x_max: 1449,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 80,\n advanceWidth: 1529,\n },\n Y: {\n x_min: 65,\n x_max: 1396,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 65,\n advanceWidth: 1461,\n },\n Z: {\n x_min: 90,\n x_max: 1107,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 90,\n advanceWidth: 1197,\n },\n '[': {\n x_min: 157,\n x_max: 541,\n y_min: -312,\n y_max: 1664,\n ha: 1976,\n leftSideBearing: 157,\n advanceWidth: 573,\n },\n '\\\\': {\n x_min: 36,\n x_max: 830,\n y_min: -125,\n y_max: 1456,\n ha: 1581,\n leftSideBearing: 36,\n advanceWidth: 841,\n },\n ']': {\n x_min: 23,\n x_max: 408,\n y_min: -312,\n y_max: 1664,\n ha: 1976,\n leftSideBearing: 23,\n advanceWidth: 552,\n },\n '^': {\n x_min: 71,\n x_max: 802,\n y_min: 729,\n y_max: 1456,\n ha: 727,\n leftSideBearing: 71,\n advanceWidth: 864,\n },\n _: {\n x_min: 119,\n x_max: 1041,\n y_min: -154,\n y_max: 0,\n ha: 154,\n leftSideBearing: 119,\n advanceWidth: 1168,\n },\n '`': {\n x_min: 40,\n x_max: 456,\n y_min: 1288,\n y_max: 1560,\n ha: 272,\n leftSideBearing: 40,\n advanceWidth: 496,\n },\n a: {\n x_min: 79,\n x_max: 1053,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 79,\n advanceWidth: 1132,\n },\n b: {\n x_min: -16,\n x_max: 1071,\n y_min: -21,\n y_max: 1560,\n ha: 1581,\n leftSideBearing: -16,\n advanceWidth: 1145,\n },\n c: {\n x_min: 78,\n x_max: 988,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 78,\n advanceWidth: 1067,\n },\n d: {\n x_min: 78,\n x_max: 1156,\n y_min: -21,\n y_max: 1560,\n ha: 1581,\n leftSideBearing: 78,\n advanceWidth: 1218,\n },\n e: {\n x_min: 74,\n x_max: 980,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 74,\n advanceWidth: 1059,\n },\n f: {\n x_min: 64,\n x_max: 731,\n y_min: 0,\n y_max: 1581,\n ha: 1581,\n leftSideBearing: 64,\n advanceWidth: 725,\n },\n g: {\n x_min: 78,\n x_max: 1133,\n y_min: -437,\n y_max: 1102,\n ha: 1539,\n leftSideBearing: 78,\n advanceWidth: 1157,\n },\n h: {\n x_min: 49,\n x_max: 1255,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 49,\n advanceWidth: 1315,\n },\n i: {\n x_min: 67,\n x_max: 590,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 67,\n advanceWidth: 652,\n },\n j: {\n x_min: -56,\n x_max: 381,\n y_min: -437,\n y_max: 1560,\n ha: 1997,\n leftSideBearing: -56,\n advanceWidth: 525,\n },\n k: {\n x_min: 64,\n x_max: 1248,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 64,\n advanceWidth: 1287,\n },\n l: {\n x_min: 64,\n x_max: 587,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 64,\n advanceWidth: 653,\n },\n m: {\n x_min: 74,\n x_max: 1905,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 74,\n advanceWidth: 1977,\n },\n n: {\n x_min: 74,\n x_max: 1278,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 74,\n advanceWidth: 1343,\n },\n o: {\n x_min: 78,\n x_max: 1046,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 78,\n advanceWidth: 1124,\n },\n p: {\n x_min: 34,\n x_max: 1119,\n y_min: -416,\n y_max: 1102,\n ha: 1518,\n leftSideBearing: 34,\n advanceWidth: 1197,\n },\n q: {\n x_min: 78,\n x_max: 1135,\n y_min: -416,\n y_max: 1102,\n ha: 1518,\n leftSideBearing: 78,\n advanceWidth: 1139,\n },\n r: {\n x_min: 72,\n x_max: 808,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 72,\n advanceWidth: 854,\n },\n s: {\n x_min: 104,\n x_max: 933,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 104,\n advanceWidth: 1022,\n },\n t: {\n x_min: 24,\n x_max: 678,\n y_min: -17,\n y_max: 1343,\n ha: 1360,\n leftSideBearing: 24,\n advanceWidth: 730,\n },\n u: {\n x_min: 52,\n x_max: 1181,\n y_min: -21,\n y_max: 1082,\n ha: 1103,\n leftSideBearing: 52,\n advanceWidth: 1245,\n },\n v: {\n x_min: 26,\n x_max: 1176,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 26,\n advanceWidth: 1206,\n },\n w: {\n x_min: 52,\n x_max: 1777,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 52,\n advanceWidth: 1823,\n },\n x: {\n x_min: 42,\n x_max: 1163,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 42,\n advanceWidth: 1203,\n },\n y: {\n x_min: 24,\n x_max: 1172,\n y_min: -437,\n y_max: 1082,\n ha: 1519,\n leftSideBearing: 24,\n advanceWidth: 1192,\n },\n z: {\n x_min: 88,\n x_max: 960,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 88,\n advanceWidth: 1032,\n },\n '{': {\n x_min: 63,\n x_max: 671,\n y_min: -364,\n y_max: 1597,\n ha: 1961,\n leftSideBearing: 63,\n advanceWidth: 701,\n },\n '|': {\n x_min: 150,\n x_max: 307,\n y_min: -270,\n y_max: 1456,\n ha: 1726,\n leftSideBearing: 150,\n advanceWidth: 451,\n },\n '}': {\n x_min: 27,\n x_max: 635,\n y_min: -364,\n y_max: 1597,\n ha: 1961,\n leftSideBearing: 27,\n advanceWidth: 701,\n },\n '~': {\n x_min: 121,\n x_max: 1257,\n y_min: 401,\n y_max: 803,\n ha: 402,\n leftSideBearing: 121,\n advanceWidth: 1386,\n },\n },\n fontFamily: 'Roboto Slab',\n resolution: 2048,\n generatedOn: '2020-06-15T19:12:58.120Z',\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Utility methods used by the rest of the VexFlow codebase.\nimport { Flow } from './flow';\nimport { log, RuntimeError } from './util';\nexport class Vex {\n // Users of `Vex.forEach(a, fn)` should use `Array.prototype.forEach()` instead.\n // static forEach(arr: T[], callbackFn: (value: T, index: number, array: T[]) => void) {\n // arr.forEach(callbackFn);\n // }\n /**\n * Take `arr` and return a new list consisting of the sorted, unique,\n * contents of arr. Does not modify `arr`.\n */\n // eslint-disable-next-line\n static sortAndUnique(arr, cmp, eq) {\n if (arr.length > 1) {\n const newArr = [];\n let last;\n arr.sort(cmp);\n for (let i = 0; i < arr.length; ++i) {\n if (i === 0 || !eq(arr[i], last)) {\n newArr.push(arr[i]);\n }\n last = arr[i];\n }\n return newArr;\n }\n else {\n return arr;\n }\n }\n /** Check if array `arr` contains `obj`. */\n // eslint-disable-next-line\n static contains(arr, obj) {\n let i = arr.length;\n while (i--) {\n if (arr[i] === obj) {\n return true;\n }\n }\n return false;\n }\n // Get the 2D Canvas context from DOM element `canvas_sel`.\n static getCanvasContext(canvasSelector) {\n if (!canvasSelector) {\n throw new RuntimeError('BadArgument', 'Invalid canvas selector: ' + canvasSelector);\n }\n const canvas = document.getElementById(canvasSelector);\n if (!(canvas && canvas.getContext)) {\n throw new RuntimeError('UnsupportedBrowserError', 'This browser does not support HTML5 Canvas');\n }\n return canvas.getContext('2d');\n }\n /** Benchmark. Run function `f` once and report time elapsed shifted by `s` milliseconds. */\n // eslint-disable-next-line\n static benchmark(s, f) {\n const start_time = new Date().getTime();\n f();\n const elapsed = new Date().getTime() - start_time;\n log(s, elapsed + 'ms');\n }\n // Get stack trace.\n static stackTrace() {\n const err = new Error();\n return err.stack;\n }\n}\nVex.Flow = Flow;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { PetalumaFont } from './petaluma_glyphs';\nimport { PetalumaMetrics } from './petaluma_metrics';\nexport function loadPetaluma() {\n Font.load('Petaluma', PetalumaFont, PetalumaMetrics);\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { CustomFont } from './custom_glyphs';\nimport { CustomMetrics } from './custom_metrics';\nexport function loadCustom() {\n Font.load('Custom', CustomFont, CustomMetrics);\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// vexflow-petaluma.ts is the entry point for vexflow-petaluma.js.\n// This version bundles the Petaluma music engraving font.\nimport { Flow } from '../src/flow';\nimport { loadCustom } from '../src/fonts/load_custom';\nimport { loadPetaluma } from '../src/fonts/load_petaluma';\nimport { loadTextFonts } from '../src/fonts/textfonts';\nloadPetaluma();\nloadCustom();\nFlow.setMusicFont('Petaluma', 'Custom');\nloadTextFonts();\n// Re-export all exports from index.ts.\nexport * from '../src/index';\n// Also collect all exports into a default export for CJS projects.\nexport * as default from '../src/index';\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { TextFormatter } from '../textformatter';\nimport { PetalumaScriptFont } from './petalumascript_glyphs';\nimport { RobotoSlabFont } from './robotoslab_glyphs';\nexport function loadTextFonts() {\n // Roboto Slab\n {\n const fontData = RobotoSlabFont;\n const { fontFamily, resolution, glyphs } = fontData;\n Font.load(fontFamily, fontData);\n // Previously we used 'H', but it isn't actually the tallest or the widest.\n // Interestingly, the lowercase 'b' is the tallest glyph.\n const maxSizeGlyph = 'b';\n TextFormatter.registerInfo({\n family: fontFamily,\n resolution,\n glyphs,\n maxSizeGlyph,\n monospaced: false,\n bold: false,\n italic: false,\n superscriptOffset: 0.66,\n subscriptOffset: 0.66,\n serifs: true,\n description: 'Text font to pair with the Bravura / Gonville music fonts.',\n });\n }\n // PetalumaScript\n {\n const fontData = PetalumaScriptFont;\n const { fontFamily, resolution, glyphs } = fontData;\n Font.load(fontFamily, fontData);\n // M is wider, but H is taller. :-)\n // Lowercase b is also taller in this font.\n const maxSizeGlyph = 'b';\n TextFormatter.registerInfo({\n family: fontFamily,\n resolution,\n glyphs,\n maxSizeGlyph,\n monospaced: false,\n bold: false,\n italic: false,\n superscriptOffset: 0.66,\n subscriptOffset: 0.66,\n serifs: false,\n description: 'Text font to pair with the Petaluma music font.',\n });\n }\n}\n"],"names":["root","factory","exports","module","define","amd","window","globalThis","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","g","Function","e","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","isCategory","category","checkAncestors","constructorFcn","constructor","CATEGORY","getPrototypeOf","isAccidental","Category","Accidental","isAnnotation","Annotation","isBarline","Barline","isDot","Dot","isGraceNote","GraceNote","isGraceNoteGroup","GraceNoteGroup","isNote","Note","isRenderContext","RenderContext","isStaveNote","StaveNote","isStemmableNote","StemmableNote","isTabNote","TabNote","RuntimeError","Error","code","message","super","globalObject","self","defined","x","undefined","log","block","args","line","Array","slice","join","console","warn","err","stack","midLine","a","b","mid_line","n","parseInt","prefix","text","normalizeAngle","Math","PI","Fraction","numerator","denominator","set","static","Number","isNaN","t","GCD","length","LCM","shift","LCMM","simplify","u","d","gcd","add","param1","param2","otherNumerator","otherDenominator","getNumeratorAndDenominator","lcm","subtract","multiply","divide","equals","compare","__staticFractionA","copy","__staticFractionB","greaterThan","greaterThanEquals","lessThan","lessThanEquals","clone","other","quotient","floor","remainder","makeAbs","abs","toString","toSimplifiedString","__staticFractionTmp","toMixedString","s","q","f","parse","str","i","split","BoundingBox","y","w","h","that","getX","getY","getW","getH","setX","setY","setW","setH","move","mergeWith","boundingBox","new_x","new_y","new_w","max","new_h","BoundingBoxComputation","x1","NaN","y1","x2","y2","getX1","getY1","width","height","addPoint","addX","addY","addQuadraticCurve","p0x","p0y","p1x","p1y","p2x","p2y","p01x","denom","it","p01y","addBezierCurve","p3x","p3y","p0","p1","p2","p3","pow","c","b2ac","t1","sqrt","t2","FontWeight","FontStyle","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","apply","fontParser","Fonts","Font","fontName","name","fontSize","SIZE","_a","scaleToPxFrom","pt","parseFloat","unit","replace","toLowerCase","size","weight","style","fromCSSString","family","SANS_SERIF","NORMAL","cssFontShorthand","document","createElement","font","fontFamily","fontWeight","fontStyle","fontInfo","st","trim","wt","sz","scaleFactor","parsedWeight","ITALIC","woffURL","includeWoff2","fontFace","FontFace","load","fonts","host","WEB_FONT_HOST","files","WEB_FONT_FILES","fontPath","loadWebFont","data","metrics","setData","setMetrics","getName","getData","getMetrics","hasData","getResolution","resolution","getGlyphs","glyphs","lookupMetric","defaultValue","keyParts","currObj","SERIF","px","em","in","mm","cm","PetalumaScript","Index","id","type","class","Registry","index","defaultRegistry","registry","clear","setIndexValue","elem","updateIndex","oldValue","getElementById","getAttribute","register","setAttribute","onRegister","_b","getElementsByAttribute","attribute","index_attr","index_attr_val","keys","map","k","getElementsByType","getElementsByClass","className","onUpdate","info","includes","Element","children","attrs","newID","el","getCategory","classes","rendered","getDefaultRegistry","ID","addChildElement","child","push","setStyle","setGroupStyle","forEach","getStyle","applyStyle","context","save","shadowColor","setShadowColor","shadowBlur","setShadowBlur","fillStyle","setFillStyle","strokeStyle","setStrokeStyle","lineWidth","setLineWidth","restoreStyle","restore","drawWithStyle","checkContext","draw","hasClass","addClass","removeClass","isRendered","setRendered","getAttributes","getSVGElement","suffix","element","oldID","getBoundingBox","getContext","setContext","setFont","toCSSString","textFont","defaultTextFont","TEXT_FONT","fontIsObject","fontIsString","fontIsUndefined","sizeWeightStyleAreUndefined","assign","validate","getFont","resetFont","setFontSize","getFontSize","fontSizeInPoints","convertSizeToPointValue","fontSizeInPixels","convertSizeToPixelValue","RESOLUTION","durations","durationAliases","keySignatures","C","num","Am","F","acc","Dm","Bb","Gm","Eb","Cm","Ab","Fm","Db","Bbm","Gb","Ebm","Cb","Abm","G","Em","D","Bm","A","E","B","clefs","treble","line_shift","bass","tenor","alto","soprano","percussion","subbass","french","notesInfo","int_val","CN","accidental","CB","CBB","DN","DB","DBB","EN","EB","EBB","FN","FB","FBB","GN","GB","GBB","AN","AB","ABB","BN","BB","BBB","R","rest","X","octave","shift_right","accidentals","parenRightPaddingAdjustment","bb","db","bs","bss","bbs","ashs","afhf","accSagittal5v7KleismaUp","accSagittal5v7KleismaDown","accSagittal5CommaUp","accSagittal5CommaDown","accSagittal7CommaUp","accSagittal7CommaDown","accSagittal25SmallDiesisUp","accSagittal25SmallDiesisDown","accSagittal35MediumDiesisUp","accSagittal35MediumDiesisDown","accSagittal11MediumDiesisUp","accSagittal11MediumDiesisDown","accSagittal11LargeDiesisUp","accSagittal11LargeDiesisDown","accSagittal35LargeDiesisUp","accSagittal35LargeDiesisDown","accSagittalSharp25SDown","accSagittalFlat25SUp","accSagittalSharp7CDown","accSagittalFlat7CUp","accSagittalSharp5CDown","accSagittalFlat5CUp","accSagittalSharp5v7kDown","accSagittalFlat5v7kUp","accSagittalSharp","accSagittalFlat","accSagittalSharp5v7kUp","accSagittalFlat5v7kDown","accSagittalSharp5CUp","accSagittalFlat5CDown","accSagittalSharp7CUp","accSagittalFlat7CDown","accSagittalSharp25SUp","accSagittalFlat25SDown","accSagittalSharp35MUp","accSagittalFlat35MDown","accSagittalSharp11MUp","accSagittalFlat11MDown","accSagittalSharp11LUp","accSagittalFlat11LDown","accSagittalSharp35LUp","accSagittalFlat35LDown","accSagittalDoubleSharp25SDown","accSagittalDoubleFlat25SUp","accSagittalDoubleSharp7CDown","accSagittalDoubleFlat7CUp","accSagittalDoubleSharp5CDown","accSagittalDoubleFlat5CUp","accSagittalDoubleSharp5v7kDown","accSagittalDoubleFlat5v7kUp","accSagittalDoubleSharp","accSagittalDoubleFlat","accSagittal7v11KleismaUp","accSagittal7v11KleismaDown","accSagittal17CommaUp","accSagittal17CommaDown","accSagittal55CommaUp","accSagittal55CommaDown","accSagittal7v11CommaUp","accSagittal7v11CommaDown","accSagittal5v11SmallDiesisUp","accSagittal5v11SmallDiesisDown","accSagittalSharp5v11SDown","accSagittalFlat5v11SUp","accSagittalSharp7v11CDown","accSagittalFlat7v11CUp","accSagittalSharp55CDown","accSagittalFlat55CUp","accSagittalSharp17CDown","accSagittalFlat17CUp","accSagittalSharp7v11kDown","accSagittalFlat7v11kUp","accSagittalSharp7v11kUp","accSagittalFlat7v11kDown","accSagittalSharp17CUp","accSagittalFlat17CDown","accSagittalSharp55CUp","accSagittalFlat55CDown","accSagittalSharp7v11CUp","accSagittalFlat7v11CDown","accSagittalSharp5v11SUp","accSagittalFlat5v11SDown","accSagittalDoubleSharp5v11SDown","accSagittalDoubleFlat5v11SUp","accSagittalDoubleSharp7v11CDown","accSagittalDoubleFlat7v11CUp","accSagittalDoubleSharp55CDown","accSagittalDoubleFlat55CUp","accSagittalDoubleSharp17CDown","accSagittalDoubleFlat17CUp","accSagittalDoubleSharp7v11kDown","accSagittalDoubleFlat7v11kUp","accSagittal23CommaUp","accSagittal23CommaDown","accSagittal5v19CommaUp","accSagittal5v19CommaDown","accSagittal5v23SmallDiesisUp","accSagittal5v23SmallDiesisDown","accSagittalSharp5v23SDown","accSagittalFlat5v23SUp","accSagittalSharp5v19CDown","accSagittalFlat5v19CUp","accSagittalSharp23CDown","accSagittalFlat23CUp","accSagittalSharp23CUp","accSagittalFlat23CDown","accSagittalSharp5v19CUp","accSagittalFlat5v19CDown","accSagittalSharp5v23SUp","accSagittalFlat5v23SDown","accSagittalDoubleSharp5v23SDown","accSagittalDoubleFlat5v23SUp","accSagittalDoubleSharp5v19CDown","accSagittalDoubleFlat5v19CUp","accSagittalDoubleSharp23CDown","accSagittalDoubleFlat23CUp","accSagittal19SchismaUp","accSagittal19SchismaDown","accSagittal17KleismaUp","accSagittal17KleismaDown","accSagittal143CommaUp","accSagittal143CommaDown","accSagittal11v49CommaUp","accSagittal11v49CommaDown","accSagittal19CommaUp","accSagittal19CommaDown","accSagittal7v19CommaUp","accSagittal7v19CommaDown","accSagittal49SmallDiesisUp","accSagittal49SmallDiesisDown","accSagittal23SmallDiesisUp","accSagittal23SmallDiesisDown","accSagittal5v13MediumDiesisUp","accSagittal5v13MediumDiesisDown","accSagittal11v19MediumDiesisUp","accSagittal11v19MediumDiesisDown","accSagittal49MediumDiesisUp","accSagittal49MediumDiesisDown","accSagittal5v49MediumDiesisUp","accSagittal5v49MediumDiesisDown","accSagittal49LargeDiesisUp","accSagittal49LargeDiesisDown","accSagittal11v19LargeDiesisUp","accSagittal11v19LargeDiesisDown","accSagittal5v13LargeDiesisUp","accSagittal5v13LargeDiesisDown","accSagittalSharp23SDown","accSagittalFlat23SUp","accSagittalSharp49SDown","accSagittalFlat49SUp","accSagittalSharp7v19CDown","accSagittalFlat7v19CUp","accSagittalSharp19CDown","accSagittalFlat19CUp","accSagittalSharp11v49CDown","accSagittalFlat11v49CUp","accSagittalSharp143CDown","accSagittalFlat143CUp","accSagittalSharp17kDown","accSagittalFlat17kUp","accSagittalSharp19sDown","accSagittalFlat19sUp","accSagittalSharp19sUp","accSagittalFlat19sDown","accSagittalSharp17kUp","accSagittalFlat17kDown","accSagittalSharp143CUp","accSagittalFlat143CDown","accSagittalSharp11v49CUp","accSagittalFlat11v49CDown","accSagittalSharp19CUp","accSagittalFlat19CDown","accSagittalSharp7v19CUp","accSagittalFlat7v19CDown","accSagittalSharp49SUp","accSagittalFlat49SDown","accSagittalSharp23SUp","accSagittalFlat23SDown","accSagittalSharp5v13MUp","accSagittalFlat5v13MDown","accSagittalSharp11v19MUp","accSagittalFlat11v19MDown","accSagittalSharp49MUp","accSagittalFlat49MDown","accSagittalSharp5v49MUp","accSagittalFlat5v49MDown","accSagittalSharp49LUp","accSagittalFlat49LDown","accSagittalSharp11v19LUp","accSagittalFlat11v19LDown","accSagittalSharp5v13LUp","accSagittalFlat5v13LDown","accSagittalDoubleSharp23SDown","accSagittalDoubleFlat23SUp","accSagittalDoubleSharp49SDown","accSagittalDoubleFlat49SUp","accSagittalDoubleSharp7v19CDown","accSagittalDoubleFlat7v19CUp","accSagittalDoubleSharp19CDown","accSagittalDoubleFlat19CUp","accSagittalDoubleSharp11v49CDown","accSagittalDoubleFlat11v49CUp","accSagittalDoubleSharp143CDown","accSagittalDoubleFlat143CUp","accSagittalDoubleSharp17kDown","accSagittalDoubleFlat17kUp","accSagittalDoubleSharp19sDown","accSagittalDoubleFlat19sUp","accSagittalShaftUp","accSagittalShaftDown","accSagittalAcute","accSagittalGrave","accSagittal1MinaUp","accSagittal1MinaDown","accSagittal2MinasUp","accSagittal2MinasDown","accSagittal1TinaUp","accSagittal1TinaDown","accSagittal2TinasUp","accSagittal2TinasDown","accSagittal3TinasUp","accSagittal3TinasDown","accSagittal4TinasUp","accSagittal4TinasDown","accSagittal5TinasUp","accSagittal5TinasDown","accSagittal6TinasUp","accSagittal6TinasDown","accSagittal7TinasUp","accSagittal7TinasDown","accSagittal8TinasUp","accSagittal8TinasDown","accSagittal9TinasUp","accSagittal9TinasDown","accSagittalFractionalTinaUp","accSagittalFractionalTinaDown","accidentalNarrowReversedFlat","accidentalNarrowReversedFlatAndFlat","accidentalWilsonPlus","accidentalWilsonMinus","articulations","between_lines","av","aboveCode","belowCode","ao","ah","am","ornaments","mordent","mordent_inverted","turn","turn_inverted","tr","upprall","downprall","prallup","pralldown","upmordent","downmordent","lineprall","prallprall","scoop","doit","fall","doitLong","fallLong","bend","plungerClosed","plungerOpen","flip","jazzTurn","smear","Tables","MUSIC_FONT_STACK","clef","keyOctaveGlyph","params","options","octave_shift","duration","sanitizeDuration","pieces","toUpperCase","clefProperties","stroke","int_value","customNoteHeadProps","glyphName","codeNoteHead","displaced","integer","noteValue","fret","scale","glyph","shift_y","glyphMetrics","Glyph","TABLATURE_FONT_SCALE","textWidth","getWidth","artic","spec","keySpec","notes","acc_list","durationNumber","durationToFraction","ticks","durationCodes","glyphTypeProperties","code_head","common","NOTATION_FONT_SCALE","SOFTMAX_FACTOR","STEM_WIDTH","STEM_HEIGHT","STAVE_LINE_THICKNESS","RENDER_PRECISION_PLACES","SLASH_NOTEHEAD_WIDTH","STAVE_LINE_DISTANCE","TEXT_HEIGHT_OFFSET_HACK","accidentalMap","accidentalColumnsTable","second_on_bottom","spaced_out_tetrachord","spaced_out_pentachord","very_spaced_out_pentachord","spaced_out_hexachord","very_spaced_out_hexachord","unicode","sharp","String","fromCharCode","flat","natural","triangle","degrees","circle","validTypes","m","ci","cx","sf","sb","sq","tu","td","TIME4_4","num_beats","beat_value","stem","stem_offset","flag","stem_up_extension","stem_down_extension","tabnote_stem_up_extension","tabnote_stem_down_extension","dot_shiftY","line_above","line_below","position","leger_code_head","beam_count","stem_beam_extension","code_flag_upstem","code_flag_downstem","OutlineCode","ModifierPosition","GlyphCacheEntry","fontStack","point","loadMetrics","bbox","getOutlineBoundingBox","outline","x_shift","y_shift","lookupFontMetric","GlyphOutline","originX","originY","precision","round","nextX","nextY","parts","MOVE","LINE","QUADRATIC","BEZIER","topGlyphs","botGlyphs","originShift","setOptions","reset","lookupGlyph","x_min","x_max","ha","cached_outline","ctx","x_pos","y_pos","cache","lookup","customScale","renderOutline","go","beginPath","moveTo","lineTo","quadraticCurveTo","bezierCurveTo","fill","bboxComp","penX","penY","getCode","setPoint","setStave","stave","getXShift","setXShift","getYshift","setYShift","checkMetrics","metricsScale","setOriginX","xShift","setOriginY","yShift","setOrigin","render","xPos","yPos","checkStave","renderToStave","getYForGlyphs","Map","entries","CURRENT_CACHE_KEY","entry","Modifier","text_line","Position","LEFT","spacingFromNextModifier","PositionString","center","CENTER","above","ABOVE","below","BELOW","left","right","RIGHT","setWidth","getNote","note","checkAttachedNote","setNote","getIndex","checkIndex","setIndex","getModifierContext","modifierContext","checkModifierContext","setModifierContext","getPosition","setPosition","setTextLine","setSpacingFromNextModifier","getSpacingFromNextModifier","alignSubNotesWithNote","subNotes","tickContext","getTickContext","getStave","subNoteXOffset","modLeftPx","modRightPx","subNote","subTickContext","setXOffset","Music","NUM_TONES","canonical_notes","roots","root_values","root_indices","diatonic_intervals","diatonic_accidentals","unison","m2","M2","m3","M3","p4","dim5","p5","m6","M6","b7","M7","intervals","b2","min2","S","H","maj2","T","W","b3","min3","maj3","b5","aug4","b6","aug5","maj6","m7","min7","dom7","maj7","scales","major","minor","ionian","dorian","phyrgian","lydian","mixolydian","aeolian","locrian","scaleTypes","M","noteValues","root_index","cn","cb","cbb","dn","dbb","en","eb","ebb","fn","fb","fbb","gn","gb","gbb","an","ab","abb","bn","bbb","isValidNoteValue","isValidIntervalValue","interval","getNoteParts","noteString","match","exec","getKeyParts","keyString","getNoteValue","getIntervalValue","intervalString","getCanonicalNoteName","getCanonicalIntervalName","intervalValue","getRelativeNoteValue","direction","sum","getRelativeNoteName","rootValue","multiplier","reverse_interval","relativeNoteName","getScaleTones","tones","nextNote","getIntervalBetween","note1","note2","difference","createScaleMap","keySignature","keySigParts","scaleName","keySigString","noteLocation","scaleMap","rootName","noteName","L","DEBUG","render_options","font_scale","parenLeftPadding","parenRightPadding","accidentalCodes","cautionary","state","musicFont","currentMusicFont","noteheadAccidentalPadding","leftShift","left_shift","accidentalSpacing","additionalPadding","accList","prevNote","shiftL","props","getKeyProps","getLeftDisplacedHeadPx","lineSpace","getSpacingBetweenLines","getYForLine","accLine","sort","lineList","previousLine","accShift","flatLine","dblSharpLine","numAcc","column","totalColumns","noFurtherConflicts","groupStart","groupEnd","checkCollision","getGroupLine","getGroupLines","indexes","lineDifference","indexA","indexB","item","notColliding","indexPairs","every","line1","line2","groupLength","groupMember","endCase","patternLength","collisionDetected","columnWidths","columnXOffsets","totalShift","accCount","lastAccOnLine","clearance","clearanceRequired","collision","voices","tickPositions","tickNoteMap","voice","tickPosition","getTickables","shouldIgnoreTicks","notesAtPosition","getTicks","music","scaleMapKey","tickPos","tickables","modifiedPitches","processNote","isRest","staveNote","keyIndex","accidentalString","pitch","sameAccidental","previouslyModified","indexOf","getModifiers","modifier","splice","addModifier","getGraceNotes","fontScale","parenLeft","parenRight","parenWidth","setAsCautionary","start","getModifierStartXY","accX","accY","Stem","stem_up_y_offset","stem_down_y_offset","stem_up_y_base_offset","stem_down_y_base_offset","x_begin","x_end","y_top","y_bottom","stem_extension","stem_direction","hide","isStemlet","stemletHeight","renderHeightAdjustment","UP","DOWN","WIDTH","HEIGHT","setNoteHeadXBounds","setDirection","setExtension","ext","getExtension","setYBounds","getHeight","y_offset","getExtents","isStemUp","ys","stemHeight","innerMostNoteheadY","min","outerMostNoteheadY","topY","baseY","setVisibility","isVisible","setStemlet","adjustHeightForFlag","adjustHeightForBeam","stem_x","stem_y","y_base_offset","stemletYOffset","openGroup","pointerBBox","closeGroup","TextFormatter","textWidthCache","formatterInfo","serifs","monospaced","italic","bold","superscriptOffset","subscriptOffset","maxSizeGlyph","cacheKey","updateParams","registeredFonts","requestedFont","candidates","requestedFamilies","requestedFamily","startsWith","formatter","values","isBold","isItalic","perfectMatch","find","partialMatch","fontSizeInPt","overwrite","updateCacheKey","BOLD","getGlyphMetrics","character","maxHeight","getWidthForCharacterInEm","advanceWidth","getWidthForTextInEm","cachedWidths","getWidthForTextInPx","AnnotationHorizontalJustify","AnnotationVerticalJustify","horizontalJustification","verticalJustification","TOP","minAnnotationPadding","annotations","leftWidth","rightWidth","maxLeftGlyphWidth","maxRightGlyphWidth","annotation","textFormatter","create","verticalSpaceNeeded","glyphWidth","getGlyph","stemDirection","hasStem","getStemDirection","lines","draw_stem","getStem","getNoteType","getNumLines","VerticalJustify","noteLine","getLineNumber","leastString","top_text_line","BOTTOM","greatestString","curBottom","rightOverlap","right_shift","leftOverlap","setVerticalJustification","just","VerticalJustifyString","getJustification","setJustification","HorizontalJustifyString","text_width","measureText","text_height","getStemX","stem_ext","spacing","has_stem","checkStem","getYs","reduce","yt","getYForTopText","getYForBottomText","getTopLineTopY","extents","getStemExtents","fillText","HorizontalJustify","centerStem","CENTER_STEM","top","bottom","roundToNearestHalf","mathFn","isWithinLines","getRoundingFunction","ceil","isStaveOrGraceNote","Articulation","maxGlyphWidth","getIncrement","articulation","increment","curTop","maxWidth","articWidth","overlap","builder","articNameToCode","staccato","tenuto","accent","articString","getFactory","articulationCodes","textLine","canSitBetweenLines","staffSpace","isTab","shouldSitOutsideStaff","initialOffset","isOnStemTip","getInitialOffset","padding","stemTipY","stemBaseY","getTopY","INITIAL_OFFSET","getBottomY","offsetDirection","articLine","snappedLine","snapLineToStaff","setRawFont","drawDot","color","arc","closePath","Tickable","_preFormatted","_postFormatted","intrinsicTicks","tickMultiplier","modifiers","tupletStack","align_center","center_x_shift","ignore_ticks","formatterMetrics","freedom","iterations","space","used","mean","deviation","setIgnoreTicks","checkTickContext","getFormatterMetrics","getCenterXShift","isCenterAligned","setCenterXShift","centerXShift","setCenterAlignment","getVoice","setVoice","getTuplet","tuplet","getTupletStack","resetTuplet","noteCount","notesOccupied","getNoteCount","getNotesOccupied","applyTickMultiplier","pop","setTuplet","addToModifierContext","mc","addMember","setTickContext","tc","preFormat","preFormatted","postFormat","postFormatted","getIntrinsicTicks","setIntrinsicTicks","getTickMultiplier","setDuration","getAbsoluteX","noteStruct","parsedNoteStruct","parseNoteStruct","JSON","stringify","keyProps","noteType","customTypes","duration_override","getGlyphProps","customGlyphs","playNote","leftDisplacedHeadPx","rightDisplacedHeadPx","annotation_spacing","glyph_font_scale","stroke_px","xStart","xPre1","xAbs","xPost1","notePx","xPost2","xEnd","xFreedomRight","xWidth","yy","spaceDeviation","durationString","dots","durationProps","parseDuration","durationToTicks","currentTicks","getPlayNote","setPlayNote","addStroke","setYs","getRightDisplacedHeadPx","setLeftDisplacedHeadPx","setRightDisplacedHeadPx","isTopNote","getLineForRest","getGlyphWidth","getDuration","isDotted","getModifiersByType","getBeam","beam","checkBeam","hasBeam","setBeam","signature","filter","getRightParenthesisPx","getLeftParenthesisPx","getFirstDotPx","getMembers","getState","glyphPx","getNoteStartX","getTieRightX","tieStartX","getTieLeftX","tieEndX","getKeys","StaveModifierPosition","BarlineType","ChordSymbolHorizontalJustify","ChordSymbolVerticalJustify","SymbolTypes","SymbolModifiers","StaveModifier","placeGlyphOnLine","customShift","getPadding","setPadding","setLayoutMetrics","layoutMetrics","getLayoutMetrics","thickness","TYPE","widths","SINGLE","DOUBLE","END","REPEAT_BEGIN","REPEAT_END","REPEAT_BOTH","NONE","paddings","layoutMetricsMap","xMin","xMax","paddingLeft","paddingRight","BEGIN","setType","typeString","single","double","end","repeatBegin","repeatEnd","repeatBoth","none","getType","drawVerticalBar","drawVerticalEndBar","drawRepeatBar","double_bar","staveCtx","botY","getBottomLineBottomY","fillRect","begin","dot_x","dot_radius","dot_y","BarNote","barline","Bend","release","phrase","tap","line_width","line_style","bend_width","release_width","updateWidth","bends","last_width","stringPos","setTap","getText","getTextHeight","totalWidth","additional_width","draw_width","lowestY","bend_height","annotation_y","renderBend","cp_x","cp_y","renderRelease","renderArrowHead","yBase","renderText","render_x","last_bend","last_bend_draw_width","last_drawn_width","ChordSymbol","symbolBlocks","horizontal","vertical","useKerning","reportWidth","superSubRatio","global","NO_TEXT_FORMAT","val","noFormat","glyphCode","engravingFontResolution","spacingBetweenBlocks","metric","getMetricForGlyph","yOffset","leftSideBearing","kerningOffset","chordSymbol","lowerKerningText","upperKerningText","symbolModifier","SUPERSCRIPT","SUBSCRIPT","minPadding","symbols","nonSuperWidth","symbol","fontAdj","scaleSize","glyphAdj","symbolWidth","lineSpaces","vAlign","j","sup","isSuperscript","sub","isSubscript","superSubScale","adj","symbolType","GLYPH","superSubFontSize","getWidthForGlyph","getYShiftForGlyph","getXShiftForGlyph","TEXT","getYOffsetForText","over","prev","setEnableKerning","updateKerningAdjustments","updateOverBarAdjustments","getVertical","getReportWidth","getHorizontal","setReportWidth","barIndex","findIndex","xoff","yoff","symIndex","accum","getKerningAdjustment","currSymbol","prevSymbol","adjustment","preKernUpper","preKernLower","some","xx","kerningOffsetPixels","getSymbolBlock","_c","symbolBlock","glyphArgs","glyphPoints","addSymbolBlock","parameters","addText","addTextSuperscript","addTextSubscript","addGlyphSuperscript","addGlyph","addGlyphOrText","char","addLine","setVertical","vj","setHorizontal","hj","yMax","y_max","stem_base","isSuper","isSub","curY","smallerFontSize","diminished","dim","halfDiminished","augmented","majorSeventh","leftParen","rightParen","leftBracket","rightBracket","leftParenTall","rightParenTall","symbolTypes","symbolModifiers","radius","all","dot","setDotShiftY","dot_list","max_shift_map","note_id","dot_shift","x_width","last_line","last_note","prev_dotted_space","half_shiftY","forceFlagRight","FretHandFinger","finger","x_offset","nums","nums_list","prev_note","shiftLeft","shiftRight","pos","textHeight","shiftR","numShiftL","numShiftR","xWidthL","xWidthR","lastLine","lastNote","num_shift","numWidth","fingerings","fingeringString","number","Fingering","fingering","setFretHandFinger","getFretHandFinger","setOffsetX","setOffsetY","NoteHead","custom_glyph","stem_up_x_offset","stem_down_x_offset","note_type","glyph_code","custom_glyph_code","slashed","isDisplaced","getLine","setLine","displacementStemAdjustment","fontShift","displacedFontShift","half_spacing","min_y","getYForNote","head_x","categorySuffix","staveSpace","durationToNumber","breve_lines","drawSlashNoteHead","renderGlyph","setStem","buildStem","buildFlag","hasFlag","flagCode","getBaseCustomNoteHeadGlyph","getStemLength","getStemExtension","getBeamCount","getStemMinimumLength","setStemDirection","offsets","offsetYBaseStemUp","offsetYTopStemUp","offsetYBaseStemDown","offsetYTopStemDown","getCenterGlyphX","stem_extension_override","setStemLength","drawStem","stemOptions","shiftRestVertical","dir","delta","maxLine","minLine","setKeyLine","getKeyLine","sortedKeyProps","ledgerLineStyle","use_default_head_x","_noteHeads","LEDGER_LINE_OFFSET","calculateKeyProps","auto_stem","autoStem","STEM_UP","STEM_DOWN","minNoteheadPadding","notesList","minL","stemMax","stemMin","maxL","isrest","voice_shift","getVoiceShiftWidth","is_displaced","noteU","noteM","noteL","voiceXShift","lineSpacing","lineDiff","whiteNoteHeadCount","blackNoteHeadCount","centerRest","noteHeadStyles","noteHead","buildNoteHeads","noteHeadStyle","head","calcNoteDisplacements","noteProps","notehead","calculateOptimalStemDirection","keyProperties","minY","maxY","halfLineSpacing","frac","resultLine","thisLine","isChord","getNoteHeadBounds","setNoteDisplaced","getRightShift","restLine","isInnerNoteIndex","setStemStyle","getStemStyle","setLedgerLineStyle","getLedgerLineStyle","setFlagStyle","getFlagStyle","setKeyStyle","noteHeadPadding","shouldDrawFlag","nonDisplacedX","displacedX","highestDisplacedLine","lowestDisplacedLine","yTop","Infinity","yBottom","highestLine","lowestLine","highestNonDisplacedLine","lowestNonDisplacedLine","displaced_x","non_displaced_x","highest_line","lowest_line","highest_displaced_line","lowest_displaced_line","highest_non_displaced_line","lowest_non_displaced_line","getNoteHeadBeginX","getNoteHeadEndX","noteHeads","note_heads","drawLedgerLines","doubleWidth","min_x","drawLedgerLine","normal","ledgerWidth","getDefaultLedgerLineStyle","drawModifiers","noteheadParam","noteheadStyle","hasNoBeam","drawFlag","_d","_e","noteStemHeight","flagX","flagY","getStaveNoteScale","drawNoteHeads","super_stem_extension","mid_line_distance","lines_over_octave_from_mid_line","spacing_between_lines","xBegin","shouldRenderStem","stemX","StaveTie","setNotes","cp1","cp2","text_shift_x","first_x_shift","last_x_shift","tie_spacing","first_note","first_indices","last_indices","isPartial","renderTie","first_ys","last_ys","last_x_px","first_x_px","first_y_px","last_y_px","top_cp_y","bottom_cp_y","center_x","getNotes","getTieStartX","getTieEndX","TabTie","VoiceMode","Voice","time","voiceTime","resolutionMultiplier","mode","STRICT","ticksUsed","largestTickWidth","softmaxFactor","totalTicks","smallestTickCount","Mode","getTotalTicks","getTicksUsed","getLargestTickWidth","getSmallestTickCount","getMode","setMode","getResolutionMultiplier","getActualResolution","tickable","setStrict","strict","SOFT","isComplete","FULL","setSoftmaxFactor","factor","reCalculateExpTicksUsed","expTicksUsed","softmax","tickValue","v","exp","addTickable","addTickables","grace_notes","show_slur","slur","slur_y_shift","beams","gracenote_groups","group_list","gracenote_group","is_stavenote","formatWidth","group_shift","Formatter","joinVoices","format","getMinTotalWidth","beamNotes","Beam","beam_width","partial_beam_length","graceNote","TieClass","NoteSubGroup","groups","group","TickContext","tickID","currentTick","maxTicks","maxTickable","minTicks","minTickable","xBase","xOffset","tickablesByVoice","totalLeftPx","totalRightPx","tContexts","tContext","contexts","getTickID","getXBase","setXBase","getXOffset","getMaxTicks","getMinTicks","getMaxTickable","getMinTickable","getTickableForVoice","voiceIndex","getTickablesByVoice","getCenterAlignedTickables","getCurrentTick","setCurrentTick","tick","Ornament","delayed","accidentalLowerPadding","accidentalUpperPadding","ornament","ornamentCodes","adjustForStemDirection","reportedWidth","stemUpYOffset","ornamentAlignWithNoteHead","ornamentNoteTransition","ornamentRelease","ornamentAttack","ornamentArticulation","jazzOrnaments","setDelayed","setUpperAccidental","accid","accidentalUpper","setLowerAccidental","accidentalLower","stemDir","stemExtents","isPlacedOnNoteheadSide","glyphYBetweenLines","glyphX","glyphY","delayXShift","startX","nextContext","getNextContext","Parenthesis","parentheses","x_widthL","x_widthR","parenthesis","isHTMLCanvas","HTMLCanvasElement","toDataURL","isHTMLDiv","HTMLDivElement","appendChild","CanvasContext","context2D","canvas","CANVAS_BROWSER_SIZE_LIMIT","limit","clearRect","cls","setBackgroundFillStyle","blur","getTransform","setLineCap","capType","lineCap","setLineDash","dash","resize","devicePixelRatio","sanitizeCanvasDims","rect","cp1x","cp1y","cp2x","cp2y","cpx","cpy","startAngle","endAngle","counterclockwise","fontBoundingBoxAscent","fontBoundingBoxDescent","actualBoundingBoxAscent","actualBoundingBoxDescent","ATTRIBUTES_TO_IGNORE","path","SVG_NS","TWO_PI","SVGContext","backgroundFillStyle","fontCSSString","svg","parent","pen","defaultFontAttributes","attributes","shadow_attributes","state_stack","svgElementType","createElementNS","lineDash","applyAttributes","visibleWidth","visibleHeight","setViewBox","viewBox_or_minX","viewBoxString","attrNamesToIgnore","nodeName","attrName","setAttributeNS","lastChild","removeChild","rectangle","x0","cos","y0","sin","tmpStartTest","tmpEndTest","large","sweep","getShadowStyle","sa","measureTextCache","txt","textContent","savedState","fontAttributes","RendererBackends","RendererLineEndType","TextJustification","VoltaType","measureImpl","getBBox","Renderer","arg0","arg1","backend","maybeElement","Backends","CANVAS","SVG","elementId","background","renderer","lastContext","buildContext","fromX","fromY","toX","toY","dashPattern","dx","dy","angle","atan2","idx","dashLength","nx","ny","LineEndType","StringNumber","string_number","dashed","leg","drawCircle","stringNumber","shift_left","glyphLine","num_shiftR","num_width","setLineEndType","setStringNumber","setLastNote","setDashed","setDrawCircle","stemPadding","verticalPadding","leftPadding","rightPadding","len","pattern","drawDashedLine","Stroke","all_voices","strokes","strokeList","string","getPositions","strokeShift","addEndNote","note_end","line_space","arrow","arrow_shift_x","arrow_y","text_y","Type","BRUSH_DOWN","BRUSH_UP","ROLL_DOWN","RASQUEDO_DOWN","ROLL_UP","RASQUEDO_UP","ARPEGGIO_DIRECTIONLESS","strokeLine","Vibrato","harsh","vibrato_width","wave_height","wave_width","wave_girth","setVibratoWidth","vibratos","vibrato","setHarsh","vx","vy","renderVibrato","opts","num_waves","ModifierContext","members","formatted","member","getLeftShift","Clef","types","tab","attachment","numLines","shiftY","KeySignature","cancelKeySpec","alterKeySpec","setKeySig","glyphFontScale","xPositions","paddingForced","convertToGlyph","nextAcc","accGlyphData","extraWidth","xPosition","cancelKey","convertToCancelAccList","cancel_accList","different_types","naturals","cancelled","concat","addToStave","convertAccLines","customLines","offset","alterKey","convertToAlterAccList","firstAccidentalType","cancelAccList","getEndClef","getClef","Repetition","symbol_type","setShiftX","setShiftY","CODA_RIGHT","drawCodaFixed","CODA_LEFT","drawSymbolText","SEGNO_LEFT","drawSignoFixed","SEGNO_RIGHT","DC","DC_AL_CODA","DC_AL_FINE","DS","DS_AL_CODA","DS_AL_FINE","FINE","TO_CODA","draw_coda","text_x","symbol_x","modifierWidth","getVerticalBarWidth","StaveSection","section","drawRect","shift_x","setStaveSection","textMeasurements","StaveTempo","tempo","setTempo","bpm","stem_height","TextNote","superscript","subscript","smooth","justification","struct","GLYPHS","segno","mordent_upper","mordent_lower","p","z","coda","pedal_open","pedal_close","caesura_straight","caesura_curved","breath","Justification","StaveText","setStaveText","setText","getBottomLineY","Volta","volta","top_y","vert_height","BEGIN_END","TimeSignatureGlyph","timeSignature","topDigits","botDigits","topWidth","timeSigType","topGlyph","botWidth","botGlyph","topStartX","botStartX","start_x","topLine","bottomLine","TimeSignature","timeSpec","customPadding","validate_args","fontLineShift","parseTimeSpec","numbers","test","assertIsValidTimeSig","makeTimeSignatureGlyph","getInfo","setTimeSig","SORT_ORDER_BEG_MODIFIERS","SORT_ORDER_END_MODIFIERS","Stave","end_x","measure","endClef","vertical_bar_width","num_lines","fill_style","left_bar","right_bar","spacing_between_lines_px","space_above_staff_ln","space_below_staff_ln","top_text_position","bottom_text_position","line_config","bounds","defaultLedgerLineStyle","resetLines","addEndModifier","defaultPadding","setDefaultLedgerLineStyle","visible","setNoteStartX","getNoteEndX","setNumLines","mod","setMeasure","getMeasure","getModifierXShift","begBarline","setRepetitionType","setVoltaType","number_t","setSection","staveSection","headroom","getLineForY","setBegBarType","setEndBarType","setClef","clefSpec","addClef","setEndClef","setKeySignature","addKeySignature","setEndKeySignature","setTimeSignature","timeSignatures","addTimeSignature","setEndTimeSignature","addEndClef","addEndTimeSignature","addTrebleGlyph","noPosition","noCategory","sortByCategory","items","order","temp","endBarline","begModifiers","endModifiers","lastBarlineIdx","getConfigForLines","setConfigForLine","line_number","setConfigForLines","lines_configuration","staves","maxX","drawBoldDoubleLine","topX","StaveConnector","BOLD_DOUBLE_LEFT","BOLD_DOUBLE_RIGHT","variableWidth","top_stave","bottom_stave","texts","newType","content","SINGLE_RIGHT","THIN_DOUBLE","attachment_height","SINGLE_LEFT","BRACE","x3","y3","cpx1","cpy1","cpx2","cpy2","cpx3","cpy3","cpx4","cpy4","cpx5","cpy5","cpx6","cpy6","cpx7","cpy7","cpx8","cpy8","BRACKET","singleRight","singleLeft","brace","bracket","boldDoubleLeft","boldDoubleRight","thinDouble","sumArray","arr","getRestLineForNextNoteGroup","currRestLine","currNoteIndex","nextRestLine","noteIndex","formatterOptions","globalSoftmax","maxIterations","justifyWidth","totalCost","durationStats","minTotalWidth","hasMinTotalWidth","tickContexts","array","list","modifierContexts","contextGaps","total","gaps","lossHistory","paddingBetween","accumulator","stavePadding","gap","toFixed","auto_beam","align_rests","applyAndGetBeams","formatToStave","tabstave","tabnotes","autobeam","notevoice","tabvoice","alignAllNotes","alignTuplets","currTickable","prevTickable","alignRests","AlignRestsToNotes","preCalculateMinTotalWidth","unalignedPadding","unalignedCtxCount","wsum","dsum","createTickContexts","contextList","contextMap","wavg","wvar","ll","wpads","davg","dvar","dpads","padmax","unalignedPad","createModifierContexts","tickToContextMap","integerTicks","staveTickToContextMap","newContext","makeContext","addToContext","tickList","createContexts","contextArray","getTickContexts","renderingContext","voicesParam","evaluate","firstContext","calculateIdealDistances","adjustedJustifyWidth","backTickable","prevContext","backVoices","matchingVoices","maxNegativeShiftPx","expectedDistance","thisTickable","insideLeftEdge","backMetrics","insideRightEdge","fromTickable","fromTickablePx","shiftToIdealDistances","idealDistances","centerX","spaceAccum","contextX","ideal","errorPx","negativeShiftPx","configMinPadding","configMaxPadding","targetWidth","distances","actualWidth","minDistance","mdCalc","di","calcMinDistance","paddingMaxCalc","curTargetWidth","lastTickablePadding","lastTickable","tickWidth","paddingMax","paddingMin","prevTick","prevMetrics","currMetrics","leftNoteEdge","rightNote","rightMetrics","stats","count","updateStats","totalDeviation","tune","alpha","current","cost","optionsParam","TupletLocation","Tuplet","numerator_glyphs","denom_glyphs","num_notes","beats_occupied","beatsOccupiedDeprecationWarning","notes_occupied","bracketed","ratioed","setTupletLocation","location","LOCATION_TOP","resolveGlyphs","attach","LOCATION_BOTTOM","NESTING_OFFSET","detach","setBracketed","setRatioed","getBeatsOccupied","setBeatsOccupied","beats","setNotesOccupied","unshift","getNestedTupletCount","maxTupletCount","countTuplets","minTupletCount","tupletCount","getYPosition","nested_tuplet_y_offset","topModifierOffset","modLines","modY","noteHeadOffset","stemOffset","lineCheck","nn","bottom_y","addGlyphWidth","notation_start_x","colon_x","colon_radius","calculateStemDirection","lineSum","keyProp","BEAM_LEFT","BEAM_RIGHT","BEAM_BOTH","slope","forcedPartialDirections","stem_weight","memo","break_on_indices","max_slope","min_slope","slope_iterations","slope_cost","show_stemlets","stemlet_extension","flat_beams","min_flat_beam_offset","time_sig","beatTotal","beatValue","generateBeams","config","tickGroups","unprocessedNotes","currentTickGroup","noteGroups","currentGroup","nextTickGroup","nextGroup","currentGroupTotalTicks","unprocessedNote","ticksPerGroup","vf_notes","unbeamable","createGroups","sanitizedGroups","tempGroup","isFirstOrLast","breaksOnEachRest","beam_rests","breaksOnFirstOrLastRest","beam_middle_only","breakOnStemChange","maintain_stem_directions","prevDirection","isUnbeamableDuration","sanitizeGroups","findFirstNote","applyStemDirection","beamedNoteGroups","beamable","allTuplets","uniqueTuplets","noteTuplet","getTuplets","secondary_breaks","secondary_break_ticks","flat_beam_offset","beamCount","breakSecondaryAt","indices","setPartialBeamSideAt","side","unsetPartialBeamSideAt","getSlopeY","calculateSlope","firstNote","initialSlope","firstStemTipY","firstStemX","getStemSlope","minCost","MAX_VALUE","bestSlope","totalStemExtension","yShiftTemp","adjustedStemTipY","diff","idealSlope","calculateFlatSlope","extremeY","extremeBeamCount","currentExtreme","extremeTest","newOffset","getBeamYToDraw","beamY","applyStemExtensions","beamedStemTipY","preBeamExtension","beamExtension","totalBeamWidth","lookupBeamDirection","prev_tick","next_tick","forcedBeamDirection","lookup_duration","prev_note_gets_beam","next_note_gets_beam","note_gets_beam","getBeamLines","tick_of_duration","beam_started","beam_lines","current_beam","previous_should_break","tick_tally","should_break","next_note","beam_alone","beam_direction","last_beam","drawStems","drawBeamLines","valid_beam_durations","beamThickness","beamLines","beam_line","startBeamX","startBeamY","lastBeamX","lastBeamY","ClefNote","clef_obj","abs_x","Crescendo","extend_left","extend_right","decrescendo","setHeight","setDecrescendo","decresc","tick_context","next_context","begin_x","half_height","reverse","renderHairpin","CurvePosition","Curve","from","to","NEAR_HEAD","position_end","invert","cps","nearHead","nearTop","NEAR_TOP","renderCurve","first_x","first_y","last_x","last_y","cp0x","cp0y","cp_spacing","end_metric","Parser","flattenMatches","matchedString","results","grammar","errorPos","expect","matchFail","returnPos","matchSuccess","matchToken","token","noSpace","regexp","RegExp","success","incrementPos","expectOne","rule","maybe","allMatches","oneMatch","localPos","or","gotOne","numMatches","expectOneOrMore","more","expectZeroOrMore","ruleFunc","bind","oneOrMore","zeroOrMore","matches","run","EasyScore","EasyScoreGrammar","PIECE","PIECES","EOL","CHORDORNOTE","PARAMS","commitPiece","COMMA","DURATION","DOTS","OPTS","CHORD","SINGLENOTE","LPAREN","NOTES","RPAREN","addChord","NOTE","NOTENAME","ACCIDENTAL","OCTAVE","addSingleNote","MICROTONES","ACCIDENTALS","DOT","setNoteDots","SLASH","MAYBESLASH","TYPES","setNoteType","DURATIONS","setNoteDuration","LBRACKET","KEYVAL","KEYVALS","RBRACKET","KEY","EQUALS","VAL","addNoteOption","SVAL","DVAL","Piece","chord","Builder","commitHooks","elements","rollingDuration","resetPiece","getElements","addCommitHook","commitHook","piece","addNote","standardAccidentals","notePiece","GhostNote","buildAndAttach","setId","commaSeparatedRegex","setClass","defaults","easyScoreHook","throwOnError","parser","ERROR_MSG","parameter","GlyphNote","ignoreTicks","setGlyph","SCALE","slash","ret","staveNoteScale","offsetScale","slashBBox","calcBeamedNotesSlashBBox","noteHeadBounds","defaultStemExtention","defaultOffsetY","slashStemOffset","slashBeamOffset","protrusions","beam_slope","scaleX","beam_angle","atan","iPointOnBeam","slash_angle","protrusion_stem_dx","protrusion_stem_dy","protrusion_beam_dx","protrusion_beam_dy","stem0X","stemY","KeySigNote","semibreve_rest","MultiMeasureRest","number_of_measures","xs","hasPaddingLeft","hasPaddingRight","hasLineThickness","hasSymbolSpacing","padding_left","padding_right","line_thickness","symbol_spacing","use_symbols","show_number","number_line","number_glyph_point","serif_thickness","semibreve_rest_glyph_scale","getXs","drawLine","spacingBetweenLines","lineThicknessHalf","serifThickness","bot","leftIndented","rightIndented","lineTop","lineBottom","drawSymbols","n4","n2","n1","get_semibreve_rest","rest_scale","rest_width","yMiddle","timeSig","drawPedalGlyph","glyph_data","PedalMarking","custom_depress_text","custom_release_text","bracket_height","text_margin_right","bracket_line_width","pedal","MIXED","setCustomText","depress","drawBracketed","prev_x","prev_y","is_pedal_depressed","next_is_same","prev_is_same","drawText","pedal_depress","pedal_release","mixed","CODES","RepeatNote","drawArrowHead","StaveLine","line_dash","rounded_end","draw_start_arrow","draw_end_arrow","arrowhead_length","arrowhead_angle","text_position_vertical","TextVerticalPosition","text_justification","applyLineStyle","applyFontStyle","drawArrowLine","pt1","pt2","both_arrows","distance","ratio","end_y","start_y","line_angle","angle1","angle2","top_x","bottom_x","start_position","end_position","first_index","last_index","upwards_slope","notehead_width","vertical_position","System","spaceBetweenStaves","autoWidth","noJustification","debugFormatter","formatIterations","noPadding","details","formatOptions","addConnector","connector","addStave","staveOptions","spaceAbove","spaceBelow","debugNoteMetrics","options_details","allVoices","allStaves","debugNoteMetricsYs","part","lastY","formatBegModifiers","plotDebugging","plotMetrics","positions","ghost","draw_dots","draw_stem_through_stave","setGhost","tabToGlyph","getStemY","stemDownLine","stemStartLine","flag_x","flag_y","drawStemThrough","stemThrough","stemLines","unused_strings","up_stem","down_stem","line_spacing","total_lines","stem_lines","strings","containsLastString","containsFirstString","line_ys","isTopBound","isBottomBound","getPartialStemLines","strings_used","stem_through","getUnusedStringGroups","drawPositions","tab_x","render_stem","TabStave","addTabGlyph","TextBracket","TextBracketPosition","stop","show_bracket","underline_superscript","Positions","PositionsString","main_measure","main_width","main_height","super_y","super_measure","super_width","super_height","line_y","TextDynamics","sequence","glyph_font_size","total_width","letter","letter_x","current_letter","TimeSigNote","timeSigInfo","VibratoBracket","bracket_data","stop_x","Factory","renderQ","systems","initRenderer","getVoices","ghostNote","textNote","barNote","clefNote","timeSigNote","keySigNote","hJustify","vJustify","kerning","upperAccidental","lowerAccidental","numMeasures","multiMeasureRest","secondaryBeamBreaks","partialBeamDirections","curve","tie","vibratoBracket","textBracket","system","GraceTabNote","KeyManager","setKey","getKey","scaleMapByValue","originalScaleMapByValue","getAccidental","selectNote","scaleNote","modparts","change","valueNote","originalValueNote","StaveHairpin","hairpin","left_shift_px","right_shift_px","right_shift_ticks","left_shift_ticks","ppt","pixelsPerTick","l_shift_px","r_shift_px","hairpin_options","setRenderOptions","dis","staff_height","l_shift","r_shift","CRESC","DECRESC","TabSlide","first_fret","last_fret","SLIDE_UP","SLIDE_DOWN","slide_y","Tremolo","y_spacing_scale","extra_stroke_scale","y_spacing","Tuning","tuningString","tuningValues","setTuning","names","standard","dagdad","dropd","standardBanjo","noteToInteger","getValueForString","stringNum","getValueForFret","fretNum","stringValue","getNoteForFret","integerToNote","Flow","BUILD","VERSION","DATE","fontNames","fontModuleOrPath","hasKeySignature","getKeySignatures","CustomFont","noteheadSquareWhite","noteheadSquareBlack","accidentalBuyukMucennebFlat","accidentalBakiyeFlat","accidentalKucukMucennebSharp","accidentalKoron","accidentalSori","vexAccidentalMicrotonal2","vexAccidentalMicrotonal3","vexAccidentalMicrotonal4","vexNoteHeadRectBlack","vexNoteHeadRectWhite","CustomMetrics","smufl","PetalumaFont","bracketTop","y_min","bracketBottom","barlineTick","breathMarkTick","gClef","cClef","fClef","unpitchedPercussionClef1","timeSig0","timeSig1","timeSig2","timeSig3","timeSig4","timeSig5","timeSig6","timeSig7","timeSig8","timeSig9","timeSigCommon","timeSigCutCommon","timeSigPlus","timeSigPlusSmall","timeSigMinus","timeSigParensRight","timeSigParensRightSmall","timeSigParensLeft","timeSigParensLeftSmall","noteheadDoubleWhole","noteheadWhole","noteheadHalf","noteheadBlack","noteheadXDoubleWhole","noteheadXWhole","noteheadXHalf","noteheadXBlack","noteheadCircleXDoubleWhole","noteheadCircleXWhole","noteheadCircleXHalf","noteheadCircleX","noteheadCircledDoubleWhole","noteheadCircledWhole","noteheadCircledHalf","noteheadCircledBlack","noteheadDoubleWholeSquare","noteheadTriangleDownDoubleWhole","noteheadTriangleDownWhole","noteheadTriangleDownHalf","noteheadTriangleDownBlack","noteheadTriangleUpDoubleWhole","noteheadTriangleUpWhole","noteheadTriangleUpHalf","noteheadTriangleUpBlack","noteheadSlashedDoubleWhole1","noteheadSlashedWhole1","noteheadSlashedHalf1","noteheadSlashedBlack1","noteheadSlashedDoubleWhole2","noteheadSlashedWhole2","noteheadSlashedHalf2","noteheadSlashedBlack2","noteheadDiamondDoubleWhole","noteheadDiamondWhole","noteheadDiamondHalf","noteheadDiamondBlack","noteheadParenthesis","noteheadParenthesisRight","noteheadParenthesisLeft","noteheadMoonBlack","noteheadTriangleLeftBlack","noteheadTriangleRightBlack","noteheadTriangleRoundDownBlack","augmentationDot","tremolo1","flag8thUp","flag8thDown","flag16thUp","flag16thDown","flag32ndUp","flag32ndDown","flag64thUp","flag64thDown","flag128thUp","flag128thDown","accidentalFlat","accidentalNatural","accidentalSharp","accidentalDoubleSharp","accidentalDoubleFlat","accidentalParensLeft","accidentalParensRight","accidentalQuarterToneFlatStein","accidentalThreeQuarterTonesFlatZimmermann","accidentalQuarterToneSharpStein","accidentalThreeQuarterTonesSharpStein","accidentalKomaSharp","articAccentAbove","articAccentBelow","articTenutoAbove","articTenutoBelow","articStaccatoAbove","articStaccatoBelow","articStaccatissimoAbove","articStaccatissimoBelow","articMarcatoAbove","articMarcatoBelow","fermataAbove","fermataBelow","fermataLongAbove","fermataLongBelow","fermataVeryLongAbove","fermataVeryLongBelow","fermataShortAbove","fermataShortBelow","breathMarkComma","breathMarkUpbow","caesura","caesuraCurved","restMaxima","restDoubleWhole","restWhole","restWholeLegerLine","restHalf","restHalfLegerLine","restQuarter","rest8th","rest16th","rest32nd","rest64th","rest128th","dynamicPiano","dynamicMezzo","dynamicForte","dynamicRinforzando","dynamicSforzando","dynamicZ","ornamentTrill","ornamentTurn","ornamentTurnSlash","ornamentMordent","ornamentShortTrill","ornamentTremblement","ornamentPrecompAppoggTrill","ornamentPrecompSlideTrillDAnglebert","ornamentPrecompSlideTrillBach","ornamentPrecompTrillSuffixDandrieu","ornamentPrecompDoubleCadenceUpperPrefix","ornamentPrecompDoubleCadenceUpperPrefixTurn","ornamentPrecompTrillLowerSuffix","brassScoop","brassDoitMedium","brassFallLipShort","brassLiftMedium","brassFallRoughMedium","brassBend","brassMuteClosed","brassMuteOpen","brassFlip","brassJazzTurn","brassSmear","stringsDownBow","stringsUpBow","stringsHarmonic","pluckedSnapPizzicatoAbove","pluckedSnapPizzicatoBelow","pluckedLeftHandPizzicato","keyboardPedalPed","keyboardPedalUp","pictChokeCymbal","wiggleArpeggiatoUp","arpeggiatoUp","arpeggiatoDown","repeat1Bar","repeat2Bars","repeat4Bars","repeatBarSlash","csymDiminished","csymHalfDiminished","csymAugmented","csymMajorSeventh","csymMinor","csymParensLeftTall","csymParensRightTall","csymBracketLeftTall","csymBracketRightTall","csymParensLeftVeryTall","csymParensRightVeryTall","csymDiagonalArrangementSlash","generatedOn","PetalumaMetrics","endPaddingMax","endPaddingMin","unalignedNotePadding","default","small","smuflCode","shiftX","lineCount","gracenote","pedalMarking","up","down","digits","shiftLine","tupletPoint","tremolo","offsetYStemUp","offsetYStemDown","offsetXStemUp","offsetXStemDown","grace","staveRepetition","symbolText","offsetX","offsetY","heightAdjustmentForFlag","staveTempo","arrowheadBlackDown","straight","wiggly","arrowheadBlackUp","noteheadBlackStemUp","noteheadHalfStemUp","noteheadWholeStemUp","custom","noteheadCircleXStemUp","noteheadCircleXStemDown","noteheadDiamondHalfStemUp","noteheadDiamondBlackStemUp","noteheadDiamondWholeStemUp","noteheadXBlackStemUp","noteheadXHalfStemUp","noteheadXHalfStemDown","noteheadXWholeStemUp","noteheadXWholeStemDown","noteheadXDoubleWholeStemUp","noteheadXDoubleWholeStemDown","noteheadSquareWhiteStemDown","noteheadSquareWhiteStemUp","noteheadSquareBlackStemUp","noteheadTriangleUpWholeStemUp","PetalumaScriptFont","$","I","J","K","N","O","Q","U","V","Y","Z","_","l","RobotoSlabFont","Vex","cmp","eq","newArr","last","canvasSelector","start_time","Date","getTime","setMusicFont","fontData","registerInfo","description","loadTextFonts"],"sourceRoot":""} \ No newline at end of file diff --git a/build/cjs/vexflow.js b/build/cjs/vexflow.js new file mode 100644 index 0000000000..36e78b2690 --- /dev/null +++ b/build/cjs/vexflow.js @@ -0,0 +1,7 @@ +/*! + * VexFlow 4.1.0-alpha.0 2022-10-10T04:47:38.237Z 847bc9014672858aedc7f8460384f51f98d6bd84 + * Copyright (c) 2010 Mohit Muthanna Cheppudira + * https://www.vexflow.com https://github.com/0xfe/vexflow + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Vex=e():t.Vex=e()}("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:this,(function(){return(()=>{"use strict";var t={d:(e,b)=>{for(var i in b)t.o(b,i)&&!t.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:b[i]})}};t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),t.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),t.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var e={};t.d(e,{default:()=>b});var b={};function i(t,e,b=!0){if("object"!=typeof t||null===t)return!1;let i=t.constructor;if(b){for(;null!==t;){if(i=t.constructor,"CATEGORY"in i&&i.CATEGORY===e)return!0;t=Object.getPrototypeOf(t)}return!1}return"CATEGORY"in i&&i.CATEGORY===e}t.r(b),t.d(b,{Accidental:()=>bt,Annotation:()=>ht,AnnotationHorizontalJustify:()=>ot,AnnotationVerticalJustify:()=>rt,Articulation:()=>pt,BEAM_BOTH:()=>Ne,BEAM_LEFT:()=>Fe,BEAM_RIGHT:()=>Ae,BarNote:()=>Bt,Barline:()=>Et,BarlineType:()=>wt,Beam:()=>Oe,Bend:()=>Pt,BoundingBox:()=>z,BoundingBoxComputation:()=>C,Builder:()=>Ve,CanvasContext:()=>Jt,Category:()=>x,ChordSymbol:()=>Ft,ChordSymbolHorizontalJustify:()=>vt,ChordSymbolVerticalJustify:()=>Dt,Clef:()=>ce,ClefNote:()=>Re,Crescendo:()=>Le,Curve:()=>We,CurvePosition:()=>Ue,Dot:()=>At,EasyScore:()=>Je,EasyScoreGrammar:()=>He,Element:()=>O,Factory:()=>Tb,Flow:()=>Bb,Font:()=>F,FontStyle:()=>E,FontWeight:()=>k,Formatter:()=>Ee,Fraction:()=>v,FretHandFinger:()=>Nt,GhostNote:()=>Ze,Glyph:()=>Q,GlyphNote:()=>tb,GraceNote:()=>eb,GraceNoteGroup:()=>Xt,GraceTabNote:()=>wb,KeyManager:()=>vb,KeySigNote:()=>bb,KeySignature:()=>de,Modifier:()=>Z,ModifierContext:()=>me,ModifierPosition:()=>$,MultiMeasureRest:()=>ab,Music:()=>tt,Note:()=>St,NoteHead:()=>Ot,NoteSubGroup:()=>Ht,Ornament:()=>Vt,OutlineCode:()=>K,Parenthesis:()=>Kt,Parser:()=>Ge,PedalMarking:()=>sb,Piece:()=>je,Registry:()=>N,RenderContext:()=>ut,Renderer:()=>se,RendererBackends:()=>be,RendererLineEndType:()=>ie,RepeatNote:()=>ob,Repetition:()=>_e,RuntimeError:()=>g,SVGContext:()=>ee,Stave:()=>ve,StaveConnector:()=>ze,StaveHairpin:()=>Db,StaveLine:()=>hb,StaveModifier:()=>kt,StaveModifierPosition:()=>Tt,StaveNote:()=>Ut,StaveSection:()=>xe,StaveTempo:()=>ge,StaveText:()=>ue,StaveTie:()=>Wt,Stem:()=>it,StemmableNote:()=>Rt,StringNumber:()=>le,Stroke:()=>oe,SymbolModifiers:()=>Ct,SymbolTypes:()=>zt,System:()=>mb,TabNote:()=>cb,TabSlide:()=>zb,TabStave:()=>db,TabTie:()=>It,TextBracket:()=>gb,TextBracketPosition:()=>xb,TextDynamics:()=>ub,TextFormatter:()=>lt,TextJustification:()=>ae,TextNote:()=>pe,TickContext:()=>jt,Tickable:()=>yt,TimeSigNote:()=>fb,TimeSignature:()=>Se,TimeSignatureGlyph:()=>ye,Tremolo:()=>Cb,Tuning:()=>kb,Tuplet:()=>Pe,TupletLocation:()=>Be,Vex:()=>Gb,Vibrato:()=>re,VibratoBracket:()=>yb,Voice:()=>Gt,VoiceMode:()=>Yt,Volta:()=>fe,VoltaType:()=>ne,defined:()=>u,drawDot:()=>ft,globalObject:()=>p,isAccidental:()=>a,isAnnotation:()=>n,isBarline:()=>s,isCategory:()=>i,isDot:()=>l,isGraceNote:()=>o,isGraceNoteGroup:()=>r,isHTMLCanvas:()=>$t,isHTMLDiv:()=>qt,isNote:()=>h,isRenderContext:()=>m,isStaveNote:()=>c,isStemmableNote:()=>d,isTabNote:()=>_,log:()=>f,midLine:()=>S,normalizeAngle:()=>w,prefix:()=>T,warn:()=>y});const a=t=>i(t,x.Accidental),n=t=>i(t,x.Annotation),s=t=>i(t,x.Barline),l=t=>i(t,x.Dot),o=t=>i(t,x.GraceNote),r=t=>i(t,x.GraceNoteGroup),h=t=>i(t,x.Note),m=t=>i(t,x.RenderContext),c=t=>i(t,x.StaveNote),d=t=>i(t,x.StemmableNote),_=t=>i(t,x.TabNote);var x;!function(t){t.Accidental="Accidental",t.Annotation="Annotation",t.Articulation="Articulation",t.Barline="Barline",t.BarNote="BarNote",t.Beam="Beam",t.Bend="Bend",t.ChordSymbol="ChordSymbol",t.Clef="Clef",t.ClefNote="ClefNote",t.Crescendo="Crescendo",t.Curve="Curve",t.Dot="Dot",t.Element="Element",t.Fraction="Fraction",t.FretHandFinger="FretHandFinger",t.GhostNote="GhostNote",t.Glyph="Glyph",t.GlyphNote="GlyphNote",t.GraceNote="GraceNote",t.GraceNoteGroup="GraceNoteGroup",t.GraceTabNote="GraceTabNote",t.KeySignature="KeySignature",t.KeySigNote="KeySigNote",t.Modifier="Modifier",t.MultiMeasureRest="MultiMeasureRest",t.Note="Note",t.NoteHead="NoteHead",t.NoteSubGroup="NoteSubGroup",t.Ornament="Ornament",t.Parenthesis="Parenthesis",t.PedalMarking="PedalMarking",t.RenderContext="RenderContext",t.RepeatNote="RepeatNote",t.Repetition="Repetition",t.Stave="Stave",t.StaveConnector="StaveConnector",t.StaveHairpin="StaveHairpin",t.StaveLine="StaveLine",t.StaveModifier="StaveModifier",t.StaveNote="StaveNote",t.StaveSection="StaveSection",t.StaveTempo="StaveTempo",t.StaveText="StaveText",t.StaveTie="StaveTie",t.Stem="Stem",t.StemmableNote="StemmableNote",t.StringNumber="StringNumber",t.Stroke="Stroke",t.System="System",t.TabNote="TabNote",t.TabSlide="TabSlide",t.TabStave="TabStave",t.TabTie="TabTie",t.TextBracket="TextBracket",t.TextDynamics="TextDynamics",t.TextNote="TextNote",t.Tickable="Tickable",t.TimeSignature="TimeSignature",t.TimeSigNote="TimeSigNote",t.Tremolo="Tremolo",t.Tuplet="Tuplet",t.Vibrato="Vibrato",t.VibratoBracket="VibratoBracket",t.Voice="Voice",t.Volta="Volta"}(x||(x={}));class g extends Error{constructor(t,e=""){super("[RuntimeError] "+t+": "+e),this.code=t}}function p(){return"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==t.g?t.g:Function("return this")()}function u(t,e="undefined",b=""){if(void 0===t)throw new g(e,b);return t}function f(t,...e){if(!e)return;const b=Array.prototype.slice.call(e).join(" ");p().console.log(t+": "+b)}function y(...t){const e=t.join(" "),b=new Error;p().console.log("Warning: ",e,b.stack)}function S(t,e){let b=e+(t-e)/2;var i,a;return b%2>0&&(b=((i=10*b)%(a=5)>=a/2?parseInt(""+i/a,10)*a+a:parseInt(""+i/a,10)*a)/10),b}function T(t){return`vf-${t}`}function w(t){return(t%=2*Math.PI)<0&&(t+=2*Math.PI),t}class v{constructor(t,e){this.numerator=1,this.denominator=1,this.set(t,e)}static get CATEGORY(){return x.Fraction}static GCD(t,e){if("number"!=typeof t||Number.isNaN(t)||"number"!=typeof e||Number.isNaN(e))throw new g("BadArgument",`Invalid numbers: ${t}, ${e}`);let b;for(;0!==e;)b=e,e=t%e,t=b;return t}static LCM(t,e){return t*e/v.GCD(t,e)}static LCMM(t){return 0===t.length?0:1===t.length?t[0]:2===t.length?v.LCM(t[0],t[1]):v.LCM(t.shift(),v.LCMM(t))}set(t=1,e=1){return this.numerator=t,this.denominator=e,this}value(){return this.numerator/this.denominator}simplify(){let t=this.numerator,e=this.denominator;const b=v.GCD(t,e);return t/=b,e/=b,e<0&&(e=-e,t=-t),this.set(t,e)}add(t=0,e=1){const[b,i]=D(t,e),a=v.LCM(this.denominator,i),n=a/this.denominator,s=a/i,l=this.numerator*n+b*s;return this.set(l,a)}subtract(t=0,e=1){const[b,i]=D(t,e),a=v.LCM(this.denominator,i),n=a/this.denominator,s=a/i,l=this.numerator*n-b*s;return this.set(l,a)}multiply(t=1,e=1){const[b,i]=D(t,e);return this.set(this.numerator*b,this.denominator*i)}divide(t=1,e=1){const[b,i]=D(t,e);return this.set(this.numerator*i,this.denominator*b)}equals(t){const e=v.__staticFractionA.copy(t).simplify(),b=v.__staticFractionB.copy(this).simplify();return e.numerator===b.numerator&&e.denominator===b.denominator}greaterThan(t){const e=v.__staticFractionB.copy(this);return e.subtract(t),e.numerator>0}greaterThanEquals(t){const e=v.__staticFractionB.copy(this);return e.subtract(t),e.numerator>=0}lessThan(t){return!this.greaterThanEquals(t)}lessThanEquals(t){return!this.greaterThan(t)}clone(){return new v(this.numerator,this.denominator)}copy(t){return"number"==typeof t?this.set(t,1):this.set(t.numerator,t.denominator)}quotient(){return Math.floor(this.numerator/this.denominator)}remainder(){return this.numerator%this.denominator}makeAbs(){return this.denominator=Math.abs(this.denominator),this.numerator=Math.abs(this.numerator),this}toString(){return`${this.numerator}/${this.denominator}`}toSimplifiedString(){return v.__staticFractionTmp.copy(this).simplify().toString()}toMixedString(){let t="";const e=this.quotient(),b=v.__staticFractionTmp.copy(this);return e<0&&b.makeAbs(),0!==e?(t+=e,0!==b.numerator&&(t+=` ${b.toSimplifiedString()}`)):t=0===b.numerator?"0":b.toSimplifiedString(),t}parse(t){const e=t.split("/"),b=parseInt(e[0],10),i=e[1]?parseInt(e[1],10):1;return this.set(b,i)}}function D(t,e=1){return"number"==typeof t?[t,e]:[t.numerator,t.denominator]}v.__staticFractionA=new v,v.__staticFractionB=new v,v.__staticFractionTmp=new v;class z{constructor(t,e,b,i){this.x=t,this.y=e,this.w=b,this.h=i}static copy(t){return new z(t.x,t.y,t.w,t.h)}getX(){return this.x}getY(){return this.y}getW(){return this.w}getH(){return this.h}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setW(t){return this.w=t,this}setH(t){return this.h=t,this}move(t,e){return this.x+=t,this.y+=e,this}clone(){return z.copy(this)}mergeWith(t){const e=t,b=this.xthis.x2)&&(this.x2=t),(isNaN(this.y1)||ethis.y2)&&(this.y2=e)}addX(t){this.addPoint(t,this.y1)}addY(t){this.addPoint(this.x1,t)}addQuadraticCurve(t,e,b,i,a,n){this.addPoint(t,e),this.addPoint(a,n);const s=b-t;let l=s-(a-b);if(0!=l){const e=s/l;if(e>0&&e<1){const i=1-e;this.addX(i*i*t+2*i*e*b+e*e*a)}}const o=i-e;if(l=o-(n-i),0!=l){const t=o/l;if(t>0&&t<1){const b=1-t;this.addY(b*b*e+2*b*t*i+t*t*n)}}}addBezierCurve(t,e,b,i,a,n,s,l){const o=[t,e],r=[b,i],h=[a,n],m=[s,l];let c;this.addPoint(o[0],o[1]),this.addPoint(m[0],m[1]);const d=(t,e)=>Math.pow(1-t,3)*o[e]+3*Math.pow(1-t,2)*t*r[e]+3*(1-t)*Math.pow(t,2)*h[e]+Math.pow(t,3)*m[e];for(c=0;c<=1;c++){const t=6*o[c]-12*r[c]+6*h[c],e=-3*o[c]+9*r[c]-9*h[c]+3*m[c],b=3*r[c]-3*o[c];if(0===e){if(0===t)continue;const e=-b/t;0=600;{const e=parseInt(t,10);return isNaN(e)?"bold"===t.toLowerCase():e>=600}}return!1}static isItalic(t){return!!t&&t.toLowerCase()===E.ITALIC}static loadWebFont(t,e,b=!0){return B(this,void 0,void 0,(function*(){const i=new FontFace(t,(b?`url(${e}2) format('woff2'), `:"")+`url(${e}) format('woff')`);return yield i.load(),document.fonts.add(i),i}))}static loadWebFonts(){return B(this,void 0,void 0,(function*(){const t=F.WEB_FONT_HOST,e=F.WEB_FONT_FILES;for(const b in e){const i=e[b];F.loadWebFont(b,t+i)}}))}static load(t,e,b){let i=M[t];return i||(i=new F(t),M[t]=i),e&&i.setData(e),b&&i.setMetrics(b),i}getName(){return this.name}getData(){return u(this.data,"FontError","Missing font data")}getMetrics(){return u(this.metrics,"FontError","Missing metrics")}setData(t){this.data=t}setMetrics(t){this.metrics=t}hasData(){return void 0!==this.data}getResolution(){return this.getData().resolution}getGlyphs(){return this.getData().glyphs}lookupMetric(t,e){const b=t.split(".");let i=this.getMetrics();for(let t=0;tt[e]))}}return[]}getElementsByType(t){return this.getElementsByAttribute("type",t)}getElementsByClass(t){return this.getElementsByAttribute("class",t)}onUpdate(t){return["id","type","class"].includes(t.name)&&this.updateIndex(t),this}}class O{constructor(){var t;this.children=[],this.attrs={id:O.newID(),el:void 0,type:this.getCategory(),classes:{}},this.rendered=!1,null===(t=N.getDefaultRegistry())||void 0===t||t.register(this)}static get CATEGORY(){return x.Element}static newID(){return"auto"+O.ID++}addChildElement(t){return this.children.push(t),this}getCategory(){return this.constructor.CATEGORY}setStyle(t){return this.style=t,this}setGroupStyle(t){return this.style=t,this.children.forEach((e=>e.setGroupStyle(t))),this}getStyle(){return this.style}applyStyle(t=this.context,e=this.getStyle()){return e&&t?(t.save(),e.shadowColor&&t.setShadowColor(e.shadowColor),e.shadowBlur&&t.setShadowBlur(e.shadowBlur),e.fillStyle&&t.setFillStyle(e.fillStyle),e.strokeStyle&&t.setStrokeStyle(e.strokeStyle),e.lineWidth&&t.setLineWidth(e.lineWidth),this):this}restoreStyle(t=this.context,e=this.getStyle()){return e&&t?(t.restore(),this):this}drawWithStyle(){this.checkContext(),this.applyStyle(),this.draw(),this.restoreStyle()}hasClass(t){return!0===this.attrs.classes[t]}addClass(t){var e;return this.attrs.classes[t]=!0,null===(e=this.registry)||void 0===e||e.onUpdate({id:this.attrs.id,name:"class",value:t,oldValue:void 0}),this}removeClass(t){var e;return delete this.attrs.classes[t],null===(e=this.registry)||void 0===e||e.onUpdate({id:this.attrs.id,name:"class",value:void 0,oldValue:t}),this}onRegister(t){return this.registry=t,this}isRendered(){return this.rendered}setRendered(t=!0){return this.rendered=t,this}getAttributes(){return this.attrs}getAttribute(t){return this.attrs[t]}getSVGElement(t=""){const e=T(this.attrs.id+t),b=document.getElementById(e);if(b)return b}setAttribute(t,e){var b;const i=this.attrs.id,a=this.attrs[t];return this.attrs[t]=e,null===(b=this.registry)||void 0===b||b.onUpdate({id:i,name:t,value:e,oldValue:a}),this}getBoundingBox(){return this.boundingBox}getContext(){return this.context}setContext(t){return this.context=t,this}checkContext(){return u(this.context,"NoContext","No rendering context attached to instance.")}set font(t){this.setFont(t)}get font(){return F.toCSSString(this.textFont)}setFont(t,e,b,i){const a=this.constructor.TEXT_FONT,n="object"==typeof t,s="string"==typeof t,l=void 0===t,o=void 0===e&&void 0===b&&void 0===i;return this.textFont=n?Object.assign(Object.assign({},a),t):s&&o?F.fromCSSString(t):l&&o?Object.assign({},a):F.validate(null!=t?t:a.family,null!=e?e:a.size,null!=b?b:a.weight,null!=i?i:a.style),this}getFont(){return this.textFont||this.resetFont(),F.toCSSString(this.textFont)}resetFont(){this.setFont()}get fontInfo(){return this.textFont||this.resetFont(),Object.assign({},this.textFont)}set fontInfo(t){this.setFont(t)}setFontSize(t){const e=this.fontInfo;return this.setFont(e.family,t,e.weight,e.style),this}getFontSize(){return this.fontSize}set fontSize(t){this.setFontSize(t)}get fontSize(){let t=this.fontInfo.size;return"number"==typeof t&&(t=`${t}pt`),t}get fontSizeInPoints(){return F.convertSizeToPointValue(this.fontSize)}get fontSizeInPixels(){return F.convertSizeToPixelValue(this.fontSize)}get fontStyle(){return this.fontInfo.style}set fontStyle(t){const e=this.fontInfo;this.setFont(e.family,e.size,e.weight,t)}get fontWeight(){return this.fontInfo.weight+""}set fontWeight(t){const e=this.fontInfo;this.setFont(e.family,e.size,t,e.style)}}O.ID=1e3,O.TEXT_FONT={family:F.SANS_SERIF,size:F.SIZE,weight:k.NORMAL,style:E.NORMAL};const R=16384,L={"1/2":32768,1:16384,2:8192,4:4096,8:2048,16:1024,32:512,64:256,128:128,256:64},U={w:"1",h:"2",q:"4",b:"256"},W={C:{num:0},Am:{num:0},F:{acc:"b",num:1},Dm:{acc:"b",num:1},Bb:{acc:"b",num:2},Gm:{acc:"b",num:2},Eb:{acc:"b",num:3},Cm:{acc:"b",num:3},Ab:{acc:"b",num:4},Fm:{acc:"b",num:4},Db:{acc:"b",num:5},Bbm:{acc:"b",num:5},Gb:{acc:"b",num:6},Ebm:{acc:"b",num:6},Cb:{acc:"b",num:7},Abm:{acc:"b",num:7},G:{acc:"#",num:1},Em:{acc:"#",num:1},D:{acc:"#",num:2},Bm:{acc:"#",num:2},A:{acc:"#",num:3},"F#m":{acc:"#",num:3},E:{acc:"#",num:4},"C#m":{acc:"#",num:4},B:{acc:"#",num:5},"G#m":{acc:"#",num:5},"F#":{acc:"#",num:6},"D#m":{acc:"#",num:6},"C#":{acc:"#",num:7},"A#m":{acc:"#",num:7}},I={treble:{line_shift:0},bass:{line_shift:6},tenor:{line_shift:4},alto:{line_shift:3},soprano:{line_shift:1},percussion:{line_shift:0},"mezzo-soprano":{line_shift:2},"baritone-c":{line_shift:5},"baritone-f":{line_shift:5},subbass:{line_shift:7},french:{line_shift:-1}},Y={C:{index:0,int_val:0},CN:{index:0,int_val:0,accidental:"n"},"C#":{index:0,int_val:1,accidental:"#"},"C##":{index:0,int_val:2,accidental:"##"},CB:{index:0,int_val:11,accidental:"b"},CBB:{index:0,int_val:10,accidental:"bb"},D:{index:1,int_val:2},DN:{index:1,int_val:2,accidental:"n"},"D#":{index:1,int_val:3,accidental:"#"},"D##":{index:1,int_val:4,accidental:"##"},DB:{index:1,int_val:1,accidental:"b"},DBB:{index:1,int_val:0,accidental:"bb"},E:{index:2,int_val:4},EN:{index:2,int_val:4,accidental:"n"},"E#":{index:2,int_val:5,accidental:"#"},"E##":{index:2,int_val:6,accidental:"##"},EB:{index:2,int_val:3,accidental:"b"},EBB:{index:2,int_val:2,accidental:"bb"},F:{index:3,int_val:5},FN:{index:3,int_val:5,accidental:"n"},"F#":{index:3,int_val:6,accidental:"#"},"F##":{index:3,int_val:7,accidental:"##"},FB:{index:3,int_val:4,accidental:"b"},FBB:{index:3,int_val:3,accidental:"bb"},G:{index:4,int_val:7},GN:{index:4,int_val:7,accidental:"n"},"G#":{index:4,int_val:8,accidental:"#"},"G##":{index:4,int_val:9,accidental:"##"},GB:{index:4,int_val:6,accidental:"b"},GBB:{index:4,int_val:5,accidental:"bb"},A:{index:5,int_val:9},AN:{index:5,int_val:9,accidental:"n"},"A#":{index:5,int_val:10,accidental:"#"},"A##":{index:5,int_val:11,accidental:"##"},AB:{index:5,int_val:8,accidental:"b"},ABB:{index:5,int_val:7,accidental:"bb"},B:{index:6,int_val:11},BN:{index:6,int_val:11,accidental:"n"},"B#":{index:6,int_val:12,accidental:"#"},"B##":{index:6,int_val:13,accidental:"##"},BB:{index:6,int_val:10,accidental:"b"},BBB:{index:6,int_val:9,accidental:"bb"},R:{index:6,rest:!0},X:{index:6,accidental:"",octave:4,code:"noteheadXBlack",shift_right:5.5}},G={"#":{code:"accidentalSharp",parenRightPaddingAdjustment:-1},"##":{code:"accidentalDoubleSharp",parenRightPaddingAdjustment:-1},b:{code:"accidentalFlat",parenRightPaddingAdjustment:-2},bb:{code:"accidentalDoubleFlat",parenRightPaddingAdjustment:-2},n:{code:"accidentalNatural",parenRightPaddingAdjustment:-1},"{":{code:"accidentalParensLeft",parenRightPaddingAdjustment:-1},"}":{code:"accidentalParensRight",parenRightPaddingAdjustment:-1},db:{code:"accidentalThreeQuarterTonesFlatZimmermann",parenRightPaddingAdjustment:-1},d:{code:"accidentalQuarterToneFlatStein",parenRightPaddingAdjustment:0},"++":{code:"accidentalThreeQuarterTonesSharpStein",parenRightPaddingAdjustment:-1},"+":{code:"accidentalQuarterToneSharpStein",parenRightPaddingAdjustment:-1},"+-":{code:"accidentalKucukMucennebSharp",parenRightPaddingAdjustment:-1},bs:{code:"accidentalBakiyeFlat",parenRightPaddingAdjustment:-1},bss:{code:"accidentalBuyukMucennebFlat",parenRightPaddingAdjustment:-1},o:{code:"accidentalSori",parenRightPaddingAdjustment:-1},k:{code:"accidentalKoron",parenRightPaddingAdjustment:-1},bbs:{code:"vexAccidentalMicrotonal1",parenRightPaddingAdjustment:-1},"++-":{code:"vexAccidentalMicrotonal2",parenRightPaddingAdjustment:-1},ashs:{code:"vexAccidentalMicrotonal3",parenRightPaddingAdjustment:-1},afhf:{code:"vexAccidentalMicrotonal4",parenRightPaddingAdjustment:-1},accSagittal5v7KleismaUp:{code:"accSagittal5v7KleismaUp",parenRightPaddingAdjustment:-1},accSagittal5v7KleismaDown:{code:"accSagittal5v7KleismaDown",parenRightPaddingAdjustment:-1},accSagittal5CommaUp:{code:"accSagittal5CommaUp",parenRightPaddingAdjustment:-1},accSagittal5CommaDown:{code:"accSagittal5CommaDown",parenRightPaddingAdjustment:-1},accSagittal7CommaUp:{code:"accSagittal7CommaUp",parenRightPaddingAdjustment:-1},accSagittal7CommaDown:{code:"accSagittal7CommaDown",parenRightPaddingAdjustment:-1},accSagittal25SmallDiesisUp:{code:"accSagittal25SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal25SmallDiesisDown:{code:"accSagittal25SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittal35MediumDiesisUp:{code:"accSagittal35MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal35MediumDiesisDown:{code:"accSagittal35MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11MediumDiesisUp:{code:"accSagittal11MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11MediumDiesisDown:{code:"accSagittal11MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11LargeDiesisUp:{code:"accSagittal11LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11LargeDiesisDown:{code:"accSagittal11LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittal35LargeDiesisUp:{code:"accSagittal35LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal35LargeDiesisDown:{code:"accSagittal35LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp25SDown:{code:"accSagittalSharp25SDown",parenRightPaddingAdjustment:-1},accSagittalFlat25SUp:{code:"accSagittalFlat25SUp",parenRightPaddingAdjustment:-1},accSagittalSharp7CDown:{code:"accSagittalSharp7CDown",parenRightPaddingAdjustment:-1},accSagittalFlat7CUp:{code:"accSagittalFlat7CUp",parenRightPaddingAdjustment:-1},accSagittalSharp5CDown:{code:"accSagittalSharp5CDown",parenRightPaddingAdjustment:-1},accSagittalFlat5CUp:{code:"accSagittalFlat5CUp",parenRightPaddingAdjustment:-1},accSagittalSharp5v7kDown:{code:"accSagittalSharp5v7kDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v7kUp:{code:"accSagittalFlat5v7kUp",parenRightPaddingAdjustment:-1},accSagittalSharp:{code:"accSagittalSharp",parenRightPaddingAdjustment:-1},accSagittalFlat:{code:"accSagittalFlat",parenRightPaddingAdjustment:-1},accSagittalSharp5v7kUp:{code:"accSagittalSharp5v7kUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v7kDown:{code:"accSagittalFlat5v7kDown",parenRightPaddingAdjustment:-1},accSagittalSharp5CUp:{code:"accSagittalSharp5CUp",parenRightPaddingAdjustment:-1},accSagittalFlat5CDown:{code:"accSagittalFlat5CDown",parenRightPaddingAdjustment:-1},accSagittalSharp7CUp:{code:"accSagittalSharp7CUp",parenRightPaddingAdjustment:-1},accSagittalFlat7CDown:{code:"accSagittalFlat7CDown",parenRightPaddingAdjustment:-1},accSagittalSharp25SUp:{code:"accSagittalSharp25SUp",parenRightPaddingAdjustment:-1},accSagittalFlat25SDown:{code:"accSagittalFlat25SDown",parenRightPaddingAdjustment:-1},accSagittalSharp35MUp:{code:"accSagittalSharp35MUp",parenRightPaddingAdjustment:-1},accSagittalFlat35MDown:{code:"accSagittalFlat35MDown",parenRightPaddingAdjustment:-1},accSagittalSharp11MUp:{code:"accSagittalSharp11MUp",parenRightPaddingAdjustment:-1},accSagittalFlat11MDown:{code:"accSagittalFlat11MDown",parenRightPaddingAdjustment:-1},accSagittalSharp11LUp:{code:"accSagittalSharp11LUp",parenRightPaddingAdjustment:-1},accSagittalFlat11LDown:{code:"accSagittalFlat11LDown",parenRightPaddingAdjustment:-1},accSagittalSharp35LUp:{code:"accSagittalSharp35LUp",parenRightPaddingAdjustment:-1},accSagittalFlat35LDown:{code:"accSagittalFlat35LDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp25SDown:{code:"accSagittalDoubleSharp25SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat25SUp:{code:"accSagittalDoubleFlat25SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7CDown:{code:"accSagittalDoubleSharp7CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7CUp:{code:"accSagittalDoubleFlat7CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5CDown:{code:"accSagittalDoubleSharp5CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5CUp:{code:"accSagittalDoubleFlat5CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v7kDown:{code:"accSagittalDoubleSharp5v7kDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v7kUp:{code:"accSagittalDoubleFlat5v7kUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp:{code:"accSagittalDoubleSharp",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat:{code:"accSagittalDoubleFlat",parenRightPaddingAdjustment:-1},accSagittal7v11KleismaUp:{code:"accSagittal7v11KleismaUp",parenRightPaddingAdjustment:-1},accSagittal7v11KleismaDown:{code:"accSagittal7v11KleismaDown",parenRightPaddingAdjustment:-1},accSagittal17CommaUp:{code:"accSagittal17CommaUp",parenRightPaddingAdjustment:-1},accSagittal17CommaDown:{code:"accSagittal17CommaDown",parenRightPaddingAdjustment:-1},accSagittal55CommaUp:{code:"accSagittal55CommaUp",parenRightPaddingAdjustment:-1},accSagittal55CommaDown:{code:"accSagittal55CommaDown",parenRightPaddingAdjustment:-1},accSagittal7v11CommaUp:{code:"accSagittal7v11CommaUp",parenRightPaddingAdjustment:-1},accSagittal7v11CommaDown:{code:"accSagittal7v11CommaDown",parenRightPaddingAdjustment:-1},accSagittal5v11SmallDiesisUp:{code:"accSagittal5v11SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v11SmallDiesisDown:{code:"accSagittal5v11SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v11SDown:{code:"accSagittalSharp5v11SDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v11SUp:{code:"accSagittalFlat5v11SUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v11CDown:{code:"accSagittalSharp7v11CDown",parenRightPaddingAdjustment:-1},accSagittalFlat7v11CUp:{code:"accSagittalFlat7v11CUp",parenRightPaddingAdjustment:-1},accSagittalSharp55CDown:{code:"accSagittalSharp55CDown",parenRightPaddingAdjustment:-1},accSagittalFlat55CUp:{code:"accSagittalFlat55CUp",parenRightPaddingAdjustment:-1},accSagittalSharp17CDown:{code:"accSagittalSharp17CDown",parenRightPaddingAdjustment:-1},accSagittalFlat17CUp:{code:"accSagittalFlat17CUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v11kDown:{code:"accSagittalSharp7v11kDown",parenRightPaddingAdjustment:-1},accSagittalFlat7v11kUp:{code:"accSagittalFlat7v11kUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v11kUp:{code:"accSagittalSharp7v11kUp",parenRightPaddingAdjustment:-1},accSagittalFlat7v11kDown:{code:"accSagittalFlat7v11kDown",parenRightPaddingAdjustment:-1},accSagittalSharp17CUp:{code:"accSagittalSharp17CUp",parenRightPaddingAdjustment:-1},accSagittalFlat17CDown:{code:"accSagittalFlat17CDown",parenRightPaddingAdjustment:-1},accSagittalSharp55CUp:{code:"accSagittalSharp55CUp",parenRightPaddingAdjustment:-1},accSagittalFlat55CDown:{code:"accSagittalFlat55CDown",parenRightPaddingAdjustment:-1},accSagittalSharp7v11CUp:{code:"accSagittalSharp7v11CUp",parenRightPaddingAdjustment:-1},accSagittalFlat7v11CDown:{code:"accSagittalFlat7v11CDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v11SUp:{code:"accSagittalSharp5v11SUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v11SDown:{code:"accSagittalFlat5v11SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v11SDown:{code:"accSagittalDoubleSharp5v11SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v11SUp:{code:"accSagittalDoubleFlat5v11SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7v11CDown:{code:"accSagittalDoubleSharp7v11CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7v11CUp:{code:"accSagittalDoubleFlat7v11CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp55CDown:{code:"accSagittalDoubleSharp55CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat55CUp:{code:"accSagittalDoubleFlat55CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp17CDown:{code:"accSagittalDoubleSharp17CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat17CUp:{code:"accSagittalDoubleFlat17CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7v11kDown:{code:"accSagittalDoubleSharp7v11kDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7v11kUp:{code:"accSagittalDoubleFlat7v11kUp",parenRightPaddingAdjustment:-1},accSagittal23CommaUp:{code:"accSagittal23CommaUp",parenRightPaddingAdjustment:-1},accSagittal23CommaDown:{code:"accSagittal23CommaDown",parenRightPaddingAdjustment:-1},accSagittal5v19CommaUp:{code:"accSagittal5v19CommaUp",parenRightPaddingAdjustment:-1},accSagittal5v19CommaDown:{code:"accSagittal5v19CommaDown",parenRightPaddingAdjustment:-1},accSagittal5v23SmallDiesisUp:{code:"accSagittal5v23SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v23SmallDiesisDown:{code:"accSagittal5v23SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v23SDown:{code:"accSagittalSharp5v23SDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v23SUp:{code:"accSagittalFlat5v23SUp",parenRightPaddingAdjustment:-1},accSagittalSharp5v19CDown:{code:"accSagittalSharp5v19CDown",parenRightPaddingAdjustment:-1},accSagittalFlat5v19CUp:{code:"accSagittalFlat5v19CUp",parenRightPaddingAdjustment:-1},accSagittalSharp23CDown:{code:"accSagittalSharp23CDown",parenRightPaddingAdjustment:-1},accSagittalFlat23CUp:{code:"accSagittalFlat23CUp",parenRightPaddingAdjustment:-1},accSagittalSharp23CUp:{code:"accSagittalSharp23CUp",parenRightPaddingAdjustment:-1},accSagittalFlat23CDown:{code:"accSagittalFlat23CDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v19CUp:{code:"accSagittalSharp5v19CUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v19CDown:{code:"accSagittalFlat5v19CDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v23SUp:{code:"accSagittalSharp5v23SUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v23SDown:{code:"accSagittalFlat5v23SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v23SDown:{code:"accSagittalDoubleSharp5v23SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v23SUp:{code:"accSagittalDoubleFlat5v23SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp5v19CDown:{code:"accSagittalDoubleSharp5v19CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat5v19CUp:{code:"accSagittalDoubleFlat5v19CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp23CDown:{code:"accSagittalDoubleSharp23CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat23CUp:{code:"accSagittalDoubleFlat23CUp",parenRightPaddingAdjustment:-1},accSagittal19SchismaUp:{code:"accSagittal19SchismaUp",parenRightPaddingAdjustment:-1},accSagittal19SchismaDown:{code:"accSagittal19SchismaDown",parenRightPaddingAdjustment:-1},accSagittal17KleismaUp:{code:"accSagittal17KleismaUp",parenRightPaddingAdjustment:-1},accSagittal17KleismaDown:{code:"accSagittal17KleismaDown",parenRightPaddingAdjustment:-1},accSagittal143CommaUp:{code:"accSagittal143CommaUp",parenRightPaddingAdjustment:-1},accSagittal143CommaDown:{code:"accSagittal143CommaDown",parenRightPaddingAdjustment:-1},accSagittal11v49CommaUp:{code:"accSagittal11v49CommaUp",parenRightPaddingAdjustment:-1},accSagittal11v49CommaDown:{code:"accSagittal11v49CommaDown",parenRightPaddingAdjustment:-1},accSagittal19CommaUp:{code:"accSagittal19CommaUp",parenRightPaddingAdjustment:-1},accSagittal19CommaDown:{code:"accSagittal19CommaDown",parenRightPaddingAdjustment:-1},accSagittal7v19CommaUp:{code:"accSagittal7v19CommaUp",parenRightPaddingAdjustment:-1},accSagittal7v19CommaDown:{code:"accSagittal7v19CommaDown",parenRightPaddingAdjustment:-1},accSagittal49SmallDiesisUp:{code:"accSagittal49SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal49SmallDiesisDown:{code:"accSagittal49SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittal23SmallDiesisUp:{code:"accSagittal23SmallDiesisUp",parenRightPaddingAdjustment:-1},accSagittal23SmallDiesisDown:{code:"accSagittal23SmallDiesisDown",parenRightPaddingAdjustment:-1},accSagittal5v13MediumDiesisUp:{code:"accSagittal5v13MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v13MediumDiesisDown:{code:"accSagittal5v13MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11v19MediumDiesisUp:{code:"accSagittal11v19MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11v19MediumDiesisDown:{code:"accSagittal11v19MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal49MediumDiesisUp:{code:"accSagittal49MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal49MediumDiesisDown:{code:"accSagittal49MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal5v49MediumDiesisUp:{code:"accSagittal5v49MediumDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v49MediumDiesisDown:{code:"accSagittal5v49MediumDiesisDown",parenRightPaddingAdjustment:-1},accSagittal49LargeDiesisUp:{code:"accSagittal49LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal49LargeDiesisDown:{code:"accSagittal49LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittal11v19LargeDiesisUp:{code:"accSagittal11v19LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal11v19LargeDiesisDown:{code:"accSagittal11v19LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittal5v13LargeDiesisUp:{code:"accSagittal5v13LargeDiesisUp",parenRightPaddingAdjustment:-1},accSagittal5v13LargeDiesisDown:{code:"accSagittal5v13LargeDiesisDown",parenRightPaddingAdjustment:-1},accSagittalSharp23SDown:{code:"accSagittalSharp23SDown",parenRightPaddingAdjustment:-1},accSagittalFlat23SUp:{code:"accSagittalFlat23SUp",parenRightPaddingAdjustment:-1},accSagittalSharp49SDown:{code:"accSagittalSharp49SDown",parenRightPaddingAdjustment:-1},accSagittalFlat49SUp:{code:"accSagittalFlat49SUp",parenRightPaddingAdjustment:-1},accSagittalSharp7v19CDown:{code:"accSagittalSharp7v19CDown",parenRightPaddingAdjustment:-1},accSagittalFlat7v19CUp:{code:"accSagittalFlat7v19CUp",parenRightPaddingAdjustment:-1},accSagittalSharp19CDown:{code:"accSagittalSharp19CDown",parenRightPaddingAdjustment:-1},accSagittalFlat19CUp:{code:"accSagittalFlat19CUp",parenRightPaddingAdjustment:-1},accSagittalSharp11v49CDown:{code:"accSagittalSharp11v49CDown",parenRightPaddingAdjustment:-1},accSagittalFlat11v49CUp:{code:"accSagittalFlat11v49CUp",parenRightPaddingAdjustment:-1},accSagittalSharp143CDown:{code:"accSagittalSharp143CDown",parenRightPaddingAdjustment:-1},accSagittalFlat143CUp:{code:"accSagittalFlat143CUp",parenRightPaddingAdjustment:-1},accSagittalSharp17kDown:{code:"accSagittalSharp17kDown",parenRightPaddingAdjustment:-1},accSagittalFlat17kUp:{code:"accSagittalFlat17kUp",parenRightPaddingAdjustment:-1},accSagittalSharp19sDown:{code:"accSagittalSharp19sDown",parenRightPaddingAdjustment:-1},accSagittalFlat19sUp:{code:"accSagittalFlat19sUp",parenRightPaddingAdjustment:-1},accSagittalSharp19sUp:{code:"accSagittalSharp19sUp",parenRightPaddingAdjustment:-1},accSagittalFlat19sDown:{code:"accSagittalFlat19sDown",parenRightPaddingAdjustment:-1},accSagittalSharp17kUp:{code:"accSagittalSharp17kUp",parenRightPaddingAdjustment:-1},accSagittalFlat17kDown:{code:"accSagittalFlat17kDown",parenRightPaddingAdjustment:-1},accSagittalSharp143CUp:{code:"accSagittalSharp143CUp",parenRightPaddingAdjustment:-1},accSagittalFlat143CDown:{code:"accSagittalFlat143CDown",parenRightPaddingAdjustment:-1},accSagittalSharp11v49CUp:{code:"accSagittalSharp11v49CUp",parenRightPaddingAdjustment:-1},accSagittalFlat11v49CDown:{code:"accSagittalFlat11v49CDown",parenRightPaddingAdjustment:-1},accSagittalSharp19CUp:{code:"accSagittalSharp19CUp",parenRightPaddingAdjustment:-1},accSagittalFlat19CDown:{code:"accSagittalFlat19CDown",parenRightPaddingAdjustment:-1},accSagittalSharp7v19CUp:{code:"accSagittalSharp7v19CUp",parenRightPaddingAdjustment:-1},accSagittalFlat7v19CDown:{code:"accSagittalFlat7v19CDown",parenRightPaddingAdjustment:-1},accSagittalSharp49SUp:{code:"accSagittalSharp49SUp",parenRightPaddingAdjustment:-1},accSagittalFlat49SDown:{code:"accSagittalFlat49SDown",parenRightPaddingAdjustment:-1},accSagittalSharp23SUp:{code:"accSagittalSharp23SUp",parenRightPaddingAdjustment:-1},accSagittalFlat23SDown:{code:"accSagittalFlat23SDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v13MUp:{code:"accSagittalSharp5v13MUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v13MDown:{code:"accSagittalFlat5v13MDown",parenRightPaddingAdjustment:-1},accSagittalSharp11v19MUp:{code:"accSagittalSharp11v19MUp",parenRightPaddingAdjustment:-1},accSagittalFlat11v19MDown:{code:"accSagittalFlat11v19MDown",parenRightPaddingAdjustment:-1},accSagittalSharp49MUp:{code:"accSagittalSharp49MUp",parenRightPaddingAdjustment:-1},accSagittalFlat49MDown:{code:"accSagittalFlat49MDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v49MUp:{code:"accSagittalSharp5v49MUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v49MDown:{code:"accSagittalFlat5v49MDown",parenRightPaddingAdjustment:-1},accSagittalSharp49LUp:{code:"accSagittalSharp49LUp",parenRightPaddingAdjustment:-1},accSagittalFlat49LDown:{code:"accSagittalFlat49LDown",parenRightPaddingAdjustment:-1},accSagittalSharp11v19LUp:{code:"accSagittalSharp11v19LUp",parenRightPaddingAdjustment:-1},accSagittalFlat11v19LDown:{code:"accSagittalFlat11v19LDown",parenRightPaddingAdjustment:-1},accSagittalSharp5v13LUp:{code:"accSagittalSharp5v13LUp",parenRightPaddingAdjustment:-1},accSagittalFlat5v13LDown:{code:"accSagittalFlat5v13LDown",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp23SDown:{code:"accSagittalDoubleSharp23SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat23SUp:{code:"accSagittalDoubleFlat23SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp49SDown:{code:"accSagittalDoubleSharp49SDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat49SUp:{code:"accSagittalDoubleFlat49SUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp7v19CDown:{code:"accSagittalDoubleSharp7v19CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat7v19CUp:{code:"accSagittalDoubleFlat7v19CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp19CDown:{code:"accSagittalDoubleSharp19CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat19CUp:{code:"accSagittalDoubleFlat19CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp11v49CDown:{code:"accSagittalDoubleSharp11v49CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat11v49CUp:{code:"accSagittalDoubleFlat11v49CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp143CDown:{code:"accSagittalDoubleSharp143CDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat143CUp:{code:"accSagittalDoubleFlat143CUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp17kDown:{code:"accSagittalDoubleSharp17kDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat17kUp:{code:"accSagittalDoubleFlat17kUp",parenRightPaddingAdjustment:-1},accSagittalDoubleSharp19sDown:{code:"accSagittalDoubleSharp19sDown",parenRightPaddingAdjustment:-1},accSagittalDoubleFlat19sUp:{code:"accSagittalDoubleFlat19sUp",parenRightPaddingAdjustment:-1},accSagittalShaftUp:{code:"accSagittalShaftUp",parenRightPaddingAdjustment:-1},accSagittalShaftDown:{code:"accSagittalShaftDown",parenRightPaddingAdjustment:-1},accSagittalAcute:{code:"accSagittalAcute",parenRightPaddingAdjustment:-1},accSagittalGrave:{code:"accSagittalGrave",parenRightPaddingAdjustment:-1},accSagittal1MinaUp:{code:"accSagittal1MinaUp",parenRightPaddingAdjustment:-1},accSagittal1MinaDown:{code:"accSagittal1MinaDown",parenRightPaddingAdjustment:-1},accSagittal2MinasUp:{code:"accSagittal2MinasUp",parenRightPaddingAdjustment:-1},accSagittal2MinasDown:{code:"accSagittal2MinasDown",parenRightPaddingAdjustment:-1},accSagittal1TinaUp:{code:"accSagittal1TinaUp",parenRightPaddingAdjustment:-1},accSagittal1TinaDown:{code:"accSagittal1TinaDown",parenRightPaddingAdjustment:-1},accSagittal2TinasUp:{code:"accSagittal2TinasUp",parenRightPaddingAdjustment:-1},accSagittal2TinasDown:{code:"accSagittal2TinasDown",parenRightPaddingAdjustment:-1},accSagittal3TinasUp:{code:"accSagittal3TinasUp",parenRightPaddingAdjustment:-1},accSagittal3TinasDown:{code:"accSagittal3TinasDown",parenRightPaddingAdjustment:-1},accSagittal4TinasUp:{code:"accSagittal4TinasUp",parenRightPaddingAdjustment:-1},accSagittal4TinasDown:{code:"accSagittal4TinasDown",parenRightPaddingAdjustment:-1},accSagittal5TinasUp:{code:"accSagittal5TinasUp",parenRightPaddingAdjustment:-1},accSagittal5TinasDown:{code:"accSagittal5TinasDown",parenRightPaddingAdjustment:-1},accSagittal6TinasUp:{code:"accSagittal6TinasUp",parenRightPaddingAdjustment:-1},accSagittal6TinasDown:{code:"accSagittal6TinasDown",parenRightPaddingAdjustment:-1},accSagittal7TinasUp:{code:"accSagittal7TinasUp",parenRightPaddingAdjustment:-1},accSagittal7TinasDown:{code:"accSagittal7TinasDown",parenRightPaddingAdjustment:-1},accSagittal8TinasUp:{code:"accSagittal8TinasUp",parenRightPaddingAdjustment:-1},accSagittal8TinasDown:{code:"accSagittal8TinasDown",parenRightPaddingAdjustment:-1},accSagittal9TinasUp:{code:"accSagittal9TinasUp",parenRightPaddingAdjustment:-1},accSagittal9TinasDown:{code:"accSagittal9TinasDown",parenRightPaddingAdjustment:-1},accSagittalFractionalTinaUp:{code:"accSagittalFractionalTinaUp",parenRightPaddingAdjustment:-1},accSagittalFractionalTinaDown:{code:"accSagittalFractionalTinaDown",parenRightPaddingAdjustment:-1},accidentalNarrowReversedFlat:{code:"accidentalNarrowReversedFlat",parenRightPaddingAdjustment:-1},accidentalNarrowReversedFlatAndFlat:{code:"accidentalNarrowReversedFlatAndFlat",parenRightPaddingAdjustment:-1},accidentalWilsonPlus:{code:"accidentalWilsonPlus",parenRightPaddingAdjustment:-1},accidentalWilsonMinus:{code:"accidentalWilsonMinus",parenRightPaddingAdjustment:-1}},X={"a.":{code:"augmentationDot",between_lines:!0},av:{aboveCode:"articStaccatissimoAbove",belowCode:"articStaccatissimoBelow",between_lines:!0},"a>":{aboveCode:"articAccentAbove",belowCode:"articAccentBelow",between_lines:!0},"a-":{aboveCode:"articTenutoAbove",belowCode:"articTenutoBelow",between_lines:!0},"a^":{aboveCode:"articMarcatoAbove",belowCode:"articMarcatoBelow",between_lines:!1},"a+":{code:"pluckedLeftHandPizzicato",between_lines:!1},ao:{aboveCode:"pluckedSnapPizzicatoAbove",belowCode:"pluckedSnapPizzicatoBelow",between_lines:!1},ah:{code:"stringsHarmonic",between_lines:!1},"a@":{aboveCode:"fermataAbove",belowCode:"fermataBelow",between_lines:!1},"a@a":{code:"fermataAbove",between_lines:!1},"a@u":{code:"fermataBelow",between_lines:!1},"a@s":{aboveCode:"fermataShortAbove",belowCode:"fermataShortBelow",between_lines:!1},"a@as":{code:"fermataShortAbove",between_lines:!1},"a@us":{code:"fermataShortBelow",between_lines:!1},"a@l":{aboveCode:"fermataLongAbove",belowCode:"fermataLongBelow",between_lines:!1},"a@al":{code:"fermataLongAbove",between_lines:!1},"a@ul":{code:"fermataLongBelow",between_lines:!1},"a@vl":{aboveCode:"fermataVeryLongAbove",belowCode:"fermataVeryLongBelow",between_lines:!1},"a@avl":{code:"fermataVeryLongAbove",between_lines:!1},"a@uvl":{code:"fermataVeryLongBelow",between_lines:!1},"a|":{code:"stringsUpBow",between_lines:!1},am:{code:"stringsDownBow",between_lines:!1},"a,":{code:"pictChokeCymbal",between_lines:!1}},H={mordent:{code:"ornamentShortTrill"},mordent_inverted:{code:"ornamentMordent"},turn:{code:"ornamentTurn"},turn_inverted:{code:"ornamentTurnSlash"},tr:{code:"ornamentTrill"},upprall:{code:"ornamentPrecompSlideTrillDAnglebert"},downprall:{code:"ornamentPrecompDoubleCadenceUpperPrefix"},prallup:{code:"ornamentPrecompTrillSuffixDandrieu"},pralldown:{code:"ornamentPrecompTrillLowerSuffix"},upmordent:{code:"ornamentPrecompSlideTrillBach"},downmordent:{code:"ornamentPrecompDoubleCadenceUpperPrefixTurn"},lineprall:{code:"ornamentPrecompAppoggTrill"},prallprall:{code:"ornamentTremblement"},scoop:{code:"brassScoop"},doit:{code:"brassDoitMedium"},fall:{code:"brassFallLipShort"},doitLong:{code:"brassLiftMedium"},fallLong:{code:"brassFallRoughMedium"},bend:{code:"brassBend"},plungerClosed:{code:"brassMuteClosed"},plungerOpen:{code:"brassMuteOpen"},flip:{code:"brassFlip"},jazzTurn:{code:"brassJazzTurn"},smear:{code:"brassSmear"}};class j{static currentMusicFont(){if(0===j.MUSIC_FONT_STACK.length)throw new g("NoFonts","The font stack is empty. See: await Flow.fetchMusicFont(...); Flow.setMusicFont(...).");return j.MUSIC_FONT_STACK[0]}static clefProperties(t){if(!t||!(t in I))throw new g("BadArgument","Invalid clef: "+t);return I[t]}static keyProperties(t,e="treble",b){let i={octave_shift:0,duration:"4"};"object"==typeof b&&(i=Object.assign(Object.assign({},i),b));const a=j.sanitizeDuration(i.duration),n=t.split("/");if(n.length<2)throw new g("BadArguments",`First argument must be note/octave or note/octave/glyph-code: ${t}`);const s=n[0].toUpperCase(),l=Y[s];if(!l)throw new g("BadArguments","Invalid key name: "+s);l.octave&&(n[1]=l.octave.toString());let o=parseInt(n[1],10);o+=-1*i.octave_shift;let r=(7*o-28+l.index)/2;r+=j.clefProperties(e).line_shift;let h=0;r<=0&&2*r%2==0&&(h=1),r>=6&&2*r%2==0&&(h=-1);const m=void 0!==l.int_val?12*o+l.int_val:void 0,c=l.code,d=l.shift_right;let _={};if(n.length>2&&n[2]){const t=n[2].toUpperCase();_={code:this.codeNoteHead(t,a)}||{}}return Object.assign({key:s,octave:o,line:r,int_value:m,accidental:l.accidental,code:c,stroke:h,shift_right:d,displaced:!1},_)}static integerToNote(t){if(void 0===t||t<0||t>11)throw new g("BadArguments",`integerToNote() requires an integer in the range [0, 11]: ${t}`);const e={0:"C",1:"C#",2:"D",3:"D#",4:"E",5:"F",6:"F#",7:"G",8:"G#",9:"A",10:"A#",11:"B"}[t];if(!e)throw new g("BadArguments",`Unknown note value for integer: ${t}`);return e}static tabToGlyph(t,e=1){let b,i=0,a=0;if("X"===t.toUpperCase()){const t=new Q("accidentalDoubleSharp",j.TABLATURE_FONT_SCALE).getMetrics();if(b="accidentalDoubleSharp",null==t.width||null==t.height)throw new g("InvalidMetrics","Width and height required");i=t.width,a=-t.height/2}else i=j.textWidth(t);return{text:t,code:b,getWidth:()=>i*e,shift_y:a}}static textWidth(t){return 7*t.toString().length}static articulationCodes(t){return X[t]}static accidentalCodes(t){return G[t]}static ornamentCodes(t){return H[t]}static keySignature(t){const e=W[t];if(!e)throw new g("BadKeySignature",`Bad key signature spec: '${t}'`);if(!e.acc)return[];const b={b:[2,.5,2.5,1,3,1.5,3.5],"#":[0,1.5,-.5,1,2.5,.5,2]}[e.acc],i=[];for(let t=0;tQ.getWidth(n,t)}),i)}}j.SOFTMAX_FACTOR=100,j.STEM_WIDTH=1.5,j.STEM_HEIGHT=35,j.STAVE_LINE_THICKNESS=1,j.RENDER_PRECISION_PLACES=3,j.RESOLUTION=R,j.MUSIC_FONT_STACK=[],j.NOTATION_FONT_SCALE=39,j.TABLATURE_FONT_SCALE=39,j.SLASH_NOTEHEAD_WIDTH=15,j.STAVE_LINE_DISTANCE=10,j.TEXT_HEIGHT_OFFSET_HACK=1,j.accidentalMap=G,j.accidentalColumnsTable={1:{a:[1],b:[1]},2:{a:[1,2]},3:{a:[1,3,2],b:[1,2,1],second_on_bottom:[1,2,3]},4:{a:[1,3,4,2],b:[1,2,3,1],spaced_out_tetrachord:[1,2,1,2]},5:{a:[1,3,5,4,2],b:[1,2,4,3,1],spaced_out_pentachord:[1,2,3,2,1],very_spaced_out_pentachord:[1,2,1,2,1]},6:{a:[1,3,5,6,4,2],b:[1,2,4,5,3,1],spaced_out_hexachord:[1,3,2,1,3,2],very_spaced_out_hexachord:[1,2,1,2,1,2]}},j.unicode={sharp:String.fromCharCode(9839),flat:String.fromCharCode(9837),natural:String.fromCharCode(9838),triangle:String.fromCharCode(9651),"o-with-slash":String.fromCharCode(248),degrees:String.fromCharCode(176),circle:String.fromCharCode(9675)},j.validTypes={n:{name:"note"},r:{name:"rest"},h:{name:"harmonic"},m:{name:"muted"},s:{name:"slash"},g:{name:"ghost"},d:{name:"diamond"},x:{name:"x"},ci:{name:"circled"},cx:{name:"circle x"},sf:{name:"slashed"},sb:{name:"slashed backward"},sq:{name:"square"},tu:{name:"triangle up"},td:{name:"triangle down"}},j.TIME4_4={num_beats:4,beat_value:4,resolution:R};const V={"1/2":{common:{stem:!1,stem_offset:0,flag:!1,stem_up_extension:-j.STEM_HEIGHT,stem_down_extension:-j.STEM_HEIGHT,tabnote_stem_up_extension:-j.STEM_HEIGHT,tabnote_stem_down_extension:-j.STEM_HEIGHT,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restDoubleWhole",rest:!0,position:"B/5",dot_shiftY:.5},s:{getWidth:()=>j.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},1:{common:{stem:!1,stem_offset:0,flag:!1,stem_up_extension:-j.STEM_HEIGHT,stem_down_extension:-j.STEM_HEIGHT,tabnote_stem_up_extension:-j.STEM_HEIGHT,tabnote_stem_down_extension:-j.STEM_HEIGHT,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restWhole",leger_code_head:"restWholeLegerLine",rest:!0,position:"D/5",dot_shiftY:.5},s:{getWidth:()=>j.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},2:{common:{stem:!0,stem_offset:0,flag:!1,stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restHalf",leger_code_head:"restHalfLegerLine",stem:!1,rest:!0,position:"B/4",dot_shiftY:-.5},s:{getWidth:()=>j.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},4:{common:{stem:!0,stem_offset:0,flag:!1,stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"restQuarter",stem:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1.5,line_below:1.5},s:{getWidth:()=>j.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},8:{common:{stem:!0,stem_offset:0,flag:!0,beam_count:1,stem_beam_extension:0,code_flag_upstem:"flag8thUp",code_flag_downstem:"flag8thDown",stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest8th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1,line_below:1},s:{getWidth:()=>j.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},16:{common:{beam_count:2,stem_beam_extension:0,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag16thUp",code_flag_downstem:"flag16thDown",stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest16th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1,line_below:2},s:{getWidth:()=>j.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},32:{common:{beam_count:3,stem_beam_extension:7.5,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag32ndUp",code_flag_downstem:"flag32ndDown",stem_up_extension:9,stem_down_extension:9,tabnote_stem_up_extension:9,tabnote_stem_down_extension:9,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest32nd",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-1.5,line_above:2,line_below:2},s:{getWidth:()=>j.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},64:{common:{beam_count:4,stem_beam_extension:15,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag64thUp",code_flag_downstem:"flag64thDown",stem_up_extension:13,stem_down_extension:13,tabnote_stem_up_extension:13,tabnote_stem_down_extension:13,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest64th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-1.5,line_above:2,line_below:3},s:{getWidth:()=>j.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},128:{common:{beam_count:5,stem_beam_extension:22.5,stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag128thUp",code_flag_downstem:"flag128thDown",stem_up_extension:22,stem_down_extension:22,tabnote_stem_up_extension:22,tabnote_stem_down_extension:22,dot_shiftY:0,line_above:0,line_below:0},type:{r:{code_head:"rest128th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-2.5,line_above:3,line_below:3},s:{getWidth:()=>j.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}}};var K,$;!function(t){t[t.MOVE=0]="MOVE",t[t.LINE=1]="LINE",t[t.QUADRATIC=2]="QUADRATIC",t[t.BEZIER=3]="BEZIER"}(K||(K={}));class q{constructor(t,e,b){this.point=-1,this.metrics=Q.loadMetrics(t,e,b),this.bbox=Q.getOutlineBoundingBox(this.metrics.outline,this.metrics.scale,this.metrics.x_shift,this.metrics.y_shift),b&&(this.point=Q.lookupFontMetric(this.metrics.font,b,e,"point",-1))}}class J{constructor(t,e,b,i){this.outline=t,this.originX=e,this.originY=b,this.scale=i,this.i=0,this.precision=1,this.precision=Math.pow(10,j.RENDER_PRECISION_PLACES)}done(){return this.i>=this.outline.length}next(){return Math.round(this.outline[this.i++]*this.precision/this.precision)}nextX(){return Math.round((this.originX+this.outline[this.i++]*this.scale)*this.precision)/this.precision}nextY(){return Math.round((this.originY-this.outline[this.i++]*this.scale)*this.precision)/this.precision}static parse(t){const e=[],b=t.split(" ");let i=0;for(;i{const e=t.getTickContext();a&&t.setStave(a),e.setXOffset(n)}))}}class tt{static get NUM_TONES(){return this.canonical_notes.length}static get roots(){return["c","d","e","f","g","a","b"]}static get root_values(){return[0,2,4,5,7,9,11]}static get root_indices(){return{c:0,d:1,e:2,f:3,g:4,a:5,b:6}}static get canonical_notes(){return["c","c#","d","d#","e","f","f#","g","g#","a","a#","b"]}static get diatonic_intervals(){return["unison","m2","M2","m3","M3","p4","dim5","p5","m6","M6","b7","M7","octave"]}static get diatonic_accidentals(){return{unison:{note:0,accidental:0},m2:{note:1,accidental:-1},M2:{note:1,accidental:0},m3:{note:2,accidental:-1},M3:{note:2,accidental:0},p4:{note:3,accidental:0},dim5:{note:4,accidental:-1},p5:{note:4,accidental:0},m6:{note:5,accidental:-1},M6:{note:5,accidental:0},b7:{note:6,accidental:-1},M7:{note:6,accidental:0},octave:{note:7,accidental:0}}}static get intervals(){return{u:0,unison:0,m2:1,b2:1,min2:1,S:1,H:1,2:2,M2:2,maj2:2,T:2,W:2,m3:3,b3:3,min3:3,M3:4,3:4,maj3:4,4:5,p4:5,"#4":6,b5:6,aug4:6,dim5:6,5:7,p5:7,"#5":8,b6:8,aug5:8,6:9,M6:9,maj6:9,b7:10,m7:10,min7:10,dom7:10,M7:11,maj7:11,8:12,octave:12}}static get scales(){return{major:[2,2,1,2,2,2,1],minor:[2,1,2,2,1,2,2],ionian:[2,2,1,2,2,2,1],dorian:[2,1,2,2,2,1,2],phyrgian:[1,2,2,2,1,2,2],lydian:[2,2,2,1,2,2,1],mixolydian:[2,2,1,2,2,1,2],aeolian:[2,1,2,2,1,2,2],locrian:[1,2,2,1,2,2,2]}}static get scaleTypes(){return{M:tt.scales.major,m:tt.scales.minor}}static get accidentals(){return["bb","b","n","#","##"]}static get noteValues(){return{c:{root_index:0,int_val:0},cn:{root_index:0,int_val:0},"c#":{root_index:0,int_val:1},"c##":{root_index:0,int_val:2},cb:{root_index:0,int_val:11},cbb:{root_index:0,int_val:10},d:{root_index:1,int_val:2},dn:{root_index:1,int_val:2},"d#":{root_index:1,int_val:3},"d##":{root_index:1,int_val:4},db:{root_index:1,int_val:1},dbb:{root_index:1,int_val:0},e:{root_index:2,int_val:4},en:{root_index:2,int_val:4},"e#":{root_index:2,int_val:5},"e##":{root_index:2,int_val:6},eb:{root_index:2,int_val:3},ebb:{root_index:2,int_val:2},f:{root_index:3,int_val:5},fn:{root_index:3,int_val:5},"f#":{root_index:3,int_val:6},"f##":{root_index:3,int_val:7},fb:{root_index:3,int_val:4},fbb:{root_index:3,int_val:3},g:{root_index:4,int_val:7},gn:{root_index:4,int_val:7},"g#":{root_index:4,int_val:8},"g##":{root_index:4,int_val:9},gb:{root_index:4,int_val:6},gbb:{root_index:4,int_val:5},a:{root_index:5,int_val:9},an:{root_index:5,int_val:9},"a#":{root_index:5,int_val:10},"a##":{root_index:5,int_val:11},ab:{root_index:5,int_val:8},abb:{root_index:5,int_val:7},b:{root_index:6,int_val:11},bn:{root_index:6,int_val:11},"b#":{root_index:6,int_val:0},"b##":{root_index:6,int_val:1},bb:{root_index:6,int_val:10},bbb:{root_index:6,int_val:9}}}isValidNoteValue(t){return t>=0&&t=0&&t3)throw new g("BadArguments","Invalid note name: "+t);const e=t.toLowerCase(),b=/^([cdefgab])(b|bb|n|#|##)?$/.exec(e);if(null!==b){return{root:b[1],accidental:b[2]}}throw new g("BadArguments","Invalid note name: "+t)}getKeyParts(t){if(!t||t.length<1)throw new g("BadArguments","Invalid key: "+t);const e=t.toLowerCase(),b=/^([cdefgab])(b|#)?(mel|harm|m|M)?$/.exec(e);if(null!==b){const t=b[1],e=b[2];let i=b[3];return i||(i="M"),{root:t,accidental:e,type:i}}throw new g("BadArguments",`Invalid key: ${t}`)}getNoteValue(t){const e=tt.noteValues[t];if(void 0===e)throw new g("BadArguments",`Invalid note name: ${t}`);return e.int_val}getIntervalValue(t){const e=tt.intervals[t];if(void 0===e)throw new g("BadArguments",`Invalid interval name: ${t}`);return e}getCanonicalNoteName(t){if(!this.isValidNoteValue(t))throw new g("BadArguments",`Invalid note value: ${t}`);return tt.canonical_notes[t]}getCanonicalIntervalName(t){if(!this.isValidIntervalValue(t))throw new g("BadArguments",`Invalid interval value: ${t}`);return tt.diatonic_intervals[t]}getRelativeNoteValue(t,e,b=1){if(1!==b&&-1!==b)throw new g("BadArguments",`Invalid direction: ${b}`);let i=(t+b*e)%tt.NUM_TONES;return i<0&&(i+=tt.NUM_TONES),i}getRelativeNoteName(t,e){const b=this.getNoteParts(t),i=this.getNoteValue(b.root);let a=e-i;if(Math.abs(a)>tt.NUM_TONES-3){let b=1;a>0&&(b=-1);const n=(e+1+(i+1))%tt.NUM_TONES*b;if(Math.abs(n)>2)throw new g("BadArguments",`Notes not related: ${t}, ${e})`);a=n}if(Math.abs(a)>2)throw new g("BadArguments",`Notes not related: ${t}, ${e})`);let n=b.root;if(a>0)for(let t=1;t<=a;++t)n+="#";else if(a<0)for(let t=-1;t>=a;--t)n+="b";return n}getScaleTones(t,e){const b=[t];let i=t;for(let a=0;ae.line-t.line));const h=[];let m,c=0;for(let t=0;tc?e.shift:c,m=e.line}let d=0;for(let t=0;th[b+t],n=t=>t.map(a),s=(t,e)=>{const[b,i]=n([t,e]).map((t=>t.line));return b-i},l=(...t)=>t.map(n).every((([t,e])=>!this.checkCollision(t,e))),o=i-b+1;let r,m,c=this.checkCollision(h[b],h[i])?"a":"b";switch(o){case 3:"a"===c&&.5===s(1,2)&&.5!==s(0,1)&&(c="second_on_bottom");break;case 4:l([0,2],[1,3])&&(c="spaced_out_tetrachord");break;case 5:"b"===c&&l([1,3])&&(c="spaced_out_pentachord",l([0,2],[2,4])&&(c="very_spaced_out_pentachord"));break;case 6:l([0,3],[1,4],[2,5])&&(c="spaced_out_hexachord"),l([0,2],[2,4],[1,3],[3,5])&&(c="very_spaced_out_hexachord")}if(o>=7){let e=2,b=!0;for(;!0===b;){b=!1;for(let t=0;t+em?d:m}else for(r=t;r<=i;r++)m=j.accidentalColumnsTable[o][c][r-t],h[r].column=m,d=d>m?d:m;t=i}const _=[],x=[];for(let t=0;t<=d;t++)_[t]=0,x[t]=0;_[0]=c+a,x[0]=c+a,h.forEach((t=>{t.width>_[t.column]&&(_[t.column]=t.width)}));for(let t=1;t<_.length;t++)x[t]=_[t]+x[t-1];const g=x[x.length-1];let p=0;h.forEach((t=>{let e=0;const b=p+t.numAcc;for(;p0?(i=e.flatLine||e.dblSharpLine?2.5:3,t.dblSharpLine&&(b-=.5)):(i=t.flatLine||t.dblSharpLine?2.5:3,e.dblSharpLine&&(b-=.5));const a=Math.abs(b){const e=new v(0,1);t.getTickables().forEach((t=>{if(t.shouldIgnoreTicks())return;const a=i[e.value()];a?a.push(t):(b.push(e.value()),i[e.value()]=[t]),e.add(t.getTicks())}))}));const n=new tt;e||(e="C");const s=n.createScaleMap(e),l={};b.forEach((t=>{const e=i[t],b=[],o=t=>{if(!c(t)||t.isRest()||t.shouldIgnoreTicks())return;const e=t;e.keys.forEach(((t,i)=>{const o=n.getNoteParts(t.split("/")[0]),r=t.split("/")[1],h=o.accidental||"n",m=o.root+h;l[o.root+r]||(l[o.root+r]=s[o.root]);const c=l[o.root+r]===m,d=b.indexOf(t)>-1;if(e.getModifiers().forEach(((t,b)=>{a(t)&&t.type==h&&t.getIndex()==i&&e.getModifiers().splice(b,1)})),!c||c&&d){l[o.root+r]=m;const a=new bt(h);e.addModifier(a,i),b.push(t)}})),e.getModifiers().forEach((t=>{r(t)&&t.getGraceNotes().forEach(o)}))};e.forEach(o)}))}reset(){const t=this.render_options.font_scale;this.glyph=new Q(this.accidental.code,t),this.glyph.setOriginX(1),this.cautionary&&(this.parenLeft=new Q(j.accidentalCodes("{").code,t),this.parenRight=new Q(j.accidentalCodes("}").code,t),this.parenLeft.setOriginX(1),this.parenRight.setOriginX(1))}getWidth(){if(this.cautionary){const t=u(this.parenLeft),e=u(this.parenRight),b=t.getMetrics().width+e.getMetrics().width+this.render_options.parenLeftPadding+this.render_options.parenRightPadding;return this.glyph.getMetrics().width+b}return this.glyph.getMetrics().width}setNote(t){return u(t,"ArgumentError",`Bad note value: ${t}`),this.note=t,o(t)&&(this.render_options.font_scale=25,this.reset()),this}setAsCautionary(){return this.cautionary=!0,this.render_options.font_scale=28,this.reset(),this}draw(){const{type:t,position:e,index:b,cautionary:i,x_shift:a,y_shift:n,glyph:s,render_options:{parenLeftPadding:l,parenRightPadding:o}}=this,r=this.checkContext(),h=this.checkAttachedNote();this.setRendered();const m=h.getModifierStartXY(e,b);let c=m.x+a;const d=m.y+n;if(et("Rendering: ",t,c,d),i){const t=u(this.parenLeft),e=u(this.parenRight);e.render(r,c,d),c-=e.getMetrics().width,c-=o,c-=this.accidental.parenRightPaddingAdjustment,s.render(r,c,d),c-=s.getMetrics().width,c-=l,t.render(r,c,d)}else s.render(r,c,d)}}bt.DEBUG=!1;class it extends O{constructor(t){super(),this.stem_up_y_offset=0,this.stem_down_y_offset=0,this.stem_up_y_base_offset=0,this.stem_down_y_base_offset=0,this.x_begin=(null==t?void 0:t.x_begin)||0,this.x_end=(null==t?void 0:t.x_end)||0,this.y_top=(null==t?void 0:t.y_top)||0,this.y_bottom=(null==t?void 0:t.y_bottom)||0,this.stem_extension=(null==t?void 0:t.stem_extension)||0,this.stem_direction=(null==t?void 0:t.stem_direction)||0,this.hide=(null==t?void 0:t.hide)||!1,this.isStemlet=(null==t?void 0:t.isStemlet)||!1,this.stemletHeight=(null==t?void 0:t.stemletHeight)||0,this.renderHeightAdjustment=0,this.setOptions(t)}static get CATEGORY(){return x.Stem}static get UP(){return 1}static get DOWN(){return-1}static get WIDTH(){return j.STEM_WIDTH}static get HEIGHT(){return j.STEM_HEIGHT}setOptions(t){this.stem_up_y_offset=(null==t?void 0:t.stem_up_y_offset)||0,this.stem_down_y_offset=(null==t?void 0:t.stem_down_y_offset)||0,this.stem_up_y_base_offset=(null==t?void 0:t.stem_up_y_base_offset)||0,this.stem_down_y_base_offset=(null==t?void 0:t.stem_down_y_base_offset)||0}setNoteHeadXBounds(t,e){return this.x_begin=t,this.x_end=e,this}setDirection(t){this.stem_direction=t}setExtension(t){this.stem_extension=t}getExtension(){return this.stem_extension}setYBounds(t,e){this.y_top=t,this.y_bottom=e}getHeight(){const t=this.stem_direction===it.UP?this.stem_up_y_offset:this.stem_down_y_offset;return(this.y_bottom-this.y_top+(it.HEIGHT-t+this.stem_extension))*this.stem_direction}getBoundingBox(){throw new g("NotImplemented","getBoundingBox() not implemented.")}getExtents(){const t=this.stem_direction===it.UP,e=[this.y_top,this.y_bottom],b=it.HEIGHT+this.stem_extension,i=(t?Math.min:Math.max)(...e),a=(t?Math.max:Math.min)(...e);return{topY:i+b*-this.stem_direction,baseY:a}}setVisibility(t){return this.hide=!t,this}setStemlet(t,e){return this.isStemlet=t,this.stemletHeight=e,this}adjustHeightForFlag(){this.renderHeightAdjustment=j.currentMusicFont().lookupMetric("stem.heightAdjustmentForFlag",-3)}adjustHeightForBeam(){this.renderHeightAdjustment=-it.WIDTH/2}draw(){if(this.setRendered(),this.hide)return;const t=this.checkContext();let e,b;const i=this.stem_direction;let a=0;i===it.DOWN?(e=this.x_begin,b=this.y_top+this.stem_down_y_offset,a=this.stem_down_y_base_offset):(e=this.x_end,b=this.y_bottom-this.stem_up_y_offset,a=this.stem_up_y_base_offset);const n=this.getHeight();!function(...t){it.DEBUG&&f("Vex.Flow.Stem",t)}("Rendering stem - ","Top Y: ",this.y_top,"Bottom Y: ",this.y_bottom);const s=this.isStemlet?n-this.stemletHeight*this.stem_direction:0;t.save(),t.openGroup("stem",this.getAttribute("id"),{pointerBBox:!0}),this.applyStyle(t),t.beginPath(),t.setLineWidth(it.WIDTH),t.moveTo(e,b-s+a),t.lineTo(e,b-n-this.renderHeightAdjustment*i),t.stroke(),this.restoreStyle(t),t.closeGroup(),t.restore()}}function at(...t){lt.DEBUG&&f("Vex.Flow.TextFormatter",t)}it.DEBUG=!1;const nt={},st={};class lt{constructor(t){this.family="",this.size=14,this.resolution=1e3,this.glyphs={},this.serifs=!1,this.monospaced=!1,this.italic=!1,this.bold=!1,this.superscriptOffset=0,this.subscriptOffset=0,this.maxSizeGlyph="H",this.cacheKey="",this.updateParams(t)}static getFontFamilies(){const t=[];for(const e in st){const b=st[e];t.push(Object.assign({},b))}return t}static create(t={}){at("create: ",t),t.family||(t.family=F.SANS_SERIF);const e=[],b=t.family.split(/\s*,\s*/);for(const t of b){for(const b in st)b.startsWith(t)&&e.push(st[b]);if(e.length>0)break}let i;if(0===e.length)i=new lt(Object.values(st)[0]);else if(1===e.length)i=new lt(e[0]);else{const b=F.isBold(t.weight),a=F.isItalic(t.style),n=e.find((t=>t.bold===b&&t.italic===a));if(n)i=new lt(n);else{const t=e.find((t=>t.italic===a||t.bold===b));i=new lt(t||e[0])}}const a=t.size;if(void 0!==a){const t=F.convertSizeToPointValue(a);i.setFontSize(t)}return i}static getInfo(t){return st[t]}static registerInfo(t,e=!1){at("registerInfo: ",t,e);const b=t.family;(void 0===st[b]||e)&&(st[b]=t)}updateParams(t){t.family&&(this.family=t.family),t.resolution&&(this.resolution=t.resolution),t.glyphs&&(this.glyphs=t.glyphs),t.serifs&&(this.serifs=t.serifs),t.monospaced&&(this.monospaced=t.monospaced),t.italic&&(this.italic=t.italic),t.bold&&(this.bold=t.bold),t.maxSizeGlyph&&(this.maxSizeGlyph=t.maxSizeGlyph),t.superscriptOffset&&(this.superscriptOffset=t.superscriptOffset),t.subscriptOffset&&(this.subscriptOffset=t.subscriptOffset),this.updateCacheKey()}updateCacheKey(){const t=this.family.replace(/\s+/g,"_"),e=this.size,b=this.bold?k.BOLD:k.NORMAL,i=this.italic?E.ITALIC:E.NORMAL;this.cacheKey=`${t}%${e}%${b}%${i}`}getGlyphMetrics(t){return this.glyphs[t]?this.glyphs[t]:this.glyphs[this.maxSizeGlyph]}get maxHeight(){return this.getGlyphMetrics(this.maxSizeGlyph).ha/this.resolution*this.fontSizeInPixels}getWidthForCharacterInEm(t){var e;const b=this.getGlyphMetrics(t);if(b){return(null!==(e=b.advanceWidth)&&void 0!==e?e:0)/this.resolution}return.65}getWidthForTextInEm(t){const e=this.cacheKey;let b=nt[e];void 0===b&&(b={},nt[e]=b);let i=b[t];if(void 0===i){i=0;for(let e=0;et>e?t:e)),o+=(this.text_line+1)*j.STAVE_LINE_DISTANCE+s,m&&b===it.DOWN&&(o=Math.max(o,r.topY+s+h*this.text_line))}else if(this.verticalJustification===rt.CENTER){const t=e.getYForTopText(this.text_line)-1;o=t+(c.getYForBottomText(this.text_line)-t)/2+s/2}else if(this.verticalJustification===rt.TOP)o=e.getYs()[0]-(this.text_line+1)*j.STAVE_LINE_DISTANCE,m&&b===it.UP&&(h=r.topY=1}function xt(t,e){return _t(t,e)?e===mt?Math.ceil:Math.floor:Math.round}const gt=t=>c(t)||o(t);class pt extends Z{constructor(t){super(),this.type=t,this.position=ct,this.render_options={font_scale:38},this.reset()}static get CATEGORY(){return x.Articulation}static format(t,e){if(!t||0===t.length)return!1;let b=0;const i=(t,e,b)=>dt(xt(e,b),u(t.glyph.getMetrics().height)/10+.5);t.forEach((t=>{const a=t.checkAttachedNote();b=Math.max(a.getGlyph().getWidth(),b);let n=5;const s=a.hasStem()?a.getStemDirection():it.UP;let l=0;if(d(a)){const t=a.getStem();t&&(l=Math.abs(t.getHeight())/j.STAVE_LINE_DISTANCE)}const o=a.getStave();if(o&&(n=o.getNumLines()),t.getPosition()===mt){let b=a.getLineNumber(!0);s===it.UP&&(b+=l);let o=i(t,e.top_text_line,mt);const r=b+e.top_text_line+.5;!t.articulation.between_lines&&rt.getWidth())).reduce(((t,e)=>Math.max(e,t))),n=Math.min(Math.max(a-b,0),Math.max(a-(e.left_shift+e.right_shift),0));return e.left_shift+=n/2,e.right_shift+=n/2,!0}static easyScoreHook({articulations:t},e,b){if(!t)return;const i={staccato:"a.",tenuto:"a-",accent:"a>"};t.split(",").map((t=>t.trim().split("."))).map((([t,e])=>{const a={type:i[t]};return e&&(a.position=Z.PositionString[e]),b.getFactory().Articulation(a)})).map((t=>e.addModifier(t,0)))}reset(){this.articulation=j.articulationCodes(this.type);const t=u(this.articulation,"ArgumentError",`Articulation not found: ${this.type}`),e=(this.position===mt?t.aboveCode:t.belowCode)||t.code;this.glyph=new Q(null!=e?e:"",this.render_options.font_scale),this.setWidth(u(this.glyph.getMetrics().width))}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const b=this.checkIndex(),{position:i,glyph:a,text_line:n}=this,s=this.articulation.between_lines,l=e.checkStave(),o=l.getSpacingBetweenLines(),r=_(e),{x:h}=e.getModifierStartXY(i,b),m=!s||r,c=function(t,e){const b=e===mt&&t.getStemDirection()===it.UP||e===ct&&t.getStemDirection()===it.DOWN;return gt(t)?t.hasStem()&&b?.5:1:t.hasStem()&&b?1:0}(e,i),d=j.currentMusicFont().lookupMetric(`articulation.${a.getCode()}.padding`,0);let x={[mt]:()=>{a.setOrigin(.5,1);const t=function(t,e){const b=t.getStemDirection(),{topY:i,baseY:a}=t.getStemExtents();if(gt(t))return t.hasStem()?b===it.UP?i:a:Math.min(...t.getYs());if(_(t))return t.hasStem()&&b===it.UP?i:t.checkStave().getYForTopText(e);throw new g("UnknownCategory","Only can get the top and bottom ys of stavenotes and tabnotes")}(e,n)-(n+c)*o;return m?Math.min(l.getYForTopText(pt.INITIAL_OFFSET),t):t},[ct]:()=>{a.setOrigin(.5,0);const t=function(t,e){const b=t.getStemDirection(),{topY:i,baseY:a}=t.getStemExtents();if(gt(t))return t.hasStem()?b===it.UP?a:i:Math.max(...t.getYs());if(_(t))return t.hasStem()?b===it.UP?t.checkStave().getYForBottomText(e):i:t.checkStave().getYForBottomText(e);throw new g("UnknownCategory","Only can get the top and bottom ys of stavenotes and tabnotes")}(e,n)+(n+c)*o;return m?Math.max(l.getYForBottomText(pt.INITIAL_OFFSET),t):t}}[i]();if(!r){const t=i===mt?-1:1,n=e.getKeyProps()[b].line,l=(e.getYs()[b]-x)/o+Number(n),r=function(t,e,b,i){const a=dt(xt(e,b),e);if(t&&_t(a,b)&&a%1==0)return a+.5*-i;return a}(s,l,i,t);_t(r,i)&&a.setOrigin(.5,.5),x+=Math.abs(r-l)*o*t+d*t}!function(...t){pt.DEBUG&&f("Vex.Flow.Articulation",t)}(`Rendering articulation at (x: ${h}, y: ${x})`),a.render(t,h,x)}}pt.DEBUG=!1,pt.INITIAL_OFFSET=-.5;class ut{static get CATEGORY(){return x.RenderContext}set font(t){this.setFont(t)}get font(){return this.getFont()}setRawFont(t){return this.setFont(t),this}}function ft(t,e,b,i="#F55"){t.save(),t.setFillStyle(i),t.beginPath(),t.arc(e,b,3,0,2*Math.PI,!1),t.closePath(),t.fill(),t.restore()}class yt extends O{constructor(){super(),this._preFormatted=!1,this._postFormatted=!1,this.ticks=new v(0,1),this.intrinsicTicks=0,this.tickMultiplier=new v(1,1),this.width=0,this.x_shift=0,this.modifiers=[],this.tupletStack=[],this.align_center=!1,this.center_x_shift=0,this.ignore_ticks=!1,this.formatterMetrics={freedom:{left:0,right:0},duration:"",iterations:0,space:{used:0,mean:0,deviation:0}}}static get CATEGORY(){return x.Tickable}reset(){return this}getTicks(){return this.ticks}shouldIgnoreTicks(){return this.ignore_ticks}setIgnoreTicks(t){return this.ignore_ticks=t,this}setWidth(t){this.width=t}getWidth(){if(!this._preFormatted)throw new g("UnformattedNote","Can't call GetWidth on an unformatted note.");return this.width+(this.modifierContext?this.modifierContext.getWidth():0)}setXShift(t){return this.x_shift=t,this}getXShift(){return this.x_shift}getX(){return this.checkTickContext("Can't getX() without a TickContext.").getX()+this.x_shift}getFormatterMetrics(){return this.formatterMetrics}getCenterXShift(){return this.isCenterAligned()?this.center_x_shift:0}setCenterXShift(t){return this.center_x_shift=t,this}isCenterAligned(){return this.align_center}setCenterAlignment(t){return this.align_center=t,this}getVoice(){return u(this.voice,"NoVoice","Tickable has no voice.")}setVoice(t){this.voice=t}getTuplet(){return this.tuplet}getTupletStack(){return this.tupletStack}resetTuplet(t){let e,b;if(t){const i=this.tupletStack.indexOf(t);return-1!==i&&(this.tupletStack.splice(i,1),e=t.getNoteCount(),b=t.getNotesOccupied(),this.applyTickMultiplier(e,b)),this}for(;this.tupletStack.length;)e=(t=this.tupletStack.pop()).getNoteCount(),b=t.getNotesOccupied(),this.applyTickMultiplier(e,b);return this}setTuplet(t){if(t){this.tupletStack.push(t);const e=t.getNoteCount(),b=t.getNotesOccupied();this.applyTickMultiplier(b,e)}return this.tuplet=t,this}addToModifierContext(t){this.modifierContext=t;for(let t=0;tj.getGlyphProps(this.duration,t))),this.playNote=void 0,this.ignore_ticks=!1,this.width=0,this.leftDisplacedHeadPx=0,this.rightDisplacedHeadPx=0,this.x_shift=0,this.ys=[],t.align_center&&this.setCenterAlignment(t.align_center),this.render_options={annotation_spacing:5,glyph_font_scale:1,stroke_px:1,scale:1,font:"",y_shift:0}}static get CATEGORY(){return x.Note}static plotMetrics(t,e,b){const i=e.getMetrics(),a=e.getAbsoluteX()-i.modLeftPx-i.leftDisplacedHeadPx,n=e.getAbsoluteX()-i.leftDisplacedHeadPx,s=e.getAbsoluteX(),l=e.getAbsoluteX()+i.notePx,o=e.getAbsoluteX()+i.notePx+i.rightDisplacedHeadPx,r=e.getAbsoluteX()+i.notePx+i.rightDisplacedHeadPx+i.modRightPx,h=r+(e.getFormatterMetrics().freedom.right||0),m=r-a;t.save(),t.setFont(F.SANS_SERIF,8),t.fillText(Math.round(m)+"px",a+e.getXShift(),b);const c=b+7;function d(b,i,a,n=c){t.beginPath(),t.setStrokeStyle(a),t.setFillStyle(a),t.setLineWidth(3),t.moveTo(b+e.getXShift(),n),t.lineTo(i+e.getXShift(),n),t.stroke()}d(a,n,"red"),d(n,s,"#999"),d(s,l,"green"),d(l,o,"#999"),d(o,r,"red"),d(r,h,"#DD0"),d(a-e.getXShift(),a,"#BBB"),ft(t,s+e.getXShift(),c,"blue");const _=e.getFormatterMetrics();if(_.iterations>0){const i=_.space.deviation,a=i>=0?"+":"";t.setFillStyle("red"),t.fillText(a+Math.round(i),s+e.getXShift(),b-10)}t.restore()}static parseDuration(t){if(!t)return;const e=/(\d*\/?\d+|[a-z])(d*)([nrhms]|$)/.exec(t);if(!e)return;return{duration:e[1],dots:e[2].length,type:e[3]||"n"}}static parseNoteStruct(t){const e=St.parseDuration(t.duration);if(!e)return;let b=t.type;if(b&&!j.validTypes[b])return;const i=[];b||(b=e.type||"n",void 0!==t.keys&&t.keys.forEach(((t,e)=>{const a=t.split("/");i[e]=a&&3===a.length?a[2]:b})));let a=j.durationToTicks(e.duration);if(!a)return;const n=t.dots?t.dots:e.dots;if("number"!=typeof n)return;let s=a;for(let t=0;t0}hasStem(){return!1}getNoteType(){return this.noteType}getBeam(){return this.beam}checkBeam(){return u(this.beam,"NoBeam","No beam attached to instance")}hasBeam(){return null!=this.beam}setBeam(t){return this.beam=t,this}addModifier(t,e=0){const b="Note.addModifier(modifier: Modifier, index: number=0)";if("string"==typeof e&&(e=parseInt(e),console.warn(b+" expected a number for `index`, but received a string.")),"object"!=typeof t||"number"!=typeof e)throw new g("WrongParams","Incorrect call signature. Use "+b+" instead.");return t.setNote(this),t.setIndex(e),super.addModifier(t),this}getModifiersByType(t){return this.modifiers.filter((e=>e.getCategory()===t))}getModifierStartXY(t,e,b){if(!this.preFormatted)throw new g("UnformattedNote","Can't call GetModifierStartXY on an unformatted note");return{x:this.getAbsoluteX(),y:this.ys[0]}}getRightParenthesisPx(t){return this.getKeyProps()[t].displaced?this.getRightDisplacedHeadPx():0}getLeftParenthesisPx(t){return this.getKeyProps()[t].displaced?this.getLeftDisplacedHeadPx()-this.x_shift:-this.x_shift}getFirstDotPx(){let t=this.getRightDisplacedHeadPx();return 0!==this.checkModifierContext().getMembers("Parenthesis").length&&(t+=j.currentMusicFont().lookupMetric("parenthesis.default.width")),t}getMetrics(){if(!this.preFormatted)throw new g("UnformattedNote","Can't call getMetrics on an unformatted note.");const t=this.modifierContext?this.modifierContext.getState().left_shift:0,e=this.modifierContext?this.modifierContext.getState().right_shift:0,b=this.getWidth();return{width:b,glyphWidth:this.getGlyphWidth(),notePx:b-t-e-this.leftDisplacedHeadPx-this.rightDisplacedHeadPx,modLeftPx:t,modRightPx:e,leftDisplacedHeadPx:this.leftDisplacedHeadPx,rightDisplacedHeadPx:this.rightDisplacedHeadPx,glyphPx:0}}getAbsoluteX(){let t=this.checkTickContext("Can't getAbsoluteX() without a TickContext.").getX();return this.stave&&(t+=this.stave.getNoteStartX()+j.currentMusicFont().lookupMetric("stave.padding")),this.isCenterAligned()&&(t+=this.getCenterXShift()),t}getStemDirection(){throw new g("NoStem","No stem attached to this note.")}getStemExtents(){throw new g("NoStem","No stem attached to this note.")}getTieRightX(){let t=this.getAbsoluteX();return t+=this.glyph.getWidth()/2,t+=-this.width/2+this.width+2,t}getTieLeftX(){let t=this.getAbsoluteX();return t+=this.glyph.getWidth()/2,t-=this.width/2+2,t}getKeys(){return this.keys}getKeyProps(){return this.keyProps}}var Tt,wt,vt,Dt,zt,Ct;!function(t){t[t.CENTER=0]="CENTER",t[t.LEFT=1]="LEFT",t[t.RIGHT=2]="RIGHT",t[t.ABOVE=3]="ABOVE",t[t.BELOW=4]="BELOW",t[t.BEGIN=5]="BEGIN",t[t.END=6]="END"}(Tt||(Tt={}));class kt extends O{constructor(){super(),this.width=0,this.x=0,this.padding=10,this.position=Tt.ABOVE}static get CATEGORY(){return x.StaveModifier}static get Position(){return Tt}getPosition(){return this.position}setPosition(t){return this.position=t,this}getStave(){return this.stave}checkStave(){return u(this.stave,"NoStave","No stave attached to instance.")}setStave(t){return this.stave=t,this}getWidth(){return this.width}setWidth(t){return this.width=t,this}getX(){return this.x}setX(t){return this.x=t,this}placeGlyphOnLine(t,e,b,i=0){t.setYShift(e.getYForLine(null!=b?b:0)-e.getYForGlyphs()+i)}getPadding(t){return void 0!==t&&t<2?0:this.padding}setPadding(t){return this.padding=t,this}setLayoutMetrics(t){return this.layoutMetrics=t,this}getLayoutMetrics(){return this.layoutMetrics}draw(...t){}}!function(t){t[t.SINGLE=1]="SINGLE",t[t.DOUBLE=2]="DOUBLE",t[t.END=3]="END",t[t.REPEAT_BEGIN=4]="REPEAT_BEGIN",t[t.REPEAT_END=5]="REPEAT_END",t[t.REPEAT_BOTH=6]="REPEAT_BOTH",t[t.NONE=7]="NONE"}(wt||(wt={}));class Et extends kt{constructor(t){super(),this.thickness=j.STAVE_LINE_THICKNESS;const e=wt;this.widths={},this.widths[e.SINGLE]=5,this.widths[e.DOUBLE]=5,this.widths[e.END]=5,this.widths[e.REPEAT_BEGIN]=5,this.widths[e.REPEAT_END]=5,this.widths[e.REPEAT_BOTH]=5,this.widths[e.NONE]=5,this.paddings={},this.paddings[e.SINGLE]=0,this.paddings[e.DOUBLE]=0,this.paddings[e.END]=0,this.paddings[e.REPEAT_BEGIN]=15,this.paddings[e.REPEAT_END]=15,this.paddings[e.REPEAT_BOTH]=15,this.paddings[e.NONE]=0,this.layoutMetricsMap={},this.layoutMetricsMap[e.SINGLE]={xMin:0,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.DOUBLE]={xMin:-3,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.END]={xMin:-5,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.REPEAT_END]={xMin:-10,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.REPEAT_BEGIN]={xMin:-2,xMax:10,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.REPEAT_BOTH]={xMin:-10,xMax:10,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[e.NONE]={xMin:0,xMax:0,paddingLeft:5,paddingRight:5},this.setPosition(Tt.BEGIN),this.setType(t)}static get CATEGORY(){return x.Barline}static get type(){return wt}static get typeString(){return{single:wt.SINGLE,double:wt.DOUBLE,end:wt.END,repeatBegin:wt.REPEAT_BEGIN,repeatEnd:wt.REPEAT_END,repeatBoth:wt.REPEAT_BOTH,none:wt.NONE}}getType(){return this.type}setType(t){return this.type="string"==typeof t?Et.typeString[t]:t,this.setWidth(this.widths[this.type]),this.setPadding(this.paddings[this.type]),this.setLayoutMetrics(this.layoutMetricsMap[this.type]),this}draw(t){switch(t.checkContext(),this.setRendered(),this.type){case wt.SINGLE:this.drawVerticalBar(t,this.x,!1);break;case wt.DOUBLE:this.drawVerticalBar(t,this.x,!0);break;case wt.END:this.drawVerticalEndBar(t,this.x);break;case wt.REPEAT_BEGIN:this.drawRepeatBar(t,this.x,!0),t.getX()!==this.x&&this.drawVerticalBar(t,t.getX());break;case wt.REPEAT_END:this.drawRepeatBar(t,this.x,!1);break;case wt.REPEAT_BOTH:this.drawRepeatBar(t,this.x,!1),this.drawRepeatBar(t,this.x,!0)}}drawVerticalBar(t,e,b){const i=t.checkContext(),a=t.getTopLineTopY(),n=t.getBottomLineBottomY();b&&i.fillRect(e-3,a,1,n-a),i.fillRect(e,a,1,n-a)}drawVerticalEndBar(t,e){const b=t.checkContext(),i=t.getTopLineTopY(),a=t.getBottomLineBottomY();b.fillRect(e-5,i,1,a-i),b.fillRect(e-2,i,3,a-i)}drawRepeatBar(t,e,b){const i=t.checkContext(),a=t.getTopLineTopY(),n=t.getBottomLineBottomY();let s=3;b||(s=-5),i.fillRect(e+s,a,1,n-a),i.fillRect(e-2,a,3,n-a);b?s+=4:s-=4;const l=e+s+1;let o=(t.getNumLines()-1)*t.getSpacingBetweenLines();o=o/2-t.getSpacingBetweenLines()/2;let r=a+o+1;i.beginPath(),i.arc(l,r,2,0,2*Math.PI,!1),i.fill(),r+=t.getSpacingBetweenLines(),i.beginPath(),i.arc(l,r,2,0,2*Math.PI,!1),i.fill()}}class Bt extends St{constructor(t=wt.SINGLE){super({duration:"b"}),this.metrics={widths:{}};const e=wt;this.metrics.widths={[e.SINGLE]:8,[e.DOUBLE]:12,[e.END]:15,[e.REPEAT_BEGIN]:14,[e.REPEAT_END]:14,[e.REPEAT_BOTH]:18,[e.NONE]:0},this.ignore_ticks=!0,this.setType(t)}static get CATEGORY(){return x.BarNote}getType(){return this.type}setType(t){return this.type="string"==typeof t?Et.typeString[t]:t,this.setWidth(this.metrics.widths[this.type]),this}addToModifierContext(t){return this}preFormat(){return this.preFormatted=!0,this}draw(){const t=this.checkContext();!function(...t){Bt.DEBUG&&f("Vex.Flow.BarNote",t)}("Rendering bar line at: ",this.getAbsoluteX()),this.applyStyle(t);const e=new Et(this.type);e.setX(this.getAbsoluteX()),e.draw(this.checkStave()),this.restoreStyle(t),this.setRendered()}}Bt.DEBUG=!1;class Pt extends Z{constructor(t,e=!1,b){super(),this.text=t,this.x_shift=0,this.release=e,this.tap="",this.resetFont(),this.render_options={line_width:1.5,line_style:"#777777",bend_width:8,release_width:8},b?this.phrase=b:(this.phrase=[{type:Pt.UP,text:this.text}],this.release&&this.phrase.push({type:Pt.DOWN,text:""})),this.updateWidth()}static get CATEGORY(){return x.Bend}static get UP(){return 0}static get DOWN(){return 1}static format(t,e){if(!t||0===t.length)return!1;let b=0;for(let i=0;it{const n=t+i,s=b;e.save(),e.beginPath(),e.setLineWidth(this.render_options.line_width),e.setStrokeStyle(this.render_options.line_style),e.setFillStyle(this.render_options.line_style),e.moveTo(t,b),e.quadraticCurveTo(n,s,t+i,a),e.stroke(),e.restore()},h=(t,b,i,a)=>{e.save(),e.beginPath(),e.setLineWidth(this.render_options.line_width),e.setStrokeStyle(this.render_options.line_style),e.setFillStyle(this.render_options.line_style),e.moveTo(t,a),e.quadraticCurveTo(t+i,a,t+i,b),e.stroke(),e.restore()},m=(t,b,i)=>{const a=b+4*i;e.beginPath(),e.moveTo(t,b),e.lineTo(t-4,a),e.lineTo(t+4,a),e.closePath(),e.fill()},c=(t,b)=>{e.save(),e.setFont(this.textFont);const i=t-e.measureText(b).width/2;e.fillText(b,i,o),e.restore()};let d,_=0,x=0;if(null===(t=this.tap)||void 0===t?void 0:t.length){c(b.getModifierStartXY(Z.Position.CENTER,this.index).x,this.tap)}for(let t=0;t0){const e=r.symbolBlocks[t-1];Ft.isSuperscript(e)||(a=i)}n&&a>0&&(g=!0,e.xShift=e.xShift+(a-i),i=a,a=0,r.setEnableKerning(!1)),b||n||(a=0),e.vAlign=g,i+=e.width,_=i}if(r.updateKerningAdjustments(),r.updateOverBarAdjustments(),r.getVertical()===Dt.TOP?(r.setTextLine(e.top_text_line),e.top_text_line+=x):(r.setTextLine(e.text_line+1),e.text_line+=x+1),r.getReportWidth()&&d(c)){const t=c.getGlyph().getWidth();r.getHorizontal()===vt.LEFT?(l=Math.max(t,l),n=Math.max(n,_)+Ft.minPadding):r.getHorizontal()===vt.RIGHT?(o=Math.max(t,o),s=Math.max(s,_)):(n=Math.max(n,_/2)+Ft.minPadding,s=Math.max(s,_/2),l=Math.max(t/2,l),o=Math.max(t/2,o))}i=0}const r=Math.min(Math.max(s-o,0),Math.max(s-e.right_shift,0)),h=Math.min(Math.max(n-l,0),Math.max(n-e.left_shift,0));return e.left_shift+=h,e.right_shift+=r,!0}static get TEXT_FONT(){let t="Roboto Slab, Times, serif";return"Petaluma"===j.currentMusicFont().getName()&&(t="PetalumaScript, Arial, sans-serif"),{family:t,size:12,weight:k.NORMAL,style:E.NORMAL}}get superscriptOffset(){return Ft.superscriptOffset*this.textFormatter.fontSizeInPixels}get subscriptOffset(){return Ft.subscriptOffset*this.textFormatter.fontSizeInPixels}setReportWidth(t){return this.reportWidth=t,this}getReportWidth(){return this.reportWidth}updateOverBarAdjustments(){const t=this.symbolBlocks.findIndex((({symbolType:t,glyph:e})=>t===zt.GLYPH&&void 0!==e&&"csymDiagonalArrangementSlash"===e.code));if(t<0)return;const e=this.symbolBlocks[t].width/4,b=.25*this.textFormatter.fontSizeInPixels;let i=0;for(;i0?this.symbolBlocks[t-1]:void 0;let i=0;e.symbolType===zt.GLYPH&&void 0!==e.glyph&&e.glyph.code===Ft.glyphs.over.code&&(i+=e.glyph.metrics.x_shift),void 0!==b&&b.symbolType===zt.GLYPH&&void 0!==b.glyph&&b.glyph.code===Ft.glyphs.over.code&&(i+=b.glyph.metrics.x_shift);let a=!1,n=!1;void 0!==b&&b.symbolType===zt.TEXT&&(a=Ft.upperKerningText.some((t=>t===b.text[b.text.length-1])),n=Ft.lowerKerningText.some((t=>t===b.text[b.text.length-1])));const s=Ft.kerningOffset*this.textFormatter.fontSizeInPixels;return a&&e.symbolModifier===Ct.SUPERSCRIPT&&(i+=s),n&&e.symbolType===zt.TEXT&&(e.text[0]>="a"&&e.text[0]<="z"&&(i+=s/2),Ft.upperKerningText.some((t=>t===(null==b?void 0:b.text[b.text.length-1])))&&(i+=s/2)),i}getSymbolBlock(t={}){var e,b,i;const a=null!==(e=t.symbolType)&&void 0!==e?e:zt.TEXT,n={text:null!==(b=t.text)&&void 0!==b?b:"",symbolType:a,symbolModifier:null!==(i=t.symbolModifier)&&void 0!==i?i:Ct.NONE,xShift:0,yShift:0,vAlign:!1,width:0};if(a===zt.GLYPH&&"string"==typeof t.glyph){const e=Ft.glyphs[t.glyph],b=20;n.glyph=new Q(e.code,b,{category:"chordSymbol"})}else a===zt.TEXT?n.width=this.textFormatter.getWidthForTextInEm(n.text):a===zt.LINE&&(n.width=t.width);return n}addSymbolBlock(t){return this.symbolBlocks.push(this.getSymbolBlock(t)),this}addText(t,e={}){const b=zt.TEXT;return this.addSymbolBlock(Object.assign(Object.assign({},e),{text:t,symbolType:b}))}addTextSuperscript(t){const e=zt.TEXT,b=Ct.SUPERSCRIPT;return this.addSymbolBlock({text:t,symbolType:e,symbolModifier:b})}addTextSubscript(t){const e=zt.TEXT,b=Ct.SUBSCRIPT;return this.addSymbolBlock({text:t,symbolType:e,symbolModifier:b})}addGlyphSuperscript(t){const e=zt.GLYPH,b=Ct.SUPERSCRIPT;return this.addSymbolBlock({glyph:t,symbolType:e,symbolModifier:b})}addGlyph(t,e={}){const b=zt.GLYPH;return this.addSymbolBlock(Object.assign(Object.assign({},e),{glyph:t,symbolType:b}))}addGlyphOrText(t,e={}){let b="";for(let i=0;i0&&(this.addText(b,e),b=""),this.addGlyph(a,e)):b+=a}return b.length>0&&this.addText(b,e),this}addLine(t,e={}){const b=zt.LINE;return this.addSymbolBlock(Object.assign(Object.assign({},e),{symbolType:b,width:t}))}setFont(t,e,b,i){return super.setFont(t,e,b,i),this.textFormatter=lt.create(this.textFont),this}setEnableKerning(t){return this.useKerning=t,this}setVertical(t){return this.vertical="string"==typeof t?Ft.VerticalJustifyString[t]:t,this}getVertical(){return this.vertical}setHorizontal(t){return this.horizontal="string"==typeof t?Ft.HorizontalJustifyString[t]:t,this}getHorizontal(){return this.horizontal}getWidth(){let t=0;return this.symbolBlocks.forEach((e=>{t+=e.vAlign?0:e.width})),t}getYOffsetForText(t){var e;let b=0,i=0;for(i=0;i0?b/a*-1:0}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered(),t.save(),t.openGroup("chordsymbol",this.getAttribute("id"));const b=e.getModifierStartXY(Z.Position.ABOVE,this.index);let i;t.setFont(this.textFont);const a=e.hasStem(),n=e.checkStave();if(this.vertical===Dt.BOTTOM){if(i=n.getYForBottomText(this.text_line+j.TEXT_HEIGHT_OFFSET_HACK),a){const t=e.checkStem().getExtents(),b=n.getSpacingBetweenLines(),a=1===e.getStemDirection()?t.baseY:t.topY;i=Math.max(i,a+b*(this.text_line+2))}}else if(i=Math.min(n.getYForTopText(this.text_line),e.getYs()[0]-10),a){const t=e.checkStem().getExtents(),b=n.getSpacingBetweenLines();i=Math.min(i,t.topY-5-b*this.text_line)}let s=b.x;s=this.horizontal===vt.LEFT?b.x:this.horizontal===vt.RIGHT?b.x+this.getWidth():this.horizontal===vt.CENTER?b.x-this.getWidth()/2:e.getStemX()-this.getWidth()/2,Mt("Rendering ChordSymbol: ",this.textFormatter,s,i),this.symbolBlocks.forEach((e=>{const b=Ft.isSuperscript(e),a=Ft.isSubscript(e);let n=i;if(Mt("shift was ",e.xShift,e.yShift),Mt("curY pre sub ",n),b&&(n+=this.superscriptOffset),a&&(n+=this.subscriptOffset),Mt("curY sup/sub ",n),e.symbolType===zt.TEXT){if((b||a)&&(t.save(),this.textFont)){const{family:e,size:b,weight:i,style:a}=this.textFont,n=F.scaleSize(b,Ft.superSubRatio);t.setFont(e,n,i,a)}Mt("Rendering Text: ",e.text,s+e.xShift,n+e.yShift),t.fillText(e.text,s+e.xShift,n+e.yShift),(b||a)&&t.restore()}else e.symbolType===zt.GLYPH&&e.glyph?(n+=e.yShift,Mt("Rendering Glyph: ",e.glyph.code,s+e.xShift,n),e.glyph.render(t,s+e.xShift,n)):e.symbolType===zt.LINE&&(Mt("Rendering Line : ",e.width,s,n),t.beginPath(),t.setLineWidth(1),t.moveTo(s,i),t.lineTo(s+e.width,n),t.stroke());s+=e.width,e.vAlign&&(s+=e.xShift)})),t.closeGroup(),t.restore()}}Ft.DEBUG=!1,Ft.HorizontalJustify=vt,Ft.HorizontalJustifyString={left:vt.LEFT,right:vt.RIGHT,center:vt.CENTER,centerStem:vt.CENTER_STEM},Ft.VerticalJustify=Dt,Ft.VerticalJustifyString={top:Dt.TOP,above:Dt.TOP,below:Dt.BOTTOM,bottom:Dt.BOTTOM},Ft.glyphs={diminished:{code:"csymDiminished"},dim:{code:"csymDiminished"},halfDiminished:{code:"csymHalfDiminished"},"+":{code:"csymAugmented"},augmented:{code:"csymAugmented"},majorSeventh:{code:"csymMajorSeventh"},minor:{code:"csymMinor"},"-":{code:"csymMinor"},"(":{code:"csymParensLeftTall"},leftParen:{code:"csymParensLeftTall"},")":{code:"csymParensRightTall"},rightParen:{code:"csymParensRightTall"},leftBracket:{code:"csymBracketLeftTall"},rightBracket:{code:"csymBracketRightTall"},leftParenTall:{code:"csymParensLeftVeryTall"},rightParenTall:{code:"csymParensRightVeryTall"},"/":{code:"csymDiagonalArrangementSlash"},over:{code:"csymDiagonalArrangementSlash"},"#":{code:"accidentalSharp"},b:{code:"accidentalFlat"}},Ft.symbolTypes=zt,Ft.symbolModifiers=Ct,Ft.noFormat=!1;class At extends Z{constructor(){super(),this.position=Z.Position.RIGHT,this.radius=2,this.setWidth(5),this.dot_shiftY=0}static get CATEGORY(){return x.Dot}static getDots(t){return t.getModifiersByType(At.CATEGORY)}static buildAndAttach(t,e){for(const b of t)if(null==e?void 0:e.all)for(let t=0;te.line-t.line));let n=b,s=0,l=null,o=null,r=null,h=0;for(let t=0;ts?n:s,l=c,o=b}return e.right_shift+=s,!0}setNote(t){return this.note=t,o(t)&&(this.radius*=.5,this.setWidth(3)),this}setDotShiftY(t){return this.dot_shiftY=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const b=e.checkStave().getSpacingBetweenLines(),i=e.getModifierStartXY(this.position,this.index,{forceFlagRight:!0});_(e)&&(i.y=e.getStemExtents().baseY);const a=i.x+this.x_shift+this.width-this.radius,n=i.y+this.y_shift+this.dot_shiftY*b;t.beginPath(),t.arc(a,n,this.radius,0,2*Math.PI,!1),t.fill()}}class Nt extends Z{constructor(t){super(),this.finger=t,this.width=7,this.position=Z.Position.LEFT,this.x_shift=0,this.y_shift=0,this.x_offset=0,this.y_offset=0,this.resetFont()}static get CATEGORY(){return x.FretHandFinger}static format(t,e){const{left_shift:b,right_shift:i}=e;if(!t||0===t.length)return!1;const a=[];let n=null,s=0,l=0;for(let o=0;oe.line-t.line));let o=0,r=0,h=0,m=0,c=null,d=null;for(let t=0;th?e:h):s===Z.Position.RIGHT&&(_.setXShift(r),e=l+u,m=e>m?e:m),c=x,d=n}return e.left_shift+=h,e.right_shift+=m,!0}static easyScoreHook({fingerings:t}={},e,b){null==t||t.split(",").map((t=>{const e=t.trim().split("."),i={number:e[0]};return e[1]&&(i.position=e[1]),b.getFactory().Fingering(i)})).map(((t,b)=>e.addModifier(t,b)))}setFretHandFinger(t){return this.finger=t,this}getFretHandFinger(){return this.finger}setOffsetX(t){return this.x_offset=t,this}setOffsetY(t){return this.y_offset=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const b=e.getModifierStartXY(this.position,this.index);let i=b.x+this.x_shift+this.x_offset,a=b.y+this.y_shift+this.y_offset+5;switch(this.position){case Z.Position.ABOVE:i-=4,a-=12;break;case Z.Position.BELOW:i-=2,a+=10;break;case Z.Position.LEFT:i-=this.width;break;case Z.Position.RIGHT:i+=1;break;default:throw new g("InvalidPosition",`The position ${this.position} does not exist`)}t.save(),t.setFont(this.textFont),t.fillText(""+this.finger,i,a),t.restore()}}Nt.TEXT_FONT={family:F.SANS_SERIF,size:9,weight:k.BOLD,style:E.NORMAL};class Ot extends St{constructor(t){super(t),this.custom_glyph=!1,this.stem_up_x_offset=0,this.stem_down_x_offset=0,this.index=t.index,this.x=t.x||0,this.y=t.y||0,t.note_type&&(this.noteType=t.note_type),this.displaced=t.displaced||!1,this.stem_direction=t.stem_direction||it.UP,this.line=t.line||0,this.glyph=j.getGlyphProps(this.duration,this.noteType),u(this.glyph,"BadArguments",`No glyph found for duration '${this.duration}' and type '${this.noteType}'`),(this.line>5||this.line<0)&&this.glyph.leger_code_head&&(this.glyph.code_head=this.glyph.leger_code_head),this.glyph_code=this.glyph.code_head,this.x_shift=t.x_shift||0,t.custom_glyph_code&&(this.custom_glyph=!0,this.glyph_code=t.custom_glyph_code,this.stem_up_x_offset=t.stem_up_x_offset||0,this.stem_down_x_offset=t.stem_down_x_offset||0),this.setStyle(t.style),this.slashed=t.slashed||!1,this.render_options=Object.assign(Object.assign({},this.render_options),{glyph_font_scale:t.glyph_font_scale||j.NOTATION_FONT_SCALE}),this.setWidth(this.glyph.getWidth(this.render_options.glyph_font_scale))}static get CATEGORY(){return x.NoteHead}getWidth(){return this.width}isDisplaced(){return!0===this.displaced}getGlyph(){return this.glyph}setX(t){return this.x=t,this}getY(){return this.y}setY(t){return this.y=t,this}getLine(){return this.line}setLine(t){return this.line=t,this}getAbsoluteX(){const t=this.preFormatted?super.getAbsoluteX():this.x,e=it.WIDTH/2,b=j.currentMusicFont(),i=b.lookupMetric("notehead.shiftX",0)*this.stem_direction,a=b.lookupMetric("noteHead.displaced.shiftX",0)*this.stem_direction;return t+i+(this.displaced?(this.width-e)*this.stem_direction+a:0)}getBoundingBox(){if(!this.preFormatted)throw new g("UnformattedNote","Can't call getBoundingBox on an unformatted note.");const t=this.checkStave().getSpacingBetweenLines(),e=t/2,b=this.y-e;return new z(this.getAbsoluteX(),b,this.width,t)}setStave(t){const e=this.getLine();return this.stave=t,this.stave&&(this.setY(this.stave.getYForNote(e)),this.setContext(this.stave.getContext())),this}preFormat(){if(this.preFormatted)return this;const t=this.getWidth()+this.leftDisplacedHeadPx+this.rightDisplacedHeadPx;return this.setWidth(t),this.preFormatted=!0,this}draw(){const t=this.checkContext();this.setRendered();let e=this.getAbsoluteX();this.custom_glyph&&(e+=this.stem_direction===it.UP?this.stem_up_x_offset:this.stem_down_x_offset);const b=this.y;!function(...t){Ot.DEBUG&&f("Vex.Flow.NoteHead",t)}("Drawing note head '",this.noteType,this.duration,"' at",e,b);const i=this.stem_direction,a=this.render_options.glyph_font_scale;this.applyStyle(t);const n=`${this.glyph_code}Stem${i===it.UP?"Up":"Down"}`;if("s"===this.noteType){const a=this.checkStave().getSpacingBetweenLines();!function(t,e,b,i,a,n){const s=j.SLASH_NOTEHEAD_WIDTH;t.save(),t.setLineWidth(j.STEM_WIDTH);let l=!1;if(j.durationToNumber(e)>2&&(l=!0),l||(b-=j.STEM_WIDTH/2*a),t.beginPath(),t.moveTo(b,i+n),t.lineTo(b,i+1),t.lineTo(b+s,i-n),t.lineTo(b+s,i),t.lineTo(b,i+n),t.closePath(),l?t.fill():t.stroke(),j.durationToFraction(e).equals(.5)){const e=[-3,-1,s+1,s+3];for(let a=0;a2&&b++,2===j.durationToNumber(n.note.duration)?e++:j.durationToNumber(n.note.duration)>2&&b++,2!==e&&2!==b||i.note.getModifiersByType(x.Dot).length!==n.note.getModifiersByType(x.Dot).length||t<1&&t>0?(r=o+2,i.stemDirection===n.stemDirection?i.note.setXShift(r):n.note.setXShift(r)):i.note.voice!==n.note.voice&&i.stemDirection===n.stemDirection&&(i.line!=n.line?(r=o+2,i.note.setXShift(r)):1===n.stemDirection&&(n.stemDirection=-1,n.note.setStemDirection(-1)))}else t<1?(r=o+2,i.stemDirection===n.stemDirection?i.note.setXShift(r):n.note.setXShift(r)):i.note.hasStem()?(i.stemDirection=-i.note.getStemDirection(),i.note.setStemDirection(i.stemDirection)):n.note.hasStem()&&(n.stemDirection=-n.note.getStemDirection(),n.note.setStemDirection(n.stemDirection))}return e.right_shift+=r,!0}if(!a)throw new g("InvalidState","noteM not defined.");if(a.isrest&&!i.isrest&&!n.isrest&&(i.minLine<=a.maxLine||a.minLine<=n.maxLine)){return a.maxLine-a.minLinet.postFormat())),!0)}reset(){super.reset();const t=this._noteHeads.map((t=>t.getStyle()));this.buildNoteHeads(),this._noteHeads.forEach(((e,b)=>{const i=t[b];i&&e.setStyle(i)}));const e=this.stave;return e&&this._noteHeads.forEach((t=>t.setStave(e))),this.calcNoteDisplacements(),this}setBeam(t){return this.beam=t,this.calcNoteDisplacements(),this.stem&&this.stem.setExtension(this.getStemExtension()),this}buildStem(){return this.setStem(new it({hide:!!this.isRest()})),this}buildNoteHeads(){this._noteHeads=[];const t=this.getStemDirection(),e=this.getKeys();let b,i,a,n,s,l=!1;t===it.UP?(a=0,n=e.length,s=1):(a=e.length-1,n=-1,s=-1);for(let e=a;e!==n;e+=s){const a=this.sortedKeyProps[e].keyProps,n=a.line;void 0===b?b=n:(i=Math.abs(b-n),0===i||.5===i?l=!l:(l=!1,this.use_default_head_x=!0)),b=n;const s=new Ot({duration:this.duration,note_type:this.noteType,displaced:l,stem_direction:t,custom_glyph_code:a.code,glyph_font_scale:this.render_options.glyph_font_scale,x_shift:a.shift_right,stem_up_x_offset:a.stem_up_x_offset,stem_down_x_offset:a.stem_down_x_offset,line:a.line});this.addChildElement(s),this._noteHeads[this.sortedKeyProps[e].index]=s}}autoStem(){this.setStemDirection(this.calculateOptimalStemDirection())}calculateOptimalStemDirection(){this.minLine=this.sortedKeyProps[0].keyProps.line,this.maxLine=this.sortedKeyProps[this.keyProps.length-1].keyProps.line;return(this.minLine+this.maxLine)/2<3?it.UP:it.DOWN}calculateKeyProps(){let t;for(let e=0;e0&&(this.keyProps[e-1].displaced=!0)),t=n,this.keyProps.push(a)}this.keyProps.forEach(((t,e)=>{this.sortedKeyProps.push({keyProps:t,index:e})})),this.sortedKeyProps.sort(((t,e)=>t.keyProps.line-e.keyProps.line))}getBoundingBox(){var t,e;if(!this.preFormatted)throw new g("UnformattedNote","Can't call getBoundingBox on an unformatted note.");const{width:b,modLeftPx:i,leftDisplacedHeadPx:a}=this.getMetrics(),n=this.getAbsoluteX()-i-a;let s=0,l=0;const o=(null!==(e=null===(t=this.getStave())||void 0===t?void 0:t.getSpacingBetweenLines())&&void 0!==e?e:0)/2,r=2*o;if(this.isRest()){const t=this.ys[0],e=j.durationToFraction(this.duration);e.equals(1)||e.equals(2)?(s=t-o,l=t+o):(s=t-this.glyph.line_above*r,l=t+this.glyph.line_below*r)}else if(this.glyph.stem){const t=this.getStemExtents();t.baseY+=o*this.getStemDirection(),s=Math.min(t.topY,t.baseY),l=Math.max(t.topY,t.baseY)}else{s=0,l=0;for(let t=0;te&&(e=i):i1}hasStem(){return this.glyph.stem}hasFlag(){return super.hasFlag()&&!this.isRest()}getStemX(){return"r"===this.noteType?this.getCenterGlyphX():super.getStemX()+(this.stem_direction?it.WIDTH/(2*-this.stem_direction):0)}getYForTopText(t){const e=this.getStemExtents();return Math.min(this.checkStave().getYForTopText(t),e.topY-this.render_options.annotation_spacing*(t+1))}getYForBottomText(t){const e=this.getStemExtents();return Math.max(this.checkStave().getYForTopText(t),e.baseY+this.render_options.annotation_spacing*t)}setStave(t){super.setStave(t);const e=this._noteHeads.map((e=>(e.setStave(t),e.getY())));if(this.setYs(e),this.stem){const{y_top:t,y_bottom:e}=this.getNoteHeadBounds();this.stem.setYBounds(t,e)}return this}isDisplaced(){return this.displaced}setNoteDisplaced(t){return this.displaced=t,this}getTieRightX(){let t=this.getAbsoluteX();return t+=this.getGlyphWidth()+this.x_shift+this.rightDisplacedHeadPx,this.modifierContext&&(t+=this.modifierContext.getRightShift()),t}getTieLeftX(){let t=this.getAbsoluteX();return t+=this.x_shift-this.leftDisplacedHeadPx,t}getLineForRest(){let t=this.keyProps[0].line;if(this.keyProps.length>1){const e=this.keyProps[this.keyProps.length-1].line;t=S(Math.max(t,e),Math.min(t,e))}return t}getModifierStartXY(t,e,b={}){var i,a;if(!this.preFormatted)throw new g("UnformattedNote","Can't call GetModifierStartXY on an unformatted note");if(0===this.ys.length)throw new g("NoYValues","No Y-Values calculated for this note.");const{ABOVE:n,BELOW:s,LEFT:l,RIGHT:o}=Z.Position;let r=0;return t===l?r=-2:t===o?(r=this.getGlyphWidth()+this.x_shift+2,this.stem_direction===it.UP&&this.hasFlag()&&(b.forceFlagRight||((t,e)=>e===(t.getStemDirection()===it.UP?t.keyProps.length-1:0))(this,e))&&(r+=null!==(a=null===(i=null==this?void 0:this.flag)||void 0===i?void 0:i.getMetrics().width)&&void 0!==a?a:0)):t!==s&&t!==n||(r=this.getGlyphWidth()/2),{x:this.getAbsoluteX()+r,y:this.ys[e]}}setStyle(t){return super.setGroupStyle(t)}setStemStyle(t){const e=this.getStem();return e&&e.setStyle(t),this}getStemStyle(){var t;return null===(t=this.stem)||void 0===t?void 0:t.getStyle()}setLedgerLineStyle(t){this.ledgerLineStyle=t}getLedgerLineStyle(){return this.ledgerLineStyle}setFlagStyle(t){var e;null===(e=this.flag)||void 0===e||e.setStyle(t)}getFlagStyle(){var t;return null===(t=this.flag)||void 0===t?void 0:t.getStyle()}setKeyStyle(t,e){return this._noteHeads[t].setStyle(e),this}setKeyLine(t,e){return this.keyProps[t].line=e,this.reset(),this}getKeyLine(t){return this.keyProps[t].line}getVoiceShiftWidth(){return this.getGlyphWidth()*(this.displaced?2:1)}calcNoteDisplacements(){this.setLeftDisplacedHeadPx(this.displaced&&this.stem_direction===it.DOWN?this.getGlyphWidth():0),this.setRightDisplacedHeadPx(!this.hasFlag()&&this.displaced&&this.stem_direction===it.UP?this.getGlyphWidth():0)}preFormat(){if(this.preFormatted)return;let t=0;this.modifierContext&&(this.modifierContext.preFormat(),0===this.modifierContext.getWidth()&&(t=Ut.minNoteheadPadding));let e=this.getGlyphWidth()+this.leftDisplacedHeadPx+this.rightDisplacedHeadPx+t;this.shouldDrawFlag()&&this.stem_direction===it.UP&&(e+=this.getGlyphWidth()),this.setWidth(e),this.preFormatted=!0}getNoteHeadBounds(){let t,e,b,i,a=1/0,n=-1/0,s=this.checkStave().getNumLines(),l=1,o=s,r=l;return this._noteHeads.forEach((h=>{const m=h.getLine(),c=h.getY();a=Math.min(c,a),n=Math.max(c,n),void 0===e&&h.isDisplaced()&&(e=h.getAbsoluteX()),void 0!==t||h.isDisplaced()||(t=h.getAbsoluteX()),s=Math.max(m,s),l=Math.min(m,l),h.isDisplaced()?(b=void 0===b?m:Math.max(m,b),i=void 0===i?m:Math.min(m,i)):(o=Math.max(m,o),r=Math.min(m,r))}),this),{y_top:a,y_bottom:n,displaced_x:e,non_displaced_x:t,highest_line:s,lowest_line:l,highest_displaced_line:b,lowest_displaced_line:i,highest_non_displaced_line:o,lowest_non_displaced_line:r}}getNoteHeadBeginX(){return this.getAbsoluteX()+this.x_shift}getNoteHeadEndX(){return this.getNoteHeadBeginX()+this.getGlyphWidth()}get noteHeads(){return this._noteHeads.slice()}get note_heads(){return console.warn("StaveNote.note_heads is deprecated. Use StaveNote.noteHeads instead.","This accessor will be removed in VexFlow 5.0."),this.noteHeads}drawLedgerLines(){const t=this.checkStave(),{glyph:e,render_options:{stroke_px:b}}=this,i=this.checkContext(),a=e.getWidth()+2*b,n=2*(e.getWidth()+b)-it.WIDTH/2;if(this.isRest())return;if(!i)throw new g("NoCanvasContext","Can't draw without a canvas context.");const{highest_line:s,lowest_line:l,highest_displaced_line:o,highest_non_displaced_line:r,lowest_displaced_line:h,lowest_non_displaced_line:m,displaced_x:c,non_displaced_x:d}=this.getNoteHeadBounds();if(s<6&&l>0)return;const _=Math.min(null!=c?c:0,null!=d?d:0),x=(t,e,s)=>{let l;l=s&&e?_-b:e?(null!=d?d:0)-b:(null!=c?c:0)-b;const o=e&&s?n:a;i.beginPath(),i.moveTo(l,t),i.lineTo(l+o,t),i.stroke()},p=Object.assign(Object.assign({},t.getDefaultLedgerLineStyle()),this.getLedgerLineStyle());this.applyStyle(i,p);for(let e=6;e<=s;++e){const b=void 0!==d&&e<=r,i=void 0!==o&&e<=o;x(t.getYForNote(e),b,i)}for(let e=0;e>=l;--e){const b=void 0!==d&&e>=m,i=void 0!==h&&e>=h;x(t.getYForNote(e),b,i)}this.restoreStyle(i,p)}drawModifiers(t){const e=this.checkContext();for(let b=0;b{t.openGroup("notehead",e.getAttribute("id"),{pointerBBox:!0}),e.setContext(t).draw(),this.drawModifiers(e),t.closeGroup()}))}drawStem(t){const e=this.checkContext();t&&this.setStem(new it(t)),this.shouldDrawFlag()&&this.stem&&this.stem.adjustHeightForFlag(),this.stem&&this.stem.setContext(e).draw()}getStaveNoteScale(){return 1}getStemExtension(){const t=super.getStemExtension();if(!this.glyph.stem)return t;const e=this.getStemDirection();if(e!==this.calculateOptimalStemDirection())return t;let b;b=e===it.UP?3-this.maxLine:this.minLine-3;const i=b-3.5;if(i<=0)return t;const a=this.getStave();let n=10;return null!=a&&(n=a.getSpacingBetweenLines()),t+i*n}draw(){if(!1===this.render_options.draw)return;if(0===this.ys.length)throw new g("NoYValues","Can't draw note without Y values.");const t=this.checkContext(),e=this.getNoteHeadBeginX(),b=this.hasStem()&&!this.beam;if(this._noteHeads.forEach((t=>t.setX(e))),this.stem){const t=this.getStemX();this.stem.setNoteHeadXBounds(t,t)}!function(...t){Ut.DEBUG&&f("Vex.Flow.StaveNote",t)}("Rendering ",this.isChord()?"chord :":"note :",this.keys),this.applyStyle(),t.openGroup("stavenote",this.getAttribute("id")),this.drawLedgerLines(),b&&this.drawStem(),this.drawNoteHeads(),this.drawFlag(),t.closeGroup(),this.restoreStyle(),this.setRendered()}}Ut.DEBUG=!1;class Wt extends O{constructor(t,e){super(),this.setNotes(t),this.text=e,this.render_options={cp1:8,cp2:12,text_shift_x:0,first_x_shift:0,last_x_shift:0,y_shift:7,tie_spacing:0},this.resetFont()}static get CATEGORY(){return x.StaveTie}setDirection(t){return this.direction=t,this}setNotes(t){if(!t.first_note&&!t.last_note)throw new g("BadArguments","Tie needs to have either first_note or last_note set.");if(t.first_indices||(t.first_indices=[0]),t.last_indices||(t.last_indices=[0]),t.first_indices.length!==t.last_indices.length)throw new g("BadArguments","Tied notes must have same number of indices.");return this.notes=t,this}isPartial(){return!this.notes.first_note||!this.notes.last_note}renderTie(t){if(0===t.first_ys.length||0===t.last_ys.length)throw new g("BadArguments","No Y-values to render");const e=this.checkContext();let b=this.render_options.cp1,i=this.render_options.cp2;Math.abs(t.last_x_px-t.first_x_px)<10&&(b=2,i=8);const a=this.render_options.first_x_shift,n=this.render_options.last_x_shift,s=this.render_options.y_shift*t.direction,l=this.notes.first_indices,o=this.notes.last_indices;for(let r=0;rMath.pow(this.options.softmaxFactor,e.getTicks().value()/t))).reduce(((t,e)=>t+e),0),this.expTicksUsed}softmax(t){this.expTicksUsed||(this.expTicksUsed=this.reCalculateExpTicksUsed());const e=this.ticksUsed.value();return(t=>Math.pow(this.options.softmaxFactor,t/e))(t)/this.expTicksUsed}addTickable(t){if(!t.shouldIgnoreTicks()){const e=t.getTicks();if(this.ticksUsed.add(e),this.expTicksUsed=0,(this.mode===Yt.STRICT||this.mode===Yt.FULL)&&this.ticksUsed.greaterThan(this.totalTicks))throw this.ticksUsed.subtract(e),new g("BadArgument","Too many ticks.");e.lessThan(this.smallestTickCount)&&(this.smallestTickCount=e.clone()),this.resolutionMultiplier=this.ticksUsed.denominator,this.totalTicks.add(0,this.ticksUsed.denominator)}return this.tickables.push(t),t.setVoice(this),this}addTickables(t){for(let e=0;e{e.getStave()||e.setStave(t)})),this.preFormatted=!0,this}checkStave(){return u(this.stave,"NoStave","No stave attached to instance.")}draw(t=this.checkContext(),e){let b;e=null!=e?e:this.stave,this.setRendered();for(let i=0;i1){const e=new Oe(t);e.render_options.beam_width=3,e.render_options.partial_beam_length=4,this.beams.push(e)}return this}setWidth(t){return this.width=t,this}getWidth(){return this.width+Ut.minNoteheadPadding}getGraceNotes(){return this.grace_notes}draw(){const t=this.checkContext(),e=this.checkAttachedNote();if(this.setRendered(),function(...t){Xt.DEBUG&&f("Vex.Flow.GraceNoteGroup",t)}("Drawing grace note group for:",e),this.alignSubNotesWithNote(this.getGraceNotes(),e),this.grace_notes.forEach((e=>e.setContext(t).draw())),this.beams.forEach((e=>e.setContext(t).draw())),this.show_slur){const b=c(e),i=b?Wt:It;this.slur=new i({last_note:this.grace_notes[0],first_note:e,first_indices:[0],last_indices:[0]}),this.slur.render_options.cp2=12,this.slur.render_options.y_shift=(b?7:5)+this.render_options.slur_y_shift,this.slur.setContext(t).draw()}}}Xt.DEBUG=!1;class Ht extends Z{constructor(t){super(),this.preFormatted=!1,this.position=Z.Position.LEFT,this.subNotes=t,this.subNotes.forEach((t=>{t.setIgnoreTicks(!1)})),this.width=0,this.formatter=new Ee,this.voice=new Gt({num_beats:4,beat_value:4,resolution:j.RESOLUTION}).setStrict(!1),this.voice.addTickables(this.subNotes)}static get CATEGORY(){return x.NoteSubGroup}static format(t,e){if(!t||0===t.length)return!1;let b=0;for(let e=0;ee.setContext(t).drawWithStyle()))}}class jt{constructor(t){this.preFormatted=!1,this.postFormatted=!1,this.tickID=t&&t.tickID?t.tickID:0,this.currentTick=new v(0,1),this.maxTicks=new v(0,1),this.maxTickable=void 0,this.minTicks=void 0,this.minTickable=void 0,this.padding=1,this.x=0,this.xBase=0,this.xOffset=0,this.tickables=[],this.tickablesByVoice={},this.notePx=0,this.glyphPx=0,this.leftDisplacedHeadPx=0,this.rightDisplacedHeadPx=0,this.modLeftPx=0,this.modRightPx=0,this.totalLeftPx=0,this.totalRightPx=0,this.tContexts=[],this.width=0,this.formatterMetrics={freedom:{left:0,right:0}}}static getNextContext(t){const e=t.tContexts,b=e.indexOf(t);if(b+1t.isCenterAligned()))}getMetrics(){const{width:t,glyphPx:e,notePx:b,leftDisplacedHeadPx:i,rightDisplacedHeadPx:a,modLeftPx:n,modRightPx:s,totalLeftPx:l,totalRightPx:o}=this;return{width:t,glyphPx:e,notePx:b,leftDisplacedHeadPx:i,rightDisplacedHeadPx:a,modLeftPx:n,modRightPx:s,totalLeftPx:l,totalRightPx:o}}getCurrentTick(){return this.currentTick}setCurrentTick(t){this.currentTick=t,this.preFormatted=!1}addTickable(t,e){if(!t)throw new g("BadArgument","Invalid tickable added.");if(!t.shouldIgnoreTicks()){const e=t.getTicks();e.greaterThan(this.maxTicks)&&(this.maxTicks=e.clone(),this.maxTickable=t),(null==this.minTicks||e.lessThan(this.minTicks))&&(this.minTicks=e.clone(),this.minTickable=t)}return t.setTickContext(this),this.tickables.push(t),this.tickablesByVoice[e||0]=t,this.preFormatted=!1,this}preFormat(){if(this.preFormatted)return this;for(let t=0;t=0,!this.ornament)throw new g("ArgumentError",`Ornament not found: '${this.type}'`);this.x_shift=e?e.xOffset:0,this.y_shift=e?e.yOffset:0,this.glyph=new Q(this.ornament.code,this.render_options.font_scale,{category:`ornament.${this.ornament.code}`}),Vt.ornamentNoteTransition.indexOf(this.type)>=0&&(this.delayed=!0),e||this.glyph.setOrigin(.5,1)}static get CATEGORY(){return x.Ornament}static get minPadding(){return j.currentMusicFont().lookupMetric("glyphs.noteHead.minPadding")}static format(t,e){if(!t||0===t.length)return!1;let b=0,i=e.right_shift,a=e.left_shift,n=0;for(let s=0;s=0&&(l.x_shift+=i+2),Vt.ornamentAttack.indexOf(l.type)>=0&&(l.x_shift-=a+2),l.reportedWidth&&l.x_shift<0?a+=l.reportedWidth:l.reportedWidth&&l.x_shift>=0?i+=l.reportedWidth+Vt.minPadding:b=Math.max(l.getWidth(),b),Vt.ornamentArticulation.indexOf(l.type)>=0){u(l.note,"NoAttachedNote").getLineNumber()>=3||l.getPosition()===Z.Position.ABOVE?(e.top_text_line+=o,l.y_shift+=n,n-=l.glyph.bbox.getH()):(e.text_line+=o,l.y_shift+=n,n+=l.glyph.bbox.getH())}else l.getPosition()===Z.Position.ABOVE?(l.setTextLine(e.top_text_line),e.top_text_line+=o):(l.setTextLine(e.text_line),e.text_line+=o)}return e.left_shift=a+b/2,e.right_shift=i+b/2,!0}static get ornamentNoteTransition(){return["flip","jazzTurn","smear"]}static get ornamentAttack(){return["scoop"]}static get ornamentAlignWithNoteHead(){return["doit","fall","fallLong","doitLong","bend","plungerClosed","plungerOpen","scoop"]}static get ornamentRelease(){return["doit","fall","fallLong","doitLong","jazzTurn","smear","flip"]}static get ornamentArticulation(){return["bend","plungerClosed","plungerOpen"]}getMetrics(){return j.currentMusicFont().getMetrics().glyphs.jazzOrnaments[this.ornament.code]}setDelayed(t){return this.delayed=t,this}setUpperAccidental(t){const e=this.render_options.font_scale/1.3;return this.accidentalUpper=new Q(j.accidentalCodes(t).code,e),this.accidentalUpper.setOrigin(.5,1),this}setLowerAccidental(t){const e=this.render_options.font_scale/1.3;return this.accidentalLower=new Q(j.accidentalCodes(t).code,e),this.accidentalLower.setOrigin(.5,1),this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const b=e.getStemDirection(),i=e.checkStave();t.openGroup("ornament",this.getAttribute("id"));const a=e.checkStem().getExtents();let n=b===it.DOWN?a.baseY:a.topY;_(e)&&(e.hasStem()?b===it.DOWN&&(n=i.getYForTopText(this.text_line)):n=i.getYForTopText(this.text_line));const s=b===it.DOWN,l=i.getSpacingBetweenLines();let o=1;!s&&e.hasBeam()&&(o+=.5);const r=n-l*(this.text_line+o),h=e.getModifierStartXY(this.position,this.index);let m=h.x,c=this.ornamentAlignWithNoteHead?h.y:Math.min(i.getYForTopText(this.text_line),r);if(c+=this.y_shift,this.delayed){let t=0;const b=m-(i.getX()-10);if(void 0!==this.delayXShift)t=this.delayXShift;else{t+=this.glyph.getMetrics().width/2;const a=jt.getNextContext(e.getTickContext());t+=a?.5*(a.getX()-b):.5*(i.getX()+i.getWidth()-b),this.delayXShift=t}m+=t}!function(...t){Vt.DEBUG&&f("Vex.Flow.Ornament",t)}("Rendering ornament: ",this.ornament,m,c),this.accidentalLower&&(this.accidentalLower.render(t,m,c),c-=this.accidentalLower.getMetrics().height,c-=this.render_options.accidentalLowerPadding),this.stemUpYOffset&&e.hasStem()&&1===e.getStemDirection()&&(c+=this.stemUpYOffset),e.getLineNumber()<5&&Vt.ornamentNoteTransition.indexOf(this.type)>=0&&(c=e.checkStave().getBoundingBox().getY()+40),this.glyph.render(t,m+this.x_shift,c),this.accidentalUpper&&(c-=this.glyph.getMetrics().height+this.render_options.accidentalUpperPadding,this.accidentalUpper.render(t,m,c)),t.closeGroup()}}Vt.DEBUG=!1;class Kt extends Z{constructor(t){super(),this.position=null!=t?t:Z.Position.LEFT,this.point=j.currentMusicFont().lookupMetric("parenthesis.default.point"),this.setWidth(j.currentMusicFont().lookupMetric("parenthesis.default.width"))}static get CATEGORY(){return x.Parenthesis}static buildAndAttach(t){for(const e of t)for(let t=0;to+a.width?i:o+a.width),s===$.LEFT&&(o=n.getLeftParenthesisPx(l),b=b>o+a.width?b:o+a.width),a.setXShift(o)}return e.left_shift+=b,e.right_shift+=i,!0}setNote(t){return this.note=t,this.point=j.currentMusicFont().lookupMetric("parenthesis.default.point"),this.setWidth(j.currentMusicFont().lookupMetric("parenthesis.default.width")),o(t)&&(this.point=j.currentMusicFont().lookupMetric("parenthesis.gracenote.point"),this.setWidth(j.currentMusicFont().lookupMetric("parenthesis.gracenote.width"))),this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const b=e.getModifierStartXY(this.position,this.index,{forceFlagRight:!0}),i=b.x+this.x_shift,a=b.y+this.y_shift;this.position==Z.Position.RIGHT?Q.renderGlyph(t,i+1,a,this.point,"noteheadParenthesisRight",{category:"noteHead.standard.noteheadParenthesisRight"}):this.position==Z.Position.LEFT&&Q.renderGlyph(t,i-2,a,this.point,"noteheadParenthesisLeft",{category:"noteHead.standard.noteheadParenthesisLeft"})}}function $t(t){if(!t)return!1;const e=p();return"function"==typeof e.HTMLCanvasElement&&t instanceof e.HTMLCanvasElement||"function"==typeof t.getContext&&"function"==typeof t.toDataURL}function qt(t){if(!t)return!1;const e=p();return"function"==typeof e.HTMLDivElement&&t instanceof e.HTMLDivElement||"function"==typeof t.appendChild&&"object"==typeof t.style}class Jt extends ut{constructor(t){super(),this.textHeight=0,this.context2D=t,t.canvas?this.canvas=t.canvas:this.canvas={width:Jt.WIDTH,height:Jt.HEIGHT}}static get WIDTH(){return 600}static get HEIGHT(){return 400}static get CANVAS_BROWSER_SIZE_LIMIT(){return 32767}static sanitizeCanvasDims(t,e){const b=this.CANVAS_BROWSER_SIZE_LIMIT;return Math.max(t,e)>b&&(y("Canvas dimensions exceed browser limit. Cropping to "+b),t>b&&(t=b),e>b&&(e=b)),[t,e]}clear(){this.context2D.clearRect(0,0,this.canvas.width,this.canvas.height)}openGroup(t,e,b){}closeGroup(){}add(t){}setFillStyle(t){return this.context2D.fillStyle=t,this}setBackgroundFillStyle(t){return this}setStrokeStyle(t){return this.context2D.strokeStyle=t,this}setShadowColor(t){return this.context2D.shadowColor=t,this}setShadowBlur(t){const e=this.context2D.getTransform(),b=Math.sqrt(e.a*e.a+e.b*e.b+e.c*e.c+e.d*e.d);return this.context2D.shadowBlur=b*t,this}setLineWidth(t){return this.context2D.lineWidth=t,this}setLineCap(t){return this.context2D.lineCap=t,this}setLineDash(t){return this.context2D.setLineDash(t),this}scale(t,e){return this.context2D.scale(t,e),this}resize(t,e){const b=this.context2D.canvas,i=p().devicePixelRatio||1;return[t,e]=Jt.sanitizeCanvasDims(t*i,e*i),t=t/i|0,e=e/i|0,b.width=t*i,b.height=e*i,$t(b)&&(b.style.width=t+"px",b.style.height=e+"px"),this.scale(i,i)}rect(t,e,b,i){return this.context2D.rect(t,e,b,i),this}fillRect(t,e,b,i){return this.context2D.fillRect(t,e,b,i),this}clearRect(t,e,b,i){return this.context2D.clearRect(t,e,b,i),this}beginPath(){return this.context2D.beginPath(),this}moveTo(t,e){return this.context2D.moveTo(t,e),this}lineTo(t,e){return this.context2D.lineTo(t,e),this}bezierCurveTo(t,e,b,i,a,n){return this.context2D.bezierCurveTo(t,e,b,i,a,n),this}quadraticCurveTo(t,e,b,i){return this.context2D.quadraticCurveTo(t,e,b,i),this}arc(t,e,b,i,a,n){return this.context2D.arc(t,e,b,i,a,n),this}fill(){return this.context2D.fill(),this}stroke(){return this.context2D.stroke(),this}closePath(){return this.context2D.closePath(),this}measureText(t){const e=this.context2D.measureText(t);let b=0,i=0;return e.fontBoundingBoxAscent?(b=-e.fontBoundingBoxAscent,i=e.fontBoundingBoxDescent+e.fontBoundingBoxAscent):(b=-e.actualBoundingBoxAscent,i=e.actualBoundingBoxDescent+e.actualBoundingBoxAscent),{x:0,y:b,width:e.width,height:i}}fillText(t,e,b){return this.context2D.fillText(t,e,b),this}save(){return this.context2D.save(),this}restore(){return this.context2D.restore(),this}set fillStyle(t){this.context2D.fillStyle=t}get fillStyle(){return this.context2D.fillStyle}set strokeStyle(t){this.context2D.strokeStyle=t}get strokeStyle(){return this.context2D.strokeStyle}setFont(t,e,b,i){const a=F.validate(t,e,b,i);return this.context2D.font=F.toCSSString(a),this.textHeight=F.convertSizeToPixelValue(a.size),this}getFont(){return this.context2D.font}}const Qt={path:{x:!0,y:!0,width:!0,height:!0,"font-family":!0,"font-weight":!0,"font-style":!0,"font-size":!0},rect:{"font-family":!0,"font-weight":!0,"font-style":!0,"font-size":!0},text:{width:!0,height:!0}},Zt="http://www.w3.org/2000/svg",te=2*Math.PI;class ee extends ut{constructor(t){super(),this.width=0,this.height=0,this.backgroundFillStyle="white",this.fontCSSString="",this.element=t;const e=this.create("svg");this.element.appendChild(e),this.svg=e,this.parent=this.svg,this.groups=[this.svg],this.path="",this.pen={x:NaN,y:NaN},this.lineWidth=1;const b={"font-family":F.SANS_SERIF,"font-size":F.SIZE+"pt","font-weight":k.NORMAL,"font-style":E.NORMAL};this.state=Object.assign({scale:{x:1,y:1}},b),this.attributes=Object.assign({"stroke-width":.3,"stroke-dasharray":"none",fill:"black",stroke:"black"},b),this.shadow_attributes={width:0,color:"black"},this.state_stack=[]}create(t){return document.createElementNS(Zt,t)}openGroup(t,e,b){const i=this.create("g");return this.groups.push(i),this.parent.appendChild(i),this.parent=i,t&&i.setAttribute("class",T(t)),e&&i.setAttribute("id",T(e)),b&&b.pointerBBox&&i.setAttribute("pointer-events","bounding-box"),i}closeGroup(){this.groups.pop(),this.parent=this.groups[this.groups.length-1]}add(t){this.parent.appendChild(t)}setFillStyle(t){return this.attributes.fill=t,this}setBackgroundFillStyle(t){return this.backgroundFillStyle=t,this}setStrokeStyle(t){return this.attributes.stroke=t,this}setShadowColor(t){return this.shadow_attributes.color=t,this}setShadowBlur(t){return this.shadow_attributes.width=t,this}setLineWidth(t){return this.attributes["stroke-width"]=t,this.lineWidth=t,this}setLineDash(t){if("[object Array]"===Object.prototype.toString.call(t))return this.attributes["stroke-dasharray"]=t.join(","),this;throw new g("ArgumentError","lineDash must be an array of integers.")}setLineCap(t){return this.attributes["stroke-linecap"]=t,this}resize(t,e){this.width=t,this.height=e,this.element.style.width=t.toString(),this.svg.style.width=t.toString(),this.svg.style.height=e.toString();const b={width:t,height:e};return this.applyAttributes(this.svg,b),this.scale(this.state.scale.x,this.state.scale.y),this}scale(t,e){this.state.scale={x:t,y:e};const b=this.width/t,i=this.height/e;return this.setViewBox(0,0,b,i),this}setViewBox(t,e,b,i){if("string"==typeof t)this.svg.setAttribute("viewBox",t);else{const a=t+" "+e+" "+b+" "+i;this.svg.setAttribute("viewBox",a)}}applyAttributes(t,e){const b=Qt[t.nodeName];for(const i in e)b&&b[i]||t.setAttributeNS(null,i,e[i]);return t}clear(){for(;this.svg.lastChild;)this.svg.removeChild(this.svg.lastChild);this.scale(this.state.scale.x,this.state.scale.y)}rect(t,e,b,i,a){i<0&&(e+=i,i*=-1);const n=this.create("rect");return a=null!=a?a:{fill:"none","stroke-width":this.lineWidth,stroke:"black"},this.applyAttributes(n,Object.assign({x:t,y:e,width:b,height:i},a)),this.add(n),this}fillRect(t,e,b,i){const a={fill:this.attributes.fill};return this.rect(t,e,b,i,a),this}clearRect(t,e,b,i){return this.rect(t,e,b,i,{"stroke-width":0,fill:this.backgroundFillStyle}),this}beginPath(){return this.path="",this.pen.x=NaN,this.pen.y=NaN,this}moveTo(t,e){return this.path+="M"+t+" "+e,this.pen.x=t,this.pen.y=e,this}lineTo(t,e){return this.path+="L"+t+" "+e,this.pen.x=t,this.pen.y=e,this}bezierCurveTo(t,e,b,i,a,n){return this.path+="C"+t+" "+e+","+b+" "+i+","+a+" "+n,this.pen.x=a,this.pen.y=n,this}quadraticCurveTo(t,e,b,i){return this.path+="Q"+t+" "+e+","+b+" "+i,this.pen.x=b,this.pen.y=i,this}arc(t,e,b,i,a,n){const s=t+b*Math.cos(i),l=e+b*Math.sin(i),o=w(i),r=w(a);if(!n&&a-i>=te||n&&i-a>=te||o===r){const a=t+b*Math.cos(i+Math.PI),n=e+b*Math.sin(i+Math.PI);this.path+=`M${s} ${l} A${b} ${b} 0 0 0 ${a} ${n} `,this.path+=`A${b} ${b} 0 0 0 ${s} ${l}`,this.pen.x=s,this.pen.y=l}else{const h=t+b*Math.cos(a),m=e+b*Math.sin(a);let c;i=o,a=r,c=Math.abs(a-i)a&&(c=!c);const d=!n;this.path+=`M${s} ${l} A${b} ${b} 0 ${+c} ${+d} ${h} ${m}`,this.pen.x=h,this.pen.y=m}return this}closePath(){return this.path+="Z",this}getShadowStyle(){const t=this.shadow_attributes;return`filter: drop-shadow(0 0 ${t.width/1.5}px ${t.color})`}fill(t){const e=this.create("path");return void 0===t&&(t=Object.assign(Object.assign({},this.attributes),{stroke:"none"})),t.d=this.path,this.shadow_attributes.width>0&&(t.style=this.getShadowStyle()),this.applyAttributes(e,t),this.add(e),this}stroke(){const t=this.create("path"),e=Object.assign(Object.assign({},this.attributes),{fill:"none","stroke-width":this.lineWidth,d:this.path});return this.shadow_attributes.width>0&&(e.style=this.getShadowStyle()),this.applyAttributes(t,e),this.add(t),this}measureText(t){return ee.measureTextCache.lookup(t,this.svg,this.attributes)}fillText(t,e,b){if(!t||t.length<=0)return this;const i=Object.assign(Object.assign({},this.attributes),{stroke:"none",x:e,y:b}),a=this.create("text");return a.textContent=t,this.applyAttributes(a,i),this.add(a),this}save(){return this.state_stack.push({state:{"font-family":this.state["font-family"],"font-weight":this.state["font-weight"],"font-style":this.state["font-style"],"font-size":this.state["font-size"],scale:this.state.scale},attributes:{"font-family":this.attributes["font-family"],"font-weight":this.attributes["font-weight"],"font-style":this.attributes["font-style"],"font-size":this.attributes["font-size"],fill:this.attributes.fill,stroke:this.attributes.stroke,"stroke-width":this.attributes["stroke-width"],"stroke-dasharray":this.attributes["stroke-dasharray"]},shadow_attributes:{width:this.shadow_attributes.width,color:this.shadow_attributes.color},lineWidth:this.lineWidth}),this}restore(){const t=this.state_stack.pop();if(t){const e=t;this.state["font-family"]=e.state["font-family"],this.state["font-weight"]=e.state["font-weight"],this.state["font-style"]=e.state["font-style"],this.state["font-size"]=e.state["font-size"],this.state.scale=e.state.scale,this.attributes["font-family"]=e.attributes["font-family"],this.attributes["font-weight"]=e.attributes["font-weight"],this.attributes["font-style"]=e.attributes["font-style"],this.attributes["font-size"]=e.attributes["font-size"],this.attributes.fill=e.attributes.fill,this.attributes.stroke=e.attributes.stroke,this.attributes["stroke-width"]=e.attributes["stroke-width"],this.attributes["stroke-dasharray"]=e.attributes["stroke-dasharray"],this.shadow_attributes.width=e.shadow_attributes.width,this.shadow_attributes.color=e.shadow_attributes.color,this.lineWidth=e.lineWidth}return this}set fillStyle(t){this.setFillStyle(t)}get fillStyle(){return this.attributes.fill}set strokeStyle(t){this.setStrokeStyle(t)}get strokeStyle(){return this.attributes.stroke}setFont(t,e,b,i){const a=F.validate(t,e,b,i);this.fontCSSString=F.toCSSString(a);const n={"font-family":a.family,"font-size":a.size,"font-weight":a.weight,"font-style":a.style};return this.attributes=Object.assign(Object.assign({},this.attributes),n),this.state=Object.assign(Object.assign({},this.state),n),this}getFont(){return this.fontCSSString}}var be,ie,ae,ne;ee.measureTextCache=new class{constructor(){this.cache={}}lookup(t,e,b){let i=this.cache[t];void 0===i&&(i={},this.cache[t]=i);const a=`${b["font-family"]}%${b["font-size"]}%${b["font-weight"]}%${b["font-style"]}`;let n=i[a];return void 0===n&&(n=this.measureImpl(t,e,b),i[a]=n),n}measureImpl(t,e,b){let i=this.txt;i||(i=document.createElementNS(Zt,"text"),this.txt=i),i.textContent=t,i.setAttributeNS(null,"font-family",b["font-family"]),i.setAttributeNS(null,"font-size",b["font-size"]),i.setAttributeNS(null,"font-style",b["font-style"]),i.setAttributeNS(null,"font-weight",b["font-weight"]),e.appendChild(i);const a=i.getBBox();return e.removeChild(i),{x:a.x,y:a.y,width:a.width,height:a.height}}},function(t){t[t.CANVAS=1]="CANVAS",t[t.SVG=2]="SVG"}(be||(be={})),function(t){t[t.NONE=1]="NONE",t[t.UP=2]="UP",t[t.DOWN=3]="DOWN"}(ie||(ie={}));class se{constructor(t,e){if(m(t))this.ctx=t;else{if(void 0===e)throw new g("InvalidArgument","Missing backend argument");const b=e;let i;if("string"==typeof t){const e=document.getElementById(t);if(!e)throw new g("BadElementId",`Can't find element with ID "${e}"`);i=e}else i=t;if(b===se.Backends.CANVAS){if(!$t(i))throw new g("BadElement","CANVAS context requires an HTMLCanvasElement.");const t=i.getContext("2d");if(!t)throw new g("BadElement","Can't get canvas context");this.ctx=new Jt(t)}else{if(b!==se.Backends.SVG)throw new g("InvalidBackend",`No support for backend: ${b}`);if(!qt(i))throw new g("BadElement","SVG context requires an HTMLDivElement.");this.ctx=new ee(i)}}}static buildContext(t,e,b,i,a="#FFF"){const n=new se(t,e);b&&i&&n.resize(b,i);const s=n.getContext();return s.setBackgroundFillStyle(a),se.lastContext=s,s}static getCanvasContext(t,e,b,i){return se.buildContext(t,se.Backends.CANVAS,e,b,i)}static getSVGContext(t,e,b,i){return se.buildContext(t,se.Backends.SVG,e,b,i)}static drawDashedLine(t,e,b,i,a,n){t.beginPath();const s=i-e,l=a-b,o=Math.atan2(l,s);let r=e,h=b;t.moveTo(e,b);let m=0,c=!0;for(;!(s<0?r<=i:r>=i)||!(l<0?h<=a:h>=a);){const e=n[m++%n.length],b=r+Math.cos(o)*e;r=s<0?Math.max(i,b):Math.min(i,b);const d=h+Math.sin(o)*e;h=l<0?Math.max(a,d):Math.min(a,d),c?t.lineTo(r,h):t.moveTo(r,h),c=!c}t.closePath(),t.stroke()}resize(t,e){return this.ctx.resize(t,e),this}getContext(){return this.ctx}}se.Backends=be,se.LineEndType=ie,se.lastContext=void 0;class le extends Z{constructor(t){super(),this.string_number=t,this.position=Z.Position.ABOVE,this.x_shift=0,this.y_shift=0,this.text_line=0,this.stem_offset=0,this.x_offset=0,this.y_offset=0,this.dashed=!0,this.leg=se.LineEndType.NONE,this.radius=8,this.drawCircle=!0,this.setWidth(2*this.radius+4),this.resetFont()}static get CATEGORY(){return x.StringNumber}static get metrics(){return j.currentMusicFont().getMetrics().glyphs.stringNumber}static format(t,e){const b=e.left_shift,i=e.right_shift;if(!t||0===t.length)return!1;const a=[];let n=null,s=0,l=0;for(let o=0;oe.line-t.line));let o=0,r=0,h=0,m=null,d=null;for(let t=0;tr?e:r):l===Z.Position.RIGHT&&(c.setXShift(o),e+=g,h=e>h?e:h),m=_,d=n}return e.left_shift+=r,e.right_shift+=h,!0}setLineEndType(t){return t>=se.LineEndType.NONE&&t<=se.LineEndType.DOWN&&(this.leg=t),this}setStringNumber(t){return this.string_number=t,this}setOffsetX(t){return this.x_offset=t,this}setOffsetY(t){return this.y_offset=t,this}setLastNote(t){return this.last_note=t,this}setDashed(t){return this.dashed=t,this}setDrawCircle(t){return this.drawCircle=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const b=e.getModifierStartXY(this.position,this.index),i=e.hasStem()?e.getStemDirection():it.UP;let a=b.x+this.x_shift+this.x_offset,n={};e.hasStem()&&(n=e.checkStem().getExtents());let s=b.y+this.y_shift+this.y_offset;switch(this.position){case Z.Position.ABOVE:s=e.getYs().reduce(((t,e)=>tt>e?t:e)),e.hasStem()&&i==it.DOWN&&(s=n.topY-le.metrics.stemPadding),s+=this.radius+le.metrics.verticalPadding+this.text_line*j.STAVE_LINE_DISTANCE;break;case Z.Position.LEFT:a-=this.radius/2+le.metrics.leftPadding;break;case Z.Position.RIGHT:a+=this.radius/2+le.metrics.rightPadding;break;default:throw new g("InvalidPosition",`The position ${this.position} is invalid`)}t.save(),this.drawCircle&&(t.beginPath(),t.arc(a,s,this.radius,0,2*Math.PI,!1),t.setLineWidth(1.5),t.stroke()),t.setFont(this.textFont);const l=a-t.measureText(this.string_number).width/2;t.fillText(""+this.string_number,l,s+4.5);const o=this.last_note;if(d(o)){const b=o.getStemX()-e.getX()+5;let i,n;switch(t.setStrokeStyle("#000000"),t.setLineCap("round"),t.setLineWidth(.6),this.dashed?se.drawDashedLine(t,a+10,s,a+b,s,[3,3]):se.drawDashedLine(t,a+10,s,a+b,s,[3,0]),this.leg){case se.LineEndType.UP:i=-10,n=this.dashed?[3,3]:[3,0],se.drawDashedLine(t,a+b,s,a+b,s+i,n);break;case se.LineEndType.DOWN:i=10,n=this.dashed?[3,3]:[3,0],se.drawDashedLine(t,a+b,s,a+b,s+i,n)}}t.restore()}}le.TEXT_FONT={family:F.SANS_SERIF,size:F.SIZE,weight:k.BOLD,style:E.NORMAL};class oe extends Z{constructor(t,e){super(),this.options=Object.assign({all_voices:!0},e),this.all_voices=this.options.all_voices,this.type=t,this.position=Z.Position.LEFT,this.render_options={font_scale:38},this.resetFont(),this.setXShift(0),this.setWidth(10)}static get CATEGORY(){return x.Stroke}static format(t,e){const b=e.left_shift;if(!t||0===t.length)return!1;const i=t.map((t=>{const e=t.getNote(),b=t.checkIndex();if(c(e)){const{line:i}=e.getKeyProps()[b];return{line:i,shift:e.getLeftDisplacedHeadPx(),stroke:t}}if(_(e)){const{str:i}=e.getPositions()[b];return{line:i,shift:0,stroke:t}}throw new g("Internal","Unexpected instance.")})),a=b,n=i.reduce(((t,{stroke:e,shift:b})=>(e.setXShift(a+b),Math.max(e.getWidth()+0,t))),0);return e.left_shift+=n,!0}getPosition(){return this.position}addEndNote(t){return this.note_end=t,this}draw(){const t=this.checkContext(),e=this.checkAttachedNote();this.setRendered();const b=e.getModifierStartXY(this.position,this.index);let i=e.getYs(),a=b.y,n=b.y;const s=b.x-5,l=e.checkStave().getSpacingBetweenLines(),o=this.checkModifierContext().getMembers(e.getCategory());for(let t=0;t0){i-=s.map((t=>t.getTextHeight())).reduce(((t,e)=>t>e?t:e))/j.STAVE_LINE_DISTANCE+1}else e.top_text_line+=1;for(let e=0;e=t.line?b.above:b.below}}this.placeGlyphOnLine(i,this.checkStave(),t.line),this.glyphs.push(i);const n=this.xPositions[this.xPositions.length-1],s=i.getMetrics().width+a;this.xPositions.push(n+s),this.width+=s}cancelKey(t){return this.formatted=!1,this.cancelKeySpec=t,this}convertToCancelAccList(t){const e=j.keySignature(t),b=this.accList.length>0&&e.length>0&&e[0].type!==this.accList[0].type,i=b?e.length:e.length-this.accList.length;if(i<1)return;const a=[];for(let t=0;t0?e[0].type:void 0;let i;if(this.cancelKeySpec&&(i=this.convertToCancelAccList(this.cancelKeySpec)),this.alterKeySpec&&this.convertToAlterAccList(this.alterKeySpec),this.accList.length>0){const a=(this.position===Tt.END?t.getEndClef():t.getClef())||t.getClef();i&&this.convertAccLines(a,i.type,i.accList),this.convertAccLines(a,b,e);for(let t=0;t0?"PlusSmall":"Plus";break;case"(":i=b.length>0?"ParensLeftSmall":"ParensLeft";break;case")":i=b.length>0?"ParensRightSmall":"ParensRight"}const a=new Q("timeSig"+i,this.timeSignature.point);this.topGlyphs.push(a),l+=null!==(s=a.getMetrics().width)&&void 0!==s?s:0}let o=0;for(let t=0;t0?e.getYForLine(this.timeSignature.topLine):(e.getYForLine(this.timeSignature.topLine)+e.getYForLine(this.timeSignature.bottomLine))/2;for(let t=0;t{const e=t.split("/");if(2!==e.length&&"+"!==e[0]&&"-"!==e[0])throw new g("BadTimeSignature",`Invalid time spec: ${t}. Must be in the form "/"`);e.forEach((e=>{if(0==/^[0-9+\-()]+$/.test(e))throw new g("BadTimeSignature",`Invalid time spec: ${t}. Must contain valid signatures.`)}))})(t);const i=t.split("/");return{num:!0,glyph:this.makeTimeSignatureGlyph(null!==(e=i[0])&&void 0!==e?e:"",null!==(b=i[1])&&void 0!==b?b:"")}}makeTimeSignatureGlyph(t,e){return new ye(this,t,e,"timeSig0",this.point)}getInfo(){return this.info}setTimeSig(t){return this.info=this.parseTimeSpec(t),this}draw(){const t=this.checkStave(),e=t.checkContext();this.setRendered(),e.openGroup("timesignature",this.getAttribute("id")),this.info.glyph.setStave(t),this.info.glyph.setContext(e),this.placeGlyphOnLine(this.info.glyph,t,this.info.line),this.info.glyph.renderToStave(this.x),e.closeGroup()}}const Te={[Et.CATEGORY]:0,[ce.CATEGORY]:1,[de.CATEGORY]:2,[Se.CATEGORY]:3},we={[Se.CATEGORY]:0,[de.CATEGORY]:1,[Et.CATEGORY]:2,[ce.CATEGORY]:3};class ve extends O{constructor(t,e,b,i){super(),this.height=0,this.x=t,this.y=e,this.width=b,this.formatted=!1,this.start_x=t+5,this.end_x=t+b,this.modifiers=[],this.measure=0,this.clef="treble",this.endClef=void 0,this.resetFont(),this.options=Object.assign({vertical_bar_width:10,num_lines:5,fill_style:"#999999",left_bar:!0,right_bar:!0,spacing_between_lines_px:j.STAVE_LINE_DISTANCE,space_above_staff_ln:4,space_below_staff_ln:4,top_text_position:1,bottom_text_position:4,line_config:[]},i),this.bounds={x:this.x,y:this.y,w:this.width,h:0},this.defaultLedgerLineStyle={strokeStyle:"#444",lineWidth:1.4},this.resetLines(),this.addModifier(new Et(this.options.left_bar?wt.SINGLE:wt.NONE)),this.addEndModifier(new Et(this.options.right_bar?wt.SINGLE:wt.NONE))}static get CATEGORY(){return x.Stave}static get defaultPadding(){const t=j.currentMusicFont();return t.lookupMetric("stave.padding")+t.lookupMetric("stave.endPaddingMax")}static get rightPadding(){return j.currentMusicFont().lookupMetric("stave.endPaddingMax")}setDefaultLedgerLineStyle(t){this.defaultLedgerLineStyle=t}getDefaultLedgerLineStyle(){return Object.assign(Object.assign({},this.getStyle()),this.defaultLedgerLineStyle)}space(t){return this.options.spacing_between_lines_px*t}resetLines(){this.options.line_config=[];for(let t=0;tb.getWidth()&&(e-=b.getWidth()),e}setRepetitionType(t,e=0){return this.modifiers.push(new _e(t,this.x,e)),this}setVoltaType(t,e,b){return this.modifiers.push(new fe(t,e,this.x,b)),this}setSection(t,e,b=0,i,a=!0){const n=new xe(t,this.x+b,e,a);return i&&n.setFontSize(i),this.modifiers.push(n),this}setTempo(t,e){return this.modifiers.push(new ge(t,this.x,e)),this}setText(t,e,b={}){return this.modifiers.push(new ue(t,e,b)),this}getHeight(){return this.height}getSpacingBetweenLines(){return this.options.spacing_between_lines_px}getBoundingBox(){return new z(this.x,this.y,this.width,this.getBottomY()-this.y)}getBottomY(){const t=this.options,e=t.spacing_between_lines_px;return this.getYForLine(t.num_lines)+t.space_below_staff_ln*e}getBottomLineY(){return this.getYForLine(this.options.num_lines)}getYForLine(t){const e=this.options,b=e.spacing_between_lines_px,i=e.space_above_staff_ln;return this.y+t*b+i*b}getLineForY(t){const e=this.options,b=e.spacing_between_lines_px,i=e.space_above_staff_ln;return(t-this.y)/b-i}getYForTopText(t=0){return this.getYForLine(-t-this.options.top_text_position)}getYForBottomText(t=0){return this.getYForLine(this.options.bottom_text_position+t)}getYForNote(t){const e=this.options,b=e.spacing_between_lines_px,i=e.space_above_staff_ln;return this.y+i*b+5*b-t*b}getYForGlyphs(){return this.getYForLine(3)}addModifier(t,e){return void 0!==e&&t.setPosition(e),t.setStave(this),this.formatted=!1,this.modifiers.push(t),this}addEndModifier(t){return this.addModifier(t,Tt.END),this}setBegBarType(t){const{SINGLE:e,REPEAT_BEGIN:b,NONE:i}=wt;return t!==e&&t!==b&&t!==i||(this.modifiers[0].setType(t),this.formatted=!1),this}setEndBarType(t){return t!==wt.REPEAT_BEGIN&&(this.modifiers[1].setType(t),this.formatted=!1),this}setClef(t,e,b,i){void 0===i&&(i=Tt.BEGIN),i===Tt.END?this.endClef=t:this.clef=t;const a=this.getModifiers(i,ce.CATEGORY);return 0===a.length?this.addClef(t,e,b,i):a[0].setType(t,e,b),this}getClef(){return this.clef}setEndClef(t,e,b){return this.setClef(t,e,b,Tt.END),this}getEndClef(){return this.endClef}setKeySignature(t,e,b){void 0===b&&(b=Tt.BEGIN);const i=this.getModifiers(b,de.CATEGORY);return 0===i.length?this.addKeySignature(t,e,b):i[0].setKeySig(t,e),this}setEndKeySignature(t,e){return this.setKeySignature(t,e,Tt.END),this}setTimeSignature(t,e,b){void 0===b&&(b=Tt.BEGIN);const i=this.getModifiers(b,Se.CATEGORY);return 0===i.length?this.addTimeSignature(t,e,b):i[0].setTimeSig(t),this}setEndTimeSignature(t,e){return this.setTimeSignature(t,e,Tt.END),this}addKeySignature(t,e,b){return void 0===b&&(b=Tt.BEGIN),this.addModifier(new de(t,e).setPosition(b),b),this}addClef(t,e,b,i){return void 0===i||i===Tt.BEGIN?this.clef=t:i===Tt.END&&(this.endClef=t),this.addModifier(new ce(t,e,b),i),this}addEndClef(t,e,b){return this.addClef(t,e,b,Tt.END),this}addTimeSignature(t,e,b){return this.addModifier(new Se(t,e),b),this}addEndTimeSignature(t,e){return this.addTimeSignature(t,e,Tt.END),this}addTrebleGlyph(){return this.addClef("treble"),this}getModifiers(t,e){const b=void 0===t,i=void 0===e;return b&&i?this.modifiers:b?this.modifiers.filter((t=>e===t.getCategory())):i?this.modifiers.filter((e=>t===e.getPosition())):this.modifiers.filter((b=>t===b.getPosition()&&e===b.getCategory()))}sortByCategory(t,e){for(let b=t.length-1;b>=0;b--)for(let i=0;ie[t[i+1].getCategory()]){const e=t[i];t[i]=t[i+1],t[i+1]=e}}format(){const t=this.modifiers[0],e=this.modifiers[1],b=this.getModifiers(Tt.BEGIN),i=this.getModifiers(Tt.END);let a,n,l;this.sortByCategory(b,Te),this.sortByCategory(i,we),b.length>1&&t.getType()===wt.REPEAT_BEGIN&&(b.push(b.splice(0,1)[0]),b.splice(0,0,new Et(wt.SINGLE))),i.indexOf(e)>0&&i.splice(0,0,new Et(wt.NONE));let o=0,r=this.x;for(let t=0;t0){t.save(),t.setFont(this.textFont);const e=t.measureText(""+this.measure).width;a=this.getYForTopText(0)+3,t.fillText(""+this.measure,this.x-e/2,a),t.restore()}return t.closeGroup(),this}getVerticalBarWidth(){return this.options.vertical_bar_width}getConfigForLines(){return this.options.line_config}setConfigForLine(t,e){if(t>=this.options.num_lines||t<0)throw new g("StaveConfigError","The line number must be within the range of the number of lines in the Stave.");if(void 0===e.visible)throw new g("StaveConfigError","The line configuration object is missing the 'visible' property.");if("boolean"!=typeof e.visible)throw new g("StaveConfigError","The line configuration objects 'visible' property must be true or false.");return this.options.line_config[t]=e,this}setConfigForLines(t){if(t.length!==this.options.num_lines)throw new g("StaveConfigError","The length of the lines configuration array must match the number of lines in the Stave");for(const e in t)null==t[e].visible&&(t[e]=this.options.line_config[e]),this.options.line_config[e]=Object.assign(Object.assign({},this.options.line_config[e]),t[e]);return this.options.line_config=t,this}static formatBegModifiers(t){let e=0;t.forEach((t=>{t.getNoteStartX()>e&&(e=t.getNoteStartX())})),t.forEach((t=>{t.setNoteStartX(e)})),e=0,t.forEach((t=>{t.getModifiers(Tt.BEGIN,x.Barline).forEach((t=>{t.getType()==wt.REPEAT_BEGIN&&t.getX()>e&&(e=t.getX())}))})),t.forEach((t=>{t.getModifiers(Tt.BEGIN,x.Barline).forEach((t=>{t.getType()==wt.REPEAT_BEGIN&&t.setX(e)}))})),e=0,t.forEach((t=>{t.getModifiers(Tt.BEGIN,x.TimeSignature).forEach((t=>{t.getX()>e&&(e=t.getX())}))})),t.forEach((t=>{t.getModifiers(Tt.BEGIN,x.TimeSignature).forEach((t=>{t.setX(e)}))}))}}function De(t,e,b,i,a){if(e!==ze.type.BOLD_DOUBLE_LEFT&&e!==ze.type.BOLD_DOUBLE_RIGHT)throw new g("InvalidConnector","A REPEAT_BEGIN or REPEAT_END type must be provided.");let n=3,s=3.5;e===ze.type.BOLD_DOUBLE_RIGHT&&(n=-5,s=3),t.fillRect(b+n,i,1,a-i),t.fillRect(b-2,i,s,a-i)}ve.TEXT_FONT={family:F.SANS_SERIF,size:8,weight:k.NORMAL,style:E.NORMAL};class ze extends O{constructor(t,e){super(),this.thickness=j.STAVE_LINE_THICKNESS,this.width=3,this.top_stave=t,this.bottom_stave=e,this.type=ze.type.DOUBLE,this.resetFont(),this.x_shift=0,this.texts=[]}static get CATEGORY(){return x.StaveConnector}setType(t){const e="string"==typeof t?ze.typeString[t]:t;return Object.values(ze.type).includes(e)&&(this.type=e),this}getType(){return this.type}setText(t,e={}){return this.texts.push({content:t,options:Object.assign({shift_x:0,shift_y:0},e)}),this}setXShift(t){if("number"!=typeof t)throw new g("InvalidType","x_shift must be a Number");return this.x_shift=t,this}getXShift(){return this.x_shift}draw(){const t=this.checkContext();this.setRendered();let e=this.top_stave.getYForLine(0),b=this.bottom_stave.getYForLine(this.bottom_stave.getNumLines()-1)+this.thickness,i=this.width,a=this.top_stave.getX();(this.type===ze.type.SINGLE_RIGHT||this.type===ze.type.BOLD_DOUBLE_RIGHT||this.type===ze.type.THIN_DOUBLE)&&(a=this.top_stave.getX()+this.top_stave.getWidth());let n=b-e;switch(this.type){case ze.type.SINGLE:case ze.type.SINGLE_LEFT:case ze.type.SINGLE_RIGHT:i=1;break;case ze.type.DOUBLE:a-=this.width+2,e-=this.thickness,n+=.5;break;case ze.type.BRACE:{i=12;const a=this.top_stave.getX()-2+this.x_shift,s=e,l=a,o=b,r=a-i,h=s+n/2,m=r-.9*i,c=s+.2*n,d=a+1.1*i,_=h-.135*n,x=d,g=h+.135*n,p=m,u=o-.2*n,f=r-i,y=u,S=a+.4*i,T=h+.135*n,w=S,v=h-.135*n,D=f,z=c;t.beginPath(),t.moveTo(a,s),t.bezierCurveTo(m,c,d,_,r,h),t.bezierCurveTo(x,g,p,u,l,o),t.bezierCurveTo(f,y,S,T,r,h),t.bezierCurveTo(w,v,D,z,a,s),t.fill(),t.stroke();break}case ze.type.BRACKET:e-=6,b+=6,n=b-e,Q.renderGlyph(t,a-5,e,40,"bracketTop"),Q.renderGlyph(t,a-5,b,40,"bracketBottom"),a-=this.width+2;break;case ze.type.BOLD_DOUBLE_LEFT:De(t,this.type,a+this.x_shift,e,b-this.thickness);break;case ze.type.BOLD_DOUBLE_RIGHT:De(t,this.type,a,e,b-this.thickness);break;case ze.type.THIN_DOUBLE:i=1,n-=this.thickness;break;case ze.type.NONE:break;default:throw new g("InvalidType",`The provided StaveConnector.type (${this.type}) is invalid.`)}this.type!==ze.type.BRACE&&this.type!==ze.type.BOLD_DOUBLE_LEFT&&this.type!==ze.type.BOLD_DOUBLE_RIGHT&&this.type!==ze.type.NONE&&t.fillRect(a,e,i,n),this.type===ze.type.THIN_DOUBLE&&t.fillRect(a-3,e,i,n),t.save(),t.setLineWidth(2),t.setFont(this.textFont);for(let e=0;et.reduce(((t,e)=>t+e),0);function ke(t,e,b,i){let a=e;for(let e=b+1;e{e.addToModifierContext(new me);const i=(new jt).addTickable(e).preFormat(),a=i.getMetrics();return i.setX(t+a.totalLeftPx),t+i.getWidth()+a.totalRightPx+b}),e)}static plotDebugging(t,e,b,i,a,n){const s=b+(n=Object.assign({stavePadding:j.currentMusicFont().lookupMetric("stave.padding")},n)).stavePadding,l=e.contextGaps;t.save(),t.setFont(F.SANS_SERIF,8),l.gaps.forEach((e=>{var b,n,l;b=s+e.x1,n=s+e.x2,l="rgba(100,200,100,0.4)",t.beginPath(),t.setStrokeStyle(l),t.setFillStyle(l),t.setLineWidth(1),t.fillRect(b,i,Math.max(n-b,0),a-i),t.setFillStyle("green"),t.fillText(Math.round(e.x2-e.x1).toString(),s+e.x1,a+12)})),t.setFillStyle("red"),t.fillText(`Loss: ${(e.totalCost||0).toFixed(2)} Shift: ${(e.totalShift||0).toFixed(2)} Gap: ${l.total.toFixed(2)}`,s-20,a+27),t.restore()}static FormatAndDraw(t,e,b,i){let a={auto_beam:!1,align_rests:!1};"object"==typeof i?a=Object.assign(Object.assign({},a),i):"boolean"==typeof i&&(a.auto_beam=i);const n=new Gt(j.TIME4_4).setMode(Gt.Mode.SOFT).addTickables(b),s=a.auto_beam?Oe.applyAndGetBeams(n):[];return(new Ee).joinVoices([n]).formatToStave([n],e,{align_rests:a.align_rests,stave:e}),n.setStave(e).draw(t,e),s.forEach((e=>e.setContext(t).draw())),n.getBoundingBox()}static FormatAndDrawTab(t,e,b,i,a,n,s){let l={auto_beam:n,align_rests:!1};"object"==typeof s?l=Object.assign(Object.assign({},l),s):"boolean"==typeof s&&(l.auto_beam=s);const o=new Gt(j.TIME4_4).setMode(Gt.Mode.SOFT).addTickables(a),r=new Gt(j.TIME4_4).setMode(Gt.Mode.SOFT).addTickables(i),h=l.auto_beam?Oe.applyAndGetBeams(o):[];(new Ee).joinVoices([o]).joinVoices([r]).formatToStave([o,r],b,{align_rests:l.align_rests}),o.draw(t,b),r.draw(t,e),h.forEach((e=>e.setContext(t).draw())),new ze(b,e).setContext(t).draw()}static AlignRestsToNotes(t,e,b){t.forEach(((i,a)=>{if(c(i)&&i.isRest()){if(i.getTuplet()&&!b)return;const n=i.getGlyph().position.toUpperCase();if("R/4"!==n&&"B/4"!==n)return;if(e||i.getBeam()){const e=i.getKeyProps()[0];if(0===a)e.line=ke(t,e.line,a,!1);else if(a>0&&aEe.AlignRestsToNotes(t.getTickables(),e)))}preCalculateMinTotalWidth(t){const e=j.currentMusicFont().lookupMetric("stave.unalignedNotePadding");let b=0,i=0,a=0;const n=[],s=[];if(this.hasMinTotalWidth)return this.minTotalWidth;if(!t)throw new g("BadArgument","'voices' required to run preCalculateMinTotalWidth");this.createTickContexts(t);const{list:l,map:o}=this.tickContexts;this.minTotalWidth=0,l.forEach((e=>{const l=o[e];l.preFormat(),l.getTickables().length{i+=t.getMetrics().width,a+=t.getTicks().value(),n.push(t.getMetrics().width),s.push(t.getTicks().value())}));const r=l.getWidth();this.minTotalWidth+=r})),this.hasMinTotalWidth=!0;const r=i>0?i/n.length:1/n.length,h=Ce(n.map((t=>Math.pow(t-r,2)))),m=Math.pow(h/n.length,.5)/r,c=a/s.length,d=Ce(s.map((t=>Math.pow(t-c,2)))),_=Math.pow(d/s.length,.5)/c,x=Math.max(_,m)*l.length*e,p=e*b;return this.minTotalWidth+Math.max(p,x)}getMinTotalWidth(){if(!this.hasMinTotalWidth)throw new g("NoMinTotalWidth","Call 'preCalculateMinTotalWidth' or 'preFormat' before calling 'getMinTotalWidth'");return this.minTotalWidth}static getResolutionMultiplier(t){if(!t||!t.length)throw new g("BadArgument","No voices to format");const e=t[0].getTotalTicks();return t.reduce(((t,b)=>{if(!b.getTotalTicks().equals(e))throw new g("TickMismatch","Voices should have same total note duration in ticks.");if(b.getMode()===Gt.Mode.STRICT&&!b.isComplete())throw new g("IncompleteVoice","Voice does not have enough notes.");return Math.max(t,v.LCM(t,b.getResolutionMultiplier()))}),1)}createModifierContexts(t){if(0==t.length)return;const e=Ee.getResolutionMultiplier(t),b=new Map,i=[];t.forEach((t=>{const a=new v(0,e);t.getTickables().forEach((t=>{const e=a.numerator;let n=b.get(t.getStave());if(n||(b.set(t.getStave(),{}),n=b.get(t.getStave())),!(n?n[e]:void 0)){const t=new me;i.push(t),n[e]=t}t.addToModifierContext(n[e]),a.add(t.getTicks())}))})),this.modifierContexts.push({map:b,array:i,resolutionMultiplier:e})}createTickContexts(t){const e=function(t,e,b){if(0==t.length)return{map:{},array:[],list:[],resolutionMultiplier:0};const i={},a=[],n=[],s=Ee.getResolutionMultiplier(t);return t.forEach(((t,l)=>{const o=new v(0,s);t.getTickables().forEach((t=>{const s=o.numerator;if(!i[s]){const t=e({tickID:s});n.push(t),i[s]=t,a.push(s)}b(t,i[s],l),o.add(t.getTicks())}))})),{map:i,array:n,list:a.sort(((t,e)=>t-e)),resolutionMultiplier:s}}(t,(t=>new jt(t)),((t,e,b)=>e.addTickable(t,b)));this.tickContexts=e;const b=this.tickContexts.array;return b.forEach((t=>{t.tContexts=b})),e}getTickContexts(){return this.tickContexts}preFormat(t=0,e,b,i){const a=this.tickContexts;if(!a)throw new g("NoTickContexts","preFormat requires TickContexts");const{list:n,map:s}=a;this.lossHistory=[],b&&i&&b.forEach((t=>t.setStave(i).preFormat()));let l=0,o=0;this.minTotalWidth=0;let r=0;n.forEach((t=>{const e=s[t];e.preFormat();const b=e.getWidth();this.minTotalWidth+=b;const i=e.getMaxTicks().value();r+=i;const a=e.getMetrics();l=l+o+a.totalLeftPx,e.setX(l),o=b-a.totalLeftPx}));const{globalSoftmax:h,softmaxFactor:m,maxIterations:c}=this.formatterOptions,d=Ce(n.map((t=>Math.pow(m,s[t].getMaxTicks().value()/r))));if(this.minTotalWidth=l+o,this.hasMinTotalWidth=!0,t<=0)return this.evaluate();const _=s[n[0]],x=s[n[n.length-1]];function p(t){return n.map(((e,b)=>{const i=s[e],a=i.getTickablesByVoice();let l;if(b>0){const e=s[n[b-1]];for(let o=b-1;o>=0;o--){const b=s[n[o]].getTickablesByVoice(),c=[];if(Object.keys(a).forEach((t=>{b[t]&&c.push(t)})),c.length>0){let n=0,s=1/0,o=0;if(c.forEach((t=>{const e=b[t].getTicks().value();e>n&&(l=b[t],n=e);const i=a[t],o=i.getX()-(i.getMetrics().modLeftPx+i.getMetrics().leftDisplacedHeadPx),r=b[t].getMetrics(),h=b[t].getX()+r.notePx+r.modRightPx+r.rightDisplacedHeadPx;s=Math.min(s,o-h)})),s=Math.min(s,i.getX()-(e.getX()+.05*t)),h){const e=r;o=Math.pow(m,n/e)/d*t}else void 0!==l&&(o=l.getVoice().softmax(n)*t);return{expectedDistance:o,maxNegativeShiftPx:s,fromTickable:l}}}}return{expectedDistance:0,fromTickablePx:0,maxNegativeShiftPx:0}}))}function f(t){const e=y/2;let b=0;return n.forEach(((i,a)=>{const n=s[i];if(a>0){const e=n.getX(),i=t[a],s=u(i.fromTickable).getX()+i.expectedDistance-(e+b);let l=0;s>0?b+=s:s<0&&(l=Math.min(i.maxNegativeShiftPx,Math.abs(s)),b+=-l),n.setX(e+b)}n.getCenterAlignedTickables().forEach((t=>{t.setCenterXShift(e-n.getX())}))})),x.getX()-_.getX()}const y=t-x.getMetrics().notePx-x.getMetrics().totalRightPx-_.getMetrics().totalLeftPx,S=j.currentMusicFont(),T=S.lookupMetric("stave.endPaddingMin"),w=S.lookupMetric("stave.endPaddingMax"),v=S.lookupMetric("stave.padding");let D=y;const z=p(D);let C=f(z);if(1===n.length)return 0;const k=((t,e)=>{let b=t/2;if(e.length>1)for(let t=1;t{let e=0;const b=x&&x.getMaxTickable();if(b){const i=b.getVoice();if(i.getTicksUsed().value()>i.getTotalTicks().value())return 2*wM&&F>0||C+B1;)D-=C-M,B=E(D),P=B-(w-T),C=f(p(D)),F--;return this.justifyWidth=t,this.evaluate()}evaluate(){const t=this.tickContexts,e=this.justifyWidth;this.contextGaps={total:0,gaps:[]},t.list.forEach(((e,b)=>{if(0===b)return;const i=t.list[b-1],a=t.map[i],n=t.map[e],s=a.getMetrics(),l=n.getMetrics(),o=a.getX()+s.notePx+s.totalRightPx,r=n.getX()-l.totalLeftPx,h=r-o;this.contextGaps.total+=h,this.contextGaps.gaps.push({x1:o,x2:r}),n.getFormatterMetrics().freedom.left=h,a.getFormatterMetrics().freedom.right=h})),this.durationStats={};const b=this.durationStats;this.voices.forEach((t=>{t.getTickables().forEach(((t,i,a)=>{const n=t.getTicks().clone().simplify().toString(),s=t.getMetrics(),l=t.getFormatterMetrics(),o=t.getX()+s.notePx+s.modRightPx+s.rightDisplacedHeadPx;let r=0;if(i{t.getTickables().forEach((t=>{const e=t.getTicks().clone().simplify().toString(),a=t.getFormatterMetrics();a.space.mean=b[e].mean,a.duration=e,a.iterations+=1,a.space.deviation=a.space.used-a.space.mean,i+=Math.pow(a.space.deviation,2)}))})),this.totalCost=Math.sqrt(i),this.lossHistory.push(this.totalCost),this.totalCost}tune(t){var e;const b=this.tickContexts;if(!b)return 0;const i=null!==(e=null==t?void 0:t.alpha)&&void 0!==e?e:.5;let a=0;return this.totalShift=0,b.list.forEach(((t,e,n)=>{const s=b.map[t],l=e>0?b.map[n[e-1]]:void 0,o=et.getFormatterMetrics().space.deviation)));r>0?a=-Math.min(s.getFormatterMetrics().freedom.right,Math.abs(r)):r<0&&(a=o?Math.min(o.getFormatterMetrics().freedom.right,Math.abs(r)):0),a*=i,this.totalShift+=a})),this.evaluate()}postFormat(){return this.modifierContexts.forEach((t=>{t.array.forEach((t=>t.postFormat()))})),this.tickContexts.list.forEach((t=>{this.tickContexts.map[t].postFormat()})),this}joinVoices(t){return this.createModifierContexts(t),this.hasMinTotalWidth=!1,this}format(t,e,b){const i=Object.assign({align_rests:!1},b);this.voices=t;const a=this.formatterOptions.softmaxFactor;return a&&this.voices.forEach((t=>t.setSoftmaxFactor(a))),this.alignRests(t,i.align_rests),this.createTickContexts(t),this.preFormat(e,i.context,t,i.stave),i.stave&&this.postFormat(),this}formatToStave(t,e,b){const i=Object.assign({context:e.getContext()},b),a=e.getNoteEndX()-e.getNoteStartX()-ve.defaultPadding;return function(...t){Ee.DEBUG&&f("Vex.Flow.Formatter",t)}("Formatting voices to width: ",a),this.format(t,a,i)}getTickContext(t){var e;return null===(e=this.tickContexts)||void 0===e?void 0:e.map[t]}}var Be;Ee.DEBUG=!1,function(t){t[t.BOTTOM=-1]="BOTTOM",t[t.TOP=1]="TOP"}(Be||(Be={}));class Pe extends O{constructor(t,e={}){if(super(),this.numerator_glyphs=[],this.denom_glyphs=[],!t||!t.length)throw new g("BadArguments","No notes provided for tuplet.");this.options=e,this.notes=t,this.num_notes=null!=this.options.num_notes?this.options.num_notes:t.length,this.options.beats_occupied&&this.beatsOccupiedDeprecationWarning(),this.notes_occupied=this.options.notes_occupied||this.options.beats_occupied||2,null!=this.options.bracketed?this.bracketed=this.options.bracketed:this.bracketed=t.some((t=>!t.hasBeam())),this.ratioed=null!=this.options.ratioed?this.options.ratioed:Math.abs(this.notes_occupied-this.num_notes)>1,this.point=j.currentMusicFont().lookupMetric("digits.tupletPoint"),this.y_pos=16,this.x_pos=100,this.width=200,this.setTupletLocation(this.options.location||Pe.LOCATION_TOP),Ee.AlignRestsToNotes(t,!0,!0),this.resolveGlyphs(),this.attach()}static get CATEGORY(){return x.Tuplet}static get LOCATION_TOP(){return Be.TOP}static get LOCATION_BOTTOM(){return Be.BOTTOM}static get NESTING_OFFSET(){return 15}static get metrics(){return j.currentMusicFont().getMetrics().glyphs.tuplet}attach(){for(let t=0;t=1;)this.numerator_glyphs.unshift(new Q("timeSig"+t%10,this.point)),t=parseInt((t/10).toString(),10);for(this.denom_glyphs=[],t=this.notes_occupied;t>=1;)this.denom_glyphs.unshift(new Q("timeSig"+t%10,this.point)),t=parseInt((t/10).toString(),10)}getNestedTupletCount(){const t=this.location,e=this.notes[0];let b=a(e,t),i=a(e,t);function a(t,e){return t.getTupletStack().filter((t=>t.location===e)).length}return this.notes.forEach((e=>{const n=a(e,t);b=n>b?n:b,i=n0&&(i=Math.min(n,i))}}}else{let t=Pe.metrics.bottomLine;this.notes.forEach((e=>{const b=e.getModifierContext();b&&(t=Math.max(t,b.getState().text_line+1))})),i=b.checkStave().getYForLine(t)+Pe.metrics.noteHeadOffset;for(let t=0;ti&&(i=e)}}return i+t+e}draw(){const t=this.checkContext();this.setRendered();const e=this.notes[0],b=this.notes[this.notes.length-1];this.bracketed?(this.x_pos=e.getTieLeftX()-5,this.width=b.getTieRightX()-this.x_pos+5):(this.x_pos=e.getStemX(),this.width=b.getStemX()-this.x_pos),this.y_pos=this.getYPosition();const i=(t,e)=>t+u(e.getMetrics().width);let a=this.numerator_glyphs.reduce(i,0);this.ratioed&&(a=this.denom_glyphs.reduce(i,a),a+=.32*this.point);const n=this.x_pos+this.width/2-a/2;if(this.bracketed){const e=this.width/2-a/2-5;e>0&&(t.fillRect(this.x_pos,this.y_pos,e,1),t.fillRect(this.x_pos+this.width/2+a/2+5,this.y_pos,e,1),t.fillRect(this.x_pos,this.y_pos+(this.location===Pe.LOCATION_BOTTOM?1:0),1,10*this.location),t.fillRect(this.x_pos+this.width,this.y_pos+(this.location===Pe.LOCATION_BOTTOM?1:0),1,10*this.location))}const s=j.currentMusicFont().lookupMetric("digits.shiftY",0);let l=0;if(this.numerator_glyphs.forEach((e=>{e.render(t,n+l,this.y_pos+this.point/3-2+s),l+=u(e.getMetrics().width)})),this.ratioed){const e=n+l+.16*this.point,b=.06*this.point;t.beginPath(),t.arc(e,this.y_pos-.08*this.point,b,0,2*Math.PI,!1),t.closePath(),t.fill(),t.beginPath(),t.arc(e,this.y_pos+.12*this.point,b,0,2*Math.PI,!1),t.closePath(),t.fill(),l+=.32*this.point,this.denom_glyphs.forEach((e=>{e.render(t,n+l,this.y_pos+this.point/3-2+s),l+=u(e.getMetrics().width)}))}}}function Me(t){let e=0;return t.forEach((t=>{t.keyProps&&t.keyProps.forEach((t=>{e+=t.line-3}))})),e>=0?it.DOWN:it.UP}const Fe="L",Ae="R",Ne="B";class Oe extends O{constructor(t,e=!1){if(super(),this.slope=0,this.y_shift=0,this.forcedPartialDirections={},!t||0===t.length)throw new g("BadArguments","No notes provided for beam.");if(1===t.length)throw new g("BadArguments","Too few notes for beam.");if(this.ticks=t[0].getIntrinsicTicks(),this.ticks>=j.durationToTicks("4"))throw new g("BadArguments","Beams can only be applied to notes shorter than a quarter note.");let b,i;for(this.stem_direction=it.UP,b=0;bt+e.getStemDirection()),0);a=e>-1?it.UP:it.DOWN}for(b=0;b(new v).parse(t)));{const e=parseInt(t.split("/")[0],10),b=parseInt(t.split("/")[1],10);if(e%3==0)return[new v(3,b)];if(b>4)return[new v(2,b)];if(b<=4)return[new v(1,b)]}return[new v(1,4)]}static applyAndGetBeams(t,e,b){return Oe.generateBeams(t.getTickables(),{groups:b,stem_direction:e})}static generateBeams(t,e={}){e.groups&&e.groups.length||(e.groups=[new v(2,8)]);const b=e.groups.map((t=>{if(!t.multiply)throw new g("InvalidBeamGroups","The beam groups must be an array of Vex.Flow.Fractions");return t.clone().multiply(j.RESOLUTION,1)})),i=t;let a=0,n=[],s=[];function l(){b.length-1>a?a+=1:a=0}!function(){let t=[],e=new v(0,1);i.forEach((i=>{if(t=[],i.shouldIgnoreTicks())return n.push(s),void(s=t);s.push(i);const o=b[a].clone(),r=(h=s,h.reduce(((t,e)=>e.getTicks().clone().add(t)),new v(0,1))).add(e);var h;const m=j.durationToNumber(i.getDuration())<8;if(m&&i.getTuplet()&&(o.numerator*=2),r.greaterThan(o)){if(!m){const e=s.pop();e&&t.push(e)}n.push(s);do{e=r.subtract(b[a]),l()}while(e.greaterThanEquals(b[a]));s=t}else r.equals(o)&&(n.push(s),e=new v(0,1),s=t,l())})),s.length>0&&n.push(s)}(),function(){const t=[];n.forEach((b=>{let i=[];b.forEach(((b,a,n)=>{const s=0===a||a===n.length-1,l=n[a-1],o=!e.beam_rests&&b.isRest(),r=e.beam_rests&&e.beam_middle_only&&b.isRest()&&s;let h=!1;if(e.maintain_stem_directions&&l&&!b.isRest()&&!l.isRest()){const t=l.getStemDirection();h=b.getStemDirection()!==t}const m=parseInt(b.getDuration(),10)<8;o||r||h||m?(i.length>0&&t.push(i),i=h?[b]:[]):i.push(b)})),i.length>0&&t.push(i)})),n=t}(),n.forEach((t=>{let b;if(e.maintain_stem_directions){const e=function(t){for(let e=0;e{t.setStemDirection(e)}))}(t,b)}));const o=n.filter((t=>{if(t.length>1){let e=!0;return t.forEach((t=>{t.getIntrinsicTicks()>=j.durationToTicks("4")&&(e=!1)})),e}return!1})),r=function(){const t=[];return n.forEach((e=>{let b;e.forEach((e=>{const i=e.getTuplet();i&&b!==i&&(b=i,t.push(b))}))})),t}(),h=[];return o.forEach((t=>{const b=new Oe(t);e.show_stemlets&&(b.render_options.show_stemlets=!0),e.secondary_breaks&&(b.render_options.secondary_break_ticks=j.durationToTicks(e.secondary_breaks)),!0===e.flat_beams&&(b.render_options.flat_beams=!0,b.render_options.flat_beam_offset=e.flat_beam_offset),h.push(b)})),r.forEach((t=>{const e=t.notes[0].stem_direction===it.DOWN?Be.BOTTOM:Be.TOP;t.setTupletLocation(e);let b=!1;for(let e=0;et.getGlyph().beam_count)).reduce(((t,e)=>e>t?e:t))}breakSecondaryAt(t){return this.break_on_indices=t,this}setPartialBeamSideAt(t,e){return this.forcedPartialDirections[t]=e,this}unsetPartialBeamSideAt(t){return delete this.forcedPartialDirections[t],this}getSlopeY(t,e,b,i){return b+(t-e)*i}calculateSlope(){const{notes:t,stem_direction:e,render_options:{max_slope:b,min_slope:i,slope_iterations:a,slope_cost:n}}=this,s=t[0],l=function(t,e){const b=t.getStemExtents().topY,i=t.getStemX();return(e.getStemExtents().topY-b)/(e.getStemX()-i)}(s,t[t.length-1]),o=(b-i)/a;let r=Number.MAX_VALUE,h=0,m=0;for(let a=i;a<=b;a+=o){let b=0,i=0;for(let n=1;na)&&(o=a,s=Math.min(...i.getYs()),l=i.getBeamCount())}let r=n/t.length;const h=i+l*(1.5*b),m=s+h*-e;e===it.DOWN&&rm&&(r=s-h),a?(e===it.DOWN&&r>a||e===it.UP&&r=8&&(h=-1!==this.break_on_indices.indexOf(o),this.render_options.secondary_break_ticks&&l>=this.render_options.secondary_break_ticks&&(l=0,h=!0));const m=r.getIntrinsicTicks(){const b=e.getStem();if(b){const i=e.getStemX();b.setNoteHeadXBounds(i,i),b.setContext(t).draw()}}),this)}drawBeamLines(t){const e=["4","8","16","32","64"],b=this.notes[0];let i=this.getBeamYToDraw();const a=b.getStemX(),n=this.render_options.beam_width*this.stem_direction;for(let b=0;b0||!0===e;return!e||a>0||(this.pos=i),s?this.matchSuccess():this.matchFail(i),{success:s,results:b,numMatches:a}}expectZeroOrMore(t){return this.expectOneOrMore(t,!0)}expect(t){if(Ie("Evaluating rule function:",t),!t)throw new g("Invalid rule function");let e;const b=t.bind(this.grammar)();if(b.token)e=this.matchToken(b.token,!0===b.noSpace),e.success&&(this.pos+=e.incrementPos);else{if(!b.expect)throw Ie(b),new g("Bad grammar! No `token` or `expect` property "+b);e=b.oneOrMore?this.expectOneOrMore(b):b.zeroOrMore?this.expectZeroOrMore(b):this.expectOne(b)}const i=[];return e.matches=i,e.results&&e.results.forEach((t=>i.push(Ye(t)))),b.run&&e.success&&b.run({matches:i}),e}}function Xe(...t){Je.DEBUG&&f("Vex.Flow.EasyScore",t)}Ge.DEBUG=!1;class He{constructor(t){this.builder=t}begin(){return this.LINE}LINE(){return{expect:[this.PIECE,this.PIECES,this.EOL]}}PIECE(){return{expect:[this.CHORDORNOTE,this.PARAMS],run:()=>this.builder.commitPiece()}}PIECES(){return{expect:[this.COMMA,this.PIECE],zeroOrMore:!0}}PARAMS(){return{expect:[this.DURATION,this.TYPE,this.DOTS,this.OPTS]}}CHORDORNOTE(){return{expect:[this.CHORD,this.SINGLENOTE],or:!0}}CHORD(){return{expect:[this.LPAREN,this.NOTES,this.RPAREN],run:t=>this.builder.addChord(t.matches[1])}}NOTES(){return{expect:[this.NOTE],oneOrMore:!0}}NOTE(){return{expect:[this.NOTENAME,this.ACCIDENTAL,this.OCTAVE]}}SINGLENOTE(){return{expect:[this.NOTENAME,this.ACCIDENTAL,this.OCTAVE],run:t=>{const e=t;this.builder.addSingleNote(e.matches[0],e.matches[1],e.matches[2])}}}ACCIDENTAL(){return{expect:[this.MICROTONES,this.ACCIDENTALS],maybe:!0,or:!0}}DOTS(){return{expect:[this.DOT],zeroOrMore:!0,run:t=>this.builder.setNoteDots(t.matches)}}TYPE(){return{expect:[this.SLASH,this.MAYBESLASH,this.TYPES],maybe:!0,run:t=>this.builder.setNoteType(t.matches[2])}}DURATION(){return{expect:[this.SLASH,this.DURATIONS],maybe:!0,run:t=>this.builder.setNoteDuration(t.matches[1])}}OPTS(){return{expect:[this.LBRACKET,this.KEYVAL,this.KEYVALS,this.RBRACKET],maybe:!0}}KEYVALS(){return{expect:[this.COMMA,this.KEYVAL],zeroOrMore:!0}}KEYVAL(){return{expect:[this.KEY,this.EQUALS,this.VAL],run:t=>this.builder.addNoteOption(t.matches[0],t.matches[2].slice(1,-1))}}VAL(){return{expect:[this.SVAL,this.DVAL],or:!0}}KEY(){return{token:"[a-zA-Z][a-zA-Z0-9]*"}}DVAL(){return{token:'["][^"]*["]'}}SVAL(){return{token:"['][^']*[']"}}NOTENAME(){return{token:"[a-gA-G]"}}OCTAVE(){return{token:"[0-9]+"}}ACCIDENTALS(){return{token:"bb|b|##|#|n"}}MICROTONES(){return{token:"bbs|bss|bs|db|d|\\+\\+-|\\+-|\\+\\+|\\+|k|o"}}DURATIONS(){return{token:"[0-9whq]+"}}TYPES(){return{token:"[rRsSmMhHgG]"}}LPAREN(){return{token:"[(]"}}RPAREN(){return{token:"[)]"}}COMMA(){return{token:"[,]"}}DOT(){return{token:"[.]"}}SLASH(){return{token:"[/]"}}MAYBESLASH(){return{token:"[/]?"}}EQUALS(){return{token:"[=]"}}LBRACKET(){return{token:"\\["}}RBRACKET(){return{token:"\\]"}}EOL(){return{token:"$"}}}class je{constructor(t){this.chord=[],this.dots=0,this.options={},this.duration=t}}class Ve{constructor(t){this.commitHooks=[],this.factory=t,this.reset()}reset(t){this.options=Object.assign({stem:"auto",clef:"treble"},t),this.elements={notes:[],accidentals:[]},this.rollingDuration="8",this.resetPiece()}getFactory(){return this.factory}getElements(){return this.elements}addCommitHook(t){this.commitHooks.push(t)}resetPiece(){Xe("resetPiece"),this.piece=new je(this.rollingDuration)}setNoteDots(t){Xe("setNoteDots:",t),t&&(this.piece.dots=t.length)}setNoteDuration(t){Xe("setNoteDuration:",t),this.rollingDuration=this.piece.duration=t||this.rollingDuration}setNoteType(t){Xe("setNoteType:",t),t&&(this.piece.type=t)}addNoteOption(t,e){Xe("addNoteOption: key:",t,"value:",e),this.piece.options[t]=e}addNote(t,e,b){Xe("addNote:",t,e,b),this.piece.chord.push({key:t,accid:e,octave:b})}addSingleNote(t,e,b){Xe("addSingleNote:",t,e,b),this.addNote(t,e,b)}addChord(t){Xe("startChord"),"object"!=typeof t[0]?this.addSingleNote(t[0]):t.forEach((t=>{t&&this.addNote(...t)})),Xe("endChord")}commitPiece(){Xe("commitPiece");const{factory:t}=this;if(!t)return;const e=Object.assign(Object.assign({},this.options),this.piece.options),b=u(e.stem,"BadArguments","options.stem is not defined").toLowerCase(),i=u(e.clef,"BadArguments","options.clef is not defined").toLowerCase(),{chord:a,duration:n,dots:s,type:l}=this.piece,o=tt.accidentals,r=a.map((t=>{var e;return t.key+(o.includes(null!==(e=t.accid)&&void 0!==e?e:"")?t.accid:"")+"/"+t.octave})),h="auto"===b,m="g"==(null==l?void 0:l.toLowerCase())?t.GhostNote({duration:n,dots:s}):t.StaveNote({keys:r,duration:n,dots:s,type:l,clef:i,auto_stem:h});h||m.setStemDirection("up"===b?it.UP:it.DOWN);const c=[];a.forEach(((e,b)=>{const i=e.accid;if("string"==typeof i){const e=t.Accidental({type:i});m.addModifier(e,b),c.push(e)}else c.push(void 0)}));for(let t=0;tt(e,m,this))),this.elements.notes.push(m),this.elements.accidentals.push(c),this.resetPiece()}}function Ke(t,e){void 0!==t.id&&e.setAttribute("id",t.id)}const $e=/\s*,\s*/;function qe(t,e){void 0!==t.class&&t.class.split($e).forEach((t=>e.addClass(t)))}class Je{constructor(t={}){this.defaults={clef:"treble",time:"4/4",stem:"auto"},this.setOptions(t)}set(t){return this.defaults=Object.assign(Object.assign({},this.defaults),t),this}setOptions(t){var e,b;const i=t.factory,a=null!==(e=t.builder)&&void 0!==e?e:new Ve(i);return this.options=Object.assign(Object.assign({commitHooks:[Ke,qe,pt.easyScoreHook,Nt.easyScoreHook],throwOnError:!1},t),{factory:i,builder:a}),this.factory=i,this.builder=a,this.grammar=new He(this.builder),this.parser=new Ge(this.grammar),null===(b=this.options.commitHooks)||void 0===b||b.forEach((t=>this.addCommitHook(t))),this}setContext(t){return this.factory.setContext(t),this}parse(t,e={}){this.builder.reset(e);const b=this.parser.parse(t);if(!b.success&&this.options.throwOnError)throw Xe(b),new g("Error parsing line: "+t);return b}beam(t,e){return this.factory.Beam({notes:t,options:e}),t}tuplet(t,e){return this.factory.Tuplet({notes:t,options:e}),t}notes(t,e={}){return e=Object.assign({clef:this.defaults.clef,stem:this.defaults.stem},e),this.parse(t,e),this.builder.getElements().notes}voice(t,e={}){return e=Object.assign({time:this.defaults.time},e),this.factory.Voice(e).addTickables(t)}addCommitHook(t){this.builder.addCommitHook(t)}}Je.DEBUG=!1;const Qe="Ghost note must have valid initialization data to identify duration.";class Ze extends Rt{static get CATEGORY(){return x.GhostNote}constructor(t){if(!t)throw new g("BadArguments",Qe);let e;if("string"==typeof t)e={duration:t};else{if("object"!=typeof t)throw new g("BadArguments",Qe);e=t}super(e),this.setWidth(0)}isRest(){return!0}setStave(t){return super.setStave(t),this}addToModifierContext(t){return this}preFormat(){return this.preFormatted=!0,this}draw(){this.setRendered();for(let t=0;t=sb.type.TEXT&&t<=sb.type.MIXED&&(this.type=t),this}setCustomText(t,e){return this.custom_depress_text=t||"",this.custom_release_text=e||"",this}setLine(t){return this.line=t,this}drawBracketed(){const t=this.checkContext();let e,b,i=!1;this.notes.forEach(((a,n,s)=>{i=!i;const l=a.getAbsoluteX(),o=a.checkStave().getYForBottomText(this.line+3);if(l{e=!e;const i=b.checkStave(),a=b.getAbsoluteX(),n=i.getYForBottomText(this.line+3),s=j.currentMusicFont().lookupMetric(`pedalMarking.${e?"down":"up"}.point`);let l=0;e?this.custom_depress_text?(l=t.measureText(this.custom_depress_text).width,t.fillText(this.custom_depress_text,a-l/2,n)):nb("pedal_depress",t,a,n,s):this.custom_release_text?(l=t.measureText(this.custom_release_text).width,t.fillText(this.custom_release_text,a-l/2,n)):nb("pedal_release",t,a,n,s)}))}draw(){const t=this.checkContext();this.setRendered(),t.save(),t.setStrokeStyle(this.render_options.color),t.setFillStyle(this.render_options.color),t.setFont(this.textFont),function(...t){sb.DEBUG&&f("Vex.Flow.PedalMarking",t)}("Rendering Pedal Marking"),this.type===sb.type.BRACKET||this.type===sb.type.MIXED?(t.setLineWidth(this.render_options.bracket_line_width),this.drawBracketed()):this.type===sb.type.TEXT&&this.drawText(),t.restore()}}sb.DEBUG=!1,sb.TEXT_FONT={family:F.SERIF,size:12,weight:k.BOLD,style:E.ITALIC},sb.GLYPHS={pedal_depress:{code:"keyboardPedalPed",x_shift:-10,y_shift:0},pedal_release:{code:"keyboardPedalUp",x_shift:-2,y_shift:3}},sb.type={TEXT:1,BRACKET:2,MIXED:3},sb.typeString={text:sb.type.TEXT,bracket:sb.type.BRACKET,mixed:sb.type.MIXED};const lb={1:"repeat1Bar",2:"repeat2Bars",4:"repeat4Bars",slash:"repeatBarSlash"};class ob extends tb{static get CATEGORY(){return x.RepeatNote}constructor(t,e,b){super(void 0,Object.assign({duration:"q",align_center:"slash"!==t},e),b);const i=new Q(lb[t]||"repeat1Bar",j.currentMusicFont().lookupMetric("repeatNote.point",40),{category:"repeatNote"});this.setGlyph(i)}}function rb(t,e,b,i,a,n,s){t.beginPath(),t.moveTo(e,b),t.lineTo(i,a),t.lineTo(n,s),t.lineTo(e,b),t.closePath(),t.fill()}class hb extends O{constructor(t){super(),this.setNotes(t),this.text="",this.resetFont(),this.render_options={padding_left:4,padding_right:3,line_width:1,line_dash:void 0,rounded_end:!0,color:void 0,draw_start_arrow:!1,draw_end_arrow:!1,arrowhead_length:10,arrowhead_angle:Math.PI/8,text_position_vertical:hb.TextVerticalPosition.TOP,text_justification:hb.TextJustification.CENTER}}static get CATEGORY(){return x.StaveLine}setText(t){return this.text=t,this}setNotes(t){if(!t.first_note&&!t.last_note)throw new g("BadArguments","Notes needs to have either first_note or last_note set.");if(t.first_indices||(t.first_indices=[0]),t.last_indices||(t.last_indices=[0]),t.first_indices.length!==t.last_indices.length)throw new g("BadArguments","Connected notes must have same number of indices.");return this.notes=t,this.first_note=t.first_note,this.first_indices=t.first_indices,this.last_note=t.last_note,this.last_indices=t.last_indices,this}applyLineStyle(){const t=this.checkContext(),e=this.render_options;e.line_dash&&t.setLineDash(e.line_dash),e.line_width&&t.setLineWidth(e.line_width),e.rounded_end?t.setLineCap("round"):t.setLineCap("square")}applyFontStyle(){const t=this.checkContext();t.setFont(this.textFont);const e=this.render_options.color;e&&(t.setStrokeStyle(e),t.setFillStyle(e))}drawArrowLine(t,e,b){const i=this.render_options.draw_start_arrow&&this.render_options.draw_end_arrow,a=e.x,n=e.y,s=b.x,l=b.y,o=Math.sqrt((s-a)*(s-a)+(l-n)*(l-n)),r=(o-this.render_options.arrowhead_length/3)/o;let h,m,c,d;this.render_options.draw_end_arrow||i?(h=Math.round(a+(s-a)*r),m=Math.round(n+(l-n)*r)):(h=s,m=l),this.render_options.draw_start_arrow||i?(c=a+(s-a)*(1-r),d=n+(l-n)*(1-r)):(c=a,d=n),this.render_options.color&&(t.setStrokeStyle(this.render_options.color),t.setFillStyle(this.render_options.color)),t.beginPath(),t.moveTo(c,d),t.lineTo(h,m),t.stroke(),t.closePath();const _=Math.atan2(l-n,s-a),x=Math.abs(this.render_options.arrowhead_length/Math.cos(this.render_options.arrowhead_angle));let g,p,u,f,y,S;(this.render_options.draw_end_arrow||i)&&(g=_+Math.PI+this.render_options.arrowhead_angle,u=s+Math.cos(g)*x,f=l+Math.sin(g)*x,p=_+Math.PI-this.render_options.arrowhead_angle,y=s+Math.cos(p)*x,S=l+Math.sin(p)*x,rb(t,u,f,s,l,y,S)),(this.render_options.draw_start_arrow||i)&&(g=_+this.render_options.arrowhead_angle,u=a+Math.cos(g)*x,f=n+Math.sin(g)*x,p=_-this.render_options.arrowhead_angle,y=a+Math.cos(p)*x,S=n+Math.sin(p)*x,rb(t,u,f,a,n,y,S))}draw(){const t=this.checkContext();this.setRendered();const e=this.first_note,b=this.last_note,i=this.render_options;t.save(),this.applyLineStyle();let a={x:0,y:0},n={x:0,y:0};this.first_indices.forEach(((s,l)=>{const o=this.last_indices[l];a=e.getModifierStartXY(2,s),n=b.getModifierStartXY(1,o);const r=a.y>n.y;a.x+=e.getMetrics().modRightPx+i.padding_left,n.x-=b.getMetrics().modLeftPx+i.padding_right;const h=e.getGlyph().getWidth();e.getKeyProps()[s].displaced&&1===e.getStemDirection()&&(a.x+=h+i.padding_left);b.getKeyProps()[o].displaced&&-1===b.getStemDirection()&&(n.x-=h+i.padding_right),a.y+=r?-3:1,n.y+=r?2:0,this.drawArrowLine(t,a,n)})),t.restore();const s=t.measureText(this.text).width,l=i.text_justification;let o=0;if(l===hb.TextJustification.LEFT)o=a.x;else if(l===hb.TextJustification.CENTER){o=(n.x-a.x)/2+a.x-s/2}else l===hb.TextJustification.RIGHT&&(o=n.x-s);let r=0;const h=i.text_position_vertical;return h===hb.TextVerticalPosition.TOP?r=e.checkStave().getYForTopText():h===hb.TextVerticalPosition.BOTTOM&&(r=e.checkStave().getYForBottomText(j.TEXT_HEIGHT_OFFSET_HACK)),t.save(),this.applyFontStyle(),t.fillText(this.text,o,r),t.restore(),this}}hb.TEXT_FONT=Object.assign({},O.TEXT_FONT),hb.TextVerticalPosition={TOP:1,BOTTOM:2},hb.TextJustification=ae;class mb extends O{constructor(t={}){super(),this.setOptions(t),this.parts=[]}static get CATEGORY(){return x.System}setOptions(t={}){if(!t.factory)throw new g("NoFactory","System.setOptions(options) requires a factory.");this.factory=t.factory,this.options=Object.assign(Object.assign({factory:this.factory,x:10,y:10,width:500,spaceBetweenStaves:12,autoWidth:!1,noJustification:!1,debugFormatter:!1,formatIterations:0,noPadding:!1},t),{details:Object.assign({alpha:.5},t.details),formatOptions:Object.assign({},t.formatOptions)}),!1===this.options.noJustification&&void 0===t.width&&(this.options.autoWidth=!0)}setContext(t){return super.setContext(t),this.factory.setContext(t),this}addConnector(t="double"){return this.connector=this.factory.StaveConnector({top_stave:this.parts[0].stave,bottom_stave:this.parts[this.parts.length-1].stave,type:t}),this.connector}addStave(t){var e;const b=Object.assign({left_bar:!1},t.options),i=null!==(e=t.stave)&&void 0!==e?e:this.factory.Stave({x:this.options.x,y:this.options.y,width:this.options.width,options:b}),a=Object.assign(Object.assign({stave:i,spaceAbove:0,spaceBelow:0,debugNoteMetrics:!1,noJustification:!1},t),{options:b}),n=this.getContext();return a.voices.forEach((t=>t.setContext(n).setStave(i).getTickables().forEach((t=>t.setStave(i))))),this.parts.push(a),i}format(){const t=this.options.details;let e=0;const b=new Ee(t);this.formatter=b;let i=this.options.y,a=0,n=[],s=[];const l=[];this.parts.forEach((t=>{i+=t.stave.space(t.spaceAbove),t.stave.setY(i),b.joinVoices(t.voices),i+=t.stave.space(t.spaceBelow),i+=t.stave.space(this.options.spaceBetweenStaves),t.debugNoteMetrics&&(l.push({y:i,voice:t.voices[0]}),i+=15),n=n.concat(t.voices),s=s.concat(t.stave),a=Math.max(a,t.stave.getNoteStartX())})),this.parts.forEach((t=>t.stave.setNoteStartX(a))),this.options.autoWidth?(e=b.preCalculateMinTotalWidth(n),this.parts.forEach((t=>{t.stave.setWidth(e+ve.rightPadding+(a-this.options.x))}))):e=this.options.noPadding?this.options.width-(a-this.options.x):this.options.width-(a-this.options.x)-ve.defaultPadding,b.format(n,this.options.noJustification?0:e,this.options.formatOptions),b.postFormat();for(let e=0;e{e.voice.getTickables().forEach((b=>St.plotMetrics(t,b,e.y)))}))}}class cb extends Rt{constructor(t,e=!1){super(t),this.glyphs=[],this.greatestString=()=>this.positions.map((t=>t.str)).reduce(((t,e)=>t>e?t:e)),this.leastString=()=>this.positions.map((t=>t.str)).reduce(((t,e)=>tthis.width}setStave(t){super.setStave(t);const e=t.getContext();if(this.setContext(e),e){this.width=0;for(let t=0;tb.width),this.width=Math.max(b.getWidth(),this.width)}this.glyph.getWidth=()=>this.width}const b=this.positions.map((({str:e})=>t.getYForLine(Number(e)-1)));return this.setYs(b),this.stem&&this.stem.setYBounds(this.getStemY(),this.getStemY()),this}getPositions(){return this.positions}getModifierStartXY(t,e){if(!this.preFormatted)throw new g("UnformattedNote","Can't call GetModifierStartXY on an unformatted note");if(0===this.ys.length)throw new g("NoYValues","No Y-Values calculated for this note.");let b=0;if(t===Z.Position.LEFT)b=-2;else if(t===Z.Position.RIGHT)b=this.width+2;else if(t===Z.Position.BELOW||t===Z.Position.ABOVE){b=this.glyph.getWidth()/2}return{x:this.getAbsoluteX()+b,y:this.ys[e]}}getLineForRest(){return Number(this.positions[0].str)}preFormat(){this.preFormatted||(this.modifierContext&&this.modifierContext.preFormat(),this.preFormatted=!0)}getStemX(){return this.getCenterGlyphX()}getStemY(){const t=this.checkStave().getNumLines()-.5,e=it.UP===this.stem_direction?-.5:t;return this.checkStave().getYForLine(e)}getStemExtents(){return this.checkStem().getExtents()}drawFlag(){var t;const{beam:e,glyph:b,render_options:{draw_stem:i}}=this,a=this.checkContext(),n=null==e&&i;if(b.flag&&n){const e=this.getStemX(),b=this.getStemDirection()===it.DOWN?this.getStemY()-this.checkStem().getHeight()-(this.glyph?this.glyph.stem_down_extension:0):this.getStemY()-this.checkStem().getHeight()+(this.glyph?this.glyph.stem_up_extension:0);null===(t=this.flag)||void 0===t||t.render(a,e,b)}}drawModifiers(){this.modifiers.forEach((t=>{l(t)&&!this.render_options.draw_dots||(t.setContext(this.getContext()),t.drawWithStyle())}))}drawStemThrough(){const t=this.getStemX(),e=this.getStemY(),b=this.checkContext(),i=this.render_options.draw_stem,a=this.render_options.draw_stem_through_stave;if(i&&a){const i=function(t,e,b,i){const a=1!==i,n=-1!==i,s=b.getSpacingBetweenLines(),l=b.getNumLines(),o=[];return e.forEach((e=>{const r=e.indexOf(l)>-1,h=e.indexOf(1)>-1;if(a&&h||n&&r)return;1===e.length&&e.push(e[0]);const m=[];e.forEach(((e,a,n)=>{const o=1===e,r=e===l;let h=b.getYForLine(e-1);0!==a||o?a!==n.length-1||r||(h+=s/2-1):h-=s/2-1,m.push(h),1===i&&o?m.push(t-2):-1===i&&r&&m.push(t+2)})),o.push(m.sort(((t,e)=>t-e)))})),o}(e,function(t,e){const b=[];let i=[];for(let a=1;a<=t;a++)e.indexOf(a)>-1?(b.push(i),i=[]):i.push(a);return i.length>0&&b.push(i),b}(this.checkStave().getNumLines(),this.positions.map((t=>Number(t.str)))),this.checkStave(),this.getStemDirection());b.save(),b.setLineWidth(it.WIDTH),i.forEach((e=>{0!==e.length&&(b.beginPath(),b.moveTo(t,e[0]),b.lineTo(t,e[e.length-1]),b.stroke(),b.closePath())})),b.restore()}}drawPositions(){const t=this.checkContext(),e=this.getAbsoluteX(),b=this.ys;for(let i=0;i{const b=ub.GLYPHS[e];if(!b)throw new g("Invalid dynamics character: "+e);const i=u(this.render_options.glyph_font_size),a=new Q(b.code,i,{category:"textNote"});this.glyphs.push(a),t+=b.width})),this.setWidth(t),this.preFormatted=!0,this}draw(){this.setRendered();const t=this.getAbsoluteX(),e=this.checkStave().getYForLine(this.line+-3);pb("Rendering Dynamics: ",this.sequence);let b=t;this.glyphs.forEach(((t,i)=>{const a=this.sequence[i];t.render(this.checkContext(),b,e),b+=ub.GLYPHS[a].width}))}}ub.DEBUG=!1;class fb extends St{constructor(t,e){super({duration:"b"});const b=new Se(t,e);this.timeSigInfo=b.getInfo(),this.setWidth(this.timeSigInfo.glyph.getMetrics().width),this.ignore_ticks=!0}static get CATEGORY(){return x.TimeSigNote}addToModifierContext(t){return this}preFormat(){return this.preFormatted=!0,this}draw(){const t=this.checkStave(),e=this.checkContext();this.setRendered(),this.timeSigInfo.glyph.getContext()||this.timeSigInfo.glyph.setContext(e),this.timeSigInfo.glyph.setStave(t),this.timeSigInfo.glyph.setYShift(t.getYForLine(2)-t.getYForGlyphs()),this.timeSigInfo.glyph.renderToStave(this.getAbsoluteX())}}class yb extends O{constructor(t){super(),t.start&&(this.start=t.start),t.stop&&(this.stop=t.stop),this.line=1,this.render_options={harsh:!1,wave_height:6,wave_width:4,wave_girth:2,vibrato_width:0}}static get CATEGORY(){return x.VibratoBracket}setLine(t){return this.line=t,this}setHarsh(t){return this.render_options.harsh=t,this}draw(){const t=this.checkContext();this.setRendered();const e=this.start&&this.start.checkStave().getYForTopText(this.line)||this.stop&&this.stop.checkStave().getYForTopText(this.line)||0,b=this.start&&this.start.getAbsoluteX()||this.stop&&this.stop.checkStave().getTieStartX()||0,i=this.stop&&this.stop.getAbsoluteX()-this.stop.getWidth()-5||this.start&&this.start.checkStave().getTieEndX()-10||0;this.render_options.vibrato_width=i-b,function(...t){yb.DEBUG&&f("Vex.Flow.VibratoBracket",t)}("Rendering VibratoBracket: start_x:",b,"stop_x:",i,"y:",e),re.renderVibrato(t,b,e,this.render_options)}}function Sb(...t){Tb.DEBUG&&f("Vex.Flow.Factory",t)}yb.DEBUG=!1;class Tb{constructor(t={}){Sb("New factory: ",t),this.options={stave:{space:10},renderer:{elementId:"",width:500,height:200,background:"#FFF"},font:Tb.TEXT_FONT},this.setOptions(t)}static newFromElementId(t,e=500,b=200){return new Tb({renderer:{elementId:t,width:e,height:b}})}reset(){this.renderQ=[],this.systems=[],this.staves=[],this.voices=[],this.stave=void 0}setOptions(t){this.options=Object.assign(Object.assign({},this.options),t),this.initRenderer(),this.reset()}initRenderer(){const{elementId:t,width:e,height:b,background:i}=this.options.renderer;if(null==t)return;if(""==t)throw Sb(this),new g("renderer.elementId not set in FactoryOptions");let a=this.options.renderer.backend;if(void 0===a){a=$t(document.getElementById(t))?se.Backends.CANVAS:se.Backends.SVG}this.context=se.buildContext(t,a,e,b,i)}getContext(){return this.context}setContext(t){return this.context=t,this}getStave(){return this.stave}getVoices(){return this.voices}Stave(t){const e=this.options.stave.space,b=Object.assign({x:0,y:0,width:this.options.renderer.width-1*e,options:{spacing_between_lines_px:1*e}},t),i=new ve(b.x,b.y,b.width,b.options);return this.staves.push(i),i.setContext(this.context),this.stave=i,i}TabStave(t){const e=this.options.stave.space,b=Object.assign({x:0,y:0,width:this.options.renderer.width-1*e,options:{spacing_between_lines_px:1.3*e}},t),i=new db(b.x,b.y,b.width,b.options);return this.staves.push(i),i.setContext(this.context),this.stave=i,i}StaveNote(t){const e=new Ut(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}GlyphNote(t,e,b){const i=new tb(t,e,b);return this.stave&&i.setStave(this.stave),i.setContext(this.context),this.renderQ.push(i),i}RepeatNote(t,e,b){const i=new ob(t,e,b);return this.stave&&i.setStave(this.stave),i.setContext(this.context),this.renderQ.push(i),i}GhostNote(t){const e=new Ze(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}TextNote(t){const e=new pe(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}BarNote(t={}){const e=new Bt(t.type);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}ClefNote(t){const e=Object.assign({type:"treble",options:{size:"default",annotation:void 0}},t),b=new Re(e.type,e.options.size,e.options.annotation);return this.stave&&b.setStave(this.stave),b.setContext(this.context),this.renderQ.push(b),b}TimeSigNote(t){const e=Object.assign({time:"4/4"},t),b=new fb(e.time);return this.stave&&b.setStave(this.stave),b.setContext(this.context),this.renderQ.push(b),b}KeySigNote(t){const e=new bb(t.key,t.cancelKey,t.alterKey);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}TabNote(t){const e=new cb(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),this.renderQ.push(e),e}GraceNote(t){const e=new eb(t);return this.stave&&e.setStave(this.stave),e.setContext(this.context),e}GraceNoteGroup(t){const e=new Xt(t.notes,t.slur);return e.setContext(this.context),e}Accidental(t){const e=new bt(t.type);return e.setContext(this.context),e}Annotation(t){const e=Object.assign({text:"p",hJustify:ot.CENTER,vJustify:rt.BOTTOM},t),b=new ht(e.text);return b.setJustification(e.hJustify),b.setVerticalJustification(e.vJustify),b.setFont(e.font),b.setContext(this.context),b}ChordSymbol(t){const e=Object.assign({vJustify:"top",hJustify:"center",kerning:!0,reportWidth:!0},t),b=new Ft;return b.setHorizontal(e.hJustify),b.setVertical(e.vJustify),b.setEnableKerning(e.kerning),b.setReportWidth(e.reportWidth),"string"==typeof e.fontFamily&&"number"==typeof e.fontSize?"string"==typeof e.fontWeight?b.setFont(e.fontFamily,e.fontSize,e.fontWeight):b.setFont(e.fontFamily,e.fontSize,""):"number"==typeof e.fontSize&&b.setFontSize(e.fontSize),b.setContext(this.context),b}Articulation(t){const e=Object.assign({type:"a.",position:"above"},t),b=new pt(e.type);return b.setPosition(e.position),b.setContext(this.context),b}Ornament(t,e){const b=Object.assign({type:t,position:0,accidental:""},e),i=new Vt(t);return i.setPosition(b.position),b.upperAccidental&&i.setUpperAccidental(b.upperAccidental),b.lowerAccidental&&i.setLowerAccidental(b.lowerAccidental),void 0!==b.delayed&&i.setDelayed(b.delayed),i.setContext(this.context),i}TextDynamics(t){const e=Object.assign({text:"p",duration:"q",dots:0,line:0},t),b=new ub({text:e.text,line:e.line,duration:e.duration,dots:e.dots});return this.stave&&b.setStave(this.stave),b.setContext(this.context),this.renderQ.push(b),b}Fingering(t){const e=Object.assign({number:"0",position:"left"},t),b=new Nt(e.number);return b.setPosition(e.position),b.setContext(this.context),b}StringNumber(t,e=!0){const b=new le(t.number);return b.setPosition(t.position),b.setContext(this.context),b.setDrawCircle(e),b}TickContext(){return new jt}ModifierContext(){return new me}MultiMeasureRest(t){const e=u(t.number_of_measures,"NoNumberOfMeasures"),b=new ab(e,t);return b.setContext(this.context),this.renderQ.push(b),b}Voice(t){const e=Object.assign({time:"4/4"},t),b=new Gt(e.time);return this.voices.push(b),b}StaveConnector(t){const e=new ze(t.top_stave,t.bottom_stave);return e.setType(t.type).setContext(this.context),this.renderQ.push(e),e}Formatter(t){return new Ee(t)}Tuplet(t){const e=Object.assign({notes:[],options:{}},t),b=new Pe(e.notes,e.options).setContext(this.context);return this.renderQ.push(b),b}Beam(t){var e,b,i,a,n;const s=new Oe(t.notes,null===(e=t.options)||void 0===e?void 0:e.autoStem).setContext(this.context);return s.breakSecondaryAt(null!==(i=null===(b=t.options)||void 0===b?void 0:b.secondaryBeamBreaks)&&void 0!==i?i:[]),(null===(a=t.options)||void 0===a?void 0:a.partialBeamDirections)&&Object.entries(null===(n=t.options)||void 0===n?void 0:n.partialBeamDirections).forEach((([t,e])=>{s.setPartialBeamSideAt(Number(t),e)})),this.renderQ.push(s),s}Curve(t){const e=new We(t.from,t.to,t.options).setContext(this.context);return this.renderQ.push(e),e}StaveTie(t){var e;const b=new Wt({first_note:t.from,last_note:t.to,first_indices:t.first_indices,last_indices:t.last_indices},t.text);return(null===(e=t.options)||void 0===e?void 0:e.direction)&&b.setDirection(t.options.direction),b.setContext(this.context),this.renderQ.push(b),b}StaveLine(t){var e,b;const i=new hb({first_note:t.from,last_note:t.to,first_indices:t.first_indices,last_indices:t.last_indices});return(null===(e=t.options)||void 0===e?void 0:e.text)&&i.setText(t.options.text),(null===(b=t.options)||void 0===b?void 0:b.font)&&i.setFont(t.options.font),i.setContext(this.context),this.renderQ.push(i),i}VibratoBracket(t){const e=new yb({start:t.from,stop:t.to});return t.options.line&&e.setLine(t.options.line),t.options.harsh&&e.setHarsh(t.options.harsh),e.setContext(this.context),this.renderQ.push(e),e}TextBracket(t){const e=new gb({start:t.from,stop:t.to,text:t.text,superscript:t.options.superscript,position:t.options.position});return t.options.line&&e.setLine(t.options.line),t.options.font&&e.setFont(t.options.font),e.setContext(this.context),this.renderQ.push(e),e}System(t={}){t.factory=this;const e=new mb(t).setContext(this.context);return this.systems.push(e),e}EasyScore(t={}){return t.factory=this,new Je(t)}PedalMarking(t){const e=Object.assign({notes:[],options:{style:"mixed"}},t),b=new sb(e.notes);return b.setType(sb.typeString[e.options.style]),b.setContext(this.context),this.renderQ.push(b),b}NoteSubGroup(t){const e=Object.assign({notes:[]},t),b=new Ht(e.notes);return b.setContext(this.context),b}draw(){const t=this.context;this.systems.forEach((e=>e.setContext(t).format())),this.staves.forEach((e=>e.setContext(t).draw())),this.voices.forEach((e=>e.setContext(t).draw())),this.renderQ.forEach((e=>{e.isRendered()||e.setContext(t).draw()})),this.systems.forEach((e=>e.setContext(t).draw())),this.reset()}}Tb.DEBUG=!1,Tb.TEXT_FONT=Object.assign({},O.TEXT_FONT);class wb extends cb{static get CATEGORY(){return x.GraceTabNote}constructor(t){super(t,!1),this.render_options=Object.assign(Object.assign({},this.render_options),{y_shift:.3,scale:.6,font:`7.5pt ${F.SANS_SERIF}`}),this.updateWidth()}}class vb{constructor(t){this.music=new tt,this.setKey(t)}setKey(t){return this.key=t,this.reset(),this}getKey(){return this.key}reset(){this.keyParts=this.music.getKeyParts(this.key),this.keyString=this.keyParts.root,this.keyParts.accidental&&(this.keyString+=this.keyParts.accidental);if(!tt.scaleTypes[this.keyParts.type])throw new g("BadArguments",`Unsupported key type: ${this.key}`);this.scale=this.music.getScaleTones(this.music.getNoteValue(this.keyString),tt.scaleTypes[this.keyParts.type]),this.scaleMap={},this.scaleMapByValue={},this.originalScaleMapByValue={};const t=tt.root_indices[this.keyParts.root];for(let e=0;ei?zb.SLIDE_DOWN:zb.SLIDE_UP}this.direction=e,this.render_options.cp1=11,this.render_options.cp2=14,this.render_options.y_shift=.5,this.resetFont()}static get CATEGORY(){return x.TabSlide}static get SLIDE_UP(){return 1}static get SLIDE_DOWN(){return-1}static createSlideUp(t){return new zb(t,zb.SLIDE_UP)}static createSlideDown(t){return new zb(t,zb.SLIDE_DOWN)}renderTie(t){if(0===t.first_ys.length||0===t.last_ys.length)throw new g("BadArguments","No Y-values to render");const e=this.checkContext(),b=t.first_x_px,i=t.first_ys,a=t.last_x_px,n=t.direction;if(n!==zb.SLIDE_UP&&n!==zb.SLIDE_DOWN)throw new g("BadSlide","Invalid slide direction");const s=this.notes.first_indices;for(let t=0;tthis.tuningValues.length)throw new g("BadArguments",`String number must be between 1 and ${this.tuningValues.length}:${t}`);return this.tuningValues[e-1]}getValueForFret(t,e){const b=this.getValueForString(e),i=Number(t);if(i<0)throw new g("BadArguments",`Fret number must be 0 or higher: ${t}`);return b+i}getNoteForFret(t,e){const b=this.getValueForFret(t,e),i=Math.floor(b/12),a=b%12;return`${j.integerToNote(a)}/${i}`}}var Eb=function(t,e,b,i){return new(b||(b=Promise))((function(a,n){function s(t){try{o(i.next(t))}catch(t){n(t)}}function l(t){try{o(i.throw(t))}catch(t){n(t)}}function o(t){var e;t.done?a(t.value):(e=t.value,e instanceof b?e:new b((function(t){t(e)}))).then(s,l)}o((i=i.apply(t,e||[])).next())}))};class Bb{static get BUILD(){return{VERSION:"4.1.0-alpha.0",ID:"847bc9014672858aedc7f8460384f51f98d6bd84",DATE:"2022-10-10T04:47:38.237Z"}}static setMusicFont(...t){const e=t.map((t=>F.load(t)));return j.MUSIC_FONT_STACK=e,Q.MUSIC_FONT_STACK=e.slice(),Q.CURRENT_CACHE_KEY=t.join(","),e}static fetchMusicFont(t,e){return Eb(this,void 0,void 0,(function*(){}))}static getMusicFont(){return j.MUSIC_FONT_STACK.map((t=>t.getName()))}static get RENDER_PRECISION_PLACES(){return j.RENDER_PRECISION_PLACES}static set RENDER_PRECISION_PLACES(t){j.RENDER_PRECISION_PLACES=t}static get SOFTMAX_FACTOR(){return j.SOFTMAX_FACTOR}static set SOFTMAX_FACTOR(t){j.SOFTMAX_FACTOR=t}static get NOTATION_FONT_SCALE(){return j.NOTATION_FONT_SCALE}static set NOTATION_FONT_SCALE(t){j.NOTATION_FONT_SCALE=t}static get TABLATURE_FONT_SCALE(){return j.TABLATURE_FONT_SCALE}static set TABLATURE_FONT_SCALE(t){j.TABLATURE_FONT_SCALE=t}static get RESOLUTION(){return j.RESOLUTION}static set RESOLUTION(t){j.RESOLUTION=t}static get SLASH_NOTEHEAD_WIDTH(){return j.SLASH_NOTEHEAD_WIDTH}static set SLASH_NOTEHEAD_WIDTH(t){j.SLASH_NOTEHEAD_WIDTH=t}static get STAVE_LINE_DISTANCE(){return j.STAVE_LINE_DISTANCE}static set STAVE_LINE_DISTANCE(t){j.STAVE_LINE_DISTANCE=t}static get STAVE_LINE_THICKNESS(){return j.STAVE_LINE_THICKNESS}static set STAVE_LINE_THICKNESS(t){j.STAVE_LINE_THICKNESS=t}static get STEM_HEIGHT(){return j.STEM_HEIGHT}static set STEM_HEIGHT(t){j.STEM_HEIGHT=t}static get STEM_WIDTH(){return j.STEM_WIDTH}static set STEM_WIDTH(t){j.STEM_WIDTH=t}static get TIME4_4(){return j.TIME4_4}static get accidentalMap(){return j.accidentalMap}static get unicode(){return j.unicode}static keySignature(t){return j.keySignature(t)}static hasKeySignature(t){return j.hasKeySignature(t)}static getKeySignatures(){return j.getKeySignatures()}static clefProperties(t){return j.clefProperties(t)}static keyProperties(t,e,b){return j.keyProperties(t,e,b)}static durationToTicks(t){return j.durationToTicks(t)}}Bb.Accidental=bt,Bb.Annotation=ht,Bb.Articulation=pt,Bb.Barline=Et,Bb.BarNote=Bt,Bb.Beam=Oe,Bb.Bend=Pt,Bb.BoundingBox=z,Bb.BoundingBoxComputation=C,Bb.CanvasContext=Jt,Bb.ChordSymbol=Ft,Bb.Clef=ce,Bb.ClefNote=Re,Bb.Crescendo=Le,Bb.Curve=We,Bb.Dot=At,Bb.EasyScore=Je,Bb.Element=O,Bb.Factory=Tb,Bb.Font=F,Bb.Formatter=Ee,Bb.Fraction=v,Bb.FretHandFinger=Nt,Bb.GhostNote=Ze,Bb.Glyph=Q,Bb.GlyphNote=tb,Bb.GraceNote=eb,Bb.GraceNoteGroup=Xt,Bb.GraceTabNote=wb,Bb.KeyManager=vb,Bb.KeySignature=de,Bb.KeySigNote=bb,Bb.Modifier=Z,Bb.ModifierContext=me,Bb.MultiMeasureRest=ab,Bb.Music=tt,Bb.Note=St,Bb.NoteHead=Ot,Bb.NoteSubGroup=Ht,Bb.Ornament=Vt,Bb.Parenthesis=Kt,Bb.Parser=Ge,Bb.PedalMarking=sb,Bb.Registry=N,Bb.RenderContext=ut,Bb.Renderer=se,Bb.RepeatNote=ob,Bb.Repetition=_e,Bb.Stave=ve,Bb.StaveConnector=ze,Bb.StaveHairpin=Db,Bb.StaveLine=hb,Bb.StaveModifier=kt,Bb.StaveNote=Ut,Bb.StaveTempo=ge,Bb.StaveText=ue,Bb.StaveTie=Wt,Bb.Stem=it,Bb.StringNumber=le,Bb.Stroke=oe,Bb.SVGContext=ee,Bb.System=mb,Bb.TabNote=cb,Bb.TabSlide=zb,Bb.TabStave=db,Bb.TabTie=It,Bb.TextBracket=gb,Bb.TextDynamics=ub,Bb.TextFormatter=lt,Bb.TextNote=pe,Bb.TickContext=jt,Bb.TimeSignature=Se,Bb.TimeSigNote=fb,Bb.Tremolo=Cb,Bb.Tuning=kb,Bb.Tuplet=Pe,Bb.Vibrato=re,Bb.VibratoBracket=yb,Bb.Voice=Gt,Bb.Volta=fe,Bb.AnnotationHorizontalJustify=ot,Bb.AnnotationVerticalJustify=rt,Bb.ChordSymbolHorizontalJustify=vt,Bb.ChordSymbolVerticalJustify=Dt,Bb.SymbolTypes=zt,Bb.SymbolModifiers=Ct,Bb.CurvePosition=Ue,Bb.FontWeight=k,Bb.FontStyle=E,Bb.ModifierPosition=$,Bb.RendererBackends=be,Bb.RendererLineEndType=ie,Bb.BarlineType=wt,Bb.StaveModifierPosition=Tt,Bb.VoltaType=ne,Bb.TextBracketPosition=xb,Bb.TextJustification=ae,Bb.VoiceMode=Yt;const Pb={glyphs:{bracketTop:{x_min:0,x_max:469,y_min:0,y_max:295,ha:295,o:"m 0 0 l 180 0 b 674 390 410 43 616 150 b 675 405 675 396 675 400 b 664 425 675 416 671 422 b 628 405 651 425 635 415 b 157 179 613 389 432 199 l 12 179 b 0 168 3 179 0 177 z"},bracketBottom:{x_min:0,x_max:469,y_min:-295,y_max:0,ha:295,o:"m 0 -168 b 12 -179 0 -177 3 -179 l 157 -179 b 628 -405 432 -199 613 -389 b 664 -425 635 -415 651 -425 b 675 -405 671 -422 675 -416 b 674 -390 675 -400 675 -396 b 180 0 616 -150 410 -43 l 0 0 z"},barlineTick:{x_min:0,x_max:36,y_min:868,y_max:1120,ha:252,o:"m 52 1250 l 52 1613 l 0 1613 l 0 1250 z"},breathMarkTick:{x_min:0,x_max:500,y_min:0,y_max:502,ha:502,o:"m 9 367 b 0 374 6 372 3 374 b 9 334 0 367 0 343 b 179 19 40 312 164 121 b 192 0 179 3 186 0 b 210 19 197 0 207 6 b 698 701 245 197 507 658 b 720 714 714 704 720 711 b 698 723 720 720 711 723 b 197 186 455 714 210 202 b 186 176 194 179 189 176 b 176 186 179 176 176 186 b 9 367 143 266 27 359 z"},segno:{x_min:4,x_max:550,y_min:-27,y_max:759,ha:786,o:"m 194 958 b 217 939 203 958 213 955 l 220 929 b 325 805 230 890 252 805 b 425 901 384 805 425 840 b 413 969 425 923 420 946 b 220 1060 390 1035 294 1060 b 6 793 120 1060 6 936 b 29 687 6 759 13 723 b 295 449 75 582 284 454 b 304 438 301 446 304 444 b 295 415 304 432 301 425 b 78 22 285 395 78 22 b 73 3 75 16 73 9 b 114 -39 73 -20 91 -39 b 150 -17 128 -39 143 -30 b 377 395 150 -17 373 386 b 395 402 377 393 389 402 b 704 176 416 397 704 312 b 621 75 704 120 670 82 l 616 73 b 562 138 586 73 562 94 l 562 154 b 485 249 562 209 526 249 b 468 246 480 249 474 248 b 366 153 415 233 366 210 b 540 -12 366 65 455 -12 b 600 -1 559 -12 579 -9 b 792 251 716 37 792 131 b 789 292 792 264 791 278 b 523 588 768 451 540 579 b 498 611 505 598 498 603 b 501 619 498 613 500 616 b 732 1032 508 631 732 1032 b 737 1053 736 1040 737 1045 b 697 1093 737 1076 719 1093 b 661 1073 683 1093 668 1086 b 423 647 661 1073 432 660 b 410 635 419 639 416 635 b 396 639 406 635 402 636 b 128 792 383 644 166 727 b 108 868 120 808 108 838 b 186 958 108 907 125 948 z m 598 671 b 680 589 598 626 635 589 b 762 671 726 589 762 626 b 680 753 762 717 726 753 b 598 671 635 753 598 717 z m 202 380 b 120 462 202 425 166 462 b 37 380 75 462 37 425 b 120 298 37 334 75 298 b 202 380 166 298 202 334 z"},coda:{x_min:-4,x_max:955,y_min:-158,y_max:898,ha:1056,o:"m 1349 576 l 1178 576 b 729 1083 1164 847 962 1064 l 729 1269 b 694 1293 729 1287 713 1293 b 660 1269 675 1293 660 1287 l 660 1083 b 210 576 426 1064 226 848 l 20 576 b -6 541 0 576 -6 560 b 20 507 -6 523 0 507 l 210 507 b 660 0 226 238 426 19 l 660 -202 b 694 -228 660 -222 675 -228 b 729 -202 713 -228 729 -222 l 729 0 b 1178 507 962 19 1164 238 l 1349 507 b 1375 541 1369 507 1375 523 b 1349 576 1375 560 1369 576 z m 940 576 l 729 576 l 729 1002 b 940 576 930 985 940 809 z m 660 1002 l 660 576 l 455 576 b 660 1002 455 809 455 985 z m 455 507 l 660 507 l 660 69 b 455 507 474 91 456 285 z m 729 69 l 729 507 l 940 507 b 729 69 936 287 909 91 z"},gClef:{x_min:0,x_max:671,y_min:-658,y_max:1098,ha:1756,o:"m 541 598 b 550 625 539 615 541 616 b 824 1174 706 770 824 953 b 730 1509 824 1299 789 1423 b 655 1581 708 1541 671 1581 b 562 1512 635 1581 590 1544 b 420 1064 455 1394 420 1214 b 441 828 420 981 431 887 b 428 793 444 811 445 808 b 0 125 220 622 0 416 b 524 -363 0 -125 171 -363 b 624 -354 557 -363 595 -360 b 645 -367 639 -351 642 -350 b 684 -657 662 -464 684 -589 b 455 -896 684 -870 540 -896 b 340 -854 377 -896 340 -873 b 386 -829 340 -844 353 -840 b 482 -694 431 -816 482 -778 b 344 -547 482 -615 432 -547 b 190 -713 248 -547 190 -624 b 464 -948 190 -806 246 -948 b 747 -660 560 -948 747 -904 b 706 -351 747 -577 721 -441 b 724 -327 703 -334 704 -336 b 966 16 870 -269 966 -147 b 619 363 966 200 831 363 b 577 389 582 363 582 363 z m 677 1358 b 763 1240 724 1358 763 1319 b 513 851 763 1080 626 950 b 494 863 503 842 497 844 b 485 995 488 900 485 949 b 677 1358 485 1220 589 1358 z m 520 377 b 498 343 524 350 524 351 b 289 63 372 300 289 186 b 455 -192 289 -66 357 -158 b 494 -200 467 -196 484 -200 b 511 -184 505 -200 511 -193 b 490 -166 511 -174 500 -170 b 386 -12 429 -140 386 -78 b 530 157 386 71 442 132 b 559 145 553 163 556 161 l 631 -284 b 611 -304 634 -300 632 -300 b 530 -311 588 -308 559 -311 b 115 29 278 -311 115 -171 b 249 363 115 114 130 228 b 469 567 336 459 402 513 b 490 562 484 579 487 577 z m 619 148 b 635 168 616 166 618 170 b 848 -66 752 158 848 60 b 713 -271 848 -157 793 -230 b 690 -262 696 -279 693 -279 z"},cClef:{x_min:0,x_max:699,y_min:-506,y_max:506,ha:1012,o:"m 331 694 b 301 724 331 714 321 724 l 300 724 b 269 694 279 724 269 714 l 269 -694 b 300 -724 269 -714 279 -724 l 301 -724 b 331 -694 321 -724 331 -714 l 331 -63 b 344 -55 331 -52 338 -53 b 472 -265 382 -65 442 -102 b 500 -301 477 -288 485 -301 b 530 -262 516 -301 523 -287 b 684 -128 549 -199 582 -128 b 804 -409 778 -128 804 -220 b 651 -683 804 -598 770 -683 b 528 -644 631 -683 528 -674 b 567 -622 528 -636 552 -628 b 625 -528 596 -612 625 -583 b 527 -429 625 -465 583 -429 b 416 -547 465 -429 416 -471 b 667 -729 416 -638 495 -729 b 1007 -413 903 -729 1007 -563 b 706 -76 1007 -215 897 -76 b 618 -89 664 -76 636 -84 b 576 -88 603 -94 589 -96 b 524 0 556 -75 524 -29 b 576 88 524 29 556 75 b 618 89 589 96 603 94 b 706 76 636 84 664 76 b 1007 413 897 76 1007 215 b 667 729 1007 563 903 729 b 416 547 495 729 416 638 b 527 429 416 471 465 429 b 625 528 583 429 625 465 b 567 622 625 583 596 612 b 528 644 552 628 528 636 b 651 683 528 674 631 683 b 804 409 770 683 804 598 b 684 128 804 220 778 128 b 530 262 582 128 549 199 b 500 301 523 287 516 301 b 472 265 485 301 477 288 b 344 55 442 102 382 65 b 331 63 338 53 331 52 z m 30 724 b 0 694 10 724 0 714 l 0 -694 b 30 -724 0 -714 10 -724 l 154 -724 b 184 -694 174 -724 184 -714 l 184 694 b 154 724 184 714 174 724 z"},fClef:{x_min:-5,x_max:684,y_min:-635,y_max:262,ha:897,o:"m 363 377 b 0 56 112 377 0 194 b 177 -158 0 -59 60 -158 b 330 -6 268 -158 330 -95 b 192 144 330 86 262 144 b 120 134 153 144 138 134 b 96 160 101 134 96 145 b 330 323 96 217 183 323 b 549 -53 482 323 549 173 b 14 -871 549 -455 350 -680 b -7 -897 1 -878 -7 -886 b 12 -914 -7 -906 -1 -914 b 36 -907 19 -914 27 -912 b 765 -40 390 -734 765 -478 b 363 377 765 210 612 377 z m 906 259 b 827 180 861 259 827 225 b 906 101 827 135 861 101 b 985 180 950 101 985 135 b 906 259 985 225 950 259 z m 907 -102 b 829 -180 863 -102 829 -135 b 907 -258 829 -225 863 -258 b 985 -180 952 -258 985 -225 b 907 -102 985 -135 952 -102 z"},unpitchedPercussionClef1:{x_min:0,x_max:382,y_min:-250,y_max:250,ha:500,o:"m 230 -338 l 230 338 b 210 360 230 350 222 360 l 20 360 b 0 338 9 360 0 350 l 0 -338 b 20 -360 0 -350 9 -360 l 210 -360 b 230 -338 222 -360 230 -350 z m 550 338 b 530 360 550 350 541 360 l 340 360 b 320 338 328 360 320 350 l 320 -338 b 340 -360 320 -350 328 -360 l 530 -360 b 550 -338 541 -360 550 -350 z"},"6stringTabClef":{x_min:-3,x_max:408,y_min:-748,y_max:764,ha:1512,o:"m 557 1024 l 557 1100 l 26 1100 l 26 1024 l 249 1024 l 249 422 l 336 422 l 336 1024 z m 588 -328 l 350 348 l 238 348 l -4 -328 l 88 -328 l 160 -125 l 420 -125 l 491 -328 z m 397 -52 l 181 -52 l 292 256 z m 544 -883 b 420 -719 544 -802 507 -752 b 514 -572 482 -690 514 -639 b 314 -399 514 -472 442 -399 l 39 -399 l 39 -1077 l 344 -1077 b 544 -883 467 -1077 544 -995 z m 428 -583 b 292 -691 428 -652 389 -691 l 125 -691 l 125 -475 l 292 -475 b 428 -583 389 -475 428 -514 z m 458 -884 b 337 -1001 458 -949 418 -1001 l 125 -1001 l 125 -768 l 337 -768 b 458 -884 418 -768 458 -818 z"},timeSig0:{x_min:20,x_max:450,y_min:-250,y_max:251,ha:501,o:"m 648 0 b 338 361 648 200 510 361 b 29 0 167 361 29 200 b 338 -360 29 -199 167 -360 b 648 0 510 -360 648 -199 z m 338 317 b 446 10 397 317 446 180 b 338 -295 446 -158 397 -295 b 230 10 278 -295 230 -158 b 338 317 230 180 278 317 z"},timeSig1:{x_min:20,x_max:314,y_min:-250,y_max:251,ha:501,o:"m 35 19 b 29 0 35 19 29 10 b 45 -20 29 -7 33 -16 b 58 -23 50 -22 56 -23 b 78 -10 72 -23 78 -10 b 156 117 78 -10 140 89 b 170 131 161 127 167 131 b 179 111 176 131 179 120 l 179 -261 b 115 -315 179 -294 145 -315 b 91 -337 105 -315 91 -320 b 122 -360 91 -353 104 -360 l 429 -360 b 452 -337 452 -360 452 -337 b 431 -315 452 -337 452 -315 b 384 -265 410 -315 384 -289 l 384 328 b 356 361 384 351 376 360 b 281 356 336 361 300 356 b 206 360 253 356 228 357 b 199 361 203 360 200 361 b 173 334 184 361 179 347 z"},timeSig2:{x_min:20,x_max:426,y_min:-257,y_max:254,ha:511,o:"m 606 -131 b 589 -111 606 -114 599 -111 b 570 -127 577 -111 573 -117 l 569 -128 b 513 -192 554 -164 543 -192 b 488 -187 505 -192 498 -190 b 445 -171 469 -180 459 -179 b 289 -137 416 -160 348 -137 b 236 -145 271 -137 252 -140 b 422 -42 268 -94 390 -50 b 613 147 523 -14 613 27 b 330 366 613 300 464 366 b 69 275 229 366 140 357 b 29 170 45 245 29 209 b 42 108 29 150 33 130 b 160 29 63 63 108 29 b 261 156 248 29 261 120 b 161 275 261 242 161 246 b 275 330 164 295 190 330 b 405 192 403 330 405 233 b 193 -102 405 60 297 -39 b 33 -317 114 -153 58 -223 l 32 -321 b 69 -370 32 -340 48 -370 b 203 -282 101 -370 118 -282 b 410 -360 261 -282 282 -360 b 606 -131 472 -360 583 -354 z"},timeSig3:{x_min:20,x_max:401,y_min:-251,y_max:249,ha:500,o:"m 307 357 b 301 357 305 357 304 357 l 291 359 b 285 359 289 359 287 359 b 37 200 161 359 37 276 b 154 84 37 153 65 89 l 161 84 b 256 177 225 84 256 130 l 256 189 b 209 248 252 242 216 245 b 180 268 202 251 180 248 l 180 274 b 240 310 183 298 228 310 b 374 199 363 310 374 233 l 374 189 b 199 36 374 82 289 40 b 164 12 184 35 164 27 b 200 -6 164 -6 189 -6 b 379 -137 366 -6 379 -118 b 269 -307 379 -289 301 -307 b 256 -305 264 -307 258 -305 b 216 -282 245 -304 217 -304 l 216 -275 b 249 -180 216 -243 248 -222 b 145 -76 249 -120 207 -76 b 130 -78 140 -76 135 -76 b 60 -115 105 -82 78 -96 b 29 -203 36 -137 29 -171 b 275 -361 32 -315 134 -359 l 288 -361 b 577 -161 431 -361 577 -288 l 577 -151 b 537 -50 575 -109 564 -82 b 503 -20 528 -39 517 -29 l 472 -3 l 425 10 b 410 17 418 12 413 12 b 409 24 409 20 409 22 b 415 37 409 30 410 36 b 459 50 431 42 446 43 b 547 181 517 78 547 115 b 307 357 547 314 367 353 z"},timeSig4:{x_min:20,x_max:450,y_min:-250,y_max:251,ha:501,o:"m 521 -107 l 521 202 b 504 226 521 213 520 226 b 475 213 491 226 484 223 l 338 48 b 325 14 333 40 325 32 l 325 -107 l 131 -107 b 481 336 246 -9 477 318 l 482 340 b 461 361 482 353 472 361 b 363 359 448 361 389 359 b 261 361 337 359 272 361 b 228 334 248 361 228 357 b 43 -105 228 156 86 -45 l 35 -117 b 35 -118 35 -117 35 -118 l 33 -120 b 29 -137 30 -127 29 -132 b 58 -161 29 -151 40 -161 l 325 -161 l 325 -252 b 268 -302 325 -291 294 -302 b 235 -330 245 -302 235 -315 b 262 -360 235 -344 240 -360 l 569 -360 b 598 -330 583 -360 598 -350 b 566 -301 598 -310 580 -301 b 521 -246 552 -301 521 -292 l 521 -161 l 626 -161 b 648 -134 641 -161 648 -151 b 626 -107 648 -117 642 -107 z"},timeSig5:{x_min:20,x_max:383,y_min:-251,y_max:246,ha:497,o:"m 109 85 b 117 179 109 85 115 166 b 138 197 118 190 125 197 l 144 197 b 285 184 158 194 226 184 b 492 323 485 184 492 300 b 472 353 492 341 488 353 b 295 340 454 353 341 340 b 101 354 249 340 125 351 b 66 330 75 354 68 341 l 50 10 l 50 7 b 79 -14 50 -12 65 -14 b 111 14 94 -14 95 -1 b 209 62 125 29 160 62 b 357 -125 258 62 357 35 b 235 -304 357 -284 272 -304 b 202 -300 223 -304 212 -304 b 184 -279 194 -295 186 -289 b 202 -259 184 -269 194 -264 b 256 -163 235 -239 256 -203 b 144 -50 256 -99 206 -50 b 30 -157 66 -50 35 -107 b 29 -183 29 -166 29 -174 b 284 -361 29 -302 107 -361 b 552 -125 456 -361 552 -255 b 314 112 552 6 445 112 b 122 71 230 112 168 98 b 115 69 120 69 117 69 b 109 79 109 69 109 75 z"},timeSig6:{x_min:20,x_max:414,y_min:-249,y_max:251,ha:500,o:"m 439 120 b 554 229 500 120 554 167 b 553 245 554 235 554 239 b 348 361 539 337 426 361 b 85 209 239 360 137 307 b 29 4 53 148 29 72 l 29 -1 b 73 -200 30 -68 42 -143 b 324 -359 132 -307 203 -359 b 513 -307 389 -359 461 -348 b 596 -137 563 -266 596 -202 b 379 72 596 -24 490 72 b 248 22 333 72 285 55 b 239 19 245 19 242 19 b 226 53 230 19 226 30 b 346 327 230 320 315 327 b 393 305 374 327 393 320 b 357 251 393 285 366 268 b 347 209 350 238 347 223 b 369 150 347 187 354 166 b 439 120 379 131 420 120 z m 320 3 b 405 -158 366 3 405 -69 b 320 -320 405 -248 366 -320 b 236 -158 274 -320 236 -248 b 320 3 236 -69 274 3 z"},timeSig7:{x_min:20,x_max:421,y_min:-250,y_max:249,ha:499,o:"m 606 294 b 582 351 606 333 606 351 b 552 336 580 351 557 346 b 485 236 541 318 521 236 b 262 359 449 236 382 359 b 137 307 179 359 157 325 b 98 281 117 288 108 282 b 60 315 86 281 68 301 b 43 325 58 321 50 325 b 29 308 36 325 29 321 l 29 71 b 45 48 29 71 30 48 b 66 76 56 48 60 60 b 164 196 81 112 99 196 b 374 88 222 196 291 88 b 446 118 415 88 435 109 b 459 124 451 121 456 124 b 469 111 465 124 468 120 b 272 -112 469 71 359 -10 b 173 -315 217 -176 173 -259 b 200 -360 173 -346 173 -360 b 294 -347 226 -360 258 -347 b 412 -360 330 -347 397 -360 b 435 -307 426 -360 435 -348 b 606 288 435 -66 606 140 z"},timeSig8:{x_min:20,x_max:416,y_min:-259,y_max:259,ha:518,o:"m 481 52 b 567 204 533 85 567 132 b 317 373 567 351 356 373 b 36 176 150 373 36 297 b 161 -16 36 76 92 23 b 29 -190 86 -52 29 -99 b 301 -373 29 -315 158 -373 b 599 -117 445 -373 599 -311 b 481 52 599 -30 549 17 z m 406 85 b 168 240 291 125 168 150 b 314 331 168 301 251 331 b 482 207 360 331 482 308 b 406 85 482 150 454 112 z m 295 -325 b 111 -183 199 -325 111 -276 b 225 -48 111 -125 161 -72 b 436 -219 330 -94 436 -124 b 295 -325 436 -276 392 -325 z"},timeSig9:{x_min:20,x_max:414,y_min:-249,y_max:251,ha:500,o:"m 186 -117 b 71 -226 125 -117 71 -164 b 72 -242 71 -232 71 -236 b 276 -359 86 -334 199 -359 b 540 -206 386 -357 488 -304 b 596 -1 572 -145 596 -69 l 596 4 b 552 203 595 71 583 145 b 301 361 492 310 422 361 b 112 310 236 361 164 351 b 29 140 62 269 29 204 b 246 -69 29 27 135 -69 b 377 -19 292 -69 340 -52 b 386 -16 380 -16 383 -16 b 399 -50 395 -16 399 -27 b 279 -324 395 -317 310 -324 b 232 -302 251 -324 232 -317 b 268 -248 232 -282 259 -265 b 278 -206 275 -235 278 -220 b 256 -147 278 -184 271 -163 b 186 -117 246 -128 204 -117 z m 305 0 b 220 161 259 0 220 72 b 305 323 220 251 259 323 b 389 161 351 323 389 251 b 305 0 389 72 351 0 z"},timeSigCommon:{x_min:5,x_max:424,y_min:-249,y_max:251,ha:500,o:"m 336 361 b 7 -14 131 361 7 180 b 101 -262 7 -108 42 -190 b 321 -359 156 -328 235 -359 b 611 -88 573 -359 611 -130 b 589 -56 611 -56 595 -56 b 567 -82 577 -56 567 -58 b 363 -311 567 -268 409 -311 b 184 40 246 -311 184 -197 b 372 327 184 278 294 327 b 477 278 446 327 477 292 b 451 246 477 265 472 246 b 360 140 393 246 360 184 b 471 32 360 58 431 32 b 580 156 471 32 580 36 b 336 361 580 344 363 361 z"},timeSigCutCommon:{x_min:0,x_max:418,y_min:-359,y_max:361,ha:720,o:"m 573 -58 b 559 -82 567 -58 559 -60 b 354 -310 559 -266 400 -310 b 317 -305 340 -310 328 -308 b 302 -284 311 -304 302 -295 l 302 287 b 338 323 302 297 328 321 b 363 324 347 324 356 324 b 468 275 436 324 468 289 b 442 243 468 264 464 243 b 351 137 384 243 351 181 b 462 30 351 56 422 30 b 572 154 462 30 572 35 b 318 357 572 295 441 357 b 302 390 310 359 302 383 l 302 495 b 276 520 302 507 292 520 b 252 495 265 520 252 507 l 252 369 b 235 346 252 359 238 346 l 196 331 b 0 -14 66 275 0 122 b 225 -346 0 -150 86 -310 b 252 -382 235 -350 252 -369 l 252 -492 b 276 -517 252 -505 265 -517 b 302 -492 292 -517 302 -505 l 302 -379 b 318 -359 302 -370 308 -363 b 602 -85 563 -354 602 -130 b 579 -58 600 -58 586 -58 z m 252 -235 b 243 -252 252 -248 248 -252 b 236 -248 240 -252 238 -251 b 177 37 197 -193 177 -96 b 232 259 177 147 200 215 b 236 262 233 262 235 262 b 252 239 243 262 252 251 z"},timeSigPlus:{x_min:-1,x_max:499,y_min:-250,y_max:250,ha:500,o:"m 432 53 b 413 79 420 53 413 65 l 413 340 b 392 360 413 350 405 360 l 325 360 b 305 340 312 360 305 350 l 305 79 b 284 53 305 66 292 53 l 19 53 b -1 33 9 53 -1 46 l -1 -33 b 19 -55 -1 -46 9 -55 l 284 -55 b 305 -75 298 -55 305 -68 l 305 -340 b 325 -360 305 -350 312 -360 l 392 -360 b 413 -340 405 -360 413 -350 l 413 -78 b 433 -55 413 -63 423 -55 l 698 -55 b 719 -33 708 -55 719 -46 l 719 33 b 698 53 719 46 708 53 z"},timeSigPlusSmall:{x_min:-1,x_max:255,y_min:-133,y_max:123,ha:256,o:"m 220 20 b 210 33 215 20 210 26 l 210 166 b 200 177 210 171 206 177 l 166 177 b 156 166 160 177 156 171 l 156 33 b 145 20 156 27 150 20 l 10 20 b -1 10 4 20 -1 16 l -1 -24 b 10 -35 -1 -30 4 -35 l 145 -35 b 156 -46 153 -35 156 -42 l 156 -180 b 166 -192 156 -186 160 -192 l 200 -192 b 210 -180 206 -192 210 -186 l 210 -48 b 222 -35 210 -39 216 -35 l 356 -35 b 367 -24 361 -35 367 -30 l 367 10 b 356 20 367 16 361 20 z"},timeSigMinus:{x_min:0,x_max:448,y_min:-35,y_max:40,ha:75,o:"m 645 39 b 619 58 645 49 634 58 l 27 58 b 0 39 12 58 0 49 l 0 -32 b 27 -50 0 -42 12 -50 l 619 -50 b 645 -32 634 -50 645 -42 z"},timeSigParensRight:{x_min:0,x_max:184,y_min:-489,y_max:491,ha:980,o:"m 0 -696 b 3 -704 0 -698 1 -704 b 7 -703 4 -704 6 -704 b 265 1 187 -530 265 -282 b 12 701 265 289 187 531 b 4 707 12 701 6 707 b 0 696 1 707 0 703 l 0 665 b 4 644 0 665 0 651 b 167 1 112 503 167 315 b 6 -641 167 -311 109 -497 b 0 -658 3 -644 0 -651 z"},timeSigParensRightSmall:{x_min:0,x_max:110,y_min:-251,y_max:249,ha:500,o:"m 0 -356 b 3 -361 0 -357 1 -361 b 158 0 112 -272 158 -145 b 4 359 158 147 109 272 b 0 353 3 359 0 357 l 0 338 b 3 327 0 338 0 330 b 91 0 60 246 91 160 b 4 -328 91 -160 62 -249 b 0 -337 3 -330 0 -333 z"},timeSigParensLeft:{x_min:0,x_max:184,y_min:-489,y_max:491,ha:980,o:"m 265 -658 b 259 -641 265 -651 262 -644 b 98 1 156 -497 98 -311 b 261 644 98 315 153 503 b 265 665 265 651 265 665 l 265 696 b 261 707 265 703 264 707 b 253 701 259 707 253 701 b 0 1 78 531 0 289 b 258 -703 0 -282 78 -530 b 262 -704 259 -704 261 -704 b 265 -696 264 -704 265 -698 z"},timeSigParensLeftSmall:{x_min:0,x_max:110,y_min:-251,y_max:249,ha:500,o:"m 158 -337 b 154 -328 158 -333 156 -330 b 68 0 96 -249 68 -160 b 156 327 68 160 98 246 b 158 338 158 330 158 338 l 158 353 b 154 359 158 357 156 359 b 0 0 49 272 0 147 b 156 -361 0 -145 46 -272 b 158 -356 157 -361 158 -357 z"},noteheadDoubleWhole:{x_min:0,x_max:599,y_min:-155,y_max:155,ha:310,o:"m 13 223 b 0 212 4 223 0 217 l 0 -213 b 13 -223 0 -219 4 -223 l 32 -223 b 45 -213 39 -223 45 -219 l 45 212 b 32 223 45 217 39 223 z m 96 223 b 82 212 88 223 82 217 l 82 -213 b 96 -223 82 -219 88 -223 l 114 -223 b 128 -213 121 -223 128 -219 l 128 212 b 114 223 128 217 121 223 z m 747 223 b 733 212 740 223 733 217 l 733 -213 b 747 -223 733 -219 740 -223 l 766 -223 b 780 -213 773 -223 780 -219 l 780 212 b 766 223 780 217 773 223 z m 829 223 b 815 212 824 223 815 217 l 815 -213 b 829 -223 815 -219 824 -223 l 848 -223 b 863 -213 857 -223 863 -219 l 863 212 b 848 223 863 217 857 223 z m 438 180 b 130 1 248 180 130 101 b 423 -180 130 -92 210 -180 b 733 1 657 -180 733 -98 b 438 180 733 104 572 180 z m 469 -145 b 331 -71 409 -145 369 -112 b 284 58 305 -37 284 12 b 400 147 284 131 333 147 b 577 -45 498 147 577 42 b 469 -145 577 -115 533 -145 z"},noteheadWhole:{x_min:0,x_max:422,y_min:-125,y_max:125,ha:250,o:"m 311 180 b 0 3 120 180 0 101 b 297 -180 0 -94 82 -180 b 608 3 533 -180 608 -98 b 311 180 608 105 445 180 z m 160 91 b 274 148 176 141 229 148 b 452 -45 373 148 452 42 b 386 -141 452 -89 433 -130 b 341 -147 372 -145 356 -147 b 206 -72 289 -147 236 -112 b 156 56 177 -39 156 10 b 160 91 156 68 157 79 z"},noteheadHalf:{x_min:0,x_max:295,y_min:-125,y_max:125,ha:250,o:"m 140 -180 b 425 60 377 -180 425 13 b 282 180 425 134 366 180 b 0 -60 68 180 0 14 b 140 -180 0 -137 60 -180 z m 108 -125 b 50 -92 78 -125 60 -109 b 42 -63 46 -84 42 -73 b 318 121 42 7 251 121 b 372 91 346 121 361 108 b 380 63 376 82 380 73 b 108 -125 380 1 177 -125 z"},noteheadBlack:{x_min:0,x_max:295,y_min:-125,y_max:125,ha:250,o:"m 140 -180 b 425 60 268 -180 425 -62 b 285 180 425 134 367 180 b 0 -60 127 180 0 63 b 140 -180 0 -135 62 -180 z"},noteheadXDoubleWhole:{x_min:0,x_max:546,y_min:-155,y_max:155,ha:310,o:"m 43 213 b 30 223 43 217 39 223 l 13 223 b 0 213 6 223 0 217 l 0 -215 b 13 -223 0 -219 6 -223 l 30 -223 b 43 -215 39 -223 43 -219 z m 704 213 b 693 223 704 217 698 223 l 672 223 b 660 213 667 223 660 217 l 660 163 b 634 180 655 173 645 180 l 505 180 b 484 173 498 180 490 177 l 393 95 l 300 173 b 279 180 294 177 287 180 l 151 180 b 125 163 141 180 130 173 l 125 213 b 112 223 125 217 118 223 l 94 223 b 82 213 86 223 82 217 l 82 -215 b 94 -223 82 -219 86 -223 l 112 -223 b 125 -215 118 -223 125 -219 l 125 -163 b 151 -180 130 -173 140 -180 l 279 -180 b 300 -171 287 -180 294 -177 l 393 -95 l 485 -171 b 505 -180 491 -177 498 -180 l 632 -180 b 660 -163 645 -180 655 -173 l 660 -215 b 672 -223 660 -219 667 -223 l 693 -223 b 704 -215 698 -223 704 -219 z m 786 213 b 772 223 786 217 780 223 l 755 223 b 740 213 747 223 740 217 l 740 -215 b 755 -223 740 -219 747 -223 l 772 -223 b 786 -215 780 -223 786 -219 z m 507 -141 l 393 -45 l 276 -141 l 207 -141 l 364 0 l 207 141 l 276 141 l 393 45 l 507 141 l 577 141 l 420 0 l 577 -141 z m 660 -132 l 518 0 l 660 132 z m 125 131 l 266 0 l 125 -131 z"},noteheadXWhole:{x_min:0,x_max:377,y_min:-125,y_max:125,ha:250,o:"m 272 -95 l 364 -171 b 384 -180 370 -177 377 -180 l 511 -180 b 543 -148 528 -180 543 -164 b 531 -124 543 -140 539 -131 l 412 0 l 531 124 b 541 148 539 131 541 140 b 513 180 541 164 528 180 l 384 180 b 364 171 377 180 370 177 l 272 94 l 179 171 b 158 180 173 177 166 180 l 30 180 b 0 148 16 180 0 164 b 12 124 0 140 4 131 l 132 0 l 12 -124 b 1 -148 4 -131 1 -140 b 32 -180 1 -164 14 -180 l 158 -180 b 179 -171 166 -180 173 -177 z m 386 -141 l 272 -45 l 157 -141 l 88 -141 l 245 0 l 88 141 l 157 141 l 272 45 l 386 141 l 456 141 l 300 0 l 456 -141 z"},noteheadXHalf:{x_min:0,x_max:334,y_min:-125,y_max:125,ha:250,o:"m 295 180 b 271 170 287 180 278 177 l 209 98 l 115 171 b 95 180 109 177 104 180 l 36 180 b 4 148 19 180 4 164 b 14 124 4 140 7 132 l 140 22 l 7 -127 b 0 -148 3 -131 0 -138 b 32 -180 0 -166 14 -180 l 184 -180 b 209 -170 193 -180 203 -177 l 271 -99 l 363 -171 b 384 -180 370 -176 377 -180 l 445 -180 b 478 -147 461 -180 478 -163 b 465 -125 478 -138 474 -131 l 341 -22 l 474 127 b 481 148 480 131 481 138 b 448 180 481 166 468 180 z m 36 148 l 95 148 l 233 33 l 334 148 l 410 148 l 274 -6 l 445 -148 l 384 -148 l 248 -35 l 147 -148 l 71 -148 l 206 4 z"},noteheadXBlack:{x_min:0,x_max:290,y_min:-125,y_max:125,ha:250,o:"m 410 -143 l 239 0 l 410 144 b 418 160 415 147 418 154 b 399 180 418 171 408 180 b 389 177 396 180 392 179 l 207 26 l 29 177 b 17 180 26 179 22 180 b 0 161 7 180 0 170 b 7 144 0 156 3 148 l 179 0 l 7 -143 b 0 -158 1 -147 0 -153 b 19 -180 0 -170 7 -180 b 29 -176 23 -180 26 -179 l 207 -24 l 389 -176 b 399 -180 392 -179 396 -180 b 418 -160 410 -180 418 -168 b 410 -143 418 -153 415 -147 z"},noteheadCircleXDoubleWhole:{x_min:0,x_max:422,y_min:-155,y_max:155,ha:310,o:"m 576 223 b 563 213 570 223 563 219 l 563 -215 b 576 -223 563 -219 570 -223 l 595 -223 b 608 -215 602 -223 608 -219 l 608 213 b 595 223 608 219 602 223 z m 497 223 b 484 213 491 223 484 219 l 484 -215 b 497 -223 484 -219 491 -223 l 516 -223 b 528 -215 523 -223 528 -219 l 528 213 b 516 223 528 219 523 223 z m 94 223 b 81 213 86 223 81 219 l 81 -215 b 94 -223 81 -219 86 -223 l 111 -223 b 124 -215 118 -223 124 -219 l 124 213 b 111 223 124 219 118 223 z m 13 223 b 0 213 6 223 0 219 l 0 -215 b 13 -223 0 -219 6 -223 l 30 -223 b 45 -215 37 -223 45 -219 l 45 213 b 30 223 45 219 37 223 z m 304 180 b 127 0 206 180 127 101 b 304 -180 127 -99 206 -180 b 482 0 405 -180 482 -99 b 304 180 482 101 405 180 z m 305 32 l 225 112 b 304 140 248 130 275 140 b 387 112 336 140 364 130 z m 278 1 l 193 -82 b 216 0 199 -59 216 -30 b 194 85 216 33 203 50 z m 334 1 l 418 84 b 389 0 402 50 389 23 b 418 -81 389 -30 409 -60 z m 305 -27 l 389 -109 b 304 -138 364 -128 336 -138 b 222 -109 274 -138 246 -128 z"},noteheadCircleXWhole:{x_min:0,x_max:249,y_min:-125,y_max:125,ha:250,o:"m 179 180 b 0 0 81 180 0 101 b 179 -180 0 -99 81 -180 b 359 0 278 -180 359 -99 b 179 180 359 101 278 180 z m 180 32 l 99 112 b 179 140 121 130 150 140 b 262 112 210 140 238 130 z m 151 1 l 68 -82 b 86 0 73 -59 86 -30 b 68 85 86 33 78 50 z m 209 1 l 291 84 b 269 0 276 50 269 32 b 291 -79 269 -26 282 -58 z m 180 -27 l 264 -111 b 179 -138 239 -128 210 -138 b 96 -111 148 -138 120 -128 z"},noteheadCircleXHalf:{x_min:0,x_max:250,y_min:-125,y_max:125,ha:250,o:"m 179 180 b 0 0 81 180 0 101 b 179 -180 0 -99 81 -180 b 360 0 278 -180 360 -99 b 179 180 360 101 278 180 z m 186 37 l 131 92 b 220 124 153 109 189 124 b 262 112 236 124 249 121 z m 215 7 l 291 84 b 304 42 300 71 304 58 b 271 -49 304 10 288 -26 z m 145 -6 l 68 -82 b 56 -42 59 -71 56 -58 b 89 52 56 -9 72 27 z m 174 -33 l 230 -89 b 140 -124 206 -108 171 -124 b 96 -111 122 -124 109 -121 z"},noteheadCircleX:{x_min:0,x_max:249,y_min:-125,y_max:125,ha:250,o:"m 179 180 b 0 0 81 180 0 99 b 179 -180 0 -99 81 -180 b 359 0 278 -180 359 -99 b 179 180 359 99 278 180 z m 261 112 l 180 30 l 98 112 b 179 138 121 128 148 138 b 261 112 210 138 238 128 z m 317 0 b 292 -82 317 -30 308 -59 l 209 1 l 291 84 b 317 0 307 60 317 30 z m 40 0 b 69 84 40 32 50 60 l 151 1 l 68 -84 b 40 0 49 -60 40 -30 z m 95 -111 l 180 -27 l 262 -111 b 179 -138 239 -128 210 -138 b 95 -111 148 -138 120 -128 z"},noteheadCircledDoubleWhole:{x_min:0,x_max:603,y_min:-218,y_max:213,ha:431,o:"m 770 223 l 752 223 b 737 213 744 223 737 219 l 737 59 b 435 307 710 203 582 307 b 128 48 281 307 156 197 l 128 213 b 115 223 128 219 122 223 l 96 223 b 84 213 89 223 84 219 l 84 -215 b 96 -223 84 -220 89 -223 l 115 -223 b 128 -215 122 -223 128 -220 l 128 -56 b 435 -314 156 -206 282 -314 b 654 -223 517 -314 595 -282 b 737 -66 697 -180 726 -125 l 737 -215 b 752 -223 737 -220 744 -223 l 770 -223 b 785 -215 778 -223 785 -220 l 785 213 b 770 223 785 219 778 223 z m 435 274 b 698 85 556 274 661 194 b 439 180 641 143 534 180 b 176 99 320 180 228 148 b 435 274 217 203 318 274 z m 32 223 l 13 223 b 0 213 6 223 0 219 l 0 -215 b 13 -223 0 -220 6 -223 l 32 -223 b 45 -215 40 -223 45 -220 l 45 213 b 32 223 45 219 40 223 z m 852 223 l 835 223 b 819 213 828 223 819 219 l 819 -215 b 835 -223 819 -220 828 -223 l 852 -223 b 868 -215 861 -223 868 -220 l 868 213 b 852 223 868 219 861 223 z m 580 -46 b 514 -143 580 -91 562 -131 b 472 -148 501 -147 487 -148 b 364 -105 433 -148 395 -131 l 334 -73 b 285 58 307 -39 285 10 b 289 91 285 69 287 79 b 403 145 305 140 357 145 b 580 -46 501 145 580 42 z m 435 -282 b 176 -108 318 -282 217 -209 b 425 -180 222 -151 301 -180 b 691 -109 563 -180 647 -153 b 435 -282 651 -210 550 -282 z"},noteheadCircledWhole:{x_min:0,x_max:437,y_min:-225,y_max:211,ha:436,o:"m 314 304 b 0 -10 140 304 0 164 b 314 -324 0 -183 141 -324 b 629 -10 487 -324 629 -183 b 314 304 629 164 488 304 z m 314 275 b 588 73 441 275 549 193 b 321 180 536 137 420 180 b 48 88 190 180 95 143 b 314 275 85 199 199 275 z m 393 -141 b 350 -147 379 -145 364 -147 b 314 -141 337 -147 325 -145 b 167 55 235 -120 167 -26 b 173 91 167 66 168 79 b 284 145 187 138 239 145 b 459 -48 382 145 459 39 b 393 -141 459 -91 438 -131 z m 314 -294 b 40 -86 187 -294 75 -207 b 305 -180 81 -141 164 -180 b 588 -86 464 -180 550 -143 b 314 -294 554 -209 442 -294 z"},noteheadCircledHalf:{x_min:-18,x_max:311,y_min:-162,y_max:167,ha:329,o:"m 212 240 b -26 3 81 240 -26 134 b 212 -233 -26 -127 81 -233 b 448 3 341 -233 448 -127 b 212 240 448 134 341 240 z m 212 220 b 363 160 271 220 324 197 b 281 180 341 173 312 180 b 0 -52 76 180 6 26 b -6 3 -4 -35 -6 -16 b 212 220 -6 122 92 220 z m 50 -92 b 42 -63 46 -84 42 -73 b 173 63 42 -33 73 7 b 317 120 243 105 288 120 b 369 89 344 120 359 107 b 377 62 374 81 377 72 b 248 -66 377 33 348 -1 b 108 -125 183 -109 138 -125 b 50 -92 78 -125 60 -109 z m 212 -215 b 84 -171 164 -215 120 -199 b 138 -180 101 -179 120 -180 b 422 56 372 -180 420 7 b 429 3 426 40 429 22 b 212 -215 429 -117 333 -215 z"},noteheadCircledBlack:{x_min:-21,x_max:321,y_min:-171,y_max:167,ha:338,o:"m 216 240 b -30 -3 82 240 -30 131 b 216 -246 -30 -137 82 -246 b 462 -3 351 -246 462 -137 b 216 240 462 131 351 240 z m 216 220 b 372 160 276 220 331 197 b 284 180 348 174 317 180 b 0 -59 127 180 0 65 l 0 -66 b -10 -3 -6 -45 -10 -24 b 216 220 -10 120 92 220 z m 216 -226 b 56 -158 153 -226 96 -200 b 140 -180 79 -171 107 -180 b 425 60 268 -180 425 -60 b 422 88 425 71 425 79 b 442 -3 435 60 442 29 b 216 -226 442 -125 341 -226 z"},noteheadDoubleWholeSquare:{x_min:0,x_max:416,y_min:-190,y_max:198,ha:388,o:"m 563 217 b 528 180 563 192 544 180 l 62 180 b 36 215 52 180 36 192 l 36 268 b 17 285 36 278 27 285 b 0 268 7 285 0 278 l 0 -255 b 17 -274 0 -264 7 -274 b 36 -255 27 -274 36 -264 l 36 -213 b 66 -180 36 -197 53 -180 l 528 -180 b 563 -209 549 -180 563 -196 l 563 -255 b 580 -274 563 -264 570 -274 b 599 -255 590 -274 599 -264 l 599 268 b 580 285 599 278 590 285 b 563 268 570 285 563 278 z m 36 23 b 111 71 36 55 58 71 l 487 71 b 563 30 533 71 563 53 l 563 -22 b 487 -68 563 -53 533 -68 l 117 -68 b 36 -22 66 -68 36 -49 z"},noteheadSquareWhite:{x_min:0,x_max:313,y_min:-125,y_max:125,ha:250,o:"m 451 -180 l 451 180 l 0 180 l 0 -180 z m 40 -138 l 40 140 l 410 140 l 410 -138 z"},noteheadSquareBlack:{x_min:0,x_max:313,y_min:-125,y_max:125,ha:250,o:"m 451 -180 l 451 180 l 0 180 l 0 -180 z"},noteheadTriangleDownDoubleWhole:{x_min:0,x_max:483,y_min:-155,y_max:155,ha:310,o:"m 696 213 b 681 223 696 219 690 223 l 662 223 b 648 213 655 223 648 219 l 648 -213 b 662 -223 648 -217 655 -223 l 681 -223 b 696 -213 690 -223 696 -217 z m 619 213 b 605 223 619 219 613 223 l 588 223 b 573 213 580 223 573 219 l 573 174 b 562 180 570 177 566 180 l 134 180 b 122 174 130 180 125 177 l 122 213 b 108 223 122 219 117 223 l 91 223 b 76 213 84 223 76 219 l 76 -213 b 91 -223 76 -217 84 -223 l 108 -223 b 122 -213 117 -223 122 -217 l 122 154 l 334 -173 b 346 -180 337 -177 341 -180 b 357 -173 351 -180 354 -177 l 573 154 l 573 -213 b 588 -223 573 -217 580 -223 l 605 -223 b 619 -213 613 -223 619 -217 z m 32 -223 b 46 -213 40 -223 46 -217 l 46 213 b 32 223 46 219 40 223 l 14 223 b 0 213 7 223 0 219 l 0 -213 b 14 -223 0 -217 7 -223 z m 428 98 b 346 -107 428 17 377 -53 b 265 96 315 -55 265 17 b 289 137 265 109 275 137 l 406 137 b 428 98 419 137 428 111 z"},noteheadTriangleDownWhole:{x_min:0,x_max:319,y_min:-125,y_max:125,ha:250,o:"m 14 180 b 0 166 6 180 0 173 b 1 158 0 163 1 160 l 216 -173 b 228 -180 219 -177 225 -180 b 239 -173 233 -180 238 -177 l 458 158 b 459 166 458 160 459 163 b 445 180 459 173 454 180 z m 288 137 b 310 98 301 137 310 111 b 228 -108 310 17 259 -55 b 145 96 197 -56 145 17 b 170 137 145 109 157 137 z"},noteheadTriangleDownHalf:{x_min:0,x_max:285,y_min:-125,y_max:125,ha:250,o:"m 196 -180 b 209 -173 200 -180 206 -177 l 408 157 b 410 166 409 160 410 163 b 396 180 410 173 403 180 l 14 180 b 0 166 4 180 0 173 b 1 158 0 163 0 161 l 183 -173 b 196 -180 184 -174 190 -180 z m 164 138 l 295 138 l 179 -76 l 114 37 z"},noteheadTriangleDownBlack:{x_min:0,x_max:292,y_min:-125,y_max:125,ha:250,o:"m 207 -180 l 420 180 l 0 180 z"},noteheadTriangleUpDoubleWhole:{x_min:0,x_max:483,y_min:-155,y_max:155,ha:310,o:"m 696 213 b 681 223 696 217 690 223 l 662 223 b 648 213 655 223 648 217 l 648 -213 b 662 -223 648 -219 655 -223 l 681 -223 b 696 -213 690 -223 696 -219 z m 619 213 b 605 223 619 217 613 223 l 588 223 b 573 213 580 223 573 217 l 573 -154 l 357 173 b 346 180 354 177 351 180 b 334 173 341 180 337 177 l 122 -154 l 122 213 b 108 223 122 217 117 223 l 91 223 b 76 213 84 223 76 217 l 76 -213 b 91 -223 76 -219 84 -223 l 108 -223 b 122 -213 117 -223 122 -219 l 122 -174 b 134 -180 125 -177 130 -180 l 562 -180 b 573 -174 566 -180 570 -177 l 573 -213 b 588 -223 573 -219 580 -223 l 605 -223 b 619 -213 613 -223 619 -219 z m 32 223 l 14 223 b 0 213 7 223 0 217 l 0 -213 b 14 -223 0 -219 7 -223 l 32 -223 b 46 -213 40 -223 46 -219 l 46 213 b 32 223 46 217 40 223 z m 428 -98 b 406 -137 428 -111 419 -137 l 289 -137 b 265 -96 275 -137 265 -109 b 346 107 265 -17 315 55 b 428 -98 377 53 428 -17 z"},noteheadTriangleUpWhole:{x_min:0,x_max:319,y_min:-125,y_max:125,ha:250,o:"m 445 -180 b 459 -166 454 -180 459 -173 b 458 -158 459 -163 458 -160 l 239 173 b 228 180 238 177 233 180 b 216 173 225 180 219 177 l 1 -158 b 0 -166 1 -160 0 -163 b 14 -180 0 -173 6 -180 z m 170 -137 b 145 -96 157 -137 145 -109 b 228 108 145 -17 197 56 b 310 -98 259 55 310 -17 b 288 -137 310 -111 301 -137 z"},noteheadTriangleUpHalf:{x_min:0,x_max:285,y_min:-125,y_max:125,ha:250,o:"m 215 180 b 202 173 210 180 204 177 l 3 -157 b 0 -166 1 -160 0 -163 b 14 -180 0 -173 7 -180 l 396 -180 b 410 -166 406 -180 410 -173 b 409 -158 410 -163 410 -161 l 228 173 b 215 180 226 174 220 180 z m 246 -138 l 115 -138 l 232 76 l 297 -37 z"},noteheadTriangleUpBlack:{x_min:0,x_max:293,y_min:-125,y_max:125,ha:250,o:"m 422 -180 l 207 180 l 0 -180 z"},noteheadSlashedDoubleWhole1:{x_min:0,x_max:596,y_min:-179,y_max:168,ha:347,o:"m 618 135 l 697 206 b 704 222 703 210 704 216 b 698 236 704 226 703 232 b 683 242 694 239 688 242 b 670 238 677 242 674 240 l 575 153 b 435 180 531 168 481 180 b 128 0 246 180 128 98 b 236 -148 128 -58 160 -114 l 153 -222 b 145 -238 148 -226 145 -232 b 151 -252 145 -242 148 -248 b 167 -258 156 -256 161 -258 b 181 -253 171 -258 177 -256 l 282 -164 b 420 -180 320 -173 366 -180 b 729 0 654 -180 729 -98 b 618 135 729 55 681 104 z m 114 223 l 95 223 b 82 212 88 223 82 217 l 82 -215 b 95 -223 82 -219 88 -223 l 114 -223 b 127 -215 121 -223 127 -219 l 127 212 b 114 223 127 217 121 223 z m 32 223 l 13 223 b 0 212 6 223 0 217 l 0 -215 b 13 -223 0 -219 6 -223 l 32 -223 b 45 -215 39 -223 45 -219 l 45 212 b 32 223 45 217 39 223 z m 844 223 l 825 223 b 811 212 819 223 811 217 l 811 -215 b 825 -223 811 -219 819 -223 l 844 -223 b 858 -215 851 -223 858 -219 l 858 212 b 844 223 858 217 851 223 z m 763 223 l 743 223 b 730 212 736 223 730 217 l 730 -215 b 743 -223 730 -219 736 -223 l 763 -223 b 776 -215 769 -223 776 -219 l 776 212 b 763 223 776 217 769 223 z m 282 56 b 285 89 282 68 284 79 b 399 144 301 137 354 144 b 510 95 441 144 480 124 l 327 -68 b 282 56 301 -35 282 13 z m 572 -72 b 508 -141 564 -108 544 -132 b 467 -147 495 -145 481 -147 b 360 -104 428 -147 389 -128 l 356 -98 l 537 63 b 575 -46 560 30 575 -9 b 572 -72 575 -55 573 -65 z"},noteheadSlashedWhole1:{x_min:-22,x_max:433,y_min:-157,y_max:148,ha:305,o:"m 484 140 b 308 180 431 166 367 180 b 0 1 118 180 0 99 b 73 -128 0 -48 22 -95 l -22 -190 b -32 -206 -27 -194 -32 -200 b -27 -217 -32 -210 -30 -215 b -12 -226 -23 -223 -17 -226 b 0 -223 -7 -226 -4 -225 l 112 -150 b 294 -180 157 -168 217 -180 b 602 1 526 -180 602 -98 b 523 118 602 48 570 86 l 613 177 b 624 193 619 181 624 187 b 619 204 624 197 622 200 b 603 213 615 209 609 213 b 592 209 599 213 596 212 z m 190 -52 b 154 56 170 -20 154 19 b 160 91 154 68 156 79 b 271 147 174 138 226 147 b 396 82 321 147 364 121 z m 419 50 b 446 -48 436 19 446 -14 b 337 -147 446 -120 402 -147 b 301 -141 327 -147 314 -144 b 235 -104 276 -134 253 -120 b 215 -84 226 -98 220 -91 z"},noteheadSlashedHalf1:{x_min:-67,x_max:386,y_min:-142,y_max:160,ha:302,o:"m 552 222 b 536 230 549 228 543 230 b 524 228 533 230 528 230 l 389 140 b 281 180 364 164 327 180 b 0 -60 65 180 0 13 b 7 -105 0 -78 3 -92 l -88 -167 b -96 -184 -94 -171 -96 -177 b -94 -194 -96 -187 -95 -192 b -76 -204 -89 -202 -84 -204 b -66 -202 -73 -204 -69 -203 l 29 -140 b 137 -180 55 -167 92 -180 b 420 59 374 -180 420 13 b 412 107 420 76 419 92 l 546 194 b 556 210 552 197 556 204 b 552 222 556 213 554 217 z m 315 120 b 347 112 328 120 338 117 l 46 -82 b 42 -63 43 -76 42 -69 b 315 120 42 6 248 120 z m 108 -124 b 69 -114 91 -124 79 -120 l 372 81 b 376 63 374 75 376 69 b 108 -124 376 0 174 -124 z"},noteheadSlashedBlack1:{x_min:-80,x_max:375,y_min:-165,y_max:167,ha:332,o:"m 518 240 b 507 236 514 240 510 239 l 384 148 b 284 180 359 168 324 180 b 0 -62 127 180 0 63 b 13 -115 0 -82 4 -99 l -107 -202 b -115 -217 -111 -204 -115 -212 b -111 -229 -115 -222 -114 -225 b -95 -238 -108 -235 -101 -238 b -84 -235 -91 -238 -86 -236 l 39 -148 b 140 -180 63 -170 99 -180 b 425 59 268 -180 425 -62 b 410 117 425 81 420 101 l 530 203 b 540 219 536 207 540 213 b 518 240 540 229 528 240 z"},noteheadSlashedDoubleWhole2:{x_min:0,x_max:596,y_min:-178,y_max:169,ha:347,o:"m 729 0 b 435 180 729 102 569 180 b 278 156 374 180 321 170 l 184 239 b 170 243 181 242 176 243 b 154 238 166 243 158 240 b 150 223 151 233 150 228 b 156 207 150 217 153 212 l 233 138 b 128 0 167 107 128 56 b 420 -180 128 -94 210 -180 b 575 -164 482 -180 533 -174 l 672 -252 b 687 -256 677 -255 681 -256 b 703 -251 691 -256 698 -255 b 707 -236 706 -246 707 -240 b 701 -220 707 -230 706 -225 l 619 -150 b 729 0 700 -117 729 -62 z m 114 223 l 95 223 b 82 213 88 223 82 217 l 82 -213 b 95 -223 82 -219 88 -223 l 114 -223 b 127 -213 121 -223 127 -219 l 127 213 b 114 223 127 217 121 223 z m 32 223 l 13 223 b 0 213 6 223 0 217 l 0 -213 b 13 -223 0 -219 6 -223 l 32 -223 b 45 -213 39 -223 45 -219 l 45 213 b 32 223 45 217 39 223 z m 844 223 l 825 223 b 811 213 819 223 811 217 l 811 -213 b 825 -223 811 -219 819 -223 l 844 -223 b 858 -213 851 -223 858 -219 l 858 213 b 844 223 858 217 851 223 z m 763 223 l 743 223 b 730 213 736 223 730 217 l 730 -213 b 743 -223 730 -219 736 -223 l 763 -223 b 776 -213 769 -223 776 -219 l 776 213 b 763 223 776 217 769 223 z m 312 124 b 399 144 336 141 369 144 b 575 -46 495 144 575 40 b 563 -98 575 -65 570 -81 z m 508 -141 b 467 -147 495 -145 481 -147 b 360 -104 428 -147 389 -128 b 330 -72 350 -95 340 -82 b 282 56 304 -37 282 10 b 285 89 282 68 284 79 b 536 -130 287 89 304 75 z"},noteheadSlashedWhole2:{x_min:-18,x_max:436,y_min:-154,y_max:151,ha:305,o:"m 531 -128 b 602 1 582 -96 602 -49 b 308 180 602 104 441 180 b 114 144 230 180 164 166 l 4 215 b -6 217 1 217 -3 217 b -22 209 -13 217 -19 215 b -26 197 -24 204 -26 200 b -16 181 -26 192 -22 184 l 75 121 b 0 1 27 91 0 49 b 294 -180 0 -94 82 -180 b 491 -150 379 -180 444 -168 l 598 -219 b 608 -222 600 -222 605 -222 b 624 -213 615 -222 621 -219 b 628 -202 626 -209 628 -206 b 618 -186 628 -196 624 -189 z m 168 108 b 271 147 190 141 233 147 b 446 -48 369 147 446 40 b 445 -72 446 -56 446 -63 z m 154 69 l 429 -109 b 382 -141 419 -125 402 -135 b 337 -147 367 -144 351 -147 b 301 -141 327 -147 314 -144 b 235 -104 276 -134 253 -120 b 203 -72 223 -94 213 -82 b 154 58 177 -39 154 12 z"},noteheadSlashedHalf2:{x_min:-73,x_max:380,y_min:-134,y_max:168,ha:302,o:"m 537 -156 l 383 -58 b 422 60 413 -9 422 39 b 281 180 422 134 364 180 b 101 127 203 180 144 157 l -75 239 b -85 242 -78 242 -82 242 b -102 233 -92 242 -98 239 b -105 222 -104 229 -105 225 b -95 206 -105 216 -102 209 l 69 99 b 0 -59 19 46 0 -20 b 138 -180 0 -135 60 -180 b 359 -88 248 -180 317 -138 l 516 -190 b 527 -193 520 -192 524 -193 b 543 -183 534 -193 540 -190 b 547 -173 546 -180 547 -176 b 537 -156 547 -166 543 -160 z m 367 92 b 377 63 374 82 377 73 b 318 -14 377 43 361 20 l 184 72 b 317 121 248 108 289 121 b 367 92 344 121 357 109 z m 248 -66 b 108 -124 181 -108 138 -124 b 50 -92 78 -124 60 -109 b 42 -63 46 -84 42 -73 b 145 49 42 -35 68 0 l 285 -40 b 248 -66 274 -49 261 -56 z"},noteheadSlashedBlack2:{x_min:-79,x_max:376,y_min:-164,y_max:168,ha:332,o:"m 531 -200 l 363 -78 b 425 59 402 -37 425 10 b 285 180 425 132 367 180 b 92 114 210 180 144 154 l -81 238 b -94 242 -85 240 -89 242 b -111 232 -99 242 -107 238 b -114 220 -112 229 -114 225 b -105 204 -114 215 -111 207 l 62 85 b 0 -62 23 43 0 -9 b 140 -180 0 -137 62 -180 b 331 -108 204 -180 275 -153 l 507 -233 b 520 -236 511 -236 517 -236 b 537 -228 527 -236 533 -233 b 541 -216 540 -225 541 -220 b 531 -200 541 -210 537 -203 z"},noteheadDiamondDoubleWhole:{x_min:0,x_max:432,y_min:-155,y_max:155,ha:310,o:"m 592 223 b 580 215 585 223 580 219 l 580 -215 b 592 -223 580 -219 585 -223 l 608 -223 b 622 -215 615 -223 622 -219 l 622 215 b 608 223 622 219 615 223 z m 517 223 b 504 215 510 223 504 219 l 504 -215 b 517 -223 504 -219 510 -223 l 533 -223 b 544 -215 540 -223 544 -219 l 544 215 b 533 223 544 219 540 223 z m 246 179 b 240 180 243 179 242 180 b 232 176 236 180 233 179 l 118 22 b 117 17 117 20 117 19 l 117 215 b 104 223 117 219 111 223 l 88 223 b 75 215 81 223 75 219 l 75 -215 b 88 -223 75 -219 81 -223 l 104 -223 b 117 -215 111 -223 117 -219 l 117 14 l 118 14 b 122 7 118 12 120 10 l 374 -179 b 382 -180 376 -180 379 -180 b 390 -177 384 -180 387 -180 l 503 -23 l 503 -17 b 500 -9 503 -13 503 -10 z m 12 223 b 0 215 4 223 0 219 l 0 -215 b 12 -223 0 -219 4 -223 l 29 -223 b 40 -215 36 -223 40 -219 l 40 215 b 29 223 40 219 36 223 z m 183 39 b 179 46 181 39 179 43 b 229 112 226 112 228 112 b 236 109 229 112 233 111 l 436 -39 b 439 -46 438 -39 439 -42 b 390 -112 393 -111 392 -112 b 383 -109 389 -112 386 -111 z"},noteheadDiamondWhole:{x_min:0,x_max:270,y_min:-125,y_max:125,ha:250,o:"m 386 -23 b 389 -16 387 -20 389 -19 b 383 -7 389 -13 386 -9 l 130 179 b 122 180 128 180 125 180 b 115 177 120 180 117 180 l 3 23 b 0 17 1 20 0 19 b 4 7 0 16 3 10 l 258 -179 b 264 -180 261 -179 262 -180 b 272 -176 268 -180 271 -179 z m 66 40 b 62 48 65 42 62 45 l 109 111 b 112 112 109 112 111 112 b 118 111 115 112 117 111 l 320 -37 b 324 -46 323 -39 324 -42 b 275 -111 278 -111 276 -111 b 268 -108 272 -111 271 -109 z"},noteheadDiamondHalf:{x_min:0,x_max:251,y_min:-125,y_max:125,ha:250,o:"m 359 -7 b 361 0 360 -6 361 -3 b 359 7 361 3 360 4 l 189 177 b 180 180 186 179 183 180 b 174 177 179 180 176 179 l 4 7 b 0 0 1 4 0 3 b 4 -7 0 -3 1 -6 l 174 -177 b 180 -180 176 -180 179 -180 b 189 -177 183 -180 186 -180 z m 266 26 b 138 -71 266 -12 176 -71 b 96 -50 121 -71 108 -63 b 88 -24 89 -43 88 -32 b 215 73 88 13 177 73 b 266 26 238 73 266 50 z"},noteheadDiamondBlack:{x_min:0,x_max:250,y_min:-125,y_max:125,ha:250,o:"m 357 -6 b 360 1 359 -4 360 -1 b 357 9 360 4 359 7 l 189 177 b 180 180 187 179 184 180 b 171 177 177 180 173 179 l 3 9 b 0 1 0 6 0 4 b 4 -7 0 -1 1 -4 l 173 -177 b 180 -180 176 -180 177 -180 b 187 -177 181 -180 184 -180 z"},noteheadParenthesis:{x_min:-73,x_max:368,y_min:-180,y_max:182,ha:362,o:"m 52 -249 b -30 -144 3 -212 -14 -190 b -52 4 -45 -102 -52 -56 b 52 252 -52 118 -36 179 l 46 262 b -105 3 -49 197 -105 124 b 45 -259 -105 -109 -48 -200 z m 382 -259 b 530 3 474 -202 530 -108 b 379 262 530 122 474 200 l 373 252 b 478 4 462 180 478 118 b 456 -144 478 -56 471 -102 b 373 -249 439 -190 422 -212 z"},noteheadParenthesisRight:{x_min:-36,x_max:73,y_min:-181,y_max:181,ha:362,o:"m -43 -261 b 105 1 49 -203 105 -109 b -46 261 105 121 49 199 l -52 251 b 53 3 37 179 53 117 b 32 -145 53 -58 46 -104 b -52 -251 14 -192 -3 -213 z"},noteheadParenthesisLeft:{x_min:0,x_max:109,y_min:-181,y_max:181,ha:362,o:"m 157 -251 b 75 -145 108 -213 91 -192 b 53 3 60 -104 53 -58 b 157 251 53 117 69 177 l 151 261 b 0 1 56 196 0 122 b 150 -261 0 -111 58 -202 z"},noteheadMoonBlack:{x_min:0,x_max:315,y_min:-125,y_max:125,ha:250,o:"m 228 -180 b 454 0 343 -180 454 -130 l 454 180 l 0 180 l 0 0 b 228 -180 0 -131 112 -180 z"},noteheadTriangleLeftBlack:{x_min:0,x_max:339,y_min:-125,y_max:125,ha:250,o:"m 488 -180 l 0 180 l 0 -180 z"},noteheadTriangleRightBlack:{x_min:0,x_max:339,y_min:-125,y_max:125,ha:250,o:"m 488 180 l 0 -180 l 488 -180 z"},noteheadTriangleRoundDownBlack:{x_min:0,x_max:278,y_min:-125,y_max:125,ha:250,o:"m 200 -180 l 400 112 l 383 124 b 199 180 327 161 264 180 b 16 124 135 180 73 161 l 0 112 z"},augmentationDot:{x_min:0,x_max:100,y_min:-50,y_max:50,ha:100,o:"m 144 0 b 72 72 144 40 112 72 b 0 0 32 72 0 40 b 72 -72 0 -40 32 -72 b 144 0 112 -72 144 -40 z"},tremolo1:{x_min:-150,x_max:150,y_min:-93,y_max:94,ha:187,o:"m 216 -45 l 216 135 l -216 46 l -216 -134 z"},flag8thUp:{x_min:0,x_max:264,y_min:-810.1921176545985,y_max:9,ha:819.1921176545985,o:"m 343 -1138 b 380 -888 343 -1138 380 -1001 b 215 -395 380 -708 305 -539 b 58 -19 141 -281 81 -157 b 27 13 53 4 42 13 b 0 -9 12 13 0 9 l 0 -353 b 284 -688 95 -370 232 -566 b 318 -904 305 -737 318 -819 b 284 -1102 318 -969 308 -1037 b 279 -1123 281 -1110 279 -1117 b 302 -1165 279 -1146 294 -1159 b 343 -1138 311 -1171 336 -1162 z"},flag8thDown:{x_min:0,x_max:306,y_min:-14,y_max:808,ha:822,o:"m 346 1094 b 376 897 366 1034 376 962 b 318 642 376 812 340 691 b 0 340 265 521 193 405 l 0 1 b 23 -20 0 -13 12 -20 b 58 12 36 -20 55 -12 b 262 387 82 148 189 274 b 441 881 353 530 441 701 b 400 1142 441 994 412 1096 b 377 1164 396 1158 387 1164 b 346 1094 356 1164 331 1136 z"},flag16thUp:{x_min:0,x_max:279,y_min:-813,y_max:2,ha:815,o:"m 392 -1146 b 402 -988 397 -1139 402 -1057 l 402 -956 b 360 -783 402 -896 386 -837 b 359 -770 360 -779 359 -776 b 360 -760 359 -768 359 -765 b 396 -577 364 -752 396 -665 b 392 -526 396 -559 395 -543 b 236 -275 377 -428 340 -387 b 53 -16 158 -192 78 -168 b 24 3 50 0 33 3 b 0 -12 16 3 0 -1 l 0 -570 l 7 -570 b 298 -778 96 -573 199 -576 b 344 -992 331 -847 344 -917 b 333 -1120 344 -1034 340 -1077 b 331 -1133 331 -1126 331 -1129 b 363 -1171 331 -1152 343 -1171 b 392 -1146 373 -1171 383 -1165 z m 301 -661 b 223 -562 278 -625 253 -596 b 59 -331 156 -484 89 -449 b 58 -327 58 -330 58 -328 b 78 -312 58 -321 66 -312 l 89 -312 b 302 -464 177 -312 255 -393 b 341 -592 328 -501 341 -546 b 340 -621 341 -602 341 -611 b 330 -658 337 -632 337 -647 b 311 -667 328 -662 318 -667 b 301 -661 307 -667 304 -665 z"},flag16thDown:{x_min:0,x_max:290.8951581511223,y_min:-9,y_max:812.0064,ha:821.0064,o:"m 346 1132 b 312 768 367 1011 367 880 b 7 559 213 566 96 562 l 0 559 l 0 1 b 24 -13 0 -6 10 -13 b 53 6 35 -13 50 -10 b 406 516 88 228 372 289 b 410 567 409 531 410 549 b 374 750 410 655 379 742 b 373 760 373 753 373 756 b 374 773 373 766 374 769 b 405 1138 426 881 428 1022 b 370 1169 397 1171 387 1169 b 346 1132 353 1168 341 1156 z m 325 657 b 344 647 333 657 343 652 b 354 611 351 636 351 622 b 356 582 356 600 356 590 b 317 454 356 534 343 491 b 89 302 269 383 177 302 l 78 302 b 58 317 66 302 58 310 b 59 321 58 318 58 320 b 238 552 89 439 170 472 b 315 651 268 585 292 613 b 325 657 318 655 321 657 z"},flag32ndUp:{x_min:0,x_max:261,y_min:-812,y_max:149,ha:961,o:"m 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 366 -289 369 -315 369 -302 b 220 -58 350 -202 317 -163 b 46 187 148 20 71 43 b 20 215 45 200 35 215 b 0 197 12 215 0 207 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 56 -390 147 -527 88 -495 b 73 -367 53 -380 60 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z"},flag32ndDown:{x_min:0,x_max:273,y_min:-172,y_max:812,ha:984,o:"m 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -229 b 20 -248 0 -242 9 -248 b 48 -219 35 -248 46 -232 b 229 36 72 -69 154 -46 b 380 278 330 145 364 186 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z"},flag64thUp:{x_min:0,x_max:261,y_min:-812,y_max:347,ha:1159,o:"m 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 220 228 350 84 317 122 b 46 472 148 305 71 328 b 20 500 45 485 32 500 b 0 482 10 500 0 492 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 24 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 58 187 148 20 82 43 b 56 193 58 189 58 192 b 300 24 138 193 220 157 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 b 73 -367 52 -376 63 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z"},flag64thDown:{x_min:0,x_max:273,y_min:-376,y_max:812,ha:1188,o:"m 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -523 b 20 -541 0 -534 9 -541 b 48 -513 35 -541 46 -526 b 229 -258 72 -363 154 -340 b 380 -16 330 -148 364 -108 b 384 27 383 -1 384 13 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z m 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 b 229 36 75 -86 145 -55 b 311 128 264 73 289 102 z"},flag128thUp:{x_min:0,x_max:261,y_min:-812,y_max:533,ha:1345,o:"m 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 341 75 360 26 353 50 b 369 222 354 111 369 167 b 366 264 369 236 369 251 b 220 495 350 351 317 390 b 46 740 148 573 71 596 b 22 768 45 753 35 768 b 0 750 10 768 0 760 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 292 b 321 223 315 264 321 242 b 317 193 321 212 318 203 b 301 135 314 180 308 158 b 220 228 281 161 255 190 b 55 461 151 304 79 327 b 300 292 134 461 220 426 z m 300 24 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 56 187 148 20 81 43 b 55 193 56 189 56 192 b 300 24 137 193 220 157 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 b 73 -367 53 -376 62 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z"},flag128thDown:{x_min:0,x_max:273,y_min:-580,y_max:812,ha:1392,o:"m 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -816 b 20 -835 0 -828 7 -835 b 48 -806 33 -835 46 -819 b 229 -552 72 -657 154 -634 b 380 -310 330 -442 364 -402 b 384 -266 383 -295 384 -281 b 351 -105 384 -206 366 -143 b 384 27 372 -66 384 -16 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z m 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 b 229 36 75 -86 145 -55 b 311 128 264 73 289 102 z m 330 -238 b 334 -268 331 -248 334 -256 b 311 -340 334 -287 328 -310 b 56 -516 229 -478 137 -516 b 229 -258 75 -380 145 -348 b 311 -166 264 -220 289 -192 z"},accidentalFlat:{x_min:0,x_max:226,y_min:-175,y_max:439,ha:614,o:"m 17 -245 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 82 -225 117 -186 b 325 82 281 -72 325 16 b 196 220 325 164 262 216 b 117 196 171 220 137 209 b 85 176 108 189 92 176 b 78 177 82 176 81 176 b 62 202 68 181 62 192 b 72 608 63 233 72 579 b 45 632 72 624 59 632 b 0 592 24 632 1 618 b 17 -245 0 592 6 -230 z m 68 -117 b 63 27 68 -117 63 -30 b 66 73 63 50 65 68 b 167 144 76 102 134 144 b 226 60 209 144 226 96 b 98 -134 226 -17 160 -95 b 84 -138 92 -137 88 -138 b 68 -117 71 -138 68 -124 z"},accidentalNatural:{x_min:0,x_max:168,y_min:-335,y_max:341,ha:676,o:"m 203 261 b 197 259 200 261 199 259 b 68 226 197 259 105 226 b 53 233 59 226 53 228 l 53 474 b 36 491 53 484 45 491 l 17 491 b 0 474 7 491 0 484 l 0 -268 b 13 -281 0 -276 4 -281 l 16 -279 b 22 -278 17 -279 20 -279 b 164 -235 42 -269 122 -235 b 189 -251 179 -235 189 -239 l 189 -465 b 206 -482 189 -475 196 -482 l 225 -482 b 242 -465 233 -482 242 -475 l 242 258 b 230 269 242 265 236 269 b 225 268 229 269 226 269 z m 53 56 b 176 114 53 76 141 114 b 189 107 184 114 189 112 l 189 -42 b 71 -101 189 -68 107 -101 b 53 -92 60 -101 53 -98 z"},accidentalSharp:{x_min:0,x_max:249,y_min:-348,y_max:350,ha:698,o:"m 341 170 b 359 194 351 174 359 186 l 359 297 b 348 308 359 304 354 308 b 341 307 346 308 344 308 b 305 294 341 307 312 295 b 285 312 295 294 285 301 l 285 488 b 265 504 285 497 276 504 b 242 488 251 504 242 497 l 242 301 b 223 259 240 287 236 268 b 132 223 206 249 157 229 b 115 252 120 223 115 240 l 115 425 b 95 441 115 433 105 441 b 72 425 81 441 72 433 l 72 230 b 55 192 72 210 63 196 b 17 176 46 187 17 176 b 0 153 7 173 0 161 l 0 50 b 13 37 0 42 4 37 l 16 39 b 50 53 17 39 39 48 l 52 55 b 72 29 63 55 72 40 l 72 -114 b 56 -147 72 -130 65 -143 b 17 -163 48 -150 17 -163 b 0 -186 7 -166 0 -177 l 0 -288 b 13 -301 0 -297 4 -301 l 16 -300 b 50 -287 17 -300 37 -291 b 55 -285 52 -285 53 -285 b 72 -308 65 -285 72 -301 l 72 -485 b 91 -501 72 -494 81 -501 b 115 -485 105 -501 115 -494 l 115 -285 b 130 -253 115 -266 122 -256 l 217 -217 b 219 -217 217 -217 219 -217 l 222 -216 b 242 -242 235 -216 242 -233 l 242 -422 b 261 -438 242 -431 251 -438 b 285 -422 276 -438 285 -431 l 285 -217 b 301 -184 285 -206 291 -189 b 341 -168 311 -180 341 -168 b 359 -144 351 -164 359 -153 l 359 -42 b 348 -30 359 -35 354 -30 b 341 -32 346 -30 344 -30 l 304 -46 b 285 -20 295 -46 285 -37 l 285 114 b 304 156 285 124 292 151 z m 242 -65 b 132 -122 233 -94 166 -122 b 115 -115 124 -122 117 -120 b 111 -43 112 -109 111 -78 b 115 63 111 1 112 52 b 220 118 118 88 184 118 b 242 109 230 118 239 115 b 248 27 245 102 248 66 b 242 -65 248 -12 245 -52 z"},accidentalDoubleSharp:{x_min:0,x_max:247,y_min:-125,y_max:127,ha:252,o:"m 274 -46 b 206 1 258 -37 206 -9 b 274 50 206 22 253 43 b 278 50 275 50 276 50 l 287 49 b 346 63 304 49 331 52 b 356 115 353 71 356 92 b 292 183 356 174 351 183 b 233 173 266 183 240 180 b 226 117 228 168 226 143 b 179 49 219 101 196 49 b 130 117 158 49 135 96 b 118 173 130 141 125 167 b 66 183 112 180 89 183 b 7 173 42 183 16 180 b 0 120 3 170 0 145 b 7 63 0 94 3 68 b 68 49 17 55 43 49 b 82 50 73 49 78 50 b 150 3 98 42 150 13 b 84 -46 150 -16 104 -39 l 69 -46 b 7 -56 43 -46 16 -49 b 0 -111 3 -60 0 -85 b 7 -166 0 -137 3 -163 b 65 -180 17 -174 40 -180 b 118 -166 86 -180 109 -176 b 130 -111 127 -158 130 -134 b 132 -105 130 -109 131 -107 b 177 -45 141 -85 158 -45 b 226 -111 196 -45 220 -91 b 233 -166 226 -137 228 -161 b 291 -180 243 -174 266 -180 b 356 -114 346 -180 356 -166 b 346 -56 356 -89 351 -63 b 288 -46 338 -49 312 -46 z"},accidentalDoubleFlat:{x_min:0,x_max:411,y_min:-175,y_max:437,ha:612,o:"m 452 217 b 384 194 426 217 408 207 b 350 176 374 189 363 176 b 343 177 347 176 344 176 b 328 202 333 180 328 190 b 337 606 328 232 337 579 b 310 629 337 622 324 629 b 265 592 291 629 268 616 b 269 194 265 592 266 395 b 196 217 248 209 223 217 l 187 217 b 120 194 160 217 143 207 b 85 176 108 189 98 176 b 78 177 82 176 81 176 b 62 202 68 180 62 190 b 72 606 62 232 72 579 b 45 629 72 622 59 629 b 0 592 24 629 1 616 b 17 -245 0 592 7 -232 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 84 -226 120 -186 b 274 -50 206 -124 246 -85 b 284 -245 276 -158 279 -240 b 295 -252 288 -251 292 -252 b 304 -249 300 -252 304 -249 b 416 -163 348 -226 383 -186 b 592 82 546 -72 592 16 b 461 217 592 163 528 216 z m 96 -134 b 84 -138 92 -137 86 -138 b 68 -115 72 -138 68 -124 b 63 26 68 -115 63 -30 b 66 72 63 49 65 66 b 168 144 75 101 134 144 b 226 59 212 144 226 95 b 96 -134 226 -22 161 -94 z m 361 -134 b 348 -138 356 -137 351 -138 b 333 -115 337 -138 333 -124 b 328 39 333 -115 328 -16 b 330 72 328 55 328 68 b 433 144 338 101 399 144 b 468 130 448 144 459 140 b 490 59 481 112 490 88 b 361 -134 490 -22 426 -94 z"},accidentalParensLeft:{x_min:0,x_max:141,y_min:-248,y_max:247,ha:495,o:"m 203 331 l 203 351 b 202 356 203 354 203 356 b 0 0 60 281 0 140 b 199 -357 0 -144 60 -269 b 203 -354 200 -357 203 -356 l 203 -333 b 200 -327 203 -330 202 -328 b 86 0 118 -253 86 -160 b 200 324 86 158 120 251 b 203 331 202 325 203 327 z"},accidentalParensRight:{x_min:0,x_max:141,y_min:-248,y_max:247,ha:495,o:"m 0 331 b 3 324 0 327 1 325 b 117 0 84 251 117 158 b 3 -327 117 -160 85 -253 b 0 -333 1 -328 0 -330 l 0 -354 b 4 -357 0 -356 3 -357 b 203 0 143 -269 203 -144 b 1 356 203 140 143 281 b 0 351 0 356 0 354 z"},accidentalQuarterToneFlatStein:{x_min:1,x_max:227,y_min:-175,y_max:439,ha:614,o:"m 310 -245 b 327 592 321 -230 327 592 b 282 632 325 618 302 632 b 255 608 268 632 255 624 b 265 202 255 579 264 233 b 249 177 265 192 259 181 b 242 176 246 176 245 176 b 210 196 235 176 219 189 b 131 220 190 209 156 220 b 1 85 65 216 1 164 b 174 -161 1 16 46 -72 b 288 -249 210 -186 245 -225 b 297 -252 288 -249 292 -252 b 310 -245 301 -252 305 -251 z m 259 -117 b 243 -138 259 -124 256 -138 b 229 -134 239 -138 235 -137 b 101 60 167 -95 101 -17 b 160 144 101 96 118 144 b 261 73 193 144 251 102 b 264 27 262 68 264 50 b 259 -117 264 -30 259 -117 z"},accidentalThreeQuarterTonesFlatZimmermann:{x_min:1,x_max:466,y_min:-175,y_max:439,ha:614,o:"m 363 -245 b 376 -252 367 -251 372 -252 b 384 -249 380 -252 384 -249 b 497 -161 428 -226 464 -186 b 671 84 625 -72 671 16 b 541 220 671 164 606 217 b 513 217 531 220 523 219 b 464 196 495 212 480 206 b 431 176 452 189 442 176 b 423 177 428 176 426 176 b 408 202 413 180 408 190 l 419 608 b 392 632 419 625 406 632 b 346 592 372 632 347 618 b 363 -245 346 592 351 -230 z m 289 -249 b 297 -252 289 -249 292 -252 b 310 -245 300 -252 305 -251 b 328 592 321 -230 328 592 b 282 631 327 618 302 631 b 255 608 268 631 255 624 l 266 202 b 251 177 266 190 261 180 b 243 176 248 176 246 176 b 210 196 232 176 222 189 b 164 216 196 204 180 210 l 163 217 b 132 220 151 219 143 220 b 1 84 65 217 1 163 b 177 -163 1 16 48 -72 b 289 -249 210 -186 245 -226 z m 262 72 b 265 26 264 66 265 49 b 261 -115 265 -30 261 -115 b 245 -138 261 -124 258 -138 b 230 -134 240 -138 236 -137 b 102 60 166 -92 102 -20 b 124 128 102 88 111 112 b 161 144 134 138 147 144 b 199 134 173 144 184 141 b 262 72 219 122 256 92 z m 413 -115 b 409 26 413 -115 409 -30 b 412 72 409 49 410 66 b 514 144 420 102 480 144 b 570 60 557 144 570 96 b 442 -134 570 -23 508 -91 b 429 -138 436 -137 433 -138 b 413 -115 418 -138 413 -124 z"},accidentalQuarterToneSharpStein:{x_min:0,x_max:179,y_min:-353,y_max:307,ha:660,o:"m 258 240 b 246 252 258 248 252 252 b 240 251 245 252 242 252 b 168 225 240 251 171 225 b 150 253 156 225 150 240 l 150 426 b 130 442 150 435 141 442 b 105 418 108 442 105 429 l 105 230 b 91 193 105 219 101 202 b 17 161 65 183 42 171 b 0 138 9 158 0 147 l 0 36 b 13 23 0 27 4 23 l 16 24 b 86 53 17 24 73 49 l 88 55 b 107 30 98 55 107 42 l 107 -114 b 92 -145 107 -130 101 -143 l 17 -177 b 0 -200 9 -180 0 -192 l 0 -302 b 13 -315 0 -311 4 -315 l 16 -314 b 85 -285 17 -314 72 -291 b 105 -312 92 -282 105 -301 l 105 -492 b 125 -508 105 -501 114 -508 b 150 -484 147 -508 150 -498 l 150 -285 b 151 -274 150 -281 150 -278 b 164 -253 153 -265 158 -256 b 240 -225 176 -251 240 -225 b 258 -202 249 -222 258 -210 l 258 -99 b 245 -86 258 -91 253 -86 l 242 -88 b 240 -88 242 -88 240 -88 l 240 -86 b 168 -115 240 -86 174 -114 b 148 -91 158 -115 148 -107 l 148 43 b 167 85 148 55 156 81 b 240 114 180 91 240 114 b 258 138 249 118 258 128 z"},accidentalThreeQuarterTonesSharpStein:{x_min:3,x_max:317,y_min:-347,y_max:369,ha:716,o:"m 456 324 b 448 336 456 330 454 336 b 393 317 445 336 400 320 b 389 315 392 315 390 315 b 383 325 386 315 383 318 l 383 508 b 360 531 383 528 379 531 b 337 508 341 531 337 527 l 337 318 b 325 291 337 300 334 294 b 268 268 320 288 287 276 b 253 281 256 268 253 274 l 253 464 b 230 487 253 484 249 487 b 207 464 212 487 207 482 l 207 264 b 194 240 207 253 204 245 l 132 217 b 131 217 132 217 132 217 l 130 216 b 118 229 122 216 118 220 l 118 420 b 95 444 118 439 114 444 b 72 420 76 444 72 439 l 72 212 b 60 190 72 197 68 193 l 16 173 b 4 161 9 170 4 167 l 4 50 b 13 39 4 45 9 39 b 58 55 16 39 46 49 b 63 56 60 56 62 56 b 72 42 71 56 72 50 l 72 -125 b 58 -150 72 -137 65 -147 l 16 -166 b 4 -177 9 -168 4 -171 l 4 -289 b 14 -301 4 -295 9 -301 b 53 -287 16 -301 40 -291 b 62 -285 56 -285 59 -285 b 72 -298 69 -285 72 -289 l 72 -477 b 95 -500 72 -495 76 -500 b 118 -477 114 -500 118 -495 l 118 -278 b 127 -259 118 -269 121 -261 l 196 -232 b 207 -243 204 -232 207 -235 l 207 -432 b 230 -455 207 -452 212 -455 b 253 -432 249 -455 253 -451 l 253 -228 b 268 -204 253 -216 259 -207 l 320 -186 b 328 -183 323 -184 325 -183 b 337 -194 334 -183 337 -187 l 337 -387 b 360 -410 337 -408 341 -410 b 383 -387 379 -410 383 -406 l 383 -174 b 395 -157 383 -166 390 -158 l 445 -138 b 456 -127 452 -135 456 -132 l 456 -14 b 448 -3 456 -10 454 -3 b 397 -22 445 -3 408 -17 l 396 -23 b 383 -6 387 -23 383 -16 l 383 163 b 392 181 383 173 384 179 b 445 202 397 183 445 202 b 456 213 452 203 456 207 z m 337 -45 b 266 -78 333 -56 287 -78 b 258 -75 262 -78 259 -76 b 253 19 255 -71 253 -27 b 258 130 253 69 255 122 b 333 163 264 141 315 163 b 337 161 334 163 337 161 b 341 78 340 157 341 120 b 337 -45 341 24 340 -37 z m 118 -127 b 114 -48 114 -121 114 -86 b 118 78 114 6 115 68 b 200 114 122 91 180 114 b 207 111 204 114 206 112 b 212 22 210 107 212 66 b 207 -94 212 -29 210 -85 b 127 -130 203 -108 148 -130 b 118 -127 122 -130 120 -128 z"},accidentalBuyukMucennebFlat:{x_min:1,x_max:287,y_min:-174,y_max:438,ha:612,o:"m 379 452 b 370 464 379 458 377 464 b 164 389 366 464 170 392 b 156 396 163 389 156 393 b 157 436 157 409 157 428 b 167 452 157 445 161 449 b 366 526 173 455 366 526 b 379 540 374 528 379 534 l 379 611 b 370 622 379 616 377 622 b 170 550 366 622 174 552 b 160 557 163 550 160 554 b 161 608 160 585 161 602 b 134 631 161 624 148 631 b 89 590 114 631 91 616 l 89 528 b 81 517 89 526 88 518 b 16 491 76 514 16 491 b 1 480 6 490 1 485 l 1 406 b 13 395 1 400 4 395 l 14 396 b 79 419 16 396 72 415 b 89 412 86 419 89 415 b 91 376 89 399 89 386 b 82 359 91 364 89 361 b 16 331 76 356 16 331 b 1 321 6 331 1 328 l 1 248 b 13 236 1 242 4 236 b 79 262 16 236 71 258 b 92 251 89 262 92 256 b 107 -242 95 23 101 -236 b 120 -251 111 -249 115 -251 b 128 -248 124 -251 128 -248 b 240 -160 171 -225 207 -184 b 413 84 367 -71 413 16 b 284 220 413 166 350 216 b 207 196 259 220 229 209 b 170 176 196 190 184 176 l 168 177 b 151 203 157 181 151 192 b 153 269 151 210 151 236 b 163 292 153 275 153 289 b 366 367 173 297 366 367 b 379 383 374 370 379 376 z m 186 -132 b 173 -137 180 -135 176 -137 b 157 -114 161 -137 157 -122 b 153 35 157 -114 153 -22 b 154 73 153 53 153 68 b 219 135 160 92 197 124 b 255 144 232 141 243 144 b 292 130 269 144 282 140 b 314 62 305 114 314 91 b 186 -132 314 -17 251 -94 z"},accidentalBakiyeFlat:{x_min:-1,x_max:286,y_min:-175,y_max:439,ha:614,o:"m 377 454 b 369 467 377 458 376 467 b 363 465 367 467 364 467 b 161 390 363 465 167 393 b 153 399 154 390 153 395 b 157 608 154 494 157 593 b 130 632 157 624 144 632 b 86 592 111 632 88 618 b 88 377 86 592 86 501 b 76 356 88 373 88 360 l 12 331 b -1 320 3 330 -1 327 l -1 248 b 9 236 -1 242 1 236 b 81 264 12 236 78 261 b 89 258 86 264 89 261 b 104 -245 92 30 96 -236 b 115 -252 108 -251 112 -252 b 124 -249 120 -252 124 -249 b 239 -161 167 -226 203 -186 b 412 84 367 -72 412 17 b 282 220 412 166 348 216 b 255 216 274 220 264 219 b 203 196 238 212 222 206 b 171 177 193 189 177 177 b 163 179 168 177 166 177 b 147 202 153 181 147 192 b 147 216 147 204 147 209 l 150 262 b 150 276 150 269 150 275 b 158 291 150 287 154 289 b 363 370 163 292 363 370 b 377 384 373 373 377 379 z m 181 -134 b 167 -138 176 -137 171 -138 b 153 -117 156 -138 153 -125 b 148 27 153 -117 148 -30 b 151 73 148 50 150 68 b 255 144 161 105 219 144 b 312 62 298 144 312 99 b 181 -134 312 -19 249 -96 z"},accidentalKomaSharp:{x_min:0,x_max:229,y_min:-337,y_max:322,ha:659,o:"m 312 151 b 330 176 323 156 330 166 l 330 278 b 320 289 330 285 327 289 b 312 288 318 289 315 289 b 200 246 312 288 203 248 b 181 275 187 246 181 264 l 181 448 b 163 464 181 456 173 464 b 138 441 140 464 138 452 l 138 253 b 122 215 137 240 132 225 b 17 177 92 203 45 177 b 0 153 7 173 0 163 l 0 50 b 10 39 0 43 4 39 b 17 40 13 39 14 39 l 128 81 b 138 52 138 81 138 63 l 138 -91 b 124 -124 138 -107 132 -120 b 17 -167 115 -127 17 -167 b 0 -192 7 -171 0 -181 l 0 -294 b 10 -305 0 -301 4 -305 b 17 -304 13 -305 14 -305 b 128 -261 17 -304 117 -264 l 130 -259 b 138 -276 137 -259 138 -268 l 138 -469 b 157 -485 138 -478 147 -485 b 181 -462 179 -485 181 -475 l 181 -262 b 183 -252 181 -258 181 -255 b 197 -232 186 -243 190 -235 b 312 -187 207 -228 312 -187 b 330 -163 323 -183 330 -173 l 330 -60 b 320 -49 330 -53 327 -49 b 312 -50 318 -49 315 -49 l 200 -94 b 193 -95 197 -95 194 -95 b 181 -68 183 -95 181 -85 l 181 66 b 200 108 181 92 189 104 z"},accidentalKucukMucennebSharp:{x_min:-1,x_max:339,y_min:-338,y_max:321,ha:659,o:"m 264 92 b 271 102 264 98 265 99 l 395 150 b 412 174 405 154 412 164 l 412 276 b 402 288 412 284 409 288 b 395 287 400 288 397 288 b 282 245 395 287 285 246 b 264 274 269 245 264 262 l 264 446 b 245 462 264 455 255 462 b 220 439 222 462 220 451 l 220 252 b 204 213 219 239 215 223 b 99 176 174 202 127 176 b 82 151 89 171 82 161 l 82 49 b 92 37 82 42 86 37 b 99 39 95 37 96 37 l 210 79 b 216 81 212 81 215 81 b 220 78 219 81 220 79 l 220 56 b 216 46 220 52 220 48 b 16 -29 210 45 16 -29 b -1 -45 4 -32 -1 -36 l -1 -138 b 12 -154 -1 -145 3 -154 l 215 -79 b 220 -84 219 -79 220 -81 l 220 -105 b 210 -122 220 -115 219 -120 b 99 -168 202 -127 99 -168 b 82 -193 89 -173 82 -183 l 82 -295 b 92 -307 82 -302 86 -307 b 99 -305 95 -307 96 -307 b 210 -262 99 -305 199 -265 l 212 -261 b 220 -278 219 -261 220 -269 l 220 -471 b 239 -487 220 -480 229 -487 b 264 -464 261 -487 264 -477 l 264 -264 b 265 -253 264 -259 264 -256 b 279 -233 268 -245 272 -236 b 395 -189 289 -229 395 -189 b 412 -164 405 -184 412 -174 l 412 -62 b 402 -50 412 -55 409 -50 b 395 -52 400 -50 397 -50 l 278 -96 b 264 -86 268 -96 264 -94 l 264 -68 b 269 -59 264 -62 265 -60 b 471 17 274 -58 471 17 b 488 36 484 22 488 27 l 488 127 b 475 144 488 134 487 144 l 472 141 b 471 141 472 141 471 141 l 471 143 b 272 68 471 143 282 71 l 269 66 b 264 71 264 66 264 69 z"},accidentalKoron:{x_min:0,x_max:300,y_min:-472,y_max:157,ha:629,o:"m 432 -4 b 415 10 432 1 418 9 l 4 226 b 0 223 1 226 0 225 l 0 -672 b 7 -680 0 -677 3 -680 l 45 -680 b 52 -672 49 -680 52 -677 l 52 -193 l 415 -22 b 432 -4 418 -20 432 -13 z m 52 -137 l 52 144 l 327 -7 z"},accidentalSori:{x_min:0,x_max:421,y_min:-318,y_max:328,ha:646,o:"m 606 10 b 589 23 606 16 592 22 l 382 109 l 382 465 b 374 472 382 469 379 472 l 337 472 b 330 465 333 472 330 469 l 330 132 l 183 194 l 183 425 b 176 432 183 429 180 432 l 138 432 b 131 425 134 432 131 429 l 131 216 l 3 269 b 0 265 0 269 0 266 l 0 223 b 3 213 0 216 0 215 l 131 160 l 131 -150 l 3 -203 b 0 -212 0 -204 0 -206 l 0 -255 b 3 -259 0 -258 1 -259 l 131 -204 l 131 -451 b 138 -458 131 -455 134 -458 l 176 -458 b 183 -451 180 -458 183 -455 l 183 -183 l 330 -120 l 330 -410 b 337 -418 330 -415 333 -418 l 374 -418 b 382 -410 379 -418 382 -415 l 382 -98 l 589 -9 b 606 10 592 -9 606 0 z m 183 -128 l 183 138 l 330 76 l 330 -66 z m 382 -45 l 382 55 l 501 6 z"},articAccentAbove:{x_min:0,x_max:339,y_min:1,y_max:245,ha:244,o:"m 469 151 b 488 177 488 156 488 166 b 469 203 488 189 488 197 l 37 350 b 24 353 32 351 26 353 b 3 333 12 353 7 344 b 0 318 1 327 0 323 b 20 298 0 311 4 304 b 346 187 20 298 331 193 b 356 177 353 186 356 181 b 344 167 356 173 353 170 b 20 58 328 163 20 58 b 0 36 4 50 0 43 b 3 23 0 32 1 27 b 23 1 7 13 13 1 b 29 3 24 1 27 1 z"},articAccentBelow:{x_min:0,x_max:339,y_min:-244,y_max:0,ha:244,o:"m 469 -202 b 488 -176 488 -197 488 -187 b 469 -150 488 -164 488 -156 l 37 -3 b 24 0 32 -1 26 0 b 3 -20 12 0 7 -9 b 0 -35 1 -26 0 -30 b 20 -55 0 -42 4 -49 b 346 -166 20 -55 331 -160 b 356 -176 353 -167 356 -171 b 344 -186 356 -180 353 -183 b 20 -295 328 -190 20 -295 b 0 -317 4 -302 0 -310 b 3 -330 0 -321 1 -325 b 23 -351 7 -340 13 -351 b 29 -350 24 -351 27 -351 z"},articTenutoAbove:{x_min:-1,x_max:338,y_min:0,y_max:48,ha:48,o:"m 452 0 b 487 35 485 0 487 16 b 452 69 487 53 487 69 l 33 69 b -1 35 -1 69 -1 53 b 33 0 -1 16 -1 0 z"},articTenutoBelow:{x_min:-1,x_max:338,y_min:-48,y_max:0,ha:48,o:"m 452 -69 b 487 -35 485 -69 487 -53 b 452 0 487 -16 487 0 l 33 0 b -1 -35 -1 0 -1 -16 b 33 -69 -1 -53 -1 -69 z"},articStaccatoAbove:{x_min:0,x_max:84,y_min:0,y_max:84,ha:84,o:"m 121 60 b 60 121 121 94 94 121 b 0 60 27 121 0 94 b 60 0 0 27 27 0 b 121 60 94 0 121 27 z"},articStaccatoBelow:{x_min:0,x_max:84,y_min:-84,y_max:0,ha:84,o:"m 121 -60 b 60 0 121 -27 94 0 b 0 -60 27 0 0 -27 b 60 -121 0 -94 27 -121 b 121 -60 94 -121 121 -94 z"},articStaccatissimoAbove:{x_min:1,x_max:100,y_min:-2,y_max:293,ha:295,o:"m 72 422 b 1 390 35 422 3 409 b 72 -3 1 369 39 -3 b 144 389 108 -3 144 356 b 72 422 144 410 111 422 z"},articStaccatissimoBelow:{x_min:1,x_max:100,y_min:-295,y_max:0,ha:295,o:"m 72 -425 b 144 -392 111 -425 144 -413 b 72 0 144 -359 108 0 b 1 -393 39 0 1 -372 b 72 -425 3 -412 35 -425 z"},articMarcatoAbove:{x_min:-1,x_max:235,y_min:-1,y_max:253,ha:254,o:"m 181 356 b 167 364 177 361 173 364 b 153 356 157 364 153 356 l 0 23 b -1 16 -1 20 -1 19 b 9 0 -1 9 1 1 b 16 -1 10 -1 14 -1 b 32 9 22 -1 29 1 b 112 186 32 9 109 180 b 118 190 114 189 115 190 b 127 186 121 190 124 189 b 209 9 128 180 209 9 b 225 0 213 3 219 0 l 323 0 b 338 16 333 1 338 7 b 337 23 338 19 338 22 z"},articMarcatoBelow:{x_min:-1,x_max:235,y_min:-254,y_max:0,ha:254,o:"m 156 -357 b 170 -366 160 -363 164 -366 b 184 -357 180 -366 184 -357 l 337 -24 b 338 -17 338 -22 338 -20 b 328 -1 338 -10 336 -3 b 321 0 327 0 323 0 b 305 -10 315 0 308 -3 b 225 -187 305 -10 228 -181 b 219 -192 223 -190 222 -192 b 210 -187 216 -192 213 -190 b 128 -10 209 -181 128 -10 b 112 -1 124 -4 118 -1 l 14 -1 b -1 -17 4 -3 -1 -9 b 0 -24 -1 -20 -1 -23 z"},fermataAbove:{x_min:3,x_max:605,y_min:-3,y_max:329,ha:332,o:"m 435 318 b 818 36 742 318 804 91 b 821 26 819 32 819 27 b 851 -4 831 6 837 -4 b 871 16 864 -4 871 1 b 870 30 871 20 871 24 b 438 474 780 471 480 474 b 6 30 392 474 94 471 b 4 14 4 24 4 19 b 23 -4 4 0 12 -4 b 52 26 36 -4 43 6 b 56 39 53 27 55 33 b 435 318 73 98 138 318 z m 516 75 b 436 153 516 117 480 153 b 359 75 395 153 359 117 b 436 -4 359 32 395 -4 b 516 75 480 -4 516 32 z"},fermataBelow:{x_min:3,x_max:605,y_min:-332,y_max:0,ha:332,o:"m 435 -323 b 56 -43 138 -323 73 -102 b 52 -30 55 -37 53 -32 b 23 0 43 -10 36 0 b 4 -19 12 0 4 -4 b 6 -35 4 -23 4 -29 b 438 -478 94 -475 392 -478 b 870 -35 480 -478 780 -475 b 871 -20 871 -29 871 -24 b 851 0 871 -6 864 0 b 821 -30 837 0 831 -10 b 818 -40 819 -32 819 -36 b 435 -323 804 -95 742 -323 z m 516 -79 b 436 0 516 -36 480 0 b 359 -79 395 0 359 -36 b 436 -157 359 -121 395 -157 b 516 -79 480 -157 516 -121 z"},fermataLongAbove:{x_min:0,x_max:603,y_min:-1,y_max:333,ha:334,o:"m 72 480 b 0 441 32 480 0 462 l 0 19 b 35 0 0 9 16 0 b 71 19 55 0 71 9 l 71 289 b 433 315 71 307 252 315 b 798 289 615 315 798 307 l 798 19 b 832 0 798 9 814 0 b 868 19 852 0 868 9 l 868 441 b 796 480 868 462 837 480 z m 513 78 b 433 156 513 121 478 156 b 356 78 390 156 356 121 b 433 -1 356 35 390 -1 b 513 78 478 -1 513 35 z"},fermataLongBelow:{x_min:0,x_max:603,y_min:-333,y_max:1,ha:334,o:"m 513 -78 b 433 1 513 -35 478 1 b 356 -78 390 1 356 -35 b 433 -156 356 -121 390 -156 b 513 -78 478 -156 513 -121 z m 796 -480 b 868 -441 837 -480 868 -462 l 868 -19 b 832 0 868 -9 852 0 b 798 -19 814 0 798 -9 l 798 -289 b 433 -315 798 -307 615 -315 b 71 -289 252 -315 71 -307 l 71 -19 b 35 0 71 -9 55 0 b 0 -19 16 0 0 -9 l 0 -441 b 72 -480 0 -462 32 -480 z"},fermataVeryLongAbove:{x_min:0,x_max:715,y_min:0,y_max:408,ha:408,o:"m 76 588 b 0 546 35 588 0 569 l 0 22 b 37 1 0 10 17 1 b 75 22 59 1 75 10 l 75 431 b 514 458 75 449 294 458 b 955 431 734 458 955 449 l 955 22 b 991 1 955 10 971 1 b 1030 22 1012 1 1030 10 l 1030 546 b 953 588 1030 569 995 588 z m 215 389 b 138 347 171 389 138 370 l 138 22 b 174 1 138 10 154 1 b 213 22 196 1 213 10 l 213 217 b 514 245 213 235 363 245 b 816 217 665 245 816 235 l 816 22 b 854 1 816 10 834 1 b 891 22 876 1 891 10 l 891 347 b 815 389 891 370 858 389 z m 606 84 b 521 167 606 130 569 167 b 439 84 475 167 439 130 b 521 0 439 39 475 0 b 606 84 569 0 606 39 z"},fermataVeryLongBelow:{x_min:0,x_max:715,y_min:-408,y_max:0,ha:408,o:"m 606 -84 b 521 0 606 -39 569 0 b 439 -84 475 0 439 -39 b 521 -167 439 -130 475 -167 b 606 -84 569 -167 606 -130 z m 815 -389 b 891 -347 858 -389 891 -370 l 891 -22 b 854 -1 891 -10 876 -1 b 816 -22 834 -1 816 -10 l 816 -217 b 514 -245 816 -235 665 -245 b 213 -217 363 -245 213 -235 l 213 -22 b 174 -1 213 -10 196 -1 b 138 -22 154 -1 138 -10 l 138 -347 b 215 -389 138 -370 171 -389 z m 953 -588 b 1030 -546 995 -588 1030 -569 l 1030 -22 b 991 -1 1030 -10 1012 -1 b 955 -22 971 -1 955 -10 l 955 -431 b 514 -458 955 -449 734 -458 b 75 -431 294 -458 75 -449 l 75 -22 b 37 -1 75 -10 59 -1 b 0 -22 17 -1 0 -10 l 0 -546 b 76 -588 0 -569 35 -588 z"},fermataShortAbove:{x_min:0,x_max:604,y_min:0,y_max:341,ha:341,o:"m 78 0 b 88 6 81 0 82 3 b 435 328 134 45 412 328 b 783 3 458 328 742 39 b 793 0 786 1 793 0 l 865 0 b 870 4 865 0 870 1 b 867 10 870 6 868 9 b 435 491 805 69 474 491 b 3 10 397 491 69 75 b 0 4 1 9 0 6 b 4 0 0 1 4 0 z m 513 94 b 433 171 513 135 477 171 b 354 94 390 171 354 135 b 433 13 354 49 390 13 b 513 94 477 13 513 49 z"},fermataShortBelow:{x_min:0,x_max:604,y_min:-341,y_max:0,ha:341,o:"m 4 0 b 0 -4 4 0 0 -1 b 3 -10 0 -6 1 -9 b 435 -491 69 -75 397 -491 b 867 -10 474 -491 805 -69 b 870 -4 868 -9 870 -6 b 865 0 870 -1 865 0 l 793 0 b 783 -3 793 0 786 -1 b 435 -328 742 -39 458 -328 b 88 -6 412 -328 134 -45 b 78 0 82 -3 81 0 z m 513 -94 b 433 -13 513 -49 477 -13 b 354 -94 390 -13 354 -49 b 433 -171 354 -135 390 -171 b 513 -94 477 -171 513 -135 z"},breathMarkComma:{x_min:1,x_max:152,y_min:2,y_max:251,ha:249,o:"m 104 361 b 1 271 42 361 1 321 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 17 32 29 26 26 l 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 z"},breathMarkUpbow:{x_min:1,x_max:249,y_min:1,y_max:495,ha:494,o:"m 181 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 z"},caesura:{x_min:0,x_max:384,y_min:-1,y_max:532,ha:533,o:"m 40 -1 b 78 26 58 -1 72 9 l 321 713 b 323 726 323 717 323 721 b 282 766 323 747 304 766 b 245 739 265 766 251 756 l 3 52 b 0 37 1 48 0 42 b 27 1 0 22 10 7 b 40 -1 32 -1 36 -1 z m 308 26 l 552 713 b 553 726 553 717 553 721 b 513 766 553 747 534 766 b 475 739 495 766 481 756 l 232 52 b 230 39 230 48 230 43 b 258 1 230 23 240 7 b 271 -1 262 -1 266 -1 b 308 26 287 -1 302 9 z"},caesuraCurved:{x_min:0,x_max:373,y_min:0,y_max:530,ha:530,o:"m 491 763 b 445 719 468 763 446 744 b 252 98 432 507 340 295 l 226 39 b 223 27 225 35 223 32 b 252 0 223 13 233 0 b 276 16 262 0 272 6 b 537 716 386 230 537 478 b 491 763 537 742 518 763 z m 29 0 b 53 16 39 0 48 6 l 82 69 b 314 716 187 264 314 498 b 268 763 314 742 295 763 b 222 719 245 763 223 744 b 29 98 209 507 117 295 l 3 39 b 0 29 1 36 0 33 b 29 0 0 14 12 0 z"},restMaxima:{x_min:0,x_max:381,y_min:-249,y_max:250,ha:499,o:"m 180 -330 l 180 331 b 156 360 180 356 170 360 l 23 360 b 0 331 10 360 0 356 l 0 -330 b 23 -359 0 -354 10 -359 l 156 -359 b 180 -330 170 -359 180 -354 z m 549 -330 l 549 331 b 524 360 549 356 539 360 l 392 360 b 369 331 379 360 369 356 l 369 -330 b 392 -359 369 -354 379 -359 l 524 -359 b 549 -330 539 -359 549 -354 z"},restDoubleWhole:{x_min:0,x_max:125,y_min:0,y_max:250,ha:250,o:"m 180 22 l 180 338 b 156 360 180 350 170 360 l 23 360 b 0 338 10 360 0 350 l 0 22 b 23 0 0 10 10 0 l 156 0 b 180 22 170 0 180 10 z"},restWhole:{x_min:0,x_max:282,y_min:-135,y_max:9,ha:144,o:"m 406 -157 l 406 -24 b 369 13 406 -3 389 13 l 37 13 b 0 -24 16 13 0 -3 l 0 -157 b 37 -194 0 -177 16 -194 l 369 -194 b 406 -157 389 -194 406 -177 z"},restWholeLegerLine:{x_min:-117,x_max:399,y_min:-135,y_max:20,ha:155,o:"m -143 29 b -168 3 -157 29 -168 17 b -143 -23 -168 -12 -157 -23 l 0 -23 l 0 -157 b 37 -194 0 -177 16 -194 l 369 -194 b 406 -157 389 -194 406 -177 l 406 -24 b 549 -23 406 -23 406 -23 b 575 3 563 -23 575 -12 b 549 29 575 17 563 29 z"},restHalf:{x_min:0,x_max:282,y_min:-2,y_max:142,ha:144,o:"m 406 35 l 406 167 b 369 204 406 189 389 204 l 37 204 b 0 167 16 204 0 189 l 0 35 b 37 -3 0 14 16 -3 l 369 -3 b 406 35 389 -3 406 14 z"},restHalfLegerLine:{x_min:-117,x_max:399,y_min:-13,y_max:142,ha:155,o:"m 549 -19 b 575 7 563 -19 575 -7 b 549 33 575 22 563 33 b 406 35 406 33 406 33 l 406 167 b 369 204 406 187 389 204 l 37 204 b 0 167 16 204 0 187 l 0 33 l -143 33 b -168 7 -157 33 -168 22 b -143 -19 -168 -7 -157 -19 z"},restQuarter:{x_min:1,x_max:270,y_min:-375,y_max:373,ha:748,o:"m 112 -55 b 174 -141 135 -84 156 -111 b 183 -161 177 -147 183 -158 b 181 -167 183 -163 183 -166 b 166 -174 179 -173 173 -174 b 143 -170 160 -174 148 -171 b 137 -170 141 -170 138 -170 l 125 -166 b 1 -304 50 -166 1 -233 b 168 -527 1 -376 63 -446 b 206 -540 180 -536 194 -540 b 228 -531 216 -540 226 -537 b 230 -521 229 -527 230 -524 b 207 -487 230 -508 219 -497 b 170 -435 189 -487 173 -448 b 164 -397 166 -423 164 -410 b 255 -292 164 -338 194 -292 b 369 -317 297 -292 344 -308 l 370 -318 b 382 -320 376 -320 379 -320 b 389 -314 386 -320 389 -318 b 336 -232 389 -297 351 -249 b 236 -32 281 -166 236 -112 b 236 -27 236 -30 236 -29 l 238 -17 b 238 -13 238 -16 238 -14 b 333 199 243 71 295 140 b 338 220 337 206 338 213 b 333 248 338 235 333 248 b 95 526 333 248 120 501 b 69 537 88 533 78 537 b 40 507 55 537 40 527 b 46 484 40 500 42 492 b 134 291 52 468 134 395 b 48 108 134 238 112 176 b 27 66 33 94 27 78 b 42 32 27 46 42 32 z"},rest8th:{x_min:0,x_max:247,y_min:-251,y_max:174,ha:425,o:"m 193 154 b 96 251 193 207 150 251 b 0 154 43 251 0 207 b 39 81 0 124 17 98 b 117 56 62 65 89 56 b 173 66 137 56 157 60 b 225 88 193 72 206 78 b 232 89 228 89 230 89 b 239 76 238 89 239 84 b 238 60 239 72 239 66 b 104 -343 233 39 130 -248 b 145 -361 104 -360 137 -361 b 196 -347 161 -361 181 -359 b 341 161 200 -344 341 161 b 356 217 347 187 354 210 b 338 240 356 232 341 239 b 323 235 336 240 331 240 b 193 140 312 226 240 140 z"},rest16th:{x_min:0,x_max:320,y_min:-500,y_max:179,ha:679,o:"m 300 160 b 202 258 300 215 256 258 b 104 160 148 258 104 215 b 219 62 104 101 164 62 b 331 94 258 62 298 75 b 341 96 336 95 338 96 b 348 86 346 96 348 94 b 265 -173 348 63 275 -151 b 194 -217 253 -200 215 -217 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 151 -105 b 0 -203 43 -105 0 -148 b 115 -301 0 -262 60 -301 b 223 -271 153 -301 190 -288 b 229 -279 226 -271 229 -274 l 228 -281 b 228 -282 228 -282 228 -282 l 91 -690 b 91 -691 91 -690 91 -691 l 89 -693 b 134 -720 89 -706 102 -720 b 189 -687 176 -720 183 -703 l 356 -138 b 420 81 393 -16 420 81 b 459 226 420 81 456 207 b 461 232 459 229 461 230 b 446 248 461 240 449 246 b 431 242 439 248 435 245 b 300 145 420 233 348 147 z"},rest32nd:{x_min:0,x_max:363,y_min:-500,y_max:426,ha:926,o:"m 508 603 b 492 598 501 603 497 600 b 361 503 482 590 410 503 l 361 516 b 264 613 361 570 318 613 b 166 516 210 613 166 570 b 206 444 166 487 183 461 b 246 423 217 433 232 428 b 284 418 258 420 269 418 b 393 449 321 418 360 432 b 399 451 395 451 397 451 b 415 426 409 451 415 436 l 413 423 b 413 422 413 423 413 422 l 357 192 b 279 140 350 168 302 140 b 281 153 281 144 281 148 b 183 251 281 207 236 251 b 85 153 128 251 85 207 b 125 81 85 124 102 98 b 164 60 137 71 150 65 b 203 55 176 58 189 55 b 311 86 240 55 278 69 b 315 88 312 88 314 88 b 325 69 323 88 325 76 l 268 -167 b 194 -217 261 -197 216 -216 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 153 -105 b 0 -203 45 -105 0 -148 b 115 -301 0 -262 60 -301 b 228 -269 154 -301 194 -288 b 232 -268 229 -268 230 -268 b 240 -276 236 -268 240 -272 b 138 -688 240 -282 141 -678 b 137 -697 137 -691 137 -694 b 176 -720 137 -708 145 -720 b 232 -690 222 -720 226 -706 b 484 436 236 -672 484 436 b 521 582 484 436 518 564 b 523 588 521 585 523 586 b 508 603 523 600 511 603 z"},rest64th:{x_min:0,x_max:423,y_min:-753,y_max:430,ha:1183,o:"m 596 609 b 580 603 589 609 585 606 b 448 507 569 595 497 507 b 449 521 449 511 449 516 b 351 619 449 575 405 619 b 253 521 297 619 253 575 b 372 422 253 461 317 422 b 481 454 410 422 446 438 b 491 456 484 455 488 456 b 504 441 498 456 504 451 b 501 426 504 436 503 432 b 445 202 500 422 451 217 b 359 144 435 174 383 144 l 359 158 b 261 256 359 212 315 256 b 163 158 207 256 163 212 b 243 65 163 112 202 78 b 279 60 255 62 266 60 b 397 91 320 60 360 73 b 403 92 400 92 402 92 b 412 79 409 92 412 86 b 410 72 412 76 412 75 b 351 -161 408 59 356 -150 b 281 -212 340 -199 301 -212 l 281 -197 b 183 -99 281 -144 238 -99 b 85 -197 130 -99 85 -144 b 125 -271 85 -228 102 -253 b 166 -291 138 -279 151 -287 b 204 -297 177 -294 192 -297 b 262 -287 225 -297 245 -292 b 305 -265 282 -279 287 -274 b 310 -264 307 -264 308 -264 b 318 -284 317 -264 318 -275 b 317 -295 318 -288 317 -294 b 259 -524 315 -302 265 -508 b 194 -567 251 -554 213 -567 b 196 -554 196 -563 196 -559 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 b 40 -626 0 -583 17 -609 b 118 -652 60 -644 92 -652 b 210 -629 145 -652 186 -642 b 216 -628 213 -628 215 -628 b 228 -647 226 -628 228 -639 l 226 -651 b 226 -652 226 -651 226 -652 l 122 -1054 b 121 -1064 121 -1058 121 -1061 b 167 -1084 121 -1077 134 -1084 b 215 -1060 202 -1084 209 -1076 b 402 -278 217 -1047 229 -1021 b 436 -135 403 -278 431 -161 l 570 441 b 609 588 570 441 605 569 b 596 609 609 603 602 608 z"},rest128th:{x_min:0,x_max:485,y_min:-750,y_max:689,ha:1439,o:"m 537 894 b 439 992 537 949 494 992 b 341 894 386 992 341 949 b 382 822 341 865 359 840 b 459 796 402 805 433 796 b 518 806 480 796 501 801 l 520 808 b 569 828 539 814 552 819 b 580 831 572 829 577 831 b 598 812 589 831 598 825 b 596 801 598 809 598 805 b 540 575 590 773 546 595 b 448 510 534 553 475 510 l 448 524 b 350 622 448 577 405 622 b 252 524 297 622 252 577 b 292 451 252 494 269 468 b 369 426 318 433 337 426 b 429 435 389 426 412 429 b 494 464 449 442 475 455 b 498 465 495 465 497 465 b 505 446 504 465 505 456 b 503 426 505 439 504 432 l 446 202 b 366 144 439 173 389 144 l 366 158 b 268 256 366 212 323 256 b 170 158 215 256 170 212 b 289 59 170 98 235 59 b 347 69 310 59 330 63 b 397 91 367 76 379 82 b 406 94 400 92 403 94 b 415 79 412 94 415 88 b 412 63 415 75 413 69 b 357 -157 408 42 364 -134 b 281 -212 346 -196 302 -212 b 282 -197 281 -207 282 -203 b 184 -99 282 -144 238 -99 b 86 -197 130 -99 86 -144 b 204 -297 86 -258 150 -297 b 262 -287 225 -297 245 -292 b 312 -265 282 -279 294 -274 b 318 -264 314 -264 317 -264 b 327 -275 324 -264 327 -269 b 266 -517 324 -287 278 -490 b 200 -569 248 -566 220 -567 l 196 -554 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 b 118 -652 0 -615 63 -652 b 177 -642 138 -652 160 -648 l 179 -641 b 229 -621 197 -635 210 -629 l 230 -619 b 239 -626 236 -619 239 -622 b 238 -632 239 -628 239 -631 b 131 -1057 235 -642 134 -1050 b 173 -1080 131 -1071 140 -1080 b 230 -1057 219 -1080 225 -1074 l 658 815 b 697 960 658 815 694 942 b 698 966 697 963 698 965 b 684 982 698 975 687 981 b 668 976 677 982 672 979 b 537 880 658 969 586 881 z"},dynamicPiano:{x_min:-89,x_max:366,y_min:-142,y_max:274,ha:416,o:"m 395 395 b 292 357 350 395 318 380 b 262 328 272 340 268 328 b 246 363 255 328 259 338 b 177 393 236 380 215 393 b 1 251 92 393 46 333 b -9 223 -6 238 -9 230 b 7 207 -9 213 -1 207 b 30 229 17 207 23 216 b 127 338 72 301 101 338 b 143 321 138 338 143 331 b 134 285 143 310 138 295 l -43 -154 b -65 -168 -48 -166 -50 -168 l -109 -168 b -128 -187 -122 -168 -128 -174 b -111 -204 -128 -199 -122 -204 l 167 -204 b 186 -186 180 -204 186 -199 b 168 -168 186 -174 180 -168 l 111 -168 b 98 -164 102 -168 98 -168 b 101 -154 98 -163 99 -158 l 166 7 b 179 24 168 14 171 24 b 213 -1 186 24 190 10 b 276 -14 233 -12 252 -14 b 527 266 415 -14 527 130 b 395 395 527 350 475 395 z m 356 341 b 389 288 380 341 389 320 b 243 35 389 217 312 35 b 207 81 219 35 207 50 b 235 180 207 111 219 140 l 264 251 b 356 341 284 300 321 341 z"},dynamicMezzo:{x_min:-20,x_max:446,y_min:-10,y_max:274,ha:284,o:"m 528 395 b 431 350 487 395 454 374 b 409 330 416 336 415 330 b 397 360 402 330 406 341 b 334 395 389 379 370 395 b 236 350 292 395 259 374 b 215 330 222 336 220 330 b 203 360 207 330 212 340 b 147 393 194 379 174 393 b -19 251 71 393 26 331 b -29 223 -26 238 -29 230 b -13 207 -29 213 -22 207 b 9 226 -3 207 1 215 b 107 338 52 300 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 287 323 225 292 255 323 b 308 302 304 323 308 314 b 294 249 308 285 302 269 b 203 24 294 248 292 248 b 199 9 200 17 199 13 b 215 0 199 3 203 0 l 285 0 b 308 17 298 0 302 3 l 402 251 b 481 323 419 292 449 323 b 503 302 498 323 503 314 b 413 43 503 252 413 104 b 478 -14 413 6 436 -14 b 629 102 533 -14 583 26 b 642 132 638 117 642 125 b 629 145 642 141 636 145 b 608 127 619 145 615 138 b 534 49 580 84 553 49 b 523 62 526 49 523 53 b 606 317 523 112 606 238 b 528 395 606 353 588 395 z"},dynamicForte:{x_min:-141,x_max:364,y_min:-152,y_max:444,ha:596,o:"m 23 380 b 0 357 7 380 0 373 b 22 336 0 343 7 336 l 105 336 b 117 330 114 336 117 336 b 114 315 117 327 115 323 l 23 0 b -101 -187 -17 -141 -43 -187 b -127 -174 -120 -187 -127 -181 b -92 -156 -127 -163 -114 -170 b -63 -102 -75 -144 -63 -125 b -128 -43 -63 -65 -89 -43 b -203 -122 -171 -43 -203 -78 b -95 -219 -203 -186 -156 -219 b 161 17 14 -219 82 -145 b 269 317 203 105 235 194 l 271 318 b 289 336 271 323 282 336 l 383 336 b 406 359 399 336 406 343 b 384 380 406 373 399 380 l 298 380 b 284 387 288 380 284 380 b 287 405 284 392 285 396 b 419 606 315 530 347 606 b 442 595 431 606 442 603 b 419 580 442 586 435 588 b 389 526 400 572 389 552 b 454 465 389 485 418 465 b 524 543 491 465 524 490 b 400 639 524 596 491 639 b 135 402 261 639 183 540 b 107 380 128 380 127 380 z"},dynamicRinforzando:{x_min:-20,x_max:277,y_min:0,y_max:274,ha:274,o:"m 324 395 b 235 350 287 395 256 374 b 215 330 222 336 220 330 b 203 360 207 330 213 337 b 145 393 194 379 174 393 b -19 251 75 393 27 337 b -29 223 -26 238 -29 230 b -13 207 -29 213 -22 207 b 9 226 -3 207 3 215 b 107 338 52 301 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 304 351 226 298 272 351 b 318 343 312 351 318 348 b 287 285 318 330 287 325 b 338 239 287 256 308 239 b 399 318 373 239 399 268 b 324 395 399 360 377 395 z"},dynamicSforzando:{x_min:0,x_max:229,y_min:-10,y_max:273,ha:283,o:"m 212 393 b 68 274 127 393 68 350 b 145 161 68 223 95 196 b 200 85 187 132 200 114 b 127 20 200 53 173 20 b 66 42 91 20 66 32 b 91 56 66 49 75 46 b 111 98 104 65 111 79 b 59 145 111 127 86 145 b 0 78 24 145 0 117 b 125 -14 0 30 49 -14 b 291 120 219 -14 291 36 b 220 232 291 160 276 190 b 151 314 168 271 151 287 b 213 361 151 337 168 361 b 258 346 238 361 258 356 b 240 333 258 340 251 340 b 226 298 232 325 226 314 b 276 252 226 269 248 252 b 330 307 311 252 330 279 b 212 393 330 360 285 393 z"},dynamicZ:{x_min:-30,x_max:244,y_min:-10,y_max:268,ha:278,o:"m 333 386 b 298 377 321 386 314 382 b 239 370 282 373 259 370 b 94 383 153 370 111 383 b 68 364 79 383 72 377 l 33 264 b 29 242 30 255 29 248 b 45 228 29 232 36 228 b 66 249 55 228 60 236 l 81 279 b 96 297 85 288 88 297 b 168 292 102 297 127 292 b 223 302 194 292 215 302 b 196 269 229 302 197 271 l -26 45 b -43 16 -37 33 -43 27 b -24 -1 -43 6 -36 -1 b 4 16 -12 -1 -3 10 b 39 30 16 24 27 30 b 179 -14 79 30 108 -14 b 297 102 259 -14 297 43 b 245 166 297 147 271 166 b 197 115 219 166 197 145 b 236 72 197 88 216 72 b 259 79 251 72 255 79 b 264 75 262 79 264 78 b 258 60 264 72 261 66 b 229 45 252 50 242 45 b 117 95 186 45 173 95 b 85 86 98 95 89 86 b 102 111 85 86 95 104 l 333 338 b 351 370 344 350 351 359 b 333 386 351 380 343 386 z"},ornamentTrill:{x_min:0,x_max:521,y_min:-10,y_max:390,ha:400,o:"m 383 562 b 364 557 377 562 369 559 l 294 534 b 269 511 281 530 275 526 l 217 384 b 206 367 212 370 210 367 b 179 380 200 367 192 374 b 118 393 158 389 140 393 b 0 292 50 393 0 353 b 95 210 0 248 30 210 b 140 213 112 210 131 213 b 144 209 143 213 144 212 b 140 194 144 206 143 202 l 124 156 b 96 58 108 117 96 88 b 179 -14 96 17 124 -14 b 325 153 253 -14 325 46 b 307 251 325 187 320 219 b 302 265 304 258 302 261 b 334 294 302 274 311 281 l 343 298 b 455 348 393 328 428 348 b 474 327 468 348 474 344 b 465 285 474 312 469 295 l 360 24 b 356 9 357 17 356 13 b 372 0 356 3 360 0 l 442 0 b 465 17 455 0 459 3 l 559 251 b 655 351 577 298 624 351 b 670 343 664 351 670 348 b 638 285 670 330 638 325 b 690 239 638 256 660 239 b 750 318 724 239 750 268 b 675 395 750 360 729 395 b 586 350 638 395 608 374 b 566 330 573 336 572 330 b 553 361 559 330 564 340 b 490 393 543 380 521 393 b 347 348 432 393 377 364 b 312 333 328 338 320 333 b 308 337 310 333 308 334 b 315 359 308 343 312 351 l 387 537 b 392 553 390 544 392 549 b 383 562 392 559 389 562 z m 118 360 b 192 325 134 360 192 347 b 186 307 192 321 189 314 l 180 292 b 148 265 173 274 167 269 b 98 258 130 261 112 258 b 39 301 50 258 39 281 b 118 360 39 327 60 360 z m 272 240 b 292 151 285 240 292 164 b 212 30 292 88 253 30 b 196 48 200 30 196 37 b 207 92 196 59 202 78 b 264 230 207 94 209 94 b 272 240 266 238 268 240 z"},ornamentTurn:{x_min:0,x_max:460,y_min:0,y_max:218,ha:218,o:"m 534 314 b 454 251 490 314 454 294 b 505 199 454 219 475 199 b 579 232 547 199 549 232 b 626 164 603 232 626 202 b 533 72 626 102 583 72 b 377 180 487 72 439 111 b 150 312 307 258 243 312 b 0 148 55 312 0 240 b 128 0 0 45 66 0 b 209 63 173 0 209 20 b 157 115 209 95 187 115 b 84 82 115 115 114 82 b 36 150 59 82 36 112 b 130 242 36 212 79 242 b 285 134 176 242 223 203 b 513 1 356 56 419 1 b 662 166 608 1 662 73 b 534 314 662 269 596 314 z"},ornamentTurnSlash:{x_min:0,x_max:460,y_min:-90,y_max:306,ha:396,o:"m 333 441 b 310 418 315 441 310 433 l 310 274 b 302 252 310 258 308 252 b 261 278 294 252 287 262 b 150 311 228 298 192 311 b 0 147 55 311 0 239 b 128 -1 0 43 66 -1 b 209 62 173 -1 209 19 b 157 114 209 94 187 114 b 84 81 115 114 114 81 b 36 148 59 81 36 111 b 130 240 36 210 79 240 b 285 128 176 240 222 197 b 307 79 304 108 307 105 l 307 -107 b 330 -130 307 -122 312 -130 b 353 -107 347 -130 353 -122 l 353 37 b 360 59 353 53 353 59 b 402 33 369 59 376 49 b 513 0 435 13 471 0 b 662 164 608 0 662 72 b 534 312 662 268 596 312 b 454 249 490 312 454 292 b 505 197 454 217 475 197 b 579 230 547 197 549 230 b 626 163 603 230 626 200 b 533 71 626 101 583 71 b 377 183 487 71 441 114 b 356 232 359 203 356 206 l 356 418 b 333 441 356 433 350 441 z"},ornamentMordent:{x_min:1,x_max:729,y_min:-73,y_max:319,ha:392,o:"m 546 265 l 546 459 l 501 459 l 501 216 l 459 167 b 439 167 454 160 445 160 b 302 327 387 228 310 317 b 258 353 291 338 282 351 b 226 340 245 353 238 348 l 20 107 b 1 73 12 98 1 84 b 30 59 1 65 9 59 b 88 94 53 59 73 79 b 144 143 107 109 124 127 b 176 161 158 154 168 161 b 197 144 183 161 189 156 l 323 10 b 351 0 328 3 340 0 b 377 9 361 0 372 3 b 498 114 392 17 475 94 l 498 -105 l 544 -105 l 544 153 b 562 160 550 157 556 160 b 585 144 569 160 576 156 b 710 10 590 135 697 24 b 737 0 716 3 727 0 b 765 9 749 0 759 3 b 1030 295 776 17 1011 274 l 1032 300 b 1050 328 1041 308 1050 318 b 1012 353 1050 343 1024 353 b 986 343 1002 353 994 348 b 854 190 971 330 871 206 b 828 176 842 180 835 176 b 802 190 818 176 809 183 b 681 333 791 202 696 320 b 645 353 668 344 657 353 b 613 340 634 353 626 350 b 580 304 600 330 590 315 z"},ornamentShortTrill:{x_min:0,x_max:725,y_min:0,y_max:245,ha:245,o:"m 429 167 l 301 325 b 256 353 291 338 282 350 b 225 340 246 353 238 350 b 16 105 158 268 88 186 b 0 72 9 96 0 86 b 29 58 0 63 7 58 b 71 76 42 58 55 62 l 158 154 b 174 160 163 158 168 160 b 197 143 181 160 187 154 b 321 10 203 135 310 24 b 350 0 327 3 338 0 b 377 7 361 0 372 3 l 533 148 b 554 160 543 158 550 160 b 577 143 562 160 566 156 b 703 10 585 135 690 24 b 732 0 708 3 720 0 b 759 7 743 0 753 3 b 1024 294 769 16 1005 272 b 1044 327 1032 305 1044 321 b 1005 353 1044 341 1018 353 b 979 343 996 353 988 348 b 848 189 963 330 864 204 b 821 174 837 179 828 174 b 796 189 811 174 804 181 b 674 331 783 202 688 318 b 641 351 662 343 651 351 b 606 340 628 351 619 350 b 573 304 593 328 583 315 b 444 167 533 259 491 213 b 429 167 439 161 433 161 z"},ornamentTremblement:{x_min:1,x_max:985,y_min:0,y_max:244,ha:244,o:"m 678 325 b 634 351 667 338 657 350 b 602 338 621 351 613 348 l 448 167 b 439 167 446 164 441 164 l 302 325 b 258 351 291 338 281 350 b 228 338 245 351 238 348 b 193 304 215 328 204 315 l 19 107 b 1 72 13 96 1 76 b 30 58 1 63 9 58 b 89 92 52 58 73 78 l 144 141 b 148 144 145 143 147 143 b 176 160 160 153 170 160 b 199 143 183 160 189 154 b 324 10 204 134 311 23 b 351 0 330 3 340 0 b 379 7 363 0 373 3 l 530 148 b 552 160 536 154 546 160 b 575 143 559 160 564 154 b 698 10 580 134 687 23 b 727 0 704 3 716 0 b 755 7 739 0 749 3 l 907 147 b 930 160 922 158 923 160 b 952 143 937 160 943 154 l 1077 10 b 1107 0 1084 3 1096 0 b 1133 7 1117 0 1128 3 b 1398 294 1143 16 1380 272 b 1418 327 1407 305 1418 321 b 1381 351 1418 343 1394 351 b 1354 341 1371 351 1362 348 b 1223 189 1338 328 1238 204 b 1195 174 1211 179 1202 174 b 1171 189 1185 174 1178 181 b 1048 331 1158 200 1063 318 b 1012 351 1035 343 1024 351 b 981 338 1002 351 994 350 b 948 304 968 328 958 315 b 827 166 907 258 865 212 b 815 166 824 163 818 163 b 678 325 760 226 732 264 z"},ornamentPrecompAppoggTrill:{x_min:0,x_max:1119,y_min:0,y_max:481,ha:481,o:"m 1015 163 b 873 328 963 223 880 318 b 828 354 860 344 847 353 b 796 341 816 354 809 351 b 763 305 783 331 773 317 b 642 168 721 261 681 215 b 636 163 641 167 639 164 b 494 328 585 223 501 318 b 449 354 481 344 468 353 b 418 341 438 354 431 351 b 384 305 405 331 395 317 b 264 168 343 261 302 215 l 242 144 b 144 88 232 124 171 88 b 79 197 81 88 79 189 l 79 648 b 60 693 79 683 71 693 b 52 691 58 693 55 693 b 0 616 3 672 0 625 l 0 207 b 121 0 0 40 68 0 b 249 68 168 0 232 53 b 279 94 262 75 271 86 b 336 144 298 111 315 128 b 367 163 350 156 360 163 b 389 145 374 163 380 157 b 514 12 395 137 501 26 b 543 1 520 4 531 1 b 569 9 553 1 563 4 b 636 73 576 14 605 43 l 658 94 b 714 144 677 111 694 128 b 746 163 729 156 739 163 b 768 145 753 163 759 157 b 893 12 773 137 880 26 b 922 1 899 4 910 1 b 948 9 932 1 942 4 l 1012 71 b 1037 94 1022 78 1030 86 b 1092 144 1054 111 1073 128 b 1123 161 1106 156 1115 161 b 1146 145 1130 161 1136 157 b 1270 12 1152 137 1259 26 b 1299 1 1276 4 1287 1 b 1326 9 1310 1 1320 4 b 1591 297 1336 19 1572 275 b 1611 328 1600 307 1611 320 b 1574 354 1611 343 1585 354 b 1548 344 1565 354 1555 350 b 1416 192 1532 331 1431 206 b 1388 177 1404 181 1395 177 b 1365 190 1380 177 1371 184 b 1243 333 1352 203 1256 321 b 1205 354 1228 346 1217 354 b 1174 341 1195 354 1187 351 b 1140 305 1161 330 1152 317 z"},ornamentPrecompSlideTrillDAnglebert:{x_min:2,x_max:1150,y_min:-367,y_max:245,ha:612,o:"m 1058 160 b 916 327 1007 220 923 317 b 871 353 903 343 890 351 b 840 340 860 353 852 350 b 806 304 827 330 816 315 b 685 167 765 259 724 213 l 680 160 l 615 235 b 419 344 582 275 523 344 b 3 -144 258 344 3 26 b 4 -168 3 -153 3 -160 b 246 -482 24 -315 99 -422 b 458 -528 340 -521 410 -528 b 514 -526 485 -528 504 -526 b 552 -508 531 -526 552 -517 b 514 -497 552 -503 541 -498 l 503 -497 b 194 -390 432 -494 298 -488 b 69 -151 194 -390 69 -279 b 184 96 69 -60 128 27 b 328 183 202 118 258 183 b 477 96 413 183 454 118 b 559 10 510 62 552 19 b 588 0 566 3 576 0 b 613 7 598 0 609 3 b 723 112 622 14 681 73 b 789 161 733 122 776 161 b 811 144 796 161 802 156 b 936 10 816 135 923 24 b 965 0 942 3 953 0 b 991 7 975 0 985 3 b 1051 66 996 12 1022 37 b 1081 92 1063 73 1073 84 b 1136 143 1099 109 1117 127 b 1168 160 1151 154 1159 160 b 1191 144 1175 160 1181 156 b 1315 10 1197 135 1303 24 b 1344 0 1320 3 1332 0 b 1371 7 1355 0 1365 3 b 1636 295 1381 17 1617 274 b 1656 327 1644 305 1656 318 b 1619 353 1656 341 1630 353 b 1593 343 1610 353 1600 348 b 1460 190 1577 330 1476 204 b 1433 176 1449 180 1440 176 b 1410 189 1424 176 1416 183 b 1287 331 1397 202 1300 320 b 1250 353 1273 344 1261 353 b 1218 340 1240 353 1231 350 b 1185 304 1205 328 1197 315 z"},ornamentPrecompSlideTrillBach:{x_min:0,x_max:1048,y_min:-367,y_max:331,ha:698,o:"m 1038 477 l 979 477 l 979 238 l 912 160 b 769 327 858 220 775 317 b 724 353 756 343 743 351 b 693 340 713 353 706 350 b 660 304 680 330 670 315 b 539 167 618 259 577 213 b 533 161 536 166 534 163 b 390 327 480 220 396 317 b 346 353 377 343 364 351 l 340 353 b 308 340 330 353 321 350 b 275 304 295 330 285 315 b 117 122 220 243 168 186 b 0 -144 68 62 0 -48 b 1 -168 0 -153 0 -160 b 243 -482 22 -315 96 -422 b 455 -528 337 -521 408 -528 b 511 -526 482 -528 501 -526 b 549 -508 528 -526 549 -517 b 511 -497 549 -503 539 -498 l 500 -497 b 192 -390 429 -494 295 -488 b 68 -177 192 -390 84 -298 b 66 -151 66 -168 66 -160 b 189 105 66 -58 127 35 b 232 143 203 118 216 131 b 264 161 246 154 256 161 b 285 144 271 161 276 156 b 410 10 291 135 397 24 b 439 0 416 3 428 0 b 465 7 449 0 459 3 l 531 72 b 554 92 540 78 547 86 b 611 143 573 109 590 127 b 642 161 625 154 635 161 b 664 144 649 161 655 156 b 789 10 670 135 776 24 b 818 0 795 3 806 0 b 844 7 828 0 838 3 b 904 66 850 12 876 37 b 935 92 916 73 924 84 b 979 134 949 107 963 121 l 979 -88 l 1037 -88 l 1037 151 l 1044 144 b 1168 10 1050 135 1156 24 b 1197 0 1174 3 1185 0 b 1224 7 1208 0 1218 3 b 1489 295 1234 17 1470 274 b 1509 327 1498 305 1509 318 b 1472 353 1509 341 1483 353 b 1446 343 1463 353 1453 348 b 1313 190 1430 330 1329 204 b 1286 176 1302 180 1293 176 b 1263 189 1277 176 1269 183 b 1140 331 1250 202 1153 320 b 1103 353 1126 344 1115 353 b 1071 340 1093 353 1084 350 b 1038 304 1058 328 1050 315 z"},ornamentPrecompTrillSuffixDandrieu:{x_min:0,x_max:949,y_min:0,y_max:381,ha:381,o:"m 1367 314 b 1250 521 1367 419 1318 482 b 1107 549 1211 537 1145 549 b 1083 546 1096 549 1087 549 b 1066 528 1071 540 1066 534 b 1079 520 1066 524 1070 520 b 1323 351 1187 517 1323 487 b 1201 171 1323 269 1260 219 b 1194 166 1201 171 1198 168 b 1056 327 1142 226 1063 317 b 1011 353 1043 343 1030 351 b 979 340 999 353 992 350 b 946 304 966 330 956 315 b 825 167 904 259 864 213 l 821 161 b 678 327 768 222 685 317 b 634 353 665 343 652 351 b 602 340 622 353 615 350 b 569 304 589 330 579 315 b 448 167 527 259 487 213 l 444 161 b 301 327 390 222 308 317 b 256 353 288 343 275 351 b 225 340 245 353 238 350 b 192 304 212 330 202 315 b 71 167 150 259 109 213 b 17 105 52 147 36 127 b 0 73 10 98 0 84 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 174 161 157 154 167 161 b 196 144 181 161 187 156 b 321 10 202 135 308 24 b 350 0 327 3 338 0 b 376 7 360 0 370 3 b 485 112 384 14 444 73 b 552 161 495 122 539 161 b 573 144 559 161 564 156 b 698 10 579 135 685 24 b 727 0 704 3 716 0 b 753 7 737 0 747 3 b 863 112 762 14 821 73 b 929 161 873 122 916 161 b 950 144 936 161 942 156 b 1076 10 956 135 1063 24 b 1104 0 1081 3 1093 0 b 1130 7 1115 0 1125 3 b 1236 108 1139 14 1195 69 b 1367 314 1297 160 1367 233 z"},ornamentPrecompDoubleCadenceUpperPrefix:{x_min:0,x_max:1278,y_min:0,y_max:247,ha:247,o:"m 1801 356 b 1776 346 1793 356 1783 351 b 1642 192 1760 333 1659 206 b 1614 177 1630 181 1621 177 b 1591 190 1606 177 1597 184 b 1469 334 1578 203 1482 323 b 1430 356 1453 347 1441 356 b 1398 343 1420 356 1411 353 b 1365 307 1385 331 1377 318 l 1240 164 b 1097 330 1187 226 1104 320 b 1053 356 1084 346 1071 354 b 1021 343 1041 356 1034 353 b 988 307 1008 333 998 318 b 865 168 946 262 904 216 l 861 163 b 717 330 808 223 724 320 b 672 356 704 346 691 354 b 641 343 661 356 654 353 b 608 307 628 333 618 318 b 485 168 566 262 524 216 l 455 134 b 284 46 409 88 351 46 b 16 285 148 46 32 265 b 3 295 9 292 4 295 b 0 291 1 295 0 292 b 1 285 0 288 1 285 b 308 0 42 190 157 0 b 530 120 415 1 482 63 b 559 144 539 128 549 137 b 590 163 573 156 583 163 b 612 145 598 163 603 157 b 739 10 618 137 724 24 b 768 0 744 3 756 0 b 793 7 778 0 788 3 b 903 114 802 14 861 75 l 939 144 b 971 163 953 156 963 163 b 992 145 978 163 984 157 b 1119 10 998 137 1106 24 b 1148 0 1125 3 1136 0 b 1174 7 1158 0 1168 3 b 1284 114 1182 14 1241 75 b 1316 144 1282 115 1312 141 b 1348 161 1331 156 1339 161 b 1371 145 1355 161 1361 157 b 1496 10 1377 137 1485 24 b 1525 0 1502 3 1513 0 b 1552 7 1536 0 1547 3 b 1819 298 1562 17 1800 276 b 1840 330 1829 308 1840 320 b 1832 344 1840 334 1837 340 b 1801 356 1820 351 1810 356 z"},ornamentPrecompDoubleCadenceUpperPrefixTurn:{x_min:0,x_max:1277,y_min:-62,y_max:333,ha:395,o:"m 1273 202 l 1273 480 l 1230 480 l 1230 174 l 1097 328 b 1053 354 1084 344 1071 353 b 1021 341 1041 354 1034 351 b 988 305 1008 331 998 317 b 865 167 945 261 904 215 l 861 161 b 717 328 808 222 724 318 b 672 354 704 344 691 353 b 641 341 661 354 654 351 b 608 305 628 331 618 317 b 485 167 564 261 524 215 b 455 132 474 156 465 144 b 284 45 410 88 350 45 b 14 284 148 45 30 264 b 3 294 9 291 4 294 b 0 289 1 294 0 291 b 1 284 0 287 1 284 b 308 -1 42 189 157 -1 b 530 118 415 0 481 62 b 557 143 539 127 547 135 b 590 161 572 154 582 161 b 612 144 598 161 603 156 b 737 9 618 135 724 24 b 768 -1 743 1 755 -1 b 793 6 778 -1 788 1 b 903 112 802 13 861 73 l 937 143 b 971 161 953 154 963 161 b 992 144 978 161 984 156 b 1117 9 998 135 1104 24 b 1148 -1 1123 1 1136 -1 b 1174 6 1158 -1 1168 1 l 1230 60 l 1230 -89 l 1273 -89 l 1273 102 l 1283 112 b 1348 160 1295 125 1332 160 b 1371 144 1355 160 1361 156 b 1496 9 1377 135 1483 24 b 1525 -1 1502 1 1513 -1 b 1552 6 1536 -1 1547 1 b 1819 297 1562 16 1800 275 b 1839 328 1827 307 1839 320 b 1801 354 1839 343 1813 354 b 1776 344 1793 354 1783 350 b 1642 190 1760 331 1657 206 b 1614 176 1630 180 1621 176 b 1591 189 1606 176 1597 183 b 1467 333 1578 203 1480 321 b 1430 354 1453 346 1441 354 b 1398 341 1420 354 1411 351 b 1365 305 1385 330 1377 317 z"},ornamentPrecompTrillLowerSuffix:{x_min:0,x_max:859,y_min:-222,y_max:246,ha:468,o:"m 1164 217 b 1031 351 1138 259 1063 351 b 1011 337 1020 351 1024 347 b 828 167 952 291 886 217 l 824 164 b 683 328 772 225 690 318 b 638 354 670 344 657 353 b 606 341 626 354 619 351 b 573 305 593 331 583 317 b 451 167 530 261 490 215 l 446 161 b 302 328 393 222 310 318 b 258 354 289 344 276 353 b 226 341 246 354 239 351 b 193 305 213 331 203 317 b 71 167 150 261 109 215 b 17 105 52 147 36 127 b 0 73 10 98 0 84 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 176 161 157 154 168 161 b 197 144 183 161 189 156 b 323 9 203 135 310 23 b 353 -1 328 1 340 -1 b 379 6 363 -1 373 1 b 488 112 387 13 446 73 l 523 143 b 556 161 539 154 549 161 b 577 144 563 161 569 156 b 703 9 583 135 690 23 b 733 -1 708 1 721 -1 b 759 6 743 -1 753 1 b 868 112 768 13 827 73 b 955 183 878 122 943 183 b 1081 107 965 183 1031 153 b 1156 -89 1128 63 1156 6 l 1156 -102 b 948 -297 1156 -204 1048 -297 b 806 -271 904 -297 850 -282 l 792 -266 b 801 -288 792 -268 795 -282 b 948 -320 809 -297 880 -320 b 1237 -50 1092 -320 1237 -199 b 1164 217 1237 75 1218 122 z"},brassScoop:{x_min:1,x_max:320,y_min:-373,y_max:13,ha:386,o:"m 35 -537 b 461 -12 194 -518 461 -289 b 438 19 461 13 451 19 b 410 -9 425 19 413 9 b 35 -425 357 -366 92 -403 b 1 -482 13 -433 1 -438 l 1 -505 b 26 -537 1 -526 3 -537 z"},brassDoitMedium:{x_min:0,x_max:489,y_min:-40,y_max:346,ha:386,o:"m 33 -58 b 704 468 255 -58 683 186 b 681 498 704 494 693 498 b 654 471 668 498 658 488 b 33 55 550 118 91 76 b 0 -3 12 46 0 42 l 0 -26 b 24 -58 0 -46 1 -58 z"},brassFallLipShort:{x_min:1,x_max:293,y_min:-345,y_max:42,ha:387,o:"m 22 60 b 1 35 4 60 1 52 l 1 6 b 26 -50 3 -40 10 -43 b 32 -52 27 -50 30 -50 b 376 -469 85 -73 327 -111 b 400 -497 379 -487 387 -497 b 422 -467 412 -497 422 -491 b 32 60 422 -187 177 40 z"},brassLiftMedium:{x_min:0,x_max:811,y_min:0,y_max:852,ha:852,o:"m 1138 1220 b 1135 1225 1135 1223 1135 1224 b 1129 1227 1133 1227 1130 1227 b 1117 1207 1122 1227 1117 1212 l 1117 1201 b 1109 1164 1117 1187 1117 1172 b 1100 1156 1107 1161 1104 1158 b 959 1104 1058 1128 995 1140 b 929 1032 936 1081 929 1056 b 932 1007 929 1024 930 1015 b 923 976 932 995 930 985 l 914 971 b 773 919 873 942 809 955 b 743 847 750 896 743 870 b 746 821 743 838 744 829 b 737 791 746 809 744 799 l 729 783 b 588 733 687 756 624 769 b 557 661 564 710 557 684 b 560 635 557 652 559 644 b 552 605 560 624 559 612 l 543 598 b 402 547 501 570 438 583 b 372 475 379 524 372 498 b 374 449 372 467 373 458 b 366 419 374 438 373 426 l 357 412 b 216 361 315 384 252 397 b 186 289 193 338 186 312 b 189 264 186 281 187 272 b 180 233 189 252 187 240 b 171 226 177 232 174 229 b 30 176 130 199 66 212 b 0 104 7 153 0 128 b 33 0 0 88 14 0 b 49 17 40 0 49 10 b 71 63 52 35 56 49 b 212 115 102 95 154 59 b 239 186 230 134 239 160 b 236 210 239 194 238 202 b 256 249 239 225 243 236 b 397 301 288 281 340 245 b 425 372 416 320 425 346 b 422 396 425 380 423 387 b 442 435 425 410 429 422 b 583 487 474 467 526 431 b 611 557 602 505 611 531 b 608 582 611 566 609 573 b 628 621 611 596 615 608 b 769 672 660 652 711 618 b 796 743 788 691 796 717 b 793 768 796 752 795 759 b 814 806 796 782 801 793 b 955 858 845 838 897 804 b 982 929 973 877 982 903 b 979 953 982 937 981 945 b 999 992 982 968 986 979 b 1140 1045 1031 1024 1083 989 b 1168 1116 1161 1066 1168 1090 b 1138 1220 1168 1162 1145 1207 z"},brassFallRoughMedium:{x_min:0,x_max:811,y_min:0,y_max:852,ha:852,o:"m 30 1220 b 0 1116 23 1207 0 1162 b 27 1045 0 1090 7 1066 b 168 992 85 989 137 1024 b 189 953 181 979 186 968 b 186 929 187 945 186 937 b 213 858 186 903 194 877 b 354 806 271 804 323 838 b 374 768 367 793 372 782 b 372 743 373 759 372 752 b 399 672 372 717 380 691 b 540 621 456 618 508 652 b 560 582 553 608 557 596 b 557 557 559 573 557 566 b 585 487 557 531 566 505 b 726 435 642 431 694 467 b 746 396 739 422 743 410 b 743 372 744 387 743 380 b 770 301 743 346 752 320 b 912 249 828 245 880 281 b 932 210 924 236 929 225 b 929 186 930 202 929 194 b 956 115 929 160 937 134 b 1097 63 1014 59 1066 95 b 1119 17 1112 49 1116 35 b 1135 0 1119 10 1128 0 b 1168 104 1153 0 1168 91 b 1138 176 1168 128 1161 153 b 996 226 1102 212 1038 199 b 988 233 994 229 991 232 b 979 264 981 240 979 252 b 982 289 981 272 982 281 b 952 361 982 312 975 338 b 811 412 916 397 852 384 l 802 419 b 793 449 795 426 793 438 b 796 475 795 458 796 467 b 766 547 796 498 789 524 b 625 598 730 583 667 570 l 616 605 b 608 635 609 612 608 624 b 611 661 609 644 611 652 b 580 733 611 684 603 710 b 439 783 544 769 481 756 l 431 791 b 422 821 423 799 422 809 b 425 847 423 829 425 838 b 395 919 425 870 418 896 b 253 971 359 955 295 942 l 245 976 b 236 1007 238 985 236 995 b 239 1032 238 1015 239 1024 b 209 1104 239 1056 232 1081 b 68 1156 173 1140 109 1128 b 59 1164 63 1158 60 1161 b 50 1201 50 1172 50 1187 l 50 1207 b 39 1227 50 1212 46 1227 b 33 1225 37 1227 35 1227 b 30 1220 33 1224 33 1223 z"},brassBend:{x_min:0,x_max:392,y_min:0,y_max:282,ha:282,o:"m 282 0 b 552 72 369 0 456 23 b 564 92 560 75 564 84 l 564 383 b 541 406 564 395 554 406 b 518 383 528 406 518 395 l 518 107 b 282 46 435 65 357 46 b 46 107 207 46 130 65 l 46 383 b 23 406 46 395 36 406 b 0 383 10 406 0 395 l 0 92 b 13 72 0 84 4 75 b 282 0 108 23 196 0 z"},brassMuteClosed:{x_min:0,x_max:272,y_min:0,y_max:272,ha:272,o:"m 392 219 l 219 219 l 219 392 l 173 392 l 173 219 l 0 219 l 0 173 l 173 173 l 173 0 l 219 0 l 219 173 l 392 173 z"},brassMuteOpen:{x_min:0,x_max:304,y_min:0,y_max:304,ha:304,o:"m 219 0 b 438 219 340 0 438 98 b 219 438 438 340 340 438 b 0 219 98 438 0 340 b 219 0 0 98 98 0 z m 219 392 b 392 219 314 392 392 314 b 219 46 392 124 314 46 b 46 219 124 46 46 124 b 219 392 46 314 124 392 z"},brassFlip:{x_min:0,x_max:379,y_min:0,y_max:282,ha:282,o:"m 523 0 b 541 9 530 0 536 3 b 546 22 544 13 546 17 b 536 42 546 29 541 36 l 36 402 b 23 406 33 405 27 406 b 0 383 12 406 0 395 l 0 23 b 23 0 0 10 10 0 b 46 23 36 0 46 10 l 46 337 l 508 4 b 523 0 513 1 517 0 z"},brassJazzTurn:{x_min:0,x_max:620,y_min:0,y_max:245,ha:245,o:"m 792 190 b 765 176 780 179 772 176 b 740 190 755 176 747 183 b 629 325 727 202 644 312 b 593 347 616 338 605 347 b 562 334 583 346 575 344 b 528 298 549 323 539 310 l 406 176 b 389 168 406 176 399 168 b 374 176 384 168 379 170 b 245 325 360 192 245 325 b 200 353 232 343 219 351 b 168 340 190 353 181 350 l 17 156 b 0 121 10 147 0 132 b 16 107 0 114 4 108 b 84 143 26 107 76 137 b 118 160 92 150 108 160 b 141 143 125 160 131 154 b 265 10 147 135 253 24 b 294 0 271 3 282 0 b 321 7 305 0 315 3 b 498 160 321 7 478 158 b 521 143 505 160 513 154 b 647 10 528 135 635 24 b 675 0 652 3 664 0 b 703 7 687 0 697 3 b 874 186 713 16 855 164 b 893 220 881 196 893 212 b 873 245 890 235 883 243 b 796 194 847 245 815 213 z"},brassSmear:{x_min:1,x_max:306,y_min:0,y_max:170,ha:170,o:"m 193 79 b 308 0 219 50 264 0 b 439 117 396 0 438 102 b 439 120 439 118 439 118 l 441 125 b 441 128 441 127 441 127 b 433 141 441 135 439 141 b 416 130 429 141 423 137 b 343 94 390 107 370 94 b 269 153 315 94 294 121 l 265 158 b 144 245 239 190 180 245 b 6 134 62 245 10 143 b 1 114 3 125 1 118 b 7 107 1 108 4 107 b 36 122 13 107 22 112 b 92 151 55 137 65 151 b 183 89 125 151 161 112 b 189 84 184 88 187 86 z"},stringsDownBow:{x_min:0,x_max:312,y_min:0,y_max:318,ha:318,o:"m 37 458 b 0 420 17 458 0 441 l 0 17 b 17 0 0 7 9 0 l 37 0 b 55 17 46 0 55 7 l 55 253 b 225 278 55 269 140 278 b 395 253 310 278 395 269 l 395 17 b 413 0 395 7 403 0 l 432 0 b 449 17 441 0 449 7 l 449 420 b 412 458 449 441 432 458 z"},stringsUpBow:{x_min:1,x_max:249,y_min:1,y_max:495,ha:494,o:"m 181 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 z"},stringsHarmonic:{x_min:0,x_max:200,y_min:0,y_max:200,ha:200,o:"m 288 144 b 144 288 288 225 223 288 b 0 144 65 288 0 225 b 144 0 0 65 65 0 b 288 144 223 0 288 65 z m 144 249 b 249 144 203 249 249 203 b 144 39 249 86 203 39 b 39 144 86 39 39 86 b 144 249 39 203 86 249 z"},pluckedSnapPizzicatoAbove:{x_min:0,x_max:200,y_min:0,y_max:300,ha:300,o:"m 0 144 b 144 0 0 63 65 0 b 288 144 223 0 288 63 b 167 285 288 215 235 275 l 167 432 l 121 432 l 121 285 b 0 144 52 275 0 215 z m 121 246 l 121 144 l 167 144 l 167 246 b 249 144 213 236 249 193 b 144 39 249 85 202 39 b 39 144 85 39 39 85 b 121 246 39 193 73 236 z"},pluckedSnapPizzicatoBelow:{x_min:0,x_max:200,y_min:0,y_max:300,ha:300,o:"m 288 288 b 144 432 288 369 223 432 b 0 288 65 432 0 369 b 121 145 0 216 52 157 l 121 0 l 167 0 l 167 145 b 288 288 235 157 288 216 z m 167 186 l 167 288 l 121 288 l 121 186 b 39 288 75 196 39 238 b 144 393 39 347 86 393 b 249 288 203 393 249 347 b 167 186 249 238 215 196 z"},pluckedLeftHandPizzicato:{x_min:0,x_max:272,y_min:0,y_max:272,ha:272,o:"m 392 219 l 219 219 l 219 392 l 173 392 l 173 219 l 0 219 l 0 173 l 173 173 l 173 0 l 219 0 l 219 173 l 392 173 z"},keyboardPedalPed:{x_min:0,x_max:1019,y_min:-8,y_max:555,ha:563,o:"m 413 799 b 179 749 327 798 261 789 b 0 517 107 713 0 632 b 122 376 0 454 37 376 b 240 540 189 376 240 452 b 225 586 240 579 233 586 b 204 549 213 586 212 573 b 138 480 199 527 181 480 b 85 549 96 480 85 517 l 85 554 b 353 762 89 690 230 762 b 373 752 364 762 373 760 b 351 708 373 740 360 723 b 274 546 330 675 274 585 b 353 416 274 508 333 444 b 412 304 372 390 412 351 b 382 228 412 275 403 256 b 334 190 363 202 361 200 b 147 29 271 167 147 88 b 196 -12 147 4 171 -12 b 343 108 239 -12 279 33 l 363 132 b 387 150 370 141 376 150 b 543 -4 445 150 467 -4 b 631 42 567 -4 586 0 l 668 78 b 685 89 674 84 680 89 b 696 75 688 89 690 86 b 809 -9 717 29 753 -9 b 946 66 854 -9 894 13 b 988 107 971 92 981 107 b 1002 89 994 107 996 99 b 1152 -4 1030 36 1077 -4 b 1329 248 1238 -4 1329 82 b 792 717 1329 556 1047 665 b 766 720 785 719 775 720 b 747 703 752 720 747 711 b 780 680 747 693 756 685 b 1223 222 1028 621 1223 504 b 1152 39 1223 122 1205 39 b 1073 229 1104 39 1073 132 b 1132 423 1073 314 1086 377 b 1142 442 1140 432 1142 436 b 1126 458 1142 451 1136 458 b 1093 446 1119 458 1109 455 b 975 216 1022 408 975 337 l 975 190 b 943 121 975 160 972 150 b 852 69 899 76 877 69 b 776 148 816 69 786 117 b 773 163 775 154 773 158 b 786 177 773 167 776 170 l 801 187 b 937 366 867 235 937 284 b 844 454 937 422 900 454 b 665 217 711 454 665 331 b 671 153 665 197 667 176 l 671 147 b 662 134 671 143 670 140 b 605 111 639 118 625 111 b 521 160 572 111 546 135 b 451 203 497 184 474 197 b 426 212 435 207 426 206 b 436 230 426 216 429 220 b 510 389 464 269 510 340 b 429 521 510 435 480 462 b 369 629 387 570 369 599 b 402 720 369 648 384 691 b 462 763 425 759 446 763 b 611 624 540 763 611 704 b 564 575 611 592 590 575 b 501 602 540 575 520 582 b 474 622 492 611 487 622 b 459 603 465 622 459 615 b 603 471 459 570 510 471 b 711 588 670 471 711 524 b 422 799 711 742 554 799 z m 815 403 b 848 343 838 403 848 383 b 780 226 848 295 824 261 b 765 217 773 220 768 217 b 759 228 762 217 759 220 b 756 282 757 245 756 262 b 815 403 756 346 772 403 z m 1405 124 b 1344 62 1369 124 1344 98 b 1405 0 1344 26 1369 0 b 1467 62 1441 0 1467 26 b 1405 124 1467 98 1441 124 z"},keyboardPedalUp:{x_min:0,x_max:450,y_min:0,y_max:450,ha:450,o:"m 582 396 b 516 367 554 396 533 384 b 465 340 495 347 487 340 l 458 340 b 412 377 432 340 412 348 b 432 409 412 387 419 396 l 438 415 b 490 429 451 428 464 429 b 575 501 534 429 575 452 b 501 575 575 541 541 575 b 429 490 452 575 429 534 b 415 438 429 464 428 451 l 409 432 b 377 412 396 419 387 412 b 340 458 348 412 340 432 l 340 465 b 367 516 340 487 347 495 b 396 582 384 533 396 554 b 324 648 396 625 363 648 b 252 582 285 648 252 625 b 281 516 252 554 264 533 b 308 465 301 495 308 487 l 308 458 b 271 412 308 432 300 412 b 239 432 261 412 252 419 l 233 438 b 219 490 220 451 219 464 b 147 575 219 534 196 575 b 73 501 107 575 73 541 b 158 429 73 452 114 429 b 210 415 184 429 197 428 l 216 409 b 236 377 229 396 236 387 b 190 340 236 348 216 340 l 183 340 b 132 367 161 340 153 347 b 66 396 115 384 94 396 b 0 324 23 396 0 363 b 66 252 0 285 23 252 b 132 281 94 252 115 264 b 183 308 153 301 161 308 l 190 308 b 236 271 216 308 236 300 b 216 239 236 261 229 252 l 210 233 b 158 219 197 220 184 219 b 73 147 114 219 73 196 b 147 73 73 107 107 73 b 219 158 196 73 219 114 b 233 210 219 184 220 197 l 239 216 b 271 236 252 229 261 236 b 308 190 300 236 308 216 l 308 183 b 281 132 308 161 301 153 b 252 66 264 115 252 94 b 324 0 252 23 285 0 b 396 66 363 0 396 23 b 367 132 396 94 384 115 b 340 183 347 153 340 161 l 340 190 b 377 236 340 216 348 236 b 409 216 387 236 396 229 l 415 210 b 429 158 428 197 429 184 b 501 73 429 114 452 73 b 575 147 541 73 575 107 b 490 219 575 196 534 219 b 438 233 464 219 451 220 l 432 239 b 412 271 419 252 412 261 b 458 308 412 300 432 308 l 465 308 b 516 281 487 308 495 301 b 582 252 533 264 554 252 b 648 324 625 252 648 285 b 582 396 648 363 625 396 z m 324 271 b 271 324 291 271 271 291 b 324 377 271 357 291 377 b 377 324 357 377 377 357 b 324 271 377 291 357 271 z"},pictChokeCymbal:{x_min:1,x_max:152,y_min:2,y_max:251,ha:249,o:"m 104 361 b 1 271 42 361 1 321 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 17 32 29 26 26 l 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 z"},wiggleArpeggiatoUp:{x_min:-33,x_max:292,y_min:0,y_max:119,ha:119,o:"m 130 171 b -39 68 16 171 -14 91 b -48 53 -45 62 -48 58 b -29 42 -48 46 -39 42 b -10 46 -23 42 -16 43 b 56 63 12 56 29 63 b 248 0 121 63 135 0 b 419 127 361 0 410 104 b 420 132 420 130 420 131 b 412 140 420 137 416 140 b 386 130 403 140 392 134 b 334 107 367 117 353 107 b 318 108 330 107 324 107 b 240 138 289 112 265 128 b 130 171 209 153 168 171 z"},arrowheadBlackUp:{x_min:0,x_max:228,y_min:0,y_max:299,ha:299,o:"m 166 431 b 0 20 111 274 0 30 b 16 0 0 12 6 0 l 17 1 b 166 50 43 16 160 50 b 310 1 171 50 289 13 l 311 0 b 328 20 321 0 328 12 b 166 431 328 30 220 274 z"},arrowheadBlackDown:{x_min:0,x_max:228,y_min:0,y_max:299,ha:299,o:"m 166 0 b 328 410 220 157 328 400 b 311 431 328 419 321 431 l 310 429 b 166 380 289 418 171 380 b 17 429 160 380 43 415 l 16 431 b 0 410 6 431 0 419 b 166 0 0 400 111 157 z"},arpeggiatoUp:{x_min:1,x_max:229,y_min:7,y_max:1511,ha:1504,o:"m 219 1848 l 330 1848 l 164 2176 l 1 1848 l 121 1848 b 92 1778 115 1822 101 1800 l 89 1773 b 59 1668 75 1741 59 1702 b 96 1555 59 1614 76 1580 b 99 1551 98 1554 99 1551 l 102 1547 b 124 1496 115 1531 124 1515 b 122 1482 124 1492 124 1488 b 92 1404 118 1453 102 1428 b 59 1293 78 1372 59 1332 b 105 1172 59 1234 81 1198 b 124 1120 118 1155 124 1143 l 122 1113 b 122 1110 122 1113 122 1112 b 92 1032 118 1081 102 1057 b 59 922 78 1001 59 960 b 115 792 59 855 86 816 b 124 760 121 782 124 773 b 122 744 124 756 124 750 b 92 667 118 716 102 693 b 59 556 78 635 59 595 b 108 433 59 495 82 458 b 124 389 117 420 124 408 b 122 374 124 384 124 379 b 92 298 118 346 102 323 l 89 292 b 59 186 75 261 59 222 b 163 19 59 73 140 42 b 177 10 168 13 173 10 b 189 29 184 10 189 19 b 184 48 189 35 187 42 b 167 114 174 69 167 85 b 230 305 167 179 229 193 b 181 423 230 357 209 396 b 167 484 173 442 167 458 b 230 675 167 547 229 563 b 179 796 230 729 206 769 b 167 850 171 812 167 827 b 230 1040 167 913 229 929 b 183 1158 230 1092 209 1130 b 167 1220 173 1178 167 1194 b 230 1411 167 1284 229 1300 b 186 1526 230 1462 210 1499 b 167 1594 176 1529 167 1584 b 230 1786 167 1659 229 1673 b 219 1848 230 1809 226 1829 z"},arpeggiatoDown:{x_min:1,x_max:229,y_min:-4,y_max:1500,ha:1504,o:"m 219 323 b 230 384 226 341 230 361 b 167 576 229 497 167 511 b 186 644 167 586 176 641 b 230 759 210 671 230 708 b 167 950 229 870 167 886 b 183 1012 167 976 173 992 b 230 1130 209 1040 230 1079 b 167 1320 229 1241 167 1257 b 179 1374 167 1344 171 1358 b 230 1495 206 1401 230 1441 b 167 1686 229 1607 167 1623 b 181 1747 167 1712 173 1728 b 230 1865 209 1774 230 1813 b 167 2056 229 1977 167 1992 b 184 2123 167 2085 174 2101 b 189 2141 187 2128 189 2136 b 177 2160 189 2151 184 2160 b 163 2151 173 2160 168 2157 b 59 1984 140 2128 59 2097 b 89 1878 59 1948 75 1909 l 92 1872 b 122 1796 102 1848 118 1824 b 124 1781 124 1791 124 1786 b 108 1737 124 1763 117 1750 b 59 1614 82 1712 59 1675 b 92 1503 59 1575 78 1535 b 122 1426 102 1477 118 1454 b 124 1410 124 1420 124 1414 b 115 1378 124 1397 121 1388 b 59 1248 86 1354 59 1315 b 92 1138 59 1210 78 1169 b 122 1060 102 1113 118 1089 b 122 1057 122 1058 122 1058 l 124 1050 b 105 998 124 1027 118 1015 b 59 877 81 972 59 936 b 92 766 59 838 78 798 b 122 688 102 742 118 717 b 124 674 124 683 124 678 b 102 624 124 655 115 639 l 99 619 b 96 615 99 619 98 616 b 59 503 76 590 59 556 b 89 397 59 468 75 429 l 92 392 b 121 323 101 370 115 348 l 1 323 l 164 -6 l 330 323 z"},repeat1Bar:{x_min:0,x_max:532,y_min:-250,y_max:279,ha:529,o:"m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 675 -71 b 586 -161 626 -71 586 -111 b 675 -251 586 -210 626 -251 b 766 -161 726 -251 766 -210 b 675 -71 766 -111 726 -71 z"},repeat2Bars:{x_min:0,x_max:762,y_min:-250,y_max:279,ha:529,o:"m 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 b 343 -360 331 -356 336 -360 l 485 -360 b 516 -340 498 -360 508 -348 z m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 1007 -71 b 917 -161 958 -71 917 -111 b 1007 -251 917 -210 958 -251 b 1097 -161 1057 -251 1097 -210 b 1007 -71 1097 -111 1057 -71 z"},repeat4Bars:{x_min:0,x_max:1232,y_min:-250,y_max:279,ha:529,o:"m 1767 380 b 1774 395 1771 386 1774 390 b 1765 402 1774 399 1771 402 l 1613 402 b 1587 380 1604 402 1597 393 l 1012 -340 b 1008 -350 1009 -343 1008 -347 b 1020 -360 1008 -356 1012 -360 l 1162 -360 b 1192 -340 1175 -360 1185 -348 z m 1436 380 b 1443 395 1440 386 1443 390 b 1434 402 1443 399 1440 402 l 1282 402 b 1256 380 1273 402 1266 393 l 681 -340 b 677 -350 678 -343 677 -347 b 688 -360 677 -356 681 -360 l 831 -360 b 861 -340 844 -360 854 -348 z m 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 b 343 -360 331 -356 336 -360 l 485 -360 b 516 -340 498 -360 508 -348 z m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 1683 -71 b 1594 -161 1634 -71 1594 -111 b 1683 -251 1594 -210 1634 -251 b 1774 -161 1734 -251 1774 -210 b 1683 -71 1774 -111 1734 -71 z"},repeatBarSlash:{x_min:0,x_max:532,y_min:-250,y_max:279,ha:529,o:"m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z"},csymDiminished:{x_min:0,x_max:473,y_min:0,y_max:473,ha:473,o:"m 341 681 b 0 341 153 681 0 530 b 341 0 0 153 153 0 b 681 341 530 0 681 153 b 341 681 681 530 530 681 z m 341 618 b 618 341 495 618 618 495 b 341 63 618 189 494 63 b 63 341 187 63 63 187 b 341 618 63 494 189 618 z"},csymHalfDiminished:{x_min:-16,x_max:488,y_min:-15,y_max:489,ha:504,o:"m 703 660 l 658 704 l 557 603 b 340 681 498 652 422 681 b -1 341 151 681 -1 530 b 78 124 -1 259 29 183 l -23 23 l 22 -22 l 122 79 b 340 0 181 30 258 0 b 680 341 528 0 680 153 b 602 559 680 423 651 500 z m 62 341 b 340 618 62 494 187 618 b 513 559 403 618 464 598 l 122 168 b 62 341 84 217 62 278 z m 616 341 b 340 63 616 189 492 63 b 167 124 276 63 216 85 l 557 514 b 616 341 596 465 616 405 z"},csymAugmented:{x_min:0,x_max:395,y_min:1,y_max:396,ha:395,o:"m 569 318 l 317 318 l 317 570 l 253 570 l 253 318 l 0 318 l 0 255 l 253 255 l 253 1 l 317 1 l 317 255 l 569 255 z"},csymMajorSeventh:{x_min:0,x_max:558,y_min:1,y_max:477,ha:476,o:"m 402 687 l 0 1 l 804 1 z m 402 562 l 693 65 l 111 65 z"},csymMinor:{x_min:0,x_max:325,y_min:216,y_max:260,ha:44,o:"m 468 374 l 0 374 l 0 311 l 468 311 z"},csymParensLeftTall:{x_min:1,x_max:185,y_min:0,y_max:997,ha:997,o:"m 266 48 b 261 65 266 55 264 62 b 92 719 157 212 92 400 b 262 1371 92 1037 154 1228 b 266 1394 266 1378 266 1394 l 266 1424 b 264 1436 266 1431 266 1436 b 259 1434 262 1436 259 1434 b 1 719 84 1261 1 1011 b 259 1 1 429 79 177 b 264 0 261 0 262 0 b 266 9 265 0 266 6 z"},csymParensRightTall:{x_min:-20,x_max:164,y_min:0,y_max:997,ha:997,o:"m -29 9 b -26 0 -29 6 -27 0 b -22 1 -24 0 -23 0 b 236 719 158 177 236 429 b -22 1434 236 1011 154 1261 b -26 1436 -22 1434 -24 1436 b -29 1424 -29 1436 -29 1431 l -29 1394 b -24 1371 -29 1394 -29 1378 b 145 719 84 1228 145 1037 b -23 65 145 400 81 212 b -29 48 -26 62 -29 55 z"},csymBracketLeftTall:{x_min:0,x_max:155,y_min:0,y_max:1e3,ha:1e3,o:"m 217 0 b 223 9 220 0 223 4 l 223 37 b 217 46 223 42 220 46 l 92 46 l 92 1394 l 217 1394 b 223 1403 220 1394 223 1398 l 223 1431 b 217 1440 223 1436 220 1440 l 6 1440 b 0 1436 3 1440 0 1439 l 0 4 b 6 0 0 1 3 0 z"},csymBracketRightTall:{x_min:1,x_max:156,y_min:0,y_max:1e3,ha:1e3,o:"m 219 0 b 225 4 222 0 225 1 l 225 1436 b 219 1440 225 1439 222 1440 l 7 1440 b 1 1431 4 1440 1 1436 l 1 1403 b 7 1394 1 1398 4 1394 l 132 1394 l 132 46 l 7 46 b 1 37 4 46 1 42 l 1 9 b 7 0 1 4 4 0 z"},csymParensLeftVeryTall:{x_min:0,x_max:122,y_min:0,y_max:993,ha:993,o:"m 176 32 b 171 49 176 39 174 46 b 60 716 104 194 60 399 b 173 1382 60 1032 101 1241 b 176 1405 176 1390 176 1405 l 176 1427 b 173 1430 176 1428 174 1430 b 0 716 40 1297 0 978 b 170 3 0 428 50 179 b 171 0 170 1 170 0 b 176 6 173 0 176 4 z"},csymParensRightVeryTall:{x_min:-15,x_max:107,y_min:0,y_max:993,ha:993,o:"m -22 6 b -17 0 -22 4 -19 0 b -16 3 -16 0 -16 1 b 154 716 104 179 154 428 b -19 1430 154 978 114 1297 b -22 1427 -20 1430 -22 1428 l -22 1405 b -19 1382 -22 1405 -22 1390 b 94 716 53 1241 94 1032 b -17 49 94 399 50 194 b -22 32 -20 46 -22 39 z"},csymDiagonalArrangementSlash:{x_min:0,x_max:999,y_min:0,y_max:1e3,ha:1e3,o:"m 1439 1380 l 1377 1440 l 0 60 l 62 0 z"},accSagittal5v7KleismaUp:{x_min:0,x_max:156,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 -35 b 135 -112 68 -86 99 -112 b 225 68 194 -112 225 -53 l 180 68 b 144 -4 180 20 168 -4 b 122 0 138 -4 131 -3 b 23 248 86 14 52 96 l 0 248 z"},accSagittal5v7KleismaDown:{x_min:0,x_max:156,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 23 -248 b 122 0 52 -96 86 -14 b 144 4 131 3 138 4 b 180 -68 168 4 180 -20 l 225 -68 b 135 112 225 53 194 112 b 45 35 99 112 68 86 l 45 517 l 0 517 z"},accSagittal5CommaUp:{x_min:0,x_max:156,y_min:-359,y_max:172,ha:531,o:"m 225 -517 l 225 248 l 203 248 l 0 -112 l 0 -284 l 180 33 l 180 -517 z"},accSagittal5CommaDown:{x_min:0,x_max:156,y_min:-172,y_max:359,ha:531,o:"m 180 517 l 180 -33 l 0 284 l 0 112 l 203 -248 l 225 -248 l 225 517 z"},accSagittal7CommaUp:{x_min:0,x_max:156,y_min:-359,y_max:172,ha:531,o:"m 0 248 l 0 -517 l 45 -517 l 45 112 l 89 112 b 180 -68 150 112 180 53 l 180 -248 l 225 -248 l 225 68 b 135 248 225 187 194 248 z"},accSagittal7CommaDown:{x_min:0,x_max:156,y_min:-172,y_max:359,ha:531,o:"m 135 -248 b 225 -68 194 -248 225 -187 l 225 248 l 180 248 l 180 68 b 89 -112 180 -53 150 -112 l 45 -112 l 45 517 l 0 517 l 0 -248 z"},accSagittal25SmallDiesisUp:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -157 l 0 -259 l 315 -89 l 315 -517 l 360 -517 l 360 248 l 337 248 l 0 68 l 0 -33 l 315 135 l 315 10 z"},accSagittal25SmallDiesisDown:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 315 -10 l 315 -135 l 0 33 l 0 -68 l 337 -248 l 360 -248 l 360 517 l 315 517 l 315 89 l 0 259 l 0 157 z"},accSagittal35MediumDiesisUp:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -68 330 112 360 53 l 360 -248 l 405 -248 l 405 68 b 315 248 405 187 374 248 l 203 248 l 0 -112 z"},accSagittal35MediumDiesisDown:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 0 112 l 203 -248 l 315 -248 b 405 -68 374 -248 405 -187 l 405 248 l 360 248 l 360 68 b 271 -112 360 -53 330 -112 l 225 -112 l 225 517 l 180 517 l 180 -33 l 0 284 z"},accSagittal11MediumDiesisUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 225 53 l 225 -517 l 271 -517 l 271 53 l 495 -248 l 495 -89 l 248 248 l 0 -89 l 0 -248 z"},accSagittal11MediumDiesisDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 248 l 0 89 l 248 -248 l 495 89 l 495 248 l 271 -53 l 271 517 l 225 517 l 225 -53 z"},accSagittal11LargeDiesisUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 112 l 315 112 b 449 -68 405 112 449 53 l 449 -248 l 495 -248 l 495 68 b 360 248 495 187 449 248 l 135 248 b 0 68 45 248 0 187 z"},accSagittal11LargeDiesisDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 135 -248 0 -187 45 -248 l 360 -248 b 495 -68 449 -248 495 -187 l 495 248 l 449 248 l 449 68 b 315 -112 449 -53 405 -112 l 271 -112 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z"},accSagittal35LargeDiesisUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 l 540 112 l 540 274 l 271 -58 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z"},accSagittal35LargeDiesisDown:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 l 540 112 l 540 274 l 269 -58 l 269 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z"},accSagittalSharp25SDown:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 0 68 b 112 -112 0 -53 36 -112 l 135 -112 l 135 -517 l 180 -517 l 180 -89 b 248 26 206 -65 229 -27 b 315 -89 264 -27 287 -65 l 315 -517 l 360 -517 l 360 -112 l 383 -112 b 495 68 458 -112 495 -53 l 449 68 b 399 -4 449 20 433 -4 b 248 248 297 -4 261 171 b 122 0 216 96 176 14 b 94 -4 112 -3 102 -4 b 45 68 60 -4 45 20 z"},accSagittalFlat25SUp:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 45 -68 b 94 4 45 -20 60 4 b 122 0 102 4 112 3 b 248 -248 176 -14 216 -96 b 399 4 261 -171 297 4 b 449 -68 433 4 449 -20 l 495 -68 b 383 112 495 53 458 112 l 360 112 l 360 517 l 315 517 l 315 89 b 248 -26 287 65 264 27 b 180 89 229 27 206 65 l 180 517 l 135 517 l 135 112 l 112 112 b 0 -68 36 112 0 53 z"},accSagittalSharp7CDown:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 112 l 89 112 b 180 104 124 112 154 109 l 180 -517 l 225 -517 l 225 89 b 315 -68 285 60 315 9 l 315 -248 l 360 -248 l 360 68 b 135 248 360 187 285 248 l 0 248 z"},accSagittalFlat7CUp:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 135 -248 b 360 -68 285 -248 360 -187 l 360 248 l 315 248 l 315 68 b 225 -89 315 -9 285 -60 l 225 517 l 180 517 l 180 -104 b 89 -112 154 -109 124 -112 l 45 -112 l 45 517 l 0 517 z"},accSagittalSharp5CDown:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 45 -517 l 45 71 l 180 -56 l 180 -517 l 225 -517 l 225 -98 l 405 -268 l 405 -112 l 23 248 l 0 248 l 0 -517 z"},accSagittalFlat5CUp:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 0 517 l 0 -248 l 23 -248 l 405 112 l 405 268 l 225 98 l 225 517 l 180 517 l 180 56 l 45 -71 l 45 517 z"},accSagittalSharp5v7kDown:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 0 -112 l 0 -276 l 135 -82 l 135 -517 l 180 -517 l 180 -17 l 271 112 l 315 112 l 315 -517 l 360 -517 l 360 107 b 449 -68 420 89 449 30 l 449 -248 l 495 -248 l 495 68 b 360 248 495 189 449 248 l 248 248 z"},accSagittalFlat5v7kUp:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 248 -248 l 360 -248 b 495 -68 449 -248 495 -189 l 495 248 l 449 248 l 449 68 b 360 -107 449 -30 420 -89 l 360 517 l 315 517 l 315 -112 l 271 -112 l 180 17 l 180 517 l 135 517 l 135 82 l 0 276 l 0 112 z"},accSagittalSharp:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 180 -53 l 180 -517 l 225 -517 l 225 0 l 292 85 l 360 0 l 360 -517 l 405 -517 l 405 -53 l 585 -274 l 585 -112 l 292 248 l 0 -112 l 0 -274 z"},accSagittalFlat:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 274 l 0 112 l 292 -248 l 585 112 l 585 274 l 405 53 l 405 517 l 360 517 l 360 0 l 292 -85 l 225 0 l 225 517 l 180 517 l 180 53 z"},accSagittalSharp5v7kUp:{x_min:0,x_max:312,y_min:-361,y_max:172,ha:533,o:"m 45 -517 l 45 -10 b 135 -92 68 -48 98 -75 l 135 -520 l 180 -520 l 180 -108 b 248 -115 203 -112 225 -115 b 271 -112 256 -115 264 -115 l 271 -517 l 315 -517 l 315 -107 b 449 68 405 -89 449 -30 l 405 68 b 297 -4 405 19 369 -4 b 23 248 131 -4 56 85 l 0 248 l 0 -517 z"},accSagittalFlat5v7kDown:{x_min:0,x_max:312,y_min:-172,y_max:361,ha:533,o:"m 0 517 l 0 -248 l 23 -248 b 297 4 56 -85 131 4 b 405 -68 369 4 405 -19 l 449 -68 b 315 107 449 30 405 89 l 315 517 l 271 517 l 271 112 b 248 115 264 115 256 115 b 180 108 225 115 203 112 l 180 520 l 135 520 l 135 92 b 45 10 98 75 68 48 l 45 517 z"},accSagittalSharp5CUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 -266 l 135 -153 l 135 -517 l 180 -517 l 180 -115 l 271 -39 l 271 -517 l 315 -517 l 315 0 l 405 75 l 405 -517 l 449 -517 l 449 248 l 428 248 l 0 -112 z"},accSagittalFlat5CDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 112 l 428 -248 l 449 -248 l 449 517 l 405 517 l 405 -75 l 315 0 l 315 517 l 271 517 l 271 39 l 180 115 l 180 517 l 135 517 l 135 153 l 0 266 z"},accSagittalSharp7CUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 112 l 135 112 l 135 -517 l 180 -517 l 180 108 b 271 89 213 105 243 99 l 271 -517 l 315 -517 l 315 73 b 405 -68 374 45 405 -3 l 405 -248 l 449 -248 l 449 68 b 135 248 449 187 346 248 l 0 248 z"},accSagittalFlat7CDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 135 -248 b 449 -68 346 -248 449 -187 l 449 248 l 405 248 l 405 68 b 315 -73 405 3 374 -45 l 315 517 l 271 517 l 271 -89 b 180 -108 243 -99 213 -105 l 180 517 l 135 517 l 135 -112 l 45 -112 l 45 517 l 0 517 z"},accSagittalSharp25SUp:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 0 -30 l 495 143 l 495 14 l 0 -157 l 0 -255 l 225 -177 l 225 -517 l 271 -517 l 271 -161 l 360 -130 l 360 -517 l 405 -517 l 405 -115 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 517 248 l 0 68 z"},accSagittalFlat25SDown:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 -68 l 517 -248 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 115 l 405 517 l 360 517 l 360 130 l 271 161 l 271 517 l 225 517 l 225 177 l 0 255 l 0 157 l 495 -14 l 495 -143 l 0 30 z"},accSagittalSharp35MUp:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 0 -112 l 0 -274 l 135 -108 l 135 -517 l 180 -517 l 180 -53 l 271 58 l 271 -517 l 315 -517 l 315 112 l 360 112 b 405 109 376 112 390 112 l 405 -517 l 449 -517 l 449 96 b 540 -68 510 72 540 17 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 z"},accSagittalFlat35MDown:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 292 -248 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 449 -96 540 -17 510 -72 l 449 517 l 405 517 l 405 -109 b 360 -112 390 -112 376 -112 l 315 -112 l 315 517 l 271 517 l 271 -58 l 180 53 l 180 517 l 135 517 l 135 108 l 0 274 l 0 112 z"},accSagittalSharp11MUp:{x_min:0,x_max:469,y_min:-359,y_max:172,ha:531,o:"m 0 -112 l 0 -271 l 180 -79 l 180 -517 l 225 -517 l 225 -30 l 315 65 l 315 -517 l 360 -517 l 360 65 l 449 -30 l 449 -517 l 495 -517 l 495 -79 l 675 -271 l 675 -112 l 337 248 z"},accSagittalFlat11MDown:{x_min:0,x_max:469,y_min:-172,y_max:359,ha:531,o:"m 337 -248 l 675 112 l 675 271 l 495 79 l 495 517 l 449 517 l 449 30 l 360 -65 l 360 517 l 315 517 l 315 -65 l 225 30 l 225 517 l 180 517 l 180 79 l 0 271 l 0 112 z"},accSagittalSharp11LUp:{x_min:0,x_max:469,y_min:-359,y_max:172,ha:531,o:"m 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 112 l 449 112 l 449 -517 l 495 -517 l 495 104 b 631 -68 585 82 631 26 l 631 -248 l 675 -248 l 675 68 b 449 248 675 187 600 248 l 225 248 b 0 68 75 248 0 187 z"},accSagittalFlat11LDown:{x_min:0,x_max:469,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 225 -248 0 -187 75 -248 l 449 -248 b 675 -68 600 -248 675 -187 l 675 248 l 631 248 l 631 68 b 495 -104 631 -26 585 -82 l 495 517 l 449 517 l 449 -112 l 360 -112 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z"},accSagittalSharp35LUp:{x_min:0,x_max:500,y_min:-359,y_max:172,ha:531,o:"m 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 71 l 452 -17 l 452 -517 l 495 -517 l 495 -56 l 720 -268 l 720 -112 l 337 248 l 225 248 b 0 68 75 248 0 187 z"},accSagittalFlat35LDown:{x_min:0,x_max:500,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 l 720 112 l 720 268 l 495 56 l 495 517 l 452 517 l 452 17 l 360 -71 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z"},accSagittalDoubleSharp25SDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 0 68 b 135 -112 0 -53 45 -112 b 243 -62 180 -112 215 -95 l 89 -503 l 143 -517 l 292 -82 l 445 -517 l 495 -503 l 343 -62 b 449 -112 372 -95 408 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 315 148 b 112 -4 274 148 236 -4 b 45 68 68 -4 45 20 z"},accSagittalDoubleFlat25SUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 45 -68 b 112 4 45 -20 68 4 b 292 -248 236 4 274 -148 b 475 4 315 -148 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 b 343 62 408 112 372 95 l 495 503 l 445 517 l 292 82 l 143 517 l 89 503 l 243 62 b 135 112 215 95 180 112 b 0 -68 45 112 0 53 z"},accSagittalDoubleSharp7CDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 0 -503 l 52 -517 l 203 -82 l 354 -517 l 405 -503 l 230 0 l 271 108 b 495 -68 420 92 495 35 l 495 -248 l 540 -248 l 540 68 b 225 248 540 187 435 248 l 89 248 l 89 112 l 135 112 l 174 0 z m 213 112 l 203 82 l 192 112 z"},accSagittalDoubleFlat7CUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 174 0 l 135 -112 l 89 -112 l 89 -248 l 225 -248 b 540 -68 435 -248 540 -187 l 540 248 l 495 248 l 495 68 b 271 -108 495 -35 420 -92 l 230 0 l 405 503 l 354 517 l 203 82 l 52 517 l 0 503 z m 192 -112 l 203 -82 l 213 -112 z"},accSagittalDoubleSharp5CDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 405 -503 l 230 0 l 232 4 l 585 -264 l 585 -112 l 112 248 l 89 248 l 89 112 l 151 68 l 174 0 l 0 -503 l 52 -517 l 203 -82 l 354 -517 z"},accSagittalDoubleFlat5CUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 354 517 l 203 82 l 52 517 l 0 503 l 174 0 l 151 -68 l 89 -112 l 89 -248 l 112 -248 l 585 112 l 585 264 l 232 -4 l 230 0 l 405 503 z"},accSagittalDoubleSharp5v7kDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 0 -274 l 252 35 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 360 112 b 540 -68 480 112 540 53 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 l 0 -112 z"},accSagittalDoubleFlat5v7kUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 112 l 292 -248 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 360 -112 540 -53 480 -112 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 252 -35 l 0 274 z"},accSagittalDoubleSharp:{x_min:0,x_max:469,y_min:-359,y_max:172,ha:531,o:"m 540 -503 l 366 0 l 380 45 l 675 -271 l 675 -112 l 337 248 l 0 -112 l 0 -271 l 295 45 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 z"},accSagittalDoubleFlat:{x_min:0,x_max:469,y_min:-172,y_max:359,ha:531,o:"m 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 295 -45 l 0 271 l 0 112 l 337 -248 l 675 112 l 675 271 l 380 -45 l 366 0 l 540 503 z"},accSagittal7v11KleismaUp:{x_min:0,x_max:219,y_min:-359,y_max:172,ha:531,o:"m 68 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 -45 b 248 -112 200 -89 225 -112 b 315 68 292 -112 315 -53 l 271 68 b 248 -4 271 20 264 -4 b 236 0 245 -4 240 -3 b 157 248 213 14 187 96 b 78 0 127 96 101 14 b 65 -4 73 -3 68 -4 b 45 68 50 -4 45 20 l 0 68 b 68 -112 0 -53 23 -112 z"},accSagittal7v11KleismaDown:{x_min:0,x_max:219,y_min:-172,y_max:359,ha:531,o:"m 68 112 b 0 -68 23 112 0 53 l 45 -68 b 65 4 45 -20 50 4 b 78 0 68 4 73 3 b 157 -248 101 -14 127 -96 b 236 0 187 -96 213 -14 b 248 4 240 3 245 4 b 271 -68 264 4 271 -20 l 315 -68 b 248 112 315 53 292 112 b 180 45 225 112 200 89 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 z"},accSagittal17CommaUp:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 -40 b 315 -118 248 -92 279 -118 b 405 62 374 -118 405 -59 l 360 62 b 324 -10 360 14 348 -10 b 302 -6 318 -10 311 -9 b 206 217 268 9 235 84 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z"},accSagittal17CommaDown:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 206 -217 b 302 6 235 -84 268 -9 b 324 10 311 9 318 10 b 360 -62 348 10 360 -14 l 405 -62 b 315 118 405 59 374 118 b 225 40 279 118 248 92 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z"},accSagittal55CommaUp:{x_min:0,x_max:219,y_min:-359,y_max:172,ha:531,o:"m 0 248 l 0 -517 l 45 -517 l 45 58 l 315 -274 l 315 -112 l 23 248 z"},accSagittal55CommaDown:{x_min:0,x_max:219,y_min:-172,y_max:359,ha:531,o:"m 23 -248 l 315 112 l 315 274 l 45 -58 l 45 517 l 0 517 l 0 -248 z"},accSagittal7v11CommaUp:{x_min:0,x_max:188,y_min:-359,y_max:172,ha:531,o:"m 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 248 l 135 248 b 0 68 45 248 0 187 z"},accSagittal7v11CommaDown:{x_min:0,x_max:188,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 135 -248 0 -187 45 -248 l 271 -248 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z"},accSagittal5v11SmallDiesisUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 73 l 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 -40 b 360 -118 295 -92 325 -118 b 449 62 420 -118 449 -59 l 405 62 b 369 -10 405 14 393 -10 b 348 -6 363 -10 356 -9 b 251 217 312 9 279 84 l 248 248 l 135 248 b 0 73 45 248 0 189 z"},accSagittal5v11SmallDiesisDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 -73 b 135 -248 0 -189 45 -248 l 248 -248 l 251 -217 b 348 6 279 -84 312 -9 b 369 10 356 9 363 10 b 405 -62 393 10 405 -14 l 449 -62 b 360 118 449 59 420 118 b 271 40 325 118 295 92 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z"},accSagittalSharp5v11SDown:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 242 37 203 -23 225 -3 b 315 -89 262 -23 285 -63 l 315 -517 l 360 -517 l 360 -112 l 383 -112 b 495 68 458 -112 495 -53 l 449 68 b 399 -4 449 20 433 -4 b 248 248 297 -4 261 171 b 157 68 222 127 192 68 l 89 68 b 0 -203 30 68 0 -23 z"},accSagittalFlat5v11SUp:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -127 b 399 4 261 -171 297 4 b 449 -68 433 4 449 -20 l 495 -68 b 383 112 495 53 458 112 l 360 112 l 360 517 l 315 517 l 315 89 b 242 -37 285 63 262 23 b 180 23 225 3 203 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z"},accSagittalSharp7v11CDown:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 89 -112 l 89 -517 l 135 -517 l 135 -95 b 206 37 163 -73 187 -30 b 271 -23 225 -3 248 -23 l 271 -517 l 315 -517 l 315 -23 l 383 -23 b 449 -203 428 -23 449 -84 l 495 -203 b 405 68 495 -23 465 68 l 292 68 b 203 248 258 68 228 127 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 20 l 0 68 b 89 -112 0 -52 30 -112 z"},accSagittalFlat7v11CUp:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 89 112 b 0 -68 30 112 0 52 l 45 -68 b 81 3 45 -20 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 b 292 -68 228 -127 258 -68 l 405 -68 b 495 203 465 -68 495 23 l 449 203 b 383 23 449 84 428 23 l 315 23 l 315 517 l 271 517 l 271 23 b 206 -37 248 23 225 3 b 135 95 187 30 163 73 l 135 517 l 89 517 z"},accSagittalSharp55CDown:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -271 l 135 -125 l 135 -517 l 180 -517 l 180 -78 l 315 65 l 315 -517 l 360 -517 l 360 248 l 337 248 l 0 -112 z"},accSagittalFlat55CUp:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 0 112 l 337 -248 l 360 -248 l 360 517 l 315 517 l 315 -65 l 180 78 l 180 517 l 135 517 l 135 125 l 0 271 z"},accSagittalSharp17CDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 45 -248 l 45 -68 b 180 109 45 36 89 95 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -89 292 13 321 -55 l 360 -517 l 405 -517 l 405 -112 l 428 -112 b 540 68 504 -112 540 -53 l 495 68 b 445 -4 495 20 480 -4 b 292 248 343 -4 307 171 l 180 248 b 0 68 60 248 0 187 l 0 -248 z"},accSagittalFlat17CUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 248 l 0 -68 b 180 -248 0 -187 60 -248 l 292 -248 b 445 4 307 -171 343 4 b 495 -68 480 4 495 -20 l 540 -68 b 428 112 540 53 504 112 l 405 112 l 405 517 l 360 517 l 360 89 b 271 -112 321 55 292 -13 l 225 -112 l 225 517 l 180 517 l 180 -109 b 45 68 89 -95 45 -36 l 45 248 z"},accSagittalSharp7v11kDown:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 -32 l 405 138 l 405 13 l 0 -157 l 0 -256 l 225 -161 l 225 -517 l 271 -517 l 271 -144 l 405 -86 l 405 -517 l 449 -517 l 449 248 l 428 248 l 0 68 z"},accSagittalFlat7v11kUp:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 -68 l 428 -248 l 449 -248 l 449 517 l 405 517 l 405 86 l 271 144 l 271 517 l 225 517 l 225 161 l 0 256 l 0 157 l 405 -13 l 405 -138 l 0 32 z"},accSagittalSharp7v11kUp:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 135 -112 l 135 -517 l 180 -517 l 180 -105 b 271 -23 217 -94 248 -65 l 271 -517 l 315 -517 l 315 -23 b 405 -105 337 -65 369 -94 l 405 -517 l 449 -517 l 449 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 315 148 b 112 -4 274 148 236 -4 b 45 68 68 -4 45 20 l 0 68 b 135 -112 0 -53 45 -112 z"},accSagittalFlat7v11kDown:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 135 112 b 0 -68 45 112 0 53 l 45 -68 b 112 4 45 -20 68 4 b 292 -248 236 4 274 -148 b 475 4 315 -148 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 l 449 517 l 405 517 l 405 105 b 315 23 369 94 337 65 l 315 517 l 271 517 l 271 23 b 180 105 248 65 217 94 l 180 517 l 135 517 z"},accSagittalSharp17CUp:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 -23 b 405 -105 337 -65 369 -94 l 405 -517 l 449 -517 l 449 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 312 150 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z"},accSagittalFlat17CDown:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 b 475 4 312 -150 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 l 449 517 l 405 517 l 405 105 b 315 23 369 94 337 65 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z"},accSagittalSharp55CUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 45 -517 l 45 78 l 135 10 l 135 -517 l 180 -517 l 180 -23 l 271 -92 l 271 -517 l 315 -517 l 315 -127 l 495 -264 l 495 -112 l 23 248 l 0 248 l 0 -517 z"},accSagittalFlat55CDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 517 l 0 -248 l 23 -248 l 495 112 l 495 264 l 315 127 l 315 517 l 271 517 l 271 92 l 180 23 l 180 517 l 135 517 l 135 -10 l 45 -78 l 45 517 z"},accSagittalSharp7v11CUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 86 45 6 89 58 l 180 -517 l 225 -517 l 225 98 b 315 109 252 104 282 108 l 315 -517 l 360 -517 l 360 112 l 449 112 l 449 -517 l 495 -517 l 495 248 l 360 248 b 0 68 121 248 0 189 z"},accSagittalFlat7v11CDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 360 -248 0 -189 121 -248 l 495 -248 l 495 517 l 449 517 l 449 -112 l 360 -112 l 360 517 l 315 517 l 315 -109 b 225 -98 282 -108 252 -104 l 225 517 l 180 517 l 180 -86 b 45 68 89 -58 45 -6 l 45 248 l 0 248 z"},accSagittalSharp5v11SUp:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 -23 b 449 -105 383 -65 415 -94 l 449 -517 l 495 -517 l 495 -112 b 631 68 585 -112 631 -53 l 585 68 b 520 -4 585 20 563 -4 b 337 248 396 -4 360 150 l 225 248 b 0 68 76 248 0 187 z"},accSagittalFlat5v11SDown:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 225 -248 0 -187 76 -248 l 337 -248 b 520 4 360 -150 396 4 b 585 -68 563 4 585 -20 l 631 -68 b 495 112 631 53 585 112 l 495 517 l 449 517 l 449 105 b 360 23 415 94 383 65 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z"},accSagittalDoubleSharp5v11SDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 341 -60 b 449 -112 370 -95 405 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 312 150 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z"},accSagittalDoubleFlat5v11SUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 b 475 4 312 -150 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 b 341 60 405 112 370 95 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z"},accSagittalDoubleSharp7v11CDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 112 -112 b 193 -73 143 -112 170 -99 l 45 -501 l 95 -517 l 248 -81 l 397 -517 l 449 -503 l 275 0 l 278 4 b 337 -23 295 -13 315 -23 l 405 -23 b 495 -203 465 -23 495 -84 l 540 -203 b 428 68 540 -23 503 68 l 360 68 b 248 248 310 68 271 127 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 112 -112 0 -52 36 -112 z"},accSagittalDoubleFlat7v11CUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 112 112 b 0 -68 36 112 0 52 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 b 360 -68 271 -127 310 -68 l 428 -68 b 540 203 503 -68 540 23 l 495 203 b 405 23 495 84 465 23 l 337 23 b 278 -4 315 23 295 13 l 275 0 l 449 503 l 397 517 l 248 81 l 95 517 l 45 501 l 193 73 b 112 112 170 99 143 112 z"},accSagittalDoubleSharp55CDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 428 248 l 0 -112 l 0 -266 l 307 -7 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 386 59 l 449 112 l 449 248 z"},accSagittalDoubleFlat55CUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 449 -248 l 449 -112 l 386 -59 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 307 7 l 0 266 l 0 112 l 428 -248 z"},accSagittalDoubleSharp17CDown:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 45 -248 l 45 -68 b 271 112 45 53 120 112 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 387 -62 b 495 -112 416 -95 452 -112 b 631 68 585 -112 631 -53 l 585 68 b 520 -4 585 20 563 -4 b 337 248 396 -4 360 150 l 225 248 b 0 68 76 248 0 187 l 0 -248 z"},accSagittalDoubleFlat17CUp:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 0 248 l 0 -68 b 225 -248 0 -187 76 -248 l 337 -248 b 520 4 360 -150 396 4 b 585 -68 563 4 585 -20 l 631 -68 b 495 112 631 53 585 112 b 387 62 452 112 416 95 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 271 -112 b 45 68 120 -112 45 -53 l 45 248 z"},accSagittalDoubleSharp7v11kDown:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 0 68 l 0 -30 l 366 96 l 399 0 l 392 -23 l 0 -157 l 0 -255 l 353 -135 l 225 -503 l 276 -517 l 428 -82 l 579 -517 l 631 -503 l 455 0 l 507 145 l 540 157 l 540 248 l 517 248 z m 416 115 l 442 124 l 428 82 z"},accSagittalDoubleFlat7v11kUp:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 517 -248 l 540 -248 l 540 -157 l 507 -145 l 455 0 l 631 503 l 579 517 l 428 82 l 276 517 l 225 503 l 353 135 l 0 255 l 0 157 l 392 23 l 399 0 l 366 -96 l 0 30 l 0 -68 z m 428 -82 l 442 -124 l 416 -115 z"},accSagittal23CommaUp:{x_min:0,x_max:188,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 -4 b 68 -23 53 -17 60 -23 l 180 -23 b 225 -203 210 -23 225 -82 l 271 -203 b 206 68 271 -23 248 68 l 89 68 b 23 248 71 68 48 127 l 0 248 z"},accSagittal23CommaDown:{x_min:0,x_max:188,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 23 -248 b 89 -68 48 -127 71 -68 l 206 -68 b 271 203 248 -68 271 23 l 225 203 b 180 23 225 82 210 23 l 68 23 b 45 4 60 23 53 17 l 45 517 l 0 517 z"},accSagittal5v19CommaUp:{x_min:0,x_max:156,y_min:-359,y_max:172,ha:531,o:"m 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 248 l 203 248 b 86 112 151 157 112 112 b 45 157 59 112 45 127 l 0 157 b 76 23 0 72 26 27 l 0 -112 z"},accSagittal5v19CommaDown:{x_min:0,x_max:156,y_min:-172,y_max:359,ha:531,o:"m 0 112 l 76 -23 b 0 -157 26 -27 0 -72 l 45 -157 b 86 -112 45 -127 59 -112 b 203 -248 112 -112 151 -157 l 225 -248 l 225 517 l 180 517 l 180 -33 l 0 284 z"},accSagittal5v23SmallDiesisUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 -4 b 248 -23 233 -17 240 -23 l 360 -23 b 405 -203 390 -23 405 -82 l 449 -203 b 386 68 449 -23 428 68 l 271 68 b 203 248 251 68 228 127 l 0 -112 z"},accSagittal5v23SmallDiesisDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 112 l 203 -248 b 271 -68 228 -127 251 -68 l 386 -68 b 449 203 428 -68 449 23 l 405 203 b 360 23 405 82 390 23 l 248 23 b 225 4 240 23 233 17 l 225 517 l 180 517 l 180 -33 l 0 284 z"},accSagittalSharp5v23SDown:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 6 b 89 -23 59 -13 73 -23 l 180 -23 l 180 -517 l 225 -517 l 225 -23 l 292 -23 b 360 -203 337 -23 360 -84 l 405 -203 b 315 68 405 -23 374 68 l 112 68 b 23 248 78 68 48 127 l 0 248 z"},accSagittalFlat5v23SUp:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 23 -248 b 112 -68 48 -127 78 -68 l 315 -68 b 405 203 374 -68 405 23 l 360 203 b 292 23 360 84 337 23 l 225 23 l 225 517 l 180 517 l 180 23 l 89 23 b 45 -6 73 23 59 13 l 45 517 l 0 517 z"},accSagittalSharp5v19CDown:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 68 b 89 -112 0 -52 30 -112 l 89 -517 l 135 -517 l 135 -95 b 225 112 173 -65 203 4 l 271 112 l 271 -517 l 315 -517 l 315 107 b 405 -68 374 89 405 30 l 405 -248 l 449 -248 l 449 68 b 315 248 449 189 405 248 l 203 248 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 23 z"},accSagittalFlat5v19CUp:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 45 -68 b 81 3 45 -23 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 l 315 -248 b 449 -68 405 -248 449 -189 l 449 248 l 405 248 l 405 68 b 315 -107 405 -30 374 -89 l 315 517 l 271 517 l 271 -112 l 225 -112 b 135 95 203 -4 173 65 l 135 517 l 89 517 l 89 112 b 0 -68 30 112 0 52 z"},accSagittalSharp23CDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 135 -82 l 135 -517 l 180 -517 l 180 -17 l 239 68 b 315 -23 261 7 287 -23 l 315 -517 l 360 -517 l 360 -23 l 428 -23 b 495 -203 472 -23 495 -84 l 540 -203 b 449 68 540 -23 510 68 l 337 68 b 248 248 302 68 271 127 l 0 -112 l 0 -276 z"},accSagittalFlat23CUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 276 l 0 112 l 248 -248 b 337 -68 271 -127 302 -68 l 449 -68 b 540 203 510 -68 540 23 l 495 203 b 428 23 495 84 472 23 l 360 23 l 360 517 l 315 517 l 315 23 b 239 -68 287 23 261 -7 l 180 17 l 180 517 l 135 517 l 135 82 z"},accSagittalSharp23CUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 14 b 112 -23 63 -10 86 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 360 -23 b 449 -203 420 -23 449 -84 l 495 -203 b 383 68 495 -23 458 68 l 135 68 b 23 248 85 68 48 127 l 0 248 z"},accSagittalFlat23CDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 23 -248 b 135 -68 48 -127 85 -68 l 383 -68 b 495 203 458 -68 495 23 l 449 203 b 360 23 449 84 420 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 -14 86 23 63 10 l 45 517 l 0 517 z"},accSagittalSharp5v19CUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 -112 l 0 -266 l 135 -153 l 135 -517 l 180 -517 l 180 -115 l 271 -39 l 271 -517 l 315 -517 l 315 0 l 405 75 l 405 -517 l 449 -517 l 449 248 l 428 248 b 130 68 285 127 186 68 b 45 157 73 68 45 98 l 0 157 b 112 -20 0 53 37 -6 z"},accSagittalFlat5v19CDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 112 20 b 0 -157 37 6 0 -53 l 45 -157 b 130 -68 45 -98 73 -68 b 428 -248 186 -68 285 -127 l 449 -248 l 449 517 l 405 517 l 405 -75 l 315 0 l 315 517 l 271 517 l 271 39 l 180 115 l 180 517 l 135 517 l 135 153 l 0 266 l 0 112 z"},accSagittalSharp5v23SUp:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 135 -108 l 135 -517 l 180 -517 l 180 -53 l 271 58 l 271 -517 l 315 -517 l 315 14 b 383 -23 334 -10 357 -23 l 405 -23 l 405 -517 l 449 -517 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 405 68 b 292 248 356 68 318 127 l 0 -112 l 0 -274 z"},accSagittalFlat5v23SDown:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 274 l 0 112 l 292 -248 b 405 -68 318 -127 356 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 449 517 l 405 517 l 405 23 l 383 23 b 315 -14 357 23 334 10 l 315 517 l 271 517 l 271 -58 l 180 53 l 180 517 l 135 517 l 135 108 z"},accSagittalDoubleSharp5v23SDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 52 -517 l 203 -81 l 354 -517 l 405 -503 l 239 -23 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 225 68 b 112 248 176 68 138 127 l 89 248 l 89 112 b 170 -14 109 45 135 0 l 0 -501 z"},accSagittalDoubleFlat5v23SUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 501 l 170 14 b 89 -112 135 0 109 -45 l 89 -248 l 112 -248 b 225 -68 138 -127 176 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 239 23 l 405 503 l 354 517 l 203 81 l 52 517 z"},accSagittalDoubleSharp5v19CDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 0 68 b 112 -112 0 -52 36 -112 b 193 -73 143 -112 170 -99 l 45 -501 l 95 -517 l 248 -81 l 397 -517 l 449 -501 l 275 0 l 315 112 b 495 -68 435 112 495 53 l 495 -248 l 540 -248 l 540 68 b 360 248 540 189 480 248 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 z"},accSagittalDoubleFlat5v19CUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 360 -248 b 540 -68 480 -248 540 -189 l 540 248 l 495 248 l 495 68 b 315 -112 495 -53 435 -112 l 275 0 l 449 501 l 397 517 l 248 81 l 95 517 l 45 501 l 193 73 b 112 112 170 99 143 112 b 0 -68 36 112 0 52 z"},accSagittalDoubleSharp23CDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 252 35 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 323 4 b 383 -23 340 -13 360 -23 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 405 68 b 292 248 356 68 318 127 l 0 -112 l 0 -274 z"},accSagittalDoubleFlat23CUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 274 l 0 112 l 292 -248 b 405 -68 318 -127 356 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 383 23 b 323 -4 360 23 340 13 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 252 -35 z"},accSagittal19SchismaUp:{x_min:0,x_max:125,y_min:-359,y_max:172,ha:531,o:"m 68 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 248 l 157 248 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 l 0 68 b 68 -112 0 -52 23 -112 z"},accSagittal19SchismaDown:{x_min:0,x_max:125,y_min:-172,y_max:359,ha:531,o:"m 68 112 b 0 -68 23 112 0 52 l 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 l 180 -248 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 z"},accSagittal17KleismaUp:{x_min:0,x_max:156,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 248 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z"},accSagittal17KleismaDown:{x_min:0,x_max:156,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 225 -248 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z"},accSagittal143CommaUp:{x_min:0,x_max:156,y_min:-359,y_max:172,ha:531,o:"m 0 -203 l 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 248 l 203 248 b 135 68 177 127 154 68 l 105 68 b 45 157 65 68 45 98 l 0 157 b 23 20 0 95 7 50 b 0 -203 7 -23 0 -98 z"},accSagittal143CommaDown:{x_min:0,x_max:156,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 23 -20 0 98 7 23 b 0 -157 7 -50 0 -95 l 45 -157 b 105 -68 45 -98 65 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 225 -248 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z"},accSagittal11v49CommaUp:{x_min:0,x_max:188,y_min:-359,y_max:172,ha:531,o:"m 45 -292 b 89 -157 45 -203 60 -157 l 203 -157 b 225 -143 210 -157 217 -153 l 225 -517 l 271 -517 l 271 248 l 248 248 b 180 157 233 187 210 157 l 68 157 b 0 -68 23 157 0 82 l 45 -68 b 89 68 45 23 60 68 l 203 68 b 225 84 209 68 216 72 l 225 -36 b 180 -68 213 -58 199 -68 l 68 -68 b 0 -292 23 -68 0 -143 z"},accSagittal11v49CommaDown:{x_min:0,x_max:188,y_min:-172,y_max:359,ha:531,o:"m 0 292 b 68 68 0 143 23 68 l 180 68 b 225 36 199 68 213 58 l 225 -84 b 203 -68 216 -72 209 -68 l 89 -68 b 45 68 60 -68 45 -23 l 0 68 b 68 -157 0 -82 23 -157 l 180 -157 b 248 -248 210 -157 233 -187 l 271 -248 l 271 517 l 225 517 l 225 143 b 203 157 217 153 210 157 l 89 157 b 45 292 60 157 45 203 z"},accSagittal19CommaUp:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 0 68 b 68 -112 0 -52 23 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 -4 b 203 -23 187 -17 196 -23 l 315 -23 b 360 -203 346 -23 360 -82 l 405 -203 b 341 68 405 -23 383 68 l 225 68 b 157 248 206 68 183 127 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 z"},accSagittal19CommaDown:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 b 225 -68 183 -127 206 -68 l 341 -68 b 405 203 383 -68 405 23 l 360 203 b 315 23 360 82 346 23 l 203 23 b 180 4 196 23 187 17 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 b 0 -68 23 112 0 52 z"},accSagittal7v19CommaUp:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 68 b 68 -112 0 -52 23 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 112 l 225 112 b 315 -68 285 112 315 53 l 315 -248 l 360 -248 l 360 68 b 271 248 360 187 330 248 l 157 248 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 z"},accSagittal7v19CommaDown:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 l 271 -248 b 360 -68 330 -248 360 -187 l 360 248 l 315 248 l 315 68 b 225 -112 315 -53 285 -112 l 180 -112 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 b 0 -68 23 112 0 52 z"},accSagittal49SmallDiesisUp:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 0 -203 l 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -68 330 112 360 53 l 360 -248 l 405 -248 l 405 68 b 315 248 405 187 374 248 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z"},accSagittal49SmallDiesisDown:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 315 -248 b 405 -68 374 -248 405 -187 l 405 248 l 360 248 l 360 68 b 271 -112 360 -53 330 -112 l 225 -112 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z"},accSagittal23SmallDiesisUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 58 l 495 -274 l 495 -112 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z"},accSagittal23SmallDiesisDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 495 112 l 495 274 l 225 -58 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z"},accSagittal5v13MediumDiesisUp:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -259 l 315 -89 l 315 -517 l 360 -517 l 360 248 l 337 248 b 128 180 253 203 184 180 b 45 248 73 180 45 203 l 0 248 b 52 95 0 170 17 120 l 0 68 l 0 -33 l 315 135 l 315 10 l 0 -157 z"},accSagittal5v13MediumDiesisDown:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 0 157 l 315 -10 l 315 -135 l 0 33 l 0 -68 l 52 -95 b 0 -248 17 -120 0 -170 l 45 -248 b 128 -180 45 -203 73 -180 b 337 -248 184 -180 253 -203 l 360 -248 l 360 517 l 315 517 l 315 89 l 0 259 z"},accSagittal11v19MediumDiesisUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 -4 b 292 -23 278 -17 285 -23 l 405 -23 b 449 -203 435 -23 449 -82 l 495 -203 b 431 68 495 -23 472 68 l 315 68 b 248 248 295 68 271 127 l 135 248 b 0 68 45 248 0 187 l 0 -248 z"},accSagittal11v19MediumDiesisDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 248 l 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 b 315 -68 271 -127 295 -68 l 431 -68 b 495 203 472 -68 495 23 l 449 203 b 405 23 449 82 435 23 l 292 23 b 271 4 285 23 278 17 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 z"},accSagittal49MediumDiesisUp:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -68 l 0 -248 l 45 -248 l 315 -94 l 315 -517 l 360 -517 l 360 248 l 225 248 b 0 -68 75 248 0 143 z m 45 -68 b 225 112 45 53 105 112 l 315 112 l 315 10 l 45 -145 z"},accSagittal49MediumDiesisDown:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 0 68 b 225 -248 0 -143 75 -248 l 360 -248 l 360 517 l 315 517 l 315 94 l 45 248 l 0 248 z m 45 145 l 315 -10 l 315 -112 l 225 -112 b 45 68 105 -112 45 -53 z"},accSagittal5v49MediumDiesisUp:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 0 -89 l 0 -248 l 225 53 l 225 -517 l 271 -517 l 271 53 l 495 -248 l 495 -89 l 248 248 b 89 89 170 143 118 89 b 45 157 60 89 45 112 l 0 157 b 68 3 0 68 23 16 z"},accSagittal5v49MediumDiesisDown:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 68 -3 b 0 -157 23 -16 0 -68 l 45 -157 b 89 -89 45 -112 60 -89 b 248 -248 118 -89 170 -143 l 495 89 l 495 248 l 271 -53 l 271 517 l 225 517 l 225 -53 l 0 248 l 0 89 z"},accSagittal49LargeDiesisUp:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 -89 l 360 -248 l 405 -248 l 405 -68 b 180 248 405 143 330 248 l 0 248 z m 45 12 l 45 112 l 180 112 b 360 -68 300 112 360 53 l 360 -147 z"},accSagittal49LargeDiesisDown:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 180 -248 b 405 68 330 -248 405 -143 l 405 248 l 360 248 l 45 89 l 45 517 l 0 517 z m 360 147 l 360 68 b 180 -112 360 -53 300 -112 l 45 -112 l 45 -12 z"},accSagittal11v19LargeDiesisUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 -86 l 449 -256 l 449 -157 l 45 13 l 45 138 l 449 -30 l 449 68 l 23 248 l 0 248 z"},accSagittal11v19LargeDiesisDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 23 -248 l 449 -68 l 449 30 l 45 -138 l 45 -13 l 449 157 l 449 256 l 45 86 l 45 517 l 0 517 z"},accSagittal5v13LargeDiesisUp:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 0 68 b 89 -112 0 -52 30 -112 b 180 -35 125 -112 157 -86 l 180 -517 l 225 -517 l 225 -86 l 631 -256 l 631 -157 l 225 13 l 225 138 l 631 -30 l 631 68 l 203 248 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 20 z"},accSagittal5v13LargeDiesisDown:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 45 -68 b 81 3 45 -20 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 l 631 -68 l 631 30 l 225 -138 l 225 -13 l 631 157 l 631 256 l 225 86 l 225 517 l 180 517 l 180 35 b 89 112 157 86 125 112 b 0 -68 30 112 0 52 z"},accSagittalSharp23SDown:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -203 l 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 b 315 6 287 -23 301 -13 l 315 -517 l 360 -517 l 360 248 l 337 248 b 248 68 312 127 282 68 l 194 68 b 89 157 125 68 89 98 l 45 157 b 60 59 45 118 50 85 b 0 -203 20 30 0 -56 z"},accSagittalFlat23SUp:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 60 -59 0 56 20 -30 b 45 -157 50 -85 45 -118 l 89 -157 b 194 -68 89 -98 125 -68 l 248 -68 b 337 -248 282 -68 312 -127 l 360 -248 l 360 517 l 315 517 l 315 -6 b 271 23 301 13 287 23 l 180 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z"},accSagittalSharp49SDown:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -292 l 45 -292 b 112 -157 45 -203 68 -157 l 135 -157 l 135 -517 l 180 -517 l 180 -157 l 271 -157 b 315 -135 285 -157 300 -150 l 315 -517 l 360 -517 l 360 248 l 337 248 b 248 157 323 187 292 157 l 89 157 b 0 -68 30 157 0 82 l 45 -68 b 112 68 45 23 68 68 l 271 68 b 315 89 284 68 300 75 l 315 -32 b 248 -68 298 -56 275 -68 l 89 -68 b 0 -292 29 -68 0 -143 z"},accSagittalFlat49SUp:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 0 292 b 89 68 0 143 29 68 l 248 68 b 315 32 275 68 298 56 l 315 -89 b 271 -68 300 -75 284 -68 l 112 -68 b 45 68 68 -68 45 -23 l 0 68 b 89 -157 0 -82 30 -157 l 248 -157 b 337 -248 292 -157 323 -187 l 360 -248 l 360 517 l 315 517 l 315 135 b 271 157 300 150 285 157 l 180 157 l 180 517 l 135 517 l 135 157 l 112 157 b 45 292 68 157 45 203 z"},accSagittalSharp7v19CDown:{x_min:0,x_max:250,y_min:-359,y_max:172,ha:531,o:"m 0 -112 l 0 -271 l 135 -125 l 135 -517 l 180 -517 l 180 -78 l 315 65 l 315 -517 l 360 -517 l 360 248 l 337 248 b 118 89 239 143 166 89 b 45 157 68 89 45 112 l 0 157 b 89 -20 0 53 29 -6 z"},accSagittalFlat7v19CUp:{x_min:0,x_max:250,y_min:-172,y_max:359,ha:531,o:"m 89 20 b 0 -157 29 6 0 -53 l 45 -157 b 118 -89 45 -112 68 -89 b 337 -248 166 -89 239 -143 l 360 -248 l 360 517 l 315 517 l 315 -65 l 180 78 l 180 517 l 135 517 l 135 125 l 0 271 l 0 112 z"},accSagittalSharp19CDown:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 0 -248 l 45 -248 l 45 -68 b 180 96 45 17 89 72 l 180 -517 l 225 -517 l 225 107 b 315 112 252 112 282 112 l 360 112 l 360 -517 l 405 -517 l 405 248 l 271 248 b 0 68 89 248 0 187 z"},accSagittalFlat19CUp:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 271 -248 0 -187 89 -248 l 405 -248 l 405 517 l 360 517 l 360 -112 l 315 -112 b 225 -107 282 -112 252 -112 l 225 517 l 180 517 l 180 -96 b 45 68 89 -72 45 -17 l 45 248 l 0 248 z"},accSagittalSharp11v49CDown:{x_min:0,x_max:344,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 112 -23 45 -82 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 271 112 215 -23 245 23 l 315 112 l 315 -517 l 360 -517 l 360 107 b 449 -68 420 89 449 30 l 449 -248 l 495 -248 l 495 68 b 360 248 495 189 449 248 l 248 248 b 157 68 222 128 192 68 l 89 68 b 0 -203 30 68 0 -23 z"},accSagittalFlat11v49CUp:{x_min:0,x_max:344,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -128 l 360 -248 b 495 -68 449 -248 495 -189 l 495 248 l 449 248 l 449 68 b 360 -107 449 -30 420 -89 l 360 517 l 315 517 l 315 -112 l 271 -112 b 180 23 245 -23 215 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 82 z"},accSagittalSharp143CDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 259 76 210 -23 236 10 l 315 17 l 315 -517 l 360 -517 l 360 -30 l 585 -271 l 585 -112 l 248 248 b 157 68 222 127 192 68 l 89 68 b 0 -203 30 68 0 -23 z"},accSagittalFlat143CUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -127 l 585 112 l 585 271 l 360 30 l 360 517 l 315 517 l 315 -17 l 259 -76 b 180 23 236 -10 210 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z"},accSagittalSharp17kDown:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 0 -157 l 0 -256 l 225 -161 l 225 -517 l 271 -517 l 271 -144 l 405 -86 l 405 -517 l 449 -517 l 449 248 l 428 248 b 145 171 305 196 210 171 b 45 248 78 171 45 196 l 0 248 b 79 101 0 170 26 121 l 0 68 l 0 -32 l 405 138 l 405 13 z"},accSagittalFlat17kUp:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 405 -13 l 405 -138 l 0 32 l 0 -68 l 79 -101 b 0 -248 26 -121 0 -170 l 45 -248 b 145 -171 45 -196 78 -171 b 428 -248 210 -171 305 -196 l 449 -248 l 449 517 l 405 517 l 405 86 l 271 144 l 271 517 l 225 517 l 225 161 l 0 256 l 0 157 z"},accSagittalSharp19sDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 0 -248 l 45 -248 l 45 -68 b 180 109 45 36 89 95 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -23 295 23 325 -23 l 360 -517 l 405 -517 l 405 -23 l 472 -23 b 540 -203 517 -23 540 -84 l 585 -203 b 495 68 585 -23 554 68 l 383 68 b 292 248 348 68 318 127 l 180 248 b 0 68 60 248 0 187 z"},accSagittalFlat19sUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 180 -248 0 -187 60 -248 l 292 -248 b 383 -68 318 -127 348 -68 l 495 -68 b 585 203 554 -68 585 23 l 540 203 b 472 23 540 84 517 23 l 405 23 l 405 517 l 360 517 l 360 23 b 271 -112 325 23 295 -23 l 225 -112 l 225 517 l 180 517 l 180 -109 b 45 68 89 -95 45 -36 l 45 248 l 0 248 z"},accSagittalSharp19sUp:{x_min:0,x_max:281,y_min:-359,y_max:172,ha:531,o:"m 89 -96 l 89 -517 l 135 -517 l 135 -108 b 180 -112 148 -112 163 -112 b 225 -108 196 -112 210 -112 l 225 -517 l 271 -517 l 271 -94 b 360 -12 305 -78 337 -50 l 360 -517 l 405 -517 l 405 248 l 383 248 b 190 0 353 98 288 16 b 138 -3 171 0 153 -3 b 45 68 75 -3 45 20 l 0 68 b 89 -96 0 -17 30 -72 z"},accSagittalFlat19sDown:{x_min:0,x_max:281,y_min:-172,y_max:359,ha:531,o:"m 89 96 b 0 -68 30 72 0 17 l 45 -68 b 138 3 45 -20 75 3 b 190 0 153 3 171 0 b 383 -248 288 -16 353 -98 l 405 -248 l 405 517 l 360 517 l 360 12 b 271 94 337 50 305 78 l 271 517 l 225 517 l 225 108 b 180 112 210 112 196 112 b 135 108 163 112 148 112 l 135 517 l 89 517 z"},accSagittalSharp17kUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 337 -23 b 405 14 363 -23 386 -10 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 68 402 127 364 68 l 112 68 b 0 -203 37 68 0 -23 z"},accSagittalFlat17kDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 112 -68 0 23 37 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 517 l 405 517 l 405 -14 b 337 23 386 10 363 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z"},accSagittalSharp143CUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 337 -23 b 405 14 363 -23 386 -10 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 68 402 127 364 68 l 240 68 b 89 157 140 68 89 98 l 45 157 b 68 53 45 115 52 81 b 0 -203 23 23 0 -63 z"},accSagittalFlat143CDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 68 -53 0 63 23 -23 b 45 -157 52 -81 45 -115 l 89 -157 b 240 -68 89 -98 140 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 517 l 405 517 l 405 -14 b 337 23 386 10 363 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z"},accSagittalSharp11v49CUp:{x_min:0,x_max:312,y_min:-359,y_max:172,ha:531,o:"m 45 -68 b 135 68 45 23 76 68 l 337 68 b 405 95 363 68 386 76 l 405 -27 b 315 -68 386 -55 356 -68 l 112 -68 b 0 -292 37 -68 0 -143 l 45 -292 b 135 -157 45 -203 75 -157 l 135 -517 l 180 -517 l 180 -157 l 271 -157 l 271 -517 l 315 -517 l 315 -157 l 337 -157 b 405 -130 360 -157 383 -148 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 157 413 187 376 157 l 112 157 b 0 -68 37 157 0 82 z"},accSagittalFlat11v49CDown:{x_min:0,x_max:312,y_min:-172,y_max:359,ha:531,o:"m 0 68 b 112 -157 0 -82 37 -157 l 315 -157 b 428 -248 376 -157 413 -187 l 449 -248 l 449 517 l 405 517 l 405 130 b 337 157 383 148 360 157 l 315 157 l 315 517 l 271 517 l 271 157 l 180 157 l 180 517 l 135 517 l 135 157 b 45 292 75 157 45 203 l 0 292 b 112 68 0 143 37 68 l 315 68 b 405 27 356 68 386 55 l 405 -95 b 337 -68 386 -76 363 -68 l 135 -68 b 45 68 76 -68 45 -23 z"},accSagittalSharp19CUp:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 14 b 337 -23 289 -10 311 -23 l 360 -23 l 360 -517 l 405 -517 l 405 -23 b 495 -203 465 -23 495 -82 l 540 -203 b 428 68 540 -23 503 68 l 360 68 b 248 248 310 68 271 128 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z"},accSagittalFlat19CDown:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 b 360 -68 271 -128 310 -68 l 428 -68 b 540 203 503 -68 540 23 l 495 203 b 405 23 495 82 465 23 l 405 517 l 360 517 l 360 23 l 337 23 b 271 -14 311 23 289 10 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z"},accSagittalSharp7v19CUp:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 112 l 315 112 b 360 109 331 112 346 112 l 360 -517 l 405 -517 l 405 98 b 495 -68 465 73 495 19 l 495 -248 l 540 -248 l 540 68 b 360 248 540 189 480 248 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z"},accSagittalFlat7v19CDown:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 360 -248 b 540 -68 480 -248 540 -189 l 540 248 l 495 248 l 495 68 b 405 -98 495 -19 465 -73 l 405 517 l 360 517 l 360 -109 b 315 -112 346 -112 331 -112 l 271 -112 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z"},accSagittalSharp49SUp:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 112 l 360 112 b 405 109 376 112 390 112 l 405 -517 l 449 -517 l 449 96 b 540 -68 510 72 540 17 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z"},accSagittalFlat49SDown:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 449 -96 540 -17 510 -72 l 449 517 l 405 517 l 405 -109 b 360 -112 390 -112 376 -112 l 315 -112 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z"},accSagittalSharp23SUp:{x_min:0,x_max:469,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 71 l 405 -14 l 405 -517 l 449 -517 l 449 -56 l 675 -268 l 675 -112 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z"},accSagittalFlat23SDown:{x_min:0,x_max:469,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 675 112 l 675 268 l 449 56 l 449 517 l 405 517 l 405 14 l 315 -71 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z"},accSagittalSharp5v13MUp:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 495 141 l 495 14 l 0 -157 l 0 -256 l 225 -180 l 225 -517 l 271 -517 l 271 -161 l 360 -130 l 360 -517 l 405 -517 l 405 -115 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 517 248 b 167 168 366 194 248 168 b 45 248 85 168 45 194 l 0 248 b 95 99 0 170 30 120 l 0 68 l 0 -30 z"},accSagittalFlat5v13MDown:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 30 l 0 -68 l 95 -99 b 0 -248 30 -120 0 -170 l 45 -248 b 167 -168 45 -194 85 -168 b 517 -248 248 -168 366 -194 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 115 l 405 517 l 360 517 l 360 130 l 271 161 l 271 517 l 225 517 l 225 180 l 0 256 l 0 157 l 495 -14 l 495 -141 z"},accSagittalSharp11v19MUp:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 14 b 428 -23 379 -10 402 -23 l 449 -23 l 449 -517 l 495 -517 l 495 -23 b 585 -203 554 -23 585 -84 l 631 -203 b 517 68 631 -23 593 68 l 449 68 b 337 248 400 68 363 127 l 225 248 b 0 68 75 248 0 187 z"},accSagittalFlat11v19MDown:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 b 449 -68 363 -127 400 -68 l 517 -68 b 631 203 593 -68 631 23 l 585 203 b 495 23 585 84 554 23 l 495 517 l 449 517 l 449 23 l 428 23 b 360 -14 402 23 379 10 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z"},accSagittalSharp49MUp:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 0 -248 l 45 -248 l 225 -180 l 225 -517 l 271 -517 l 271 -166 l 360 -132 l 360 -517 l 405 -517 l 405 -117 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 360 248 b 0 -68 120 248 0 143 z m 45 -145 l 45 -68 b 360 112 45 53 150 112 l 495 112 l 495 14 z"},accSagittalFlat49MDown:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 68 b 360 -248 0 -143 120 -248 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 117 l 405 517 l 360 517 l 360 132 l 271 166 l 271 517 l 225 517 l 225 180 l 45 248 l 0 248 z m 495 -14 l 495 -112 l 360 -112 b 45 68 150 -112 45 -53 l 45 145 z"},accSagittalSharp5v49MUp:{x_min:0,x_max:469,y_min:-359,y_max:172,ha:531,o:"m 0 -271 l 180 -79 l 180 -517 l 225 -517 l 225 -30 l 315 65 l 315 -517 l 360 -517 l 360 65 l 449 -30 l 449 -517 l 495 -517 l 495 -79 l 675 -271 l 675 -112 l 337 248 b 118 89 239 143 166 89 b 45 157 68 89 45 112 l 0 157 b 107 0 0 62 36 10 l 0 -112 z"},accSagittalFlat5v49MDown:{x_min:0,x_max:469,y_min:-172,y_max:359,ha:531,o:"m 0 112 l 107 0 b 0 -157 36 -10 0 -62 l 45 -157 b 118 -89 45 -112 68 -89 b 337 -248 166 -89 239 -143 l 675 112 l 675 271 l 495 79 l 495 517 l 449 517 l 449 30 l 360 -65 l 360 517 l 315 517 l 315 -65 l 225 30 l 225 517 l 180 517 l 180 79 l 0 271 z"},accSagittalSharp49LUp:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 -82 l 135 -112 l 135 -517 l 180 -517 l 180 -127 l 271 -157 l 271 -517 l 315 -517 l 315 -173 l 540 -248 l 585 -248 l 585 -68 b 180 248 585 143 449 248 l 0 248 z m 45 112 l 180 112 b 540 -68 420 112 540 53 l 540 -145 l 45 16 z"},accSagittalFlat49LDown:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 180 -248 b 585 68 449 -248 585 -143 l 585 248 l 540 248 l 315 173 l 315 517 l 271 517 l 271 157 l 180 127 l 180 517 l 135 517 l 135 112 l 45 82 l 45 517 l 0 517 z m 45 -16 l 540 145 l 540 68 b 180 -112 540 -53 420 -112 l 45 -112 z"},accSagittalSharp11v19LUp:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 0 -517 l 45 -517 l 45 -81 l 135 -108 l 135 -517 l 180 -517 l 180 -121 l 271 -148 l 271 -517 l 315 -517 l 315 -161 l 631 -255 l 631 -157 l 45 16 l 45 144 l 631 -30 l 631 68 l 23 248 l 0 248 z"},accSagittalFlat11v19LDown:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 0 -248 l 23 -248 l 631 -68 l 631 30 l 45 -144 l 45 -16 l 631 157 l 631 255 l 315 161 l 315 517 l 271 517 l 271 148 l 180 121 l 180 517 l 135 517 l 135 108 l 45 81 l 45 517 l 0 517 z"},accSagittalSharp5v13LUp:{x_min:0,x_max:500,y_min:-359,y_max:172,ha:531,o:"m 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 -85 l 360 -120 l 360 -517 l 405 -517 l 405 -135 l 720 -256 l 720 -157 l 271 14 l 271 141 l 720 -30 l 720 68 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z"},accSagittalFlat5v13LDown:{x_min:0,x_max:500,y_min:-172,y_max:359,ha:531,o:"m 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 720 -68 l 720 30 l 271 -141 l 271 -14 l 720 157 l 720 256 l 405 135 l 405 517 l 360 517 l 360 120 l 271 85 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z"},accSagittalDoubleSharp23SDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 0 -203 l 45 -203 b 135 -23 45 -82 76 -23 l 301 -23 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 370 -14 b 449 112 423 10 449 53 l 449 248 l 428 248 b 315 68 402 127 364 68 l 240 68 b 89 157 140 68 89 98 l 45 157 b 68 53 45 115 52 81 b 0 -203 23 23 0 -63 z"},accSagittalDoubleFlat23SUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 68 -53 0 63 23 -23 b 45 -157 52 -81 45 -115 l 89 -157 b 240 -68 89 -98 140 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 -112 b 370 14 449 -53 423 -10 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 301 23 l 135 23 b 45 203 76 23 45 82 z"},accSagittalDoubleSharp49SDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 0 -292 l 45 -292 b 112 -157 45 -203 68 -157 l 256 -157 l 135 -503 l 187 -517 l 337 -82 l 490 -517 l 540 -503 l 366 0 l 396 89 b 449 157 416 102 435 125 l 449 248 l 428 248 b 315 157 413 187 376 157 l 112 157 b 0 -68 39 157 0 82 l 45 -68 b 135 68 45 23 76 68 l 287 68 l 311 0 l 288 -68 l 89 -68 b 0 -292 32 -68 0 -144 z"},accSagittalDoubleFlat49SUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 0 292 b 89 68 0 144 32 68 l 288 68 l 311 0 l 287 -68 l 135 -68 b 45 68 76 -68 45 -23 l 0 68 b 112 -157 0 -82 39 -157 l 315 -157 b 428 -248 376 -157 413 -187 l 449 -248 l 449 -157 b 396 -89 435 -125 416 -102 l 366 0 l 540 503 l 490 517 l 337 82 l 187 517 l 135 503 l 256 157 l 112 157 b 45 292 68 157 45 203 z"},accSagittalDoubleSharp7v19CDown:{x_min:0,x_max:375,y_min:-359,y_max:172,ha:531,o:"m 0 -112 l 0 -266 l 307 -7 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 386 59 l 449 112 l 449 248 l 428 248 b 130 68 285 127 186 68 b 45 157 73 68 45 98 l 0 157 b 112 -20 0 53 37 -6 z"},accSagittalDoubleFlat7v19CUp:{x_min:0,x_max:375,y_min:-172,y_max:359,ha:531,o:"m 112 20 b 0 -157 37 6 0 -53 l 45 -157 b 130 -68 45 -98 73 -68 b 428 -248 186 -68 285 -127 l 449 -248 l 449 -112 l 386 -59 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 307 7 l 0 266 l 0 112 z"},accSagittalDoubleSharp19CDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 0 68 l 0 -248 l 45 -248 l 45 -68 b 315 109 45 36 135 95 l 354 0 l 180 -503 l 232 -517 l 383 -82 l 534 -517 l 585 -503 l 410 0 l 449 112 l 495 112 l 495 248 l 360 248 b 0 68 120 248 0 187 z m 372 112 l 393 112 l 383 82 z"},accSagittalDoubleFlat19CUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 360 -248 0 -187 120 -248 l 495 -248 l 495 -112 l 449 -112 l 410 0 l 585 503 l 534 517 l 383 82 l 232 517 l 180 503 l 354 0 l 315 -109 b 45 68 135 -95 45 -36 l 45 248 l 0 248 z m 383 -82 l 393 -112 l 372 -112 z"},accSagittalDoubleSharp11v49CDown:{x_min:0,x_max:406,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 360 112 b 540 -68 480 112 540 53 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z"},accSagittalDoubleFlat11v49CUp:{x_min:0,x_max:406,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 360 -112 540 -53 480 -112 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z"},accSagittalDoubleSharp143CDown:{x_min:0,x_max:469,y_min:-359,y_max:172,ha:531,o:"m 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 337 49 l 675 -268 l 675 -112 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z"},accSagittalDoubleFlat143CUp:{x_min:0,x_max:469,y_min:-172,y_max:359,ha:531,o:"m 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 675 112 l 675 268 l 337 -49 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z"},accSagittalDoubleSharp17kDown:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 0 248 b 95 101 0 170 30 121 l 0 68 l 0 -30 l 364 96 l 399 0 l 390 -23 l 0 -157 l 0 -255 l 353 -135 l 225 -503 l 275 -517 l 428 -82 l 577 -517 l 631 -503 l 455 0 l 507 145 l 540 157 l 540 248 l 517 248 b 167 168 366 194 248 168 b 45 248 85 168 45 194 z m 416 115 l 442 124 l 428 82 z"},accSagittalDoubleFlat17kUp:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 45 -248 b 167 -168 45 -194 85 -168 b 517 -248 248 -168 366 -194 l 540 -248 l 540 -157 l 507 -145 l 455 0 l 631 503 l 577 517 l 428 82 l 275 517 l 225 503 l 353 135 l 0 255 l 0 157 l 390 23 l 399 0 l 364 -96 l 0 30 l 0 -68 l 95 -101 b 0 -248 30 -121 0 -170 z m 428 -82 l 442 -124 l 416 -115 z"},accSagittalDoubleSharp19sDown:{x_min:0,x_max:438,y_min:-359,y_max:172,ha:531,o:"m 0 -248 l 45 -248 l 45 -68 b 271 112 45 53 120 112 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 367 4 b 428 -23 386 -13 405 -23 l 495 -23 b 585 -203 554 -23 585 -84 l 631 -203 b 517 68 631 -23 593 68 l 449 68 b 337 248 400 68 363 127 l 225 248 b 0 68 75 248 0 187 z"},accSagittalDoubleFlat19sUp:{x_min:0,x_max:438,y_min:-172,y_max:359,ha:531,o:"m 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 b 449 -68 363 -127 400 -68 l 517 -68 b 631 203 593 -68 631 23 l 585 203 b 495 23 585 84 554 23 l 428 23 b 367 -4 405 23 386 13 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 271 -112 b 45 68 120 -112 45 -53 l 45 248 l 0 248 z"},accSagittalShaftUp:{x_min:0,x_max:31,y_min:-359,y_max:172,ha:531,o:"m 0 112 l 0 -517 l 45 -517 l 45 112 l 23 248 z"},accSagittalShaftDown:{x_min:0,x_max:31,y_min:-172,y_max:359,ha:531,o:"m 23 -248 l 45 -112 l 45 517 l 0 517 l 0 -112 z"},accSagittalAcute:{x_min:0,x_max:125,y_min:-62,y_max:125,ha:187,o:"m 0 0 l 0 -89 l 180 89 l 180 180 z"},accSagittalGrave:{x_min:0,x_max:125,y_min:-125,y_max:62,ha:187,o:"m 180 -180 l 180 -89 l 0 89 l 0 0 z"},accSagittal1MinaUp:{x_min:-7,x_max:124,y_min:16,y_max:106.31676725154982,ha:90.31676725154982,o:"m -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 134 150 179 112 163 135 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z"},accSagittal1MinaDown:{x_min:-7,x_max:124,y_min:-106.31676725154983,y_max:-16,ha:90.31676725154983,o:"m -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 179 -23 163 -135 179 -112 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z"},accSagittal2MinasUp:{x_min:-7,x_max:218,y_min:16,y_max:106.31676725154982,ha:90.31676725154982,o:"m -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 269 150 314 112 298 135 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z"},accSagittal2MinasDown:{x_min:-7,x_max:218,y_min:-106.31676725154983,y_max:-16,ha:90.31676725154983,o:"m -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z"},accSagittal1TinaUp:{x_min:0,x_max:93,y_min:16,y_max:107,ha:91,o:"m 134 154 l 91 154 b 81 76 91 101 91 86 b 0 68 73 69 48 68 l 0 23 b 134 154 122 23 134 36 z"},accSagittal1TinaDown:{x_min:0,x_max:93,y_min:-107,y_max:-16,ha:91,o:"m 134 -154 b 0 -23 134 -36 122 -23 l 0 -68 b 81 -76 48 -68 73 -69 b 91 -154 91 -86 91 -101 z"},accSagittal2TinasUp:{x_min:0,x_max:94,y_min:16,y_max:107,ha:91,o:"m 135 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z"},accSagittal2TinasDown:{x_min:0,x_max:94,y_min:-107,y_max:-16,ha:91,o:"m 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 z"},accSagittal3TinasUp:{x_min:-7,x_max:124,y_min:16,y_max:106.31676725154982,ha:90.31676725154982,o:"m -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 134 150 179 112 163 135 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z"},accSagittal3TinasDown:{x_min:-7,x_max:124,y_min:-106.31676725154983,y_max:-16,ha:90.31676725154983,o:"m -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 179 -23 163 -135 179 -112 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z"},accSagittal4TinasUp:{x_min:0,x_max:187,y_min:16,y_max:106.69999999999997,ha:90.69999999999997,o:"m 0 68 l 0 23 b 143 45 105 23 124 26 b 203 107 153 55 183 107 b 226 23 216 107 226 86 l 269 23 b 225 150 269 112 253 135 b 160 132 207 158 181 153 b 115 81 138 112 124 88 b 0 68 104 71 94 68 z"},accSagittal4TinasDown:{x_min:0,x_max:187,y_min:-106.69999999999999,y_max:-16,ha:90.69999999999999,o:"m 0 -68 b 115 -81 94 -68 104 -71 b 160 -132 124 -88 138 -112 b 225 -150 181 -153 207 -158 b 269 -23 253 -135 269 -112 l 226 -23 b 203 -107 226 -86 216 -107 b 143 -45 183 -107 153 -55 b 0 -23 124 -26 105 -23 z"},accSagittal5TinasUp:{x_min:0,x_max:218,y_min:16,y_max:107,ha:91,o:"m 135 23 b 187 45 156 23 168 26 b 249 107 197 55 228 107 b 271 23 262 107 271 86 l 314 23 b 269 150 314 112 298 135 b 204 132 252 158 226 153 b 160 81 183 112 168 88 b 135 68 148 71 147 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z"},accSagittal5TinasDown:{x_min:0,x_max:218,y_min:-107,y_max:-16,ha:91,o:"m 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 b 160 -81 147 -68 148 -71 b 204 -132 168 -88 183 -112 b 269 -150 226 -153 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 249 -107 271 -86 262 -107 b 187 -45 228 -107 197 -55 b 135 -23 168 -26 156 -23 z"},accSagittal6TinasUp:{x_min:-7,x_max:218,y_min:16,y_max:106.31676725154982,ha:90.31676725154982,o:"m -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 269 150 314 112 298 135 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z"},accSagittal6TinasDown:{x_min:-7,x_max:218,y_min:-106.31676725154983,y_max:-16,ha:90.31676725154983,o:"m -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z"},accSagittal7TinasUp:{x_min:0,x_max:281,y_min:16,y_max:106.69999999999997,ha:90.69999999999997,o:"m 0 68 l 0 23 b 143 45 105 23 124 26 b 203 107 153 55 183 107 b 226 23 216 107 226 86 l 269 23 b 298 65 269 23 291 55 b 343 107 314 86 331 107 b 361 23 354 107 363 86 l 405 23 b 360 150 405 112 389 135 b 294 130 343 158 311 150 b 264 92 281 115 272 104 b 225 150 258 127 245 140 b 160 132 207 158 181 153 b 115 81 138 112 124 88 b 0 68 104 71 94 68 z"},accSagittal7TinasDown:{x_min:0,x_max:281,y_min:-106.69999999999999,y_max:-16,ha:90.69999999999999,o:"m 0 -68 b 115 -81 94 -68 104 -71 b 160 -132 124 -88 138 -112 b 225 -150 181 -153 207 -158 b 264 -92 245 -140 258 -127 b 294 -130 272 -104 281 -115 b 360 -150 311 -150 343 -158 b 405 -23 389 -135 405 -112 l 361 -23 b 343 -107 363 -86 354 -107 b 298 -65 331 -107 314 -86 b 269 -23 291 -55 269 -23 l 226 -23 b 203 -107 226 -86 216 -107 b 143 -45 183 -107 153 -55 b 0 -23 124 -26 105 -23 z"},accSagittal8TinasUp:{x_min:0,x_max:312,y_min:16,y_max:107,ha:91,o:"m 135 23 b 187 45 156 23 168 26 b 249 107 197 55 228 107 b 271 23 262 107 271 86 l 314 23 b 343 65 314 23 336 55 b 387 107 359 86 376 107 b 406 23 399 107 408 86 l 449 23 b 405 150 449 112 433 135 b 338 130 387 158 356 150 b 308 92 325 115 317 104 b 269 150 302 127 289 140 b 204 132 252 158 226 153 b 160 81 183 112 168 88 b 135 68 148 71 147 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z"},accSagittal8TinasDown:{x_min:0,x_max:312,y_min:-107,y_max:-16,ha:91,o:"m 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 b 160 -81 147 -68 148 -71 b 204 -132 168 -88 183 -112 b 269 -150 226 -153 252 -158 b 308 -92 289 -140 302 -127 b 338 -130 317 -104 325 -115 b 405 -150 356 -150 387 -158 b 449 -23 433 -135 449 -112 l 406 -23 b 387 -107 408 -86 399 -107 b 343 -65 376 -107 359 -86 b 314 -23 336 -55 314 -23 l 271 -23 b 249 -107 271 -86 262 -107 b 187 -45 228 -107 197 -55 b 135 -23 168 -26 156 -23 z"},accSagittal9TinasUp:{x_min:-7,x_max:312,y_min:16,y_max:106.31676725154982,ha:90.31676725154982,o:"m -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 343 65 314 23 336 55 b 387 107 359 86 376 107 b 406 23 399 107 408 86 l 449 23 b 405 150 449 112 433 135 b 338 130 387 158 356 150 b 308 92 325 115 317 104 b 269 150 302 127 289 140 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z"},accSagittal9TinasDown:{x_min:-7,x_max:312,y_min:-106.31676725154983,y_max:-16,ha:90.31676725154983,o:"m -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 308 -92 289 -140 302 -127 b 338 -130 317 -104 325 -115 b 405 -150 356 -150 387 -158 b 449 -23 433 -135 449 -112 l 406 -23 b 387 -107 408 -86 399 -107 b 343 -65 376 -107 359 -86 b 314 -23 336 -55 314 -23 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z"},accSagittalFractionalTinaUp:{x_min:-3,x_max:35,y_min:73,y_max:111,ha:38,o:"m -4 132 b 23 105 -4 118 9 105 b 50 132 37 105 50 118 b 23 160 50 147 37 160 b -4 132 9 160 -4 147 z"},accSagittalFractionalTinaDown:{x_min:-3,x_max:35,y_min:-111,y_max:-73,ha:38,o:"m -4 -132 b 23 -160 -4 -147 9 -160 b 50 -132 37 -160 50 -147 b 23 -105 50 -118 37 -105 b -4 -132 9 -105 -4 -118 z"},accidentalNarrowReversedFlat:{x_min:0,x_max:164,y_min:-194,y_max:421,ha:615,o:"m 236 -279 l 236 606 l 192 606 l 192 179 b 85 243 150 222 114 243 b 0 84 23 243 0 134 b 112 -158 0 3 37 -78 z m 192 112 l 192 -163 l 135 -98 b 82 40 101 -50 82 -3 b 138 144 82 73 96 144 b 192 112 153 144 170 132 z"},accidentalNarrowReversedFlatAndFlat:{x_min:0,x_max:414,y_min:-194,y_max:421,ha:615,o:"m 281 606 l 281 -268 l 438 -158 b 596 84 547 -82 596 3 b 475 243 596 154 556 243 b 325 179 435 243 384 222 l 325 606 z m 235 -279 l 235 606 l 190 606 l 190 179 b 85 243 148 222 114 243 b 12 158 52 243 27 215 b 0 84 3 134 0 108 b 112 -158 0 3 37 -78 z m 325 111 b 410 144 359 132 386 144 b 498 36 462 144 498 84 b 413 -107 498 -9 469 -58 l 325 -173 z m 192 112 l 192 -163 l 135 -98 b 81 40 99 -50 81 -3 b 91 94 81 59 84 76 b 137 144 102 127 118 144 b 192 112 153 144 170 132 z"},accidentalWilsonPlus:{x_min:0,x_max:281,y_min:-203,y_max:203,ha:406,o:"m 405 268 l 225 98 l 225 292 l 180 292 l 180 56 l 0 -112 l 0 -268 l 180 -98 l 180 -292 l 225 -292 l 225 -56 l 405 112 z"},accidentalWilsonMinus:{x_min:0,x_max:281,y_min:-186,y_max:186,ha:372,o:"m 0 112 l 405 -268 l 405 -112 l 0 268 z"}},fontFamily:"Bravura",resolution:1e3,generatedOn:"2022-06-26T17:36:54.186Z"},Mb={name:"Bravura",smufl:!0,stave:{padding:12,endPaddingMax:10,endPaddingMin:5,unalignedNotePadding:10},accidental:{noteheadAccidentalPadding:1,leftPadding:2,accidentalSpacing:3},clef:{default:{point:32,width:26},small:{point:26,width:20},annotations:{"8va":{smuflCode:"timeSig8",default:{point:18,treble:{line:-1.4,shiftX:12}},small:{point:16,treble:{line:-.2,shiftX:8}}},"8vb":{smuflCode:"timeSig8",default:{point:18,treble:{line:6,shiftX:10},bass:{line:3.5,shiftX:1}},small:{point:16,treble:{line:5.3,shiftX:6},bass:{line:3.1,shiftX:.5}}}},lineCount:{8:{point:55,shiftY:14},7:{point:47,shiftY:8},6:{point:32,shiftY:1},5:{point:30,shiftY:-6},4:{point:23,shiftY:-12}}},parenthesis:{default:{point:39,width:7},gracenote:{point:23.4,width:3}},pedalMarking:{up:{point:40},down:{point:34}},digits:{shiftLine:-1,point:34,tupletPoint:22,shiftY:-6},articulation:{articStaccatissimoAbove:{padding:2},articStaccatissimoBelow:{padding:2}},tremolo:{default:{point:25,spacing:5,offsetYStemUp:-5,offsetYStemDown:5,offsetXStemUp:11,offsetXStemDown:1},grace:{point:18,spacing:4,offsetYStemUp:-5,offsetYStemDown:5,offsetXStemUp:7,offsetXStemDown:1}},staveRepetition:{symbolText:{offsetX:12,offsetY:25,spacing:5},coda:{offsetY:25},segno:{offsetY:10}},stem:{heightAdjustmentForFlag:-3,noteHead:{noteheadTriangleUpHalf:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpBlack:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpWhole:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadXHalf:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXBlack:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXWhole:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadHalf:{offsetYBaseStemUp:-2.55,offsetYBaseStemDown:2.65},noteheadBlack:{offsetYBaseStemUp:-2,offsetYBaseStemDown:2},noteheadSquareWhite:{offsetYBaseStemDown:-5,offsetYBaseStemUp:5}}},glyphs:{coda:{point:20,shiftX:-7,shiftY:8},segno:{shiftX:-7},flag:{shiftX:-.75,staveTempo:{shiftX:-1}},clef:{gClef:{default:{scale:1.1,shiftY:1},small:{shiftY:1.5}},fClef:{default:{shiftY:-.5}}},ornament:{ornamentTurn:{scale:1.2},ornamentTurnSlash:{scale:1.2}},stringNumber:{verticalPadding:8,stemPadding:2,leftPadding:5,rightPadding:6},stroke:{arrowheadBlackDown:{straight:{shiftX:-4.5},wiggly:{shiftX:-1,shiftY:1}},arrowheadBlackUp:{straight:{shiftX:-.85},wiggly:{shiftX:-1,shiftY:1}}},textNote:{point:34,breathMarkTick:{point:36,shiftY:9},breathMarkComma:{point:36},segno:{point:30,shiftX:-7,shiftY:8},coda:{point:20,shiftX:-7,shiftY:8},ornamentTrill:{shiftX:-8,shiftY:8},ornamentTurn:{point:42},ornamentTurnSlash:{point:42},ornamentMordent:{shiftX:-8},ornamentShortTrill:{shiftX:-8}},noteHead:{minPadding:2,standard:{restQuarterStemUp:{point:35},restQuarterStemDown:{point:35}},custom:{noteheadCircleXStemUp:{shiftX:1.5},noteheadCircleXStemDown:{shiftX:.25},noteheadDiamondHalfStemUp:{shiftX:1.5},noteheadDiamondBlackStemUp:{shiftX:1.5},noteheadDiamondWholeStemUp:{shiftX:1},noteheadXHalfStemUp:{shiftX:-2},noteheadXHalfStemDown:{shiftX:1},noteheadXWholeStemUp:{shiftX:-4},noteheadXWholeStemDown:{shiftX:1},noteheadXDoubleWholeStemUp:{shiftX:-4},noteheadXDoubleWholeStemDown:{shiftX:1},noteheadSquareWhiteStemDown:{shiftX:.25},noteheadSquareWhiteStemUp:{shiftX:-.75},noteheadSquareBlackStemUp:{shiftX:-.75},noteheadTriangleUpWholeStemUp:{shiftX:-.75}}},chordSymbol:{global:{superscriptOffset:-400,subscriptOffset:300,kerningOffset:-250,lowerKerningText:["D","F","P","T","V","Y"],upperKerningText:["A","L"],spacing:100,superSubRatio:.66},csymDiminished:{scale:.8,leftSideBearing:-32,advanceWidth:506,yOffset:0},csymHalfDiminished:{scale:.8,leftSideBearing:-32,advanceWidth:506,yOffset:0},csymAugmented:{scale:1,leftSideBearing:0,advanceWidth:530,yOffset:0},csymParensLeftTall:{scale:.8,leftSideBearing:-20,advanceWidth:184,yOffset:250},csymParensRightTall:{scale:.8,leftSideBearing:0,advanceWidth:189,yOffset:250},csymBracketLeftTall:{scale:.8,leftSideBearing:0,advanceWidth:328,yOffset:0},csymBracketRightTall:{scale:.8,leftSideBearing:1,advanceWidth:600,yOffset:0},csymParensLeftVeryTall:{scale:.9,leftSideBearing:50,advanceWidth:121,yOffset:350},csymParensRightVeryTall:{scale:.9,leftSideBearing:0,advanceWidth:111,yOffset:350},csymDiagonalArrangementSlash:{scale:.6,leftSideBearing:-1,advanceWidth:990,yOffset:0},csymMinor:{scale:.8,leftSideBearing:0,advanceWidth:482,yOffset:0},csymMajorSeventh:{scale:.9,leftSideBearing:200,yOffset:0,advanceWidth:600},accidentalSharp:{scale:.75,leftSideBearing:20,advanceWidth:250,yOffset:-302},accidentalFlat:{scale:.9,leftSideBearing:-20,advanceWidth:226,yOffset:-184}},jazzOrnaments:{brassScoop:{scale:1,xOffset:-12,yOffset:0,stemUpYOffset:0,reportedWidth:20},brassDoitMedium:{scale:1,xOffset:16,yOffset:0,stemUpYOffset:0,reportedWidth:22},brassFallLipShort:{scale:1,xOffset:16,yOffset:0,stemUpYOffset:0,reportedWidth:15},brassLiftMedium:{scale:1,xOffset:16,yOffset:5,stemUpYOffset:0,reportedWidth:5},brassFallRoughMedium:{scale:1,xOffset:16,yOffset:28,stemUpYOffset:0,reportedWidth:5},brassBend:{scale:1,xOffset:2,yOffset:-8,stemUpYOffset:25,reportedWidth:5},brassMuteClosed:{scale:1,xOffset:3,yOffset:-8,stemUpYOffset:25,reportedWidth:5},brassMuteOpen:{scale:1,xOffset:3,yOffset:-7,stemUpYOffset:25,reportedWidth:5},brassFlip:{scale:1,xOffset:10,yOffset:0,stemUpYOffset:7,reportedWidth:10},brassJazzTurn:{scale:1,xOffset:0,yOffset:0,stemUpYOffset:8,reportedWidth:31},brassSmear:{scale:1,xOffset:10,yOffset:0,stemUpYOffset:8,reportedWidth:5}},tuplet:{noteHeadOffset:20,stemOffset:10,bottomLine:4,topModifierOffset:15}}};const Fb={resolution:1e3,fontFamily:"VexFlowCustom",glyphs:{noteheadSquareWhite:{x_min:0,x_max:430.75,ha:386,o:"m 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 l 50 150 l 380 150 l 380 -150 l 50 -150 l 50 150 "},noteheadSquareBlack:{x_min:0,x_max:430.75,ha:386,o:"m 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 "},accidentalBuyukMucennebFlat:{x_min:-171.5,x_max:251.8125,ha:257,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 "},accidentalBakiyeFlat:{x_min:-176.9375,x_max:251.8125,ha:257,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 "},accidentalKucukMucennebSharp:{x_min:-1.359375,x_max:255.890625,ha:261,o:"m 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 "},accidentalKoron:{x_min:-20,x_max:320,ha:257,o:"m -8 200 b -8 210 8 200 16 200 l 20 148 -199 l 23 -615 b 0 -629 9 -629 6 -629 l -21 -612 l -21 -201 l -21 216 l -20 200 m 16 200 l 310 0 l 240 0 l 16 140 l 16 -120 l 240 0 l 310 0 l 16 -200 "},accidentalSori:{x_min:-10.890625,x_max:299.4375,ha:294,o:"m 44 174 b 51 174 47 174 49 174 b 68 173 55 174 61 174 l 287 112 l 551 40 b 615 20 617 22 609 23 b 626 0 622 16 626 8 b 615 -22 626 -9 622 -18 b 613 -23 613 -23 613 -23 b 613 -23 613 -23 613 -23 b 287 -113 613 -24 597 -29 l 68 -174 b 53 -176 61 -176 57 -176 b 39 -172 47 -176 43 -174 b 27 -151 31 -167 27 -159 b 39 -129 27 -141 31 -133 b 230 -74 43 -124 20 -131 l 370 -36 l 468 -9 b 498 0 484 -4 498 -1 b 468 8 498 0 484 2 l 370 34 l 230 73 b 40 126 28 129 43 124 b 27 149 31 131 27 140 b 44 174 27 161 34 170 m 205 110 l 205 300 b 205 330 245 330 245 300 l 245 300 l 245 -300 b 245 -330 205 -330 205 -300 l 205 -300 l 205 110 l 345 90 m 345 90 l 345 330 b 345 360 385 360 385 330 l 385 330 l 385 -270 b 385 -300 345 -300 345 -270 l 345 -270 l 345 90 "},vexAccidentalMicrotonal2:{x_min:-1.359375,x_max:386.5625,ha:394,o:"m 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 "},vexAccidentalMicrotonal3:{x_min:0,x_max:430.75,ha:360,o:"m -146 537 b -138 538 -143 538 -141 538 b -118 525 -129 538 -121 533 b -117 390 -117 522 -117 521 b -115 259 -117 268 -117 259 b -115 259 -115 259 -115 259 b -59 272 -104 263 -62 272 b -39 259 -50 272 -42 267 b -37 209 -38 257 -37 233 b -39 159 -37 185 -38 162 b -85 138 -43 149 -44 149 l -117 131 l -117 21 b -115 -88 -117 -80 -117 -88 b -115 -88 -115 -88 -115 -88 b -59 -75 -104 -84 -62 -75 b -44 -81 -52 -75 -48 -77 b -38 -124 -38 -87 -38 -85 b -38 -138 -38 -124 -38 -138 b -38 -152 -38 -138 -38 -152 b -44 -195 -38 -191 -38 -190 b -85 -209 -48 -200 -48 -200 l -117 -217 l -117 -349 b -118 -486 -117 -481 -117 -482 b -138 -499 -121 -494 -129 -499 b -153 -493 -143 -499 -149 -497 b -159 -415 -158 -487 -159 -496 b -159 -355 -159 -398 -159 -379 b -159 -227 -159 -284 -159 -227 b -205 -238 -159 -227 -180 -232 b -250 -249 -230 -244 -250 -249 b -251 -386 -251 -249 -251 -311 b -252 -525 -251 -521 -251 -522 b -272 -538 -255 -534 -264 -538 b -287 -532 -277 -538 -283 -536 b -293 -452 -292 -527 -293 -536 b -293 -391 -293 -436 -293 -415 b -294 -260 -293 -269 -293 -260 b -294 -260 -294 -260 -294 -260 b -348 -272 -306 -264 -345 -272 b -368 -259 -357 -272 -365 -267 b -369 -209 -369 -257 -369 -233 b -368 -159 -369 -185 -369 -162 b -323 -139 -364 -149 -362 -148 l -293 -131 l -293 -22 b -294 87 -293 80 -293 87 b -294 87 -294 87 -294 87 b -348 75 -306 84 -345 75 b -368 88 -357 75 -365 80 b -369 138 -369 91 -369 114 b -368 188 -369 162 -369 186 b -323 209 -364 198 -362 199 l -293 216 l -293 349 b -292 486 -293 481 -293 482 b -272 499 -288 494 -280 499 b -257 493 -266 499 -261 497 b -251 414 -251 487 -251 496 b -251 354 -251 398 -251 378 b -251 226 -251 284 -251 226 b -205 238 -250 226 -230 231 b -159 249 -180 244 -159 249 b -159 385 -159 249 -159 310 b -157 525 -159 521 -159 522 b -146 537 -156 530 -151 535 z m -159 11 b -159 120 -159 98 -159 120 l -159 120 b -175 116 -160 120 -167 119 b -221 105 -184 114 -204 109 l -251 98 l -251 -12 b -251 -121 -251 -72 -251 -121 b -205 -110 -250 -121 -230 -116 b -159 -99 -180 -104 -159 -99 b -159 11 -159 -99 -159 -49 z m 89 517 b 97 519 92 518 94 519 b 117 505 106 519 114 513 b 119 376 119 502 119 501 l 119 249 l 145 258 b 176 267 169 266 172 267 b 177 267 176 267 177 267 b 196 255 186 267 192 263 l 197 252 l 197 205 b 197 181 197 195 197 187 b 193 149 197 153 197 153 b 152 131 190 144 187 143 l 119 120 l 119 10 b 119 -100 119 -62 119 -100 b 145 -91 120 -100 131 -96 b 173 -82 159 -86 171 -82 b 176 -81 174 -81 175 -81 b 196 -94 185 -81 193 -87 b 198 -151 197 -97 198 -125 b 197 -194 198 -172 197 -192 b 153 -218 193 -203 192 -204 l 119 -230 l 119 -367 l 118 -504 l 117 -507 b 97 -519 113 -514 105 -519 b 82 -512 92 -519 87 -517 b 76 -434 77 -507 76 -516 b 76 -374 76 -418 76 -398 b 76 -245 76 -303 76 -245 b 52 -254 76 -245 65 -249 b 19 -263 34 -260 25 -263 b 6 -257 13 -263 10 -261 b 0 -214 0 -251 0 -253 b 0 -200 0 -210 0 -205 b 0 -188 0 -196 0 -192 b 6 -143 0 -147 0 -149 b 46 -126 10 -139 10 -139 l 76 -115 l 76 -5 b 76 106 76 56 76 106 b 51 98 76 106 64 102 b 18 89 34 92 25 89 b 6 95 13 89 10 91 b 0 139 0 101 0 99 b 0 153 0 143 0 148 b 0 179 0 163 0 172 b 44 225 0 215 3 211 l 76 236 l 76 369 b 78 505 76 501 76 502 b 89 517 80 510 85 515 z "},vexAccidentalMicrotonal4:{x_min:0,x_max:430.75,ha:360,o:"m 283 633 b 291 634 286 634 289 634 b 311 621 300 634 308 629 b 313 505 313 618 313 617 b 313 393 313 443 313 393 b 378 425 313 393 343 407 l 443 458 l 448 458 b 449 458 449 458 449 458 b 471 437 462 458 471 448 b 469 429 471 434 470 432 b 387 382 466 421 469 423 l 313 344 l 313 247 l 313 150 l 315 152 b 433 201 353 184 394 201 b 479 193 448 201 464 198 b 549 86 524 177 549 135 b 526 1 549 59 541 29 b 395 -143 504 -39 475 -71 b 316 -214 351 -182 341 -191 b 292 -229 302 -228 300 -229 b 272 -216 283 -229 275 -224 b 271 55 271 -212 271 -212 b 270 323 271 203 270 323 b 205 291 270 323 241 308 l 140 258 l 135 258 b 134 258 135 258 134 258 b 112 279 121 258 112 267 b 114 287 112 281 113 284 b 196 334 117 295 114 293 l 271 371 l 271 495 b 272 621 271 617 271 618 b 283 633 274 626 279 631 z m 404 133 b 391 134 400 134 395 134 b 384 134 388 134 386 134 b 318 88 358 130 335 114 l 313 81 l 313 -37 l 313 -156 l 316 -152 b 439 83 391 -71 439 22 l 439 84 b 404 133 439 115 430 128 z m -8 633 l -8 633 b 0 634 -6 634 -3 634 b 20 621 8 634 17 629 b 21 384 21 618 21 617 l 21 150 l 24 152 b 141 201 62 184 102 201 b 187 193 157 201 172 198 b 257 86 232 177 257 135 b 234 1 257 59 250 29 b 103 -143 212 -39 183 -71 b 24 -214 60 -182 49 -191 b 0 -229 10 -228 8 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 203 l -21 618 l -20 621 b -8 633 -18 626 -13 631 z m 113 133 l 113 133 b 99 134 109 134 103 134 b 93 134 97 134 94 134 b 26 88 66 130 43 114 l 21 81 l 21 -37 l 21 -156 l 25 -152 b 148 83 99 -71 148 22 l 148 84 b 113 133 148 115 138 128 z "},vexNoteHeadRectBlack:{x_min:0,x_max:430.75,ha:360,o:"m 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 "},vexNoteHeadRectWhite:{x_min:0,x_max:430.75,ha:360,o:"m 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 l 50 100 l 380 100 l 380 -100 l 50 -100 l 50 100"}}},Ab={name:"VexFlowCustom",smufl:!1,glyphs:{}};const Nb={glyphs:{bracketTop:{x_min:0,x_max:559.421875,ha:571,o:"m 544 204 b 548 204 545 204 547 204 b 559 194 555 204 559 199 b 559 190 559 192 559 191 b 530 156 559 188 556 184 b 462 86 510 134 481 104 b 453 76 458 81 454 77 l 446 70 l 441 65 b 434 59 439 63 436 61 l 427 54 b 409 37 426 51 416 44 b 392 23 398 29 394 26 b 387 19 389 22 387 20 b 379 13 386 19 383 16 l 371 8 l 367 5 l 359 -1 l 337 -16 b 285 -48 319 -29 298 -41 l 279 -52 b 186 -95 255 -66 210 -87 l 175 -99 b 23 -129 127 -117 68 -129 b 17 -129 20 -129 19 -129 b 1 -123 2 -129 2 -129 b 0 -49 0 -122 0 -83 b 0 4 0 -22 0 1 b 27 11 2 9 4 9 b 185 31 78 12 145 20 b 198 34 186 31 193 33 b 314 73 234 44 277 58 b 349 88 328 79 340 84 b 353 90 352 90 353 90 b 363 94 353 90 357 93 b 371 98 367 97 371 98 b 428 129 372 98 413 120 b 461 148 441 136 454 144 b 468 151 464 149 466 151 b 472 154 469 152 470 154 b 481 161 473 155 477 158 b 525 190 490 166 518 186 l 534 197 b 540 201 536 198 539 199 b 544 204 541 202 544 204 "},bracketBottom:{x_min:0,x_max:559.421875,ha:571,o:"m 5 127 b 14 127 6 127 9 127 b 51 126 25 127 43 127 b 175 98 93 122 138 112 l 186 94 b 279 51 210 86 255 65 b 285 47 280 51 283 48 b 319 27 291 44 311 31 l 326 22 b 359 0 332 19 352 4 l 367 -6 b 371 -9 368 -6 370 -8 l 379 -15 b 387 -22 383 -18 386 -20 l 398 -30 l 411 -40 l 417 -47 l 427 -55 l 434 -61 b 441 -66 436 -62 439 -65 l 446 -72 l 453 -77 l 462 -87 b 558 -188 490 -113 549 -176 b 559 -195 559 -191 559 -194 b 548 -205 559 -201 555 -205 b 541 -204 547 -205 544 -205 b 534 -198 539 -201 536 -199 l 525 -191 b 481 -162 518 -187 490 -167 b 472 -155 477 -159 472 -156 b 468 -152 470 -155 469 -154 b 461 -149 466 -152 464 -151 b 428 -130 454 -145 441 -137 b 371 -99 413 -122 372 -99 b 363 -95 371 -99 367 -98 b 353 -91 357 -94 353 -91 b 348 -90 353 -91 352 -91 b 332 -81 343 -87 341 -86 b 27 -12 230 -37 127 -13 b 0 -5 4 -11 2 -11 b 0 58 0 -2 0 27 b 0 122 0 88 0 120 b 5 127 1 124 4 126 "},barlineTick:{x_min:-80.3125,x_max:78.9375,ha:81,o:"m 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 "},breathMarkTick:{x_min:-80.3125,x_max:78.9375,ha:81,o:"m 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 "},segno:{x_min:-330.75,x_max:329.390625,ha:336,o:"m -133 483 b -117 484 -127 484 -122 484 b 31 373 -51 484 9 440 b 35 348 34 365 35 356 b -25 285 35 313 10 285 b -87 331 -55 285 -76 302 b -167 402 -100 376 -133 402 b -191 398 -175 402 -183 401 b -227 341 -215 388 -227 369 b -225 320 -227 334 -227 327 b -13 74 -209 230 -125 133 b 6 65 -4 70 5 66 l 9 63 l 10 65 b 117 231 12 68 40 112 l 189 341 l 242 424 b 268 460 262 456 264 458 b 283 464 273 463 277 464 b 308 438 296 464 308 453 l 308 437 b 287 396 308 430 308 428 l 95 98 l 59 43 l 58 41 l 65 37 b 253 -156 151 -8 217 -77 b 281 -285 272 -199 281 -244 b 148 -481 281 -381 231 -463 b 115 -485 137 -484 126 -485 b -32 -376 51 -485 -9 -442 b -36 -349 -35 -366 -36 -358 b 25 -287 -36 -315 -12 -287 b 85 -333 54 -287 74 -302 b 166 -403 99 -377 133 -403 b 190 -399 174 -403 182 -402 b 225 -342 215 -390 225 -370 b 224 -322 225 -335 225 -328 b 12 -76 208 -231 125 -134 b -8 -66 2 -72 -6 -68 l -10 -65 l -12 -66 b -118 -231 -13 -68 -42 -113 l -190 -342 l -243 -426 b -269 -462 -264 -458 -265 -458 b -284 -466 -274 -464 -279 -466 b -310 -440 -298 -466 -310 -455 l -310 -438 b -288 -398 -310 -430 -308 -430 l -96 -99 l -59 -44 l -59 -43 l -66 -38 b -281 284 -198 33 -281 158 l -281 284 b -133 483 -281 392 -220 474 m 254 177 b 266 179 258 177 262 179 b 319 149 287 179 307 167 b 329 115 326 140 329 127 b 319 79 329 102 326 90 b 268 51 307 61 287 51 b 221 72 250 51 234 58 b 205 115 210 84 205 99 b 254 177 205 142 223 170 m -281 -54 b -269 -52 -277 -52 -273 -52 b -223 -73 -253 -52 -235 -59 b -206 -116 -212 -84 -206 -101 b -216 -151 -206 -129 -209 -141 b -269 -179 -228 -170 -249 -179 b -314 -159 -285 -179 -302 -173 b -330 -116 -325 -147 -330 -131 b -281 -54 -330 -88 -313 -61 "},coda:{x_min:-311.6875,x_max:310.328125,ha:317,o:"m -9 388 b -2 390 -8 390 -5 390 b 5 388 1 390 4 390 b 19 378 10 387 16 383 b 23 333 23 371 23 371 b 24 298 23 299 24 298 b 81 276 34 298 65 285 b 213 91 145 240 190 177 b 224 24 217 76 224 36 b 257 24 224 24 235 24 b 299 19 292 24 292 24 b 310 -1 306 15 310 6 b 299 -23 310 -11 306 -19 b 257 -27 292 -27 292 -27 b 224 -29 235 -27 224 -29 b 213 -95 224 -40 217 -80 b 81 -280 190 -181 145 -244 b 24 -301 65 -290 34 -301 b 23 -335 24 -301 23 -303 l 23 -340 b 17 -381 23 -374 23 -374 b -1 -391 13 -388 5 -391 b -21 -381 -9 -391 -17 -388 b -27 -340 -27 -374 -27 -374 l -27 -335 b -28 -301 -27 -303 -27 -301 b -85 -280 -38 -301 -69 -290 b -217 -95 -149 -244 -194 -181 b -228 -29 -221 -80 -228 -40 b -259 -27 -228 -29 -238 -27 b -300 -23 -294 -27 -294 -27 b -311 -2 -307 -19 -311 -11 b -294 23 -311 8 -304 19 b -259 24 -291 23 -284 24 b -228 24 -239 24 -228 24 b -217 91 -228 36 -221 76 b -85 276 -194 177 -149 240 b -28 298 -69 285 -38 298 b -27 333 -27 298 -27 299 b -27 371 -27 362 -27 369 b -9 388 -24 378 -17 385 m -27 136 b -28 247 -27 197 -28 247 b -61 216 -31 247 -53 226 b -123 33 -95 172 -121 98 l -125 24 l -76 24 l -27 24 l -27 136 m 29 242 b 24 247 27 245 24 247 b 23 136 24 247 23 197 l 23 24 l 72 24 l 121 24 l 119 33 b 29 242 115 116 77 206 m -27 -140 l -27 -27 l -76 -27 l -125 -27 l -123 -36 b -61 -220 -121 -102 -95 -176 b -28 -251 -53 -230 -31 -251 b -27 -140 -28 -251 -27 -201 m 119 -36 l 121 -27 l 72 -27 l 23 -27 l 23 -140 b 24 -251 23 -201 24 -251 b 57 -220 27 -251 49 -230 b 119 -36 91 -176 117 -102 "},gClef:{x_min:-1.359375,x_max:847.96875,ha:865,o:"m 488 1499 b 495 1500 490 1500 492 1500 b 541 1465 507 1500 521 1490 b 679 1078 622 1372 679 1210 b 677 1050 679 1068 677 1060 b 477 642 668 893 604 764 l 443 609 l 431 596 l 431 592 l 438 562 l 449 508 l 460 458 b 481 355 475 390 481 355 b 481 355 481 355 481 355 b 490 356 481 355 485 355 b 528 358 495 356 511 358 b 558 356 540 358 552 356 b 839 95 699 338 808 237 b 847 22 845 72 847 47 b 631 -303 847 -113 766 -242 b 620 -309 623 -308 620 -309 l 620 -310 b 631 -359 620 -310 626 -333 l 646 -435 l 660 -496 b 672 -588 668 -535 672 -563 b 664 -653 672 -610 669 -630 b 383 -875 630 -792 509 -875 b 201 -810 321 -875 257 -855 b 129 -680 151 -768 129 -730 b 274 -530 129 -592 200 -530 b 351 -553 300 -530 326 -538 b 412 -669 393 -582 412 -626 b 287 -805 412 -735 366 -800 l 279 -805 l 285 -809 b 383 -830 318 -823 351 -830 b 586 -718 464 -830 540 -789 b 626 -584 612 -678 626 -631 b 619 -528 626 -566 623 -548 b 612 -495 619 -526 616 -510 b 577 -324 590 -387 577 -324 b 577 -324 577 -324 577 -324 b 568 -326 575 -324 571 -324 b 528 -334 558 -328 537 -333 b 465 -338 506 -337 485 -338 b 24 -11 269 -338 87 -206 b -1 145 8 41 -1 93 b 96 442 -1 249 32 351 b 322 714 166 541 236 626 l 352 745 l 345 782 l 332 843 l 315 921 b 303 984 310 950 304 978 b 295 1082 298 1017 295 1049 b 413 1426 295 1208 336 1329 b 488 1499 436 1456 477 1496 m 549 1301 b 541 1301 547 1301 544 1301 b 411 1207 500 1301 447 1263 b 355 1004 374 1152 355 1079 b 359 942 355 984 356 963 b 371 881 362 927 363 917 l 385 818 b 392 782 389 799 392 784 l 392 782 b 434 828 393 782 424 816 b 607 1165 534 941 594 1060 b 608 1193 608 1175 608 1183 b 597 1270 608 1224 604 1254 b 549 1301 589 1286 571 1299 m 398 528 b 393 555 396 542 393 553 b 392 555 393 555 393 555 b 317 470 390 555 347 505 b 190 298 266 408 212 334 b 127 70 148 227 127 148 b 155 -77 127 19 137 -30 b 468 -303 209 -216 333 -303 b 519 -299 484 -303 502 -302 b 568 -284 541 -295 568 -287 l 568 -284 b 563 -263 568 -284 566 -274 l 534 -120 l 511 -13 l 496 61 l 480 133 b 469 187 472 176 469 187 b 468 188 469 187 469 188 b 416 162 462 188 430 172 b 337 13 364 126 337 69 b 413 -124 337 -40 363 -93 b 428 -144 424 -131 428 -137 b 428 -149 428 -145 428 -148 b 409 -166 426 -161 419 -166 b 394 -162 405 -166 400 -165 b 240 77 302 -122 240 -27 l 240 77 b 430 342 240 197 315 301 l 436 344 l 426 394 l 398 528 m 548 194 b 526 195 540 195 532 195 b 519 195 524 195 521 195 l 514 195 l 518 177 l 539 79 l 552 15 l 566 -48 l 594 -187 l 605 -240 b 612 -266 609 -254 611 -266 b 612 -266 612 -266 612 -266 b 641 -248 613 -266 630 -256 b 744 -98 692 -212 730 -156 b 751 -40 749 -79 751 -59 b 548 194 751 76 665 181 "},cClef:{x_min:0,x_max:873.828125,ha:892,o:"m 0 0 l 0 703 l 81 703 l 164 703 l 164 0 l 164 -705 l 81 -705 l 0 -705 l 0 0 m 225 0 l 225 703 l 246 703 l 268 703 l 268 366 l 268 30 l 274 36 b 314 79 284 44 302 63 b 413 302 357 137 392 213 b 432 327 419 324 421 327 b 449 306 443 327 447 322 b 611 115 457 195 529 115 b 651 122 624 115 638 117 b 728 316 705 140 724 188 b 729 388 728 342 729 366 b 671 635 729 533 711 602 b 581 662 649 652 616 662 b 477 637 545 662 510 653 l 475 635 l 477 634 b 503 627 488 632 495 631 b 545 556 532 612 545 584 b 491 480 545 524 526 491 b 465 474 481 476 473 474 b 379 563 417 474 379 516 b 389 602 379 576 382 588 b 541 691 409 641 479 681 b 582 694 555 692 568 694 b 865 462 714 694 834 598 b 873 392 871 440 873 416 b 865 317 873 367 871 341 b 639 84 839 194 748 101 b 612 83 630 83 620 83 b 511 116 577 83 543 94 b 504 120 509 119 506 120 b 504 120 504 120 504 120 b 469 59 504 120 488 93 l 432 -1 l 469 -61 b 504 -122 488 -94 504 -122 b 504 -122 504 -122 504 -122 b 511 -117 506 -122 509 -120 b 612 -84 543 -95 577 -84 b 665 -91 630 -84 647 -87 b 869 -338 771 -122 850 -216 b 873 -392 872 -356 873 -374 b 798 -595 873 -469 847 -539 b 581 -695 741 -662 660 -695 b 406 -626 517 -695 454 -671 b 381 -563 389 -607 381 -585 b 465 -477 381 -519 413 -477 b 545 -559 514 -477 545 -519 b 503 -628 545 -587 532 -613 b 477 -635 495 -632 488 -634 l 475 -637 l 477 -638 b 581 -663 510 -655 545 -663 b 671 -637 616 -663 649 -653 b 729 -391 711 -603 729 -534 b 728 -317 729 -367 728 -344 b 623 -117 722 -173 698 -124 b 611 -116 619 -116 615 -116 b 449 -308 528 -116 457 -198 b 432 -328 447 -323 443 -328 b 413 -303 421 -328 419 -326 b 314 -80 392 -215 357 -138 b 274 -37 302 -65 284 -45 l 268 -31 l 268 -367 l 268 -705 l 246 -705 l 225 -705 l 225 0 "},fClef:{x_min:-1.359375,x_max:899.703125,ha:918,o:"m 307 349 b 332 351 315 351 323 351 b 443 340 367 351 408 347 b 741 47 607 306 720 195 b 744 0 743 31 744 16 b 660 -303 744 -90 713 -206 b 28 -755 534 -531 304 -695 b 14 -756 23 -755 19 -756 b -1 -741 4 -756 -1 -750 b 21 -720 -1 -731 1 -728 b 567 -56 337 -601 548 -344 b 568 -11 568 -41 568 -24 b 442 285 568 129 525 233 b 325 319 406 308 367 319 b 93 177 232 319 137 266 b 84 154 91 170 84 155 b 84 154 84 154 84 154 b 88 156 84 154 85 155 b 159 177 110 170 134 177 b 257 134 194 177 231 162 b 294 41 281 108 294 73 b 171 -97 294 -24 246 -90 b 156 -98 166 -97 161 -98 b 6 74 73 -98 6 -22 b 6 80 6 76 6 79 b 307 349 10 223 141 340 m 839 215 b 845 216 841 216 842 216 b 862 213 852 216 860 215 b 899 163 887 206 899 184 b 872 117 899 145 890 127 b 847 111 865 112 856 111 b 808 130 833 111 818 117 b 796 162 800 140 796 151 b 839 215 796 187 812 212 m 839 -112 b 845 -112 841 -112 842 -112 b 862 -115 852 -112 860 -113 b 899 -165 887 -122 899 -144 b 872 -210 899 -183 890 -201 b 847 -217 865 -215 856 -217 b 808 -198 833 -217 818 -210 b 796 -165 800 -188 796 -177 b 839 -112 796 -140 812 -116 "},unpitchedPercussionClef1:{x_min:0,x_max:464.140625,ha:474,o:"m 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 "},"6stringTabClef":{x_min:-1.359375,x_max:680.5625,ha:694,o:"m 597 1042 b 604 1042 600 1042 602 1042 b 642 1002 627 1042 642 1022 b 619 966 642 988 635 974 b 439 927 574 942 503 927 l 426 927 l 426 921 b 430 838 428 893 430 866 b 345 480 430 696 398 560 b 179 391 307 423 249 391 b 156 392 171 391 164 392 b 138 394 149 394 142 394 b 103 434 115 396 103 416 b 129 471 103 451 111 466 b 141 474 133 473 137 474 b 172 459 153 474 164 469 b 181 455 175 456 176 455 b 187 456 182 455 185 455 b 253 520 212 460 234 483 b 315 836 294 605 315 714 b 311 928 315 867 314 898 b 302 945 310 943 311 942 b 245 953 283 950 262 953 b 130 891 193 953 149 931 b 84 860 119 870 102 860 b 36 905 61 860 39 877 b 36 910 36 907 36 909 b 80 970 36 931 50 949 b 249 1017 125 1000 187 1017 b 322 1009 273 1017 299 1014 l 341 1003 b 436 991 372 995 406 991 b 577 1031 495 991 545 1004 b 597 1042 583 1038 590 1041 m 416 360 b 424 360 419 360 421 360 b 481 309 454 360 479 338 b 503 145 484 280 495 199 b 585 -185 525 16 555 -106 b 630 -245 596 -213 613 -237 l 634 -247 l 638 -245 b 647 -244 641 -245 645 -244 b 680 -278 666 -244 680 -262 b 664 -308 680 -290 675 -301 b 638 -312 658 -310 650 -312 b 613 -309 631 -312 623 -310 b 477 -201 555 -303 502 -260 b 417 -2 460 -159 434 -72 b 416 5 417 1 416 5 b 416 5 416 5 416 5 b 411 -5 415 5 413 0 b 359 -97 397 -33 377 -70 b 353 -106 355 -102 353 -105 b 359 -112 353 -108 355 -109 b 409 -130 375 -123 390 -129 b 426 -134 420 -130 421 -131 b 431 -147 428 -137 431 -141 b 420 -162 431 -152 427 -159 b 382 -169 409 -166 396 -169 b 323 -155 363 -169 341 -165 l 317 -152 l 314 -155 b 62 -303 240 -240 148 -295 b 36 -305 55 -305 44 -305 b 23 -303 29 -305 24 -305 b -1 -273 6 -299 -1 -287 b 31 -240 -1 -256 10 -240 b 36 -240 32 -240 34 -240 b 42 -241 38 -241 39 -241 b 134 -204 63 -241 99 -226 b 367 288 265 -115 357 81 b 375 330 368 313 370 320 b 416 360 383 347 400 358 m 360 -359 b 379 -359 363 -359 371 -359 b 424 -360 396 -359 416 -359 b 646 -502 536 -373 624 -430 b 649 -527 649 -510 649 -519 b 530 -673 649 -578 604 -635 l 521 -677 l 529 -681 b 653 -811 592 -714 637 -762 b 660 -853 658 -827 660 -839 b 645 -911 660 -873 656 -892 b 426 -1021 608 -981 519 -1021 b 283 -989 377 -1021 328 -1011 b 235 -949 249 -972 239 -964 b 234 -936 234 -946 234 -941 b 234 -928 234 -934 234 -931 l 235 -925 l 234 -927 l 225 -934 b 87 -982 186 -966 138 -982 b 80 -982 85 -982 83 -982 b 55 -981 70 -981 58 -981 b 17 -943 32 -981 17 -964 b 54 -904 17 -921 35 -904 b 78 -914 62 -904 72 -909 l 83 -918 l 88 -918 b 190 -831 122 -918 166 -881 b 269 -506 242 -727 269 -612 b 268 -462 269 -492 269 -477 b 266 -449 266 -458 266 -452 b 265 -444 266 -445 266 -444 b 257 -446 264 -444 261 -445 b 132 -545 196 -470 152 -505 b 88 -573 122 -563 104 -573 b 39 -523 63 -573 39 -553 b 63 -476 39 -505 44 -494 b 360 -359 136 -408 235 -369 m 419 -424 b 393 -423 411 -423 406 -423 l 375 -423 l 377 -426 b 379 -439 377 -427 378 -434 b 383 -510 382 -463 383 -487 b 314 -811 383 -609 360 -710 b 266 -893 296 -850 285 -870 b 264 -898 265 -896 264 -898 l 264 -898 b 264 -898 264 -898 264 -898 b 268 -898 264 -898 266 -898 b 273 -898 270 -898 272 -898 b 300 -909 283 -898 291 -900 b 426 -957 340 -941 385 -957 b 476 -949 443 -957 460 -954 b 547 -853 522 -931 547 -893 b 485 -745 547 -816 526 -775 b 397 -707 460 -727 432 -714 b 366 -675 375 -703 366 -692 b 396 -642 366 -657 377 -645 b 530 -557 455 -637 511 -601 b 536 -527 534 -548 536 -537 b 419 -424 536 -480 490 -437 "},timeSig0:{x_min:0,x_max:514.5,ha:525,o:"m 236 648 b 246 648 238 648 242 648 b 288 646 261 648 283 648 b 472 513 364 634 428 587 b 514 347 502 464 514 413 b 462 163 514 272 499 217 b 257 44 409 83 333 44 b 50 163 181 44 103 83 b 0 347 14 217 0 272 b 40 513 0 413 12 464 b 236 648 87 591 155 638 m 277 614 b 253 616 273 616 261 616 b 242 616 247 616 243 616 b 170 499 193 609 181 589 b 159 348 163 446 159 398 b 166 222 159 308 161 266 b 201 91 174 138 183 106 b 257 76 215 81 235 76 b 311 91 277 76 299 81 b 347 222 330 106 338 138 b 353 348 352 266 353 308 b 344 499 353 398 351 446 b 277 614 333 587 322 606 m 257 -1 l 258 -1 l 255 -1 l 257 -1 m 257 673 l 258 673 l 255 673 l 257 673 "},timeSig1:{x_min:-1.359375,x_max:344.359375,ha:351,o:"m 126 637 l 129 638 l 198 638 l 266 638 l 269 635 b 274 631 272 634 273 632 l 277 627 l 277 395 b 279 156 277 230 277 161 b 329 88 281 123 295 106 b 344 69 341 81 344 79 b 337 55 344 62 343 59 l 333 54 l 197 54 l 61 54 l 58 55 b 50 69 53 59 50 62 b 65 88 50 79 53 81 b 80 97 72 91 74 93 b 117 156 103 113 112 129 b 117 345 117 161 117 222 l 117 528 l 100 503 l 38 406 b 14 383 24 384 23 383 b -1 398 5 383 -1 390 b 4 415 -1 403 1 409 b 16 437 5 416 10 426 l 72 539 l 100 596 b 121 632 119 631 119 631 b 126 637 122 634 125 635 m 171 -1 l 172 -1 l 170 -1 l 171 -1 m 171 673 l 172 673 l 170 673 l 171 673 "},timeSig2:{x_min:-1.359375,x_max:458.6875,ha:468,o:"m 197 648 b 216 648 201 648 208 648 b 258 646 232 648 253 648 b 419 546 333 637 393 599 b 432 489 428 528 432 509 b 356 342 432 440 405 384 b 235 278 322 313 288 295 b 69 170 166 256 107 217 b 69 169 69 170 69 169 b 69 169 69 169 69 169 b 74 173 69 169 72 170 b 209 222 112 204 163 222 b 310 195 247 222 274 215 b 371 179 332 184 352 179 b 396 181 379 179 387 179 b 428 202 409 184 423 194 b 442 212 431 209 436 212 b 458 197 450 212 458 206 b 441 148 458 190 449 165 b 299 44 409 84 353 44 b 288 45 295 44 292 44 b 250 61 274 45 268 49 b 122 99 212 86 164 99 b 73 91 104 99 88 97 b 28 63 53 84 34 72 b 14 54 25 56 20 54 b 1 62 9 54 4 56 l -1 65 l -1 79 b 0 99 -1 91 0 95 b 2 113 1 102 2 108 b 164 309 20 197 81 272 b 285 470 232 341 277 398 b 287 487 287 476 287 481 b 171 595 287 551 239 595 b 155 595 166 595 160 595 b 142 592 145 594 142 594 b 145 589 142 592 142 591 b 179 527 168 576 179 551 b 132 455 179 496 163 467 b 104 451 122 452 112 451 b 27 530 62 451 27 487 b 29 555 27 538 27 546 b 197 648 44 601 115 639 m 228 -1 l 230 -1 l 227 -1 l 228 -1 m 228 673 l 230 673 l 227 673 l 228 673 "},timeSig3:{x_min:-1.359375,x_max:409.6875,ha:418,o:"m 174 648 b 191 648 176 648 183 648 b 225 648 204 648 220 648 b 402 523 317 638 389 588 b 404 503 404 517 404 510 b 402 484 404 495 404 488 b 264 373 389 437 334 394 b 257 370 259 371 257 371 b 257 370 257 370 257 370 b 264 369 258 370 261 369 b 409 202 359 334 409 267 b 318 72 409 152 381 104 b 200 43 281 52 240 43 b 23 113 134 43 69 68 b 0 169 6 129 0 149 b 77 249 0 210 29 249 l 77 249 b 152 174 125 249 152 212 b 103 102 152 145 137 116 b 103 102 103 102 103 102 b 147 94 103 101 132 95 b 153 94 149 94 151 94 b 265 206 219 94 265 141 b 264 226 265 213 265 219 b 147 355 253 299 204 353 b 126 371 133 356 126 362 b 147 388 126 383 132 388 b 254 474 196 391 238 424 b 259 502 258 484 259 494 b 182 592 259 544 228 582 b 156 595 175 595 166 595 b 115 592 142 595 129 594 l 111 591 l 115 588 b 152 524 141 574 152 549 b 92 449 152 491 130 458 b 76 448 87 448 81 448 b -1 530 32 448 -1 488 b 20 581 -1 548 5 566 b 174 648 55 619 108 641 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 "},timeSig4:{x_min:0,x_max:468.21875,ha:478,o:"m 174 637 b 232 638 175 638 189 638 b 277 638 245 638 259 638 l 378 638 l 381 635 b 389 623 386 632 389 627 b 382 609 389 617 386 613 b 366 589 381 606 372 598 l 313 528 l 245 451 l 209 410 l 155 348 l 84 267 b 59 240 72 252 59 240 b 59 240 59 240 59 240 b 151 238 59 238 68 238 l 242 238 l 242 303 b 243 371 242 369 242 370 b 289 426 245 374 254 385 l 303 441 l 317 456 l 338 483 l 360 506 l 371 520 b 386 527 375 526 381 527 b 400 519 392 527 397 524 b 401 440 401 516 401 514 b 401 377 401 423 401 402 l 401 238 l 426 238 b 453 237 449 238 450 238 b 465 217 461 234 465 226 b 460 202 465 212 464 206 b 426 197 454 197 453 197 l 401 197 l 401 180 b 451 88 402 129 412 109 b 468 69 465 81 468 79 b 461 55 468 62 466 59 l 458 54 l 321 54 l 185 54 l 182 55 b 175 69 176 59 175 62 b 191 88 175 79 176 81 b 240 180 230 109 240 129 l 240 197 l 125 197 b 73 195 104 195 87 195 b 8 197 10 195 9 197 b 0 212 2 199 0 205 b 0 212 0 212 0 212 b 20 242 0 219 0 219 b 163 610 104 344 163 492 b 174 637 163 628 166 634 m 234 -1 l 235 -1 l 232 -1 l 234 -1 m 234 673 l 235 673 l 232 673 l 234 673 "},timeSig5:{x_min:0,x_max:409.6875,ha:418,o:"m 47 637 b 53 638 49 638 50 638 b 69 634 55 638 61 637 b 210 610 114 619 161 610 b 363 634 259 610 311 619 b 382 638 372 637 378 638 b 392 634 386 638 389 637 b 397 623 396 630 397 627 b 393 610 397 620 396 616 b 298 505 368 552 338 520 b 212 494 277 498 246 494 b 65 517 163 494 106 502 b 61 517 62 517 61 517 b 61 517 61 517 61 517 b 51 408 61 517 51 412 b 51 408 51 408 51 408 b 51 408 51 408 51 408 b 61 412 53 408 55 409 b 125 434 80 421 103 430 b 185 441 145 440 166 441 b 409 244 310 441 409 353 b 401 191 409 227 406 209 b 197 43 375 105 287 43 b 159 47 183 43 171 44 b 23 123 112 56 61 86 b 0 180 6 140 0 159 b 76 260 0 220 31 260 b 92 259 81 260 87 259 b 152 183 132 251 152 216 b 100 112 152 152 134 122 b 95 111 98 112 95 111 b 95 111 95 111 95 111 b 129 98 95 109 119 101 b 148 97 136 97 141 97 b 264 235 206 97 261 158 b 265 248 265 240 265 244 b 210 398 265 312 243 373 b 179 408 201 406 194 408 b 174 408 178 408 176 408 b 53 369 130 408 88 394 b 34 359 39 359 38 359 b 17 374 24 359 17 365 b 39 628 17 384 38 625 b 47 637 40 631 43 635 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 "},timeSig6:{x_min:0,x_max:475.03125,ha:485,o:"m 255 648 b 274 648 259 648 266 648 b 314 646 288 648 307 648 b 450 555 374 637 438 594 b 454 530 453 546 454 538 b 375 451 454 485 416 451 b 328 467 359 451 343 455 b 300 526 310 483 300 503 b 352 598 300 557 319 589 b 356 599 355 598 356 599 b 352 602 356 599 355 601 b 288 616 330 612 308 616 b 210 584 257 616 230 605 b 164 433 189 559 174 508 b 160 374 163 415 160 381 b 160 374 160 374 160 374 b 160 374 160 374 160 374 b 168 377 160 374 164 376 b 258 395 200 390 228 395 b 366 367 294 395 328 387 b 475 223 436 333 475 283 b 472 197 475 215 473 206 b 349 65 462 141 419 95 b 259 43 317 51 288 43 b 167 69 230 43 200 52 b 4 290 80 113 20 195 b 0 349 1 309 0 328 b 20 467 0 391 6 433 b 255 648 58 563 155 637 m 269 363 b 257 363 265 363 261 363 b 210 345 236 363 220 356 b 186 226 196 324 186 272 b 187 198 186 216 186 206 b 213 95 191 151 202 112 b 257 76 221 83 238 76 b 270 77 261 76 266 76 b 321 156 299 81 310 99 b 329 229 326 183 329 206 b 321 301 329 252 326 274 b 269 363 311 342 298 359 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 "},timeSig7:{x_min:0,x_max:442.359375,ha:451,o:"m 147 648 b 166 649 153 649 160 649 b 313 598 217 649 273 630 b 340 587 323 588 328 587 l 341 587 b 412 628 367 587 390 601 b 427 638 416 635 421 638 b 439 632 431 638 435 637 b 442 623 441 630 442 628 b 430 569 442 616 439 603 b 352 369 408 492 377 410 b 300 259 325 324 313 298 b 273 84 283 205 273 140 b 265 55 273 65 272 59 l 261 54 l 181 54 l 99 54 l 96 55 b 91 61 95 56 92 59 l 89 63 l 89 77 b 147 263 89 133 111 202 b 261 401 176 313 212 355 b 378 541 315 449 349 489 l 382 548 l 375 544 b 240 495 333 512 285 495 b 129 535 198 495 160 509 b 84 560 108 552 95 560 b 76 559 81 560 78 560 b 31 487 59 555 43 530 b 14 470 27 473 24 470 b 1 477 8 470 4 471 l 0 480 l 0 553 l 0 627 l 1 630 b 16 638 4 635 9 638 b 23 635 17 638 20 637 b 49 626 36 626 39 626 b 96 638 59 626 80 630 b 104 639 99 638 102 639 b 117 644 107 641 112 642 b 147 648 125 645 137 648 m 220 -1 l 221 -1 l 219 -1 l 220 -1 m 220 673 l 221 673 l 219 673 l 220 673 "},timeSig8:{x_min:0,x_max:488.640625,ha:499,o:"m 217 648 b 245 649 225 648 235 649 b 453 516 343 649 430 595 b 458 478 455 503 458 491 b 412 370 458 440 441 398 b 411 369 412 369 411 369 b 415 365 411 367 412 367 b 488 231 462 331 488 281 b 472 165 488 208 483 186 b 243 43 434 86 338 43 b 63 104 178 43 112 62 b 0 233 20 140 0 186 b 73 365 0 283 24 331 l 77 369 l 72 374 b 29 476 42 406 29 441 b 217 648 29 557 103 635 m 258 605 b 242 606 253 605 247 606 b 157 552 198 606 157 580 b 160 541 157 548 159 544 b 319 413 176 503 242 452 l 337 403 l 338 406 b 359 476 352 428 359 452 b 258 605 359 537 318 595 m 138 326 b 130 330 134 328 130 330 b 130 330 130 330 130 330 b 107 305 127 330 112 313 b 84 231 91 281 84 256 b 243 86 84 156 151 86 b 249 87 245 86 246 87 b 347 156 303 88 347 120 b 344 172 347 162 345 167 b 156 319 325 227 257 281 b 138 326 151 322 144 324 m 243 -1 l 245 -1 l 242 -1 l 243 -1 m 243 673 l 245 673 l 242 673 l 243 673 "},timeSig9:{x_min:0,x_max:475.03125,ha:485,o:"m 191 646 b 212 649 198 648 205 649 b 255 644 227 649 243 646 b 458 448 348 616 428 539 b 475 342 469 415 475 378 b 460 244 475 308 469 274 b 193 44 421 124 303 44 b 91 69 157 44 122 51 b 19 161 43 97 19 126 b 21 181 19 167 20 174 b 98 241 32 220 65 241 b 170 186 129 241 160 223 b 172 166 171 179 172 173 b 121 94 172 134 152 102 b 117 93 118 94 117 93 b 121 90 117 93 118 91 b 185 76 142 80 164 76 b 270 119 220 76 251 91 b 308 259 287 145 300 194 b 313 317 310 277 313 310 b 313 317 313 317 313 317 b 313 317 313 317 313 317 b 304 315 313 317 308 316 b 216 295 273 302 245 295 b 145 308 193 295 170 299 b 19 398 88 327 42 360 b 0 469 5 420 0 444 b 24 551 0 496 8 526 b 191 646 54 596 125 637 m 227 614 b 215 616 224 616 220 616 b 202 614 210 616 206 616 b 152 535 174 610 163 592 b 144 463 147 509 144 485 b 152 391 144 440 147 417 b 216 328 163 344 179 328 b 280 391 253 328 269 344 b 288 463 285 417 288 440 b 280 535 288 485 285 509 b 227 614 269 594 258 610 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 "},timeSigCommon:{x_min:-1.359375,x_max:556.6875,ha:568,o:"m 294 322 b 318 323 299 322 308 323 b 360 320 334 323 352 322 b 526 217 430 310 490 273 b 543 166 537 202 543 184 b 447 70 543 117 503 70 b 445 70 447 70 446 70 b 359 159 394 72 359 113 b 368 201 359 173 362 187 b 442 245 382 229 412 245 b 455 244 446 245 451 245 b 460 244 458 244 460 244 b 460 244 460 244 460 244 b 454 248 460 244 458 245 b 325 291 417 276 372 291 b 285 287 313 291 299 290 b 144 -2 183 269 144 190 b 281 -290 144 -208 179 -280 b 304 -291 289 -291 298 -291 b 524 -105 412 -291 506 -212 b 541 -84 526 -88 530 -84 b 556 -101 551 -84 556 -90 b 549 -138 556 -111 553 -122 b 334 -322 521 -237 435 -310 b 302 -324 323 -323 313 -324 b 13 -101 172 -324 54 -234 b -1 -1 4 -68 -1 -34 b 294 322 -1 161 121 303 "},timeSigCutCommon:{x_min:0,x_max:556.6875,ha:568,o:"m 289 545 b 298 546 292 545 295 546 b 318 533 306 546 315 541 b 319 428 319 530 319 528 l 319 327 l 334 327 b 526 223 412 326 485 285 b 543 172 537 206 543 190 b 447 76 543 122 503 76 b 445 76 446 76 446 76 b 359 165 394 77 359 119 b 368 205 359 179 362 192 b 441 251 382 233 412 251 b 455 249 446 251 451 251 b 460 248 458 249 460 248 b 460 248 460 248 460 248 b 454 254 460 249 458 251 b 334 295 419 280 378 294 l 319 295 l 319 4 l 319 -287 l 321 -285 b 328 -285 322 -285 325 -285 b 524 -99 424 -277 507 -198 b 541 -79 526 -84 530 -79 b 556 -97 551 -79 556 -84 b 548 -133 556 -105 553 -117 b 334 -317 521 -233 434 -306 b 322 -319 329 -317 323 -317 l 319 -319 l 319 -424 b 319 -471 319 -444 319 -459 b 313 -541 319 -544 318 -535 b 298 -548 308 -545 303 -548 b 279 -534 289 -548 281 -542 b 277 -424 277 -531 277 -530 l 277 -317 l 273 -317 b 13 -95 153 -305 51 -217 b 0 2 4 -62 0 -29 b 182 295 0 126 66 238 b 274 324 210 309 249 320 l 277 324 l 277 427 b 279 533 277 528 277 530 b 289 545 281 538 285 542 m 277 2 b 277 291 277 161 277 291 b 268 288 277 291 273 290 b 144 1 179 265 144 184 b 276 -284 144 -199 175 -267 l 277 -285 l 277 2 "},timeSigPlus:{x_min:0,x_max:319.859375,ha:326,o:"m 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 "},timeSigPlusSmall:{x_min:0,x_max:319.859375,ha:326,o:"m 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 "},timeSigMinus:{x_min:0,x_max:318.5,ha:325,o:"m 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 "},timeSigParensRight:{x_min:25.859375,x_max:164.6875,ha:168,o:"m 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 "},timeSigParensRightSmall:{x_min:25.859375,x_max:164.6875,ha:168,o:"m 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 "},timeSigParensLeft:{x_min:-166.0625,x_max:-25.859375,ha:0,o:"m -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 "},timeSigParensLeftSmall:{x_min:-166.0625,x_max:-25.859375,ha:0,o:"m -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 "},noteheadDoubleWhole:{x_min:0,x_max:902.421875,ha:921,o:"m 17 240 b 24 241 19 241 21 241 b 32 240 28 241 31 241 b 46 229 38 238 43 234 b 50 88 50 223 50 237 b 50 -1 50 63 50 34 b 50 -90 50 -36 50 -65 b 46 -231 50 -238 50 -224 b 25 -242 42 -238 34 -242 b 0 -224 14 -242 4 -235 b 0 2 0 -222 0 -108 b 0 223 0 112 0 220 b 17 240 2 230 9 237 m 110 240 b 118 241 111 241 114 241 b 126 240 121 241 123 241 b 142 223 133 237 140 230 b 144 123 144 220 144 205 b 144 29 144 45 144 29 b 144 29 144 29 144 29 b 393 183 166 106 264 167 b 450 186 412 184 431 186 b 756 29 600 186 732 120 b 756 29 756 29 756 29 b 758 123 758 29 758 45 b 760 227 758 226 758 223 b 784 241 766 237 774 241 b 804 229 792 241 800 237 b 809 88 808 223 809 237 l 809 -1 l 809 -90 b 804 -231 809 -238 808 -224 b 784 -242 800 -238 792 -242 b 762 -231 775 -242 766 -238 b 758 -124 756 -224 758 -231 b 756 -30 758 -47 758 -30 b 756 -30 756 -30 756 -30 b 509 -184 736 -108 637 -169 b 450 -187 488 -187 469 -187 b 144 -30 300 -187 168 -122 b 144 -30 144 -30 144 -30 b 144 -124 144 -30 144 -47 b 140 -231 144 -231 144 -224 b 118 -242 134 -238 126 -242 b 92 -224 107 -242 96 -235 b 92 2 92 -222 92 -108 b 92 223 92 112 92 220 b 110 240 95 230 102 237 m 432 161 b 413 162 426 162 420 162 b 313 41 351 162 313 109 b 347 -73 313 5 323 -34 b 487 -163 385 -133 439 -163 b 578 -97 526 -163 562 -142 b 588 -43 585 -80 588 -62 b 432 161 588 47 518 147 m 868 240 b 876 241 869 241 872 241 b 884 240 879 241 882 241 b 898 229 890 238 894 234 b 902 88 902 223 902 237 l 902 -1 l 902 -90 b 898 -231 902 -238 902 -224 b 876 -242 892 -238 884 -242 b 852 -224 865 -242 854 -235 b 850 2 850 -222 850 -108 b 852 223 850 112 850 220 b 868 240 853 230 860 237 "},noteheadWhole:{x_min:0,x_max:619.3125,ha:632,o:"m 274 184 b 307 186 285 186 296 186 b 616 22 465 186 597 116 b 619 -1 617 13 619 5 b 308 -187 619 -104 483 -187 b 0 -1 133 -187 0 -102 b 5 36 0 11 1 23 b 274 184 29 115 141 176 m 289 161 b 272 162 284 162 277 162 b 171 41 209 162 171 108 b 205 -73 171 5 182 -34 b 345 -163 243 -133 298 -163 b 436 -98 385 -163 420 -142 b 446 -43 443 -80 446 -62 b 289 161 446 47 377 147 "},noteheadHalf:{x_min:0,x_max:428.75,ha:438,o:"m 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 m 366 131 b 352 134 362 133 357 134 b 219 81 321 134 269 115 b 47 -111 126 23 50 -62 b 47 -112 47 -111 47 -112 b 77 -136 47 -129 58 -136 b 264 -45 118 -136 194 -101 b 382 109 336 12 382 76 b 366 131 382 120 377 129 "},noteheadBlack:{x_min:0,x_max:428.75,ha:438,o:"m 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 "},noteheadXWhole:{x_min:0,x_max:598.890625,ha:611,o:"m 62 181 b 77 183 66 183 72 183 b 91 181 83 183 88 183 b 202 131 100 180 106 177 l 299 87 l 394 131 b 517 183 499 181 502 183 b 519 183 517 183 518 183 b 598 104 567 183 598 144 b 577 49 598 84 592 65 b 518 15 567 38 563 37 b 484 0 499 6 484 0 b 518 -16 484 -1 499 -8 b 577 -51 563 -38 567 -40 b 598 -105 592 -66 598 -86 b 519 -184 598 -145 567 -184 b 517 -184 518 -184 517 -184 b 394 -133 502 -184 499 -183 l 299 -88 l 202 -133 b 81 -184 99 -183 95 -184 b 77 -184 80 -184 78 -184 b 0 -105 29 -184 0 -145 b 20 -51 0 -86 5 -66 b 80 -16 29 -40 34 -38 b 114 -1 98 -8 114 -1 b 80 15 114 0 98 6 b 20 49 34 37 29 38 b 0 104 6 65 0 84 b 62 181 0 140 23 174 m 88 134 b 74 136 85 134 80 136 b 68 134 72 136 69 136 b 46 104 54 130 46 117 b 55 81 46 95 49 88 b 149 34 59 76 53 80 b 224 -1 190 15 224 0 b 144 -38 224 -1 187 -18 b 54 -84 59 -79 58 -79 b 46 -105 49 -90 46 -98 b 76 -137 46 -122 58 -137 b 78 -137 77 -137 77 -137 b 194 -86 87 -137 76 -141 b 298 -36 250 -58 298 -36 b 298 -36 298 -36 298 -36 b 402 -84 299 -36 345 -58 b 518 -137 522 -141 510 -137 b 521 -137 519 -137 519 -137 b 551 -105 539 -137 551 -122 b 541 -83 551 -98 548 -90 b 447 -36 537 -77 544 -81 b 374 -1 406 -16 374 -1 b 447 34 374 0 406 15 b 541 81 544 80 537 76 b 551 104 548 88 551 97 b 521 136 551 120 539 136 b 518 136 519 136 519 136 b 517 136 518 136 517 136 l 517 136 b 402 83 511 136 511 136 b 298 34 345 56 299 34 b 298 34 298 34 298 34 b 194 84 298 34 250 56 b 88 134 137 111 89 133 "},noteheadXHalf:{x_min:0,x_max:406.96875,ha:415,o:"m 55 181 b 70 183 61 183 66 183 b 111 170 85 183 99 179 b 160 130 115 167 137 149 l 202 95 l 245 130 b 319 181 299 176 302 179 b 334 183 325 183 330 183 b 406 109 375 183 406 148 b 401 81 406 99 405 91 b 348 24 394 65 390 59 b 318 -1 332 11 318 0 b 348 -26 318 -1 332 -12 b 401 -83 390 -61 394 -66 b 406 -111 405 -93 406 -101 b 334 -184 406 -149 375 -184 b 319 -183 330 -184 325 -184 b 245 -131 302 -180 299 -177 l 202 -97 l 160 -131 b 85 -183 107 -177 103 -180 b 70 -184 80 -184 76 -184 b 0 -111 31 -184 0 -149 b 4 -83 0 -101 1 -93 b 58 -26 10 -66 16 -61 b 88 -1 74 -12 88 -1 b 58 24 88 0 74 11 b 10 69 23 54 17 59 b 0 109 2 81 0 95 b 55 181 0 142 21 173 m 83 133 b 72 136 78 136 76 136 b 57 131 66 136 61 134 b 46 109 49 126 46 117 b 50 93 46 104 47 98 b 107 45 51 91 77 70 b 160 0 137 20 160 0 b 107 -47 160 -1 137 -22 b 50 -94 77 -72 51 -93 b 46 -111 47 -99 46 -105 b 59 -134 46 -120 50 -130 b 72 -137 62 -136 68 -137 b 83 -136 76 -137 80 -136 b 144 -84 84 -134 107 -116 b 202 -36 176 -58 202 -36 b 261 -84 202 -36 230 -58 b 323 -136 299 -116 321 -134 b 334 -137 326 -136 330 -137 b 345 -134 338 -137 343 -136 b 360 -111 355 -130 360 -120 b 355 -94 360 -105 359 -99 b 299 -47 353 -93 329 -72 b 245 0 269 -22 245 -1 b 299 45 245 0 269 20 b 355 93 329 70 353 91 b 360 109 359 98 360 104 b 345 133 360 119 355 129 b 334 136 343 134 338 136 b 323 134 330 136 326 134 b 261 83 321 133 299 115 b 202 34 230 56 202 34 b 144 83 202 34 176 56 b 83 133 106 115 84 133 "},noteheadXBlack:{x_min:0,x_max:406.96875,ha:415,o:"m 21 183 b 28 183 24 183 25 183 b 42 181 34 183 39 183 b 127 108 47 179 47 179 b 202 41 168 72 202 41 b 279 108 204 41 238 72 b 357 177 321 145 356 176 b 375 183 363 181 370 183 b 406 151 392 183 406 169 b 404 137 406 147 405 141 b 322 62 401 131 398 129 b 251 0 284 27 251 0 b 322 -63 251 -1 284 -29 b 404 -138 398 -130 401 -133 b 406 -152 405 -142 406 -148 b 375 -184 406 -170 392 -184 b 357 -179 370 -184 363 -183 b 279 -109 356 -177 321 -147 b 202 -43 238 -73 204 -43 b 127 -109 202 -43 168 -73 b 49 -179 85 -147 50 -177 b 31 -184 43 -183 36 -184 b 0 -152 13 -184 0 -170 b 2 -138 0 -148 0 -142 b 83 -63 5 -133 8 -130 b 155 0 122 -29 155 -1 b 83 62 155 0 122 27 b 8 129 43 97 10 127 b 0 151 2 136 0 144 b 21 183 0 165 8 177 "},noteheadTriangleUpWhole:{x_min:0,x_max:630.203125,ha:643,o:"m 308 204 b 314 205 310 205 313 205 b 326 201 319 205 323 204 b 355 154 328 199 338 180 b 401 83 362 142 392 95 l 409 72 b 431 41 412 66 424 49 b 619 -174 498 -51 570 -134 b 630 -192 626 -180 630 -186 b 626 -202 630 -195 628 -199 b 616 -206 623 -205 620 -206 b 552 -188 608 -206 592 -202 b 310 -155 488 -169 392 -155 b 268 -156 295 -155 281 -155 b 77 -188 197 -161 126 -173 b 13 -206 35 -202 20 -206 b 9 -206 12 -206 10 -206 b 0 -191 2 -202 0 -197 b 8 -176 0 -186 2 -180 b 204 49 58 -136 138 -43 l 220 72 l 227 83 b 295 188 245 108 281 166 b 308 204 299 197 304 202 m 315 147 b 314 147 315 147 314 147 b 314 147 314 147 314 147 b 306 129 314 145 310 138 l 296 105 b 281 72 292 97 284 77 l 274 56 b 181 -123 247 -4 212 -72 l 174 -134 l 176 -133 b 314 -123 215 -127 272 -123 b 451 -133 356 -123 413 -127 l 454 -134 l 449 -123 b 353 56 417 -72 381 -4 l 347 72 b 332 105 344 77 336 97 l 322 129 b 315 147 318 138 315 145 "},noteheadTriangleUpHalf:{x_min:0,x_max:438.28125,ha:447,o:"m 212 205 b 219 205 213 205 216 205 b 239 183 228 205 231 204 b 421 -163 298 40 363 -83 b 438 -191 434 -180 438 -186 b 436 -197 438 -192 438 -195 b 424 -206 434 -204 431 -206 b 406 -201 420 -206 415 -205 b 216 -156 347 -172 281 -156 b 23 -205 148 -156 80 -173 b 14 -206 20 -206 17 -206 b 0 -191 6 -206 0 -201 b 6 -176 0 -187 1 -183 b 202 192 63 -104 142 45 b 212 205 205 199 208 202 m 264 48 l 249 81 l 243 94 l 242 91 b 89 -126 208 36 137 -66 b 81 -138 85 -133 81 -138 b 81 -138 81 -138 81 -138 b 81 -138 81 -138 81 -138 b 95 -133 81 -138 87 -136 b 280 -94 156 -108 221 -94 b 334 -98 299 -94 317 -95 b 343 -99 338 -99 343 -99 b 343 -99 343 -99 343 -99 b 338 -94 343 -99 341 -97 b 264 48 318 -58 287 1 "},noteheadTriangleUpBlack:{x_min:-1.359375,x_max:436.921875,ha:446,o:"m 213 205 b 217 205 215 205 216 205 b 234 194 224 205 234 199 b 236 187 234 194 235 190 l 245 167 l 261 129 l 270 106 b 355 -61 294 54 329 -13 b 420 -163 381 -105 402 -138 b 436 -188 435 -184 436 -184 b 436 -191 436 -190 436 -190 b 421 -206 436 -201 431 -206 l 421 -206 l 416 -206 l 405 -201 b 217 -158 347 -172 283 -158 b 31 -201 153 -158 88 -172 l 20 -206 l 14 -206 l 14 -206 b 0 -191 5 -206 0 -201 b -1 -188 0 -190 -1 -190 b 14 -163 -1 -186 0 -184 b 95 -34 36 -136 72 -77 b 166 106 119 8 148 68 l 175 129 l 183 148 l 200 188 b 213 205 205 199 208 202 "},noteheadDiamondWhole:{x_min:0,x_max:432.828125,ha:442,o:"m 208 184 b 213 187 209 186 212 187 b 224 176 217 187 221 183 b 245 147 225 172 235 159 b 419 -1 288 90 347 38 b 431 -8 424 -4 431 -8 b 432 -12 432 -9 432 -11 b 430 -18 432 -13 432 -16 b 364 -61 424 -20 383 -47 b 225 -183 307 -102 250 -152 b 223 -187 224 -184 223 -187 b 220 -188 221 -188 220 -188 b 208 -176 216 -188 210 -184 b 187 -148 205 -173 197 -159 b 12 0 144 -90 84 -38 b 0 11 4 5 0 8 b 16 24 0 13 4 18 b 183 158 83 69 141 115 b 208 184 194 169 198 173 m 183 105 b 176 113 181 109 176 113 b 172 109 176 113 175 112 b 92 45 149 90 117 62 l 88 41 l 102 31 b 247 -105 160 -6 210 -55 l 254 -115 l 257 -112 l 269 -102 b 340 -45 287 -87 319 -61 l 344 -43 l 330 -33 b 183 105 272 6 221 54 "},noteheadDiamondHalf:{x_min:0,x_max:438.28125,ha:447,o:"m 212 190 b 219 191 213 191 216 191 b 236 176 225 191 228 190 b 419 18 277 105 341 49 b 436 5 431 13 434 11 b 438 -1 438 4 438 1 b 424 -16 438 -8 432 -13 b 356 -49 409 -20 379 -36 b 234 -180 306 -83 258 -133 b 219 -192 230 -188 224 -192 b 200 -176 213 -192 206 -187 b 9 -15 157 -102 89 -45 b 0 0 2 -12 0 -6 b 16 18 0 9 2 12 b 200 176 93 48 159 104 b 212 190 205 186 208 188 m 239 113 b 236 117 238 116 238 117 b 230 108 235 117 234 115 b 92 -15 196 58 140 8 b 88 -18 91 -16 88 -18 b 92 -20 88 -18 91 -19 b 198 -116 130 -43 166 -74 b 200 -117 200 -117 200 -117 b 201 -117 200 -117 201 -117 b 264 -43 212 -98 242 -62 b 345 15 288 -19 321 4 b 348 18 347 16 348 16 b 344 20 348 18 347 19 b 239 113 307 41 266 79 "},noteheadDiamondBlack:{x_min:0,x_max:432.828125,ha:442,o:"m 209 186 b 213 187 210 187 212 187 b 216 187 215 187 216 187 b 224 174 216 186 220 180 b 420 -1 269 105 338 43 b 432 -12 431 -8 432 -9 b 421 -23 432 -15 432 -16 b 228 -180 345 -70 264 -137 b 219 -188 221 -188 221 -188 l 219 -188 b 208 -177 215 -188 215 -188 b 10 1 163 -106 93 -44 b 0 11 0 6 0 8 b 10 22 0 13 0 15 b 202 179 87 69 167 136 b 209 186 206 183 209 186 "},augmentationDot:{x_min:0,x_max:133.390625,ha:136,o:"m 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 "},tremolo1:{x_min:-206.890625,x_max:428.75,ha:438,o:"m 389 -351 b 394 -351 390 -351 393 -351 b 428 -385 413 -351 428 -367 b 428 -394 428 -388 428 -391 b 394 -428 426 -406 421 -410 l 332 -473 l 269 -516 l 205 -560 l 141 -603 l 77 -648 l 13 -692 l -50 -737 l -114 -780 l -145 -802 b -171 -813 -157 -810 -163 -813 b -175 -813 -172 -813 -174 -813 b -206 -777 -194 -811 -206 -795 b -202 -760 -206 -771 -205 -766 b -87 -675 -197 -752 -206 -757 l -34 -639 l 83 -557 l 145 -514 l 209 -470 l 272 -427 b 389 -351 375 -356 381 -352 "},flag8thUp:{x_min:-24.5,x_max:317.140625,ha:324,o:"m -24 -161 l -24 -5 l -20 -5 b 0 -24 -9 -5 -2 -12 b 171 -315 21 -124 84 -233 b 317 -660 268 -406 317 -531 b 187 -1014 317 -782 274 -909 b 161 -1034 172 -1034 171 -1034 b 141 -1013 149 -1034 141 -1025 b 152 -991 141 -1004 142 -1002 b 266 -682 228 -899 266 -788 b 174 -430 266 -588 236 -498 b -23 -317 136 -388 66 -348 b -24 -161 -23 -316 -24 -285 "},flag8thDown:{x_min:-21.78125,x_max:367.5,ha:375,o:"m 230 1031 b 238 1032 232 1032 235 1032 b 259 1014 245 1032 251 1027 b 367 662 330 906 367 782 b 364 602 367 641 367 621 b 232 317 352 488 304 384 b 57 120 155 245 103 187 b -1 18 31 84 6 40 b -19 4 -4 11 -12 4 l -21 4 l -21 159 l -21 315 l -16 315 b 96 335 10 315 62 324 b 315 695 227 380 315 527 b 313 738 315 709 314 724 b 224 991 304 825 273 916 b 216 1013 219 999 216 1007 b 230 1031 216 1021 220 1028 "},flag16thUp:{x_min:-24.5,x_max:317.140625,ha:324,o:"m -24 -147 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 58 -123 6 -43 31 -86 b 196 -278 93 -173 134 -219 b 317 -570 274 -356 317 -460 b 294 -713 317 -617 308 -666 l 289 -724 l 294 -735 b 317 -873 308 -780 317 -827 b 235 -1132 317 -963 288 -1054 b 209 -1165 228 -1140 224 -1146 b 189 -1177 204 -1172 196 -1177 b 171 -1164 182 -1177 175 -1172 b 168 -1154 170 -1161 168 -1159 b 181 -1132 168 -1149 172 -1142 b 269 -891 238 -1064 269 -975 b 269 -881 269 -886 269 -884 b 262 -814 269 -857 265 -827 b 258 -800 261 -811 259 -806 b 142 -628 240 -731 198 -667 b -8 -589 112 -606 47 -589 b -20 -589 -13 -589 -19 -589 l -24 -589 l -24 -449 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 58 -424 6 -345 31 -388 b 194 -580 93 -476 136 -523 b 259 -660 221 -606 245 -635 b 261 -663 259 -662 261 -663 b 264 -656 262 -663 262 -660 b 269 -587 268 -632 269 -610 b 264 -521 269 -566 268 -544 b 262 -512 264 -517 262 -513 b 258 -498 261 -509 259 -503 b 142 -326 240 -428 198 -365 b -8 -287 112 -303 47 -288 b -20 -287 -13 -287 -19 -287 l -24 -287 l -24 -147 "},flag16thDown:{x_min:-21.78125,x_max:362.0625,ha:369,o:"m 302 1031 b 308 1032 304 1032 307 1032 b 330 1016 318 1032 325 1027 b 362 867 351 970 362 920 b 340 738 362 824 353 780 l 336 727 l 340 717 b 362 591 355 677 362 634 b 257 323 362 496 325 401 b 204 272 243 306 227 290 b 20 56 129 206 66 133 b -1 18 12 44 0 22 b -19 4 -4 9 -12 4 l -21 4 l -21 140 l -21 276 l -12 277 b 167 333 61 288 127 309 b 319 598 262 388 319 491 b 311 664 319 620 317 642 l 310 673 l 304 664 b 204 548 279 620 250 587 b 20 333 129 483 66 409 b -1 292 12 320 0 298 b -19 280 -4 285 -12 280 l -21 280 l -21 416 l -21 552 l -12 553 b 167 609 61 564 127 585 b 319 874 264 666 319 770 b 294 992 319 914 311 954 b 288 1011 288 1004 288 1007 b 302 1031 288 1021 294 1028 "},flag32ndUp:{x_min:-24.5,x_max:315.78125,ha:322,o:"m -24 -145 l -24 -5 l -20 -5 b 1 -26 -10 -5 -6 -9 b 175 -241 31 -86 96 -166 b 314 -548 259 -323 304 -420 b 315 -589 315 -555 315 -571 b 314 -630 315 -606 315 -623 b 298 -730 311 -664 306 -699 l 295 -742 l 296 -748 b 314 -850 304 -778 311 -813 b 315 -892 315 -857 315 -874 b 314 -932 315 -909 315 -925 b 298 -1032 311 -967 306 -1002 l 295 -1045 l 296 -1050 b 314 -1153 304 -1081 311 -1115 b 315 -1193 315 -1160 315 -1177 b 314 -1235 315 -1211 315 -1228 b 217 -1526 306 -1338 270 -1444 b 201 -1533 213 -1532 208 -1533 b 182 -1522 193 -1533 185 -1529 b 179 -1514 181 -1518 179 -1517 b 189 -1489 179 -1508 182 -1501 b 266 -1217 240 -1403 266 -1308 b 262 -1156 266 -1196 265 -1177 b 110 -907 247 -1043 190 -950 b 0 -889 87 -895 50 -889 l -1 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 1 -631 -10 -610 -6 -614 b 175 -846 31 -691 96 -771 b 259 -956 213 -884 236 -914 b 265 -966 262 -961 264 -966 b 265 -966 265 -966 265 -966 b 265 -953 265 -964 265 -959 b 266 -920 266 -943 266 -932 b 262 -853 266 -898 265 -873 b 110 -605 247 -741 190 -648 b 0 -587 87 -592 50 -587 l -1 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 1 -328 -10 -308 -6 -312 b 175 -544 31 -388 96 -469 b 259 -655 213 -581 236 -612 b 265 -663 262 -659 264 -663 b 265 -663 265 -663 265 -663 b 265 -650 265 -663 265 -657 b 266 -617 266 -641 266 -630 b 262 -551 266 -595 265 -570 b 110 -303 247 -438 190 -345 b 0 -284 87 -290 50 -284 l -1 -284 l -24 -284 l -24 -145 "},flag32ndDown:{x_min:-21.78125,x_max:366.140625,ha:374,o:"m 276 1378 b 284 1379 279 1379 281 1379 b 306 1360 292 1379 298 1374 b 352 1247 326 1326 343 1286 b 366 1139 362 1213 366 1175 b 347 1009 366 1093 359 1049 l 344 1002 l 347 992 b 352 971 348 986 351 977 b 366 863 362 936 366 899 b 347 732 366 818 359 773 l 344 725 l 347 716 b 352 695 348 710 351 700 b 366 588 362 659 366 623 b 223 262 366 464 314 345 b 189 233 212 252 212 252 b 35 76 126 183 73 129 b -1 16 20 56 2 27 b -19 4 -4 9 -12 4 l -21 4 l -21 137 l -21 270 l -17 270 b 186 344 59 281 134 308 b 319 606 270 399 319 499 b 317 650 319 620 319 635 l 315 659 l 314 655 b 223 537 288 607 258 570 b 189 509 212 528 212 528 b 35 352 126 459 73 405 b -1 292 20 333 2 303 b -19 280 -4 285 -12 280 l -21 280 l -21 413 l -21 546 l -17 546 b 186 620 59 557 134 584 b 319 882 270 675 319 775 b 317 925 319 896 319 911 l 315 935 l 314 931 b 223 813 288 884 258 846 b 189 785 212 805 212 805 b 35 628 126 735 73 681 b -1 569 20 609 2 580 b -19 556 -4 562 -12 556 l -21 556 l -21 689 l -21 823 l -17 823 b 202 907 68 835 152 867 b 319 1157 280 968 319 1061 b 270 1338 319 1218 303 1281 b 262 1358 264 1349 262 1353 b 262 1364 262 1360 262 1363 b 276 1378 265 1371 269 1376 "},flag64thUp:{x_min:-24.5,x_max:314.421875,ha:321,o:"m -24 -145 l -24 -5 l -20 -5 b 0 -23 -9 -5 -2 -12 b 27 -87 4 -38 14 -66 b 138 -220 53 -136 88 -177 b 235 -328 179 -255 208 -288 b 314 -592 287 -409 314 -501 b 292 -732 314 -639 307 -687 l 289 -742 l 294 -756 b 314 -896 307 -802 314 -849 b 292 -1035 314 -943 307 -991 l 289 -1045 l 294 -1057 b 314 -1197 307 -1104 314 -1152 b 292 -1338 314 -1246 307 -1292 l 289 -1347 l 294 -1360 b 314 -1500 307 -1407 314 -1454 b 273 -1689 314 -1565 300 -1628 b 250 -1712 265 -1710 261 -1712 b 228 -1691 236 -1712 228 -1704 l 228 -1685 l 234 -1675 b 270 -1507 258 -1621 270 -1564 b 98 -1193 270 -1381 209 -1261 b 40 -1174 76 -1179 58 -1174 b -10 -1189 24 -1174 8 -1178 b -20 -1192 -14 -1192 -16 -1192 l -24 -1192 l -24 -1052 l -24 -913 l -20 -913 b 0 -931 -9 -913 -2 -920 b 27 -995 4 -946 14 -974 b 138 -1128 53 -1043 88 -1085 b 257 -1275 190 -1172 228 -1220 b 262 -1283 259 -1279 262 -1283 l 262 -1283 b 269 -1249 264 -1282 268 -1260 b 270 -1206 270 -1233 270 -1220 b 98 -891 270 -1075 206 -957 b 40 -871 76 -877 58 -871 b -10 -886 24 -871 8 -875 b -20 -889 -14 -889 -16 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 0 -628 -9 -610 -2 -617 b 27 -692 4 -644 14 -671 b 138 -825 53 -741 88 -782 b 257 -973 190 -870 228 -917 b 262 -981 259 -977 262 -981 l 262 -981 b 269 -946 264 -979 268 -957 b 270 -903 270 -931 270 -917 b 98 -588 270 -774 206 -655 b 40 -569 76 -574 58 -569 b -10 -584 24 -569 8 -574 b -20 -587 -14 -587 -16 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 0 -326 -9 -308 -2 -315 b 27 -390 4 -341 14 -369 b 138 -523 53 -438 88 -480 b 257 -670 190 -567 228 -614 b 262 -678 259 -674 262 -678 b 262 -678 262 -678 262 -678 b 269 -644 264 -677 268 -656 b 270 -601 270 -628 270 -614 b 98 -285 270 -471 206 -352 b 40 -266 76 -273 58 -266 b -10 -281 24 -266 8 -272 b -20 -284 -14 -284 -16 -284 l -24 -284 l -24 -145 "},flag64thDown:{x_min:-21.78125,x_max:367.5,ha:375,o:"m 259 1553 b 265 1553 261 1553 264 1553 b 288 1540 272 1553 277 1550 b 367 1351 340 1493 367 1424 b 336 1221 367 1308 357 1263 l 332 1211 l 333 1208 b 367 1077 356 1170 367 1124 b 336 945 367 1032 357 986 l 332 935 l 333 932 b 367 800 356 893 367 848 b 336 669 367 756 357 710 l 332 659 l 333 656 b 367 523 356 617 367 571 b 345 412 367 485 360 446 b 231 273 322 356 284 310 b -1 19 121 195 27 93 b -17 4 -4 11 -10 5 l -21 4 l -21 134 l -21 265 l -17 265 b 133 291 20 265 96 278 b 318 537 245 328 318 433 b 307 603 318 559 315 582 b 303 614 304 612 304 614 b 298 609 302 614 300 613 b 231 549 281 589 258 567 b -1 295 121 471 27 369 b -17 280 -4 287 -10 281 l -21 280 l -21 410 l -21 541 l -17 541 b 133 567 20 541 96 555 b 318 813 245 605 318 709 b 307 880 318 835 315 859 b 303 891 304 888 304 891 b 298 885 302 891 300 888 b 231 825 281 866 258 843 b -1 571 121 748 27 645 b -17 556 -4 563 -10 557 l -21 556 l -21 687 l -21 817 l -17 817 b 133 843 20 817 96 830 b 318 1089 245 881 318 985 b 307 1156 318 1111 315 1134 b 303 1167 304 1164 304 1167 b 298 1161 302 1167 300 1164 b 231 1102 281 1140 258 1120 b -1 848 121 1024 27 921 b -17 832 -4 839 -10 834 l -21 832 l -21 963 l -21 1093 l -17 1093 b 114 1113 12 1093 78 1103 b 313 1314 215 1142 289 1218 b 318 1364 317 1331 318 1347 b 255 1511 318 1422 295 1478 b 243 1532 247 1519 243 1525 b 259 1553 243 1540 250 1550 "},flag128thUp:{x_min:-24.5,x_max:313.0625,ha:319,o:"m -24 -133 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 142 -213 13 -61 74 -144 b 258 -376 196 -269 230 -315 b 313 -605 295 -449 313 -528 b 292 -742 313 -652 306 -699 b 288 -752 289 -748 288 -752 b 288 -752 288 -752 288 -752 b 292 -764 289 -753 291 -757 b 313 -907 306 -811 313 -860 b 292 -1045 313 -954 306 -1002 b 288 -1054 289 -1050 288 -1054 b 288 -1054 288 -1054 288 -1054 b 292 -1067 289 -1054 291 -1060 b 313 -1210 306 -1113 313 -1161 b 292 -1346 313 -1257 306 -1304 b 288 -1357 289 -1353 288 -1357 b 288 -1357 288 -1357 288 -1357 b 292 -1368 289 -1357 291 -1363 b 313 -1512 306 -1415 313 -1464 b 292 -1648 313 -1560 306 -1605 b 288 -1660 289 -1654 288 -1660 b 288 -1660 288 -1660 288 -1660 b 292 -1671 289 -1660 291 -1665 b 313 -1814 306 -1719 313 -1766 b 250 -2040 313 -1897 291 -1977 b 232 -2062 238 -2057 236 -2059 b 221 -2065 230 -2063 225 -2065 b 200 -2045 210 -2065 201 -2057 b 200 -2043 200 -2044 200 -2044 b 208 -2026 200 -2037 202 -2034 b 269 -1826 249 -1966 269 -1897 b 153 -1544 269 -1726 230 -1625 b -9 -1472 115 -1506 58 -1481 b -21 -1471 -14 -1471 -19 -1471 l -24 -1471 l -24 -1343 l -24 -1215 l -20 -1215 b -1 -1229 -12 -1215 -4 -1221 b 142 -1424 13 -1270 74 -1353 b 257 -1582 196 -1478 228 -1524 b 264 -1594 261 -1589 264 -1594 l 264 -1594 b 265 -1582 264 -1594 264 -1589 b 270 -1525 268 -1562 270 -1544 b 153 -1243 270 -1424 228 -1321 b -9 -1170 115 -1203 58 -1178 b -21 -1168 -14 -1170 -19 -1168 l -24 -1168 l -24 -1041 l -24 -913 l -20 -913 b -1 -927 -12 -913 -4 -918 b 142 -1121 13 -967 74 -1050 b 257 -1281 196 -1175 228 -1221 b 264 -1292 261 -1286 264 -1292 l 264 -1292 b 265 -1279 264 -1292 264 -1286 b 270 -1222 268 -1261 270 -1242 b 153 -941 270 -1121 228 -1018 b -9 -867 115 -900 58 -875 b -21 -866 -14 -867 -19 -866 l -24 -866 l -24 -738 l -24 -610 l -20 -610 b -1 -624 -12 -610 -4 -616 b 142 -818 13 -664 74 -749 b 257 -978 196 -873 228 -918 b 264 -989 261 -984 264 -989 l 264 -989 b 265 -977 264 -989 264 -984 b 270 -920 268 -959 270 -939 b 153 -638 270 -818 228 -716 b -9 -564 115 -598 58 -573 b -21 -563 -14 -564 -19 -563 l -24 -563 l -24 -435 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 142 -516 13 -363 74 -446 b 257 -675 196 -571 228 -616 b 264 -687 261 -681 264 -687 l 264 -687 b 265 -674 264 -687 264 -681 b 270 -617 268 -656 270 -637 b 153 -335 270 -516 228 -413 b -9 -262 115 -295 58 -270 b -21 -260 -14 -262 -19 -260 l -24 -260 l -24 -133 "},flag128thDown:{x_min:-21.78125,x_max:367.5,ha:375,o:"m 276 1900 b 284 1901 279 1900 281 1901 b 306 1883 291 1901 298 1896 b 367 1686 347 1825 367 1757 b 343 1558 367 1643 359 1600 l 338 1549 l 343 1537 b 367 1411 359 1497 367 1454 b 343 1282 367 1367 359 1324 l 338 1272 l 343 1261 b 367 1135 359 1221 367 1178 b 343 1007 367 1090 359 1047 l 338 996 l 343 985 b 367 859 359 945 367 902 b 343 731 367 814 359 771 l 338 720 l 343 709 b 367 582 359 667 367 626 b 289 362 367 503 340 426 b 239 312 276 345 259 330 b 29 77 152 237 76 152 b -1 18 14 54 2 30 b -19 4 -4 11 -12 4 l -21 4 l -21 133 l -20 260 l -13 262 b 98 299 17 269 62 284 b 111 305 103 302 110 305 b 167 334 123 310 156 327 b 319 595 264 391 319 491 b 313 659 319 616 318 638 b 310 667 311 664 311 667 b 307 663 310 667 308 666 b 240 588 289 637 269 614 b 16 331 141 505 62 413 b -1 294 8 316 1 302 b -19 280 -4 287 -12 280 l -21 280 l -21 408 l -20 537 l -13 538 b 98 576 17 545 62 560 b 111 581 103 578 110 581 b 167 610 123 587 156 603 b 319 871 264 667 319 767 b 313 935 319 892 318 913 b 310 942 311 941 311 942 b 307 939 310 942 308 941 b 240 864 289 913 269 889 b 16 607 141 781 62 689 b -1 570 8 592 1 578 b -19 556 -4 563 -12 556 l -21 556 l -21 684 l -20 813 l -13 814 b 98 852 17 821 62 836 b 111 857 103 855 110 857 b 167 886 123 863 156 880 b 319 1147 264 943 319 1043 b 313 1211 319 1168 318 1189 b 310 1218 311 1217 311 1218 b 307 1215 310 1218 308 1217 b 240 1140 289 1188 269 1165 b 16 884 141 1057 62 966 b -1 846 8 868 1 855 b -19 832 -4 839 -12 832 l -21 832 l -21 960 l -20 1089 l -13 1090 b 98 1128 17 1097 62 1111 b 111 1134 103 1131 110 1134 b 167 1163 123 1139 156 1156 b 319 1424 264 1220 319 1320 b 313 1486 319 1444 318 1465 b 310 1494 311 1493 311 1494 b 307 1492 310 1494 308 1493 b 240 1417 289 1464 269 1442 b 16 1160 141 1333 62 1242 b -1 1121 8 1145 1 1131 b -19 1109 -4 1115 -12 1109 l -21 1109 l -21 1236 l -20 1365 l -13 1367 b 98 1404 17 1374 62 1388 b 111 1410 103 1407 110 1410 b 250 1508 172 1437 215 1467 b 319 1701 296 1564 319 1633 b 270 1859 319 1757 303 1814 b 262 1882 265 1868 262 1875 b 276 1900 262 1890 266 1896 "},accidentalFlat:{x_min:-21.78125,x_max:251.8125,ha:257,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 "},accidentalNatural:{x_min:0,x_max:239.5625,ha:244,o:"m 10 460 b 20 462 13 462 14 462 b 39 449 28 462 35 458 l 40 446 l 40 326 b 40 205 40 259 40 205 b 127 227 40 205 80 215 b 220 249 196 244 213 249 b 227 247 224 249 225 248 b 238 237 231 245 235 241 l 239 233 l 239 -106 l 239 -448 l 238 -451 b 219 -463 234 -459 225 -463 b 198 -451 210 -463 202 -459 l 197 -448 l 197 -324 b 197 -201 197 -248 197 -201 b 110 -223 196 -201 157 -210 b 17 -245 42 -240 24 -245 b 10 -242 13 -245 13 -244 b 0 -233 6 -241 2 -237 l 0 -230 l 0 108 l 0 446 l 0 449 b 10 460 2 453 6 458 m 197 22 b 197 70 197 41 197 58 b 196 116 197 113 197 116 l 196 116 b 118 97 196 116 160 106 l 40 77 l 40 -18 b 40 -112 40 -69 40 -112 l 119 -93 l 197 -73 l 197 22 "},accidentalSharp:{x_min:0,x_max:323.9375,ha:331,o:"m 217 535 b 225 537 220 537 221 537 b 245 524 235 537 242 533 l 246 521 l 247 390 l 247 258 l 273 265 b 306 270 288 269 299 270 b 322 259 315 270 319 267 b 323 208 323 256 323 233 b 322 158 323 184 323 159 b 288 140 318 148 315 147 b 247 130 254 131 247 130 b 247 65 247 130 247 104 b 247 20 247 51 247 36 l 247 -88 l 273 -81 b 306 -76 289 -77 299 -76 b 318 -81 311 -76 315 -77 b 323 -123 323 -87 323 -86 l 323 -138 l 323 -154 b 318 -195 323 -191 323 -190 b 269 -210 314 -199 315 -199 b 249 -216 259 -213 250 -216 l 247 -216 l 247 -349 l 246 -483 l 245 -487 b 225 -499 242 -495 234 -499 b 206 -487 219 -499 210 -495 l 205 -483 l 205 -355 l 205 -227 l 204 -227 l 181 -233 l 138 -244 b 117 -249 127 -247 117 -249 b 115 -385 115 -249 115 -256 l 115 -523 l 114 -526 b 95 -538 110 -534 102 -538 b 74 -526 87 -538 78 -534 l 73 -523 l 73 -391 b 72 -260 73 -269 73 -260 b 72 -260 72 -260 72 -260 b 19 -273 61 -263 23 -273 b 0 -260 10 -273 4 -267 b 0 -209 0 -256 0 -256 l 0 -162 l 1 -158 b 61 -134 5 -148 5 -148 l 73 -131 l 73 -22 b 72 86 73 79 73 86 b 72 86 72 86 72 86 b 19 74 61 83 23 74 b 0 86 10 74 4 79 b 0 137 0 90 0 90 l 0 184 l 1 188 b 61 212 5 198 5 198 l 73 215 l 73 348 l 73 481 l 74 485 b 95 498 78 492 87 498 b 103 495 98 498 100 496 b 114 485 107 494 111 489 l 115 481 l 115 353 l 115 226 l 121 226 b 159 235 123 227 141 231 l 198 247 l 205 248 l 205 384 l 205 521 l 206 524 b 217 535 209 528 212 533 m 205 9 b 205 119 205 70 205 119 l 205 119 b 182 113 204 119 194 116 l 138 102 b 117 97 127 99 117 97 b 115 -12 115 97 115 91 l 115 -122 l 121 -120 b 159 -111 123 -119 141 -115 l 198 -101 l 205 -98 l 205 9 "},accidentalDoubleSharp:{x_min:0,x_max:367.5,ha:375,o:"m 0 124 l 0 187 l 61 187 l 122 187 l 122 138 l 122 91 l 153 61 l 183 30 l 213 61 l 243 91 l 243 138 l 243 187 l 306 187 l 367 187 l 367 124 l 367 61 l 321 61 l 274 61 l 243 30 l 213 0 l 243 -31 l 274 -62 l 321 -62 l 367 -62 l 367 -124 l 367 -188 l 306 -188 l 243 -188 l 243 -140 l 243 -93 l 213 -62 l 183 -31 l 153 -62 l 122 -93 l 122 -140 l 122 -188 l 61 -188 l 0 -188 l 0 -124 l 0 -62 l 46 -62 l 92 -62 l 123 -31 l 153 0 l 123 30 l 92 61 l 46 61 l 0 61 l 0 124 "},accidentalDoubleFlat:{x_min:-21.78125,x_max:483.1875,ha:493,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 179 164 199 187 192 l 210 176 l 210 396 l 210 617 l 212 621 b 231 632 216 628 223 632 b 250 620 239 632 247 628 b 251 383 251 616 251 616 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 "},accidentalParensLeft:{x_min:-166.0625,x_max:-25.859375,ha:0,o:"m -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 "},accidentalParensRight:{x_min:25.859375,x_max:164.6875,ha:168,o:"m 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 "},accidentalQuarterToneFlatStein:{x_min:0,x_max:272.21875,ha:278,o:"m 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 "},accidentalThreeQuarterTonesFlatZimmermann:{x_min:0,x_max:607.0625,ha:619,o:"m 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 m 347 631 b 353 632 348 632 351 632 b 374 620 363 632 371 628 b 375 383 375 616 375 616 l 375 148 l 377 151 b 492 199 415 183 454 199 b 537 191 507 199 522 197 b 607 84 582 176 607 134 b 583 0 607 58 598 29 b 455 -142 562 -40 533 -72 l 378 -215 b 355 -229 364 -229 362 -229 b 334 -216 345 -229 337 -224 l 333 -212 l 333 201 l 333 616 l 334 620 b 347 631 337 624 341 630 m 465 131 b 451 133 461 133 455 133 b 445 133 449 133 446 133 b 379 87 419 129 396 113 l 375 80 l 375 -37 l 375 -156 l 378 -152 b 499 81 451 -72 499 20 l 499 83 b 465 131 499 113 490 126 "},accidentalQuarterToneSharpStein:{x_min:0,x_max:193.28125,ha:197,o:"m 85 514 b 95 517 88 517 89 517 b 114 505 103 517 110 513 l 115 502 l 115 376 b 115 249 115 306 115 249 b 141 258 117 249 127 252 l 167 266 l 172 266 b 190 254 181 265 187 262 l 193 251 l 193 202 l 193 188 b 187 147 193 149 191 152 b 147 130 183 142 182 141 l 115 119 l 115 9 b 115 -99 115 -51 115 -99 b 141 -91 115 -99 127 -95 b 171 -81 166 -81 167 -81 l 171 -81 b 191 -94 181 -81 189 -87 b 193 -142 191 -97 193 -120 b 191 -195 193 -167 191 -194 b 125 -227 187 -205 187 -204 l 115 -230 l 115 -366 l 115 -503 l 114 -506 b 95 -519 110 -514 102 -519 b 74 -506 87 -519 78 -514 l 73 -503 l 73 -374 b 73 -245 73 -260 73 -245 b 73 -245 73 -245 73 -245 b 55 -252 72 -245 63 -249 l 32 -260 b 19 -263 27 -262 23 -263 b 4 -256 13 -263 8 -260 b 0 -215 0 -251 0 -254 b 0 -199 0 -210 0 -206 l 0 -152 l 1 -149 b 8 -140 2 -145 5 -141 b 42 -127 9 -140 24 -133 l 73 -116 l 73 -5 b 73 23 73 4 73 15 b 73 105 73 70 73 105 b 49 97 73 105 61 101 b 17 88 32 91 23 88 b 4 95 10 88 8 91 b 0 137 0 101 0 98 b 0 151 0 141 0 145 l 0 199 l 1 202 b 43 224 5 212 5 212 l 73 234 l 73 367 l 73 502 l 74 505 b 85 514 77 509 81 513 "},accidentalThreeQuarterTonesSharpStein:{x_min:-1.359375,x_max:455.96875,ha:465,o:"m 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 "},accidentalBuyukMucennebFlat:{x_min:-171.5,x_max:251.8125,ha:257,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 "},accidentalBakiyeFlat:{x_min:-176.9375,x_max:251.8125,ha:257,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 "},accidentalKomaSharp:{x_min:-1.359375,x_max:455.96875,ha:465,o:"m 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 "},accidentalKucukMucennebSharp:{x_min:-1.359375,x_max:255.890625,ha:261,o:"m 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 "},articAccentAbove:{x_min:-348.4375,x_max:24.5,ha:25,o:"m -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 "},articAccentBelow:{x_min:-348.4375,x_max:24.5,ha:25,o:"m -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 "},articTenutoAbove:{x_min:0,x_max:318.5,ha:325,o:"m 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 "},articTenutoBelow:{x_min:0,x_max:318.5,ha:325,o:"m 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 "},articStaccatoAbove:{x_min:0,x_max:133.390625,ha:136,o:"m 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 "},articStaccatoBelow:{x_min:0,x_max:133.390625,ha:136,o:"m 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 "},articStaccatissimoAbove:{x_min:-73.5,x_max:72.140625,ha:74,o:"m -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 "},articStaccatissimoBelow:{x_min:-73.5,x_max:72.140625,ha:74,o:"m -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 "},articMarcatoAbove:{x_min:-149.71875,x_max:148.359375,ha:151,o:"m -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 "},articMarcatoBelow:{x_min:-149.71875,x_max:148.359375,ha:151,o:"m -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 "},fermataAbove:{x_min:-442.359375,x_max:441,ha:450,o:"m -31 487 b -1 488 -21 488 -10 488 b 434 104 216 488 397 330 b 441 27 438 79 441 47 b 439 12 441 20 439 15 b 419 0 435 4 427 0 b 404 5 413 0 408 1 b 398 30 400 11 398 13 b 0 351 390 213 213 351 b -59 348 -20 351 -39 349 b -400 30 -251 324 -393 191 b -405 5 -400 13 -401 11 b -420 0 -409 1 -415 0 b -441 12 -428 0 -436 4 b -442 27 -441 15 -442 20 b -435 104 -442 47 -439 79 b -31 487 -401 316 -235 474 m -13 131 b -1 133 -9 133 -5 133 b 51 105 19 133 39 123 b 61 70 58 95 61 83 b 51 34 61 58 58 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -57 38 -62 54 b -13 131 -62 98 -44 124 "},fermataBelow:{x_min:-441,x_max:439.640625,ha:449,o:"m -428 -2 b -421 0 -427 -1 -424 0 b -406 -6 -416 0 -409 -2 b -400 -31 -401 -12 -400 -15 b -1 -352 -392 -215 -215 -352 b 58 -349 19 -352 38 -351 b 398 -31 250 -326 392 -192 b 404 -6 398 -15 400 -12 b 419 -1 408 -2 413 -1 b 439 -13 427 -1 435 -5 b 439 -29 439 -16 439 -22 b 434 -105 439 -48 438 -80 b 0 -489 397 -333 213 -489 b -68 -484 -23 -489 -44 -488 b -441 -36 -280 -452 -436 -263 b -441 -30 -441 -34 -441 -31 b -428 -2 -441 -11 -439 -5 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -57 -102 -62 -87 b -13 -9 -62 -44 -44 -16 "},fermataLongAbove:{x_min:-390.640625,x_max:389.28125,ha:397,o:"m -378 502 l -374 503 l 0 503 l 372 503 l 377 502 b 387 491 381 499 385 496 l 389 488 l 389 251 l 389 15 l 387 12 b 367 0 383 4 375 0 b 348 12 360 0 352 4 l 347 15 l 347 174 l 347 335 l 0 335 l -348 335 l -348 174 l -348 15 l -349 12 b -368 0 -353 4 -362 0 b -389 12 -377 0 -385 4 l -390 15 l -390 251 l -390 488 l -389 491 b -378 502 -386 496 -382 499 m -13 131 b -1 133 -9 133 -5 133 b 50 105 19 133 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -58 38 -62 55 b -13 131 -62 98 -44 124 "},fermataLongBelow:{x_min:-390.640625,x_max:389.28125,ha:397,o:"m -378 -2 b -368 -1 -375 -1 -374 -1 b -349 -13 -360 -1 -353 -5 l -348 -16 l -348 -176 l -348 -337 l 0 -337 l 347 -337 l 347 -176 l 347 -16 l 348 -13 b 367 0 352 -5 360 0 b 387 -13 375 0 383 -5 l 389 -16 l 389 -252 l 389 -489 l 387 -492 b 377 -503 385 -498 381 -501 l 372 -505 l 0 -505 l -374 -505 l -378 -503 b -389 -492 -382 -501 -386 -498 l -390 -489 l -390 -252 l -390 -16 l -389 -13 b -378 -2 -386 -8 -382 -4 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -58 -102 -62 -87 b -13 -9 -62 -44 -44 -16 "},fermataVeryLongAbove:{x_min:-390.640625,x_max:389.28125,ha:397,o:"m -378 573 l -374 576 l 0 576 l 372 576 l 377 573 b 387 563 381 571 385 567 l 389 559 l 389 287 l 389 15 l 387 12 b 367 0 383 4 375 0 b 348 12 360 0 352 4 l 347 15 l 347 210 l 347 406 l 0 406 l -348 406 l -348 210 l -348 15 l -349 12 b -368 0 -353 4 -362 0 b -389 12 -377 0 -385 4 l -390 15 l -390 287 l -390 559 l -389 563 b -378 573 -386 567 -382 571 m -274 337 l -270 338 l 0 338 l 269 338 l 273 337 b 284 326 279 334 281 330 l 285 323 l 285 169 l 285 15 l 284 12 b 265 -1 280 4 272 -1 b 245 12 257 -1 249 4 l 245 15 l 243 108 l 243 201 l 0 201 l -245 201 l -245 108 l -245 15 l -246 12 b -266 -1 -250 4 -258 -1 b -285 12 -273 -1 -281 4 l -287 15 l -287 169 l -287 323 l -285 326 b -274 337 -283 330 -280 334 m -13 131 b -1 133 -9 133 -5 133 b 50 105 19 133 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -58 38 -62 55 b -13 131 -62 98 -44 124 "},fermataVeryLongBelow:{x_min:-390.640625,x_max:389.28125,ha:397,o:"m -378 -2 b -368 -1 -375 -1 -374 -1 b -349 -13 -360 -1 -353 -5 l -348 -16 l -348 -212 l -348 -408 l 0 -408 l 347 -408 l 347 -212 l 347 -16 l 348 -13 b 367 0 352 -5 360 0 b 387 -13 375 0 383 -5 l 389 -16 l 389 -288 l 389 -560 l 387 -564 b 377 -574 385 -569 381 -573 l 372 -577 l 0 -577 l -374 -577 l -378 -574 b -389 -564 -382 -573 -386 -569 l -390 -560 l -390 -288 l -390 -16 l -389 -13 b -378 -2 -386 -8 -382 -4 m -274 -2 b -266 -1 -272 -1 -270 -1 b -246 -13 -257 -1 -250 -5 l -245 -16 l -245 -109 l -245 -202 l 0 -202 l 243 -202 l 243 -109 l 245 -16 l 245 -13 b 265 0 249 -5 257 0 b 284 -13 272 0 280 -5 l 285 -16 l 285 -170 l 285 -324 l 284 -327 b 273 -338 281 -331 279 -335 l 269 -340 l 0 -340 l -270 -340 l -274 -338 b -285 -327 -280 -335 -283 -331 l -287 -324 l -287 -170 l -287 -16 l -285 -13 b -274 -2 -283 -8 -280 -4 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -58 -102 -62 -87 b -13 -9 -62 -44 -44 -16 "},fermataShortAbove:{x_min:-390.640625,x_max:389.28125,ha:397,o:"m -9 650 b -1 652 -6 650 -4 652 b 19 639 6 652 13 648 l 23 631 b 28 623 24 628 27 626 l 34 614 l 39 606 l 43 598 l 49 588 l 54 580 l 59 571 l 65 563 l 69 555 l 74 546 l 80 537 l 85 528 b 89 520 87 526 89 523 l 95 512 l 100 503 l 106 494 l 111 487 l 115 478 l 121 470 l 126 462 l 130 453 l 136 445 l 141 437 l 147 427 l 151 419 l 156 410 l 161 402 l 167 394 l 172 385 l 176 376 b 182 367 179 374 181 370 l 187 359 l 193 351 l 198 342 l 202 334 l 208 326 l 212 317 l 217 309 l 223 301 l 228 292 l 234 284 l 238 274 l 243 266 l 249 258 l 254 249 l 259 241 l 264 233 l 269 224 b 274 216 270 222 273 217 l 280 206 l 285 198 l 295 180 l 299 174 l 304 165 l 310 156 l 315 148 l 321 140 l 325 131 l 330 123 l 336 113 l 341 105 l 347 97 l 351 88 l 356 80 l 360 72 b 364 66 362 70 363 68 b 370 58 366 65 368 61 l 379 41 b 389 19 386 31 389 24 b 382 4 389 13 386 8 b 347 0 377 0 378 0 b 337 0 344 0 340 0 b 336 0 336 0 336 0 b 287 11 294 0 294 0 l 281 19 l 276 27 l 272 37 l 266 45 l 261 54 l 255 62 l 250 70 l 246 79 l 240 87 l 235 97 l 230 105 l 224 113 l 220 122 l 215 130 l 209 140 l 204 148 l 200 155 l 194 163 b 189 172 193 165 191 169 l 185 180 l 179 188 l 174 198 l 168 206 l 163 215 l 159 223 l 153 231 l 148 240 l 142 249 l 138 258 l 133 266 l 127 274 l 122 283 l 117 292 l 111 301 l 107 308 l 102 316 b 98 324 102 317 99 322 l 92 333 l 87 341 l 81 349 l 77 359 l 72 367 l 66 376 l 61 384 l 55 392 l 51 401 l 46 410 l 40 419 l 35 427 l 31 435 l 24 444 l 20 453 l 14 460 l 10 469 b 5 477 9 470 6 474 l 0 485 l -5 494 l -9 502 l -14 512 b -20 519 -16 513 -19 517 l -24 526 l -28 534 b -31 537 -29 535 -31 537 b -35 533 -32 537 -32 535 l -88 444 l -187 280 l -285 117 l -343 23 b -362 1 -352 6 -356 2 b -368 0 -364 0 -367 0 b -390 20 -381 0 -390 8 l -390 20 b -359 77 -390 27 -390 27 l -80 539 l -25 631 b -9 650 -17 644 -13 648 m -13 133 b -1 134 -9 133 -5 134 b 50 105 19 134 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 70 -57 40 -62 55 b -13 133 -62 98 -44 126 "},fermataShortBelow:{x_min:-390.640625,x_max:389.28125,ha:397,o:"m -377 -1 b -368 0 -375 -1 -372 0 b -362 -1 -366 0 -363 -1 b -343 -24 -356 -4 -352 -8 l -285 -119 l -187 -280 l -88 -444 l -35 -533 b -31 -538 -32 -537 -32 -538 b -28 -534 -31 -538 -29 -537 l -23 -526 l -19 -517 l -13 -509 l -8 -501 l -2 -492 l 2 -483 l 6 -476 l 17 -458 l 23 -449 l 32 -433 l 38 -424 l 42 -416 l 47 -408 l 53 -399 l 58 -391 l 63 -381 l 68 -373 l 73 -365 l 78 -356 l 84 -348 l 89 -340 l 93 -330 l 99 -322 l 104 -315 l 114 -297 l 125 -280 l 129 -272 l 134 -263 l 140 -255 l 145 -247 l 151 -238 l 155 -230 l 160 -220 l 166 -212 l 171 -204 l 176 -195 l 181 -187 l 186 -177 l 191 -169 l 196 -162 l 201 -154 l 206 -144 l 217 -127 l 221 -119 l 227 -111 l 232 -102 l 238 -94 l 242 -86 l 247 -77 l 253 -69 l 258 -59 l 262 -51 l 268 -43 l 273 -34 l 279 -26 l 283 -18 b 321 -1 292 -2 292 -1 b 338 -1 326 -1 332 -1 b 382 -6 378 -1 375 -1 b 389 -20 386 -9 389 -15 b 382 -38 389 -26 386 -31 l 378 -47 l 372 -55 l 367 -63 l 362 -72 l 356 -80 l 351 -90 l 347 -98 l 341 -106 l 336 -115 l 330 -123 l 325 -131 l 321 -141 l 315 -149 l 310 -158 l 304 -166 l 299 -174 b 295 -183 298 -177 296 -181 l 289 -191 l 285 -199 l 280 -208 l 274 -216 l 269 -224 l 264 -233 l 259 -242 l 254 -251 l 249 -259 l 243 -267 l 238 -276 l 234 -284 l 228 -292 l 223 -302 l 217 -310 l 213 -319 l 208 -327 b 202 -335 206 -330 204 -334 l 197 -344 l 193 -351 l 187 -360 l 182 -369 l 176 -377 l 172 -385 l 167 -394 l 161 -403 l 156 -412 l 152 -420 l 147 -428 l 141 -437 l 136 -445 l 130 -455 l 126 -463 l 121 -471 l 115 -480 b 110 -488 114 -483 111 -487 l 106 -496 l 100 -503 l 96 -512 l 89 -521 l 85 -530 l 80 -538 l 74 -546 l 69 -555 l 65 -564 l 59 -573 l 54 -581 l 49 -589 l 43 -598 l 39 -606 l 34 -616 l 28 -624 l 23 -632 b 19 -641 21 -635 20 -638 b 0 -653 14 -649 8 -653 b -25 -631 -10 -653 -14 -649 l -80 -541 l -359 -79 b -389 -29 -375 -52 -389 -30 b -390 -22 -389 -26 -390 -24 b -377 -1 -390 -13 -385 -5 m -13 -9 b -1 -8 -9 -8 -5 -8 b 51 -36 19 -8 39 -19 b 61 -72 58 -47 61 -59 b 51 -106 61 -84 58 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -127 b -62 -72 -57 -102 -62 -87 b -13 -9 -62 -44 -44 -16 "},breathMarkComma:{x_min:-1.359375,x_max:193.28125,ha:197,o:"m 78 233 b 87 233 81 233 84 233 b 187 140 132 233 174 195 b 193 102 190 127 193 115 b 43 -113 193 22 136 -62 b 27 -119 36 -116 31 -119 b 19 -108 21 -119 19 -115 b 29 -97 19 -102 20 -101 b 102 13 73 -72 102 -27 b 92 51 102 26 98 40 l 91 54 l 84 54 b 8 104 53 54 21 74 b -1 142 1 116 -1 130 b 78 233 -1 187 31 227 "},breathMarkUpbow:{x_min:-170.140625,x_max:168.78125,ha:172,o:"m -160 567 b -122 567 -159 567 -149 567 l -87 567 l -84 566 b -74 553 -78 563 -77 560 b -20 366 -73 551 -49 466 b 31 186 8 267 31 186 b 85 371 31 186 55 269 b 140 559 114 473 138 557 b 153 567 141 564 148 567 b 168 559 159 567 166 564 b 168 555 168 557 168 557 b 92 281 168 548 159 513 b 14 13 50 134 14 13 b 0 0 14 6 6 0 b -17 15 -8 0 -17 8 b -93 283 -17 15 -51 136 b -170 552 -166 533 -170 548 b -170 553 -170 552 -170 552 b -160 567 -170 560 -167 564 "},caesura:{x_min:0,x_max:622.03125,ha:635,o:"m 398 417 b 406 419 401 419 404 419 b 427 398 417 419 427 409 b 427 391 427 395 427 392 b 34 -274 424 385 38 -272 b 20 -280 29 -278 25 -280 b 0 -259 9 -280 0 -270 b 0 -252 0 -256 0 -254 b 393 413 2 -247 389 410 b 398 417 394 415 397 416 m 592 417 b 600 419 594 419 597 419 b 622 398 611 419 622 409 b 620 391 622 395 620 392 b 227 -274 617 385 231 -272 b 213 -280 223 -278 219 -280 b 193 -259 202 -280 193 -270 b 194 -252 193 -256 193 -254 b 586 413 196 -247 582 410 b 592 417 588 415 590 416 "},caesuraCurved:{x_min:0,x_max:503.609375,ha:514,o:"m 274 430 b 277 430 276 430 277 430 b 310 394 296 430 310 415 b 308 383 310 391 308 387 b 306 367 307 381 307 374 b 236 120 298 305 272 210 b 40 -273 189 -5 125 -134 b 20 -287 35 -283 27 -287 b 5 -281 14 -287 9 -285 b 0 -267 1 -277 0 -273 b 9 -242 0 -262 2 -255 b 246 395 137 -12 232 242 b 274 430 249 416 257 427 m 468 430 b 472 430 469 430 470 430 b 503 394 490 430 503 415 b 502 383 503 391 503 387 b 499 367 502 381 500 374 b 431 120 491 305 465 210 b 234 -273 382 -5 318 -134 b 213 -287 228 -283 220 -287 b 198 -281 208 -287 202 -285 b 193 -267 194 -277 193 -273 b 202 -242 193 -262 196 -255 b 439 395 330 -12 426 242 b 468 430 442 416 451 427 "},restMaxima:{x_min:0,x_max:464.140625,ha:474,o:"m 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 "},restDoubleWhole:{x_min:0,x_max:386.5625,ha:394,o:"m 0 173 l 0 347 l 193 347 l 386 347 l 386 173 l 386 0 l 193 0 l 0 0 l 0 173 "},restWhole:{x_min:0,x_max:447.8125,ha:457,o:"m 0 -87 l 0 0 l 223 0 l 447 0 l 447 -87 l 447 -174 l 223 -174 l 0 -174 l 0 -87 "},restWholeLegerLine:{x_min:0,x_max:737.71875,ha:753,o:"m 9 13 b 208 15 10 15 51 15 b 368 15 251 15 304 15 l 726 15 l 729 12 b 737 -1 735 9 737 4 b 729 -15 737 -6 735 -11 l 726 -16 l 660 -16 l 592 -16 l 592 -95 l 592 -174 l 368 -174 l 144 -174 l 144 -95 l 144 -16 l 77 -16 l 9 -16 l 6 -15 b 0 -1 1 -11 0 -6 b 9 13 0 5 2 11 "},restHalf:{x_min:0,x_max:447.8125,ha:457,o:"m 0 86 l 0 173 l 223 173 l 447 173 l 447 86 l 447 0 l 223 0 l 0 0 l 0 86 "},restHalfLegerLine:{x_min:0,x_max:737.71875,ha:753,o:"m 144 94 l 144 173 l 368 173 l 592 173 l 592 94 l 592 15 l 660 15 l 726 15 l 729 12 b 737 -1 735 9 737 4 b 729 -15 737 -6 735 -11 l 726 -16 l 368 -16 l 9 -16 l 6 -15 b 0 -1 1 -11 0 -6 b 6 12 0 4 1 9 l 9 15 l 77 15 l 144 15 l 144 94 "},restQuarter:{x_min:0,x_max:300.8125,ha:307,o:"m 49 505 b 53 506 50 505 51 506 b 70 496 58 506 62 503 b 81 485 73 492 78 488 l 96 473 l 111 459 l 122 449 l 134 438 l 182 396 l 255 330 b 292 291 292 298 292 298 l 292 290 l 292 284 l 283 270 b 209 36 234 197 209 113 b 288 -170 209 -44 235 -119 b 299 -184 295 -179 299 -181 b 300 -191 300 -187 300 -188 b 285 -206 300 -199 294 -206 b 280 -206 283 -206 281 -206 b 247 -201 270 -202 259 -201 b 176 -222 223 -201 197 -208 b 114 -340 136 -249 114 -292 b 172 -471 114 -384 134 -433 b 185 -492 182 -481 185 -487 b 181 -502 185 -496 183 -499 b 171 -508 176 -505 174 -508 b 152 -498 166 -508 160 -503 b 0 -284 65 -428 12 -352 b 0 -260 0 -278 0 -270 b 1 -238 0 -252 0 -242 b 148 -140 16 -177 73 -140 b 209 -148 167 -140 189 -142 b 215 -149 212 -148 215 -149 b 215 -149 215 -149 215 -149 l 215 -149 b 201 -136 215 -148 209 -142 l 157 -97 l 96 -41 b 17 34 21 24 17 29 b 17 37 17 36 17 36 b 17 38 17 37 17 38 b 25 56 17 44 17 44 b 110 298 81 131 110 219 b 46 474 110 367 88 431 b 38 491 40 480 38 487 b 49 505 38 498 42 502 "},rest8th:{x_min:0,x_max:349.8125,ha:357,o:"m 88 302 b 103 303 93 302 98 303 b 202 224 149 303 191 270 b 205 199 204 216 205 208 b 178 129 205 173 196 147 l 175 126 l 182 127 b 307 249 236 142 284 190 b 313 259 308 254 311 258 b 329 267 317 265 323 267 b 349 247 340 267 349 259 b 201 -263 349 242 204 -258 b 182 -273 197 -270 190 -273 b 163 -260 174 -273 166 -269 b 161 -256 161 -259 161 -258 b 217 -59 161 -248 170 -220 b 272 129 247 43 272 127 b 272 129 272 129 272 129 b 264 122 272 129 268 126 b 140 80 227 94 183 80 b 36 115 102 80 65 91 b 0 194 10 136 0 165 b 88 302 0 244 32 292 "},rest16th:{x_min:0,x_max:450.53125,ha:460,o:"m 189 302 b 204 303 193 302 198 303 b 303 224 250 303 292 270 b 306 199 304 216 306 208 b 279 129 306 173 296 147 l 276 126 l 281 127 b 408 249 337 142 385 190 b 412 259 409 254 412 258 b 430 267 417 265 423 267 b 450 247 441 267 450 259 b 200 -605 450 242 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 194 111 136 99 165 b 189 302 99 244 133 292 "},rest32nd:{x_min:0,x_max:551.25,ha:563,o:"m 289 644 b 304 645 294 645 299 645 b 404 566 349 645 392 613 b 406 541 405 557 406 549 b 379 471 406 514 397 489 l 377 467 l 382 470 b 509 591 438 485 485 531 b 513 601 510 595 513 599 b 530 609 518 607 524 609 b 551 588 540 609 551 602 b 200 -605 551 584 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 195 112 136 99 165 b 118 256 99 217 106 238 b 204 303 138 287 171 303 b 292 249 238 303 273 285 b 306 199 302 234 306 217 b 279 129 306 173 296 148 l 276 126 l 281 127 b 408 248 336 142 385 190 b 473 470 409 254 473 469 b 473 470 473 470 473 470 b 465 464 473 470 469 467 b 341 421 428 435 383 421 b 236 458 303 421 266 433 b 200 537 212 478 200 508 b 289 644 200 585 234 635 "},rest64th:{x_min:-1.359375,x_max:651.96875,ha:665,o:"m 389 644 b 405 645 394 645 400 645 b 504 566 450 645 492 613 b 507 541 506 557 507 549 b 480 471 507 514 498 489 l 477 467 l 483 470 b 609 591 539 485 586 531 b 613 601 611 595 613 599 b 631 609 619 607 624 609 b 651 588 641 609 651 602 b 200 -946 651 584 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 537 313 478 300 508 b 389 644 300 585 334 635 "},rest128th:{x_min:-1.359375,x_max:752.703125,ha:768,o:"m 490 985 b 504 986 495 986 500 986 b 604 907 551 986 593 954 b 607 884 607 900 607 892 b 581 813 607 857 597 831 l 578 810 l 583 811 b 710 932 638 827 687 873 b 714 943 711 936 713 942 b 730 952 720 949 725 952 b 752 931 741 952 752 943 b 200 -946 752 927 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 538 314 477 300 508 b 318 598 300 559 306 580 b 404 645 340 630 372 645 b 494 592 439 645 475 627 b 507 541 502 577 507 559 b 480 471 507 516 498 489 l 477 467 l 483 470 b 608 589 537 485 586 531 b 675 811 611 595 675 810 b 675 811 675 811 675 811 b 666 806 675 811 671 809 b 543 763 628 777 585 763 b 438 799 504 763 468 775 b 401 878 412 820 401 849 b 490 985 401 928 434 977 "},dynamicPiano:{x_min:-53.078125,x_max:513.140625,ha:485,o:"m 185 383 b 196 384 187 383 191 384 b 277 334 230 384 259 365 b 288 301 281 324 288 306 b 288 297 288 298 288 297 b 294 302 289 297 291 299 b 394 370 323 338 367 367 b 404 371 398 370 401 371 b 510 272 453 371 498 328 b 513 237 513 262 513 251 b 507 172 513 217 511 192 b 326 -34 487 59 412 -26 b 314 -36 322 -36 318 -36 b 274 -24 298 -36 283 -31 l 265 -16 b 224 44 246 -1 232 20 b 223 49 224 47 223 49 b 223 49 223 49 223 49 b 149 -197 221 48 149 -194 b 149 -198 149 -197 149 -198 b 170 -210 149 -202 155 -205 b 187 -215 174 -210 175 -212 b 204 -231 201 -219 204 -222 b 197 -245 204 -240 202 -242 l 194 -248 l 76 -248 l -42 -248 l -46 -245 b -53 -231 -51 -242 -53 -240 b -35 -215 -53 -222 -49 -217 b -13 -210 -21 -212 -20 -212 b -6 -208 -10 -209 -8 -208 b 0 -206 -6 -208 -2 -206 b 25 -188 13 -201 21 -195 b 163 280 28 -183 163 276 b 166 291 163 283 164 287 b 167 302 167 295 167 299 b 155 324 167 315 161 324 b 155 324 155 324 155 324 b 65 230 125 322 85 280 b 53 215 61 217 58 215 b 51 215 53 215 51 215 b 42 224 46 215 42 217 b 57 263 42 231 47 244 b 140 360 77 305 104 337 b 152 370 144 365 149 369 b 185 383 157 376 172 381 m 374 306 b 366 308 371 308 368 308 b 300 273 348 308 321 294 b 284 254 288 262 287 259 b 280 242 283 249 281 245 b 257 169 279 240 270 213 l 236 98 l 236 93 b 251 48 238 77 243 61 b 279 27 258 37 272 27 b 281 27 279 27 280 27 b 291 31 281 27 287 30 b 396 170 334 52 378 109 b 406 247 402 197 406 224 b 401 277 406 259 405 270 b 374 306 397 290 383 303 "},dynamicMezzo:{x_min:46.28125,x_max:669.671875,ha:563,o:"m 183 376 b 189 376 185 376 187 376 b 212 374 197 376 208 376 b 265 337 234 369 253 355 b 274 317 268 331 273 320 b 274 316 274 317 274 316 b 280 323 276 316 276 319 b 311 358 288 337 299 348 b 319 366 315 360 318 365 b 356 376 326 373 340 376 b 382 371 364 376 374 374 b 428 337 400 366 417 352 b 436 317 431 331 436 320 b 438 316 436 317 436 316 b 442 323 438 316 439 319 b 475 358 451 337 462 348 b 483 366 477 360 481 365 b 518 376 488 373 503 376 b 544 373 528 376 536 376 b 604 285 579 360 604 326 b 597 249 604 273 601 258 b 543 63 596 247 544 70 b 541 54 543 61 541 55 b 540 44 540 51 540 47 b 552 23 540 33 545 23 b 552 23 552 23 552 23 b 647 126 586 29 627 72 b 658 138 651 136 653 138 b 660 138 660 138 660 138 b 669 129 666 137 669 136 b 654 88 669 122 665 109 b 562 -12 631 43 602 9 l 549 -19 b 521 -27 540 -24 530 -27 b 447 30 490 -27 458 -4 b 443 58 445 38 443 48 b 450 93 443 72 446 84 b 504 278 453 97 504 272 b 507 288 506 283 506 287 b 509 298 507 292 509 295 b 491 326 509 310 502 320 b 487 327 490 327 488 327 b 479 324 484 327 483 326 b 441 270 462 316 443 288 b 435 249 441 265 436 254 b 398 127 434 248 419 195 b 362 4 379 61 362 5 b 328 -1 359 -1 362 -1 b 314 -1 323 -1 319 -1 b 302 -1 310 -1 306 -1 b 266 4 266 -1 269 -1 b 265 6 265 5 265 5 b 303 144 265 13 272 34 b 343 278 325 216 343 276 b 344 288 343 281 344 285 b 345 298 345 291 345 295 b 330 326 345 310 340 320 b 323 327 328 327 325 327 b 317 324 322 327 321 326 b 279 270 300 316 281 288 b 273 249 279 265 274 254 b 236 127 272 248 255 195 b 200 4 216 61 200 5 b 164 -1 197 -1 198 -1 b 151 -1 161 -1 156 -1 b 140 -1 147 -1 142 -1 b 103 4 104 -1 106 -1 b 103 6 103 5 103 5 b 141 144 103 13 108 34 b 181 278 161 216 179 276 b 182 288 181 281 181 285 b 183 298 182 291 183 295 b 168 324 183 310 178 320 b 160 327 166 326 163 327 b 141 320 156 327 151 324 b 69 230 112 305 85 272 b 57 215 65 217 62 215 b 55 215 57 215 55 215 b 46 224 49 215 46 217 b 59 260 46 231 50 242 b 151 363 81 306 112 341 b 161 369 155 365 160 367 b 183 376 166 371 174 374 "},dynamicForte:{x_min:-118.421875,x_max:597.53125,ha:381,o:"m 460 574 b 464 574 461 574 462 574 b 488 574 470 574 481 574 b 500 573 491 574 498 574 b 594 503 543 570 588 538 b 597 488 596 498 597 494 b 528 417 597 449 564 417 b 502 423 519 417 510 419 b 465 481 477 434 465 458 b 488 528 465 499 472 516 b 490 530 490 530 490 530 b 490 530 490 530 490 530 b 468 517 488 530 475 523 b 349 340 419 485 377 420 b 347 330 348 334 347 330 b 383 328 347 328 363 328 b 428 326 423 328 424 328 b 442 302 438 320 442 312 b 430 281 442 294 438 285 b 385 276 424 277 426 276 l 377 276 l 332 276 l 330 269 b 178 -117 303 126 250 -9 b 1 -249 129 -194 69 -237 b -20 -251 -6 -251 -13 -251 b -114 -187 -65 -251 -100 -227 b -118 -156 -117 -177 -118 -166 b -51 -84 -118 -116 -91 -84 b -31 -87 -46 -84 -39 -86 b 16 -152 0 -95 16 -124 b -12 -205 16 -173 8 -194 b -16 -208 -14 -206 -16 -208 b -14 -208 -16 -208 -14 -208 b -9 -206 -14 -208 -12 -208 b 74 -124 23 -197 54 -166 b 172 224 98 -79 125 22 b 185 276 178 252 183 274 b 185 276 185 276 185 276 b 141 276 185 276 181 276 b 91 280 96 276 96 276 b 77 302 83 285 77 294 b 91 326 77 312 83 320 b 148 328 95 328 96 328 l 198 330 l 202 341 b 460 574 249 473 351 566 "},dynamicRinforzando:{x_min:78.9375,x_max:485.921875,ha:417,o:"m 362 378 b 378 380 367 380 372 380 b 472 348 415 380 453 367 b 485 315 481 338 485 327 b 462 273 485 298 477 281 b 439 267 454 269 446 267 b 398 290 424 267 409 274 b 344 319 385 309 364 319 b 281 269 315 319 289 301 b 279 262 280 266 279 262 b 276 256 279 260 277 258 b 274 249 276 254 274 251 b 238 127 273 248 257 192 b 201 4 217 61 201 5 b 166 -1 198 -1 200 -1 b 153 -1 163 -1 157 -1 b 141 -1 148 -1 144 -1 b 104 4 106 -1 107 -1 b 104 6 104 5 104 5 b 142 144 104 13 110 34 b 182 278 164 219 181 276 b 183 288 182 281 182 285 b 185 302 185 292 185 298 b 164 330 185 317 176 328 b 159 330 163 330 161 330 b 102 302 140 330 119 320 b 91 294 95 295 93 294 b 88 294 91 294 89 294 b 78 303 83 294 78 298 b 81 312 78 306 78 309 b 200 373 106 347 160 373 b 215 371 205 373 209 371 b 266 335 235 367 254 353 b 269 331 268 333 269 331 b 269 331 269 331 269 331 b 273 335 269 331 270 334 b 362 378 298 359 330 376 "},dynamicSforzando:{x_min:70.78125,x_max:378.390625,ha:315,o:"m 246 373 b 254 373 249 373 251 373 b 372 324 303 373 360 351 b 378 302 377 317 378 309 b 338 251 378 278 362 255 b 328 249 334 249 332 249 b 283 294 303 249 283 270 b 288 315 283 301 284 308 b 289 319 289 317 289 319 b 289 319 289 319 289 319 b 283 320 289 320 287 320 b 270 322 279 322 274 322 b 206 288 242 322 215 308 b 206 283 206 287 206 285 b 257 223 206 267 230 238 b 284 206 272 213 277 210 b 351 90 328 173 351 130 b 340 47 351 74 348 59 b 205 -30 314 -2 264 -30 b 182 -29 198 -30 190 -30 b 84 15 147 -24 103 -5 b 70 48 74 24 70 36 b 108 99 70 70 85 94 b 121 102 112 101 117 102 b 167 56 147 102 167 80 b 159 31 167 48 164 40 l 156 26 l 157 26 b 190 20 167 22 178 20 b 220 26 201 20 212 22 b 258 65 243 34 258 51 b 257 70 258 66 258 69 b 204 126 249 94 234 109 b 114 258 148 158 114 209 b 125 302 114 273 118 288 b 246 373 147 342 193 370 "},dynamicZ:{x_min:29.9375,x_max:420.578125,ha:371,o:"m 115 345 b 221 347 117 345 166 347 b 411 345 306 347 409 345 b 420 330 416 342 420 335 b 415 319 420 326 419 321 b 178 118 397 303 179 118 b 178 117 178 118 178 117 b 181 117 178 117 178 117 b 189 117 182 117 185 117 b 193 117 190 117 191 117 b 247 98 215 117 232 111 b 296 75 266 83 280 76 b 302 75 299 75 300 75 b 322 91 311 75 315 79 b 322 91 322 91 322 91 b 322 91 322 91 322 91 b 319 91 322 91 321 91 b 313 90 318 90 315 90 b 283 107 300 90 288 97 b 277 126 279 114 277 121 b 319 167 277 149 295 167 b 319 167 319 167 319 167 b 362 118 347 167 362 147 b 355 82 362 108 359 96 b 311 33 349 65 340 55 b 224 1 284 12 253 1 b 194 5 213 1 204 2 b 168 18 183 8 178 11 b 110 36 151 30 130 36 b 57 15 88 36 68 29 b 47 11 54 12 51 11 b 31 20 40 11 34 13 b 29 26 31 22 29 25 b 68 66 29 36 39 45 b 285 250 73 71 281 248 b 285 250 285 250 285 250 b 231 252 285 252 261 252 b 137 250 190 252 141 250 b 93 227 122 248 110 241 b 78 220 88 222 83 220 b 66 227 74 220 70 222 b 63 234 65 229 63 231 b 85 291 63 241 69 252 b 115 345 108 342 108 344 "},ornamentTrill:{x_min:-340.28125,x_max:338.921875,ha:346,o:"m -32 520 b -29 521 -31 520 -31 521 b -23 519 -27 521 -24 520 b -20 513 -21 517 -20 516 b -21 506 -20 512 -20 509 b -31 474 -23 502 -27 488 l -53 402 l -66 352 l -68 349 l -57 349 b -32 351 -51 349 -40 351 b 123 370 19 352 74 359 b 137 371 127 370 133 371 b 170 356 152 371 164 366 b 171 355 170 355 170 355 b 216 366 174 355 183 358 b 280 378 268 377 266 377 b 287 378 283 378 284 378 b 332 349 307 378 322 369 b 338 319 336 341 338 330 b 332 301 338 310 336 302 b 242 280 329 299 246 280 b 242 280 242 280 242 280 b 235 288 236 280 235 283 b 235 292 235 290 235 291 b 236 302 236 297 236 299 b 220 337 236 316 230 330 l 216 340 l 210 335 b 159 276 189 322 172 301 b 118 149 152 265 156 274 b 81 34 84 36 85 36 b -8 13 78 33 -4 13 b -8 13 -8 13 -8 13 b -14 20 -12 15 -14 15 b -8 44 -14 24 -12 31 b -2 66 -5 55 -2 65 b -2 66 -2 66 -2 66 l -2 66 b -43 41 -2 66 -21 55 b -114 4 -98 8 -98 8 b -144 0 -123 0 -134 0 b -242 99 -197 0 -242 43 b -242 109 -242 102 -242 105 b -212 219 -240 122 -242 116 b -185 312 -197 270 -185 312 l -185 312 b -189 312 -185 312 -186 312 b -259 312 -200 312 -227 312 b -321 310 -291 312 -310 310 b -334 312 -330 310 -334 312 b -340 319 -338 313 -340 316 b -336 326 -340 322 -338 324 b -291 337 -334 326 -314 331 l -247 347 l -210 348 b -172 348 -190 348 -172 348 b -168 363 -172 348 -171 355 b -145 442 -151 424 -145 441 b -133 452 -144 444 -140 446 l -77 489 b -32 520 -53 506 -32 520 m 57 334 b 53 335 55 335 54 335 b 44 334 50 335 49 335 b -70 316 8 326 -28 320 b -78 309 -78 316 -78 316 b -108 202 -80 305 -88 274 b -141 81 -136 112 -141 93 b -140 74 -141 79 -141 77 b -117 49 -137 59 -127 49 b -107 52 -114 49 -110 51 b 16 127 -106 54 14 126 b 42 217 16 127 42 215 b 49 241 42 222 44 229 b 73 320 53 251 73 317 b 57 334 73 327 65 333 "},ornamentTurn:{x_min:-423.3125,x_max:421.9375,ha:431,o:"m -262 197 b -247 197 -257 197 -253 197 b -118 162 -210 197 -163 184 b 40 45 -61 134 -13 98 b 277 -95 119 -33 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -55 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 201 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 136 b 421 22 421 37 421 29 b 245 -199 421 -93 338 -199 b 238 -198 243 -199 240 -199 b -44 -47 148 -194 50 -141 b -250 86 -114 22 -183 66 b -295 94 -270 91 -283 94 b -315 91 -302 94 -307 94 b -381 4 -356 81 -381 43 b -355 -56 -381 -18 -372 -40 b -298 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -178 -69 -200 -58 -189 -62 b -151 -122 -160 -81 -151 -101 b -171 -167 -151 -138 -157 -155 b -239 -195 -185 -181 -213 -192 b -257 -197 -245 -197 -250 -197 b -423 -5 -352 -197 -423 -109 b -412 65 -423 16 -419 40 b -262 197 -389 137 -329 188 "},ornamentTurnSlash:{x_min:-423.3125,x_max:421.9375,ha:431,o:"m -10 276 b -2 277 -8 277 -5 277 b 17 265 5 277 13 273 b 19 163 19 260 19 260 l 19 68 l 39 45 b 277 -95 122 -34 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -54 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 200 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 137 b 421 22 421 37 421 29 b 257 -198 421 -86 347 -188 b 242 -198 251 -198 247 -198 b 20 -105 181 -198 95 -163 l 19 -104 l 19 -183 b 19 -216 19 -195 19 -206 b 12 -273 19 -272 17 -267 b -2 -278 8 -277 2 -278 b -21 -266 -10 -278 -19 -274 b -23 -165 -23 -263 -23 -262 l -23 -69 l -44 -47 b -250 86 -117 23 -183 66 b -295 94 -270 93 -284 94 b -315 91 -302 94 -308 94 b -381 5 -356 81 -381 43 b -355 -56 -381 -16 -372 -40 b -299 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -168 -77 -196 -58 -179 -65 b -151 -122 -156 -90 -151 -105 b -179 -174 -151 -141 -160 -162 b -239 -195 -194 -184 -217 -192 b -257 -197 -245 -195 -250 -197 b -423 -5 -349 -197 -423 -113 b -423 0 -423 -4 -423 -1 b -277 194 -420 97 -362 173 b -247 197 -268 197 -258 197 b -24 104 -185 197 -100 162 l -23 102 l -23 181 b -21 265 -23 260 -23 260 b -10 276 -20 269 -14 274 "},ornamentMordent:{x_min:-402.890625,x_max:401.53125,ha:410,o:"m -10 273 b -4 274 -9 273 -6 274 b 16 262 4 274 12 269 b 17 158 17 259 17 259 l 17 56 l 62 112 b 117 174 110 172 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b 21 -6 27 0 24 -2 l 17 -12 l 17 -147 b 17 -210 17 -173 17 -194 b 10 -292 17 -297 16 -287 b -2 -299 6 -297 2 -299 b -21 -287 -10 -299 -19 -295 b -24 -174 -23 -284 -23 -284 l -24 -63 l -66 -117 b -121 -176 -110 -170 -114 -176 b -125 -176 -122 -176 -123 -176 b -296 -12 -134 -174 -125 -184 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 170 -398 -43 -231 165 b -212 174 -221 173 -216 174 b -202 173 -208 174 -205 174 b -39 11 -200 172 -151 122 l -28 -1 l -25 1 l -24 4 l -24 130 b -23 260 -24 256 -24 258 b -10 273 -20 266 -16 270 "},ornamentShortTrill:{x_min:-402.890625,x_max:401.53125,ha:410,o:"m -219 173 b -213 174 -217 174 -215 174 b -202 173 -209 174 -205 173 b -114 86 -200 172 -179 151 b -28 0 -66 37 -28 0 b 40 84 -28 0 2 37 b 117 174 111 173 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b -42 -86 27 0 -4 -38 b -118 -174 -112 -174 -111 -173 b -123 -176 -119 -176 -121 -176 b -133 -174 -126 -176 -130 -174 b -296 -12 -136 -173 -172 -137 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 172 -398 -43 -228 167 b -219 173 -223 172 -220 173 "},ornamentTremblement:{x_min:-571.671875,x_max:570.3125,ha:582,o:"m -386 173 b -381 174 -385 174 -383 174 b -370 173 -377 174 -372 173 b -281 86 -367 172 -347 151 b -196 0 -235 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 277 172 b 289 174 285 174 288 174 b 299 173 294 174 298 173 b 462 11 303 172 338 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 374 -176 371 -176 b 280 -87 367 -173 345 -152 b 194 0 234 -38 194 0 b 125 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 43 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -141 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -289 -176 b -300 -174 -295 -176 -299 -174 b -464 -12 -304 -173 -340 -137 l -476 0 l -504 -34 b -543 -77 -534 -73 -537 -76 b -549 -79 -545 -79 -547 -79 b -571 -58 -562 -79 -571 -69 b -568 -49 -571 -55 -570 -52 b -392 172 -566 -43 -396 167 b -386 173 -390 172 -387 173 "},ornamentPrecompAppoggTrill:{x_min:-571.671875,x_max:570.3125,ha:582,o:"m -559 351 b -551 352 -556 352 -553 352 b -530 338 -543 352 -533 348 b -529 169 -530 337 -529 291 l -529 1 l -507 27 l -441 112 b -382 174 -394 169 -390 174 b -378 174 -381 174 -379 174 b -281 86 -370 174 -375 179 b -196 0 -234 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 279 172 b 289 174 285 174 288 174 b 300 173 294 174 298 173 b 462 11 303 172 340 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 375 -176 371 -176 b 280 -87 367 -173 347 -152 b 194 0 234 -38 194 0 b 126 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 44 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -140 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -288 -176 b -300 -174 -294 -176 -298 -174 b -464 -11 -303 -173 -374 -102 l -476 0 l -506 -37 b -539 -76 -528 -65 -537 -74 b -551 -80 -543 -79 -547 -80 b -570 -68 -558 -80 -566 -76 l -571 -65 l -571 136 b -570 340 -571 331 -571 337 b -559 351 -568 344 -564 348 "},ornamentPrecompSlideTrillDAnglebert:{x_min:-590.71875,x_max:589.359375,ha:601,o:"m -367 173 b -362 174 -366 174 -364 174 b -351 173 -357 174 -353 173 b -262 86 -348 172 -328 151 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 72 86 -13 172 6 151 b 157 0 119 37 157 0 b 227 84 159 0 189 37 b 303 174 298 173 296 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 144 -86 213 0 182 -38 b 68 -174 73 -174 74 -173 b 62 -176 66 -176 65 -176 b 53 -174 59 -176 55 -174 b -35 -87 50 -173 29 -152 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -367 173 -375 169 -372 172 "},ornamentPrecompSlideTrillBach:{x_min:-590.71875,x_max:589.359375,ha:601,o:"m 175 273 b 182 274 178 273 181 274 b 202 262 190 274 198 269 b 204 158 204 259 204 259 l 204 56 l 250 112 b 303 174 296 172 298 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 208 -6 213 0 210 -2 l 204 -12 l 204 -147 b 204 -210 204 -173 204 -194 b 198 -292 204 -297 204 -287 b 183 -299 194 -297 189 -299 b 164 -287 175 -299 167 -295 b 163 -174 163 -284 163 -284 l 161 -63 l 119 -117 b 65 -176 76 -170 73 -176 b 61 -176 63 -176 62 -176 b -35 -87 51 -174 57 -180 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -363 174 -374 170 -371 174 b -359 174 -362 174 -360 174 b -262 86 -351 174 -356 179 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 147 11 -13 172 35 123 l 157 -1 l 160 1 l 163 4 l 163 130 b 164 260 163 256 163 258 b 175 273 166 266 170 270 "},ornamentPrecompTrillSuffixDandrieu:{x_min:-590.71875,x_max:589.359375,ha:601,o:"m 544 335 b 553 337 548 337 551 337 b 575 313 563 337 570 330 b 589 226 583 285 589 256 b 517 8 589 152 563 76 b 464 -58 507 -4 503 -9 l 401 -136 b 362 -176 372 -172 370 -176 b 357 -176 360 -176 359 -176 b 261 -87 349 -174 355 -180 b 175 0 215 -38 175 0 b 106 -86 175 0 144 -38 b 29 -174 35 -174 36 -173 b 24 -176 28 -176 27 -176 b 14 -174 21 -176 17 -174 b -73 -87 12 -173 -8 -152 b -159 0 -121 -38 -159 0 b -228 -86 -160 0 -190 -38 b -304 -174 -299 -174 -298 -173 b -310 -176 -306 -176 -308 -176 b -319 -174 -314 -176 -318 -174 b -483 -12 -323 -173 -359 -137 l -495 0 l -524 -34 b -562 -77 -553 -73 -556 -76 b -568 -79 -564 -79 -566 -79 b -590 -58 -581 -79 -590 -69 b -588 -49 -590 -55 -589 -52 b -412 170 -585 -43 -417 165 b -398 174 -408 173 -402 174 b -389 173 -394 174 -392 174 b -300 86 -387 172 -366 151 b -215 -1 -254 37 -215 -1 b -145 84 -215 -1 -183 37 b -69 173 -74 173 -76 172 b -63 174 -68 174 -66 174 b -54 173 -61 174 -57 173 b 34 86 -51 172 -31 151 b 119 -1 81 37 119 -1 b 189 84 121 -1 151 37 b 265 173 259 173 258 172 b 270 174 266 174 269 174 b 280 173 274 174 279 173 b 370 84 283 172 303 151 b 455 -1 416 37 455 -1 l 455 -1 b 476 24 455 -1 469 15 b 547 226 522 87 547 159 b 534 302 547 252 543 278 b 532 317 533 308 532 313 b 544 335 532 326 536 333 "},ornamentPrecompDoubleCadenceUpperPrefix:{x_min:-597.53125,x_max:596.171875,ha:608,o:"m -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 80 86 -5 172 13 151 b 166 -1 127 37 166 -1 b 235 84 166 -1 197 37 b 311 173 306 173 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 152 -86 221 -1 190 -38 b 76 -176 81 -174 83 -173 b 70 -176 74 -176 73 -176 b 61 -174 66 -176 62 -174 b -27 -87 58 -173 38 -152 b -114 -1 -74 -38 -112 -1 b -182 -86 -114 -1 -145 -38 b -258 -176 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 "},ornamentPrecompDoubleCadenceUpperPrefixTurn:{x_min:-597.53125,x_max:596.171875,ha:608,o:"m -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 155 11 -5 172 43 123 l 166 -1 l 168 1 l 170 4 l 170 130 b 171 260 170 256 170 258 b 191 274 175 269 183 274 b 205 267 196 274 201 272 b 212 158 212 262 210 273 l 212 56 l 257 112 b 311 173 304 172 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 216 -6 221 -1 219 -2 l 212 -12 l 212 -147 b 212 -210 212 -173 212 -194 b 205 -292 212 -297 210 -287 b 191 -299 201 -297 196 -299 b 172 -287 183 -299 175 -295 b 170 -174 171 -284 171 -284 l 170 -63 l 127 -117 b 73 -176 84 -170 80 -176 b 68 -176 72 -176 70 -176 b -27 -87 59 -174 65 -180 b -114 0 -74 -38 -112 0 b -182 -86 -114 0 -145 -38 b -258 -174 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 "},ornamentPrecompTrillLowerSuffix:{x_min:-597.53125,x_max:596.171875,ha:608,o:"m -413 173 b -408 174 -412 174 -409 174 b -397 173 -404 174 -400 173 b -308 86 -394 172 -374 151 b -223 0 -261 37 -223 0 b -153 84 -223 0 -191 37 b -77 174 -83 173 -84 172 b -72 174 -76 174 -74 174 b -62 173 -68 174 -63 173 b 25 86 -59 172 -39 151 b 112 0 73 37 111 0 b 181 84 112 0 144 37 b 257 174 251 173 251 172 b 262 174 258 174 261 174 b 273 173 266 174 270 173 b 436 9 276 172 347 101 l 447 -1 l 477 36 b 522 79 511 79 513 79 l 522 79 b 552 51 533 79 539 73 b 596 -112 582 6 596 -51 b 567 -262 596 -161 586 -213 b 539 -322 558 -287 544 -316 b 524 -327 534 -326 529 -327 b 504 -315 515 -327 507 -323 b 503 -308 503 -312 503 -309 b 511 -285 503 -302 504 -297 b 555 -113 540 -227 555 -169 b 544 -34 555 -86 551 -59 b 522 19 540 -16 530 8 l 521 22 l 481 -26 l 405 -122 b 353 -176 366 -172 362 -176 b 349 -176 352 -176 351 -176 b 253 -87 341 -176 347 -180 b 167 0 206 -38 167 0 b 99 -86 167 0 136 -38 b 21 -174 27 -174 28 -173 b 17 -176 20 -176 19 -176 b 6 -174 13 -176 9 -174 b -81 -87 4 -173 -14 -152 b -167 0 -129 -38 -167 0 b -236 -86 -167 0 -198 -38 b -313 -174 -307 -174 -306 -173 b -318 -176 -314 -176 -315 -176 b -328 -174 -321 -176 -325 -174 b -491 -12 -330 -173 -367 -137 l -503 0 l -530 -34 b -570 -77 -562 -73 -564 -76 b -577 -79 -571 -79 -574 -79 b -597 -58 -588 -79 -597 -69 b -596 -49 -597 -55 -597 -52 b -417 172 -593 -43 -423 167 b -413 173 -417 172 -415 173 "},stringsDownBow:{x_min:-228.671875,x_max:227.3125,ha:232,o:"m -217 487 l -213 488 l 0 488 l 212 488 l 216 487 b 225 476 220 484 224 480 l 227 473 l 227 244 l 227 15 l 225 12 b 206 0 223 4 215 0 b 197 1 204 0 200 0 b 187 12 193 4 189 6 l 186 15 l 186 138 l 186 262 l -1 262 l -187 262 l -187 138 l -187 15 l -189 12 b -208 0 -193 4 -200 0 b -227 12 -216 0 -223 4 l -228 15 l -228 244 l -228 473 l -227 476 b -217 487 -225 480 -221 484 "},stringsUpBow:{x_min:-149.71875,x_max:148.359375,ha:151,o:"m -137 381 b -130 383 -134 383 -133 383 b -111 371 -122 383 -114 378 b -55 224 -110 370 -85 305 b 0 80 -25 145 -1 80 b 54 224 0 80 24 145 b 112 377 114 384 110 373 b 127 384 118 381 122 384 b 148 362 138 384 148 374 l 148 356 l 83 183 b 16 9 47 88 17 11 b -1 0 12 2 5 0 b -14 5 -5 0 -10 1 b -84 183 -19 9 -13 -6 l -149 356 l -149 362 b -137 381 -149 371 -145 378 "},stringsHarmonic:{x_min:-122.5,x_max:121.140625,ha:124,o:"m -16 145 b 0 147 -10 147 -5 147 b 121 -1 66 147 121 77 b 114 -49 121 -16 118 -33 b -1 -148 95 -112 47 -148 b -85 -106 -31 -148 -61 -134 b -122 -1 -110 -76 -122 -38 b -16 145 -122 68 -81 134 m 12 111 b 0 113 8 113 4 113 b -68 22 -29 113 -61 73 b -70 0 -69 15 -70 6 b -13 -113 -70 -49 -47 -98 b -1 -115 -9 -115 -5 -115 b 63 -40 24 -115 53 -83 b 68 -1 66 -27 68 -15 b 12 111 68 48 46 97 "},pluckedSnapPizzicatoAbove:{x_min:-149.71875,x_max:148.359375,ha:151,o:"m -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 "},pluckedSnapPizzicatoBelow:{x_min:-149.71875,x_max:148.359375,ha:151,o:"m -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 "},pluckedLeftHandPizzicato:{x_min:0,x_max:319.859375,ha:326,o:"m 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 "},keyboardPedalPed:{x_min:-1.359375,x_max:1064.390625,ha:1086,o:"m 296 692 b 314 694 302 694 307 694 b 386 685 337 694 366 689 b 548 498 480 660 548 580 b 548 481 548 492 548 487 b 455 395 541 426 499 395 b 370 462 420 395 383 417 b 362 496 364 477 362 488 b 377 514 362 509 367 514 b 393 501 386 514 390 510 b 432 474 397 484 413 474 b 470 487 445 474 458 478 b 491 530 484 496 491 510 b 490 544 491 534 491 539 b 333 660 479 606 411 657 l 323 662 l 315 646 b 269 524 285 591 269 556 b 321 431 269 492 287 466 b 349 395 338 413 343 408 b 363 342 359 378 363 362 b 359 312 363 333 362 322 b 285 158 348 266 318 206 b 281 152 283 155 281 152 b 281 152 281 152 281 152 b 287 154 283 152 284 152 b 318 155 298 154 308 155 b 461 98 371 155 419 136 l 464 97 l 483 112 b 503 129 494 120 503 127 b 504 130 503 129 504 129 b 503 138 504 131 503 134 b 500 180 500 152 500 166 b 553 326 500 238 518 288 b 604 366 560 331 592 358 b 649 381 617 376 632 381 b 696 362 665 381 681 374 b 724 302 714 347 724 324 b 695 238 724 278 714 255 b 660 210 691 234 662 212 b 579 148 658 209 582 151 b 579 148 579 148 579 148 b 596 106 579 144 589 119 b 622 77 604 88 609 83 b 657 69 632 72 645 69 b 748 112 688 69 721 84 b 755 123 754 117 755 120 b 755 127 755 124 755 126 b 751 165 752 137 751 151 b 758 219 751 183 754 202 b 894 387 774 290 820 347 b 896 390 896 388 896 388 b 891 398 896 391 895 392 b 622 560 827 477 730 535 b 600 580 605 564 600 569 b 617 596 600 591 607 596 b 628 595 622 596 624 596 b 1057 248 846 552 1020 412 b 1064 191 1061 229 1064 209 b 922 0 1064 94 1005 9 b 902 -1 916 -1 909 -1 b 774 76 847 -1 800 26 b 769 83 770 81 770 83 b 769 81 769 83 769 83 b 627 -1 733 29 677 -1 b 548 27 597 -1 570 8 b 515 88 537 37 525 61 l 513 95 l 510 93 l 453 45 b 390 0 396 0 396 0 b 390 0 390 0 390 0 b 374 15 381 0 377 4 b 268 105 359 69 314 105 b 250 104 262 105 257 105 l 243 102 l 234 90 b 155 1 201 49 159 2 b 147 -1 152 0 149 -1 b 130 15 138 -1 130 6 b 132 20 130 18 132 19 b 136 31 133 22 134 27 b 220 131 149 74 178 109 b 231 137 225 134 230 136 b 302 278 280 202 302 244 b 265 335 302 299 295 309 b 209 442 234 363 213 402 b 209 455 209 446 209 451 b 279 648 209 502 232 564 l 285 659 l 283 659 b 176 627 238 653 210 645 b 57 477 111 594 66 538 b 55 459 55 471 55 464 b 72 409 55 437 61 415 b 93 403 78 405 87 403 b 152 467 123 403 151 431 b 168 488 153 483 157 488 b 185 462 181 488 185 483 l 185 460 b 137 344 183 409 168 369 b 78 322 119 328 98 322 b 13 360 50 322 25 335 b -1 426 4 380 -1 402 b 89 610 -1 488 32 559 b 296 692 147 659 210 685 m 926 348 b 921 353 924 351 922 353 b 914 348 920 353 918 351 b 823 167 857 306 823 237 b 828 124 823 154 826 138 b 890 31 837 79 862 40 b 896 31 892 31 894 31 b 956 104 916 31 940 59 b 970 191 965 129 970 159 b 966 241 970 208 969 224 b 926 348 959 277 945 313 m 627 326 b 619 326 624 326 622 326 b 598 316 611 326 604 323 b 568 215 579 288 568 255 b 568 208 568 213 568 210 b 571 183 570 195 570 184 l 571 183 b 594 201 571 183 582 191 l 634 231 b 660 259 653 247 656 248 b 664 278 662 266 664 272 b 627 326 664 299 649 320 "},keyboardPedalUp:{x_min:-1.359375,x_max:592.078125,ha:604,o:"m 280 692 b 295 694 283 692 289 694 b 310 692 300 694 307 692 b 357 630 340 684 357 657 b 336 580 357 612 351 594 b 311 538 321 566 311 549 b 352 492 311 512 330 492 b 366 495 357 492 362 492 b 397 553 390 503 397 517 b 415 603 397 576 402 591 b 460 623 427 617 443 623 b 509 599 479 623 498 614 b 522 559 518 587 522 573 b 494 506 522 538 513 519 b 451 495 481 498 473 496 b 415 488 432 495 426 494 b 394 449 404 483 394 464 b 394 448 394 448 394 448 l 394 440 l 397 433 b 428 409 404 420 413 413 b 438 408 431 408 435 408 b 479 431 450 408 462 415 b 528 455 495 448 510 455 b 548 452 534 455 541 453 b 592 391 577 442 592 416 b 549 331 592 365 577 340 b 528 327 541 328 534 327 b 479 351 510 327 495 335 b 438 374 464 367 450 374 b 417 369 431 374 424 373 b 394 333 402 360 394 348 b 400 312 394 326 396 319 b 451 287 408 294 420 288 b 513 258 484 285 499 278 b 522 223 519 247 522 234 b 461 159 522 190 496 159 b 449 161 457 159 453 159 b 397 229 416 167 397 191 b 366 288 397 265 390 278 b 352 290 362 290 357 290 b 315 262 336 290 321 280 b 311 245 313 256 311 251 b 334 204 311 233 318 220 b 355 170 348 190 351 184 b 357 152 356 166 357 159 b 355 136 357 147 356 140 b 295 88 345 104 321 88 b 232 152 264 88 232 112 b 255 204 232 174 238 186 b 279 244 273 222 279 231 l 279 245 b 238 290 279 270 259 290 b 224 288 234 290 228 290 b 193 229 200 278 193 265 b 141 161 193 191 174 167 b 129 159 137 159 133 159 b 68 223 93 159 68 190 b 77 258 68 234 70 247 b 138 287 91 278 106 285 b 185 302 166 287 175 291 b 196 333 193 312 196 323 b 174 369 196 347 187 360 b 152 374 166 373 159 374 b 111 351 140 374 126 367 b 62 327 95 335 80 327 b 51 328 58 327 54 327 b -1 391 16 334 -1 363 b 53 455 -1 420 17 449 b 62 455 57 455 59 455 b 111 431 80 455 95 448 b 152 408 127 415 140 408 b 161 409 155 408 159 408 b 193 433 176 413 186 420 l 196 440 l 196 448 b 196 451 196 449 196 449 b 190 471 196 459 194 463 b 137 495 182 489 167 495 l 134 495 l 134 495 b 68 560 95 495 68 521 b 129 623 68 596 95 623 b 144 621 134 623 138 623 b 193 553 175 614 193 589 b 224 495 193 517 200 503 b 238 492 228 492 234 492 b 279 538 259 492 279 512 b 254 580 279 549 269 566 b 232 630 239 594 232 612 b 280 692 232 657 250 684 m 307 456 b 295 458 303 458 299 458 b 230 391 258 458 230 426 b 236 360 230 381 231 371 b 295 324 249 337 272 324 b 353 360 318 324 341 337 b 360 391 357 370 360 381 b 307 456 360 421 340 451 "},pictChokeCymbal:{x_min:0,x_max:227.3125,ha:232,o:"m 91 213 b 100 215 93 215 96 215 b 227 58 167 215 224 144 b 227 52 227 56 227 54 b 61 -201 227 -43 164 -138 b 29 -216 44 -212 36 -216 b 23 -210 27 -216 24 -213 b 21 -205 21 -208 21 -206 b 34 -192 21 -201 25 -197 b 122 -55 89 -161 122 -106 b 104 6 122 -33 117 -12 l 103 9 l 96 9 b 4 79 57 9 17 38 b 0 112 1 90 0 101 b 91 213 0 163 36 209 "},wiggleArpeggiatoUp:{x_min:58.53125,x_max:228.671875,ha:294,o:"m 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 "},arrowheadBlackUp:{x_min:-10.890625,x_max:299.4375,ha:294,o:"m 136 460 b 142 462 137 462 140 462 b 166 449 152 462 161 456 b 171 428 168 446 168 445 b 288 131 194 322 238 209 b 298 115 295 120 296 117 b 299 106 298 112 299 109 b 273 81 299 91 287 81 b 255 86 268 81 261 83 b 155 116 225 104 183 116 l 152 116 l 149 108 b 141 83 148 102 144 91 b 134 48 137 69 134 58 b 149 9 134 34 140 24 b 153 -1 152 5 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 147 -11 b 122 2 138 -11 133 -6 b 95 61 104 20 95 38 b 107 108 95 74 99 90 b 108 113 107 111 108 112 b 107 113 108 113 108 113 b 102 113 106 113 104 113 b 31 86 76 108 53 98 b 14 80 24 81 20 80 b -10 106 0 80 -10 91 b 0 131 -10 115 -9 116 b 115 430 49 209 91 317 b 136 460 119 451 123 456 "},arrowheadBlackDown:{x_min:-10.890625,x_max:298.078125,ha:294,o:"m 138 473 b 142 474 140 473 141 474 b 164 459 148 474 153 470 b 191 402 183 442 191 423 b 181 353 191 388 187 371 b 178 349 179 352 178 349 b 179 348 178 348 179 348 b 185 349 181 348 182 348 b 255 376 210 355 234 363 b 272 381 264 381 266 381 b 298 355 287 381 298 370 b 288 330 298 348 298 345 b 171 34 238 254 194 141 b 166 13 168 16 168 16 b 144 1 161 5 152 1 b 121 15 134 1 125 5 b 115 33 119 18 117 24 b 0 330 91 145 49 252 b -10 355 -9 345 -10 348 b 13 381 -10 371 0 381 b 31 376 19 381 25 380 b 132 345 61 358 103 345 l 136 345 l 137 355 b 145 378 138 359 142 370 b 152 415 149 394 152 405 b 137 452 152 427 148 438 b 133 464 134 458 133 460 b 138 473 133 467 134 470 "},vexAccidentalMicrotonal1:{x_min:-171.5,x_max:483.1875,ha:493,o:"m -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 495 20 616 20 616 b 20 373 20 427 20 373 b 115 410 20 373 63 390 l 210 448 l 210 531 b 212 620 210 614 210 616 b 231 632 215 628 223 632 b 246 627 236 632 242 631 b 251 541 251 620 251 628 l 251 463 l 315 489 b 387 514 368 509 381 514 b 393 513 390 514 392 514 b 406 494 402 510 406 502 b 397 476 406 487 404 480 b 323 446 396 474 363 462 l 251 417 l 251 283 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -19 -217 -9 -229 -16 -224 l -20 -215 l -21 48 l -21 310 l -83 287 b -152 262 -133 266 -145 262 b -157 263 -153 262 -155 262 b -171 283 -166 266 -171 274 b -161 301 -171 290 -167 297 b -91 328 -160 302 -129 315 l -21 356 l -21 487 l -20 617 l -19 621 b -8 631 -17 626 -12 630 m 210 288 b 210 401 210 351 210 401 b 114 365 209 401 167 384 l 20 327 l 20 238 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 180 164 199 187 192 l 209 177 b 209 177 209 177 209 177 b 210 288 210 177 210 199 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 "},vexAccidentalMicrotonal2:{x_min:-1.359375,x_max:386.5625,ha:394,o:"m 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 "},vexWiggleArpeggioUp:{x_min:58.53125,x_max:228.671875,ha:294,o:"m 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 "},vexNoteHeadMutedBreve:{x_min:0,x_max:370.21875,ha:378,o:"m 0 0 l 0 277 l 61 277 l 122 277 l 122 0 l 122 -278 l 61 -278 l 0 -278 l 0 0 m 246 -1 l 246 277 l 308 277 l 370 277 l 370 -1 l 370 -278 l 308 -278 l 246 -278 l 246 -1 "}},cssFontWeight:"normal",ascender:1903,underlinePosition:-125,cssFontStyle:"normal",boundingBox:{yMin:-2065.375,xMin:-695.53125,yMax:1901.578125,xMax:1159.671875},resolution:1e3,original_font_information:{postscript_name:"Gonville-18",version_string:"Version 0.1.8904 ",vendor_url:"",full_font_name:"Gonville-18",font_family_name:"Gonville-18",copyright:"No copyright is claimed on this font file.",description:"",trademark:"",designer:"",designer_url:"",unique_font_identifier:"FontForge 2.0 : Gonville-18 : 17-3-2010",license_url:"",license_description:"",manufacturer_name:"",font_sub_family_name:"18"},descender:-2066,fontFamily:"Gonville-18",lineHeight:4093,underlineThickness:50},Ob={name:"Gonville",smufl:!1,stave:{padding:12,endPaddingMax:10,endPaddingMin:5,unalignedNotePadding:10},accidental:{noteheadAccidentalPadding:1,leftPadding:2,accidentalSpacing:3},clef:{default:{point:40,width:26},small:{point:32,width:20},annotations:{"8va":{smuflCode:"timeSig8",default:{point:20,treble:{line:-1.2,shiftX:11}},small:{point:18,treble:{line:-.4,shiftX:8}}},"8vb":{smuflCode:"timeSig8",default:{point:20,treble:{line:6.3,shiftX:10},bass:{line:4,shiftX:1}},small:{point:18,treble:{line:5.8,shiftX:6},bass:{line:3.5,shiftX:.5}}}},lineCount:{8:{point:55,shiftY:14},7:{point:47,shiftY:8},6:{point:40,shiftY:1},5:{point:30,shiftY:-6},4:{point:23,shiftY:-12}}},parenthesis:{default:{point:39,width:7},gracenote:{point:23.4,width:3}},pedalMarking:{up:{point:40},down:{point:40}},digits:{point:40,tupletPoint:28},tremolo:{default:{point:25,spacing:4,offsetYStemUp:-7,offsetYStemDown:7,offsetXStemUp:9,offsetXStemDown:-.5},grace:{point:15,spacing:4,offsetYStemUp:-7,offsetYStemDown:7,offsetXStemUp:6.5,offsetXStemDown:-.5}},staveRepetition:{symbolText:{offsetX:12,offsetY:25,spacing:5},coda:{offsetY:25},segno:{offsetY:0}},stem:{heightAdjustmentForFlag:-3,noteHead:{noteheadTriangleUpHalf:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpBlack:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpWhole:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadXHalf:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXBlack:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXWhole:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadHalf:{offsetYBaseStemUp:-1.5,offsetYBaseStemDown:1.5},noteheadBlack:{offsetYBaseStemUp:-1.5,offsetYBaseStemDown:1.5},noteheadSquareWhite:{offsetYBaseStemDown:-5,offsetYBaseStemUp:5}}},glyphs:{flag:{shiftX:-.08,flag8thDown:{shiftX:-.16},flag16thDown:{shiftX:-.16},flag32ndDown:{shiftX:-.16,shiftY:9},flag64thDown:{shiftX:-.16,shiftY:13},flag128thDown:{shiftX:-.16,shiftY:22},flag32ndUp:{shiftY:-9},flag64thUp:{shiftY:-13},flag128thUp:{shiftY:-22}},stringNumber:{verticalPadding:8,stemPadding:2,leftPadding:5,rightPadding:6},textNote:{point:40,default:{},ornamentTrill:{shiftX:-5,shiftY:4}},noteHead:{minPadding:2,custom:{noteheadCircleXStemUp:{shiftX:-1.5},noteheadXWholeStemUp:{shiftX:-5},noteheadTriangleUpWholeStemUp:{shiftX:-6}}},chordSymbol:{global:{superscriptOffset:-400,subscriptOffset:300,kerningOffset:-250,lowerKerningText:["D","F","P","T","V","Y"],upperKerningText:["A","L"],spacing:100,superSubRatio:.66},csymDiminished:{scale:.8,leftSideBearing:0,advanceWidth:506,yOffset:0},csymHalfDiminished:{scale:.8,leftSideBearing:-32,advanceWidth:506,yOffset:0},csymAugmented:{scale:1,leftSideBearing:0,advanceWidth:530,yOffset:0},csymParensLeftTall:{scale:.8,leftSideBearing:0,advanceWidth:155,yOffset:250},csymParensRightTall:{scale:.8,leftSideBearing:-40,advanceWidth:189,yOffset:250},csymBracketLeftTall:{scale:.8,leftSideBearing:0,advanceWidth:328,yOffset:0},csymBracketRightTall:{scale:.8,leftSideBearing:1,advanceWidth:600,yOffset:0},csymParensLeftVeryTall:{scale:.9,leftSideBearing:0,advanceWidth:121,yOffset:350},csymParensRightVeryTall:{scale:.9,leftSideBearing:50,advanceWidth:111,yOffset:350},csymDiagonalArrangementSlash:{scale:.6,leftSideBearing:-1,advanceWidth:990,yOffset:0},csymMinor:{scale:.8,leftSideBearing:0,advanceWidth:482,yOffset:0},csymMajorSeventh:{scale:.9,leftSideBearing:200,yOffset:0,advanceWidth:600},accidentalSharp:{scale:.75,leftSideBearing:40,advanceWidth:250,yOffset:-402},accidentalFlat:{scale:.95,leftSideBearing:-50,advanceWidth:208,yOffset:-184}},jazzOrnaments:{brassScoop:{scale:1,xOffset:-12,yOffset:0,stemUpYOffset:0,reportedWidth:15},brassDoitMedium:{scale:1,xOffset:16,yOffset:0,stemUpYOffset:0,reportedWidth:22},brassFallLipShort:{scale:1,xOffset:17,yOffset:0,stemUpYOffset:0,reportedWidth:15},brassLiftMedium:{scale:1,xOffset:16,yOffset:5,stemUpYOffset:0,reportedWidth:5},brassFallRoughMedium:{scale:1,xOffset:16,yOffset:28,stemUpYOffset:0,reportedWidth:5},brassBend:{scale:1,xOffset:2,yOffset:-8,stemUpYOffset:24,reportedWidth:5},brassMuteClosed:{scale:1,xOffset:3,yOffset:-9,stemUpYOffset:24,reportedWidth:5},brassMuteOpen:{scale:1,xOffset:3,yOffset:-7,stemUpYOffset:25,reportedWidth:5},brassFlip:{scale:1,xOffset:10,yOffset:-4,stemUpYOffset:7,reportedWidth:5},brassJazzTurn:{scale:1,xOffset:3,yOffset:-4,stemUpYOffset:10,reportedWidth:28},brassSmear:{scale:1,xOffset:10,yOffset:-4,stemUpYOffset:9,reportedWidth:5}},tremolo:{default:{shiftY:-10},grace:{shiftY:-5}},tuplet:{noteHeadOffset:20,stemOffset:10,bottomLine:4,topModifierOffset:15}}};const Rb={glyphs:{bracketTop:{x_min:0,x_max:491,y_min:0,y_max:279,ha:279,o:"m 697 399 b 687 402 694 400 690 402 b 671 395 681 402 674 400 b 249 168 668 390 524 168 l 20 168 b 0 150 9 168 0 161 l 0 20 l 0 0 l 176 0 b 706 374 619 0 704 370 b 707 382 706 376 707 379 b 697 399 707 389 703 395 z"},bracketBottom:{x_min:0,x_max:491,y_min:-279,y_max:0,ha:279,o:"m 697 -399 b 707 -382 703 -395 707 -389 b 706 -374 707 -379 706 -376 b 176 0 704 -370 619 0 l 0 0 l 0 -20 l 0 -150 b 20 -168 0 -161 9 -168 l 249 -168 b 671 -395 524 -168 668 -390 b 687 -402 674 -400 681 -402 b 697 -399 690 -402 694 -400 z"},segno:{x_min:0,x_max:654,y_min:0,y_max:869,ha:869,o:"m 546 690 l 838 1207 b 841 1215 840 1210 841 1212 b 832 1233 841 1221 837 1230 l 809 1248 b 798 1251 806 1250 801 1251 b 780 1241 792 1251 783 1247 l 487 721 l 217 860 b 99 995 147 897 99 924 b 236 1165 99 1120 179 1165 b 343 1073 288 1165 325 1130 b 454 988 357 1022 405 988 b 477 991 461 988 469 989 b 541 1076 526 1002 541 1045 b 540 1089 541 1080 541 1084 b 294 1225 534 1116 514 1225 b 0 939 72 1225 0 1053 b 125 706 0 825 42 753 l 397 563 l 104 45 b 102 35 102 42 102 37 b 111 19 102 29 107 22 l 132 3 b 144 0 135 1 141 0 b 148 0 145 0 147 0 b 161 10 153 1 158 6 l 456 531 l 704 403 b 842 256 780 361 842 318 b 706 86 842 131 763 86 b 599 177 654 86 616 120 b 488 262 585 228 537 262 b 465 259 481 262 472 261 b 402 177 418 248 402 206 b 403 163 402 171 402 167 b 649 26 409 135 429 26 b 942 312 871 26 942 199 b 821 549 942 426 901 507 z m 52 444 b 118 416 69 426 95 416 b 183 444 141 416 166 426 b 210 508 200 461 210 485 b 183 573 210 531 200 556 b 118 600 166 590 141 600 b 52 573 95 600 69 590 b 24 508 35 556 24 531 b 52 444 24 485 35 461 z m 760 730 b 825 703 778 713 802 703 b 890 730 848 703 873 713 b 917 795 907 747 917 772 b 890 861 917 818 907 844 b 825 888 873 878 848 888 b 760 861 802 888 778 878 b 733 795 743 844 733 818 b 760 730 733 772 743 747 z"},coda:{x_min:0,x_max:745,y_min:-113,y_max:735,ha:848,o:"m 924 467 b 560 896 916 697 757 881 l 560 1038 b 540 1058 560 1050 552 1058 l 524 1058 b 505 1038 513 1058 505 1050 l 505 896 b 150 467 311 877 158 693 l 20 467 b 0 446 9 467 0 458 l 0 432 b 20 412 0 420 9 412 l 150 412 b 505 0 166 193 317 17 l 505 -143 b 524 -163 505 -154 513 -163 l 540 -163 b 560 -143 552 -163 560 -154 l 560 0 b 923 412 753 13 907 190 l 1054 412 b 1073 432 1066 412 1073 420 l 1073 446 b 1054 467 1073 458 1066 467 z m 560 467 l 560 852 b 773 467 716 837 773 671 z m 505 467 l 301 467 b 505 851 301 668 357 831 z m 505 412 l 505 45 b 301 412 366 65 301 219 z m 560 412 l 772 412 b 560 45 772 215 706 60 z"},gClef:{x_min:0,x_max:640,y_min:-666,y_max:1112,ha:1778,o:"m 809 -30 b 665 -279 809 -132 768 -238 b 586 186 635 -107 596 122 b 809 -30 716 186 809 98 z m 605 -297 b 521 -305 576 -302 549 -305 b 140 56 315 -305 140 -161 b 390 498 140 232 264 389 b 459 562 415 520 438 540 b 492 357 472 484 482 416 b 272 45 361 318 272 180 b 467 -194 272 -56 351 -194 b 491 -176 478 -194 491 -189 b 459 -144 491 -163 477 -156 b 372 -1 403 -109 372 -72 b 521 177 372 86 436 157 z m 478 1184 b 632 1392 491 1241 557 1392 b 688 1223 654 1392 688 1322 b 478 863 688 1073 577 960 b 462 1037 469 920 462 976 b 478 1184 462 1090 467 1139 z m 176 -739 b 444 -959 176 -834 249 -959 b 622 -910 511 -959 570 -942 b 720 -670 700 -855 720 -760 b 697 -467 720 -613 711 -549 b 675 -338 693 -438 684 -395 b 922 3 816 -292 922 -145 b 557 367 922 220 768 367 b 516 619 543 454 528 539 b 773 1188 668 779 773 959 b 710 1477 773 1319 733 1426 b 608 1601 675 1551 634 1601 b 505 1528 598 1601 553 1584 b 387 1113 413 1418 387 1234 b 419 804 387 1035 395 965 b 312 701 418 802 343 726 b 0 117 181 579 0 405 b 503 -364 0 -153 235 -364 b 616 -354 544 -364 583 -360 b 660 -670 644 -492 660 -593 b 438 -899 660 -819 583 -899 b 370 -891 403 -899 373 -891 b 366 -887 369 -890 366 -888 b 373 -881 366 -884 369 -883 b 508 -721 441 -871 508 -814 b 341 -562 508 -644 449 -562 b 176 -739 240 -562 176 -644 z"},cClef:{x_min:0,x_max:627,y_min:-480,y_max:482,ha:962,o:"m 19 675 b 0 657 9 675 0 667 l 0 -654 b 19 -672 0 -664 9 -672 l 122 -672 b 141 -654 132 -672 141 -664 l 141 657 b 122 675 141 667 132 675 z m 903 -376 b 619 -58 903 -197 808 -58 b 505 -95 586 -58 562 -60 b 426 1 503 -89 474 -32 b 505 98 474 35 503 92 b 641 60 560 65 579 60 b 903 379 816 60 903 223 b 580 694 903 580 755 694 b 318 517 472 694 318 649 b 438 400 318 446 367 400 b 546 510 501 400 546 446 b 425 615 546 589 494 615 b 547 651 458 638 503 651 b 723 400 698 651 723 530 b 593 128 723 289 720 128 b 438 279 467 128 441 265 b 418 300 438 281 438 300 b 396 279 397 300 396 281 b 264 29 383 200 344 62 l 264 657 b 246 675 264 667 256 675 b 228 657 236 675 228 667 l 228 -654 b 246 -672 228 -664 236 -672 b 264 -654 256 -672 264 -664 l 264 -26 b 396 -278 348 -60 380 -197 b 418 -297 396 -279 397 -297 b 438 -278 438 -297 438 -279 b 593 -125 441 -262 467 -125 b 723 -397 720 -125 723 -287 b 547 -648 723 -527 698 -648 b 425 -612 503 -648 458 -635 b 441 -613 426 -612 432 -613 b 546 -507 504 -613 546 -569 b 438 -397 546 -444 501 -397 b 318 -514 367 -397 318 -444 b 580 -691 318 -647 472 -691 b 903 -376 755 -691 903 -577 z"},fClef:{x_min:0,x_max:664,y_min:-617,y_max:251,ha:868,o:"m 366 361 b 167 298 256 361 168 298 b 37 112 84 236 50 163 b 27 36 30 86 27 60 b 46 -58 27 1 33 -30 b 140 -138 63 -96 96 -124 b 194 -147 157 -144 176 -147 b 287 -122 226 -147 259 -138 b 359 10 331 -98 359 -46 b 289 134 359 60 333 107 b 206 160 259 154 230 160 b 160 153 189 160 173 157 b 109 122 145 147 121 132 b 147 215 114 150 131 192 b 219 279 163 238 194 266 b 351 308 255 300 301 308 b 570 -52 498 308 570 190 b 477 -399 570 -186 520 -314 b 310 -635 429 -494 366 -585 b 17 -837 160 -772 19 -837 b 0 -864 17 -837 0 -847 b 1 -871 0 -867 1 -868 b 27 -888 6 -886 19 -888 b 35 -887 29 -888 33 -887 b 331 -717 36 -887 200 -819 b 528 -544 405 -664 471 -606 b 661 -367 580 -488 625 -428 b 760 -50 724 -259 760 -147 b 670 239 760 69 729 168 b 366 361 602 320 500 361 z m 818 179 b 887 107 818 138 850 107 b 956 179 924 107 956 138 b 887 252 956 219 924 252 b 818 179 850 252 818 219 z m 818 -177 b 887 -251 818 -217 850 -251 b 956 -177 924 -251 956 -217 b 887 -104 956 -137 924 -104 b 818 -177 850 -104 818 -137 z"},unpitchedPercussionClef1:{x_min:0,x_max:352,y_min:-252,y_max:252,ha:504,o:"m 19 363 b 0 344 9 363 0 354 l 0 -344 b 19 -363 0 -354 9 -363 l 177 -363 b 196 -344 187 -363 196 -354 l 196 344 b 177 363 196 354 187 363 z m 330 363 b 311 344 320 363 311 354 l 311 -344 b 330 -363 311 -354 320 -363 l 488 -363 b 507 -344 498 -363 507 -354 l 507 344 b 488 363 507 354 498 363 z"},"6stringTabClef":{x_min:0,x_max:439,y_min:-743,y_max:746,ha:1489,o:"m 52 1074 l 52 958 l 249 958 l 249 419 l 387 419 l 387 958 l 583 958 l 583 1074 z m 0 -333 l 145 -333 l 192 -196 l 436 -196 l 481 -333 l 632 -333 l 396 334 l 238 334 z m 315 181 l 400 -81 l 229 -81 z m 566 -474 b 393 -402 531 -428 475 -403 l 71 -402 l 71 -1070 l 372 -1070 b 374 -1070 373 -1070 373 -1070 b 465 -1061 405 -1070 435 -1067 b 541 -1027 494 -1056 520 -1043 b 588 -975 560 -1012 575 -995 b 618 -868 608 -943 618 -907 b 592 -770 618 -829 609 -798 b 514 -711 575 -743 549 -724 b 566 -674 537 -700 554 -688 b 596 -576 586 -649 596 -616 b 566 -474 596 -536 586 -503 z m 348 -518 b 428 -528 380 -518 408 -521 b 464 -590 452 -539 464 -559 b 436 -649 464 -619 455 -638 b 366 -665 418 -661 395 -665 l 203 -665 l 203 -518 z m 367 -776 b 435 -788 396 -776 419 -780 b 477 -858 464 -801 477 -824 b 433 -942 477 -900 462 -927 b 366 -953 418 -949 395 -953 l 203 -953 l 203 -776 z"},timeSig0:{x_min:15,x_max:389,y_min:-254,y_max:255,ha:509,o:"m 291 367 b 22 0 138 367 22 209 b 291 -366 22 -209 138 -366 b 560 0 444 -366 560 -209 b 291 367 560 209 444 367 z m 376 -200 b 291 -308 376 -252 353 -308 b 206 -200 229 -308 206 -252 l 206 200 b 291 308 206 252 229 308 b 376 200 353 308 376 252 z"},timeSig1:{x_min:15,x_max:336,y_min:-243,y_max:245,ha:488,o:"m 359 -284 l 359 336 b 341 353 359 346 351 353 l 199 353 b 190 350 196 353 193 351 b 184 344 189 348 186 346 l 23 65 b 22 56 22 62 22 59 b 30 42 22 50 26 45 l 58 26 b 66 23 60 24 63 23 b 81 32 72 23 78 27 l 183 207 l 183 -284 l 73 -284 b 56 -301 63 -284 56 -291 l 56 -333 b 73 -350 56 -343 63 -350 l 468 -350 b 484 -333 478 -350 484 -343 l 484 -301 b 468 -284 484 -291 478 -284 z"},timeSig2:{x_min:15,x_max:377,y_min:-243,y_max:245,ha:488,o:"m 492 -56 b 382 -192 481 -88 452 -192 b 190 -134 288 -192 268 -134 b 153 -138 179 -134 167 -135 b 341 -36 153 -138 189 -84 b 533 173 494 12 533 86 b 288 353 533 233 505 353 b 30 156 71 353 30 222 b 138 49 30 96 79 49 b 245 156 197 49 245 96 b 179 255 245 196 216 240 b 168 271 174 256 168 264 b 202 297 168 279 176 289 b 251 304 209 300 229 304 b 311 288 271 304 294 300 b 348 180 338 271 348 245 b 65 -150 348 12 148 -24 b 22 -278 65 -150 22 -210 b 73 -350 22 -346 56 -350 b 121 -305 96 -350 121 -331 b 117 -287 121 -300 120 -294 b 105 -239 108 -266 105 -251 b 107 -226 105 -235 105 -230 b 154 -203 108 -217 120 -203 b 238 -289 196 -203 212 -252 b 350 -350 264 -327 304 -350 b 484 -264 396 -350 458 -317 b 543 -63 510 -210 543 -102 b 518 -36 543 -45 531 -36 b 492 -56 508 -36 498 -42 z"},timeSig3:{x_min:14.984905204685425,x_max:364,y_min:-244,y_max:244,ha:488,o:"m 392 23 b 514 168 507 68 514 143 b 514 176 514 171 514 174 b 262 351 514 189 510 351 b 22 176 14 351 22 176 l 23 176 l 22 173 b 115 81 22 121 63 81 b 207 173 167 81 207 121 b 135 264 207 215 176 255 b 140 268 137 265 138 266 b 215 289 160 282 187 289 b 340 176 275 289 340 253 b 255 69 340 85 272 72 b 140 60 238 66 157 60 b 121 40 122 60 121 40 l 121 12 b 140 -6 121 12 124 -4 b 243 -14 164 -7 197 -7 b 340 -167 307 -23 340 -66 b 215 -289 340 -264 275 -289 b 121 -266 174 -289 137 -278 b 207 -174 168 -264 207 -222 b 115 -81 207 -122 167 -81 b 22 -174 63 -81 22 -122 b 22 -180 22 -174 22 -177 b 78 -298 22 -199 26 -251 b 236 -351 134 -350 204 -351 b 524 -147 374 -351 524 -304 b 389 23 524 -42 452 3 z"},timeSig4:{x_min:14,x_max:442,y_min:-248,y_max:249,ha:497,o:"m 300 -183 l 300 -289 l 180 -289 b 160 -310 170 -289 160 -298 l 160 -337 b 180 -357 160 -348 170 -357 l 616 -357 b 636 -337 628 -357 636 -348 l 636 -310 b 616 -289 636 -298 628 -289 l 487 -289 l 487 -183 l 616 -183 b 636 -161 628 -183 636 -173 l 636 -134 b 616 -114 636 -124 628 -114 l 487 -114 l 487 115 b 477 134 487 124 482 131 l 459 143 b 452 144 456 144 455 144 b 449 144 451 144 451 144 b 436 140 445 144 439 143 l 305 20 b 300 4 301 16 300 10 l 300 -114 l 132 -114 b 464 287 132 -114 294 59 b 471 307 469 294 471 301 b 467 321 471 314 468 320 l 435 353 b 420 359 431 356 426 359 b 206 359 412 359 217 359 b 187 341 196 359 189 350 b 143 118 187 341 180 235 b 24 -124 105 1 62 -71 b 20 -140 24 -124 20 -131 b 22 -148 20 -143 20 -145 b 36 -174 26 -158 36 -174 b 52 -183 36 -174 39 -183 z"},timeSig5:{x_min:15,x_max:362,y_min:-244,y_max:246,ha:490,o:"m 39 314 b 46 170 39 314 46 245 b 46 151 46 164 46 157 b 39 -24 45 71 39 -24 b 39 -29 39 -24 39 -26 b 49 -48 39 -35 40 -46 b 99 -59 62 -50 92 -58 b 107 -59 102 -59 104 -59 b 121 -49 112 -59 118 -58 b 235 45 128 -30 144 45 b 356 -112 337 45 356 -43 b 238 -292 356 -184 333 -288 b 226 -292 233 -292 230 -292 b 166 -282 193 -292 174 -288 b 158 -274 161 -281 158 -276 b 164 -264 158 -269 160 -266 b 222 -168 177 -255 222 -239 b 117 -71 222 -98 173 -71 b 22 -171 60 -71 22 -122 b 111 -318 22 -220 36 -275 b 252 -351 147 -338 199 -351 b 456 -275 325 -351 405 -328 b 521 -109 503 -228 521 -167 b 433 79 521 -32 487 43 b 271 124 397 104 336 124 b 131 84 223 124 173 112 b 125 82 130 82 127 82 b 115 92 120 82 115 86 l 115 183 b 131 199 115 192 122 199 l 132 199 b 252 192 154 197 202 192 b 372 209 295 192 340 196 b 474 320 439 236 462 289 b 477 334 475 324 477 330 b 451 354 477 346 469 354 b 431 351 445 354 439 353 b 252 328 360 334 305 328 b 88 343 200 328 150 334 b 71 344 88 343 81 344 b 39 320 56 344 39 340 b 39 314 39 317 39 315 z"},timeSig6:{x_min:15,x_max:387,y_min:-244,y_max:245,ha:489,o:"m 356 69 b 216 22 268 69 236 43 b 209 98 212 52 209 75 b 216 167 209 121 212 141 b 338 287 225 220 261 287 b 410 259 374 287 396 275 b 356 174 380 246 356 207 b 448 82 356 122 396 82 b 541 174 500 82 541 122 l 541 177 b 541 179 541 177 541 177 b 533 225 541 192 539 213 b 310 353 514 276 454 353 b 58 163 180 353 86 229 b 22 -23 43 128 22 58 b 131 -285 22 -111 46 -210 b 318 -351 215 -348 268 -351 b 557 -125 369 -351 557 -292 b 356 69 557 16 446 69 z m 302 -291 b 216 -145 255 -291 216 -226 b 302 1 216 -65 255 1 b 390 -145 350 1 390 -65 b 302 -291 390 -226 350 -291 z"},timeSig7:{x_min:15,x_max:366,y_min:-250,y_max:251,ha:501,o:"m 233 -177 b 160 -336 202 -225 160 -282 b 180 -360 160 -351 164 -360 b 264 -351 203 -360 217 -354 b 278 -350 268 -351 274 -350 b 369 -360 320 -350 359 -360 b 405 -331 382 -360 406 -344 b 405 -327 405 -330 405 -328 b 396 -226 405 -324 396 -279 b 408 -130 396 -196 399 -161 b 503 151 425 -62 471 60 b 527 308 518 196 527 275 b 526 341 527 321 527 327 b 510 361 524 356 518 361 b 484 361 503 361 491 361 b 467 341 477 361 467 356 b 406 228 467 327 464 228 b 235 351 346 228 328 351 b 86 252 145 351 91 261 l 86 321 b 71 337 86 330 79 337 l 37 337 b 22 321 29 337 22 330 l 22 55 b 37 39 22 46 29 39 l 71 39 b 86 55 79 39 86 46 l 86 101 b 158 179 86 134 108 179 b 328 124 209 179 213 124 b 425 143 357 124 410 128 b 233 -177 413 120 266 -130 z"},timeSig8:{x_min:15,x_max:393,y_min:-248,y_max:246,ha:494,o:"m 467 26 b 547 166 514 62 547 108 b 294 354 547 269 433 354 b 40 166 154 354 40 269 b 122 13 40 108 55 56 b 22 -147 58 -24 22 -78 b 294 -357 22 -264 144 -357 b 566 -147 444 -357 566 -264 b 467 26 566 -78 541 -13 z m 294 -276 b 122 -145 202 -276 122 -226 b 197 -26 122 -49 197 -26 b 435 -187 295 -59 435 -108 b 294 -276 435 -226 384 -276 z m 386 65 b 180 209 288 96 180 144 b 294 288 180 265 232 288 b 444 180 383 288 444 246 b 386 65 444 111 412 78 z"},timeSig9:{x_min:15,x_max:387,y_min:-244,y_max:245,ha:489,o:"m 223 -68 b 363 -20 311 -68 343 -42 b 370 -96 367 -50 370 -73 b 363 -166 370 -120 367 -140 b 240 -285 354 -219 318 -285 b 168 -258 204 -285 183 -274 b 223 -173 199 -245 223 -206 b 131 -81 223 -121 183 -81 b 37 -173 79 -81 37 -121 l 37 -176 b 37 -177 37 -176 37 -176 b 46 -223 37 -190 40 -212 b 269 -351 65 -275 125 -351 b 521 -161 399 -351 492 -228 b 557 24 536 -127 557 -56 b 448 287 557 112 533 212 b 261 353 364 350 311 353 b 22 127 210 353 22 294 b 223 -68 22 -14 132 -68 z m 276 294 b 363 147 324 294 363 228 b 276 1 363 66 324 1 b 189 147 229 1 189 66 b 276 294 189 228 229 294 z"},timeSigCommon:{x_min:0,x_max:463,y_min:-256,y_max:258,ha:514,o:"m 468 258 b 406 147 432 235 406 193 b 408 130 406 141 406 135 b 521 17 415 71 462 24 b 537 17 526 17 533 17 b 667 147 609 17 667 75 b 667 156 667 147 667 151 b 664 177 667 161 665 171 b 350 372 651 239 595 372 b 0 17 36 372 0 111 b 382 -369 0 -154 22 -369 b 641 -131 524 -369 635 -285 b 629 -120 641 -124 636 -120 l 611 -120 b 599 -131 605 -120 599 -125 b 382 -323 593 -251 508 -323 b 196 -128 256 -323 196 -255 l 196 147 b 356 320 196 228 228 320 b 469 271 423 320 454 295 b 471 264 471 268 471 266 b 468 258 471 262 471 259 z"},timeSigCutCommon:{x_min:0,x_max:463,y_min:-376,y_max:388,ha:764,o:"m 611 -120 b 599 -131 605 -120 599 -125 b 382 -323 593 -251 508 -323 b 369 -323 377 -323 373 -323 l 369 320 b 469 269 428 317 455 292 b 471 264 471 266 471 265 b 468 258 471 261 471 259 b 406 147 432 235 406 193 b 408 130 406 141 406 135 b 523 17 415 71 464 24 b 537 17 527 17 533 17 b 667 147 609 17 667 75 b 667 156 667 147 667 151 b 664 177 667 161 665 171 b 369 370 651 236 598 364 l 369 543 b 353 559 369 552 361 559 l 314 559 b 298 543 305 559 298 552 l 298 369 b 0 17 32 341 0 105 b 298 -364 0 -140 17 -334 l 298 -526 b 314 -541 298 -534 305 -541 l 353 -541 b 369 -526 361 -541 369 -534 l 369 -369 b 382 -369 373 -369 377 -369 b 641 -131 524 -369 635 -285 b 629 -120 641 -124 636 -120 z m 196 147 b 298 312 196 215 216 289 l 298 -310 b 196 -128 229 -285 196 -223 z"},timeSigPlus:{x_min:0,x_max:408,y_min:-204,y_max:204,ha:408,o:"m 327 33 l 327 275 b 308 294 327 285 318 294 l 279 294 b 261 275 269 294 261 285 l 261 33 l 19 33 b 0 14 9 33 0 24 l 0 -13 b 19 -33 0 -23 9 -33 l 261 -33 l 261 -274 b 279 -294 261 -284 269 -294 l 308 -294 b 327 -274 318 -294 327 -284 l 327 -33 l 567 -33 b 588 -13 577 -33 588 -23 l 588 14 b 567 33 588 24 577 33 z"},noteheadDoubleWhole:{x_min:0,x_max:538,y_min:-178,y_max:179,ha:357,o:"m 33 258 b 20 258 27 258 26 258 b 0 238 9 258 0 249 b 0 -236 0 226 0 -226 b 20 -256 0 -246 9 -256 b 33 -256 26 -256 27 -256 b 53 -236 43 -256 53 -245 b 53 238 53 -228 53 226 b 33 258 53 249 45 258 z m 649 258 b 636 258 644 258 642 258 b 616 238 625 258 616 249 b 616 125 616 235 616 187 b 389 196 573 167 500 196 b 160 125 276 196 203 167 b 160 238 160 187 160 235 b 140 258 160 249 151 258 b 127 258 134 258 132 258 b 107 238 115 258 107 249 b 107 -236 107 226 107 -226 b 127 -256 107 -246 115 -256 b 140 -256 132 -256 134 -256 b 160 -236 150 -256 160 -245 b 160 -122 160 -233 160 -186 b 389 -194 203 -166 276 -194 b 616 -122 500 -194 573 -166 b 616 -236 616 -186 616 -233 b 636 -256 616 -246 625 -256 b 649 -256 642 -256 644 -256 b 670 -236 660 -256 670 -245 b 670 238 670 -228 670 226 b 649 258 670 249 661 258 z m 462 -140 b 400 -148 445 -144 422 -148 b 314 -101 360 -148 333 -135 b 268 68 295 -65 269 29 b 268 76 268 71 268 73 b 314 141 268 109 282 130 b 377 150 331 145 354 150 b 462 102 416 150 442 140 b 510 -66 482 63 510 -29 b 462 -140 510 -104 497 -128 z m 755 258 b 742 258 749 258 747 258 b 721 238 730 258 721 249 b 721 -236 721 226 721 -226 b 742 -256 721 -246 730 -256 b 755 -256 747 -256 749 -256 b 775 -236 765 -256 775 -245 b 775 238 775 -228 775 226 b 755 258 775 249 766 258 z"},noteheadWhole:{x_min:0,x_max:373,y_min:-134,y_max:136,ha:270,o:"m 269 196 b 0 1 71 196 0 95 b 269 -193 0 -92 71 -193 b 537 1 468 -193 537 -92 b 269 196 537 95 468 196 z m 343 -138 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 148 68 176 -63 150 29 b 194 141 145 107 160 130 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 389 -65 363 63 389 -29 b 343 -138 389 -102 377 -128 z"},noteheadHalf:{x_min:0,x_max:325,y_min:-133,y_max:132,ha:265,o:"m 307 190 b 0 -60 167 190 0 73 b 161 -192 0 -122 45 -192 b 468 58 311 -192 468 -69 b 307 190 468 143 396 190 z m 268 -63 b 108 -124 264 -66 158 -124 b 50 -72 60 -124 50 -85 b 200 62 50 -12 194 59 b 360 122 206 65 308 122 b 418 71 395 122 418 102 b 268 -63 418 9 272 -60 z"},noteheadBlack:{x_min:0,x_max:325,y_min:-133,y_max:132,ha:265,o:"m 0 -60 b 161 -192 0 -122 45 -192 b 468 58 311 -192 468 -69 b 307 190 468 143 396 190 b 0 -60 167 190 0 72 z"},noteheadXBlack:{x_min:0,x_max:325,y_min:-132,y_max:132,ha:264,o:"m 461 138 b 468 153 465 141 468 147 l 468 154 b 462 167 468 160 465 164 l 445 184 b 431 190 441 187 436 190 b 418 186 426 190 420 189 l 235 40 l 50 186 b 37 190 48 189 42 190 b 24 184 32 190 29 187 l 6 167 b 0 153 3 164 0 158 b 7 138 0 147 3 141 l 183 0 l 7 -138 b 0 -153 3 -141 0 -147 b 6 -166 0 -157 3 -163 l 23 -184 b 37 -190 26 -189 32 -190 b 50 -186 42 -190 48 -189 l 235 -40 l 418 -186 b 431 -190 420 -189 426 -190 b 445 -184 436 -190 442 -189 l 462 -166 b 468 -153 465 -163 468 -157 b 461 -138 468 -147 465 -141 l 285 0 z"},noteheadCircleX:{x_min:0,x_max:325,y_min:-162,y_max:163,ha:325,o:"m 265 0 l 395 105 b 426 0 415 75 426 39 b 387 -115 426 -43 412 -84 z m 233 -27 l 360 -145 b 235 -192 327 -174 282 -192 b 99 -137 183 -192 134 -171 z m 202 1 l 73 -105 b 42 0 53 -75 42 -39 b 81 115 42 43 56 84 z m 235 29 l 108 145 b 233 193 141 174 186 193 b 369 138 285 193 334 173 z m 233 235 b 0 0 104 235 0 130 b 233 -233 0 -130 104 -233 b 468 0 363 -233 468 -130 b 233 235 468 130 363 235 z"},noteheadDoubleWholeSquare:{x_min:0,x_max:432,y_min:-179,y_max:177,ha:356,o:"m 590 255 b 570 235 579 255 570 246 l 570 203 l 53 203 l 53 235 b 33 255 53 246 45 255 l 20 255 b 0 235 9 255 0 246 l 0 -230 b 20 -251 0 -242 9 -251 l 33 -251 b 53 -230 45 -251 53 -242 l 53 -200 l 570 -200 l 570 -238 b 590 -258 570 -249 579 -258 l 603 -258 b 622 -238 615 -258 622 -249 l 622 235 b 603 255 622 246 615 255 z m 570 -101 l 53 -101 l 53 105 l 570 105 z"},noteheadSquareWhite:{x_min:0,x_max:310,y_min:-125,y_max:125,ha:250,o:"m 395 128 l 395 -128 l 52 -128 l 52 128 z m 446 180 l 0 180 l 0 -180 l 446 -180 z"},noteheadSquareBlack:{x_min:0,x_max:310,y_min:-125,y_max:125,ha:250,o:"m 446 180 l 0 180 l 0 -180 l 446 -180 z"},noteheadTriangleUpBlack:{x_min:0,x_max:310,y_min:-136,y_max:122,ha:258,o:"m 223 176 l 0 -196 l 446 -196 z"},noteheadSlashedDoubleWhole1:{x_min:-66,x_max:456,y_min:-213,y_max:212,ha:425,o:"m 652 298 b 638 305 649 304 644 305 b 626 301 634 305 629 304 l 560 248 b 543 256 557 253 550 256 b 530 256 537 256 536 256 b 510 236 518 256 510 248 b 510 204 510 235 510 223 l 455 161 b 281 194 413 181 356 194 b 53 124 168 194 96 166 b 53 236 53 186 53 233 b 29 256 53 253 42 256 b 20 256 26 256 23 256 b 0 236 9 256 0 248 b 0 -204 0 228 0 -98 l -88 -272 b -95 -288 -92 -276 -95 -282 b -91 -300 -95 -291 -94 -295 b -76 -307 -86 -304 -82 -307 b -65 -302 -72 -307 -68 -305 l 3 -248 b 20 -258 6 -253 12 -258 b 53 -238 33 -258 52 -255 b 53 -206 53 -236 53 -225 l 107 -161 b 281 -196 148 -183 206 -196 b 510 -124 393 -196 465 -166 b 510 -238 510 -187 510 -235 b 530 -258 510 -248 518 -258 b 563 -238 543 -258 563 -255 b 563 204 563 -229 563 98 l 649 272 b 657 288 655 276 657 282 b 652 298 657 291 655 295 z m 160 75 b 269 148 160 138 219 148 b 356 101 310 148 334 140 b 363 85 357 96 360 91 l 189 -56 b 160 66 174 -14 161 40 b 160 75 160 69 160 72 z m 53 -163 b 53 -124 53 -151 53 -138 b 76 -144 60 -131 68 -138 z m 402 -68 b 292 -148 402 -138 351 -148 b 207 -101 252 -150 226 -137 b 199 -84 204 -96 202 -91 l 373 56 b 402 -68 389 13 402 -40 z m 510 124 b 485 144 503 131 494 137 l 510 163 b 510 124 510 151 510 137 z"},noteheadSlashedWhole1:{x_min:-75,x_max:448,y_min:-211,y_max:214,ha:425,o:"m 641 301 b 625 308 636 305 631 308 b 613 304 621 307 618 307 l 439 160 b 269 196 399 181 343 196 b 0 1 71 196 0 95 b 69 -138 0 -49 20 -101 l -101 -271 b -108 -287 -105 -275 -108 -281 b -104 -298 -107 -291 -107 -294 b -88 -304 -99 -302 -94 -304 b -76 -301 -85 -304 -81 -304 l 98 -157 b 269 -193 138 -179 194 -193 b 537 1 468 -193 537 -92 b 468 141 537 52 517 104 l 638 274 b 645 289 642 278 645 284 b 641 301 644 292 644 297 z m 148 68 b 148 78 148 72 148 75 b 194 141 148 111 163 131 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 350 86 346 98 348 92 l 177 -55 b 148 68 163 -12 150 42 z m 389 -65 b 343 -138 389 -102 377 -128 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 187 -82 192 -95 190 -89 l 279 -6 l 361 58 b 389 -65 376 16 389 -39 z"},noteheadSlashedHalf1:{x_min:-98,x_max:424,y_min:-213,y_max:212,ha:425,o:"m 606 298 b 592 305 602 302 598 305 b 580 301 588 305 583 304 l 412 163 b 307 190 383 180 347 190 b 153 148 258 190 204 176 b 0 -60 58 98 0 13 b 14 -120 0 -81 4 -101 b 32 -143 20 -128 26 -135 l -134 -274 b -141 -288 -138 -276 -141 -282 b -137 -300 -141 -292 -140 -297 b -122 -307 -134 -304 -128 -307 b -111 -302 -118 -307 -114 -305 l 56 -164 b 161 -192 85 -181 121 -192 b 315 -151 210 -192 264 -179 b 468 58 410 -101 468 -16 b 454 117 468 78 464 98 b 436 141 449 125 444 134 l 603 272 b 611 287 608 275 611 281 b 606 298 611 291 609 295 z m 56 -98 b 49 -73 52 -91 49 -82 b 75 -23 49 -58 59 -39 b 199 60 99 1 147 32 b 337 118 251 89 302 111 b 359 121 344 120 351 121 b 361 121 360 121 360 121 l 225 9 l 69 -114 b 56 -98 65 -109 60 -104 z m 410 94 b 416 69 415 86 416 78 b 392 19 416 53 408 36 b 266 -65 367 -6 318 -36 b 128 -122 215 -94 163 -115 b 107 -125 121 -124 114 -125 b 104 -125 107 -125 105 -125 l 245 -9 l 396 111 b 410 94 402 107 408 101 z"},noteheadSlashedBlack1:{x_min:-98,x_max:424,y_min:-213,y_max:212,ha:425,o:"m 606 298 b 592 305 602 302 598 305 b 580 301 588 305 583 304 l 412 161 b 307 190 383 180 347 190 b 0 -60 167 190 0 72 b 32 -144 0 -89 10 -120 l -134 -274 b -141 -288 -138 -278 -141 -284 b -137 -301 -141 -292 -140 -297 b -122 -307 -134 -305 -128 -307 b -111 -304 -118 -307 -114 -307 l 56 -164 b 161 -192 82 -181 117 -192 b 468 58 311 -192 468 -71 b 436 141 468 91 456 120 l 603 271 b 611 285 608 275 611 281 b 606 298 611 289 609 294 z"},noteheadSlashedDoubleWhole2:{x_min:-66,x_max:456,y_min:-213,y_max:212,ha:425,o:"m 563 -204 b 563 236 563 -98 563 228 b 543 256 563 249 554 256 b 530 256 537 256 536 256 b 510 236 518 256 510 248 b 510 124 510 233 510 187 b 281 194 467 166 393 194 b 107 161 207 194 150 181 l 53 204 b 53 236 53 223 53 235 b 33 256 53 249 45 256 b 20 256 27 256 26 256 b 3 246 12 256 6 253 l -63 301 b -76 305 -68 304 -72 305 b -91 298 -81 305 -86 304 b -95 287 -94 295 -95 291 b -88 272 -95 281 -92 276 l 0 204 b 0 -238 0 98 0 -229 b 20 -258 0 -248 9 -258 b 33 -258 26 -258 27 -258 b 53 -238 43 -258 53 -246 b 53 -124 53 -235 53 -187 b 281 -196 96 -166 170 -196 b 456 -161 356 -196 413 -183 l 510 -206 b 510 -238 510 -225 510 -236 b 530 -258 510 -248 518 -258 b 543 -258 536 -258 537 -258 b 560 -246 549 -258 556 -252 l 626 -302 b 638 -307 631 -305 634 -307 b 654 -300 645 -307 649 -304 b 657 -288 655 -295 657 -292 b 651 -272 657 -282 655 -276 z m 207 140 b 269 148 225 144 248 148 b 356 101 310 148 336 140 b 402 -68 376 62 402 -30 b 402 -78 402 -71 402 -75 l 292 9 l 168 109 b 207 140 176 124 189 134 z m 78 144 b 53 124 69 137 60 131 b 53 163 53 137 53 150 z m 356 -141 b 294 -148 338 -145 315 -148 b 207 -101 253 -148 226 -137 b 161 66 189 -66 163 27 b 160 72 161 69 160 71 b 161 78 160 75 160 76 l 271 -9 l 395 -109 b 356 -141 387 -124 374 -134 z m 485 -144 b 510 -124 494 -138 503 -131 b 510 -163 510 -138 510 -151 z"},noteheadSlashedWhole2:{x_min:-75,x_max:448,y_min:-212,y_max:214,ha:426,o:"m 468 -138 b 537 1 517 -101 537 -49 b 269 196 537 95 468 196 b 98 160 196 196 140 181 l -76 304 b -88 308 -81 307 -84 307 b -104 301 -94 308 -99 305 b -108 289 -107 297 -107 292 b -101 274 -108 284 -105 278 l 69 141 b 0 1 20 104 0 52 b 269 -193 0 -92 71 -193 b 441 -157 343 -193 399 -179 l 613 -301 b 625 -305 618 -304 622 -305 b 641 -298 631 -305 636 -302 b 645 -287 644 -294 644 -291 b 638 -271 645 -281 642 -275 z m 194 141 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 389 -65 363 63 389 -29 b 389 -76 389 -69 389 -73 l 279 10 l 156 112 b 194 141 163 125 176 135 z m 343 -138 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 148 68 176 -63 150 29 b 148 76 148 71 148 73 b 148 81 148 78 148 79 l 258 -6 l 382 -108 b 343 -138 374 -122 361 -132 z"},noteheadSlashedHalf2:{x_min:-98,x_max:424,y_min:-213,y_max:212,ha:425,o:"m 386 -102 b 468 58 438 -55 468 4 b 454 117 468 78 464 98 b 307 190 428 164 373 190 b 153 148 258 190 204 176 b 108 120 137 140 122 130 l -111 301 b -122 305 -114 304 -118 305 b -137 298 -128 305 -134 302 b -141 287 -140 295 -141 291 b -134 272 -141 281 -138 275 l 85 101 b 0 -60 32 53 0 -7 b 14 -120 0 -81 4 -101 b 161 -192 40 -167 95 -192 b 315 -151 210 -192 264 -179 b 361 -122 333 -143 347 -132 l 580 -302 b 592 -307 583 -305 588 -307 b 606 -300 598 -307 602 -304 b 611 -288 609 -297 611 -292 b 603 -274 611 -282 608 -276 z m 199 60 b 337 118 251 89 302 111 b 359 121 344 120 351 121 b 410 94 382 121 400 112 b 416 69 415 86 416 78 b 392 19 416 53 408 36 b 308 -42 374 0 343 -20 l 245 7 l 189 55 b 199 60 192 56 196 58 z m 266 -65 b 128 -122 215 -94 163 -115 b 107 -125 121 -124 114 -125 b 56 -98 84 -125 66 -117 b 49 -73 52 -91 49 -82 b 75 -23 49 -58 59 -39 b 163 39 94 -4 125 17 l 225 -9 l 282 -56 b 266 -65 276 -59 272 -62 z"},noteheadSlashedBlack2:{x_min:-98.44444444444443,x_max:424,y_min:-213,y_max:212,ha:425,o:"m 384 -102 b 468 58 435 -58 468 0 b 307 190 468 143 396 190 b 108 121 239 190 167 163 l -111 301 b -124 305 -115 304 -120 305 b -138 298 -128 305 -134 302 b -141 289 -140 295 -141 292 b -141 287 -141 288 -143 288 b -135 272 -141 281 -140 275 l 84 101 b 0 -60 35 56 0 0 b 161 -192 0 -122 45 -192 b 361 -122 232 -192 304 -164 l 579 -302 b 590 -307 583 -305 588 -307 b 606 -300 596 -307 602 -304 b 611 -288 609 -297 611 -292 b 603 -274 609 -282 608 -276 z"},noteheadDiamondDoubleWhole:{x_min:0,x_max:373,y_min:-178,y_max:179,ha:357,o:"m 504 258 b 484 238 494 258 484 248 l 484 46 b 282 187 415 95 285 186 b 268 192 279 190 275 192 b 255 187 262 192 258 190 l 52 45 l 52 238 b 33 258 52 248 43 258 l 20 258 b 0 238 9 258 0 248 l 0 -236 b 20 -256 0 -248 9 -256 l 33 -256 b 52 -236 43 -256 52 -248 l 52 -45 l 249 -181 b 268 -190 258 -189 264 -190 b 282 -186 274 -190 279 -189 b 484 -43 285 -184 413 -94 l 484 -236 b 504 -256 484 -248 494 -256 l 517 -256 b 537 -236 528 -256 537 -248 l 537 238 b 517 258 537 248 528 258 z m 220 -115 l 102 -33 l 317 117 l 435 35 z"},noteheadDiamondWhole:{x_min:0,x_max:373,y_min:-133,y_max:132,ha:265,o:"m 282 -187 b 530 -13 285 -186 530 -13 b 537 0 534 -10 537 -6 b 530 13 537 4 534 10 b 282 186 530 13 287 183 b 268 190 279 189 275 190 b 255 186 262 190 258 189 l 7 12 b 0 -1 3 9 0 4 b 4 -13 0 -6 1 -10 l 249 -183 b 268 -192 258 -190 264 -192 b 282 -187 274 -192 279 -190 z m 220 -117 l 102 -35 l 317 115 l 435 33 z"},noteheadDiamondHalf:{x_min:0,x_max:335,y_min:-132,y_max:133,ha:265,o:"m 475 -13 b 482 0 480 -10 482 -6 b 475 13 482 4 480 10 l 253 187 b 240 192 251 190 246 192 b 229 187 236 192 232 190 l 7 13 b 0 0 3 10 0 6 b 7 -13 0 -4 3 -10 l 229 -186 b 240 -190 232 -189 236 -190 b 253 -186 246 -190 251 -189 z m 284 -115 l 92 33 l 199 117 l 390 -33 z"},noteheadDiamondBlack:{x_min:0,x_max:335,y_min:-132,y_max:133,ha:265,o:"m 475 -14 b 482 -1 480 -10 482 -6 b 475 13 482 4 480 10 l 253 187 b 240 192 251 190 246 192 b 229 187 236 192 232 190 l 7 13 b 0 0 3 10 0 4 b 7 -14 0 -6 3 -10 l 229 -186 b 240 -190 232 -189 236 -190 b 253 -186 246 -190 251 -189 z"},noteheadParenthesisRight:{x_min:0,x_max:75,y_min:-209.4142135623731,y_max:212,ha:421.4142135623731,o:"m 10 305 b 4 302 7 304 6 304 b 0 295 1 301 0 298 b 1 289 0 294 0 292 b 68 -10 1 288 68 160 b 1 -288 68 -95 50 -192 b 0 -292 0 -289 0 -291 b 4 -300 0 -295 1 -298 b 12 -301 7 -301 9 -302 b 17 -298 14 -301 16 -300 b 108 0 22 -292 108 -174 b 17 301 108 174 22 295 b 10 305 16 304 13 305 z"},noteheadParenthesisLeft:{x_min:0,x_max:75,y_min:-212,y_max:209.4142135623731,ha:421.4142135623731,o:"m 98 -305 b 104 -302 101 -304 102 -304 b 108 -295 107 -301 108 -298 b 107 -289 108 -294 108 -292 b 40 10 107 -288 40 -160 b 107 288 40 95 58 192 b 108 292 108 289 108 291 b 104 300 108 295 107 298 b 96 301 101 301 99 302 b 91 298 94 301 92 300 b 0 0 86 292 0 174 b 91 -301 0 -174 86 -295 b 98 -305 92 -304 95 -305 z"},noteheadMoonBlack:{x_min:0,x_max:310,y_min:-125,y_max:125,ha:250,o:"m 0 180 l 0 0 b 223 -180 0 -99 99 -180 b 446 0 347 -180 446 -99 l 446 180 z"},noteheadTriangleLeftBlack:{x_min:0,x_max:339,y_min:-136,y_max:122,ha:258,o:"m 0 176 l 0 -196 l 488 -196 z"},noteheadTriangleRightBlack:{x_min:0,x_max:339,y_min:-136,y_max:122,ha:258,o:"m 488 176 l 0 -196 l 488 -196 z"},noteheadTriangleRoundDownBlack:{x_min:0,x_max:310,y_min:-136,y_max:122,ha:258,o:"m 226 -196 l 446 63 b 226 176 446 63 384 176 b 0 63 68 176 0 63 z"},augmentationDot:{x_min:0,x_max:100,y_min:-50,y_max:50,ha:100,o:"m 0 0 b 72 -72 0 -40 32 -72 b 144 0 112 -72 144 -40 b 72 72 144 40 112 72 b 0 0 32 72 0 40 z"},tremolo1:{x_min:0,x_max:290,y_min:-93,y_max:96,ha:189,o:"m 0 48 l 0 -134 l 418 -43 l 418 138 z"},flag8thUp:{x_min:0,x_max:289.04376776750354,y_min:-817,y_max:12,ha:829,o:"m 0 -327 b 12 -343 0 -331 1 -338 b 291 -600 73 -363 197 -441 b 359 -827 317 -645 359 -707 b 294 -1140 359 -930 331 -1037 b 289 -1162 291 -1149 288 -1156 b 297 -1175 289 -1168 291 -1172 b 304 -1176 300 -1176 302 -1176 b 327 -1161 314 -1176 321 -1171 b 416 -798 395 -1041 418 -888 b 416 -780 416 -791 416 -786 b 302 -458 409 -595 302 -458 b 131 -220 307 -458 170 -281 b 50 -50 78 -138 53 -56 b 36 6 49 -46 36 6 b 19 17 35 12 27 17 b 0 -1 9 17 0 9 z"},flag8thDown:{x_min:0,x_max:309,y_min:-12,y_max:817,ha:829,o:"m 0 1 b 19 -17 0 -9 9 -17 b 36 -6 26 -17 35 -12 b 50 50 36 -4 49 46 b 117 196 52 56 65 111 b 331 458 173 289 259 357 b 445 780 402 559 445 654 b 338 1161 445 912 415 1021 b 317 1176 334 1171 325 1176 b 310 1175 314 1176 311 1176 b 300 1158 302 1172 300 1166 b 304 1140 300 1153 301 1146 b 384 827 361 1007 384 930 b 317 600 384 707 343 645 b 12 343 223 441 72 363 b 0 327 1 338 0 331 z"},flag16thUp:{x_min:0,x_max:279,y_min:-820,y_max:12,ha:832,o:"m 301 -681 b 148 -514 262 -631 219 -585 b 56 -372 92 -458 66 -409 b 52 -343 55 -364 53 -354 b 271 -510 125 -343 219 -442 b 340 -696 327 -583 340 -641 b 337 -739 340 -710 338 -724 b 301 -681 325 -716 312 -697 z m 0 -549 b 22 -563 0 -553 12 -559 b 258 -776 59 -576 171 -648 b 318 -950 307 -850 318 -901 b 317 -975 318 -959 318 -966 b 285 -1140 317 -1009 307 -1083 b 279 -1164 284 -1148 279 -1156 b 289 -1179 279 -1169 282 -1175 b 297 -1181 292 -1181 294 -1181 b 318 -1161 307 -1181 312 -1169 b 382 -962 344 -1120 382 -1043 b 374 -855 382 -920 379 -886 b 402 -678 389 -802 402 -749 b 333 -471 402 -603 382 -536 b 137 -228 265 -382 192 -307 b 42 0 82 -148 42 0 b 22 17 39 10 37 17 b 0 0 4 17 0 10 z"},flag16thDown:{x_min:0,x_max:309,y_min:-26,y_max:803,ha:829,o:"m 53 346 b 56 363 55 353 56 359 b 163 517 66 399 78 452 b 384 732 246 582 346 662 b 317 503 382 621 354 552 b 53 346 229 395 122 364 z m 0 -14 b 22 -37 0 -26 10 -37 b 43 -14 33 -37 40 -26 b 167 232 65 134 109 177 b 445 683 243 305 445 416 b 432 837 445 730 441 783 b 441 919 438 855 441 881 b 327 1149 441 1032 374 1112 b 304 1156 321 1153 312 1156 b 287 1152 298 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1135 b 382 930 344 1076 382 1027 b 374 876 382 912 380 893 l 373 871 b 373 871 373 871 373 871 b 327 789 366 842 350 815 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z"},flag32ndUp:{x_min:0,x_max:279,y_min:-821,y_max:186,ha:1007,o:"m 301 -683 b 148 -516 262 -632 219 -588 b 56 -373 92 -459 66 -410 b 50 -343 55 -366 53 -354 b 271 -500 125 -343 219 -432 b 340 -687 327 -575 340 -632 b 337 -739 340 -704 338 -721 b 301 -683 325 -716 312 -698 z m 271 -259 b 340 -446 327 -333 340 -392 b 338 -469 340 -455 338 -462 b 333 -461 337 -467 334 -464 b 91 -192 265 -372 145 -271 b 50 -92 69 -160 58 -124 b 271 -259 124 -92 219 -192 z m 0 -550 b 22 -564 0 -554 12 -560 b 258 -778 59 -577 171 -649 b 318 -952 307 -851 318 -903 b 317 -976 318 -960 318 -968 b 285 -1142 317 -1011 307 -1084 b 279 -1165 284 -1149 279 -1158 b 289 -1181 279 -1171 282 -1176 b 297 -1182 292 -1182 294 -1182 b 318 -1162 307 -1182 312 -1171 b 382 -963 344 -1122 382 -1044 b 374 -857 382 -922 379 -887 b 402 -668 389 -802 402 -740 b 386 -563 402 -632 396 -596 b 402 -441 395 -526 402 -487 b 402 -428 402 -436 402 -432 b 333 -220 402 -353 382 -285 b 137 23 265 -131 192 -56 b 42 251 82 102 42 251 b 22 268 39 261 37 268 b 0 251 4 268 0 261 z"},flag32ndDown:{x_min:0,x_max:309,y_min:-216,y_max:803,ha:1019,o:"m 50 73 b 91 171 58 105 71 141 b 347 402 145 251 272 317 b 384 454 361 418 374 435 b 324 239 384 347 361 287 b 50 73 235 130 122 94 z m 163 517 b 366 693 248 589 327 642 b 382 716 372 700 377 708 b 383 693 383 708 383 700 b 314 505 383 621 359 562 b 53 343 258 436 179 390 b 56 363 55 351 56 359 b 163 517 66 400 81 449 z m 0 -288 b 22 -311 0 -298 10 -311 b 43 -288 33 -311 40 -300 b 167 -40 65 -138 109 -95 b 445 409 243 32 445 143 b 431 577 445 462 439 520 b 441 651 435 602 439 626 b 441 675 441 658 441 667 b 441 687 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 305 1156 321 1153 314 1156 b 287 1152 300 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1136 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z"},flag64thUp:{x_min:0,x_max:279,y_min:-822,y_max:373,ha:1195,o:"m 333 -461 b 91 -192 265 -372 145 -271 b 50 -92 69 -161 58 -125 b 271 -251 125 -92 219 -183 b 340 -438 327 -324 340 -383 b 338 -469 340 -448 338 -459 b 333 -461 337 -467 334 -464 z m 301 -683 b 148 -517 262 -632 219 -588 b 56 -374 92 -461 66 -410 b 50 -343 55 -366 53 -356 b 271 -501 125 -343 219 -433 b 340 -688 327 -575 340 -634 b 337 -739 340 -706 338 -721 b 301 -683 325 -717 312 -698 z m 271 10 b 340 -176 327 -63 340 -121 b 337 -217 340 -190 338 -204 b 333 -212 336 -216 334 -213 b 91 65 265 -122 145 -16 b 48 177 66 101 53 143 l 50 177 b 271 10 124 177 217 78 z m 0 -552 b 22 -564 0 -554 12 -562 b 258 -778 59 -579 171 -649 b 318 -952 307 -851 317 -903 b 317 -976 318 -960 318 -968 b 285 -1142 317 -1012 307 -1084 b 279 -1165 284 -1149 279 -1158 b 289 -1181 279 -1172 282 -1178 b 297 -1184 292 -1182 295 -1184 b 318 -1164 307 -1182 312 -1172 b 382 -963 344 -1122 382 -1044 b 374 -857 382 -923 379 -887 b 402 -668 389 -804 402 -740 b 386 -563 402 -632 396 -596 b 402 -432 395 -523 402 -480 b 402 -418 402 -428 402 -423 b 383 -304 402 -379 396 -341 b 402 -170 393 -264 402 -222 b 402 -158 402 -166 402 -163 b 333 49 402 -84 382 -16 b 137 292 265 138 192 213 b 42 520 82 372 42 520 b 22 537 39 530 37 537 b 0 520 4 537 0 530 z"},flag64thDown:{x_min:0,x_max:309,y_min:-403,y_max:804,ha:1207,o:"m 52 -196 b 91 -102 59 -166 71 -131 b 347 128 145 -23 272 45 b 384 180 361 145 374 163 b 324 -30 384 76 361 16 b 52 -196 235 -140 124 -176 z m 163 517 b 366 693 248 589 327 644 b 382 717 372 701 377 708 b 383 693 383 708 383 701 b 314 505 383 621 359 562 b 53 343 258 438 179 390 b 56 363 55 351 56 359 b 163 517 66 400 81 449 z m 314 232 b 50 69 258 163 179 117 b 91 171 56 102 69 140 b 347 402 145 251 272 318 b 382 449 360 416 372 432 b 383 420 383 439 383 429 b 314 232 383 348 359 288 z m 0 -557 b 22 -580 0 -567 10 -580 b 43 -557 33 -580 40 -567 b 167 -310 65 -408 109 -364 b 445 140 243 -238 445 -125 b 431 307 445 192 439 249 b 441 377 436 331 439 354 b 441 406 441 387 441 397 b 441 418 441 410 441 413 b 423 546 441 464 432 507 b 441 651 432 582 438 618 b 441 675 441 660 441 667 b 441 688 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 305 1158 321 1153 314 1156 b 287 1152 300 1158 292 1156 b 279 1145 281 1151 279 1148 b 294 1129 279 1140 288 1136 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 563 z"},flag128thUp:{x_min:0,x_max:279,y_min:-821,y_max:573,ha:1394,o:"m 0 -550 b 22 -563 0 -553 12 -560 b 258 -776 59 -576 171 -648 b 318 -950 307 -850 318 -901 b 317 -975 318 -959 318 -966 b 285 -1140 317 -1011 307 -1083 b 279 -1164 284 -1148 279 -1156 b 289 -1179 279 -1171 282 -1176 b 297 -1182 292 -1181 294 -1181 b 318 -1162 307 -1182 312 -1169 b 382 -962 344 -1120 382 -1043 b 374 -857 382 -922 379 -887 b 402 -668 389 -802 402 -740 b 383 -554 402 -629 396 -590 b 402 -399 396 -503 402 -452 b 382 -284 402 -359 396 -321 b 402 -125 396 -230 402 -180 b 383 -14 402 -86 396 -49 b 402 130 396 35 402 81 b 333 348 402 204 382 284 b 137 592 265 438 192 513 b 42 808 82 671 46 793 b 22 825 39 818 37 825 b 0 808 4 825 0 818 z m 271 310 b 340 111 328 235 340 170 b 338 73 340 98 338 86 b 333 81 336 76 334 79 b 91 357 265 170 145 276 b 48 469 66 393 53 435 l 50 469 b 271 310 124 469 217 377 z m 301 -681 b 148 -523 262 -631 219 -593 b 56 -383 92 -465 66 -420 b 49 -343 55 -374 52 -359 l 50 -343 b 271 -500 124 -343 217 -432 b 340 -688 327 -575 340 -634 b 337 -737 340 -706 338 -721 b 301 -681 325 -716 312 -697 z m 333 -461 b 91 -192 265 -372 145 -271 b 48 -73 66 -154 53 -111 l 48 -73 l 50 -73 b 271 -232 124 -73 217 -163 b 340 -419 327 -305 340 -364 b 337 -468 340 -435 338 -452 b 333 -461 336 -465 334 -464 z m 333 -192 b 91 84 265 -102 145 4 b 48 200 65 121 53 164 l 48 200 l 50 200 b 271 42 124 200 217 109 b 340 -147 327 -32 340 -92 b 337 -197 340 -164 338 -181 b 333 -192 336 -196 334 -194 z"},flag128thDown:{x_min:0,x_max:309,y_min:-591,y_max:803,ha:1394,o:"m 0 -828 b 22 -851 0 -838 10 -851 b 43 -828 33 -851 40 -840 b 167 -580 65 -678 109 -635 b 445 -131 243 -508 445 -397 b 431 36 445 -79 439 -22 b 441 108 436 60 439 85 b 441 137 441 117 441 127 b 441 147 441 140 441 144 b 423 275 441 193 432 236 b 441 377 433 310 438 344 b 441 406 441 387 441 396 b 441 418 441 410 441 413 b 423 546 441 464 432 507 b 441 649 432 582 438 616 b 441 675 441 658 441 667 b 441 687 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 304 1156 321 1153 312 1156 b 287 1152 298 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1135 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z m 314 -37 b 50 -200 258 -107 179 -153 b 91 -102 58 -168 71 -132 b 347 128 145 -23 272 45 b 382 176 360 143 372 160 b 383 151 383 167 383 160 b 314 -37 383 79 359 19 z m 314 232 b 50 69 258 163 179 117 b 91 171 56 101 69 138 b 347 402 145 251 272 317 b 382 449 360 416 372 432 b 383 420 383 439 383 429 b 314 232 383 347 359 288 z m 163 517 b 366 693 248 589 327 642 b 382 716 372 700 377 708 b 383 693 383 708 383 700 b 314 505 382 621 359 560 b 53 343 258 436 179 390 b 56 363 55 350 56 357 b 163 517 66 399 81 449 z m 52 -467 b 91 -372 59 -435 71 -402 b 347 -141 145 -292 272 -225 b 384 -89 361 -125 374 -108 b 324 -301 382 -194 361 -255 b 52 -467 235 -410 122 -446 z"},accidentalFlat:{x_min:0,x_max:203,y_min:-176,y_max:453,ha:629,o:"m 289 114 b 173 223 281 170 246 223 b 52 170 101 223 59 179 l 58 632 b 37 652 58 644 49 652 l 20 652 b 0 632 9 652 0 644 l 7 -233 b 27 -253 7 -245 16 -253 b 39 -251 30 -253 36 -252 b 216 -114 45 -248 138 -202 b 292 78 271 -52 292 19 b 289 114 292 91 291 102 z m 190 58 b 148 -85 190 36 184 -30 b 48 -183 124 -122 75 -161 l 52 98 b 134 153 55 111 76 153 b 190 73 186 153 190 104 b 190 58 190 66 190 62 z"},accidentalNatural:{x_min:0,x_max:171,y_min:-323,y_max:325,ha:648,o:"m 239 264 b 228 268 236 266 232 268 b 222 266 226 268 223 266 l 40 216 l 40 468 l 0 468 l 0 -245 b 20 -264 0 -256 9 -264 b 26 -264 22 -264 24 -264 l 207 -213 l 207 -465 l 246 -465 b 246 248 246 -226 246 1 b 239 264 246 253 243 261 z m 40 -140 l 40 96 l 207 144 l 207 -94 z"},accidentalSharp:{x_min:0,x_max:244,y_min:-333,y_max:334,ha:667,o:"m 336 151 b 351 171 344 153 351 163 l 351 256 b 331 276 351 268 343 276 b 328 276 330 276 330 276 l 281 266 l 281 481 l 240 481 l 240 258 l 112 232 l 112 435 l 72 435 l 72 223 l 16 212 b 0 192 7 210 0 200 l 0 189 l 0 105 l 0 108 b 20 88 0 96 9 88 b 24 88 22 88 23 88 l 72 98 l 72 -140 l 16 -151 b 0 -171 7 -153 0 -163 l 0 -255 b 20 -275 0 -266 9 -275 b 24 -275 22 -275 23 -275 l 72 -265 l 72 -480 l 112 -480 l 112 -256 l 240 -230 l 240 -433 l 281 -433 l 281 -222 l 336 -212 b 351 -192 344 -210 351 -200 l 351 -107 b 331 -86 351 -95 343 -86 b 328 -86 330 -86 330 -86 l 281 -96 l 281 141 z m 112 107 l 240 132 l 240 -105 l 112 -132 z"},accidentalDoubleSharp:{x_min:0,x_max:275,y_min:-137,y_max:138,ha:275,o:"m 360 73 l 376 73 b 396 94 387 73 396 82 l 396 179 b 376 199 396 190 387 199 l 291 199 b 271 179 279 199 271 190 l 271 161 l 271 102 l 200 30 l 196 30 l 124 102 l 124 179 b 105 199 124 190 117 199 l 20 199 b 0 179 9 199 0 190 l 0 94 b 20 73 0 82 9 73 l 35 73 l 36 73 l 96 73 l 167 3 l 167 -1 l 96 -73 l 36 -73 l 35 -73 l 20 -73 b 0 -92 9 -73 0 -81 l 0 -177 b 20 -197 0 -189 9 -197 l 105 -197 b 124 -177 117 -197 124 -189 l 124 -101 l 196 -32 l 200 -32 l 271 -101 l 271 -161 l 271 -163 l 271 -177 b 291 -197 271 -189 279 -197 l 376 -197 b 396 -177 387 -197 396 -189 l 396 -92 b 376 -73 396 -81 387 -73 l 361 -73 l 360 -73 l 300 -73 l 228 -1 l 228 1 l 300 73 z"},accidentalDoubleFlat:{x_min:0,x_max:371,y_min:-176,y_max:453,ha:629,o:"m 531 115 b 415 223 523 171 488 223 b 294 171 343 223 301 180 l 300 632 b 279 652 300 644 291 652 l 262 652 b 242 632 251 652 242 644 l 246 199 b 173 223 228 213 204 223 b 52 170 101 223 59 179 l 58 632 b 37 652 58 644 49 652 l 20 652 b 0 632 9 652 0 644 l 7 -233 b 27 -253 7 -245 16 -253 b 39 -249 30 -253 36 -251 b 216 -114 45 -246 138 -202 b 248 -69 226 -102 239 -82 l 249 -233 b 269 -253 249 -245 258 -253 b 281 -249 272 -253 278 -251 b 458 -112 287 -246 380 -200 b 534 79 513 -50 534 20 b 531 115 534 92 533 104 z m 190 58 b 148 -85 190 36 184 -30 b 48 -183 124 -122 75 -161 l 52 98 b 134 153 55 111 76 153 b 190 73 186 153 190 104 b 190 58 190 66 190 62 z m 432 58 b 390 -85 432 36 426 -30 b 289 -183 366 -122 317 -161 l 294 98 b 376 153 297 111 318 153 b 432 73 428 153 432 104 b 432 58 432 66 432 62 z"},accidentalParensLeft:{x_min:0,x_max:75,y_min:-212,y_max:209.4142135623731,ha:421.4142135623731,o:"m 98 -305 b 104 -302 101 -304 102 -304 b 108 -295 107 -301 108 -298 b 107 -289 108 -294 108 -292 b 40 10 107 -288 40 -160 b 107 288 40 95 58 192 b 108 292 108 289 108 291 b 104 300 108 295 107 298 b 96 301 101 301 99 302 b 91 298 94 301 92 300 b 0 0 86 292 0 174 b 91 -301 0 -174 86 -295 b 98 -305 92 -304 95 -305 z"},accidentalParensRight:{x_min:0,x_max:75,y_min:-209.4142135623731,y_max:212,ha:421.4142135623731,o:"m 10 305 b 4 302 7 304 6 304 b 0 295 1 301 0 298 b 1 289 0 294 0 292 b 68 -10 1 288 68 160 b 1 -288 68 -95 50 -192 b 0 -292 0 -289 0 -291 b 4 -300 0 -295 1 -298 b 12 -301 7 -301 9 -302 b 17 -298 14 -301 16 -300 b 108 0 22 -292 108 -174 b 17 301 108 174 22 295 b 10 305 16 304 13 305 z"},accidentalQuarterToneFlatStein:{x_min:0,x_max:193,y_min:-176,y_max:452,ha:628,o:"m 0 84 b 107 -145 0 -26 65 -105 b 245 -249 166 -202 245 -249 b 253 -253 248 -251 249 -253 b 272 -235 264 -253 272 -245 l 278 632 b 259 651 278 642 269 651 l 248 651 b 229 632 238 651 229 642 l 232 174 b 125 217 223 186 192 217 b 0 84 53 217 0 173 z m 148 154 b 232 102 212 154 232 115 b 233 107 232 99 233 102 l 235 -179 b 134 -72 207 -156 160 -111 b 92 58 98 -17 92 36 b 92 75 92 62 92 68 b 148 154 92 105 96 154 z"},accidentalThreeQuarterTonesFlatZimmermann:{x_min:0,x_max:422,y_min:-176,y_max:452,ha:628,o:"m 608 84 b 482 217 608 173 554 217 b 376 174 416 217 384 186 l 379 632 b 360 651 379 642 370 651 l 348 651 b 330 632 338 651 330 642 l 336 -235 b 354 -253 336 -245 344 -253 b 363 -249 359 -253 360 -251 b 501 -145 363 -249 442 -202 b 608 84 543 -105 608 -26 z m 459 154 b 516 75 511 154 516 105 b 516 58 516 68 516 62 b 474 -72 516 36 510 -17 b 373 -179 448 -111 400 -156 l 374 107 b 376 102 374 102 376 99 b 459 154 376 115 396 154 z m 0 84 b 107 -145 0 -26 65 -105 b 245 -249 166 -202 245 -249 b 253 -253 248 -251 249 -253 b 272 -235 264 -253 272 -245 l 278 632 b 259 651 278 642 269 651 l 248 651 b 229 632 238 651 229 642 l 232 174 b 125 217 223 186 192 217 b 0 84 53 217 0 173 z m 148 154 b 232 102 212 154 232 115 b 233 107 232 99 233 102 l 235 -179 b 134 -72 207 -156 160 -111 b 92 58 98 -17 92 36 b 92 75 92 62 92 68 b 148 154 92 105 96 154 z"},accidentalQuarterToneSharpStein:{x_min:0,x_max:180,y_min:-316,y_max:320,ha:636,o:"m 243 144 b 259 164 252 145 259 156 l 259 249 b 239 269 259 261 251 269 b 235 268 238 269 236 268 l 150 251 l 150 461 l 109 461 l 109 242 l 16 222 b 0 203 7 220 0 212 l 0 120 b 20 99 0 108 9 99 b 24 99 22 99 23 99 l 109 117 l 109 -121 l 16 -141 b 0 -160 7 -143 0 -151 l 0 -243 b 20 -264 0 -255 9 -264 b 24 -264 22 -264 23 -264 l 109 -246 l 109 -455 l 150 -455 l 150 -238 l 243 -219 b 259 -199 252 -217 259 -207 l 259 -114 b 239 -95 259 -102 251 -95 b 235 -95 238 -95 236 -95 l 150 -112 l 150 125 z"},accidentalThreeQuarterTonesSharpStein:{x_min:0,x_max:290,y_min:-328,y_max:339,ha:667,o:"m 400 158 b 416 179 409 160 416 170 l 416 264 b 397 284 416 275 409 284 b 393 284 396 284 395 284 l 348 274 l 348 488 l 308 488 l 308 265 l 223 248 l 223 465 l 184 465 l 184 240 l 108 225 l 108 442 l 69 442 l 69 216 l 16 204 b 0 186 7 203 0 194 l 0 102 b 20 82 0 91 9 82 b 24 82 22 82 23 82 l 69 92 l 69 -147 l 16 -158 b 0 -177 7 -160 0 -168 l 0 -261 b 20 -281 0 -272 9 -281 b 24 -281 22 -281 23 -281 l 69 -272 l 69 -472 l 108 -472 l 108 -264 l 184 -248 l 184 -451 l 223 -451 l 223 -240 l 308 -223 l 308 -426 l 348 -426 l 348 -215 l 400 -204 b 418 -184 409 -203 418 -193 l 418 -99 b 397 -79 418 -88 409 -79 b 393 -79 396 -79 395 -79 l 348 -89 l 348 148 z m 184 -122 l 108 -138 l 108 99 l 184 115 z m 223 122 l 308 140 l 308 -98 l 223 -115 z"},accidentalBuyukMucennebFlat:{x_min:0,x_max:277,y_min:-176,y_max:454,ha:630,o:"m 396 115 b 279 225 387 173 354 225 b 158 171 204 225 164 179 l 160 317 l 336 419 l 336 482 l 161 380 l 161 488 l 336 590 l 336 654 l 163 552 l 164 634 b 144 654 164 645 156 654 l 127 654 b 107 634 115 654 107 645 l 108 520 l 0 456 l 0 393 l 108 456 l 109 350 l 0 285 l 0 222 l 109 287 l 114 -235 b 134 -253 114 -246 122 -253 b 145 -251 138 -253 141 -252 b 323 -114 145 -251 242 -204 b 399 79 377 -52 399 20 b 396 115 399 92 397 104 z m 297 58 b 255 -85 297 36 291 -30 b 154 -184 230 -122 181 -163 l 158 96 b 240 153 161 109 181 153 b 297 73 292 153 297 104 b 297 58 297 66 297 62 z"},accidentalBakiyeFlat:{x_min:0,x_max:277,y_min:-176,y_max:454,ha:630,o:"m 396 115 b 279 225 387 173 354 225 b 158 171 204 225 164 179 l 161 348 l 336 452 l 336 516 l 161 413 l 164 634 b 144 654 164 645 156 654 l 127 654 b 107 634 115 654 107 645 l 109 382 l 0 318 l 0 255 l 109 318 l 114 -235 b 134 -253 114 -246 122 -253 b 145 -251 138 -253 143 -252 b 323 -114 145 -251 242 -204 b 399 79 377 -52 399 20 b 396 115 399 92 397 104 z m 297 58 b 255 -85 297 36 291 -30 b 156 -184 230 -122 183 -163 l 158 96 b 240 153 161 109 181 153 b 297 73 292 153 297 104 b 297 58 297 66 297 62 z"},accidentalKucukMucennebSharp:{x_min:0,x_max:348,y_min:-316,y_max:318,ha:634,o:"m 494 121 b 482 125 491 124 487 125 b 478 124 481 125 480 124 l 269 68 l 269 127 l 412 164 b 425 181 420 167 425 173 l 425 266 b 418 282 425 272 422 279 b 406 285 415 285 410 285 b 402 285 405 285 403 285 l 269 249 l 269 458 l 232 458 l 232 239 l 89 200 b 76 181 81 197 76 190 l 76 98 b 84 84 76 92 79 86 b 95 79 86 81 91 79 b 99 81 96 79 98 81 l 232 115 l 232 58 l 14 -3 b 0 -20 6 -6 0 -12 l 0 -104 b 7 -118 0 -109 3 -115 b 19 -122 10 -121 14 -122 b 23 -122 20 -122 22 -122 l 232 -66 l 232 -124 l 89 -163 b 76 -180 81 -166 76 -171 l 76 -264 b 84 -279 76 -269 79 -276 b 95 -282 86 -282 91 -282 b 99 -282 96 -282 98 -282 l 232 -246 l 232 -455 l 269 -455 l 269 -236 l 412 -199 b 425 -180 420 -196 425 -189 l 425 -95 b 418 -81 425 -89 422 -84 b 406 -76 415 -78 410 -76 b 402 -78 405 -76 403 -78 l 269 -114 l 269 -55 l 487 4 b 501 22 495 7 501 13 l 501 107 b 494 121 501 112 498 118 z"},articAccentAbove:{x_min:0,x_max:361,y_min:0,y_max:235,ha:235,o:"m 26 337 b 20 338 24 337 22 338 b 0 318 9 338 0 330 l 0 285 b 14 266 0 276 7 269 l 323 170 l 14 72 b 0 53 7 69 0 62 l 0 20 b 20 0 0 9 9 0 b 26 1 22 0 24 1 l 505 150 b 520 170 513 153 520 161 b 505 189 520 179 513 186 z"},articAccentBelow:{x_min:0,x_max:361,y_min:-235,y_max:0,ha:235,o:"m 26 -1 b 20 0 24 -1 22 0 b 0 -20 9 0 0 -9 l 0 -53 b 14 -72 0 -62 7 -69 l 323 -168 l 14 -266 b 0 -285 7 -269 0 -276 l 0 -318 b 20 -338 0 -330 9 -338 b 26 -337 22 -338 24 -337 l 505 -189 b 520 -168 513 -186 520 -177 b 505 -150 520 -160 513 -153 z"},articTenutoAbove:{x_min:0,x_max:316,y_min:0,y_max:46,ha:46,o:"m 20 66 b 0 46 9 66 0 58 l 0 20 b 20 0 0 9 9 0 l 435 0 b 455 20 446 0 455 9 l 455 46 b 435 66 455 58 446 66 z"},articTenutoBelow:{x_min:0,x_max:316,y_min:-46,y_max:0,ha:46,o:"m 20 0 b 0 -20 9 0 0 -9 l 0 -46 b 20 -66 0 -58 9 -66 l 435 -66 b 455 -46 446 -66 455 -58 l 455 -20 b 435 0 455 -9 446 0 z"},articStaccatoAbove:{x_min:-.25,x_max:78.25,y_min:-.25,y_max:78,ha:78.25,o:"m 16 16 b 96 16 39 -6 73 -6 b 96 95 118 39 118 73 b 16 95 73 118 39 118 b 16 16 -6 73 -6 39 z"},articStaccatoBelow:{x_min:-.25,x_max:78.25,y_min:-78.25,y_max:0,ha:78.25,o:"m 16 -96 b 96 -96 39 -118 73 -118 b 96 -17 118 -73 118 -39 b 16 -17 73 6 39 6 b 16 -96 -6 -39 -6 -73 z"},articStaccatissimoAbove:{x_min:0,x_max:127,y_min:0,y_max:248,ha:248,o:"m 163 357 b 150 353 154 357 150 353 l 99 300 b 92 295 96 297 95 295 b 85 300 89 295 88 297 l 35 353 b 22 357 35 353 30 357 b 0 338 13 357 0 351 b 73 22 0 323 73 22 b 92 0 75 16 78 0 b 111 22 107 0 109 16 b 183 338 111 22 183 323 b 163 357 183 351 171 357 z"},articStaccatissimoBelow:{x_min:0,x_max:127,y_min:-248,y_max:0,ha:248,o:"m 20 -357 b 33 -353 29 -357 33 -353 l 84 -300 b 91 -295 86 -297 88 -295 b 98 -300 94 -295 95 -297 l 148 -353 b 161 -357 148 -353 153 -357 b 183 -338 170 -357 183 -351 b 109 -22 183 -323 109 -22 b 91 0 108 -16 105 0 b 72 -22 76 0 73 -16 b 0 -338 72 -22 0 -323 b 20 -357 0 -351 12 -357 z"},articMarcatoAbove:{x_min:1,x_max:296,y_min:0,y_max:253,ha:253,o:"m 36 10 l 173 239 l 298 10 b 317 0 301 4 310 0 l 408 0 b 426 20 419 0 426 9 b 425 30 426 23 426 27 l 230 356 b 213 364 226 361 222 363 b 196 356 207 364 199 361 l 1 30 z"},articMarcatoBelow:{x_min:0,x_max:295,y_min:-253,y_max:0,ha:253,o:"m 390 -10 l 253 -239 l 128 -10 b 109 0 125 -4 117 0 l 19 0 b 0 -20 7 0 0 -9 b 1 -30 0 -23 0 -27 l 196 -356 b 213 -364 200 -361 204 -363 b 230 -356 219 -364 228 -361 l 425 -30 z"},fermataAbove:{x_min:0,x_max:622,y_min:0,y_max:368,ha:368,o:"m 778 374 b 448 530 642 521 523 530 b 120 374 373 530 255 521 b 0 65 49 297 0 143 b 20 19 0 37 6 19 b 161 265 60 19 40 143 b 445 373 268 372 410 373 b 448 373 446 373 446 373 b 451 373 449 373 449 373 b 734 265 485 373 628 372 b 876 19 855 143 835 19 b 896 65 890 19 896 36 b 778 374 896 143 848 298 z m 348 99 b 448 0 348 45 393 0 b 547 99 503 0 547 45 b 448 199 547 154 503 199 b 348 99 393 199 348 154 z"},fermataBelow:{x_min:0,x_max:622,y_min:-368,y_max:0,ha:368,o:"m 778 -374 b 896 -65 848 -298 896 -143 b 876 -19 896 -36 890 -19 b 734 -265 835 -19 855 -143 b 451 -373 628 -372 485 -373 b 448 -373 449 -373 449 -373 b 445 -373 446 -373 446 -373 b 161 -265 410 -373 268 -372 b 20 -19 40 -143 60 -19 b 0 -65 6 -19 0 -37 b 120 -374 0 -143 49 -297 b 448 -530 255 -521 373 -530 b 778 -374 523 -530 642 -521 z m 348 -99 b 448 -199 348 -154 393 -199 b 547 -99 503 -199 547 -154 b 448 0 547 -45 503 0 b 348 -99 393 0 348 -45 z"},fermataLongAbove:{x_min:0,x_max:623,y_min:0,y_max:368,ha:368,o:"m 40 0 l 40 399 l 858 399 l 858 0 l 897 0 l 897 510 b 877 530 897 521 888 530 l 20 530 b 0 510 9 530 0 521 l 0 0 z m 350 148 b 449 49 350 94 395 49 b 547 148 504 49 547 94 b 449 248 547 203 504 248 b 350 148 395 248 350 203 z"},fermataLongBelow:{x_min:0,x_max:623,y_min:-368,y_max:0,ha:368,o:"m 0 -510 b 20 -530 0 -521 9 -530 l 877 -530 b 897 -510 888 -530 897 -521 l 897 0 l 858 0 l 858 -399 l 40 -399 l 40 0 l 0 0 z m 350 -148 b 449 -248 350 -203 395 -248 b 547 -148 504 -248 547 -203 b 449 -49 547 -94 504 -49 b 350 -148 395 -49 350 -94 z"},fermataVeryLongAbove:{x_min:0,x_max:842,y_min:0,y_max:549,ha:549,o:"m 276 0 l 276 399 l 936 399 l 936 0 l 976 0 l 976 510 b 956 530 976 521 968 530 l 256 530 b 236 510 245 530 236 521 l 236 0 z m 507 148 b 606 49 507 94 552 49 b 706 148 661 49 706 94 b 606 248 706 203 661 248 b 507 148 552 248 507 203 z m 40 0 l 40 661 l 1172 661 l 1172 0 l 1212 0 l 1212 772 b 1192 791 1212 783 1204 791 l 20 791 b 0 772 9 791 0 783 l 0 0 z"},fermataVeryLongBelow:{x_min:0,x_max:842,y_min:-549,y_max:0,ha:549,o:"m 236 -510 b 256 -530 236 -521 245 -530 l 956 -530 b 976 -510 968 -530 976 -521 l 976 0 l 936 0 l 936 -399 l 276 -399 l 276 0 l 236 0 z m 507 -148 b 606 -248 507 -203 552 -248 b 706 -148 661 -248 706 -203 b 606 -49 706 -94 661 -49 b 507 -148 552 -49 507 -94 z m 0 -772 b 20 -791 0 -783 9 -791 l 1192 -791 b 1212 -772 1204 -791 1212 -783 l 1212 0 l 1172 0 l 1172 -661 l 40 -661 l 40 0 l 0 0 z"},fermataShortAbove:{x_min:0,x_max:642,y_min:0,y_max:454,ha:454,o:"m 363 148 b 462 49 363 94 408 49 b 562 148 517 49 562 94 b 462 248 562 203 517 248 b 363 148 408 248 363 203 z m 477 645 b 461 654 474 649 467 654 b 445 645 455 654 448 649 l 4 32 b 0 20 3 29 0 23 b 20 0 0 9 9 0 l 82 0 b 98 9 88 0 95 4 l 461 514 l 827 9 b 842 0 829 4 837 0 l 904 0 b 924 20 916 0 924 9 b 920 32 924 23 922 29 z"},fermataShortBelow:{x_min:0,x_max:642,y_min:-454,y_max:0,ha:454,o:"m 363 -148 b 462 -248 363 -203 408 -248 b 562 -148 517 -248 562 -203 b 462 -49 562 -94 517 -49 b 363 -148 408 -49 363 -94 z m 920 -32 b 924 -20 922 -29 924 -23 b 904 0 924 -9 916 0 l 842 0 b 827 -9 837 0 829 -4 l 461 -514 l 98 -9 b 82 0 95 -4 88 0 l 20 0 b 0 -20 9 0 0 -9 b 4 -32 0 -23 3 -29 l 445 -645 b 461 -654 448 -649 455 -654 b 477 -645 467 -654 474 -649 z"},breathMarkComma:{x_min:0,x_max:191,y_min:0,y_max:321,ha:321,o:"m 82 0 b 275 285 215 92 275 183 b 115 462 275 396 212 462 b 0 356 46 462 0 413 b 115 246 0 294 53 246 b 181 258 157 246 177 256 b 192 261 184 259 189 261 b 199 259 194 261 196 261 b 203 245 202 258 203 253 b 48 43 203 183 147 112 z"},caesura:{x_min:0,x_max:380,y_min:0,y_max:490,ha:490,o:"m 285 706 b 285 706 285 706 285 706 b 271 696 279 706 274 701 l 1 22 b 0 16 0 20 0 17 b 16 0 0 7 7 0 l 50 0 b 65 10 56 0 62 4 l 334 684 b 336 690 334 685 336 688 b 320 706 336 698 328 706 z m 213 22 b 212 16 213 20 212 17 b 228 0 212 7 219 0 l 262 0 b 276 10 268 0 274 4 l 546 684 b 547 690 547 685 547 688 b 531 706 547 698 540 706 l 497 706 b 482 696 491 706 485 701 z"},caesuraCurved:{x_min:0,x_max:368,y_min:0,y_max:491,ha:491,o:"m 262 707 b 245 693 253 707 246 701 b 1 26 233 603 177 348 b 0 17 0 23 0 20 b 16 0 0 9 6 0 b 30 7 22 0 27 3 b 318 687 259 341 304 602 b 318 690 318 688 318 688 b 301 707 318 698 310 707 z m 474 707 b 458 693 465 707 459 701 b 213 26 446 603 389 348 b 212 19 212 23 212 20 b 229 0 212 9 219 0 b 243 7 235 0 240 3 b 530 687 472 341 516 602 b 530 690 530 688 530 688 b 514 707 530 698 523 707 z"},restMaxima:{x_min:0,x_max:450,y_min:-250,y_max:250,ha:500,o:"m 158 -360 b 180 -338 170 -360 180 -350 l 180 338 b 158 360 180 350 170 360 l 22 360 b 0 338 9 360 0 350 l 0 -338 b 22 -360 0 -350 9 -360 z m 626 -360 b 648 -338 638 -360 648 -350 l 648 338 b 626 360 648 350 638 360 l 490 360 b 468 338 477 360 468 350 l 468 -338 b 490 -360 468 -350 477 -360 z"},restDoubleWhole:{x_min:0,x_max:125,y_min:-11,y_max:262,ha:273,o:"m 158 -16 b 180 6 171 -16 180 -6 l 180 356 b 158 377 180 367 171 377 l 22 377 b 0 356 10 377 0 367 l 0 6 b 22 -16 0 -6 10 -16 z"},restWhole:{x_min:0,x_max:325,y_min:-131,y_max:5,ha:136,o:"m 20 7 b 0 -13 9 7 0 -1 l 0 -168 b 20 -189 0 -180 9 -189 l 448 -189 b 468 -168 459 -189 468 -180 l 468 -13 b 448 7 468 -1 459 7 z"},restWholeLegerLine:{x_min:-139,x_max:464,y_min:-122,y_max:14,ha:136,o:"m 449 20 l 19 20 l -200 20 l -200 -20 l 0 -20 l 0 -156 b 19 -176 0 -167 7 -176 l 449 -176 b 468 -156 461 -176 468 -167 l 468 -20 l 668 -20 l 668 20 z"},restHalf:{x_min:0,x_max:325,y_min:-4,y_max:132,ha:136,o:"m 0 14 b 20 -6 0 -6 0 -6 l 448 -6 b 468 14 468 -6 468 -6 l 468 170 b 448 190 468 190 468 190 l 20 190 b 0 170 0 190 0 190 z"},restHalfLegerLine:{x_min:-139,x_max:464,y_min:-14,y_max:122,ha:136,o:"m 668 20 l 468 20 l 468 156 b 449 176 468 167 461 176 l 19 176 b 0 156 7 176 0 167 l 0 20 l -200 20 l -200 -20 l 19 -20 l 449 -20 l 668 -20 z"},restQuarter:{x_min:0,x_max:235,y_min:-331,y_max:401,ha:732,o:"m 331 -239 b 323 -229 330 -238 327 -235 l 157 -24 b 154 -16 156 -23 154 -19 b 157 -3 154 -12 156 -6 l 304 219 b 307 229 305 222 307 226 l 307 242 b 302 253 307 246 305 251 l 69 569 b 55 577 69 569 63 577 b 43 573 50 577 48 576 b 36 559 37 569 36 563 b 40 543 36 550 40 543 l 150 393 b 154 376 153 389 154 383 b 150 359 154 370 153 363 l 4 137 b 1 125 3 134 1 128 l 1 112 b 6 101 1 108 3 104 l 167 -99 b 131 -95 161 -98 148 -95 b 49 -124 107 -95 75 -101 b 0 -229 17 -153 0 -193 b 16 -285 0 -249 4 -269 b 154 -468 46 -331 154 -468 b 171 -477 154 -468 161 -477 b 180 -474 174 -477 177 -477 b 190 -456 187 -468 190 -462 b 186 -444 190 -451 187 -446 b 135 -353 181 -436 135 -353 b 125 -307 135 -353 125 -333 b 150 -246 125 -288 131 -265 b 206 -223 167 -229 187 -223 b 252 -236 225 -223 240 -229 l 308 -272 b 320 -275 308 -272 314 -275 b 334 -268 325 -275 330 -274 b 338 -255 337 -262 338 -259 b 334 -243 338 -251 337 -248 z"},rest8th:{x_min:0,x_max:276,y_min:-255,y_max:204,ha:459,o:"m 384 292 b 379 294 383 292 380 294 b 360 282 370 294 363 289 b 245 141 354 274 310 189 b 180 112 226 127 203 117 b 206 181 196 131 206 154 b 104 284 206 238 160 284 b 0 181 46 284 0 238 b 65 85 0 137 27 101 b 144 68 86 75 115 68 b 269 109 186 68 230 81 b 320 157 287 122 304 140 l 156 -356 l 194 -367 l 396 268 b 397 275 397 269 397 272 b 384 292 397 282 393 288 z"},rest16th:{x_min:1,x_max:344,y_min:-507,y_max:204,ha:711,o:"m 494 268 b 495 275 495 271 495 272 b 482 292 495 282 491 289 b 475 294 480 294 477 294 b 456 282 467 294 461 289 b 285 115 422 213 364 135 b 310 184 302 135 310 158 b 203 284 310 240 259 284 b 104 177 145 281 104 233 b 171 84 105 134 134 98 b 252 69 197 72 225 69 b 423 164 324 72 380 108 l 423 164 l 359 -65 b 183 -245 338 -132 256 -226 b 207 -176 199 -225 207 -200 b 102 -76 207 -118 158 -76 b 1 -183 45 -76 1 -125 b 69 -275 1 -226 32 -262 b 150 -289 96 -287 121 -289 b 321 -194 222 -287 278 -251 l 174 -720 l 213 -730 z"},rest32nd:{x_min:0,x_max:391,y_min:-507,y_max:460,ha:967,o:"m 217 71 b 408 171 348 71 402 161 l 354 -46 b 184 -240 323 -121 268 -217 b 204 -171 200 -220 204 -197 b 102 -76 204 -114 158 -76 b 0 -177 46 -76 0 -120 b 140 -288 0 -252 63 -288 b 320 -186 216 -288 276 -246 l 189 -721 l 228 -730 l 562 638 b 563 644 563 639 563 642 b 549 661 563 652 557 658 b 543 662 547 662 544 662 b 524 649 534 662 528 657 b 361 487 497 589 431 504 b 383 556 379 508 383 530 b 282 652 383 611 338 652 b 179 549 226 652 179 609 b 249 451 179 505 210 464 b 311 439 268 444 288 441 b 330 441 317 439 323 439 b 498 541 400 445 458 485 l 442 310 b 271 117 413 238 351 137 b 292 186 288 138 292 160 b 189 282 292 243 245 282 b 88 180 132 282 88 238 b 217 71 88 112 153 71 z"},rest64th:{x_min:0,x_max:423,y_min:-758,y_max:464,ha:1222,o:"m 207 -1083 l 246 -1092 b 608 644 282 -919 605 634 b 609 649 608 647 609 648 b 595 667 609 658 603 665 b 589 668 593 668 592 668 b 569 654 577 668 575 664 b 474 521 563 644 530 573 b 412 487 456 505 435 494 b 432 546 425 503 432 526 b 328 649 432 606 382 649 b 226 546 275 649 226 608 b 360 438 226 465 300 438 b 501 492 419 438 474 465 b 546 546 527 518 533 526 l 547 547 l 500 323 b 399 161 491 300 452 209 b 337 125 382 144 360 132 b 357 184 350 143 357 134 b 253 288 357 235 317 288 b 151 187 190 288 151 236 b 285 76 151 138 183 76 b 471 184 412 76 465 173 l 423 -45 b 324 -204 413 -69 374 -158 b 262 -240 305 -222 284 -233 b 281 -180 274 -223 281 -212 b 177 -78 281 -147 258 -78 b 75 -180 98 -78 75 -153 b 209 -289 75 -207 88 -289 b 395 -181 330 -289 389 -193 l 350 -397 b 248 -564 337 -449 285 -530 b 186 -599 229 -580 207 -592 b 204 -540 197 -583 204 -563 b 102 -438 204 -501 174 -438 b 0 -540 29 -438 0 -501 b 132 -648 0 -579 24 -648 b 320 -540 266 -648 315 -552 z"},rest128th:{x_min:-1,x_max:475,y_min:-759,y_max:717,ha:1476,o:"m 677 1028 b 664 1032 672 1031 667 1032 b 644 1018 654 1032 649 1028 b 549 886 638 1008 605 937 b 487 851 531 870 510 858 b 507 910 500 868 507 890 b 403 1014 507 971 456 1014 b 301 910 350 1014 301 972 b 435 802 301 829 374 802 b 576 857 494 802 549 829 b 621 910 602 883 608 890 l 622 912 l 575 687 b 474 526 566 664 527 573 b 412 490 456 508 435 497 b 432 549 425 507 432 498 b 328 652 432 599 392 652 b 226 552 265 652 226 600 b 360 441 226 503 258 441 b 546 549 487 441 540 537 l 498 320 b 399 160 488 295 449 207 b 337 125 380 143 359 131 b 356 184 348 141 356 153 b 252 287 356 217 333 287 b 150 184 173 287 150 212 b 284 76 150 157 163 76 b 469 183 405 76 464 171 l 425 -33 b 323 -200 412 -85 360 -166 b 261 -235 304 -216 282 -228 b 279 -176 272 -219 279 -199 b 177 -72 279 -137 249 -72 b 75 -176 104 -72 75 -137 b 207 -284 75 -215 99 -284 b 395 -176 341 -284 390 -187 l 347 -409 b 248 -566 330 -461 282 -533 b 186 -600 229 -582 207 -593 b 204 -541 197 -583 204 -564 b 102 -438 204 -501 174 -438 b -1 -541 29 -438 -1 -503 b 132 -649 -1 -580 24 -649 b 318 -546 256 -649 307 -567 l 206 -1084 l 245 -1093 b 683 1008 281 -920 680 996 b 684 1015 683 1009 684 1014 b 677 1028 684 1020 683 1024 z"},dynamicPiano:{x_min:-95,x_max:317,y_min:-163,y_max:263,ha:426,o:"m 186 -235 l 186 -206 l 78 -206 l 161 26 l 166 16 b 229 -29 166 16 180 -16 b 256 -32 238 -32 248 -32 b 445 166 336 -32 415 49 b 456 246 454 197 456 223 b 374 373 456 343 396 367 b 356 376 369 374 361 376 b 242 314 311 376 266 338 l 238 310 l 235 315 b 154 377 235 315 204 370 b 138 379 148 377 144 379 b 0 226 91 379 42 346 l 26 213 b 63 301 32 232 46 278 b 102 328 72 314 89 325 b 108 328 104 328 107 328 b 120 325 112 328 117 327 b 127 304 125 321 127 314 b 94 192 127 269 101 206 l -49 -206 l -137 -206 l -137 -235 z m 226 17 b 215 19 223 17 217 17 b 187 81 193 27 187 53 b 204 180 187 125 203 177 b 297 317 217 235 259 295 b 324 325 307 323 315 325 b 336 324 328 325 333 325 b 350 311 341 323 347 317 b 356 278 354 302 356 291 b 333 161 356 239 341 187 b 242 20 314 105 278 37 b 226 17 238 17 230 17 z"},dynamicMezzo:{x_min:-7,x_max:374,y_min:-2,y_max:251,ha:253,o:"m 488 63 b 467 48 481 50 474 48 b 459 49 464 48 462 48 b 449 65 452 52 449 58 b 461 112 449 76 455 94 b 474 157 464 121 471 150 b 492 281 482 183 492 242 b 491 301 492 288 492 295 b 436 359 484 340 467 359 b 340 307 399 359 359 331 l 337 301 l 334 308 b 272 359 334 308 311 359 b 177 310 232 359 202 343 l 173 304 l 171 311 b 117 360 171 311 153 353 b 96 361 109 361 102 361 b 29 328 60 361 39 340 b -10 252 20 318 0 284 l 12 240 b 68 318 12 240 36 318 b 75 317 71 318 72 318 b 86 295 84 314 86 307 b 59 194 86 275 75 240 b 1 20 59 193 6 33 b 0 13 1 17 0 16 b 3 4 0 10 1 7 b 14 -1 6 1 9 -1 l 36 -1 b 91 -1 58 -1 86 -1 b 107 22 94 -1 101 -1 b 127 99 114 53 121 79 b 235 310 132 121 186 310 b 243 305 238 310 242 308 b 248 289 246 302 248 297 b 216 160 248 265 233 219 b 173 22 194 89 173 22 b 173 16 173 20 173 19 b 176 3 173 12 173 6 b 187 -1 179 0 183 -1 l 266 -1 b 282 16 272 -1 279 0 b 284 26 282 17 284 22 b 392 302 312 228 359 288 b 396 304 393 302 395 304 l 397 304 b 400 302 399 304 399 302 b 408 289 403 301 408 297 b 369 140 408 275 399 217 b 356 75 360 117 356 95 b 370 23 356 55 360 37 b 428 -3 382 6 408 -3 b 536 99 492 -3 517 49 b 539 108 537 102 537 105 l 514 120 b 488 63 514 120 498 81 z"},dynamicForte:{x_min:-137,x_max:334,y_min:-193,y_max:421,ha:614,o:"m -122 -86 b -197 -161 -161 -86 -197 -122 b -81 -278 -197 -236 -147 -278 b 35 -228 -35 -278 -1 -264 b 202 173 98 -164 167 50 b 238 297 215 219 228 264 l 238 300 l 341 300 b 356 314 350 300 356 305 l 356 346 b 341 360 356 354 350 360 l 256 360 l 256 364 b 330 554 297 511 308 537 b 359 566 341 563 351 566 b 366 564 361 566 364 564 b 380 553 373 563 377 559 b 382 546 382 550 382 549 b 373 528 382 539 379 531 b 351 478 359 517 351 498 b 354 458 351 471 353 465 b 384 426 359 445 370 432 b 410 420 390 423 400 420 b 445 431 420 420 432 423 b 478 472 459 438 474 456 b 481 497 481 480 481 488 b 467 550 481 514 477 533 b 376 605 455 572 422 598 b 351 606 369 606 360 606 b 225 553 317 606 272 595 b 122 363 187 520 154 456 l 122 360 l 13 360 b -1 346 4 360 -1 354 l -1 314 b 13 300 -1 305 4 300 l 102 300 l 102 294 b 66 140 88 236 76 187 b 24 -35 55 86 42 32 l 20 -52 b -53 -235 -10 -170 -19 -212 b -78 -242 -60 -239 -69 -242 b -98 -235 -85 -242 -92 -239 b -105 -222 -102 -232 -105 -228 b -105 -219 -105 -220 -105 -220 b -94 -204 -104 -213 -101 -207 b -58 -144 -66 -193 -58 -167 b -122 -86 -58 -124 -71 -86 z"},dynamicRinforzando:{x_min:-12,x_max:230,y_min:0,y_max:254,ha:254,o:"m 272 364 b 200 341 239 364 212 348 b 168 310 187 333 177 321 l 164 304 b 109 363 164 304 151 353 b 88 366 102 364 95 366 b 22 331 52 366 32 343 b -17 255 13 321 -7 287 l 4 243 b 60 321 4 243 29 321 b 68 320 63 321 65 321 b 78 297 75 317 78 308 b 49 180 78 272 65 230 l 0 23 b 0 17 0 22 0 20 b 3 4 0 13 0 7 b 14 0 6 1 10 0 l 94 0 b 109 17 99 0 107 1 b 111 27 109 19 111 23 b 209 302 140 230 186 279 b 225 311 215 308 220 311 b 229 310 226 311 228 311 b 233 304 233 307 233 305 b 233 301 233 302 233 301 b 216 268 220 291 216 279 b 225 243 216 259 219 249 b 262 229 235 232 249 229 b 304 242 279 229 295 235 b 331 308 320 255 331 275 b 272 364 331 341 304 364 z"},dynamicSforzando:{x_min:0,x_max:208,y_min:-5,y_max:263,ha:268,o:"m 242 328 b 217 289 222 317 217 300 b 258 249 217 274 230 249 b 298 284 285 249 295 269 b 300 295 300 287 300 291 b 189 379 300 328 272 379 b 49 259 92 379 49 315 b 99 173 49 229 59 196 b 164 137 117 163 140 151 b 194 88 189 122 194 102 b 124 24 194 73 177 24 b 72 46 82 24 72 39 b 73 49 72 48 72 49 b 96 96 78 52 96 62 b 50 150 96 134 72 150 b 0 91 29 150 0 134 b 124 -7 0 26 49 -7 b 282 111 199 -7 282 24 b 171 239 282 197 207 219 b 128 292 135 259 128 268 b 193 347 128 317 156 347 b 242 328 230 347 242 328 z"},dynamicZ:{x_min:-42,x_max:239,y_min:-1,y_max:258,ha:259,o:"m 229 292 b 235 288 232 292 233 291 b 236 284 236 285 236 285 b 233 278 236 281 235 279 b -42 55 232 276 -4 85 b -60 24 -56 43 -60 33 b -50 4 -60 12 -50 4 b -35 0 -45 1 -40 0 b 9 29 -14 0 1 19 b 50 69 17 43 26 69 b 89 35 75 69 81 50 b 170 -1 104 10 137 -1 b 243 22 197 -1 223 6 b 304 147 288 56 304 118 b 264 196 304 176 294 196 b 226 156 239 196 226 174 b 251 117 226 128 249 122 b 251 108 251 114 251 111 b 243 79 251 98 249 88 b 212 56 236 68 223 56 b 202 59 209 56 204 56 b 163 92 194 63 186 75 b 108 122 140 109 114 120 b 105 125 105 124 105 124 b 107 128 105 127 107 128 b 312 304 107 128 302 294 b 341 340 324 315 336 327 b 344 347 343 341 344 346 l 344 356 b 333 369 343 367 336 369 l 331 369 l 262 363 b 217 361 245 361 230 361 b 156 366 193 361 174 363 b 114 372 147 367 125 372 b 107 370 111 372 108 370 b 86 344 98 367 89 360 b 37 222 72 265 42 232 b 37 219 37 220 37 220 b 50 207 37 213 43 207 l 66 207 b 81 225 75 207 76 215 b 108 291 85 235 105 285 b 118 297 111 297 112 297 b 167 289 125 295 144 291 b 181 289 171 289 177 289 b 229 292 202 289 222 291 z"},ornamentTrill:{x_min:-12,x_max:383,y_min:0,y_max:383,ha:383,o:"m 464 396 b 376 359 408 396 376 359 l 364 370 b 346 377 357 377 346 377 l 197 377 l 246 528 b 246 531 246 530 246 531 b 226 552 246 541 236 552 l 213 552 b 199 544 209 552 202 547 b 124 482 196 541 130 487 b 117 471 118 478 117 471 b 84 377 117 471 102 431 l 3 377 b -17 360 -14 377 -17 360 l -17 341 b 3 324 -17 325 3 324 l 66 324 b 0 85 35 229 0 117 b 92 0 0 16 48 0 b 186 35 137 0 186 35 b 194 13 186 35 190 24 b 212 0 199 1 212 0 l 276 0 b 298 16 295 0 298 16 l 298 43 b 321 147 298 75 321 147 l 382 284 b 412 325 382 284 396 311 b 446 341 425 336 438 341 b 452 340 448 341 451 341 b 428 288 432 327 428 305 b 485 233 428 271 446 233 b 552 308 534 233 552 264 b 464 396 552 353 520 396 z m 222 143 b 147 78 210 104 171 78 b 137 79 143 78 140 78 b 121 115 125 85 121 99 b 137 190 121 148 137 190 l 180 324 l 275 324 b 279 320 279 324 279 320 b 222 143 279 320 235 187 z"},ornamentTurn:{x_min:0,x_max:456,y_min:0,y_max:232,ha:232,o:"m 527 334 b 442 269 488 334 442 312 b 501 204 442 228 468 204 b 570 226 533 204 540 226 b 613 164 598 226 613 204 l 613 163 b 550 98 613 127 586 98 b 448 143 508 98 485 109 l 328 255 l 298 284 b 174 334 262 317 223 334 b 0 170 92 334 0 278 b 131 0 0 68 58 0 b 215 65 170 0 215 22 b 156 130 215 107 189 130 b 86 108 124 130 117 108 b 43 170 59 108 43 130 l 43 171 b 108 236 43 207 72 236 b 209 192 150 236 171 225 l 328 79 l 360 50 b 482 0 396 17 433 0 b 657 164 564 0 657 56 b 527 334 657 266 600 334 z"},ornamentTurnSlash:{x_min:0,x_max:456,y_min:-80,y_max:313,ha:393,o:"m 527 334 b 442 269 488 334 442 312 b 501 204 442 228 468 204 b 570 226 533 204 540 226 b 613 164 598 226 613 204 l 613 163 b 550 98 613 127 586 98 b 448 143 508 98 485 109 l 354 230 l 354 431 b 336 451 354 442 347 451 l 323 451 b 302 431 311 451 302 442 l 302 279 l 298 284 b 174 334 262 317 223 334 b 0 170 92 334 0 278 b 131 0 0 68 58 0 b 215 65 170 0 215 22 b 156 130 215 107 189 130 b 86 108 124 130 117 108 b 43 170 59 108 43 130 l 43 171 b 108 236 43 207 72 236 b 209 192 150 236 171 225 l 302 104 l 302 -96 b 323 -115 302 -108 311 -115 l 336 -115 b 354 -96 347 -115 354 -108 l 354 55 l 360 50 b 482 0 396 17 433 0 b 657 164 564 0 657 56 b 527 334 657 266 600 334 z"},ornamentMordent:{x_min:0,x_max:473,y_min:-77,y_max:316,ha:393,o:"m 647 302 l 562 166 l 446 347 b 429 357 444 353 435 357 b 413 347 423 357 416 353 l 363 262 l 363 435 b 343 455 363 446 354 455 l 331 455 b 311 435 320 455 311 446 l 311 173 l 310 171 l 203 347 b 186 357 200 353 192 357 b 168 347 180 357 171 353 l 0 69 l 35 48 l 120 189 l 226 10 b 243 0 229 4 238 0 b 261 10 249 0 258 4 l 311 95 l 311 -91 b 331 -111 311 -102 320 -111 l 343 -111 b 363 -91 354 -111 363 -102 l 363 184 l 366 189 l 478 10 b 495 0 481 4 490 0 b 513 10 501 0 510 4 l 681 281 z"},ornamentShortTrill:{x_min:0,x_max:473,y_min:0,y_max:248,ha:248,o:"m 647 302 l 562 166 l 446 347 b 431 357 444 353 436 357 b 413 347 425 357 416 353 l 310 171 l 203 347 b 186 357 200 353 192 357 b 168 347 180 357 173 353 l 0 69 l 35 48 l 120 189 l 226 10 b 243 0 229 4 238 0 b 261 10 249 0 258 4 l 366 189 l 478 9 b 495 0 481 3 490 0 b 513 10 501 0 510 4 l 681 281 z"},ornamentTremblement:{x_min:0,x_max:654,y_min:0,y_max:248,ha:248,o:"m 907 302 l 822 166 l 708 348 b 691 357 704 354 701 357 b 674 347 685 357 677 353 l 648 302 l 563 166 l 449 348 b 432 357 446 354 438 357 b 415 347 426 357 418 353 l 415 346 l 311 171 l 203 348 b 186 357 200 354 192 357 b 168 348 177 357 171 354 l 168 347 l 0 69 l 35 48 l 120 190 l 226 10 b 243 0 229 4 238 0 l 245 0 b 261 10 251 0 258 4 l 367 189 l 480 10 b 497 0 482 4 491 0 b 513 10 503 0 510 4 l 625 192 l 739 10 b 756 0 742 4 750 0 b 772 10 762 0 769 4 l 942 282 z"},ornamentPrecompAppoggTrill:{x_min:0,x_max:680,y_min:0,y_max:388,ha:388,o:"m 860 170 l 746 353 b 729 361 743 359 737 361 b 713 351 723 361 716 357 l 685 307 l 600 170 l 487 353 b 481 359 485 356 484 357 b 469 361 478 360 472 361 b 452 351 464 361 455 357 l 348 176 l 240 353 b 223 361 238 359 229 361 b 206 353 215 361 209 359 l 40 76 l 40 541 b 20 559 39 552 30 559 b 0 541 10 559 1 552 l 0 26 b 19 1 0 16 9 4 b 26 0 20 1 24 0 b 48 13 35 0 43 6 l 72 52 l 157 194 l 265 14 b 282 4 268 9 276 4 b 298 14 288 4 295 9 l 405 193 l 517 14 b 534 4 520 9 528 4 b 550 14 540 4 547 9 l 664 196 l 776 14 b 793 4 779 9 788 4 b 811 14 799 4 808 9 l 979 287 l 945 307 z"},ornamentPrecompSlideTrillDAnglebert:{x_min:0,x_max:662,y_min:-158,y_max:248,ha:406,o:"m 834 166 l 720 348 b 704 357 717 354 713 357 b 687 348 697 357 690 353 l 661 302 l 660 302 l 575 166 l 461 348 b 455 354 459 350 456 353 b 444 357 452 356 448 357 b 428 347 438 357 431 353 l 323 171 l 215 347 b 213 350 215 348 215 350 b 213 350 213 350 213 350 l 213 351 l 212 351 l 212 353 l 210 353 l 210 353 l 209 354 b 207 354 209 354 207 354 b 197 357 206 356 200 357 b 197 357 197 357 197 357 b 194 357 196 357 196 357 b 180 347 187 357 183 353 l 180 346 l 69 164 b 0 -50 23 88 0 17 b 49 -219 0 -108 16 -163 b 66 -228 52 -223 59 -228 b 76 -225 69 -228 73 -226 b 86 -207 82 -222 86 -215 b 84 -197 86 -204 85 -200 b 40 -52 55 -150 40 -102 b 104 143 40 10 62 73 l 131 190 l 239 10 b 256 0 242 4 249 0 l 256 0 b 272 10 262 0 269 4 l 379 189 l 491 10 b 508 0 494 4 503 0 b 508 0 508 0 508 0 l 508 0 b 526 10 514 0 521 4 l 638 192 l 750 10 b 768 0 755 4 762 0 l 768 0 b 785 10 773 0 782 4 l 785 10 l 953 282 l 919 302 z"},ornamentPrecompSlideTrillBach:{x_min:0,x_max:662,y_min:-158,y_max:321,ha:479,o:"m 834 166 l 720 348 b 704 357 716 354 713 357 b 687 348 698 357 690 354 l 660 304 l 660 302 l 632 259 l 632 442 b 612 462 632 454 624 462 l 599 462 b 579 442 588 462 579 454 l 579 173 l 575 166 l 461 348 b 455 356 459 351 458 354 b 445 359 452 357 448 359 b 428 348 439 359 431 354 l 323 171 l 215 347 b 213 350 215 348 213 350 l 213 351 l 212 353 l 210 353 l 210 354 l 207 354 b 197 357 204 356 200 357 b 180 348 189 357 183 354 l 179 346 l 69 164 b 0 -49 23 88 0 19 b 49 -217 0 -107 17 -163 b 66 -228 52 -223 60 -228 b 76 -225 69 -228 73 -226 b 86 -207 82 -222 86 -213 b 84 -197 86 -204 85 -200 b 42 -50 56 -148 42 -101 b 104 144 42 12 62 75 l 131 190 l 239 10 b 256 0 242 4 251 0 b 274 10 262 0 271 4 l 379 190 l 491 10 b 508 0 494 4 503 0 b 526 10 514 0 523 4 l 579 98 l 579 -84 b 599 -104 579 -95 588 -104 l 612 -104 b 632 -84 624 -104 632 -95 l 632 183 l 638 192 l 750 10 b 768 0 753 4 762 0 b 785 10 773 0 782 4 l 953 282 l 919 302 z"},ornamentPrecompTrillSuffixDandrieu:{x_min:0,x_max:662,y_min:0,y_max:406,ha:406,o:"m 904 575 b 887 585 901 580 893 585 b 877 582 884 585 880 583 b 867 564 871 579 867 570 b 870 554 867 562 868 557 b 912 408 897 505 912 458 b 850 213 912 346 891 282 l 822 167 l 714 348 b 697 357 711 354 703 357 b 680 348 691 357 683 354 l 575 168 l 462 348 b 445 357 459 354 451 357 b 428 348 439 357 431 354 l 315 167 l 203 348 b 186 357 200 354 192 357 b 168 348 180 357 171 354 l 0 76 l 35 55 l 120 192 l 233 10 b 249 0 238 4 240 0 b 266 10 255 0 264 4 l 294 55 l 379 192 l 492 9 b 498 3 494 6 495 4 b 508 0 501 1 505 0 b 526 10 514 0 523 4 l 631 186 l 737 13 b 746 3 739 10 743 4 b 756 0 749 1 753 0 b 773 9 762 0 770 3 l 884 193 b 953 406 930 269 953 338 b 904 575 953 464 936 520 z"},ornamentPrecompDoubleCadenceUpperPrefix:{x_min:0,x_max:857,y_min:0,y_max:248,ha:248,o:"m 383 140 b 413 189 399 166 412 187 b 520 10 423 171 516 16 b 537 0 523 4 530 0 b 554 10 543 0 550 4 b 660 189 557 16 649 171 b 772 10 671 173 766 19 b 791 0 778 1 785 0 b 806 10 796 0 802 4 b 919 192 809 16 907 174 l 1031 10 b 1048 0 1035 4 1043 0 l 1048 0 b 1066 10 1054 1 1063 4 l 1066 10 l 1234 282 l 1200 302 l 1115 166 l 1002 348 b 985 357 998 354 994 357 b 968 348 978 357 971 353 l 855 166 b 742 348 845 183 746 341 b 726 357 737 354 732 357 b 708 348 719 357 711 354 b 603 171 704 341 613 189 b 495 348 593 189 498 343 b 478 357 492 353 487 357 b 461 348 469 357 464 353 b 357 173 459 346 393 235 b 213 79 320 111 284 79 b 66 176 143 79 95 112 b 40 279 43 228 40 275 b 20 300 40 291 30 300 b 0 278 9 300 0 289 b 29 161 0 276 3 219 b 213 39 65 81 130 39 b 383 140 297 39 346 73 z"},ornamentPrecompTrillLowerSuffix:{x_min:0,x_max:565,y_min:-171,y_max:249,ha:420,o:"m 347 168 l 235 348 b 217 359 230 354 226 359 b 200 348 209 359 203 353 b 3 30 197 344 6 35 b 0 20 0 26 0 24 b 22 0 0 9 10 0 b 37 9 27 0 35 3 l 151 192 b 265 10 161 174 262 13 b 281 0 268 6 272 0 b 298 10 289 0 295 3 l 403 186 l 511 10 b 528 0 516 4 521 0 b 546 10 537 0 541 4 l 698 265 b 775 22 744 202 775 112 b 700 -215 775 -60 752 -144 b 696 -226 697 -219 696 -222 b 704 -243 696 -232 700 -239 b 717 -246 708 -246 713 -246 b 733 -239 723 -246 729 -243 b 814 20 789 -160 814 -69 b 711 312 814 132 773 242 b 696 320 707 317 700 320 b 680 310 691 320 684 318 b 595 168 671 297 602 181 l 488 348 b 471 359 484 354 478 359 b 454 348 464 359 456 353 b 347 168 449 343 357 186 z"},brassMuteClosed:{x_min:0,x_max:312,y_min:0,y_max:312,ha:312,o:"m 22 256 b 0 225 7 256 0 240 b 22 193 0 209 7 193 l 193 193 l 193 22 b 225 0 193 7 209 0 b 256 22 240 0 256 7 l 256 193 l 428 193 b 449 225 442 193 449 209 b 428 256 449 240 442 256 l 256 256 l 256 428 b 225 449 256 442 240 449 b 193 428 209 449 193 442 l 193 256 z"},brassMuteOpen:{x_min:0,x_max:280,y_min:0,y_max:280,ha:280,o:"m 202 403 b 0 202 91 403 0 312 b 202 0 0 91 91 0 b 403 202 312 0 403 91 b 202 403 403 312 312 403 z m 202 40 b 40 202 112 40 40 112 b 202 363 40 291 112 363 b 363 202 291 363 363 291 b 202 40 363 112 291 40 z"},stringsDownBow:{x_min:0,x_max:315,y_min:0,y_max:293,ha:293,o:"m 40 0 l 40 291 l 413 291 l 413 0 l 454 0 l 454 402 b 433 422 454 413 445 422 l 20 422 b 0 402 9 422 0 402 l 0 0 z"},stringsUpBow:{x_min:0,x_max:262,y_min:0,y_max:343,ha:343,o:"m 374 485 b 357 494 372 490 363 494 l 337 494 b 318 481 330 494 321 488 l 189 118 l 59 481 b 40 494 56 488 48 494 l 20 494 b 0 474 9 494 0 485 b 1 467 0 472 1 468 l 170 13 b 189 0 173 6 181 0 b 207 13 196 0 204 6 l 376 467 b 377 474 376 468 377 472 b 374 485 377 477 376 482 z"},stringsHarmonic:{x_min:0,x_max:181,y_min:0,y_max:181,ha:181,o:"m 131 220 b 220 131 181 220 220 181 b 131 40 220 81 181 40 b 40 131 81 40 40 81 b 131 220 40 181 81 220 z m 131 261 b 0 131 59 261 0 203 b 131 0 0 59 59 0 b 261 131 203 0 261 59 b 131 261 261 203 203 261 z"},pluckedSnapPizzicatoAbove:{x_min:0,x_max:269,y_min:0,y_max:389,ha:389,o:"m 213 540 b 194 560 213 552 204 560 b 174 540 183 560 174 552 l 174 386 b 0 193 76 376 0 294 b 194 0 0 86 86 0 b 387 193 301 0 387 86 b 213 386 387 294 311 376 z m 194 40 b 40 193 109 40 40 109 b 174 346 40 271 98 336 l 174 193 b 194 173 174 183 183 173 b 213 193 204 173 213 183 l 213 346 b 347 193 289 336 347 271 b 194 40 347 109 278 40 z"},pluckedSnapPizzicatoBelow:{x_min:0,x_max:269,y_min:0,y_max:389,ha:389,o:"m 213 174 b 387 367 311 184 387 266 b 193 560 387 474 301 560 b 0 367 86 560 0 474 b 174 174 0 266 76 184 l 174 20 b 194 0 174 9 183 0 b 213 20 204 0 213 9 z m 194 520 b 347 367 278 520 347 452 b 213 215 347 289 289 225 l 213 367 b 194 387 213 377 204 387 b 174 367 183 387 174 377 l 174 215 b 40 367 98 225 40 289 b 194 520 40 452 109 520 z"},keyboardPedalPed:{x_min:0,x_max:981,y_min:-10,y_max:545,ha:555,o:"m 1354 12 b 1413 78 1385 12 1413 42 b 1354 145 1413 115 1385 145 b 1293 78 1320 145 1293 115 b 1354 12 1293 42 1320 12 z m 1092 88 b 1080 86 1089 86 1084 86 b 1004 203 1037 86 1004 137 b 1107 376 1004 360 1097 374 b 1149 209 1129 336 1149 287 b 1092 88 1149 117 1130 95 z m 752 393 b 795 344 779 393 795 372 b 770 285 795 325 788 304 b 693 203 737 249 697 207 b 688 264 690 225 688 245 b 752 393 688 347 714 393 z m 245 507 b 220 544 245 533 235 544 b 217 544 219 544 219 544 b 186 510 206 546 192 537 b 143 464 179 478 163 464 b 134 465 140 464 137 464 b 102 516 117 467 102 487 b 141 613 102 541 112 576 b 347 721 212 711 315 721 b 356 721 351 721 354 721 b 275 560 344 701 297 616 b 259 495 274 557 259 528 b 272 452 259 480 264 465 b 373 323 297 416 350 354 b 387 284 382 311 387 298 b 350 222 387 265 376 245 b 230 140 301 180 252 154 b 128 39 215 130 128 92 b 134 12 128 30 130 22 b 173 -14 144 -7 157 -14 b 264 40 204 -14 243 17 b 333 98 281 58 302 98 b 389 39 357 98 373 60 b 478 -10 416 1 435 -10 b 622 96 527 -10 559 43 b 740 -10 626 86 667 -10 b 929 95 827 -10 917 85 b 1086 -12 950 37 1018 -12 b 1120 -7 1097 -12 1109 -10 b 1264 213 1212 17 1264 111 b 1263 248 1264 225 1263 236 b 815 664 1228 544 907 647 b 785 668 805 665 795 668 b 779 668 783 668 782 668 b 757 654 769 668 760 665 b 757 649 757 652 757 651 b 786 618 759 629 783 619 b 818 606 796 613 808 611 b 1071 435 1007 534 1066 445 b 909 181 930 386 909 256 b 910 141 909 164 909 151 b 786 78 899 127 844 78 b 708 151 726 78 710 144 b 799 230 711 154 742 181 b 864 350 845 271 864 312 b 757 456 864 410 815 456 b 599 222 644 456 599 328 b 609 141 599 192 602 164 b 563 104 608 140 595 122 b 540 98 556 99 549 98 b 459 140 513 98 480 118 b 397 184 413 189 399 184 b 475 279 403 189 454 226 b 482 311 480 289 482 300 b 449 410 482 359 452 405 b 361 533 442 419 383 503 b 354 560 356 541 354 550 b 386 651 353 588 372 622 b 429 713 405 693 426 710 b 557 592 521 688 557 628 b 549 569 557 582 554 573 b 523 559 540 562 531 559 b 459 592 495 559 469 583 b 425 613 451 600 438 613 b 409 608 419 613 415 612 b 399 586 402 602 399 595 b 399 583 397 585 399 585 b 409 552 399 573 405 562 b 541 458 441 487 492 458 b 608 480 564 458 588 465 b 648 572 632 497 648 531 b 429 778 648 649 589 749 b 351 785 402 782 376 785 b 0 507 130 785 0 615 b 127 366 0 399 68 366 b 245 507 186 366 245 429 z"},keyboardPedalUp:{x_min:0,x_max:473,y_min:0,y_max:473,ha:473,o:"m 99 99 b 164 69 120 79 143 69 b 199 82 177 69 190 73 b 210 114 206 89 210 102 b 206 137 210 122 209 130 b 200 160 203 145 200 154 b 210 179 200 166 203 171 l 245 215 b 285 213 255 225 272 219 l 287 213 l 288 212 b 318 183 301 206 318 196 l 318 134 b 291 102 318 112 308 112 b 258 58 274 92 258 76 b 340 0 258 26 294 0 b 423 58 386 0 423 26 b 390 102 423 76 408 92 b 361 134 373 112 361 112 l 361 183 b 392 212 361 196 379 206 b 395 213 393 212 393 213 b 436 215 408 219 426 225 l 471 179 b 480 161 478 171 480 167 b 474 137 480 154 477 147 b 471 115 472 130 471 122 b 482 82 471 102 474 91 b 517 69 491 73 504 69 b 582 99 539 69 562 79 b 612 164 602 120 612 143 b 599 199 612 177 608 190 b 567 210 592 206 579 210 b 544 206 559 210 552 209 b 521 200 536 203 528 200 b 501 210 514 200 508 203 l 467 245 b 468 285 456 255 462 272 l 468 287 b 469 288 468 287 469 287 b 498 318 475 301 485 318 l 547 318 b 579 291 569 318 569 308 b 624 258 589 274 605 258 b 681 340 655 258 681 294 b 624 423 681 386 655 423 b 579 390 605 423 589 408 b 547 361 569 373 569 361 l 498 361 b 469 392 485 361 475 379 b 468 395 469 393 468 393 b 467 436 462 408 456 426 l 501 471 b 520 480 508 478 514 480 b 544 474 527 480 534 477 b 566 471 552 472 559 471 b 599 482 579 471 590 474 b 612 516 608 491 612 503 b 582 580 612 536 602 560 b 516 612 562 600 537 612 b 482 599 503 612 491 608 b 471 566 474 590 471 579 b 474 544 471 559 472 552 b 480 520 477 534 480 527 b 471 501 480 514 478 508 l 436 467 b 395 468 426 456 408 462 b 392 469 393 468 393 469 b 361 498 379 475 361 485 l 361 547 b 390 579 361 569 373 569 b 423 624 408 589 423 605 b 340 681 423 655 386 681 b 258 624 294 681 258 655 b 291 579 258 605 274 589 b 318 547 308 569 318 569 l 318 498 b 288 469 318 485 301 475 l 287 468 l 285 468 b 245 467 272 462 255 456 l 210 501 b 200 521 203 508 200 514 b 206 544 200 528 203 536 b 210 567 209 552 210 559 b 199 599 210 579 206 592 b 164 612 190 608 177 612 b 99 582 143 612 120 602 b 69 517 79 562 69 539 b 82 482 69 504 73 491 b 115 471 91 474 102 471 b 137 474 122 471 130 472 b 161 480 147 477 154 480 b 180 471 167 480 173 478 l 215 436 b 213 395 225 426 219 408 b 212 392 213 393 212 393 b 183 361 206 379 196 361 l 134 361 b 102 390 112 361 112 373 b 58 423 92 408 76 423 b 0 340 26 423 0 386 b 58 258 0 294 26 258 b 102 291 76 258 92 274 b 134 318 112 308 112 318 l 183 318 b 212 288 196 318 206 301 b 213 287 212 287 213 288 l 213 285 b 215 245 219 272 225 255 l 179 210 b 160 200 171 203 166 200 b 137 206 154 200 145 203 b 114 210 130 209 122 210 b 82 199 102 210 89 206 b 69 164 73 190 69 177 b 99 99 69 143 79 120 z m 276 276 b 249 340 262 291 249 320 b 340 432 249 390 289 432 b 432 340 390 432 432 390 b 405 276 432 320 419 291 b 340 249 390 262 360 249 b 276 276 320 249 291 262 z"},wiggleArpeggiatoUp:{x_min:-22,x_max:242,y_min:0,y_max:164,ha:164,o:"m 343 122 b 323 143 343 122 334 132 b 308 148 318 147 312 148 b 298 144 304 148 301 147 b 282 128 295 141 291 137 b 274 124 279 125 276 124 b 265 128 268 124 265 128 b 158 220 265 128 173 207 b 112 236 143 232 127 236 b 43 206 82 236 55 219 l -26 137 b -32 125 -30 132 -32 130 b -26 112 -32 118 -26 112 b -6 92 -26 112 -17 102 b 7 86 -1 88 3 86 b 17 91 12 86 14 88 b 33 107 20 94 24 98 b 42 111 36 109 39 111 b 52 107 48 111 52 107 b 158 16 52 107 144 29 b 204 0 174 4 190 0 b 274 30 235 0 262 17 l 343 99 b 348 111 347 104 348 108 b 343 122 348 118 343 122 z"},repeat1Bar:{x_min:0,x_max:481,y_min:-250,y_max:250,ha:500,o:"m 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 693 -181 b 602 -91 693 -131 651 -91 b 511 -181 552 -91 511 -131 b 602 -272 511 -232 552 -272 b 693 -181 651 -272 693 -232 z"},repeat2Bars:{x_min:0,x_max:735,y_min:-250,y_max:250,ha:500,o:"m 1058 -181 b 968 -91 1058 -131 1017 -91 b 877 -181 917 -91 877 -131 b 968 -272 877 -232 917 -272 b 1058 -181 1017 -272 1058 -232 z m 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 1058 360 l 877 360 l 366 -360 l 547 -360 z"},repeat4Bars:{x_min:0,x_max:1243,y_min:-250,y_max:250,ha:500,o:"m 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 1058 360 l 877 360 l 366 -360 l 547 -360 z m 1424 360 l 1243 360 l 732 -360 l 913 -360 z m 1790 360 l 1608 360 l 1097 -360 l 1279 -360 z m 1790 -181 b 1699 -91 1790 -131 1748 -91 b 1608 -181 1649 -91 1608 -131 b 1699 -272 1608 -232 1649 -272 b 1790 -181 1748 -272 1790 -232 z"},repeatBarSlash:{x_min:0,x_max:481,y_min:-250,y_max:250,ha:500,o:"m 693 360 l 511 360 l 0 -360 l 181 -360 z"},csymDiminished:{x_min:0,x_max:501,y_min:0,y_max:501,ha:501,o:"m 361 721 b 0 361 161 721 0 560 b 361 0 0 161 161 0 b 721 361 560 0 721 161 b 361 721 721 560 560 721 z m 557 164 b 361 82 505 111 435 82 b 164 164 287 82 216 111 b 82 361 111 216 82 287 b 164 557 82 436 111 505 b 361 639 216 611 287 639 b 557 557 436 639 505 611 b 639 361 611 505 639 436 b 557 164 639 287 609 216 z"},csymHalfDiminished:{x_min:-1,x_max:502,y_min:-1,y_max:502,ha:503,o:"m 723 684 l 684 723 l 596 634 b 361 721 533 688 451 721 b 0 361 161 721 0 560 b 88 125 0 271 33 189 l -1 36 l 36 -1 l 125 88 b 361 0 189 33 271 0 b 721 361 560 0 721 161 b 634 596 721 451 688 533 z m 82 361 b 164 557 82 436 111 505 b 361 639 216 611 287 639 b 537 576 426 639 488 616 l 145 184 b 82 361 105 233 82 295 z m 639 361 b 557 164 639 287 609 216 b 361 82 505 111 435 82 b 184 145 295 82 233 105 l 576 537 b 639 361 616 488 639 426 z"},csymAugmented:{x_min:1,x_max:321,y_min:90,y_max:410,ha:320,o:"m 462 400 l 272 400 l 272 590 l 192 590 l 192 400 l 1 400 l 1 320 l 192 320 l 192 130 l 272 130 l 272 320 l 462 320 z"},csymMajorSeventh:{x_min:0,x_max:500,y_min:10,y_max:490,ha:480,o:"m 360 528 l 585 96 l 135 96 z m 360 706 l 0 14 l 720 14 z"},accidentalNarrowReversedFlat:{x_min:0,x_max:160,y_min:-176,y_max:452,ha:628,o:"m 0 84 b 101 -153 0 -26 65 -107 b 196 -249 153 -217 196 -249 b 206 -253 199 -251 202 -253 b 225 -235 216 -253 225 -245 l 230 632 b 212 651 230 642 222 651 l 199 651 b 180 632 189 651 180 642 l 184 204 b 125 217 184 204 171 217 b 0 84 53 217 0 173 z m 145 154 b 184 107 181 154 184 120 l 187 -179 b 114 -72 167 -158 132 -112 b 82 58 86 -13 82 36 b 145 154 82 79 82 154 z"},accidentalNarrowReversedFlatAndFlat:{x_min:0,x_max:416,y_min:-176,y_max:452,ha:628,o:"m 462 217 b 330 174 374 217 338 181 l 334 632 b 315 651 334 642 325 651 l 302 651 b 284 632 292 651 284 642 l 289 -235 b 308 -253 289 -245 298 -253 b 320 -249 312 -253 317 -251 b 492 -138 320 -249 433 -194 b 599 84 534 -98 599 -26 b 462 217 599 173 534 217 z m 501 58 b 459 -72 501 36 498 -19 b 327 -179 431 -111 359 -164 l 330 85 l 330 91 b 422 154 330 125 359 154 b 501 58 503 154 501 79 z m 0 84 b 101 -153 0 -26 65 -107 b 196 -249 153 -217 196 -249 b 206 -253 199 -251 202 -253 b 225 -235 216 -253 225 -245 l 230 632 b 212 651 230 642 222 651 l 199 651 b 180 632 189 651 180 642 l 184 204 b 125 217 184 204 171 217 b 0 84 53 217 0 173 z m 145 154 b 184 107 181 154 184 120 l 187 -179 b 114 -72 167 -158 132 -112 b 82 58 86 -13 82 36 b 145 154 82 79 82 154 z"}},fontFamily:"Leland",resolution:1e3,generatedOn:"2022-06-26T17:49:33.853Z"},Lb={name:"Leland",smufl:!0,stave:{padding:12,endPaddingMax:10,endPaddingMin:5,unalignedNotePadding:10},accidental:{noteheadAccidentalPadding:1,leftPadding:2,accidentalSpacing:3},clef:{default:{point:32,width:26},small:{point:26,width:20},annotations:{"8va":{smuflCode:"timeSig8",default:{point:18,treble:{line:-1.4,shiftX:12}},small:{point:16,treble:{line:-.2,shiftX:8}}},"8vb":{smuflCode:"timeSig8",default:{point:18,treble:{line:6,shiftX:10},bass:{line:3.5,shiftX:1}},small:{point:16,treble:{line:5.3,shiftX:6},bass:{line:3.1,shiftX:.5}}}},lineCount:{8:{point:55,shiftY:14},7:{point:47,shiftY:8},6:{point:32,shiftY:1},5:{point:30,shiftY:-6},4:{point:23,shiftY:-12}}},parenthesis:{default:{point:39,width:7},gracenote:{point:23.4,width:3}},pedalMarking:{up:{point:40},down:{point:34}},digits:{shiftLine:-1,point:34,tupletPoint:22,shiftY:-6},articulation:{articStaccatissimoAbove:{padding:2},articStaccatissimoBelow:{padding:2}},tremolo:{default:{point:25,spacing:5,offsetYStemUp:-5,offsetYStemDown:5,offsetXStemUp:11,offsetXStemDown:1},grace:{point:18,spacing:4,offsetYStemUp:-5,offsetYStemDown:5,offsetXStemUp:7,offsetXStemDown:1}},staveRepetition:{symbolText:{offsetX:12,offsetY:25,spacing:5},coda:{offsetY:25},segno:{offsetY:10}},stem:{heightAdjustmentForFlag:-3,noteHead:{noteheadTriangleUpHalf:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpBlack:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpWhole:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadXHalf:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXBlack:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXWhole:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadHalf:{offsetYBaseStemUp:-2.55,offsetYBaseStemDown:2.65},noteheadBlack:{offsetYBaseStemUp:-2,offsetYBaseStemDown:2},noteheadSquareWhite:{offsetYBaseStemDown:-5,offsetYBaseStemUp:5}}},glyphs:{coda:{point:20,shiftX:-7,shiftY:8},segno:{shiftX:-7},flag:{shiftX:-.75,staveTempo:{shiftX:-1}},clef:{gClef:{default:{scale:1.1,shiftY:1},small:{shiftY:1.5}},fClef:{default:{shiftY:-.5}}},ornament:{ornamentTurn:{scale:1.2},ornamentTurnSlash:{scale:1.2}},stringNumber:{verticalPadding:8,stemPadding:2,leftPadding:5,rightPadding:6},stroke:{arrowheadBlackDown:{straight:{shiftX:-4.5},wiggly:{shiftX:-1,shiftY:1}},arrowheadBlackUp:{straight:{shiftX:-.85},wiggly:{shiftX:-1,shiftY:1}}},textNote:{point:34,breathMarkTick:{point:36,shiftY:9},breathMarkComma:{point:36},segno:{point:30,shiftX:-7,shiftY:8},coda:{point:20,shiftX:-7,shiftY:8},ornamentTrill:{shiftX:-8,shiftY:8},ornamentTurn:{point:42},ornamentTurnSlash:{point:42},ornamentMordent:{shiftX:-8},ornamentShortTrill:{shiftX:-8}},noteHead:{minPadding:2,standard:{restQuarterStemUp:{point:35},restQuarterStemDown:{point:35}},custom:{noteheadCircleXStemUp:{shiftX:1.5},noteheadCircleXStemDown:{shiftX:.25},noteheadDiamondHalfStemUp:{shiftX:1.5},noteheadDiamondBlackStemUp:{shiftX:1.5},noteheadDiamondWholeStemUp:{shiftX:1},noteheadXHalfStemUp:{shiftX:-2},noteheadXHalfStemDown:{shiftX:1},noteheadXWholeStemUp:{shiftX:-4},noteheadXWholeStemDown:{shiftX:1},noteheadSquareWhiteStemDown:{shiftX:.25},noteheadSquareWhiteStemUp:{shiftX:-.75},noteheadSquareBlackStemUp:{shiftX:-.75},noteheadTriangleUpWholeStemUp:{shiftX:-.75}}},chordSymbol:{global:{superscriptOffset:-400,subscriptOffset:300,kerningOffset:-250,lowerKerningText:["D","F","P","T","V","Y"],upperKerningText:["A","L"],spacing:100,superSubRatio:.66},csymDiminished:{scale:.8,leftSideBearing:-32,advanceWidth:506,yOffset:0},csymHalfDiminished:{scale:.8,leftSideBearing:-32,advanceWidth:506,yOffset:0},csymAugmented:{scale:1,leftSideBearing:0,advanceWidth:530,yOffset:0},csymParensLeftTall:{scale:.8,leftSideBearing:-20,advanceWidth:184,yOffset:250},csymParensRightTall:{scale:.8,leftSideBearing:0,advanceWidth:189,yOffset:250},csymBracketLeftTall:{scale:.8,leftSideBearing:0,advanceWidth:328,yOffset:0},csymBracketRightTall:{scale:.8,leftSideBearing:1,advanceWidth:600,yOffset:0},csymParensLeftVeryTall:{scale:.9,leftSideBearing:50,advanceWidth:121,yOffset:350},csymParensRightVeryTall:{scale:.9,leftSideBearing:0,advanceWidth:111,yOffset:350},csymDiagonalArrangementSlash:{scale:.6,leftSideBearing:-1,advanceWidth:990,yOffset:0},csymMinor:{scale:.8,leftSideBearing:0,advanceWidth:482,yOffset:0},csymMajorSeventh:{scale:.9,leftSideBearing:200,yOffset:0,advanceWidth:600},accidentalSharp:{scale:.75,leftSideBearing:20,advanceWidth:250,yOffset:-302},accidentalFlat:{scale:.9,leftSideBearing:-20,advanceWidth:226,yOffset:-184}},jazzOrnaments:{brassScoop:{scale:1,xOffset:-12,yOffset:0,stemUpYOffset:0,reportedWidth:20},brassDoitMedium:{scale:1,xOffset:16,yOffset:0,stemUpYOffset:0,reportedWidth:22},brassFallLipShort:{scale:1,xOffset:16,yOffset:0,stemUpYOffset:0,reportedWidth:15},brassLiftMedium:{scale:1,xOffset:16,yOffset:5,stemUpYOffset:0,reportedWidth:5},brassFallRoughMedium:{scale:1,xOffset:16,yOffset:28,stemUpYOffset:0,reportedWidth:5},brassBend:{scale:1,xOffset:2,yOffset:-8,stemUpYOffset:25,reportedWidth:5},brassMuteClosed:{scale:1,xOffset:3,yOffset:-8,stemUpYOffset:25,reportedWidth:5},brassMuteOpen:{scale:1,xOffset:3,yOffset:-7,stemUpYOffset:25,reportedWidth:5},brassFlip:{scale:1,xOffset:10,yOffset:0,stemUpYOffset:7,reportedWidth:10},brassJazzTurn:{scale:1,xOffset:0,yOffset:0,stemUpYOffset:8,reportedWidth:31},brassSmear:{scale:1,xOffset:10,yOffset:0,stemUpYOffset:8,reportedWidth:5}},tuplet:{noteHeadOffset:20,stemOffset:10,bottomLine:4,topModifierOffset:15}}};const Ub={glyphs:{bracketTop:{x_min:0,x_max:508,y_min:0,y_max:370,ha:370,o:"m 22 0 b 122 0 55 1 89 0 l 157 0 b 713 376 425 0 622 137 b 732 467 724 406 732 436 b 726 514 732 482 730 498 b 711 533 723 528 719 533 b 693 526 707 533 700 530 b 674 498 683 520 678 508 b 635 406 662 467 652 435 b 310 164 560 281 458 193 b 154 151 258 154 206 151 b 39 154 117 151 78 154 b 1 120 17 154 4 145 b 0 84 0 108 0 96 b 0 20 0 63 1 40 b 22 0 0 4 7 0 z"},bracketBottom:{x_min:0,x_max:496,y_min:-393,y_max:0,ha:393,o:"m 696 -566 b 711 -539 713 -566 708 -549 b 714 -521 713 -533 714 -527 b 713 -508 714 -517 713 -513 b 661 -327 706 -445 688 -384 b 392 -42 603 -203 513 -109 b 206 0 331 -7 266 0 b 160 -1 190 0 174 -1 b 26 -1 107 -1 66 -3 b 0 -19 12 -1 0 -4 l 0 -23 b 3 -50 1 -32 3 -42 b 1 -86 3 -62 1 -73 b 4 -118 1 -96 1 -108 b 45 -151 10 -145 23 -154 b 180 -143 89 -144 135 -145 b 621 -419 392 -135 523 -236 b 662 -539 641 -456 655 -497 b 696 -566 667 -557 680 -566 z"},barlineTick:{x_min:0,x_max:56.036101509664164,y_min:876.905249806889,y_max:1121.5430338167066,ha:244.63778400981766,o:"m 42 1263 b 66 1287 62 1261 66 1272 b 81 1583 65 1387 72 1485 b 35 1614 82 1610 53 1610 b 14 1591 17 1619 16 1604 b 0 1408 7 1525 0 1459 l 0 1292 b 42 1263 1 1263 23 1266 z"},breathMarkTick:{x_min:0,x_max:568,y_min:0,y_max:621,ha:621,o:"m 258 0 b 278 39 276 0 274 24 b 279 56 279 45 279 50 l 279 73 b 278 117 279 88 278 102 b 281 148 278 127 279 138 b 536 600 312 330 387 487 b 744 719 600 651 670 690 b 815 779 775 730 808 740 b 818 824 818 793 818 808 b 815 868 818 838 818 852 b 796 894 814 881 808 894 b 779 888 791 894 786 893 b 719 864 760 878 739 871 b 372 602 580 806 459 724 b 229 252 298 498 251 383 b 220 268 225 262 222 264 b 209 302 217 279 213 291 b 75 527 181 387 143 467 b 16 563 58 543 39 573 b 0 539 3 557 0 549 b 12 492 0 524 9 507 b 56 400 19 459 22 425 b 163 269 104 367 138 323 b 238 36 197 194 216 115 b 258 0 242 22 243 0 z"},segno:{x_min:0,x_max:798,y_min:-65,y_max:806,ha:871,o:"m 16 -94 b 66 -69 39 -92 53 -85 b 177 59 102 -26 138 17 b 543 456 298 192 420 324 b 726 300 615 420 680 373 b 753 217 744 271 753 243 b 655 112 753 170 719 131 b 599 104 636 107 618 104 b 461 173 544 104 495 128 b 432 190 454 183 444 190 b 409 179 425 190 418 187 b 359 118 390 160 373 141 b 341 72 347 101 341 86 b 373 24 341 56 351 40 b 409 6 384 17 396 10 b 550 -13 454 -12 501 -14 b 599 -6 566 -12 583 -10 b 864 213 720 27 806 104 b 886 300 878 242 886 271 b 857 395 886 331 877 363 b 799 467 840 420 821 445 b 648 572 755 513 704 546 b 1110 1083 802 743 955 914 b 1140 1129 1123 1097 1136 1110 b 1149 1148 1142 1135 1149 1142 b 1145 1153 1149 1149 1148 1152 b 1123 1161 1139 1158 1130 1161 b 1109 1156 1119 1161 1113 1159 b 1089 1138 1102 1151 1094 1145 b 946 988 1040 1089 989 1041 b 595 602 834 855 711 732 l 590 598 l 549 615 b 432 793 462 647 432 723 b 534 888 432 851 474 888 b 671 834 588 888 631 864 b 710 818 684 824 696 818 b 724 821 714 818 719 819 b 809 883 757 834 788 852 b 816 901 814 890 816 896 b 802 923 816 910 812 916 b 706 984 770 945 742 971 b 593 1011 668 998 631 1011 b 516 991 567 1011 541 1005 b 333 799 433 949 380 876 b 302 693 312 765 302 729 b 330 589 302 658 311 624 b 469 488 360 533 415 511 b 485 482 475 487 480 485 b 266 249 412 405 338 327 b 121 88 217 196 170 141 b 9 -65 78 40 37 -7 b 0 -85 4 -72 0 -79 b 16 -94 0 -91 4 -94 z m 861 536 b 927 575 890 539 909 557 b 965 628 952 598 965 613 b 926 680 965 644 952 658 b 865 713 900 701 883 713 b 805 667 845 713 828 698 b 768 611 791 649 770 631 b 812 564 766 589 798 582 b 861 536 824 550 840 537 z m 251 350 b 363 436 285 348 353 403 b 354 456 366 448 360 452 b 271 518 327 477 298 497 b 243 528 261 526 252 528 b 210 513 232 528 222 523 b 157 454 190 494 176 472 b 141 428 147 444 141 436 b 158 406 141 420 147 413 b 216 361 180 393 197 376 b 245 350 225 356 235 350 z"},coda:{x_min:0,x_max:1380,y_min:-196,y_max:1037,ha:1233,o:"m 1028 -282 b 1057 -245 1045 -282 1053 -261 b 1060 -203 1060 -232 1060 -217 b 1063 9 1060 -132 1061 -62 b 1390 194 1192 22 1303 81 b 1531 543 1467 298 1512 415 b 1532 556 1531 547 1532 552 b 1904 559 1656 557 1780 559 b 1950 582 1920 559 1941 569 b 1987 674 1970 609 1987 638 b 1984 698 1987 681 1986 690 b 1950 700 1973 698 1961 700 l 1941 700 l 1545 696 b 1535 776 1545 723 1541 749 b 1103 1113 1477 996 1326 1107 b 1080 1115 1096 1115 1087 1115 b 1081 1322 1080 1184 1080 1253 b 1079 1467 1083 1371 1081 1418 b 1061 1493 1079 1476 1080 1493 l 1060 1493 b 1028 1467 1044 1490 1031 1485 b 1020 1403 1025 1446 1020 1424 b 1017 1110 1020 1305 1018 1208 l 962 1106 b 569 914 808 1087 671 1035 b 451 683 510 844 472 766 l 161 678 b 118 680 148 678 132 680 b 79 670 101 680 86 678 b 0 544 48 636 29 592 l 37 544 l 429 549 b 428 518 428 539 428 528 b 488 285 428 435 458 360 b 681 81 526 192 593 124 b 946 9 763 40 854 19 b 1008 6 966 7 988 6 b 1005 -137 1008 -42 1005 -89 b 1012 -243 1005 -173 1005 -209 b 1028 -282 1015 -258 1011 -282 z m 1074 690 b 1079 935 1077 772 1077 852 b 1326 855 1166 932 1250 909 b 1446 694 1385 814 1426 759 b 1269 693 1387 694 1328 693 b 1074 690 1204 693 1139 691 z m 577 684 b 766 874 618 763 678 828 b 989 932 837 912 913 923 b 1015 933 998 932 1007 933 b 1014 822 1015 896 1014 860 b 1011 688 1012 791 1012 743 z m 1067 184 b 1071 553 1070 307 1068 429 b 1439 556 1194 553 1316 554 b 1437 554 1439 554 1437 554 b 1341 337 1413 478 1387 402 b 1119 192 1286 261 1211 212 b 1067 184 1102 189 1084 186 z m 1008 180 b 660 264 886 181 770 212 b 524 471 570 305 524 374 b 528 524 524 488 526 505 l 533 549 b 792 552 619 550 706 550 b 1009 553 865 553 937 552 b 1008 180 1009 428 1008 288 z"},gClef:{x_min:0,x_max:664,y_min:-559,y_max:1009,ha:1568,o:"m 343 -805 b 366 -801 350 -805 357 -804 b 409 -773 383 -795 397 -786 b 582 -328 528 -648 577 -497 b 583 -294 582 -315 583 -294 b 612 -279 583 -294 603 -282 b 747 -197 660 -256 706 -230 b 949 143 857 -109 920 10 b 956 206 955 164 956 186 b 791 384 956 297 906 363 b 704 393 762 390 733 393 b 498 336 632 393 563 374 b 481 325 490 331 481 325 l 444 465 b 442 485 442 472 442 485 b 609 880 442 485 589 746 b 619 996 616 919 619 958 b 613 1084 619 1027 618 1056 b 534 1387 599 1188 560 1286 b 482 1453 527 1417 517 1453 b 422 1407 456 1453 438 1428 b 305 1063 348 1305 312 1188 b 304 1002 304 1043 304 1022 b 338 654 304 886 323 769 b 343 629 338 645 341 636 b 144 356 278 537 206 451 b 23 144 101 288 53 220 b 0 20 7 107 0 63 b 82 -210 0 -69 30 -160 b 207 -288 112 -239 160 -271 b 410 -328 274 -312 340 -328 b 474 -324 431 -328 452 -327 l 491 -321 b 491 -341 491 -321 492 -334 b 402 -585 475 -428 454 -513 b 294 -668 374 -622 348 -664 b 271 -693 278 -670 271 -680 b 274 -708 271 -698 272 -703 b 302 -775 282 -730 292 -753 b 343 -805 311 -795 325 -805 z m 400 717 b 382 922 389 786 382 854 b 481 1286 382 1047 408 1169 b 507 1125 498 1233 507 1179 b 500 1040 507 1097 504 1068 b 400 717 481 927 455 818 z m 252 -135 b 196 -121 232 -134 215 -127 b 117 -69 158 -108 127 -94 b 111 -32 112 -58 111 -45 b 117 19 111 -16 114 1 b 130 56 118 27 127 52 b 324 337 186 156 253 246 l 384 416 l 395 384 b 416 291 406 348 416 291 b 350 213 416 291 376 239 b 243 -42 278 143 243 55 b 251 -117 243 -66 246 -91 b 252 -135 252 -122 252 -127 z m 563 -91 b 510 168 552 3 530 78 b 513 192 508 179 508 186 b 624 202 550 199 586 202 b 730 192 660 202 694 199 b 850 141 773 183 816 176 b 858 134 852 138 855 135 b 595 -121 801 19 716 -68 l 569 -131 z m 410 -160 b 311 -147 360 -160 311 -147 b 307 -98 311 -147 307 -127 b 314 -33 307 -79 308 -56 b 429 131 328 36 377 85 b 441 138 433 135 438 138 b 449 122 446 138 448 132 b 490 -131 462 37 484 -46 b 490 -153 491 -140 490 -153 b 410 -160 490 -153 452 -163 z"},cClef:{x_min:0,x_max:731,y_min:-543,y_max:543,ha:1086,o:"m 131 -782 b 141 -755 138 -782 140 -773 b 147 -490 143 -667 145 -577 b 160 207 150 -258 153 -24 b 168 618 164 344 158 481 b 81 768 173 690 132 732 b 45 782 66 778 55 782 b 3 740 26 782 13 768 b 0 724 1 736 0 730 l 1 710 b 4 596 4 672 4 634 l 4 382 b 9 102 4 288 4 196 b 17 -301 13 -32 10 -166 l 17 -672 b 50 -736 17 -701 27 -720 b 109 -772 69 -749 91 -759 b 131 -782 120 -778 127 -782 z m 615 -770 b 881 -684 710 -770 801 -739 b 1020 -395 986 -612 1020 -510 b 1017 -334 1020 -374 1018 -354 b 769 -62 1007 -209 896 -75 b 746 -60 762 -60 755 -60 b 639 -73 710 -60 675 -69 b 524 -109 598 -79 560 -92 b 528 -36 526 -85 528 -60 b 527 -4 528 -26 528 -14 b 528 39 527 10 528 24 b 526 99 528 59 527 79 b 592 94 549 95 570 94 b 648 99 611 94 629 95 b 912 157 744 94 844 117 b 1053 377 1009 215 1053 284 b 1050 425 1053 393 1053 409 b 914 665 1037 521 986 602 b 717 753 855 717 791 753 b 626 734 688 753 658 747 l 462 665 b 347 500 374 628 347 580 b 350 449 347 484 348 468 b 392 419 353 428 367 416 b 492 438 425 425 459 428 b 541 498 524 448 541 468 b 540 514 541 503 541 508 b 537 546 537 524 537 536 b 573 639 537 580 550 611 b 606 657 582 649 593 657 l 609 657 b 716 622 647 652 684 647 b 834 372 801 556 834 469 b 831 323 834 356 832 338 b 743 187 825 266 795 217 b 710 176 732 180 720 176 b 694 179 704 176 700 177 b 527 223 638 193 582 206 b 495 229 516 228 505 229 b 454 220 481 229 468 225 b 395 189 432 213 415 200 b 363 180 384 186 374 181 b 348 168 356 179 348 176 b 340 161 343 167 340 164 b 347 150 340 157 343 154 b 356 147 348 148 353 147 b 364 92 361 130 363 111 b 369 -37 367 49 369 6 b 363 -154 369 -76 367 -115 b 357 -236 360 -183 357 -210 b 376 -264 357 -253 361 -259 b 456 -289 402 -284 429 -289 b 521 -282 478 -289 500 -285 b 549 -255 537 -279 546 -271 b 598 -177 556 -225 577 -202 b 622 -164 605 -168 613 -164 b 636 -167 626 -164 631 -166 b 749 -225 678 -177 714 -199 b 848 -405 814 -276 848 -337 b 824 -507 848 -436 840 -471 b 657 -657 792 -582 730 -625 b 608 -668 638 -664 622 -668 b 534 -602 572 -668 547 -645 b 513 -575 530 -589 523 -575 b 507 -576 510 -575 508 -575 b 478 -582 497 -580 488 -582 b 405 -570 454 -582 428 -570 b 389 -572 399 -570 395 -570 l 363 -572 b 321 -575 348 -572 333 -569 l 321 631 b 323 662 323 641 323 652 b 315 716 323 681 321 698 b 304 736 314 723 317 736 l 302 736 b 281 716 294 734 285 729 b 275 665 276 700 275 683 l 275 382 b 276 99 275 288 275 193 b 279 -170 278 10 276 -81 b 284 -399 282 -246 284 -323 b 282 -629 284 -475 282 -553 b 289 -721 282 -660 289 -690 b 300 -736 289 -727 291 -736 b 312 -724 307 -736 310 -730 b 321 -667 323 -706 321 -687 l 321 -632 l 328 -644 l 340 -657 b 510 -757 386 -707 445 -740 b 615 -770 546 -766 580 -770 z"},fClef:{x_min:0,x_max:776,y_min:-496,y_max:216,ha:712,o:"m 402 -706 b 804 -405 592 -678 716 -566 b 876 -53 861 -298 874 -183 b 868 33 876 -32 873 1 b 560 311 845 217 723 311 b 524 310 549 311 536 311 b 131 134 373 297 239 242 b 17 -29 84 86 37 39 b 9 -89 12 -50 9 -71 b 112 -238 9 -154 43 -206 b 124 -243 117 -239 120 -242 b 186 -261 145 -255 166 -261 b 268 -228 215 -261 242 -249 b 351 -59 325 -181 351 -124 b 343 10 351 -36 348 -13 b 340 36 341 19 340 27 b 409 105 340 75 363 102 b 441 107 420 107 431 107 b 624 36 510 107 573 86 b 744 -200 688 -27 724 -109 b 747 -230 747 -210 747 -222 b 717 -323 747 -264 736 -292 b 608 -445 688 -370 654 -410 b 307 -541 518 -513 415 -541 l 213 -541 b 39 -521 154 -541 96 -539 b 0 -552 17 -514 0 -531 b 1 -564 0 -556 0 -560 b 17 -611 6 -580 10 -596 b 101 -694 35 -648 50 -684 b 288 -714 164 -707 225 -714 b 402 -706 325 -714 363 -711 z m 1018 92 b 1080 118 1041 91 1068 96 b 1117 219 1099 150 1117 180 b 1113 252 1117 229 1116 240 b 1045 288 1102 297 1068 276 b 1017 262 1028 297 1024 274 b 984 124 989 220 996 170 b 1008 91 979 108 986 91 z m 972 -281 b 1070 -148 1024 -279 1070 -210 b 1025 -105 1070 -105 1045 -112 b 989 -127 1004 -96 998 -114 b 949 -249 963 -164 963 -209 b 969 -281 943 -265 949 -281 z"},unpitchedPercussionClef1:{x_min:0,x_max:379.13761966945304,y_min:-250,y_max:250,ha:500,o:"m 481 -360 b 507 -357 491 -360 500 -360 b 546 -295 541 -346 547 -325 b 536 79 543 -170 540 -46 b 523 311 533 157 534 235 b 475 359 518 340 508 359 b 425 360 459 359 442 360 b 400 359 416 360 409 360 b 337 294 348 353 340 347 l 337 -73 b 336 -264 337 -137 337 -200 b 343 -294 336 -274 338 -284 b 481 -360 359 -330 431 -360 z m 144 -341 b 207 -320 167 -341 189 -331 b 217 -301 215 -315 217 -308 b 210 -262 217 -289 210 -275 b 228 187 212 -112 209 37 b 228 287 228 220 229 253 b 174 353 228 336 222 343 b 120 359 157 357 138 359 b 48 357 96 359 72 356 b 17 323 29 357 19 344 b 7 120 16 255 9 187 b 6 -109 6 43 6 -33 l 6 -204 b 0 -251 6 -220 0 -235 b 3 -269 0 -256 0 -262 b 127 -340 24 -330 79 -328 b 144 -341 132 -341 138 -341 z"},"6stringTabClef":{x_min:0,x_max:438,y_min:-768,y_max:767,ha:1535,o:"m 369 438 b 374 439 370 438 372 438 b 384 462 383 444 384 452 l 384 474 b 390 697 386 547 390 622 b 373 1002 390 799 390 901 l 533 1002 b 560 1001 541 1004 552 1001 b 573 1007 567 1001 572 1002 b 546 1050 579 1025 559 1038 b 536 1056 543 1053 539 1053 b 324 1104 472 1102 397 1104 b 72 1090 238 1104 154 1099 b 55 1093 66 1090 60 1092 b 37 1073 46 1093 37 1089 b 60 1045 37 1061 48 1051 b 203 1001 105 1022 151 1001 b 233 1004 213 1001 223 1002 b 246 1005 238 1004 243 1005 b 272 975 264 1005 272 996 l 272 965 b 258 596 264 842 265 719 b 315 474 253 540 272 504 l 343 455 b 369 438 351 448 357 438 z m 114 -320 b 127 -304 120 -320 124 -315 b 171 -174 141 -261 158 -219 b 222 -135 179 -147 196 -137 b 426 -122 289 -131 359 -128 b 498 -164 462 -120 482 -127 b 628 -301 521 -226 575 -264 b 631 -288 631 -295 631 -291 b 628 -269 631 -281 629 -276 b 569 -134 616 -220 589 -179 b 408 225 514 -14 462 107 b 314 357 384 274 351 318 b 278 380 298 372 288 379 b 251 351 268 380 261 372 b 4 -209 156 171 75 -17 b 0 -228 1 -215 0 -222 b 19 -258 0 -240 7 -249 b 102 -314 45 -279 75 -294 b 114 -320 107 -318 111 -320 z m 425 6 b 360 20 403 17 382 20 b 274 14 331 20 302 14 l 246 14 l 340 206 b 425 6 369 137 395 75 z m 245 -1106 b 281 -1104 256 -1106 269 -1106 b 511 -888 400 -1094 511 -1035 b 454 -688 511 -814 504 -744 b 448 -678 449 -685 448 -681 b 454 -667 448 -675 449 -671 b 504 -497 503 -619 507 -559 b 324 -288 500 -383 436 -308 b 295 -287 314 -287 304 -287 l 282 -287 b 115 -330 223 -287 168 -307 b 94 -366 102 -336 94 -348 l 94 -370 b 96 -435 96 -392 96 -413 b 73 -858 89 -576 71 -717 b 78 -919 73 -878 78 -899 b 72 -950 78 -930 76 -940 b 63 -992 66 -965 63 -978 b 66 -1015 63 -999 65 -1008 b 173 -1104 84 -1106 84 -1106 b 245 -1106 197 -1104 220 -1104 z m 161 -622 b 147 -618 156 -622 151 -621 b 140 -600 141 -612 140 -606 b 144 -564 140 -589 144 -575 b 143 -554 144 -560 144 -557 l 143 -546 b 220 -451 144 -467 143 -465 b 278 -445 239 -446 259 -444 b 418 -497 328 -445 376 -461 b 429 -516 426 -504 429 -510 b 415 -533 429 -521 423 -527 b 219 -608 357 -579 287 -590 b 215 -609 217 -608 216 -609 b 161 -622 197 -609 177 -622 z m 154 -953 b 130 -933 135 -953 130 -948 l 130 -865 l 128 -865 b 135 -788 130 -838 124 -808 b 203 -769 145 -769 180 -776 b 259 -762 223 -765 242 -762 b 441 -852 330 -762 386 -805 b 449 -867 446 -858 449 -863 b 436 -884 449 -874 444 -878 b 318 -942 402 -914 363 -935 b 154 -953 264 -950 209 -953 z"},timeSig0:{x_min:20,x_max:513,y_min:-358.159536277652,y_max:359,ha:717.159536277652,o:"m 341 -516 b 420 -510 367 -516 395 -514 b 675 -338 533 -494 622 -448 b 737 -92 716 -256 734 -171 b 739 -35 739 -73 739 -53 b 680 305 739 86 720 207 b 400 517 622 449 537 517 b 337 514 380 517 359 517 b 289 507 321 511 305 513 b 91 317 192 477 127 412 b 29 9 50 212 29 108 b 217 -458 29 -157 88 -312 b 341 -516 251 -494 291 -518 z m 412 -452 b 359 -425 393 -452 376 -444 b 187 14 242 -301 179 -158 b 268 334 193 127 212 235 b 387 448 295 383 330 428 b 406 452 395 451 400 452 b 428 444 413 452 420 449 b 517 324 471 413 497 372 b 586 -29 560 222 586 86 b 556 -271 586 -112 585 -193 b 468 -422 536 -327 508 -377 b 412 -452 449 -442 431 -452 z"},timeSig1:{x_min:20,x_max:283,y_min:-364,y_max:366,ha:730,o:"m 264 -524 b 357 -510 297 -524 325 -516 b 374 -490 369 -508 374 -501 b 380 -438 376 -472 380 -455 l 406 246 b 408 301 408 265 408 282 b 400 445 408 348 405 396 b 288 527 395 491 338 527 b 253 520 276 527 264 526 b 240 508 249 517 245 513 b 49 409 192 445 127 413 b 29 396 33 408 29 403 b 32 380 29 392 30 386 b 59 363 36 366 49 364 b 164 348 95 356 130 348 b 222 357 183 348 203 351 b 238 361 228 360 233 360 b 252 334 248 361 252 353 b 243 59 252 242 249 150 b 219 -490 229 -124 233 -307 b 264 -524 217 -516 232 -524 z"},timeSig2:{x_min:20,x_max:660.4636303241031,y_min:-378.7201231608281,y_max:382,ha:760.720123160828,o:"m 99 -543 b 130 -533 111 -550 121 -540 b 255 -448 168 -501 213 -475 b 338 -425 282 -431 310 -425 b 392 -431 356 -425 374 -426 b 485 -462 423 -438 454 -451 b 648 -497 540 -482 595 -497 b 834 -441 711 -497 773 -480 b 950 -242 906 -395 958 -334 b 942 -210 950 -230 950 -215 b 912 -220 932 -204 920 -213 b 861 -264 894 -235 877 -248 b 775 -317 835 -289 808 -305 b 675 -334 742 -328 708 -334 b 510 -295 619 -334 563 -318 b 372 -264 465 -278 420 -264 b 305 -272 350 -264 328 -266 b 331 -242 318 -256 324 -249 b 490 -73 386 -187 438 -131 b 675 340 595 43 664 180 b 677 369 677 350 677 360 b 556 536 677 461 638 508 b 468 550 526 546 497 550 b 297 508 409 550 353 533 b 111 354 220 475 168 412 b 29 197 65 308 29 261 b 32 164 29 187 29 176 b 29 140 33 157 29 147 b 43 125 29 132 32 125 b 73 147 55 125 65 138 b 86 163 79 153 82 158 b 238 320 134 219 183 272 b 425 389 292 367 360 389 b 575 341 480 389 531 373 b 606 298 590 330 606 317 b 600 278 606 292 603 285 b 501 107 576 217 544 158 b 304 -104 439 33 372 -35 b 111 -356 230 -180 167 -265 b 84 -446 92 -386 84 -415 b 86 -481 84 -458 85 -469 b 88 -514 88 -491 88 -503 b 99 -543 89 -526 91 -537 z"},timeSig3:{x_min:19.824321427094187,x_max:540,y_min:-392,y_max:392,ha:784,o:"m 216 -540 b 354 -564 264 -556 310 -564 b 605 -465 445 -564 530 -530 b 729 -161 697 -383 729 -275 b 724 -82 729 -135 727 -108 b 589 95 716 -1 670 62 b 523 114 567 102 546 108 b 750 418 606 213 677 315 b 778 503 769 444 778 472 b 773 540 778 514 776 527 b 750 564 769 557 762 564 b 736 562 746 564 742 563 b 641 552 704 553 672 552 b 402 554 562 552 481 554 l 346 554 b 84 546 258 554 170 554 b 36 501 55 543 40 531 b 29 412 30 472 32 442 b 52 384 27 393 32 384 l 56 384 b 210 392 107 389 158 392 l 602 392 b 354 108 523 285 445 192 b 246 -65 300 58 246 12 b 252 -108 246 -78 248 -92 l 252 -111 b 264 -141 251 -122 251 -135 b 291 -132 274 -145 284 -140 b 425 -72 328 -95 377 -84 b 475 -65 442 -68 459 -65 b 592 -108 517 -65 557 -79 b 645 -179 615 -125 645 -147 b 642 -194 645 -184 644 -189 b 485 -376 616 -278 569 -344 b 361 -399 444 -392 402 -399 b 151 -340 289 -399 219 -376 b 88 -275 122 -323 98 -310 b 71 -249 86 -268 85 -249 b 63 -251 68 -249 66 -249 b 36 -288 48 -255 36 -266 b 55 -423 33 -336 45 -377 b 101 -482 60 -448 78 -468 b 216 -540 138 -504 174 -526 z"},timeSig4:{x_min:20,x_max:633.0785282750762,y_min:-489.59088556716864,y_max:491.18559127100053,ha:980.7764768381692,o:"m 608 -704 b 641 -684 622 -708 634 -696 b 667 -602 660 -660 662 -631 b 685 -190 683 -465 680 -327 l 685 -176 b 831 -127 736 -166 783 -148 b 912 0 901 -94 913 -76 b 886 53 912 36 904 52 b 848 40 877 53 864 49 l 838 36 b 687 -13 789 14 739 -3 b 681 177 687 50 684 114 b 672 338 678 230 677 285 b 654 373 671 350 672 373 b 622 340 636 373 624 361 b 615 262 621 314 613 288 b 619 -22 616 167 619 72 b 569 -22 602 -23 585 -23 b 305 -3 481 -16 395 -1 b 210 -9 274 -3 242 -4 b 301 163 242 52 268 108 b 513 552 377 288 459 412 b 536 652 526 585 536 618 b 533 683 536 662 534 672 b 520 707 531 691 531 707 b 487 693 508 708 494 704 b 474 668 482 684 477 677 b 384 490 454 603 418 547 b 253 281 343 419 295 351 b 73 -13 194 181 145 78 b 29 -108 50 -42 29 -72 b 37 -147 29 -121 32 -134 b 50 -186 43 -160 50 -173 b 68 -216 52 -207 56 -215 b 92 -207 73 -216 82 -213 b 288 -166 156 -180 220 -166 b 556 -186 377 -166 467 -180 b 586 -189 566 -187 576 -187 b 616 -186 596 -189 606 -189 b 606 -432 613 -268 612 -350 b 596 -625 603 -495 596 -559 b 598 -670 596 -641 596 -655 b 608 -704 598 -683 596 -700 z"},timeSig5:{x_min:19.663871085403297,x_max:583,y_min:-389,y_max:389,ha:778,o:"m 132 -536 b 249 -560 168 -553 209 -559 b 507 -462 351 -560 454 -514 b 677 -183 588 -384 642 -289 b 694 -85 688 -150 694 -117 b 540 138 694 12 642 94 b 422 173 501 154 462 167 b 400 187 408 174 400 177 b 405 202 400 190 402 196 b 428 284 416 228 426 255 b 469 312 431 307 442 312 b 757 372 569 312 662 343 b 840 490 821 392 840 432 b 812 560 840 540 834 560 b 763 546 801 560 785 556 b 757 543 762 546 759 544 b 465 484 665 505 570 484 b 396 484 452 484 425 487 b 353 454 377 482 366 474 b 281 300 323 405 304 351 b 245 164 262 255 245 212 b 246 144 245 158 246 151 b 233 63 249 115 243 89 b 225 35 228 50 225 40 b 264 14 225 22 236 19 b 445 -26 325 7 387 0 b 569 -151 501 -52 547 -89 b 575 -180 573 -161 575 -170 b 527 -275 575 -217 547 -245 b 347 -367 484 -334 419 -367 b 261 -351 318 -367 289 -363 b 95 -300 206 -333 154 -307 b 55 -321 73 -297 65 -302 b 29 -468 29 -367 40 -419 b 56 -505 26 -482 36 -500 b 132 -536 82 -514 108 -524 z"},timeSig6:{x_min:20,x_max:565,y_min:-363,y_max:363,ha:726,o:"m 390 -518 b 621 -458 469 -507 549 -494 b 814 -134 753 -390 814 -281 b 652 59 814 -16 750 58 b 580 48 629 59 606 55 b 233 -334 392 -9 276 -138 b 115 -228 181 -314 143 -278 b 98 -160 104 -206 98 -183 b 107 -109 98 -144 101 -127 b 167 37 124 -59 145 -12 b 508 340 236 189 347 292 b 575 353 530 347 553 353 b 648 327 600 353 625 346 b 665 320 654 321 661 320 b 687 336 674 320 681 325 b 703 405 697 359 703 382 b 684 472 703 429 697 451 b 593 523 664 504 631 521 b 576 521 588 523 582 523 b 297 403 472 508 380 465 b 115 177 217 344 164 264 b 29 -121 60 82 29 -17 b 53 -278 29 -173 36 -225 b 226 -497 82 -374 131 -454 b 347 -523 265 -514 305 -523 b 390 -518 361 -523 376 -521 z m 351 -357 b 312 -351 337 -356 320 -363 b 325 -315 304 -340 320 -327 b 543 -120 373 -222 448 -158 b 622 -104 570 -108 596 -102 b 717 -132 655 -104 687 -112 b 740 -167 732 -143 740 -153 b 730 -196 740 -176 737 -184 b 563 -321 690 -258 634 -300 b 359 -357 497 -341 428 -354 z"},timeSig7:{x_min:20.3617407597707,x_max:592,y_min:-345,y_max:345,ha:690,o:"m 253 -497 b 318 -485 276 -497 297 -487 b 366 -441 348 -482 360 -468 b 487 -104 390 -323 433 -210 b 835 403 580 82 701 246 b 852 436 847 416 852 428 b 815 467 852 451 840 461 b 762 474 798 471 779 474 b 674 445 732 474 701 465 b 603 410 652 431 628 420 b 383 360 533 379 459 360 b 200 435 315 360 249 382 b 88 494 168 469 131 485 b 66 497 81 495 73 497 b 33 484 52 497 39 492 b 50 436 22 469 39 451 b 295 310 114 360 199 324 b 406 301 331 304 369 301 b 593 324 468 301 530 308 b 585 307 589 314 588 310 b 265 -249 451 137 338 -46 b 207 -442 242 -312 223 -377 b 204 -462 206 -449 204 -456 b 253 -497 204 -487 220 -497 z"},timeSig8:{x_min:20,x_max:504.15101530718516,y_min:-428,y_max:428,ha:856,o:"m 265 -616 b 289 -615 274 -616 281 -616 b 710 -271 492 -592 657 -485 b 726 -148 721 -229 727 -187 b 585 108 726 -48 687 42 b 572 127 576 114 573 120 b 576 144 572 132 575 138 b 598 301 590 196 598 249 b 586 413 598 338 593 376 b 356 616 559 531 467 616 b 233 582 317 616 275 606 b 29 233 101 505 29 384 b 104 9 29 153 46 72 b 189 -48 127 -16 160 -27 b 92 -158 141 -73 114 -114 b 37 -343 63 -217 50 -279 b 33 -390 35 -359 33 -374 b 265 -616 33 -524 148 -616 z m 258 105 b 124 148 215 105 167 117 b 96 196 105 163 96 177 b 99 217 96 202 96 209 b 197 384 120 281 151 337 b 350 451 242 429 297 451 b 516 364 412 451 472 422 b 530 331 523 354 530 343 l 530 327 l 530 320 b 468 151 520 261 507 200 b 419 122 455 135 442 125 b 258 105 370 117 320 105 z m 328 -438 b 158 -276 233 -436 160 -359 b 166 -239 158 -264 161 -252 b 230 -157 176 -203 202 -179 b 367 -72 274 -125 320 -98 b 448 -49 396 -56 423 -49 b 562 -118 491 -49 528 -72 b 611 -251 590 -157 611 -199 b 569 -341 611 -288 595 -318 b 328 -438 500 -402 416 -432 z"},timeSig9:{x_min:20,x_max:494,y_min:-421,y_max:421,ha:842,o:"m 235 -606 b 361 -564 275 -606 318 -593 b 619 -229 487 -482 566 -366 b 706 127 664 -114 694 4 b 711 233 708 163 711 197 b 700 346 711 271 708 308 b 389 606 658 517 530 606 b 351 605 376 606 364 606 b 56 272 171 586 56 441 b 96 98 56 216 69 156 b 334 -53 144 -3 238 -53 b 544 36 408 -53 484 -24 b 652 176 586 78 622 124 b 631 71 645 141 639 105 b 467 -302 599 -63 562 -196 b 271 -442 412 -364 354 -422 b 225 -448 255 -446 239 -448 b 95 -305 148 -448 98 -395 b 89 -255 95 -288 94 -271 b 73 -233 86 -246 85 -233 b 52 -248 65 -233 56 -239 b 29 -317 42 -271 30 -291 b 49 -448 29 -361 40 -405 b 235 -606 69 -541 144 -606 z m 340 104 b 144 209 264 108 194 141 b 127 258 132 225 127 240 b 137 297 127 271 130 284 b 366 449 184 396 269 449 b 517 408 415 449 467 436 b 595 348 546 392 572 372 b 616 305 608 336 616 321 b 609 281 616 298 613 289 b 340 104 557 184 477 104 z"},timeSigCommon:{x_min:20,x_max:585,y_min:-298,y_max:294.49658092772603,ha:592.496580927726,o:"m 444 -405 b 829 -45 626 -346 740 -207 b 842 26 842 -23 842 1 b 821 58 842 39 841 58 b 795 40 811 58 802 48 b 765 3 785 29 773 16 b 469 -223 690 -104 596 -183 b 354 -242 431 -235 392 -242 b 180 -177 292 -242 235 -223 b 135 -99 154 -157 140 -131 b 132 -59 134 -85 132 -72 b 141 7 132 -37 135 -16 b 449 274 189 160 297 243 b 477 278 459 276 468 276 b 546 203 517 278 539 253 b 517 157 550 177 533 166 b 485 143 507 153 497 143 l 482 143 b 467 148 478 143 472 144 b 374 183 438 170 406 181 b 264 118 333 183 292 161 b 238 48 246 92 238 69 b 261 -9 238 29 245 10 b 383 -73 287 -39 337 -73 b 412 -68 392 -73 402 -72 b 631 164 526 -27 586 59 b 649 252 644 193 649 222 b 636 328 649 278 645 304 b 504 423 615 400 579 429 b 242 318 408 415 317 387 b 29 -158 104 190 29 33 b 30 -176 29 -164 29 -170 b 115 -364 42 -246 52 -315 b 307 -429 177 -410 240 -429 b 444 -405 351 -429 397 -420 z"},timeSigCutCommon:{x_min:20,x_max:695,y_min:-687.0379164869064,y_max:687,ha:1374.0379164869064,o:"m 564 -989 b 595 -945 585 -991 589 -963 l 599 -922 b 605 -628 600 -824 603 -726 l 609 -399 b 878 -251 706 -363 798 -320 b 996 -85 932 -204 976 -153 b 1001 -63 998 -78 1001 -71 b 989 -46 1001 -56 998 -49 b 978 -43 985 -45 982 -43 b 950 -59 968 -43 959 -49 b 733 -216 894 -132 815 -177 b 611 -259 694 -235 652 -249 b 616 -20 612 -179 615 -99 b 680 29 642 -7 665 9 b 698 43 685 36 690 40 b 870 251 792 82 840 160 b 877 294 874 265 877 279 b 818 410 877 338 855 382 b 683 458 779 442 730 448 b 625 468 664 462 644 465 l 625 514 b 638 958 626 662 636 811 b 626 989 638 979 635 989 b 603 981 621 989 613 986 b 422 840 534 945 481 888 b 412 805 412 832 413 818 b 426 713 410 773 420 743 b 445 678 429 690 435 678 b 474 691 452 678 461 683 b 563 755 503 710 530 732 b 564 724 564 740 564 733 b 559 469 563 639 560 554 b 462 454 526 469 494 464 b 112 143 302 399 199 281 b 33 -94 66 71 45 -10 b 29 -148 30 -112 29 -131 b 105 -351 29 -223 52 -291 b 359 -455 171 -426 258 -451 b 517 -431 409 -451 464 -446 l 539 -422 l 539 -477 b 533 -739 536 -563 539 -651 b 530 -824 531 -768 530 -795 b 546 -948 530 -865 533 -907 b 564 -989 552 -962 543 -989 z m 410 -288 b 193 -197 328 -288 253 -264 b 141 -60 160 -161 141 -108 b 157 6 141 -35 147 -12 b 259 158 189 58 217 112 b 438 291 311 215 364 266 b 528 305 468 301 498 305 b 554 304 537 305 546 304 b 553 212 554 274 554 242 b 426 115 498 199 446 164 b 416 68 419 99 416 84 b 425 12 416 49 420 30 b 474 -39 432 -17 448 -32 b 513 -43 487 -42 498 -43 b 547 -40 524 -43 536 -42 l 543 -272 b 461 -285 516 -278 488 -281 b 410 -288 444 -287 426 -288 z m 694 197 b 668 203 685 197 677 199 b 621 216 654 210 638 215 b 622 294 622 242 622 268 b 706 268 651 287 678 278 b 746 235 721 261 734 249 b 752 222 749 230 752 226 b 743 213 752 219 749 215 b 694 197 727 206 711 197 z"},timeSigPlus:{x_min:0,x_max:661,y_min:-358,y_max:358,ha:716,o:"m 605 -516 b 629 -490 624 -516 629 -507 b 628 -475 629 -485 628 -481 b 613 -131 624 -405 616 -174 b 612 -96 612 -114 612 -96 l 647 -98 b 897 -115 730 -99 814 -109 b 940 -89 919 -117 935 -109 b 952 -24 946 -69 952 -46 b 948 9 952 -14 950 -3 b 912 39 942 26 933 37 b 609 60 822 48 609 60 b 616 392 609 60 608 291 b 567 488 619 436 605 467 b 511 516 550 498 531 514 b 498 511 507 516 503 514 b 478 446 475 501 480 469 b 467 150 474 348 469 249 b 465 59 465 121 465 59 l 372 49 b 73 14 272 36 173 24 b 49 13 65 13 56 13 b 0 -33 9 13 0 6 b 60 -141 0 -117 6 -140 b 112 -135 73 -141 91 -140 b 413 -102 213 -125 314 -112 b 464 -98 441 -99 464 -98 l 464 -145 b 477 -456 464 -249 468 -353 b 526 -510 478 -488 491 -507 b 589 -513 546 -511 569 -510 b 605 -516 595 -514 600 -516 z"},timeSigPlusSmall:{x_min:0,x_max:418,y_min:-197,y_max:199,ha:396,o:"m 301 -284 b 330 -238 320 -284 324 -255 b 348 -46 350 -176 341 -111 b 374 -20 351 -27 356 -23 b 481 -17 409 -16 445 -17 b 566 -9 510 -17 537 -16 b 602 3 579 -7 602 -16 b 566 29 602 19 582 24 b 526 33 553 32 539 33 b 384 39 478 36 432 39 b 356 62 363 39 356 42 l 356 68 b 359 177 359 104 359 141 l 359 251 b 341 287 359 264 361 285 b 311 255 324 287 314 272 b 310 228 311 246 310 236 l 301 69 b 275 39 301 49 295 39 l 271 39 b 210 40 251 40 230 40 b 167 39 196 40 181 40 b 89 40 141 37 115 40 b 24 30 68 40 46 37 b 0 17 17 27 0 30 l 0 13 b 27 -17 3 0 7 -13 b 91 -22 49 -22 71 -22 b 153 -22 115 -22 137 -20 l 275 -22 b 295 -40 289 -22 295 -27 l 295 -48 b 288 -235 288 -109 287 -171 b 287 -264 288 -243 287 -253 b 301 -284 287 -275 289 -284 z"},timeSigMinus:{x_min:0,x_max:662,y_min:-54,y_max:55,ha:109,o:"m 39 -78 b 49 -76 42 -78 45 -76 b 452 -75 94 -75 272 -75 b 861 -76 632 -75 814 -76 b 953 -20 927 -79 953 -66 b 948 27 953 -7 950 9 b 946 37 948 30 948 35 b 896 79 940 63 929 79 b 471 78 827 78 648 78 l 42 78 b 0 37 14 78 0 69 b 23 -66 0 0 17 -32 b 39 -78 24 -75 32 -76 z"},timeSigParensRight:{x_min:0,x_max:274.26483738379414,y_min:-722.6326530612245,y_max:725,ha:1447.6326530612246,o:"m 37 -1038 b 69 -1031 48 -1044 59 -1038 b 88 -1015 76 -1027 82 -1021 b 164 -886 120 -976 147 -933 b 333 -351 233 -711 292 -534 b 395 118 366 -204 399 -59 b 389 245 392 144 392 194 b 120 996 369 521 265 766 b 68 1044 99 1030 84 1044 b 19 988 50 1044 36 1024 b 0 922 7 965 0 945 b 20 858 0 901 6 881 b 259 215 141 660 236 449 b 271 -1 266 143 271 71 b 252 -239 271 -82 265 -161 b 148 -667 228 -384 183 -524 b 39 -1009 120 -785 66 -893 b 33 -1031 37 -1017 33 -1024 b 37 -1038 33 -1034 35 -1037 z"},timeSigParensRightSmall:{x_min:0,x_max:154.4025307335204,y_min:-422,y_max:422,ha:844,o:"m 43 -608 b 60 -598 48 -608 53 -605 b 117 -511 82 -572 102 -543 b 222 23 193 -350 219 -177 b 213 166 225 55 216 109 b 115 531 206 294 174 416 b 45 603 99 562 76 588 b 30 608 39 606 35 608 b 10 598 23 608 17 603 b 0 546 3 590 0 570 b 23 451 0 507 9 458 b 102 351 66 429 84 390 b 167 42 150 252 167 148 b 163 -49 167 12 166 -19 b 35 -449 151 -192 121 -330 b 14 -504 22 -467 14 -485 b 17 -527 14 -511 16 -520 l 30 -590 b 43 -608 33 -603 37 -608 z"},timeSigParensLeft:{x_min:.5555555555555556,x_max:399.6216117372966,y_min:-728,y_max:728,ha:1456,o:"m 562 -1048 b 573 -1043 566 -1048 570 -1047 b 553 -988 582 -1025 564 -1004 b 472 -884 527 -952 497 -920 b 210 -354 366 -717 275 -541 b 148 -6 170 -240 148 -124 b 160 148 148 45 153 96 b 315 678 189 331 242 508 b 431 901 350 755 380 834 b 459 950 451 926 461 939 b 435 995 459 962 451 972 b 364 1048 405 1034 383 1048 b 305 996 343 1048 325 1028 b 127 624 226 881 174 753 b 1 30 56 432 9 235 b 1 -32 1 9 0 -12 b 180 -629 13 -245 92 -438 b 363 -936 230 -739 298 -835 b 526 -1041 402 -995 448 -1041 b 562 -1048 537 -1040 552 -1048 z"},timeSigParensLeftSmall:{x_min:0,x_max:173.45497224367904,y_min:-405,y_max:404,ha:809,o:"m 197 -583 b 222 -553 212 -582 219 -566 b 229 -497 226 -534 229 -516 b 213 -425 229 -472 225 -448 b 102 -177 173 -344 132 -262 b 62 30 78 -111 58 -42 b 91 183 66 82 75 134 b 215 426 118 271 156 356 b 249 552 246 465 252 505 b 230 582 249 563 246 582 b 197 563 219 582 206 576 b 71 356 144 500 105 429 b 0 50 26 259 3 158 b 13 -112 4 -3 7 -58 b 176 -559 29 -275 105 -416 b 196 -583 180 -569 186 -583 z"},noteheadDoubleWhole:{x_min:-.4444444444444444,x_max:614.1875,y_min:-223.03296670127517,y_max:223,ha:446.0329667012752,o:"m 35 -321 b 62 -266 58 -318 58 -288 l 62 -194 b 63 50 62 -114 63 -32 b 60 189 63 96 63 143 b 43 300 59 226 60 265 b 29 321 40 308 39 321 l 26 321 b 0 292 13 318 0 310 b 0 248 0 278 -1 262 b 6 147 4 215 6 181 b 4 48 6 114 4 81 b 6 0 4 32 6 16 b 7 -36 7 -12 7 -24 l 7 -52 b 6 -156 7 -86 6 -121 b 19 -275 6 -196 9 -236 b 35 -321 23 -291 16 -323 z m 847 -314 b 871 -288 860 -315 867 -300 b 884 -187 881 -255 886 -222 b 876 115 878 -86 876 14 b 877 255 876 161 876 209 b 868 291 877 268 873 279 b 855 304 867 301 863 304 b 844 301 852 304 848 304 b 822 265 825 292 822 278 b 824 251 822 259 822 255 b 822 170 822 225 822 197 l 822 -20 b 835 -284 827 -86 825 -186 b 847 -314 837 -295 835 -311 z m 757 -291 b 793 -171 796 -255 792 -212 b 795 -49 795 -131 795 -91 b 786 207 795 36 791 121 b 779 240 786 217 783 229 b 766 258 776 246 776 258 b 762 256 765 258 763 256 b 739 236 752 253 740 252 b 733 177 737 216 732 197 b 737 20 737 125 739 73 l 737 -107 b 740 -202 737 -138 739 -170 b 757 -291 740 -230 743 -261 z m 128 -261 b 144 -251 135 -264 141 -256 b 158 -203 156 -236 157 -220 b 161 -137 161 -181 161 -158 b 157 30 161 -81 157 -26 b 158 76 157 45 157 60 l 158 101 b 156 225 158 141 158 183 b 137 253 156 235 154 253 l 134 253 b 109 222 120 251 109 242 b 104 91 108 179 104 134 b 108 -58 104 42 109 -9 b 107 -105 108 -73 108 -89 b 105 -127 107 -112 107 -120 b 118 -245 105 -167 114 -204 b 128 -261 118 -252 121 -259 z m 488 -242 b 693 -79 595 -249 685 -166 l 693 -55 b 690 0 693 -36 691 -17 b 540 187 684 84 621 164 b 449 200 508 196 480 200 b 210 104 363 200 282 163 b 186 56 196 92 186 76 b 207 -82 186 9 192 -37 b 300 -204 225 -132 248 -181 b 488 -242 356 -229 415 -240 z m 490 -88 b 449 -86 477 -88 464 -88 b 287 -56 399 -85 341 -78 b 258 -33 275 -52 258 -48 b 282 -7 258 -20 272 -13 b 458 43 340 23 399 43 b 580 14 497 43 537 35 b 618 -20 606 1 619 -9 b 592 -58 618 -30 609 -42 b 490 -88 562 -82 528 -88 z"},noteheadWhole:{x_min:0,x_max:380.16649762501584,y_min:-186.17102907059297,y_max:165,ha:351.17102907059297,o:"m 547 40 b 223 -268 543 -151 367 -259 b 102 -233 180 -271 143 -248 l 62 -216 b 0 -127 22 -197 0 -166 b 6 -91 0 -115 1 -104 b 122 141 33 -9 69 71 b 327 238 170 204 249 238 b 514 158 397 238 467 212 b 547 40 544 125 549 84 z m 248 -107 b 384 -63 295 -102 341 -88 b 426 -23 402 -53 415 -40 b 435 3 432 -14 435 -6 b 413 32 435 14 428 24 b 301 73 376 49 343 73 b 272 69 291 73 282 72 b 121 -35 207 53 157 20 b 111 -58 117 -42 111 -50 b 125 -75 111 -65 115 -71 b 248 -107 164 -89 202 -107 z"},noteheadHalf:{x_min:0,x_max:334,y_min:-174,y_max:175,ha:349,o:"m 480 56 b 167 -251 478 -115 331 -251 b 94 -242 143 -251 118 -248 b 9 -141 43 -229 20 -192 b 0 -68 3 -115 0 -91 b 284 249 0 95 127 200 b 304 252 289 251 297 252 b 481 78 374 252 481 170 b 480 56 481 71 481 63 z m 213 -102 b 399 6 274 -81 341 -48 b 402 17 400 7 402 13 b 399 27 402 22 400 26 b 311 94 373 53 353 88 b 292 95 305 95 300 95 b 130 27 230 95 181 55 b 69 -62 98 9 62 -29 b 161 -98 76 -98 128 -91 b 213 -102 174 -101 186 -101 z"},noteheadBlack:{x_min:0,x_max:334.04644433966797,y_min:-164,y_max:164,ha:328,o:"m 112 -233 b 141 -236 122 -235 131 -236 b 481 104 279 -236 485 -48 b 403 222 477 141 478 192 b 334 236 382 232 359 236 b 1 -59 180 236 13 59 b 0 -85 1 -68 0 -76 b 112 -233 0 -157 32 -215 z"},noteheadXDoubleWhole:{x_min:0,x_max:730,y_min:-266,y_max:267,ha:533,o:"m 1018 -373 b 1032 -361 1025 -376 1028 -367 b 1051 -287 1047 -338 1051 -314 b 1050 -252 1051 -276 1051 -264 b 1030 186 1031 -107 1037 40 b 1031 266 1028 213 1031 239 b 1018 363 1031 300 1028 331 b 1005 384 1015 373 1017 384 l 1004 384 b 984 363 992 384 986 373 b 982 343 982 356 982 348 b 981 235 982 307 981 271 b 996 -285 981 60 986 -112 b 1009 -360 998 -311 1005 -336 b 1018 -373 1011 -364 1014 -373 z m 16 -383 b 49 -328 39 -367 48 -350 b 69 56 58 -202 62 -73 b 75 212 72 107 72 160 b 78 278 76 233 78 255 b 59 382 78 312 73 347 b 29 328 33 372 29 350 b 13 -29 29 209 23 88 b 3 -222 7 -95 10 -157 b 0 -265 1 -236 0 -252 b 16 -383 0 -304 6 -343 z m 923 -314 b 955 -240 948 -289 952 -265 b 965 -65 962 -181 965 -125 b 963 0 965 -45 965 -22 b 962 111 960 37 962 73 b 953 240 962 154 960 197 b 939 275 952 253 952 275 b 913 239 924 274 913 258 b 913 173 914 217 913 194 b 914 135 913 160 913 147 b 920 27 919 98 920 63 b 909 -128 920 -26 917 -78 b 906 -179 906 -147 906 -163 b 923 -314 906 -223 913 -266 z m 121 -301 b 143 -272 134 -301 138 -284 b 147 -255 145 -268 145 -261 b 173 160 161 -117 166 22 b 173 233 173 184 174 209 b 157 264 171 243 171 264 b 137 235 143 264 138 249 b 132 207 135 226 132 216 b 121 43 128 153 124 96 b 105 -186 117 -36 105 -111 b 111 -269 105 -215 107 -242 b 121 -301 114 -281 104 -300 z m 210 -238 b 376 -193 274 -239 327 -226 b 471 -134 406 -173 439 -154 b 534 -94 491 -120 513 -107 b 671 -192 579 -127 624 -161 b 733 -226 691 -204 708 -228 b 746 -225 737 -228 742 -226 b 845 -204 782 -226 814 -213 b 868 -194 854 -203 865 -203 b 852 -173 871 -183 860 -179 b 661 -40 789 -128 724 -84 b 642 -27 654 -36 648 -32 b 861 114 716 17 791 63 b 886 132 870 120 886 121 l 886 137 b 852 164 883 151 867 161 b 776 176 827 170 801 176 b 685 145 744 176 714 168 b 530 45 638 107 583 76 b 403 132 487 73 444 101 b 279 176 364 161 324 171 b 223 160 259 176 229 176 b 258 115 215 141 242 127 b 431 -17 314 71 372 26 b 173 -196 341 -73 253 -130 b 157 -209 168 -200 157 -203 b 158 -215 157 -212 157 -215 b 183 -236 166 -223 168 -235 b 210 -238 194 -236 206 -239 z m 768 -207 b 533 -40 687 -150 609 -94 b 321 -173 462 -85 392 -130 b 261 -194 304 -184 287 -196 b 239 -193 253 -196 246 -194 b 387 -95 294 -157 340 -125 b 505 -20 426 -71 465 -45 l 484 -4 b 353 89 441 27 396 56 b 320 115 341 96 330 107 b 297 141 311 124 297 132 b 300 148 297 144 298 145 b 336 135 311 164 324 143 b 528 -4 400 89 464 42 l 723 121 b 770 140 737 131 753 138 b 792 132 779 140 789 141 b 778 115 795 122 783 120 b 586 -6 714 75 651 35 b 557 -24 576 -13 567 -19 b 726 -147 613 -66 670 -109 b 768 -207 744 -161 765 -173 z"},noteheadXWhole:{x_min:0,x_max:506,y_min:-143.0823320899293,y_max:144,ha:287.0823320899293,o:"m 53 -206 b 219 -163 117 -207 170 -196 b 314 -102 249 -141 282 -122 b 377 -63 334 -89 356 -76 b 514 -161 422 -96 468 -128 b 576 -196 534 -174 552 -196 b 589 -193 580 -196 585 -196 b 688 -174 625 -194 657 -181 b 711 -158 698 -171 711 -173 b 696 -143 711 -151 701 -147 b 503 -9 632 -98 567 -52 l 485 4 b 704 145 559 49 634 95 b 729 164 711 150 729 151 l 729 168 b 696 196 726 183 710 193 b 621 207 671 202 645 207 b 528 177 589 207 557 200 b 373 76 480 140 426 108 b 246 164 330 104 287 132 b 122 206 207 193 167 203 b 66 192 102 207 72 207 b 99 147 58 173 85 158 b 274 14 157 102 215 58 b 16 -164 184 -42 96 -98 b 0 -179 12 -168 0 -170 b 1 -183 0 -180 0 -183 b 26 -204 6 -193 12 -204 b 53 -206 37 -206 49 -206 z m 611 -177 b 376 -9 530 -118 452 -63 l 164 -143 b 104 -164 147 -154 130 -164 b 82 -161 96 -164 89 -164 b 230 -65 137 -125 183 -95 l 347 12 b 327 26 341 16 334 22 l 196 121 b 163 147 184 128 173 137 b 140 173 154 154 140 163 b 143 180 140 176 141 177 b 179 166 154 194 167 174 l 372 27 l 566 153 b 613 171 580 161 596 170 b 635 160 624 171 635 174 b 621 147 635 153 626 150 l 429 24 b 400 6 419 19 409 13 b 569 -117 456 -35 513 -75 b 611 -177 588 -130 608 -143 z"},noteheadXHalf:{x_min:0,x_max:421,y_min:-145.51844828189743,y_max:151,ha:296.51844828189746,o:"m 490 -209 b 539 -207 505 -207 521 -207 b 606 -209 560 -207 583 -209 b 598 -196 602 -203 600 -199 l 406 -19 l 540 130 b 547 144 546 135 547 140 b 536 156 547 148 543 153 b 488 192 518 166 503 176 b 416 217 471 209 444 217 b 323 180 380 217 344 204 l 264 115 b 239 138 256 122 248 131 b 33 197 180 196 108 200 b 3 186 23 197 6 193 b 19 154 -1 174 10 163 b 171 12 69 107 120 59 b 19 -157 120 -45 69 -101 b 0 -177 14 -163 0 -166 b 1 -181 0 -179 0 -180 b 39 -203 9 -197 22 -203 l 186 -203 b 197 -202 190 -202 193 -200 l 213 -202 b 262 -180 228 -202 246 -199 l 314 -122 b 490 -209 363 -170 412 -216 z m 435 -148 b 291 -30 379 -112 337 -69 l 213 -118 b 190 -137 207 -125 202 -137 b 145 -111 173 -130 154 -127 b 160 -79 137 -98 151 -88 b 238 16 184 -48 212 -16 b 141 99 204 43 173 72 l 124 117 b 115 132 121 121 115 127 b 118 137 115 134 117 137 b 141 132 127 147 135 138 l 253 36 b 347 150 285 75 315 112 b 370 164 354 160 363 163 b 403 145 382 164 393 156 b 416 127 412 140 416 132 b 405 102 416 118 412 111 l 307 -10 b 413 -105 343 -42 379 -73 b 435 -148 425 -115 436 -125 z"},noteheadXBlack:{x_min:0,x_max:289,y_min:-156,y_max:157,ha:313,o:"m 23 -225 b 69 -204 40 -223 56 -219 b 137 -131 92 -180 115 -157 l 209 -50 b 377 -197 264 -101 321 -148 b 403 -210 384 -203 393 -210 l 408 -210 b 416 -192 416 -207 416 -199 l 416 -186 b 403 -148 416 -171 413 -158 b 344 -81 384 -125 367 -101 b 252 -1 312 -55 282 -29 b 377 157 297 49 340 101 b 402 202 387 170 402 187 b 395 217 402 207 400 213 b 376 226 389 223 382 226 b 334 192 360 226 346 204 b 206 42 289 143 248 94 b 96 161 167 81 131 120 b 60 193 86 174 76 189 b 33 206 52 196 42 206 b 22 199 29 206 26 204 b 10 173 14 190 10 181 b 22 147 10 166 14 157 b 148 7 62 98 104 52 b 164 -7 154 1 158 -3 b 10 -189 111 -66 55 -122 b 0 -212 6 -197 0 -203 b 1 -217 0 -213 0 -216 b 23 -225 4 -226 14 -222 z"},noteheadCircleXDoubleWhole:{x_min:0,x_max:437,y_min:-220,y_max:219.03988406941295,ha:439.03988406941295,o:"m 10 -304 b 40 -206 43 -275 37 -239 b 55 168 48 -81 50 45 b 53 269 56 202 55 236 b 33 315 52 287 46 314 b 3 269 9 317 4 291 b 0 239 1 259 0 249 l 0 -196 b 10 -304 1 -232 7 -268 z m 592 -317 b 621 -220 619 -287 621 -253 b 622 -121 622 -187 622 -154 b 625 -20 622 -88 622 -55 b 629 101 628 20 629 60 b 628 220 629 141 628 181 b 618 253 628 232 625 243 b 608 275 613 259 616 274 b 602 272 606 275 603 275 b 575 249 590 269 575 266 l 575 246 b 573 222 575 239 573 230 l 573 -50 b 592 -317 575 -137 570 -225 z m 79 -285 b 114 -6 96 -261 109 -131 b 117 -63 114 -24 114 -45 b 249 -242 124 -151 166 -212 b 324 -256 275 -252 300 -256 b 504 -137 406 -256 478 -209 b 505 -265 504 -180 505 -222 b 513 -282 505 -269 510 -275 b 533 -248 526 -272 528 -261 b 540 -174 539 -223 540 -199 l 540 -127 b 553 207 546 -16 549 95 b 543 232 553 216 554 232 b 518 207 530 233 518 222 b 511 118 520 177 510 148 l 511 92 b 330 216 488 174 420 223 b 301 215 320 216 311 216 b 122 65 202 204 151 163 b 114 9 117 46 114 27 b 115 75 114 32 115 53 b 101 248 115 157 109 228 b 76 206 78 242 76 225 l 76 91 b 75 -26 76 52 76 13 b 69 -189 72 -81 66 -134 b 79 -285 71 -219 76 -249 z m 317 4 b 219 109 285 40 252 75 l 209 120 b 331 153 248 141 289 151 b 420 137 360 153 390 147 b 446 120 435 131 442 127 l 436 108 l 328 -7 z m 215 -131 b 216 -101 215 -122 215 -114 b 219 -45 217 -82 219 -63 b 197 94 219 3 213 49 l 197 95 b 199 94 199 95 199 94 l 310 -27 b 233 -108 285 -55 259 -81 z m 442 -141 b 432 -122 441 -134 436 -128 l 344 -26 l 426 58 l 445 81 b 444 75 445 78 444 76 b 428 -13 433 46 428 16 b 446 -104 428 -45 433 -75 b 452 -122 449 -111 452 -117 b 442 -141 452 -131 448 -137 z m 323 -190 b 272 -180 305 -187 288 -184 b 217 -158 239 -173 225 -168 l 327 -45 b 330 -48 328 -46 328 -48 b 432 -150 363 -82 393 -121 b 323 -190 400 -174 364 -189 z"},noteheadCircleXWhole:{x_min:0,x_max:323,y_min:-190,y_max:184.44625787787314,ha:374.4462578778731,o:"m 156 -258 b 240 -274 184 -268 213 -274 b 455 -101 347 -274 441 -202 b 465 19 462 -60 465 -22 b 464 71 465 36 465 52 b 246 265 455 194 370 274 b 216 264 236 265 226 264 b 12 94 102 251 45 203 b 0 13 3 66 1 40 b 4 -55 0 -10 3 -32 b 156 -258 14 -154 60 -222 z m 245 10 b 233 23 242 14 238 19 b 121 144 196 65 158 104 l 109 154 b 249 192 156 179 202 192 b 351 174 284 192 317 186 b 380 154 366 168 376 163 b 379 153 380 154 380 153 b 369 141 376 148 372 145 b 245 10 327 98 287 53 z m 115 -131 b 118 -96 117 -121 117 -111 b 121 -27 120 -73 121 -50 b 98 124 121 24 115 75 b 96 127 96 125 98 125 b 99 125 98 127 98 125 b 225 -12 140 79 181 33 l 138 -105 b 115 -131 131 -114 122 -121 z m 376 -143 b 363 -121 374 -134 369 -128 b 265 -12 331 -85 298 -48 l 357 85 b 379 111 364 94 372 101 b 377 102 379 108 377 105 b 359 4 364 71 359 37 b 382 -99 359 -32 366 -66 b 387 -121 384 -108 386 -115 b 376 -143 387 -130 382 -135 z m 239 -197 b 181 -187 220 -194 200 -192 b 121 -161 145 -177 128 -173 b 243 -33 161 -118 203 -75 l 248 -36 b 364 -153 285 -75 320 -118 b 239 -197 327 -180 287 -197 z"},noteheadCircleXHalf:{x_min:0,x_max:309,y_min:-179,y_max:179,ha:358,o:"m 232 -258 b 435 -94 328 -258 412 -196 b 445 6 444 -60 445 -27 b 444 69 445 27 445 48 b 258 258 439 170 374 258 l 230 258 l 207 256 b 14 107 111 248 45 202 b 0 12 4 75 0 43 b 12 -82 0 -20 4 -50 b 144 -242 27 -160 69 -212 b 232 -258 174 -252 203 -258 z m 192 60 b 115 141 166 88 141 115 l 108 150 b 226 189 141 173 186 189 b 253 186 236 189 245 187 b 305 180 271 183 288 183 b 192 60 268 140 229 101 z m 56 -78 b 45 6 43 -56 45 -23 b 65 84 49 39 50 45 b 85 121 72 96 78 107 b 95 124 88 124 92 127 b 171 39 120 95 145 68 z m 360 -132 b 348 -112 359 -124 353 -118 l 300 -58 l 387 37 b 410 63 397 48 405 56 b 413 26 412 52 413 40 b 360 -132 413 -42 393 -95 z m 232 -183 b 184 -177 217 -183 202 -181 l 281 -78 b 348 -143 301 -101 323 -122 b 232 -183 318 -168 279 -183 z"},noteheadCircleX:{x_min:0,x_max:344,y_min:-179,y_max:175.12551922594866,ha:354.12551922594866,o:"m 99 -210 b 236 -258 137 -242 186 -258 b 418 -183 305 -258 374 -230 b 495 33 475 -120 495 -48 b 494 66 495 45 494 55 b 302 252 487 183 405 256 b 181 243 262 249 222 248 b 46 171 128 236 79 219 b 0 19 14 127 0 73 b 99 -210 0 -68 35 -156 z m 245 42 l 124 156 b 200 176 145 166 170 173 b 337 183 245 181 291 184 b 377 176 351 183 364 180 b 245 42 333 131 288 86 z m 392 -99 l 285 3 l 400 121 b 418 154 409 131 418 140 b 465 50 448 130 465 94 b 405 -112 462 -17 439 -73 z m 89 -120 b 48 0 56 -82 48 -42 b 89 112 48 35 59 76 b 109 101 96 111 102 108 l 210 7 l 187 -17 b 89 -120 151 -53 125 -82 z m 176 -183 b 127 -163 158 -179 141 -171 l 252 -32 l 372 -144 b 233 -189 334 -173 285 -189 b 176 -183 215 -189 196 -187 z"},noteheadCircledDoubleWhole:{x_min:0,x_max:672,y_min:-291,y_max:291,ha:582,o:"m 27 -419 b 43 -369 37 -403 43 -387 b 49 -82 45 -272 49 -177 b 50 370 50 69 50 219 b 30 419 50 389 50 419 b 7 369 7 419 7 389 b 0 -284 4 151 1 -66 b 16 -418 0 -328 10 -373 z m 945 -374 b 968 -282 963 -343 968 -312 b 966 -245 968 -269 968 -258 b 958 -45 959 -179 962 -111 b 948 262 949 56 952 160 b 936 377 946 301 946 340 b 922 399 933 386 933 399 l 919 397 b 897 374 909 396 899 389 b 894 308 897 353 893 331 b 904 120 899 246 903 183 b 913 -111 907 43 909 -35 b 927 -297 916 -173 919 -235 b 945 -374 930 -320 927 -347 z m 95 -347 b 120 -292 115 -325 117 -310 b 124 -223 122 -269 124 -246 b 122 -141 124 -196 122 -168 b 121 -85 121 -122 121 -104 b 462 -297 170 -209 300 -297 b 727 -219 543 -294 639 -271 b 828 -118 773 -190 808 -157 b 842 -268 831 -168 834 -219 b 851 -288 844 -275 840 -287 b 865 -272 861 -289 863 -279 b 873 -225 871 -256 873 -240 b 873 -171 873 -207 871 -190 b 858 196 868 -48 863 75 b 848 295 857 229 854 262 b 840 315 848 301 850 315 l 837 315 b 816 295 827 314 816 307 b 809 216 815 268 808 243 b 815 102 812 179 814 140 b 672 295 780 176 733 240 b 500 370 621 340 566 370 b 436 361 480 370 459 367 b 120 95 288 321 183 233 l 120 256 b 115 287 120 266 118 276 b 104 305 112 292 115 305 l 101 305 b 82 284 91 304 82 297 b 76 216 81 262 76 239 b 84 -253 78 59 79 -96 b 95 -347 84 -282 89 -311 z m 780 -33 b 779 -24 780 -30 779 -27 b 704 92 766 22 743 62 b 544 173 655 128 599 147 b 400 206 497 194 448 204 b 307 193 369 206 338 202 b 202 118 264 181 226 153 b 235 168 212 135 222 151 b 505 337 302 262 396 312 b 523 338 511 337 517 338 b 611 288 559 338 586 312 b 763 62 678 225 733 151 b 780 -33 776 26 782 -4 z m 435 -88 b 337 -23 387 -88 354 -65 b 333 6 334 -14 333 -6 b 366 86 333 35 344 66 b 456 122 390 111 423 121 b 602 27 517 122 582 88 b 606 1 605 19 606 10 b 575 -49 606 -20 596 -36 b 435 -88 530 -76 481 -82 z m 441 -269 b 194 -96 327 -262 249 -194 b 167 1 176 -62 167 -30 b 177 59 167 22 171 42 b 174 39 176 52 174 46 b 266 -104 174 -27 210 -73 b 511 -151 346 -148 435 -144 l 552 -151 b 740 -104 616 -145 683 -141 b 776 -66 756 -94 769 -81 b 700 -174 766 -105 740 -140 b 441 -269 632 -232 533 -268 z"},noteheadCircledWhole:{x_min:-50,x_max:472,y_min:-231.00750990437078,y_max:232,ha:463.00750990437075,o:"m 289 -333 b 553 -255 370 -330 465 -307 b 680 -62 635 -206 680 -138 b 662 22 680 -36 674 -7 b 500 259 626 112 573 193 b 327 334 448 304 393 334 b 264 325 307 334 287 331 b -59 49 111 284 4 193 b -72 -19 -68 26 -72 4 b 289 -333 -72 -192 84 -334 z m 608 -69 b 605 -60 606 -66 606 -63 b 530 56 592 -14 570 26 b 372 137 482 92 425 111 b 228 170 324 158 275 168 b 134 157 196 170 166 166 b 29 82 91 145 53 117 b 60 132 37 99 49 115 b 333 301 128 226 223 276 b 350 302 338 301 344 302 b 438 252 386 302 413 276 b 590 26 505 189 560 115 b 608 -69 603 -10 608 -40 z m 262 -124 b 164 -59 215 -124 180 -101 b 160 -32 161 -50 160 -42 b 193 50 160 -3 171 30 b 284 86 217 75 251 85 b 429 -9 344 86 409 52 b 433 -36 432 -17 433 -26 b 402 -85 433 -56 423 -72 b 262 -124 357 -112 307 -118 z m 268 -305 b 22 -132 154 -298 76 -230 b -6 -33 3 -98 -6 -65 b 3 23 -6 -14 -3 6 b 1 3 1 16 1 10 b 94 -140 1 -63 37 -109 b 338 -187 173 -184 261 -180 l 379 -187 b 566 -140 444 -181 510 -177 b 602 -102 582 -130 595 -117 b 526 -210 592 -141 567 -176 b 268 -305 459 -268 360 -304 z"},noteheadCircledHalf:{x_min:-50,x_max:393,y_min:-175,y_max:175,ha:350,o:"m 540 39 b 408 187 503 94 464 148 b 259 252 356 223 301 252 b 35 192 160 252 95 229 b -68 50 -17 160 -53 112 b -72 13 -71 37 -72 24 b 69 -204 -72 -79 -1 -161 b 246 -252 125 -238 186 -252 b 500 -164 336 -252 426 -219 b 566 -42 543 -132 566 -88 b 540 39 566 -14 557 14 z m 9 -42 b 12 -68 10 -50 10 -59 b -7 6 3 -46 -4 -22 b 131 189 1 98 55 153 b 243 220 167 206 204 215 b 261 222 249 222 255 222 b 377 161 308 222 341 189 b 435 89 402 141 420 117 b 431 92 433 89 432 91 b 346 120 402 102 372 107 b 253 143 314 135 282 143 b 85 79 193 143 138 115 b 9 -42 45 52 10 13 z m 356 39 b 343 1 356 24 351 12 b 206 -111 304 -46 259 -84 b 181 -118 196 -115 189 -118 b 156 -71 163 -118 154 -102 b 238 35 164 -22 199 9 b 324 66 264 52 294 59 b 356 39 348 71 356 62 z m 488 -78 b 392 -176 471 -125 433 -154 b 246 -225 346 -200 297 -217 b 230 -226 240 -226 235 -226 b 157 -204 203 -226 180 -215 b 78 -154 128 -190 101 -174 b 232 -184 128 -171 180 -184 b 344 -161 269 -184 307 -179 b 491 -39 405 -135 455 -94 b 500 -23 495 -33 497 -29 b 488 -78 500 -40 494 -59 z"},noteheadCircledBlack:{x_min:-70,x_max:326,y_min:-168,y_max:192,ha:360,o:"m 176 -239 b 190 -242 180 -240 186 -240 b 262 -232 213 -242 238 -235 b 469 -19 384 -225 469 -131 b 467 22 469 -6 468 9 b 383 194 455 86 436 151 b 183 276 315 249 251 275 b 32 236 134 276 85 264 b -94 88 -30 207 -75 160 b -101 30 -98 69 -101 49 b 176 -239 -101 -107 9 -251 z m 177 -212 b -30 -27 81 -213 -13 -131 b -33 17 -33 -13 -33 3 b 127 226 -33 111 14 187 b 194 239 151 233 173 238 b 301 203 232 239 266 226 b 364 134 330 184 350 160 b 233 181 341 160 279 180 b 192 171 216 181 202 179 b 13 1 117 131 46 86 b 3 -48 6 -17 3 -33 b 60 -115 3 -79 20 -101 b 203 -135 105 -131 151 -138 b 229 -138 212 -137 220 -137 b 295 -122 251 -138 274 -135 b 400 -33 337 -99 373 -71 b 228 -206 393 -125 330 -192 b 177 -212 209 -209 192 -213 z"},noteheadDoubleWholeSquare:{x_min:0,x_max:474,y_min:-209.39230484541326,y_max:211,ha:420.39230484541326,o:"m 648 -301 b 668 -287 658 -304 665 -295 b 683 -209 678 -262 683 -235 b 677 258 681 -55 678 102 b 672 284 677 266 677 276 b 661 304 670 291 672 304 l 658 304 b 635 279 647 301 635 297 b 629 240 635 266 629 252 l 629 236 b 631 225 629 232 631 228 b 583 194 631 197 611 194 l 528 194 b 125 207 393 194 259 202 b 89 207 114 209 101 206 b 63 210 79 207 71 207 b 52 229 55 213 52 220 b 55 258 52 238 55 248 b 53 266 55 261 55 264 b 36 298 48 276 53 298 l 35 298 b 4 264 14 298 7 284 b 0 187 0 238 0 213 b 4 50 0 143 3 96 b 6 -10 6 30 6 10 b 4 -130 6 -50 4 -91 b 12 -268 4 -176 6 -222 b 19 -287 13 -275 10 -284 b 35 -275 26 -288 30 -281 b 52 -220 50 -261 48 -239 b 75 -199 55 -206 58 -199 l 141 -197 l 274 -197 l 634 -197 b 639 -281 635 -219 636 -251 b 648 -301 641 -288 638 -300 z m 72 -66 b 55 -56 59 -69 55 -65 l 55 -50 b 53 53 55 -16 55 20 b 69 73 53 69 60 72 l 79 72 b 330 65 163 66 246 63 l 592 65 b 634 81 606 65 618 71 b 635 -30 634 39 635 6 b 605 -58 635 -49 628 -58 b 451 -60 553 -60 503 -60 b 219 -59 373 -60 295 -59 l 166 -59 b 72 -66 134 -59 104 -60 z"},noteheadSquareWhite:{x_min:0,x_max:350,y_min:-131,y_max:131,ha:262,o:"m 468 -189 b 485 -187 474 -189 480 -189 b 500 -176 495 -187 500 -183 b 498 -168 500 -174 498 -171 b 497 -166 498 -167 497 -167 l 498 -164 b 504 -154 503 -163 504 -158 b 503 -138 504 -150 503 -144 l 503 -135 l 503 -94 b 492 66 500 -45 494 10 b 488 135 492 89 488 112 b 484 150 488 141 485 145 b 482 154 482 151 482 153 b 429 189 472 177 456 189 b 53 184 304 186 179 186 l 39 184 b 33 181 36 183 35 183 b 12 160 20 181 12 177 b 0 -109 9 71 4 -19 b 19 -137 0 -125 7 -134 b 23 -151 19 -141 20 -145 b 85 -187 37 -173 55 -187 b 468 -189 212 -187 340 -187 z m 246 -125 l 63 -125 b 66 -111 65 -122 66 -117 b 73 72 69 -50 71 10 l 73 130 b 88 128 78 128 82 128 b 148 130 108 130 128 130 b 271 128 190 130 230 128 l 271 130 l 420 130 b 428 20 425 92 425 56 l 436 -127 l 246 -127 z"},noteheadSquareBlack:{x_min:0,x_max:342,y_min:-129.98961937716263,y_max:132.44444444444446,ha:262.4340638216071,o:"m 217 190 b 439 186 304 190 372 190 b 467 180 448 184 458 183 b 492 145 484 176 492 167 b 490 -124 490 56 490 -33 b 488 -141 490 -130 488 -135 b 456 -170 488 -163 478 -168 b 118 -183 344 -176 230 -181 b 29 -184 89 -183 60 -192 b 0 -148 4 -180 0 -168 b 1 29 1 -89 1 -30 l 1 156 b 36 190 3 187 4 190 b 217 190 102 192 168 190 z"},noteheadTriangleDownDoubleWhole:{x_min:0,x_max:510,y_min:-213,y_max:213,ha:426,o:"m 16 -307 b 30 -289 26 -307 29 -297 b 43 -236 36 -272 42 -253 l 65 219 b 59 285 62 240 69 264 b 46 307 55 294 58 307 l 43 307 b 19 279 30 304 20 295 b 13 184 17 248 14 216 b 1 -125 9 81 7 -23 b 0 -163 0 -138 0 -150 b 6 -287 0 -204 4 -245 b 16 -307 6 -295 7 -305 z m 707 -294 b 734 -213 733 -271 734 -242 b 729 245 733 -60 730 92 b 719 285 729 259 724 272 b 707 298 716 291 714 298 l 703 298 b 685 284 696 297 687 292 b 683 253 683 274 683 264 b 691 -181 685 108 685 -36 b 707 -294 693 -217 690 -256 z m 108 -238 b 125 -203 125 -238 121 -216 b 127 -190 127 -199 127 -194 b 120 -138 127 -173 120 -156 l 120 -66 b 114 167 120 12 118 89 l 118 161 b 314 -153 184 58 248 -48 b 350 -184 327 -173 338 -184 b 387 -154 361 -184 374 -174 b 567 108 449 -68 508 20 b 626 193 588 137 608 164 b 615 -132 622 85 619 -24 l 615 -166 b 619 -207 615 -180 615 -194 b 638 -226 622 -217 629 -225 b 651 -209 648 -226 649 -216 b 658 -177 655 -199 658 -187 l 658 -171 b 667 49 655 -98 667 -23 b 665 88 667 62 667 75 b 665 220 665 135 667 179 b 641 265 664 238 660 265 b 626 243 629 265 626 255 b 628 222 626 236 628 228 b 612 225 624 223 619 225 b 384 223 537 223 461 223 l 384 225 l 170 225 b 131 215 157 225 144 222 b 112 200 122 210 117 206 b 88 266 111 225 108 249 b 75 239 76 259 75 249 b 73 147 75 207 73 179 b 82 -189 73 35 79 -78 b 84 -203 82 -194 82 -199 b 108 -238 86 -219 91 -238 z m 361 -79 b 295 78 336 -26 314 26 b 284 151 287 101 284 125 b 310 177 284 171 291 177 b 419 176 346 176 383 174 l 423 176 b 445 153 441 176 445 168 l 445 147 b 361 -79 442 65 415 -10 z"},noteheadTriangleDownWhole:{x_min:0,x_max:366,y_min:-145,y_max:138,ha:283,o:"m 242 -209 b 279 -180 253 -209 266 -200 b 459 84 341 -92 400 -4 b 520 170 480 112 501 141 b 527 189 524 177 527 183 b 504 199 527 196 520 199 l 55 199 b 23 190 45 199 33 196 b 0 161 9 181 0 173 b 10 135 0 154 3 145 b 206 -177 76 32 140 -73 b 242 -209 219 -199 230 -209 z m 253 -105 b 187 52 228 -52 206 0 b 176 127 179 76 176 101 b 197 151 176 144 181 151 l 202 151 b 256 150 220 151 238 150 b 311 151 275 150 294 151 b 337 128 331 151 337 144 l 337 122 b 253 -105 334 39 307 -35 z"},noteheadTriangleDownHalf:{x_min:-.0833130378007211,x_max:341,y_min:-159,y_max:159,ha:318,o:"m 266 -229 b 282 -215 274 -229 278 -225 b 487 153 350 -92 418 30 b 491 170 490 158 491 164 b 480 189 491 177 487 183 b 425 215 464 202 448 213 b 33 226 297 217 168 222 b 13 229 29 223 22 229 b 1 222 9 229 4 228 b 14 184 -4 207 7 196 b 210 -176 81 65 145 -56 b 253 -225 222 -194 230 -213 b 266 -229 259 -226 264 -228 z m 134 22 b 147 43 138 27 141 37 b 206 163 174 79 179 127 b 213 170 209 166 212 167 l 340 167 b 193 -75 287 89 251 1 b 190 -82 192 -76 190 -79 z"},noteheadTriangleDownBlack:{x_min:0,x_max:346,y_min:-149,y_max:149,ha:298,o:"m 229 -215 b 259 -202 238 -215 248 -210 b 284 -173 269 -194 278 -184 l 482 173 b 498 209 488 184 498 194 b 481 215 492 215 487 215 b 63 213 343 215 203 213 b 12 197 45 213 29 206 b 0 180 4 193 0 187 b 3 168 0 177 1 173 b 13 150 6 163 9 156 l 196 -189 b 229 -215 206 -206 216 -215 z"},noteheadTriangleUpDoubleWhole:{x_min:0,x_max:510,y_min:-213,y_max:213,ha:426,o:"m 16 -307 b 30 -289 26 -307 29 -297 b 43 -236 36 -272 42 -253 l 65 219 b 59 285 62 240 69 264 b 46 307 55 294 58 307 l 43 307 b 19 279 30 304 20 295 b 13 184 17 248 14 216 b 1 -125 9 81 7 -23 b 0 -163 0 -138 0 -150 b 6 -287 0 -204 4 -245 b 16 -307 6 -295 7 -305 z m 707 -298 b 734 -217 733 -275 734 -246 b 729 240 733 -65 730 88 b 719 281 729 255 724 268 b 707 294 716 287 714 294 l 703 294 b 685 279 696 292 687 288 b 683 249 683 269 683 259 b 691 -186 685 104 685 -40 b 707 -298 693 -222 690 -261 z m 88 -266 b 112 -200 108 -249 111 -225 b 131 -215 117 -206 122 -210 b 170 -225 144 -222 157 -225 l 384 -225 l 384 -223 b 612 -225 461 -223 537 -223 b 628 -222 619 -225 624 -223 b 641 -265 628 -238 622 -265 b 665 -220 660 -265 664 -238 b 665 -88 667 -179 665 -135 b 667 -49 667 -75 667 -62 b 658 171 667 23 655 98 b 651 209 660 184 655 197 b 638 226 649 216 648 226 b 619 207 629 225 622 217 b 615 166 615 194 615 180 l 615 132 b 626 -193 619 24 622 -85 b 567 -108 608 -164 588 -137 b 387 154 508 -20 449 68 b 350 184 374 174 361 184 b 314 153 338 184 327 173 b 118 -161 248 48 184 -58 l 114 -167 b 120 66 118 -89 120 -12 l 120 138 b 127 190 120 156 127 173 b 125 203 127 194 127 199 b 108 238 121 216 125 238 b 84 203 91 238 86 219 b 82 189 82 199 82 194 b 73 -147 79 78 73 -35 b 75 -239 73 -179 75 -207 b 88 -266 75 -249 76 -259 z m 310 -177 b 284 -151 291 -177 284 -171 b 295 -78 284 -125 287 -101 b 361 79 314 -26 336 26 b 445 -147 415 10 442 -65 b 423 -176 446 -166 442 -176 l 419 -176 b 310 -177 383 -174 346 -176 z"},noteheadTriangleUpWhole:{x_min:0,x_max:366,y_min:-145,y_max:138,ha:283,o:"m 504 -209 b 527 -199 520 -209 527 -206 b 520 -180 527 -193 524 -187 b 459 -94 501 -151 480 -122 b 279 170 400 -6 341 82 b 242 199 266 190 253 199 b 206 167 230 199 219 189 b 10 -145 140 63 76 -42 b 0 -171 3 -156 0 -164 b 23 -200 0 -183 9 -192 b 55 -209 33 -206 45 -209 z m 202 -161 b 176 -137 183 -163 176 -156 b 187 -62 176 -111 179 -86 b 253 95 206 -10 228 42 b 337 -132 307 24 334 -49 b 311 -161 338 -153 334 -161 b 256 -160 294 -161 275 -160 b 202 -161 238 -160 220 -161 z"},noteheadTriangleUpHalf:{x_min:0,x_max:341.0833130378007,y_min:-159,y_max:159,ha:318,o:"m 458 -226 b 478 -229 462 -223 469 -229 b 490 -222 482 -229 487 -228 b 477 -184 495 -207 484 -196 b 281 176 410 -65 346 56 b 238 225 269 194 261 213 b 225 229 232 226 228 228 b 209 215 217 229 213 225 b 4 -153 141 92 73 -30 b 0 -170 1 -158 0 -164 b 12 -189 0 -177 4 -183 b 66 -215 27 -202 43 -213 b 458 -226 194 -217 323 -222 z m 151 -167 b 298 75 204 -89 240 -1 b 301 82 300 76 301 79 l 357 -22 b 344 -43 353 -27 350 -37 b 285 -163 317 -79 312 -127 b 278 -170 282 -166 279 -167 z"},noteheadTriangleUpBlack:{x_min:0,x_max:346,y_min:-149,y_max:149,ha:298,o:"m 481 -215 b 498 -209 487 -215 492 -215 b 482 -173 498 -194 488 -184 l 284 173 b 259 202 278 184 269 194 b 229 215 248 210 238 215 b 196 189 216 215 206 206 l 13 -150 b 3 -168 9 -156 6 -163 b 0 -180 1 -173 0 -177 b 12 -197 0 -187 4 -193 b 63 -213 29 -206 45 -213 b 481 -215 203 -213 343 -215 z"},noteheadSlashedDoubleWhole1:{x_min:0,x_max:697,y_min:-290,y_max:290,ha:580,o:"m 20 -418 b 42 -376 40 -418 37 -392 b 43 -356 45 -370 43 -363 l 43 -348 b 50 -197 43 -298 49 -248 b 78 317 58 -24 69 147 b 72 387 75 343 82 366 b 52 418 68 397 69 418 l 49 416 b 24 380 33 413 24 399 b 19 235 23 333 20 284 b 7 -82 14 130 10 24 b 0 -264 6 -143 0 -203 b 10 -382 0 -302 1 -343 b 20 -418 13 -393 6 -418 z m 976 -344 b 991 -331 985 -346 988 -337 b 1004 -271 999 -312 1004 -292 l 1004 -194 b 996 184 1004 -68 1001 59 b 996 281 996 216 998 249 b 984 379 995 314 991 347 b 971 397 981 392 976 396 b 952 386 965 397 959 392 b 943 361 943 380 945 370 b 937 288 939 337 937 312 b 945 158 937 245 942 203 b 959 -248 950 23 953 -112 b 966 -325 960 -274 963 -300 b 976 -344 966 -334 968 -344 z m 102 -331 b 124 -272 120 -314 122 -294 b 135 -278 127 -276 131 -278 l 141 -278 b 320 -199 206 -262 272 -252 b 348 -171 328 -189 338 -180 b 482 -199 392 -190 436 -199 b 704 -173 576 -199 641 -187 b 847 -82 760 -158 809 -130 l 855 -69 l 855 -73 b 863 -229 857 -125 860 -177 b 876 -255 863 -239 863 -255 b 893 -233 886 -255 888 -242 b 900 -189 899 -219 900 -203 l 900 66 b 900 192 899 108 900 150 b 893 301 900 228 899 265 b 877 325 890 310 893 325 l 876 325 b 855 301 865 324 855 315 b 850 202 852 268 847 235 b 854 50 854 151 854 101 b 821 99 847 68 835 85 b 733 167 795 127 765 148 b 831 253 766 196 799 225 b 851 265 837 258 844 261 b 829 282 840 275 835 279 b 772 295 815 291 795 295 b 685 271 739 295 704 287 b 624 215 665 252 645 233 l 566 232 b 527 239 553 236 540 239 b 490 228 514 239 501 236 b 451 219 475 217 467 219 b 275 176 389 219 331 200 b 184 53 216 150 184 105 b 199 -14 184 32 189 10 b 262 -108 215 -52 236 -82 l 125 -230 b 134 225 130 -78 132 73 b 135 269 134 239 135 255 b 121 330 135 291 132 311 b 95 287 99 323 95 307 b 92 124 94 233 95 179 b 85 -143 88 36 85 -53 b 89 -300 85 -196 86 -248 b 102 -331 89 -311 89 -323 z m 367 -14 b 350 43 359 3 351 22 b 392 122 350 82 363 107 b 544 171 439 150 492 160 b 572 168 554 174 563 171 z m 564 -132 b 467 -105 528 -138 497 -121 b 442 -89 458 -101 449 -95 l 658 101 b 690 30 677 82 690 59 b 688 10 690 24 690 17 b 564 -132 678 -45 611 -127 z"},noteheadSlashedWhole1:{x_min:-76,x_max:498,y_min:-168,y_max:168,ha:336,o:"m -79 -242 b 55 -202 -32 -236 14 -228 l 145 -143 b 333 -171 203 -166 265 -171 b 429 -164 361 -174 395 -168 b 582 -130 481 -158 534 -154 b 657 -20 631 -105 657 -65 b 619 68 657 9 644 40 b 552 120 599 89 577 107 b 582 138 562 127 572 132 b 717 226 625 167 668 194 b 638 242 688 236 662 242 b 543 213 603 242 573 232 b 455 154 514 194 484 174 b 325 199 412 167 367 179 b 233 215 298 210 265 215 b 75 156 173 215 124 186 b 0 27 24 122 0 76 b 66 -98 0 -17 22 -63 b 72 -102 69 -99 71 -101 b -89 -209 17 -137 -36 -173 b -109 -225 -95 -213 -109 -216 b -108 -229 -109 -226 -108 -228 b -85 -242 -104 -239 -95 -242 z m 181 -29 b 167 14 171 -13 167 1 b 187 62 167 30 173 46 b 301 137 217 99 258 118 b 312 138 304 138 308 138 l 317 138 b 389 109 340 125 364 118 l 383 105 z m 337 -109 b 239 -82 301 -107 268 -99 l 468 65 b 482 24 477 53 482 40 b 480 4 482 19 481 12 b 337 -109 467 -56 399 -111 z"},noteheadSlashedHalf1:{x_min:-79.3435119522494,x_max:471,y_min:-184,y_max:184,ha:368,o:"m -112 -251 b -94 -265 -107 -261 -101 -264 b -52 -242 -79 -265 -63 -249 l 89 -148 b 212 -180 125 -170 167 -179 b 238 -177 220 -180 229 -179 l 262 -180 b 346 -171 289 -180 318 -176 b 576 -91 431 -166 507 -140 b 641 4 619 -60 641 -29 b 592 96 641 35 625 65 l 583 104 b 533 147 567 121 550 134 l 613 200 b 678 261 636 216 664 232 b 658 265 671 264 664 265 b 611 248 641 265 625 258 l 491 171 b 337 204 444 194 392 204 b 281 200 318 204 300 204 b 27 62 180 187 92 145 b -1 -19 9 37 -1 10 b 36 -107 -1 -50 12 -82 b 52 -121 42 -112 46 -117 l -72 -203 b -112 -251 -91 -216 -122 -233 z m 161 -49 b 158 -29 160 -42 158 -35 b 183 33 158 -7 167 16 b 395 137 239 95 311 122 b 420 125 405 134 413 130 z m 276 -128 b 261 -131 271 -130 266 -131 b 181 -86 233 -131 203 -114 l 454 94 l 468 72 b 481 36 477 60 481 49 b 469 1 481 26 477 14 b 276 -128 422 -66 354 -105 z"},noteheadSlashedBlack1:{x_min:-110,x_max:452,y_min:-190,y_max:190,ha:380,o:"m -131 -274 b -102 -262 -121 -272 -111 -266 b 7 -186 -65 -239 -29 -212 b 50 -157 22 -176 36 -166 b 105 -176 65 -166 84 -173 b 207 -183 140 -181 173 -183 b 239 -184 219 -184 229 -184 b 428 -91 327 -184 377 -150 b 487 43 461 -52 487 -7 b 482 76 487 53 485 65 b 459 128 478 95 469 112 b 507 161 475 138 491 150 l 651 262 b 622 274 641 271 632 274 b 605 271 616 274 611 272 b 514 233 573 262 541 252 l 422 167 b 317 203 392 190 354 203 b 271 196 301 203 285 200 b 168 157 236 186 200 173 b 6 -16 94 120 33 68 b -1 -62 1 -32 -1 -48 b 17 -125 -1 -86 4 -108 b -81 -196 -16 -148 -48 -173 b -145 -242 -102 -212 -128 -219 b -158 -256 -150 -246 -158 -251 b -157 -261 -158 -258 -157 -259 b -131 -274 -153 -269 -141 -274 z"},noteheadSlashedDoubleWhole2:{x_min:-.12386605641055257,x_max:697.4733477320805,y_min:-295,y_max:295,ha:590,o:"m 870 -338 b 891 -315 884 -341 887 -325 b 906 -183 907 -274 903 -228 b 914 186 912 -60 904 62 b 914 240 914 203 916 222 b 916 276 913 251 916 265 b 899 300 916 289 913 300 b 871 253 874 300 871 274 b 858 -168 871 111 858 -27 b 860 -235 858 -190 860 -213 l 736 -131 b 834 -20 799 -111 834 -69 b 789 85 834 13 819 49 b 683 160 760 118 723 140 b 383 216 589 209 487 215 b 330 213 364 217 347 216 b 228 300 295 242 261 271 b 86 347 184 337 138 348 b 58 343 76 347 63 350 l 58 360 b 35 425 58 384 53 423 b 6 382 9 425 6 403 l 6 131 b 0 -164 6 33 4 -66 b 24 -327 -1 -216 6 -271 b 50 -262 46 -305 50 -284 l 50 -154 b 52 -45 50 -118 50 -81 b 58 325 55 79 58 202 b 73 310 60 320 68 315 b 94 294 79 304 86 298 b 89 271 89 287 89 278 l 89 94 b 104 -194 101 -20 88 -108 b 118 -245 107 -213 104 -248 b 140 -190 140 -243 140 -212 l 140 -62 b 132 258 140 46 138 153 l 132 259 l 235 173 b 193 132 219 161 204 148 b 153 26 167 101 153 63 b 164 -35 153 7 157 -16 b 341 -170 196 -114 261 -158 b 433 -177 372 -174 403 -177 b 619 -157 497 -177 559 -170 l 706 -230 b 799 -276 736 -258 765 -276 b 818 -274 806 -276 812 -276 l 861 -274 b 863 -312 861 -287 863 -300 b 870 -338 864 -321 858 -337 z m 966 -425 b 986 -397 979 -425 982 -408 b 991 -373 989 -390 989 -382 b 995 -239 991 -328 995 -284 b 1004 334 1001 -49 1002 143 b 995 380 1005 350 1005 367 b 982 402 989 386 992 402 l 978 400 b 949 374 965 396 950 390 b 948 333 948 360 948 346 l 948 -37 b 949 -84 949 -52 949 -68 b 946 -248 949 -132 946 -189 b 953 -396 946 -297 948 -346 b 966 -425 955 -408 950 -425 z m 624 -36 b 416 140 554 22 485 81 b 482 156 439 150 461 154 b 625 81 537 156 588 124 b 647 27 639 63 647 46 b 624 -36 647 7 638 -14 z m 469 -117 b 320 14 386 -118 320 -60 b 343 81 320 37 327 60 l 547 -95 b 469 -117 521 -105 494 -111 z"},noteheadSlashedWhole2:{x_min:-83,x_max:510,y_min:-201,y_max:198,ha:399,o:"m 734 -289 b 696 -245 726 -266 710 -256 b 586 -164 660 -217 622 -192 l 589 -161 b 654 -50 631 -135 654 -94 b 616 40 654 -19 641 13 b 305 174 536 127 420 174 b 171 151 261 174 215 167 b 166 150 170 151 168 150 b 86 209 140 170 112 189 b -94 284 32 249 -22 289 l -108 285 b -120 274 -114 285 -120 284 b -104 251 -120 266 -112 258 b 71 124 -46 209 12 166 l 85 114 b 36 72 66 102 50 89 b 0 -30 12 40 0 4 b 122 -186 0 -96 45 -160 b 343 -222 194 -210 268 -222 b 514 -197 410 -220 467 -213 l 554 -228 b 734 -289 609 -268 668 -275 z m 477 -82 b 268 73 408 -30 338 22 l 301 91 b 336 101 314 96 324 101 b 370 88 347 101 359 96 b 459 9 405 66 436 43 b 481 -56 474 -13 481 -35 b 477 -82 481 -65 480 -73 z m 310 -161 b 216 -143 276 -161 246 -156 b 166 -72 181 -128 166 -105 b 168 -46 166 -65 167 -55 b 206 26 176 -16 189 7 b 436 -140 282 -29 360 -84 b 382 -158 420 -150 402 -157 b 310 -161 357 -161 333 -161 z"},noteheadSlashedHalf2:{x_min:-73,x_max:454,y_min:-188,y_max:188,ha:376,o:"m 654 -271 b 603 -202 649 -233 625 -217 b 481 -115 563 -173 523 -144 b 564 -60 510 -101 539 -82 b 615 40 596 -33 615 4 b 609 69 615 50 613 60 b 505 167 590 120 554 151 b 336 190 451 184 392 190 b 124 134 259 190 189 171 l -42 248 b -88 271 -56 256 -75 271 b -101 265 -94 271 -98 269 b -105 252 -104 259 -105 255 b -66 210 -105 235 -82 222 l 85 107 b 0 -24 42 73 0 35 b 183 -183 0 -118 75 -184 b 262 -176 206 -180 233 -177 b 438 -135 324 -171 383 -158 b 570 -228 482 -166 527 -197 b 654 -271 595 -243 621 -259 z m 393 -53 l 311 4 l 225 65 b 392 134 274 102 331 122 b 455 50 425 141 455 101 b 439 -3 455 35 451 14 b 393 -53 425 -22 409 -37 z m 287 -121 b 246 -130 272 -127 259 -130 b 171 -89 215 -130 189 -115 b 156 -40 161 -73 156 -58 b 186 29 156 -17 166 7 l 192 35 l 359 -82 b 287 -121 337 -98 312 -111 z"},noteheadSlashedBlack2:{x_min:-84,x_max:405,y_min:-189,y_max:189,ha:378,o:"m 557 -265 b 573 -272 562 -268 567 -272 b 583 -261 577 -272 580 -269 b 575 -242 580 -253 579 -248 b 524 -190 563 -220 544 -204 b 405 -99 485 -160 445 -130 b 497 50 449 -60 482 -9 b 500 72 498 58 500 65 b 478 122 500 91 492 107 b 331 186 438 167 387 186 b 120 131 258 186 186 167 l 107 124 b -52 242 53 163 1 203 b -89 265 -63 251 -76 259 b -107 272 -95 268 -101 272 b -117 266 -109 272 -114 271 b -121 251 -120 262 -121 256 b -114 235 -121 245 -120 239 b -60 186 -96 217 -81 199 b 63 95 -20 156 22 125 b -1 -35 26 66 -1 27 b 137 -183 -1 -130 46 -183 b 174 -180 148 -183 161 -181 l 245 -171 b 366 -128 289 -166 331 -150 l 426 -171 b 557 -265 469 -203 514 -233 z"},noteheadDiamondDoubleWhole:{x_min:0,x_max:429,y_min:-221,y_max:221,ha:442,o:"m 22 -318 b 42 -294 33 -318 37 -302 b 46 -266 45 -285 45 -275 b 50 -219 49 -249 50 -233 b 48 -153 50 -197 49 -176 b 43 120 43 -62 43 29 l 43 253 b 37 298 43 269 45 284 b 26 318 35 305 35 318 l 24 318 b 1 295 13 317 3 308 b 0 268 0 285 0 276 l 0 -121 b 10 -291 0 -177 1 -235 b 22 -318 12 -301 10 -318 z m 593 -312 b 618 -256 611 -294 616 -276 l 618 -186 b 611 253 618 -40 612 108 b 605 276 611 261 608 268 b 589 295 600 284 600 297 b 567 272 577 294 569 285 l 567 251 b 575 -197 573 102 575 -48 b 593 -312 575 -233 579 -271 z m 99 -268 b 114 -256 107 -269 111 -262 b 127 -196 124 -238 125 -217 b 128 -144 128 -179 128 -161 b 122 -9 128 -99 125 -55 l 135 -19 b 344 -179 206 -71 276 -122 b 370 -190 354 -186 363 -190 b 395 -173 379 -190 386 -184 b 492 -33 426 -127 459 -79 b 491 -86 491 -50 491 -68 b 507 -251 491 -138 495 -193 b 534 -184 530 -228 533 -206 b 541 144 537 -75 539 35 b 530 204 541 164 539 186 b 520 220 528 210 528 220 b 500 203 511 219 503 213 b 498 192 498 200 498 194 l 498 176 b 494 7 497 120 497 63 l 490 12 l 287 176 b 258 190 279 181 274 190 b 212 153 239 186 225 168 l 127 40 b 121 32 124 37 122 35 b 118 114 120 59 118 86 b 102 249 117 158 122 206 b 75 219 85 246 79 236 b 72 187 72 209 72 197 b 76 117 72 164 75 141 b 85 -151 79 27 79 -62 b 91 -251 86 -184 91 -217 b 99 -268 91 -258 92 -266 z m 392 -128 b 374 -122 387 -134 380 -127 l 180 29 b 170 45 173 35 170 39 b 176 56 170 48 173 52 b 236 122 204 101 219 122 b 308 76 252 122 272 107 l 433 -26 b 449 -50 439 -32 449 -36 b 392 -128 432 -75 413 -102 z"},noteheadDiamondWhole:{x_min:0,x_max:271,y_min:-132,y_max:132,ha:264,o:"m 230 -177 b 256 -190 240 -186 249 -190 b 281 -173 265 -190 272 -184 b 382 -29 314 -124 347 -76 b 390 -10 387 -22 390 -14 b 376 12 390 -3 386 4 b 173 177 308 66 240 121 b 144 190 166 183 160 190 b 98 153 127 186 112 170 b 13 40 69 115 42 76 b 0 13 4 29 0 20 b 22 -19 0 3 7 -9 b 230 -177 92 -69 163 -122 z m 279 -128 b 261 -122 274 -134 266 -127 l 66 30 b 56 45 59 35 56 39 b 62 56 56 48 59 52 b 122 122 91 101 105 122 b 194 76 138 122 158 107 l 320 -26 b 336 -50 325 -32 336 -35 b 279 -128 318 -75 300 -102 z"},noteheadDiamondHalf:{x_min:0,x_max:295,y_min:-148,y_max:148,ha:296,o:"m 228 -207 b 245 -213 235 -210 240 -213 b 264 -203 252 -213 258 -210 b 415 -46 314 -150 364 -98 b 425 -27 420 -40 425 -35 b 416 -10 425 -22 422 -16 b 217 200 350 60 284 131 b 194 213 212 207 204 213 b 170 196 181 213 177 203 b 14 33 118 143 68 86 b 0 7 4 23 0 16 b 17 -20 0 -1 6 -10 b 118 -114 52 -50 82 -85 b 228 -207 156 -144 184 -184 z m 209 -157 b 134 -69 177 -138 141 -115 b 130 -26 131 -55 130 -40 b 215 148 130 42 160 99 b 225 156 217 151 220 156 b 230 153 226 156 228 156 b 323 -26 276 104 321 55 b 298 -75 324 -42 315 -59 b 265 -109 287 -86 276 -99 b 209 -157 245 -125 228 -167 z"},noteheadDiamondBlack:{x_min:0,x_max:310,y_min:-146,y_max:146,ha:292,o:"m 266 -210 b 289 -194 278 -209 284 -200 b 406 -76 330 -156 367 -115 b 446 -23 433 -49 446 -36 b 412 29 446 -10 435 3 b 405 36 409 30 408 33 b 252 196 354 89 304 143 b 225 210 243 204 235 210 b 204 202 219 210 212 209 b 10 24 141 141 75 82 b 0 9 4 19 0 14 b 9 -6 0 4 3 0 l 232 -192 b 266 -210 242 -200 256 -204 z"},noteheadParenthesis:{x_min:-70.190112022022,x_max:329,y_min:-196,y_max:201,ha:397,o:"m 344 -279 b 382 -262 361 -288 370 -272 b 405 -233 390 -255 399 -245 b 474 9 455 -158 468 -73 b 416 228 474 78 448 174 b 364 282 403 249 387 271 b 344 289 359 285 350 288 b 331 279 338 289 333 287 b 325 248 328 269 325 258 b 338 225 325 238 328 229 b 412 138 379 207 396 174 b 445 1 433 92 445 45 b 346 -217 445 -81 410 -154 b 336 -252 340 -223 336 -238 b 344 -279 336 -265 338 -276 z m 19 -274 b 35 -282 24 -279 30 -281 b 49 -265 42 -282 46 -275 b 52 -243 50 -256 52 -249 b 36 -210 52 -230 49 -220 b -60 -59 -16 -173 -35 -114 b -73 9 -69 -39 -73 -16 b 33 223 -73 92 -24 189 b 50 265 43 229 50 249 b 33 288 50 278 46 289 b 4 272 23 288 14 275 b -9 261 0 269 -4 265 b -101 23 -58 193 -105 124 b -37 -206 -104 -52 -75 -130 b 19 -274 -23 -232 -6 -255 z"},noteheadParenthesisRight:{x_min:-30,x_max:82,y_min:-199.08429092881173,y_max:206,ha:405.0842909288117,o:"m -17 -282 b 24 -264 -6 -297 12 -272 b 60 -219 40 -253 52 -236 b 117 1 96 -150 112 -75 b 118 16 118 6 118 12 b 109 73 118 36 112 55 b 4 279 99 154 68 226 b -23 297 -4 287 -13 297 b -37 289 -27 297 -32 294 b -43 266 -42 285 -43 276 b -32 225 -43 251 -37 229 b 84 -7 48 170 84 82 b 32 -184 84 -69 65 -132 b -10 -222 22 -200 4 -209 b -24 -258 -20 -232 -24 -245 b -17 -282 -24 -266 -22 -276 z"},noteheadParenthesisLeft:{x_min:0,x_max:106,y_min:-197,y_max:197,ha:394,o:"m 134 -284 b 138 -281 135 -284 137 -284 b 145 -268 144 -278 145 -274 l 144 -253 b 107 -180 138 -225 121 -204 b 42 13 71 -120 42 -56 b 49 73 42 32 43 52 b 137 210 62 128 95 171 b 153 255 147 219 153 239 b 145 278 153 265 151 274 b 130 284 140 281 135 284 b 98 259 117 284 108 268 b 0 37 35 203 1 131 b 118 -268 9 -69 53 -173 b 134 -284 121 -274 127 -284 z"},noteheadMoonBlack:{x_min:0,x_max:328,y_min:-125,y_max:125,ha:250,o:"m 353 -160 b 465 -40 412 -140 451 -102 b 472 30 471 -17 472 6 b 469 124 472 60 469 92 b 406 179 469 170 459 177 l 128 179 b 37 180 98 179 68 179 b 0 141 7 180 0 170 b 3 -20 3 88 3 33 b 69 -134 3 -72 26 -109 b 240 -180 125 -164 181 -180 b 353 -160 278 -180 315 -174 z"},noteheadTriangleLeftBlack:{x_min:0,x_max:391.1554175279994,y_min:-142,y_max:142,ha:284,o:"m 138 -204 b 318 -197 197 -199 258 -197 l 431 -197 b 544 -192 469 -196 507 -193 b 563 -184 552 -190 560 -193 b 553 -167 564 -177 559 -171 l 540 -157 b 232 60 436 -85 334 -12 l 50 190 b 20 204 42 197 32 204 b 10 202 17 204 14 204 b 0 184 1 197 0 192 b 1 164 0 177 1 170 b 6 -150 3 59 6 -45 b 39 -193 7 -176 17 -186 b 138 -204 72 -204 105 -204 z"},noteheadTriangleRightBlack:{x_min:-.3332953162522517,x_max:398,y_min:-139,y_max:140,ha:279,o:"m 543 -200 b 573 -176 566 -200 573 -194 l 573 -168 b 554 141 566 -66 560 37 b 520 197 553 167 546 187 b 495 202 511 200 504 202 b 454 184 481 202 467 196 l 35 -137 b 0 -171 22 -147 -4 -154 b 52 -199 6 -193 33 -193 b 69 -199 58 -200 63 -199 z"},noteheadTriangleRoundDownBlack:{x_min:0,x_max:334,y_min:-133.78604087938328,y_max:136,ha:269.7860408793833,o:"m 252 -192 b 285 -176 269 -196 276 -187 b 468 52 346 -99 406 -23 b 481 79 477 62 481 71 b 465 104 481 88 475 95 b 441 124 456 109 449 117 b 249 196 380 174 314 194 b 13 104 157 196 69 154 b 0 86 6 98 0 92 b 7 69 0 82 3 76 b 202 -164 73 -7 137 -85 b 252 -192 216 -181 235 -186 z"},augmentationDot:{x_min:0,x_max:96,y_min:-57,y_max:57,ha:114,o:"m 13 -82 b 16 -81 14 -82 14 -82 b 105 -73 46 -76 75 -76 b 131 -48 121 -72 131 -60 b 138 26 134 -24 138 0 b 137 48 138 33 138 40 b 108 82 134 71 125 82 b 95 81 104 82 99 82 b 33 71 75 78 53 75 b 4 46 20 68 6 62 b 0 -66 1 9 0 -29 b 13 -82 0 -73 1 -82 z"},tremolo1:{x_min:-158,x_max:156.19381479578487,y_min:-88,y_max:88,ha:176,o:"m -206 -127 b -194 -125 -203 -127 -199 -127 b 173 -36 -72 -94 50 -65 b 220 16 202 -29 215 -12 b 225 50 223 30 225 45 b 216 107 226 76 222 91 b 194 127 210 120 204 127 b 183 124 192 127 189 127 l -192 33 b -226 -9 -213 27 -222 14 b -228 -32 -226 -16 -228 -23 b -222 -108 -228 -58 -222 -82 b -206 -127 -222 -120 -217 -127 z"},flag8thUp:{x_min:0,x_max:261,y_min:-819,y_max:0,ha:819,o:"m 265 -1171 b 351 -1035 301 -1130 336 -1087 b 376 -867 369 -979 376 -923 b 367 -755 376 -829 373 -792 b 233 -422 350 -632 311 -520 b 131 -291 199 -379 166 -334 b 65 -125 91 -239 66 -192 b 62 -75 65 -112 62 -91 b 42 0 62 -49 52 -24 l 35 0 b 0 -63 6 -13 0 -36 l 0 -144 b 96 -445 0 -255 29 -356 b 177 -547 124 -478 150 -514 b 308 -831 246 -629 298 -721 b 317 -890 310 -851 317 -871 b 311 -919 317 -900 315 -910 b 256 -1005 297 -950 282 -984 b 228 -1068 233 -1024 228 -1045 b 230 -1106 228 -1080 229 -1093 b 240 -1162 232 -1125 239 -1143 b 251 -1179 242 -1174 246 -1179 b 265 -1171 255 -1179 259 -1176 z"},flag8thDown:{x_min:0,x_max:261,y_min:0,y_max:819,ha:819,o:"m 265 1171 b 251 1179 259 1176 255 1179 b 240 1162 246 1179 242 1174 b 230 1106 239 1143 232 1125 b 228 1068 229 1093 228 1080 b 256 1005 228 1045 233 1024 b 311 919 282 984 297 950 b 317 890 315 910 317 900 b 308 831 317 871 310 851 b 177 547 298 721 246 629 b 96 445 150 514 124 478 b 0 144 29 356 0 255 l 0 63 b 35 0 0 36 6 13 l 42 0 b 62 75 52 24 62 49 b 59 117 62 91 59 104 b 131 291 60 183 91 239 b 233 422 166 334 199 379 b 367 755 311 520 350 632 b 376 867 373 792 376 829 b 351 1035 376 923 369 979 b 265 1171 336 1087 301 1130 z"},flag16thUp:{x_min:0,x_max:327.1591498636094,y_min:-819.3972596310256,y_max:0,ha:819.3972596310256,o:"m 415 -1179 b 435 -1168 423 -1182 429 -1174 b 451 -1138 442 -1159 446 -1149 b 465 -1020 464 -1102 467 -1064 b 461 -962 464 -1004 464 -984 b 471 -821 467 -916 472 -870 b 465 -721 472 -791 467 -756 b 415 -520 459 -651 441 -585 b 200 -245 370 -408 284 -327 b 96 -114 160 -206 118 -168 b 75 -24 84 -85 85 -53 b 59 0 72 -16 72 0 b 53 -1 58 0 56 -1 b 27 -32 40 -6 27 -10 b 29 -68 27 -43 29 -55 b 10 -79 20 -69 13 -72 b 1 -109 6 -89 1 -99 b 0 -170 0 -130 0 -148 b 35 -410 0 -252 12 -333 b 258 -793 76 -557 156 -681 b 409 -1158 350 -896 410 -1014 b 415 -1179 409 -1165 405 -1175 z m 413 -816 b 331 -681 392 -769 364 -723 b 145 -420 266 -596 189 -521 b 86 -281 125 -374 102 -330 b 156 -370 105 -312 128 -343 b 318 -539 210 -425 269 -478 b 413 -816 383 -621 420 -713 z"},flag16thDown:{x_min:0,x_max:327.1591498636094,y_min:0,y_max:819,ha:819,o:"m 59 0 b 75 24 72 0 72 16 b 96 114 85 53 84 85 b 200 245 118 168 160 206 b 415 520 284 327 370 408 b 465 721 441 585 459 651 b 471 821 467 756 472 791 b 461 962 472 870 467 916 b 465 1020 464 984 464 1004 b 451 1138 467 1064 464 1102 b 435 1168 446 1149 442 1159 b 418 1179 431 1172 425 1179 l 415 1179 b 408 1169 409 1176 408 1174 b 409 1158 408 1165 409 1161 b 258 793 410 1014 350 896 b 35 410 156 681 76 557 b 0 170 12 333 0 252 l 0 88 b 29 7 0 71 6 23 b 59 0 33 4 58 0 z m 86 281 b 145 420 102 330 125 374 b 331 681 189 521 266 596 b 413 816 364 723 392 769 b 415 791 413 808 415 799 b 318 539 415 698 377 613 b 156 370 269 478 210 425 b 86 281 128 343 105 312 z"},flag32ndUp:{x_min:-.19862981551275186,x_max:268.0942440943661,y_min:-849.4710740978672,y_max:149.0769891455102,ha:998.5480632433774,o:"m 323 -1223 b 351 -1198 337 -1227 344 -1210 b 359 -1184 354 -1194 356 -1188 b 386 -999 377 -1122 387 -1060 b 341 -783 386 -927 372 -855 b 330 -736 334 -769 330 -753 b 333 -708 330 -727 330 -717 b 344 -621 340 -678 344 -649 b 341 -579 344 -608 343 -593 b 328 -500 338 -553 328 -526 b 331 -475 328 -491 328 -484 b 347 -370 343 -438 348 -402 b 151 27 348 -212 288 -56 b 53 176 98 59 50 102 b 45 197 53 183 48 192 b 33 215 40 203 40 216 l 30 215 b 6 194 22 212 9 209 b 0 120 3 170 -1 145 b 0 -43 4 65 0 13 b 0 -98 0 -60 1 -79 b 4 -276 0 -157 6 -216 b 7 -456 4 -337 7 -397 b 66 -638 7 -523 22 -585 b 158 -724 94 -671 127 -697 b 318 -1011 246 -801 295 -899 b 321 -1044 321 -1021 321 -1032 b 312 -1152 321 -1080 312 -1116 b 317 -1192 312 -1165 314 -1179 b 323 -1223 320 -1202 311 -1220 z m 285 -376 b 121 -180 249 -289 173 -245 b 91 -105 104 -158 92 -135 b 288 -354 181 -144 288 -269 b 285 -376 288 -363 287 -370 z m 275 -657 b 111 -492 226 -589 163 -547 b 65 -376 78 -456 66 -418 b 71 -323 65 -360 68 -341 b 275 -657 164 -418 265 -504 z"},flag32ndDown:{x_min:-2.800802874905624,x_max:268.09424409436605,y_min:-169.07698914551014,y_max:829.4710740978672,ha:998.5480632433773,o:"m 323 1194 b 317 1164 311 1191 320 1174 b 312 1123 314 1151 312 1136 b 321 1015 312 1087 321 1051 b 318 982 321 1004 321 992 b 158 696 295 870 246 772 b 66 609 127 668 94 642 b 7 428 22 556 7 494 b 4 248 7 369 4 308 b -1 78 6 187 -10 137 b 0 14 0 59 0 32 l 0 -148 b 6 -223 0 -174 3 -199 b 30 -243 9 -238 22 -240 l 33 -243 b 45 -226 40 -245 40 -232 b 53 -204 48 -220 53 -212 b 151 -56 50 -131 98 -88 b 347 341 288 27 348 183 b 331 446 348 373 343 409 b 328 471 328 455 328 462 b 341 550 328 497 338 524 b 344 592 343 564 344 579 b 333 680 344 621 340 649 b 330 707 330 688 330 698 b 341 755 330 724 334 740 b 386 971 372 827 386 899 b 359 1155 387 1031 377 1093 b 351 1169 356 1159 354 1165 b 323 1194 344 1181 337 1198 z m 275 628 b 71 294 265 475 164 389 b 65 347 68 312 65 331 b 111 464 66 389 78 428 b 275 628 163 518 226 560 z m 285 347 b 288 325 287 341 288 334 b 91 76 288 240 181 115 b 121 151 92 107 104 130 b 285 347 173 216 249 261 z"},flag64thUp:{x_min:-4,x_max:282,y_min:-823.5430338167067,y_max:347,ha:1170.5430338167066,o:"m 350 -1185 b 380 -1162 364 -1189 374 -1175 b 406 -1022 399 -1119 406 -1071 b 359 -798 406 -945 384 -871 b 348 -756 353 -785 348 -772 b 350 -744 348 -753 350 -749 b 363 -621 356 -704 363 -664 b 360 -580 363 -608 363 -593 b 359 -560 359 -573 359 -567 b 373 -490 359 -536 366 -513 b 393 -346 386 -444 393 -395 b 387 -269 393 -320 390 -294 b 348 -127 382 -219 348 -173 b 351 -104 348 -120 348 -111 b 353 -65 351 -91 353 -78 b 341 37 353 -26 348 6 b 226 215 323 108 278 164 b 86 336 181 258 127 288 b 62 395 72 353 62 370 b 42 481 62 423 55 454 b 27 500 37 488 36 500 b 24 498 26 500 26 500 b -1 480 14 497 1 492 b -6 444 -4 467 -6 455 l -6 435 b -1 341 -1 403 -1 372 l -1 266 b 6 156 -1 230 0 193 b 13 35 12 117 13 75 l 13 -35 b 14 -85 13 -52 14 -68 b 29 -276 19 -150 33 -213 b 20 -448 24 -334 20 -392 b 24 -534 20 -477 22 -505 b 114 -708 30 -605 59 -664 b 197 -780 143 -732 171 -755 b 344 -1153 301 -884 341 -1011 b 343 -1172 344 -1159 343 -1166 b 350 -1185 343 -1176 344 -1182 z m 287 -88 b 62 193 186 -17 79 48 b 229 52 121 144 174 98 b 289 -33 256 29 274 -3 b 295 -56 294 -42 295 -49 b 287 -88 295 -66 292 -76 z m 298 -410 b 118 -235 238 -351 176 -295 b 76 -88 82 -197 78 -147 b 268 -252 137 -153 203 -202 b 330 -360 304 -279 330 -315 b 323 -402 330 -373 327 -387 b 311 -418 318 -413 315 -418 b 298 -410 307 -418 302 -415 z m 300 -691 b 117 -508 243 -616 168 -575 b 82 -408 94 -480 82 -448 b 84 -379 82 -397 82 -387 b 259 -553 135 -451 206 -492 b 301 -667 287 -583 301 -619 b 300 -691 301 -674 301 -683 z"},flag64thDown:{x_min:-5,x_max:281,y_min:-375,y_max:795.5430338167066,ha:1170.5430338167066,o:"m 348 1145 b 341 1132 343 1142 341 1136 b 343 1113 341 1126 343 1119 b 196 740 340 971 300 844 b 112 668 170 714 141 691 b 23 494 58 624 29 564 b 19 408 20 465 19 436 b 27 236 19 351 23 294 b 13 45 32 173 17 109 b 12 -6 13 27 12 12 l 12 -75 b 4 -196 12 -115 10 -157 b -3 -307 -1 -233 -3 -271 l -3 -382 b -7 -475 -3 -412 -3 -444 l -7 -484 b -3 -520 -7 -495 -6 -507 b 23 -539 0 -533 13 -537 b 26 -540 24 -540 24 -540 b 40 -521 35 -540 36 -528 b 60 -435 53 -494 60 -464 b 85 -376 60 -410 71 -393 b 225 -255 125 -328 180 -298 b 340 -78 276 -204 321 -148 b 351 24 347 -46 351 -14 b 350 63 351 37 350 50 b 347 86 347 71 347 79 b 386 229 347 132 380 179 b 392 305 389 253 392 279 b 372 449 392 354 384 403 b 357 520 364 472 357 495 b 359 540 357 527 357 533 b 361 580 361 553 361 567 b 348 704 361 624 354 664 b 347 716 348 708 347 713 b 357 757 347 732 351 744 b 405 982 383 831 405 904 b 379 1122 405 1031 397 1079 b 348 1145 373 1135 363 1149 z m 298 651 b 300 626 300 642 300 634 b 258 513 300 579 285 543 b 82 338 204 452 134 410 b 81 367 81 347 81 357 b 115 468 81 408 92 439 b 298 651 167 534 242 576 z m 297 370 b 310 377 301 374 305 377 b 321 361 314 377 317 373 b 328 320 325 347 328 333 b 266 212 328 275 302 239 b 75 48 202 161 135 112 b 117 194 76 107 81 157 b 297 370 174 255 236 311 z m 285 48 b 294 16 291 36 294 26 b 288 -7 294 9 292 1 b 228 -92 272 -37 255 -69 b 60 -233 173 -138 120 -184 b 285 48 78 -88 184 -23 z"},flag128thUp:{x_min:0,x_max:252,y_min:-804,y_max:530,ha:1334,o:"m 298 -1158 b 328 -1126 312 -1158 320 -1139 b 330 -1116 330 -1123 330 -1119 b 347 -996 343 -1076 347 -1037 b 328 -837 347 -943 338 -890 b 320 -778 324 -816 320 -798 b 330 -733 320 -763 323 -749 b 340 -665 338 -714 337 -688 b 341 -645 340 -660 341 -652 b 333 -534 341 -609 333 -572 b 343 -471 333 -513 334 -492 b 361 -366 356 -436 361 -402 b 331 -202 361 -311 348 -256 b 328 -187 330 -197 328 -193 b 331 -179 328 -184 328 -181 b 363 -55 353 -137 363 -96 b 337 79 363 -12 351 33 b 327 114 333 92 327 104 b 344 144 327 124 331 132 b 359 174 353 150 357 163 b 361 228 360 193 361 210 b 243 517 361 337 325 435 b 147 596 213 546 179 569 b 75 708 111 626 75 655 b 62 744 75 723 68 733 b 50 763 58 752 58 763 b 46 762 49 763 48 762 b 17 742 36 757 22 757 b 0 697 14 726 0 711 b 1 595 0 662 3 631 b 0 469 0 552 0 511 b 1 429 0 456 0 442 b 22 289 6 382 22 337 b 24 128 22 238 24 184 b 22 66 24 108 23 86 b 19 -19 20 37 19 10 b 20 -132 19 -56 20 -95 b 13 -276 20 -180 19 -229 b 9 -359 10 -304 9 -330 b 12 -487 9 -402 12 -445 b 56 -582 12 -526 29 -554 b 197 -742 107 -632 160 -681 b 288 -1100 265 -851 276 -976 b 288 -1122 288 -1107 287 -1115 b 287 -1145 289 -1129 287 -1138 b 298 -1158 287 -1153 288 -1158 z m 304 150 b 75 475 229 256 112 334 b 304 150 233 357 305 287 z m 271 -73 b 127 72 233 -14 179 26 b 81 167 96 98 81 127 b 84 194 81 176 82 184 b 271 -73 148 102 242 39 z m 279 -396 b 132 -223 233 -330 180 -279 b 81 -112 104 -192 81 -156 b 82 -91 81 -105 81 -98 b 279 -396 167 -125 269 -281 z m 249 -609 b 69 -357 197 -520 88 -471 b 249 -609 131 -441 229 -498 z"},flag128thDown:{x_min:-.8888888888888888,x_max:252,y_min:-580,y_max:754,ha:1334,o:"m 298 1086 b 287 1073 288 1086 287 1081 b 288 1050 287 1066 289 1057 b 288 1028 287 1043 288 1035 b 197 670 276 904 265 779 b 56 510 160 609 107 560 b 12 415 29 482 12 454 b 9 287 12 373 9 330 b 13 204 9 258 10 232 b 20 60 19 157 20 108 b 19 -53 20 23 19 -16 b 22 -138 19 -82 20 -109 b 24 -200 23 -158 24 -180 b 22 -361 24 -256 22 -310 b 1 -501 22 -409 6 -454 b 0 -541 0 -514 0 -528 b 0 -667 0 -583 -3 -624 b 0 -809 0 -675 -3 -791 b 46 -834 4 -825 36 -829 b 50 -835 48 -834 49 -835 b 62 -816 58 -835 58 -824 b 75 -780 68 -805 75 -795 b 147 -668 75 -727 111 -698 b 243 -589 179 -641 213 -618 b 361 -300 325 -507 361 -409 b 359 -246 361 -282 360 -265 b 344 -216 357 -235 353 -222 b 327 -186 331 -204 327 -196 b 337 -151 327 -176 333 -164 b 363 -17 351 -105 363 -60 b 331 107 363 24 353 65 b 328 115 328 109 328 112 b 331 130 328 121 330 125 b 361 294 348 184 361 239 b 343 399 361 330 356 364 b 333 462 334 420 333 441 b 341 573 333 500 341 537 b 340 593 341 580 340 588 b 330 661 337 616 338 642 b 320 706 323 677 320 691 b 328 765 320 726 324 744 b 347 924 338 818 347 871 b 330 1044 347 965 343 1004 b 328 1054 330 1047 330 1051 b 298 1086 320 1067 312 1086 z m 249 537 b 69 285 229 426 131 369 b 249 537 88 399 197 448 z m 279 324 b 82 19 269 209 167 53 b 81 40 81 26 81 33 b 132 151 81 84 104 120 b 279 324 180 207 233 258 z m 271 1 b 84 -266 242 -111 148 -174 b 81 -239 82 -256 81 -248 b 127 -144 81 -199 96 -170 b 271 1 179 -98 233 -58 z m 304 -222 b 75 -547 305 -359 233 -429 b 304 -222 112 -406 229 -328 z"},accidentalFlat:{x_min:1,x_max:209,y_min:-208,y_max:472,ha:680,o:"m 29 -300 b 46 -289 33 -300 39 -297 b 107 -243 65 -274 86 -258 b 301 127 233 -153 301 -30 b 298 186 301 147 301 166 b 190 297 291 256 251 297 b 147 289 177 297 163 294 b 86 265 127 284 107 274 l 85 264 l 85 301 b 91 465 85 356 88 410 b 94 559 91 497 94 527 b 84 651 94 589 91 621 b 66 680 81 661 81 680 l 65 680 b 37 645 49 678 37 665 b 33 523 36 605 32 563 l 33 478 b 26 223 33 393 29 308 b 1 -141 22 101 1 -19 b 17 -287 1 -189 4 -239 b 29 -300 20 -295 23 -300 z m 68 -105 b 76 12 71 -68 72 -29 b 81 107 79 43 81 75 l 86 109 b 171 135 114 121 141 135 b 204 128 181 135 193 132 b 238 92 228 120 239 108 b 230 63 238 84 236 75 b 68 -105 193 -10 132 -59 z"},accidentalNatural:{x_min:0,x_max:213.5,y_min:-456,y_max:462,ha:918,o:"m 255 -657 b 281 -624 271 -657 275 -636 b 285 -599 282 -615 285 -608 b 292 -300 288 -500 289 -400 b 289 -161 292 -253 289 -207 b 300 128 292 -65 297 32 b 304 168 300 128 302 150 l 304 173 l 305 190 l 305 199 l 307 225 b 304 259 307 229 310 246 b 272 298 297 274 302 305 b 63 266 204 279 134 272 b 72 514 68 348 72 432 b 71 595 72 541 72 567 b 56 665 71 619 66 642 b 17 579 9 651 17 608 b 3 144 19 433 7 289 b 0 -7 1 94 0 43 b 3 -134 0 -50 1 -92 b 7 -219 3 -163 7 -192 b 35 -251 7 -243 17 -251 b 49 -249 39 -251 43 -251 l 223 -223 l 230 -222 l 230 -359 b 223 -516 230 -410 223 -464 b 236 -619 223 -550 226 -585 b 255 -657 240 -634 236 -657 z m 58 -63 b 55 81 56 -14 53 33 l 56 99 b 85 99 65 99 75 98 b 232 108 134 104 183 107 l 240 109 l 236 66 b 232 -48 235 29 232 -10 b 58 -81 174 -63 115 -73 z"},accidentalSharp:{x_min:-22,x_max:390,y_min:-384,y_max:383,ha:767,o:"m 202 -553 b 219 -526 213 -552 216 -536 b 226 -471 225 -507 226 -488 b 225 -425 226 -455 225 -441 b 226 -392 225 -415 225 -402 b 233 -305 229 -363 232 -334 l 297 -292 b 331 -469 300 -353 311 -412 b 347 -485 333 -477 338 -485 b 363 -469 356 -487 359 -477 b 374 -418 373 -454 374 -435 b 376 -382 376 -405 376 -393 b 372 -276 376 -347 373 -311 l 455 -259 b 550 -156 534 -243 544 -232 b 550 -109 550 -137 552 -124 b 526 -78 549 -91 541 -78 l 523 -78 b 507 -79 517 -78 513 -78 b 403 -101 474 -88 438 -95 l 379 -105 b 382 -42 380 -85 380 -63 b 384 96 383 4 384 50 b 503 131 425 107 464 118 b 549 173 524 138 543 150 b 562 249 554 199 562 223 b 554 294 562 264 560 279 b 536 315 549 308 544 315 l 533 315 b 517 312 528 315 523 315 b 382 266 472 294 428 279 l 377 344 b 359 531 374 406 372 469 b 348 552 356 539 357 552 l 347 552 l 343 552 b 315 528 331 549 317 544 l 315 501 b 320 249 315 416 318 333 l 243 232 b 239 361 243 275 242 318 b 226 425 238 383 238 403 b 199 359 194 409 199 382 b 193 223 196 312 194 268 b 72 202 153 215 112 209 b 4 118 13 192 4 183 b 10 66 0 102 12 84 b 33 29 7 39 14 30 b 48 32 37 29 42 30 b 187 55 95 39 141 46 l 183 -75 b 176 -145 181 -99 179 -122 b 16 -179 122 -156 69 -166 b -32 -232 -14 -186 -32 -197 b -17 -331 -32 -266 -19 -298 b -1 -356 -17 -347 -13 -354 b 12 -353 1 -356 6 -354 b 167 -320 63 -341 115 -331 b 166 -377 166 -338 166 -357 b 189 -526 166 -428 171 -477 b 202 -553 192 -536 189 -553 z m 240 -132 b 243 -37 242 -101 242 -69 b 245 65 245 -3 245 30 b 315 79 269 69 292 73 b 301 -120 308 13 305 -53 z"},accidentalDoubleSharp:{x_min:0,x_max:287,y_min:-159,y_max:159,ha:318,o:"m 84 -229 b 107 -216 91 -229 98 -225 b 200 -125 138 -186 167 -154 b 232 -95 212 -115 222 -105 b 347 -189 271 -125 310 -157 b 370 -200 356 -196 363 -200 b 396 -179 380 -200 389 -192 b 412 -102 410 -154 406 -125 b 377 -27 410 -69 400 -46 l 325 14 b 402 91 350 42 374 68 b 413 127 410 96 413 107 b 382 200 409 148 397 176 b 350 229 370 220 360 229 b 314 210 340 229 328 223 b 274 174 300 199 285 187 b 212 104 252 151 232 128 b 92 187 173 132 132 161 b 78 193 86 192 82 193 b 68 190 75 193 72 193 b 48 179 62 186 53 187 b 40 137 43 168 40 154 b 81 16 40 92 56 32 b 107 -3 89 10 98 4 b 14 -94 76 -32 45 -62 b 0 -124 6 -102 0 -114 b 12 -154 0 -134 3 -144 b 62 -215 26 -176 48 -193 b 84 -229 69 -225 76 -229 z"},accidentalDoubleFlat:{x_min:0,x_max:359,y_min:-220,y_max:446,ha:666,o:"m 43 -317 b 72 -301 55 -317 63 -310 b 160 -186 108 -268 134 -226 b 236 -60 186 -145 212 -102 b 233 -131 235 -85 233 -108 b 239 -220 233 -161 235 -190 b 259 -246 240 -233 239 -240 b 301 -228 284 -252 291 -238 b 465 -7 369 -163 416 -85 b 517 173 500 48 517 108 b 451 307 517 229 505 284 b 409 315 436 312 422 315 b 331 287 382 315 356 305 b 311 274 324 282 320 274 l 310 274 l 310 566 b 305 621 310 585 312 603 b 294 642 301 628 305 642 l 292 642 b 264 622 282 641 266 636 b 253 575 259 606 256 590 b 246 418 248 523 246 471 b 248 243 246 360 248 302 l 248 187 b 164 238 220 225 193 238 b 85 213 140 238 112 226 b 84 229 85 220 84 225 b 86 315 85 258 86 287 b 81 528 86 386 82 458 b 71 582 81 547 78 566 b 56 603 66 590 68 603 l 53 603 b 23 580 40 600 26 598 b 19 537 20 566 19 552 b 20 514 19 530 19 521 b 26 390 24 472 26 432 b 14 66 26 282 16 174 b 0 -168 13 -12 0 -91 b 12 -279 0 -206 3 -242 b 30 -314 16 -294 14 -308 b 43 -317 35 -317 39 -317 z m 301 -72 b 302 7 302 -45 302 -19 l 302 86 b 351 158 304 121 321 145 b 383 166 361 163 373 166 b 435 143 402 166 419 157 b 445 127 441 138 445 132 b 441 114 445 122 444 118 b 301 -72 397 49 354 -14 z m 75 -147 b 73 30 75 -86 75 -29 b 118 82 73 62 92 76 b 132 84 124 84 128 84 b 190 52 156 84 174 69 b 193 40 192 49 193 45 b 192 33 193 37 193 35 b 75 -147 157 -30 125 -95 z"},accidentalParensLeft:{x_min:0,x_max:130.18934911242604,y_min:-270,y_max:267.6082500723851,ha:537.6082500723851,o:"m 107 -389 b 127 -374 114 -389 120 -384 b 141 -347 132 -367 137 -357 b 151 -294 148 -330 151 -311 b 122 -207 151 -265 141 -236 b 63 -65 94 -164 72 -117 b 59 -10 60 -46 59 -27 b 145 223 59 78 94 153 b 187 354 176 262 189 305 b 177 384 187 364 190 380 b 143 373 166 387 153 383 b 124 354 137 367 130 361 b 0 -35 33 240 0 108 l 0 -92 b 85 -372 4 -193 27 -287 b 107 -389 92 -383 99 -389 z"},accidentalParensRight:{x_min:-.4444444444444445,x_max:139,y_min:-275,y_max:277,ha:552,o:"m 58 -396 b 96 -354 75 -396 85 -370 b 200 13 168 -238 200 -111 b 153 268 200 109 184 190 b 49 392 131 320 101 364 b 26 399 40 397 33 399 b 0 366 10 399 0 387 b 0 318 -1 350 0 334 l 0 291 b 27 238 -3 266 7 253 b 143 9 105 180 143 98 b 141 -20 143 -1 143 -10 b 63 -225 135 -92 108 -164 b 36 -307 45 -251 36 -278 b 40 -344 36 -320 37 -331 b 42 -356 42 -347 42 -351 b 58 -396 42 -374 37 -396 z"},accidentalQuarterToneFlatStein:{x_min:0,x_max:208,y_min:-240,y_max:440,ha:680,o:"m 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z"},accidentalThreeQuarterTonesFlatZimmermann:{x_min:0,x_max:422,y_min:-240,y_max:440,ha:680,o:"m 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 336 -346 b 353 -336 340 -346 346 -343 b 413 -289 372 -320 393 -304 b 608 81 540 -199 608 -76 b 605 140 608 101 608 120 b 497 251 598 210 557 251 b 454 243 484 251 469 248 b 393 219 433 238 413 228 l 392 217 l 392 255 b 397 419 392 310 395 364 b 400 513 397 451 400 481 b 390 605 400 543 397 575 b 373 634 387 615 387 634 l 372 634 b 344 599 356 632 344 619 b 340 477 343 559 338 517 l 340 432 b 333 177 340 347 336 262 b 308 -187 328 55 308 -65 b 324 -333 308 -235 311 -285 b 336 -346 327 -341 330 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z m 374 -151 b 383 -35 377 -114 379 -75 b 387 60 386 -3 387 29 l 393 63 b 478 89 420 75 448 89 b 511 82 488 89 500 86 b 544 46 534 73 546 62 b 537 17 544 37 543 29 b 374 -151 500 -56 439 -105 z"},accidentalQuarterToneSharpStein:{x_min:0,x_max:300,y_min:-338,y_max:351,ha:689,o:"m 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 l 35 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z"},accidentalThreeQuarterTonesSharpStein:{x_min:-23,x_max:388,y_min:-373,y_max:445,ha:818,o:"m 114 -537 b 138 -475 137 -518 138 -495 b 147 -292 138 -413 144 -353 b 212 -278 168 -287 190 -282 b 243 -444 215 -333 225 -389 b 261 -467 248 -454 251 -465 b 281 -446 272 -469 276 -455 b 292 -347 292 -416 288 -384 b 288 -262 289 -320 288 -291 l 374 -245 b 376 -311 374 -266 374 -288 b 390 -456 379 -357 379 -405 b 416 -396 412 -436 415 -418 b 423 -287 420 -360 423 -323 b 422 -235 423 -269 423 -252 b 451 -229 432 -233 441 -232 b 547 -98 524 -215 547 -199 l 547 -89 b 521 -49 546 -59 540 -49 b 497 -52 516 -49 507 -49 b 418 -68 469 -56 444 -63 b 423 52 419 -29 422 12 b 426 140 425 81 425 109 b 495 160 449 145 472 153 b 552 219 526 170 546 189 b 559 279 557 240 553 262 b 530 341 559 324 552 341 b 490 331 520 341 507 338 b 432 311 471 324 452 318 b 449 552 436 392 442 471 b 452 588 451 563 452 575 b 446 622 452 599 451 611 b 436 641 444 629 448 641 b 418 628 428 641 420 636 b 409 602 413 621 410 611 b 386 297 396 501 390 399 b 297 274 356 288 327 281 b 291 403 295 317 294 360 b 274 550 288 452 284 501 b 259 569 271 564 265 569 b 240 559 253 569 248 563 b 230 537 232 554 230 546 l 230 488 b 233 369 230 448 232 409 b 236 261 236 333 238 297 b 156 245 210 255 183 251 b 154 396 154 295 154 346 b 150 416 154 403 153 410 b 140 438 145 423 150 438 l 138 438 b 118 413 128 436 118 428 b 112 354 118 393 114 374 b 109 238 109 315 109 276 b 49 226 89 233 69 230 b 3 163 16 222 3 202 b 7 91 3 138 9 114 b 29 62 7 69 13 62 b 39 63 32 62 35 63 b 104 73 60 66 82 71 b 101 -10 104 46 102 17 l 92 -132 l 10 -150 b -33 -204 -19 -157 -33 -170 b -19 -310 -32 -240 -19 -274 b -6 -324 -19 -321 -13 -324 b 6 -323 -1 -324 1 -324 b 82 -307 32 -317 58 -311 b 81 -376 82 -330 81 -353 b 114 -537 81 -431 94 -484 z m 294 -92 b 297 -37 295 -73 295 -56 b 300 49 300 -9 300 20 l 300 108 b 379 127 325 114 353 120 b 374 -76 376 59 374 -9 b 294 -92 347 -82 320 -86 z m 154 -120 b 157 20 154 -73 156 -26 b 158 82 158 40 158 62 b 230 95 183 86 206 89 b 225 0 229 63 226 32 b 217 -107 223 -35 220 -71 z"},accidentalBuyukMucennebFlat:{x_min:1.8692317181955784,x_max:287,y_min:-248,y_max:432.4720949426819,ha:680.4720949426819,o:"m 410 128 b 302 239 403 199 363 239 b 259 232 289 239 275 236 b 199 207 239 226 219 216 l 197 206 l 197 243 l 197 251 b 347 317 248 272 298 295 b 376 347 360 324 372 334 b 389 435 387 376 393 405 b 348 454 384 462 377 465 b 202 387 300 432 251 409 b 203 408 203 395 203 402 l 203 431 b 347 490 252 451 300 469 b 376 517 360 495 372 505 b 389 599 387 546 393 572 b 348 616 384 625 377 628 l 203 556 b 196 593 202 569 199 582 b 179 622 193 603 193 622 l 177 622 b 150 588 161 621 150 608 b 147 533 150 570 148 552 b 29 488 108 517 69 503 b 3 455 12 482 3 472 b 12 353 1 422 9 389 b 145 408 56 372 101 389 b 145 363 145 392 145 377 l 29 315 b 3 281 12 310 3 298 b 12 170 1 245 9 209 l 141 226 b 138 166 140 206 138 186 b 114 -199 134 43 115 -76 b 130 -344 114 -246 117 -297 b 141 -357 132 -353 135 -357 b 158 -347 145 -357 151 -354 b 219 -301 177 -331 199 -315 b 413 69 346 -210 413 -88 b 410 128 413 89 413 108 z m 350 35 b 343 6 350 26 348 17 b 180 -163 308 -69 245 -117 b 189 -46 183 -125 184 -86 b 193 49 192 -14 193 17 l 199 52 b 284 78 226 63 253 78 b 317 71 294 78 305 75 b 350 35 340 62 351 50 z"},accidentalBakiyeFlat:{x_min:1.8692317181955784,x_max:287,y_min:-236,y_max:444,ha:680,o:"m 141 -340 b 158 -330 145 -340 151 -337 b 219 -284 177 -314 199 -298 b 413 86 346 -193 413 -71 b 410 145 413 107 413 125 b 302 256 403 216 363 256 b 259 249 289 256 275 253 b 199 225 239 243 219 233 l 197 223 l 197 261 b 199 334 197 285 199 310 b 347 406 249 357 298 382 b 376 439 360 413 372 425 b 390 516 384 465 390 490 b 389 537 390 523 390 530 b 372 564 384 556 382 564 b 348 557 367 564 359 562 b 204 487 300 537 253 510 b 206 518 206 497 206 507 b 196 611 206 549 203 580 b 179 639 193 621 193 639 l 177 639 b 150 605 161 638 150 625 b 145 482 148 564 144 523 l 145 458 b 29 405 107 439 68 420 b 3 366 12 397 3 386 b 12 243 1 325 9 287 b 143 307 56 265 99 285 l 138 183 b 114 -181 134 60 114 -59 b 130 -327 114 -229 117 -279 b 141 -340 132 -336 135 -340 z m 180 -145 b 189 -29 183 -108 184 -69 b 193 66 192 3 193 35 l 199 69 b 284 95 226 81 253 95 b 317 88 294 95 305 92 b 350 52 340 79 351 68 b 343 23 350 43 348 35 b 180 -145 305 -50 245 -99 z"},accidentalKomaSharp:{x_min:0,x_max:300,y_min:-338,y_max:351,ha:689,o:"m 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 l 35 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z"},accidentalKucukMucennebSharp:{x_min:-.15206251809627475,x_max:359,y_min:-420,y_max:343,ha:763,o:"m 236 -605 b 262 -543 256 -583 261 -564 b 269 -423 268 -503 269 -464 b 266 -340 269 -396 268 -367 l 361 -318 b 405 -276 384 -312 399 -298 b 413 -189 412 -248 416 -219 b 395 -164 412 -171 409 -164 b 382 -166 392 -164 387 -164 b 264 -193 343 -176 304 -184 b 269 -102 265 -163 268 -132 b 454 -62 331 -89 392 -78 b 501 -23 477 -58 494 -45 b 517 62 511 6 517 33 b 487 112 517 95 513 112 b 471 111 482 112 477 112 b 274 66 406 95 340 81 b 276 138 275 91 276 114 b 350 154 301 144 325 148 b 402 203 377 160 396 176 b 412 284 408 230 412 258 b 392 311 412 302 406 311 b 372 308 386 311 379 310 b 287 291 343 301 314 297 l 295 405 b 298 441 297 416 298 428 b 292 475 298 452 297 464 b 282 494 289 482 294 494 b 264 481 274 494 266 490 b 255 455 259 474 256 464 b 239 282 248 397 243 340 b 148 268 209 278 179 274 b 62 164 62 252 62 253 l 62 132 b 79 108 60 117 65 108 l 86 108 l 230 130 b 229 92 230 118 229 105 b 228 56 228 79 228 68 b 66 20 173 43 120 32 b 0 -59 6 7 3 1 l 0 -138 b 14 -160 -1 -156 4 -160 b 27 -158 19 -160 23 -160 b 222 -112 92 -141 157 -127 b 220 -203 220 -143 220 -173 b 147 -217 196 -207 171 -213 b 89 -288 92 -228 89 -229 b 95 -347 85 -305 96 -325 b 112 -374 92 -366 98 -374 b 125 -373 117 -374 121 -374 l 220 -351 b 222 -458 220 -386 220 -422 b 236 -605 223 -504 225 -552 z"},accidentalKoron:{x_min:0,x_max:303,y_min:-462.4598053473055,y_max:180,ha:642.4598053473055,o:"m 59 -665 b 72 -649 69 -662 72 -657 b 69 -626 72 -642 69 -634 b 69 -622 69 -625 69 -624 l 69 -600 b 55 -156 60 -456 68 -311 b 86 -170 66 -166 76 -170 b 112 -163 95 -170 104 -166 b 390 -35 204 -120 298 -78 b 436 -1 409 -27 436 -27 b 396 46 436 22 413 33 l 382 55 b 46 243 271 121 157 179 b 12 259 29 253 17 259 b 0 219 1 259 0 248 b 3 -372 0 22 3 -176 b 6 -616 3 -454 6 -536 b 59 -665 6 -638 40 -671 z m 55 199 b 363 24 156 141 258 84 b 55 -118 259 -24 160 -69 z"},accidentalSori:{x_min:0,x_max:434,y_min:-295,y_max:325,ha:620,o:"m 194 -425 b 196 -409 194 -418 196 -413 b 194 -194 196 -337 196 -266 b 364 -127 251 -171 308 -150 b 361 -321 363 -192 364 -256 b 410 -387 360 -357 373 -377 b 413 -373 412 -382 413 -377 b 418 -114 418 -287 418 -200 l 418 -105 b 595 -35 477 -82 536 -59 b 625 0 612 -27 625 -22 b 593 48 624 23 618 39 l 419 117 b 423 370 419 202 423 285 b 426 403 423 382 426 393 b 418 436 426 415 425 426 b 384 468 409 449 399 468 b 369 448 370 468 369 459 b 369 436 369 444 369 441 l 369 428 l 369 423 b 367 138 369 328 367 233 l 353 143 l 192 207 l 192 367 b 173 406 192 383 184 396 b 151 422 167 413 160 422 b 144 420 148 422 147 422 b 137 403 138 416 137 410 l 137 392 l 137 229 b 33 271 102 243 68 256 b 13 276 26 274 19 276 b 0 262 6 276 0 272 b 35 199 1 239 0 212 l 138 160 b 140 -148 138 58 138 -45 b 56 -181 111 -158 84 -170 b 24 -215 35 -189 24 -199 b 29 -235 24 -220 26 -228 b 49 -253 35 -249 42 -253 b 78 -240 59 -253 69 -243 b 140 -216 98 -233 120 -225 l 140 -356 b 194 -425 140 -406 141 -406 z m 194 -125 b 193 138 194 -37 193 50 b 315 89 233 122 275 107 b 366 71 333 84 350 76 b 364 -58 366 27 366 -16 b 194 -125 308 -81 251 -104 z m 419 49 l 526 7 l 485 -10 l 419 -36 z"},articAccentAbove:{x_min:0,x_max:425,y_min:0,y_max:326,ha:326,o:"m 27 1 b 78 12 46 0 62 6 b 347 112 168 45 253 91 b 521 184 409 128 459 167 b 608 259 557 194 589 220 b 612 274 611 265 612 271 b 598 292 612 281 608 287 b 477 347 559 312 518 331 b 176 465 374 384 275 425 b 156 469 168 468 161 469 b 125 456 145 469 137 465 b 53 370 96 432 78 399 b 45 353 48 363 45 357 b 68 333 45 344 52 337 b 360 225 166 298 262 261 b 192 154 302 203 249 171 b 13 36 120 132 53 105 b 0 13 9 29 0 22 l 0 9 b 16 0 3 1 10 0 l 26 0 b 27 1 27 0 27 0 z"},articAccentBelow:{x_min:0,x_max:425,y_min:-326,y_max:0,ha:326,o:"m 26 -469 l 27 -469 b 78 -458 46 -469 62 -464 b 347 -357 168 -426 253 -380 b 521 -285 409 -341 459 -302 b 608 -210 557 -276 589 -249 b 612 -196 611 -204 612 -200 b 598 -179 612 -189 608 -183 b 477 -122 559 -157 518 -138 b 176 -4 374 -85 275 -45 b 156 0 168 -1 161 0 b 125 -13 145 0 137 -4 b 53 -99 96 -37 78 -71 b 45 -117 48 -107 45 -112 b 68 -137 45 -125 52 -132 b 360 -245 166 -171 262 -209 b 192 -315 302 -266 249 -300 b 13 -433 120 -337 53 -366 b 0 -456 9 -442 0 -448 l 0 -461 b 16 -469 3 -468 10 -469 z"},articTenutoAbove:{x_min:.35192668236256364,x_max:471.1238660564107,y_min:0,y_max:56,ha:56,o:"m 137 0 b 197 1 156 0 179 1 b 409 6 268 1 338 6 b 482 4 432 6 459 6 b 556 0 508 3 534 0 b 651 10 588 0 621 3 b 678 27 662 12 678 10 b 654 59 680 45 672 53 b 511 75 606 73 560 73 b 255 81 426 78 341 81 b 160 79 222 81 193 79 l 36 79 b 1 71 24 78 7 85 b 19 32 -3 56 9 43 b 45 16 26 24 36 20 b 137 0 76 3 108 0 z"},articTenutoBelow:{x_min:.35192668236256364,x_max:471.1238660564107,y_min:-59,y_max:-3,ha:56,o:"m 137 -85 b 197 -84 156 -85 179 -84 b 409 -79 268 -84 338 -79 b 482 -81 432 -79 459 -79 b 556 -85 508 -82 534 -85 b 651 -75 588 -85 621 -82 b 678 -58 662 -73 678 -75 b 654 -26 680 -40 672 -32 b 511 -10 606 -12 560 -12 b 255 -4 426 -7 341 -4 b 160 -6 222 -4 193 -6 l 36 -6 b 1 -14 24 -7 7 0 b 19 -53 -3 -29 9 -42 b 45 -69 26 -60 36 -65 b 137 -85 76 -82 108 -85 z"},articStaccatoAbove:{x_min:1.4151102965496913,x_max:112,y_min:0,y_max:156,ha:156,o:"m 98 0 b 132 23 109 0 122 7 b 161 112 150 50 161 79 b 158 148 161 124 161 137 b 125 186 154 167 131 167 b 63 225 117 215 85 216 b 23 197 45 222 30 219 b 3 91 12 163 12 127 b 19 66 0 79 4 69 b 65 27 40 62 53 46 b 98 0 76 9 88 0 z"},articStaccatoBelow:{x_min:1.4151102965496913,x_max:112.08403222864916,y_min:-156,y_max:0,ha:156,o:"m 132 -202 b 161 -112 151 -174 163 -145 b 158 -76 161 -101 161 -88 b 125 -39 153 -58 131 -58 b 63 0 115 -10 85 -9 b 23 -27 45 -3 30 -6 b 3 -134 12 -62 10 -98 b 19 -158 0 -145 4 -156 b 65 -197 40 -164 53 -179 b 98 -225 75 -216 88 -225 b 132 -202 109 -225 122 -217 z"},articStaccatissimoAbove:{x_min:0,x_max:139,y_min:0,y_max:411,ha:411,o:"m 104 0 b 144 115 143 29 138 75 b 197 423 158 217 180 320 b 200 454 199 433 200 444 b 181 540 200 482 193 513 b 112 592 167 573 141 592 b 55 567 92 592 72 585 b 0 490 32 546 3 527 l 0 484 b 27 279 14 416 14 347 b 84 20 43 193 52 104 b 96 0 86 13 92 6 z"},articStaccatissimoBelow:{x_min:0,x_max:139,y_min:-411,y_max:0,ha:411,o:"m 88 -592 b 145 -567 108 -592 128 -585 b 200 -490 168 -546 197 -527 l 200 -484 b 173 -279 186 -416 186 -347 b 117 -20 157 -193 148 -104 b 104 0 114 -13 108 -6 l 96 0 b 56 -115 58 -29 62 -75 b 3 -423 42 -217 20 -320 b 0 -454 1 -433 0 -444 b 19 -540 0 -482 7 -513 b 88 -592 33 -573 59 -592 z"},articMarcatoAbove:{x_min:.04121419527862119,x_max:396,y_min:0,y_max:328.0000000000001,ha:328.0000000000001,o:"m 477 0 b 510 13 488 0 500 6 b 570 124 546 40 563 81 b 547 183 570 147 560 166 b 356 422 487 265 405 330 b 346 442 354 429 350 436 l 346 444 b 318 465 340 456 330 464 l 312 469 b 274 449 294 480 284 461 b 242 413 262 438 253 425 b 56 196 177 343 112 274 b 1 56 26 154 13 105 b 27 20 -4 35 9 20 b 42 23 32 20 37 20 b 84 53 59 29 72 39 b 255 269 141 125 193 200 b 275 229 262 255 266 242 b 448 14 324 151 390 86 b 477 0 456 4 467 0 z"},articMarcatoBelow:{x_min:0,x_max:395.9587858047214,y_min:-328.0000000000001,y_max:0,ha:328.0000000000001,o:"m 258 -469 b 297 -449 276 -480 287 -461 b 328 -413 308 -438 317 -425 b 514 -196 393 -343 458 -274 b 569 -56 544 -154 557 -105 b 543 -20 575 -35 562 -20 b 528 -23 539 -20 533 -20 b 487 -53 511 -29 498 -39 b 315 -269 429 -125 377 -200 b 295 -229 308 -255 304 -242 b 122 -14 246 -151 180 -86 b 94 0 114 -4 104 0 b 60 -13 82 0 71 -6 b 0 -124 24 -40 7 -81 b 23 -183 0 -147 10 -166 b 215 -422 84 -265 166 -330 b 225 -442 216 -429 220 -436 l 225 -444 b 252 -465 230 -456 240 -464 z"},fermataAbove:{x_min:-.04550444040404433,x_max:472,y_min:2.015071727506986,y_max:454,ha:451.984928272493,o:"m 39 10 b 78 108 66 37 71 73 b 163 311 92 181 111 252 b 284 423 199 353 239 392 b 373 458 312 444 340 454 b 433 431 395 458 410 446 b 603 153 530 361 596 276 b 595 121 603 144 595 131 l 595 88 b 602 50 596 75 589 55 b 639 73 619 43 631 60 b 651 102 645 82 648 92 b 667 194 660 132 662 163 b 680 278 671 222 672 248 b 560 567 680 386 638 481 b 396 654 508 625 452 649 b 291 632 364 654 325 644 b 161 526 235 613 200 566 b 4 249 85 446 26 357 b 4 174 0 222 -3 196 b 10 19 4 124 4 69 b 29 4 12 6 16 0 b 39 10 35 4 33 4 z m 338 37 b 370 40 350 36 357 36 b 380 75 387 40 380 43 b 389 94 382 79 382 85 b 356 132 389 111 374 122 b 269 154 328 147 300 156 b 225 125 252 154 228 157 b 261 48 222 81 232 56 b 338 37 287 40 312 40 z"},fermataBelow:{x_min:-.310835055998654,x_max:518.570567335755,y_min:-430,y_max:-.9161449836506543,ha:429.08385501634933,o:"m 344 -615 b 500 -543 402 -602 452 -576 b 713 -253 605 -471 661 -364 b 746 -98 737 -204 750 -153 b 727 -59 744 -82 744 -59 b 688 -88 711 -59 694 -68 b 678 -109 687 -96 683 -102 b 562 -314 648 -183 611 -252 b 387 -439 516 -373 458 -416 b 328 -449 367 -446 347 -449 b 180 -386 274 -449 225 -423 b 69 -179 111 -330 69 -262 b 75 -121 69 -160 71 -141 b 84 -58 78 -101 84 -79 b 82 -39 84 -52 84 -45 b 68 -1 79 -26 82 -4 b 26 -32 49 0 33 -12 b 20 -52 24 -39 22 -45 b 0 -223 9 -107 -3 -161 b 141 -553 1 -348 27 -468 b 304 -619 192 -590 243 -619 b 344 -615 317 -619 330 -618 z m 415 -190 b 435 -157 429 -192 435 -184 b 308 -27 435 -86 379 -27 b 271 -46 287 -27 272 -35 b 269 -69 269 -55 269 -62 b 364 -183 269 -128 302 -170 z"},fermataLongAbove:{x_min:0,x_max:591.4911182523068,y_min:-6,y_max:337.10134960318186,ha:343.10134960318186,o:"m 20 -9 b 36 14 29 -9 35 3 b 49 109 45 45 49 78 b 48 143 49 121 49 131 b 42 312 40 200 45 256 b 63 338 42 331 46 338 b 68 340 65 338 66 338 b 279 333 138 336 209 334 b 760 317 439 330 599 323 b 783 298 775 317 782 315 l 796 161 b 814 17 801 115 802 68 b 851 144 840 45 855 102 b 824 396 842 228 834 312 b 760 468 816 459 812 467 l 55 485 b 1 433 12 487 1 478 l 1 387 b 0 203 1 325 0 264 b 9 17 0 141 3 79 b 20 -9 9 7 6 -9 z m 403 3 b 439 6 413 3 425 4 b 477 42 464 9 474 22 b 478 62 478 49 478 55 l 478 84 b 465 160 478 109 478 135 b 449 173 461 167 459 173 b 354 105 386 179 354 156 b 359 71 354 95 356 84 b 360 65 360 69 360 66 b 403 3 372 14 373 3 z"},fermataLongBelow:{x_min:0,x_max:602,y_min:-335,y_max:7,ha:342,o:"m 793 -482 b 851 -444 822 -482 842 -471 b 867 -357 860 -416 867 -387 b 865 -336 867 -350 867 -343 b 851 -189 858 -287 855 -238 b 832 -32 847 -135 840 -84 b 824 -17 832 -26 832 -17 l 822 -17 b 805 -30 816 -19 806 -20 b 798 -88 802 -50 798 -69 b 805 -292 798 -157 801 -225 b 772 -327 806 -318 801 -327 b 360 -324 635 -327 497 -325 b 78 -327 265 -323 171 -327 b 50 -304 59 -327 50 -320 l 50 -297 b 62 -187 55 -261 60 -225 b 71 -60 62 -144 71 -102 b 68 -20 71 -48 71 -33 b 53 10 66 -10 69 10 l 52 10 b 22 -22 37 9 24 -1 b 14 -121 17 -55 16 -89 b 0 -359 10 -200 0 -279 b 6 -452 0 -390 3 -420 b 42 -481 9 -478 20 -481 l 415 -481 l 415 -482 z m 409 -183 b 454 -179 420 -183 435 -181 b 505 -124 487 -176 504 -158 b 505 -89 507 -112 505 -101 b 507 -58 505 -79 507 -68 b 505 -42 507 -52 507 -48 b 485 -10 503 -29 501 -10 b 448 -9 472 -9 461 -9 b 380 -22 425 -9 402 -12 b 363 -46 372 -27 363 -35 l 363 -49 b 364 -114 363 -71 361 -94 b 409 -183 374 -168 377 -183 z"},fermataVeryLongAbove:{x_min:0,x_max:715,y_min:-14.096346766617495,y_max:437,ha:451.0963467666175,o:"m 26 -20 b 42 -4 36 -22 39 -12 b 49 53 49 14 49 33 l 49 448 b 69 478 49 467 52 478 l 72 478 b 81 480 75 478 78 478 b 144 477 102 477 122 477 l 207 477 b 943 471 452 477 698 471 b 978 442 966 471 976 467 b 989 99 985 327 985 213 b 999 -19 991 60 995 22 b 1030 62 1028 6 1030 35 b 1021 507 1028 210 1025 359 b 1012 596 1021 537 1017 567 b 976 624 1009 618 998 624 b 507 626 819 624 662 625 b 46 629 353 628 200 629 b 7 590 19 629 7 618 b 0 101 7 428 0 264 b 16 -4 0 65 13 32 b 26 -20 17 -10 22 -19 z m 187 -9 b 207 30 206 -7 204 14 b 207 55 209 37 207 46 b 200 240 210 117 197 179 b 219 262 200 256 203 262 l 223 262 b 456 252 301 258 379 255 l 772 239 b 804 209 792 238 802 235 b 818 69 806 163 809 115 b 834 -4 821 46 816 19 b 857 56 852 13 857 35 b 851 183 857 99 858 141 b 827 360 841 242 841 301 b 786 390 821 383 809 389 b 189 409 588 403 387 402 b 153 377 163 409 153 400 b 173 27 153 259 150 143 b 187 -9 176 13 177 -9 z m 478 3 b 536 10 491 3 510 6 b 582 60 569 14 580 32 l 582 89 l 580 89 b 580 117 580 98 582 107 b 540 171 577 158 572 171 b 521 171 534 171 528 170 b 459 166 500 170 480 168 b 423 132 436 164 423 154 b 428 88 423 118 425 102 b 478 3 438 22 439 4 z"},fermataVeryLongBelow:{x_min:-.012345679012345682,x_max:686.4443937550029,y_min:-427,y_max:30,ha:457,o:"m 56 -615 b 282 -612 132 -612 207 -613 b 924 -606 497 -608 710 -606 b 973 -570 953 -606 968 -593 b 988 -455 984 -533 991 -494 b 982 -262 984 -390 982 -327 b 976 -69 982 -197 981 -134 b 976 -14 975 -50 976 -33 b 966 43 976 4 975 23 b 940 20 953 37 943 35 b 933 -76 936 -12 933 -45 b 935 -121 933 -91 933 -107 b 940 -307 940 -183 940 -245 l 940 -435 b 919 -458 940 -451 935 -458 b 894 -459 910 -458 903 -458 b 206 -467 665 -461 435 -467 b 88 -467 167 -467 127 -468 b 45 -425 45 -467 42 -465 b 46 -400 46 -416 46 -408 b 43 -325 46 -376 43 -350 b 42 -59 42 -236 42 -148 b 22 17 42 -32 36 -6 b 0 -27 -1 7 0 -10 b 7 -420 0 -158 7 -289 l 7 -474 b 16 -579 7 -510 7 -544 b 56 -615 22 -603 27 -615 z m 789 -390 b 835 -357 816 -392 829 -380 b 850 -256 844 -324 850 -291 b 848 -230 850 -248 850 -239 b 845 -135 845 -199 845 -167 l 845 -72 b 837 23 845 -40 848 -9 b 809 -27 809 14 809 -7 l 809 -222 b 788 -242 809 -238 805 -242 l 203 -229 b 180 -209 186 -229 180 -223 l 180 -160 b 179 -115 180 -145 180 -131 b 179 -50 177 -94 179 -72 b 163 24 179 -26 176 0 b 137 -6 145 19 140 10 b 134 -39 134 -17 134 -27 b 138 -105 134 -60 137 -82 l 138 -197 b 145 -343 138 -246 138 -294 b 179 -377 148 -364 151 -377 b 789 -390 383 -377 586 -380 z m 480 -164 b 566 -65 549 -164 566 -140 b 527 1 566 -10 564 1 b 436 -71 426 1 436 -9 l 436 -88 l 436 -143 b 454 -163 436 -153 439 -161 b 480 -164 464 -163 472 -164 z"},fermataShortAbove:{x_min:0,x_max:545,y_min:-18.08551453529649,y_max:348,ha:366.0855145352965,o:"m 16 -26 b 36 -9 26 -27 30 -16 b 354 340 143 107 249 223 b 369 348 360 346 364 348 b 382 341 373 348 377 346 l 530 199 b 743 0 599 131 672 68 b 753 -7 747 -3 750 -7 b 762 -1 756 -7 759 -6 b 785 84 776 10 785 48 b 768 150 785 112 779 138 l 399 491 b 379 501 392 498 384 501 b 357 488 372 501 364 495 b 27 137 248 370 141 251 b 1 84 12 121 1 105 b 3 69 1 79 1 75 b 0 55 1 65 0 59 b 9 1 0 36 9 20 b 16 -26 10 -7 3 -22 z m 357 24 b 367 27 360 24 363 24 b 431 118 422 42 431 49 b 429 151 431 130 431 141 b 400 193 428 171 429 193 b 333 147 359 193 333 176 b 341 42 333 111 337 78 b 357 24 343 30 346 24 z"},fermataShortBelow:{x_min:0,x_max:565,y_min:-335,y_max:10,ha:345,o:"m 386 -482 b 422 -455 395 -482 405 -474 b 732 -117 526 -343 631 -232 b 814 12 765 -79 799 -42 b 752 -22 780 14 768 -7 b 436 -320 645 -120 540 -219 b 419 -328 429 -325 425 -328 b 400 -318 413 -328 408 -325 b 35 0 279 -212 157 -105 b 16 14 29 4 23 14 b 7 12 13 14 10 14 b 0 -3 1 7 0 1 b 7 -23 0 -10 3 -17 b 20 -48 12 -30 14 -39 b 167 -238 60 -117 115 -177 b 351 -455 229 -310 289 -383 b 386 -482 367 -474 377 -482 z m 382 -213 b 406 -207 389 -213 396 -210 b 452 -156 431 -199 446 -180 b 461 -85 456 -132 458 -108 b 448 -32 461 -66 454 -49 b 418 -6 442 -12 431 -6 b 397 -9 410 -6 405 -7 b 348 -50 376 -14 350 -14 b 356 -170 348 -91 354 -130 b 382 -213 357 -199 363 -213 z"},breathMarkComma:{x_min:0,x_max:148,y_min:0,y_max:275,ha:275,o:"m 120 0 b 187 78 156 20 174 48 b 213 209 206 121 213 164 b 206 294 213 238 210 265 b 140 390 200 337 171 367 b 122 396 134 395 128 396 b 68 382 105 396 85 384 b 46 379 60 382 53 382 b 0 328 12 369 0 357 b 1 311 0 323 1 317 b 30 210 4 275 22 243 b 66 167 39 179 46 167 b 94 171 73 167 82 168 b 143 180 109 174 124 180 b 160 179 148 180 154 180 b 120 66 124 145 120 107 b 120 0 120 45 121 23 z"},breathMarkUpbow:{x_min:0,x_max:254,y_min:0,y_max:595,ha:595,o:"m 233 0 b 256 48 251 14 253 30 b 272 183 264 92 265 138 b 311 455 289 274 295 364 b 350 716 327 541 341 628 b 366 815 354 749 366 782 b 359 857 366 829 363 842 b 327 815 334 852 330 832 b 302 674 315 769 310 721 b 248 357 288 567 269 462 b 225 226 240 314 242 268 b 210 251 212 232 213 243 b 69 721 163 408 117 564 b 32 835 58 760 53 801 b 20 851 29 841 27 851 b 14 850 19 851 16 851 b 0 828 6 847 0 838 l 0 825 b 12 765 1 804 7 785 b 194 125 73 552 132 338 b 233 0 206 84 213 42 z"},caesura:{x_min:0,x_max:565.5831864753837,y_min:-.09016994374947417,y_max:562.4481112129314,ha:562.5382811566809,o:"m 0 76 b 49 122 24 92 37 107 b 444 613 180 287 305 455 b 528 770 484 660 518 708 b 531 792 530 778 531 785 b 524 808 531 799 530 805 b 490 792 513 815 498 802 b 390 683 456 756 420 721 b 48 262 275 543 164 400 b 0 76 0 207 7 145 z m 226 1 b 248 13 238 -4 243 7 l 353 137 b 759 638 490 302 632 464 b 814 805 795 688 819 740 b 779 786 796 805 788 796 b 628 609 724 732 678 668 b 310 242 523 485 416 363 b 217 69 265 190 217 140 b 222 30 217 58 219 45 b 222 23 222 29 220 26 b 220 12 222 20 220 16 b 226 1 220 7 222 3 z"},caesuraCurved:{x_min:0,x_max:386,y_min:-10,y_max:584,ha:594,o:"m 180 -14 b 246 14 213 -13 230 0 b 347 144 288 52 315 99 b 526 471 420 246 488 350 b 556 671 546 537 556 603 b 543 798 556 713 553 756 b 504 837 537 822 521 828 b 490 841 500 840 494 841 b 472 832 482 841 477 838 b 406 678 436 785 406 737 b 410 638 406 665 408 652 b 425 511 419 595 425 553 b 315 186 425 395 387 287 b 180 -14 271 122 228 58 z m 14 24 b 49 39 29 24 40 32 b 120 114 76 60 99 85 b 216 276 156 166 184 223 b 317 626 281 384 317 501 b 315 664 317 639 317 651 b 301 773 314 701 311 737 b 262 808 295 795 278 808 b 245 799 256 808 249 805 b 170 641 209 750 170 706 b 171 621 170 634 170 628 b 177 511 176 585 177 549 b 114 229 177 415 160 320 b 0 26 79 161 42 95 b 14 24 6 24 10 24 z"},restMaxima:{x_min:0,x_max:366,y_min:-255,y_max:255,ha:510,o:"m 397 -367 b 504 -343 436 -367 468 -347 b 518 -318 516 -341 518 -330 b 527 -30 518 -217 527 -117 b 526 33 527 -7 527 13 l 526 301 b 501 350 526 323 520 341 b 428 367 477 361 452 367 b 374 359 410 367 393 364 b 357 333 361 354 357 347 b 356 91 357 252 356 171 l 356 30 b 340 -307 357 -82 346 -194 b 397 -367 337 -354 350 -367 z m 46 -357 b 58 -356 49 -357 53 -357 b 154 -333 91 -351 121 -338 b 173 -305 168 -330 173 -320 l 173 302 b 132 356 173 330 157 348 b 68 364 112 363 89 364 b 3 304 19 363 1 348 l 3 4 l 0 4 b 1 -302 0 -98 0 -200 b 46 -357 1 -331 16 -357 z"},restDoubleWhole:{x_min:0,x_max:122,y_min:0,y_max:249,ha:249,o:"m 43 0 b 58 1 48 0 52 0 b 124 20 81 6 102 17 b 176 96 173 27 176 58 b 173 220 174 138 173 179 b 176 304 173 248 176 276 b 140 353 176 331 163 346 b 95 359 125 356 111 359 b 32 346 73 359 52 354 b 0 315 20 340 0 337 b 1 243 0 291 1 268 l 1 174 l 4 174 l 4 48 b 43 0 4 16 17 0 z"},restWhole:{x_min:.8908513171538642,x_max:500,y_min:-120,y_max:14,ha:134,o:"m 356 -173 l 356 -171 l 642 -171 b 719 -115 680 -171 717 -145 b 720 -82 719 -104 720 -92 b 711 -20 720 -60 719 -40 b 672 17 704 0 694 10 b 649 20 664 20 657 20 b 605 17 634 20 621 17 b 92 19 433 17 262 17 b 29 7 69 20 49 12 b 9 -17 12 4 9 -6 b 10 -43 9 -26 10 -35 b 1 -84 10 -58 3 -72 b 76 -173 0 -147 7 -173 z"},restWholeLegerLine:{x_min:-196.7269258015421,x_max:685,y_min:-157,y_max:29,ha:186,o:"m 96 -226 b 167 -223 121 -226 144 -225 b 300 -222 207 -222 252 -222 l 444 -222 b 660 -217 520 -222 595 -222 b 746 -131 703 -216 746 -200 b 744 -62 746 -108 747 -85 b 743 -39 743 -53 743 -46 b 789 -14 743 -16 752 -17 b 883 -16 821 -13 851 -16 b 965 -9 910 -16 937 -14 b 986 3 972 -7 986 -10 l 986 6 b 963 35 984 17 982 32 b 887 42 937 39 913 42 b 39 27 605 42 321 33 l -76 27 b -261 20 -138 27 -200 26 b -282 14 -269 20 -279 23 b -271 -7 -287 4 -276 -1 b -209 -27 -253 -23 -230 -24 b -153 -30 -190 -30 -173 -30 b -48 -29 -118 -30 -82 -27 b 6 -32 -22 -29 -6 -27 b 1 -72 3 -43 1 -58 b 4 -167 1 -105 7 -140 b 53 -223 3 -207 14 -217 b 96 -226 68 -226 82 -226 z"},restHalf:{x_min:0,x_max:518.3998530468286,y_min:0,y_max:162,ha:162,o:"m 98 0 l 556 0 b 665 1 592 0 629 0 b 746 82 720 3 743 29 b 736 174 749 114 740 144 b 670 232 729 215 708 232 b 570 229 636 232 603 229 b 356 233 498 229 426 233 l 73 233 b 0 179 19 233 0 220 b 1 154 0 171 0 164 b 6 95 4 135 6 115 b 98 0 3 27 29 0 z"},restHalfLegerLine:{x_min:-120,x_max:448.2056815990121,y_min:-20,y_max:143,ha:163,o:"m 397 -29 b 482 -23 426 -29 455 -27 b 526 -24 497 -24 511 -24 b 608 -17 554 -24 582 -23 b 645 -1 622 -14 644 -17 b 615 26 648 13 629 20 b 595 32 608 29 602 30 b 526 37 572 35 549 37 b 498 36 517 37 507 37 b 471 35 487 35 478 35 b 445 53 451 35 445 39 b 449 89 445 60 446 73 l 454 117 b 373 206 456 173 428 206 b 324 204 356 206 340 206 b 209 203 287 203 248 203 b 46 193 156 203 101 202 b 16 170 32 190 19 187 b 9 112 13 151 9 131 b 14 78 9 101 10 89 b 19 59 17 71 19 63 b -4 45 19 49 12 45 l -10 45 b -150 33 -58 45 -104 46 b -173 22 -158 32 -173 33 l -173 19 b -151 -13 -170 6 -168 -10 b -117 -17 -140 -16 -128 -17 b 118 -13 -37 -17 39 -13 b 397 -29 213 -13 308 -29 z"},restQuarter:{x_min:-.3784452492533808,x_max:263,y_min:-415,y_max:415,ha:830,o:"m 151 -596 b 164 -563 163 -589 161 -575 b 160 -546 164 -557 161 -552 b 124 -396 148 -495 135 -446 b 122 -380 122 -390 122 -384 b 199 -255 122 -331 158 -272 b 228 -256 209 -249 217 -253 b 324 -346 274 -271 298 -310 b 353 -369 331 -356 341 -369 b 360 -367 356 -369 357 -369 b 379 -336 373 -361 379 -348 l 377 -325 b 344 -232 372 -292 366 -258 b 249 -58 301 -180 278 -117 b 242 -36 245 -49 242 -42 b 258 -7 242 -26 248 -17 b 328 78 284 20 311 45 b 354 158 344 104 354 131 b 337 216 354 177 350 196 b 213 435 294 288 249 359 b 115 575 189 487 158 536 b 78 598 105 585 92 598 b 59 592 72 598 66 596 b 39 562 45 583 39 572 b 53 527 39 550 45 539 b 168 344 98 469 125 402 b 187 307 181 328 187 317 b 153 269 187 294 176 284 b 62 213 122 252 91 235 b 40 180 48 203 40 192 b 46 158 40 173 43 166 b 99 65 60 125 79 95 b 183 -79 131 20 160 -29 b 156 -86 173 -88 164 -85 b 0 -261 58 -99 -7 -173 b 96 -557 10 -366 49 -464 b 124 -585 102 -569 109 -580 b 145 -598 132 -588 138 -598 b 151 -596 147 -598 150 -598 z"},rest8th:{x_min:0,x_max:289,y_min:-260,y_max:261,ha:521,o:"m 164 -374 b 212 -340 190 -373 203 -357 b 276 -190 238 -292 258 -242 b 410 285 333 -36 359 128 b 416 314 413 294 416 304 l 416 321 b 393 354 415 341 410 354 b 382 353 389 354 386 354 b 292 311 347 347 315 333 b 174 225 256 276 216 251 b 157 219 168 222 163 219 b 140 228 151 219 145 222 b 131 246 134 233 131 240 b 135 262 131 252 132 256 b 147 298 141 272 147 285 b 127 367 147 323 154 354 b 94 376 114 373 102 376 b 48 336 75 376 63 363 b 3 181 20 288 12 235 b 0 150 1 170 0 160 b 109 24 0 84 35 24 b 171 36 127 24 148 27 b 289 101 213 52 248 75 b 164 -374 256 -62 193 -213 z"},rest16th:{x_min:0,x_max:333,y_min:-328.283950617284,y_max:244,ha:572.2839506172841,o:"m 209 -471 b 246 -458 222 -477 236 -468 b 307 -338 279 -425 300 -384 b 324 -226 312 -301 317 -262 b 428 161 350 -94 386 35 b 480 318 445 215 480 259 b 467 347 480 331 477 341 b 445 351 461 350 454 351 b 408 337 432 351 419 347 b 402 333 405 336 403 334 b 223 215 344 294 294 245 b 236 259 229 233 235 246 b 238 276 238 265 238 271 b 212 338 238 302 226 334 b 193 341 206 340 199 341 b 86 289 156 341 104 317 b 59 180 66 255 59 217 b 156 27 59 76 92 27 b 236 46 179 27 204 35 b 338 101 271 59 298 82 b 289 -49 312 49 302 0 b 196 -122 276 -99 235 -107 b 176 -114 187 -127 176 -127 l 176 -111 b 157 -53 177 -88 164 -72 b 69 -9 141 -7 101 -16 b 17 -48 43 -3 29 -27 b 0 -127 4 -73 0 -99 b 6 -186 0 -147 1 -167 b 82 -294 17 -262 37 -294 b 160 -276 102 -294 128 -289 b 219 -242 181 -268 203 -259 b 236 -230 223 -236 229 -230 b 243 -232 239 -230 240 -230 b 235 -275 248 -246 239 -261 b 202 -456 220 -334 202 -395 b 209 -471 202 -462 203 -468 z"},rest32nd:{x_min:0,x_max:347,y_min:-497.5023916875033,y_max:483,ha:980.5023916875033,o:"m 177 -716 b 217 -690 194 -720 209 -704 b 233 -655 225 -680 230 -668 b 292 -390 253 -567 275 -480 b 361 -48 312 -275 336 -161 b 452 400 393 102 422 252 b 497 629 467 477 482 553 b 500 647 498 635 500 641 b 480 691 500 665 492 684 b 464 696 475 694 469 696 b 418 674 448 696 431 685 l 361 626 b 333 611 353 618 343 612 b 308 629 325 611 317 616 b 239 667 292 651 265 661 b 204 670 228 668 216 670 b 86 559 141 670 95 628 b 85 537 86 552 85 544 b 107 416 85 495 95 455 b 161 372 114 389 134 372 b 174 373 166 372 170 372 b 226 383 192 374 209 377 b 387 478 285 402 330 444 b 364 386 379 444 364 415 b 276 271 364 323 320 298 b 265 266 272 268 268 266 b 252 276 261 266 256 269 b 143 333 229 311 186 333 b 107 327 130 333 118 330 b 43 243 62 314 46 291 b 58 145 43 210 52 179 b 150 63 68 92 99 63 b 315 132 213 63 259 98 b 266 -58 297 63 281 4 b 207 -101 259 -91 230 -96 b 186 -66 186 -107 199 -75 b 180 -50 181 -63 183 -55 b 101 -3 160 -23 135 -3 b 9 -66 59 -3 20 -32 b 0 -118 3 -84 0 -101 b 10 -196 0 -144 6 -170 b 104 -287 20 -256 52 -287 b 137 -282 114 -287 125 -287 b 184 -269 151 -281 171 -269 b 196 -275 190 -269 193 -271 b 199 -287 197 -278 199 -282 b 184 -343 199 -304 189 -325 b 181 -348 184 -346 183 -347 b 134 -595 158 -429 131 -508 b 156 -677 134 -624 150 -648 b 177 -716 158 -693 160 -713 z"},rest64th:{x_min:0,x_max:428,y_min:-720,y_max:473.6797408388932,ha:1193.6797408388932,o:"m 200 -1037 b 229 -1012 215 -1037 222 -1025 b 238 -984 233 -1004 236 -994 b 282 -780 248 -914 265 -848 b 386 -369 317 -644 354 -507 b 491 104 422 -212 451 -53 b 600 541 528 249 550 399 b 616 629 611 570 616 599 b 600 680 616 648 615 671 b 550 665 586 687 566 677 b 480 618 527 649 501 635 b 464 611 474 613 468 611 b 448 622 458 611 454 615 b 366 662 425 651 397 662 b 331 658 354 662 343 661 b 242 572 285 647 253 619 b 236 528 239 557 236 543 b 266 400 236 484 251 442 b 325 373 274 377 301 373 b 436 409 366 373 403 383 l 494 452 b 474 360 485 416 474 389 b 383 248 474 297 435 269 b 320 328 377 288 351 310 b 276 341 305 337 291 341 b 186 269 235 341 194 311 b 181 230 183 256 181 243 b 187 153 181 204 186 179 b 279 63 192 86 233 63 b 304 65 288 63 295 63 b 416 115 344 72 379 92 b 387 -14 406 69 397 27 b 320 -95 380 -52 369 -86 b 318 -79 320 -89 320 -84 b 223 0 305 -29 271 0 b 122 -81 171 0 135 -30 b 118 -127 120 -96 118 -112 l 118 -196 b 137 -242 118 -215 125 -229 b 209 -275 157 -266 181 -275 b 249 -269 222 -275 235 -274 b 318 -248 272 -264 294 -255 b 281 -390 315 -301 292 -344 b 276 -400 279 -393 279 -397 b 259 -420 272 -408 266 -416 b 246 -429 255 -425 251 -429 b 233 -415 242 -429 238 -426 b 176 -359 225 -389 200 -372 b 121 -346 158 -348 140 -346 b 14 -408 73 -346 27 -370 b 0 -498 4 -438 0 -468 b 6 -564 0 -520 3 -543 b 91 -635 12 -611 45 -635 b 131 -629 104 -635 117 -634 b 223 -590 163 -622 190 -603 b 166 -824 203 -671 189 -747 b 148 -912 157 -852 148 -881 b 156 -955 148 -926 150 -940 b 177 -1008 161 -972 170 -991 b 200 -1037 181 -1020 183 -1037 z"},rest128th:{x_min:.6717818579024267,x_max:491,y_min:-711,y_max:719,ha:1430,o:"m 233 -1015 b 271 -956 256 -1002 266 -981 l 314 -723 b 393 -350 337 -598 366 -474 b 543 312 442 -128 492 91 b 687 841 583 490 635 665 b 707 958 698 880 707 919 b 706 986 707 968 707 976 b 688 1025 704 999 704 1024 b 670 1027 683 1025 677 1027 b 629 1007 655 1027 639 1022 b 559 945 613 981 586 968 b 541 1004 553 968 559 991 b 456 1035 516 1024 488 1035 b 419 1030 444 1035 431 1034 b 344 953 379 1018 353 995 b 340 900 341 936 340 917 b 341 847 340 881 341 864 b 380 779 340 815 354 793 b 464 763 406 765 435 762 b 592 814 510 763 549 786 b 546 660 575 757 556 710 b 480 585 537 619 517 598 b 478 599 480 590 478 595 b 386 678 472 641 428 678 b 294 612 343 678 304 651 b 279 477 282 567 278 521 b 363 395 281 428 317 395 b 380 396 369 395 374 395 b 488 436 416 403 449 419 b 384 233 469 357 468 275 b 359 291 373 252 377 276 b 282 318 337 310 310 318 b 181 264 243 318 203 298 b 154 107 153 216 154 161 b 242 6 154 42 187 6 b 278 10 253 6 265 7 b 408 88 330 22 366 55 b 387 -1 400 56 393 27 b 301 -112 379 -55 354 -94 b 289 -65 297 -95 302 -79 b 219 -32 269 -42 245 -32 b 183 -37 207 -32 196 -35 b 112 -109 144 -46 121 -71 b 105 -219 104 -145 108 -183 b 186 -315 101 -276 134 -315 b 230 -307 199 -315 215 -312 b 324 -256 264 -295 292 -275 b 180 -491 323 -383 266 -471 b 183 -459 180 -480 180 -469 b 184 -442 184 -454 184 -448 l 184 -436 b 135 -369 184 -403 170 -383 b 102 -363 125 -364 114 -363 b 29 -399 73 -363 45 -376 b 1 -556 -4 -448 6 -503 b 109 -670 -4 -625 43 -670 b 140 -667 118 -670 130 -668 b 253 -616 180 -658 213 -638 b 238 -688 248 -644 242 -665 b 192 -959 220 -779 192 -867 b 193 -992 192 -971 192 -981 b 210 -1024 194 -1014 199 -1024 b 233 -1015 216 -1024 223 -1021 z"},dynamicPiano:{x_min:-49,x_max:326.5019318364244,y_min:-142,y_max:515,ha:657,o:"m -56 -204 b -42 -202 -52 -204 -46 -203 b -19 -194 -35 -202 -26 -197 b 147 -138 35 -170 91 -151 b 249 -58 194 -127 223 -95 b 262 -29 255 -50 262 -39 b 258 -17 262 -24 261 -20 b 232 -7 252 -10 242 -7 b 210 -12 225 -7 217 -9 b 125 -40 184 -23 157 -30 b 183 140 153 19 171 79 b 251 167 207 144 230 153 b 469 518 383 262 480 382 b 357 687 472 626 420 687 b 315 678 344 687 330 684 b 204 600 279 664 240 634 b 210 704 206 635 209 670 b 215 721 212 710 215 716 b 206 733 215 727 212 730 b 180 742 197 736 189 742 b 164 734 176 742 170 740 b 1 575 108 684 36 645 b -7 557 -1 569 -7 563 b -6 553 -7 556 -7 554 b 7 547 -3 547 3 547 l 17 547 b 82 575 43 547 59 567 l 82 452 b 56 46 82 317 81 180 b 17 -66 49 7 46 -36 b -62 -173 -13 -99 -37 -135 b -71 -192 -66 -179 -71 -184 b -68 -199 -71 -193 -69 -196 b -56 -204 -65 -203 -60 -204 z m 196 258 b 197 266 197 261 197 264 b 200 510 200 347 199 429 b 233 543 210 521 222 533 b 281 560 249 554 266 560 b 340 503 310 560 333 540 b 344 461 343 488 344 474 b 321 323 344 413 333 369 b 268 272 315 300 295 281 b 196 258 245 265 220 261 z"},dynamicMezzo:{x_min:-18,x_max:559,y_min:-50,y_max:365,ha:415,o:"m 43 -71 b 160 19 86 -71 143 -26 b 230 264 189 99 200 184 b 282 363 243 297 259 327 b 287 320 285 347 287 333 b 284 279 287 305 285 292 l 249 -12 b 275 -43 248 -29 245 -43 b 395 45 321 -43 389 3 b 462 271 406 124 436 197 b 523 387 475 310 490 348 l 523 346 b 504 130 521 274 513 202 b 501 81 501 114 501 98 b 510 3 501 55 504 29 b 580 -72 521 -48 543 -72 b 625 -63 593 -72 608 -69 b 789 50 690 -43 744 -3 b 805 72 795 56 805 63 b 798 85 805 76 802 81 b 778 94 792 91 785 94 b 755 85 770 94 763 91 l 693 40 b 675 33 685 36 680 33 b 658 52 668 33 662 39 b 645 144 651 82 645 112 b 658 448 641 246 660 346 b 606 507 658 485 638 507 b 583 504 599 507 592 505 b 495 446 547 497 521 471 b 420 373 471 423 448 399 b 413 458 418 406 418 432 b 361 507 408 490 386 507 b 320 491 347 507 333 501 b 160 307 256 444 207 382 l 160 337 b 174 488 160 387 174 438 b 156 521 174 501 173 513 b 137 526 148 524 143 526 b 109 513 127 526 118 520 b -16 399 66 477 23 439 b -26 383 -20 395 -26 389 l -26 379 b -14 370 -24 372 -20 370 b -6 372 -12 370 -9 372 b 19 376 4 374 12 376 b 36 359 32 376 36 370 b 30 330 36 350 35 341 l 30 323 b 9 -35 23 203 17 85 b 43 -71 6 -65 19 -71 z"},dynamicForte:{x_min:-144,x_max:311.30112136775,y_min:-115.3876295915697,y_max:504,ha:619.3876295915697,o:"m -101 -166 b 173 76 7 -153 150 -30 b 206 344 192 164 202 253 b 268 338 226 343 246 341 b 384 395 317 333 353 361 b 397 419 393 405 397 412 b 367 442 397 429 387 436 b 350 444 361 444 356 444 b 206 455 302 449 255 454 l 206 474 b 202 540 204 495 202 518 b 209 593 202 557 203 576 b 236 624 215 613 225 624 b 265 612 245 624 253 619 b 308 552 287 596 302 577 b 336 533 312 534 323 533 b 448 611 366 533 444 583 b 399 696 452 648 423 671 b 382 706 395 700 387 703 b 308 726 357 720 333 726 b 207 684 272 726 239 711 b 60 455 135 622 60 560 l 10 455 b -23 448 -1 455 -13 454 b -102 372 -55 426 -76 397 b -109 357 -108 367 -109 361 b -95 347 -109 353 -105 348 b -63 346 -84 346 -73 346 b 0 344 -43 344 -22 344 l 63 344 b 53 186 63 291 59 239 b 23 0 46 124 42 60 b -35 -60 10 -42 -6 -60 b -73 -52 -45 -60 -58 -58 b -91 -48 -79 -49 -85 -48 b -109 -53 -96 -48 -102 -49 b -199 -124 -143 -72 -168 -99 b -207 -137 -203 -128 -207 -132 b -194 -148 -207 -141 -203 -145 b -101 -166 -164 -160 -132 -168 z"},dynamicRinforzando:{x_min:-75,x_max:322.0960720195126,y_min:-90,y_max:325,ha:415,o:"m 23 -130 b 40 -125 27 -130 33 -128 b 128 -9 81 -114 125 -53 b 145 200 132 62 141 130 b 148 238 147 212 148 225 b 308 321 184 291 245 321 b 363 314 325 321 344 318 b 377 310 369 312 373 310 b 384 311 380 310 382 310 b 464 415 410 317 464 389 b 446 433 465 429 455 429 b 390 445 428 441 409 445 b 305 429 361 445 334 438 b 167 346 252 413 202 393 b 153 325 163 338 158 333 b 148 438 154 363 151 399 b 121 468 147 456 134 468 b 101 458 115 468 108 465 b -63 310 46 409 -16 367 b -108 240 -78 289 -98 271 b 32 330 -50 256 -13 297 b 37 304 37 320 37 312 l 37 292 b 10 -101 27 161 20 30 b 23 -130 9 -120 12 -130 z"},dynamicSforzando:{x_min:0,x_max:296,y_min:0,y_max:379,ha:379,o:"m 151 0 b 174 1 160 0 166 0 b 392 158 272 14 346 71 b 405 207 400 174 405 190 b 359 287 405 236 389 265 b 261 325 328 308 294 315 b 168 413 216 340 181 366 b 166 426 167 418 166 423 b 176 438 166 432 167 436 b 199 441 183 441 190 441 b 310 393 238 441 295 422 b 334 370 317 376 325 370 b 363 386 343 370 353 379 b 422 445 386 402 408 420 b 426 458 425 449 426 454 b 422 469 426 462 425 465 b 274 546 395 518 333 546 b 161 503 232 546 190 531 b 86 405 132 472 108 439 b 71 347 75 387 71 367 b 112 256 71 312 85 279 b 209 215 141 232 176 226 b 284 168 238 206 266 197 b 300 131 291 157 300 144 b 298 120 300 127 298 122 b 278 107 294 109 285 108 b 262 108 271 107 266 108 l 259 108 b 114 157 200 107 156 125 b 96 181 104 163 96 170 l 96 184 b 102 202 96 190 102 196 b 96 209 102 204 101 207 b 63 194 82 215 72 204 b 7 109 42 168 26 138 b 0 86 3 101 0 94 b 13 60 0 78 4 68 b 151 0 53 23 101 0 z"},dynamicZ:{x_min:-42.73880183193087,x_max:331,y_min:0,y_max:328,ha:328,o:"m -45 0 b -6 16 -32 0 -17 10 b 3 20 -3 16 0 19 b 144 60 49 48 96 60 b 284 22 190 60 238 46 b 348 4 305 10 327 4 b 461 75 393 4 435 30 b 468 91 464 81 467 86 b 456 104 468 95 465 99 b 287 173 402 131 348 167 b 239 176 271 174 255 176 b 168 174 217 176 194 174 b 367 340 236 236 298 294 b 459 423 402 363 432 392 b 477 454 467 431 475 442 b 474 462 477 456 475 459 b 454 472 469 469 462 472 b 432 468 446 472 439 469 b 356 448 406 461 380 455 b 210 422 307 433 258 422 b 109 442 177 422 144 428 b 94 445 104 444 99 445 b 69 433 85 445 76 442 b 27 390 56 419 39 406 b -9 343 16 373 -17 357 b 63 311 3 320 36 314 l 78 311 b 132 307 95 308 114 307 b 240 314 168 307 203 311 l 193 271 b -37 50 117 196 19 145 b -59 7 -46 36 -69 20 b -45 0 -55 3 -50 0 z"},ornamentTrill:{x_min:1,x_max:551,y_min:-18,y_max:539,ha:557,o:"m 321 612 b 190 602 278 605 235 605 l 190 638 b 187 693 190 652 190 667 b 161 776 184 717 193 776 b 137 747 150 776 137 766 b 130 654 135 716 131 685 l 130 596 l 52 588 b 4 539 23 585 7 570 b 1 477 3 530 1 500 b 3 448 1 461 3 448 l 3 452 b 53 432 6 436 23 432 b 134 435 75 432 102 433 b 151 117 138 328 147 223 b 170 13 153 82 157 46 b 209 -26 179 -10 193 -26 b 222 -22 213 -26 217 -24 b 269 -17 233 -16 253 -27 b 343 135 325 19 346 66 b 343 158 343 147 344 147 b 323 192 341 171 337 187 b 291 176 311 194 300 184 l 264 148 b 229 131 261 145 238 131 b 212 170 209 131 213 154 b 194 438 203 259 199 348 l 272 442 b 284 452 276 441 279 441 b 305 462 287 461 295 462 l 312 462 b 346 477 325 462 340 464 b 366 560 357 503 366 531 b 321 612 366 598 356 618 z m 759 588 b 711 560 749 592 733 570 b 588 500 671 541 631 521 b 583 533 586 514 586 524 b 560 576 577 549 577 572 b 517 550 541 582 528 564 b 416 423 482 508 452 462 b 382 353 392 397 384 370 b 387 305 380 341 386 318 b 392 275 389 295 392 285 b 409 243 393 262 393 243 b 431 262 419 243 425 255 b 521 373 459 298 488 333 b 523 354 521 366 523 360 b 520 337 523 346 521 340 b 508 295 513 323 508 310 b 530 102 508 279 524 122 b 549 66 533 88 530 66 b 577 99 563 66 572 84 b 580 131 580 109 580 121 l 580 302 b 600 347 580 318 582 337 b 701 392 632 364 665 384 b 793 518 785 409 793 435 b 759 588 793 559 785 576 z"},ornamentTurn:{x_min:0,x_max:574,y_min:0,y_max:312,ha:312,o:"m 651 0 b 816 132 727 0 796 46 b 827 223 822 163 827 193 b 808 340 827 262 821 301 b 665 449 785 408 729 449 b 636 446 655 449 647 448 b 589 384 600 441 586 422 l 602 300 b 611 285 603 291 605 285 b 621 288 613 285 616 287 b 655 295 632 294 644 295 b 711 284 674 295 693 289 b 773 209 740 275 773 232 b 697 156 773 184 734 160 b 664 154 685 154 675 154 b 579 168 635 154 608 158 b 455 242 533 186 495 213 b 261 400 387 291 331 354 b 160 432 225 422 190 432 b 20 328 98 432 49 392 b 0 229 6 295 0 262 b 30 71 0 176 14 122 b 144 3 43 29 96 3 b 168 6 153 3 160 4 b 248 122 233 20 248 39 b 246 147 248 124 248 135 b 226 177 243 164 239 177 b 206 170 220 177 215 174 b 144 154 186 158 166 154 b 79 170 122 154 101 160 b 53 202 62 179 53 189 b 60 228 53 209 55 217 b 161 281 81 261 120 281 b 183 279 168 281 176 281 b 325 190 243 269 284 229 b 572 16 402 124 475 53 b 651 0 598 6 625 0 z"},ornamentTurnSlash:{x_min:0,x_max:574,y_min:-106,y_max:405,ha:511,o:"m 441 -153 b 456 -60 455 -118 456 -89 b 455 81 455 -14 455 33 b 572 14 491 55 530 30 b 651 -1 598 4 625 -1 b 816 131 727 -1 796 45 b 827 222 822 161 827 192 b 808 338 827 261 821 300 b 665 448 785 406 729 448 b 636 445 655 448 647 446 b 589 383 600 439 586 420 l 602 298 b 611 284 603 289 605 284 b 621 287 613 284 616 285 b 655 294 632 292 644 294 b 711 282 674 294 693 288 b 773 207 740 274 773 230 b 697 154 773 183 734 158 b 664 153 685 153 675 153 b 579 167 635 153 608 157 b 455 240 533 183 495 212 b 454 242 455 240 455 242 l 454 337 b 452 488 454 386 452 439 b 433 570 452 517 451 546 b 425 583 431 575 431 583 l 422 583 b 403 566 415 582 408 573 b 402 546 400 560 402 553 l 397 287 b 261 399 353 325 310 366 b 160 431 225 420 190 431 b 20 327 98 431 48 390 b 0 228 6 294 0 261 b 30 69 0 174 14 121 b 144 1 43 27 96 1 b 168 4 153 1 160 3 b 248 121 233 19 248 37 b 246 145 248 122 248 134 b 226 176 243 163 239 176 b 206 168 220 176 215 173 b 144 153 186 157 166 153 b 79 168 122 153 101 158 b 53 200 62 177 53 187 b 60 226 53 207 55 216 b 161 279 79 259 120 279 b 183 278 168 279 176 279 b 325 189 243 266 282 226 b 395 130 348 168 372 148 b 393 71 393 109 393 89 b 441 -153 390 -6 402 -78 z"},ornamentMordent:{x_min:0,x_max:700,y_min:0,y_max:497,ha:497,o:"m 513 0 b 528 39 526 14 527 27 b 531 72 531 50 531 60 b 528 138 531 94 528 117 l 528 347 b 552 359 537 354 544 359 b 579 338 560 359 569 353 b 674 217 609 297 639 255 b 719 190 690 200 704 190 b 759 215 732 190 744 197 b 940 395 815 279 877 337 b 1001 490 968 422 986 455 b 1008 513 1004 495 1008 505 b 1002 524 1008 517 1007 521 b 968 516 994 530 978 524 b 960 508 965 513 963 510 b 798 356 900 464 848 410 b 778 341 791 347 783 341 b 757 354 772 341 765 346 b 661 475 720 392 690 432 b 611 517 644 504 629 517 b 563 498 598 517 583 511 b 527 471 550 490 539 481 l 527 570 b 492 716 526 619 523 671 b 472 677 480 704 472 694 b 465 399 474 585 468 491 b 439 366 456 387 448 376 b 384 320 415 336 399 320 b 330 367 369 320 354 336 b 325 376 328 369 327 373 b 226 490 291 413 265 456 b 189 505 213 500 202 505 b 157 491 177 505 167 500 b 0 229 75 420 0 346 b 1 202 0 220 0 212 b 22 215 12 203 16 209 b 124 327 55 252 89 289 b 147 343 132 337 140 343 b 171 323 156 343 164 336 b 266 197 196 276 232 236 b 337 157 291 170 314 157 b 410 207 361 157 386 174 b 461 274 428 229 444 252 b 462 166 461 238 461 202 b 513 0 465 108 487 55 z"},ornamentShortTrill:{x_min:0,x_max:747,y_min:0,y_max:243,ha:243,o:"m 379 0 b 428 14 395 0 410 4 b 474 56 445 26 461 39 b 552 157 500 89 526 122 b 566 168 556 163 560 168 b 575 157 569 168 572 166 b 664 36 592 107 628 72 b 733 1 685 13 710 1 b 802 35 757 1 780 13 b 1007 249 871 105 940 177 b 1067 324 1028 272 1054 295 b 1076 340 1068 330 1076 334 b 1073 346 1076 341 1076 343 b 1057 350 1068 348 1063 350 b 1047 347 1053 350 1050 350 b 1001 310 1031 336 1015 324 l 857 157 b 844 143 852 153 848 143 b 835 150 841 143 838 144 b 757 242 815 186 780 209 b 685 298 739 268 713 284 b 641 310 670 305 655 310 b 590 288 625 310 608 304 b 497 179 554 256 527 215 b 480 164 490 170 485 164 b 462 179 474 164 469 168 b 372 295 436 220 405 258 b 278 344 346 324 312 344 b 199 310 252 344 226 334 b 92 196 161 274 128 233 b 0 24 46 148 23 89 b 42 48 22 27 32 37 b 156 168 84 85 114 132 b 196 192 174 184 186 192 b 228 158 206 192 215 181 b 312 36 252 114 282 75 b 379 0 331 12 354 0 z"},ornamentTremblement:{x_min:0,x_max:982.17691453624,y_min:0,y_max:224,ha:224,o:"m 0 0 b 63 36 30 12 48 23 b 157 124 94 66 125 94 b 177 135 164 131 170 135 b 196 122 183 135 189 131 b 268 40 217 94 245 68 b 323 6 288 16 304 6 b 369 20 336 6 350 10 b 412 53 384 29 399 40 b 501 145 442 84 472 114 b 523 158 508 154 516 158 b 543 145 528 158 536 154 b 641 45 576 112 608 78 b 698 17 658 27 677 17 b 729 23 708 17 719 20 b 804 65 756 32 780 46 b 904 154 837 95 871 124 b 920 163 910 160 916 163 b 936 153 924 163 930 160 b 1024 60 965 121 996 92 b 1112 13 1053 29 1080 13 b 1184 39 1135 13 1158 22 b 1359 194 1248 84 1305 138 b 1413 301 1388 223 1403 261 b 1404 323 1417 315 1413 323 b 1391 320 1400 323 1395 321 b 1344 294 1375 314 1358 307 b 1224 186 1305 258 1269 216 b 1194 173 1212 179 1202 173 b 1165 193 1184 173 1175 179 b 1096 271 1145 222 1122 248 b 1001 318 1061 302 1031 318 b 903 268 969 318 937 301 b 806 186 871 239 841 210 b 782 174 796 179 789 174 b 756 193 773 174 765 180 b 652 291 729 232 693 266 b 596 308 634 302 615 308 b 530 278 573 308 552 298 l 415 168 b 393 157 408 161 400 157 b 373 171 387 157 380 161 b 305 245 353 197 330 222 b 248 276 285 266 266 278 b 189 245 229 276 210 266 b 81 144 156 209 120 174 b 0 0 33 109 26 56 z"},ornamentPrecompAppoggTrill:{x_min:-.11067192132025548,x_max:1066,y_min:-50,y_max:533.1706452421108,ha:583.1706452421108,o:"m 187 -46 b 213 -14 197 -37 204 -26 b 285 151 251 36 266 94 b 304 189 294 177 297 189 b 337 168 311 189 320 181 b 458 33 386 131 415 76 b 495 12 472 19 484 12 b 531 40 508 12 518 22 b 580 168 557 79 569 124 b 622 235 592 213 603 235 b 683 194 636 235 655 222 b 838 26 737 140 791 86 b 919 -33 860 -1 881 -39 b 984 53 960 -27 971 19 b 1022 156 998 86 1008 122 b 1054 190 1032 179 1041 190 b 1089 167 1063 190 1074 183 b 1208 32 1129 122 1171 78 b 1244 10 1221 17 1231 10 b 1273 22 1253 10 1263 14 b 1496 206 1352 78 1427 137 b 1535 310 1526 236 1535 272 b 1531 359 1535 325 1534 343 b 1496 343 1515 360 1506 351 l 1309 192 b 1269 167 1289 176 1279 167 b 1234 199 1260 167 1251 177 b 1122 324 1200 243 1168 289 b 1074 344 1106 337 1089 344 b 1014 301 1051 344 1030 328 b 952 144 985 252 971 197 b 933 121 946 128 940 121 b 910 137 927 121 920 125 b 850 210 888 161 870 186 b 687 369 799 266 750 325 b 631 390 665 383 647 390 b 567 327 602 390 580 369 b 527 199 554 284 543 242 b 508 168 520 179 514 168 b 482 192 503 168 495 177 b 353 328 444 240 405 292 b 312 343 338 338 324 343 b 266 297 292 343 276 327 b 204 125 248 239 232 180 b 143 79 193 102 173 79 b 92 122 117 79 105 102 b 81 154 86 131 84 143 b 48 423 59 242 50 333 b 45 544 46 464 45 504 b 53 730 45 606 48 668 b 40 768 55 744 52 766 b 13 730 19 770 14 747 b 0 514 7 658 -1 586 b 26 122 3 383 6 252 b 75 -36 35 66 40 10 b 134 -72 92 -59 112 -72 b 187 -46 151 -72 170 -63 z"},ornamentPrecompSlideTrillDAnglebert:{x_min:0,x_max:1088,y_min:-380,y_max:252,ha:632,o:"m 560 -539 b 439 -481 527 -497 484 -485 b 354 -461 409 -478 380 -477 b 131 -154 236 -389 161 -285 b 124 -98 127 -135 124 -117 b 196 55 124 -40 148 10 b 308 99 230 86 268 99 b 399 81 337 99 367 92 b 514 22 441 66 477 43 b 619 -30 567 -9 590 -30 b 719 17 642 -30 670 -16 b 861 131 769 52 818 88 b 899 150 874 144 887 150 b 936 117 913 150 926 138 b 965 43 948 94 956 68 b 1007 -1 973 24 978 -1 b 1048 30 1025 -1 1037 16 b 1070 65 1057 40 1064 52 b 1110 148 1084 92 1096 121 b 1145 190 1120 164 1120 190 b 1191 153 1169 192 1179 168 b 1256 29 1218 115 1231 68 b 1292 1 1267 10 1277 1 b 1320 10 1300 1 1309 4 b 1369 48 1339 19 1355 33 b 1515 196 1418 96 1464 148 b 1567 343 1558 238 1567 287 b 1555 363 1565 357 1562 363 b 1539 356 1551 363 1547 360 b 1433 268 1502 330 1466 301 b 1335 171 1401 236 1374 199 b 1310 163 1325 166 1318 163 b 1286 183 1302 163 1293 168 b 1218 311 1264 226 1247 272 b 1164 351 1200 337 1182 351 b 1110 308 1146 351 1128 337 b 1031 176 1084 265 1058 219 b 1015 161 1025 166 1021 161 b 999 179 1009 161 1005 167 b 955 279 985 213 973 248 b 913 307 943 300 930 307 b 887 302 904 307 896 305 b 852 281 874 298 863 291 b 693 167 804 236 747 204 b 612 140 667 150 639 140 b 549 157 592 140 570 145 b 403 220 503 181 452 202 b 271 248 360 236 315 248 b 179 229 239 248 209 242 b 0 -29 65 180 0 85 b 9 -104 0 -53 3 -78 b 397 -526 56 -317 183 -464 b 505 -547 432 -536 468 -547 b 560 -539 524 -547 541 -544 z"},ornamentPrecompSlideTrillBach:{x_min:0,x_max:1185,y_min:-380,y_max:465,ha:845,o:"m 624 -544 b 642 -528 638 -543 642 -537 b 639 -514 642 -524 642 -520 b 590 -444 629 -487 609 -467 b 523 -413 573 -422 553 -410 b 498 -415 514 -415 507 -415 b 399 -389 464 -415 431 -405 b 89 -157 281 -330 176 -255 b 72 -117 78 -144 72 -131 b 73 -101 72 -111 72 -107 b 187 186 91 3 147 91 b 246 230 200 216 222 230 b 300 209 262 230 281 223 b 456 48 359 163 403 101 b 540 -10 494 10 518 -10 b 625 59 566 -10 589 13 b 690 148 648 88 668 118 b 711 167 697 160 704 167 b 733 153 719 167 724 163 b 844 14 769 105 808 60 b 903 -42 873 -23 886 -42 b 973 -1 919 -42 937 -27 b 1008 33 986 7 996 20 b 1048 81 1021 48 1035 65 b 1050 37 1048 66 1050 52 b 1047 -24 1050 17 1048 -3 b 1038 -275 1038 -108 1040 -192 l 1037 -289 b 1045 -302 1037 -295 1038 -301 b 1068 -284 1056 -304 1064 -292 b 1084 -242 1076 -271 1081 -256 b 1099 -109 1096 -199 1099 -154 b 1106 158 1099 -19 1106 71 b 1128 187 1113 167 1120 177 b 1168 223 1143 212 1155 223 b 1210 193 1179 223 1191 213 b 1220 183 1214 190 1215 186 b 1329 36 1261 138 1292 84 b 1374 7 1345 16 1358 7 b 1411 20 1384 7 1395 12 b 1479 84 1437 37 1459 59 b 1610 235 1521 135 1564 186 b 1706 403 1655 282 1695 334 b 1614 346 1663 400 1637 373 b 1464 170 1564 287 1515 228 b 1440 150 1453 156 1447 150 b 1414 173 1433 150 1426 158 b 1283 336 1371 228 1333 288 b 1220 366 1261 356 1240 366 b 1148 318 1194 366 1169 350 b 1103 255 1133 297 1119 275 b 1097 301 1102 271 1100 285 b 1099 334 1099 312 1099 324 b 1092 428 1099 367 1094 397 b 1071 647 1087 501 1079 575 b 1058 670 1071 657 1071 670 b 1035 648 1047 670 1038 661 b 1018 516 1024 605 1015 560 b 1041 203 1025 412 1037 307 b 1043 180 1041 196 1043 187 b 992 127 1027 161 1009 143 b 965 111 981 117 972 111 b 936 132 955 111 946 120 b 829 268 900 179 867 225 b 760 317 801 301 780 317 b 691 258 739 317 719 297 b 605 147 664 219 641 177 b 589 138 599 141 593 138 b 572 148 583 138 579 141 b 415 317 520 206 467 261 b 327 372 390 343 366 366 b 300 373 317 373 308 373 b 154 295 239 373 190 348 b 55 138 120 243 85 192 b 0 -53 22 79 0 13 b 160 -317 0 -156 49 -252 b 209 -354 177 -327 192 -343 b 510 -531 305 -419 397 -495 b 593 -547 537 -540 564 -547 b 624 -544 603 -547 613 -546 z"},ornamentPrecompTrillSuffixDandrieu:{x_min:0,x_max:1003,y_min:-20,y_max:521,ha:541,o:"m 791 -16 b 844 33 812 -3 829 14 b 981 271 900 107 937 190 b 994 288 984 278 985 288 b 1009 269 1004 288 1007 278 b 1077 112 1034 217 1051 163 b 1158 43 1103 62 1129 43 b 1231 69 1179 43 1204 55 b 1348 189 1280 98 1315 143 b 1444 451 1407 271 1444 357 b 1431 547 1444 482 1440 514 b 1188 750 1401 665 1299 750 b 1158 747 1178 750 1168 749 b 1079 684 1119 742 1089 727 b 1063 632 1076 665 1071 648 b 1056 609 1058 622 1056 615 b 1071 599 1056 602 1060 599 b 1086 600 1076 599 1080 600 b 1130 605 1102 603 1116 605 b 1244 569 1171 605 1210 595 b 1349 346 1322 511 1349 433 b 1348 312 1349 334 1349 324 b 1289 197 1345 266 1325 228 b 1238 174 1270 181 1253 174 b 1188 215 1220 174 1202 187 b 1145 308 1172 245 1159 276 b 1096 413 1129 343 1120 382 b 1053 438 1084 431 1068 438 b 1011 413 1038 438 1022 431 b 955 324 989 384 971 354 b 850 127 920 258 886 192 b 838 112 847 121 842 112 b 824 128 828 109 825 121 b 802 193 815 150 809 171 b 730 400 779 264 766 337 b 688 431 719 420 703 431 b 647 403 674 431 660 422 b 606 338 632 383 619 361 b 513 167 575 282 546 223 b 480 122 503 150 498 122 b 452 171 459 122 459 153 b 420 255 442 199 432 228 b 337 408 399 308 380 364 b 276 436 317 428 297 436 b 215 397 253 436 230 423 b 23 72 148 289 81 184 b 0 29 17 59 0 40 b 7 17 0 23 1 20 b 59 58 26 7 46 39 b 190 276 111 127 143 206 b 216 301 202 292 207 301 b 245 279 223 301 232 294 b 311 166 278 248 292 206 b 367 16 331 117 346 65 b 402 -19 377 -7 387 -19 b 438 -4 412 -19 423 -13 b 518 88 474 17 495 55 b 628 284 562 150 592 216 b 657 223 648 266 651 243 b 717 13 677 154 696 84 b 755 -29 726 -16 737 -29 b 791 -16 765 -29 776 -24 z"},ornamentPrecompDoubleCadenceUpperPrefix:{x_min:0,x_max:1246,y_min:-30,y_max:296.0302860502196,ha:326.0302860502196,o:"m 360 -43 b 559 59 445 -43 503 7 b 698 236 615 111 652 179 b 714 248 704 243 710 248 b 727 235 719 248 721 243 l 848 42 b 883 12 860 22 870 12 b 917 32 891 12 903 19 b 946 62 927 42 939 50 b 1037 192 972 108 1009 147 b 1057 210 1044 204 1051 210 b 1076 190 1063 210 1068 203 l 1176 12 b 1215 -19 1188 -9 1201 -19 b 1250 -6 1225 -19 1237 -14 b 1284 27 1264 3 1274 16 b 1380 190 1323 78 1351 135 b 1395 210 1384 197 1385 210 b 1413 190 1405 210 1410 197 b 1508 40 1436 134 1467 85 b 1564 3 1529 14 1547 3 b 1617 32 1580 3 1597 12 b 1767 238 1678 92 1719 167 b 1794 310 1781 259 1791 282 b 1752 294 1776 317 1764 304 b 1656 164 1711 258 1689 206 b 1629 144 1646 151 1637 144 b 1603 161 1620 144 1613 150 b 1502 315 1562 207 1525 258 b 1452 357 1490 344 1470 357 b 1397 320 1431 357 1411 344 b 1316 170 1368 271 1345 219 b 1280 127 1306 154 1303 127 b 1244 171 1256 127 1254 154 b 1145 337 1210 226 1179 282 b 1110 363 1135 354 1122 363 b 1070 338 1097 363 1084 354 b 1050 311 1063 330 1057 320 b 959 181 1017 271 992 223 b 939 167 950 173 945 167 b 920 184 933 167 927 173 b 818 343 887 238 852 291 b 759 395 795 377 778 395 b 701 344 742 395 724 377 b 698 338 700 341 700 340 b 544 154 652 272 605 207 b 412 98 501 117 458 98 b 304 130 377 98 341 108 b 95 373 204 187 144 275 b 58 426 85 393 82 428 b 19 366 26 426 26 389 b 0 307 13 346 0 327 b 4 287 0 300 1 294 b 174 36 49 194 91 102 b 360 -43 230 -9 289 -43 z"},ornamentPrecompDoubleCadenceUpperPrefixTurn:{x_min:0,x_max:1226,y_min:-237,y_max:436,ha:673,o:"m 1279 -341 b 1293 -252 1293 -307 1295 -278 b 1277 36 1287 -156 1282 -59 l 1273 118 b 1318 176 1289 137 1303 157 b 1349 203 1332 193 1342 203 b 1378 168 1359 203 1367 192 b 1456 35 1401 122 1428 78 b 1511 -12 1476 3 1493 -12 b 1568 23 1526 -12 1544 0 b 1597 53 1578 32 1588 42 b 1705 186 1629 101 1669 143 b 1761 284 1728 216 1751 246 b 1765 300 1763 288 1765 295 b 1763 307 1765 302 1765 305 b 1737 302 1754 311 1744 308 b 1718 287 1729 298 1725 292 b 1598 145 1673 245 1637 194 b 1578 130 1590 135 1584 130 b 1557 147 1571 130 1565 135 b 1447 321 1516 202 1488 265 b 1403 351 1433 341 1417 351 b 1358 323 1388 351 1372 341 b 1269 209 1329 285 1299 248 b 1254 521 1264 314 1259 418 b 1228 616 1253 554 1247 588 b 1218 628 1224 621 1223 628 l 1215 628 b 1201 613 1210 626 1202 619 b 1200 600 1200 609 1200 605 l 1200 586 b 1211 348 1204 507 1207 428 b 1217 166 1214 288 1215 226 b 1202 181 1212 168 1208 174 b 1094 334 1168 233 1130 284 b 1048 366 1079 356 1064 366 b 1004 331 1034 366 1018 354 b 904 154 969 275 930 220 b 873 202 887 171 880 187 b 778 356 845 256 819 311 b 737 379 763 372 750 379 b 698 353 724 379 711 370 l 621 232 b 415 114 570 154 495 114 b 302 138 377 114 340 121 b 73 400 187 192 117 284 b 55 420 69 415 62 420 b 42 410 50 420 45 416 b 0 292 23 373 0 334 b 4 262 0 282 1 272 b 168 39 32 168 92 99 b 359 -26 225 -6 292 -26 b 585 76 446 -26 530 10 b 668 202 616 115 641 160 b 693 228 680 219 687 228 b 720 203 700 228 707 219 b 801 63 752 160 775 111 b 844 7 812 42 818 7 b 910 66 877 6 894 39 b 923 94 916 75 919 85 b 995 219 945 137 968 179 b 1025 184 1009 210 1017 197 b 1119 56 1054 141 1087 98 b 1166 20 1138 32 1152 20 b 1215 50 1181 20 1195 30 b 1221 56 1217 52 1218 55 b 1228 -163 1223 -17 1225 -89 b 1279 -341 1231 -223 1251 -278 z"},ornamentPrecompTrillLowerSuffix:{x_min:0,x_max:833,y_min:-309,y_max:319,ha:628,o:"m 778 -444 b 801 -445 785 -444 793 -445 b 1037 -338 894 -445 969 -397 b 1200 37 1149 -240 1200 -109 b 1084 406 1200 171 1172 300 b 1024 444 1064 431 1043 444 b 960 390 999 444 978 426 b 841 163 923 314 886 236 b 812 128 832 150 827 128 b 786 167 796 130 793 153 b 660 418 744 251 716 341 b 599 459 639 445 619 459 b 541 410 577 459 557 444 b 439 197 507 340 474 269 b 422 179 435 190 435 179 b 338 393 392 251 379 328 b 275 439 320 423 298 439 b 212 396 253 439 230 425 b 71 219 170 333 128 268 b 0 45 17 173 16 112 b 68 98 32 62 50 78 b 194 264 112 150 153 209 b 230 292 209 282 219 292 b 264 261 240 292 251 282 b 274 242 268 255 269 248 b 346 46 304 179 325 112 b 376 10 351 32 354 10 b 412 35 392 10 403 22 b 452 107 429 56 441 82 b 541 291 481 168 511 230 b 556 307 547 302 552 307 b 573 295 562 307 567 302 b 624 217 595 272 611 246 b 721 1 657 145 685 72 b 755 -27 732 -19 742 -27 b 786 -16 765 -27 775 -24 b 857 73 819 7 840 39 b 952 256 887 134 920 194 b 978 289 963 279 969 289 b 1009 262 985 289 994 281 b 1030 235 1017 253 1024 245 b 1110 -4 1071 161 1099 81 b 1116 -68 1113 -26 1116 -48 b 1009 -243 1116 -140 1090 -200 b 848 -291 956 -272 901 -291 b 730 -261 809 -291 770 -282 b 696 -248 714 -252 703 -248 b 671 -284 684 -248 678 -258 l 662 -312 b 657 -357 658 -330 657 -344 b 744 -439 657 -403 683 -425 z"},brassScoop:{x_min:-.4444444444444445,x_max:312,y_min:-390,y_max:28,ha:418,o:"m 0 -562 b 393 -256 171 -504 307 -412 b 449 -39 431 -189 449 -115 b 448 -1 449 -26 449 -14 b 433 40 446 14 448 40 b 408 -3 410 40 412 14 b 396 -66 403 -23 402 -46 b 45 -397 346 -243 209 -337 b 0 -451 13 -409 1 -423 b 0 -562 -1 -485 0 -520 z"},brassDoitMedium:{x_min:-.32815253965710617,x_max:476.21251177608565,y_min:-50,y_max:333.1535583875376,ha:383.1535583875376,o:"m 16 -72 b 27 -71 19 -72 23 -72 b 215 -33 89 -56 153 -48 b 521 114 327 -7 435 35 b 685 432 615 199 691 295 b 670 480 684 449 688 475 b 642 441 654 482 648 456 b 403 183 599 321 513 240 b 79 89 301 130 192 105 b 0 -1 -12 76 0 76 b 0 -50 0 -17 1 -33 b 16 -72 0 -65 3 -72 z"},brassFallLipShort:{x_min:0,x_max:298,y_min:-344,y_max:65,ha:409,o:"m 396 -495 b 420 -461 412 -487 418 -474 b 429 -382 428 -435 429 -409 b 426 -330 429 -364 428 -347 b 285 -6 410 -209 356 -104 b 98 94 239 59 173 94 b 39 86 79 94 58 92 b 0 49 20 81 0 73 l 0 -52 b 10 -69 0 -62 1 -69 b 20 -68 13 -69 16 -69 b 88 -56 45 -59 66 -56 b 261 -160 156 -56 213 -95 b 396 -495 333 -259 382 -369 z"},brassLiftMedium:{x_min:0,x_max:807,y_min:0,y_max:838,ha:838,o:"m 50 0 b 55 1 52 0 53 0 b 58 23 65 7 59 16 b 55 58 56 36 55 48 b 130 117 55 99 75 112 b 220 213 202 121 220 141 b 315 308 220 289 238 308 l 336 308 b 408 380 393 310 406 321 b 461 452 409 438 416 452 b 485 451 468 452 477 451 b 569 510 531 448 556 464 b 573 543 572 520 572 531 b 657 619 580 605 595 618 b 698 621 670 619 684 619 b 788 700 749 625 778 649 b 798 778 792 726 793 752 b 873 857 806 841 809 845 b 985 950 927 867 973 887 b 1084 1047 1002 1035 1004 1034 b 1162 1128 1133 1056 1162 1087 b 1146 1182 1162 1145 1158 1164 b 1125 1207 1140 1191 1136 1207 l 1122 1207 b 1110 1191 1113 1205 1110 1198 b 1112 1174 1110 1185 1112 1178 b 1048 1110 1109 1126 1096 1113 b 1028 1109 1043 1110 1035 1109 b 939 1022 969 1102 948 1081 b 845 922 929 949 917 936 b 746 812 773 909 753 886 b 744 780 744 802 744 791 b 635 681 737 700 717 683 b 524 583 553 680 536 665 b 439 510 514 520 503 510 b 357 431 377 510 360 492 l 357 406 b 314 364 356 379 343 364 b 238 361 288 364 264 364 b 173 300 202 357 180 334 b 167 245 168 281 167 262 b 105 174 166 192 157 180 b 75 171 95 173 85 171 b 6 112 30 166 14 153 b 0 73 1 98 0 85 b 37 10 0 45 13 26 b 50 0 42 7 46 0 z"},brassFallRoughMedium:{x_min:0,x_max:791,y_min:0,y_max:819,ha:819,o:"m 1117 0 b 1139 101 1129 26 1139 71 b 1138 121 1139 109 1139 115 b 1084 193 1125 171 1110 193 b 1044 183 1073 193 1060 189 b 1022 177 1035 179 1028 177 b 1007 209 1012 177 1008 186 b 876 324 1004 292 959 330 b 799 317 850 321 825 320 b 759 354 772 314 755 320 b 760 373 760 360 760 366 b 759 392 760 379 760 384 b 681 477 753 451 730 477 b 654 474 672 477 664 475 b 606 467 638 471 622 468 b 586 465 599 465 592 465 b 564 481 570 465 564 469 b 569 505 564 487 566 495 b 575 553 572 521 575 537 b 572 585 575 564 573 575 b 481 665 560 657 539 668 b 412 665 458 664 435 665 b 382 690 392 667 382 672 b 383 700 382 693 383 696 b 386 773 387 724 387 749 b 297 858 382 828 351 857 b 229 861 274 858 251 858 b 190 897 207 863 193 871 b 163 1012 186 936 180 976 b 79 1084 145 1050 124 1084 b 66 1083 75 1084 71 1083 b 43 1096 49 1081 43 1087 b 48 1112 43 1100 45 1106 b 53 1130 52 1119 53 1125 b 39 1169 53 1145 45 1158 b 26 1179 36 1175 30 1179 b 16 1171 22 1179 17 1176 b 0 1103 10 1149 0 1126 b 9 1067 0 1092 1 1079 b 91 1021 26 1031 52 1018 b 145 978 122 1024 141 1011 b 156 913 147 956 151 935 b 291 795 170 831 210 795 b 346 768 337 795 346 796 b 344 743 346 760 344 753 b 343 716 344 733 343 724 b 455 600 343 651 390 602 b 505 605 471 599 490 605 b 528 598 514 605 523 603 b 536 579 534 592 536 586 b 524 523 536 562 526 541 b 523 505 524 517 523 511 b 621 405 523 442 560 405 b 639 406 626 405 634 406 b 677 413 652 408 664 410 b 701 416 687 415 696 416 b 721 392 716 416 721 410 b 720 373 721 386 720 380 b 831 255 714 301 759 252 b 897 261 854 255 876 261 b 926 262 909 261 919 262 b 969 197 963 262 965 252 b 971 184 969 193 971 189 b 1031 115 979 137 998 115 b 1071 122 1043 115 1056 118 b 1096 130 1079 125 1086 127 b 1087 59 1094 107 1087 82 b 1117 0 1087 37 1094 17 z"},brassBend:{x_min:0,x_max:381,y_min:0,y_max:367,ha:367,o:"m 298 0 b 472 50 359 0 418 14 b 537 135 501 71 530 92 b 543 216 543 163 543 190 l 543 266 b 544 308 543 281 543 295 b 549 433 546 354 549 395 b 543 507 549 459 547 482 b 533 528 541 516 544 528 b 511 508 524 528 514 520 b 508 478 510 498 508 488 b 504 318 507 425 504 372 b 505 264 504 300 505 282 b 446 181 505 220 484 199 b 294 150 396 160 344 150 b 92 194 226 150 158 167 b 45 269 62 207 45 230 b 46 359 46 300 46 328 b 37 497 46 405 45 451 b 27 523 36 507 37 523 b 4 498 14 524 6 513 b 3 481 3 492 3 487 b 0 409 1 456 0 433 b 4 228 0 348 4 288 b 3 177 4 210 4 194 b 68 53 1 125 20 84 b 200 10 108 27 154 17 b 298 0 233 4 266 0 z"},brassMuteClosed:{x_min:0,x_max:274,y_min:0,y_max:260,ha:260,o:"m 203 0 b 209 1 206 0 207 0 b 216 13 215 4 216 9 l 215 27 l 215 153 b 216 161 216 156 216 158 b 372 164 268 163 318 164 b 395 184 383 164 395 166 l 395 189 b 357 229 392 209 386 229 b 219 228 311 229 265 228 l 223 310 b 209 357 225 328 219 344 b 189 374 203 364 197 374 b 184 373 187 374 186 373 b 177 359 179 372 177 366 l 177 348 l 173 222 l 39 222 b 0 206 12 222 0 219 b 10 174 0 199 3 189 b 46 157 19 157 30 157 b 108 160 68 158 88 160 b 171 161 130 161 150 161 l 167 58 b 184 16 167 40 171 26 b 203 0 192 12 196 0 z"},brassMuteOpen:{x_min:1,x_max:313.01193341111656,y_min:0,y_max:309,ha:309,o:"m 265 0 b 451 189 363 7 452 88 l 451 215 b 348 383 441 285 405 343 b 209 445 288 426 248 445 b 84 379 168 445 132 420 b 69 364 79 373 73 369 b 1 213 30 323 1 275 b 230 0 1 88 94 0 z m 210 62 b 128 73 181 62 154 66 b 40 171 71 91 42 125 b 52 226 40 187 45 206 b 197 374 79 295 130 344 b 228 382 207 380 217 382 b 300 361 252 382 276 370 b 374 308 328 350 353 331 b 410 223 397 284 410 253 b 393 163 410 202 405 181 b 210 62 354 91 288 63 z"},brassFlip:{x_min:0,x_max:402,y_min:0,y_max:361,ha:361,o:"m 579 0 b 511 153 579 68 557 117 b 52 504 359 271 206 387 b 29 520 45 510 39 520 b 20 517 26 520 23 518 b 0 477 3 510 0 494 l 0 125 b 17 20 1 92 1 56 b 40 84 37 40 40 60 b 42 287 40 151 42 219 l 42 363 z"},brassJazzTurn:{x_min:0,x_max:646,y_min:0,y_max:212,ha:212,o:"m 310 0 b 367 33 327 0 344 10 b 389 55 374 40 382 49 b 490 145 423 85 456 114 b 507 154 495 151 501 154 b 524 144 513 154 517 151 b 598 72 547 120 575 98 b 700 24 625 42 662 24 b 765 43 721 24 744 30 b 893 147 812 72 855 105 b 930 212 910 166 923 186 b 912 215 923 213 917 215 b 871 199 896 215 883 209 b 812 153 852 183 832 167 b 789 144 805 148 796 144 b 773 156 782 144 776 147 b 691 251 757 199 720 222 b 603 301 658 282 631 301 b 527 258 580 301 556 288 b 420 156 494 222 455 190 b 399 143 412 147 405 143 b 377 157 392 143 386 147 b 259 282 340 200 300 242 b 219 305 245 298 232 305 b 177 279 204 305 192 297 b 55 127 137 228 95 177 b 0 52 36 104 20 79 b 14 50 6 50 10 50 b 53 66 32 50 45 58 b 115 131 75 88 98 108 b 135 148 124 143 130 148 b 157 132 141 148 148 143 b 252 33 186 96 219 65 b 310 0 275 12 292 0 z"},brassSmear:{x_min:0,x_max:334,y_min:0,y_max:151,ha:151,o:"m 321 0 b 475 125 390 0 436 43 b 481 143 478 131 481 137 b 475 154 481 147 480 151 b 449 148 468 158 458 154 b 395 132 432 137 413 132 b 343 140 377 132 360 137 b 229 194 301 148 266 173 b 168 217 206 209 186 217 b 109 192 148 217 130 209 b 0 26 59 148 32 89 b 59 63 32 29 45 48 b 98 84 72 78 84 84 b 130 73 108 84 118 81 b 213 26 157 58 183 37 b 321 0 255 9 289 0 z"},stringsDownBow:{x_min:0,x_max:306,y_min:-.09607201951262866,y_max:366,ha:366.09607201951263,o:"m 405 0 b 425 17 413 -1 420 9 b 439 66 435 32 439 48 b 441 268 439 137 441 202 b 436 412 441 314 439 361 l 435 413 b 423 469 435 436 431 456 b 344 508 406 501 373 501 b 204 527 298 520 251 527 b 60 498 156 527 108 518 b 7 438 32 485 10 468 l 7 426 b 4 337 7 396 7 367 b 0 140 0 272 0 206 b 1 42 0 107 0 73 b 13 3 1 27 -3 4 b 40 39 29 3 35 24 b 42 53 42 43 40 49 b 49 141 48 84 49 112 b 48 215 49 167 48 192 b 49 252 48 228 48 240 l 49 312 b 130 343 72 331 99 340 b 206 347 156 346 180 347 b 372 314 262 347 318 338 l 390 307 l 390 245 b 390 138 392 212 390 176 b 397 23 390 101 392 62 b 405 0 399 14 393 1 z"},stringsUpBow:{x_min:0,x_max:219.2842808242076,y_min:0,y_max:489,ha:489,o:"m 151 0 b 184 42 170 12 180 26 b 297 554 223 212 261 382 b 315 690 305 598 318 645 b 304 704 315 697 311 704 b 276 670 288 704 282 697 b 157 131 236 490 196 311 l 157 144 b 73 526 134 276 104 396 b 30 677 60 576 52 638 b 13 694 26 684 22 694 b 0 674 9 694 0 691 l 0 671 b 10 603 3 649 6 626 b 105 174 42 461 72 317 b 150 0 117 117 128 58 z"},stringsHarmonic:{x_min:0,x_max:191,y_min:0,y_max:202,ha:202,o:"m 143 0 b 275 122 217 0 275 53 b 127 291 275 206 202 291 b 0 154 63 291 0 222 b 143 0 0 76 71 0 z m 122 68 b 43 105 89 66 59 75 b 39 124 40 111 39 117 b 79 199 39 148 56 180 b 145 226 101 216 122 226 b 199 210 163 226 180 220 b 235 150 223 196 235 173 b 203 92 235 128 225 107 b 122 68 181 76 150 68 z"},pluckedSnapPizzicatoAbove:{x_min:0,x_max:201,y_min:0,y_max:325,ha:325,o:"m 171 0 b 289 99 240 0 289 45 b 258 183 289 130 274 156 b 174 269 236 217 203 240 l 174 408 b 174 429 174 415 176 422 b 131 468 168 451 153 468 b 117 451 120 468 117 461 b 118 429 117 444 118 435 b 115 307 117 389 115 347 b 0 166 59 295 0 223 b 171 0 0 85 89 0 z m 134 55 b 52 131 84 55 52 85 b 115 233 52 179 81 209 b 114 192 114 220 114 206 b 174 120 114 137 114 137 l 174 228 b 233 148 200 207 223 183 b 236 130 235 143 236 135 b 197 72 236 105 223 85 b 134 55 177 60 157 55 z"},pluckedSnapPizzicatoBelow:{x_min:0,x_max:211,y_min:0,y_max:307,ha:307,o:"m 145 7 b 163 0 153 3 158 0 b 173 23 170 0 173 7 l 173 140 l 170 140 l 170 163 l 171 163 b 206 170 179 164 193 166 b 304 287 264 186 304 233 b 281 354 304 308 297 333 b 118 442 240 412 186 439 b 0 324 69 442 0 370 b 115 176 0 266 55 202 l 115 56 b 145 7 114 33 125 19 z m 115 220 b 62 256 92 223 73 230 b 53 292 56 269 53 281 b 78 344 53 311 60 328 b 168 384 105 372 135 384 b 213 376 183 384 199 382 b 253 321 239 366 253 346 b 246 291 253 311 251 301 b 170 226 230 256 203 236 l 170 258 b 148 305 171 278 163 292 b 128 315 143 310 135 315 l 124 315 b 115 301 117 314 115 308 z"},pluckedLeftHandPizzicato:{x_min:0,x_max:271,y_min:0,y_max:284,ha:284,o:"m 213 0 b 223 14 222 0 223 7 b 222 35 223 22 222 29 l 222 176 b 373 170 272 174 323 170 b 390 180 382 170 390 171 l 390 184 b 347 232 386 207 382 232 b 219 238 307 233 266 235 l 219 364 b 171 409 219 395 193 409 b 156 393 160 409 156 402 b 158 370 156 384 158 376 l 158 240 b 16 239 115 240 66 239 b 0 226 7 239 0 238 l 0 223 b 50 179 1 203 29 179 b 158 177 86 179 122 179 l 158 63 b 161 29 158 52 158 40 b 213 0 166 -1 194 1 z"},keyboardPedalPed:{x_min:0,x_max:944,y_min:-13,y_max:550,ha:563,o:"m 22 0 b 109 78 53 0 105 46 l 144 333 b 163 376 147 347 140 372 b 364 465 238 390 301 426 b 454 599 416 497 454 540 b 452 618 454 605 454 612 b 320 770 442 694 396 747 b 248 779 295 778 272 779 b 193 778 229 779 212 779 b 160 780 181 778 167 775 b 137 792 153 789 144 791 b 109 789 128 792 118 789 b 7 719 59 789 48 737 b 23 708 16 714 20 708 b 36 710 29 710 33 710 b 53 684 52 710 53 698 l 53 674 b 43 386 53 577 53 482 b 20 164 36 312 30 238 b 1 30 14 120 7 75 b 0 19 0 26 0 22 b 22 0 0 9 4 0 z m 171 425 b 156 442 160 425 156 429 b 157 475 157 452 157 464 b 164 602 161 517 164 560 b 161 698 164 635 163 667 b 184 729 161 720 167 729 l 193 729 b 348 563 278 719 348 641 b 346 539 348 554 347 547 b 171 425 328 459 229 422 z m 979 6 b 1008 13 986 6 995 9 b 1081 101 1047 29 1079 46 b 1116 449 1087 217 1104 333 b 1143 654 1123 518 1133 586 b 1148 685 1145 664 1148 675 b 1140 704 1148 693 1146 700 b 1107 716 1130 713 1119 716 b 1056 706 1092 716 1073 710 b 1037 671 1035 703 1038 685 b 1004 439 1025 595 1014 517 b 986 419 1001 428 999 419 b 979 419 985 419 982 420 b 935 426 965 423 949 425 b 795 376 884 426 838 405 b 664 153 714 323 664 249 b 665 130 664 145 665 138 b 753 29 671 65 704 29 b 815 40 773 29 792 33 b 975 147 873 65 923 101 b 965 45 971 108 968 76 b 979 6 963 17 966 6 z m 393 -17 b 634 145 494 16 579 52 b 638 160 636 151 638 156 b 625 168 638 166 634 168 b 621 167 624 168 622 168 b 524 118 582 164 544 160 b 495 79 517 104 505 92 b 435 33 471 49 452 33 b 380 96 416 33 397 55 b 369 145 373 114 369 131 b 442 225 369 186 395 213 b 468 232 451 228 459 229 b 654 344 539 255 606 285 b 677 395 667 360 677 376 b 672 415 677 402 675 408 b 612 459 661 442 639 455 b 589 461 602 461 592 461 b 348 328 500 461 409 408 b 269 120 302 268 269 199 b 379 -19 269 45 318 -19 b 393 -17 383 -19 389 -19 z m 395 240 b 494 383 418 300 452 344 l 521 405 b 544 419 528 409 536 418 b 554 415 547 419 550 418 b 570 383 564 406 570 396 l 570 379 b 552 331 570 360 562 344 b 395 240 511 285 462 253 z m 827 89 b 792 111 815 89 804 96 b 766 204 775 131 766 158 b 845 360 772 256 799 314 b 871 372 854 369 863 372 b 897 366 880 372 888 369 b 978 279 942 353 963 320 b 976 259 981 272 981 265 b 858 104 942 203 909 147 b 827 89 847 94 837 89 z m 1282 12 b 1336 35 1303 14 1320 23 b 1359 71 1351 45 1359 58 b 1338 102 1359 82 1352 95 b 1254 130 1312 118 1284 130 b 1187 88 1223 130 1202 109 b 1178 65 1182 81 1178 72 b 1195 37 1178 55 1182 45 b 1282 12 1223 23 1253 19 z"},keyboardPedalUp:{x_min:0,x_max:436.6015132318337,y_min:0,y_max:461,ha:461,o:"m 330 0 b 334 1 331 0 333 0 b 340 12 338 4 340 7 l 338 26 b 340 264 338 105 338 184 b 526 95 400 206 461 148 b 559 71 536 88 547 71 b 564 72 560 71 563 71 b 580 121 580 79 580 102 l 580 127 b 543 203 585 158 573 184 b 472 259 518 219 495 238 l 445 285 b 590 292 494 288 541 291 b 622 318 609 294 618 302 b 628 359 625 331 626 346 b 586 402 632 393 621 405 b 464 395 546 399 504 396 l 559 491 b 567 524 567 500 567 510 b 564 543 567 527 567 536 b 539 596 559 563 560 590 b 494 564 521 600 508 577 b 340 413 442 514 390 464 l 340 560 b 287 664 340 600 321 632 b 271 518 274 612 272 566 b 268 445 269 494 269 469 b 117 569 219 488 168 530 b 96 579 109 575 102 579 b 85 560 89 579 85 573 b 124 446 85 518 82 477 b 209 380 153 426 181 403 b 45 374 154 377 99 376 b 0 324 9 374 0 359 b 63 266 0 265 1 265 b 144 272 89 269 117 272 l 196 272 b 108 193 167 246 138 219 b 60 135 76 164 60 151 b 99 73 60 121 73 105 b 104 68 101 72 102 71 b 114 58 107 60 111 58 b 130 66 120 58 124 62 b 259 186 173 107 217 145 b 256 117 259 163 256 140 b 311 13 256 72 271 37 b 330 0 317 10 323 0 z"},pictChokeCymbal:{x_min:1,x_max:147,y_min:0,y_max:242,ha:242,o:"m 79 4 b 207 158 153 32 192 88 b 212 200 210 173 212 187 b 143 336 212 253 187 298 b 98 348 131 344 115 348 b 4 295 60 348 16 327 b 1 276 1 289 1 282 b 9 249 1 266 3 258 b 121 183 35 206 72 183 b 156 186 132 183 144 183 b 26 53 134 115 91 73 b 7 39 13 49 7 45 b 19 20 7 33 12 27 b 59 0 30 9 43 0 b 79 4 65 0 72 1 z"},wiggleArpeggiatoUp:{x_min:-22,x_max:300,y_min:0,y_max:176,ha:176,o:"m 173 4 b 196 0 180 1 189 0 b 246 26 215 0 230 9 b 301 117 271 53 285 85 b 312 131 305 125 307 131 b 327 124 315 131 321 128 b 373 86 341 112 353 101 b 412 69 389 75 402 69 b 432 94 425 69 432 79 b 373 181 432 117 413 154 b 235 252 323 216 285 245 b 220 253 229 253 225 253 b 168 215 196 253 181 240 b 111 112 151 180 140 141 b 94 102 105 105 99 102 b 78 111 89 102 84 105 b 0 181 55 135 35 160 b -32 153 -20 194 -32 168 b 0 86 -32 124 -32 109 b 94 36 22 71 73 46 b 173 4 134 16 131 17 z"},arpeggiatoUp:{x_min:0,x_max:262,y_min:0,y_max:1459,ha:1459,o:"m 190 0 b 160 63 187 29 170 45 b 145 108 150 81 145 95 b 183 163 145 128 157 145 b 300 246 222 190 262 216 b 347 318 333 272 347 295 b 301 393 347 341 331 364 b 258 413 289 403 272 408 b 145 449 220 425 183 436 b 117 464 135 452 120 452 b 140 491 115 477 128 484 b 294 593 192 526 243 557 b 330 647 318 611 330 626 b 314 693 330 660 324 675 b 262 736 302 714 285 729 b 170 763 230 744 200 753 b 122 783 153 768 125 768 b 160 831 120 804 143 818 b 288 922 202 861 246 890 b 333 999 318 945 333 972 b 266 1083 333 1032 310 1064 b 189 1115 240 1094 215 1103 b 122 1178 145 1133 122 1153 b 168 1250 122 1200 138 1223 l 180 1257 b 269 1333 210 1283 240 1306 b 305 1405 294 1356 305 1381 b 284 1469 305 1426 298 1447 b 228 1525 269 1492 251 1511 b 183 1600 197 1545 183 1571 b 190 1640 183 1613 184 1626 b 197 1670 193 1650 194 1660 b 272 1735 213 1719 230 1735 b 295 1734 279 1735 287 1735 b 323 1732 305 1732 314 1732 b 350 1731 333 1732 341 1732 b 377 1742 369 1729 377 1732 b 370 1761 377 1747 374 1754 l 301 1898 b 217 2066 274 1954 248 2012 b 186 2101 204 2089 196 2101 b 154 2069 177 2101 167 2091 b 12 1824 105 1987 59 1907 b 0 1787 4 1810 0 1797 b 59 1744 0 1761 20 1745 b 160 1738 92 1744 125 1740 b 145 1692 156 1721 151 1706 b 135 1633 138 1672 135 1652 b 184 1518 135 1591 151 1552 b 229 1475 199 1503 213 1488 b 259 1431 249 1456 259 1444 b 229 1388 259 1420 249 1407 b 151 1325 203 1365 177 1345 b 105 1279 134 1310 118 1296 b 73 1202 84 1251 73 1227 b 108 1123 73 1176 85 1152 b 255 1031 148 1077 199 1051 b 282 1014 274 1025 282 1021 b 262 991 282 1008 275 1001 b 151 914 226 963 189 939 b 79 851 125 896 99 877 b 63 809 69 837 63 824 b 79 769 63 796 68 783 b 202 697 111 729 154 710 b 266 670 225 690 266 688 b 210 622 266 648 232 635 b 82 534 167 593 120 570 b 55 491 63 518 55 505 b 79 448 55 478 63 465 b 255 361 127 395 192 380 b 288 343 269 359 288 357 b 266 312 288 331 275 320 b 144 223 229 278 184 253 b 85 134 104 193 85 166 b 118 53 85 111 96 85 b 190 0 135 29 160 14 z"},arpeggiatoDown:{x_min:0,x_max:218,y_min:0,y_max:1440,ha:1440,o:"m 161 16 b 310 261 210 98 259 180 b 314 275 312 266 314 271 b 302 295 314 282 310 289 b 252 311 287 308 269 311 b 217 310 240 311 229 310 b 190 333 202 310 194 315 b 151 412 186 363 171 389 b 102 501 120 452 102 477 b 150 588 102 524 118 547 b 161 603 154 592 158 598 b 181 661 176 622 181 641 b 173 704 181 675 179 690 b 86 795 156 746 121 770 b 53 829 63 811 53 819 b 78 868 53 840 62 851 b 102 888 85 876 94 883 b 180 956 128 912 156 933 b 216 1028 204 979 216 1002 b 203 1081 216 1044 212 1061 b 115 1171 186 1123 148 1145 b 75 1221 88 1191 75 1207 b 114 1272 75 1237 88 1251 b 173 1308 132 1284 154 1296 b 226 1339 190 1318 209 1328 b 265 1405 253 1359 265 1380 b 258 1447 265 1418 264 1431 b 154 1541 242 1499 199 1521 b 109 1581 124 1555 109 1567 b 141 1627 109 1594 121 1608 b 204 1680 163 1646 184 1662 b 233 1742 223 1699 233 1719 b 226 1777 233 1752 230 1764 b 135 1862 210 1822 173 1840 b 104 1895 114 1875 104 1884 b 118 1930 104 1904 109 1914 b 192 2006 135 1961 161 1986 b 206 2029 203 2013 206 2022 b 192 2064 206 2040 197 2052 b 180 2074 187 2071 184 2074 b 156 2061 171 2074 163 2065 b 84 1983 125 2040 102 2013 b 65 1921 71 1961 65 1941 b 88 1853 65 1899 72 1876 b 171 1784 108 1820 138 1801 b 190 1764 184 1777 190 1770 b 174 1741 190 1757 184 1750 b 107 1683 153 1722 128 1704 b 68 1610 81 1659 68 1636 b 88 1548 68 1591 75 1571 b 177 1470 109 1512 141 1489 b 223 1431 209 1453 223 1443 b 179 1390 223 1420 209 1408 b 128 1361 163 1380 145 1371 b 71 1322 108 1348 88 1338 b 32 1253 45 1300 32 1277 b 48 1198 32 1236 37 1218 b 147 1090 71 1152 108 1120 b 174 1057 166 1076 174 1067 b 153 1022 174 1047 167 1037 b 109 982 140 1008 124 995 b 37 919 85 962 59 942 b 9 860 17 899 9 880 b 26 806 9 844 14 827 b 120 717 50 769 84 740 b 138 691 132 708 138 700 b 130 668 138 684 135 677 b 92 618 118 651 105 635 b 59 531 71 589 59 560 b 84 455 59 507 68 481 b 132 386 98 431 115 408 b 148 341 144 372 148 357 b 144 317 148 333 147 324 b 121 305 140 307 131 305 l 98 305 b 82 304 94 304 88 304 l 32 304 b 0 292 10 304 0 302 b 12 266 0 287 4 279 b 60 164 32 233 46 199 b 127 20 84 117 105 68 b 144 0 132 9 137 0 b 161 16 150 0 154 4 z"},repeat1Bar:{x_min:0,x_max:599.1057280164835,y_min:-250,y_max:175,ha:425,o:"m 216 98 b 255 75 236 84 246 75 b 291 104 265 75 274 85 b 323 147 304 117 327 125 b 289 215 323 168 314 184 b 238 252 269 239 253 252 b 187 222 222 252 207 242 b 173 206 183 216 177 212 b 157 170 163 194 157 183 b 174 138 157 160 161 150 b 216 98 189 127 200 109 z m 76 -334 b 181 -285 111 -315 148 -302 b 831 52 396 -168 613 -58 b 863 114 855 63 864 82 b 828 202 855 140 855 176 b 808 213 821 209 815 213 b 793 209 804 213 799 212 l 422 19 b 26 -179 291 -48 164 -124 b 0 -213 10 -186 0 -196 b 3 -232 0 -219 0 -225 b 52 -325 14 -265 37 -294 b 66 -337 55 -331 59 -337 b 76 -334 69 -337 72 -336 z m 769 -360 b 829 -264 779 -360 829 -284 b 769 -176 822 -232 799 -200 b 742 -163 760 -167 750 -163 b 716 -184 733 -163 723 -168 b 683 -228 708 -202 693 -213 b 672 -253 675 -236 672 -245 b 683 -281 672 -262 675 -271 b 752 -353 703 -308 732 -327 b 769 -360 756 -357 763 -360 z"},repeat2Bars:{x_min:.008571918423331715,x_max:775,y_min:-246.92374029115243,y_max:362.82068246705313,ha:609.7444227582056,o:"m 909 412 b 873 351 906 384 893 367 b 436 50 729 249 585 147 l 91 -179 b 62 -174 76 -189 68 -183 b 12 -96 48 -147 24 -125 b 36 -16 -7 -53 -6 -43 b 220 104 96 24 158 65 b 819 507 425 232 624 369 b 881 495 852 530 861 528 b 909 412 899 469 900 439 z m 333 338 b 302 240 330 307 317 274 b 276 235 297 225 287 228 l 233 269 b 203 376 186 307 183 318 b 225 441 212 397 217 419 b 246 454 228 452 232 458 b 333 338 284 441 333 380 z m 1116 228 b 1067 158 1115 192 1092 174 b 910 59 1015 125 963 92 b 478 -240 762 -33 622 -140 b 311 -350 423 -279 366 -314 b 285 -344 298 -360 289 -356 b 239 -258 272 -314 251 -288 b 261 -196 228 -228 235 -210 b 517 -29 348 -144 436 -91 b 1030 321 681 98 861 202 b 1093 307 1060 343 1076 340 b 1116 228 1107 281 1109 252 z m 1070 -105 b 1020 -210 1057 -143 1038 -176 b 998 -210 1014 -219 1004 -215 l 924 -153 b 913 -88 899 -135 897 -112 b 949 -22 926 -66 939 -45 b 998 -7 960 6 976 9 b 1070 -105 1032 -32 1058 -63 z"},repeat4Bars:{x_min:0,x_max:1374,y_min:-304,y_max:304,ha:608,o:"m 78 -266 b 92 -258 82 -266 88 -264 b 114 -240 98 -251 107 -246 b 638 107 289 -125 467 -14 b 873 271 716 161 793 216 b 907 337 894 285 906 305 b 887 400 901 354 897 379 b 852 438 877 426 867 438 b 814 420 842 438 829 432 b 135 -33 592 262 366 111 b 12 -121 92 -60 48 -84 b 0 -144 4 -128 0 -135 b 4 -160 0 -148 1 -154 b 63 -255 17 -196 45 -223 b 78 -266 68 -262 72 -266 z m 291 148 b 325 223 302 148 308 170 b 333 256 328 235 330 246 b 264 363 330 305 298 336 b 242 373 255 369 248 373 b 220 347 232 373 225 364 b 202 288 216 327 213 305 b 190 252 193 275 190 262 b 222 200 190 232 202 215 b 291 148 264 170 279 148 z m 815 -367 b 829 -359 819 -367 824 -364 b 851 -343 835 -353 844 -347 b 1375 6 1027 -228 1205 -117 l 1610 170 b 1644 235 1632 184 1643 203 b 1626 300 1639 253 1634 276 b 1590 337 1614 325 1604 337 b 1551 320 1580 337 1567 330 b 873 -135 1329 161 1103 10 b 749 -222 829 -161 785 -184 b 737 -245 742 -230 737 -238 b 742 -261 737 -249 739 -255 b 802 -357 755 -297 782 -325 b 815 -367 805 -363 809 -367 z m 396 -360 b 408 -356 400 -360 403 -359 b 609 -223 471 -307 543 -269 b 896 -19 706 -156 795 -81 b 1164 154 985 37 1074 96 b 1214 223 1189 170 1211 187 b 1176 321 1204 253 1205 292 b 1159 330 1169 327 1165 330 b 1145 324 1155 330 1151 328 b 1048 258 1113 302 1081 278 b 357 -202 809 117 598 -65 b 333 -238 341 -212 333 -223 b 338 -262 333 -245 334 -253 b 384 -350 350 -294 372 -318 b 396 -360 386 -354 390 -360 z m 1162 -438 b 1174 -433 1166 -438 1169 -436 b 1374 -300 1237 -384 1309 -346 b 1660 -96 1470 -233 1561 -158 b 1930 76 1751 -39 1840 19 b 1979 147 1954 92 1977 109 b 1943 243 1968 177 1971 216 b 1924 253 1935 251 1930 253 b 1911 248 1920 253 1915 252 b 1814 181 1878 225 1848 202 b 1123 -279 1575 40 1364 -141 b 1099 -315 1106 -289 1099 -300 b 1103 -338 1099 -321 1100 -330 b 1149 -426 1115 -370 1138 -396 b 1162 -438 1151 -432 1156 -438 z m 1875 -295 b 1882 -291 1878 -295 1879 -294 b 1934 -189 1904 -258 1921 -223 b 1872 -96 1925 -147 1901 -120 b 1840 -78 1858 -84 1848 -78 b 1812 -109 1830 -78 1823 -88 l 1777 -173 b 1770 -199 1773 -181 1770 -190 b 1786 -230 1770 -210 1774 -220 b 1862 -289 1809 -253 1837 -269 b 1875 -295 1865 -292 1871 -295 z"},repeatBarSlash:{x_min:0,x_max:630,y_min:-225.19160170741762,y_max:265.12618221237005,ha:490.31778391978764,o:"m 78 -324 b 92 -314 82 -325 88 -321 b 114 -298 96 -307 107 -302 b 638 49 289 -183 467 -72 b 873 215 716 104 792 161 b 907 279 894 229 906 248 b 887 344 901 298 897 321 b 852 382 877 369 867 380 b 814 363 842 383 829 376 b 135 -91 603 192 364 55 b 12 -177 92 -118 45 -137 b 0 -202 4 -186 0 -192 b 4 -217 0 -206 1 -212 b 63 -312 17 -253 42 -284 b 78 -324 68 -318 72 -323 z"},csymDiminished:{x_min:0,x_max:506,y_min:-.011036179317259481,y_max:500,ha:500.0110361793173,o:"m 397 0 b 729 265 576 -1 729 95 b 711 367 729 297 723 331 b 472 670 668 498 586 595 b 315 720 423 701 372 720 b 253 713 295 720 275 719 b 32 514 144 687 75 615 b 0 374 12 468 0 420 b 27 251 0 333 9 292 b 140 117 52 196 92 153 b 397 0 223 52 317 4 z m 340 95 b 132 314 233 84 122 216 b 324 589 145 438 200 539 b 415 611 360 603 389 611 b 544 505 469 611 505 576 b 590 392 564 471 583 432 b 596 343 593 374 596 359 b 340 95 596 210 485 96 z"},csymHalfDiminished:{x_min:-32,x_max:496,y_min:-33,y_max:492,ha:525,o:"m -29 -48 b 0 -36 -19 -48 -9 -40 b 17 -20 7 -32 12 -24 b 134 94 56 19 95 56 b 372 0 207 43 282 0 b 455 13 397 0 426 4 b 677 258 556 45 671 141 b 678 289 677 268 678 278 b 593 539 678 380 654 467 b 592 541 593 540 592 540 l 684 632 b 713 678 700 647 711 665 b 714 691 714 684 714 688 b 707 704 714 698 711 701 b 691 708 701 707 696 708 b 660 691 680 708 670 701 l 552 585 b 478 634 530 606 507 624 b 361 684 438 648 397 661 b 301 703 341 697 320 703 b 226 677 275 703 251 693 b 27 449 140 618 72 543 b 0 324 9 410 -4 370 b 88 128 -1 243 30 177 b -30 -7 43 86 0 46 b -46 -33 -35 -16 -46 -24 b -42 -42 -46 -36 -45 -39 b -29 -48 -37 -46 -33 -48 z m 141 179 b 121 251 128 200 121 225 b 128 297 121 265 124 281 b 351 575 163 420 248 505 b 377 582 359 579 369 580 b 501 536 422 586 468 567 b 141 179 382 416 261 298 z m 281 105 b 179 137 240 105 206 117 b 210 168 189 147 200 157 l 537 487 b 547 455 541 477 544 467 b 556 370 552 426 556 397 b 429 154 556 274 503 207 b 281 105 384 122 336 105 z"},csymAugmented:{x_min:0,x_max:530,y_min:0,y_max:539,ha:539,o:"m 380 0 b 393 14 384 4 390 9 b 397 46 397 24 397 36 l 397 333 b 736 327 511 331 624 330 b 763 343 755 327 763 333 b 755 361 763 348 760 354 b 635 431 726 402 688 431 l 390 431 l 390 485 b 386 606 392 526 386 566 b 392 664 386 625 387 645 b 395 690 393 672 395 681 b 376 753 395 711 389 734 b 357 776 372 762 369 776 b 350 775 354 776 353 776 b 327 740 337 769 327 759 b 327 621 328 700 327 661 b 330 438 328 559 328 498 l 29 438 b 4 431 20 438 7 442 b 0 413 3 425 0 419 b 7 399 0 408 1 403 b 131 338 45 369 85 340 b 331 334 199 336 265 334 b 333 163 333 276 333 220 b 366 13 333 109 348 63 b 380 0 367 7 374 4 z"},csymMajorSeventh:{x_min:0,x_max:593.1050509327923,y_min:0,y_max:569,ha:569,o:"m 124 1 l 497 27 b 819 50 605 35 711 43 b 854 98 847 52 855 63 b 812 200 845 128 835 166 b 564 585 730 328 648 456 b 435 786 521 652 480 720 b 397 819 419 809 408 819 b 369 792 387 819 379 811 b 7 173 248 585 128 379 b 0 150 3 166 0 158 b 7 128 0 143 3 135 b 89 10 30 86 65 50 b 109 0 95 1 102 0 z m 163 147 b 153 153 158 147 156 148 b 164 179 147 163 158 170 b 426 644 251 334 338 488 b 442 660 432 655 436 660 b 458 645 446 660 452 655 b 727 220 547 503 636 361 b 736 202 732 213 736 206 b 714 190 736 196 730 192 b 179 148 537 177 359 163 b 163 147 174 150 168 147 z"},csymMinor:{x_min:0,x_max:481.64484584675915,y_min:193,y_max:265.20435472429375,ha:72.20435472429375,o:"m 168 278 b 197 279 177 278 187 278 b 431 292 275 287 353 288 l 431 291 b 661 302 508 295 585 300 b 693 311 672 304 688 300 b 674 346 697 324 685 338 b 564 382 641 366 606 384 l 27 360 b 0 347 17 360 1 366 b 19 314 0 333 3 321 b 168 278 66 291 115 278 z"},csymParensLeftTall:{x_min:0,x_max:185,y_min:0,y_max:1034,ha:1034,o:"m 215 0 b 226 17 223 1 223 10 b 229 37 229 24 229 32 b 220 81 229 52 225 66 b 167 203 206 124 181 160 b 86 616 124 338 89 474 b 82 765 85 665 82 716 b 91 886 82 805 84 845 b 245 1319 120 1038 171 1184 b 266 1397 259 1346 266 1371 b 259 1443 266 1411 264 1427 b 226 1489 253 1463 248 1489 b 193 1454 212 1489 203 1467 b 114 1292 158 1404 140 1346 b 0 806 40 1138 0 978 b 3 721 0 779 0 750 b 1 677 1 707 1 693 b 36 418 1 593 16 504 b 144 96 62 307 95 199 b 196 12 158 66 179 39 b 212 0 200 7 204 0 z"},csymParensRightTall:{x_min:-40,x_max:188.5411603861406,y_min:.20204102886728756,y_max:1058,ha:1057.7979589711326,o:"m 30 1 b 63 14 42 -3 55 6 b 122 99 86 40 108 68 b 189 258 145 153 166 204 b 271 667 239 379 268 503 b 246 852 275 708 261 780 b 10 1495 197 1077 128 1295 b -14 1524 4 1505 1 1524 b -16 1522 -14 1524 -16 1524 b -46 1489 -33 1521 -43 1503 b -58 1417 -53 1464 -58 1440 b -36 1335 -58 1390 -52 1364 b 68 1138 0 1270 35 1204 b 163 883 108 1056 137 969 b 206 668 184 814 200 742 b 207 631 207 655 207 642 b 166 426 207 560 192 492 b 46 143 130 330 111 228 b 19 29 19 109 17 69 b 30 1 20 19 24 3 z"},csymBracketLeftTall:{x_min:0,x_max:328,y_min:2,y_max:807,ha:805,o:"m 68 3 b 76 4 71 3 73 3 b 186 13 112 12 150 13 b 240 13 204 13 222 13 l 287 13 b 379 17 317 13 348 13 b 472 121 435 24 472 69 b 467 156 472 132 469 144 b 446 174 462 168 456 174 l 439 174 b 327 166 402 167 364 166 b 265 167 307 166 285 167 l 209 167 b 187 475 199 269 189 372 b 166 985 186 645 187 815 l 377 1002 b 415 1001 389 1002 402 1001 b 456 1027 432 1001 448 1005 b 472 1096 467 1048 472 1073 b 464 1146 472 1113 469 1130 b 439 1162 459 1161 452 1162 b 40 1129 305 1151 173 1139 b 1 1093 17 1128 1 1120 b 0 1009 0 1064 0 1037 b 13 975 0 991 3 981 b 30 670 23 873 30 772 b 29 608 30 649 29 628 l 29 563 b 56 88 29 405 49 246 b 53 22 55 66 55 43 b 68 3 53 12 56 3 z"},csymBracketRightTall:{x_min:.8519422934604696,x_max:306,y_min:-.17180889215212544,y_max:829.1037519824849,ha:829.2755608746371,o:"m 117 0 b 372 29 203 -3 287 20 l 373 29 b 406 32 383 30 395 30 b 436 60 428 33 432 43 b 441 109 439 76 441 92 b 433 200 441 140 436 170 b 409 696 422 366 409 530 b 416 887 409 763 416 831 b 415 920 416 899 415 910 l 415 1106 b 412 1135 415 1116 415 1126 l 412 1145 b 373 1189 413 1171 408 1192 b 321 1189 356 1189 338 1189 l 215 1189 l 215 1194 l 56 1194 b 6 1153 27 1195 10 1187 b 1 1064 3 1123 4 1093 b 22 1043 0 1050 6 1043 b 84 1044 42 1044 63 1044 b 264 1038 144 1044 203 1040 b 265 958 264 1011 265 985 b 262 845 265 920 264 883 b 259 710 259 801 259 755 b 279 243 259 554 271 399 b 285 170 281 219 284 194 b 95 151 222 161 158 156 b 29 81 27 147 27 147 l 29 73 b 105 0 33 0 33 0 z"},csymParensLeftVeryTall:{x_min:0,x_max:116,y_min:0,y_max:934.1531437146923,ha:934.1531437146923,o:"m 128 0 b 147 17 137 0 144 9 b 167 102 160 45 167 73 b 158 154 167 120 164 137 b 117 307 141 204 130 256 b 63 698 84 435 71 567 b 62 788 62 729 62 757 b 69 916 62 829 63 873 b 109 1172 81 1001 94 1087 b 132 1320 118 1221 137 1269 b 124 1345 131 1329 134 1342 b 96 1332 114 1346 102 1341 b 71 1269 82 1313 75 1292 b 39 1104 59 1214 48 1159 b 0 742 19 988 0 871 b 10 559 3 688 6 624 b 58 226 16 446 33 336 b 112 20 73 157 94 89 b 128 0 115 13 118 0 z"},csymParensRightVeryTall:{x_min:-20,x_max:111.4332498248095,y_min:-.07657185734616112,y_max:1009,ha:1009.0765718573462,o:"m -3 0 b 20 22 9 -1 14 12 b 36 56 26 33 32 45 b 99 274 58 128 84 199 b 160 788 135 439 163 605 b 122 1181 164 912 145 1047 b 50 1431 108 1267 86 1351 b 36 1453 48 1439 46 1453 l 35 1453 l 30 1453 b 7 1423 17 1449 7 1440 b 27 1287 9 1377 10 1331 b 96 963 71 1184 85 1074 b 105 818 102 914 105 867 b 91 624 105 753 99 688 b -4 213 72 484 48 344 b -29 101 -19 174 -29 138 b -16 27 -29 76 -24 52 b -3 0 -13 17 -14 3 z"},csymDiagonalArrangementSlash:{x_min:-.19862981551275186,x_max:990,y_min:-26.946823529189132,y_max:1027.5514326488437,ha:1054.4982561780328,o:"m 14 -37 b 58 -9 35 -45 46 -22 b 392 333 170 105 279 217 l 765 711 b 1372 1329 968 916 1168 1125 b 1424 1439 1403 1359 1417 1397 b 1426 1457 1424 1444 1426 1450 b 1416 1477 1426 1466 1423 1475 b 1374 1462 1400 1485 1385 1473 b 1181 1269 1309 1397 1246 1331 b 736 831 1031 1122 884 979 b 356 452 609 704 485 576 b 32 132 246 347 143 236 b 0 50 7 109 1 84 b 6 9 -1 37 3 23 b 14 -37 10 -9 0 -32 z"},accidentalNarrowReversedFlat:{x_min:0,x_max:208,y_min:-231,y_max:449,ha:680,o:"m 272 -333 b 284 -320 278 -333 281 -328 b 300 -174 297 -272 300 -222 b 275 190 298 -52 279 68 b 268 445 272 275 268 360 l 268 490 b 264 612 269 530 265 572 b 236 647 264 632 252 645 l 235 647 b 217 618 220 647 220 628 b 207 526 210 588 207 556 b 210 432 207 494 210 464 b 216 268 213 377 215 323 l 216 230 l 215 232 b 154 256 194 240 174 251 b 111 264 138 261 124 264 b 3 153 50 264 10 223 b 0 94 0 132 0 114 b 194 -276 0 -63 68 -186 b 255 -323 215 -291 236 -307 b 272 -333 262 -330 268 -333 z m 233 -138 b 71 30 168 -92 105 -45 b 63 59 65 42 63 50 b 96 95 62 75 73 86 b 130 102 108 99 120 102 b 215 76 160 102 187 88 l 220 73 b 225 -22 220 42 222 10 b 233 -138 229 -62 230 -101 z"},accidentalNarrowReversedFlatAndFlat:{x_min:0,x_max:335,y_min:-231,y_max:449,ha:680,o:"m 151 490 b 148 612 151 530 150 572 b 132 647 148 632 141 645 b 122 618 124 647 124 628 b 117 526 118 588 117 556 b 118 432 117 494 118 464 b 121 268 120 377 121 323 l 121 232 b 86 256 109 240 98 251 b 62 264 78 261 69 264 b 1 153 29 264 6 223 b 0 94 0 132 0 114 b 109 -276 0 -63 37 -186 b 144 -323 121 -291 132 -307 b 153 -333 147 -330 151 -333 b 160 -320 157 -333 158 -328 b 168 -174 167 -272 168 -222 b 154 190 168 -52 157 68 b 151 445 153 275 151 360 z m 480 153 b 372 264 472 223 432 264 b 328 256 359 264 344 261 b 268 232 308 251 288 240 l 266 230 l 266 268 b 272 432 266 323 269 377 b 275 526 272 464 275 494 b 265 618 275 556 272 588 b 248 647 262 628 262 647 l 246 647 b 219 612 230 645 219 632 b 215 490 217 572 213 530 l 215 445 b 207 190 215 360 210 275 b 183 -174 203 68 183 -52 b 199 -320 183 -222 186 -272 b 210 -333 202 -328 204 -333 b 228 -323 215 -333 220 -330 b 288 -276 246 -307 268 -291 b 482 94 415 -186 482 -63 b 480 153 482 114 482 132 z m 40 30 b 36 59 36 42 36 50 b 55 95 35 75 42 86 b 73 102 60 99 68 102 b 121 76 89 102 105 88 l 124 73 b 127 -22 124 42 125 10 l 131 -138 b 40 30 95 -92 60 -43 z m 419 59 b 412 30 419 50 418 42 b 249 -138 374 -43 314 -92 b 258 -22 252 -101 253 -62 b 262 73 261 10 262 42 l 268 76 b 353 102 295 88 323 102 b 386 95 363 102 374 99 b 419 59 409 86 420 75 z"},accidentalWilsonPlus:{x_min:0,x_max:298,y_min:-218,y_max:218,ha:436,o:"m 232 -314 b 236 -301 236 -310 236 -305 l 236 -295 b 243 -52 239 -213 242 -132 l 369 62 b 429 200 413 101 425 147 b 416 243 429 216 428 236 b 383 225 406 251 393 232 l 377 220 b 246 98 336 177 291 138 b 249 242 248 145 246 193 b 225 304 251 265 242 287 b 209 314 220 308 215 314 b 204 312 207 314 206 312 b 196 292 196 310 196 300 b 193 184 194 256 194 220 b 187 48 192 140 190 94 b 46 -72 141 7 94 -32 b 0 -163 13 -98 0 -127 b 1 -187 0 -170 0 -179 b 10 -235 4 -203 6 -219 b 20 -255 12 -242 14 -251 b 36 -245 26 -259 30 -249 b 181 -109 85 -200 132 -154 b 176 -258 180 -158 176 -209 b 232 -314 176 -298 186 -307 z"},accidentalWilsonMinus:{x_min:0,x_max:284.2093390143919,y_min:-163,y_max:163,ha:326,o:"m 386 -232 b 409 -163 415 -222 408 -180 b 382 -69 410 -120 408 -89 b 32 228 264 30 141 118 b 17 235 26 233 22 235 b 3 219 9 235 3 228 b 0 157 3 199 0 179 b 29 69 0 125 6 95 b 323 -194 115 -29 222 -111 b 374 -235 338 -206 353 -235 b 386 -232 377 -235 382 -233 z"}},fontFamily:"Petaluma",resolution:1e3,generatedOn:"2022-06-26T17:47:23.560Z"},Wb={name:"Petaluma",smufl:!0,stave:{padding:15,endPaddingMax:15,endPaddingMin:7,unalignedNotePadding:12},accidental:{noteheadAccidentalPadding:1,leftPadding:2,accidentalSpacing:3},clef:{default:{point:32,width:26},small:{point:26,width:20},annotations:{"8va":{smuflCode:"timeSig8",default:{point:18,treble:{line:-1.4,shiftX:12}},small:{point:16,treble:{line:-.2,shiftX:8}}},"8vb":{smuflCode:"timeSig8",default:{point:18,treble:{line:6,shiftX:10},bass:{line:3.5,shiftX:1}},small:{point:16,treble:{line:5.3,shiftX:6},bass:{line:3.1,shiftX:.5}}}},lineCount:{8:{point:55,shiftY:14},7:{point:47,shiftY:8},6:{point:32,shiftY:1},5:{point:30,shiftY:-6},4:{point:23,shiftY:-12}}},parenthesis:{default:{point:39,width:7},gracenote:{point:23.4,width:3}},pedalMarking:{up:{point:40},down:{point:34}},digits:{shiftLine:-1,point:22,tupletPoint:16,shiftY:-2},articulation:{articStaccatissimoAbove:{padding:2},articStaccatissimoBelow:{padding:2}},tremolo:{default:{point:25,spacing:5,offsetYStemUp:-5,offsetYStemDown:5,offsetXStemUp:13,offsetXStemDown:1},grace:{point:18,spacing:4,offsetYStemUp:-5,offsetYStemDown:5,offsetXStemUp:8,offsetXStemDown:1}},staveRepetition:{symbolText:{offsetX:12,offsetY:25,spacing:5},coda:{offsetY:25},segno:{offsetY:10}},noteHead:{displaced:{shiftX:-2}},stem:{heightAdjustmentForFlag:-3,noteHead:{noteheadTriangleUpHalf:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpBlack:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadTriangleUpWhole:{offsetYBaseStemUp:5,offsetYBaseStemDown:4},noteheadXHalf:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXBlack:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadXWhole:{offsetYBaseStemUp:-4,offsetYBaseStemDown:4},noteheadHalf:{offsetYBaseStemDown:1.8,offsetYBaseStemUp:-1.8},noteheadBlack:{offsetYBaseStemDown:2,offsetYBaseStemUp:-2},noteheadSquareWhite:{offsetYBaseStemDown:-5,offsetYBaseStemUp:5}}},glyphs:{coda:{point:20,shiftX:-7,shiftY:8},segno:{shiftX:-7},flag:{shiftX:-.77,flag16thUp:{shiftX:-.75},flag32ndUp:{shiftX:-.85},flag64thUp:{shiftX:-1.55},flag128thUp:{shiftX:-1.3},flag16thDown:{shiftX:-.75},flag32ndDown:{shiftX:-.76},flag64thDown:{shiftX:-1.5},flag128thDown:{shiftX:-1.2},staveTempo:{shiftX:-1}},clef:{gClef:{default:{scale:1.1,shiftY:1},small:{shiftY:1.5}},fClef:{default:{shiftY:-.5}}},ornament:{ornamentTurn:{scale:1.2},ornamentTurnSlash:{scale:1.2}},stringNumber:{verticalPadding:8,stemPadding:2,leftPadding:5,rightPadding:6},stroke:{arrowheadBlackDown:{straight:{shiftX:-4.5},wiggly:{shiftX:-1,shiftY:1}},arrowheadBlackUp:{straight:{shiftX:-.85},wiggly:{shiftX:-1,shiftY:1}}},textNote:{point:34,breathMarkTick:{point:36,shiftY:9},breathMarkComma:{point:36},segno:{point:30,shiftX:-7,shiftY:8},coda:{point:20,shiftX:-7,shiftY:8},ornamentTrill:{shiftX:-10,shiftY:8},ornamentMordent:{shiftX:-8},ornamentShortTrill:{shiftX:-8}},noteHead:{minPadding:2,standard:{noteheadBlackStemUp:{shiftX:.5},noteheadHalfStemUp:{shiftX:.725},noteheadWholeStemUp:{shiftX:1}},custom:{noteheadCircleXStemUp:{shiftX:-1},noteheadCircleXStemDown:{shiftX:.25},noteheadDiamondHalfStemUp:{shiftX:1.5},noteheadDiamondBlackStemUp:{shiftX:1.5},noteheadDiamondWholeStemUp:{shiftX:1},noteheadXBlackStemUp:{shiftX:1},noteheadXHalfStemUp:{shiftX:-3},noteheadXHalfStemDown:{shiftX:1},noteheadXWholeStemUp:{shiftX:-7},noteheadXWholeStemDown:{shiftX:1},noteheadXDoubleWholeStemUp:{shiftX:-12},noteheadXDoubleWholeStemDown:{shiftX:-4},noteheadSquareWhiteStemDown:{shiftX:.25},noteheadSquareWhiteStemUp:{shiftX:-.75},noteheadSquareBlackStemUp:{shiftX:-.75},noteheadTriangleUpWholeStemUp:{shiftX:-.75}}},chordSymbol:{global:{superscriptOffset:-400,subscriptOffset:300,kerningOffset:-150,lowerKerningText:["D","F","P","T","V","Y"],upperKerningText:["L"],spacing:20,superSubRatio:.73},csymDiminished:{scale:.8,leftSideBearing:-95,advanceWidth:506,yOffset:0},csymHalfDiminished:{scale:.8,leftSideBearing:-32,advanceWidth:506,yOffset:0},csymAugmented:{scale:1,leftSideBearing:-25,advanceWidth:530,yOffset:0},csymParensLeftTall:{scale:.8,leftSideBearing:0,advanceWidth:155,yOffset:150},csymParensRightTall:{scale:.8,leftSideBearing:40,advanceWidth:189,yOffset:150},csymBracketLeftTall:{scale:.8,leftSideBearing:0,advanceWidth:328,yOffset:0},csymBracketRightTall:{scale:.8,leftSideBearing:1,advanceWidth:600,yOffset:0},csymParensLeftVeryTall:{scale:.95,leftSideBearing:0,advanceWidth:210,yOffset:250},csymParensRightVeryTall:{scale:.9,leftSideBearing:-100,advanceWidth:111,yOffset:250},csymDiagonalArrangementSlash:{scale:.6,leftSideBearing:-1,advanceWidth:990,yOffset:0},csymMinor:{scale:.7,leftSideBearing:0,advanceWidth:482,yOffset:0},csymMajorSeventh:{scale:.8,leftSideBearing:100,yOffset:0,advanceWidth:600},accidentalSharp:{scale:.7,leftSideBearing:0,advanceWidth:425,yOffset:-422},accidentalFlat:{scale:.8,leftSideBearing:-10,advanceWidth:228,yOffset:-284}},jazzOrnaments:{brassScoop:{scale:1,xOffset:-12,yOffset:0,stemUpYOffset:0,reportedWidth:15},brassDoitMedium:{scale:1,xOffset:16,yOffset:0,stemUpYOffset:0,reportedWidth:19},brassFallLipShort:{scale:1,xOffset:16,yOffset:0,stemUpYOffset:0,reportedWidth:19},brassLiftMedium:{scale:1,xOffset:16,yOffset:5,stemUpYOffset:0,reportedWidth:15},brassFallRoughMedium:{scale:1,xOffset:16,yOffset:26,stemUpYOffset:0,reportedWidth:5},brassBend:{scale:1,xOffset:3,yOffset:-8,stemUpYOffset:28,reportedWidth:5},brassMuteClosed:{scale:1,xOffset:3,yOffset:-8,stemUpYOffset:26,reportedWidth:5},brassMuteOpen:{scale:1,xOffset:4,yOffset:-8,stemUpYOffset:27,reportedWidth:5},brassFlip:{scale:1,xOffset:10,yOffset:-4,stemUpYOffset:7,reportedWidth:5},brassJazzTurn:{scale:1,xOffset:6,yOffset:-4,stemUpYOffset:5,reportedWidth:30},brassSmear:{scale:1,xOffset:10,yOffset:-4,stemUpYOffset:5,reportedWidth:5}},tuplet:{noteHeadOffset:20,stemOffset:10,bottomLine:4,topModifierOffset:20}}};const Ib={spacing:50,glyphs:{" ":{x_min:0,x_max:250,y_min:0,y_max:500,ha:500,leftSideBearing:0,advanceWidth:250},0:{x_min:33,x_max:534,y_min:-13,y_max:751,ha:764,leftSideBearing:33,advanceWidth:570},1:{x_min:48,x_max:235,y_min:-17,y_max:734,ha:751,leftSideBearing:48,advanceWidth:286},2:{x_min:56,x_max:571,y_min:-19,y_max:741,ha:760,leftSideBearing:56,advanceWidth:626},3:{x_min:50,x_max:528,y_min:-7,y_max:731,ha:738,leftSideBearing:50,advanceWidth:589},4:{x_min:38,x_max:564,y_min:-13,y_max:743,ha:756,leftSideBearing:38,advanceWidth:614},5:{x_min:42,x_max:601,y_min:-34,y_max:743,ha:777,leftSideBearing:42,advanceWidth:648},6:{x_min:47,x_max:606,y_min:-16,y_max:743,ha:759,leftSideBearing:47,advanceWidth:667},7:{x_min:47,x_max:567,y_min:5,y_max:739,ha:734,leftSideBearing:0,advanceWidth:615},8:{x_min:40,x_max:541,y_min:-15,y_max:752,ha:767,leftSideBearing:40,advanceWidth:585},9:{x_min:40,x_max:537,y_min:-52,y_max:736,ha:788,leftSideBearing:40,advanceWidth:592},"!":{x_min:49,x_max:180,y_min:-7,y_max:761,ha:768,leftSideBearing:49,advanceWidth:230},'"':{x_min:39,x_max:304,y_min:596,y_max:804,ha:208,leftSideBearing:39,advanceWidth:353},"#":{x_min:33,x_max:599,y_min:-8,y_max:765,ha:773,leftSideBearing:33,advanceWidth:648},$:{x_min:53,x_max:495,y_min:-111,y_max:823,ha:934,leftSideBearing:53,advanceWidth:560},"%":{x_min:35,x_max:656,y_min:-128,y_max:808,ha:936,leftSideBearing:35,advanceWidth:711},"&":{x_min:53,x_max:441,y_min:-3,y_max:753,ha:756,leftSideBearing:53,advanceWidth:500},"'":{x_min:43,x_max:161,y_min:590,y_max:811,ha:221,leftSideBearing:43,advanceWidth:217},"(":{x_min:41,x_max:311,y_min:-36,y_max:845,ha:881,leftSideBearing:41,advanceWidth:308},")":{x_min:-8,x_max:257,y_min:-21,y_max:852,ha:873,leftSideBearing:-8,advanceWidth:280},"*":{x_min:59,x_max:539,y_min:175,y_max:589,ha:414,leftSideBearing:59,advanceWidth:601},"+":{x_min:33,x_max:361,y_min:180,y_max:587,ha:407,leftSideBearing:33,advanceWidth:400},",":{x_min:15,x_max:176,y_min:-129,y_max:92,ha:221,leftSideBearing:15,advanceWidth:205},"-":{x_min:40,x_max:380,y_min:317,y_max:452,ha:135,leftSideBearing:40,advanceWidth:422},".":{x_min:48,x_max:185,y_min:-56,y_max:84,ha:140,leftSideBearing:48,advanceWidth:227},"/":{x_min:-58,x_max:654,y_min:-122,y_max:844,ha:966,leftSideBearing:-58,advanceWidth:626},":":{x_min:65,x_max:225,y_min:97,y_max:536,ha:439,leftSideBearing:65,advanceWidth:302},";":{x_min:13,x_max:295,y_min:-139,y_max:536,ha:675,leftSideBearing:13,advanceWidth:334},"<":{x_min:28,x_max:438,y_min:-1,y_max:607,ha:608,leftSideBearing:28,advanceWidth:475},"=":{x_min:40,x_max:383,y_min:199.9598640852289,y_max:541,ha:341.0401359147711,leftSideBearing:40,advanceWidth:422},">":{x_min:35,x_max:421,y_min:28,y_max:632,ha:604,leftSideBearing:35,advanceWidth:466},"?":{x_min:45,x_max:548,y_min:-17,y_max:767,ha:784,leftSideBearing:45,advanceWidth:592},"@":{x_min:51,x_max:730,y_min:-78,y_max:753,ha:831,leftSideBearing:51,advanceWidth:781},A:{x_min:37,x_max:554,y_min:-4,y_max:746,ha:750,leftSideBearing:37,advanceWidth:617},B:{x_min:37,x_max:532,y_min:3,y_max:783,ha:780,leftSideBearing:37,advanceWidth:579},C:{x_min:37,x_max:583,y_min:-3,y_max:775,ha:778,leftSideBearing:37,advanceWidth:623},D:{x_min:50,x_max:530,y_min:-15,y_max:749,ha:764,leftSideBearing:50,advanceWidth:579},E:{x_min:45,x_max:531,y_min:-1,y_max:743,ha:744,leftSideBearing:45,advanceWidth:585},F:{x_min:45,x_max:459,y_min:23,y_max:727,ha:704,leftSideBearing:45,advanceWidth:510},G:{x_min:31,x_max:577,y_min:-8,y_max:733,ha:741,leftSideBearing:31,advanceWidth:611},H:{x_min:37,x_max:493,y_min:-22,y_max:758,ha:780,leftSideBearing:37,advanceWidth:535},I:{x_min:47,x_max:501,y_min:-3,y_max:731,ha:734,leftSideBearing:47,advanceWidth:541},J:{x_min:33,x_max:531,y_min:-23,y_max:725,ha:748,leftSideBearing:33,advanceWidth:573},K:{x_min:43,x_max:505,y_min:-10,y_max:740,ha:750,leftSideBearing:43,advanceWidth:560},L:{x_min:49,x_max:457,y_min:-2,y_max:746,ha:748,leftSideBearing:49,advanceWidth:510},M:{x_min:35,x_max:699,y_min:1,y_max:744,ha:743,leftSideBearing:35,advanceWidth:743},N:{x_min:34,x_max:533,y_min:-17,y_max:761,ha:778,leftSideBearing:34,advanceWidth:579},O:{x_min:41,x_max:608,y_min:-5,y_max:735,ha:740,leftSideBearing:41,advanceWidth:667},P:{x_min:53,x_max:451,y_min:-18,y_max:735,ha:753,leftSideBearing:53,advanceWidth:497},Q:{x_min:40,x_max:599,y_min:-67,y_max:744,ha:811,leftSideBearing:40,advanceWidth:648},R:{x_min:39,x_max:487,y_min:16,y_max:735,ha:719,leftSideBearing:39,advanceWidth:535},S:{x_min:35,x_max:552,y_min:-47,y_max:708,ha:755,leftSideBearing:35,advanceWidth:604},T:{x_min:26,x_max:656,y_min:-13,y_max:718,ha:731,leftSideBearing:26,advanceWidth:705},U:{x_min:41,x_max:518,y_min:-20,y_max:748,ha:768,leftSideBearing:41,advanceWidth:567},V:{x_min:47,x_max:509,y_min:-26,y_max:744,ha:770,leftSideBearing:47,advanceWidth:567},W:{x_min:44,x_max:789,y_min:-35,y_max:720,ha:755,leftSideBearing:44,advanceWidth:833},X:{x_min:63,x_max:635,y_min:-10,y_max:745,ha:755,leftSideBearing:63,advanceWidth:680},Y:{x_min:43,x_max:503,y_min:-21,y_max:734,ha:755,leftSideBearing:43,advanceWidth:541},Z:{x_min:42,x_max:584,y_min:-10,y_max:739,ha:749,leftSideBearing:42,advanceWidth:629},"[":{x_min:46,x_max:346,y_min:-150,y_max:884,ha:1034,leftSideBearing:46,advanceWidth:291},"\\":{x_min:20,x_max:616,y_min:-100,y_max:797,ha:897,leftSideBearing:20,advanceWidth:645},"]":{x_min:-76,x_max:226,y_min:-150,y_max:881,ha:1031,leftSideBearing:-76,advanceWidth:297},"^":{x_min:43,x_max:437,y_min:517,y_max:812,ha:295,leftSideBearing:43,advanceWidth:478},_:{x_min:29,x_max:563,y_min:-110,y_max:-1,ha:109,leftSideBearing:29,advanceWidth:598},"`":{x_min:54,x_max:321,y_min:540,y_max:747,ha:207,leftSideBearing:54,advanceWidth:368},a:{x_min:20,x_max:447,y_min:-17,y_max:495,ha:512,leftSideBearing:20,advanceWidth:494},b:{x_min:37,x_max:466,y_min:-27,y_max:770,ha:797,leftSideBearing:37,advanceWidth:510},c:{x_min:35,x_max:456,y_min:-9,y_max:507,ha:516,leftSideBearing:35,advanceWidth:460},d:{x_min:45,x_max:520,y_min:-15,y_max:764,ha:779,leftSideBearing:45,advanceWidth:560},e:{x_min:33,x_max:370,y_min:-5,y_max:501,ha:506,leftSideBearing:33,advanceWidth:397},f:{x_min:35,x_max:411,y_min:-13,y_max:695,ha:708,leftSideBearing:35,advanceWidth:453},g:{x_min:33,x_max:551,y_min:-257,y_max:505,ha:762,leftSideBearing:33,advanceWidth:611},h:{x_min:32,x_max:458,y_min:-29,y_max:743,ha:772,leftSideBearing:32,advanceWidth:491},i:{x_min:45,x_max:167,y_min:-13,y_max:631,ha:644,leftSideBearing:45,advanceWidth:220},j:{x_min:-127,x_max:261,y_min:-231,y_max:601,ha:832,leftSideBearing:-127,advanceWidth:308},k:{x_min:39,x_max:443,y_min:-3,y_max:700,ha:703,leftSideBearing:39,advanceWidth:497},l:{x_min:58,x_max:168,y_min:-8,y_max:686,ha:694,leftSideBearing:58,advanceWidth:227},m:{x_min:39,x_max:688,y_min:-14,y_max:501,ha:515,leftSideBearing:39,advanceWidth:718},n:{x_min:45,x_max:491,y_min:-32,y_max:512,ha:544,leftSideBearing:45,advanceWidth:541},o:{x_min:41,x_max:424,y_min:-12,y_max:493,ha:505,leftSideBearing:41,advanceWidth:447},p:{x_min:25,x_max:529,y_min:-260,y_max:500,ha:760,leftSideBearing:25,advanceWidth:573},q:{x_min:53,x_max:603,y_min:-235,y_max:514,ha:749,leftSideBearing:53,advanceWidth:623},r:{x_min:32,x_max:407,y_min:-7,y_max:492,ha:499,leftSideBearing:32,advanceWidth:460},s:{x_min:49,x_max:416,y_min:-12,y_max:519,ha:531,leftSideBearing:49,advanceWidth:460},t:{x_min:32,x_max:442,y_min:-5,y_max:684,ha:689,leftSideBearing:32,advanceWidth:469},u:{x_min:41,x_max:487,y_min:-5,y_max:507,ha:512,leftSideBearing:41,advanceWidth:510},v:{x_min:16,x_max:441,y_min:-20,y_max:542,ha:562,leftSideBearing:16,advanceWidth:456},w:{x_min:39,x_max:639,y_min:-22,y_max:505,ha:527,leftSideBearing:39,advanceWidth:661},x:{x_min:15,x_max:505,y_min:-39,y_max:539,ha:578,leftSideBearing:15,advanceWidth:541},y:{x_min:-98,x_max:501,y_min:-242,y_max:511,ha:753,leftSideBearing:-98,advanceWidth:548},z:{x_min:27,x_max:479,y_min:-3,y_max:494,ha:497,leftSideBearing:27,advanceWidth:494},"{":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308},"|":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308},"}":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308},"~":{x_min:0,x_max:0,y_min:0,y_max:0,ha:0,leftSideBearing:0,advanceWidth:308}},fontFamily:"PetalumaScript",resolution:1e3,generatedOn:"2020-06-14T18:33:25.407Z"},Yb={spacing:50,glyphs:{" ":{x_min:0,x_max:509,y_min:0,y_max:2e3,ha:2e3,leftSideBearing:0,advanceWidth:509},0:{x_min:121,x_max:1048,y_min:-21,y_max:1477,ha:1498,leftSideBearing:121,advanceWidth:1168},1:{x_min:117,x_max:767,y_min:0,y_max:1456,ha:1456,leftSideBearing:117,advanceWidth:844},2:{x_min:75.8474576645637,x_max:1040,y_min:0,y_max:1477,ha:1477,leftSideBearing:75,advanceWidth:1131},3:{x_min:74.85365853658536,x_max:994,y_min:-21,y_max:1477,ha:1498,leftSideBearing:74,advanceWidth:1106},4:{x_min:63,x_max:1114,y_min:0,y_max:1456,ha:1456,leftSideBearing:63,advanceWidth:1187},5:{x_min:96.8448275474953,x_max:982,y_min:-21,y_max:1456,ha:1477,leftSideBearing:96,advanceWidth:1081},6:{x_min:121,x_max:1067,y_min:-21,y_max:1477,ha:1498,leftSideBearing:121,advanceWidth:1144},7:{x_min:76,x_max:1060,y_min:0,y_max:1456,ha:1456,leftSideBearing:-30,advanceWidth:1128},8:{x_min:92,x_max:1039,y_min:-21,y_max:1477,ha:1498,leftSideBearing:92,advanceWidth:1131},9:{x_min:84,x_max:1026,y_min:-21,y_max:1477,ha:1498,leftSideBearing:84,advanceWidth:1154},"!":{x_min:143,x_max:340,y_min:0,y_max:1456,ha:1456,leftSideBearing:143,advanceWidth:483},'"':{x_min:166,x_max:634,y_min:1055,y_max:1560,ha:505,leftSideBearing:166,advanceWidth:770},"#":{x_min:63,x_max:1179,y_min:0,y_max:1456,ha:1456,leftSideBearing:63,advanceWidth:1246},$:{x_min:81.92156915727656,x_max:1012,y_min:-208,y_max:1693,ha:1901,leftSideBearing:81,advanceWidth:1110},"%":{x_min:77,x_max:1384,y_min:-21,y_max:1477,ha:1498,leftSideBearing:77,advanceWidth:1460},"&":{x_min:74,x_max:1242,y_min:-21,y_max:1477,ha:1498,leftSideBearing:74,advanceWidth:1289},"'":{x_min:166,x_max:324,y_min:1055,y_max:1560,ha:505,leftSideBearing:166,advanceWidth:460},"(":{x_min:114,x_max:650,y_min:-463,y_max:1636,ha:2099,leftSideBearing:114,advanceWidth:662},")":{x_min:11,x_max:547,y_min:-463,y_max:1636,ha:2099,leftSideBearing:11,advanceWidth:654},"*":{x_min:66,x_max:893,y_min:607,y_max:1456,ha:849,leftSideBearing:66,advanceWidth:958},"+":{x_min:73,x_max:1071,y_min:146,y_max:1206,ha:1060,leftSideBearing:73,advanceWidth:1145},",":{x_min:23,x_max:315,y_min:-311,y_max:221,ha:532,leftSideBearing:23,advanceWidth:404},"-":{x_min:154,x_max:643,y_min:538,y_max:692,ha:154,leftSideBearing:154,advanceWidth:797},".":{x_min:145,x_max:342,y_min:0,y_max:202,ha:202,leftSideBearing:145,advanceWidth:493},"/":{x_min:0,x_max:774,y_min:-125,y_max:1456,ha:1581,leftSideBearing:0,advanceWidth:824},":":{x_min:145,x_max:342,y_min:0,y_max:1082,ha:1082,leftSideBearing:145,advanceWidth:419},";":{x_min:53,x_max:345,y_min:-311,y_max:1082,ha:1393,leftSideBearing:53,advanceWidth:424},"<":{x_min:76,x_max:892,y_min:107,y_max:1013,ha:906,leftSideBearing:76,advanceWidth:1017},"=":{x_min:147,x_max:981,y_min:407,y_max:987,ha:580,leftSideBearing:147,advanceWidth:1127},">":{x_min:125,x_max:980,y_min:87,y_max:993,ha:906,leftSideBearing:125,advanceWidth:1060},"?":{x_min:65.92660602419838,x_max:890,y_min:0,y_max:1477,ha:1477,leftSideBearing:65,advanceWidth:953},"@":{x_min:84.3592218305664,x_max:1705.2346925277395,y_min:-453,y_max:1431,ha:1884,leftSideBearing:84,advanceWidth:1821},A:{x_min:70,x_max:1463,y_min:0,y_max:1456,ha:1456,leftSideBearing:70,advanceWidth:1533},B:{x_min:81,x_max:1253,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1322},C:{x_min:80,x_max:1174,y_min:-21,y_max:1477,ha:1498,leftSideBearing:80,advanceWidth:1290},D:{x_min:81,x_max:1291,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1356},E:{x_min:81,x_max:1190,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1306},F:{x_min:81,x_max:1176,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1256},G:{x_min:80,x_max:1226,y_min:-21,y_max:1477,ha:1498,leftSideBearing:80,advanceWidth:1346},H:{x_min:81,x_max:1497,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1578},I:{x_min:81,x_max:604,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:685},J:{x_min:60,x_max:1100,y_min:-21,y_max:1456,ha:1477,leftSideBearing:60,advanceWidth:1169},K:{x_min:81,x_max:1427,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1501},L:{x_min:81,x_max:1130,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1210},M:{x_min:94,x_max:1888,y_min:0,y_max:1456,ha:1456,leftSideBearing:94,advanceWidth:1982},N:{x_min:83,x_max:1509,y_min:0,y_max:1456,ha:1456,leftSideBearing:83,advanceWidth:1592},O:{x_min:70,x_max:1281,y_min:-21,y_max:1477,ha:1498,leftSideBearing:70,advanceWidth:1351},P:{x_min:81,x_max:1242,y_min:0,y_max:1456,ha:1456,leftSideBearing:81,advanceWidth:1297},Q:{x_min:70,x_max:1348,y_min:-245,y_max:1477,ha:1722,leftSideBearing:70,advanceWidth:1376},R:{x_min:81,x_max:1285,y_min:0,y_max:1455,ha:1455,leftSideBearing:81,advanceWidth:1385},S:{x_min:115,x_max:1116,y_min:-21,y_max:1477,ha:1498,leftSideBearing:115,advanceWidth:1206},T:{x_min:96,x_max:1306,y_min:0,y_max:1456,ha:1456,leftSideBearing:96,advanceWidth:1406},U:{x_min:70,x_max:1452,y_min:-21,y_max:1456,ha:1477,leftSideBearing:70,advanceWidth:1522},V:{x_min:65,x_max:1443,y_min:0,y_max:1456,ha:1456,leftSideBearing:65,advanceWidth:1508},W:{x_min:72,x_max:2057,y_min:0,y_max:1456,ha:1456,leftSideBearing:72,advanceWidth:2129},X:{x_min:80,x_max:1449,y_min:0,y_max:1456,ha:1456,leftSideBearing:80,advanceWidth:1529},Y:{x_min:65,x_max:1396,y_min:0,y_max:1456,ha:1456,leftSideBearing:65,advanceWidth:1461},Z:{x_min:90,x_max:1107,y_min:0,y_max:1456,ha:1456,leftSideBearing:90,advanceWidth:1197},"[":{x_min:157,x_max:541,y_min:-312,y_max:1664,ha:1976,leftSideBearing:157,advanceWidth:573},"\\":{x_min:36,x_max:830,y_min:-125,y_max:1456,ha:1581,leftSideBearing:36,advanceWidth:841},"]":{x_min:23,x_max:408,y_min:-312,y_max:1664,ha:1976,leftSideBearing:23,advanceWidth:552},"^":{x_min:71,x_max:802,y_min:729,y_max:1456,ha:727,leftSideBearing:71,advanceWidth:864},_:{x_min:119,x_max:1041,y_min:-154,y_max:0,ha:154,leftSideBearing:119,advanceWidth:1168},"`":{x_min:40,x_max:456,y_min:1288,y_max:1560,ha:272,leftSideBearing:40,advanceWidth:496},a:{x_min:79,x_max:1053,y_min:-21,y_max:1102,ha:1123,leftSideBearing:79,advanceWidth:1132},b:{x_min:-16,x_max:1071,y_min:-21,y_max:1560,ha:1581,leftSideBearing:-16,advanceWidth:1145},c:{x_min:78,x_max:988,y_min:-21,y_max:1102,ha:1123,leftSideBearing:78,advanceWidth:1067},d:{x_min:78,x_max:1156,y_min:-21,y_max:1560,ha:1581,leftSideBearing:78,advanceWidth:1218},e:{x_min:74,x_max:980,y_min:-21,y_max:1102,ha:1123,leftSideBearing:74,advanceWidth:1059},f:{x_min:64,x_max:731,y_min:0,y_max:1581,ha:1581,leftSideBearing:64,advanceWidth:725},g:{x_min:78,x_max:1133,y_min:-437,y_max:1102,ha:1539,leftSideBearing:78,advanceWidth:1157},h:{x_min:49,x_max:1255,y_min:0,y_max:1560,ha:1560,leftSideBearing:49,advanceWidth:1315},i:{x_min:67,x_max:590,y_min:0,y_max:1560,ha:1560,leftSideBearing:67,advanceWidth:652},j:{x_min:-56,x_max:381,y_min:-437,y_max:1560,ha:1997,leftSideBearing:-56,advanceWidth:525},k:{x_min:64,x_max:1248,y_min:0,y_max:1560,ha:1560,leftSideBearing:64,advanceWidth:1287},l:{x_min:64,x_max:587,y_min:0,y_max:1560,ha:1560,leftSideBearing:64,advanceWidth:653},m:{x_min:74,x_max:1905,y_min:0,y_max:1102,ha:1102,leftSideBearing:74,advanceWidth:1977},n:{x_min:74,x_max:1278,y_min:0,y_max:1102,ha:1102,leftSideBearing:74,advanceWidth:1343},o:{x_min:78,x_max:1046,y_min:-21,y_max:1102,ha:1123,leftSideBearing:78,advanceWidth:1124},p:{x_min:34,x_max:1119,y_min:-416,y_max:1102,ha:1518,leftSideBearing:34,advanceWidth:1197},q:{x_min:78,x_max:1135,y_min:-416,y_max:1102,ha:1518,leftSideBearing:78,advanceWidth:1139},r:{x_min:72,x_max:808,y_min:0,y_max:1102,ha:1102,leftSideBearing:72,advanceWidth:854},s:{x_min:104,x_max:933,y_min:-21,y_max:1102,ha:1123,leftSideBearing:104,advanceWidth:1022},t:{x_min:24,x_max:678,y_min:-17,y_max:1343,ha:1360,leftSideBearing:24,advanceWidth:730},u:{x_min:52,x_max:1181,y_min:-21,y_max:1082,ha:1103,leftSideBearing:52,advanceWidth:1245},v:{x_min:26,x_max:1176,y_min:0,y_max:1082,ha:1082,leftSideBearing:26,advanceWidth:1206},w:{x_min:52,x_max:1777,y_min:0,y_max:1082,ha:1082,leftSideBearing:52,advanceWidth:1823},x:{x_min:42,x_max:1163,y_min:0,y_max:1082,ha:1082,leftSideBearing:42,advanceWidth:1203},y:{x_min:24,x_max:1172,y_min:-437,y_max:1082,ha:1519,leftSideBearing:24,advanceWidth:1192},z:{x_min:88,x_max:960,y_min:0,y_max:1082,ha:1082,leftSideBearing:88,advanceWidth:1032},"{":{x_min:63,x_max:671,y_min:-364,y_max:1597,ha:1961,leftSideBearing:63,advanceWidth:701},"|":{x_min:150,x_max:307,y_min:-270,y_max:1456,ha:1726,leftSideBearing:150,advanceWidth:451},"}":{x_min:27,x_max:635,y_min:-364,y_max:1597,ha:1961,leftSideBearing:27,advanceWidth:701},"~":{x_min:121,x_max:1257,y_min:401,y_max:803,ha:402,leftSideBearing:121,advanceWidth:1386}},fontFamily:"Roboto Slab",resolution:2048,generatedOn:"2020-06-15T19:12:58.120Z"};class Gb{static sortAndUnique(t,e,b){if(t.length>1){const i=[];let a;t.sort(e);for(let e=0;e {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Ron B. Yeh\n// MIT License\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Use instead of `instanceof` as a more flexible type guard.\n * @param obj check if this object's CATEGORY matches the provided category.\n * @param category a string representing a category of VexFlow objects.\n * @param checkAncestors defaults to `true`, so we walk up the prototype chain to look for a matching `CATEGORY`.\n * If `false`, we do not check the superclass or other ancestors.\n * @returns true if `obj` has a static `CATEGORY` property that matches `category`.\n */\nexport function isCategory(obj, category, checkAncestors = true) {\n // obj is undefined, a number, a primitive string, or null.\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n // `obj.constructor` is a reference to the constructor function that created the `obj` instance.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor\n let constructorFcn = obj.constructor;\n // Check if the object's static .CATEGORY matches the provided category.\n if (checkAncestors) {\n // Walk up the prototype chain to look for a matching obj.constructor.CATEGORY.\n while (obj !== null) {\n constructorFcn = obj.constructor;\n if ('CATEGORY' in constructorFcn && constructorFcn.CATEGORY === category) {\n return true;\n }\n obj = Object.getPrototypeOf(obj);\n }\n return false;\n }\n else {\n // Do not walk up the prototype chain. Just check this particular object's static .CATEGORY string.\n return 'CATEGORY' in constructorFcn && constructorFcn.CATEGORY === category;\n }\n}\nexport const isAccidental = (obj) => isCategory(obj, Category.Accidental);\nexport const isAnnotation = (obj) => isCategory(obj, Category.Annotation);\nexport const isBarline = (obj) => isCategory(obj, Category.Barline);\nexport const isDot = (obj) => isCategory(obj, Category.Dot);\nexport const isGraceNote = (obj) => isCategory(obj, Category.GraceNote);\nexport const isGraceNoteGroup = (obj) => isCategory(obj, Category.GraceNoteGroup);\nexport const isNote = (obj) => isCategory(obj, Category.Note);\nexport const isRenderContext = (obj) => isCategory(obj, Category.RenderContext);\nexport const isStaveNote = (obj) => isCategory(obj, Category.StaveNote);\nexport const isStemmableNote = (obj) => isCategory(obj, Category.StemmableNote);\nexport const isTabNote = (obj) => isCategory(obj, Category.TabNote);\n// 'const' enums are erased by the TypeScript compiler. The string values are inlined at all the use sites.\n// See: https://www.typescriptlang.org/docs/handbook/enums.html#const-enums\nexport var Category;\n(function (Category) {\n Category[\"Accidental\"] = \"Accidental\";\n Category[\"Annotation\"] = \"Annotation\";\n Category[\"Articulation\"] = \"Articulation\";\n Category[\"Barline\"] = \"Barline\";\n Category[\"BarNote\"] = \"BarNote\";\n Category[\"Beam\"] = \"Beam\";\n Category[\"Bend\"] = \"Bend\";\n Category[\"ChordSymbol\"] = \"ChordSymbol\";\n Category[\"Clef\"] = \"Clef\";\n Category[\"ClefNote\"] = \"ClefNote\";\n Category[\"Crescendo\"] = \"Crescendo\";\n Category[\"Curve\"] = \"Curve\";\n Category[\"Dot\"] = \"Dot\";\n Category[\"Element\"] = \"Element\";\n Category[\"Fraction\"] = \"Fraction\";\n Category[\"FretHandFinger\"] = \"FretHandFinger\";\n Category[\"GhostNote\"] = \"GhostNote\";\n Category[\"Glyph\"] = \"Glyph\";\n Category[\"GlyphNote\"] = \"GlyphNote\";\n Category[\"GraceNote\"] = \"GraceNote\";\n Category[\"GraceNoteGroup\"] = \"GraceNoteGroup\";\n Category[\"GraceTabNote\"] = \"GraceTabNote\";\n Category[\"KeySignature\"] = \"KeySignature\";\n Category[\"KeySigNote\"] = \"KeySigNote\";\n Category[\"Modifier\"] = \"Modifier\";\n Category[\"MultiMeasureRest\"] = \"MultiMeasureRest\";\n Category[\"Note\"] = \"Note\";\n Category[\"NoteHead\"] = \"NoteHead\";\n Category[\"NoteSubGroup\"] = \"NoteSubGroup\";\n Category[\"Ornament\"] = \"Ornament\";\n Category[\"Parenthesis\"] = \"Parenthesis\";\n Category[\"PedalMarking\"] = \"PedalMarking\";\n Category[\"RenderContext\"] = \"RenderContext\";\n Category[\"RepeatNote\"] = \"RepeatNote\";\n Category[\"Repetition\"] = \"Repetition\";\n Category[\"Stave\"] = \"Stave\";\n Category[\"StaveConnector\"] = \"StaveConnector\";\n Category[\"StaveHairpin\"] = \"StaveHairpin\";\n Category[\"StaveLine\"] = \"StaveLine\";\n Category[\"StaveModifier\"] = \"StaveModifier\";\n Category[\"StaveNote\"] = \"StaveNote\";\n Category[\"StaveSection\"] = \"StaveSection\";\n Category[\"StaveTempo\"] = \"StaveTempo\";\n Category[\"StaveText\"] = \"StaveText\";\n Category[\"StaveTie\"] = \"StaveTie\";\n Category[\"Stem\"] = \"Stem\";\n Category[\"StemmableNote\"] = \"StemmableNote\";\n Category[\"StringNumber\"] = \"StringNumber\";\n Category[\"Stroke\"] = \"Stroke\";\n Category[\"System\"] = \"System\";\n Category[\"TabNote\"] = \"TabNote\";\n Category[\"TabSlide\"] = \"TabSlide\";\n Category[\"TabStave\"] = \"TabStave\";\n Category[\"TabTie\"] = \"TabTie\";\n Category[\"TextBracket\"] = \"TextBracket\";\n Category[\"TextDynamics\"] = \"TextDynamics\";\n Category[\"TextNote\"] = \"TextNote\";\n Category[\"Tickable\"] = \"Tickable\";\n Category[\"TimeSignature\"] = \"TimeSignature\";\n Category[\"TimeSigNote\"] = \"TimeSigNote\";\n Category[\"Tremolo\"] = \"Tremolo\";\n Category[\"Tuplet\"] = \"Tuplet\";\n Category[\"Vibrato\"] = \"Vibrato\";\n Category[\"VibratoBracket\"] = \"VibratoBracket\";\n Category[\"Voice\"] = \"Voice\";\n Category[\"Volta\"] = \"Volta\";\n})(Category || (Category = {}));\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// Note: Keep this module free of imports to reduce the chance of circular dependencies.\n/** `RuntimeError` will be thrown by VexFlow classes in case of error. */\nexport class RuntimeError extends Error {\n constructor(code, message = '') {\n super('[RuntimeError] ' + code + ': ' + message);\n this.code = code;\n }\n}\n/** VexFlow can be used outside of the browser (e.g., Node) where `window` may not be defined. */\n// eslint-disable-next-line\nexport function globalObject() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return Function('return this')();\n}\n/**\n * Check that `x` is of type `T` and not `undefined`.\n * If `x` is `undefined`, throw a RuntimeError with the optionally provided error code and message.\n */\nexport function defined(x, code = 'undefined', message = '') {\n if (x === undefined) {\n throw new RuntimeError(code, message);\n }\n return x;\n}\n/** Default log function sends all arguments to console. */\n// eslint-disable-next-line\nexport function log(block, ...args) {\n if (!args)\n return;\n const line = Array.prototype.slice.call(args).join(' ');\n globalObject().console.log(block + ': ' + line);\n}\n/** Dump warning to console. */\n// eslint-disable-next-line\nexport function warn(...args) {\n const line = args.join(' ');\n const err = new Error();\n globalObject().console.log('Warning: ', line, err.stack);\n}\n/** Round number to nearest fractional value (`.5`, `.25`, etc.) */\nfunction roundN(x, n) {\n return x % n >= n / 2 ? parseInt(`${x / n}`, 10) * n + n : parseInt(`${x / n}`, 10) * n;\n}\n/** Locate the mid point between stave lines. Returns a fractional line if a space. */\nexport function midLine(a, b) {\n let mid_line = b + (a - b) / 2;\n if (mid_line % 2 > 0) {\n mid_line = roundN(mid_line * 10, 5) / 10;\n }\n return mid_line;\n}\n/**\n * Used by various classes (e.g., SVGContext) to provide a\n * unique prefix to element names (or other keys in shared namespaces).\n */\nexport function prefix(text) {\n return `vf-${text}`;\n}\n/**\n * Convert an arbitrary angle in radians to the equivalent one in the range [0, pi).\n */\nexport function normalizeAngle(a) {\n a = a % (2 * Math.PI);\n if (a < 0) {\n a += 2 * Math.PI;\n }\n return a;\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// Author: Joshua Koo / @zz85\n// Author: @incompleteopus\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n/** Fraction represents a rational number. */\nexport class Fraction {\n /** Set the numerator and denominator. */\n constructor(numerator, denominator) {\n this.numerator = 1;\n this.denominator = 1;\n this.set(numerator, denominator);\n }\n static get CATEGORY() {\n return Category.Fraction;\n }\n /**\n * GCD: Greatest common divisor using the Euclidean algorithm.\n * Note: GCD(0, 0) => 0 and GCD(0, n) => n.\n */\n static GCD(a, b) {\n if (typeof a !== 'number' || Number.isNaN(a) || typeof b !== 'number' || Number.isNaN(b)) {\n throw new RuntimeError('BadArgument', `Invalid numbers: ${a}, ${b}`);\n }\n let t;\n while (b !== 0) {\n t = b;\n b = a % b;\n a = t;\n }\n return a;\n }\n /** LCM: Lowest common multiple. */\n static LCM(a, b) {\n return (a * b) / Fraction.GCD(a, b);\n }\n /** Lowest common multiple for more than two numbers. */\n static LCMM(args) {\n if (args.length === 0) {\n return 0;\n }\n else if (args.length === 1) {\n return args[0];\n }\n else if (args.length === 2) {\n return Fraction.LCM(args[0], args[1]);\n }\n else {\n // args.shift() removes the first number.\n // LCM the first number with the rest of the numbers.\n return Fraction.LCM(args.shift(), Fraction.LCMM(args));\n }\n }\n /** Set the numerator and denominator. */\n set(numerator = 1, denominator = 1) {\n this.numerator = numerator;\n this.denominator = denominator;\n return this;\n }\n /** Return the value of the fraction. */\n value() {\n return this.numerator / this.denominator;\n }\n /** Simplify numerator and denominator using GCD. */\n simplify() {\n let u = this.numerator;\n let d = this.denominator;\n const gcd = Fraction.GCD(u, d);\n u /= gcd;\n d /= gcd;\n if (d < 0) {\n d = -d;\n u = -u;\n }\n return this.set(u, d);\n }\n /** Add value of another fraction. */\n add(param1 = 0, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n const lcm = Fraction.LCM(this.denominator, otherDenominator);\n const a = lcm / this.denominator;\n const b = lcm / otherDenominator;\n const u = this.numerator * a + otherNumerator * b;\n return this.set(u, lcm);\n }\n /** Substract value of another fraction. */\n subtract(param1 = 0, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n const lcm = Fraction.LCM(this.denominator, otherDenominator);\n const a = lcm / this.denominator;\n const b = lcm / otherDenominator;\n const u = this.numerator * a - otherNumerator * b;\n return this.set(u, lcm);\n }\n /** Multiply by value of another fraction. */\n multiply(param1 = 1, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n return this.set(this.numerator * otherNumerator, this.denominator * otherDenominator);\n }\n /** Divide by value of another Fraction. */\n divide(param1 = 1, param2 = 1) {\n const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2);\n return this.set(this.numerator * otherDenominator, this.denominator * otherNumerator);\n }\n /** Simplify both sides and check if they are equal. */\n equals(compare) {\n const a = Fraction.__staticFractionA.copy(compare).simplify();\n const b = Fraction.__staticFractionB.copy(this).simplify();\n return a.numerator === b.numerator && a.denominator === b.denominator;\n }\n /** Greater than operator. */\n greaterThan(compare) {\n const a = Fraction.__staticFractionB.copy(this);\n a.subtract(compare);\n return a.numerator > 0;\n }\n /** Greater than or equals operator. */\n greaterThanEquals(compare) {\n const a = Fraction.__staticFractionB.copy(this);\n a.subtract(compare);\n return a.numerator >= 0;\n }\n /** Less than operator. */\n lessThan(compare) {\n return !this.greaterThanEquals(compare);\n }\n /** Less than or equals operator. */\n lessThanEquals(compare) {\n return !this.greaterThan(compare);\n }\n /** Return a new copy with current values. */\n clone() {\n return new Fraction(this.numerator, this.denominator);\n }\n /** Copy value of another fraction. */\n copy(other) {\n if (typeof other === 'number') {\n return this.set(other, 1);\n }\n else {\n return this.set(other.numerator, other.denominator);\n }\n }\n /** Return the integer component (eg. 5/2 => 2). */\n quotient() {\n return Math.floor(this.numerator / this.denominator);\n }\n /** Return the remainder component (eg. 5/2 => 1). */\n remainder() {\n return this.numerator % this.denominator;\n }\n /** Calculate absolute value. */\n makeAbs() {\n this.denominator = Math.abs(this.denominator);\n this.numerator = Math.abs(this.numerator);\n return this;\n }\n /** Return a raw string representation (eg. \"5/2\"). */\n toString() {\n return `${this.numerator}/${this.denominator}`;\n }\n /** Return a simplified string respresentation. */\n toSimplifiedString() {\n return Fraction.__staticFractionTmp.copy(this).simplify().toString();\n }\n /** Return string representation in mixed form. */\n toMixedString() {\n let s = '';\n const q = this.quotient();\n const f = Fraction.__staticFractionTmp.copy(this);\n if (q < 0) {\n f.makeAbs();\n }\n if (q !== 0) {\n s += q;\n if (f.numerator !== 0) {\n s += ` ${f.toSimplifiedString()}`;\n }\n }\n else if (f.numerator === 0) {\n s = '0';\n }\n else {\n s = f.toSimplifiedString();\n }\n return s;\n }\n /** Parse a fraction string. */\n parse(str) {\n const i = str.split('/');\n const n = parseInt(i[0], 10);\n const d = i[1] ? parseInt(i[1], 10) : 1;\n return this.set(n, d);\n }\n}\n// Cached objects for comparisons.\nFraction.__staticFractionA = new Fraction();\nFraction.__staticFractionB = new Fraction();\nFraction.__staticFractionTmp = new Fraction();\n/** Helper function to extract the numerator and denominator from another fraction. */\nfunction getNumeratorAndDenominator(n, d = 1) {\n if (typeof n === 'number') {\n // Both params are numbers, so we return them as [numerator, denominator].\n return [n, d];\n }\n else {\n // First param is a Fraction object. We ignore the second param.\n return [n.numerator, n.denominator];\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nexport class BoundingBox {\n constructor(x, y, w, h) {\n this.x = x;\n this.y = y;\n this.w = w;\n this.h = h;\n }\n /**\n * Create a new copy.\n */\n static copy(that) {\n return new BoundingBox(that.x, that.y, that.w, that.h);\n }\n /** Get x position. */\n getX() {\n return this.x;\n }\n /** Get y position. */\n getY() {\n return this.y;\n }\n /** Get width. */\n getW() {\n return this.w;\n }\n /** Get height. */\n getH() {\n return this.h;\n }\n /** Set x position. */\n setX(x) {\n this.x = x;\n return this;\n }\n /** Set y position. */\n setY(y) {\n this.y = y;\n return this;\n }\n /** Set width. */\n setW(w) {\n this.w = w;\n return this;\n }\n /** Set height. */\n setH(h) {\n this.h = h;\n return this;\n }\n /** Move to position. */\n move(x, y) {\n this.x += x;\n this.y += y;\n return this;\n }\n /** Clone. */\n clone() {\n return BoundingBox.copy(this);\n }\n /**\n * Merge my box with given box. Creates a bigger bounding box unless\n * the given box is contained in this one.\n */\n mergeWith(boundingBox) {\n const that = boundingBox;\n const new_x = this.x < that.x ? this.x : that.x;\n const new_y = this.y < that.y ? this.y : that.y;\n const new_w = Math.max(this.x + this.w, that.x + that.w) - new_x;\n const new_h = Math.max(this.y + this.h, that.y + that.h) - new_y;\n this.x = new_x;\n this.y = new_y;\n this.w = new_w;\n this.h = new_h;\n return this;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n/**\n * BoundingBoxComputation computes metrics for a bounding box by continuously\n * taking canvas path commands.\n *\n * Warning: This class is merely a crutch to get bounding box information without\n * explicit metadata. This is likely to get deprecated following SMuFL support.\n *\n * based on: https://github.com/canvg/canvg/blob/master/src/BoundingBox.ts (MIT License)\n */\nexport class BoundingBoxComputation {\n constructor() {\n this.x1 = Number.NaN;\n this.y1 = Number.NaN;\n this.x2 = Number.NaN;\n this.y2 = Number.NaN;\n }\n /** Get calculated X1. */\n getX1() {\n return this.x1;\n }\n /** Get calculated Y1. */\n getY1() {\n return this.y1;\n }\n /** Get calculated width. */\n width() {\n return this.x2 - this.x1;\n }\n /** Get calculated height. */\n height() {\n return this.y2 - this.y1;\n }\n /** Add point to BoundingBox. */\n addPoint(x, y) {\n if (isNaN(this.x1) || x < this.x1)\n this.x1 = x;\n if (isNaN(this.x2) || x > this.x2)\n this.x2 = x;\n if (isNaN(this.y1) || y < this.y1)\n this.y1 = y;\n if (isNaN(this.y2) || y > this.y2)\n this.y2 = y;\n }\n /** Add X to BoundingBox. */\n addX(x) {\n this.addPoint(x, this.y1);\n }\n /** Add Y to BoundingBox. */\n addY(y) {\n this.addPoint(this.x1, y);\n }\n /** Add quadratic curve to BoundingBox. */\n addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {\n this.addPoint(p0x, p0y);\n this.addPoint(p2x, p2y);\n const p01x = p1x - p0x;\n const p12x = p2x - p1x;\n let denom = p01x - p12x;\n if (denom != 0) {\n const t = p01x / denom;\n if (t > 0 && t < 1) {\n const it = 1 - t;\n this.addX(it * it * p0x + 2 * it * t * p1x + t * t * p2x);\n }\n }\n const p01y = p1y - p0y;\n const p12y = p2y - p1y;\n denom = p01y - p12y;\n if (denom != 0) {\n const t = p01y / denom;\n if (t > 0 && t < 1) {\n const it = 1 - t;\n this.addY(it * it * p0y + 2 * it * t * p1y + t * t * p2y);\n }\n }\n }\n /** Add bezier curve to BoundingBox. */\n addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\n // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n const p0 = [p0x, p0y];\n const p1 = [p1x, p1y];\n const p2 = [p2x, p2y];\n const p3 = [p3x, p3y];\n let i;\n this.addPoint(p0[0], p0[1]);\n this.addPoint(p3[0], p3[1]);\n const f = (t, i) => Math.pow(1 - t, 3) * p0[i] +\n 3 * Math.pow(1 - t, 2) * t * p1[i] +\n 3 * (1 - t) * Math.pow(t, 2) * p2[i] +\n Math.pow(t, 3) * p3[i];\n for (i = 0; i <= 1; i++) {\n const b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n const a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n const c = 3 * p1[i] - 3 * p0[i];\n if (a === 0) {\n if (b === 0)\n continue;\n const t = -c / b;\n if (0 < t && t < 1) {\n if (i === 0)\n this.addX(f(t, i));\n if (i === 1)\n this.addY(f(t, i));\n }\n continue;\n }\n const b2ac = Math.pow(b, 2) - 4 * c * a;\n if (b2ac < 0)\n continue;\n const t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n if (0 < t1 && t1 < 1) {\n if (i === 0)\n this.addX(f(t1, i));\n if (i === 1)\n this.addY(f(t1, i));\n }\n const t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n if (0 < t2 && t2 < 1) {\n if (i === 0)\n this.addX(f(t2, i));\n if (i === 1)\n this.addY(f(t2, i));\n }\n }\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { defined } from './util';\nexport var FontWeight;\n(function (FontWeight) {\n FontWeight[\"NORMAL\"] = \"normal\";\n FontWeight[\"BOLD\"] = \"bold\";\n})(FontWeight || (FontWeight = {}));\nexport var FontStyle;\n(function (FontStyle) {\n FontStyle[\"NORMAL\"] = \"normal\";\n FontStyle[\"ITALIC\"] = \"italic\";\n})(FontStyle || (FontStyle = {}));\n// Internal element for parsing CSS font shorthand strings.\nlet fontParser;\nconst Fonts = {};\nexport class Font {\n /**\n * Use `Font.load(fontName)` to get a Font object.\n * Do not call this constructor directly.\n */\n constructor(fontName) {\n this.name = fontName;\n }\n /**\n * @param fontSize a font size to convert. Can be specified as a CSS length string (e.g., '16pt', '1em')\n * or as a number (the unit is assumed to be 'pt'). See `Font.scaleToPxFrom` for the supported\n * units (e.g., pt, em, %).\n * @returns the number of pixels that is equivalent to `fontSize`\n */\n static convertSizeToPixelValue(fontSize = Font.SIZE) {\n var _a;\n if (typeof fontSize === 'number') {\n // Assume the numeric fontSize is specified in pt.\n return fontSize * Font.scaleToPxFrom.pt;\n }\n else {\n const value = parseFloat(fontSize);\n if (isNaN(value)) {\n return 0;\n }\n const unit = fontSize.replace(/[\\d.\\s]/g, '').toLowerCase(); // Extract the unit by removing all numbers, dots, spaces.\n const conversionFactor = (_a = Font.scaleToPxFrom[unit]) !== null && _a !== void 0 ? _a : 1;\n return value * conversionFactor;\n }\n }\n /**\n * @param fontSize a font size to convert. Can be specified as a CSS length string (e.g., '16pt', '1em')\n * or as a number (the unit is assumed to be 'pt'). See `Font.scaleToPxFrom` for the supported\n * units (e.g., pt, em, %).\n * @returns the number of points that is equivalent to `fontSize`\n */\n static convertSizeToPointValue(fontSize = Font.SIZE) {\n var _a;\n if (typeof fontSize === 'number') {\n // Assume the numeric fontSize is specified in pt.\n return fontSize;\n }\n else {\n const value = parseFloat(fontSize);\n if (isNaN(value)) {\n return 0;\n }\n const unit = fontSize.replace(/[\\d.\\s]/g, '').toLowerCase(); // Extract the unit by removing all numbers, dots, spaces.\n const conversionFactor = ((_a = Font.scaleToPxFrom[unit]) !== null && _a !== void 0 ? _a : 1) / Font.scaleToPxFrom.pt;\n return value * conversionFactor;\n }\n }\n /**\n * @param f\n * @param size\n * @param weight\n * @param style\n * @returns the `size` field will include the units (e.g., '12pt', '16px').\n */\n static validate(f, size, weight, style) {\n // If f is a string but all other arguments are undefined, we assume that\n // f is CSS font shorthand (e.g., 'italic bold 10pt Arial').\n if (typeof f === 'string' && size === undefined && weight === undefined && style === undefined) {\n return Font.fromCSSString(f);\n }\n let family;\n if (typeof f === 'object') {\n // f is a FontInfo object, so we extract its fields.\n family = f.family;\n size = f.size;\n weight = f.weight;\n style = f.style;\n }\n else {\n // f is a string representing the font family name or undefined.\n family = f;\n }\n family = family !== null && family !== void 0 ? family : Font.SANS_SERIF;\n size = size !== null && size !== void 0 ? size : Font.SIZE + 'pt';\n weight = weight !== null && weight !== void 0 ? weight : FontWeight.NORMAL;\n style = style !== null && style !== void 0 ? style : FontStyle.NORMAL;\n if (weight === '') {\n weight = FontWeight.NORMAL;\n }\n if (style === '') {\n style = FontStyle.NORMAL;\n }\n // If size is a number, we assume the unit is `pt`.\n if (typeof size === 'number') {\n size = `${size}pt`;\n }\n // If weight is a number (e.g., 900), turn it into a string representation of that number.\n if (typeof weight === 'number') {\n weight = weight.toString();\n }\n // At this point, `family`, `size`, `weight`, and `style` are all strings.\n return { family, size, weight, style };\n }\n /**\n * @param cssFontShorthand a string formatted as CSS font shorthand (e.g., 'italic bold 15pt Arial').\n */\n static fromCSSString(cssFontShorthand) {\n // Let the browser parse this string for us.\n // First, create a span element.\n // Then, set its style.font and extract it back out.\n if (!fontParser) {\n fontParser = document.createElement('span');\n }\n fontParser.style.font = cssFontShorthand;\n const { fontFamily, fontSize, fontWeight, fontStyle } = fontParser.style;\n return { family: fontFamily, size: fontSize, weight: fontWeight, style: fontStyle };\n }\n /**\n * @returns a CSS font shorthand string of the form `italic bold 16pt Arial`.\n */\n static toCSSString(fontInfo) {\n var _a;\n if (!fontInfo) {\n return '';\n }\n let style;\n const st = fontInfo.style;\n if (st === FontStyle.NORMAL || st === '' || st === undefined) {\n style = ''; // no space! Omit the style section.\n }\n else {\n style = st.trim() + ' ';\n }\n let weight;\n const wt = fontInfo.weight;\n if (wt === FontWeight.NORMAL || wt === '' || wt === undefined) {\n weight = ''; // no space! Omit the weight section.\n }\n else if (typeof wt === 'number') {\n weight = wt + ' ';\n }\n else {\n weight = wt.trim() + ' ';\n }\n let size;\n const sz = fontInfo.size;\n if (sz === undefined) {\n size = Font.SIZE + 'pt ';\n }\n else if (typeof sz === 'number') {\n size = sz + 'pt ';\n }\n else {\n // size is already a string.\n size = sz.trim() + ' ';\n }\n const family = (_a = fontInfo.family) !== null && _a !== void 0 ? _a : Font.SANS_SERIF;\n return `${style}${weight}${size}${family}`;\n }\n /**\n * @param fontSize a number representing a font size, or a string font size with units.\n * @param scaleFactor multiply the size by this factor.\n * @returns size * scaleFactor (e.g., 16pt * 3 = 48pt, 8px * 0.5 = 4px, 24 * 2 = 48).\n * If the fontSize argument was a number, the return value will be a number.\n * If the fontSize argument was a string, the return value will be a string.\n */\n static scaleSize(fontSize, scaleFactor) {\n if (typeof fontSize === 'number') {\n return (fontSize * scaleFactor);\n }\n else {\n const value = parseFloat(fontSize);\n const unit = fontSize.replace(/[\\d.\\s]/g, ''); // Remove all numbers, dots, spaces.\n return `${value * scaleFactor}${unit}`;\n }\n }\n /**\n * @param weight a string (e.g., 'bold') or a number (e.g., 600 / semi-bold in the OpenType spec).\n * @returns true if the font weight indicates bold.\n */\n static isBold(weight) {\n if (!weight) {\n return false;\n }\n else if (typeof weight === 'number') {\n return weight >= 600;\n }\n else {\n // a string can be 'bold' or '700'\n const parsedWeight = parseInt(weight, 10);\n if (isNaN(parsedWeight)) {\n return weight.toLowerCase() === 'bold';\n }\n else {\n return parsedWeight >= 600;\n }\n }\n }\n /**\n * @param style\n * @returns true if the font style indicates 'italic'.\n */\n static isItalic(style) {\n if (!style) {\n return false;\n }\n else {\n return style.toLowerCase() === FontStyle.ITALIC;\n }\n }\n /**\n * @param fontName\n * @param woffURL The absolute or relative URL to the woff file.\n * @param includeWoff2 If true, we assume that a woff2 file is in\n * the same folder as the woff file, and will append a `2` to the url.\n */\n // Support distributions of the typescript compiler that do not yet include the FontFace API declarations.\n // eslint-disable-next-line\n // @ts-ignore\n static loadWebFont(fontName, woffURL, includeWoff2 = true) {\n return __awaiter(this, void 0, void 0, function* () {\n const woff2URL = includeWoff2 ? `url(${woffURL}2) format('woff2'), ` : '';\n const woff1URL = `url(${woffURL}) format('woff')`;\n const woffURLs = woff2URL + woff1URL;\n // eslint-disable-next-line\n // @ts-ignore\n const fontFace = new FontFace(fontName, woffURLs);\n yield fontFace.load();\n // eslint-disable-next-line\n // @ts-ignore\n document.fonts.add(fontFace);\n return fontFace;\n });\n }\n /**\n * Load the web fonts that are used by ChordSymbol. For example, `flow.html` calls:\n * `await Vex.Flow.Font.loadWebFonts();`\n * Alternatively, you may load web fonts with a stylesheet link (e.g., from Google Fonts),\n * and a @font-face { font-family: ... } rule in your CSS.\n * If you do not load either of these fonts, ChordSymbol will fall back to Times or Arial,\n * depending on the current music engraving font.\n *\n * You can customize `Font.WEB_FONT_HOST` and `Font.WEB_FONT_FILES` to load different fonts\n * for your app.\n */\n static loadWebFonts() {\n return __awaiter(this, void 0, void 0, function* () {\n const host = Font.WEB_FONT_HOST;\n const files = Font.WEB_FONT_FILES;\n for (const fontName in files) {\n const fontPath = files[fontName];\n Font.loadWebFont(fontName, host + fontPath);\n }\n });\n }\n /**\n * @param fontName\n * @param data optionally set the Font object's `.data` property.\n * This is usually done when setting up a font for the first time.\n * @param metrics optionally set the Font object's `.metrics` property.\n * This is usually done when setting up a font for the first time.\n * @returns a Font object with the given `fontName`.\n * Reuse an existing Font object if a matching one is found.\n */\n static load(fontName, data, metrics) {\n let font = Fonts[fontName];\n if (!font) {\n font = new Font(fontName);\n Fonts[fontName] = font;\n }\n if (data) {\n font.setData(data);\n }\n if (metrics) {\n font.setMetrics(metrics);\n }\n return font;\n }\n getName() {\n return this.name;\n }\n getData() {\n return defined(this.data, 'FontError', 'Missing font data');\n }\n getMetrics() {\n return defined(this.metrics, 'FontError', 'Missing metrics');\n }\n setData(data) {\n this.data = data;\n }\n setMetrics(metrics) {\n this.metrics = metrics;\n }\n hasData() {\n return this.data !== undefined;\n }\n getResolution() {\n return this.getData().resolution;\n }\n getGlyphs() {\n return this.getData().glyphs;\n }\n /**\n * Use the provided key to look up a value in this font's metrics file (e.g., bravura_metrics.ts, petaluma_metrics.ts).\n * @param key is a string separated by periods (e.g., stave.endPaddingMax, clef.lineCount.'5'.shiftY).\n * @param defaultValue is returned if the lookup fails.\n * @returns the retrieved value (or `defaultValue` if the lookup fails).\n */\n // eslint-disable-next-line\n lookupMetric(key, defaultValue) {\n const keyParts = key.split('.');\n // Start with the top level font metrics object, and keep looking deeper into the object (via each part of the period-delimited key).\n let currObj = this.getMetrics();\n for (let i = 0; i < keyParts.length; i++) {\n const keyPart = keyParts[i];\n const value = currObj[keyPart];\n if (value === undefined) {\n // If the key lookup fails, we fall back to the defaultValue.\n return defaultValue;\n }\n // The most recent lookup succeeded, so we drill deeper into the object.\n currObj = value;\n }\n // After checking every part of the key (i.e., the loop completed), return the most recently retrieved value.\n return currObj;\n }\n /** For debugging. */\n toString() {\n return '[' + this.name + ' Font]';\n }\n}\n//////////////////////////////////////////////////////////////////////////////////////////////////\n// STATIC MEMBERS\n/** Default sans-serif font family. */\nFont.SANS_SERIF = 'Arial, sans-serif';\n/** Default serif font family. */\nFont.SERIF = 'Times New Roman, serif';\n/** Default font size in `pt`. */\nFont.SIZE = 10;\n// CSS Font Sizes: 36pt == 48px == 3em == 300% == 0.5in\n/** Given a length (for units: pt, px, em, %, in, mm, cm) what is the scale factor to convert it to px? */\nFont.scaleToPxFrom = {\n pt: 4 / 3,\n px: 1,\n em: 16,\n '%': 4 / 25,\n in: 96,\n mm: 96 / 25.4,\n cm: 96 / 2.54,\n};\n/**\n * Customize this field to specify a different CDN for delivering web fonts.\n * Alternative: https://cdn.jsdelivr.net/npm/vexflow-fonts@1.0.3/\n * Or you can use your own host.\n */\nFont.WEB_FONT_HOST = 'https://unpkg.com/vexflow-fonts@1.0.3/';\n/**\n * These font files will be loaded from the CDN specified by `Font.WEB_FONT_HOST` when\n * `await Font.loadWebFonts()` is called. Customize this field to specify a different\n * set of fonts to load. See: `Font.loadWebFonts()`.\n */\nFont.WEB_FONT_FILES = {\n 'Roboto Slab': 'robotoslab/RobotoSlab-Medium_2.001.woff',\n PetalumaScript: 'petaluma/PetalumaScript_1.10_FS.woff',\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n//\n// ## Description\n//\n// This file implements a registry for VexFlow elements. It allows users\n// to track, query, and manage some subset of generated elements, and\n// dynamically get and set attributes.\n//\n// There are two ways to register with a registry:\n//\n// 1) Explicitly call `registry.register(elem:Element, id?:string)`, or,\n// 2) Call `Registry.enableDefaultRegistry(registry)` when ready, and all future\n// elements will automatically register with it.\n//\n// Once an element is registered, selected attributes are tracked and indexed by\n// the registry. This allows fast look up of elements by attributes like id, type,\n// and class.\nimport { RuntimeError } from './util';\n// Indexes are represented as maps of maps of maps. This allows\n// for both multi-labeling (e.g., an element can have multiple classes)\n// and efficient lookup.\nclass Index {\n constructor() {\n this.id = {};\n this.type = {};\n this.class = {};\n }\n}\nexport class Registry {\n constructor() {\n this.index = new Index();\n }\n static getDefaultRegistry() {\n return Registry.defaultRegistry;\n }\n // If you call `enableDefaultRegistry`, any new elements will auto-register with\n // the provided registry as soon as they're constructed.\n static enableDefaultRegistry(registry) {\n Registry.defaultRegistry = registry;\n }\n static disableDefaultRegistry() {\n Registry.defaultRegistry = undefined;\n }\n clear() {\n this.index = new Index();\n return this;\n }\n setIndexValue(name, value, id, elem) {\n const index = this.index;\n if (!index[name][value]) {\n index[name][value] = {};\n }\n index[name][value][id] = elem;\n }\n // Updates the indexes for element 'id'. If an element's attribute changes\n // from A -> B, make sure to remove the element from A.\n updateIndex({ id, name, value, oldValue }) {\n const elem = this.getElementById(id);\n if (oldValue !== undefined && this.index[name][oldValue]) {\n delete this.index[name][oldValue][id];\n }\n if (value && elem) {\n this.setIndexValue(name, value, elem.getAttribute('id'), elem);\n }\n }\n /**\n * Register element `elem` with this registry.\n * This adds the element to its index and watches it for attribute changes.\n * @param elem\n * @param id\n * @returns this\n */\n register(elem, id) {\n id = id || elem.getAttribute('id');\n if (!id) {\n throw new RuntimeError(\"Can't add element without `id` attribute to registry\");\n }\n // Manually add id to index, then update other indexes.\n elem.setAttribute('id', id);\n this.setIndexValue('id', id, id, elem);\n this.updateIndex({ id, name: 'type', value: elem.getAttribute('type'), oldValue: undefined });\n elem.onRegister(this);\n return this;\n }\n getElementById(id) {\n var _a, _b;\n return (_b = (_a = this.index.id) === null || _a === void 0 ? void 0 : _a[id]) === null || _b === void 0 ? void 0 : _b[id]; // return undefined if the id is not found.\n }\n getElementsByAttribute(attribute, value) {\n const index_attr = this.index[attribute];\n if (index_attr) {\n const index_attr_val = index_attr[value];\n if (index_attr_val) {\n const keys = Object.keys(index_attr_val);\n return keys.map((k) => index_attr_val[k]);\n }\n }\n return [];\n }\n getElementsByType(type) {\n return this.getElementsByAttribute('type', type);\n }\n getElementsByClass(className) {\n return this.getElementsByAttribute('class', className);\n }\n // This is called by the element when an attribute value changes. If an indexed\n // attribute changes, then update the local index.\n onUpdate(info) {\n const allowedNames = ['id', 'type', 'class'];\n if (allowedNames.includes(info.name)) {\n this.updateIndex(info);\n }\n return this;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Registry } from './registry';\nimport { Category } from './typeguard';\nimport { defined, prefix } from './util';\n/**\n * Element implements a generic base class for VexFlow, with implementations\n * of general functions and properties that can be inherited by all VexFlow elements.\n */\nexport class Element {\n constructor() {\n var _a;\n this.children = [];\n this.attrs = {\n id: Element.newID(),\n el: undefined,\n type: this.getCategory(),\n classes: {},\n };\n this.rendered = false;\n // If a default registry exist, then register with it right away.\n (_a = Registry.getDefaultRegistry()) === null || _a === void 0 ? void 0 : _a.register(this);\n }\n static get CATEGORY() {\n return Category.Element;\n }\n static newID() {\n return `auto${Element.ID++}`;\n }\n addChildElement(child) {\n this.children.push(child);\n return this;\n }\n getCategory() {\n return this.constructor.CATEGORY;\n }\n /**\n * Set the element style used to render.\n *\n * Example:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.draw();\n * ```\n * Note: If the element draws additional sub-elements (ie.: Modifiers in a Stave),\n * the style can be applied to all of them by means of the context:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.getContext().setFillStyle('red');\n * element.getContext().setStrokeStyle('red');\n * element.draw();\n * ```\n * or using drawWithStyle:\n * ```typescript\n * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });\n * element.drawWithStyle();\n * ```\n */\n setStyle(style) {\n this.style = style;\n return this;\n }\n /** Set the element & associated children style used for rendering. */\n setGroupStyle(style) {\n this.style = style;\n this.children.forEach((child) => child.setGroupStyle(style));\n return this;\n }\n /** Get the element style used for rendering. */\n getStyle() {\n return this.style;\n }\n /** Apply the element style to `context`. */\n applyStyle(context = this.context, style = this.getStyle()) {\n if (!style)\n return this;\n if (!context)\n return this;\n context.save();\n if (style.shadowColor)\n context.setShadowColor(style.shadowColor);\n if (style.shadowBlur)\n context.setShadowBlur(style.shadowBlur);\n if (style.fillStyle)\n context.setFillStyle(style.fillStyle);\n if (style.strokeStyle)\n context.setStrokeStyle(style.strokeStyle);\n if (style.lineWidth)\n context.setLineWidth(style.lineWidth);\n return this;\n }\n /** Restore the style of `context`. */\n restoreStyle(context = this.context, style = this.getStyle()) {\n if (!style)\n return this;\n if (!context)\n return this;\n context.restore();\n return this;\n }\n /**\n * Draw the element and all its sub-elements (ie.: Modifiers in a Stave)\n * with the element style.\n */\n drawWithStyle() {\n this.checkContext();\n this.applyStyle();\n this.draw();\n this.restoreStyle();\n }\n /** Check if it has a class label (An element can have multiple class labels). */\n hasClass(className) {\n return this.attrs.classes[className] === true;\n }\n /** Add a class label (An element can have multiple class labels). */\n addClass(className) {\n var _a;\n this.attrs.classes[className] = true;\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({\n id: this.attrs.id,\n name: 'class',\n value: className,\n oldValue: undefined,\n });\n return this;\n }\n /** Remove a class label (An element can have multiple class labels). */\n removeClass(className) {\n var _a;\n delete this.attrs.classes[className];\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({\n id: this.attrs.id,\n name: 'class',\n value: undefined,\n oldValue: className,\n });\n return this;\n }\n /** Call back from registry after the element is registered. */\n onRegister(registry) {\n this.registry = registry;\n return this;\n }\n /** Return the rendered status. */\n isRendered() {\n return this.rendered;\n }\n /** Set the rendered status. */\n setRendered(rendered = true) {\n this.rendered = rendered;\n return this;\n }\n /** Return the element attributes. */\n getAttributes() {\n return this.attrs;\n }\n /** Return an attribute. */\n // eslint-disable-next-line\n getAttribute(name) {\n return this.attrs[name];\n }\n /** Return associated SVGElement. */\n getSVGElement(suffix = '') {\n const id = prefix(this.attrs.id + suffix);\n const element = document.getElementById(id);\n if (element)\n return element;\n }\n /** Set an attribute. */\n // eslint-disable-next-line\n setAttribute(name, value) {\n var _a;\n const oldID = this.attrs.id;\n const oldValue = this.attrs[name];\n this.attrs[name] = value;\n // Register with old id to support id changes.\n (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({ id: oldID, name, value, oldValue });\n return this;\n }\n /** Get the boundingBox. */\n getBoundingBox() {\n return this.boundingBox;\n }\n /** Return the context. */\n getContext() {\n return this.context;\n }\n /** Set the context. */\n setContext(context) {\n this.context = context;\n return this;\n }\n /** Validate and return the context. */\n checkContext() {\n return defined(this.context, 'NoContext', 'No rendering context attached to instance.');\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // Font Handling\n /**\n * Provide a CSS compatible font string (e.g., 'bold 16px Arial').\n */\n set font(f) {\n this.setFont(f);\n }\n /** Returns the CSS compatible font string. */\n get font() {\n return Font.toCSSString(this.textFont);\n }\n /**\n * Set the element's font family, size, weight, style (e.g., `Arial`, `10pt`, `bold`, `italic`).\n * @param font is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (at least one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n * If no arguments are provided, then the font is set to the default font.\n * Each Element subclass may specify its own default by overriding the static `TEXT_FONT` property.\n */\n setFont(font, size, weight, style) {\n // Allow subclasses to override `TEXT_FONT`.\n const defaultTextFont = this.constructor.TEXT_FONT;\n const fontIsObject = typeof font === 'object';\n const fontIsString = typeof font === 'string';\n const fontIsUndefined = font === undefined;\n const sizeWeightStyleAreUndefined = size === undefined && weight === undefined && style === undefined;\n if (fontIsObject) {\n // `font` is case 1) a FontInfo object\n this.textFont = Object.assign(Object.assign({}, defaultTextFont), font);\n }\n else if (fontIsString && sizeWeightStyleAreUndefined) {\n // `font` is case 2) CSS font shorthand.\n this.textFont = Font.fromCSSString(font);\n }\n else if (fontIsUndefined && sizeWeightStyleAreUndefined) {\n // All arguments are undefined. Do not check for `arguments.length === 0`,\n // which fails on the edge case: `setFont(undefined)`.\n // TODO: See if we can remove this case entirely without introducing a visual diff.\n // The else case below seems like it should be equivalent to this case.\n this.textFont = Object.assign({}, defaultTextFont);\n }\n else {\n // `font` is case 3) a font family string (e.g., 'Times New Roman').\n // The other parameters represent the size, weight, and style.\n // It is okay for `font` to be undefined while one or more of the other arguments is provided.\n // Following CSS conventions, unspecified params are reset to the default.\n this.textFont = Font.validate(font !== null && font !== void 0 ? font : defaultTextFont.family, size !== null && size !== void 0 ? size : defaultTextFont.size, weight !== null && weight !== void 0 ? weight : defaultTextFont.weight, style !== null && style !== void 0 ? style : defaultTextFont.style);\n }\n return this;\n }\n getFont() {\n if (!this.textFont) {\n this.resetFont();\n }\n return Font.toCSSString(this.textFont);\n }\n /**\n * Reset the text font to the style indicated by the static `TEXT_FONT` property.\n * Subclasses can call this to initialize `textFont` for the first time.\n */\n resetFont() {\n this.setFont();\n }\n /** Return a copy of the current FontInfo object. */\n get fontInfo() {\n if (!this.textFont) {\n this.resetFont();\n }\n // We can cast to Required here, because\n // we just called resetFont() above to ensure this.textFont is set.\n return Object.assign({}, this.textFont);\n }\n set fontInfo(fontInfo) {\n this.setFont(fontInfo);\n }\n /** Change the font size, while keeping everything else the same. */\n setFontSize(size) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, size, fontInfo.weight, fontInfo.style);\n return this;\n }\n /**\n * @returns a CSS font-size string (e.g., '18pt', '12px', '1em').\n * See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.\n */\n getFontSize() {\n return this.fontSize;\n }\n /**\n * The size is 1) a string of the form '10pt' or '16px', compatible with the CSS font-size property.\n * or 2) a number, which is interpreted as a point size (i.e. 12 == '12pt').\n */\n set fontSize(size) {\n this.setFontSize(size);\n }\n /**\n * @returns a CSS font-size string (e.g., '18pt', '12px', '1em').\n */\n get fontSize() {\n let size = this.fontInfo.size;\n if (typeof size === 'number') {\n size = `${size}pt`;\n }\n return size;\n }\n /**\n * @returns the font size in `pt`.\n */\n get fontSizeInPoints() {\n return Font.convertSizeToPointValue(this.fontSize);\n }\n /**\n * @returns the font size in `px`.\n */\n get fontSizeInPixels() {\n return Font.convertSizeToPixelValue(this.fontSize);\n }\n /**\n * @returns a CSS font-style string (e.g., 'italic').\n */\n get fontStyle() {\n return this.fontInfo.style;\n }\n set fontStyle(style) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, fontInfo.size, fontInfo.weight, style);\n }\n /**\n * @returns a CSS font-weight string (e.g., 'bold').\n * As in CSS, font-weight is always returned as a string, even if it was set as a number.\n */\n get fontWeight() {\n return this.fontInfo.weight + '';\n }\n set fontWeight(weight) {\n const fontInfo = this.fontInfo;\n this.setFont(fontInfo.family, fontInfo.size, weight, fontInfo.style);\n }\n}\nElement.ID = 1000;\n/**\n * Default font for text. This is not related to music engraving. Instead, see `Flow.setMusicFont(...fontNames)`\n * to customize the font for musical symbols placed on the score.\n */\nElement.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: Font.SIZE,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Fraction } from './fraction';\nimport { Glyph } from './glyph';\nimport { RuntimeError } from './util';\nconst RESOLUTION = 16384;\n/**\n * Map duration numbers to 'ticks', the unit of duration used throughout VexFlow.\n * For example, a quarter note is 4, so it maps to RESOLUTION / 4 = 4096 ticks.\n */\nconst durations = {\n '1/2': RESOLUTION * 2,\n 1: RESOLUTION / 1,\n 2: RESOLUTION / 2,\n 4: RESOLUTION / 4,\n 8: RESOLUTION / 8,\n 16: RESOLUTION / 16,\n 32: RESOLUTION / 32,\n 64: RESOLUTION / 64,\n 128: RESOLUTION / 128,\n 256: RESOLUTION / 256,\n};\nconst durationAliases = {\n w: '1',\n h: '2',\n q: '4',\n // This is the default duration used to render bars (BarNote). Bars no longer\n // consume ticks, so this should be a no-op.\n // TODO(0xfe): This needs to be cleaned up.\n b: '256',\n};\nconst keySignatures = {\n C: { num: 0 },\n Am: { num: 0 },\n F: { acc: 'b', num: 1 },\n Dm: { acc: 'b', num: 1 },\n Bb: { acc: 'b', num: 2 },\n Gm: { acc: 'b', num: 2 },\n Eb: { acc: 'b', num: 3 },\n Cm: { acc: 'b', num: 3 },\n Ab: { acc: 'b', num: 4 },\n Fm: { acc: 'b', num: 4 },\n Db: { acc: 'b', num: 5 },\n Bbm: { acc: 'b', num: 5 },\n Gb: { acc: 'b', num: 6 },\n Ebm: { acc: 'b', num: 6 },\n Cb: { acc: 'b', num: 7 },\n Abm: { acc: 'b', num: 7 },\n G: { acc: '#', num: 1 },\n Em: { acc: '#', num: 1 },\n D: { acc: '#', num: 2 },\n Bm: { acc: '#', num: 2 },\n A: { acc: '#', num: 3 },\n 'F#m': { acc: '#', num: 3 },\n E: { acc: '#', num: 4 },\n 'C#m': { acc: '#', num: 4 },\n B: { acc: '#', num: 5 },\n 'G#m': { acc: '#', num: 5 },\n 'F#': { acc: '#', num: 6 },\n 'D#m': { acc: '#', num: 6 },\n 'C#': { acc: '#', num: 7 },\n 'A#m': { acc: '#', num: 7 },\n};\nconst clefs = {\n treble: { line_shift: 0 },\n bass: { line_shift: 6 },\n tenor: { line_shift: 4 },\n alto: { line_shift: 3 },\n soprano: { line_shift: 1 },\n percussion: { line_shift: 0 },\n 'mezzo-soprano': { line_shift: 2 },\n 'baritone-c': { line_shift: 5 },\n 'baritone-f': { line_shift: 5 },\n subbass: { line_shift: 7 },\n french: { line_shift: -1 },\n};\nconst notesInfo = {\n C: { index: 0, int_val: 0 },\n CN: { index: 0, int_val: 0, accidental: 'n' },\n 'C#': { index: 0, int_val: 1, accidental: '#' },\n 'C##': { index: 0, int_val: 2, accidental: '##' },\n CB: { index: 0, int_val: 11, accidental: 'b' },\n CBB: { index: 0, int_val: 10, accidental: 'bb' },\n D: { index: 1, int_val: 2 },\n DN: { index: 1, int_val: 2, accidental: 'n' },\n 'D#': { index: 1, int_val: 3, accidental: '#' },\n 'D##': { index: 1, int_val: 4, accidental: '##' },\n DB: { index: 1, int_val: 1, accidental: 'b' },\n DBB: { index: 1, int_val: 0, accidental: 'bb' },\n E: { index: 2, int_val: 4 },\n EN: { index: 2, int_val: 4, accidental: 'n' },\n 'E#': { index: 2, int_val: 5, accidental: '#' },\n 'E##': { index: 2, int_val: 6, accidental: '##' },\n EB: { index: 2, int_val: 3, accidental: 'b' },\n EBB: { index: 2, int_val: 2, accidental: 'bb' },\n F: { index: 3, int_val: 5 },\n FN: { index: 3, int_val: 5, accidental: 'n' },\n 'F#': { index: 3, int_val: 6, accidental: '#' },\n 'F##': { index: 3, int_val: 7, accidental: '##' },\n FB: { index: 3, int_val: 4, accidental: 'b' },\n FBB: { index: 3, int_val: 3, accidental: 'bb' },\n G: { index: 4, int_val: 7 },\n GN: { index: 4, int_val: 7, accidental: 'n' },\n 'G#': { index: 4, int_val: 8, accidental: '#' },\n 'G##': { index: 4, int_val: 9, accidental: '##' },\n GB: { index: 4, int_val: 6, accidental: 'b' },\n GBB: { index: 4, int_val: 5, accidental: 'bb' },\n A: { index: 5, int_val: 9 },\n AN: { index: 5, int_val: 9, accidental: 'n' },\n 'A#': { index: 5, int_val: 10, accidental: '#' },\n 'A##': { index: 5, int_val: 11, accidental: '##' },\n AB: { index: 5, int_val: 8, accidental: 'b' },\n ABB: { index: 5, int_val: 7, accidental: 'bb' },\n B: { index: 6, int_val: 11 },\n BN: { index: 6, int_val: 11, accidental: 'n' },\n 'B#': { index: 6, int_val: 12, accidental: '#' },\n 'B##': { index: 6, int_val: 13, accidental: '##' },\n BB: { index: 6, int_val: 10, accidental: 'b' },\n BBB: { index: 6, int_val: 9, accidental: 'bb' },\n R: { index: 6, rest: true },\n X: {\n index: 6,\n accidental: '',\n octave: 4,\n code: 'noteheadXBlack',\n shift_right: 5.5,\n },\n};\nconst validNoteTypes = {\n n: { name: 'note' },\n r: { name: 'rest' },\n h: { name: 'harmonic' },\n m: { name: 'muted' },\n s: { name: 'slash' },\n g: { name: 'ghost' },\n d: { name: 'diamond' },\n x: { name: 'x' },\n ci: { name: 'circled' },\n cx: { name: 'circle x' },\n sf: { name: 'slashed' },\n sb: { name: 'slashed backward' },\n sq: { name: 'square' },\n tu: { name: 'triangle up' },\n td: { name: 'triangle down' },\n};\nconst accidentals = {\n '#': { code: 'accidentalSharp', parenRightPaddingAdjustment: -1 },\n '##': { code: 'accidentalDoubleSharp', parenRightPaddingAdjustment: -1 },\n b: { code: 'accidentalFlat', parenRightPaddingAdjustment: -2 },\n bb: { code: 'accidentalDoubleFlat', parenRightPaddingAdjustment: -2 },\n n: { code: 'accidentalNatural', parenRightPaddingAdjustment: -1 },\n '{': { code: 'accidentalParensLeft', parenRightPaddingAdjustment: -1 },\n '}': { code: 'accidentalParensRight', parenRightPaddingAdjustment: -1 },\n db: { code: 'accidentalThreeQuarterTonesFlatZimmermann', parenRightPaddingAdjustment: -1 },\n d: { code: 'accidentalQuarterToneFlatStein', parenRightPaddingAdjustment: 0 },\n '++': { code: 'accidentalThreeQuarterTonesSharpStein', parenRightPaddingAdjustment: -1 },\n '+': { code: 'accidentalQuarterToneSharpStein', parenRightPaddingAdjustment: -1 },\n '+-': { code: 'accidentalKucukMucennebSharp', parenRightPaddingAdjustment: -1 },\n bs: { code: 'accidentalBakiyeFlat', parenRightPaddingAdjustment: -1 },\n bss: { code: 'accidentalBuyukMucennebFlat', parenRightPaddingAdjustment: -1 },\n o: { code: 'accidentalSori', parenRightPaddingAdjustment: -1 },\n k: { code: 'accidentalKoron', parenRightPaddingAdjustment: -1 },\n bbs: { code: 'vexAccidentalMicrotonal1', parenRightPaddingAdjustment: -1 },\n '++-': { code: 'vexAccidentalMicrotonal2', parenRightPaddingAdjustment: -1 },\n ashs: { code: 'vexAccidentalMicrotonal3', parenRightPaddingAdjustment: -1 },\n afhf: { code: 'vexAccidentalMicrotonal4', parenRightPaddingAdjustment: -1 },\n accSagittal5v7KleismaUp: { code: 'accSagittal5v7KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v7KleismaDown: { code: 'accSagittal5v7KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5CommaUp: { code: 'accSagittal5CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5CommaDown: { code: 'accSagittal5CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7CommaUp: { code: 'accSagittal7CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7CommaDown: { code: 'accSagittal7CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal25SmallDiesisUp: { code: 'accSagittal25SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal25SmallDiesisDown: { code: 'accSagittal25SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal35MediumDiesisUp: { code: 'accSagittal35MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal35MediumDiesisDown: { code: 'accSagittal35MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11MediumDiesisUp: { code: 'accSagittal11MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11MediumDiesisDown: { code: 'accSagittal11MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11LargeDiesisUp: { code: 'accSagittal11LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11LargeDiesisDown: { code: 'accSagittal11LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal35LargeDiesisUp: { code: 'accSagittal35LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal35LargeDiesisDown: { code: 'accSagittal35LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp25SDown: { code: 'accSagittalSharp25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat25SUp: { code: 'accSagittalFlat25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7CDown: { code: 'accSagittalSharp7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7CUp: { code: 'accSagittalFlat7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5CDown: { code: 'accSagittalSharp5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5CUp: { code: 'accSagittalFlat5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v7kDown: { code: 'accSagittalSharp5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v7kUp: { code: 'accSagittalFlat5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp: { code: 'accSagittalSharp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat: { code: 'accSagittalFlat', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v7kUp: { code: 'accSagittalSharp5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v7kDown: { code: 'accSagittalFlat5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5CUp: { code: 'accSagittalSharp5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5CDown: { code: 'accSagittalFlat5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7CUp: { code: 'accSagittalSharp7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7CDown: { code: 'accSagittalFlat7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp25SUp: { code: 'accSagittalSharp25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat25SDown: { code: 'accSagittalFlat25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp35MUp: { code: 'accSagittalSharp35MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat35MDown: { code: 'accSagittalFlat35MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11MUp: { code: 'accSagittalSharp11MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11MDown: { code: 'accSagittalFlat11MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11LUp: { code: 'accSagittalSharp11LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11LDown: { code: 'accSagittalFlat11LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp35LUp: { code: 'accSagittalSharp35LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat35LDown: { code: 'accSagittalFlat35LDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp25SDown: { code: 'accSagittalDoubleSharp25SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat25SUp: { code: 'accSagittalDoubleFlat25SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7CDown: { code: 'accSagittalDoubleSharp7CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7CUp: { code: 'accSagittalDoubleFlat7CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5CDown: { code: 'accSagittalDoubleSharp5CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5CUp: { code: 'accSagittalDoubleFlat5CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v7kDown: { code: 'accSagittalDoubleSharp5v7kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v7kUp: { code: 'accSagittalDoubleFlat5v7kUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp: { code: 'accSagittalDoubleSharp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat: { code: 'accSagittalDoubleFlat', parenRightPaddingAdjustment: -1 },\n accSagittal7v11KleismaUp: { code: 'accSagittal7v11KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v11KleismaDown: { code: 'accSagittal7v11KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal17CommaUp: { code: 'accSagittal17CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal17CommaDown: { code: 'accSagittal17CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal55CommaUp: { code: 'accSagittal55CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal55CommaDown: { code: 'accSagittal55CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7v11CommaUp: { code: 'accSagittal7v11CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v11CommaDown: { code: 'accSagittal7v11CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v11SmallDiesisUp: { code: 'accSagittal5v11SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v11SmallDiesisDown: { code: 'accSagittal5v11SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v11SDown: { code: 'accSagittalSharp5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v11SUp: { code: 'accSagittalFlat5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11CDown: { code: 'accSagittalSharp7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11CUp: { code: 'accSagittalFlat7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp55CDown: { code: 'accSagittalSharp55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat55CUp: { code: 'accSagittalFlat55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17CDown: { code: 'accSagittalSharp17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17CUp: { code: 'accSagittalFlat17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11kDown: { code: 'accSagittalSharp7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11kUp: { code: 'accSagittalFlat7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11kUp: { code: 'accSagittalSharp7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11kDown: { code: 'accSagittalFlat7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17CUp: { code: 'accSagittalSharp17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17CDown: { code: 'accSagittalFlat17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp55CUp: { code: 'accSagittalSharp55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat55CDown: { code: 'accSagittalFlat55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v11CUp: { code: 'accSagittalSharp7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v11CDown: { code: 'accSagittalFlat7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v11SUp: { code: 'accSagittalSharp5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v11SDown: { code: 'accSagittalFlat5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v11SDown: { code: 'accSagittalDoubleSharp5v11SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v11SUp: { code: 'accSagittalDoubleFlat5v11SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v11CDown: { code: 'accSagittalDoubleSharp7v11CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v11CUp: { code: 'accSagittalDoubleFlat7v11CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp55CDown: { code: 'accSagittalDoubleSharp55CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat55CUp: { code: 'accSagittalDoubleFlat55CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp17CDown: { code: 'accSagittalDoubleSharp17CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat17CUp: { code: 'accSagittalDoubleFlat17CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v11kDown: { code: 'accSagittalDoubleSharp7v11kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v11kUp: { code: 'accSagittalDoubleFlat7v11kUp', parenRightPaddingAdjustment: -1 },\n accSagittal23CommaUp: { code: 'accSagittal23CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal23CommaDown: { code: 'accSagittal23CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v19CommaUp: { code: 'accSagittal5v19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v19CommaDown: { code: 'accSagittal5v19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v23SmallDiesisUp: { code: 'accSagittal5v23SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v23SmallDiesisDown: { code: 'accSagittal5v23SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v23SDown: { code: 'accSagittalSharp5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v23SUp: { code: 'accSagittalFlat5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v19CDown: { code: 'accSagittalSharp5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v19CUp: { code: 'accSagittalFlat5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23CDown: { code: 'accSagittalSharp23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23CUp: { code: 'accSagittalFlat23CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23CUp: { code: 'accSagittalSharp23CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23CDown: { code: 'accSagittalFlat23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v19CUp: { code: 'accSagittalSharp5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v19CDown: { code: 'accSagittalFlat5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v23SUp: { code: 'accSagittalSharp5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v23SDown: { code: 'accSagittalFlat5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v23SDown: { code: 'accSagittalDoubleSharp5v23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v23SUp: { code: 'accSagittalDoubleFlat5v23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp5v19CDown: { code: 'accSagittalDoubleSharp5v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat5v19CUp: { code: 'accSagittalDoubleFlat5v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp23CDown: { code: 'accSagittalDoubleSharp23CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat23CUp: { code: 'accSagittalDoubleFlat23CUp', parenRightPaddingAdjustment: -1 },\n accSagittal19SchismaUp: { code: 'accSagittal19SchismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal19SchismaDown: { code: 'accSagittal19SchismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal17KleismaUp: { code: 'accSagittal17KleismaUp', parenRightPaddingAdjustment: -1 },\n accSagittal17KleismaDown: { code: 'accSagittal17KleismaDown', parenRightPaddingAdjustment: -1 },\n accSagittal143CommaUp: { code: 'accSagittal143CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal143CommaDown: { code: 'accSagittal143CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v49CommaUp: { code: 'accSagittal11v49CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v49CommaDown: { code: 'accSagittal11v49CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal19CommaUp: { code: 'accSagittal19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal19CommaDown: { code: 'accSagittal19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal7v19CommaUp: { code: 'accSagittal7v19CommaUp', parenRightPaddingAdjustment: -1 },\n accSagittal7v19CommaDown: { code: 'accSagittal7v19CommaDown', parenRightPaddingAdjustment: -1 },\n accSagittal49SmallDiesisUp: { code: 'accSagittal49SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49SmallDiesisDown: { code: 'accSagittal49SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal23SmallDiesisUp: { code: 'accSagittal23SmallDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal23SmallDiesisDown: { code: 'accSagittal23SmallDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v13MediumDiesisUp: { code: 'accSagittal5v13MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v13MediumDiesisDown: { code: 'accSagittal5v13MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v19MediumDiesisUp: { code: 'accSagittal11v19MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v19MediumDiesisDown: { code: 'accSagittal11v19MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal49MediumDiesisUp: { code: 'accSagittal49MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49MediumDiesisDown: { code: 'accSagittal49MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v49MediumDiesisUp: { code: 'accSagittal5v49MediumDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v49MediumDiesisDown: { code: 'accSagittal5v49MediumDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal49LargeDiesisUp: { code: 'accSagittal49LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal49LargeDiesisDown: { code: 'accSagittal49LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal11v19LargeDiesisUp: { code: 'accSagittal11v19LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal11v19LargeDiesisDown: { code: 'accSagittal11v19LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittal5v13LargeDiesisUp: { code: 'accSagittal5v13LargeDiesisUp', parenRightPaddingAdjustment: -1 },\n accSagittal5v13LargeDiesisDown: { code: 'accSagittal5v13LargeDiesisDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23SDown: { code: 'accSagittalSharp23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23SUp: { code: 'accSagittalFlat23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49SDown: { code: 'accSagittalSharp49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49SUp: { code: 'accSagittalFlat49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v19CDown: { code: 'accSagittalSharp7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v19CUp: { code: 'accSagittalFlat7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19CDown: { code: 'accSagittalSharp19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19CUp: { code: 'accSagittalFlat19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v49CDown: { code: 'accSagittalSharp11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v49CUp: { code: 'accSagittalFlat11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp143CDown: { code: 'accSagittalSharp143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat143CUp: { code: 'accSagittalFlat143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17kDown: { code: 'accSagittalSharp17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17kUp: { code: 'accSagittalFlat17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19sDown: { code: 'accSagittalSharp19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19sUp: { code: 'accSagittalFlat19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19sUp: { code: 'accSagittalSharp19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19sDown: { code: 'accSagittalFlat19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp17kUp: { code: 'accSagittalSharp17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat17kDown: { code: 'accSagittalFlat17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp143CUp: { code: 'accSagittalSharp143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat143CDown: { code: 'accSagittalFlat143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v49CUp: { code: 'accSagittalSharp11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v49CDown: { code: 'accSagittalFlat11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp19CUp: { code: 'accSagittalSharp19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat19CDown: { code: 'accSagittalFlat19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp7v19CUp: { code: 'accSagittalSharp7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat7v19CDown: { code: 'accSagittalFlat7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49SUp: { code: 'accSagittalSharp49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49SDown: { code: 'accSagittalFlat49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp23SUp: { code: 'accSagittalSharp23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat23SDown: { code: 'accSagittalFlat23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v13MUp: { code: 'accSagittalSharp5v13MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v13MDown: { code: 'accSagittalFlat5v13MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v19MUp: { code: 'accSagittalSharp11v19MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v19MDown: { code: 'accSagittalFlat11v19MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49MUp: { code: 'accSagittalSharp49MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49MDown: { code: 'accSagittalFlat49MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v49MUp: { code: 'accSagittalSharp5v49MUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v49MDown: { code: 'accSagittalFlat5v49MDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp49LUp: { code: 'accSagittalSharp49LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat49LDown: { code: 'accSagittalFlat49LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp11v19LUp: { code: 'accSagittalSharp11v19LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat11v19LDown: { code: 'accSagittalFlat11v19LDown', parenRightPaddingAdjustment: -1 },\n accSagittalSharp5v13LUp: { code: 'accSagittalSharp5v13LUp', parenRightPaddingAdjustment: -1 },\n accSagittalFlat5v13LDown: { code: 'accSagittalFlat5v13LDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp23SDown: { code: 'accSagittalDoubleSharp23SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat23SUp: { code: 'accSagittalDoubleFlat23SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp49SDown: { code: 'accSagittalDoubleSharp49SDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat49SUp: { code: 'accSagittalDoubleFlat49SUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp7v19CDown: { code: 'accSagittalDoubleSharp7v19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat7v19CUp: { code: 'accSagittalDoubleFlat7v19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp19CDown: { code: 'accSagittalDoubleSharp19CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat19CUp: { code: 'accSagittalDoubleFlat19CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp11v49CDown: { code: 'accSagittalDoubleSharp11v49CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat11v49CUp: { code: 'accSagittalDoubleFlat11v49CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp143CDown: { code: 'accSagittalDoubleSharp143CDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat143CUp: { code: 'accSagittalDoubleFlat143CUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp17kDown: { code: 'accSagittalDoubleSharp17kDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat17kUp: { code: 'accSagittalDoubleFlat17kUp', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleSharp19sDown: { code: 'accSagittalDoubleSharp19sDown', parenRightPaddingAdjustment: -1 },\n accSagittalDoubleFlat19sUp: { code: 'accSagittalDoubleFlat19sUp', parenRightPaddingAdjustment: -1 },\n accSagittalShaftUp: { code: 'accSagittalShaftUp', parenRightPaddingAdjustment: -1 },\n accSagittalShaftDown: { code: 'accSagittalShaftDown', parenRightPaddingAdjustment: -1 },\n accSagittalAcute: { code: 'accSagittalAcute', parenRightPaddingAdjustment: -1 },\n accSagittalGrave: { code: 'accSagittalGrave', parenRightPaddingAdjustment: -1 },\n accSagittal1MinaUp: { code: 'accSagittal1MinaUp', parenRightPaddingAdjustment: -1 },\n accSagittal1MinaDown: { code: 'accSagittal1MinaDown', parenRightPaddingAdjustment: -1 },\n accSagittal2MinasUp: { code: 'accSagittal2MinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal2MinasDown: { code: 'accSagittal2MinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal1TinaUp: { code: 'accSagittal1TinaUp', parenRightPaddingAdjustment: -1 },\n accSagittal1TinaDown: { code: 'accSagittal1TinaDown', parenRightPaddingAdjustment: -1 },\n accSagittal2TinasUp: { code: 'accSagittal2TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal2TinasDown: { code: 'accSagittal2TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal3TinasUp: { code: 'accSagittal3TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal3TinasDown: { code: 'accSagittal3TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal4TinasUp: { code: 'accSagittal4TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal4TinasDown: { code: 'accSagittal4TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal5TinasUp: { code: 'accSagittal5TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal5TinasDown: { code: 'accSagittal5TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal6TinasUp: { code: 'accSagittal6TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal6TinasDown: { code: 'accSagittal6TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal7TinasUp: { code: 'accSagittal7TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal7TinasDown: { code: 'accSagittal7TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal8TinasUp: { code: 'accSagittal8TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal8TinasDown: { code: 'accSagittal8TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittal9TinasUp: { code: 'accSagittal9TinasUp', parenRightPaddingAdjustment: -1 },\n accSagittal9TinasDown: { code: 'accSagittal9TinasDown', parenRightPaddingAdjustment: -1 },\n accSagittalFractionalTinaUp: { code: 'accSagittalFractionalTinaUp', parenRightPaddingAdjustment: -1 },\n accSagittalFractionalTinaDown: { code: 'accSagittalFractionalTinaDown', parenRightPaddingAdjustment: -1 },\n accidentalNarrowReversedFlat: { code: 'accidentalNarrowReversedFlat', parenRightPaddingAdjustment: -1 },\n accidentalNarrowReversedFlatAndFlat: {\n code: 'accidentalNarrowReversedFlatAndFlat',\n parenRightPaddingAdjustment: -1,\n },\n accidentalWilsonPlus: { code: 'accidentalWilsonPlus', parenRightPaddingAdjustment: -1 },\n accidentalWilsonMinus: { code: 'accidentalWilsonMinus', parenRightPaddingAdjustment: -1 },\n};\n// Helps determine the layout of accidentals.\nconst accidentalColumns = {\n 1: {\n a: [1],\n b: [1],\n },\n 2: {\n a: [1, 2],\n },\n 3: {\n a: [1, 3, 2],\n b: [1, 2, 1],\n second_on_bottom: [1, 2, 3],\n },\n 4: {\n a: [1, 3, 4, 2],\n b: [1, 2, 3, 1],\n spaced_out_tetrachord: [1, 2, 1, 2],\n },\n 5: {\n a: [1, 3, 5, 4, 2],\n b: [1, 2, 4, 3, 1],\n spaced_out_pentachord: [1, 2, 3, 2, 1],\n very_spaced_out_pentachord: [1, 2, 1, 2, 1],\n },\n 6: {\n a: [1, 3, 5, 6, 4, 2],\n b: [1, 2, 4, 5, 3, 1],\n spaced_out_hexachord: [1, 3, 2, 1, 3, 2],\n very_spaced_out_hexachord: [1, 2, 1, 2, 1, 2],\n },\n};\nconst articulations = {\n 'a.': { code: 'augmentationDot', between_lines: true },\n av: {\n aboveCode: 'articStaccatissimoAbove',\n belowCode: 'articStaccatissimoBelow',\n between_lines: true,\n },\n 'a>': {\n aboveCode: 'articAccentAbove',\n belowCode: 'articAccentBelow',\n between_lines: true,\n },\n 'a-': {\n aboveCode: 'articTenutoAbove',\n belowCode: 'articTenutoBelow',\n between_lines: true,\n },\n 'a^': {\n aboveCode: 'articMarcatoAbove',\n belowCode: 'articMarcatoBelow',\n between_lines: false,\n },\n 'a+': { code: 'pluckedLeftHandPizzicato', between_lines: false },\n ao: {\n aboveCode: 'pluckedSnapPizzicatoAbove',\n belowCode: 'pluckedSnapPizzicatoBelow',\n between_lines: false,\n },\n ah: { code: 'stringsHarmonic', between_lines: false },\n 'a@': { aboveCode: 'fermataAbove', belowCode: 'fermataBelow', between_lines: false },\n 'a@a': { code: 'fermataAbove', between_lines: false },\n 'a@u': { code: 'fermataBelow', between_lines: false },\n 'a@s': { aboveCode: 'fermataShortAbove', belowCode: 'fermataShortBelow', between_lines: false },\n 'a@as': { code: 'fermataShortAbove', between_lines: false },\n 'a@us': { code: 'fermataShortBelow', between_lines: false },\n 'a@l': { aboveCode: 'fermataLongAbove', belowCode: 'fermataLongBelow', between_lines: false },\n 'a@al': { code: 'fermataLongAbove', between_lines: false },\n 'a@ul': { code: 'fermataLongBelow', between_lines: false },\n 'a@vl': { aboveCode: 'fermataVeryLongAbove', belowCode: 'fermataVeryLongBelow', between_lines: false },\n 'a@avl': { code: 'fermataVeryLongAbove', between_lines: false },\n 'a@uvl': { code: 'fermataVeryLongBelow', between_lines: false },\n 'a|': { code: 'stringsUpBow', between_lines: false },\n am: { code: 'stringsDownBow', between_lines: false },\n 'a,': { code: 'pictChokeCymbal', between_lines: false }, // Choked\n};\nconst ornaments = {\n mordent: { code: 'ornamentShortTrill' },\n mordent_inverted: { code: 'ornamentMordent' },\n turn: { code: 'ornamentTurn' },\n turn_inverted: { code: 'ornamentTurnSlash' },\n tr: { code: 'ornamentTrill' },\n upprall: { code: 'ornamentPrecompSlideTrillDAnglebert' },\n downprall: { code: 'ornamentPrecompDoubleCadenceUpperPrefix' },\n prallup: { code: 'ornamentPrecompTrillSuffixDandrieu' },\n pralldown: { code: 'ornamentPrecompTrillLowerSuffix' },\n upmordent: { code: 'ornamentPrecompSlideTrillBach' },\n downmordent: { code: 'ornamentPrecompDoubleCadenceUpperPrefixTurn' },\n lineprall: { code: 'ornamentPrecompAppoggTrill' },\n prallprall: { code: 'ornamentTremblement' },\n scoop: { code: 'brassScoop' },\n doit: { code: 'brassDoitMedium' },\n fall: { code: 'brassFallLipShort' },\n doitLong: { code: 'brassLiftMedium' },\n fallLong: { code: 'brassFallRoughMedium' },\n bend: { code: 'brassBend' },\n plungerClosed: { code: 'brassMuteClosed' },\n plungerOpen: { code: 'brassMuteOpen' },\n flip: { code: 'brassFlip' },\n jazzTurn: { code: 'brassJazzTurn' },\n smear: { code: 'brassSmear' },\n};\nexport class Tables {\n /**\n * @returns the `Font` object at the head of the music font stack.\n */\n static currentMusicFont() {\n if (Tables.MUSIC_FONT_STACK.length === 0) {\n throw new RuntimeError('NoFonts', 'The font stack is empty. See: await Flow.fetchMusicFont(...); Flow.setMusicFont(...).');\n }\n else {\n return Tables.MUSIC_FONT_STACK[0];\n }\n }\n static clefProperties(clef) {\n if (!clef || !(clef in clefs))\n throw new RuntimeError('BadArgument', 'Invalid clef: ' + clef);\n return clefs[clef];\n }\n /**\n * @param keyOctaveGlyph a string in the format \"key/octave\" (e.g., \"c/5\") or \"key/octave/custom-note-head-code\" (e.g., \"g/5/t3\").\n * @param clef\n * @param params a struct with one option, `octave_shift` for clef ottavation (0 = default; 1 = 8va; -1 = 8vb, etc.).\n * @returns properties for the specified note.\n */\n // eslint-disable-next-line\n static keyProperties(keyOctaveGlyph, clef = 'treble', params) {\n let options = { octave_shift: 0, duration: '4' };\n if (typeof params === 'object') {\n options = Object.assign(Object.assign({}, options), params);\n }\n const duration = Tables.sanitizeDuration(options.duration);\n const pieces = keyOctaveGlyph.split('/');\n if (pieces.length < 2) {\n throw new RuntimeError('BadArguments', `First argument must be note/octave or note/octave/glyph-code: ${keyOctaveGlyph}`);\n }\n const key = pieces[0].toUpperCase();\n const value = notesInfo[key];\n if (!value)\n throw new RuntimeError('BadArguments', 'Invalid key name: ' + key);\n if (value.octave)\n pieces[1] = value.octave.toString();\n let octave = parseInt(pieces[1], 10);\n // Octave_shift is the shift to compensate for clef 8va/8vb.\n octave += -1 * options.octave_shift;\n const baseIndex = octave * 7 - 4 * 7;\n let line = (baseIndex + value.index) / 2;\n line += Tables.clefProperties(clef).line_shift;\n let stroke = 0;\n if (line <= 0 && (line * 2) % 2 === 0)\n stroke = 1; // stroke up\n if (line >= 6 && (line * 2) % 2 === 0)\n stroke = -1; // stroke down\n // Integer value for note arithmetic.\n const int_value = typeof value.int_val !== 'undefined' ? octave * 12 + value.int_val : undefined;\n // If the user specified a glyph, overwrite the glyph code.\n const code = value.code;\n const shift_right = value.shift_right;\n let customNoteHeadProps = {};\n if (pieces.length > 2 && pieces[2]) {\n const glyphName = pieces[2].toUpperCase();\n customNoteHeadProps = { code: this.codeNoteHead(glyphName, duration) } || {};\n }\n return Object.assign({ key,\n octave,\n line,\n int_value, accidental: value.accidental, code,\n stroke,\n shift_right, displaced: false }, customNoteHeadProps);\n }\n static integerToNote(integer) {\n if (typeof integer === 'undefined' || integer < 0 || integer > 11) {\n throw new RuntimeError('BadArguments', `integerToNote() requires an integer in the range [0, 11]: ${integer}`);\n }\n const table = {\n 0: 'C',\n 1: 'C#',\n 2: 'D',\n 3: 'D#',\n 4: 'E',\n 5: 'F',\n 6: 'F#',\n 7: 'G',\n 8: 'G#',\n 9: 'A',\n 10: 'A#',\n 11: 'B',\n };\n const noteValue = table[integer];\n if (!noteValue) {\n throw new RuntimeError('BadArguments', `Unknown note value for integer: ${integer}`);\n }\n return noteValue;\n }\n static tabToGlyph(fret, scale = 1.0) {\n let glyph = undefined;\n let width = 0;\n let shift_y = 0;\n if (fret.toUpperCase() === 'X') {\n const glyphMetrics = new Glyph('accidentalDoubleSharp', Tables.TABLATURE_FONT_SCALE).getMetrics();\n glyph = 'accidentalDoubleSharp';\n if (glyphMetrics.width == undefined || glyphMetrics.height == undefined)\n throw new RuntimeError('InvalidMetrics', 'Width and height required');\n width = glyphMetrics.width;\n shift_y = -glyphMetrics.height / 2;\n }\n else {\n width = Tables.textWidth(fret);\n }\n return {\n text: fret,\n code: glyph,\n getWidth: () => width * scale,\n shift_y,\n };\n }\n // Used by annotation.ts and bend.ts. Clearly this implementation only works for the default font size.\n // TODO: The actual width depends on the font family, size, weight, style.\n static textWidth(text) {\n return 7 * text.toString().length;\n }\n static articulationCodes(artic) {\n return articulations[artic];\n }\n static accidentalCodes(acc) {\n return accidentals[acc];\n }\n static ornamentCodes(acc) {\n return ornaments[acc];\n }\n static keySignature(spec) {\n const keySpec = keySignatures[spec];\n if (!keySpec) {\n throw new RuntimeError('BadKeySignature', `Bad key signature spec: '${spec}'`);\n }\n if (!keySpec.acc) {\n return [];\n }\n const accidentalList = {\n b: [2, 0.5, 2.5, 1, 3, 1.5, 3.5],\n '#': [0, 1.5, -0.5, 1, 2.5, 0.5, 2],\n };\n const notes = accidentalList[keySpec.acc];\n const acc_list = [];\n for (let i = 0; i < keySpec.num; ++i) {\n const line = notes[i];\n acc_list.push({ type: keySpec.acc, line });\n }\n return acc_list;\n }\n static getKeySignatures() {\n return keySignatures;\n }\n static hasKeySignature(spec) {\n return spec in keySignatures;\n }\n /**\n * Convert duration aliases to the number based duration.\n * If the input isn't an alias, simply return the input.\n * @param duration\n * @returns Example: 'q' -> '4', '8' -> '8'\n */\n static sanitizeDuration(duration) {\n const durationNumber = durationAliases[duration];\n if (durationNumber !== undefined) {\n duration = durationNumber;\n }\n if (durations[duration] === undefined) {\n throw new RuntimeError('BadArguments', `The provided duration is not valid: ${duration}`);\n }\n return duration;\n }\n /** Convert the `duration` to a fraction. */\n static durationToFraction(duration) {\n return new Fraction().parse(Tables.sanitizeDuration(duration));\n }\n /** Convert the `duration` to a number. */\n static durationToNumber(duration) {\n return Tables.durationToFraction(duration).value();\n }\n /* Convert the `duration` to total ticks. */\n static durationToTicks(duration) {\n duration = Tables.sanitizeDuration(duration);\n const ticks = durations[duration];\n if (ticks === undefined) {\n throw new RuntimeError('InvalidDuration');\n }\n return ticks;\n }\n static codeNoteHead(type, duration) {\n let code = '';\n switch (type) {\n /* Diamond */\n case 'D0':\n code = 'noteheadDiamondWhole';\n break;\n case 'D1':\n code = 'noteheadDiamondHalf';\n break;\n case 'D2':\n code = 'noteheadDiamondBlack';\n break;\n case 'D3':\n code = 'noteheadDiamondBlack';\n break;\n /* Triangle */\n case 'T0':\n code = 'noteheadTriangleUpWhole';\n break;\n case 'T1':\n code = 'noteheadTriangleUpHalf';\n break;\n case 'T2':\n code = 'noteheadTriangleUpBlack';\n break;\n case 'T3':\n code = 'noteheadTriangleUpBlack';\n break;\n /* Cross */\n case 'X0':\n code = 'noteheadXWhole';\n break;\n case 'X1':\n code = 'noteheadXHalf';\n break;\n case 'X2':\n code = 'noteheadXBlack';\n break;\n case 'X3':\n code = 'noteheadCircleX';\n break;\n /* Square */\n case 'S1':\n code = 'noteheadSquareWhite';\n break;\n case 'S2':\n code = 'noteheadSquareBlack';\n break;\n /* Rectangle */\n case 'R1':\n code = 'vexNoteHeadRectWhite'; // no smufl code\n break;\n case 'R2':\n code = 'vexNoteHeadRectBlack'; // no smufl code\n break;\n case 'DO':\n code = 'noteheadTriangleUpBlack';\n break;\n case 'RE':\n code = 'noteheadMoonBlack';\n break;\n case 'MI':\n code = 'noteheadDiamondBlack';\n break;\n case 'FA':\n code = 'noteheadTriangleLeftBlack';\n break;\n case 'FAUP':\n code = 'noteheadTriangleRightBlack';\n break;\n case 'SO':\n code = 'noteheadBlack';\n break;\n case 'LA':\n code = 'noteheadSquareBlack';\n break;\n case 'TI':\n code = 'noteheadTriangleRoundDownBlack';\n break;\n case 'D':\n case 'H': // left for backwards compatibility\n switch (duration) {\n case '1/2':\n code = 'noteheadDiamondDoubleWhole';\n break;\n case '1':\n code = 'noteheadDiamondWhole';\n break;\n case '2':\n code = 'noteheadDiamondHalf';\n break;\n default:\n code = 'noteheadDiamondBlack';\n break;\n }\n break;\n case 'N':\n case 'G':\n switch (duration) {\n case '1/2':\n code = 'noteheadDoubleWhole';\n break;\n case '1':\n code = 'noteheadWhole';\n break;\n case '2':\n code = 'noteheadHalf';\n break;\n default:\n code = 'noteheadBlack';\n break;\n }\n break;\n case 'M': // left for backwards compatibility\n case 'X':\n switch (duration) {\n case '1/2':\n code = 'noteheadXDoubleWhole';\n break;\n case '1':\n code = 'noteheadXWhole';\n break;\n case '2':\n code = 'noteheadXHalf';\n break;\n default:\n code = 'noteheadXBlack';\n break;\n }\n break;\n case 'CX':\n switch (duration) {\n case '1/2':\n code = 'noteheadCircleXDoubleWhole';\n break;\n case '1':\n code = 'noteheadCircleXWhole';\n break;\n case '2':\n code = 'noteheadCircleXHalf';\n break;\n default:\n code = 'noteheadCircleX';\n break;\n }\n break;\n case 'CI':\n switch (duration) {\n case '1/2':\n code = 'noteheadCircledDoubleWhole';\n break;\n case '1':\n code = 'noteheadCircledWhole';\n break;\n case '2':\n code = 'noteheadCircledHalf';\n break;\n default:\n code = 'noteheadCircledBlack';\n break;\n }\n break;\n case 'SQ':\n switch (duration) {\n case '1/2':\n code = 'noteheadDoubleWholeSquare';\n break;\n case '1':\n code = 'noteheadSquareWhite';\n break;\n case '2':\n code = 'noteheadSquareWhite';\n break;\n default:\n code = 'noteheadSquareBlack';\n break;\n }\n break;\n case 'TU':\n switch (duration) {\n case '1/2':\n code = 'noteheadTriangleUpDoubleWhole';\n break;\n case '1':\n code = 'noteheadTriangleUpWhole';\n break;\n case '2':\n code = 'noteheadTriangleUpHalf';\n break;\n default:\n code = 'noteheadTriangleUpBlack';\n break;\n }\n break;\n case 'TD':\n switch (duration) {\n case '1/2':\n code = 'noteheadTriangleDownDoubleWhole';\n break;\n case '1':\n code = 'noteheadTriangleDownWhole';\n break;\n case '2':\n code = 'noteheadTriangleDownHalf';\n break;\n default:\n code = 'noteheadTriangleDownBlack';\n break;\n }\n break;\n case 'SF':\n switch (duration) {\n case '1/2':\n code = 'noteheadSlashedDoubleWhole1';\n break;\n case '1':\n code = 'noteheadSlashedWhole1';\n break;\n case '2':\n code = 'noteheadSlashedHalf1';\n break;\n default:\n code = 'noteheadSlashedBlack1';\n }\n break;\n case 'SB':\n switch (duration) {\n case '1/2':\n code = 'noteheadSlashedDoubleWhole2';\n break;\n case '1':\n code = 'noteheadSlashedWhole2';\n break;\n case '2':\n code = 'noteheadSlashedHalf2';\n break;\n default:\n code = 'noteheadSlashedBlack2';\n }\n break;\n }\n return code;\n }\n // Return a glyph given duration and type. The type can be a custom glyph code from customNoteHeads.\n // The default type is a regular note ('n').\n // eslint-disable-next-line\n static getGlyphProps(duration, type = 'n') {\n duration = Tables.sanitizeDuration(duration);\n // Lookup duration for default glyph head code\n const code = durationCodes[duration];\n if (code === undefined) {\n return undefined;\n }\n // Get glyph properties for 'type' from duration string (note, rest, harmonic, muted, slash)\n let glyphTypeProperties = code.type[type];\n // Try and get it from the custom list of note heads\n const codeNoteHead = Tables.codeNoteHead(type.toUpperCase(), duration);\n if (codeNoteHead != '')\n glyphTypeProperties = Object.assign(Object.assign({}, glyphTypeProperties), { code_head: codeNoteHead, code: codeNoteHead });\n const code_head = glyphTypeProperties.code_head;\n // The default implementation of getWidth() calls Glyph.getWidth(code_head, scale).\n // This can be overridden by an individual glyph type (see slash noteheads below: Tables.SLASH_NOTEHEAD_WIDTH).\n const getWidth = (scale = Tables.NOTATION_FONT_SCALE) => Glyph.getWidth(code_head, scale);\n // Merge duration props for 'duration' with the note head properties.\n return Object.assign(Object.assign(Object.assign({}, code.common), { getWidth: getWidth }), glyphTypeProperties);\n }\n}\nTables.SOFTMAX_FACTOR = 100;\nTables.STEM_WIDTH = 1.5;\nTables.STEM_HEIGHT = 35;\nTables.STAVE_LINE_THICKNESS = 1;\nTables.RENDER_PRECISION_PLACES = 3;\nTables.RESOLUTION = RESOLUTION;\n/**\n * Customize this by calling Flow.setMusicFont(...fontNames);\n */\nTables.MUSIC_FONT_STACK = [];\nTables.NOTATION_FONT_SCALE = 39;\nTables.TABLATURE_FONT_SCALE = 39;\nTables.SLASH_NOTEHEAD_WIDTH = 15;\nTables.STAVE_LINE_DISTANCE = 10;\n// HACK:\n// Since text origins are positioned at the baseline, we must\n// compensate for the ascender of the text. Of course, 1 staff space is\n// a very poor approximation.\n//\n// This will be deprecated in the future. This is a temporary solution until\n// we have more robust text metrics.\nTables.TEXT_HEIGHT_OFFSET_HACK = 1;\nTables.accidentalMap = accidentals;\nTables.accidentalColumnsTable = accidentalColumns;\nTables.unicode = {\n // ♯ accidental sharp\n sharp: String.fromCharCode(0x266f),\n // ♭ accidental flat\n flat: String.fromCharCode(0x266d),\n // ♮ accidental natural\n natural: String.fromCharCode(0x266e),\n // △ major seventh\n triangle: String.fromCharCode(0x25b3),\n // ø half-diminished\n 'o-with-slash': String.fromCharCode(0x00f8),\n // ° diminished\n degrees: String.fromCharCode(0x00b0),\n // ○ diminished\n circle: String.fromCharCode(0x25cb),\n};\n/* The list of valid note types. Used by note.ts during parseNoteStruct(). */\nTables.validTypes = validNoteTypes;\n// Default time signature.\nTables.TIME4_4 = {\n num_beats: 4,\n beat_value: 4,\n resolution: RESOLUTION,\n};\n// 1/2, 1, 2, 4, 8, 16, 32, 64, 128\n// NOTE: There is no 256 here! However, there are other mentions of 256 in this file.\n// For example, in durations has a 256 key, and sanitizeDuration() can return 256.\n// The sanitizeDuration() bit may need to be removed by 0xfe.\n// eslint-disable-next-line\nconst durationCodes = {\n '1/2': {\n common: {\n stem: false,\n stem_offset: 0,\n flag: false,\n stem_up_extension: -Tables.STEM_HEIGHT,\n stem_down_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_up_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_down_extension: -Tables.STEM_HEIGHT,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Breve rest\n code_head: 'restDoubleWhole',\n rest: true,\n position: 'B/5',\n dot_shiftY: 0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restDoubleWhole', scale);\n // },\n },\n s: {\n // Breve note slash -\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 1: {\n common: {\n stem: false,\n stem_offset: 0,\n flag: false,\n stem_up_extension: -Tables.STEM_HEIGHT,\n stem_down_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_up_extension: -Tables.STEM_HEIGHT,\n tabnote_stem_down_extension: -Tables.STEM_HEIGHT,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Whole rest\n code_head: 'restWhole',\n leger_code_head: 'restWholeLegerLine',\n rest: true,\n position: 'D/5',\n dot_shiftY: 0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restWhole', scale);\n // },\n },\n s: {\n // Whole note slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 2: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: false,\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Half rest\n code_head: 'restHalf',\n leger_code_head: 'restHalfLegerLine',\n stem: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restHalf', scale);\n // },\n },\n s: {\n // Half note slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 4: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: false,\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Quarter rest\n code_head: 'restQuarter',\n stem: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.5,\n line_below: 1.5,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('restQuarter', scale);\n // },\n },\n s: {\n // Quarter slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 8: {\n common: {\n stem: true,\n stem_offset: 0,\n flag: true,\n beam_count: 1,\n stem_beam_extension: 0,\n code_flag_upstem: 'flag8thUp',\n code_flag_downstem: 'flag8thDown',\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Eighth rest\n code_head: 'rest8th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.0,\n line_below: 1.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest8th', scale);\n // },\n },\n s: {\n // Eighth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 16: {\n common: {\n beam_count: 2,\n stem_beam_extension: 0,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag16thUp',\n code_flag_downstem: 'flag16thDown',\n stem_up_extension: 0,\n stem_down_extension: 0,\n tabnote_stem_up_extension: 0,\n tabnote_stem_down_extension: 0,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Sixteenth rest\n code_head: 'rest16th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -0.5,\n line_above: 1.0,\n line_below: 2.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest16th', scale);\n // },\n },\n s: {\n // Sixteenth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 32: {\n common: {\n beam_count: 3,\n stem_beam_extension: 7.5,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag32ndUp',\n code_flag_downstem: 'flag32ndDown',\n stem_up_extension: 9,\n stem_down_extension: 9,\n tabnote_stem_up_extension: 9,\n tabnote_stem_down_extension: 9,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Thirty-second rest\n code_head: 'rest32nd',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -1.5,\n line_above: 2.0,\n line_below: 2.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest32nd', scale);\n // },\n },\n s: {\n // Thirty-second slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 64: {\n common: {\n beam_count: 4,\n stem_beam_extension: 15,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag64thUp',\n code_flag_downstem: 'flag64thDown',\n stem_up_extension: 13,\n stem_down_extension: 13,\n tabnote_stem_up_extension: 13,\n tabnote_stem_down_extension: 13,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Sixty-fourth rest\n code_head: 'rest64th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -1.5,\n line_above: 2.0,\n line_below: 3.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest64th', scale);\n // },\n },\n s: {\n // Sixty-fourth slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n 128: {\n common: {\n beam_count: 5,\n stem_beam_extension: 22.5,\n stem: true,\n stem_offset: 0,\n flag: true,\n code_flag_upstem: 'flag128thUp',\n code_flag_downstem: 'flag128thDown',\n stem_up_extension: 22,\n stem_down_extension: 22,\n tabnote_stem_up_extension: 22,\n tabnote_stem_down_extension: 22,\n dot_shiftY: 0,\n line_above: 0,\n line_below: 0,\n },\n type: {\n r: {\n // Hundred-twenty-eight rest\n code_head: 'rest128th',\n stem: false,\n flag: false,\n rest: true,\n position: 'B/4',\n dot_shiftY: -2.5,\n line_above: 3.0,\n line_below: 3.0,\n // getWidth(scale = Tables.NOTATION_FONT_SCALE): number | undefined {\n // return Glyph.getWidth('rest128th', scale);\n // },\n },\n s: {\n // Hundred-twenty-eight slash\n // Drawn with canvas primitives\n getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH,\n position: 'B/4',\n },\n },\n },\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { BoundingBoxComputation } from './boundingboxcomputation';\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var OutlineCode;\n(function (OutlineCode) {\n OutlineCode[OutlineCode[\"MOVE\"] = 0] = \"MOVE\";\n OutlineCode[OutlineCode[\"LINE\"] = 1] = \"LINE\";\n OutlineCode[OutlineCode[\"QUADRATIC\"] = 2] = \"QUADRATIC\";\n OutlineCode[OutlineCode[\"BEZIER\"] = 3] = \"BEZIER\";\n})(OutlineCode || (OutlineCode = {}));\nclass GlyphCacheEntry {\n constructor(fontStack, code, category) {\n this.point = -1;\n this.metrics = Glyph.loadMetrics(fontStack, code, category);\n this.bbox = Glyph.getOutlineBoundingBox(this.metrics.outline, this.metrics.scale, this.metrics.x_shift, this.metrics.y_shift);\n if (category) {\n this.point = Glyph.lookupFontMetric(this.metrics.font, category, code, 'point', -1);\n }\n }\n}\nclass GlyphCache {\n constructor() {\n this.cache = new Map();\n }\n lookup(code, category) {\n let entries = this.cache.get(Glyph.CURRENT_CACHE_KEY);\n if (entries === undefined) {\n entries = {};\n this.cache.set(Glyph.CURRENT_CACHE_KEY, entries);\n }\n const key = category ? `${code}%${category}` : code;\n let entry = entries[key];\n if (entry === undefined) {\n entry = new GlyphCacheEntry(Glyph.MUSIC_FONT_STACK, code, category);\n entries[key] = entry;\n }\n return entry;\n }\n}\nclass GlyphOutline {\n constructor(outline, originX, originY, scale) {\n this.outline = outline;\n this.originX = originX;\n this.originY = originY;\n this.scale = scale;\n this.i = 0;\n this.precision = 1;\n // Automatically assign private properties: this.outline, this.originX, this.originY, and this.scale.\n this.precision = Math.pow(10, Tables.RENDER_PRECISION_PLACES);\n }\n done() {\n return this.i >= this.outline.length;\n }\n next() {\n return Math.round((this.outline[this.i++] * this.precision) / this.precision);\n }\n nextX() {\n return Math.round((this.originX + this.outline[this.i++] * this.scale) * this.precision) / this.precision;\n }\n nextY() {\n return Math.round((this.originY - this.outline[this.i++] * this.scale) * this.precision) / this.precision;\n }\n static parse(str) {\n const result = [];\n const parts = str.split(' ');\n let i = 0;\n while (i < parts.length) {\n switch (parts[i++]) {\n case 'm':\n result.push(OutlineCode.MOVE, parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'l':\n result.push(OutlineCode.LINE, parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'q':\n result.push(OutlineCode.QUADRATIC, parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n case 'b':\n result.push(OutlineCode.BEZIER, parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]));\n break;\n }\n }\n return result;\n }\n}\nexport class Glyph extends Element {\n /**\n * @param code\n * @param point\n * @param options\n */\n constructor(code, point, options) {\n super();\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // INSTANCE MEMBERS\n this.bbox = new BoundingBox(0, 0, 0, 0);\n this.topGlyphs = [];\n this.botGlyphs = [];\n this.options = {};\n this.scale = 1;\n this.code = code;\n this.point = point;\n this.originShift = { x: 0, y: 0 };\n this.x_shift = 0;\n this.y_shift = 0;\n if (options) {\n this.setOptions(options);\n }\n else {\n this.reset();\n }\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // STATIC MEMBERS\n static get CATEGORY() {\n return Category.Glyph;\n }\n /**\n * Pass a key of the form `glyphs.{category}.{code}.{key}` to Font.lookupMetric(). If the initial lookup fails,\n * try again with the path `glyphs.{category}.{key}`. If the second lookup fails, return the defaultValue.\n *\n * @param font\n * @param category any metric path under 'glyphs', so 'stem.up' could resolve to glyphs.stem.up.shiftX, glyphs.stem.up.shiftY, etc.\n * @param code\n * @param key\n * @param defaultValue\n */\n static lookupFontMetric(font, category, code, key, defaultValue) {\n let value = font.lookupMetric(`glyphs.${category}.${code}.${key}`, undefined);\n if (value === undefined) {\n // The first lookup failed, so we omit .${code} and try again (with a defaultValue this time).\n value = font.lookupMetric(`glyphs.${category}.${key}`, defaultValue);\n }\n return value;\n }\n static lookupGlyph(fontStack, code) {\n defined(fontStack, 'BadFontStack', 'Font stack is misconfigured');\n let glyph;\n let font;\n for (let i = 0; i < fontStack.length; i++) {\n font = fontStack[i];\n glyph = font.getGlyphs()[code];\n if (glyph)\n return { glyph, font };\n }\n throw new RuntimeError('BadGlyph', `Glyph ${code} does not exist in font.`);\n }\n static loadMetrics(fontStack, code, category) {\n const { glyph, font } = Glyph.lookupGlyph(fontStack, code);\n if (!glyph.o)\n throw new RuntimeError('BadGlyph', `Glyph ${code} has no outline defined.`);\n let x_shift = 0;\n let y_shift = 0;\n let scale = 1;\n if (category && font) {\n x_shift = Glyph.lookupFontMetric(font, category, code, 'shiftX', 0);\n y_shift = Glyph.lookupFontMetric(font, category, code, 'shiftY', 0);\n scale = Glyph.lookupFontMetric(font, category, code, 'scale', 1);\n }\n const x_min = glyph.x_min;\n const x_max = glyph.x_max;\n const ha = glyph.ha;\n if (!glyph.cached_outline) {\n glyph.cached_outline = GlyphOutline.parse(glyph.o);\n }\n return {\n x_min,\n x_max,\n x_shift,\n y_shift,\n scale,\n ha,\n outline: glyph.cached_outline,\n font,\n width: x_max - x_min,\n height: ha,\n };\n }\n /**\n * Renders glyphs from the default font stack.\n *\n * @param ctx Canvas or SVG context\n * @param x_pos x coordinate\n * @param y_pos y coordinate\n * @param point the point size of the font\n * @param code the glyph code in font.getGlyphs()\n * @param options\n * @returns\n */\n static renderGlyph(ctx, x_pos, y_pos, point, code, options) {\n var _a;\n const data = Glyph.cache.lookup(code, options === null || options === void 0 ? void 0 : options.category);\n const metrics = data.metrics;\n if (data.point != -1) {\n point = data.point;\n }\n const customScale = (_a = options === null || options === void 0 ? void 0 : options.scale) !== null && _a !== void 0 ? _a : 1;\n const scale = ((point * 72.0) / (metrics.font.getResolution() * 100.0)) * metrics.scale * customScale;\n Glyph.renderOutline(ctx, metrics.outline, scale, x_pos + metrics.x_shift * customScale, y_pos + metrics.y_shift * customScale);\n return metrics;\n }\n static renderOutline(ctx, outline, scale, x_pos, y_pos) {\n const go = new GlyphOutline(outline, x_pos, y_pos, scale);\n ctx.beginPath();\n let x, y;\n while (!go.done()) {\n switch (go.next()) {\n case OutlineCode.MOVE:\n ctx.moveTo(go.nextX(), go.nextY());\n break;\n case OutlineCode.LINE:\n ctx.lineTo(go.nextX(), go.nextY());\n break;\n case OutlineCode.QUADRATIC:\n x = go.nextX();\n y = go.nextY();\n ctx.quadraticCurveTo(go.nextX(), go.nextY(), x, y);\n break;\n case OutlineCode.BEZIER:\n x = go.nextX();\n y = go.nextY();\n ctx.bezierCurveTo(go.nextX(), go.nextY(), go.nextX(), go.nextY(), x, y);\n break;\n }\n }\n ctx.fill();\n }\n static getOutlineBoundingBox(outline, scale, x_pos, y_pos) {\n const go = new GlyphOutline(outline, x_pos, y_pos, scale);\n const bboxComp = new BoundingBoxComputation();\n // (penX, penY) hold the pen position: the start of each stroke.\n let penX = x_pos;\n let penY = y_pos;\n let x, y;\n while (!go.done()) {\n switch (go.next()) {\n case OutlineCode.MOVE:\n // Note that we don't add any points to the bounding box until a srroke is actually drawn.\n penX = go.nextX();\n penY = go.nextY();\n break;\n case OutlineCode.LINE:\n bboxComp.addPoint(penX, penY);\n penX = go.nextX();\n penY = go.nextY();\n bboxComp.addPoint(penX, penY);\n break;\n case OutlineCode.QUADRATIC:\n x = go.nextX();\n y = go.nextY();\n bboxComp.addQuadraticCurve(penX, penY, go.nextX(), go.nextY(), x, y);\n penX = x;\n penY = y;\n break;\n case OutlineCode.BEZIER:\n x = go.nextX();\n y = go.nextY();\n bboxComp.addBezierCurve(penX, penY, go.nextX(), go.nextY(), go.nextX(), go.nextY(), x, y);\n penX = x;\n penY = y;\n break;\n }\n }\n return new BoundingBox(bboxComp.getX1(), bboxComp.getY1(), bboxComp.width(), bboxComp.height());\n }\n static getWidth(code, point, category) {\n const data = Glyph.cache.lookup(code, category);\n if (data.point != -1) {\n point = data.point;\n }\n const scale = (point * 72) / (data.metrics.font.getResolution() * 100);\n return data.bbox.getW() * scale;\n }\n // eslint-disable-next-line\n draw(...args) {\n // DO NOTHING.\n }\n getCode() {\n return this.code;\n }\n // eslint-disable-next-line\n setOptions(options) {\n this.options = Object.assign(Object.assign({}, this.options), options);\n this.reset();\n }\n setPoint(point) {\n this.point = point;\n return this;\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getXShift() {\n return this.x_shift;\n }\n setXShift(x_shift) {\n this.x_shift = x_shift;\n return this;\n }\n getYshift() {\n return this.y_shift;\n }\n setYShift(y_shift) {\n this.y_shift = y_shift;\n return this;\n }\n reset() {\n const data = Glyph.cache.lookup(this.code, this.options.category);\n this.metrics = data.metrics;\n // Override point from metrics file\n if (data.point != -1) {\n this.point = data.point;\n }\n this.scale = (this.point * 72) / (this.metrics.font.getResolution() * 100);\n this.bbox = new BoundingBox(data.bbox.getX() * this.scale, data.bbox.getY() * this.scale, data.bbox.getW() * this.scale, data.bbox.getH() * this.scale);\n }\n checkMetrics() {\n return defined(this.metrics, 'BadGlyph', `Glyph ${this.code} is not initialized.`);\n }\n getMetrics() {\n const metrics = this.checkMetrics();\n const metricsScale = metrics.scale;\n return {\n x_min: metrics.x_min * this.scale * metricsScale,\n x_max: metrics.x_max * this.scale * metricsScale,\n width: this.bbox.getW(),\n height: this.bbox.getH(),\n scale: this.scale * metricsScale,\n x_shift: metrics.x_shift,\n y_shift: metrics.y_shift,\n outline: metrics.outline,\n font: metrics.font,\n ha: metrics.ha,\n };\n }\n setOriginX(x) {\n const { bbox } = this;\n const originX = Math.abs(bbox.getX() / bbox.getW());\n const xShift = (x - originX) * bbox.getW();\n this.originShift.x = -xShift;\n }\n setOriginY(y) {\n const { bbox } = this;\n const originY = Math.abs(bbox.getY() / bbox.getH());\n const yShift = (y - originY) * bbox.getH();\n this.originShift.y = -yShift;\n }\n setOrigin(x, y) {\n this.setOriginX(x);\n this.setOriginY(y);\n }\n render(ctx, x, y) {\n const metrics = this.checkMetrics();\n const outline = metrics.outline;\n const scale = this.scale * metrics.scale;\n this.setRendered();\n this.applyStyle(ctx);\n const xPos = x + this.originShift.x + metrics.x_shift;\n const yPos = y + this.originShift.y + metrics.y_shift;\n Glyph.renderOutline(ctx, outline, scale, xPos, yPos);\n this.restoreStyle(ctx);\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n renderToStave(x) {\n const context = this.checkContext();\n const metrics = this.checkMetrics();\n const stave = this.checkStave();\n const outline = metrics.outline;\n const scale = this.scale * metrics.scale;\n this.setRendered();\n this.applyStyle();\n const xPos = x + this.x_shift + metrics.x_shift;\n const yPos = stave.getYForGlyphs() + this.y_shift + metrics.y_shift;\n Glyph.renderOutline(context, outline, scale, xPos, yPos);\n this.restoreStyle();\n }\n}\nGlyph.cache = new GlyphCache();\n// The current cache key for GlyphCache above.\n// Computed when Flow.setMusicFont(...) is called.\n// It is set to a comma separated list of font names.\nGlyph.CURRENT_CACHE_KEY = '';\n// Used by the GlyphCache above.\n// Set when Flow.setMusicFont(...) is called.\nGlyph.MUSIC_FONT_STACK = [];\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var ModifierPosition;\n(function (ModifierPosition) {\n ModifierPosition[ModifierPosition[\"CENTER\"] = 0] = \"CENTER\";\n ModifierPosition[ModifierPosition[\"LEFT\"] = 1] = \"LEFT\";\n ModifierPosition[ModifierPosition[\"RIGHT\"] = 2] = \"RIGHT\";\n ModifierPosition[ModifierPosition[\"ABOVE\"] = 3] = \"ABOVE\";\n ModifierPosition[ModifierPosition[\"BELOW\"] = 4] = \"BELOW\";\n})(ModifierPosition || (ModifierPosition = {}));\n// To enable logging for this class. Set `Vex.Flow.Modifier.DEBUG` to `true`.\n// function L(...args) { if (Modifier.DEBUG) log('Vex.Flow.Modifier', args); }\n/**\n * `Modifier` is an abstract interface for notational elements that modify\n * a `Note`. Examples of modifiers are `Accidental`, `Annotation`, `Stroke`, etc.\n *\n * For a `Modifier` instance to be positioned correctly, it must be part of\n * a `ModifierContext`. All modifiers in the same context are rendered relative to\n * one another.\n *\n * Typically, all modifiers to a note are part of the same `ModifierContext` instance. Also,\n * in multi-voice staves, all modifiers to notes on the same `tick` are part of the same\n * `ModifierContext`. This ensures that multiple voices don't trample all over each other.\n */\nexport class Modifier extends Element {\n constructor() {\n super();\n this.width = 0;\n // The `text_line` is reserved space above or below a stave.\n this.text_line = 0;\n this.position = Modifier.Position.LEFT;\n this.x_shift = 0;\n this.y_shift = 0;\n this.spacingFromNextModifier = 0;\n }\n /**\n * Modifiers category string. Every modifier has a different category.\n * The `ModifierContext` uses this to determine the type and order of the modifiers.\n */\n static get CATEGORY() {\n return Category.Modifier;\n }\n /** Modifiers can be positioned almost anywhere, relative to a note. */\n static get Position() {\n return ModifierPosition;\n }\n static get PositionString() {\n return {\n center: ModifierPosition.CENTER,\n above: ModifierPosition.ABOVE,\n below: ModifierPosition.BELOW,\n left: ModifierPosition.LEFT,\n right: ModifierPosition.RIGHT,\n };\n }\n /** Called when position changes. */\n reset() {\n // DO NOTHING.\n }\n /** Get modifier widths. */\n getWidth() {\n return this.width;\n }\n /** Set modifier widths. */\n setWidth(width) {\n this.width = width;\n return this;\n }\n /** Get attached note (`StaveNote`, `TabNote`, etc.) */\n getNote() {\n return defined(this.note, 'NoNote', 'Modifier has no note.');\n }\n /**\n * Used in draw() to check and get the attached note (`StaveNote`, `TabNote`, etc.).\n * Also verifies that the index is valid.\n */\n checkAttachedNote() {\n const category = this.getCategory();\n defined(this.index, 'NoIndex', `Can't draw ${category} without an index.`);\n return defined(this.note, 'NoNote', `Can't draw ${category} without a note.`);\n }\n /**\n * Set attached note.\n * @param note (`StaveNote`, `TabNote`, etc.)\n */\n setNote(note) {\n this.note = note;\n return this;\n }\n /** Get note index, which is a specific note in a chord. */\n getIndex() {\n return this.index;\n }\n /** Check and get note index, which is a specific note in a chord. */\n checkIndex() {\n return defined(this.index, 'NoIndex', 'Modifier has an invalid index.');\n }\n /** Set note index, which is a specific note in a chord. */\n setIndex(index) {\n this.index = index;\n return this;\n }\n /** Get `ModifierContext`. */\n getModifierContext() {\n return this.modifierContext;\n }\n /** Check and get `ModifierContext`. */\n checkModifierContext() {\n return defined(this.modifierContext, 'NoModifierContext', 'Modifier Context Required');\n }\n /** Every modifier must be part of a `ModifierContext`. */\n setModifierContext(c) {\n this.modifierContext = c;\n return this;\n }\n /** Get position. */\n getPosition() {\n return this.position;\n }\n /**\n * Set position.\n * @param position CENTER | LEFT | RIGHT | ABOVE | BELOW\n */\n setPosition(position) {\n this.position = typeof position === 'string' ? Modifier.PositionString[position] : position;\n this.reset();\n return this;\n }\n /** Set the `text_line` for the modifier. */\n setTextLine(line) {\n this.text_line = line;\n return this;\n }\n /** Shift modifier down `y` pixels. Negative values shift up. */\n setYShift(y) {\n this.y_shift = y;\n return this;\n }\n /** Set spacing from next modifier. */\n setSpacingFromNextModifier(x) {\n this.spacingFromNextModifier = x;\n }\n /** Get spacing from next modifier. */\n getSpacingFromNextModifier() {\n return this.spacingFromNextModifier;\n }\n /**\n * Shift modifier `x` pixels in the direction of the modifier. Negative values\n * shift reverse.\n */\n setXShift(x) {\n this.x_shift = 0;\n if (this.position === Modifier.Position.LEFT) {\n this.x_shift -= x;\n }\n else {\n this.x_shift += x;\n }\n return this;\n }\n /** Get shift modifier `x` */\n getXShift() {\n return this.x_shift;\n }\n /** Render the modifier onto the canvas. */\n draw() {\n this.checkContext();\n throw new RuntimeError('NotImplemented', 'draw() not implemented for this modifier.');\n }\n // aligns sub notes of NoteSubGroup (or GraceNoteGroup) to the main note with correct x-offset\n alignSubNotesWithNote(subNotes, note) {\n // Shift over the tick contexts of each note\n const tickContext = note.getTickContext();\n const metrics = tickContext.getMetrics();\n const stave = note.getStave();\n const subNoteXOffset = tickContext.getX() - metrics.modLeftPx - metrics.modRightPx + this.getSpacingFromNextModifier();\n subNotes.forEach((subNote) => {\n const subTickContext = subNote.getTickContext();\n if (stave)\n subNote.setStave(stave);\n subTickContext.setXOffset(subNoteXOffset); // don't touch baseX to avoid shift each render\n });\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { RuntimeError } from './util';\n/** Music implements some standard music theory routines. */\nexport class Music {\n /** Number of an canonical notes (12). */\n static get NUM_TONES() {\n return this.canonical_notes.length;\n }\n /** Names of root notes ('c', 'd',...) */\n static get roots() {\n return ['c', 'd', 'e', 'f', 'g', 'a', 'b'];\n }\n /** Values of the root notes.*/\n static get root_values() {\n return [0, 2, 4, 5, 7, 9, 11];\n }\n /** Indices of the root notes.*/\n static get root_indices() {\n return {\n c: 0,\n d: 1,\n e: 2,\n f: 3,\n g: 4,\n a: 5,\n b: 6,\n };\n }\n /** Names of canonical notes ('c', 'c#', 'd',...). */\n static get canonical_notes() {\n return ['c', 'c#', 'd', 'd#', 'e', 'f', 'f#', 'g', 'g#', 'a', 'a#', 'b'];\n }\n /** Names of diatonic intervals ('unison', 'm2', 'M2',...). */\n static get diatonic_intervals() {\n return ['unison', 'm2', 'M2', 'm3', 'M3', 'p4', 'dim5', 'p5', 'm6', 'M6', 'b7', 'M7', 'octave'];\n }\n /** NoteAccidental associated to diatonic intervals. */\n static get diatonic_accidentals() {\n return {\n unison: { note: 0, accidental: 0 },\n m2: { note: 1, accidental: -1 },\n M2: { note: 1, accidental: 0 },\n m3: { note: 2, accidental: -1 },\n M3: { note: 2, accidental: 0 },\n p4: { note: 3, accidental: 0 },\n dim5: { note: 4, accidental: -1 },\n p5: { note: 4, accidental: 0 },\n m6: { note: 5, accidental: -1 },\n M6: { note: 5, accidental: 0 },\n b7: { note: 6, accidental: -1 },\n M7: { note: 6, accidental: 0 },\n octave: { note: 7, accidental: 0 },\n };\n }\n /** Semitones shift associated to intervals .*/\n static get intervals() {\n return {\n u: 0,\n unison: 0,\n m2: 1,\n b2: 1,\n min2: 1,\n S: 1,\n H: 1,\n 2: 2,\n M2: 2,\n maj2: 2,\n T: 2,\n W: 2,\n m3: 3,\n b3: 3,\n min3: 3,\n M3: 4,\n 3: 4,\n maj3: 4,\n 4: 5,\n p4: 5,\n '#4': 6,\n b5: 6,\n aug4: 6,\n dim5: 6,\n 5: 7,\n p5: 7,\n '#5': 8,\n b6: 8,\n aug5: 8,\n 6: 9,\n M6: 9,\n maj6: 9,\n b7: 10,\n m7: 10,\n min7: 10,\n dom7: 10,\n M7: 11,\n maj7: 11,\n 8: 12,\n octave: 12,\n };\n }\n /** Semitones shifts associated with scales. */\n static get scales() {\n return {\n major: [2, 2, 1, 2, 2, 2, 1],\n minor: [2, 1, 2, 2, 1, 2, 2],\n ionian: [2, 2, 1, 2, 2, 2, 1],\n dorian: [2, 1, 2, 2, 2, 1, 2],\n phyrgian: [1, 2, 2, 2, 1, 2, 2],\n lydian: [2, 2, 2, 1, 2, 2, 1],\n mixolydian: [2, 2, 1, 2, 2, 1, 2],\n aeolian: [2, 1, 2, 2, 1, 2, 2],\n locrian: [1, 2, 2, 1, 2, 2, 2],\n };\n }\n /** Scales associated with m (minor) and M (major). */\n static get scaleTypes() {\n return {\n M: Music.scales.major,\n m: Music.scales.minor,\n };\n }\n /** Accidentals abbreviations. */\n static get accidentals() {\n return ['bb', 'b', 'n', '#', '##'];\n }\n /** Note values. */\n static get noteValues() {\n return {\n c: { root_index: 0, int_val: 0 },\n cn: { root_index: 0, int_val: 0 },\n 'c#': { root_index: 0, int_val: 1 },\n 'c##': { root_index: 0, int_val: 2 },\n cb: { root_index: 0, int_val: 11 },\n cbb: { root_index: 0, int_val: 10 },\n d: { root_index: 1, int_val: 2 },\n dn: { root_index: 1, int_val: 2 },\n 'd#': { root_index: 1, int_val: 3 },\n 'd##': { root_index: 1, int_val: 4 },\n db: { root_index: 1, int_val: 1 },\n dbb: { root_index: 1, int_val: 0 },\n e: { root_index: 2, int_val: 4 },\n en: { root_index: 2, int_val: 4 },\n 'e#': { root_index: 2, int_val: 5 },\n 'e##': { root_index: 2, int_val: 6 },\n eb: { root_index: 2, int_val: 3 },\n ebb: { root_index: 2, int_val: 2 },\n f: { root_index: 3, int_val: 5 },\n fn: { root_index: 3, int_val: 5 },\n 'f#': { root_index: 3, int_val: 6 },\n 'f##': { root_index: 3, int_val: 7 },\n fb: { root_index: 3, int_val: 4 },\n fbb: { root_index: 3, int_val: 3 },\n g: { root_index: 4, int_val: 7 },\n gn: { root_index: 4, int_val: 7 },\n 'g#': { root_index: 4, int_val: 8 },\n 'g##': { root_index: 4, int_val: 9 },\n gb: { root_index: 4, int_val: 6 },\n gbb: { root_index: 4, int_val: 5 },\n a: { root_index: 5, int_val: 9 },\n an: { root_index: 5, int_val: 9 },\n 'a#': { root_index: 5, int_val: 10 },\n 'a##': { root_index: 5, int_val: 11 },\n ab: { root_index: 5, int_val: 8 },\n abb: { root_index: 5, int_val: 7 },\n b: { root_index: 6, int_val: 11 },\n bn: { root_index: 6, int_val: 11 },\n 'b#': { root_index: 6, int_val: 0 },\n 'b##': { root_index: 6, int_val: 1 },\n bb: { root_index: 6, int_val: 10 },\n bbb: { root_index: 6, int_val: 9 },\n };\n }\n isValidNoteValue(note) {\n return note >= 0 && note < Music.canonical_notes.length;\n }\n isValidIntervalValue(interval) {\n return interval >= 0 && interval < Music.diatonic_intervals.length;\n }\n /** Return root and accidental associated to a note. */\n getNoteParts(noteString) {\n if (!noteString || noteString.length < 1) {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n if (noteString.length > 3) {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n const note = noteString.toLowerCase();\n const regex = /^([cdefgab])(b|bb|n|#|##)?$/;\n const match = regex.exec(note);\n if (match !== null) {\n const root = match[1];\n const accidental = match[2];\n return {\n root,\n accidental,\n };\n }\n else {\n throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString);\n }\n }\n /** Return root, accidental and type associated to a key. */\n getKeyParts(keyString) {\n if (!keyString || keyString.length < 1) {\n throw new RuntimeError('BadArguments', 'Invalid key: ' + keyString);\n }\n const key = keyString.toLowerCase();\n // Support Major, Minor, Melodic Minor, and Harmonic Minor key types.\n const regex = /^([cdefgab])(b|#)?(mel|harm|m|M)?$/;\n const match = regex.exec(key);\n if (match !== null) {\n const root = match[1];\n const accidental = match[2];\n let type = match[3];\n // Unspecified type implies major\n if (!type)\n type = 'M';\n return {\n root,\n accidental,\n type,\n };\n }\n else {\n throw new RuntimeError('BadArguments', `Invalid key: ${keyString}`);\n }\n }\n /** Note value associated to a note name. */\n getNoteValue(noteString) {\n const value = Music.noteValues[noteString];\n if (value === undefined) {\n throw new RuntimeError('BadArguments', `Invalid note name: ${noteString}`);\n }\n return value.int_val;\n }\n /** Interval value associated to an interval name. */\n getIntervalValue(intervalString) {\n const value = Music.intervals[intervalString];\n if (value === undefined) {\n throw new RuntimeError('BadArguments', `Invalid interval name: ${intervalString}`);\n }\n return value;\n }\n /** Canonical note name associated to a value. */\n getCanonicalNoteName(noteValue) {\n if (!this.isValidNoteValue(noteValue)) {\n throw new RuntimeError('BadArguments', `Invalid note value: ${noteValue}`);\n }\n return Music.canonical_notes[noteValue];\n }\n /** Interval name associated to a value. */\n getCanonicalIntervalName(intervalValue) {\n if (!this.isValidIntervalValue(intervalValue)) {\n throw new RuntimeError('BadArguments', `Invalid interval value: ${intervalValue}`);\n }\n return Music.diatonic_intervals[intervalValue];\n }\n /**\n * Given a note, interval, and interval direction, produce the relative note.\n */\n getRelativeNoteValue(noteValue, intervalValue, direction = 1) {\n if (direction !== 1 && direction !== -1) {\n throw new RuntimeError('BadArguments', `Invalid direction: ${direction}`);\n }\n let sum = (noteValue + direction * intervalValue) % Music.NUM_TONES;\n if (sum < 0)\n sum += Music.NUM_TONES;\n return sum;\n }\n /**\n * Given a root and note value, produce the relative note name.\n */\n getRelativeNoteName(root, noteValue) {\n const parts = this.getNoteParts(root);\n const rootValue = this.getNoteValue(parts.root);\n let interval = noteValue - rootValue;\n if (Math.abs(interval) > Music.NUM_TONES - 3) {\n let multiplier = 1;\n if (interval > 0)\n multiplier = -1;\n // Possibly wrap around. (Add +1 for modulo operator)\n const reverse_interval = ((noteValue + 1 + (rootValue + 1)) % Music.NUM_TONES) * multiplier;\n if (Math.abs(reverse_interval) > 2) {\n throw new RuntimeError('BadArguments', `Notes not related: ${root}, ${noteValue})`);\n }\n else {\n interval = reverse_interval;\n }\n }\n if (Math.abs(interval) > 2) {\n throw new RuntimeError('BadArguments', `Notes not related: ${root}, ${noteValue})`);\n }\n let relativeNoteName = parts.root;\n if (interval > 0) {\n for (let i = 1; i <= interval; ++i) {\n relativeNoteName += '#';\n }\n }\n else if (interval < 0) {\n for (let i = -1; i >= interval; --i) {\n relativeNoteName += 'b';\n }\n }\n return relativeNoteName;\n }\n /**\n * Return scale tones, given intervals. Each successive interval is\n * relative to the previous one, e.g., Major Scale:\n *\n * TTSTTTS = [2,2,1,2,2,2,1]\n *\n * When used with key = 0, returns C scale (which is isomorphic to\n * interval list).\n */\n getScaleTones(key, intervals) {\n const tones = [key];\n let nextNote = key;\n for (let i = 0; i < intervals.length; i++) {\n nextNote = this.getRelativeNoteValue(nextNote, intervals[i]);\n if (nextNote !== key)\n tones.push(nextNote);\n }\n return tones;\n }\n /**\n * Return the interval of a note, given a diatonic scale.\n * e.g., given the scale C, and the note E, returns M3.\n */\n getIntervalBetween(note1, note2, direction = 1) {\n if (direction !== 1 && direction !== -1) {\n throw new RuntimeError('BadArguments', `Invalid direction: ${direction}`);\n }\n if (!this.isValidNoteValue(note1) || !this.isValidNoteValue(note2)) {\n throw new RuntimeError('BadArguments', `Invalid notes: ${note1}, ${note2}`);\n }\n let difference = direction === 1 ? note2 - note1 : note1 - note2;\n if (difference < 0)\n difference += Music.NUM_TONES;\n return difference;\n }\n /**\n * Create a scale map that represents the pitch state for a\n * `keySignature`. For example, passing a `G` to `keySignature` would\n * return a scale map with every note naturalized except for `F` which\n * has an `F#` state.\n */\n createScaleMap(keySignature) {\n const keySigParts = this.getKeyParts(keySignature);\n if (!keySigParts.type)\n throw new RuntimeError('BadArguments', 'Unsupported key type: undefined');\n const scaleName = Music.scaleTypes[keySigParts.type];\n let keySigString = keySigParts.root;\n if (keySigParts.accidental)\n keySigString += keySigParts.accidental;\n if (!scaleName)\n throw new RuntimeError('BadArguments', 'Unsupported key type: ' + keySignature);\n const scale = this.getScaleTones(this.getNoteValue(keySigString), scaleName);\n const noteLocation = Music.root_indices[keySigParts.root];\n const scaleMap = {};\n for (let i = 0; i < Music.roots.length; ++i) {\n const index = (noteLocation + i) % Music.roots.length;\n const rootName = Music.roots[index];\n let noteName = this.getRelativeNoteName(rootName, scale[i]);\n if (noteName.length === 1) {\n noteName += 'n';\n }\n scaleMap[rootName] = noteName;\n }\n return scaleMap;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// @author Mohit Cheppudira\n// @author Greg Ristow (modifications)\nimport { Fraction } from './fraction';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Music } from './music';\nimport { Tables } from './tables';\nimport { Category, isAccidental, isGraceNote, isGraceNoteGroup, isStaveNote } from './typeguard';\nimport { defined, log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Accidental.DEBUG)\n log('Vex.Flow.Accidental', args);\n}\n/**\n * An `Accidental` inherits from `Modifier`, and is formatted within a\n * `ModifierContext`. Accidentals are modifiers that can be attached to\n * notes. Support is included for both western and microtonal accidentals.\n *\n * See `tests/accidental_tests.ts` for usage examples.\n */\nexport class Accidental extends Modifier {\n /**\n * Create accidental.\n * @param type value from `Vex.Flow.accidentalCodes.accidentals` table in `tables.ts`.\n * For example: `#`, `##`, `b`, `n`, etc.\n */\n constructor(type) {\n super();\n L('New accidental: ', type);\n this.type = type;\n this.position = Modifier.Position.LEFT;\n this.render_options = {\n // Font size for glyphs\n font_scale: 38,\n // Padding between accidental and parentheses on each side\n parenLeftPadding: 2,\n parenRightPadding: 2,\n };\n this.accidental = Tables.accidentalCodes(this.type);\n defined(this.accidental, 'ArgumentError', `Unknown accidental type: ${type}`);\n // Cautionary accidentals have parentheses around them\n this.cautionary = false;\n this.reset();\n }\n /** Accidentals category string. */\n static get CATEGORY() {\n return Category.Accidental;\n }\n /** Arrange accidentals inside a ModifierContext. */\n static format(accidentals, state) {\n // If there are no accidentals, no need to format their positions.\n if (!accidentals || accidentals.length === 0)\n return;\n const musicFont = Tables.currentMusicFont();\n const noteheadAccidentalPadding = musicFont.lookupMetric('accidental.noteheadAccidentalPadding');\n const leftShift = state.left_shift + noteheadAccidentalPadding;\n const accidentalSpacing = musicFont.lookupMetric('accidental.accidentalSpacing');\n const additionalPadding = musicFont.lookupMetric('accidental.leftPadding'); // padding to the left of all accidentals\n const accList = [];\n let prevNote = undefined;\n let shiftL = 0;\n // First determine the accidentals' Y positions from the note.keys\n for (let i = 0; i < accidentals.length; ++i) {\n const acc = accidentals[i];\n const note = acc.getNote();\n const stave = note.getStave();\n const index = acc.checkIndex();\n const props = note.getKeyProps()[index];\n if (note !== prevNote) {\n // Iterate through all notes to get the displaced pixels\n for (let n = 0; n < note.keys.length; ++n) {\n shiftL = Math.max(note.getLeftDisplacedHeadPx() - note.getXShift(), shiftL);\n }\n prevNote = note;\n }\n if (stave) {\n const lineSpace = stave.getSpacingBetweenLines();\n const y = stave.getYForLine(props.line);\n const accLine = Math.round((y / lineSpace) * 2) / 2;\n accList.push({ y, line: accLine, shift: shiftL, acc, lineSpace });\n }\n else {\n accList.push({ line: props.line, shift: shiftL, acc });\n }\n }\n // Sort accidentals by line number.\n accList.sort((a, b) => b.line - a.line);\n // FIXME: Confusing name. Each object in this array has a property called `line`.\n // So if this is a list of lines, you end up with: `line.line` which is very awkward.\n const lineList = [];\n // amount by which all accidentals must be shifted right or left for\n // stem flipping, notehead shifting concerns.\n let accShift = 0;\n let previousLine = undefined;\n // Create an array of unique line numbers (lineList) from accList\n for (let i = 0; i < accList.length; i++) {\n const acc = accList[i];\n // if this is the first line, or a new line, add a lineList\n if (previousLine === undefined || previousLine !== acc.line) {\n lineList.push({\n line: acc.line,\n flatLine: true,\n dblSharpLine: true,\n numAcc: 0,\n width: 0,\n column: 0,\n });\n }\n // if this accidental is not a flat, the accidental needs 3.0 lines lower\n // clearance instead of 2.5 lines for b or bb.\n // FIXME: Naming could use work. acc.acc is very awkward\n if (acc.acc.type !== 'b' && acc.acc.type !== 'bb') {\n lineList[lineList.length - 1].flatLine = false;\n }\n // if this accidental is not a double sharp, the accidental needs 3.0 lines above\n if (acc.acc.type !== '##') {\n lineList[lineList.length - 1].dblSharpLine = false;\n }\n // Track how many accidentals are on this line:\n lineList[lineList.length - 1].numAcc++;\n // Track the total x_offset needed for this line which will be needed\n // for formatting lines w/ multiple accidentals:\n // width = accidental width + universal spacing between accidentals\n lineList[lineList.length - 1].width += acc.acc.getWidth() + accidentalSpacing;\n // if this accShift is larger, use it to keep first column accidentals in the same line\n accShift = acc.shift > accShift ? acc.shift : accShift;\n previousLine = acc.line;\n }\n // ### Place Accidentals in Columns\n //\n // Default to a classic triangular layout (middle accidental farthest left),\n // but follow exceptions as outlined in G. Read's _Music Notation_ and\n // Elaine Gould's _Behind Bars_.\n //\n // Additionally, this implements different vertical collision rules for\n // flats (only need 2.5 lines clearance below) and double sharps (only\n // need 2.5 lines of clearance above or below).\n //\n // Classic layouts and exception patterns are found in the 'tables.js'\n // in 'Tables.accidentalColumnsTable'\n //\n // Beyond 6 vertical accidentals, default to the parallel ascending lines approach,\n // using as few columns as possible for the verticle structure.\n //\n // TODO (?): Allow column to be specified for an accidental at run-time?\n let totalColumns = 0;\n // establish the boundaries for a group of notes with clashing accidentals:\n for (let i = 0; i < lineList.length; i++) {\n let noFurtherConflicts = false;\n const groupStart = i;\n let groupEnd = i;\n while (groupEnd + 1 < lineList.length && !noFurtherConflicts) {\n // if this note conflicts with the next:\n if (this.checkCollision(lineList[groupEnd], lineList[groupEnd + 1])) {\n // include the next note in the group:\n groupEnd++;\n }\n else {\n noFurtherConflicts = true;\n }\n }\n // Gets an a line from the `lineList`, relative to the current group\n const getGroupLine = (index) => lineList[groupStart + index];\n const getGroupLines = (indexes) => indexes.map(getGroupLine);\n const lineDifference = (indexA, indexB) => {\n const [a, b] = getGroupLines([indexA, indexB]).map((item) => item.line);\n return a - b;\n };\n const notColliding = (...indexPairs) => indexPairs.map(getGroupLines).every(([line1, line2]) => !this.checkCollision(line1, line2));\n // Set columns for the lines in this group:\n const groupLength = groupEnd - groupStart + 1;\n // Set the accidental column for each line of the group\n let endCase = this.checkCollision(lineList[groupStart], lineList[groupEnd]) ? 'a' : 'b';\n switch (groupLength) {\n case 3:\n if (endCase === 'a' && lineDifference(1, 2) === 0.5 && lineDifference(0, 1) !== 0.5) {\n endCase = 'second_on_bottom';\n }\n break;\n case 4:\n if (notColliding([0, 2], [1, 3])) {\n endCase = 'spaced_out_tetrachord';\n }\n break;\n case 5:\n if (endCase === 'b' && notColliding([1, 3])) {\n endCase = 'spaced_out_pentachord';\n if (notColliding([0, 2], [2, 4])) {\n endCase = 'very_spaced_out_pentachord';\n }\n }\n break;\n case 6:\n if (notColliding([0, 3], [1, 4], [2, 5])) {\n endCase = 'spaced_out_hexachord';\n }\n if (notColliding([0, 2], [2, 4], [1, 3], [3, 5])) {\n endCase = 'very_spaced_out_hexachord';\n }\n break;\n default:\n break;\n }\n let groupMember;\n let column;\n // If the group contains seven members or more, use ascending parallel lines\n // of accidentals, using as few columns as possible while avoiding collisions.\n if (groupLength >= 7) {\n // First, determine how many columns to use:\n let patternLength = 2;\n let collisionDetected = true;\n while (collisionDetected === true) {\n collisionDetected = false;\n for (let line = 0; line + patternLength < lineList.length; line++) {\n if (this.checkCollision(lineList[line], lineList[line + patternLength])) {\n collisionDetected = true;\n patternLength++;\n break;\n }\n }\n }\n // Then, assign a column to each line of accidentals\n for (groupMember = i; groupMember <= groupEnd; groupMember++) {\n column = ((groupMember - i) % patternLength) + 1;\n lineList[groupMember].column = column;\n totalColumns = totalColumns > column ? totalColumns : column;\n }\n }\n else {\n // If the group contains fewer than seven members, use the layouts from\n // the Tables.accidentalColumnsTable (See: tables.ts).\n for (groupMember = i; groupMember <= groupEnd; groupMember++) {\n column = Tables.accidentalColumnsTable[groupLength][endCase][groupMember - i];\n lineList[groupMember].column = column;\n totalColumns = totalColumns > column ? totalColumns : column;\n }\n }\n // Increment i to the last note that was set, so that if a lower set of notes\n // does not conflict at all with this group, it can have its own classic shape.\n i = groupEnd;\n }\n // ### Convert Columns to x_offsets\n //\n // This keeps columns aligned, even if they have different accidentals within them\n // which sometimes results in a larger x_offset than is an accidental might need\n // to preserve the symmetry of the accidental shape.\n //\n // Neither A.C. Vinci nor G. Read address this, and it typically only happens in\n // music with complex chord clusters.\n //\n // TODO (?): Optionally allow closer compression of accidentals, instead of forcing\n // parallel columns.\n // track each column's max width, which will be used as initial shift of later columns:\n const columnWidths = [];\n const columnXOffsets = [];\n for (let i = 0; i <= totalColumns; i++) {\n columnWidths[i] = 0;\n columnXOffsets[i] = 0;\n }\n columnWidths[0] = accShift + leftShift;\n columnXOffsets[0] = accShift + leftShift;\n // Fill columnWidths with widest needed x-space;\n // this is what keeps the columns parallel.\n lineList.forEach((line) => {\n if (line.width > columnWidths[line.column])\n columnWidths[line.column] = line.width;\n });\n for (let i = 1; i < columnWidths.length; i++) {\n // this column's offset = this column's width + previous column's offset\n columnXOffsets[i] = columnWidths[i] + columnXOffsets[i - 1];\n }\n const totalShift = columnXOffsets[columnXOffsets.length - 1];\n // Set the xShift for each accidental according to column offsets:\n let accCount = 0;\n lineList.forEach((line) => {\n let lineWidth = 0;\n const lastAccOnLine = accCount + line.numAcc;\n // handle all of the accidentals on a given line:\n for (accCount; accCount < lastAccOnLine; accCount++) {\n const xShift = columnXOffsets[line.column - 1] + lineWidth;\n accList[accCount].acc.setXShift(xShift);\n // keep track of the width of accidentals we've added so far, so that when\n // we loop, we add space for them.\n lineWidth += accList[accCount].acc.getWidth() + accidentalSpacing;\n L('Line, accCount, shift: ', line.line, accCount, xShift);\n }\n });\n // update the overall layout with the full width of the accidental shapes:\n state.left_shift += totalShift + additionalPadding;\n }\n /** Helper function to determine whether two lines of accidentals collide vertically */\n static checkCollision(line1, line2) {\n let clearance = line2.line - line1.line;\n let clearanceRequired = 3;\n // But less clearance is required for certain accidentals: b, bb and ##.\n if (clearance > 0) {\n // then line 2 is on top\n clearanceRequired = line2.flatLine || line2.dblSharpLine ? 2.5 : 3.0;\n if (line1.dblSharpLine)\n clearance -= 0.5;\n }\n else {\n // line 1 is on top\n clearanceRequired = line1.flatLine || line1.dblSharpLine ? 2.5 : 3.0;\n if (line2.dblSharpLine)\n clearance -= 0.5;\n }\n const collision = Math.abs(clearance) < clearanceRequired;\n L('Line_1, Line_2, Collision: ', line1.line, line2.line, collision);\n return collision;\n }\n /**\n * Use this method to automatically apply accidentals to a set of `voices`.\n * The accidentals will be remembered between all the voices provided.\n * Optionally, you can also provide an initial `keySignature`.\n */\n static applyAccidentals(voices, keySignature) {\n const tickPositions = [];\n const tickNoteMap = {};\n // Sort the tickables in each voice by their tick position in the voice.\n voices.forEach((voice) => {\n const tickPosition = new Fraction(0, 1);\n const tickable = voice.getTickables();\n tickable.forEach((t) => {\n if (t.shouldIgnoreTicks())\n return;\n const notesAtPosition = tickNoteMap[tickPosition.value()];\n if (!notesAtPosition) {\n tickPositions.push(tickPosition.value());\n tickNoteMap[tickPosition.value()] = [t];\n }\n else {\n notesAtPosition.push(t);\n }\n tickPosition.add(t.getTicks());\n });\n });\n const music = new Music();\n // Default key signature is C major.\n if (!keySignature)\n keySignature = 'C';\n // Get the scale map, which represents the current state of each pitch.\n const scaleMapKey = music.createScaleMap(keySignature);\n const scaleMap = {};\n tickPositions.forEach((tickPos) => {\n const tickables = tickNoteMap[tickPos];\n // Array to store all pitches that modified accidental states\n // at this tick position\n const modifiedPitches = [];\n const processNote = (t) => {\n // Only StaveNote implements .addModifier(), which is used below.\n if (!isStaveNote(t) || t.isRest() || t.shouldIgnoreTicks()) {\n return;\n }\n // Go through each key and determine if an accidental should be applied.\n const staveNote = t;\n staveNote.keys.forEach((keyString, keyIndex) => {\n const key = music.getNoteParts(keyString.split('/')[0]);\n const octave = keyString.split('/')[1];\n // Force a natural for every key without an accidental\n const accidentalString = key.accidental || 'n';\n const pitch = key.root + accidentalString;\n // Determine if the current pitch has the same accidental\n // as the scale state\n if (!scaleMap[key.root + octave])\n scaleMap[key.root + octave] = scaleMapKey[key.root];\n const sameAccidental = scaleMap[key.root + octave] === pitch;\n // Determine if an identical pitch in the chord already\n // modified the accidental state\n const previouslyModified = modifiedPitches.indexOf(keyString) > -1;\n // Remove accidentals\n staveNote.getModifiers().forEach((modifier, index) => {\n if (isAccidental(modifier) && modifier.type == accidentalString && modifier.getIndex() == keyIndex) {\n staveNote.getModifiers().splice(index, 1);\n }\n });\n // Add the accidental to the StaveNote\n if (!sameAccidental || (sameAccidental && previouslyModified)) {\n // Modify the scale map so that the root pitch has an\n // updated state\n scaleMap[key.root + octave] = pitch;\n // Create the accidental\n const accidental = new Accidental(accidentalString);\n // Attach the accidental to the StaveNote\n staveNote.addModifier(accidental, keyIndex);\n // Add the pitch to list of pitches that modified accidentals\n modifiedPitches.push(keyString);\n }\n });\n // process grace notes\n staveNote.getModifiers().forEach((modifier) => {\n if (isGraceNoteGroup(modifier)) {\n modifier.getGraceNotes().forEach(processNote);\n }\n });\n };\n tickables.forEach(processNote);\n });\n }\n reset() {\n const fontScale = this.render_options.font_scale;\n this.glyph = new Glyph(this.accidental.code, fontScale);\n this.glyph.setOriginX(1.0);\n if (this.cautionary) {\n this.parenLeft = new Glyph(Tables.accidentalCodes('{').code, fontScale);\n this.parenRight = new Glyph(Tables.accidentalCodes('}').code, fontScale);\n this.parenLeft.setOriginX(1.0);\n this.parenRight.setOriginX(1.0);\n }\n }\n /** Get width in pixels. */\n getWidth() {\n if (this.cautionary) {\n const parenLeft = defined(this.parenLeft);\n const parenRight = defined(this.parenRight);\n const parenWidth = parenLeft.getMetrics().width +\n parenRight.getMetrics().width +\n this.render_options.parenLeftPadding +\n this.render_options.parenRightPadding;\n return this.glyph.getMetrics().width + parenWidth;\n }\n else {\n return this.glyph.getMetrics().width;\n }\n }\n /** Attach this accidental to `note`, which must be a `StaveNote`. */\n setNote(note) {\n defined(note, 'ArgumentError', `Bad note value: ${note}`);\n this.note = note;\n // Accidentals attached to grace notes are rendered smaller.\n if (isGraceNote(note)) {\n this.render_options.font_scale = 25;\n this.reset();\n }\n return this;\n }\n /** If called, draws parenthesis around accidental. */\n setAsCautionary() {\n this.cautionary = true;\n this.render_options.font_scale = 28;\n this.reset();\n return this;\n }\n /** Render accidental onto canvas. */\n draw() {\n const { type, position, index, cautionary, x_shift, y_shift, glyph, render_options: { parenLeftPadding, parenRightPadding }, } = this;\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n // Figure out the start `x` and `y` coordinates for note and index.\n const start = note.getModifierStartXY(position, index);\n let accX = start.x + x_shift;\n const accY = start.y + y_shift;\n L('Rendering: ', type, accX, accY);\n if (!cautionary) {\n glyph.render(ctx, accX, accY);\n }\n else {\n const parenLeft = defined(this.parenLeft);\n const parenRight = defined(this.parenRight);\n // Render the accidental in parentheses.\n parenRight.render(ctx, accX, accY);\n accX -= parenRight.getMetrics().width;\n accX -= parenRightPadding;\n accX -= this.accidental.parenRightPaddingAdjustment;\n glyph.render(ctx, accX, accY);\n accX -= glyph.getMetrics().width;\n accX -= parenLeftPadding;\n parenLeft.render(ctx, accX, accY);\n }\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Accidental.DEBUG` to `true`. */\nAccidental.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// This file implements the `Stem` object. Generally this object is handled\n// by its parent `StemmableNote`.\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Stem.DEBUG)\n log('Vex.Flow.Stem', args);\n}\nexport class Stem extends Element {\n constructor(options) {\n super();\n this.stem_up_y_offset = 0;\n this.stem_down_y_offset = 0;\n this.stem_up_y_base_offset = 0;\n this.stem_down_y_base_offset = 0;\n // Default notehead x bounds\n this.x_begin = (options === null || options === void 0 ? void 0 : options.x_begin) || 0;\n this.x_end = (options === null || options === void 0 ? void 0 : options.x_end) || 0;\n // Y bounds for top/bottom most notehead\n this.y_top = (options === null || options === void 0 ? void 0 : options.y_top) || 0;\n this.y_bottom = (options === null || options === void 0 ? void 0 : options.y_bottom) || 0;\n // Stem top extension\n this.stem_extension = (options === null || options === void 0 ? void 0 : options.stem_extension) || 0;\n // Direction of the stem\n this.stem_direction = (options === null || options === void 0 ? void 0 : options.stem_direction) || 0;\n // Flag to override all draw calls\n this.hide = (options === null || options === void 0 ? void 0 : options.hide) || false;\n this.isStemlet = (options === null || options === void 0 ? void 0 : options.isStemlet) || false;\n this.stemletHeight = (options === null || options === void 0 ? void 0 : options.stemletHeight) || 0;\n // Use to adjust the rendered height without affecting\n // the results of `.getExtents()`\n this.renderHeightAdjustment = 0;\n this.setOptions(options);\n }\n static get CATEGORY() {\n return Category.Stem;\n }\n // Stem directions\n static get UP() {\n return 1;\n }\n static get DOWN() {\n return -1;\n }\n // Theme\n static get WIDTH() {\n return Tables.STEM_WIDTH;\n }\n static get HEIGHT() {\n return Tables.STEM_HEIGHT;\n }\n setOptions(options) {\n // Changing where the stem meets the head\n this.stem_up_y_offset = (options === null || options === void 0 ? void 0 : options.stem_up_y_offset) || 0;\n this.stem_down_y_offset = (options === null || options === void 0 ? void 0 : options.stem_down_y_offset) || 0;\n this.stem_up_y_base_offset = (options === null || options === void 0 ? void 0 : options.stem_up_y_base_offset) || 0;\n this.stem_down_y_base_offset = (options === null || options === void 0 ? void 0 : options.stem_down_y_base_offset) || 0;\n }\n // Set the x bounds for the default notehead\n setNoteHeadXBounds(x_begin, x_end) {\n this.x_begin = x_begin;\n this.x_end = x_end;\n return this;\n }\n // Set the direction of the stem in relation to the noteheads\n setDirection(direction) {\n this.stem_direction = direction;\n }\n // Set the extension for the stem, generally for flags or beams\n setExtension(ext) {\n this.stem_extension = ext;\n }\n getExtension() {\n return this.stem_extension;\n }\n // The the y bounds for the top and bottom noteheads\n setYBounds(y_top, y_bottom) {\n this.y_top = y_top;\n this.y_bottom = y_bottom;\n }\n // Gets the entire height for the stem\n getHeight() {\n const y_offset = this.stem_direction === Stem.UP ? this.stem_up_y_offset : this.stem_down_y_offset;\n const unsigned_height = this.y_bottom - this.y_top + (Stem.HEIGHT - y_offset + this.stem_extension); // parentheses just for grouping.\n return unsigned_height * this.stem_direction;\n }\n getBoundingBox() {\n throw new RuntimeError('NotImplemented', 'getBoundingBox() not implemented.');\n }\n // Get the y coordinates for the very base of the stem to the top of\n // the extension\n getExtents() {\n const isStemUp = this.stem_direction === Stem.UP;\n const ys = [this.y_top, this.y_bottom];\n const stemHeight = Stem.HEIGHT + this.stem_extension;\n const innerMostNoteheadY = (isStemUp ? Math.min : Math.max)(...ys);\n const outerMostNoteheadY = (isStemUp ? Math.max : Math.min)(...ys);\n const stemTipY = innerMostNoteheadY + stemHeight * -this.stem_direction;\n return { topY: stemTipY, baseY: outerMostNoteheadY };\n }\n setVisibility(isVisible) {\n this.hide = !isVisible;\n return this;\n }\n setStemlet(isStemlet, stemletHeight) {\n this.isStemlet = isStemlet;\n this.stemletHeight = stemletHeight;\n return this;\n }\n adjustHeightForFlag() {\n this.renderHeightAdjustment = Tables.currentMusicFont().lookupMetric('stem.heightAdjustmentForFlag', -3);\n }\n adjustHeightForBeam() {\n this.renderHeightAdjustment = -Stem.WIDTH / 2;\n }\n // Render the stem onto the canvas\n draw() {\n this.setRendered();\n if (this.hide)\n return;\n const ctx = this.checkContext();\n let stem_x;\n let stem_y;\n const stem_direction = this.stem_direction;\n let y_base_offset = 0;\n if (stem_direction === Stem.DOWN) {\n // Down stems are rendered to the left of the head.\n stem_x = this.x_begin;\n stem_y = this.y_top + this.stem_down_y_offset;\n y_base_offset = this.stem_down_y_base_offset;\n }\n else {\n // Up stems are rendered to the right of the head.\n stem_x = this.x_end;\n stem_y = this.y_bottom - this.stem_up_y_offset;\n y_base_offset = this.stem_up_y_base_offset;\n }\n const stemHeight = this.getHeight();\n L('Rendering stem - ', 'Top Y: ', this.y_top, 'Bottom Y: ', this.y_bottom);\n // The offset from the stem's base which is required fo satisfy the stemlet height\n const stemletYOffset = this.isStemlet ? stemHeight - this.stemletHeight * this.stem_direction : 0;\n // Draw the stem\n ctx.save();\n ctx.openGroup('stem', this.getAttribute('id'), { pointerBBox: true });\n this.applyStyle(ctx);\n ctx.beginPath();\n ctx.setLineWidth(Stem.WIDTH);\n ctx.moveTo(stem_x, stem_y - stemletYOffset + y_base_offset);\n ctx.lineTo(stem_x, stem_y - stemHeight - this.renderHeightAdjustment * stem_direction);\n ctx.stroke();\n this.restoreStyle(ctx);\n ctx.closeGroup();\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Stem.DEBUG` to `true`. */\nStem.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextFormatter.DEBUG)\n log('Vex.Flow.TextFormatter', args);\n}\n/**\n * Text widths are stored in a cache, so we don't have to recompute widths\n * for the same font + string combination.\n *\n * The cache is first keyed by the font information. The key is of the form:\n * `${family}-${size}-${weight}-${style}`\n * The second level key is the specific text to be measured.\n *\n * The stored value is the measured width in `em` units.\n * textWidth == textWidthCache[cacheKey][textToMeasure]\n */\nconst textWidthCache = {};\n/**\n * Applications may register additional fonts via `TextFormatter.registerInfo(info)`.\n * The metrics for those fonts will be made available to the application.\n */\nconst registry = {};\nexport class TextFormatter {\n /**\n * Use `TextFormatter.create(...)` to build an instance from information previously\n * registered via `TextFormatter.registerInfo(info)`.\n */\n constructor(formatterInfo) {\n /** Font family. */\n this.family = '';\n /** Specified in `pt` units. */\n this.size = 14;\n /** Font metrics are extracted at 1000 upem (units per em). */\n this.resolution = 1000;\n /**\n * For text formatting, we do not require glyph outlines, but instead rely on glyph\n * bounding box metrics such as:\n * ```\n * {\n * x_min: 48,\n * x_max: 235,\n * y_min: -17,\n * y_max: 734,\n * ha: 751,\n * leftSideBearing: 48,\n * advanceWidth: 286,\n * }\n * ```\n */\n this.glyphs = {};\n this.serifs = false;\n this.monospaced = false;\n this.italic = false;\n this.bold = false;\n this.superscriptOffset = 0;\n this.subscriptOffset = 0;\n this.maxSizeGlyph = 'H';\n // This is an internal key used to index the `textWidthCache`.\n this.cacheKey = '';\n this.updateParams(formatterInfo);\n }\n /**\n * Return all registered font families.\n */\n static getFontFamilies() {\n const registeredFonts = [];\n for (const fontFamily in registry) {\n const formatterInfo = registry[fontFamily];\n registeredFonts.push(Object.assign({}, formatterInfo));\n }\n return registeredFonts;\n }\n /**\n * Call `TextFormatter.registerInfo(info)` to register font information before using this method.\n *\n * This method creates a formatter for the font that most closely matches the requested font.\n * We compare font family, bold, and italic attributes.\n * This method will return a fallback formatter if there are no matches.\n */\n static create(requestedFont = {}) {\n L('create: ', requestedFont);\n if (!requestedFont.family) {\n requestedFont.family = Font.SANS_SERIF;\n }\n // TODO: One potential (small) optimization is to cache the TextFormatter object\n // returned for each font info. We would probably want to clear the cache if\n // the registry is ever updated.\n const candidates = [];\n // The incoming font family is a string of comma-separated font family names.\n // (e.g., `PetalumaScript, Arial, sans-serif`).\n const requestedFamilies = requestedFont.family.split(/\\s*,\\s*/);\n for (const requestedFamily of requestedFamilies) {\n for (const fontFamily in registry) {\n // Support cases where the registry contains 'Roboto Slab Medium',\n // but the requestedFont.family is 'Roboto Slab'.\n if (fontFamily.startsWith(requestedFamily)) {\n candidates.push(registry[fontFamily]);\n }\n }\n if (candidates.length > 0) {\n break;\n }\n }\n let formatter;\n if (candidates.length === 0) {\n // No match, so return a fallback text formatter.\n formatter = new TextFormatter(Object.values(registry)[0]);\n }\n else if (candidates.length === 1) {\n formatter = new TextFormatter(candidates[0]);\n }\n else {\n const bold = Font.isBold(requestedFont.weight);\n const italic = Font.isItalic(requestedFont.style);\n const perfectMatch = candidates.find((f) => f.bold === bold && f.italic === italic);\n if (perfectMatch) {\n formatter = new TextFormatter(perfectMatch);\n }\n else {\n const partialMatch = candidates.find((f) => f.italic === italic || f.bold === bold);\n if (partialMatch) {\n formatter = new TextFormatter(partialMatch);\n }\n else {\n formatter = new TextFormatter(candidates[0]);\n }\n }\n }\n const fontSize = requestedFont.size;\n if (typeof fontSize !== 'undefined') {\n const fontSizeInPt = Font.convertSizeToPointValue(fontSize);\n formatter.setFontSize(fontSizeInPt);\n }\n return formatter;\n }\n /**\n * @param fontFamily used as a key to the font registry.\n * @returns the same info object that was passed in via `TextFormatter.registerInfo(info)`\n */\n static getInfo(fontFamily) {\n return registry[fontFamily];\n }\n /**\n * Apps may register their own fonts and metrics, and those metrics\n * will be available to the app for formatting.\n *\n * Metrics can be generated from a font file using fontgen_text.js in the tools/fonts directory.\n * @param info\n * @param overwrite\n */\n static registerInfo(info, overwrite = false) {\n L('registerInfo: ', info, overwrite);\n const fontFamily = info.family;\n const currFontInfo = registry[fontFamily];\n if (currFontInfo === undefined || overwrite) {\n registry[fontFamily] = info;\n }\n }\n updateParams(params) {\n if (params.family)\n this.family = params.family;\n if (params.resolution)\n this.resolution = params.resolution;\n if (params.glyphs)\n this.glyphs = params.glyphs;\n if (params.serifs)\n this.serifs = params.serifs;\n if (params.monospaced)\n this.monospaced = params.monospaced;\n if (params.italic)\n this.italic = params.italic;\n if (params.bold)\n this.bold = params.bold;\n if (params.maxSizeGlyph)\n this.maxSizeGlyph = params.maxSizeGlyph;\n if (params.superscriptOffset)\n this.superscriptOffset = params.superscriptOffset;\n if (params.subscriptOffset)\n this.subscriptOffset = params.subscriptOffset;\n this.updateCacheKey();\n }\n /** Create a hash with the current font data, so we can cache computed widths. */\n updateCacheKey() {\n const family = this.family.replace(/\\s+/g, '_');\n const size = this.size;\n const weight = this.bold ? FontWeight.BOLD : FontWeight.NORMAL;\n const style = this.italic ? FontStyle.ITALIC : FontStyle.NORMAL;\n // Use the same key format as SVGContext.\n this.cacheKey = `${family}%${size}%${weight}%${style}`;\n }\n /**\n * The glyphs table is indexed by the character (e.g., 'C', '@').\n * See: robotoslab_glyphs.ts & petalumascript_glyphs.ts.\n */\n getGlyphMetrics(character) {\n if (this.glyphs[character]) {\n return this.glyphs[character];\n }\n else {\n return this.glyphs[this.maxSizeGlyph];\n }\n }\n get maxHeight() {\n const metrics = this.getGlyphMetrics(this.maxSizeGlyph);\n return (metrics.ha / this.resolution) * this.fontSizeInPixels;\n }\n /**\n * Retrieve the character's advanceWidth as a fraction of an `em` unit.\n * For the space character ' ' as defined in the:\n * petalumascript_glyphs.ts: 250 advanceWidth in the 1000 unitsPerEm font returns 0.25.\n * robotoslab_glyphs.ts: 509 advanceWidth in the 2048 unitsPerEm font returns 0.2485.\n */\n getWidthForCharacterInEm(c) {\n var _a;\n const metrics = this.getGlyphMetrics(c);\n if (!metrics) {\n // An arbitrary number, close to the `em` width of the '#' and '5' characters in PetalumaScript.\n return 0.65;\n }\n else {\n const advanceWidth = (_a = metrics.advanceWidth) !== null && _a !== void 0 ? _a : 0;\n return advanceWidth / this.resolution;\n }\n }\n /**\n * Retrieve the total width of `text` in `em` units.\n */\n getWidthForTextInEm(text) {\n const key = this.cacheKey;\n // Get the cache for this specific font family, size, weight, style combination.\n // The cache contains previously computed widths for different `text` strings.\n let cachedWidths = textWidthCache[key];\n if (cachedWidths === undefined) {\n cachedWidths = {};\n textWidthCache[key] = cachedWidths;\n }\n let width = cachedWidths[text];\n if (width === undefined) {\n width = 0;\n for (let i = 0; i < text.length; ++i) {\n width += this.getWidthForCharacterInEm(text[i]);\n }\n cachedWidths[text] = width;\n }\n return width;\n }\n /** The width of the text (in `em`) is scaled by the font size (in `px`). */\n getWidthForTextInPx(text) {\n return this.getWidthForTextInEm(text) * this.fontSizeInPixels;\n }\n /**\n * @param size in pt.\n */\n setFontSize(size) {\n this.size = size;\n // The width cache key depends on the current font size.\n this.updateCacheKey();\n return this;\n }\n /** `this.size` is specified in points. Convert to pixels. */\n get fontSizeInPixels() {\n return this.size * Font.scaleToPxFrom.pt;\n }\n getResolution() {\n return this.resolution;\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.TextFormatter.DEBUG` to `true`. */\nTextFormatter.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category, isStemmableNote, isTabNote } from './typeguard';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Annotation.DEBUG)\n log('Vex.Flow.Annotation', args);\n}\nexport var AnnotationHorizontalJustify;\n(function (AnnotationHorizontalJustify) {\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"LEFT\"] = 1] = \"LEFT\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"CENTER\"] = 2] = \"CENTER\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"RIGHT\"] = 3] = \"RIGHT\";\n AnnotationHorizontalJustify[AnnotationHorizontalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(AnnotationHorizontalJustify || (AnnotationHorizontalJustify = {}));\nexport var AnnotationVerticalJustify;\n(function (AnnotationVerticalJustify) {\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"TOP\"] = 1] = \"TOP\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"CENTER\"] = 2] = \"CENTER\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"BOTTOM\"] = 3] = \"BOTTOM\";\n AnnotationVerticalJustify[AnnotationVerticalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(AnnotationVerticalJustify || (AnnotationVerticalJustify = {}));\n/**\n * Annotations are modifiers that can be attached to\n * notes.\n *\n * See `tests/annotation_tests.ts` for usage examples.\n */\nexport class Annotation extends Modifier {\n /**\n * Annotations inherit from `Modifier` and is positioned correctly when\n * in a `ModifierContext`.\n * Create a new `Annotation` with the string `text`.\n */\n constructor(text) {\n super();\n this.text = text;\n this.horizontalJustification = AnnotationHorizontalJustify.CENTER;\n // warning: the default in the constructor is TOP, but in the factory the default is BOTTOM.\n // this is to support legacy application that may expect this.\n this.verticalJustification = AnnotationVerticalJustify.TOP;\n this.resetFont();\n // The default width is calculated from the text.\n this.setWidth(Tables.textWidth(text));\n }\n /** Annotations category string. */\n static get CATEGORY() {\n return Category.Annotation;\n }\n // Use the same padding for annotations as note head so the\n // words don't run into each other.\n static get minAnnotationPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Arrange annotations within a `ModifierContext` */\n static format(annotations, state) {\n if (!annotations || annotations.length === 0)\n return false;\n let leftWidth = 0;\n let rightWidth = 0;\n let maxLeftGlyphWidth = 0;\n let maxRightGlyphWidth = 0;\n for (let i = 0; i < annotations.length; ++i) {\n const annotation = annotations[i];\n const textFormatter = TextFormatter.create(annotation.textFont);\n // Text height is expressed in fractional stave spaces.\n const textLines = (5 + textFormatter.maxHeight) / Tables.STAVE_LINE_DISTANCE;\n let verticalSpaceNeeded = textLines;\n const note = annotation.checkAttachedNote();\n const glyphWidth = note.getGlyph().getWidth();\n // Get the text width from the font metrics.\n const textWidth = textFormatter.getWidthForTextInPx(annotation.text);\n if (annotation.horizontalJustification === AnnotationHorizontalJustify.LEFT) {\n maxLeftGlyphWidth = Math.max(glyphWidth, maxLeftGlyphWidth);\n leftWidth = Math.max(leftWidth, textWidth) + Annotation.minAnnotationPadding;\n }\n else if (annotation.horizontalJustification === AnnotationHorizontalJustify.RIGHT) {\n maxRightGlyphWidth = Math.max(glyphWidth, maxRightGlyphWidth);\n rightWidth = Math.max(rightWidth, textWidth);\n }\n else {\n leftWidth = Math.max(leftWidth, textWidth / 2) + Annotation.minAnnotationPadding;\n rightWidth = Math.max(rightWidth, textWidth / 2);\n maxLeftGlyphWidth = Math.max(glyphWidth / 2, maxLeftGlyphWidth);\n maxRightGlyphWidth = Math.max(glyphWidth / 2, maxRightGlyphWidth);\n }\n const stave = note.getStave();\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let stemHeight = 0;\n let lines = 5;\n if (isTabNote(note)) {\n if (note.render_options.draw_stem) {\n const stem = note.getStem();\n if (stem) {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n else {\n stemHeight = 0;\n }\n }\n else if (isStemmableNote(note)) {\n const stem = note.getStem();\n if (stem && note.getNoteType() === 'n') {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n if (stave) {\n lines = stave.getNumLines();\n }\n if (annotation.verticalJustification === this.VerticalJustify.TOP) {\n let noteLine = note.getLineNumber(true);\n if (isTabNote(note)) {\n noteLine = lines - (note.leastString() - 0.5);\n }\n if (stemDirection === Stem.UP) {\n noteLine += stemHeight;\n }\n const curTop = noteLine + state.top_text_line + 0.5;\n if (curTop < lines) {\n annotation.setTextLine(lines - noteLine);\n verticalSpaceNeeded += lines - noteLine;\n state.top_text_line = verticalSpaceNeeded;\n }\n else {\n annotation.setTextLine(state.top_text_line);\n state.top_text_line += verticalSpaceNeeded;\n }\n }\n else if (annotation.verticalJustification === this.VerticalJustify.BOTTOM) {\n let noteLine = lines - note.getLineNumber();\n if (isTabNote(note)) {\n noteLine = note.greatestString() - 1;\n }\n if (stemDirection === Stem.DOWN) {\n noteLine += stemHeight;\n }\n const curBottom = noteLine + state.text_line + 1;\n if (curBottom < lines) {\n annotation.setTextLine(lines - curBottom);\n verticalSpaceNeeded += lines - curBottom;\n state.text_line = verticalSpaceNeeded;\n }\n else {\n annotation.setTextLine(state.text_line);\n state.text_line += verticalSpaceNeeded;\n }\n }\n else {\n annotation.setTextLine(state.text_line);\n }\n }\n const rightOverlap = Math.min(Math.max(rightWidth - maxRightGlyphWidth, 0), Math.max(rightWidth - state.right_shift, 0));\n const leftOverlap = Math.min(Math.max(leftWidth - maxLeftGlyphWidth, 0), Math.max(leftWidth - state.left_shift, 0));\n state.left_shift += leftOverlap;\n state.right_shift += rightOverlap;\n return true;\n }\n /**\n * Set vertical position of text (above or below stave).\n * @param just value in `AnnotationVerticalJustify`.\n */\n setVerticalJustification(just) {\n this.verticalJustification = typeof just === 'string' ? Annotation.VerticalJustifyString[just] : just;\n return this;\n }\n /**\n * Get horizontal justification.\n */\n getJustification() {\n return this.horizontalJustification;\n }\n /**\n * Set horizontal justification.\n * @param justification value in `Annotation.Justify`.\n */\n setJustification(just) {\n this.horizontalJustification = typeof just === 'string' ? Annotation.HorizontalJustifyString[just] : just;\n return this;\n }\n /** Render text beside the note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n const textFormatter = TextFormatter.create(this.textFont);\n const start = note.getModifierStartXY(ModifierPosition.ABOVE, this.index);\n this.setRendered();\n // We're changing context parameters. Save current state.\n ctx.save();\n // Apply style might not save context, if this.style is undefined, so we\n // still need to save context state just before this, since we will be\n // changing ctx parameters below.\n this.applyStyle();\n ctx.openGroup('annotation', this.getAttribute('id'));\n ctx.setFont(this.textFont);\n const text_width = ctx.measureText(this.text).width;\n const text_height = textFormatter.maxHeight + 2;\n let x;\n let y;\n if (this.horizontalJustification === AnnotationHorizontalJustify.LEFT) {\n x = start.x;\n }\n else if (this.horizontalJustification === AnnotationHorizontalJustify.RIGHT) {\n x = start.x - text_width;\n }\n else if (this.horizontalJustification === AnnotationHorizontalJustify.CENTER) {\n x = start.x - text_width / 2;\n } /* CENTER_STEM */\n else {\n x = note.getStemX() - text_width / 2;\n }\n let stem_ext = {};\n let spacing = 0;\n const has_stem = note.hasStem();\n const stave = note.checkStave();\n // The position of the text varies based on whether or not the note\n // has a stem.\n if (has_stem) {\n stem_ext = note.checkStem().getExtents();\n spacing = stave.getSpacingBetweenLines();\n }\n if (this.verticalJustification === AnnotationVerticalJustify.BOTTOM) {\n // Use the largest (lowest) Y value\n const ys = note.getYs();\n y = ys.reduce((a, b) => (a > b ? a : b));\n y += (this.text_line + 1) * Tables.STAVE_LINE_DISTANCE + text_height;\n if (has_stem && stemDirection === Stem.DOWN) {\n y = Math.max(y, stem_ext.topY + text_height + spacing * this.text_line);\n }\n }\n else if (this.verticalJustification === AnnotationVerticalJustify.CENTER) {\n const yt = note.getYForTopText(this.text_line) - 1;\n const yb = stave.getYForBottomText(this.text_line);\n y = yt + (yb - yt) / 2 + text_height / 2;\n }\n else if (this.verticalJustification === AnnotationVerticalJustify.TOP) {\n y = note.getYs()[0] - (this.text_line + 1) * Tables.STAVE_LINE_DISTANCE;\n if (has_stem && stemDirection === Stem.UP) {\n // If the stem is above the stave already, go with default line width vs. actual\n // since the lines between don't really matter.\n spacing = stem_ext.topY < stave.getTopLineTopY() ? Tables.STAVE_LINE_DISTANCE : spacing;\n y = Math.min(y, stem_ext.topY - spacing * (this.text_line + 1));\n }\n } /* CENTER_STEM */\n else {\n const extents = note.getStemExtents();\n y = extents.topY + (extents.baseY - extents.topY) / 2 + text_height / 2;\n }\n L('Rendering annotation: ', this.text, x, y);\n ctx.fillText(this.text, x, y);\n ctx.closeGroup();\n this.restoreStyle();\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Annotation.DEBUG` to `true`. */\nAnnotation.DEBUG = false;\nAnnotation.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n/** Text annotations can be positioned and justified relative to the note. */\nAnnotation.HorizontalJustify = AnnotationHorizontalJustify;\nAnnotation.HorizontalJustifyString = {\n left: AnnotationHorizontalJustify.LEFT,\n right: AnnotationHorizontalJustify.RIGHT,\n center: AnnotationHorizontalJustify.CENTER,\n centerStem: AnnotationHorizontalJustify.CENTER_STEM,\n};\nAnnotation.VerticalJustify = AnnotationVerticalJustify;\nAnnotation.VerticalJustifyString = {\n above: AnnotationVerticalJustify.TOP,\n top: AnnotationVerticalJustify.TOP,\n below: AnnotationVerticalJustify.BOTTOM,\n bottom: AnnotationVerticalJustify.BOTTOM,\n center: AnnotationVerticalJustify.CENTER,\n centerStem: AnnotationVerticalJustify.CENTER_STEM,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns.\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isGraceNote, isStaveNote, isStemmableNote, isTabNote } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Articulation.DEBUG)\n log('Vex.Flow.Articulation', args);\n}\nconst { ABOVE, BELOW } = Modifier.Position;\nfunction roundToNearestHalf(mathFn, value) {\n return mathFn(value / 0.5) * 0.5;\n}\n// This includes both staff and ledger lines\nfunction isWithinLines(line, position) {\n return position === ABOVE ? line <= 5 : line >= 1;\n}\nfunction getRoundingFunction(line, position) {\n if (isWithinLines(line, position)) {\n if (position === ABOVE) {\n return Math.ceil;\n }\n else {\n return Math.floor;\n }\n }\n else {\n return Math.round;\n }\n}\nfunction snapLineToStaff(canSitBetweenLines, line, position, offsetDirection) {\n // Initially, snap to nearest staff line or space\n const snappedLine = roundToNearestHalf(getRoundingFunction(line, position), line);\n const canSnapToStaffSpace = canSitBetweenLines && isWithinLines(snappedLine, position);\n const onStaffLine = snappedLine % 1 === 0;\n if (canSnapToStaffSpace && onStaffLine) {\n const HALF_STAFF_SPACE = 0.5;\n return snappedLine + HALF_STAFF_SPACE * -offsetDirection;\n }\n else {\n return snappedLine;\n }\n}\n// Helper function for checking if a Note object is either a StaveNote or a GraceNote.\nconst isStaveOrGraceNote = (note) => isStaveNote(note) || isGraceNote(note);\nfunction getTopY(note, textLine) {\n const stemDirection = note.getStemDirection();\n const { topY: stemTipY, baseY: stemBaseY } = note.getStemExtents();\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemTipY;\n }\n else {\n return stemBaseY;\n }\n }\n else {\n return Math.min(...note.getYs());\n }\n }\n else if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemTipY;\n }\n else {\n return note.checkStave().getYForTopText(textLine);\n }\n }\n else {\n return note.checkStave().getYForTopText(textLine);\n }\n }\n else {\n throw new RuntimeError('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes');\n }\n}\nfunction getBottomY(note, textLine) {\n const stemDirection = note.getStemDirection();\n const { topY: stemTipY, baseY: stemBaseY } = note.getStemExtents();\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return stemBaseY;\n }\n else {\n return stemTipY;\n }\n }\n else {\n return Math.max(...note.getYs());\n }\n }\n else if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDirection === Stem.UP) {\n return note.checkStave().getYForBottomText(textLine);\n }\n else {\n return stemTipY;\n }\n }\n else {\n return note.checkStave().getYForBottomText(textLine);\n }\n }\n else {\n throw new RuntimeError('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes');\n }\n}\n/**\n * Get the initial offset of the articulation from the y value of the starting position.\n * This is required because the top/bottom text positions already have spacing applied to\n * provide a \"visually pleasant\" default position. However the y values provided from\n * the stavenote's top/bottom do *not* have any pre-applied spacing. This function\n * normalizes this asymmetry.\n * @param note\n * @param position\n * @returns\n */\nfunction getInitialOffset(note, position) {\n const isOnStemTip = (position === ABOVE && note.getStemDirection() === Stem.UP) ||\n (position === BELOW && note.getStemDirection() === Stem.DOWN);\n if (isStaveOrGraceNote(note)) {\n if (note.hasStem() && isOnStemTip) {\n return 0.5;\n }\n else {\n // this amount is larger than the stem-tip offset because we start from\n // the center of the notehead\n return 1;\n }\n }\n else {\n if (note.hasStem() && isOnStemTip) {\n return 1;\n }\n else {\n return 0;\n }\n }\n}\n/**\n * Articulations and Accents are modifiers that can be\n * attached to notes. The complete list of articulations is available in\n * `tables.ts` under `Vex.Flow.articulationCodes`.\n *\n * See `tests/articulation_tests.ts` for usage examples.\n */\nexport class Articulation extends Modifier {\n /**\n * Create a new articulation.\n * @param type entry in `Vex.Flow.articulationCodes` in `tables.ts`\n */\n constructor(type) {\n super();\n this.type = type;\n this.position = BELOW;\n this.render_options = {\n font_scale: 38,\n };\n this.reset();\n }\n /** Articulations category string. */\n static get CATEGORY() {\n return Category.Articulation;\n }\n /**\n * FIXME:\n * Most of the complex formatting logic (ie: snapping to space) is\n * actually done in .render(). But that logic belongs in this method.\n *\n * Unfortunately, this isn't possible because, by this point, stem lengths\n * have not yet been finalized. Finalized stem lengths are required to determine the\n * initial position of any stem-side articulation.\n *\n * This indicates that all objects should have their stave set before being\n * formatted. It can't be an optional if you want accurate vertical positioning.\n * Consistently positioned articulations that play nice with other modifiers\n * won't be possible until we stop relying on render-time formatting.\n *\n * Ideally, when this function has completed, the vertical articulation positions\n * should be ready to render without further adjustment. But the current state\n * is far from this ideal.\n */\n static format(articulations, state) {\n if (!articulations || articulations.length === 0)\n return false;\n const margin = 0.5;\n let maxGlyphWidth = 0;\n const getIncrement = (articulation, line, position) => roundToNearestHalf(getRoundingFunction(line, position), defined(articulation.glyph.getMetrics().height) / 10 + margin);\n articulations.forEach((articulation) => {\n const note = articulation.checkAttachedNote();\n maxGlyphWidth = Math.max(note.getGlyph().getWidth(), maxGlyphWidth);\n let lines = 5;\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let stemHeight = 0;\n // Decide if we need to consider beam direction in placement.\n if (isStemmableNote(note)) {\n const stem = note.getStem();\n if (stem) {\n stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE;\n }\n }\n const stave = note.getStave();\n if (stave) {\n lines = stave.getNumLines();\n }\n if (articulation.getPosition() === ABOVE) {\n let noteLine = note.getLineNumber(true);\n if (stemDirection === Stem.UP) {\n noteLine += stemHeight;\n }\n let increment = getIncrement(articulation, state.top_text_line, ABOVE);\n const curTop = noteLine + state.top_text_line + 0.5;\n // If articulation must be above stave, add lines between note and stave top\n if (!articulation.articulation.between_lines && curTop < lines) {\n increment += lines - curTop;\n }\n articulation.setTextLine(state.top_text_line);\n state.top_text_line += increment;\n }\n else if (articulation.getPosition() === BELOW) {\n let noteLine = Math.max(lines - note.getLineNumber(), 0);\n if (stemDirection === Stem.DOWN) {\n noteLine += stemHeight;\n }\n let increment = getIncrement(articulation, state.text_line, BELOW);\n const curBottom = noteLine + state.text_line + 0.5;\n // if articulation must be below stave, add lines from note to stave bottom\n if (!articulation.articulation.between_lines && curBottom < lines) {\n increment += lines - curBottom;\n }\n articulation.setTextLine(state.text_line);\n state.text_line += increment;\n }\n });\n const width = articulations\n .map((articulation) => articulation.getWidth())\n .reduce((maxWidth, articWidth) => Math.max(articWidth, maxWidth));\n const overlap = Math.min(Math.max(width - maxGlyphWidth, 0), Math.max(width - (state.left_shift + state.right_shift), 0));\n state.left_shift += overlap / 2;\n state.right_shift += overlap / 2;\n return true;\n }\n static easyScoreHook({ articulations }, note, builder) {\n if (!articulations)\n return;\n const articNameToCode = {\n staccato: 'a.',\n tenuto: 'a-',\n accent: 'a>',\n };\n articulations\n .split(',')\n .map((articString) => articString.trim().split('.'))\n .map(([name, position]) => {\n const artic = { type: articNameToCode[name] };\n if (position)\n artic.position = Modifier.PositionString[position];\n return builder.getFactory().Articulation(artic);\n })\n .map((artic) => note.addModifier(artic, 0));\n }\n reset() {\n this.articulation = Tables.articulationCodes(this.type);\n const articulation = defined(this.articulation, 'ArgumentError', `Articulation not found: ${this.type}`);\n const code = (this.position === ABOVE ? articulation.aboveCode : articulation.belowCode) || articulation.code;\n this.glyph = new Glyph(code !== null && code !== void 0 ? code : '', this.render_options.font_scale);\n this.setWidth(defined(this.glyph.getMetrics().width));\n }\n /** Render articulation in position next to note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const index = this.checkIndex();\n const { position, glyph, text_line: textLine } = this;\n const canSitBetweenLines = this.articulation.between_lines;\n const stave = note.checkStave();\n const staffSpace = stave.getSpacingBetweenLines();\n const isTab = isTabNote(note);\n // Articulations are centered over/under the note head.\n const { x } = note.getModifierStartXY(position, index);\n const shouldSitOutsideStaff = !canSitBetweenLines || isTab;\n const initialOffset = getInitialOffset(note, position);\n const padding = Tables.currentMusicFont().lookupMetric(`articulation.${glyph.getCode()}.padding`, 0);\n let y = {\n [ABOVE]: () => {\n glyph.setOrigin(0.5, 1);\n const y = getTopY(note, textLine) - (textLine + initialOffset) * staffSpace;\n return shouldSitOutsideStaff ? Math.min(stave.getYForTopText(Articulation.INITIAL_OFFSET), y) : y;\n },\n [BELOW]: () => {\n glyph.setOrigin(0.5, 0);\n const y = getBottomY(note, textLine) + (textLine + initialOffset) * staffSpace;\n return shouldSitOutsideStaff ? Math.max(stave.getYForBottomText(Articulation.INITIAL_OFFSET), y) : y;\n },\n }[position]();\n if (!isTab) {\n const offsetDirection = position === ABOVE ? -1 : +1;\n const noteLine = note.getKeyProps()[index].line;\n const distanceFromNote = (note.getYs()[index] - y) / staffSpace;\n const articLine = distanceFromNote + Number(noteLine);\n const snappedLine = snapLineToStaff(canSitBetweenLines, articLine, position, offsetDirection);\n if (isWithinLines(snappedLine, position))\n glyph.setOrigin(0.5, 0.5);\n y += Math.abs(snappedLine - articLine) * staffSpace * offsetDirection + padding * offsetDirection;\n }\n L(`Rendering articulation at (x: ${x}, y: ${y})`);\n glyph.render(ctx, x, y);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Articulation.DEBUG` to `true`. */\nArticulation.DEBUG = false;\nArticulation.INITIAL_OFFSET = -0.5;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2021.\n// MIT License\nimport { Category } from './typeguard';\nexport class RenderContext {\n static get CATEGORY() {\n return Category.RenderContext;\n }\n set font(f) {\n this.setFont(f);\n }\n get font() {\n return this.getFont();\n }\n /**\n * This is kept for backwards compatibility with 3.0.9.\n * @deprecated use `setFont(...)` instead since it now supports CSS font shorthand.\n */\n setRawFont(f) {\n this.setFont(f);\n return this;\n }\n}\n/**\n * Draw a tiny dot marker on the specified context. A great debugging aid.\n * @param ctx context\n * @param x dot x coordinate\n * @param y dot y coordinate\n * @param color\n */\nexport function drawDot(ctx, x, y, color = '#F55') {\n ctx.save();\n ctx.setFillStyle(color);\n // draw a circle\n ctx.beginPath();\n ctx.arc(x, y, 3, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n ctx.restore();\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\n/**\n * Tickable represents a element that sit on a score and\n * has a duration, i.e., Tickables occupy space in the musical rendering dimension.\n */\nexport class Tickable extends Element {\n constructor() {\n super();\n this._preFormatted = false;\n this._postFormatted = false;\n // These properties represent the duration of\n // this tickable element.\n this.ticks = new Fraction(0, 1); // Fractional value of ticks\n this.intrinsicTicks = 0; // Floating point value of ticks\n this.tickMultiplier = new Fraction(1, 1);\n // Formatter metrics\n this.width = 0;\n this.x_shift = 0; // Shift from tick context\n this.modifiers = [];\n this.tupletStack = [];\n this.align_center = false;\n this.center_x_shift = 0; // Shift from tick context if center aligned\n // This flag tells the formatter to ignore this tickable during\n // formatting and justification. It is set by tickables such as BarNote.\n this.ignore_ticks = false;\n // This is a space for an external formatting class or function to maintain\n // metrics.\n this.formatterMetrics = {\n // The freedom of a tickable is the distance it can move without colliding\n // with neighboring elements. A formatter can set these values during its\n // formatting pass, which a different formatter can then use to fine tune.\n freedom: { left: 0, right: 0 },\n // The simplified rational duration of this tick as a string. It can be\n // used as an index to a map or hashtable.\n duration: '',\n // The number of formatting iterations undergone.\n iterations: 0,\n // The space in pixels allocated by this formatter, along with the mean space\n // for tickables of this duration, and the deviation from the mean.\n space: {\n used: 0,\n mean: 0,\n deviation: 0,\n },\n };\n }\n static get CATEGORY() {\n return Category.Tickable;\n }\n /** Reset the Tickable, this function will be overloaded. */\n reset() {\n return this;\n }\n /** Return the ticks. */\n getTicks() {\n return this.ticks;\n }\n /** Check if it ignores the ticks. */\n shouldIgnoreTicks() {\n return this.ignore_ticks;\n }\n /** Ignore the ticks. */\n setIgnoreTicks(flag) {\n this.ignore_ticks = flag;\n return this;\n }\n /** Set width of note. Used by the formatter for positioning. */\n setWidth(width) {\n this.width = width;\n }\n /** Get width of note. Used by the formatter for positioning. */\n getWidth() {\n if (!this._preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetWidth on an unformatted note.\");\n }\n return this.width + (this.modifierContext ? this.modifierContext.getWidth() : 0);\n }\n /** Displace note by `x` pixels. Used by the formatter. */\n setXShift(x) {\n this.x_shift = x;\n return this;\n }\n /** Get the `x` displaced pixels of the note. */\n getXShift() {\n return this.x_shift;\n }\n /** Get `x` position of this tick context. */\n getX() {\n const tickContext = this.checkTickContext(`Can't getX() without a TickContext.`);\n return tickContext.getX() + this.x_shift;\n }\n /** Return the formatterMetrics. */\n getFormatterMetrics() {\n return this.formatterMetrics;\n }\n /** Return the center `x` shift. */\n getCenterXShift() {\n if (this.isCenterAligned()) {\n return this.center_x_shift;\n }\n return 0;\n }\n /** Set the center `x` shift. */\n setCenterXShift(centerXShift) {\n this.center_x_shift = centerXShift;\n return this;\n }\n // Check if tickable is center aligned. */\n isCenterAligned() {\n return this.align_center;\n }\n // Set/unset center alignment. */\n setCenterAlignment(align_center) {\n this.align_center = align_center;\n return this;\n }\n /**\n * Return the associated voice. Every tickable must be associated with a voice.\n * This allows formatters and preFormatter to associate them with the right modifierContexts.\n */\n getVoice() {\n return defined(this.voice, 'NoVoice', 'Tickable has no voice.');\n }\n /** Set the associated voice. */\n setVoice(voice) {\n this.voice = voice;\n }\n /** Get the tuplet. */\n getTuplet() {\n return this.tuplet;\n }\n /** Return the intrinsic ticks. */\n getTupletStack() {\n return this.tupletStack;\n }\n /**\n * Reset the specific Tuplet if this is not provided, all tuplets are reset.\n * Remove any prior tuplets from the tick calculation and\n * reset the intrinsic tick value.\n */\n resetTuplet(tuplet) {\n let noteCount;\n let notesOccupied;\n if (tuplet) {\n const i = this.tupletStack.indexOf(tuplet);\n if (i !== -1) {\n this.tupletStack.splice(i, 1);\n noteCount = tuplet.getNoteCount();\n notesOccupied = tuplet.getNotesOccupied();\n // Revert old multiplier by inverting numerator & denom.:\n this.applyTickMultiplier(noteCount, notesOccupied);\n }\n return this;\n }\n while (this.tupletStack.length) {\n tuplet = this.tupletStack.pop();\n noteCount = tuplet.getNoteCount();\n notesOccupied = tuplet.getNotesOccupied();\n // Revert old multiplier by inverting numerator & denom.:\n this.applyTickMultiplier(noteCount, notesOccupied);\n }\n return this;\n }\n /** Attach to new tuplet. */\n setTuplet(tuplet) {\n if (tuplet) {\n this.tupletStack.push(tuplet);\n const noteCount = tuplet.getNoteCount();\n const notesOccupied = tuplet.getNotesOccupied();\n this.applyTickMultiplier(notesOccupied, noteCount);\n }\n this.tuplet = tuplet;\n return this;\n }\n /**\n * Add self to the provided ModifierContext `mc`.\n * If this tickable has modifiers, set modifierContext.\n * @returns this\n */\n addToModifierContext(mc) {\n this.modifierContext = mc;\n for (let i = 0; i < this.modifiers.length; ++i) {\n this.modifierContext.addMember(this.modifiers[i]);\n }\n this.modifierContext.addMember(this);\n this._preFormatted = false;\n return this;\n }\n /**\n * Optional, if tickable has modifiers, associate a Modifier.\n * @param mod the modifier\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n addModifier(modifier, index = 0) {\n this.modifiers.push(modifier);\n this._preFormatted = false;\n return this;\n }\n /** Get the list of associated modifiers. */\n getModifiers() {\n return this.modifiers;\n }\n /** Set the Tick Context. */\n setTickContext(tc) {\n this.tickContext = tc;\n this._preFormatted = false;\n }\n checkTickContext(message = 'Tickable has no tick context.') {\n return defined(this.tickContext, 'NoTickContext', message);\n }\n /** Preformat the Tickable. */\n preFormat() {\n if (this._preFormatted)\n return;\n this.width = 0;\n if (this.modifierContext) {\n this.modifierContext.preFormat();\n this.width += this.modifierContext.getWidth();\n }\n }\n /** Set preformatted status. */\n set preFormatted(value) {\n this._preFormatted = value;\n }\n get preFormatted() {\n return this._preFormatted;\n }\n /** Postformat the Tickable. */\n postFormat() {\n if (this._postFormatted)\n return this;\n this._postFormatted = true;\n return this;\n }\n /** Set postformatted status. */\n set postFormatted(value) {\n this._postFormatted = value;\n }\n get postFormatted() {\n return this._postFormatted;\n }\n /** Return the intrinsic ticks. */\n getIntrinsicTicks() {\n return this.intrinsicTicks;\n }\n /** Set the intrinsic ticks. */\n setIntrinsicTicks(intrinsicTicks) {\n this.intrinsicTicks = intrinsicTicks;\n this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks);\n }\n /** Get the tick multiplier. */\n getTickMultiplier() {\n return this.tickMultiplier;\n }\n /** Apply a tick multiplier. */\n applyTickMultiplier(numerator, denominator) {\n this.tickMultiplier.multiply(numerator, denominator);\n this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks);\n }\n /** Set the duration. */\n setDuration(duration) {\n const ticks = duration.numerator * (Tables.RESOLUTION / duration.denominator);\n this.ticks = this.tickMultiplier.clone().multiply(ticks);\n this.intrinsicTicks = this.ticks.value();\n }\n getAbsoluteX() {\n const tickContext = this.checkTickContext(`Can't getAbsoluteX() without a TickContext.`);\n return tickContext.getX();\n }\n /** Attach this note to a modifier context. */\n setModifierContext(mc) {\n this.modifierContext = mc;\n return this;\n }\n /** Get `ModifierContext`. */\n getModifierContext() {\n return this.modifierContext;\n }\n /** Check and get `ModifierContext`. */\n checkModifierContext() {\n return defined(this.modifierContext, 'NoModifierContext', 'No modifier context attached to this tickable.');\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from './font';\nimport { drawDot } from './rendercontext';\nimport { Tables } from './tables';\nimport { Tickable } from './tickable';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\n/**\n * Note implements an abstract interface for notes and chords that\n * are rendered on a stave. Notes have some common properties: All of them\n * have a value (e.g., pitch, fret, etc.) and a duration (quarter, half, etc.)\n *\n * Some notes have stems, heads, dots, etc. Most notational elements that\n * surround a note are called *modifiers*, and every note has an associated\n * array of them. All notes also have a rendering context and belong to a stave.\n */\nexport class Note extends Tickable {\n /**\n * Every note is a tickable, i.e., it can be mutated by the `Formatter` class for\n * positioning and layout.\n *\n * @param noteStruct To create a new note you need to provide a `noteStruct`.\n */\n constructor(noteStruct) {\n super();\n if (!noteStruct) {\n throw new RuntimeError('BadArguments', 'Note must have valid initialization data to identify duration and type.');\n }\n /** Parses `noteStruct` and get note properties. */\n const parsedNoteStruct = Note.parseNoteStruct(noteStruct);\n if (!parsedNoteStruct) {\n throw new RuntimeError('BadArguments', `Invalid note initialization object: ${JSON.stringify(noteStruct)}`);\n }\n // Set note properties from parameters.\n this.keys = noteStruct.keys || [];\n // per-pitch properties\n this.keyProps = [];\n this.duration = parsedNoteStruct.duration;\n this.noteType = parsedNoteStruct.type;\n this.customTypes = parsedNoteStruct.customTypes;\n if (noteStruct.duration_override) {\n // Custom duration\n this.setDuration(noteStruct.duration_override);\n }\n else {\n // Default duration\n this.setIntrinsicTicks(parsedNoteStruct.ticks);\n }\n this.modifiers = [];\n // Get the glyph code for this note from the font.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n this.customGlyphs = this.customTypes.map((t) => Tables.getGlyphProps(this.duration, t));\n // Note to play for audio players.\n this.playNote = undefined;\n // Positioning contexts used by the Formatter.\n this.ignore_ticks = false;\n // Positioning variables\n this.width = 0; // Width in pixels calculated after preFormat\n this.leftDisplacedHeadPx = 0; // Extra room on left for displaced note head\n this.rightDisplacedHeadPx = 0; // Extra room on right for displaced note head\n this.x_shift = 0; // X shift from tick context X\n this.ys = []; // list of y coordinates for each note\n // we need to hold on to these for ties and beams.\n if (noteStruct.align_center) {\n this.setCenterAlignment(noteStruct.align_center);\n }\n // The render surface.\n this.render_options = {\n annotation_spacing: 5,\n glyph_font_scale: 1,\n stroke_px: 1,\n scale: 1,\n font: '',\n y_shift: 0,\n };\n }\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // STATIC MEMBERS\n static get CATEGORY() {\n return Category.Note;\n }\n /** Debug helper. Displays various note metrics for the given note. */\n static plotMetrics(ctx, note, yPos) {\n const metrics = note.getMetrics();\n const xStart = note.getAbsoluteX() - metrics.modLeftPx - metrics.leftDisplacedHeadPx;\n const xPre1 = note.getAbsoluteX() - metrics.leftDisplacedHeadPx;\n const xAbs = note.getAbsoluteX();\n const xPost1 = note.getAbsoluteX() + metrics.notePx;\n const xPost2 = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx;\n const xEnd = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx + metrics.modRightPx;\n const xFreedomRight = xEnd + (note.getFormatterMetrics().freedom.right || 0);\n const xWidth = xEnd - xStart;\n ctx.save();\n ctx.setFont(Font.SANS_SERIF, 8);\n ctx.fillText(Math.round(xWidth) + 'px', xStart + note.getXShift(), yPos);\n const y = yPos + 7;\n function stroke(x1, x2, color, yy = y) {\n ctx.beginPath();\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n ctx.setLineWidth(3);\n ctx.moveTo(x1 + note.getXShift(), yy);\n ctx.lineTo(x2 + note.getXShift(), yy);\n ctx.stroke();\n }\n stroke(xStart, xPre1, 'red');\n stroke(xPre1, xAbs, '#999');\n stroke(xAbs, xPost1, 'green');\n stroke(xPost1, xPost2, '#999');\n stroke(xPost2, xEnd, 'red');\n stroke(xEnd, xFreedomRight, '#DD0');\n stroke(xStart - note.getXShift(), xStart, '#BBB'); // Shift\n drawDot(ctx, xAbs + note.getXShift(), y, 'blue');\n const formatterMetrics = note.getFormatterMetrics();\n if (formatterMetrics.iterations > 0) {\n const spaceDeviation = formatterMetrics.space.deviation;\n const prefix = spaceDeviation >= 0 ? '+' : '';\n ctx.setFillStyle('red');\n ctx.fillText(prefix + Math.round(spaceDeviation), xAbs + note.getXShift(), yPos - 10);\n }\n ctx.restore();\n }\n static parseDuration(durationString) {\n if (!durationString) {\n return undefined;\n }\n const regexp = /(\\d*\\/?\\d+|[a-z])(d*)([nrhms]|$)/;\n const result = regexp.exec(durationString);\n if (!result) {\n return undefined;\n }\n const duration = result[1];\n const dots = result[2].length;\n const type = result[3] || 'n';\n return { duration, dots, type };\n }\n static parseNoteStruct(noteStruct) {\n // Preserve backwards-compatibility\n const durationProps = Note.parseDuration(noteStruct.duration);\n if (!durationProps) {\n return undefined;\n }\n // If specified type is invalid, return undefined.\n let type = noteStruct.type;\n if (type && !Tables.validTypes[type]) {\n return undefined;\n }\n // If no type specified, check duration or custom types\n const customTypes = [];\n if (!type) {\n type = durationProps.type || 'n';\n // If we have keys, try and check if we've got a custom glyph\n if (noteStruct.keys !== undefined) {\n noteStruct.keys.forEach((k, i) => {\n const result = k.split('/');\n // We have a custom glyph specified after the note eg. /X2\n customTypes[i] = (result && result.length === 3 ? result[2] : type);\n });\n }\n }\n // Calculate the tick duration of the note\n let ticks = Tables.durationToTicks(durationProps.duration);\n if (!ticks) {\n return undefined;\n }\n // Are there any dots?\n const dots = noteStruct.dots ? noteStruct.dots : durationProps.dots;\n if (typeof dots !== 'number') {\n return undefined;\n }\n // Add ticks as necessary depending on the numbr of dots\n let currentTicks = ticks;\n for (let i = 0; i < dots; i++) {\n if (currentTicks <= 1)\n return undefined;\n currentTicks = currentTicks / 2;\n ticks += currentTicks;\n }\n return {\n duration: durationProps.duration,\n type,\n customTypes,\n dots,\n ticks,\n };\n }\n /**\n * Get the play note, which is arbitrary data that can be used by an\n * audio player.\n */\n getPlayNote() {\n return this.playNote;\n }\n /**\n * Set the play note, which is arbitrary data that can be used by an\n * audio player.\n */\n setPlayNote(note) {\n this.playNote = note;\n return this;\n }\n /**\n * @returns true if this note is a type of rest.\n *\n * Rests don't have pitches, but take up space in the score.\n * Subclasses should override this default implementation.\n */\n isRest() {\n return false;\n }\n /** Add stroke. */\n addStroke(index, stroke) {\n stroke.setNote(this);\n stroke.setIndex(index);\n this.modifiers.push(stroke);\n this.preFormatted = false;\n return this;\n }\n /** Get the target stave. */\n getStave() {\n return this.stave;\n }\n /** Check and get the target stave. */\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n /** Set the target stave. */\n setStave(stave) {\n this.stave = stave;\n this.setYs([stave.getYForLine(0)]); // Update Y values if the stave is changed.\n this.setContext(this.stave.getContext());\n return this;\n }\n /** Get spacing to the left of the notes. */\n getLeftDisplacedHeadPx() {\n return this.leftDisplacedHeadPx;\n }\n /** Get spacing to the right of the notes. */\n getRightDisplacedHeadPx() {\n return this.rightDisplacedHeadPx;\n }\n /** Set spacing to the left of the notes. */\n setLeftDisplacedHeadPx(x) {\n this.leftDisplacedHeadPx = x;\n return this;\n }\n /** Set spacing to the right of the notes. */\n setRightDisplacedHeadPx(x) {\n this.rightDisplacedHeadPx = x;\n return this;\n }\n /** True if this note has no duration (e.g., bar notes, spacers, etc.). */\n shouldIgnoreTicks() {\n return this.ignore_ticks;\n }\n /** Get the stave line number for the note. */\n // eslint-disable-next-line\n getLineNumber(isTopNote) {\n return 0;\n }\n /** Get the stave line number for rest. */\n getLineForRest() {\n return 0;\n }\n /** Get the glyph associated with this note. */\n // eslint-disable-next-line\n getGlyph() {\n return this.glyph;\n }\n /** Get the glyph width. */\n getGlyphWidth() {\n // TODO: FIXME (multiple potential values for this.glyph)\n if (this.glyph) {\n if (this.glyph.getMetrics) {\n return this.glyph.getMetrics().width;\n }\n else if (this.glyph.getWidth) {\n return this.glyph.getWidth(this.render_options.glyph_font_scale);\n }\n }\n return 0;\n }\n /**\n * Set Y positions for this note. Each Y value is associated with\n * an individual pitch/key within the note/chord.\n */\n setYs(ys) {\n this.ys = ys;\n return this;\n }\n /**\n * Get Y positions for this note. Each Y value is associated with\n * an individual pitch/key within the note/chord.\n */\n getYs() {\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-values calculated for this note.');\n }\n return this.ys;\n }\n /**\n * Get the Y position of the space above the stave onto which text can\n * be rendered.\n */\n getYForTopText(text_line) {\n return this.checkStave().getYForTopText(text_line);\n }\n /** Return the voice that this note belongs in. */\n getVoice() {\n if (!this.voice)\n throw new RuntimeError('NoVoice', 'Note has no voice.');\n return this.voice;\n }\n /** Attach this note to `voice`. */\n setVoice(voice) {\n this.voice = voice;\n this.preFormatted = false;\n return this;\n }\n /** Get the `TickContext` for this note. */\n getTickContext() {\n return this.checkTickContext();\n }\n /** Set the `TickContext` for this note. */\n setTickContext(tc) {\n this.tickContext = tc;\n this.preFormatted = false;\n return this;\n }\n /** Accessor to duration. */\n getDuration() {\n return this.duration;\n }\n /** Accessor to isDotted. */\n isDotted() {\n return this.getModifiersByType('Dot').length > 0;\n }\n /** Accessor to hasStem. */\n hasStem() {\n return false;\n }\n /** Accessor to note type. */\n getNoteType() {\n return this.noteType;\n }\n /** Get the beam. */\n getBeam() {\n return this.beam;\n }\n /** Check and get the beam. */\n checkBeam() {\n return defined(this.beam, 'NoBeam', 'No beam attached to instance');\n }\n /** Check it has a beam. */\n hasBeam() {\n return this.beam != undefined;\n }\n /** Set the beam. */\n setBeam(beam) {\n this.beam = beam;\n return this;\n }\n /**\n * Attach a modifier to this note.\n * @param modifier the Modifier to add.\n * @param index of the key to modify.\n * @returns this\n */\n addModifier(modifier, index = 0) {\n const signature = 'Note.addModifier(modifier: Modifier, index: number=0)';\n // Backwards compatibility with 3.0.9.\n if (typeof index === 'string') {\n index = parseInt(index);\n // eslint-disable-next-line\n console.warn(signature + ' expected a number for `index`, but received a string.');\n }\n // Some versions of VexFlow had the two parameters reversed.\n // Check here and throw an error if the argument types are not correct.\n if (typeof modifier !== 'object' || typeof index !== 'number') {\n throw new RuntimeError('WrongParams', 'Incorrect call signature. Use ' + signature + ' instead.');\n }\n modifier.setNote(this);\n modifier.setIndex(index);\n super.addModifier(modifier);\n return this;\n }\n /** Get all modifiers of a specific type in `this.modifiers`. */\n getModifiersByType(type) {\n return this.modifiers.filter((modifier) => modifier.getCategory() === type);\n }\n /** Get the coordinates for where modifiers begin. */\n // eslint-disable-next-line\n getModifierStartXY(position, index, options) {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n return {\n x: this.getAbsoluteX(),\n y: this.ys[0],\n };\n }\n getRightParenthesisPx(index) {\n const props = this.getKeyProps()[index];\n return props.displaced ? this.getRightDisplacedHeadPx() : 0;\n }\n getLeftParenthesisPx(index) {\n const props = this.getKeyProps()[index];\n return props.displaced ? this.getLeftDisplacedHeadPx() - this.x_shift : -this.x_shift;\n }\n getFirstDotPx() {\n let px = this.getRightDisplacedHeadPx();\n if (this.checkModifierContext().getMembers('Parenthesis').length !== 0)\n px += Tables.currentMusicFont().lookupMetric('parenthesis.default.width');\n return px;\n }\n /** Get the metrics for this note. */\n getMetrics() {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getMetrics on an unformatted note.\");\n }\n const modLeftPx = this.modifierContext ? this.modifierContext.getState().left_shift : 0;\n const modRightPx = this.modifierContext ? this.modifierContext.getState().right_shift : 0;\n const width = this.getWidth();\n const glyphWidth = this.getGlyphWidth();\n const notePx = width -\n modLeftPx - // subtract left modifiers\n modRightPx - // subtract right modifiers\n this.leftDisplacedHeadPx - // subtract left displaced head\n this.rightDisplacedHeadPx; // subtract right displaced head\n // NOTE: If you change this, remember to update MockTickable.getMetrics() in the tests/ directory.\n return {\n width,\n glyphWidth,\n notePx,\n // Modifier spacing.\n modLeftPx,\n modRightPx,\n // Displaced note head on left or right.\n leftDisplacedHeadPx: this.leftDisplacedHeadPx,\n rightDisplacedHeadPx: this.rightDisplacedHeadPx,\n glyphPx: 0,\n };\n }\n /**\n * Get the absolute `X` position of this note's tick context. This\n * excludes x_shift, so you'll need to factor it in if you're\n * looking for the post-formatted x-position.\n */\n getAbsoluteX() {\n const tickContext = this.checkTickContext(`Can't getAbsoluteX() without a TickContext.`);\n // Position note to left edge of tick context.\n let x = tickContext.getX();\n if (this.stave) {\n x += this.stave.getNoteStartX() + Tables.currentMusicFont().lookupMetric('stave.padding');\n }\n if (this.isCenterAligned()) {\n x += this.getCenterXShift();\n }\n return x;\n }\n /** Get the direction of the stem. */\n getStemDirection() {\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n }\n /** Get the top and bottom `y` values of the stem. */\n getStemExtents() {\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n }\n /** Get the `x` coordinate to the right of the note. */\n getTieRightX() {\n let tieStartX = this.getAbsoluteX();\n const note_glyph_width = this.glyph.getWidth();\n tieStartX += note_glyph_width / 2;\n tieStartX += -this.width / 2 + this.width + 2;\n return tieStartX;\n }\n /** Get the `x` coordinate to the left of the note. */\n getTieLeftX() {\n let tieEndX = this.getAbsoluteX();\n const note_glyph_width = this.glyph.getWidth();\n tieEndX += note_glyph_width / 2;\n tieEndX -= this.width / 2 + 2;\n return tieEndX;\n }\n // Get the pitches in the note\n getKeys() {\n return this.keys;\n }\n // Get the properties for all the keys in the note\n getKeyProps() {\n return this.keyProps;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// A base class for stave modifiers (e.g. clefs, key signatures)\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { defined } from './util';\nexport var StaveModifierPosition;\n(function (StaveModifierPosition) {\n StaveModifierPosition[StaveModifierPosition[\"CENTER\"] = 0] = \"CENTER\";\n StaveModifierPosition[StaveModifierPosition[\"LEFT\"] = 1] = \"LEFT\";\n StaveModifierPosition[StaveModifierPosition[\"RIGHT\"] = 2] = \"RIGHT\";\n StaveModifierPosition[StaveModifierPosition[\"ABOVE\"] = 3] = \"ABOVE\";\n StaveModifierPosition[StaveModifierPosition[\"BELOW\"] = 4] = \"BELOW\";\n StaveModifierPosition[StaveModifierPosition[\"BEGIN\"] = 5] = \"BEGIN\";\n StaveModifierPosition[StaveModifierPosition[\"END\"] = 6] = \"END\";\n})(StaveModifierPosition || (StaveModifierPosition = {}));\nexport class StaveModifier extends Element {\n constructor() {\n super();\n this.width = 0;\n this.x = 0;\n this.padding = 10;\n this.position = StaveModifierPosition.ABOVE;\n }\n static get CATEGORY() {\n return Category.StaveModifier;\n }\n static get Position() {\n return StaveModifierPosition;\n }\n getPosition() {\n return this.position;\n }\n setPosition(position) {\n this.position = position;\n return this;\n }\n getStave() {\n return this.stave;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getWidth() {\n return this.width;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getX() {\n return this.x;\n }\n setX(x) {\n this.x = x;\n return this;\n }\n placeGlyphOnLine(glyph, stave, line, customShift = 0) {\n glyph.setYShift(stave.getYForLine(line !== null && line !== void 0 ? line : 0) - stave.getYForGlyphs() + customShift);\n }\n getPadding(index) {\n return index !== undefined && index < 2 ? 0 : this.padding;\n }\n setPadding(padding) {\n this.padding = padding;\n return this;\n }\n setLayoutMetrics(layoutMetrics) {\n this.layoutMetrics = layoutMetrics;\n return this;\n }\n getLayoutMetrics() {\n return this.layoutMetrics;\n }\n // eslint-disable-next-line\n draw(...args) {\n // DO NOTHING.\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Author Larry Kuhns 2011\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport var BarlineType;\n(function (BarlineType) {\n BarlineType[BarlineType[\"SINGLE\"] = 1] = \"SINGLE\";\n BarlineType[BarlineType[\"DOUBLE\"] = 2] = \"DOUBLE\";\n BarlineType[BarlineType[\"END\"] = 3] = \"END\";\n BarlineType[BarlineType[\"REPEAT_BEGIN\"] = 4] = \"REPEAT_BEGIN\";\n BarlineType[BarlineType[\"REPEAT_END\"] = 5] = \"REPEAT_END\";\n BarlineType[BarlineType[\"REPEAT_BOTH\"] = 6] = \"REPEAT_BOTH\";\n BarlineType[BarlineType[\"NONE\"] = 7] = \"NONE\";\n})(BarlineType || (BarlineType = {}));\nexport class Barline extends StaveModifier {\n constructor(type) {\n super();\n this.thickness = Tables.STAVE_LINE_THICKNESS;\n const TYPE = BarlineType;\n this.widths = {};\n this.widths[TYPE.SINGLE] = 5;\n this.widths[TYPE.DOUBLE] = 5;\n this.widths[TYPE.END] = 5;\n this.widths[TYPE.REPEAT_BEGIN] = 5;\n this.widths[TYPE.REPEAT_END] = 5;\n this.widths[TYPE.REPEAT_BOTH] = 5;\n this.widths[TYPE.NONE] = 5;\n this.paddings = {};\n this.paddings[TYPE.SINGLE] = 0;\n this.paddings[TYPE.DOUBLE] = 0;\n this.paddings[TYPE.END] = 0;\n this.paddings[TYPE.REPEAT_BEGIN] = 15;\n this.paddings[TYPE.REPEAT_END] = 15;\n this.paddings[TYPE.REPEAT_BOTH] = 15;\n this.paddings[TYPE.NONE] = 0;\n this.layoutMetricsMap = {};\n this.layoutMetricsMap[TYPE.SINGLE] = {\n xMin: 0,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.DOUBLE] = {\n xMin: -3,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.END] = {\n xMin: -5,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_END] = {\n xMin: -10,\n xMax: 1,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_BEGIN] = {\n xMin: -2,\n xMax: 10,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.REPEAT_BOTH] = {\n xMin: -10,\n xMax: 10,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.layoutMetricsMap[TYPE.NONE] = {\n xMin: 0,\n xMax: 0,\n paddingLeft: 5,\n paddingRight: 5,\n };\n this.setPosition(StaveModifierPosition.BEGIN);\n this.setType(type);\n }\n static get CATEGORY() {\n return Category.Barline;\n }\n static get type() {\n return BarlineType;\n }\n static get typeString() {\n return {\n single: BarlineType.SINGLE,\n double: BarlineType.DOUBLE,\n end: BarlineType.END,\n repeatBegin: BarlineType.REPEAT_BEGIN,\n repeatEnd: BarlineType.REPEAT_END,\n repeatBoth: BarlineType.REPEAT_BOTH,\n none: BarlineType.NONE,\n };\n }\n getType() {\n return this.type;\n }\n setType(type) {\n this.type = typeof type === 'string' ? Barline.typeString[type] : type;\n this.setWidth(this.widths[this.type]);\n this.setPadding(this.paddings[this.type]);\n this.setLayoutMetrics(this.layoutMetricsMap[this.type]);\n return this;\n }\n // Draw barlines\n draw(stave) {\n stave.checkContext();\n this.setRendered();\n switch (this.type) {\n case BarlineType.SINGLE:\n this.drawVerticalBar(stave, this.x, false);\n break;\n case BarlineType.DOUBLE:\n this.drawVerticalBar(stave, this.x, true);\n break;\n case BarlineType.END:\n this.drawVerticalEndBar(stave, this.x);\n break;\n case BarlineType.REPEAT_BEGIN:\n // If the barline is shifted over (in front of clef/time/key)\n // Draw vertical bar at the beginning.\n this.drawRepeatBar(stave, this.x, true);\n if (stave.getX() !== this.x) {\n this.drawVerticalBar(stave, stave.getX());\n }\n break;\n case BarlineType.REPEAT_END:\n this.drawRepeatBar(stave, this.x, false);\n break;\n case BarlineType.REPEAT_BOTH:\n this.drawRepeatBar(stave, this.x, false);\n this.drawRepeatBar(stave, this.x, true);\n break;\n default:\n // Default is NONE, so nothing to draw\n break;\n }\n }\n drawVerticalBar(stave, x, double_bar) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n if (double_bar) {\n staveCtx.fillRect(x - 3, topY, 1, botY - topY);\n }\n staveCtx.fillRect(x, topY, 1, botY - topY);\n }\n drawVerticalEndBar(stave, x) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n staveCtx.fillRect(x - 5, topY, 1, botY - topY);\n staveCtx.fillRect(x - 2, topY, 3, botY - topY);\n }\n drawRepeatBar(stave, x, begin) {\n const staveCtx = stave.checkContext();\n const topY = stave.getTopLineTopY();\n const botY = stave.getBottomLineBottomY();\n let x_shift = 3;\n if (!begin) {\n x_shift = -5;\n }\n staveCtx.fillRect(x + x_shift, topY, 1, botY - topY);\n staveCtx.fillRect(x - 2, topY, 3, botY - topY);\n const dot_radius = 2;\n // Shift dots left or right\n if (begin) {\n x_shift += 4;\n }\n else {\n x_shift -= 4;\n }\n const dot_x = x + x_shift + dot_radius / 2;\n // calculate the y offset based on number of stave lines\n let y_offset = (stave.getNumLines() - 1) * stave.getSpacingBetweenLines();\n y_offset = y_offset / 2 - stave.getSpacingBetweenLines() / 2;\n let dot_y = topY + y_offset + dot_radius / 2;\n // draw the top repeat dot\n staveCtx.beginPath();\n staveCtx.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false);\n staveCtx.fill();\n // draw the bottom repeat dot\n dot_y += stave.getSpacingBetweenLines();\n staveCtx.beginPath();\n staveCtx.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false);\n staveCtx.fill();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Author: Aaron (@AaronDavidNewman)\n//\n// This implements chord symbols above/below a chord.\n// Chord symbols are modifiers that can be attached to notes.\n// They can contain multiple 'blocks' which represent text or\n// glyphs with various positioning options.\n//\n// See `tests/chordsymbol_tests.ts` for usage examples.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category, isStemmableNote } from './typeguard';\nimport { log } from './util';\n// To enable logging for this class. Set `Vex.Flow.ChordSymbol.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (ChordSymbol.DEBUG)\n log('Vex.Flow.ChordSymbol', args);\n}\nexport var ChordSymbolHorizontalJustify;\n(function (ChordSymbolHorizontalJustify) {\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"LEFT\"] = 1] = \"LEFT\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"CENTER\"] = 2] = \"CENTER\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"RIGHT\"] = 3] = \"RIGHT\";\n ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify[\"CENTER_STEM\"] = 4] = \"CENTER_STEM\";\n})(ChordSymbolHorizontalJustify || (ChordSymbolHorizontalJustify = {}));\nexport var ChordSymbolVerticalJustify;\n(function (ChordSymbolVerticalJustify) {\n ChordSymbolVerticalJustify[ChordSymbolVerticalJustify[\"TOP\"] = 1] = \"TOP\";\n ChordSymbolVerticalJustify[ChordSymbolVerticalJustify[\"BOTTOM\"] = 2] = \"BOTTOM\";\n})(ChordSymbolVerticalJustify || (ChordSymbolVerticalJustify = {}));\nexport var SymbolTypes;\n(function (SymbolTypes) {\n SymbolTypes[SymbolTypes[\"GLYPH\"] = 1] = \"GLYPH\";\n SymbolTypes[SymbolTypes[\"TEXT\"] = 2] = \"TEXT\";\n SymbolTypes[SymbolTypes[\"LINE\"] = 3] = \"LINE\";\n})(SymbolTypes || (SymbolTypes = {}));\nexport var SymbolModifiers;\n(function (SymbolModifiers) {\n SymbolModifiers[SymbolModifiers[\"NONE\"] = 1] = \"NONE\";\n SymbolModifiers[SymbolModifiers[\"SUBSCRIPT\"] = 2] = \"SUBSCRIPT\";\n SymbolModifiers[SymbolModifiers[\"SUPERSCRIPT\"] = 3] = \"SUPERSCRIPT\";\n})(SymbolModifiers || (SymbolModifiers = {}));\n/**\n * ChordSymbol is a modifier that creates a chord symbol above/below a chord.\n * As a modifier, it is attached to an existing note.\n */\nexport class ChordSymbol extends Modifier {\n constructor() {\n super();\n this.symbolBlocks = [];\n this.horizontal = ChordSymbolHorizontalJustify.LEFT;\n this.vertical = ChordSymbolVerticalJustify.TOP;\n this.useKerning = true;\n this.reportWidth = true;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.ChordSymbol;\n }\n static get superSubRatio() {\n return ChordSymbol.metrics.global.superSubRatio;\n }\n /** Currently unused: Globally turn off text formatting, if the built-in formatting does not work for your font. */\n static set NO_TEXT_FORMAT(val) {\n ChordSymbol.noFormat = val;\n }\n static get NO_TEXT_FORMAT() {\n return ChordSymbol.noFormat;\n }\n // eslint-disable-next-line\n static getMetricForGlyph(glyphCode) {\n if (ChordSymbol.metrics[glyphCode]) {\n return ChordSymbol.metrics[glyphCode];\n }\n return undefined;\n }\n static get engravingFontResolution() {\n return Tables.currentMusicFont().getResolution();\n }\n static get spacingBetweenBlocks() {\n return ChordSymbol.metrics.global.spacing / ChordSymbol.engravingFontResolution;\n }\n static getWidthForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0.65; // probably should do something here.\n }\n return metric.advanceWidth / ChordSymbol.engravingFontResolution;\n }\n static getYShiftForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0;\n }\n return metric.yOffset / ChordSymbol.engravingFontResolution;\n }\n static getXShiftForGlyph(glyph) {\n const metric = ChordSymbol.getMetricForGlyph(glyph.code);\n if (!metric) {\n return 0;\n }\n return (-1 * metric.leftSideBearing) / ChordSymbol.engravingFontResolution;\n }\n static get superscriptOffset() {\n return ChordSymbol.metrics.global.superscriptOffset / ChordSymbol.engravingFontResolution;\n }\n static get subscriptOffset() {\n return ChordSymbol.metrics.global.subscriptOffset / ChordSymbol.engravingFontResolution;\n }\n static get kerningOffset() {\n return ChordSymbol.metrics.global.kerningOffset / ChordSymbol.engravingFontResolution;\n }\n // eslint-disable-next-line\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.chordSymbol;\n }\n static get lowerKerningText() {\n // For example, see: `bravura_metrics.ts`\n // BravuraMetrics.glyphs.chordSymbol.global.lowerKerningText, which returns an array of letters.\n // ['D', 'F', 'P', 'T', 'V', 'Y']\n return ChordSymbol.metrics.global.lowerKerningText;\n }\n static get upperKerningText() {\n return ChordSymbol.metrics.global.upperKerningText;\n }\n static isSuperscript(block) {\n return block.symbolModifier !== undefined && block.symbolModifier === SymbolModifiers.SUPERSCRIPT;\n }\n static isSubscript(block) {\n return block.symbolModifier !== undefined && block.symbolModifier === SymbolModifiers.SUBSCRIPT;\n }\n static get minPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /**\n * Estimate the width of the whole chord symbol, based on the sum of the widths of the individual blocks.\n * Estimate how many lines above/below the staff we need.\n */\n static format(symbols, state) {\n var _a;\n if (!symbols || symbols.length === 0)\n return false;\n let width = 0;\n let nonSuperWidth = 0;\n let leftWidth = 0;\n let rightWidth = 0;\n let maxLeftGlyphWidth = 0;\n let maxRightGlyphWidth = 0;\n for (const symbol of symbols) {\n const fontSize = Font.convertSizeToPointValue((_a = symbol.textFont) === null || _a === void 0 ? void 0 : _a.size);\n const fontAdj = Font.scaleSize(fontSize, 0.05);\n const glyphAdj = fontAdj * 2;\n const note = symbol.checkAttachedNote();\n let symbolWidth = 0;\n let lineSpaces = 1;\n let vAlign = false;\n for (let j = 0; j < symbol.symbolBlocks.length; ++j) {\n const block = symbol.symbolBlocks[j];\n const sup = ChordSymbol.isSuperscript(block);\n const sub = ChordSymbol.isSubscript(block);\n const superSubScale = sup || sub ? ChordSymbol.superSubRatio : 1;\n const adj = block.symbolType === SymbolTypes.GLYPH ? glyphAdj * superSubScale : fontAdj * superSubScale;\n // If there are super/subscripts, they extend beyond the line so\n // assume they take up 2 lines\n if (sup || sub) {\n lineSpaces = 2;\n }\n // If there is a symbol-specific offset, add it but consider font\n // size since font and glyphs will be interspersed.\n const fontSize = symbol.textFormatter.fontSizeInPixels;\n const superSubFontSize = fontSize * superSubScale;\n if (block.symbolType === SymbolTypes.GLYPH && block.glyph !== undefined) {\n block.width = ChordSymbol.getWidthForGlyph(block.glyph) * superSubFontSize;\n block.yShift += ChordSymbol.getYShiftForGlyph(block.glyph) * superSubFontSize;\n block.xShift += ChordSymbol.getXShiftForGlyph(block.glyph) * superSubFontSize;\n block.glyph.scale = block.glyph.scale * adj;\n }\n else if (block.symbolType === SymbolTypes.TEXT) {\n block.width = block.width * superSubFontSize;\n block.yShift += symbol.getYOffsetForText(block.text) * adj;\n }\n if (block.symbolType === SymbolTypes.GLYPH &&\n block.glyph !== undefined &&\n block.glyph.code === ChordSymbol.glyphs.over.code) {\n lineSpaces = 2;\n }\n block.width += ChordSymbol.spacingBetweenBlocks * fontSize * superSubScale;\n // If a subscript immediately follows a superscript block, try to\n // overlay them.\n if (sup && j > 0) {\n const prev = symbol.symbolBlocks[j - 1];\n if (!ChordSymbol.isSuperscript(prev)) {\n nonSuperWidth = width;\n }\n }\n if (sub && nonSuperWidth > 0) {\n vAlign = true;\n // slide the symbol over so it lines up with superscript\n block.xShift = block.xShift + (nonSuperWidth - width);\n width = nonSuperWidth;\n nonSuperWidth = 0;\n // If we have vertically lined up, turn kerning off.\n symbol.setEnableKerning(false);\n }\n if (!sup && !sub) {\n nonSuperWidth = 0;\n }\n block.vAlign = vAlign;\n width += block.width;\n symbolWidth = width;\n }\n // make kerning adjustments after computing super/subscripts\n symbol.updateKerningAdjustments();\n symbol.updateOverBarAdjustments();\n if (symbol.getVertical() === ChordSymbolVerticalJustify.TOP) {\n symbol.setTextLine(state.top_text_line);\n state.top_text_line += lineSpaces;\n }\n else {\n symbol.setTextLine(state.text_line + 1);\n state.text_line += lineSpaces + 1;\n }\n if (symbol.getReportWidth() && isStemmableNote(note)) {\n const glyphWidth = note.getGlyph().getWidth();\n if (symbol.getHorizontal() === ChordSymbolHorizontalJustify.LEFT) {\n maxLeftGlyphWidth = Math.max(glyphWidth, maxLeftGlyphWidth);\n leftWidth = Math.max(leftWidth, symbolWidth) + ChordSymbol.minPadding;\n }\n else if (symbol.getHorizontal() === ChordSymbolHorizontalJustify.RIGHT) {\n maxRightGlyphWidth = Math.max(glyphWidth, maxRightGlyphWidth);\n rightWidth = Math.max(rightWidth, symbolWidth);\n }\n else {\n leftWidth = Math.max(leftWidth, symbolWidth / 2) + ChordSymbol.minPadding;\n rightWidth = Math.max(rightWidth, symbolWidth / 2);\n maxLeftGlyphWidth = Math.max(glyphWidth / 2, maxLeftGlyphWidth);\n maxRightGlyphWidth = Math.max(glyphWidth / 2, maxRightGlyphWidth);\n }\n }\n width = 0; // reset symbol width\n }\n const rightOverlap = Math.min(Math.max(rightWidth - maxRightGlyphWidth, 0), Math.max(rightWidth - state.right_shift, 0));\n const leftOverlap = Math.min(Math.max(leftWidth - maxLeftGlyphWidth, 0), Math.max(leftWidth - state.left_shift, 0));\n state.left_shift += leftOverlap;\n state.right_shift += rightOverlap;\n return true;\n }\n /**\n * Default text font.\n * Choose a font family that works well with the current music engraving font.\n * @override `Element.TEXT_FONT`.\n */\n static get TEXT_FONT() {\n let family = 'Roboto Slab, Times, serif';\n if (Tables.currentMusicFont().getName() === 'Petaluma') {\n // Fixes Issue #1180\n family = 'PetalumaScript, Arial, sans-serif';\n }\n return {\n family,\n size: 12,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n };\n }\n /**\n * The offset is specified in `em`. Scale this value by the font size in pixels.\n */\n get superscriptOffset() {\n return ChordSymbol.superscriptOffset * this.textFormatter.fontSizeInPixels;\n }\n get subscriptOffset() {\n return ChordSymbol.subscriptOffset * this.textFormatter.fontSizeInPixels;\n }\n setReportWidth(value) {\n this.reportWidth = value;\n return this;\n }\n getReportWidth() {\n return this.reportWidth;\n }\n updateOverBarAdjustments() {\n const barIndex = this.symbolBlocks.findIndex(({ symbolType, glyph }) => symbolType === SymbolTypes.GLYPH && glyph !== undefined && glyph.code === 'csymDiagonalArrangementSlash');\n if (barIndex < 0) {\n return;\n }\n const bar = this.symbolBlocks[barIndex];\n const xoff = bar.width / 4;\n const yoff = 0.25 * this.textFormatter.fontSizeInPixels;\n let symIndex = 0;\n for (symIndex === 0; symIndex < barIndex; ++symIndex) {\n const symbol = this.symbolBlocks[symIndex];\n symbol.xShift = symbol.xShift + xoff;\n symbol.yShift = symbol.yShift - yoff;\n }\n for (symIndex = barIndex + 1; symIndex < this.symbolBlocks.length; ++symIndex) {\n const symbol = this.symbolBlocks[symIndex];\n symbol.xShift = symbol.xShift - xoff;\n symbol.yShift = symbol.yShift + yoff;\n }\n }\n updateKerningAdjustments() {\n let accum = 0;\n for (let j = 0; j < this.symbolBlocks.length; ++j) {\n const symbol = this.symbolBlocks[j];\n accum += this.getKerningAdjustment(j);\n symbol.xShift += accum;\n }\n }\n /** Do some basic kerning so that letter chords like 'A' don't have the extensions hanging off to the right. */\n getKerningAdjustment(j) {\n if (!this.useKerning) {\n return 0;\n }\n const currSymbol = this.symbolBlocks[j];\n const prevSymbol = j > 0 ? this.symbolBlocks[j - 1] : undefined;\n let adjustment = 0;\n // Move things into the '/' over bar\n if (currSymbol.symbolType === SymbolTypes.GLYPH &&\n currSymbol.glyph !== undefined &&\n currSymbol.glyph.code === ChordSymbol.glyphs.over.code) {\n adjustment += currSymbol.glyph.metrics.x_shift;\n }\n if (prevSymbol !== undefined &&\n prevSymbol.symbolType === SymbolTypes.GLYPH &&\n prevSymbol.glyph !== undefined &&\n prevSymbol.glyph.code === ChordSymbol.glyphs.over.code) {\n adjustment += prevSymbol.glyph.metrics.x_shift;\n }\n // For superscripts that follow a letter without much top part, move it to the left slightly\n let preKernUpper = false;\n let preKernLower = false;\n if (prevSymbol !== undefined && prevSymbol.symbolType === SymbolTypes.TEXT) {\n preKernUpper = ChordSymbol.upperKerningText.some((xx) => xx === prevSymbol.text[prevSymbol.text.length - 1]);\n preKernLower = ChordSymbol.lowerKerningText.some((xx) => xx === prevSymbol.text[prevSymbol.text.length - 1]);\n }\n const kerningOffsetPixels = ChordSymbol.kerningOffset * this.textFormatter.fontSizeInPixels;\n // TODO: adjust kern for font size.\n // Where should this constant live?\n if (preKernUpper && currSymbol.symbolModifier === SymbolModifiers.SUPERSCRIPT) {\n adjustment += kerningOffsetPixels;\n }\n if (preKernLower && currSymbol.symbolType === SymbolTypes.TEXT) {\n if (currSymbol.text[0] >= 'a' && currSymbol.text[0] <= 'z') {\n adjustment += kerningOffsetPixels / 2;\n }\n if (ChordSymbol.upperKerningText.some((xx) => xx === (prevSymbol === null || prevSymbol === void 0 ? void 0 : prevSymbol.text[prevSymbol.text.length - 1]))) {\n adjustment += kerningOffsetPixels / 2;\n }\n }\n return adjustment;\n }\n /**\n * ChordSymbol allows multiple blocks so we can mix glyphs and font text.\n * Each block can have its own vertical orientation.\n */\n // eslint-disable-next-line\n getSymbolBlock(params = {}) {\n var _a, _b, _c;\n const symbolType = (_a = params.symbolType) !== null && _a !== void 0 ? _a : SymbolTypes.TEXT;\n const symbolBlock = {\n text: (_b = params.text) !== null && _b !== void 0 ? _b : '',\n symbolType,\n symbolModifier: (_c = params.symbolModifier) !== null && _c !== void 0 ? _c : SymbolModifiers.NONE,\n xShift: 0,\n yShift: 0,\n vAlign: false,\n width: 0,\n };\n // Note: symbol widths are resolution and font-independent.\n // We convert to pixel values when we know what the font is.\n if (symbolType === SymbolTypes.GLYPH && typeof params.glyph === 'string') {\n const glyphArgs = ChordSymbol.glyphs[params.glyph];\n const glyphPoints = 20;\n symbolBlock.glyph = new Glyph(glyphArgs.code, glyphPoints, { category: 'chordSymbol' });\n // Beware: glyph.metrics is not the same as glyph.getMetrics() !\n // rv.glyph.point = rv.glyph.point * rv.glyph.metrics.scale;\n // rv.width = rv.glyph.getMetrics().width;\n // don't set yShift here, b/c we need to do it at formatting time after the font is set.\n }\n else if (symbolType === SymbolTypes.TEXT) {\n symbolBlock.width = this.textFormatter.getWidthForTextInEm(symbolBlock.text);\n }\n else if (symbolType === SymbolTypes.LINE) {\n symbolBlock.width = params.width;\n }\n return symbolBlock;\n }\n /** Add a symbol to this chord, could be text, glyph or line. */\n // eslint-disable-next-line\n addSymbolBlock(parameters) {\n this.symbolBlocks.push(this.getSymbolBlock(parameters));\n return this;\n }\n // ### Convenience functions for creating different types of chord symbol parts.\n /** Add a text block. */\n // eslint-disable-next-line\n addText(text, parameters = {}) {\n const symbolType = SymbolTypes.TEXT;\n return this.addSymbolBlock(Object.assign(Object.assign({}, parameters), { text, symbolType }));\n }\n /** Add a text block with superscript modifier. */\n addTextSuperscript(text) {\n const symbolType = SymbolTypes.TEXT;\n const symbolModifier = SymbolModifiers.SUPERSCRIPT;\n return this.addSymbolBlock({ text, symbolType, symbolModifier });\n }\n /** Add a text block with subscript modifier. */\n addTextSubscript(text) {\n const symbolType = SymbolTypes.TEXT;\n const symbolModifier = SymbolModifiers.SUBSCRIPT;\n return this.addSymbolBlock({ text, symbolType, symbolModifier });\n }\n /** Add a glyph block with superscript modifier. */\n addGlyphSuperscript(glyph) {\n const symbolType = SymbolTypes.GLYPH;\n const symbolModifier = SymbolModifiers.SUPERSCRIPT;\n return this.addSymbolBlock({ glyph, symbolType, symbolModifier });\n }\n /** Add a glyph block. */\n // eslint-disable-next-line\n addGlyph(glyph, params = {}) {\n const symbolType = SymbolTypes.GLYPH;\n return this.addSymbolBlock(Object.assign(Object.assign({}, params), { glyph, symbolType }));\n }\n /**\n * Add a glyph for each character in 'text'. If the glyph is not available, use text from the font.\n * e.g. `addGlyphOrText('(+5#11)')` will use text for the '5' and '11', and glyphs for everything else.\n */\n // eslint-disable-next-line\n addGlyphOrText(text, params = {}) {\n let str = '';\n for (let i = 0; i < text.length; ++i) {\n const char = text[i];\n if (ChordSymbol.glyphs[char]) {\n if (str.length > 0) {\n this.addText(str, params);\n str = '';\n }\n this.addGlyph(char, params);\n }\n else {\n // Collect consecutive characters with no glyphs.\n str += char;\n }\n }\n if (str.length > 0) {\n this.addText(str, params);\n }\n return this;\n }\n /** Add a line of the given width, used as a continuation of the previous symbol in analysis, or lyrics, etc. */\n // eslint-disable-next-line\n addLine(width, params = {}) {\n const symbolType = SymbolTypes.LINE;\n return this.addSymbolBlock(Object.assign(Object.assign({}, params), { symbolType, width }));\n }\n /**\n * Set the chord symbol's font family, size, weight, style (e.g., `Arial`, `10pt`, `bold`, `italic`).\n *\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n *\n * @override See: Element.\n */\n setFont(f, size, weight, style) {\n super.setFont(f, size, weight, style);\n this.textFormatter = TextFormatter.create(this.textFont);\n return this;\n }\n setEnableKerning(val) {\n this.useKerning = val;\n return this;\n }\n /** Set vertical position of text (above or below stave). */\n setVertical(vj) {\n this.vertical = typeof vj === 'string' ? ChordSymbol.VerticalJustifyString[vj] : vj;\n return this;\n }\n getVertical() {\n return this.vertical;\n }\n /** Set horizontal justification. */\n setHorizontal(hj) {\n this.horizontal = typeof hj === 'string' ? ChordSymbol.HorizontalJustifyString[hj] : hj;\n return this;\n }\n getHorizontal() {\n return this.horizontal;\n }\n getWidth() {\n let width = 0;\n this.symbolBlocks.forEach((symbol) => {\n width += symbol.vAlign ? 0 : symbol.width;\n });\n return width;\n }\n getYOffsetForText(text) {\n var _a;\n let acc = 0;\n let i = 0;\n for (i = 0; i < text.length; ++i) {\n const metrics = this.textFormatter.getGlyphMetrics(text[i]);\n if (metrics) {\n const yMax = (_a = metrics.y_max) !== null && _a !== void 0 ? _a : 0;\n acc = yMax < acc ? yMax : acc;\n }\n }\n const resolution = this.textFormatter.getResolution();\n return i > 0 ? -1 * (acc / resolution) : 0;\n }\n /** Render text and glyphs above/below the note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n // We're changing context parameters. Save current state.\n ctx.save();\n ctx.openGroup('chordsymbol', this.getAttribute('id'));\n const start = note.getModifierStartXY(Modifier.Position.ABOVE, this.index);\n ctx.setFont(this.textFont);\n let y;\n // The position of the text varies based on whether or not the note\n // has a stem.\n const hasStem = note.hasStem();\n const stave = note.checkStave();\n if (this.vertical === ChordSymbolVerticalJustify.BOTTOM) {\n // HACK: We need to compensate for the text's height since its origin is bottom-right.\n y = stave.getYForBottomText(this.text_line + Tables.TEXT_HEIGHT_OFFSET_HACK);\n if (hasStem) {\n const stem_ext = note.checkStem().getExtents();\n const spacing = stave.getSpacingBetweenLines();\n const stem_base = note.getStemDirection() === 1 ? stem_ext.baseY : stem_ext.topY;\n y = Math.max(y, stem_base + spacing * (this.text_line + 2));\n }\n }\n else {\n // (this.vertical === VerticalJustify.TOP)\n y = Math.min(stave.getYForTopText(this.text_line), note.getYs()[0] - 10);\n if (hasStem) {\n const stem_ext = note.checkStem().getExtents();\n const spacing = stave.getSpacingBetweenLines();\n y = Math.min(y, stem_ext.topY - 5 - spacing * this.text_line);\n }\n }\n let x = start.x;\n if (this.horizontal === ChordSymbolHorizontalJustify.LEFT) {\n x = start.x;\n }\n else if (this.horizontal === ChordSymbolHorizontalJustify.RIGHT) {\n x = start.x + this.getWidth();\n }\n else if (this.horizontal === ChordSymbolHorizontalJustify.CENTER) {\n x = start.x - this.getWidth() / 2;\n }\n else {\n // HorizontalJustify.CENTER_STEM\n x = note.getStemX() - this.getWidth() / 2;\n }\n L('Rendering ChordSymbol: ', this.textFormatter, x, y);\n this.symbolBlocks.forEach((symbol) => {\n const isSuper = ChordSymbol.isSuperscript(symbol);\n const isSub = ChordSymbol.isSubscript(symbol);\n let curY = y;\n L('shift was ', symbol.xShift, symbol.yShift);\n L('curY pre sub ', curY);\n if (isSuper) {\n curY += this.superscriptOffset;\n }\n if (isSub) {\n curY += this.subscriptOffset;\n }\n L('curY sup/sub ', curY);\n if (symbol.symbolType === SymbolTypes.TEXT) {\n if (isSuper || isSub) {\n ctx.save();\n if (this.textFont) {\n const { family, size, weight, style } = this.textFont;\n const smallerFontSize = Font.scaleSize(size, ChordSymbol.superSubRatio);\n ctx.setFont(family, smallerFontSize, weight, style);\n }\n }\n // TODO???\n // We estimate the text width, fill it in with the empirical value so the formatting is even.\n // const textDim = ctx.measureText(symbol.text);\n // symbol.width = textDim.width;\n L('Rendering Text: ', symbol.text, x + symbol.xShift, curY + symbol.yShift);\n ctx.fillText(symbol.text, x + symbol.xShift, curY + symbol.yShift);\n if (isSuper || isSub) {\n ctx.restore();\n }\n }\n else if (symbol.symbolType === SymbolTypes.GLYPH && symbol.glyph) {\n curY += symbol.yShift;\n L('Rendering Glyph: ', symbol.glyph.code, x + symbol.xShift, curY);\n symbol.glyph.render(ctx, x + symbol.xShift, curY);\n }\n else if (symbol.symbolType === SymbolTypes.LINE) {\n L('Rendering Line : ', symbol.width, x, curY);\n ctx.beginPath();\n ctx.setLineWidth(1); // ?\n ctx.moveTo(x, y);\n ctx.lineTo(x + symbol.width, curY);\n ctx.stroke();\n }\n x += symbol.width;\n if (symbol.vAlign) {\n x += symbol.xShift;\n }\n });\n ctx.closeGroup();\n ctx.restore();\n }\n}\nChordSymbol.DEBUG = false;\n// Chord symbols can be positioned and justified relative to the note.\nChordSymbol.HorizontalJustify = ChordSymbolHorizontalJustify;\nChordSymbol.HorizontalJustifyString = {\n left: ChordSymbolHorizontalJustify.LEFT,\n right: ChordSymbolHorizontalJustify.RIGHT,\n center: ChordSymbolHorizontalJustify.CENTER,\n centerStem: ChordSymbolHorizontalJustify.CENTER_STEM,\n};\nChordSymbol.VerticalJustify = ChordSymbolVerticalJustify;\nChordSymbol.VerticalJustifyString = {\n top: ChordSymbolVerticalJustify.TOP,\n above: ChordSymbolVerticalJustify.TOP,\n below: ChordSymbolVerticalJustify.BOTTOM,\n bottom: ChordSymbolVerticalJustify.BOTTOM,\n};\n// Glyph data\nChordSymbol.glyphs = {\n diminished: {\n code: 'csymDiminished',\n },\n dim: {\n code: 'csymDiminished',\n },\n halfDiminished: {\n code: 'csymHalfDiminished',\n },\n '+': {\n code: 'csymAugmented',\n },\n augmented: {\n code: 'csymAugmented',\n },\n majorSeventh: {\n code: 'csymMajorSeventh',\n },\n minor: {\n code: 'csymMinor',\n },\n '-': {\n code: 'csymMinor',\n },\n '(': {\n code: 'csymParensLeftTall',\n },\n leftParen: {\n code: 'csymParensLeftTall',\n },\n ')': {\n code: 'csymParensRightTall',\n },\n rightParen: {\n code: 'csymParensRightTall',\n },\n leftBracket: {\n code: 'csymBracketLeftTall',\n },\n rightBracket: {\n code: 'csymBracketRightTall',\n },\n leftParenTall: {\n code: 'csymParensLeftVeryTall',\n },\n rightParenTall: {\n code: 'csymParensRightVeryTall',\n },\n '/': {\n code: 'csymDiagonalArrangementSlash',\n },\n over: {\n code: 'csymDiagonalArrangementSlash',\n },\n '#': {\n code: 'accidentalSharp',\n },\n b: {\n code: 'accidentalFlat',\n },\n};\nChordSymbol.symbolTypes = SymbolTypes;\nChordSymbol.symbolModifiers = SymbolModifiers;\n/** Currently unused. */\nChordSymbol.noFormat = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Note } from './note';\nimport { Barline, BarlineType } from './stavebarline';\nimport { Category } from './typeguard';\nimport { log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (BarNote.DEBUG)\n log('Vex.Flow.BarNote', args);\n}\n/**\n * A `BarNote` is used to render bar lines (from `barline.ts`). `BarNote`s can\n * be added to a voice and rendered in the middle of a stave. Since it has no\n * duration, it consumes no `tick`s, and is dealt with appropriately by the formatter.\n *\n * See `tests/barnote_tests.ts` for usage examples.\n */\nexport class BarNote extends Note {\n constructor(type = BarlineType.SINGLE) {\n super({ duration: 'b' });\n this.metrics = {\n widths: {},\n };\n const TYPE = BarlineType;\n this.metrics.widths = {\n [TYPE.SINGLE]: 8,\n [TYPE.DOUBLE]: 12,\n [TYPE.END]: 15,\n [TYPE.REPEAT_BEGIN]: 14,\n [TYPE.REPEAT_END]: 14,\n [TYPE.REPEAT_BOTH]: 18,\n [TYPE.NONE]: 0,\n };\n // Tell the formatter that bar notes have no duration.\n this.ignore_ticks = true;\n this.setType(type);\n }\n static get CATEGORY() {\n return Category.BarNote;\n }\n /** Get the type of bar note.*/\n getType() {\n return this.type;\n }\n /** Set the type of bar note. */\n setType(type) {\n this.type = typeof type === 'string' ? Barline.typeString[type] : type;\n // Set width to width of relevant `Barline`.\n this.setWidth(this.metrics.widths[this.type]);\n return this;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n /** Overridden to ignore. */\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n /** Render note to stave. */\n draw() {\n const ctx = this.checkContext();\n L('Rendering bar line at: ', this.getAbsoluteX());\n this.applyStyle(ctx);\n const barline = new Barline(this.type);\n barline.setX(this.getAbsoluteX());\n barline.draw(this.checkStave());\n this.restoreStyle(ctx);\n this.setRendered();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.BarNote.DEBUG` to `true`. */\nBarNote.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Modifier } from './modifier';\nimport { TextFormatter } from './textformatter';\nimport { Category, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\n/** Bend implements tablature bends. */\nexport class Bend extends Modifier {\n /**\n * Example of a phrase:\n * ```\n * [{\n * type: UP,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: DOWN,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: UP,\n * text: \"half\"\n * width: 8;\n * },\n * {\n * type: UP,\n * text: \"whole\"\n * width: 8;\n * },\n * {\n * type: DOWN,\n * text: \"1 1/2\"\n * width: 8;\n * }]\n * ```\n * @param text text for bend (\"Full\", \"Half\", etc.) (DEPRECATED)\n * @param release if true, render a release. (DEPRECATED)\n * @param phrase if set, ignore \"text\" and \"release\", and use the more sophisticated phrase specified\n */\n constructor(text, release = false, phrase) {\n super();\n this.text = text;\n this.x_shift = 0;\n this.release = release;\n this.tap = '';\n this.resetFont();\n this.render_options = {\n line_width: 1.5,\n line_style: '#777777',\n bend_width: 8,\n release_width: 8,\n };\n if (phrase) {\n this.phrase = phrase;\n }\n else {\n // Backward compatibility\n this.phrase = [{ type: Bend.UP, text: this.text }];\n if (this.release)\n this.phrase.push({ type: Bend.DOWN, text: '' });\n }\n this.updateWidth();\n }\n static get CATEGORY() {\n return Category.Bend;\n }\n static get UP() {\n return 0;\n }\n static get DOWN() {\n return 1;\n }\n // Arrange bends in `ModifierContext`\n static format(bends, state) {\n if (!bends || bends.length === 0)\n return false;\n let last_width = 0;\n // Format Bends\n for (let i = 0; i < bends.length; ++i) {\n const bend = bends[i];\n const note = bend.checkAttachedNote();\n if (isTabNote(note)) {\n const stringPos = note.leastString() - 1;\n if (state.top_text_line < stringPos) {\n state.top_text_line = stringPos;\n }\n }\n bend.setXShift(last_width);\n last_width = bend.getWidth();\n bend.setTextLine(state.top_text_line);\n }\n state.right_shift += last_width;\n state.top_text_line += 1;\n return true;\n }\n /** Set horizontal shift in pixels. */\n setXShift(value) {\n this.x_shift = value;\n this.updateWidth();\n return this;\n }\n setTap(value) {\n this.tap = value;\n return this;\n }\n /** Get text provided in the constructor. */\n getText() {\n return this.text;\n }\n getTextHeight() {\n const textFormatter = TextFormatter.create(this.textFont);\n return textFormatter.maxHeight;\n }\n /** Recalculate width. */\n updateWidth() {\n const textFormatter = TextFormatter.create(this.textFont);\n const measureText = (text) => {\n return textFormatter.getWidthForTextInPx(text);\n };\n let totalWidth = 0;\n for (let i = 0; i < this.phrase.length; ++i) {\n const bend = this.phrase[i];\n if (bend.width !== undefined) {\n totalWidth += bend.width;\n }\n else {\n const additional_width = bend.type === Bend.UP ? this.render_options.bend_width : this.render_options.release_width;\n bend.width = Math.max(additional_width, measureText(bend.text)) + 3;\n bend.draw_width = bend.width / 2;\n totalWidth += bend.width;\n }\n }\n this.setWidth(totalWidth + this.x_shift);\n return this;\n }\n /** Draw the bend on the rendering context. */\n draw() {\n var _a;\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(Modifier.Position.RIGHT, this.index);\n start.x += 3;\n start.y += 0.5;\n const x_shift = this.x_shift;\n const stave = note.checkStave();\n const spacing = stave.getSpacingBetweenLines();\n const lowestY = note.getYs().reduce((a, b) => (a < b ? a : b));\n // this.text_line is relative to top string in the group.\n const bend_height = start.y - ((this.text_line + 1) * spacing + start.y - lowestY) + 3;\n const annotation_y = start.y - ((this.text_line + 1) * spacing + start.y - lowestY) - 1;\n const renderBend = (x, y, width, height) => {\n const cp_x = x + width;\n const cp_y = y;\n ctx.save();\n ctx.beginPath();\n ctx.setLineWidth(this.render_options.line_width);\n ctx.setStrokeStyle(this.render_options.line_style);\n ctx.setFillStyle(this.render_options.line_style);\n ctx.moveTo(x, y);\n ctx.quadraticCurveTo(cp_x, cp_y, x + width, height);\n ctx.stroke();\n ctx.restore();\n };\n const renderRelease = (x, y, width, height) => {\n ctx.save();\n ctx.beginPath();\n ctx.setLineWidth(this.render_options.line_width);\n ctx.setStrokeStyle(this.render_options.line_style);\n ctx.setFillStyle(this.render_options.line_style);\n ctx.moveTo(x, height);\n ctx.quadraticCurveTo(x + width, height, x + width, y);\n ctx.stroke();\n ctx.restore();\n };\n const renderArrowHead = (x, y, direction) => {\n const width = 4;\n const yBase = y + width * direction;\n ctx.beginPath();\n ctx.moveTo(x, y); // tip of the arrow\n ctx.lineTo(x - width, yBase);\n ctx.lineTo(x + width, yBase);\n ctx.closePath();\n ctx.fill();\n };\n const renderText = (x, text) => {\n ctx.save();\n ctx.setFont(this.textFont);\n const render_x = x - ctx.measureText(text).width / 2;\n ctx.fillText(text, render_x, annotation_y);\n ctx.restore();\n };\n let last_bend = undefined;\n let last_bend_draw_width = 0;\n let last_drawn_width = 0;\n if ((_a = this.tap) === null || _a === void 0 ? void 0 : _a.length) {\n const tapStart = note.getModifierStartXY(Modifier.Position.CENTER, this.index);\n renderText(tapStart.x, this.tap);\n }\n for (let i = 0; i < this.phrase.length; ++i) {\n const bend = this.phrase[i];\n if (!bend.draw_width)\n bend.draw_width = 0;\n if (i === 0)\n bend.draw_width += x_shift;\n last_drawn_width = bend.draw_width + last_bend_draw_width - (i === 1 ? x_shift : 0);\n if (bend.type === Bend.UP) {\n if (last_bend && last_bend.type === Bend.UP) {\n renderArrowHead(start.x, bend_height, +1);\n }\n renderBend(start.x, start.y, last_drawn_width, bend_height);\n }\n if (bend.type === Bend.DOWN) {\n if (last_bend && last_bend.type === Bend.UP) {\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n if (last_bend && last_bend.type === Bend.DOWN) {\n renderArrowHead(start.x, start.y, -1);\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n if (!last_bend) {\n last_drawn_width = bend.draw_width;\n renderRelease(start.x, start.y, last_drawn_width, bend_height);\n }\n }\n renderText(start.x + last_drawn_width, bend.text);\n last_bend = bend;\n last_bend_draw_width = bend.draw_width;\n last_bend.x = start.x;\n start.x += last_drawn_width;\n }\n if (!last_bend || last_bend.x == undefined) {\n throw new RuntimeError('NoLastBendForBend', 'Internal error.');\n }\n // Final arrowhead and text\n if (last_bend.type === Bend.UP) {\n renderArrowHead(last_bend.x + last_drawn_width, bend_height, +1);\n }\n else if (last_bend.type === Bend.DOWN) {\n renderArrowHead(last_bend.x + last_drawn_width, start.y, -1);\n }\n }\n}\n/** Default text font. */\nBend.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements dot modifiers for notes.\nimport { Modifier } from './modifier';\nimport { Category, isGraceNote, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class Dot extends Modifier {\n constructor() {\n super();\n this.position = Modifier.Position.RIGHT;\n this.radius = 2;\n this.setWidth(5);\n this.dot_shiftY = 0;\n }\n static get CATEGORY() {\n return Category.Dot;\n }\n /** Returns the dots associated to a Note. */\n static getDots(note) {\n return note.getModifiersByType(Dot.CATEGORY);\n }\n /** Add a dot on the specified keys to the notes. */\n static buildAndAttach(notes, options) {\n for (const note of notes) {\n if (options === null || options === void 0 ? void 0 : options.all) {\n for (let i = 0; i < note.keys.length; i++) {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, i);\n }\n }\n else if ((options === null || options === void 0 ? void 0 : options.index) != undefined) {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, options === null || options === void 0 ? void 0 : options.index);\n }\n else {\n const dot = new Dot();\n dot.setDotShiftY(note.glyph.dot_shiftY);\n note.addModifier(dot, 0);\n }\n }\n }\n // Arrange dots inside a ModifierContext.\n static format(dots, state) {\n const right_shift = state.right_shift;\n const dot_spacing = 1;\n if (!dots || dots.length === 0)\n return false;\n const dot_list = [];\n const max_shift_map = {};\n for (let i = 0; i < dots.length; ++i) {\n const dot = dots[i];\n const note = dot.getNote();\n let props;\n let shift;\n if (isStaveNote(note)) {\n const index = dot.checkIndex();\n props = note.getKeyProps()[index];\n // consider right displaced head with no previous modifier\n shift = note.getFirstDotPx();\n }\n else if (isTabNote(note)) {\n props = { line: 0.5 }; // Shim key props for dot placement\n shift = right_shift;\n }\n else {\n // note object is not StaveNote or TabNote.\n throw new RuntimeError('Internal', 'Unexpected instance.');\n }\n const note_id = note.getAttribute('id');\n dot_list.push({ line: props.line, note, note_id, dot });\n max_shift_map[note_id] = Math.max(max_shift_map[note_id] || shift, shift);\n }\n // Sort dots by line number.\n dot_list.sort((a, b) => b.line - a.line);\n let dot_shift = right_shift;\n let x_width = 0;\n let last_line = null;\n let last_note = null;\n let prev_dotted_space = null;\n let half_shiftY = 0;\n for (let i = 0; i < dot_list.length; ++i) {\n const { dot, note, note_id, line } = dot_list[i];\n // Reset the position of the dot every line.\n if (line !== last_line || note !== last_note) {\n dot_shift = max_shift_map[note_id];\n }\n if (!note.isRest() && line !== last_line) {\n if (Math.abs(line % 1) === 0.5) {\n // note is on a space, so no dot shift\n half_shiftY = 0;\n }\n else {\n // note is on a line, so shift dot to space above the line\n half_shiftY = 0.5;\n if (last_note != null && !last_note.isRest() && last_line != null && last_line - line === 0.5) {\n // previous note on a space, so shift dot to space below the line\n half_shiftY = -0.5;\n }\n else if (line + half_shiftY === prev_dotted_space) {\n // previous space is dotted, so shift dot to space below the line\n half_shiftY = -0.5;\n }\n }\n }\n // convert half_shiftY to a multiplier for dots.draw()\n if (note.isRest()) {\n dot.dot_shiftY += -half_shiftY;\n }\n else {\n dot.dot_shiftY = -half_shiftY;\n }\n prev_dotted_space = line + half_shiftY;\n dot.setXShift(dot_shift);\n dot_shift += dot.getWidth() + dot_spacing; // spacing\n x_width = dot_shift > x_width ? dot_shift : x_width;\n last_line = line;\n last_note = note;\n }\n // Update state.\n state.right_shift += x_width;\n return true;\n }\n setNote(note) {\n this.note = note;\n if (isGraceNote(note)) {\n this.radius *= 0.5;\n this.setWidth(3);\n }\n return this;\n }\n setDotShiftY(y) {\n this.dot_shiftY = y;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stave = note.checkStave();\n const lineSpace = stave.getSpacingBetweenLines();\n const start = note.getModifierStartXY(this.position, this.index, { forceFlagRight: true });\n // Set the starting y coordinate to the base of the stem for TabNotes.\n if (isTabNote(note)) {\n start.y = note.getStemExtents().baseY;\n }\n const x = start.x + this.x_shift + this.width - this.radius;\n const y = start.y + this.y_shift + this.dot_shiftY * lineSpace;\n ctx.beginPath();\n ctx.arc(x, y, this.radius, 0, Math.PI * 2, false);\n ctx.fill();\n }\n}\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n// Author Larry Kuhns 2013\n// Class to draws string numbers into the notation.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Tables } from './tables';\nimport { TextFormatter } from './textformatter';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class FretHandFinger extends Modifier {\n constructor(finger) {\n super();\n this.finger = finger;\n this.width = 7;\n this.position = Modifier.Position.LEFT; // Default position above stem or note head\n this.x_shift = 0;\n this.y_shift = 0;\n this.x_offset = 0; // Horizontal offset from default\n this.y_offset = 0; // Vertical offset from default\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.FretHandFinger;\n }\n // Arrange fingerings inside a ModifierContext.\n static format(nums, state) {\n const { left_shift, right_shift } = state;\n const num_spacing = 1;\n if (!nums || nums.length === 0)\n return false;\n const nums_list = [];\n let prev_note = null;\n let shiftLeft = 0;\n let shiftRight = 0;\n for (let i = 0; i < nums.length; ++i) {\n const num = nums[i];\n const note = num.getNote();\n const pos = num.getPosition();\n const index = num.checkIndex();\n const props = note.getKeyProps()[index];\n const textFormatter = TextFormatter.create(num.textFont);\n const textHeight = textFormatter.maxHeight;\n if (num.position === ModifierPosition.ABOVE) {\n state.top_text_line += textHeight / Tables.STAVE_LINE_DISTANCE + 0.5;\n }\n if (num.position === ModifierPosition.BELOW) {\n state.text_line += textHeight / Tables.STAVE_LINE_DISTANCE + 0.5;\n }\n if (note !== prev_note) {\n for (let n = 0; n < note.keys.length; ++n) {\n if (left_shift === 0) {\n shiftLeft = Math.max(note.getLeftDisplacedHeadPx(), shiftLeft);\n }\n if (right_shift === 0) {\n shiftRight = Math.max(note.getRightDisplacedHeadPx(), shiftRight);\n }\n }\n prev_note = note;\n }\n nums_list.push({\n note,\n num,\n pos,\n line: props.line,\n shiftL: shiftLeft,\n shiftR: shiftRight,\n });\n }\n // Sort fingernumbers by line number.\n nums_list.sort((a, b) => b.line - a.line);\n let numShiftL = 0;\n let numShiftR = 0;\n let xWidthL = 0;\n let xWidthR = 0;\n let lastLine = null;\n let lastNote = null;\n for (let i = 0; i < nums_list.length; ++i) {\n let num_shift = 0;\n const { note, pos, num, line, shiftL, shiftR } = nums_list[i];\n // Reset the position of the string number every line.\n if (line !== lastLine || note !== lastNote) {\n numShiftL = left_shift + shiftL;\n numShiftR = right_shift + shiftR;\n }\n const numWidth = num.getWidth() + num_spacing;\n if (pos === Modifier.Position.LEFT) {\n num.setXShift(left_shift + numShiftL);\n num_shift = left_shift + numWidth; // spacing\n xWidthL = num_shift > xWidthL ? num_shift : xWidthL;\n }\n else if (pos === Modifier.Position.RIGHT) {\n num.setXShift(numShiftR);\n num_shift = shiftRight + numWidth; // spacing\n xWidthR = num_shift > xWidthR ? num_shift : xWidthR;\n }\n lastLine = line;\n lastNote = note;\n }\n state.left_shift += xWidthL;\n state.right_shift += xWidthR;\n return true;\n }\n static easyScoreHook({ fingerings } = {}, note, builder) {\n fingerings === null || fingerings === void 0 ? void 0 : fingerings.split(',').map((fingeringString) => {\n const split = fingeringString.trim().split('.');\n const params = { number: split[0] };\n if (split[1])\n params.position = split[1];\n return builder.getFactory().Fingering(params);\n }).map((fingering, index) => note.addModifier(fingering, index));\n }\n setFretHandFinger(finger) {\n this.finger = finger;\n return this;\n }\n getFretHandFinger() {\n return this.finger;\n }\n setOffsetX(x) {\n this.x_offset = x;\n return this;\n }\n setOffsetY(y) {\n this.y_offset = y;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n let dot_x = start.x + this.x_shift + this.x_offset;\n let dot_y = start.y + this.y_shift + this.y_offset + 5;\n switch (this.position) {\n case Modifier.Position.ABOVE:\n dot_x -= 4;\n dot_y -= 12;\n break;\n case Modifier.Position.BELOW:\n dot_x -= 2;\n dot_y += 10;\n break;\n case Modifier.Position.LEFT:\n dot_x -= this.width;\n break;\n case Modifier.Position.RIGHT:\n dot_x += 1;\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} does not exist`);\n }\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText('' + this.finger, dot_x, dot_y);\n ctx.restore();\n }\n}\nFretHandFinger.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 9,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (NoteHead.DEBUG)\n log('Vex.Flow.NoteHead', args);\n}\n/**\n * Draw slashnote head manually. No glyph exists for this.\n * @param ctx the Canvas context\n * @param duration the duration of the note. ex: \"4\"\n * @param x the x coordinate to draw at\n * @param y the y coordinate to draw at\n * @param stem_direction the direction of the stem\n */\nfunction drawSlashNoteHead(ctx, duration, x, y, stem_direction, staveSpace) {\n const width = Tables.SLASH_NOTEHEAD_WIDTH;\n ctx.save();\n ctx.setLineWidth(Tables.STEM_WIDTH);\n let fill = false;\n if (Tables.durationToNumber(duration) > 2) {\n fill = true;\n }\n if (!fill)\n x -= (Tables.STEM_WIDTH / 2) * stem_direction;\n ctx.beginPath();\n ctx.moveTo(x, y + staveSpace);\n ctx.lineTo(x, y + 1);\n ctx.lineTo(x + width, y - staveSpace);\n ctx.lineTo(x + width, y);\n ctx.lineTo(x, y + staveSpace);\n ctx.closePath();\n if (fill) {\n ctx.fill();\n }\n else {\n ctx.stroke();\n }\n if (Tables.durationToFraction(duration).equals(0.5)) {\n const breve_lines = [-3, -1, width + 1, width + 3];\n for (let i = 0; i < breve_lines.length; i++) {\n ctx.beginPath();\n ctx.moveTo(x + breve_lines[i], y - 10);\n ctx.lineTo(x + breve_lines[i], y + 11);\n ctx.stroke();\n }\n }\n ctx.restore();\n}\n/**\n * `NoteHeads` are typically not manipulated\n * directly, but used internally in `StaveNote`.\n *\n * See `tests/notehead_tests.ts` for usage examples.\n */\nexport class NoteHead extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n this.custom_glyph = false;\n this.stem_up_x_offset = 0;\n this.stem_down_x_offset = 0;\n this.index = noteStruct.index;\n this.x = noteStruct.x || 0;\n this.y = noteStruct.y || 0;\n if (noteStruct.note_type)\n this.noteType = noteStruct.note_type;\n this.displaced = noteStruct.displaced || false;\n this.stem_direction = noteStruct.stem_direction || Stem.UP;\n this.line = noteStruct.line || 0;\n // Get glyph code based on duration and note type. This could be\n // regular notes, rests, or other custom codes.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n // Swap out the glyph with leger lines\n if ((this.line > 5 || this.line < 0) && this.glyph.leger_code_head) {\n this.glyph.code_head = this.glyph.leger_code_head;\n }\n this.glyph_code = this.glyph.code_head;\n this.x_shift = noteStruct.x_shift || 0;\n if (noteStruct.custom_glyph_code) {\n this.custom_glyph = true;\n this.glyph_code = noteStruct.custom_glyph_code;\n this.stem_up_x_offset = noteStruct.stem_up_x_offset || 0;\n this.stem_down_x_offset = noteStruct.stem_down_x_offset || 0;\n }\n this.setStyle(noteStruct.style);\n this.slashed = noteStruct.slashed || false;\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads\n glyph_font_scale: noteStruct.glyph_font_scale || Tables.NOTATION_FONT_SCALE });\n this.setWidth(this.glyph.getWidth(this.render_options.glyph_font_scale));\n }\n static get CATEGORY() {\n return Category.NoteHead;\n }\n /** Get the width of the notehead. */\n getWidth() {\n return this.width;\n }\n /** Determine if the notehead is displaced. */\n isDisplaced() {\n return this.displaced === true;\n }\n /** Get the glyph data. */\n getGlyph() {\n return this.glyph;\n }\n /** Set the X coordinate. */\n setX(x) {\n this.x = x;\n return this;\n }\n /** Get the Y coordinate. */\n getY() {\n return this.y;\n }\n /** Set the Y coordinate. */\n setY(y) {\n this.y = y;\n return this;\n }\n /** Get the stave line the notehead is placed on. */\n getLine() {\n return this.line;\n }\n /** Set the stave line the notehead is placed on. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Get the canvas `x` coordinate position of the notehead. */\n getAbsoluteX() {\n // If the note has not been preformatted, then get the static x value\n // Otherwise, it's been formatted and we should use it's x value relative\n // to its tick context\n const x = !this.preFormatted ? this.x : super.getAbsoluteX();\n // For a more natural displaced notehead, we adjust the displacement amount\n // by half the stem width in order to maintain a slight overlap with the stem\n const displacementStemAdjustment = Stem.WIDTH / 2;\n const musicFont = Tables.currentMusicFont();\n const fontShift = musicFont.lookupMetric('notehead.shiftX', 0) * this.stem_direction;\n const displacedFontShift = musicFont.lookupMetric('noteHead.displaced.shiftX', 0) * this.stem_direction;\n return (x +\n fontShift +\n (this.displaced ? (this.width - displacementStemAdjustment) * this.stem_direction + displacedFontShift : 0));\n }\n /** Get the `BoundingBox` for the `NoteHead`. */\n getBoundingBox() {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getBoundingBox on an unformatted note.\");\n }\n const spacing = this.checkStave().getSpacingBetweenLines();\n const half_spacing = spacing / 2;\n const min_y = this.y - half_spacing;\n return new BoundingBox(this.getAbsoluteX(), min_y, this.width, spacing);\n }\n /** Set notehead to a provided `stave`. */\n setStave(stave) {\n const line = this.getLine();\n this.stave = stave;\n if (this.stave) {\n this.setY(this.stave.getYForNote(line));\n this.setContext(this.stave.getContext());\n }\n return this;\n }\n /** Pre-render formatting. */\n preFormat() {\n if (this.preFormatted)\n return this;\n const width = this.getWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx;\n this.setWidth(width);\n this.preFormatted = true;\n return this;\n }\n /** Draw the notehead. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let head_x = this.getAbsoluteX();\n if (this.custom_glyph) {\n // head_x += this.x_shift;\n head_x += this.stem_direction === Stem.UP ? this.stem_up_x_offset : this.stem_down_x_offset;\n }\n const y = this.y;\n L(\"Drawing note head '\", this.noteType, this.duration, \"' at\", head_x, y);\n // Begin and end positions for head.\n const stem_direction = this.stem_direction;\n const glyph_font_scale = this.render_options.glyph_font_scale;\n this.applyStyle(ctx);\n const categorySuffix = `${this.glyph_code}Stem${stem_direction === Stem.UP ? 'Up' : 'Down'}`;\n if (this.noteType === 's') {\n const staveSpace = this.checkStave().getSpacingBetweenLines();\n drawSlashNoteHead(ctx, this.duration, head_x, y, stem_direction, staveSpace);\n }\n else {\n Glyph.renderGlyph(ctx, head_x, y, glyph_font_scale, this.glyph_code, {\n category: this.custom_glyph ? `noteHead.custom.${categorySuffix}` : `noteHead.standard.${categorySuffix}`,\n });\n }\n this.restoreStyle(ctx);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.NoteHead.DEBUG` to `true`. */\nNoteHead.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// `StemmableNote` is an abstract interface for notes with optional stems.\n// Examples of stemmable notes are `StaveNote` and `TabNote`\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StemmableNote extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n }\n static get CATEGORY() {\n return Category.StemmableNote;\n }\n // Get and set the note's `Stem`\n getStem() {\n return this.stem;\n }\n checkStem() {\n if (!this.stem) {\n throw new RuntimeError('NoStem', 'No stem attached to instance');\n }\n return this.stem;\n }\n setStem(stem) {\n this.stem = stem;\n this.addChildElement(stem);\n return this;\n }\n // Builds and sets a new stem\n buildStem() {\n const stem = new Stem();\n this.setStem(stem);\n return this;\n }\n buildFlag(category = 'flag') {\n const { glyph } = this;\n if (this.hasFlag()) {\n const flagCode = this.getStemDirection() === Stem.DOWN ? glyph.code_flag_downstem : glyph.code_flag_upstem;\n this.flag = new Glyph(flagCode, this.render_options.glyph_font_scale, { category });\n }\n }\n // Get the custom glyph associated with the outer note head on the base of the stem.\n getBaseCustomNoteHeadGlyph() {\n if (this.getStemDirection() === Stem.DOWN) {\n return this.customGlyphs[this.customGlyphs.length - 1];\n }\n else {\n return this.customGlyphs[0];\n }\n }\n // Get the full length of stem\n getStemLength() {\n return Stem.HEIGHT + this.getStemExtension();\n }\n // Get the number of beams for this duration\n getBeamCount() {\n const glyph = this.getGlyph();\n if (glyph) {\n return glyph.beam_count;\n }\n else {\n return 0;\n }\n }\n // Get the minimum length of stem\n getStemMinimumLength() {\n const frac = Tables.durationToFraction(this.duration);\n let length = frac.value() <= 1 ? 0 : 20;\n // if note is flagged, cannot shorten beam\n switch (this.duration) {\n case '8':\n if (this.beam == undefined)\n length = 35;\n break;\n case '16':\n length = this.beam == undefined ? 35 : 25;\n break;\n case '32':\n length = this.beam == undefined ? 45 : 35;\n break;\n case '64':\n length = this.beam == undefined ? 50 : 40;\n break;\n case '128':\n length = this.beam == undefined ? 55 : 45;\n break;\n default:\n break;\n }\n return length;\n }\n // Get/set the direction of the stem\n getStemDirection() {\n if (!this.stem_direction)\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n return this.stem_direction;\n }\n setStemDirection(direction) {\n if (!direction)\n direction = Stem.UP;\n if (direction !== Stem.UP && direction !== Stem.DOWN) {\n throw new RuntimeError('BadArgument', `Invalid stem direction: ${direction}`);\n }\n this.stem_direction = direction;\n // Reset and reformat everything. Flag has to be built before calling getStemExtension.\n this.reset();\n if (this.hasFlag()) {\n this.buildFlag();\n }\n this.beam = undefined;\n if (this.stem) {\n this.stem.setDirection(direction);\n this.stem.setExtension(this.getStemExtension());\n // Lookup the base custom notehead (closest to the base of the stem) to extend or shorten\n // the stem appropriately. If there's no custom note head, lookup the standard notehead.\n const glyph = this.getBaseCustomNoteHeadGlyph() || this.getGlyph();\n // Get the font-specific customizations for the note heads.\n const offsets = Tables.currentMusicFont().lookupMetric(`stem.noteHead.${glyph.code_head}`, {\n offsetYBaseStemUp: 0,\n offsetYTopStemUp: 0,\n offsetYBaseStemDown: 0,\n offsetYTopStemDown: 0,\n });\n // Configure the stem to use these offsets.\n this.stem.setOptions({\n stem_up_y_offset: offsets.offsetYTopStemUp,\n stem_down_y_offset: offsets.offsetYTopStemDown,\n stem_up_y_base_offset: offsets.offsetYBaseStemUp,\n stem_down_y_base_offset: offsets.offsetYBaseStemDown, // glyph.stem_down_y_base_offset,\n });\n }\n if (this.preFormatted) {\n this.preFormat();\n }\n return this;\n }\n // Get the `x` coordinate of the stem\n getStemX() {\n const x_begin = this.getAbsoluteX() + this.x_shift;\n const x_end = this.getAbsoluteX() + this.x_shift + this.getGlyphWidth();\n const stem_x = this.stem_direction === Stem.DOWN ? x_begin : x_end;\n return stem_x;\n }\n // Get the `x` coordinate for the center of the glyph.\n // Used for `TabNote` stems and stemlets over rests\n getCenterGlyphX() {\n return this.getAbsoluteX() + this.x_shift + this.getGlyphWidth() / 2;\n }\n // Get the stem extension for the current duration\n getStemExtension() {\n const glyph = this.getGlyph();\n if (this.stem_extension_override != undefined) {\n return this.stem_extension_override;\n }\n // Use stem_beam_extension with beams\n if (this.beam) {\n return glyph.stem_beam_extension;\n }\n if (glyph) {\n return this.getStemDirection() === Stem.UP ? glyph.stem_up_extension : glyph.stem_down_extension;\n }\n return 0;\n }\n // Set the stem length to a specific. Will override the default length.\n setStemLength(height) {\n this.stem_extension_override = height - Stem.HEIGHT;\n return this;\n }\n // Get the top and bottom `y` values of the stem.\n getStemExtents() {\n if (!this.stem)\n throw new RuntimeError('NoStem', 'No stem attached to this note.');\n return this.stem.getExtents();\n }\n /** Gets the `y` value for the top modifiers at a specific `textLine`. */\n getYForTopText(textLine) {\n const stave = this.checkStave();\n if (this.hasStem()) {\n const extents = this.getStemExtents();\n if (!extents)\n throw new RuntimeError('InvalidState', 'Stem does not have extents.');\n return Math.min(stave.getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1));\n }\n else {\n return stave.getYForTopText(textLine);\n }\n }\n /** Gets the `y` value for the bottom modifiers at a specific `textLine`. */\n getYForBottomText(textLine) {\n const stave = this.checkStave();\n if (this.hasStem()) {\n const extents = this.getStemExtents();\n if (!extents)\n throw new RuntimeError('InvalidState', 'Stem does not have extents.');\n return Math.max(stave.getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine);\n }\n else {\n return stave.getYForBottomText(textLine);\n }\n }\n hasFlag() {\n return Tables.getGlyphProps(this.duration).flag && !this.beam;\n }\n /** Post formats the note. */\n postFormat() {\n var _a;\n (_a = this.beam) === null || _a === void 0 ? void 0 : _a.postFormat();\n this.postFormatted = true;\n return this;\n }\n /** Renders the stem onto the canvas. */\n drawStem(stemOptions) {\n var _a;\n this.checkContext();\n this.setRendered();\n this.setStem(new Stem(stemOptions));\n (_a = this.stem) === null || _a === void 0 ? void 0 : _a.setContext(this.getContext()).draw();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This file implements notes for standard notation. This consists of one or\n// more `NoteHeads`, an optional stem, and an optional flag.\n//\n// Throughout these comments, a \"note\" refers to the entire `StaveNote`,\n// and a \"key\" refers to a specific pitch/notehead within a note.\n//\n// See `tests/stavenote_tests.ts` for usage examples.\nimport { BoundingBox } from './boundingbox';\nimport { Modifier } from './modifier';\nimport { NoteHead } from './notehead';\nimport { Stem } from './stem';\nimport { StemmableNote } from './stemmablenote';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log, midLine, RuntimeError } from './util';\nfunction showDeprecationWarningForNoteHeads() {\n // eslint-disable-next-line\n console.warn('StaveNote.note_heads is deprecated. Use StaveNote.noteHeads instead.', 'This accessor will be removed in VexFlow 5.0.');\n}\n// To enable logging for this class. Set `Vex.Flow.StaveNote.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (StaveNote.DEBUG)\n log('Vex.Flow.StaveNote', args);\n}\nconst isInnerNoteIndex = (note, index) => index === (note.getStemDirection() === Stem.UP ? note.keyProps.length - 1 : 0);\n// Helper methods for rest positioning in ModifierContext.\nfunction shiftRestVertical(rest, note, dir) {\n const delta = dir;\n rest.line += delta;\n rest.maxLine += delta;\n rest.minLine += delta;\n rest.note.setKeyLine(0, rest.note.getKeyLine(0) + delta);\n}\n// Called from formatNotes :: center a rest between two notes\nfunction centerRest(rest, noteU, noteL) {\n const delta = rest.line - midLine(noteU.minLine, noteL.maxLine);\n rest.note.setKeyLine(0, rest.note.getKeyLine(0) - delta);\n rest.line -= delta;\n rest.maxLine -= delta;\n rest.minLine -= delta;\n}\nexport class StaveNote extends StemmableNote {\n constructor(noteStruct) {\n var _a, _b, _c;\n super(noteStruct);\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // INSTANCE MEMBERS\n this.minLine = 0;\n this.maxLine = 0;\n // Sorted variant of keyProps used internally\n this.sortedKeyProps = [];\n this.ledgerLineStyle = {};\n this.clef = (_a = noteStruct.clef) !== null && _a !== void 0 ? _a : 'treble';\n this.octave_shift = (_b = noteStruct.octave_shift) !== null && _b !== void 0 ? _b : 0;\n // Pull note rendering properties.\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n // if true, displace note to right\n this.displaced = false;\n this.dot_shiftY = 0;\n // for displaced ledger lines\n this.use_default_head_x = false;\n // Drawing\n this._noteHeads = [];\n this.modifiers = [];\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads and rests\n glyph_font_scale: noteStruct.glyph_font_scale || Tables.NOTATION_FONT_SCALE, \n // number of stroke px to the left and right of head\n stroke_px: noteStruct.stroke_px || StaveNote.LEDGER_LINE_OFFSET });\n this.calculateKeyProps();\n this.buildStem();\n // Set the stem direction\n if (noteStruct.auto_stem) {\n this.autoStem();\n }\n else {\n this.setStemDirection((_c = noteStruct.stem_direction) !== null && _c !== void 0 ? _c : Stem.UP);\n }\n this.reset();\n this.buildFlag();\n }\n static get CATEGORY() {\n return Category.StaveNote;\n }\n /**\n * @deprecated Use Stem.UP.\n */\n static get STEM_UP() {\n return Stem.UP;\n }\n /**\n * @deprecated Use Stem.DOWN.\n */\n static get STEM_DOWN() {\n return Stem.DOWN;\n }\n static get LEDGER_LINE_OFFSET() {\n return 3;\n }\n static get minNoteheadPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Format notes inside a ModifierContext. */\n static format(notes, state) {\n if (!notes || notes.length < 2)\n return false;\n const notesList = [];\n for (let i = 0; i < notes.length; i++) {\n // Formatting uses sortedKeyProps to calculate line and minL.\n const props = notes[i].sortedKeyProps;\n const line = props[0].keyProps.line;\n let minL = props[props.length - 1].keyProps.line;\n const stemDirection = notes[i].getStemDirection();\n const stemMax = notes[i].getStemLength() / 10;\n const stemMin = notes[i].getStemMinimumLength() / 10;\n let maxL;\n if (notes[i].isRest()) {\n maxL = line + notes[i].glyph.line_above;\n minL = line - notes[i].glyph.line_below;\n }\n else {\n maxL =\n stemDirection === 1 ? props[props.length - 1].keyProps.line + stemMax : props[props.length - 1].keyProps.line;\n minL = stemDirection === 1 ? props[0].keyProps.line : props[0].keyProps.line - stemMax;\n }\n notesList.push({\n line: props[0].keyProps.line,\n maxLine: maxL,\n minLine: minL,\n isrest: notes[i].isRest(),\n stemDirection: stemDirection,\n stemMax,\n stemMin,\n voice_shift: notes[i].getVoiceShiftWidth(),\n is_displaced: notes[i].isDisplaced(),\n note: notes[i],\n });\n }\n let voices = 0;\n let noteU = undefined;\n let noteM = undefined;\n let noteL = undefined;\n const draw = [false, false, false];\n for (let i = 0; i < notesList.length; i++) {\n draw[i] = notesList[i].note.render_options.draw == false ? false : true;\n }\n if (draw[0] && draw[1] && draw[2]) {\n // Three visible notes\n voices = 3;\n noteU = notesList[0];\n noteM = notesList[1];\n noteL = notesList[2];\n }\n else if (draw[0] && draw[1]) {\n // Two visible notes, 0 & 1\n voices = 2;\n noteU = notesList[0];\n noteL = notesList[1];\n }\n else if (draw[0] && draw[2]) {\n // Two visible notes, 0 & 2\n voices = 2;\n noteU = notesList[0];\n noteL = notesList[2];\n }\n else if (draw[1] && draw[2]) {\n // Two visible notes, 1 & 2\n voices = 2;\n noteU = notesList[1];\n noteL = notesList[2];\n }\n else {\n // No shift required for less than 2 visible notes\n return true;\n }\n // for two voice backward compatibility, ensure upper voice is stems up\n // for three voices, the voices must be in order (upper, middle, lower)\n if (voices === 2 && noteU.stemDirection === -1 && noteL.stemDirection === 1) {\n noteU = notesList[1];\n noteL = notesList[0];\n }\n const voiceXShift = Math.max(noteU.voice_shift, noteL.voice_shift);\n let xShift = 0;\n // Test for two voice note intersection\n if (voices === 2) {\n const lineSpacing = noteU.note.hasStem() && noteL.note.hasStem() && noteU.stemDirection === noteL.stemDirection ? 0.0 : 0.5;\n if (noteL.isrest && noteU.isrest && noteU.note.duration === noteL.note.duration) {\n noteL.note.render_options.draw = false;\n }\n else if (noteU.minLine <= noteL.maxLine + lineSpacing) {\n if (noteU.isrest) {\n // shift rest up\n shiftRestVertical(noteU, noteL, 1);\n }\n else if (noteL.isrest) {\n // shift rest down\n shiftRestVertical(noteL, noteU, -1);\n }\n else {\n //Instead of shifting notes, remove the appropriate flag\n //If we are sharing a line, switch one notes stem direction.\n //If we are sharing a line and in the same voice, only then offset one note\n const lineDiff = Math.abs(noteU.line - noteL.line);\n if (noteU.note.hasStem() && noteL.note.hasStem()) {\n //If we have different dot values, must offset\n //Or If we have a white mixed with a black notehead, must offset\n let whiteNoteHeadCount = 0;\n let blackNoteHeadCount = 0;\n if (Tables.durationToNumber(noteU.note.duration) === 2) {\n whiteNoteHeadCount++;\n }\n else if (Tables.durationToNumber(noteU.note.duration) > 2) {\n blackNoteHeadCount++;\n }\n if (Tables.durationToNumber(noteL.note.duration) === 2) {\n whiteNoteHeadCount++;\n }\n else if (Tables.durationToNumber(noteL.note.duration) > 2) {\n blackNoteHeadCount++;\n }\n if ((whiteNoteHeadCount !== 2 && blackNoteHeadCount !== 2) ||\n noteU.note.getModifiersByType(Category.Dot).length !== noteL.note.getModifiersByType(Category.Dot).length) {\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (lineDiff < 1 && lineDiff > 0) {\n //if the notes are quite close but not on the same line, shift\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (noteU.note.voice !== noteL.note.voice) {\n //If we are not in the same voice\n if (noteU.stemDirection === noteL.stemDirection) {\n if (noteU.line != noteL.line) {\n xShift = voiceXShift + 2;\n noteU.note.setXShift(xShift);\n }\n else {\n //same line, swap stem direction for one note\n if (noteL.stemDirection === 1) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n }\n }\n } //Very close whole notes\n }\n else if (lineDiff < 1) {\n xShift = voiceXShift + 2;\n if (noteU.stemDirection === noteL.stemDirection) {\n // upper voice is middle voice, so shift it right\n noteU.note.setXShift(xShift);\n }\n else {\n // shift lower voice right\n noteL.note.setXShift(xShift);\n }\n }\n else if (noteU.note.hasStem()) {\n noteU.stemDirection = -noteU.note.getStemDirection();\n noteU.note.setStemDirection(noteU.stemDirection);\n }\n else if (noteL.note.hasStem()) {\n noteL.stemDirection = -noteL.note.getStemDirection();\n noteL.note.setStemDirection(noteL.stemDirection);\n }\n }\n }\n // format complete\n state.right_shift += xShift;\n return true;\n }\n if (!noteM)\n throw new RuntimeError('InvalidState', 'noteM not defined.');\n // For three voices, test if rests can be repositioned\n //\n // Special case 1 :: middle voice rest between two notes\n //\n if (noteM.isrest && !noteU.isrest && !noteL.isrest) {\n if (noteU.minLine <= noteM.maxLine || noteM.minLine <= noteL.maxLine) {\n const restHeight = noteM.maxLine - noteM.minLine;\n const space = noteU.minLine - noteL.maxLine;\n if (restHeight < space) {\n // center middle voice rest between the upper and lower voices\n centerRest(noteM, noteU, noteL);\n }\n else {\n xShift = voiceXShift + 2; // shift middle rest right\n noteM.note.setXShift(xShift);\n if (noteL.note.hasBeam() === false) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n if (noteU.minLine <= noteL.maxLine && noteU.note.hasBeam() === false) {\n noteU.stemDirection = 1;\n noteU.note.setStemDirection(1);\n }\n }\n // format complete\n state.right_shift += xShift;\n return true;\n }\n }\n // Special case 2 :: all voices are rests\n if (noteU.isrest && noteM.isrest && noteL.isrest) {\n // Hide upper voice rest\n noteU.note.render_options.draw = false;\n // Hide lower voice rest\n noteL.note.render_options.draw = false;\n // format complete\n state.right_shift += xShift;\n return true;\n }\n // Test if any other rests can be repositioned\n if (noteM.isrest && noteU.isrest && noteM.minLine <= noteL.maxLine) {\n // Hide middle voice rest\n noteM.note.render_options.draw = false;\n }\n if (noteM.isrest && noteL.isrest && noteU.minLine <= noteM.maxLine) {\n // Hide middle voice rest\n noteM.note.render_options.draw = false;\n }\n if (noteU.isrest && noteU.minLine <= noteM.maxLine) {\n // shift upper voice rest up;\n shiftRestVertical(noteU, noteM, 1);\n }\n if (noteL.isrest && noteM.minLine <= noteL.maxLine) {\n // shift lower voice rest down\n shiftRestVertical(noteL, noteM, -1);\n }\n // If middle voice intersects upper or lower voice\n if (noteU.minLine <= noteM.maxLine + 0.5 || noteM.minLine <= noteL.maxLine) {\n // shift middle note right\n xShift = voiceXShift + 2;\n noteM.note.setXShift(xShift);\n if (noteL.note.hasBeam() === false) {\n noteL.stemDirection = -1;\n noteL.note.setStemDirection(-1);\n }\n if (noteU.minLine <= noteL.maxLine && noteU.note.hasBeam() === false) {\n noteU.stemDirection = 1;\n noteU.note.setStemDirection(1);\n }\n }\n state.right_shift += xShift;\n return true;\n }\n static postFormat(notes) {\n if (!notes)\n return false;\n notes.forEach((note) => note.postFormat());\n return true;\n }\n reset() {\n super.reset();\n // Save prior noteHead styles & reapply them after making new noteheads.\n const noteHeadStyles = this._noteHeads.map((noteHead) => noteHead.getStyle());\n this.buildNoteHeads();\n this._noteHeads.forEach((noteHead, index) => {\n const noteHeadStyle = noteHeadStyles[index];\n if (noteHeadStyle)\n noteHead.setStyle(noteHeadStyle);\n });\n const stave = this.stave;\n if (stave) {\n this._noteHeads.forEach((head) => head.setStave(stave));\n }\n this.calcNoteDisplacements();\n return this;\n }\n setBeam(beam) {\n this.beam = beam;\n this.calcNoteDisplacements();\n // Update stem extension if a beam is assigned.\n if (this.stem) {\n this.stem.setExtension(this.getStemExtension());\n }\n return this;\n }\n // Builds a `Stem` for the note\n buildStem() {\n this.setStem(new Stem({ hide: !!this.isRest() }));\n return this;\n }\n // Builds a `NoteHead` for each key in the note\n buildNoteHeads() {\n this._noteHeads = [];\n const stemDirection = this.getStemDirection();\n const keys = this.getKeys();\n let lastLine = undefined;\n let lineDiff = undefined;\n let displaced = false;\n // Draw notes from bottom to top.\n // For down-stem notes, we draw from top to bottom.\n let start;\n let end;\n let step;\n if (stemDirection === Stem.UP) {\n start = 0;\n end = keys.length;\n step = 1;\n }\n else {\n start = keys.length - 1;\n end = -1;\n step = -1;\n }\n for (let i = start; i !== end; i += step) {\n // Building noteheads rely on sortedKeNotes in order to calculate the displacements\n const noteProps = this.sortedKeyProps[i].keyProps;\n const line = noteProps.line;\n // Keep track of last line with a note head, so that consecutive heads\n // are correctly displaced.\n if (lastLine === undefined) {\n lastLine = line;\n }\n else {\n lineDiff = Math.abs(lastLine - line);\n if (lineDiff === 0 || lineDiff === 0.5) {\n displaced = !displaced;\n }\n else {\n displaced = false;\n this.use_default_head_x = true;\n }\n }\n lastLine = line;\n const notehead = new NoteHead({\n duration: this.duration,\n note_type: this.noteType,\n displaced,\n stem_direction: stemDirection,\n custom_glyph_code: noteProps.code,\n glyph_font_scale: this.render_options.glyph_font_scale,\n x_shift: noteProps.shift_right,\n stem_up_x_offset: noteProps.stem_up_x_offset,\n stem_down_x_offset: noteProps.stem_down_x_offset,\n line: noteProps.line,\n });\n this.addChildElement(notehead);\n this._noteHeads[this.sortedKeyProps[i].index] = notehead;\n }\n }\n // Automatically sets the stem direction based on the keys in the note\n autoStem() {\n this.setStemDirection(this.calculateOptimalStemDirection());\n }\n calculateOptimalStemDirection() {\n // Figure out optimal stem direction based on given notes\n // minLine & maxLine rely on sortedKeyProps\n this.minLine = this.sortedKeyProps[0].keyProps.line;\n this.maxLine = this.sortedKeyProps[this.keyProps.length - 1].keyProps.line;\n const MIDDLE_LINE = 3;\n const decider = (this.minLine + this.maxLine) / 2;\n const stemDirection = decider < MIDDLE_LINE ? Stem.UP : Stem.DOWN;\n return stemDirection;\n }\n // Calculates and stores the properties for each key in the note\n calculateKeyProps() {\n let lastLine;\n for (let i = 0; i < this.keys.length; ++i) {\n const key = this.keys[i];\n // All rests use the same position on the line.\n // if (this.glyph.rest) key = this.glyph.position;\n if (this.glyph.rest)\n this.glyph.position = key;\n const options = { octave_shift: this.octave_shift || 0, duration: this.duration };\n const props = Tables.keyProperties(key, this.clef, options);\n if (!props) {\n throw new RuntimeError('BadArguments', `Invalid key for note properties: ${key}`);\n }\n // Override line placement for default rests\n if (props.key === 'R') {\n if (this.duration === '1' || this.duration === 'w') {\n props.line = 4;\n }\n else {\n props.line = 3;\n }\n }\n // Calculate displacement of this note\n const line = props.line;\n if (lastLine == undefined) {\n lastLine = line;\n }\n else {\n if (Math.abs(lastLine - line) === 0.5) {\n this.displaced = true;\n props.displaced = true;\n // Have to mark the previous note as\n // displaced as well, for modifier placement\n if (this.keyProps.length > 0) {\n this.keyProps[i - 1].displaced = true;\n }\n }\n }\n lastLine = line;\n this.keyProps.push(props);\n }\n // Sort the notes from lowest line to highest line in sortedKeyProps\n // Warn no longer required as keyProps remains unsorted\n this.keyProps.forEach((keyProps, index) => {\n this.sortedKeyProps.push({ keyProps, index });\n });\n this.sortedKeyProps.sort((a, b) => a.keyProps.line - b.keyProps.line);\n }\n // Get the `BoundingBox` for the entire note\n getBoundingBox() {\n var _a, _b;\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call getBoundingBox on an unformatted note.\");\n }\n const { width: w, modLeftPx, leftDisplacedHeadPx } = this.getMetrics();\n const x = this.getAbsoluteX() - modLeftPx - leftDisplacedHeadPx;\n let minY = 0;\n let maxY = 0;\n const halfLineSpacing = ((_b = (_a = this.getStave()) === null || _a === void 0 ? void 0 : _a.getSpacingBetweenLines()) !== null && _b !== void 0 ? _b : 0) / 2;\n const lineSpacing = halfLineSpacing * 2;\n if (this.isRest()) {\n const y = this.ys[0];\n const frac = Tables.durationToFraction(this.duration);\n if (frac.equals(1) || frac.equals(2)) {\n minY = y - halfLineSpacing;\n maxY = y + halfLineSpacing;\n }\n else {\n minY = y - this.glyph.line_above * lineSpacing;\n maxY = y + this.glyph.line_below * lineSpacing;\n }\n }\n else if (this.glyph.stem) {\n const ys = this.getStemExtents();\n ys.baseY += halfLineSpacing * this.getStemDirection();\n minY = Math.min(ys.topY, ys.baseY);\n maxY = Math.max(ys.topY, ys.baseY);\n }\n else {\n minY = 0;\n maxY = 0;\n for (let i = 0; i < this.ys.length; ++i) {\n const yy = this.ys[i];\n if (i === 0) {\n minY = yy;\n maxY = yy;\n }\n else {\n minY = Math.min(yy, minY);\n maxY = Math.max(yy, maxY);\n }\n }\n minY -= halfLineSpacing;\n maxY += halfLineSpacing;\n }\n return new BoundingBox(x, minY, w, maxY - minY);\n }\n // Gets the line number of the bottom note in the chord.\n // If `isTopNote` is `true` then get the top note's line number instead\n getLineNumber(isTopNote) {\n if (!this.keyProps.length) {\n throw new RuntimeError('NoKeyProps', \"Can't get bottom note line, because note is not initialized properly.\");\n }\n let resultLine = this.keyProps[0].line;\n // No precondition assumed for sortedness of keyProps array\n for (let i = 0; i < this.keyProps.length; i++) {\n const thisLine = this.keyProps[i].line;\n if (isTopNote) {\n if (thisLine > resultLine)\n resultLine = thisLine;\n }\n else {\n if (thisLine < resultLine)\n resultLine = thisLine;\n }\n }\n return resultLine;\n }\n /**\n * @returns true if this note is a type of rest. Rests don't have pitches, but take up space in the score.\n */\n isRest() {\n return this.glyph.rest;\n }\n // Determine if the current note is a chord\n isChord() {\n return !this.isRest() && this.keys.length > 1;\n }\n // Determine if the `StaveNote` has a stem\n hasStem() {\n return this.glyph.stem;\n }\n hasFlag() {\n return super.hasFlag() && !this.isRest();\n }\n getStemX() {\n if (this.noteType === 'r') {\n return this.getCenterGlyphX();\n }\n else {\n // We adjust the origin of the stem because we want the stem left-aligned\n // with the notehead if stemmed-down, and right-aligned if stemmed-up\n return super.getStemX() + (this.stem_direction ? Stem.WIDTH / (2 * -this.stem_direction) : 0);\n }\n }\n // Get the `y` coordinate for text placed on the top/bottom of a\n // note at a desired `text_line`\n getYForTopText(textLine) {\n const extents = this.getStemExtents();\n return Math.min(this.checkStave().getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1));\n }\n getYForBottomText(textLine) {\n const extents = this.getStemExtents();\n return Math.max(this.checkStave().getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine);\n }\n // Sets the current note to the provided `stave`. This applies\n // `y` values to the `NoteHeads`.\n setStave(stave) {\n super.setStave(stave);\n const ys = this._noteHeads.map((notehead) => {\n notehead.setStave(stave);\n return notehead.getY();\n });\n this.setYs(ys);\n if (this.stem) {\n const { y_top, y_bottom } = this.getNoteHeadBounds();\n this.stem.setYBounds(y_top, y_bottom);\n }\n return this;\n }\n // Check if note is shifted to the right\n isDisplaced() {\n return this.displaced;\n }\n // Sets whether shift note to the right. `displaced` is a `boolean`\n setNoteDisplaced(displaced) {\n this.displaced = displaced;\n return this;\n }\n // Get the starting `x` coordinate for a `StaveTie`\n getTieRightX() {\n let tieStartX = this.getAbsoluteX();\n tieStartX += this.getGlyphWidth() + this.x_shift + this.rightDisplacedHeadPx;\n if (this.modifierContext)\n tieStartX += this.modifierContext.getRightShift();\n return tieStartX;\n }\n // Get the ending `x` coordinate for a `StaveTie`\n getTieLeftX() {\n let tieEndX = this.getAbsoluteX();\n tieEndX += this.x_shift - this.leftDisplacedHeadPx;\n return tieEndX;\n }\n // Get the stave line on which to place a rest\n getLineForRest() {\n let restLine = this.keyProps[0].line;\n if (this.keyProps.length > 1) {\n const lastLine = this.keyProps[this.keyProps.length - 1].line;\n const top = Math.max(restLine, lastLine);\n const bot = Math.min(restLine, lastLine);\n restLine = midLine(top, bot);\n }\n return restLine;\n }\n // Get the default `x` and `y` coordinates for the provided `position`\n // and key `index`\n getModifierStartXY(position, index, options = {}) {\n var _a, _b;\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-Values calculated for this note.');\n }\n const { ABOVE, BELOW, LEFT, RIGHT } = Modifier.Position;\n let x = 0;\n if (position === LEFT) {\n // FIXME: Left modifier padding, move to font file\n x = -1 * 2;\n }\n else if (position === RIGHT) {\n // FIXME: Right modifier padding, move to font file\n x = this.getGlyphWidth() + this.x_shift + 2;\n if (this.stem_direction === Stem.UP &&\n this.hasFlag() &&\n (options.forceFlagRight || isInnerNoteIndex(this, index))) {\n x += (_b = (_a = this === null || this === void 0 ? void 0 : this.flag) === null || _a === void 0 ? void 0 : _a.getMetrics().width) !== null && _b !== void 0 ? _b : 0;\n }\n }\n else if (position === BELOW || position === ABOVE) {\n x = this.getGlyphWidth() / 2;\n }\n return {\n x: this.getAbsoluteX() + x,\n y: this.ys[index],\n };\n }\n // Sets the style of the complete StaveNote, including all keys\n // and the stem.\n setStyle(style) {\n return super.setGroupStyle(style);\n }\n setStemStyle(style) {\n const stem = this.getStem();\n if (stem)\n stem.setStyle(style);\n return this;\n }\n getStemStyle() {\n var _a;\n return (_a = this.stem) === null || _a === void 0 ? void 0 : _a.getStyle();\n }\n setLedgerLineStyle(style) {\n this.ledgerLineStyle = style;\n }\n getLedgerLineStyle() {\n return this.ledgerLineStyle;\n }\n setFlagStyle(style) {\n var _a;\n (_a = this.flag) === null || _a === void 0 ? void 0 : _a.setStyle(style);\n }\n getFlagStyle() {\n var _a;\n return (_a = this.flag) === null || _a === void 0 ? void 0 : _a.getStyle();\n }\n // Sets the notehead at `index` to the provided coloring `style`.\n //\n // `style` is an `object` with the following properties: `shadowColor`,\n // `shadowBlur`, `fillStyle`, `strokeStyle`\n setKeyStyle(index, style) {\n this._noteHeads[index].setStyle(style);\n return this;\n }\n setKeyLine(index, line) {\n this.keyProps[index].line = line;\n this.reset();\n return this;\n }\n getKeyLine(index) {\n return this.keyProps[index].line;\n }\n // Get the width of the note if it is displaced. Used for `Voice`\n // formatting\n getVoiceShiftWidth() {\n // TODO: may need to accommodate for dot here.\n return this.getGlyphWidth() * (this.displaced ? 2 : 1);\n }\n // Calculates and sets the extra pixels to the left or right\n // if the note is displaced.\n calcNoteDisplacements() {\n this.setLeftDisplacedHeadPx(this.displaced && this.stem_direction === Stem.DOWN ? this.getGlyphWidth() : 0);\n // For upstems with flags, the extra space is unnecessary, since it's taken\n // up by the flag.\n this.setRightDisplacedHeadPx(!this.hasFlag() && this.displaced && this.stem_direction === Stem.UP ? this.getGlyphWidth() : 0);\n }\n // Pre-render formatting\n preFormat() {\n if (this.preFormatted)\n return;\n let noteHeadPadding = 0;\n if (this.modifierContext) {\n this.modifierContext.preFormat();\n // If there are no modifiers on this note, make sure there is adequate padding\n // between the notes.\n if (this.modifierContext.getWidth() === 0) {\n noteHeadPadding = StaveNote.minNoteheadPadding;\n }\n }\n let width = this.getGlyphWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx + noteHeadPadding;\n // For upward flagged notes, the width of the flag needs to be added\n if (this.shouldDrawFlag() && this.stem_direction === Stem.UP) {\n width += this.getGlyphWidth();\n // TODO: Add flag width as a separate metric\n }\n this.setWidth(width);\n this.preFormatted = true;\n }\n /**\n * @typedef {Object} noteHeadBounds\n * @property {number} y_top the highest notehead bound\n * @property {number} y_bottom the lowest notehead bound\n * @property {number|Null} displaced_x the starting x for displaced noteheads\n * @property {number|Null} non_displaced_x the starting x for non-displaced noteheads\n * @property {number} highest_line the highest notehead line in traditional music line\n * numbering (bottom line = 1, top line = 5)\n * @property {number} lowest_line the lowest notehead line\n * @property {number|false} highest_displaced_line the highest staff line number\n * for a displaced notehead\n * @property {number|false} lowest_displaced_line\n * @property {number} highest_non_displaced_line\n * @property {number} lowest_non_displaced_line\n */\n /**\n * Get the staff line and y value for the highest & lowest noteheads\n * @returns {noteHeadBounds}\n */\n getNoteHeadBounds() {\n // Top and bottom Y values for stem.\n let yTop = +Infinity;\n let yBottom = -Infinity;\n let nonDisplacedX;\n let displacedX;\n let highestLine = this.checkStave().getNumLines();\n let lowestLine = 1;\n let highestDisplacedLine;\n let lowestDisplacedLine;\n let highestNonDisplacedLine = highestLine;\n let lowestNonDisplacedLine = lowestLine;\n this._noteHeads.forEach((notehead) => {\n const line = notehead.getLine();\n const y = notehead.getY();\n yTop = Math.min(y, yTop);\n yBottom = Math.max(y, yBottom);\n if (displacedX === undefined && notehead.isDisplaced()) {\n displacedX = notehead.getAbsoluteX();\n }\n if (nonDisplacedX === undefined && !notehead.isDisplaced()) {\n nonDisplacedX = notehead.getAbsoluteX();\n }\n highestLine = Math.max(line, highestLine);\n lowestLine = Math.min(line, lowestLine);\n if (notehead.isDisplaced()) {\n highestDisplacedLine = highestDisplacedLine === undefined ? line : Math.max(line, highestDisplacedLine);\n lowestDisplacedLine = lowestDisplacedLine === undefined ? line : Math.min(line, lowestDisplacedLine);\n }\n else {\n highestNonDisplacedLine = Math.max(line, highestNonDisplacedLine);\n lowestNonDisplacedLine = Math.min(line, lowestNonDisplacedLine);\n }\n }, this);\n return {\n y_top: yTop,\n y_bottom: yBottom,\n displaced_x: displacedX,\n non_displaced_x: nonDisplacedX,\n highest_line: highestLine,\n lowest_line: lowestLine,\n highest_displaced_line: highestDisplacedLine,\n lowest_displaced_line: lowestDisplacedLine,\n highest_non_displaced_line: highestNonDisplacedLine,\n lowest_non_displaced_line: lowestNonDisplacedLine,\n };\n }\n // Get the starting `x` coordinate for the noteheads\n getNoteHeadBeginX() {\n return this.getAbsoluteX() + this.x_shift;\n }\n // Get the ending `x` coordinate for the noteheads\n getNoteHeadEndX() {\n const xBegin = this.getNoteHeadBeginX();\n return xBegin + this.getGlyphWidth();\n }\n get noteHeads() {\n return this._noteHeads.slice();\n }\n /** @deprecated use StaveNote.noteHeads instead. */\n get note_heads() {\n showDeprecationWarningForNoteHeads();\n return this.noteHeads;\n }\n // Draw the ledger lines between the stave and the highest/lowest keys\n drawLedgerLines() {\n const stave = this.checkStave();\n const { glyph, render_options: { stroke_px }, } = this;\n const ctx = this.checkContext();\n const width = glyph.getWidth() + stroke_px * 2;\n const doubleWidth = 2 * (glyph.getWidth() + stroke_px) - Stem.WIDTH / 2;\n if (this.isRest())\n return;\n if (!ctx) {\n throw new RuntimeError('NoCanvasContext', \"Can't draw without a canvas context.\");\n }\n const { highest_line, lowest_line, highest_displaced_line, highest_non_displaced_line, lowest_displaced_line, lowest_non_displaced_line, displaced_x, non_displaced_x, } = this.getNoteHeadBounds();\n // Early out if there are no ledger lines to draw.\n if (highest_line < 6 && lowest_line > 0)\n return;\n const min_x = Math.min(displaced_x !== null && displaced_x !== void 0 ? displaced_x : 0, non_displaced_x !== null && non_displaced_x !== void 0 ? non_displaced_x : 0);\n const drawLedgerLine = (y, normal, displaced) => {\n let x;\n if (displaced && normal)\n x = min_x - stroke_px;\n else if (normal)\n x = (non_displaced_x !== null && non_displaced_x !== void 0 ? non_displaced_x : 0) - stroke_px;\n else\n x = (displaced_x !== null && displaced_x !== void 0 ? displaced_x : 0) - stroke_px;\n const ledgerWidth = normal && displaced ? doubleWidth : width;\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.lineTo(x + ledgerWidth, y);\n ctx.stroke();\n };\n const style = Object.assign(Object.assign({}, stave.getDefaultLedgerLineStyle()), this.getLedgerLineStyle());\n this.applyStyle(ctx, style);\n // Draw ledger lines below the staff:\n for (let line = 6; line <= highest_line; ++line) {\n const normal = non_displaced_x !== undefined && line <= highest_non_displaced_line;\n const displaced = highest_displaced_line !== undefined && line <= highest_displaced_line;\n drawLedgerLine(stave.getYForNote(line), normal, displaced);\n }\n // Draw ledger lines above the staff:\n for (let line = 0; line >= lowest_line; --line) {\n const normal = non_displaced_x !== undefined && line >= lowest_non_displaced_line;\n const displaced = lowest_displaced_line !== undefined && line >= lowest_displaced_line;\n drawLedgerLine(stave.getYForNote(line), normal, displaced);\n }\n this.restoreStyle(ctx, style);\n }\n // Draw all key modifiers\n drawModifiers(noteheadParam) {\n const ctx = this.checkContext();\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n const index = modifier.checkIndex();\n const notehead = this._noteHeads[index];\n if (notehead == noteheadParam) {\n const noteheadStyle = notehead.getStyle();\n notehead.applyStyle(ctx, noteheadStyle);\n modifier.setContext(ctx);\n modifier.drawWithStyle();\n notehead.restoreStyle(ctx, noteheadStyle);\n }\n }\n }\n shouldDrawFlag() {\n const hasStem = this.stem !== undefined;\n const hasFlag = this.glyph.flag; // specified in tables.js\n const hasNoBeam = this.beam === undefined;\n return hasStem && hasFlag && hasNoBeam;\n }\n // Draw the flag for the note\n drawFlag() {\n var _a, _b, _c, _d, _e;\n const ctx = this.checkContext();\n if (!ctx) {\n throw new RuntimeError('NoCanvasContext', \"Can't draw without a canvas context.\");\n }\n if (this.shouldDrawFlag()) {\n const { y_top, y_bottom } = this.getNoteHeadBounds();\n // eslint-disable-next-line\n const noteStemHeight = this.stem.getHeight();\n const flagX = this.getStemX();\n // What's with the magic +/- 2\n // ANSWER: a corner of the note stem pokes out beyond the tip of the flag.\n // The extra +/- 2 pushes the flag glyph outward so it covers the stem entirely.\n // Alternatively, we could shorten the stem.\n const flagY = this.getStemDirection() === Stem.DOWN\n ? // Down stems are below the note head and have flags on the right.\n y_top -\n noteStemHeight +\n 2 -\n (this.glyph ? this.glyph.stem_down_extension : 0) * this.getStaveNoteScale() -\n ((_b = (_a = this.flag) === null || _a === void 0 ? void 0 : _a.getMetrics().y_shift) !== null && _b !== void 0 ? _b : 0) * (1 - this.getStaveNoteScale())\n : // Up stems are above the note head and have flags on the right.\n y_bottom -\n noteStemHeight -\n 2 +\n (this.glyph ? this.glyph.stem_up_extension : 0) * this.getStaveNoteScale() -\n ((_d = (_c = this.flag) === null || _c === void 0 ? void 0 : _c.getMetrics().y_shift) !== null && _d !== void 0 ? _d : 0) * (1 - this.getStaveNoteScale());\n // Draw the Flag\n (_e = this.flag) === null || _e === void 0 ? void 0 : _e.render(ctx, flagX, flagY);\n }\n }\n // Draw the NoteHeads\n drawNoteHeads() {\n const ctx = this.checkContext();\n this._noteHeads.forEach((notehead) => {\n ctx.openGroup('notehead', notehead.getAttribute('id'), { pointerBBox: true });\n notehead.setContext(ctx).draw();\n this.drawModifiers(notehead);\n ctx.closeGroup();\n });\n }\n drawStem(stemOptions) {\n // GCR TODO: I can't find any context in which this is called with the stemStruct\n // argument in the codebase or tests. Nor can I find a case where super.drawStem\n // is called at all. Perhaps these should be removed?\n const ctx = this.checkContext();\n if (stemOptions) {\n this.setStem(new Stem(stemOptions));\n }\n // If we will render a flag, we shorten the stem so that the tip\n // does not poke through the flag.\n if (this.shouldDrawFlag() && this.stem) {\n this.stem.adjustHeightForFlag();\n }\n if (this.stem) {\n this.stem.setContext(ctx).draw();\n }\n }\n /** Primarily used as the scaling factor for grace notes, GraceNote will return the required scale. */\n getStaveNoteScale() {\n return 1.0;\n }\n /**\n * Override stemmablenote stem extension to adjust for distance from middle line.\n */\n getStemExtension() {\n const super_stem_extension = super.getStemExtension();\n if (!this.glyph.stem) {\n return super_stem_extension;\n }\n const stem_direction = this.getStemDirection();\n if (stem_direction !== this.calculateOptimalStemDirection()) {\n return super_stem_extension; // no adjustment for manually set stem direction.\n }\n let mid_line_distance;\n const MIDDLE_LINE = 3;\n if (stem_direction === Stem.UP) {\n // Note that the use of maxLine here instead of minLine might\n // seem counterintuitive, but in the case of (say) treble clef\n // chord(F2, E4) stem up, we do not want to extend the stem because\n // of F2, when a normal octave-length stem above E4 is fine.\n //\n // maxLine and minLine are set in calculateOptimalStemDirection() so\n // will be known.\n mid_line_distance = MIDDLE_LINE - this.maxLine;\n }\n else {\n mid_line_distance = this.minLine - MIDDLE_LINE;\n }\n // how many lines more than an octave is the relevant notehead?\n const lines_over_octave_from_mid_line = mid_line_distance - 3.5;\n if (lines_over_octave_from_mid_line <= 0) {\n return super_stem_extension;\n }\n const stave = this.getStave();\n let spacing_between_lines = 10;\n if (stave != undefined) {\n spacing_between_lines = stave.getSpacingBetweenLines();\n }\n return super_stem_extension + lines_over_octave_from_mid_line * spacing_between_lines;\n }\n // Draws all the `StaveNote` parts. This is the main drawing method.\n draw() {\n if (this.render_options.draw === false)\n return;\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', \"Can't draw note without Y values.\");\n }\n const ctx = this.checkContext();\n const xBegin = this.getNoteHeadBeginX();\n const shouldRenderStem = this.hasStem() && !this.beam;\n // Format note head x positions\n this._noteHeads.forEach((notehead) => notehead.setX(xBegin));\n if (this.stem) {\n // Format stem x positions\n const stemX = this.getStemX();\n this.stem.setNoteHeadXBounds(stemX, stemX);\n }\n L('Rendering ', this.isChord() ? 'chord :' : 'note :', this.keys);\n // Apply the overall style -- may be contradicted by local settings:\n this.applyStyle();\n ctx.openGroup('stavenote', this.getAttribute('id'));\n this.drawLedgerLines();\n if (shouldRenderStem)\n this.drawStem();\n this.drawNoteHeads();\n this.drawFlag();\n ctx.closeGroup();\n this.restoreStyle();\n this.setRendered();\n }\n}\nStaveNote.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveTie extends Element {\n /**\n * @param notes is a struct that has:\n *\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n *\n * @param text\n */\n constructor(notes, text) {\n super();\n this.setNotes(notes);\n this.text = text;\n this.render_options = {\n cp1: 8,\n cp2: 12,\n text_shift_x: 0,\n first_x_shift: 0,\n last_x_shift: 0,\n y_shift: 7,\n tie_spacing: 0,\n };\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveTie;\n }\n setDirection(direction) {\n this.direction = direction;\n return this;\n }\n /**\n * Set the notes to attach this tie to.\n *\n * @param {!Object} notes The notes to tie up.\n */\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Tie needs to have either first_note or last_note set.');\n }\n if (!notes.first_indices) {\n notes.first_indices = [0];\n }\n if (!notes.last_indices) {\n notes.last_indices = [0];\n }\n if (notes.first_indices.length !== notes.last_indices.length) {\n throw new RuntimeError('BadArguments', 'Tied notes must have same number of indices.');\n }\n this.notes = notes;\n return this;\n }\n /**\n * @return {boolean} Returns true if this is a partial bar.\n */\n isPartial() {\n return !this.notes.first_note || !this.notes.last_note;\n }\n renderTie(params) {\n if (params.first_ys.length === 0 || params.last_ys.length === 0) {\n throw new RuntimeError('BadArguments', 'No Y-values to render');\n }\n const ctx = this.checkContext();\n let cp1 = this.render_options.cp1;\n let cp2 = this.render_options.cp2;\n if (Math.abs(params.last_x_px - params.first_x_px) < 10) {\n cp1 = 2;\n cp2 = 8;\n }\n const first_x_shift = this.render_options.first_x_shift;\n const last_x_shift = this.render_options.last_x_shift;\n const y_shift = this.render_options.y_shift * params.direction;\n // setNotes(...) verified that first_indices and last_indices are not undefined.\n // As a result, we use the ! non-null assertion operator here.\n // eslint-disable-next-line\n const first_indices = this.notes.first_indices;\n // eslint-disable-next-line\n const last_indices = this.notes.last_indices;\n for (let i = 0; i < first_indices.length; ++i) {\n const cp_x = (params.last_x_px + last_x_shift + (params.first_x_px + first_x_shift)) / 2;\n const first_y_px = params.first_ys[first_indices[i]] + y_shift;\n const last_y_px = params.last_ys[last_indices[i]] + y_shift;\n if (isNaN(first_y_px) || isNaN(last_y_px)) {\n throw new RuntimeError('BadArguments', 'Bad indices for tie rendering.');\n }\n const top_cp_y = (first_y_px + last_y_px) / 2 + cp1 * params.direction;\n const bottom_cp_y = (first_y_px + last_y_px) / 2 + cp2 * params.direction;\n ctx.openGroup('stavetie', this.getAttribute('id'));\n ctx.beginPath();\n ctx.moveTo(params.first_x_px + first_x_shift, first_y_px);\n ctx.quadraticCurveTo(cp_x, top_cp_y, params.last_x_px + last_x_shift, last_y_px);\n ctx.quadraticCurveTo(cp_x, bottom_cp_y, params.first_x_px + first_x_shift, first_y_px);\n ctx.closePath();\n ctx.fill();\n ctx.closeGroup();\n }\n }\n renderText(first_x_px, last_x_px) {\n var _a, _b, _c;\n if (!this.text)\n return;\n const ctx = this.checkContext();\n let center_x = (first_x_px + last_x_px) / 2;\n center_x -= ctx.measureText(this.text).width / 2;\n const stave = (_b = (_a = this.notes.first_note) === null || _a === void 0 ? void 0 : _a.checkStave()) !== null && _b !== void 0 ? _b : (_c = this.notes.last_note) === null || _c === void 0 ? void 0 : _c.checkStave();\n if (stave) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText(this.text, center_x + this.render_options.text_shift_x, stave.getYForTopText() - 1);\n ctx.restore();\n }\n }\n /**\n * Returns the TieNotes structure of the first and last note this tie connects.\n */\n getNotes() {\n return this.notes;\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const first_note = this.notes.first_note;\n const last_note = this.notes.last_note;\n // Provide some default values so the compiler doesn't complain.\n let first_x_px = 0;\n let last_x_px = 0;\n let first_ys = [0];\n let last_ys = [0];\n let stem_direction = 0;\n if (first_note) {\n first_x_px = first_note.getTieRightX() + this.render_options.tie_spacing;\n stem_direction = first_note.getStemDirection();\n first_ys = first_note.getYs();\n }\n else if (last_note) {\n const stave = last_note.checkStave();\n first_x_px = stave.getTieStartX();\n first_ys = last_note.getYs();\n this.notes.first_indices = this.notes.last_indices;\n }\n if (last_note) {\n last_x_px = last_note.getTieLeftX() + this.render_options.tie_spacing;\n stem_direction = last_note.getStemDirection();\n last_ys = last_note.getYs();\n }\n else if (first_note) {\n const stave = first_note.checkStave();\n last_x_px = stave.getTieEndX();\n last_ys = first_note.getYs();\n this.notes.last_indices = this.notes.first_indices;\n }\n if (this.direction) {\n stem_direction = this.direction;\n }\n this.renderTie({\n first_x_px,\n last_x_px,\n first_ys,\n last_ys,\n direction: stem_direction,\n });\n this.renderText(first_x_px, last_x_px);\n return true;\n }\n}\n/** Default text font. */\nStaveTie.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","// / [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { StaveTie } from './stavetie';\nimport { Category } from './typeguard';\nexport class TabTie extends StaveTie {\n static get CATEGORY() {\n return Category.TabTie;\n }\n static createHammeron(notes) {\n return new TabTie(notes, 'H');\n }\n static createPulloff(notes) {\n return new TabTie(notes, 'P');\n }\n /**\n * @param notes is a struct that has:\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n *\n * @param text\n */\n constructor(notes, text) {\n super(notes, text);\n this.render_options.cp1 = 9;\n this.render_options.cp2 = 11;\n this.render_options.y_shift = 3;\n this.direction = -1; // Tab tie's are always face up.\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var VoiceMode;\n(function (VoiceMode) {\n VoiceMode[VoiceMode[\"STRICT\"] = 1] = \"STRICT\";\n VoiceMode[VoiceMode[\"SOFT\"] = 2] = \"SOFT\";\n VoiceMode[VoiceMode[\"FULL\"] = 3] = \"FULL\";\n})(VoiceMode || (VoiceMode = {}));\n/**\n * `Voice` is mainly a container object to group `Tickables` for formatting.\n */\nexport class Voice extends Element {\n constructor(time) {\n super();\n this.resolutionMultiplier = 1;\n this.mode = VoiceMode.STRICT;\n this.preFormatted = false;\n this.ticksUsed = new Fraction(0, 1);\n this.largestTickWidth = 0;\n this.tickables = [];\n this.options = {\n softmaxFactor: Tables.SOFTMAX_FACTOR,\n };\n // Convert the `time` string into a VoiceTime object if necessary.\n let voiceTime;\n if (typeof time === 'string') {\n // Time signature shortcut: \"4/4\", \"3/8\", etc.\n const match = time.match(/(\\d+)\\/(\\d+)/);\n if (match) {\n voiceTime = {\n num_beats: parseInt(match[1]),\n beat_value: parseInt(match[2]),\n };\n }\n }\n else {\n voiceTime = time;\n }\n // Default time signature is 4/4.\n this.time = Object.assign({ num_beats: 4, beat_value: 4, resolution: Tables.RESOLUTION }, voiceTime);\n // Recalculate total ticks.\n this.totalTicks = new Fraction(this.time.num_beats * (this.time.resolution / this.time.beat_value), 1);\n this.smallestTickCount = this.totalTicks.clone();\n }\n static get CATEGORY() {\n return Category.Voice;\n }\n /**\n * Modes allow the addition of ticks in three different ways:\n * - STRICT: This is the default. Ticks must fill the voice.\n * - SOFT: Ticks can be added without restrictions.\n * - FULL: Ticks do not need to fill the voice, but can't exceed the maximum tick length.\n */\n static get Mode() {\n return VoiceMode;\n }\n /** Get the total ticks in the voice. */\n getTotalTicks() {\n return this.totalTicks;\n }\n /** Get the total ticks used in the voice by all the tickables. */\n getTicksUsed() {\n return this.ticksUsed;\n }\n /** Get the largest width of all the tickables. */\n getLargestTickWidth() {\n return this.largestTickWidth;\n }\n /** Get the tick count for the shortest tickable */\n getSmallestTickCount() {\n return this.smallestTickCount;\n }\n /** Get the tickables in the voice. */\n getTickables() {\n return this.tickables;\n }\n /** Get the voice mode. */\n getMode() {\n return this.mode;\n }\n /**\n * Set the voice mode.\n * @param mode value from `VoiceMode`\n */\n setMode(mode) {\n this.mode = mode;\n return this;\n }\n /** Get the resolution multiplier for the voice. */\n getResolutionMultiplier() {\n return this.resolutionMultiplier;\n }\n /** Get the actual tick resolution for the voice. */\n getActualResolution() {\n return this.resolutionMultiplier * this.time.resolution;\n }\n /** Set the voice's stave. */\n setStave(stave) {\n this.stave = stave;\n // Reset the bounding box so we can reformat.\n this.boundingBox = undefined;\n return this;\n }\n getStave() {\n return this.stave;\n }\n /** Get the bounding box for the voice. */\n getBoundingBox() {\n if (!this.boundingBox) {\n const stave = this.checkStave();\n let boundingBox = undefined;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n tickable.setStave(stave);\n const bb = tickable.getBoundingBox();\n if (bb) {\n boundingBox = boundingBox ? boundingBox.mergeWith(bb) : bb;\n }\n }\n this.boundingBox = boundingBox;\n }\n return this.boundingBox;\n }\n /** Set the voice mode to strict or soft. */\n setStrict(strict) {\n this.mode = strict ? VoiceMode.STRICT : VoiceMode.SOFT;\n return this;\n }\n /** Determine if the voice is complete according to the voice mode. */\n isComplete() {\n if (this.mode === VoiceMode.STRICT || this.mode === VoiceMode.FULL) {\n return this.ticksUsed.equals(this.totalTicks);\n }\n else {\n return true;\n }\n }\n /**\n * We use softmax to layout the tickables proportional to the exponent of\n * their duration. The softmax factor is used to determine the 'linearness' of\n * the layout.\n *\n * The softmax of all the tickables in this voice should sum to 1.\n */\n setSoftmaxFactor(factor) {\n this.options.softmaxFactor = factor;\n return this;\n }\n /**\n * Calculate the sum of the exponents of all the ticks in this voice to use\n * as the denominator of softmax.\n */\n reCalculateExpTicksUsed() {\n const totalTicks = this.ticksUsed.value();\n const exp = (tickable) => Math.pow(this.options.softmaxFactor, tickable.getTicks().value() / totalTicks);\n this.expTicksUsed = this.tickables.map(exp).reduce((a, b) => a + b, 0);\n return this.expTicksUsed;\n }\n /** Get the softmax-scaled value of a tick duration. 'tickValue' is a number. */\n softmax(tickValue) {\n if (!this.expTicksUsed) {\n this.expTicksUsed = this.reCalculateExpTicksUsed();\n }\n const totalTicks = this.ticksUsed.value();\n const exp = (v) => Math.pow(this.options.softmaxFactor, v / totalTicks);\n const sm = exp(tickValue) / this.expTicksUsed;\n return sm;\n }\n /** Add a tickable to the voice. */\n addTickable(tickable) {\n if (!tickable.shouldIgnoreTicks()) {\n const ticks = tickable.getTicks();\n // Update the total ticks for this line.\n this.ticksUsed.add(ticks);\n this.expTicksUsed = 0; // reset\n if ((this.mode === VoiceMode.STRICT || this.mode === VoiceMode.FULL) &&\n this.ticksUsed.greaterThan(this.totalTicks)) {\n this.ticksUsed.subtract(ticks);\n throw new RuntimeError('BadArgument', 'Too many ticks.');\n }\n // Track the smallest tickable for formatting.\n if (ticks.lessThan(this.smallestTickCount)) {\n this.smallestTickCount = ticks.clone();\n }\n this.resolutionMultiplier = this.ticksUsed.denominator;\n // Expand total ticks using denominator from ticks used.\n this.totalTicks.add(0, this.ticksUsed.denominator);\n }\n // Add the tickable to the line.\n this.tickables.push(tickable);\n tickable.setVoice(this);\n return this;\n }\n /** Add an array of tickables to the voice. */\n addTickables(tickables) {\n for (let i = 0; i < tickables.length; ++i) {\n this.addTickable(tickables[i]);\n }\n return this;\n }\n /** Preformat the voice by applying the voice's stave to each note. */\n preFormat() {\n if (this.preFormatted)\n return this;\n const stave = this.checkStave();\n this.tickables.forEach((tickable) => {\n if (!tickable.getStave()) {\n tickable.setStave(stave);\n }\n });\n this.preFormatted = true;\n return this;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n /**\n * Render the voice onto the canvas `context` and an optional `stave`.\n * If `stave` is omitted, it is expected that the notes have staves\n * already set.\n *\n * This method also calculates the voice's boundingBox while drawing\n * the notes. Note the similarities with this.getBoundingBox().\n */\n draw(context = this.checkContext(), stave) {\n stave = stave !== null && stave !== void 0 ? stave : this.stave;\n this.setRendered();\n let boundingBox = undefined;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n // Set the stave if provided.\n if (stave) {\n tickable.setStave(stave);\n }\n defined(tickable.getStave(), 'MissingStave', 'The voice cannot draw tickables without staves.');\n const bb = tickable.getBoundingBox();\n if (bb) {\n boundingBox = boundingBox ? boundingBox.mergeWith(bb) : bb;\n }\n tickable.setContext(context);\n tickable.drawWithStyle();\n }\n this.boundingBox = boundingBox;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This file implements `GraceNoteGroup` which is used to format and\n// render grace notes.\nimport { Beam } from './beam';\nimport { Formatter } from './formatter';\nimport { Modifier } from './modifier';\nimport { StaveNote } from './stavenote';\nimport { StaveTie } from './stavetie';\nimport { Tables } from './tables';\nimport { TabTie } from './tabtie';\nimport { Category, isStaveNote } from './typeguard';\nimport { log } from './util';\nimport { Voice } from './voice';\n// To enable logging for this class. Set `GraceNoteGroup.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (GraceNoteGroup.DEBUG)\n log('Vex.Flow.GraceNoteGroup', args);\n}\n/** GraceNoteGroup is used to format and render grace notes. */\nexport class GraceNoteGroup extends Modifier {\n //** `GraceNoteGroup` inherits from `Modifier` and is placed inside a `ModifierContext`. */\n constructor(grace_notes, show_slur) {\n super();\n this.preFormatted = false;\n this.position = Modifier.Position.LEFT;\n this.grace_notes = grace_notes;\n this.width = 0;\n this.show_slur = show_slur;\n this.slur = undefined;\n this.voice = new Voice({\n num_beats: 4,\n beat_value: 4,\n resolution: Tables.RESOLUTION,\n }).setStrict(false);\n this.render_options = {\n slur_y_shift: 0,\n };\n this.beams = [];\n this.voice.addTickables(this.grace_notes);\n return this;\n }\n static get CATEGORY() {\n return Category.GraceNoteGroup;\n }\n /** Arranges groups inside a `ModifierContext`. */\n static format(gracenote_groups, state) {\n const group_spacing_stave = 4;\n const group_spacing_tab = 0;\n if (!gracenote_groups || gracenote_groups.length === 0)\n return false;\n const group_list = [];\n let prev_note = null;\n let shiftL = 0;\n for (let i = 0; i < gracenote_groups.length; ++i) {\n const gracenote_group = gracenote_groups[i];\n const note = gracenote_group.getNote();\n const is_stavenote = isStaveNote(note);\n const spacing = is_stavenote ? group_spacing_stave : group_spacing_tab;\n if (is_stavenote && note !== prev_note) {\n // Iterate through all notes to get the displaced pixels\n for (let n = 0; n < note.keys.length; ++n) {\n shiftL = Math.max(note.getLeftDisplacedHeadPx(), shiftL);\n }\n prev_note = note;\n }\n group_list.push({ shift: shiftL, gracenote_group, spacing });\n }\n // If first note left shift in case it is displaced\n let group_shift = group_list[0].shift;\n let formatWidth;\n for (let i = 0; i < group_list.length; ++i) {\n const gracenote_group = group_list[i].gracenote_group;\n gracenote_group.preFormat();\n formatWidth = gracenote_group.getWidth() + group_list[i].spacing;\n group_shift = Math.max(formatWidth, group_shift);\n }\n for (let i = 0; i < group_list.length; ++i) {\n const gracenote_group = group_list[i].gracenote_group;\n formatWidth = gracenote_group.getWidth() + group_list[i].spacing;\n gracenote_group.setSpacingFromNextModifier(group_shift - Math.min(formatWidth, group_shift) + StaveNote.minNoteheadPadding);\n }\n state.left_shift += group_shift;\n return true;\n }\n preFormat() {\n if (this.preFormatted)\n return;\n if (!this.formatter) {\n this.formatter = new Formatter();\n }\n this.formatter.joinVoices([this.voice]).format([this.voice], 0, {});\n this.setWidth(this.formatter.getMinTotalWidth());\n this.preFormatted = true;\n }\n beamNotes(grace_notes) {\n grace_notes = grace_notes || this.grace_notes;\n if (grace_notes.length > 1) {\n const beam = new Beam(grace_notes);\n beam.render_options.beam_width = 3;\n beam.render_options.partial_beam_length = 4;\n this.beams.push(beam);\n }\n return this;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getWidth() {\n return this.width + StaveNote.minNoteheadPadding;\n }\n getGraceNotes() {\n return this.grace_notes;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n L('Drawing grace note group for:', note);\n this.alignSubNotesWithNote(this.getGraceNotes(), note); // Modifier function\n // Draw grace notes.\n this.grace_notes.forEach((graceNote) => graceNote.setContext(ctx).draw());\n // Draw beams.\n this.beams.forEach((beam) => beam.setContext(ctx).draw());\n if (this.show_slur) {\n // Create and draw slur.\n const is_stavenote = isStaveNote(note);\n const TieClass = is_stavenote ? StaveTie : TabTie;\n this.slur = new TieClass({\n last_note: this.grace_notes[0],\n first_note: note,\n first_indices: [0],\n last_indices: [0],\n });\n this.slur.render_options.cp2 = 12;\n this.slur.render_options.y_shift = (is_stavenote ? 7 : 5) + this.render_options.slur_y_shift;\n this.slur.setContext(ctx).draw();\n }\n }\n}\nGraceNoteGroup.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2016\n//\n// ## Description\n//\n// This file implements `NoteSubGroup` which is used to format and\n// render notes as a `Modifier`\n// ex) ClefNote, TimeSigNote and BarNote.\nimport { Formatter } from './formatter';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { Voice } from './voice';\nexport class NoteSubGroup extends Modifier {\n constructor(subNotes) {\n super();\n this.preFormatted = false;\n this.position = Modifier.Position.LEFT;\n this.subNotes = subNotes;\n this.subNotes.forEach((subNote) => {\n subNote.setIgnoreTicks(false);\n });\n this.width = 0;\n this.formatter = new Formatter();\n this.voice = new Voice({\n num_beats: 4,\n beat_value: 4,\n resolution: Tables.RESOLUTION,\n }).setStrict(false);\n this.voice.addTickables(this.subNotes);\n }\n static get CATEGORY() {\n return Category.NoteSubGroup;\n }\n // Arrange groups inside a `ModifierContext`\n static format(groups, state) {\n if (!groups || groups.length === 0)\n return false;\n let width = 0;\n for (let i = 0; i < groups.length; ++i) {\n const group = groups[i];\n group.preFormat();\n width += group.getWidth();\n }\n state.left_shift += width;\n return true;\n }\n preFormat() {\n if (this.preFormatted)\n return;\n this.formatter.joinVoices([this.voice]).format([this.voice], 0);\n this.setWidth(this.formatter.getMinTotalWidth());\n this.preFormatted = true;\n }\n setWidth(width) {\n this.width = width;\n return this;\n }\n getWidth() {\n return this.width;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n this.alignSubNotesWithNote(this.subNotes, note); // Modifier function\n this.subNotes.forEach((subNote) => subNote.setContext(ctx).drawWithStyle());\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// A formatter for abstract tickable objects, such as notes, chords,\n// tabs, etc.\nimport { Fraction } from './fraction';\nimport { RuntimeError } from './util';\n/**\n * TickContext formats abstract tickable objects, such as notes, chords, tabs, etc.\n */\nexport class TickContext {\n constructor(options) {\n this.preFormatted = false;\n this.postFormatted = false;\n this.tickID = options && options.tickID ? options.tickID : 0;\n this.currentTick = new Fraction(0, 1);\n this.maxTicks = new Fraction(0, 1);\n this.maxTickable = undefined; // Biggest tickable\n this.minTicks = undefined; // this can remian null if all tickables have ignore_ticks\n this.minTickable = undefined;\n this.padding = 1; // padding on each side (width += padding * 2)\n this.x = 0;\n this.xBase = 0; // base x position without xOffset\n this.xOffset = 0; // xBase and xOffset are an alternative way to describe x (x = xB + xO)\n this.tickables = []; // Notes, tabs, chords, lyrics.\n this.tickablesByVoice = {}; // Tickables indexed by voice number\n // Formatting metrics\n this.notePx = 0; // width of widest note in this context\n this.glyphPx = 0; // width of glyph (note head)\n this.leftDisplacedHeadPx = 0; // Extra left pixels for displaced notes\n this.rightDisplacedHeadPx = 0; // Extra right pixels for displaced notes\n this.modLeftPx = 0; // Left modifier pixels\n this.modRightPx = 0; // Right modifier pixels\n this.totalLeftPx = 0; // Total left pixels\n this.totalRightPx = 0; // Total right pixels\n this.tContexts = []; // Parent array of tick contexts\n this.width = 0;\n this.formatterMetrics = {\n // The freedom of a tickcontext is the distance it can move without colliding\n // with neighboring elements. A formatter can set these values during its\n // formatting pass, which a different formatter can then use to fine tune.\n freedom: { left: 0, right: 0 },\n };\n }\n static getNextContext(tContext) {\n const contexts = tContext.tContexts;\n const index = contexts.indexOf(tContext);\n if (index + 1 < contexts.length)\n return contexts[index + 1];\n }\n getTickID() {\n return this.tickID;\n }\n getX() {\n return this.x;\n }\n setX(x) {\n this.x = x;\n this.xBase = x;\n this.xOffset = 0;\n return this;\n }\n getXBase() {\n return this.xBase;\n } // use of xBase and xOffset is optional, avoids offset creep\n setXBase(xBase) {\n this.xBase = xBase;\n this.x = xBase + this.xOffset;\n }\n getXOffset() {\n return this.xOffset;\n }\n setXOffset(xOffset) {\n this.xOffset = xOffset;\n this.x = this.xBase + xOffset;\n }\n getWidth() {\n return this.width + this.padding * 2;\n }\n setPadding(padding) {\n this.padding = padding;\n return this;\n }\n getMaxTicks() {\n return this.maxTicks;\n }\n getMinTicks() {\n return this.minTicks;\n }\n getMaxTickable() {\n return this.maxTickable;\n }\n getMinTickable() {\n return this.minTickable;\n }\n getTickables() {\n return this.tickables;\n }\n /**\n * Introduced on 2020-04-17 as getTickablesForVoice(voiceIndex).\n * https://github.com/0xfe/vexflow/blame/dc97b0cc5bb93171c0038638c34362dc958222ca/src/tickcontext.js#L63\n * Renamed on 2021-08-05 to getTickableForVoice(voiceIndex). Method renamed to singular, since it returns one Tickable.\n */\n getTickableForVoice(voiceIndex) {\n return this.tickablesByVoice[voiceIndex];\n }\n getTickablesByVoice() {\n return this.tickablesByVoice;\n }\n getCenterAlignedTickables() {\n return this.tickables.filter((tickable) => tickable.isCenterAligned());\n }\n /** Gets widths context, note and left/right modifiers for formatting. */\n getMetrics() {\n const { width, glyphPx, notePx, leftDisplacedHeadPx, rightDisplacedHeadPx, modLeftPx, modRightPx, totalLeftPx, totalRightPx, } = this;\n return {\n width,\n glyphPx,\n notePx,\n leftDisplacedHeadPx,\n rightDisplacedHeadPx,\n modLeftPx,\n modRightPx,\n totalLeftPx,\n totalRightPx,\n };\n }\n getCurrentTick() {\n return this.currentTick;\n }\n setCurrentTick(tick) {\n this.currentTick = tick;\n this.preFormatted = false;\n }\n addTickable(tickable, voiceIndex) {\n if (!tickable) {\n throw new RuntimeError('BadArgument', 'Invalid tickable added.');\n }\n if (!tickable.shouldIgnoreTicks()) {\n const ticks = tickable.getTicks();\n if (ticks.greaterThan(this.maxTicks)) {\n this.maxTicks = ticks.clone();\n this.maxTickable = tickable;\n }\n if (this.minTicks == null) {\n this.minTicks = ticks.clone();\n this.minTickable = tickable;\n }\n else if (ticks.lessThan(this.minTicks)) {\n this.minTicks = ticks.clone();\n this.minTickable = tickable;\n }\n }\n tickable.setTickContext(this);\n this.tickables.push(tickable);\n this.tickablesByVoice[voiceIndex || 0] = tickable;\n this.preFormatted = false;\n return this;\n }\n preFormat() {\n if (this.preFormatted)\n return this;\n for (let i = 0; i < this.tickables.length; ++i) {\n const tickable = this.tickables[i];\n tickable.preFormat();\n const metrics = tickable.getMetrics();\n // Maintain max displaced head pixels from all tickables in the context\n this.leftDisplacedHeadPx = Math.max(this.leftDisplacedHeadPx, metrics.leftDisplacedHeadPx);\n this.rightDisplacedHeadPx = Math.max(this.rightDisplacedHeadPx, metrics.rightDisplacedHeadPx);\n // Maintain the widest note for all tickables in the context\n this.notePx = Math.max(this.notePx, metrics.notePx);\n // Maintain the widest note head\n this.glyphPx = Math.max(this.glyphPx, metrics.glyphWidth || 0);\n // Total modifier shift\n this.modLeftPx = Math.max(this.modLeftPx, metrics.modLeftPx);\n this.modRightPx = Math.max(this.modRightPx, metrics.modRightPx);\n // Total shift\n this.totalLeftPx = Math.max(this.totalLeftPx, metrics.modLeftPx + metrics.leftDisplacedHeadPx);\n this.totalRightPx = Math.max(this.totalRightPx, metrics.modRightPx + metrics.rightDisplacedHeadPx);\n // Recalculate the tick context total width\n this.width = this.notePx + this.totalLeftPx + this.totalRightPx;\n }\n return this;\n }\n postFormat() {\n if (this.postFormatted)\n return this;\n this.postFormatted = true;\n return this;\n }\n getFormatterMetrics() {\n return this.formatterMetrics;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TickContext } from './tickcontext';\nimport { Category, isTabNote } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Ornament.DEBUG)\n log('Vex.Flow.Ornament', args);\n}\n/**\n * Ornament implements ornaments as modifiers that can be\n * attached to notes. The complete list of ornaments is available in\n * `tables.ts` under `Vex.Flow.ornamentCodes`.\n *\n * See `tests/ornament_tests.ts` for usage examples.\n */\nexport class Ornament extends Modifier {\n /**\n * Create a new ornament of type `type`, which is an entry in\n * `Vex.Flow.ornamentCodes` in `tables.ts`.\n */\n constructor(type) {\n super();\n this.type = type;\n this.delayed = false;\n this.render_options = {\n font_scale: 38,\n accidentalLowerPadding: 3,\n accidentalUpperPadding: 3,\n };\n this.ornament = Tables.ornamentCodes(this.type);\n // new ornaments have their origin at the origin, and have more specific\n // metrics. Legacy ornaments do some\n // x scaling, and have hard-coded metrics\n const metrics = this.getMetrics();\n // some jazz ornaments are above or below depending on stem direction.\n this.adjustForStemDirection = false;\n // some jazz ornaments like falls are supposed to overlap with future bars\n // and so we report a different width than they actually take up.\n this.reportedWidth = metrics && metrics.reportedWidth ? metrics.reportedWidth : 0;\n this.stemUpYOffset = metrics && metrics.stemUpYOffset ? metrics.stemUpYOffset : 0;\n this.ornamentAlignWithNoteHead = Ornament.ornamentAlignWithNoteHead.indexOf(this.type) >= 0;\n if (!this.ornament) {\n throw new RuntimeError('ArgumentError', `Ornament not found: '${this.type}'`);\n }\n this.x_shift = metrics ? metrics.xOffset : 0;\n this.y_shift = metrics ? metrics.yOffset : 0;\n this.glyph = new Glyph(this.ornament.code, this.render_options.font_scale, {\n category: `ornament.${this.ornament.code}`,\n });\n // Is this a jazz ornament that goes between this note and the next note.\n if (Ornament.ornamentNoteTransition.indexOf(this.type) >= 0) {\n this.delayed = true;\n }\n // Legacy ornaments need this. I don't know why, but horizontal spacing issues\n // happen if I don't set it.\n if (!metrics) {\n this.glyph.setOrigin(0.5, 1.0); // FIXME: SMuFL won't require a vertical origin shift\n }\n }\n /** Ornaments category string. */\n static get CATEGORY() {\n return Category.Ornament;\n }\n static get minPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('glyphs.noteHead.minPadding');\n }\n /** Arrange ornaments inside `ModifierContext` */\n static format(ornaments, state) {\n if (!ornaments || ornaments.length === 0)\n return false;\n let width = 0; // width is used by ornaments, which are always centered on the note head\n let right_shift = state.right_shift; // jazz ornaments calculate r/l shift separately\n let left_shift = state.left_shift;\n let yOffset = 0;\n for (let i = 0; i < ornaments.length; ++i) {\n const ornament = ornaments[i];\n const increment = 2;\n if (Ornament.ornamentRelease.indexOf(ornament.type) >= 0) {\n ornament.x_shift += right_shift + 2;\n }\n if (Ornament.ornamentAttack.indexOf(ornament.type) >= 0) {\n ornament.x_shift -= left_shift + 2;\n }\n if (ornament.reportedWidth && ornament.x_shift < 0) {\n left_shift += ornament.reportedWidth;\n }\n else if (ornament.reportedWidth && ornament.x_shift >= 0) {\n right_shift += ornament.reportedWidth + Ornament.minPadding;\n }\n else {\n width = Math.max(ornament.getWidth(), width);\n }\n // articulations above/below the line can be stacked.\n if (Ornament.ornamentArticulation.indexOf(ornament.type) >= 0) {\n // Unfortunately we don't know the stem direction. So we base it\n // on the line number, but also allow it to be overridden.\n const ornamentNote = defined(ornament.note, 'NoAttachedNote');\n if (ornamentNote.getLineNumber() >= 3 || ornament.getPosition() === Modifier.Position.ABOVE) {\n state.top_text_line += increment;\n ornament.y_shift += yOffset;\n yOffset -= ornament.glyph.bbox.getH();\n }\n else {\n state.text_line += increment;\n ornament.y_shift += yOffset;\n yOffset += ornament.glyph.bbox.getH();\n }\n }\n else {\n if (ornament.getPosition() === Modifier.Position.ABOVE) {\n ornament.setTextLine(state.top_text_line);\n state.top_text_line += increment;\n }\n else {\n ornament.setTextLine(state.text_line);\n state.text_line += increment;\n }\n }\n }\n // Note: 'legit' ornaments don't consider other modifiers when calculating their\n // X position, but jazz ornaments sometimes need to.\n state.left_shift = left_shift + width / 2;\n state.right_shift = right_shift + width / 2;\n return true;\n }\n /**\n * ornamentNoteTransition means the jazz ornament represents an effect from one note to another,\n * these are generally on the top of the staff.\n */\n static get ornamentNoteTransition() {\n return ['flip', 'jazzTurn', 'smear'];\n }\n /**\n * ornamentAttack indicates something that happens in the attach, placed before the note and\n * any accidentals\n */\n static get ornamentAttack() {\n return ['scoop'];\n }\n /**\n * The ornament is aligned based on the note head, but without regard to whether the\n * stem goes up or down.\n */\n static get ornamentAlignWithNoteHead() {\n return ['doit', 'fall', 'fallLong', 'doitLong', 'bend', 'plungerClosed', 'plungerOpen', 'scoop'];\n }\n /**\n * An ornament that happens on the release of the note, generally placed after the\n * note and overlapping the next beat/measure..\n */\n static get ornamentRelease() {\n return ['doit', 'fall', 'fallLong', 'doitLong', 'jazzTurn', 'smear', 'flip'];\n }\n /** ornamentArticulation goes above/below the note based on space availablity */\n static get ornamentArticulation() {\n return ['bend', 'plungerClosed', 'plungerOpen'];\n }\n /**\n * Legacy ornaments have hard-coded metrics. If additional ornament types are\n * added, get their metrics here.\n */\n // eslint-disable-next-line\n getMetrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.jazzOrnaments[this.ornament.code];\n }\n /** Set whether the ornament is to be delayed. */\n setDelayed(delayed) {\n this.delayed = delayed;\n return this;\n }\n /** Set the upper accidental for the ornament. */\n setUpperAccidental(accid) {\n const scale = this.render_options.font_scale / 1.3;\n this.accidentalUpper = new Glyph(Tables.accidentalCodes(accid).code, scale);\n this.accidentalUpper.setOrigin(0.5, 1.0);\n return this;\n }\n /** Set the lower accidental for the ornament. */\n setLowerAccidental(accid) {\n const scale = this.render_options.font_scale / 1.3;\n this.accidentalLower = new Glyph(Tables.accidentalCodes(accid).code, scale);\n this.accidentalLower.setOrigin(0.5, 1.0);\n return this;\n }\n /** Render ornament in position next to note. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stemDir = note.getStemDirection();\n const stave = note.checkStave();\n ctx.openGroup('ornament', this.getAttribute('id'));\n // Get stem extents\n const stemExtents = note.checkStem().getExtents();\n let y = stemDir === Stem.DOWN ? stemExtents.baseY : stemExtents.topY;\n // TabNotes don't have stems attached to them. Tab stems are rendered outside the stave.\n if (isTabNote(note)) {\n if (note.hasStem()) {\n if (stemDir === Stem.DOWN) {\n y = stave.getYForTopText(this.text_line);\n }\n }\n else {\n // Without a stem\n y = stave.getYForTopText(this.text_line);\n }\n }\n const isPlacedOnNoteheadSide = stemDir === Stem.DOWN;\n const spacing = stave.getSpacingBetweenLines();\n let lineSpacing = 1;\n // Beamed stems are longer than quarter note stems, adjust accordingly\n if (!isPlacedOnNoteheadSide && note.hasBeam()) {\n lineSpacing += 0.5;\n }\n const totalSpacing = spacing * (this.text_line + lineSpacing);\n const glyphYBetweenLines = y - totalSpacing;\n // Get initial coordinates for the modifier position\n const start = note.getModifierStartXY(this.position, this.index);\n let glyphX = start.x;\n // If the ornament is aligned with the note head, don't consider the stave y\n // but use the 'natural' modifier y\n let glyphY = this.ornamentAlignWithNoteHead\n ? start.y\n : Math.min(stave.getYForTopText(this.text_line), glyphYBetweenLines);\n glyphY += this.y_shift;\n // Ajdust x position if ornament is delayed\n if (this.delayed) {\n let delayXShift = 0;\n const startX = glyphX - (stave.getX() - 10);\n if (this.delayXShift !== undefined) {\n delayXShift = this.delayXShift;\n }\n else {\n delayXShift += this.glyph.getMetrics().width / 2;\n const nextContext = TickContext.getNextContext(note.getTickContext());\n if (nextContext) {\n delayXShift += (nextContext.getX() - startX) * 0.5;\n }\n else {\n delayXShift += (stave.getX() + stave.getWidth() - startX) * 0.5;\n }\n this.delayXShift = delayXShift;\n }\n glyphX += delayXShift;\n }\n L('Rendering ornament: ', this.ornament, glyphX, glyphY);\n if (this.accidentalLower) {\n this.accidentalLower.render(ctx, glyphX, glyphY);\n glyphY -= this.accidentalLower.getMetrics().height;\n glyphY -= this.render_options.accidentalLowerPadding;\n }\n if (this.stemUpYOffset && note.hasStem() && note.getStemDirection() === 1) {\n glyphY += this.stemUpYOffset;\n }\n if (note.getLineNumber() < 5 && Ornament.ornamentNoteTransition.indexOf(this.type) >= 0) {\n glyphY = note.checkStave().getBoundingBox().getY() + 40;\n }\n this.glyph.render(ctx, glyphX + this.x_shift, glyphY);\n if (this.accidentalUpper) {\n glyphY -= this.glyph.getMetrics().height + this.render_options.accidentalUpperPadding;\n this.accidentalUpper.render(ctx, glyphX, glyphY);\n }\n ctx.closeGroup();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Ornament.DEBUG` to `true`. */\nOrnament.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Rodrigo Vilar\n// MIT License\nimport { Glyph } from './glyph';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Tables } from './tables';\nimport { Category, isGraceNote } from './typeguard';\n/** Parenthesis implements parenthesis modifiers for notes. */\nexport class Parenthesis extends Modifier {\n /**\n * Constructor\n *\n * @param position Modifier.Position.LEFT (default) or Modifier.Position.RIGHT\n */\n constructor(position) {\n super();\n this.position = position !== null && position !== void 0 ? position : Modifier.Position.LEFT;\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.default.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.default.width'));\n }\n static get CATEGORY() {\n return Category.Parenthesis;\n }\n /** Add parentheses to the notes. */\n static buildAndAttach(notes) {\n for (const note of notes) {\n for (let i = 0; i < note.keys.length; i++) {\n note.addModifier(new Parenthesis(ModifierPosition.LEFT), i);\n note.addModifier(new Parenthesis(ModifierPosition.RIGHT), i);\n }\n }\n }\n /** Arrange parentheses inside a ModifierContext. */\n static format(parentheses, state) {\n if (!parentheses || parentheses.length === 0)\n return false;\n let x_widthL = 0;\n let x_widthR = 0;\n for (let i = 0; i < parentheses.length; ++i) {\n const parenthesis = parentheses[i];\n const note = parenthesis.getNote();\n const pos = parenthesis.getPosition();\n const index = parenthesis.checkIndex();\n let shift = 0;\n if (pos === ModifierPosition.RIGHT) {\n shift = note.getRightParenthesisPx(index);\n x_widthR = x_widthR > shift + parenthesis.width ? x_widthR : shift + parenthesis.width;\n }\n if (pos === ModifierPosition.LEFT) {\n shift = note.getLeftParenthesisPx(index);\n x_widthL = x_widthL > shift + parenthesis.width ? x_widthL : shift + parenthesis.width;\n }\n parenthesis.setXShift(shift);\n }\n state.left_shift += x_widthL;\n state.right_shift += x_widthR;\n return true;\n }\n /** Set the associated note. */\n setNote(note) {\n this.note = note;\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.default.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.default.width'));\n if (isGraceNote(note)) {\n this.point = Tables.currentMusicFont().lookupMetric('parenthesis.gracenote.point');\n this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.gracenote.width'));\n }\n return this;\n }\n /** Render the parenthesis. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index, { forceFlagRight: true });\n const x = start.x + this.x_shift;\n const y = start.y + this.y_shift;\n if (this.position == Modifier.Position.RIGHT) {\n Glyph.renderGlyph(ctx, x + 1, y, this.point, 'noteheadParenthesisRight', {\n category: `noteHead.standard.noteheadParenthesisRight`,\n });\n }\n else if (this.position == Modifier.Position.LEFT) {\n Glyph.renderGlyph(ctx, x - 2, y, this.point, 'noteheadParenthesisLeft', {\n category: `noteHead.standard.noteheadParenthesisLeft`,\n });\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Ron B. Yeh\n// MIT License\n//\n// Utilities for working with Web APIs.\n// See: https://developer.mozilla.org/en-US/docs/Web/API\nimport { globalObject } from './util';\n// eslint-disable-next-line\nexport function isHTMLCanvas(element) {\n if (!element)\n return false;\n const global = globalObject();\n return (\n // It's either an instance of the HTMLCanvasElement class,\n (typeof global.HTMLCanvasElement === 'function' && element instanceof global.HTMLCanvasElement) ||\n // OR it's pretending to be a element. Good enough!\n // Do not rely on .tagName, because node-canvas doesn't provide a tagName.\n (typeof element.getContext === 'function' && typeof element.toDataURL === 'function'));\n}\n// eslint-disable-next-line\nexport function isHTMLDiv(element) {\n if (!element)\n return false;\n const global = globalObject();\n return (\n // It's either an instance of the HTMLDivElement class.\n (typeof global.HTMLDivElement === 'function' && element instanceof global.HTMLDivElement) ||\n // OR it's pretending to be a
. See: svgcontext.ts.\n (typeof element.appendChild === 'function' && typeof element.style === 'object'));\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from './font';\nimport { RenderContext } from './rendercontext';\nimport { globalObject, warn } from './util';\nimport { isHTMLCanvas } from './web';\n/**\n * A rendering context for the Canvas backend. This class serves as a proxy for the\n * underlying CanvasRenderingContext2D object, part of the browser's API.\n */\nexport class CanvasContext extends RenderContext {\n constructor(context) {\n super();\n /** Height of one line of text (in pixels). */\n this.textHeight = 0;\n this.context2D = context;\n if (!context.canvas) {\n this.canvas = {\n width: CanvasContext.WIDTH,\n height: CanvasContext.HEIGHT,\n };\n }\n else {\n this.canvas = context.canvas;\n }\n }\n static get WIDTH() {\n return 600;\n }\n static get HEIGHT() {\n return 400;\n }\n static get CANVAS_BROWSER_SIZE_LIMIT() {\n return 32767; // Chrome/Firefox. Could be determined more precisely by npm module canvas-size.\n }\n /**\n * Ensure that width and height do not exceed the browser limit.\n * @returns array of [width, height] clamped to the browser limit.\n */\n static sanitizeCanvasDims(width, height) {\n const limit = this.CANVAS_BROWSER_SIZE_LIMIT;\n if (Math.max(width, height) > limit) {\n warn('Canvas dimensions exceed browser limit. Cropping to ' + limit);\n if (width > limit) {\n width = limit;\n }\n if (height > limit) {\n height = limit;\n }\n }\n return [width, height];\n }\n /**\n * Set all pixels to transparent black rgba(0,0,0,0).\n */\n clear() {\n this.context2D.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n // eslint-disable-next-line\n openGroup(cls, id, attrs) {\n // Containers not implemented.\n }\n closeGroup() {\n // Containers not implemented.\n }\n // eslint-disable-next-line\n add(child) {\n // Containers not implemented.\n }\n setFillStyle(style) {\n this.context2D.fillStyle = style;\n return this;\n }\n /** CanvasContext ignores `setBackgroundFillStyle()`. */\n // eslint-disable-next-line\n setBackgroundFillStyle(style) {\n // DO NOTHING\n return this;\n }\n setStrokeStyle(style) {\n this.context2D.strokeStyle = style;\n return this;\n }\n setShadowColor(color) {\n this.context2D.shadowColor = color;\n return this;\n }\n setShadowBlur(blur) {\n // CanvasRenderingContext2D does not scale the shadow blur by the current\n // transform, so we have to do it manually. We assume uniform scaling\n // (though allow for rotation) because the blur can only be scaled\n // uniformly anyway.\n const t = this.context2D.getTransform();\n const scale = Math.sqrt(t.a * t.a + t.b * t.b + t.c * t.c + t.d * t.d);\n this.context2D.shadowBlur = scale * blur;\n return this;\n }\n setLineWidth(width) {\n this.context2D.lineWidth = width;\n return this;\n }\n setLineCap(capType) {\n this.context2D.lineCap = capType;\n return this;\n }\n setLineDash(dash) {\n this.context2D.setLineDash(dash);\n return this;\n }\n scale(x, y) {\n this.context2D.scale(x, y);\n return this;\n }\n resize(width, height) {\n const canvas = this.context2D.canvas;\n const devicePixelRatio = globalObject().devicePixelRatio || 1;\n // Scale the canvas size by the device pixel ratio clamping to the maximum supported size.\n [width, height] = CanvasContext.sanitizeCanvasDims(width * devicePixelRatio, height * devicePixelRatio);\n // Divide back down by the pixel ratio and convert to integers.\n width = (width / devicePixelRatio) | 0;\n height = (height / devicePixelRatio) | 0;\n canvas.width = width * devicePixelRatio;\n canvas.height = height * devicePixelRatio;\n // The canvas could be an instance of either HTMLCanvasElement or an OffscreenCanvas.\n // Only HTMLCanvasElement has a style attribute.\n if (isHTMLCanvas(canvas)) {\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n }\n return this.scale(devicePixelRatio, devicePixelRatio);\n }\n rect(x, y, width, height) {\n this.context2D.rect(x, y, width, height);\n return this;\n }\n fillRect(x, y, width, height) {\n this.context2D.fillRect(x, y, width, height);\n return this;\n }\n /**\n * Set the pixels in a rectangular area to transparent black rgba(0,0,0,0).\n */\n clearRect(x, y, width, height) {\n this.context2D.clearRect(x, y, width, height);\n return this;\n }\n beginPath() {\n this.context2D.beginPath();\n return this;\n }\n moveTo(x, y) {\n this.context2D.moveTo(x, y);\n return this;\n }\n lineTo(x, y) {\n this.context2D.lineTo(x, y);\n return this;\n }\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\n this.context2D.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n return this;\n }\n quadraticCurveTo(cpx, cpy, x, y) {\n this.context2D.quadraticCurveTo(cpx, cpy, x, y);\n return this;\n }\n arc(x, y, radius, startAngle, endAngle, counterclockwise) {\n this.context2D.arc(x, y, radius, startAngle, endAngle, counterclockwise);\n return this;\n }\n fill() {\n this.context2D.fill();\n return this;\n }\n stroke() {\n this.context2D.stroke();\n return this;\n }\n closePath() {\n this.context2D.closePath();\n return this;\n }\n measureText(text) {\n const metrics = this.context2D.measureText(text);\n let y = 0;\n let height = 0;\n if (metrics.fontBoundingBoxAscent) {\n y = -metrics.fontBoundingBoxAscent;\n height = metrics.fontBoundingBoxDescent + metrics.fontBoundingBoxAscent;\n }\n else {\n y = -metrics.actualBoundingBoxAscent;\n height = metrics.actualBoundingBoxDescent + metrics.actualBoundingBoxAscent;\n }\n // Return x, y, width & height in the same manner as svg getBBox\n return {\n x: 0,\n y: y,\n width: metrics.width,\n height: height,\n };\n }\n fillText(text, x, y) {\n this.context2D.fillText(text, x, y);\n return this;\n }\n save() {\n this.context2D.save();\n return this;\n }\n restore() {\n this.context2D.restore();\n return this;\n }\n set fillStyle(style) {\n this.context2D.fillStyle = style;\n }\n get fillStyle() {\n return this.context2D.fillStyle;\n }\n set strokeStyle(style) {\n this.context2D.strokeStyle = style;\n }\n get strokeStyle() {\n return this.context2D.strokeStyle;\n }\n /**\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900).\n * @param style is a string (e.g., 'italic', 'normal').\n */\n setFont(f, size, weight, style) {\n const fontInfo = Font.validate(f, size, weight, style);\n this.context2D.font = Font.toCSSString(fontInfo);\n this.textHeight = Font.convertSizeToPixelValue(fontInfo.size);\n return this;\n }\n /** Return a string of the form `'italic bold 15pt Arial'` */\n getFont() {\n return this.context2D.font;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// @author Gregory Ristow (2015)\nimport { Font, FontStyle, FontWeight } from './font';\nimport { RenderContext } from './rendercontext';\nimport { normalizeAngle, prefix, RuntimeError } from './util';\n/** For a particular element type (e.g., rect), we will not apply certain presentation attributes. */\nconst ATTRIBUTES_TO_IGNORE = {\n path: {\n x: true,\n y: true,\n width: true,\n height: true,\n 'font-family': true,\n 'font-weight': true,\n 'font-style': true,\n 'font-size': true,\n },\n rect: {\n 'font-family': true,\n 'font-weight': true,\n 'font-style': true,\n 'font-size': true,\n },\n text: {\n width: true,\n height: true,\n },\n};\n/** Create the SVG in the SVG namespace. */\nconst SVG_NS = 'http://www.w3.org/2000/svg';\nconst TWO_PI = 2 * Math.PI;\nclass MeasureTextCache {\n constructor() {\n // The cache is keyed first by the text string, then by the font attributes\n // joined together.\n this.cache = {};\n }\n lookup(text, svg, attributes) {\n let entries = this.cache[text];\n if (entries === undefined) {\n entries = {};\n this.cache[text] = entries;\n }\n const family = attributes['font-family'];\n const size = attributes['font-size'];\n const weight = attributes['font-weight'];\n const style = attributes['font-style'];\n const key = `${family}%${size}%${weight}%${style}`;\n let entry = entries[key];\n if (entry === undefined) {\n entry = this.measureImpl(text, svg, attributes);\n entries[key] = entry;\n }\n return entry;\n }\n measureImpl(text, svg, attributes) {\n let txt = this.txt;\n if (!txt) {\n // Create the SVG text element that will be used to measure text in the event\n // of a cache miss.\n txt = document.createElementNS(SVG_NS, 'text');\n this.txt = txt;\n }\n txt.textContent = text;\n txt.setAttributeNS(null, 'font-family', attributes['font-family']);\n txt.setAttributeNS(null, 'font-size', attributes['font-size']);\n txt.setAttributeNS(null, 'font-style', attributes['font-style']);\n txt.setAttributeNS(null, 'font-weight', attributes['font-weight']);\n svg.appendChild(txt);\n const bbox = txt.getBBox();\n svg.removeChild(txt);\n return { x: bbox.x, y: bbox.y, width: bbox.width, height: bbox.height };\n }\n}\n/**\n * SVG rendering context with an API similar to CanvasRenderingContext2D.\n */\nexport class SVGContext extends RenderContext {\n constructor(element) {\n super();\n this.width = 0;\n this.height = 0;\n this.backgroundFillStyle = 'white';\n /** Formatted as CSS font shorthand (e.g., 'italic bold 12pt Arial') */\n this.fontCSSString = '';\n this.element = element;\n // Create a SVG element and add it to the container element.\n const svg = this.create('svg');\n this.element.appendChild(svg);\n this.svg = svg;\n this.parent = this.svg;\n this.groups = [this.svg];\n this.path = '';\n this.pen = { x: NaN, y: NaN };\n this.lineWidth = 1.0;\n const defaultFontAttributes = {\n 'font-family': Font.SANS_SERIF,\n 'font-size': Font.SIZE + 'pt',\n 'font-weight': FontWeight.NORMAL,\n 'font-style': FontStyle.NORMAL,\n };\n this.state = Object.assign({ scale: { x: 1, y: 1 } }, defaultFontAttributes);\n this.attributes = Object.assign({ 'stroke-width': 0.3, 'stroke-dasharray': 'none', fill: 'black', stroke: 'black' }, defaultFontAttributes);\n this.shadow_attributes = {\n width: 0,\n color: 'black',\n };\n this.state_stack = [];\n }\n create(svgElementType) {\n return document.createElementNS(SVG_NS, svgElementType);\n }\n // Allow grouping elements in containers for interactivity.\n openGroup(cls, id, attrs) {\n const group = this.create('g');\n this.groups.push(group);\n this.parent.appendChild(group);\n this.parent = group;\n if (cls)\n group.setAttribute('class', prefix(cls));\n if (id)\n group.setAttribute('id', prefix(id));\n if (attrs && attrs.pointerBBox) {\n group.setAttribute('pointer-events', 'bounding-box');\n }\n return group;\n }\n closeGroup() {\n this.groups.pop();\n this.parent = this.groups[this.groups.length - 1];\n }\n add(elem) {\n this.parent.appendChild(elem);\n }\n setFillStyle(style) {\n this.attributes.fill = style;\n return this;\n }\n /**\n * Used to set the fill color for `clearRect()`. This allows us to simulate\n * cutting a \"hole\" into the SVG drawing.\n */\n setBackgroundFillStyle(style) {\n this.backgroundFillStyle = style;\n return this;\n }\n setStrokeStyle(style) {\n this.attributes.stroke = style;\n return this;\n }\n setShadowColor(color) {\n this.shadow_attributes.color = color;\n return this;\n }\n /**\n * @param blur A non-negative float specifying the level of shadow blur, where 0\n * represents no blur and larger numbers represent increasingly more blur.\n * @returns this\n */\n setShadowBlur(blur) {\n this.shadow_attributes.width = blur;\n return this;\n }\n /**\n * @param width\n * @returns this\n */\n setLineWidth(width) {\n this.attributes['stroke-width'] = width;\n this.lineWidth = width;\n return this;\n }\n /**\n * @param lineDash an array of integers in the form of [dash, space, dash, space, etc...]\n * @returns this\n *\n * See: [SVG `stroke-dasharray` attribute](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray)\n */\n setLineDash(lineDash) {\n if (Object.prototype.toString.call(lineDash) === '[object Array]') {\n this.attributes['stroke-dasharray'] = lineDash.join(',');\n return this;\n }\n else {\n throw new RuntimeError('ArgumentError', 'lineDash must be an array of integers.');\n }\n }\n /**\n * @param capType\n * @returns this\n */\n setLineCap(capType) {\n this.attributes['stroke-linecap'] = capType;\n return this;\n }\n // ### Sizing & Scaling Methods:\n // TODO (GCR): See note at scale() -- separate our internal\n // conception of pixel-based width/height from the style.width\n // and style.height properties eventually to allow users to\n // apply responsive sizing attributes to the SVG.\n resize(width, height) {\n this.width = width;\n this.height = height;\n this.element.style.width = width.toString();\n this.svg.style.width = width.toString();\n this.svg.style.height = height.toString();\n const attributes = {\n width,\n height,\n };\n this.applyAttributes(this.svg, attributes);\n this.scale(this.state.scale.x, this.state.scale.y);\n return this;\n }\n scale(x, y) {\n // uses viewBox to scale\n // TODO (GCR): we may at some point want to distinguish the\n // style.width / style.height properties that are applied to\n // the SVG object from our internal conception of the SVG\n // width/height. This would allow us to create automatically\n // scaling SVG's that filled their containers, for instance.\n //\n // As this isn't implemented in Canvas contexts,\n // I've left as is for now, but in using the viewBox to\n // handle internal scaling, am trying to make it possible\n // for us to eventually move in that direction.\n this.state.scale = { x, y };\n const visibleWidth = this.width / x;\n const visibleHeight = this.height / y;\n this.setViewBox(0, 0, visibleWidth, visibleHeight);\n return this;\n }\n /**\n * 1 arg: string in the \"x y w h\" format\n * 4 args: x:number, y:number, w:number, h:number\n */\n setViewBox(viewBox_or_minX, minY, width, height) {\n if (typeof viewBox_or_minX === 'string') {\n this.svg.setAttribute('viewBox', viewBox_or_minX);\n }\n else {\n const viewBoxString = viewBox_or_minX + ' ' + minY + ' ' + width + ' ' + height;\n this.svg.setAttribute('viewBox', viewBoxString);\n }\n }\n // ### Drawing helper methods:\n applyAttributes(element, attributes) {\n const attrNamesToIgnore = ATTRIBUTES_TO_IGNORE[element.nodeName];\n for (const attrName in attributes) {\n if (attrNamesToIgnore && attrNamesToIgnore[attrName]) {\n continue;\n }\n element.setAttributeNS(null, attrName, attributes[attrName]);\n }\n return element;\n }\n // ### Shape & Path Methods:\n clear() {\n // Clear the SVG by removing all inner children.\n // (This approach is usually slightly more efficient\n // than removing the old SVG & adding a new one to\n // the container element, since it does not cause the\n // container to resize twice. Also, the resize\n // triggered by removing the entire SVG can trigger\n // a touchcancel event when the element resizes away\n // from a touch point.)\n while (this.svg.lastChild) {\n this.svg.removeChild(this.svg.lastChild);\n }\n // Replace the viewbox attribute we just removed.\n this.scale(this.state.scale.x, this.state.scale.y);\n }\n // ## Rectangles:\n rect(x, y, width, height, attributes) {\n // Avoid invalid negative height attributes by flipping the rectangle on its head:\n if (height < 0) {\n y += height;\n height *= -1;\n }\n const rectangle = this.create('rect');\n attributes = attributes !== null && attributes !== void 0 ? attributes : { fill: 'none', 'stroke-width': this.lineWidth, stroke: 'black' };\n this.applyAttributes(rectangle, Object.assign({ x, y, width, height }, attributes));\n this.add(rectangle);\n return this;\n }\n fillRect(x, y, width, height) {\n const attributes = { fill: this.attributes.fill };\n this.rect(x, y, width, height, attributes);\n return this;\n }\n clearRect(x, y, width, height) {\n // Currently this fills a rect with the backgroundFillStyle, rather\n // than \"cut a hole\" into the existing shapes.\n //\n // Since tabNote seems to be the only module that makes use of this\n // it may be worth creating a separate tabStave that would\n // draw lines around locations of tablature fingering.\n this.rect(x, y, width, height, { 'stroke-width': 0, fill: this.backgroundFillStyle });\n return this;\n }\n // ## Paths:\n beginPath() {\n this.path = '';\n this.pen.x = NaN;\n this.pen.y = NaN;\n return this;\n }\n moveTo(x, y) {\n this.path += 'M' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n lineTo(x, y) {\n this.path += 'L' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this.path += 'C' + x1 + ' ' + y1 + ',' + x2 + ' ' + y2 + ',' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this.path += 'Q' + x1 + ' ' + y1 + ',' + x + ' ' + y;\n this.pen.x = x;\n this.pen.y = y;\n return this;\n }\n arc(x, y, radius, startAngle, endAngle, counterclockwise) {\n const x0 = x + radius * Math.cos(startAngle);\n const y0 = y + radius * Math.sin(startAngle);\n // svg behavior different from canvas. Don't normalize angles if\n // we are drawing a circle because they both normalize to 0\n const tmpStartTest = normalizeAngle(startAngle);\n const tmpEndTest = normalizeAngle(endAngle);\n if ((!counterclockwise && endAngle - startAngle >= TWO_PI) ||\n (counterclockwise && startAngle - endAngle >= TWO_PI) ||\n tmpStartTest === tmpEndTest) {\n const x1 = x + radius * Math.cos(startAngle + Math.PI);\n const y1 = y + radius * Math.sin(startAngle + Math.PI);\n // There's no way to specify a completely circular arc in SVG so we have to\n // use two semi-circular arcs.\n this.path += `M${x0} ${y0} A${radius} ${radius} 0 0 0 ${x1} ${y1} `;\n this.path += `A${radius} ${radius} 0 0 0 ${x0} ${y0}`;\n this.pen.x = x0;\n this.pen.y = y0;\n }\n else {\n const x1 = x + radius * Math.cos(endAngle);\n const y1 = y + radius * Math.sin(endAngle);\n startAngle = tmpStartTest;\n endAngle = tmpEndTest;\n let large;\n if (Math.abs(endAngle - startAngle) < Math.PI) {\n large = counterclockwise;\n }\n else {\n large = !counterclockwise;\n }\n if (startAngle > endAngle) {\n large = !large;\n }\n const sweep = !counterclockwise;\n this.path += `M${x0} ${y0} A${radius} ${radius} 0 ${+large} ${+sweep} ${x1} ${y1}`;\n this.pen.x = x1;\n this.pen.y = y1;\n }\n return this;\n }\n closePath() {\n this.path += 'Z';\n return this;\n }\n getShadowStyle() {\n const sa = this.shadow_attributes;\n // A CSS drop-shadow filter blur looks different than a canvas shadowBlur\n // of the same radius, so we scale the drop-shadow radius here to make it\n // look close to the canvas shadow.\n return `filter: drop-shadow(0 0 ${sa.width / 1.5}px ${sa.color})`;\n }\n fill(attributes) {\n const path = this.create('path');\n if (typeof attributes === 'undefined') {\n attributes = Object.assign(Object.assign({}, this.attributes), { stroke: 'none' });\n }\n attributes.d = this.path;\n if (this.shadow_attributes.width > 0) {\n attributes.style = this.getShadowStyle();\n }\n this.applyAttributes(path, attributes);\n this.add(path);\n return this;\n }\n stroke() {\n const path = this.create('path');\n const attributes = Object.assign(Object.assign({}, this.attributes), { fill: 'none', 'stroke-width': this.lineWidth, d: this.path });\n if (this.shadow_attributes.width > 0) {\n attributes.style = this.getShadowStyle();\n }\n this.applyAttributes(path, attributes);\n this.add(path);\n return this;\n }\n // ## Text Methods:\n measureText(text) {\n return SVGContext.measureTextCache.lookup(text, this.svg, this.attributes);\n }\n fillText(text, x, y) {\n if (!text || text.length <= 0) {\n return this;\n }\n const attributes = Object.assign(Object.assign({}, this.attributes), { stroke: 'none', x,\n y });\n const txt = this.create('text');\n txt.textContent = text;\n this.applyAttributes(txt, attributes);\n this.add(txt);\n return this;\n }\n // TODO: State should be deep-copied.\n save() {\n this.state_stack.push({\n state: {\n 'font-family': this.state['font-family'],\n 'font-weight': this.state['font-weight'],\n 'font-style': this.state['font-style'],\n 'font-size': this.state['font-size'],\n scale: this.state.scale,\n },\n attributes: {\n 'font-family': this.attributes['font-family'],\n 'font-weight': this.attributes['font-weight'],\n 'font-style': this.attributes['font-style'],\n 'font-size': this.attributes['font-size'],\n fill: this.attributes.fill,\n stroke: this.attributes.stroke,\n 'stroke-width': this.attributes['stroke-width'],\n 'stroke-dasharray': this.attributes['stroke-dasharray'],\n },\n shadow_attributes: {\n width: this.shadow_attributes.width,\n color: this.shadow_attributes.color,\n },\n lineWidth: this.lineWidth,\n });\n return this;\n }\n // TODO: State should be deep-restored.\n restore() {\n const savedState = this.state_stack.pop();\n if (savedState) {\n const state = savedState;\n this.state['font-family'] = state.state['font-family'];\n this.state['font-weight'] = state.state['font-weight'];\n this.state['font-style'] = state.state['font-style'];\n this.state['font-size'] = state.state['font-size'];\n this.state.scale = state.state.scale;\n this.attributes['font-family'] = state.attributes['font-family'];\n this.attributes['font-weight'] = state.attributes['font-weight'];\n this.attributes['font-style'] = state.attributes['font-style'];\n this.attributes['font-size'] = state.attributes['font-size'];\n this.attributes.fill = state.attributes.fill;\n this.attributes.stroke = state.attributes.stroke;\n this.attributes['stroke-width'] = state.attributes['stroke-width'];\n this.attributes['stroke-dasharray'] = state.attributes['stroke-dasharray'];\n this.shadow_attributes.width = state.shadow_attributes.width;\n this.shadow_attributes.color = state.shadow_attributes.color;\n this.lineWidth = state.lineWidth;\n }\n return this;\n }\n set fillStyle(style) {\n this.setFillStyle(style);\n }\n get fillStyle() {\n return this.attributes.fill;\n }\n set strokeStyle(style) {\n this.setStrokeStyle(style);\n }\n get strokeStyle() {\n return this.attributes.stroke;\n }\n /**\n * @param f is 1) a `FontInfo` object or\n * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or\n * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided).\n * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt').\n * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900). It is inserted\n * into the font-weight attribute (e.g., font-weight=\"bold\")\n * @param style is a string (e.g., 'italic', 'normal') that is inserted into the\n * font-style attribute (e.g., font-style=\"italic\")\n */\n setFont(f, size, weight, style) {\n const fontInfo = Font.validate(f, size, weight, style);\n this.fontCSSString = Font.toCSSString(fontInfo);\n const fontAttributes = {\n 'font-family': fontInfo.family,\n 'font-size': fontInfo.size,\n 'font-weight': fontInfo.weight,\n 'font-style': fontInfo.style,\n };\n this.attributes = Object.assign(Object.assign({}, this.attributes), fontAttributes);\n this.state = Object.assign(Object.assign({}, this.state), fontAttributes);\n return this;\n }\n /** Return a string of the form `'italic bold 15pt Arial'` */\n getFont() {\n return this.fontCSSString;\n }\n}\nSVGContext.measureTextCache = new MeasureTextCache();\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { CanvasContext } from './canvascontext';\nimport { SVGContext } from './svgcontext';\nimport { isRenderContext } from './typeguard';\nimport { RuntimeError } from './util';\nimport { isHTMLCanvas, isHTMLDiv } from './web';\nexport var RendererBackends;\n(function (RendererBackends) {\n RendererBackends[RendererBackends[\"CANVAS\"] = 1] = \"CANVAS\";\n RendererBackends[RendererBackends[\"SVG\"] = 2] = \"SVG\";\n})(RendererBackends || (RendererBackends = {}));\n// End of line types\nexport var RendererLineEndType;\n(function (RendererLineEndType) {\n RendererLineEndType[RendererLineEndType[\"NONE\"] = 1] = \"NONE\";\n RendererLineEndType[RendererLineEndType[\"UP\"] = 2] = \"UP\";\n RendererLineEndType[RendererLineEndType[\"DOWN\"] = 3] = \"DOWN\";\n})(RendererLineEndType || (RendererLineEndType = {}));\n/**\n * Support Canvas & SVG rendering contexts.\n */\nexport class Renderer {\n constructor(arg0, arg1) {\n if (isRenderContext(arg0)) {\n // The user has provided what looks like a RenderContext, let's just use it.\n this.ctx = arg0;\n }\n else {\n if (arg1 === undefined) {\n // The backend must be specified if the render context isn't directly provided.\n throw new RuntimeError('InvalidArgument', 'Missing backend argument');\n }\n const backend = arg1;\n let element;\n if (typeof arg0 == 'string') {\n const maybeElement = document.getElementById(arg0);\n if (!maybeElement) {\n throw new RuntimeError('BadElementId', `Can't find element with ID \"${maybeElement}\"`);\n }\n element = maybeElement;\n }\n else {\n element = arg0;\n }\n // Verify backend and create context\n if (backend === Renderer.Backends.CANVAS) {\n if (!isHTMLCanvas(element)) {\n throw new RuntimeError('BadElement', 'CANVAS context requires an HTMLCanvasElement.');\n }\n const context = element.getContext('2d');\n if (!context) {\n throw new RuntimeError('BadElement', \"Can't get canvas context\");\n }\n this.ctx = new CanvasContext(context);\n }\n else if (backend === Renderer.Backends.SVG) {\n if (!isHTMLDiv(element)) {\n throw new RuntimeError('BadElement', 'SVG context requires an HTMLDivElement.');\n }\n this.ctx = new SVGContext(element);\n }\n else {\n throw new RuntimeError('InvalidBackend', `No support for backend: ${backend}`);\n }\n }\n }\n static buildContext(elementId, backend, width, height, background = '#FFF') {\n const renderer = new Renderer(elementId, backend);\n if (width && height) {\n renderer.resize(width, height);\n }\n const ctx = renderer.getContext();\n ctx.setBackgroundFillStyle(background);\n Renderer.lastContext = ctx;\n return ctx;\n }\n static getCanvasContext(elementId, width, height, background) {\n return Renderer.buildContext(elementId, Renderer.Backends.CANVAS, width, height, background);\n }\n static getSVGContext(elementId, width, height, background) {\n return Renderer.buildContext(elementId, Renderer.Backends.SVG, width, height, background);\n }\n // Draw a dashed line (horizontal, vertical or diagonal\n // dashPattern = [3,3] draws a 3 pixel dash followed by a three pixel space.\n // setting the second number to 0 draws a solid line.\n static drawDashedLine(context, fromX, fromY, toX, toY, dashPattern) {\n context.beginPath();\n const dx = toX - fromX;\n const dy = toY - fromY;\n const angle = Math.atan2(dy, dx);\n let x = fromX;\n let y = fromY;\n context.moveTo(fromX, fromY);\n let idx = 0;\n let draw = true;\n while (!((dx < 0 ? x <= toX : x >= toX) && (dy < 0 ? y <= toY : y >= toY))) {\n const dashLength = dashPattern[idx++ % dashPattern.length];\n const nx = x + Math.cos(angle) * dashLength;\n x = dx < 0 ? Math.max(toX, nx) : Math.min(toX, nx);\n const ny = y + Math.sin(angle) * dashLength;\n y = dy < 0 ? Math.max(toY, ny) : Math.min(toY, ny);\n if (draw) {\n context.lineTo(x, y);\n }\n else {\n context.moveTo(x, y);\n }\n draw = !draw;\n }\n context.closePath();\n context.stroke();\n }\n resize(width, height) {\n this.ctx.resize(width, height);\n return this;\n }\n getContext() {\n return this.ctx;\n }\n}\nRenderer.Backends = RendererBackends;\nRenderer.LineEndType = RendererLineEndType;\n// Used by vexflow_test_helpers.ts\n// Should this be private?\n// Can we do this in a cleaner way?\nRenderer.lastContext = undefined;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport var TextJustification;\n(function (TextJustification) {\n TextJustification[TextJustification[\"LEFT\"] = 1] = \"LEFT\";\n TextJustification[TextJustification[\"CENTER\"] = 2] = \"CENTER\";\n TextJustification[TextJustification[\"RIGHT\"] = 3] = \"RIGHT\";\n})(TextJustification || (TextJustification = {}));\n/**\n * `TextNote` is a notation element that is positioned in time. Generally\n * meant for objects that sit above/below the staff and inline with each other.\n * `TextNote` has to be assigned to a `Stave` before rendering by means of `setStave`.\n * Examples of this would be such as dynamics, lyrics, chord changes, etc.\n */\nexport class TextNote extends Note {\n constructor(noteStruct) {\n super(noteStruct);\n this.text = noteStruct.text || '';\n this.superscript = noteStruct.superscript;\n this.subscript = noteStruct.subscript;\n this.setFont(noteStruct.font);\n this.line = noteStruct.line || 0;\n this.smooth = noteStruct.smooth || false;\n this.ignore_ticks = noteStruct.ignore_ticks || false;\n this.justification = TextJustification.LEFT;\n // Determine and set initial note width. Note that the text width is\n // an approximation and isn't very accurate. The only way to accurately\n // measure the length of text is with `CanvasRenderingContext2D.measureText()`.\n if (noteStruct.glyph) {\n const struct = TextNote.GLYPHS[noteStruct.glyph];\n if (!struct)\n throw new RuntimeError('Invalid glyph type: ' + noteStruct.glyph);\n this.glyph = new Glyph(struct.code, 40, { category: 'textNote' });\n this.setWidth(this.glyph.getMetrics().width);\n }\n else {\n this.glyph = undefined;\n }\n }\n static get CATEGORY() {\n return Category.TextNote;\n }\n /** Glyph data. */\n static get GLYPHS() {\n return {\n segno: {\n code: 'segno',\n },\n tr: {\n code: 'ornamentTrill',\n },\n mordent: {\n code: 'ornamentMordent',\n },\n mordent_upper: {\n code: 'ornamentShortTrill',\n },\n mordent_lower: {\n code: 'ornamentMordent',\n },\n f: {\n code: 'dynamicForte',\n },\n p: {\n code: 'dynamicPiano',\n },\n m: {\n code: 'dynamicMezzo',\n },\n s: {\n code: 'dynamicSforzando',\n },\n z: {\n code: 'dynamicZ',\n },\n coda: {\n code: 'coda',\n },\n pedal_open: {\n code: 'keyboardPedalPed',\n },\n pedal_close: {\n code: 'keyboardPedalUp',\n },\n caesura_straight: {\n code: 'caesura',\n },\n caesura_curved: {\n code: 'caesuraCurved',\n },\n breath: {\n code: 'breathMarkComma',\n },\n tick: {\n code: 'breathMarkTick',\n },\n turn: {\n code: 'ornamentTurn',\n },\n turn_inverted: {\n code: 'ornamentTurnSlash',\n },\n };\n }\n /** Set the horizontal justification of the TextNote. */\n setJustification(just) {\n this.justification = just;\n return this;\n }\n /** Set the Stave line on which the note should be placed. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Return the Stave line on which the TextNote is placed. */\n getLine() {\n return this.line;\n }\n /** Return the unformatted text of this TextNote. */\n getText() {\n return this.text;\n }\n /** Pre-render formatting. */\n preFormat() {\n if (this.preFormatted)\n return;\n const tickContext = this.checkTickContext(`Can't preformat without a TickContext.`);\n if (this.smooth) {\n this.setWidth(0);\n }\n else {\n if (this.glyph) {\n // Width already set.\n }\n else {\n const ctx = this.checkContext();\n ctx.setFont(this.textFont);\n this.setWidth(ctx.measureText(this.text).width);\n }\n }\n if (this.justification === TextJustification.CENTER) {\n this.leftDisplacedHeadPx = this.width / 2;\n }\n else if (this.justification === TextJustification.RIGHT) {\n this.leftDisplacedHeadPx = this.width;\n }\n // We reposition to the center of the note head\n this.rightDisplacedHeadPx = tickContext.getMetrics().glyphPx / 2;\n this.preFormatted = true;\n }\n /**\n * Renders the TextNote.\n * `TextNote` has to be assigned to a `Stave` before rendering by means of `setStave`.\n */\n draw() {\n const ctx = this.checkContext();\n const stave = this.checkStave();\n const tickContext = this.checkTickContext(`Can't draw without a TickContext.`);\n this.setRendered();\n // Reposition to center of note head\n let x = this.getAbsoluteX() + tickContext.getMetrics().glyphPx / 2;\n // Align based on tick-context width.\n const width = this.getWidth();\n if (this.justification === TextJustification.CENTER) {\n x -= width / 2;\n }\n else if (this.justification === TextJustification.RIGHT) {\n x -= width;\n }\n let y;\n if (this.glyph) {\n y = stave.getYForLine(this.line + -3);\n this.glyph.render(ctx, x, y);\n }\n else {\n y = stave.getYForLine(this.line + -3);\n this.applyStyle(ctx);\n ctx.setFont(this.textFont);\n ctx.fillText(this.text, x, y);\n const height = ctx.measureText(this.text).height;\n // We called this.setFont(...) in the constructor, so we know this.textFont is available.\n // eslint-disable-next-line\n const { family, size, weight, style } = this.textFont;\n // Scale the font size by 1/1.3.\n const smallerFontSize = Font.scaleSize(size, 0.769231);\n if (this.superscript) {\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.superscript, x + this.width + 2, y - height / 2.2);\n }\n if (this.subscript) {\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.subscript, x + this.width + 2, y + height / 2.2 - 1);\n }\n this.restoreStyle(ctx);\n }\n }\n}\nTextNote.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 12,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\nTextNote.Justification = TextJustification;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier } from './stavemodifier';\nimport { Category } from './typeguard';\nexport var VoltaType;\n(function (VoltaType) {\n VoltaType[VoltaType[\"NONE\"] = 1] = \"NONE\";\n VoltaType[VoltaType[\"BEGIN\"] = 2] = \"BEGIN\";\n VoltaType[VoltaType[\"MID\"] = 3] = \"MID\";\n VoltaType[VoltaType[\"END\"] = 4] = \"END\";\n VoltaType[VoltaType[\"BEGIN_END\"] = 5] = \"BEGIN_END\";\n})(VoltaType || (VoltaType = {}));\nexport class Volta extends StaveModifier {\n constructor(type, number, x, y_shift) {\n super();\n this.volta = type;\n this.x = x;\n this.y_shift = y_shift;\n this.number = number;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.Volta;\n }\n static get type() {\n return VoltaType;\n }\n setShiftY(y) {\n this.y_shift = y;\n return this;\n }\n draw(stave, x) {\n const ctx = stave.checkContext();\n this.setRendered();\n let width = stave.getWidth() - x; // don't include x (offset) for width\n const top_y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n const vert_height = 1.5 * stave.getSpacingBetweenLines();\n switch (this.volta) {\n case VoltaType.BEGIN:\n ctx.fillRect(this.x + x, top_y, 1, vert_height);\n break;\n case VoltaType.END:\n width -= 5;\n ctx.fillRect(this.x + x + width, top_y, 1, vert_height);\n break;\n case VoltaType.BEGIN_END:\n width -= 3;\n ctx.fillRect(this.x + x, top_y, 1, vert_height);\n ctx.fillRect(this.x + x + width, top_y, 1, vert_height);\n break;\n default:\n break;\n }\n // If the beginning of a volta, draw measure number\n if (this.volta === VoltaType.BEGIN || this.volta === VoltaType.BEGIN_END) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText(this.number, this.x + x + 5, top_y + 15);\n ctx.restore();\n }\n ctx.fillRect(this.x + x, top_y, width, 1);\n return this;\n }\n}\nVolta.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 9,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns\n//\n// This file implements the `StringNumber` class which renders string\n// number annotations beside notes.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { Renderer } from './renderer';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isStaveNote, isStemmableNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StringNumber extends Modifier {\n constructor(number) {\n super();\n this.string_number = number;\n this.position = Modifier.Position.ABOVE; // Default position above stem or note head\n this.x_shift = 0;\n this.y_shift = 0;\n this.text_line = 0;\n this.stem_offset = 0;\n this.x_offset = 0; // Horizontal offset from default\n this.y_offset = 0; // Vertical offset from default\n this.dashed = true; // true - draw dashed extension false - no extension\n this.leg = Renderer.LineEndType.NONE; // draw upward/downward leg at the of extension line\n this.radius = 8;\n this.drawCircle = true;\n this.setWidth(this.radius * 2 + 4);\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StringNumber;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.stringNumber;\n }\n // ## Static Methods\n // Arrange string numbers inside a `ModifierContext`\n static format(nums, state) {\n const left_shift = state.left_shift;\n const right_shift = state.right_shift;\n const num_spacing = 1;\n if (!nums || nums.length === 0)\n return false;\n const nums_list = [];\n let prev_note = null;\n let shift_left = 0;\n let shift_right = 0;\n const modLines = 0;\n for (let i = 0; i < nums.length; ++i) {\n const num = nums[i];\n const note = num.getNote();\n const pos = num.getPosition();\n if (!isStaveNote(note)) {\n throw new RuntimeError('NoStaveNote');\n }\n const index = num.checkIndex();\n const props = note.getKeyProps()[index];\n const mc = note.getModifierContext();\n const verticalSpaceNeeded = (num.radius * 2) / Tables.STAVE_LINE_DISTANCE + 0.5;\n if (mc) {\n if (pos === ModifierPosition.ABOVE) {\n num.text_line = mc.getState().top_text_line;\n state.top_text_line += verticalSpaceNeeded;\n }\n else if (pos === ModifierPosition.BELOW) {\n num.text_line = mc.getState().text_line;\n state.text_line += verticalSpaceNeeded;\n }\n }\n if (note !== prev_note) {\n for (let n = 0; n < note.keys.length; ++n) {\n if (left_shift === 0) {\n shift_left = Math.max(note.getLeftDisplacedHeadPx(), shift_left);\n }\n if (right_shift === 0) {\n shift_right = Math.max(note.getRightDisplacedHeadPx(), shift_right);\n }\n }\n prev_note = note;\n }\n const glyphLine = modLines === 0 ? props.line : modLines;\n nums_list.push({\n pos,\n note,\n num,\n line: glyphLine,\n shiftL: shift_left,\n shiftR: shift_right,\n });\n }\n // Sort string numbers by line number.\n nums_list.sort((a, b) => b.line - a.line);\n let num_shiftR = 0;\n let x_widthL = 0;\n let x_widthR = 0;\n let last_line = null;\n let last_note = null;\n for (let i = 0; i < nums_list.length; ++i) {\n let num_shift = 0;\n const note = nums_list[i].note;\n const pos = nums_list[i].pos;\n const num = nums_list[i].num;\n const line = nums_list[i].line;\n const shiftR = nums_list[i].shiftR;\n // Reset the position of the string number every line.\n if (line !== last_line || note !== last_note) {\n num_shiftR = right_shift + shiftR;\n }\n const num_width = num.getWidth() + num_spacing;\n if (pos === Modifier.Position.LEFT) {\n num.setXShift(left_shift);\n num_shift = shift_left + num_width; // spacing\n x_widthL = num_shift > x_widthL ? num_shift : x_widthL;\n }\n else if (pos === Modifier.Position.RIGHT) {\n num.setXShift(num_shiftR);\n num_shift += num_width; // spacing\n x_widthR = num_shift > x_widthR ? num_shift : x_widthR;\n }\n last_line = line;\n last_note = note;\n }\n state.left_shift += x_widthL;\n state.right_shift += x_widthR;\n return true;\n }\n setLineEndType(leg) {\n if (leg >= Renderer.LineEndType.NONE && leg <= Renderer.LineEndType.DOWN) {\n this.leg = leg;\n }\n return this;\n }\n setStringNumber(number) {\n this.string_number = number;\n return this;\n }\n setOffsetX(x) {\n this.x_offset = x;\n return this;\n }\n setOffsetY(y) {\n this.y_offset = y;\n return this;\n }\n setLastNote(note) {\n this.last_note = note;\n return this;\n }\n setDashed(dashed) {\n this.dashed = dashed;\n return this;\n }\n setDrawCircle(drawCircle) {\n this.drawCircle = drawCircle;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP;\n let dot_x = start.x + this.x_shift + this.x_offset;\n let stem_ext = {};\n if (note.hasStem()) {\n stem_ext = note.checkStem().getExtents();\n }\n let dot_y = start.y + this.y_shift + this.y_offset;\n switch (this.position) {\n case Modifier.Position.ABOVE:\n {\n const ys = note.getYs();\n dot_y = ys.reduce((a, b) => (a < b ? a : b));\n if (note.hasStem() && stemDirection == Stem.UP) {\n dot_y = stem_ext.topY + StringNumber.metrics.stemPadding;\n }\n dot_y -= this.radius + StringNumber.metrics.verticalPadding + this.text_line * Tables.STAVE_LINE_DISTANCE;\n }\n break;\n case Modifier.Position.BELOW:\n {\n const ys = note.getYs();\n dot_y = ys.reduce((a, b) => (a > b ? a : b));\n if (note.hasStem() && stemDirection == Stem.DOWN) {\n dot_y = stem_ext.topY - StringNumber.metrics.stemPadding;\n }\n dot_y += this.radius + StringNumber.metrics.verticalPadding + this.text_line * Tables.STAVE_LINE_DISTANCE;\n }\n break;\n case Modifier.Position.LEFT:\n dot_x -= this.radius / 2 + StringNumber.metrics.leftPadding;\n break;\n case Modifier.Position.RIGHT:\n dot_x += this.radius / 2 + StringNumber.metrics.rightPadding;\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} is invalid`);\n }\n ctx.save();\n if (this.drawCircle) {\n ctx.beginPath();\n ctx.arc(dot_x, dot_y, this.radius, 0, Math.PI * 2, false);\n ctx.setLineWidth(1.5);\n ctx.stroke();\n }\n ctx.setFont(this.textFont);\n const x = dot_x - ctx.measureText(this.string_number).width / 2;\n ctx.fillText('' + this.string_number, x, dot_y + 4.5);\n const lastNote = this.last_note;\n if (isStemmableNote(lastNote)) {\n // Only StemmableNote objects have getStemX().\n const end = lastNote.getStemX() - note.getX() + 5;\n ctx.setStrokeStyle('#000000');\n ctx.setLineCap('round');\n ctx.setLineWidth(0.6);\n if (this.dashed) {\n Renderer.drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 3]);\n }\n else {\n Renderer.drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 0]);\n }\n let len;\n let pattern;\n switch (this.leg) {\n case Renderer.LineEndType.UP:\n len = -10;\n pattern = this.dashed ? [3, 3] : [3, 0];\n Renderer.drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern);\n break;\n case Renderer.LineEndType.DOWN:\n len = 10;\n pattern = this.dashed ? [3, 3] : [3, 0];\n Renderer.drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern);\n break;\n default:\n break;\n }\n }\n ctx.restore();\n }\n}\nStringNumber.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: Font.SIZE,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Larry Kuhns\n//\n// This file implements the `Stroke` class which renders chord strokes\n// that can be arpeggiated, brushed, rasquedo, etc.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Category, isNote, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nexport class Stroke extends Modifier {\n constructor(type, options) {\n super();\n this.options = Object.assign({ all_voices: true }, options);\n // multi voice - span stroke across all voices if true\n this.all_voices = this.options.all_voices;\n // multi voice - end note of stroke, set in draw()\n this.type = type;\n this.position = Modifier.Position.LEFT;\n this.render_options = {\n font_scale: 38,\n };\n this.resetFont();\n this.setXShift(0);\n this.setWidth(10);\n }\n static get CATEGORY() {\n return Category.Stroke;\n }\n // Arrange strokes inside `ModifierContext`\n static format(strokes, state) {\n const left_shift = state.left_shift;\n const stroke_spacing = 0;\n if (!strokes || strokes.length === 0)\n return false;\n const strokeList = strokes.map((stroke) => {\n const note = stroke.getNote();\n const index = stroke.checkIndex();\n if (isStaveNote(note)) {\n // Only StaveNote objects have getKeyProps().\n const { line } = note.getKeyProps()[index];\n const shift = note.getLeftDisplacedHeadPx();\n return { line, shift, stroke };\n }\n else if (isTabNote(note)) {\n // Only TabNote objects have getPositions().\n const { str: string } = note.getPositions()[index];\n return { line: string, shift: 0, stroke };\n }\n else {\n throw new RuntimeError('Internal', 'Unexpected instance.');\n }\n });\n const strokeShift = left_shift;\n // There can only be one stroke .. if more than one, they overlay each other\n const xShift = strokeList.reduce((xShift, { stroke, shift }) => {\n stroke.setXShift(strokeShift + shift);\n return Math.max(stroke.getWidth() + stroke_spacing, xShift);\n }, 0);\n state.left_shift += xShift;\n return true;\n }\n getPosition() {\n return this.position;\n }\n addEndNote(note) {\n this.note_end = note;\n return this;\n }\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(this.position, this.index);\n let ys = note.getYs();\n let topY = start.y;\n let botY = start.y;\n const x = start.x - 5;\n const line_space = note.checkStave().getSpacingBetweenLines();\n const notes = this.checkModifierContext().getMembers(note.getCategory());\n for (let i = 0; i < notes.length; i++) {\n const note = notes[i];\n if (isNote(note)) {\n // Only Note objects have getYs().\n // note is an instance of either StaveNote or TabNote.\n ys = note.getYs();\n for (let n = 0; n < ys.length; n++) {\n if (this.note === notes[i] || this.all_voices) {\n topY = Math.min(topY, ys[n]);\n botY = Math.max(botY, ys[n]);\n }\n }\n }\n }\n let arrow = '';\n let arrow_shift_x = 0;\n let arrow_y = 0;\n let text_shift_x = 0;\n let text_y = 0;\n switch (this.type) {\n case Stroke.Type.BRUSH_DOWN:\n arrow = 'arrowheadBlackUp';\n arrow_shift_x = -3;\n arrow_y = topY - line_space / 2 + 10;\n botY += line_space / 2;\n break;\n case Stroke.Type.BRUSH_UP:\n arrow = 'arrowheadBlackDown';\n arrow_shift_x = 0.5;\n arrow_y = botY + line_space / 2;\n topY -= line_space / 2;\n break;\n case Stroke.Type.ROLL_DOWN:\n case Stroke.Type.RASQUEDO_DOWN:\n arrow = 'arrowheadBlackUp';\n arrow_shift_x = -3;\n text_shift_x = this.x_shift + arrow_shift_x - 2;\n if (isStaveNote(note)) {\n topY += 1.5 * line_space;\n if ((botY - topY) % 2 !== 0) {\n botY += 0.5 * line_space;\n }\n else {\n botY += line_space;\n }\n arrow_y = topY - line_space;\n text_y = botY + line_space + 2;\n }\n else {\n topY += 1.5 * line_space;\n botY += line_space;\n arrow_y = topY - 0.75 * line_space;\n text_y = botY + 0.25 * line_space;\n }\n break;\n case Stroke.Type.ROLL_UP:\n case Stroke.Type.RASQUEDO_UP:\n arrow = 'arrowheadBlackDown';\n arrow_shift_x = -4;\n text_shift_x = this.x_shift + arrow_shift_x - 1;\n if (isStaveNote(note)) {\n arrow_y = line_space / 2;\n topY += 0.5 * line_space;\n if ((botY - topY) % 2 === 0) {\n botY += line_space / 2;\n }\n arrow_y = botY + 0.5 * line_space;\n text_y = topY - 1.25 * line_space;\n }\n else {\n topY += 0.25 * line_space;\n botY += 0.5 * line_space;\n arrow_y = botY + 0.25 * line_space;\n text_y = topY - line_space;\n }\n break;\n case Stroke.Type.ARPEGGIO_DIRECTIONLESS:\n topY += 0.5 * line_space;\n botY += line_space; // * 0.5 can lead to slight underlap instead of overlap sometimes\n break;\n default:\n throw new RuntimeError('InvalidType', `The stroke type ${this.type} does not exist`);\n }\n let strokeLine = 'straight';\n // Draw the stroke\n if (this.type === Stroke.Type.BRUSH_DOWN || this.type === Stroke.Type.BRUSH_UP) {\n ctx.fillRect(x + this.x_shift, topY, 1, botY - topY);\n }\n else {\n strokeLine = 'wiggly';\n if (isStaveNote(note)) {\n for (let i = topY; i <= botY; i += line_space) {\n Glyph.renderGlyph(ctx, x + this.x_shift - 4, i, this.render_options.font_scale, 'vexWiggleArpeggioUp');\n }\n }\n else {\n let i;\n for (i = topY; i <= botY; i += 10) {\n Glyph.renderGlyph(ctx, x + this.x_shift - 4, i, this.render_options.font_scale, 'vexWiggleArpeggioUp');\n }\n if (this.type === Stroke.Type.RASQUEDO_DOWN) {\n text_y = i + 0.25 * line_space;\n }\n }\n }\n if (this.type === Stroke.Type.ARPEGGIO_DIRECTIONLESS) {\n return; // skip drawing arrow heads or text\n }\n // Draw the arrow head\n Glyph.renderGlyph(ctx, x + this.x_shift + arrow_shift_x, arrow_y, this.render_options.font_scale, arrow, {\n category: `stroke.${arrow}.${strokeLine}`,\n });\n // Draw the rasquedo \"R\"\n if (this.type === Stroke.Type.RASQUEDO_DOWN || this.type === Stroke.Type.RASQUEDO_UP) {\n ctx.save();\n ctx.setFont(this.textFont);\n ctx.fillText('R', x + text_shift_x, text_y);\n ctx.restore();\n }\n }\n}\nStroke.Type = {\n BRUSH_DOWN: 1,\n BRUSH_UP: 2,\n ROLL_DOWN: 3,\n ROLL_UP: 4,\n RASQUEDO_DOWN: 5,\n RASQUEDO_UP: 6,\n ARPEGGIO_DIRECTIONLESS: 7, // Arpeggiated chord without upwards or downwards arrow\n};\nStroke.TEXT_FONT = {\n family: Font.SERIF,\n size: Font.SIZE,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Bend } from './bend';\nimport { Modifier } from './modifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\n/** `Vibrato` implements diverse vibratos. */\nexport class Vibrato extends Modifier {\n constructor() {\n super();\n this.position = Modifier.Position.RIGHT;\n this.render_options = {\n harsh: false,\n vibrato_width: 20,\n wave_height: 6,\n wave_width: 4,\n wave_girth: 2,\n };\n this.setVibratoWidth(this.render_options.vibrato_width);\n }\n static get CATEGORY() {\n return Category.Vibrato;\n }\n /** Arrange vibratos inside a `ModifierContext`. */\n static format(vibratos, state, context) {\n if (!vibratos || vibratos.length === 0)\n return false;\n // Vibratos are always on top.\n let text_line = state.top_text_line;\n let width = 0;\n let shift = state.right_shift - 7;\n // If there's a bend, drop the text line\n const bends = context.getMembers(Bend.CATEGORY);\n if (bends && bends.length > 0) {\n const bendHeight = bends.map((bb) => bb.getTextHeight()).reduce((a, b) => (a > b ? a : b)) / Tables.STAVE_LINE_DISTANCE;\n text_line = text_line - (bendHeight + 1);\n }\n else {\n state.top_text_line += 1;\n }\n // Format Vibratos\n for (let i = 0; i < vibratos.length; ++i) {\n const vibrato = vibratos[i];\n vibrato.setXShift(shift);\n vibrato.setTextLine(text_line);\n width += vibrato.getWidth();\n shift += width;\n }\n state.right_shift += width;\n return true;\n }\n /** Set harsh vibrato. */\n setHarsh(harsh) {\n this.render_options.harsh = harsh;\n return this;\n }\n /** Set vibrato width in pixels. */\n setVibratoWidth(width) {\n this.render_options.vibrato_width = width;\n this.setWidth(width);\n return this;\n }\n /** Draw the vibrato on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const start = note.getModifierStartXY(Modifier.Position.RIGHT, this.index);\n const vx = start.x + this.x_shift;\n const vy = note.getYForTopText(this.text_line) + 2;\n Vibrato.renderVibrato(ctx, vx, vy, this.render_options);\n }\n /**\n * Static rendering method that can be called from\n * other classes (e.g. VibratoBracket).\n */\n static renderVibrato(ctx, x, y, opts) {\n const { harsh, vibrato_width, wave_width, wave_girth, wave_height } = opts;\n const num_waves = vibrato_width / wave_width;\n ctx.beginPath();\n let i;\n if (harsh) {\n ctx.moveTo(x, y + wave_girth + 1);\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.lineTo(x + wave_width, y - wave_height / 2);\n x += wave_width;\n ctx.lineTo(x + wave_width, y + wave_height / 2);\n x += wave_width;\n }\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.lineTo(x - wave_width, y - wave_height / 2 + wave_girth + 1);\n x -= wave_width;\n ctx.lineTo(x - wave_width, y + wave_height / 2 + wave_girth + 1);\n x -= wave_width;\n }\n ctx.fill();\n }\n else {\n ctx.moveTo(x, y + wave_girth);\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.quadraticCurveTo(x + wave_width / 2, y - wave_height / 2, x + wave_width, y);\n x += wave_width;\n ctx.quadraticCurveTo(x + wave_width / 2, y + wave_height / 2, x + wave_width, y);\n x += wave_width;\n }\n for (i = 0; i < num_waves / 2; ++i) {\n ctx.quadraticCurveTo(x - wave_width / 2, y + wave_height / 2 + wave_girth, x - wave_width, y + wave_girth);\n x -= wave_width;\n ctx.quadraticCurveTo(x - wave_width / 2, y - wave_height / 2 + wave_girth, x - wave_width, y + wave_girth);\n x -= wave_width;\n }\n ctx.fill();\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This class implements various types of members to notes (e.g. bends,\n// fingering positions etc.)\nimport { Accidental } from './accidental';\nimport { Annotation } from './annotation';\nimport { Articulation } from './articulation';\nimport { Bend } from './bend';\nimport { ChordSymbol } from './chordsymbol';\nimport { Dot } from './dot';\nimport { FretHandFinger } from './frethandfinger';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { Parenthesis } from './parenthesis';\nimport { StaveNote } from './stavenote';\nimport { StringNumber } from './stringnumber';\nimport { Stroke } from './strokes';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\nimport { Vibrato } from './vibrato';\n// To enable logging for this class. Set `Vex.Flow.ModifierContext.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (ModifierContext.DEBUG)\n log('Vex.Flow.ModifierContext', args);\n}\nexport class ModifierContext {\n constructor() {\n // Formatting data.\n this.state = {\n left_shift: 0,\n right_shift: 0,\n text_line: 0,\n top_text_line: 0,\n };\n // Current members\n this.members = {};\n this.preFormatted = false;\n this.postFormatted = false;\n this.formatted = false;\n this.width = 0;\n this.spacing = 0;\n }\n addModifier(member) {\n L('addModifier is deprecated, use addMember instead.');\n return this.addMember(member);\n }\n /**\n * this.members maps CATEGORY strings to arrays of Tickable | Modifier | StaveNote | TabNote.\n * Here we add a new member to this.members, and create a new array if needed.\n * @param member\n * @returns this\n */\n addMember(member) {\n const category = member.getCategory();\n if (!this.members[category]) {\n this.members[category] = [];\n }\n this.members[category].push(member);\n member.setModifierContext(this);\n this.preFormatted = false;\n return this;\n }\n /**\n * @deprecated\n */\n getModifiers(category) {\n L('getModifiers is deprecated, use getMembers instead.');\n return this.getMembers(category);\n }\n getMembers(category) {\n var _a;\n return (_a = this.members[category]) !== null && _a !== void 0 ? _a : [];\n }\n getWidth() {\n return this.width;\n }\n getLeftShift() {\n return this.state.left_shift;\n }\n getRightShift() {\n return this.state.right_shift;\n }\n getState() {\n return this.state;\n }\n getMetrics() {\n if (!this.formatted) {\n throw new RuntimeError('UnformattedMember', 'Unformatted member has no metrics.');\n }\n return {\n width: this.state.left_shift + this.state.right_shift + this.spacing,\n spacing: this.spacing,\n };\n }\n preFormat() {\n if (this.preFormatted)\n return;\n L('Preformatting ModifierContext');\n const state = this.state;\n const members = this.members;\n // The ordering below determines when different members are formatted and rendered.\n StaveNote.format(members[Category.StaveNote], state);\n Parenthesis.format(members[Category.Parenthesis], state);\n Dot.format(members[Category.Dot], state);\n FretHandFinger.format(members[Category.FretHandFinger], state);\n Accidental.format(members[Category.Accidental], state);\n Stroke.format(members[Category.Stroke], state);\n GraceNoteGroup.format(members[Category.GraceNoteGroup], state);\n NoteSubGroup.format(members[Category.NoteSubGroup], state);\n StringNumber.format(members[Category.StringNumber], state);\n Articulation.format(members[Category.Articulation], state);\n Ornament.format(members[Category.Ornament], state);\n Annotation.format(members[Category.Annotation], state);\n ChordSymbol.format(members[Category.ChordSymbol], state);\n Bend.format(members[Category.Bend], state);\n Vibrato.format(members[Category.Vibrato], state, this);\n // Update width of this member context\n this.width = state.left_shift + state.right_shift;\n this.preFormatted = true;\n }\n postFormat() {\n if (this.postFormatted)\n return;\n L('Postformatting ModifierContext');\n // If post-formatting is required for an element, add more lines below.\n StaveNote.postFormat(this.getMembers(Category.StaveNote));\n }\n}\nModifierContext.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna Cheppudira 2013.\n// Co-author: Benjamin W. Bohl\n// MIT License\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, log } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Clef.DEBUG)\n log('Vex.Flow.Clef', args);\n}\n/**\n * Clef implements various types of clefs that can be rendered on a stave.\n *\n * See `tests/clef_tests.ts` for usage examples.\n */\nexport class Clef extends StaveModifier {\n /** Create a new clef. */\n constructor(type, size, annotation) {\n super();\n /**\n * The attribute `clef` must be a key from\n * `Clef.types`\n */\n this.clef = Clef.types['treble'];\n this.setPosition(StaveModifierPosition.BEGIN);\n this.setType(type, size, annotation);\n this.setWidth(Tables.currentMusicFont().lookupMetric(`clef.${this.size}.width`));\n L('Creating clef:', type);\n }\n static get CATEGORY() {\n return Category.Clef;\n }\n /**\n * Every clef name is associated with a glyph code from the font file\n * and a default stave line number.\n */\n static get types() {\n return {\n treble: {\n code: 'gClef',\n line: 3,\n point: 0,\n },\n bass: {\n code: 'fClef',\n line: 1,\n point: 0,\n },\n alto: {\n code: 'cClef',\n line: 2,\n point: 0,\n },\n tenor: {\n code: 'cClef',\n line: 1,\n point: 0,\n },\n percussion: {\n code: 'restMaxima',\n line: 2,\n point: 0,\n },\n soprano: {\n code: 'cClef',\n line: 4,\n point: 0,\n },\n 'mezzo-soprano': {\n code: 'cClef',\n line: 3,\n point: 0,\n },\n 'baritone-c': {\n code: 'cClef',\n line: 0,\n point: 0,\n },\n 'baritone-f': {\n code: 'fClef',\n line: 2,\n point: 0,\n },\n subbass: {\n code: 'fClef',\n line: 0,\n point: 0,\n },\n french: {\n code: 'gClef',\n line: 4,\n point: 0,\n },\n tab: {\n code: '6stringTabClef',\n point: 0,\n },\n };\n }\n /** Set clef type, size and annotation. */\n setType(type, size, annotation) {\n this.type = type;\n this.clef = Clef.types[type];\n if (size === undefined) {\n this.size = 'default';\n }\n else {\n this.size = size;\n }\n const musicFont = Tables.currentMusicFont();\n this.clef.point = musicFont.lookupMetric(`clef.${this.size}.point`, 0);\n this.glyph = new Glyph(this.clef.code, this.clef.point, {\n category: `clef.${this.clef.code}.${this.size}`,\n });\n // If an annotation, such as 8va, is specified, add it to the Clef object.\n if (annotation !== undefined) {\n const code = musicFont.lookupMetric(`clef.annotations.${annotation}.smuflCode`);\n const point = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.point`);\n const line = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.${this.type}.line`);\n const x_shift = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.${this.type}.shiftX`);\n this.annotation = { code, point, line, x_shift };\n this.attachment = new Glyph(this.annotation.code, this.annotation.point);\n this.attachment.metrics.x_max = 0;\n this.attachment.setXShift(this.annotation.x_shift);\n }\n else {\n this.annotation = undefined;\n }\n return this;\n }\n /** Get clef width. */\n getWidth() {\n if (this.type === 'tab') {\n defined(this.stave, 'ClefError', \"Can't get width without stave.\");\n }\n return this.width;\n }\n /** Set associated stave. */\n setStave(stave) {\n this.stave = stave;\n if (this.type === 'tab') {\n const glyph = defined(this.glyph, 'ClefError', \"Can't set stave without glyph.\");\n const numLines = this.stave.getNumLines();\n const musicFont = Tables.currentMusicFont();\n const point = musicFont.lookupMetric(`clef.lineCount.${numLines}.point`);\n const shiftY = musicFont.lookupMetric(`clef.lineCount.${numLines}.shiftY`);\n glyph.setPoint(point);\n glyph.setYShift(shiftY);\n }\n return this;\n }\n /** Render clef. */\n draw() {\n const glyph = defined(this.glyph, 'ClefError', \"Can't draw clef without glyph.\");\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('clef', this.getAttribute('id'));\n glyph.setStave(stave);\n glyph.setContext(ctx);\n if (this.clef.line !== undefined) {\n this.placeGlyphOnLine(glyph, stave, this.clef.line);\n }\n glyph.renderToStave(this.x);\n if (this.annotation !== undefined && this.attachment !== undefined) {\n this.placeGlyphOnLine(this.attachment, stave, this.annotation.line);\n this.attachment.setStave(stave);\n this.attachment.setContext(ctx);\n this.attachment.renderToStave(this.x);\n }\n ctx.closeGroup();\n }\n}\n/** To enable logging for this class, set `Vex.Flow.Clef.DEBUG` to `true`. */\nClef.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n//\n// ## Description\n//\n// This file implements key signatures. A key signature sits on a stave\n// and indicates the notes with implicit accidentals.\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined } from './util';\nexport class KeySignature extends StaveModifier {\n // Create a new Key Signature based on a `key_spec`\n constructor(keySpec, cancelKeySpec, alterKeySpec) {\n super();\n this.accList = [];\n this.setKeySig(keySpec, cancelKeySpec, alterKeySpec);\n this.setPosition(StaveModifierPosition.BEGIN);\n this.glyphFontScale = 38; // TODO(0xFE): Should this match StaveNote?\n this.glyphs = [];\n this.xPositions = []; // relative to this.x\n this.paddingForced = false;\n }\n static get CATEGORY() {\n return Category.KeySignature;\n }\n // Add an accidental glyph to the `KeySignature` instance which represents\n // the provided `acc`. If `nextAcc` is also provided, the appropriate\n // spacing will be included in the glyph's position\n convertToGlyph(acc, nextAcc) {\n const accGlyphData = Tables.accidentalCodes(acc.type);\n const glyph = new Glyph(accGlyphData.code, this.glyphFontScale);\n // Determine spacing between current accidental and the next accidental\n let extraWidth = 1;\n if (acc.type === 'n' && nextAcc) {\n const spacing = KeySignature.accidentalSpacing[nextAcc.type];\n if (spacing) {\n const isAbove = nextAcc.line >= acc.line;\n extraWidth = isAbove ? spacing.above : spacing.below;\n }\n }\n // Place the glyph on the stave\n this.placeGlyphOnLine(glyph, this.checkStave(), acc.line);\n this.glyphs.push(glyph);\n const xPosition = this.xPositions[this.xPositions.length - 1];\n const glyphWidth = glyph.getMetrics().width + extraWidth;\n // Store the next accidental's x position\n this.xPositions.push(xPosition + glyphWidth);\n // Expand size of key signature\n this.width += glyphWidth;\n }\n // Cancel out a key signature provided in the `spec` parameter. This will\n // place appropriate natural accidentals before the key signature.\n cancelKey(spec) {\n this.formatted = false;\n this.cancelKeySpec = spec;\n return this;\n }\n convertToCancelAccList(spec) {\n // Get the accidental list for the cancelled key signature\n const cancel_accList = Tables.keySignature(spec);\n // If the cancelled key has a different accidental type, ie: # vs b\n const different_types = this.accList.length > 0 && cancel_accList.length > 0 && cancel_accList[0].type !== this.accList[0].type;\n // Determine how many naturals needed to add\n const naturals = different_types ? cancel_accList.length : cancel_accList.length - this.accList.length;\n // Return if no naturals needed\n if (naturals < 1)\n return undefined;\n // Get the line position for each natural\n const cancelled = [];\n for (let i = 0; i < naturals; i++) {\n let index = i;\n if (!different_types) {\n index = cancel_accList.length - naturals + i;\n }\n const acc = cancel_accList[index];\n cancelled.push({ type: 'n', line: acc.line });\n }\n // Combine naturals with main accidental list for the key signature\n this.accList = cancelled.concat(this.accList);\n return {\n accList: cancelled,\n type: cancel_accList[0].type,\n };\n }\n // Deprecated\n addToStave(stave) {\n this.paddingForced = true;\n stave.addModifier(this);\n return this;\n }\n // Apply the accidental staff line placement based on the `clef` and\n // the accidental `type` for the key signature ('# or 'b').\n convertAccLines(clef, type, accList = this.accList) {\n let offset = 0.0; // if clef === \"treble\"\n let customLines; // when clef doesn't follow treble key sig shape\n switch (clef) {\n // Treble & Subbass both have offsets of 0, so are not included.\n case 'soprano':\n if (type === '#')\n customLines = [2.5, 0.5, 2, 0, 1.5, -0.5, 1];\n else\n offset = -1;\n break;\n case 'mezzo-soprano':\n if (type === 'b')\n customLines = [0, 2, 0.5, 2.5, 1, 3, 1.5];\n else\n offset = 1.5;\n break;\n case 'alto':\n offset = 0.5;\n break;\n case 'tenor':\n if (type === '#')\n customLines = [3, 1, 2.5, 0.5, 2, 0, 1.5];\n else\n offset = -0.5;\n break;\n case 'baritone-f':\n case 'baritone-c':\n if (type === 'b')\n customLines = [0.5, 2.5, 1, 3, 1.5, 3.5, 2];\n else\n offset = 2;\n break;\n case 'bass':\n case 'french':\n offset = 1;\n break;\n default:\n break;\n }\n // If there's a special case, assign those lines/spaces:\n let i;\n if (typeof customLines !== 'undefined') {\n for (i = 0; i < accList.length; ++i) {\n accList[i].line = customLines[i];\n }\n }\n else if (offset !== 0) {\n for (i = 0; i < accList.length; ++i) {\n accList[i].line += offset;\n }\n }\n }\n getPadding(index) {\n if (!this.formatted)\n this.format();\n return this.glyphs.length === 0 || (!this.paddingForced && index < 2) ? 0 : this.padding;\n }\n getWidth() {\n if (!this.formatted)\n this.format();\n return this.width;\n }\n setKeySig(keySpec, cancelKeySpec, alterKeySpec) {\n this.formatted = false;\n this.keySpec = keySpec;\n this.cancelKeySpec = cancelKeySpec;\n this.alterKeySpec = alterKeySpec;\n return this;\n }\n // Alter the accidentals of a key spec one by one.\n // Each alteration is a new accidental that replaces the\n // original accidental (or the canceled one).\n alterKey(alterKeySpec) {\n this.formatted = false;\n this.alterKeySpec = alterKeySpec;\n return this;\n }\n convertToAlterAccList(alterKeySpec) {\n const max = Math.min(alterKeySpec.length, this.accList.length);\n for (let i = 0; i < max; ++i) {\n if (alterKeySpec[i]) {\n this.accList[i].type = alterKeySpec[i];\n }\n }\n }\n format() {\n const stave = this.checkStave();\n this.width = 0;\n this.glyphs = [];\n this.xPositions = [0]; // initialize with initial x position\n this.accList = Tables.keySignature(defined(this.keySpec));\n const accList = this.accList;\n const firstAccidentalType = accList.length > 0 ? accList[0].type : undefined;\n let cancelAccList;\n if (this.cancelKeySpec) {\n cancelAccList = this.convertToCancelAccList(this.cancelKeySpec);\n }\n if (this.alterKeySpec) {\n this.convertToAlterAccList(this.alterKeySpec);\n }\n if (this.accList.length > 0) {\n const clef = (this.position === StaveModifierPosition.END ? stave.getEndClef() : stave.getClef()) || stave.getClef();\n if (cancelAccList) {\n this.convertAccLines(clef, cancelAccList.type, cancelAccList.accList);\n }\n this.convertAccLines(clef, firstAccidentalType, accList);\n for (let i = 0; i < this.accList.length; ++i) {\n this.convertToGlyph(this.accList[i], this.accList[i + 1]);\n }\n }\n this.formatted = true;\n }\n /**\n * Return the Glyph objects making up this KeySignature.\n */\n getGlyphs() {\n if (!this.formatted)\n this.format();\n return this.glyphs;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n if (!this.formatted)\n this.format();\n this.setRendered();\n ctx.openGroup('keysignature', this.getAttribute('id'));\n for (let i = 0; i < this.glyphs.length; i++) {\n const glyph = this.glyphs[i];\n const x = this.x + this.xPositions[i];\n glyph.setStave(stave);\n glyph.setContext(ctx);\n glyph.renderToStave(x);\n }\n ctx.closeGroup();\n }\n}\n// Space between natural and following accidental depending\n// on vertical position\nKeySignature.accidentalSpacing = {\n '#': {\n above: 6,\n below: 4,\n },\n b: {\n above: 4,\n below: 7,\n },\n n: {\n above: 4,\n below: 1,\n },\n '##': {\n above: 6,\n below: 4,\n },\n bb: {\n above: 4,\n below: 7,\n },\n db: {\n above: 4,\n below: 7,\n },\n d: {\n above: 4,\n below: 7,\n },\n bbs: {\n above: 4,\n below: 7,\n },\n '++': {\n above: 6,\n below: 4,\n },\n '+': {\n above: 6,\n below: 4,\n },\n '+-': {\n above: 6,\n below: 4,\n },\n '++-': {\n above: 6,\n below: 4,\n },\n bs: {\n above: 4,\n below: 10,\n },\n bss: {\n above: 4,\n below: 10,\n },\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { StaveModifier } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport class Repetition extends StaveModifier {\n constructor(type, x, y_shift) {\n super();\n this.symbol_type = type;\n this.x = x;\n this.x_shift = 0;\n this.y_shift = y_shift;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.Repetition;\n }\n setShiftX(x) {\n this.x_shift = x;\n return this;\n }\n setShiftY(y) {\n this.y_shift = y;\n return this;\n }\n draw(stave, x) {\n this.setRendered();\n switch (this.symbol_type) {\n case Repetition.type.CODA_RIGHT:\n this.drawCodaFixed(stave, x + stave.getWidth());\n break;\n case Repetition.type.CODA_LEFT:\n this.drawSymbolText(stave, x, 'Coda', true);\n break;\n case Repetition.type.SEGNO_LEFT:\n this.drawSignoFixed(stave, x);\n break;\n case Repetition.type.SEGNO_RIGHT:\n this.drawSignoFixed(stave, x + stave.getWidth());\n break;\n case Repetition.type.DC:\n this.drawSymbolText(stave, x, 'D.C.', false);\n break;\n case Repetition.type.DC_AL_CODA:\n this.drawSymbolText(stave, x, 'D.C. al', true);\n break;\n case Repetition.type.DC_AL_FINE:\n this.drawSymbolText(stave, x, 'D.C. al Fine', false);\n break;\n case Repetition.type.DS:\n this.drawSymbolText(stave, x, 'D.S.', false);\n break;\n case Repetition.type.DS_AL_CODA:\n this.drawSymbolText(stave, x, 'D.S. al', true);\n break;\n case Repetition.type.DS_AL_FINE:\n this.drawSymbolText(stave, x, 'D.S. al Fine', false);\n break;\n case Repetition.type.FINE:\n this.drawSymbolText(stave, x, 'Fine', false);\n break;\n case Repetition.type.TO_CODA:\n this.drawSymbolText(stave, x, 'To', true);\n break;\n default:\n break;\n }\n return this;\n }\n drawCodaFixed(stave, x) {\n const y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n Glyph.renderGlyph(stave.checkContext(), this.x + x + this.x_shift, y + Tables.currentMusicFont().lookupMetric('staveRepetition.coda.offsetY'), 40, 'coda', { category: 'coda' });\n return this;\n }\n drawSignoFixed(stave, x) {\n const y = stave.getYForTopText(stave.getNumLines()) + this.y_shift;\n Glyph.renderGlyph(stave.checkContext(), this.x + x + this.x_shift, y + Tables.currentMusicFont().lookupMetric('staveRepetition.segno.offsetY'), 30, 'segno', { category: 'segno' });\n return this;\n }\n drawSymbolText(stave, x, text, draw_coda) {\n const ctx = stave.checkContext();\n ctx.save();\n ctx.setFont(this.textFont);\n let text_x = 0;\n let symbol_x = 0;\n const modifierWidth = stave.getNoteStartX() - this.x;\n switch (this.symbol_type) {\n // To the left with symbol\n case Repetition.type.CODA_LEFT:\n // Offset Coda text to right of stave beginning\n text_x = this.x + stave.getVerticalBarWidth();\n symbol_x =\n text_x +\n ctx.measureText(text).width +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n break;\n // To the right without symbol\n case Repetition.type.DC:\n case Repetition.type.DC_AL_FINE:\n case Repetition.type.DS:\n case Repetition.type.DS_AL_FINE:\n case Repetition.type.FINE:\n text_x =\n this.x +\n x +\n this.x_shift +\n stave.getWidth() -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.spacing') -\n modifierWidth -\n ctx.measureText(text).width;\n break;\n // To the right with symbol\n default:\n text_x =\n this.x +\n x +\n this.x_shift +\n stave.getWidth() -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.spacing') -\n modifierWidth -\n ctx.measureText(text).width -\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n symbol_x =\n text_x +\n ctx.measureText(text).width +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX');\n break;\n }\n const y = stave.getYForTopText(stave.getNumLines()) +\n this.y_shift +\n Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetY');\n if (draw_coda) {\n Glyph.renderGlyph(ctx, symbol_x, y, 40, 'coda', { category: 'coda' });\n }\n ctx.fillText(text, text_x, y + 5);\n ctx.restore();\n return this;\n }\n}\nRepetition.TEXT_FONT = {\n family: Font.SERIF,\n size: 12,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\nRepetition.type = {\n NONE: 1,\n CODA_LEFT: 2,\n CODA_RIGHT: 3,\n SEGNO_LEFT: 4,\n SEGNO_RIGHT: 5,\n DC: 6,\n DC_AL_CODA: 7,\n DC_AL_FINE: 8,\n DS: 9,\n DS_AL_CODA: 10,\n DS_AL_FINE: 11,\n FINE: 12,\n TO_CODA: 13, // To Coda at end of stave\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Larry Kuhns 2011\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier } from './stavemodifier';\nimport { Category } from './typeguard';\nexport class StaveSection extends StaveModifier {\n constructor(section, x, shift_y, drawRect = true) {\n super();\n this.setWidth(16);\n this.section = section;\n this.x = x;\n this.shift_x = 0;\n this.shift_y = shift_y;\n this.drawRect = drawRect;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveSection;\n }\n setStaveSection(section) {\n this.section = section;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n draw(stave, shift_x) {\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n const paddingX = 2;\n const paddingY = 2;\n const rectWidth = 2;\n const textMeasurements = ctx.measureText(this.section);\n const textWidth = textMeasurements.width;\n const textHeight = textMeasurements.height;\n const width = textWidth + 2 * paddingX; // add left & right padding\n const height = textHeight + 2 * paddingY; // add top & bottom padding\n // Seems to be a good default y\n const y = stave.getYForTopText(1.5) + this.shift_y;\n const x = this.x + shift_x;\n if (this.drawRect) {\n ctx.beginPath();\n ctx.setLineWidth(rectWidth);\n ctx.rect(x, y + textMeasurements.y - paddingY, width, height);\n ctx.stroke();\n }\n ctx.fillText(this.section, x + paddingX, y);\n ctx.restore();\n return this;\n }\n}\nStaveSection.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 10,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Radosaw Eichler 2012\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nexport class StaveTempo extends StaveModifier {\n constructor(tempo, x, shift_y) {\n super();\n /** Font size for note. */\n this.render_options = { glyph_font_scale: 30 };\n this.tempo = tempo;\n this.position = StaveModifierPosition.ABOVE;\n this.x = x;\n this.shift_x = 10;\n this.shift_y = shift_y;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveTempo;\n }\n setTempo(tempo) {\n this.tempo = tempo;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n draw(stave, shift_x) {\n const ctx = stave.checkContext();\n this.setRendered();\n const options = this.render_options;\n // FIXME: What does the '38' mean? Why 38? Is that supposed to\n // be the default font size for standard notation?\n const scale = options.glyph_font_scale / 38;\n const name = this.tempo.name;\n const duration = this.tempo.duration;\n const dots = this.tempo.dots || 0;\n const bpm = this.tempo.bpm;\n let x = this.x + this.shift_x + shift_x;\n const y = stave.getYForTopText(1) + this.shift_y;\n ctx.save();\n if (name) {\n ctx.setFont(this.textFont);\n ctx.fillText(name, x, y);\n x += ctx.measureText(name).width;\n }\n if (duration && bpm) {\n // Override the weight and style.\n ctx.setFont(Object.assign(Object.assign({}, this.textFont), { weight: 'normal', style: 'normal' }));\n if (name) {\n x += ctx.measureText(' ').width;\n ctx.fillText('(', x, y);\n x += ctx.measureText('(').width;\n }\n const code = Tables.getGlyphProps(duration);\n x += 3 * scale;\n Glyph.renderGlyph(ctx, x, y, options.glyph_font_scale, code.code_head);\n x += code.getWidth() * scale;\n // Draw stem and flags\n if (code.stem) {\n let stem_height = 30;\n if (code.beam_count)\n stem_height += 3 * (code.beam_count - 1);\n stem_height *= scale;\n const y_top = y - stem_height;\n ctx.fillRect(x - scale, y_top, scale, stem_height);\n if (code.flag) {\n Glyph.renderGlyph(ctx, x, y_top, options.glyph_font_scale, code.code_flag_upstem, {\n category: 'flag.staveTempo',\n });\n if (!dots)\n x += 6 * scale;\n }\n }\n // Draw dot\n for (let i = 0; i < dots; i++) {\n x += 6 * scale;\n ctx.beginPath();\n ctx.arc(x, y + 2 * scale, 2 * scale, 0, Math.PI * 2, false);\n ctx.fill();\n }\n ctx.fillText(' = ' + bpm + (name ? ')' : ''), x + 3 * scale, y);\n }\n ctx.restore();\n return this;\n }\n}\nStaveTempo.TEXT_FONT = {\n family: Font.SERIF,\n size: 14,\n weight: FontWeight.BOLD,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\nimport { Font, FontStyle, FontWeight } from './font';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { TextJustification, TextNote } from './textnote';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveText extends StaveModifier {\n constructor(text, position, options = {}) {\n super();\n this.setWidth(16);\n this.text = text;\n this.position = position;\n this.options = Object.assign({ shift_x: 0, shift_y: 0, justification: TextNote.Justification.CENTER }, options);\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.StaveText;\n }\n setStaveText(text) {\n this.text = text;\n return this;\n }\n setShiftX(x) {\n this.shift_x = x;\n return this;\n }\n setShiftY(y) {\n this.shift_y = y;\n return this;\n }\n setText(text) {\n this.text = text;\n return this;\n }\n draw(stave) {\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n const text_width = ctx.measureText('' + this.text).width;\n let x;\n let y;\n switch (this.position) {\n case StaveModifierPosition.LEFT:\n case StaveModifierPosition.RIGHT:\n y = (stave.getYForLine(0) + stave.getBottomLineY()) / 2 + this.options.shift_y;\n if (this.position === StaveModifierPosition.LEFT) {\n x = stave.getX() - text_width - 24 + this.options.shift_x;\n }\n else {\n x = stave.getX() + stave.getWidth() + 24 + this.options.shift_x;\n }\n break;\n case StaveModifierPosition.ABOVE:\n case StaveModifierPosition.BELOW:\n x = stave.getX() + this.options.shift_x;\n if (this.options.justification === TextJustification.CENTER) {\n x += stave.getWidth() / 2 - text_width / 2;\n }\n else if (this.options.justification === TextJustification.RIGHT) {\n x += stave.getWidth() - text_width;\n }\n if (this.position === StaveModifierPosition.ABOVE) {\n y = stave.getYForTopText(2) + this.options.shift_y;\n }\n else {\n y = stave.getYForBottomText(2) + this.options.shift_y;\n }\n break;\n default:\n throw new RuntimeError('InvalidPosition', 'Value Must be in Modifier.Position.');\n }\n ctx.fillText('' + this.text, x, y + 4);\n ctx.restore();\n return this;\n }\n}\nStaveText.TEXT_FONT = {\n family: Font.SERIF,\n size: 16,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Renders time signatures glyphs for staffs\n// This class is used by TimeSignature to render the associated glyphs\nimport { Glyph } from './glyph';\nimport { defined } from './util';\nexport class TimeSignatureGlyph extends Glyph {\n constructor(timeSignature, topDigits, botDigits, code, point, options) {\n var _a;\n super(code, point, options);\n this.timeSignature = timeSignature;\n this.topGlyphs = [];\n this.botGlyphs = [];\n let topWidth = 0;\n for (let i = 0; i < topDigits.length; ++i) {\n let timeSigType = topDigits[i];\n switch (topDigits[i]) {\n case '-':\n timeSigType = 'Minus';\n break;\n case '+':\n timeSigType = botDigits.length > 0 ? 'PlusSmall' : 'Plus';\n break;\n case '(':\n timeSigType = botDigits.length > 0 ? 'ParensLeftSmall' : 'ParensLeft';\n break;\n case ')':\n timeSigType = botDigits.length > 0 ? 'ParensRightSmall' : 'ParensRight';\n break;\n }\n const topGlyph = new Glyph('timeSig' + timeSigType, this.timeSignature.point);\n this.topGlyphs.push(topGlyph);\n topWidth += (_a = topGlyph.getMetrics().width) !== null && _a !== void 0 ? _a : 0;\n }\n let botWidth = 0;\n for (let i = 0; i < botDigits.length; ++i) {\n let timeSigType = botDigits[i];\n switch (botDigits[i]) {\n case '+':\n timeSigType = 'PlusSmall';\n break;\n case '(':\n timeSigType = 'ParensLeftSmall';\n break;\n case ')':\n timeSigType = 'ParensRightSmall';\n break;\n }\n const botGlyph = new Glyph('timeSig' + timeSigType, this.timeSignature.point);\n this.botGlyphs.push(botGlyph);\n botWidth += defined(botGlyph.getMetrics().width);\n }\n this.width = Math.max(topWidth, botWidth);\n this.xMin = this.getMetrics().x_min;\n this.topStartX = (this.width - topWidth) / 2.0;\n this.botStartX = (this.width - botWidth) / 2.0;\n this.reset();\n }\n getMetrics() {\n return {\n x_min: this.xMin,\n x_max: this.xMin + this.width,\n width: this.width,\n };\n }\n renderToStave(x) {\n const stave = this.checkStave();\n const ctx = this.checkContext();\n let start_x = x + this.topStartX;\n let y = 0;\n if (this.botGlyphs.length > 0)\n y = stave.getYForLine(this.timeSignature.topLine);\n else\n y = (stave.getYForLine(this.timeSignature.topLine) + stave.getYForLine(this.timeSignature.bottomLine)) / 2;\n for (let i = 0; i < this.topGlyphs.length; ++i) {\n const glyph = this.topGlyphs[i];\n Glyph.renderOutline(ctx, glyph.getMetrics().outline, this.scale, start_x + this.x_shift, y);\n start_x += defined(glyph.getMetrics().width);\n }\n start_x = x + this.botStartX;\n y = stave.getYForLine(this.timeSignature.bottomLine);\n for (let i = 0; i < this.botGlyphs.length; ++i) {\n const glyph = this.botGlyphs[i];\n this.timeSignature.placeGlyphOnLine(glyph, stave, 0);\n Glyph.renderOutline(ctx, glyph.getMetrics().outline, this.scale, start_x + glyph.getMetrics().x_shift, y);\n start_x += defined(glyph.getMetrics().width);\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Implements time signatures glyphs for staffs\n// See tables.js for the internal time signatures\n// representation\nimport { Glyph } from './glyph';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { TimeSignatureGlyph } from './timesigglyph';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nconst assertIsValidTimeSig = (timeSpec) => {\n const numbers = timeSpec.split('/');\n if (numbers.length !== 2 && numbers[0] !== '+' && numbers[0] !== '-') {\n throw new RuntimeError('BadTimeSignature', `Invalid time spec: ${timeSpec}. Must be in the form \"/\"`);\n }\n numbers.forEach((number) => {\n // Characters consisting in number 0..9, '+', '-', '(' or ')'\n if (/^[0-9+\\-()]+$/.test(number) == false) {\n throw new RuntimeError('BadTimeSignature', `Invalid time spec: ${timeSpec}. Must contain valid signatures.`);\n }\n });\n};\nexport class TimeSignature extends StaveModifier {\n constructor(timeSpec = '4/4', customPadding = 15, validate_args = true) {\n super();\n this.validate_args = validate_args;\n const padding = customPadding;\n const musicFont = Tables.currentMusicFont();\n this.point = musicFont.lookupMetric('digits.point');\n const fontLineShift = musicFont.lookupMetric('digits.shiftLine', 0);\n this.topLine = 2 + fontLineShift;\n this.bottomLine = 4 + fontLineShift;\n this.setPosition(StaveModifierPosition.BEGIN);\n this.info = this.parseTimeSpec(timeSpec);\n this.setWidth(defined(this.info.glyph.getMetrics().width));\n this.setPadding(padding);\n }\n static get CATEGORY() {\n return Category.TimeSignature;\n }\n static get glyphs() {\n return {\n C: {\n code: 'timeSigCommon',\n point: 40,\n line: 2,\n },\n 'C|': {\n code: 'timeSigCutCommon',\n point: 40,\n line: 2,\n },\n };\n }\n parseTimeSpec(timeSpec) {\n var _a, _b;\n if (timeSpec === 'C' || timeSpec === 'C|') {\n const { line, code, point } = TimeSignature.glyphs[timeSpec];\n return {\n line,\n num: false,\n glyph: new Glyph(code, point),\n };\n }\n if (this.validate_args) {\n assertIsValidTimeSig(timeSpec);\n }\n const parts = timeSpec.split('/');\n return {\n num: true,\n glyph: this.makeTimeSignatureGlyph((_a = parts[0]) !== null && _a !== void 0 ? _a : '', (_b = parts[1]) !== null && _b !== void 0 ? _b : ''),\n };\n }\n makeTimeSignatureGlyph(topDigits, botDigits) {\n return new TimeSignatureGlyph(this, topDigits, botDigits, 'timeSig0', this.point);\n }\n getInfo() {\n return this.info;\n }\n setTimeSig(timeSpec) {\n this.info = this.parseTimeSpec(timeSpec);\n return this;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('timesignature', this.getAttribute('id'));\n this.info.glyph.setStave(stave);\n this.info.glyph.setContext(ctx);\n this.placeGlyphOnLine(this.info.glyph, stave, this.info.line);\n this.info.glyph.renderToStave(this.x);\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Clef } from './clef';\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { KeySignature } from './keysignature';\nimport { Barline, BarlineType } from './stavebarline';\nimport { StaveModifierPosition } from './stavemodifier';\nimport { Repetition } from './staverepetition';\nimport { StaveSection } from './stavesection';\nimport { StaveTempo } from './stavetempo';\nimport { StaveText } from './stavetext';\nimport { Volta } from './stavevolta';\nimport { Tables } from './tables';\nimport { TimeSignature } from './timesignature';\nimport { Category, isBarline } from './typeguard';\nimport { RuntimeError } from './util';\n// Used by Stave.format() to sort the modifiers at the beginning and end of a stave.\n// The keys (computed property names) match the CATEGORY property in the\n// Barline, Clef, KeySignature, TimeSignature classes.\nconst SORT_ORDER_BEG_MODIFIERS = {\n [Barline.CATEGORY]: 0,\n [Clef.CATEGORY]: 1,\n [KeySignature.CATEGORY]: 2,\n [TimeSignature.CATEGORY]: 3,\n};\nconst SORT_ORDER_END_MODIFIERS = {\n [TimeSignature.CATEGORY]: 0,\n [KeySignature.CATEGORY]: 1,\n [Barline.CATEGORY]: 2,\n [Clef.CATEGORY]: 3,\n};\nexport class Stave extends Element {\n constructor(x, y, width, options) {\n super();\n // Initialized by the constructor via this.resetLines().\n this.height = 0;\n this.x = x;\n this.y = y;\n this.width = width;\n this.formatted = false;\n this.start_x = x + 5;\n this.end_x = x + width;\n this.modifiers = []; // stave modifiers (clef, key, time, barlines, coda, segno, etc.)\n this.measure = 0;\n this.clef = 'treble';\n this.endClef = undefined;\n this.resetFont();\n this.options = Object.assign({ vertical_bar_width: 10, num_lines: 5, fill_style: '#999999', left_bar: true, right_bar: true, spacing_between_lines_px: Tables.STAVE_LINE_DISTANCE, space_above_staff_ln: 4, space_below_staff_ln: 4, top_text_position: 1, bottom_text_position: 4, line_config: [] }, options);\n this.bounds = { x: this.x, y: this.y, w: this.width, h: 0 };\n this.defaultLedgerLineStyle = { strokeStyle: '#444', lineWidth: 1.4 };\n this.resetLines();\n // beg bar\n this.addModifier(new Barline(this.options.left_bar ? BarlineType.SINGLE : BarlineType.NONE));\n // end bar\n this.addEndModifier(new Barline(this.options.right_bar ? BarlineType.SINGLE : BarlineType.NONE));\n }\n static get CATEGORY() {\n return Category.Stave;\n }\n // This is the sum of the padding that normally goes on left + right of a stave during\n // drawing. Used to size staves correctly with content width.\n static get defaultPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('stave.padding') + musicFont.lookupMetric('stave.endPaddingMax');\n }\n // Right padding, used by system if startX is already determined.\n static get rightPadding() {\n const musicFont = Tables.currentMusicFont();\n return musicFont.lookupMetric('stave.endPaddingMax');\n }\n /** Set default style for ledger lines. */\n setDefaultLedgerLineStyle(style) {\n this.defaultLedgerLineStyle = style;\n }\n /** Get default style for ledger lines. */\n getDefaultLedgerLineStyle() {\n return Object.assign(Object.assign({}, this.getStyle()), this.defaultLedgerLineStyle);\n }\n space(spacing) {\n return this.options.spacing_between_lines_px * spacing;\n }\n resetLines() {\n this.options.line_config = [];\n for (let i = 0; i < this.options.num_lines; i++) {\n this.options.line_config.push({ visible: true });\n }\n this.height = (this.options.num_lines + this.options.space_above_staff_ln) * this.options.spacing_between_lines_px;\n this.options.bottom_text_position = this.options.num_lines;\n }\n setNoteStartX(x) {\n if (!this.formatted)\n this.format();\n this.start_x = x;\n return this;\n }\n getNoteStartX() {\n if (!this.formatted)\n this.format();\n return this.start_x;\n }\n getNoteEndX() {\n if (!this.formatted)\n this.format();\n return this.end_x;\n }\n getTieStartX() {\n return this.start_x;\n }\n getTieEndX() {\n return this.end_x;\n }\n getX() {\n return this.x;\n }\n getNumLines() {\n return this.options.num_lines;\n }\n setNumLines(n) {\n this.options.num_lines = n;\n this.resetLines();\n return this;\n }\n setY(y) {\n this.y = y;\n return this;\n }\n getY() {\n return this.y;\n }\n getTopLineTopY() {\n return this.getYForLine(0) - Tables.STAVE_LINE_THICKNESS / 2;\n }\n getBottomLineBottomY() {\n return this.getYForLine(this.getNumLines() - 1) + Tables.STAVE_LINE_THICKNESS / 2;\n }\n setX(x) {\n const shift = x - this.x;\n this.formatted = false;\n this.x = x;\n this.start_x += shift;\n this.end_x += shift;\n for (let i = 0; i < this.modifiers.length; i++) {\n const mod = this.modifiers[i];\n mod.setX(mod.getX() + shift);\n }\n return this;\n }\n setWidth(width) {\n this.formatted = false;\n this.width = width;\n this.end_x = this.x + width;\n // reset the x position of the end barline (TODO(0xfe): This makes no sense)\n // this.modifiers[1].setX(this.end_x);\n return this;\n }\n getWidth() {\n return this.width;\n }\n getStyle() {\n return Object.assign({ fillStyle: this.options.fill_style, strokeStyle: this.options.fill_style, lineWidth: Tables.STAVE_LINE_THICKNESS }, super.getStyle());\n }\n /**\n * Set the measure number of this Stave.\n */\n setMeasure(measure) {\n this.measure = measure;\n return this;\n }\n /**\n * Return the measure number of this Stave.\n */\n getMeasure() {\n return this.measure;\n }\n /**\n * Gets the pixels to shift from the beginning of the stave\n * following the modifier at the provided index\n * @param {Number} index The index from which to determine the shift\n * @return {Number} The amount of pixels shifted\n */\n getModifierXShift(index = 0) {\n if (typeof index !== 'number') {\n throw new RuntimeError('InvalidIndex', 'Must be of number type');\n }\n if (!this.formatted)\n this.format();\n if (this.getModifiers(StaveModifierPosition.BEGIN).length === 1) {\n return 0;\n }\n // for right position modifiers zero shift seems correct, see 'Volta + Modifier Measure Test'\n if (this.modifiers[index].getPosition() === StaveModifierPosition.RIGHT) {\n return 0;\n }\n let start_x = this.start_x - this.x;\n const begBarline = this.modifiers[0];\n if (begBarline.getType() === BarlineType.REPEAT_BEGIN && start_x > begBarline.getWidth()) {\n start_x -= begBarline.getWidth();\n }\n return start_x;\n }\n /** Coda & Segno Symbol functions */\n setRepetitionType(type, yShift = 0) {\n this.modifiers.push(new Repetition(type, this.x, yShift));\n return this;\n }\n // Volta functions\n setVoltaType(type, number_t, y) {\n this.modifiers.push(new Volta(type, number_t, this.x, y));\n return this;\n }\n // Section functions\n setSection(section, y, xOffset = 0, fontSize, drawRect = true) {\n const staveSection = new StaveSection(section, this.x + xOffset, y, drawRect);\n if (fontSize)\n staveSection.setFontSize(fontSize);\n this.modifiers.push(staveSection);\n return this;\n }\n // Tempo functions\n setTempo(tempo, y) {\n this.modifiers.push(new StaveTempo(tempo, this.x, y));\n return this;\n }\n // Text functions\n setText(text, position, options = {}) {\n this.modifiers.push(new StaveText(text, position, options));\n return this;\n }\n getHeight() {\n return this.height;\n }\n getSpacingBetweenLines() {\n return this.options.spacing_between_lines_px;\n }\n getBoundingBox() {\n return new BoundingBox(this.x, this.y, this.width, this.getBottomY() - this.y);\n }\n getBottomY() {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const score_bottom = this.getYForLine(options.num_lines) + options.space_below_staff_ln * spacing;\n return score_bottom;\n }\n getBottomLineY() {\n return this.getYForLine(this.options.num_lines);\n }\n // This returns\n /** @returns the y for the *center* of a staff line */\n getYForLine(line) {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n const y = this.y + line * spacing + headroom * spacing;\n return y;\n }\n getLineForY(y) {\n // Does the reverse of getYForLine - somewhat dumb and just calls\n // getYForLine until the right value is reaches\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n return (y - this.y) / spacing - headroom;\n }\n getYForTopText(line = 0) {\n return this.getYForLine(-line - this.options.top_text_position);\n }\n getYForBottomText(line = 0) {\n return this.getYForLine(this.options.bottom_text_position + line);\n }\n getYForNote(line) {\n const options = this.options;\n const spacing = options.spacing_between_lines_px;\n const headroom = options.space_above_staff_ln;\n return this.y + headroom * spacing + 5 * spacing - line * spacing;\n }\n getYForGlyphs() {\n return this.getYForLine(3);\n }\n // This method adds a stave modifier to the stave. Note that the first two\n // modifiers (BarLines) are automatically added upon construction.\n addModifier(modifier, position) {\n if (position !== undefined) {\n modifier.setPosition(position);\n }\n modifier.setStave(this);\n this.formatted = false;\n this.modifiers.push(modifier);\n return this;\n }\n addEndModifier(modifier) {\n this.addModifier(modifier, StaveModifierPosition.END);\n return this;\n }\n // Bar Line functions\n setBegBarType(type) {\n // Only valid bar types at beginning of stave is none, single or begin repeat\n const { SINGLE, REPEAT_BEGIN, NONE } = BarlineType;\n if (type === SINGLE || type === REPEAT_BEGIN || type === NONE) {\n this.modifiers[0].setType(type);\n this.formatted = false;\n }\n return this;\n }\n setEndBarType(type) {\n // Repeat end not valid at end of stave\n if (type !== BarlineType.REPEAT_BEGIN) {\n this.modifiers[1].setType(type);\n this.formatted = false;\n }\n return this;\n }\n setClef(clefSpec, size, annotation, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n if (position === StaveModifierPosition.END) {\n this.endClef = clefSpec;\n }\n else {\n this.clef = clefSpec;\n }\n const clefs = this.getModifiers(position, Clef.CATEGORY);\n if (clefs.length === 0) {\n this.addClef(clefSpec, size, annotation, position);\n }\n else {\n clefs[0].setType(clefSpec, size, annotation);\n }\n return this;\n }\n getClef() {\n return this.clef;\n }\n setEndClef(clefSpec, size, annotation) {\n this.setClef(clefSpec, size, annotation, StaveModifierPosition.END);\n return this;\n }\n getEndClef() {\n return this.endClef;\n }\n setKeySignature(keySpec, cancelKeySpec, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n const keySignatures = this.getModifiers(position, KeySignature.CATEGORY);\n if (keySignatures.length === 0) {\n this.addKeySignature(keySpec, cancelKeySpec, position);\n }\n else {\n keySignatures[0].setKeySig(keySpec, cancelKeySpec);\n }\n return this;\n }\n setEndKeySignature(keySpec, cancelKeySpec) {\n this.setKeySignature(keySpec, cancelKeySpec, StaveModifierPosition.END);\n return this;\n }\n setTimeSignature(timeSpec, customPadding, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n const timeSignatures = this.getModifiers(position, TimeSignature.CATEGORY);\n if (timeSignatures.length === 0) {\n this.addTimeSignature(timeSpec, customPadding, position);\n }\n else {\n timeSignatures[0].setTimeSig(timeSpec);\n }\n return this;\n }\n setEndTimeSignature(timeSpec, customPadding) {\n this.setTimeSignature(timeSpec, customPadding, StaveModifierPosition.END);\n return this;\n }\n /**\n * Add a key signature to the stave.\n *\n * Example:\n * `stave.addKeySignature('Db');`\n * @param keySpec new key specification `[A-G][b|#]?`\n * @param cancelKeySpec\n * @param position\n * @returns\n */\n addKeySignature(keySpec, cancelKeySpec, position) {\n if (position === undefined) {\n position = StaveModifierPosition.BEGIN;\n }\n this.addModifier(new KeySignature(keySpec, cancelKeySpec).setPosition(position), position);\n return this;\n }\n /**\n * Add a clef to the stave.\n *\n * Example:\n *\n * stave.addClef('treble')\n * @param clef clef (treble|bass|...) see {@link Clef.types}\n * @param size\n * @param annotation\n * @param position\n * @returns\n */\n addClef(clef, size, annotation, position) {\n if (position === undefined || position === StaveModifierPosition.BEGIN) {\n this.clef = clef;\n }\n else if (position === StaveModifierPosition.END) {\n this.endClef = clef;\n }\n this.addModifier(new Clef(clef, size, annotation), position);\n return this;\n }\n addEndClef(clef, size, annotation) {\n this.addClef(clef, size, annotation, StaveModifierPosition.END);\n return this;\n }\n /**\n * Add a time signature to the stave\n *\n * Example:\n *\n * `stave.addTimeSignature('4/4');`\n * @param timeSpec time signature specification `(C\\||C|\\d\\/\\d)`\n * @param customPadding\n * @param position\n * @returns\n */\n addTimeSignature(timeSpec, customPadding, position) {\n this.addModifier(new TimeSignature(timeSpec, customPadding), position);\n return this;\n }\n addEndTimeSignature(timeSpec, customPadding) {\n this.addTimeSignature(timeSpec, customPadding, StaveModifierPosition.END);\n return this;\n }\n // Deprecated\n addTrebleGlyph() {\n this.addClef('treble');\n return this;\n }\n /**\n * @param position\n * @param category\n * @returns array of StaveModifiers that match the provided position and category.\n */\n getModifiers(position, category) {\n const noPosition = position === undefined;\n const noCategory = category === undefined;\n if (noPosition && noCategory) {\n return this.modifiers;\n }\n else if (noPosition) {\n // A category was provided.\n return this.modifiers.filter((m) => category === m.getCategory());\n }\n else if (noCategory) {\n // A position was provided.\n return this.modifiers.filter((m) => position === m.getPosition());\n }\n else {\n // Both position and category were provided!\n return this.modifiers.filter((m) => position === m.getPosition() && category === m.getCategory());\n }\n }\n /**\n * Use the modifier's `getCategory()` as a key for the `order` array.\n * The retrieved value is used to sort modifiers from left to right (0 to to 3).\n */\n sortByCategory(items, order) {\n for (let i = items.length - 1; i >= 0; i--) {\n for (let j = 0; j < i; j++) {\n if (order[items[j].getCategory()] > order[items[j + 1].getCategory()]) {\n const temp = items[j];\n items[j] = items[j + 1];\n items[j + 1] = temp;\n }\n }\n }\n }\n format() {\n const begBarline = this.modifiers[0];\n const endBarline = this.modifiers[1];\n const begModifiers = this.getModifiers(StaveModifierPosition.BEGIN);\n const endModifiers = this.getModifiers(StaveModifierPosition.END);\n this.sortByCategory(begModifiers, SORT_ORDER_BEG_MODIFIERS);\n this.sortByCategory(endModifiers, SORT_ORDER_END_MODIFIERS);\n if (begModifiers.length > 1 && begBarline.getType() === BarlineType.REPEAT_BEGIN) {\n begModifiers.push(begModifiers.splice(0, 1)[0]);\n begModifiers.splice(0, 0, new Barline(BarlineType.SINGLE));\n }\n if (endModifiers.indexOf(endBarline) > 0) {\n endModifiers.splice(0, 0, new Barline(BarlineType.NONE));\n }\n let width;\n let padding;\n let modifier;\n let offset = 0;\n let x = this.x;\n for (let i = 0; i < begModifiers.length; i++) {\n modifier = begModifiers[i];\n padding = modifier.getPadding(i + offset);\n width = modifier.getWidth();\n x += padding;\n modifier.setX(x);\n x += width;\n if (padding + width === 0)\n offset--;\n }\n this.start_x = x;\n x = this.x + this.width;\n const widths = {\n left: 0,\n right: 0,\n paddingRight: 0,\n paddingLeft: 0,\n };\n let lastBarlineIdx = 0;\n for (let i = 0; i < endModifiers.length; i++) {\n modifier = endModifiers[i];\n lastBarlineIdx = isBarline(modifier) ? i : lastBarlineIdx;\n widths.right = 0;\n widths.left = 0;\n widths.paddingRight = 0;\n widths.paddingLeft = 0;\n const layoutMetrics = modifier.getLayoutMetrics();\n if (layoutMetrics) {\n if (i !== 0) {\n widths.right = layoutMetrics.xMax || 0;\n widths.paddingRight = layoutMetrics.paddingRight || 0;\n }\n widths.left = -layoutMetrics.xMin || 0;\n widths.paddingLeft = layoutMetrics.paddingLeft || 0;\n if (i === endModifiers.length - 1) {\n widths.paddingLeft = 0;\n }\n }\n else {\n widths.paddingRight = modifier.getPadding(i - lastBarlineIdx);\n if (i !== 0) {\n widths.right = modifier.getWidth();\n }\n if (i === 0) {\n widths.left = modifier.getWidth();\n }\n }\n x -= widths.paddingRight;\n x -= widths.right;\n modifier.setX(x);\n x -= widths.left;\n x -= widths.paddingLeft;\n }\n this.end_x = endModifiers.length === 1 ? this.x + this.width : x;\n this.formatted = true;\n }\n /**\n * All drawing functions below need the context to be set.\n */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n ctx.openGroup('stave', this.getAttribute('id'));\n if (!this.formatted)\n this.format();\n const num_lines = this.options.num_lines;\n const width = this.width;\n const x = this.x;\n let y;\n // Render lines\n for (let line = 0; line < num_lines; line++) {\n y = this.getYForLine(line);\n this.applyStyle();\n if (this.options.line_config[line].visible) {\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.lineTo(x + width, y);\n ctx.stroke();\n }\n this.restoreStyle();\n }\n // Draw the modifiers (bar lines, coda, segno, repeat brackets, etc.)\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n // Only draw modifier if it has a draw function\n if (typeof modifier.draw === 'function') {\n modifier.applyStyle(ctx);\n modifier.draw(this, this.getModifierXShift(i));\n modifier.restoreStyle(ctx);\n }\n }\n // Render measure numbers\n if (this.measure > 0) {\n ctx.save();\n ctx.setFont(this.textFont);\n const textWidth = ctx.measureText('' + this.measure).width;\n y = this.getYForTopText(0) + 3;\n ctx.fillText('' + this.measure, this.x - textWidth / 2, y);\n ctx.restore();\n }\n ctx.closeGroup();\n return this;\n }\n getVerticalBarWidth() {\n return this.options.vertical_bar_width;\n }\n /**\n * Get the current configuration for the Stave.\n * @return {Array} An array of configuration objects.\n */\n getConfigForLines() {\n return this.options.line_config;\n }\n /**\n * Configure properties of the lines in the Stave\n * @param line_number The index of the line to configure.\n * @param line_config An configuration object for the specified line.\n * @throws RuntimeError \"StaveConfigError\" When the specified line number is out of\n * range of the number of lines specified in the constructor.\n */\n setConfigForLine(line_number, line_config) {\n if (line_number >= this.options.num_lines || line_number < 0) {\n throw new RuntimeError('StaveConfigError', 'The line number must be within the range of the number of lines in the Stave.');\n }\n if (line_config.visible === undefined) {\n throw new RuntimeError('StaveConfigError', \"The line configuration object is missing the 'visible' property.\");\n }\n if (typeof line_config.visible !== 'boolean') {\n throw new RuntimeError('StaveConfigError', \"The line configuration objects 'visible' property must be true or false.\");\n }\n this.options.line_config[line_number] = line_config;\n return this;\n }\n /**\n * Set the staff line configuration array for all of the lines at once.\n * @param lines_configuration An array of line configuration objects. These objects\n * are of the same format as the single one passed in to setLineConfiguration().\n * The caller can set null for any line config entry if it is desired that the default be used\n * @throws RuntimeError \"StaveConfigError\" When the lines_configuration array does not have\n * exactly the same number of elements as the num_lines configuration object set in\n * the constructor.\n */\n setConfigForLines(lines_configuration) {\n if (lines_configuration.length !== this.options.num_lines) {\n throw new RuntimeError('StaveConfigError', 'The length of the lines configuration array must match the number of lines in the Stave');\n }\n // Make sure the defaults are present in case an incomplete set of\n // configuration options were supplied.\n // eslint-disable-next-line\n for (const line_config in lines_configuration) {\n // Allow '{}' to be used if the caller just wants the default for a particular node.\n if (lines_configuration[line_config].visible == undefined) {\n lines_configuration[line_config] = this.options.line_config[line_config];\n }\n this.options.line_config[line_config] = Object.assign(Object.assign({}, this.options.line_config[line_config]), lines_configuration[line_config]);\n }\n this.options.line_config = lines_configuration;\n return this;\n }\n static formatBegModifiers(staves) {\n let maxX = 0;\n // align note start\n staves.forEach((stave) => {\n if (stave.getNoteStartX() > maxX)\n maxX = stave.getNoteStartX();\n });\n staves.forEach((stave) => {\n stave.setNoteStartX(maxX);\n });\n maxX = 0;\n // align REPEAT_BEGIN\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.Barline);\n modifiers.forEach((modifier) => {\n if (modifier.getType() == BarlineType.REPEAT_BEGIN)\n if (modifier.getX() > maxX)\n maxX = modifier.getX();\n });\n });\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.Barline);\n modifiers.forEach((modifier) => {\n if (modifier.getType() == BarlineType.REPEAT_BEGIN)\n modifier.setX(maxX);\n });\n });\n maxX = 0;\n // Align time signatures\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.TimeSignature);\n modifiers.forEach((modifier) => {\n if (modifier.getX() > maxX)\n maxX = modifier.getX();\n });\n });\n staves.forEach((stave) => {\n const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, Category.TimeSignature);\n modifiers.forEach((modifier) => {\n modifier.setX(maxX);\n });\n });\n }\n}\nStave.TEXT_FONT = {\n family: Font.SANS_SERIF,\n size: 8,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nfunction drawBoldDoubleLine(ctx, type, topX, topY, botY) {\n if (type !== StaveConnector.type.BOLD_DOUBLE_LEFT && type !== StaveConnector.type.BOLD_DOUBLE_RIGHT) {\n throw new RuntimeError('InvalidConnector', 'A REPEAT_BEGIN or REPEAT_END type must be provided.');\n }\n let x_shift = 3;\n let variableWidth = 3.5; // Width for avoiding anti-aliasing width issues\n const thickLineOffset = 2; // For aesthetics\n if (type === StaveConnector.type.BOLD_DOUBLE_RIGHT) {\n x_shift = -5; // Flips the side of the thin line\n variableWidth = 3;\n }\n // Thin line\n ctx.fillRect(topX + x_shift, topY, 1, botY - topY);\n // Thick line\n ctx.fillRect(topX - thickLineOffset, topY, variableWidth, botY - topY);\n}\n/** StaveConnector implements the connector lines between staves of a system. */\nexport class StaveConnector extends Element {\n constructor(top_stave, bottom_stave) {\n super();\n this.thickness = Tables.STAVE_LINE_THICKNESS;\n this.width = 3;\n this.top_stave = top_stave;\n this.bottom_stave = bottom_stave;\n this.type = StaveConnector.type.DOUBLE;\n this.resetFont();\n // 1. Offset Bold Double Left to align with offset Repeat Begin bars\n // 2. Offset BRACE type not to overlap with another StaveConnector\n this.x_shift = 0;\n this.texts = [];\n }\n static get CATEGORY() {\n return Category.StaveConnector;\n }\n /**\n * Set type.\n * @param type see {@link StaveConnector.type} & {@link StaveConnector.typeString}\n */\n setType(type) {\n const newType = typeof type === 'string' ? StaveConnector.typeString[type] : type;\n // Be certain that the type is a valid type:\n if (Object.values(StaveConnector.type).includes(newType)) {\n this.type = newType;\n }\n return this;\n }\n /**\n * Get type.\n * @returns number {@link StaveConnector.type}\n */\n getType() {\n return this.type;\n }\n /** Set optional associated Text. */\n setText(text, options = {}) {\n this.texts.push({\n content: text,\n options: Object.assign({ shift_x: 0, shift_y: 0 }, options),\n });\n return this;\n }\n setXShift(x_shift) {\n if (typeof x_shift !== 'number') {\n throw new RuntimeError('InvalidType', 'x_shift must be a Number');\n }\n this.x_shift = x_shift;\n return this;\n }\n getXShift() {\n return this.x_shift;\n }\n /** Render connector and associated text. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let topY = this.top_stave.getYForLine(0);\n let botY = this.bottom_stave.getYForLine(this.bottom_stave.getNumLines() - 1) + this.thickness;\n let width = this.width;\n let topX = this.top_stave.getX();\n const isRightSidedConnector = this.type === StaveConnector.type.SINGLE_RIGHT ||\n this.type === StaveConnector.type.BOLD_DOUBLE_RIGHT ||\n this.type === StaveConnector.type.THIN_DOUBLE;\n if (isRightSidedConnector) {\n topX = this.top_stave.getX() + this.top_stave.getWidth();\n }\n let attachment_height = botY - topY;\n switch (this.type) {\n case StaveConnector.type.SINGLE:\n width = 1;\n break;\n case StaveConnector.type.SINGLE_LEFT:\n width = 1;\n break;\n case StaveConnector.type.SINGLE_RIGHT:\n width = 1;\n break;\n case StaveConnector.type.DOUBLE:\n topX -= this.width + 2;\n topY -= this.thickness;\n attachment_height += 0.5;\n break;\n case StaveConnector.type.BRACE: {\n width = 12;\n // May need additional code to draw brace\n const x1 = this.top_stave.getX() - 2 + this.x_shift;\n const y1 = topY;\n const x3 = x1;\n const y3 = botY;\n const x2 = x1 - width;\n const y2 = y1 + attachment_height / 2.0;\n const cpx1 = x2 - 0.9 * width;\n const cpy1 = y1 + 0.2 * attachment_height;\n const cpx2 = x1 + 1.1 * width;\n const cpy2 = y2 - 0.135 * attachment_height;\n const cpx3 = cpx2;\n const cpy3 = y2 + 0.135 * attachment_height;\n const cpx4 = cpx1;\n const cpy4 = y3 - 0.2 * attachment_height;\n const cpx5 = x2 - width;\n const cpy5 = cpy4;\n const cpx6 = x1 + 0.4 * width;\n const cpy6 = y2 + 0.135 * attachment_height;\n const cpx7 = cpx6;\n const cpy7 = y2 - 0.135 * attachment_height;\n const cpx8 = cpx5;\n const cpy8 = cpy1;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);\n ctx.bezierCurveTo(cpx3, cpy3, cpx4, cpy4, x3, y3);\n ctx.bezierCurveTo(cpx5, cpy5, cpx6, cpy6, x2, y2);\n ctx.bezierCurveTo(cpx7, cpy7, cpx8, cpy8, x1, y1);\n ctx.fill();\n ctx.stroke();\n break;\n }\n case StaveConnector.type.BRACKET:\n topY -= 6;\n botY += 6;\n attachment_height = botY - topY;\n Glyph.renderGlyph(ctx, topX - 5, topY, 40, 'bracketTop');\n Glyph.renderGlyph(ctx, topX - 5, botY, 40, 'bracketBottom');\n topX -= this.width + 2;\n break;\n case StaveConnector.type.BOLD_DOUBLE_LEFT:\n drawBoldDoubleLine(ctx, this.type, topX + this.x_shift, topY, botY - this.thickness);\n break;\n case StaveConnector.type.BOLD_DOUBLE_RIGHT:\n drawBoldDoubleLine(ctx, this.type, topX, topY, botY - this.thickness);\n break;\n case StaveConnector.type.THIN_DOUBLE:\n width = 1;\n attachment_height -= this.thickness;\n break;\n case StaveConnector.type.NONE:\n break;\n default:\n throw new RuntimeError('InvalidType', `The provided StaveConnector.type (${this.type}) is invalid.`);\n }\n if (this.type !== StaveConnector.type.BRACE &&\n this.type !== StaveConnector.type.BOLD_DOUBLE_LEFT &&\n this.type !== StaveConnector.type.BOLD_DOUBLE_RIGHT &&\n this.type !== StaveConnector.type.NONE) {\n ctx.fillRect(topX, topY, width, attachment_height);\n }\n // If the connector is a thin double barline, draw the paralell line\n if (this.type === StaveConnector.type.THIN_DOUBLE) {\n ctx.fillRect(topX - 3, topY, width, attachment_height);\n }\n ctx.save();\n ctx.setLineWidth(2);\n ctx.setFont(this.textFont);\n // Add stave connector text\n for (let i = 0; i < this.texts.length; i++) {\n const text = this.texts[i];\n const text_width = ctx.measureText('' + text.content).width;\n const x = this.top_stave.getX() - text_width - 24 + text.options.shift_x;\n const y = (this.top_stave.getYForLine(0) + this.bottom_stave.getBottomLineY()) / 2 + text.options.shift_y;\n ctx.fillText('' + text.content, x, y + 4);\n }\n ctx.restore();\n }\n}\nStaveConnector.TEXT_FONT = {\n family: Font.SERIF,\n size: 16,\n weight: FontWeight.NORMAL,\n style: FontStyle.NORMAL,\n};\n/**\n * SINGLE_LEFT and SINGLE are the same value for compatibility\n * with older versions of vexflow which didn't have right sided\n * stave connectors.\n */\nStaveConnector.type = {\n SINGLE_RIGHT: 0,\n SINGLE_LEFT: 1,\n SINGLE: 1,\n DOUBLE: 2,\n BRACE: 3,\n BRACKET: 4,\n BOLD_DOUBLE_LEFT: 5,\n BOLD_DOUBLE_RIGHT: 6,\n THIN_DOUBLE: 7,\n NONE: 8,\n};\n/**\n * Connector type:\n * * \"singleRight\"\n * * \"singleLeft\"\n * * \"single\"\n * * \"double\"\n * * \"brace\"\n * * \"bracket\"\n * * \"boldDoubleLeft\"\n * * \"boldDoubleRight\"\n * * \"thinDouble\"\n * * \"none\"\n */\nStaveConnector.typeString = {\n singleRight: StaveConnector.type.SINGLE_RIGHT,\n singleLeft: StaveConnector.type.SINGLE_LEFT,\n single: StaveConnector.type.SINGLE,\n double: StaveConnector.type.DOUBLE,\n brace: StaveConnector.type.BRACE,\n bracket: StaveConnector.type.BRACKET,\n boldDoubleLeft: StaveConnector.type.BOLD_DOUBLE_LEFT,\n boldDoubleRight: StaveConnector.type.BOLD_DOUBLE_RIGHT,\n thinDouble: StaveConnector.type.THIN_DOUBLE,\n none: StaveConnector.type.NONE,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Beam } from './beam';\nimport { Font } from './font';\nimport { Fraction } from './fraction';\nimport { ModifierContext } from './modifiercontext';\nimport { Stave } from './stave';\nimport { StaveConnector } from './staveconnector';\nimport { Tables } from './tables';\nimport { TickContext } from './tickcontext';\nimport { isNote, isStaveNote } from './typeguard';\nimport { defined, log, midLine, RuntimeError } from './util';\nimport { Voice } from './voice';\n// Helper function\nconst sumArray = (arr) => arr.reduce((a, b) => a + b, 0);\n/**\n * Create `Alignment`s for each tick in `voices`. Also calculate the\n * total number of ticks in voices.\n */\nfunction createContexts(voices, makeContext, addToContext) {\n if (voices.length == 0)\n return {\n map: {},\n array: [],\n list: [],\n resolutionMultiplier: 0,\n };\n // Initialize tick maps.\n const tickToContextMap = {};\n const tickList = [];\n const contexts = [];\n const resolutionMultiplier = Formatter.getResolutionMultiplier(voices);\n // For each voice, extract notes and create a context for every\n // new tick that hasn't been seen before.\n voices.forEach((voice, voiceIndex) => {\n // Use resolution multiplier as denominator so that no additional expansion\n // of fractional tick values is needed.\n const ticksUsed = new Fraction(0, resolutionMultiplier);\n voice.getTickables().forEach((tickable) => {\n const integerTicks = ticksUsed.numerator;\n // If we have no tick context for this tick, create one.\n if (!tickToContextMap[integerTicks]) {\n const newContext = makeContext({ tickID: integerTicks });\n contexts.push(newContext);\n tickToContextMap[integerTicks] = newContext;\n // Maintain a list of unique integerTicks.\n tickList.push(integerTicks);\n }\n // Add this tickable to the TickContext.\n addToContext(tickable, tickToContextMap[integerTicks], voiceIndex);\n ticksUsed.add(tickable.getTicks());\n });\n });\n return {\n map: tickToContextMap,\n array: contexts,\n list: tickList.sort((a, b) => a - b),\n resolutionMultiplier,\n };\n}\n// eslint-disable-next-line\nfunction L(...args) {\n if (Formatter.DEBUG)\n log('Vex.Flow.Formatter', args);\n}\n/**\n * Get the rest line number of the next non-rest note(s).\n * @param notes array of Notes\n * @param currRestLine\n * @param currNoteIndex current note index\n * @param compare if true, return the midpoint between the current rest line and the next rest line\n * @returns a line number, which determines the vertical position of a rest.\n */\nfunction getRestLineForNextNoteGroup(notes, currRestLine, currNoteIndex, compare) {\n // If no valid next note group, nextRestLine is same as current.\n let nextRestLine = currRestLine;\n // Start with the next note and keep going until we find a valid non-rest note group.\n for (let noteIndex = currNoteIndex + 1; noteIndex < notes.length; noteIndex++) {\n const note = notes[noteIndex];\n if (isNote(note) && !note.isRest() && !note.shouldIgnoreTicks()) {\n nextRestLine = note.getLineForRest();\n break;\n }\n }\n // Locate the mid point between two lines.\n if (compare && currRestLine !== nextRestLine) {\n const top = Math.max(currRestLine, nextRestLine);\n const bot = Math.min(currRestLine, nextRestLine);\n nextRestLine = midLine(top, bot);\n }\n return nextRestLine;\n}\n/**\n * Format implements the formatting and layout algorithms that are used\n * to position notes in a voice. The algorithm can align multiple voices both\n * within a stave, and across multiple staves.\n *\n * To do this, the formatter breaks up voices into a grid of rational-valued\n * `ticks`, to which each note is assigned. Then, minimum widths are assigned\n * to each tick based on the widths of the notes and modifiers in that tick. This\n * establishes the smallest amount of space required for each tick.\n *\n * Finally, the formatter distributes the left over space proportionally to\n * all the ticks, setting the `x` values of the notes in each tick.\n *\n * See `tests/formatter_tests.ts` for usage examples. The helper functions included\n * here (`FormatAndDraw`, `FormatAndDrawTab`) also serve as useful usage examples.\n */\nexport class Formatter {\n constructor(options) {\n this.formatterOptions = Object.assign({ globalSoftmax: false, softmaxFactor: Tables.SOFTMAX_FACTOR, maxIterations: 5 }, options);\n this.justifyWidth = 0;\n this.totalCost = 0;\n this.totalShift = 0;\n this.durationStats = {};\n // Minimum width required to render all the notes in the voices.\n this.minTotalWidth = 0;\n // This is set to `true` after `minTotalWidth` is calculated.\n this.hasMinTotalWidth = false;\n // Arrays of tick and modifier contexts.\n this.tickContexts = {\n map: {},\n array: [],\n list: [],\n resolutionMultiplier: 0,\n };\n this.modifierContexts = [];\n // Gaps between contexts, for free movement of notes post\n // formatting.\n this.contextGaps = {\n total: 0,\n gaps: [],\n };\n this.voices = [];\n this.lossHistory = [];\n }\n /**\n * Helper function to layout \"notes\" one after the other without\n * regard for proportions. Useful for tests and debugging.\n */\n static SimpleFormat(notes, x = 0, { paddingBetween = 10 } = {}) {\n notes.reduce((accumulator, note) => {\n note.addToModifierContext(new ModifierContext());\n const tick = new TickContext().addTickable(note).preFormat();\n const metrics = tick.getMetrics();\n tick.setX(accumulator + metrics.totalLeftPx);\n return accumulator + tick.getWidth() + metrics.totalRightPx + paddingBetween;\n }, x);\n }\n /** Helper function to plot formatter debug info. */\n static plotDebugging(ctx, formatter, xPos, y1, y2, options) {\n options = Object.assign({ stavePadding: Tables.currentMusicFont().lookupMetric('stave.padding') }, options);\n const x = xPos + options.stavePadding;\n const contextGaps = formatter.contextGaps;\n function stroke(x1, x2, color) {\n ctx.beginPath();\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n ctx.setLineWidth(1);\n ctx.fillRect(x1, y1, Math.max(x2 - x1, 0), y2 - y1);\n }\n ctx.save();\n ctx.setFont(Font.SANS_SERIF, 8);\n contextGaps.gaps.forEach((gap) => {\n stroke(x + gap.x1, x + gap.x2, 'rgba(100,200,100,0.4)');\n ctx.setFillStyle('green');\n ctx.fillText(Math.round(gap.x2 - gap.x1).toString(), x + gap.x1, y2 + 12);\n });\n ctx.setFillStyle('red');\n ctx.fillText(`Loss: ${(formatter.totalCost || 0).toFixed(2)} Shift: ${(formatter.totalShift || 0).toFixed(2)} Gap: ${contextGaps.total.toFixed(2)}`, x - 20, y2 + 27);\n ctx.restore();\n }\n /**\n * Helper function to format and draw a single voice. Returns a bounding\n * box for the notation.\n * @param ctx the rendering context\n * @param stave the stave to which to draw (`Stave` or `TabStave`)\n * @param notes array of `Note` instances (`Note`, `TextNote`, `TabNote`, etc.)\n * @param params one of below:\n * * Setting `autobeam` only `(context, stave, notes, true)` or\n * `(ctx, stave, notes, {autobeam: true})`\n * * Setting `align_rests` a struct is needed `(context, stave, notes, {align_rests: true})`\n * * Setting both a struct is needed `(context, stave, notes, {\n * autobeam: true, align_rests: true})`\n * * `autobeam` automatically generates beams for the notes.\n * * `align_rests` aligns rests with nearby notes.\n */\n static FormatAndDraw(ctx, stave, notes, params) {\n let options = {\n auto_beam: false,\n align_rests: false,\n };\n if (typeof params === 'object') {\n options = Object.assign(Object.assign({}, options), params);\n }\n else if (typeof params === 'boolean') {\n options.auto_beam = params;\n }\n // Start by creating a voice and adding all the notes to it.\n const voice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(notes);\n // Then create beams, if requested.\n const beams = options.auto_beam ? Beam.applyAndGetBeams(voice) : [];\n // Instantiate a `Formatter` and format the notes.\n new Formatter()\n .joinVoices([voice]) // , { align_rests: options.align_rests })\n .formatToStave([voice], stave, { align_rests: options.align_rests, stave });\n // Render the voice and beams to the stave.\n voice.setStave(stave).draw(ctx, stave);\n beams.forEach((beam) => beam.setContext(ctx).draw());\n // Return the bounding box of the voice.\n return voice.getBoundingBox();\n }\n /**\n * Helper function to format and draw aligned tab and stave notes in two\n * separate staves.\n * @param ctx the rendering context\n * @param tabstave a `TabStave` instance on which to render `TabNote`s.\n * @param stave a `Stave` instance on which to render `Note`s.\n * @param notes array of `Note` instances for the stave (`Note`, `BarNote`, etc.)\n * @param tabnotes array of `Note` instances for the tab stave (`TabNote`, `BarNote`, etc.)\n * @param autobeam automatically generate beams.\n * @param params a configuration object:\n * * `autobeam` automatically generates beams for the notes.\n * * `align_rests` aligns rests with nearby notes.\n */\n static FormatAndDrawTab(ctx, tabstave, stave, tabnotes, notes, autobeam, params) {\n let opts = {\n auto_beam: autobeam,\n align_rests: false,\n };\n if (typeof params === 'object') {\n opts = Object.assign(Object.assign({}, opts), params);\n }\n else if (typeof params === 'boolean') {\n opts.auto_beam = params;\n }\n // Create a `4/4` voice for `notes`.\n const notevoice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(notes);\n // Create a `4/4` voice for `tabnotes`.\n const tabvoice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(tabnotes);\n // Then create beams, if requested.\n const beams = opts.auto_beam ? Beam.applyAndGetBeams(notevoice) : [];\n // Instantiate a `Formatter` and align tab and stave notes.\n new Formatter()\n .joinVoices([notevoice]) // , { align_rests: opts.align_rests })\n .joinVoices([tabvoice])\n .formatToStave([notevoice, tabvoice], stave, { align_rests: opts.align_rests });\n // Render voices and beams to staves.\n notevoice.draw(ctx, stave);\n tabvoice.draw(ctx, tabstave);\n beams.forEach((beam) => beam.setContext(ctx).draw());\n // Draw a connector between tab and note staves.\n new StaveConnector(stave, tabstave).setContext(ctx).draw();\n }\n /**\n * Automatically set the vertical position of rests based on previous/next note positions.\n * @param tickables an array of Tickables.\n * @param alignAllNotes If `false`, only align rests that are within a group of beamed notes.\n * @param alignTuplets If `false`, ignores tuplets.\n */\n static AlignRestsToNotes(tickables, alignAllNotes, alignTuplets) {\n tickables.forEach((currTickable, index) => {\n if (isStaveNote(currTickable) && currTickable.isRest()) {\n if (currTickable.getTuplet() && !alignTuplets) {\n return;\n }\n // If activated rests not on default can be rendered as specified.\n const position = currTickable.getGlyph().position.toUpperCase();\n if (position !== 'R/4' && position !== 'B/4') {\n return;\n }\n if (alignAllNotes || currTickable.getBeam()) {\n // Align rests with previous/next notes.\n const props = currTickable.getKeyProps()[0];\n if (index === 0) {\n props.line = getRestLineForNextNoteGroup(tickables, props.line, index, false);\n }\n else if (index > 0 && index < tickables.length) {\n // If previous tickable is a rest, use its line number.\n const prevTickable = tickables[index - 1];\n if (isStaveNote(prevTickable)) {\n if (prevTickable.isRest()) {\n props.line = prevTickable.getKeyProps()[0].line;\n }\n else {\n const restLine = prevTickable.getLineForRest();\n // Get the rest line for next valid non-rest note group.\n props.line = getRestLineForNextNoteGroup(tickables, restLine, index, true);\n }\n }\n }\n currTickable.setKeyLine(0, props.line);\n }\n }\n });\n }\n /**\n * Find all the rests in each of the `voices` and align them to neighboring notes.\n *\n * @param voices\n * @param alignAllNotes If `false`, only align rests within beamed groups of notes. If `true`, align all rests.\n */\n alignRests(voices, alignAllNotes) {\n if (!voices || !voices.length) {\n throw new RuntimeError('BadArgument', 'No voices to format rests');\n }\n voices.forEach((voice) => Formatter.AlignRestsToNotes(voice.getTickables(), alignAllNotes));\n }\n /**\n * Estimate the width required to render 'voices'. This is done by:\n * 1. Sum the widths of all the tick contexts\n * 2. Estimate the padding.\n * The latter is done by calculating the padding 3 different ways, and taking the\n * greatest value:\n * 1. the padding required for unaligned notes in different voices\n * 2. the padding based on the stddev of the tickable widths\n * 3. the padding based on the stddev of the tickable durations.\n *\n * The last 2 quantities estimate a 'width entropy', where notes might need more\n * room than the proportional formatting gives them. A measure of all same duration\n * and width will need no extra padding, and all these quantities will be\n * zero in that case.\n *\n * Note: joinVoices has to be called before calling preCalculateMinTotalWidth.\n *\n * @param voices the voices that contain the notes\n * @returns the estimated width in pixels\n */\n preCalculateMinTotalWidth(voices) {\n const unalignedPadding = Tables.currentMusicFont().lookupMetric('stave.unalignedNotePadding');\n // Calculate additional padding based on 3 methods:\n // 1) unaligned beats in voices, 2) variance of width, 3) variance of durations\n let unalignedCtxCount = 0;\n let wsum = 0;\n let dsum = 0;\n const widths = [];\n const durations = [];\n // Cache results.\n if (this.hasMinTotalWidth)\n return this.minTotalWidth;\n // Create tick contexts.\n if (!voices) {\n throw new RuntimeError('BadArgument', \"'voices' required to run preCalculateMinTotalWidth\");\n }\n this.createTickContexts(voices);\n // eslint-disable-next-line\n const { list: contextList, map: contextMap } = this.tickContexts;\n this.minTotalWidth = 0;\n // Go through each tick context and calculate total width,\n // and also accumulate values used in padding hints\n contextList.forEach((tick) => {\n const context = contextMap[tick];\n context.preFormat();\n // If this TC doesn't have all the voices on it, it's unaligned.\n // so increment the unaligned padding accumulator\n if (context.getTickables().length < voices.length) {\n unalignedCtxCount += 1;\n }\n // Calculate the 'width entropy' over all the Tickables.\n context.getTickables().forEach((t) => {\n wsum += t.getMetrics().width;\n dsum += t.getTicks().value();\n widths.push(t.getMetrics().width);\n durations.push(t.getTicks().value());\n });\n const width = context.getWidth();\n this.minTotalWidth += width;\n });\n this.hasMinTotalWidth = true;\n // normalized (0-1) STDDEV of widths/durations gives us padding hints.\n const wavg = wsum > 0 ? wsum / widths.length : 1 / widths.length;\n const wvar = sumArray(widths.map((ll) => Math.pow(ll - wavg, 2)));\n const wpads = Math.pow(wvar / widths.length, 0.5) / wavg;\n const davg = dsum / durations.length;\n const dvar = sumArray(durations.map((ll) => Math.pow(ll - davg, 2)));\n const dpads = Math.pow(dvar / durations.length, 0.5) / davg;\n // Find max of 3 methods pad the width with that\n const padmax = Math.max(dpads, wpads) * contextList.length * unalignedPadding;\n const unalignedPad = unalignedPadding * unalignedCtxCount;\n return this.minTotalWidth + Math.max(unalignedPad, padmax);\n }\n /**\n * Get minimum width required to render all voices. Either `format` or\n * `preCalculateMinTotalWidth` must be called before this method.\n */\n getMinTotalWidth() {\n if (!this.hasMinTotalWidth) {\n throw new RuntimeError('NoMinTotalWidth', \"Call 'preCalculateMinTotalWidth' or 'preFormat' before calling 'getMinTotalWidth'\");\n }\n return this.minTotalWidth;\n }\n /** Calculate the resolution multiplier for `voices`. */\n static getResolutionMultiplier(voices) {\n if (!voices || !voices.length) {\n throw new RuntimeError('BadArgument', 'No voices to format');\n }\n const totalTicks = voices[0].getTotalTicks();\n const resolutionMultiplier = voices.reduce((accumulator, voice) => {\n if (!voice.getTotalTicks().equals(totalTicks)) {\n throw new RuntimeError('TickMismatch', 'Voices should have same total note duration in ticks.');\n }\n if (voice.getMode() === Voice.Mode.STRICT && !voice.isComplete()) {\n throw new RuntimeError('IncompleteVoice', 'Voice does not have enough notes.');\n }\n return Math.max(accumulator, Fraction.LCM(accumulator, voice.getResolutionMultiplier()));\n }, 1);\n return resolutionMultiplier;\n }\n /** Create a `ModifierContext` for each tick in `voices`. */\n createModifierContexts(voices) {\n if (voices.length == 0)\n return;\n const resolutionMultiplier = Formatter.getResolutionMultiplier(voices);\n // Initialize tick maps.\n const tickToContextMap = new Map();\n const contexts = [];\n // For each voice, extract notes and create a context for every\n // new tick that hasn't been seen before.\n voices.forEach((voice) => {\n // Use resolution multiplier as denominator so that no additional expansion\n // of fractional tick values is needed.\n const ticksUsed = new Fraction(0, resolutionMultiplier);\n voice.getTickables().forEach((tickable) => {\n const integerTicks = ticksUsed.numerator;\n let staveTickToContextMap = tickToContextMap.get(tickable.getStave());\n // If we have no tick context for this tick, create one.\n if (!staveTickToContextMap) {\n tickToContextMap.set(tickable.getStave(), {});\n staveTickToContextMap = tickToContextMap.get(tickable.getStave());\n }\n if (!(staveTickToContextMap ? staveTickToContextMap[integerTicks] : undefined)) {\n const newContext = new ModifierContext();\n contexts.push(newContext);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n staveTickToContextMap[integerTicks] = newContext;\n }\n // Add this tickable to the TickContext.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n tickable.addToModifierContext(staveTickToContextMap[integerTicks]);\n ticksUsed.add(tickable.getTicks());\n });\n });\n this.modifierContexts.push({\n map: tickToContextMap,\n array: contexts,\n resolutionMultiplier,\n });\n }\n /**\n * Create a `TickContext` for each tick in `voices`. Also calculate the\n * total number of ticks in voices.\n */\n createTickContexts(voices) {\n const fn = (tickable, context, voiceIndex) => context.addTickable(tickable, voiceIndex);\n const contexts = createContexts(voices, (tick) => new TickContext(tick), fn);\n this.tickContexts = contexts;\n const contextArray = this.tickContexts.array;\n contextArray.forEach((context) => {\n context.tContexts = contextArray;\n });\n return contexts;\n }\n /**\n * Get the AlignmentContexts of TickContexts that were created by createTickContexts.\n * Returns undefined if createTickContexts has not yet been run.\n */\n getTickContexts() {\n return this.tickContexts;\n }\n /**\n * This is the core formatter logic. Format voices and justify them\n * to `justifyWidth` pixels. `renderingContext` is required to justify elements\n * that can't retrieve widths without a canvas. This method sets the `x` positions\n * of all the tickables/notes in the formatter.\n */\n preFormat(justifyWidth = 0, renderingContext, voicesParam, stave) {\n // Initialize context maps.\n const contexts = this.tickContexts;\n if (!contexts) {\n throw new RuntimeError('NoTickContexts', 'preFormat requires TickContexts');\n }\n const { list: contextList, map: contextMap } = contexts;\n // Reset loss history for evaluator.\n this.lossHistory = [];\n // If voices and a stave were provided, set the Stave for each voice\n // and preFormat to apply Y values to the notes;\n if (voicesParam && stave) {\n voicesParam.forEach((voice) => voice.setStave(stave).preFormat());\n }\n // Now distribute the ticks to each tick context, and assign them their\n // own X positions.\n let x = 0;\n let shift = 0;\n this.minTotalWidth = 0;\n let totalTicks = 0;\n // Pass 1: Give each note maximum width requested by context.\n contextList.forEach((tick) => {\n const context = contextMap[tick];\n // Make sure that all tickables in this context have calculated their\n // space requirements.\n context.preFormat();\n const width = context.getWidth();\n this.minTotalWidth += width;\n const maxTicks = context.getMaxTicks().value();\n totalTicks += maxTicks;\n const metrics = context.getMetrics();\n x = x + shift + metrics.totalLeftPx;\n context.setX(x);\n // Calculate shift for the next tick.\n shift = width - metrics.totalLeftPx;\n });\n // Use softmax based on all notes across all staves. (options.globalSoftmax)\n const { globalSoftmax, softmaxFactor, maxIterations } = this.formatterOptions;\n const exp = (tick) => Math.pow(softmaxFactor, (contextMap[tick].getMaxTicks().value() / totalTicks));\n const expTicksUsed = sumArray(contextList.map(exp));\n this.minTotalWidth = x + shift;\n this.hasMinTotalWidth = true;\n // No justification needed. End formatting.\n if (justifyWidth <= 0)\n return this.evaluate();\n // Start justification. Subtract the right extra pixels of the final context because the formatter\n // justifies based on the context's X position, which is the left-most part of the note head.\n const firstContext = contextMap[contextList[0]];\n const lastContext = contextMap[contextList[contextList.length - 1]];\n // Calculate the \"distance error\" between the tick contexts. The expected distance is the spacing proportional to\n // the softmax of the ticks.\n function calculateIdealDistances(adjustedJustifyWidth) {\n const distances = contextList.map((tick, i) => {\n const context = contextMap[tick];\n const voices = context.getTickablesByVoice();\n let backTickable;\n if (i > 0) {\n const prevContext = contextMap[contextList[i - 1]];\n // Go through each tickable and search backwards for another tickable\n // in the same voice. If found, use that duration (ticks) to calculate\n // the expected distance.\n for (let j = i - 1; j >= 0; j--) {\n const backTick = contextMap[contextList[j]];\n const backVoices = backTick.getTickablesByVoice();\n // Look for matching voices between tick contexts.\n const matchingVoices = [];\n Object.keys(voices).forEach((v) => {\n if (backVoices[v]) {\n matchingVoices.push(v);\n }\n });\n if (matchingVoices.length > 0) {\n // Found matching voices, get largest duration\n let maxTicks = 0;\n let maxNegativeShiftPx = Infinity;\n let expectedDistance = 0;\n matchingVoices.forEach((v) => {\n const ticks = backVoices[v].getTicks().value();\n if (ticks > maxTicks) {\n backTickable = backVoices[v];\n maxTicks = ticks;\n }\n // Calculate the limits of the shift based on modifiers, etc.\n const thisTickable = voices[v];\n const insideLeftEdge = thisTickable.getX() -\n (thisTickable.getMetrics().modLeftPx + thisTickable.getMetrics().leftDisplacedHeadPx);\n const backMetrics = backVoices[v].getMetrics();\n const insideRightEdge = backVoices[v].getX() + backMetrics.notePx + backMetrics.modRightPx + backMetrics.rightDisplacedHeadPx;\n // Don't allow shifting if notes in the same voice can collide\n maxNegativeShiftPx = Math.min(maxNegativeShiftPx, insideLeftEdge - insideRightEdge);\n });\n // Don't shift further left than the notehead of the last context. Actually, stay at most 5% to the right\n // so that two different tick contexts don't align across staves.\n maxNegativeShiftPx = Math.min(maxNegativeShiftPx, context.getX() - (prevContext.getX() + adjustedJustifyWidth * 0.05));\n // Calculate the expected distance of the current context from the last matching tickable. The\n // distance is scaled down by the softmax for the voice.\n if (globalSoftmax) {\n const t = totalTicks;\n expectedDistance = (Math.pow(softmaxFactor, (maxTicks / t)) / expTicksUsed) * adjustedJustifyWidth;\n }\n else if (typeof backTickable !== 'undefined') {\n expectedDistance = backTickable.getVoice().softmax(maxTicks) * adjustedJustifyWidth;\n }\n return {\n expectedDistance,\n maxNegativeShiftPx,\n fromTickable: backTickable,\n };\n }\n }\n }\n return { expectedDistance: 0, fromTickablePx: 0, maxNegativeShiftPx: 0 };\n });\n return distances;\n }\n function shiftToIdealDistances(idealDistances) {\n // Distribute ticks to the contexts based on the calculated distance error.\n const centerX = adjustedJustifyWidth / 2;\n let spaceAccum = 0;\n contextList.forEach((tick, index) => {\n const context = contextMap[tick];\n if (index > 0) {\n const contextX = context.getX();\n const ideal = idealDistances[index];\n const errorPx = defined(ideal.fromTickable).getX() + ideal.expectedDistance - (contextX + spaceAccum);\n let negativeShiftPx = 0;\n if (errorPx > 0) {\n spaceAccum += errorPx;\n }\n else if (errorPx < 0) {\n negativeShiftPx = Math.min(ideal.maxNegativeShiftPx, Math.abs(errorPx));\n spaceAccum += -negativeShiftPx;\n }\n context.setX(contextX + spaceAccum);\n }\n // Move center aligned tickables to middle\n context.getCenterAlignedTickables().forEach((tickable) => {\n tickable.setCenterXShift(centerX - context.getX());\n });\n });\n return lastContext.getX() - firstContext.getX();\n }\n const adjustedJustifyWidth = justifyWidth -\n lastContext.getMetrics().notePx -\n lastContext.getMetrics().totalRightPx -\n firstContext.getMetrics().totalLeftPx;\n const musicFont = Tables.currentMusicFont();\n const configMinPadding = musicFont.lookupMetric('stave.endPaddingMin');\n const configMaxPadding = musicFont.lookupMetric('stave.endPaddingMax');\n const leftPadding = musicFont.lookupMetric('stave.padding');\n let targetWidth = adjustedJustifyWidth;\n const distances = calculateIdealDistances(targetWidth);\n let actualWidth = shiftToIdealDistances(distances);\n // Just one context. Done formatting.\n if (contextList.length === 1)\n return 0;\n const calcMinDistance = (targetWidth, distances) => {\n let mdCalc = targetWidth / 2;\n if (distances.length > 1) {\n for (let di = 1; di < distances.length; ++di) {\n mdCalc = Math.min(distances[di].expectedDistance / 2, mdCalc);\n }\n }\n return mdCalc;\n };\n const minDistance = calcMinDistance(targetWidth, distances);\n // right justify to either the configured padding, or the min distance between notes, whichever is greatest.\n // This * 2 keeps the existing formatting unless there is 'a lot' of extra whitespace, which won't break\n // existing visual regression tests.\n const paddingMaxCalc = (curTargetWidth) => {\n let lastTickablePadding = 0;\n const lastTickable = lastContext && lastContext.getMaxTickable();\n if (lastTickable) {\n const voice = lastTickable.getVoice();\n // If the number of actual ticks in the measure <> configured ticks, right-justify\n // because the softmax won't yield the correct value\n if (voice.getTicksUsed().value() > voice.getTotalTicks().value()) {\n return configMaxPadding * 2 < minDistance ? minDistance : configMaxPadding;\n }\n const tickWidth = lastTickable.getWidth();\n lastTickablePadding =\n voice.softmax(lastContext.getMaxTicks().value()) * curTargetWidth - (tickWidth + leftPadding);\n }\n return configMaxPadding * 2 < lastTickablePadding ? lastTickablePadding : configMaxPadding;\n };\n let paddingMax = paddingMaxCalc(targetWidth);\n let paddingMin = paddingMax - (configMaxPadding - configMinPadding);\n const maxX = adjustedJustifyWidth - paddingMin;\n let iterations = maxIterations;\n // Adjust justification width until the right margin is as close as possible to the calculated padding,\n // without going over\n while ((actualWidth > maxX && iterations > 0) || (actualWidth + paddingMax < maxX && iterations > 1)) {\n targetWidth -= actualWidth - maxX;\n paddingMax = paddingMaxCalc(targetWidth);\n paddingMin = paddingMax - (configMaxPadding - configMinPadding);\n actualWidth = shiftToIdealDistances(calculateIdealDistances(targetWidth));\n iterations--;\n }\n this.justifyWidth = justifyWidth;\n return this.evaluate();\n }\n /** Calculate the total cost of this formatting decision. */\n evaluate() {\n const contexts = this.tickContexts;\n const justifyWidth = this.justifyWidth;\n // Calculate available slack per tick context. This works out how much freedom\n // to move a context has in either direction, without affecting other notes.\n this.contextGaps = { total: 0, gaps: [] };\n contexts.list.forEach((tick, index) => {\n if (index === 0)\n return;\n const prevTick = contexts.list[index - 1];\n const prevContext = contexts.map[prevTick];\n const context = contexts.map[tick];\n const prevMetrics = prevContext.getMetrics();\n const currMetrics = context.getMetrics();\n // Calculate X position of right edge of previous note\n const insideRightEdge = prevContext.getX() + prevMetrics.notePx + prevMetrics.totalRightPx;\n // Calculate X position of left edge of current note\n const insideLeftEdge = context.getX() - currMetrics.totalLeftPx;\n const gap = insideLeftEdge - insideRightEdge;\n this.contextGaps.total += gap;\n this.contextGaps.gaps.push({ x1: insideRightEdge, x2: insideLeftEdge });\n // Tell the tick contexts how much they can reposition themselves.\n context.getFormatterMetrics().freedom.left = gap;\n prevContext.getFormatterMetrics().freedom.right = gap;\n });\n // Calculate mean distance in each voice for each duration type, then calculate\n // how far each note is from the mean.\n this.durationStats = {};\n const durationStats = this.durationStats;\n function updateStats(duration, space) {\n const stats = durationStats[duration];\n if (stats === undefined) {\n durationStats[duration] = { mean: space, count: 1 };\n }\n else {\n stats.count += 1;\n stats.mean = (stats.mean + space) / 2;\n }\n }\n this.voices.forEach((voice) => {\n voice.getTickables().forEach((note, i, notes) => {\n const duration = note.getTicks().clone().simplify().toString();\n const metrics = note.getMetrics();\n const formatterMetrics = note.getFormatterMetrics();\n const leftNoteEdge = note.getX() + metrics.notePx + metrics.modRightPx + metrics.rightDisplacedHeadPx;\n let space = 0;\n if (i < notes.length - 1) {\n const rightNote = notes[i + 1];\n const rightMetrics = rightNote.getMetrics();\n const rightNoteEdge = rightNote.getX() - rightMetrics.modLeftPx - rightMetrics.leftDisplacedHeadPx;\n space = rightNoteEdge - leftNoteEdge;\n formatterMetrics.space.used = rightNote.getX() - note.getX();\n rightNote.getFormatterMetrics().freedom.left = space;\n }\n else {\n space = justifyWidth - leftNoteEdge;\n formatterMetrics.space.used = justifyWidth - note.getX();\n }\n formatterMetrics.freedom.right = space;\n updateStats(duration, formatterMetrics.space.used);\n });\n });\n // Calculate how much each note deviates from the mean. Loss function is square\n // root of the sum of squared deviations.\n let totalDeviation = 0;\n this.voices.forEach((voice) => {\n voice.getTickables().forEach((note) => {\n const duration = note.getTicks().clone().simplify().toString();\n const metrics = note.getFormatterMetrics();\n metrics.space.mean = durationStats[duration].mean;\n metrics.duration = duration;\n metrics.iterations += 1;\n metrics.space.deviation = metrics.space.used - metrics.space.mean;\n totalDeviation += Math.pow(metrics.space.deviation, 2);\n });\n });\n this.totalCost = Math.sqrt(totalDeviation);\n this.lossHistory.push(this.totalCost);\n return this.totalCost;\n }\n /**\n * Run a single iteration of rejustification. At a high level, this method calculates\n * the overall \"loss\" (or cost) of this layout, and repositions tickcontexts in an\n * attempt to reduce the cost. You can call this method multiple times until it finds\n * and oscillates around a global minimum.\n * @param options[alpha] the \"learning rate\" for the formatter. It determines how much of a shift\n * the formatter should make based on its cost function.\n */\n tune(options) {\n var _a;\n const contexts = this.tickContexts;\n if (!contexts) {\n return 0;\n }\n const alpha = (_a = options === null || options === void 0 ? void 0 : options.alpha) !== null && _a !== void 0 ? _a : 0.5;\n // Move `current` tickcontext by `shift` pixels, and adjust the freedom\n // on adjacent tickcontexts.\n function move(current, shift, prev, next) {\n current.setX(current.getX() + shift);\n current.getFormatterMetrics().freedom.left += shift;\n current.getFormatterMetrics().freedom.right -= shift;\n if (prev)\n prev.getFormatterMetrics().freedom.right += shift;\n if (next)\n next.getFormatterMetrics().freedom.left -= shift;\n }\n let shift = 0;\n this.totalShift = 0;\n contexts.list.forEach((tick, index, list) => {\n const context = contexts.map[tick];\n const prevContext = index > 0 ? contexts.map[list[index - 1]] : undefined;\n const nextContext = index < list.length - 1 ? contexts.map[list[index + 1]] : undefined;\n move(context, shift, prevContext, nextContext);\n const cost = -sumArray(context.getTickables().map((t) => t.getFormatterMetrics().space.deviation));\n if (cost > 0) {\n shift = -Math.min(context.getFormatterMetrics().freedom.right, Math.abs(cost));\n }\n else if (cost < 0) {\n if (nextContext) {\n shift = Math.min(nextContext.getFormatterMetrics().freedom.right, Math.abs(cost));\n }\n else {\n shift = 0;\n }\n }\n shift *= alpha;\n this.totalShift += shift;\n });\n return this.evaluate();\n }\n /**\n * This is the top-level call for all formatting logic completed\n * after `x` *and* `y` values have been computed for the notes\n * in the voices.\n */\n postFormat() {\n this.modifierContexts.forEach((modifierContexts) => {\n modifierContexts.array.forEach((mc) => mc.postFormat());\n });\n this.tickContexts.list.forEach((tick) => {\n this.tickContexts.map[tick].postFormat();\n });\n return this;\n }\n /**\n * Take all `voices` and create `ModifierContext`s out of them. This tells\n * the formatters that the voices belong on a single stave.\n */\n joinVoices(voices) {\n this.createModifierContexts(voices);\n this.hasMinTotalWidth = false;\n return this;\n }\n /**\n * Align rests in voices, justify the contexts, and position the notes\n * so voices are aligned and ready to render onto the stave. This method\n * mutates the `x` positions of all tickables in `voices`.\n *\n * Voices are full justified to fit in `justifyWidth` pixels.\n *\n * Set `options.context` to the rendering context. Set `options.align_rests`\n * to true to enable rest alignment.\n */\n format(voices, justifyWidth, options) {\n const opts = Object.assign({ align_rests: false }, options);\n this.voices = voices;\n const softmaxFactor = this.formatterOptions.softmaxFactor;\n if (softmaxFactor) {\n this.voices.forEach((v) => v.setSoftmaxFactor(softmaxFactor));\n }\n this.alignRests(voices, opts.align_rests);\n this.createTickContexts(voices);\n this.preFormat(justifyWidth, opts.context, voices, opts.stave);\n // Only postFormat if a stave was supplied for y value formatting\n if (opts.stave)\n this.postFormat();\n return this;\n }\n // This method is just like `format` except that the `justifyWidth` is inferred from the `stave`.\n formatToStave(voices, stave, optionsParam) {\n const options = Object.assign({ context: stave.getContext() }, optionsParam);\n // eslint-disable-next-line\n const justifyWidth = stave.getNoteEndX() - stave.getNoteStartX() - Stave.defaultPadding;\n L('Formatting voices to width: ', justifyWidth);\n return this.format(voices, justifyWidth, options);\n }\n getTickContext(tick) {\n var _a;\n return (_a = this.tickContexts) === null || _a === void 0 ? void 0 : _a.map[tick];\n }\n}\n// To enable logging for this class. Set `Vex.Flow.Formatter.DEBUG` to `true`.\nFormatter.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n/**\n * ## Description\n *\n * Create a new tuplet from the specified notes. The notes must\n * be part of the same voice. If they are of different rhythmic\n * values, then options.num_notes must be set.\n *\n * @constructor\n * @param {Array.} A set of notes: staveNotes,\n * notes, etc... any class that inherits stemmableNote at some\n * point in its prototype chain.\n * @param options: object {\n *\n * num_notes: fit this many notes into...\n * notes_occupied: ...the space of this many notes\n *\n * Together, these two properties make up the tuplet ratio\n * in the form of num_notes : notes_occupied.\n * num_notes defaults to the number of notes passed in, so\n * it is important that if you omit this property, all of\n * the notes passed should be of the same note value.\n * notes_occupied defaults to 2 -- so you should almost\n * certainly pass this parameter for anything other than\n * a basic triplet.\n *\n * location:\n * default 1, which is above the notes: ┌─── 3 ───┐\n * -1 is below the notes └─── 3 ───┘\n *\n * bracketed: boolean, draw a bracket around the tuplet number\n * when true: ┌─── 3 ───┐ when false: 3\n * defaults to true if notes are not beamed, false otherwise\n *\n * ratioed: boolean\n * when true: ┌─── 7:8 ───┐, when false: ┌─── 7 ───┐\n * defaults to true if the difference between num_notes and\n * notes_occupied is greater than 1.\n *\n * y_offset: int, default 0\n * manually offset a tuplet, for instance to avoid collisions\n * with articulations, etc...\n * }\n */\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { Glyph } from './glyph';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { defined, RuntimeError } from './util';\nexport var TupletLocation;\n(function (TupletLocation) {\n TupletLocation[TupletLocation[\"BOTTOM\"] = -1] = \"BOTTOM\";\n TupletLocation[TupletLocation[\"TOP\"] = 1] = \"TOP\";\n})(TupletLocation || (TupletLocation = {}));\nexport class Tuplet extends Element {\n constructor(notes, options = {}) {\n super();\n this.numerator_glyphs = [];\n this.denom_glyphs = [];\n if (!notes || !notes.length) {\n throw new RuntimeError('BadArguments', 'No notes provided for tuplet.');\n }\n this.options = options;\n this.notes = notes;\n this.num_notes = this.options.num_notes != undefined ? this.options.num_notes : notes.length;\n // We accept beats_occupied, but warn that it's deprecated:\n // the preferred property name is now notes_occupied.\n if (this.options.beats_occupied) {\n this.beatsOccupiedDeprecationWarning();\n }\n this.notes_occupied = this.options.notes_occupied || this.options.beats_occupied || 2;\n if (this.options.bracketed != undefined) {\n this.bracketed = this.options.bracketed;\n }\n else {\n this.bracketed = notes.some((note) => !note.hasBeam());\n }\n this.ratioed =\n this.options.ratioed != undefined ? this.options.ratioed : Math.abs(this.notes_occupied - this.num_notes) > 1;\n this.point = Tables.currentMusicFont().lookupMetric('digits.tupletPoint');\n this.y_pos = 16;\n this.x_pos = 100;\n this.width = 200;\n this.setTupletLocation(this.options.location || Tuplet.LOCATION_TOP);\n Formatter.AlignRestsToNotes(notes, true, true);\n this.resolveGlyphs();\n this.attach();\n }\n static get CATEGORY() {\n return Category.Tuplet;\n }\n static get LOCATION_TOP() {\n return TupletLocation.TOP;\n }\n static get LOCATION_BOTTOM() {\n return TupletLocation.BOTTOM;\n }\n static get NESTING_OFFSET() {\n return 15;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static get metrics() {\n return Tables.currentMusicFont().getMetrics().glyphs.tuplet;\n }\n attach() {\n for (let i = 0; i < this.notes.length; i++) {\n const note = this.notes[i];\n note.setTuplet(this);\n }\n }\n detach() {\n for (let i = 0; i < this.notes.length; i++) {\n const note = this.notes[i];\n note.resetTuplet(this);\n }\n }\n /**\n * Set whether or not the bracket is drawn.\n */\n setBracketed(bracketed) {\n this.bracketed = !!bracketed;\n return this;\n }\n /**\n * Set whether or not the ratio is shown.\n */\n setRatioed(ratioed) {\n this.ratioed = !!ratioed;\n return this;\n }\n /**\n * Set the tuplet indicator to be displayed either on the top or bottom of the stave.\n */\n setTupletLocation(location) {\n if (location !== Tuplet.LOCATION_TOP && location !== Tuplet.LOCATION_BOTTOM) {\n // eslint-disable-next-line\n console.warn(`Invalid tuplet location [${location}]. Using Tuplet.LOCATION_TOP.`);\n location = Tuplet.LOCATION_TOP;\n }\n this.location = location;\n return this;\n }\n getNotes() {\n return this.notes;\n }\n getNoteCount() {\n return this.num_notes;\n }\n beatsOccupiedDeprecationWarning() {\n // eslint-disable-next-line\n console.warn('beats_occupied has been deprecated as an option for tuplets. Please use notes_occupied instead.', 'Calls to getBeatsOccupied / setBeatsOccupied should now be routed to getNotesOccupied / setNotesOccupied.', 'The old methods will be removed in VexFlow 5.0.');\n }\n getBeatsOccupied() {\n this.beatsOccupiedDeprecationWarning();\n return this.getNotesOccupied();\n }\n setBeatsOccupied(beats) {\n this.beatsOccupiedDeprecationWarning();\n return this.setNotesOccupied(beats);\n }\n getNotesOccupied() {\n return this.notes_occupied;\n }\n setNotesOccupied(notes) {\n this.detach();\n this.notes_occupied = notes;\n this.resolveGlyphs();\n this.attach();\n }\n resolveGlyphs() {\n this.numerator_glyphs = [];\n let n = this.num_notes;\n while (n >= 1) {\n this.numerator_glyphs.unshift(new Glyph('timeSig' + (n % 10), this.point));\n n = parseInt((n / 10).toString(), 10);\n }\n this.denom_glyphs = [];\n n = this.notes_occupied;\n while (n >= 1) {\n this.denom_glyphs.unshift(new Glyph('timeSig' + (n % 10), this.point));\n n = parseInt((n / 10).toString(), 10);\n }\n }\n // determine how many tuplets are nested within this tuplet\n // on the same side (above/below), to calculate a y\n // offset for this tuplet:\n getNestedTupletCount() {\n const location = this.location;\n const first_note = this.notes[0];\n let maxTupletCount = countTuplets(first_note, location);\n let minTupletCount = countTuplets(first_note, location);\n // Count the tuplets that are on the same side (above/below)\n // as this tuplet:\n function countTuplets(note, location) {\n return note.getTupletStack().filter((tuplet) => tuplet.location === location).length;\n }\n this.notes.forEach((note) => {\n const tupletCount = countTuplets(note, location);\n maxTupletCount = tupletCount > maxTupletCount ? tupletCount : maxTupletCount;\n minTupletCount = tupletCount < minTupletCount ? tupletCount : minTupletCount;\n });\n return maxTupletCount - minTupletCount;\n }\n // determine the y position of the tuplet:\n getYPosition() {\n // offset the tuplet for any nested tuplets between\n // it and the notes:\n const nested_tuplet_y_offset = this.getNestedTupletCount() * Tuplet.NESTING_OFFSET * -this.location;\n // offset the tuplet for any manual y_offset:\n const y_offset = this.options.y_offset || 0;\n // now iterate through the notes and find our highest\n // or lowest locations, to form a base y_pos\n const first_note = this.notes[0];\n let y_pos;\n if (this.location === Tuplet.LOCATION_TOP) {\n y_pos = first_note.checkStave().getYForLine(0) - Tuplet.metrics.topModifierOffset;\n // check modifiers above note to see if they will collide with tuplet beam\n for (let i = 0; i < this.notes.length; ++i) {\n const note = this.notes[i];\n let modLines = 0;\n const mc = note.getModifierContext();\n if (mc) {\n modLines = Math.max(modLines, mc.getState().top_text_line);\n }\n const modY = note.getYForTopText(modLines) - Tuplet.metrics.noteHeadOffset;\n if (note.hasStem() || note.isRest()) {\n const top_y = note.getStemDirection() === Stem.UP\n ? note.getStemExtents().topY - Tuplet.metrics.stemOffset\n : note.getStemExtents().baseY - Tuplet.metrics.noteHeadOffset;\n y_pos = Math.min(top_y, y_pos);\n if (modLines > 0) {\n y_pos = Math.min(modY, y_pos);\n }\n }\n }\n }\n else {\n let lineCheck = Tuplet.metrics.bottomLine; // tuplet default on line 4\n // check modifiers below note to see if they will collide with tuplet beam\n this.notes.forEach((nn) => {\n const mc = nn.getModifierContext();\n if (mc) {\n lineCheck = Math.max(lineCheck, mc.getState().text_line + 1);\n }\n });\n y_pos = first_note.checkStave().getYForLine(lineCheck) + Tuplet.metrics.noteHeadOffset;\n for (let i = 0; i < this.notes.length; ++i) {\n if (this.notes[i].hasStem() || this.notes[i].isRest()) {\n const bottom_y = this.notes[i].getStemDirection() === Stem.UP\n ? this.notes[i].getStemExtents().baseY + Tuplet.metrics.noteHeadOffset\n : this.notes[i].getStemExtents().topY + Tuplet.metrics.stemOffset;\n if (bottom_y > y_pos) {\n y_pos = bottom_y;\n }\n }\n }\n }\n return y_pos + nested_tuplet_y_offset + y_offset;\n }\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n // determine x value of left bound of tuplet\n const first_note = this.notes[0];\n const last_note = this.notes[this.notes.length - 1];\n if (!this.bracketed) {\n this.x_pos = first_note.getStemX();\n this.width = last_note.getStemX() - this.x_pos;\n }\n else {\n this.x_pos = first_note.getTieLeftX() - 5;\n this.width = last_note.getTieRightX() - this.x_pos + 5;\n }\n // determine y value for tuplet\n this.y_pos = this.getYPosition();\n const addGlyphWidth = (width, glyph) => width + defined(glyph.getMetrics().width);\n // calculate total width of tuplet notation\n let width = this.numerator_glyphs.reduce(addGlyphWidth, 0);\n if (this.ratioed) {\n width = this.denom_glyphs.reduce(addGlyphWidth, width);\n width += this.point * 0.32;\n }\n const notation_center_x = this.x_pos + this.width / 2;\n const notation_start_x = notation_center_x - width / 2;\n // draw bracket if the tuplet is not beamed\n if (this.bracketed) {\n const line_width = this.width / 2 - width / 2 - 5;\n // only draw the bracket if it has positive length\n if (line_width > 0) {\n ctx.fillRect(this.x_pos, this.y_pos, line_width, 1);\n ctx.fillRect(this.x_pos + this.width / 2 + width / 2 + 5, this.y_pos, line_width, 1);\n ctx.fillRect(this.x_pos, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM ? 1 : 0), 1, this.location * 10);\n ctx.fillRect(this.x_pos + this.width, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM ? 1 : 0), 1, this.location * 10);\n }\n }\n // draw numerator glyphs\n const shiftY = Tables.currentMusicFont().lookupMetric('digits.shiftY', 0);\n let x_offset = 0;\n this.numerator_glyphs.forEach((glyph) => {\n glyph.render(ctx, notation_start_x + x_offset, this.y_pos + this.point / 3 - 2 + shiftY);\n x_offset += defined(glyph.getMetrics().width);\n });\n // display colon and denominator if the ratio is to be shown\n if (this.ratioed) {\n const colon_x = notation_start_x + x_offset + this.point * 0.16;\n const colon_radius = this.point * 0.06;\n ctx.beginPath();\n ctx.arc(colon_x, this.y_pos - this.point * 0.08, colon_radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n ctx.beginPath();\n ctx.arc(colon_x, this.y_pos + this.point * 0.12, colon_radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n x_offset += this.point * 0.32;\n this.denom_glyphs.forEach((glyph) => {\n glyph.render(ctx, notation_start_x + x_offset, this.y_pos + this.point / 3 - 2 + shiftY);\n x_offset += defined(glyph.getMetrics().width);\n });\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Fraction } from './fraction';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { TupletLocation } from './tuplet';\nimport { Category, isStaveNote, isTabNote } from './typeguard';\nimport { RuntimeError } from './util';\nfunction calculateStemDirection(notes) {\n let lineSum = 0;\n notes.forEach((note) => {\n if (note.keyProps) {\n note.keyProps.forEach((keyProp) => {\n lineSum += keyProp.line - 3;\n });\n }\n });\n if (lineSum >= 0) {\n return Stem.DOWN;\n }\n return Stem.UP;\n}\nfunction getStemSlope(firstNote, lastNote) {\n const firstStemTipY = firstNote.getStemExtents().topY;\n const firstStemX = firstNote.getStemX();\n const lastStemTipY = lastNote.getStemExtents().topY;\n const lastStemX = lastNote.getStemX();\n return (lastStemTipY - firstStemTipY) / (lastStemX - firstStemX);\n}\nexport const BEAM_LEFT = 'L';\nexport const BEAM_RIGHT = 'R';\nexport const BEAM_BOTH = 'B';\n/** `Beams` span over a set of `StemmableNotes`. */\nexport class Beam extends Element {\n constructor(notes, auto_stem = false) {\n super();\n this.slope = 0;\n this.y_shift = 0;\n /**\n * Overrides to default beam directions for secondary-level beams that do not\n * connect to any other note. See further explanation at\n * `setPartialBeamSideAt`\n */\n this.forcedPartialDirections = {};\n if (!notes || notes.length === 0) {\n throw new RuntimeError('BadArguments', 'No notes provided for beam.');\n }\n if (notes.length === 1) {\n throw new RuntimeError('BadArguments', 'Too few notes for beam.');\n }\n // Validate beam line, direction and ticks.\n this.ticks = notes[0].getIntrinsicTicks();\n if (this.ticks >= Tables.durationToTicks('4')) {\n throw new RuntimeError('BadArguments', 'Beams can only be applied to notes shorter than a quarter note.');\n }\n let i; // shared iterator\n let note;\n this.stem_direction = Stem.UP;\n for (i = 0; i < notes.length; ++i) {\n note = notes[i];\n if (note.hasStem()) {\n this.stem_direction = note.getStemDirection();\n break;\n }\n }\n let stem_direction = this.stem_direction;\n // Figure out optimal stem direction based on given notes\n if (auto_stem && isStaveNote(notes[0])) {\n stem_direction = calculateStemDirection(notes);\n }\n else if (auto_stem && isTabNote(notes[0])) {\n // Auto Stem TabNotes\n const stem_weight = notes.reduce((memo, note) => memo + note.getStemDirection(), 0);\n stem_direction = stem_weight > -1 ? Stem.UP : Stem.DOWN;\n }\n // Apply stem directions and attach beam to notes\n for (i = 0; i < notes.length; ++i) {\n note = notes[i];\n if (auto_stem) {\n note.setStemDirection(stem_direction);\n this.stem_direction = stem_direction;\n }\n note.setBeam(this);\n }\n this.postFormatted = false;\n this.notes = notes;\n this.beam_count = this.getBeamCount();\n this.break_on_indices = [];\n this.render_options = {\n beam_width: 5,\n max_slope: 0.25,\n min_slope: -0.25,\n slope_iterations: 20,\n slope_cost: 100,\n show_stemlets: false,\n stemlet_extension: 7,\n partial_beam_length: 10,\n flat_beams: false,\n min_flat_beam_offset: 15,\n };\n }\n static get CATEGORY() {\n return Category.Beam;\n }\n /** Get the direction of the beam */\n getStemDirection() {\n return this.stem_direction;\n }\n /**\n * Get the default beam groups for a provided time signature.\n * Attempt to guess if the time signature is not found in table.\n * Currently this is fairly naive.\n */\n static getDefaultBeamGroups(time_sig) {\n if (!time_sig || time_sig === 'c') {\n time_sig = '4/4';\n }\n const defaults = {\n '1/2': ['1/2'],\n '2/2': ['1/2'],\n '3/2': ['1/2'],\n '4/2': ['1/2'],\n '1/4': ['1/4'],\n '2/4': ['1/4'],\n '3/4': ['1/4'],\n '4/4': ['1/4'],\n '1/8': ['1/8'],\n '2/8': ['2/8'],\n '3/8': ['3/8'],\n '4/8': ['2/8'],\n '1/16': ['1/16'],\n '2/16': ['2/16'],\n '3/16': ['3/16'],\n '4/16': ['2/16'],\n };\n const groups = defaults[time_sig];\n if (groups === undefined) {\n // If no beam groups found, naively determine\n // the beam groupings from the time signature\n const beatTotal = parseInt(time_sig.split('/')[0], 10);\n const beatValue = parseInt(time_sig.split('/')[1], 10);\n const tripleMeter = beatTotal % 3 === 0;\n if (tripleMeter) {\n return [new Fraction(3, beatValue)];\n }\n else if (beatValue > 4) {\n return [new Fraction(2, beatValue)];\n }\n else if (beatValue <= 4) {\n return [new Fraction(1, beatValue)];\n }\n }\n else {\n return groups.map((group) => new Fraction().parse(group));\n }\n return [new Fraction(1, 4)];\n }\n /**\n * A helper function to automatically build basic beams for a voice. For more\n * complex auto-beaming use `Beam.generateBeams()`.\n * @param voice the voice to generate the beams for\n * @param stem_direction a stem direction to apply to the entire voice\n * @param groups an array of `Fraction` representing beat groupings for the beam\n */\n static applyAndGetBeams(voice, stem_direction, groups) {\n return Beam.generateBeams(voice.getTickables(), { groups, stem_direction });\n }\n /**\n * A helper function to autimatically build beams for a voice with\n * configuration options.\n *\n * Example configuration object:\n *\n * ```\n * config = {\n * groups: [new Vex.Flow.Fraction(2, 8)],\n * stem_direction: -1,\n * beam_rests: true,\n * beam_middle_only: true,\n * show_stemlets: false\n * };\n * ```\n * @param notes an array of notes to create the beams for\n * @param config the configuration object\n * @param config.stem_direction set to apply the same direction to all notes\n * @param config.beam_rests set to `true` to include rests in the beams\n * @param config.beam_middle_only set to `true` to only beam rests in the middle of the beat\n * @param config.show_stemlets set to `true` to draw stemlets for rests\n * @param config.maintain_stem_directions set to `true` to not apply new stem directions\n * @param config.groups array of `Fractions` that represent the beat structure to beam the notes\n *\n */\n static generateBeams(notes, config = {}) {\n if (!config.groups || !config.groups.length) {\n config.groups = [new Fraction(2, 8)];\n }\n // Convert beam groups to tick amounts\n const tickGroups = config.groups.map((group) => {\n if (!group.multiply) {\n throw new RuntimeError('InvalidBeamGroups', 'The beam groups must be an array of Vex.Flow.Fractions');\n }\n return group.clone().multiply(Tables.RESOLUTION, 1);\n });\n const unprocessedNotes = notes;\n let currentTickGroup = 0;\n let noteGroups = [];\n let currentGroup = [];\n function getTotalTicks(vf_notes) {\n return vf_notes.reduce((memo, note) => note.getTicks().clone().add(memo), new Fraction(0, 1));\n }\n function nextTickGroup() {\n if (tickGroups.length - 1 > currentTickGroup) {\n currentTickGroup += 1;\n }\n else {\n currentTickGroup = 0;\n }\n }\n function createGroups() {\n let nextGroup = [];\n // number of ticks in current group\n let currentGroupTotalTicks = new Fraction(0, 1);\n unprocessedNotes.forEach((unprocessedNote) => {\n nextGroup = [];\n if (unprocessedNote.shouldIgnoreTicks()) {\n noteGroups.push(currentGroup);\n currentGroup = nextGroup;\n return; // Ignore untickables (like bar notes)\n }\n currentGroup.push(unprocessedNote);\n const ticksPerGroup = tickGroups[currentTickGroup].clone();\n const totalTicks = getTotalTicks(currentGroup).add(currentGroupTotalTicks);\n // Double the amount of ticks in a group, if it's an unbeamable tuplet\n const unbeamable = Tables.durationToNumber(unprocessedNote.getDuration()) < 8;\n if (unbeamable && unprocessedNote.getTuplet()) {\n ticksPerGroup.numerator *= 2;\n }\n // If the note that was just added overflows the group tick total\n if (totalTicks.greaterThan(ticksPerGroup)) {\n // If the overflow note can be beamed, start the next group\n // with it. Unbeamable notes leave the group overflowed.\n if (!unbeamable) {\n const note = currentGroup.pop();\n if (note)\n nextGroup.push(note);\n }\n noteGroups.push(currentGroup);\n // We have overflown, so we're going to next tick group. As we might have\n // overflown by more than 1 group, we need to go forward as many times as\n // needed, decreasing currentGroupTotalTicks by as many ticks as there are\n // in current groups as we go forward.\n do {\n currentGroupTotalTicks = totalTicks.subtract(tickGroups[currentTickGroup]);\n nextTickGroup();\n } while (currentGroupTotalTicks.greaterThanEquals(tickGroups[currentTickGroup]));\n currentGroup = nextGroup;\n }\n else if (totalTicks.equals(ticksPerGroup)) {\n noteGroups.push(currentGroup);\n currentGroupTotalTicks = new Fraction(0, 1);\n currentGroup = nextGroup;\n nextTickGroup();\n }\n });\n // Adds any remainder notes beam\n if (currentGroup.length > 0) {\n noteGroups.push(currentGroup);\n }\n }\n function getBeamGroups() {\n return noteGroups.filter((group) => {\n if (group.length > 1) {\n let beamable = true;\n group.forEach((note) => {\n if (note.getIntrinsicTicks() >= Tables.durationToTicks('4')) {\n beamable = false;\n }\n });\n return beamable;\n }\n return false;\n });\n }\n // Splits up groups by Rest\n function sanitizeGroups() {\n const sanitizedGroups = [];\n noteGroups.forEach((group) => {\n let tempGroup = [];\n group.forEach((note, index, group) => {\n const isFirstOrLast = index === 0 || index === group.length - 1;\n const prevNote = group[index - 1];\n const breaksOnEachRest = !config.beam_rests && note.isRest();\n const breaksOnFirstOrLastRest = config.beam_rests && config.beam_middle_only && note.isRest() && isFirstOrLast;\n let breakOnStemChange = false;\n if (config.maintain_stem_directions && prevNote && !note.isRest() && !prevNote.isRest()) {\n const prevDirection = prevNote.getStemDirection();\n const currentDirection = note.getStemDirection();\n breakOnStemChange = currentDirection !== prevDirection;\n }\n const isUnbeamableDuration = parseInt(note.getDuration(), 10) < 8;\n // Determine if the group should be broken at this note\n const shouldBreak = breaksOnEachRest || breaksOnFirstOrLastRest || breakOnStemChange || isUnbeamableDuration;\n if (shouldBreak) {\n // Add current group\n if (tempGroup.length > 0) {\n sanitizedGroups.push(tempGroup);\n }\n // Start a new group. Include the current note if the group\n // was broken up by stem direction, as that note needs to start\n // the next group of notes\n tempGroup = breakOnStemChange ? [note] : [];\n }\n else {\n // Add note to group\n tempGroup.push(note);\n }\n });\n // If there is a remaining group, add it as well\n if (tempGroup.length > 0) {\n sanitizedGroups.push(tempGroup);\n }\n });\n noteGroups = sanitizedGroups;\n }\n function formatStems() {\n noteGroups.forEach((group) => {\n let stemDirection;\n if (config.maintain_stem_directions) {\n const note = findFirstNote(group);\n stemDirection = note ? note.getStemDirection() : Stem.UP;\n }\n else {\n if (config.stem_direction) {\n stemDirection = config.stem_direction;\n }\n else {\n stemDirection = calculateStemDirection(group);\n }\n }\n applyStemDirection(group, stemDirection);\n });\n }\n function findFirstNote(group) {\n for (let i = 0; i < group.length; i++) {\n const note = group[i];\n if (!note.isRest()) {\n return note;\n }\n }\n return false;\n }\n function applyStemDirection(group, direction) {\n group.forEach((note) => {\n note.setStemDirection(direction);\n });\n }\n // Get all of the tuplets in all of the note groups\n function getTuplets() {\n const uniqueTuplets = [];\n // Go through all of the note groups and inspect for tuplets\n noteGroups.forEach((group) => {\n let tuplet;\n group.forEach((note) => {\n const noteTuplet = note.getTuplet();\n if (noteTuplet && tuplet !== noteTuplet) {\n tuplet = noteTuplet;\n uniqueTuplets.push(tuplet);\n }\n });\n });\n return uniqueTuplets;\n }\n // Using closures to store the variables throughout the various functions\n // IMO Keeps it this process lot cleaner - but not super consistent with\n // the rest of the API's style - Silverwolf90 (Cyril)\n createGroups();\n sanitizeGroups();\n formatStems();\n // Get the notes to be beamed\n const beamedNoteGroups = getBeamGroups();\n // Get the tuplets in order to format them accurately\n const allTuplets = getTuplets();\n // Create a Vex.Flow.Beam from each group of notes to be beamed\n const beams = [];\n beamedNoteGroups.forEach((group) => {\n const beam = new Beam(group);\n if (config.show_stemlets) {\n beam.render_options.show_stemlets = true;\n }\n if (config.secondary_breaks) {\n beam.render_options.secondary_break_ticks = Tables.durationToTicks(config.secondary_breaks);\n }\n if (config.flat_beams === true) {\n beam.render_options.flat_beams = true;\n beam.render_options.flat_beam_offset = config.flat_beam_offset;\n }\n beams.push(beam);\n });\n // Reformat tuplets\n allTuplets.forEach((tuplet) => {\n // Set the tuplet location based on the stem direction\n const direction = tuplet.notes[0].stem_direction === Stem.DOWN ? TupletLocation.BOTTOM : TupletLocation.TOP;\n tuplet.setTupletLocation(direction);\n // If any of the notes in the tuplet are not beamed, draw a bracket.\n let bracketed = false;\n for (let i = 0; i < tuplet.notes.length; i++) {\n const note = tuplet.notes[i];\n if (!note.hasBeam()) {\n bracketed = true;\n break;\n }\n }\n tuplet.setBracketed(bracketed);\n });\n return beams;\n }\n /** Get the notes in this beam. */\n getNotes() {\n return this.notes;\n }\n /** Get the max number of beams in the set of notes. */\n getBeamCount() {\n const beamCounts = this.notes.map((note) => note.getGlyph().beam_count);\n const maxBeamCount = beamCounts.reduce((max, beamCount) => (beamCount > max ? beamCount : max));\n return maxBeamCount;\n }\n /** Set which note `indices` to break the secondary beam at. */\n breakSecondaryAt(indices) {\n this.break_on_indices = indices;\n return this;\n }\n /**\n * Forces the direction of a partial beam (a secondary-level beam that exists\n * on one note only of the beam group). This is useful in rhythms such as 6/8\n * eighth-sixteenth-eighth-sixteenth, where the direction of the beam on the\n * first sixteenth note can help imply whether the rhythm is to be felt as\n * three groups of eighth notes (typical) or as two groups of three-sixteenths\n * (less common):\n * ```\n * ┌───┬──┬──┐ ┌──┬──┬──┐\n * │ ├─ │ ─┤ vs │ ─┤ │ ─┤\n * │ │ │ │ │ │ │ │\n * ```\n */\n setPartialBeamSideAt(noteIndex, side) {\n this.forcedPartialDirections[noteIndex] = side;\n return this;\n }\n /**\n * Restore the default direction of a partial beam (a secondary-level beam\n * that does not connect to any other notes).\n */\n unsetPartialBeamSideAt(noteIndex) {\n delete this.forcedPartialDirections[noteIndex];\n return this;\n }\n /** Return the y coordinate for linear function. */\n getSlopeY(x, first_x_px, first_y_px, slope) {\n return first_y_px + (x - first_x_px) * slope;\n }\n /** Calculate the best possible slope for the provided notes. */\n calculateSlope() {\n const { notes, stem_direction: stemDirection, render_options: { max_slope, min_slope, slope_iterations, slope_cost }, } = this;\n const firstNote = notes[0];\n const initialSlope = getStemSlope(firstNote, notes[notes.length - 1]);\n const increment = (max_slope - min_slope) / slope_iterations;\n let minCost = Number.MAX_VALUE;\n let bestSlope = 0;\n let yShift = 0;\n // iterate through slope values to find best weighted fit\n for (let slope = min_slope; slope <= max_slope; slope += increment) {\n let totalStemExtension = 0;\n let yShiftTemp = 0;\n // iterate through notes, calculating y shift and stem extension\n for (let i = 1; i < notes.length; ++i) {\n const note = notes[i];\n if (note.hasStem() || note.isRest()) {\n const adjustedStemTipY = this.getSlopeY(note.getStemX(), firstNote.getStemX(), firstNote.getStemExtents().topY, slope) + yShiftTemp;\n const stemTipY = note.getStemExtents().topY;\n // beam needs to be shifted up to accommodate note\n if (stemTipY * stemDirection < adjustedStemTipY * stemDirection) {\n const diff = Math.abs(stemTipY - adjustedStemTipY);\n yShiftTemp += diff * -stemDirection;\n totalStemExtension += diff * i;\n }\n else {\n // beam overshoots note, account for the difference\n totalStemExtension += (stemTipY - adjustedStemTipY) * stemDirection;\n }\n }\n }\n // most engraving books suggest aiming for a slope about half the angle of the\n // difference between the first and last notes' stem length;\n const idealSlope = initialSlope / 2;\n const distanceFromIdeal = Math.abs(idealSlope - slope);\n // This tries to align most beams to something closer to the idealSlope, but\n // doesn't go crazy. To disable, set this.render_options.slope_cost = 0\n const cost = slope_cost * distanceFromIdeal + Math.abs(totalStemExtension);\n // update state when a more ideal slope is found\n if (cost < minCost) {\n minCost = cost;\n bestSlope = slope;\n yShift = yShiftTemp;\n }\n }\n this.slope = bestSlope;\n this.y_shift = yShift;\n }\n /** Calculate a slope and y-shift for flat beams. */\n calculateFlatSlope() {\n const { notes, stem_direction, render_options: { beam_width, min_flat_beam_offset, flat_beam_offset }, } = this;\n // If a flat beam offset has not yet been supplied or calculated,\n // generate one based on the notes in this particular note group\n let total = 0;\n let extremeY = 0; // Store the highest or lowest note here\n let extremeBeamCount = 0; // The beam count of the extreme note\n let currentExtreme = 0;\n for (let i = 0; i < notes.length; i++) {\n // Total up all of the offsets so we can average them out later\n const note = notes[i];\n const stemTipY = note.getStemExtents().topY;\n total += stemTipY;\n // Store the highest (stems-up) or lowest (stems-down) note so the\n // offset can be adjusted in case the average isn't enough\n if (stem_direction === Stem.DOWN && currentExtreme < stemTipY) {\n currentExtreme = stemTipY;\n extremeY = Math.max(...note.getYs());\n extremeBeamCount = note.getBeamCount();\n }\n else if (stem_direction === Stem.UP && (currentExtreme === 0 || currentExtreme > stemTipY)) {\n currentExtreme = stemTipY;\n extremeY = Math.min(...note.getYs());\n extremeBeamCount = note.getBeamCount();\n }\n }\n // Average the offsets to try and come up with a reasonable one that\n // works for all of the notes in the beam group.\n let offset = total / notes.length;\n // In case the average isn't long enough, add or subtract some more\n // based on the highest or lowest note (again, based on the stem\n // direction). This also takes into account the added height due to\n // the width of the beams.\n const beamWidth = beam_width * 1.5;\n const extremeTest = min_flat_beam_offset + extremeBeamCount * beamWidth;\n const newOffset = extremeY + extremeTest * -stem_direction;\n if (stem_direction === Stem.DOWN && offset < newOffset) {\n offset = extremeY + extremeTest;\n }\n else if (stem_direction === Stem.UP && offset > newOffset) {\n offset = extremeY - extremeTest;\n }\n if (!flat_beam_offset) {\n // Set the offset for the group based on the calculations above.\n this.render_options.flat_beam_offset = offset;\n }\n else if (stem_direction === Stem.DOWN && offset > flat_beam_offset) {\n this.render_options.flat_beam_offset = offset;\n }\n else if (stem_direction === Stem.UP && offset < flat_beam_offset) {\n this.render_options.flat_beam_offset = offset;\n }\n // for flat beams, the slope and y_shift are simply 0\n this.slope = 0;\n this.y_shift = 0;\n }\n /** Return the Beam y offset. */\n getBeamYToDraw() {\n const firstNote = this.notes[0];\n const firstStemTipY = firstNote.getStemExtents().topY;\n let beamY = firstStemTipY;\n // For flat beams, set the first and last Y to the offset, rather than\n // using the note's stem extents.\n if (this.render_options.flat_beams && this.render_options.flat_beam_offset) {\n beamY = this.render_options.flat_beam_offset;\n }\n return beamY;\n }\n /**\n * Create new stems for the notes in the beam, so that each stem\n * extends into the beams.\n */\n applyStemExtensions() {\n const { notes, slope, y_shift, stem_direction, beam_count, render_options: { show_stemlets, stemlet_extension, beam_width }, } = this;\n const firstNote = notes[0];\n const firstStemTipY = this.getBeamYToDraw();\n const firstStemX = firstNote.getStemX();\n for (let i = 0; i < notes.length; ++i) {\n const note = notes[i];\n const stem = note.getStem();\n if (stem) {\n const stemX = note.getStemX();\n const { topY: stemTipY } = note.getStemExtents();\n const beamedStemTipY = this.getSlopeY(stemX, firstStemX, firstStemTipY, slope) + y_shift;\n const preBeamExtension = stem.getExtension();\n const beamExtension = stem_direction === Stem.UP ? stemTipY - beamedStemTipY : beamedStemTipY - stemTipY;\n stem.setExtension(preBeamExtension + beamExtension);\n stem.adjustHeightForBeam();\n if (note.isRest() && show_stemlets) {\n const beamWidth = beam_width;\n const totalBeamWidth = (beam_count - 1) * beamWidth * 1.5 + beamWidth;\n stem.setVisibility(true).setStemlet(true, totalBeamWidth + stemlet_extension);\n }\n }\n }\n }\n /** Return upper level beam direction. */\n lookupBeamDirection(duration, prev_tick, tick, next_tick, noteIndex) {\n if (duration === '4') {\n return BEAM_LEFT;\n }\n const forcedBeamDirection = this.forcedPartialDirections[noteIndex];\n if (forcedBeamDirection)\n return forcedBeamDirection;\n const lookup_duration = `${Tables.durationToNumber(duration) / 2}`;\n const prev_note_gets_beam = prev_tick < Tables.durationToTicks(lookup_duration);\n const next_note_gets_beam = next_tick < Tables.durationToTicks(lookup_duration);\n const note_gets_beam = tick < Tables.durationToTicks(lookup_duration);\n if (prev_note_gets_beam && next_note_gets_beam && note_gets_beam) {\n return BEAM_BOTH;\n }\n else if (prev_note_gets_beam && !next_note_gets_beam && note_gets_beam) {\n return BEAM_LEFT;\n }\n else if (!prev_note_gets_beam && next_note_gets_beam && note_gets_beam) {\n return BEAM_RIGHT;\n }\n return this.lookupBeamDirection(lookup_duration, prev_tick, tick, next_tick, noteIndex);\n }\n /** Get the x coordinates for the beam lines of specific `duration`. */\n getBeamLines(duration) {\n const tick_of_duration = Tables.durationToTicks(duration);\n let beam_started = false;\n const beam_lines = [];\n let current_beam = undefined;\n const partial_beam_length = this.render_options.partial_beam_length;\n let previous_should_break = false;\n let tick_tally = 0;\n for (let i = 0; i < this.notes.length; ++i) {\n const note = this.notes[i];\n // See if we need to break secondary beams on this note.\n const ticks = note.getTicks().value();\n tick_tally += ticks;\n let should_break = false;\n // 8th note beams are always drawn.\n if (parseInt(duration, 10) >= 8) {\n // First, check to see if any indices were set up through breakSecondaryAt()\n should_break = this.break_on_indices.indexOf(i) !== -1;\n // If the secondary breaks were auto-configured in the render options,\n // handle that as well.\n if (this.render_options.secondary_break_ticks && tick_tally >= this.render_options.secondary_break_ticks) {\n tick_tally = 0;\n should_break = true;\n }\n }\n const note_gets_beam = note.getIntrinsicTicks() < tick_of_duration;\n const stem_x = note.getStemX() - Stem.WIDTH / 2;\n // Check to see if the next note in the group will get a beam at this\n // level. This will help to inform the partial beam logic below.\n const prev_note = this.notes[i - 1];\n const next_note = this.notes[i + 1];\n const next_note_gets_beam = next_note && next_note.getIntrinsicTicks() < tick_of_duration;\n const prev_note_gets_beam = prev_note && prev_note.getIntrinsicTicks() < tick_of_duration;\n const beam_alone = prev_note && next_note && note_gets_beam && !prev_note_gets_beam && !next_note_gets_beam;\n // const beam_alone = note_gets_beam && !prev_note_gets_beam && !next_note_gets_beam;\n if (note_gets_beam) {\n // This note gets a beam at the current level\n if (beam_started) {\n // We're currently in the middle of a beam. Just continue it on to\n // the stem X of the current note.\n current_beam = beam_lines[beam_lines.length - 1];\n current_beam.end = stem_x;\n // If a secondary beam break is set up, end the beam right now.\n if (should_break) {\n beam_started = false;\n if (next_note && !next_note_gets_beam && current_beam.end === undefined) {\n // This note gets a beam,.but the next one does not. This means\n // we need a partial pointing right.\n current_beam.end = current_beam.start - partial_beam_length;\n }\n }\n }\n else {\n // No beam started yet. Start a new one.\n current_beam = { start: stem_x, end: undefined };\n beam_started = true;\n if (beam_alone) {\n // previous and next beam exists and does not get a beam but current gets it.\n const prev_tick = prev_note.getIntrinsicTicks();\n const next_tick = next_note.getIntrinsicTicks();\n const tick = note.getIntrinsicTicks();\n const beam_direction = this.lookupBeamDirection(duration, prev_tick, tick, next_tick, i);\n if ([BEAM_LEFT, BEAM_BOTH].includes(beam_direction)) {\n current_beam.end = current_beam.start - partial_beam_length;\n }\n else {\n current_beam.end = current_beam.start + partial_beam_length;\n }\n }\n else if (!next_note_gets_beam) {\n // The next note doesn't get a beam. Draw a partial.\n if ((previous_should_break || i === 0) && next_note) {\n // This is the first note (but not the last one), or it is\n // following a secondary break. Draw a partial to the right.\n current_beam.end = current_beam.start + partial_beam_length;\n }\n else {\n // By default, draw a partial to the left.\n current_beam.end = current_beam.start - partial_beam_length;\n }\n }\n else if (should_break) {\n // This note should have a secondary break after it. Even though\n // we just started a beam, it needs to end immediately.\n current_beam.end = current_beam.start - partial_beam_length;\n beam_started = false;\n }\n beam_lines.push(current_beam);\n }\n }\n else {\n // The current note does not get a beam.\n beam_started = false;\n }\n // Store the secondary break flag to inform the partial beam logic in\n // the next iteration of the loop.\n previous_should_break = should_break;\n }\n // Add a partial beam pointing left if this is the last note in the group\n const last_beam = beam_lines[beam_lines.length - 1];\n if (last_beam && last_beam.end === undefined) {\n last_beam.end = last_beam.start - partial_beam_length;\n }\n return beam_lines;\n }\n /** Render the stems for each note. */\n drawStems(ctx) {\n this.notes.forEach((note) => {\n const stem = note.getStem();\n if (stem) {\n const stem_x = note.getStemX();\n stem.setNoteHeadXBounds(stem_x, stem_x);\n stem.setContext(ctx).draw();\n }\n }, this);\n }\n // Render the beam lines\n drawBeamLines(ctx) {\n const valid_beam_durations = ['4', '8', '16', '32', '64'];\n const firstNote = this.notes[0];\n let beamY = this.getBeamYToDraw();\n const firstStemX = firstNote.getStemX();\n const beamThickness = this.render_options.beam_width * this.stem_direction;\n // Draw the beams.\n for (let i = 0; i < valid_beam_durations.length; ++i) {\n const duration = valid_beam_durations[i];\n const beamLines = this.getBeamLines(duration);\n for (let j = 0; j < beamLines.length; ++j) {\n const beam_line = beamLines[j];\n const startBeamX = beam_line.start;\n const startBeamY = this.getSlopeY(startBeamX, firstStemX, beamY, this.slope);\n const lastBeamX = beam_line.end;\n if (lastBeamX) {\n const lastBeamY = this.getSlopeY(lastBeamX, firstStemX, beamY, this.slope);\n ctx.openGroup('beam', this.getAttribute('id'));\n ctx.beginPath();\n ctx.moveTo(startBeamX, startBeamY);\n ctx.lineTo(startBeamX, startBeamY + beamThickness);\n ctx.lineTo(lastBeamX + 1, lastBeamY + beamThickness);\n ctx.lineTo(lastBeamX + 1, lastBeamY);\n ctx.closePath();\n ctx.fill();\n ctx.closeGroup();\n }\n else {\n throw new RuntimeError('NoLastBeamX', 'lastBeamX undefined.');\n }\n }\n beamY += beamThickness * 1.5;\n }\n }\n /** Pre-format the beam. */\n preFormat() {\n return this;\n }\n /**\n * Post-format the beam. This can only be called after\n * the notes in the beam have both `x` and `y` values. ie: they've\n * been formatted and have staves.\n */\n postFormat() {\n if (this.postFormatted)\n return;\n // Calculate a smart slope if we're not forcing the beams to be flat.\n if (isTabNote(this.notes[0]) || this.render_options.flat_beams) {\n this.calculateFlatSlope();\n }\n else {\n this.calculateSlope();\n }\n this.applyStemExtensions();\n this.postFormatted = true;\n }\n /** Render the beam to the canvas context */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n if (this.unbeamable)\n return;\n if (!this.postFormatted) {\n this.postFormat();\n }\n this.drawStems(ctx);\n this.applyStyle();\n this.drawBeamLines(ctx);\n this.restoreStyle();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\n// MIT License\nimport { Clef } from './clef';\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\n/** ClefNote implements clef annotations in measures. */\nexport class ClefNote extends Note {\n constructor(type, size, annotation) {\n super({ duration: 'b' });\n this.type = type;\n this.clef_obj = new Clef(type, size, annotation);\n this.clef = this.clef_obj.clef;\n this.glyph = new Glyph(this.clef.code, this.clef.point);\n this.setWidth(this.glyph.getMetrics().width);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.ClefNote;\n }\n /** Set clef type, size and annotation. */\n setType(type, size, annotation) {\n this.type = type;\n this.clef_obj = new Clef(type, size, annotation);\n this.clef = this.clef_obj.clef;\n this.glyph = new Glyph(this.clef.code, this.clef.point);\n this.setWidth(this.glyph.getMetrics().width);\n return this;\n }\n /** Get associated clef. */\n getClef() {\n return this.clef;\n }\n /** Set associated context. */\n setContext(context) {\n super.setContext(context);\n this.glyph.setContext(this.getContext());\n return this;\n }\n /** Get bounding box. */\n getBoundingBox() {\n return super.getBoundingBox();\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n /** Render clef note. */\n draw() {\n var _a;\n const stave = this.checkStave();\n if (!this.glyph.getContext()) {\n this.glyph.setContext(this.getContext());\n }\n this.setRendered();\n const abs_x = this.getAbsoluteX();\n this.glyph.setStave(stave);\n this.glyph.setYShift(stave.getYForLine((_a = this.clef.line) !== null && _a !== void 0 ? _a : 0) - stave.getYForGlyphs());\n this.glyph.renderToStave(abs_x);\n // If the Vex.Flow.Clef has an annotation, such as 8va, draw it.\n if (this.clef_obj.annotation !== undefined) {\n const attachment = new Glyph(this.clef_obj.annotation.code, this.clef_obj.annotation.point);\n if (!attachment.getContext()) {\n attachment.setContext(this.getContext());\n }\n attachment.setStave(stave);\n attachment.setYShift(stave.getYForLine(this.clef_obj.annotation.line) - stave.getYForGlyphs());\n attachment.setXShift(this.clef_obj.annotation.x_shift);\n attachment.renderToStave(abs_x);\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// This file implements the `Crescendo` object which draws crescendos and\n// decrescendo dynamics markings. A `Crescendo` is initialized with a\n// duration and formatted as part of a `Voice` like any other `Note`\n// type in VexFlow. This object would most likely be formatted in a Voice\n// with `TextNotes` - which are used to represent other dynamics markings.\nimport { Note } from './note';\nimport { TickContext } from './tickcontext';\nimport { Category } from './typeguard';\nimport { log } from './util';\n// To enable logging for this class. Set `Vex.Flow.Crescendo.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (Crescendo.DEBUG)\n log('Vex.Flow.Crescendo', args);\n}\n// Private helper to draw the hairpin\nfunction renderHairpin(ctx, params) {\n const begin_x = params.begin_x;\n const end_x = params.end_x;\n const y = params.y;\n const half_height = params.height / 2;\n ctx.beginPath();\n if (params.reverse) {\n ctx.moveTo(begin_x, y - half_height);\n ctx.lineTo(end_x, y);\n ctx.lineTo(begin_x, y + half_height);\n }\n else {\n ctx.moveTo(end_x, y - half_height);\n ctx.lineTo(begin_x, y);\n ctx.lineTo(end_x, y + half_height);\n }\n ctx.stroke();\n ctx.closePath();\n}\nexport class Crescendo extends Note {\n // Initialize the crescendo's properties\n constructor(noteStruct) {\n super(noteStruct);\n this.options = {\n // Extensions to the length of the crescendo on either side\n extend_left: 0,\n extend_right: 0,\n // Vertical shift\n y_shift: 0,\n };\n // Whether the object is a decrescendo\n this.decrescendo = false;\n // The staff line to be placed on\n this.line = noteStruct.line || 0;\n // The height at the open end of the cresc/decresc\n this.height = 15;\n }\n /** Crescendo category string. */\n static get CATEGORY() {\n return Category.Crescendo;\n }\n // Set the line to center the element on\n setLine(line) {\n this.line = line;\n return this;\n }\n // Set the full height at the open end\n setHeight(height) {\n this.height = height;\n return this;\n }\n // Set whether the sign should be a descresendo by passing a bool\n // to `decresc`\n setDecrescendo(decresc) {\n this.decrescendo = decresc;\n return this;\n }\n // Preformat the note\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n // Render the Crescendo object onto the canvas\n draw() {\n const ctx = this.checkContext();\n const stave = this.checkStave();\n this.setRendered();\n const tick_context = this.getTickContext();\n const next_context = TickContext.getNextContext(tick_context);\n const begin_x = this.getAbsoluteX();\n const end_x = next_context ? next_context.getX() : stave.getX() + stave.getWidth();\n const y = stave.getYForLine(this.line + -3) + 1;\n L('Drawing ', this.decrescendo ? 'decrescendo ' : 'crescendo ', this.height, 'x', begin_x - end_x);\n renderHairpin(ctx, {\n begin_x: begin_x - this.options.extend_left,\n end_x: end_x + this.options.extend_right,\n y: y + this.options.y_shift,\n height: this.height,\n reverse: this.decrescendo,\n });\n }\n}\nCrescendo.DEBUG = false;\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements curves (for slurs)\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport var CurvePosition;\n(function (CurvePosition) {\n CurvePosition[CurvePosition[\"NEAR_HEAD\"] = 1] = \"NEAR_HEAD\";\n CurvePosition[CurvePosition[\"NEAR_TOP\"] = 2] = \"NEAR_TOP\";\n})(CurvePosition || (CurvePosition = {}));\nexport class Curve extends Element {\n // from: Start note\n // to: End note\n // options:\n // cps: List of control points\n // x_shift: pixels to shift\n // y_shift: pixels to shift\n constructor(from, to, options) {\n super();\n this.render_options = Object.assign({ thickness: 2, x_shift: 0, y_shift: 10, position: CurvePosition.NEAR_HEAD, position_end: CurvePosition.NEAR_HEAD, invert: false, cps: [\n { x: 0, y: 10 },\n { x: 0, y: 10 },\n ] }, options);\n this.from = from;\n this.to = to;\n }\n static get CATEGORY() {\n return Category.Curve;\n }\n static get Position() {\n return CurvePosition;\n }\n static get PositionString() {\n return {\n nearHead: CurvePosition.NEAR_HEAD,\n nearTop: CurvePosition.NEAR_TOP,\n };\n }\n setNotes(from, to) {\n if (!from && !to) {\n throw new RuntimeError('BadArguments', 'Curve needs to have either `from` or `to` set.');\n }\n this.from = from;\n this.to = to;\n return this;\n }\n /**\n * @return {boolean} Returns true if this is a partial bar.\n */\n isPartial() {\n return !this.from || !this.to;\n }\n renderCurve(params) {\n const ctx = this.checkContext();\n const x_shift = this.render_options.x_shift;\n const y_shift = this.render_options.y_shift * params.direction;\n const first_x = params.first_x + x_shift;\n const first_y = params.first_y + y_shift;\n const last_x = params.last_x - x_shift;\n const last_y = params.last_y + y_shift;\n const thickness = this.render_options.thickness;\n const cps = this.render_options.cps;\n const { x: cp0x, y: cp0y } = cps[0];\n const { x: cp1x, y: cp1y } = cps[1];\n const cp_spacing = (last_x - first_x) / (cps.length + 2);\n ctx.beginPath();\n ctx.moveTo(first_x, first_y);\n ctx.bezierCurveTo(first_x + cp_spacing + cp0x, first_y + cp0y * params.direction, last_x - cp_spacing + cp1x, last_y + cp1y * params.direction, last_x, last_y);\n ctx.bezierCurveTo(last_x - cp_spacing + cp1x, last_y + (cp1y + thickness) * params.direction, first_x + cp_spacing + cp0x, first_y + (cp0y + thickness) * params.direction, first_x, first_y);\n ctx.stroke();\n ctx.closePath();\n ctx.fill();\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const first_note = this.from;\n const last_note = this.to;\n let first_x;\n let last_x;\n let first_y;\n let last_y;\n let stem_direction = 0;\n let metric = 'baseY';\n let end_metric = 'baseY';\n function getPosition(position) {\n return typeof position === 'string' ? Curve.PositionString[position] : position;\n }\n const position = getPosition(this.render_options.position);\n const position_end = getPosition(this.render_options.position_end);\n if (position === CurvePosition.NEAR_TOP) {\n metric = 'topY';\n end_metric = 'topY';\n }\n if (position_end === CurvePosition.NEAR_HEAD) {\n end_metric = 'baseY';\n }\n else if (position_end === CurvePosition.NEAR_TOP) {\n end_metric = 'topY';\n }\n if (first_note) {\n first_x = first_note.getTieRightX();\n stem_direction = first_note.getStemDirection();\n first_y = first_note.getStemExtents()[metric];\n }\n else {\n const stave = last_note.checkStave();\n first_x = stave.getTieStartX();\n first_y = last_note.getStemExtents()[metric];\n }\n if (last_note) {\n last_x = last_note.getTieLeftX();\n stem_direction = last_note.getStemDirection();\n last_y = last_note.getStemExtents()[end_metric];\n }\n else {\n const stave = first_note.checkStave();\n last_x = stave.getTieEndX();\n last_y = first_note.getStemExtents()[end_metric];\n }\n this.renderCurve({\n first_x,\n last_x,\n first_y,\n last_y,\n direction: stem_direction * (this.render_options.invert === true ? -1 : 1),\n });\n return true;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// A generic text parsing class for VexFlow.\nimport { log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.Parser.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (Parser.DEBUG)\n log('Vex.Flow.Parser', args);\n}\nconst NO_ERROR_POS = -1;\n// Converts parser results into an easy to reference list that can be\n// used in triggers. This function returns:\n// - nested array in which the leaf elements are string or null\n// - string (including empty strings)\n// - null\nfunction flattenMatches(r) {\n if ('matchedString' in r)\n return r.matchedString; // string\n if ('results' in r)\n return flattenMatches(r.results);\n const results = r;\n if (results.length === 1)\n return flattenMatches(results[0]);\n if (results.length === 0)\n return null;\n return results.map(flattenMatches); // nested array\n}\n// This is the base parser class. Given an arbitrary context-free grammar, it\n// can parse any line and execute code when specific rules are met (e.g.,\n// when a string is terminated.)\nexport class Parser {\n // For an example of a simple grammar, take a look at tests/parser_tests.ts or\n // the EasyScore grammar in easyscore.ts.\n constructor(grammar) {\n this.grammar = grammar;\n this.line = '';\n this.pos = 0;\n this.errorPos = NO_ERROR_POS;\n }\n // Parse `line` using current grammar. Returns `{success: true}` if the\n // line parsed correctly, otherwise returns `{success: false, errorPos: N}`\n // where `errorPos` is the location of the error in the string.\n parse(line) {\n this.line = line;\n this.pos = 0;\n this.errorPos = NO_ERROR_POS;\n const result = this.expect(this.grammar.begin());\n result.errorPos = this.errorPos;\n return result;\n }\n matchFail(returnPos) {\n if (this.errorPos === NO_ERROR_POS)\n this.errorPos = this.pos;\n this.pos = returnPos;\n }\n matchSuccess() {\n this.errorPos = NO_ERROR_POS;\n }\n // Look for `token` in this.line[this.pos], and return success\n // if one is found. `token` is specified as a regular expression.\n matchToken(token, noSpace = false) {\n const regexp = noSpace ? new RegExp('^((' + token + '))') : new RegExp('^((' + token + ')\\\\s*)');\n const workingLine = this.line.slice(this.pos);\n const result = workingLine.match(regexp);\n if (result !== null) {\n return {\n success: true,\n matchedString: result[2],\n incrementPos: result[1].length,\n pos: this.pos,\n };\n }\n else {\n return { success: false, pos: this.pos };\n }\n }\n // Execute rule to match a sequence of tokens (or rules). If `maybe` is\n // set, then return success even if the token is not found, but reset\n // the position before exiting.\n // TODO: expectOne(...) is never called with the `maybe` parameter.\n expectOne(rule, maybe = false) {\n const results = [];\n const pos = this.pos;\n let allMatches = true;\n let oneMatch = false;\n maybe = maybe === true || rule.maybe === true;\n // Execute all sub rules in sequence.\n if (rule.expect) {\n for (const next of rule.expect) {\n const localPos = this.pos;\n const result = this.expect(next);\n // If `rule.or` is set, then return success if any one\n // of the subrules match, else all subrules must match.\n if (result.success) {\n results.push(result);\n oneMatch = true;\n if (rule.or)\n break;\n }\n else {\n allMatches = false;\n if (!rule.or) {\n this.pos = localPos;\n break;\n }\n }\n }\n }\n const gotOne = (rule.or && oneMatch) || allMatches;\n const success = gotOne || maybe === true;\n const numMatches = gotOne ? 1 : 0;\n if (maybe && !gotOne)\n this.pos = pos;\n if (success) {\n this.matchSuccess();\n }\n else {\n this.matchFail(pos);\n }\n return { success, results, numMatches };\n }\n // Try to match multiple (one or more) instances of the rule. If `maybe` is set,\n // then a failed match is also a success (but the position is reset).\n expectOneOrMore(rule, maybe = false) {\n const results = [];\n const pos = this.pos;\n let numMatches = 0;\n let more = true;\n do {\n const result = this.expectOne(rule);\n if (result.success && result.results) {\n numMatches++;\n results.push(result.results);\n }\n else {\n more = false;\n }\n } while (more);\n const success = numMatches > 0 || maybe === true;\n if (maybe && !(numMatches > 0))\n this.pos = pos;\n if (success) {\n this.matchSuccess();\n }\n else {\n this.matchFail(pos);\n }\n return { success, results, numMatches };\n }\n // Match zero or more instances of `rule`. Offloads to `expectOneOrMore`.\n expectZeroOrMore(rule) {\n return this.expectOneOrMore(rule, true);\n }\n // Execute the rule produced by the provided `rules` function. This\n // offloads to one of the above matchers and consolidates the results. It is also\n // responsible for executing any code triggered by the rule (in `rule.run`.)\n expect(ruleFunc) {\n L('Evaluating rule function:', ruleFunc);\n if (!ruleFunc) {\n throw new RuntimeError('Invalid rule function');\n }\n let result;\n // Get rule from Grammar class.\n // expect(...) handles both lexing & parsing:\n // - lexer rules produce tokens.\n // - parser rules produce expressions which may trigger code via the\n // { run: () => ... } trigger functions in easyscore.ts.\n // These functions build the VexFlow objects that are displayed on screen.\n const rule = ruleFunc.bind(this.grammar)();\n if (rule.token) {\n // A lexer rule has a `token` property.\n // Base case: parse the regex and throw an error if the\n // line doesn't match.\n result = this.matchToken(rule.token, rule.noSpace === true);\n if (result.success) {\n // Token match! Update position and throw away parsed portion\n // of string.\n this.pos += result.incrementPos;\n }\n }\n else if (rule.expect) {\n // A parser rule has an `expect` property.\n if (rule.oneOrMore) {\n result = this.expectOneOrMore(rule);\n }\n else if (rule.zeroOrMore) {\n result = this.expectZeroOrMore(rule);\n }\n else {\n result = this.expectOne(rule);\n }\n }\n else {\n L(rule);\n throw new RuntimeError('Bad grammar! No `token` or `expect` property ' + rule);\n }\n // If there's a trigger attached to this rule, then run it.\n // Make the matches accessible through `state.matches` in the\n // `run: (state) => ...` trigger.\n const matches = [];\n result.matches = matches;\n if (result.results) {\n result.results.forEach((r) => matches.push(flattenMatches(r)));\n }\n if (rule.run && result.success) {\n rule.run({ matches });\n }\n return result;\n }\n}\nParser.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Articulation } from './articulation';\nimport { Dot } from './dot';\nimport { FretHandFinger } from './frethandfinger';\nimport { Music } from './music';\nimport { Parser } from './parser';\nimport { Stem } from './stem';\nimport { defined, log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.EasyScore.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (EasyScore.DEBUG)\n log('Vex.Flow.EasyScore', args);\n}\nexport class EasyScoreGrammar {\n constructor(builder) {\n this.builder = builder;\n }\n begin() {\n return this.LINE;\n }\n LINE() {\n return {\n expect: [this.PIECE, this.PIECES, this.EOL],\n };\n }\n PIECE() {\n return {\n expect: [this.CHORDORNOTE, this.PARAMS],\n run: () => this.builder.commitPiece(),\n };\n }\n PIECES() {\n return {\n expect: [this.COMMA, this.PIECE],\n zeroOrMore: true,\n };\n }\n PARAMS() {\n return {\n expect: [this.DURATION, this.TYPE, this.DOTS, this.OPTS],\n };\n }\n CHORDORNOTE() {\n return {\n expect: [this.CHORD, this.SINGLENOTE],\n or: true,\n };\n }\n CHORD() {\n return {\n expect: [this.LPAREN, this.NOTES, this.RPAREN],\n // eslint-disable-next-line\n run: (state) => this.builder.addChord(state.matches[1]),\n };\n }\n NOTES() {\n return {\n expect: [this.NOTE],\n oneOrMore: true,\n };\n }\n NOTE() {\n return {\n expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE],\n };\n }\n SINGLENOTE() {\n return {\n expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE],\n run: (state) => {\n // eslint-disable-next-line\n const s = state;\n this.builder.addSingleNote(s.matches[0], s.matches[1], s.matches[2]);\n },\n };\n }\n ACCIDENTAL() {\n return {\n expect: [this.MICROTONES, this.ACCIDENTALS],\n maybe: true,\n or: true,\n };\n }\n DOTS() {\n return {\n expect: [this.DOT],\n zeroOrMore: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteDots(state.matches),\n };\n }\n TYPE() {\n return {\n expect: [this.SLASH, this.MAYBESLASH, this.TYPES],\n maybe: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteType(state.matches[2]),\n };\n }\n DURATION() {\n return {\n expect: [this.SLASH, this.DURATIONS],\n maybe: true,\n // eslint-disable-next-line\n run: (state) => this.builder.setNoteDuration(state.matches[1]),\n };\n }\n OPTS() {\n return {\n expect: [this.LBRACKET, this.KEYVAL, this.KEYVALS, this.RBRACKET],\n maybe: true,\n };\n }\n KEYVALS() {\n return {\n expect: [this.COMMA, this.KEYVAL],\n zeroOrMore: true,\n };\n }\n KEYVAL() {\n const unquote = (str) => str.slice(1, -1);\n return {\n expect: [this.KEY, this.EQUALS, this.VAL],\n // eslint-disable-next-line\n run: (state) => this.builder.addNoteOption(state.matches[0], unquote(state.matches[2])),\n };\n }\n VAL() {\n return {\n expect: [this.SVAL, this.DVAL],\n or: true,\n };\n }\n KEY() {\n return { token: '[a-zA-Z][a-zA-Z0-9]*' };\n }\n DVAL() {\n return { token: '[\"][^\"]*[\"]' };\n }\n SVAL() {\n return { token: \"['][^']*[']\" };\n }\n NOTENAME() {\n return { token: '[a-gA-G]' };\n }\n OCTAVE() {\n return { token: '[0-9]+' };\n }\n ACCIDENTALS() {\n return { token: 'bb|b|##|#|n' };\n }\n MICROTONES() {\n return { token: 'bbs|bss|bs|db|d|\\\\+\\\\+-|\\\\+-|\\\\+\\\\+|\\\\+|k|o' };\n }\n DURATIONS() {\n return { token: '[0-9whq]+' };\n }\n TYPES() {\n return { token: '[rRsSmMhHgG]' };\n }\n LPAREN() {\n return { token: '[(]' };\n }\n RPAREN() {\n return { token: '[)]' };\n }\n COMMA() {\n return { token: '[,]' };\n }\n DOT() {\n return { token: '[.]' };\n }\n SLASH() {\n return { token: '[/]' };\n }\n MAYBESLASH() {\n return { token: '[/]?' };\n }\n EQUALS() {\n return { token: '[=]' };\n }\n LBRACKET() {\n return { token: '\\\\[' };\n }\n RBRACKET() {\n return { token: '\\\\]' };\n }\n EOL() {\n return { token: '$' };\n }\n}\nexport class Piece {\n constructor(duration) {\n this.chord = [];\n this.dots = 0;\n this.options = {};\n this.duration = duration;\n }\n}\nexport class Builder {\n constructor(factory) {\n this.commitHooks = [];\n this.factory = factory;\n this.reset();\n }\n reset(options) {\n this.options = Object.assign({ stem: 'auto', clef: 'treble' }, options);\n this.elements = { notes: [], accidentals: [] };\n this.rollingDuration = '8';\n this.resetPiece();\n }\n getFactory() {\n return this.factory;\n }\n getElements() {\n return this.elements;\n }\n addCommitHook(commitHook) {\n this.commitHooks.push(commitHook);\n }\n resetPiece() {\n L('resetPiece');\n this.piece = new Piece(this.rollingDuration);\n }\n setNoteDots(dots) {\n L('setNoteDots:', dots);\n if (dots)\n this.piece.dots = dots.length;\n }\n setNoteDuration(duration) {\n L('setNoteDuration:', duration);\n this.rollingDuration = this.piece.duration = duration || this.rollingDuration;\n }\n setNoteType(type) {\n L('setNoteType:', type);\n if (type)\n this.piece.type = type;\n }\n addNoteOption(key, value) {\n L('addNoteOption: key:', key, 'value:', value);\n this.piece.options[key] = value;\n }\n addNote(key, accid, octave) {\n L('addNote:', key, accid, octave);\n this.piece.chord.push({\n key: key,\n accid,\n octave,\n });\n }\n addSingleNote(key, accid, octave) {\n L('addSingleNote:', key, accid, octave);\n this.addNote(key, accid, octave);\n }\n // notes is an array with 3 entries\n addChord(notes) {\n L('startChord');\n if (typeof notes[0] !== 'object') {\n this.addSingleNote(notes[0]);\n }\n else {\n notes.forEach((n) => {\n if (n)\n this.addNote(...n); // n => [string, string | null, string]\n });\n }\n L('endChord');\n }\n commitPiece() {\n L('commitPiece');\n const { factory } = this;\n if (!factory)\n return;\n const options = Object.assign(Object.assign({}, this.options), this.piece.options);\n // reset() sets this.options.stem & this.options.clef but we check to make sure nothing has changed.\n // e.g., auto | up | down\n const stem = defined(options.stem, 'BadArguments', 'options.stem is not defined').toLowerCase();\n // e.g., treble | bass\n const clef = defined(options.clef, 'BadArguments', 'options.clef is not defined').toLowerCase();\n const { chord, duration, dots, type } = this.piece;\n // Create a string[] that will be assigned to the .keys property of the StaveNote.\n // Each string in the array represents a note pitch and is of the form: {NoteName}{Accidental}/{Octave}\n // Only standard accidentals are included in the .keys property. Microtonal accidentals are not included.\n const standardAccidentals = Music.accidentals;\n const keys = chord.map((notePiece) => {\n var _a;\n return notePiece.key +\n (standardAccidentals.includes((_a = notePiece.accid) !== null && _a !== void 0 ? _a : '') ? notePiece.accid : '') +\n '/' +\n notePiece.octave;\n });\n const auto_stem = stem === 'auto'; // StaveNoteStruct expects the underscore & lowercase.\n // Build a GhostNote or StaveNote using the information we gathered.\n const note = (type === null || type === void 0 ? void 0 : type.toLowerCase()) == 'g'\n ? factory.GhostNote({ duration, dots })\n : factory.StaveNote({ keys, duration, dots, type, clef, auto_stem });\n if (!auto_stem)\n note.setStemDirection(stem === 'up' ? Stem.UP : Stem.DOWN);\n // Attach accidentals.\n const accidentals = [];\n chord.forEach((notePiece, index) => {\n const accid = notePiece.accid;\n if (typeof accid === 'string') {\n const accidental = factory.Accidental({ type: accid });\n note.addModifier(accidental, index);\n accidentals.push(accidental);\n }\n else {\n accidentals.push(undefined);\n }\n });\n // Attach dots.\n for (let i = 0; i < dots; i++)\n Dot.buildAndAttach([note], { all: true });\n this.commitHooks.forEach((commitHook) => commitHook(options, note, this));\n this.elements.notes.push(note);\n this.elements.accidentals.push(accidentals);\n this.resetPiece();\n }\n}\n/**\n * Commit hook used by EasyScore.setOptions().\n */\nfunction setId(options, note) {\n if (options.id === undefined)\n return;\n note.setAttribute('id', options.id);\n}\n// Used by setClass() below.\nconst commaSeparatedRegex = /\\s*,\\s*/;\n/**\n * Commit hook used by EasyScore.setOptions().\n */\nfunction setClass(options, note) {\n if (options.class === undefined)\n return;\n options.class.split(commaSeparatedRegex).forEach((className) => note.addClass(className));\n}\n/**\n * EasyScore implements a parser for a simple language to generate VexFlow objects.\n */\nexport class EasyScore {\n constructor(options = {}) {\n this.defaults = {\n clef: 'treble',\n time: '4/4',\n stem: 'auto',\n };\n this.setOptions(options);\n }\n /**\n * Set the score defaults.\n * clef must be set appropriately to avoid errors when adding Staves.\n * @param defaults.clef default clef ( treble | bass ...) see {@link Clef.types}\n * @param defaults.time default time signature ( 4/4 | 9/8 ...)\n * @param defaults.stem default stem arrangement (auto | up | down)\n * @returns this\n */\n set(defaults) {\n this.defaults = Object.assign(Object.assign({}, this.defaults), defaults);\n return this;\n }\n /**\n * @param options.factory is required.\n * @returns this\n */\n setOptions(options) {\n var _a, _b;\n // eslint-disable-next-line\n const factory = options.factory; // ! operator, because options.factory was set in Factory.EasyScore().\n const builder = (_a = options.builder) !== null && _a !== void 0 ? _a : new Builder(factory);\n this.options = Object.assign(Object.assign({ commitHooks: [setId, setClass, Articulation.easyScoreHook, FretHandFinger.easyScoreHook], throwOnError: false }, options), { factory,\n builder });\n this.factory = factory;\n this.builder = builder;\n this.grammar = new EasyScoreGrammar(this.builder);\n this.parser = new Parser(this.grammar);\n (_b = this.options.commitHooks) === null || _b === void 0 ? void 0 : _b.forEach((commitHook) => this.addCommitHook(commitHook));\n return this;\n }\n setContext(context) {\n this.factory.setContext(context);\n return this;\n }\n parse(line, options = {}) {\n this.builder.reset(options);\n const result = this.parser.parse(line);\n if (!result.success && this.options.throwOnError) {\n L(result);\n throw new RuntimeError('Error parsing line: ' + line);\n }\n return result;\n }\n beam(notes, options) {\n this.factory.Beam({ notes, options });\n return notes;\n }\n tuplet(notes, options) {\n this.factory.Tuplet({ notes, options });\n return notes;\n }\n notes(line, options = {}) {\n options = Object.assign({ clef: this.defaults.clef, stem: this.defaults.stem }, options);\n this.parse(line, options);\n return this.builder.getElements().notes;\n }\n voice(notes, options = {}) {\n options = Object.assign({ time: this.defaults.time }, options);\n return this.factory.Voice(options).addTickables(notes);\n }\n addCommitHook(commitHook) {\n this.builder.addCommitHook(commitHook);\n }\n}\nEasyScore.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\nimport { StemmableNote } from './stemmablenote';\nimport { Category, isAnnotation } from './typeguard';\nimport { RuntimeError } from './util';\nconst ERROR_MSG = 'Ghost note must have valid initialization data to identify duration.';\nexport class GhostNote extends StemmableNote {\n static get CATEGORY() {\n return Category.GhostNote;\n }\n constructor(parameter) {\n if (!parameter) {\n throw new RuntimeError('BadArguments', ERROR_MSG);\n }\n let noteStruct;\n if (typeof parameter === 'string') {\n // Preserve backwards-compatibility\n noteStruct = { duration: parameter };\n }\n else if (typeof parameter === 'object') {\n noteStruct = parameter;\n }\n else {\n throw new RuntimeError('BadArguments', ERROR_MSG);\n }\n super(noteStruct);\n // Note properties\n this.setWidth(0);\n }\n /**\n * @returns true if this note is a type of rest. Rests don't have pitches, but take up space in the score.\n */\n isRest() {\n return true;\n }\n setStave(stave) {\n super.setStave(stave);\n return this;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n draw() {\n // Draw Annotations\n this.setRendered();\n for (let i = 0; i < this.modifiers.length; ++i) {\n const modifier = this.modifiers[i];\n if (isAnnotation(modifier)) {\n modifier.setContext(this.getContext());\n modifier.drawWithStyle();\n }\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Note } from './note';\nimport { Category } from './typeguard';\nexport class GlyphNote extends Note {\n constructor(glyph, noteStruct, options) {\n super(noteStruct);\n this.options = Object.assign({ ignoreTicks: false, line: 2 }, options);\n // Note properties\n this.ignore_ticks = this.options.ignoreTicks;\n if (glyph) {\n this.setGlyph(glyph);\n }\n }\n static get CATEGORY() {\n return Category.GlyphNote;\n }\n setGlyph(glyph) {\n this.glyph = glyph;\n this.setWidth(this.glyph.getMetrics().width);\n return this;\n }\n getBoundingBox() {\n return this.glyph.getBoundingBox();\n }\n preFormat() {\n if (!this.preFormatted && this.modifierContext) {\n this.modifierContext.preFormat();\n }\n this.preFormatted = true;\n return this;\n }\n drawModifiers() {\n const ctx = this.checkContext();\n for (let i = 0; i < this.modifiers.length; i++) {\n const modifier = this.modifiers[i];\n modifier.setContext(ctx);\n modifier.drawWithStyle();\n }\n }\n draw() {\n const stave = this.checkStave();\n const ctx = stave.checkContext();\n this.setRendered();\n ctx.openGroup('glyphNote', this.getAttribute('id'));\n // Context is set when setStave is called on Note\n const glyph = this.glyph;\n if (!glyph.getContext()) {\n glyph.setContext(ctx);\n }\n glyph.setStave(stave);\n glyph.setYShift(stave.getYForLine(this.options.line) - stave.getYForGlyphs());\n const x = this.isCenterAligned() ? this.getAbsoluteX() - this.getWidth() / 2 : this.getAbsoluteX();\n glyph.renderToStave(x);\n this.drawModifiers();\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { StaveNote } from './stavenote';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class GraceNote extends StaveNote {\n constructor(noteStruct) {\n super(Object.assign({ glyph_font_scale: Tables.NOTATION_FONT_SCALE * GraceNote.SCALE, stroke_px: GraceNote.LEDGER_LINE_OFFSET }, noteStruct));\n this.slash = noteStruct.slash || false;\n this.slur = true;\n this.buildNoteHeads();\n this.width = 3;\n }\n static get CATEGORY() {\n return Category.GraceNote;\n }\n static get LEDGER_LINE_OFFSET() {\n return 2;\n }\n static get SCALE() {\n return 0.66;\n }\n getStemExtension() {\n if (this.stem_extension_override) {\n return this.stem_extension_override;\n }\n const glyph = this.getGlyph();\n if (glyph) {\n let ret = super.getStemExtension();\n if (glyph.stem) {\n const staveNoteScale = this.getStaveNoteScale();\n ret = (Stem.HEIGHT + ret) * staveNoteScale - Stem.HEIGHT;\n }\n return ret;\n }\n return 0;\n }\n getStaveNoteScale() {\n return this.render_options.glyph_font_scale / Tables.NOTATION_FONT_SCALE;\n }\n draw() {\n super.draw();\n this.setRendered();\n const stem = this.stem;\n if (this.slash && stem) {\n const staveNoteScale = this.getStaveNoteScale();\n // some magic numbers are based on the staveNoteScale 0.66.\n const offsetScale = staveNoteScale / 0.66;\n let slashBBox = undefined;\n const beam = this.beam;\n if (beam) {\n // FIXME: should render slash after beam?\n if (!beam.postFormatted) {\n beam.postFormat();\n }\n slashBBox = this.calcBeamedNotesSlashBBox(8 * offsetScale, 8 * offsetScale, {\n stem: 6 * offsetScale,\n beam: 5 * offsetScale,\n });\n }\n else {\n const stem_direction = this.getStemDirection();\n const noteHeadBounds = this.getNoteHeadBounds();\n const noteStemHeight = stem.getHeight();\n let x = this.getAbsoluteX();\n let y = stem_direction === Stem.DOWN\n ? noteHeadBounds.y_top - noteStemHeight\n : noteHeadBounds.y_bottom - noteStemHeight;\n const defaultStemExtention = stem_direction === Stem.DOWN ? this.glyph.stem_down_extension : this.glyph.stem_up_extension;\n let defaultOffsetY = Tables.STEM_HEIGHT;\n defaultOffsetY -= defaultOffsetY / 2.8;\n defaultOffsetY += defaultStemExtention;\n y += defaultOffsetY * staveNoteScale * stem_direction;\n const offsets = stem_direction === Stem.UP\n ? {\n x1: 1,\n y1: 0,\n x2: 13,\n y2: -9,\n }\n : {\n x1: -4,\n y1: 1,\n x2: 13,\n y2: 9,\n };\n x += offsets.x1 * offsetScale;\n y += offsets.y1 * offsetScale;\n slashBBox = {\n x1: x,\n y1: y,\n x2: x + offsets.x2 * offsetScale,\n y2: y + offsets.y2 * offsetScale,\n };\n }\n // FIXME: avoid staff lines, ledger lines or others.\n const ctx = this.checkContext();\n ctx.save();\n ctx.setLineWidth(1 * offsetScale); // FIXME: use more appropriate value.\n ctx.beginPath();\n ctx.moveTo(slashBBox.x1, slashBBox.y1);\n ctx.lineTo(slashBBox.x2, slashBBox.y2);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n }\n }\n calcBeamedNotesSlashBBox(slashStemOffset, slashBeamOffset, protrusions) {\n const beam = this.beam;\n if (!beam)\n throw new RuntimeError('NoBeam', \"Can't calculate without a beam.\");\n const beam_slope = beam.slope;\n const isBeamEndNote = beam.notes[beam.notes.length - 1] === this;\n const scaleX = isBeamEndNote ? -1 : 1;\n const beam_angle = Math.atan(beam_slope * scaleX);\n // slash line intersecting point on beam.\n const iPointOnBeam = {\n dx: Math.cos(beam_angle) * slashBeamOffset,\n dy: Math.sin(beam_angle) * slashBeamOffset,\n };\n slashStemOffset *= this.getStemDirection();\n const slash_angle = Math.atan((iPointOnBeam.dy - slashStemOffset) / iPointOnBeam.dx);\n const protrusion_stem_dx = Math.cos(slash_angle) * protrusions.stem * scaleX;\n const protrusion_stem_dy = Math.sin(slash_angle) * protrusions.stem;\n const protrusion_beam_dx = Math.cos(slash_angle) * protrusions.beam * scaleX;\n const protrusion_beam_dy = Math.sin(slash_angle) * protrusions.beam;\n const stemX = this.getStemX();\n const stem0X = beam.notes[0].getStemX();\n const stemY = beam.getBeamYToDraw() + (stemX - stem0X) * beam_slope;\n const ret = {\n x1: stemX - protrusion_stem_dx,\n y1: stemY + slashStemOffset - protrusion_stem_dy,\n x2: stemX + iPointOnBeam.dx * scaleX + protrusion_beam_dx,\n y2: stemY + iPointOnBeam.dy + protrusion_beam_dy,\n };\n return ret;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Mark Meeus 2019\nimport { KeySignature } from './keysignature';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nexport class KeySigNote extends Note {\n constructor(keySpec, cancelKeySpec, alterKeySpec) {\n super({ duration: 'b' });\n this.keySignature = new KeySignature(keySpec, cancelKeySpec, alterKeySpec);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.KeySigNote;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n this.keySignature.setStave(this.checkStave());\n this.setWidth(this.keySignature.getWidth());\n return this;\n }\n draw() {\n const ctx = this.checkStave().checkContext();\n this.setRendered();\n this.keySignature.setX(this.getAbsoluteX());\n this.keySignature.setContext(ctx);\n this.keySignature.draw();\n }\n}\n","// VexFlow - Music Engraving for HTML5\n// Copyright Mohit Muthanna 2010\n//\n// This class implements multiple measure rests.\nimport { Element } from './element';\nimport { Glyph } from './glyph';\nimport { NoteHead } from './notehead';\nimport { StaveModifierPosition } from './stavemodifier';\nimport { Tables } from './tables';\nimport { TimeSignature } from './timesignature';\nimport { Category, isBarline } from './typeguard';\nimport { defined } from './util';\nlet semibreve_rest;\nfunction get_semibreve_rest() {\n if (!semibreve_rest) {\n const noteHead = new NoteHead({ duration: 'w', note_type: 'r' });\n semibreve_rest = {\n glyph_font_scale: noteHead.render_options.glyph_font_scale,\n glyph_code: noteHead.glyph_code,\n width: noteHead.getWidth(),\n };\n }\n return semibreve_rest;\n}\nexport class MultiMeasureRest extends Element {\n /**\n *\n * @param number_of_measures Number of measures.\n * @param options The options object.\n */\n constructor(number_of_measures, options) {\n super();\n this.xs = { left: NaN, right: NaN };\n this.hasPaddingLeft = false;\n this.hasPaddingRight = false;\n this.hasLineThickness = false;\n this.hasSymbolSpacing = false;\n this.number_of_measures = number_of_measures;\n // Keep track of whether these four options were provided.\n this.hasPaddingLeft = typeof options.padding_left === 'number';\n this.hasPaddingRight = typeof options.padding_right === 'number';\n this.hasLineThickness = typeof options.line_thickness === 'number';\n this.hasSymbolSpacing = typeof options.symbol_spacing === 'number';\n const musicFont = Tables.currentMusicFont();\n this.render_options = Object.assign({ use_symbols: false, show_number: true, number_line: -0.5, number_glyph_point: musicFont.lookupMetric('digits.point'), line: 2, spacing_between_lines_px: Tables.STAVE_LINE_DISTANCE, serif_thickness: 2, semibreve_rest_glyph_scale: Tables.NOTATION_FONT_SCALE, padding_left: 0, padding_right: 0, line_thickness: 5, symbol_spacing: 0 }, options);\n const fontLineShift = musicFont.lookupMetric('digits.shiftLine', 0);\n this.render_options.number_line += fontLineShift;\n }\n static get CATEGORY() {\n return Category.MultiMeasureRest;\n }\n getXs() {\n return this.xs;\n }\n setStave(stave) {\n this.stave = stave;\n return this;\n }\n getStave() {\n return this.stave;\n }\n checkStave() {\n return defined(this.stave, 'NoStave', 'No stave attached to instance.');\n }\n drawLine(stave, ctx, left, right, spacingBetweenLines) {\n const options = this.render_options;\n const y = stave.getYForLine(options.line);\n const padding = (right - left) * 0.1;\n left += padding;\n right -= padding;\n let lineThicknessHalf;\n if (this.hasLineThickness) {\n lineThicknessHalf = options.line_thickness * 0.5;\n }\n else {\n lineThicknessHalf = spacingBetweenLines * 0.25;\n }\n const serifThickness = options.serif_thickness;\n const top = y - spacingBetweenLines;\n const bot = y + spacingBetweenLines;\n const leftIndented = left + serifThickness;\n const rightIndented = right - serifThickness;\n const lineTop = y - lineThicknessHalf;\n const lineBottom = y + lineThicknessHalf;\n ctx.save();\n ctx.beginPath();\n ctx.moveTo(left, top);\n ctx.lineTo(leftIndented, top);\n ctx.lineTo(leftIndented, lineTop);\n ctx.lineTo(rightIndented, lineTop);\n ctx.lineTo(rightIndented, top);\n ctx.lineTo(right, top);\n ctx.lineTo(right, bot);\n ctx.lineTo(rightIndented, bot);\n ctx.lineTo(rightIndented, lineBottom);\n ctx.lineTo(leftIndented, lineBottom);\n ctx.lineTo(leftIndented, bot);\n ctx.lineTo(left, bot);\n ctx.closePath();\n ctx.fill();\n }\n drawSymbols(stave, ctx, left, right, spacingBetweenLines) {\n const n4 = Math.floor(this.number_of_measures / 4);\n const n = this.number_of_measures % 4;\n const n2 = Math.floor(n / 2);\n const n1 = n % 2;\n const options = this.render_options;\n // FIXME: TODO: invalidate semibreve_rest at the appropriate time\n // (e.g., if the system font settings are changed).\n semibreve_rest = undefined;\n const rest = get_semibreve_rest();\n const rest_scale = options.semibreve_rest_glyph_scale;\n const rest_width = rest.width * (rest_scale / rest.glyph_font_scale);\n const glyphs = {\n 2: {\n width: rest_width * 0.5,\n height: spacingBetweenLines,\n },\n 1: {\n width: rest_width,\n },\n };\n /* 10: normal spacingBetweenLines */\n const spacing = this.hasSymbolSpacing ? options.symbol_spacing : 10;\n const width = n4 * glyphs[2].width + n2 * glyphs[2].width + n1 * glyphs[1].width + (n4 + n2 + n1 - 1) * spacing;\n let x = left + (right - left) * 0.5 - width * 0.5;\n const line = options.line;\n const yTop = stave.getYForLine(line - 1);\n const yMiddle = stave.getYForLine(line);\n const yBottom = stave.getYForLine(line + 1);\n ctx.save();\n ctx.setStrokeStyle('none');\n ctx.setLineWidth(0);\n for (let i = 0; i < n4; ++i) {\n ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n ctx.fillRect(x, yBottom - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n x += glyphs[2].width + spacing;\n }\n for (let i = 0; i < n2; ++i) {\n ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height);\n x += glyphs[2].width + spacing;\n }\n for (let i = 0; i < n1; ++i) {\n Glyph.renderGlyph(ctx, x, yTop, rest_scale, rest.glyph_code);\n x += glyphs[1].width + spacing;\n }\n ctx.restore();\n }\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const stave = this.checkStave();\n let left = stave.getNoteStartX();\n let right = stave.getNoteEndX();\n // FIXME: getNoteStartX() returns x + 5(barline width)\n // getNoteEndX() returns x + width(no barline width)\n // See Stave constructor. How do we fix this?\n // Here, we subtract the barline width.\n const begModifiers = stave.getModifiers(StaveModifierPosition.BEGIN);\n if (begModifiers.length === 1 && isBarline(begModifiers[0])) {\n left -= begModifiers[0].getWidth();\n }\n const options = this.render_options;\n if (this.hasPaddingLeft) {\n left = stave.getX() + options.padding_left;\n }\n if (this.hasPaddingRight) {\n right = stave.getX() + stave.getWidth() - options.padding_right;\n }\n this.xs.left = left;\n this.xs.right = right;\n const spacingBetweenLines = options.spacing_between_lines_px;\n if (options.use_symbols) {\n this.drawSymbols(stave, ctx, left, right, spacingBetweenLines);\n }\n else {\n this.drawLine(stave, ctx, left, right, spacingBetweenLines);\n }\n if (options.show_number) {\n const timeSpec = '/' + this.number_of_measures;\n const timeSig = new TimeSignature(timeSpec, 0, false);\n timeSig.point = options.number_glyph_point;\n timeSig.setTimeSig(timeSpec);\n timeSig.setStave(stave);\n timeSig.setX(left + (right - left) * 0.5 - timeSig.getInfo().glyph.getMetrics().width * 0.5);\n timeSig.bottomLine = options.number_line;\n timeSig.setContext(ctx).draw();\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Glyph } from './glyph';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (PedalMarking.DEBUG)\n log('Vex.Flow.PedalMarking', args);\n}\n/**\n * Draws a pedal glyph with the provided `name` on a rendering `context`\n * at the coordinates `x` and `y. Takes into account the glyph data\n * coordinate shifts.\n */\nfunction drawPedalGlyph(name, context, x, y, point) {\n const glyph_data = PedalMarking.GLYPHS[name];\n const glyph = new Glyph(glyph_data.code, point, { category: 'pedalMarking' });\n glyph.render(context, x + glyph_data.x_shift, y + glyph_data.y_shift);\n}\n/**\n * PedalMarking implements different types of pedal markings. These notation\n * elements indicate to the performer when to depress and release the a pedal.\n *\n * In order to create \"Sostenuto\", and \"una corda\" markings, you must set\n * custom text for the release/depress pedal markings.\n */\nexport class PedalMarking extends Element {\n constructor(notes) {\n super();\n this.notes = notes;\n this.type = PedalMarking.type.TEXT;\n this.line = 0;\n // Custom text for the release/depress markings\n this.custom_depress_text = '';\n this.custom_release_text = '';\n this.resetFont();\n this.render_options = {\n bracket_height: 10,\n text_margin_right: 6,\n bracket_line_width: 1,\n color: 'black',\n };\n }\n static get CATEGORY() {\n return Category.PedalMarking;\n }\n /**\n * Create a sustain pedal marking. Returns the defaults PedalMarking.\n * Which uses the traditional \"Ped\" and \"*\"\" markings.\n */\n static createSustain(notes) {\n const pedal = new PedalMarking(notes);\n return pedal;\n }\n /** Create a sostenuto pedal marking */\n static createSostenuto(notes) {\n const pedal = new PedalMarking(notes);\n pedal.setType(PedalMarking.type.MIXED);\n pedal.setCustomText('Sost. Ped.');\n return pedal;\n }\n /** Create an una corda pedal marking */\n static createUnaCorda(notes) {\n const pedal = new PedalMarking(notes);\n pedal.setType(PedalMarking.type.TEXT);\n pedal.setCustomText('una corda', 'tre corda');\n return pedal;\n }\n /** Set pedal type. */\n setType(type) {\n type = typeof type === 'string' ? PedalMarking.typeString[type] : type;\n if (type >= PedalMarking.type.TEXT && type <= PedalMarking.type.MIXED) {\n this.type = type;\n }\n return this;\n }\n /**\n * Set custom text for the `depress`/`release` pedal markings. No text is\n * set if the parameter is falsy.\n */\n setCustomText(depress, release) {\n this.custom_depress_text = depress || '';\n this.custom_release_text = release || '';\n return this;\n }\n /** Set the staff line to render the markings on. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Draw the bracket based pedal markings. */\n drawBracketed() {\n const ctx = this.checkContext();\n let is_pedal_depressed = false;\n let prev_x;\n let prev_y;\n // Iterate through each note\n this.notes.forEach((note, index, notes) => {\n // Each note triggers the opposite pedal action\n is_pedal_depressed = !is_pedal_depressed;\n // Get the initial coordinates for the note\n const x = note.getAbsoluteX();\n const y = note.checkStave().getYForBottomText(this.line + 3);\n // Throw if current note is positioned before the previous note\n if (x < prev_x) {\n throw new RuntimeError('InvalidConfiguration', 'The notes provided must be in order of ascending x positions');\n }\n // Determine if the previous or next note are the same\n // as the current note. We need to keep track of this for\n // when adjustments are made for the release+depress action\n const next_is_same = notes[index + 1] === note;\n const prev_is_same = notes[index - 1] === note;\n let x_shift = 0;\n const point = Tables.currentMusicFont().lookupMetric(`pedalMarking.${is_pedal_depressed ? 'down' : 'up'}.point`);\n if (is_pedal_depressed) {\n // Adjustment for release+depress\n x_shift = prev_is_same ? 5 : 0;\n if (this.type === PedalMarking.type.MIXED && !prev_is_same) {\n // For MIXED style, start with text instead of bracket\n if (this.custom_depress_text) {\n // If we have custom text, use instead of the default \"Ped\" glyph\n const text_width = ctx.measureText(this.custom_depress_text).width;\n ctx.fillText(this.custom_depress_text, x - text_width / 2, y);\n x_shift = text_width / 2 + this.render_options.text_margin_right;\n }\n else {\n // Render the Ped glyph in position\n drawPedalGlyph('pedal_depress', ctx, x, y, point);\n x_shift = 20 + this.render_options.text_margin_right;\n }\n }\n else {\n // Draw start bracket\n ctx.beginPath();\n ctx.moveTo(x, y - this.render_options.bracket_height);\n ctx.lineTo(x + x_shift, y);\n ctx.stroke();\n ctx.closePath();\n }\n }\n else {\n // Adjustment for release+depress\n x_shift = next_is_same ? -5 : 0;\n // Draw end bracket\n ctx.beginPath();\n ctx.moveTo(prev_x, prev_y);\n ctx.lineTo(x + x_shift, y);\n ctx.lineTo(x, y - this.render_options.bracket_height);\n ctx.stroke();\n ctx.closePath();\n }\n // Store previous coordinates\n prev_x = x + x_shift;\n prev_y = y;\n });\n }\n /**\n * Draw the text based pedal markings. This defaults to the traditional\n * \"Ped\" and \"*\"\" symbols if no custom text has been provided.\n */\n drawText() {\n const ctx = this.checkContext();\n let is_pedal_depressed = false;\n // Iterate through each note, placing glyphs or custom text accordingly\n this.notes.forEach((note) => {\n is_pedal_depressed = !is_pedal_depressed;\n const stave = note.checkStave();\n const x = note.getAbsoluteX();\n const y = stave.getYForBottomText(this.line + 3);\n const point = Tables.currentMusicFont().lookupMetric(`pedalMarking.${is_pedal_depressed ? 'down' : 'up'}.point`);\n let text_width = 0;\n if (is_pedal_depressed) {\n if (this.custom_depress_text) {\n text_width = ctx.measureText(this.custom_depress_text).width;\n ctx.fillText(this.custom_depress_text, x - text_width / 2, y);\n }\n else {\n drawPedalGlyph('pedal_depress', ctx, x, y, point);\n }\n }\n else {\n if (this.custom_release_text) {\n text_width = ctx.measureText(this.custom_release_text).width;\n ctx.fillText(this.custom_release_text, x - text_width / 2, y);\n }\n else {\n drawPedalGlyph('pedal_release', ctx, x, y, point);\n }\n }\n });\n }\n /** Render the pedal marking in position on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n ctx.save();\n ctx.setStrokeStyle(this.render_options.color);\n ctx.setFillStyle(this.render_options.color);\n ctx.setFont(this.textFont);\n L('Rendering Pedal Marking');\n if (this.type === PedalMarking.type.BRACKET || this.type === PedalMarking.type.MIXED) {\n ctx.setLineWidth(this.render_options.bracket_line_width);\n this.drawBracketed();\n }\n else if (this.type === PedalMarking.type.TEXT) {\n this.drawText();\n }\n ctx.restore();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.PedalMarking.DEBUG` to `true`. */\nPedalMarking.DEBUG = false;\nPedalMarking.TEXT_FONT = {\n family: Font.SERIF,\n size: 12,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n/** Glyph data */\nPedalMarking.GLYPHS = {\n pedal_depress: {\n code: 'keyboardPedalPed',\n x_shift: -10,\n y_shift: 0,\n },\n pedal_release: {\n code: 'keyboardPedalUp',\n x_shift: -2,\n y_shift: 3,\n },\n};\n/** Pedal type as number. */\nPedalMarking.type = {\n TEXT: 1,\n BRACKET: 2,\n MIXED: 3,\n};\n/** Pedal type as string. */\nPedalMarking.typeString = {\n text: PedalMarking.type.TEXT,\n bracket: PedalMarking.type.BRACKET,\n mixed: PedalMarking.type.MIXED,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Glyph } from './glyph';\nimport { GlyphNote } from './glyphnote';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\n// Map `type` to SMuFL glyph code.\nconst CODES = {\n '1': 'repeat1Bar',\n '2': 'repeat2Bars',\n '4': 'repeat4Bars',\n slash: 'repeatBarSlash',\n};\nexport class RepeatNote extends GlyphNote {\n static get CATEGORY() {\n return Category.RepeatNote;\n }\n constructor(type, noteStruct, options) {\n super(undefined, Object.assign({ duration: 'q', align_center: type !== 'slash' }, noteStruct), options);\n const glyphCode = CODES[type] || 'repeat1Bar';\n const glyph = new Glyph(glyphCode, Tables.currentMusicFont().lookupMetric('repeatNote.point', 40), {\n category: 'repeatNote',\n });\n this.setGlyph(glyph);\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This file implements `StaveLine` which are simply lines that connect\n// two notes. This object is highly configurable, see the `render_options`.\n// A simple line is often used for notating glissando articulations, but you\n// can format a `StaveLine` with arrows or colors for more pedagogical\n// purposes, such as diagrams.\nimport { Element } from './element';\nimport { Tables } from './tables';\nimport { TextJustification } from './textnote';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n// Attribution: Arrow rendering implementations based off of\n// Patrick Horgan's article, \"Drawing lines and arcs with\n// arrow heads on HTML5 Canvas\"\n//\n// Draw an arrow head that connects between 3 coordinates.\nfunction drawArrowHead(ctx, x0, y0, x1, y1, x2, y2) {\n // all cases do this.\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.lineTo(x0, y0);\n ctx.closePath();\n ctx.fill();\n}\nexport class StaveLine extends Element {\n // Initialize the StaveLine with the given `notes`.\n //\n // `notes` is a struct that has:\n //\n // ```\n // {\n // first_note: Note,\n // last_note: Note,\n // first_indices: [n1, n2, n3],\n // last_indices: [n1, n2, n3]\n // }\n // ```\n constructor(notes) {\n super();\n this.setNotes(notes);\n this.text = '';\n this.resetFont();\n this.render_options = {\n // Space to add to the left or the right\n padding_left: 4,\n padding_right: 3,\n // The width of the line in pixels\n line_width: 1,\n // An array of line/space lengths. (TODO/QUESTION: Is this supported in SVG?).\n line_dash: undefined,\n // Can draw rounded line end, instead of a square. (TODO/QUESTION: Is this supported in SVG?).\n rounded_end: true,\n // The color of the line and arrowheads\n color: undefined,\n // Flags to draw arrows on each end of the line\n draw_start_arrow: false,\n draw_end_arrow: false,\n // The length of the arrowhead sides\n arrowhead_length: 10,\n // The angle of the arrowhead\n arrowhead_angle: Math.PI / 8,\n // The position of the text\n text_position_vertical: StaveLine.TextVerticalPosition.TOP,\n text_justification: StaveLine.TextJustification.CENTER,\n };\n }\n static get CATEGORY() {\n return Category.StaveLine;\n }\n // The the annotation for the `StaveLine`\n setText(text) {\n this.text = text;\n return this;\n }\n // Set the notes for the `StaveLine`\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Notes needs to have either first_note or last_note set.');\n }\n if (!notes.first_indices)\n notes.first_indices = [0];\n if (!notes.last_indices)\n notes.last_indices = [0];\n if (notes.first_indices.length !== notes.last_indices.length) {\n throw new RuntimeError('BadArguments', 'Connected notes must have same number of indices.');\n }\n this.notes = notes;\n this.first_note = notes.first_note;\n this.first_indices = notes.first_indices;\n this.last_note = notes.last_note;\n this.last_indices = notes.last_indices;\n return this;\n }\n // Apply the style of the `StaveLine` to the context\n applyLineStyle() {\n const ctx = this.checkContext();\n const render_options = this.render_options;\n if (render_options.line_dash) {\n ctx.setLineDash(render_options.line_dash);\n }\n if (render_options.line_width) {\n ctx.setLineWidth(render_options.line_width);\n }\n if (render_options.rounded_end) {\n ctx.setLineCap('round');\n }\n else {\n ctx.setLineCap('square');\n }\n }\n // Apply the text styling to the context\n applyFontStyle() {\n const ctx = this.checkContext();\n ctx.setFont(this.textFont);\n const render_options = this.render_options;\n const color = render_options.color;\n if (color) {\n ctx.setStrokeStyle(color);\n ctx.setFillStyle(color);\n }\n }\n // Helper function to draw a line with arrow heads\n drawArrowLine(ctx, pt1, pt2) {\n const both_arrows = this.render_options.draw_start_arrow && this.render_options.draw_end_arrow;\n const x1 = pt1.x;\n const y1 = pt1.y;\n const x2 = pt2.x;\n const y2 = pt2.y;\n // For ends with arrow we actually want to stop before we get to the arrow\n // so that wide lines won't put a flat end on the arrow.\n const distance = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n const ratio = (distance - this.render_options.arrowhead_length / 3) / distance;\n let end_x;\n let end_y;\n let start_x;\n let start_y;\n if (this.render_options.draw_end_arrow || both_arrows) {\n end_x = Math.round(x1 + (x2 - x1) * ratio);\n end_y = Math.round(y1 + (y2 - y1) * ratio);\n }\n else {\n end_x = x2;\n end_y = y2;\n }\n if (this.render_options.draw_start_arrow || both_arrows) {\n start_x = x1 + (x2 - x1) * (1 - ratio);\n start_y = y1 + (y2 - y1) * (1 - ratio);\n }\n else {\n start_x = x1;\n start_y = y1;\n }\n if (this.render_options.color) {\n ctx.setStrokeStyle(this.render_options.color);\n ctx.setFillStyle(this.render_options.color);\n }\n // Draw the shaft of the arrow\n ctx.beginPath();\n ctx.moveTo(start_x, start_y);\n ctx.lineTo(end_x, end_y);\n ctx.stroke();\n ctx.closePath();\n // calculate the angle of the line\n const line_angle = Math.atan2(y2 - y1, x2 - x1);\n // h is the line length of a side of the arrow head\n const h = Math.abs(this.render_options.arrowhead_length / Math.cos(this.render_options.arrowhead_angle));\n let angle1;\n let angle2;\n let top_x;\n let top_y;\n let bottom_x;\n let bottom_y;\n if (this.render_options.draw_end_arrow || both_arrows) {\n angle1 = line_angle + Math.PI + this.render_options.arrowhead_angle;\n top_x = x2 + Math.cos(angle1) * h;\n top_y = y2 + Math.sin(angle1) * h;\n angle2 = line_angle + Math.PI - this.render_options.arrowhead_angle;\n bottom_x = x2 + Math.cos(angle2) * h;\n bottom_y = y2 + Math.sin(angle2) * h;\n drawArrowHead(ctx, top_x, top_y, x2, y2, bottom_x, bottom_y);\n }\n if (this.render_options.draw_start_arrow || both_arrows) {\n angle1 = line_angle + this.render_options.arrowhead_angle;\n top_x = x1 + Math.cos(angle1) * h;\n top_y = y1 + Math.sin(angle1) * h;\n angle2 = line_angle - this.render_options.arrowhead_angle;\n bottom_x = x1 + Math.cos(angle2) * h;\n bottom_y = y1 + Math.sin(angle2) * h;\n drawArrowHead(ctx, top_x, top_y, x1, y1, bottom_x, bottom_y);\n }\n }\n // Renders the `StaveLine` on the context\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const first_note = this.first_note;\n const last_note = this.last_note;\n const render_options = this.render_options;\n ctx.save();\n this.applyLineStyle();\n // Cycle through each set of indices and draw lines\n let start_position = { x: 0, y: 0 };\n let end_position = { x: 0, y: 0 };\n this.first_indices.forEach((first_index, i) => {\n const last_index = this.last_indices[i];\n // Get initial coordinates for the start/end of the line\n start_position = first_note.getModifierStartXY(2, first_index);\n end_position = last_note.getModifierStartXY(1, last_index);\n const upwards_slope = start_position.y > end_position.y;\n // Adjust `x` coordinates for modifiers\n start_position.x += first_note.getMetrics().modRightPx + render_options.padding_left;\n end_position.x -= last_note.getMetrics().modLeftPx + render_options.padding_right;\n // Adjust first `x` coordinates for displacements\n const notehead_width = first_note.getGlyph().getWidth();\n const first_displaced = first_note.getKeyProps()[first_index].displaced;\n if (first_displaced && first_note.getStemDirection() === 1) {\n start_position.x += notehead_width + render_options.padding_left;\n }\n // Adjust last `x` coordinates for displacements\n const last_displaced = last_note.getKeyProps()[last_index].displaced;\n if (last_displaced && last_note.getStemDirection() === -1) {\n end_position.x -= notehead_width + render_options.padding_right;\n }\n // Adjust y position better if it's not coming from the center of the note\n start_position.y += upwards_slope ? -3 : 1;\n end_position.y += upwards_slope ? 2 : 0;\n this.drawArrowLine(ctx, start_position, end_position);\n });\n ctx.restore();\n // Determine the x coordinate where to start the text\n const text_width = ctx.measureText(this.text).width;\n const justification = render_options.text_justification;\n let x = 0;\n if (justification === StaveLine.TextJustification.LEFT) {\n x = start_position.x;\n }\n else if (justification === StaveLine.TextJustification.CENTER) {\n const delta_x = end_position.x - start_position.x;\n const center_x = delta_x / 2 + start_position.x;\n x = center_x - text_width / 2;\n }\n else if (justification === StaveLine.TextJustification.RIGHT) {\n x = end_position.x - text_width;\n }\n // Determine the y value to start the text\n let y = 0;\n const vertical_position = render_options.text_position_vertical;\n if (vertical_position === StaveLine.TextVerticalPosition.TOP) {\n y = first_note.checkStave().getYForTopText();\n }\n else if (vertical_position === StaveLine.TextVerticalPosition.BOTTOM) {\n y = first_note.checkStave().getYForBottomText(Tables.TEXT_HEIGHT_OFFSET_HACK);\n }\n // Draw the text\n ctx.save();\n this.applyFontStyle();\n ctx.fillText(this.text, x, y);\n ctx.restore();\n return this;\n }\n}\n/** Default text font. */\nStaveLine.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n// Text Positioning\nStaveLine.TextVerticalPosition = {\n TOP: 1,\n BOTTOM: 2,\n};\nStaveLine.TextJustification = TextJustification;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { BoundingBox } from './boundingbox';\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { Note } from './note';\nimport { Stave } from './stave';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\n/**\n * System implements a musical system, which is a collection of staves,\n * each which can have one or more voices. All voices across all staves in\n * the system are formatted together.\n */\nexport class System extends Element {\n constructor(params = {}) {\n super();\n this.setOptions(params);\n this.parts = [];\n }\n static get CATEGORY() {\n return Category.System;\n }\n /** Set formatting options. */\n setOptions(options = {}) {\n if (!options.factory) {\n throw new RuntimeError('NoFactory', 'System.setOptions(options) requires a factory.');\n }\n this.factory = options.factory;\n this.options = Object.assign(Object.assign({ factory: this.factory, x: 10, y: 10, width: 500, spaceBetweenStaves: 12, autoWidth: false, noJustification: false, debugFormatter: false, formatIterations: 0, noPadding: false }, options), { details: Object.assign({ alpha: 0.5 }, options.details), formatOptions: Object.assign({}, options.formatOptions) });\n if (this.options.noJustification === false && typeof options.width === 'undefined') {\n this.options.autoWidth = true;\n }\n }\n /** Set associated context. */\n setContext(context) {\n super.setContext(context);\n this.factory.setContext(context);\n return this;\n }\n /**\n * Add connector between staves.\n * @param type see {@link StaveConnector.typeString}\n */\n addConnector(type = 'double') {\n this.connector = this.factory.StaveConnector({\n top_stave: this.parts[0].stave,\n bottom_stave: this.parts[this.parts.length - 1].stave,\n type,\n });\n return this.connector;\n }\n /**\n * Add a stave to the system.\n *\n * Example (one voice):\n *\n * `system.addStave({voices: [score.voice(score.notes('C#5/q, B4, A4, G#4'))]});`\n *\n * Example (two voices):\n *\n * `system.addStave({voices: [`\n * `score.voice(score.notes('C#5/q, B4, A4, G#4', {stem: 'up'})),`\n * `score.voice(score.notes('C#4/h, C#4', {stem: 'down'}))`\n * `]});`\n */\n addStave(params) {\n var _a;\n const staveOptions = Object.assign({ left_bar: false }, params.options);\n const stave = (_a = params.stave) !== null && _a !== void 0 ? _a : this.factory.Stave({ x: this.options.x, y: this.options.y, width: this.options.width, options: staveOptions });\n const p = Object.assign(Object.assign({ stave, \n /* voices: [], */\n spaceAbove: 0, spaceBelow: 0, debugNoteMetrics: false, noJustification: false }, params), { options: staveOptions });\n const ctx = this.getContext();\n p.voices.forEach((voice) => voice\n .setContext(ctx)\n .setStave(stave)\n .getTickables()\n .forEach((tickable) => tickable.setStave(stave)));\n this.parts.push(p);\n return stave;\n }\n /** Format the system. */\n format() {\n const options_details = this.options.details;\n let justifyWidth = 0;\n const formatter = new Formatter(options_details);\n this.formatter = formatter;\n let y = this.options.y;\n let startX = 0;\n let allVoices = [];\n let allStaves = [];\n const debugNoteMetricsYs = [];\n // Join the voices for each stave.\n this.parts.forEach((part) => {\n y = y + part.stave.space(part.spaceAbove);\n part.stave.setY(y);\n formatter.joinVoices(part.voices);\n y = y + part.stave.space(part.spaceBelow);\n y = y + part.stave.space(this.options.spaceBetweenStaves);\n if (part.debugNoteMetrics) {\n debugNoteMetricsYs.push({ y, voice: part.voices[0] });\n y += 15;\n }\n allVoices = allVoices.concat(part.voices);\n allStaves = allStaves.concat(part.stave);\n startX = Math.max(startX, part.stave.getNoteStartX());\n });\n // Update the start position of all staves.\n this.parts.forEach((part) => part.stave.setNoteStartX(startX));\n if (this.options.autoWidth) {\n justifyWidth = formatter.preCalculateMinTotalWidth(allVoices);\n this.parts.forEach((part) => {\n part.stave.setWidth(justifyWidth + Stave.rightPadding + (startX - this.options.x));\n });\n }\n else {\n justifyWidth = this.options.noPadding\n ? this.options.width - (startX - this.options.x)\n : this.options.width - (startX - this.options.x) - Stave.defaultPadding;\n }\n formatter.format(allVoices, this.options.noJustification ? 0 : justifyWidth, this.options.formatOptions);\n formatter.postFormat();\n for (let i = 0; i < this.options.formatIterations; i++) {\n formatter.tune(options_details);\n }\n this.startX = startX;\n this.debugNoteMetricsYs = debugNoteMetricsYs;\n this.lastY = y;\n this.boundingBox = new BoundingBox(this.options.x, this.options.y, this.options.width, this.lastY - this.options.y);\n Stave.formatBegModifiers(allStaves);\n }\n /** Render the system. */\n draw() {\n // Render debugging information, if requested.\n const ctx = this.checkContext();\n if (!this.formatter || !this.startX || !this.lastY || !this.debugNoteMetricsYs) {\n throw new RuntimeError('NoFormatter', 'format() must be called before draw()');\n }\n this.setRendered();\n if (this.options.debugFormatter) {\n Formatter.plotDebugging(ctx, this.formatter, this.startX, this.options.y, this.lastY);\n }\n this.debugNoteMetricsYs.forEach((d) => {\n d.voice.getTickables().forEach((tickable) => Note.plotMetrics(ctx, tickable, d.y));\n });\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// The file implements notes for Tablature notation. This consists of one or\n// more fret positions, and can either be drawn with or without stems.\n//\n// See `tests/tabnote_tests.ts` for usage examples.\nimport { Font } from './font';\nimport { Glyph } from './glyph';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { StemmableNote } from './stemmablenote';\nimport { Tables } from './tables';\nimport { Category, isDot } from './typeguard';\nimport { defined, RuntimeError } from './util';\n// Gets the unused strings grouped together if consecutive.\n//\n// Parameters:\n// * num_lines - The number of lines\n// * strings_used - An array of numbers representing which strings have fret positions\nfunction getUnusedStringGroups(num_lines, strings_used) {\n const stem_through = [];\n let group = [];\n for (let string = 1; string <= num_lines; string++) {\n const is_used = strings_used.indexOf(string) > -1;\n if (!is_used) {\n group.push(string);\n }\n else {\n stem_through.push(group);\n group = [];\n }\n }\n if (group.length > 0)\n stem_through.push(group);\n return stem_through;\n}\n// Gets groups of points that outline the partial stem lines\n// between fret positions\n//\n// Parameters:\n// * stem_Y - The `y` coordinate the stem is located on\n// * unused_strings - An array of groups of unused strings\n// * stave - The stave to use for reference\n// * stem_direction - The direction of the stem\nfunction getPartialStemLines(stem_y, unused_strings, stave, stem_direction) {\n const up_stem = stem_direction !== 1;\n const down_stem = stem_direction !== -1;\n const line_spacing = stave.getSpacingBetweenLines();\n const total_lines = stave.getNumLines();\n const stem_lines = [];\n unused_strings.forEach((strings) => {\n const containsLastString = strings.indexOf(total_lines) > -1;\n const containsFirstString = strings.indexOf(1) > -1;\n if ((up_stem && containsFirstString) || (down_stem && containsLastString)) {\n return;\n }\n // If there's only one string in the group, push a duplicate value.\n // We do this because we need 2 strings to convert into upper/lower y\n // values.\n if (strings.length === 1) {\n strings.push(strings[0]);\n }\n const line_ys = [];\n // Iterate through each group string and store it's y position\n strings.forEach((string, index, strings) => {\n const isTopBound = string === 1;\n const isBottomBound = string === total_lines;\n // Get the y value for the appropriate staff line,\n // we adjust for a 0 index array, since string numbers are index 1\n let y = stave.getYForLine(string - 1);\n // Unless the string is the first or last, add padding to each side\n // of the line\n if (index === 0 && !isTopBound) {\n y -= line_spacing / 2 - 1;\n }\n else if (index === strings.length - 1 && !isBottomBound) {\n y += line_spacing / 2 - 1;\n }\n // Store the y value\n line_ys.push(y);\n // Store a subsequent y value connecting this group to the main\n // stem above/below the stave if it's the top/bottom string\n if (stem_direction === 1 && isTopBound) {\n line_ys.push(stem_y - 2);\n }\n else if (stem_direction === -1 && isBottomBound) {\n line_ys.push(stem_y + 2);\n }\n });\n // Add the sorted y values to the\n stem_lines.push(line_ys.sort((a, b) => a - b));\n });\n return stem_lines;\n}\nexport class TabNote extends StemmableNote {\n // Initialize the TabNote with a `noteStruct` full of properties\n // and whether to `draw_stem` when rendering the note\n constructor(noteStruct, draw_stem = false) {\n super(noteStruct);\n this.glyphs = [];\n // Return the number of the greatest string, which is the string lowest on the display\n this.greatestString = () => {\n return this.positions.map((x) => x.str).reduce((a, b) => (a > b ? a : b));\n };\n // Return the number of the least string, which is the string highest on the display\n this.leastString = () => {\n return this.positions.map((x) => x.str).reduce((a, b) => (a < b ? a : b));\n };\n this.ghost = false; // Renders parenthesis around notes\n // Note properties\n // The fret positions in the note. An array of `{ str: X, fret: X }`\n this.positions = noteStruct.positions || [];\n // Render Options\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // font size for note heads and rests\n glyph_font_scale: Tables.TABLATURE_FONT_SCALE, \n // Flag to draw a stem\n draw_stem, \n // Flag to draw dot modifiers\n draw_dots: draw_stem, \n // Flag to extend the main stem through the stave and fret positions\n draw_stem_through_stave: false, \n // vertical shift from stave line\n y_shift: 0, \n // normal glyph scale\n scale: 1.0, \n // default tablature font\n font: `${Font.SIZE}pt ${Font.SANS_SERIF}` });\n this.glyph = Tables.getGlyphProps(this.duration, this.noteType);\n defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`);\n this.buildStem();\n if (noteStruct.stem_direction) {\n this.setStemDirection(noteStruct.stem_direction);\n }\n else {\n this.setStemDirection(Stem.UP);\n }\n // Renders parenthesis around notes\n this.ghost = false;\n this.updateWidth();\n }\n static get CATEGORY() {\n return Category.TabNote;\n }\n reset() {\n super.reset();\n if (this.stave)\n this.setStave(this.stave);\n return this;\n }\n // Set as ghost `TabNote`, surrounds the fret positions with parenthesis.\n // Often used for indicating frets that are being bent to\n setGhost(ghost) {\n this.ghost = ghost;\n this.updateWidth();\n return this;\n }\n // Determine if the note has a stem\n hasStem() {\n if (this.render_options.draw_stem)\n return true;\n return false;\n }\n // Get the default stem extension for the note\n getStemExtension() {\n const glyph = this.getGlyph();\n if (this.stem_extension_override != null) {\n return this.stem_extension_override;\n }\n if (glyph) {\n return this.getStemDirection() === Stem.UP ? glyph.tabnote_stem_up_extension : glyph.tabnote_stem_down_extension;\n }\n return 0;\n }\n // Calculate and store the width of the note\n updateWidth() {\n this.glyphs = [];\n this.width = 0;\n for (let i = 0; i < this.positions.length; ++i) {\n let fret = this.positions[i].fret;\n if (this.ghost)\n fret = '(' + fret + ')';\n const glyph = Tables.tabToGlyph(fret.toString(), this.render_options.scale);\n this.glyphs.push(glyph);\n this.width = Math.max(glyph.getWidth(), this.width);\n }\n // For some reason we associate a notehead glyph with a TabNote, and this\n // glyph is used for certain width calculations. Of course, this is totally\n // incorrect since a notehead is a poor approximation for the dimensions of\n // a fret number which can have multiple digits. As a result, we must\n // overwrite getWidth() to return the correct width\n this.glyph.getWidth = () => this.width;\n }\n // Set the `stave` to the note\n setStave(stave) {\n super.setStave(stave);\n const ctx = stave.getContext();\n this.setContext(ctx);\n // Calculate the fret number width based on font used\n if (ctx) {\n this.width = 0;\n for (let i = 0; i < this.glyphs.length; ++i) {\n const glyph = this.glyphs[i];\n const text = '' + glyph.text;\n if (text.toUpperCase() !== 'X') {\n ctx.save();\n ctx.setFont(this.render_options.font);\n glyph.width = ctx.measureText(text).width;\n ctx.restore();\n glyph.getWidth = () => glyph.width;\n }\n this.width = Math.max(glyph.getWidth(), this.width);\n }\n this.glyph.getWidth = () => this.width;\n }\n // we subtract 1 from `line` because getYForLine expects a 0-based index,\n // while the position.str is a 1-based index\n const ys = this.positions.map(({ str: line }) => stave.getYForLine(Number(line) - 1));\n this.setYs(ys);\n if (this.stem) {\n this.stem.setYBounds(this.getStemY(), this.getStemY());\n }\n return this;\n }\n // Get the fret positions for the note\n getPositions() {\n return this.positions;\n }\n // Get the default `x` and `y` coordinates for a modifier at a specific\n // `position` at a fret position `index`\n getModifierStartXY(position, index) {\n if (!this.preFormatted) {\n throw new RuntimeError('UnformattedNote', \"Can't call GetModifierStartXY on an unformatted note\");\n }\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', 'No Y-Values calculated for this note.');\n }\n let x = 0;\n if (position === Modifier.Position.LEFT) {\n x = -1 * 2; // FIXME: modifier padding, move to font file\n }\n else if (position === Modifier.Position.RIGHT) {\n x = this.width + 2; // FIXME: modifier padding, move to font file\n }\n else if (position === Modifier.Position.BELOW || position === Modifier.Position.ABOVE) {\n const note_glyph_width = this.glyph.getWidth();\n x = note_glyph_width / 2;\n }\n return {\n x: this.getAbsoluteX() + x,\n y: this.ys[index],\n };\n }\n // Get the default line for rest\n getLineForRest() {\n return Number(this.positions[0].str);\n }\n // Pre-render formatting\n preFormat() {\n if (this.preFormatted)\n return;\n if (this.modifierContext)\n this.modifierContext.preFormat();\n // width is already set during init()\n this.preFormatted = true;\n }\n // Get the x position for the stem\n getStemX() {\n return this.getCenterGlyphX();\n }\n // Get the y position for the stem\n getStemY() {\n const num_lines = this.checkStave().getNumLines();\n // The decimal staff line amounts provide optimal spacing between the\n // fret number and the stem\n const stemUpLine = -0.5;\n const stemDownLine = num_lines - 0.5;\n const stemStartLine = Stem.UP === this.stem_direction ? stemUpLine : stemDownLine;\n return this.checkStave().getYForLine(stemStartLine);\n }\n // Get the stem extents for the tabnote\n getStemExtents() {\n return this.checkStem().getExtents();\n }\n // Draw the fal onto the context\n drawFlag() {\n var _a;\n const { beam, glyph, render_options: { draw_stem }, } = this;\n const context = this.checkContext();\n const shouldDrawFlag = beam == undefined && draw_stem;\n // Now it's the flag's turn.\n if (glyph.flag && shouldDrawFlag) {\n const flag_x = this.getStemX();\n const flag_y = this.getStemDirection() === Stem.DOWN\n ? // Down stems are below the note head and have flags on the right.\n this.getStemY() - this.checkStem().getHeight() - (this.glyph ? this.glyph.stem_down_extension : 0)\n : // Up stems are above the note head and have flags on the right.\n this.getStemY() - this.checkStem().getHeight() + (this.glyph ? this.glyph.stem_up_extension : 0);\n // Draw the Flag\n //this.flag?.setOptions({ category: 'flag.tabStem' });\n (_a = this.flag) === null || _a === void 0 ? void 0 : _a.render(context, flag_x, flag_y);\n //Glyph.renderGlyph(context, flag_x, flag_y, glyph_font_scale, flag_code, { category: 'flag.tabStem' });\n }\n }\n // Render the modifiers onto the context.\n drawModifiers() {\n this.modifiers.forEach((modifier) => {\n // Only draw the dots if enabled.\n if (isDot(modifier) && !this.render_options.draw_dots) {\n return;\n }\n modifier.setContext(this.getContext());\n modifier.drawWithStyle();\n });\n }\n // Render the stem extension through the fret positions\n drawStemThrough() {\n const stemX = this.getStemX();\n const stemY = this.getStemY();\n const ctx = this.checkContext();\n const drawStem = this.render_options.draw_stem;\n const stemThrough = this.render_options.draw_stem_through_stave;\n if (drawStem && stemThrough) {\n const numLines = this.checkStave().getNumLines();\n const stringsUsed = this.positions.map((position) => Number(position.str));\n const unusedStrings = getUnusedStringGroups(numLines, stringsUsed);\n const stemLines = getPartialStemLines(stemY, unusedStrings, this.checkStave(), this.getStemDirection());\n ctx.save();\n ctx.setLineWidth(Stem.WIDTH);\n stemLines.forEach((bounds) => {\n if (bounds.length === 0)\n return;\n ctx.beginPath();\n ctx.moveTo(stemX, bounds[0]);\n ctx.lineTo(stemX, bounds[bounds.length - 1]);\n ctx.stroke();\n ctx.closePath();\n });\n ctx.restore();\n }\n }\n // Render the fret positions onto the context\n drawPositions() {\n const ctx = this.checkContext();\n const x = this.getAbsoluteX();\n const ys = this.ys;\n for (let i = 0; i < this.positions.length; ++i) {\n const y = ys[i] + this.render_options.y_shift;\n const glyph = this.glyphs[i];\n // Center the fret text beneath the notation note head\n const note_glyph_width = this.glyph.getWidth();\n const tab_x = x + note_glyph_width / 2 - glyph.getWidth() / 2;\n // FIXME: Magic numbers.\n ctx.clearRect(tab_x - 2, y - 3, glyph.getWidth() + 4, 6);\n if (glyph.code) {\n Glyph.renderGlyph(ctx, tab_x, y, this.render_options.glyph_font_scale * this.render_options.scale, glyph.code);\n }\n else {\n ctx.save();\n ctx.setFont(this.render_options.font);\n const text = glyph.text.toString();\n ctx.fillText(text, tab_x, y + 5 * this.render_options.scale);\n ctx.restore();\n }\n }\n }\n // The main rendering function for the entire note.\n draw() {\n const ctx = this.checkContext();\n if (this.ys.length === 0) {\n throw new RuntimeError('NoYValues', \"Can't draw note without Y values.\");\n }\n this.setRendered();\n const render_stem = this.beam == undefined && this.render_options.draw_stem;\n ctx.openGroup('tabnote', this.getAttribute('id'), { pointerBBox: true });\n this.drawPositions();\n this.drawStemThrough();\n if (this.stem && render_stem) {\n const stem_x = this.getStemX();\n this.stem.setNoteHeadXBounds(stem_x, stem_x);\n this.stem.setContext(ctx).draw();\n }\n this.drawFlag();\n this.drawModifiers();\n ctx.closeGroup();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\nimport { Stave } from './stave';\nimport { Category } from './typeguard';\nexport class TabStave extends Stave {\n static get CATEGORY() {\n return Category.TabStave;\n }\n constructor(x, y, width, options) {\n const tab_options = Object.assign({ spacing_between_lines_px: 13, num_lines: 6, top_text_position: 1 }, options);\n super(x, y, width, tab_options);\n }\n getYForGlyphs() {\n return this.getYForLine(2.5);\n }\n // Deprecated\n addTabGlyph() {\n this.addClef('tab');\n return this;\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Cyril Silverman\n//\n// This file implements `TextBrackets` which extend between two notes.\n// The octave transposition markings (8va, 8vb, 15va, 15vb) can be created\n// using this class.\nimport { Element } from './element';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Renderer } from './renderer';\nimport { Tables } from './tables';\nimport { Category } from './typeguard';\nimport { log, RuntimeError } from './util';\n// To enable logging for this class. Set `Vex.Flow.TextBracket.DEBUG` to `true`.\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextBracket.DEBUG)\n log('Vex.Flow.TextBracket', args);\n}\nexport var TextBracketPosition;\n(function (TextBracketPosition) {\n TextBracketPosition[TextBracketPosition[\"TOP\"] = 1] = \"TOP\";\n TextBracketPosition[TextBracketPosition[\"BOTTOM\"] = -1] = \"BOTTOM\";\n})(TextBracketPosition || (TextBracketPosition = {}));\nexport class TextBracket extends Element {\n constructor({ start, stop, text = '', superscript = '', position = TextBracketPosition.TOP }) {\n super();\n this.start = start;\n this.stop = stop;\n this.text = text;\n this.superscript = superscript;\n this.position = typeof position === 'string' ? TextBracket.PositionString[position] : position;\n this.line = 1;\n this.resetFont();\n this.render_options = {\n dashed: true,\n dash: [5],\n color: 'black',\n line_width: 1,\n show_bracket: true,\n bracket_height: 8,\n // In the BOTTOM position, the bracket line can extend\n // under the superscript.\n underline_superscript: true,\n };\n }\n static get CATEGORY() {\n return Category.TextBracket;\n }\n static get Position() {\n return TextBracketPosition;\n }\n static get PositionString() {\n return {\n top: TextBracketPosition.TOP,\n bottom: TextBracketPosition.BOTTOM,\n };\n }\n /**\n * @deprecated Use `TextBracket.Position` instead.\n */\n static get Positions() {\n L('Positions is deprecated, use TextBracketPosition instead.');\n return TextBracketPosition;\n }\n /**\n * @deprecated Use `TextBracket.PositionString` instead.\n */\n static get PositionsString() {\n L('PositionsString is deprecated, use PositionString instead.');\n return TextBracket.PositionString;\n }\n /**\n * Apply the text backet styling to the provided context.\n * @param ctx\n * @returns this\n */\n applyStyle(ctx) {\n ctx.setFont(this.font);\n const options = this.render_options;\n ctx.setStrokeStyle(options.color);\n ctx.setFillStyle(options.color);\n ctx.setLineWidth(options.line_width);\n return this;\n }\n // Set whether the bracket line should be `dashed`. You can also\n // optionally set the `dash` pattern by passing in an array of numbers\n setDashed(dashed, dash) {\n this.render_options.dashed = dashed;\n if (dash)\n this.render_options.dash = dash;\n return this;\n }\n // Set the rendering `context` for the octave bracket\n setLine(line) {\n this.line = line;\n return this;\n }\n // Draw the octave bracket on the rendering context\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n let y = 0;\n switch (this.position) {\n case TextBracketPosition.TOP:\n y = this.start.checkStave().getYForTopText(this.line);\n break;\n case TextBracketPosition.BOTTOM:\n y = this.start.checkStave().getYForBottomText(this.line + Tables.TEXT_HEIGHT_OFFSET_HACK);\n break;\n default:\n throw new RuntimeError('InvalidPosition', `The position ${this.position} is invalid.`);\n }\n // Get the preliminary start and stop coordintates for the bracket\n const start = { x: this.start.getAbsoluteX(), y };\n const stop = { x: this.stop.getAbsoluteX(), y };\n L('Rendering TextBracket: start:', start, 'stop:', stop, 'y:', y);\n const bracket_height = this.render_options.bracket_height * this.position;\n ctx.save();\n this.applyStyle(ctx);\n // Draw text\n ctx.fillText(this.text, start.x, start.y);\n // Get the width and height for the octave number\n const main_measure = ctx.measureText(this.text);\n const main_width = main_measure.width;\n const main_height = main_measure.height;\n // Calculate the y position for the super script\n const super_y = start.y - main_height / 2.5;\n // We called this.resetFont() in the constructor, so we know this.textFont is available.\n // eslint-disable-next-line\n const { family, size, weight, style } = this.textFont;\n // To draw the superscript, we scale the font size by 1/1.4.\n const smallerFontSize = Font.scaleSize(size, 0.714286);\n ctx.setFont(family, smallerFontSize, weight, style);\n ctx.fillText(this.superscript, start.x + main_width + 1, super_y);\n // Determine width and height of the superscript\n const super_measure = ctx.measureText(this.superscript);\n const super_width = super_measure.width;\n const super_height = super_measure.height;\n // Setup initial coordinates for the bracket line\n let start_x = start.x;\n let line_y = super_y;\n const end_x = stop.x + this.stop.getGlyph().getWidth();\n // Adjust x and y coordinates based on position\n if (this.position === TextBracketPosition.TOP) {\n start_x += main_width + super_width + 5;\n line_y -= super_height / 2.7;\n }\n else if (this.position === TextBracketPosition.BOTTOM) {\n line_y += super_height / 2.7;\n start_x += main_width + 2;\n if (!this.render_options.underline_superscript) {\n start_x += super_width;\n }\n }\n if (this.render_options.dashed) {\n // Main line\n Renderer.drawDashedLine(ctx, start_x, line_y, end_x, line_y, this.render_options.dash);\n // Ending Bracket\n if (this.render_options.show_bracket) {\n Renderer.drawDashedLine(ctx, end_x, line_y + 1 * this.position, end_x, line_y + bracket_height, this.render_options.dash);\n }\n }\n else {\n ctx.beginPath();\n ctx.moveTo(start_x, line_y);\n // Main line\n ctx.lineTo(end_x, line_y);\n if (this.render_options.show_bracket) {\n // Ending bracket\n ctx.lineTo(end_x, line_y + bracket_height);\n }\n ctx.stroke();\n ctx.closePath();\n }\n ctx.restore();\n }\n}\nTextBracket.DEBUG = false;\nTextBracket.TEXT_FONT = {\n family: Font.SERIF,\n size: 15,\n weight: FontWeight.NORMAL,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Glyph } from './glyph';\nimport { Note } from './note';\nimport { Category } from './typeguard';\nimport { defined, log, RuntimeError } from './util';\n// eslint-disable-next-line\nfunction L(...args) {\n if (TextDynamics.DEBUG)\n log('Vex.Flow.TextDynamics', args);\n}\n/**\n * `TextDynamics` renders traditional\n * text dynamics markings, **ie: p, f, sfz, rfz, ppp**\n *\n * You can render any dynamics string that contains a combination of\n * the following letters: P, M, F, Z, R, S\n */\nexport class TextDynamics extends Note {\n /**\n * Create the dynamics marking.\n *\n * A `TextDynamics` object inherits from `Note` so that it can be formatted\n * within a `Voice`.\n *\n * @param noteStruct an object that contains a `duration` property and a\n * `sequence` of letters that represents the letters to render.\n */\n constructor(noteStruct) {\n super(noteStruct);\n this.sequence = (noteStruct.text || '').toLowerCase();\n this.line = noteStruct.line || 0;\n this.glyphs = [];\n this.render_options = Object.assign(Object.assign({}, this.render_options), { glyph_font_size: 40 });\n L('New Dynamics Text: ', this.sequence);\n }\n static get CATEGORY() {\n return Category.TextDynamics;\n }\n /** The glyph data for each dynamics letter. */\n static get GLYPHS() {\n return {\n f: {\n code: 'dynamicForte',\n width: 12,\n },\n p: {\n code: 'dynamicPiano',\n width: 14,\n },\n m: {\n code: 'dynamicMezzo',\n width: 17,\n },\n s: {\n code: 'dynamicSforzando',\n width: 10,\n },\n z: {\n code: 'dynamicZ',\n width: 12,\n },\n r: {\n code: 'dynamicRinforzando',\n width: 12,\n },\n };\n }\n /** Set the Stave line on which the note should be placed. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Preformat the dynamics text. */\n preFormat() {\n let total_width = 0;\n // length of this.glyphs must be <=\n // length of this.sequence, so if we're formatted before\n // create new glyphs.\n this.glyphs = [];\n // Iterate through each letter\n this.sequence.split('').forEach((letter) => {\n // Get the glyph data for the letter\n const glyph_data = TextDynamics.GLYPHS[letter];\n if (!glyph_data)\n throw new RuntimeError('Invalid dynamics character: ' + letter);\n const size = defined(this.render_options.glyph_font_size);\n const glyph = new Glyph(glyph_data.code, size, { category: 'textNote' });\n // Add the glyph\n this.glyphs.push(glyph);\n total_width += glyph_data.width;\n });\n // Store the width of the text\n this.setWidth(total_width);\n this.preFormatted = true;\n return this;\n }\n /** Draw the dynamics text on the rendering context. */\n draw() {\n this.setRendered();\n const x = this.getAbsoluteX();\n const y = this.checkStave().getYForLine(this.line + -3);\n L('Rendering Dynamics: ', this.sequence);\n let letter_x = x;\n this.glyphs.forEach((glyph, index) => {\n const current_letter = this.sequence[index];\n glyph.render(this.checkContext(), letter_x, y);\n letter_x += TextDynamics.GLYPHS[current_letter].width;\n });\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.TextDynamics.DEBUG` to `true`. */\nTextDynamics.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author Taehoon Moon 2014\nimport { Note } from './note';\nimport { TimeSignature } from './timesignature';\nimport { Category } from './typeguard';\nexport class TimeSigNote extends Note {\n constructor(timeSpec, customPadding) {\n super({ duration: 'b' });\n const timeSignature = new TimeSignature(timeSpec, customPadding);\n this.timeSigInfo = timeSignature.getInfo();\n this.setWidth(this.timeSigInfo.glyph.getMetrics().width);\n // Note properties\n this.ignore_ticks = true;\n }\n static get CATEGORY() {\n return Category.TimeSigNote;\n }\n /* Overridden to ignore */\n // eslint-disable-next-line\n addToModifierContext(mc) {\n // DO NOTHING.\n return this;\n }\n preFormat() {\n this.preFormatted = true;\n return this;\n }\n draw() {\n const stave = this.checkStave();\n const ctx = this.checkContext();\n this.setRendered();\n if (!this.timeSigInfo.glyph.getContext()) {\n this.timeSigInfo.glyph.setContext(ctx);\n }\n this.timeSigInfo.glyph.setStave(stave);\n this.timeSigInfo.glyph.setYShift(stave.getYForLine(2) - stave.getYForGlyphs());\n this.timeSigInfo.glyph.renderToStave(this.getAbsoluteX());\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Balazs Forian-Szabo\n// MIT License\nimport { Element } from './element';\nimport { Category } from './typeguard';\nimport { log } from './util';\nimport { Vibrato } from './vibrato';\n// eslint-disable-next-line\nfunction L(...args) {\n if (VibratoBracket.DEBUG)\n log('Vex.Flow.VibratoBracket', args);\n}\n/** `VibratoBracket` renders vibrato effect between two notes. */\nexport class VibratoBracket extends Element {\n /**\n * Either the stop or start note must be set, or both of them.\n * An undefined value for the start or stop note indicates that the vibrato\n * is drawn from the beginning or until the end of the stave accordingly.\n */\n constructor(bracket_data) {\n super();\n if (bracket_data.start)\n this.start = bracket_data.start;\n if (bracket_data.stop)\n this.stop = bracket_data.stop;\n this.line = 1;\n this.render_options = {\n harsh: false,\n wave_height: 6,\n wave_width: 4,\n wave_girth: 2,\n vibrato_width: 0,\n };\n }\n static get CATEGORY() {\n return Category.VibratoBracket;\n }\n /** Set line position of the vibrato bracket. */\n setLine(line) {\n this.line = line;\n return this;\n }\n /** Set harsh vibrato bracket. */\n setHarsh(harsh) {\n this.render_options.harsh = harsh;\n return this;\n }\n /** Draw the vibrato bracket on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n this.setRendered();\n const y = (this.start && this.start.checkStave().getYForTopText(this.line)) ||\n (this.stop && this.stop.checkStave().getYForTopText(this.line)) ||\n 0;\n // If start note is not set then vibrato will be drawn\n // from the beginning of the stave\n const start_x = (this.start && this.start.getAbsoluteX()) || (this.stop && this.stop.checkStave().getTieStartX()) || 0;\n // If stop note is not set then vibrato will be drawn\n // until the end of the stave\n const stop_x = (this.stop && this.stop.getAbsoluteX() - this.stop.getWidth() - 5) ||\n (this.start && this.start.checkStave().getTieEndX() - 10) ||\n 0;\n this.render_options.vibrato_width = stop_x - start_x;\n L('Rendering VibratoBracket: start_x:', start_x, 'stop_x:', stop_x, 'y:', y);\n Vibrato.renderVibrato(ctx, start_x, y, this.render_options);\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.VibratoBracket.DEBUG` to `true`. */\nVibratoBracket.DEBUG = false;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Mohit Cheppudira\n// MIT License\nimport { Accidental } from './accidental';\nimport { Annotation, AnnotationHorizontalJustify, AnnotationVerticalJustify } from './annotation';\nimport { Articulation } from './articulation';\nimport { BarNote } from './barnote';\nimport { Beam } from './beam';\nimport { ChordSymbol } from './chordsymbol';\nimport { ClefNote } from './clefnote';\nimport { Curve } from './curve';\nimport { EasyScore } from './easyscore';\nimport { Element } from './element';\nimport { Formatter } from './formatter';\nimport { FretHandFinger } from './frethandfinger';\nimport { GhostNote } from './ghostnote';\nimport { GlyphNote } from './glyphnote';\nimport { GraceNote } from './gracenote';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { KeySigNote } from './keysignote';\nimport { ModifierContext } from './modifiercontext';\nimport { MultiMeasureRest } from './multimeasurerest';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { PedalMarking } from './pedalmarking';\nimport { Renderer } from './renderer';\nimport { RepeatNote } from './repeatnote';\nimport { Stave } from './stave';\nimport { StaveConnector } from './staveconnector';\nimport { StaveLine } from './staveline';\nimport { StaveNote } from './stavenote';\nimport { StaveTie } from './stavetie';\nimport { StringNumber } from './stringnumber';\nimport { System } from './system';\nimport { TabNote } from './tabnote';\nimport { TabStave } from './tabstave';\nimport { TextBracket } from './textbracket';\nimport { TextDynamics } from './textdynamics';\nimport { TextNote } from './textnote';\nimport { TickContext } from './tickcontext';\nimport { TimeSigNote } from './timesignote';\nimport { Tuplet } from './tuplet';\nimport { defined, log, RuntimeError } from './util';\nimport { VibratoBracket } from './vibratobracket';\nimport { Voice } from './voice';\nimport { isHTMLCanvas } from './web';\n// eslint-disable-next-line\nfunction L(...args) {\n if (Factory.DEBUG)\n log('Vex.Flow.Factory', args);\n}\n/**\n * Factory implements a high level API around VexFlow.\n */\nexport class Factory {\n /**\n * Example:\n *\n * Create an SVG renderer and attach it to the DIV element named \"boo\" to render using 1200 and 600\n *\n * `const vf: Factory = new Vex.Flow.Factory({renderer: { elementId: 'boo', width: 1200, height: 600 }});`\n */\n constructor(options = {}) {\n L('New factory: ', options);\n this.options = {\n stave: {\n space: 10,\n },\n renderer: {\n elementId: '',\n width: 500,\n height: 200,\n background: '#FFF',\n },\n font: Factory.TEXT_FONT,\n };\n this.setOptions(options);\n }\n /**\n * Static simplified function to access constructor without providing FactoryOptions\n *\n * Example:\n *\n * Create an SVG renderer and attach it to the DIV element named \"boo\" to render using 1200 and 600\n *\n * `const vf: Factory = Vex.Flow.Factory.newFromElementId('boo', 1200, 600 );`\n */\n static newFromElementId(elementId, width = 500, height = 200) {\n return new Factory({ renderer: { elementId, width, height } });\n }\n reset() {\n this.renderQ = [];\n this.systems = [];\n this.staves = [];\n this.voices = [];\n this.stave = undefined; // current stave\n }\n setOptions(options) {\n this.options = Object.assign(Object.assign({}, this.options), options);\n this.initRenderer();\n this.reset();\n }\n initRenderer() {\n const { elementId, width, height, background } = this.options.renderer;\n if (elementId == null) {\n return;\n }\n if (elementId == '') {\n L(this);\n throw new RuntimeError('renderer.elementId not set in FactoryOptions');\n }\n let backend = this.options.renderer.backend;\n if (backend === undefined) {\n const elem = document.getElementById(elementId);\n // We use a custom type check here, because node-canvas mimics canvas,\n // but is not an instance of window.HTMLCanvasElement.\n // In fact, `window` might be undefined here.\n // See: https://www.npmjs.com/package/canvas\n if (isHTMLCanvas(elem)) {\n backend = Renderer.Backends.CANVAS;\n }\n else {\n backend = Renderer.Backends.SVG;\n }\n }\n this.context = Renderer.buildContext(elementId, backend, width, height, background);\n }\n getContext() {\n return this.context;\n }\n setContext(context) {\n this.context = context;\n return this;\n }\n getStave() {\n return this.stave;\n }\n getVoices() {\n return this.voices;\n }\n /** Return pixels from current stave spacing. */\n Stave(params) {\n const staveSpace = this.options.stave.space;\n const p = Object.assign({ x: 0, y: 0, width: this.options.renderer.width - staveSpace * 1.0, options: { spacing_between_lines_px: staveSpace * 1.0 } }, params);\n const stave = new Stave(p.x, p.y, p.width, p.options);\n this.staves.push(stave);\n stave.setContext(this.context);\n this.stave = stave;\n return stave;\n }\n TabStave(params) {\n const staveSpace = this.options.stave.space;\n const p = Object.assign({ x: 0, y: 0, width: this.options.renderer.width - staveSpace * 1.0, options: { spacing_between_lines_px: staveSpace * 1.3 } }, params);\n const stave = new TabStave(p.x, p.y, p.width, p.options);\n this.staves.push(stave);\n stave.setContext(this.context);\n this.stave = stave;\n return stave;\n }\n StaveNote(noteStruct) {\n const note = new StaveNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GlyphNote(glyph, noteStruct, options) {\n const note = new GlyphNote(glyph, noteStruct, options);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n RepeatNote(type, noteStruct, options) {\n const note = new RepeatNote(type, noteStruct, options);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GhostNote(noteStruct) {\n const ghostNote = new GhostNote(noteStruct);\n if (this.stave)\n ghostNote.setStave(this.stave);\n ghostNote.setContext(this.context);\n this.renderQ.push(ghostNote);\n return ghostNote;\n }\n TextNote(noteStruct) {\n const textNote = new TextNote(noteStruct);\n if (this.stave)\n textNote.setStave(this.stave);\n textNote.setContext(this.context);\n this.renderQ.push(textNote);\n return textNote;\n }\n BarNote(params = {}) {\n const barNote = new BarNote(params.type);\n if (this.stave)\n barNote.setStave(this.stave);\n barNote.setContext(this.context);\n this.renderQ.push(barNote);\n return barNote;\n }\n ClefNote(params) {\n const p = Object.assign({ type: 'treble', options: {\n size: 'default',\n annotation: undefined,\n } }, params);\n const clefNote = new ClefNote(p.type, p.options.size, p.options.annotation);\n if (this.stave)\n clefNote.setStave(this.stave);\n clefNote.setContext(this.context);\n this.renderQ.push(clefNote);\n return clefNote;\n }\n TimeSigNote(params) {\n const p = Object.assign({ time: '4/4' }, params);\n const timeSigNote = new TimeSigNote(p.time);\n if (this.stave)\n timeSigNote.setStave(this.stave);\n timeSigNote.setContext(this.context);\n this.renderQ.push(timeSigNote);\n return timeSigNote;\n }\n KeySigNote(params) {\n const keySigNote = new KeySigNote(params.key, params.cancelKey, params.alterKey);\n if (this.stave)\n keySigNote.setStave(this.stave);\n keySigNote.setContext(this.context);\n this.renderQ.push(keySigNote);\n return keySigNote;\n }\n TabNote(noteStruct) {\n const note = new TabNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n this.renderQ.push(note);\n return note;\n }\n GraceNote(noteStruct) {\n const note = new GraceNote(noteStruct);\n if (this.stave)\n note.setStave(this.stave);\n note.setContext(this.context);\n return note;\n }\n GraceNoteGroup(params) {\n const group = new GraceNoteGroup(params.notes, params.slur);\n group.setContext(this.context);\n return group;\n }\n Accidental(params) {\n const accid = new Accidental(params.type);\n accid.setContext(this.context);\n return accid;\n }\n Annotation(params) {\n const p = Object.assign({ text: 'p', hJustify: AnnotationHorizontalJustify.CENTER, vJustify: AnnotationVerticalJustify.BOTTOM }, params);\n const annotation = new Annotation(p.text);\n annotation.setJustification(p.hJustify);\n annotation.setVerticalJustification(p.vJustify);\n annotation.setFont(p.font);\n annotation.setContext(this.context);\n return annotation;\n }\n ChordSymbol(params) {\n const p = Object.assign({ vJustify: 'top', hJustify: 'center', kerning: true, reportWidth: true }, params);\n const chordSymbol = new ChordSymbol();\n chordSymbol.setHorizontal(p.hJustify);\n chordSymbol.setVertical(p.vJustify);\n chordSymbol.setEnableKerning(p.kerning);\n chordSymbol.setReportWidth(p.reportWidth);\n // There is a default font based on the engraving font. Only set then\n // font if it is specific, else use the default\n if (typeof p.fontFamily === 'string' && typeof p.fontSize === 'number') {\n if (typeof p.fontWeight === 'string')\n chordSymbol.setFont(p.fontFamily, p.fontSize, p.fontWeight);\n else\n chordSymbol.setFont(p.fontFamily, p.fontSize, '');\n }\n else if (typeof p.fontSize === 'number') {\n chordSymbol.setFontSize(p.fontSize);\n }\n chordSymbol.setContext(this.context);\n return chordSymbol;\n }\n Articulation(params) {\n const p = Object.assign({ type: 'a.', position: 'above' }, params);\n const articulation = new Articulation(p.type);\n articulation.setPosition(p.position);\n articulation.setContext(this.context);\n return articulation;\n }\n Ornament(type, params) {\n const options = Object.assign({ type, position: 0, accidental: '' }, params);\n const ornament = new Ornament(type);\n ornament.setPosition(options.position);\n if (options.upperAccidental) {\n ornament.setUpperAccidental(options.upperAccidental);\n }\n if (options.lowerAccidental) {\n ornament.setLowerAccidental(options.lowerAccidental);\n }\n if (typeof options.delayed !== 'undefined') {\n ornament.setDelayed(options.delayed);\n }\n ornament.setContext(this.context);\n return ornament;\n }\n TextDynamics(params) {\n const p = Object.assign({ text: 'p', duration: 'q', dots: 0, line: 0 }, params);\n const text = new TextDynamics({\n text: p.text,\n line: p.line,\n duration: p.duration,\n dots: p.dots,\n });\n if (this.stave)\n text.setStave(this.stave);\n text.setContext(this.context);\n this.renderQ.push(text);\n return text;\n }\n Fingering(params) {\n const p = Object.assign({ number: '0', position: 'left' }, params);\n const fingering = new FretHandFinger(p.number);\n fingering.setPosition(p.position);\n fingering.setContext(this.context);\n return fingering;\n }\n StringNumber(params, drawCircle = true) {\n const stringNumber = new StringNumber(params.number);\n stringNumber.setPosition(params.position);\n stringNumber.setContext(this.context);\n stringNumber.setDrawCircle(drawCircle);\n return stringNumber;\n }\n TickContext() {\n return new TickContext();\n }\n ModifierContext() {\n return new ModifierContext();\n }\n MultiMeasureRest(params) {\n const numMeasures = defined(params.number_of_measures, 'NoNumberOfMeasures');\n const multiMeasureRest = new MultiMeasureRest(numMeasures, params);\n multiMeasureRest.setContext(this.context);\n this.renderQ.push(multiMeasureRest);\n return multiMeasureRest;\n }\n Voice(params) {\n const p = Object.assign({ time: '4/4' }, params);\n const voice = new Voice(p.time);\n this.voices.push(voice);\n return voice;\n }\n StaveConnector(params) {\n const connector = new StaveConnector(params.top_stave, params.bottom_stave);\n connector.setType(params.type).setContext(this.context);\n this.renderQ.push(connector);\n return connector;\n }\n Formatter(options) {\n return new Formatter(options);\n }\n Tuplet(params) {\n const p = Object.assign({ notes: [], options: {} }, params);\n const tuplet = new Tuplet(p.notes, p.options).setContext(this.context);\n this.renderQ.push(tuplet);\n return tuplet;\n }\n Beam(params) {\n var _a, _b, _c, _d, _e;\n const beam = new Beam(params.notes, (_a = params.options) === null || _a === void 0 ? void 0 : _a.autoStem).setContext(this.context);\n beam.breakSecondaryAt((_c = (_b = params.options) === null || _b === void 0 ? void 0 : _b.secondaryBeamBreaks) !== null && _c !== void 0 ? _c : []);\n if ((_d = params.options) === null || _d === void 0 ? void 0 : _d.partialBeamDirections) {\n Object.entries((_e = params.options) === null || _e === void 0 ? void 0 : _e.partialBeamDirections).forEach(([noteIndex, direction]) => {\n beam.setPartialBeamSideAt(Number(noteIndex), direction);\n });\n }\n this.renderQ.push(beam);\n return beam;\n }\n Curve(params) {\n const curve = new Curve(params.from, params.to, params.options).setContext(this.context);\n this.renderQ.push(curve);\n return curve;\n }\n StaveTie(params) {\n var _a;\n const tie = new StaveTie({\n first_note: params.from,\n last_note: params.to,\n first_indices: params.first_indices,\n last_indices: params.last_indices,\n }, params.text);\n if ((_a = params.options) === null || _a === void 0 ? void 0 : _a.direction)\n tie.setDirection(params.options.direction);\n tie.setContext(this.context);\n this.renderQ.push(tie);\n return tie;\n }\n StaveLine(params) {\n var _a, _b;\n const line = new StaveLine({\n first_note: params.from,\n last_note: params.to,\n first_indices: params.first_indices,\n last_indices: params.last_indices,\n });\n if ((_a = params.options) === null || _a === void 0 ? void 0 : _a.text)\n line.setText(params.options.text);\n if ((_b = params.options) === null || _b === void 0 ? void 0 : _b.font)\n line.setFont(params.options.font);\n line.setContext(this.context);\n this.renderQ.push(line);\n return line;\n }\n VibratoBracket(params) {\n const vibratoBracket = new VibratoBracket({\n start: params.from,\n stop: params.to,\n });\n if (params.options.line)\n vibratoBracket.setLine(params.options.line);\n if (params.options.harsh)\n vibratoBracket.setHarsh(params.options.harsh);\n vibratoBracket.setContext(this.context);\n this.renderQ.push(vibratoBracket);\n return vibratoBracket;\n }\n TextBracket(params) {\n const textBracket = new TextBracket({\n start: params.from,\n stop: params.to,\n text: params.text,\n superscript: params.options.superscript,\n position: params.options.position,\n });\n if (params.options.line)\n textBracket.setLine(params.options.line);\n if (params.options.font)\n textBracket.setFont(params.options.font);\n textBracket.setContext(this.context);\n this.renderQ.push(textBracket);\n return textBracket;\n }\n System(params = {}) {\n params.factory = this;\n const system = new System(params).setContext(this.context);\n this.systems.push(system);\n return system;\n }\n /**\n * Creates EasyScore. Normally the first step after constructing a Factory. For example:\n * ```\n * const vf: Factory = new Vex.Flow.Factory({renderer: { elementId: 'boo', width: 1200, height: 600 }});\n * const score: EasyScore = vf.EasyScore();\n * ```\n * @param options.factory optional instance of Factory\n * @param options.builder instance of Builder\n * @param options.commitHooks function to call after a note element is created\n * @param options.throwOnError throw error in case of parsing error\n */\n EasyScore(options = {}) {\n options.factory = this;\n return new EasyScore(options);\n }\n PedalMarking(params) {\n const p = Object.assign({ notes: [], options: {\n style: 'mixed',\n } }, params);\n const pedal = new PedalMarking(p.notes);\n pedal.setType(PedalMarking.typeString[p.options.style]);\n pedal.setContext(this.context);\n this.renderQ.push(pedal);\n return pedal;\n }\n NoteSubGroup(params) {\n const p = Object.assign({ notes: [] }, params);\n const group = new NoteSubGroup(p.notes);\n group.setContext(this.context);\n return group;\n }\n /** Render the score. */\n draw() {\n const ctx = this.context;\n this.systems.forEach((s) => s.setContext(ctx).format());\n this.staves.forEach((s) => s.setContext(ctx).draw());\n this.voices.forEach((v) => v.setContext(ctx).draw());\n this.renderQ.forEach((e) => {\n if (!e.isRendered())\n e.setContext(ctx).draw();\n });\n this.systems.forEach((s) => s.setContext(ctx).draw());\n this.reset();\n }\n}\n/** To enable logging for this class. Set `Vex.Flow.Factory.DEBUG` to `true`. */\nFactory.DEBUG = false;\n/** Default text font. */\nFactory.TEXT_FONT = Object.assign({}, Element.TEXT_FONT);\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// @author Balazs Forian-Szabo\n//\n// ## Description\n//\n// A basic implementation of grace notes\n// to be rendered on a tab stave.\n//\n// See `tests/gracetabnote_tests.ts` for usage examples.\nimport { Font } from './font';\nimport { TabNote } from './tabnote';\nimport { Category } from './typeguard';\nexport class GraceTabNote extends TabNote {\n static get CATEGORY() {\n return Category.GraceTabNote;\n }\n constructor(noteStruct) {\n super(noteStruct, false);\n this.render_options = Object.assign(Object.assign({}, this.render_options), { \n // vertical shift from stave line\n y_shift: 0.3, \n // grace glyph scale\n scale: 0.6, \n // grace tablature font\n font: `7.5pt ${Font.SANS_SERIF}` });\n this.updateWidth();\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n//\n// This class implements diatonic key management.\nimport { Music } from './music';\nimport { RuntimeError } from './util';\nexport class KeyManager {\n constructor(key) {\n this.music = new Music();\n this.setKey(key);\n }\n setKey(key) {\n this.key = key;\n this.reset();\n return this;\n }\n getKey() {\n return this.key;\n }\n reset() {\n this.keyParts = this.music.getKeyParts(this.key);\n this.keyString = this.keyParts.root;\n if (this.keyParts.accidental)\n this.keyString += this.keyParts.accidental;\n const is_supported_type = Music.scaleTypes[this.keyParts.type];\n if (!is_supported_type) {\n throw new RuntimeError('BadArguments', `Unsupported key type: ${this.key}`);\n }\n this.scale = this.music.getScaleTones(this.music.getNoteValue(this.keyString), Music.scaleTypes[this.keyParts.type]);\n this.scaleMap = {};\n this.scaleMapByValue = {};\n this.originalScaleMapByValue = {};\n const noteLocation = Music.root_indices[this.keyParts.root];\n for (let i = 0; i < Music.roots.length; ++i) {\n const index = (noteLocation + i) % Music.roots.length;\n const rootName = Music.roots[index];\n const noteName = this.music.getRelativeNoteName(rootName, this.scale[i]);\n this.scaleMap[rootName] = noteName;\n this.scaleMapByValue[this.scale[i]] = noteName;\n this.originalScaleMapByValue[this.scale[i]] = noteName;\n }\n return this;\n }\n getAccidental(key) {\n const root = this.music.getKeyParts(key).root;\n const parts = this.music.getNoteParts(this.scaleMap[root]);\n return {\n note: this.scaleMap[root],\n accidental: parts.accidental,\n };\n }\n selectNote(note) {\n note = note.toLowerCase();\n const parts = this.music.getNoteParts(note);\n // First look for matching note in our altered scale\n const scaleNote = this.scaleMap[parts.root];\n const modparts = this.music.getNoteParts(scaleNote);\n if (scaleNote === note) {\n return {\n note: scaleNote,\n accidental: parts.accidental,\n change: false,\n };\n }\n // Then search for a note of equivalent value in our altered scale\n const valueNote = this.scaleMapByValue[this.music.getNoteValue(note)];\n if (valueNote != null) {\n return {\n note: valueNote,\n accidental: this.music.getNoteParts(valueNote).accidental,\n change: false,\n };\n }\n // Then search for a note of equivalent value in the original scale\n const originalValueNote = this.originalScaleMapByValue[this.music.getNoteValue(note)];\n if (originalValueNote != null) {\n this.scaleMap[modparts.root] = originalValueNote;\n delete this.scaleMapByValue[this.music.getNoteValue(scaleNote)];\n this.scaleMapByValue[this.music.getNoteValue(note)] = originalValueNote;\n return {\n note: originalValueNote,\n accidental: this.music.getNoteParts(originalValueNote).accidental,\n change: true,\n };\n }\n // Then try to unmodify a currently modified note.\n if (modparts.root === note) {\n delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])];\n this.scaleMapByValue[this.music.getNoteValue(modparts.root)] = modparts.root;\n this.scaleMap[modparts.root] = modparts.root;\n return {\n note: modparts.root,\n accidental: undefined,\n change: true,\n };\n }\n // Last resort -- shitshoot\n delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])];\n this.scaleMapByValue[this.music.getNoteValue(note)] = note;\n delete this.scaleMap[modparts.root];\n this.scaleMap[modparts.root] = note;\n return {\n note,\n accidental: parts.accidental,\n change: true,\n };\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// ## Description\n// Author: Raffaele Viglianti, 2012 http://itisnotsound.wordpress.com/\n//\n// This class implements hairpins between notes.\n// Hairpins can be either crescendo or decrescendo.\nimport { Element } from './element';\nimport { Modifier } from './modifier';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class StaveHairpin extends Element {\n /**\n * Create a new hairpin from the specified notes.\n *\n * @param {!Object} notes The notes to tie up.\n * Notes is a struct that has:\n *\n * {\n * first_note: Note,\n * last_note: Note,\n * }\n * @param {!Object} type The type of hairpin\n */\n constructor(notes, type) {\n super();\n this.setNotes(notes);\n this.hairpin = type;\n this.position = Modifier.Position.BELOW;\n this.render_options = {\n height: 10,\n y_shift: 0,\n left_shift_px: 0,\n right_shift_px: 0,\n right_shift_ticks: 0,\n left_shift_ticks: 0,\n };\n }\n static get CATEGORY() {\n return Category.StaveHairpin;\n }\n /* Helper function to convert ticks into pixels.\n * Requires a Formatter with voices joined and formatted (to\n * get pixels per tick)\n *\n * options is struct that has:\n *\n * {\n * height: px,\n * y_shift: px, // vertical offset\n * left_shift_ticks: 0, // left horizontal offset expressed in ticks\n * right_shift_ticks: 0 // right horizontal offset expressed in ticks\n * }\n *\n **/\n static FormatByTicksAndDraw(ctx, formatter, notes, type, position, options) {\n var _a, _b;\n const ppt = formatter.pixelsPerTick;\n if (ppt == null) {\n throw new RuntimeError('BadArguments', 'A valid Formatter must be provide to draw offsets by ticks.');\n }\n const l_shift_px = ppt * ((_a = options.left_shift_ticks) !== null && _a !== void 0 ? _a : 0);\n const r_shift_px = ppt * ((_b = options.right_shift_ticks) !== null && _b !== void 0 ? _b : 0);\n const hairpin_options = {\n height: options.height,\n y_shift: options.y_shift,\n left_shift_px: l_shift_px,\n right_shift_px: r_shift_px,\n right_shift_ticks: 0,\n left_shift_ticks: 0,\n };\n new StaveHairpin({\n first_note: notes.first_note,\n last_note: notes.last_note,\n }, type)\n .setContext(ctx)\n .setRenderOptions(hairpin_options)\n .setPosition(position)\n .draw();\n }\n setPosition(position) {\n if (position === Modifier.Position.ABOVE || position === Modifier.Position.BELOW) {\n this.position = position;\n }\n return this;\n }\n setRenderOptions(options) {\n if (options.height != null &&\n options.y_shift != null &&\n options.left_shift_px != null &&\n options.right_shift_px != null) {\n this.render_options = options;\n }\n return this;\n }\n /**\n * Set the notes to attach this hairpin to.\n *\n * @param {!Object} notes The start and end notes.\n */\n setNotes(notes) {\n if (!notes.first_note && !notes.last_note) {\n throw new RuntimeError('BadArguments', 'Hairpin needs to have either first_note or last_note set.');\n }\n this.notes = notes;\n this.first_note = notes.first_note;\n this.last_note = notes.last_note;\n return this;\n }\n renderHairpin(params) {\n const ctx = this.checkContext();\n let dis = this.render_options.y_shift + 20;\n let y_shift = params.first_y;\n if (this.position === Modifier.Position.ABOVE) {\n dis = -dis + 30;\n y_shift = params.first_y - params.staff_height;\n }\n const l_shift = this.render_options.left_shift_px;\n const r_shift = this.render_options.right_shift_px;\n ctx.beginPath();\n switch (this.hairpin) {\n case StaveHairpin.type.CRESC:\n ctx.moveTo(params.last_x + r_shift, y_shift + dis);\n ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height / 2 + dis);\n ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height + dis);\n break;\n case StaveHairpin.type.DECRESC:\n ctx.moveTo(params.first_x + l_shift, y_shift + dis);\n ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height / 2 + dis);\n ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height + dis);\n break;\n default:\n // Default is NONE, so nothing to draw\n break;\n }\n ctx.stroke();\n ctx.closePath();\n }\n draw() {\n this.checkContext();\n this.setRendered();\n const firstNote = this.first_note;\n const lastNote = this.last_note;\n if (!firstNote || !lastNote)\n throw new RuntimeError('NoNote', 'Notes required to draw');\n const start = firstNote.getModifierStartXY(this.position, 0);\n const end = lastNote.getModifierStartXY(this.position, 0);\n this.renderHairpin({\n first_x: start.x,\n last_x: end.x,\n first_y: firstNote.checkStave().getY() + firstNote.checkStave().getHeight(),\n last_y: lastNote.checkStave().getY() + lastNote.checkStave().getHeight(),\n staff_height: firstNote.checkStave().getHeight(),\n });\n }\n}\nStaveHairpin.type = {\n CRESC: 1,\n DECRESC: 2,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// This class implements varies types of ties between contiguous notes. The\n// ties include: regular ties, hammer ons, pull offs, and slides.\nimport { Font, FontStyle, FontWeight } from './font';\nimport { TabTie } from './tabtie';\nimport { Category } from './typeguard';\nimport { RuntimeError } from './util';\nexport class TabSlide extends TabTie {\n /**\n * @param notes is a struct of the form:\n * {\n * first_note: Note,\n * last_note: Note,\n * first_indices: [n1, n2, n3],\n * last_indices: [n1, n2, n3]\n * }\n * @param notes.first_note the starting note of the slide\n * @param notes.last_note the ending note of the slide\n * @param notes.first_indices specifies which string + fret positions of the TabNote are used in this slide. zero indexed.\n * @param notes.last_indices currently unused. we assume it's the same as first_indices.\n *\n * @param direction TabSlide.SLIDE_UP or TabSlide.SLIDE_DOWN\n */\n constructor(notes, direction) {\n super(notes, 'sl.');\n // Determine the direction automatically if it is not provided.\n if (!direction) {\n let first_fret = notes.first_note.getPositions()[0].fret;\n if (typeof first_fret === 'string') {\n first_fret = parseInt(first_fret, 10);\n }\n let last_fret = notes.last_note.getPositions()[0].fret;\n if (typeof last_fret === 'string') {\n last_fret = parseInt(last_fret, 10);\n }\n // If either of the frets are 'X', parseInt() above will return NaN.\n // Choose TabSlide.SLIDE_UP by default.\n if (isNaN(first_fret) || isNaN(last_fret)) {\n direction = TabSlide.SLIDE_UP;\n }\n else {\n direction = first_fret > last_fret ? TabSlide.SLIDE_DOWN : TabSlide.SLIDE_UP;\n }\n }\n this.direction = direction;\n this.render_options.cp1 = 11;\n this.render_options.cp2 = 14;\n this.render_options.y_shift = 0.5;\n this.resetFont();\n }\n static get CATEGORY() {\n return Category.TabSlide;\n }\n static get SLIDE_UP() {\n return 1;\n }\n static get SLIDE_DOWN() {\n return -1;\n }\n static createSlideUp(notes) {\n return new TabSlide(notes, TabSlide.SLIDE_UP);\n }\n static createSlideDown(notes) {\n return new TabSlide(notes, TabSlide.SLIDE_DOWN);\n }\n renderTie(params) {\n if (params.first_ys.length === 0 || params.last_ys.length === 0) {\n throw new RuntimeError('BadArguments', 'No Y-values to render');\n }\n const ctx = this.checkContext();\n const first_x_px = params.first_x_px;\n const first_ys = params.first_ys;\n const last_x_px = params.last_x_px;\n const direction = params.direction;\n if (direction !== TabSlide.SLIDE_UP && direction !== TabSlide.SLIDE_DOWN) {\n throw new RuntimeError('BadSlide', 'Invalid slide direction');\n }\n // eslint-disable-next-line\n const first_indices = this.notes.first_indices;\n for (let i = 0; i < first_indices.length; ++i) {\n const slide_y = first_ys[first_indices[i]] + this.render_options.y_shift;\n if (isNaN(slide_y)) {\n throw new RuntimeError('BadArguments', 'Bad indices for slide rendering.');\n }\n ctx.beginPath();\n ctx.moveTo(first_x_px, slide_y + 3 * direction);\n ctx.lineTo(last_x_px, slide_y - 3 * direction);\n ctx.closePath();\n ctx.stroke();\n }\n this.setRendered();\n }\n}\nTabSlide.TEXT_FONT = {\n family: Font.SERIF,\n size: 10,\n weight: FontWeight.BOLD,\n style: FontStyle.ITALIC,\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// Author: Mike Corrigan \n// MIT License\nimport { Glyph } from './glyph';\nimport { GraceNote } from './gracenote';\nimport { Modifier } from './modifier';\nimport { Stem } from './stem';\nimport { Tables } from './tables';\nimport { Category, isGraceNote } from './typeguard';\n/** Tremolo implements tremolo notation. */\nexport class Tremolo extends Modifier {\n /**\n * @param num number of bars\n */\n constructor(num) {\n super();\n this.num = num;\n this.position = Modifier.Position.CENTER;\n this.code = 'tremolo1';\n // big strokes scales initialised to 1 (no scale)\n this.y_spacing_scale = 1;\n this.extra_stroke_scale = 1;\n }\n static get CATEGORY() {\n return Category.Tremolo;\n }\n /** Draw the tremolo on the rendering context. */\n draw() {\n const ctx = this.checkContext();\n const note = this.checkAttachedNote();\n this.setRendered();\n const stemDirection = note.getStemDirection();\n const start = note.getModifierStartXY(this.position, this.index);\n let x = start.x;\n const gn = isGraceNote(note);\n const scale = gn ? GraceNote.SCALE : 1;\n const category = `tremolo.${gn ? 'grace' : 'default'}`;\n const musicFont = Tables.currentMusicFont();\n let y_spacing = musicFont.lookupMetric(`${category}.spacing`) * stemDirection;\n // add y_spacing_scale for big strokes (#1258)\n y_spacing *= this.y_spacing_scale;\n const height = this.num * y_spacing;\n let y = note.getStemExtents().baseY - height;\n if (stemDirection < 0) {\n y += musicFont.lookupMetric(`${category}.offsetYStemDown`) * scale;\n }\n else {\n y += musicFont.lookupMetric(`${category}.offsetYStemUp`) * scale;\n }\n const fontScale = musicFont.lookupMetric(`${category}.point`);\n x += musicFont.lookupMetric(`${category}.offsetXStem${stemDirection === Stem.UP ? 'Up' : 'Down'}`);\n for (let i = 0; i < this.num; ++i) {\n Glyph.renderGlyph(ctx, x, y, fontScale, this.code, { category, scale: this.extra_stroke_scale });\n y += y_spacing;\n }\n }\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Tables } from './tables';\nimport { RuntimeError } from './util';\n/** `Tuning` implements varies types of tunings for tablature. */\nexport class Tuning {\n /**\n * Constructor.\n * @param tuningString tuning name (eg. 'dagdad') or comma separated note strings\n */\n constructor(tuningString = 'E/5,B/4,G/4,D/4,A/3,E/3,B/2,E/2') {\n this.tuningValues = [];\n // Default to standard tuning.\n this.setTuning(tuningString);\n }\n static get names() {\n return {\n standard: 'E/5,B/4,G/4,D/4,A/3,E/3',\n dagdad: 'D/5,A/4,G/4,D/4,A/3,D/3',\n dropd: 'E/5,B/4,G/4,D/4,A/3,D/3',\n eb: 'Eb/5,Bb/4,Gb/4,Db/4,Ab/3,Db/3',\n standardBanjo: 'D/5,B/4,G/4,D/4,G/5',\n };\n }\n /** Return the note number associated to the note string. */\n noteToInteger(noteString) {\n return Tables.keyProperties(noteString).int_value;\n }\n /**\n * Set tuning identified by tuning name (eg. 'dagdad')\n * @param tuningString tuning name (eg. 'dagdad') or comma separated note strings\n */\n setTuning(tuningString) {\n if (Tuning.names[tuningString]) {\n tuningString = Tuning.names[tuningString];\n }\n this.tuningValues = [];\n const keys = tuningString.split(/\\s*,\\s*/);\n if (keys.length === 0) {\n throw new RuntimeError('BadArguments', `Invalid tuning string: ${tuningString}`);\n }\n for (let i = 0; i < keys.length; ++i) {\n this.tuningValues[i] = this.noteToInteger(keys[i]);\n }\n }\n /** Return the note number associated with a tablature string. */\n getValueForString(stringNum) {\n const s = Number(stringNum);\n if (s < 1 || s > this.tuningValues.length) {\n throw new RuntimeError('BadArguments', `String number must be between 1 and ${this.tuningValues.length}:${stringNum}`);\n }\n return this.tuningValues[s - 1];\n }\n /** Return the note number associated with a tablature string and fret. */\n getValueForFret(fretNum, stringNum) {\n const stringValue = this.getValueForString(stringNum);\n const f = Number(fretNum);\n if (f < 0) {\n throw new RuntimeError('BadArguments', `Fret number must be 0 or higher: ${fretNum}`);\n }\n return stringValue + f;\n }\n /** Return the note string associated with tablature string and fret. */\n getNoteForFret(fretNum, stringNum) {\n const noteValue = this.getValueForFret(fretNum, stringNum);\n const octave = Math.floor(noteValue / 12);\n const value = noteValue % 12;\n return `${Tables.integerToNote(value)}/${octave}`;\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Accidental } from './accidental';\nimport { Annotation, AnnotationHorizontalJustify, AnnotationVerticalJustify } from './annotation';\nimport { Articulation } from './articulation';\nimport { BarNote } from './barnote';\nimport { Beam } from './beam';\nimport { Bend } from './bend';\nimport { BoundingBox } from './boundingbox';\nimport { BoundingBoxComputation } from './boundingboxcomputation';\nimport { CanvasContext } from './canvascontext';\nimport { ChordSymbol, ChordSymbolHorizontalJustify, ChordSymbolVerticalJustify, SymbolModifiers, SymbolTypes, } from './chordsymbol';\nimport { Clef } from './clef';\nimport { ClefNote } from './clefnote';\nimport { Crescendo } from './crescendo';\nimport { Curve, CurvePosition } from './curve';\nimport { Dot } from './dot';\nimport { EasyScore } from './easyscore';\nimport { Element } from './element';\nimport { Factory } from './factory';\nimport { Font, FontStyle, FontWeight } from './font';\nimport { Formatter } from './formatter';\nimport { Fraction } from './fraction';\nimport { FretHandFinger } from './frethandfinger';\nimport { GhostNote } from './ghostnote';\nimport { Glyph } from './glyph';\nimport { GlyphNote } from './glyphnote';\nimport { GraceNote } from './gracenote';\nimport { GraceNoteGroup } from './gracenotegroup';\nimport { GraceTabNote } from './gracetabnote';\nimport { KeyManager } from './keymanager';\nimport { KeySignature } from './keysignature';\nimport { KeySigNote } from './keysignote';\nimport { Modifier, ModifierPosition } from './modifier';\nimport { ModifierContext } from './modifiercontext';\nimport { MultiMeasureRest } from './multimeasurerest';\nimport { Music } from './music';\nimport { Note } from './note';\nimport { NoteHead } from './notehead';\nimport { NoteSubGroup } from './notesubgroup';\nimport { Ornament } from './ornament';\nimport { Parenthesis } from './parenthesis';\nimport { Parser } from './parser';\nimport { PedalMarking } from './pedalmarking';\nimport { Registry } from './registry';\nimport { RenderContext } from './rendercontext';\nimport { Renderer, RendererBackends, RendererLineEndType } from './renderer';\nimport { RepeatNote } from './repeatnote';\nimport { Stave } from './stave';\nimport { Barline, BarlineType } from './stavebarline';\nimport { StaveConnector } from './staveconnector';\nimport { StaveHairpin } from './stavehairpin';\nimport { StaveLine } from './staveline';\nimport { StaveModifier, StaveModifierPosition } from './stavemodifier';\nimport { StaveNote } from './stavenote';\nimport { Repetition } from './staverepetition';\nimport { StaveTempo } from './stavetempo';\nimport { StaveText } from './stavetext';\nimport { StaveTie } from './stavetie';\nimport { Volta, VoltaType } from './stavevolta';\nimport { Stem } from './stem';\nimport { StringNumber } from './stringnumber';\nimport { Stroke } from './strokes';\nimport { SVGContext } from './svgcontext';\nimport { System } from './system';\nimport { Tables } from './tables';\nimport { TabNote } from './tabnote';\nimport { TabSlide } from './tabslide';\nimport { TabStave } from './tabstave';\nimport { TabTie } from './tabtie';\nimport { TextBracket, TextBracketPosition } from './textbracket';\nimport { TextDynamics } from './textdynamics';\nimport { TextFormatter } from './textformatter';\nimport { TextJustification, TextNote } from './textnote';\nimport { TickContext } from './tickcontext';\nimport { TimeSignature } from './timesignature';\nimport { TimeSigNote } from './timesignote';\nimport { Tremolo } from './tremolo';\nimport { Tuning } from './tuning';\nimport { Tuplet } from './tuplet';\nimport { DATE, ID, VERSION } from './version';\nimport { Vibrato } from './vibrato';\nimport { VibratoBracket } from './vibratobracket';\nimport { Voice, VoiceMode } from './voice';\nexport class Flow {\n static get BUILD() {\n return {\n /** version number. */\n VERSION: VERSION,\n /** git commit ID that this library was built from. */\n ID: ID,\n /** The date when this library was compiled. */\n DATE: DATE,\n };\n }\n /**\n * Examples:\n * ```\n * Vex.Flow.setMusicFont('Petaluma');\n * Vex.Flow.setMusicFont('Bravura', 'Gonville');\n * ```\n *\n * **CASE 1**: You are using `vexflow.js`, which includes all music fonts (Bravura, Gonville, Petaluma, Custom).\n * In this case, calling this method is optional, since VexFlow already defaults to a music font stack of:\n * 'Bravura', 'Gonville', 'Custom'.\n *\n * **CASE 2**: You are using `vexflow-bravura.js` or `vexflow-petaluma.js` or `vexflow-gonville.js`,\n * which includes a single music font. Calling this method is unnecessary.\n *\n * **CASE 3**: You are using the light weight `vexflow-core.js` to take advantage of lazy loading for fonts.\n * In this case, the default music font stack is empty.\n * Example:\n * ```\n * await Vex.Flow.fetchMusicFont('Petaluma');\n * Vex.Flow.setMusicFont('Petaluma');\n * ... (do VexFlow stuff) ...\n * ```\n * See `demos/fonts/` for more examples.\n *\n * @returns an array of Font objects corresponding to the provided `fontNames`.\n */\n static setMusicFont(...fontNames) {\n // Convert the array of font names into an array of Font objects.\n const fonts = fontNames.map((fontName) => Font.load(fontName));\n Tables.MUSIC_FONT_STACK = fonts;\n Glyph.MUSIC_FONT_STACK = fonts.slice();\n Glyph.CURRENT_CACHE_KEY = fontNames.join(',');\n return fonts;\n }\n /**\n * Used with vexflow-core which supports dynamic font loading.\n */\n // eslint-disable-next-line\n static fetchMusicFont(fontName, fontModuleOrPath) {\n return __awaiter(this, void 0, void 0, function* () {\n // The default implementation does nothing.\n // See vexflow-core.ts for the implementation that vexflow-core.js uses.\n });\n }\n static getMusicFont() {\n const fonts = Tables.MUSIC_FONT_STACK;\n return fonts.map((font) => font.getName());\n }\n static get RENDER_PRECISION_PLACES() {\n return Tables.RENDER_PRECISION_PLACES;\n }\n static set RENDER_PRECISION_PLACES(precision) {\n Tables.RENDER_PRECISION_PLACES = precision;\n }\n static get SOFTMAX_FACTOR() {\n return Tables.SOFTMAX_FACTOR;\n }\n static set SOFTMAX_FACTOR(factor) {\n Tables.SOFTMAX_FACTOR = factor;\n }\n static get NOTATION_FONT_SCALE() {\n return Tables.NOTATION_FONT_SCALE;\n }\n static set NOTATION_FONT_SCALE(value) {\n Tables.NOTATION_FONT_SCALE = value;\n }\n static get TABLATURE_FONT_SCALE() {\n return Tables.TABLATURE_FONT_SCALE;\n }\n static set TABLATURE_FONT_SCALE(value) {\n Tables.TABLATURE_FONT_SCALE = value;\n }\n static get RESOLUTION() {\n return Tables.RESOLUTION;\n }\n static set RESOLUTION(value) {\n Tables.RESOLUTION = value;\n }\n static get SLASH_NOTEHEAD_WIDTH() {\n return Tables.SLASH_NOTEHEAD_WIDTH;\n }\n static set SLASH_NOTEHEAD_WIDTH(value) {\n Tables.SLASH_NOTEHEAD_WIDTH = value;\n }\n static get STAVE_LINE_DISTANCE() {\n return Tables.STAVE_LINE_DISTANCE;\n }\n static set STAVE_LINE_DISTANCE(value) {\n Tables.STAVE_LINE_DISTANCE = value;\n }\n static get STAVE_LINE_THICKNESS() {\n return Tables.STAVE_LINE_THICKNESS;\n }\n static set STAVE_LINE_THICKNESS(value) {\n Tables.STAVE_LINE_THICKNESS = value;\n }\n static get STEM_HEIGHT() {\n return Tables.STEM_HEIGHT;\n }\n static set STEM_HEIGHT(value) {\n Tables.STEM_HEIGHT = value;\n }\n static get STEM_WIDTH() {\n return Tables.STEM_WIDTH;\n }\n static set STEM_WIDTH(value) {\n Tables.STEM_WIDTH = value;\n }\n static get TIME4_4() {\n return Tables.TIME4_4;\n }\n static get accidentalMap() {\n return Tables.accidentalMap;\n }\n static get unicode() {\n return Tables.unicode;\n }\n static keySignature(spec) {\n return Tables.keySignature(spec);\n }\n static hasKeySignature(spec) {\n return Tables.hasKeySignature(spec);\n }\n static getKeySignatures() {\n return Tables.getKeySignatures();\n }\n static clefProperties(clef) {\n return Tables.clefProperties(clef);\n }\n // eslint-disable-next-line\n static keyProperties(key, clef, params) {\n return Tables.keyProperties(key, clef, params);\n }\n static durationToTicks(duration) {\n return Tables.durationToTicks(duration);\n }\n}\nFlow.Accidental = Accidental;\nFlow.Annotation = Annotation;\nFlow.Articulation = Articulation;\nFlow.Barline = Barline;\nFlow.BarNote = BarNote;\nFlow.Beam = Beam;\nFlow.Bend = Bend;\nFlow.BoundingBox = BoundingBox;\nFlow.BoundingBoxComputation = BoundingBoxComputation;\nFlow.CanvasContext = CanvasContext;\nFlow.ChordSymbol = ChordSymbol;\nFlow.Clef = Clef;\nFlow.ClefNote = ClefNote;\nFlow.Crescendo = Crescendo;\nFlow.Curve = Curve;\nFlow.Dot = Dot;\nFlow.EasyScore = EasyScore;\nFlow.Element = Element;\nFlow.Factory = Factory;\nFlow.Font = Font;\nFlow.Formatter = Formatter;\nFlow.Fraction = Fraction;\nFlow.FretHandFinger = FretHandFinger;\nFlow.GhostNote = GhostNote;\nFlow.Glyph = Glyph;\nFlow.GlyphNote = GlyphNote;\nFlow.GraceNote = GraceNote;\nFlow.GraceNoteGroup = GraceNoteGroup;\nFlow.GraceTabNote = GraceTabNote;\nFlow.KeyManager = KeyManager;\nFlow.KeySignature = KeySignature;\nFlow.KeySigNote = KeySigNote;\nFlow.Modifier = Modifier;\nFlow.ModifierContext = ModifierContext;\nFlow.MultiMeasureRest = MultiMeasureRest;\nFlow.Music = Music;\nFlow.Note = Note;\nFlow.NoteHead = NoteHead;\nFlow.NoteSubGroup = NoteSubGroup;\nFlow.Ornament = Ornament;\nFlow.Parenthesis = Parenthesis;\nFlow.Parser = Parser;\nFlow.PedalMarking = PedalMarking;\nFlow.Registry = Registry;\nFlow.RenderContext = RenderContext;\nFlow.Renderer = Renderer;\nFlow.RepeatNote = RepeatNote;\nFlow.Repetition = Repetition;\nFlow.Stave = Stave;\nFlow.StaveConnector = StaveConnector;\nFlow.StaveHairpin = StaveHairpin;\nFlow.StaveLine = StaveLine;\nFlow.StaveModifier = StaveModifier;\nFlow.StaveNote = StaveNote;\nFlow.StaveTempo = StaveTempo;\nFlow.StaveText = StaveText;\nFlow.StaveTie = StaveTie;\nFlow.Stem = Stem;\nFlow.StringNumber = StringNumber;\nFlow.Stroke = Stroke;\nFlow.SVGContext = SVGContext;\nFlow.System = System;\nFlow.TabNote = TabNote;\nFlow.TabSlide = TabSlide;\nFlow.TabStave = TabStave;\nFlow.TabTie = TabTie;\nFlow.TextBracket = TextBracket;\nFlow.TextDynamics = TextDynamics;\nFlow.TextFormatter = TextFormatter;\nFlow.TextNote = TextNote;\nFlow.TickContext = TickContext;\nFlow.TimeSignature = TimeSignature;\nFlow.TimeSigNote = TimeSigNote;\nFlow.Tremolo = Tremolo;\nFlow.Tuning = Tuning;\nFlow.Tuplet = Tuplet;\nFlow.Vibrato = Vibrato;\nFlow.VibratoBracket = VibratoBracket;\nFlow.Voice = Voice;\nFlow.Volta = Volta;\n// Exported Enums.\n// Sorted by the module / file they are exported from.\nFlow.AnnotationHorizontalJustify = AnnotationHorizontalJustify;\nFlow.AnnotationVerticalJustify = AnnotationVerticalJustify;\nFlow.ChordSymbolHorizontalJustify = ChordSymbolHorizontalJustify;\nFlow.ChordSymbolVerticalJustify = ChordSymbolVerticalJustify;\nFlow.SymbolTypes = SymbolTypes;\nFlow.SymbolModifiers = SymbolModifiers;\nFlow.CurvePosition = CurvePosition;\nFlow.FontWeight = FontWeight;\nFlow.FontStyle = FontStyle;\nFlow.ModifierPosition = ModifierPosition;\nFlow.RendererBackends = RendererBackends;\nFlow.RendererLineEndType = RendererLineEndType;\nFlow.BarlineType = BarlineType;\nFlow.StaveModifierPosition = StaveModifierPosition;\nFlow.VoltaType = VoltaType;\nFlow.TextBracketPosition = TextBracketPosition;\nFlow.TextJustification = TextJustification;\nFlow.VoiceMode = VoiceMode;\n","export const VERSION = '4.1.0-alpha.0';\nexport const ID = '847bc9014672858aedc7f8460384f51f98d6bd84';\nexport const DATE = '2022-10-10T04:47:38.237Z';\n","export const BravuraFont = {\n glyphs: {\n bracketTop: {\n x_min: 0,\n x_max: 469,\n y_min: 0,\n y_max: 295,\n ha: 295,\n o: 'm 0 0 l 180 0 b 674 390 410 43 616 150 b 675 405 675 396 675 400 b 664 425 675 416 671 422 b 628 405 651 425 635 415 b 157 179 613 389 432 199 l 12 179 b 0 168 3 179 0 177 z',\n },\n bracketBottom: {\n x_min: 0,\n x_max: 469,\n y_min: -295,\n y_max: 0,\n ha: 295,\n o: 'm 0 -168 b 12 -179 0 -177 3 -179 l 157 -179 b 628 -405 432 -199 613 -389 b 664 -425 635 -415 651 -425 b 675 -405 671 -422 675 -416 b 674 -390 675 -400 675 -396 b 180 0 616 -150 410 -43 l 0 0 z',\n },\n barlineTick: {\n x_min: 0,\n x_max: 36,\n y_min: 868,\n y_max: 1120,\n ha: 252,\n o: 'm 52 1250 l 52 1613 l 0 1613 l 0 1250 z',\n },\n breathMarkTick: {\n x_min: 0,\n x_max: 500,\n y_min: 0,\n y_max: 502,\n ha: 502,\n o: 'm 9 367 b 0 374 6 372 3 374 b 9 334 0 367 0 343 b 179 19 40 312 164 121 b 192 0 179 3 186 0 b 210 19 197 0 207 6 b 698 701 245 197 507 658 b 720 714 714 704 720 711 b 698 723 720 720 711 723 b 197 186 455 714 210 202 b 186 176 194 179 189 176 b 176 186 179 176 176 186 b 9 367 143 266 27 359 z',\n },\n segno: {\n x_min: 4,\n x_max: 550,\n y_min: -27,\n y_max: 759,\n ha: 786,\n o: 'm 194 958 b 217 939 203 958 213 955 l 220 929 b 325 805 230 890 252 805 b 425 901 384 805 425 840 b 413 969 425 923 420 946 b 220 1060 390 1035 294 1060 b 6 793 120 1060 6 936 b 29 687 6 759 13 723 b 295 449 75 582 284 454 b 304 438 301 446 304 444 b 295 415 304 432 301 425 b 78 22 285 395 78 22 b 73 3 75 16 73 9 b 114 -39 73 -20 91 -39 b 150 -17 128 -39 143 -30 b 377 395 150 -17 373 386 b 395 402 377 393 389 402 b 704 176 416 397 704 312 b 621 75 704 120 670 82 l 616 73 b 562 138 586 73 562 94 l 562 154 b 485 249 562 209 526 249 b 468 246 480 249 474 248 b 366 153 415 233 366 210 b 540 -12 366 65 455 -12 b 600 -1 559 -12 579 -9 b 792 251 716 37 792 131 b 789 292 792 264 791 278 b 523 588 768 451 540 579 b 498 611 505 598 498 603 b 501 619 498 613 500 616 b 732 1032 508 631 732 1032 b 737 1053 736 1040 737 1045 b 697 1093 737 1076 719 1093 b 661 1073 683 1093 668 1086 b 423 647 661 1073 432 660 b 410 635 419 639 416 635 b 396 639 406 635 402 636 b 128 792 383 644 166 727 b 108 868 120 808 108 838 b 186 958 108 907 125 948 z m 598 671 b 680 589 598 626 635 589 b 762 671 726 589 762 626 b 680 753 762 717 726 753 b 598 671 635 753 598 717 z m 202 380 b 120 462 202 425 166 462 b 37 380 75 462 37 425 b 120 298 37 334 75 298 b 202 380 166 298 202 334 z',\n },\n coda: {\n x_min: -4,\n x_max: 955,\n y_min: -158,\n y_max: 898,\n ha: 1056,\n o: 'm 1349 576 l 1178 576 b 729 1083 1164 847 962 1064 l 729 1269 b 694 1293 729 1287 713 1293 b 660 1269 675 1293 660 1287 l 660 1083 b 210 576 426 1064 226 848 l 20 576 b -6 541 0 576 -6 560 b 20 507 -6 523 0 507 l 210 507 b 660 0 226 238 426 19 l 660 -202 b 694 -228 660 -222 675 -228 b 729 -202 713 -228 729 -222 l 729 0 b 1178 507 962 19 1164 238 l 1349 507 b 1375 541 1369 507 1375 523 b 1349 576 1375 560 1369 576 z m 940 576 l 729 576 l 729 1002 b 940 576 930 985 940 809 z m 660 1002 l 660 576 l 455 576 b 660 1002 455 809 455 985 z m 455 507 l 660 507 l 660 69 b 455 507 474 91 456 285 z m 729 69 l 729 507 l 940 507 b 729 69 936 287 909 91 z',\n },\n gClef: {\n x_min: 0,\n x_max: 671,\n y_min: -658,\n y_max: 1098,\n ha: 1756,\n o: 'm 541 598 b 550 625 539 615 541 616 b 824 1174 706 770 824 953 b 730 1509 824 1299 789 1423 b 655 1581 708 1541 671 1581 b 562 1512 635 1581 590 1544 b 420 1064 455 1394 420 1214 b 441 828 420 981 431 887 b 428 793 444 811 445 808 b 0 125 220 622 0 416 b 524 -363 0 -125 171 -363 b 624 -354 557 -363 595 -360 b 645 -367 639 -351 642 -350 b 684 -657 662 -464 684 -589 b 455 -896 684 -870 540 -896 b 340 -854 377 -896 340 -873 b 386 -829 340 -844 353 -840 b 482 -694 431 -816 482 -778 b 344 -547 482 -615 432 -547 b 190 -713 248 -547 190 -624 b 464 -948 190 -806 246 -948 b 747 -660 560 -948 747 -904 b 706 -351 747 -577 721 -441 b 724 -327 703 -334 704 -336 b 966 16 870 -269 966 -147 b 619 363 966 200 831 363 b 577 389 582 363 582 363 z m 677 1358 b 763 1240 724 1358 763 1319 b 513 851 763 1080 626 950 b 494 863 503 842 497 844 b 485 995 488 900 485 949 b 677 1358 485 1220 589 1358 z m 520 377 b 498 343 524 350 524 351 b 289 63 372 300 289 186 b 455 -192 289 -66 357 -158 b 494 -200 467 -196 484 -200 b 511 -184 505 -200 511 -193 b 490 -166 511 -174 500 -170 b 386 -12 429 -140 386 -78 b 530 157 386 71 442 132 b 559 145 553 163 556 161 l 631 -284 b 611 -304 634 -300 632 -300 b 530 -311 588 -308 559 -311 b 115 29 278 -311 115 -171 b 249 363 115 114 130 228 b 469 567 336 459 402 513 b 490 562 484 579 487 577 z m 619 148 b 635 168 616 166 618 170 b 848 -66 752 158 848 60 b 713 -271 848 -157 793 -230 b 690 -262 696 -279 693 -279 z',\n },\n cClef: {\n x_min: 0,\n x_max: 699,\n y_min: -506,\n y_max: 506,\n ha: 1012,\n o: 'm 331 694 b 301 724 331 714 321 724 l 300 724 b 269 694 279 724 269 714 l 269 -694 b 300 -724 269 -714 279 -724 l 301 -724 b 331 -694 321 -724 331 -714 l 331 -63 b 344 -55 331 -52 338 -53 b 472 -265 382 -65 442 -102 b 500 -301 477 -288 485 -301 b 530 -262 516 -301 523 -287 b 684 -128 549 -199 582 -128 b 804 -409 778 -128 804 -220 b 651 -683 804 -598 770 -683 b 528 -644 631 -683 528 -674 b 567 -622 528 -636 552 -628 b 625 -528 596 -612 625 -583 b 527 -429 625 -465 583 -429 b 416 -547 465 -429 416 -471 b 667 -729 416 -638 495 -729 b 1007 -413 903 -729 1007 -563 b 706 -76 1007 -215 897 -76 b 618 -89 664 -76 636 -84 b 576 -88 603 -94 589 -96 b 524 0 556 -75 524 -29 b 576 88 524 29 556 75 b 618 89 589 96 603 94 b 706 76 636 84 664 76 b 1007 413 897 76 1007 215 b 667 729 1007 563 903 729 b 416 547 495 729 416 638 b 527 429 416 471 465 429 b 625 528 583 429 625 465 b 567 622 625 583 596 612 b 528 644 552 628 528 636 b 651 683 528 674 631 683 b 804 409 770 683 804 598 b 684 128 804 220 778 128 b 530 262 582 128 549 199 b 500 301 523 287 516 301 b 472 265 485 301 477 288 b 344 55 442 102 382 65 b 331 63 338 53 331 52 z m 30 724 b 0 694 10 724 0 714 l 0 -694 b 30 -724 0 -714 10 -724 l 154 -724 b 184 -694 174 -724 184 -714 l 184 694 b 154 724 184 714 174 724 z',\n },\n fClef: {\n x_min: -5,\n x_max: 684,\n y_min: -635,\n y_max: 262,\n ha: 897,\n o: 'm 363 377 b 0 56 112 377 0 194 b 177 -158 0 -59 60 -158 b 330 -6 268 -158 330 -95 b 192 144 330 86 262 144 b 120 134 153 144 138 134 b 96 160 101 134 96 145 b 330 323 96 217 183 323 b 549 -53 482 323 549 173 b 14 -871 549 -455 350 -680 b -7 -897 1 -878 -7 -886 b 12 -914 -7 -906 -1 -914 b 36 -907 19 -914 27 -912 b 765 -40 390 -734 765 -478 b 363 377 765 210 612 377 z m 906 259 b 827 180 861 259 827 225 b 906 101 827 135 861 101 b 985 180 950 101 985 135 b 906 259 985 225 950 259 z m 907 -102 b 829 -180 863 -102 829 -135 b 907 -258 829 -225 863 -258 b 985 -180 952 -258 985 -225 b 907 -102 985 -135 952 -102 z',\n },\n unpitchedPercussionClef1: {\n x_min: 0,\n x_max: 382,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 230 -338 l 230 338 b 210 360 230 350 222 360 l 20 360 b 0 338 9 360 0 350 l 0 -338 b 20 -360 0 -350 9 -360 l 210 -360 b 230 -338 222 -360 230 -350 z m 550 338 b 530 360 550 350 541 360 l 340 360 b 320 338 328 360 320 350 l 320 -338 b 340 -360 320 -350 328 -360 l 530 -360 b 550 -338 541 -360 550 -350 z',\n },\n '6stringTabClef': {\n x_min: -3,\n x_max: 408,\n y_min: -748,\n y_max: 764,\n ha: 1512,\n o: 'm 557 1024 l 557 1100 l 26 1100 l 26 1024 l 249 1024 l 249 422 l 336 422 l 336 1024 z m 588 -328 l 350 348 l 238 348 l -4 -328 l 88 -328 l 160 -125 l 420 -125 l 491 -328 z m 397 -52 l 181 -52 l 292 256 z m 544 -883 b 420 -719 544 -802 507 -752 b 514 -572 482 -690 514 -639 b 314 -399 514 -472 442 -399 l 39 -399 l 39 -1077 l 344 -1077 b 544 -883 467 -1077 544 -995 z m 428 -583 b 292 -691 428 -652 389 -691 l 125 -691 l 125 -475 l 292 -475 b 428 -583 389 -475 428 -514 z m 458 -884 b 337 -1001 458 -949 418 -1001 l 125 -1001 l 125 -768 l 337 -768 b 458 -884 418 -768 458 -818 z',\n },\n timeSig0: {\n x_min: 20,\n x_max: 450,\n y_min: -250,\n y_max: 251,\n ha: 501,\n o: 'm 648 0 b 338 361 648 200 510 361 b 29 0 167 361 29 200 b 338 -360 29 -199 167 -360 b 648 0 510 -360 648 -199 z m 338 317 b 446 10 397 317 446 180 b 338 -295 446 -158 397 -295 b 230 10 278 -295 230 -158 b 338 317 230 180 278 317 z',\n },\n timeSig1: {\n x_min: 20,\n x_max: 314,\n y_min: -250,\n y_max: 251,\n ha: 501,\n o: 'm 35 19 b 29 0 35 19 29 10 b 45 -20 29 -7 33 -16 b 58 -23 50 -22 56 -23 b 78 -10 72 -23 78 -10 b 156 117 78 -10 140 89 b 170 131 161 127 167 131 b 179 111 176 131 179 120 l 179 -261 b 115 -315 179 -294 145 -315 b 91 -337 105 -315 91 -320 b 122 -360 91 -353 104 -360 l 429 -360 b 452 -337 452 -360 452 -337 b 431 -315 452 -337 452 -315 b 384 -265 410 -315 384 -289 l 384 328 b 356 361 384 351 376 360 b 281 356 336 361 300 356 b 206 360 253 356 228 357 b 199 361 203 360 200 361 b 173 334 184 361 179 347 z',\n },\n timeSig2: {\n x_min: 20,\n x_max: 426,\n y_min: -257,\n y_max: 254,\n ha: 511,\n o: 'm 606 -131 b 589 -111 606 -114 599 -111 b 570 -127 577 -111 573 -117 l 569 -128 b 513 -192 554 -164 543 -192 b 488 -187 505 -192 498 -190 b 445 -171 469 -180 459 -179 b 289 -137 416 -160 348 -137 b 236 -145 271 -137 252 -140 b 422 -42 268 -94 390 -50 b 613 147 523 -14 613 27 b 330 366 613 300 464 366 b 69 275 229 366 140 357 b 29 170 45 245 29 209 b 42 108 29 150 33 130 b 160 29 63 63 108 29 b 261 156 248 29 261 120 b 161 275 261 242 161 246 b 275 330 164 295 190 330 b 405 192 403 330 405 233 b 193 -102 405 60 297 -39 b 33 -317 114 -153 58 -223 l 32 -321 b 69 -370 32 -340 48 -370 b 203 -282 101 -370 118 -282 b 410 -360 261 -282 282 -360 b 606 -131 472 -360 583 -354 z',\n },\n timeSig3: {\n x_min: 20,\n x_max: 401,\n y_min: -251,\n y_max: 249,\n ha: 500,\n o: 'm 307 357 b 301 357 305 357 304 357 l 291 359 b 285 359 289 359 287 359 b 37 200 161 359 37 276 b 154 84 37 153 65 89 l 161 84 b 256 177 225 84 256 130 l 256 189 b 209 248 252 242 216 245 b 180 268 202 251 180 248 l 180 274 b 240 310 183 298 228 310 b 374 199 363 310 374 233 l 374 189 b 199 36 374 82 289 40 b 164 12 184 35 164 27 b 200 -6 164 -6 189 -6 b 379 -137 366 -6 379 -118 b 269 -307 379 -289 301 -307 b 256 -305 264 -307 258 -305 b 216 -282 245 -304 217 -304 l 216 -275 b 249 -180 216 -243 248 -222 b 145 -76 249 -120 207 -76 b 130 -78 140 -76 135 -76 b 60 -115 105 -82 78 -96 b 29 -203 36 -137 29 -171 b 275 -361 32 -315 134 -359 l 288 -361 b 577 -161 431 -361 577 -288 l 577 -151 b 537 -50 575 -109 564 -82 b 503 -20 528 -39 517 -29 l 472 -3 l 425 10 b 410 17 418 12 413 12 b 409 24 409 20 409 22 b 415 37 409 30 410 36 b 459 50 431 42 446 43 b 547 181 517 78 547 115 b 307 357 547 314 367 353 z',\n },\n timeSig4: {\n x_min: 20,\n x_max: 450,\n y_min: -250,\n y_max: 251,\n ha: 501,\n o: 'm 521 -107 l 521 202 b 504 226 521 213 520 226 b 475 213 491 226 484 223 l 338 48 b 325 14 333 40 325 32 l 325 -107 l 131 -107 b 481 336 246 -9 477 318 l 482 340 b 461 361 482 353 472 361 b 363 359 448 361 389 359 b 261 361 337 359 272 361 b 228 334 248 361 228 357 b 43 -105 228 156 86 -45 l 35 -117 b 35 -118 35 -117 35 -118 l 33 -120 b 29 -137 30 -127 29 -132 b 58 -161 29 -151 40 -161 l 325 -161 l 325 -252 b 268 -302 325 -291 294 -302 b 235 -330 245 -302 235 -315 b 262 -360 235 -344 240 -360 l 569 -360 b 598 -330 583 -360 598 -350 b 566 -301 598 -310 580 -301 b 521 -246 552 -301 521 -292 l 521 -161 l 626 -161 b 648 -134 641 -161 648 -151 b 626 -107 648 -117 642 -107 z',\n },\n timeSig5: {\n x_min: 20,\n x_max: 383,\n y_min: -251,\n y_max: 246,\n ha: 497,\n o: 'm 109 85 b 117 179 109 85 115 166 b 138 197 118 190 125 197 l 144 197 b 285 184 158 194 226 184 b 492 323 485 184 492 300 b 472 353 492 341 488 353 b 295 340 454 353 341 340 b 101 354 249 340 125 351 b 66 330 75 354 68 341 l 50 10 l 50 7 b 79 -14 50 -12 65 -14 b 111 14 94 -14 95 -1 b 209 62 125 29 160 62 b 357 -125 258 62 357 35 b 235 -304 357 -284 272 -304 b 202 -300 223 -304 212 -304 b 184 -279 194 -295 186 -289 b 202 -259 184 -269 194 -264 b 256 -163 235 -239 256 -203 b 144 -50 256 -99 206 -50 b 30 -157 66 -50 35 -107 b 29 -183 29 -166 29 -174 b 284 -361 29 -302 107 -361 b 552 -125 456 -361 552 -255 b 314 112 552 6 445 112 b 122 71 230 112 168 98 b 115 69 120 69 117 69 b 109 79 109 69 109 75 z',\n },\n timeSig6: {\n x_min: 20,\n x_max: 414,\n y_min: -249,\n y_max: 251,\n ha: 500,\n o: 'm 439 120 b 554 229 500 120 554 167 b 553 245 554 235 554 239 b 348 361 539 337 426 361 b 85 209 239 360 137 307 b 29 4 53 148 29 72 l 29 -1 b 73 -200 30 -68 42 -143 b 324 -359 132 -307 203 -359 b 513 -307 389 -359 461 -348 b 596 -137 563 -266 596 -202 b 379 72 596 -24 490 72 b 248 22 333 72 285 55 b 239 19 245 19 242 19 b 226 53 230 19 226 30 b 346 327 230 320 315 327 b 393 305 374 327 393 320 b 357 251 393 285 366 268 b 347 209 350 238 347 223 b 369 150 347 187 354 166 b 439 120 379 131 420 120 z m 320 3 b 405 -158 366 3 405 -69 b 320 -320 405 -248 366 -320 b 236 -158 274 -320 236 -248 b 320 3 236 -69 274 3 z',\n },\n timeSig7: {\n x_min: 20,\n x_max: 421,\n y_min: -250,\n y_max: 249,\n ha: 499,\n o: 'm 606 294 b 582 351 606 333 606 351 b 552 336 580 351 557 346 b 485 236 541 318 521 236 b 262 359 449 236 382 359 b 137 307 179 359 157 325 b 98 281 117 288 108 282 b 60 315 86 281 68 301 b 43 325 58 321 50 325 b 29 308 36 325 29 321 l 29 71 b 45 48 29 71 30 48 b 66 76 56 48 60 60 b 164 196 81 112 99 196 b 374 88 222 196 291 88 b 446 118 415 88 435 109 b 459 124 451 121 456 124 b 469 111 465 124 468 120 b 272 -112 469 71 359 -10 b 173 -315 217 -176 173 -259 b 200 -360 173 -346 173 -360 b 294 -347 226 -360 258 -347 b 412 -360 330 -347 397 -360 b 435 -307 426 -360 435 -348 b 606 288 435 -66 606 140 z',\n },\n timeSig8: {\n x_min: 20,\n x_max: 416,\n y_min: -259,\n y_max: 259,\n ha: 518,\n o: 'm 481 52 b 567 204 533 85 567 132 b 317 373 567 351 356 373 b 36 176 150 373 36 297 b 161 -16 36 76 92 23 b 29 -190 86 -52 29 -99 b 301 -373 29 -315 158 -373 b 599 -117 445 -373 599 -311 b 481 52 599 -30 549 17 z m 406 85 b 168 240 291 125 168 150 b 314 331 168 301 251 331 b 482 207 360 331 482 308 b 406 85 482 150 454 112 z m 295 -325 b 111 -183 199 -325 111 -276 b 225 -48 111 -125 161 -72 b 436 -219 330 -94 436 -124 b 295 -325 436 -276 392 -325 z',\n },\n timeSig9: {\n x_min: 20,\n x_max: 414,\n y_min: -249,\n y_max: 251,\n ha: 500,\n o: 'm 186 -117 b 71 -226 125 -117 71 -164 b 72 -242 71 -232 71 -236 b 276 -359 86 -334 199 -359 b 540 -206 386 -357 488 -304 b 596 -1 572 -145 596 -69 l 596 4 b 552 203 595 71 583 145 b 301 361 492 310 422 361 b 112 310 236 361 164 351 b 29 140 62 269 29 204 b 246 -69 29 27 135 -69 b 377 -19 292 -69 340 -52 b 386 -16 380 -16 383 -16 b 399 -50 395 -16 399 -27 b 279 -324 395 -317 310 -324 b 232 -302 251 -324 232 -317 b 268 -248 232 -282 259 -265 b 278 -206 275 -235 278 -220 b 256 -147 278 -184 271 -163 b 186 -117 246 -128 204 -117 z m 305 0 b 220 161 259 0 220 72 b 305 323 220 251 259 323 b 389 161 351 323 389 251 b 305 0 389 72 351 0 z',\n },\n timeSigCommon: {\n x_min: 5,\n x_max: 424,\n y_min: -249,\n y_max: 251,\n ha: 500,\n o: 'm 336 361 b 7 -14 131 361 7 180 b 101 -262 7 -108 42 -190 b 321 -359 156 -328 235 -359 b 611 -88 573 -359 611 -130 b 589 -56 611 -56 595 -56 b 567 -82 577 -56 567 -58 b 363 -311 567 -268 409 -311 b 184 40 246 -311 184 -197 b 372 327 184 278 294 327 b 477 278 446 327 477 292 b 451 246 477 265 472 246 b 360 140 393 246 360 184 b 471 32 360 58 431 32 b 580 156 471 32 580 36 b 336 361 580 344 363 361 z',\n },\n timeSigCutCommon: {\n x_min: 0,\n x_max: 418,\n y_min: -359,\n y_max: 361,\n ha: 720,\n o: 'm 573 -58 b 559 -82 567 -58 559 -60 b 354 -310 559 -266 400 -310 b 317 -305 340 -310 328 -308 b 302 -284 311 -304 302 -295 l 302 287 b 338 323 302 297 328 321 b 363 324 347 324 356 324 b 468 275 436 324 468 289 b 442 243 468 264 464 243 b 351 137 384 243 351 181 b 462 30 351 56 422 30 b 572 154 462 30 572 35 b 318 357 572 295 441 357 b 302 390 310 359 302 383 l 302 495 b 276 520 302 507 292 520 b 252 495 265 520 252 507 l 252 369 b 235 346 252 359 238 346 l 196 331 b 0 -14 66 275 0 122 b 225 -346 0 -150 86 -310 b 252 -382 235 -350 252 -369 l 252 -492 b 276 -517 252 -505 265 -517 b 302 -492 292 -517 302 -505 l 302 -379 b 318 -359 302 -370 308 -363 b 602 -85 563 -354 602 -130 b 579 -58 600 -58 586 -58 z m 252 -235 b 243 -252 252 -248 248 -252 b 236 -248 240 -252 238 -251 b 177 37 197 -193 177 -96 b 232 259 177 147 200 215 b 236 262 233 262 235 262 b 252 239 243 262 252 251 z',\n },\n timeSigPlus: {\n x_min: -1,\n x_max: 499,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 432 53 b 413 79 420 53 413 65 l 413 340 b 392 360 413 350 405 360 l 325 360 b 305 340 312 360 305 350 l 305 79 b 284 53 305 66 292 53 l 19 53 b -1 33 9 53 -1 46 l -1 -33 b 19 -55 -1 -46 9 -55 l 284 -55 b 305 -75 298 -55 305 -68 l 305 -340 b 325 -360 305 -350 312 -360 l 392 -360 b 413 -340 405 -360 413 -350 l 413 -78 b 433 -55 413 -63 423 -55 l 698 -55 b 719 -33 708 -55 719 -46 l 719 33 b 698 53 719 46 708 53 z',\n },\n timeSigPlusSmall: {\n x_min: -1,\n x_max: 255,\n y_min: -133,\n y_max: 123,\n ha: 256,\n o: 'm 220 20 b 210 33 215 20 210 26 l 210 166 b 200 177 210 171 206 177 l 166 177 b 156 166 160 177 156 171 l 156 33 b 145 20 156 27 150 20 l 10 20 b -1 10 4 20 -1 16 l -1 -24 b 10 -35 -1 -30 4 -35 l 145 -35 b 156 -46 153 -35 156 -42 l 156 -180 b 166 -192 156 -186 160 -192 l 200 -192 b 210 -180 206 -192 210 -186 l 210 -48 b 222 -35 210 -39 216 -35 l 356 -35 b 367 -24 361 -35 367 -30 l 367 10 b 356 20 367 16 361 20 z',\n },\n timeSigMinus: {\n x_min: 0,\n x_max: 448,\n y_min: -35,\n y_max: 40,\n ha: 75,\n o: 'm 645 39 b 619 58 645 49 634 58 l 27 58 b 0 39 12 58 0 49 l 0 -32 b 27 -50 0 -42 12 -50 l 619 -50 b 645 -32 634 -50 645 -42 z',\n },\n timeSigParensRight: {\n x_min: 0,\n x_max: 184,\n y_min: -489,\n y_max: 491,\n ha: 980,\n o: 'm 0 -696 b 3 -704 0 -698 1 -704 b 7 -703 4 -704 6 -704 b 265 1 187 -530 265 -282 b 12 701 265 289 187 531 b 4 707 12 701 6 707 b 0 696 1 707 0 703 l 0 665 b 4 644 0 665 0 651 b 167 1 112 503 167 315 b 6 -641 167 -311 109 -497 b 0 -658 3 -644 0 -651 z',\n },\n timeSigParensRightSmall: {\n x_min: 0,\n x_max: 110,\n y_min: -251,\n y_max: 249,\n ha: 500,\n o: 'm 0 -356 b 3 -361 0 -357 1 -361 b 158 0 112 -272 158 -145 b 4 359 158 147 109 272 b 0 353 3 359 0 357 l 0 338 b 3 327 0 338 0 330 b 91 0 60 246 91 160 b 4 -328 91 -160 62 -249 b 0 -337 3 -330 0 -333 z',\n },\n timeSigParensLeft: {\n x_min: 0,\n x_max: 184,\n y_min: -489,\n y_max: 491,\n ha: 980,\n o: 'm 265 -658 b 259 -641 265 -651 262 -644 b 98 1 156 -497 98 -311 b 261 644 98 315 153 503 b 265 665 265 651 265 665 l 265 696 b 261 707 265 703 264 707 b 253 701 259 707 253 701 b 0 1 78 531 0 289 b 258 -703 0 -282 78 -530 b 262 -704 259 -704 261 -704 b 265 -696 264 -704 265 -698 z',\n },\n timeSigParensLeftSmall: {\n x_min: 0,\n x_max: 110,\n y_min: -251,\n y_max: 249,\n ha: 500,\n o: 'm 158 -337 b 154 -328 158 -333 156 -330 b 68 0 96 -249 68 -160 b 156 327 68 160 98 246 b 158 338 158 330 158 338 l 158 353 b 154 359 158 357 156 359 b 0 0 49 272 0 147 b 156 -361 0 -145 46 -272 b 158 -356 157 -361 158 -357 z',\n },\n noteheadDoubleWhole: {\n x_min: 0,\n x_max: 599,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 13 223 b 0 212 4 223 0 217 l 0 -213 b 13 -223 0 -219 4 -223 l 32 -223 b 45 -213 39 -223 45 -219 l 45 212 b 32 223 45 217 39 223 z m 96 223 b 82 212 88 223 82 217 l 82 -213 b 96 -223 82 -219 88 -223 l 114 -223 b 128 -213 121 -223 128 -219 l 128 212 b 114 223 128 217 121 223 z m 747 223 b 733 212 740 223 733 217 l 733 -213 b 747 -223 733 -219 740 -223 l 766 -223 b 780 -213 773 -223 780 -219 l 780 212 b 766 223 780 217 773 223 z m 829 223 b 815 212 824 223 815 217 l 815 -213 b 829 -223 815 -219 824 -223 l 848 -223 b 863 -213 857 -223 863 -219 l 863 212 b 848 223 863 217 857 223 z m 438 180 b 130 1 248 180 130 101 b 423 -180 130 -92 210 -180 b 733 1 657 -180 733 -98 b 438 180 733 104 572 180 z m 469 -145 b 331 -71 409 -145 369 -112 b 284 58 305 -37 284 12 b 400 147 284 131 333 147 b 577 -45 498 147 577 42 b 469 -145 577 -115 533 -145 z',\n },\n noteheadWhole: {\n x_min: 0,\n x_max: 422,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 311 180 b 0 3 120 180 0 101 b 297 -180 0 -94 82 -180 b 608 3 533 -180 608 -98 b 311 180 608 105 445 180 z m 160 91 b 274 148 176 141 229 148 b 452 -45 373 148 452 42 b 386 -141 452 -89 433 -130 b 341 -147 372 -145 356 -147 b 206 -72 289 -147 236 -112 b 156 56 177 -39 156 10 b 160 91 156 68 157 79 z',\n },\n noteheadHalf: {\n x_min: 0,\n x_max: 295,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 140 -180 b 425 60 377 -180 425 13 b 282 180 425 134 366 180 b 0 -60 68 180 0 14 b 140 -180 0 -137 60 -180 z m 108 -125 b 50 -92 78 -125 60 -109 b 42 -63 46 -84 42 -73 b 318 121 42 7 251 121 b 372 91 346 121 361 108 b 380 63 376 82 380 73 b 108 -125 380 1 177 -125 z',\n },\n noteheadBlack: {\n x_min: 0,\n x_max: 295,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 140 -180 b 425 60 268 -180 425 -62 b 285 180 425 134 367 180 b 0 -60 127 180 0 63 b 140 -180 0 -135 62 -180 z',\n },\n noteheadXDoubleWhole: {\n x_min: 0,\n x_max: 546,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 43 213 b 30 223 43 217 39 223 l 13 223 b 0 213 6 223 0 217 l 0 -215 b 13 -223 0 -219 6 -223 l 30 -223 b 43 -215 39 -223 43 -219 z m 704 213 b 693 223 704 217 698 223 l 672 223 b 660 213 667 223 660 217 l 660 163 b 634 180 655 173 645 180 l 505 180 b 484 173 498 180 490 177 l 393 95 l 300 173 b 279 180 294 177 287 180 l 151 180 b 125 163 141 180 130 173 l 125 213 b 112 223 125 217 118 223 l 94 223 b 82 213 86 223 82 217 l 82 -215 b 94 -223 82 -219 86 -223 l 112 -223 b 125 -215 118 -223 125 -219 l 125 -163 b 151 -180 130 -173 140 -180 l 279 -180 b 300 -171 287 -180 294 -177 l 393 -95 l 485 -171 b 505 -180 491 -177 498 -180 l 632 -180 b 660 -163 645 -180 655 -173 l 660 -215 b 672 -223 660 -219 667 -223 l 693 -223 b 704 -215 698 -223 704 -219 z m 786 213 b 772 223 786 217 780 223 l 755 223 b 740 213 747 223 740 217 l 740 -215 b 755 -223 740 -219 747 -223 l 772 -223 b 786 -215 780 -223 786 -219 z m 507 -141 l 393 -45 l 276 -141 l 207 -141 l 364 0 l 207 141 l 276 141 l 393 45 l 507 141 l 577 141 l 420 0 l 577 -141 z m 660 -132 l 518 0 l 660 132 z m 125 131 l 266 0 l 125 -131 z',\n },\n noteheadXWhole: {\n x_min: 0,\n x_max: 377,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 272 -95 l 364 -171 b 384 -180 370 -177 377 -180 l 511 -180 b 543 -148 528 -180 543 -164 b 531 -124 543 -140 539 -131 l 412 0 l 531 124 b 541 148 539 131 541 140 b 513 180 541 164 528 180 l 384 180 b 364 171 377 180 370 177 l 272 94 l 179 171 b 158 180 173 177 166 180 l 30 180 b 0 148 16 180 0 164 b 12 124 0 140 4 131 l 132 0 l 12 -124 b 1 -148 4 -131 1 -140 b 32 -180 1 -164 14 -180 l 158 -180 b 179 -171 166 -180 173 -177 z m 386 -141 l 272 -45 l 157 -141 l 88 -141 l 245 0 l 88 141 l 157 141 l 272 45 l 386 141 l 456 141 l 300 0 l 456 -141 z',\n },\n noteheadXHalf: {\n x_min: 0,\n x_max: 334,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 295 180 b 271 170 287 180 278 177 l 209 98 l 115 171 b 95 180 109 177 104 180 l 36 180 b 4 148 19 180 4 164 b 14 124 4 140 7 132 l 140 22 l 7 -127 b 0 -148 3 -131 0 -138 b 32 -180 0 -166 14 -180 l 184 -180 b 209 -170 193 -180 203 -177 l 271 -99 l 363 -171 b 384 -180 370 -176 377 -180 l 445 -180 b 478 -147 461 -180 478 -163 b 465 -125 478 -138 474 -131 l 341 -22 l 474 127 b 481 148 480 131 481 138 b 448 180 481 166 468 180 z m 36 148 l 95 148 l 233 33 l 334 148 l 410 148 l 274 -6 l 445 -148 l 384 -148 l 248 -35 l 147 -148 l 71 -148 l 206 4 z',\n },\n noteheadXBlack: {\n x_min: 0,\n x_max: 290,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 410 -143 l 239 0 l 410 144 b 418 160 415 147 418 154 b 399 180 418 171 408 180 b 389 177 396 180 392 179 l 207 26 l 29 177 b 17 180 26 179 22 180 b 0 161 7 180 0 170 b 7 144 0 156 3 148 l 179 0 l 7 -143 b 0 -158 1 -147 0 -153 b 19 -180 0 -170 7 -180 b 29 -176 23 -180 26 -179 l 207 -24 l 389 -176 b 399 -180 392 -179 396 -180 b 418 -160 410 -180 418 -168 b 410 -143 418 -153 415 -147 z',\n },\n noteheadCircleXDoubleWhole: {\n x_min: 0,\n x_max: 422,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 576 223 b 563 213 570 223 563 219 l 563 -215 b 576 -223 563 -219 570 -223 l 595 -223 b 608 -215 602 -223 608 -219 l 608 213 b 595 223 608 219 602 223 z m 497 223 b 484 213 491 223 484 219 l 484 -215 b 497 -223 484 -219 491 -223 l 516 -223 b 528 -215 523 -223 528 -219 l 528 213 b 516 223 528 219 523 223 z m 94 223 b 81 213 86 223 81 219 l 81 -215 b 94 -223 81 -219 86 -223 l 111 -223 b 124 -215 118 -223 124 -219 l 124 213 b 111 223 124 219 118 223 z m 13 223 b 0 213 6 223 0 219 l 0 -215 b 13 -223 0 -219 6 -223 l 30 -223 b 45 -215 37 -223 45 -219 l 45 213 b 30 223 45 219 37 223 z m 304 180 b 127 0 206 180 127 101 b 304 -180 127 -99 206 -180 b 482 0 405 -180 482 -99 b 304 180 482 101 405 180 z m 305 32 l 225 112 b 304 140 248 130 275 140 b 387 112 336 140 364 130 z m 278 1 l 193 -82 b 216 0 199 -59 216 -30 b 194 85 216 33 203 50 z m 334 1 l 418 84 b 389 0 402 50 389 23 b 418 -81 389 -30 409 -60 z m 305 -27 l 389 -109 b 304 -138 364 -128 336 -138 b 222 -109 274 -138 246 -128 z',\n },\n noteheadCircleXWhole: {\n x_min: 0,\n x_max: 249,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 179 180 b 0 0 81 180 0 101 b 179 -180 0 -99 81 -180 b 359 0 278 -180 359 -99 b 179 180 359 101 278 180 z m 180 32 l 99 112 b 179 140 121 130 150 140 b 262 112 210 140 238 130 z m 151 1 l 68 -82 b 86 0 73 -59 86 -30 b 68 85 86 33 78 50 z m 209 1 l 291 84 b 269 0 276 50 269 32 b 291 -79 269 -26 282 -58 z m 180 -27 l 264 -111 b 179 -138 239 -128 210 -138 b 96 -111 148 -138 120 -128 z',\n },\n noteheadCircleXHalf: {\n x_min: 0,\n x_max: 250,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 179 180 b 0 0 81 180 0 101 b 179 -180 0 -99 81 -180 b 360 0 278 -180 360 -99 b 179 180 360 101 278 180 z m 186 37 l 131 92 b 220 124 153 109 189 124 b 262 112 236 124 249 121 z m 215 7 l 291 84 b 304 42 300 71 304 58 b 271 -49 304 10 288 -26 z m 145 -6 l 68 -82 b 56 -42 59 -71 56 -58 b 89 52 56 -9 72 27 z m 174 -33 l 230 -89 b 140 -124 206 -108 171 -124 b 96 -111 122 -124 109 -121 z',\n },\n noteheadCircleX: {\n x_min: 0,\n x_max: 249,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 179 180 b 0 0 81 180 0 99 b 179 -180 0 -99 81 -180 b 359 0 278 -180 359 -99 b 179 180 359 99 278 180 z m 261 112 l 180 30 l 98 112 b 179 138 121 128 148 138 b 261 112 210 138 238 128 z m 317 0 b 292 -82 317 -30 308 -59 l 209 1 l 291 84 b 317 0 307 60 317 30 z m 40 0 b 69 84 40 32 50 60 l 151 1 l 68 -84 b 40 0 49 -60 40 -30 z m 95 -111 l 180 -27 l 262 -111 b 179 -138 239 -128 210 -138 b 95 -111 148 -138 120 -128 z',\n },\n noteheadCircledDoubleWhole: {\n x_min: 0,\n x_max: 603,\n y_min: -218,\n y_max: 213,\n ha: 431,\n o: 'm 770 223 l 752 223 b 737 213 744 223 737 219 l 737 59 b 435 307 710 203 582 307 b 128 48 281 307 156 197 l 128 213 b 115 223 128 219 122 223 l 96 223 b 84 213 89 223 84 219 l 84 -215 b 96 -223 84 -220 89 -223 l 115 -223 b 128 -215 122 -223 128 -220 l 128 -56 b 435 -314 156 -206 282 -314 b 654 -223 517 -314 595 -282 b 737 -66 697 -180 726 -125 l 737 -215 b 752 -223 737 -220 744 -223 l 770 -223 b 785 -215 778 -223 785 -220 l 785 213 b 770 223 785 219 778 223 z m 435 274 b 698 85 556 274 661 194 b 439 180 641 143 534 180 b 176 99 320 180 228 148 b 435 274 217 203 318 274 z m 32 223 l 13 223 b 0 213 6 223 0 219 l 0 -215 b 13 -223 0 -220 6 -223 l 32 -223 b 45 -215 40 -223 45 -220 l 45 213 b 32 223 45 219 40 223 z m 852 223 l 835 223 b 819 213 828 223 819 219 l 819 -215 b 835 -223 819 -220 828 -223 l 852 -223 b 868 -215 861 -223 868 -220 l 868 213 b 852 223 868 219 861 223 z m 580 -46 b 514 -143 580 -91 562 -131 b 472 -148 501 -147 487 -148 b 364 -105 433 -148 395 -131 l 334 -73 b 285 58 307 -39 285 10 b 289 91 285 69 287 79 b 403 145 305 140 357 145 b 580 -46 501 145 580 42 z m 435 -282 b 176 -108 318 -282 217 -209 b 425 -180 222 -151 301 -180 b 691 -109 563 -180 647 -153 b 435 -282 651 -210 550 -282 z',\n },\n noteheadCircledWhole: {\n x_min: 0,\n x_max: 437,\n y_min: -225,\n y_max: 211,\n ha: 436,\n o: 'm 314 304 b 0 -10 140 304 0 164 b 314 -324 0 -183 141 -324 b 629 -10 487 -324 629 -183 b 314 304 629 164 488 304 z m 314 275 b 588 73 441 275 549 193 b 321 180 536 137 420 180 b 48 88 190 180 95 143 b 314 275 85 199 199 275 z m 393 -141 b 350 -147 379 -145 364 -147 b 314 -141 337 -147 325 -145 b 167 55 235 -120 167 -26 b 173 91 167 66 168 79 b 284 145 187 138 239 145 b 459 -48 382 145 459 39 b 393 -141 459 -91 438 -131 z m 314 -294 b 40 -86 187 -294 75 -207 b 305 -180 81 -141 164 -180 b 588 -86 464 -180 550 -143 b 314 -294 554 -209 442 -294 z',\n },\n noteheadCircledHalf: {\n x_min: -18,\n x_max: 311,\n y_min: -162,\n y_max: 167,\n ha: 329,\n o: 'm 212 240 b -26 3 81 240 -26 134 b 212 -233 -26 -127 81 -233 b 448 3 341 -233 448 -127 b 212 240 448 134 341 240 z m 212 220 b 363 160 271 220 324 197 b 281 180 341 173 312 180 b 0 -52 76 180 6 26 b -6 3 -4 -35 -6 -16 b 212 220 -6 122 92 220 z m 50 -92 b 42 -63 46 -84 42 -73 b 173 63 42 -33 73 7 b 317 120 243 105 288 120 b 369 89 344 120 359 107 b 377 62 374 81 377 72 b 248 -66 377 33 348 -1 b 108 -125 183 -109 138 -125 b 50 -92 78 -125 60 -109 z m 212 -215 b 84 -171 164 -215 120 -199 b 138 -180 101 -179 120 -180 b 422 56 372 -180 420 7 b 429 3 426 40 429 22 b 212 -215 429 -117 333 -215 z',\n },\n noteheadCircledBlack: {\n x_min: -21,\n x_max: 321,\n y_min: -171,\n y_max: 167,\n ha: 338,\n o: 'm 216 240 b -30 -3 82 240 -30 131 b 216 -246 -30 -137 82 -246 b 462 -3 351 -246 462 -137 b 216 240 462 131 351 240 z m 216 220 b 372 160 276 220 331 197 b 284 180 348 174 317 180 b 0 -59 127 180 0 65 l 0 -66 b -10 -3 -6 -45 -10 -24 b 216 220 -10 120 92 220 z m 216 -226 b 56 -158 153 -226 96 -200 b 140 -180 79 -171 107 -180 b 425 60 268 -180 425 -60 b 422 88 425 71 425 79 b 442 -3 435 60 442 29 b 216 -226 442 -125 341 -226 z',\n },\n noteheadDoubleWholeSquare: {\n x_min: 0,\n x_max: 416,\n y_min: -190,\n y_max: 198,\n ha: 388,\n o: 'm 563 217 b 528 180 563 192 544 180 l 62 180 b 36 215 52 180 36 192 l 36 268 b 17 285 36 278 27 285 b 0 268 7 285 0 278 l 0 -255 b 17 -274 0 -264 7 -274 b 36 -255 27 -274 36 -264 l 36 -213 b 66 -180 36 -197 53 -180 l 528 -180 b 563 -209 549 -180 563 -196 l 563 -255 b 580 -274 563 -264 570 -274 b 599 -255 590 -274 599 -264 l 599 268 b 580 285 599 278 590 285 b 563 268 570 285 563 278 z m 36 23 b 111 71 36 55 58 71 l 487 71 b 563 30 533 71 563 53 l 563 -22 b 487 -68 563 -53 533 -68 l 117 -68 b 36 -22 66 -68 36 -49 z',\n },\n noteheadSquareWhite: {\n x_min: 0,\n x_max: 313,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 451 -180 l 451 180 l 0 180 l 0 -180 z m 40 -138 l 40 140 l 410 140 l 410 -138 z',\n },\n noteheadSquareBlack: {\n x_min: 0,\n x_max: 313,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 451 -180 l 451 180 l 0 180 l 0 -180 z',\n },\n noteheadTriangleDownDoubleWhole: {\n x_min: 0,\n x_max: 483,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 696 213 b 681 223 696 219 690 223 l 662 223 b 648 213 655 223 648 219 l 648 -213 b 662 -223 648 -217 655 -223 l 681 -223 b 696 -213 690 -223 696 -217 z m 619 213 b 605 223 619 219 613 223 l 588 223 b 573 213 580 223 573 219 l 573 174 b 562 180 570 177 566 180 l 134 180 b 122 174 130 180 125 177 l 122 213 b 108 223 122 219 117 223 l 91 223 b 76 213 84 223 76 219 l 76 -213 b 91 -223 76 -217 84 -223 l 108 -223 b 122 -213 117 -223 122 -217 l 122 154 l 334 -173 b 346 -180 337 -177 341 -180 b 357 -173 351 -180 354 -177 l 573 154 l 573 -213 b 588 -223 573 -217 580 -223 l 605 -223 b 619 -213 613 -223 619 -217 z m 32 -223 b 46 -213 40 -223 46 -217 l 46 213 b 32 223 46 219 40 223 l 14 223 b 0 213 7 223 0 219 l 0 -213 b 14 -223 0 -217 7 -223 z m 428 98 b 346 -107 428 17 377 -53 b 265 96 315 -55 265 17 b 289 137 265 109 275 137 l 406 137 b 428 98 419 137 428 111 z',\n },\n noteheadTriangleDownWhole: {\n x_min: 0,\n x_max: 319,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 14 180 b 0 166 6 180 0 173 b 1 158 0 163 1 160 l 216 -173 b 228 -180 219 -177 225 -180 b 239 -173 233 -180 238 -177 l 458 158 b 459 166 458 160 459 163 b 445 180 459 173 454 180 z m 288 137 b 310 98 301 137 310 111 b 228 -108 310 17 259 -55 b 145 96 197 -56 145 17 b 170 137 145 109 157 137 z',\n },\n noteheadTriangleDownHalf: {\n x_min: 0,\n x_max: 285,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 196 -180 b 209 -173 200 -180 206 -177 l 408 157 b 410 166 409 160 410 163 b 396 180 410 173 403 180 l 14 180 b 0 166 4 180 0 173 b 1 158 0 163 0 161 l 183 -173 b 196 -180 184 -174 190 -180 z m 164 138 l 295 138 l 179 -76 l 114 37 z',\n },\n noteheadTriangleDownBlack: {\n x_min: 0,\n x_max: 292,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 207 -180 l 420 180 l 0 180 z',\n },\n noteheadTriangleUpDoubleWhole: {\n x_min: 0,\n x_max: 483,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 696 213 b 681 223 696 217 690 223 l 662 223 b 648 213 655 223 648 217 l 648 -213 b 662 -223 648 -219 655 -223 l 681 -223 b 696 -213 690 -223 696 -219 z m 619 213 b 605 223 619 217 613 223 l 588 223 b 573 213 580 223 573 217 l 573 -154 l 357 173 b 346 180 354 177 351 180 b 334 173 341 180 337 177 l 122 -154 l 122 213 b 108 223 122 217 117 223 l 91 223 b 76 213 84 223 76 217 l 76 -213 b 91 -223 76 -219 84 -223 l 108 -223 b 122 -213 117 -223 122 -219 l 122 -174 b 134 -180 125 -177 130 -180 l 562 -180 b 573 -174 566 -180 570 -177 l 573 -213 b 588 -223 573 -219 580 -223 l 605 -223 b 619 -213 613 -223 619 -219 z m 32 223 l 14 223 b 0 213 7 223 0 217 l 0 -213 b 14 -223 0 -219 7 -223 l 32 -223 b 46 -213 40 -223 46 -219 l 46 213 b 32 223 46 217 40 223 z m 428 -98 b 406 -137 428 -111 419 -137 l 289 -137 b 265 -96 275 -137 265 -109 b 346 107 265 -17 315 55 b 428 -98 377 53 428 -17 z',\n },\n noteheadTriangleUpWhole: {\n x_min: 0,\n x_max: 319,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 445 -180 b 459 -166 454 -180 459 -173 b 458 -158 459 -163 458 -160 l 239 173 b 228 180 238 177 233 180 b 216 173 225 180 219 177 l 1 -158 b 0 -166 1 -160 0 -163 b 14 -180 0 -173 6 -180 z m 170 -137 b 145 -96 157 -137 145 -109 b 228 108 145 -17 197 56 b 310 -98 259 55 310 -17 b 288 -137 310 -111 301 -137 z',\n },\n noteheadTriangleUpHalf: {\n x_min: 0,\n x_max: 285,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 215 180 b 202 173 210 180 204 177 l 3 -157 b 0 -166 1 -160 0 -163 b 14 -180 0 -173 7 -180 l 396 -180 b 410 -166 406 -180 410 -173 b 409 -158 410 -163 410 -161 l 228 173 b 215 180 226 174 220 180 z m 246 -138 l 115 -138 l 232 76 l 297 -37 z',\n },\n noteheadTriangleUpBlack: {\n x_min: 0,\n x_max: 293,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 422 -180 l 207 180 l 0 -180 z',\n },\n noteheadSlashedDoubleWhole1: {\n x_min: 0,\n x_max: 596,\n y_min: -179,\n y_max: 168,\n ha: 347,\n o: 'm 618 135 l 697 206 b 704 222 703 210 704 216 b 698 236 704 226 703 232 b 683 242 694 239 688 242 b 670 238 677 242 674 240 l 575 153 b 435 180 531 168 481 180 b 128 0 246 180 128 98 b 236 -148 128 -58 160 -114 l 153 -222 b 145 -238 148 -226 145 -232 b 151 -252 145 -242 148 -248 b 167 -258 156 -256 161 -258 b 181 -253 171 -258 177 -256 l 282 -164 b 420 -180 320 -173 366 -180 b 729 0 654 -180 729 -98 b 618 135 729 55 681 104 z m 114 223 l 95 223 b 82 212 88 223 82 217 l 82 -215 b 95 -223 82 -219 88 -223 l 114 -223 b 127 -215 121 -223 127 -219 l 127 212 b 114 223 127 217 121 223 z m 32 223 l 13 223 b 0 212 6 223 0 217 l 0 -215 b 13 -223 0 -219 6 -223 l 32 -223 b 45 -215 39 -223 45 -219 l 45 212 b 32 223 45 217 39 223 z m 844 223 l 825 223 b 811 212 819 223 811 217 l 811 -215 b 825 -223 811 -219 819 -223 l 844 -223 b 858 -215 851 -223 858 -219 l 858 212 b 844 223 858 217 851 223 z m 763 223 l 743 223 b 730 212 736 223 730 217 l 730 -215 b 743 -223 730 -219 736 -223 l 763 -223 b 776 -215 769 -223 776 -219 l 776 212 b 763 223 776 217 769 223 z m 282 56 b 285 89 282 68 284 79 b 399 144 301 137 354 144 b 510 95 441 144 480 124 l 327 -68 b 282 56 301 -35 282 13 z m 572 -72 b 508 -141 564 -108 544 -132 b 467 -147 495 -145 481 -147 b 360 -104 428 -147 389 -128 l 356 -98 l 537 63 b 575 -46 560 30 575 -9 b 572 -72 575 -55 573 -65 z',\n },\n noteheadSlashedWhole1: {\n x_min: -22,\n x_max: 433,\n y_min: -157,\n y_max: 148,\n ha: 305,\n o: 'm 484 140 b 308 180 431 166 367 180 b 0 1 118 180 0 99 b 73 -128 0 -48 22 -95 l -22 -190 b -32 -206 -27 -194 -32 -200 b -27 -217 -32 -210 -30 -215 b -12 -226 -23 -223 -17 -226 b 0 -223 -7 -226 -4 -225 l 112 -150 b 294 -180 157 -168 217 -180 b 602 1 526 -180 602 -98 b 523 118 602 48 570 86 l 613 177 b 624 193 619 181 624 187 b 619 204 624 197 622 200 b 603 213 615 209 609 213 b 592 209 599 213 596 212 z m 190 -52 b 154 56 170 -20 154 19 b 160 91 154 68 156 79 b 271 147 174 138 226 147 b 396 82 321 147 364 121 z m 419 50 b 446 -48 436 19 446 -14 b 337 -147 446 -120 402 -147 b 301 -141 327 -147 314 -144 b 235 -104 276 -134 253 -120 b 215 -84 226 -98 220 -91 z',\n },\n noteheadSlashedHalf1: {\n x_min: -67,\n x_max: 386,\n y_min: -142,\n y_max: 160,\n ha: 302,\n o: 'm 552 222 b 536 230 549 228 543 230 b 524 228 533 230 528 230 l 389 140 b 281 180 364 164 327 180 b 0 -60 65 180 0 13 b 7 -105 0 -78 3 -92 l -88 -167 b -96 -184 -94 -171 -96 -177 b -94 -194 -96 -187 -95 -192 b -76 -204 -89 -202 -84 -204 b -66 -202 -73 -204 -69 -203 l 29 -140 b 137 -180 55 -167 92 -180 b 420 59 374 -180 420 13 b 412 107 420 76 419 92 l 546 194 b 556 210 552 197 556 204 b 552 222 556 213 554 217 z m 315 120 b 347 112 328 120 338 117 l 46 -82 b 42 -63 43 -76 42 -69 b 315 120 42 6 248 120 z m 108 -124 b 69 -114 91 -124 79 -120 l 372 81 b 376 63 374 75 376 69 b 108 -124 376 0 174 -124 z',\n },\n noteheadSlashedBlack1: {\n x_min: -80,\n x_max: 375,\n y_min: -165,\n y_max: 167,\n ha: 332,\n o: 'm 518 240 b 507 236 514 240 510 239 l 384 148 b 284 180 359 168 324 180 b 0 -62 127 180 0 63 b 13 -115 0 -82 4 -99 l -107 -202 b -115 -217 -111 -204 -115 -212 b -111 -229 -115 -222 -114 -225 b -95 -238 -108 -235 -101 -238 b -84 -235 -91 -238 -86 -236 l 39 -148 b 140 -180 63 -170 99 -180 b 425 59 268 -180 425 -62 b 410 117 425 81 420 101 l 530 203 b 540 219 536 207 540 213 b 518 240 540 229 528 240 z',\n },\n noteheadSlashedDoubleWhole2: {\n x_min: 0,\n x_max: 596,\n y_min: -178,\n y_max: 169,\n ha: 347,\n o: 'm 729 0 b 435 180 729 102 569 180 b 278 156 374 180 321 170 l 184 239 b 170 243 181 242 176 243 b 154 238 166 243 158 240 b 150 223 151 233 150 228 b 156 207 150 217 153 212 l 233 138 b 128 0 167 107 128 56 b 420 -180 128 -94 210 -180 b 575 -164 482 -180 533 -174 l 672 -252 b 687 -256 677 -255 681 -256 b 703 -251 691 -256 698 -255 b 707 -236 706 -246 707 -240 b 701 -220 707 -230 706 -225 l 619 -150 b 729 0 700 -117 729 -62 z m 114 223 l 95 223 b 82 213 88 223 82 217 l 82 -213 b 95 -223 82 -219 88 -223 l 114 -223 b 127 -213 121 -223 127 -219 l 127 213 b 114 223 127 217 121 223 z m 32 223 l 13 223 b 0 213 6 223 0 217 l 0 -213 b 13 -223 0 -219 6 -223 l 32 -223 b 45 -213 39 -223 45 -219 l 45 213 b 32 223 45 217 39 223 z m 844 223 l 825 223 b 811 213 819 223 811 217 l 811 -213 b 825 -223 811 -219 819 -223 l 844 -223 b 858 -213 851 -223 858 -219 l 858 213 b 844 223 858 217 851 223 z m 763 223 l 743 223 b 730 213 736 223 730 217 l 730 -213 b 743 -223 730 -219 736 -223 l 763 -223 b 776 -213 769 -223 776 -219 l 776 213 b 763 223 776 217 769 223 z m 312 124 b 399 144 336 141 369 144 b 575 -46 495 144 575 40 b 563 -98 575 -65 570 -81 z m 508 -141 b 467 -147 495 -145 481 -147 b 360 -104 428 -147 389 -128 b 330 -72 350 -95 340 -82 b 282 56 304 -37 282 10 b 285 89 282 68 284 79 b 536 -130 287 89 304 75 z',\n },\n noteheadSlashedWhole2: {\n x_min: -18,\n x_max: 436,\n y_min: -154,\n y_max: 151,\n ha: 305,\n o: 'm 531 -128 b 602 1 582 -96 602 -49 b 308 180 602 104 441 180 b 114 144 230 180 164 166 l 4 215 b -6 217 1 217 -3 217 b -22 209 -13 217 -19 215 b -26 197 -24 204 -26 200 b -16 181 -26 192 -22 184 l 75 121 b 0 1 27 91 0 49 b 294 -180 0 -94 82 -180 b 491 -150 379 -180 444 -168 l 598 -219 b 608 -222 600 -222 605 -222 b 624 -213 615 -222 621 -219 b 628 -202 626 -209 628 -206 b 618 -186 628 -196 624 -189 z m 168 108 b 271 147 190 141 233 147 b 446 -48 369 147 446 40 b 445 -72 446 -56 446 -63 z m 154 69 l 429 -109 b 382 -141 419 -125 402 -135 b 337 -147 367 -144 351 -147 b 301 -141 327 -147 314 -144 b 235 -104 276 -134 253 -120 b 203 -72 223 -94 213 -82 b 154 58 177 -39 154 12 z',\n },\n noteheadSlashedHalf2: {\n x_min: -73,\n x_max: 380,\n y_min: -134,\n y_max: 168,\n ha: 302,\n o: 'm 537 -156 l 383 -58 b 422 60 413 -9 422 39 b 281 180 422 134 364 180 b 101 127 203 180 144 157 l -75 239 b -85 242 -78 242 -82 242 b -102 233 -92 242 -98 239 b -105 222 -104 229 -105 225 b -95 206 -105 216 -102 209 l 69 99 b 0 -59 19 46 0 -20 b 138 -180 0 -135 60 -180 b 359 -88 248 -180 317 -138 l 516 -190 b 527 -193 520 -192 524 -193 b 543 -183 534 -193 540 -190 b 547 -173 546 -180 547 -176 b 537 -156 547 -166 543 -160 z m 367 92 b 377 63 374 82 377 73 b 318 -14 377 43 361 20 l 184 72 b 317 121 248 108 289 121 b 367 92 344 121 357 109 z m 248 -66 b 108 -124 181 -108 138 -124 b 50 -92 78 -124 60 -109 b 42 -63 46 -84 42 -73 b 145 49 42 -35 68 0 l 285 -40 b 248 -66 274 -49 261 -56 z',\n },\n noteheadSlashedBlack2: {\n x_min: -79,\n x_max: 376,\n y_min: -164,\n y_max: 168,\n ha: 332,\n o: 'm 531 -200 l 363 -78 b 425 59 402 -37 425 10 b 285 180 425 132 367 180 b 92 114 210 180 144 154 l -81 238 b -94 242 -85 240 -89 242 b -111 232 -99 242 -107 238 b -114 220 -112 229 -114 225 b -105 204 -114 215 -111 207 l 62 85 b 0 -62 23 43 0 -9 b 140 -180 0 -137 62 -180 b 331 -108 204 -180 275 -153 l 507 -233 b 520 -236 511 -236 517 -236 b 537 -228 527 -236 533 -233 b 541 -216 540 -225 541 -220 b 531 -200 541 -210 537 -203 z',\n },\n noteheadDiamondDoubleWhole: {\n x_min: 0,\n x_max: 432,\n y_min: -155,\n y_max: 155,\n ha: 310,\n o: 'm 592 223 b 580 215 585 223 580 219 l 580 -215 b 592 -223 580 -219 585 -223 l 608 -223 b 622 -215 615 -223 622 -219 l 622 215 b 608 223 622 219 615 223 z m 517 223 b 504 215 510 223 504 219 l 504 -215 b 517 -223 504 -219 510 -223 l 533 -223 b 544 -215 540 -223 544 -219 l 544 215 b 533 223 544 219 540 223 z m 246 179 b 240 180 243 179 242 180 b 232 176 236 180 233 179 l 118 22 b 117 17 117 20 117 19 l 117 215 b 104 223 117 219 111 223 l 88 223 b 75 215 81 223 75 219 l 75 -215 b 88 -223 75 -219 81 -223 l 104 -223 b 117 -215 111 -223 117 -219 l 117 14 l 118 14 b 122 7 118 12 120 10 l 374 -179 b 382 -180 376 -180 379 -180 b 390 -177 384 -180 387 -180 l 503 -23 l 503 -17 b 500 -9 503 -13 503 -10 z m 12 223 b 0 215 4 223 0 219 l 0 -215 b 12 -223 0 -219 4 -223 l 29 -223 b 40 -215 36 -223 40 -219 l 40 215 b 29 223 40 219 36 223 z m 183 39 b 179 46 181 39 179 43 b 229 112 226 112 228 112 b 236 109 229 112 233 111 l 436 -39 b 439 -46 438 -39 439 -42 b 390 -112 393 -111 392 -112 b 383 -109 389 -112 386 -111 z',\n },\n noteheadDiamondWhole: {\n x_min: 0,\n x_max: 270,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 386 -23 b 389 -16 387 -20 389 -19 b 383 -7 389 -13 386 -9 l 130 179 b 122 180 128 180 125 180 b 115 177 120 180 117 180 l 3 23 b 0 17 1 20 0 19 b 4 7 0 16 3 10 l 258 -179 b 264 -180 261 -179 262 -180 b 272 -176 268 -180 271 -179 z m 66 40 b 62 48 65 42 62 45 l 109 111 b 112 112 109 112 111 112 b 118 111 115 112 117 111 l 320 -37 b 324 -46 323 -39 324 -42 b 275 -111 278 -111 276 -111 b 268 -108 272 -111 271 -109 z',\n },\n noteheadDiamondHalf: {\n x_min: 0,\n x_max: 251,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 359 -7 b 361 0 360 -6 361 -3 b 359 7 361 3 360 4 l 189 177 b 180 180 186 179 183 180 b 174 177 179 180 176 179 l 4 7 b 0 0 1 4 0 3 b 4 -7 0 -3 1 -6 l 174 -177 b 180 -180 176 -180 179 -180 b 189 -177 183 -180 186 -180 z m 266 26 b 138 -71 266 -12 176 -71 b 96 -50 121 -71 108 -63 b 88 -24 89 -43 88 -32 b 215 73 88 13 177 73 b 266 26 238 73 266 50 z',\n },\n noteheadDiamondBlack: {\n x_min: 0,\n x_max: 250,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 357 -6 b 360 1 359 -4 360 -1 b 357 9 360 4 359 7 l 189 177 b 180 180 187 179 184 180 b 171 177 177 180 173 179 l 3 9 b 0 1 0 6 0 4 b 4 -7 0 -1 1 -4 l 173 -177 b 180 -180 176 -180 177 -180 b 187 -177 181 -180 184 -180 z',\n },\n noteheadParenthesis: {\n x_min: -73,\n x_max: 368,\n y_min: -180,\n y_max: 182,\n ha: 362,\n o: 'm 52 -249 b -30 -144 3 -212 -14 -190 b -52 4 -45 -102 -52 -56 b 52 252 -52 118 -36 179 l 46 262 b -105 3 -49 197 -105 124 b 45 -259 -105 -109 -48 -200 z m 382 -259 b 530 3 474 -202 530 -108 b 379 262 530 122 474 200 l 373 252 b 478 4 462 180 478 118 b 456 -144 478 -56 471 -102 b 373 -249 439 -190 422 -212 z',\n },\n noteheadParenthesisRight: {\n x_min: -36,\n x_max: 73,\n y_min: -181,\n y_max: 181,\n ha: 362,\n o: 'm -43 -261 b 105 1 49 -203 105 -109 b -46 261 105 121 49 199 l -52 251 b 53 3 37 179 53 117 b 32 -145 53 -58 46 -104 b -52 -251 14 -192 -3 -213 z',\n },\n noteheadParenthesisLeft: {\n x_min: 0,\n x_max: 109,\n y_min: -181,\n y_max: 181,\n ha: 362,\n o: 'm 157 -251 b 75 -145 108 -213 91 -192 b 53 3 60 -104 53 -58 b 157 251 53 117 69 177 l 151 261 b 0 1 56 196 0 122 b 150 -261 0 -111 58 -202 z',\n },\n noteheadMoonBlack: {\n x_min: 0,\n x_max: 315,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 228 -180 b 454 0 343 -180 454 -130 l 454 180 l 0 180 l 0 0 b 228 -180 0 -131 112 -180 z',\n },\n noteheadTriangleLeftBlack: {\n x_min: 0,\n x_max: 339,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 488 -180 l 0 180 l 0 -180 z',\n },\n noteheadTriangleRightBlack: {\n x_min: 0,\n x_max: 339,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 488 180 l 0 -180 l 488 -180 z',\n },\n noteheadTriangleRoundDownBlack: {\n x_min: 0,\n x_max: 278,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 200 -180 l 400 112 l 383 124 b 199 180 327 161 264 180 b 16 124 135 180 73 161 l 0 112 z',\n },\n augmentationDot: {\n x_min: 0,\n x_max: 100,\n y_min: -50,\n y_max: 50,\n ha: 100,\n o: 'm 144 0 b 72 72 144 40 112 72 b 0 0 32 72 0 40 b 72 -72 0 -40 32 -72 b 144 0 112 -72 144 -40 z',\n },\n tremolo1: {\n x_min: -150,\n x_max: 150,\n y_min: -93,\n y_max: 94,\n ha: 187,\n o: 'm 216 -45 l 216 135 l -216 46 l -216 -134 z',\n },\n flag8thUp: {\n x_min: 0,\n x_max: 264,\n y_min: -810.1921176545985,\n y_max: 9,\n ha: 819.1921176545985,\n o: 'm 343 -1138 b 380 -888 343 -1138 380 -1001 b 215 -395 380 -708 305 -539 b 58 -19 141 -281 81 -157 b 27 13 53 4 42 13 b 0 -9 12 13 0 9 l 0 -353 b 284 -688 95 -370 232 -566 b 318 -904 305 -737 318 -819 b 284 -1102 318 -969 308 -1037 b 279 -1123 281 -1110 279 -1117 b 302 -1165 279 -1146 294 -1159 b 343 -1138 311 -1171 336 -1162 z',\n },\n flag8thDown: {\n x_min: 0,\n x_max: 306,\n y_min: -14,\n y_max: 808,\n ha: 822,\n o: 'm 346 1094 b 376 897 366 1034 376 962 b 318 642 376 812 340 691 b 0 340 265 521 193 405 l 0 1 b 23 -20 0 -13 12 -20 b 58 12 36 -20 55 -12 b 262 387 82 148 189 274 b 441 881 353 530 441 701 b 400 1142 441 994 412 1096 b 377 1164 396 1158 387 1164 b 346 1094 356 1164 331 1136 z',\n },\n flag16thUp: {\n x_min: 0,\n x_max: 279,\n y_min: -813,\n y_max: 2,\n ha: 815,\n o: 'm 392 -1146 b 402 -988 397 -1139 402 -1057 l 402 -956 b 360 -783 402 -896 386 -837 b 359 -770 360 -779 359 -776 b 360 -760 359 -768 359 -765 b 396 -577 364 -752 396 -665 b 392 -526 396 -559 395 -543 b 236 -275 377 -428 340 -387 b 53 -16 158 -192 78 -168 b 24 3 50 0 33 3 b 0 -12 16 3 0 -1 l 0 -570 l 7 -570 b 298 -778 96 -573 199 -576 b 344 -992 331 -847 344 -917 b 333 -1120 344 -1034 340 -1077 b 331 -1133 331 -1126 331 -1129 b 363 -1171 331 -1152 343 -1171 b 392 -1146 373 -1171 383 -1165 z m 301 -661 b 223 -562 278 -625 253 -596 b 59 -331 156 -484 89 -449 b 58 -327 58 -330 58 -328 b 78 -312 58 -321 66 -312 l 89 -312 b 302 -464 177 -312 255 -393 b 341 -592 328 -501 341 -546 b 340 -621 341 -602 341 -611 b 330 -658 337 -632 337 -647 b 311 -667 328 -662 318 -667 b 301 -661 307 -667 304 -665 z',\n },\n flag16thDown: {\n x_min: 0,\n x_max: 290.8951581511223,\n y_min: -9,\n y_max: 812.0064,\n ha: 821.0064,\n o: 'm 346 1132 b 312 768 367 1011 367 880 b 7 559 213 566 96 562 l 0 559 l 0 1 b 24 -13 0 -6 10 -13 b 53 6 35 -13 50 -10 b 406 516 88 228 372 289 b 410 567 409 531 410 549 b 374 750 410 655 379 742 b 373 760 373 753 373 756 b 374 773 373 766 374 769 b 405 1138 426 881 428 1022 b 370 1169 397 1171 387 1169 b 346 1132 353 1168 341 1156 z m 325 657 b 344 647 333 657 343 652 b 354 611 351 636 351 622 b 356 582 356 600 356 590 b 317 454 356 534 343 491 b 89 302 269 383 177 302 l 78 302 b 58 317 66 302 58 310 b 59 321 58 318 58 320 b 238 552 89 439 170 472 b 315 651 268 585 292 613 b 325 657 318 655 321 657 z',\n },\n flag32ndUp: {\n x_min: 0,\n x_max: 261,\n y_min: -812,\n y_max: 149,\n ha: 961,\n o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 366 -289 369 -315 369 -302 b 220 -58 350 -202 317 -163 b 46 187 148 20 71 43 b 20 215 45 200 35 215 b 0 197 12 215 0 207 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 56 -390 147 -527 88 -495 b 73 -367 53 -380 60 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z',\n },\n flag32ndDown: {\n x_min: 0,\n x_max: 273,\n y_min: -172,\n y_max: 812,\n ha: 984,\n o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -229 b 20 -248 0 -242 9 -248 b 48 -219 35 -248 46 -232 b 229 36 72 -69 154 -46 b 380 278 330 145 364 186 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z',\n },\n flag64thUp: {\n x_min: 0,\n x_max: 261,\n y_min: -812,\n y_max: 347,\n ha: 1159,\n o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 220 228 350 84 317 122 b 46 472 148 305 71 328 b 20 500 45 485 32 500 b 0 482 10 500 0 492 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 24 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 58 187 148 20 82 43 b 56 193 58 189 58 192 b 300 24 138 193 220 157 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 b 73 -367 52 -376 63 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z',\n },\n flag64thDown: {\n x_min: 0,\n x_max: 273,\n y_min: -376,\n y_max: 812,\n ha: 1188,\n o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -523 b 20 -541 0 -534 9 -541 b 48 -513 35 -541 46 -526 b 229 -258 72 -363 154 -340 b 380 -16 330 -148 364 -108 b 384 27 383 -1 384 13 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z m 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 b 229 36 75 -86 145 -55 b 311 128 264 73 289 102 z',\n },\n flag128thUp: {\n x_min: 0,\n x_max: 261,\n y_min: -812,\n y_max: 533,\n ha: 1345,\n o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 341 75 360 26 353 50 b 369 222 354 111 369 167 b 366 264 369 236 369 251 b 220 495 350 351 317 390 b 46 740 148 573 71 596 b 22 768 45 753 35 768 b 0 750 10 768 0 760 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 292 b 321 223 315 264 321 242 b 317 193 321 212 318 203 b 301 135 314 180 308 158 b 220 228 281 161 255 190 b 55 461 151 304 79 327 b 300 292 134 461 220 426 z m 300 24 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 56 187 148 20 81 43 b 55 193 56 189 56 192 b 300 24 137 193 220 157 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 b 73 -367 53 -376 62 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z',\n },\n flag128thDown: {\n x_min: 0,\n x_max: 273,\n y_min: -580,\n y_max: 812,\n ha: 1392,\n o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -816 b 20 -835 0 -828 7 -835 b 48 -806 33 -835 46 -819 b 229 -552 72 -657 154 -634 b 380 -310 330 -442 364 -402 b 384 -266 383 -295 384 -281 b 351 -105 384 -206 366 -143 b 384 27 372 -66 384 -16 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z m 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 b 229 36 75 -86 145 -55 b 311 128 264 73 289 102 z m 330 -238 b 334 -268 331 -248 334 -256 b 311 -340 334 -287 328 -310 b 56 -516 229 -478 137 -516 b 229 -258 75 -380 145 -348 b 311 -166 264 -220 289 -192 z',\n },\n accidentalFlat: {\n x_min: 0,\n x_max: 226,\n y_min: -175,\n y_max: 439,\n ha: 614,\n o: 'm 17 -245 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 82 -225 117 -186 b 325 82 281 -72 325 16 b 196 220 325 164 262 216 b 117 196 171 220 137 209 b 85 176 108 189 92 176 b 78 177 82 176 81 176 b 62 202 68 181 62 192 b 72 608 63 233 72 579 b 45 632 72 624 59 632 b 0 592 24 632 1 618 b 17 -245 0 592 6 -230 z m 68 -117 b 63 27 68 -117 63 -30 b 66 73 63 50 65 68 b 167 144 76 102 134 144 b 226 60 209 144 226 96 b 98 -134 226 -17 160 -95 b 84 -138 92 -137 88 -138 b 68 -117 71 -138 68 -124 z',\n },\n accidentalNatural: {\n x_min: 0,\n x_max: 168,\n y_min: -335,\n y_max: 341,\n ha: 676,\n o: 'm 203 261 b 197 259 200 261 199 259 b 68 226 197 259 105 226 b 53 233 59 226 53 228 l 53 474 b 36 491 53 484 45 491 l 17 491 b 0 474 7 491 0 484 l 0 -268 b 13 -281 0 -276 4 -281 l 16 -279 b 22 -278 17 -279 20 -279 b 164 -235 42 -269 122 -235 b 189 -251 179 -235 189 -239 l 189 -465 b 206 -482 189 -475 196 -482 l 225 -482 b 242 -465 233 -482 242 -475 l 242 258 b 230 269 242 265 236 269 b 225 268 229 269 226 269 z m 53 56 b 176 114 53 76 141 114 b 189 107 184 114 189 112 l 189 -42 b 71 -101 189 -68 107 -101 b 53 -92 60 -101 53 -98 z',\n },\n accidentalSharp: {\n x_min: 0,\n x_max: 249,\n y_min: -348,\n y_max: 350,\n ha: 698,\n o: 'm 341 170 b 359 194 351 174 359 186 l 359 297 b 348 308 359 304 354 308 b 341 307 346 308 344 308 b 305 294 341 307 312 295 b 285 312 295 294 285 301 l 285 488 b 265 504 285 497 276 504 b 242 488 251 504 242 497 l 242 301 b 223 259 240 287 236 268 b 132 223 206 249 157 229 b 115 252 120 223 115 240 l 115 425 b 95 441 115 433 105 441 b 72 425 81 441 72 433 l 72 230 b 55 192 72 210 63 196 b 17 176 46 187 17 176 b 0 153 7 173 0 161 l 0 50 b 13 37 0 42 4 37 l 16 39 b 50 53 17 39 39 48 l 52 55 b 72 29 63 55 72 40 l 72 -114 b 56 -147 72 -130 65 -143 b 17 -163 48 -150 17 -163 b 0 -186 7 -166 0 -177 l 0 -288 b 13 -301 0 -297 4 -301 l 16 -300 b 50 -287 17 -300 37 -291 b 55 -285 52 -285 53 -285 b 72 -308 65 -285 72 -301 l 72 -485 b 91 -501 72 -494 81 -501 b 115 -485 105 -501 115 -494 l 115 -285 b 130 -253 115 -266 122 -256 l 217 -217 b 219 -217 217 -217 219 -217 l 222 -216 b 242 -242 235 -216 242 -233 l 242 -422 b 261 -438 242 -431 251 -438 b 285 -422 276 -438 285 -431 l 285 -217 b 301 -184 285 -206 291 -189 b 341 -168 311 -180 341 -168 b 359 -144 351 -164 359 -153 l 359 -42 b 348 -30 359 -35 354 -30 b 341 -32 346 -30 344 -30 l 304 -46 b 285 -20 295 -46 285 -37 l 285 114 b 304 156 285 124 292 151 z m 242 -65 b 132 -122 233 -94 166 -122 b 115 -115 124 -122 117 -120 b 111 -43 112 -109 111 -78 b 115 63 111 1 112 52 b 220 118 118 88 184 118 b 242 109 230 118 239 115 b 248 27 245 102 248 66 b 242 -65 248 -12 245 -52 z',\n },\n accidentalDoubleSharp: {\n x_min: 0,\n x_max: 247,\n y_min: -125,\n y_max: 127,\n ha: 252,\n o: 'm 274 -46 b 206 1 258 -37 206 -9 b 274 50 206 22 253 43 b 278 50 275 50 276 50 l 287 49 b 346 63 304 49 331 52 b 356 115 353 71 356 92 b 292 183 356 174 351 183 b 233 173 266 183 240 180 b 226 117 228 168 226 143 b 179 49 219 101 196 49 b 130 117 158 49 135 96 b 118 173 130 141 125 167 b 66 183 112 180 89 183 b 7 173 42 183 16 180 b 0 120 3 170 0 145 b 7 63 0 94 3 68 b 68 49 17 55 43 49 b 82 50 73 49 78 50 b 150 3 98 42 150 13 b 84 -46 150 -16 104 -39 l 69 -46 b 7 -56 43 -46 16 -49 b 0 -111 3 -60 0 -85 b 7 -166 0 -137 3 -163 b 65 -180 17 -174 40 -180 b 118 -166 86 -180 109 -176 b 130 -111 127 -158 130 -134 b 132 -105 130 -109 131 -107 b 177 -45 141 -85 158 -45 b 226 -111 196 -45 220 -91 b 233 -166 226 -137 228 -161 b 291 -180 243 -174 266 -180 b 356 -114 346 -180 356 -166 b 346 -56 356 -89 351 -63 b 288 -46 338 -49 312 -46 z',\n },\n accidentalDoubleFlat: {\n x_min: 0,\n x_max: 411,\n y_min: -175,\n y_max: 437,\n ha: 612,\n o: 'm 452 217 b 384 194 426 217 408 207 b 350 176 374 189 363 176 b 343 177 347 176 344 176 b 328 202 333 180 328 190 b 337 606 328 232 337 579 b 310 629 337 622 324 629 b 265 592 291 629 268 616 b 269 194 265 592 266 395 b 196 217 248 209 223 217 l 187 217 b 120 194 160 217 143 207 b 85 176 108 189 98 176 b 78 177 82 176 81 176 b 62 202 68 180 62 190 b 72 606 62 232 72 579 b 45 629 72 622 59 629 b 0 592 24 629 1 616 b 17 -245 0 592 7 -232 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 84 -226 120 -186 b 274 -50 206 -124 246 -85 b 284 -245 276 -158 279 -240 b 295 -252 288 -251 292 -252 b 304 -249 300 -252 304 -249 b 416 -163 348 -226 383 -186 b 592 82 546 -72 592 16 b 461 217 592 163 528 216 z m 96 -134 b 84 -138 92 -137 86 -138 b 68 -115 72 -138 68 -124 b 63 26 68 -115 63 -30 b 66 72 63 49 65 66 b 168 144 75 101 134 144 b 226 59 212 144 226 95 b 96 -134 226 -22 161 -94 z m 361 -134 b 348 -138 356 -137 351 -138 b 333 -115 337 -138 333 -124 b 328 39 333 -115 328 -16 b 330 72 328 55 328 68 b 433 144 338 101 399 144 b 468 130 448 144 459 140 b 490 59 481 112 490 88 b 361 -134 490 -22 426 -94 z',\n },\n accidentalParensLeft: {\n x_min: 0,\n x_max: 141,\n y_min: -248,\n y_max: 247,\n ha: 495,\n o: 'm 203 331 l 203 351 b 202 356 203 354 203 356 b 0 0 60 281 0 140 b 199 -357 0 -144 60 -269 b 203 -354 200 -357 203 -356 l 203 -333 b 200 -327 203 -330 202 -328 b 86 0 118 -253 86 -160 b 200 324 86 158 120 251 b 203 331 202 325 203 327 z',\n },\n accidentalParensRight: {\n x_min: 0,\n x_max: 141,\n y_min: -248,\n y_max: 247,\n ha: 495,\n o: 'm 0 331 b 3 324 0 327 1 325 b 117 0 84 251 117 158 b 3 -327 117 -160 85 -253 b 0 -333 1 -328 0 -330 l 0 -354 b 4 -357 0 -356 3 -357 b 203 0 143 -269 203 -144 b 1 356 203 140 143 281 b 0 351 0 356 0 354 z',\n },\n accidentalQuarterToneFlatStein: {\n x_min: 1,\n x_max: 227,\n y_min: -175,\n y_max: 439,\n ha: 614,\n o: 'm 310 -245 b 327 592 321 -230 327 592 b 282 632 325 618 302 632 b 255 608 268 632 255 624 b 265 202 255 579 264 233 b 249 177 265 192 259 181 b 242 176 246 176 245 176 b 210 196 235 176 219 189 b 131 220 190 209 156 220 b 1 85 65 216 1 164 b 174 -161 1 16 46 -72 b 288 -249 210 -186 245 -225 b 297 -252 288 -249 292 -252 b 310 -245 301 -252 305 -251 z m 259 -117 b 243 -138 259 -124 256 -138 b 229 -134 239 -138 235 -137 b 101 60 167 -95 101 -17 b 160 144 101 96 118 144 b 261 73 193 144 251 102 b 264 27 262 68 264 50 b 259 -117 264 -30 259 -117 z',\n },\n accidentalThreeQuarterTonesFlatZimmermann: {\n x_min: 1,\n x_max: 466,\n y_min: -175,\n y_max: 439,\n ha: 614,\n o: 'm 363 -245 b 376 -252 367 -251 372 -252 b 384 -249 380 -252 384 -249 b 497 -161 428 -226 464 -186 b 671 84 625 -72 671 16 b 541 220 671 164 606 217 b 513 217 531 220 523 219 b 464 196 495 212 480 206 b 431 176 452 189 442 176 b 423 177 428 176 426 176 b 408 202 413 180 408 190 l 419 608 b 392 632 419 625 406 632 b 346 592 372 632 347 618 b 363 -245 346 592 351 -230 z m 289 -249 b 297 -252 289 -249 292 -252 b 310 -245 300 -252 305 -251 b 328 592 321 -230 328 592 b 282 631 327 618 302 631 b 255 608 268 631 255 624 l 266 202 b 251 177 266 190 261 180 b 243 176 248 176 246 176 b 210 196 232 176 222 189 b 164 216 196 204 180 210 l 163 217 b 132 220 151 219 143 220 b 1 84 65 217 1 163 b 177 -163 1 16 48 -72 b 289 -249 210 -186 245 -226 z m 262 72 b 265 26 264 66 265 49 b 261 -115 265 -30 261 -115 b 245 -138 261 -124 258 -138 b 230 -134 240 -138 236 -137 b 102 60 166 -92 102 -20 b 124 128 102 88 111 112 b 161 144 134 138 147 144 b 199 134 173 144 184 141 b 262 72 219 122 256 92 z m 413 -115 b 409 26 413 -115 409 -30 b 412 72 409 49 410 66 b 514 144 420 102 480 144 b 570 60 557 144 570 96 b 442 -134 570 -23 508 -91 b 429 -138 436 -137 433 -138 b 413 -115 418 -138 413 -124 z',\n },\n accidentalQuarterToneSharpStein: {\n x_min: 0,\n x_max: 179,\n y_min: -353,\n y_max: 307,\n ha: 660,\n o: 'm 258 240 b 246 252 258 248 252 252 b 240 251 245 252 242 252 b 168 225 240 251 171 225 b 150 253 156 225 150 240 l 150 426 b 130 442 150 435 141 442 b 105 418 108 442 105 429 l 105 230 b 91 193 105 219 101 202 b 17 161 65 183 42 171 b 0 138 9 158 0 147 l 0 36 b 13 23 0 27 4 23 l 16 24 b 86 53 17 24 73 49 l 88 55 b 107 30 98 55 107 42 l 107 -114 b 92 -145 107 -130 101 -143 l 17 -177 b 0 -200 9 -180 0 -192 l 0 -302 b 13 -315 0 -311 4 -315 l 16 -314 b 85 -285 17 -314 72 -291 b 105 -312 92 -282 105 -301 l 105 -492 b 125 -508 105 -501 114 -508 b 150 -484 147 -508 150 -498 l 150 -285 b 151 -274 150 -281 150 -278 b 164 -253 153 -265 158 -256 b 240 -225 176 -251 240 -225 b 258 -202 249 -222 258 -210 l 258 -99 b 245 -86 258 -91 253 -86 l 242 -88 b 240 -88 242 -88 240 -88 l 240 -86 b 168 -115 240 -86 174 -114 b 148 -91 158 -115 148 -107 l 148 43 b 167 85 148 55 156 81 b 240 114 180 91 240 114 b 258 138 249 118 258 128 z',\n },\n accidentalThreeQuarterTonesSharpStein: {\n x_min: 3,\n x_max: 317,\n y_min: -347,\n y_max: 369,\n ha: 716,\n o: 'm 456 324 b 448 336 456 330 454 336 b 393 317 445 336 400 320 b 389 315 392 315 390 315 b 383 325 386 315 383 318 l 383 508 b 360 531 383 528 379 531 b 337 508 341 531 337 527 l 337 318 b 325 291 337 300 334 294 b 268 268 320 288 287 276 b 253 281 256 268 253 274 l 253 464 b 230 487 253 484 249 487 b 207 464 212 487 207 482 l 207 264 b 194 240 207 253 204 245 l 132 217 b 131 217 132 217 132 217 l 130 216 b 118 229 122 216 118 220 l 118 420 b 95 444 118 439 114 444 b 72 420 76 444 72 439 l 72 212 b 60 190 72 197 68 193 l 16 173 b 4 161 9 170 4 167 l 4 50 b 13 39 4 45 9 39 b 58 55 16 39 46 49 b 63 56 60 56 62 56 b 72 42 71 56 72 50 l 72 -125 b 58 -150 72 -137 65 -147 l 16 -166 b 4 -177 9 -168 4 -171 l 4 -289 b 14 -301 4 -295 9 -301 b 53 -287 16 -301 40 -291 b 62 -285 56 -285 59 -285 b 72 -298 69 -285 72 -289 l 72 -477 b 95 -500 72 -495 76 -500 b 118 -477 114 -500 118 -495 l 118 -278 b 127 -259 118 -269 121 -261 l 196 -232 b 207 -243 204 -232 207 -235 l 207 -432 b 230 -455 207 -452 212 -455 b 253 -432 249 -455 253 -451 l 253 -228 b 268 -204 253 -216 259 -207 l 320 -186 b 328 -183 323 -184 325 -183 b 337 -194 334 -183 337 -187 l 337 -387 b 360 -410 337 -408 341 -410 b 383 -387 379 -410 383 -406 l 383 -174 b 395 -157 383 -166 390 -158 l 445 -138 b 456 -127 452 -135 456 -132 l 456 -14 b 448 -3 456 -10 454 -3 b 397 -22 445 -3 408 -17 l 396 -23 b 383 -6 387 -23 383 -16 l 383 163 b 392 181 383 173 384 179 b 445 202 397 183 445 202 b 456 213 452 203 456 207 z m 337 -45 b 266 -78 333 -56 287 -78 b 258 -75 262 -78 259 -76 b 253 19 255 -71 253 -27 b 258 130 253 69 255 122 b 333 163 264 141 315 163 b 337 161 334 163 337 161 b 341 78 340 157 341 120 b 337 -45 341 24 340 -37 z m 118 -127 b 114 -48 114 -121 114 -86 b 118 78 114 6 115 68 b 200 114 122 91 180 114 b 207 111 204 114 206 112 b 212 22 210 107 212 66 b 207 -94 212 -29 210 -85 b 127 -130 203 -108 148 -130 b 118 -127 122 -130 120 -128 z',\n },\n accidentalBuyukMucennebFlat: {\n x_min: 1,\n x_max: 287,\n y_min: -174,\n y_max: 438,\n ha: 612,\n o: 'm 379 452 b 370 464 379 458 377 464 b 164 389 366 464 170 392 b 156 396 163 389 156 393 b 157 436 157 409 157 428 b 167 452 157 445 161 449 b 366 526 173 455 366 526 b 379 540 374 528 379 534 l 379 611 b 370 622 379 616 377 622 b 170 550 366 622 174 552 b 160 557 163 550 160 554 b 161 608 160 585 161 602 b 134 631 161 624 148 631 b 89 590 114 631 91 616 l 89 528 b 81 517 89 526 88 518 b 16 491 76 514 16 491 b 1 480 6 490 1 485 l 1 406 b 13 395 1 400 4 395 l 14 396 b 79 419 16 396 72 415 b 89 412 86 419 89 415 b 91 376 89 399 89 386 b 82 359 91 364 89 361 b 16 331 76 356 16 331 b 1 321 6 331 1 328 l 1 248 b 13 236 1 242 4 236 b 79 262 16 236 71 258 b 92 251 89 262 92 256 b 107 -242 95 23 101 -236 b 120 -251 111 -249 115 -251 b 128 -248 124 -251 128 -248 b 240 -160 171 -225 207 -184 b 413 84 367 -71 413 16 b 284 220 413 166 350 216 b 207 196 259 220 229 209 b 170 176 196 190 184 176 l 168 177 b 151 203 157 181 151 192 b 153 269 151 210 151 236 b 163 292 153 275 153 289 b 366 367 173 297 366 367 b 379 383 374 370 379 376 z m 186 -132 b 173 -137 180 -135 176 -137 b 157 -114 161 -137 157 -122 b 153 35 157 -114 153 -22 b 154 73 153 53 153 68 b 219 135 160 92 197 124 b 255 144 232 141 243 144 b 292 130 269 144 282 140 b 314 62 305 114 314 91 b 186 -132 314 -17 251 -94 z',\n },\n accidentalBakiyeFlat: {\n x_min: -1,\n x_max: 286,\n y_min: -175,\n y_max: 439,\n ha: 614,\n o: 'm 377 454 b 369 467 377 458 376 467 b 363 465 367 467 364 467 b 161 390 363 465 167 393 b 153 399 154 390 153 395 b 157 608 154 494 157 593 b 130 632 157 624 144 632 b 86 592 111 632 88 618 b 88 377 86 592 86 501 b 76 356 88 373 88 360 l 12 331 b -1 320 3 330 -1 327 l -1 248 b 9 236 -1 242 1 236 b 81 264 12 236 78 261 b 89 258 86 264 89 261 b 104 -245 92 30 96 -236 b 115 -252 108 -251 112 -252 b 124 -249 120 -252 124 -249 b 239 -161 167 -226 203 -186 b 412 84 367 -72 412 17 b 282 220 412 166 348 216 b 255 216 274 220 264 219 b 203 196 238 212 222 206 b 171 177 193 189 177 177 b 163 179 168 177 166 177 b 147 202 153 181 147 192 b 147 216 147 204 147 209 l 150 262 b 150 276 150 269 150 275 b 158 291 150 287 154 289 b 363 370 163 292 363 370 b 377 384 373 373 377 379 z m 181 -134 b 167 -138 176 -137 171 -138 b 153 -117 156 -138 153 -125 b 148 27 153 -117 148 -30 b 151 73 148 50 150 68 b 255 144 161 105 219 144 b 312 62 298 144 312 99 b 181 -134 312 -19 249 -96 z',\n },\n accidentalKomaSharp: {\n x_min: 0,\n x_max: 229,\n y_min: -337,\n y_max: 322,\n ha: 659,\n o: 'm 312 151 b 330 176 323 156 330 166 l 330 278 b 320 289 330 285 327 289 b 312 288 318 289 315 289 b 200 246 312 288 203 248 b 181 275 187 246 181 264 l 181 448 b 163 464 181 456 173 464 b 138 441 140 464 138 452 l 138 253 b 122 215 137 240 132 225 b 17 177 92 203 45 177 b 0 153 7 173 0 163 l 0 50 b 10 39 0 43 4 39 b 17 40 13 39 14 39 l 128 81 b 138 52 138 81 138 63 l 138 -91 b 124 -124 138 -107 132 -120 b 17 -167 115 -127 17 -167 b 0 -192 7 -171 0 -181 l 0 -294 b 10 -305 0 -301 4 -305 b 17 -304 13 -305 14 -305 b 128 -261 17 -304 117 -264 l 130 -259 b 138 -276 137 -259 138 -268 l 138 -469 b 157 -485 138 -478 147 -485 b 181 -462 179 -485 181 -475 l 181 -262 b 183 -252 181 -258 181 -255 b 197 -232 186 -243 190 -235 b 312 -187 207 -228 312 -187 b 330 -163 323 -183 330 -173 l 330 -60 b 320 -49 330 -53 327 -49 b 312 -50 318 -49 315 -49 l 200 -94 b 193 -95 197 -95 194 -95 b 181 -68 183 -95 181 -85 l 181 66 b 200 108 181 92 189 104 z',\n },\n accidentalKucukMucennebSharp: {\n x_min: -1,\n x_max: 339,\n y_min: -338,\n y_max: 321,\n ha: 659,\n o: 'm 264 92 b 271 102 264 98 265 99 l 395 150 b 412 174 405 154 412 164 l 412 276 b 402 288 412 284 409 288 b 395 287 400 288 397 288 b 282 245 395 287 285 246 b 264 274 269 245 264 262 l 264 446 b 245 462 264 455 255 462 b 220 439 222 462 220 451 l 220 252 b 204 213 219 239 215 223 b 99 176 174 202 127 176 b 82 151 89 171 82 161 l 82 49 b 92 37 82 42 86 37 b 99 39 95 37 96 37 l 210 79 b 216 81 212 81 215 81 b 220 78 219 81 220 79 l 220 56 b 216 46 220 52 220 48 b 16 -29 210 45 16 -29 b -1 -45 4 -32 -1 -36 l -1 -138 b 12 -154 -1 -145 3 -154 l 215 -79 b 220 -84 219 -79 220 -81 l 220 -105 b 210 -122 220 -115 219 -120 b 99 -168 202 -127 99 -168 b 82 -193 89 -173 82 -183 l 82 -295 b 92 -307 82 -302 86 -307 b 99 -305 95 -307 96 -307 b 210 -262 99 -305 199 -265 l 212 -261 b 220 -278 219 -261 220 -269 l 220 -471 b 239 -487 220 -480 229 -487 b 264 -464 261 -487 264 -477 l 264 -264 b 265 -253 264 -259 264 -256 b 279 -233 268 -245 272 -236 b 395 -189 289 -229 395 -189 b 412 -164 405 -184 412 -174 l 412 -62 b 402 -50 412 -55 409 -50 b 395 -52 400 -50 397 -50 l 278 -96 b 264 -86 268 -96 264 -94 l 264 -68 b 269 -59 264 -62 265 -60 b 471 17 274 -58 471 17 b 488 36 484 22 488 27 l 488 127 b 475 144 488 134 487 144 l 472 141 b 471 141 472 141 471 141 l 471 143 b 272 68 471 143 282 71 l 269 66 b 264 71 264 66 264 69 z',\n },\n accidentalKoron: {\n x_min: 0,\n x_max: 300,\n y_min: -472,\n y_max: 157,\n ha: 629,\n o: 'm 432 -4 b 415 10 432 1 418 9 l 4 226 b 0 223 1 226 0 225 l 0 -672 b 7 -680 0 -677 3 -680 l 45 -680 b 52 -672 49 -680 52 -677 l 52 -193 l 415 -22 b 432 -4 418 -20 432 -13 z m 52 -137 l 52 144 l 327 -7 z',\n },\n accidentalSori: {\n x_min: 0,\n x_max: 421,\n y_min: -318,\n y_max: 328,\n ha: 646,\n o: 'm 606 10 b 589 23 606 16 592 22 l 382 109 l 382 465 b 374 472 382 469 379 472 l 337 472 b 330 465 333 472 330 469 l 330 132 l 183 194 l 183 425 b 176 432 183 429 180 432 l 138 432 b 131 425 134 432 131 429 l 131 216 l 3 269 b 0 265 0 269 0 266 l 0 223 b 3 213 0 216 0 215 l 131 160 l 131 -150 l 3 -203 b 0 -212 0 -204 0 -206 l 0 -255 b 3 -259 0 -258 1 -259 l 131 -204 l 131 -451 b 138 -458 131 -455 134 -458 l 176 -458 b 183 -451 180 -458 183 -455 l 183 -183 l 330 -120 l 330 -410 b 337 -418 330 -415 333 -418 l 374 -418 b 382 -410 379 -418 382 -415 l 382 -98 l 589 -9 b 606 10 592 -9 606 0 z m 183 -128 l 183 138 l 330 76 l 330 -66 z m 382 -45 l 382 55 l 501 6 z',\n },\n articAccentAbove: {\n x_min: 0,\n x_max: 339,\n y_min: 1,\n y_max: 245,\n ha: 244,\n o: 'm 469 151 b 488 177 488 156 488 166 b 469 203 488 189 488 197 l 37 350 b 24 353 32 351 26 353 b 3 333 12 353 7 344 b 0 318 1 327 0 323 b 20 298 0 311 4 304 b 346 187 20 298 331 193 b 356 177 353 186 356 181 b 344 167 356 173 353 170 b 20 58 328 163 20 58 b 0 36 4 50 0 43 b 3 23 0 32 1 27 b 23 1 7 13 13 1 b 29 3 24 1 27 1 z',\n },\n articAccentBelow: {\n x_min: 0,\n x_max: 339,\n y_min: -244,\n y_max: 0,\n ha: 244,\n o: 'm 469 -202 b 488 -176 488 -197 488 -187 b 469 -150 488 -164 488 -156 l 37 -3 b 24 0 32 -1 26 0 b 3 -20 12 0 7 -9 b 0 -35 1 -26 0 -30 b 20 -55 0 -42 4 -49 b 346 -166 20 -55 331 -160 b 356 -176 353 -167 356 -171 b 344 -186 356 -180 353 -183 b 20 -295 328 -190 20 -295 b 0 -317 4 -302 0 -310 b 3 -330 0 -321 1 -325 b 23 -351 7 -340 13 -351 b 29 -350 24 -351 27 -351 z',\n },\n articTenutoAbove: {\n x_min: -1,\n x_max: 338,\n y_min: 0,\n y_max: 48,\n ha: 48,\n o: 'm 452 0 b 487 35 485 0 487 16 b 452 69 487 53 487 69 l 33 69 b -1 35 -1 69 -1 53 b 33 0 -1 16 -1 0 z',\n },\n articTenutoBelow: {\n x_min: -1,\n x_max: 338,\n y_min: -48,\n y_max: 0,\n ha: 48,\n o: 'm 452 -69 b 487 -35 485 -69 487 -53 b 452 0 487 -16 487 0 l 33 0 b -1 -35 -1 0 -1 -16 b 33 -69 -1 -53 -1 -69 z',\n },\n articStaccatoAbove: {\n x_min: 0,\n x_max: 84,\n y_min: 0,\n y_max: 84,\n ha: 84,\n o: 'm 121 60 b 60 121 121 94 94 121 b 0 60 27 121 0 94 b 60 0 0 27 27 0 b 121 60 94 0 121 27 z',\n },\n articStaccatoBelow: {\n x_min: 0,\n x_max: 84,\n y_min: -84,\n y_max: 0,\n ha: 84,\n o: 'm 121 -60 b 60 0 121 -27 94 0 b 0 -60 27 0 0 -27 b 60 -121 0 -94 27 -121 b 121 -60 94 -121 121 -94 z',\n },\n articStaccatissimoAbove: {\n x_min: 1,\n x_max: 100,\n y_min: -2,\n y_max: 293,\n ha: 295,\n o: 'm 72 422 b 1 390 35 422 3 409 b 72 -3 1 369 39 -3 b 144 389 108 -3 144 356 b 72 422 144 410 111 422 z',\n },\n articStaccatissimoBelow: {\n x_min: 1,\n x_max: 100,\n y_min: -295,\n y_max: 0,\n ha: 295,\n o: 'm 72 -425 b 144 -392 111 -425 144 -413 b 72 0 144 -359 108 0 b 1 -393 39 0 1 -372 b 72 -425 3 -412 35 -425 z',\n },\n articMarcatoAbove: {\n x_min: -1,\n x_max: 235,\n y_min: -1,\n y_max: 253,\n ha: 254,\n o: 'm 181 356 b 167 364 177 361 173 364 b 153 356 157 364 153 356 l 0 23 b -1 16 -1 20 -1 19 b 9 0 -1 9 1 1 b 16 -1 10 -1 14 -1 b 32 9 22 -1 29 1 b 112 186 32 9 109 180 b 118 190 114 189 115 190 b 127 186 121 190 124 189 b 209 9 128 180 209 9 b 225 0 213 3 219 0 l 323 0 b 338 16 333 1 338 7 b 337 23 338 19 338 22 z',\n },\n articMarcatoBelow: {\n x_min: -1,\n x_max: 235,\n y_min: -254,\n y_max: 0,\n ha: 254,\n o: 'm 156 -357 b 170 -366 160 -363 164 -366 b 184 -357 180 -366 184 -357 l 337 -24 b 338 -17 338 -22 338 -20 b 328 -1 338 -10 336 -3 b 321 0 327 0 323 0 b 305 -10 315 0 308 -3 b 225 -187 305 -10 228 -181 b 219 -192 223 -190 222 -192 b 210 -187 216 -192 213 -190 b 128 -10 209 -181 128 -10 b 112 -1 124 -4 118 -1 l 14 -1 b -1 -17 4 -3 -1 -9 b 0 -24 -1 -20 -1 -23 z',\n },\n fermataAbove: {\n x_min: 3,\n x_max: 605,\n y_min: -3,\n y_max: 329,\n ha: 332,\n o: 'm 435 318 b 818 36 742 318 804 91 b 821 26 819 32 819 27 b 851 -4 831 6 837 -4 b 871 16 864 -4 871 1 b 870 30 871 20 871 24 b 438 474 780 471 480 474 b 6 30 392 474 94 471 b 4 14 4 24 4 19 b 23 -4 4 0 12 -4 b 52 26 36 -4 43 6 b 56 39 53 27 55 33 b 435 318 73 98 138 318 z m 516 75 b 436 153 516 117 480 153 b 359 75 395 153 359 117 b 436 -4 359 32 395 -4 b 516 75 480 -4 516 32 z',\n },\n fermataBelow: {\n x_min: 3,\n x_max: 605,\n y_min: -332,\n y_max: 0,\n ha: 332,\n o: 'm 435 -323 b 56 -43 138 -323 73 -102 b 52 -30 55 -37 53 -32 b 23 0 43 -10 36 0 b 4 -19 12 0 4 -4 b 6 -35 4 -23 4 -29 b 438 -478 94 -475 392 -478 b 870 -35 480 -478 780 -475 b 871 -20 871 -29 871 -24 b 851 0 871 -6 864 0 b 821 -30 837 0 831 -10 b 818 -40 819 -32 819 -36 b 435 -323 804 -95 742 -323 z m 516 -79 b 436 0 516 -36 480 0 b 359 -79 395 0 359 -36 b 436 -157 359 -121 395 -157 b 516 -79 480 -157 516 -121 z',\n },\n fermataLongAbove: {\n x_min: 0,\n x_max: 603,\n y_min: -1,\n y_max: 333,\n ha: 334,\n o: 'm 72 480 b 0 441 32 480 0 462 l 0 19 b 35 0 0 9 16 0 b 71 19 55 0 71 9 l 71 289 b 433 315 71 307 252 315 b 798 289 615 315 798 307 l 798 19 b 832 0 798 9 814 0 b 868 19 852 0 868 9 l 868 441 b 796 480 868 462 837 480 z m 513 78 b 433 156 513 121 478 156 b 356 78 390 156 356 121 b 433 -1 356 35 390 -1 b 513 78 478 -1 513 35 z',\n },\n fermataLongBelow: {\n x_min: 0,\n x_max: 603,\n y_min: -333,\n y_max: 1,\n ha: 334,\n o: 'm 513 -78 b 433 1 513 -35 478 1 b 356 -78 390 1 356 -35 b 433 -156 356 -121 390 -156 b 513 -78 478 -156 513 -121 z m 796 -480 b 868 -441 837 -480 868 -462 l 868 -19 b 832 0 868 -9 852 0 b 798 -19 814 0 798 -9 l 798 -289 b 433 -315 798 -307 615 -315 b 71 -289 252 -315 71 -307 l 71 -19 b 35 0 71 -9 55 0 b 0 -19 16 0 0 -9 l 0 -441 b 72 -480 0 -462 32 -480 z',\n },\n fermataVeryLongAbove: {\n x_min: 0,\n x_max: 715,\n y_min: 0,\n y_max: 408,\n ha: 408,\n o: 'm 76 588 b 0 546 35 588 0 569 l 0 22 b 37 1 0 10 17 1 b 75 22 59 1 75 10 l 75 431 b 514 458 75 449 294 458 b 955 431 734 458 955 449 l 955 22 b 991 1 955 10 971 1 b 1030 22 1012 1 1030 10 l 1030 546 b 953 588 1030 569 995 588 z m 215 389 b 138 347 171 389 138 370 l 138 22 b 174 1 138 10 154 1 b 213 22 196 1 213 10 l 213 217 b 514 245 213 235 363 245 b 816 217 665 245 816 235 l 816 22 b 854 1 816 10 834 1 b 891 22 876 1 891 10 l 891 347 b 815 389 891 370 858 389 z m 606 84 b 521 167 606 130 569 167 b 439 84 475 167 439 130 b 521 0 439 39 475 0 b 606 84 569 0 606 39 z',\n },\n fermataVeryLongBelow: {\n x_min: 0,\n x_max: 715,\n y_min: -408,\n y_max: 0,\n ha: 408,\n o: 'm 606 -84 b 521 0 606 -39 569 0 b 439 -84 475 0 439 -39 b 521 -167 439 -130 475 -167 b 606 -84 569 -167 606 -130 z m 815 -389 b 891 -347 858 -389 891 -370 l 891 -22 b 854 -1 891 -10 876 -1 b 816 -22 834 -1 816 -10 l 816 -217 b 514 -245 816 -235 665 -245 b 213 -217 363 -245 213 -235 l 213 -22 b 174 -1 213 -10 196 -1 b 138 -22 154 -1 138 -10 l 138 -347 b 215 -389 138 -370 171 -389 z m 953 -588 b 1030 -546 995 -588 1030 -569 l 1030 -22 b 991 -1 1030 -10 1012 -1 b 955 -22 971 -1 955 -10 l 955 -431 b 514 -458 955 -449 734 -458 b 75 -431 294 -458 75 -449 l 75 -22 b 37 -1 75 -10 59 -1 b 0 -22 17 -1 0 -10 l 0 -546 b 76 -588 0 -569 35 -588 z',\n },\n fermataShortAbove: {\n x_min: 0,\n x_max: 604,\n y_min: 0,\n y_max: 341,\n ha: 341,\n o: 'm 78 0 b 88 6 81 0 82 3 b 435 328 134 45 412 328 b 783 3 458 328 742 39 b 793 0 786 1 793 0 l 865 0 b 870 4 865 0 870 1 b 867 10 870 6 868 9 b 435 491 805 69 474 491 b 3 10 397 491 69 75 b 0 4 1 9 0 6 b 4 0 0 1 4 0 z m 513 94 b 433 171 513 135 477 171 b 354 94 390 171 354 135 b 433 13 354 49 390 13 b 513 94 477 13 513 49 z',\n },\n fermataShortBelow: {\n x_min: 0,\n x_max: 604,\n y_min: -341,\n y_max: 0,\n ha: 341,\n o: 'm 4 0 b 0 -4 4 0 0 -1 b 3 -10 0 -6 1 -9 b 435 -491 69 -75 397 -491 b 867 -10 474 -491 805 -69 b 870 -4 868 -9 870 -6 b 865 0 870 -1 865 0 l 793 0 b 783 -3 793 0 786 -1 b 435 -328 742 -39 458 -328 b 88 -6 412 -328 134 -45 b 78 0 82 -3 81 0 z m 513 -94 b 433 -13 513 -49 477 -13 b 354 -94 390 -13 354 -49 b 433 -171 354 -135 390 -171 b 513 -94 477 -171 513 -135 z',\n },\n breathMarkComma: {\n x_min: 1,\n x_max: 152,\n y_min: 2,\n y_max: 251,\n ha: 249,\n o: 'm 104 361 b 1 271 42 361 1 321 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 17 32 29 26 26 l 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 z',\n },\n breathMarkUpbow: {\n x_min: 1,\n x_max: 249,\n y_min: 1,\n y_max: 495,\n ha: 494,\n o: 'm 181 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 z',\n },\n caesura: {\n x_min: 0,\n x_max: 384,\n y_min: -1,\n y_max: 532,\n ha: 533,\n o: 'm 40 -1 b 78 26 58 -1 72 9 l 321 713 b 323 726 323 717 323 721 b 282 766 323 747 304 766 b 245 739 265 766 251 756 l 3 52 b 0 37 1 48 0 42 b 27 1 0 22 10 7 b 40 -1 32 -1 36 -1 z m 308 26 l 552 713 b 553 726 553 717 553 721 b 513 766 553 747 534 766 b 475 739 495 766 481 756 l 232 52 b 230 39 230 48 230 43 b 258 1 230 23 240 7 b 271 -1 262 -1 266 -1 b 308 26 287 -1 302 9 z',\n },\n caesuraCurved: {\n x_min: 0,\n x_max: 373,\n y_min: 0,\n y_max: 530,\n ha: 530,\n o: 'm 491 763 b 445 719 468 763 446 744 b 252 98 432 507 340 295 l 226 39 b 223 27 225 35 223 32 b 252 0 223 13 233 0 b 276 16 262 0 272 6 b 537 716 386 230 537 478 b 491 763 537 742 518 763 z m 29 0 b 53 16 39 0 48 6 l 82 69 b 314 716 187 264 314 498 b 268 763 314 742 295 763 b 222 719 245 763 223 744 b 29 98 209 507 117 295 l 3 39 b 0 29 1 36 0 33 b 29 0 0 14 12 0 z',\n },\n restMaxima: {\n x_min: 0,\n x_max: 381,\n y_min: -249,\n y_max: 250,\n ha: 499,\n o: 'm 180 -330 l 180 331 b 156 360 180 356 170 360 l 23 360 b 0 331 10 360 0 356 l 0 -330 b 23 -359 0 -354 10 -359 l 156 -359 b 180 -330 170 -359 180 -354 z m 549 -330 l 549 331 b 524 360 549 356 539 360 l 392 360 b 369 331 379 360 369 356 l 369 -330 b 392 -359 369 -354 379 -359 l 524 -359 b 549 -330 539 -359 549 -354 z',\n },\n restDoubleWhole: {\n x_min: 0,\n x_max: 125,\n y_min: 0,\n y_max: 250,\n ha: 250,\n o: 'm 180 22 l 180 338 b 156 360 180 350 170 360 l 23 360 b 0 338 10 360 0 350 l 0 22 b 23 0 0 10 10 0 l 156 0 b 180 22 170 0 180 10 z',\n },\n restWhole: {\n x_min: 0,\n x_max: 282,\n y_min: -135,\n y_max: 9,\n ha: 144,\n o: 'm 406 -157 l 406 -24 b 369 13 406 -3 389 13 l 37 13 b 0 -24 16 13 0 -3 l 0 -157 b 37 -194 0 -177 16 -194 l 369 -194 b 406 -157 389 -194 406 -177 z',\n },\n restWholeLegerLine: {\n x_min: -117,\n x_max: 399,\n y_min: -135,\n y_max: 20,\n ha: 155,\n o: 'm -143 29 b -168 3 -157 29 -168 17 b -143 -23 -168 -12 -157 -23 l 0 -23 l 0 -157 b 37 -194 0 -177 16 -194 l 369 -194 b 406 -157 389 -194 406 -177 l 406 -24 b 549 -23 406 -23 406 -23 b 575 3 563 -23 575 -12 b 549 29 575 17 563 29 z',\n },\n restHalf: {\n x_min: 0,\n x_max: 282,\n y_min: -2,\n y_max: 142,\n ha: 144,\n o: 'm 406 35 l 406 167 b 369 204 406 189 389 204 l 37 204 b 0 167 16 204 0 189 l 0 35 b 37 -3 0 14 16 -3 l 369 -3 b 406 35 389 -3 406 14 z',\n },\n restHalfLegerLine: {\n x_min: -117,\n x_max: 399,\n y_min: -13,\n y_max: 142,\n ha: 155,\n o: 'm 549 -19 b 575 7 563 -19 575 -7 b 549 33 575 22 563 33 b 406 35 406 33 406 33 l 406 167 b 369 204 406 187 389 204 l 37 204 b 0 167 16 204 0 187 l 0 33 l -143 33 b -168 7 -157 33 -168 22 b -143 -19 -168 -7 -157 -19 z',\n },\n restQuarter: {\n x_min: 1,\n x_max: 270,\n y_min: -375,\n y_max: 373,\n ha: 748,\n o: 'm 112 -55 b 174 -141 135 -84 156 -111 b 183 -161 177 -147 183 -158 b 181 -167 183 -163 183 -166 b 166 -174 179 -173 173 -174 b 143 -170 160 -174 148 -171 b 137 -170 141 -170 138 -170 l 125 -166 b 1 -304 50 -166 1 -233 b 168 -527 1 -376 63 -446 b 206 -540 180 -536 194 -540 b 228 -531 216 -540 226 -537 b 230 -521 229 -527 230 -524 b 207 -487 230 -508 219 -497 b 170 -435 189 -487 173 -448 b 164 -397 166 -423 164 -410 b 255 -292 164 -338 194 -292 b 369 -317 297 -292 344 -308 l 370 -318 b 382 -320 376 -320 379 -320 b 389 -314 386 -320 389 -318 b 336 -232 389 -297 351 -249 b 236 -32 281 -166 236 -112 b 236 -27 236 -30 236 -29 l 238 -17 b 238 -13 238 -16 238 -14 b 333 199 243 71 295 140 b 338 220 337 206 338 213 b 333 248 338 235 333 248 b 95 526 333 248 120 501 b 69 537 88 533 78 537 b 40 507 55 537 40 527 b 46 484 40 500 42 492 b 134 291 52 468 134 395 b 48 108 134 238 112 176 b 27 66 33 94 27 78 b 42 32 27 46 42 32 z',\n },\n rest8th: {\n x_min: 0,\n x_max: 247,\n y_min: -251,\n y_max: 174,\n ha: 425,\n o: 'm 193 154 b 96 251 193 207 150 251 b 0 154 43 251 0 207 b 39 81 0 124 17 98 b 117 56 62 65 89 56 b 173 66 137 56 157 60 b 225 88 193 72 206 78 b 232 89 228 89 230 89 b 239 76 238 89 239 84 b 238 60 239 72 239 66 b 104 -343 233 39 130 -248 b 145 -361 104 -360 137 -361 b 196 -347 161 -361 181 -359 b 341 161 200 -344 341 161 b 356 217 347 187 354 210 b 338 240 356 232 341 239 b 323 235 336 240 331 240 b 193 140 312 226 240 140 z',\n },\n rest16th: {\n x_min: 0,\n x_max: 320,\n y_min: -500,\n y_max: 179,\n ha: 679,\n o: 'm 300 160 b 202 258 300 215 256 258 b 104 160 148 258 104 215 b 219 62 104 101 164 62 b 331 94 258 62 298 75 b 341 96 336 95 338 96 b 348 86 346 96 348 94 b 265 -173 348 63 275 -151 b 194 -217 253 -200 215 -217 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 151 -105 b 0 -203 43 -105 0 -148 b 115 -301 0 -262 60 -301 b 223 -271 153 -301 190 -288 b 229 -279 226 -271 229 -274 l 228 -281 b 228 -282 228 -282 228 -282 l 91 -690 b 91 -691 91 -690 91 -691 l 89 -693 b 134 -720 89 -706 102 -720 b 189 -687 176 -720 183 -703 l 356 -138 b 420 81 393 -16 420 81 b 459 226 420 81 456 207 b 461 232 459 229 461 230 b 446 248 461 240 449 246 b 431 242 439 248 435 245 b 300 145 420 233 348 147 z',\n },\n rest32nd: {\n x_min: 0,\n x_max: 363,\n y_min: -500,\n y_max: 426,\n ha: 926,\n o: 'm 508 603 b 492 598 501 603 497 600 b 361 503 482 590 410 503 l 361 516 b 264 613 361 570 318 613 b 166 516 210 613 166 570 b 206 444 166 487 183 461 b 246 423 217 433 232 428 b 284 418 258 420 269 418 b 393 449 321 418 360 432 b 399 451 395 451 397 451 b 415 426 409 451 415 436 l 413 423 b 413 422 413 423 413 422 l 357 192 b 279 140 350 168 302 140 b 281 153 281 144 281 148 b 183 251 281 207 236 251 b 85 153 128 251 85 207 b 125 81 85 124 102 98 b 164 60 137 71 150 65 b 203 55 176 58 189 55 b 311 86 240 55 278 69 b 315 88 312 88 314 88 b 325 69 323 88 325 76 l 268 -167 b 194 -217 261 -197 216 -216 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 153 -105 b 0 -203 45 -105 0 -148 b 115 -301 0 -262 60 -301 b 228 -269 154 -301 194 -288 b 232 -268 229 -268 230 -268 b 240 -276 236 -268 240 -272 b 138 -688 240 -282 141 -678 b 137 -697 137 -691 137 -694 b 176 -720 137 -708 145 -720 b 232 -690 222 -720 226 -706 b 484 436 236 -672 484 436 b 521 582 484 436 518 564 b 523 588 521 585 523 586 b 508 603 523 600 511 603 z',\n },\n rest64th: {\n x_min: 0,\n x_max: 423,\n y_min: -753,\n y_max: 430,\n ha: 1183,\n o: 'm 596 609 b 580 603 589 609 585 606 b 448 507 569 595 497 507 b 449 521 449 511 449 516 b 351 619 449 575 405 619 b 253 521 297 619 253 575 b 372 422 253 461 317 422 b 481 454 410 422 446 438 b 491 456 484 455 488 456 b 504 441 498 456 504 451 b 501 426 504 436 503 432 b 445 202 500 422 451 217 b 359 144 435 174 383 144 l 359 158 b 261 256 359 212 315 256 b 163 158 207 256 163 212 b 243 65 163 112 202 78 b 279 60 255 62 266 60 b 397 91 320 60 360 73 b 403 92 400 92 402 92 b 412 79 409 92 412 86 b 410 72 412 76 412 75 b 351 -161 408 59 356 -150 b 281 -212 340 -199 301 -212 l 281 -197 b 183 -99 281 -144 238 -99 b 85 -197 130 -99 85 -144 b 125 -271 85 -228 102 -253 b 166 -291 138 -279 151 -287 b 204 -297 177 -294 192 -297 b 262 -287 225 -297 245 -292 b 305 -265 282 -279 287 -274 b 310 -264 307 -264 308 -264 b 318 -284 317 -264 318 -275 b 317 -295 318 -288 317 -294 b 259 -524 315 -302 265 -508 b 194 -567 251 -554 213 -567 b 196 -554 196 -563 196 -559 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 b 40 -626 0 -583 17 -609 b 118 -652 60 -644 92 -652 b 210 -629 145 -652 186 -642 b 216 -628 213 -628 215 -628 b 228 -647 226 -628 228 -639 l 226 -651 b 226 -652 226 -651 226 -652 l 122 -1054 b 121 -1064 121 -1058 121 -1061 b 167 -1084 121 -1077 134 -1084 b 215 -1060 202 -1084 209 -1076 b 402 -278 217 -1047 229 -1021 b 436 -135 403 -278 431 -161 l 570 441 b 609 588 570 441 605 569 b 596 609 609 603 602 608 z',\n },\n rest128th: {\n x_min: 0,\n x_max: 485,\n y_min: -750,\n y_max: 689,\n ha: 1439,\n o: 'm 537 894 b 439 992 537 949 494 992 b 341 894 386 992 341 949 b 382 822 341 865 359 840 b 459 796 402 805 433 796 b 518 806 480 796 501 801 l 520 808 b 569 828 539 814 552 819 b 580 831 572 829 577 831 b 598 812 589 831 598 825 b 596 801 598 809 598 805 b 540 575 590 773 546 595 b 448 510 534 553 475 510 l 448 524 b 350 622 448 577 405 622 b 252 524 297 622 252 577 b 292 451 252 494 269 468 b 369 426 318 433 337 426 b 429 435 389 426 412 429 b 494 464 449 442 475 455 b 498 465 495 465 497 465 b 505 446 504 465 505 456 b 503 426 505 439 504 432 l 446 202 b 366 144 439 173 389 144 l 366 158 b 268 256 366 212 323 256 b 170 158 215 256 170 212 b 289 59 170 98 235 59 b 347 69 310 59 330 63 b 397 91 367 76 379 82 b 406 94 400 92 403 94 b 415 79 412 94 415 88 b 412 63 415 75 413 69 b 357 -157 408 42 364 -134 b 281 -212 346 -196 302 -212 b 282 -197 281 -207 282 -203 b 184 -99 282 -144 238 -99 b 86 -197 130 -99 86 -144 b 204 -297 86 -258 150 -297 b 262 -287 225 -297 245 -292 b 312 -265 282 -279 294 -274 b 318 -264 314 -264 317 -264 b 327 -275 324 -264 327 -269 b 266 -517 324 -287 278 -490 b 200 -569 248 -566 220 -567 l 196 -554 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 b 118 -652 0 -615 63 -652 b 177 -642 138 -652 160 -648 l 179 -641 b 229 -621 197 -635 210 -629 l 230 -619 b 239 -626 236 -619 239 -622 b 238 -632 239 -628 239 -631 b 131 -1057 235 -642 134 -1050 b 173 -1080 131 -1071 140 -1080 b 230 -1057 219 -1080 225 -1074 l 658 815 b 697 960 658 815 694 942 b 698 966 697 963 698 965 b 684 982 698 975 687 981 b 668 976 677 982 672 979 b 537 880 658 969 586 881 z',\n },\n dynamicPiano: {\n x_min: -89,\n x_max: 366,\n y_min: -142,\n y_max: 274,\n ha: 416,\n o: 'm 395 395 b 292 357 350 395 318 380 b 262 328 272 340 268 328 b 246 363 255 328 259 338 b 177 393 236 380 215 393 b 1 251 92 393 46 333 b -9 223 -6 238 -9 230 b 7 207 -9 213 -1 207 b 30 229 17 207 23 216 b 127 338 72 301 101 338 b 143 321 138 338 143 331 b 134 285 143 310 138 295 l -43 -154 b -65 -168 -48 -166 -50 -168 l -109 -168 b -128 -187 -122 -168 -128 -174 b -111 -204 -128 -199 -122 -204 l 167 -204 b 186 -186 180 -204 186 -199 b 168 -168 186 -174 180 -168 l 111 -168 b 98 -164 102 -168 98 -168 b 101 -154 98 -163 99 -158 l 166 7 b 179 24 168 14 171 24 b 213 -1 186 24 190 10 b 276 -14 233 -12 252 -14 b 527 266 415 -14 527 130 b 395 395 527 350 475 395 z m 356 341 b 389 288 380 341 389 320 b 243 35 389 217 312 35 b 207 81 219 35 207 50 b 235 180 207 111 219 140 l 264 251 b 356 341 284 300 321 341 z',\n },\n dynamicMezzo: {\n x_min: -20,\n x_max: 446,\n y_min: -10,\n y_max: 274,\n ha: 284,\n o: 'm 528 395 b 431 350 487 395 454 374 b 409 330 416 336 415 330 b 397 360 402 330 406 341 b 334 395 389 379 370 395 b 236 350 292 395 259 374 b 215 330 222 336 220 330 b 203 360 207 330 212 340 b 147 393 194 379 174 393 b -19 251 71 393 26 331 b -29 223 -26 238 -29 230 b -13 207 -29 213 -22 207 b 9 226 -3 207 1 215 b 107 338 52 300 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 287 323 225 292 255 323 b 308 302 304 323 308 314 b 294 249 308 285 302 269 b 203 24 294 248 292 248 b 199 9 200 17 199 13 b 215 0 199 3 203 0 l 285 0 b 308 17 298 0 302 3 l 402 251 b 481 323 419 292 449 323 b 503 302 498 323 503 314 b 413 43 503 252 413 104 b 478 -14 413 6 436 -14 b 629 102 533 -14 583 26 b 642 132 638 117 642 125 b 629 145 642 141 636 145 b 608 127 619 145 615 138 b 534 49 580 84 553 49 b 523 62 526 49 523 53 b 606 317 523 112 606 238 b 528 395 606 353 588 395 z',\n },\n dynamicForte: {\n x_min: -141,\n x_max: 364,\n y_min: -152,\n y_max: 444,\n ha: 596,\n o: 'm 23 380 b 0 357 7 380 0 373 b 22 336 0 343 7 336 l 105 336 b 117 330 114 336 117 336 b 114 315 117 327 115 323 l 23 0 b -101 -187 -17 -141 -43 -187 b -127 -174 -120 -187 -127 -181 b -92 -156 -127 -163 -114 -170 b -63 -102 -75 -144 -63 -125 b -128 -43 -63 -65 -89 -43 b -203 -122 -171 -43 -203 -78 b -95 -219 -203 -186 -156 -219 b 161 17 14 -219 82 -145 b 269 317 203 105 235 194 l 271 318 b 289 336 271 323 282 336 l 383 336 b 406 359 399 336 406 343 b 384 380 406 373 399 380 l 298 380 b 284 387 288 380 284 380 b 287 405 284 392 285 396 b 419 606 315 530 347 606 b 442 595 431 606 442 603 b 419 580 442 586 435 588 b 389 526 400 572 389 552 b 454 465 389 485 418 465 b 524 543 491 465 524 490 b 400 639 524 596 491 639 b 135 402 261 639 183 540 b 107 380 128 380 127 380 z',\n },\n dynamicRinforzando: {\n x_min: -20,\n x_max: 277,\n y_min: 0,\n y_max: 274,\n ha: 274,\n o: 'm 324 395 b 235 350 287 395 256 374 b 215 330 222 336 220 330 b 203 360 207 330 213 337 b 145 393 194 379 174 393 b -19 251 75 393 27 337 b -29 223 -26 238 -29 230 b -13 207 -29 213 -22 207 b 9 226 -3 207 3 215 b 107 338 52 301 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 304 351 226 298 272 351 b 318 343 312 351 318 348 b 287 285 318 330 287 325 b 338 239 287 256 308 239 b 399 318 373 239 399 268 b 324 395 399 360 377 395 z',\n },\n dynamicSforzando: {\n x_min: 0,\n x_max: 229,\n y_min: -10,\n y_max: 273,\n ha: 283,\n o: 'm 212 393 b 68 274 127 393 68 350 b 145 161 68 223 95 196 b 200 85 187 132 200 114 b 127 20 200 53 173 20 b 66 42 91 20 66 32 b 91 56 66 49 75 46 b 111 98 104 65 111 79 b 59 145 111 127 86 145 b 0 78 24 145 0 117 b 125 -14 0 30 49 -14 b 291 120 219 -14 291 36 b 220 232 291 160 276 190 b 151 314 168 271 151 287 b 213 361 151 337 168 361 b 258 346 238 361 258 356 b 240 333 258 340 251 340 b 226 298 232 325 226 314 b 276 252 226 269 248 252 b 330 307 311 252 330 279 b 212 393 330 360 285 393 z',\n },\n dynamicZ: {\n x_min: -30,\n x_max: 244,\n y_min: -10,\n y_max: 268,\n ha: 278,\n o: 'm 333 386 b 298 377 321 386 314 382 b 239 370 282 373 259 370 b 94 383 153 370 111 383 b 68 364 79 383 72 377 l 33 264 b 29 242 30 255 29 248 b 45 228 29 232 36 228 b 66 249 55 228 60 236 l 81 279 b 96 297 85 288 88 297 b 168 292 102 297 127 292 b 223 302 194 292 215 302 b 196 269 229 302 197 271 l -26 45 b -43 16 -37 33 -43 27 b -24 -1 -43 6 -36 -1 b 4 16 -12 -1 -3 10 b 39 30 16 24 27 30 b 179 -14 79 30 108 -14 b 297 102 259 -14 297 43 b 245 166 297 147 271 166 b 197 115 219 166 197 145 b 236 72 197 88 216 72 b 259 79 251 72 255 79 b 264 75 262 79 264 78 b 258 60 264 72 261 66 b 229 45 252 50 242 45 b 117 95 186 45 173 95 b 85 86 98 95 89 86 b 102 111 85 86 95 104 l 333 338 b 351 370 344 350 351 359 b 333 386 351 380 343 386 z',\n },\n ornamentTrill: {\n x_min: 0,\n x_max: 521,\n y_min: -10,\n y_max: 390,\n ha: 400,\n o: 'm 383 562 b 364 557 377 562 369 559 l 294 534 b 269 511 281 530 275 526 l 217 384 b 206 367 212 370 210 367 b 179 380 200 367 192 374 b 118 393 158 389 140 393 b 0 292 50 393 0 353 b 95 210 0 248 30 210 b 140 213 112 210 131 213 b 144 209 143 213 144 212 b 140 194 144 206 143 202 l 124 156 b 96 58 108 117 96 88 b 179 -14 96 17 124 -14 b 325 153 253 -14 325 46 b 307 251 325 187 320 219 b 302 265 304 258 302 261 b 334 294 302 274 311 281 l 343 298 b 455 348 393 328 428 348 b 474 327 468 348 474 344 b 465 285 474 312 469 295 l 360 24 b 356 9 357 17 356 13 b 372 0 356 3 360 0 l 442 0 b 465 17 455 0 459 3 l 559 251 b 655 351 577 298 624 351 b 670 343 664 351 670 348 b 638 285 670 330 638 325 b 690 239 638 256 660 239 b 750 318 724 239 750 268 b 675 395 750 360 729 395 b 586 350 638 395 608 374 b 566 330 573 336 572 330 b 553 361 559 330 564 340 b 490 393 543 380 521 393 b 347 348 432 393 377 364 b 312 333 328 338 320 333 b 308 337 310 333 308 334 b 315 359 308 343 312 351 l 387 537 b 392 553 390 544 392 549 b 383 562 392 559 389 562 z m 118 360 b 192 325 134 360 192 347 b 186 307 192 321 189 314 l 180 292 b 148 265 173 274 167 269 b 98 258 130 261 112 258 b 39 301 50 258 39 281 b 118 360 39 327 60 360 z m 272 240 b 292 151 285 240 292 164 b 212 30 292 88 253 30 b 196 48 200 30 196 37 b 207 92 196 59 202 78 b 264 230 207 94 209 94 b 272 240 266 238 268 240 z',\n },\n ornamentTurn: {\n x_min: 0,\n x_max: 460,\n y_min: 0,\n y_max: 218,\n ha: 218,\n o: 'm 534 314 b 454 251 490 314 454 294 b 505 199 454 219 475 199 b 579 232 547 199 549 232 b 626 164 603 232 626 202 b 533 72 626 102 583 72 b 377 180 487 72 439 111 b 150 312 307 258 243 312 b 0 148 55 312 0 240 b 128 0 0 45 66 0 b 209 63 173 0 209 20 b 157 115 209 95 187 115 b 84 82 115 115 114 82 b 36 150 59 82 36 112 b 130 242 36 212 79 242 b 285 134 176 242 223 203 b 513 1 356 56 419 1 b 662 166 608 1 662 73 b 534 314 662 269 596 314 z',\n },\n ornamentTurnSlash: {\n x_min: 0,\n x_max: 460,\n y_min: -90,\n y_max: 306,\n ha: 396,\n o: 'm 333 441 b 310 418 315 441 310 433 l 310 274 b 302 252 310 258 308 252 b 261 278 294 252 287 262 b 150 311 228 298 192 311 b 0 147 55 311 0 239 b 128 -1 0 43 66 -1 b 209 62 173 -1 209 19 b 157 114 209 94 187 114 b 84 81 115 114 114 81 b 36 148 59 81 36 111 b 130 240 36 210 79 240 b 285 128 176 240 222 197 b 307 79 304 108 307 105 l 307 -107 b 330 -130 307 -122 312 -130 b 353 -107 347 -130 353 -122 l 353 37 b 360 59 353 53 353 59 b 402 33 369 59 376 49 b 513 0 435 13 471 0 b 662 164 608 0 662 72 b 534 312 662 268 596 312 b 454 249 490 312 454 292 b 505 197 454 217 475 197 b 579 230 547 197 549 230 b 626 163 603 230 626 200 b 533 71 626 101 583 71 b 377 183 487 71 441 114 b 356 232 359 203 356 206 l 356 418 b 333 441 356 433 350 441 z',\n },\n ornamentMordent: {\n x_min: 1,\n x_max: 729,\n y_min: -73,\n y_max: 319,\n ha: 392,\n o: 'm 546 265 l 546 459 l 501 459 l 501 216 l 459 167 b 439 167 454 160 445 160 b 302 327 387 228 310 317 b 258 353 291 338 282 351 b 226 340 245 353 238 348 l 20 107 b 1 73 12 98 1 84 b 30 59 1 65 9 59 b 88 94 53 59 73 79 b 144 143 107 109 124 127 b 176 161 158 154 168 161 b 197 144 183 161 189 156 l 323 10 b 351 0 328 3 340 0 b 377 9 361 0 372 3 b 498 114 392 17 475 94 l 498 -105 l 544 -105 l 544 153 b 562 160 550 157 556 160 b 585 144 569 160 576 156 b 710 10 590 135 697 24 b 737 0 716 3 727 0 b 765 9 749 0 759 3 b 1030 295 776 17 1011 274 l 1032 300 b 1050 328 1041 308 1050 318 b 1012 353 1050 343 1024 353 b 986 343 1002 353 994 348 b 854 190 971 330 871 206 b 828 176 842 180 835 176 b 802 190 818 176 809 183 b 681 333 791 202 696 320 b 645 353 668 344 657 353 b 613 340 634 353 626 350 b 580 304 600 330 590 315 z',\n },\n ornamentShortTrill: {\n x_min: 0,\n x_max: 725,\n y_min: 0,\n y_max: 245,\n ha: 245,\n o: 'm 429 167 l 301 325 b 256 353 291 338 282 350 b 225 340 246 353 238 350 b 16 105 158 268 88 186 b 0 72 9 96 0 86 b 29 58 0 63 7 58 b 71 76 42 58 55 62 l 158 154 b 174 160 163 158 168 160 b 197 143 181 160 187 154 b 321 10 203 135 310 24 b 350 0 327 3 338 0 b 377 7 361 0 372 3 l 533 148 b 554 160 543 158 550 160 b 577 143 562 160 566 156 b 703 10 585 135 690 24 b 732 0 708 3 720 0 b 759 7 743 0 753 3 b 1024 294 769 16 1005 272 b 1044 327 1032 305 1044 321 b 1005 353 1044 341 1018 353 b 979 343 996 353 988 348 b 848 189 963 330 864 204 b 821 174 837 179 828 174 b 796 189 811 174 804 181 b 674 331 783 202 688 318 b 641 351 662 343 651 351 b 606 340 628 351 619 350 b 573 304 593 328 583 315 b 444 167 533 259 491 213 b 429 167 439 161 433 161 z',\n },\n ornamentTremblement: {\n x_min: 1,\n x_max: 985,\n y_min: 0,\n y_max: 244,\n ha: 244,\n o: 'm 678 325 b 634 351 667 338 657 350 b 602 338 621 351 613 348 l 448 167 b 439 167 446 164 441 164 l 302 325 b 258 351 291 338 281 350 b 228 338 245 351 238 348 b 193 304 215 328 204 315 l 19 107 b 1 72 13 96 1 76 b 30 58 1 63 9 58 b 89 92 52 58 73 78 l 144 141 b 148 144 145 143 147 143 b 176 160 160 153 170 160 b 199 143 183 160 189 154 b 324 10 204 134 311 23 b 351 0 330 3 340 0 b 379 7 363 0 373 3 l 530 148 b 552 160 536 154 546 160 b 575 143 559 160 564 154 b 698 10 580 134 687 23 b 727 0 704 3 716 0 b 755 7 739 0 749 3 l 907 147 b 930 160 922 158 923 160 b 952 143 937 160 943 154 l 1077 10 b 1107 0 1084 3 1096 0 b 1133 7 1117 0 1128 3 b 1398 294 1143 16 1380 272 b 1418 327 1407 305 1418 321 b 1381 351 1418 343 1394 351 b 1354 341 1371 351 1362 348 b 1223 189 1338 328 1238 204 b 1195 174 1211 179 1202 174 b 1171 189 1185 174 1178 181 b 1048 331 1158 200 1063 318 b 1012 351 1035 343 1024 351 b 981 338 1002 351 994 350 b 948 304 968 328 958 315 b 827 166 907 258 865 212 b 815 166 824 163 818 163 b 678 325 760 226 732 264 z',\n },\n ornamentPrecompAppoggTrill: {\n x_min: 0,\n x_max: 1119,\n y_min: 0,\n y_max: 481,\n ha: 481,\n o: 'm 1015 163 b 873 328 963 223 880 318 b 828 354 860 344 847 353 b 796 341 816 354 809 351 b 763 305 783 331 773 317 b 642 168 721 261 681 215 b 636 163 641 167 639 164 b 494 328 585 223 501 318 b 449 354 481 344 468 353 b 418 341 438 354 431 351 b 384 305 405 331 395 317 b 264 168 343 261 302 215 l 242 144 b 144 88 232 124 171 88 b 79 197 81 88 79 189 l 79 648 b 60 693 79 683 71 693 b 52 691 58 693 55 693 b 0 616 3 672 0 625 l 0 207 b 121 0 0 40 68 0 b 249 68 168 0 232 53 b 279 94 262 75 271 86 b 336 144 298 111 315 128 b 367 163 350 156 360 163 b 389 145 374 163 380 157 b 514 12 395 137 501 26 b 543 1 520 4 531 1 b 569 9 553 1 563 4 b 636 73 576 14 605 43 l 658 94 b 714 144 677 111 694 128 b 746 163 729 156 739 163 b 768 145 753 163 759 157 b 893 12 773 137 880 26 b 922 1 899 4 910 1 b 948 9 932 1 942 4 l 1012 71 b 1037 94 1022 78 1030 86 b 1092 144 1054 111 1073 128 b 1123 161 1106 156 1115 161 b 1146 145 1130 161 1136 157 b 1270 12 1152 137 1259 26 b 1299 1 1276 4 1287 1 b 1326 9 1310 1 1320 4 b 1591 297 1336 19 1572 275 b 1611 328 1600 307 1611 320 b 1574 354 1611 343 1585 354 b 1548 344 1565 354 1555 350 b 1416 192 1532 331 1431 206 b 1388 177 1404 181 1395 177 b 1365 190 1380 177 1371 184 b 1243 333 1352 203 1256 321 b 1205 354 1228 346 1217 354 b 1174 341 1195 354 1187 351 b 1140 305 1161 330 1152 317 z',\n },\n ornamentPrecompSlideTrillDAnglebert: {\n x_min: 2,\n x_max: 1150,\n y_min: -367,\n y_max: 245,\n ha: 612,\n o: 'm 1058 160 b 916 327 1007 220 923 317 b 871 353 903 343 890 351 b 840 340 860 353 852 350 b 806 304 827 330 816 315 b 685 167 765 259 724 213 l 680 160 l 615 235 b 419 344 582 275 523 344 b 3 -144 258 344 3 26 b 4 -168 3 -153 3 -160 b 246 -482 24 -315 99 -422 b 458 -528 340 -521 410 -528 b 514 -526 485 -528 504 -526 b 552 -508 531 -526 552 -517 b 514 -497 552 -503 541 -498 l 503 -497 b 194 -390 432 -494 298 -488 b 69 -151 194 -390 69 -279 b 184 96 69 -60 128 27 b 328 183 202 118 258 183 b 477 96 413 183 454 118 b 559 10 510 62 552 19 b 588 0 566 3 576 0 b 613 7 598 0 609 3 b 723 112 622 14 681 73 b 789 161 733 122 776 161 b 811 144 796 161 802 156 b 936 10 816 135 923 24 b 965 0 942 3 953 0 b 991 7 975 0 985 3 b 1051 66 996 12 1022 37 b 1081 92 1063 73 1073 84 b 1136 143 1099 109 1117 127 b 1168 160 1151 154 1159 160 b 1191 144 1175 160 1181 156 b 1315 10 1197 135 1303 24 b 1344 0 1320 3 1332 0 b 1371 7 1355 0 1365 3 b 1636 295 1381 17 1617 274 b 1656 327 1644 305 1656 318 b 1619 353 1656 341 1630 353 b 1593 343 1610 353 1600 348 b 1460 190 1577 330 1476 204 b 1433 176 1449 180 1440 176 b 1410 189 1424 176 1416 183 b 1287 331 1397 202 1300 320 b 1250 353 1273 344 1261 353 b 1218 340 1240 353 1231 350 b 1185 304 1205 328 1197 315 z',\n },\n ornamentPrecompSlideTrillBach: {\n x_min: 0,\n x_max: 1048,\n y_min: -367,\n y_max: 331,\n ha: 698,\n o: 'm 1038 477 l 979 477 l 979 238 l 912 160 b 769 327 858 220 775 317 b 724 353 756 343 743 351 b 693 340 713 353 706 350 b 660 304 680 330 670 315 b 539 167 618 259 577 213 b 533 161 536 166 534 163 b 390 327 480 220 396 317 b 346 353 377 343 364 351 l 340 353 b 308 340 330 353 321 350 b 275 304 295 330 285 315 b 117 122 220 243 168 186 b 0 -144 68 62 0 -48 b 1 -168 0 -153 0 -160 b 243 -482 22 -315 96 -422 b 455 -528 337 -521 408 -528 b 511 -526 482 -528 501 -526 b 549 -508 528 -526 549 -517 b 511 -497 549 -503 539 -498 l 500 -497 b 192 -390 429 -494 295 -488 b 68 -177 192 -390 84 -298 b 66 -151 66 -168 66 -160 b 189 105 66 -58 127 35 b 232 143 203 118 216 131 b 264 161 246 154 256 161 b 285 144 271 161 276 156 b 410 10 291 135 397 24 b 439 0 416 3 428 0 b 465 7 449 0 459 3 l 531 72 b 554 92 540 78 547 86 b 611 143 573 109 590 127 b 642 161 625 154 635 161 b 664 144 649 161 655 156 b 789 10 670 135 776 24 b 818 0 795 3 806 0 b 844 7 828 0 838 3 b 904 66 850 12 876 37 b 935 92 916 73 924 84 b 979 134 949 107 963 121 l 979 -88 l 1037 -88 l 1037 151 l 1044 144 b 1168 10 1050 135 1156 24 b 1197 0 1174 3 1185 0 b 1224 7 1208 0 1218 3 b 1489 295 1234 17 1470 274 b 1509 327 1498 305 1509 318 b 1472 353 1509 341 1483 353 b 1446 343 1463 353 1453 348 b 1313 190 1430 330 1329 204 b 1286 176 1302 180 1293 176 b 1263 189 1277 176 1269 183 b 1140 331 1250 202 1153 320 b 1103 353 1126 344 1115 353 b 1071 340 1093 353 1084 350 b 1038 304 1058 328 1050 315 z',\n },\n ornamentPrecompTrillSuffixDandrieu: {\n x_min: 0,\n x_max: 949,\n y_min: 0,\n y_max: 381,\n ha: 381,\n o: 'm 1367 314 b 1250 521 1367 419 1318 482 b 1107 549 1211 537 1145 549 b 1083 546 1096 549 1087 549 b 1066 528 1071 540 1066 534 b 1079 520 1066 524 1070 520 b 1323 351 1187 517 1323 487 b 1201 171 1323 269 1260 219 b 1194 166 1201 171 1198 168 b 1056 327 1142 226 1063 317 b 1011 353 1043 343 1030 351 b 979 340 999 353 992 350 b 946 304 966 330 956 315 b 825 167 904 259 864 213 l 821 161 b 678 327 768 222 685 317 b 634 353 665 343 652 351 b 602 340 622 353 615 350 b 569 304 589 330 579 315 b 448 167 527 259 487 213 l 444 161 b 301 327 390 222 308 317 b 256 353 288 343 275 351 b 225 340 245 353 238 350 b 192 304 212 330 202 315 b 71 167 150 259 109 213 b 17 105 52 147 36 127 b 0 73 10 98 0 84 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 174 161 157 154 167 161 b 196 144 181 161 187 156 b 321 10 202 135 308 24 b 350 0 327 3 338 0 b 376 7 360 0 370 3 b 485 112 384 14 444 73 b 552 161 495 122 539 161 b 573 144 559 161 564 156 b 698 10 579 135 685 24 b 727 0 704 3 716 0 b 753 7 737 0 747 3 b 863 112 762 14 821 73 b 929 161 873 122 916 161 b 950 144 936 161 942 156 b 1076 10 956 135 1063 24 b 1104 0 1081 3 1093 0 b 1130 7 1115 0 1125 3 b 1236 108 1139 14 1195 69 b 1367 314 1297 160 1367 233 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefix: {\n x_min: 0,\n x_max: 1278,\n y_min: 0,\n y_max: 247,\n ha: 247,\n o: 'm 1801 356 b 1776 346 1793 356 1783 351 b 1642 192 1760 333 1659 206 b 1614 177 1630 181 1621 177 b 1591 190 1606 177 1597 184 b 1469 334 1578 203 1482 323 b 1430 356 1453 347 1441 356 b 1398 343 1420 356 1411 353 b 1365 307 1385 331 1377 318 l 1240 164 b 1097 330 1187 226 1104 320 b 1053 356 1084 346 1071 354 b 1021 343 1041 356 1034 353 b 988 307 1008 333 998 318 b 865 168 946 262 904 216 l 861 163 b 717 330 808 223 724 320 b 672 356 704 346 691 354 b 641 343 661 356 654 353 b 608 307 628 333 618 318 b 485 168 566 262 524 216 l 455 134 b 284 46 409 88 351 46 b 16 285 148 46 32 265 b 3 295 9 292 4 295 b 0 291 1 295 0 292 b 1 285 0 288 1 285 b 308 0 42 190 157 0 b 530 120 415 1 482 63 b 559 144 539 128 549 137 b 590 163 573 156 583 163 b 612 145 598 163 603 157 b 739 10 618 137 724 24 b 768 0 744 3 756 0 b 793 7 778 0 788 3 b 903 114 802 14 861 75 l 939 144 b 971 163 953 156 963 163 b 992 145 978 163 984 157 b 1119 10 998 137 1106 24 b 1148 0 1125 3 1136 0 b 1174 7 1158 0 1168 3 b 1284 114 1182 14 1241 75 b 1316 144 1282 115 1312 141 b 1348 161 1331 156 1339 161 b 1371 145 1355 161 1361 157 b 1496 10 1377 137 1485 24 b 1525 0 1502 3 1513 0 b 1552 7 1536 0 1547 3 b 1819 298 1562 17 1800 276 b 1840 330 1829 308 1840 320 b 1832 344 1840 334 1837 340 b 1801 356 1820 351 1810 356 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefixTurn: {\n x_min: 0,\n x_max: 1277,\n y_min: -62,\n y_max: 333,\n ha: 395,\n o: 'm 1273 202 l 1273 480 l 1230 480 l 1230 174 l 1097 328 b 1053 354 1084 344 1071 353 b 1021 341 1041 354 1034 351 b 988 305 1008 331 998 317 b 865 167 945 261 904 215 l 861 161 b 717 328 808 222 724 318 b 672 354 704 344 691 353 b 641 341 661 354 654 351 b 608 305 628 331 618 317 b 485 167 564 261 524 215 b 455 132 474 156 465 144 b 284 45 410 88 350 45 b 14 284 148 45 30 264 b 3 294 9 291 4 294 b 0 289 1 294 0 291 b 1 284 0 287 1 284 b 308 -1 42 189 157 -1 b 530 118 415 0 481 62 b 557 143 539 127 547 135 b 590 161 572 154 582 161 b 612 144 598 161 603 156 b 737 9 618 135 724 24 b 768 -1 743 1 755 -1 b 793 6 778 -1 788 1 b 903 112 802 13 861 73 l 937 143 b 971 161 953 154 963 161 b 992 144 978 161 984 156 b 1117 9 998 135 1104 24 b 1148 -1 1123 1 1136 -1 b 1174 6 1158 -1 1168 1 l 1230 60 l 1230 -89 l 1273 -89 l 1273 102 l 1283 112 b 1348 160 1295 125 1332 160 b 1371 144 1355 160 1361 156 b 1496 9 1377 135 1483 24 b 1525 -1 1502 1 1513 -1 b 1552 6 1536 -1 1547 1 b 1819 297 1562 16 1800 275 b 1839 328 1827 307 1839 320 b 1801 354 1839 343 1813 354 b 1776 344 1793 354 1783 350 b 1642 190 1760 331 1657 206 b 1614 176 1630 180 1621 176 b 1591 189 1606 176 1597 183 b 1467 333 1578 203 1480 321 b 1430 354 1453 346 1441 354 b 1398 341 1420 354 1411 351 b 1365 305 1385 330 1377 317 z',\n },\n ornamentPrecompTrillLowerSuffix: {\n x_min: 0,\n x_max: 859,\n y_min: -222,\n y_max: 246,\n ha: 468,\n o: 'm 1164 217 b 1031 351 1138 259 1063 351 b 1011 337 1020 351 1024 347 b 828 167 952 291 886 217 l 824 164 b 683 328 772 225 690 318 b 638 354 670 344 657 353 b 606 341 626 354 619 351 b 573 305 593 331 583 317 b 451 167 530 261 490 215 l 446 161 b 302 328 393 222 310 318 b 258 354 289 344 276 353 b 226 341 246 354 239 351 b 193 305 213 331 203 317 b 71 167 150 261 109 215 b 17 105 52 147 36 127 b 0 73 10 98 0 84 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 176 161 157 154 168 161 b 197 144 183 161 189 156 b 323 9 203 135 310 23 b 353 -1 328 1 340 -1 b 379 6 363 -1 373 1 b 488 112 387 13 446 73 l 523 143 b 556 161 539 154 549 161 b 577 144 563 161 569 156 b 703 9 583 135 690 23 b 733 -1 708 1 721 -1 b 759 6 743 -1 753 1 b 868 112 768 13 827 73 b 955 183 878 122 943 183 b 1081 107 965 183 1031 153 b 1156 -89 1128 63 1156 6 l 1156 -102 b 948 -297 1156 -204 1048 -297 b 806 -271 904 -297 850 -282 l 792 -266 b 801 -288 792 -268 795 -282 b 948 -320 809 -297 880 -320 b 1237 -50 1092 -320 1237 -199 b 1164 217 1237 75 1218 122 z',\n },\n brassScoop: {\n x_min: 1,\n x_max: 320,\n y_min: -373,\n y_max: 13,\n ha: 386,\n o: 'm 35 -537 b 461 -12 194 -518 461 -289 b 438 19 461 13 451 19 b 410 -9 425 19 413 9 b 35 -425 357 -366 92 -403 b 1 -482 13 -433 1 -438 l 1 -505 b 26 -537 1 -526 3 -537 z',\n },\n brassDoitMedium: {\n x_min: 0,\n x_max: 489,\n y_min: -40,\n y_max: 346,\n ha: 386,\n o: 'm 33 -58 b 704 468 255 -58 683 186 b 681 498 704 494 693 498 b 654 471 668 498 658 488 b 33 55 550 118 91 76 b 0 -3 12 46 0 42 l 0 -26 b 24 -58 0 -46 1 -58 z',\n },\n brassFallLipShort: {\n x_min: 1,\n x_max: 293,\n y_min: -345,\n y_max: 42,\n ha: 387,\n o: 'm 22 60 b 1 35 4 60 1 52 l 1 6 b 26 -50 3 -40 10 -43 b 32 -52 27 -50 30 -50 b 376 -469 85 -73 327 -111 b 400 -497 379 -487 387 -497 b 422 -467 412 -497 422 -491 b 32 60 422 -187 177 40 z',\n },\n brassLiftMedium: {\n x_min: 0,\n x_max: 811,\n y_min: 0,\n y_max: 852,\n ha: 852,\n o: 'm 1138 1220 b 1135 1225 1135 1223 1135 1224 b 1129 1227 1133 1227 1130 1227 b 1117 1207 1122 1227 1117 1212 l 1117 1201 b 1109 1164 1117 1187 1117 1172 b 1100 1156 1107 1161 1104 1158 b 959 1104 1058 1128 995 1140 b 929 1032 936 1081 929 1056 b 932 1007 929 1024 930 1015 b 923 976 932 995 930 985 l 914 971 b 773 919 873 942 809 955 b 743 847 750 896 743 870 b 746 821 743 838 744 829 b 737 791 746 809 744 799 l 729 783 b 588 733 687 756 624 769 b 557 661 564 710 557 684 b 560 635 557 652 559 644 b 552 605 560 624 559 612 l 543 598 b 402 547 501 570 438 583 b 372 475 379 524 372 498 b 374 449 372 467 373 458 b 366 419 374 438 373 426 l 357 412 b 216 361 315 384 252 397 b 186 289 193 338 186 312 b 189 264 186 281 187 272 b 180 233 189 252 187 240 b 171 226 177 232 174 229 b 30 176 130 199 66 212 b 0 104 7 153 0 128 b 33 0 0 88 14 0 b 49 17 40 0 49 10 b 71 63 52 35 56 49 b 212 115 102 95 154 59 b 239 186 230 134 239 160 b 236 210 239 194 238 202 b 256 249 239 225 243 236 b 397 301 288 281 340 245 b 425 372 416 320 425 346 b 422 396 425 380 423 387 b 442 435 425 410 429 422 b 583 487 474 467 526 431 b 611 557 602 505 611 531 b 608 582 611 566 609 573 b 628 621 611 596 615 608 b 769 672 660 652 711 618 b 796 743 788 691 796 717 b 793 768 796 752 795 759 b 814 806 796 782 801 793 b 955 858 845 838 897 804 b 982 929 973 877 982 903 b 979 953 982 937 981 945 b 999 992 982 968 986 979 b 1140 1045 1031 1024 1083 989 b 1168 1116 1161 1066 1168 1090 b 1138 1220 1168 1162 1145 1207 z',\n },\n brassFallRoughMedium: {\n x_min: 0,\n x_max: 811,\n y_min: 0,\n y_max: 852,\n ha: 852,\n o: 'm 30 1220 b 0 1116 23 1207 0 1162 b 27 1045 0 1090 7 1066 b 168 992 85 989 137 1024 b 189 953 181 979 186 968 b 186 929 187 945 186 937 b 213 858 186 903 194 877 b 354 806 271 804 323 838 b 374 768 367 793 372 782 b 372 743 373 759 372 752 b 399 672 372 717 380 691 b 540 621 456 618 508 652 b 560 582 553 608 557 596 b 557 557 559 573 557 566 b 585 487 557 531 566 505 b 726 435 642 431 694 467 b 746 396 739 422 743 410 b 743 372 744 387 743 380 b 770 301 743 346 752 320 b 912 249 828 245 880 281 b 932 210 924 236 929 225 b 929 186 930 202 929 194 b 956 115 929 160 937 134 b 1097 63 1014 59 1066 95 b 1119 17 1112 49 1116 35 b 1135 0 1119 10 1128 0 b 1168 104 1153 0 1168 91 b 1138 176 1168 128 1161 153 b 996 226 1102 212 1038 199 b 988 233 994 229 991 232 b 979 264 981 240 979 252 b 982 289 981 272 982 281 b 952 361 982 312 975 338 b 811 412 916 397 852 384 l 802 419 b 793 449 795 426 793 438 b 796 475 795 458 796 467 b 766 547 796 498 789 524 b 625 598 730 583 667 570 l 616 605 b 608 635 609 612 608 624 b 611 661 609 644 611 652 b 580 733 611 684 603 710 b 439 783 544 769 481 756 l 431 791 b 422 821 423 799 422 809 b 425 847 423 829 425 838 b 395 919 425 870 418 896 b 253 971 359 955 295 942 l 245 976 b 236 1007 238 985 236 995 b 239 1032 238 1015 239 1024 b 209 1104 239 1056 232 1081 b 68 1156 173 1140 109 1128 b 59 1164 63 1158 60 1161 b 50 1201 50 1172 50 1187 l 50 1207 b 39 1227 50 1212 46 1227 b 33 1225 37 1227 35 1227 b 30 1220 33 1224 33 1223 z',\n },\n brassBend: {\n x_min: 0,\n x_max: 392,\n y_min: 0,\n y_max: 282,\n ha: 282,\n o: 'm 282 0 b 552 72 369 0 456 23 b 564 92 560 75 564 84 l 564 383 b 541 406 564 395 554 406 b 518 383 528 406 518 395 l 518 107 b 282 46 435 65 357 46 b 46 107 207 46 130 65 l 46 383 b 23 406 46 395 36 406 b 0 383 10 406 0 395 l 0 92 b 13 72 0 84 4 75 b 282 0 108 23 196 0 z',\n },\n brassMuteClosed: {\n x_min: 0,\n x_max: 272,\n y_min: 0,\n y_max: 272,\n ha: 272,\n o: 'm 392 219 l 219 219 l 219 392 l 173 392 l 173 219 l 0 219 l 0 173 l 173 173 l 173 0 l 219 0 l 219 173 l 392 173 z',\n },\n brassMuteOpen: {\n x_min: 0,\n x_max: 304,\n y_min: 0,\n y_max: 304,\n ha: 304,\n o: 'm 219 0 b 438 219 340 0 438 98 b 219 438 438 340 340 438 b 0 219 98 438 0 340 b 219 0 0 98 98 0 z m 219 392 b 392 219 314 392 392 314 b 219 46 392 124 314 46 b 46 219 124 46 46 124 b 219 392 46 314 124 392 z',\n },\n brassFlip: {\n x_min: 0,\n x_max: 379,\n y_min: 0,\n y_max: 282,\n ha: 282,\n o: 'm 523 0 b 541 9 530 0 536 3 b 546 22 544 13 546 17 b 536 42 546 29 541 36 l 36 402 b 23 406 33 405 27 406 b 0 383 12 406 0 395 l 0 23 b 23 0 0 10 10 0 b 46 23 36 0 46 10 l 46 337 l 508 4 b 523 0 513 1 517 0 z',\n },\n brassJazzTurn: {\n x_min: 0,\n x_max: 620,\n y_min: 0,\n y_max: 245,\n ha: 245,\n o: 'm 792 190 b 765 176 780 179 772 176 b 740 190 755 176 747 183 b 629 325 727 202 644 312 b 593 347 616 338 605 347 b 562 334 583 346 575 344 b 528 298 549 323 539 310 l 406 176 b 389 168 406 176 399 168 b 374 176 384 168 379 170 b 245 325 360 192 245 325 b 200 353 232 343 219 351 b 168 340 190 353 181 350 l 17 156 b 0 121 10 147 0 132 b 16 107 0 114 4 108 b 84 143 26 107 76 137 b 118 160 92 150 108 160 b 141 143 125 160 131 154 b 265 10 147 135 253 24 b 294 0 271 3 282 0 b 321 7 305 0 315 3 b 498 160 321 7 478 158 b 521 143 505 160 513 154 b 647 10 528 135 635 24 b 675 0 652 3 664 0 b 703 7 687 0 697 3 b 874 186 713 16 855 164 b 893 220 881 196 893 212 b 873 245 890 235 883 243 b 796 194 847 245 815 213 z',\n },\n brassSmear: {\n x_min: 1,\n x_max: 306,\n y_min: 0,\n y_max: 170,\n ha: 170,\n o: 'm 193 79 b 308 0 219 50 264 0 b 439 117 396 0 438 102 b 439 120 439 118 439 118 l 441 125 b 441 128 441 127 441 127 b 433 141 441 135 439 141 b 416 130 429 141 423 137 b 343 94 390 107 370 94 b 269 153 315 94 294 121 l 265 158 b 144 245 239 190 180 245 b 6 134 62 245 10 143 b 1 114 3 125 1 118 b 7 107 1 108 4 107 b 36 122 13 107 22 112 b 92 151 55 137 65 151 b 183 89 125 151 161 112 b 189 84 184 88 187 86 z',\n },\n stringsDownBow: {\n x_min: 0,\n x_max: 312,\n y_min: 0,\n y_max: 318,\n ha: 318,\n o: 'm 37 458 b 0 420 17 458 0 441 l 0 17 b 17 0 0 7 9 0 l 37 0 b 55 17 46 0 55 7 l 55 253 b 225 278 55 269 140 278 b 395 253 310 278 395 269 l 395 17 b 413 0 395 7 403 0 l 432 0 b 449 17 441 0 449 7 l 449 420 b 412 458 449 441 432 458 z',\n },\n stringsUpBow: {\n x_min: 1,\n x_max: 249,\n y_min: 1,\n y_max: 495,\n ha: 494,\n o: 'm 181 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 z',\n },\n stringsHarmonic: {\n x_min: 0,\n x_max: 200,\n y_min: 0,\n y_max: 200,\n ha: 200,\n o: 'm 288 144 b 144 288 288 225 223 288 b 0 144 65 288 0 225 b 144 0 0 65 65 0 b 288 144 223 0 288 65 z m 144 249 b 249 144 203 249 249 203 b 144 39 249 86 203 39 b 39 144 86 39 39 86 b 144 249 39 203 86 249 z',\n },\n pluckedSnapPizzicatoAbove: {\n x_min: 0,\n x_max: 200,\n y_min: 0,\n y_max: 300,\n ha: 300,\n o: 'm 0 144 b 144 0 0 63 65 0 b 288 144 223 0 288 63 b 167 285 288 215 235 275 l 167 432 l 121 432 l 121 285 b 0 144 52 275 0 215 z m 121 246 l 121 144 l 167 144 l 167 246 b 249 144 213 236 249 193 b 144 39 249 85 202 39 b 39 144 85 39 39 85 b 121 246 39 193 73 236 z',\n },\n pluckedSnapPizzicatoBelow: {\n x_min: 0,\n x_max: 200,\n y_min: 0,\n y_max: 300,\n ha: 300,\n o: 'm 288 288 b 144 432 288 369 223 432 b 0 288 65 432 0 369 b 121 145 0 216 52 157 l 121 0 l 167 0 l 167 145 b 288 288 235 157 288 216 z m 167 186 l 167 288 l 121 288 l 121 186 b 39 288 75 196 39 238 b 144 393 39 347 86 393 b 249 288 203 393 249 347 b 167 186 249 238 215 196 z',\n },\n pluckedLeftHandPizzicato: {\n x_min: 0,\n x_max: 272,\n y_min: 0,\n y_max: 272,\n ha: 272,\n o: 'm 392 219 l 219 219 l 219 392 l 173 392 l 173 219 l 0 219 l 0 173 l 173 173 l 173 0 l 219 0 l 219 173 l 392 173 z',\n },\n keyboardPedalPed: {\n x_min: 0,\n x_max: 1019,\n y_min: -8,\n y_max: 555,\n ha: 563,\n o: 'm 413 799 b 179 749 327 798 261 789 b 0 517 107 713 0 632 b 122 376 0 454 37 376 b 240 540 189 376 240 452 b 225 586 240 579 233 586 b 204 549 213 586 212 573 b 138 480 199 527 181 480 b 85 549 96 480 85 517 l 85 554 b 353 762 89 690 230 762 b 373 752 364 762 373 760 b 351 708 373 740 360 723 b 274 546 330 675 274 585 b 353 416 274 508 333 444 b 412 304 372 390 412 351 b 382 228 412 275 403 256 b 334 190 363 202 361 200 b 147 29 271 167 147 88 b 196 -12 147 4 171 -12 b 343 108 239 -12 279 33 l 363 132 b 387 150 370 141 376 150 b 543 -4 445 150 467 -4 b 631 42 567 -4 586 0 l 668 78 b 685 89 674 84 680 89 b 696 75 688 89 690 86 b 809 -9 717 29 753 -9 b 946 66 854 -9 894 13 b 988 107 971 92 981 107 b 1002 89 994 107 996 99 b 1152 -4 1030 36 1077 -4 b 1329 248 1238 -4 1329 82 b 792 717 1329 556 1047 665 b 766 720 785 719 775 720 b 747 703 752 720 747 711 b 780 680 747 693 756 685 b 1223 222 1028 621 1223 504 b 1152 39 1223 122 1205 39 b 1073 229 1104 39 1073 132 b 1132 423 1073 314 1086 377 b 1142 442 1140 432 1142 436 b 1126 458 1142 451 1136 458 b 1093 446 1119 458 1109 455 b 975 216 1022 408 975 337 l 975 190 b 943 121 975 160 972 150 b 852 69 899 76 877 69 b 776 148 816 69 786 117 b 773 163 775 154 773 158 b 786 177 773 167 776 170 l 801 187 b 937 366 867 235 937 284 b 844 454 937 422 900 454 b 665 217 711 454 665 331 b 671 153 665 197 667 176 l 671 147 b 662 134 671 143 670 140 b 605 111 639 118 625 111 b 521 160 572 111 546 135 b 451 203 497 184 474 197 b 426 212 435 207 426 206 b 436 230 426 216 429 220 b 510 389 464 269 510 340 b 429 521 510 435 480 462 b 369 629 387 570 369 599 b 402 720 369 648 384 691 b 462 763 425 759 446 763 b 611 624 540 763 611 704 b 564 575 611 592 590 575 b 501 602 540 575 520 582 b 474 622 492 611 487 622 b 459 603 465 622 459 615 b 603 471 459 570 510 471 b 711 588 670 471 711 524 b 422 799 711 742 554 799 z m 815 403 b 848 343 838 403 848 383 b 780 226 848 295 824 261 b 765 217 773 220 768 217 b 759 228 762 217 759 220 b 756 282 757 245 756 262 b 815 403 756 346 772 403 z m 1405 124 b 1344 62 1369 124 1344 98 b 1405 0 1344 26 1369 0 b 1467 62 1441 0 1467 26 b 1405 124 1467 98 1441 124 z',\n },\n keyboardPedalUp: {\n x_min: 0,\n x_max: 450,\n y_min: 0,\n y_max: 450,\n ha: 450,\n o: 'm 582 396 b 516 367 554 396 533 384 b 465 340 495 347 487 340 l 458 340 b 412 377 432 340 412 348 b 432 409 412 387 419 396 l 438 415 b 490 429 451 428 464 429 b 575 501 534 429 575 452 b 501 575 575 541 541 575 b 429 490 452 575 429 534 b 415 438 429 464 428 451 l 409 432 b 377 412 396 419 387 412 b 340 458 348 412 340 432 l 340 465 b 367 516 340 487 347 495 b 396 582 384 533 396 554 b 324 648 396 625 363 648 b 252 582 285 648 252 625 b 281 516 252 554 264 533 b 308 465 301 495 308 487 l 308 458 b 271 412 308 432 300 412 b 239 432 261 412 252 419 l 233 438 b 219 490 220 451 219 464 b 147 575 219 534 196 575 b 73 501 107 575 73 541 b 158 429 73 452 114 429 b 210 415 184 429 197 428 l 216 409 b 236 377 229 396 236 387 b 190 340 236 348 216 340 l 183 340 b 132 367 161 340 153 347 b 66 396 115 384 94 396 b 0 324 23 396 0 363 b 66 252 0 285 23 252 b 132 281 94 252 115 264 b 183 308 153 301 161 308 l 190 308 b 236 271 216 308 236 300 b 216 239 236 261 229 252 l 210 233 b 158 219 197 220 184 219 b 73 147 114 219 73 196 b 147 73 73 107 107 73 b 219 158 196 73 219 114 b 233 210 219 184 220 197 l 239 216 b 271 236 252 229 261 236 b 308 190 300 236 308 216 l 308 183 b 281 132 308 161 301 153 b 252 66 264 115 252 94 b 324 0 252 23 285 0 b 396 66 363 0 396 23 b 367 132 396 94 384 115 b 340 183 347 153 340 161 l 340 190 b 377 236 340 216 348 236 b 409 216 387 236 396 229 l 415 210 b 429 158 428 197 429 184 b 501 73 429 114 452 73 b 575 147 541 73 575 107 b 490 219 575 196 534 219 b 438 233 464 219 451 220 l 432 239 b 412 271 419 252 412 261 b 458 308 412 300 432 308 l 465 308 b 516 281 487 308 495 301 b 582 252 533 264 554 252 b 648 324 625 252 648 285 b 582 396 648 363 625 396 z m 324 271 b 271 324 291 271 271 291 b 324 377 271 357 291 377 b 377 324 357 377 377 357 b 324 271 377 291 357 271 z',\n },\n pictChokeCymbal: {\n x_min: 1,\n x_max: 152,\n y_min: 2,\n y_max: 251,\n ha: 249,\n o: 'm 104 361 b 1 271 42 361 1 321 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 17 32 29 26 26 l 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 z',\n },\n wiggleArpeggiatoUp: {\n x_min: -33,\n x_max: 292,\n y_min: 0,\n y_max: 119,\n ha: 119,\n o: 'm 130 171 b -39 68 16 171 -14 91 b -48 53 -45 62 -48 58 b -29 42 -48 46 -39 42 b -10 46 -23 42 -16 43 b 56 63 12 56 29 63 b 248 0 121 63 135 0 b 419 127 361 0 410 104 b 420 132 420 130 420 131 b 412 140 420 137 416 140 b 386 130 403 140 392 134 b 334 107 367 117 353 107 b 318 108 330 107 324 107 b 240 138 289 112 265 128 b 130 171 209 153 168 171 z',\n },\n arrowheadBlackUp: {\n x_min: 0,\n x_max: 228,\n y_min: 0,\n y_max: 299,\n ha: 299,\n o: 'm 166 431 b 0 20 111 274 0 30 b 16 0 0 12 6 0 l 17 1 b 166 50 43 16 160 50 b 310 1 171 50 289 13 l 311 0 b 328 20 321 0 328 12 b 166 431 328 30 220 274 z',\n },\n arrowheadBlackDown: {\n x_min: 0,\n x_max: 228,\n y_min: 0,\n y_max: 299,\n ha: 299,\n o: 'm 166 0 b 328 410 220 157 328 400 b 311 431 328 419 321 431 l 310 429 b 166 380 289 418 171 380 b 17 429 160 380 43 415 l 16 431 b 0 410 6 431 0 419 b 166 0 0 400 111 157 z',\n },\n arpeggiatoUp: {\n x_min: 1,\n x_max: 229,\n y_min: 7,\n y_max: 1511,\n ha: 1504,\n o: 'm 219 1848 l 330 1848 l 164 2176 l 1 1848 l 121 1848 b 92 1778 115 1822 101 1800 l 89 1773 b 59 1668 75 1741 59 1702 b 96 1555 59 1614 76 1580 b 99 1551 98 1554 99 1551 l 102 1547 b 124 1496 115 1531 124 1515 b 122 1482 124 1492 124 1488 b 92 1404 118 1453 102 1428 b 59 1293 78 1372 59 1332 b 105 1172 59 1234 81 1198 b 124 1120 118 1155 124 1143 l 122 1113 b 122 1110 122 1113 122 1112 b 92 1032 118 1081 102 1057 b 59 922 78 1001 59 960 b 115 792 59 855 86 816 b 124 760 121 782 124 773 b 122 744 124 756 124 750 b 92 667 118 716 102 693 b 59 556 78 635 59 595 b 108 433 59 495 82 458 b 124 389 117 420 124 408 b 122 374 124 384 124 379 b 92 298 118 346 102 323 l 89 292 b 59 186 75 261 59 222 b 163 19 59 73 140 42 b 177 10 168 13 173 10 b 189 29 184 10 189 19 b 184 48 189 35 187 42 b 167 114 174 69 167 85 b 230 305 167 179 229 193 b 181 423 230 357 209 396 b 167 484 173 442 167 458 b 230 675 167 547 229 563 b 179 796 230 729 206 769 b 167 850 171 812 167 827 b 230 1040 167 913 229 929 b 183 1158 230 1092 209 1130 b 167 1220 173 1178 167 1194 b 230 1411 167 1284 229 1300 b 186 1526 230 1462 210 1499 b 167 1594 176 1529 167 1584 b 230 1786 167 1659 229 1673 b 219 1848 230 1809 226 1829 z',\n },\n arpeggiatoDown: {\n x_min: 1,\n x_max: 229,\n y_min: -4,\n y_max: 1500,\n ha: 1504,\n o: 'm 219 323 b 230 384 226 341 230 361 b 167 576 229 497 167 511 b 186 644 167 586 176 641 b 230 759 210 671 230 708 b 167 950 229 870 167 886 b 183 1012 167 976 173 992 b 230 1130 209 1040 230 1079 b 167 1320 229 1241 167 1257 b 179 1374 167 1344 171 1358 b 230 1495 206 1401 230 1441 b 167 1686 229 1607 167 1623 b 181 1747 167 1712 173 1728 b 230 1865 209 1774 230 1813 b 167 2056 229 1977 167 1992 b 184 2123 167 2085 174 2101 b 189 2141 187 2128 189 2136 b 177 2160 189 2151 184 2160 b 163 2151 173 2160 168 2157 b 59 1984 140 2128 59 2097 b 89 1878 59 1948 75 1909 l 92 1872 b 122 1796 102 1848 118 1824 b 124 1781 124 1791 124 1786 b 108 1737 124 1763 117 1750 b 59 1614 82 1712 59 1675 b 92 1503 59 1575 78 1535 b 122 1426 102 1477 118 1454 b 124 1410 124 1420 124 1414 b 115 1378 124 1397 121 1388 b 59 1248 86 1354 59 1315 b 92 1138 59 1210 78 1169 b 122 1060 102 1113 118 1089 b 122 1057 122 1058 122 1058 l 124 1050 b 105 998 124 1027 118 1015 b 59 877 81 972 59 936 b 92 766 59 838 78 798 b 122 688 102 742 118 717 b 124 674 124 683 124 678 b 102 624 124 655 115 639 l 99 619 b 96 615 99 619 98 616 b 59 503 76 590 59 556 b 89 397 59 468 75 429 l 92 392 b 121 323 101 370 115 348 l 1 323 l 164 -6 l 330 323 z',\n },\n repeat1Bar: {\n x_min: 0,\n x_max: 532,\n y_min: -250,\n y_max: 279,\n ha: 529,\n o: 'm 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 675 -71 b 586 -161 626 -71 586 -111 b 675 -251 586 -210 626 -251 b 766 -161 726 -251 766 -210 b 675 -71 766 -111 726 -71 z',\n },\n repeat2Bars: {\n x_min: 0,\n x_max: 762,\n y_min: -250,\n y_max: 279,\n ha: 529,\n o: 'm 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 b 343 -360 331 -356 336 -360 l 485 -360 b 516 -340 498 -360 508 -348 z m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 1007 -71 b 917 -161 958 -71 917 -111 b 1007 -251 917 -210 958 -251 b 1097 -161 1057 -251 1097 -210 b 1007 -71 1097 -111 1057 -71 z',\n },\n repeat4Bars: {\n x_min: 0,\n x_max: 1232,\n y_min: -250,\n y_max: 279,\n ha: 529,\n o: 'm 1767 380 b 1774 395 1771 386 1774 390 b 1765 402 1774 399 1771 402 l 1613 402 b 1587 380 1604 402 1597 393 l 1012 -340 b 1008 -350 1009 -343 1008 -347 b 1020 -360 1008 -356 1012 -360 l 1162 -360 b 1192 -340 1175 -360 1185 -348 z m 1436 380 b 1443 395 1440 386 1443 390 b 1434 402 1443 399 1440 402 l 1282 402 b 1256 380 1273 402 1266 393 l 681 -340 b 677 -350 678 -343 677 -347 b 688 -360 677 -356 681 -360 l 831 -360 b 861 -340 844 -360 854 -348 z m 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 b 343 -360 331 -356 336 -360 l 485 -360 b 516 -340 498 -360 508 -348 z m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 1683 -71 b 1594 -161 1634 -71 1594 -111 b 1683 -251 1594 -210 1634 -251 b 1774 -161 1734 -251 1774 -210 b 1683 -71 1774 -111 1734 -71 z',\n },\n repeatBarSlash: {\n x_min: 0,\n x_max: 532,\n y_min: -250,\n y_max: 279,\n ha: 529,\n o: 'm 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z',\n },\n csymDiminished: {\n x_min: 0,\n x_max: 473,\n y_min: 0,\n y_max: 473,\n ha: 473,\n o: 'm 341 681 b 0 341 153 681 0 530 b 341 0 0 153 153 0 b 681 341 530 0 681 153 b 341 681 681 530 530 681 z m 341 618 b 618 341 495 618 618 495 b 341 63 618 189 494 63 b 63 341 187 63 63 187 b 341 618 63 494 189 618 z',\n },\n csymHalfDiminished: {\n x_min: -16,\n x_max: 488,\n y_min: -15,\n y_max: 489,\n ha: 504,\n o: 'm 703 660 l 658 704 l 557 603 b 340 681 498 652 422 681 b -1 341 151 681 -1 530 b 78 124 -1 259 29 183 l -23 23 l 22 -22 l 122 79 b 340 0 181 30 258 0 b 680 341 528 0 680 153 b 602 559 680 423 651 500 z m 62 341 b 340 618 62 494 187 618 b 513 559 403 618 464 598 l 122 168 b 62 341 84 217 62 278 z m 616 341 b 340 63 616 189 492 63 b 167 124 276 63 216 85 l 557 514 b 616 341 596 465 616 405 z',\n },\n csymAugmented: {\n x_min: 0,\n x_max: 395,\n y_min: 1,\n y_max: 396,\n ha: 395,\n o: 'm 569 318 l 317 318 l 317 570 l 253 570 l 253 318 l 0 318 l 0 255 l 253 255 l 253 1 l 317 1 l 317 255 l 569 255 z',\n },\n csymMajorSeventh: {\n x_min: 0,\n x_max: 558,\n y_min: 1,\n y_max: 477,\n ha: 476,\n o: 'm 402 687 l 0 1 l 804 1 z m 402 562 l 693 65 l 111 65 z',\n },\n csymMinor: {\n x_min: 0,\n x_max: 325,\n y_min: 216,\n y_max: 260,\n ha: 44,\n o: 'm 468 374 l 0 374 l 0 311 l 468 311 z',\n },\n csymParensLeftTall: {\n x_min: 1,\n x_max: 185,\n y_min: 0,\n y_max: 997,\n ha: 997,\n o: 'm 266 48 b 261 65 266 55 264 62 b 92 719 157 212 92 400 b 262 1371 92 1037 154 1228 b 266 1394 266 1378 266 1394 l 266 1424 b 264 1436 266 1431 266 1436 b 259 1434 262 1436 259 1434 b 1 719 84 1261 1 1011 b 259 1 1 429 79 177 b 264 0 261 0 262 0 b 266 9 265 0 266 6 z',\n },\n csymParensRightTall: {\n x_min: -20,\n x_max: 164,\n y_min: 0,\n y_max: 997,\n ha: 997,\n o: 'm -29 9 b -26 0 -29 6 -27 0 b -22 1 -24 0 -23 0 b 236 719 158 177 236 429 b -22 1434 236 1011 154 1261 b -26 1436 -22 1434 -24 1436 b -29 1424 -29 1436 -29 1431 l -29 1394 b -24 1371 -29 1394 -29 1378 b 145 719 84 1228 145 1037 b -23 65 145 400 81 212 b -29 48 -26 62 -29 55 z',\n },\n csymBracketLeftTall: {\n x_min: 0,\n x_max: 155,\n y_min: 0,\n y_max: 1000,\n ha: 1000,\n o: 'm 217 0 b 223 9 220 0 223 4 l 223 37 b 217 46 223 42 220 46 l 92 46 l 92 1394 l 217 1394 b 223 1403 220 1394 223 1398 l 223 1431 b 217 1440 223 1436 220 1440 l 6 1440 b 0 1436 3 1440 0 1439 l 0 4 b 6 0 0 1 3 0 z',\n },\n csymBracketRightTall: {\n x_min: 1,\n x_max: 156,\n y_min: 0,\n y_max: 1000,\n ha: 1000,\n o: 'm 219 0 b 225 4 222 0 225 1 l 225 1436 b 219 1440 225 1439 222 1440 l 7 1440 b 1 1431 4 1440 1 1436 l 1 1403 b 7 1394 1 1398 4 1394 l 132 1394 l 132 46 l 7 46 b 1 37 4 46 1 42 l 1 9 b 7 0 1 4 4 0 z',\n },\n csymParensLeftVeryTall: {\n x_min: 0,\n x_max: 122,\n y_min: 0,\n y_max: 993,\n ha: 993,\n o: 'm 176 32 b 171 49 176 39 174 46 b 60 716 104 194 60 399 b 173 1382 60 1032 101 1241 b 176 1405 176 1390 176 1405 l 176 1427 b 173 1430 176 1428 174 1430 b 0 716 40 1297 0 978 b 170 3 0 428 50 179 b 171 0 170 1 170 0 b 176 6 173 0 176 4 z',\n },\n csymParensRightVeryTall: {\n x_min: -15,\n x_max: 107,\n y_min: 0,\n y_max: 993,\n ha: 993,\n o: 'm -22 6 b -17 0 -22 4 -19 0 b -16 3 -16 0 -16 1 b 154 716 104 179 154 428 b -19 1430 154 978 114 1297 b -22 1427 -20 1430 -22 1428 l -22 1405 b -19 1382 -22 1405 -22 1390 b 94 716 53 1241 94 1032 b -17 49 94 399 50 194 b -22 32 -20 46 -22 39 z',\n },\n csymDiagonalArrangementSlash: {\n x_min: 0,\n x_max: 999,\n y_min: 0,\n y_max: 1000,\n ha: 1000,\n o: 'm 1439 1380 l 1377 1440 l 0 60 l 62 0 z',\n },\n accSagittal5v7KleismaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -35 b 135 -112 68 -86 99 -112 b 225 68 194 -112 225 -53 l 180 68 b 144 -4 180 20 168 -4 b 122 0 138 -4 131 -3 b 23 248 86 14 52 96 l 0 248 z',\n },\n accSagittal5v7KleismaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 b 122 0 52 -96 86 -14 b 144 4 131 3 138 4 b 180 -68 168 4 180 -20 l 225 -68 b 135 112 225 53 194 112 b 45 35 99 112 68 86 l 45 517 l 0 517 z',\n },\n accSagittal5CommaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 225 -517 l 225 248 l 203 248 l 0 -112 l 0 -284 l 180 33 l 180 -517 z',\n },\n accSagittal5CommaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 180 517 l 180 -33 l 0 284 l 0 112 l 203 -248 l 225 -248 l 225 517 z',\n },\n accSagittal7CommaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 248 l 0 -517 l 45 -517 l 45 112 l 89 112 b 180 -68 150 112 180 53 l 180 -248 l 225 -248 l 225 68 b 135 248 225 187 194 248 z',\n },\n accSagittal7CommaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 135 -248 b 225 -68 194 -248 225 -187 l 225 248 l 180 248 l 180 68 b 89 -112 180 -53 150 -112 l 45 -112 l 45 517 l 0 517 l 0 -248 z',\n },\n accSagittal25SmallDiesisUp: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -157 l 0 -259 l 315 -89 l 315 -517 l 360 -517 l 360 248 l 337 248 l 0 68 l 0 -33 l 315 135 l 315 10 z',\n },\n accSagittal25SmallDiesisDown: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 315 -10 l 315 -135 l 0 33 l 0 -68 l 337 -248 l 360 -248 l 360 517 l 315 517 l 315 89 l 0 259 l 0 157 z',\n },\n accSagittal35MediumDiesisUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -68 330 112 360 53 l 360 -248 l 405 -248 l 405 68 b 315 248 405 187 374 248 l 203 248 l 0 -112 z',\n },\n accSagittal35MediumDiesisDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 203 -248 l 315 -248 b 405 -68 374 -248 405 -187 l 405 248 l 360 248 l 360 68 b 271 -112 360 -53 330 -112 l 225 -112 l 225 517 l 180 517 l 180 -33 l 0 284 z',\n },\n accSagittal11MediumDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 225 53 l 225 -517 l 271 -517 l 271 53 l 495 -248 l 495 -89 l 248 248 l 0 -89 l 0 -248 z',\n },\n accSagittal11MediumDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 248 l 0 89 l 248 -248 l 495 89 l 495 248 l 271 -53 l 271 517 l 225 517 l 225 -53 z',\n },\n accSagittal11LargeDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 112 l 315 112 b 449 -68 405 112 449 53 l 449 -248 l 495 -248 l 495 68 b 360 248 495 187 449 248 l 135 248 b 0 68 45 248 0 187 z',\n },\n accSagittal11LargeDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 360 -248 b 495 -68 449 -248 495 -187 l 495 248 l 449 248 l 449 68 b 315 -112 449 -53 405 -112 l 271 -112 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittal35LargeDiesisUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 l 540 112 l 540 274 l 271 -58 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittal35LargeDiesisDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 l 540 112 l 540 274 l 269 -58 l 269 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittalSharp25SDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 112 -112 0 -53 36 -112 l 135 -112 l 135 -517 l 180 -517 l 180 -89 b 248 26 206 -65 229 -27 b 315 -89 264 -27 287 -65 l 315 -517 l 360 -517 l 360 -112 l 383 -112 b 495 68 458 -112 495 -53 l 449 68 b 399 -4 449 20 433 -4 b 248 248 297 -4 261 171 b 122 0 216 96 176 14 b 94 -4 112 -3 102 -4 b 45 68 60 -4 45 20 z',\n },\n accSagittalFlat25SUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 94 4 45 -20 60 4 b 122 0 102 4 112 3 b 248 -248 176 -14 216 -96 b 399 4 261 -171 297 4 b 449 -68 433 4 449 -20 l 495 -68 b 383 112 495 53 458 112 l 360 112 l 360 517 l 315 517 l 315 89 b 248 -26 287 65 264 27 b 180 89 229 27 206 65 l 180 517 l 135 517 l 135 112 l 112 112 b 0 -68 36 112 0 53 z',\n },\n accSagittalSharp7CDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 112 l 89 112 b 180 104 124 112 154 109 l 180 -517 l 225 -517 l 225 89 b 315 -68 285 60 315 9 l 315 -248 l 360 -248 l 360 68 b 135 248 360 187 285 248 l 0 248 z',\n },\n accSagittalFlat7CUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 135 -248 b 360 -68 285 -248 360 -187 l 360 248 l 315 248 l 315 68 b 225 -89 315 -9 285 -60 l 225 517 l 180 517 l 180 -104 b 89 -112 154 -109 124 -112 l 45 -112 l 45 517 l 0 517 z',\n },\n accSagittalSharp5CDown: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -517 l 45 71 l 180 -56 l 180 -517 l 225 -517 l 225 -98 l 405 -268 l 405 -112 l 23 248 l 0 248 l 0 -517 z',\n },\n accSagittalFlat5CUp: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 517 l 0 -248 l 23 -248 l 405 112 l 405 268 l 225 98 l 225 517 l 180 517 l 180 56 l 45 -71 l 45 517 z',\n },\n accSagittalSharp5v7kDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -276 l 135 -82 l 135 -517 l 180 -517 l 180 -17 l 271 112 l 315 112 l 315 -517 l 360 -517 l 360 107 b 449 -68 420 89 449 30 l 449 -248 l 495 -248 l 495 68 b 360 248 495 189 449 248 l 248 248 z',\n },\n accSagittalFlat5v7kUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 248 -248 l 360 -248 b 495 -68 449 -248 495 -189 l 495 248 l 449 248 l 449 68 b 360 -107 449 -30 420 -89 l 360 517 l 315 517 l 315 -112 l 271 -112 l 180 17 l 180 517 l 135 517 l 135 82 l 0 276 l 0 112 z',\n },\n accSagittalSharp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 180 -53 l 180 -517 l 225 -517 l 225 0 l 292 85 l 360 0 l 360 -517 l 405 -517 l 405 -53 l 585 -274 l 585 -112 l 292 248 l 0 -112 l 0 -274 z',\n },\n accSagittalFlat: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 274 l 0 112 l 292 -248 l 585 112 l 585 274 l 405 53 l 405 517 l 360 517 l 360 0 l 292 -85 l 225 0 l 225 517 l 180 517 l 180 53 z',\n },\n accSagittalSharp5v7kUp: {\n x_min: 0,\n x_max: 312,\n y_min: -361,\n y_max: 172,\n ha: 533,\n o: 'm 45 -517 l 45 -10 b 135 -92 68 -48 98 -75 l 135 -520 l 180 -520 l 180 -108 b 248 -115 203 -112 225 -115 b 271 -112 256 -115 264 -115 l 271 -517 l 315 -517 l 315 -107 b 449 68 405 -89 449 -30 l 405 68 b 297 -4 405 19 369 -4 b 23 248 131 -4 56 85 l 0 248 l 0 -517 z',\n },\n accSagittalFlat5v7kDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 361,\n ha: 533,\n o: 'm 0 517 l 0 -248 l 23 -248 b 297 4 56 -85 131 4 b 405 -68 369 4 405 -19 l 449 -68 b 315 107 449 30 405 89 l 315 517 l 271 517 l 271 112 b 248 115 264 115 256 115 b 180 108 225 115 203 112 l 180 520 l 135 520 l 135 92 b 45 10 98 75 68 48 l 45 517 z',\n },\n accSagittalSharp5CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -266 l 135 -153 l 135 -517 l 180 -517 l 180 -115 l 271 -39 l 271 -517 l 315 -517 l 315 0 l 405 75 l 405 -517 l 449 -517 l 449 248 l 428 248 l 0 -112 z',\n },\n accSagittalFlat5CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 428 -248 l 449 -248 l 449 517 l 405 517 l 405 -75 l 315 0 l 315 517 l 271 517 l 271 39 l 180 115 l 180 517 l 135 517 l 135 153 l 0 266 z',\n },\n accSagittalSharp7CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 112 l 135 112 l 135 -517 l 180 -517 l 180 108 b 271 89 213 105 243 99 l 271 -517 l 315 -517 l 315 73 b 405 -68 374 45 405 -3 l 405 -248 l 449 -248 l 449 68 b 135 248 449 187 346 248 l 0 248 z',\n },\n accSagittalFlat7CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 135 -248 b 449 -68 346 -248 449 -187 l 449 248 l 405 248 l 405 68 b 315 -73 405 3 374 -45 l 315 517 l 271 517 l 271 -89 b 180 -108 243 -99 213 -105 l 180 517 l 135 517 l 135 -112 l 45 -112 l 45 517 l 0 517 z',\n },\n accSagittalSharp25SUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -30 l 495 143 l 495 14 l 0 -157 l 0 -255 l 225 -177 l 225 -517 l 271 -517 l 271 -161 l 360 -130 l 360 -517 l 405 -517 l 405 -115 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 517 248 l 0 68 z',\n },\n accSagittalFlat25SDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 l 517 -248 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 115 l 405 517 l 360 517 l 360 130 l 271 161 l 271 517 l 225 517 l 225 177 l 0 255 l 0 157 l 495 -14 l 495 -143 l 0 30 z',\n },\n accSagittalSharp35MUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -274 l 135 -108 l 135 -517 l 180 -517 l 180 -53 l 271 58 l 271 -517 l 315 -517 l 315 112 l 360 112 b 405 109 376 112 390 112 l 405 -517 l 449 -517 l 449 96 b 540 -68 510 72 540 17 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 z',\n },\n accSagittalFlat35MDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 292 -248 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 449 -96 540 -17 510 -72 l 449 517 l 405 517 l 405 -109 b 360 -112 390 -112 376 -112 l 315 -112 l 315 517 l 271 517 l 271 -58 l 180 53 l 180 517 l 135 517 l 135 108 l 0 274 l 0 112 z',\n },\n accSagittalSharp11MUp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -271 l 180 -79 l 180 -517 l 225 -517 l 225 -30 l 315 65 l 315 -517 l 360 -517 l 360 65 l 449 -30 l 449 -517 l 495 -517 l 495 -79 l 675 -271 l 675 -112 l 337 248 z',\n },\n accSagittalFlat11MDown: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 337 -248 l 675 112 l 675 271 l 495 79 l 495 517 l 449 517 l 449 30 l 360 -65 l 360 517 l 315 517 l 315 -65 l 225 30 l 225 517 l 180 517 l 180 79 l 0 271 l 0 112 z',\n },\n accSagittalSharp11LUp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 112 l 449 112 l 449 -517 l 495 -517 l 495 104 b 631 -68 585 82 631 26 l 631 -248 l 675 -248 l 675 68 b 449 248 675 187 600 248 l 225 248 b 0 68 75 248 0 187 z',\n },\n accSagittalFlat11LDown: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 449 -248 b 675 -68 600 -248 675 -187 l 675 248 l 631 248 l 631 68 b 495 -104 631 -26 585 -82 l 495 517 l 449 517 l 449 -112 l 360 -112 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z',\n },\n accSagittalSharp35LUp: {\n x_min: 0,\n x_max: 500,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 71 l 452 -17 l 452 -517 l 495 -517 l 495 -56 l 720 -268 l 720 -112 l 337 248 l 225 248 b 0 68 75 248 0 187 z',\n },\n accSagittalFlat35LDown: {\n x_min: 0,\n x_max: 500,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 l 720 112 l 720 268 l 495 56 l 495 517 l 452 517 l 452 17 l 360 -71 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z',\n },\n accSagittalDoubleSharp25SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 135 -112 0 -53 45 -112 b 243 -62 180 -112 215 -95 l 89 -503 l 143 -517 l 292 -82 l 445 -517 l 495 -503 l 343 -62 b 449 -112 372 -95 408 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 315 148 b 112 -4 274 148 236 -4 b 45 68 68 -4 45 20 z',\n },\n accSagittalDoubleFlat25SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 112 4 45 -20 68 4 b 292 -248 236 4 274 -148 b 475 4 315 -148 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 b 343 62 408 112 372 95 l 495 503 l 445 517 l 292 82 l 143 517 l 89 503 l 243 62 b 135 112 215 95 180 112 b 0 -68 45 112 0 53 z',\n },\n accSagittalDoubleSharp7CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -503 l 52 -517 l 203 -82 l 354 -517 l 405 -503 l 230 0 l 271 108 b 495 -68 420 92 495 35 l 495 -248 l 540 -248 l 540 68 b 225 248 540 187 435 248 l 89 248 l 89 112 l 135 112 l 174 0 z m 213 112 l 203 82 l 192 112 z',\n },\n accSagittalDoubleFlat7CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 174 0 l 135 -112 l 89 -112 l 89 -248 l 225 -248 b 540 -68 435 -248 540 -187 l 540 248 l 495 248 l 495 68 b 271 -108 495 -35 420 -92 l 230 0 l 405 503 l 354 517 l 203 82 l 52 517 l 0 503 z m 192 -112 l 203 -82 l 213 -112 z',\n },\n accSagittalDoubleSharp5CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 405 -503 l 230 0 l 232 4 l 585 -264 l 585 -112 l 112 248 l 89 248 l 89 112 l 151 68 l 174 0 l 0 -503 l 52 -517 l 203 -82 l 354 -517 z',\n },\n accSagittalDoubleFlat5CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 354 517 l 203 82 l 52 517 l 0 503 l 174 0 l 151 -68 l 89 -112 l 89 -248 l 112 -248 l 585 112 l 585 264 l 232 -4 l 230 0 l 405 503 z',\n },\n accSagittalDoubleSharp5v7kDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -274 l 252 35 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 360 112 b 540 -68 480 112 540 53 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 l 0 -112 z',\n },\n accSagittalDoubleFlat5v7kUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 292 -248 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 360 -112 540 -53 480 -112 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 252 -35 l 0 274 z',\n },\n accSagittalDoubleSharp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 540 -503 l 366 0 l 380 45 l 675 -271 l 675 -112 l 337 248 l 0 -112 l 0 -271 l 295 45 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 z',\n },\n accSagittalDoubleFlat: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 295 -45 l 0 271 l 0 112 l 337 -248 l 675 112 l 675 271 l 380 -45 l 366 0 l 540 503 z',\n },\n accSagittal7v11KleismaUp: {\n x_min: 0,\n x_max: 219,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 68 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 -45 b 248 -112 200 -89 225 -112 b 315 68 292 -112 315 -53 l 271 68 b 248 -4 271 20 264 -4 b 236 0 245 -4 240 -3 b 157 248 213 14 187 96 b 78 0 127 96 101 14 b 65 -4 73 -3 68 -4 b 45 68 50 -4 45 20 l 0 68 b 68 -112 0 -53 23 -112 z',\n },\n accSagittal7v11KleismaDown: {\n x_min: 0,\n x_max: 219,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 68 112 b 0 -68 23 112 0 53 l 45 -68 b 65 4 45 -20 50 4 b 78 0 68 4 73 3 b 157 -248 101 -14 127 -96 b 236 0 187 -96 213 -14 b 248 4 240 3 245 4 b 271 -68 264 4 271 -20 l 315 -68 b 248 112 315 53 292 112 b 180 45 225 112 200 89 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 z',\n },\n accSagittal17CommaUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 -40 b 315 -118 248 -92 279 -118 b 405 62 374 -118 405 -59 l 360 62 b 324 -10 360 14 348 -10 b 302 -6 318 -10 311 -9 b 206 217 268 9 235 84 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z',\n },\n accSagittal17CommaDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 206 -217 b 302 6 235 -84 268 -9 b 324 10 311 9 318 10 b 360 -62 348 10 360 -14 l 405 -62 b 315 118 405 59 374 118 b 225 40 279 118 248 92 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal55CommaUp: {\n x_min: 0,\n x_max: 219,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 248 l 0 -517 l 45 -517 l 45 58 l 315 -274 l 315 -112 l 23 248 z',\n },\n accSagittal55CommaDown: {\n x_min: 0,\n x_max: 219,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 23 -248 l 315 112 l 315 274 l 45 -58 l 45 517 l 0 517 l 0 -248 z',\n },\n accSagittal7v11CommaUp: {\n x_min: 0,\n x_max: 188,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 248 l 135 248 b 0 68 45 248 0 187 z',\n },\n accSagittal7v11CommaDown: {\n x_min: 0,\n x_max: 188,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 271 -248 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittal5v11SmallDiesisUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 73 l 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 -40 b 360 -118 295 -92 325 -118 b 449 62 420 -118 449 -59 l 405 62 b 369 -10 405 14 393 -10 b 348 -6 363 -10 356 -9 b 251 217 312 9 279 84 l 248 248 l 135 248 b 0 73 45 248 0 189 z',\n },\n accSagittal5v11SmallDiesisDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -73 b 135 -248 0 -189 45 -248 l 248 -248 l 251 -217 b 348 6 279 -84 312 -9 b 369 10 356 9 363 10 b 405 -62 393 10 405 -14 l 449 -62 b 360 118 449 59 420 118 b 271 40 325 118 295 92 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittalSharp5v11SDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 242 37 203 -23 225 -3 b 315 -89 262 -23 285 -63 l 315 -517 l 360 -517 l 360 -112 l 383 -112 b 495 68 458 -112 495 -53 l 449 68 b 399 -4 449 20 433 -4 b 248 248 297 -4 261 171 b 157 68 222 127 192 68 l 89 68 b 0 -203 30 68 0 -23 z',\n },\n accSagittalFlat5v11SUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -127 b 399 4 261 -171 297 4 b 449 -68 433 4 449 -20 l 495 -68 b 383 112 495 53 458 112 l 360 112 l 360 517 l 315 517 l 315 89 b 242 -37 285 63 262 23 b 180 23 225 3 203 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z',\n },\n accSagittalSharp7v11CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -112 l 89 -517 l 135 -517 l 135 -95 b 206 37 163 -73 187 -30 b 271 -23 225 -3 248 -23 l 271 -517 l 315 -517 l 315 -23 l 383 -23 b 449 -203 428 -23 449 -84 l 495 -203 b 405 68 495 -23 465 68 l 292 68 b 203 248 258 68 228 127 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 20 l 0 68 b 89 -112 0 -52 30 -112 z',\n },\n accSagittalFlat7v11CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 112 b 0 -68 30 112 0 52 l 45 -68 b 81 3 45 -20 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 b 292 -68 228 -127 258 -68 l 405 -68 b 495 203 465 -68 495 23 l 449 203 b 383 23 449 84 428 23 l 315 23 l 315 517 l 271 517 l 271 23 b 206 -37 248 23 225 3 b 135 95 187 30 163 73 l 135 517 l 89 517 z',\n },\n accSagittalSharp55CDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -271 l 135 -125 l 135 -517 l 180 -517 l 180 -78 l 315 65 l 315 -517 l 360 -517 l 360 248 l 337 248 l 0 -112 z',\n },\n accSagittalFlat55CUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 337 -248 l 360 -248 l 360 517 l 315 517 l 315 -65 l 180 78 l 180 517 l 135 517 l 135 125 l 0 271 z',\n },\n accSagittalSharp17CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -248 l 45 -68 b 180 109 45 36 89 95 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -89 292 13 321 -55 l 360 -517 l 405 -517 l 405 -112 l 428 -112 b 540 68 504 -112 540 -53 l 495 68 b 445 -4 495 20 480 -4 b 292 248 343 -4 307 171 l 180 248 b 0 68 60 248 0 187 l 0 -248 z',\n },\n accSagittalFlat17CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 248 l 0 -68 b 180 -248 0 -187 60 -248 l 292 -248 b 445 4 307 -171 343 4 b 495 -68 480 4 495 -20 l 540 -68 b 428 112 540 53 504 112 l 405 112 l 405 517 l 360 517 l 360 89 b 271 -112 321 55 292 -13 l 225 -112 l 225 517 l 180 517 l 180 -109 b 45 68 89 -95 45 -36 l 45 248 z',\n },\n accSagittalSharp7v11kDown: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -32 l 405 138 l 405 13 l 0 -157 l 0 -256 l 225 -161 l 225 -517 l 271 -517 l 271 -144 l 405 -86 l 405 -517 l 449 -517 l 449 248 l 428 248 l 0 68 z',\n },\n accSagittalFlat7v11kUp: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 l 428 -248 l 449 -248 l 449 517 l 405 517 l 405 86 l 271 144 l 271 517 l 225 517 l 225 161 l 0 256 l 0 157 l 405 -13 l 405 -138 l 0 32 z',\n },\n accSagittalSharp7v11kUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 135 -112 l 135 -517 l 180 -517 l 180 -105 b 271 -23 217 -94 248 -65 l 271 -517 l 315 -517 l 315 -23 b 405 -105 337 -65 369 -94 l 405 -517 l 449 -517 l 449 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 315 148 b 112 -4 274 148 236 -4 b 45 68 68 -4 45 20 l 0 68 b 135 -112 0 -53 45 -112 z',\n },\n accSagittalFlat7v11kDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 135 112 b 0 -68 45 112 0 53 l 45 -68 b 112 4 45 -20 68 4 b 292 -248 236 4 274 -148 b 475 4 315 -148 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 l 449 517 l 405 517 l 405 105 b 315 23 369 94 337 65 l 315 517 l 271 517 l 271 23 b 180 105 248 65 217 94 l 180 517 l 135 517 z',\n },\n accSagittalSharp17CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 -23 b 405 -105 337 -65 369 -94 l 405 -517 l 449 -517 l 449 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 312 150 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalFlat17CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 b 475 4 312 -150 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 l 449 517 l 405 517 l 405 105 b 315 23 369 94 337 65 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp55CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -517 l 45 78 l 135 10 l 135 -517 l 180 -517 l 180 -23 l 271 -92 l 271 -517 l 315 -517 l 315 -127 l 495 -264 l 495 -112 l 23 248 l 0 248 l 0 -517 z',\n },\n accSagittalFlat55CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 517 l 0 -248 l 23 -248 l 495 112 l 495 264 l 315 127 l 315 517 l 271 517 l 271 92 l 180 23 l 180 517 l 135 517 l 135 -10 l 45 -78 l 45 517 z',\n },\n accSagittalSharp7v11CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 86 45 6 89 58 l 180 -517 l 225 -517 l 225 98 b 315 109 252 104 282 108 l 315 -517 l 360 -517 l 360 112 l 449 112 l 449 -517 l 495 -517 l 495 248 l 360 248 b 0 68 121 248 0 189 z',\n },\n accSagittalFlat7v11CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 360 -248 0 -189 121 -248 l 495 -248 l 495 517 l 449 517 l 449 -112 l 360 -112 l 360 517 l 315 517 l 315 -109 b 225 -98 282 -108 252 -104 l 225 517 l 180 517 l 180 -86 b 45 68 89 -58 45 -6 l 45 248 l 0 248 z',\n },\n accSagittalSharp5v11SUp: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 -23 b 449 -105 383 -65 415 -94 l 449 -517 l 495 -517 l 495 -112 b 631 68 585 -112 631 -53 l 585 68 b 520 -4 585 20 563 -4 b 337 248 396 -4 360 150 l 225 248 b 0 68 76 248 0 187 z',\n },\n accSagittalFlat5v11SDown: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 76 -248 l 337 -248 b 520 4 360 -150 396 4 b 585 -68 563 4 585 -20 l 631 -68 b 495 112 631 53 585 112 l 495 517 l 449 517 l 449 105 b 360 23 415 94 383 65 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z',\n },\n accSagittalDoubleSharp5v11SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 341 -60 b 449 -112 370 -95 405 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 312 150 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalDoubleFlat5v11SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 b 475 4 312 -150 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 b 341 60 405 112 370 95 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalDoubleSharp7v11CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 112 -112 b 193 -73 143 -112 170 -99 l 45 -501 l 95 -517 l 248 -81 l 397 -517 l 449 -503 l 275 0 l 278 4 b 337 -23 295 -13 315 -23 l 405 -23 b 495 -203 465 -23 495 -84 l 540 -203 b 428 68 540 -23 503 68 l 360 68 b 248 248 310 68 271 127 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 112 -112 0 -52 36 -112 z',\n },\n accSagittalDoubleFlat7v11CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 112 112 b 0 -68 36 112 0 52 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 b 360 -68 271 -127 310 -68 l 428 -68 b 540 203 503 -68 540 23 l 495 203 b 405 23 495 84 465 23 l 337 23 b 278 -4 315 23 295 13 l 275 0 l 449 503 l 397 517 l 248 81 l 95 517 l 45 501 l 193 73 b 112 112 170 99 143 112 z',\n },\n accSagittalDoubleSharp55CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 428 248 l 0 -112 l 0 -266 l 307 -7 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 386 59 l 449 112 l 449 248 z',\n },\n accSagittalDoubleFlat55CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 449 -248 l 449 -112 l 386 -59 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 307 7 l 0 266 l 0 112 l 428 -248 z',\n },\n accSagittalDoubleSharp17CDown: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -248 l 45 -68 b 271 112 45 53 120 112 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 387 -62 b 495 -112 416 -95 452 -112 b 631 68 585 -112 631 -53 l 585 68 b 520 -4 585 20 563 -4 b 337 248 396 -4 360 150 l 225 248 b 0 68 76 248 0 187 l 0 -248 z',\n },\n accSagittalDoubleFlat17CUp: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 248 l 0 -68 b 225 -248 0 -187 76 -248 l 337 -248 b 520 4 360 -150 396 4 b 585 -68 563 4 585 -20 l 631 -68 b 495 112 631 53 585 112 b 387 62 452 112 416 95 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 271 -112 b 45 68 120 -112 45 -53 l 45 248 z',\n },\n accSagittalDoubleSharp7v11kDown: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -30 l 366 96 l 399 0 l 392 -23 l 0 -157 l 0 -255 l 353 -135 l 225 -503 l 276 -517 l 428 -82 l 579 -517 l 631 -503 l 455 0 l 507 145 l 540 157 l 540 248 l 517 248 z m 416 115 l 442 124 l 428 82 z',\n },\n accSagittalDoubleFlat7v11kUp: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 517 -248 l 540 -248 l 540 -157 l 507 -145 l 455 0 l 631 503 l 579 517 l 428 82 l 276 517 l 225 503 l 353 135 l 0 255 l 0 157 l 392 23 l 399 0 l 366 -96 l 0 30 l 0 -68 z m 428 -82 l 442 -124 l 416 -115 z',\n },\n accSagittal23CommaUp: {\n x_min: 0,\n x_max: 188,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -4 b 68 -23 53 -17 60 -23 l 180 -23 b 225 -203 210 -23 225 -82 l 271 -203 b 206 68 271 -23 248 68 l 89 68 b 23 248 71 68 48 127 l 0 248 z',\n },\n accSagittal23CommaDown: {\n x_min: 0,\n x_max: 188,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 b 89 -68 48 -127 71 -68 l 206 -68 b 271 203 248 -68 271 23 l 225 203 b 180 23 225 82 210 23 l 68 23 b 45 4 60 23 53 17 l 45 517 l 0 517 z',\n },\n accSagittal5v19CommaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 248 l 203 248 b 86 112 151 157 112 112 b 45 157 59 112 45 127 l 0 157 b 76 23 0 72 26 27 l 0 -112 z',\n },\n accSagittal5v19CommaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 76 -23 b 0 -157 26 -27 0 -72 l 45 -157 b 86 -112 45 -127 59 -112 b 203 -248 112 -112 151 -157 l 225 -248 l 225 517 l 180 517 l 180 -33 l 0 284 z',\n },\n accSagittal5v23SmallDiesisUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 -4 b 248 -23 233 -17 240 -23 l 360 -23 b 405 -203 390 -23 405 -82 l 449 -203 b 386 68 449 -23 428 68 l 271 68 b 203 248 251 68 228 127 l 0 -112 z',\n },\n accSagittal5v23SmallDiesisDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 203 -248 b 271 -68 228 -127 251 -68 l 386 -68 b 449 203 428 -68 449 23 l 405 203 b 360 23 405 82 390 23 l 248 23 b 225 4 240 23 233 17 l 225 517 l 180 517 l 180 -33 l 0 284 z',\n },\n accSagittalSharp5v23SDown: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 6 b 89 -23 59 -13 73 -23 l 180 -23 l 180 -517 l 225 -517 l 225 -23 l 292 -23 b 360 -203 337 -23 360 -84 l 405 -203 b 315 68 405 -23 374 68 l 112 68 b 23 248 78 68 48 127 l 0 248 z',\n },\n accSagittalFlat5v23SUp: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 b 112 -68 48 -127 78 -68 l 315 -68 b 405 203 374 -68 405 23 l 360 203 b 292 23 360 84 337 23 l 225 23 l 225 517 l 180 517 l 180 23 l 89 23 b 45 -6 73 23 59 13 l 45 517 l 0 517 z',\n },\n accSagittalSharp5v19CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 89 -112 0 -52 30 -112 l 89 -517 l 135 -517 l 135 -95 b 225 112 173 -65 203 4 l 271 112 l 271 -517 l 315 -517 l 315 107 b 405 -68 374 89 405 30 l 405 -248 l 449 -248 l 449 68 b 315 248 449 189 405 248 l 203 248 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 23 z',\n },\n accSagittalFlat5v19CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 81 3 45 -23 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 l 315 -248 b 449 -68 405 -248 449 -189 l 449 248 l 405 248 l 405 68 b 315 -107 405 -30 374 -89 l 315 517 l 271 517 l 271 -112 l 225 -112 b 135 95 203 -4 173 65 l 135 517 l 89 517 l 89 112 b 0 -68 30 112 0 52 z',\n },\n accSagittalSharp23CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 135 -82 l 135 -517 l 180 -517 l 180 -17 l 239 68 b 315 -23 261 7 287 -23 l 315 -517 l 360 -517 l 360 -23 l 428 -23 b 495 -203 472 -23 495 -84 l 540 -203 b 449 68 540 -23 510 68 l 337 68 b 248 248 302 68 271 127 l 0 -112 l 0 -276 z',\n },\n accSagittalFlat23CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 276 l 0 112 l 248 -248 b 337 -68 271 -127 302 -68 l 449 -68 b 540 203 510 -68 540 23 l 495 203 b 428 23 495 84 472 23 l 360 23 l 360 517 l 315 517 l 315 23 b 239 -68 287 23 261 -7 l 180 17 l 180 517 l 135 517 l 135 82 z',\n },\n accSagittalSharp23CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 14 b 112 -23 63 -10 86 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 360 -23 b 449 -203 420 -23 449 -84 l 495 -203 b 383 68 495 -23 458 68 l 135 68 b 23 248 85 68 48 127 l 0 248 z',\n },\n accSagittalFlat23CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 b 135 -68 48 -127 85 -68 l 383 -68 b 495 203 458 -68 495 23 l 449 203 b 360 23 449 84 420 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 -14 86 23 63 10 l 45 517 l 0 517 z',\n },\n accSagittalSharp5v19CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -266 l 135 -153 l 135 -517 l 180 -517 l 180 -115 l 271 -39 l 271 -517 l 315 -517 l 315 0 l 405 75 l 405 -517 l 449 -517 l 449 248 l 428 248 b 130 68 285 127 186 68 b 45 157 73 68 45 98 l 0 157 b 112 -20 0 53 37 -6 z',\n },\n accSagittalFlat5v19CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 112 20 b 0 -157 37 6 0 -53 l 45 -157 b 130 -68 45 -98 73 -68 b 428 -248 186 -68 285 -127 l 449 -248 l 449 517 l 405 517 l 405 -75 l 315 0 l 315 517 l 271 517 l 271 39 l 180 115 l 180 517 l 135 517 l 135 153 l 0 266 l 0 112 z',\n },\n accSagittalSharp5v23SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 135 -108 l 135 -517 l 180 -517 l 180 -53 l 271 58 l 271 -517 l 315 -517 l 315 14 b 383 -23 334 -10 357 -23 l 405 -23 l 405 -517 l 449 -517 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 405 68 b 292 248 356 68 318 127 l 0 -112 l 0 -274 z',\n },\n accSagittalFlat5v23SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 274 l 0 112 l 292 -248 b 405 -68 318 -127 356 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 449 517 l 405 517 l 405 23 l 383 23 b 315 -14 357 23 334 10 l 315 517 l 271 517 l 271 -58 l 180 53 l 180 517 l 135 517 l 135 108 z',\n },\n accSagittalDoubleSharp5v23SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 52 -517 l 203 -81 l 354 -517 l 405 -503 l 239 -23 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 225 68 b 112 248 176 68 138 127 l 89 248 l 89 112 b 170 -14 109 45 135 0 l 0 -501 z',\n },\n accSagittalDoubleFlat5v23SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 501 l 170 14 b 89 -112 135 0 109 -45 l 89 -248 l 112 -248 b 225 -68 138 -127 176 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 239 23 l 405 503 l 354 517 l 203 81 l 52 517 z',\n },\n accSagittalDoubleSharp5v19CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 112 -112 0 -52 36 -112 b 193 -73 143 -112 170 -99 l 45 -501 l 95 -517 l 248 -81 l 397 -517 l 449 -501 l 275 0 l 315 112 b 495 -68 435 112 495 53 l 495 -248 l 540 -248 l 540 68 b 360 248 540 189 480 248 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 z',\n },\n accSagittalDoubleFlat5v19CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 360 -248 b 540 -68 480 -248 540 -189 l 540 248 l 495 248 l 495 68 b 315 -112 495 -53 435 -112 l 275 0 l 449 501 l 397 517 l 248 81 l 95 517 l 45 501 l 193 73 b 112 112 170 99 143 112 b 0 -68 36 112 0 52 z',\n },\n accSagittalDoubleSharp23CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 252 35 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 323 4 b 383 -23 340 -13 360 -23 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 405 68 b 292 248 356 68 318 127 l 0 -112 l 0 -274 z',\n },\n accSagittalDoubleFlat23CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 274 l 0 112 l 292 -248 b 405 -68 318 -127 356 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 383 23 b 323 -4 360 23 340 13 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 252 -35 z',\n },\n accSagittal19SchismaUp: {\n x_min: 0,\n x_max: 125,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 68 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 248 l 157 248 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 l 0 68 b 68 -112 0 -52 23 -112 z',\n },\n accSagittal19SchismaDown: {\n x_min: 0,\n x_max: 125,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 68 112 b 0 -68 23 112 0 52 l 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 l 180 -248 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 z',\n },\n accSagittal17KleismaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 248 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z',\n },\n accSagittal17KleismaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 225 -248 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal143CommaUp: {\n x_min: 0,\n x_max: 156,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -203 l 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 248 l 203 248 b 135 68 177 127 154 68 l 105 68 b 45 157 65 68 45 98 l 0 157 b 23 20 0 95 7 50 b 0 -203 7 -23 0 -98 z',\n },\n accSagittal143CommaDown: {\n x_min: 0,\n x_max: 156,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 23 -20 0 98 7 23 b 0 -157 7 -50 0 -95 l 45 -157 b 105 -68 45 -98 65 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 225 -248 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal11v49CommaUp: {\n x_min: 0,\n x_max: 188,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -292 b 89 -157 45 -203 60 -157 l 203 -157 b 225 -143 210 -157 217 -153 l 225 -517 l 271 -517 l 271 248 l 248 248 b 180 157 233 187 210 157 l 68 157 b 0 -68 23 157 0 82 l 45 -68 b 89 68 45 23 60 68 l 203 68 b 225 84 209 68 216 72 l 225 -36 b 180 -68 213 -58 199 -68 l 68 -68 b 0 -292 23 -68 0 -143 z',\n },\n accSagittal11v49CommaDown: {\n x_min: 0,\n x_max: 188,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 292 b 68 68 0 143 23 68 l 180 68 b 225 36 199 68 213 58 l 225 -84 b 203 -68 216 -72 209 -68 l 89 -68 b 45 68 60 -68 45 -23 l 0 68 b 68 -157 0 -82 23 -157 l 180 -157 b 248 -248 210 -157 233 -187 l 271 -248 l 271 517 l 225 517 l 225 143 b 203 157 217 153 210 157 l 89 157 b 45 292 60 157 45 203 z',\n },\n accSagittal19CommaUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 68 -112 0 -52 23 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 -4 b 203 -23 187 -17 196 -23 l 315 -23 b 360 -203 346 -23 360 -82 l 405 -203 b 341 68 405 -23 383 68 l 225 68 b 157 248 206 68 183 127 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 z',\n },\n accSagittal19CommaDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 b 225 -68 183 -127 206 -68 l 341 -68 b 405 203 383 -68 405 23 l 360 203 b 315 23 360 82 346 23 l 203 23 b 180 4 196 23 187 17 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 b 0 -68 23 112 0 52 z',\n },\n accSagittal7v19CommaUp: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 68 -112 0 -52 23 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 112 l 225 112 b 315 -68 285 112 315 53 l 315 -248 l 360 -248 l 360 68 b 271 248 360 187 330 248 l 157 248 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 z',\n },\n accSagittal7v19CommaDown: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 l 271 -248 b 360 -68 330 -248 360 -187 l 360 248 l 315 248 l 315 68 b 225 -112 315 -53 285 -112 l 180 -112 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 b 0 -68 23 112 0 52 z',\n },\n accSagittal49SmallDiesisUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -203 l 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -68 330 112 360 53 l 360 -248 l 405 -248 l 405 68 b 315 248 405 187 374 248 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z',\n },\n accSagittal49SmallDiesisDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 315 -248 b 405 -68 374 -248 405 -187 l 405 248 l 360 248 l 360 68 b 271 -112 360 -53 330 -112 l 225 -112 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal23SmallDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 58 l 495 -274 l 495 -112 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z',\n },\n accSagittal23SmallDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 495 112 l 495 274 l 225 -58 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z',\n },\n accSagittal5v13MediumDiesisUp: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -259 l 315 -89 l 315 -517 l 360 -517 l 360 248 l 337 248 b 128 180 253 203 184 180 b 45 248 73 180 45 203 l 0 248 b 52 95 0 170 17 120 l 0 68 l 0 -33 l 315 135 l 315 10 l 0 -157 z',\n },\n accSagittal5v13MediumDiesisDown: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 157 l 315 -10 l 315 -135 l 0 33 l 0 -68 l 52 -95 b 0 -248 17 -120 0 -170 l 45 -248 b 128 -180 45 -203 73 -180 b 337 -248 184 -180 253 -203 l 360 -248 l 360 517 l 315 517 l 315 89 l 0 259 z',\n },\n accSagittal11v19MediumDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 -4 b 292 -23 278 -17 285 -23 l 405 -23 b 449 -203 435 -23 449 -82 l 495 -203 b 431 68 495 -23 472 68 l 315 68 b 248 248 295 68 271 127 l 135 248 b 0 68 45 248 0 187 l 0 -248 z',\n },\n accSagittal11v19MediumDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 248 l 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 b 315 -68 271 -127 295 -68 l 431 -68 b 495 203 472 -68 495 23 l 449 203 b 405 23 449 82 435 23 l 292 23 b 271 4 285 23 278 17 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 z',\n },\n accSagittal49MediumDiesisUp: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -68 l 0 -248 l 45 -248 l 315 -94 l 315 -517 l 360 -517 l 360 248 l 225 248 b 0 -68 75 248 0 143 z m 45 -68 b 225 112 45 53 105 112 l 315 112 l 315 10 l 45 -145 z',\n },\n accSagittal49MediumDiesisDown: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 68 b 225 -248 0 -143 75 -248 l 360 -248 l 360 517 l 315 517 l 315 94 l 45 248 l 0 248 z m 45 145 l 315 -10 l 315 -112 l 225 -112 b 45 68 105 -112 45 -53 z',\n },\n accSagittal5v49MediumDiesisUp: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -89 l 0 -248 l 225 53 l 225 -517 l 271 -517 l 271 53 l 495 -248 l 495 -89 l 248 248 b 89 89 170 143 118 89 b 45 157 60 89 45 112 l 0 157 b 68 3 0 68 23 16 z',\n },\n accSagittal5v49MediumDiesisDown: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 68 -3 b 0 -157 23 -16 0 -68 l 45 -157 b 89 -89 45 -112 60 -89 b 248 -248 118 -89 170 -143 l 495 89 l 495 248 l 271 -53 l 271 517 l 225 517 l 225 -53 l 0 248 l 0 89 z',\n },\n accSagittal49LargeDiesisUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -89 l 360 -248 l 405 -248 l 405 -68 b 180 248 405 143 330 248 l 0 248 z m 45 12 l 45 112 l 180 112 b 360 -68 300 112 360 53 l 360 -147 z',\n },\n accSagittal49LargeDiesisDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 180 -248 b 405 68 330 -248 405 -143 l 405 248 l 360 248 l 45 89 l 45 517 l 0 517 z m 360 147 l 360 68 b 180 -112 360 -53 300 -112 l 45 -112 l 45 -12 z',\n },\n accSagittal11v19LargeDiesisUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -86 l 449 -256 l 449 -157 l 45 13 l 45 138 l 449 -30 l 449 68 l 23 248 l 0 248 z',\n },\n accSagittal11v19LargeDiesisDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 l 449 -68 l 449 30 l 45 -138 l 45 -13 l 449 157 l 449 256 l 45 86 l 45 517 l 0 517 z',\n },\n accSagittal5v13LargeDiesisUp: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 b 89 -112 0 -52 30 -112 b 180 -35 125 -112 157 -86 l 180 -517 l 225 -517 l 225 -86 l 631 -256 l 631 -157 l 225 13 l 225 138 l 631 -30 l 631 68 l 203 248 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 20 z',\n },\n accSagittal5v13LargeDiesisDown: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -68 b 81 3 45 -20 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 l 631 -68 l 631 30 l 225 -138 l 225 -13 l 631 157 l 631 256 l 225 86 l 225 517 l 180 517 l 180 35 b 89 112 157 86 125 112 b 0 -68 30 112 0 52 z',\n },\n accSagittalSharp23SDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -203 l 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 b 315 6 287 -23 301 -13 l 315 -517 l 360 -517 l 360 248 l 337 248 b 248 68 312 127 282 68 l 194 68 b 89 157 125 68 89 98 l 45 157 b 60 59 45 118 50 85 b 0 -203 20 30 0 -56 z',\n },\n accSagittalFlat23SUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 60 -59 0 56 20 -30 b 45 -157 50 -85 45 -118 l 89 -157 b 194 -68 89 -98 125 -68 l 248 -68 b 337 -248 282 -68 312 -127 l 360 -248 l 360 517 l 315 517 l 315 -6 b 271 23 301 13 287 23 l 180 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z',\n },\n accSagittalSharp49SDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -292 l 45 -292 b 112 -157 45 -203 68 -157 l 135 -157 l 135 -517 l 180 -517 l 180 -157 l 271 -157 b 315 -135 285 -157 300 -150 l 315 -517 l 360 -517 l 360 248 l 337 248 b 248 157 323 187 292 157 l 89 157 b 0 -68 30 157 0 82 l 45 -68 b 112 68 45 23 68 68 l 271 68 b 315 89 284 68 300 75 l 315 -32 b 248 -68 298 -56 275 -68 l 89 -68 b 0 -292 29 -68 0 -143 z',\n },\n accSagittalFlat49SUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 292 b 89 68 0 143 29 68 l 248 68 b 315 32 275 68 298 56 l 315 -89 b 271 -68 300 -75 284 -68 l 112 -68 b 45 68 68 -68 45 -23 l 0 68 b 89 -157 0 -82 30 -157 l 248 -157 b 337 -248 292 -157 323 -187 l 360 -248 l 360 517 l 315 517 l 315 135 b 271 157 300 150 285 157 l 180 157 l 180 517 l 135 517 l 135 157 l 112 157 b 45 292 68 157 45 203 z',\n },\n accSagittalSharp7v19CDown: {\n x_min: 0,\n x_max: 250,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -271 l 135 -125 l 135 -517 l 180 -517 l 180 -78 l 315 65 l 315 -517 l 360 -517 l 360 248 l 337 248 b 118 89 239 143 166 89 b 45 157 68 89 45 112 l 0 157 b 89 -20 0 53 29 -6 z',\n },\n accSagittalFlat7v19CUp: {\n x_min: 0,\n x_max: 250,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 20 b 0 -157 29 6 0 -53 l 45 -157 b 118 -89 45 -112 68 -89 b 337 -248 166 -89 239 -143 l 360 -248 l 360 517 l 315 517 l 315 -65 l 180 78 l 180 517 l 135 517 l 135 125 l 0 271 l 0 112 z',\n },\n accSagittalSharp19CDown: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 96 45 17 89 72 l 180 -517 l 225 -517 l 225 107 b 315 112 252 112 282 112 l 360 112 l 360 -517 l 405 -517 l 405 248 l 271 248 b 0 68 89 248 0 187 z',\n },\n accSagittalFlat19CUp: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 271 -248 0 -187 89 -248 l 405 -248 l 405 517 l 360 517 l 360 -112 l 315 -112 b 225 -107 282 -112 252 -112 l 225 517 l 180 517 l 180 -96 b 45 68 89 -72 45 -17 l 45 248 l 0 248 z',\n },\n accSagittalSharp11v49CDown: {\n x_min: 0,\n x_max: 344,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 112 -23 45 -82 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 271 112 215 -23 245 23 l 315 112 l 315 -517 l 360 -517 l 360 107 b 449 -68 420 89 449 30 l 449 -248 l 495 -248 l 495 68 b 360 248 495 189 449 248 l 248 248 b 157 68 222 128 192 68 l 89 68 b 0 -203 30 68 0 -23 z',\n },\n accSagittalFlat11v49CUp: {\n x_min: 0,\n x_max: 344,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -128 l 360 -248 b 495 -68 449 -248 495 -189 l 495 248 l 449 248 l 449 68 b 360 -107 449 -30 420 -89 l 360 517 l 315 517 l 315 -112 l 271 -112 b 180 23 245 -23 215 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 82 z',\n },\n accSagittalSharp143CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 259 76 210 -23 236 10 l 315 17 l 315 -517 l 360 -517 l 360 -30 l 585 -271 l 585 -112 l 248 248 b 157 68 222 127 192 68 l 89 68 b 0 -203 30 68 0 -23 z',\n },\n accSagittalFlat143CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -127 l 585 112 l 585 271 l 360 30 l 360 517 l 315 517 l 315 -17 l 259 -76 b 180 23 236 -10 210 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z',\n },\n accSagittalSharp17kDown: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -157 l 0 -256 l 225 -161 l 225 -517 l 271 -517 l 271 -144 l 405 -86 l 405 -517 l 449 -517 l 449 248 l 428 248 b 145 171 305 196 210 171 b 45 248 78 171 45 196 l 0 248 b 79 101 0 170 26 121 l 0 68 l 0 -32 l 405 138 l 405 13 z',\n },\n accSagittalFlat17kUp: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 405 -13 l 405 -138 l 0 32 l 0 -68 l 79 -101 b 0 -248 26 -121 0 -170 l 45 -248 b 145 -171 45 -196 78 -171 b 428 -248 210 -171 305 -196 l 449 -248 l 449 517 l 405 517 l 405 86 l 271 144 l 271 517 l 225 517 l 225 161 l 0 256 l 0 157 z',\n },\n accSagittalSharp19sDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 180 109 45 36 89 95 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -23 295 23 325 -23 l 360 -517 l 405 -517 l 405 -23 l 472 -23 b 540 -203 517 -23 540 -84 l 585 -203 b 495 68 585 -23 554 68 l 383 68 b 292 248 348 68 318 127 l 180 248 b 0 68 60 248 0 187 z',\n },\n accSagittalFlat19sUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 180 -248 0 -187 60 -248 l 292 -248 b 383 -68 318 -127 348 -68 l 495 -68 b 585 203 554 -68 585 23 l 540 203 b 472 23 540 84 517 23 l 405 23 l 405 517 l 360 517 l 360 23 b 271 -112 325 23 295 -23 l 225 -112 l 225 517 l 180 517 l 180 -109 b 45 68 89 -95 45 -36 l 45 248 l 0 248 z',\n },\n accSagittalSharp19sUp: {\n x_min: 0,\n x_max: 281,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -96 l 89 -517 l 135 -517 l 135 -108 b 180 -112 148 -112 163 -112 b 225 -108 196 -112 210 -112 l 225 -517 l 271 -517 l 271 -94 b 360 -12 305 -78 337 -50 l 360 -517 l 405 -517 l 405 248 l 383 248 b 190 0 353 98 288 16 b 138 -3 171 0 153 -3 b 45 68 75 -3 45 20 l 0 68 b 89 -96 0 -17 30 -72 z',\n },\n accSagittalFlat19sDown: {\n x_min: 0,\n x_max: 281,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 96 b 0 -68 30 72 0 17 l 45 -68 b 138 3 45 -20 75 3 b 190 0 153 3 171 0 b 383 -248 288 -16 353 -98 l 405 -248 l 405 517 l 360 517 l 360 12 b 271 94 337 50 305 78 l 271 517 l 225 517 l 225 108 b 180 112 210 112 196 112 b 135 108 163 112 148 112 l 135 517 l 89 517 z',\n },\n accSagittalSharp17kUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 337 -23 b 405 14 363 -23 386 -10 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 68 402 127 364 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalFlat17kDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 517 l 405 517 l 405 -14 b 337 23 386 10 363 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp143CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 337 -23 b 405 14 363 -23 386 -10 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 68 402 127 364 68 l 240 68 b 89 157 140 68 89 98 l 45 157 b 68 53 45 115 52 81 b 0 -203 23 23 0 -63 z',\n },\n accSagittalFlat143CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -53 0 63 23 -23 b 45 -157 52 -81 45 -115 l 89 -157 b 240 -68 89 -98 140 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 517 l 405 517 l 405 -14 b 337 23 386 10 363 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp11v49CUp: {\n x_min: 0,\n x_max: 312,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -68 b 135 68 45 23 76 68 l 337 68 b 405 95 363 68 386 76 l 405 -27 b 315 -68 386 -55 356 -68 l 112 -68 b 0 -292 37 -68 0 -143 l 45 -292 b 135 -157 45 -203 75 -157 l 135 -517 l 180 -517 l 180 -157 l 271 -157 l 271 -517 l 315 -517 l 315 -157 l 337 -157 b 405 -130 360 -157 383 -148 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 157 413 187 376 157 l 112 157 b 0 -68 37 157 0 82 z',\n },\n accSagittalFlat11v49CDown: {\n x_min: 0,\n x_max: 312,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 68 b 112 -157 0 -82 37 -157 l 315 -157 b 428 -248 376 -157 413 -187 l 449 -248 l 449 517 l 405 517 l 405 130 b 337 157 383 148 360 157 l 315 157 l 315 517 l 271 517 l 271 157 l 180 157 l 180 517 l 135 517 l 135 157 b 45 292 75 157 45 203 l 0 292 b 112 68 0 143 37 68 l 315 68 b 405 27 356 68 386 55 l 405 -95 b 337 -68 386 -76 363 -68 l 135 -68 b 45 68 76 -68 45 -23 z',\n },\n accSagittalSharp19CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 14 b 337 -23 289 -10 311 -23 l 360 -23 l 360 -517 l 405 -517 l 405 -23 b 495 -203 465 -23 495 -82 l 540 -203 b 428 68 540 -23 503 68 l 360 68 b 248 248 310 68 271 128 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z',\n },\n accSagittalFlat19CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 b 360 -68 271 -128 310 -68 l 428 -68 b 540 203 503 -68 540 23 l 495 203 b 405 23 495 82 465 23 l 405 517 l 360 517 l 360 23 l 337 23 b 271 -14 311 23 289 10 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z',\n },\n accSagittalSharp7v19CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 112 l 315 112 b 360 109 331 112 346 112 l 360 -517 l 405 -517 l 405 98 b 495 -68 465 73 495 19 l 495 -248 l 540 -248 l 540 68 b 360 248 540 189 480 248 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z',\n },\n accSagittalFlat7v19CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 360 -248 b 540 -68 480 -248 540 -189 l 540 248 l 495 248 l 495 68 b 405 -98 495 -19 465 -73 l 405 517 l 360 517 l 360 -109 b 315 -112 346 -112 331 -112 l 271 -112 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z',\n },\n accSagittalSharp49SUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 112 l 360 112 b 405 109 376 112 390 112 l 405 -517 l 449 -517 l 449 96 b 540 -68 510 72 540 17 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalFlat49SDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 449 -96 540 -17 510 -72 l 449 517 l 405 517 l 405 -109 b 360 -112 390 -112 376 -112 l 315 -112 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp23SUp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 71 l 405 -14 l 405 -517 l 449 -517 l 449 -56 l 675 -268 l 675 -112 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalFlat23SDown: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 675 112 l 675 268 l 449 56 l 449 517 l 405 517 l 405 14 l 315 -71 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalSharp5v13MUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 495 141 l 495 14 l 0 -157 l 0 -256 l 225 -180 l 225 -517 l 271 -517 l 271 -161 l 360 -130 l 360 -517 l 405 -517 l 405 -115 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 517 248 b 167 168 366 194 248 168 b 45 248 85 168 45 194 l 0 248 b 95 99 0 170 30 120 l 0 68 l 0 -30 z',\n },\n accSagittalFlat5v13MDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 30 l 0 -68 l 95 -99 b 0 -248 30 -120 0 -170 l 45 -248 b 167 -168 45 -194 85 -168 b 517 -248 248 -168 366 -194 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 115 l 405 517 l 360 517 l 360 130 l 271 161 l 271 517 l 225 517 l 225 180 l 0 256 l 0 157 l 495 -14 l 495 -141 z',\n },\n accSagittalSharp11v19MUp: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 14 b 428 -23 379 -10 402 -23 l 449 -23 l 449 -517 l 495 -517 l 495 -23 b 585 -203 554 -23 585 -84 l 631 -203 b 517 68 631 -23 593 68 l 449 68 b 337 248 400 68 363 127 l 225 248 b 0 68 75 248 0 187 z',\n },\n accSagittalFlat11v19MDown: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 b 449 -68 363 -127 400 -68 l 517 -68 b 631 203 593 -68 631 23 l 585 203 b 495 23 585 84 554 23 l 495 517 l 449 517 l 449 23 l 428 23 b 360 -14 402 23 379 10 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z',\n },\n accSagittalSharp49MUp: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 225 -180 l 225 -517 l 271 -517 l 271 -166 l 360 -132 l 360 -517 l 405 -517 l 405 -117 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 360 248 b 0 -68 120 248 0 143 z m 45 -145 l 45 -68 b 360 112 45 53 150 112 l 495 112 l 495 14 z',\n },\n accSagittalFlat49MDown: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 68 b 360 -248 0 -143 120 -248 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 117 l 405 517 l 360 517 l 360 132 l 271 166 l 271 517 l 225 517 l 225 180 l 45 248 l 0 248 z m 495 -14 l 495 -112 l 360 -112 b 45 68 150 -112 45 -53 l 45 145 z',\n },\n accSagittalSharp5v49MUp: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -271 l 180 -79 l 180 -517 l 225 -517 l 225 -30 l 315 65 l 315 -517 l 360 -517 l 360 65 l 449 -30 l 449 -517 l 495 -517 l 495 -79 l 675 -271 l 675 -112 l 337 248 b 118 89 239 143 166 89 b 45 157 68 89 45 112 l 0 157 b 107 0 0 62 36 10 l 0 -112 z',\n },\n accSagittalFlat5v49MDown: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 112 l 107 0 b 0 -157 36 -10 0 -62 l 45 -157 b 118 -89 45 -112 68 -89 b 337 -248 166 -89 239 -143 l 675 112 l 675 271 l 495 79 l 495 517 l 449 517 l 449 30 l 360 -65 l 360 517 l 315 517 l 315 -65 l 225 30 l 225 517 l 180 517 l 180 79 l 0 271 z',\n },\n accSagittalSharp49LUp: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -82 l 135 -112 l 135 -517 l 180 -517 l 180 -127 l 271 -157 l 271 -517 l 315 -517 l 315 -173 l 540 -248 l 585 -248 l 585 -68 b 180 248 585 143 449 248 l 0 248 z m 45 112 l 180 112 b 540 -68 420 112 540 53 l 540 -145 l 45 16 z',\n },\n accSagittalFlat49LDown: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 180 -248 b 585 68 449 -248 585 -143 l 585 248 l 540 248 l 315 173 l 315 517 l 271 517 l 271 157 l 180 127 l 180 517 l 135 517 l 135 112 l 45 82 l 45 517 l 0 517 z m 45 -16 l 540 145 l 540 68 b 180 -112 540 -53 420 -112 l 45 -112 z',\n },\n accSagittalSharp11v19LUp: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -517 l 45 -517 l 45 -81 l 135 -108 l 135 -517 l 180 -517 l 180 -121 l 271 -148 l 271 -517 l 315 -517 l 315 -161 l 631 -255 l 631 -157 l 45 16 l 45 144 l 631 -30 l 631 68 l 23 248 l 0 248 z',\n },\n accSagittalFlat11v19LDown: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -248 l 23 -248 l 631 -68 l 631 30 l 45 -144 l 45 -16 l 631 157 l 631 255 l 315 161 l 315 517 l 271 517 l 271 148 l 180 121 l 180 517 l 135 517 l 135 108 l 45 81 l 45 517 l 0 517 z',\n },\n accSagittalSharp5v13LUp: {\n x_min: 0,\n x_max: 500,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 -85 l 360 -120 l 360 -517 l 405 -517 l 405 -135 l 720 -256 l 720 -157 l 271 14 l 271 141 l 720 -30 l 720 68 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z',\n },\n accSagittalFlat5v13LDown: {\n x_min: 0,\n x_max: 500,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 720 -68 l 720 30 l 271 -141 l 271 -14 l 720 157 l 720 256 l 405 135 l 405 517 l 360 517 l 360 120 l 271 85 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z',\n },\n accSagittalDoubleSharp23SDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -203 l 45 -203 b 135 -23 45 -82 76 -23 l 301 -23 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 370 -14 b 449 112 423 10 449 53 l 449 248 l 428 248 b 315 68 402 127 364 68 l 240 68 b 89 157 140 68 89 98 l 45 157 b 68 53 45 115 52 81 b 0 -203 23 23 0 -63 z',\n },\n accSagittalDoubleFlat23SUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 68 -53 0 63 23 -23 b 45 -157 52 -81 45 -115 l 89 -157 b 240 -68 89 -98 140 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 -112 b 370 14 449 -53 423 -10 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 301 23 l 135 23 b 45 203 76 23 45 82 z',\n },\n accSagittalDoubleSharp49SDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -292 l 45 -292 b 112 -157 45 -203 68 -157 l 256 -157 l 135 -503 l 187 -517 l 337 -82 l 490 -517 l 540 -503 l 366 0 l 396 89 b 449 157 416 102 435 125 l 449 248 l 428 248 b 315 157 413 187 376 157 l 112 157 b 0 -68 39 157 0 82 l 45 -68 b 135 68 45 23 76 68 l 287 68 l 311 0 l 288 -68 l 89 -68 b 0 -292 32 -68 0 -144 z',\n },\n accSagittalDoubleFlat49SUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 292 b 89 68 0 144 32 68 l 288 68 l 311 0 l 287 -68 l 135 -68 b 45 68 76 -68 45 -23 l 0 68 b 112 -157 0 -82 39 -157 l 315 -157 b 428 -248 376 -157 413 -187 l 449 -248 l 449 -157 b 396 -89 435 -125 416 -102 l 366 0 l 540 503 l 490 517 l 337 82 l 187 517 l 135 503 l 256 157 l 112 157 b 45 292 68 157 45 203 z',\n },\n accSagittalDoubleSharp7v19CDown: {\n x_min: 0,\n x_max: 375,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -112 l 0 -266 l 307 -7 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 386 59 l 449 112 l 449 248 l 428 248 b 130 68 285 127 186 68 b 45 157 73 68 45 98 l 0 157 b 112 -20 0 53 37 -6 z',\n },\n accSagittalDoubleFlat7v19CUp: {\n x_min: 0,\n x_max: 375,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 112 20 b 0 -157 37 6 0 -53 l 45 -157 b 130 -68 45 -98 73 -68 b 428 -248 186 -68 285 -127 l 449 -248 l 449 -112 l 386 -59 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 307 7 l 0 266 l 0 112 z',\n },\n accSagittalDoubleSharp19CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 315 109 45 36 135 95 l 354 0 l 180 -503 l 232 -517 l 383 -82 l 534 -517 l 585 -503 l 410 0 l 449 112 l 495 112 l 495 248 l 360 248 b 0 68 120 248 0 187 z m 372 112 l 393 112 l 383 82 z',\n },\n accSagittalDoubleFlat19CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 360 -248 0 -187 120 -248 l 495 -248 l 495 -112 l 449 -112 l 410 0 l 585 503 l 534 517 l 383 82 l 232 517 l 180 503 l 354 0 l 315 -109 b 45 68 135 -95 45 -36 l 45 248 l 0 248 z m 383 -82 l 393 -112 l 372 -112 z',\n },\n accSagittalDoubleSharp11v49CDown: {\n x_min: 0,\n x_max: 406,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 360 112 b 540 -68 480 112 540 53 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalDoubleFlat11v49CUp: {\n x_min: 0,\n x_max: 406,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 360 -112 540 -53 480 -112 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalDoubleSharp143CDown: {\n x_min: 0,\n x_max: 469,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 337 49 l 675 -268 l 675 -112 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z',\n },\n accSagittalDoubleFlat143CUp: {\n x_min: 0,\n x_max: 469,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 675 112 l 675 268 l 337 -49 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z',\n },\n accSagittalDoubleSharp17kDown: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 248 b 95 101 0 170 30 121 l 0 68 l 0 -30 l 364 96 l 399 0 l 390 -23 l 0 -157 l 0 -255 l 353 -135 l 225 -503 l 275 -517 l 428 -82 l 577 -517 l 631 -503 l 455 0 l 507 145 l 540 157 l 540 248 l 517 248 b 167 168 366 194 248 168 b 45 248 85 168 45 194 z m 416 115 l 442 124 l 428 82 z',\n },\n accSagittalDoubleFlat17kUp: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 45 -248 b 167 -168 45 -194 85 -168 b 517 -248 248 -168 366 -194 l 540 -248 l 540 -157 l 507 -145 l 455 0 l 631 503 l 577 517 l 428 82 l 275 517 l 225 503 l 353 135 l 0 255 l 0 157 l 390 23 l 399 0 l 364 -96 l 0 30 l 0 -68 l 95 -101 b 0 -248 30 -121 0 -170 z m 428 -82 l 442 -124 l 416 -115 z',\n },\n accSagittalDoubleSharp19sDown: {\n x_min: 0,\n x_max: 438,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 -248 l 45 -248 l 45 -68 b 271 112 45 53 120 112 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 367 4 b 428 -23 386 -13 405 -23 l 495 -23 b 585 -203 554 -23 585 -84 l 631 -203 b 517 68 631 -23 593 68 l 449 68 b 337 248 400 68 363 127 l 225 248 b 0 68 75 248 0 187 z',\n },\n accSagittalDoubleFlat19sUp: {\n x_min: 0,\n x_max: 438,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 b 449 -68 363 -127 400 -68 l 517 -68 b 631 203 593 -68 631 23 l 585 203 b 495 23 585 84 554 23 l 428 23 b 367 -4 405 23 386 13 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 271 -112 b 45 68 120 -112 45 -53 l 45 248 l 0 248 z',\n },\n accSagittalShaftUp: {\n x_min: 0,\n x_max: 31,\n y_min: -359,\n y_max: 172,\n ha: 531,\n o: 'm 0 112 l 0 -517 l 45 -517 l 45 112 l 23 248 z',\n },\n accSagittalShaftDown: {\n x_min: 0,\n x_max: 31,\n y_min: -172,\n y_max: 359,\n ha: 531,\n o: 'm 23 -248 l 45 -112 l 45 517 l 0 517 l 0 -112 z',\n },\n accSagittalAcute: {\n x_min: 0,\n x_max: 125,\n y_min: -62,\n y_max: 125,\n ha: 187,\n o: 'm 0 0 l 0 -89 l 180 89 l 180 180 z',\n },\n accSagittalGrave: {\n x_min: 0,\n x_max: 125,\n y_min: -125,\n y_max: 62,\n ha: 187,\n o: 'm 180 -180 l 180 -89 l 0 89 l 0 0 z',\n },\n accSagittal1MinaUp: {\n x_min: -7,\n x_max: 124,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 134 150 179 112 163 135 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal1MinaDown: {\n x_min: -7,\n x_max: 124,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 179 -23 163 -135 179 -112 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittal2MinasUp: {\n x_min: -7,\n x_max: 218,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 269 150 314 112 298 135 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal2MinasDown: {\n x_min: -7,\n x_max: 218,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittal1TinaUp: {\n x_min: 0,\n x_max: 93,\n y_min: 16,\n y_max: 107,\n ha: 91,\n o: 'm 134 154 l 91 154 b 81 76 91 101 91 86 b 0 68 73 69 48 68 l 0 23 b 134 154 122 23 134 36 z',\n },\n accSagittal1TinaDown: {\n x_min: 0,\n x_max: 93,\n y_min: -107,\n y_max: -16,\n ha: 91,\n o: 'm 134 -154 b 0 -23 134 -36 122 -23 l 0 -68 b 81 -76 48 -68 73 -69 b 91 -154 91 -86 91 -101 z',\n },\n accSagittal2TinasUp: {\n x_min: 0,\n x_max: 94,\n y_min: 16,\n y_max: 107,\n ha: 91,\n o: 'm 135 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z',\n },\n accSagittal2TinasDown: {\n x_min: 0,\n x_max: 94,\n y_min: -107,\n y_max: -16,\n ha: 91,\n o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 z',\n },\n accSagittal3TinasUp: {\n x_min: -7,\n x_max: 124,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 134 150 179 112 163 135 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal3TinasDown: {\n x_min: -7,\n x_max: 124,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 179 -23 163 -135 179 -112 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittal4TinasUp: {\n x_min: 0,\n x_max: 187,\n y_min: 16,\n y_max: 106.69999999999997,\n ha: 90.69999999999997,\n o: 'm 0 68 l 0 23 b 143 45 105 23 124 26 b 203 107 153 55 183 107 b 226 23 216 107 226 86 l 269 23 b 225 150 269 112 253 135 b 160 132 207 158 181 153 b 115 81 138 112 124 88 b 0 68 104 71 94 68 z',\n },\n accSagittal4TinasDown: {\n x_min: 0,\n x_max: 187,\n y_min: -106.69999999999999,\n y_max: -16,\n ha: 90.69999999999999,\n o: 'm 0 -68 b 115 -81 94 -68 104 -71 b 160 -132 124 -88 138 -112 b 225 -150 181 -153 207 -158 b 269 -23 253 -135 269 -112 l 226 -23 b 203 -107 226 -86 216 -107 b 143 -45 183 -107 153 -55 b 0 -23 124 -26 105 -23 z',\n },\n accSagittal5TinasUp: {\n x_min: 0,\n x_max: 218,\n y_min: 16,\n y_max: 107,\n ha: 91,\n o: 'm 135 23 b 187 45 156 23 168 26 b 249 107 197 55 228 107 b 271 23 262 107 271 86 l 314 23 b 269 150 314 112 298 135 b 204 132 252 158 226 153 b 160 81 183 112 168 88 b 135 68 148 71 147 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z',\n },\n accSagittal5TinasDown: {\n x_min: 0,\n x_max: 218,\n y_min: -107,\n y_max: -16,\n ha: 91,\n o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 b 160 -81 147 -68 148 -71 b 204 -132 168 -88 183 -112 b 269 -150 226 -153 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 249 -107 271 -86 262 -107 b 187 -45 228 -107 197 -55 b 135 -23 168 -26 156 -23 z',\n },\n accSagittal6TinasUp: {\n x_min: -7,\n x_max: 218,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 269 150 314 112 298 135 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal6TinasDown: {\n x_min: -7,\n x_max: 218,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittal7TinasUp: {\n x_min: 0,\n x_max: 281,\n y_min: 16,\n y_max: 106.69999999999997,\n ha: 90.69999999999997,\n o: 'm 0 68 l 0 23 b 143 45 105 23 124 26 b 203 107 153 55 183 107 b 226 23 216 107 226 86 l 269 23 b 298 65 269 23 291 55 b 343 107 314 86 331 107 b 361 23 354 107 363 86 l 405 23 b 360 150 405 112 389 135 b 294 130 343 158 311 150 b 264 92 281 115 272 104 b 225 150 258 127 245 140 b 160 132 207 158 181 153 b 115 81 138 112 124 88 b 0 68 104 71 94 68 z',\n },\n accSagittal7TinasDown: {\n x_min: 0,\n x_max: 281,\n y_min: -106.69999999999999,\n y_max: -16,\n ha: 90.69999999999999,\n o: 'm 0 -68 b 115 -81 94 -68 104 -71 b 160 -132 124 -88 138 -112 b 225 -150 181 -153 207 -158 b 264 -92 245 -140 258 -127 b 294 -130 272 -104 281 -115 b 360 -150 311 -150 343 -158 b 405 -23 389 -135 405 -112 l 361 -23 b 343 -107 363 -86 354 -107 b 298 -65 331 -107 314 -86 b 269 -23 291 -55 269 -23 l 226 -23 b 203 -107 226 -86 216 -107 b 143 -45 183 -107 153 -55 b 0 -23 124 -26 105 -23 z',\n },\n accSagittal8TinasUp: {\n x_min: 0,\n x_max: 312,\n y_min: 16,\n y_max: 107,\n ha: 91,\n o: 'm 135 23 b 187 45 156 23 168 26 b 249 107 197 55 228 107 b 271 23 262 107 271 86 l 314 23 b 343 65 314 23 336 55 b 387 107 359 86 376 107 b 406 23 399 107 408 86 l 449 23 b 405 150 449 112 433 135 b 338 130 387 158 356 150 b 308 92 325 115 317 104 b 269 150 302 127 289 140 b 204 132 252 158 226 153 b 160 81 183 112 168 88 b 135 68 148 71 147 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z',\n },\n accSagittal8TinasDown: {\n x_min: 0,\n x_max: 312,\n y_min: -107,\n y_max: -16,\n ha: 91,\n o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 b 160 -81 147 -68 148 -71 b 204 -132 168 -88 183 -112 b 269 -150 226 -153 252 -158 b 308 -92 289 -140 302 -127 b 338 -130 317 -104 325 -115 b 405 -150 356 -150 387 -158 b 449 -23 433 -135 449 -112 l 406 -23 b 387 -107 408 -86 399 -107 b 343 -65 376 -107 359 -86 b 314 -23 336 -55 314 -23 l 271 -23 b 249 -107 271 -86 262 -107 b 187 -45 228 -107 197 -55 b 135 -23 168 -26 156 -23 z',\n },\n accSagittal9TinasUp: {\n x_min: -7,\n x_max: 312,\n y_min: 16,\n y_max: 106.31676725154982,\n ha: 90.31676725154982,\n o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 343 65 314 23 336 55 b 387 107 359 86 376 107 b 406 23 399 107 408 86 l 449 23 b 405 150 449 112 433 135 b 338 130 387 158 356 150 b 308 92 325 115 317 104 b 269 150 302 127 289 140 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z',\n },\n accSagittal9TinasDown: {\n x_min: -7,\n x_max: 312,\n y_min: -106.31676725154983,\n y_max: -16,\n ha: 90.31676725154983,\n o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 308 -92 289 -140 302 -127 b 338 -130 317 -104 325 -115 b 405 -150 356 -150 387 -158 b 449 -23 433 -135 449 -112 l 406 -23 b 387 -107 408 -86 399 -107 b 343 -65 376 -107 359 -86 b 314 -23 336 -55 314 -23 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z',\n },\n accSagittalFractionalTinaUp: {\n x_min: -3,\n x_max: 35,\n y_min: 73,\n y_max: 111,\n ha: 38,\n o: 'm -4 132 b 23 105 -4 118 9 105 b 50 132 37 105 50 118 b 23 160 50 147 37 160 b -4 132 9 160 -4 147 z',\n },\n accSagittalFractionalTinaDown: {\n x_min: -3,\n x_max: 35,\n y_min: -111,\n y_max: -73,\n ha: 38,\n o: 'm -4 -132 b 23 -160 -4 -147 9 -160 b 50 -132 37 -160 50 -147 b 23 -105 50 -118 37 -105 b -4 -132 9 -105 -4 -118 z',\n },\n accidentalNarrowReversedFlat: {\n x_min: 0,\n x_max: 164,\n y_min: -194,\n y_max: 421,\n ha: 615,\n o: 'm 236 -279 l 236 606 l 192 606 l 192 179 b 85 243 150 222 114 243 b 0 84 23 243 0 134 b 112 -158 0 3 37 -78 z m 192 112 l 192 -163 l 135 -98 b 82 40 101 -50 82 -3 b 138 144 82 73 96 144 b 192 112 153 144 170 132 z',\n },\n accidentalNarrowReversedFlatAndFlat: {\n x_min: 0,\n x_max: 414,\n y_min: -194,\n y_max: 421,\n ha: 615,\n o: 'm 281 606 l 281 -268 l 438 -158 b 596 84 547 -82 596 3 b 475 243 596 154 556 243 b 325 179 435 243 384 222 l 325 606 z m 235 -279 l 235 606 l 190 606 l 190 179 b 85 243 148 222 114 243 b 12 158 52 243 27 215 b 0 84 3 134 0 108 b 112 -158 0 3 37 -78 z m 325 111 b 410 144 359 132 386 144 b 498 36 462 144 498 84 b 413 -107 498 -9 469 -58 l 325 -173 z m 192 112 l 192 -163 l 135 -98 b 81 40 99 -50 81 -3 b 91 94 81 59 84 76 b 137 144 102 127 118 144 b 192 112 153 144 170 132 z',\n },\n accidentalWilsonPlus: {\n x_min: 0,\n x_max: 281,\n y_min: -203,\n y_max: 203,\n ha: 406,\n o: 'm 405 268 l 225 98 l 225 292 l 180 292 l 180 56 l 0 -112 l 0 -268 l 180 -98 l 180 -292 l 225 -292 l 225 -56 l 405 112 z',\n },\n accidentalWilsonMinus: {\n x_min: 0,\n x_max: 281,\n y_min: -186,\n y_max: 186,\n ha: 372,\n o: 'm 0 112 l 405 -268 l 405 -112 l 0 268 z',\n },\n },\n fontFamily: 'Bravura',\n resolution: 1000,\n generatedOn: '2022-06-26T17:36:54.186Z',\n};\n","/**\n * The Bravura font was created by Daniel Spreadbury @ Steinberg.\n * https://github.com/steinbergmedia/bravura/\n */\nexport const BravuraMetrics = {\n name: 'Bravura',\n smufl: true,\n stave: {\n padding: 12,\n endPaddingMax: 10,\n endPaddingMin: 5,\n unalignedNotePadding: 10,\n },\n accidental: {\n noteheadAccidentalPadding: 1,\n leftPadding: 2,\n accidentalSpacing: 3,\n },\n clef: {\n default: {\n point: 32,\n width: 26,\n },\n small: {\n point: 26,\n width: 20,\n },\n annotations: {\n '8va': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: -1.4,\n shiftX: 12,\n },\n },\n small: {\n point: 16,\n treble: {\n line: -0.2,\n shiftX: 8,\n },\n },\n },\n '8vb': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: 6,\n shiftX: 10,\n },\n bass: {\n line: 3.5,\n shiftX: 1,\n },\n },\n small: {\n point: 16,\n treble: {\n line: 5.3,\n shiftX: 6,\n },\n bass: {\n line: 3.1,\n shiftX: 0.5,\n },\n },\n },\n },\n // These may no longer be necessary\n lineCount: {\n '8': { point: 55, shiftY: 14 },\n '7': { point: 47, shiftY: 8 },\n '6': { point: 32, shiftY: 1 },\n '5': { point: 30, shiftY: -6 },\n '4': { point: 23, shiftY: -12 },\n },\n },\n parenthesis: {\n default: {\n point: 39,\n width: 7,\n },\n gracenote: {\n point: (39 * 3) / 5,\n width: 3,\n },\n },\n pedalMarking: {\n up: {\n point: 40,\n },\n down: {\n point: 34,\n },\n },\n // These are for numeric digits, such as in time signatures\n digits: {\n // used by timesig\n shiftLine: -1,\n point: 34,\n // used by tuplets\n tupletPoint: 22,\n shiftY: -6,\n },\n articulation: {\n articStaccatissimoAbove: {\n padding: 2,\n },\n articStaccatissimoBelow: {\n padding: 2,\n },\n },\n tremolo: {\n default: {\n point: 25,\n spacing: 5,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 11,\n offsetXStemDown: 1,\n },\n grace: {\n point: 18,\n spacing: 4,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 7,\n offsetXStemDown: 1,\n },\n },\n staveRepetition: {\n symbolText: {\n offsetX: 12,\n offsetY: 25,\n spacing: 5,\n },\n coda: {\n offsetY: 25,\n },\n segno: {\n offsetY: 10,\n },\n },\n // noteHead: {\n // },\n stem: {\n heightAdjustmentForFlag: -3,\n // These are stem (Y) offsets to the note heads. To shift the\n // noteheads (x-position) themselves, see glyphs.notehead.custom.\n noteHead: {\n noteheadTriangleUpHalf: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpBlack: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpWhole: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadXHalf: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXBlack: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXWhole: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadHalf: {\n offsetYBaseStemUp: -2.55,\n offsetYBaseStemDown: 2.65,\n },\n noteheadBlack: {\n offsetYBaseStemUp: -2,\n offsetYBaseStemDown: 2,\n },\n noteheadSquareWhite: {\n offsetYBaseStemDown: -5,\n offsetYBaseStemUp: 5,\n },\n },\n },\n // Values under here are used by the Glyph class to reposition and rescale\n // glyphs based on their category. This should be the first stop for\n // custom font glyph repositioning.\n //\n // The glyph loader first looks up a specific set of settings based on the\n // glyph code, and if not found, uses the defaults from the category. See\n // glyphs.textNote for an example of this.\n //\n // Details in Glyph.lookupFontMetrics.\n glyphs: {\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n segno: {\n shiftX: -7,\n },\n flag: {\n shiftX: -0.75,\n staveTempo: {\n shiftX: -1,\n },\n },\n clef: {\n gClef: {\n default: { scale: 1.1, shiftY: 1 },\n small: { shiftY: 1.5 },\n },\n fClef: {\n default: { shiftY: -0.5 },\n },\n },\n ornament: {\n ornamentTurn: {\n scale: 1.2,\n },\n ornamentTurnSlash: {\n scale: 1.2,\n },\n },\n stringNumber: {\n verticalPadding: 8,\n stemPadding: 2,\n leftPadding: 5,\n rightPadding: 6,\n },\n stroke: {\n arrowheadBlackDown: {\n straight: {\n shiftX: -4.5,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n arrowheadBlackUp: {\n straight: {\n shiftX: -0.85,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n },\n textNote: {\n point: 34,\n breathMarkTick: {\n point: 36,\n shiftY: 9,\n },\n breathMarkComma: {\n point: 36,\n },\n segno: {\n point: 30,\n shiftX: -7,\n shiftY: 8,\n },\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n ornamentTrill: {\n shiftX: -8,\n shiftY: 8,\n },\n ornamentTurn: {\n point: 42,\n },\n ornamentTurnSlash: {\n point: 42,\n },\n ornamentMordent: {\n shiftX: -8,\n },\n ornamentShortTrill: {\n shiftX: -8,\n },\n },\n noteHead: {\n minPadding: 2,\n standard: {\n restQuarterStemUp: {\n point: 35,\n },\n restQuarterStemDown: {\n point: 35,\n },\n },\n custom: {\n noteheadCircleXStemUp: {\n shiftX: 1.5,\n },\n noteheadCircleXStemDown: {\n shiftX: 0.25,\n },\n noteheadDiamondHalfStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondBlackStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondWholeStemUp: {\n shiftX: 1,\n },\n noteheadXHalfStemUp: {\n shiftX: -2,\n },\n noteheadXHalfStemDown: {\n shiftX: 1,\n },\n noteheadXWholeStemUp: {\n shiftX: -4,\n },\n noteheadXWholeStemDown: {\n shiftX: 1,\n },\n noteheadXDoubleWholeStemUp: {\n shiftX: -4,\n },\n noteheadXDoubleWholeStemDown: {\n shiftX: 1,\n },\n noteheadSquareWhiteStemDown: {\n shiftX: 0.25,\n },\n noteheadSquareWhiteStemUp: {\n shiftX: -0.75,\n },\n noteheadSquareBlackStemUp: {\n shiftX: -0.75,\n },\n noteheadTriangleUpWholeStemUp: {\n shiftX: -0.75,\n },\n },\n },\n chordSymbol: {\n global: {\n superscriptOffset: -400,\n subscriptOffset: 300,\n kerningOffset: -250,\n lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'],\n upperKerningText: ['A', 'L'],\n spacing: 100,\n superSubRatio: 0.66,\n },\n csymDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymHalfDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymAugmented: {\n scale: 1,\n leftSideBearing: 0,\n advanceWidth: 530,\n yOffset: 0,\n },\n csymParensLeftTall: {\n scale: 0.8,\n leftSideBearing: -20,\n advanceWidth: 184,\n yOffset: 250,\n },\n csymParensRightTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 189,\n yOffset: 250,\n },\n csymBracketLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 328,\n yOffset: 0,\n },\n csymBracketRightTall: {\n scale: 0.8,\n leftSideBearing: 1,\n advanceWidth: 600,\n yOffset: 0,\n },\n csymParensLeftVeryTall: {\n scale: 0.9,\n leftSideBearing: 50,\n advanceWidth: 121,\n yOffset: 350,\n },\n csymParensRightVeryTall: {\n scale: 0.9,\n leftSideBearing: 0,\n advanceWidth: 111,\n yOffset: 350,\n },\n csymDiagonalArrangementSlash: {\n scale: 0.6,\n leftSideBearing: -1,\n advanceWidth: 990,\n yOffset: 0,\n },\n csymMinor: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 482,\n yOffset: 0,\n },\n csymMajorSeventh: {\n scale: 0.9,\n leftSideBearing: 200,\n yOffset: 0,\n advanceWidth: 600,\n },\n accidentalSharp: {\n scale: 0.75,\n leftSideBearing: 20,\n advanceWidth: 250,\n yOffset: -302,\n },\n accidentalFlat: {\n scale: 0.9,\n leftSideBearing: -20,\n advanceWidth: 226,\n yOffset: -184,\n },\n },\n jazzOrnaments: {\n brassScoop: {\n scale: 1.0,\n xOffset: -12,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 20,\n },\n brassDoitMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 22,\n },\n brassFallLipShort: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassLiftMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 5,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassFallRoughMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 28,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassBend: {\n scale: 1.0,\n xOffset: 2,\n yOffset: -8,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassMuteClosed: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -8,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassMuteOpen: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -7,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassFlip: {\n scale: 1.0,\n xOffset: 10,\n yOffset: 0,\n stemUpYOffset: 7,\n reportedWidth: 10,\n },\n brassJazzTurn: {\n scale: 1.0,\n xOffset: 0,\n yOffset: 0,\n stemUpYOffset: 8,\n reportedWidth: 31,\n },\n brassSmear: {\n scale: 1.0,\n xOffset: 10,\n yOffset: 0,\n stemUpYOffset: 8,\n reportedWidth: 5,\n },\n },\n tuplet: {\n noteHeadOffset: 20,\n stemOffset: 10,\n bottomLine: 4,\n topModifierOffset: 15,\n },\n },\n};\n","export const CustomFont = {\n resolution: 1000,\n fontFamily: 'VexFlowCustom',\n glyphs: {\n noteheadSquareWhite: {\n x_min: 0,\n x_max: 430.75,\n ha: 386,\n o: 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 l 50 150 l 380 150 l 380 -150 l 50 -150 l 50 150 ',\n },\n noteheadSquareBlack: {\n x_min: 0,\n x_max: 430.75,\n ha: 386,\n o: 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 ',\n },\n accidentalBuyukMucennebFlat: {\n x_min: -171.5,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalBakiyeFlat: {\n x_min: -176.9375,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalKucukMucennebSharp: {\n x_min: -1.359375,\n x_max: 255.890625,\n ha: 261,\n o: 'm 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 ',\n },\n accidentalKoron: {\n x_min: -20,\n x_max: 320,\n ha: 257,\n o: 'm -8 200 b -8 210 8 200 16 200 l 20 148 -199 l 23 -615 b 0 -629 9 -629 6 -629 l -21 -612 l -21 -201 l -21 216 l -20 200 m 16 200 l 310 0 l 240 0 l 16 140 l 16 -120 l 240 0 l 310 0 l 16 -200 ',\n },\n accidentalSori: {\n x_min: -10.890625,\n x_max: 299.4375,\n ha: 294,\n o: 'm 44 174 b 51 174 47 174 49 174 b 68 173 55 174 61 174 l 287 112 l 551 40 b 615 20 617 22 609 23 b 626 0 622 16 626 8 b 615 -22 626 -9 622 -18 b 613 -23 613 -23 613 -23 b 613 -23 613 -23 613 -23 b 287 -113 613 -24 597 -29 l 68 -174 b 53 -176 61 -176 57 -176 b 39 -172 47 -176 43 -174 b 27 -151 31 -167 27 -159 b 39 -129 27 -141 31 -133 b 230 -74 43 -124 20 -131 l 370 -36 l 468 -9 b 498 0 484 -4 498 -1 b 468 8 498 0 484 2 l 370 34 l 230 73 b 40 126 28 129 43 124 b 27 149 31 131 27 140 b 44 174 27 161 34 170 m 205 110 l 205 300 b 205 330 245 330 245 300 l 245 300 l 245 -300 b 245 -330 205 -330 205 -300 l 205 -300 l 205 110 l 345 90 m 345 90 l 345 330 b 345 360 385 360 385 330 l 385 330 l 385 -270 b 385 -300 345 -300 345 -270 l 345 -270 l 345 90 ',\n },\n vexAccidentalMicrotonal2: {\n x_min: -1.359375,\n x_max: 386.5625,\n ha: 394,\n o: 'm 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 ',\n },\n vexAccidentalMicrotonal3: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm -146 537 b -138 538 -143 538 -141 538 b -118 525 -129 538 -121 533 b -117 390 -117 522 -117 521 b -115 259 -117 268 -117 259 b -115 259 -115 259 -115 259 b -59 272 -104 263 -62 272 b -39 259 -50 272 -42 267 b -37 209 -38 257 -37 233 b -39 159 -37 185 -38 162 b -85 138 -43 149 -44 149 l -117 131 l -117 21 b -115 -88 -117 -80 -117 -88 b -115 -88 -115 -88 -115 -88 b -59 -75 -104 -84 -62 -75 b -44 -81 -52 -75 -48 -77 b -38 -124 -38 -87 -38 -85 b -38 -138 -38 -124 -38 -138 b -38 -152 -38 -138 -38 -152 b -44 -195 -38 -191 -38 -190 b -85 -209 -48 -200 -48 -200 l -117 -217 l -117 -349 b -118 -486 -117 -481 -117 -482 b -138 -499 -121 -494 -129 -499 b -153 -493 -143 -499 -149 -497 b -159 -415 -158 -487 -159 -496 b -159 -355 -159 -398 -159 -379 b -159 -227 -159 -284 -159 -227 b -205 -238 -159 -227 -180 -232 b -250 -249 -230 -244 -250 -249 b -251 -386 -251 -249 -251 -311 b -252 -525 -251 -521 -251 -522 b -272 -538 -255 -534 -264 -538 b -287 -532 -277 -538 -283 -536 b -293 -452 -292 -527 -293 -536 b -293 -391 -293 -436 -293 -415 b -294 -260 -293 -269 -293 -260 b -294 -260 -294 -260 -294 -260 b -348 -272 -306 -264 -345 -272 b -368 -259 -357 -272 -365 -267 b -369 -209 -369 -257 -369 -233 b -368 -159 -369 -185 -369 -162 b -323 -139 -364 -149 -362 -148 l -293 -131 l -293 -22 b -294 87 -293 80 -293 87 b -294 87 -294 87 -294 87 b -348 75 -306 84 -345 75 b -368 88 -357 75 -365 80 b -369 138 -369 91 -369 114 b -368 188 -369 162 -369 186 b -323 209 -364 198 -362 199 l -293 216 l -293 349 b -292 486 -293 481 -293 482 b -272 499 -288 494 -280 499 b -257 493 -266 499 -261 497 b -251 414 -251 487 -251 496 b -251 354 -251 398 -251 378 b -251 226 -251 284 -251 226 b -205 238 -250 226 -230 231 b -159 249 -180 244 -159 249 b -159 385 -159 249 -159 310 b -157 525 -159 521 -159 522 b -146 537 -156 530 -151 535 z m -159 11 b -159 120 -159 98 -159 120 l -159 120 b -175 116 -160 120 -167 119 b -221 105 -184 114 -204 109 l -251 98 l -251 -12 b -251 -121 -251 -72 -251 -121 b -205 -110 -250 -121 -230 -116 b -159 -99 -180 -104 -159 -99 b -159 11 -159 -99 -159 -49 z m 89 517 b 97 519 92 518 94 519 b 117 505 106 519 114 513 b 119 376 119 502 119 501 l 119 249 l 145 258 b 176 267 169 266 172 267 b 177 267 176 267 177 267 b 196 255 186 267 192 263 l 197 252 l 197 205 b 197 181 197 195 197 187 b 193 149 197 153 197 153 b 152 131 190 144 187 143 l 119 120 l 119 10 b 119 -100 119 -62 119 -100 b 145 -91 120 -100 131 -96 b 173 -82 159 -86 171 -82 b 176 -81 174 -81 175 -81 b 196 -94 185 -81 193 -87 b 198 -151 197 -97 198 -125 b 197 -194 198 -172 197 -192 b 153 -218 193 -203 192 -204 l 119 -230 l 119 -367 l 118 -504 l 117 -507 b 97 -519 113 -514 105 -519 b 82 -512 92 -519 87 -517 b 76 -434 77 -507 76 -516 b 76 -374 76 -418 76 -398 b 76 -245 76 -303 76 -245 b 52 -254 76 -245 65 -249 b 19 -263 34 -260 25 -263 b 6 -257 13 -263 10 -261 b 0 -214 0 -251 0 -253 b 0 -200 0 -210 0 -205 b 0 -188 0 -196 0 -192 b 6 -143 0 -147 0 -149 b 46 -126 10 -139 10 -139 l 76 -115 l 76 -5 b 76 106 76 56 76 106 b 51 98 76 106 64 102 b 18 89 34 92 25 89 b 6 95 13 89 10 91 b 0 139 0 101 0 99 b 0 153 0 143 0 148 b 0 179 0 163 0 172 b 44 225 0 215 3 211 l 76 236 l 76 369 b 78 505 76 501 76 502 b 89 517 80 510 85 515 z ',\n },\n vexAccidentalMicrotonal4: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 283 633 b 291 634 286 634 289 634 b 311 621 300 634 308 629 b 313 505 313 618 313 617 b 313 393 313 443 313 393 b 378 425 313 393 343 407 l 443 458 l 448 458 b 449 458 449 458 449 458 b 471 437 462 458 471 448 b 469 429 471 434 470 432 b 387 382 466 421 469 423 l 313 344 l 313 247 l 313 150 l 315 152 b 433 201 353 184 394 201 b 479 193 448 201 464 198 b 549 86 524 177 549 135 b 526 1 549 59 541 29 b 395 -143 504 -39 475 -71 b 316 -214 351 -182 341 -191 b 292 -229 302 -228 300 -229 b 272 -216 283 -229 275 -224 b 271 55 271 -212 271 -212 b 270 323 271 203 270 323 b 205 291 270 323 241 308 l 140 258 l 135 258 b 134 258 135 258 134 258 b 112 279 121 258 112 267 b 114 287 112 281 113 284 b 196 334 117 295 114 293 l 271 371 l 271 495 b 272 621 271 617 271 618 b 283 633 274 626 279 631 z m 404 133 b 391 134 400 134 395 134 b 384 134 388 134 386 134 b 318 88 358 130 335 114 l 313 81 l 313 -37 l 313 -156 l 316 -152 b 439 83 391 -71 439 22 l 439 84 b 404 133 439 115 430 128 z m -8 633 l -8 633 b 0 634 -6 634 -3 634 b 20 621 8 634 17 629 b 21 384 21 618 21 617 l 21 150 l 24 152 b 141 201 62 184 102 201 b 187 193 157 201 172 198 b 257 86 232 177 257 135 b 234 1 257 59 250 29 b 103 -143 212 -39 183 -71 b 24 -214 60 -182 49 -191 b 0 -229 10 -228 8 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 203 l -21 618 l -20 621 b -8 633 -18 626 -13 631 z m 113 133 l 113 133 b 99 134 109 134 103 134 b 93 134 97 134 94 134 b 26 88 66 130 43 114 l 21 81 l 21 -37 l 21 -156 l 25 -152 b 148 83 99 -71 148 22 l 148 84 b 113 133 148 115 138 128 z ',\n },\n vexNoteHeadRectBlack: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 ',\n },\n vexNoteHeadRectWhite: {\n x_min: 0,\n x_max: 430.75,\n ha: 360,\n o: 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 l 50 100 l 380 100 l 380 -100 l 50 -100 l 50 100',\n },\n },\n};\n","export const CustomMetrics = {\n name: 'VexFlowCustom',\n smufl: false,\n glyphs: {},\n};\n","export const GonvilleFont = {\n glyphs: {\n bracketTop: {\n x_min: 0,\n x_max: 559.421875,\n ha: 571,\n o: 'm 544 204 b 548 204 545 204 547 204 b 559 194 555 204 559 199 b 559 190 559 192 559 191 b 530 156 559 188 556 184 b 462 86 510 134 481 104 b 453 76 458 81 454 77 l 446 70 l 441 65 b 434 59 439 63 436 61 l 427 54 b 409 37 426 51 416 44 b 392 23 398 29 394 26 b 387 19 389 22 387 20 b 379 13 386 19 383 16 l 371 8 l 367 5 l 359 -1 l 337 -16 b 285 -48 319 -29 298 -41 l 279 -52 b 186 -95 255 -66 210 -87 l 175 -99 b 23 -129 127 -117 68 -129 b 17 -129 20 -129 19 -129 b 1 -123 2 -129 2 -129 b 0 -49 0 -122 0 -83 b 0 4 0 -22 0 1 b 27 11 2 9 4 9 b 185 31 78 12 145 20 b 198 34 186 31 193 33 b 314 73 234 44 277 58 b 349 88 328 79 340 84 b 353 90 352 90 353 90 b 363 94 353 90 357 93 b 371 98 367 97 371 98 b 428 129 372 98 413 120 b 461 148 441 136 454 144 b 468 151 464 149 466 151 b 472 154 469 152 470 154 b 481 161 473 155 477 158 b 525 190 490 166 518 186 l 534 197 b 540 201 536 198 539 199 b 544 204 541 202 544 204 ',\n },\n bracketBottom: {\n x_min: 0,\n x_max: 559.421875,\n ha: 571,\n o: 'm 5 127 b 14 127 6 127 9 127 b 51 126 25 127 43 127 b 175 98 93 122 138 112 l 186 94 b 279 51 210 86 255 65 b 285 47 280 51 283 48 b 319 27 291 44 311 31 l 326 22 b 359 0 332 19 352 4 l 367 -6 b 371 -9 368 -6 370 -8 l 379 -15 b 387 -22 383 -18 386 -20 l 398 -30 l 411 -40 l 417 -47 l 427 -55 l 434 -61 b 441 -66 436 -62 439 -65 l 446 -72 l 453 -77 l 462 -87 b 558 -188 490 -113 549 -176 b 559 -195 559 -191 559 -194 b 548 -205 559 -201 555 -205 b 541 -204 547 -205 544 -205 b 534 -198 539 -201 536 -199 l 525 -191 b 481 -162 518 -187 490 -167 b 472 -155 477 -159 472 -156 b 468 -152 470 -155 469 -154 b 461 -149 466 -152 464 -151 b 428 -130 454 -145 441 -137 b 371 -99 413 -122 372 -99 b 363 -95 371 -99 367 -98 b 353 -91 357 -94 353 -91 b 348 -90 353 -91 352 -91 b 332 -81 343 -87 341 -86 b 27 -12 230 -37 127 -13 b 0 -5 4 -11 2 -11 b 0 58 0 -2 0 27 b 0 122 0 88 0 120 b 5 127 1 124 4 126 ',\n },\n barlineTick: {\n x_min: -80.3125,\n x_max: 78.9375,\n ha: 81,\n o: 'm 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 ',\n },\n breathMarkTick: {\n x_min: -80.3125,\n x_max: 78.9375,\n ha: 81,\n o: 'm 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 ',\n },\n segno: {\n x_min: -330.75,\n x_max: 329.390625,\n ha: 336,\n o: 'm -133 483 b -117 484 -127 484 -122 484 b 31 373 -51 484 9 440 b 35 348 34 365 35 356 b -25 285 35 313 10 285 b -87 331 -55 285 -76 302 b -167 402 -100 376 -133 402 b -191 398 -175 402 -183 401 b -227 341 -215 388 -227 369 b -225 320 -227 334 -227 327 b -13 74 -209 230 -125 133 b 6 65 -4 70 5 66 l 9 63 l 10 65 b 117 231 12 68 40 112 l 189 341 l 242 424 b 268 460 262 456 264 458 b 283 464 273 463 277 464 b 308 438 296 464 308 453 l 308 437 b 287 396 308 430 308 428 l 95 98 l 59 43 l 58 41 l 65 37 b 253 -156 151 -8 217 -77 b 281 -285 272 -199 281 -244 b 148 -481 281 -381 231 -463 b 115 -485 137 -484 126 -485 b -32 -376 51 -485 -9 -442 b -36 -349 -35 -366 -36 -358 b 25 -287 -36 -315 -12 -287 b 85 -333 54 -287 74 -302 b 166 -403 99 -377 133 -403 b 190 -399 174 -403 182 -402 b 225 -342 215 -390 225 -370 b 224 -322 225 -335 225 -328 b 12 -76 208 -231 125 -134 b -8 -66 2 -72 -6 -68 l -10 -65 l -12 -66 b -118 -231 -13 -68 -42 -113 l -190 -342 l -243 -426 b -269 -462 -264 -458 -265 -458 b -284 -466 -274 -464 -279 -466 b -310 -440 -298 -466 -310 -455 l -310 -438 b -288 -398 -310 -430 -308 -430 l -96 -99 l -59 -44 l -59 -43 l -66 -38 b -281 284 -198 33 -281 158 l -281 284 b -133 483 -281 392 -220 474 m 254 177 b 266 179 258 177 262 179 b 319 149 287 179 307 167 b 329 115 326 140 329 127 b 319 79 329 102 326 90 b 268 51 307 61 287 51 b 221 72 250 51 234 58 b 205 115 210 84 205 99 b 254 177 205 142 223 170 m -281 -54 b -269 -52 -277 -52 -273 -52 b -223 -73 -253 -52 -235 -59 b -206 -116 -212 -84 -206 -101 b -216 -151 -206 -129 -209 -141 b -269 -179 -228 -170 -249 -179 b -314 -159 -285 -179 -302 -173 b -330 -116 -325 -147 -330 -131 b -281 -54 -330 -88 -313 -61 ',\n },\n coda: {\n x_min: -311.6875,\n x_max: 310.328125,\n ha: 317,\n o: 'm -9 388 b -2 390 -8 390 -5 390 b 5 388 1 390 4 390 b 19 378 10 387 16 383 b 23 333 23 371 23 371 b 24 298 23 299 24 298 b 81 276 34 298 65 285 b 213 91 145 240 190 177 b 224 24 217 76 224 36 b 257 24 224 24 235 24 b 299 19 292 24 292 24 b 310 -1 306 15 310 6 b 299 -23 310 -11 306 -19 b 257 -27 292 -27 292 -27 b 224 -29 235 -27 224 -29 b 213 -95 224 -40 217 -80 b 81 -280 190 -181 145 -244 b 24 -301 65 -290 34 -301 b 23 -335 24 -301 23 -303 l 23 -340 b 17 -381 23 -374 23 -374 b -1 -391 13 -388 5 -391 b -21 -381 -9 -391 -17 -388 b -27 -340 -27 -374 -27 -374 l -27 -335 b -28 -301 -27 -303 -27 -301 b -85 -280 -38 -301 -69 -290 b -217 -95 -149 -244 -194 -181 b -228 -29 -221 -80 -228 -40 b -259 -27 -228 -29 -238 -27 b -300 -23 -294 -27 -294 -27 b -311 -2 -307 -19 -311 -11 b -294 23 -311 8 -304 19 b -259 24 -291 23 -284 24 b -228 24 -239 24 -228 24 b -217 91 -228 36 -221 76 b -85 276 -194 177 -149 240 b -28 298 -69 285 -38 298 b -27 333 -27 298 -27 299 b -27 371 -27 362 -27 369 b -9 388 -24 378 -17 385 m -27 136 b -28 247 -27 197 -28 247 b -61 216 -31 247 -53 226 b -123 33 -95 172 -121 98 l -125 24 l -76 24 l -27 24 l -27 136 m 29 242 b 24 247 27 245 24 247 b 23 136 24 247 23 197 l 23 24 l 72 24 l 121 24 l 119 33 b 29 242 115 116 77 206 m -27 -140 l -27 -27 l -76 -27 l -125 -27 l -123 -36 b -61 -220 -121 -102 -95 -176 b -28 -251 -53 -230 -31 -251 b -27 -140 -28 -251 -27 -201 m 119 -36 l 121 -27 l 72 -27 l 23 -27 l 23 -140 b 24 -251 23 -201 24 -251 b 57 -220 27 -251 49 -230 b 119 -36 91 -176 117 -102 ',\n },\n gClef: {\n x_min: -1.359375,\n x_max: 847.96875,\n ha: 865,\n o: 'm 488 1499 b 495 1500 490 1500 492 1500 b 541 1465 507 1500 521 1490 b 679 1078 622 1372 679 1210 b 677 1050 679 1068 677 1060 b 477 642 668 893 604 764 l 443 609 l 431 596 l 431 592 l 438 562 l 449 508 l 460 458 b 481 355 475 390 481 355 b 481 355 481 355 481 355 b 490 356 481 355 485 355 b 528 358 495 356 511 358 b 558 356 540 358 552 356 b 839 95 699 338 808 237 b 847 22 845 72 847 47 b 631 -303 847 -113 766 -242 b 620 -309 623 -308 620 -309 l 620 -310 b 631 -359 620 -310 626 -333 l 646 -435 l 660 -496 b 672 -588 668 -535 672 -563 b 664 -653 672 -610 669 -630 b 383 -875 630 -792 509 -875 b 201 -810 321 -875 257 -855 b 129 -680 151 -768 129 -730 b 274 -530 129 -592 200 -530 b 351 -553 300 -530 326 -538 b 412 -669 393 -582 412 -626 b 287 -805 412 -735 366 -800 l 279 -805 l 285 -809 b 383 -830 318 -823 351 -830 b 586 -718 464 -830 540 -789 b 626 -584 612 -678 626 -631 b 619 -528 626 -566 623 -548 b 612 -495 619 -526 616 -510 b 577 -324 590 -387 577 -324 b 577 -324 577 -324 577 -324 b 568 -326 575 -324 571 -324 b 528 -334 558 -328 537 -333 b 465 -338 506 -337 485 -338 b 24 -11 269 -338 87 -206 b -1 145 8 41 -1 93 b 96 442 -1 249 32 351 b 322 714 166 541 236 626 l 352 745 l 345 782 l 332 843 l 315 921 b 303 984 310 950 304 978 b 295 1082 298 1017 295 1049 b 413 1426 295 1208 336 1329 b 488 1499 436 1456 477 1496 m 549 1301 b 541 1301 547 1301 544 1301 b 411 1207 500 1301 447 1263 b 355 1004 374 1152 355 1079 b 359 942 355 984 356 963 b 371 881 362 927 363 917 l 385 818 b 392 782 389 799 392 784 l 392 782 b 434 828 393 782 424 816 b 607 1165 534 941 594 1060 b 608 1193 608 1175 608 1183 b 597 1270 608 1224 604 1254 b 549 1301 589 1286 571 1299 m 398 528 b 393 555 396 542 393 553 b 392 555 393 555 393 555 b 317 470 390 555 347 505 b 190 298 266 408 212 334 b 127 70 148 227 127 148 b 155 -77 127 19 137 -30 b 468 -303 209 -216 333 -303 b 519 -299 484 -303 502 -302 b 568 -284 541 -295 568 -287 l 568 -284 b 563 -263 568 -284 566 -274 l 534 -120 l 511 -13 l 496 61 l 480 133 b 469 187 472 176 469 187 b 468 188 469 187 469 188 b 416 162 462 188 430 172 b 337 13 364 126 337 69 b 413 -124 337 -40 363 -93 b 428 -144 424 -131 428 -137 b 428 -149 428 -145 428 -148 b 409 -166 426 -161 419 -166 b 394 -162 405 -166 400 -165 b 240 77 302 -122 240 -27 l 240 77 b 430 342 240 197 315 301 l 436 344 l 426 394 l 398 528 m 548 194 b 526 195 540 195 532 195 b 519 195 524 195 521 195 l 514 195 l 518 177 l 539 79 l 552 15 l 566 -48 l 594 -187 l 605 -240 b 612 -266 609 -254 611 -266 b 612 -266 612 -266 612 -266 b 641 -248 613 -266 630 -256 b 744 -98 692 -212 730 -156 b 751 -40 749 -79 751 -59 b 548 194 751 76 665 181 ',\n },\n cClef: {\n x_min: 0,\n x_max: 873.828125,\n ha: 892,\n o: 'm 0 0 l 0 703 l 81 703 l 164 703 l 164 0 l 164 -705 l 81 -705 l 0 -705 l 0 0 m 225 0 l 225 703 l 246 703 l 268 703 l 268 366 l 268 30 l 274 36 b 314 79 284 44 302 63 b 413 302 357 137 392 213 b 432 327 419 324 421 327 b 449 306 443 327 447 322 b 611 115 457 195 529 115 b 651 122 624 115 638 117 b 728 316 705 140 724 188 b 729 388 728 342 729 366 b 671 635 729 533 711 602 b 581 662 649 652 616 662 b 477 637 545 662 510 653 l 475 635 l 477 634 b 503 627 488 632 495 631 b 545 556 532 612 545 584 b 491 480 545 524 526 491 b 465 474 481 476 473 474 b 379 563 417 474 379 516 b 389 602 379 576 382 588 b 541 691 409 641 479 681 b 582 694 555 692 568 694 b 865 462 714 694 834 598 b 873 392 871 440 873 416 b 865 317 873 367 871 341 b 639 84 839 194 748 101 b 612 83 630 83 620 83 b 511 116 577 83 543 94 b 504 120 509 119 506 120 b 504 120 504 120 504 120 b 469 59 504 120 488 93 l 432 -1 l 469 -61 b 504 -122 488 -94 504 -122 b 504 -122 504 -122 504 -122 b 511 -117 506 -122 509 -120 b 612 -84 543 -95 577 -84 b 665 -91 630 -84 647 -87 b 869 -338 771 -122 850 -216 b 873 -392 872 -356 873 -374 b 798 -595 873 -469 847 -539 b 581 -695 741 -662 660 -695 b 406 -626 517 -695 454 -671 b 381 -563 389 -607 381 -585 b 465 -477 381 -519 413 -477 b 545 -559 514 -477 545 -519 b 503 -628 545 -587 532 -613 b 477 -635 495 -632 488 -634 l 475 -637 l 477 -638 b 581 -663 510 -655 545 -663 b 671 -637 616 -663 649 -653 b 729 -391 711 -603 729 -534 b 728 -317 729 -367 728 -344 b 623 -117 722 -173 698 -124 b 611 -116 619 -116 615 -116 b 449 -308 528 -116 457 -198 b 432 -328 447 -323 443 -328 b 413 -303 421 -328 419 -326 b 314 -80 392 -215 357 -138 b 274 -37 302 -65 284 -45 l 268 -31 l 268 -367 l 268 -705 l 246 -705 l 225 -705 l 225 0 ',\n },\n fClef: {\n x_min: -1.359375,\n x_max: 899.703125,\n ha: 918,\n o: 'm 307 349 b 332 351 315 351 323 351 b 443 340 367 351 408 347 b 741 47 607 306 720 195 b 744 0 743 31 744 16 b 660 -303 744 -90 713 -206 b 28 -755 534 -531 304 -695 b 14 -756 23 -755 19 -756 b -1 -741 4 -756 -1 -750 b 21 -720 -1 -731 1 -728 b 567 -56 337 -601 548 -344 b 568 -11 568 -41 568 -24 b 442 285 568 129 525 233 b 325 319 406 308 367 319 b 93 177 232 319 137 266 b 84 154 91 170 84 155 b 84 154 84 154 84 154 b 88 156 84 154 85 155 b 159 177 110 170 134 177 b 257 134 194 177 231 162 b 294 41 281 108 294 73 b 171 -97 294 -24 246 -90 b 156 -98 166 -97 161 -98 b 6 74 73 -98 6 -22 b 6 80 6 76 6 79 b 307 349 10 223 141 340 m 839 215 b 845 216 841 216 842 216 b 862 213 852 216 860 215 b 899 163 887 206 899 184 b 872 117 899 145 890 127 b 847 111 865 112 856 111 b 808 130 833 111 818 117 b 796 162 800 140 796 151 b 839 215 796 187 812 212 m 839 -112 b 845 -112 841 -112 842 -112 b 862 -115 852 -112 860 -113 b 899 -165 887 -122 899 -144 b 872 -210 899 -183 890 -201 b 847 -217 865 -215 856 -217 b 808 -198 833 -217 818 -210 b 796 -165 800 -188 796 -177 b 839 -112 796 -140 812 -116 ',\n },\n unpitchedPercussionClef1: {\n x_min: 0,\n x_max: 464.140625,\n ha: 474,\n o: 'm 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 ',\n },\n '6stringTabClef': {\n x_min: -1.359375,\n x_max: 680.5625,\n ha: 694,\n o: 'm 597 1042 b 604 1042 600 1042 602 1042 b 642 1002 627 1042 642 1022 b 619 966 642 988 635 974 b 439 927 574 942 503 927 l 426 927 l 426 921 b 430 838 428 893 430 866 b 345 480 430 696 398 560 b 179 391 307 423 249 391 b 156 392 171 391 164 392 b 138 394 149 394 142 394 b 103 434 115 396 103 416 b 129 471 103 451 111 466 b 141 474 133 473 137 474 b 172 459 153 474 164 469 b 181 455 175 456 176 455 b 187 456 182 455 185 455 b 253 520 212 460 234 483 b 315 836 294 605 315 714 b 311 928 315 867 314 898 b 302 945 310 943 311 942 b 245 953 283 950 262 953 b 130 891 193 953 149 931 b 84 860 119 870 102 860 b 36 905 61 860 39 877 b 36 910 36 907 36 909 b 80 970 36 931 50 949 b 249 1017 125 1000 187 1017 b 322 1009 273 1017 299 1014 l 341 1003 b 436 991 372 995 406 991 b 577 1031 495 991 545 1004 b 597 1042 583 1038 590 1041 m 416 360 b 424 360 419 360 421 360 b 481 309 454 360 479 338 b 503 145 484 280 495 199 b 585 -185 525 16 555 -106 b 630 -245 596 -213 613 -237 l 634 -247 l 638 -245 b 647 -244 641 -245 645 -244 b 680 -278 666 -244 680 -262 b 664 -308 680 -290 675 -301 b 638 -312 658 -310 650 -312 b 613 -309 631 -312 623 -310 b 477 -201 555 -303 502 -260 b 417 -2 460 -159 434 -72 b 416 5 417 1 416 5 b 416 5 416 5 416 5 b 411 -5 415 5 413 0 b 359 -97 397 -33 377 -70 b 353 -106 355 -102 353 -105 b 359 -112 353 -108 355 -109 b 409 -130 375 -123 390 -129 b 426 -134 420 -130 421 -131 b 431 -147 428 -137 431 -141 b 420 -162 431 -152 427 -159 b 382 -169 409 -166 396 -169 b 323 -155 363 -169 341 -165 l 317 -152 l 314 -155 b 62 -303 240 -240 148 -295 b 36 -305 55 -305 44 -305 b 23 -303 29 -305 24 -305 b -1 -273 6 -299 -1 -287 b 31 -240 -1 -256 10 -240 b 36 -240 32 -240 34 -240 b 42 -241 38 -241 39 -241 b 134 -204 63 -241 99 -226 b 367 288 265 -115 357 81 b 375 330 368 313 370 320 b 416 360 383 347 400 358 m 360 -359 b 379 -359 363 -359 371 -359 b 424 -360 396 -359 416 -359 b 646 -502 536 -373 624 -430 b 649 -527 649 -510 649 -519 b 530 -673 649 -578 604 -635 l 521 -677 l 529 -681 b 653 -811 592 -714 637 -762 b 660 -853 658 -827 660 -839 b 645 -911 660 -873 656 -892 b 426 -1021 608 -981 519 -1021 b 283 -989 377 -1021 328 -1011 b 235 -949 249 -972 239 -964 b 234 -936 234 -946 234 -941 b 234 -928 234 -934 234 -931 l 235 -925 l 234 -927 l 225 -934 b 87 -982 186 -966 138 -982 b 80 -982 85 -982 83 -982 b 55 -981 70 -981 58 -981 b 17 -943 32 -981 17 -964 b 54 -904 17 -921 35 -904 b 78 -914 62 -904 72 -909 l 83 -918 l 88 -918 b 190 -831 122 -918 166 -881 b 269 -506 242 -727 269 -612 b 268 -462 269 -492 269 -477 b 266 -449 266 -458 266 -452 b 265 -444 266 -445 266 -444 b 257 -446 264 -444 261 -445 b 132 -545 196 -470 152 -505 b 88 -573 122 -563 104 -573 b 39 -523 63 -573 39 -553 b 63 -476 39 -505 44 -494 b 360 -359 136 -408 235 -369 m 419 -424 b 393 -423 411 -423 406 -423 l 375 -423 l 377 -426 b 379 -439 377 -427 378 -434 b 383 -510 382 -463 383 -487 b 314 -811 383 -609 360 -710 b 266 -893 296 -850 285 -870 b 264 -898 265 -896 264 -898 l 264 -898 b 264 -898 264 -898 264 -898 b 268 -898 264 -898 266 -898 b 273 -898 270 -898 272 -898 b 300 -909 283 -898 291 -900 b 426 -957 340 -941 385 -957 b 476 -949 443 -957 460 -954 b 547 -853 522 -931 547 -893 b 485 -745 547 -816 526 -775 b 397 -707 460 -727 432 -714 b 366 -675 375 -703 366 -692 b 396 -642 366 -657 377 -645 b 530 -557 455 -637 511 -601 b 536 -527 534 -548 536 -537 b 419 -424 536 -480 490 -437 ',\n },\n timeSig0: {\n x_min: 0,\n x_max: 514.5,\n ha: 525,\n o: 'm 236 648 b 246 648 238 648 242 648 b 288 646 261 648 283 648 b 472 513 364 634 428 587 b 514 347 502 464 514 413 b 462 163 514 272 499 217 b 257 44 409 83 333 44 b 50 163 181 44 103 83 b 0 347 14 217 0 272 b 40 513 0 413 12 464 b 236 648 87 591 155 638 m 277 614 b 253 616 273 616 261 616 b 242 616 247 616 243 616 b 170 499 193 609 181 589 b 159 348 163 446 159 398 b 166 222 159 308 161 266 b 201 91 174 138 183 106 b 257 76 215 81 235 76 b 311 91 277 76 299 81 b 347 222 330 106 338 138 b 353 348 352 266 353 308 b 344 499 353 398 351 446 b 277 614 333 587 322 606 m 257 -1 l 258 -1 l 255 -1 l 257 -1 m 257 673 l 258 673 l 255 673 l 257 673 ',\n },\n timeSig1: {\n x_min: -1.359375,\n x_max: 344.359375,\n ha: 351,\n o: 'm 126 637 l 129 638 l 198 638 l 266 638 l 269 635 b 274 631 272 634 273 632 l 277 627 l 277 395 b 279 156 277 230 277 161 b 329 88 281 123 295 106 b 344 69 341 81 344 79 b 337 55 344 62 343 59 l 333 54 l 197 54 l 61 54 l 58 55 b 50 69 53 59 50 62 b 65 88 50 79 53 81 b 80 97 72 91 74 93 b 117 156 103 113 112 129 b 117 345 117 161 117 222 l 117 528 l 100 503 l 38 406 b 14 383 24 384 23 383 b -1 398 5 383 -1 390 b 4 415 -1 403 1 409 b 16 437 5 416 10 426 l 72 539 l 100 596 b 121 632 119 631 119 631 b 126 637 122 634 125 635 m 171 -1 l 172 -1 l 170 -1 l 171 -1 m 171 673 l 172 673 l 170 673 l 171 673 ',\n },\n timeSig2: {\n x_min: -1.359375,\n x_max: 458.6875,\n ha: 468,\n o: 'm 197 648 b 216 648 201 648 208 648 b 258 646 232 648 253 648 b 419 546 333 637 393 599 b 432 489 428 528 432 509 b 356 342 432 440 405 384 b 235 278 322 313 288 295 b 69 170 166 256 107 217 b 69 169 69 170 69 169 b 69 169 69 169 69 169 b 74 173 69 169 72 170 b 209 222 112 204 163 222 b 310 195 247 222 274 215 b 371 179 332 184 352 179 b 396 181 379 179 387 179 b 428 202 409 184 423 194 b 442 212 431 209 436 212 b 458 197 450 212 458 206 b 441 148 458 190 449 165 b 299 44 409 84 353 44 b 288 45 295 44 292 44 b 250 61 274 45 268 49 b 122 99 212 86 164 99 b 73 91 104 99 88 97 b 28 63 53 84 34 72 b 14 54 25 56 20 54 b 1 62 9 54 4 56 l -1 65 l -1 79 b 0 99 -1 91 0 95 b 2 113 1 102 2 108 b 164 309 20 197 81 272 b 285 470 232 341 277 398 b 287 487 287 476 287 481 b 171 595 287 551 239 595 b 155 595 166 595 160 595 b 142 592 145 594 142 594 b 145 589 142 592 142 591 b 179 527 168 576 179 551 b 132 455 179 496 163 467 b 104 451 122 452 112 451 b 27 530 62 451 27 487 b 29 555 27 538 27 546 b 197 648 44 601 115 639 m 228 -1 l 230 -1 l 227 -1 l 228 -1 m 228 673 l 230 673 l 227 673 l 228 673 ',\n },\n timeSig3: {\n x_min: -1.359375,\n x_max: 409.6875,\n ha: 418,\n o: 'm 174 648 b 191 648 176 648 183 648 b 225 648 204 648 220 648 b 402 523 317 638 389 588 b 404 503 404 517 404 510 b 402 484 404 495 404 488 b 264 373 389 437 334 394 b 257 370 259 371 257 371 b 257 370 257 370 257 370 b 264 369 258 370 261 369 b 409 202 359 334 409 267 b 318 72 409 152 381 104 b 200 43 281 52 240 43 b 23 113 134 43 69 68 b 0 169 6 129 0 149 b 77 249 0 210 29 249 l 77 249 b 152 174 125 249 152 212 b 103 102 152 145 137 116 b 103 102 103 102 103 102 b 147 94 103 101 132 95 b 153 94 149 94 151 94 b 265 206 219 94 265 141 b 264 226 265 213 265 219 b 147 355 253 299 204 353 b 126 371 133 356 126 362 b 147 388 126 383 132 388 b 254 474 196 391 238 424 b 259 502 258 484 259 494 b 182 592 259 544 228 582 b 156 595 175 595 166 595 b 115 592 142 595 129 594 l 111 591 l 115 588 b 152 524 141 574 152 549 b 92 449 152 491 130 458 b 76 448 87 448 81 448 b -1 530 32 448 -1 488 b 20 581 -1 548 5 566 b 174 648 55 619 108 641 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 ',\n },\n timeSig4: {\n x_min: 0,\n x_max: 468.21875,\n ha: 478,\n o: 'm 174 637 b 232 638 175 638 189 638 b 277 638 245 638 259 638 l 378 638 l 381 635 b 389 623 386 632 389 627 b 382 609 389 617 386 613 b 366 589 381 606 372 598 l 313 528 l 245 451 l 209 410 l 155 348 l 84 267 b 59 240 72 252 59 240 b 59 240 59 240 59 240 b 151 238 59 238 68 238 l 242 238 l 242 303 b 243 371 242 369 242 370 b 289 426 245 374 254 385 l 303 441 l 317 456 l 338 483 l 360 506 l 371 520 b 386 527 375 526 381 527 b 400 519 392 527 397 524 b 401 440 401 516 401 514 b 401 377 401 423 401 402 l 401 238 l 426 238 b 453 237 449 238 450 238 b 465 217 461 234 465 226 b 460 202 465 212 464 206 b 426 197 454 197 453 197 l 401 197 l 401 180 b 451 88 402 129 412 109 b 468 69 465 81 468 79 b 461 55 468 62 466 59 l 458 54 l 321 54 l 185 54 l 182 55 b 175 69 176 59 175 62 b 191 88 175 79 176 81 b 240 180 230 109 240 129 l 240 197 l 125 197 b 73 195 104 195 87 195 b 8 197 10 195 9 197 b 0 212 2 199 0 205 b 0 212 0 212 0 212 b 20 242 0 219 0 219 b 163 610 104 344 163 492 b 174 637 163 628 166 634 m 234 -1 l 235 -1 l 232 -1 l 234 -1 m 234 673 l 235 673 l 232 673 l 234 673 ',\n },\n timeSig5: {\n x_min: 0,\n x_max: 409.6875,\n ha: 418,\n o: 'm 47 637 b 53 638 49 638 50 638 b 69 634 55 638 61 637 b 210 610 114 619 161 610 b 363 634 259 610 311 619 b 382 638 372 637 378 638 b 392 634 386 638 389 637 b 397 623 396 630 397 627 b 393 610 397 620 396 616 b 298 505 368 552 338 520 b 212 494 277 498 246 494 b 65 517 163 494 106 502 b 61 517 62 517 61 517 b 61 517 61 517 61 517 b 51 408 61 517 51 412 b 51 408 51 408 51 408 b 51 408 51 408 51 408 b 61 412 53 408 55 409 b 125 434 80 421 103 430 b 185 441 145 440 166 441 b 409 244 310 441 409 353 b 401 191 409 227 406 209 b 197 43 375 105 287 43 b 159 47 183 43 171 44 b 23 123 112 56 61 86 b 0 180 6 140 0 159 b 76 260 0 220 31 260 b 92 259 81 260 87 259 b 152 183 132 251 152 216 b 100 112 152 152 134 122 b 95 111 98 112 95 111 b 95 111 95 111 95 111 b 129 98 95 109 119 101 b 148 97 136 97 141 97 b 264 235 206 97 261 158 b 265 248 265 240 265 244 b 210 398 265 312 243 373 b 179 408 201 406 194 408 b 174 408 178 408 176 408 b 53 369 130 408 88 394 b 34 359 39 359 38 359 b 17 374 24 359 17 365 b 39 628 17 384 38 625 b 47 637 40 631 43 635 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 ',\n },\n timeSig6: {\n x_min: 0,\n x_max: 475.03125,\n ha: 485,\n o: 'm 255 648 b 274 648 259 648 266 648 b 314 646 288 648 307 648 b 450 555 374 637 438 594 b 454 530 453 546 454 538 b 375 451 454 485 416 451 b 328 467 359 451 343 455 b 300 526 310 483 300 503 b 352 598 300 557 319 589 b 356 599 355 598 356 599 b 352 602 356 599 355 601 b 288 616 330 612 308 616 b 210 584 257 616 230 605 b 164 433 189 559 174 508 b 160 374 163 415 160 381 b 160 374 160 374 160 374 b 160 374 160 374 160 374 b 168 377 160 374 164 376 b 258 395 200 390 228 395 b 366 367 294 395 328 387 b 475 223 436 333 475 283 b 472 197 475 215 473 206 b 349 65 462 141 419 95 b 259 43 317 51 288 43 b 167 69 230 43 200 52 b 4 290 80 113 20 195 b 0 349 1 309 0 328 b 20 467 0 391 6 433 b 255 648 58 563 155 637 m 269 363 b 257 363 265 363 261 363 b 210 345 236 363 220 356 b 186 226 196 324 186 272 b 187 198 186 216 186 206 b 213 95 191 151 202 112 b 257 76 221 83 238 76 b 270 77 261 76 266 76 b 321 156 299 81 310 99 b 329 229 326 183 329 206 b 321 301 329 252 326 274 b 269 363 311 342 298 359 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 ',\n },\n timeSig7: {\n x_min: 0,\n x_max: 442.359375,\n ha: 451,\n o: 'm 147 648 b 166 649 153 649 160 649 b 313 598 217 649 273 630 b 340 587 323 588 328 587 l 341 587 b 412 628 367 587 390 601 b 427 638 416 635 421 638 b 439 632 431 638 435 637 b 442 623 441 630 442 628 b 430 569 442 616 439 603 b 352 369 408 492 377 410 b 300 259 325 324 313 298 b 273 84 283 205 273 140 b 265 55 273 65 272 59 l 261 54 l 181 54 l 99 54 l 96 55 b 91 61 95 56 92 59 l 89 63 l 89 77 b 147 263 89 133 111 202 b 261 401 176 313 212 355 b 378 541 315 449 349 489 l 382 548 l 375 544 b 240 495 333 512 285 495 b 129 535 198 495 160 509 b 84 560 108 552 95 560 b 76 559 81 560 78 560 b 31 487 59 555 43 530 b 14 470 27 473 24 470 b 1 477 8 470 4 471 l 0 480 l 0 553 l 0 627 l 1 630 b 16 638 4 635 9 638 b 23 635 17 638 20 637 b 49 626 36 626 39 626 b 96 638 59 626 80 630 b 104 639 99 638 102 639 b 117 644 107 641 112 642 b 147 648 125 645 137 648 m 220 -1 l 221 -1 l 219 -1 l 220 -1 m 220 673 l 221 673 l 219 673 l 220 673 ',\n },\n timeSig8: {\n x_min: 0,\n x_max: 488.640625,\n ha: 499,\n o: 'm 217 648 b 245 649 225 648 235 649 b 453 516 343 649 430 595 b 458 478 455 503 458 491 b 412 370 458 440 441 398 b 411 369 412 369 411 369 b 415 365 411 367 412 367 b 488 231 462 331 488 281 b 472 165 488 208 483 186 b 243 43 434 86 338 43 b 63 104 178 43 112 62 b 0 233 20 140 0 186 b 73 365 0 283 24 331 l 77 369 l 72 374 b 29 476 42 406 29 441 b 217 648 29 557 103 635 m 258 605 b 242 606 253 605 247 606 b 157 552 198 606 157 580 b 160 541 157 548 159 544 b 319 413 176 503 242 452 l 337 403 l 338 406 b 359 476 352 428 359 452 b 258 605 359 537 318 595 m 138 326 b 130 330 134 328 130 330 b 130 330 130 330 130 330 b 107 305 127 330 112 313 b 84 231 91 281 84 256 b 243 86 84 156 151 86 b 249 87 245 86 246 87 b 347 156 303 88 347 120 b 344 172 347 162 345 167 b 156 319 325 227 257 281 b 138 326 151 322 144 324 m 243 -1 l 245 -1 l 242 -1 l 243 -1 m 243 673 l 245 673 l 242 673 l 243 673 ',\n },\n timeSig9: {\n x_min: 0,\n x_max: 475.03125,\n ha: 485,\n o: 'm 191 646 b 212 649 198 648 205 649 b 255 644 227 649 243 646 b 458 448 348 616 428 539 b 475 342 469 415 475 378 b 460 244 475 308 469 274 b 193 44 421 124 303 44 b 91 69 157 44 122 51 b 19 161 43 97 19 126 b 21 181 19 167 20 174 b 98 241 32 220 65 241 b 170 186 129 241 160 223 b 172 166 171 179 172 173 b 121 94 172 134 152 102 b 117 93 118 94 117 93 b 121 90 117 93 118 91 b 185 76 142 80 164 76 b 270 119 220 76 251 91 b 308 259 287 145 300 194 b 313 317 310 277 313 310 b 313 317 313 317 313 317 b 313 317 313 317 313 317 b 304 315 313 317 308 316 b 216 295 273 302 245 295 b 145 308 193 295 170 299 b 19 398 88 327 42 360 b 0 469 5 420 0 444 b 24 551 0 496 8 526 b 191 646 54 596 125 637 m 227 614 b 215 616 224 616 220 616 b 202 614 210 616 206 616 b 152 535 174 610 163 592 b 144 463 147 509 144 485 b 152 391 144 440 147 417 b 216 328 163 344 179 328 b 280 391 253 328 269 344 b 288 463 285 417 288 440 b 280 535 288 485 285 509 b 227 614 269 594 258 610 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 ',\n },\n timeSigCommon: {\n x_min: -1.359375,\n x_max: 556.6875,\n ha: 568,\n o: 'm 294 322 b 318 323 299 322 308 323 b 360 320 334 323 352 322 b 526 217 430 310 490 273 b 543 166 537 202 543 184 b 447 70 543 117 503 70 b 445 70 447 70 446 70 b 359 159 394 72 359 113 b 368 201 359 173 362 187 b 442 245 382 229 412 245 b 455 244 446 245 451 245 b 460 244 458 244 460 244 b 460 244 460 244 460 244 b 454 248 460 244 458 245 b 325 291 417 276 372 291 b 285 287 313 291 299 290 b 144 -2 183 269 144 190 b 281 -290 144 -208 179 -280 b 304 -291 289 -291 298 -291 b 524 -105 412 -291 506 -212 b 541 -84 526 -88 530 -84 b 556 -101 551 -84 556 -90 b 549 -138 556 -111 553 -122 b 334 -322 521 -237 435 -310 b 302 -324 323 -323 313 -324 b 13 -101 172 -324 54 -234 b -1 -1 4 -68 -1 -34 b 294 322 -1 161 121 303 ',\n },\n timeSigCutCommon: {\n x_min: 0,\n x_max: 556.6875,\n ha: 568,\n o: 'm 289 545 b 298 546 292 545 295 546 b 318 533 306 546 315 541 b 319 428 319 530 319 528 l 319 327 l 334 327 b 526 223 412 326 485 285 b 543 172 537 206 543 190 b 447 76 543 122 503 76 b 445 76 446 76 446 76 b 359 165 394 77 359 119 b 368 205 359 179 362 192 b 441 251 382 233 412 251 b 455 249 446 251 451 251 b 460 248 458 249 460 248 b 460 248 460 248 460 248 b 454 254 460 249 458 251 b 334 295 419 280 378 294 l 319 295 l 319 4 l 319 -287 l 321 -285 b 328 -285 322 -285 325 -285 b 524 -99 424 -277 507 -198 b 541 -79 526 -84 530 -79 b 556 -97 551 -79 556 -84 b 548 -133 556 -105 553 -117 b 334 -317 521 -233 434 -306 b 322 -319 329 -317 323 -317 l 319 -319 l 319 -424 b 319 -471 319 -444 319 -459 b 313 -541 319 -544 318 -535 b 298 -548 308 -545 303 -548 b 279 -534 289 -548 281 -542 b 277 -424 277 -531 277 -530 l 277 -317 l 273 -317 b 13 -95 153 -305 51 -217 b 0 2 4 -62 0 -29 b 182 295 0 126 66 238 b 274 324 210 309 249 320 l 277 324 l 277 427 b 279 533 277 528 277 530 b 289 545 281 538 285 542 m 277 2 b 277 291 277 161 277 291 b 268 288 277 291 273 290 b 144 1 179 265 144 184 b 276 -284 144 -199 175 -267 l 277 -285 l 277 2 ',\n },\n timeSigPlus: {\n x_min: 0,\n x_max: 319.859375,\n ha: 326,\n o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ',\n },\n timeSigPlusSmall: {\n x_min: 0,\n x_max: 319.859375,\n ha: 326,\n o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ',\n },\n timeSigMinus: {\n x_min: 0,\n x_max: 318.5,\n ha: 325,\n o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ',\n },\n timeSigParensRight: {\n x_min: 25.859375,\n x_max: 164.6875,\n ha: 168,\n o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ',\n },\n timeSigParensRightSmall: {\n x_min: 25.859375,\n x_max: 164.6875,\n ha: 168,\n o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ',\n },\n timeSigParensLeft: {\n x_min: -166.0625,\n x_max: -25.859375,\n ha: 0,\n o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ',\n },\n timeSigParensLeftSmall: {\n x_min: -166.0625,\n x_max: -25.859375,\n ha: 0,\n o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ',\n },\n noteheadDoubleWhole: {\n x_min: 0,\n x_max: 902.421875,\n ha: 921,\n o: 'm 17 240 b 24 241 19 241 21 241 b 32 240 28 241 31 241 b 46 229 38 238 43 234 b 50 88 50 223 50 237 b 50 -1 50 63 50 34 b 50 -90 50 -36 50 -65 b 46 -231 50 -238 50 -224 b 25 -242 42 -238 34 -242 b 0 -224 14 -242 4 -235 b 0 2 0 -222 0 -108 b 0 223 0 112 0 220 b 17 240 2 230 9 237 m 110 240 b 118 241 111 241 114 241 b 126 240 121 241 123 241 b 142 223 133 237 140 230 b 144 123 144 220 144 205 b 144 29 144 45 144 29 b 144 29 144 29 144 29 b 393 183 166 106 264 167 b 450 186 412 184 431 186 b 756 29 600 186 732 120 b 756 29 756 29 756 29 b 758 123 758 29 758 45 b 760 227 758 226 758 223 b 784 241 766 237 774 241 b 804 229 792 241 800 237 b 809 88 808 223 809 237 l 809 -1 l 809 -90 b 804 -231 809 -238 808 -224 b 784 -242 800 -238 792 -242 b 762 -231 775 -242 766 -238 b 758 -124 756 -224 758 -231 b 756 -30 758 -47 758 -30 b 756 -30 756 -30 756 -30 b 509 -184 736 -108 637 -169 b 450 -187 488 -187 469 -187 b 144 -30 300 -187 168 -122 b 144 -30 144 -30 144 -30 b 144 -124 144 -30 144 -47 b 140 -231 144 -231 144 -224 b 118 -242 134 -238 126 -242 b 92 -224 107 -242 96 -235 b 92 2 92 -222 92 -108 b 92 223 92 112 92 220 b 110 240 95 230 102 237 m 432 161 b 413 162 426 162 420 162 b 313 41 351 162 313 109 b 347 -73 313 5 323 -34 b 487 -163 385 -133 439 -163 b 578 -97 526 -163 562 -142 b 588 -43 585 -80 588 -62 b 432 161 588 47 518 147 m 868 240 b 876 241 869 241 872 241 b 884 240 879 241 882 241 b 898 229 890 238 894 234 b 902 88 902 223 902 237 l 902 -1 l 902 -90 b 898 -231 902 -238 902 -224 b 876 -242 892 -238 884 -242 b 852 -224 865 -242 854 -235 b 850 2 850 -222 850 -108 b 852 223 850 112 850 220 b 868 240 853 230 860 237 ',\n },\n noteheadWhole: {\n x_min: 0,\n x_max: 619.3125,\n ha: 632,\n o: 'm 274 184 b 307 186 285 186 296 186 b 616 22 465 186 597 116 b 619 -1 617 13 619 5 b 308 -187 619 -104 483 -187 b 0 -1 133 -187 0 -102 b 5 36 0 11 1 23 b 274 184 29 115 141 176 m 289 161 b 272 162 284 162 277 162 b 171 41 209 162 171 108 b 205 -73 171 5 182 -34 b 345 -163 243 -133 298 -163 b 436 -98 385 -163 420 -142 b 446 -43 443 -80 446 -62 b 289 161 446 47 377 147 ',\n },\n noteheadHalf: {\n x_min: 0,\n x_max: 428.75,\n ha: 438,\n o: 'm 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 m 366 131 b 352 134 362 133 357 134 b 219 81 321 134 269 115 b 47 -111 126 23 50 -62 b 47 -112 47 -111 47 -112 b 77 -136 47 -129 58 -136 b 264 -45 118 -136 194 -101 b 382 109 336 12 382 76 b 366 131 382 120 377 129 ',\n },\n noteheadBlack: {\n x_min: 0,\n x_max: 428.75,\n ha: 438,\n o: 'm 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 ',\n },\n noteheadXWhole: {\n x_min: 0,\n x_max: 598.890625,\n ha: 611,\n o: 'm 62 181 b 77 183 66 183 72 183 b 91 181 83 183 88 183 b 202 131 100 180 106 177 l 299 87 l 394 131 b 517 183 499 181 502 183 b 519 183 517 183 518 183 b 598 104 567 183 598 144 b 577 49 598 84 592 65 b 518 15 567 38 563 37 b 484 0 499 6 484 0 b 518 -16 484 -1 499 -8 b 577 -51 563 -38 567 -40 b 598 -105 592 -66 598 -86 b 519 -184 598 -145 567 -184 b 517 -184 518 -184 517 -184 b 394 -133 502 -184 499 -183 l 299 -88 l 202 -133 b 81 -184 99 -183 95 -184 b 77 -184 80 -184 78 -184 b 0 -105 29 -184 0 -145 b 20 -51 0 -86 5 -66 b 80 -16 29 -40 34 -38 b 114 -1 98 -8 114 -1 b 80 15 114 0 98 6 b 20 49 34 37 29 38 b 0 104 6 65 0 84 b 62 181 0 140 23 174 m 88 134 b 74 136 85 134 80 136 b 68 134 72 136 69 136 b 46 104 54 130 46 117 b 55 81 46 95 49 88 b 149 34 59 76 53 80 b 224 -1 190 15 224 0 b 144 -38 224 -1 187 -18 b 54 -84 59 -79 58 -79 b 46 -105 49 -90 46 -98 b 76 -137 46 -122 58 -137 b 78 -137 77 -137 77 -137 b 194 -86 87 -137 76 -141 b 298 -36 250 -58 298 -36 b 298 -36 298 -36 298 -36 b 402 -84 299 -36 345 -58 b 518 -137 522 -141 510 -137 b 521 -137 519 -137 519 -137 b 551 -105 539 -137 551 -122 b 541 -83 551 -98 548 -90 b 447 -36 537 -77 544 -81 b 374 -1 406 -16 374 -1 b 447 34 374 0 406 15 b 541 81 544 80 537 76 b 551 104 548 88 551 97 b 521 136 551 120 539 136 b 518 136 519 136 519 136 b 517 136 518 136 517 136 l 517 136 b 402 83 511 136 511 136 b 298 34 345 56 299 34 b 298 34 298 34 298 34 b 194 84 298 34 250 56 b 88 134 137 111 89 133 ',\n },\n noteheadXHalf: {\n x_min: 0,\n x_max: 406.96875,\n ha: 415,\n o: 'm 55 181 b 70 183 61 183 66 183 b 111 170 85 183 99 179 b 160 130 115 167 137 149 l 202 95 l 245 130 b 319 181 299 176 302 179 b 334 183 325 183 330 183 b 406 109 375 183 406 148 b 401 81 406 99 405 91 b 348 24 394 65 390 59 b 318 -1 332 11 318 0 b 348 -26 318 -1 332 -12 b 401 -83 390 -61 394 -66 b 406 -111 405 -93 406 -101 b 334 -184 406 -149 375 -184 b 319 -183 330 -184 325 -184 b 245 -131 302 -180 299 -177 l 202 -97 l 160 -131 b 85 -183 107 -177 103 -180 b 70 -184 80 -184 76 -184 b 0 -111 31 -184 0 -149 b 4 -83 0 -101 1 -93 b 58 -26 10 -66 16 -61 b 88 -1 74 -12 88 -1 b 58 24 88 0 74 11 b 10 69 23 54 17 59 b 0 109 2 81 0 95 b 55 181 0 142 21 173 m 83 133 b 72 136 78 136 76 136 b 57 131 66 136 61 134 b 46 109 49 126 46 117 b 50 93 46 104 47 98 b 107 45 51 91 77 70 b 160 0 137 20 160 0 b 107 -47 160 -1 137 -22 b 50 -94 77 -72 51 -93 b 46 -111 47 -99 46 -105 b 59 -134 46 -120 50 -130 b 72 -137 62 -136 68 -137 b 83 -136 76 -137 80 -136 b 144 -84 84 -134 107 -116 b 202 -36 176 -58 202 -36 b 261 -84 202 -36 230 -58 b 323 -136 299 -116 321 -134 b 334 -137 326 -136 330 -137 b 345 -134 338 -137 343 -136 b 360 -111 355 -130 360 -120 b 355 -94 360 -105 359 -99 b 299 -47 353 -93 329 -72 b 245 0 269 -22 245 -1 b 299 45 245 0 269 20 b 355 93 329 70 353 91 b 360 109 359 98 360 104 b 345 133 360 119 355 129 b 334 136 343 134 338 136 b 323 134 330 136 326 134 b 261 83 321 133 299 115 b 202 34 230 56 202 34 b 144 83 202 34 176 56 b 83 133 106 115 84 133 ',\n },\n noteheadXBlack: {\n x_min: 0,\n x_max: 406.96875,\n ha: 415,\n o: 'm 21 183 b 28 183 24 183 25 183 b 42 181 34 183 39 183 b 127 108 47 179 47 179 b 202 41 168 72 202 41 b 279 108 204 41 238 72 b 357 177 321 145 356 176 b 375 183 363 181 370 183 b 406 151 392 183 406 169 b 404 137 406 147 405 141 b 322 62 401 131 398 129 b 251 0 284 27 251 0 b 322 -63 251 -1 284 -29 b 404 -138 398 -130 401 -133 b 406 -152 405 -142 406 -148 b 375 -184 406 -170 392 -184 b 357 -179 370 -184 363 -183 b 279 -109 356 -177 321 -147 b 202 -43 238 -73 204 -43 b 127 -109 202 -43 168 -73 b 49 -179 85 -147 50 -177 b 31 -184 43 -183 36 -184 b 0 -152 13 -184 0 -170 b 2 -138 0 -148 0 -142 b 83 -63 5 -133 8 -130 b 155 0 122 -29 155 -1 b 83 62 155 0 122 27 b 8 129 43 97 10 127 b 0 151 2 136 0 144 b 21 183 0 165 8 177 ',\n },\n noteheadTriangleUpWhole: {\n x_min: 0,\n x_max: 630.203125,\n ha: 643,\n o: 'm 308 204 b 314 205 310 205 313 205 b 326 201 319 205 323 204 b 355 154 328 199 338 180 b 401 83 362 142 392 95 l 409 72 b 431 41 412 66 424 49 b 619 -174 498 -51 570 -134 b 630 -192 626 -180 630 -186 b 626 -202 630 -195 628 -199 b 616 -206 623 -205 620 -206 b 552 -188 608 -206 592 -202 b 310 -155 488 -169 392 -155 b 268 -156 295 -155 281 -155 b 77 -188 197 -161 126 -173 b 13 -206 35 -202 20 -206 b 9 -206 12 -206 10 -206 b 0 -191 2 -202 0 -197 b 8 -176 0 -186 2 -180 b 204 49 58 -136 138 -43 l 220 72 l 227 83 b 295 188 245 108 281 166 b 308 204 299 197 304 202 m 315 147 b 314 147 315 147 314 147 b 314 147 314 147 314 147 b 306 129 314 145 310 138 l 296 105 b 281 72 292 97 284 77 l 274 56 b 181 -123 247 -4 212 -72 l 174 -134 l 176 -133 b 314 -123 215 -127 272 -123 b 451 -133 356 -123 413 -127 l 454 -134 l 449 -123 b 353 56 417 -72 381 -4 l 347 72 b 332 105 344 77 336 97 l 322 129 b 315 147 318 138 315 145 ',\n },\n noteheadTriangleUpHalf: {\n x_min: 0,\n x_max: 438.28125,\n ha: 447,\n o: 'm 212 205 b 219 205 213 205 216 205 b 239 183 228 205 231 204 b 421 -163 298 40 363 -83 b 438 -191 434 -180 438 -186 b 436 -197 438 -192 438 -195 b 424 -206 434 -204 431 -206 b 406 -201 420 -206 415 -205 b 216 -156 347 -172 281 -156 b 23 -205 148 -156 80 -173 b 14 -206 20 -206 17 -206 b 0 -191 6 -206 0 -201 b 6 -176 0 -187 1 -183 b 202 192 63 -104 142 45 b 212 205 205 199 208 202 m 264 48 l 249 81 l 243 94 l 242 91 b 89 -126 208 36 137 -66 b 81 -138 85 -133 81 -138 b 81 -138 81 -138 81 -138 b 81 -138 81 -138 81 -138 b 95 -133 81 -138 87 -136 b 280 -94 156 -108 221 -94 b 334 -98 299 -94 317 -95 b 343 -99 338 -99 343 -99 b 343 -99 343 -99 343 -99 b 338 -94 343 -99 341 -97 b 264 48 318 -58 287 1 ',\n },\n noteheadTriangleUpBlack: {\n x_min: -1.359375,\n x_max: 436.921875,\n ha: 446,\n o: 'm 213 205 b 217 205 215 205 216 205 b 234 194 224 205 234 199 b 236 187 234 194 235 190 l 245 167 l 261 129 l 270 106 b 355 -61 294 54 329 -13 b 420 -163 381 -105 402 -138 b 436 -188 435 -184 436 -184 b 436 -191 436 -190 436 -190 b 421 -206 436 -201 431 -206 l 421 -206 l 416 -206 l 405 -201 b 217 -158 347 -172 283 -158 b 31 -201 153 -158 88 -172 l 20 -206 l 14 -206 l 14 -206 b 0 -191 5 -206 0 -201 b -1 -188 0 -190 -1 -190 b 14 -163 -1 -186 0 -184 b 95 -34 36 -136 72 -77 b 166 106 119 8 148 68 l 175 129 l 183 148 l 200 188 b 213 205 205 199 208 202 ',\n },\n noteheadDiamondWhole: {\n x_min: 0,\n x_max: 432.828125,\n ha: 442,\n o: 'm 208 184 b 213 187 209 186 212 187 b 224 176 217 187 221 183 b 245 147 225 172 235 159 b 419 -1 288 90 347 38 b 431 -8 424 -4 431 -8 b 432 -12 432 -9 432 -11 b 430 -18 432 -13 432 -16 b 364 -61 424 -20 383 -47 b 225 -183 307 -102 250 -152 b 223 -187 224 -184 223 -187 b 220 -188 221 -188 220 -188 b 208 -176 216 -188 210 -184 b 187 -148 205 -173 197 -159 b 12 0 144 -90 84 -38 b 0 11 4 5 0 8 b 16 24 0 13 4 18 b 183 158 83 69 141 115 b 208 184 194 169 198 173 m 183 105 b 176 113 181 109 176 113 b 172 109 176 113 175 112 b 92 45 149 90 117 62 l 88 41 l 102 31 b 247 -105 160 -6 210 -55 l 254 -115 l 257 -112 l 269 -102 b 340 -45 287 -87 319 -61 l 344 -43 l 330 -33 b 183 105 272 6 221 54 ',\n },\n noteheadDiamondHalf: {\n x_min: 0,\n x_max: 438.28125,\n ha: 447,\n o: 'm 212 190 b 219 191 213 191 216 191 b 236 176 225 191 228 190 b 419 18 277 105 341 49 b 436 5 431 13 434 11 b 438 -1 438 4 438 1 b 424 -16 438 -8 432 -13 b 356 -49 409 -20 379 -36 b 234 -180 306 -83 258 -133 b 219 -192 230 -188 224 -192 b 200 -176 213 -192 206 -187 b 9 -15 157 -102 89 -45 b 0 0 2 -12 0 -6 b 16 18 0 9 2 12 b 200 176 93 48 159 104 b 212 190 205 186 208 188 m 239 113 b 236 117 238 116 238 117 b 230 108 235 117 234 115 b 92 -15 196 58 140 8 b 88 -18 91 -16 88 -18 b 92 -20 88 -18 91 -19 b 198 -116 130 -43 166 -74 b 200 -117 200 -117 200 -117 b 201 -117 200 -117 201 -117 b 264 -43 212 -98 242 -62 b 345 15 288 -19 321 4 b 348 18 347 16 348 16 b 344 20 348 18 347 19 b 239 113 307 41 266 79 ',\n },\n noteheadDiamondBlack: {\n x_min: 0,\n x_max: 432.828125,\n ha: 442,\n o: 'm 209 186 b 213 187 210 187 212 187 b 216 187 215 187 216 187 b 224 174 216 186 220 180 b 420 -1 269 105 338 43 b 432 -12 431 -8 432 -9 b 421 -23 432 -15 432 -16 b 228 -180 345 -70 264 -137 b 219 -188 221 -188 221 -188 l 219 -188 b 208 -177 215 -188 215 -188 b 10 1 163 -106 93 -44 b 0 11 0 6 0 8 b 10 22 0 13 0 15 b 202 179 87 69 167 136 b 209 186 206 183 209 186 ',\n },\n augmentationDot: {\n x_min: 0,\n x_max: 133.390625,\n ha: 136,\n o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ',\n },\n tremolo1: {\n x_min: -206.890625,\n x_max: 428.75,\n ha: 438,\n o: 'm 389 -351 b 394 -351 390 -351 393 -351 b 428 -385 413 -351 428 -367 b 428 -394 428 -388 428 -391 b 394 -428 426 -406 421 -410 l 332 -473 l 269 -516 l 205 -560 l 141 -603 l 77 -648 l 13 -692 l -50 -737 l -114 -780 l -145 -802 b -171 -813 -157 -810 -163 -813 b -175 -813 -172 -813 -174 -813 b -206 -777 -194 -811 -206 -795 b -202 -760 -206 -771 -205 -766 b -87 -675 -197 -752 -206 -757 l -34 -639 l 83 -557 l 145 -514 l 209 -470 l 272 -427 b 389 -351 375 -356 381 -352 ',\n },\n flag8thUp: {\n x_min: -24.5,\n x_max: 317.140625,\n ha: 324,\n o: 'm -24 -161 l -24 -5 l -20 -5 b 0 -24 -9 -5 -2 -12 b 171 -315 21 -124 84 -233 b 317 -660 268 -406 317 -531 b 187 -1014 317 -782 274 -909 b 161 -1034 172 -1034 171 -1034 b 141 -1013 149 -1034 141 -1025 b 152 -991 141 -1004 142 -1002 b 266 -682 228 -899 266 -788 b 174 -430 266 -588 236 -498 b -23 -317 136 -388 66 -348 b -24 -161 -23 -316 -24 -285 ',\n },\n flag8thDown: {\n x_min: -21.78125,\n x_max: 367.5,\n ha: 375,\n o: 'm 230 1031 b 238 1032 232 1032 235 1032 b 259 1014 245 1032 251 1027 b 367 662 330 906 367 782 b 364 602 367 641 367 621 b 232 317 352 488 304 384 b 57 120 155 245 103 187 b -1 18 31 84 6 40 b -19 4 -4 11 -12 4 l -21 4 l -21 159 l -21 315 l -16 315 b 96 335 10 315 62 324 b 315 695 227 380 315 527 b 313 738 315 709 314 724 b 224 991 304 825 273 916 b 216 1013 219 999 216 1007 b 230 1031 216 1021 220 1028 ',\n },\n flag16thUp: {\n x_min: -24.5,\n x_max: 317.140625,\n ha: 324,\n o: 'm -24 -147 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 58 -123 6 -43 31 -86 b 196 -278 93 -173 134 -219 b 317 -570 274 -356 317 -460 b 294 -713 317 -617 308 -666 l 289 -724 l 294 -735 b 317 -873 308 -780 317 -827 b 235 -1132 317 -963 288 -1054 b 209 -1165 228 -1140 224 -1146 b 189 -1177 204 -1172 196 -1177 b 171 -1164 182 -1177 175 -1172 b 168 -1154 170 -1161 168 -1159 b 181 -1132 168 -1149 172 -1142 b 269 -891 238 -1064 269 -975 b 269 -881 269 -886 269 -884 b 262 -814 269 -857 265 -827 b 258 -800 261 -811 259 -806 b 142 -628 240 -731 198 -667 b -8 -589 112 -606 47 -589 b -20 -589 -13 -589 -19 -589 l -24 -589 l -24 -449 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 58 -424 6 -345 31 -388 b 194 -580 93 -476 136 -523 b 259 -660 221 -606 245 -635 b 261 -663 259 -662 261 -663 b 264 -656 262 -663 262 -660 b 269 -587 268 -632 269 -610 b 264 -521 269 -566 268 -544 b 262 -512 264 -517 262 -513 b 258 -498 261 -509 259 -503 b 142 -326 240 -428 198 -365 b -8 -287 112 -303 47 -288 b -20 -287 -13 -287 -19 -287 l -24 -287 l -24 -147 ',\n },\n flag16thDown: {\n x_min: -21.78125,\n x_max: 362.0625,\n ha: 369,\n o: 'm 302 1031 b 308 1032 304 1032 307 1032 b 330 1016 318 1032 325 1027 b 362 867 351 970 362 920 b 340 738 362 824 353 780 l 336 727 l 340 717 b 362 591 355 677 362 634 b 257 323 362 496 325 401 b 204 272 243 306 227 290 b 20 56 129 206 66 133 b -1 18 12 44 0 22 b -19 4 -4 9 -12 4 l -21 4 l -21 140 l -21 276 l -12 277 b 167 333 61 288 127 309 b 319 598 262 388 319 491 b 311 664 319 620 317 642 l 310 673 l 304 664 b 204 548 279 620 250 587 b 20 333 129 483 66 409 b -1 292 12 320 0 298 b -19 280 -4 285 -12 280 l -21 280 l -21 416 l -21 552 l -12 553 b 167 609 61 564 127 585 b 319 874 264 666 319 770 b 294 992 319 914 311 954 b 288 1011 288 1004 288 1007 b 302 1031 288 1021 294 1028 ',\n },\n flag32ndUp: {\n x_min: -24.5,\n x_max: 315.78125,\n ha: 322,\n o: 'm -24 -145 l -24 -5 l -20 -5 b 1 -26 -10 -5 -6 -9 b 175 -241 31 -86 96 -166 b 314 -548 259 -323 304 -420 b 315 -589 315 -555 315 -571 b 314 -630 315 -606 315 -623 b 298 -730 311 -664 306 -699 l 295 -742 l 296 -748 b 314 -850 304 -778 311 -813 b 315 -892 315 -857 315 -874 b 314 -932 315 -909 315 -925 b 298 -1032 311 -967 306 -1002 l 295 -1045 l 296 -1050 b 314 -1153 304 -1081 311 -1115 b 315 -1193 315 -1160 315 -1177 b 314 -1235 315 -1211 315 -1228 b 217 -1526 306 -1338 270 -1444 b 201 -1533 213 -1532 208 -1533 b 182 -1522 193 -1533 185 -1529 b 179 -1514 181 -1518 179 -1517 b 189 -1489 179 -1508 182 -1501 b 266 -1217 240 -1403 266 -1308 b 262 -1156 266 -1196 265 -1177 b 110 -907 247 -1043 190 -950 b 0 -889 87 -895 50 -889 l -1 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 1 -631 -10 -610 -6 -614 b 175 -846 31 -691 96 -771 b 259 -956 213 -884 236 -914 b 265 -966 262 -961 264 -966 b 265 -966 265 -966 265 -966 b 265 -953 265 -964 265 -959 b 266 -920 266 -943 266 -932 b 262 -853 266 -898 265 -873 b 110 -605 247 -741 190 -648 b 0 -587 87 -592 50 -587 l -1 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 1 -328 -10 -308 -6 -312 b 175 -544 31 -388 96 -469 b 259 -655 213 -581 236 -612 b 265 -663 262 -659 264 -663 b 265 -663 265 -663 265 -663 b 265 -650 265 -663 265 -657 b 266 -617 266 -641 266 -630 b 262 -551 266 -595 265 -570 b 110 -303 247 -438 190 -345 b 0 -284 87 -290 50 -284 l -1 -284 l -24 -284 l -24 -145 ',\n },\n flag32ndDown: {\n x_min: -21.78125,\n x_max: 366.140625,\n ha: 374,\n o: 'm 276 1378 b 284 1379 279 1379 281 1379 b 306 1360 292 1379 298 1374 b 352 1247 326 1326 343 1286 b 366 1139 362 1213 366 1175 b 347 1009 366 1093 359 1049 l 344 1002 l 347 992 b 352 971 348 986 351 977 b 366 863 362 936 366 899 b 347 732 366 818 359 773 l 344 725 l 347 716 b 352 695 348 710 351 700 b 366 588 362 659 366 623 b 223 262 366 464 314 345 b 189 233 212 252 212 252 b 35 76 126 183 73 129 b -1 16 20 56 2 27 b -19 4 -4 9 -12 4 l -21 4 l -21 137 l -21 270 l -17 270 b 186 344 59 281 134 308 b 319 606 270 399 319 499 b 317 650 319 620 319 635 l 315 659 l 314 655 b 223 537 288 607 258 570 b 189 509 212 528 212 528 b 35 352 126 459 73 405 b -1 292 20 333 2 303 b -19 280 -4 285 -12 280 l -21 280 l -21 413 l -21 546 l -17 546 b 186 620 59 557 134 584 b 319 882 270 675 319 775 b 317 925 319 896 319 911 l 315 935 l 314 931 b 223 813 288 884 258 846 b 189 785 212 805 212 805 b 35 628 126 735 73 681 b -1 569 20 609 2 580 b -19 556 -4 562 -12 556 l -21 556 l -21 689 l -21 823 l -17 823 b 202 907 68 835 152 867 b 319 1157 280 968 319 1061 b 270 1338 319 1218 303 1281 b 262 1358 264 1349 262 1353 b 262 1364 262 1360 262 1363 b 276 1378 265 1371 269 1376 ',\n },\n flag64thUp: {\n x_min: -24.5,\n x_max: 314.421875,\n ha: 321,\n o: 'm -24 -145 l -24 -5 l -20 -5 b 0 -23 -9 -5 -2 -12 b 27 -87 4 -38 14 -66 b 138 -220 53 -136 88 -177 b 235 -328 179 -255 208 -288 b 314 -592 287 -409 314 -501 b 292 -732 314 -639 307 -687 l 289 -742 l 294 -756 b 314 -896 307 -802 314 -849 b 292 -1035 314 -943 307 -991 l 289 -1045 l 294 -1057 b 314 -1197 307 -1104 314 -1152 b 292 -1338 314 -1246 307 -1292 l 289 -1347 l 294 -1360 b 314 -1500 307 -1407 314 -1454 b 273 -1689 314 -1565 300 -1628 b 250 -1712 265 -1710 261 -1712 b 228 -1691 236 -1712 228 -1704 l 228 -1685 l 234 -1675 b 270 -1507 258 -1621 270 -1564 b 98 -1193 270 -1381 209 -1261 b 40 -1174 76 -1179 58 -1174 b -10 -1189 24 -1174 8 -1178 b -20 -1192 -14 -1192 -16 -1192 l -24 -1192 l -24 -1052 l -24 -913 l -20 -913 b 0 -931 -9 -913 -2 -920 b 27 -995 4 -946 14 -974 b 138 -1128 53 -1043 88 -1085 b 257 -1275 190 -1172 228 -1220 b 262 -1283 259 -1279 262 -1283 l 262 -1283 b 269 -1249 264 -1282 268 -1260 b 270 -1206 270 -1233 270 -1220 b 98 -891 270 -1075 206 -957 b 40 -871 76 -877 58 -871 b -10 -886 24 -871 8 -875 b -20 -889 -14 -889 -16 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 0 -628 -9 -610 -2 -617 b 27 -692 4 -644 14 -671 b 138 -825 53 -741 88 -782 b 257 -973 190 -870 228 -917 b 262 -981 259 -977 262 -981 l 262 -981 b 269 -946 264 -979 268 -957 b 270 -903 270 -931 270 -917 b 98 -588 270 -774 206 -655 b 40 -569 76 -574 58 -569 b -10 -584 24 -569 8 -574 b -20 -587 -14 -587 -16 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 0 -326 -9 -308 -2 -315 b 27 -390 4 -341 14 -369 b 138 -523 53 -438 88 -480 b 257 -670 190 -567 228 -614 b 262 -678 259 -674 262 -678 b 262 -678 262 -678 262 -678 b 269 -644 264 -677 268 -656 b 270 -601 270 -628 270 -614 b 98 -285 270 -471 206 -352 b 40 -266 76 -273 58 -266 b -10 -281 24 -266 8 -272 b -20 -284 -14 -284 -16 -284 l -24 -284 l -24 -145 ',\n },\n flag64thDown: {\n x_min: -21.78125,\n x_max: 367.5,\n ha: 375,\n o: 'm 259 1553 b 265 1553 261 1553 264 1553 b 288 1540 272 1553 277 1550 b 367 1351 340 1493 367 1424 b 336 1221 367 1308 357 1263 l 332 1211 l 333 1208 b 367 1077 356 1170 367 1124 b 336 945 367 1032 357 986 l 332 935 l 333 932 b 367 800 356 893 367 848 b 336 669 367 756 357 710 l 332 659 l 333 656 b 367 523 356 617 367 571 b 345 412 367 485 360 446 b 231 273 322 356 284 310 b -1 19 121 195 27 93 b -17 4 -4 11 -10 5 l -21 4 l -21 134 l -21 265 l -17 265 b 133 291 20 265 96 278 b 318 537 245 328 318 433 b 307 603 318 559 315 582 b 303 614 304 612 304 614 b 298 609 302 614 300 613 b 231 549 281 589 258 567 b -1 295 121 471 27 369 b -17 280 -4 287 -10 281 l -21 280 l -21 410 l -21 541 l -17 541 b 133 567 20 541 96 555 b 318 813 245 605 318 709 b 307 880 318 835 315 859 b 303 891 304 888 304 891 b 298 885 302 891 300 888 b 231 825 281 866 258 843 b -1 571 121 748 27 645 b -17 556 -4 563 -10 557 l -21 556 l -21 687 l -21 817 l -17 817 b 133 843 20 817 96 830 b 318 1089 245 881 318 985 b 307 1156 318 1111 315 1134 b 303 1167 304 1164 304 1167 b 298 1161 302 1167 300 1164 b 231 1102 281 1140 258 1120 b -1 848 121 1024 27 921 b -17 832 -4 839 -10 834 l -21 832 l -21 963 l -21 1093 l -17 1093 b 114 1113 12 1093 78 1103 b 313 1314 215 1142 289 1218 b 318 1364 317 1331 318 1347 b 255 1511 318 1422 295 1478 b 243 1532 247 1519 243 1525 b 259 1553 243 1540 250 1550 ',\n },\n flag128thUp: {\n x_min: -24.5,\n x_max: 313.0625,\n ha: 319,\n o: 'm -24 -133 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 142 -213 13 -61 74 -144 b 258 -376 196 -269 230 -315 b 313 -605 295 -449 313 -528 b 292 -742 313 -652 306 -699 b 288 -752 289 -748 288 -752 b 288 -752 288 -752 288 -752 b 292 -764 289 -753 291 -757 b 313 -907 306 -811 313 -860 b 292 -1045 313 -954 306 -1002 b 288 -1054 289 -1050 288 -1054 b 288 -1054 288 -1054 288 -1054 b 292 -1067 289 -1054 291 -1060 b 313 -1210 306 -1113 313 -1161 b 292 -1346 313 -1257 306 -1304 b 288 -1357 289 -1353 288 -1357 b 288 -1357 288 -1357 288 -1357 b 292 -1368 289 -1357 291 -1363 b 313 -1512 306 -1415 313 -1464 b 292 -1648 313 -1560 306 -1605 b 288 -1660 289 -1654 288 -1660 b 288 -1660 288 -1660 288 -1660 b 292 -1671 289 -1660 291 -1665 b 313 -1814 306 -1719 313 -1766 b 250 -2040 313 -1897 291 -1977 b 232 -2062 238 -2057 236 -2059 b 221 -2065 230 -2063 225 -2065 b 200 -2045 210 -2065 201 -2057 b 200 -2043 200 -2044 200 -2044 b 208 -2026 200 -2037 202 -2034 b 269 -1826 249 -1966 269 -1897 b 153 -1544 269 -1726 230 -1625 b -9 -1472 115 -1506 58 -1481 b -21 -1471 -14 -1471 -19 -1471 l -24 -1471 l -24 -1343 l -24 -1215 l -20 -1215 b -1 -1229 -12 -1215 -4 -1221 b 142 -1424 13 -1270 74 -1353 b 257 -1582 196 -1478 228 -1524 b 264 -1594 261 -1589 264 -1594 l 264 -1594 b 265 -1582 264 -1594 264 -1589 b 270 -1525 268 -1562 270 -1544 b 153 -1243 270 -1424 228 -1321 b -9 -1170 115 -1203 58 -1178 b -21 -1168 -14 -1170 -19 -1168 l -24 -1168 l -24 -1041 l -24 -913 l -20 -913 b -1 -927 -12 -913 -4 -918 b 142 -1121 13 -967 74 -1050 b 257 -1281 196 -1175 228 -1221 b 264 -1292 261 -1286 264 -1292 l 264 -1292 b 265 -1279 264 -1292 264 -1286 b 270 -1222 268 -1261 270 -1242 b 153 -941 270 -1121 228 -1018 b -9 -867 115 -900 58 -875 b -21 -866 -14 -867 -19 -866 l -24 -866 l -24 -738 l -24 -610 l -20 -610 b -1 -624 -12 -610 -4 -616 b 142 -818 13 -664 74 -749 b 257 -978 196 -873 228 -918 b 264 -989 261 -984 264 -989 l 264 -989 b 265 -977 264 -989 264 -984 b 270 -920 268 -959 270 -939 b 153 -638 270 -818 228 -716 b -9 -564 115 -598 58 -573 b -21 -563 -14 -564 -19 -563 l -24 -563 l -24 -435 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 142 -516 13 -363 74 -446 b 257 -675 196 -571 228 -616 b 264 -687 261 -681 264 -687 l 264 -687 b 265 -674 264 -687 264 -681 b 270 -617 268 -656 270 -637 b 153 -335 270 -516 228 -413 b -9 -262 115 -295 58 -270 b -21 -260 -14 -262 -19 -260 l -24 -260 l -24 -133 ',\n },\n flag128thDown: {\n x_min: -21.78125,\n x_max: 367.5,\n ha: 375,\n o: 'm 276 1900 b 284 1901 279 1900 281 1901 b 306 1883 291 1901 298 1896 b 367 1686 347 1825 367 1757 b 343 1558 367 1643 359 1600 l 338 1549 l 343 1537 b 367 1411 359 1497 367 1454 b 343 1282 367 1367 359 1324 l 338 1272 l 343 1261 b 367 1135 359 1221 367 1178 b 343 1007 367 1090 359 1047 l 338 996 l 343 985 b 367 859 359 945 367 902 b 343 731 367 814 359 771 l 338 720 l 343 709 b 367 582 359 667 367 626 b 289 362 367 503 340 426 b 239 312 276 345 259 330 b 29 77 152 237 76 152 b -1 18 14 54 2 30 b -19 4 -4 11 -12 4 l -21 4 l -21 133 l -20 260 l -13 262 b 98 299 17 269 62 284 b 111 305 103 302 110 305 b 167 334 123 310 156 327 b 319 595 264 391 319 491 b 313 659 319 616 318 638 b 310 667 311 664 311 667 b 307 663 310 667 308 666 b 240 588 289 637 269 614 b 16 331 141 505 62 413 b -1 294 8 316 1 302 b -19 280 -4 287 -12 280 l -21 280 l -21 408 l -20 537 l -13 538 b 98 576 17 545 62 560 b 111 581 103 578 110 581 b 167 610 123 587 156 603 b 319 871 264 667 319 767 b 313 935 319 892 318 913 b 310 942 311 941 311 942 b 307 939 310 942 308 941 b 240 864 289 913 269 889 b 16 607 141 781 62 689 b -1 570 8 592 1 578 b -19 556 -4 563 -12 556 l -21 556 l -21 684 l -20 813 l -13 814 b 98 852 17 821 62 836 b 111 857 103 855 110 857 b 167 886 123 863 156 880 b 319 1147 264 943 319 1043 b 313 1211 319 1168 318 1189 b 310 1218 311 1217 311 1218 b 307 1215 310 1218 308 1217 b 240 1140 289 1188 269 1165 b 16 884 141 1057 62 966 b -1 846 8 868 1 855 b -19 832 -4 839 -12 832 l -21 832 l -21 960 l -20 1089 l -13 1090 b 98 1128 17 1097 62 1111 b 111 1134 103 1131 110 1134 b 167 1163 123 1139 156 1156 b 319 1424 264 1220 319 1320 b 313 1486 319 1444 318 1465 b 310 1494 311 1493 311 1494 b 307 1492 310 1494 308 1493 b 240 1417 289 1464 269 1442 b 16 1160 141 1333 62 1242 b -1 1121 8 1145 1 1131 b -19 1109 -4 1115 -12 1109 l -21 1109 l -21 1236 l -20 1365 l -13 1367 b 98 1404 17 1374 62 1388 b 111 1410 103 1407 110 1410 b 250 1508 172 1437 215 1467 b 319 1701 296 1564 319 1633 b 270 1859 319 1757 303 1814 b 262 1882 265 1868 262 1875 b 276 1900 262 1890 266 1896 ',\n },\n accidentalFlat: {\n x_min: -21.78125,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalNatural: {\n x_min: 0,\n x_max: 239.5625,\n ha: 244,\n o: 'm 10 460 b 20 462 13 462 14 462 b 39 449 28 462 35 458 l 40 446 l 40 326 b 40 205 40 259 40 205 b 127 227 40 205 80 215 b 220 249 196 244 213 249 b 227 247 224 249 225 248 b 238 237 231 245 235 241 l 239 233 l 239 -106 l 239 -448 l 238 -451 b 219 -463 234 -459 225 -463 b 198 -451 210 -463 202 -459 l 197 -448 l 197 -324 b 197 -201 197 -248 197 -201 b 110 -223 196 -201 157 -210 b 17 -245 42 -240 24 -245 b 10 -242 13 -245 13 -244 b 0 -233 6 -241 2 -237 l 0 -230 l 0 108 l 0 446 l 0 449 b 10 460 2 453 6 458 m 197 22 b 197 70 197 41 197 58 b 196 116 197 113 197 116 l 196 116 b 118 97 196 116 160 106 l 40 77 l 40 -18 b 40 -112 40 -69 40 -112 l 119 -93 l 197 -73 l 197 22 ',\n },\n accidentalSharp: {\n x_min: 0,\n x_max: 323.9375,\n ha: 331,\n o: 'm 217 535 b 225 537 220 537 221 537 b 245 524 235 537 242 533 l 246 521 l 247 390 l 247 258 l 273 265 b 306 270 288 269 299 270 b 322 259 315 270 319 267 b 323 208 323 256 323 233 b 322 158 323 184 323 159 b 288 140 318 148 315 147 b 247 130 254 131 247 130 b 247 65 247 130 247 104 b 247 20 247 51 247 36 l 247 -88 l 273 -81 b 306 -76 289 -77 299 -76 b 318 -81 311 -76 315 -77 b 323 -123 323 -87 323 -86 l 323 -138 l 323 -154 b 318 -195 323 -191 323 -190 b 269 -210 314 -199 315 -199 b 249 -216 259 -213 250 -216 l 247 -216 l 247 -349 l 246 -483 l 245 -487 b 225 -499 242 -495 234 -499 b 206 -487 219 -499 210 -495 l 205 -483 l 205 -355 l 205 -227 l 204 -227 l 181 -233 l 138 -244 b 117 -249 127 -247 117 -249 b 115 -385 115 -249 115 -256 l 115 -523 l 114 -526 b 95 -538 110 -534 102 -538 b 74 -526 87 -538 78 -534 l 73 -523 l 73 -391 b 72 -260 73 -269 73 -260 b 72 -260 72 -260 72 -260 b 19 -273 61 -263 23 -273 b 0 -260 10 -273 4 -267 b 0 -209 0 -256 0 -256 l 0 -162 l 1 -158 b 61 -134 5 -148 5 -148 l 73 -131 l 73 -22 b 72 86 73 79 73 86 b 72 86 72 86 72 86 b 19 74 61 83 23 74 b 0 86 10 74 4 79 b 0 137 0 90 0 90 l 0 184 l 1 188 b 61 212 5 198 5 198 l 73 215 l 73 348 l 73 481 l 74 485 b 95 498 78 492 87 498 b 103 495 98 498 100 496 b 114 485 107 494 111 489 l 115 481 l 115 353 l 115 226 l 121 226 b 159 235 123 227 141 231 l 198 247 l 205 248 l 205 384 l 205 521 l 206 524 b 217 535 209 528 212 533 m 205 9 b 205 119 205 70 205 119 l 205 119 b 182 113 204 119 194 116 l 138 102 b 117 97 127 99 117 97 b 115 -12 115 97 115 91 l 115 -122 l 121 -120 b 159 -111 123 -119 141 -115 l 198 -101 l 205 -98 l 205 9 ',\n },\n accidentalDoubleSharp: {\n x_min: 0,\n x_max: 367.5,\n ha: 375,\n o: 'm 0 124 l 0 187 l 61 187 l 122 187 l 122 138 l 122 91 l 153 61 l 183 30 l 213 61 l 243 91 l 243 138 l 243 187 l 306 187 l 367 187 l 367 124 l 367 61 l 321 61 l 274 61 l 243 30 l 213 0 l 243 -31 l 274 -62 l 321 -62 l 367 -62 l 367 -124 l 367 -188 l 306 -188 l 243 -188 l 243 -140 l 243 -93 l 213 -62 l 183 -31 l 153 -62 l 122 -93 l 122 -140 l 122 -188 l 61 -188 l 0 -188 l 0 -124 l 0 -62 l 46 -62 l 92 -62 l 123 -31 l 153 0 l 123 30 l 92 61 l 46 61 l 0 61 l 0 124 ',\n },\n accidentalDoubleFlat: {\n x_min: -21.78125,\n x_max: 483.1875,\n ha: 493,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 179 164 199 187 192 l 210 176 l 210 396 l 210 617 l 212 621 b 231 632 216 628 223 632 b 250 620 239 632 247 628 b 251 383 251 616 251 616 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 ',\n },\n accidentalParensLeft: {\n x_min: -166.0625,\n x_max: -25.859375,\n ha: 0,\n o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ',\n },\n accidentalParensRight: {\n x_min: 25.859375,\n x_max: 164.6875,\n ha: 168,\n o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ',\n },\n accidentalQuarterToneFlatStein: {\n x_min: 0,\n x_max: 272.21875,\n ha: 278,\n o: 'm 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 ',\n },\n accidentalThreeQuarterTonesFlatZimmermann: {\n x_min: 0,\n x_max: 607.0625,\n ha: 619,\n o: 'm 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 m 347 631 b 353 632 348 632 351 632 b 374 620 363 632 371 628 b 375 383 375 616 375 616 l 375 148 l 377 151 b 492 199 415 183 454 199 b 537 191 507 199 522 197 b 607 84 582 176 607 134 b 583 0 607 58 598 29 b 455 -142 562 -40 533 -72 l 378 -215 b 355 -229 364 -229 362 -229 b 334 -216 345 -229 337 -224 l 333 -212 l 333 201 l 333 616 l 334 620 b 347 631 337 624 341 630 m 465 131 b 451 133 461 133 455 133 b 445 133 449 133 446 133 b 379 87 419 129 396 113 l 375 80 l 375 -37 l 375 -156 l 378 -152 b 499 81 451 -72 499 20 l 499 83 b 465 131 499 113 490 126 ',\n },\n accidentalQuarterToneSharpStein: {\n x_min: 0,\n x_max: 193.28125,\n ha: 197,\n o: 'm 85 514 b 95 517 88 517 89 517 b 114 505 103 517 110 513 l 115 502 l 115 376 b 115 249 115 306 115 249 b 141 258 117 249 127 252 l 167 266 l 172 266 b 190 254 181 265 187 262 l 193 251 l 193 202 l 193 188 b 187 147 193 149 191 152 b 147 130 183 142 182 141 l 115 119 l 115 9 b 115 -99 115 -51 115 -99 b 141 -91 115 -99 127 -95 b 171 -81 166 -81 167 -81 l 171 -81 b 191 -94 181 -81 189 -87 b 193 -142 191 -97 193 -120 b 191 -195 193 -167 191 -194 b 125 -227 187 -205 187 -204 l 115 -230 l 115 -366 l 115 -503 l 114 -506 b 95 -519 110 -514 102 -519 b 74 -506 87 -519 78 -514 l 73 -503 l 73 -374 b 73 -245 73 -260 73 -245 b 73 -245 73 -245 73 -245 b 55 -252 72 -245 63 -249 l 32 -260 b 19 -263 27 -262 23 -263 b 4 -256 13 -263 8 -260 b 0 -215 0 -251 0 -254 b 0 -199 0 -210 0 -206 l 0 -152 l 1 -149 b 8 -140 2 -145 5 -141 b 42 -127 9 -140 24 -133 l 73 -116 l 73 -5 b 73 23 73 4 73 15 b 73 105 73 70 73 105 b 49 97 73 105 61 101 b 17 88 32 91 23 88 b 4 95 10 88 8 91 b 0 137 0 101 0 98 b 0 151 0 141 0 145 l 0 199 l 1 202 b 43 224 5 212 5 212 l 73 234 l 73 367 l 73 502 l 74 505 b 85 514 77 509 81 513 ',\n },\n accidentalThreeQuarterTonesSharpStein: {\n x_min: -1.359375,\n x_max: 455.96875,\n ha: 465,\n o: 'm 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 ',\n },\n accidentalBuyukMucennebFlat: {\n x_min: -171.5,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalBakiyeFlat: {\n x_min: -176.9375,\n x_max: 251.8125,\n ha: 257,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ',\n },\n accidentalKomaSharp: {\n x_min: -1.359375,\n x_max: 455.96875,\n ha: 465,\n o: 'm 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 ',\n },\n accidentalKucukMucennebSharp: {\n x_min: -1.359375,\n x_max: 255.890625,\n ha: 261,\n o: 'm 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 ',\n },\n articAccentAbove: {\n x_min: -348.4375,\n x_max: 24.5,\n ha: 25,\n o: 'm -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 ',\n },\n articAccentBelow: {\n x_min: -348.4375,\n x_max: 24.5,\n ha: 25,\n o: 'm -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 ',\n },\n articTenutoAbove: {\n x_min: 0,\n x_max: 318.5,\n ha: 325,\n o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ',\n },\n articTenutoBelow: {\n x_min: 0,\n x_max: 318.5,\n ha: 325,\n o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ',\n },\n articStaccatoAbove: {\n x_min: 0,\n x_max: 133.390625,\n ha: 136,\n o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ',\n },\n articStaccatoBelow: {\n x_min: 0,\n x_max: 133.390625,\n ha: 136,\n o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ',\n },\n articStaccatissimoAbove: {\n x_min: -73.5,\n x_max: 72.140625,\n ha: 74,\n o: 'm -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 ',\n },\n articStaccatissimoBelow: {\n x_min: -73.5,\n x_max: 72.140625,\n ha: 74,\n o: 'm -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 ',\n },\n articMarcatoAbove: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 ',\n },\n articMarcatoBelow: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 ',\n },\n fermataAbove: {\n x_min: -442.359375,\n x_max: 441,\n ha: 450,\n o: 'm -31 487 b -1 488 -21 488 -10 488 b 434 104 216 488 397 330 b 441 27 438 79 441 47 b 439 12 441 20 439 15 b 419 0 435 4 427 0 b 404 5 413 0 408 1 b 398 30 400 11 398 13 b 0 351 390 213 213 351 b -59 348 -20 351 -39 349 b -400 30 -251 324 -393 191 b -405 5 -400 13 -401 11 b -420 0 -409 1 -415 0 b -441 12 -428 0 -436 4 b -442 27 -441 15 -442 20 b -435 104 -442 47 -439 79 b -31 487 -401 316 -235 474 m -13 131 b -1 133 -9 133 -5 133 b 51 105 19 133 39 123 b 61 70 58 95 61 83 b 51 34 61 58 58 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -57 38 -62 54 b -13 131 -62 98 -44 124 ',\n },\n fermataBelow: {\n x_min: -441,\n x_max: 439.640625,\n ha: 449,\n o: 'm -428 -2 b -421 0 -427 -1 -424 0 b -406 -6 -416 0 -409 -2 b -400 -31 -401 -12 -400 -15 b -1 -352 -392 -215 -215 -352 b 58 -349 19 -352 38 -351 b 398 -31 250 -326 392 -192 b 404 -6 398 -15 400 -12 b 419 -1 408 -2 413 -1 b 439 -13 427 -1 435 -5 b 439 -29 439 -16 439 -22 b 434 -105 439 -48 438 -80 b 0 -489 397 -333 213 -489 b -68 -484 -23 -489 -44 -488 b -441 -36 -280 -452 -436 -263 b -441 -30 -441 -34 -441 -31 b -428 -2 -441 -11 -439 -5 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -57 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ',\n },\n fermataLongAbove: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -378 502 l -374 503 l 0 503 l 372 503 l 377 502 b 387 491 381 499 385 496 l 389 488 l 389 251 l 389 15 l 387 12 b 367 0 383 4 375 0 b 348 12 360 0 352 4 l 347 15 l 347 174 l 347 335 l 0 335 l -348 335 l -348 174 l -348 15 l -349 12 b -368 0 -353 4 -362 0 b -389 12 -377 0 -385 4 l -390 15 l -390 251 l -390 488 l -389 491 b -378 502 -386 496 -382 499 m -13 131 b -1 133 -9 133 -5 133 b 50 105 19 133 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -58 38 -62 55 b -13 131 -62 98 -44 124 ',\n },\n fermataLongBelow: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -378 -2 b -368 -1 -375 -1 -374 -1 b -349 -13 -360 -1 -353 -5 l -348 -16 l -348 -176 l -348 -337 l 0 -337 l 347 -337 l 347 -176 l 347 -16 l 348 -13 b 367 0 352 -5 360 0 b 387 -13 375 0 383 -5 l 389 -16 l 389 -252 l 389 -489 l 387 -492 b 377 -503 385 -498 381 -501 l 372 -505 l 0 -505 l -374 -505 l -378 -503 b -389 -492 -382 -501 -386 -498 l -390 -489 l -390 -252 l -390 -16 l -389 -13 b -378 -2 -386 -8 -382 -4 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -58 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ',\n },\n fermataVeryLongAbove: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -378 573 l -374 576 l 0 576 l 372 576 l 377 573 b 387 563 381 571 385 567 l 389 559 l 389 287 l 389 15 l 387 12 b 367 0 383 4 375 0 b 348 12 360 0 352 4 l 347 15 l 347 210 l 347 406 l 0 406 l -348 406 l -348 210 l -348 15 l -349 12 b -368 0 -353 4 -362 0 b -389 12 -377 0 -385 4 l -390 15 l -390 287 l -390 559 l -389 563 b -378 573 -386 567 -382 571 m -274 337 l -270 338 l 0 338 l 269 338 l 273 337 b 284 326 279 334 281 330 l 285 323 l 285 169 l 285 15 l 284 12 b 265 -1 280 4 272 -1 b 245 12 257 -1 249 4 l 245 15 l 243 108 l 243 201 l 0 201 l -245 201 l -245 108 l -245 15 l -246 12 b -266 -1 -250 4 -258 -1 b -285 12 -273 -1 -281 4 l -287 15 l -287 169 l -287 323 l -285 326 b -274 337 -283 330 -280 334 m -13 131 b -1 133 -9 133 -5 133 b 50 105 19 133 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -58 38 -62 55 b -13 131 -62 98 -44 124 ',\n },\n fermataVeryLongBelow: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -378 -2 b -368 -1 -375 -1 -374 -1 b -349 -13 -360 -1 -353 -5 l -348 -16 l -348 -212 l -348 -408 l 0 -408 l 347 -408 l 347 -212 l 347 -16 l 348 -13 b 367 0 352 -5 360 0 b 387 -13 375 0 383 -5 l 389 -16 l 389 -288 l 389 -560 l 387 -564 b 377 -574 385 -569 381 -573 l 372 -577 l 0 -577 l -374 -577 l -378 -574 b -389 -564 -382 -573 -386 -569 l -390 -560 l -390 -288 l -390 -16 l -389 -13 b -378 -2 -386 -8 -382 -4 m -274 -2 b -266 -1 -272 -1 -270 -1 b -246 -13 -257 -1 -250 -5 l -245 -16 l -245 -109 l -245 -202 l 0 -202 l 243 -202 l 243 -109 l 245 -16 l 245 -13 b 265 0 249 -5 257 0 b 284 -13 272 0 280 -5 l 285 -16 l 285 -170 l 285 -324 l 284 -327 b 273 -338 281 -331 279 -335 l 269 -340 l 0 -340 l -270 -340 l -274 -338 b -285 -327 -280 -335 -283 -331 l -287 -324 l -287 -170 l -287 -16 l -285 -13 b -274 -2 -283 -8 -280 -4 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -58 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ',\n },\n fermataShortAbove: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -9 650 b -1 652 -6 650 -4 652 b 19 639 6 652 13 648 l 23 631 b 28 623 24 628 27 626 l 34 614 l 39 606 l 43 598 l 49 588 l 54 580 l 59 571 l 65 563 l 69 555 l 74 546 l 80 537 l 85 528 b 89 520 87 526 89 523 l 95 512 l 100 503 l 106 494 l 111 487 l 115 478 l 121 470 l 126 462 l 130 453 l 136 445 l 141 437 l 147 427 l 151 419 l 156 410 l 161 402 l 167 394 l 172 385 l 176 376 b 182 367 179 374 181 370 l 187 359 l 193 351 l 198 342 l 202 334 l 208 326 l 212 317 l 217 309 l 223 301 l 228 292 l 234 284 l 238 274 l 243 266 l 249 258 l 254 249 l 259 241 l 264 233 l 269 224 b 274 216 270 222 273 217 l 280 206 l 285 198 l 295 180 l 299 174 l 304 165 l 310 156 l 315 148 l 321 140 l 325 131 l 330 123 l 336 113 l 341 105 l 347 97 l 351 88 l 356 80 l 360 72 b 364 66 362 70 363 68 b 370 58 366 65 368 61 l 379 41 b 389 19 386 31 389 24 b 382 4 389 13 386 8 b 347 0 377 0 378 0 b 337 0 344 0 340 0 b 336 0 336 0 336 0 b 287 11 294 0 294 0 l 281 19 l 276 27 l 272 37 l 266 45 l 261 54 l 255 62 l 250 70 l 246 79 l 240 87 l 235 97 l 230 105 l 224 113 l 220 122 l 215 130 l 209 140 l 204 148 l 200 155 l 194 163 b 189 172 193 165 191 169 l 185 180 l 179 188 l 174 198 l 168 206 l 163 215 l 159 223 l 153 231 l 148 240 l 142 249 l 138 258 l 133 266 l 127 274 l 122 283 l 117 292 l 111 301 l 107 308 l 102 316 b 98 324 102 317 99 322 l 92 333 l 87 341 l 81 349 l 77 359 l 72 367 l 66 376 l 61 384 l 55 392 l 51 401 l 46 410 l 40 419 l 35 427 l 31 435 l 24 444 l 20 453 l 14 460 l 10 469 b 5 477 9 470 6 474 l 0 485 l -5 494 l -9 502 l -14 512 b -20 519 -16 513 -19 517 l -24 526 l -28 534 b -31 537 -29 535 -31 537 b -35 533 -32 537 -32 535 l -88 444 l -187 280 l -285 117 l -343 23 b -362 1 -352 6 -356 2 b -368 0 -364 0 -367 0 b -390 20 -381 0 -390 8 l -390 20 b -359 77 -390 27 -390 27 l -80 539 l -25 631 b -9 650 -17 644 -13 648 m -13 133 b -1 134 -9 133 -5 134 b 50 105 19 134 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 70 -57 40 -62 55 b -13 133 -62 98 -44 126 ',\n },\n fermataShortBelow: {\n x_min: -390.640625,\n x_max: 389.28125,\n ha: 397,\n o: 'm -377 -1 b -368 0 -375 -1 -372 0 b -362 -1 -366 0 -363 -1 b -343 -24 -356 -4 -352 -8 l -285 -119 l -187 -280 l -88 -444 l -35 -533 b -31 -538 -32 -537 -32 -538 b -28 -534 -31 -538 -29 -537 l -23 -526 l -19 -517 l -13 -509 l -8 -501 l -2 -492 l 2 -483 l 6 -476 l 17 -458 l 23 -449 l 32 -433 l 38 -424 l 42 -416 l 47 -408 l 53 -399 l 58 -391 l 63 -381 l 68 -373 l 73 -365 l 78 -356 l 84 -348 l 89 -340 l 93 -330 l 99 -322 l 104 -315 l 114 -297 l 125 -280 l 129 -272 l 134 -263 l 140 -255 l 145 -247 l 151 -238 l 155 -230 l 160 -220 l 166 -212 l 171 -204 l 176 -195 l 181 -187 l 186 -177 l 191 -169 l 196 -162 l 201 -154 l 206 -144 l 217 -127 l 221 -119 l 227 -111 l 232 -102 l 238 -94 l 242 -86 l 247 -77 l 253 -69 l 258 -59 l 262 -51 l 268 -43 l 273 -34 l 279 -26 l 283 -18 b 321 -1 292 -2 292 -1 b 338 -1 326 -1 332 -1 b 382 -6 378 -1 375 -1 b 389 -20 386 -9 389 -15 b 382 -38 389 -26 386 -31 l 378 -47 l 372 -55 l 367 -63 l 362 -72 l 356 -80 l 351 -90 l 347 -98 l 341 -106 l 336 -115 l 330 -123 l 325 -131 l 321 -141 l 315 -149 l 310 -158 l 304 -166 l 299 -174 b 295 -183 298 -177 296 -181 l 289 -191 l 285 -199 l 280 -208 l 274 -216 l 269 -224 l 264 -233 l 259 -242 l 254 -251 l 249 -259 l 243 -267 l 238 -276 l 234 -284 l 228 -292 l 223 -302 l 217 -310 l 213 -319 l 208 -327 b 202 -335 206 -330 204 -334 l 197 -344 l 193 -351 l 187 -360 l 182 -369 l 176 -377 l 172 -385 l 167 -394 l 161 -403 l 156 -412 l 152 -420 l 147 -428 l 141 -437 l 136 -445 l 130 -455 l 126 -463 l 121 -471 l 115 -480 b 110 -488 114 -483 111 -487 l 106 -496 l 100 -503 l 96 -512 l 89 -521 l 85 -530 l 80 -538 l 74 -546 l 69 -555 l 65 -564 l 59 -573 l 54 -581 l 49 -589 l 43 -598 l 39 -606 l 34 -616 l 28 -624 l 23 -632 b 19 -641 21 -635 20 -638 b 0 -653 14 -649 8 -653 b -25 -631 -10 -653 -14 -649 l -80 -541 l -359 -79 b -389 -29 -375 -52 -389 -30 b -390 -22 -389 -26 -390 -24 b -377 -1 -390 -13 -385 -5 m -13 -9 b -1 -8 -9 -8 -5 -8 b 51 -36 19 -8 39 -19 b 61 -72 58 -47 61 -59 b 51 -106 61 -84 58 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -127 b -62 -72 -57 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ',\n },\n breathMarkComma: {\n x_min: -1.359375,\n x_max: 193.28125,\n ha: 197,\n o: 'm 78 233 b 87 233 81 233 84 233 b 187 140 132 233 174 195 b 193 102 190 127 193 115 b 43 -113 193 22 136 -62 b 27 -119 36 -116 31 -119 b 19 -108 21 -119 19 -115 b 29 -97 19 -102 20 -101 b 102 13 73 -72 102 -27 b 92 51 102 26 98 40 l 91 54 l 84 54 b 8 104 53 54 21 74 b -1 142 1 116 -1 130 b 78 233 -1 187 31 227 ',\n },\n breathMarkUpbow: {\n x_min: -170.140625,\n x_max: 168.78125,\n ha: 172,\n o: 'm -160 567 b -122 567 -159 567 -149 567 l -87 567 l -84 566 b -74 553 -78 563 -77 560 b -20 366 -73 551 -49 466 b 31 186 8 267 31 186 b 85 371 31 186 55 269 b 140 559 114 473 138 557 b 153 567 141 564 148 567 b 168 559 159 567 166 564 b 168 555 168 557 168 557 b 92 281 168 548 159 513 b 14 13 50 134 14 13 b 0 0 14 6 6 0 b -17 15 -8 0 -17 8 b -93 283 -17 15 -51 136 b -170 552 -166 533 -170 548 b -170 553 -170 552 -170 552 b -160 567 -170 560 -167 564 ',\n },\n caesura: {\n x_min: 0,\n x_max: 622.03125,\n ha: 635,\n o: 'm 398 417 b 406 419 401 419 404 419 b 427 398 417 419 427 409 b 427 391 427 395 427 392 b 34 -274 424 385 38 -272 b 20 -280 29 -278 25 -280 b 0 -259 9 -280 0 -270 b 0 -252 0 -256 0 -254 b 393 413 2 -247 389 410 b 398 417 394 415 397 416 m 592 417 b 600 419 594 419 597 419 b 622 398 611 419 622 409 b 620 391 622 395 620 392 b 227 -274 617 385 231 -272 b 213 -280 223 -278 219 -280 b 193 -259 202 -280 193 -270 b 194 -252 193 -256 193 -254 b 586 413 196 -247 582 410 b 592 417 588 415 590 416 ',\n },\n caesuraCurved: {\n x_min: 0,\n x_max: 503.609375,\n ha: 514,\n o: 'm 274 430 b 277 430 276 430 277 430 b 310 394 296 430 310 415 b 308 383 310 391 308 387 b 306 367 307 381 307 374 b 236 120 298 305 272 210 b 40 -273 189 -5 125 -134 b 20 -287 35 -283 27 -287 b 5 -281 14 -287 9 -285 b 0 -267 1 -277 0 -273 b 9 -242 0 -262 2 -255 b 246 395 137 -12 232 242 b 274 430 249 416 257 427 m 468 430 b 472 430 469 430 470 430 b 503 394 490 430 503 415 b 502 383 503 391 503 387 b 499 367 502 381 500 374 b 431 120 491 305 465 210 b 234 -273 382 -5 318 -134 b 213 -287 228 -283 220 -287 b 198 -281 208 -287 202 -285 b 193 -267 194 -277 193 -273 b 202 -242 193 -262 196 -255 b 439 395 330 -12 426 242 b 468 430 442 416 451 427 ',\n },\n restMaxima: {\n x_min: 0,\n x_max: 464.140625,\n ha: 474,\n o: 'm 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 ',\n },\n restDoubleWhole: {\n x_min: 0,\n x_max: 386.5625,\n ha: 394,\n o: 'm 0 173 l 0 347 l 193 347 l 386 347 l 386 173 l 386 0 l 193 0 l 0 0 l 0 173 ',\n },\n restWhole: {\n x_min: 0,\n x_max: 447.8125,\n ha: 457,\n o: 'm 0 -87 l 0 0 l 223 0 l 447 0 l 447 -87 l 447 -174 l 223 -174 l 0 -174 l 0 -87 ',\n },\n restWholeLegerLine: {\n x_min: 0,\n x_max: 737.71875,\n ha: 753,\n o: 'm 9 13 b 208 15 10 15 51 15 b 368 15 251 15 304 15 l 726 15 l 729 12 b 737 -1 735 9 737 4 b 729 -15 737 -6 735 -11 l 726 -16 l 660 -16 l 592 -16 l 592 -95 l 592 -174 l 368 -174 l 144 -174 l 144 -95 l 144 -16 l 77 -16 l 9 -16 l 6 -15 b 0 -1 1 -11 0 -6 b 9 13 0 5 2 11 ',\n },\n restHalf: {\n x_min: 0,\n x_max: 447.8125,\n ha: 457,\n o: 'm 0 86 l 0 173 l 223 173 l 447 173 l 447 86 l 447 0 l 223 0 l 0 0 l 0 86 ',\n },\n restHalfLegerLine: {\n x_min: 0,\n x_max: 737.71875,\n ha: 753,\n o: 'm 144 94 l 144 173 l 368 173 l 592 173 l 592 94 l 592 15 l 660 15 l 726 15 l 729 12 b 737 -1 735 9 737 4 b 729 -15 737 -6 735 -11 l 726 -16 l 368 -16 l 9 -16 l 6 -15 b 0 -1 1 -11 0 -6 b 6 12 0 4 1 9 l 9 15 l 77 15 l 144 15 l 144 94 ',\n },\n restQuarter: {\n x_min: 0,\n x_max: 300.8125,\n ha: 307,\n o: 'm 49 505 b 53 506 50 505 51 506 b 70 496 58 506 62 503 b 81 485 73 492 78 488 l 96 473 l 111 459 l 122 449 l 134 438 l 182 396 l 255 330 b 292 291 292 298 292 298 l 292 290 l 292 284 l 283 270 b 209 36 234 197 209 113 b 288 -170 209 -44 235 -119 b 299 -184 295 -179 299 -181 b 300 -191 300 -187 300 -188 b 285 -206 300 -199 294 -206 b 280 -206 283 -206 281 -206 b 247 -201 270 -202 259 -201 b 176 -222 223 -201 197 -208 b 114 -340 136 -249 114 -292 b 172 -471 114 -384 134 -433 b 185 -492 182 -481 185 -487 b 181 -502 185 -496 183 -499 b 171 -508 176 -505 174 -508 b 152 -498 166 -508 160 -503 b 0 -284 65 -428 12 -352 b 0 -260 0 -278 0 -270 b 1 -238 0 -252 0 -242 b 148 -140 16 -177 73 -140 b 209 -148 167 -140 189 -142 b 215 -149 212 -148 215 -149 b 215 -149 215 -149 215 -149 l 215 -149 b 201 -136 215 -148 209 -142 l 157 -97 l 96 -41 b 17 34 21 24 17 29 b 17 37 17 36 17 36 b 17 38 17 37 17 38 b 25 56 17 44 17 44 b 110 298 81 131 110 219 b 46 474 110 367 88 431 b 38 491 40 480 38 487 b 49 505 38 498 42 502 ',\n },\n rest8th: {\n x_min: 0,\n x_max: 349.8125,\n ha: 357,\n o: 'm 88 302 b 103 303 93 302 98 303 b 202 224 149 303 191 270 b 205 199 204 216 205 208 b 178 129 205 173 196 147 l 175 126 l 182 127 b 307 249 236 142 284 190 b 313 259 308 254 311 258 b 329 267 317 265 323 267 b 349 247 340 267 349 259 b 201 -263 349 242 204 -258 b 182 -273 197 -270 190 -273 b 163 -260 174 -273 166 -269 b 161 -256 161 -259 161 -258 b 217 -59 161 -248 170 -220 b 272 129 247 43 272 127 b 272 129 272 129 272 129 b 264 122 272 129 268 126 b 140 80 227 94 183 80 b 36 115 102 80 65 91 b 0 194 10 136 0 165 b 88 302 0 244 32 292 ',\n },\n rest16th: {\n x_min: 0,\n x_max: 450.53125,\n ha: 460,\n o: 'm 189 302 b 204 303 193 302 198 303 b 303 224 250 303 292 270 b 306 199 304 216 306 208 b 279 129 306 173 296 147 l 276 126 l 281 127 b 408 249 337 142 385 190 b 412 259 409 254 412 258 b 430 267 417 265 423 267 b 450 247 441 267 450 259 b 200 -605 450 242 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 194 111 136 99 165 b 189 302 99 244 133 292 ',\n },\n rest32nd: {\n x_min: 0,\n x_max: 551.25,\n ha: 563,\n o: 'm 289 644 b 304 645 294 645 299 645 b 404 566 349 645 392 613 b 406 541 405 557 406 549 b 379 471 406 514 397 489 l 377 467 l 382 470 b 509 591 438 485 485 531 b 513 601 510 595 513 599 b 530 609 518 607 524 609 b 551 588 540 609 551 602 b 200 -605 551 584 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 195 112 136 99 165 b 118 256 99 217 106 238 b 204 303 138 287 171 303 b 292 249 238 303 273 285 b 306 199 302 234 306 217 b 279 129 306 173 296 148 l 276 126 l 281 127 b 408 248 336 142 385 190 b 473 470 409 254 473 469 b 473 470 473 470 473 470 b 465 464 473 470 469 467 b 341 421 428 435 383 421 b 236 458 303 421 266 433 b 200 537 212 478 200 508 b 289 644 200 585 234 635 ',\n },\n rest64th: {\n x_min: -1.359375,\n x_max: 651.96875,\n ha: 665,\n o: 'm 389 644 b 405 645 394 645 400 645 b 504 566 450 645 492 613 b 507 541 506 557 507 549 b 480 471 507 514 498 489 l 477 467 l 483 470 b 609 591 539 485 586 531 b 613 601 611 595 613 599 b 631 609 619 607 624 609 b 651 588 641 609 651 602 b 200 -946 651 584 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 537 313 478 300 508 b 389 644 300 585 334 635 ',\n },\n rest128th: {\n x_min: -1.359375,\n x_max: 752.703125,\n ha: 768,\n o: 'm 490 985 b 504 986 495 986 500 986 b 604 907 551 986 593 954 b 607 884 607 900 607 892 b 581 813 607 857 597 831 l 578 810 l 583 811 b 710 932 638 827 687 873 b 714 943 711 936 713 942 b 730 952 720 949 725 952 b 752 931 741 952 752 943 b 200 -946 752 927 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 538 314 477 300 508 b 318 598 300 559 306 580 b 404 645 340 630 372 645 b 494 592 439 645 475 627 b 507 541 502 577 507 559 b 480 471 507 516 498 489 l 477 467 l 483 470 b 608 589 537 485 586 531 b 675 811 611 595 675 810 b 675 811 675 811 675 811 b 666 806 675 811 671 809 b 543 763 628 777 585 763 b 438 799 504 763 468 775 b 401 878 412 820 401 849 b 490 985 401 928 434 977 ',\n },\n dynamicPiano: {\n x_min: -53.078125,\n x_max: 513.140625,\n ha: 485,\n o: 'm 185 383 b 196 384 187 383 191 384 b 277 334 230 384 259 365 b 288 301 281 324 288 306 b 288 297 288 298 288 297 b 294 302 289 297 291 299 b 394 370 323 338 367 367 b 404 371 398 370 401 371 b 510 272 453 371 498 328 b 513 237 513 262 513 251 b 507 172 513 217 511 192 b 326 -34 487 59 412 -26 b 314 -36 322 -36 318 -36 b 274 -24 298 -36 283 -31 l 265 -16 b 224 44 246 -1 232 20 b 223 49 224 47 223 49 b 223 49 223 49 223 49 b 149 -197 221 48 149 -194 b 149 -198 149 -197 149 -198 b 170 -210 149 -202 155 -205 b 187 -215 174 -210 175 -212 b 204 -231 201 -219 204 -222 b 197 -245 204 -240 202 -242 l 194 -248 l 76 -248 l -42 -248 l -46 -245 b -53 -231 -51 -242 -53 -240 b -35 -215 -53 -222 -49 -217 b -13 -210 -21 -212 -20 -212 b -6 -208 -10 -209 -8 -208 b 0 -206 -6 -208 -2 -206 b 25 -188 13 -201 21 -195 b 163 280 28 -183 163 276 b 166 291 163 283 164 287 b 167 302 167 295 167 299 b 155 324 167 315 161 324 b 155 324 155 324 155 324 b 65 230 125 322 85 280 b 53 215 61 217 58 215 b 51 215 53 215 51 215 b 42 224 46 215 42 217 b 57 263 42 231 47 244 b 140 360 77 305 104 337 b 152 370 144 365 149 369 b 185 383 157 376 172 381 m 374 306 b 366 308 371 308 368 308 b 300 273 348 308 321 294 b 284 254 288 262 287 259 b 280 242 283 249 281 245 b 257 169 279 240 270 213 l 236 98 l 236 93 b 251 48 238 77 243 61 b 279 27 258 37 272 27 b 281 27 279 27 280 27 b 291 31 281 27 287 30 b 396 170 334 52 378 109 b 406 247 402 197 406 224 b 401 277 406 259 405 270 b 374 306 397 290 383 303 ',\n },\n dynamicMezzo: {\n x_min: 46.28125,\n x_max: 669.671875,\n ha: 563,\n o: 'm 183 376 b 189 376 185 376 187 376 b 212 374 197 376 208 376 b 265 337 234 369 253 355 b 274 317 268 331 273 320 b 274 316 274 317 274 316 b 280 323 276 316 276 319 b 311 358 288 337 299 348 b 319 366 315 360 318 365 b 356 376 326 373 340 376 b 382 371 364 376 374 374 b 428 337 400 366 417 352 b 436 317 431 331 436 320 b 438 316 436 317 436 316 b 442 323 438 316 439 319 b 475 358 451 337 462 348 b 483 366 477 360 481 365 b 518 376 488 373 503 376 b 544 373 528 376 536 376 b 604 285 579 360 604 326 b 597 249 604 273 601 258 b 543 63 596 247 544 70 b 541 54 543 61 541 55 b 540 44 540 51 540 47 b 552 23 540 33 545 23 b 552 23 552 23 552 23 b 647 126 586 29 627 72 b 658 138 651 136 653 138 b 660 138 660 138 660 138 b 669 129 666 137 669 136 b 654 88 669 122 665 109 b 562 -12 631 43 602 9 l 549 -19 b 521 -27 540 -24 530 -27 b 447 30 490 -27 458 -4 b 443 58 445 38 443 48 b 450 93 443 72 446 84 b 504 278 453 97 504 272 b 507 288 506 283 506 287 b 509 298 507 292 509 295 b 491 326 509 310 502 320 b 487 327 490 327 488 327 b 479 324 484 327 483 326 b 441 270 462 316 443 288 b 435 249 441 265 436 254 b 398 127 434 248 419 195 b 362 4 379 61 362 5 b 328 -1 359 -1 362 -1 b 314 -1 323 -1 319 -1 b 302 -1 310 -1 306 -1 b 266 4 266 -1 269 -1 b 265 6 265 5 265 5 b 303 144 265 13 272 34 b 343 278 325 216 343 276 b 344 288 343 281 344 285 b 345 298 345 291 345 295 b 330 326 345 310 340 320 b 323 327 328 327 325 327 b 317 324 322 327 321 326 b 279 270 300 316 281 288 b 273 249 279 265 274 254 b 236 127 272 248 255 195 b 200 4 216 61 200 5 b 164 -1 197 -1 198 -1 b 151 -1 161 -1 156 -1 b 140 -1 147 -1 142 -1 b 103 4 104 -1 106 -1 b 103 6 103 5 103 5 b 141 144 103 13 108 34 b 181 278 161 216 179 276 b 182 288 181 281 181 285 b 183 298 182 291 183 295 b 168 324 183 310 178 320 b 160 327 166 326 163 327 b 141 320 156 327 151 324 b 69 230 112 305 85 272 b 57 215 65 217 62 215 b 55 215 57 215 55 215 b 46 224 49 215 46 217 b 59 260 46 231 50 242 b 151 363 81 306 112 341 b 161 369 155 365 160 367 b 183 376 166 371 174 374 ',\n },\n dynamicForte: {\n x_min: -118.421875,\n x_max: 597.53125,\n ha: 381,\n o: 'm 460 574 b 464 574 461 574 462 574 b 488 574 470 574 481 574 b 500 573 491 574 498 574 b 594 503 543 570 588 538 b 597 488 596 498 597 494 b 528 417 597 449 564 417 b 502 423 519 417 510 419 b 465 481 477 434 465 458 b 488 528 465 499 472 516 b 490 530 490 530 490 530 b 490 530 490 530 490 530 b 468 517 488 530 475 523 b 349 340 419 485 377 420 b 347 330 348 334 347 330 b 383 328 347 328 363 328 b 428 326 423 328 424 328 b 442 302 438 320 442 312 b 430 281 442 294 438 285 b 385 276 424 277 426 276 l 377 276 l 332 276 l 330 269 b 178 -117 303 126 250 -9 b 1 -249 129 -194 69 -237 b -20 -251 -6 -251 -13 -251 b -114 -187 -65 -251 -100 -227 b -118 -156 -117 -177 -118 -166 b -51 -84 -118 -116 -91 -84 b -31 -87 -46 -84 -39 -86 b 16 -152 0 -95 16 -124 b -12 -205 16 -173 8 -194 b -16 -208 -14 -206 -16 -208 b -14 -208 -16 -208 -14 -208 b -9 -206 -14 -208 -12 -208 b 74 -124 23 -197 54 -166 b 172 224 98 -79 125 22 b 185 276 178 252 183 274 b 185 276 185 276 185 276 b 141 276 185 276 181 276 b 91 280 96 276 96 276 b 77 302 83 285 77 294 b 91 326 77 312 83 320 b 148 328 95 328 96 328 l 198 330 l 202 341 b 460 574 249 473 351 566 ',\n },\n dynamicRinforzando: {\n x_min: 78.9375,\n x_max: 485.921875,\n ha: 417,\n o: 'm 362 378 b 378 380 367 380 372 380 b 472 348 415 380 453 367 b 485 315 481 338 485 327 b 462 273 485 298 477 281 b 439 267 454 269 446 267 b 398 290 424 267 409 274 b 344 319 385 309 364 319 b 281 269 315 319 289 301 b 279 262 280 266 279 262 b 276 256 279 260 277 258 b 274 249 276 254 274 251 b 238 127 273 248 257 192 b 201 4 217 61 201 5 b 166 -1 198 -1 200 -1 b 153 -1 163 -1 157 -1 b 141 -1 148 -1 144 -1 b 104 4 106 -1 107 -1 b 104 6 104 5 104 5 b 142 144 104 13 110 34 b 182 278 164 219 181 276 b 183 288 182 281 182 285 b 185 302 185 292 185 298 b 164 330 185 317 176 328 b 159 330 163 330 161 330 b 102 302 140 330 119 320 b 91 294 95 295 93 294 b 88 294 91 294 89 294 b 78 303 83 294 78 298 b 81 312 78 306 78 309 b 200 373 106 347 160 373 b 215 371 205 373 209 371 b 266 335 235 367 254 353 b 269 331 268 333 269 331 b 269 331 269 331 269 331 b 273 335 269 331 270 334 b 362 378 298 359 330 376 ',\n },\n dynamicSforzando: {\n x_min: 70.78125,\n x_max: 378.390625,\n ha: 315,\n o: 'm 246 373 b 254 373 249 373 251 373 b 372 324 303 373 360 351 b 378 302 377 317 378 309 b 338 251 378 278 362 255 b 328 249 334 249 332 249 b 283 294 303 249 283 270 b 288 315 283 301 284 308 b 289 319 289 317 289 319 b 289 319 289 319 289 319 b 283 320 289 320 287 320 b 270 322 279 322 274 322 b 206 288 242 322 215 308 b 206 283 206 287 206 285 b 257 223 206 267 230 238 b 284 206 272 213 277 210 b 351 90 328 173 351 130 b 340 47 351 74 348 59 b 205 -30 314 -2 264 -30 b 182 -29 198 -30 190 -30 b 84 15 147 -24 103 -5 b 70 48 74 24 70 36 b 108 99 70 70 85 94 b 121 102 112 101 117 102 b 167 56 147 102 167 80 b 159 31 167 48 164 40 l 156 26 l 157 26 b 190 20 167 22 178 20 b 220 26 201 20 212 22 b 258 65 243 34 258 51 b 257 70 258 66 258 69 b 204 126 249 94 234 109 b 114 258 148 158 114 209 b 125 302 114 273 118 288 b 246 373 147 342 193 370 ',\n },\n dynamicZ: {\n x_min: 29.9375,\n x_max: 420.578125,\n ha: 371,\n o: 'm 115 345 b 221 347 117 345 166 347 b 411 345 306 347 409 345 b 420 330 416 342 420 335 b 415 319 420 326 419 321 b 178 118 397 303 179 118 b 178 117 178 118 178 117 b 181 117 178 117 178 117 b 189 117 182 117 185 117 b 193 117 190 117 191 117 b 247 98 215 117 232 111 b 296 75 266 83 280 76 b 302 75 299 75 300 75 b 322 91 311 75 315 79 b 322 91 322 91 322 91 b 322 91 322 91 322 91 b 319 91 322 91 321 91 b 313 90 318 90 315 90 b 283 107 300 90 288 97 b 277 126 279 114 277 121 b 319 167 277 149 295 167 b 319 167 319 167 319 167 b 362 118 347 167 362 147 b 355 82 362 108 359 96 b 311 33 349 65 340 55 b 224 1 284 12 253 1 b 194 5 213 1 204 2 b 168 18 183 8 178 11 b 110 36 151 30 130 36 b 57 15 88 36 68 29 b 47 11 54 12 51 11 b 31 20 40 11 34 13 b 29 26 31 22 29 25 b 68 66 29 36 39 45 b 285 250 73 71 281 248 b 285 250 285 250 285 250 b 231 252 285 252 261 252 b 137 250 190 252 141 250 b 93 227 122 248 110 241 b 78 220 88 222 83 220 b 66 227 74 220 70 222 b 63 234 65 229 63 231 b 85 291 63 241 69 252 b 115 345 108 342 108 344 ',\n },\n ornamentTrill: {\n x_min: -340.28125,\n x_max: 338.921875,\n ha: 346,\n o: 'm -32 520 b -29 521 -31 520 -31 521 b -23 519 -27 521 -24 520 b -20 513 -21 517 -20 516 b -21 506 -20 512 -20 509 b -31 474 -23 502 -27 488 l -53 402 l -66 352 l -68 349 l -57 349 b -32 351 -51 349 -40 351 b 123 370 19 352 74 359 b 137 371 127 370 133 371 b 170 356 152 371 164 366 b 171 355 170 355 170 355 b 216 366 174 355 183 358 b 280 378 268 377 266 377 b 287 378 283 378 284 378 b 332 349 307 378 322 369 b 338 319 336 341 338 330 b 332 301 338 310 336 302 b 242 280 329 299 246 280 b 242 280 242 280 242 280 b 235 288 236 280 235 283 b 235 292 235 290 235 291 b 236 302 236 297 236 299 b 220 337 236 316 230 330 l 216 340 l 210 335 b 159 276 189 322 172 301 b 118 149 152 265 156 274 b 81 34 84 36 85 36 b -8 13 78 33 -4 13 b -8 13 -8 13 -8 13 b -14 20 -12 15 -14 15 b -8 44 -14 24 -12 31 b -2 66 -5 55 -2 65 b -2 66 -2 66 -2 66 l -2 66 b -43 41 -2 66 -21 55 b -114 4 -98 8 -98 8 b -144 0 -123 0 -134 0 b -242 99 -197 0 -242 43 b -242 109 -242 102 -242 105 b -212 219 -240 122 -242 116 b -185 312 -197 270 -185 312 l -185 312 b -189 312 -185 312 -186 312 b -259 312 -200 312 -227 312 b -321 310 -291 312 -310 310 b -334 312 -330 310 -334 312 b -340 319 -338 313 -340 316 b -336 326 -340 322 -338 324 b -291 337 -334 326 -314 331 l -247 347 l -210 348 b -172 348 -190 348 -172 348 b -168 363 -172 348 -171 355 b -145 442 -151 424 -145 441 b -133 452 -144 444 -140 446 l -77 489 b -32 520 -53 506 -32 520 m 57 334 b 53 335 55 335 54 335 b 44 334 50 335 49 335 b -70 316 8 326 -28 320 b -78 309 -78 316 -78 316 b -108 202 -80 305 -88 274 b -141 81 -136 112 -141 93 b -140 74 -141 79 -141 77 b -117 49 -137 59 -127 49 b -107 52 -114 49 -110 51 b 16 127 -106 54 14 126 b 42 217 16 127 42 215 b 49 241 42 222 44 229 b 73 320 53 251 73 317 b 57 334 73 327 65 333 ',\n },\n ornamentTurn: {\n x_min: -423.3125,\n x_max: 421.9375,\n ha: 431,\n o: 'm -262 197 b -247 197 -257 197 -253 197 b -118 162 -210 197 -163 184 b 40 45 -61 134 -13 98 b 277 -95 119 -33 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -55 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 201 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 136 b 421 22 421 37 421 29 b 245 -199 421 -93 338 -199 b 238 -198 243 -199 240 -199 b -44 -47 148 -194 50 -141 b -250 86 -114 22 -183 66 b -295 94 -270 91 -283 94 b -315 91 -302 94 -307 94 b -381 4 -356 81 -381 43 b -355 -56 -381 -18 -372 -40 b -298 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -178 -69 -200 -58 -189 -62 b -151 -122 -160 -81 -151 -101 b -171 -167 -151 -138 -157 -155 b -239 -195 -185 -181 -213 -192 b -257 -197 -245 -197 -250 -197 b -423 -5 -352 -197 -423 -109 b -412 65 -423 16 -419 40 b -262 197 -389 137 -329 188 ',\n },\n ornamentTurnSlash: {\n x_min: -423.3125,\n x_max: 421.9375,\n ha: 431,\n o: 'm -10 276 b -2 277 -8 277 -5 277 b 17 265 5 277 13 273 b 19 163 19 260 19 260 l 19 68 l 39 45 b 277 -95 122 -34 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -54 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 200 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 137 b 421 22 421 37 421 29 b 257 -198 421 -86 347 -188 b 242 -198 251 -198 247 -198 b 20 -105 181 -198 95 -163 l 19 -104 l 19 -183 b 19 -216 19 -195 19 -206 b 12 -273 19 -272 17 -267 b -2 -278 8 -277 2 -278 b -21 -266 -10 -278 -19 -274 b -23 -165 -23 -263 -23 -262 l -23 -69 l -44 -47 b -250 86 -117 23 -183 66 b -295 94 -270 93 -284 94 b -315 91 -302 94 -308 94 b -381 5 -356 81 -381 43 b -355 -56 -381 -16 -372 -40 b -299 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -168 -77 -196 -58 -179 -65 b -151 -122 -156 -90 -151 -105 b -179 -174 -151 -141 -160 -162 b -239 -195 -194 -184 -217 -192 b -257 -197 -245 -195 -250 -197 b -423 -5 -349 -197 -423 -113 b -423 0 -423 -4 -423 -1 b -277 194 -420 97 -362 173 b -247 197 -268 197 -258 197 b -24 104 -185 197 -100 162 l -23 102 l -23 181 b -21 265 -23 260 -23 260 b -10 276 -20 269 -14 274 ',\n },\n ornamentMordent: {\n x_min: -402.890625,\n x_max: 401.53125,\n ha: 410,\n o: 'm -10 273 b -4 274 -9 273 -6 274 b 16 262 4 274 12 269 b 17 158 17 259 17 259 l 17 56 l 62 112 b 117 174 110 172 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b 21 -6 27 0 24 -2 l 17 -12 l 17 -147 b 17 -210 17 -173 17 -194 b 10 -292 17 -297 16 -287 b -2 -299 6 -297 2 -299 b -21 -287 -10 -299 -19 -295 b -24 -174 -23 -284 -23 -284 l -24 -63 l -66 -117 b -121 -176 -110 -170 -114 -176 b -125 -176 -122 -176 -123 -176 b -296 -12 -134 -174 -125 -184 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 170 -398 -43 -231 165 b -212 174 -221 173 -216 174 b -202 173 -208 174 -205 174 b -39 11 -200 172 -151 122 l -28 -1 l -25 1 l -24 4 l -24 130 b -23 260 -24 256 -24 258 b -10 273 -20 266 -16 270 ',\n },\n ornamentShortTrill: {\n x_min: -402.890625,\n x_max: 401.53125,\n ha: 410,\n o: 'm -219 173 b -213 174 -217 174 -215 174 b -202 173 -209 174 -205 173 b -114 86 -200 172 -179 151 b -28 0 -66 37 -28 0 b 40 84 -28 0 2 37 b 117 174 111 173 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b -42 -86 27 0 -4 -38 b -118 -174 -112 -174 -111 -173 b -123 -176 -119 -176 -121 -176 b -133 -174 -126 -176 -130 -174 b -296 -12 -136 -173 -172 -137 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 172 -398 -43 -228 167 b -219 173 -223 172 -220 173 ',\n },\n ornamentTremblement: {\n x_min: -571.671875,\n x_max: 570.3125,\n ha: 582,\n o: 'm -386 173 b -381 174 -385 174 -383 174 b -370 173 -377 174 -372 173 b -281 86 -367 172 -347 151 b -196 0 -235 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 277 172 b 289 174 285 174 288 174 b 299 173 294 174 298 173 b 462 11 303 172 338 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 374 -176 371 -176 b 280 -87 367 -173 345 -152 b 194 0 234 -38 194 0 b 125 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 43 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -141 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -289 -176 b -300 -174 -295 -176 -299 -174 b -464 -12 -304 -173 -340 -137 l -476 0 l -504 -34 b -543 -77 -534 -73 -537 -76 b -549 -79 -545 -79 -547 -79 b -571 -58 -562 -79 -571 -69 b -568 -49 -571 -55 -570 -52 b -392 172 -566 -43 -396 167 b -386 173 -390 172 -387 173 ',\n },\n ornamentPrecompAppoggTrill: {\n x_min: -571.671875,\n x_max: 570.3125,\n ha: 582,\n o: 'm -559 351 b -551 352 -556 352 -553 352 b -530 338 -543 352 -533 348 b -529 169 -530 337 -529 291 l -529 1 l -507 27 l -441 112 b -382 174 -394 169 -390 174 b -378 174 -381 174 -379 174 b -281 86 -370 174 -375 179 b -196 0 -234 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 279 172 b 289 174 285 174 288 174 b 300 173 294 174 298 173 b 462 11 303 172 340 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 375 -176 371 -176 b 280 -87 367 -173 347 -152 b 194 0 234 -38 194 0 b 126 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 44 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -140 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -288 -176 b -300 -174 -294 -176 -298 -174 b -464 -11 -303 -173 -374 -102 l -476 0 l -506 -37 b -539 -76 -528 -65 -537 -74 b -551 -80 -543 -79 -547 -80 b -570 -68 -558 -80 -566 -76 l -571 -65 l -571 136 b -570 340 -571 331 -571 337 b -559 351 -568 344 -564 348 ',\n },\n ornamentPrecompSlideTrillDAnglebert: {\n x_min: -590.71875,\n x_max: 589.359375,\n ha: 601,\n o: 'm -367 173 b -362 174 -366 174 -364 174 b -351 173 -357 174 -353 173 b -262 86 -348 172 -328 151 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 72 86 -13 172 6 151 b 157 0 119 37 157 0 b 227 84 159 0 189 37 b 303 174 298 173 296 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 144 -86 213 0 182 -38 b 68 -174 73 -174 74 -173 b 62 -176 66 -176 65 -176 b 53 -174 59 -176 55 -174 b -35 -87 50 -173 29 -152 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -367 173 -375 169 -372 172 ',\n },\n ornamentPrecompSlideTrillBach: {\n x_min: -590.71875,\n x_max: 589.359375,\n ha: 601,\n o: 'm 175 273 b 182 274 178 273 181 274 b 202 262 190 274 198 269 b 204 158 204 259 204 259 l 204 56 l 250 112 b 303 174 296 172 298 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 208 -6 213 0 210 -2 l 204 -12 l 204 -147 b 204 -210 204 -173 204 -194 b 198 -292 204 -297 204 -287 b 183 -299 194 -297 189 -299 b 164 -287 175 -299 167 -295 b 163 -174 163 -284 163 -284 l 161 -63 l 119 -117 b 65 -176 76 -170 73 -176 b 61 -176 63 -176 62 -176 b -35 -87 51 -174 57 -180 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -363 174 -374 170 -371 174 b -359 174 -362 174 -360 174 b -262 86 -351 174 -356 179 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 147 11 -13 172 35 123 l 157 -1 l 160 1 l 163 4 l 163 130 b 164 260 163 256 163 258 b 175 273 166 266 170 270 ',\n },\n ornamentPrecompTrillSuffixDandrieu: {\n x_min: -590.71875,\n x_max: 589.359375,\n ha: 601,\n o: 'm 544 335 b 553 337 548 337 551 337 b 575 313 563 337 570 330 b 589 226 583 285 589 256 b 517 8 589 152 563 76 b 464 -58 507 -4 503 -9 l 401 -136 b 362 -176 372 -172 370 -176 b 357 -176 360 -176 359 -176 b 261 -87 349 -174 355 -180 b 175 0 215 -38 175 0 b 106 -86 175 0 144 -38 b 29 -174 35 -174 36 -173 b 24 -176 28 -176 27 -176 b 14 -174 21 -176 17 -174 b -73 -87 12 -173 -8 -152 b -159 0 -121 -38 -159 0 b -228 -86 -160 0 -190 -38 b -304 -174 -299 -174 -298 -173 b -310 -176 -306 -176 -308 -176 b -319 -174 -314 -176 -318 -174 b -483 -12 -323 -173 -359 -137 l -495 0 l -524 -34 b -562 -77 -553 -73 -556 -76 b -568 -79 -564 -79 -566 -79 b -590 -58 -581 -79 -590 -69 b -588 -49 -590 -55 -589 -52 b -412 170 -585 -43 -417 165 b -398 174 -408 173 -402 174 b -389 173 -394 174 -392 174 b -300 86 -387 172 -366 151 b -215 -1 -254 37 -215 -1 b -145 84 -215 -1 -183 37 b -69 173 -74 173 -76 172 b -63 174 -68 174 -66 174 b -54 173 -61 174 -57 173 b 34 86 -51 172 -31 151 b 119 -1 81 37 119 -1 b 189 84 121 -1 151 37 b 265 173 259 173 258 172 b 270 174 266 174 269 174 b 280 173 274 174 279 173 b 370 84 283 172 303 151 b 455 -1 416 37 455 -1 l 455 -1 b 476 24 455 -1 469 15 b 547 226 522 87 547 159 b 534 302 547 252 543 278 b 532 317 533 308 532 313 b 544 335 532 326 536 333 ',\n },\n ornamentPrecompDoubleCadenceUpperPrefix: {\n x_min: -597.53125,\n x_max: 596.171875,\n ha: 608,\n o: 'm -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 80 86 -5 172 13 151 b 166 -1 127 37 166 -1 b 235 84 166 -1 197 37 b 311 173 306 173 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 152 -86 221 -1 190 -38 b 76 -176 81 -174 83 -173 b 70 -176 74 -176 73 -176 b 61 -174 66 -176 62 -174 b -27 -87 58 -173 38 -152 b -114 -1 -74 -38 -112 -1 b -182 -86 -114 -1 -145 -38 b -258 -176 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 ',\n },\n ornamentPrecompDoubleCadenceUpperPrefixTurn: {\n x_min: -597.53125,\n x_max: 596.171875,\n ha: 608,\n o: 'm -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 155 11 -5 172 43 123 l 166 -1 l 168 1 l 170 4 l 170 130 b 171 260 170 256 170 258 b 191 274 175 269 183 274 b 205 267 196 274 201 272 b 212 158 212 262 210 273 l 212 56 l 257 112 b 311 173 304 172 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 216 -6 221 -1 219 -2 l 212 -12 l 212 -147 b 212 -210 212 -173 212 -194 b 205 -292 212 -297 210 -287 b 191 -299 201 -297 196 -299 b 172 -287 183 -299 175 -295 b 170 -174 171 -284 171 -284 l 170 -63 l 127 -117 b 73 -176 84 -170 80 -176 b 68 -176 72 -176 70 -176 b -27 -87 59 -174 65 -180 b -114 0 -74 -38 -112 0 b -182 -86 -114 0 -145 -38 b -258 -174 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 ',\n },\n ornamentPrecompTrillLowerSuffix: {\n x_min: -597.53125,\n x_max: 596.171875,\n ha: 608,\n o: 'm -413 173 b -408 174 -412 174 -409 174 b -397 173 -404 174 -400 173 b -308 86 -394 172 -374 151 b -223 0 -261 37 -223 0 b -153 84 -223 0 -191 37 b -77 174 -83 173 -84 172 b -72 174 -76 174 -74 174 b -62 173 -68 174 -63 173 b 25 86 -59 172 -39 151 b 112 0 73 37 111 0 b 181 84 112 0 144 37 b 257 174 251 173 251 172 b 262 174 258 174 261 174 b 273 173 266 174 270 173 b 436 9 276 172 347 101 l 447 -1 l 477 36 b 522 79 511 79 513 79 l 522 79 b 552 51 533 79 539 73 b 596 -112 582 6 596 -51 b 567 -262 596 -161 586 -213 b 539 -322 558 -287 544 -316 b 524 -327 534 -326 529 -327 b 504 -315 515 -327 507 -323 b 503 -308 503 -312 503 -309 b 511 -285 503 -302 504 -297 b 555 -113 540 -227 555 -169 b 544 -34 555 -86 551 -59 b 522 19 540 -16 530 8 l 521 22 l 481 -26 l 405 -122 b 353 -176 366 -172 362 -176 b 349 -176 352 -176 351 -176 b 253 -87 341 -176 347 -180 b 167 0 206 -38 167 0 b 99 -86 167 0 136 -38 b 21 -174 27 -174 28 -173 b 17 -176 20 -176 19 -176 b 6 -174 13 -176 9 -174 b -81 -87 4 -173 -14 -152 b -167 0 -129 -38 -167 0 b -236 -86 -167 0 -198 -38 b -313 -174 -307 -174 -306 -173 b -318 -176 -314 -176 -315 -176 b -328 -174 -321 -176 -325 -174 b -491 -12 -330 -173 -367 -137 l -503 0 l -530 -34 b -570 -77 -562 -73 -564 -76 b -577 -79 -571 -79 -574 -79 b -597 -58 -588 -79 -597 -69 b -596 -49 -597 -55 -597 -52 b -417 172 -593 -43 -423 167 b -413 173 -417 172 -415 173 ',\n },\n stringsDownBow: {\n x_min: -228.671875,\n x_max: 227.3125,\n ha: 232,\n o: 'm -217 487 l -213 488 l 0 488 l 212 488 l 216 487 b 225 476 220 484 224 480 l 227 473 l 227 244 l 227 15 l 225 12 b 206 0 223 4 215 0 b 197 1 204 0 200 0 b 187 12 193 4 189 6 l 186 15 l 186 138 l 186 262 l -1 262 l -187 262 l -187 138 l -187 15 l -189 12 b -208 0 -193 4 -200 0 b -227 12 -216 0 -223 4 l -228 15 l -228 244 l -228 473 l -227 476 b -217 487 -225 480 -221 484 ',\n },\n stringsUpBow: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -137 381 b -130 383 -134 383 -133 383 b -111 371 -122 383 -114 378 b -55 224 -110 370 -85 305 b 0 80 -25 145 -1 80 b 54 224 0 80 24 145 b 112 377 114 384 110 373 b 127 384 118 381 122 384 b 148 362 138 384 148 374 l 148 356 l 83 183 b 16 9 47 88 17 11 b -1 0 12 2 5 0 b -14 5 -5 0 -10 1 b -84 183 -19 9 -13 -6 l -149 356 l -149 362 b -137 381 -149 371 -145 378 ',\n },\n stringsHarmonic: {\n x_min: -122.5,\n x_max: 121.140625,\n ha: 124,\n o: 'm -16 145 b 0 147 -10 147 -5 147 b 121 -1 66 147 121 77 b 114 -49 121 -16 118 -33 b -1 -148 95 -112 47 -148 b -85 -106 -31 -148 -61 -134 b -122 -1 -110 -76 -122 -38 b -16 145 -122 68 -81 134 m 12 111 b 0 113 8 113 4 113 b -68 22 -29 113 -61 73 b -70 0 -69 15 -70 6 b -13 -113 -70 -49 -47 -98 b -1 -115 -9 -115 -5 -115 b 63 -40 24 -115 53 -83 b 68 -1 66 -27 68 -15 b 12 111 68 48 46 97 ',\n },\n pluckedSnapPizzicatoAbove: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 ',\n },\n pluckedSnapPizzicatoBelow: {\n x_min: -149.71875,\n x_max: 148.359375,\n ha: 151,\n o: 'm -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 ',\n },\n pluckedLeftHandPizzicato: {\n x_min: 0,\n x_max: 319.859375,\n ha: 326,\n o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ',\n },\n keyboardPedalPed: {\n x_min: -1.359375,\n x_max: 1064.390625,\n ha: 1086,\n o: 'm 296 692 b 314 694 302 694 307 694 b 386 685 337 694 366 689 b 548 498 480 660 548 580 b 548 481 548 492 548 487 b 455 395 541 426 499 395 b 370 462 420 395 383 417 b 362 496 364 477 362 488 b 377 514 362 509 367 514 b 393 501 386 514 390 510 b 432 474 397 484 413 474 b 470 487 445 474 458 478 b 491 530 484 496 491 510 b 490 544 491 534 491 539 b 333 660 479 606 411 657 l 323 662 l 315 646 b 269 524 285 591 269 556 b 321 431 269 492 287 466 b 349 395 338 413 343 408 b 363 342 359 378 363 362 b 359 312 363 333 362 322 b 285 158 348 266 318 206 b 281 152 283 155 281 152 b 281 152 281 152 281 152 b 287 154 283 152 284 152 b 318 155 298 154 308 155 b 461 98 371 155 419 136 l 464 97 l 483 112 b 503 129 494 120 503 127 b 504 130 503 129 504 129 b 503 138 504 131 503 134 b 500 180 500 152 500 166 b 553 326 500 238 518 288 b 604 366 560 331 592 358 b 649 381 617 376 632 381 b 696 362 665 381 681 374 b 724 302 714 347 724 324 b 695 238 724 278 714 255 b 660 210 691 234 662 212 b 579 148 658 209 582 151 b 579 148 579 148 579 148 b 596 106 579 144 589 119 b 622 77 604 88 609 83 b 657 69 632 72 645 69 b 748 112 688 69 721 84 b 755 123 754 117 755 120 b 755 127 755 124 755 126 b 751 165 752 137 751 151 b 758 219 751 183 754 202 b 894 387 774 290 820 347 b 896 390 896 388 896 388 b 891 398 896 391 895 392 b 622 560 827 477 730 535 b 600 580 605 564 600 569 b 617 596 600 591 607 596 b 628 595 622 596 624 596 b 1057 248 846 552 1020 412 b 1064 191 1061 229 1064 209 b 922 0 1064 94 1005 9 b 902 -1 916 -1 909 -1 b 774 76 847 -1 800 26 b 769 83 770 81 770 83 b 769 81 769 83 769 83 b 627 -1 733 29 677 -1 b 548 27 597 -1 570 8 b 515 88 537 37 525 61 l 513 95 l 510 93 l 453 45 b 390 0 396 0 396 0 b 390 0 390 0 390 0 b 374 15 381 0 377 4 b 268 105 359 69 314 105 b 250 104 262 105 257 105 l 243 102 l 234 90 b 155 1 201 49 159 2 b 147 -1 152 0 149 -1 b 130 15 138 -1 130 6 b 132 20 130 18 132 19 b 136 31 133 22 134 27 b 220 131 149 74 178 109 b 231 137 225 134 230 136 b 302 278 280 202 302 244 b 265 335 302 299 295 309 b 209 442 234 363 213 402 b 209 455 209 446 209 451 b 279 648 209 502 232 564 l 285 659 l 283 659 b 176 627 238 653 210 645 b 57 477 111 594 66 538 b 55 459 55 471 55 464 b 72 409 55 437 61 415 b 93 403 78 405 87 403 b 152 467 123 403 151 431 b 168 488 153 483 157 488 b 185 462 181 488 185 483 l 185 460 b 137 344 183 409 168 369 b 78 322 119 328 98 322 b 13 360 50 322 25 335 b -1 426 4 380 -1 402 b 89 610 -1 488 32 559 b 296 692 147 659 210 685 m 926 348 b 921 353 924 351 922 353 b 914 348 920 353 918 351 b 823 167 857 306 823 237 b 828 124 823 154 826 138 b 890 31 837 79 862 40 b 896 31 892 31 894 31 b 956 104 916 31 940 59 b 970 191 965 129 970 159 b 966 241 970 208 969 224 b 926 348 959 277 945 313 m 627 326 b 619 326 624 326 622 326 b 598 316 611 326 604 323 b 568 215 579 288 568 255 b 568 208 568 213 568 210 b 571 183 570 195 570 184 l 571 183 b 594 201 571 183 582 191 l 634 231 b 660 259 653 247 656 248 b 664 278 662 266 664 272 b 627 326 664 299 649 320 ',\n },\n keyboardPedalUp: {\n x_min: -1.359375,\n x_max: 592.078125,\n ha: 604,\n o: 'm 280 692 b 295 694 283 692 289 694 b 310 692 300 694 307 692 b 357 630 340 684 357 657 b 336 580 357 612 351 594 b 311 538 321 566 311 549 b 352 492 311 512 330 492 b 366 495 357 492 362 492 b 397 553 390 503 397 517 b 415 603 397 576 402 591 b 460 623 427 617 443 623 b 509 599 479 623 498 614 b 522 559 518 587 522 573 b 494 506 522 538 513 519 b 451 495 481 498 473 496 b 415 488 432 495 426 494 b 394 449 404 483 394 464 b 394 448 394 448 394 448 l 394 440 l 397 433 b 428 409 404 420 413 413 b 438 408 431 408 435 408 b 479 431 450 408 462 415 b 528 455 495 448 510 455 b 548 452 534 455 541 453 b 592 391 577 442 592 416 b 549 331 592 365 577 340 b 528 327 541 328 534 327 b 479 351 510 327 495 335 b 438 374 464 367 450 374 b 417 369 431 374 424 373 b 394 333 402 360 394 348 b 400 312 394 326 396 319 b 451 287 408 294 420 288 b 513 258 484 285 499 278 b 522 223 519 247 522 234 b 461 159 522 190 496 159 b 449 161 457 159 453 159 b 397 229 416 167 397 191 b 366 288 397 265 390 278 b 352 290 362 290 357 290 b 315 262 336 290 321 280 b 311 245 313 256 311 251 b 334 204 311 233 318 220 b 355 170 348 190 351 184 b 357 152 356 166 357 159 b 355 136 357 147 356 140 b 295 88 345 104 321 88 b 232 152 264 88 232 112 b 255 204 232 174 238 186 b 279 244 273 222 279 231 l 279 245 b 238 290 279 270 259 290 b 224 288 234 290 228 290 b 193 229 200 278 193 265 b 141 161 193 191 174 167 b 129 159 137 159 133 159 b 68 223 93 159 68 190 b 77 258 68 234 70 247 b 138 287 91 278 106 285 b 185 302 166 287 175 291 b 196 333 193 312 196 323 b 174 369 196 347 187 360 b 152 374 166 373 159 374 b 111 351 140 374 126 367 b 62 327 95 335 80 327 b 51 328 58 327 54 327 b -1 391 16 334 -1 363 b 53 455 -1 420 17 449 b 62 455 57 455 59 455 b 111 431 80 455 95 448 b 152 408 127 415 140 408 b 161 409 155 408 159 408 b 193 433 176 413 186 420 l 196 440 l 196 448 b 196 451 196 449 196 449 b 190 471 196 459 194 463 b 137 495 182 489 167 495 l 134 495 l 134 495 b 68 560 95 495 68 521 b 129 623 68 596 95 623 b 144 621 134 623 138 623 b 193 553 175 614 193 589 b 224 495 193 517 200 503 b 238 492 228 492 234 492 b 279 538 259 492 279 512 b 254 580 279 549 269 566 b 232 630 239 594 232 612 b 280 692 232 657 250 684 m 307 456 b 295 458 303 458 299 458 b 230 391 258 458 230 426 b 236 360 230 381 231 371 b 295 324 249 337 272 324 b 353 360 318 324 341 337 b 360 391 357 370 360 381 b 307 456 360 421 340 451 ',\n },\n pictChokeCymbal: {\n x_min: 0,\n x_max: 227.3125,\n ha: 232,\n o: 'm 91 213 b 100 215 93 215 96 215 b 227 58 167 215 224 144 b 227 52 227 56 227 54 b 61 -201 227 -43 164 -138 b 29 -216 44 -212 36 -216 b 23 -210 27 -216 24 -213 b 21 -205 21 -208 21 -206 b 34 -192 21 -201 25 -197 b 122 -55 89 -161 122 -106 b 104 6 122 -33 117 -12 l 103 9 l 96 9 b 4 79 57 9 17 38 b 0 112 1 90 0 101 b 91 213 0 163 36 209 ',\n },\n wiggleArpeggiatoUp: {\n x_min: 58.53125,\n x_max: 228.671875,\n ha: 294,\n o: 'm 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 ',\n },\n arrowheadBlackUp: {\n x_min: -10.890625,\n x_max: 299.4375,\n ha: 294,\n o: 'm 136 460 b 142 462 137 462 140 462 b 166 449 152 462 161 456 b 171 428 168 446 168 445 b 288 131 194 322 238 209 b 298 115 295 120 296 117 b 299 106 298 112 299 109 b 273 81 299 91 287 81 b 255 86 268 81 261 83 b 155 116 225 104 183 116 l 152 116 l 149 108 b 141 83 148 102 144 91 b 134 48 137 69 134 58 b 149 9 134 34 140 24 b 153 -1 152 5 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 147 -11 b 122 2 138 -11 133 -6 b 95 61 104 20 95 38 b 107 108 95 74 99 90 b 108 113 107 111 108 112 b 107 113 108 113 108 113 b 102 113 106 113 104 113 b 31 86 76 108 53 98 b 14 80 24 81 20 80 b -10 106 0 80 -10 91 b 0 131 -10 115 -9 116 b 115 430 49 209 91 317 b 136 460 119 451 123 456 ',\n },\n arrowheadBlackDown: {\n x_min: -10.890625,\n x_max: 298.078125,\n ha: 294,\n o: 'm 138 473 b 142 474 140 473 141 474 b 164 459 148 474 153 470 b 191 402 183 442 191 423 b 181 353 191 388 187 371 b 178 349 179 352 178 349 b 179 348 178 348 179 348 b 185 349 181 348 182 348 b 255 376 210 355 234 363 b 272 381 264 381 266 381 b 298 355 287 381 298 370 b 288 330 298 348 298 345 b 171 34 238 254 194 141 b 166 13 168 16 168 16 b 144 1 161 5 152 1 b 121 15 134 1 125 5 b 115 33 119 18 117 24 b 0 330 91 145 49 252 b -10 355 -9 345 -10 348 b 13 381 -10 371 0 381 b 31 376 19 381 25 380 b 132 345 61 358 103 345 l 136 345 l 137 355 b 145 378 138 359 142 370 b 152 415 149 394 152 405 b 137 452 152 427 148 438 b 133 464 134 458 133 460 b 138 473 133 467 134 470 ',\n },\n vexAccidentalMicrotonal1: {\n x_min: -171.5,\n x_max: 483.1875,\n ha: 493,\n o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 495 20 616 20 616 b 20 373 20 427 20 373 b 115 410 20 373 63 390 l 210 448 l 210 531 b 212 620 210 614 210 616 b 231 632 215 628 223 632 b 246 627 236 632 242 631 b 251 541 251 620 251 628 l 251 463 l 315 489 b 387 514 368 509 381 514 b 393 513 390 514 392 514 b 406 494 402 510 406 502 b 397 476 406 487 404 480 b 323 446 396 474 363 462 l 251 417 l 251 283 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -19 -217 -9 -229 -16 -224 l -20 -215 l -21 48 l -21 310 l -83 287 b -152 262 -133 266 -145 262 b -157 263 -153 262 -155 262 b -171 283 -166 266 -171 274 b -161 301 -171 290 -167 297 b -91 328 -160 302 -129 315 l -21 356 l -21 487 l -20 617 l -19 621 b -8 631 -17 626 -12 630 m 210 288 b 210 401 210 351 210 401 b 114 365 209 401 167 384 l 20 327 l 20 238 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 180 164 199 187 192 l 209 177 b 209 177 209 177 209 177 b 210 288 210 177 210 199 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 ',\n },\n vexAccidentalMicrotonal2: {\n x_min: -1.359375,\n x_max: 386.5625,\n ha: 394,\n o: 'm 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 ',\n },\n vexWiggleArpeggioUp: {\n x_min: 58.53125,\n x_max: 228.671875,\n ha: 294,\n o: 'm 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 ',\n },\n vexNoteHeadMutedBreve: {\n x_min: 0,\n x_max: 370.21875,\n ha: 378,\n o: 'm 0 0 l 0 277 l 61 277 l 122 277 l 122 0 l 122 -278 l 61 -278 l 0 -278 l 0 0 m 246 -1 l 246 277 l 308 277 l 370 277 l 370 -1 l 370 -278 l 308 -278 l 246 -278 l 246 -1 ',\n },\n },\n cssFontWeight: 'normal',\n ascender: 1903,\n underlinePosition: -125,\n cssFontStyle: 'normal',\n boundingBox: {\n yMin: -2065.375,\n xMin: -695.53125,\n yMax: 1901.578125,\n xMax: 1159.671875,\n },\n resolution: 1000,\n original_font_information: {\n postscript_name: 'Gonville-18',\n version_string: 'Version 0.1.8904 ',\n vendor_url: '',\n full_font_name: 'Gonville-18',\n font_family_name: 'Gonville-18',\n copyright: 'No copyright is claimed on this font file.',\n description: '',\n trademark: '',\n designer: '',\n designer_url: '',\n unique_font_identifier: 'FontForge 2.0 : Gonville-18 : 17-3-2010',\n license_url: '',\n license_description: '',\n manufacturer_name: '',\n font_sub_family_name: '18',\n },\n descender: -2066,\n fontFamily: 'Gonville-18',\n lineHeight: 4093,\n underlineThickness: 50,\n};\n","/**\n * The Gonville font was created by Simon Tatham.\n * https://www.chiark.greenend.org.uk/~sgtatham/gonville/\n */\nexport const GonvilleMetrics = {\n name: 'Gonville',\n smufl: false,\n stave: {\n padding: 12,\n endPaddingMax: 10,\n endPaddingMin: 5,\n unalignedNotePadding: 10,\n },\n accidental: {\n noteheadAccidentalPadding: 1,\n leftPadding: 2,\n accidentalSpacing: 3,\n },\n clef: {\n default: {\n point: 40,\n width: 26,\n },\n small: {\n point: 32,\n width: 20,\n },\n annotations: {\n '8va': {\n smuflCode: 'timeSig8',\n default: {\n point: 20,\n treble: {\n line: -1.2,\n shiftX: 11,\n },\n },\n small: {\n point: 18,\n treble: {\n line: -0.4,\n shiftX: 8,\n },\n },\n },\n '8vb': {\n smuflCode: 'timeSig8',\n default: {\n point: 20,\n treble: {\n line: 6.3,\n shiftX: 10,\n },\n bass: {\n line: 4,\n shiftX: 1,\n },\n },\n small: {\n point: 18,\n treble: {\n line: 5.8,\n shiftX: 6,\n },\n bass: {\n line: 3.5,\n shiftX: 0.5,\n },\n },\n },\n },\n // May not need these anymore\n lineCount: {\n '8': { point: 55, shiftY: 14 },\n '7': { point: 47, shiftY: 8 },\n '6': { point: 40, shiftY: 1 },\n '5': { point: 30, shiftY: -6 },\n '4': { point: 23, shiftY: -12 },\n },\n },\n parenthesis: {\n default: {\n point: 39,\n width: 7,\n },\n gracenote: {\n point: (39 * 3) / 5,\n width: 3,\n },\n },\n pedalMarking: {\n up: {\n point: 40,\n },\n down: {\n point: 40,\n },\n },\n // These are for numeric digits, such as in time signatures\n digits: {\n point: 40,\n tupletPoint: 28,\n },\n // articulation: {\n // },\n tremolo: {\n default: {\n point: 25,\n spacing: 4,\n offsetYStemUp: -7,\n offsetYStemDown: 7,\n offsetXStemUp: 9,\n offsetXStemDown: -0.5,\n },\n grace: {\n point: 15,\n spacing: 4,\n offsetYStemUp: -7,\n offsetYStemDown: 7,\n offsetXStemUp: 6.5,\n offsetXStemDown: -0.5,\n },\n },\n staveRepetition: {\n symbolText: {\n offsetX: 12,\n offsetY: 25,\n spacing: 5,\n },\n coda: {\n offsetY: 25,\n },\n segno: {\n offsetY: 0,\n },\n },\n // noteHead: {\n // },\n stem: {\n heightAdjustmentForFlag: -3,\n // These are stem (Y) offsets to the note heads. To shift the\n // noteheads (x-position) themselves, see glyphs.notehead.custom.\n noteHead: {\n noteheadTriangleUpHalf: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpBlack: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpWhole: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadXHalf: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXBlack: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXWhole: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadHalf: {\n offsetYBaseStemUp: -1.5,\n offsetYBaseStemDown: 1.5,\n },\n noteheadBlack: {\n offsetYBaseStemUp: -1.5,\n offsetYBaseStemDown: 1.5,\n },\n noteheadSquareWhite: {\n offsetYBaseStemDown: -5,\n offsetYBaseStemUp: 5,\n },\n },\n },\n glyphs: {\n flag: {\n shiftX: -0.08,\n flag8thDown: {\n shiftX: -0.16,\n },\n flag16thDown: {\n shiftX: -0.16,\n },\n flag32ndDown: {\n shiftX: -0.16,\n shiftY: 9,\n },\n flag64thDown: {\n shiftX: -0.16,\n shiftY: 13,\n },\n flag128thDown: {\n shiftX: -0.16,\n shiftY: 22,\n },\n flag32ndUp: {\n shiftY: -9,\n },\n flag64thUp: {\n shiftY: -13,\n },\n flag128thUp: {\n shiftY: -22,\n },\n },\n stringNumber: {\n verticalPadding: 8,\n stemPadding: 2,\n leftPadding: 5,\n rightPadding: 6,\n },\n textNote: {\n point: 40,\n default: {},\n ornamentTrill: {\n shiftX: -5,\n shiftY: 4,\n },\n },\n noteHead: {\n minPadding: 2,\n custom: {\n noteheadCircleXStemUp: {\n shiftX: -1.5,\n },\n noteheadXWholeStemUp: {\n shiftX: -5,\n },\n noteheadTriangleUpWholeStemUp: {\n shiftX: -6,\n },\n },\n },\n chordSymbol: {\n global: {\n superscriptOffset: -400,\n subscriptOffset: 300,\n kerningOffset: -250,\n lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'],\n upperKerningText: ['A', 'L'],\n spacing: 100,\n superSubRatio: 0.66,\n },\n csymDiminished: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymHalfDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymAugmented: {\n scale: 1,\n leftSideBearing: 0,\n advanceWidth: 530,\n yOffset: 0,\n },\n csymParensLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 155,\n yOffset: 250,\n },\n csymParensRightTall: {\n scale: 0.8,\n leftSideBearing: -40,\n advanceWidth: 189,\n yOffset: 250,\n },\n csymBracketLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 328,\n yOffset: 0,\n },\n csymBracketRightTall: {\n scale: 0.8,\n leftSideBearing: 1,\n advanceWidth: 600,\n yOffset: 0,\n },\n csymParensLeftVeryTall: {\n scale: 0.9,\n leftSideBearing: 0,\n advanceWidth: 121,\n yOffset: 350,\n },\n csymParensRightVeryTall: {\n scale: 0.9,\n leftSideBearing: 50,\n advanceWidth: 111,\n yOffset: 350,\n },\n csymDiagonalArrangementSlash: {\n scale: 0.6,\n leftSideBearing: -1,\n advanceWidth: 990,\n yOffset: 0,\n },\n csymMinor: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 482,\n yOffset: 0,\n },\n csymMajorSeventh: {\n scale: 0.9,\n leftSideBearing: 200,\n yOffset: 0,\n advanceWidth: 600,\n },\n accidentalSharp: {\n scale: 0.75,\n leftSideBearing: 40,\n advanceWidth: 250,\n yOffset: -402,\n },\n accidentalFlat: {\n scale: 0.95,\n leftSideBearing: -50,\n advanceWidth: 208,\n yOffset: -184,\n },\n },\n jazzOrnaments: {\n brassScoop: {\n scale: 1.0,\n xOffset: -12,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassDoitMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 22,\n },\n brassFallLipShort: {\n scale: 1.0,\n xOffset: 17,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassLiftMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 5,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassFallRoughMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 28,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassBend: {\n scale: 1.0,\n xOffset: 2,\n yOffset: -8,\n stemUpYOffset: 24,\n reportedWidth: 5,\n },\n brassMuteClosed: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -9,\n stemUpYOffset: 24,\n reportedWidth: 5,\n },\n brassMuteOpen: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -7,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassFlip: {\n scale: 1.0,\n xOffset: 10,\n yOffset: -4,\n stemUpYOffset: 7,\n reportedWidth: 5,\n },\n brassJazzTurn: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -4,\n stemUpYOffset: 10,\n reportedWidth: 28,\n },\n brassSmear: {\n scale: 1.0,\n xOffset: 10,\n yOffset: -4,\n stemUpYOffset: 9,\n reportedWidth: 5,\n },\n },\n tremolo: {\n default: {\n shiftY: -10,\n },\n grace: {\n shiftY: -5,\n },\n },\n tuplet: {\n noteHeadOffset: 20,\n stemOffset: 10,\n bottomLine: 4,\n topModifierOffset: 15,\n },\n },\n};\n","export const LelandFont = {\n glyphs: {\n bracketTop: {\n x_min: 0,\n x_max: 491,\n y_min: 0,\n y_max: 279,\n ha: 279,\n o: 'm 697 399 b 687 402 694 400 690 402 b 671 395 681 402 674 400 b 249 168 668 390 524 168 l 20 168 b 0 150 9 168 0 161 l 0 20 l 0 0 l 176 0 b 706 374 619 0 704 370 b 707 382 706 376 707 379 b 697 399 707 389 703 395 z',\n },\n bracketBottom: {\n x_min: 0,\n x_max: 491,\n y_min: -279,\n y_max: 0,\n ha: 279,\n o: 'm 697 -399 b 707 -382 703 -395 707 -389 b 706 -374 707 -379 706 -376 b 176 0 704 -370 619 0 l 0 0 l 0 -20 l 0 -150 b 20 -168 0 -161 9 -168 l 249 -168 b 671 -395 524 -168 668 -390 b 687 -402 674 -400 681 -402 b 697 -399 690 -402 694 -400 z',\n },\n segno: {\n x_min: 0,\n x_max: 654,\n y_min: 0,\n y_max: 869,\n ha: 869,\n o: 'm 546 690 l 838 1207 b 841 1215 840 1210 841 1212 b 832 1233 841 1221 837 1230 l 809 1248 b 798 1251 806 1250 801 1251 b 780 1241 792 1251 783 1247 l 487 721 l 217 860 b 99 995 147 897 99 924 b 236 1165 99 1120 179 1165 b 343 1073 288 1165 325 1130 b 454 988 357 1022 405 988 b 477 991 461 988 469 989 b 541 1076 526 1002 541 1045 b 540 1089 541 1080 541 1084 b 294 1225 534 1116 514 1225 b 0 939 72 1225 0 1053 b 125 706 0 825 42 753 l 397 563 l 104 45 b 102 35 102 42 102 37 b 111 19 102 29 107 22 l 132 3 b 144 0 135 1 141 0 b 148 0 145 0 147 0 b 161 10 153 1 158 6 l 456 531 l 704 403 b 842 256 780 361 842 318 b 706 86 842 131 763 86 b 599 177 654 86 616 120 b 488 262 585 228 537 262 b 465 259 481 262 472 261 b 402 177 418 248 402 206 b 403 163 402 171 402 167 b 649 26 409 135 429 26 b 942 312 871 26 942 199 b 821 549 942 426 901 507 z m 52 444 b 118 416 69 426 95 416 b 183 444 141 416 166 426 b 210 508 200 461 210 485 b 183 573 210 531 200 556 b 118 600 166 590 141 600 b 52 573 95 600 69 590 b 24 508 35 556 24 531 b 52 444 24 485 35 461 z m 760 730 b 825 703 778 713 802 703 b 890 730 848 703 873 713 b 917 795 907 747 917 772 b 890 861 917 818 907 844 b 825 888 873 878 848 888 b 760 861 802 888 778 878 b 733 795 743 844 733 818 b 760 730 733 772 743 747 z',\n },\n coda: {\n x_min: 0,\n x_max: 745,\n y_min: -113,\n y_max: 735,\n ha: 848,\n o: 'm 924 467 b 560 896 916 697 757 881 l 560 1038 b 540 1058 560 1050 552 1058 l 524 1058 b 505 1038 513 1058 505 1050 l 505 896 b 150 467 311 877 158 693 l 20 467 b 0 446 9 467 0 458 l 0 432 b 20 412 0 420 9 412 l 150 412 b 505 0 166 193 317 17 l 505 -143 b 524 -163 505 -154 513 -163 l 540 -163 b 560 -143 552 -163 560 -154 l 560 0 b 923 412 753 13 907 190 l 1054 412 b 1073 432 1066 412 1073 420 l 1073 446 b 1054 467 1073 458 1066 467 z m 560 467 l 560 852 b 773 467 716 837 773 671 z m 505 467 l 301 467 b 505 851 301 668 357 831 z m 505 412 l 505 45 b 301 412 366 65 301 219 z m 560 412 l 772 412 b 560 45 772 215 706 60 z',\n },\n gClef: {\n x_min: 0,\n x_max: 640,\n y_min: -666,\n y_max: 1112,\n ha: 1778,\n o: 'm 809 -30 b 665 -279 809 -132 768 -238 b 586 186 635 -107 596 122 b 809 -30 716 186 809 98 z m 605 -297 b 521 -305 576 -302 549 -305 b 140 56 315 -305 140 -161 b 390 498 140 232 264 389 b 459 562 415 520 438 540 b 492 357 472 484 482 416 b 272 45 361 318 272 180 b 467 -194 272 -56 351 -194 b 491 -176 478 -194 491 -189 b 459 -144 491 -163 477 -156 b 372 -1 403 -109 372 -72 b 521 177 372 86 436 157 z m 478 1184 b 632 1392 491 1241 557 1392 b 688 1223 654 1392 688 1322 b 478 863 688 1073 577 960 b 462 1037 469 920 462 976 b 478 1184 462 1090 467 1139 z m 176 -739 b 444 -959 176 -834 249 -959 b 622 -910 511 -959 570 -942 b 720 -670 700 -855 720 -760 b 697 -467 720 -613 711 -549 b 675 -338 693 -438 684 -395 b 922 3 816 -292 922 -145 b 557 367 922 220 768 367 b 516 619 543 454 528 539 b 773 1188 668 779 773 959 b 710 1477 773 1319 733 1426 b 608 1601 675 1551 634 1601 b 505 1528 598 1601 553 1584 b 387 1113 413 1418 387 1234 b 419 804 387 1035 395 965 b 312 701 418 802 343 726 b 0 117 181 579 0 405 b 503 -364 0 -153 235 -364 b 616 -354 544 -364 583 -360 b 660 -670 644 -492 660 -593 b 438 -899 660 -819 583 -899 b 370 -891 403 -899 373 -891 b 366 -887 369 -890 366 -888 b 373 -881 366 -884 369 -883 b 508 -721 441 -871 508 -814 b 341 -562 508 -644 449 -562 b 176 -739 240 -562 176 -644 z',\n },\n cClef: {\n x_min: 0,\n x_max: 627,\n y_min: -480,\n y_max: 482,\n ha: 962,\n o: 'm 19 675 b 0 657 9 675 0 667 l 0 -654 b 19 -672 0 -664 9 -672 l 122 -672 b 141 -654 132 -672 141 -664 l 141 657 b 122 675 141 667 132 675 z m 903 -376 b 619 -58 903 -197 808 -58 b 505 -95 586 -58 562 -60 b 426 1 503 -89 474 -32 b 505 98 474 35 503 92 b 641 60 560 65 579 60 b 903 379 816 60 903 223 b 580 694 903 580 755 694 b 318 517 472 694 318 649 b 438 400 318 446 367 400 b 546 510 501 400 546 446 b 425 615 546 589 494 615 b 547 651 458 638 503 651 b 723 400 698 651 723 530 b 593 128 723 289 720 128 b 438 279 467 128 441 265 b 418 300 438 281 438 300 b 396 279 397 300 396 281 b 264 29 383 200 344 62 l 264 657 b 246 675 264 667 256 675 b 228 657 236 675 228 667 l 228 -654 b 246 -672 228 -664 236 -672 b 264 -654 256 -672 264 -664 l 264 -26 b 396 -278 348 -60 380 -197 b 418 -297 396 -279 397 -297 b 438 -278 438 -297 438 -279 b 593 -125 441 -262 467 -125 b 723 -397 720 -125 723 -287 b 547 -648 723 -527 698 -648 b 425 -612 503 -648 458 -635 b 441 -613 426 -612 432 -613 b 546 -507 504 -613 546 -569 b 438 -397 546 -444 501 -397 b 318 -514 367 -397 318 -444 b 580 -691 318 -647 472 -691 b 903 -376 755 -691 903 -577 z',\n },\n fClef: {\n x_min: 0,\n x_max: 664,\n y_min: -617,\n y_max: 251,\n ha: 868,\n o: 'm 366 361 b 167 298 256 361 168 298 b 37 112 84 236 50 163 b 27 36 30 86 27 60 b 46 -58 27 1 33 -30 b 140 -138 63 -96 96 -124 b 194 -147 157 -144 176 -147 b 287 -122 226 -147 259 -138 b 359 10 331 -98 359 -46 b 289 134 359 60 333 107 b 206 160 259 154 230 160 b 160 153 189 160 173 157 b 109 122 145 147 121 132 b 147 215 114 150 131 192 b 219 279 163 238 194 266 b 351 308 255 300 301 308 b 570 -52 498 308 570 190 b 477 -399 570 -186 520 -314 b 310 -635 429 -494 366 -585 b 17 -837 160 -772 19 -837 b 0 -864 17 -837 0 -847 b 1 -871 0 -867 1 -868 b 27 -888 6 -886 19 -888 b 35 -887 29 -888 33 -887 b 331 -717 36 -887 200 -819 b 528 -544 405 -664 471 -606 b 661 -367 580 -488 625 -428 b 760 -50 724 -259 760 -147 b 670 239 760 69 729 168 b 366 361 602 320 500 361 z m 818 179 b 887 107 818 138 850 107 b 956 179 924 107 956 138 b 887 252 956 219 924 252 b 818 179 850 252 818 219 z m 818 -177 b 887 -251 818 -217 850 -251 b 956 -177 924 -251 956 -217 b 887 -104 956 -137 924 -104 b 818 -177 850 -104 818 -137 z',\n },\n unpitchedPercussionClef1: {\n x_min: 0,\n x_max: 352,\n y_min: -252,\n y_max: 252,\n ha: 504,\n o: 'm 19 363 b 0 344 9 363 0 354 l 0 -344 b 19 -363 0 -354 9 -363 l 177 -363 b 196 -344 187 -363 196 -354 l 196 344 b 177 363 196 354 187 363 z m 330 363 b 311 344 320 363 311 354 l 311 -344 b 330 -363 311 -354 320 -363 l 488 -363 b 507 -344 498 -363 507 -354 l 507 344 b 488 363 507 354 498 363 z',\n },\n '6stringTabClef': {\n x_min: 0,\n x_max: 439,\n y_min: -743,\n y_max: 746,\n ha: 1489,\n o: 'm 52 1074 l 52 958 l 249 958 l 249 419 l 387 419 l 387 958 l 583 958 l 583 1074 z m 0 -333 l 145 -333 l 192 -196 l 436 -196 l 481 -333 l 632 -333 l 396 334 l 238 334 z m 315 181 l 400 -81 l 229 -81 z m 566 -474 b 393 -402 531 -428 475 -403 l 71 -402 l 71 -1070 l 372 -1070 b 374 -1070 373 -1070 373 -1070 b 465 -1061 405 -1070 435 -1067 b 541 -1027 494 -1056 520 -1043 b 588 -975 560 -1012 575 -995 b 618 -868 608 -943 618 -907 b 592 -770 618 -829 609 -798 b 514 -711 575 -743 549 -724 b 566 -674 537 -700 554 -688 b 596 -576 586 -649 596 -616 b 566 -474 596 -536 586 -503 z m 348 -518 b 428 -528 380 -518 408 -521 b 464 -590 452 -539 464 -559 b 436 -649 464 -619 455 -638 b 366 -665 418 -661 395 -665 l 203 -665 l 203 -518 z m 367 -776 b 435 -788 396 -776 419 -780 b 477 -858 464 -801 477 -824 b 433 -942 477 -900 462 -927 b 366 -953 418 -949 395 -953 l 203 -953 l 203 -776 z',\n },\n timeSig0: {\n x_min: 15,\n x_max: 389,\n y_min: -254,\n y_max: 255,\n ha: 509,\n o: 'm 291 367 b 22 0 138 367 22 209 b 291 -366 22 -209 138 -366 b 560 0 444 -366 560 -209 b 291 367 560 209 444 367 z m 376 -200 b 291 -308 376 -252 353 -308 b 206 -200 229 -308 206 -252 l 206 200 b 291 308 206 252 229 308 b 376 200 353 308 376 252 z',\n },\n timeSig1: {\n x_min: 15,\n x_max: 336,\n y_min: -243,\n y_max: 245,\n ha: 488,\n o: 'm 359 -284 l 359 336 b 341 353 359 346 351 353 l 199 353 b 190 350 196 353 193 351 b 184 344 189 348 186 346 l 23 65 b 22 56 22 62 22 59 b 30 42 22 50 26 45 l 58 26 b 66 23 60 24 63 23 b 81 32 72 23 78 27 l 183 207 l 183 -284 l 73 -284 b 56 -301 63 -284 56 -291 l 56 -333 b 73 -350 56 -343 63 -350 l 468 -350 b 484 -333 478 -350 484 -343 l 484 -301 b 468 -284 484 -291 478 -284 z',\n },\n timeSig2: {\n x_min: 15,\n x_max: 377,\n y_min: -243,\n y_max: 245,\n ha: 488,\n o: 'm 492 -56 b 382 -192 481 -88 452 -192 b 190 -134 288 -192 268 -134 b 153 -138 179 -134 167 -135 b 341 -36 153 -138 189 -84 b 533 173 494 12 533 86 b 288 353 533 233 505 353 b 30 156 71 353 30 222 b 138 49 30 96 79 49 b 245 156 197 49 245 96 b 179 255 245 196 216 240 b 168 271 174 256 168 264 b 202 297 168 279 176 289 b 251 304 209 300 229 304 b 311 288 271 304 294 300 b 348 180 338 271 348 245 b 65 -150 348 12 148 -24 b 22 -278 65 -150 22 -210 b 73 -350 22 -346 56 -350 b 121 -305 96 -350 121 -331 b 117 -287 121 -300 120 -294 b 105 -239 108 -266 105 -251 b 107 -226 105 -235 105 -230 b 154 -203 108 -217 120 -203 b 238 -289 196 -203 212 -252 b 350 -350 264 -327 304 -350 b 484 -264 396 -350 458 -317 b 543 -63 510 -210 543 -102 b 518 -36 543 -45 531 -36 b 492 -56 508 -36 498 -42 z',\n },\n timeSig3: {\n x_min: 14.984905204685425,\n x_max: 364,\n y_min: -244,\n y_max: 244,\n ha: 488,\n o: 'm 392 23 b 514 168 507 68 514 143 b 514 176 514 171 514 174 b 262 351 514 189 510 351 b 22 176 14 351 22 176 l 23 176 l 22 173 b 115 81 22 121 63 81 b 207 173 167 81 207 121 b 135 264 207 215 176 255 b 140 268 137 265 138 266 b 215 289 160 282 187 289 b 340 176 275 289 340 253 b 255 69 340 85 272 72 b 140 60 238 66 157 60 b 121 40 122 60 121 40 l 121 12 b 140 -6 121 12 124 -4 b 243 -14 164 -7 197 -7 b 340 -167 307 -23 340 -66 b 215 -289 340 -264 275 -289 b 121 -266 174 -289 137 -278 b 207 -174 168 -264 207 -222 b 115 -81 207 -122 167 -81 b 22 -174 63 -81 22 -122 b 22 -180 22 -174 22 -177 b 78 -298 22 -199 26 -251 b 236 -351 134 -350 204 -351 b 524 -147 374 -351 524 -304 b 389 23 524 -42 452 3 z',\n },\n timeSig4: {\n x_min: 14,\n x_max: 442,\n y_min: -248,\n y_max: 249,\n ha: 497,\n o: 'm 300 -183 l 300 -289 l 180 -289 b 160 -310 170 -289 160 -298 l 160 -337 b 180 -357 160 -348 170 -357 l 616 -357 b 636 -337 628 -357 636 -348 l 636 -310 b 616 -289 636 -298 628 -289 l 487 -289 l 487 -183 l 616 -183 b 636 -161 628 -183 636 -173 l 636 -134 b 616 -114 636 -124 628 -114 l 487 -114 l 487 115 b 477 134 487 124 482 131 l 459 143 b 452 144 456 144 455 144 b 449 144 451 144 451 144 b 436 140 445 144 439 143 l 305 20 b 300 4 301 16 300 10 l 300 -114 l 132 -114 b 464 287 132 -114 294 59 b 471 307 469 294 471 301 b 467 321 471 314 468 320 l 435 353 b 420 359 431 356 426 359 b 206 359 412 359 217 359 b 187 341 196 359 189 350 b 143 118 187 341 180 235 b 24 -124 105 1 62 -71 b 20 -140 24 -124 20 -131 b 22 -148 20 -143 20 -145 b 36 -174 26 -158 36 -174 b 52 -183 36 -174 39 -183 z',\n },\n timeSig5: {\n x_min: 15,\n x_max: 362,\n y_min: -244,\n y_max: 246,\n ha: 490,\n o: 'm 39 314 b 46 170 39 314 46 245 b 46 151 46 164 46 157 b 39 -24 45 71 39 -24 b 39 -29 39 -24 39 -26 b 49 -48 39 -35 40 -46 b 99 -59 62 -50 92 -58 b 107 -59 102 -59 104 -59 b 121 -49 112 -59 118 -58 b 235 45 128 -30 144 45 b 356 -112 337 45 356 -43 b 238 -292 356 -184 333 -288 b 226 -292 233 -292 230 -292 b 166 -282 193 -292 174 -288 b 158 -274 161 -281 158 -276 b 164 -264 158 -269 160 -266 b 222 -168 177 -255 222 -239 b 117 -71 222 -98 173 -71 b 22 -171 60 -71 22 -122 b 111 -318 22 -220 36 -275 b 252 -351 147 -338 199 -351 b 456 -275 325 -351 405 -328 b 521 -109 503 -228 521 -167 b 433 79 521 -32 487 43 b 271 124 397 104 336 124 b 131 84 223 124 173 112 b 125 82 130 82 127 82 b 115 92 120 82 115 86 l 115 183 b 131 199 115 192 122 199 l 132 199 b 252 192 154 197 202 192 b 372 209 295 192 340 196 b 474 320 439 236 462 289 b 477 334 475 324 477 330 b 451 354 477 346 469 354 b 431 351 445 354 439 353 b 252 328 360 334 305 328 b 88 343 200 328 150 334 b 71 344 88 343 81 344 b 39 320 56 344 39 340 b 39 314 39 317 39 315 z',\n },\n timeSig6: {\n x_min: 15,\n x_max: 387,\n y_min: -244,\n y_max: 245,\n ha: 489,\n o: 'm 356 69 b 216 22 268 69 236 43 b 209 98 212 52 209 75 b 216 167 209 121 212 141 b 338 287 225 220 261 287 b 410 259 374 287 396 275 b 356 174 380 246 356 207 b 448 82 356 122 396 82 b 541 174 500 82 541 122 l 541 177 b 541 179 541 177 541 177 b 533 225 541 192 539 213 b 310 353 514 276 454 353 b 58 163 180 353 86 229 b 22 -23 43 128 22 58 b 131 -285 22 -111 46 -210 b 318 -351 215 -348 268 -351 b 557 -125 369 -351 557 -292 b 356 69 557 16 446 69 z m 302 -291 b 216 -145 255 -291 216 -226 b 302 1 216 -65 255 1 b 390 -145 350 1 390 -65 b 302 -291 390 -226 350 -291 z',\n },\n timeSig7: {\n x_min: 15,\n x_max: 366,\n y_min: -250,\n y_max: 251,\n ha: 501,\n o: 'm 233 -177 b 160 -336 202 -225 160 -282 b 180 -360 160 -351 164 -360 b 264 -351 203 -360 217 -354 b 278 -350 268 -351 274 -350 b 369 -360 320 -350 359 -360 b 405 -331 382 -360 406 -344 b 405 -327 405 -330 405 -328 b 396 -226 405 -324 396 -279 b 408 -130 396 -196 399 -161 b 503 151 425 -62 471 60 b 527 308 518 196 527 275 b 526 341 527 321 527 327 b 510 361 524 356 518 361 b 484 361 503 361 491 361 b 467 341 477 361 467 356 b 406 228 467 327 464 228 b 235 351 346 228 328 351 b 86 252 145 351 91 261 l 86 321 b 71 337 86 330 79 337 l 37 337 b 22 321 29 337 22 330 l 22 55 b 37 39 22 46 29 39 l 71 39 b 86 55 79 39 86 46 l 86 101 b 158 179 86 134 108 179 b 328 124 209 179 213 124 b 425 143 357 124 410 128 b 233 -177 413 120 266 -130 z',\n },\n timeSig8: {\n x_min: 15,\n x_max: 393,\n y_min: -248,\n y_max: 246,\n ha: 494,\n o: 'm 467 26 b 547 166 514 62 547 108 b 294 354 547 269 433 354 b 40 166 154 354 40 269 b 122 13 40 108 55 56 b 22 -147 58 -24 22 -78 b 294 -357 22 -264 144 -357 b 566 -147 444 -357 566 -264 b 467 26 566 -78 541 -13 z m 294 -276 b 122 -145 202 -276 122 -226 b 197 -26 122 -49 197 -26 b 435 -187 295 -59 435 -108 b 294 -276 435 -226 384 -276 z m 386 65 b 180 209 288 96 180 144 b 294 288 180 265 232 288 b 444 180 383 288 444 246 b 386 65 444 111 412 78 z',\n },\n timeSig9: {\n x_min: 15,\n x_max: 387,\n y_min: -244,\n y_max: 245,\n ha: 489,\n o: 'm 223 -68 b 363 -20 311 -68 343 -42 b 370 -96 367 -50 370 -73 b 363 -166 370 -120 367 -140 b 240 -285 354 -219 318 -285 b 168 -258 204 -285 183 -274 b 223 -173 199 -245 223 -206 b 131 -81 223 -121 183 -81 b 37 -173 79 -81 37 -121 l 37 -176 b 37 -177 37 -176 37 -176 b 46 -223 37 -190 40 -212 b 269 -351 65 -275 125 -351 b 521 -161 399 -351 492 -228 b 557 24 536 -127 557 -56 b 448 287 557 112 533 212 b 261 353 364 350 311 353 b 22 127 210 353 22 294 b 223 -68 22 -14 132 -68 z m 276 294 b 363 147 324 294 363 228 b 276 1 363 66 324 1 b 189 147 229 1 189 66 b 276 294 189 228 229 294 z',\n },\n timeSigCommon: {\n x_min: 0,\n x_max: 463,\n y_min: -256,\n y_max: 258,\n ha: 514,\n o: 'm 468 258 b 406 147 432 235 406 193 b 408 130 406 141 406 135 b 521 17 415 71 462 24 b 537 17 526 17 533 17 b 667 147 609 17 667 75 b 667 156 667 147 667 151 b 664 177 667 161 665 171 b 350 372 651 239 595 372 b 0 17 36 372 0 111 b 382 -369 0 -154 22 -369 b 641 -131 524 -369 635 -285 b 629 -120 641 -124 636 -120 l 611 -120 b 599 -131 605 -120 599 -125 b 382 -323 593 -251 508 -323 b 196 -128 256 -323 196 -255 l 196 147 b 356 320 196 228 228 320 b 469 271 423 320 454 295 b 471 264 471 268 471 266 b 468 258 471 262 471 259 z',\n },\n timeSigCutCommon: {\n x_min: 0,\n x_max: 463,\n y_min: -376,\n y_max: 388,\n ha: 764,\n o: 'm 611 -120 b 599 -131 605 -120 599 -125 b 382 -323 593 -251 508 -323 b 369 -323 377 -323 373 -323 l 369 320 b 469 269 428 317 455 292 b 471 264 471 266 471 265 b 468 258 471 261 471 259 b 406 147 432 235 406 193 b 408 130 406 141 406 135 b 523 17 415 71 464 24 b 537 17 527 17 533 17 b 667 147 609 17 667 75 b 667 156 667 147 667 151 b 664 177 667 161 665 171 b 369 370 651 236 598 364 l 369 543 b 353 559 369 552 361 559 l 314 559 b 298 543 305 559 298 552 l 298 369 b 0 17 32 341 0 105 b 298 -364 0 -140 17 -334 l 298 -526 b 314 -541 298 -534 305 -541 l 353 -541 b 369 -526 361 -541 369 -534 l 369 -369 b 382 -369 373 -369 377 -369 b 641 -131 524 -369 635 -285 b 629 -120 641 -124 636 -120 z m 196 147 b 298 312 196 215 216 289 l 298 -310 b 196 -128 229 -285 196 -223 z',\n },\n timeSigPlus: {\n x_min: 0,\n x_max: 408,\n y_min: -204,\n y_max: 204,\n ha: 408,\n o: 'm 327 33 l 327 275 b 308 294 327 285 318 294 l 279 294 b 261 275 269 294 261 285 l 261 33 l 19 33 b 0 14 9 33 0 24 l 0 -13 b 19 -33 0 -23 9 -33 l 261 -33 l 261 -274 b 279 -294 261 -284 269 -294 l 308 -294 b 327 -274 318 -294 327 -284 l 327 -33 l 567 -33 b 588 -13 577 -33 588 -23 l 588 14 b 567 33 588 24 577 33 z',\n },\n noteheadDoubleWhole: {\n x_min: 0,\n x_max: 538,\n y_min: -178,\n y_max: 179,\n ha: 357,\n o: 'm 33 258 b 20 258 27 258 26 258 b 0 238 9 258 0 249 b 0 -236 0 226 0 -226 b 20 -256 0 -246 9 -256 b 33 -256 26 -256 27 -256 b 53 -236 43 -256 53 -245 b 53 238 53 -228 53 226 b 33 258 53 249 45 258 z m 649 258 b 636 258 644 258 642 258 b 616 238 625 258 616 249 b 616 125 616 235 616 187 b 389 196 573 167 500 196 b 160 125 276 196 203 167 b 160 238 160 187 160 235 b 140 258 160 249 151 258 b 127 258 134 258 132 258 b 107 238 115 258 107 249 b 107 -236 107 226 107 -226 b 127 -256 107 -246 115 -256 b 140 -256 132 -256 134 -256 b 160 -236 150 -256 160 -245 b 160 -122 160 -233 160 -186 b 389 -194 203 -166 276 -194 b 616 -122 500 -194 573 -166 b 616 -236 616 -186 616 -233 b 636 -256 616 -246 625 -256 b 649 -256 642 -256 644 -256 b 670 -236 660 -256 670 -245 b 670 238 670 -228 670 226 b 649 258 670 249 661 258 z m 462 -140 b 400 -148 445 -144 422 -148 b 314 -101 360 -148 333 -135 b 268 68 295 -65 269 29 b 268 76 268 71 268 73 b 314 141 268 109 282 130 b 377 150 331 145 354 150 b 462 102 416 150 442 140 b 510 -66 482 63 510 -29 b 462 -140 510 -104 497 -128 z m 755 258 b 742 258 749 258 747 258 b 721 238 730 258 721 249 b 721 -236 721 226 721 -226 b 742 -256 721 -246 730 -256 b 755 -256 747 -256 749 -256 b 775 -236 765 -256 775 -245 b 775 238 775 -228 775 226 b 755 258 775 249 766 258 z',\n },\n noteheadWhole: {\n x_min: 0,\n x_max: 373,\n y_min: -134,\n y_max: 136,\n ha: 270,\n o: 'm 269 196 b 0 1 71 196 0 95 b 269 -193 0 -92 71 -193 b 537 1 468 -193 537 -92 b 269 196 537 95 468 196 z m 343 -138 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 148 68 176 -63 150 29 b 194 141 145 107 160 130 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 389 -65 363 63 389 -29 b 343 -138 389 -102 377 -128 z',\n },\n noteheadHalf: {\n x_min: 0,\n x_max: 325,\n y_min: -133,\n y_max: 132,\n ha: 265,\n o: 'm 307 190 b 0 -60 167 190 0 73 b 161 -192 0 -122 45 -192 b 468 58 311 -192 468 -69 b 307 190 468 143 396 190 z m 268 -63 b 108 -124 264 -66 158 -124 b 50 -72 60 -124 50 -85 b 200 62 50 -12 194 59 b 360 122 206 65 308 122 b 418 71 395 122 418 102 b 268 -63 418 9 272 -60 z',\n },\n noteheadBlack: {\n x_min: 0,\n x_max: 325,\n y_min: -133,\n y_max: 132,\n ha: 265,\n o: 'm 0 -60 b 161 -192 0 -122 45 -192 b 468 58 311 -192 468 -69 b 307 190 468 143 396 190 b 0 -60 167 190 0 72 z',\n },\n noteheadXBlack: {\n x_min: 0,\n x_max: 325,\n y_min: -132,\n y_max: 132,\n ha: 264,\n o: 'm 461 138 b 468 153 465 141 468 147 l 468 154 b 462 167 468 160 465 164 l 445 184 b 431 190 441 187 436 190 b 418 186 426 190 420 189 l 235 40 l 50 186 b 37 190 48 189 42 190 b 24 184 32 190 29 187 l 6 167 b 0 153 3 164 0 158 b 7 138 0 147 3 141 l 183 0 l 7 -138 b 0 -153 3 -141 0 -147 b 6 -166 0 -157 3 -163 l 23 -184 b 37 -190 26 -189 32 -190 b 50 -186 42 -190 48 -189 l 235 -40 l 418 -186 b 431 -190 420 -189 426 -190 b 445 -184 436 -190 442 -189 l 462 -166 b 468 -153 465 -163 468 -157 b 461 -138 468 -147 465 -141 l 285 0 z',\n },\n noteheadCircleX: {\n x_min: 0,\n x_max: 325,\n y_min: -162,\n y_max: 163,\n ha: 325,\n o: 'm 265 0 l 395 105 b 426 0 415 75 426 39 b 387 -115 426 -43 412 -84 z m 233 -27 l 360 -145 b 235 -192 327 -174 282 -192 b 99 -137 183 -192 134 -171 z m 202 1 l 73 -105 b 42 0 53 -75 42 -39 b 81 115 42 43 56 84 z m 235 29 l 108 145 b 233 193 141 174 186 193 b 369 138 285 193 334 173 z m 233 235 b 0 0 104 235 0 130 b 233 -233 0 -130 104 -233 b 468 0 363 -233 468 -130 b 233 235 468 130 363 235 z',\n },\n noteheadDoubleWholeSquare: {\n x_min: 0,\n x_max: 432,\n y_min: -179,\n y_max: 177,\n ha: 356,\n o: 'm 590 255 b 570 235 579 255 570 246 l 570 203 l 53 203 l 53 235 b 33 255 53 246 45 255 l 20 255 b 0 235 9 255 0 246 l 0 -230 b 20 -251 0 -242 9 -251 l 33 -251 b 53 -230 45 -251 53 -242 l 53 -200 l 570 -200 l 570 -238 b 590 -258 570 -249 579 -258 l 603 -258 b 622 -238 615 -258 622 -249 l 622 235 b 603 255 622 246 615 255 z m 570 -101 l 53 -101 l 53 105 l 570 105 z',\n },\n noteheadSquareWhite: {\n x_min: 0,\n x_max: 310,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 395 128 l 395 -128 l 52 -128 l 52 128 z m 446 180 l 0 180 l 0 -180 l 446 -180 z',\n },\n noteheadSquareBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 446 180 l 0 180 l 0 -180 l 446 -180 z',\n },\n noteheadTriangleUpBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -136,\n y_max: 122,\n ha: 258,\n o: 'm 223 176 l 0 -196 l 446 -196 z',\n },\n noteheadSlashedDoubleWhole1: {\n x_min: -66,\n x_max: 456,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 652 298 b 638 305 649 304 644 305 b 626 301 634 305 629 304 l 560 248 b 543 256 557 253 550 256 b 530 256 537 256 536 256 b 510 236 518 256 510 248 b 510 204 510 235 510 223 l 455 161 b 281 194 413 181 356 194 b 53 124 168 194 96 166 b 53 236 53 186 53 233 b 29 256 53 253 42 256 b 20 256 26 256 23 256 b 0 236 9 256 0 248 b 0 -204 0 228 0 -98 l -88 -272 b -95 -288 -92 -276 -95 -282 b -91 -300 -95 -291 -94 -295 b -76 -307 -86 -304 -82 -307 b -65 -302 -72 -307 -68 -305 l 3 -248 b 20 -258 6 -253 12 -258 b 53 -238 33 -258 52 -255 b 53 -206 53 -236 53 -225 l 107 -161 b 281 -196 148 -183 206 -196 b 510 -124 393 -196 465 -166 b 510 -238 510 -187 510 -235 b 530 -258 510 -248 518 -258 b 563 -238 543 -258 563 -255 b 563 204 563 -229 563 98 l 649 272 b 657 288 655 276 657 282 b 652 298 657 291 655 295 z m 160 75 b 269 148 160 138 219 148 b 356 101 310 148 334 140 b 363 85 357 96 360 91 l 189 -56 b 160 66 174 -14 161 40 b 160 75 160 69 160 72 z m 53 -163 b 53 -124 53 -151 53 -138 b 76 -144 60 -131 68 -138 z m 402 -68 b 292 -148 402 -138 351 -148 b 207 -101 252 -150 226 -137 b 199 -84 204 -96 202 -91 l 373 56 b 402 -68 389 13 402 -40 z m 510 124 b 485 144 503 131 494 137 l 510 163 b 510 124 510 151 510 137 z',\n },\n noteheadSlashedWhole1: {\n x_min: -75,\n x_max: 448,\n y_min: -211,\n y_max: 214,\n ha: 425,\n o: 'm 641 301 b 625 308 636 305 631 308 b 613 304 621 307 618 307 l 439 160 b 269 196 399 181 343 196 b 0 1 71 196 0 95 b 69 -138 0 -49 20 -101 l -101 -271 b -108 -287 -105 -275 -108 -281 b -104 -298 -107 -291 -107 -294 b -88 -304 -99 -302 -94 -304 b -76 -301 -85 -304 -81 -304 l 98 -157 b 269 -193 138 -179 194 -193 b 537 1 468 -193 537 -92 b 468 141 537 52 517 104 l 638 274 b 645 289 642 278 645 284 b 641 301 644 292 644 297 z m 148 68 b 148 78 148 72 148 75 b 194 141 148 111 163 131 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 350 86 346 98 348 92 l 177 -55 b 148 68 163 -12 150 42 z m 389 -65 b 343 -138 389 -102 377 -128 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 187 -82 192 -95 190 -89 l 279 -6 l 361 58 b 389 -65 376 16 389 -39 z',\n },\n noteheadSlashedHalf1: {\n x_min: -98,\n x_max: 424,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 606 298 b 592 305 602 302 598 305 b 580 301 588 305 583 304 l 412 163 b 307 190 383 180 347 190 b 153 148 258 190 204 176 b 0 -60 58 98 0 13 b 14 -120 0 -81 4 -101 b 32 -143 20 -128 26 -135 l -134 -274 b -141 -288 -138 -276 -141 -282 b -137 -300 -141 -292 -140 -297 b -122 -307 -134 -304 -128 -307 b -111 -302 -118 -307 -114 -305 l 56 -164 b 161 -192 85 -181 121 -192 b 315 -151 210 -192 264 -179 b 468 58 410 -101 468 -16 b 454 117 468 78 464 98 b 436 141 449 125 444 134 l 603 272 b 611 287 608 275 611 281 b 606 298 611 291 609 295 z m 56 -98 b 49 -73 52 -91 49 -82 b 75 -23 49 -58 59 -39 b 199 60 99 1 147 32 b 337 118 251 89 302 111 b 359 121 344 120 351 121 b 361 121 360 121 360 121 l 225 9 l 69 -114 b 56 -98 65 -109 60 -104 z m 410 94 b 416 69 415 86 416 78 b 392 19 416 53 408 36 b 266 -65 367 -6 318 -36 b 128 -122 215 -94 163 -115 b 107 -125 121 -124 114 -125 b 104 -125 107 -125 105 -125 l 245 -9 l 396 111 b 410 94 402 107 408 101 z',\n },\n noteheadSlashedBlack1: {\n x_min: -98,\n x_max: 424,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 606 298 b 592 305 602 302 598 305 b 580 301 588 305 583 304 l 412 161 b 307 190 383 180 347 190 b 0 -60 167 190 0 72 b 32 -144 0 -89 10 -120 l -134 -274 b -141 -288 -138 -278 -141 -284 b -137 -301 -141 -292 -140 -297 b -122 -307 -134 -305 -128 -307 b -111 -304 -118 -307 -114 -307 l 56 -164 b 161 -192 82 -181 117 -192 b 468 58 311 -192 468 -71 b 436 141 468 91 456 120 l 603 271 b 611 285 608 275 611 281 b 606 298 611 289 609 294 z',\n },\n noteheadSlashedDoubleWhole2: {\n x_min: -66,\n x_max: 456,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 563 -204 b 563 236 563 -98 563 228 b 543 256 563 249 554 256 b 530 256 537 256 536 256 b 510 236 518 256 510 248 b 510 124 510 233 510 187 b 281 194 467 166 393 194 b 107 161 207 194 150 181 l 53 204 b 53 236 53 223 53 235 b 33 256 53 249 45 256 b 20 256 27 256 26 256 b 3 246 12 256 6 253 l -63 301 b -76 305 -68 304 -72 305 b -91 298 -81 305 -86 304 b -95 287 -94 295 -95 291 b -88 272 -95 281 -92 276 l 0 204 b 0 -238 0 98 0 -229 b 20 -258 0 -248 9 -258 b 33 -258 26 -258 27 -258 b 53 -238 43 -258 53 -246 b 53 -124 53 -235 53 -187 b 281 -196 96 -166 170 -196 b 456 -161 356 -196 413 -183 l 510 -206 b 510 -238 510 -225 510 -236 b 530 -258 510 -248 518 -258 b 543 -258 536 -258 537 -258 b 560 -246 549 -258 556 -252 l 626 -302 b 638 -307 631 -305 634 -307 b 654 -300 645 -307 649 -304 b 657 -288 655 -295 657 -292 b 651 -272 657 -282 655 -276 z m 207 140 b 269 148 225 144 248 148 b 356 101 310 148 336 140 b 402 -68 376 62 402 -30 b 402 -78 402 -71 402 -75 l 292 9 l 168 109 b 207 140 176 124 189 134 z m 78 144 b 53 124 69 137 60 131 b 53 163 53 137 53 150 z m 356 -141 b 294 -148 338 -145 315 -148 b 207 -101 253 -148 226 -137 b 161 66 189 -66 163 27 b 160 72 161 69 160 71 b 161 78 160 75 160 76 l 271 -9 l 395 -109 b 356 -141 387 -124 374 -134 z m 485 -144 b 510 -124 494 -138 503 -131 b 510 -163 510 -138 510 -151 z',\n },\n noteheadSlashedWhole2: {\n x_min: -75,\n x_max: 448,\n y_min: -212,\n y_max: 214,\n ha: 426,\n o: 'm 468 -138 b 537 1 517 -101 537 -49 b 269 196 537 95 468 196 b 98 160 196 196 140 181 l -76 304 b -88 308 -81 307 -84 307 b -104 301 -94 308 -99 305 b -108 289 -107 297 -107 292 b -101 274 -108 284 -105 278 l 69 141 b 0 1 20 104 0 52 b 269 -193 0 -92 71 -193 b 441 -157 343 -193 399 -179 l 613 -301 b 625 -305 618 -304 622 -305 b 641 -298 631 -305 636 -302 b 645 -287 644 -294 644 -291 b 638 -271 645 -281 642 -275 z m 194 141 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 389 -65 363 63 389 -29 b 389 -76 389 -69 389 -73 l 279 10 l 156 112 b 194 141 163 125 176 135 z m 343 -138 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 148 68 176 -63 150 29 b 148 76 148 71 148 73 b 148 81 148 78 148 79 l 258 -6 l 382 -108 b 343 -138 374 -122 361 -132 z',\n },\n noteheadSlashedHalf2: {\n x_min: -98,\n x_max: 424,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 386 -102 b 468 58 438 -55 468 4 b 454 117 468 78 464 98 b 307 190 428 164 373 190 b 153 148 258 190 204 176 b 108 120 137 140 122 130 l -111 301 b -122 305 -114 304 -118 305 b -137 298 -128 305 -134 302 b -141 287 -140 295 -141 291 b -134 272 -141 281 -138 275 l 85 101 b 0 -60 32 53 0 -7 b 14 -120 0 -81 4 -101 b 161 -192 40 -167 95 -192 b 315 -151 210 -192 264 -179 b 361 -122 333 -143 347 -132 l 580 -302 b 592 -307 583 -305 588 -307 b 606 -300 598 -307 602 -304 b 611 -288 609 -297 611 -292 b 603 -274 611 -282 608 -276 z m 199 60 b 337 118 251 89 302 111 b 359 121 344 120 351 121 b 410 94 382 121 400 112 b 416 69 415 86 416 78 b 392 19 416 53 408 36 b 308 -42 374 0 343 -20 l 245 7 l 189 55 b 199 60 192 56 196 58 z m 266 -65 b 128 -122 215 -94 163 -115 b 107 -125 121 -124 114 -125 b 56 -98 84 -125 66 -117 b 49 -73 52 -91 49 -82 b 75 -23 49 -58 59 -39 b 163 39 94 -4 125 17 l 225 -9 l 282 -56 b 266 -65 276 -59 272 -62 z',\n },\n noteheadSlashedBlack2: {\n x_min: -98.44444444444443,\n x_max: 424,\n y_min: -213,\n y_max: 212,\n ha: 425,\n o: 'm 384 -102 b 468 58 435 -58 468 0 b 307 190 468 143 396 190 b 108 121 239 190 167 163 l -111 301 b -124 305 -115 304 -120 305 b -138 298 -128 305 -134 302 b -141 289 -140 295 -141 292 b -141 287 -141 288 -143 288 b -135 272 -141 281 -140 275 l 84 101 b 0 -60 35 56 0 0 b 161 -192 0 -122 45 -192 b 361 -122 232 -192 304 -164 l 579 -302 b 590 -307 583 -305 588 -307 b 606 -300 596 -307 602 -304 b 611 -288 609 -297 611 -292 b 603 -274 609 -282 608 -276 z',\n },\n noteheadDiamondDoubleWhole: {\n x_min: 0,\n x_max: 373,\n y_min: -178,\n y_max: 179,\n ha: 357,\n o: 'm 504 258 b 484 238 494 258 484 248 l 484 46 b 282 187 415 95 285 186 b 268 192 279 190 275 192 b 255 187 262 192 258 190 l 52 45 l 52 238 b 33 258 52 248 43 258 l 20 258 b 0 238 9 258 0 248 l 0 -236 b 20 -256 0 -248 9 -256 l 33 -256 b 52 -236 43 -256 52 -248 l 52 -45 l 249 -181 b 268 -190 258 -189 264 -190 b 282 -186 274 -190 279 -189 b 484 -43 285 -184 413 -94 l 484 -236 b 504 -256 484 -248 494 -256 l 517 -256 b 537 -236 528 -256 537 -248 l 537 238 b 517 258 537 248 528 258 z m 220 -115 l 102 -33 l 317 117 l 435 35 z',\n },\n noteheadDiamondWhole: {\n x_min: 0,\n x_max: 373,\n y_min: -133,\n y_max: 132,\n ha: 265,\n o: 'm 282 -187 b 530 -13 285 -186 530 -13 b 537 0 534 -10 537 -6 b 530 13 537 4 534 10 b 282 186 530 13 287 183 b 268 190 279 189 275 190 b 255 186 262 190 258 189 l 7 12 b 0 -1 3 9 0 4 b 4 -13 0 -6 1 -10 l 249 -183 b 268 -192 258 -190 264 -192 b 282 -187 274 -192 279 -190 z m 220 -117 l 102 -35 l 317 115 l 435 33 z',\n },\n noteheadDiamondHalf: {\n x_min: 0,\n x_max: 335,\n y_min: -132,\n y_max: 133,\n ha: 265,\n o: 'm 475 -13 b 482 0 480 -10 482 -6 b 475 13 482 4 480 10 l 253 187 b 240 192 251 190 246 192 b 229 187 236 192 232 190 l 7 13 b 0 0 3 10 0 6 b 7 -13 0 -4 3 -10 l 229 -186 b 240 -190 232 -189 236 -190 b 253 -186 246 -190 251 -189 z m 284 -115 l 92 33 l 199 117 l 390 -33 z',\n },\n noteheadDiamondBlack: {\n x_min: 0,\n x_max: 335,\n y_min: -132,\n y_max: 133,\n ha: 265,\n o: 'm 475 -14 b 482 -1 480 -10 482 -6 b 475 13 482 4 480 10 l 253 187 b 240 192 251 190 246 192 b 229 187 236 192 232 190 l 7 13 b 0 0 3 10 0 4 b 7 -14 0 -6 3 -10 l 229 -186 b 240 -190 232 -189 236 -190 b 253 -186 246 -190 251 -189 z',\n },\n noteheadParenthesisRight: {\n x_min: 0,\n x_max: 75,\n y_min: -209.4142135623731,\n y_max: 212,\n ha: 421.4142135623731,\n o: 'm 10 305 b 4 302 7 304 6 304 b 0 295 1 301 0 298 b 1 289 0 294 0 292 b 68 -10 1 288 68 160 b 1 -288 68 -95 50 -192 b 0 -292 0 -289 0 -291 b 4 -300 0 -295 1 -298 b 12 -301 7 -301 9 -302 b 17 -298 14 -301 16 -300 b 108 0 22 -292 108 -174 b 17 301 108 174 22 295 b 10 305 16 304 13 305 z',\n },\n noteheadParenthesisLeft: {\n x_min: 0,\n x_max: 75,\n y_min: -212,\n y_max: 209.4142135623731,\n ha: 421.4142135623731,\n o: 'm 98 -305 b 104 -302 101 -304 102 -304 b 108 -295 107 -301 108 -298 b 107 -289 108 -294 108 -292 b 40 10 107 -288 40 -160 b 107 288 40 95 58 192 b 108 292 108 289 108 291 b 104 300 108 295 107 298 b 96 301 101 301 99 302 b 91 298 94 301 92 300 b 0 0 86 292 0 174 b 91 -301 0 -174 86 -295 b 98 -305 92 -304 95 -305 z',\n },\n noteheadMoonBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 0 180 l 0 0 b 223 -180 0 -99 99 -180 b 446 0 347 -180 446 -99 l 446 180 z',\n },\n noteheadTriangleLeftBlack: {\n x_min: 0,\n x_max: 339,\n y_min: -136,\n y_max: 122,\n ha: 258,\n o: 'm 0 176 l 0 -196 l 488 -196 z',\n },\n noteheadTriangleRightBlack: {\n x_min: 0,\n x_max: 339,\n y_min: -136,\n y_max: 122,\n ha: 258,\n o: 'm 488 176 l 0 -196 l 488 -196 z',\n },\n noteheadTriangleRoundDownBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -136,\n y_max: 122,\n ha: 258,\n o: 'm 226 -196 l 446 63 b 226 176 446 63 384 176 b 0 63 68 176 0 63 z',\n },\n augmentationDot: {\n x_min: 0,\n x_max: 100,\n y_min: -50,\n y_max: 50,\n ha: 100,\n o: 'm 0 0 b 72 -72 0 -40 32 -72 b 144 0 112 -72 144 -40 b 72 72 144 40 112 72 b 0 0 32 72 0 40 z',\n },\n tremolo1: {\n x_min: 0,\n x_max: 290,\n y_min: -93,\n y_max: 96,\n ha: 189,\n o: 'm 0 48 l 0 -134 l 418 -43 l 418 138 z',\n },\n flag8thUp: {\n x_min: 0,\n x_max: 289.04376776750354,\n y_min: -817,\n y_max: 12,\n ha: 829,\n o: 'm 0 -327 b 12 -343 0 -331 1 -338 b 291 -600 73 -363 197 -441 b 359 -827 317 -645 359 -707 b 294 -1140 359 -930 331 -1037 b 289 -1162 291 -1149 288 -1156 b 297 -1175 289 -1168 291 -1172 b 304 -1176 300 -1176 302 -1176 b 327 -1161 314 -1176 321 -1171 b 416 -798 395 -1041 418 -888 b 416 -780 416 -791 416 -786 b 302 -458 409 -595 302 -458 b 131 -220 307 -458 170 -281 b 50 -50 78 -138 53 -56 b 36 6 49 -46 36 6 b 19 17 35 12 27 17 b 0 -1 9 17 0 9 z',\n },\n flag8thDown: {\n x_min: 0,\n x_max: 309,\n y_min: -12,\n y_max: 817,\n ha: 829,\n o: 'm 0 1 b 19 -17 0 -9 9 -17 b 36 -6 26 -17 35 -12 b 50 50 36 -4 49 46 b 117 196 52 56 65 111 b 331 458 173 289 259 357 b 445 780 402 559 445 654 b 338 1161 445 912 415 1021 b 317 1176 334 1171 325 1176 b 310 1175 314 1176 311 1176 b 300 1158 302 1172 300 1166 b 304 1140 300 1153 301 1146 b 384 827 361 1007 384 930 b 317 600 384 707 343 645 b 12 343 223 441 72 363 b 0 327 1 338 0 331 z',\n },\n flag16thUp: {\n x_min: 0,\n x_max: 279,\n y_min: -820,\n y_max: 12,\n ha: 832,\n o: 'm 301 -681 b 148 -514 262 -631 219 -585 b 56 -372 92 -458 66 -409 b 52 -343 55 -364 53 -354 b 271 -510 125 -343 219 -442 b 340 -696 327 -583 340 -641 b 337 -739 340 -710 338 -724 b 301 -681 325 -716 312 -697 z m 0 -549 b 22 -563 0 -553 12 -559 b 258 -776 59 -576 171 -648 b 318 -950 307 -850 318 -901 b 317 -975 318 -959 318 -966 b 285 -1140 317 -1009 307 -1083 b 279 -1164 284 -1148 279 -1156 b 289 -1179 279 -1169 282 -1175 b 297 -1181 292 -1181 294 -1181 b 318 -1161 307 -1181 312 -1169 b 382 -962 344 -1120 382 -1043 b 374 -855 382 -920 379 -886 b 402 -678 389 -802 402 -749 b 333 -471 402 -603 382 -536 b 137 -228 265 -382 192 -307 b 42 0 82 -148 42 0 b 22 17 39 10 37 17 b 0 0 4 17 0 10 z',\n },\n flag16thDown: {\n x_min: 0,\n x_max: 309,\n y_min: -26,\n y_max: 803,\n ha: 829,\n o: 'm 53 346 b 56 363 55 353 56 359 b 163 517 66 399 78 452 b 384 732 246 582 346 662 b 317 503 382 621 354 552 b 53 346 229 395 122 364 z m 0 -14 b 22 -37 0 -26 10 -37 b 43 -14 33 -37 40 -26 b 167 232 65 134 109 177 b 445 683 243 305 445 416 b 432 837 445 730 441 783 b 441 919 438 855 441 881 b 327 1149 441 1032 374 1112 b 304 1156 321 1153 312 1156 b 287 1152 298 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1135 b 382 930 344 1076 382 1027 b 374 876 382 912 380 893 l 373 871 b 373 871 373 871 373 871 b 327 789 366 842 350 815 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z',\n },\n flag32ndUp: {\n x_min: 0,\n x_max: 279,\n y_min: -821,\n y_max: 186,\n ha: 1007,\n o: 'm 301 -683 b 148 -516 262 -632 219 -588 b 56 -373 92 -459 66 -410 b 50 -343 55 -366 53 -354 b 271 -500 125 -343 219 -432 b 340 -687 327 -575 340 -632 b 337 -739 340 -704 338 -721 b 301 -683 325 -716 312 -698 z m 271 -259 b 340 -446 327 -333 340 -392 b 338 -469 340 -455 338 -462 b 333 -461 337 -467 334 -464 b 91 -192 265 -372 145 -271 b 50 -92 69 -160 58 -124 b 271 -259 124 -92 219 -192 z m 0 -550 b 22 -564 0 -554 12 -560 b 258 -778 59 -577 171 -649 b 318 -952 307 -851 318 -903 b 317 -976 318 -960 318 -968 b 285 -1142 317 -1011 307 -1084 b 279 -1165 284 -1149 279 -1158 b 289 -1181 279 -1171 282 -1176 b 297 -1182 292 -1182 294 -1182 b 318 -1162 307 -1182 312 -1171 b 382 -963 344 -1122 382 -1044 b 374 -857 382 -922 379 -887 b 402 -668 389 -802 402 -740 b 386 -563 402 -632 396 -596 b 402 -441 395 -526 402 -487 b 402 -428 402 -436 402 -432 b 333 -220 402 -353 382 -285 b 137 23 265 -131 192 -56 b 42 251 82 102 42 251 b 22 268 39 261 37 268 b 0 251 4 268 0 261 z',\n },\n flag32ndDown: {\n x_min: 0,\n x_max: 309,\n y_min: -216,\n y_max: 803,\n ha: 1019,\n o: 'm 50 73 b 91 171 58 105 71 141 b 347 402 145 251 272 317 b 384 454 361 418 374 435 b 324 239 384 347 361 287 b 50 73 235 130 122 94 z m 163 517 b 366 693 248 589 327 642 b 382 716 372 700 377 708 b 383 693 383 708 383 700 b 314 505 383 621 359 562 b 53 343 258 436 179 390 b 56 363 55 351 56 359 b 163 517 66 400 81 449 z m 0 -288 b 22 -311 0 -298 10 -311 b 43 -288 33 -311 40 -300 b 167 -40 65 -138 109 -95 b 445 409 243 32 445 143 b 431 577 445 462 439 520 b 441 651 435 602 439 626 b 441 675 441 658 441 667 b 441 687 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 305 1156 321 1153 314 1156 b 287 1152 300 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1136 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z',\n },\n flag64thUp: {\n x_min: 0,\n x_max: 279,\n y_min: -822,\n y_max: 373,\n ha: 1195,\n o: 'm 333 -461 b 91 -192 265 -372 145 -271 b 50 -92 69 -161 58 -125 b 271 -251 125 -92 219 -183 b 340 -438 327 -324 340 -383 b 338 -469 340 -448 338 -459 b 333 -461 337 -467 334 -464 z m 301 -683 b 148 -517 262 -632 219 -588 b 56 -374 92 -461 66 -410 b 50 -343 55 -366 53 -356 b 271 -501 125 -343 219 -433 b 340 -688 327 -575 340 -634 b 337 -739 340 -706 338 -721 b 301 -683 325 -717 312 -698 z m 271 10 b 340 -176 327 -63 340 -121 b 337 -217 340 -190 338 -204 b 333 -212 336 -216 334 -213 b 91 65 265 -122 145 -16 b 48 177 66 101 53 143 l 50 177 b 271 10 124 177 217 78 z m 0 -552 b 22 -564 0 -554 12 -562 b 258 -778 59 -579 171 -649 b 318 -952 307 -851 317 -903 b 317 -976 318 -960 318 -968 b 285 -1142 317 -1012 307 -1084 b 279 -1165 284 -1149 279 -1158 b 289 -1181 279 -1172 282 -1178 b 297 -1184 292 -1182 295 -1184 b 318 -1164 307 -1182 312 -1172 b 382 -963 344 -1122 382 -1044 b 374 -857 382 -923 379 -887 b 402 -668 389 -804 402 -740 b 386 -563 402 -632 396 -596 b 402 -432 395 -523 402 -480 b 402 -418 402 -428 402 -423 b 383 -304 402 -379 396 -341 b 402 -170 393 -264 402 -222 b 402 -158 402 -166 402 -163 b 333 49 402 -84 382 -16 b 137 292 265 138 192 213 b 42 520 82 372 42 520 b 22 537 39 530 37 537 b 0 520 4 537 0 530 z',\n },\n flag64thDown: {\n x_min: 0,\n x_max: 309,\n y_min: -403,\n y_max: 804,\n ha: 1207,\n o: 'm 52 -196 b 91 -102 59 -166 71 -131 b 347 128 145 -23 272 45 b 384 180 361 145 374 163 b 324 -30 384 76 361 16 b 52 -196 235 -140 124 -176 z m 163 517 b 366 693 248 589 327 644 b 382 717 372 701 377 708 b 383 693 383 708 383 701 b 314 505 383 621 359 562 b 53 343 258 438 179 390 b 56 363 55 351 56 359 b 163 517 66 400 81 449 z m 314 232 b 50 69 258 163 179 117 b 91 171 56 102 69 140 b 347 402 145 251 272 318 b 382 449 360 416 372 432 b 383 420 383 439 383 429 b 314 232 383 348 359 288 z m 0 -557 b 22 -580 0 -567 10 -580 b 43 -557 33 -580 40 -567 b 167 -310 65 -408 109 -364 b 445 140 243 -238 445 -125 b 431 307 445 192 439 249 b 441 377 436 331 439 354 b 441 406 441 387 441 397 b 441 418 441 410 441 413 b 423 546 441 464 432 507 b 441 651 432 582 438 618 b 441 675 441 660 441 667 b 441 688 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 305 1158 321 1153 314 1156 b 287 1152 300 1158 292 1156 b 279 1145 281 1151 279 1148 b 294 1129 279 1140 288 1136 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 563 z',\n },\n flag128thUp: {\n x_min: 0,\n x_max: 279,\n y_min: -821,\n y_max: 573,\n ha: 1394,\n o: 'm 0 -550 b 22 -563 0 -553 12 -560 b 258 -776 59 -576 171 -648 b 318 -950 307 -850 318 -901 b 317 -975 318 -959 318 -966 b 285 -1140 317 -1011 307 -1083 b 279 -1164 284 -1148 279 -1156 b 289 -1179 279 -1171 282 -1176 b 297 -1182 292 -1181 294 -1181 b 318 -1162 307 -1182 312 -1169 b 382 -962 344 -1120 382 -1043 b 374 -857 382 -922 379 -887 b 402 -668 389 -802 402 -740 b 383 -554 402 -629 396 -590 b 402 -399 396 -503 402 -452 b 382 -284 402 -359 396 -321 b 402 -125 396 -230 402 -180 b 383 -14 402 -86 396 -49 b 402 130 396 35 402 81 b 333 348 402 204 382 284 b 137 592 265 438 192 513 b 42 808 82 671 46 793 b 22 825 39 818 37 825 b 0 808 4 825 0 818 z m 271 310 b 340 111 328 235 340 170 b 338 73 340 98 338 86 b 333 81 336 76 334 79 b 91 357 265 170 145 276 b 48 469 66 393 53 435 l 50 469 b 271 310 124 469 217 377 z m 301 -681 b 148 -523 262 -631 219 -593 b 56 -383 92 -465 66 -420 b 49 -343 55 -374 52 -359 l 50 -343 b 271 -500 124 -343 217 -432 b 340 -688 327 -575 340 -634 b 337 -737 340 -706 338 -721 b 301 -681 325 -716 312 -697 z m 333 -461 b 91 -192 265 -372 145 -271 b 48 -73 66 -154 53 -111 l 48 -73 l 50 -73 b 271 -232 124 -73 217 -163 b 340 -419 327 -305 340 -364 b 337 -468 340 -435 338 -452 b 333 -461 336 -465 334 -464 z m 333 -192 b 91 84 265 -102 145 4 b 48 200 65 121 53 164 l 48 200 l 50 200 b 271 42 124 200 217 109 b 340 -147 327 -32 340 -92 b 337 -197 340 -164 338 -181 b 333 -192 336 -196 334 -194 z',\n },\n flag128thDown: {\n x_min: 0,\n x_max: 309,\n y_min: -591,\n y_max: 803,\n ha: 1394,\n o: 'm 0 -828 b 22 -851 0 -838 10 -851 b 43 -828 33 -851 40 -840 b 167 -580 65 -678 109 -635 b 445 -131 243 -508 445 -397 b 431 36 445 -79 439 -22 b 441 108 436 60 439 85 b 441 137 441 117 441 127 b 441 147 441 140 441 144 b 423 275 441 193 432 236 b 441 377 433 310 438 344 b 441 406 441 387 441 396 b 441 418 441 410 441 413 b 423 546 441 464 432 507 b 441 649 432 582 438 616 b 441 675 441 658 441 667 b 441 687 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 304 1156 321 1153 312 1156 b 287 1152 298 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1135 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z m 314 -37 b 50 -200 258 -107 179 -153 b 91 -102 58 -168 71 -132 b 347 128 145 -23 272 45 b 382 176 360 143 372 160 b 383 151 383 167 383 160 b 314 -37 383 79 359 19 z m 314 232 b 50 69 258 163 179 117 b 91 171 56 101 69 138 b 347 402 145 251 272 317 b 382 449 360 416 372 432 b 383 420 383 439 383 429 b 314 232 383 347 359 288 z m 163 517 b 366 693 248 589 327 642 b 382 716 372 700 377 708 b 383 693 383 708 383 700 b 314 505 382 621 359 560 b 53 343 258 436 179 390 b 56 363 55 350 56 357 b 163 517 66 399 81 449 z m 52 -467 b 91 -372 59 -435 71 -402 b 347 -141 145 -292 272 -225 b 384 -89 361 -125 374 -108 b 324 -301 382 -194 361 -255 b 52 -467 235 -410 122 -446 z',\n },\n accidentalFlat: {\n x_min: 0,\n x_max: 203,\n y_min: -176,\n y_max: 453,\n ha: 629,\n o: 'm 289 114 b 173 223 281 170 246 223 b 52 170 101 223 59 179 l 58 632 b 37 652 58 644 49 652 l 20 652 b 0 632 9 652 0 644 l 7 -233 b 27 -253 7 -245 16 -253 b 39 -251 30 -253 36 -252 b 216 -114 45 -248 138 -202 b 292 78 271 -52 292 19 b 289 114 292 91 291 102 z m 190 58 b 148 -85 190 36 184 -30 b 48 -183 124 -122 75 -161 l 52 98 b 134 153 55 111 76 153 b 190 73 186 153 190 104 b 190 58 190 66 190 62 z',\n },\n accidentalNatural: {\n x_min: 0,\n x_max: 171,\n y_min: -323,\n y_max: 325,\n ha: 648,\n o: 'm 239 264 b 228 268 236 266 232 268 b 222 266 226 268 223 266 l 40 216 l 40 468 l 0 468 l 0 -245 b 20 -264 0 -256 9 -264 b 26 -264 22 -264 24 -264 l 207 -213 l 207 -465 l 246 -465 b 246 248 246 -226 246 1 b 239 264 246 253 243 261 z m 40 -140 l 40 96 l 207 144 l 207 -94 z',\n },\n accidentalSharp: {\n x_min: 0,\n x_max: 244,\n y_min: -333,\n y_max: 334,\n ha: 667,\n o: 'm 336 151 b 351 171 344 153 351 163 l 351 256 b 331 276 351 268 343 276 b 328 276 330 276 330 276 l 281 266 l 281 481 l 240 481 l 240 258 l 112 232 l 112 435 l 72 435 l 72 223 l 16 212 b 0 192 7 210 0 200 l 0 189 l 0 105 l 0 108 b 20 88 0 96 9 88 b 24 88 22 88 23 88 l 72 98 l 72 -140 l 16 -151 b 0 -171 7 -153 0 -163 l 0 -255 b 20 -275 0 -266 9 -275 b 24 -275 22 -275 23 -275 l 72 -265 l 72 -480 l 112 -480 l 112 -256 l 240 -230 l 240 -433 l 281 -433 l 281 -222 l 336 -212 b 351 -192 344 -210 351 -200 l 351 -107 b 331 -86 351 -95 343 -86 b 328 -86 330 -86 330 -86 l 281 -96 l 281 141 z m 112 107 l 240 132 l 240 -105 l 112 -132 z',\n },\n accidentalDoubleSharp: {\n x_min: 0,\n x_max: 275,\n y_min: -137,\n y_max: 138,\n ha: 275,\n o: 'm 360 73 l 376 73 b 396 94 387 73 396 82 l 396 179 b 376 199 396 190 387 199 l 291 199 b 271 179 279 199 271 190 l 271 161 l 271 102 l 200 30 l 196 30 l 124 102 l 124 179 b 105 199 124 190 117 199 l 20 199 b 0 179 9 199 0 190 l 0 94 b 20 73 0 82 9 73 l 35 73 l 36 73 l 96 73 l 167 3 l 167 -1 l 96 -73 l 36 -73 l 35 -73 l 20 -73 b 0 -92 9 -73 0 -81 l 0 -177 b 20 -197 0 -189 9 -197 l 105 -197 b 124 -177 117 -197 124 -189 l 124 -101 l 196 -32 l 200 -32 l 271 -101 l 271 -161 l 271 -163 l 271 -177 b 291 -197 271 -189 279 -197 l 376 -197 b 396 -177 387 -197 396 -189 l 396 -92 b 376 -73 396 -81 387 -73 l 361 -73 l 360 -73 l 300 -73 l 228 -1 l 228 1 l 300 73 z',\n },\n accidentalDoubleFlat: {\n x_min: 0,\n x_max: 371,\n y_min: -176,\n y_max: 453,\n ha: 629,\n o: 'm 531 115 b 415 223 523 171 488 223 b 294 171 343 223 301 180 l 300 632 b 279 652 300 644 291 652 l 262 652 b 242 632 251 652 242 644 l 246 199 b 173 223 228 213 204 223 b 52 170 101 223 59 179 l 58 632 b 37 652 58 644 49 652 l 20 652 b 0 632 9 652 0 644 l 7 -233 b 27 -253 7 -245 16 -253 b 39 -249 30 -253 36 -251 b 216 -114 45 -246 138 -202 b 248 -69 226 -102 239 -82 l 249 -233 b 269 -253 249 -245 258 -253 b 281 -249 272 -253 278 -251 b 458 -112 287 -246 380 -200 b 534 79 513 -50 534 20 b 531 115 534 92 533 104 z m 190 58 b 148 -85 190 36 184 -30 b 48 -183 124 -122 75 -161 l 52 98 b 134 153 55 111 76 153 b 190 73 186 153 190 104 b 190 58 190 66 190 62 z m 432 58 b 390 -85 432 36 426 -30 b 289 -183 366 -122 317 -161 l 294 98 b 376 153 297 111 318 153 b 432 73 428 153 432 104 b 432 58 432 66 432 62 z',\n },\n accidentalParensLeft: {\n x_min: 0,\n x_max: 75,\n y_min: -212,\n y_max: 209.4142135623731,\n ha: 421.4142135623731,\n o: 'm 98 -305 b 104 -302 101 -304 102 -304 b 108 -295 107 -301 108 -298 b 107 -289 108 -294 108 -292 b 40 10 107 -288 40 -160 b 107 288 40 95 58 192 b 108 292 108 289 108 291 b 104 300 108 295 107 298 b 96 301 101 301 99 302 b 91 298 94 301 92 300 b 0 0 86 292 0 174 b 91 -301 0 -174 86 -295 b 98 -305 92 -304 95 -305 z',\n },\n accidentalParensRight: {\n x_min: 0,\n x_max: 75,\n y_min: -209.4142135623731,\n y_max: 212,\n ha: 421.4142135623731,\n o: 'm 10 305 b 4 302 7 304 6 304 b 0 295 1 301 0 298 b 1 289 0 294 0 292 b 68 -10 1 288 68 160 b 1 -288 68 -95 50 -192 b 0 -292 0 -289 0 -291 b 4 -300 0 -295 1 -298 b 12 -301 7 -301 9 -302 b 17 -298 14 -301 16 -300 b 108 0 22 -292 108 -174 b 17 301 108 174 22 295 b 10 305 16 304 13 305 z',\n },\n accidentalQuarterToneFlatStein: {\n x_min: 0,\n x_max: 193,\n y_min: -176,\n y_max: 452,\n ha: 628,\n o: 'm 0 84 b 107 -145 0 -26 65 -105 b 245 -249 166 -202 245 -249 b 253 -253 248 -251 249 -253 b 272 -235 264 -253 272 -245 l 278 632 b 259 651 278 642 269 651 l 248 651 b 229 632 238 651 229 642 l 232 174 b 125 217 223 186 192 217 b 0 84 53 217 0 173 z m 148 154 b 232 102 212 154 232 115 b 233 107 232 99 233 102 l 235 -179 b 134 -72 207 -156 160 -111 b 92 58 98 -17 92 36 b 92 75 92 62 92 68 b 148 154 92 105 96 154 z',\n },\n accidentalThreeQuarterTonesFlatZimmermann: {\n x_min: 0,\n x_max: 422,\n y_min: -176,\n y_max: 452,\n ha: 628,\n o: 'm 608 84 b 482 217 608 173 554 217 b 376 174 416 217 384 186 l 379 632 b 360 651 379 642 370 651 l 348 651 b 330 632 338 651 330 642 l 336 -235 b 354 -253 336 -245 344 -253 b 363 -249 359 -253 360 -251 b 501 -145 363 -249 442 -202 b 608 84 543 -105 608 -26 z m 459 154 b 516 75 511 154 516 105 b 516 58 516 68 516 62 b 474 -72 516 36 510 -17 b 373 -179 448 -111 400 -156 l 374 107 b 376 102 374 102 376 99 b 459 154 376 115 396 154 z m 0 84 b 107 -145 0 -26 65 -105 b 245 -249 166 -202 245 -249 b 253 -253 248 -251 249 -253 b 272 -235 264 -253 272 -245 l 278 632 b 259 651 278 642 269 651 l 248 651 b 229 632 238 651 229 642 l 232 174 b 125 217 223 186 192 217 b 0 84 53 217 0 173 z m 148 154 b 232 102 212 154 232 115 b 233 107 232 99 233 102 l 235 -179 b 134 -72 207 -156 160 -111 b 92 58 98 -17 92 36 b 92 75 92 62 92 68 b 148 154 92 105 96 154 z',\n },\n accidentalQuarterToneSharpStein: {\n x_min: 0,\n x_max: 180,\n y_min: -316,\n y_max: 320,\n ha: 636,\n o: 'm 243 144 b 259 164 252 145 259 156 l 259 249 b 239 269 259 261 251 269 b 235 268 238 269 236 268 l 150 251 l 150 461 l 109 461 l 109 242 l 16 222 b 0 203 7 220 0 212 l 0 120 b 20 99 0 108 9 99 b 24 99 22 99 23 99 l 109 117 l 109 -121 l 16 -141 b 0 -160 7 -143 0 -151 l 0 -243 b 20 -264 0 -255 9 -264 b 24 -264 22 -264 23 -264 l 109 -246 l 109 -455 l 150 -455 l 150 -238 l 243 -219 b 259 -199 252 -217 259 -207 l 259 -114 b 239 -95 259 -102 251 -95 b 235 -95 238 -95 236 -95 l 150 -112 l 150 125 z',\n },\n accidentalThreeQuarterTonesSharpStein: {\n x_min: 0,\n x_max: 290,\n y_min: -328,\n y_max: 339,\n ha: 667,\n o: 'm 400 158 b 416 179 409 160 416 170 l 416 264 b 397 284 416 275 409 284 b 393 284 396 284 395 284 l 348 274 l 348 488 l 308 488 l 308 265 l 223 248 l 223 465 l 184 465 l 184 240 l 108 225 l 108 442 l 69 442 l 69 216 l 16 204 b 0 186 7 203 0 194 l 0 102 b 20 82 0 91 9 82 b 24 82 22 82 23 82 l 69 92 l 69 -147 l 16 -158 b 0 -177 7 -160 0 -168 l 0 -261 b 20 -281 0 -272 9 -281 b 24 -281 22 -281 23 -281 l 69 -272 l 69 -472 l 108 -472 l 108 -264 l 184 -248 l 184 -451 l 223 -451 l 223 -240 l 308 -223 l 308 -426 l 348 -426 l 348 -215 l 400 -204 b 418 -184 409 -203 418 -193 l 418 -99 b 397 -79 418 -88 409 -79 b 393 -79 396 -79 395 -79 l 348 -89 l 348 148 z m 184 -122 l 108 -138 l 108 99 l 184 115 z m 223 122 l 308 140 l 308 -98 l 223 -115 z',\n },\n accidentalBuyukMucennebFlat: {\n x_min: 0,\n x_max: 277,\n y_min: -176,\n y_max: 454,\n ha: 630,\n o: 'm 396 115 b 279 225 387 173 354 225 b 158 171 204 225 164 179 l 160 317 l 336 419 l 336 482 l 161 380 l 161 488 l 336 590 l 336 654 l 163 552 l 164 634 b 144 654 164 645 156 654 l 127 654 b 107 634 115 654 107 645 l 108 520 l 0 456 l 0 393 l 108 456 l 109 350 l 0 285 l 0 222 l 109 287 l 114 -235 b 134 -253 114 -246 122 -253 b 145 -251 138 -253 141 -252 b 323 -114 145 -251 242 -204 b 399 79 377 -52 399 20 b 396 115 399 92 397 104 z m 297 58 b 255 -85 297 36 291 -30 b 154 -184 230 -122 181 -163 l 158 96 b 240 153 161 109 181 153 b 297 73 292 153 297 104 b 297 58 297 66 297 62 z',\n },\n accidentalBakiyeFlat: {\n x_min: 0,\n x_max: 277,\n y_min: -176,\n y_max: 454,\n ha: 630,\n o: 'm 396 115 b 279 225 387 173 354 225 b 158 171 204 225 164 179 l 161 348 l 336 452 l 336 516 l 161 413 l 164 634 b 144 654 164 645 156 654 l 127 654 b 107 634 115 654 107 645 l 109 382 l 0 318 l 0 255 l 109 318 l 114 -235 b 134 -253 114 -246 122 -253 b 145 -251 138 -253 143 -252 b 323 -114 145 -251 242 -204 b 399 79 377 -52 399 20 b 396 115 399 92 397 104 z m 297 58 b 255 -85 297 36 291 -30 b 156 -184 230 -122 183 -163 l 158 96 b 240 153 161 109 181 153 b 297 73 292 153 297 104 b 297 58 297 66 297 62 z',\n },\n accidentalKucukMucennebSharp: {\n x_min: 0,\n x_max: 348,\n y_min: -316,\n y_max: 318,\n ha: 634,\n o: 'm 494 121 b 482 125 491 124 487 125 b 478 124 481 125 480 124 l 269 68 l 269 127 l 412 164 b 425 181 420 167 425 173 l 425 266 b 418 282 425 272 422 279 b 406 285 415 285 410 285 b 402 285 405 285 403 285 l 269 249 l 269 458 l 232 458 l 232 239 l 89 200 b 76 181 81 197 76 190 l 76 98 b 84 84 76 92 79 86 b 95 79 86 81 91 79 b 99 81 96 79 98 81 l 232 115 l 232 58 l 14 -3 b 0 -20 6 -6 0 -12 l 0 -104 b 7 -118 0 -109 3 -115 b 19 -122 10 -121 14 -122 b 23 -122 20 -122 22 -122 l 232 -66 l 232 -124 l 89 -163 b 76 -180 81 -166 76 -171 l 76 -264 b 84 -279 76 -269 79 -276 b 95 -282 86 -282 91 -282 b 99 -282 96 -282 98 -282 l 232 -246 l 232 -455 l 269 -455 l 269 -236 l 412 -199 b 425 -180 420 -196 425 -189 l 425 -95 b 418 -81 425 -89 422 -84 b 406 -76 415 -78 410 -76 b 402 -78 405 -76 403 -78 l 269 -114 l 269 -55 l 487 4 b 501 22 495 7 501 13 l 501 107 b 494 121 501 112 498 118 z',\n },\n articAccentAbove: {\n x_min: 0,\n x_max: 361,\n y_min: 0,\n y_max: 235,\n ha: 235,\n o: 'm 26 337 b 20 338 24 337 22 338 b 0 318 9 338 0 330 l 0 285 b 14 266 0 276 7 269 l 323 170 l 14 72 b 0 53 7 69 0 62 l 0 20 b 20 0 0 9 9 0 b 26 1 22 0 24 1 l 505 150 b 520 170 513 153 520 161 b 505 189 520 179 513 186 z',\n },\n articAccentBelow: {\n x_min: 0,\n x_max: 361,\n y_min: -235,\n y_max: 0,\n ha: 235,\n o: 'm 26 -1 b 20 0 24 -1 22 0 b 0 -20 9 0 0 -9 l 0 -53 b 14 -72 0 -62 7 -69 l 323 -168 l 14 -266 b 0 -285 7 -269 0 -276 l 0 -318 b 20 -338 0 -330 9 -338 b 26 -337 22 -338 24 -337 l 505 -189 b 520 -168 513 -186 520 -177 b 505 -150 520 -160 513 -153 z',\n },\n articTenutoAbove: {\n x_min: 0,\n x_max: 316,\n y_min: 0,\n y_max: 46,\n ha: 46,\n o: 'm 20 66 b 0 46 9 66 0 58 l 0 20 b 20 0 0 9 9 0 l 435 0 b 455 20 446 0 455 9 l 455 46 b 435 66 455 58 446 66 z',\n },\n articTenutoBelow: {\n x_min: 0,\n x_max: 316,\n y_min: -46,\n y_max: 0,\n ha: 46,\n o: 'm 20 0 b 0 -20 9 0 0 -9 l 0 -46 b 20 -66 0 -58 9 -66 l 435 -66 b 455 -46 446 -66 455 -58 l 455 -20 b 435 0 455 -9 446 0 z',\n },\n articStaccatoAbove: {\n x_min: -0.25,\n x_max: 78.25,\n y_min: -0.25,\n y_max: 78,\n ha: 78.25,\n o: 'm 16 16 b 96 16 39 -6 73 -6 b 96 95 118 39 118 73 b 16 95 73 118 39 118 b 16 16 -6 73 -6 39 z',\n },\n articStaccatoBelow: {\n x_min: -0.25,\n x_max: 78.25,\n y_min: -78.25,\n y_max: 0,\n ha: 78.25,\n o: 'm 16 -96 b 96 -96 39 -118 73 -118 b 96 -17 118 -73 118 -39 b 16 -17 73 6 39 6 b 16 -96 -6 -39 -6 -73 z',\n },\n articStaccatissimoAbove: {\n x_min: 0,\n x_max: 127,\n y_min: 0,\n y_max: 248,\n ha: 248,\n o: 'm 163 357 b 150 353 154 357 150 353 l 99 300 b 92 295 96 297 95 295 b 85 300 89 295 88 297 l 35 353 b 22 357 35 353 30 357 b 0 338 13 357 0 351 b 73 22 0 323 73 22 b 92 0 75 16 78 0 b 111 22 107 0 109 16 b 183 338 111 22 183 323 b 163 357 183 351 171 357 z',\n },\n articStaccatissimoBelow: {\n x_min: 0,\n x_max: 127,\n y_min: -248,\n y_max: 0,\n ha: 248,\n o: 'm 20 -357 b 33 -353 29 -357 33 -353 l 84 -300 b 91 -295 86 -297 88 -295 b 98 -300 94 -295 95 -297 l 148 -353 b 161 -357 148 -353 153 -357 b 183 -338 170 -357 183 -351 b 109 -22 183 -323 109 -22 b 91 0 108 -16 105 0 b 72 -22 76 0 73 -16 b 0 -338 72 -22 0 -323 b 20 -357 0 -351 12 -357 z',\n },\n articMarcatoAbove: {\n x_min: 1,\n x_max: 296,\n y_min: 0,\n y_max: 253,\n ha: 253,\n o: 'm 36 10 l 173 239 l 298 10 b 317 0 301 4 310 0 l 408 0 b 426 20 419 0 426 9 b 425 30 426 23 426 27 l 230 356 b 213 364 226 361 222 363 b 196 356 207 364 199 361 l 1 30 z',\n },\n articMarcatoBelow: {\n x_min: 0,\n x_max: 295,\n y_min: -253,\n y_max: 0,\n ha: 253,\n o: 'm 390 -10 l 253 -239 l 128 -10 b 109 0 125 -4 117 0 l 19 0 b 0 -20 7 0 0 -9 b 1 -30 0 -23 0 -27 l 196 -356 b 213 -364 200 -361 204 -363 b 230 -356 219 -364 228 -361 l 425 -30 z',\n },\n fermataAbove: {\n x_min: 0,\n x_max: 622,\n y_min: 0,\n y_max: 368,\n ha: 368,\n o: 'm 778 374 b 448 530 642 521 523 530 b 120 374 373 530 255 521 b 0 65 49 297 0 143 b 20 19 0 37 6 19 b 161 265 60 19 40 143 b 445 373 268 372 410 373 b 448 373 446 373 446 373 b 451 373 449 373 449 373 b 734 265 485 373 628 372 b 876 19 855 143 835 19 b 896 65 890 19 896 36 b 778 374 896 143 848 298 z m 348 99 b 448 0 348 45 393 0 b 547 99 503 0 547 45 b 448 199 547 154 503 199 b 348 99 393 199 348 154 z',\n },\n fermataBelow: {\n x_min: 0,\n x_max: 622,\n y_min: -368,\n y_max: 0,\n ha: 368,\n o: 'm 778 -374 b 896 -65 848 -298 896 -143 b 876 -19 896 -36 890 -19 b 734 -265 835 -19 855 -143 b 451 -373 628 -372 485 -373 b 448 -373 449 -373 449 -373 b 445 -373 446 -373 446 -373 b 161 -265 410 -373 268 -372 b 20 -19 40 -143 60 -19 b 0 -65 6 -19 0 -37 b 120 -374 0 -143 49 -297 b 448 -530 255 -521 373 -530 b 778 -374 523 -530 642 -521 z m 348 -99 b 448 -199 348 -154 393 -199 b 547 -99 503 -199 547 -154 b 448 0 547 -45 503 0 b 348 -99 393 0 348 -45 z',\n },\n fermataLongAbove: {\n x_min: 0,\n x_max: 623,\n y_min: 0,\n y_max: 368,\n ha: 368,\n o: 'm 40 0 l 40 399 l 858 399 l 858 0 l 897 0 l 897 510 b 877 530 897 521 888 530 l 20 530 b 0 510 9 530 0 521 l 0 0 z m 350 148 b 449 49 350 94 395 49 b 547 148 504 49 547 94 b 449 248 547 203 504 248 b 350 148 395 248 350 203 z',\n },\n fermataLongBelow: {\n x_min: 0,\n x_max: 623,\n y_min: -368,\n y_max: 0,\n ha: 368,\n o: 'm 0 -510 b 20 -530 0 -521 9 -530 l 877 -530 b 897 -510 888 -530 897 -521 l 897 0 l 858 0 l 858 -399 l 40 -399 l 40 0 l 0 0 z m 350 -148 b 449 -248 350 -203 395 -248 b 547 -148 504 -248 547 -203 b 449 -49 547 -94 504 -49 b 350 -148 395 -49 350 -94 z',\n },\n fermataVeryLongAbove: {\n x_min: 0,\n x_max: 842,\n y_min: 0,\n y_max: 549,\n ha: 549,\n o: 'm 276 0 l 276 399 l 936 399 l 936 0 l 976 0 l 976 510 b 956 530 976 521 968 530 l 256 530 b 236 510 245 530 236 521 l 236 0 z m 507 148 b 606 49 507 94 552 49 b 706 148 661 49 706 94 b 606 248 706 203 661 248 b 507 148 552 248 507 203 z m 40 0 l 40 661 l 1172 661 l 1172 0 l 1212 0 l 1212 772 b 1192 791 1212 783 1204 791 l 20 791 b 0 772 9 791 0 783 l 0 0 z',\n },\n fermataVeryLongBelow: {\n x_min: 0,\n x_max: 842,\n y_min: -549,\n y_max: 0,\n ha: 549,\n o: 'm 236 -510 b 256 -530 236 -521 245 -530 l 956 -530 b 976 -510 968 -530 976 -521 l 976 0 l 936 0 l 936 -399 l 276 -399 l 276 0 l 236 0 z m 507 -148 b 606 -248 507 -203 552 -248 b 706 -148 661 -248 706 -203 b 606 -49 706 -94 661 -49 b 507 -148 552 -49 507 -94 z m 0 -772 b 20 -791 0 -783 9 -791 l 1192 -791 b 1212 -772 1204 -791 1212 -783 l 1212 0 l 1172 0 l 1172 -661 l 40 -661 l 40 0 l 0 0 z',\n },\n fermataShortAbove: {\n x_min: 0,\n x_max: 642,\n y_min: 0,\n y_max: 454,\n ha: 454,\n o: 'm 363 148 b 462 49 363 94 408 49 b 562 148 517 49 562 94 b 462 248 562 203 517 248 b 363 148 408 248 363 203 z m 477 645 b 461 654 474 649 467 654 b 445 645 455 654 448 649 l 4 32 b 0 20 3 29 0 23 b 20 0 0 9 9 0 l 82 0 b 98 9 88 0 95 4 l 461 514 l 827 9 b 842 0 829 4 837 0 l 904 0 b 924 20 916 0 924 9 b 920 32 924 23 922 29 z',\n },\n fermataShortBelow: {\n x_min: 0,\n x_max: 642,\n y_min: -454,\n y_max: 0,\n ha: 454,\n o: 'm 363 -148 b 462 -248 363 -203 408 -248 b 562 -148 517 -248 562 -203 b 462 -49 562 -94 517 -49 b 363 -148 408 -49 363 -94 z m 920 -32 b 924 -20 922 -29 924 -23 b 904 0 924 -9 916 0 l 842 0 b 827 -9 837 0 829 -4 l 461 -514 l 98 -9 b 82 0 95 -4 88 0 l 20 0 b 0 -20 9 0 0 -9 b 4 -32 0 -23 3 -29 l 445 -645 b 461 -654 448 -649 455 -654 b 477 -645 467 -654 474 -649 z',\n },\n breathMarkComma: {\n x_min: 0,\n x_max: 191,\n y_min: 0,\n y_max: 321,\n ha: 321,\n o: 'm 82 0 b 275 285 215 92 275 183 b 115 462 275 396 212 462 b 0 356 46 462 0 413 b 115 246 0 294 53 246 b 181 258 157 246 177 256 b 192 261 184 259 189 261 b 199 259 194 261 196 261 b 203 245 202 258 203 253 b 48 43 203 183 147 112 z',\n },\n caesura: {\n x_min: 0,\n x_max: 380,\n y_min: 0,\n y_max: 490,\n ha: 490,\n o: 'm 285 706 b 285 706 285 706 285 706 b 271 696 279 706 274 701 l 1 22 b 0 16 0 20 0 17 b 16 0 0 7 7 0 l 50 0 b 65 10 56 0 62 4 l 334 684 b 336 690 334 685 336 688 b 320 706 336 698 328 706 z m 213 22 b 212 16 213 20 212 17 b 228 0 212 7 219 0 l 262 0 b 276 10 268 0 274 4 l 546 684 b 547 690 547 685 547 688 b 531 706 547 698 540 706 l 497 706 b 482 696 491 706 485 701 z',\n },\n caesuraCurved: {\n x_min: 0,\n x_max: 368,\n y_min: 0,\n y_max: 491,\n ha: 491,\n o: 'm 262 707 b 245 693 253 707 246 701 b 1 26 233 603 177 348 b 0 17 0 23 0 20 b 16 0 0 9 6 0 b 30 7 22 0 27 3 b 318 687 259 341 304 602 b 318 690 318 688 318 688 b 301 707 318 698 310 707 z m 474 707 b 458 693 465 707 459 701 b 213 26 446 603 389 348 b 212 19 212 23 212 20 b 229 0 212 9 219 0 b 243 7 235 0 240 3 b 530 687 472 341 516 602 b 530 690 530 688 530 688 b 514 707 530 698 523 707 z',\n },\n restMaxima: {\n x_min: 0,\n x_max: 450,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 158 -360 b 180 -338 170 -360 180 -350 l 180 338 b 158 360 180 350 170 360 l 22 360 b 0 338 9 360 0 350 l 0 -338 b 22 -360 0 -350 9 -360 z m 626 -360 b 648 -338 638 -360 648 -350 l 648 338 b 626 360 648 350 638 360 l 490 360 b 468 338 477 360 468 350 l 468 -338 b 490 -360 468 -350 477 -360 z',\n },\n restDoubleWhole: {\n x_min: 0,\n x_max: 125,\n y_min: -11,\n y_max: 262,\n ha: 273,\n o: 'm 158 -16 b 180 6 171 -16 180 -6 l 180 356 b 158 377 180 367 171 377 l 22 377 b 0 356 10 377 0 367 l 0 6 b 22 -16 0 -6 10 -16 z',\n },\n restWhole: {\n x_min: 0,\n x_max: 325,\n y_min: -131,\n y_max: 5,\n ha: 136,\n o: 'm 20 7 b 0 -13 9 7 0 -1 l 0 -168 b 20 -189 0 -180 9 -189 l 448 -189 b 468 -168 459 -189 468 -180 l 468 -13 b 448 7 468 -1 459 7 z',\n },\n restWholeLegerLine: {\n x_min: -139,\n x_max: 464,\n y_min: -122,\n y_max: 14,\n ha: 136,\n o: 'm 449 20 l 19 20 l -200 20 l -200 -20 l 0 -20 l 0 -156 b 19 -176 0 -167 7 -176 l 449 -176 b 468 -156 461 -176 468 -167 l 468 -20 l 668 -20 l 668 20 z',\n },\n restHalf: {\n x_min: 0,\n x_max: 325,\n y_min: -4,\n y_max: 132,\n ha: 136,\n o: 'm 0 14 b 20 -6 0 -6 0 -6 l 448 -6 b 468 14 468 -6 468 -6 l 468 170 b 448 190 468 190 468 190 l 20 190 b 0 170 0 190 0 190 z',\n },\n restHalfLegerLine: {\n x_min: -139,\n x_max: 464,\n y_min: -14,\n y_max: 122,\n ha: 136,\n o: 'm 668 20 l 468 20 l 468 156 b 449 176 468 167 461 176 l 19 176 b 0 156 7 176 0 167 l 0 20 l -200 20 l -200 -20 l 19 -20 l 449 -20 l 668 -20 z',\n },\n restQuarter: {\n x_min: 0,\n x_max: 235,\n y_min: -331,\n y_max: 401,\n ha: 732,\n o: 'm 331 -239 b 323 -229 330 -238 327 -235 l 157 -24 b 154 -16 156 -23 154 -19 b 157 -3 154 -12 156 -6 l 304 219 b 307 229 305 222 307 226 l 307 242 b 302 253 307 246 305 251 l 69 569 b 55 577 69 569 63 577 b 43 573 50 577 48 576 b 36 559 37 569 36 563 b 40 543 36 550 40 543 l 150 393 b 154 376 153 389 154 383 b 150 359 154 370 153 363 l 4 137 b 1 125 3 134 1 128 l 1 112 b 6 101 1 108 3 104 l 167 -99 b 131 -95 161 -98 148 -95 b 49 -124 107 -95 75 -101 b 0 -229 17 -153 0 -193 b 16 -285 0 -249 4 -269 b 154 -468 46 -331 154 -468 b 171 -477 154 -468 161 -477 b 180 -474 174 -477 177 -477 b 190 -456 187 -468 190 -462 b 186 -444 190 -451 187 -446 b 135 -353 181 -436 135 -353 b 125 -307 135 -353 125 -333 b 150 -246 125 -288 131 -265 b 206 -223 167 -229 187 -223 b 252 -236 225 -223 240 -229 l 308 -272 b 320 -275 308 -272 314 -275 b 334 -268 325 -275 330 -274 b 338 -255 337 -262 338 -259 b 334 -243 338 -251 337 -248 z',\n },\n rest8th: {\n x_min: 0,\n x_max: 276,\n y_min: -255,\n y_max: 204,\n ha: 459,\n o: 'm 384 292 b 379 294 383 292 380 294 b 360 282 370 294 363 289 b 245 141 354 274 310 189 b 180 112 226 127 203 117 b 206 181 196 131 206 154 b 104 284 206 238 160 284 b 0 181 46 284 0 238 b 65 85 0 137 27 101 b 144 68 86 75 115 68 b 269 109 186 68 230 81 b 320 157 287 122 304 140 l 156 -356 l 194 -367 l 396 268 b 397 275 397 269 397 272 b 384 292 397 282 393 288 z',\n },\n rest16th: {\n x_min: 1,\n x_max: 344,\n y_min: -507,\n y_max: 204,\n ha: 711,\n o: 'm 494 268 b 495 275 495 271 495 272 b 482 292 495 282 491 289 b 475 294 480 294 477 294 b 456 282 467 294 461 289 b 285 115 422 213 364 135 b 310 184 302 135 310 158 b 203 284 310 240 259 284 b 104 177 145 281 104 233 b 171 84 105 134 134 98 b 252 69 197 72 225 69 b 423 164 324 72 380 108 l 423 164 l 359 -65 b 183 -245 338 -132 256 -226 b 207 -176 199 -225 207 -200 b 102 -76 207 -118 158 -76 b 1 -183 45 -76 1 -125 b 69 -275 1 -226 32 -262 b 150 -289 96 -287 121 -289 b 321 -194 222 -287 278 -251 l 174 -720 l 213 -730 z',\n },\n rest32nd: {\n x_min: 0,\n x_max: 391,\n y_min: -507,\n y_max: 460,\n ha: 967,\n o: 'm 217 71 b 408 171 348 71 402 161 l 354 -46 b 184 -240 323 -121 268 -217 b 204 -171 200 -220 204 -197 b 102 -76 204 -114 158 -76 b 0 -177 46 -76 0 -120 b 140 -288 0 -252 63 -288 b 320 -186 216 -288 276 -246 l 189 -721 l 228 -730 l 562 638 b 563 644 563 639 563 642 b 549 661 563 652 557 658 b 543 662 547 662 544 662 b 524 649 534 662 528 657 b 361 487 497 589 431 504 b 383 556 379 508 383 530 b 282 652 383 611 338 652 b 179 549 226 652 179 609 b 249 451 179 505 210 464 b 311 439 268 444 288 441 b 330 441 317 439 323 439 b 498 541 400 445 458 485 l 442 310 b 271 117 413 238 351 137 b 292 186 288 138 292 160 b 189 282 292 243 245 282 b 88 180 132 282 88 238 b 217 71 88 112 153 71 z',\n },\n rest64th: {\n x_min: 0,\n x_max: 423,\n y_min: -758,\n y_max: 464,\n ha: 1222,\n o: 'm 207 -1083 l 246 -1092 b 608 644 282 -919 605 634 b 609 649 608 647 609 648 b 595 667 609 658 603 665 b 589 668 593 668 592 668 b 569 654 577 668 575 664 b 474 521 563 644 530 573 b 412 487 456 505 435 494 b 432 546 425 503 432 526 b 328 649 432 606 382 649 b 226 546 275 649 226 608 b 360 438 226 465 300 438 b 501 492 419 438 474 465 b 546 546 527 518 533 526 l 547 547 l 500 323 b 399 161 491 300 452 209 b 337 125 382 144 360 132 b 357 184 350 143 357 134 b 253 288 357 235 317 288 b 151 187 190 288 151 236 b 285 76 151 138 183 76 b 471 184 412 76 465 173 l 423 -45 b 324 -204 413 -69 374 -158 b 262 -240 305 -222 284 -233 b 281 -180 274 -223 281 -212 b 177 -78 281 -147 258 -78 b 75 -180 98 -78 75 -153 b 209 -289 75 -207 88 -289 b 395 -181 330 -289 389 -193 l 350 -397 b 248 -564 337 -449 285 -530 b 186 -599 229 -580 207 -592 b 204 -540 197 -583 204 -563 b 102 -438 204 -501 174 -438 b 0 -540 29 -438 0 -501 b 132 -648 0 -579 24 -648 b 320 -540 266 -648 315 -552 z',\n },\n rest128th: {\n x_min: -1,\n x_max: 475,\n y_min: -759,\n y_max: 717,\n ha: 1476,\n o: 'm 677 1028 b 664 1032 672 1031 667 1032 b 644 1018 654 1032 649 1028 b 549 886 638 1008 605 937 b 487 851 531 870 510 858 b 507 910 500 868 507 890 b 403 1014 507 971 456 1014 b 301 910 350 1014 301 972 b 435 802 301 829 374 802 b 576 857 494 802 549 829 b 621 910 602 883 608 890 l 622 912 l 575 687 b 474 526 566 664 527 573 b 412 490 456 508 435 497 b 432 549 425 507 432 498 b 328 652 432 599 392 652 b 226 552 265 652 226 600 b 360 441 226 503 258 441 b 546 549 487 441 540 537 l 498 320 b 399 160 488 295 449 207 b 337 125 380 143 359 131 b 356 184 348 141 356 153 b 252 287 356 217 333 287 b 150 184 173 287 150 212 b 284 76 150 157 163 76 b 469 183 405 76 464 171 l 425 -33 b 323 -200 412 -85 360 -166 b 261 -235 304 -216 282 -228 b 279 -176 272 -219 279 -199 b 177 -72 279 -137 249 -72 b 75 -176 104 -72 75 -137 b 207 -284 75 -215 99 -284 b 395 -176 341 -284 390 -187 l 347 -409 b 248 -566 330 -461 282 -533 b 186 -600 229 -582 207 -593 b 204 -541 197 -583 204 -564 b 102 -438 204 -501 174 -438 b -1 -541 29 -438 -1 -503 b 132 -649 -1 -580 24 -649 b 318 -546 256 -649 307 -567 l 206 -1084 l 245 -1093 b 683 1008 281 -920 680 996 b 684 1015 683 1009 684 1014 b 677 1028 684 1020 683 1024 z',\n },\n dynamicPiano: {\n x_min: -95,\n x_max: 317,\n y_min: -163,\n y_max: 263,\n ha: 426,\n o: 'm 186 -235 l 186 -206 l 78 -206 l 161 26 l 166 16 b 229 -29 166 16 180 -16 b 256 -32 238 -32 248 -32 b 445 166 336 -32 415 49 b 456 246 454 197 456 223 b 374 373 456 343 396 367 b 356 376 369 374 361 376 b 242 314 311 376 266 338 l 238 310 l 235 315 b 154 377 235 315 204 370 b 138 379 148 377 144 379 b 0 226 91 379 42 346 l 26 213 b 63 301 32 232 46 278 b 102 328 72 314 89 325 b 108 328 104 328 107 328 b 120 325 112 328 117 327 b 127 304 125 321 127 314 b 94 192 127 269 101 206 l -49 -206 l -137 -206 l -137 -235 z m 226 17 b 215 19 223 17 217 17 b 187 81 193 27 187 53 b 204 180 187 125 203 177 b 297 317 217 235 259 295 b 324 325 307 323 315 325 b 336 324 328 325 333 325 b 350 311 341 323 347 317 b 356 278 354 302 356 291 b 333 161 356 239 341 187 b 242 20 314 105 278 37 b 226 17 238 17 230 17 z',\n },\n dynamicMezzo: {\n x_min: -7,\n x_max: 374,\n y_min: -2,\n y_max: 251,\n ha: 253,\n o: 'm 488 63 b 467 48 481 50 474 48 b 459 49 464 48 462 48 b 449 65 452 52 449 58 b 461 112 449 76 455 94 b 474 157 464 121 471 150 b 492 281 482 183 492 242 b 491 301 492 288 492 295 b 436 359 484 340 467 359 b 340 307 399 359 359 331 l 337 301 l 334 308 b 272 359 334 308 311 359 b 177 310 232 359 202 343 l 173 304 l 171 311 b 117 360 171 311 153 353 b 96 361 109 361 102 361 b 29 328 60 361 39 340 b -10 252 20 318 0 284 l 12 240 b 68 318 12 240 36 318 b 75 317 71 318 72 318 b 86 295 84 314 86 307 b 59 194 86 275 75 240 b 1 20 59 193 6 33 b 0 13 1 17 0 16 b 3 4 0 10 1 7 b 14 -1 6 1 9 -1 l 36 -1 b 91 -1 58 -1 86 -1 b 107 22 94 -1 101 -1 b 127 99 114 53 121 79 b 235 310 132 121 186 310 b 243 305 238 310 242 308 b 248 289 246 302 248 297 b 216 160 248 265 233 219 b 173 22 194 89 173 22 b 173 16 173 20 173 19 b 176 3 173 12 173 6 b 187 -1 179 0 183 -1 l 266 -1 b 282 16 272 -1 279 0 b 284 26 282 17 284 22 b 392 302 312 228 359 288 b 396 304 393 302 395 304 l 397 304 b 400 302 399 304 399 302 b 408 289 403 301 408 297 b 369 140 408 275 399 217 b 356 75 360 117 356 95 b 370 23 356 55 360 37 b 428 -3 382 6 408 -3 b 536 99 492 -3 517 49 b 539 108 537 102 537 105 l 514 120 b 488 63 514 120 498 81 z',\n },\n dynamicForte: {\n x_min: -137,\n x_max: 334,\n y_min: -193,\n y_max: 421,\n ha: 614,\n o: 'm -122 -86 b -197 -161 -161 -86 -197 -122 b -81 -278 -197 -236 -147 -278 b 35 -228 -35 -278 -1 -264 b 202 173 98 -164 167 50 b 238 297 215 219 228 264 l 238 300 l 341 300 b 356 314 350 300 356 305 l 356 346 b 341 360 356 354 350 360 l 256 360 l 256 364 b 330 554 297 511 308 537 b 359 566 341 563 351 566 b 366 564 361 566 364 564 b 380 553 373 563 377 559 b 382 546 382 550 382 549 b 373 528 382 539 379 531 b 351 478 359 517 351 498 b 354 458 351 471 353 465 b 384 426 359 445 370 432 b 410 420 390 423 400 420 b 445 431 420 420 432 423 b 478 472 459 438 474 456 b 481 497 481 480 481 488 b 467 550 481 514 477 533 b 376 605 455 572 422 598 b 351 606 369 606 360 606 b 225 553 317 606 272 595 b 122 363 187 520 154 456 l 122 360 l 13 360 b -1 346 4 360 -1 354 l -1 314 b 13 300 -1 305 4 300 l 102 300 l 102 294 b 66 140 88 236 76 187 b 24 -35 55 86 42 32 l 20 -52 b -53 -235 -10 -170 -19 -212 b -78 -242 -60 -239 -69 -242 b -98 -235 -85 -242 -92 -239 b -105 -222 -102 -232 -105 -228 b -105 -219 -105 -220 -105 -220 b -94 -204 -104 -213 -101 -207 b -58 -144 -66 -193 -58 -167 b -122 -86 -58 -124 -71 -86 z',\n },\n dynamicRinforzando: {\n x_min: -12,\n x_max: 230,\n y_min: 0,\n y_max: 254,\n ha: 254,\n o: 'm 272 364 b 200 341 239 364 212 348 b 168 310 187 333 177 321 l 164 304 b 109 363 164 304 151 353 b 88 366 102 364 95 366 b 22 331 52 366 32 343 b -17 255 13 321 -7 287 l 4 243 b 60 321 4 243 29 321 b 68 320 63 321 65 321 b 78 297 75 317 78 308 b 49 180 78 272 65 230 l 0 23 b 0 17 0 22 0 20 b 3 4 0 13 0 7 b 14 0 6 1 10 0 l 94 0 b 109 17 99 0 107 1 b 111 27 109 19 111 23 b 209 302 140 230 186 279 b 225 311 215 308 220 311 b 229 310 226 311 228 311 b 233 304 233 307 233 305 b 233 301 233 302 233 301 b 216 268 220 291 216 279 b 225 243 216 259 219 249 b 262 229 235 232 249 229 b 304 242 279 229 295 235 b 331 308 320 255 331 275 b 272 364 331 341 304 364 z',\n },\n dynamicSforzando: {\n x_min: 0,\n x_max: 208,\n y_min: -5,\n y_max: 263,\n ha: 268,\n o: 'm 242 328 b 217 289 222 317 217 300 b 258 249 217 274 230 249 b 298 284 285 249 295 269 b 300 295 300 287 300 291 b 189 379 300 328 272 379 b 49 259 92 379 49 315 b 99 173 49 229 59 196 b 164 137 117 163 140 151 b 194 88 189 122 194 102 b 124 24 194 73 177 24 b 72 46 82 24 72 39 b 73 49 72 48 72 49 b 96 96 78 52 96 62 b 50 150 96 134 72 150 b 0 91 29 150 0 134 b 124 -7 0 26 49 -7 b 282 111 199 -7 282 24 b 171 239 282 197 207 219 b 128 292 135 259 128 268 b 193 347 128 317 156 347 b 242 328 230 347 242 328 z',\n },\n dynamicZ: {\n x_min: -42,\n x_max: 239,\n y_min: -1,\n y_max: 258,\n ha: 259,\n o: 'm 229 292 b 235 288 232 292 233 291 b 236 284 236 285 236 285 b 233 278 236 281 235 279 b -42 55 232 276 -4 85 b -60 24 -56 43 -60 33 b -50 4 -60 12 -50 4 b -35 0 -45 1 -40 0 b 9 29 -14 0 1 19 b 50 69 17 43 26 69 b 89 35 75 69 81 50 b 170 -1 104 10 137 -1 b 243 22 197 -1 223 6 b 304 147 288 56 304 118 b 264 196 304 176 294 196 b 226 156 239 196 226 174 b 251 117 226 128 249 122 b 251 108 251 114 251 111 b 243 79 251 98 249 88 b 212 56 236 68 223 56 b 202 59 209 56 204 56 b 163 92 194 63 186 75 b 108 122 140 109 114 120 b 105 125 105 124 105 124 b 107 128 105 127 107 128 b 312 304 107 128 302 294 b 341 340 324 315 336 327 b 344 347 343 341 344 346 l 344 356 b 333 369 343 367 336 369 l 331 369 l 262 363 b 217 361 245 361 230 361 b 156 366 193 361 174 363 b 114 372 147 367 125 372 b 107 370 111 372 108 370 b 86 344 98 367 89 360 b 37 222 72 265 42 232 b 37 219 37 220 37 220 b 50 207 37 213 43 207 l 66 207 b 81 225 75 207 76 215 b 108 291 85 235 105 285 b 118 297 111 297 112 297 b 167 289 125 295 144 291 b 181 289 171 289 177 289 b 229 292 202 289 222 291 z',\n },\n ornamentTrill: {\n x_min: -12,\n x_max: 383,\n y_min: 0,\n y_max: 383,\n ha: 383,\n o: 'm 464 396 b 376 359 408 396 376 359 l 364 370 b 346 377 357 377 346 377 l 197 377 l 246 528 b 246 531 246 530 246 531 b 226 552 246 541 236 552 l 213 552 b 199 544 209 552 202 547 b 124 482 196 541 130 487 b 117 471 118 478 117 471 b 84 377 117 471 102 431 l 3 377 b -17 360 -14 377 -17 360 l -17 341 b 3 324 -17 325 3 324 l 66 324 b 0 85 35 229 0 117 b 92 0 0 16 48 0 b 186 35 137 0 186 35 b 194 13 186 35 190 24 b 212 0 199 1 212 0 l 276 0 b 298 16 295 0 298 16 l 298 43 b 321 147 298 75 321 147 l 382 284 b 412 325 382 284 396 311 b 446 341 425 336 438 341 b 452 340 448 341 451 341 b 428 288 432 327 428 305 b 485 233 428 271 446 233 b 552 308 534 233 552 264 b 464 396 552 353 520 396 z m 222 143 b 147 78 210 104 171 78 b 137 79 143 78 140 78 b 121 115 125 85 121 99 b 137 190 121 148 137 190 l 180 324 l 275 324 b 279 320 279 324 279 320 b 222 143 279 320 235 187 z',\n },\n ornamentTurn: {\n x_min: 0,\n x_max: 456,\n y_min: 0,\n y_max: 232,\n ha: 232,\n o: 'm 527 334 b 442 269 488 334 442 312 b 501 204 442 228 468 204 b 570 226 533 204 540 226 b 613 164 598 226 613 204 l 613 163 b 550 98 613 127 586 98 b 448 143 508 98 485 109 l 328 255 l 298 284 b 174 334 262 317 223 334 b 0 170 92 334 0 278 b 131 0 0 68 58 0 b 215 65 170 0 215 22 b 156 130 215 107 189 130 b 86 108 124 130 117 108 b 43 170 59 108 43 130 l 43 171 b 108 236 43 207 72 236 b 209 192 150 236 171 225 l 328 79 l 360 50 b 482 0 396 17 433 0 b 657 164 564 0 657 56 b 527 334 657 266 600 334 z',\n },\n ornamentTurnSlash: {\n x_min: 0,\n x_max: 456,\n y_min: -80,\n y_max: 313,\n ha: 393,\n o: 'm 527 334 b 442 269 488 334 442 312 b 501 204 442 228 468 204 b 570 226 533 204 540 226 b 613 164 598 226 613 204 l 613 163 b 550 98 613 127 586 98 b 448 143 508 98 485 109 l 354 230 l 354 431 b 336 451 354 442 347 451 l 323 451 b 302 431 311 451 302 442 l 302 279 l 298 284 b 174 334 262 317 223 334 b 0 170 92 334 0 278 b 131 0 0 68 58 0 b 215 65 170 0 215 22 b 156 130 215 107 189 130 b 86 108 124 130 117 108 b 43 170 59 108 43 130 l 43 171 b 108 236 43 207 72 236 b 209 192 150 236 171 225 l 302 104 l 302 -96 b 323 -115 302 -108 311 -115 l 336 -115 b 354 -96 347 -115 354 -108 l 354 55 l 360 50 b 482 0 396 17 433 0 b 657 164 564 0 657 56 b 527 334 657 266 600 334 z',\n },\n ornamentMordent: {\n x_min: 0,\n x_max: 473,\n y_min: -77,\n y_max: 316,\n ha: 393,\n o: 'm 647 302 l 562 166 l 446 347 b 429 357 444 353 435 357 b 413 347 423 357 416 353 l 363 262 l 363 435 b 343 455 363 446 354 455 l 331 455 b 311 435 320 455 311 446 l 311 173 l 310 171 l 203 347 b 186 357 200 353 192 357 b 168 347 180 357 171 353 l 0 69 l 35 48 l 120 189 l 226 10 b 243 0 229 4 238 0 b 261 10 249 0 258 4 l 311 95 l 311 -91 b 331 -111 311 -102 320 -111 l 343 -111 b 363 -91 354 -111 363 -102 l 363 184 l 366 189 l 478 10 b 495 0 481 4 490 0 b 513 10 501 0 510 4 l 681 281 z',\n },\n ornamentShortTrill: {\n x_min: 0,\n x_max: 473,\n y_min: 0,\n y_max: 248,\n ha: 248,\n o: 'm 647 302 l 562 166 l 446 347 b 431 357 444 353 436 357 b 413 347 425 357 416 353 l 310 171 l 203 347 b 186 357 200 353 192 357 b 168 347 180 357 173 353 l 0 69 l 35 48 l 120 189 l 226 10 b 243 0 229 4 238 0 b 261 10 249 0 258 4 l 366 189 l 478 9 b 495 0 481 3 490 0 b 513 10 501 0 510 4 l 681 281 z',\n },\n ornamentTremblement: {\n x_min: 0,\n x_max: 654,\n y_min: 0,\n y_max: 248,\n ha: 248,\n o: 'm 907 302 l 822 166 l 708 348 b 691 357 704 354 701 357 b 674 347 685 357 677 353 l 648 302 l 563 166 l 449 348 b 432 357 446 354 438 357 b 415 347 426 357 418 353 l 415 346 l 311 171 l 203 348 b 186 357 200 354 192 357 b 168 348 177 357 171 354 l 168 347 l 0 69 l 35 48 l 120 190 l 226 10 b 243 0 229 4 238 0 l 245 0 b 261 10 251 0 258 4 l 367 189 l 480 10 b 497 0 482 4 491 0 b 513 10 503 0 510 4 l 625 192 l 739 10 b 756 0 742 4 750 0 b 772 10 762 0 769 4 l 942 282 z',\n },\n ornamentPrecompAppoggTrill: {\n x_min: 0,\n x_max: 680,\n y_min: 0,\n y_max: 388,\n ha: 388,\n o: 'm 860 170 l 746 353 b 729 361 743 359 737 361 b 713 351 723 361 716 357 l 685 307 l 600 170 l 487 353 b 481 359 485 356 484 357 b 469 361 478 360 472 361 b 452 351 464 361 455 357 l 348 176 l 240 353 b 223 361 238 359 229 361 b 206 353 215 361 209 359 l 40 76 l 40 541 b 20 559 39 552 30 559 b 0 541 10 559 1 552 l 0 26 b 19 1 0 16 9 4 b 26 0 20 1 24 0 b 48 13 35 0 43 6 l 72 52 l 157 194 l 265 14 b 282 4 268 9 276 4 b 298 14 288 4 295 9 l 405 193 l 517 14 b 534 4 520 9 528 4 b 550 14 540 4 547 9 l 664 196 l 776 14 b 793 4 779 9 788 4 b 811 14 799 4 808 9 l 979 287 l 945 307 z',\n },\n ornamentPrecompSlideTrillDAnglebert: {\n x_min: 0,\n x_max: 662,\n y_min: -158,\n y_max: 248,\n ha: 406,\n o: 'm 834 166 l 720 348 b 704 357 717 354 713 357 b 687 348 697 357 690 353 l 661 302 l 660 302 l 575 166 l 461 348 b 455 354 459 350 456 353 b 444 357 452 356 448 357 b 428 347 438 357 431 353 l 323 171 l 215 347 b 213 350 215 348 215 350 b 213 350 213 350 213 350 l 213 351 l 212 351 l 212 353 l 210 353 l 210 353 l 209 354 b 207 354 209 354 207 354 b 197 357 206 356 200 357 b 197 357 197 357 197 357 b 194 357 196 357 196 357 b 180 347 187 357 183 353 l 180 346 l 69 164 b 0 -50 23 88 0 17 b 49 -219 0 -108 16 -163 b 66 -228 52 -223 59 -228 b 76 -225 69 -228 73 -226 b 86 -207 82 -222 86 -215 b 84 -197 86 -204 85 -200 b 40 -52 55 -150 40 -102 b 104 143 40 10 62 73 l 131 190 l 239 10 b 256 0 242 4 249 0 l 256 0 b 272 10 262 0 269 4 l 379 189 l 491 10 b 508 0 494 4 503 0 b 508 0 508 0 508 0 l 508 0 b 526 10 514 0 521 4 l 638 192 l 750 10 b 768 0 755 4 762 0 l 768 0 b 785 10 773 0 782 4 l 785 10 l 953 282 l 919 302 z',\n },\n ornamentPrecompSlideTrillBach: {\n x_min: 0,\n x_max: 662,\n y_min: -158,\n y_max: 321,\n ha: 479,\n o: 'm 834 166 l 720 348 b 704 357 716 354 713 357 b 687 348 698 357 690 354 l 660 304 l 660 302 l 632 259 l 632 442 b 612 462 632 454 624 462 l 599 462 b 579 442 588 462 579 454 l 579 173 l 575 166 l 461 348 b 455 356 459 351 458 354 b 445 359 452 357 448 359 b 428 348 439 359 431 354 l 323 171 l 215 347 b 213 350 215 348 213 350 l 213 351 l 212 353 l 210 353 l 210 354 l 207 354 b 197 357 204 356 200 357 b 180 348 189 357 183 354 l 179 346 l 69 164 b 0 -49 23 88 0 19 b 49 -217 0 -107 17 -163 b 66 -228 52 -223 60 -228 b 76 -225 69 -228 73 -226 b 86 -207 82 -222 86 -213 b 84 -197 86 -204 85 -200 b 42 -50 56 -148 42 -101 b 104 144 42 12 62 75 l 131 190 l 239 10 b 256 0 242 4 251 0 b 274 10 262 0 271 4 l 379 190 l 491 10 b 508 0 494 4 503 0 b 526 10 514 0 523 4 l 579 98 l 579 -84 b 599 -104 579 -95 588 -104 l 612 -104 b 632 -84 624 -104 632 -95 l 632 183 l 638 192 l 750 10 b 768 0 753 4 762 0 b 785 10 773 0 782 4 l 953 282 l 919 302 z',\n },\n ornamentPrecompTrillSuffixDandrieu: {\n x_min: 0,\n x_max: 662,\n y_min: 0,\n y_max: 406,\n ha: 406,\n o: 'm 904 575 b 887 585 901 580 893 585 b 877 582 884 585 880 583 b 867 564 871 579 867 570 b 870 554 867 562 868 557 b 912 408 897 505 912 458 b 850 213 912 346 891 282 l 822 167 l 714 348 b 697 357 711 354 703 357 b 680 348 691 357 683 354 l 575 168 l 462 348 b 445 357 459 354 451 357 b 428 348 439 357 431 354 l 315 167 l 203 348 b 186 357 200 354 192 357 b 168 348 180 357 171 354 l 0 76 l 35 55 l 120 192 l 233 10 b 249 0 238 4 240 0 b 266 10 255 0 264 4 l 294 55 l 379 192 l 492 9 b 498 3 494 6 495 4 b 508 0 501 1 505 0 b 526 10 514 0 523 4 l 631 186 l 737 13 b 746 3 739 10 743 4 b 756 0 749 1 753 0 b 773 9 762 0 770 3 l 884 193 b 953 406 930 269 953 338 b 904 575 953 464 936 520 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefix: {\n x_min: 0,\n x_max: 857,\n y_min: 0,\n y_max: 248,\n ha: 248,\n o: 'm 383 140 b 413 189 399 166 412 187 b 520 10 423 171 516 16 b 537 0 523 4 530 0 b 554 10 543 0 550 4 b 660 189 557 16 649 171 b 772 10 671 173 766 19 b 791 0 778 1 785 0 b 806 10 796 0 802 4 b 919 192 809 16 907 174 l 1031 10 b 1048 0 1035 4 1043 0 l 1048 0 b 1066 10 1054 1 1063 4 l 1066 10 l 1234 282 l 1200 302 l 1115 166 l 1002 348 b 985 357 998 354 994 357 b 968 348 978 357 971 353 l 855 166 b 742 348 845 183 746 341 b 726 357 737 354 732 357 b 708 348 719 357 711 354 b 603 171 704 341 613 189 b 495 348 593 189 498 343 b 478 357 492 353 487 357 b 461 348 469 357 464 353 b 357 173 459 346 393 235 b 213 79 320 111 284 79 b 66 176 143 79 95 112 b 40 279 43 228 40 275 b 20 300 40 291 30 300 b 0 278 9 300 0 289 b 29 161 0 276 3 219 b 213 39 65 81 130 39 b 383 140 297 39 346 73 z',\n },\n ornamentPrecompTrillLowerSuffix: {\n x_min: 0,\n x_max: 565,\n y_min: -171,\n y_max: 249,\n ha: 420,\n o: 'm 347 168 l 235 348 b 217 359 230 354 226 359 b 200 348 209 359 203 353 b 3 30 197 344 6 35 b 0 20 0 26 0 24 b 22 0 0 9 10 0 b 37 9 27 0 35 3 l 151 192 b 265 10 161 174 262 13 b 281 0 268 6 272 0 b 298 10 289 0 295 3 l 403 186 l 511 10 b 528 0 516 4 521 0 b 546 10 537 0 541 4 l 698 265 b 775 22 744 202 775 112 b 700 -215 775 -60 752 -144 b 696 -226 697 -219 696 -222 b 704 -243 696 -232 700 -239 b 717 -246 708 -246 713 -246 b 733 -239 723 -246 729 -243 b 814 20 789 -160 814 -69 b 711 312 814 132 773 242 b 696 320 707 317 700 320 b 680 310 691 320 684 318 b 595 168 671 297 602 181 l 488 348 b 471 359 484 354 478 359 b 454 348 464 359 456 353 b 347 168 449 343 357 186 z',\n },\n brassMuteClosed: {\n x_min: 0,\n x_max: 312,\n y_min: 0,\n y_max: 312,\n ha: 312,\n o: 'm 22 256 b 0 225 7 256 0 240 b 22 193 0 209 7 193 l 193 193 l 193 22 b 225 0 193 7 209 0 b 256 22 240 0 256 7 l 256 193 l 428 193 b 449 225 442 193 449 209 b 428 256 449 240 442 256 l 256 256 l 256 428 b 225 449 256 442 240 449 b 193 428 209 449 193 442 l 193 256 z',\n },\n brassMuteOpen: {\n x_min: 0,\n x_max: 280,\n y_min: 0,\n y_max: 280,\n ha: 280,\n o: 'm 202 403 b 0 202 91 403 0 312 b 202 0 0 91 91 0 b 403 202 312 0 403 91 b 202 403 403 312 312 403 z m 202 40 b 40 202 112 40 40 112 b 202 363 40 291 112 363 b 363 202 291 363 363 291 b 202 40 363 112 291 40 z',\n },\n stringsDownBow: {\n x_min: 0,\n x_max: 315,\n y_min: 0,\n y_max: 293,\n ha: 293,\n o: 'm 40 0 l 40 291 l 413 291 l 413 0 l 454 0 l 454 402 b 433 422 454 413 445 422 l 20 422 b 0 402 9 422 0 402 l 0 0 z',\n },\n stringsUpBow: {\n x_min: 0,\n x_max: 262,\n y_min: 0,\n y_max: 343,\n ha: 343,\n o: 'm 374 485 b 357 494 372 490 363 494 l 337 494 b 318 481 330 494 321 488 l 189 118 l 59 481 b 40 494 56 488 48 494 l 20 494 b 0 474 9 494 0 485 b 1 467 0 472 1 468 l 170 13 b 189 0 173 6 181 0 b 207 13 196 0 204 6 l 376 467 b 377 474 376 468 377 472 b 374 485 377 477 376 482 z',\n },\n stringsHarmonic: {\n x_min: 0,\n x_max: 181,\n y_min: 0,\n y_max: 181,\n ha: 181,\n o: 'm 131 220 b 220 131 181 220 220 181 b 131 40 220 81 181 40 b 40 131 81 40 40 81 b 131 220 40 181 81 220 z m 131 261 b 0 131 59 261 0 203 b 131 0 0 59 59 0 b 261 131 203 0 261 59 b 131 261 261 203 203 261 z',\n },\n pluckedSnapPizzicatoAbove: {\n x_min: 0,\n x_max: 269,\n y_min: 0,\n y_max: 389,\n ha: 389,\n o: 'm 213 540 b 194 560 213 552 204 560 b 174 540 183 560 174 552 l 174 386 b 0 193 76 376 0 294 b 194 0 0 86 86 0 b 387 193 301 0 387 86 b 213 386 387 294 311 376 z m 194 40 b 40 193 109 40 40 109 b 174 346 40 271 98 336 l 174 193 b 194 173 174 183 183 173 b 213 193 204 173 213 183 l 213 346 b 347 193 289 336 347 271 b 194 40 347 109 278 40 z',\n },\n pluckedSnapPizzicatoBelow: {\n x_min: 0,\n x_max: 269,\n y_min: 0,\n y_max: 389,\n ha: 389,\n o: 'm 213 174 b 387 367 311 184 387 266 b 193 560 387 474 301 560 b 0 367 86 560 0 474 b 174 174 0 266 76 184 l 174 20 b 194 0 174 9 183 0 b 213 20 204 0 213 9 z m 194 520 b 347 367 278 520 347 452 b 213 215 347 289 289 225 l 213 367 b 194 387 213 377 204 387 b 174 367 183 387 174 377 l 174 215 b 40 367 98 225 40 289 b 194 520 40 452 109 520 z',\n },\n keyboardPedalPed: {\n x_min: 0,\n x_max: 981,\n y_min: -10,\n y_max: 545,\n ha: 555,\n o: 'm 1354 12 b 1413 78 1385 12 1413 42 b 1354 145 1413 115 1385 145 b 1293 78 1320 145 1293 115 b 1354 12 1293 42 1320 12 z m 1092 88 b 1080 86 1089 86 1084 86 b 1004 203 1037 86 1004 137 b 1107 376 1004 360 1097 374 b 1149 209 1129 336 1149 287 b 1092 88 1149 117 1130 95 z m 752 393 b 795 344 779 393 795 372 b 770 285 795 325 788 304 b 693 203 737 249 697 207 b 688 264 690 225 688 245 b 752 393 688 347 714 393 z m 245 507 b 220 544 245 533 235 544 b 217 544 219 544 219 544 b 186 510 206 546 192 537 b 143 464 179 478 163 464 b 134 465 140 464 137 464 b 102 516 117 467 102 487 b 141 613 102 541 112 576 b 347 721 212 711 315 721 b 356 721 351 721 354 721 b 275 560 344 701 297 616 b 259 495 274 557 259 528 b 272 452 259 480 264 465 b 373 323 297 416 350 354 b 387 284 382 311 387 298 b 350 222 387 265 376 245 b 230 140 301 180 252 154 b 128 39 215 130 128 92 b 134 12 128 30 130 22 b 173 -14 144 -7 157 -14 b 264 40 204 -14 243 17 b 333 98 281 58 302 98 b 389 39 357 98 373 60 b 478 -10 416 1 435 -10 b 622 96 527 -10 559 43 b 740 -10 626 86 667 -10 b 929 95 827 -10 917 85 b 1086 -12 950 37 1018 -12 b 1120 -7 1097 -12 1109 -10 b 1264 213 1212 17 1264 111 b 1263 248 1264 225 1263 236 b 815 664 1228 544 907 647 b 785 668 805 665 795 668 b 779 668 783 668 782 668 b 757 654 769 668 760 665 b 757 649 757 652 757 651 b 786 618 759 629 783 619 b 818 606 796 613 808 611 b 1071 435 1007 534 1066 445 b 909 181 930 386 909 256 b 910 141 909 164 909 151 b 786 78 899 127 844 78 b 708 151 726 78 710 144 b 799 230 711 154 742 181 b 864 350 845 271 864 312 b 757 456 864 410 815 456 b 599 222 644 456 599 328 b 609 141 599 192 602 164 b 563 104 608 140 595 122 b 540 98 556 99 549 98 b 459 140 513 98 480 118 b 397 184 413 189 399 184 b 475 279 403 189 454 226 b 482 311 480 289 482 300 b 449 410 482 359 452 405 b 361 533 442 419 383 503 b 354 560 356 541 354 550 b 386 651 353 588 372 622 b 429 713 405 693 426 710 b 557 592 521 688 557 628 b 549 569 557 582 554 573 b 523 559 540 562 531 559 b 459 592 495 559 469 583 b 425 613 451 600 438 613 b 409 608 419 613 415 612 b 399 586 402 602 399 595 b 399 583 397 585 399 585 b 409 552 399 573 405 562 b 541 458 441 487 492 458 b 608 480 564 458 588 465 b 648 572 632 497 648 531 b 429 778 648 649 589 749 b 351 785 402 782 376 785 b 0 507 130 785 0 615 b 127 366 0 399 68 366 b 245 507 186 366 245 429 z',\n },\n keyboardPedalUp: {\n x_min: 0,\n x_max: 473,\n y_min: 0,\n y_max: 473,\n ha: 473,\n o: 'm 99 99 b 164 69 120 79 143 69 b 199 82 177 69 190 73 b 210 114 206 89 210 102 b 206 137 210 122 209 130 b 200 160 203 145 200 154 b 210 179 200 166 203 171 l 245 215 b 285 213 255 225 272 219 l 287 213 l 288 212 b 318 183 301 206 318 196 l 318 134 b 291 102 318 112 308 112 b 258 58 274 92 258 76 b 340 0 258 26 294 0 b 423 58 386 0 423 26 b 390 102 423 76 408 92 b 361 134 373 112 361 112 l 361 183 b 392 212 361 196 379 206 b 395 213 393 212 393 213 b 436 215 408 219 426 225 l 471 179 b 480 161 478 171 480 167 b 474 137 480 154 477 147 b 471 115 472 130 471 122 b 482 82 471 102 474 91 b 517 69 491 73 504 69 b 582 99 539 69 562 79 b 612 164 602 120 612 143 b 599 199 612 177 608 190 b 567 210 592 206 579 210 b 544 206 559 210 552 209 b 521 200 536 203 528 200 b 501 210 514 200 508 203 l 467 245 b 468 285 456 255 462 272 l 468 287 b 469 288 468 287 469 287 b 498 318 475 301 485 318 l 547 318 b 579 291 569 318 569 308 b 624 258 589 274 605 258 b 681 340 655 258 681 294 b 624 423 681 386 655 423 b 579 390 605 423 589 408 b 547 361 569 373 569 361 l 498 361 b 469 392 485 361 475 379 b 468 395 469 393 468 393 b 467 436 462 408 456 426 l 501 471 b 520 480 508 478 514 480 b 544 474 527 480 534 477 b 566 471 552 472 559 471 b 599 482 579 471 590 474 b 612 516 608 491 612 503 b 582 580 612 536 602 560 b 516 612 562 600 537 612 b 482 599 503 612 491 608 b 471 566 474 590 471 579 b 474 544 471 559 472 552 b 480 520 477 534 480 527 b 471 501 480 514 478 508 l 436 467 b 395 468 426 456 408 462 b 392 469 393 468 393 469 b 361 498 379 475 361 485 l 361 547 b 390 579 361 569 373 569 b 423 624 408 589 423 605 b 340 681 423 655 386 681 b 258 624 294 681 258 655 b 291 579 258 605 274 589 b 318 547 308 569 318 569 l 318 498 b 288 469 318 485 301 475 l 287 468 l 285 468 b 245 467 272 462 255 456 l 210 501 b 200 521 203 508 200 514 b 206 544 200 528 203 536 b 210 567 209 552 210 559 b 199 599 210 579 206 592 b 164 612 190 608 177 612 b 99 582 143 612 120 602 b 69 517 79 562 69 539 b 82 482 69 504 73 491 b 115 471 91 474 102 471 b 137 474 122 471 130 472 b 161 480 147 477 154 480 b 180 471 167 480 173 478 l 215 436 b 213 395 225 426 219 408 b 212 392 213 393 212 393 b 183 361 206 379 196 361 l 134 361 b 102 390 112 361 112 373 b 58 423 92 408 76 423 b 0 340 26 423 0 386 b 58 258 0 294 26 258 b 102 291 76 258 92 274 b 134 318 112 308 112 318 l 183 318 b 212 288 196 318 206 301 b 213 287 212 287 213 288 l 213 285 b 215 245 219 272 225 255 l 179 210 b 160 200 171 203 166 200 b 137 206 154 200 145 203 b 114 210 130 209 122 210 b 82 199 102 210 89 206 b 69 164 73 190 69 177 b 99 99 69 143 79 120 z m 276 276 b 249 340 262 291 249 320 b 340 432 249 390 289 432 b 432 340 390 432 432 390 b 405 276 432 320 419 291 b 340 249 390 262 360 249 b 276 276 320 249 291 262 z',\n },\n wiggleArpeggiatoUp: {\n x_min: -22,\n x_max: 242,\n y_min: 0,\n y_max: 164,\n ha: 164,\n o: 'm 343 122 b 323 143 343 122 334 132 b 308 148 318 147 312 148 b 298 144 304 148 301 147 b 282 128 295 141 291 137 b 274 124 279 125 276 124 b 265 128 268 124 265 128 b 158 220 265 128 173 207 b 112 236 143 232 127 236 b 43 206 82 236 55 219 l -26 137 b -32 125 -30 132 -32 130 b -26 112 -32 118 -26 112 b -6 92 -26 112 -17 102 b 7 86 -1 88 3 86 b 17 91 12 86 14 88 b 33 107 20 94 24 98 b 42 111 36 109 39 111 b 52 107 48 111 52 107 b 158 16 52 107 144 29 b 204 0 174 4 190 0 b 274 30 235 0 262 17 l 343 99 b 348 111 347 104 348 108 b 343 122 348 118 343 122 z',\n },\n repeat1Bar: {\n x_min: 0,\n x_max: 481,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 693 -181 b 602 -91 693 -131 651 -91 b 511 -181 552 -91 511 -131 b 602 -272 511 -232 552 -272 b 693 -181 651 -272 693 -232 z',\n },\n repeat2Bars: {\n x_min: 0,\n x_max: 735,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 1058 -181 b 968 -91 1058 -131 1017 -91 b 877 -181 917 -91 877 -131 b 968 -272 877 -232 917 -272 b 1058 -181 1017 -272 1058 -232 z m 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 1058 360 l 877 360 l 366 -360 l 547 -360 z',\n },\n repeat4Bars: {\n x_min: 0,\n x_max: 1243,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 1058 360 l 877 360 l 366 -360 l 547 -360 z m 1424 360 l 1243 360 l 732 -360 l 913 -360 z m 1790 360 l 1608 360 l 1097 -360 l 1279 -360 z m 1790 -181 b 1699 -91 1790 -131 1748 -91 b 1608 -181 1649 -91 1608 -131 b 1699 -272 1608 -232 1649 -272 b 1790 -181 1748 -272 1790 -232 z',\n },\n repeatBarSlash: {\n x_min: 0,\n x_max: 481,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 693 360 l 511 360 l 0 -360 l 181 -360 z',\n },\n csymDiminished: {\n x_min: 0,\n x_max: 501,\n y_min: 0,\n y_max: 501,\n ha: 501,\n o: 'm 361 721 b 0 361 161 721 0 560 b 361 0 0 161 161 0 b 721 361 560 0 721 161 b 361 721 721 560 560 721 z m 557 164 b 361 82 505 111 435 82 b 164 164 287 82 216 111 b 82 361 111 216 82 287 b 164 557 82 436 111 505 b 361 639 216 611 287 639 b 557 557 436 639 505 611 b 639 361 611 505 639 436 b 557 164 639 287 609 216 z',\n },\n csymHalfDiminished: {\n x_min: -1,\n x_max: 502,\n y_min: -1,\n y_max: 502,\n ha: 503,\n o: 'm 723 684 l 684 723 l 596 634 b 361 721 533 688 451 721 b 0 361 161 721 0 560 b 88 125 0 271 33 189 l -1 36 l 36 -1 l 125 88 b 361 0 189 33 271 0 b 721 361 560 0 721 161 b 634 596 721 451 688 533 z m 82 361 b 164 557 82 436 111 505 b 361 639 216 611 287 639 b 537 576 426 639 488 616 l 145 184 b 82 361 105 233 82 295 z m 639 361 b 557 164 639 287 609 216 b 361 82 505 111 435 82 b 184 145 295 82 233 105 l 576 537 b 639 361 616 488 639 426 z',\n },\n csymAugmented: {\n x_min: 1,\n x_max: 321,\n y_min: 90,\n y_max: 410,\n ha: 320,\n o: 'm 462 400 l 272 400 l 272 590 l 192 590 l 192 400 l 1 400 l 1 320 l 192 320 l 192 130 l 272 130 l 272 320 l 462 320 z',\n },\n csymMajorSeventh: {\n x_min: 0,\n x_max: 500,\n y_min: 10,\n y_max: 490,\n ha: 480,\n o: 'm 360 528 l 585 96 l 135 96 z m 360 706 l 0 14 l 720 14 z',\n },\n accidentalNarrowReversedFlat: {\n x_min: 0,\n x_max: 160,\n y_min: -176,\n y_max: 452,\n ha: 628,\n o: 'm 0 84 b 101 -153 0 -26 65 -107 b 196 -249 153 -217 196 -249 b 206 -253 199 -251 202 -253 b 225 -235 216 -253 225 -245 l 230 632 b 212 651 230 642 222 651 l 199 651 b 180 632 189 651 180 642 l 184 204 b 125 217 184 204 171 217 b 0 84 53 217 0 173 z m 145 154 b 184 107 181 154 184 120 l 187 -179 b 114 -72 167 -158 132 -112 b 82 58 86 -13 82 36 b 145 154 82 79 82 154 z',\n },\n accidentalNarrowReversedFlatAndFlat: {\n x_min: 0,\n x_max: 416,\n y_min: -176,\n y_max: 452,\n ha: 628,\n o: 'm 462 217 b 330 174 374 217 338 181 l 334 632 b 315 651 334 642 325 651 l 302 651 b 284 632 292 651 284 642 l 289 -235 b 308 -253 289 -245 298 -253 b 320 -249 312 -253 317 -251 b 492 -138 320 -249 433 -194 b 599 84 534 -98 599 -26 b 462 217 599 173 534 217 z m 501 58 b 459 -72 501 36 498 -19 b 327 -179 431 -111 359 -164 l 330 85 l 330 91 b 422 154 330 125 359 154 b 501 58 503 154 501 79 z m 0 84 b 101 -153 0 -26 65 -107 b 196 -249 153 -217 196 -249 b 206 -253 199 -251 202 -253 b 225 -235 216 -253 225 -245 l 230 632 b 212 651 230 642 222 651 l 199 651 b 180 632 189 651 180 642 l 184 204 b 125 217 184 204 171 217 b 0 84 53 217 0 173 z m 145 154 b 184 107 181 154 184 120 l 187 -179 b 114 -72 167 -158 132 -112 b 82 58 86 -13 82 36 b 145 154 82 79 82 154 z',\n },\n },\n fontFamily: 'Leland',\n resolution: 1000,\n generatedOn: '2022-06-26T17:49:33.853Z',\n};\n","export const LelandMetrics = {\n name: 'Leland',\n smufl: true,\n stave: {\n padding: 12,\n endPaddingMax: 10,\n endPaddingMin: 5,\n unalignedNotePadding: 10,\n },\n accidental: {\n noteheadAccidentalPadding: 1,\n leftPadding: 2,\n accidentalSpacing: 3,\n },\n clef: {\n default: {\n point: 32,\n width: 26,\n },\n small: {\n point: 26,\n width: 20,\n },\n annotations: {\n '8va': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: -1.4,\n shiftX: 12,\n },\n },\n small: {\n point: 16,\n treble: {\n line: -0.2,\n shiftX: 8,\n },\n },\n },\n '8vb': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: 6,\n shiftX: 10,\n },\n bass: {\n line: 3.5,\n shiftX: 1,\n },\n },\n small: {\n point: 16,\n treble: {\n line: 5.3,\n shiftX: 6,\n },\n bass: {\n line: 3.1,\n shiftX: 0.5,\n },\n },\n },\n },\n // These may no longer be necessary\n lineCount: {\n '8': { point: 55, shiftY: 14 },\n '7': { point: 47, shiftY: 8 },\n '6': { point: 32, shiftY: 1 },\n '5': { point: 30, shiftY: -6 },\n '4': { point: 23, shiftY: -12 },\n },\n },\n parenthesis: {\n default: {\n point: 39,\n width: 7,\n },\n gracenote: {\n point: (39 * 3) / 5,\n width: 3,\n },\n },\n pedalMarking: {\n up: {\n point: 40,\n },\n down: {\n point: 34,\n },\n },\n // These are for numeric digits, such as in time signatures\n digits: {\n // used by timesig\n shiftLine: -1,\n point: 34,\n // used by tuplets\n tupletPoint: 22,\n shiftY: -6,\n },\n articulation: {\n articStaccatissimoAbove: {\n padding: 2,\n },\n articStaccatissimoBelow: {\n padding: 2,\n },\n },\n tremolo: {\n default: {\n point: 25,\n spacing: 5,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 11,\n offsetXStemDown: 1,\n },\n grace: {\n point: 18,\n spacing: 4,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 7,\n offsetXStemDown: 1,\n },\n },\n staveRepetition: {\n symbolText: {\n offsetX: 12,\n offsetY: 25,\n spacing: 5,\n },\n coda: {\n offsetY: 25,\n },\n segno: {\n offsetY: 10,\n },\n },\n // noteHead: {\n // },\n stem: {\n heightAdjustmentForFlag: -3,\n // These are stem (Y) offsets to the note heads. To shift the\n // noteheads (x-position) themselves, see glyphs.notehead.custom.\n noteHead: {\n noteheadTriangleUpHalf: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpBlack: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpWhole: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadXHalf: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXBlack: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXWhole: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadHalf: {\n offsetYBaseStemUp: -2.55,\n offsetYBaseStemDown: 2.65,\n },\n noteheadBlack: {\n offsetYBaseStemUp: -2,\n offsetYBaseStemDown: 2,\n },\n noteheadSquareWhite: {\n offsetYBaseStemDown: -5,\n offsetYBaseStemUp: 5,\n },\n },\n },\n // Values under here are used by the Glyph class to reposition and rescale\n // glyphs based on their category. This should be the first stop for\n // custom font glyph repositioning.\n //\n // The glyph loader first looks up a specific set of settings based on the\n // glyph code, and if not found, uses the defaults from the category. See\n // glyphs.textNote for an example of this.\n //\n // Details in Glyph.lookupFontMetrics.\n glyphs: {\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n segno: {\n shiftX: -7,\n },\n flag: {\n shiftX: -0.75,\n staveTempo: {\n shiftX: -1,\n },\n },\n clef: {\n gClef: {\n default: { scale: 1.1, shiftY: 1 },\n small: { shiftY: 1.5 },\n },\n fClef: {\n default: { shiftY: -0.5 },\n },\n },\n ornament: {\n ornamentTurn: {\n scale: 1.2,\n },\n ornamentTurnSlash: {\n scale: 1.2,\n },\n },\n stringNumber: {\n verticalPadding: 8,\n stemPadding: 2,\n leftPadding: 5,\n rightPadding: 6,\n },\n stroke: {\n arrowheadBlackDown: {\n straight: {\n shiftX: -4.5,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n arrowheadBlackUp: {\n straight: {\n shiftX: -0.85,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n },\n textNote: {\n point: 34,\n breathMarkTick: {\n point: 36,\n shiftY: 9,\n },\n breathMarkComma: {\n point: 36,\n },\n segno: {\n point: 30,\n shiftX: -7,\n shiftY: 8,\n },\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n ornamentTrill: {\n shiftX: -8,\n shiftY: 8,\n },\n ornamentTurn: {\n point: 42,\n },\n ornamentTurnSlash: {\n point: 42,\n },\n ornamentMordent: {\n shiftX: -8,\n },\n ornamentShortTrill: {\n shiftX: -8,\n },\n },\n noteHead: {\n minPadding: 2,\n standard: {\n restQuarterStemUp: {\n point: 35,\n },\n restQuarterStemDown: {\n point: 35,\n },\n },\n custom: {\n noteheadCircleXStemUp: {\n shiftX: 1.5,\n },\n noteheadCircleXStemDown: {\n shiftX: 0.25,\n },\n noteheadDiamondHalfStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondBlackStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondWholeStemUp: {\n shiftX: 1,\n },\n noteheadXHalfStemUp: {\n shiftX: -2,\n },\n noteheadXHalfStemDown: {\n shiftX: 1,\n },\n noteheadXWholeStemUp: {\n shiftX: -4,\n },\n noteheadXWholeStemDown: {\n shiftX: 1,\n },\n noteheadSquareWhiteStemDown: {\n shiftX: 0.25,\n },\n noteheadSquareWhiteStemUp: {\n shiftX: -0.75,\n },\n noteheadSquareBlackStemUp: {\n shiftX: -0.75,\n },\n noteheadTriangleUpWholeStemUp: {\n shiftX: -0.75,\n },\n },\n },\n chordSymbol: {\n global: {\n superscriptOffset: -400,\n subscriptOffset: 300,\n kerningOffset: -250,\n lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'],\n upperKerningText: ['A', 'L'],\n spacing: 100,\n superSubRatio: 0.66,\n },\n csymDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymHalfDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymAugmented: {\n scale: 1,\n leftSideBearing: 0,\n advanceWidth: 530,\n yOffset: 0,\n },\n csymParensLeftTall: {\n scale: 0.8,\n leftSideBearing: -20,\n advanceWidth: 184,\n yOffset: 250,\n },\n csymParensRightTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 189,\n yOffset: 250,\n },\n csymBracketLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 328,\n yOffset: 0,\n },\n csymBracketRightTall: {\n scale: 0.8,\n leftSideBearing: 1,\n advanceWidth: 600,\n yOffset: 0,\n },\n csymParensLeftVeryTall: {\n scale: 0.9,\n leftSideBearing: 50,\n advanceWidth: 121,\n yOffset: 350,\n },\n csymParensRightVeryTall: {\n scale: 0.9,\n leftSideBearing: 0,\n advanceWidth: 111,\n yOffset: 350,\n },\n csymDiagonalArrangementSlash: {\n scale: 0.6,\n leftSideBearing: -1,\n advanceWidth: 990,\n yOffset: 0,\n },\n csymMinor: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 482,\n yOffset: 0,\n },\n csymMajorSeventh: {\n scale: 0.9,\n leftSideBearing: 200,\n yOffset: 0,\n advanceWidth: 600,\n },\n accidentalSharp: {\n scale: 0.75,\n leftSideBearing: 20,\n advanceWidth: 250,\n yOffset: -302,\n },\n accidentalFlat: {\n scale: 0.9,\n leftSideBearing: -20,\n advanceWidth: 226,\n yOffset: -184,\n },\n },\n jazzOrnaments: {\n brassScoop: {\n scale: 1.0,\n xOffset: -12,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 20,\n },\n brassDoitMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 22,\n },\n brassFallLipShort: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassLiftMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 5,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassFallRoughMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 28,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassBend: {\n scale: 1.0,\n xOffset: 2,\n yOffset: -8,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassMuteClosed: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -8,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassMuteOpen: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -7,\n stemUpYOffset: 25,\n reportedWidth: 5,\n },\n brassFlip: {\n scale: 1.0,\n xOffset: 10,\n yOffset: 0,\n stemUpYOffset: 7,\n reportedWidth: 10,\n },\n brassJazzTurn: {\n scale: 1.0,\n xOffset: 0,\n yOffset: 0,\n stemUpYOffset: 8,\n reportedWidth: 31,\n },\n brassSmear: {\n scale: 1.0,\n xOffset: 10,\n yOffset: 0,\n stemUpYOffset: 8,\n reportedWidth: 5,\n },\n },\n tuplet: {\n noteHeadOffset: 20,\n stemOffset: 10,\n bottomLine: 4,\n topModifierOffset: 15,\n },\n },\n};\n","export const PetalumaFont = {\n glyphs: {\n bracketTop: {\n x_min: 0,\n x_max: 508,\n y_min: 0,\n y_max: 370,\n ha: 370,\n o: 'm 22 0 b 122 0 55 1 89 0 l 157 0 b 713 376 425 0 622 137 b 732 467 724 406 732 436 b 726 514 732 482 730 498 b 711 533 723 528 719 533 b 693 526 707 533 700 530 b 674 498 683 520 678 508 b 635 406 662 467 652 435 b 310 164 560 281 458 193 b 154 151 258 154 206 151 b 39 154 117 151 78 154 b 1 120 17 154 4 145 b 0 84 0 108 0 96 b 0 20 0 63 1 40 b 22 0 0 4 7 0 z',\n },\n bracketBottom: {\n x_min: 0,\n x_max: 496,\n y_min: -393,\n y_max: 0,\n ha: 393,\n o: 'm 696 -566 b 711 -539 713 -566 708 -549 b 714 -521 713 -533 714 -527 b 713 -508 714 -517 713 -513 b 661 -327 706 -445 688 -384 b 392 -42 603 -203 513 -109 b 206 0 331 -7 266 0 b 160 -1 190 0 174 -1 b 26 -1 107 -1 66 -3 b 0 -19 12 -1 0 -4 l 0 -23 b 3 -50 1 -32 3 -42 b 1 -86 3 -62 1 -73 b 4 -118 1 -96 1 -108 b 45 -151 10 -145 23 -154 b 180 -143 89 -144 135 -145 b 621 -419 392 -135 523 -236 b 662 -539 641 -456 655 -497 b 696 -566 667 -557 680 -566 z',\n },\n barlineTick: {\n x_min: 0,\n x_max: 56.036101509664164,\n y_min: 876.905249806889,\n y_max: 1121.5430338167066,\n ha: 244.63778400981766,\n o: 'm 42 1263 b 66 1287 62 1261 66 1272 b 81 1583 65 1387 72 1485 b 35 1614 82 1610 53 1610 b 14 1591 17 1619 16 1604 b 0 1408 7 1525 0 1459 l 0 1292 b 42 1263 1 1263 23 1266 z',\n },\n breathMarkTick: {\n x_min: 0,\n x_max: 568,\n y_min: 0,\n y_max: 621,\n ha: 621,\n o: 'm 258 0 b 278 39 276 0 274 24 b 279 56 279 45 279 50 l 279 73 b 278 117 279 88 278 102 b 281 148 278 127 279 138 b 536 600 312 330 387 487 b 744 719 600 651 670 690 b 815 779 775 730 808 740 b 818 824 818 793 818 808 b 815 868 818 838 818 852 b 796 894 814 881 808 894 b 779 888 791 894 786 893 b 719 864 760 878 739 871 b 372 602 580 806 459 724 b 229 252 298 498 251 383 b 220 268 225 262 222 264 b 209 302 217 279 213 291 b 75 527 181 387 143 467 b 16 563 58 543 39 573 b 0 539 3 557 0 549 b 12 492 0 524 9 507 b 56 400 19 459 22 425 b 163 269 104 367 138 323 b 238 36 197 194 216 115 b 258 0 242 22 243 0 z',\n },\n segno: {\n x_min: 0,\n x_max: 798,\n y_min: -65,\n y_max: 806,\n ha: 871,\n o: 'm 16 -94 b 66 -69 39 -92 53 -85 b 177 59 102 -26 138 17 b 543 456 298 192 420 324 b 726 300 615 420 680 373 b 753 217 744 271 753 243 b 655 112 753 170 719 131 b 599 104 636 107 618 104 b 461 173 544 104 495 128 b 432 190 454 183 444 190 b 409 179 425 190 418 187 b 359 118 390 160 373 141 b 341 72 347 101 341 86 b 373 24 341 56 351 40 b 409 6 384 17 396 10 b 550 -13 454 -12 501 -14 b 599 -6 566 -12 583 -10 b 864 213 720 27 806 104 b 886 300 878 242 886 271 b 857 395 886 331 877 363 b 799 467 840 420 821 445 b 648 572 755 513 704 546 b 1110 1083 802 743 955 914 b 1140 1129 1123 1097 1136 1110 b 1149 1148 1142 1135 1149 1142 b 1145 1153 1149 1149 1148 1152 b 1123 1161 1139 1158 1130 1161 b 1109 1156 1119 1161 1113 1159 b 1089 1138 1102 1151 1094 1145 b 946 988 1040 1089 989 1041 b 595 602 834 855 711 732 l 590 598 l 549 615 b 432 793 462 647 432 723 b 534 888 432 851 474 888 b 671 834 588 888 631 864 b 710 818 684 824 696 818 b 724 821 714 818 719 819 b 809 883 757 834 788 852 b 816 901 814 890 816 896 b 802 923 816 910 812 916 b 706 984 770 945 742 971 b 593 1011 668 998 631 1011 b 516 991 567 1011 541 1005 b 333 799 433 949 380 876 b 302 693 312 765 302 729 b 330 589 302 658 311 624 b 469 488 360 533 415 511 b 485 482 475 487 480 485 b 266 249 412 405 338 327 b 121 88 217 196 170 141 b 9 -65 78 40 37 -7 b 0 -85 4 -72 0 -79 b 16 -94 0 -91 4 -94 z m 861 536 b 927 575 890 539 909 557 b 965 628 952 598 965 613 b 926 680 965 644 952 658 b 865 713 900 701 883 713 b 805 667 845 713 828 698 b 768 611 791 649 770 631 b 812 564 766 589 798 582 b 861 536 824 550 840 537 z m 251 350 b 363 436 285 348 353 403 b 354 456 366 448 360 452 b 271 518 327 477 298 497 b 243 528 261 526 252 528 b 210 513 232 528 222 523 b 157 454 190 494 176 472 b 141 428 147 444 141 436 b 158 406 141 420 147 413 b 216 361 180 393 197 376 b 245 350 225 356 235 350 z',\n },\n coda: {\n x_min: 0,\n x_max: 1380,\n y_min: -196,\n y_max: 1037,\n ha: 1233,\n o: 'm 1028 -282 b 1057 -245 1045 -282 1053 -261 b 1060 -203 1060 -232 1060 -217 b 1063 9 1060 -132 1061 -62 b 1390 194 1192 22 1303 81 b 1531 543 1467 298 1512 415 b 1532 556 1531 547 1532 552 b 1904 559 1656 557 1780 559 b 1950 582 1920 559 1941 569 b 1987 674 1970 609 1987 638 b 1984 698 1987 681 1986 690 b 1950 700 1973 698 1961 700 l 1941 700 l 1545 696 b 1535 776 1545 723 1541 749 b 1103 1113 1477 996 1326 1107 b 1080 1115 1096 1115 1087 1115 b 1081 1322 1080 1184 1080 1253 b 1079 1467 1083 1371 1081 1418 b 1061 1493 1079 1476 1080 1493 l 1060 1493 b 1028 1467 1044 1490 1031 1485 b 1020 1403 1025 1446 1020 1424 b 1017 1110 1020 1305 1018 1208 l 962 1106 b 569 914 808 1087 671 1035 b 451 683 510 844 472 766 l 161 678 b 118 680 148 678 132 680 b 79 670 101 680 86 678 b 0 544 48 636 29 592 l 37 544 l 429 549 b 428 518 428 539 428 528 b 488 285 428 435 458 360 b 681 81 526 192 593 124 b 946 9 763 40 854 19 b 1008 6 966 7 988 6 b 1005 -137 1008 -42 1005 -89 b 1012 -243 1005 -173 1005 -209 b 1028 -282 1015 -258 1011 -282 z m 1074 690 b 1079 935 1077 772 1077 852 b 1326 855 1166 932 1250 909 b 1446 694 1385 814 1426 759 b 1269 693 1387 694 1328 693 b 1074 690 1204 693 1139 691 z m 577 684 b 766 874 618 763 678 828 b 989 932 837 912 913 923 b 1015 933 998 932 1007 933 b 1014 822 1015 896 1014 860 b 1011 688 1012 791 1012 743 z m 1067 184 b 1071 553 1070 307 1068 429 b 1439 556 1194 553 1316 554 b 1437 554 1439 554 1437 554 b 1341 337 1413 478 1387 402 b 1119 192 1286 261 1211 212 b 1067 184 1102 189 1084 186 z m 1008 180 b 660 264 886 181 770 212 b 524 471 570 305 524 374 b 528 524 524 488 526 505 l 533 549 b 792 552 619 550 706 550 b 1009 553 865 553 937 552 b 1008 180 1009 428 1008 288 z',\n },\n gClef: {\n x_min: 0,\n x_max: 664,\n y_min: -559,\n y_max: 1009,\n ha: 1568,\n o: 'm 343 -805 b 366 -801 350 -805 357 -804 b 409 -773 383 -795 397 -786 b 582 -328 528 -648 577 -497 b 583 -294 582 -315 583 -294 b 612 -279 583 -294 603 -282 b 747 -197 660 -256 706 -230 b 949 143 857 -109 920 10 b 956 206 955 164 956 186 b 791 384 956 297 906 363 b 704 393 762 390 733 393 b 498 336 632 393 563 374 b 481 325 490 331 481 325 l 444 465 b 442 485 442 472 442 485 b 609 880 442 485 589 746 b 619 996 616 919 619 958 b 613 1084 619 1027 618 1056 b 534 1387 599 1188 560 1286 b 482 1453 527 1417 517 1453 b 422 1407 456 1453 438 1428 b 305 1063 348 1305 312 1188 b 304 1002 304 1043 304 1022 b 338 654 304 886 323 769 b 343 629 338 645 341 636 b 144 356 278 537 206 451 b 23 144 101 288 53 220 b 0 20 7 107 0 63 b 82 -210 0 -69 30 -160 b 207 -288 112 -239 160 -271 b 410 -328 274 -312 340 -328 b 474 -324 431 -328 452 -327 l 491 -321 b 491 -341 491 -321 492 -334 b 402 -585 475 -428 454 -513 b 294 -668 374 -622 348 -664 b 271 -693 278 -670 271 -680 b 274 -708 271 -698 272 -703 b 302 -775 282 -730 292 -753 b 343 -805 311 -795 325 -805 z m 400 717 b 382 922 389 786 382 854 b 481 1286 382 1047 408 1169 b 507 1125 498 1233 507 1179 b 500 1040 507 1097 504 1068 b 400 717 481 927 455 818 z m 252 -135 b 196 -121 232 -134 215 -127 b 117 -69 158 -108 127 -94 b 111 -32 112 -58 111 -45 b 117 19 111 -16 114 1 b 130 56 118 27 127 52 b 324 337 186 156 253 246 l 384 416 l 395 384 b 416 291 406 348 416 291 b 350 213 416 291 376 239 b 243 -42 278 143 243 55 b 251 -117 243 -66 246 -91 b 252 -135 252 -122 252 -127 z m 563 -91 b 510 168 552 3 530 78 b 513 192 508 179 508 186 b 624 202 550 199 586 202 b 730 192 660 202 694 199 b 850 141 773 183 816 176 b 858 134 852 138 855 135 b 595 -121 801 19 716 -68 l 569 -131 z m 410 -160 b 311 -147 360 -160 311 -147 b 307 -98 311 -147 307 -127 b 314 -33 307 -79 308 -56 b 429 131 328 36 377 85 b 441 138 433 135 438 138 b 449 122 446 138 448 132 b 490 -131 462 37 484 -46 b 490 -153 491 -140 490 -153 b 410 -160 490 -153 452 -163 z',\n },\n cClef: {\n x_min: 0,\n x_max: 731,\n y_min: -543,\n y_max: 543,\n ha: 1086,\n o: 'm 131 -782 b 141 -755 138 -782 140 -773 b 147 -490 143 -667 145 -577 b 160 207 150 -258 153 -24 b 168 618 164 344 158 481 b 81 768 173 690 132 732 b 45 782 66 778 55 782 b 3 740 26 782 13 768 b 0 724 1 736 0 730 l 1 710 b 4 596 4 672 4 634 l 4 382 b 9 102 4 288 4 196 b 17 -301 13 -32 10 -166 l 17 -672 b 50 -736 17 -701 27 -720 b 109 -772 69 -749 91 -759 b 131 -782 120 -778 127 -782 z m 615 -770 b 881 -684 710 -770 801 -739 b 1020 -395 986 -612 1020 -510 b 1017 -334 1020 -374 1018 -354 b 769 -62 1007 -209 896 -75 b 746 -60 762 -60 755 -60 b 639 -73 710 -60 675 -69 b 524 -109 598 -79 560 -92 b 528 -36 526 -85 528 -60 b 527 -4 528 -26 528 -14 b 528 39 527 10 528 24 b 526 99 528 59 527 79 b 592 94 549 95 570 94 b 648 99 611 94 629 95 b 912 157 744 94 844 117 b 1053 377 1009 215 1053 284 b 1050 425 1053 393 1053 409 b 914 665 1037 521 986 602 b 717 753 855 717 791 753 b 626 734 688 753 658 747 l 462 665 b 347 500 374 628 347 580 b 350 449 347 484 348 468 b 392 419 353 428 367 416 b 492 438 425 425 459 428 b 541 498 524 448 541 468 b 540 514 541 503 541 508 b 537 546 537 524 537 536 b 573 639 537 580 550 611 b 606 657 582 649 593 657 l 609 657 b 716 622 647 652 684 647 b 834 372 801 556 834 469 b 831 323 834 356 832 338 b 743 187 825 266 795 217 b 710 176 732 180 720 176 b 694 179 704 176 700 177 b 527 223 638 193 582 206 b 495 229 516 228 505 229 b 454 220 481 229 468 225 b 395 189 432 213 415 200 b 363 180 384 186 374 181 b 348 168 356 179 348 176 b 340 161 343 167 340 164 b 347 150 340 157 343 154 b 356 147 348 148 353 147 b 364 92 361 130 363 111 b 369 -37 367 49 369 6 b 363 -154 369 -76 367 -115 b 357 -236 360 -183 357 -210 b 376 -264 357 -253 361 -259 b 456 -289 402 -284 429 -289 b 521 -282 478 -289 500 -285 b 549 -255 537 -279 546 -271 b 598 -177 556 -225 577 -202 b 622 -164 605 -168 613 -164 b 636 -167 626 -164 631 -166 b 749 -225 678 -177 714 -199 b 848 -405 814 -276 848 -337 b 824 -507 848 -436 840 -471 b 657 -657 792 -582 730 -625 b 608 -668 638 -664 622 -668 b 534 -602 572 -668 547 -645 b 513 -575 530 -589 523 -575 b 507 -576 510 -575 508 -575 b 478 -582 497 -580 488 -582 b 405 -570 454 -582 428 -570 b 389 -572 399 -570 395 -570 l 363 -572 b 321 -575 348 -572 333 -569 l 321 631 b 323 662 323 641 323 652 b 315 716 323 681 321 698 b 304 736 314 723 317 736 l 302 736 b 281 716 294 734 285 729 b 275 665 276 700 275 683 l 275 382 b 276 99 275 288 275 193 b 279 -170 278 10 276 -81 b 284 -399 282 -246 284 -323 b 282 -629 284 -475 282 -553 b 289 -721 282 -660 289 -690 b 300 -736 289 -727 291 -736 b 312 -724 307 -736 310 -730 b 321 -667 323 -706 321 -687 l 321 -632 l 328 -644 l 340 -657 b 510 -757 386 -707 445 -740 b 615 -770 546 -766 580 -770 z',\n },\n fClef: {\n x_min: 0,\n x_max: 776,\n y_min: -496,\n y_max: 216,\n ha: 712,\n o: 'm 402 -706 b 804 -405 592 -678 716 -566 b 876 -53 861 -298 874 -183 b 868 33 876 -32 873 1 b 560 311 845 217 723 311 b 524 310 549 311 536 311 b 131 134 373 297 239 242 b 17 -29 84 86 37 39 b 9 -89 12 -50 9 -71 b 112 -238 9 -154 43 -206 b 124 -243 117 -239 120 -242 b 186 -261 145 -255 166 -261 b 268 -228 215 -261 242 -249 b 351 -59 325 -181 351 -124 b 343 10 351 -36 348 -13 b 340 36 341 19 340 27 b 409 105 340 75 363 102 b 441 107 420 107 431 107 b 624 36 510 107 573 86 b 744 -200 688 -27 724 -109 b 747 -230 747 -210 747 -222 b 717 -323 747 -264 736 -292 b 608 -445 688 -370 654 -410 b 307 -541 518 -513 415 -541 l 213 -541 b 39 -521 154 -541 96 -539 b 0 -552 17 -514 0 -531 b 1 -564 0 -556 0 -560 b 17 -611 6 -580 10 -596 b 101 -694 35 -648 50 -684 b 288 -714 164 -707 225 -714 b 402 -706 325 -714 363 -711 z m 1018 92 b 1080 118 1041 91 1068 96 b 1117 219 1099 150 1117 180 b 1113 252 1117 229 1116 240 b 1045 288 1102 297 1068 276 b 1017 262 1028 297 1024 274 b 984 124 989 220 996 170 b 1008 91 979 108 986 91 z m 972 -281 b 1070 -148 1024 -279 1070 -210 b 1025 -105 1070 -105 1045 -112 b 989 -127 1004 -96 998 -114 b 949 -249 963 -164 963 -209 b 969 -281 943 -265 949 -281 z',\n },\n unpitchedPercussionClef1: {\n x_min: 0,\n x_max: 379.13761966945304,\n y_min: -250,\n y_max: 250,\n ha: 500,\n o: 'm 481 -360 b 507 -357 491 -360 500 -360 b 546 -295 541 -346 547 -325 b 536 79 543 -170 540 -46 b 523 311 533 157 534 235 b 475 359 518 340 508 359 b 425 360 459 359 442 360 b 400 359 416 360 409 360 b 337 294 348 353 340 347 l 337 -73 b 336 -264 337 -137 337 -200 b 343 -294 336 -274 338 -284 b 481 -360 359 -330 431 -360 z m 144 -341 b 207 -320 167 -341 189 -331 b 217 -301 215 -315 217 -308 b 210 -262 217 -289 210 -275 b 228 187 212 -112 209 37 b 228 287 228 220 229 253 b 174 353 228 336 222 343 b 120 359 157 357 138 359 b 48 357 96 359 72 356 b 17 323 29 357 19 344 b 7 120 16 255 9 187 b 6 -109 6 43 6 -33 l 6 -204 b 0 -251 6 -220 0 -235 b 3 -269 0 -256 0 -262 b 127 -340 24 -330 79 -328 b 144 -341 132 -341 138 -341 z',\n },\n '6stringTabClef': {\n x_min: 0,\n x_max: 438,\n y_min: -768,\n y_max: 767,\n ha: 1535,\n o: 'm 369 438 b 374 439 370 438 372 438 b 384 462 383 444 384 452 l 384 474 b 390 697 386 547 390 622 b 373 1002 390 799 390 901 l 533 1002 b 560 1001 541 1004 552 1001 b 573 1007 567 1001 572 1002 b 546 1050 579 1025 559 1038 b 536 1056 543 1053 539 1053 b 324 1104 472 1102 397 1104 b 72 1090 238 1104 154 1099 b 55 1093 66 1090 60 1092 b 37 1073 46 1093 37 1089 b 60 1045 37 1061 48 1051 b 203 1001 105 1022 151 1001 b 233 1004 213 1001 223 1002 b 246 1005 238 1004 243 1005 b 272 975 264 1005 272 996 l 272 965 b 258 596 264 842 265 719 b 315 474 253 540 272 504 l 343 455 b 369 438 351 448 357 438 z m 114 -320 b 127 -304 120 -320 124 -315 b 171 -174 141 -261 158 -219 b 222 -135 179 -147 196 -137 b 426 -122 289 -131 359 -128 b 498 -164 462 -120 482 -127 b 628 -301 521 -226 575 -264 b 631 -288 631 -295 631 -291 b 628 -269 631 -281 629 -276 b 569 -134 616 -220 589 -179 b 408 225 514 -14 462 107 b 314 357 384 274 351 318 b 278 380 298 372 288 379 b 251 351 268 380 261 372 b 4 -209 156 171 75 -17 b 0 -228 1 -215 0 -222 b 19 -258 0 -240 7 -249 b 102 -314 45 -279 75 -294 b 114 -320 107 -318 111 -320 z m 425 6 b 360 20 403 17 382 20 b 274 14 331 20 302 14 l 246 14 l 340 206 b 425 6 369 137 395 75 z m 245 -1106 b 281 -1104 256 -1106 269 -1106 b 511 -888 400 -1094 511 -1035 b 454 -688 511 -814 504 -744 b 448 -678 449 -685 448 -681 b 454 -667 448 -675 449 -671 b 504 -497 503 -619 507 -559 b 324 -288 500 -383 436 -308 b 295 -287 314 -287 304 -287 l 282 -287 b 115 -330 223 -287 168 -307 b 94 -366 102 -336 94 -348 l 94 -370 b 96 -435 96 -392 96 -413 b 73 -858 89 -576 71 -717 b 78 -919 73 -878 78 -899 b 72 -950 78 -930 76 -940 b 63 -992 66 -965 63 -978 b 66 -1015 63 -999 65 -1008 b 173 -1104 84 -1106 84 -1106 b 245 -1106 197 -1104 220 -1104 z m 161 -622 b 147 -618 156 -622 151 -621 b 140 -600 141 -612 140 -606 b 144 -564 140 -589 144 -575 b 143 -554 144 -560 144 -557 l 143 -546 b 220 -451 144 -467 143 -465 b 278 -445 239 -446 259 -444 b 418 -497 328 -445 376 -461 b 429 -516 426 -504 429 -510 b 415 -533 429 -521 423 -527 b 219 -608 357 -579 287 -590 b 215 -609 217 -608 216 -609 b 161 -622 197 -609 177 -622 z m 154 -953 b 130 -933 135 -953 130 -948 l 130 -865 l 128 -865 b 135 -788 130 -838 124 -808 b 203 -769 145 -769 180 -776 b 259 -762 223 -765 242 -762 b 441 -852 330 -762 386 -805 b 449 -867 446 -858 449 -863 b 436 -884 449 -874 444 -878 b 318 -942 402 -914 363 -935 b 154 -953 264 -950 209 -953 z',\n },\n timeSig0: {\n x_min: 20,\n x_max: 513,\n y_min: -358.159536277652,\n y_max: 359,\n ha: 717.159536277652,\n o: 'm 341 -516 b 420 -510 367 -516 395 -514 b 675 -338 533 -494 622 -448 b 737 -92 716 -256 734 -171 b 739 -35 739 -73 739 -53 b 680 305 739 86 720 207 b 400 517 622 449 537 517 b 337 514 380 517 359 517 b 289 507 321 511 305 513 b 91 317 192 477 127 412 b 29 9 50 212 29 108 b 217 -458 29 -157 88 -312 b 341 -516 251 -494 291 -518 z m 412 -452 b 359 -425 393 -452 376 -444 b 187 14 242 -301 179 -158 b 268 334 193 127 212 235 b 387 448 295 383 330 428 b 406 452 395 451 400 452 b 428 444 413 452 420 449 b 517 324 471 413 497 372 b 586 -29 560 222 586 86 b 556 -271 586 -112 585 -193 b 468 -422 536 -327 508 -377 b 412 -452 449 -442 431 -452 z',\n },\n timeSig1: {\n x_min: 20,\n x_max: 283,\n y_min: -364,\n y_max: 366,\n ha: 730,\n o: 'm 264 -524 b 357 -510 297 -524 325 -516 b 374 -490 369 -508 374 -501 b 380 -438 376 -472 380 -455 l 406 246 b 408 301 408 265 408 282 b 400 445 408 348 405 396 b 288 527 395 491 338 527 b 253 520 276 527 264 526 b 240 508 249 517 245 513 b 49 409 192 445 127 413 b 29 396 33 408 29 403 b 32 380 29 392 30 386 b 59 363 36 366 49 364 b 164 348 95 356 130 348 b 222 357 183 348 203 351 b 238 361 228 360 233 360 b 252 334 248 361 252 353 b 243 59 252 242 249 150 b 219 -490 229 -124 233 -307 b 264 -524 217 -516 232 -524 z',\n },\n timeSig2: {\n x_min: 20,\n x_max: 660.4636303241031,\n y_min: -378.7201231608281,\n y_max: 382,\n ha: 760.720123160828,\n o: 'm 99 -543 b 130 -533 111 -550 121 -540 b 255 -448 168 -501 213 -475 b 338 -425 282 -431 310 -425 b 392 -431 356 -425 374 -426 b 485 -462 423 -438 454 -451 b 648 -497 540 -482 595 -497 b 834 -441 711 -497 773 -480 b 950 -242 906 -395 958 -334 b 942 -210 950 -230 950 -215 b 912 -220 932 -204 920 -213 b 861 -264 894 -235 877 -248 b 775 -317 835 -289 808 -305 b 675 -334 742 -328 708 -334 b 510 -295 619 -334 563 -318 b 372 -264 465 -278 420 -264 b 305 -272 350 -264 328 -266 b 331 -242 318 -256 324 -249 b 490 -73 386 -187 438 -131 b 675 340 595 43 664 180 b 677 369 677 350 677 360 b 556 536 677 461 638 508 b 468 550 526 546 497 550 b 297 508 409 550 353 533 b 111 354 220 475 168 412 b 29 197 65 308 29 261 b 32 164 29 187 29 176 b 29 140 33 157 29 147 b 43 125 29 132 32 125 b 73 147 55 125 65 138 b 86 163 79 153 82 158 b 238 320 134 219 183 272 b 425 389 292 367 360 389 b 575 341 480 389 531 373 b 606 298 590 330 606 317 b 600 278 606 292 603 285 b 501 107 576 217 544 158 b 304 -104 439 33 372 -35 b 111 -356 230 -180 167 -265 b 84 -446 92 -386 84 -415 b 86 -481 84 -458 85 -469 b 88 -514 88 -491 88 -503 b 99 -543 89 -526 91 -537 z',\n },\n timeSig3: {\n x_min: 19.824321427094187,\n x_max: 540,\n y_min: -392,\n y_max: 392,\n ha: 784,\n o: 'm 216 -540 b 354 -564 264 -556 310 -564 b 605 -465 445 -564 530 -530 b 729 -161 697 -383 729 -275 b 724 -82 729 -135 727 -108 b 589 95 716 -1 670 62 b 523 114 567 102 546 108 b 750 418 606 213 677 315 b 778 503 769 444 778 472 b 773 540 778 514 776 527 b 750 564 769 557 762 564 b 736 562 746 564 742 563 b 641 552 704 553 672 552 b 402 554 562 552 481 554 l 346 554 b 84 546 258 554 170 554 b 36 501 55 543 40 531 b 29 412 30 472 32 442 b 52 384 27 393 32 384 l 56 384 b 210 392 107 389 158 392 l 602 392 b 354 108 523 285 445 192 b 246 -65 300 58 246 12 b 252 -108 246 -78 248 -92 l 252 -111 b 264 -141 251 -122 251 -135 b 291 -132 274 -145 284 -140 b 425 -72 328 -95 377 -84 b 475 -65 442 -68 459 -65 b 592 -108 517 -65 557 -79 b 645 -179 615 -125 645 -147 b 642 -194 645 -184 644 -189 b 485 -376 616 -278 569 -344 b 361 -399 444 -392 402 -399 b 151 -340 289 -399 219 -376 b 88 -275 122 -323 98 -310 b 71 -249 86 -268 85 -249 b 63 -251 68 -249 66 -249 b 36 -288 48 -255 36 -266 b 55 -423 33 -336 45 -377 b 101 -482 60 -448 78 -468 b 216 -540 138 -504 174 -526 z',\n },\n timeSig4: {\n x_min: 20,\n x_max: 633.0785282750762,\n y_min: -489.59088556716864,\n y_max: 491.18559127100053,\n ha: 980.7764768381692,\n o: 'm 608 -704 b 641 -684 622 -708 634 -696 b 667 -602 660 -660 662 -631 b 685 -190 683 -465 680 -327 l 685 -176 b 831 -127 736 -166 783 -148 b 912 0 901 -94 913 -76 b 886 53 912 36 904 52 b 848 40 877 53 864 49 l 838 36 b 687 -13 789 14 739 -3 b 681 177 687 50 684 114 b 672 338 678 230 677 285 b 654 373 671 350 672 373 b 622 340 636 373 624 361 b 615 262 621 314 613 288 b 619 -22 616 167 619 72 b 569 -22 602 -23 585 -23 b 305 -3 481 -16 395 -1 b 210 -9 274 -3 242 -4 b 301 163 242 52 268 108 b 513 552 377 288 459 412 b 536 652 526 585 536 618 b 533 683 536 662 534 672 b 520 707 531 691 531 707 b 487 693 508 708 494 704 b 474 668 482 684 477 677 b 384 490 454 603 418 547 b 253 281 343 419 295 351 b 73 -13 194 181 145 78 b 29 -108 50 -42 29 -72 b 37 -147 29 -121 32 -134 b 50 -186 43 -160 50 -173 b 68 -216 52 -207 56 -215 b 92 -207 73 -216 82 -213 b 288 -166 156 -180 220 -166 b 556 -186 377 -166 467 -180 b 586 -189 566 -187 576 -187 b 616 -186 596 -189 606 -189 b 606 -432 613 -268 612 -350 b 596 -625 603 -495 596 -559 b 598 -670 596 -641 596 -655 b 608 -704 598 -683 596 -700 z',\n },\n timeSig5: {\n x_min: 19.663871085403297,\n x_max: 583,\n y_min: -389,\n y_max: 389,\n ha: 778,\n o: 'm 132 -536 b 249 -560 168 -553 209 -559 b 507 -462 351 -560 454 -514 b 677 -183 588 -384 642 -289 b 694 -85 688 -150 694 -117 b 540 138 694 12 642 94 b 422 173 501 154 462 167 b 400 187 408 174 400 177 b 405 202 400 190 402 196 b 428 284 416 228 426 255 b 469 312 431 307 442 312 b 757 372 569 312 662 343 b 840 490 821 392 840 432 b 812 560 840 540 834 560 b 763 546 801 560 785 556 b 757 543 762 546 759 544 b 465 484 665 505 570 484 b 396 484 452 484 425 487 b 353 454 377 482 366 474 b 281 300 323 405 304 351 b 245 164 262 255 245 212 b 246 144 245 158 246 151 b 233 63 249 115 243 89 b 225 35 228 50 225 40 b 264 14 225 22 236 19 b 445 -26 325 7 387 0 b 569 -151 501 -52 547 -89 b 575 -180 573 -161 575 -170 b 527 -275 575 -217 547 -245 b 347 -367 484 -334 419 -367 b 261 -351 318 -367 289 -363 b 95 -300 206 -333 154 -307 b 55 -321 73 -297 65 -302 b 29 -468 29 -367 40 -419 b 56 -505 26 -482 36 -500 b 132 -536 82 -514 108 -524 z',\n },\n timeSig6: {\n x_min: 20,\n x_max: 565,\n y_min: -363,\n y_max: 363,\n ha: 726,\n o: 'm 390 -518 b 621 -458 469 -507 549 -494 b 814 -134 753 -390 814 -281 b 652 59 814 -16 750 58 b 580 48 629 59 606 55 b 233 -334 392 -9 276 -138 b 115 -228 181 -314 143 -278 b 98 -160 104 -206 98 -183 b 107 -109 98 -144 101 -127 b 167 37 124 -59 145 -12 b 508 340 236 189 347 292 b 575 353 530 347 553 353 b 648 327 600 353 625 346 b 665 320 654 321 661 320 b 687 336 674 320 681 325 b 703 405 697 359 703 382 b 684 472 703 429 697 451 b 593 523 664 504 631 521 b 576 521 588 523 582 523 b 297 403 472 508 380 465 b 115 177 217 344 164 264 b 29 -121 60 82 29 -17 b 53 -278 29 -173 36 -225 b 226 -497 82 -374 131 -454 b 347 -523 265 -514 305 -523 b 390 -518 361 -523 376 -521 z m 351 -357 b 312 -351 337 -356 320 -363 b 325 -315 304 -340 320 -327 b 543 -120 373 -222 448 -158 b 622 -104 570 -108 596 -102 b 717 -132 655 -104 687 -112 b 740 -167 732 -143 740 -153 b 730 -196 740 -176 737 -184 b 563 -321 690 -258 634 -300 b 359 -357 497 -341 428 -354 z',\n },\n timeSig7: {\n x_min: 20.3617407597707,\n x_max: 592,\n y_min: -345,\n y_max: 345,\n ha: 690,\n o: 'm 253 -497 b 318 -485 276 -497 297 -487 b 366 -441 348 -482 360 -468 b 487 -104 390 -323 433 -210 b 835 403 580 82 701 246 b 852 436 847 416 852 428 b 815 467 852 451 840 461 b 762 474 798 471 779 474 b 674 445 732 474 701 465 b 603 410 652 431 628 420 b 383 360 533 379 459 360 b 200 435 315 360 249 382 b 88 494 168 469 131 485 b 66 497 81 495 73 497 b 33 484 52 497 39 492 b 50 436 22 469 39 451 b 295 310 114 360 199 324 b 406 301 331 304 369 301 b 593 324 468 301 530 308 b 585 307 589 314 588 310 b 265 -249 451 137 338 -46 b 207 -442 242 -312 223 -377 b 204 -462 206 -449 204 -456 b 253 -497 204 -487 220 -497 z',\n },\n timeSig8: {\n x_min: 20,\n x_max: 504.15101530718516,\n y_min: -428,\n y_max: 428,\n ha: 856,\n o: 'm 265 -616 b 289 -615 274 -616 281 -616 b 710 -271 492 -592 657 -485 b 726 -148 721 -229 727 -187 b 585 108 726 -48 687 42 b 572 127 576 114 573 120 b 576 144 572 132 575 138 b 598 301 590 196 598 249 b 586 413 598 338 593 376 b 356 616 559 531 467 616 b 233 582 317 616 275 606 b 29 233 101 505 29 384 b 104 9 29 153 46 72 b 189 -48 127 -16 160 -27 b 92 -158 141 -73 114 -114 b 37 -343 63 -217 50 -279 b 33 -390 35 -359 33 -374 b 265 -616 33 -524 148 -616 z m 258 105 b 124 148 215 105 167 117 b 96 196 105 163 96 177 b 99 217 96 202 96 209 b 197 384 120 281 151 337 b 350 451 242 429 297 451 b 516 364 412 451 472 422 b 530 331 523 354 530 343 l 530 327 l 530 320 b 468 151 520 261 507 200 b 419 122 455 135 442 125 b 258 105 370 117 320 105 z m 328 -438 b 158 -276 233 -436 160 -359 b 166 -239 158 -264 161 -252 b 230 -157 176 -203 202 -179 b 367 -72 274 -125 320 -98 b 448 -49 396 -56 423 -49 b 562 -118 491 -49 528 -72 b 611 -251 590 -157 611 -199 b 569 -341 611 -288 595 -318 b 328 -438 500 -402 416 -432 z',\n },\n timeSig9: {\n x_min: 20,\n x_max: 494,\n y_min: -421,\n y_max: 421,\n ha: 842,\n o: 'm 235 -606 b 361 -564 275 -606 318 -593 b 619 -229 487 -482 566 -366 b 706 127 664 -114 694 4 b 711 233 708 163 711 197 b 700 346 711 271 708 308 b 389 606 658 517 530 606 b 351 605 376 606 364 606 b 56 272 171 586 56 441 b 96 98 56 216 69 156 b 334 -53 144 -3 238 -53 b 544 36 408 -53 484 -24 b 652 176 586 78 622 124 b 631 71 645 141 639 105 b 467 -302 599 -63 562 -196 b 271 -442 412 -364 354 -422 b 225 -448 255 -446 239 -448 b 95 -305 148 -448 98 -395 b 89 -255 95 -288 94 -271 b 73 -233 86 -246 85 -233 b 52 -248 65 -233 56 -239 b 29 -317 42 -271 30 -291 b 49 -448 29 -361 40 -405 b 235 -606 69 -541 144 -606 z m 340 104 b 144 209 264 108 194 141 b 127 258 132 225 127 240 b 137 297 127 271 130 284 b 366 449 184 396 269 449 b 517 408 415 449 467 436 b 595 348 546 392 572 372 b 616 305 608 336 616 321 b 609 281 616 298 613 289 b 340 104 557 184 477 104 z',\n },\n timeSigCommon: {\n x_min: 20,\n x_max: 585,\n y_min: -298,\n y_max: 294.49658092772603,\n ha: 592.496580927726,\n o: 'm 444 -405 b 829 -45 626 -346 740 -207 b 842 26 842 -23 842 1 b 821 58 842 39 841 58 b 795 40 811 58 802 48 b 765 3 785 29 773 16 b 469 -223 690 -104 596 -183 b 354 -242 431 -235 392 -242 b 180 -177 292 -242 235 -223 b 135 -99 154 -157 140 -131 b 132 -59 134 -85 132 -72 b 141 7 132 -37 135 -16 b 449 274 189 160 297 243 b 477 278 459 276 468 276 b 546 203 517 278 539 253 b 517 157 550 177 533 166 b 485 143 507 153 497 143 l 482 143 b 467 148 478 143 472 144 b 374 183 438 170 406 181 b 264 118 333 183 292 161 b 238 48 246 92 238 69 b 261 -9 238 29 245 10 b 383 -73 287 -39 337 -73 b 412 -68 392 -73 402 -72 b 631 164 526 -27 586 59 b 649 252 644 193 649 222 b 636 328 649 278 645 304 b 504 423 615 400 579 429 b 242 318 408 415 317 387 b 29 -158 104 190 29 33 b 30 -176 29 -164 29 -170 b 115 -364 42 -246 52 -315 b 307 -429 177 -410 240 -429 b 444 -405 351 -429 397 -420 z',\n },\n timeSigCutCommon: {\n x_min: 20,\n x_max: 695,\n y_min: -687.0379164869064,\n y_max: 687,\n ha: 1374.0379164869064,\n o: 'm 564 -989 b 595 -945 585 -991 589 -963 l 599 -922 b 605 -628 600 -824 603 -726 l 609 -399 b 878 -251 706 -363 798 -320 b 996 -85 932 -204 976 -153 b 1001 -63 998 -78 1001 -71 b 989 -46 1001 -56 998 -49 b 978 -43 985 -45 982 -43 b 950 -59 968 -43 959 -49 b 733 -216 894 -132 815 -177 b 611 -259 694 -235 652 -249 b 616 -20 612 -179 615 -99 b 680 29 642 -7 665 9 b 698 43 685 36 690 40 b 870 251 792 82 840 160 b 877 294 874 265 877 279 b 818 410 877 338 855 382 b 683 458 779 442 730 448 b 625 468 664 462 644 465 l 625 514 b 638 958 626 662 636 811 b 626 989 638 979 635 989 b 603 981 621 989 613 986 b 422 840 534 945 481 888 b 412 805 412 832 413 818 b 426 713 410 773 420 743 b 445 678 429 690 435 678 b 474 691 452 678 461 683 b 563 755 503 710 530 732 b 564 724 564 740 564 733 b 559 469 563 639 560 554 b 462 454 526 469 494 464 b 112 143 302 399 199 281 b 33 -94 66 71 45 -10 b 29 -148 30 -112 29 -131 b 105 -351 29 -223 52 -291 b 359 -455 171 -426 258 -451 b 517 -431 409 -451 464 -446 l 539 -422 l 539 -477 b 533 -739 536 -563 539 -651 b 530 -824 531 -768 530 -795 b 546 -948 530 -865 533 -907 b 564 -989 552 -962 543 -989 z m 410 -288 b 193 -197 328 -288 253 -264 b 141 -60 160 -161 141 -108 b 157 6 141 -35 147 -12 b 259 158 189 58 217 112 b 438 291 311 215 364 266 b 528 305 468 301 498 305 b 554 304 537 305 546 304 b 553 212 554 274 554 242 b 426 115 498 199 446 164 b 416 68 419 99 416 84 b 425 12 416 49 420 30 b 474 -39 432 -17 448 -32 b 513 -43 487 -42 498 -43 b 547 -40 524 -43 536 -42 l 543 -272 b 461 -285 516 -278 488 -281 b 410 -288 444 -287 426 -288 z m 694 197 b 668 203 685 197 677 199 b 621 216 654 210 638 215 b 622 294 622 242 622 268 b 706 268 651 287 678 278 b 746 235 721 261 734 249 b 752 222 749 230 752 226 b 743 213 752 219 749 215 b 694 197 727 206 711 197 z',\n },\n timeSigPlus: {\n x_min: 0,\n x_max: 661,\n y_min: -358,\n y_max: 358,\n ha: 716,\n o: 'm 605 -516 b 629 -490 624 -516 629 -507 b 628 -475 629 -485 628 -481 b 613 -131 624 -405 616 -174 b 612 -96 612 -114 612 -96 l 647 -98 b 897 -115 730 -99 814 -109 b 940 -89 919 -117 935 -109 b 952 -24 946 -69 952 -46 b 948 9 952 -14 950 -3 b 912 39 942 26 933 37 b 609 60 822 48 609 60 b 616 392 609 60 608 291 b 567 488 619 436 605 467 b 511 516 550 498 531 514 b 498 511 507 516 503 514 b 478 446 475 501 480 469 b 467 150 474 348 469 249 b 465 59 465 121 465 59 l 372 49 b 73 14 272 36 173 24 b 49 13 65 13 56 13 b 0 -33 9 13 0 6 b 60 -141 0 -117 6 -140 b 112 -135 73 -141 91 -140 b 413 -102 213 -125 314 -112 b 464 -98 441 -99 464 -98 l 464 -145 b 477 -456 464 -249 468 -353 b 526 -510 478 -488 491 -507 b 589 -513 546 -511 569 -510 b 605 -516 595 -514 600 -516 z',\n },\n timeSigPlusSmall: {\n x_min: 0,\n x_max: 418,\n y_min: -197,\n y_max: 199,\n ha: 396,\n o: 'm 301 -284 b 330 -238 320 -284 324 -255 b 348 -46 350 -176 341 -111 b 374 -20 351 -27 356 -23 b 481 -17 409 -16 445 -17 b 566 -9 510 -17 537 -16 b 602 3 579 -7 602 -16 b 566 29 602 19 582 24 b 526 33 553 32 539 33 b 384 39 478 36 432 39 b 356 62 363 39 356 42 l 356 68 b 359 177 359 104 359 141 l 359 251 b 341 287 359 264 361 285 b 311 255 324 287 314 272 b 310 228 311 246 310 236 l 301 69 b 275 39 301 49 295 39 l 271 39 b 210 40 251 40 230 40 b 167 39 196 40 181 40 b 89 40 141 37 115 40 b 24 30 68 40 46 37 b 0 17 17 27 0 30 l 0 13 b 27 -17 3 0 7 -13 b 91 -22 49 -22 71 -22 b 153 -22 115 -22 137 -20 l 275 -22 b 295 -40 289 -22 295 -27 l 295 -48 b 288 -235 288 -109 287 -171 b 287 -264 288 -243 287 -253 b 301 -284 287 -275 289 -284 z',\n },\n timeSigMinus: {\n x_min: 0,\n x_max: 662,\n y_min: -54,\n y_max: 55,\n ha: 109,\n o: 'm 39 -78 b 49 -76 42 -78 45 -76 b 452 -75 94 -75 272 -75 b 861 -76 632 -75 814 -76 b 953 -20 927 -79 953 -66 b 948 27 953 -7 950 9 b 946 37 948 30 948 35 b 896 79 940 63 929 79 b 471 78 827 78 648 78 l 42 78 b 0 37 14 78 0 69 b 23 -66 0 0 17 -32 b 39 -78 24 -75 32 -76 z',\n },\n timeSigParensRight: {\n x_min: 0,\n x_max: 274.26483738379414,\n y_min: -722.6326530612245,\n y_max: 725,\n ha: 1447.6326530612246,\n o: 'm 37 -1038 b 69 -1031 48 -1044 59 -1038 b 88 -1015 76 -1027 82 -1021 b 164 -886 120 -976 147 -933 b 333 -351 233 -711 292 -534 b 395 118 366 -204 399 -59 b 389 245 392 144 392 194 b 120 996 369 521 265 766 b 68 1044 99 1030 84 1044 b 19 988 50 1044 36 1024 b 0 922 7 965 0 945 b 20 858 0 901 6 881 b 259 215 141 660 236 449 b 271 -1 266 143 271 71 b 252 -239 271 -82 265 -161 b 148 -667 228 -384 183 -524 b 39 -1009 120 -785 66 -893 b 33 -1031 37 -1017 33 -1024 b 37 -1038 33 -1034 35 -1037 z',\n },\n timeSigParensRightSmall: {\n x_min: 0,\n x_max: 154.4025307335204,\n y_min: -422,\n y_max: 422,\n ha: 844,\n o: 'm 43 -608 b 60 -598 48 -608 53 -605 b 117 -511 82 -572 102 -543 b 222 23 193 -350 219 -177 b 213 166 225 55 216 109 b 115 531 206 294 174 416 b 45 603 99 562 76 588 b 30 608 39 606 35 608 b 10 598 23 608 17 603 b 0 546 3 590 0 570 b 23 451 0 507 9 458 b 102 351 66 429 84 390 b 167 42 150 252 167 148 b 163 -49 167 12 166 -19 b 35 -449 151 -192 121 -330 b 14 -504 22 -467 14 -485 b 17 -527 14 -511 16 -520 l 30 -590 b 43 -608 33 -603 37 -608 z',\n },\n timeSigParensLeft: {\n x_min: 0.5555555555555556,\n x_max: 399.6216117372966,\n y_min: -728,\n y_max: 728,\n ha: 1456,\n o: 'm 562 -1048 b 573 -1043 566 -1048 570 -1047 b 553 -988 582 -1025 564 -1004 b 472 -884 527 -952 497 -920 b 210 -354 366 -717 275 -541 b 148 -6 170 -240 148 -124 b 160 148 148 45 153 96 b 315 678 189 331 242 508 b 431 901 350 755 380 834 b 459 950 451 926 461 939 b 435 995 459 962 451 972 b 364 1048 405 1034 383 1048 b 305 996 343 1048 325 1028 b 127 624 226 881 174 753 b 1 30 56 432 9 235 b 1 -32 1 9 0 -12 b 180 -629 13 -245 92 -438 b 363 -936 230 -739 298 -835 b 526 -1041 402 -995 448 -1041 b 562 -1048 537 -1040 552 -1048 z',\n },\n timeSigParensLeftSmall: {\n x_min: 0,\n x_max: 173.45497224367904,\n y_min: -405,\n y_max: 404,\n ha: 809,\n o: 'm 197 -583 b 222 -553 212 -582 219 -566 b 229 -497 226 -534 229 -516 b 213 -425 229 -472 225 -448 b 102 -177 173 -344 132 -262 b 62 30 78 -111 58 -42 b 91 183 66 82 75 134 b 215 426 118 271 156 356 b 249 552 246 465 252 505 b 230 582 249 563 246 582 b 197 563 219 582 206 576 b 71 356 144 500 105 429 b 0 50 26 259 3 158 b 13 -112 4 -3 7 -58 b 176 -559 29 -275 105 -416 b 196 -583 180 -569 186 -583 z',\n },\n noteheadDoubleWhole: {\n x_min: -0.4444444444444444,\n x_max: 614.1875,\n y_min: -223.03296670127517,\n y_max: 223,\n ha: 446.0329667012752,\n o: 'm 35 -321 b 62 -266 58 -318 58 -288 l 62 -194 b 63 50 62 -114 63 -32 b 60 189 63 96 63 143 b 43 300 59 226 60 265 b 29 321 40 308 39 321 l 26 321 b 0 292 13 318 0 310 b 0 248 0 278 -1 262 b 6 147 4 215 6 181 b 4 48 6 114 4 81 b 6 0 4 32 6 16 b 7 -36 7 -12 7 -24 l 7 -52 b 6 -156 7 -86 6 -121 b 19 -275 6 -196 9 -236 b 35 -321 23 -291 16 -323 z m 847 -314 b 871 -288 860 -315 867 -300 b 884 -187 881 -255 886 -222 b 876 115 878 -86 876 14 b 877 255 876 161 876 209 b 868 291 877 268 873 279 b 855 304 867 301 863 304 b 844 301 852 304 848 304 b 822 265 825 292 822 278 b 824 251 822 259 822 255 b 822 170 822 225 822 197 l 822 -20 b 835 -284 827 -86 825 -186 b 847 -314 837 -295 835 -311 z m 757 -291 b 793 -171 796 -255 792 -212 b 795 -49 795 -131 795 -91 b 786 207 795 36 791 121 b 779 240 786 217 783 229 b 766 258 776 246 776 258 b 762 256 765 258 763 256 b 739 236 752 253 740 252 b 733 177 737 216 732 197 b 737 20 737 125 739 73 l 737 -107 b 740 -202 737 -138 739 -170 b 757 -291 740 -230 743 -261 z m 128 -261 b 144 -251 135 -264 141 -256 b 158 -203 156 -236 157 -220 b 161 -137 161 -181 161 -158 b 157 30 161 -81 157 -26 b 158 76 157 45 157 60 l 158 101 b 156 225 158 141 158 183 b 137 253 156 235 154 253 l 134 253 b 109 222 120 251 109 242 b 104 91 108 179 104 134 b 108 -58 104 42 109 -9 b 107 -105 108 -73 108 -89 b 105 -127 107 -112 107 -120 b 118 -245 105 -167 114 -204 b 128 -261 118 -252 121 -259 z m 488 -242 b 693 -79 595 -249 685 -166 l 693 -55 b 690 0 693 -36 691 -17 b 540 187 684 84 621 164 b 449 200 508 196 480 200 b 210 104 363 200 282 163 b 186 56 196 92 186 76 b 207 -82 186 9 192 -37 b 300 -204 225 -132 248 -181 b 488 -242 356 -229 415 -240 z m 490 -88 b 449 -86 477 -88 464 -88 b 287 -56 399 -85 341 -78 b 258 -33 275 -52 258 -48 b 282 -7 258 -20 272 -13 b 458 43 340 23 399 43 b 580 14 497 43 537 35 b 618 -20 606 1 619 -9 b 592 -58 618 -30 609 -42 b 490 -88 562 -82 528 -88 z',\n },\n noteheadWhole: {\n x_min: 0,\n x_max: 380.16649762501584,\n y_min: -186.17102907059297,\n y_max: 165,\n ha: 351.17102907059297,\n o: 'm 547 40 b 223 -268 543 -151 367 -259 b 102 -233 180 -271 143 -248 l 62 -216 b 0 -127 22 -197 0 -166 b 6 -91 0 -115 1 -104 b 122 141 33 -9 69 71 b 327 238 170 204 249 238 b 514 158 397 238 467 212 b 547 40 544 125 549 84 z m 248 -107 b 384 -63 295 -102 341 -88 b 426 -23 402 -53 415 -40 b 435 3 432 -14 435 -6 b 413 32 435 14 428 24 b 301 73 376 49 343 73 b 272 69 291 73 282 72 b 121 -35 207 53 157 20 b 111 -58 117 -42 111 -50 b 125 -75 111 -65 115 -71 b 248 -107 164 -89 202 -107 z',\n },\n noteheadHalf: {\n x_min: 0,\n x_max: 334,\n y_min: -174,\n y_max: 175,\n ha: 349,\n o: 'm 480 56 b 167 -251 478 -115 331 -251 b 94 -242 143 -251 118 -248 b 9 -141 43 -229 20 -192 b 0 -68 3 -115 0 -91 b 284 249 0 95 127 200 b 304 252 289 251 297 252 b 481 78 374 252 481 170 b 480 56 481 71 481 63 z m 213 -102 b 399 6 274 -81 341 -48 b 402 17 400 7 402 13 b 399 27 402 22 400 26 b 311 94 373 53 353 88 b 292 95 305 95 300 95 b 130 27 230 95 181 55 b 69 -62 98 9 62 -29 b 161 -98 76 -98 128 -91 b 213 -102 174 -101 186 -101 z',\n },\n noteheadBlack: {\n x_min: 0,\n x_max: 334.04644433966797,\n y_min: -164,\n y_max: 164,\n ha: 328,\n o: 'm 112 -233 b 141 -236 122 -235 131 -236 b 481 104 279 -236 485 -48 b 403 222 477 141 478 192 b 334 236 382 232 359 236 b 1 -59 180 236 13 59 b 0 -85 1 -68 0 -76 b 112 -233 0 -157 32 -215 z',\n },\n noteheadXDoubleWhole: {\n x_min: 0,\n x_max: 730,\n y_min: -266,\n y_max: 267,\n ha: 533,\n o: 'm 1018 -373 b 1032 -361 1025 -376 1028 -367 b 1051 -287 1047 -338 1051 -314 b 1050 -252 1051 -276 1051 -264 b 1030 186 1031 -107 1037 40 b 1031 266 1028 213 1031 239 b 1018 363 1031 300 1028 331 b 1005 384 1015 373 1017 384 l 1004 384 b 984 363 992 384 986 373 b 982 343 982 356 982 348 b 981 235 982 307 981 271 b 996 -285 981 60 986 -112 b 1009 -360 998 -311 1005 -336 b 1018 -373 1011 -364 1014 -373 z m 16 -383 b 49 -328 39 -367 48 -350 b 69 56 58 -202 62 -73 b 75 212 72 107 72 160 b 78 278 76 233 78 255 b 59 382 78 312 73 347 b 29 328 33 372 29 350 b 13 -29 29 209 23 88 b 3 -222 7 -95 10 -157 b 0 -265 1 -236 0 -252 b 16 -383 0 -304 6 -343 z m 923 -314 b 955 -240 948 -289 952 -265 b 965 -65 962 -181 965 -125 b 963 0 965 -45 965 -22 b 962 111 960 37 962 73 b 953 240 962 154 960 197 b 939 275 952 253 952 275 b 913 239 924 274 913 258 b 913 173 914 217 913 194 b 914 135 913 160 913 147 b 920 27 919 98 920 63 b 909 -128 920 -26 917 -78 b 906 -179 906 -147 906 -163 b 923 -314 906 -223 913 -266 z m 121 -301 b 143 -272 134 -301 138 -284 b 147 -255 145 -268 145 -261 b 173 160 161 -117 166 22 b 173 233 173 184 174 209 b 157 264 171 243 171 264 b 137 235 143 264 138 249 b 132 207 135 226 132 216 b 121 43 128 153 124 96 b 105 -186 117 -36 105 -111 b 111 -269 105 -215 107 -242 b 121 -301 114 -281 104 -300 z m 210 -238 b 376 -193 274 -239 327 -226 b 471 -134 406 -173 439 -154 b 534 -94 491 -120 513 -107 b 671 -192 579 -127 624 -161 b 733 -226 691 -204 708 -228 b 746 -225 737 -228 742 -226 b 845 -204 782 -226 814 -213 b 868 -194 854 -203 865 -203 b 852 -173 871 -183 860 -179 b 661 -40 789 -128 724 -84 b 642 -27 654 -36 648 -32 b 861 114 716 17 791 63 b 886 132 870 120 886 121 l 886 137 b 852 164 883 151 867 161 b 776 176 827 170 801 176 b 685 145 744 176 714 168 b 530 45 638 107 583 76 b 403 132 487 73 444 101 b 279 176 364 161 324 171 b 223 160 259 176 229 176 b 258 115 215 141 242 127 b 431 -17 314 71 372 26 b 173 -196 341 -73 253 -130 b 157 -209 168 -200 157 -203 b 158 -215 157 -212 157 -215 b 183 -236 166 -223 168 -235 b 210 -238 194 -236 206 -239 z m 768 -207 b 533 -40 687 -150 609 -94 b 321 -173 462 -85 392 -130 b 261 -194 304 -184 287 -196 b 239 -193 253 -196 246 -194 b 387 -95 294 -157 340 -125 b 505 -20 426 -71 465 -45 l 484 -4 b 353 89 441 27 396 56 b 320 115 341 96 330 107 b 297 141 311 124 297 132 b 300 148 297 144 298 145 b 336 135 311 164 324 143 b 528 -4 400 89 464 42 l 723 121 b 770 140 737 131 753 138 b 792 132 779 140 789 141 b 778 115 795 122 783 120 b 586 -6 714 75 651 35 b 557 -24 576 -13 567 -19 b 726 -147 613 -66 670 -109 b 768 -207 744 -161 765 -173 z',\n },\n noteheadXWhole: {\n x_min: 0,\n x_max: 506,\n y_min: -143.0823320899293,\n y_max: 144,\n ha: 287.0823320899293,\n o: 'm 53 -206 b 219 -163 117 -207 170 -196 b 314 -102 249 -141 282 -122 b 377 -63 334 -89 356 -76 b 514 -161 422 -96 468 -128 b 576 -196 534 -174 552 -196 b 589 -193 580 -196 585 -196 b 688 -174 625 -194 657 -181 b 711 -158 698 -171 711 -173 b 696 -143 711 -151 701 -147 b 503 -9 632 -98 567 -52 l 485 4 b 704 145 559 49 634 95 b 729 164 711 150 729 151 l 729 168 b 696 196 726 183 710 193 b 621 207 671 202 645 207 b 528 177 589 207 557 200 b 373 76 480 140 426 108 b 246 164 330 104 287 132 b 122 206 207 193 167 203 b 66 192 102 207 72 207 b 99 147 58 173 85 158 b 274 14 157 102 215 58 b 16 -164 184 -42 96 -98 b 0 -179 12 -168 0 -170 b 1 -183 0 -180 0 -183 b 26 -204 6 -193 12 -204 b 53 -206 37 -206 49 -206 z m 611 -177 b 376 -9 530 -118 452 -63 l 164 -143 b 104 -164 147 -154 130 -164 b 82 -161 96 -164 89 -164 b 230 -65 137 -125 183 -95 l 347 12 b 327 26 341 16 334 22 l 196 121 b 163 147 184 128 173 137 b 140 173 154 154 140 163 b 143 180 140 176 141 177 b 179 166 154 194 167 174 l 372 27 l 566 153 b 613 171 580 161 596 170 b 635 160 624 171 635 174 b 621 147 635 153 626 150 l 429 24 b 400 6 419 19 409 13 b 569 -117 456 -35 513 -75 b 611 -177 588 -130 608 -143 z',\n },\n noteheadXHalf: {\n x_min: 0,\n x_max: 421,\n y_min: -145.51844828189743,\n y_max: 151,\n ha: 296.51844828189746,\n o: 'm 490 -209 b 539 -207 505 -207 521 -207 b 606 -209 560 -207 583 -209 b 598 -196 602 -203 600 -199 l 406 -19 l 540 130 b 547 144 546 135 547 140 b 536 156 547 148 543 153 b 488 192 518 166 503 176 b 416 217 471 209 444 217 b 323 180 380 217 344 204 l 264 115 b 239 138 256 122 248 131 b 33 197 180 196 108 200 b 3 186 23 197 6 193 b 19 154 -1 174 10 163 b 171 12 69 107 120 59 b 19 -157 120 -45 69 -101 b 0 -177 14 -163 0 -166 b 1 -181 0 -179 0 -180 b 39 -203 9 -197 22 -203 l 186 -203 b 197 -202 190 -202 193 -200 l 213 -202 b 262 -180 228 -202 246 -199 l 314 -122 b 490 -209 363 -170 412 -216 z m 435 -148 b 291 -30 379 -112 337 -69 l 213 -118 b 190 -137 207 -125 202 -137 b 145 -111 173 -130 154 -127 b 160 -79 137 -98 151 -88 b 238 16 184 -48 212 -16 b 141 99 204 43 173 72 l 124 117 b 115 132 121 121 115 127 b 118 137 115 134 117 137 b 141 132 127 147 135 138 l 253 36 b 347 150 285 75 315 112 b 370 164 354 160 363 163 b 403 145 382 164 393 156 b 416 127 412 140 416 132 b 405 102 416 118 412 111 l 307 -10 b 413 -105 343 -42 379 -73 b 435 -148 425 -115 436 -125 z',\n },\n noteheadXBlack: {\n x_min: 0,\n x_max: 289,\n y_min: -156,\n y_max: 157,\n ha: 313,\n o: 'm 23 -225 b 69 -204 40 -223 56 -219 b 137 -131 92 -180 115 -157 l 209 -50 b 377 -197 264 -101 321 -148 b 403 -210 384 -203 393 -210 l 408 -210 b 416 -192 416 -207 416 -199 l 416 -186 b 403 -148 416 -171 413 -158 b 344 -81 384 -125 367 -101 b 252 -1 312 -55 282 -29 b 377 157 297 49 340 101 b 402 202 387 170 402 187 b 395 217 402 207 400 213 b 376 226 389 223 382 226 b 334 192 360 226 346 204 b 206 42 289 143 248 94 b 96 161 167 81 131 120 b 60 193 86 174 76 189 b 33 206 52 196 42 206 b 22 199 29 206 26 204 b 10 173 14 190 10 181 b 22 147 10 166 14 157 b 148 7 62 98 104 52 b 164 -7 154 1 158 -3 b 10 -189 111 -66 55 -122 b 0 -212 6 -197 0 -203 b 1 -217 0 -213 0 -216 b 23 -225 4 -226 14 -222 z',\n },\n noteheadCircleXDoubleWhole: {\n x_min: 0,\n x_max: 437,\n y_min: -220,\n y_max: 219.03988406941295,\n ha: 439.03988406941295,\n o: 'm 10 -304 b 40 -206 43 -275 37 -239 b 55 168 48 -81 50 45 b 53 269 56 202 55 236 b 33 315 52 287 46 314 b 3 269 9 317 4 291 b 0 239 1 259 0 249 l 0 -196 b 10 -304 1 -232 7 -268 z m 592 -317 b 621 -220 619 -287 621 -253 b 622 -121 622 -187 622 -154 b 625 -20 622 -88 622 -55 b 629 101 628 20 629 60 b 628 220 629 141 628 181 b 618 253 628 232 625 243 b 608 275 613 259 616 274 b 602 272 606 275 603 275 b 575 249 590 269 575 266 l 575 246 b 573 222 575 239 573 230 l 573 -50 b 592 -317 575 -137 570 -225 z m 79 -285 b 114 -6 96 -261 109 -131 b 117 -63 114 -24 114 -45 b 249 -242 124 -151 166 -212 b 324 -256 275 -252 300 -256 b 504 -137 406 -256 478 -209 b 505 -265 504 -180 505 -222 b 513 -282 505 -269 510 -275 b 533 -248 526 -272 528 -261 b 540 -174 539 -223 540 -199 l 540 -127 b 553 207 546 -16 549 95 b 543 232 553 216 554 232 b 518 207 530 233 518 222 b 511 118 520 177 510 148 l 511 92 b 330 216 488 174 420 223 b 301 215 320 216 311 216 b 122 65 202 204 151 163 b 114 9 117 46 114 27 b 115 75 114 32 115 53 b 101 248 115 157 109 228 b 76 206 78 242 76 225 l 76 91 b 75 -26 76 52 76 13 b 69 -189 72 -81 66 -134 b 79 -285 71 -219 76 -249 z m 317 4 b 219 109 285 40 252 75 l 209 120 b 331 153 248 141 289 151 b 420 137 360 153 390 147 b 446 120 435 131 442 127 l 436 108 l 328 -7 z m 215 -131 b 216 -101 215 -122 215 -114 b 219 -45 217 -82 219 -63 b 197 94 219 3 213 49 l 197 95 b 199 94 199 95 199 94 l 310 -27 b 233 -108 285 -55 259 -81 z m 442 -141 b 432 -122 441 -134 436 -128 l 344 -26 l 426 58 l 445 81 b 444 75 445 78 444 76 b 428 -13 433 46 428 16 b 446 -104 428 -45 433 -75 b 452 -122 449 -111 452 -117 b 442 -141 452 -131 448 -137 z m 323 -190 b 272 -180 305 -187 288 -184 b 217 -158 239 -173 225 -168 l 327 -45 b 330 -48 328 -46 328 -48 b 432 -150 363 -82 393 -121 b 323 -190 400 -174 364 -189 z',\n },\n noteheadCircleXWhole: {\n x_min: 0,\n x_max: 323,\n y_min: -190,\n y_max: 184.44625787787314,\n ha: 374.4462578778731,\n o: 'm 156 -258 b 240 -274 184 -268 213 -274 b 455 -101 347 -274 441 -202 b 465 19 462 -60 465 -22 b 464 71 465 36 465 52 b 246 265 455 194 370 274 b 216 264 236 265 226 264 b 12 94 102 251 45 203 b 0 13 3 66 1 40 b 4 -55 0 -10 3 -32 b 156 -258 14 -154 60 -222 z m 245 10 b 233 23 242 14 238 19 b 121 144 196 65 158 104 l 109 154 b 249 192 156 179 202 192 b 351 174 284 192 317 186 b 380 154 366 168 376 163 b 379 153 380 154 380 153 b 369 141 376 148 372 145 b 245 10 327 98 287 53 z m 115 -131 b 118 -96 117 -121 117 -111 b 121 -27 120 -73 121 -50 b 98 124 121 24 115 75 b 96 127 96 125 98 125 b 99 125 98 127 98 125 b 225 -12 140 79 181 33 l 138 -105 b 115 -131 131 -114 122 -121 z m 376 -143 b 363 -121 374 -134 369 -128 b 265 -12 331 -85 298 -48 l 357 85 b 379 111 364 94 372 101 b 377 102 379 108 377 105 b 359 4 364 71 359 37 b 382 -99 359 -32 366 -66 b 387 -121 384 -108 386 -115 b 376 -143 387 -130 382 -135 z m 239 -197 b 181 -187 220 -194 200 -192 b 121 -161 145 -177 128 -173 b 243 -33 161 -118 203 -75 l 248 -36 b 364 -153 285 -75 320 -118 b 239 -197 327 -180 287 -197 z',\n },\n noteheadCircleXHalf: {\n x_min: 0,\n x_max: 309,\n y_min: -179,\n y_max: 179,\n ha: 358,\n o: 'm 232 -258 b 435 -94 328 -258 412 -196 b 445 6 444 -60 445 -27 b 444 69 445 27 445 48 b 258 258 439 170 374 258 l 230 258 l 207 256 b 14 107 111 248 45 202 b 0 12 4 75 0 43 b 12 -82 0 -20 4 -50 b 144 -242 27 -160 69 -212 b 232 -258 174 -252 203 -258 z m 192 60 b 115 141 166 88 141 115 l 108 150 b 226 189 141 173 186 189 b 253 186 236 189 245 187 b 305 180 271 183 288 183 b 192 60 268 140 229 101 z m 56 -78 b 45 6 43 -56 45 -23 b 65 84 49 39 50 45 b 85 121 72 96 78 107 b 95 124 88 124 92 127 b 171 39 120 95 145 68 z m 360 -132 b 348 -112 359 -124 353 -118 l 300 -58 l 387 37 b 410 63 397 48 405 56 b 413 26 412 52 413 40 b 360 -132 413 -42 393 -95 z m 232 -183 b 184 -177 217 -183 202 -181 l 281 -78 b 348 -143 301 -101 323 -122 b 232 -183 318 -168 279 -183 z',\n },\n noteheadCircleX: {\n x_min: 0,\n x_max: 344,\n y_min: -179,\n y_max: 175.12551922594866,\n ha: 354.12551922594866,\n o: 'm 99 -210 b 236 -258 137 -242 186 -258 b 418 -183 305 -258 374 -230 b 495 33 475 -120 495 -48 b 494 66 495 45 494 55 b 302 252 487 183 405 256 b 181 243 262 249 222 248 b 46 171 128 236 79 219 b 0 19 14 127 0 73 b 99 -210 0 -68 35 -156 z m 245 42 l 124 156 b 200 176 145 166 170 173 b 337 183 245 181 291 184 b 377 176 351 183 364 180 b 245 42 333 131 288 86 z m 392 -99 l 285 3 l 400 121 b 418 154 409 131 418 140 b 465 50 448 130 465 94 b 405 -112 462 -17 439 -73 z m 89 -120 b 48 0 56 -82 48 -42 b 89 112 48 35 59 76 b 109 101 96 111 102 108 l 210 7 l 187 -17 b 89 -120 151 -53 125 -82 z m 176 -183 b 127 -163 158 -179 141 -171 l 252 -32 l 372 -144 b 233 -189 334 -173 285 -189 b 176 -183 215 -189 196 -187 z',\n },\n noteheadCircledDoubleWhole: {\n x_min: 0,\n x_max: 672,\n y_min: -291,\n y_max: 291,\n ha: 582,\n o: 'm 27 -419 b 43 -369 37 -403 43 -387 b 49 -82 45 -272 49 -177 b 50 370 50 69 50 219 b 30 419 50 389 50 419 b 7 369 7 419 7 389 b 0 -284 4 151 1 -66 b 16 -418 0 -328 10 -373 z m 945 -374 b 968 -282 963 -343 968 -312 b 966 -245 968 -269 968 -258 b 958 -45 959 -179 962 -111 b 948 262 949 56 952 160 b 936 377 946 301 946 340 b 922 399 933 386 933 399 l 919 397 b 897 374 909 396 899 389 b 894 308 897 353 893 331 b 904 120 899 246 903 183 b 913 -111 907 43 909 -35 b 927 -297 916 -173 919 -235 b 945 -374 930 -320 927 -347 z m 95 -347 b 120 -292 115 -325 117 -310 b 124 -223 122 -269 124 -246 b 122 -141 124 -196 122 -168 b 121 -85 121 -122 121 -104 b 462 -297 170 -209 300 -297 b 727 -219 543 -294 639 -271 b 828 -118 773 -190 808 -157 b 842 -268 831 -168 834 -219 b 851 -288 844 -275 840 -287 b 865 -272 861 -289 863 -279 b 873 -225 871 -256 873 -240 b 873 -171 873 -207 871 -190 b 858 196 868 -48 863 75 b 848 295 857 229 854 262 b 840 315 848 301 850 315 l 837 315 b 816 295 827 314 816 307 b 809 216 815 268 808 243 b 815 102 812 179 814 140 b 672 295 780 176 733 240 b 500 370 621 340 566 370 b 436 361 480 370 459 367 b 120 95 288 321 183 233 l 120 256 b 115 287 120 266 118 276 b 104 305 112 292 115 305 l 101 305 b 82 284 91 304 82 297 b 76 216 81 262 76 239 b 84 -253 78 59 79 -96 b 95 -347 84 -282 89 -311 z m 780 -33 b 779 -24 780 -30 779 -27 b 704 92 766 22 743 62 b 544 173 655 128 599 147 b 400 206 497 194 448 204 b 307 193 369 206 338 202 b 202 118 264 181 226 153 b 235 168 212 135 222 151 b 505 337 302 262 396 312 b 523 338 511 337 517 338 b 611 288 559 338 586 312 b 763 62 678 225 733 151 b 780 -33 776 26 782 -4 z m 435 -88 b 337 -23 387 -88 354 -65 b 333 6 334 -14 333 -6 b 366 86 333 35 344 66 b 456 122 390 111 423 121 b 602 27 517 122 582 88 b 606 1 605 19 606 10 b 575 -49 606 -20 596 -36 b 435 -88 530 -76 481 -82 z m 441 -269 b 194 -96 327 -262 249 -194 b 167 1 176 -62 167 -30 b 177 59 167 22 171 42 b 174 39 176 52 174 46 b 266 -104 174 -27 210 -73 b 511 -151 346 -148 435 -144 l 552 -151 b 740 -104 616 -145 683 -141 b 776 -66 756 -94 769 -81 b 700 -174 766 -105 740 -140 b 441 -269 632 -232 533 -268 z',\n },\n noteheadCircledWhole: {\n x_min: -50,\n x_max: 472,\n y_min: -231.00750990437078,\n y_max: 232,\n ha: 463.00750990437075,\n o: 'm 289 -333 b 553 -255 370 -330 465 -307 b 680 -62 635 -206 680 -138 b 662 22 680 -36 674 -7 b 500 259 626 112 573 193 b 327 334 448 304 393 334 b 264 325 307 334 287 331 b -59 49 111 284 4 193 b -72 -19 -68 26 -72 4 b 289 -333 -72 -192 84 -334 z m 608 -69 b 605 -60 606 -66 606 -63 b 530 56 592 -14 570 26 b 372 137 482 92 425 111 b 228 170 324 158 275 168 b 134 157 196 170 166 166 b 29 82 91 145 53 117 b 60 132 37 99 49 115 b 333 301 128 226 223 276 b 350 302 338 301 344 302 b 438 252 386 302 413 276 b 590 26 505 189 560 115 b 608 -69 603 -10 608 -40 z m 262 -124 b 164 -59 215 -124 180 -101 b 160 -32 161 -50 160 -42 b 193 50 160 -3 171 30 b 284 86 217 75 251 85 b 429 -9 344 86 409 52 b 433 -36 432 -17 433 -26 b 402 -85 433 -56 423 -72 b 262 -124 357 -112 307 -118 z m 268 -305 b 22 -132 154 -298 76 -230 b -6 -33 3 -98 -6 -65 b 3 23 -6 -14 -3 6 b 1 3 1 16 1 10 b 94 -140 1 -63 37 -109 b 338 -187 173 -184 261 -180 l 379 -187 b 566 -140 444 -181 510 -177 b 602 -102 582 -130 595 -117 b 526 -210 592 -141 567 -176 b 268 -305 459 -268 360 -304 z',\n },\n noteheadCircledHalf: {\n x_min: -50,\n x_max: 393,\n y_min: -175,\n y_max: 175,\n ha: 350,\n o: 'm 540 39 b 408 187 503 94 464 148 b 259 252 356 223 301 252 b 35 192 160 252 95 229 b -68 50 -17 160 -53 112 b -72 13 -71 37 -72 24 b 69 -204 -72 -79 -1 -161 b 246 -252 125 -238 186 -252 b 500 -164 336 -252 426 -219 b 566 -42 543 -132 566 -88 b 540 39 566 -14 557 14 z m 9 -42 b 12 -68 10 -50 10 -59 b -7 6 3 -46 -4 -22 b 131 189 1 98 55 153 b 243 220 167 206 204 215 b 261 222 249 222 255 222 b 377 161 308 222 341 189 b 435 89 402 141 420 117 b 431 92 433 89 432 91 b 346 120 402 102 372 107 b 253 143 314 135 282 143 b 85 79 193 143 138 115 b 9 -42 45 52 10 13 z m 356 39 b 343 1 356 24 351 12 b 206 -111 304 -46 259 -84 b 181 -118 196 -115 189 -118 b 156 -71 163 -118 154 -102 b 238 35 164 -22 199 9 b 324 66 264 52 294 59 b 356 39 348 71 356 62 z m 488 -78 b 392 -176 471 -125 433 -154 b 246 -225 346 -200 297 -217 b 230 -226 240 -226 235 -226 b 157 -204 203 -226 180 -215 b 78 -154 128 -190 101 -174 b 232 -184 128 -171 180 -184 b 344 -161 269 -184 307 -179 b 491 -39 405 -135 455 -94 b 500 -23 495 -33 497 -29 b 488 -78 500 -40 494 -59 z',\n },\n noteheadCircledBlack: {\n x_min: -70,\n x_max: 326,\n y_min: -168,\n y_max: 192,\n ha: 360,\n o: 'm 176 -239 b 190 -242 180 -240 186 -240 b 262 -232 213 -242 238 -235 b 469 -19 384 -225 469 -131 b 467 22 469 -6 468 9 b 383 194 455 86 436 151 b 183 276 315 249 251 275 b 32 236 134 276 85 264 b -94 88 -30 207 -75 160 b -101 30 -98 69 -101 49 b 176 -239 -101 -107 9 -251 z m 177 -212 b -30 -27 81 -213 -13 -131 b -33 17 -33 -13 -33 3 b 127 226 -33 111 14 187 b 194 239 151 233 173 238 b 301 203 232 239 266 226 b 364 134 330 184 350 160 b 233 181 341 160 279 180 b 192 171 216 181 202 179 b 13 1 117 131 46 86 b 3 -48 6 -17 3 -33 b 60 -115 3 -79 20 -101 b 203 -135 105 -131 151 -138 b 229 -138 212 -137 220 -137 b 295 -122 251 -138 274 -135 b 400 -33 337 -99 373 -71 b 228 -206 393 -125 330 -192 b 177 -212 209 -209 192 -213 z',\n },\n noteheadDoubleWholeSquare: {\n x_min: 0,\n x_max: 474,\n y_min: -209.39230484541326,\n y_max: 211,\n ha: 420.39230484541326,\n o: 'm 648 -301 b 668 -287 658 -304 665 -295 b 683 -209 678 -262 683 -235 b 677 258 681 -55 678 102 b 672 284 677 266 677 276 b 661 304 670 291 672 304 l 658 304 b 635 279 647 301 635 297 b 629 240 635 266 629 252 l 629 236 b 631 225 629 232 631 228 b 583 194 631 197 611 194 l 528 194 b 125 207 393 194 259 202 b 89 207 114 209 101 206 b 63 210 79 207 71 207 b 52 229 55 213 52 220 b 55 258 52 238 55 248 b 53 266 55 261 55 264 b 36 298 48 276 53 298 l 35 298 b 4 264 14 298 7 284 b 0 187 0 238 0 213 b 4 50 0 143 3 96 b 6 -10 6 30 6 10 b 4 -130 6 -50 4 -91 b 12 -268 4 -176 6 -222 b 19 -287 13 -275 10 -284 b 35 -275 26 -288 30 -281 b 52 -220 50 -261 48 -239 b 75 -199 55 -206 58 -199 l 141 -197 l 274 -197 l 634 -197 b 639 -281 635 -219 636 -251 b 648 -301 641 -288 638 -300 z m 72 -66 b 55 -56 59 -69 55 -65 l 55 -50 b 53 53 55 -16 55 20 b 69 73 53 69 60 72 l 79 72 b 330 65 163 66 246 63 l 592 65 b 634 81 606 65 618 71 b 635 -30 634 39 635 6 b 605 -58 635 -49 628 -58 b 451 -60 553 -60 503 -60 b 219 -59 373 -60 295 -59 l 166 -59 b 72 -66 134 -59 104 -60 z',\n },\n noteheadSquareWhite: {\n x_min: 0,\n x_max: 350,\n y_min: -131,\n y_max: 131,\n ha: 262,\n o: 'm 468 -189 b 485 -187 474 -189 480 -189 b 500 -176 495 -187 500 -183 b 498 -168 500 -174 498 -171 b 497 -166 498 -167 497 -167 l 498 -164 b 504 -154 503 -163 504 -158 b 503 -138 504 -150 503 -144 l 503 -135 l 503 -94 b 492 66 500 -45 494 10 b 488 135 492 89 488 112 b 484 150 488 141 485 145 b 482 154 482 151 482 153 b 429 189 472 177 456 189 b 53 184 304 186 179 186 l 39 184 b 33 181 36 183 35 183 b 12 160 20 181 12 177 b 0 -109 9 71 4 -19 b 19 -137 0 -125 7 -134 b 23 -151 19 -141 20 -145 b 85 -187 37 -173 55 -187 b 468 -189 212 -187 340 -187 z m 246 -125 l 63 -125 b 66 -111 65 -122 66 -117 b 73 72 69 -50 71 10 l 73 130 b 88 128 78 128 82 128 b 148 130 108 130 128 130 b 271 128 190 130 230 128 l 271 130 l 420 130 b 428 20 425 92 425 56 l 436 -127 l 246 -127 z',\n },\n noteheadSquareBlack: {\n x_min: 0,\n x_max: 342,\n y_min: -129.98961937716263,\n y_max: 132.44444444444446,\n ha: 262.4340638216071,\n o: 'm 217 190 b 439 186 304 190 372 190 b 467 180 448 184 458 183 b 492 145 484 176 492 167 b 490 -124 490 56 490 -33 b 488 -141 490 -130 488 -135 b 456 -170 488 -163 478 -168 b 118 -183 344 -176 230 -181 b 29 -184 89 -183 60 -192 b 0 -148 4 -180 0 -168 b 1 29 1 -89 1 -30 l 1 156 b 36 190 3 187 4 190 b 217 190 102 192 168 190 z',\n },\n noteheadTriangleDownDoubleWhole: {\n x_min: 0,\n x_max: 510,\n y_min: -213,\n y_max: 213,\n ha: 426,\n o: 'm 16 -307 b 30 -289 26 -307 29 -297 b 43 -236 36 -272 42 -253 l 65 219 b 59 285 62 240 69 264 b 46 307 55 294 58 307 l 43 307 b 19 279 30 304 20 295 b 13 184 17 248 14 216 b 1 -125 9 81 7 -23 b 0 -163 0 -138 0 -150 b 6 -287 0 -204 4 -245 b 16 -307 6 -295 7 -305 z m 707 -294 b 734 -213 733 -271 734 -242 b 729 245 733 -60 730 92 b 719 285 729 259 724 272 b 707 298 716 291 714 298 l 703 298 b 685 284 696 297 687 292 b 683 253 683 274 683 264 b 691 -181 685 108 685 -36 b 707 -294 693 -217 690 -256 z m 108 -238 b 125 -203 125 -238 121 -216 b 127 -190 127 -199 127 -194 b 120 -138 127 -173 120 -156 l 120 -66 b 114 167 120 12 118 89 l 118 161 b 314 -153 184 58 248 -48 b 350 -184 327 -173 338 -184 b 387 -154 361 -184 374 -174 b 567 108 449 -68 508 20 b 626 193 588 137 608 164 b 615 -132 622 85 619 -24 l 615 -166 b 619 -207 615 -180 615 -194 b 638 -226 622 -217 629 -225 b 651 -209 648 -226 649 -216 b 658 -177 655 -199 658 -187 l 658 -171 b 667 49 655 -98 667 -23 b 665 88 667 62 667 75 b 665 220 665 135 667 179 b 641 265 664 238 660 265 b 626 243 629 265 626 255 b 628 222 626 236 628 228 b 612 225 624 223 619 225 b 384 223 537 223 461 223 l 384 225 l 170 225 b 131 215 157 225 144 222 b 112 200 122 210 117 206 b 88 266 111 225 108 249 b 75 239 76 259 75 249 b 73 147 75 207 73 179 b 82 -189 73 35 79 -78 b 84 -203 82 -194 82 -199 b 108 -238 86 -219 91 -238 z m 361 -79 b 295 78 336 -26 314 26 b 284 151 287 101 284 125 b 310 177 284 171 291 177 b 419 176 346 176 383 174 l 423 176 b 445 153 441 176 445 168 l 445 147 b 361 -79 442 65 415 -10 z',\n },\n noteheadTriangleDownWhole: {\n x_min: 0,\n x_max: 366,\n y_min: -145,\n y_max: 138,\n ha: 283,\n o: 'm 242 -209 b 279 -180 253 -209 266 -200 b 459 84 341 -92 400 -4 b 520 170 480 112 501 141 b 527 189 524 177 527 183 b 504 199 527 196 520 199 l 55 199 b 23 190 45 199 33 196 b 0 161 9 181 0 173 b 10 135 0 154 3 145 b 206 -177 76 32 140 -73 b 242 -209 219 -199 230 -209 z m 253 -105 b 187 52 228 -52 206 0 b 176 127 179 76 176 101 b 197 151 176 144 181 151 l 202 151 b 256 150 220 151 238 150 b 311 151 275 150 294 151 b 337 128 331 151 337 144 l 337 122 b 253 -105 334 39 307 -35 z',\n },\n noteheadTriangleDownHalf: {\n x_min: -0.0833130378007211,\n x_max: 341,\n y_min: -159,\n y_max: 159,\n ha: 318,\n o: 'm 266 -229 b 282 -215 274 -229 278 -225 b 487 153 350 -92 418 30 b 491 170 490 158 491 164 b 480 189 491 177 487 183 b 425 215 464 202 448 213 b 33 226 297 217 168 222 b 13 229 29 223 22 229 b 1 222 9 229 4 228 b 14 184 -4 207 7 196 b 210 -176 81 65 145 -56 b 253 -225 222 -194 230 -213 b 266 -229 259 -226 264 -228 z m 134 22 b 147 43 138 27 141 37 b 206 163 174 79 179 127 b 213 170 209 166 212 167 l 340 167 b 193 -75 287 89 251 1 b 190 -82 192 -76 190 -79 z',\n },\n noteheadTriangleDownBlack: {\n x_min: 0,\n x_max: 346,\n y_min: -149,\n y_max: 149,\n ha: 298,\n o: 'm 229 -215 b 259 -202 238 -215 248 -210 b 284 -173 269 -194 278 -184 l 482 173 b 498 209 488 184 498 194 b 481 215 492 215 487 215 b 63 213 343 215 203 213 b 12 197 45 213 29 206 b 0 180 4 193 0 187 b 3 168 0 177 1 173 b 13 150 6 163 9 156 l 196 -189 b 229 -215 206 -206 216 -215 z',\n },\n noteheadTriangleUpDoubleWhole: {\n x_min: 0,\n x_max: 510,\n y_min: -213,\n y_max: 213,\n ha: 426,\n o: 'm 16 -307 b 30 -289 26 -307 29 -297 b 43 -236 36 -272 42 -253 l 65 219 b 59 285 62 240 69 264 b 46 307 55 294 58 307 l 43 307 b 19 279 30 304 20 295 b 13 184 17 248 14 216 b 1 -125 9 81 7 -23 b 0 -163 0 -138 0 -150 b 6 -287 0 -204 4 -245 b 16 -307 6 -295 7 -305 z m 707 -298 b 734 -217 733 -275 734 -246 b 729 240 733 -65 730 88 b 719 281 729 255 724 268 b 707 294 716 287 714 294 l 703 294 b 685 279 696 292 687 288 b 683 249 683 269 683 259 b 691 -186 685 104 685 -40 b 707 -298 693 -222 690 -261 z m 88 -266 b 112 -200 108 -249 111 -225 b 131 -215 117 -206 122 -210 b 170 -225 144 -222 157 -225 l 384 -225 l 384 -223 b 612 -225 461 -223 537 -223 b 628 -222 619 -225 624 -223 b 641 -265 628 -238 622 -265 b 665 -220 660 -265 664 -238 b 665 -88 667 -179 665 -135 b 667 -49 667 -75 667 -62 b 658 171 667 23 655 98 b 651 209 660 184 655 197 b 638 226 649 216 648 226 b 619 207 629 225 622 217 b 615 166 615 194 615 180 l 615 132 b 626 -193 619 24 622 -85 b 567 -108 608 -164 588 -137 b 387 154 508 -20 449 68 b 350 184 374 174 361 184 b 314 153 338 184 327 173 b 118 -161 248 48 184 -58 l 114 -167 b 120 66 118 -89 120 -12 l 120 138 b 127 190 120 156 127 173 b 125 203 127 194 127 199 b 108 238 121 216 125 238 b 84 203 91 238 86 219 b 82 189 82 199 82 194 b 73 -147 79 78 73 -35 b 75 -239 73 -179 75 -207 b 88 -266 75 -249 76 -259 z m 310 -177 b 284 -151 291 -177 284 -171 b 295 -78 284 -125 287 -101 b 361 79 314 -26 336 26 b 445 -147 415 10 442 -65 b 423 -176 446 -166 442 -176 l 419 -176 b 310 -177 383 -174 346 -176 z',\n },\n noteheadTriangleUpWhole: {\n x_min: 0,\n x_max: 366,\n y_min: -145,\n y_max: 138,\n ha: 283,\n o: 'm 504 -209 b 527 -199 520 -209 527 -206 b 520 -180 527 -193 524 -187 b 459 -94 501 -151 480 -122 b 279 170 400 -6 341 82 b 242 199 266 190 253 199 b 206 167 230 199 219 189 b 10 -145 140 63 76 -42 b 0 -171 3 -156 0 -164 b 23 -200 0 -183 9 -192 b 55 -209 33 -206 45 -209 z m 202 -161 b 176 -137 183 -163 176 -156 b 187 -62 176 -111 179 -86 b 253 95 206 -10 228 42 b 337 -132 307 24 334 -49 b 311 -161 338 -153 334 -161 b 256 -160 294 -161 275 -160 b 202 -161 238 -160 220 -161 z',\n },\n noteheadTriangleUpHalf: {\n x_min: 0,\n x_max: 341.0833130378007,\n y_min: -159,\n y_max: 159,\n ha: 318,\n o: 'm 458 -226 b 478 -229 462 -223 469 -229 b 490 -222 482 -229 487 -228 b 477 -184 495 -207 484 -196 b 281 176 410 -65 346 56 b 238 225 269 194 261 213 b 225 229 232 226 228 228 b 209 215 217 229 213 225 b 4 -153 141 92 73 -30 b 0 -170 1 -158 0 -164 b 12 -189 0 -177 4 -183 b 66 -215 27 -202 43 -213 b 458 -226 194 -217 323 -222 z m 151 -167 b 298 75 204 -89 240 -1 b 301 82 300 76 301 79 l 357 -22 b 344 -43 353 -27 350 -37 b 285 -163 317 -79 312 -127 b 278 -170 282 -166 279 -167 z',\n },\n noteheadTriangleUpBlack: {\n x_min: 0,\n x_max: 346,\n y_min: -149,\n y_max: 149,\n ha: 298,\n o: 'm 481 -215 b 498 -209 487 -215 492 -215 b 482 -173 498 -194 488 -184 l 284 173 b 259 202 278 184 269 194 b 229 215 248 210 238 215 b 196 189 216 215 206 206 l 13 -150 b 3 -168 9 -156 6 -163 b 0 -180 1 -173 0 -177 b 12 -197 0 -187 4 -193 b 63 -213 29 -206 45 -213 b 481 -215 203 -213 343 -215 z',\n },\n noteheadSlashedDoubleWhole1: {\n x_min: 0,\n x_max: 697,\n y_min: -290,\n y_max: 290,\n ha: 580,\n o: 'm 20 -418 b 42 -376 40 -418 37 -392 b 43 -356 45 -370 43 -363 l 43 -348 b 50 -197 43 -298 49 -248 b 78 317 58 -24 69 147 b 72 387 75 343 82 366 b 52 418 68 397 69 418 l 49 416 b 24 380 33 413 24 399 b 19 235 23 333 20 284 b 7 -82 14 130 10 24 b 0 -264 6 -143 0 -203 b 10 -382 0 -302 1 -343 b 20 -418 13 -393 6 -418 z m 976 -344 b 991 -331 985 -346 988 -337 b 1004 -271 999 -312 1004 -292 l 1004 -194 b 996 184 1004 -68 1001 59 b 996 281 996 216 998 249 b 984 379 995 314 991 347 b 971 397 981 392 976 396 b 952 386 965 397 959 392 b 943 361 943 380 945 370 b 937 288 939 337 937 312 b 945 158 937 245 942 203 b 959 -248 950 23 953 -112 b 966 -325 960 -274 963 -300 b 976 -344 966 -334 968 -344 z m 102 -331 b 124 -272 120 -314 122 -294 b 135 -278 127 -276 131 -278 l 141 -278 b 320 -199 206 -262 272 -252 b 348 -171 328 -189 338 -180 b 482 -199 392 -190 436 -199 b 704 -173 576 -199 641 -187 b 847 -82 760 -158 809 -130 l 855 -69 l 855 -73 b 863 -229 857 -125 860 -177 b 876 -255 863 -239 863 -255 b 893 -233 886 -255 888 -242 b 900 -189 899 -219 900 -203 l 900 66 b 900 192 899 108 900 150 b 893 301 900 228 899 265 b 877 325 890 310 893 325 l 876 325 b 855 301 865 324 855 315 b 850 202 852 268 847 235 b 854 50 854 151 854 101 b 821 99 847 68 835 85 b 733 167 795 127 765 148 b 831 253 766 196 799 225 b 851 265 837 258 844 261 b 829 282 840 275 835 279 b 772 295 815 291 795 295 b 685 271 739 295 704 287 b 624 215 665 252 645 233 l 566 232 b 527 239 553 236 540 239 b 490 228 514 239 501 236 b 451 219 475 217 467 219 b 275 176 389 219 331 200 b 184 53 216 150 184 105 b 199 -14 184 32 189 10 b 262 -108 215 -52 236 -82 l 125 -230 b 134 225 130 -78 132 73 b 135 269 134 239 135 255 b 121 330 135 291 132 311 b 95 287 99 323 95 307 b 92 124 94 233 95 179 b 85 -143 88 36 85 -53 b 89 -300 85 -196 86 -248 b 102 -331 89 -311 89 -323 z m 367 -14 b 350 43 359 3 351 22 b 392 122 350 82 363 107 b 544 171 439 150 492 160 b 572 168 554 174 563 171 z m 564 -132 b 467 -105 528 -138 497 -121 b 442 -89 458 -101 449 -95 l 658 101 b 690 30 677 82 690 59 b 688 10 690 24 690 17 b 564 -132 678 -45 611 -127 z',\n },\n noteheadSlashedWhole1: {\n x_min: -76,\n x_max: 498,\n y_min: -168,\n y_max: 168,\n ha: 336,\n o: 'm -79 -242 b 55 -202 -32 -236 14 -228 l 145 -143 b 333 -171 203 -166 265 -171 b 429 -164 361 -174 395 -168 b 582 -130 481 -158 534 -154 b 657 -20 631 -105 657 -65 b 619 68 657 9 644 40 b 552 120 599 89 577 107 b 582 138 562 127 572 132 b 717 226 625 167 668 194 b 638 242 688 236 662 242 b 543 213 603 242 573 232 b 455 154 514 194 484 174 b 325 199 412 167 367 179 b 233 215 298 210 265 215 b 75 156 173 215 124 186 b 0 27 24 122 0 76 b 66 -98 0 -17 22 -63 b 72 -102 69 -99 71 -101 b -89 -209 17 -137 -36 -173 b -109 -225 -95 -213 -109 -216 b -108 -229 -109 -226 -108 -228 b -85 -242 -104 -239 -95 -242 z m 181 -29 b 167 14 171 -13 167 1 b 187 62 167 30 173 46 b 301 137 217 99 258 118 b 312 138 304 138 308 138 l 317 138 b 389 109 340 125 364 118 l 383 105 z m 337 -109 b 239 -82 301 -107 268 -99 l 468 65 b 482 24 477 53 482 40 b 480 4 482 19 481 12 b 337 -109 467 -56 399 -111 z',\n },\n noteheadSlashedHalf1: {\n x_min: -79.3435119522494,\n x_max: 471,\n y_min: -184,\n y_max: 184,\n ha: 368,\n o: 'm -112 -251 b -94 -265 -107 -261 -101 -264 b -52 -242 -79 -265 -63 -249 l 89 -148 b 212 -180 125 -170 167 -179 b 238 -177 220 -180 229 -179 l 262 -180 b 346 -171 289 -180 318 -176 b 576 -91 431 -166 507 -140 b 641 4 619 -60 641 -29 b 592 96 641 35 625 65 l 583 104 b 533 147 567 121 550 134 l 613 200 b 678 261 636 216 664 232 b 658 265 671 264 664 265 b 611 248 641 265 625 258 l 491 171 b 337 204 444 194 392 204 b 281 200 318 204 300 204 b 27 62 180 187 92 145 b -1 -19 9 37 -1 10 b 36 -107 -1 -50 12 -82 b 52 -121 42 -112 46 -117 l -72 -203 b -112 -251 -91 -216 -122 -233 z m 161 -49 b 158 -29 160 -42 158 -35 b 183 33 158 -7 167 16 b 395 137 239 95 311 122 b 420 125 405 134 413 130 z m 276 -128 b 261 -131 271 -130 266 -131 b 181 -86 233 -131 203 -114 l 454 94 l 468 72 b 481 36 477 60 481 49 b 469 1 481 26 477 14 b 276 -128 422 -66 354 -105 z',\n },\n noteheadSlashedBlack1: {\n x_min: -110,\n x_max: 452,\n y_min: -190,\n y_max: 190,\n ha: 380,\n o: 'm -131 -274 b -102 -262 -121 -272 -111 -266 b 7 -186 -65 -239 -29 -212 b 50 -157 22 -176 36 -166 b 105 -176 65 -166 84 -173 b 207 -183 140 -181 173 -183 b 239 -184 219 -184 229 -184 b 428 -91 327 -184 377 -150 b 487 43 461 -52 487 -7 b 482 76 487 53 485 65 b 459 128 478 95 469 112 b 507 161 475 138 491 150 l 651 262 b 622 274 641 271 632 274 b 605 271 616 274 611 272 b 514 233 573 262 541 252 l 422 167 b 317 203 392 190 354 203 b 271 196 301 203 285 200 b 168 157 236 186 200 173 b 6 -16 94 120 33 68 b -1 -62 1 -32 -1 -48 b 17 -125 -1 -86 4 -108 b -81 -196 -16 -148 -48 -173 b -145 -242 -102 -212 -128 -219 b -158 -256 -150 -246 -158 -251 b -157 -261 -158 -258 -157 -259 b -131 -274 -153 -269 -141 -274 z',\n },\n noteheadSlashedDoubleWhole2: {\n x_min: -0.12386605641055257,\n x_max: 697.4733477320805,\n y_min: -295,\n y_max: 295,\n ha: 590,\n o: 'm 870 -338 b 891 -315 884 -341 887 -325 b 906 -183 907 -274 903 -228 b 914 186 912 -60 904 62 b 914 240 914 203 916 222 b 916 276 913 251 916 265 b 899 300 916 289 913 300 b 871 253 874 300 871 274 b 858 -168 871 111 858 -27 b 860 -235 858 -190 860 -213 l 736 -131 b 834 -20 799 -111 834 -69 b 789 85 834 13 819 49 b 683 160 760 118 723 140 b 383 216 589 209 487 215 b 330 213 364 217 347 216 b 228 300 295 242 261 271 b 86 347 184 337 138 348 b 58 343 76 347 63 350 l 58 360 b 35 425 58 384 53 423 b 6 382 9 425 6 403 l 6 131 b 0 -164 6 33 4 -66 b 24 -327 -1 -216 6 -271 b 50 -262 46 -305 50 -284 l 50 -154 b 52 -45 50 -118 50 -81 b 58 325 55 79 58 202 b 73 310 60 320 68 315 b 94 294 79 304 86 298 b 89 271 89 287 89 278 l 89 94 b 104 -194 101 -20 88 -108 b 118 -245 107 -213 104 -248 b 140 -190 140 -243 140 -212 l 140 -62 b 132 258 140 46 138 153 l 132 259 l 235 173 b 193 132 219 161 204 148 b 153 26 167 101 153 63 b 164 -35 153 7 157 -16 b 341 -170 196 -114 261 -158 b 433 -177 372 -174 403 -177 b 619 -157 497 -177 559 -170 l 706 -230 b 799 -276 736 -258 765 -276 b 818 -274 806 -276 812 -276 l 861 -274 b 863 -312 861 -287 863 -300 b 870 -338 864 -321 858 -337 z m 966 -425 b 986 -397 979 -425 982 -408 b 991 -373 989 -390 989 -382 b 995 -239 991 -328 995 -284 b 1004 334 1001 -49 1002 143 b 995 380 1005 350 1005 367 b 982 402 989 386 992 402 l 978 400 b 949 374 965 396 950 390 b 948 333 948 360 948 346 l 948 -37 b 949 -84 949 -52 949 -68 b 946 -248 949 -132 946 -189 b 953 -396 946 -297 948 -346 b 966 -425 955 -408 950 -425 z m 624 -36 b 416 140 554 22 485 81 b 482 156 439 150 461 154 b 625 81 537 156 588 124 b 647 27 639 63 647 46 b 624 -36 647 7 638 -14 z m 469 -117 b 320 14 386 -118 320 -60 b 343 81 320 37 327 60 l 547 -95 b 469 -117 521 -105 494 -111 z',\n },\n noteheadSlashedWhole2: {\n x_min: -83,\n x_max: 510,\n y_min: -201,\n y_max: 198,\n ha: 399,\n o: 'm 734 -289 b 696 -245 726 -266 710 -256 b 586 -164 660 -217 622 -192 l 589 -161 b 654 -50 631 -135 654 -94 b 616 40 654 -19 641 13 b 305 174 536 127 420 174 b 171 151 261 174 215 167 b 166 150 170 151 168 150 b 86 209 140 170 112 189 b -94 284 32 249 -22 289 l -108 285 b -120 274 -114 285 -120 284 b -104 251 -120 266 -112 258 b 71 124 -46 209 12 166 l 85 114 b 36 72 66 102 50 89 b 0 -30 12 40 0 4 b 122 -186 0 -96 45 -160 b 343 -222 194 -210 268 -222 b 514 -197 410 -220 467 -213 l 554 -228 b 734 -289 609 -268 668 -275 z m 477 -82 b 268 73 408 -30 338 22 l 301 91 b 336 101 314 96 324 101 b 370 88 347 101 359 96 b 459 9 405 66 436 43 b 481 -56 474 -13 481 -35 b 477 -82 481 -65 480 -73 z m 310 -161 b 216 -143 276 -161 246 -156 b 166 -72 181 -128 166 -105 b 168 -46 166 -65 167 -55 b 206 26 176 -16 189 7 b 436 -140 282 -29 360 -84 b 382 -158 420 -150 402 -157 b 310 -161 357 -161 333 -161 z',\n },\n noteheadSlashedHalf2: {\n x_min: -73,\n x_max: 454,\n y_min: -188,\n y_max: 188,\n ha: 376,\n o: 'm 654 -271 b 603 -202 649 -233 625 -217 b 481 -115 563 -173 523 -144 b 564 -60 510 -101 539 -82 b 615 40 596 -33 615 4 b 609 69 615 50 613 60 b 505 167 590 120 554 151 b 336 190 451 184 392 190 b 124 134 259 190 189 171 l -42 248 b -88 271 -56 256 -75 271 b -101 265 -94 271 -98 269 b -105 252 -104 259 -105 255 b -66 210 -105 235 -82 222 l 85 107 b 0 -24 42 73 0 35 b 183 -183 0 -118 75 -184 b 262 -176 206 -180 233 -177 b 438 -135 324 -171 383 -158 b 570 -228 482 -166 527 -197 b 654 -271 595 -243 621 -259 z m 393 -53 l 311 4 l 225 65 b 392 134 274 102 331 122 b 455 50 425 141 455 101 b 439 -3 455 35 451 14 b 393 -53 425 -22 409 -37 z m 287 -121 b 246 -130 272 -127 259 -130 b 171 -89 215 -130 189 -115 b 156 -40 161 -73 156 -58 b 186 29 156 -17 166 7 l 192 35 l 359 -82 b 287 -121 337 -98 312 -111 z',\n },\n noteheadSlashedBlack2: {\n x_min: -84,\n x_max: 405,\n y_min: -189,\n y_max: 189,\n ha: 378,\n o: 'm 557 -265 b 573 -272 562 -268 567 -272 b 583 -261 577 -272 580 -269 b 575 -242 580 -253 579 -248 b 524 -190 563 -220 544 -204 b 405 -99 485 -160 445 -130 b 497 50 449 -60 482 -9 b 500 72 498 58 500 65 b 478 122 500 91 492 107 b 331 186 438 167 387 186 b 120 131 258 186 186 167 l 107 124 b -52 242 53 163 1 203 b -89 265 -63 251 -76 259 b -107 272 -95 268 -101 272 b -117 266 -109 272 -114 271 b -121 251 -120 262 -121 256 b -114 235 -121 245 -120 239 b -60 186 -96 217 -81 199 b 63 95 -20 156 22 125 b -1 -35 26 66 -1 27 b 137 -183 -1 -130 46 -183 b 174 -180 148 -183 161 -181 l 245 -171 b 366 -128 289 -166 331 -150 l 426 -171 b 557 -265 469 -203 514 -233 z',\n },\n noteheadDiamondDoubleWhole: {\n x_min: 0,\n x_max: 429,\n y_min: -221,\n y_max: 221,\n ha: 442,\n o: 'm 22 -318 b 42 -294 33 -318 37 -302 b 46 -266 45 -285 45 -275 b 50 -219 49 -249 50 -233 b 48 -153 50 -197 49 -176 b 43 120 43 -62 43 29 l 43 253 b 37 298 43 269 45 284 b 26 318 35 305 35 318 l 24 318 b 1 295 13 317 3 308 b 0 268 0 285 0 276 l 0 -121 b 10 -291 0 -177 1 -235 b 22 -318 12 -301 10 -318 z m 593 -312 b 618 -256 611 -294 616 -276 l 618 -186 b 611 253 618 -40 612 108 b 605 276 611 261 608 268 b 589 295 600 284 600 297 b 567 272 577 294 569 285 l 567 251 b 575 -197 573 102 575 -48 b 593 -312 575 -233 579 -271 z m 99 -268 b 114 -256 107 -269 111 -262 b 127 -196 124 -238 125 -217 b 128 -144 128 -179 128 -161 b 122 -9 128 -99 125 -55 l 135 -19 b 344 -179 206 -71 276 -122 b 370 -190 354 -186 363 -190 b 395 -173 379 -190 386 -184 b 492 -33 426 -127 459 -79 b 491 -86 491 -50 491 -68 b 507 -251 491 -138 495 -193 b 534 -184 530 -228 533 -206 b 541 144 537 -75 539 35 b 530 204 541 164 539 186 b 520 220 528 210 528 220 b 500 203 511 219 503 213 b 498 192 498 200 498 194 l 498 176 b 494 7 497 120 497 63 l 490 12 l 287 176 b 258 190 279 181 274 190 b 212 153 239 186 225 168 l 127 40 b 121 32 124 37 122 35 b 118 114 120 59 118 86 b 102 249 117 158 122 206 b 75 219 85 246 79 236 b 72 187 72 209 72 197 b 76 117 72 164 75 141 b 85 -151 79 27 79 -62 b 91 -251 86 -184 91 -217 b 99 -268 91 -258 92 -266 z m 392 -128 b 374 -122 387 -134 380 -127 l 180 29 b 170 45 173 35 170 39 b 176 56 170 48 173 52 b 236 122 204 101 219 122 b 308 76 252 122 272 107 l 433 -26 b 449 -50 439 -32 449 -36 b 392 -128 432 -75 413 -102 z',\n },\n noteheadDiamondWhole: {\n x_min: 0,\n x_max: 271,\n y_min: -132,\n y_max: 132,\n ha: 264,\n o: 'm 230 -177 b 256 -190 240 -186 249 -190 b 281 -173 265 -190 272 -184 b 382 -29 314 -124 347 -76 b 390 -10 387 -22 390 -14 b 376 12 390 -3 386 4 b 173 177 308 66 240 121 b 144 190 166 183 160 190 b 98 153 127 186 112 170 b 13 40 69 115 42 76 b 0 13 4 29 0 20 b 22 -19 0 3 7 -9 b 230 -177 92 -69 163 -122 z m 279 -128 b 261 -122 274 -134 266 -127 l 66 30 b 56 45 59 35 56 39 b 62 56 56 48 59 52 b 122 122 91 101 105 122 b 194 76 138 122 158 107 l 320 -26 b 336 -50 325 -32 336 -35 b 279 -128 318 -75 300 -102 z',\n },\n noteheadDiamondHalf: {\n x_min: 0,\n x_max: 295,\n y_min: -148,\n y_max: 148,\n ha: 296,\n o: 'm 228 -207 b 245 -213 235 -210 240 -213 b 264 -203 252 -213 258 -210 b 415 -46 314 -150 364 -98 b 425 -27 420 -40 425 -35 b 416 -10 425 -22 422 -16 b 217 200 350 60 284 131 b 194 213 212 207 204 213 b 170 196 181 213 177 203 b 14 33 118 143 68 86 b 0 7 4 23 0 16 b 17 -20 0 -1 6 -10 b 118 -114 52 -50 82 -85 b 228 -207 156 -144 184 -184 z m 209 -157 b 134 -69 177 -138 141 -115 b 130 -26 131 -55 130 -40 b 215 148 130 42 160 99 b 225 156 217 151 220 156 b 230 153 226 156 228 156 b 323 -26 276 104 321 55 b 298 -75 324 -42 315 -59 b 265 -109 287 -86 276 -99 b 209 -157 245 -125 228 -167 z',\n },\n noteheadDiamondBlack: {\n x_min: 0,\n x_max: 310,\n y_min: -146,\n y_max: 146,\n ha: 292,\n o: 'm 266 -210 b 289 -194 278 -209 284 -200 b 406 -76 330 -156 367 -115 b 446 -23 433 -49 446 -36 b 412 29 446 -10 435 3 b 405 36 409 30 408 33 b 252 196 354 89 304 143 b 225 210 243 204 235 210 b 204 202 219 210 212 209 b 10 24 141 141 75 82 b 0 9 4 19 0 14 b 9 -6 0 4 3 0 l 232 -192 b 266 -210 242 -200 256 -204 z',\n },\n noteheadParenthesis: {\n x_min: -70.190112022022,\n x_max: 329,\n y_min: -196,\n y_max: 201,\n ha: 397,\n o: 'm 344 -279 b 382 -262 361 -288 370 -272 b 405 -233 390 -255 399 -245 b 474 9 455 -158 468 -73 b 416 228 474 78 448 174 b 364 282 403 249 387 271 b 344 289 359 285 350 288 b 331 279 338 289 333 287 b 325 248 328 269 325 258 b 338 225 325 238 328 229 b 412 138 379 207 396 174 b 445 1 433 92 445 45 b 346 -217 445 -81 410 -154 b 336 -252 340 -223 336 -238 b 344 -279 336 -265 338 -276 z m 19 -274 b 35 -282 24 -279 30 -281 b 49 -265 42 -282 46 -275 b 52 -243 50 -256 52 -249 b 36 -210 52 -230 49 -220 b -60 -59 -16 -173 -35 -114 b -73 9 -69 -39 -73 -16 b 33 223 -73 92 -24 189 b 50 265 43 229 50 249 b 33 288 50 278 46 289 b 4 272 23 288 14 275 b -9 261 0 269 -4 265 b -101 23 -58 193 -105 124 b -37 -206 -104 -52 -75 -130 b 19 -274 -23 -232 -6 -255 z',\n },\n noteheadParenthesisRight: {\n x_min: -30,\n x_max: 82,\n y_min: -199.08429092881173,\n y_max: 206,\n ha: 405.0842909288117,\n o: 'm -17 -282 b 24 -264 -6 -297 12 -272 b 60 -219 40 -253 52 -236 b 117 1 96 -150 112 -75 b 118 16 118 6 118 12 b 109 73 118 36 112 55 b 4 279 99 154 68 226 b -23 297 -4 287 -13 297 b -37 289 -27 297 -32 294 b -43 266 -42 285 -43 276 b -32 225 -43 251 -37 229 b 84 -7 48 170 84 82 b 32 -184 84 -69 65 -132 b -10 -222 22 -200 4 -209 b -24 -258 -20 -232 -24 -245 b -17 -282 -24 -266 -22 -276 z',\n },\n noteheadParenthesisLeft: {\n x_min: 0,\n x_max: 106,\n y_min: -197,\n y_max: 197,\n ha: 394,\n o: 'm 134 -284 b 138 -281 135 -284 137 -284 b 145 -268 144 -278 145 -274 l 144 -253 b 107 -180 138 -225 121 -204 b 42 13 71 -120 42 -56 b 49 73 42 32 43 52 b 137 210 62 128 95 171 b 153 255 147 219 153 239 b 145 278 153 265 151 274 b 130 284 140 281 135 284 b 98 259 117 284 108 268 b 0 37 35 203 1 131 b 118 -268 9 -69 53 -173 b 134 -284 121 -274 127 -284 z',\n },\n noteheadMoonBlack: {\n x_min: 0,\n x_max: 328,\n y_min: -125,\n y_max: 125,\n ha: 250,\n o: 'm 353 -160 b 465 -40 412 -140 451 -102 b 472 30 471 -17 472 6 b 469 124 472 60 469 92 b 406 179 469 170 459 177 l 128 179 b 37 180 98 179 68 179 b 0 141 7 180 0 170 b 3 -20 3 88 3 33 b 69 -134 3 -72 26 -109 b 240 -180 125 -164 181 -180 b 353 -160 278 -180 315 -174 z',\n },\n noteheadTriangleLeftBlack: {\n x_min: 0,\n x_max: 391.1554175279994,\n y_min: -142,\n y_max: 142,\n ha: 284,\n o: 'm 138 -204 b 318 -197 197 -199 258 -197 l 431 -197 b 544 -192 469 -196 507 -193 b 563 -184 552 -190 560 -193 b 553 -167 564 -177 559 -171 l 540 -157 b 232 60 436 -85 334 -12 l 50 190 b 20 204 42 197 32 204 b 10 202 17 204 14 204 b 0 184 1 197 0 192 b 1 164 0 177 1 170 b 6 -150 3 59 6 -45 b 39 -193 7 -176 17 -186 b 138 -204 72 -204 105 -204 z',\n },\n noteheadTriangleRightBlack: {\n x_min: -0.3332953162522517,\n x_max: 398,\n y_min: -139,\n y_max: 140,\n ha: 279,\n o: 'm 543 -200 b 573 -176 566 -200 573 -194 l 573 -168 b 554 141 566 -66 560 37 b 520 197 553 167 546 187 b 495 202 511 200 504 202 b 454 184 481 202 467 196 l 35 -137 b 0 -171 22 -147 -4 -154 b 52 -199 6 -193 33 -193 b 69 -199 58 -200 63 -199 z',\n },\n noteheadTriangleRoundDownBlack: {\n x_min: 0,\n x_max: 334,\n y_min: -133.78604087938328,\n y_max: 136,\n ha: 269.7860408793833,\n o: 'm 252 -192 b 285 -176 269 -196 276 -187 b 468 52 346 -99 406 -23 b 481 79 477 62 481 71 b 465 104 481 88 475 95 b 441 124 456 109 449 117 b 249 196 380 174 314 194 b 13 104 157 196 69 154 b 0 86 6 98 0 92 b 7 69 0 82 3 76 b 202 -164 73 -7 137 -85 b 252 -192 216 -181 235 -186 z',\n },\n augmentationDot: {\n x_min: 0,\n x_max: 96,\n y_min: -57,\n y_max: 57,\n ha: 114,\n o: 'm 13 -82 b 16 -81 14 -82 14 -82 b 105 -73 46 -76 75 -76 b 131 -48 121 -72 131 -60 b 138 26 134 -24 138 0 b 137 48 138 33 138 40 b 108 82 134 71 125 82 b 95 81 104 82 99 82 b 33 71 75 78 53 75 b 4 46 20 68 6 62 b 0 -66 1 9 0 -29 b 13 -82 0 -73 1 -82 z',\n },\n tremolo1: {\n x_min: -158,\n x_max: 156.19381479578487,\n y_min: -88,\n y_max: 88,\n ha: 176,\n o: 'm -206 -127 b -194 -125 -203 -127 -199 -127 b 173 -36 -72 -94 50 -65 b 220 16 202 -29 215 -12 b 225 50 223 30 225 45 b 216 107 226 76 222 91 b 194 127 210 120 204 127 b 183 124 192 127 189 127 l -192 33 b -226 -9 -213 27 -222 14 b -228 -32 -226 -16 -228 -23 b -222 -108 -228 -58 -222 -82 b -206 -127 -222 -120 -217 -127 z',\n },\n flag8thUp: {\n x_min: 0,\n x_max: 261,\n y_min: -819,\n y_max: 0,\n ha: 819,\n o: 'm 265 -1171 b 351 -1035 301 -1130 336 -1087 b 376 -867 369 -979 376 -923 b 367 -755 376 -829 373 -792 b 233 -422 350 -632 311 -520 b 131 -291 199 -379 166 -334 b 65 -125 91 -239 66 -192 b 62 -75 65 -112 62 -91 b 42 0 62 -49 52 -24 l 35 0 b 0 -63 6 -13 0 -36 l 0 -144 b 96 -445 0 -255 29 -356 b 177 -547 124 -478 150 -514 b 308 -831 246 -629 298 -721 b 317 -890 310 -851 317 -871 b 311 -919 317 -900 315 -910 b 256 -1005 297 -950 282 -984 b 228 -1068 233 -1024 228 -1045 b 230 -1106 228 -1080 229 -1093 b 240 -1162 232 -1125 239 -1143 b 251 -1179 242 -1174 246 -1179 b 265 -1171 255 -1179 259 -1176 z',\n },\n flag8thDown: {\n x_min: 0,\n x_max: 261,\n y_min: 0,\n y_max: 819,\n ha: 819,\n o: 'm 265 1171 b 251 1179 259 1176 255 1179 b 240 1162 246 1179 242 1174 b 230 1106 239 1143 232 1125 b 228 1068 229 1093 228 1080 b 256 1005 228 1045 233 1024 b 311 919 282 984 297 950 b 317 890 315 910 317 900 b 308 831 317 871 310 851 b 177 547 298 721 246 629 b 96 445 150 514 124 478 b 0 144 29 356 0 255 l 0 63 b 35 0 0 36 6 13 l 42 0 b 62 75 52 24 62 49 b 59 117 62 91 59 104 b 131 291 60 183 91 239 b 233 422 166 334 199 379 b 367 755 311 520 350 632 b 376 867 373 792 376 829 b 351 1035 376 923 369 979 b 265 1171 336 1087 301 1130 z',\n },\n flag16thUp: {\n x_min: 0,\n x_max: 327.1591498636094,\n y_min: -819.3972596310256,\n y_max: 0,\n ha: 819.3972596310256,\n o: 'm 415 -1179 b 435 -1168 423 -1182 429 -1174 b 451 -1138 442 -1159 446 -1149 b 465 -1020 464 -1102 467 -1064 b 461 -962 464 -1004 464 -984 b 471 -821 467 -916 472 -870 b 465 -721 472 -791 467 -756 b 415 -520 459 -651 441 -585 b 200 -245 370 -408 284 -327 b 96 -114 160 -206 118 -168 b 75 -24 84 -85 85 -53 b 59 0 72 -16 72 0 b 53 -1 58 0 56 -1 b 27 -32 40 -6 27 -10 b 29 -68 27 -43 29 -55 b 10 -79 20 -69 13 -72 b 1 -109 6 -89 1 -99 b 0 -170 0 -130 0 -148 b 35 -410 0 -252 12 -333 b 258 -793 76 -557 156 -681 b 409 -1158 350 -896 410 -1014 b 415 -1179 409 -1165 405 -1175 z m 413 -816 b 331 -681 392 -769 364 -723 b 145 -420 266 -596 189 -521 b 86 -281 125 -374 102 -330 b 156 -370 105 -312 128 -343 b 318 -539 210 -425 269 -478 b 413 -816 383 -621 420 -713 z',\n },\n flag16thDown: {\n x_min: 0,\n x_max: 327.1591498636094,\n y_min: 0,\n y_max: 819,\n ha: 819,\n o: 'm 59 0 b 75 24 72 0 72 16 b 96 114 85 53 84 85 b 200 245 118 168 160 206 b 415 520 284 327 370 408 b 465 721 441 585 459 651 b 471 821 467 756 472 791 b 461 962 472 870 467 916 b 465 1020 464 984 464 1004 b 451 1138 467 1064 464 1102 b 435 1168 446 1149 442 1159 b 418 1179 431 1172 425 1179 l 415 1179 b 408 1169 409 1176 408 1174 b 409 1158 408 1165 409 1161 b 258 793 410 1014 350 896 b 35 410 156 681 76 557 b 0 170 12 333 0 252 l 0 88 b 29 7 0 71 6 23 b 59 0 33 4 58 0 z m 86 281 b 145 420 102 330 125 374 b 331 681 189 521 266 596 b 413 816 364 723 392 769 b 415 791 413 808 415 799 b 318 539 415 698 377 613 b 156 370 269 478 210 425 b 86 281 128 343 105 312 z',\n },\n flag32ndUp: {\n x_min: -0.19862981551275186,\n x_max: 268.0942440943661,\n y_min: -849.4710740978672,\n y_max: 149.0769891455102,\n ha: 998.5480632433774,\n o: 'm 323 -1223 b 351 -1198 337 -1227 344 -1210 b 359 -1184 354 -1194 356 -1188 b 386 -999 377 -1122 387 -1060 b 341 -783 386 -927 372 -855 b 330 -736 334 -769 330 -753 b 333 -708 330 -727 330 -717 b 344 -621 340 -678 344 -649 b 341 -579 344 -608 343 -593 b 328 -500 338 -553 328 -526 b 331 -475 328 -491 328 -484 b 347 -370 343 -438 348 -402 b 151 27 348 -212 288 -56 b 53 176 98 59 50 102 b 45 197 53 183 48 192 b 33 215 40 203 40 216 l 30 215 b 6 194 22 212 9 209 b 0 120 3 170 -1 145 b 0 -43 4 65 0 13 b 0 -98 0 -60 1 -79 b 4 -276 0 -157 6 -216 b 7 -456 4 -337 7 -397 b 66 -638 7 -523 22 -585 b 158 -724 94 -671 127 -697 b 318 -1011 246 -801 295 -899 b 321 -1044 321 -1021 321 -1032 b 312 -1152 321 -1080 312 -1116 b 317 -1192 312 -1165 314 -1179 b 323 -1223 320 -1202 311 -1220 z m 285 -376 b 121 -180 249 -289 173 -245 b 91 -105 104 -158 92 -135 b 288 -354 181 -144 288 -269 b 285 -376 288 -363 287 -370 z m 275 -657 b 111 -492 226 -589 163 -547 b 65 -376 78 -456 66 -418 b 71 -323 65 -360 68 -341 b 275 -657 164 -418 265 -504 z',\n },\n flag32ndDown: {\n x_min: -2.800802874905624,\n x_max: 268.09424409436605,\n y_min: -169.07698914551014,\n y_max: 829.4710740978672,\n ha: 998.5480632433773,\n o: 'm 323 1194 b 317 1164 311 1191 320 1174 b 312 1123 314 1151 312 1136 b 321 1015 312 1087 321 1051 b 318 982 321 1004 321 992 b 158 696 295 870 246 772 b 66 609 127 668 94 642 b 7 428 22 556 7 494 b 4 248 7 369 4 308 b -1 78 6 187 -10 137 b 0 14 0 59 0 32 l 0 -148 b 6 -223 0 -174 3 -199 b 30 -243 9 -238 22 -240 l 33 -243 b 45 -226 40 -245 40 -232 b 53 -204 48 -220 53 -212 b 151 -56 50 -131 98 -88 b 347 341 288 27 348 183 b 331 446 348 373 343 409 b 328 471 328 455 328 462 b 341 550 328 497 338 524 b 344 592 343 564 344 579 b 333 680 344 621 340 649 b 330 707 330 688 330 698 b 341 755 330 724 334 740 b 386 971 372 827 386 899 b 359 1155 387 1031 377 1093 b 351 1169 356 1159 354 1165 b 323 1194 344 1181 337 1198 z m 275 628 b 71 294 265 475 164 389 b 65 347 68 312 65 331 b 111 464 66 389 78 428 b 275 628 163 518 226 560 z m 285 347 b 288 325 287 341 288 334 b 91 76 288 240 181 115 b 121 151 92 107 104 130 b 285 347 173 216 249 261 z',\n },\n flag64thUp: {\n x_min: -4,\n x_max: 282,\n y_min: -823.5430338167067,\n y_max: 347,\n ha: 1170.5430338167066,\n o: 'm 350 -1185 b 380 -1162 364 -1189 374 -1175 b 406 -1022 399 -1119 406 -1071 b 359 -798 406 -945 384 -871 b 348 -756 353 -785 348 -772 b 350 -744 348 -753 350 -749 b 363 -621 356 -704 363 -664 b 360 -580 363 -608 363 -593 b 359 -560 359 -573 359 -567 b 373 -490 359 -536 366 -513 b 393 -346 386 -444 393 -395 b 387 -269 393 -320 390 -294 b 348 -127 382 -219 348 -173 b 351 -104 348 -120 348 -111 b 353 -65 351 -91 353 -78 b 341 37 353 -26 348 6 b 226 215 323 108 278 164 b 86 336 181 258 127 288 b 62 395 72 353 62 370 b 42 481 62 423 55 454 b 27 500 37 488 36 500 b 24 498 26 500 26 500 b -1 480 14 497 1 492 b -6 444 -4 467 -6 455 l -6 435 b -1 341 -1 403 -1 372 l -1 266 b 6 156 -1 230 0 193 b 13 35 12 117 13 75 l 13 -35 b 14 -85 13 -52 14 -68 b 29 -276 19 -150 33 -213 b 20 -448 24 -334 20 -392 b 24 -534 20 -477 22 -505 b 114 -708 30 -605 59 -664 b 197 -780 143 -732 171 -755 b 344 -1153 301 -884 341 -1011 b 343 -1172 344 -1159 343 -1166 b 350 -1185 343 -1176 344 -1182 z m 287 -88 b 62 193 186 -17 79 48 b 229 52 121 144 174 98 b 289 -33 256 29 274 -3 b 295 -56 294 -42 295 -49 b 287 -88 295 -66 292 -76 z m 298 -410 b 118 -235 238 -351 176 -295 b 76 -88 82 -197 78 -147 b 268 -252 137 -153 203 -202 b 330 -360 304 -279 330 -315 b 323 -402 330 -373 327 -387 b 311 -418 318 -413 315 -418 b 298 -410 307 -418 302 -415 z m 300 -691 b 117 -508 243 -616 168 -575 b 82 -408 94 -480 82 -448 b 84 -379 82 -397 82 -387 b 259 -553 135 -451 206 -492 b 301 -667 287 -583 301 -619 b 300 -691 301 -674 301 -683 z',\n },\n flag64thDown: {\n x_min: -5,\n x_max: 281,\n y_min: -375,\n y_max: 795.5430338167066,\n ha: 1170.5430338167066,\n o: 'm 348 1145 b 341 1132 343 1142 341 1136 b 343 1113 341 1126 343 1119 b 196 740 340 971 300 844 b 112 668 170 714 141 691 b 23 494 58 624 29 564 b 19 408 20 465 19 436 b 27 236 19 351 23 294 b 13 45 32 173 17 109 b 12 -6 13 27 12 12 l 12 -75 b 4 -196 12 -115 10 -157 b -3 -307 -1 -233 -3 -271 l -3 -382 b -7 -475 -3 -412 -3 -444 l -7 -484 b -3 -520 -7 -495 -6 -507 b 23 -539 0 -533 13 -537 b 26 -540 24 -540 24 -540 b 40 -521 35 -540 36 -528 b 60 -435 53 -494 60 -464 b 85 -376 60 -410 71 -393 b 225 -255 125 -328 180 -298 b 340 -78 276 -204 321 -148 b 351 24 347 -46 351 -14 b 350 63 351 37 350 50 b 347 86 347 71 347 79 b 386 229 347 132 380 179 b 392 305 389 253 392 279 b 372 449 392 354 384 403 b 357 520 364 472 357 495 b 359 540 357 527 357 533 b 361 580 361 553 361 567 b 348 704 361 624 354 664 b 347 716 348 708 347 713 b 357 757 347 732 351 744 b 405 982 383 831 405 904 b 379 1122 405 1031 397 1079 b 348 1145 373 1135 363 1149 z m 298 651 b 300 626 300 642 300 634 b 258 513 300 579 285 543 b 82 338 204 452 134 410 b 81 367 81 347 81 357 b 115 468 81 408 92 439 b 298 651 167 534 242 576 z m 297 370 b 310 377 301 374 305 377 b 321 361 314 377 317 373 b 328 320 325 347 328 333 b 266 212 328 275 302 239 b 75 48 202 161 135 112 b 117 194 76 107 81 157 b 297 370 174 255 236 311 z m 285 48 b 294 16 291 36 294 26 b 288 -7 294 9 292 1 b 228 -92 272 -37 255 -69 b 60 -233 173 -138 120 -184 b 285 48 78 -88 184 -23 z',\n },\n flag128thUp: {\n x_min: 0,\n x_max: 252,\n y_min: -804,\n y_max: 530,\n ha: 1334,\n o: 'm 298 -1158 b 328 -1126 312 -1158 320 -1139 b 330 -1116 330 -1123 330 -1119 b 347 -996 343 -1076 347 -1037 b 328 -837 347 -943 338 -890 b 320 -778 324 -816 320 -798 b 330 -733 320 -763 323 -749 b 340 -665 338 -714 337 -688 b 341 -645 340 -660 341 -652 b 333 -534 341 -609 333 -572 b 343 -471 333 -513 334 -492 b 361 -366 356 -436 361 -402 b 331 -202 361 -311 348 -256 b 328 -187 330 -197 328 -193 b 331 -179 328 -184 328 -181 b 363 -55 353 -137 363 -96 b 337 79 363 -12 351 33 b 327 114 333 92 327 104 b 344 144 327 124 331 132 b 359 174 353 150 357 163 b 361 228 360 193 361 210 b 243 517 361 337 325 435 b 147 596 213 546 179 569 b 75 708 111 626 75 655 b 62 744 75 723 68 733 b 50 763 58 752 58 763 b 46 762 49 763 48 762 b 17 742 36 757 22 757 b 0 697 14 726 0 711 b 1 595 0 662 3 631 b 0 469 0 552 0 511 b 1 429 0 456 0 442 b 22 289 6 382 22 337 b 24 128 22 238 24 184 b 22 66 24 108 23 86 b 19 -19 20 37 19 10 b 20 -132 19 -56 20 -95 b 13 -276 20 -180 19 -229 b 9 -359 10 -304 9 -330 b 12 -487 9 -402 12 -445 b 56 -582 12 -526 29 -554 b 197 -742 107 -632 160 -681 b 288 -1100 265 -851 276 -976 b 288 -1122 288 -1107 287 -1115 b 287 -1145 289 -1129 287 -1138 b 298 -1158 287 -1153 288 -1158 z m 304 150 b 75 475 229 256 112 334 b 304 150 233 357 305 287 z m 271 -73 b 127 72 233 -14 179 26 b 81 167 96 98 81 127 b 84 194 81 176 82 184 b 271 -73 148 102 242 39 z m 279 -396 b 132 -223 233 -330 180 -279 b 81 -112 104 -192 81 -156 b 82 -91 81 -105 81 -98 b 279 -396 167 -125 269 -281 z m 249 -609 b 69 -357 197 -520 88 -471 b 249 -609 131 -441 229 -498 z',\n },\n flag128thDown: {\n x_min: -0.8888888888888888,\n x_max: 252,\n y_min: -580,\n y_max: 754,\n ha: 1334,\n o: 'm 298 1086 b 287 1073 288 1086 287 1081 b 288 1050 287 1066 289 1057 b 288 1028 287 1043 288 1035 b 197 670 276 904 265 779 b 56 510 160 609 107 560 b 12 415 29 482 12 454 b 9 287 12 373 9 330 b 13 204 9 258 10 232 b 20 60 19 157 20 108 b 19 -53 20 23 19 -16 b 22 -138 19 -82 20 -109 b 24 -200 23 -158 24 -180 b 22 -361 24 -256 22 -310 b 1 -501 22 -409 6 -454 b 0 -541 0 -514 0 -528 b 0 -667 0 -583 -3 -624 b 0 -809 0 -675 -3 -791 b 46 -834 4 -825 36 -829 b 50 -835 48 -834 49 -835 b 62 -816 58 -835 58 -824 b 75 -780 68 -805 75 -795 b 147 -668 75 -727 111 -698 b 243 -589 179 -641 213 -618 b 361 -300 325 -507 361 -409 b 359 -246 361 -282 360 -265 b 344 -216 357 -235 353 -222 b 327 -186 331 -204 327 -196 b 337 -151 327 -176 333 -164 b 363 -17 351 -105 363 -60 b 331 107 363 24 353 65 b 328 115 328 109 328 112 b 331 130 328 121 330 125 b 361 294 348 184 361 239 b 343 399 361 330 356 364 b 333 462 334 420 333 441 b 341 573 333 500 341 537 b 340 593 341 580 340 588 b 330 661 337 616 338 642 b 320 706 323 677 320 691 b 328 765 320 726 324 744 b 347 924 338 818 347 871 b 330 1044 347 965 343 1004 b 328 1054 330 1047 330 1051 b 298 1086 320 1067 312 1086 z m 249 537 b 69 285 229 426 131 369 b 249 537 88 399 197 448 z m 279 324 b 82 19 269 209 167 53 b 81 40 81 26 81 33 b 132 151 81 84 104 120 b 279 324 180 207 233 258 z m 271 1 b 84 -266 242 -111 148 -174 b 81 -239 82 -256 81 -248 b 127 -144 81 -199 96 -170 b 271 1 179 -98 233 -58 z m 304 -222 b 75 -547 305 -359 233 -429 b 304 -222 112 -406 229 -328 z',\n },\n accidentalFlat: {\n x_min: 1,\n x_max: 209,\n y_min: -208,\n y_max: 472,\n ha: 680,\n o: 'm 29 -300 b 46 -289 33 -300 39 -297 b 107 -243 65 -274 86 -258 b 301 127 233 -153 301 -30 b 298 186 301 147 301 166 b 190 297 291 256 251 297 b 147 289 177 297 163 294 b 86 265 127 284 107 274 l 85 264 l 85 301 b 91 465 85 356 88 410 b 94 559 91 497 94 527 b 84 651 94 589 91 621 b 66 680 81 661 81 680 l 65 680 b 37 645 49 678 37 665 b 33 523 36 605 32 563 l 33 478 b 26 223 33 393 29 308 b 1 -141 22 101 1 -19 b 17 -287 1 -189 4 -239 b 29 -300 20 -295 23 -300 z m 68 -105 b 76 12 71 -68 72 -29 b 81 107 79 43 81 75 l 86 109 b 171 135 114 121 141 135 b 204 128 181 135 193 132 b 238 92 228 120 239 108 b 230 63 238 84 236 75 b 68 -105 193 -10 132 -59 z',\n },\n accidentalNatural: {\n x_min: 0,\n x_max: 213.5,\n y_min: -456,\n y_max: 462,\n ha: 918,\n o: 'm 255 -657 b 281 -624 271 -657 275 -636 b 285 -599 282 -615 285 -608 b 292 -300 288 -500 289 -400 b 289 -161 292 -253 289 -207 b 300 128 292 -65 297 32 b 304 168 300 128 302 150 l 304 173 l 305 190 l 305 199 l 307 225 b 304 259 307 229 310 246 b 272 298 297 274 302 305 b 63 266 204 279 134 272 b 72 514 68 348 72 432 b 71 595 72 541 72 567 b 56 665 71 619 66 642 b 17 579 9 651 17 608 b 3 144 19 433 7 289 b 0 -7 1 94 0 43 b 3 -134 0 -50 1 -92 b 7 -219 3 -163 7 -192 b 35 -251 7 -243 17 -251 b 49 -249 39 -251 43 -251 l 223 -223 l 230 -222 l 230 -359 b 223 -516 230 -410 223 -464 b 236 -619 223 -550 226 -585 b 255 -657 240 -634 236 -657 z m 58 -63 b 55 81 56 -14 53 33 l 56 99 b 85 99 65 99 75 98 b 232 108 134 104 183 107 l 240 109 l 236 66 b 232 -48 235 29 232 -10 b 58 -81 174 -63 115 -73 z',\n },\n accidentalSharp: {\n x_min: -22,\n x_max: 390,\n y_min: -384,\n y_max: 383,\n ha: 767,\n o: 'm 202 -553 b 219 -526 213 -552 216 -536 b 226 -471 225 -507 226 -488 b 225 -425 226 -455 225 -441 b 226 -392 225 -415 225 -402 b 233 -305 229 -363 232 -334 l 297 -292 b 331 -469 300 -353 311 -412 b 347 -485 333 -477 338 -485 b 363 -469 356 -487 359 -477 b 374 -418 373 -454 374 -435 b 376 -382 376 -405 376 -393 b 372 -276 376 -347 373 -311 l 455 -259 b 550 -156 534 -243 544 -232 b 550 -109 550 -137 552 -124 b 526 -78 549 -91 541 -78 l 523 -78 b 507 -79 517 -78 513 -78 b 403 -101 474 -88 438 -95 l 379 -105 b 382 -42 380 -85 380 -63 b 384 96 383 4 384 50 b 503 131 425 107 464 118 b 549 173 524 138 543 150 b 562 249 554 199 562 223 b 554 294 562 264 560 279 b 536 315 549 308 544 315 l 533 315 b 517 312 528 315 523 315 b 382 266 472 294 428 279 l 377 344 b 359 531 374 406 372 469 b 348 552 356 539 357 552 l 347 552 l 343 552 b 315 528 331 549 317 544 l 315 501 b 320 249 315 416 318 333 l 243 232 b 239 361 243 275 242 318 b 226 425 238 383 238 403 b 199 359 194 409 199 382 b 193 223 196 312 194 268 b 72 202 153 215 112 209 b 4 118 13 192 4 183 b 10 66 0 102 12 84 b 33 29 7 39 14 30 b 48 32 37 29 42 30 b 187 55 95 39 141 46 l 183 -75 b 176 -145 181 -99 179 -122 b 16 -179 122 -156 69 -166 b -32 -232 -14 -186 -32 -197 b -17 -331 -32 -266 -19 -298 b -1 -356 -17 -347 -13 -354 b 12 -353 1 -356 6 -354 b 167 -320 63 -341 115 -331 b 166 -377 166 -338 166 -357 b 189 -526 166 -428 171 -477 b 202 -553 192 -536 189 -553 z m 240 -132 b 243 -37 242 -101 242 -69 b 245 65 245 -3 245 30 b 315 79 269 69 292 73 b 301 -120 308 13 305 -53 z',\n },\n accidentalDoubleSharp: {\n x_min: 0,\n x_max: 287,\n y_min: -159,\n y_max: 159,\n ha: 318,\n o: 'm 84 -229 b 107 -216 91 -229 98 -225 b 200 -125 138 -186 167 -154 b 232 -95 212 -115 222 -105 b 347 -189 271 -125 310 -157 b 370 -200 356 -196 363 -200 b 396 -179 380 -200 389 -192 b 412 -102 410 -154 406 -125 b 377 -27 410 -69 400 -46 l 325 14 b 402 91 350 42 374 68 b 413 127 410 96 413 107 b 382 200 409 148 397 176 b 350 229 370 220 360 229 b 314 210 340 229 328 223 b 274 174 300 199 285 187 b 212 104 252 151 232 128 b 92 187 173 132 132 161 b 78 193 86 192 82 193 b 68 190 75 193 72 193 b 48 179 62 186 53 187 b 40 137 43 168 40 154 b 81 16 40 92 56 32 b 107 -3 89 10 98 4 b 14 -94 76 -32 45 -62 b 0 -124 6 -102 0 -114 b 12 -154 0 -134 3 -144 b 62 -215 26 -176 48 -193 b 84 -229 69 -225 76 -229 z',\n },\n accidentalDoubleFlat: {\n x_min: 0,\n x_max: 359,\n y_min: -220,\n y_max: 446,\n ha: 666,\n o: 'm 43 -317 b 72 -301 55 -317 63 -310 b 160 -186 108 -268 134 -226 b 236 -60 186 -145 212 -102 b 233 -131 235 -85 233 -108 b 239 -220 233 -161 235 -190 b 259 -246 240 -233 239 -240 b 301 -228 284 -252 291 -238 b 465 -7 369 -163 416 -85 b 517 173 500 48 517 108 b 451 307 517 229 505 284 b 409 315 436 312 422 315 b 331 287 382 315 356 305 b 311 274 324 282 320 274 l 310 274 l 310 566 b 305 621 310 585 312 603 b 294 642 301 628 305 642 l 292 642 b 264 622 282 641 266 636 b 253 575 259 606 256 590 b 246 418 248 523 246 471 b 248 243 246 360 248 302 l 248 187 b 164 238 220 225 193 238 b 85 213 140 238 112 226 b 84 229 85 220 84 225 b 86 315 85 258 86 287 b 81 528 86 386 82 458 b 71 582 81 547 78 566 b 56 603 66 590 68 603 l 53 603 b 23 580 40 600 26 598 b 19 537 20 566 19 552 b 20 514 19 530 19 521 b 26 390 24 472 26 432 b 14 66 26 282 16 174 b 0 -168 13 -12 0 -91 b 12 -279 0 -206 3 -242 b 30 -314 16 -294 14 -308 b 43 -317 35 -317 39 -317 z m 301 -72 b 302 7 302 -45 302 -19 l 302 86 b 351 158 304 121 321 145 b 383 166 361 163 373 166 b 435 143 402 166 419 157 b 445 127 441 138 445 132 b 441 114 445 122 444 118 b 301 -72 397 49 354 -14 z m 75 -147 b 73 30 75 -86 75 -29 b 118 82 73 62 92 76 b 132 84 124 84 128 84 b 190 52 156 84 174 69 b 193 40 192 49 193 45 b 192 33 193 37 193 35 b 75 -147 157 -30 125 -95 z',\n },\n accidentalParensLeft: {\n x_min: 0,\n x_max: 130.18934911242604,\n y_min: -270,\n y_max: 267.6082500723851,\n ha: 537.6082500723851,\n o: 'm 107 -389 b 127 -374 114 -389 120 -384 b 141 -347 132 -367 137 -357 b 151 -294 148 -330 151 -311 b 122 -207 151 -265 141 -236 b 63 -65 94 -164 72 -117 b 59 -10 60 -46 59 -27 b 145 223 59 78 94 153 b 187 354 176 262 189 305 b 177 384 187 364 190 380 b 143 373 166 387 153 383 b 124 354 137 367 130 361 b 0 -35 33 240 0 108 l 0 -92 b 85 -372 4 -193 27 -287 b 107 -389 92 -383 99 -389 z',\n },\n accidentalParensRight: {\n x_min: -0.4444444444444445,\n x_max: 139,\n y_min: -275,\n y_max: 277,\n ha: 552,\n o: 'm 58 -396 b 96 -354 75 -396 85 -370 b 200 13 168 -238 200 -111 b 153 268 200 109 184 190 b 49 392 131 320 101 364 b 26 399 40 397 33 399 b 0 366 10 399 0 387 b 0 318 -1 350 0 334 l 0 291 b 27 238 -3 266 7 253 b 143 9 105 180 143 98 b 141 -20 143 -1 143 -10 b 63 -225 135 -92 108 -164 b 36 -307 45 -251 36 -278 b 40 -344 36 -320 37 -331 b 42 -356 42 -347 42 -351 b 58 -396 42 -374 37 -396 z',\n },\n accidentalQuarterToneFlatStein: {\n x_min: 0,\n x_max: 208,\n y_min: -240,\n y_max: 440,\n ha: 680,\n o: 'm 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z',\n },\n accidentalThreeQuarterTonesFlatZimmermann: {\n x_min: 0,\n x_max: 422,\n y_min: -240,\n y_max: 440,\n ha: 680,\n o: 'm 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 336 -346 b 353 -336 340 -346 346 -343 b 413 -289 372 -320 393 -304 b 608 81 540 -199 608 -76 b 605 140 608 101 608 120 b 497 251 598 210 557 251 b 454 243 484 251 469 248 b 393 219 433 238 413 228 l 392 217 l 392 255 b 397 419 392 310 395 364 b 400 513 397 451 400 481 b 390 605 400 543 397 575 b 373 634 387 615 387 634 l 372 634 b 344 599 356 632 344 619 b 340 477 343 559 338 517 l 340 432 b 333 177 340 347 336 262 b 308 -187 328 55 308 -65 b 324 -333 308 -235 311 -285 b 336 -346 327 -341 330 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z m 374 -151 b 383 -35 377 -114 379 -75 b 387 60 386 -3 387 29 l 393 63 b 478 89 420 75 448 89 b 511 82 488 89 500 86 b 544 46 534 73 546 62 b 537 17 544 37 543 29 b 374 -151 500 -56 439 -105 z',\n },\n accidentalQuarterToneSharpStein: {\n x_min: 0,\n x_max: 300,\n y_min: -338,\n y_max: 351,\n ha: 689,\n o: 'm 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 l 35 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z',\n },\n accidentalThreeQuarterTonesSharpStein: {\n x_min: -23,\n x_max: 388,\n y_min: -373,\n y_max: 445,\n ha: 818,\n o: 'm 114 -537 b 138 -475 137 -518 138 -495 b 147 -292 138 -413 144 -353 b 212 -278 168 -287 190 -282 b 243 -444 215 -333 225 -389 b 261 -467 248 -454 251 -465 b 281 -446 272 -469 276 -455 b 292 -347 292 -416 288 -384 b 288 -262 289 -320 288 -291 l 374 -245 b 376 -311 374 -266 374 -288 b 390 -456 379 -357 379 -405 b 416 -396 412 -436 415 -418 b 423 -287 420 -360 423 -323 b 422 -235 423 -269 423 -252 b 451 -229 432 -233 441 -232 b 547 -98 524 -215 547 -199 l 547 -89 b 521 -49 546 -59 540 -49 b 497 -52 516 -49 507 -49 b 418 -68 469 -56 444 -63 b 423 52 419 -29 422 12 b 426 140 425 81 425 109 b 495 160 449 145 472 153 b 552 219 526 170 546 189 b 559 279 557 240 553 262 b 530 341 559 324 552 341 b 490 331 520 341 507 338 b 432 311 471 324 452 318 b 449 552 436 392 442 471 b 452 588 451 563 452 575 b 446 622 452 599 451 611 b 436 641 444 629 448 641 b 418 628 428 641 420 636 b 409 602 413 621 410 611 b 386 297 396 501 390 399 b 297 274 356 288 327 281 b 291 403 295 317 294 360 b 274 550 288 452 284 501 b 259 569 271 564 265 569 b 240 559 253 569 248 563 b 230 537 232 554 230 546 l 230 488 b 233 369 230 448 232 409 b 236 261 236 333 238 297 b 156 245 210 255 183 251 b 154 396 154 295 154 346 b 150 416 154 403 153 410 b 140 438 145 423 150 438 l 138 438 b 118 413 128 436 118 428 b 112 354 118 393 114 374 b 109 238 109 315 109 276 b 49 226 89 233 69 230 b 3 163 16 222 3 202 b 7 91 3 138 9 114 b 29 62 7 69 13 62 b 39 63 32 62 35 63 b 104 73 60 66 82 71 b 101 -10 104 46 102 17 l 92 -132 l 10 -150 b -33 -204 -19 -157 -33 -170 b -19 -310 -32 -240 -19 -274 b -6 -324 -19 -321 -13 -324 b 6 -323 -1 -324 1 -324 b 82 -307 32 -317 58 -311 b 81 -376 82 -330 81 -353 b 114 -537 81 -431 94 -484 z m 294 -92 b 297 -37 295 -73 295 -56 b 300 49 300 -9 300 20 l 300 108 b 379 127 325 114 353 120 b 374 -76 376 59 374 -9 b 294 -92 347 -82 320 -86 z m 154 -120 b 157 20 154 -73 156 -26 b 158 82 158 40 158 62 b 230 95 183 86 206 89 b 225 0 229 63 226 32 b 217 -107 223 -35 220 -71 z',\n },\n accidentalBuyukMucennebFlat: {\n x_min: 1.8692317181955784,\n x_max: 287,\n y_min: -248,\n y_max: 432.4720949426819,\n ha: 680.4720949426819,\n o: 'm 410 128 b 302 239 403 199 363 239 b 259 232 289 239 275 236 b 199 207 239 226 219 216 l 197 206 l 197 243 l 197 251 b 347 317 248 272 298 295 b 376 347 360 324 372 334 b 389 435 387 376 393 405 b 348 454 384 462 377 465 b 202 387 300 432 251 409 b 203 408 203 395 203 402 l 203 431 b 347 490 252 451 300 469 b 376 517 360 495 372 505 b 389 599 387 546 393 572 b 348 616 384 625 377 628 l 203 556 b 196 593 202 569 199 582 b 179 622 193 603 193 622 l 177 622 b 150 588 161 621 150 608 b 147 533 150 570 148 552 b 29 488 108 517 69 503 b 3 455 12 482 3 472 b 12 353 1 422 9 389 b 145 408 56 372 101 389 b 145 363 145 392 145 377 l 29 315 b 3 281 12 310 3 298 b 12 170 1 245 9 209 l 141 226 b 138 166 140 206 138 186 b 114 -199 134 43 115 -76 b 130 -344 114 -246 117 -297 b 141 -357 132 -353 135 -357 b 158 -347 145 -357 151 -354 b 219 -301 177 -331 199 -315 b 413 69 346 -210 413 -88 b 410 128 413 89 413 108 z m 350 35 b 343 6 350 26 348 17 b 180 -163 308 -69 245 -117 b 189 -46 183 -125 184 -86 b 193 49 192 -14 193 17 l 199 52 b 284 78 226 63 253 78 b 317 71 294 78 305 75 b 350 35 340 62 351 50 z',\n },\n accidentalBakiyeFlat: {\n x_min: 1.8692317181955784,\n x_max: 287,\n y_min: -236,\n y_max: 444,\n ha: 680,\n o: 'm 141 -340 b 158 -330 145 -340 151 -337 b 219 -284 177 -314 199 -298 b 413 86 346 -193 413 -71 b 410 145 413 107 413 125 b 302 256 403 216 363 256 b 259 249 289 256 275 253 b 199 225 239 243 219 233 l 197 223 l 197 261 b 199 334 197 285 199 310 b 347 406 249 357 298 382 b 376 439 360 413 372 425 b 390 516 384 465 390 490 b 389 537 390 523 390 530 b 372 564 384 556 382 564 b 348 557 367 564 359 562 b 204 487 300 537 253 510 b 206 518 206 497 206 507 b 196 611 206 549 203 580 b 179 639 193 621 193 639 l 177 639 b 150 605 161 638 150 625 b 145 482 148 564 144 523 l 145 458 b 29 405 107 439 68 420 b 3 366 12 397 3 386 b 12 243 1 325 9 287 b 143 307 56 265 99 285 l 138 183 b 114 -181 134 60 114 -59 b 130 -327 114 -229 117 -279 b 141 -340 132 -336 135 -340 z m 180 -145 b 189 -29 183 -108 184 -69 b 193 66 192 3 193 35 l 199 69 b 284 95 226 81 253 95 b 317 88 294 95 305 92 b 350 52 340 79 351 68 b 343 23 350 43 348 35 b 180 -145 305 -50 245 -99 z',\n },\n accidentalKomaSharp: {\n x_min: 0,\n x_max: 300,\n y_min: -338,\n y_max: 351,\n ha: 689,\n o: 'm 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 l 35 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z',\n },\n accidentalKucukMucennebSharp: {\n x_min: -0.15206251809627475,\n x_max: 359,\n y_min: -420,\n y_max: 343,\n ha: 763,\n o: 'm 236 -605 b 262 -543 256 -583 261 -564 b 269 -423 268 -503 269 -464 b 266 -340 269 -396 268 -367 l 361 -318 b 405 -276 384 -312 399 -298 b 413 -189 412 -248 416 -219 b 395 -164 412 -171 409 -164 b 382 -166 392 -164 387 -164 b 264 -193 343 -176 304 -184 b 269 -102 265 -163 268 -132 b 454 -62 331 -89 392 -78 b 501 -23 477 -58 494 -45 b 517 62 511 6 517 33 b 487 112 517 95 513 112 b 471 111 482 112 477 112 b 274 66 406 95 340 81 b 276 138 275 91 276 114 b 350 154 301 144 325 148 b 402 203 377 160 396 176 b 412 284 408 230 412 258 b 392 311 412 302 406 311 b 372 308 386 311 379 310 b 287 291 343 301 314 297 l 295 405 b 298 441 297 416 298 428 b 292 475 298 452 297 464 b 282 494 289 482 294 494 b 264 481 274 494 266 490 b 255 455 259 474 256 464 b 239 282 248 397 243 340 b 148 268 209 278 179 274 b 62 164 62 252 62 253 l 62 132 b 79 108 60 117 65 108 l 86 108 l 230 130 b 229 92 230 118 229 105 b 228 56 228 79 228 68 b 66 20 173 43 120 32 b 0 -59 6 7 3 1 l 0 -138 b 14 -160 -1 -156 4 -160 b 27 -158 19 -160 23 -160 b 222 -112 92 -141 157 -127 b 220 -203 220 -143 220 -173 b 147 -217 196 -207 171 -213 b 89 -288 92 -228 89 -229 b 95 -347 85 -305 96 -325 b 112 -374 92 -366 98 -374 b 125 -373 117 -374 121 -374 l 220 -351 b 222 -458 220 -386 220 -422 b 236 -605 223 -504 225 -552 z',\n },\n accidentalKoron: {\n x_min: 0,\n x_max: 303,\n y_min: -462.4598053473055,\n y_max: 180,\n ha: 642.4598053473055,\n o: 'm 59 -665 b 72 -649 69 -662 72 -657 b 69 -626 72 -642 69 -634 b 69 -622 69 -625 69 -624 l 69 -600 b 55 -156 60 -456 68 -311 b 86 -170 66 -166 76 -170 b 112 -163 95 -170 104 -166 b 390 -35 204 -120 298 -78 b 436 -1 409 -27 436 -27 b 396 46 436 22 413 33 l 382 55 b 46 243 271 121 157 179 b 12 259 29 253 17 259 b 0 219 1 259 0 248 b 3 -372 0 22 3 -176 b 6 -616 3 -454 6 -536 b 59 -665 6 -638 40 -671 z m 55 199 b 363 24 156 141 258 84 b 55 -118 259 -24 160 -69 z',\n },\n accidentalSori: {\n x_min: 0,\n x_max: 434,\n y_min: -295,\n y_max: 325,\n ha: 620,\n o: 'm 194 -425 b 196 -409 194 -418 196 -413 b 194 -194 196 -337 196 -266 b 364 -127 251 -171 308 -150 b 361 -321 363 -192 364 -256 b 410 -387 360 -357 373 -377 b 413 -373 412 -382 413 -377 b 418 -114 418 -287 418 -200 l 418 -105 b 595 -35 477 -82 536 -59 b 625 0 612 -27 625 -22 b 593 48 624 23 618 39 l 419 117 b 423 370 419 202 423 285 b 426 403 423 382 426 393 b 418 436 426 415 425 426 b 384 468 409 449 399 468 b 369 448 370 468 369 459 b 369 436 369 444 369 441 l 369 428 l 369 423 b 367 138 369 328 367 233 l 353 143 l 192 207 l 192 367 b 173 406 192 383 184 396 b 151 422 167 413 160 422 b 144 420 148 422 147 422 b 137 403 138 416 137 410 l 137 392 l 137 229 b 33 271 102 243 68 256 b 13 276 26 274 19 276 b 0 262 6 276 0 272 b 35 199 1 239 0 212 l 138 160 b 140 -148 138 58 138 -45 b 56 -181 111 -158 84 -170 b 24 -215 35 -189 24 -199 b 29 -235 24 -220 26 -228 b 49 -253 35 -249 42 -253 b 78 -240 59 -253 69 -243 b 140 -216 98 -233 120 -225 l 140 -356 b 194 -425 140 -406 141 -406 z m 194 -125 b 193 138 194 -37 193 50 b 315 89 233 122 275 107 b 366 71 333 84 350 76 b 364 -58 366 27 366 -16 b 194 -125 308 -81 251 -104 z m 419 49 l 526 7 l 485 -10 l 419 -36 z',\n },\n articAccentAbove: {\n x_min: 0,\n x_max: 425,\n y_min: 0,\n y_max: 326,\n ha: 326,\n o: 'm 27 1 b 78 12 46 0 62 6 b 347 112 168 45 253 91 b 521 184 409 128 459 167 b 608 259 557 194 589 220 b 612 274 611 265 612 271 b 598 292 612 281 608 287 b 477 347 559 312 518 331 b 176 465 374 384 275 425 b 156 469 168 468 161 469 b 125 456 145 469 137 465 b 53 370 96 432 78 399 b 45 353 48 363 45 357 b 68 333 45 344 52 337 b 360 225 166 298 262 261 b 192 154 302 203 249 171 b 13 36 120 132 53 105 b 0 13 9 29 0 22 l 0 9 b 16 0 3 1 10 0 l 26 0 b 27 1 27 0 27 0 z',\n },\n articAccentBelow: {\n x_min: 0,\n x_max: 425,\n y_min: -326,\n y_max: 0,\n ha: 326,\n o: 'm 26 -469 l 27 -469 b 78 -458 46 -469 62 -464 b 347 -357 168 -426 253 -380 b 521 -285 409 -341 459 -302 b 608 -210 557 -276 589 -249 b 612 -196 611 -204 612 -200 b 598 -179 612 -189 608 -183 b 477 -122 559 -157 518 -138 b 176 -4 374 -85 275 -45 b 156 0 168 -1 161 0 b 125 -13 145 0 137 -4 b 53 -99 96 -37 78 -71 b 45 -117 48 -107 45 -112 b 68 -137 45 -125 52 -132 b 360 -245 166 -171 262 -209 b 192 -315 302 -266 249 -300 b 13 -433 120 -337 53 -366 b 0 -456 9 -442 0 -448 l 0 -461 b 16 -469 3 -468 10 -469 z',\n },\n articTenutoAbove: {\n x_min: 0.35192668236256364,\n x_max: 471.1238660564107,\n y_min: 0,\n y_max: 56,\n ha: 56,\n o: 'm 137 0 b 197 1 156 0 179 1 b 409 6 268 1 338 6 b 482 4 432 6 459 6 b 556 0 508 3 534 0 b 651 10 588 0 621 3 b 678 27 662 12 678 10 b 654 59 680 45 672 53 b 511 75 606 73 560 73 b 255 81 426 78 341 81 b 160 79 222 81 193 79 l 36 79 b 1 71 24 78 7 85 b 19 32 -3 56 9 43 b 45 16 26 24 36 20 b 137 0 76 3 108 0 z',\n },\n articTenutoBelow: {\n x_min: 0.35192668236256364,\n x_max: 471.1238660564107,\n y_min: -59,\n y_max: -3,\n ha: 56,\n o: 'm 137 -85 b 197 -84 156 -85 179 -84 b 409 -79 268 -84 338 -79 b 482 -81 432 -79 459 -79 b 556 -85 508 -82 534 -85 b 651 -75 588 -85 621 -82 b 678 -58 662 -73 678 -75 b 654 -26 680 -40 672 -32 b 511 -10 606 -12 560 -12 b 255 -4 426 -7 341 -4 b 160 -6 222 -4 193 -6 l 36 -6 b 1 -14 24 -7 7 0 b 19 -53 -3 -29 9 -42 b 45 -69 26 -60 36 -65 b 137 -85 76 -82 108 -85 z',\n },\n articStaccatoAbove: {\n x_min: 1.4151102965496913,\n x_max: 112,\n y_min: 0,\n y_max: 156,\n ha: 156,\n o: 'm 98 0 b 132 23 109 0 122 7 b 161 112 150 50 161 79 b 158 148 161 124 161 137 b 125 186 154 167 131 167 b 63 225 117 215 85 216 b 23 197 45 222 30 219 b 3 91 12 163 12 127 b 19 66 0 79 4 69 b 65 27 40 62 53 46 b 98 0 76 9 88 0 z',\n },\n articStaccatoBelow: {\n x_min: 1.4151102965496913,\n x_max: 112.08403222864916,\n y_min: -156,\n y_max: 0,\n ha: 156,\n o: 'm 132 -202 b 161 -112 151 -174 163 -145 b 158 -76 161 -101 161 -88 b 125 -39 153 -58 131 -58 b 63 0 115 -10 85 -9 b 23 -27 45 -3 30 -6 b 3 -134 12 -62 10 -98 b 19 -158 0 -145 4 -156 b 65 -197 40 -164 53 -179 b 98 -225 75 -216 88 -225 b 132 -202 109 -225 122 -217 z',\n },\n articStaccatissimoAbove: {\n x_min: 0,\n x_max: 139,\n y_min: 0,\n y_max: 411,\n ha: 411,\n o: 'm 104 0 b 144 115 143 29 138 75 b 197 423 158 217 180 320 b 200 454 199 433 200 444 b 181 540 200 482 193 513 b 112 592 167 573 141 592 b 55 567 92 592 72 585 b 0 490 32 546 3 527 l 0 484 b 27 279 14 416 14 347 b 84 20 43 193 52 104 b 96 0 86 13 92 6 z',\n },\n articStaccatissimoBelow: {\n x_min: 0,\n x_max: 139,\n y_min: -411,\n y_max: 0,\n ha: 411,\n o: 'm 88 -592 b 145 -567 108 -592 128 -585 b 200 -490 168 -546 197 -527 l 200 -484 b 173 -279 186 -416 186 -347 b 117 -20 157 -193 148 -104 b 104 0 114 -13 108 -6 l 96 0 b 56 -115 58 -29 62 -75 b 3 -423 42 -217 20 -320 b 0 -454 1 -433 0 -444 b 19 -540 0 -482 7 -513 b 88 -592 33 -573 59 -592 z',\n },\n articMarcatoAbove: {\n x_min: 0.04121419527862119,\n x_max: 396,\n y_min: 0,\n y_max: 328.0000000000001,\n ha: 328.0000000000001,\n o: 'm 477 0 b 510 13 488 0 500 6 b 570 124 546 40 563 81 b 547 183 570 147 560 166 b 356 422 487 265 405 330 b 346 442 354 429 350 436 l 346 444 b 318 465 340 456 330 464 l 312 469 b 274 449 294 480 284 461 b 242 413 262 438 253 425 b 56 196 177 343 112 274 b 1 56 26 154 13 105 b 27 20 -4 35 9 20 b 42 23 32 20 37 20 b 84 53 59 29 72 39 b 255 269 141 125 193 200 b 275 229 262 255 266 242 b 448 14 324 151 390 86 b 477 0 456 4 467 0 z',\n },\n articMarcatoBelow: {\n x_min: 0,\n x_max: 395.9587858047214,\n y_min: -328.0000000000001,\n y_max: 0,\n ha: 328.0000000000001,\n o: 'm 258 -469 b 297 -449 276 -480 287 -461 b 328 -413 308 -438 317 -425 b 514 -196 393 -343 458 -274 b 569 -56 544 -154 557 -105 b 543 -20 575 -35 562 -20 b 528 -23 539 -20 533 -20 b 487 -53 511 -29 498 -39 b 315 -269 429 -125 377 -200 b 295 -229 308 -255 304 -242 b 122 -14 246 -151 180 -86 b 94 0 114 -4 104 0 b 60 -13 82 0 71 -6 b 0 -124 24 -40 7 -81 b 23 -183 0 -147 10 -166 b 215 -422 84 -265 166 -330 b 225 -442 216 -429 220 -436 l 225 -444 b 252 -465 230 -456 240 -464 z',\n },\n fermataAbove: {\n x_min: -0.04550444040404433,\n x_max: 472,\n y_min: 2.015071727506986,\n y_max: 454,\n ha: 451.984928272493,\n o: 'm 39 10 b 78 108 66 37 71 73 b 163 311 92 181 111 252 b 284 423 199 353 239 392 b 373 458 312 444 340 454 b 433 431 395 458 410 446 b 603 153 530 361 596 276 b 595 121 603 144 595 131 l 595 88 b 602 50 596 75 589 55 b 639 73 619 43 631 60 b 651 102 645 82 648 92 b 667 194 660 132 662 163 b 680 278 671 222 672 248 b 560 567 680 386 638 481 b 396 654 508 625 452 649 b 291 632 364 654 325 644 b 161 526 235 613 200 566 b 4 249 85 446 26 357 b 4 174 0 222 -3 196 b 10 19 4 124 4 69 b 29 4 12 6 16 0 b 39 10 35 4 33 4 z m 338 37 b 370 40 350 36 357 36 b 380 75 387 40 380 43 b 389 94 382 79 382 85 b 356 132 389 111 374 122 b 269 154 328 147 300 156 b 225 125 252 154 228 157 b 261 48 222 81 232 56 b 338 37 287 40 312 40 z',\n },\n fermataBelow: {\n x_min: -0.310835055998654,\n x_max: 518.570567335755,\n y_min: -430,\n y_max: -0.9161449836506543,\n ha: 429.08385501634933,\n o: 'm 344 -615 b 500 -543 402 -602 452 -576 b 713 -253 605 -471 661 -364 b 746 -98 737 -204 750 -153 b 727 -59 744 -82 744 -59 b 688 -88 711 -59 694 -68 b 678 -109 687 -96 683 -102 b 562 -314 648 -183 611 -252 b 387 -439 516 -373 458 -416 b 328 -449 367 -446 347 -449 b 180 -386 274 -449 225 -423 b 69 -179 111 -330 69 -262 b 75 -121 69 -160 71 -141 b 84 -58 78 -101 84 -79 b 82 -39 84 -52 84 -45 b 68 -1 79 -26 82 -4 b 26 -32 49 0 33 -12 b 20 -52 24 -39 22 -45 b 0 -223 9 -107 -3 -161 b 141 -553 1 -348 27 -468 b 304 -619 192 -590 243 -619 b 344 -615 317 -619 330 -618 z m 415 -190 b 435 -157 429 -192 435 -184 b 308 -27 435 -86 379 -27 b 271 -46 287 -27 272 -35 b 269 -69 269 -55 269 -62 b 364 -183 269 -128 302 -170 z',\n },\n fermataLongAbove: {\n x_min: 0,\n x_max: 591.4911182523068,\n y_min: -6,\n y_max: 337.10134960318186,\n ha: 343.10134960318186,\n o: 'm 20 -9 b 36 14 29 -9 35 3 b 49 109 45 45 49 78 b 48 143 49 121 49 131 b 42 312 40 200 45 256 b 63 338 42 331 46 338 b 68 340 65 338 66 338 b 279 333 138 336 209 334 b 760 317 439 330 599 323 b 783 298 775 317 782 315 l 796 161 b 814 17 801 115 802 68 b 851 144 840 45 855 102 b 824 396 842 228 834 312 b 760 468 816 459 812 467 l 55 485 b 1 433 12 487 1 478 l 1 387 b 0 203 1 325 0 264 b 9 17 0 141 3 79 b 20 -9 9 7 6 -9 z m 403 3 b 439 6 413 3 425 4 b 477 42 464 9 474 22 b 478 62 478 49 478 55 l 478 84 b 465 160 478 109 478 135 b 449 173 461 167 459 173 b 354 105 386 179 354 156 b 359 71 354 95 356 84 b 360 65 360 69 360 66 b 403 3 372 14 373 3 z',\n },\n fermataLongBelow: {\n x_min: 0,\n x_max: 602,\n y_min: -335,\n y_max: 7,\n ha: 342,\n o: 'm 793 -482 b 851 -444 822 -482 842 -471 b 867 -357 860 -416 867 -387 b 865 -336 867 -350 867 -343 b 851 -189 858 -287 855 -238 b 832 -32 847 -135 840 -84 b 824 -17 832 -26 832 -17 l 822 -17 b 805 -30 816 -19 806 -20 b 798 -88 802 -50 798 -69 b 805 -292 798 -157 801 -225 b 772 -327 806 -318 801 -327 b 360 -324 635 -327 497 -325 b 78 -327 265 -323 171 -327 b 50 -304 59 -327 50 -320 l 50 -297 b 62 -187 55 -261 60 -225 b 71 -60 62 -144 71 -102 b 68 -20 71 -48 71 -33 b 53 10 66 -10 69 10 l 52 10 b 22 -22 37 9 24 -1 b 14 -121 17 -55 16 -89 b 0 -359 10 -200 0 -279 b 6 -452 0 -390 3 -420 b 42 -481 9 -478 20 -481 l 415 -481 l 415 -482 z m 409 -183 b 454 -179 420 -183 435 -181 b 505 -124 487 -176 504 -158 b 505 -89 507 -112 505 -101 b 507 -58 505 -79 507 -68 b 505 -42 507 -52 507 -48 b 485 -10 503 -29 501 -10 b 448 -9 472 -9 461 -9 b 380 -22 425 -9 402 -12 b 363 -46 372 -27 363 -35 l 363 -49 b 364 -114 363 -71 361 -94 b 409 -183 374 -168 377 -183 z',\n },\n fermataVeryLongAbove: {\n x_min: 0,\n x_max: 715,\n y_min: -14.096346766617495,\n y_max: 437,\n ha: 451.0963467666175,\n o: 'm 26 -20 b 42 -4 36 -22 39 -12 b 49 53 49 14 49 33 l 49 448 b 69 478 49 467 52 478 l 72 478 b 81 480 75 478 78 478 b 144 477 102 477 122 477 l 207 477 b 943 471 452 477 698 471 b 978 442 966 471 976 467 b 989 99 985 327 985 213 b 999 -19 991 60 995 22 b 1030 62 1028 6 1030 35 b 1021 507 1028 210 1025 359 b 1012 596 1021 537 1017 567 b 976 624 1009 618 998 624 b 507 626 819 624 662 625 b 46 629 353 628 200 629 b 7 590 19 629 7 618 b 0 101 7 428 0 264 b 16 -4 0 65 13 32 b 26 -20 17 -10 22 -19 z m 187 -9 b 207 30 206 -7 204 14 b 207 55 209 37 207 46 b 200 240 210 117 197 179 b 219 262 200 256 203 262 l 223 262 b 456 252 301 258 379 255 l 772 239 b 804 209 792 238 802 235 b 818 69 806 163 809 115 b 834 -4 821 46 816 19 b 857 56 852 13 857 35 b 851 183 857 99 858 141 b 827 360 841 242 841 301 b 786 390 821 383 809 389 b 189 409 588 403 387 402 b 153 377 163 409 153 400 b 173 27 153 259 150 143 b 187 -9 176 13 177 -9 z m 478 3 b 536 10 491 3 510 6 b 582 60 569 14 580 32 l 582 89 l 580 89 b 580 117 580 98 582 107 b 540 171 577 158 572 171 b 521 171 534 171 528 170 b 459 166 500 170 480 168 b 423 132 436 164 423 154 b 428 88 423 118 425 102 b 478 3 438 22 439 4 z',\n },\n fermataVeryLongBelow: {\n x_min: -0.012345679012345682,\n x_max: 686.4443937550029,\n y_min: -427,\n y_max: 30,\n ha: 457,\n o: 'm 56 -615 b 282 -612 132 -612 207 -613 b 924 -606 497 -608 710 -606 b 973 -570 953 -606 968 -593 b 988 -455 984 -533 991 -494 b 982 -262 984 -390 982 -327 b 976 -69 982 -197 981 -134 b 976 -14 975 -50 976 -33 b 966 43 976 4 975 23 b 940 20 953 37 943 35 b 933 -76 936 -12 933 -45 b 935 -121 933 -91 933 -107 b 940 -307 940 -183 940 -245 l 940 -435 b 919 -458 940 -451 935 -458 b 894 -459 910 -458 903 -458 b 206 -467 665 -461 435 -467 b 88 -467 167 -467 127 -468 b 45 -425 45 -467 42 -465 b 46 -400 46 -416 46 -408 b 43 -325 46 -376 43 -350 b 42 -59 42 -236 42 -148 b 22 17 42 -32 36 -6 b 0 -27 -1 7 0 -10 b 7 -420 0 -158 7 -289 l 7 -474 b 16 -579 7 -510 7 -544 b 56 -615 22 -603 27 -615 z m 789 -390 b 835 -357 816 -392 829 -380 b 850 -256 844 -324 850 -291 b 848 -230 850 -248 850 -239 b 845 -135 845 -199 845 -167 l 845 -72 b 837 23 845 -40 848 -9 b 809 -27 809 14 809 -7 l 809 -222 b 788 -242 809 -238 805 -242 l 203 -229 b 180 -209 186 -229 180 -223 l 180 -160 b 179 -115 180 -145 180 -131 b 179 -50 177 -94 179 -72 b 163 24 179 -26 176 0 b 137 -6 145 19 140 10 b 134 -39 134 -17 134 -27 b 138 -105 134 -60 137 -82 l 138 -197 b 145 -343 138 -246 138 -294 b 179 -377 148 -364 151 -377 b 789 -390 383 -377 586 -380 z m 480 -164 b 566 -65 549 -164 566 -140 b 527 1 566 -10 564 1 b 436 -71 426 1 436 -9 l 436 -88 l 436 -143 b 454 -163 436 -153 439 -161 b 480 -164 464 -163 472 -164 z',\n },\n fermataShortAbove: {\n x_min: 0,\n x_max: 545,\n y_min: -18.08551453529649,\n y_max: 348,\n ha: 366.0855145352965,\n o: 'm 16 -26 b 36 -9 26 -27 30 -16 b 354 340 143 107 249 223 b 369 348 360 346 364 348 b 382 341 373 348 377 346 l 530 199 b 743 0 599 131 672 68 b 753 -7 747 -3 750 -7 b 762 -1 756 -7 759 -6 b 785 84 776 10 785 48 b 768 150 785 112 779 138 l 399 491 b 379 501 392 498 384 501 b 357 488 372 501 364 495 b 27 137 248 370 141 251 b 1 84 12 121 1 105 b 3 69 1 79 1 75 b 0 55 1 65 0 59 b 9 1 0 36 9 20 b 16 -26 10 -7 3 -22 z m 357 24 b 367 27 360 24 363 24 b 431 118 422 42 431 49 b 429 151 431 130 431 141 b 400 193 428 171 429 193 b 333 147 359 193 333 176 b 341 42 333 111 337 78 b 357 24 343 30 346 24 z',\n },\n fermataShortBelow: {\n x_min: 0,\n x_max: 565,\n y_min: -335,\n y_max: 10,\n ha: 345,\n o: 'm 386 -482 b 422 -455 395 -482 405 -474 b 732 -117 526 -343 631 -232 b 814 12 765 -79 799 -42 b 752 -22 780 14 768 -7 b 436 -320 645 -120 540 -219 b 419 -328 429 -325 425 -328 b 400 -318 413 -328 408 -325 b 35 0 279 -212 157 -105 b 16 14 29 4 23 14 b 7 12 13 14 10 14 b 0 -3 1 7 0 1 b 7 -23 0 -10 3 -17 b 20 -48 12 -30 14 -39 b 167 -238 60 -117 115 -177 b 351 -455 229 -310 289 -383 b 386 -482 367 -474 377 -482 z m 382 -213 b 406 -207 389 -213 396 -210 b 452 -156 431 -199 446 -180 b 461 -85 456 -132 458 -108 b 448 -32 461 -66 454 -49 b 418 -6 442 -12 431 -6 b 397 -9 410 -6 405 -7 b 348 -50 376 -14 350 -14 b 356 -170 348 -91 354 -130 b 382 -213 357 -199 363 -213 z',\n },\n breathMarkComma: {\n x_min: 0,\n x_max: 148,\n y_min: 0,\n y_max: 275,\n ha: 275,\n o: 'm 120 0 b 187 78 156 20 174 48 b 213 209 206 121 213 164 b 206 294 213 238 210 265 b 140 390 200 337 171 367 b 122 396 134 395 128 396 b 68 382 105 396 85 384 b 46 379 60 382 53 382 b 0 328 12 369 0 357 b 1 311 0 323 1 317 b 30 210 4 275 22 243 b 66 167 39 179 46 167 b 94 171 73 167 82 168 b 143 180 109 174 124 180 b 160 179 148 180 154 180 b 120 66 124 145 120 107 b 120 0 120 45 121 23 z',\n },\n breathMarkUpbow: {\n x_min: 0,\n x_max: 254,\n y_min: 0,\n y_max: 595,\n ha: 595,\n o: 'm 233 0 b 256 48 251 14 253 30 b 272 183 264 92 265 138 b 311 455 289 274 295 364 b 350 716 327 541 341 628 b 366 815 354 749 366 782 b 359 857 366 829 363 842 b 327 815 334 852 330 832 b 302 674 315 769 310 721 b 248 357 288 567 269 462 b 225 226 240 314 242 268 b 210 251 212 232 213 243 b 69 721 163 408 117 564 b 32 835 58 760 53 801 b 20 851 29 841 27 851 b 14 850 19 851 16 851 b 0 828 6 847 0 838 l 0 825 b 12 765 1 804 7 785 b 194 125 73 552 132 338 b 233 0 206 84 213 42 z',\n },\n caesura: {\n x_min: 0,\n x_max: 565.5831864753837,\n y_min: -0.09016994374947417,\n y_max: 562.4481112129314,\n ha: 562.5382811566809,\n o: 'm 0 76 b 49 122 24 92 37 107 b 444 613 180 287 305 455 b 528 770 484 660 518 708 b 531 792 530 778 531 785 b 524 808 531 799 530 805 b 490 792 513 815 498 802 b 390 683 456 756 420 721 b 48 262 275 543 164 400 b 0 76 0 207 7 145 z m 226 1 b 248 13 238 -4 243 7 l 353 137 b 759 638 490 302 632 464 b 814 805 795 688 819 740 b 779 786 796 805 788 796 b 628 609 724 732 678 668 b 310 242 523 485 416 363 b 217 69 265 190 217 140 b 222 30 217 58 219 45 b 222 23 222 29 220 26 b 220 12 222 20 220 16 b 226 1 220 7 222 3 z',\n },\n caesuraCurved: {\n x_min: 0,\n x_max: 386,\n y_min: -10,\n y_max: 584,\n ha: 594,\n o: 'm 180 -14 b 246 14 213 -13 230 0 b 347 144 288 52 315 99 b 526 471 420 246 488 350 b 556 671 546 537 556 603 b 543 798 556 713 553 756 b 504 837 537 822 521 828 b 490 841 500 840 494 841 b 472 832 482 841 477 838 b 406 678 436 785 406 737 b 410 638 406 665 408 652 b 425 511 419 595 425 553 b 315 186 425 395 387 287 b 180 -14 271 122 228 58 z m 14 24 b 49 39 29 24 40 32 b 120 114 76 60 99 85 b 216 276 156 166 184 223 b 317 626 281 384 317 501 b 315 664 317 639 317 651 b 301 773 314 701 311 737 b 262 808 295 795 278 808 b 245 799 256 808 249 805 b 170 641 209 750 170 706 b 171 621 170 634 170 628 b 177 511 176 585 177 549 b 114 229 177 415 160 320 b 0 26 79 161 42 95 b 14 24 6 24 10 24 z',\n },\n restMaxima: {\n x_min: 0,\n x_max: 366,\n y_min: -255,\n y_max: 255,\n ha: 510,\n o: 'm 397 -367 b 504 -343 436 -367 468 -347 b 518 -318 516 -341 518 -330 b 527 -30 518 -217 527 -117 b 526 33 527 -7 527 13 l 526 301 b 501 350 526 323 520 341 b 428 367 477 361 452 367 b 374 359 410 367 393 364 b 357 333 361 354 357 347 b 356 91 357 252 356 171 l 356 30 b 340 -307 357 -82 346 -194 b 397 -367 337 -354 350 -367 z m 46 -357 b 58 -356 49 -357 53 -357 b 154 -333 91 -351 121 -338 b 173 -305 168 -330 173 -320 l 173 302 b 132 356 173 330 157 348 b 68 364 112 363 89 364 b 3 304 19 363 1 348 l 3 4 l 0 4 b 1 -302 0 -98 0 -200 b 46 -357 1 -331 16 -357 z',\n },\n restDoubleWhole: {\n x_min: 0,\n x_max: 122,\n y_min: 0,\n y_max: 249,\n ha: 249,\n o: 'm 43 0 b 58 1 48 0 52 0 b 124 20 81 6 102 17 b 176 96 173 27 176 58 b 173 220 174 138 173 179 b 176 304 173 248 176 276 b 140 353 176 331 163 346 b 95 359 125 356 111 359 b 32 346 73 359 52 354 b 0 315 20 340 0 337 b 1 243 0 291 1 268 l 1 174 l 4 174 l 4 48 b 43 0 4 16 17 0 z',\n },\n restWhole: {\n x_min: 0.8908513171538642,\n x_max: 500,\n y_min: -120,\n y_max: 14,\n ha: 134,\n o: 'm 356 -173 l 356 -171 l 642 -171 b 719 -115 680 -171 717 -145 b 720 -82 719 -104 720 -92 b 711 -20 720 -60 719 -40 b 672 17 704 0 694 10 b 649 20 664 20 657 20 b 605 17 634 20 621 17 b 92 19 433 17 262 17 b 29 7 69 20 49 12 b 9 -17 12 4 9 -6 b 10 -43 9 -26 10 -35 b 1 -84 10 -58 3 -72 b 76 -173 0 -147 7 -173 z',\n },\n restWholeLegerLine: {\n x_min: -196.7269258015421,\n x_max: 685,\n y_min: -157,\n y_max: 29,\n ha: 186,\n o: 'm 96 -226 b 167 -223 121 -226 144 -225 b 300 -222 207 -222 252 -222 l 444 -222 b 660 -217 520 -222 595 -222 b 746 -131 703 -216 746 -200 b 744 -62 746 -108 747 -85 b 743 -39 743 -53 743 -46 b 789 -14 743 -16 752 -17 b 883 -16 821 -13 851 -16 b 965 -9 910 -16 937 -14 b 986 3 972 -7 986 -10 l 986 6 b 963 35 984 17 982 32 b 887 42 937 39 913 42 b 39 27 605 42 321 33 l -76 27 b -261 20 -138 27 -200 26 b -282 14 -269 20 -279 23 b -271 -7 -287 4 -276 -1 b -209 -27 -253 -23 -230 -24 b -153 -30 -190 -30 -173 -30 b -48 -29 -118 -30 -82 -27 b 6 -32 -22 -29 -6 -27 b 1 -72 3 -43 1 -58 b 4 -167 1 -105 7 -140 b 53 -223 3 -207 14 -217 b 96 -226 68 -226 82 -226 z',\n },\n restHalf: {\n x_min: 0,\n x_max: 518.3998530468286,\n y_min: 0,\n y_max: 162,\n ha: 162,\n o: 'm 98 0 l 556 0 b 665 1 592 0 629 0 b 746 82 720 3 743 29 b 736 174 749 114 740 144 b 670 232 729 215 708 232 b 570 229 636 232 603 229 b 356 233 498 229 426 233 l 73 233 b 0 179 19 233 0 220 b 1 154 0 171 0 164 b 6 95 4 135 6 115 b 98 0 3 27 29 0 z',\n },\n restHalfLegerLine: {\n x_min: -120,\n x_max: 448.2056815990121,\n y_min: -20,\n y_max: 143,\n ha: 163,\n o: 'm 397 -29 b 482 -23 426 -29 455 -27 b 526 -24 497 -24 511 -24 b 608 -17 554 -24 582 -23 b 645 -1 622 -14 644 -17 b 615 26 648 13 629 20 b 595 32 608 29 602 30 b 526 37 572 35 549 37 b 498 36 517 37 507 37 b 471 35 487 35 478 35 b 445 53 451 35 445 39 b 449 89 445 60 446 73 l 454 117 b 373 206 456 173 428 206 b 324 204 356 206 340 206 b 209 203 287 203 248 203 b 46 193 156 203 101 202 b 16 170 32 190 19 187 b 9 112 13 151 9 131 b 14 78 9 101 10 89 b 19 59 17 71 19 63 b -4 45 19 49 12 45 l -10 45 b -150 33 -58 45 -104 46 b -173 22 -158 32 -173 33 l -173 19 b -151 -13 -170 6 -168 -10 b -117 -17 -140 -16 -128 -17 b 118 -13 -37 -17 39 -13 b 397 -29 213 -13 308 -29 z',\n },\n restQuarter: {\n x_min: -0.3784452492533808,\n x_max: 263,\n y_min: -415,\n y_max: 415,\n ha: 830,\n o: 'm 151 -596 b 164 -563 163 -589 161 -575 b 160 -546 164 -557 161 -552 b 124 -396 148 -495 135 -446 b 122 -380 122 -390 122 -384 b 199 -255 122 -331 158 -272 b 228 -256 209 -249 217 -253 b 324 -346 274 -271 298 -310 b 353 -369 331 -356 341 -369 b 360 -367 356 -369 357 -369 b 379 -336 373 -361 379 -348 l 377 -325 b 344 -232 372 -292 366 -258 b 249 -58 301 -180 278 -117 b 242 -36 245 -49 242 -42 b 258 -7 242 -26 248 -17 b 328 78 284 20 311 45 b 354 158 344 104 354 131 b 337 216 354 177 350 196 b 213 435 294 288 249 359 b 115 575 189 487 158 536 b 78 598 105 585 92 598 b 59 592 72 598 66 596 b 39 562 45 583 39 572 b 53 527 39 550 45 539 b 168 344 98 469 125 402 b 187 307 181 328 187 317 b 153 269 187 294 176 284 b 62 213 122 252 91 235 b 40 180 48 203 40 192 b 46 158 40 173 43 166 b 99 65 60 125 79 95 b 183 -79 131 20 160 -29 b 156 -86 173 -88 164 -85 b 0 -261 58 -99 -7 -173 b 96 -557 10 -366 49 -464 b 124 -585 102 -569 109 -580 b 145 -598 132 -588 138 -598 b 151 -596 147 -598 150 -598 z',\n },\n rest8th: {\n x_min: 0,\n x_max: 289,\n y_min: -260,\n y_max: 261,\n ha: 521,\n o: 'm 164 -374 b 212 -340 190 -373 203 -357 b 276 -190 238 -292 258 -242 b 410 285 333 -36 359 128 b 416 314 413 294 416 304 l 416 321 b 393 354 415 341 410 354 b 382 353 389 354 386 354 b 292 311 347 347 315 333 b 174 225 256 276 216 251 b 157 219 168 222 163 219 b 140 228 151 219 145 222 b 131 246 134 233 131 240 b 135 262 131 252 132 256 b 147 298 141 272 147 285 b 127 367 147 323 154 354 b 94 376 114 373 102 376 b 48 336 75 376 63 363 b 3 181 20 288 12 235 b 0 150 1 170 0 160 b 109 24 0 84 35 24 b 171 36 127 24 148 27 b 289 101 213 52 248 75 b 164 -374 256 -62 193 -213 z',\n },\n rest16th: {\n x_min: 0,\n x_max: 333,\n y_min: -328.283950617284,\n y_max: 244,\n ha: 572.2839506172841,\n o: 'm 209 -471 b 246 -458 222 -477 236 -468 b 307 -338 279 -425 300 -384 b 324 -226 312 -301 317 -262 b 428 161 350 -94 386 35 b 480 318 445 215 480 259 b 467 347 480 331 477 341 b 445 351 461 350 454 351 b 408 337 432 351 419 347 b 402 333 405 336 403 334 b 223 215 344 294 294 245 b 236 259 229 233 235 246 b 238 276 238 265 238 271 b 212 338 238 302 226 334 b 193 341 206 340 199 341 b 86 289 156 341 104 317 b 59 180 66 255 59 217 b 156 27 59 76 92 27 b 236 46 179 27 204 35 b 338 101 271 59 298 82 b 289 -49 312 49 302 0 b 196 -122 276 -99 235 -107 b 176 -114 187 -127 176 -127 l 176 -111 b 157 -53 177 -88 164 -72 b 69 -9 141 -7 101 -16 b 17 -48 43 -3 29 -27 b 0 -127 4 -73 0 -99 b 6 -186 0 -147 1 -167 b 82 -294 17 -262 37 -294 b 160 -276 102 -294 128 -289 b 219 -242 181 -268 203 -259 b 236 -230 223 -236 229 -230 b 243 -232 239 -230 240 -230 b 235 -275 248 -246 239 -261 b 202 -456 220 -334 202 -395 b 209 -471 202 -462 203 -468 z',\n },\n rest32nd: {\n x_min: 0,\n x_max: 347,\n y_min: -497.5023916875033,\n y_max: 483,\n ha: 980.5023916875033,\n o: 'm 177 -716 b 217 -690 194 -720 209 -704 b 233 -655 225 -680 230 -668 b 292 -390 253 -567 275 -480 b 361 -48 312 -275 336 -161 b 452 400 393 102 422 252 b 497 629 467 477 482 553 b 500 647 498 635 500 641 b 480 691 500 665 492 684 b 464 696 475 694 469 696 b 418 674 448 696 431 685 l 361 626 b 333 611 353 618 343 612 b 308 629 325 611 317 616 b 239 667 292 651 265 661 b 204 670 228 668 216 670 b 86 559 141 670 95 628 b 85 537 86 552 85 544 b 107 416 85 495 95 455 b 161 372 114 389 134 372 b 174 373 166 372 170 372 b 226 383 192 374 209 377 b 387 478 285 402 330 444 b 364 386 379 444 364 415 b 276 271 364 323 320 298 b 265 266 272 268 268 266 b 252 276 261 266 256 269 b 143 333 229 311 186 333 b 107 327 130 333 118 330 b 43 243 62 314 46 291 b 58 145 43 210 52 179 b 150 63 68 92 99 63 b 315 132 213 63 259 98 b 266 -58 297 63 281 4 b 207 -101 259 -91 230 -96 b 186 -66 186 -107 199 -75 b 180 -50 181 -63 183 -55 b 101 -3 160 -23 135 -3 b 9 -66 59 -3 20 -32 b 0 -118 3 -84 0 -101 b 10 -196 0 -144 6 -170 b 104 -287 20 -256 52 -287 b 137 -282 114 -287 125 -287 b 184 -269 151 -281 171 -269 b 196 -275 190 -269 193 -271 b 199 -287 197 -278 199 -282 b 184 -343 199 -304 189 -325 b 181 -348 184 -346 183 -347 b 134 -595 158 -429 131 -508 b 156 -677 134 -624 150 -648 b 177 -716 158 -693 160 -713 z',\n },\n rest64th: {\n x_min: 0,\n x_max: 428,\n y_min: -720,\n y_max: 473.6797408388932,\n ha: 1193.6797408388932,\n o: 'm 200 -1037 b 229 -1012 215 -1037 222 -1025 b 238 -984 233 -1004 236 -994 b 282 -780 248 -914 265 -848 b 386 -369 317 -644 354 -507 b 491 104 422 -212 451 -53 b 600 541 528 249 550 399 b 616 629 611 570 616 599 b 600 680 616 648 615 671 b 550 665 586 687 566 677 b 480 618 527 649 501 635 b 464 611 474 613 468 611 b 448 622 458 611 454 615 b 366 662 425 651 397 662 b 331 658 354 662 343 661 b 242 572 285 647 253 619 b 236 528 239 557 236 543 b 266 400 236 484 251 442 b 325 373 274 377 301 373 b 436 409 366 373 403 383 l 494 452 b 474 360 485 416 474 389 b 383 248 474 297 435 269 b 320 328 377 288 351 310 b 276 341 305 337 291 341 b 186 269 235 341 194 311 b 181 230 183 256 181 243 b 187 153 181 204 186 179 b 279 63 192 86 233 63 b 304 65 288 63 295 63 b 416 115 344 72 379 92 b 387 -14 406 69 397 27 b 320 -95 380 -52 369 -86 b 318 -79 320 -89 320 -84 b 223 0 305 -29 271 0 b 122 -81 171 0 135 -30 b 118 -127 120 -96 118 -112 l 118 -196 b 137 -242 118 -215 125 -229 b 209 -275 157 -266 181 -275 b 249 -269 222 -275 235 -274 b 318 -248 272 -264 294 -255 b 281 -390 315 -301 292 -344 b 276 -400 279 -393 279 -397 b 259 -420 272 -408 266 -416 b 246 -429 255 -425 251 -429 b 233 -415 242 -429 238 -426 b 176 -359 225 -389 200 -372 b 121 -346 158 -348 140 -346 b 14 -408 73 -346 27 -370 b 0 -498 4 -438 0 -468 b 6 -564 0 -520 3 -543 b 91 -635 12 -611 45 -635 b 131 -629 104 -635 117 -634 b 223 -590 163 -622 190 -603 b 166 -824 203 -671 189 -747 b 148 -912 157 -852 148 -881 b 156 -955 148 -926 150 -940 b 177 -1008 161 -972 170 -991 b 200 -1037 181 -1020 183 -1037 z',\n },\n rest128th: {\n x_min: 0.6717818579024267,\n x_max: 491,\n y_min: -711,\n y_max: 719,\n ha: 1430,\n o: 'm 233 -1015 b 271 -956 256 -1002 266 -981 l 314 -723 b 393 -350 337 -598 366 -474 b 543 312 442 -128 492 91 b 687 841 583 490 635 665 b 707 958 698 880 707 919 b 706 986 707 968 707 976 b 688 1025 704 999 704 1024 b 670 1027 683 1025 677 1027 b 629 1007 655 1027 639 1022 b 559 945 613 981 586 968 b 541 1004 553 968 559 991 b 456 1035 516 1024 488 1035 b 419 1030 444 1035 431 1034 b 344 953 379 1018 353 995 b 340 900 341 936 340 917 b 341 847 340 881 341 864 b 380 779 340 815 354 793 b 464 763 406 765 435 762 b 592 814 510 763 549 786 b 546 660 575 757 556 710 b 480 585 537 619 517 598 b 478 599 480 590 478 595 b 386 678 472 641 428 678 b 294 612 343 678 304 651 b 279 477 282 567 278 521 b 363 395 281 428 317 395 b 380 396 369 395 374 395 b 488 436 416 403 449 419 b 384 233 469 357 468 275 b 359 291 373 252 377 276 b 282 318 337 310 310 318 b 181 264 243 318 203 298 b 154 107 153 216 154 161 b 242 6 154 42 187 6 b 278 10 253 6 265 7 b 408 88 330 22 366 55 b 387 -1 400 56 393 27 b 301 -112 379 -55 354 -94 b 289 -65 297 -95 302 -79 b 219 -32 269 -42 245 -32 b 183 -37 207 -32 196 -35 b 112 -109 144 -46 121 -71 b 105 -219 104 -145 108 -183 b 186 -315 101 -276 134 -315 b 230 -307 199 -315 215 -312 b 324 -256 264 -295 292 -275 b 180 -491 323 -383 266 -471 b 183 -459 180 -480 180 -469 b 184 -442 184 -454 184 -448 l 184 -436 b 135 -369 184 -403 170 -383 b 102 -363 125 -364 114 -363 b 29 -399 73 -363 45 -376 b 1 -556 -4 -448 6 -503 b 109 -670 -4 -625 43 -670 b 140 -667 118 -670 130 -668 b 253 -616 180 -658 213 -638 b 238 -688 248 -644 242 -665 b 192 -959 220 -779 192 -867 b 193 -992 192 -971 192 -981 b 210 -1024 194 -1014 199 -1024 b 233 -1015 216 -1024 223 -1021 z',\n },\n dynamicPiano: {\n x_min: -49,\n x_max: 326.5019318364244,\n y_min: -142,\n y_max: 515,\n ha: 657,\n o: 'm -56 -204 b -42 -202 -52 -204 -46 -203 b -19 -194 -35 -202 -26 -197 b 147 -138 35 -170 91 -151 b 249 -58 194 -127 223 -95 b 262 -29 255 -50 262 -39 b 258 -17 262 -24 261 -20 b 232 -7 252 -10 242 -7 b 210 -12 225 -7 217 -9 b 125 -40 184 -23 157 -30 b 183 140 153 19 171 79 b 251 167 207 144 230 153 b 469 518 383 262 480 382 b 357 687 472 626 420 687 b 315 678 344 687 330 684 b 204 600 279 664 240 634 b 210 704 206 635 209 670 b 215 721 212 710 215 716 b 206 733 215 727 212 730 b 180 742 197 736 189 742 b 164 734 176 742 170 740 b 1 575 108 684 36 645 b -7 557 -1 569 -7 563 b -6 553 -7 556 -7 554 b 7 547 -3 547 3 547 l 17 547 b 82 575 43 547 59 567 l 82 452 b 56 46 82 317 81 180 b 17 -66 49 7 46 -36 b -62 -173 -13 -99 -37 -135 b -71 -192 -66 -179 -71 -184 b -68 -199 -71 -193 -69 -196 b -56 -204 -65 -203 -60 -204 z m 196 258 b 197 266 197 261 197 264 b 200 510 200 347 199 429 b 233 543 210 521 222 533 b 281 560 249 554 266 560 b 340 503 310 560 333 540 b 344 461 343 488 344 474 b 321 323 344 413 333 369 b 268 272 315 300 295 281 b 196 258 245 265 220 261 z',\n },\n dynamicMezzo: {\n x_min: -18,\n x_max: 559,\n y_min: -50,\n y_max: 365,\n ha: 415,\n o: 'm 43 -71 b 160 19 86 -71 143 -26 b 230 264 189 99 200 184 b 282 363 243 297 259 327 b 287 320 285 347 287 333 b 284 279 287 305 285 292 l 249 -12 b 275 -43 248 -29 245 -43 b 395 45 321 -43 389 3 b 462 271 406 124 436 197 b 523 387 475 310 490 348 l 523 346 b 504 130 521 274 513 202 b 501 81 501 114 501 98 b 510 3 501 55 504 29 b 580 -72 521 -48 543 -72 b 625 -63 593 -72 608 -69 b 789 50 690 -43 744 -3 b 805 72 795 56 805 63 b 798 85 805 76 802 81 b 778 94 792 91 785 94 b 755 85 770 94 763 91 l 693 40 b 675 33 685 36 680 33 b 658 52 668 33 662 39 b 645 144 651 82 645 112 b 658 448 641 246 660 346 b 606 507 658 485 638 507 b 583 504 599 507 592 505 b 495 446 547 497 521 471 b 420 373 471 423 448 399 b 413 458 418 406 418 432 b 361 507 408 490 386 507 b 320 491 347 507 333 501 b 160 307 256 444 207 382 l 160 337 b 174 488 160 387 174 438 b 156 521 174 501 173 513 b 137 526 148 524 143 526 b 109 513 127 526 118 520 b -16 399 66 477 23 439 b -26 383 -20 395 -26 389 l -26 379 b -14 370 -24 372 -20 370 b -6 372 -12 370 -9 372 b 19 376 4 374 12 376 b 36 359 32 376 36 370 b 30 330 36 350 35 341 l 30 323 b 9 -35 23 203 17 85 b 43 -71 6 -65 19 -71 z',\n },\n dynamicForte: {\n x_min: -144,\n x_max: 311.30112136775,\n y_min: -115.3876295915697,\n y_max: 504,\n ha: 619.3876295915697,\n o: 'm -101 -166 b 173 76 7 -153 150 -30 b 206 344 192 164 202 253 b 268 338 226 343 246 341 b 384 395 317 333 353 361 b 397 419 393 405 397 412 b 367 442 397 429 387 436 b 350 444 361 444 356 444 b 206 455 302 449 255 454 l 206 474 b 202 540 204 495 202 518 b 209 593 202 557 203 576 b 236 624 215 613 225 624 b 265 612 245 624 253 619 b 308 552 287 596 302 577 b 336 533 312 534 323 533 b 448 611 366 533 444 583 b 399 696 452 648 423 671 b 382 706 395 700 387 703 b 308 726 357 720 333 726 b 207 684 272 726 239 711 b 60 455 135 622 60 560 l 10 455 b -23 448 -1 455 -13 454 b -102 372 -55 426 -76 397 b -109 357 -108 367 -109 361 b -95 347 -109 353 -105 348 b -63 346 -84 346 -73 346 b 0 344 -43 344 -22 344 l 63 344 b 53 186 63 291 59 239 b 23 0 46 124 42 60 b -35 -60 10 -42 -6 -60 b -73 -52 -45 -60 -58 -58 b -91 -48 -79 -49 -85 -48 b -109 -53 -96 -48 -102 -49 b -199 -124 -143 -72 -168 -99 b -207 -137 -203 -128 -207 -132 b -194 -148 -207 -141 -203 -145 b -101 -166 -164 -160 -132 -168 z',\n },\n dynamicRinforzando: {\n x_min: -75,\n x_max: 322.0960720195126,\n y_min: -90,\n y_max: 325,\n ha: 415,\n o: 'm 23 -130 b 40 -125 27 -130 33 -128 b 128 -9 81 -114 125 -53 b 145 200 132 62 141 130 b 148 238 147 212 148 225 b 308 321 184 291 245 321 b 363 314 325 321 344 318 b 377 310 369 312 373 310 b 384 311 380 310 382 310 b 464 415 410 317 464 389 b 446 433 465 429 455 429 b 390 445 428 441 409 445 b 305 429 361 445 334 438 b 167 346 252 413 202 393 b 153 325 163 338 158 333 b 148 438 154 363 151 399 b 121 468 147 456 134 468 b 101 458 115 468 108 465 b -63 310 46 409 -16 367 b -108 240 -78 289 -98 271 b 32 330 -50 256 -13 297 b 37 304 37 320 37 312 l 37 292 b 10 -101 27 161 20 30 b 23 -130 9 -120 12 -130 z',\n },\n dynamicSforzando: {\n x_min: 0,\n x_max: 296,\n y_min: 0,\n y_max: 379,\n ha: 379,\n o: 'm 151 0 b 174 1 160 0 166 0 b 392 158 272 14 346 71 b 405 207 400 174 405 190 b 359 287 405 236 389 265 b 261 325 328 308 294 315 b 168 413 216 340 181 366 b 166 426 167 418 166 423 b 176 438 166 432 167 436 b 199 441 183 441 190 441 b 310 393 238 441 295 422 b 334 370 317 376 325 370 b 363 386 343 370 353 379 b 422 445 386 402 408 420 b 426 458 425 449 426 454 b 422 469 426 462 425 465 b 274 546 395 518 333 546 b 161 503 232 546 190 531 b 86 405 132 472 108 439 b 71 347 75 387 71 367 b 112 256 71 312 85 279 b 209 215 141 232 176 226 b 284 168 238 206 266 197 b 300 131 291 157 300 144 b 298 120 300 127 298 122 b 278 107 294 109 285 108 b 262 108 271 107 266 108 l 259 108 b 114 157 200 107 156 125 b 96 181 104 163 96 170 l 96 184 b 102 202 96 190 102 196 b 96 209 102 204 101 207 b 63 194 82 215 72 204 b 7 109 42 168 26 138 b 0 86 3 101 0 94 b 13 60 0 78 4 68 b 151 0 53 23 101 0 z',\n },\n dynamicZ: {\n x_min: -42.73880183193087,\n x_max: 331,\n y_min: 0,\n y_max: 328,\n ha: 328,\n o: 'm -45 0 b -6 16 -32 0 -17 10 b 3 20 -3 16 0 19 b 144 60 49 48 96 60 b 284 22 190 60 238 46 b 348 4 305 10 327 4 b 461 75 393 4 435 30 b 468 91 464 81 467 86 b 456 104 468 95 465 99 b 287 173 402 131 348 167 b 239 176 271 174 255 176 b 168 174 217 176 194 174 b 367 340 236 236 298 294 b 459 423 402 363 432 392 b 477 454 467 431 475 442 b 474 462 477 456 475 459 b 454 472 469 469 462 472 b 432 468 446 472 439 469 b 356 448 406 461 380 455 b 210 422 307 433 258 422 b 109 442 177 422 144 428 b 94 445 104 444 99 445 b 69 433 85 445 76 442 b 27 390 56 419 39 406 b -9 343 16 373 -17 357 b 63 311 3 320 36 314 l 78 311 b 132 307 95 308 114 307 b 240 314 168 307 203 311 l 193 271 b -37 50 117 196 19 145 b -59 7 -46 36 -69 20 b -45 0 -55 3 -50 0 z',\n },\n ornamentTrill: {\n x_min: 1,\n x_max: 551,\n y_min: -18,\n y_max: 539,\n ha: 557,\n o: 'm 321 612 b 190 602 278 605 235 605 l 190 638 b 187 693 190 652 190 667 b 161 776 184 717 193 776 b 137 747 150 776 137 766 b 130 654 135 716 131 685 l 130 596 l 52 588 b 4 539 23 585 7 570 b 1 477 3 530 1 500 b 3 448 1 461 3 448 l 3 452 b 53 432 6 436 23 432 b 134 435 75 432 102 433 b 151 117 138 328 147 223 b 170 13 153 82 157 46 b 209 -26 179 -10 193 -26 b 222 -22 213 -26 217 -24 b 269 -17 233 -16 253 -27 b 343 135 325 19 346 66 b 343 158 343 147 344 147 b 323 192 341 171 337 187 b 291 176 311 194 300 184 l 264 148 b 229 131 261 145 238 131 b 212 170 209 131 213 154 b 194 438 203 259 199 348 l 272 442 b 284 452 276 441 279 441 b 305 462 287 461 295 462 l 312 462 b 346 477 325 462 340 464 b 366 560 357 503 366 531 b 321 612 366 598 356 618 z m 759 588 b 711 560 749 592 733 570 b 588 500 671 541 631 521 b 583 533 586 514 586 524 b 560 576 577 549 577 572 b 517 550 541 582 528 564 b 416 423 482 508 452 462 b 382 353 392 397 384 370 b 387 305 380 341 386 318 b 392 275 389 295 392 285 b 409 243 393 262 393 243 b 431 262 419 243 425 255 b 521 373 459 298 488 333 b 523 354 521 366 523 360 b 520 337 523 346 521 340 b 508 295 513 323 508 310 b 530 102 508 279 524 122 b 549 66 533 88 530 66 b 577 99 563 66 572 84 b 580 131 580 109 580 121 l 580 302 b 600 347 580 318 582 337 b 701 392 632 364 665 384 b 793 518 785 409 793 435 b 759 588 793 559 785 576 z',\n },\n ornamentTurn: {\n x_min: 0,\n x_max: 574,\n y_min: 0,\n y_max: 312,\n ha: 312,\n o: 'm 651 0 b 816 132 727 0 796 46 b 827 223 822 163 827 193 b 808 340 827 262 821 301 b 665 449 785 408 729 449 b 636 446 655 449 647 448 b 589 384 600 441 586 422 l 602 300 b 611 285 603 291 605 285 b 621 288 613 285 616 287 b 655 295 632 294 644 295 b 711 284 674 295 693 289 b 773 209 740 275 773 232 b 697 156 773 184 734 160 b 664 154 685 154 675 154 b 579 168 635 154 608 158 b 455 242 533 186 495 213 b 261 400 387 291 331 354 b 160 432 225 422 190 432 b 20 328 98 432 49 392 b 0 229 6 295 0 262 b 30 71 0 176 14 122 b 144 3 43 29 96 3 b 168 6 153 3 160 4 b 248 122 233 20 248 39 b 246 147 248 124 248 135 b 226 177 243 164 239 177 b 206 170 220 177 215 174 b 144 154 186 158 166 154 b 79 170 122 154 101 160 b 53 202 62 179 53 189 b 60 228 53 209 55 217 b 161 281 81 261 120 281 b 183 279 168 281 176 281 b 325 190 243 269 284 229 b 572 16 402 124 475 53 b 651 0 598 6 625 0 z',\n },\n ornamentTurnSlash: {\n x_min: 0,\n x_max: 574,\n y_min: -106,\n y_max: 405,\n ha: 511,\n o: 'm 441 -153 b 456 -60 455 -118 456 -89 b 455 81 455 -14 455 33 b 572 14 491 55 530 30 b 651 -1 598 4 625 -1 b 816 131 727 -1 796 45 b 827 222 822 161 827 192 b 808 338 827 261 821 300 b 665 448 785 406 729 448 b 636 445 655 448 647 446 b 589 383 600 439 586 420 l 602 298 b 611 284 603 289 605 284 b 621 287 613 284 616 285 b 655 294 632 292 644 294 b 711 282 674 294 693 288 b 773 207 740 274 773 230 b 697 154 773 183 734 158 b 664 153 685 153 675 153 b 579 167 635 153 608 157 b 455 240 533 183 495 212 b 454 242 455 240 455 242 l 454 337 b 452 488 454 386 452 439 b 433 570 452 517 451 546 b 425 583 431 575 431 583 l 422 583 b 403 566 415 582 408 573 b 402 546 400 560 402 553 l 397 287 b 261 399 353 325 310 366 b 160 431 225 420 190 431 b 20 327 98 431 48 390 b 0 228 6 294 0 261 b 30 69 0 174 14 121 b 144 1 43 27 96 1 b 168 4 153 1 160 3 b 248 121 233 19 248 37 b 246 145 248 122 248 134 b 226 176 243 163 239 176 b 206 168 220 176 215 173 b 144 153 186 157 166 153 b 79 168 122 153 101 158 b 53 200 62 177 53 187 b 60 226 53 207 55 216 b 161 279 79 259 120 279 b 183 278 168 279 176 279 b 325 189 243 266 282 226 b 395 130 348 168 372 148 b 393 71 393 109 393 89 b 441 -153 390 -6 402 -78 z',\n },\n ornamentMordent: {\n x_min: 0,\n x_max: 700,\n y_min: 0,\n y_max: 497,\n ha: 497,\n o: 'm 513 0 b 528 39 526 14 527 27 b 531 72 531 50 531 60 b 528 138 531 94 528 117 l 528 347 b 552 359 537 354 544 359 b 579 338 560 359 569 353 b 674 217 609 297 639 255 b 719 190 690 200 704 190 b 759 215 732 190 744 197 b 940 395 815 279 877 337 b 1001 490 968 422 986 455 b 1008 513 1004 495 1008 505 b 1002 524 1008 517 1007 521 b 968 516 994 530 978 524 b 960 508 965 513 963 510 b 798 356 900 464 848 410 b 778 341 791 347 783 341 b 757 354 772 341 765 346 b 661 475 720 392 690 432 b 611 517 644 504 629 517 b 563 498 598 517 583 511 b 527 471 550 490 539 481 l 527 570 b 492 716 526 619 523 671 b 472 677 480 704 472 694 b 465 399 474 585 468 491 b 439 366 456 387 448 376 b 384 320 415 336 399 320 b 330 367 369 320 354 336 b 325 376 328 369 327 373 b 226 490 291 413 265 456 b 189 505 213 500 202 505 b 157 491 177 505 167 500 b 0 229 75 420 0 346 b 1 202 0 220 0 212 b 22 215 12 203 16 209 b 124 327 55 252 89 289 b 147 343 132 337 140 343 b 171 323 156 343 164 336 b 266 197 196 276 232 236 b 337 157 291 170 314 157 b 410 207 361 157 386 174 b 461 274 428 229 444 252 b 462 166 461 238 461 202 b 513 0 465 108 487 55 z',\n },\n ornamentShortTrill: {\n x_min: 0,\n x_max: 747,\n y_min: 0,\n y_max: 243,\n ha: 243,\n o: 'm 379 0 b 428 14 395 0 410 4 b 474 56 445 26 461 39 b 552 157 500 89 526 122 b 566 168 556 163 560 168 b 575 157 569 168 572 166 b 664 36 592 107 628 72 b 733 1 685 13 710 1 b 802 35 757 1 780 13 b 1007 249 871 105 940 177 b 1067 324 1028 272 1054 295 b 1076 340 1068 330 1076 334 b 1073 346 1076 341 1076 343 b 1057 350 1068 348 1063 350 b 1047 347 1053 350 1050 350 b 1001 310 1031 336 1015 324 l 857 157 b 844 143 852 153 848 143 b 835 150 841 143 838 144 b 757 242 815 186 780 209 b 685 298 739 268 713 284 b 641 310 670 305 655 310 b 590 288 625 310 608 304 b 497 179 554 256 527 215 b 480 164 490 170 485 164 b 462 179 474 164 469 168 b 372 295 436 220 405 258 b 278 344 346 324 312 344 b 199 310 252 344 226 334 b 92 196 161 274 128 233 b 0 24 46 148 23 89 b 42 48 22 27 32 37 b 156 168 84 85 114 132 b 196 192 174 184 186 192 b 228 158 206 192 215 181 b 312 36 252 114 282 75 b 379 0 331 12 354 0 z',\n },\n ornamentTremblement: {\n x_min: 0,\n x_max: 982.17691453624,\n y_min: 0,\n y_max: 224,\n ha: 224,\n o: 'm 0 0 b 63 36 30 12 48 23 b 157 124 94 66 125 94 b 177 135 164 131 170 135 b 196 122 183 135 189 131 b 268 40 217 94 245 68 b 323 6 288 16 304 6 b 369 20 336 6 350 10 b 412 53 384 29 399 40 b 501 145 442 84 472 114 b 523 158 508 154 516 158 b 543 145 528 158 536 154 b 641 45 576 112 608 78 b 698 17 658 27 677 17 b 729 23 708 17 719 20 b 804 65 756 32 780 46 b 904 154 837 95 871 124 b 920 163 910 160 916 163 b 936 153 924 163 930 160 b 1024 60 965 121 996 92 b 1112 13 1053 29 1080 13 b 1184 39 1135 13 1158 22 b 1359 194 1248 84 1305 138 b 1413 301 1388 223 1403 261 b 1404 323 1417 315 1413 323 b 1391 320 1400 323 1395 321 b 1344 294 1375 314 1358 307 b 1224 186 1305 258 1269 216 b 1194 173 1212 179 1202 173 b 1165 193 1184 173 1175 179 b 1096 271 1145 222 1122 248 b 1001 318 1061 302 1031 318 b 903 268 969 318 937 301 b 806 186 871 239 841 210 b 782 174 796 179 789 174 b 756 193 773 174 765 180 b 652 291 729 232 693 266 b 596 308 634 302 615 308 b 530 278 573 308 552 298 l 415 168 b 393 157 408 161 400 157 b 373 171 387 157 380 161 b 305 245 353 197 330 222 b 248 276 285 266 266 278 b 189 245 229 276 210 266 b 81 144 156 209 120 174 b 0 0 33 109 26 56 z',\n },\n ornamentPrecompAppoggTrill: {\n x_min: -0.11067192132025548,\n x_max: 1066,\n y_min: -50,\n y_max: 533.1706452421108,\n ha: 583.1706452421108,\n o: 'm 187 -46 b 213 -14 197 -37 204 -26 b 285 151 251 36 266 94 b 304 189 294 177 297 189 b 337 168 311 189 320 181 b 458 33 386 131 415 76 b 495 12 472 19 484 12 b 531 40 508 12 518 22 b 580 168 557 79 569 124 b 622 235 592 213 603 235 b 683 194 636 235 655 222 b 838 26 737 140 791 86 b 919 -33 860 -1 881 -39 b 984 53 960 -27 971 19 b 1022 156 998 86 1008 122 b 1054 190 1032 179 1041 190 b 1089 167 1063 190 1074 183 b 1208 32 1129 122 1171 78 b 1244 10 1221 17 1231 10 b 1273 22 1253 10 1263 14 b 1496 206 1352 78 1427 137 b 1535 310 1526 236 1535 272 b 1531 359 1535 325 1534 343 b 1496 343 1515 360 1506 351 l 1309 192 b 1269 167 1289 176 1279 167 b 1234 199 1260 167 1251 177 b 1122 324 1200 243 1168 289 b 1074 344 1106 337 1089 344 b 1014 301 1051 344 1030 328 b 952 144 985 252 971 197 b 933 121 946 128 940 121 b 910 137 927 121 920 125 b 850 210 888 161 870 186 b 687 369 799 266 750 325 b 631 390 665 383 647 390 b 567 327 602 390 580 369 b 527 199 554 284 543 242 b 508 168 520 179 514 168 b 482 192 503 168 495 177 b 353 328 444 240 405 292 b 312 343 338 338 324 343 b 266 297 292 343 276 327 b 204 125 248 239 232 180 b 143 79 193 102 173 79 b 92 122 117 79 105 102 b 81 154 86 131 84 143 b 48 423 59 242 50 333 b 45 544 46 464 45 504 b 53 730 45 606 48 668 b 40 768 55 744 52 766 b 13 730 19 770 14 747 b 0 514 7 658 -1 586 b 26 122 3 383 6 252 b 75 -36 35 66 40 10 b 134 -72 92 -59 112 -72 b 187 -46 151 -72 170 -63 z',\n },\n ornamentPrecompSlideTrillDAnglebert: {\n x_min: 0,\n x_max: 1088,\n y_min: -380,\n y_max: 252,\n ha: 632,\n o: 'm 560 -539 b 439 -481 527 -497 484 -485 b 354 -461 409 -478 380 -477 b 131 -154 236 -389 161 -285 b 124 -98 127 -135 124 -117 b 196 55 124 -40 148 10 b 308 99 230 86 268 99 b 399 81 337 99 367 92 b 514 22 441 66 477 43 b 619 -30 567 -9 590 -30 b 719 17 642 -30 670 -16 b 861 131 769 52 818 88 b 899 150 874 144 887 150 b 936 117 913 150 926 138 b 965 43 948 94 956 68 b 1007 -1 973 24 978 -1 b 1048 30 1025 -1 1037 16 b 1070 65 1057 40 1064 52 b 1110 148 1084 92 1096 121 b 1145 190 1120 164 1120 190 b 1191 153 1169 192 1179 168 b 1256 29 1218 115 1231 68 b 1292 1 1267 10 1277 1 b 1320 10 1300 1 1309 4 b 1369 48 1339 19 1355 33 b 1515 196 1418 96 1464 148 b 1567 343 1558 238 1567 287 b 1555 363 1565 357 1562 363 b 1539 356 1551 363 1547 360 b 1433 268 1502 330 1466 301 b 1335 171 1401 236 1374 199 b 1310 163 1325 166 1318 163 b 1286 183 1302 163 1293 168 b 1218 311 1264 226 1247 272 b 1164 351 1200 337 1182 351 b 1110 308 1146 351 1128 337 b 1031 176 1084 265 1058 219 b 1015 161 1025 166 1021 161 b 999 179 1009 161 1005 167 b 955 279 985 213 973 248 b 913 307 943 300 930 307 b 887 302 904 307 896 305 b 852 281 874 298 863 291 b 693 167 804 236 747 204 b 612 140 667 150 639 140 b 549 157 592 140 570 145 b 403 220 503 181 452 202 b 271 248 360 236 315 248 b 179 229 239 248 209 242 b 0 -29 65 180 0 85 b 9 -104 0 -53 3 -78 b 397 -526 56 -317 183 -464 b 505 -547 432 -536 468 -547 b 560 -539 524 -547 541 -544 z',\n },\n ornamentPrecompSlideTrillBach: {\n x_min: 0,\n x_max: 1185,\n y_min: -380,\n y_max: 465,\n ha: 845,\n o: 'm 624 -544 b 642 -528 638 -543 642 -537 b 639 -514 642 -524 642 -520 b 590 -444 629 -487 609 -467 b 523 -413 573 -422 553 -410 b 498 -415 514 -415 507 -415 b 399 -389 464 -415 431 -405 b 89 -157 281 -330 176 -255 b 72 -117 78 -144 72 -131 b 73 -101 72 -111 72 -107 b 187 186 91 3 147 91 b 246 230 200 216 222 230 b 300 209 262 230 281 223 b 456 48 359 163 403 101 b 540 -10 494 10 518 -10 b 625 59 566 -10 589 13 b 690 148 648 88 668 118 b 711 167 697 160 704 167 b 733 153 719 167 724 163 b 844 14 769 105 808 60 b 903 -42 873 -23 886 -42 b 973 -1 919 -42 937 -27 b 1008 33 986 7 996 20 b 1048 81 1021 48 1035 65 b 1050 37 1048 66 1050 52 b 1047 -24 1050 17 1048 -3 b 1038 -275 1038 -108 1040 -192 l 1037 -289 b 1045 -302 1037 -295 1038 -301 b 1068 -284 1056 -304 1064 -292 b 1084 -242 1076 -271 1081 -256 b 1099 -109 1096 -199 1099 -154 b 1106 158 1099 -19 1106 71 b 1128 187 1113 167 1120 177 b 1168 223 1143 212 1155 223 b 1210 193 1179 223 1191 213 b 1220 183 1214 190 1215 186 b 1329 36 1261 138 1292 84 b 1374 7 1345 16 1358 7 b 1411 20 1384 7 1395 12 b 1479 84 1437 37 1459 59 b 1610 235 1521 135 1564 186 b 1706 403 1655 282 1695 334 b 1614 346 1663 400 1637 373 b 1464 170 1564 287 1515 228 b 1440 150 1453 156 1447 150 b 1414 173 1433 150 1426 158 b 1283 336 1371 228 1333 288 b 1220 366 1261 356 1240 366 b 1148 318 1194 366 1169 350 b 1103 255 1133 297 1119 275 b 1097 301 1102 271 1100 285 b 1099 334 1099 312 1099 324 b 1092 428 1099 367 1094 397 b 1071 647 1087 501 1079 575 b 1058 670 1071 657 1071 670 b 1035 648 1047 670 1038 661 b 1018 516 1024 605 1015 560 b 1041 203 1025 412 1037 307 b 1043 180 1041 196 1043 187 b 992 127 1027 161 1009 143 b 965 111 981 117 972 111 b 936 132 955 111 946 120 b 829 268 900 179 867 225 b 760 317 801 301 780 317 b 691 258 739 317 719 297 b 605 147 664 219 641 177 b 589 138 599 141 593 138 b 572 148 583 138 579 141 b 415 317 520 206 467 261 b 327 372 390 343 366 366 b 300 373 317 373 308 373 b 154 295 239 373 190 348 b 55 138 120 243 85 192 b 0 -53 22 79 0 13 b 160 -317 0 -156 49 -252 b 209 -354 177 -327 192 -343 b 510 -531 305 -419 397 -495 b 593 -547 537 -540 564 -547 b 624 -544 603 -547 613 -546 z',\n },\n ornamentPrecompTrillSuffixDandrieu: {\n x_min: 0,\n x_max: 1003,\n y_min: -20,\n y_max: 521,\n ha: 541,\n o: 'm 791 -16 b 844 33 812 -3 829 14 b 981 271 900 107 937 190 b 994 288 984 278 985 288 b 1009 269 1004 288 1007 278 b 1077 112 1034 217 1051 163 b 1158 43 1103 62 1129 43 b 1231 69 1179 43 1204 55 b 1348 189 1280 98 1315 143 b 1444 451 1407 271 1444 357 b 1431 547 1444 482 1440 514 b 1188 750 1401 665 1299 750 b 1158 747 1178 750 1168 749 b 1079 684 1119 742 1089 727 b 1063 632 1076 665 1071 648 b 1056 609 1058 622 1056 615 b 1071 599 1056 602 1060 599 b 1086 600 1076 599 1080 600 b 1130 605 1102 603 1116 605 b 1244 569 1171 605 1210 595 b 1349 346 1322 511 1349 433 b 1348 312 1349 334 1349 324 b 1289 197 1345 266 1325 228 b 1238 174 1270 181 1253 174 b 1188 215 1220 174 1202 187 b 1145 308 1172 245 1159 276 b 1096 413 1129 343 1120 382 b 1053 438 1084 431 1068 438 b 1011 413 1038 438 1022 431 b 955 324 989 384 971 354 b 850 127 920 258 886 192 b 838 112 847 121 842 112 b 824 128 828 109 825 121 b 802 193 815 150 809 171 b 730 400 779 264 766 337 b 688 431 719 420 703 431 b 647 403 674 431 660 422 b 606 338 632 383 619 361 b 513 167 575 282 546 223 b 480 122 503 150 498 122 b 452 171 459 122 459 153 b 420 255 442 199 432 228 b 337 408 399 308 380 364 b 276 436 317 428 297 436 b 215 397 253 436 230 423 b 23 72 148 289 81 184 b 0 29 17 59 0 40 b 7 17 0 23 1 20 b 59 58 26 7 46 39 b 190 276 111 127 143 206 b 216 301 202 292 207 301 b 245 279 223 301 232 294 b 311 166 278 248 292 206 b 367 16 331 117 346 65 b 402 -19 377 -7 387 -19 b 438 -4 412 -19 423 -13 b 518 88 474 17 495 55 b 628 284 562 150 592 216 b 657 223 648 266 651 243 b 717 13 677 154 696 84 b 755 -29 726 -16 737 -29 b 791 -16 765 -29 776 -24 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefix: {\n x_min: 0,\n x_max: 1246,\n y_min: -30,\n y_max: 296.0302860502196,\n ha: 326.0302860502196,\n o: 'm 360 -43 b 559 59 445 -43 503 7 b 698 236 615 111 652 179 b 714 248 704 243 710 248 b 727 235 719 248 721 243 l 848 42 b 883 12 860 22 870 12 b 917 32 891 12 903 19 b 946 62 927 42 939 50 b 1037 192 972 108 1009 147 b 1057 210 1044 204 1051 210 b 1076 190 1063 210 1068 203 l 1176 12 b 1215 -19 1188 -9 1201 -19 b 1250 -6 1225 -19 1237 -14 b 1284 27 1264 3 1274 16 b 1380 190 1323 78 1351 135 b 1395 210 1384 197 1385 210 b 1413 190 1405 210 1410 197 b 1508 40 1436 134 1467 85 b 1564 3 1529 14 1547 3 b 1617 32 1580 3 1597 12 b 1767 238 1678 92 1719 167 b 1794 310 1781 259 1791 282 b 1752 294 1776 317 1764 304 b 1656 164 1711 258 1689 206 b 1629 144 1646 151 1637 144 b 1603 161 1620 144 1613 150 b 1502 315 1562 207 1525 258 b 1452 357 1490 344 1470 357 b 1397 320 1431 357 1411 344 b 1316 170 1368 271 1345 219 b 1280 127 1306 154 1303 127 b 1244 171 1256 127 1254 154 b 1145 337 1210 226 1179 282 b 1110 363 1135 354 1122 363 b 1070 338 1097 363 1084 354 b 1050 311 1063 330 1057 320 b 959 181 1017 271 992 223 b 939 167 950 173 945 167 b 920 184 933 167 927 173 b 818 343 887 238 852 291 b 759 395 795 377 778 395 b 701 344 742 395 724 377 b 698 338 700 341 700 340 b 544 154 652 272 605 207 b 412 98 501 117 458 98 b 304 130 377 98 341 108 b 95 373 204 187 144 275 b 58 426 85 393 82 428 b 19 366 26 426 26 389 b 0 307 13 346 0 327 b 4 287 0 300 1 294 b 174 36 49 194 91 102 b 360 -43 230 -9 289 -43 z',\n },\n ornamentPrecompDoubleCadenceUpperPrefixTurn: {\n x_min: 0,\n x_max: 1226,\n y_min: -237,\n y_max: 436,\n ha: 673,\n o: 'm 1279 -341 b 1293 -252 1293 -307 1295 -278 b 1277 36 1287 -156 1282 -59 l 1273 118 b 1318 176 1289 137 1303 157 b 1349 203 1332 193 1342 203 b 1378 168 1359 203 1367 192 b 1456 35 1401 122 1428 78 b 1511 -12 1476 3 1493 -12 b 1568 23 1526 -12 1544 0 b 1597 53 1578 32 1588 42 b 1705 186 1629 101 1669 143 b 1761 284 1728 216 1751 246 b 1765 300 1763 288 1765 295 b 1763 307 1765 302 1765 305 b 1737 302 1754 311 1744 308 b 1718 287 1729 298 1725 292 b 1598 145 1673 245 1637 194 b 1578 130 1590 135 1584 130 b 1557 147 1571 130 1565 135 b 1447 321 1516 202 1488 265 b 1403 351 1433 341 1417 351 b 1358 323 1388 351 1372 341 b 1269 209 1329 285 1299 248 b 1254 521 1264 314 1259 418 b 1228 616 1253 554 1247 588 b 1218 628 1224 621 1223 628 l 1215 628 b 1201 613 1210 626 1202 619 b 1200 600 1200 609 1200 605 l 1200 586 b 1211 348 1204 507 1207 428 b 1217 166 1214 288 1215 226 b 1202 181 1212 168 1208 174 b 1094 334 1168 233 1130 284 b 1048 366 1079 356 1064 366 b 1004 331 1034 366 1018 354 b 904 154 969 275 930 220 b 873 202 887 171 880 187 b 778 356 845 256 819 311 b 737 379 763 372 750 379 b 698 353 724 379 711 370 l 621 232 b 415 114 570 154 495 114 b 302 138 377 114 340 121 b 73 400 187 192 117 284 b 55 420 69 415 62 420 b 42 410 50 420 45 416 b 0 292 23 373 0 334 b 4 262 0 282 1 272 b 168 39 32 168 92 99 b 359 -26 225 -6 292 -26 b 585 76 446 -26 530 10 b 668 202 616 115 641 160 b 693 228 680 219 687 228 b 720 203 700 228 707 219 b 801 63 752 160 775 111 b 844 7 812 42 818 7 b 910 66 877 6 894 39 b 923 94 916 75 919 85 b 995 219 945 137 968 179 b 1025 184 1009 210 1017 197 b 1119 56 1054 141 1087 98 b 1166 20 1138 32 1152 20 b 1215 50 1181 20 1195 30 b 1221 56 1217 52 1218 55 b 1228 -163 1223 -17 1225 -89 b 1279 -341 1231 -223 1251 -278 z',\n },\n ornamentPrecompTrillLowerSuffix: {\n x_min: 0,\n x_max: 833,\n y_min: -309,\n y_max: 319,\n ha: 628,\n o: 'm 778 -444 b 801 -445 785 -444 793 -445 b 1037 -338 894 -445 969 -397 b 1200 37 1149 -240 1200 -109 b 1084 406 1200 171 1172 300 b 1024 444 1064 431 1043 444 b 960 390 999 444 978 426 b 841 163 923 314 886 236 b 812 128 832 150 827 128 b 786 167 796 130 793 153 b 660 418 744 251 716 341 b 599 459 639 445 619 459 b 541 410 577 459 557 444 b 439 197 507 340 474 269 b 422 179 435 190 435 179 b 338 393 392 251 379 328 b 275 439 320 423 298 439 b 212 396 253 439 230 425 b 71 219 170 333 128 268 b 0 45 17 173 16 112 b 68 98 32 62 50 78 b 194 264 112 150 153 209 b 230 292 209 282 219 292 b 264 261 240 292 251 282 b 274 242 268 255 269 248 b 346 46 304 179 325 112 b 376 10 351 32 354 10 b 412 35 392 10 403 22 b 452 107 429 56 441 82 b 541 291 481 168 511 230 b 556 307 547 302 552 307 b 573 295 562 307 567 302 b 624 217 595 272 611 246 b 721 1 657 145 685 72 b 755 -27 732 -19 742 -27 b 786 -16 765 -27 775 -24 b 857 73 819 7 840 39 b 952 256 887 134 920 194 b 978 289 963 279 969 289 b 1009 262 985 289 994 281 b 1030 235 1017 253 1024 245 b 1110 -4 1071 161 1099 81 b 1116 -68 1113 -26 1116 -48 b 1009 -243 1116 -140 1090 -200 b 848 -291 956 -272 901 -291 b 730 -261 809 -291 770 -282 b 696 -248 714 -252 703 -248 b 671 -284 684 -248 678 -258 l 662 -312 b 657 -357 658 -330 657 -344 b 744 -439 657 -403 683 -425 z',\n },\n brassScoop: {\n x_min: -0.4444444444444445,\n x_max: 312,\n y_min: -390,\n y_max: 28,\n ha: 418,\n o: 'm 0 -562 b 393 -256 171 -504 307 -412 b 449 -39 431 -189 449 -115 b 448 -1 449 -26 449 -14 b 433 40 446 14 448 40 b 408 -3 410 40 412 14 b 396 -66 403 -23 402 -46 b 45 -397 346 -243 209 -337 b 0 -451 13 -409 1 -423 b 0 -562 -1 -485 0 -520 z',\n },\n brassDoitMedium: {\n x_min: -0.32815253965710617,\n x_max: 476.21251177608565,\n y_min: -50,\n y_max: 333.1535583875376,\n ha: 383.1535583875376,\n o: 'm 16 -72 b 27 -71 19 -72 23 -72 b 215 -33 89 -56 153 -48 b 521 114 327 -7 435 35 b 685 432 615 199 691 295 b 670 480 684 449 688 475 b 642 441 654 482 648 456 b 403 183 599 321 513 240 b 79 89 301 130 192 105 b 0 -1 -12 76 0 76 b 0 -50 0 -17 1 -33 b 16 -72 0 -65 3 -72 z',\n },\n brassFallLipShort: {\n x_min: 0,\n x_max: 298,\n y_min: -344,\n y_max: 65,\n ha: 409,\n o: 'm 396 -495 b 420 -461 412 -487 418 -474 b 429 -382 428 -435 429 -409 b 426 -330 429 -364 428 -347 b 285 -6 410 -209 356 -104 b 98 94 239 59 173 94 b 39 86 79 94 58 92 b 0 49 20 81 0 73 l 0 -52 b 10 -69 0 -62 1 -69 b 20 -68 13 -69 16 -69 b 88 -56 45 -59 66 -56 b 261 -160 156 -56 213 -95 b 396 -495 333 -259 382 -369 z',\n },\n brassLiftMedium: {\n x_min: 0,\n x_max: 807,\n y_min: 0,\n y_max: 838,\n ha: 838,\n o: 'm 50 0 b 55 1 52 0 53 0 b 58 23 65 7 59 16 b 55 58 56 36 55 48 b 130 117 55 99 75 112 b 220 213 202 121 220 141 b 315 308 220 289 238 308 l 336 308 b 408 380 393 310 406 321 b 461 452 409 438 416 452 b 485 451 468 452 477 451 b 569 510 531 448 556 464 b 573 543 572 520 572 531 b 657 619 580 605 595 618 b 698 621 670 619 684 619 b 788 700 749 625 778 649 b 798 778 792 726 793 752 b 873 857 806 841 809 845 b 985 950 927 867 973 887 b 1084 1047 1002 1035 1004 1034 b 1162 1128 1133 1056 1162 1087 b 1146 1182 1162 1145 1158 1164 b 1125 1207 1140 1191 1136 1207 l 1122 1207 b 1110 1191 1113 1205 1110 1198 b 1112 1174 1110 1185 1112 1178 b 1048 1110 1109 1126 1096 1113 b 1028 1109 1043 1110 1035 1109 b 939 1022 969 1102 948 1081 b 845 922 929 949 917 936 b 746 812 773 909 753 886 b 744 780 744 802 744 791 b 635 681 737 700 717 683 b 524 583 553 680 536 665 b 439 510 514 520 503 510 b 357 431 377 510 360 492 l 357 406 b 314 364 356 379 343 364 b 238 361 288 364 264 364 b 173 300 202 357 180 334 b 167 245 168 281 167 262 b 105 174 166 192 157 180 b 75 171 95 173 85 171 b 6 112 30 166 14 153 b 0 73 1 98 0 85 b 37 10 0 45 13 26 b 50 0 42 7 46 0 z',\n },\n brassFallRoughMedium: {\n x_min: 0,\n x_max: 791,\n y_min: 0,\n y_max: 819,\n ha: 819,\n o: 'm 1117 0 b 1139 101 1129 26 1139 71 b 1138 121 1139 109 1139 115 b 1084 193 1125 171 1110 193 b 1044 183 1073 193 1060 189 b 1022 177 1035 179 1028 177 b 1007 209 1012 177 1008 186 b 876 324 1004 292 959 330 b 799 317 850 321 825 320 b 759 354 772 314 755 320 b 760 373 760 360 760 366 b 759 392 760 379 760 384 b 681 477 753 451 730 477 b 654 474 672 477 664 475 b 606 467 638 471 622 468 b 586 465 599 465 592 465 b 564 481 570 465 564 469 b 569 505 564 487 566 495 b 575 553 572 521 575 537 b 572 585 575 564 573 575 b 481 665 560 657 539 668 b 412 665 458 664 435 665 b 382 690 392 667 382 672 b 383 700 382 693 383 696 b 386 773 387 724 387 749 b 297 858 382 828 351 857 b 229 861 274 858 251 858 b 190 897 207 863 193 871 b 163 1012 186 936 180 976 b 79 1084 145 1050 124 1084 b 66 1083 75 1084 71 1083 b 43 1096 49 1081 43 1087 b 48 1112 43 1100 45 1106 b 53 1130 52 1119 53 1125 b 39 1169 53 1145 45 1158 b 26 1179 36 1175 30 1179 b 16 1171 22 1179 17 1176 b 0 1103 10 1149 0 1126 b 9 1067 0 1092 1 1079 b 91 1021 26 1031 52 1018 b 145 978 122 1024 141 1011 b 156 913 147 956 151 935 b 291 795 170 831 210 795 b 346 768 337 795 346 796 b 344 743 346 760 344 753 b 343 716 344 733 343 724 b 455 600 343 651 390 602 b 505 605 471 599 490 605 b 528 598 514 605 523 603 b 536 579 534 592 536 586 b 524 523 536 562 526 541 b 523 505 524 517 523 511 b 621 405 523 442 560 405 b 639 406 626 405 634 406 b 677 413 652 408 664 410 b 701 416 687 415 696 416 b 721 392 716 416 721 410 b 720 373 721 386 720 380 b 831 255 714 301 759 252 b 897 261 854 255 876 261 b 926 262 909 261 919 262 b 969 197 963 262 965 252 b 971 184 969 193 971 189 b 1031 115 979 137 998 115 b 1071 122 1043 115 1056 118 b 1096 130 1079 125 1086 127 b 1087 59 1094 107 1087 82 b 1117 0 1087 37 1094 17 z',\n },\n brassBend: {\n x_min: 0,\n x_max: 381,\n y_min: 0,\n y_max: 367,\n ha: 367,\n o: 'm 298 0 b 472 50 359 0 418 14 b 537 135 501 71 530 92 b 543 216 543 163 543 190 l 543 266 b 544 308 543 281 543 295 b 549 433 546 354 549 395 b 543 507 549 459 547 482 b 533 528 541 516 544 528 b 511 508 524 528 514 520 b 508 478 510 498 508 488 b 504 318 507 425 504 372 b 505 264 504 300 505 282 b 446 181 505 220 484 199 b 294 150 396 160 344 150 b 92 194 226 150 158 167 b 45 269 62 207 45 230 b 46 359 46 300 46 328 b 37 497 46 405 45 451 b 27 523 36 507 37 523 b 4 498 14 524 6 513 b 3 481 3 492 3 487 b 0 409 1 456 0 433 b 4 228 0 348 4 288 b 3 177 4 210 4 194 b 68 53 1 125 20 84 b 200 10 108 27 154 17 b 298 0 233 4 266 0 z',\n },\n brassMuteClosed: {\n x_min: 0,\n x_max: 274,\n y_min: 0,\n y_max: 260,\n ha: 260,\n o: 'm 203 0 b 209 1 206 0 207 0 b 216 13 215 4 216 9 l 215 27 l 215 153 b 216 161 216 156 216 158 b 372 164 268 163 318 164 b 395 184 383 164 395 166 l 395 189 b 357 229 392 209 386 229 b 219 228 311 229 265 228 l 223 310 b 209 357 225 328 219 344 b 189 374 203 364 197 374 b 184 373 187 374 186 373 b 177 359 179 372 177 366 l 177 348 l 173 222 l 39 222 b 0 206 12 222 0 219 b 10 174 0 199 3 189 b 46 157 19 157 30 157 b 108 160 68 158 88 160 b 171 161 130 161 150 161 l 167 58 b 184 16 167 40 171 26 b 203 0 192 12 196 0 z',\n },\n brassMuteOpen: {\n x_min: 1,\n x_max: 313.01193341111656,\n y_min: 0,\n y_max: 309,\n ha: 309,\n o: 'm 265 0 b 451 189 363 7 452 88 l 451 215 b 348 383 441 285 405 343 b 209 445 288 426 248 445 b 84 379 168 445 132 420 b 69 364 79 373 73 369 b 1 213 30 323 1 275 b 230 0 1 88 94 0 z m 210 62 b 128 73 181 62 154 66 b 40 171 71 91 42 125 b 52 226 40 187 45 206 b 197 374 79 295 130 344 b 228 382 207 380 217 382 b 300 361 252 382 276 370 b 374 308 328 350 353 331 b 410 223 397 284 410 253 b 393 163 410 202 405 181 b 210 62 354 91 288 63 z',\n },\n brassFlip: {\n x_min: 0,\n x_max: 402,\n y_min: 0,\n y_max: 361,\n ha: 361,\n o: 'm 579 0 b 511 153 579 68 557 117 b 52 504 359 271 206 387 b 29 520 45 510 39 520 b 20 517 26 520 23 518 b 0 477 3 510 0 494 l 0 125 b 17 20 1 92 1 56 b 40 84 37 40 40 60 b 42 287 40 151 42 219 l 42 363 z',\n },\n brassJazzTurn: {\n x_min: 0,\n x_max: 646,\n y_min: 0,\n y_max: 212,\n ha: 212,\n o: 'm 310 0 b 367 33 327 0 344 10 b 389 55 374 40 382 49 b 490 145 423 85 456 114 b 507 154 495 151 501 154 b 524 144 513 154 517 151 b 598 72 547 120 575 98 b 700 24 625 42 662 24 b 765 43 721 24 744 30 b 893 147 812 72 855 105 b 930 212 910 166 923 186 b 912 215 923 213 917 215 b 871 199 896 215 883 209 b 812 153 852 183 832 167 b 789 144 805 148 796 144 b 773 156 782 144 776 147 b 691 251 757 199 720 222 b 603 301 658 282 631 301 b 527 258 580 301 556 288 b 420 156 494 222 455 190 b 399 143 412 147 405 143 b 377 157 392 143 386 147 b 259 282 340 200 300 242 b 219 305 245 298 232 305 b 177 279 204 305 192 297 b 55 127 137 228 95 177 b 0 52 36 104 20 79 b 14 50 6 50 10 50 b 53 66 32 50 45 58 b 115 131 75 88 98 108 b 135 148 124 143 130 148 b 157 132 141 148 148 143 b 252 33 186 96 219 65 b 310 0 275 12 292 0 z',\n },\n brassSmear: {\n x_min: 0,\n x_max: 334,\n y_min: 0,\n y_max: 151,\n ha: 151,\n o: 'm 321 0 b 475 125 390 0 436 43 b 481 143 478 131 481 137 b 475 154 481 147 480 151 b 449 148 468 158 458 154 b 395 132 432 137 413 132 b 343 140 377 132 360 137 b 229 194 301 148 266 173 b 168 217 206 209 186 217 b 109 192 148 217 130 209 b 0 26 59 148 32 89 b 59 63 32 29 45 48 b 98 84 72 78 84 84 b 130 73 108 84 118 81 b 213 26 157 58 183 37 b 321 0 255 9 289 0 z',\n },\n stringsDownBow: {\n x_min: 0,\n x_max: 306,\n y_min: -0.09607201951262866,\n y_max: 366,\n ha: 366.09607201951263,\n o: 'm 405 0 b 425 17 413 -1 420 9 b 439 66 435 32 439 48 b 441 268 439 137 441 202 b 436 412 441 314 439 361 l 435 413 b 423 469 435 436 431 456 b 344 508 406 501 373 501 b 204 527 298 520 251 527 b 60 498 156 527 108 518 b 7 438 32 485 10 468 l 7 426 b 4 337 7 396 7 367 b 0 140 0 272 0 206 b 1 42 0 107 0 73 b 13 3 1 27 -3 4 b 40 39 29 3 35 24 b 42 53 42 43 40 49 b 49 141 48 84 49 112 b 48 215 49 167 48 192 b 49 252 48 228 48 240 l 49 312 b 130 343 72 331 99 340 b 206 347 156 346 180 347 b 372 314 262 347 318 338 l 390 307 l 390 245 b 390 138 392 212 390 176 b 397 23 390 101 392 62 b 405 0 399 14 393 1 z',\n },\n stringsUpBow: {\n x_min: 0,\n x_max: 219.2842808242076,\n y_min: 0,\n y_max: 489,\n ha: 489,\n o: 'm 151 0 b 184 42 170 12 180 26 b 297 554 223 212 261 382 b 315 690 305 598 318 645 b 304 704 315 697 311 704 b 276 670 288 704 282 697 b 157 131 236 490 196 311 l 157 144 b 73 526 134 276 104 396 b 30 677 60 576 52 638 b 13 694 26 684 22 694 b 0 674 9 694 0 691 l 0 671 b 10 603 3 649 6 626 b 105 174 42 461 72 317 b 150 0 117 117 128 58 z',\n },\n stringsHarmonic: {\n x_min: 0,\n x_max: 191,\n y_min: 0,\n y_max: 202,\n ha: 202,\n o: 'm 143 0 b 275 122 217 0 275 53 b 127 291 275 206 202 291 b 0 154 63 291 0 222 b 143 0 0 76 71 0 z m 122 68 b 43 105 89 66 59 75 b 39 124 40 111 39 117 b 79 199 39 148 56 180 b 145 226 101 216 122 226 b 199 210 163 226 180 220 b 235 150 223 196 235 173 b 203 92 235 128 225 107 b 122 68 181 76 150 68 z',\n },\n pluckedSnapPizzicatoAbove: {\n x_min: 0,\n x_max: 201,\n y_min: 0,\n y_max: 325,\n ha: 325,\n o: 'm 171 0 b 289 99 240 0 289 45 b 258 183 289 130 274 156 b 174 269 236 217 203 240 l 174 408 b 174 429 174 415 176 422 b 131 468 168 451 153 468 b 117 451 120 468 117 461 b 118 429 117 444 118 435 b 115 307 117 389 115 347 b 0 166 59 295 0 223 b 171 0 0 85 89 0 z m 134 55 b 52 131 84 55 52 85 b 115 233 52 179 81 209 b 114 192 114 220 114 206 b 174 120 114 137 114 137 l 174 228 b 233 148 200 207 223 183 b 236 130 235 143 236 135 b 197 72 236 105 223 85 b 134 55 177 60 157 55 z',\n },\n pluckedSnapPizzicatoBelow: {\n x_min: 0,\n x_max: 211,\n y_min: 0,\n y_max: 307,\n ha: 307,\n o: 'm 145 7 b 163 0 153 3 158 0 b 173 23 170 0 173 7 l 173 140 l 170 140 l 170 163 l 171 163 b 206 170 179 164 193 166 b 304 287 264 186 304 233 b 281 354 304 308 297 333 b 118 442 240 412 186 439 b 0 324 69 442 0 370 b 115 176 0 266 55 202 l 115 56 b 145 7 114 33 125 19 z m 115 220 b 62 256 92 223 73 230 b 53 292 56 269 53 281 b 78 344 53 311 60 328 b 168 384 105 372 135 384 b 213 376 183 384 199 382 b 253 321 239 366 253 346 b 246 291 253 311 251 301 b 170 226 230 256 203 236 l 170 258 b 148 305 171 278 163 292 b 128 315 143 310 135 315 l 124 315 b 115 301 117 314 115 308 z',\n },\n pluckedLeftHandPizzicato: {\n x_min: 0,\n x_max: 271,\n y_min: 0,\n y_max: 284,\n ha: 284,\n o: 'm 213 0 b 223 14 222 0 223 7 b 222 35 223 22 222 29 l 222 176 b 373 170 272 174 323 170 b 390 180 382 170 390 171 l 390 184 b 347 232 386 207 382 232 b 219 238 307 233 266 235 l 219 364 b 171 409 219 395 193 409 b 156 393 160 409 156 402 b 158 370 156 384 158 376 l 158 240 b 16 239 115 240 66 239 b 0 226 7 239 0 238 l 0 223 b 50 179 1 203 29 179 b 158 177 86 179 122 179 l 158 63 b 161 29 158 52 158 40 b 213 0 166 -1 194 1 z',\n },\n keyboardPedalPed: {\n x_min: 0,\n x_max: 944,\n y_min: -13,\n y_max: 550,\n ha: 563,\n o: 'm 22 0 b 109 78 53 0 105 46 l 144 333 b 163 376 147 347 140 372 b 364 465 238 390 301 426 b 454 599 416 497 454 540 b 452 618 454 605 454 612 b 320 770 442 694 396 747 b 248 779 295 778 272 779 b 193 778 229 779 212 779 b 160 780 181 778 167 775 b 137 792 153 789 144 791 b 109 789 128 792 118 789 b 7 719 59 789 48 737 b 23 708 16 714 20 708 b 36 710 29 710 33 710 b 53 684 52 710 53 698 l 53 674 b 43 386 53 577 53 482 b 20 164 36 312 30 238 b 1 30 14 120 7 75 b 0 19 0 26 0 22 b 22 0 0 9 4 0 z m 171 425 b 156 442 160 425 156 429 b 157 475 157 452 157 464 b 164 602 161 517 164 560 b 161 698 164 635 163 667 b 184 729 161 720 167 729 l 193 729 b 348 563 278 719 348 641 b 346 539 348 554 347 547 b 171 425 328 459 229 422 z m 979 6 b 1008 13 986 6 995 9 b 1081 101 1047 29 1079 46 b 1116 449 1087 217 1104 333 b 1143 654 1123 518 1133 586 b 1148 685 1145 664 1148 675 b 1140 704 1148 693 1146 700 b 1107 716 1130 713 1119 716 b 1056 706 1092 716 1073 710 b 1037 671 1035 703 1038 685 b 1004 439 1025 595 1014 517 b 986 419 1001 428 999 419 b 979 419 985 419 982 420 b 935 426 965 423 949 425 b 795 376 884 426 838 405 b 664 153 714 323 664 249 b 665 130 664 145 665 138 b 753 29 671 65 704 29 b 815 40 773 29 792 33 b 975 147 873 65 923 101 b 965 45 971 108 968 76 b 979 6 963 17 966 6 z m 393 -17 b 634 145 494 16 579 52 b 638 160 636 151 638 156 b 625 168 638 166 634 168 b 621 167 624 168 622 168 b 524 118 582 164 544 160 b 495 79 517 104 505 92 b 435 33 471 49 452 33 b 380 96 416 33 397 55 b 369 145 373 114 369 131 b 442 225 369 186 395 213 b 468 232 451 228 459 229 b 654 344 539 255 606 285 b 677 395 667 360 677 376 b 672 415 677 402 675 408 b 612 459 661 442 639 455 b 589 461 602 461 592 461 b 348 328 500 461 409 408 b 269 120 302 268 269 199 b 379 -19 269 45 318 -19 b 393 -17 383 -19 389 -19 z m 395 240 b 494 383 418 300 452 344 l 521 405 b 544 419 528 409 536 418 b 554 415 547 419 550 418 b 570 383 564 406 570 396 l 570 379 b 552 331 570 360 562 344 b 395 240 511 285 462 253 z m 827 89 b 792 111 815 89 804 96 b 766 204 775 131 766 158 b 845 360 772 256 799 314 b 871 372 854 369 863 372 b 897 366 880 372 888 369 b 978 279 942 353 963 320 b 976 259 981 272 981 265 b 858 104 942 203 909 147 b 827 89 847 94 837 89 z m 1282 12 b 1336 35 1303 14 1320 23 b 1359 71 1351 45 1359 58 b 1338 102 1359 82 1352 95 b 1254 130 1312 118 1284 130 b 1187 88 1223 130 1202 109 b 1178 65 1182 81 1178 72 b 1195 37 1178 55 1182 45 b 1282 12 1223 23 1253 19 z',\n },\n keyboardPedalUp: {\n x_min: 0,\n x_max: 436.6015132318337,\n y_min: 0,\n y_max: 461,\n ha: 461,\n o: 'm 330 0 b 334 1 331 0 333 0 b 340 12 338 4 340 7 l 338 26 b 340 264 338 105 338 184 b 526 95 400 206 461 148 b 559 71 536 88 547 71 b 564 72 560 71 563 71 b 580 121 580 79 580 102 l 580 127 b 543 203 585 158 573 184 b 472 259 518 219 495 238 l 445 285 b 590 292 494 288 541 291 b 622 318 609 294 618 302 b 628 359 625 331 626 346 b 586 402 632 393 621 405 b 464 395 546 399 504 396 l 559 491 b 567 524 567 500 567 510 b 564 543 567 527 567 536 b 539 596 559 563 560 590 b 494 564 521 600 508 577 b 340 413 442 514 390 464 l 340 560 b 287 664 340 600 321 632 b 271 518 274 612 272 566 b 268 445 269 494 269 469 b 117 569 219 488 168 530 b 96 579 109 575 102 579 b 85 560 89 579 85 573 b 124 446 85 518 82 477 b 209 380 153 426 181 403 b 45 374 154 377 99 376 b 0 324 9 374 0 359 b 63 266 0 265 1 265 b 144 272 89 269 117 272 l 196 272 b 108 193 167 246 138 219 b 60 135 76 164 60 151 b 99 73 60 121 73 105 b 104 68 101 72 102 71 b 114 58 107 60 111 58 b 130 66 120 58 124 62 b 259 186 173 107 217 145 b 256 117 259 163 256 140 b 311 13 256 72 271 37 b 330 0 317 10 323 0 z',\n },\n pictChokeCymbal: {\n x_min: 1,\n x_max: 147,\n y_min: 0,\n y_max: 242,\n ha: 242,\n o: 'm 79 4 b 207 158 153 32 192 88 b 212 200 210 173 212 187 b 143 336 212 253 187 298 b 98 348 131 344 115 348 b 4 295 60 348 16 327 b 1 276 1 289 1 282 b 9 249 1 266 3 258 b 121 183 35 206 72 183 b 156 186 132 183 144 183 b 26 53 134 115 91 73 b 7 39 13 49 7 45 b 19 20 7 33 12 27 b 59 0 30 9 43 0 b 79 4 65 0 72 1 z',\n },\n wiggleArpeggiatoUp: {\n x_min: -22,\n x_max: 300,\n y_min: 0,\n y_max: 176,\n ha: 176,\n o: 'm 173 4 b 196 0 180 1 189 0 b 246 26 215 0 230 9 b 301 117 271 53 285 85 b 312 131 305 125 307 131 b 327 124 315 131 321 128 b 373 86 341 112 353 101 b 412 69 389 75 402 69 b 432 94 425 69 432 79 b 373 181 432 117 413 154 b 235 252 323 216 285 245 b 220 253 229 253 225 253 b 168 215 196 253 181 240 b 111 112 151 180 140 141 b 94 102 105 105 99 102 b 78 111 89 102 84 105 b 0 181 55 135 35 160 b -32 153 -20 194 -32 168 b 0 86 -32 124 -32 109 b 94 36 22 71 73 46 b 173 4 134 16 131 17 z',\n },\n arpeggiatoUp: {\n x_min: 0,\n x_max: 262,\n y_min: 0,\n y_max: 1459,\n ha: 1459,\n o: 'm 190 0 b 160 63 187 29 170 45 b 145 108 150 81 145 95 b 183 163 145 128 157 145 b 300 246 222 190 262 216 b 347 318 333 272 347 295 b 301 393 347 341 331 364 b 258 413 289 403 272 408 b 145 449 220 425 183 436 b 117 464 135 452 120 452 b 140 491 115 477 128 484 b 294 593 192 526 243 557 b 330 647 318 611 330 626 b 314 693 330 660 324 675 b 262 736 302 714 285 729 b 170 763 230 744 200 753 b 122 783 153 768 125 768 b 160 831 120 804 143 818 b 288 922 202 861 246 890 b 333 999 318 945 333 972 b 266 1083 333 1032 310 1064 b 189 1115 240 1094 215 1103 b 122 1178 145 1133 122 1153 b 168 1250 122 1200 138 1223 l 180 1257 b 269 1333 210 1283 240 1306 b 305 1405 294 1356 305 1381 b 284 1469 305 1426 298 1447 b 228 1525 269 1492 251 1511 b 183 1600 197 1545 183 1571 b 190 1640 183 1613 184 1626 b 197 1670 193 1650 194 1660 b 272 1735 213 1719 230 1735 b 295 1734 279 1735 287 1735 b 323 1732 305 1732 314 1732 b 350 1731 333 1732 341 1732 b 377 1742 369 1729 377 1732 b 370 1761 377 1747 374 1754 l 301 1898 b 217 2066 274 1954 248 2012 b 186 2101 204 2089 196 2101 b 154 2069 177 2101 167 2091 b 12 1824 105 1987 59 1907 b 0 1787 4 1810 0 1797 b 59 1744 0 1761 20 1745 b 160 1738 92 1744 125 1740 b 145 1692 156 1721 151 1706 b 135 1633 138 1672 135 1652 b 184 1518 135 1591 151 1552 b 229 1475 199 1503 213 1488 b 259 1431 249 1456 259 1444 b 229 1388 259 1420 249 1407 b 151 1325 203 1365 177 1345 b 105 1279 134 1310 118 1296 b 73 1202 84 1251 73 1227 b 108 1123 73 1176 85 1152 b 255 1031 148 1077 199 1051 b 282 1014 274 1025 282 1021 b 262 991 282 1008 275 1001 b 151 914 226 963 189 939 b 79 851 125 896 99 877 b 63 809 69 837 63 824 b 79 769 63 796 68 783 b 202 697 111 729 154 710 b 266 670 225 690 266 688 b 210 622 266 648 232 635 b 82 534 167 593 120 570 b 55 491 63 518 55 505 b 79 448 55 478 63 465 b 255 361 127 395 192 380 b 288 343 269 359 288 357 b 266 312 288 331 275 320 b 144 223 229 278 184 253 b 85 134 104 193 85 166 b 118 53 85 111 96 85 b 190 0 135 29 160 14 z',\n },\n arpeggiatoDown: {\n x_min: 0,\n x_max: 218,\n y_min: 0,\n y_max: 1440,\n ha: 1440,\n o: 'm 161 16 b 310 261 210 98 259 180 b 314 275 312 266 314 271 b 302 295 314 282 310 289 b 252 311 287 308 269 311 b 217 310 240 311 229 310 b 190 333 202 310 194 315 b 151 412 186 363 171 389 b 102 501 120 452 102 477 b 150 588 102 524 118 547 b 161 603 154 592 158 598 b 181 661 176 622 181 641 b 173 704 181 675 179 690 b 86 795 156 746 121 770 b 53 829 63 811 53 819 b 78 868 53 840 62 851 b 102 888 85 876 94 883 b 180 956 128 912 156 933 b 216 1028 204 979 216 1002 b 203 1081 216 1044 212 1061 b 115 1171 186 1123 148 1145 b 75 1221 88 1191 75 1207 b 114 1272 75 1237 88 1251 b 173 1308 132 1284 154 1296 b 226 1339 190 1318 209 1328 b 265 1405 253 1359 265 1380 b 258 1447 265 1418 264 1431 b 154 1541 242 1499 199 1521 b 109 1581 124 1555 109 1567 b 141 1627 109 1594 121 1608 b 204 1680 163 1646 184 1662 b 233 1742 223 1699 233 1719 b 226 1777 233 1752 230 1764 b 135 1862 210 1822 173 1840 b 104 1895 114 1875 104 1884 b 118 1930 104 1904 109 1914 b 192 2006 135 1961 161 1986 b 206 2029 203 2013 206 2022 b 192 2064 206 2040 197 2052 b 180 2074 187 2071 184 2074 b 156 2061 171 2074 163 2065 b 84 1983 125 2040 102 2013 b 65 1921 71 1961 65 1941 b 88 1853 65 1899 72 1876 b 171 1784 108 1820 138 1801 b 190 1764 184 1777 190 1770 b 174 1741 190 1757 184 1750 b 107 1683 153 1722 128 1704 b 68 1610 81 1659 68 1636 b 88 1548 68 1591 75 1571 b 177 1470 109 1512 141 1489 b 223 1431 209 1453 223 1443 b 179 1390 223 1420 209 1408 b 128 1361 163 1380 145 1371 b 71 1322 108 1348 88 1338 b 32 1253 45 1300 32 1277 b 48 1198 32 1236 37 1218 b 147 1090 71 1152 108 1120 b 174 1057 166 1076 174 1067 b 153 1022 174 1047 167 1037 b 109 982 140 1008 124 995 b 37 919 85 962 59 942 b 9 860 17 899 9 880 b 26 806 9 844 14 827 b 120 717 50 769 84 740 b 138 691 132 708 138 700 b 130 668 138 684 135 677 b 92 618 118 651 105 635 b 59 531 71 589 59 560 b 84 455 59 507 68 481 b 132 386 98 431 115 408 b 148 341 144 372 148 357 b 144 317 148 333 147 324 b 121 305 140 307 131 305 l 98 305 b 82 304 94 304 88 304 l 32 304 b 0 292 10 304 0 302 b 12 266 0 287 4 279 b 60 164 32 233 46 199 b 127 20 84 117 105 68 b 144 0 132 9 137 0 b 161 16 150 0 154 4 z',\n },\n repeat1Bar: {\n x_min: 0,\n x_max: 599.1057280164835,\n y_min: -250,\n y_max: 175,\n ha: 425,\n o: 'm 216 98 b 255 75 236 84 246 75 b 291 104 265 75 274 85 b 323 147 304 117 327 125 b 289 215 323 168 314 184 b 238 252 269 239 253 252 b 187 222 222 252 207 242 b 173 206 183 216 177 212 b 157 170 163 194 157 183 b 174 138 157 160 161 150 b 216 98 189 127 200 109 z m 76 -334 b 181 -285 111 -315 148 -302 b 831 52 396 -168 613 -58 b 863 114 855 63 864 82 b 828 202 855 140 855 176 b 808 213 821 209 815 213 b 793 209 804 213 799 212 l 422 19 b 26 -179 291 -48 164 -124 b 0 -213 10 -186 0 -196 b 3 -232 0 -219 0 -225 b 52 -325 14 -265 37 -294 b 66 -337 55 -331 59 -337 b 76 -334 69 -337 72 -336 z m 769 -360 b 829 -264 779 -360 829 -284 b 769 -176 822 -232 799 -200 b 742 -163 760 -167 750 -163 b 716 -184 733 -163 723 -168 b 683 -228 708 -202 693 -213 b 672 -253 675 -236 672 -245 b 683 -281 672 -262 675 -271 b 752 -353 703 -308 732 -327 b 769 -360 756 -357 763 -360 z',\n },\n repeat2Bars: {\n x_min: 0.008571918423331715,\n x_max: 775,\n y_min: -246.92374029115243,\n y_max: 362.82068246705313,\n ha: 609.7444227582056,\n o: 'm 909 412 b 873 351 906 384 893 367 b 436 50 729 249 585 147 l 91 -179 b 62 -174 76 -189 68 -183 b 12 -96 48 -147 24 -125 b 36 -16 -7 -53 -6 -43 b 220 104 96 24 158 65 b 819 507 425 232 624 369 b 881 495 852 530 861 528 b 909 412 899 469 900 439 z m 333 338 b 302 240 330 307 317 274 b 276 235 297 225 287 228 l 233 269 b 203 376 186 307 183 318 b 225 441 212 397 217 419 b 246 454 228 452 232 458 b 333 338 284 441 333 380 z m 1116 228 b 1067 158 1115 192 1092 174 b 910 59 1015 125 963 92 b 478 -240 762 -33 622 -140 b 311 -350 423 -279 366 -314 b 285 -344 298 -360 289 -356 b 239 -258 272 -314 251 -288 b 261 -196 228 -228 235 -210 b 517 -29 348 -144 436 -91 b 1030 321 681 98 861 202 b 1093 307 1060 343 1076 340 b 1116 228 1107 281 1109 252 z m 1070 -105 b 1020 -210 1057 -143 1038 -176 b 998 -210 1014 -219 1004 -215 l 924 -153 b 913 -88 899 -135 897 -112 b 949 -22 926 -66 939 -45 b 998 -7 960 6 976 9 b 1070 -105 1032 -32 1058 -63 z',\n },\n repeat4Bars: {\n x_min: 0,\n x_max: 1374,\n y_min: -304,\n y_max: 304,\n ha: 608,\n o: 'm 78 -266 b 92 -258 82 -266 88 -264 b 114 -240 98 -251 107 -246 b 638 107 289 -125 467 -14 b 873 271 716 161 793 216 b 907 337 894 285 906 305 b 887 400 901 354 897 379 b 852 438 877 426 867 438 b 814 420 842 438 829 432 b 135 -33 592 262 366 111 b 12 -121 92 -60 48 -84 b 0 -144 4 -128 0 -135 b 4 -160 0 -148 1 -154 b 63 -255 17 -196 45 -223 b 78 -266 68 -262 72 -266 z m 291 148 b 325 223 302 148 308 170 b 333 256 328 235 330 246 b 264 363 330 305 298 336 b 242 373 255 369 248 373 b 220 347 232 373 225 364 b 202 288 216 327 213 305 b 190 252 193 275 190 262 b 222 200 190 232 202 215 b 291 148 264 170 279 148 z m 815 -367 b 829 -359 819 -367 824 -364 b 851 -343 835 -353 844 -347 b 1375 6 1027 -228 1205 -117 l 1610 170 b 1644 235 1632 184 1643 203 b 1626 300 1639 253 1634 276 b 1590 337 1614 325 1604 337 b 1551 320 1580 337 1567 330 b 873 -135 1329 161 1103 10 b 749 -222 829 -161 785 -184 b 737 -245 742 -230 737 -238 b 742 -261 737 -249 739 -255 b 802 -357 755 -297 782 -325 b 815 -367 805 -363 809 -367 z m 396 -360 b 408 -356 400 -360 403 -359 b 609 -223 471 -307 543 -269 b 896 -19 706 -156 795 -81 b 1164 154 985 37 1074 96 b 1214 223 1189 170 1211 187 b 1176 321 1204 253 1205 292 b 1159 330 1169 327 1165 330 b 1145 324 1155 330 1151 328 b 1048 258 1113 302 1081 278 b 357 -202 809 117 598 -65 b 333 -238 341 -212 333 -223 b 338 -262 333 -245 334 -253 b 384 -350 350 -294 372 -318 b 396 -360 386 -354 390 -360 z m 1162 -438 b 1174 -433 1166 -438 1169 -436 b 1374 -300 1237 -384 1309 -346 b 1660 -96 1470 -233 1561 -158 b 1930 76 1751 -39 1840 19 b 1979 147 1954 92 1977 109 b 1943 243 1968 177 1971 216 b 1924 253 1935 251 1930 253 b 1911 248 1920 253 1915 252 b 1814 181 1878 225 1848 202 b 1123 -279 1575 40 1364 -141 b 1099 -315 1106 -289 1099 -300 b 1103 -338 1099 -321 1100 -330 b 1149 -426 1115 -370 1138 -396 b 1162 -438 1151 -432 1156 -438 z m 1875 -295 b 1882 -291 1878 -295 1879 -294 b 1934 -189 1904 -258 1921 -223 b 1872 -96 1925 -147 1901 -120 b 1840 -78 1858 -84 1848 -78 b 1812 -109 1830 -78 1823 -88 l 1777 -173 b 1770 -199 1773 -181 1770 -190 b 1786 -230 1770 -210 1774 -220 b 1862 -289 1809 -253 1837 -269 b 1875 -295 1865 -292 1871 -295 z',\n },\n repeatBarSlash: {\n x_min: 0,\n x_max: 630,\n y_min: -225.19160170741762,\n y_max: 265.12618221237005,\n ha: 490.31778391978764,\n o: 'm 78 -324 b 92 -314 82 -325 88 -321 b 114 -298 96 -307 107 -302 b 638 49 289 -183 467 -72 b 873 215 716 104 792 161 b 907 279 894 229 906 248 b 887 344 901 298 897 321 b 852 382 877 369 867 380 b 814 363 842 383 829 376 b 135 -91 603 192 364 55 b 12 -177 92 -118 45 -137 b 0 -202 4 -186 0 -192 b 4 -217 0 -206 1 -212 b 63 -312 17 -253 42 -284 b 78 -324 68 -318 72 -323 z',\n },\n csymDiminished: {\n x_min: 0,\n x_max: 506,\n y_min: -0.011036179317259481,\n y_max: 500,\n ha: 500.0110361793173,\n o: 'm 397 0 b 729 265 576 -1 729 95 b 711 367 729 297 723 331 b 472 670 668 498 586 595 b 315 720 423 701 372 720 b 253 713 295 720 275 719 b 32 514 144 687 75 615 b 0 374 12 468 0 420 b 27 251 0 333 9 292 b 140 117 52 196 92 153 b 397 0 223 52 317 4 z m 340 95 b 132 314 233 84 122 216 b 324 589 145 438 200 539 b 415 611 360 603 389 611 b 544 505 469 611 505 576 b 590 392 564 471 583 432 b 596 343 593 374 596 359 b 340 95 596 210 485 96 z',\n },\n csymHalfDiminished: {\n x_min: -32,\n x_max: 496,\n y_min: -33,\n y_max: 492,\n ha: 525,\n o: 'm -29 -48 b 0 -36 -19 -48 -9 -40 b 17 -20 7 -32 12 -24 b 134 94 56 19 95 56 b 372 0 207 43 282 0 b 455 13 397 0 426 4 b 677 258 556 45 671 141 b 678 289 677 268 678 278 b 593 539 678 380 654 467 b 592 541 593 540 592 540 l 684 632 b 713 678 700 647 711 665 b 714 691 714 684 714 688 b 707 704 714 698 711 701 b 691 708 701 707 696 708 b 660 691 680 708 670 701 l 552 585 b 478 634 530 606 507 624 b 361 684 438 648 397 661 b 301 703 341 697 320 703 b 226 677 275 703 251 693 b 27 449 140 618 72 543 b 0 324 9 410 -4 370 b 88 128 -1 243 30 177 b -30 -7 43 86 0 46 b -46 -33 -35 -16 -46 -24 b -42 -42 -46 -36 -45 -39 b -29 -48 -37 -46 -33 -48 z m 141 179 b 121 251 128 200 121 225 b 128 297 121 265 124 281 b 351 575 163 420 248 505 b 377 582 359 579 369 580 b 501 536 422 586 468 567 b 141 179 382 416 261 298 z m 281 105 b 179 137 240 105 206 117 b 210 168 189 147 200 157 l 537 487 b 547 455 541 477 544 467 b 556 370 552 426 556 397 b 429 154 556 274 503 207 b 281 105 384 122 336 105 z',\n },\n csymAugmented: {\n x_min: 0,\n x_max: 530,\n y_min: 0,\n y_max: 539,\n ha: 539,\n o: 'm 380 0 b 393 14 384 4 390 9 b 397 46 397 24 397 36 l 397 333 b 736 327 511 331 624 330 b 763 343 755 327 763 333 b 755 361 763 348 760 354 b 635 431 726 402 688 431 l 390 431 l 390 485 b 386 606 392 526 386 566 b 392 664 386 625 387 645 b 395 690 393 672 395 681 b 376 753 395 711 389 734 b 357 776 372 762 369 776 b 350 775 354 776 353 776 b 327 740 337 769 327 759 b 327 621 328 700 327 661 b 330 438 328 559 328 498 l 29 438 b 4 431 20 438 7 442 b 0 413 3 425 0 419 b 7 399 0 408 1 403 b 131 338 45 369 85 340 b 331 334 199 336 265 334 b 333 163 333 276 333 220 b 366 13 333 109 348 63 b 380 0 367 7 374 4 z',\n },\n csymMajorSeventh: {\n x_min: 0,\n x_max: 593.1050509327923,\n y_min: 0,\n y_max: 569,\n ha: 569,\n o: 'm 124 1 l 497 27 b 819 50 605 35 711 43 b 854 98 847 52 855 63 b 812 200 845 128 835 166 b 564 585 730 328 648 456 b 435 786 521 652 480 720 b 397 819 419 809 408 819 b 369 792 387 819 379 811 b 7 173 248 585 128 379 b 0 150 3 166 0 158 b 7 128 0 143 3 135 b 89 10 30 86 65 50 b 109 0 95 1 102 0 z m 163 147 b 153 153 158 147 156 148 b 164 179 147 163 158 170 b 426 644 251 334 338 488 b 442 660 432 655 436 660 b 458 645 446 660 452 655 b 727 220 547 503 636 361 b 736 202 732 213 736 206 b 714 190 736 196 730 192 b 179 148 537 177 359 163 b 163 147 174 150 168 147 z',\n },\n csymMinor: {\n x_min: 0,\n x_max: 481.64484584675915,\n y_min: 193,\n y_max: 265.20435472429375,\n ha: 72.20435472429375,\n o: 'm 168 278 b 197 279 177 278 187 278 b 431 292 275 287 353 288 l 431 291 b 661 302 508 295 585 300 b 693 311 672 304 688 300 b 674 346 697 324 685 338 b 564 382 641 366 606 384 l 27 360 b 0 347 17 360 1 366 b 19 314 0 333 3 321 b 168 278 66 291 115 278 z',\n },\n csymParensLeftTall: {\n x_min: 0,\n x_max: 185,\n y_min: 0,\n y_max: 1034,\n ha: 1034,\n o: 'm 215 0 b 226 17 223 1 223 10 b 229 37 229 24 229 32 b 220 81 229 52 225 66 b 167 203 206 124 181 160 b 86 616 124 338 89 474 b 82 765 85 665 82 716 b 91 886 82 805 84 845 b 245 1319 120 1038 171 1184 b 266 1397 259 1346 266 1371 b 259 1443 266 1411 264 1427 b 226 1489 253 1463 248 1489 b 193 1454 212 1489 203 1467 b 114 1292 158 1404 140 1346 b 0 806 40 1138 0 978 b 3 721 0 779 0 750 b 1 677 1 707 1 693 b 36 418 1 593 16 504 b 144 96 62 307 95 199 b 196 12 158 66 179 39 b 212 0 200 7 204 0 z',\n },\n csymParensRightTall: {\n x_min: -40,\n x_max: 188.5411603861406,\n y_min: 0.20204102886728756,\n y_max: 1058,\n ha: 1057.7979589711326,\n o: 'm 30 1 b 63 14 42 -3 55 6 b 122 99 86 40 108 68 b 189 258 145 153 166 204 b 271 667 239 379 268 503 b 246 852 275 708 261 780 b 10 1495 197 1077 128 1295 b -14 1524 4 1505 1 1524 b -16 1522 -14 1524 -16 1524 b -46 1489 -33 1521 -43 1503 b -58 1417 -53 1464 -58 1440 b -36 1335 -58 1390 -52 1364 b 68 1138 0 1270 35 1204 b 163 883 108 1056 137 969 b 206 668 184 814 200 742 b 207 631 207 655 207 642 b 166 426 207 560 192 492 b 46 143 130 330 111 228 b 19 29 19 109 17 69 b 30 1 20 19 24 3 z',\n },\n csymBracketLeftTall: {\n x_min: 0,\n x_max: 328,\n y_min: 2,\n y_max: 807,\n ha: 805,\n o: 'm 68 3 b 76 4 71 3 73 3 b 186 13 112 12 150 13 b 240 13 204 13 222 13 l 287 13 b 379 17 317 13 348 13 b 472 121 435 24 472 69 b 467 156 472 132 469 144 b 446 174 462 168 456 174 l 439 174 b 327 166 402 167 364 166 b 265 167 307 166 285 167 l 209 167 b 187 475 199 269 189 372 b 166 985 186 645 187 815 l 377 1002 b 415 1001 389 1002 402 1001 b 456 1027 432 1001 448 1005 b 472 1096 467 1048 472 1073 b 464 1146 472 1113 469 1130 b 439 1162 459 1161 452 1162 b 40 1129 305 1151 173 1139 b 1 1093 17 1128 1 1120 b 0 1009 0 1064 0 1037 b 13 975 0 991 3 981 b 30 670 23 873 30 772 b 29 608 30 649 29 628 l 29 563 b 56 88 29 405 49 246 b 53 22 55 66 55 43 b 68 3 53 12 56 3 z',\n },\n csymBracketRightTall: {\n x_min: 0.8519422934604696,\n x_max: 306,\n y_min: -0.17180889215212544,\n y_max: 829.1037519824849,\n ha: 829.2755608746371,\n o: 'm 117 0 b 372 29 203 -3 287 20 l 373 29 b 406 32 383 30 395 30 b 436 60 428 33 432 43 b 441 109 439 76 441 92 b 433 200 441 140 436 170 b 409 696 422 366 409 530 b 416 887 409 763 416 831 b 415 920 416 899 415 910 l 415 1106 b 412 1135 415 1116 415 1126 l 412 1145 b 373 1189 413 1171 408 1192 b 321 1189 356 1189 338 1189 l 215 1189 l 215 1194 l 56 1194 b 6 1153 27 1195 10 1187 b 1 1064 3 1123 4 1093 b 22 1043 0 1050 6 1043 b 84 1044 42 1044 63 1044 b 264 1038 144 1044 203 1040 b 265 958 264 1011 265 985 b 262 845 265 920 264 883 b 259 710 259 801 259 755 b 279 243 259 554 271 399 b 285 170 281 219 284 194 b 95 151 222 161 158 156 b 29 81 27 147 27 147 l 29 73 b 105 0 33 0 33 0 z',\n },\n csymParensLeftVeryTall: {\n x_min: 0,\n x_max: 116,\n y_min: 0,\n y_max: 934.1531437146923,\n ha: 934.1531437146923,\n o: 'm 128 0 b 147 17 137 0 144 9 b 167 102 160 45 167 73 b 158 154 167 120 164 137 b 117 307 141 204 130 256 b 63 698 84 435 71 567 b 62 788 62 729 62 757 b 69 916 62 829 63 873 b 109 1172 81 1001 94 1087 b 132 1320 118 1221 137 1269 b 124 1345 131 1329 134 1342 b 96 1332 114 1346 102 1341 b 71 1269 82 1313 75 1292 b 39 1104 59 1214 48 1159 b 0 742 19 988 0 871 b 10 559 3 688 6 624 b 58 226 16 446 33 336 b 112 20 73 157 94 89 b 128 0 115 13 118 0 z',\n },\n csymParensRightVeryTall: {\n x_min: -20,\n x_max: 111.4332498248095,\n y_min: -0.07657185734616112,\n y_max: 1009,\n ha: 1009.0765718573462,\n o: 'm -3 0 b 20 22 9 -1 14 12 b 36 56 26 33 32 45 b 99 274 58 128 84 199 b 160 788 135 439 163 605 b 122 1181 164 912 145 1047 b 50 1431 108 1267 86 1351 b 36 1453 48 1439 46 1453 l 35 1453 l 30 1453 b 7 1423 17 1449 7 1440 b 27 1287 9 1377 10 1331 b 96 963 71 1184 85 1074 b 105 818 102 914 105 867 b 91 624 105 753 99 688 b -4 213 72 484 48 344 b -29 101 -19 174 -29 138 b -16 27 -29 76 -24 52 b -3 0 -13 17 -14 3 z',\n },\n csymDiagonalArrangementSlash: {\n x_min: -0.19862981551275186,\n x_max: 990,\n y_min: -26.946823529189132,\n y_max: 1027.5514326488437,\n ha: 1054.4982561780328,\n o: 'm 14 -37 b 58 -9 35 -45 46 -22 b 392 333 170 105 279 217 l 765 711 b 1372 1329 968 916 1168 1125 b 1424 1439 1403 1359 1417 1397 b 1426 1457 1424 1444 1426 1450 b 1416 1477 1426 1466 1423 1475 b 1374 1462 1400 1485 1385 1473 b 1181 1269 1309 1397 1246 1331 b 736 831 1031 1122 884 979 b 356 452 609 704 485 576 b 32 132 246 347 143 236 b 0 50 7 109 1 84 b 6 9 -1 37 3 23 b 14 -37 10 -9 0 -32 z',\n },\n accidentalNarrowReversedFlat: {\n x_min: 0,\n x_max: 208,\n y_min: -231,\n y_max: 449,\n ha: 680,\n o: 'm 272 -333 b 284 -320 278 -333 281 -328 b 300 -174 297 -272 300 -222 b 275 190 298 -52 279 68 b 268 445 272 275 268 360 l 268 490 b 264 612 269 530 265 572 b 236 647 264 632 252 645 l 235 647 b 217 618 220 647 220 628 b 207 526 210 588 207 556 b 210 432 207 494 210 464 b 216 268 213 377 215 323 l 216 230 l 215 232 b 154 256 194 240 174 251 b 111 264 138 261 124 264 b 3 153 50 264 10 223 b 0 94 0 132 0 114 b 194 -276 0 -63 68 -186 b 255 -323 215 -291 236 -307 b 272 -333 262 -330 268 -333 z m 233 -138 b 71 30 168 -92 105 -45 b 63 59 65 42 63 50 b 96 95 62 75 73 86 b 130 102 108 99 120 102 b 215 76 160 102 187 88 l 220 73 b 225 -22 220 42 222 10 b 233 -138 229 -62 230 -101 z',\n },\n accidentalNarrowReversedFlatAndFlat: {\n x_min: 0,\n x_max: 335,\n y_min: -231,\n y_max: 449,\n ha: 680,\n o: 'm 151 490 b 148 612 151 530 150 572 b 132 647 148 632 141 645 b 122 618 124 647 124 628 b 117 526 118 588 117 556 b 118 432 117 494 118 464 b 121 268 120 377 121 323 l 121 232 b 86 256 109 240 98 251 b 62 264 78 261 69 264 b 1 153 29 264 6 223 b 0 94 0 132 0 114 b 109 -276 0 -63 37 -186 b 144 -323 121 -291 132 -307 b 153 -333 147 -330 151 -333 b 160 -320 157 -333 158 -328 b 168 -174 167 -272 168 -222 b 154 190 168 -52 157 68 b 151 445 153 275 151 360 z m 480 153 b 372 264 472 223 432 264 b 328 256 359 264 344 261 b 268 232 308 251 288 240 l 266 230 l 266 268 b 272 432 266 323 269 377 b 275 526 272 464 275 494 b 265 618 275 556 272 588 b 248 647 262 628 262 647 l 246 647 b 219 612 230 645 219 632 b 215 490 217 572 213 530 l 215 445 b 207 190 215 360 210 275 b 183 -174 203 68 183 -52 b 199 -320 183 -222 186 -272 b 210 -333 202 -328 204 -333 b 228 -323 215 -333 220 -330 b 288 -276 246 -307 268 -291 b 482 94 415 -186 482 -63 b 480 153 482 114 482 132 z m 40 30 b 36 59 36 42 36 50 b 55 95 35 75 42 86 b 73 102 60 99 68 102 b 121 76 89 102 105 88 l 124 73 b 127 -22 124 42 125 10 l 131 -138 b 40 30 95 -92 60 -43 z m 419 59 b 412 30 419 50 418 42 b 249 -138 374 -43 314 -92 b 258 -22 252 -101 253 -62 b 262 73 261 10 262 42 l 268 76 b 353 102 295 88 323 102 b 386 95 363 102 374 99 b 419 59 409 86 420 75 z',\n },\n accidentalWilsonPlus: {\n x_min: 0,\n x_max: 298,\n y_min: -218,\n y_max: 218,\n ha: 436,\n o: 'm 232 -314 b 236 -301 236 -310 236 -305 l 236 -295 b 243 -52 239 -213 242 -132 l 369 62 b 429 200 413 101 425 147 b 416 243 429 216 428 236 b 383 225 406 251 393 232 l 377 220 b 246 98 336 177 291 138 b 249 242 248 145 246 193 b 225 304 251 265 242 287 b 209 314 220 308 215 314 b 204 312 207 314 206 312 b 196 292 196 310 196 300 b 193 184 194 256 194 220 b 187 48 192 140 190 94 b 46 -72 141 7 94 -32 b 0 -163 13 -98 0 -127 b 1 -187 0 -170 0 -179 b 10 -235 4 -203 6 -219 b 20 -255 12 -242 14 -251 b 36 -245 26 -259 30 -249 b 181 -109 85 -200 132 -154 b 176 -258 180 -158 176 -209 b 232 -314 176 -298 186 -307 z',\n },\n accidentalWilsonMinus: {\n x_min: 0,\n x_max: 284.2093390143919,\n y_min: -163,\n y_max: 163,\n ha: 326,\n o: 'm 386 -232 b 409 -163 415 -222 408 -180 b 382 -69 410 -120 408 -89 b 32 228 264 30 141 118 b 17 235 26 233 22 235 b 3 219 9 235 3 228 b 0 157 3 199 0 179 b 29 69 0 125 6 95 b 323 -194 115 -29 222 -111 b 374 -235 338 -206 353 -235 b 386 -232 377 -235 382 -233 z',\n },\n },\n fontFamily: 'Petaluma',\n resolution: 1000,\n generatedOn: '2022-06-26T17:47:23.560Z',\n};\n","/**\n * The Petaluma font was created by Steinberg Media.\n * https://github.com/steinbergmedia/petaluma\n */\nexport const PetalumaMetrics = {\n name: 'Petaluma',\n smufl: true,\n stave: {\n padding: 15,\n endPaddingMax: 15,\n endPaddingMin: 7,\n unalignedNotePadding: 12,\n },\n accidental: {\n noteheadAccidentalPadding: 1,\n leftPadding: 2,\n accidentalSpacing: 3,\n },\n clef: {\n default: {\n point: 32,\n width: 26,\n },\n small: {\n point: 26,\n width: 20,\n },\n annotations: {\n '8va': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: -1.4,\n shiftX: 12,\n },\n },\n small: {\n point: 16,\n treble: {\n line: -0.2,\n shiftX: 8,\n },\n },\n },\n '8vb': {\n smuflCode: 'timeSig8',\n default: {\n point: 18,\n treble: {\n line: 6,\n shiftX: 10,\n },\n bass: {\n line: 3.5,\n shiftX: 1,\n },\n },\n small: {\n point: 16,\n treble: {\n line: 5.3,\n shiftX: 6,\n },\n bass: {\n line: 3.1,\n shiftX: 0.5,\n },\n },\n },\n },\n // These may no longer be necessary\n lineCount: {\n '8': { point: 55, shiftY: 14 },\n '7': { point: 47, shiftY: 8 },\n '6': { point: 32, shiftY: 1 },\n '5': { point: 30, shiftY: -6 },\n '4': { point: 23, shiftY: -12 },\n },\n },\n parenthesis: {\n default: {\n point: 39,\n width: 7,\n },\n gracenote: {\n point: (39 * 3) / 5,\n width: 3,\n },\n },\n pedalMarking: {\n up: {\n point: 40,\n },\n down: {\n point: 34,\n },\n },\n // These are for numeric digits, such as in time signatures\n digits: {\n // used by timesig\n shiftLine: -1,\n point: 22,\n // used by tuplets\n tupletPoint: 16,\n shiftY: -2,\n },\n articulation: {\n articStaccatissimoAbove: {\n padding: 2,\n },\n articStaccatissimoBelow: {\n padding: 2,\n },\n },\n tremolo: {\n default: {\n point: 25,\n spacing: 5,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 13,\n offsetXStemDown: 1,\n },\n grace: {\n point: 18,\n spacing: 4,\n offsetYStemUp: -5,\n offsetYStemDown: 5,\n offsetXStemUp: 8,\n offsetXStemDown: 1,\n },\n },\n staveRepetition: {\n symbolText: {\n offsetX: 12,\n offsetY: 25,\n spacing: 5,\n },\n coda: {\n offsetY: 25,\n },\n segno: {\n offsetY: 10,\n },\n },\n noteHead: {\n displaced: {\n shiftX: -2,\n },\n },\n stem: {\n heightAdjustmentForFlag: -3,\n // These are stem (Y) offsets to the note heads. To shift the\n // noteheads (x-position) themselves, see glyphs.notehead.custom.\n noteHead: {\n noteheadTriangleUpHalf: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpBlack: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadTriangleUpWhole: {\n offsetYBaseStemUp: 5,\n offsetYBaseStemDown: 4,\n },\n noteheadXHalf: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXBlack: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadXWhole: {\n offsetYBaseStemUp: -4,\n offsetYBaseStemDown: 4,\n },\n noteheadHalf: {\n offsetYBaseStemDown: 1.8,\n offsetYBaseStemUp: -1.8,\n },\n noteheadBlack: {\n offsetYBaseStemDown: 2,\n offsetYBaseStemUp: -2,\n },\n noteheadSquareWhite: {\n offsetYBaseStemDown: -5,\n offsetYBaseStemUp: 5,\n },\n },\n },\n // Values under here are used by the Glyph class to reposition and rescale\n // glyphs based on their category. This should be the first stop for\n // custom font glyph repositioning.\n //\n // The glyph loader first looks up a specific set of settings based on the\n // glyph code, and if not found, uses the defaults from the category. See\n // glyphs.textNote for an example of this.\n //\n // Details in Glyph.lookupFontMetrics.\n glyphs: {\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n segno: {\n shiftX: -7,\n },\n flag: {\n shiftX: -0.77,\n flag16thUp: {\n shiftX: -0.75,\n },\n flag32ndUp: {\n shiftX: -0.85,\n },\n flag64thUp: {\n shiftX: -1.55,\n },\n flag128thUp: {\n shiftX: -1.3,\n },\n flag16thDown: {\n shiftX: -0.75,\n },\n flag32ndDown: {\n shiftX: -0.76,\n },\n flag64thDown: {\n shiftX: -1.5,\n },\n flag128thDown: {\n shiftX: -1.2,\n },\n staveTempo: {\n shiftX: -1,\n },\n },\n clef: {\n gClef: {\n default: { scale: 1.1, shiftY: 1 },\n small: { shiftY: 1.5 },\n },\n fClef: {\n default: { shiftY: -0.5 },\n },\n },\n ornament: {\n ornamentTurn: {\n scale: 1.2,\n },\n ornamentTurnSlash: {\n scale: 1.2,\n },\n },\n stringNumber: {\n verticalPadding: 8,\n stemPadding: 2,\n leftPadding: 5,\n rightPadding: 6,\n },\n stroke: {\n arrowheadBlackDown: {\n straight: {\n shiftX: -4.5,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n arrowheadBlackUp: {\n straight: {\n shiftX: -0.85,\n },\n wiggly: {\n shiftX: -1,\n shiftY: 1,\n },\n },\n },\n textNote: {\n point: 34,\n breathMarkTick: {\n point: 36,\n shiftY: 9,\n },\n breathMarkComma: {\n point: 36,\n },\n segno: {\n point: 30,\n shiftX: -7,\n shiftY: 8,\n },\n coda: {\n point: 20,\n shiftX: -7,\n shiftY: 8,\n },\n ornamentTrill: {\n shiftX: -10,\n shiftY: 8,\n },\n ornamentMordent: {\n shiftX: -8,\n },\n ornamentShortTrill: {\n shiftX: -8,\n },\n },\n noteHead: {\n minPadding: 2,\n standard: {\n noteheadBlackStemUp: {\n shiftX: 0.5,\n },\n noteheadHalfStemUp: {\n shiftX: 0.725,\n },\n noteheadWholeStemUp: {\n shiftX: 1,\n },\n },\n custom: {\n noteheadCircleXStemUp: {\n shiftX: -1,\n },\n noteheadCircleXStemDown: {\n shiftX: 0.25,\n },\n noteheadDiamondHalfStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondBlackStemUp: {\n shiftX: 1.5,\n },\n noteheadDiamondWholeStemUp: {\n shiftX: 1,\n },\n noteheadXBlackStemUp: {\n shiftX: 1,\n },\n noteheadXHalfStemUp: {\n shiftX: -3,\n },\n noteheadXHalfStemDown: {\n shiftX: 1,\n },\n noteheadXWholeStemUp: {\n shiftX: -7,\n },\n noteheadXWholeStemDown: {\n shiftX: 1,\n },\n noteheadXDoubleWholeStemUp: {\n shiftX: -12,\n },\n noteheadXDoubleWholeStemDown: {\n shiftX: -4,\n },\n noteheadSquareWhiteStemDown: {\n shiftX: 0.25,\n },\n noteheadSquareWhiteStemUp: {\n shiftX: -0.75,\n },\n noteheadSquareBlackStemUp: {\n shiftX: -0.75,\n },\n noteheadTriangleUpWholeStemUp: {\n shiftX: -0.75,\n },\n },\n },\n chordSymbol: {\n global: {\n superscriptOffset: -400,\n subscriptOffset: 300,\n kerningOffset: -150,\n lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'],\n upperKerningText: ['L'],\n spacing: 20,\n superSubRatio: 0.73,\n },\n csymDiminished: {\n scale: 0.8,\n leftSideBearing: -95,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymHalfDiminished: {\n scale: 0.8,\n leftSideBearing: -32,\n advanceWidth: 506,\n yOffset: 0,\n },\n csymAugmented: {\n scale: 1,\n leftSideBearing: -25,\n advanceWidth: 530,\n yOffset: 0,\n },\n csymParensLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 155,\n yOffset: 150,\n },\n csymParensRightTall: {\n scale: 0.8,\n leftSideBearing: 40,\n advanceWidth: 189,\n yOffset: 150,\n },\n csymBracketLeftTall: {\n scale: 0.8,\n leftSideBearing: 0,\n advanceWidth: 328,\n yOffset: 0,\n },\n csymBracketRightTall: {\n scale: 0.8,\n leftSideBearing: 1,\n advanceWidth: 600,\n yOffset: 0,\n },\n csymParensLeftVeryTall: {\n scale: 0.95,\n leftSideBearing: 0,\n advanceWidth: 210,\n yOffset: 250,\n },\n csymParensRightVeryTall: {\n scale: 0.9,\n leftSideBearing: -100,\n advanceWidth: 111,\n yOffset: 250,\n },\n csymDiagonalArrangementSlash: {\n scale: 0.6,\n leftSideBearing: -1,\n advanceWidth: 990,\n yOffset: 0,\n },\n csymMinor: {\n scale: 0.7,\n leftSideBearing: 0,\n advanceWidth: 482,\n yOffset: 0,\n },\n csymMajorSeventh: {\n scale: 0.8,\n leftSideBearing: 100,\n yOffset: 0,\n advanceWidth: 600,\n },\n accidentalSharp: {\n scale: 0.7,\n leftSideBearing: 0,\n advanceWidth: 425,\n yOffset: -422,\n },\n accidentalFlat: {\n scale: 0.8,\n leftSideBearing: -10,\n advanceWidth: 228,\n yOffset: -284,\n },\n },\n jazzOrnaments: {\n brassScoop: {\n scale: 1.0,\n xOffset: -12,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassDoitMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 19,\n },\n brassFallLipShort: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 0,\n stemUpYOffset: 0,\n reportedWidth: 19,\n },\n brassLiftMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 5,\n stemUpYOffset: 0,\n reportedWidth: 15,\n },\n brassFallRoughMedium: {\n scale: 1.0,\n xOffset: 16,\n yOffset: 26,\n stemUpYOffset: 0,\n reportedWidth: 5,\n },\n brassBend: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -8,\n stemUpYOffset: 28,\n reportedWidth: 5,\n },\n brassMuteClosed: {\n scale: 1.0,\n xOffset: 3,\n yOffset: -8,\n stemUpYOffset: 26,\n reportedWidth: 5,\n },\n brassMuteOpen: {\n scale: 1.0,\n xOffset: 4,\n yOffset: -8,\n stemUpYOffset: 27,\n reportedWidth: 5,\n },\n brassFlip: {\n scale: 1.0,\n xOffset: 10,\n yOffset: -4,\n stemUpYOffset: 7,\n reportedWidth: 5,\n },\n brassJazzTurn: {\n scale: 1.0,\n xOffset: 6,\n yOffset: -4,\n stemUpYOffset: 5,\n reportedWidth: 30,\n },\n brassSmear: {\n scale: 1.0,\n xOffset: 10,\n yOffset: -4,\n stemUpYOffset: 5,\n reportedWidth: 5,\n },\n },\n tuplet: {\n noteHeadOffset: 20,\n stemOffset: 10,\n bottomLine: 4,\n topModifierOffset: 20,\n },\n },\n};\n","export const PetalumaScriptFont = {\n spacing: 50,\n glyphs: {\n ' ': {\n x_min: 0,\n x_max: 250,\n y_min: 0,\n y_max: 500,\n ha: 500,\n leftSideBearing: 0,\n advanceWidth: 250,\n },\n '0': {\n x_min: 33,\n x_max: 534,\n y_min: -13,\n y_max: 751,\n ha: 764,\n leftSideBearing: 33,\n advanceWidth: 570,\n },\n '1': {\n x_min: 48,\n x_max: 235,\n y_min: -17,\n y_max: 734,\n ha: 751,\n leftSideBearing: 48,\n advanceWidth: 286,\n },\n '2': {\n x_min: 56,\n x_max: 571,\n y_min: -19,\n y_max: 741,\n ha: 760,\n leftSideBearing: 56,\n advanceWidth: 626,\n },\n '3': {\n x_min: 50,\n x_max: 528,\n y_min: -7,\n y_max: 731,\n ha: 738,\n leftSideBearing: 50,\n advanceWidth: 589,\n },\n '4': {\n x_min: 38,\n x_max: 564,\n y_min: -13,\n y_max: 743,\n ha: 756,\n leftSideBearing: 38,\n advanceWidth: 614,\n },\n '5': {\n x_min: 42,\n x_max: 601,\n y_min: -34,\n y_max: 743,\n ha: 777,\n leftSideBearing: 42,\n advanceWidth: 648,\n },\n '6': {\n x_min: 47,\n x_max: 606,\n y_min: -16,\n y_max: 743,\n ha: 759,\n leftSideBearing: 47,\n advanceWidth: 667,\n },\n '7': {\n x_min: 47,\n x_max: 567,\n y_min: 5,\n y_max: 739,\n ha: 734,\n leftSideBearing: 0,\n advanceWidth: 615,\n },\n '8': {\n x_min: 40,\n x_max: 541,\n y_min: -15,\n y_max: 752,\n ha: 767,\n leftSideBearing: 40,\n advanceWidth: 585,\n },\n '9': {\n x_min: 40,\n x_max: 537,\n y_min: -52,\n y_max: 736,\n ha: 788,\n leftSideBearing: 40,\n advanceWidth: 592,\n },\n '!': {\n x_min: 49,\n x_max: 180,\n y_min: -7,\n y_max: 761,\n ha: 768,\n leftSideBearing: 49,\n advanceWidth: 230,\n },\n '\"': {\n x_min: 39,\n x_max: 304,\n y_min: 596,\n y_max: 804,\n ha: 208,\n leftSideBearing: 39,\n advanceWidth: 353,\n },\n '#': {\n x_min: 33,\n x_max: 599,\n y_min: -8,\n y_max: 765,\n ha: 773,\n leftSideBearing: 33,\n advanceWidth: 648,\n },\n $: {\n x_min: 53,\n x_max: 495,\n y_min: -111,\n y_max: 823,\n ha: 934,\n leftSideBearing: 53,\n advanceWidth: 560,\n },\n '%': {\n x_min: 35,\n x_max: 656,\n y_min: -128,\n y_max: 808,\n ha: 936,\n leftSideBearing: 35,\n advanceWidth: 711,\n },\n '&': {\n x_min: 53,\n x_max: 441,\n y_min: -3,\n y_max: 753,\n ha: 756,\n leftSideBearing: 53,\n advanceWidth: 500,\n },\n \"'\": {\n x_min: 43,\n x_max: 161,\n y_min: 590,\n y_max: 811,\n ha: 221,\n leftSideBearing: 43,\n advanceWidth: 217,\n },\n '(': {\n x_min: 41,\n x_max: 311,\n y_min: -36,\n y_max: 845,\n ha: 881,\n leftSideBearing: 41,\n advanceWidth: 308,\n },\n ')': {\n x_min: -8,\n x_max: 257,\n y_min: -21,\n y_max: 852,\n ha: 873,\n leftSideBearing: -8,\n advanceWidth: 280,\n },\n '*': {\n x_min: 59,\n x_max: 539,\n y_min: 175,\n y_max: 589,\n ha: 414,\n leftSideBearing: 59,\n advanceWidth: 601,\n },\n '+': {\n x_min: 33,\n x_max: 361,\n y_min: 180,\n y_max: 587,\n ha: 407,\n leftSideBearing: 33,\n advanceWidth: 400,\n },\n ',': {\n x_min: 15,\n x_max: 176,\n y_min: -129,\n y_max: 92,\n ha: 221,\n leftSideBearing: 15,\n advanceWidth: 205,\n },\n '-': {\n x_min: 40,\n x_max: 380,\n y_min: 317,\n y_max: 452,\n ha: 135,\n leftSideBearing: 40,\n advanceWidth: 422,\n },\n '.': {\n x_min: 48,\n x_max: 185,\n y_min: -56,\n y_max: 84,\n ha: 140,\n leftSideBearing: 48,\n advanceWidth: 227,\n },\n '/': {\n x_min: -58,\n x_max: 654,\n y_min: -122,\n y_max: 844,\n ha: 966,\n leftSideBearing: -58,\n advanceWidth: 626,\n },\n ':': {\n x_min: 65,\n x_max: 225,\n y_min: 97,\n y_max: 536,\n ha: 439,\n leftSideBearing: 65,\n advanceWidth: 302,\n },\n ';': {\n x_min: 13,\n x_max: 295,\n y_min: -139,\n y_max: 536,\n ha: 675,\n leftSideBearing: 13,\n advanceWidth: 334,\n },\n '<': {\n x_min: 28,\n x_max: 438,\n y_min: -1,\n y_max: 607,\n ha: 608,\n leftSideBearing: 28,\n advanceWidth: 475,\n },\n '=': {\n x_min: 40,\n x_max: 383,\n y_min: 199.9598640852289,\n y_max: 541,\n ha: 341.0401359147711,\n leftSideBearing: 40,\n advanceWidth: 422,\n },\n '>': {\n x_min: 35,\n x_max: 421,\n y_min: 28,\n y_max: 632,\n ha: 604,\n leftSideBearing: 35,\n advanceWidth: 466,\n },\n '?': {\n x_min: 45,\n x_max: 548,\n y_min: -17,\n y_max: 767,\n ha: 784,\n leftSideBearing: 45,\n advanceWidth: 592,\n },\n '@': {\n x_min: 51,\n x_max: 730,\n y_min: -78,\n y_max: 753,\n ha: 831,\n leftSideBearing: 51,\n advanceWidth: 781,\n },\n A: {\n x_min: 37,\n x_max: 554,\n y_min: -4,\n y_max: 746,\n ha: 750,\n leftSideBearing: 37,\n advanceWidth: 617,\n },\n B: {\n x_min: 37,\n x_max: 532,\n y_min: 3,\n y_max: 783,\n ha: 780,\n leftSideBearing: 37,\n advanceWidth: 579,\n },\n C: {\n x_min: 37,\n x_max: 583,\n y_min: -3,\n y_max: 775,\n ha: 778,\n leftSideBearing: 37,\n advanceWidth: 623,\n },\n D: {\n x_min: 50,\n x_max: 530,\n y_min: -15,\n y_max: 749,\n ha: 764,\n leftSideBearing: 50,\n advanceWidth: 579,\n },\n E: {\n x_min: 45,\n x_max: 531,\n y_min: -1,\n y_max: 743,\n ha: 744,\n leftSideBearing: 45,\n advanceWidth: 585,\n },\n F: {\n x_min: 45,\n x_max: 459,\n y_min: 23,\n y_max: 727,\n ha: 704,\n leftSideBearing: 45,\n advanceWidth: 510,\n },\n G: {\n x_min: 31,\n x_max: 577,\n y_min: -8,\n y_max: 733,\n ha: 741,\n leftSideBearing: 31,\n advanceWidth: 611,\n },\n H: {\n x_min: 37,\n x_max: 493,\n y_min: -22,\n y_max: 758,\n ha: 780,\n leftSideBearing: 37,\n advanceWidth: 535,\n },\n I: {\n x_min: 47,\n x_max: 501,\n y_min: -3,\n y_max: 731,\n ha: 734,\n leftSideBearing: 47,\n advanceWidth: 541,\n },\n J: {\n x_min: 33,\n x_max: 531,\n y_min: -23,\n y_max: 725,\n ha: 748,\n leftSideBearing: 33,\n advanceWidth: 573,\n },\n K: {\n x_min: 43,\n x_max: 505,\n y_min: -10,\n y_max: 740,\n ha: 750,\n leftSideBearing: 43,\n advanceWidth: 560,\n },\n L: {\n x_min: 49,\n x_max: 457,\n y_min: -2,\n y_max: 746,\n ha: 748,\n leftSideBearing: 49,\n advanceWidth: 510,\n },\n M: {\n x_min: 35,\n x_max: 699,\n y_min: 1,\n y_max: 744,\n ha: 743,\n leftSideBearing: 35,\n advanceWidth: 743,\n },\n N: {\n x_min: 34,\n x_max: 533,\n y_min: -17,\n y_max: 761,\n ha: 778,\n leftSideBearing: 34,\n advanceWidth: 579,\n },\n O: {\n x_min: 41,\n x_max: 608,\n y_min: -5,\n y_max: 735,\n ha: 740,\n leftSideBearing: 41,\n advanceWidth: 667,\n },\n P: {\n x_min: 53,\n x_max: 451,\n y_min: -18,\n y_max: 735,\n ha: 753,\n leftSideBearing: 53,\n advanceWidth: 497,\n },\n Q: {\n x_min: 40,\n x_max: 599,\n y_min: -67,\n y_max: 744,\n ha: 811,\n leftSideBearing: 40,\n advanceWidth: 648,\n },\n R: {\n x_min: 39,\n x_max: 487,\n y_min: 16,\n y_max: 735,\n ha: 719,\n leftSideBearing: 39,\n advanceWidth: 535,\n },\n S: {\n x_min: 35,\n x_max: 552,\n y_min: -47,\n y_max: 708,\n ha: 755,\n leftSideBearing: 35,\n advanceWidth: 604,\n },\n T: {\n x_min: 26,\n x_max: 656,\n y_min: -13,\n y_max: 718,\n ha: 731,\n leftSideBearing: 26,\n advanceWidth: 705,\n },\n U: {\n x_min: 41,\n x_max: 518,\n y_min: -20,\n y_max: 748,\n ha: 768,\n leftSideBearing: 41,\n advanceWidth: 567,\n },\n V: {\n x_min: 47,\n x_max: 509,\n y_min: -26,\n y_max: 744,\n ha: 770,\n leftSideBearing: 47,\n advanceWidth: 567,\n },\n W: {\n x_min: 44,\n x_max: 789,\n y_min: -35,\n y_max: 720,\n ha: 755,\n leftSideBearing: 44,\n advanceWidth: 833,\n },\n X: {\n x_min: 63,\n x_max: 635,\n y_min: -10,\n y_max: 745,\n ha: 755,\n leftSideBearing: 63,\n advanceWidth: 680,\n },\n Y: {\n x_min: 43,\n x_max: 503,\n y_min: -21,\n y_max: 734,\n ha: 755,\n leftSideBearing: 43,\n advanceWidth: 541,\n },\n Z: {\n x_min: 42,\n x_max: 584,\n y_min: -10,\n y_max: 739,\n ha: 749,\n leftSideBearing: 42,\n advanceWidth: 629,\n },\n '[': {\n x_min: 46,\n x_max: 346,\n y_min: -150,\n y_max: 884,\n ha: 1034,\n leftSideBearing: 46,\n advanceWidth: 291,\n },\n '\\\\': {\n x_min: 20,\n x_max: 616,\n y_min: -100,\n y_max: 797,\n ha: 897,\n leftSideBearing: 20,\n advanceWidth: 645,\n },\n ']': {\n x_min: -76,\n x_max: 226,\n y_min: -150,\n y_max: 881,\n ha: 1031,\n leftSideBearing: -76,\n advanceWidth: 297,\n },\n '^': {\n x_min: 43,\n x_max: 437,\n y_min: 517,\n y_max: 812,\n ha: 295,\n leftSideBearing: 43,\n advanceWidth: 478,\n },\n _: {\n x_min: 29,\n x_max: 563,\n y_min: -110,\n y_max: -1,\n ha: 109,\n leftSideBearing: 29,\n advanceWidth: 598,\n },\n '`': {\n x_min: 54,\n x_max: 321,\n y_min: 540,\n y_max: 747,\n ha: 207,\n leftSideBearing: 54,\n advanceWidth: 368,\n },\n a: {\n x_min: 20,\n x_max: 447,\n y_min: -17,\n y_max: 495,\n ha: 512,\n leftSideBearing: 20,\n advanceWidth: 494,\n },\n b: {\n x_min: 37,\n x_max: 466,\n y_min: -27,\n y_max: 770,\n ha: 797,\n leftSideBearing: 37,\n advanceWidth: 510,\n },\n c: {\n x_min: 35,\n x_max: 456,\n y_min: -9,\n y_max: 507,\n ha: 516,\n leftSideBearing: 35,\n advanceWidth: 460,\n },\n d: {\n x_min: 45,\n x_max: 520,\n y_min: -15,\n y_max: 764,\n ha: 779,\n leftSideBearing: 45,\n advanceWidth: 560,\n },\n e: {\n x_min: 33,\n x_max: 370,\n y_min: -5,\n y_max: 501,\n ha: 506,\n leftSideBearing: 33,\n advanceWidth: 397,\n },\n f: {\n x_min: 35,\n x_max: 411,\n y_min: -13,\n y_max: 695,\n ha: 708,\n leftSideBearing: 35,\n advanceWidth: 453,\n },\n g: {\n x_min: 33,\n x_max: 551,\n y_min: -257,\n y_max: 505,\n ha: 762,\n leftSideBearing: 33,\n advanceWidth: 611,\n },\n h: {\n x_min: 32,\n x_max: 458,\n y_min: -29,\n y_max: 743,\n ha: 772,\n leftSideBearing: 32,\n advanceWidth: 491,\n },\n i: {\n x_min: 45,\n x_max: 167,\n y_min: -13,\n y_max: 631,\n ha: 644,\n leftSideBearing: 45,\n advanceWidth: 220,\n },\n j: {\n x_min: -127,\n x_max: 261,\n y_min: -231,\n y_max: 601,\n ha: 832,\n leftSideBearing: -127,\n advanceWidth: 308,\n },\n k: {\n x_min: 39,\n x_max: 443,\n y_min: -3,\n y_max: 700,\n ha: 703,\n leftSideBearing: 39,\n advanceWidth: 497,\n },\n l: {\n x_min: 58,\n x_max: 168,\n y_min: -8,\n y_max: 686,\n ha: 694,\n leftSideBearing: 58,\n advanceWidth: 227,\n },\n m: {\n x_min: 39,\n x_max: 688,\n y_min: -14,\n y_max: 501,\n ha: 515,\n leftSideBearing: 39,\n advanceWidth: 718,\n },\n n: {\n x_min: 45,\n x_max: 491,\n y_min: -32,\n y_max: 512,\n ha: 544,\n leftSideBearing: 45,\n advanceWidth: 541,\n },\n o: {\n x_min: 41,\n x_max: 424,\n y_min: -12,\n y_max: 493,\n ha: 505,\n leftSideBearing: 41,\n advanceWidth: 447,\n },\n p: {\n x_min: 25,\n x_max: 529,\n y_min: -260,\n y_max: 500,\n ha: 760,\n leftSideBearing: 25,\n advanceWidth: 573,\n },\n q: {\n x_min: 53,\n x_max: 603,\n y_min: -235,\n y_max: 514,\n ha: 749,\n leftSideBearing: 53,\n advanceWidth: 623,\n },\n r: {\n x_min: 32,\n x_max: 407,\n y_min: -7,\n y_max: 492,\n ha: 499,\n leftSideBearing: 32,\n advanceWidth: 460,\n },\n s: {\n x_min: 49,\n x_max: 416,\n y_min: -12,\n y_max: 519,\n ha: 531,\n leftSideBearing: 49,\n advanceWidth: 460,\n },\n t: {\n x_min: 32,\n x_max: 442,\n y_min: -5,\n y_max: 684,\n ha: 689,\n leftSideBearing: 32,\n advanceWidth: 469,\n },\n u: {\n x_min: 41,\n x_max: 487,\n y_min: -5,\n y_max: 507,\n ha: 512,\n leftSideBearing: 41,\n advanceWidth: 510,\n },\n v: {\n x_min: 16,\n x_max: 441,\n y_min: -20,\n y_max: 542,\n ha: 562,\n leftSideBearing: 16,\n advanceWidth: 456,\n },\n w: {\n x_min: 39,\n x_max: 639,\n y_min: -22,\n y_max: 505,\n ha: 527,\n leftSideBearing: 39,\n advanceWidth: 661,\n },\n x: {\n x_min: 15,\n x_max: 505,\n y_min: -39,\n y_max: 539,\n ha: 578,\n leftSideBearing: 15,\n advanceWidth: 541,\n },\n y: {\n x_min: -98,\n x_max: 501,\n y_min: -242,\n y_max: 511,\n ha: 753,\n leftSideBearing: -98,\n advanceWidth: 548,\n },\n z: {\n x_min: 27,\n x_max: 479,\n y_min: -3,\n y_max: 494,\n ha: 497,\n leftSideBearing: 27,\n advanceWidth: 494,\n },\n '{': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '|': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '}': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n '~': {\n x_min: 0,\n x_max: 0,\n y_min: 0,\n y_max: 0,\n ha: 0,\n leftSideBearing: 0,\n advanceWidth: 308,\n },\n },\n fontFamily: 'PetalumaScript',\n resolution: 1000,\n generatedOn: '2020-06-14T18:33:25.407Z',\n};\n","export const RobotoSlabFont = {\n spacing: 50,\n glyphs: {\n ' ': {\n x_min: 0,\n x_max: 509,\n y_min: 0,\n y_max: 2000,\n ha: 2000,\n leftSideBearing: 0,\n advanceWidth: 509,\n },\n '0': {\n x_min: 121,\n x_max: 1048,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 121,\n advanceWidth: 1168,\n },\n '1': {\n x_min: 117,\n x_max: 767,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 117,\n advanceWidth: 844,\n },\n '2': {\n x_min: 75.8474576645637,\n x_max: 1040,\n y_min: 0,\n y_max: 1477,\n ha: 1477,\n leftSideBearing: 75,\n advanceWidth: 1131,\n },\n '3': {\n x_min: 74.85365853658536,\n x_max: 994,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 74,\n advanceWidth: 1106,\n },\n '4': {\n x_min: 63,\n x_max: 1114,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 63,\n advanceWidth: 1187,\n },\n '5': {\n x_min: 96.8448275474953,\n x_max: 982,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 96,\n advanceWidth: 1081,\n },\n '6': {\n x_min: 121,\n x_max: 1067,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 121,\n advanceWidth: 1144,\n },\n '7': {\n x_min: 76,\n x_max: 1060,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: -30,\n advanceWidth: 1128,\n },\n '8': {\n x_min: 92,\n x_max: 1039,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 92,\n advanceWidth: 1131,\n },\n '9': {\n x_min: 84,\n x_max: 1026,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 84,\n advanceWidth: 1154,\n },\n '!': {\n x_min: 143,\n x_max: 340,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 143,\n advanceWidth: 483,\n },\n '\"': {\n x_min: 166,\n x_max: 634,\n y_min: 1055,\n y_max: 1560,\n ha: 505,\n leftSideBearing: 166,\n advanceWidth: 770,\n },\n '#': {\n x_min: 63,\n x_max: 1179,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 63,\n advanceWidth: 1246,\n },\n $: {\n x_min: 81.92156915727656,\n x_max: 1012,\n y_min: -208,\n y_max: 1693,\n ha: 1901,\n leftSideBearing: 81,\n advanceWidth: 1110,\n },\n '%': {\n x_min: 77,\n x_max: 1384,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 77,\n advanceWidth: 1460,\n },\n '&': {\n x_min: 74,\n x_max: 1242,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 74,\n advanceWidth: 1289,\n },\n \"'\": {\n x_min: 166,\n x_max: 324,\n y_min: 1055,\n y_max: 1560,\n ha: 505,\n leftSideBearing: 166,\n advanceWidth: 460,\n },\n '(': {\n x_min: 114,\n x_max: 650,\n y_min: -463,\n y_max: 1636,\n ha: 2099,\n leftSideBearing: 114,\n advanceWidth: 662,\n },\n ')': {\n x_min: 11,\n x_max: 547,\n y_min: -463,\n y_max: 1636,\n ha: 2099,\n leftSideBearing: 11,\n advanceWidth: 654,\n },\n '*': {\n x_min: 66,\n x_max: 893,\n y_min: 607,\n y_max: 1456,\n ha: 849,\n leftSideBearing: 66,\n advanceWidth: 958,\n },\n '+': {\n x_min: 73,\n x_max: 1071,\n y_min: 146,\n y_max: 1206,\n ha: 1060,\n leftSideBearing: 73,\n advanceWidth: 1145,\n },\n ',': {\n x_min: 23,\n x_max: 315,\n y_min: -311,\n y_max: 221,\n ha: 532,\n leftSideBearing: 23,\n advanceWidth: 404,\n },\n '-': {\n x_min: 154,\n x_max: 643,\n y_min: 538,\n y_max: 692,\n ha: 154,\n leftSideBearing: 154,\n advanceWidth: 797,\n },\n '.': {\n x_min: 145,\n x_max: 342,\n y_min: 0,\n y_max: 202,\n ha: 202,\n leftSideBearing: 145,\n advanceWidth: 493,\n },\n '/': {\n x_min: 0,\n x_max: 774,\n y_min: -125,\n y_max: 1456,\n ha: 1581,\n leftSideBearing: 0,\n advanceWidth: 824,\n },\n ':': {\n x_min: 145,\n x_max: 342,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 145,\n advanceWidth: 419,\n },\n ';': {\n x_min: 53,\n x_max: 345,\n y_min: -311,\n y_max: 1082,\n ha: 1393,\n leftSideBearing: 53,\n advanceWidth: 424,\n },\n '<': {\n x_min: 76,\n x_max: 892,\n y_min: 107,\n y_max: 1013,\n ha: 906,\n leftSideBearing: 76,\n advanceWidth: 1017,\n },\n '=': {\n x_min: 147,\n x_max: 981,\n y_min: 407,\n y_max: 987,\n ha: 580,\n leftSideBearing: 147,\n advanceWidth: 1127,\n },\n '>': {\n x_min: 125,\n x_max: 980,\n y_min: 87,\n y_max: 993,\n ha: 906,\n leftSideBearing: 125,\n advanceWidth: 1060,\n },\n '?': {\n x_min: 65.92660602419838,\n x_max: 890,\n y_min: 0,\n y_max: 1477,\n ha: 1477,\n leftSideBearing: 65,\n advanceWidth: 953,\n },\n '@': {\n x_min: 84.3592218305664,\n x_max: 1705.2346925277395,\n y_min: -453,\n y_max: 1431,\n ha: 1884,\n leftSideBearing: 84,\n advanceWidth: 1821,\n },\n A: {\n x_min: 70,\n x_max: 1463,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 70,\n advanceWidth: 1533,\n },\n B: {\n x_min: 81,\n x_max: 1253,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1322,\n },\n C: {\n x_min: 80,\n x_max: 1174,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 80,\n advanceWidth: 1290,\n },\n D: {\n x_min: 81,\n x_max: 1291,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1356,\n },\n E: {\n x_min: 81,\n x_max: 1190,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1306,\n },\n F: {\n x_min: 81,\n x_max: 1176,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1256,\n },\n G: {\n x_min: 80,\n x_max: 1226,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 80,\n advanceWidth: 1346,\n },\n H: {\n x_min: 81,\n x_max: 1497,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1578,\n },\n I: {\n x_min: 81,\n x_max: 604,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 685,\n },\n J: {\n x_min: 60,\n x_max: 1100,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 60,\n advanceWidth: 1169,\n },\n K: {\n x_min: 81,\n x_max: 1427,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1501,\n },\n L: {\n x_min: 81,\n x_max: 1130,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1210,\n },\n M: {\n x_min: 94,\n x_max: 1888,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 94,\n advanceWidth: 1982,\n },\n N: {\n x_min: 83,\n x_max: 1509,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 83,\n advanceWidth: 1592,\n },\n O: {\n x_min: 70,\n x_max: 1281,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 70,\n advanceWidth: 1351,\n },\n P: {\n x_min: 81,\n x_max: 1242,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 81,\n advanceWidth: 1297,\n },\n Q: {\n x_min: 70,\n x_max: 1348,\n y_min: -245,\n y_max: 1477,\n ha: 1722,\n leftSideBearing: 70,\n advanceWidth: 1376,\n },\n R: {\n x_min: 81,\n x_max: 1285,\n y_min: 0,\n y_max: 1455,\n ha: 1455,\n leftSideBearing: 81,\n advanceWidth: 1385,\n },\n S: {\n x_min: 115,\n x_max: 1116,\n y_min: -21,\n y_max: 1477,\n ha: 1498,\n leftSideBearing: 115,\n advanceWidth: 1206,\n },\n T: {\n x_min: 96,\n x_max: 1306,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 96,\n advanceWidth: 1406,\n },\n U: {\n x_min: 70,\n x_max: 1452,\n y_min: -21,\n y_max: 1456,\n ha: 1477,\n leftSideBearing: 70,\n advanceWidth: 1522,\n },\n V: {\n x_min: 65,\n x_max: 1443,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 65,\n advanceWidth: 1508,\n },\n W: {\n x_min: 72,\n x_max: 2057,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 72,\n advanceWidth: 2129,\n },\n X: {\n x_min: 80,\n x_max: 1449,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 80,\n advanceWidth: 1529,\n },\n Y: {\n x_min: 65,\n x_max: 1396,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 65,\n advanceWidth: 1461,\n },\n Z: {\n x_min: 90,\n x_max: 1107,\n y_min: 0,\n y_max: 1456,\n ha: 1456,\n leftSideBearing: 90,\n advanceWidth: 1197,\n },\n '[': {\n x_min: 157,\n x_max: 541,\n y_min: -312,\n y_max: 1664,\n ha: 1976,\n leftSideBearing: 157,\n advanceWidth: 573,\n },\n '\\\\': {\n x_min: 36,\n x_max: 830,\n y_min: -125,\n y_max: 1456,\n ha: 1581,\n leftSideBearing: 36,\n advanceWidth: 841,\n },\n ']': {\n x_min: 23,\n x_max: 408,\n y_min: -312,\n y_max: 1664,\n ha: 1976,\n leftSideBearing: 23,\n advanceWidth: 552,\n },\n '^': {\n x_min: 71,\n x_max: 802,\n y_min: 729,\n y_max: 1456,\n ha: 727,\n leftSideBearing: 71,\n advanceWidth: 864,\n },\n _: {\n x_min: 119,\n x_max: 1041,\n y_min: -154,\n y_max: 0,\n ha: 154,\n leftSideBearing: 119,\n advanceWidth: 1168,\n },\n '`': {\n x_min: 40,\n x_max: 456,\n y_min: 1288,\n y_max: 1560,\n ha: 272,\n leftSideBearing: 40,\n advanceWidth: 496,\n },\n a: {\n x_min: 79,\n x_max: 1053,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 79,\n advanceWidth: 1132,\n },\n b: {\n x_min: -16,\n x_max: 1071,\n y_min: -21,\n y_max: 1560,\n ha: 1581,\n leftSideBearing: -16,\n advanceWidth: 1145,\n },\n c: {\n x_min: 78,\n x_max: 988,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 78,\n advanceWidth: 1067,\n },\n d: {\n x_min: 78,\n x_max: 1156,\n y_min: -21,\n y_max: 1560,\n ha: 1581,\n leftSideBearing: 78,\n advanceWidth: 1218,\n },\n e: {\n x_min: 74,\n x_max: 980,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 74,\n advanceWidth: 1059,\n },\n f: {\n x_min: 64,\n x_max: 731,\n y_min: 0,\n y_max: 1581,\n ha: 1581,\n leftSideBearing: 64,\n advanceWidth: 725,\n },\n g: {\n x_min: 78,\n x_max: 1133,\n y_min: -437,\n y_max: 1102,\n ha: 1539,\n leftSideBearing: 78,\n advanceWidth: 1157,\n },\n h: {\n x_min: 49,\n x_max: 1255,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 49,\n advanceWidth: 1315,\n },\n i: {\n x_min: 67,\n x_max: 590,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 67,\n advanceWidth: 652,\n },\n j: {\n x_min: -56,\n x_max: 381,\n y_min: -437,\n y_max: 1560,\n ha: 1997,\n leftSideBearing: -56,\n advanceWidth: 525,\n },\n k: {\n x_min: 64,\n x_max: 1248,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 64,\n advanceWidth: 1287,\n },\n l: {\n x_min: 64,\n x_max: 587,\n y_min: 0,\n y_max: 1560,\n ha: 1560,\n leftSideBearing: 64,\n advanceWidth: 653,\n },\n m: {\n x_min: 74,\n x_max: 1905,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 74,\n advanceWidth: 1977,\n },\n n: {\n x_min: 74,\n x_max: 1278,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 74,\n advanceWidth: 1343,\n },\n o: {\n x_min: 78,\n x_max: 1046,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 78,\n advanceWidth: 1124,\n },\n p: {\n x_min: 34,\n x_max: 1119,\n y_min: -416,\n y_max: 1102,\n ha: 1518,\n leftSideBearing: 34,\n advanceWidth: 1197,\n },\n q: {\n x_min: 78,\n x_max: 1135,\n y_min: -416,\n y_max: 1102,\n ha: 1518,\n leftSideBearing: 78,\n advanceWidth: 1139,\n },\n r: {\n x_min: 72,\n x_max: 808,\n y_min: 0,\n y_max: 1102,\n ha: 1102,\n leftSideBearing: 72,\n advanceWidth: 854,\n },\n s: {\n x_min: 104,\n x_max: 933,\n y_min: -21,\n y_max: 1102,\n ha: 1123,\n leftSideBearing: 104,\n advanceWidth: 1022,\n },\n t: {\n x_min: 24,\n x_max: 678,\n y_min: -17,\n y_max: 1343,\n ha: 1360,\n leftSideBearing: 24,\n advanceWidth: 730,\n },\n u: {\n x_min: 52,\n x_max: 1181,\n y_min: -21,\n y_max: 1082,\n ha: 1103,\n leftSideBearing: 52,\n advanceWidth: 1245,\n },\n v: {\n x_min: 26,\n x_max: 1176,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 26,\n advanceWidth: 1206,\n },\n w: {\n x_min: 52,\n x_max: 1777,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 52,\n advanceWidth: 1823,\n },\n x: {\n x_min: 42,\n x_max: 1163,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 42,\n advanceWidth: 1203,\n },\n y: {\n x_min: 24,\n x_max: 1172,\n y_min: -437,\n y_max: 1082,\n ha: 1519,\n leftSideBearing: 24,\n advanceWidth: 1192,\n },\n z: {\n x_min: 88,\n x_max: 960,\n y_min: 0,\n y_max: 1082,\n ha: 1082,\n leftSideBearing: 88,\n advanceWidth: 1032,\n },\n '{': {\n x_min: 63,\n x_max: 671,\n y_min: -364,\n y_max: 1597,\n ha: 1961,\n leftSideBearing: 63,\n advanceWidth: 701,\n },\n '|': {\n x_min: 150,\n x_max: 307,\n y_min: -270,\n y_max: 1456,\n ha: 1726,\n leftSideBearing: 150,\n advanceWidth: 451,\n },\n '}': {\n x_min: 27,\n x_max: 635,\n y_min: -364,\n y_max: 1597,\n ha: 1961,\n leftSideBearing: 27,\n advanceWidth: 701,\n },\n '~': {\n x_min: 121,\n x_max: 1257,\n y_min: 401,\n y_max: 803,\n ha: 402,\n leftSideBearing: 121,\n advanceWidth: 1386,\n },\n },\n fontFamily: 'Roboto Slab',\n resolution: 2048,\n generatedOn: '2020-06-15T19:12:58.120Z',\n};\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n//\n// Utility methods used by the rest of the VexFlow codebase.\nimport { Flow } from './flow';\nimport { log, RuntimeError } from './util';\nexport class Vex {\n // Users of `Vex.forEach(a, fn)` should use `Array.prototype.forEach()` instead.\n // static forEach(arr: T[], callbackFn: (value: T, index: number, array: T[]) => void) {\n // arr.forEach(callbackFn);\n // }\n /**\n * Take `arr` and return a new list consisting of the sorted, unique,\n * contents of arr. Does not modify `arr`.\n */\n // eslint-disable-next-line\n static sortAndUnique(arr, cmp, eq) {\n if (arr.length > 1) {\n const newArr = [];\n let last;\n arr.sort(cmp);\n for (let i = 0; i < arr.length; ++i) {\n if (i === 0 || !eq(arr[i], last)) {\n newArr.push(arr[i]);\n }\n last = arr[i];\n }\n return newArr;\n }\n else {\n return arr;\n }\n }\n /** Check if array `arr` contains `obj`. */\n // eslint-disable-next-line\n static contains(arr, obj) {\n let i = arr.length;\n while (i--) {\n if (arr[i] === obj) {\n return true;\n }\n }\n return false;\n }\n // Get the 2D Canvas context from DOM element `canvas_sel`.\n static getCanvasContext(canvasSelector) {\n if (!canvasSelector) {\n throw new RuntimeError('BadArgument', 'Invalid canvas selector: ' + canvasSelector);\n }\n const canvas = document.getElementById(canvasSelector);\n if (!(canvas && canvas.getContext)) {\n throw new RuntimeError('UnsupportedBrowserError', 'This browser does not support HTML5 Canvas');\n }\n return canvas.getContext('2d');\n }\n /** Benchmark. Run function `f` once and report time elapsed shifted by `s` milliseconds. */\n // eslint-disable-next-line\n static benchmark(s, f) {\n const start_time = new Date().getTime();\n f();\n const elapsed = new Date().getTime() - start_time;\n log(s, elapsed + 'ms');\n }\n // Get stack trace.\n static stackTrace() {\n const err = new Error();\n return err.stack;\n }\n}\nVex.Flow = Flow;\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n// If you are adding a new music engraving font, search for instances of ADD_MUSIC_FONT throughout the code base.\n// To compile your new font into vexflow.js, take a look at src/fonts/load_all.ts\n// You can export a font module which can be dynamically loaded by vexflow-core.js (see: Gruntfile.js).\n// ADD_MUSIC_FONT\n// To add a new music engraving font XXX, make a copy of this file and name it load_xxx.ts.\n// Then you will need to generate xxx_glyphs.ts and xxx_metrics.ts.\n// xxx_glyphs.ts is created by tools/fonts/fontgen_smufl.js\n// xxx_metrics.ts is created by hand. You could copy bravura_metrics.ts and modify/remove/add entries where necessary.\nimport { Font } from '../font';\nimport { BravuraFont } from './bravura_glyphs';\nimport { BravuraMetrics } from './bravura_metrics';\nexport function loadBravura() {\n Font.load('Bravura', BravuraFont, BravuraMetrics);\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { GonvilleFont } from './gonville_glyphs';\nimport { GonvilleMetrics } from './gonville_metrics';\nexport function loadGonville() {\n Font.load('Gonville', GonvilleFont, GonvilleMetrics);\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { PetalumaFont } from './petaluma_glyphs';\nimport { PetalumaMetrics } from './petaluma_metrics';\nexport function loadPetaluma() {\n Font.load('Petaluma', PetalumaFont, PetalumaMetrics);\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { CustomFont } from './custom_glyphs';\nimport { CustomMetrics } from './custom_metrics';\nexport function loadCustom() {\n Font.load('Custom', CustomFont, CustomMetrics);\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { LelandFont } from './leland_glyphs';\nimport { LelandMetrics } from './leland_metrics';\nexport function loadLeland() {\n Font.load('Leland', LelandFont, LelandMetrics);\n}\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\n//\n// vexflow.ts is the entry point for the build output file vexflow.js.\n// It statically bundles all the music engraving fonts, and sets the music font stack to:\n// Flow.setMusicFont('Bravura', 'Gonville', 'Custom');\n// The webpack config inside Gruntfile.js sets the mode to 'production' to produce a minified build.\nimport { Flow } from '../src/flow';\nimport { loadAllMusicFonts } from '../src/fonts/load_all';\nimport { loadTextFonts } from '../src/fonts/textfonts';\nloadAllMusicFonts();\nFlow.setMusicFont('Bravura', 'Gonville', 'Custom');\nloadTextFonts();\n// Re-export all exports from index.ts.\nexport * from '../src/index';\n// Also collect all exports into a default export for CJS projects.\nexport * as default from '../src/index';\n","// [VexFlow](https://vexflow.com) - Copyright (c) Mohit Muthanna 2010.\n// MIT License\nimport { Font } from '../font';\nimport { TextFormatter } from '../textformatter';\nimport { PetalumaScriptFont } from './petalumascript_glyphs';\nimport { RobotoSlabFont } from './robotoslab_glyphs';\nexport function loadTextFonts() {\n // Roboto Slab\n {\n const fontData = RobotoSlabFont;\n const { fontFamily, resolution, glyphs } = fontData;\n Font.load(fontFamily, fontData);\n // Previously we used 'H', but it isn't actually the tallest or the widest.\n // Interestingly, the lowercase 'b' is the tallest glyph.\n const maxSizeGlyph = 'b';\n TextFormatter.registerInfo({\n family: fontFamily,\n resolution,\n glyphs,\n maxSizeGlyph,\n monospaced: false,\n bold: false,\n italic: false,\n superscriptOffset: 0.66,\n subscriptOffset: 0.66,\n serifs: true,\n description: 'Text font to pair with the Bravura / Gonville music fonts.',\n });\n }\n // PetalumaScript\n {\n const fontData = PetalumaScriptFont;\n const { fontFamily, resolution, glyphs } = fontData;\n Font.load(fontFamily, fontData);\n // M is wider, but H is taller. :-)\n // Lowercase b is also taller in this font.\n const maxSizeGlyph = 'b';\n TextFormatter.registerInfo({\n family: fontFamily,\n resolution,\n glyphs,\n maxSizeGlyph,\n monospaced: false,\n bold: false,\n italic: false,\n superscriptOffset: 0.66,\n subscriptOffset: 0.66,\n serifs: false,\n description: 'Text font to pair with the Petaluma music font.',\n });\n }\n}\n"],"names":["root","factory","exports","module","define","amd","window","globalThis","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","g","Function","e","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","isCategory","category","checkAncestors","constructorFcn","constructor","CATEGORY","getPrototypeOf","isAccidental","Category","Accidental","isAnnotation","Annotation","isBarline","Barline","isDot","Dot","isGraceNote","GraceNote","isGraceNoteGroup","GraceNoteGroup","isNote","Note","isRenderContext","RenderContext","isStaveNote","StaveNote","isStemmableNote","StemmableNote","isTabNote","TabNote","RuntimeError","Error","code","message","super","globalObject","self","defined","x","undefined","log","block","args","line","Array","slice","join","console","warn","err","stack","midLine","a","b","mid_line","n","parseInt","prefix","text","normalizeAngle","Math","PI","Fraction","numerator","denominator","set","static","Number","isNaN","t","GCD","length","LCM","shift","LCMM","simplify","u","d","gcd","add","param1","param2","otherNumerator","otherDenominator","getNumeratorAndDenominator","lcm","subtract","multiply","divide","equals","compare","__staticFractionA","copy","__staticFractionB","greaterThan","greaterThanEquals","lessThan","lessThanEquals","clone","other","quotient","floor","remainder","makeAbs","abs","toString","toSimplifiedString","__staticFractionTmp","toMixedString","s","q","f","parse","str","i","split","BoundingBox","y","w","h","that","getX","getY","getW","getH","setX","setY","setW","setH","move","mergeWith","boundingBox","new_x","new_y","new_w","max","new_h","BoundingBoxComputation","x1","NaN","y1","x2","y2","getX1","getY1","width","height","addPoint","addX","addY","addQuadraticCurve","p0x","p0y","p1x","p1y","p2x","p2y","p01x","denom","it","p01y","addBezierCurve","p3x","p3y","p0","p1","p2","p3","pow","c","b2ac","t1","sqrt","t2","FontWeight","FontStyle","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","apply","fontParser","Fonts","Font","fontName","name","fontSize","SIZE","_a","scaleToPxFrom","pt","parseFloat","unit","replace","toLowerCase","size","weight","style","fromCSSString","family","SANS_SERIF","NORMAL","cssFontShorthand","document","createElement","font","fontFamily","fontWeight","fontStyle","fontInfo","st","trim","wt","sz","scaleFactor","parsedWeight","ITALIC","woffURL","includeWoff2","fontFace","FontFace","load","fonts","host","WEB_FONT_HOST","files","WEB_FONT_FILES","fontPath","loadWebFont","data","metrics","setData","setMetrics","getName","getData","getMetrics","hasData","getResolution","resolution","getGlyphs","glyphs","lookupMetric","defaultValue","keyParts","currObj","SERIF","px","em","in","mm","cm","PetalumaScript","Index","id","type","class","Registry","index","defaultRegistry","registry","clear","setIndexValue","elem","updateIndex","oldValue","getElementById","getAttribute","register","setAttribute","onRegister","_b","getElementsByAttribute","attribute","index_attr","index_attr_val","keys","map","k","getElementsByType","getElementsByClass","className","onUpdate","info","includes","Element","children","attrs","newID","el","getCategory","classes","rendered","getDefaultRegistry","ID","addChildElement","child","push","setStyle","setGroupStyle","forEach","getStyle","applyStyle","context","save","shadowColor","setShadowColor","shadowBlur","setShadowBlur","fillStyle","setFillStyle","strokeStyle","setStrokeStyle","lineWidth","setLineWidth","restoreStyle","restore","drawWithStyle","checkContext","draw","hasClass","addClass","removeClass","isRendered","setRendered","getAttributes","getSVGElement","suffix","element","oldID","getBoundingBox","getContext","setContext","setFont","toCSSString","textFont","defaultTextFont","TEXT_FONT","fontIsObject","fontIsString","fontIsUndefined","sizeWeightStyleAreUndefined","assign","validate","getFont","resetFont","setFontSize","getFontSize","fontSizeInPoints","convertSizeToPointValue","fontSizeInPixels","convertSizeToPixelValue","RESOLUTION","durations","durationAliases","keySignatures","C","num","Am","F","acc","Dm","Bb","Gm","Eb","Cm","Ab","Fm","Db","Bbm","Gb","Ebm","Cb","Abm","G","Em","D","Bm","A","E","B","clefs","treble","line_shift","bass","tenor","alto","soprano","percussion","subbass","french","notesInfo","int_val","CN","accidental","CB","CBB","DN","DB","DBB","EN","EB","EBB","FN","FB","FBB","GN","GB","GBB","AN","AB","ABB","BN","BB","BBB","R","rest","X","octave","shift_right","accidentals","parenRightPaddingAdjustment","bb","db","bs","bss","bbs","ashs","afhf","accSagittal5v7KleismaUp","accSagittal5v7KleismaDown","accSagittal5CommaUp","accSagittal5CommaDown","accSagittal7CommaUp","accSagittal7CommaDown","accSagittal25SmallDiesisUp","accSagittal25SmallDiesisDown","accSagittal35MediumDiesisUp","accSagittal35MediumDiesisDown","accSagittal11MediumDiesisUp","accSagittal11MediumDiesisDown","accSagittal11LargeDiesisUp","accSagittal11LargeDiesisDown","accSagittal35LargeDiesisUp","accSagittal35LargeDiesisDown","accSagittalSharp25SDown","accSagittalFlat25SUp","accSagittalSharp7CDown","accSagittalFlat7CUp","accSagittalSharp5CDown","accSagittalFlat5CUp","accSagittalSharp5v7kDown","accSagittalFlat5v7kUp","accSagittalSharp","accSagittalFlat","accSagittalSharp5v7kUp","accSagittalFlat5v7kDown","accSagittalSharp5CUp","accSagittalFlat5CDown","accSagittalSharp7CUp","accSagittalFlat7CDown","accSagittalSharp25SUp","accSagittalFlat25SDown","accSagittalSharp35MUp","accSagittalFlat35MDown","accSagittalSharp11MUp","accSagittalFlat11MDown","accSagittalSharp11LUp","accSagittalFlat11LDown","accSagittalSharp35LUp","accSagittalFlat35LDown","accSagittalDoubleSharp25SDown","accSagittalDoubleFlat25SUp","accSagittalDoubleSharp7CDown","accSagittalDoubleFlat7CUp","accSagittalDoubleSharp5CDown","accSagittalDoubleFlat5CUp","accSagittalDoubleSharp5v7kDown","accSagittalDoubleFlat5v7kUp","accSagittalDoubleSharp","accSagittalDoubleFlat","accSagittal7v11KleismaUp","accSagittal7v11KleismaDown","accSagittal17CommaUp","accSagittal17CommaDown","accSagittal55CommaUp","accSagittal55CommaDown","accSagittal7v11CommaUp","accSagittal7v11CommaDown","accSagittal5v11SmallDiesisUp","accSagittal5v11SmallDiesisDown","accSagittalSharp5v11SDown","accSagittalFlat5v11SUp","accSagittalSharp7v11CDown","accSagittalFlat7v11CUp","accSagittalSharp55CDown","accSagittalFlat55CUp","accSagittalSharp17CDown","accSagittalFlat17CUp","accSagittalSharp7v11kDown","accSagittalFlat7v11kUp","accSagittalSharp7v11kUp","accSagittalFlat7v11kDown","accSagittalSharp17CUp","accSagittalFlat17CDown","accSagittalSharp55CUp","accSagittalFlat55CDown","accSagittalSharp7v11CUp","accSagittalFlat7v11CDown","accSagittalSharp5v11SUp","accSagittalFlat5v11SDown","accSagittalDoubleSharp5v11SDown","accSagittalDoubleFlat5v11SUp","accSagittalDoubleSharp7v11CDown","accSagittalDoubleFlat7v11CUp","accSagittalDoubleSharp55CDown","accSagittalDoubleFlat55CUp","accSagittalDoubleSharp17CDown","accSagittalDoubleFlat17CUp","accSagittalDoubleSharp7v11kDown","accSagittalDoubleFlat7v11kUp","accSagittal23CommaUp","accSagittal23CommaDown","accSagittal5v19CommaUp","accSagittal5v19CommaDown","accSagittal5v23SmallDiesisUp","accSagittal5v23SmallDiesisDown","accSagittalSharp5v23SDown","accSagittalFlat5v23SUp","accSagittalSharp5v19CDown","accSagittalFlat5v19CUp","accSagittalSharp23CDown","accSagittalFlat23CUp","accSagittalSharp23CUp","accSagittalFlat23CDown","accSagittalSharp5v19CUp","accSagittalFlat5v19CDown","accSagittalSharp5v23SUp","accSagittalFlat5v23SDown","accSagittalDoubleSharp5v23SDown","accSagittalDoubleFlat5v23SUp","accSagittalDoubleSharp5v19CDown","accSagittalDoubleFlat5v19CUp","accSagittalDoubleSharp23CDown","accSagittalDoubleFlat23CUp","accSagittal19SchismaUp","accSagittal19SchismaDown","accSagittal17KleismaUp","accSagittal17KleismaDown","accSagittal143CommaUp","accSagittal143CommaDown","accSagittal11v49CommaUp","accSagittal11v49CommaDown","accSagittal19CommaUp","accSagittal19CommaDown","accSagittal7v19CommaUp","accSagittal7v19CommaDown","accSagittal49SmallDiesisUp","accSagittal49SmallDiesisDown","accSagittal23SmallDiesisUp","accSagittal23SmallDiesisDown","accSagittal5v13MediumDiesisUp","accSagittal5v13MediumDiesisDown","accSagittal11v19MediumDiesisUp","accSagittal11v19MediumDiesisDown","accSagittal49MediumDiesisUp","accSagittal49MediumDiesisDown","accSagittal5v49MediumDiesisUp","accSagittal5v49MediumDiesisDown","accSagittal49LargeDiesisUp","accSagittal49LargeDiesisDown","accSagittal11v19LargeDiesisUp","accSagittal11v19LargeDiesisDown","accSagittal5v13LargeDiesisUp","accSagittal5v13LargeDiesisDown","accSagittalSharp23SDown","accSagittalFlat23SUp","accSagittalSharp49SDown","accSagittalFlat49SUp","accSagittalSharp7v19CDown","accSagittalFlat7v19CUp","accSagittalSharp19CDown","accSagittalFlat19CUp","accSagittalSharp11v49CDown","accSagittalFlat11v49CUp","accSagittalSharp143CDown","accSagittalFlat143CUp","accSagittalSharp17kDown","accSagittalFlat17kUp","accSagittalSharp19sDown","accSagittalFlat19sUp","accSagittalSharp19sUp","accSagittalFlat19sDown","accSagittalSharp17kUp","accSagittalFlat17kDown","accSagittalSharp143CUp","accSagittalFlat143CDown","accSagittalSharp11v49CUp","accSagittalFlat11v49CDown","accSagittalSharp19CUp","accSagittalFlat19CDown","accSagittalSharp7v19CUp","accSagittalFlat7v19CDown","accSagittalSharp49SUp","accSagittalFlat49SDown","accSagittalSharp23SUp","accSagittalFlat23SDown","accSagittalSharp5v13MUp","accSagittalFlat5v13MDown","accSagittalSharp11v19MUp","accSagittalFlat11v19MDown","accSagittalSharp49MUp","accSagittalFlat49MDown","accSagittalSharp5v49MUp","accSagittalFlat5v49MDown","accSagittalSharp49LUp","accSagittalFlat49LDown","accSagittalSharp11v19LUp","accSagittalFlat11v19LDown","accSagittalSharp5v13LUp","accSagittalFlat5v13LDown","accSagittalDoubleSharp23SDown","accSagittalDoubleFlat23SUp","accSagittalDoubleSharp49SDown","accSagittalDoubleFlat49SUp","accSagittalDoubleSharp7v19CDown","accSagittalDoubleFlat7v19CUp","accSagittalDoubleSharp19CDown","accSagittalDoubleFlat19CUp","accSagittalDoubleSharp11v49CDown","accSagittalDoubleFlat11v49CUp","accSagittalDoubleSharp143CDown","accSagittalDoubleFlat143CUp","accSagittalDoubleSharp17kDown","accSagittalDoubleFlat17kUp","accSagittalDoubleSharp19sDown","accSagittalDoubleFlat19sUp","accSagittalShaftUp","accSagittalShaftDown","accSagittalAcute","accSagittalGrave","accSagittal1MinaUp","accSagittal1MinaDown","accSagittal2MinasUp","accSagittal2MinasDown","accSagittal1TinaUp","accSagittal1TinaDown","accSagittal2TinasUp","accSagittal2TinasDown","accSagittal3TinasUp","accSagittal3TinasDown","accSagittal4TinasUp","accSagittal4TinasDown","accSagittal5TinasUp","accSagittal5TinasDown","accSagittal6TinasUp","accSagittal6TinasDown","accSagittal7TinasUp","accSagittal7TinasDown","accSagittal8TinasUp","accSagittal8TinasDown","accSagittal9TinasUp","accSagittal9TinasDown","accSagittalFractionalTinaUp","accSagittalFractionalTinaDown","accidentalNarrowReversedFlat","accidentalNarrowReversedFlatAndFlat","accidentalWilsonPlus","accidentalWilsonMinus","articulations","between_lines","av","aboveCode","belowCode","ao","ah","am","ornaments","mordent","mordent_inverted","turn","turn_inverted","tr","upprall","downprall","prallup","pralldown","upmordent","downmordent","lineprall","prallprall","scoop","doit","fall","doitLong","fallLong","bend","plungerClosed","plungerOpen","flip","jazzTurn","smear","Tables","MUSIC_FONT_STACK","clef","keyOctaveGlyph","params","options","octave_shift","duration","sanitizeDuration","pieces","toUpperCase","clefProperties","stroke","int_value","customNoteHeadProps","glyphName","codeNoteHead","displaced","integer","noteValue","fret","scale","glyph","shift_y","glyphMetrics","Glyph","TABLATURE_FONT_SCALE","textWidth","getWidth","artic","spec","keySpec","notes","acc_list","durationNumber","durationToFraction","ticks","durationCodes","glyphTypeProperties","code_head","common","NOTATION_FONT_SCALE","SOFTMAX_FACTOR","STEM_WIDTH","STEM_HEIGHT","STAVE_LINE_THICKNESS","RENDER_PRECISION_PLACES","SLASH_NOTEHEAD_WIDTH","STAVE_LINE_DISTANCE","TEXT_HEIGHT_OFFSET_HACK","accidentalMap","accidentalColumnsTable","second_on_bottom","spaced_out_tetrachord","spaced_out_pentachord","very_spaced_out_pentachord","spaced_out_hexachord","very_spaced_out_hexachord","unicode","sharp","String","fromCharCode","flat","natural","triangle","degrees","circle","validTypes","m","ci","cx","sf","sb","sq","tu","td","TIME4_4","num_beats","beat_value","stem","stem_offset","flag","stem_up_extension","stem_down_extension","tabnote_stem_up_extension","tabnote_stem_down_extension","dot_shiftY","line_above","line_below","position","leger_code_head","beam_count","stem_beam_extension","code_flag_upstem","code_flag_downstem","OutlineCode","ModifierPosition","GlyphCacheEntry","fontStack","point","loadMetrics","bbox","getOutlineBoundingBox","outline","x_shift","y_shift","lookupFontMetric","GlyphOutline","originX","originY","precision","round","nextX","nextY","parts","MOVE","LINE","QUADRATIC","BEZIER","topGlyphs","botGlyphs","originShift","setOptions","reset","lookupGlyph","x_min","x_max","ha","cached_outline","ctx","x_pos","y_pos","cache","lookup","customScale","renderOutline","go","beginPath","moveTo","lineTo","quadraticCurveTo","bezierCurveTo","fill","bboxComp","penX","penY","getCode","setPoint","setStave","stave","getXShift","setXShift","getYshift","setYShift","checkMetrics","metricsScale","setOriginX","xShift","setOriginY","yShift","setOrigin","render","xPos","yPos","checkStave","renderToStave","getYForGlyphs","Map","entries","CURRENT_CACHE_KEY","entry","Modifier","text_line","Position","LEFT","spacingFromNextModifier","PositionString","center","CENTER","above","ABOVE","below","BELOW","left","right","RIGHT","setWidth","getNote","note","checkAttachedNote","setNote","getIndex","checkIndex","setIndex","getModifierContext","modifierContext","checkModifierContext","setModifierContext","getPosition","setPosition","setTextLine","setSpacingFromNextModifier","getSpacingFromNextModifier","alignSubNotesWithNote","subNotes","tickContext","getTickContext","getStave","subNoteXOffset","modLeftPx","modRightPx","subNote","subTickContext","setXOffset","Music","NUM_TONES","canonical_notes","roots","root_values","root_indices","diatonic_intervals","diatonic_accidentals","unison","m2","M2","m3","M3","p4","dim5","p5","m6","M6","b7","M7","intervals","b2","min2","S","H","maj2","T","W","b3","min3","maj3","b5","aug4","b6","aug5","maj6","m7","min7","dom7","maj7","scales","major","minor","ionian","dorian","phyrgian","lydian","mixolydian","aeolian","locrian","scaleTypes","M","noteValues","root_index","cn","cb","cbb","dn","dbb","en","eb","ebb","fn","fb","fbb","gn","gb","gbb","an","ab","abb","bn","bbb","isValidNoteValue","isValidIntervalValue","interval","getNoteParts","noteString","match","exec","getKeyParts","keyString","getNoteValue","getIntervalValue","intervalString","getCanonicalNoteName","getCanonicalIntervalName","intervalValue","getRelativeNoteValue","direction","sum","getRelativeNoteName","rootValue","multiplier","reverse_interval","relativeNoteName","getScaleTones","tones","nextNote","getIntervalBetween","note1","note2","difference","createScaleMap","keySignature","keySigParts","scaleName","keySigString","noteLocation","scaleMap","rootName","noteName","L","DEBUG","render_options","font_scale","parenLeftPadding","parenRightPadding","accidentalCodes","cautionary","state","musicFont","currentMusicFont","noteheadAccidentalPadding","leftShift","left_shift","accidentalSpacing","additionalPadding","accList","prevNote","shiftL","props","getKeyProps","getLeftDisplacedHeadPx","lineSpace","getSpacingBetweenLines","getYForLine","accLine","sort","lineList","previousLine","accShift","flatLine","dblSharpLine","numAcc","column","totalColumns","noFurtherConflicts","groupStart","groupEnd","checkCollision","getGroupLine","getGroupLines","indexes","lineDifference","indexA","indexB","item","notColliding","indexPairs","every","line1","line2","groupLength","groupMember","endCase","patternLength","collisionDetected","columnWidths","columnXOffsets","totalShift","accCount","lastAccOnLine","clearance","clearanceRequired","collision","voices","tickPositions","tickNoteMap","voice","tickPosition","getTickables","shouldIgnoreTicks","notesAtPosition","getTicks","music","scaleMapKey","tickPos","tickables","modifiedPitches","processNote","isRest","staveNote","keyIndex","accidentalString","pitch","sameAccidental","previouslyModified","indexOf","getModifiers","modifier","splice","addModifier","getGraceNotes","fontScale","parenLeft","parenRight","parenWidth","setAsCautionary","start","getModifierStartXY","accX","accY","Stem","stem_up_y_offset","stem_down_y_offset","stem_up_y_base_offset","stem_down_y_base_offset","x_begin","x_end","y_top","y_bottom","stem_extension","stem_direction","hide","isStemlet","stemletHeight","renderHeightAdjustment","UP","DOWN","WIDTH","HEIGHT","setNoteHeadXBounds","setDirection","setExtension","ext","getExtension","setYBounds","getHeight","y_offset","getExtents","isStemUp","ys","stemHeight","innerMostNoteheadY","min","outerMostNoteheadY","topY","baseY","setVisibility","isVisible","setStemlet","adjustHeightForFlag","adjustHeightForBeam","stem_x","stem_y","y_base_offset","stemletYOffset","openGroup","pointerBBox","closeGroup","TextFormatter","textWidthCache","formatterInfo","serifs","monospaced","italic","bold","superscriptOffset","subscriptOffset","maxSizeGlyph","cacheKey","updateParams","registeredFonts","requestedFont","candidates","requestedFamilies","requestedFamily","startsWith","formatter","values","isBold","isItalic","perfectMatch","find","partialMatch","fontSizeInPt","overwrite","updateCacheKey","BOLD","getGlyphMetrics","character","maxHeight","getWidthForCharacterInEm","advanceWidth","getWidthForTextInEm","cachedWidths","getWidthForTextInPx","AnnotationHorizontalJustify","AnnotationVerticalJustify","horizontalJustification","verticalJustification","TOP","minAnnotationPadding","annotations","leftWidth","rightWidth","maxLeftGlyphWidth","maxRightGlyphWidth","annotation","textFormatter","create","verticalSpaceNeeded","glyphWidth","getGlyph","stemDirection","hasStem","getStemDirection","lines","draw_stem","getStem","getNoteType","getNumLines","VerticalJustify","noteLine","getLineNumber","leastString","top_text_line","BOTTOM","greatestString","curBottom","rightOverlap","right_shift","leftOverlap","setVerticalJustification","just","VerticalJustifyString","getJustification","setJustification","HorizontalJustifyString","text_width","measureText","text_height","getStemX","stem_ext","spacing","has_stem","checkStem","getYs","reduce","yt","getYForTopText","getYForBottomText","getTopLineTopY","extents","getStemExtents","fillText","HorizontalJustify","centerStem","CENTER_STEM","top","bottom","roundToNearestHalf","mathFn","isWithinLines","getRoundingFunction","ceil","isStaveOrGraceNote","Articulation","maxGlyphWidth","getIncrement","articulation","increment","curTop","maxWidth","articWidth","overlap","builder","articNameToCode","staccato","tenuto","accent","articString","getFactory","articulationCodes","textLine","canSitBetweenLines","staffSpace","isTab","shouldSitOutsideStaff","initialOffset","isOnStemTip","getInitialOffset","padding","stemTipY","stemBaseY","getTopY","INITIAL_OFFSET","getBottomY","offsetDirection","articLine","snappedLine","snapLineToStaff","setRawFont","drawDot","color","arc","closePath","Tickable","_preFormatted","_postFormatted","intrinsicTicks","tickMultiplier","modifiers","tupletStack","align_center","center_x_shift","ignore_ticks","formatterMetrics","freedom","iterations","space","used","mean","deviation","setIgnoreTicks","checkTickContext","getFormatterMetrics","getCenterXShift","isCenterAligned","setCenterXShift","centerXShift","setCenterAlignment","getVoice","setVoice","getTuplet","tuplet","getTupletStack","resetTuplet","noteCount","notesOccupied","getNoteCount","getNotesOccupied","applyTickMultiplier","pop","setTuplet","addToModifierContext","mc","addMember","setTickContext","tc","preFormat","preFormatted","postFormat","postFormatted","getIntrinsicTicks","setIntrinsicTicks","getTickMultiplier","setDuration","getAbsoluteX","noteStruct","parsedNoteStruct","parseNoteStruct","JSON","stringify","keyProps","noteType","customTypes","duration_override","getGlyphProps","customGlyphs","playNote","leftDisplacedHeadPx","rightDisplacedHeadPx","annotation_spacing","glyph_font_scale","stroke_px","xStart","xPre1","xAbs","xPost1","notePx","xPost2","xEnd","xFreedomRight","xWidth","yy","spaceDeviation","durationString","dots","durationProps","parseDuration","durationToTicks","currentTicks","getPlayNote","setPlayNote","addStroke","setYs","getRightDisplacedHeadPx","setLeftDisplacedHeadPx","setRightDisplacedHeadPx","isTopNote","getLineForRest","getGlyphWidth","getDuration","isDotted","getModifiersByType","getBeam","beam","checkBeam","hasBeam","setBeam","signature","filter","getRightParenthesisPx","getLeftParenthesisPx","getFirstDotPx","getMembers","getState","glyphPx","getNoteStartX","getTieRightX","tieStartX","getTieLeftX","tieEndX","getKeys","StaveModifierPosition","BarlineType","ChordSymbolHorizontalJustify","ChordSymbolVerticalJustify","SymbolTypes","SymbolModifiers","StaveModifier","placeGlyphOnLine","customShift","getPadding","setPadding","setLayoutMetrics","layoutMetrics","getLayoutMetrics","thickness","TYPE","widths","SINGLE","DOUBLE","END","REPEAT_BEGIN","REPEAT_END","REPEAT_BOTH","NONE","paddings","layoutMetricsMap","xMin","xMax","paddingLeft","paddingRight","BEGIN","setType","typeString","single","double","end","repeatBegin","repeatEnd","repeatBoth","none","getType","drawVerticalBar","drawVerticalEndBar","drawRepeatBar","double_bar","staveCtx","botY","getBottomLineBottomY","fillRect","begin","dot_x","dot_radius","dot_y","BarNote","barline","Bend","release","phrase","tap","line_width","line_style","bend_width","release_width","updateWidth","bends","last_width","stringPos","setTap","getText","getTextHeight","totalWidth","additional_width","draw_width","lowestY","bend_height","annotation_y","renderBend","cp_x","cp_y","renderRelease","renderArrowHead","yBase","renderText","render_x","last_bend","last_bend_draw_width","last_drawn_width","ChordSymbol","symbolBlocks","horizontal","vertical","useKerning","reportWidth","superSubRatio","global","NO_TEXT_FORMAT","val","noFormat","glyphCode","engravingFontResolution","spacingBetweenBlocks","metric","getMetricForGlyph","yOffset","leftSideBearing","kerningOffset","chordSymbol","lowerKerningText","upperKerningText","symbolModifier","SUPERSCRIPT","SUBSCRIPT","minPadding","symbols","nonSuperWidth","symbol","fontAdj","scaleSize","glyphAdj","symbolWidth","lineSpaces","vAlign","j","sup","isSuperscript","sub","isSubscript","superSubScale","adj","symbolType","GLYPH","superSubFontSize","getWidthForGlyph","getYShiftForGlyph","getXShiftForGlyph","TEXT","getYOffsetForText","over","prev","setEnableKerning","updateKerningAdjustments","updateOverBarAdjustments","getVertical","getReportWidth","getHorizontal","setReportWidth","barIndex","findIndex","xoff","yoff","symIndex","accum","getKerningAdjustment","currSymbol","prevSymbol","adjustment","preKernUpper","preKernLower","some","xx","kerningOffsetPixels","getSymbolBlock","_c","symbolBlock","glyphArgs","glyphPoints","addSymbolBlock","parameters","addText","addTextSuperscript","addTextSubscript","addGlyphSuperscript","addGlyph","addGlyphOrText","char","addLine","setVertical","vj","setHorizontal","hj","yMax","y_max","stem_base","isSuper","isSub","curY","smallerFontSize","diminished","dim","halfDiminished","augmented","majorSeventh","leftParen","rightParen","leftBracket","rightBracket","leftParenTall","rightParenTall","symbolTypes","symbolModifiers","radius","all","dot","setDotShiftY","dot_list","max_shift_map","note_id","dot_shift","x_width","last_line","last_note","prev_dotted_space","half_shiftY","forceFlagRight","FretHandFinger","finger","x_offset","nums","nums_list","prev_note","shiftLeft","shiftRight","pos","textHeight","shiftR","numShiftL","numShiftR","xWidthL","xWidthR","lastLine","lastNote","num_shift","numWidth","fingerings","fingeringString","number","Fingering","fingering","setFretHandFinger","getFretHandFinger","setOffsetX","setOffsetY","NoteHead","custom_glyph","stem_up_x_offset","stem_down_x_offset","note_type","glyph_code","custom_glyph_code","slashed","isDisplaced","getLine","setLine","displacementStemAdjustment","fontShift","displacedFontShift","half_spacing","min_y","getYForNote","head_x","categorySuffix","staveSpace","durationToNumber","breve_lines","drawSlashNoteHead","renderGlyph","setStem","buildStem","buildFlag","hasFlag","flagCode","getBaseCustomNoteHeadGlyph","getStemLength","getStemExtension","getBeamCount","getStemMinimumLength","setStemDirection","offsets","offsetYBaseStemUp","offsetYTopStemUp","offsetYBaseStemDown","offsetYTopStemDown","getCenterGlyphX","stem_extension_override","setStemLength","drawStem","stemOptions","shiftRestVertical","dir","delta","maxLine","minLine","setKeyLine","getKeyLine","sortedKeyProps","ledgerLineStyle","use_default_head_x","_noteHeads","LEDGER_LINE_OFFSET","calculateKeyProps","auto_stem","autoStem","STEM_UP","STEM_DOWN","minNoteheadPadding","notesList","minL","stemMax","stemMin","maxL","isrest","voice_shift","getVoiceShiftWidth","is_displaced","noteU","noteM","noteL","voiceXShift","lineSpacing","lineDiff","whiteNoteHeadCount","blackNoteHeadCount","centerRest","noteHeadStyles","noteHead","buildNoteHeads","noteHeadStyle","head","calcNoteDisplacements","noteProps","notehead","calculateOptimalStemDirection","keyProperties","minY","maxY","halfLineSpacing","frac","resultLine","thisLine","isChord","getNoteHeadBounds","setNoteDisplaced","getRightShift","restLine","isInnerNoteIndex","setStemStyle","getStemStyle","setLedgerLineStyle","getLedgerLineStyle","setFlagStyle","getFlagStyle","setKeyStyle","noteHeadPadding","shouldDrawFlag","nonDisplacedX","displacedX","highestDisplacedLine","lowestDisplacedLine","yTop","Infinity","yBottom","highestLine","lowestLine","highestNonDisplacedLine","lowestNonDisplacedLine","displaced_x","non_displaced_x","highest_line","lowest_line","highest_displaced_line","lowest_displaced_line","highest_non_displaced_line","lowest_non_displaced_line","getNoteHeadBeginX","getNoteHeadEndX","noteHeads","note_heads","drawLedgerLines","doubleWidth","min_x","drawLedgerLine","normal","ledgerWidth","getDefaultLedgerLineStyle","drawModifiers","noteheadParam","noteheadStyle","hasNoBeam","drawFlag","_d","_e","noteStemHeight","flagX","flagY","getStaveNoteScale","drawNoteHeads","super_stem_extension","mid_line_distance","lines_over_octave_from_mid_line","spacing_between_lines","xBegin","shouldRenderStem","stemX","StaveTie","setNotes","cp1","cp2","text_shift_x","first_x_shift","last_x_shift","tie_spacing","first_note","first_indices","last_indices","isPartial","renderTie","first_ys","last_ys","last_x_px","first_x_px","first_y_px","last_y_px","top_cp_y","bottom_cp_y","center_x","getNotes","getTieStartX","getTieEndX","TabTie","VoiceMode","Voice","time","voiceTime","resolutionMultiplier","mode","STRICT","ticksUsed","largestTickWidth","softmaxFactor","totalTicks","smallestTickCount","Mode","getTotalTicks","getTicksUsed","getLargestTickWidth","getSmallestTickCount","getMode","setMode","getResolutionMultiplier","getActualResolution","tickable","setStrict","strict","SOFT","isComplete","FULL","setSoftmaxFactor","factor","reCalculateExpTicksUsed","expTicksUsed","softmax","tickValue","v","exp","addTickable","addTickables","grace_notes","show_slur","slur","slur_y_shift","beams","gracenote_groups","group_list","gracenote_group","is_stavenote","formatWidth","group_shift","Formatter","joinVoices","format","getMinTotalWidth","beamNotes","Beam","beam_width","partial_beam_length","graceNote","TieClass","NoteSubGroup","groups","group","TickContext","tickID","currentTick","maxTicks","maxTickable","minTicks","minTickable","xBase","xOffset","tickablesByVoice","totalLeftPx","totalRightPx","tContexts","tContext","contexts","getTickID","getXBase","setXBase","getXOffset","getMaxTicks","getMinTicks","getMaxTickable","getMinTickable","getTickableForVoice","voiceIndex","getTickablesByVoice","getCenterAlignedTickables","getCurrentTick","setCurrentTick","tick","Ornament","delayed","accidentalLowerPadding","accidentalUpperPadding","ornament","ornamentCodes","adjustForStemDirection","reportedWidth","stemUpYOffset","ornamentAlignWithNoteHead","ornamentNoteTransition","ornamentRelease","ornamentAttack","ornamentArticulation","jazzOrnaments","setDelayed","setUpperAccidental","accid","accidentalUpper","setLowerAccidental","accidentalLower","stemDir","stemExtents","isPlacedOnNoteheadSide","glyphYBetweenLines","glyphX","glyphY","delayXShift","startX","nextContext","getNextContext","Parenthesis","parentheses","x_widthL","x_widthR","parenthesis","isHTMLCanvas","HTMLCanvasElement","toDataURL","isHTMLDiv","HTMLDivElement","appendChild","CanvasContext","context2D","canvas","CANVAS_BROWSER_SIZE_LIMIT","limit","clearRect","cls","setBackgroundFillStyle","blur","getTransform","setLineCap","capType","lineCap","setLineDash","dash","resize","devicePixelRatio","sanitizeCanvasDims","rect","cp1x","cp1y","cp2x","cp2y","cpx","cpy","startAngle","endAngle","counterclockwise","fontBoundingBoxAscent","fontBoundingBoxDescent","actualBoundingBoxAscent","actualBoundingBoxDescent","ATTRIBUTES_TO_IGNORE","path","SVG_NS","TWO_PI","SVGContext","backgroundFillStyle","fontCSSString","svg","parent","pen","defaultFontAttributes","attributes","shadow_attributes","state_stack","svgElementType","createElementNS","lineDash","applyAttributes","visibleWidth","visibleHeight","setViewBox","viewBox_or_minX","viewBoxString","attrNamesToIgnore","nodeName","attrName","setAttributeNS","lastChild","removeChild","rectangle","x0","cos","y0","sin","tmpStartTest","tmpEndTest","large","sweep","getShadowStyle","sa","measureTextCache","txt","textContent","savedState","fontAttributes","RendererBackends","RendererLineEndType","TextJustification","VoltaType","measureImpl","getBBox","Renderer","arg0","arg1","backend","maybeElement","Backends","CANVAS","SVG","elementId","background","renderer","lastContext","buildContext","fromX","fromY","toX","toY","dashPattern","dx","dy","angle","atan2","idx","dashLength","nx","ny","LineEndType","StringNumber","string_number","dashed","leg","drawCircle","stringNumber","shift_left","glyphLine","num_shiftR","num_width","setLineEndType","setStringNumber","setLastNote","setDashed","setDrawCircle","stemPadding","verticalPadding","leftPadding","rightPadding","len","pattern","drawDashedLine","Stroke","all_voices","strokes","strokeList","string","getPositions","strokeShift","addEndNote","note_end","line_space","arrow","arrow_shift_x","arrow_y","text_y","Type","BRUSH_DOWN","BRUSH_UP","ROLL_DOWN","RASQUEDO_DOWN","ROLL_UP","RASQUEDO_UP","ARPEGGIO_DIRECTIONLESS","strokeLine","Vibrato","harsh","vibrato_width","wave_height","wave_width","wave_girth","setVibratoWidth","vibratos","vibrato","setHarsh","vx","vy","renderVibrato","opts","num_waves","ModifierContext","members","formatted","member","getLeftShift","Clef","types","tab","attachment","numLines","shiftY","KeySignature","cancelKeySpec","alterKeySpec","setKeySig","glyphFontScale","xPositions","paddingForced","convertToGlyph","nextAcc","accGlyphData","extraWidth","xPosition","cancelKey","convertToCancelAccList","cancel_accList","different_types","naturals","cancelled","concat","addToStave","convertAccLines","customLines","offset","alterKey","convertToAlterAccList","firstAccidentalType","cancelAccList","getEndClef","getClef","Repetition","symbol_type","setShiftX","setShiftY","CODA_RIGHT","drawCodaFixed","CODA_LEFT","drawSymbolText","SEGNO_LEFT","drawSignoFixed","SEGNO_RIGHT","DC","DC_AL_CODA","DC_AL_FINE","DS","DS_AL_CODA","DS_AL_FINE","FINE","TO_CODA","draw_coda","text_x","symbol_x","modifierWidth","getVerticalBarWidth","StaveSection","section","drawRect","shift_x","setStaveSection","textMeasurements","StaveTempo","tempo","setTempo","bpm","stem_height","TextNote","superscript","subscript","smooth","justification","struct","GLYPHS","segno","mordent_upper","mordent_lower","p","z","coda","pedal_open","pedal_close","caesura_straight","caesura_curved","breath","Justification","StaveText","setStaveText","setText","getBottomLineY","Volta","volta","top_y","vert_height","BEGIN_END","TimeSignatureGlyph","timeSignature","topDigits","botDigits","topWidth","timeSigType","topGlyph","botWidth","botGlyph","topStartX","botStartX","start_x","topLine","bottomLine","TimeSignature","timeSpec","customPadding","validate_args","fontLineShift","parseTimeSpec","numbers","test","assertIsValidTimeSig","makeTimeSignatureGlyph","getInfo","setTimeSig","SORT_ORDER_BEG_MODIFIERS","SORT_ORDER_END_MODIFIERS","Stave","end_x","measure","endClef","vertical_bar_width","num_lines","fill_style","left_bar","right_bar","spacing_between_lines_px","space_above_staff_ln","space_below_staff_ln","top_text_position","bottom_text_position","line_config","bounds","defaultLedgerLineStyle","resetLines","addEndModifier","defaultPadding","setDefaultLedgerLineStyle","visible","setNoteStartX","getNoteEndX","setNumLines","mod","setMeasure","getMeasure","getModifierXShift","begBarline","setRepetitionType","setVoltaType","number_t","setSection","staveSection","headroom","getLineForY","setBegBarType","setEndBarType","setClef","clefSpec","addClef","setEndClef","setKeySignature","addKeySignature","setEndKeySignature","setTimeSignature","timeSignatures","addTimeSignature","setEndTimeSignature","addEndClef","addEndTimeSignature","addTrebleGlyph","noPosition","noCategory","sortByCategory","items","order","temp","endBarline","begModifiers","endModifiers","lastBarlineIdx","getConfigForLines","setConfigForLine","line_number","setConfigForLines","lines_configuration","staves","maxX","drawBoldDoubleLine","topX","StaveConnector","BOLD_DOUBLE_LEFT","BOLD_DOUBLE_RIGHT","variableWidth","top_stave","bottom_stave","texts","newType","content","SINGLE_RIGHT","THIN_DOUBLE","attachment_height","SINGLE_LEFT","BRACE","x3","y3","cpx1","cpy1","cpx2","cpy2","cpx3","cpy3","cpx4","cpy4","cpx5","cpy5","cpx6","cpy6","cpx7","cpy7","cpx8","cpy8","BRACKET","singleRight","singleLeft","brace","bracket","boldDoubleLeft","boldDoubleRight","thinDouble","sumArray","arr","getRestLineForNextNoteGroup","currRestLine","currNoteIndex","nextRestLine","noteIndex","formatterOptions","globalSoftmax","maxIterations","justifyWidth","totalCost","durationStats","minTotalWidth","hasMinTotalWidth","tickContexts","array","list","modifierContexts","contextGaps","total","gaps","lossHistory","paddingBetween","accumulator","stavePadding","gap","toFixed","auto_beam","align_rests","applyAndGetBeams","formatToStave","tabstave","tabnotes","autobeam","notevoice","tabvoice","alignAllNotes","alignTuplets","currTickable","prevTickable","alignRests","AlignRestsToNotes","preCalculateMinTotalWidth","unalignedPadding","unalignedCtxCount","wsum","dsum","createTickContexts","contextList","contextMap","wavg","wvar","ll","wpads","davg","dvar","dpads","padmax","unalignedPad","createModifierContexts","tickToContextMap","integerTicks","staveTickToContextMap","newContext","makeContext","addToContext","tickList","createContexts","contextArray","getTickContexts","renderingContext","voicesParam","evaluate","firstContext","calculateIdealDistances","adjustedJustifyWidth","backTickable","prevContext","backVoices","matchingVoices","maxNegativeShiftPx","expectedDistance","thisTickable","insideLeftEdge","backMetrics","insideRightEdge","fromTickable","fromTickablePx","shiftToIdealDistances","idealDistances","centerX","spaceAccum","contextX","ideal","errorPx","negativeShiftPx","configMinPadding","configMaxPadding","targetWidth","distances","actualWidth","minDistance","mdCalc","di","calcMinDistance","paddingMaxCalc","curTargetWidth","lastTickablePadding","lastTickable","tickWidth","paddingMax","paddingMin","prevTick","prevMetrics","currMetrics","leftNoteEdge","rightNote","rightMetrics","stats","count","updateStats","totalDeviation","tune","alpha","current","cost","optionsParam","TupletLocation","Tuplet","numerator_glyphs","denom_glyphs","num_notes","beats_occupied","beatsOccupiedDeprecationWarning","notes_occupied","bracketed","ratioed","setTupletLocation","location","LOCATION_TOP","resolveGlyphs","attach","LOCATION_BOTTOM","NESTING_OFFSET","detach","setBracketed","setRatioed","getBeatsOccupied","setBeatsOccupied","beats","setNotesOccupied","unshift","getNestedTupletCount","maxTupletCount","countTuplets","minTupletCount","tupletCount","getYPosition","nested_tuplet_y_offset","topModifierOffset","modLines","modY","noteHeadOffset","stemOffset","lineCheck","nn","bottom_y","addGlyphWidth","notation_start_x","colon_x","colon_radius","calculateStemDirection","lineSum","keyProp","BEAM_LEFT","BEAM_RIGHT","BEAM_BOTH","slope","forcedPartialDirections","stem_weight","memo","break_on_indices","max_slope","min_slope","slope_iterations","slope_cost","show_stemlets","stemlet_extension","flat_beams","min_flat_beam_offset","time_sig","beatTotal","beatValue","generateBeams","config","tickGroups","unprocessedNotes","currentTickGroup","noteGroups","currentGroup","nextTickGroup","nextGroup","currentGroupTotalTicks","unprocessedNote","ticksPerGroup","vf_notes","unbeamable","createGroups","sanitizedGroups","tempGroup","isFirstOrLast","breaksOnEachRest","beam_rests","breaksOnFirstOrLastRest","beam_middle_only","breakOnStemChange","maintain_stem_directions","prevDirection","isUnbeamableDuration","sanitizeGroups","findFirstNote","applyStemDirection","beamedNoteGroups","beamable","allTuplets","uniqueTuplets","noteTuplet","getTuplets","secondary_breaks","secondary_break_ticks","flat_beam_offset","beamCount","breakSecondaryAt","indices","setPartialBeamSideAt","side","unsetPartialBeamSideAt","getSlopeY","calculateSlope","firstNote","initialSlope","firstStemTipY","firstStemX","getStemSlope","minCost","MAX_VALUE","bestSlope","totalStemExtension","yShiftTemp","adjustedStemTipY","diff","idealSlope","calculateFlatSlope","extremeY","extremeBeamCount","currentExtreme","extremeTest","newOffset","getBeamYToDraw","beamY","applyStemExtensions","beamedStemTipY","preBeamExtension","beamExtension","totalBeamWidth","lookupBeamDirection","prev_tick","next_tick","forcedBeamDirection","lookup_duration","prev_note_gets_beam","next_note_gets_beam","note_gets_beam","getBeamLines","tick_of_duration","beam_started","beam_lines","current_beam","previous_should_break","tick_tally","should_break","next_note","beam_alone","beam_direction","last_beam","drawStems","drawBeamLines","valid_beam_durations","beamThickness","beamLines","beam_line","startBeamX","startBeamY","lastBeamX","lastBeamY","ClefNote","clef_obj","abs_x","Crescendo","extend_left","extend_right","decrescendo","setHeight","setDecrescendo","decresc","tick_context","next_context","begin_x","half_height","reverse","renderHairpin","CurvePosition","Curve","from","to","NEAR_HEAD","position_end","invert","cps","nearHead","nearTop","NEAR_TOP","renderCurve","first_x","first_y","last_x","last_y","cp0x","cp0y","cp_spacing","end_metric","Parser","flattenMatches","matchedString","results","grammar","errorPos","expect","matchFail","returnPos","matchSuccess","matchToken","token","noSpace","regexp","RegExp","success","incrementPos","expectOne","rule","maybe","allMatches","oneMatch","localPos","or","gotOne","numMatches","expectOneOrMore","more","expectZeroOrMore","ruleFunc","bind","oneOrMore","zeroOrMore","matches","run","EasyScore","EasyScoreGrammar","PIECE","PIECES","EOL","CHORDORNOTE","PARAMS","commitPiece","COMMA","DURATION","DOTS","OPTS","CHORD","SINGLENOTE","LPAREN","NOTES","RPAREN","addChord","NOTE","NOTENAME","ACCIDENTAL","OCTAVE","addSingleNote","MICROTONES","ACCIDENTALS","DOT","setNoteDots","SLASH","MAYBESLASH","TYPES","setNoteType","DURATIONS","setNoteDuration","LBRACKET","KEYVAL","KEYVALS","RBRACKET","KEY","EQUALS","VAL","addNoteOption","SVAL","DVAL","Piece","chord","Builder","commitHooks","elements","rollingDuration","resetPiece","getElements","addCommitHook","commitHook","piece","addNote","standardAccidentals","notePiece","GhostNote","buildAndAttach","setId","commaSeparatedRegex","setClass","defaults","easyScoreHook","throwOnError","parser","ERROR_MSG","parameter","GlyphNote","ignoreTicks","setGlyph","SCALE","slash","ret","staveNoteScale","offsetScale","slashBBox","calcBeamedNotesSlashBBox","noteHeadBounds","defaultStemExtention","defaultOffsetY","slashStemOffset","slashBeamOffset","protrusions","beam_slope","scaleX","beam_angle","atan","iPointOnBeam","slash_angle","protrusion_stem_dx","protrusion_stem_dy","protrusion_beam_dx","protrusion_beam_dy","stem0X","stemY","KeySigNote","semibreve_rest","MultiMeasureRest","number_of_measures","xs","hasPaddingLeft","hasPaddingRight","hasLineThickness","hasSymbolSpacing","padding_left","padding_right","line_thickness","symbol_spacing","use_symbols","show_number","number_line","number_glyph_point","serif_thickness","semibreve_rest_glyph_scale","getXs","drawLine","spacingBetweenLines","lineThicknessHalf","serifThickness","bot","leftIndented","rightIndented","lineTop","lineBottom","drawSymbols","n4","n2","n1","get_semibreve_rest","rest_scale","rest_width","yMiddle","timeSig","drawPedalGlyph","glyph_data","PedalMarking","custom_depress_text","custom_release_text","bracket_height","text_margin_right","bracket_line_width","pedal","MIXED","setCustomText","depress","drawBracketed","prev_x","prev_y","is_pedal_depressed","next_is_same","prev_is_same","drawText","pedal_depress","pedal_release","mixed","CODES","RepeatNote","drawArrowHead","StaveLine","line_dash","rounded_end","draw_start_arrow","draw_end_arrow","arrowhead_length","arrowhead_angle","text_position_vertical","TextVerticalPosition","text_justification","applyLineStyle","applyFontStyle","drawArrowLine","pt1","pt2","both_arrows","distance","ratio","end_y","start_y","line_angle","angle1","angle2","top_x","bottom_x","start_position","end_position","first_index","last_index","upwards_slope","notehead_width","vertical_position","System","spaceBetweenStaves","autoWidth","noJustification","debugFormatter","formatIterations","noPadding","details","formatOptions","addConnector","connector","addStave","staveOptions","spaceAbove","spaceBelow","debugNoteMetrics","options_details","allVoices","allStaves","debugNoteMetricsYs","part","lastY","formatBegModifiers","plotDebugging","plotMetrics","positions","ghost","draw_dots","draw_stem_through_stave","setGhost","tabToGlyph","getStemY","stemDownLine","stemStartLine","flag_x","flag_y","drawStemThrough","stemThrough","stemLines","unused_strings","up_stem","down_stem","line_spacing","total_lines","stem_lines","strings","containsLastString","containsFirstString","line_ys","isTopBound","isBottomBound","getPartialStemLines","strings_used","stem_through","getUnusedStringGroups","drawPositions","tab_x","render_stem","TabStave","addTabGlyph","TextBracket","TextBracketPosition","stop","show_bracket","underline_superscript","Positions","PositionsString","main_measure","main_width","main_height","super_y","super_measure","super_width","super_height","line_y","TextDynamics","sequence","glyph_font_size","total_width","letter","letter_x","current_letter","TimeSigNote","timeSigInfo","VibratoBracket","bracket_data","stop_x","Factory","renderQ","systems","initRenderer","getVoices","ghostNote","textNote","barNote","clefNote","timeSigNote","keySigNote","hJustify","vJustify","kerning","upperAccidental","lowerAccidental","numMeasures","multiMeasureRest","secondaryBeamBreaks","partialBeamDirections","curve","tie","vibratoBracket","textBracket","system","GraceTabNote","KeyManager","setKey","getKey","scaleMapByValue","originalScaleMapByValue","getAccidental","selectNote","scaleNote","modparts","change","valueNote","originalValueNote","StaveHairpin","hairpin","left_shift_px","right_shift_px","right_shift_ticks","left_shift_ticks","ppt","pixelsPerTick","l_shift_px","r_shift_px","hairpin_options","setRenderOptions","dis","staff_height","l_shift","r_shift","CRESC","DECRESC","TabSlide","first_fret","last_fret","SLIDE_UP","SLIDE_DOWN","slide_y","Tremolo","y_spacing_scale","extra_stroke_scale","y_spacing","Tuning","tuningString","tuningValues","setTuning","names","standard","dagdad","dropd","standardBanjo","noteToInteger","getValueForString","stringNum","getValueForFret","fretNum","stringValue","getNoteForFret","integerToNote","Flow","BUILD","VERSION","DATE","fontNames","fontModuleOrPath","hasKeySignature","getKeySignatures","BravuraFont","bracketTop","y_min","bracketBottom","barlineTick","breathMarkTick","gClef","cClef","fClef","unpitchedPercussionClef1","timeSig0","timeSig1","timeSig2","timeSig3","timeSig4","timeSig5","timeSig6","timeSig7","timeSig8","timeSig9","timeSigCommon","timeSigCutCommon","timeSigPlus","timeSigPlusSmall","timeSigMinus","timeSigParensRight","timeSigParensRightSmall","timeSigParensLeft","timeSigParensLeftSmall","noteheadDoubleWhole","noteheadWhole","noteheadHalf","noteheadBlack","noteheadXDoubleWhole","noteheadXWhole","noteheadXHalf","noteheadXBlack","noteheadCircleXDoubleWhole","noteheadCircleXWhole","noteheadCircleXHalf","noteheadCircleX","noteheadCircledDoubleWhole","noteheadCircledWhole","noteheadCircledHalf","noteheadCircledBlack","noteheadDoubleWholeSquare","noteheadSquareWhite","noteheadSquareBlack","noteheadTriangleDownDoubleWhole","noteheadTriangleDownWhole","noteheadTriangleDownHalf","noteheadTriangleDownBlack","noteheadTriangleUpDoubleWhole","noteheadTriangleUpWhole","noteheadTriangleUpHalf","noteheadTriangleUpBlack","noteheadSlashedDoubleWhole1","noteheadSlashedWhole1","noteheadSlashedHalf1","noteheadSlashedBlack1","noteheadSlashedDoubleWhole2","noteheadSlashedWhole2","noteheadSlashedHalf2","noteheadSlashedBlack2","noteheadDiamondDoubleWhole","noteheadDiamondWhole","noteheadDiamondHalf","noteheadDiamondBlack","noteheadParenthesis","noteheadParenthesisRight","noteheadParenthesisLeft","noteheadMoonBlack","noteheadTriangleLeftBlack","noteheadTriangleRightBlack","noteheadTriangleRoundDownBlack","augmentationDot","tremolo1","flag8thUp","flag8thDown","flag16thUp","flag16thDown","flag32ndUp","flag32ndDown","flag64thUp","flag64thDown","flag128thUp","flag128thDown","accidentalFlat","accidentalNatural","accidentalSharp","accidentalDoubleSharp","accidentalDoubleFlat","accidentalParensLeft","accidentalParensRight","accidentalQuarterToneFlatStein","accidentalThreeQuarterTonesFlatZimmermann","accidentalQuarterToneSharpStein","accidentalThreeQuarterTonesSharpStein","accidentalBuyukMucennebFlat","accidentalBakiyeFlat","accidentalKomaSharp","accidentalKucukMucennebSharp","accidentalKoron","accidentalSori","articAccentAbove","articAccentBelow","articTenutoAbove","articTenutoBelow","articStaccatoAbove","articStaccatoBelow","articStaccatissimoAbove","articStaccatissimoBelow","articMarcatoAbove","articMarcatoBelow","fermataAbove","fermataBelow","fermataLongAbove","fermataLongBelow","fermataVeryLongAbove","fermataVeryLongBelow","fermataShortAbove","fermataShortBelow","breathMarkComma","breathMarkUpbow","caesura","caesuraCurved","restMaxima","restDoubleWhole","restWhole","restWholeLegerLine","restHalf","restHalfLegerLine","restQuarter","rest8th","rest16th","rest32nd","rest64th","rest128th","dynamicPiano","dynamicMezzo","dynamicForte","dynamicRinforzando","dynamicSforzando","dynamicZ","ornamentTrill","ornamentTurn","ornamentTurnSlash","ornamentMordent","ornamentShortTrill","ornamentTremblement","ornamentPrecompAppoggTrill","ornamentPrecompSlideTrillDAnglebert","ornamentPrecompSlideTrillBach","ornamentPrecompTrillSuffixDandrieu","ornamentPrecompDoubleCadenceUpperPrefix","ornamentPrecompDoubleCadenceUpperPrefixTurn","ornamentPrecompTrillLowerSuffix","brassScoop","brassDoitMedium","brassFallLipShort","brassLiftMedium","brassFallRoughMedium","brassBend","brassMuteClosed","brassMuteOpen","brassFlip","brassJazzTurn","brassSmear","stringsDownBow","stringsUpBow","stringsHarmonic","pluckedSnapPizzicatoAbove","pluckedSnapPizzicatoBelow","pluckedLeftHandPizzicato","keyboardPedalPed","keyboardPedalUp","pictChokeCymbal","wiggleArpeggiatoUp","arrowheadBlackUp","arrowheadBlackDown","arpeggiatoUp","arpeggiatoDown","repeat1Bar","repeat2Bars","repeat4Bars","repeatBarSlash","csymDiminished","csymHalfDiminished","csymAugmented","csymMajorSeventh","csymMinor","csymParensLeftTall","csymParensRightTall","csymBracketLeftTall","csymBracketRightTall","csymParensLeftVeryTall","csymParensRightVeryTall","csymDiagonalArrangementSlash","generatedOn","BravuraMetrics","smufl","endPaddingMax","endPaddingMin","unalignedNotePadding","default","small","smuflCode","shiftX","lineCount","gracenote","pedalMarking","up","down","digits","shiftLine","tupletPoint","tremolo","offsetYStemUp","offsetYStemDown","offsetXStemUp","offsetXStemDown","grace","staveRepetition","symbolText","offsetX","offsetY","heightAdjustmentForFlag","staveTempo","straight","wiggly","restQuarterStemUp","restQuarterStemDown","custom","noteheadCircleXStemUp","noteheadCircleXStemDown","noteheadDiamondHalfStemUp","noteheadDiamondBlackStemUp","noteheadDiamondWholeStemUp","noteheadXHalfStemUp","noteheadXHalfStemDown","noteheadXWholeStemUp","noteheadXWholeStemDown","noteheadXDoubleWholeStemUp","noteheadXDoubleWholeStemDown","noteheadSquareWhiteStemDown","noteheadSquareWhiteStemUp","noteheadSquareBlackStemUp","noteheadTriangleUpWholeStemUp","CustomFont","vexAccidentalMicrotonal2","vexAccidentalMicrotonal3","vexAccidentalMicrotonal4","vexNoteHeadRectBlack","vexNoteHeadRectWhite","CustomMetrics","GonvilleFont","vexAccidentalMicrotonal1","vexWiggleArpeggioUp","vexNoteHeadMutedBreve","cssFontWeight","ascender","underlinePosition","cssFontStyle","yMin","original_font_information","postscript_name","version_string","vendor_url","full_font_name","font_family_name","copyright","description","trademark","designer","designer_url","unique_font_identifier","license_url","license_description","manufacturer_name","font_sub_family_name","descender","lineHeight","underlineThickness","GonvilleMetrics","LelandFont","LelandMetrics","PetalumaFont","PetalumaMetrics","noteheadBlackStemUp","noteheadHalfStemUp","noteheadWholeStemUp","noteheadXBlackStemUp","PetalumaScriptFont","$","I","J","K","N","O","Q","U","V","Y","Z","_","l","RobotoSlabFont","Vex","cmp","eq","newArr","last","canvasSelector","start_time","Date","getTime","setMusicFont","fontData","registerInfo","loadTextFonts"],"sourceRoot":""} \ No newline at end of file diff --git a/build/esm/entry/vexflow-bravura.js b/build/esm/entry/vexflow-bravura.js new file mode 100644 index 0000000000..d11dbcf0a4 --- /dev/null +++ b/build/esm/entry/vexflow-bravura.js @@ -0,0 +1,10 @@ +import { Flow } from '../src/flow.js'; +import { loadBravura } from '../src/fonts/load_bravura.js'; +import { loadCustom } from '../src/fonts/load_custom.js'; +import { loadTextFonts } from '../src/fonts/textfonts.js'; +loadBravura(); +loadCustom(); +Flow.setMusicFont('Bravura', 'Custom'); +loadTextFonts(); +export * from '../src/index.js'; +export * as default from '../src/index.js'; diff --git a/build/esm/entry/vexflow-core.js b/build/esm/entry/vexflow-core.js new file mode 100644 index 0000000000..61664497c8 --- /dev/null +++ b/build/esm/entry/vexflow-core.js @@ -0,0 +1,54 @@ +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +import { Flow } from '../src/flow.js'; +import { Font } from '../src/font.js'; +import { loadTextFonts } from '../src/fonts/textfonts.js'; +import { globalObject, RuntimeError } from '../src/util.js'; +const fontModules = { + Bravura: './vexflow-font-bravura.js', + Gonville: './vexflow-font-gonville.js', + Petaluma: './vexflow-font-petaluma.js', + Leland: './vexflow-font-leland.js', + Custom: './vexflow-font-custom.js', +}; +Flow.fetchMusicFont = (fontName, fontModuleOrPath) => __awaiter(void 0, void 0, void 0, function* () { + const font = Font.load(fontName); + if (font.hasData()) { + return; + } + if (!fontModuleOrPath) { + if (fontName in fontModules) { + fontModuleOrPath = fontModules[fontName]; + } + else { + throw new RuntimeError('UnknownFont', `Music font ${fontName} does not exist.`); + } + } + let fontModule; + if (typeof fontModuleOrPath === 'string') { + const module = yield import(fontModuleOrPath); + const g = globalObject(); + const VexFlowFont = g['VexFlowFont']; + if (typeof VexFlowFont !== 'undefined' && typeof VexFlowFont[fontName] !== 'undefined') { + fontModule = VexFlowFont[fontName]; + } + else { + fontModule = module.Font; + } + } + else { + fontModule = fontModuleOrPath; + } + font.setData(fontModule.data); + font.setMetrics(fontModule.metrics); +}); +loadTextFonts(); +export * from '../src/index.js'; +export * as default from '../src/index.js'; diff --git a/build/esm/entry/vexflow-debug-with-tests.js b/build/esm/entry/vexflow-debug-with-tests.js new file mode 100644 index 0000000000..cb08380693 --- /dev/null +++ b/build/esm/entry/vexflow-debug-with-tests.js @@ -0,0 +1,11 @@ +import * as VexSrc from '../src/index.js'; +import * as VexTests from '../tests/index.js'; +import { Flow } from '../src/flow.js'; +import { loadAllMusicFonts } from '../src/fonts/load_all.js'; +import { loadTextFonts } from '../src/fonts/textfonts.js'; +loadAllMusicFonts(); +Flow.setMusicFont('Bravura', 'Gonville', 'Custom'); +loadTextFonts(); +export * from '../src/index.js'; +export * from '../tests/index.js'; +export default Object.assign(Object.assign({}, VexSrc), VexTests); diff --git a/build/esm/entry/vexflow-debug.js b/build/esm/entry/vexflow-debug.js new file mode 100644 index 0000000000..c1af57c988 --- /dev/null +++ b/build/esm/entry/vexflow-debug.js @@ -0,0 +1,8 @@ +import { Flow } from '../src/flow.js'; +import { loadAllMusicFonts } from '../src/fonts/load_all.js'; +import { loadTextFonts } from '../src/fonts/textfonts.js'; +loadAllMusicFonts(); +Flow.setMusicFont('Bravura', 'Gonville', 'Custom'); +loadTextFonts(); +export * from '../src/index.js'; +export * as default from '../src/index.js'; diff --git a/build/esm/entry/vexflow-font-bravura.js b/build/esm/entry/vexflow-font-bravura.js new file mode 100644 index 0000000000..8f8364c432 --- /dev/null +++ b/build/esm/entry/vexflow-font-bravura.js @@ -0,0 +1,7 @@ +import { BravuraFont } from '../src/fonts/bravura_glyphs.js'; +import { BravuraMetrics } from '../src/fonts/bravura_metrics.js'; +export const Font = { + data: BravuraFont, + metrics: BravuraMetrics, +}; +export default Font; diff --git a/build/esm/entry/vexflow-font-custom.js b/build/esm/entry/vexflow-font-custom.js new file mode 100644 index 0000000000..1d6e7e9668 --- /dev/null +++ b/build/esm/entry/vexflow-font-custom.js @@ -0,0 +1,7 @@ +import { CustomFont } from '../src/fonts/custom_glyphs.js'; +import { CustomMetrics } from '../src/fonts/custom_metrics.js'; +export const Font = { + data: CustomFont, + metrics: CustomMetrics, +}; +export default Font; diff --git a/build/esm/entry/vexflow-font-gonville.js b/build/esm/entry/vexflow-font-gonville.js new file mode 100644 index 0000000000..8e4d9f72cb --- /dev/null +++ b/build/esm/entry/vexflow-font-gonville.js @@ -0,0 +1,7 @@ +import { GonvilleFont } from '../src/fonts/gonville_glyphs.js'; +import { GonvilleMetrics } from '../src/fonts/gonville_metrics.js'; +export const Font = { + data: GonvilleFont, + metrics: GonvilleMetrics, +}; +export default Font; diff --git a/build/esm/entry/vexflow-font-leland.js b/build/esm/entry/vexflow-font-leland.js new file mode 100644 index 0000000000..5ebd85ac88 --- /dev/null +++ b/build/esm/entry/vexflow-font-leland.js @@ -0,0 +1,7 @@ +import { LelandFont } from '../src/fonts/leland_glyphs.js'; +import { LelandMetrics } from '../src/fonts/leland_metrics.js'; +export const Font = { + data: LelandFont, + metrics: LelandMetrics, +}; +export default Font; diff --git a/build/esm/entry/vexflow-font-petaluma.js b/build/esm/entry/vexflow-font-petaluma.js new file mode 100644 index 0000000000..6c1cdd9dad --- /dev/null +++ b/build/esm/entry/vexflow-font-petaluma.js @@ -0,0 +1,7 @@ +import { PetalumaFont } from '../src/fonts/petaluma_glyphs.js'; +import { PetalumaMetrics } from '../src/fonts/petaluma_metrics.js'; +export const Font = { + data: PetalumaFont, + metrics: PetalumaMetrics, +}; +export default Font; diff --git a/build/esm/entry/vexflow-gonville.js b/build/esm/entry/vexflow-gonville.js new file mode 100644 index 0000000000..4d7948edf6 --- /dev/null +++ b/build/esm/entry/vexflow-gonville.js @@ -0,0 +1,10 @@ +import { Flow } from '../src/flow.js'; +import { loadCustom } from '../src/fonts/load_custom.js'; +import { loadGonville } from '../src/fonts/load_gonville.js'; +import { loadTextFonts } from '../src/fonts/textfonts.js'; +loadGonville(); +loadCustom(); +Flow.setMusicFont('Gonville', 'Custom'); +loadTextFonts(); +export * from '../src/index.js'; +export * as default from '../src/index.js'; diff --git a/build/esm/entry/vexflow-leland.js b/build/esm/entry/vexflow-leland.js new file mode 100644 index 0000000000..3ab21d2ad8 --- /dev/null +++ b/build/esm/entry/vexflow-leland.js @@ -0,0 +1,10 @@ +import { Flow } from '../src/flow.js'; +import { loadCustom } from '../src/fonts/load_custom.js'; +import { loadLeland } from '../src/fonts/load_leland.js'; +import { loadTextFonts } from '../src/fonts/textfonts.js'; +loadLeland(); +loadCustom(); +Flow.setMusicFont('Leland', 'Custom'); +loadTextFonts(); +export * from '../src/index.js'; +export * as default from '../src/index.js'; diff --git a/build/esm/entry/vexflow-petaluma.js b/build/esm/entry/vexflow-petaluma.js new file mode 100644 index 0000000000..10532eb61e --- /dev/null +++ b/build/esm/entry/vexflow-petaluma.js @@ -0,0 +1,10 @@ +import { Flow } from '../src/flow.js'; +import { loadCustom } from '../src/fonts/load_custom.js'; +import { loadPetaluma } from '../src/fonts/load_petaluma.js'; +import { loadTextFonts } from '../src/fonts/textfonts.js'; +loadPetaluma(); +loadCustom(); +Flow.setMusicFont('Petaluma', 'Custom'); +loadTextFonts(); +export * from '../src/index.js'; +export * as default from '../src/index.js'; diff --git a/build/esm/entry/vexflow.js b/build/esm/entry/vexflow.js new file mode 100644 index 0000000000..c1af57c988 --- /dev/null +++ b/build/esm/entry/vexflow.js @@ -0,0 +1,8 @@ +import { Flow } from '../src/flow.js'; +import { loadAllMusicFonts } from '../src/fonts/load_all.js'; +import { loadTextFonts } from '../src/fonts/textfonts.js'; +loadAllMusicFonts(); +Flow.setMusicFont('Bravura', 'Gonville', 'Custom'); +loadTextFonts(); +export * from '../src/index.js'; +export * as default from '../src/index.js'; diff --git a/build/esm/package.json b/build/esm/package.json new file mode 100644 index 0000000000..3dbc1ca591 --- /dev/null +++ b/build/esm/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/build/esm/src/accidental.js b/build/esm/src/accidental.js new file mode 100644 index 0000000000..35a2f922f7 --- /dev/null +++ b/build/esm/src/accidental.js @@ -0,0 +1,348 @@ +import { Fraction } from './fraction.js'; +import { Glyph } from './glyph.js'; +import { Modifier } from './modifier.js'; +import { Music } from './music.js'; +import { Tables } from './tables.js'; +import { isAccidental, isGraceNote, isGraceNoteGroup, isStaveNote } from './typeguard.js'; +import { defined, log } from './util.js'; +function L(...args) { + if (Accidental.DEBUG) + log('Vex.Flow.Accidental', args); +} +export class Accidental extends Modifier { + constructor(type) { + super(); + L('New accidental: ', type); + this.type = type; + this.position = Modifier.Position.LEFT; + this.render_options = { + font_scale: 38, + parenLeftPadding: 2, + parenRightPadding: 2, + }; + this.accidental = Tables.accidentalCodes(this.type); + defined(this.accidental, 'ArgumentError', `Unknown accidental type: ${type}`); + this.cautionary = false; + this.reset(); + } + static get CATEGORY() { + return "Accidental"; + } + static format(accidentals, state) { + if (!accidentals || accidentals.length === 0) + return; + const musicFont = Tables.currentMusicFont(); + const noteheadAccidentalPadding = musicFont.lookupMetric('accidental.noteheadAccidentalPadding'); + const leftShift = state.left_shift + noteheadAccidentalPadding; + const accidentalSpacing = musicFont.lookupMetric('accidental.accidentalSpacing'); + const additionalPadding = musicFont.lookupMetric('accidental.leftPadding'); + const accList = []; + let prevNote = undefined; + let shiftL = 0; + for (let i = 0; i < accidentals.length; ++i) { + const acc = accidentals[i]; + const note = acc.getNote(); + const stave = note.getStave(); + const index = acc.checkIndex(); + const props = note.getKeyProps()[index]; + if (note !== prevNote) { + for (let n = 0; n < note.keys.length; ++n) { + shiftL = Math.max(note.getLeftDisplacedHeadPx() - note.getXShift(), shiftL); + } + prevNote = note; + } + if (stave) { + const lineSpace = stave.getSpacingBetweenLines(); + const y = stave.getYForLine(props.line); + const accLine = Math.round((y / lineSpace) * 2) / 2; + accList.push({ y, line: accLine, shift: shiftL, acc, lineSpace }); + } + else { + accList.push({ line: props.line, shift: shiftL, acc }); + } + } + accList.sort((a, b) => b.line - a.line); + const lineList = []; + let accShift = 0; + let previousLine = undefined; + for (let i = 0; i < accList.length; i++) { + const acc = accList[i]; + if (previousLine === undefined || previousLine !== acc.line) { + lineList.push({ + line: acc.line, + flatLine: true, + dblSharpLine: true, + numAcc: 0, + width: 0, + column: 0, + }); + } + if (acc.acc.type !== 'b' && acc.acc.type !== 'bb') { + lineList[lineList.length - 1].flatLine = false; + } + if (acc.acc.type !== '##') { + lineList[lineList.length - 1].dblSharpLine = false; + } + lineList[lineList.length - 1].numAcc++; + lineList[lineList.length - 1].width += acc.acc.getWidth() + accidentalSpacing; + accShift = acc.shift > accShift ? acc.shift : accShift; + previousLine = acc.line; + } + let totalColumns = 0; + for (let i = 0; i < lineList.length; i++) { + let noFurtherConflicts = false; + const groupStart = i; + let groupEnd = i; + while (groupEnd + 1 < lineList.length && !noFurtherConflicts) { + if (this.checkCollision(lineList[groupEnd], lineList[groupEnd + 1])) { + groupEnd++; + } + else { + noFurtherConflicts = true; + } + } + const getGroupLine = (index) => lineList[groupStart + index]; + const getGroupLines = (indexes) => indexes.map(getGroupLine); + const lineDifference = (indexA, indexB) => { + const [a, b] = getGroupLines([indexA, indexB]).map((item) => item.line); + return a - b; + }; + const notColliding = (...indexPairs) => indexPairs.map(getGroupLines).every(([line1, line2]) => !this.checkCollision(line1, line2)); + const groupLength = groupEnd - groupStart + 1; + let endCase = this.checkCollision(lineList[groupStart], lineList[groupEnd]) ? 'a' : 'b'; + switch (groupLength) { + case 3: + if (endCase === 'a' && lineDifference(1, 2) === 0.5 && lineDifference(0, 1) !== 0.5) { + endCase = 'second_on_bottom'; + } + break; + case 4: + if (notColliding([0, 2], [1, 3])) { + endCase = 'spaced_out_tetrachord'; + } + break; + case 5: + if (endCase === 'b' && notColliding([1, 3])) { + endCase = 'spaced_out_pentachord'; + if (notColliding([0, 2], [2, 4])) { + endCase = 'very_spaced_out_pentachord'; + } + } + break; + case 6: + if (notColliding([0, 3], [1, 4], [2, 5])) { + endCase = 'spaced_out_hexachord'; + } + if (notColliding([0, 2], [2, 4], [1, 3], [3, 5])) { + endCase = 'very_spaced_out_hexachord'; + } + break; + default: + break; + } + let groupMember; + let column; + if (groupLength >= 7) { + let patternLength = 2; + let collisionDetected = true; + while (collisionDetected === true) { + collisionDetected = false; + for (let line = 0; line + patternLength < lineList.length; line++) { + if (this.checkCollision(lineList[line], lineList[line + patternLength])) { + collisionDetected = true; + patternLength++; + break; + } + } + } + for (groupMember = i; groupMember <= groupEnd; groupMember++) { + column = ((groupMember - i) % patternLength) + 1; + lineList[groupMember].column = column; + totalColumns = totalColumns > column ? totalColumns : column; + } + } + else { + for (groupMember = i; groupMember <= groupEnd; groupMember++) { + column = Tables.accidentalColumnsTable[groupLength][endCase][groupMember - i]; + lineList[groupMember].column = column; + totalColumns = totalColumns > column ? totalColumns : column; + } + } + i = groupEnd; + } + const columnWidths = []; + const columnXOffsets = []; + for (let i = 0; i <= totalColumns; i++) { + columnWidths[i] = 0; + columnXOffsets[i] = 0; + } + columnWidths[0] = accShift + leftShift; + columnXOffsets[0] = accShift + leftShift; + lineList.forEach((line) => { + if (line.width > columnWidths[line.column]) + columnWidths[line.column] = line.width; + }); + for (let i = 1; i < columnWidths.length; i++) { + columnXOffsets[i] = columnWidths[i] + columnXOffsets[i - 1]; + } + const totalShift = columnXOffsets[columnXOffsets.length - 1]; + let accCount = 0; + lineList.forEach((line) => { + let lineWidth = 0; + const lastAccOnLine = accCount + line.numAcc; + for (accCount; accCount < lastAccOnLine; accCount++) { + const xShift = columnXOffsets[line.column - 1] + lineWidth; + accList[accCount].acc.setXShift(xShift); + lineWidth += accList[accCount].acc.getWidth() + accidentalSpacing; + L('Line, accCount, shift: ', line.line, accCount, xShift); + } + }); + state.left_shift += totalShift + additionalPadding; + } + static checkCollision(line1, line2) { + let clearance = line2.line - line1.line; + let clearanceRequired = 3; + if (clearance > 0) { + clearanceRequired = line2.flatLine || line2.dblSharpLine ? 2.5 : 3.0; + if (line1.dblSharpLine) + clearance -= 0.5; + } + else { + clearanceRequired = line1.flatLine || line1.dblSharpLine ? 2.5 : 3.0; + if (line2.dblSharpLine) + clearance -= 0.5; + } + const collision = Math.abs(clearance) < clearanceRequired; + L('Line_1, Line_2, Collision: ', line1.line, line2.line, collision); + return collision; + } + static applyAccidentals(voices, keySignature) { + const tickPositions = []; + const tickNoteMap = {}; + voices.forEach((voice) => { + const tickPosition = new Fraction(0, 1); + const tickable = voice.getTickables(); + tickable.forEach((t) => { + if (t.shouldIgnoreTicks()) + return; + const notesAtPosition = tickNoteMap[tickPosition.value()]; + if (!notesAtPosition) { + tickPositions.push(tickPosition.value()); + tickNoteMap[tickPosition.value()] = [t]; + } + else { + notesAtPosition.push(t); + } + tickPosition.add(t.getTicks()); + }); + }); + const music = new Music(); + if (!keySignature) + keySignature = 'C'; + const scaleMapKey = music.createScaleMap(keySignature); + const scaleMap = {}; + tickPositions.forEach((tickPos) => { + const tickables = tickNoteMap[tickPos]; + const modifiedPitches = []; + const processNote = (t) => { + if (!isStaveNote(t) || t.isRest() || t.shouldIgnoreTicks()) { + return; + } + const staveNote = t; + staveNote.keys.forEach((keyString, keyIndex) => { + const key = music.getNoteParts(keyString.split('/')[0]); + const octave = keyString.split('/')[1]; + const accidentalString = key.accidental || 'n'; + const pitch = key.root + accidentalString; + if (!scaleMap[key.root + octave]) + scaleMap[key.root + octave] = scaleMapKey[key.root]; + const sameAccidental = scaleMap[key.root + octave] === pitch; + const previouslyModified = modifiedPitches.indexOf(keyString) > -1; + staveNote.getModifiers().forEach((modifier, index) => { + if (isAccidental(modifier) && modifier.type == accidentalString && modifier.getIndex() == keyIndex) { + staveNote.getModifiers().splice(index, 1); + } + }); + if (!sameAccidental || (sameAccidental && previouslyModified)) { + scaleMap[key.root + octave] = pitch; + const accidental = new Accidental(accidentalString); + staveNote.addModifier(accidental, keyIndex); + modifiedPitches.push(keyString); + } + }); + staveNote.getModifiers().forEach((modifier) => { + if (isGraceNoteGroup(modifier)) { + modifier.getGraceNotes().forEach(processNote); + } + }); + }; + tickables.forEach(processNote); + }); + } + reset() { + const fontScale = this.render_options.font_scale; + this.glyph = new Glyph(this.accidental.code, fontScale); + this.glyph.setOriginX(1.0); + if (this.cautionary) { + this.parenLeft = new Glyph(Tables.accidentalCodes('{').code, fontScale); + this.parenRight = new Glyph(Tables.accidentalCodes('}').code, fontScale); + this.parenLeft.setOriginX(1.0); + this.parenRight.setOriginX(1.0); + } + } + getWidth() { + if (this.cautionary) { + const parenLeft = defined(this.parenLeft); + const parenRight = defined(this.parenRight); + const parenWidth = parenLeft.getMetrics().width + + parenRight.getMetrics().width + + this.render_options.parenLeftPadding + + this.render_options.parenRightPadding; + return this.glyph.getMetrics().width + parenWidth; + } + else { + return this.glyph.getMetrics().width; + } + } + setNote(note) { + defined(note, 'ArgumentError', `Bad note value: ${note}`); + this.note = note; + if (isGraceNote(note)) { + this.render_options.font_scale = 25; + this.reset(); + } + return this; + } + setAsCautionary() { + this.cautionary = true; + this.render_options.font_scale = 28; + this.reset(); + return this; + } + draw() { + const { type, position, index, cautionary, x_shift, y_shift, glyph, render_options: { parenLeftPadding, parenRightPadding }, } = this; + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const start = note.getModifierStartXY(position, index); + let accX = start.x + x_shift; + const accY = start.y + y_shift; + L('Rendering: ', type, accX, accY); + if (!cautionary) { + glyph.render(ctx, accX, accY); + } + else { + const parenLeft = defined(this.parenLeft); + const parenRight = defined(this.parenRight); + parenRight.render(ctx, accX, accY); + accX -= parenRight.getMetrics().width; + accX -= parenRightPadding; + accX -= this.accidental.parenRightPaddingAdjustment; + glyph.render(ctx, accX, accY); + accX -= glyph.getMetrics().width; + accX -= parenLeftPadding; + parenLeft.render(ctx, accX, accY); + } + } +} +Accidental.DEBUG = false; diff --git a/build/esm/src/annotation.js b/build/esm/src/annotation.js new file mode 100644 index 0000000000..d9c4f07d23 --- /dev/null +++ b/build/esm/src/annotation.js @@ -0,0 +1,237 @@ +import { Element } from './element.js'; +import { Modifier, ModifierPosition } from './modifier.js'; +import { Stem } from './stem.js'; +import { Tables } from './tables.js'; +import { TextFormatter } from './textformatter.js'; +import { isStemmableNote, isTabNote } from './typeguard.js'; +import { log } from './util.js'; +function L(...args) { + if (Annotation.DEBUG) + log('Vex.Flow.Annotation', args); +} +export var AnnotationHorizontalJustify; +(function (AnnotationHorizontalJustify) { + AnnotationHorizontalJustify[AnnotationHorizontalJustify["LEFT"] = 1] = "LEFT"; + AnnotationHorizontalJustify[AnnotationHorizontalJustify["CENTER"] = 2] = "CENTER"; + AnnotationHorizontalJustify[AnnotationHorizontalJustify["RIGHT"] = 3] = "RIGHT"; + AnnotationHorizontalJustify[AnnotationHorizontalJustify["CENTER_STEM"] = 4] = "CENTER_STEM"; +})(AnnotationHorizontalJustify || (AnnotationHorizontalJustify = {})); +export var AnnotationVerticalJustify; +(function (AnnotationVerticalJustify) { + AnnotationVerticalJustify[AnnotationVerticalJustify["TOP"] = 1] = "TOP"; + AnnotationVerticalJustify[AnnotationVerticalJustify["CENTER"] = 2] = "CENTER"; + AnnotationVerticalJustify[AnnotationVerticalJustify["BOTTOM"] = 3] = "BOTTOM"; + AnnotationVerticalJustify[AnnotationVerticalJustify["CENTER_STEM"] = 4] = "CENTER_STEM"; +})(AnnotationVerticalJustify || (AnnotationVerticalJustify = {})); +export class Annotation extends Modifier { + constructor(text) { + super(); + this.text = text; + this.horizontalJustification = AnnotationHorizontalJustify.CENTER; + this.verticalJustification = AnnotationVerticalJustify.TOP; + this.resetFont(); + this.setWidth(Tables.textWidth(text)); + } + static get CATEGORY() { + return "Annotation"; + } + static get minAnnotationPadding() { + const musicFont = Tables.currentMusicFont(); + return musicFont.lookupMetric('glyphs.noteHead.minPadding'); + } + static format(annotations, state) { + if (!annotations || annotations.length === 0) + return false; + let leftWidth = 0; + let rightWidth = 0; + let maxLeftGlyphWidth = 0; + let maxRightGlyphWidth = 0; + for (let i = 0; i < annotations.length; ++i) { + const annotation = annotations[i]; + const textFormatter = TextFormatter.create(annotation.textFont); + const textLines = (5 + textFormatter.maxHeight) / Tables.STAVE_LINE_DISTANCE; + let verticalSpaceNeeded = textLines; + const note = annotation.checkAttachedNote(); + const glyphWidth = note.getGlyph().getWidth(); + const textWidth = textFormatter.getWidthForTextInPx(annotation.text); + if (annotation.horizontalJustification === AnnotationHorizontalJustify.LEFT) { + maxLeftGlyphWidth = Math.max(glyphWidth, maxLeftGlyphWidth); + leftWidth = Math.max(leftWidth, textWidth) + Annotation.minAnnotationPadding; + } + else if (annotation.horizontalJustification === AnnotationHorizontalJustify.RIGHT) { + maxRightGlyphWidth = Math.max(glyphWidth, maxRightGlyphWidth); + rightWidth = Math.max(rightWidth, textWidth); + } + else { + leftWidth = Math.max(leftWidth, textWidth / 2) + Annotation.minAnnotationPadding; + rightWidth = Math.max(rightWidth, textWidth / 2); + maxLeftGlyphWidth = Math.max(glyphWidth / 2, maxLeftGlyphWidth); + maxRightGlyphWidth = Math.max(glyphWidth / 2, maxRightGlyphWidth); + } + const stave = note.getStave(); + const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP; + let stemHeight = 0; + let lines = 5; + if (isTabNote(note)) { + if (note.render_options.draw_stem) { + const stem = note.getStem(); + if (stem) { + stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE; + } + } + else { + stemHeight = 0; + } + } + else if (isStemmableNote(note)) { + const stem = note.getStem(); + if (stem && note.getNoteType() === 'n') { + stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE; + } + } + if (stave) { + lines = stave.getNumLines(); + } + if (annotation.verticalJustification === this.VerticalJustify.TOP) { + let noteLine = note.getLineNumber(true); + if (isTabNote(note)) { + noteLine = lines - (note.leastString() - 0.5); + } + if (stemDirection === Stem.UP) { + noteLine += stemHeight; + } + const curTop = noteLine + state.top_text_line + 0.5; + if (curTop < lines) { + annotation.setTextLine(lines - noteLine); + verticalSpaceNeeded += lines - noteLine; + state.top_text_line = verticalSpaceNeeded; + } + else { + annotation.setTextLine(state.top_text_line); + state.top_text_line += verticalSpaceNeeded; + } + } + else if (annotation.verticalJustification === this.VerticalJustify.BOTTOM) { + let noteLine = lines - note.getLineNumber(); + if (isTabNote(note)) { + noteLine = note.greatestString() - 1; + } + if (stemDirection === Stem.DOWN) { + noteLine += stemHeight; + } + const curBottom = noteLine + state.text_line + 1; + if (curBottom < lines) { + annotation.setTextLine(lines - curBottom); + verticalSpaceNeeded += lines - curBottom; + state.text_line = verticalSpaceNeeded; + } + else { + annotation.setTextLine(state.text_line); + state.text_line += verticalSpaceNeeded; + } + } + else { + annotation.setTextLine(state.text_line); + } + } + const rightOverlap = Math.min(Math.max(rightWidth - maxRightGlyphWidth, 0), Math.max(rightWidth - state.right_shift, 0)); + const leftOverlap = Math.min(Math.max(leftWidth - maxLeftGlyphWidth, 0), Math.max(leftWidth - state.left_shift, 0)); + state.left_shift += leftOverlap; + state.right_shift += rightOverlap; + return true; + } + setVerticalJustification(just) { + this.verticalJustification = typeof just === 'string' ? Annotation.VerticalJustifyString[just] : just; + return this; + } + getJustification() { + return this.horizontalJustification; + } + setJustification(just) { + this.horizontalJustification = typeof just === 'string' ? Annotation.HorizontalJustifyString[just] : just; + return this; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP; + const textFormatter = TextFormatter.create(this.textFont); + const start = note.getModifierStartXY(ModifierPosition.ABOVE, this.index); + this.setRendered(); + ctx.save(); + this.applyStyle(); + ctx.openGroup('annotation', this.getAttribute('id')); + ctx.setFont(this.textFont); + const text_width = ctx.measureText(this.text).width; + const text_height = textFormatter.maxHeight + 2; + let x; + let y; + if (this.horizontalJustification === AnnotationHorizontalJustify.LEFT) { + x = start.x; + } + else if (this.horizontalJustification === AnnotationHorizontalJustify.RIGHT) { + x = start.x - text_width; + } + else if (this.horizontalJustification === AnnotationHorizontalJustify.CENTER) { + x = start.x - text_width / 2; + } + else { + x = note.getStemX() - text_width / 2; + } + let stem_ext = {}; + let spacing = 0; + const has_stem = note.hasStem(); + const stave = note.checkStave(); + if (has_stem) { + stem_ext = note.checkStem().getExtents(); + spacing = stave.getSpacingBetweenLines(); + } + if (this.verticalJustification === AnnotationVerticalJustify.BOTTOM) { + const ys = note.getYs(); + y = ys.reduce((a, b) => (a > b ? a : b)); + y += (this.text_line + 1) * Tables.STAVE_LINE_DISTANCE + text_height; + if (has_stem && stemDirection === Stem.DOWN) { + y = Math.max(y, stem_ext.topY + text_height + spacing * this.text_line); + } + } + else if (this.verticalJustification === AnnotationVerticalJustify.CENTER) { + const yt = note.getYForTopText(this.text_line) - 1; + const yb = stave.getYForBottomText(this.text_line); + y = yt + (yb - yt) / 2 + text_height / 2; + } + else if (this.verticalJustification === AnnotationVerticalJustify.TOP) { + y = note.getYs()[0] - (this.text_line + 1) * Tables.STAVE_LINE_DISTANCE; + if (has_stem && stemDirection === Stem.UP) { + spacing = stem_ext.topY < stave.getTopLineTopY() ? Tables.STAVE_LINE_DISTANCE : spacing; + y = Math.min(y, stem_ext.topY - spacing * (this.text_line + 1)); + } + } + else { + const extents = note.getStemExtents(); + y = extents.topY + (extents.baseY - extents.topY) / 2 + text_height / 2; + } + L('Rendering annotation: ', this.text, x, y); + ctx.fillText(this.text, x, y); + ctx.closeGroup(); + this.restoreStyle(); + ctx.restore(); + } +} +Annotation.DEBUG = false; +Annotation.TEXT_FONT = Object.assign({}, Element.TEXT_FONT); +Annotation.HorizontalJustify = AnnotationHorizontalJustify; +Annotation.HorizontalJustifyString = { + left: AnnotationHorizontalJustify.LEFT, + right: AnnotationHorizontalJustify.RIGHT, + center: AnnotationHorizontalJustify.CENTER, + centerStem: AnnotationHorizontalJustify.CENTER_STEM, +}; +Annotation.VerticalJustify = AnnotationVerticalJustify; +Annotation.VerticalJustifyString = { + above: AnnotationVerticalJustify.TOP, + top: AnnotationVerticalJustify.TOP, + below: AnnotationVerticalJustify.BOTTOM, + bottom: AnnotationVerticalJustify.BOTTOM, + center: AnnotationVerticalJustify.CENTER, + centerStem: AnnotationVerticalJustify.CENTER_STEM, +}; diff --git a/build/esm/src/articulation.js b/build/esm/src/articulation.js new file mode 100644 index 0000000000..16c5d6fa1f --- /dev/null +++ b/build/esm/src/articulation.js @@ -0,0 +1,267 @@ +import { Glyph } from './glyph.js'; +import { Modifier } from './modifier.js'; +import { Stem } from './stem.js'; +import { Tables } from './tables.js'; +import { isGraceNote, isStaveNote, isStemmableNote, isTabNote } from './typeguard.js'; +import { defined, log, RuntimeError } from './util.js'; +function L(...args) { + if (Articulation.DEBUG) + log('Vex.Flow.Articulation', args); +} +const { ABOVE, BELOW } = Modifier.Position; +function roundToNearestHalf(mathFn, value) { + return mathFn(value / 0.5) * 0.5; +} +function isWithinLines(line, position) { + return position === ABOVE ? line <= 5 : line >= 1; +} +function getRoundingFunction(line, position) { + if (isWithinLines(line, position)) { + if (position === ABOVE) { + return Math.ceil; + } + else { + return Math.floor; + } + } + else { + return Math.round; + } +} +function snapLineToStaff(canSitBetweenLines, line, position, offsetDirection) { + const snappedLine = roundToNearestHalf(getRoundingFunction(line, position), line); + const canSnapToStaffSpace = canSitBetweenLines && isWithinLines(snappedLine, position); + const onStaffLine = snappedLine % 1 === 0; + if (canSnapToStaffSpace && onStaffLine) { + const HALF_STAFF_SPACE = 0.5; + return snappedLine + HALF_STAFF_SPACE * -offsetDirection; + } + else { + return snappedLine; + } +} +const isStaveOrGraceNote = (note) => isStaveNote(note) || isGraceNote(note); +function getTopY(note, textLine) { + const stemDirection = note.getStemDirection(); + const { topY: stemTipY, baseY: stemBaseY } = note.getStemExtents(); + if (isStaveOrGraceNote(note)) { + if (note.hasStem()) { + if (stemDirection === Stem.UP) { + return stemTipY; + } + else { + return stemBaseY; + } + } + else { + return Math.min(...note.getYs()); + } + } + else if (isTabNote(note)) { + if (note.hasStem()) { + if (stemDirection === Stem.UP) { + return stemTipY; + } + else { + return note.checkStave().getYForTopText(textLine); + } + } + else { + return note.checkStave().getYForTopText(textLine); + } + } + else { + throw new RuntimeError('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes'); + } +} +function getBottomY(note, textLine) { + const stemDirection = note.getStemDirection(); + const { topY: stemTipY, baseY: stemBaseY } = note.getStemExtents(); + if (isStaveOrGraceNote(note)) { + if (note.hasStem()) { + if (stemDirection === Stem.UP) { + return stemBaseY; + } + else { + return stemTipY; + } + } + else { + return Math.max(...note.getYs()); + } + } + else if (isTabNote(note)) { + if (note.hasStem()) { + if (stemDirection === Stem.UP) { + return note.checkStave().getYForBottomText(textLine); + } + else { + return stemTipY; + } + } + else { + return note.checkStave().getYForBottomText(textLine); + } + } + else { + throw new RuntimeError('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes'); + } +} +function getInitialOffset(note, position) { + const isOnStemTip = (position === ABOVE && note.getStemDirection() === Stem.UP) || + (position === BELOW && note.getStemDirection() === Stem.DOWN); + if (isStaveOrGraceNote(note)) { + if (note.hasStem() && isOnStemTip) { + return 0.5; + } + else { + return 1; + } + } + else { + if (note.hasStem() && isOnStemTip) { + return 1; + } + else { + return 0; + } + } +} +export class Articulation extends Modifier { + constructor(type) { + super(); + this.type = type; + this.position = BELOW; + this.render_options = { + font_scale: 38, + }; + this.reset(); + } + static get CATEGORY() { + return "Articulation"; + } + static format(articulations, state) { + if (!articulations || articulations.length === 0) + return false; + const margin = 0.5; + let maxGlyphWidth = 0; + const getIncrement = (articulation, line, position) => roundToNearestHalf(getRoundingFunction(line, position), defined(articulation.glyph.getMetrics().height) / 10 + margin); + articulations.forEach((articulation) => { + const note = articulation.checkAttachedNote(); + maxGlyphWidth = Math.max(note.getGlyph().getWidth(), maxGlyphWidth); + let lines = 5; + const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP; + let stemHeight = 0; + if (isStemmableNote(note)) { + const stem = note.getStem(); + if (stem) { + stemHeight = Math.abs(stem.getHeight()) / Tables.STAVE_LINE_DISTANCE; + } + } + const stave = note.getStave(); + if (stave) { + lines = stave.getNumLines(); + } + if (articulation.getPosition() === ABOVE) { + let noteLine = note.getLineNumber(true); + if (stemDirection === Stem.UP) { + noteLine += stemHeight; + } + let increment = getIncrement(articulation, state.top_text_line, ABOVE); + const curTop = noteLine + state.top_text_line + 0.5; + if (!articulation.articulation.between_lines && curTop < lines) { + increment += lines - curTop; + } + articulation.setTextLine(state.top_text_line); + state.top_text_line += increment; + } + else if (articulation.getPosition() === BELOW) { + let noteLine = Math.max(lines - note.getLineNumber(), 0); + if (stemDirection === Stem.DOWN) { + noteLine += stemHeight; + } + let increment = getIncrement(articulation, state.text_line, BELOW); + const curBottom = noteLine + state.text_line + 0.5; + if (!articulation.articulation.between_lines && curBottom < lines) { + increment += lines - curBottom; + } + articulation.setTextLine(state.text_line); + state.text_line += increment; + } + }); + const width = articulations + .map((articulation) => articulation.getWidth()) + .reduce((maxWidth, articWidth) => Math.max(articWidth, maxWidth)); + const overlap = Math.min(Math.max(width - maxGlyphWidth, 0), Math.max(width - (state.left_shift + state.right_shift), 0)); + state.left_shift += overlap / 2; + state.right_shift += overlap / 2; + return true; + } + static easyScoreHook({ articulations }, note, builder) { + if (!articulations) + return; + const articNameToCode = { + staccato: 'a.', + tenuto: 'a-', + accent: 'a>', + }; + articulations + .split(',') + .map((articString) => articString.trim().split('.')) + .map(([name, position]) => { + const artic = { type: articNameToCode[name] }; + if (position) + artic.position = Modifier.PositionString[position]; + return builder.getFactory().Articulation(artic); + }) + .map((artic) => note.addModifier(artic, 0)); + } + reset() { + this.articulation = Tables.articulationCodes(this.type); + const articulation = defined(this.articulation, 'ArgumentError', `Articulation not found: ${this.type}`); + const code = (this.position === ABOVE ? articulation.aboveCode : articulation.belowCode) || articulation.code; + this.glyph = new Glyph(code !== null && code !== void 0 ? code : '', this.render_options.font_scale); + this.setWidth(defined(this.glyph.getMetrics().width)); + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const index = this.checkIndex(); + const { position, glyph, text_line: textLine } = this; + const canSitBetweenLines = this.articulation.between_lines; + const stave = note.checkStave(); + const staffSpace = stave.getSpacingBetweenLines(); + const isTab = isTabNote(note); + const { x } = note.getModifierStartXY(position, index); + const shouldSitOutsideStaff = !canSitBetweenLines || isTab; + const initialOffset = getInitialOffset(note, position); + const padding = Tables.currentMusicFont().lookupMetric(`articulation.${glyph.getCode()}.padding`, 0); + let y = { + [ABOVE]: () => { + glyph.setOrigin(0.5, 1); + const y = getTopY(note, textLine) - (textLine + initialOffset) * staffSpace; + return shouldSitOutsideStaff ? Math.min(stave.getYForTopText(Articulation.INITIAL_OFFSET), y) : y; + }, + [BELOW]: () => { + glyph.setOrigin(0.5, 0); + const y = getBottomY(note, textLine) + (textLine + initialOffset) * staffSpace; + return shouldSitOutsideStaff ? Math.max(stave.getYForBottomText(Articulation.INITIAL_OFFSET), y) : y; + }, + }[position](); + if (!isTab) { + const offsetDirection = position === ABOVE ? -1 : +1; + const noteLine = note.getKeyProps()[index].line; + const distanceFromNote = (note.getYs()[index] - y) / staffSpace; + const articLine = distanceFromNote + Number(noteLine); + const snappedLine = snapLineToStaff(canSitBetweenLines, articLine, position, offsetDirection); + if (isWithinLines(snappedLine, position)) + glyph.setOrigin(0.5, 0.5); + y += Math.abs(snappedLine - articLine) * staffSpace * offsetDirection + padding * offsetDirection; + } + L(`Rendering articulation at (x: ${x}, y: ${y})`); + glyph.render(ctx, x, y); + } +} +Articulation.DEBUG = false; +Articulation.INITIAL_OFFSET = -0.5; diff --git a/build/esm/src/barnote.js b/build/esm/src/barnote.js new file mode 100644 index 0000000000..f00d2eee31 --- /dev/null +++ b/build/esm/src/barnote.js @@ -0,0 +1,56 @@ +import { Note } from './note.js'; +import { Barline, BarlineType } from './stavebarline.js'; +import { log } from './util.js'; +function L(...args) { + if (BarNote.DEBUG) + log('Vex.Flow.BarNote', args); +} +export class BarNote extends Note { + constructor(type = BarlineType.SINGLE) { + super({ duration: 'b' }); + this.metrics = { + widths: {}, + }; + const TYPE = BarlineType; + this.metrics.widths = { + [TYPE.SINGLE]: 8, + [TYPE.DOUBLE]: 12, + [TYPE.END]: 15, + [TYPE.REPEAT_BEGIN]: 14, + [TYPE.REPEAT_END]: 14, + [TYPE.REPEAT_BOTH]: 18, + [TYPE.NONE]: 0, + }; + this.ignore_ticks = true; + this.setType(type); + } + static get CATEGORY() { + return "BarNote"; + } + getType() { + return this.type; + } + setType(type) { + this.type = typeof type === 'string' ? Barline.typeString[type] : type; + this.setWidth(this.metrics.widths[this.type]); + return this; + } + addToModifierContext(mc) { + return this; + } + preFormat() { + this.preFormatted = true; + return this; + } + draw() { + const ctx = this.checkContext(); + L('Rendering bar line at: ', this.getAbsoluteX()); + this.applyStyle(ctx); + const barline = new Barline(this.type); + barline.setX(this.getAbsoluteX()); + barline.draw(this.checkStave()); + this.restoreStyle(ctx); + this.setRendered(); + } +} +BarNote.DEBUG = false; diff --git a/build/esm/src/beam.js b/build/esm/src/beam.js new file mode 100644 index 0000000000..80f0b1f824 --- /dev/null +++ b/build/esm/src/beam.js @@ -0,0 +1,644 @@ +import { Element } from './element.js'; +import { Fraction } from './fraction.js'; +import { Stem } from './stem.js'; +import { Tables } from './tables.js'; +import { isStaveNote, isTabNote } from './typeguard.js'; +import { RuntimeError } from './util.js'; +function calculateStemDirection(notes) { + let lineSum = 0; + notes.forEach((note) => { + if (note.keyProps) { + note.keyProps.forEach((keyProp) => { + lineSum += keyProp.line - 3; + }); + } + }); + if (lineSum >= 0) { + return Stem.DOWN; + } + return Stem.UP; +} +function getStemSlope(firstNote, lastNote) { + const firstStemTipY = firstNote.getStemExtents().topY; + const firstStemX = firstNote.getStemX(); + const lastStemTipY = lastNote.getStemExtents().topY; + const lastStemX = lastNote.getStemX(); + return (lastStemTipY - firstStemTipY) / (lastStemX - firstStemX); +} +export const BEAM_LEFT = 'L'; +export const BEAM_RIGHT = 'R'; +export const BEAM_BOTH = 'B'; +export class Beam extends Element { + constructor(notes, auto_stem = false) { + super(); + this.slope = 0; + this.y_shift = 0; + this.forcedPartialDirections = {}; + if (!notes || notes.length === 0) { + throw new RuntimeError('BadArguments', 'No notes provided for beam.'); + } + if (notes.length === 1) { + throw new RuntimeError('BadArguments', 'Too few notes for beam.'); + } + this.ticks = notes[0].getIntrinsicTicks(); + if (this.ticks >= Tables.durationToTicks('4')) { + throw new RuntimeError('BadArguments', 'Beams can only be applied to notes shorter than a quarter note.'); + } + let i; + let note; + this.stem_direction = Stem.UP; + for (i = 0; i < notes.length; ++i) { + note = notes[i]; + if (note.hasStem()) { + this.stem_direction = note.getStemDirection(); + break; + } + } + let stem_direction = this.stem_direction; + if (auto_stem && isStaveNote(notes[0])) { + stem_direction = calculateStemDirection(notes); + } + else if (auto_stem && isTabNote(notes[0])) { + const stem_weight = notes.reduce((memo, note) => memo + note.getStemDirection(), 0); + stem_direction = stem_weight > -1 ? Stem.UP : Stem.DOWN; + } + for (i = 0; i < notes.length; ++i) { + note = notes[i]; + if (auto_stem) { + note.setStemDirection(stem_direction); + this.stem_direction = stem_direction; + } + note.setBeam(this); + } + this.postFormatted = false; + this.notes = notes; + this.beam_count = this.getBeamCount(); + this.break_on_indices = []; + this.render_options = { + beam_width: 5, + max_slope: 0.25, + min_slope: -0.25, + slope_iterations: 20, + slope_cost: 100, + show_stemlets: false, + stemlet_extension: 7, + partial_beam_length: 10, + flat_beams: false, + min_flat_beam_offset: 15, + }; + } + static get CATEGORY() { + return "Beam"; + } + getStemDirection() { + return this.stem_direction; + } + static getDefaultBeamGroups(time_sig) { + if (!time_sig || time_sig === 'c') { + time_sig = '4/4'; + } + const defaults = { + '1/2': ['1/2'], + '2/2': ['1/2'], + '3/2': ['1/2'], + '4/2': ['1/2'], + '1/4': ['1/4'], + '2/4': ['1/4'], + '3/4': ['1/4'], + '4/4': ['1/4'], + '1/8': ['1/8'], + '2/8': ['2/8'], + '3/8': ['3/8'], + '4/8': ['2/8'], + '1/16': ['1/16'], + '2/16': ['2/16'], + '3/16': ['3/16'], + '4/16': ['2/16'], + }; + const groups = defaults[time_sig]; + if (groups === undefined) { + const beatTotal = parseInt(time_sig.split('/')[0], 10); + const beatValue = parseInt(time_sig.split('/')[1], 10); + const tripleMeter = beatTotal % 3 === 0; + if (tripleMeter) { + return [new Fraction(3, beatValue)]; + } + else if (beatValue > 4) { + return [new Fraction(2, beatValue)]; + } + else if (beatValue <= 4) { + return [new Fraction(1, beatValue)]; + } + } + else { + return groups.map((group) => new Fraction().parse(group)); + } + return [new Fraction(1, 4)]; + } + static applyAndGetBeams(voice, stem_direction, groups) { + return Beam.generateBeams(voice.getTickables(), { groups, stem_direction }); + } + static generateBeams(notes, config = {}) { + if (!config.groups || !config.groups.length) { + config.groups = [new Fraction(2, 8)]; + } + const tickGroups = config.groups.map((group) => { + if (!group.multiply) { + throw new RuntimeError('InvalidBeamGroups', 'The beam groups must be an array of Vex.Flow.Fractions'); + } + return group.clone().multiply(Tables.RESOLUTION, 1); + }); + const unprocessedNotes = notes; + let currentTickGroup = 0; + let noteGroups = []; + let currentGroup = []; + function getTotalTicks(vf_notes) { + return vf_notes.reduce((memo, note) => note.getTicks().clone().add(memo), new Fraction(0, 1)); + } + function nextTickGroup() { + if (tickGroups.length - 1 > currentTickGroup) { + currentTickGroup += 1; + } + else { + currentTickGroup = 0; + } + } + function createGroups() { + let nextGroup = []; + let currentGroupTotalTicks = new Fraction(0, 1); + unprocessedNotes.forEach((unprocessedNote) => { + nextGroup = []; + if (unprocessedNote.shouldIgnoreTicks()) { + noteGroups.push(currentGroup); + currentGroup = nextGroup; + return; + } + currentGroup.push(unprocessedNote); + const ticksPerGroup = tickGroups[currentTickGroup].clone(); + const totalTicks = getTotalTicks(currentGroup).add(currentGroupTotalTicks); + const unbeamable = Tables.durationToNumber(unprocessedNote.getDuration()) < 8; + if (unbeamable && unprocessedNote.getTuplet()) { + ticksPerGroup.numerator *= 2; + } + if (totalTicks.greaterThan(ticksPerGroup)) { + if (!unbeamable) { + const note = currentGroup.pop(); + if (note) + nextGroup.push(note); + } + noteGroups.push(currentGroup); + do { + currentGroupTotalTicks = totalTicks.subtract(tickGroups[currentTickGroup]); + nextTickGroup(); + } while (currentGroupTotalTicks.greaterThanEquals(tickGroups[currentTickGroup])); + currentGroup = nextGroup; + } + else if (totalTicks.equals(ticksPerGroup)) { + noteGroups.push(currentGroup); + currentGroupTotalTicks = new Fraction(0, 1); + currentGroup = nextGroup; + nextTickGroup(); + } + }); + if (currentGroup.length > 0) { + noteGroups.push(currentGroup); + } + } + function getBeamGroups() { + return noteGroups.filter((group) => { + if (group.length > 1) { + let beamable = true; + group.forEach((note) => { + if (note.getIntrinsicTicks() >= Tables.durationToTicks('4')) { + beamable = false; + } + }); + return beamable; + } + return false; + }); + } + function sanitizeGroups() { + const sanitizedGroups = []; + noteGroups.forEach((group) => { + let tempGroup = []; + group.forEach((note, index, group) => { + const isFirstOrLast = index === 0 || index === group.length - 1; + const prevNote = group[index - 1]; + const breaksOnEachRest = !config.beam_rests && note.isRest(); + const breaksOnFirstOrLastRest = config.beam_rests && config.beam_middle_only && note.isRest() && isFirstOrLast; + let breakOnStemChange = false; + if (config.maintain_stem_directions && prevNote && !note.isRest() && !prevNote.isRest()) { + const prevDirection = prevNote.getStemDirection(); + const currentDirection = note.getStemDirection(); + breakOnStemChange = currentDirection !== prevDirection; + } + const isUnbeamableDuration = parseInt(note.getDuration(), 10) < 8; + const shouldBreak = breaksOnEachRest || breaksOnFirstOrLastRest || breakOnStemChange || isUnbeamableDuration; + if (shouldBreak) { + if (tempGroup.length > 0) { + sanitizedGroups.push(tempGroup); + } + tempGroup = breakOnStemChange ? [note] : []; + } + else { + tempGroup.push(note); + } + }); + if (tempGroup.length > 0) { + sanitizedGroups.push(tempGroup); + } + }); + noteGroups = sanitizedGroups; + } + function formatStems() { + noteGroups.forEach((group) => { + let stemDirection; + if (config.maintain_stem_directions) { + const note = findFirstNote(group); + stemDirection = note ? note.getStemDirection() : Stem.UP; + } + else { + if (config.stem_direction) { + stemDirection = config.stem_direction; + } + else { + stemDirection = calculateStemDirection(group); + } + } + applyStemDirection(group, stemDirection); + }); + } + function findFirstNote(group) { + for (let i = 0; i < group.length; i++) { + const note = group[i]; + if (!note.isRest()) { + return note; + } + } + return false; + } + function applyStemDirection(group, direction) { + group.forEach((note) => { + note.setStemDirection(direction); + }); + } + function getTuplets() { + const uniqueTuplets = []; + noteGroups.forEach((group) => { + let tuplet; + group.forEach((note) => { + const noteTuplet = note.getTuplet(); + if (noteTuplet && tuplet !== noteTuplet) { + tuplet = noteTuplet; + uniqueTuplets.push(tuplet); + } + }); + }); + return uniqueTuplets; + } + createGroups(); + sanitizeGroups(); + formatStems(); + const beamedNoteGroups = getBeamGroups(); + const allTuplets = getTuplets(); + const beams = []; + beamedNoteGroups.forEach((group) => { + const beam = new Beam(group); + if (config.show_stemlets) { + beam.render_options.show_stemlets = true; + } + if (config.secondary_breaks) { + beam.render_options.secondary_break_ticks = Tables.durationToTicks(config.secondary_breaks); + } + if (config.flat_beams === true) { + beam.render_options.flat_beams = true; + beam.render_options.flat_beam_offset = config.flat_beam_offset; + } + beams.push(beam); + }); + allTuplets.forEach((tuplet) => { + const direction = tuplet.notes[0].stem_direction === Stem.DOWN ? -1 : 1; + tuplet.setTupletLocation(direction); + let bracketed = false; + for (let i = 0; i < tuplet.notes.length; i++) { + const note = tuplet.notes[i]; + if (!note.hasBeam()) { + bracketed = true; + break; + } + } + tuplet.setBracketed(bracketed); + }); + return beams; + } + getNotes() { + return this.notes; + } + getBeamCount() { + const beamCounts = this.notes.map((note) => note.getGlyph().beam_count); + const maxBeamCount = beamCounts.reduce((max, beamCount) => (beamCount > max ? beamCount : max)); + return maxBeamCount; + } + breakSecondaryAt(indices) { + this.break_on_indices = indices; + return this; + } + setPartialBeamSideAt(noteIndex, side) { + this.forcedPartialDirections[noteIndex] = side; + return this; + } + unsetPartialBeamSideAt(noteIndex) { + delete this.forcedPartialDirections[noteIndex]; + return this; + } + getSlopeY(x, first_x_px, first_y_px, slope) { + return first_y_px + (x - first_x_px) * slope; + } + calculateSlope() { + const { notes, stem_direction: stemDirection, render_options: { max_slope, min_slope, slope_iterations, slope_cost }, } = this; + const firstNote = notes[0]; + const initialSlope = getStemSlope(firstNote, notes[notes.length - 1]); + const increment = (max_slope - min_slope) / slope_iterations; + let minCost = Number.MAX_VALUE; + let bestSlope = 0; + let yShift = 0; + for (let slope = min_slope; slope <= max_slope; slope += increment) { + let totalStemExtension = 0; + let yShiftTemp = 0; + for (let i = 1; i < notes.length; ++i) { + const note = notes[i]; + if (note.hasStem() || note.isRest()) { + const adjustedStemTipY = this.getSlopeY(note.getStemX(), firstNote.getStemX(), firstNote.getStemExtents().topY, slope) + yShiftTemp; + const stemTipY = note.getStemExtents().topY; + if (stemTipY * stemDirection < adjustedStemTipY * stemDirection) { + const diff = Math.abs(stemTipY - adjustedStemTipY); + yShiftTemp += diff * -stemDirection; + totalStemExtension += diff * i; + } + else { + totalStemExtension += (stemTipY - adjustedStemTipY) * stemDirection; + } + } + } + const idealSlope = initialSlope / 2; + const distanceFromIdeal = Math.abs(idealSlope - slope); + const cost = slope_cost * distanceFromIdeal + Math.abs(totalStemExtension); + if (cost < minCost) { + minCost = cost; + bestSlope = slope; + yShift = yShiftTemp; + } + } + this.slope = bestSlope; + this.y_shift = yShift; + } + calculateFlatSlope() { + const { notes, stem_direction, render_options: { beam_width, min_flat_beam_offset, flat_beam_offset }, } = this; + let total = 0; + let extremeY = 0; + let extremeBeamCount = 0; + let currentExtreme = 0; + for (let i = 0; i < notes.length; i++) { + const note = notes[i]; + const stemTipY = note.getStemExtents().topY; + total += stemTipY; + if (stem_direction === Stem.DOWN && currentExtreme < stemTipY) { + currentExtreme = stemTipY; + extremeY = Math.max(...note.getYs()); + extremeBeamCount = note.getBeamCount(); + } + else if (stem_direction === Stem.UP && (currentExtreme === 0 || currentExtreme > stemTipY)) { + currentExtreme = stemTipY; + extremeY = Math.min(...note.getYs()); + extremeBeamCount = note.getBeamCount(); + } + } + let offset = total / notes.length; + const beamWidth = beam_width * 1.5; + const extremeTest = min_flat_beam_offset + extremeBeamCount * beamWidth; + const newOffset = extremeY + extremeTest * -stem_direction; + if (stem_direction === Stem.DOWN && offset < newOffset) { + offset = extremeY + extremeTest; + } + else if (stem_direction === Stem.UP && offset > newOffset) { + offset = extremeY - extremeTest; + } + if (!flat_beam_offset) { + this.render_options.flat_beam_offset = offset; + } + else if (stem_direction === Stem.DOWN && offset > flat_beam_offset) { + this.render_options.flat_beam_offset = offset; + } + else if (stem_direction === Stem.UP && offset < flat_beam_offset) { + this.render_options.flat_beam_offset = offset; + } + this.slope = 0; + this.y_shift = 0; + } + getBeamYToDraw() { + const firstNote = this.notes[0]; + const firstStemTipY = firstNote.getStemExtents().topY; + let beamY = firstStemTipY; + if (this.render_options.flat_beams && this.render_options.flat_beam_offset) { + beamY = this.render_options.flat_beam_offset; + } + return beamY; + } + applyStemExtensions() { + const { notes, slope, y_shift, stem_direction, beam_count, render_options: { show_stemlets, stemlet_extension, beam_width }, } = this; + const firstNote = notes[0]; + const firstStemTipY = this.getBeamYToDraw(); + const firstStemX = firstNote.getStemX(); + for (let i = 0; i < notes.length; ++i) { + const note = notes[i]; + const stem = note.getStem(); + if (stem) { + const stemX = note.getStemX(); + const { topY: stemTipY } = note.getStemExtents(); + const beamedStemTipY = this.getSlopeY(stemX, firstStemX, firstStemTipY, slope) + y_shift; + const preBeamExtension = stem.getExtension(); + const beamExtension = stem_direction === Stem.UP ? stemTipY - beamedStemTipY : beamedStemTipY - stemTipY; + stem.setExtension(preBeamExtension + beamExtension); + stem.adjustHeightForBeam(); + if (note.isRest() && show_stemlets) { + const beamWidth = beam_width; + const totalBeamWidth = (beam_count - 1) * beamWidth * 1.5 + beamWidth; + stem.setVisibility(true).setStemlet(true, totalBeamWidth + stemlet_extension); + } + } + } + } + lookupBeamDirection(duration, prev_tick, tick, next_tick, noteIndex) { + if (duration === '4') { + return BEAM_LEFT; + } + const forcedBeamDirection = this.forcedPartialDirections[noteIndex]; + if (forcedBeamDirection) + return forcedBeamDirection; + const lookup_duration = `${Tables.durationToNumber(duration) / 2}`; + const prev_note_gets_beam = prev_tick < Tables.durationToTicks(lookup_duration); + const next_note_gets_beam = next_tick < Tables.durationToTicks(lookup_duration); + const note_gets_beam = tick < Tables.durationToTicks(lookup_duration); + if (prev_note_gets_beam && next_note_gets_beam && note_gets_beam) { + return BEAM_BOTH; + } + else if (prev_note_gets_beam && !next_note_gets_beam && note_gets_beam) { + return BEAM_LEFT; + } + else if (!prev_note_gets_beam && next_note_gets_beam && note_gets_beam) { + return BEAM_RIGHT; + } + return this.lookupBeamDirection(lookup_duration, prev_tick, tick, next_tick, noteIndex); + } + getBeamLines(duration) { + const tick_of_duration = Tables.durationToTicks(duration); + let beam_started = false; + const beam_lines = []; + let current_beam = undefined; + const partial_beam_length = this.render_options.partial_beam_length; + let previous_should_break = false; + let tick_tally = 0; + for (let i = 0; i < this.notes.length; ++i) { + const note = this.notes[i]; + const ticks = note.getTicks().value(); + tick_tally += ticks; + let should_break = false; + if (parseInt(duration, 10) >= 8) { + should_break = this.break_on_indices.indexOf(i) !== -1; + if (this.render_options.secondary_break_ticks && tick_tally >= this.render_options.secondary_break_ticks) { + tick_tally = 0; + should_break = true; + } + } + const note_gets_beam = note.getIntrinsicTicks() < tick_of_duration; + const stem_x = note.getStemX() - Stem.WIDTH / 2; + const prev_note = this.notes[i - 1]; + const next_note = this.notes[i + 1]; + const next_note_gets_beam = next_note && next_note.getIntrinsicTicks() < tick_of_duration; + const prev_note_gets_beam = prev_note && prev_note.getIntrinsicTicks() < tick_of_duration; + const beam_alone = prev_note && next_note && note_gets_beam && !prev_note_gets_beam && !next_note_gets_beam; + if (note_gets_beam) { + if (beam_started) { + current_beam = beam_lines[beam_lines.length - 1]; + current_beam.end = stem_x; + if (should_break) { + beam_started = false; + if (next_note && !next_note_gets_beam && current_beam.end === undefined) { + current_beam.end = current_beam.start - partial_beam_length; + } + } + } + else { + current_beam = { start: stem_x, end: undefined }; + beam_started = true; + if (beam_alone) { + const prev_tick = prev_note.getIntrinsicTicks(); + const next_tick = next_note.getIntrinsicTicks(); + const tick = note.getIntrinsicTicks(); + const beam_direction = this.lookupBeamDirection(duration, prev_tick, tick, next_tick, i); + if ([BEAM_LEFT, BEAM_BOTH].includes(beam_direction)) { + current_beam.end = current_beam.start - partial_beam_length; + } + else { + current_beam.end = current_beam.start + partial_beam_length; + } + } + else if (!next_note_gets_beam) { + if ((previous_should_break || i === 0) && next_note) { + current_beam.end = current_beam.start + partial_beam_length; + } + else { + current_beam.end = current_beam.start - partial_beam_length; + } + } + else if (should_break) { + current_beam.end = current_beam.start - partial_beam_length; + beam_started = false; + } + beam_lines.push(current_beam); + } + } + else { + beam_started = false; + } + previous_should_break = should_break; + } + const last_beam = beam_lines[beam_lines.length - 1]; + if (last_beam && last_beam.end === undefined) { + last_beam.end = last_beam.start - partial_beam_length; + } + return beam_lines; + } + drawStems(ctx) { + this.notes.forEach((note) => { + const stem = note.getStem(); + if (stem) { + const stem_x = note.getStemX(); + stem.setNoteHeadXBounds(stem_x, stem_x); + stem.setContext(ctx).draw(); + } + }, this); + } + drawBeamLines(ctx) { + const valid_beam_durations = ['4', '8', '16', '32', '64']; + const firstNote = this.notes[0]; + let beamY = this.getBeamYToDraw(); + const firstStemX = firstNote.getStemX(); + const beamThickness = this.render_options.beam_width * this.stem_direction; + for (let i = 0; i < valid_beam_durations.length; ++i) { + const duration = valid_beam_durations[i]; + const beamLines = this.getBeamLines(duration); + for (let j = 0; j < beamLines.length; ++j) { + const beam_line = beamLines[j]; + const startBeamX = beam_line.start; + const startBeamY = this.getSlopeY(startBeamX, firstStemX, beamY, this.slope); + const lastBeamX = beam_line.end; + if (lastBeamX) { + const lastBeamY = this.getSlopeY(lastBeamX, firstStemX, beamY, this.slope); + ctx.openGroup('beam', this.getAttribute('id')); + ctx.beginPath(); + ctx.moveTo(startBeamX, startBeamY); + ctx.lineTo(startBeamX, startBeamY + beamThickness); + ctx.lineTo(lastBeamX + 1, lastBeamY + beamThickness); + ctx.lineTo(lastBeamX + 1, lastBeamY); + ctx.closePath(); + ctx.fill(); + ctx.closeGroup(); + } + else { + throw new RuntimeError('NoLastBeamX', 'lastBeamX undefined.'); + } + } + beamY += beamThickness * 1.5; + } + } + preFormat() { + return this; + } + postFormat() { + if (this.postFormatted) + return; + if (isTabNote(this.notes[0]) || this.render_options.flat_beams) { + this.calculateFlatSlope(); + } + else { + this.calculateSlope(); + } + this.applyStemExtensions(); + this.postFormatted = true; + } + draw() { + const ctx = this.checkContext(); + this.setRendered(); + if (this.unbeamable) + return; + if (!this.postFormatted) { + this.postFormat(); + } + this.drawStems(ctx); + this.applyStyle(); + this.drawBeamLines(ctx); + this.restoreStyle(); + } +} diff --git a/build/esm/src/bend.js b/build/esm/src/bend.js new file mode 100644 index 0000000000..8868af6b91 --- /dev/null +++ b/build/esm/src/bend.js @@ -0,0 +1,202 @@ +import { Element } from './element.js'; +import { Modifier } from './modifier.js'; +import { TextFormatter } from './textformatter.js'; +import { isTabNote } from './typeguard.js'; +import { RuntimeError } from './util.js'; +export class Bend extends Modifier { + constructor(text, release = false, phrase) { + super(); + this.text = text; + this.x_shift = 0; + this.release = release; + this.tap = ''; + this.resetFont(); + this.render_options = { + line_width: 1.5, + line_style: '#777777', + bend_width: 8, + release_width: 8, + }; + if (phrase) { + this.phrase = phrase; + } + else { + this.phrase = [{ type: Bend.UP, text: this.text }]; + if (this.release) + this.phrase.push({ type: Bend.DOWN, text: '' }); + } + this.updateWidth(); + } + static get CATEGORY() { + return "Bend"; + } + static get UP() { + return 0; + } + static get DOWN() { + return 1; + } + static format(bends, state) { + if (!bends || bends.length === 0) + return false; + let last_width = 0; + for (let i = 0; i < bends.length; ++i) { + const bend = bends[i]; + const note = bend.checkAttachedNote(); + if (isTabNote(note)) { + const stringPos = note.leastString() - 1; + if (state.top_text_line < stringPos) { + state.top_text_line = stringPos; + } + } + bend.setXShift(last_width); + last_width = bend.getWidth(); + bend.setTextLine(state.top_text_line); + } + state.right_shift += last_width; + state.top_text_line += 1; + return true; + } + setXShift(value) { + this.x_shift = value; + this.updateWidth(); + return this; + } + setTap(value) { + this.tap = value; + return this; + } + getText() { + return this.text; + } + getTextHeight() { + const textFormatter = TextFormatter.create(this.textFont); + return textFormatter.maxHeight; + } + updateWidth() { + const textFormatter = TextFormatter.create(this.textFont); + const measureText = (text) => { + return textFormatter.getWidthForTextInPx(text); + }; + let totalWidth = 0; + for (let i = 0; i < this.phrase.length; ++i) { + const bend = this.phrase[i]; + if (bend.width !== undefined) { + totalWidth += bend.width; + } + else { + const additional_width = bend.type === Bend.UP ? this.render_options.bend_width : this.render_options.release_width; + bend.width = Math.max(additional_width, measureText(bend.text)) + 3; + bend.draw_width = bend.width / 2; + totalWidth += bend.width; + } + } + this.setWidth(totalWidth + this.x_shift); + return this; + } + draw() { + var _a; + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const start = note.getModifierStartXY(Modifier.Position.RIGHT, this.index); + start.x += 3; + start.y += 0.5; + const x_shift = this.x_shift; + const stave = note.checkStave(); + const spacing = stave.getSpacingBetweenLines(); + const lowestY = note.getYs().reduce((a, b) => (a < b ? a : b)); + const bend_height = start.y - ((this.text_line + 1) * spacing + start.y - lowestY) + 3; + const annotation_y = start.y - ((this.text_line + 1) * spacing + start.y - lowestY) - 1; + const renderBend = (x, y, width, height) => { + const cp_x = x + width; + const cp_y = y; + ctx.save(); + ctx.beginPath(); + ctx.setLineWidth(this.render_options.line_width); + ctx.setStrokeStyle(this.render_options.line_style); + ctx.setFillStyle(this.render_options.line_style); + ctx.moveTo(x, y); + ctx.quadraticCurveTo(cp_x, cp_y, x + width, height); + ctx.stroke(); + ctx.restore(); + }; + const renderRelease = (x, y, width, height) => { + ctx.save(); + ctx.beginPath(); + ctx.setLineWidth(this.render_options.line_width); + ctx.setStrokeStyle(this.render_options.line_style); + ctx.setFillStyle(this.render_options.line_style); + ctx.moveTo(x, height); + ctx.quadraticCurveTo(x + width, height, x + width, y); + ctx.stroke(); + ctx.restore(); + }; + const renderArrowHead = (x, y, direction) => { + const width = 4; + const yBase = y + width * direction; + ctx.beginPath(); + ctx.moveTo(x, y); + ctx.lineTo(x - width, yBase); + ctx.lineTo(x + width, yBase); + ctx.closePath(); + ctx.fill(); + }; + const renderText = (x, text) => { + ctx.save(); + ctx.setFont(this.textFont); + const render_x = x - ctx.measureText(text).width / 2; + ctx.fillText(text, render_x, annotation_y); + ctx.restore(); + }; + let last_bend = undefined; + let last_bend_draw_width = 0; + let last_drawn_width = 0; + if ((_a = this.tap) === null || _a === void 0 ? void 0 : _a.length) { + const tapStart = note.getModifierStartXY(Modifier.Position.CENTER, this.index); + renderText(tapStart.x, this.tap); + } + for (let i = 0; i < this.phrase.length; ++i) { + const bend = this.phrase[i]; + if (!bend.draw_width) + bend.draw_width = 0; + if (i === 0) + bend.draw_width += x_shift; + last_drawn_width = bend.draw_width + last_bend_draw_width - (i === 1 ? x_shift : 0); + if (bend.type === Bend.UP) { + if (last_bend && last_bend.type === Bend.UP) { + renderArrowHead(start.x, bend_height, +1); + } + renderBend(start.x, start.y, last_drawn_width, bend_height); + } + if (bend.type === Bend.DOWN) { + if (last_bend && last_bend.type === Bend.UP) { + renderRelease(start.x, start.y, last_drawn_width, bend_height); + } + if (last_bend && last_bend.type === Bend.DOWN) { + renderArrowHead(start.x, start.y, -1); + renderRelease(start.x, start.y, last_drawn_width, bend_height); + } + if (!last_bend) { + last_drawn_width = bend.draw_width; + renderRelease(start.x, start.y, last_drawn_width, bend_height); + } + } + renderText(start.x + last_drawn_width, bend.text); + last_bend = bend; + last_bend_draw_width = bend.draw_width; + last_bend.x = start.x; + start.x += last_drawn_width; + } + if (!last_bend || last_bend.x == undefined) { + throw new RuntimeError('NoLastBendForBend', 'Internal error.'); + } + if (last_bend.type === Bend.UP) { + renderArrowHead(last_bend.x + last_drawn_width, bend_height, +1); + } + else if (last_bend.type === Bend.DOWN) { + renderArrowHead(last_bend.x + last_drawn_width, start.y, -1); + } + } +} +Bend.TEXT_FONT = Object.assign({}, Element.TEXT_FONT); diff --git a/build/esm/src/boundingbox.js b/build/esm/src/boundingbox.js new file mode 100644 index 0000000000..2c7c1dd123 --- /dev/null +++ b/build/esm/src/boundingbox.js @@ -0,0 +1,59 @@ +export class BoundingBox { + constructor(x, y, w, h) { + this.x = x; + this.y = y; + this.w = w; + this.h = h; + } + static copy(that) { + return new BoundingBox(that.x, that.y, that.w, that.h); + } + getX() { + return this.x; + } + getY() { + return this.y; + } + getW() { + return this.w; + } + getH() { + return this.h; + } + setX(x) { + this.x = x; + return this; + } + setY(y) { + this.y = y; + return this; + } + setW(w) { + this.w = w; + return this; + } + setH(h) { + this.h = h; + return this; + } + move(x, y) { + this.x += x; + this.y += y; + return this; + } + clone() { + return BoundingBox.copy(this); + } + mergeWith(boundingBox) { + const that = boundingBox; + const new_x = this.x < that.x ? this.x : that.x; + const new_y = this.y < that.y ? this.y : that.y; + const new_w = Math.max(this.x + this.w, that.x + that.w) - new_x; + const new_h = Math.max(this.y + this.h, that.y + that.h) - new_y; + this.x = new_x; + this.y = new_y; + this.w = new_w; + this.h = new_h; + return this; + } +} diff --git a/build/esm/src/boundingboxcomputation.js b/build/esm/src/boundingboxcomputation.js new file mode 100644 index 0000000000..ee8588e456 --- /dev/null +++ b/build/esm/src/boundingboxcomputation.js @@ -0,0 +1,107 @@ +export class BoundingBoxComputation { + constructor() { + this.x1 = Number.NaN; + this.y1 = Number.NaN; + this.x2 = Number.NaN; + this.y2 = Number.NaN; + } + getX1() { + return this.x1; + } + getY1() { + return this.y1; + } + width() { + return this.x2 - this.x1; + } + height() { + return this.y2 - this.y1; + } + addPoint(x, y) { + if (isNaN(this.x1) || x < this.x1) + this.x1 = x; + if (isNaN(this.x2) || x > this.x2) + this.x2 = x; + if (isNaN(this.y1) || y < this.y1) + this.y1 = y; + if (isNaN(this.y2) || y > this.y2) + this.y2 = y; + } + addX(x) { + this.addPoint(x, this.y1); + } + addY(y) { + this.addPoint(this.x1, y); + } + addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) { + this.addPoint(p0x, p0y); + this.addPoint(p2x, p2y); + const p01x = p1x - p0x; + const p12x = p2x - p1x; + let denom = p01x - p12x; + if (denom != 0) { + const t = p01x / denom; + if (t > 0 && t < 1) { + const it = 1 - t; + this.addX(it * it * p0x + 2 * it * t * p1x + t * t * p2x); + } + } + const p01y = p1y - p0y; + const p12y = p2y - p1y; + denom = p01y - p12y; + if (denom != 0) { + const t = p01y / denom; + if (t > 0 && t < 1) { + const it = 1 - t; + this.addY(it * it * p0y + 2 * it * t * p1y + t * t * p2y); + } + } + } + addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) { + const p0 = [p0x, p0y]; + const p1 = [p1x, p1y]; + const p2 = [p2x, p2y]; + const p3 = [p3x, p3y]; + let i; + this.addPoint(p0[0], p0[1]); + this.addPoint(p3[0], p3[1]); + const f = (t, i) => Math.pow(1 - t, 3) * p0[i] + + 3 * Math.pow(1 - t, 2) * t * p1[i] + + 3 * (1 - t) * Math.pow(t, 2) * p2[i] + + Math.pow(t, 3) * p3[i]; + for (i = 0; i <= 1; i++) { + const b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i]; + const a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i]; + const c = 3 * p1[i] - 3 * p0[i]; + if (a === 0) { + if (b === 0) + continue; + const t = -c / b; + if (0 < t && t < 1) { + if (i === 0) + this.addX(f(t, i)); + if (i === 1) + this.addY(f(t, i)); + } + continue; + } + const b2ac = Math.pow(b, 2) - 4 * c * a; + if (b2ac < 0) + continue; + const t1 = (-b + Math.sqrt(b2ac)) / (2 * a); + if (0 < t1 && t1 < 1) { + if (i === 0) + this.addX(f(t1, i)); + if (i === 1) + this.addY(f(t1, i)); + } + const t2 = (-b - Math.sqrt(b2ac)) / (2 * a); + if (0 < t2 && t2 < 1) { + if (i === 0) + this.addX(f(t2, i)); + if (i === 1) + this.addY(f(t2, i)); + } + } + } +} diff --git a/build/esm/src/canvascontext.js b/build/esm/src/canvascontext.js new file mode 100644 index 0000000000..09a48492ff --- /dev/null +++ b/build/esm/src/canvascontext.js @@ -0,0 +1,202 @@ +import { Font } from './font.js'; +import { RenderContext } from './rendercontext.js'; +import { globalObject, warn } from './util.js'; +import { isHTMLCanvas } from './web.js'; +export class CanvasContext extends RenderContext { + constructor(context) { + super(); + this.textHeight = 0; + this.context2D = context; + if (!context.canvas) { + this.canvas = { + width: CanvasContext.WIDTH, + height: CanvasContext.HEIGHT, + }; + } + else { + this.canvas = context.canvas; + } + } + static get WIDTH() { + return 600; + } + static get HEIGHT() { + return 400; + } + static get CANVAS_BROWSER_SIZE_LIMIT() { + return 32767; + } + static sanitizeCanvasDims(width, height) { + const limit = this.CANVAS_BROWSER_SIZE_LIMIT; + if (Math.max(width, height) > limit) { + warn('Canvas dimensions exceed browser limit. Cropping to ' + limit); + if (width > limit) { + width = limit; + } + if (height > limit) { + height = limit; + } + } + return [width, height]; + } + clear() { + this.context2D.clearRect(0, 0, this.canvas.width, this.canvas.height); + } + openGroup(cls, id, attrs) { + } + closeGroup() { + } + add(child) { + } + setFillStyle(style) { + this.context2D.fillStyle = style; + return this; + } + setBackgroundFillStyle(style) { + return this; + } + setStrokeStyle(style) { + this.context2D.strokeStyle = style; + return this; + } + setShadowColor(color) { + this.context2D.shadowColor = color; + return this; + } + setShadowBlur(blur) { + const t = this.context2D.getTransform(); + const scale = Math.sqrt(t.a * t.a + t.b * t.b + t.c * t.c + t.d * t.d); + this.context2D.shadowBlur = scale * blur; + return this; + } + setLineWidth(width) { + this.context2D.lineWidth = width; + return this; + } + setLineCap(capType) { + this.context2D.lineCap = capType; + return this; + } + setLineDash(dash) { + this.context2D.setLineDash(dash); + return this; + } + scale(x, y) { + this.context2D.scale(x, y); + return this; + } + resize(width, height) { + const canvas = this.context2D.canvas; + const devicePixelRatio = globalObject().devicePixelRatio || 1; + [width, height] = CanvasContext.sanitizeCanvasDims(width * devicePixelRatio, height * devicePixelRatio); + width = (width / devicePixelRatio) | 0; + height = (height / devicePixelRatio) | 0; + canvas.width = width * devicePixelRatio; + canvas.height = height * devicePixelRatio; + if (isHTMLCanvas(canvas)) { + canvas.style.width = width + 'px'; + canvas.style.height = height + 'px'; + } + return this.scale(devicePixelRatio, devicePixelRatio); + } + rect(x, y, width, height) { + this.context2D.rect(x, y, width, height); + return this; + } + fillRect(x, y, width, height) { + this.context2D.fillRect(x, y, width, height); + return this; + } + clearRect(x, y, width, height) { + this.context2D.clearRect(x, y, width, height); + return this; + } + beginPath() { + this.context2D.beginPath(); + return this; + } + moveTo(x, y) { + this.context2D.moveTo(x, y); + return this; + } + lineTo(x, y) { + this.context2D.lineTo(x, y); + return this; + } + bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) { + this.context2D.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y); + return this; + } + quadraticCurveTo(cpx, cpy, x, y) { + this.context2D.quadraticCurveTo(cpx, cpy, x, y); + return this; + } + arc(x, y, radius, startAngle, endAngle, counterclockwise) { + this.context2D.arc(x, y, radius, startAngle, endAngle, counterclockwise); + return this; + } + fill() { + this.context2D.fill(); + return this; + } + stroke() { + this.context2D.stroke(); + return this; + } + closePath() { + this.context2D.closePath(); + return this; + } + measureText(text) { + const metrics = this.context2D.measureText(text); + let y = 0; + let height = 0; + if (metrics.fontBoundingBoxAscent) { + y = -metrics.fontBoundingBoxAscent; + height = metrics.fontBoundingBoxDescent + metrics.fontBoundingBoxAscent; + } + else { + y = -metrics.actualBoundingBoxAscent; + height = metrics.actualBoundingBoxDescent + metrics.actualBoundingBoxAscent; + } + return { + x: 0, + y: y, + width: metrics.width, + height: height, + }; + } + fillText(text, x, y) { + this.context2D.fillText(text, x, y); + return this; + } + save() { + this.context2D.save(); + return this; + } + restore() { + this.context2D.restore(); + return this; + } + set fillStyle(style) { + this.context2D.fillStyle = style; + } + get fillStyle() { + return this.context2D.fillStyle; + } + set strokeStyle(style) { + this.context2D.strokeStyle = style; + } + get strokeStyle() { + return this.context2D.strokeStyle; + } + setFont(f, size, weight, style) { + const fontInfo = Font.validate(f, size, weight, style); + this.context2D.font = Font.toCSSString(fontInfo); + this.textHeight = Font.convertSizeToPixelValue(fontInfo.size); + return this; + } + getFont() { + return this.context2D.font; + } +} diff --git a/build/esm/src/chordsymbol.js b/build/esm/src/chordsymbol.js new file mode 100644 index 0000000000..bbc8085f6f --- /dev/null +++ b/build/esm/src/chordsymbol.js @@ -0,0 +1,601 @@ +import { Font, FontStyle, FontWeight } from './font.js'; +import { Glyph } from './glyph.js'; +import { Modifier } from './modifier.js'; +import { Tables } from './tables.js'; +import { TextFormatter } from './textformatter.js'; +import { isStemmableNote } from './typeguard.js'; +import { log } from './util.js'; +function L(...args) { + if (ChordSymbol.DEBUG) + log('Vex.Flow.ChordSymbol', args); +} +export var ChordSymbolHorizontalJustify; +(function (ChordSymbolHorizontalJustify) { + ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify["LEFT"] = 1] = "LEFT"; + ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify["CENTER"] = 2] = "CENTER"; + ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify["RIGHT"] = 3] = "RIGHT"; + ChordSymbolHorizontalJustify[ChordSymbolHorizontalJustify["CENTER_STEM"] = 4] = "CENTER_STEM"; +})(ChordSymbolHorizontalJustify || (ChordSymbolHorizontalJustify = {})); +export var ChordSymbolVerticalJustify; +(function (ChordSymbolVerticalJustify) { + ChordSymbolVerticalJustify[ChordSymbolVerticalJustify["TOP"] = 1] = "TOP"; + ChordSymbolVerticalJustify[ChordSymbolVerticalJustify["BOTTOM"] = 2] = "BOTTOM"; +})(ChordSymbolVerticalJustify || (ChordSymbolVerticalJustify = {})); +export var SymbolTypes; +(function (SymbolTypes) { + SymbolTypes[SymbolTypes["GLYPH"] = 1] = "GLYPH"; + SymbolTypes[SymbolTypes["TEXT"] = 2] = "TEXT"; + SymbolTypes[SymbolTypes["LINE"] = 3] = "LINE"; +})(SymbolTypes || (SymbolTypes = {})); +export var SymbolModifiers; +(function (SymbolModifiers) { + SymbolModifiers[SymbolModifiers["NONE"] = 1] = "NONE"; + SymbolModifiers[SymbolModifiers["SUBSCRIPT"] = 2] = "SUBSCRIPT"; + SymbolModifiers[SymbolModifiers["SUPERSCRIPT"] = 3] = "SUPERSCRIPT"; +})(SymbolModifiers || (SymbolModifiers = {})); +export class ChordSymbol extends Modifier { + constructor() { + super(); + this.symbolBlocks = []; + this.horizontal = ChordSymbolHorizontalJustify.LEFT; + this.vertical = ChordSymbolVerticalJustify.TOP; + this.useKerning = true; + this.reportWidth = true; + this.resetFont(); + } + static get CATEGORY() { + return "ChordSymbol"; + } + static get superSubRatio() { + return ChordSymbol.metrics.global.superSubRatio; + } + static set NO_TEXT_FORMAT(val) { + ChordSymbol.noFormat = val; + } + static get NO_TEXT_FORMAT() { + return ChordSymbol.noFormat; + } + static getMetricForGlyph(glyphCode) { + if (ChordSymbol.metrics[glyphCode]) { + return ChordSymbol.metrics[glyphCode]; + } + return undefined; + } + static get engravingFontResolution() { + return Tables.currentMusicFont().getResolution(); + } + static get spacingBetweenBlocks() { + return ChordSymbol.metrics.global.spacing / ChordSymbol.engravingFontResolution; + } + static getWidthForGlyph(glyph) { + const metric = ChordSymbol.getMetricForGlyph(glyph.code); + if (!metric) { + return 0.65; + } + return metric.advanceWidth / ChordSymbol.engravingFontResolution; + } + static getYShiftForGlyph(glyph) { + const metric = ChordSymbol.getMetricForGlyph(glyph.code); + if (!metric) { + return 0; + } + return metric.yOffset / ChordSymbol.engravingFontResolution; + } + static getXShiftForGlyph(glyph) { + const metric = ChordSymbol.getMetricForGlyph(glyph.code); + if (!metric) { + return 0; + } + return (-1 * metric.leftSideBearing) / ChordSymbol.engravingFontResolution; + } + static get superscriptOffset() { + return ChordSymbol.metrics.global.superscriptOffset / ChordSymbol.engravingFontResolution; + } + static get subscriptOffset() { + return ChordSymbol.metrics.global.subscriptOffset / ChordSymbol.engravingFontResolution; + } + static get kerningOffset() { + return ChordSymbol.metrics.global.kerningOffset / ChordSymbol.engravingFontResolution; + } + static get metrics() { + return Tables.currentMusicFont().getMetrics().glyphs.chordSymbol; + } + static get lowerKerningText() { + return ChordSymbol.metrics.global.lowerKerningText; + } + static get upperKerningText() { + return ChordSymbol.metrics.global.upperKerningText; + } + static isSuperscript(block) { + return block.symbolModifier !== undefined && block.symbolModifier === SymbolModifiers.SUPERSCRIPT; + } + static isSubscript(block) { + return block.symbolModifier !== undefined && block.symbolModifier === SymbolModifiers.SUBSCRIPT; + } + static get minPadding() { + const musicFont = Tables.currentMusicFont(); + return musicFont.lookupMetric('glyphs.noteHead.minPadding'); + } + static format(symbols, state) { + var _a; + if (!symbols || symbols.length === 0) + return false; + let width = 0; + let nonSuperWidth = 0; + let leftWidth = 0; + let rightWidth = 0; + let maxLeftGlyphWidth = 0; + let maxRightGlyphWidth = 0; + for (const symbol of symbols) { + const fontSize = Font.convertSizeToPointValue((_a = symbol.textFont) === null || _a === void 0 ? void 0 : _a.size); + const fontAdj = Font.scaleSize(fontSize, 0.05); + const glyphAdj = fontAdj * 2; + const note = symbol.checkAttachedNote(); + let symbolWidth = 0; + let lineSpaces = 1; + let vAlign = false; + for (let j = 0; j < symbol.symbolBlocks.length; ++j) { + const block = symbol.symbolBlocks[j]; + const sup = ChordSymbol.isSuperscript(block); + const sub = ChordSymbol.isSubscript(block); + const superSubScale = sup || sub ? ChordSymbol.superSubRatio : 1; + const adj = block.symbolType === SymbolTypes.GLYPH ? glyphAdj * superSubScale : fontAdj * superSubScale; + if (sup || sub) { + lineSpaces = 2; + } + const fontSize = symbol.textFormatter.fontSizeInPixels; + const superSubFontSize = fontSize * superSubScale; + if (block.symbolType === SymbolTypes.GLYPH && block.glyph !== undefined) { + block.width = ChordSymbol.getWidthForGlyph(block.glyph) * superSubFontSize; + block.yShift += ChordSymbol.getYShiftForGlyph(block.glyph) * superSubFontSize; + block.xShift += ChordSymbol.getXShiftForGlyph(block.glyph) * superSubFontSize; + block.glyph.scale = block.glyph.scale * adj; + } + else if (block.symbolType === SymbolTypes.TEXT) { + block.width = block.width * superSubFontSize; + block.yShift += symbol.getYOffsetForText(block.text) * adj; + } + if (block.symbolType === SymbolTypes.GLYPH && + block.glyph !== undefined && + block.glyph.code === ChordSymbol.glyphs.over.code) { + lineSpaces = 2; + } + block.width += ChordSymbol.spacingBetweenBlocks * fontSize * superSubScale; + if (sup && j > 0) { + const prev = symbol.symbolBlocks[j - 1]; + if (!ChordSymbol.isSuperscript(prev)) { + nonSuperWidth = width; + } + } + if (sub && nonSuperWidth > 0) { + vAlign = true; + block.xShift = block.xShift + (nonSuperWidth - width); + width = nonSuperWidth; + nonSuperWidth = 0; + symbol.setEnableKerning(false); + } + if (!sup && !sub) { + nonSuperWidth = 0; + } + block.vAlign = vAlign; + width += block.width; + symbolWidth = width; + } + symbol.updateKerningAdjustments(); + symbol.updateOverBarAdjustments(); + if (symbol.getVertical() === ChordSymbolVerticalJustify.TOP) { + symbol.setTextLine(state.top_text_line); + state.top_text_line += lineSpaces; + } + else { + symbol.setTextLine(state.text_line + 1); + state.text_line += lineSpaces + 1; + } + if (symbol.getReportWidth() && isStemmableNote(note)) { + const glyphWidth = note.getGlyph().getWidth(); + if (symbol.getHorizontal() === ChordSymbolHorizontalJustify.LEFT) { + maxLeftGlyphWidth = Math.max(glyphWidth, maxLeftGlyphWidth); + leftWidth = Math.max(leftWidth, symbolWidth) + ChordSymbol.minPadding; + } + else if (symbol.getHorizontal() === ChordSymbolHorizontalJustify.RIGHT) { + maxRightGlyphWidth = Math.max(glyphWidth, maxRightGlyphWidth); + rightWidth = Math.max(rightWidth, symbolWidth); + } + else { + leftWidth = Math.max(leftWidth, symbolWidth / 2) + ChordSymbol.minPadding; + rightWidth = Math.max(rightWidth, symbolWidth / 2); + maxLeftGlyphWidth = Math.max(glyphWidth / 2, maxLeftGlyphWidth); + maxRightGlyphWidth = Math.max(glyphWidth / 2, maxRightGlyphWidth); + } + } + width = 0; + } + const rightOverlap = Math.min(Math.max(rightWidth - maxRightGlyphWidth, 0), Math.max(rightWidth - state.right_shift, 0)); + const leftOverlap = Math.min(Math.max(leftWidth - maxLeftGlyphWidth, 0), Math.max(leftWidth - state.left_shift, 0)); + state.left_shift += leftOverlap; + state.right_shift += rightOverlap; + return true; + } + static get TEXT_FONT() { + let family = 'Roboto Slab, Times, serif'; + if (Tables.currentMusicFont().getName() === 'Petaluma') { + family = 'PetalumaScript, Arial, sans-serif'; + } + return { + family, + size: 12, + weight: FontWeight.NORMAL, + style: FontStyle.NORMAL, + }; + } + get superscriptOffset() { + return ChordSymbol.superscriptOffset * this.textFormatter.fontSizeInPixels; + } + get subscriptOffset() { + return ChordSymbol.subscriptOffset * this.textFormatter.fontSizeInPixels; + } + setReportWidth(value) { + this.reportWidth = value; + return this; + } + getReportWidth() { + return this.reportWidth; + } + updateOverBarAdjustments() { + const barIndex = this.symbolBlocks.findIndex(({ symbolType, glyph }) => symbolType === SymbolTypes.GLYPH && glyph !== undefined && glyph.code === 'csymDiagonalArrangementSlash'); + if (barIndex < 0) { + return; + } + const bar = this.symbolBlocks[barIndex]; + const xoff = bar.width / 4; + const yoff = 0.25 * this.textFormatter.fontSizeInPixels; + let symIndex = 0; + for (symIndex === 0; symIndex < barIndex; ++symIndex) { + const symbol = this.symbolBlocks[symIndex]; + symbol.xShift = symbol.xShift + xoff; + symbol.yShift = symbol.yShift - yoff; + } + for (symIndex = barIndex + 1; symIndex < this.symbolBlocks.length; ++symIndex) { + const symbol = this.symbolBlocks[symIndex]; + symbol.xShift = symbol.xShift - xoff; + symbol.yShift = symbol.yShift + yoff; + } + } + updateKerningAdjustments() { + let accum = 0; + for (let j = 0; j < this.symbolBlocks.length; ++j) { + const symbol = this.symbolBlocks[j]; + accum += this.getKerningAdjustment(j); + symbol.xShift += accum; + } + } + getKerningAdjustment(j) { + if (!this.useKerning) { + return 0; + } + const currSymbol = this.symbolBlocks[j]; + const prevSymbol = j > 0 ? this.symbolBlocks[j - 1] : undefined; + let adjustment = 0; + if (currSymbol.symbolType === SymbolTypes.GLYPH && + currSymbol.glyph !== undefined && + currSymbol.glyph.code === ChordSymbol.glyphs.over.code) { + adjustment += currSymbol.glyph.metrics.x_shift; + } + if (prevSymbol !== undefined && + prevSymbol.symbolType === SymbolTypes.GLYPH && + prevSymbol.glyph !== undefined && + prevSymbol.glyph.code === ChordSymbol.glyphs.over.code) { + adjustment += prevSymbol.glyph.metrics.x_shift; + } + let preKernUpper = false; + let preKernLower = false; + if (prevSymbol !== undefined && prevSymbol.symbolType === SymbolTypes.TEXT) { + preKernUpper = ChordSymbol.upperKerningText.some((xx) => xx === prevSymbol.text[prevSymbol.text.length - 1]); + preKernLower = ChordSymbol.lowerKerningText.some((xx) => xx === prevSymbol.text[prevSymbol.text.length - 1]); + } + const kerningOffsetPixels = ChordSymbol.kerningOffset * this.textFormatter.fontSizeInPixels; + if (preKernUpper && currSymbol.symbolModifier === SymbolModifiers.SUPERSCRIPT) { + adjustment += kerningOffsetPixels; + } + if (preKernLower && currSymbol.symbolType === SymbolTypes.TEXT) { + if (currSymbol.text[0] >= 'a' && currSymbol.text[0] <= 'z') { + adjustment += kerningOffsetPixels / 2; + } + if (ChordSymbol.upperKerningText.some((xx) => xx === (prevSymbol === null || prevSymbol === void 0 ? void 0 : prevSymbol.text[prevSymbol.text.length - 1]))) { + adjustment += kerningOffsetPixels / 2; + } + } + return adjustment; + } + getSymbolBlock(params = {}) { + var _a, _b, _c; + const symbolType = (_a = params.symbolType) !== null && _a !== void 0 ? _a : SymbolTypes.TEXT; + const symbolBlock = { + text: (_b = params.text) !== null && _b !== void 0 ? _b : '', + symbolType, + symbolModifier: (_c = params.symbolModifier) !== null && _c !== void 0 ? _c : SymbolModifiers.NONE, + xShift: 0, + yShift: 0, + vAlign: false, + width: 0, + }; + if (symbolType === SymbolTypes.GLYPH && typeof params.glyph === 'string') { + const glyphArgs = ChordSymbol.glyphs[params.glyph]; + const glyphPoints = 20; + symbolBlock.glyph = new Glyph(glyphArgs.code, glyphPoints, { category: 'chordSymbol' }); + } + else if (symbolType === SymbolTypes.TEXT) { + symbolBlock.width = this.textFormatter.getWidthForTextInEm(symbolBlock.text); + } + else if (symbolType === SymbolTypes.LINE) { + symbolBlock.width = params.width; + } + return symbolBlock; + } + addSymbolBlock(parameters) { + this.symbolBlocks.push(this.getSymbolBlock(parameters)); + return this; + } + addText(text, parameters = {}) { + const symbolType = SymbolTypes.TEXT; + return this.addSymbolBlock(Object.assign(Object.assign({}, parameters), { text, symbolType })); + } + addTextSuperscript(text) { + const symbolType = SymbolTypes.TEXT; + const symbolModifier = SymbolModifiers.SUPERSCRIPT; + return this.addSymbolBlock({ text, symbolType, symbolModifier }); + } + addTextSubscript(text) { + const symbolType = SymbolTypes.TEXT; + const symbolModifier = SymbolModifiers.SUBSCRIPT; + return this.addSymbolBlock({ text, symbolType, symbolModifier }); + } + addGlyphSuperscript(glyph) { + const symbolType = SymbolTypes.GLYPH; + const symbolModifier = SymbolModifiers.SUPERSCRIPT; + return this.addSymbolBlock({ glyph, symbolType, symbolModifier }); + } + addGlyph(glyph, params = {}) { + const symbolType = SymbolTypes.GLYPH; + return this.addSymbolBlock(Object.assign(Object.assign({}, params), { glyph, symbolType })); + } + addGlyphOrText(text, params = {}) { + let str = ''; + for (let i = 0; i < text.length; ++i) { + const char = text[i]; + if (ChordSymbol.glyphs[char]) { + if (str.length > 0) { + this.addText(str, params); + str = ''; + } + this.addGlyph(char, params); + } + else { + str += char; + } + } + if (str.length > 0) { + this.addText(str, params); + } + return this; + } + addLine(width, params = {}) { + const symbolType = SymbolTypes.LINE; + return this.addSymbolBlock(Object.assign(Object.assign({}, params), { symbolType, width })); + } + setFont(f, size, weight, style) { + super.setFont(f, size, weight, style); + this.textFormatter = TextFormatter.create(this.textFont); + return this; + } + setEnableKerning(val) { + this.useKerning = val; + return this; + } + setVertical(vj) { + this.vertical = typeof vj === 'string' ? ChordSymbol.VerticalJustifyString[vj] : vj; + return this; + } + getVertical() { + return this.vertical; + } + setHorizontal(hj) { + this.horizontal = typeof hj === 'string' ? ChordSymbol.HorizontalJustifyString[hj] : hj; + return this; + } + getHorizontal() { + return this.horizontal; + } + getWidth() { + let width = 0; + this.symbolBlocks.forEach((symbol) => { + width += symbol.vAlign ? 0 : symbol.width; + }); + return width; + } + getYOffsetForText(text) { + var _a; + let acc = 0; + let i = 0; + for (i = 0; i < text.length; ++i) { + const metrics = this.textFormatter.getGlyphMetrics(text[i]); + if (metrics) { + const yMax = (_a = metrics.y_max) !== null && _a !== void 0 ? _a : 0; + acc = yMax < acc ? yMax : acc; + } + } + const resolution = this.textFormatter.getResolution(); + return i > 0 ? -1 * (acc / resolution) : 0; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + ctx.save(); + ctx.openGroup('chordsymbol', this.getAttribute('id')); + const start = note.getModifierStartXY(Modifier.Position.ABOVE, this.index); + ctx.setFont(this.textFont); + let y; + const hasStem = note.hasStem(); + const stave = note.checkStave(); + if (this.vertical === ChordSymbolVerticalJustify.BOTTOM) { + y = stave.getYForBottomText(this.text_line + Tables.TEXT_HEIGHT_OFFSET_HACK); + if (hasStem) { + const stem_ext = note.checkStem().getExtents(); + const spacing = stave.getSpacingBetweenLines(); + const stem_base = note.getStemDirection() === 1 ? stem_ext.baseY : stem_ext.topY; + y = Math.max(y, stem_base + spacing * (this.text_line + 2)); + } + } + else { + y = Math.min(stave.getYForTopText(this.text_line), note.getYs()[0] - 10); + if (hasStem) { + const stem_ext = note.checkStem().getExtents(); + const spacing = stave.getSpacingBetweenLines(); + y = Math.min(y, stem_ext.topY - 5 - spacing * this.text_line); + } + } + let x = start.x; + if (this.horizontal === ChordSymbolHorizontalJustify.LEFT) { + x = start.x; + } + else if (this.horizontal === ChordSymbolHorizontalJustify.RIGHT) { + x = start.x + this.getWidth(); + } + else if (this.horizontal === ChordSymbolHorizontalJustify.CENTER) { + x = start.x - this.getWidth() / 2; + } + else { + x = note.getStemX() - this.getWidth() / 2; + } + L('Rendering ChordSymbol: ', this.textFormatter, x, y); + this.symbolBlocks.forEach((symbol) => { + const isSuper = ChordSymbol.isSuperscript(symbol); + const isSub = ChordSymbol.isSubscript(symbol); + let curY = y; + L('shift was ', symbol.xShift, symbol.yShift); + L('curY pre sub ', curY); + if (isSuper) { + curY += this.superscriptOffset; + } + if (isSub) { + curY += this.subscriptOffset; + } + L('curY sup/sub ', curY); + if (symbol.symbolType === SymbolTypes.TEXT) { + if (isSuper || isSub) { + ctx.save(); + if (this.textFont) { + const { family, size, weight, style } = this.textFont; + const smallerFontSize = Font.scaleSize(size, ChordSymbol.superSubRatio); + ctx.setFont(family, smallerFontSize, weight, style); + } + } + L('Rendering Text: ', symbol.text, x + symbol.xShift, curY + symbol.yShift); + ctx.fillText(symbol.text, x + symbol.xShift, curY + symbol.yShift); + if (isSuper || isSub) { + ctx.restore(); + } + } + else if (symbol.symbolType === SymbolTypes.GLYPH && symbol.glyph) { + curY += symbol.yShift; + L('Rendering Glyph: ', symbol.glyph.code, x + symbol.xShift, curY); + symbol.glyph.render(ctx, x + symbol.xShift, curY); + } + else if (symbol.symbolType === SymbolTypes.LINE) { + L('Rendering Line : ', symbol.width, x, curY); + ctx.beginPath(); + ctx.setLineWidth(1); + ctx.moveTo(x, y); + ctx.lineTo(x + symbol.width, curY); + ctx.stroke(); + } + x += symbol.width; + if (symbol.vAlign) { + x += symbol.xShift; + } + }); + ctx.closeGroup(); + ctx.restore(); + } +} +ChordSymbol.DEBUG = false; +ChordSymbol.HorizontalJustify = ChordSymbolHorizontalJustify; +ChordSymbol.HorizontalJustifyString = { + left: ChordSymbolHorizontalJustify.LEFT, + right: ChordSymbolHorizontalJustify.RIGHT, + center: ChordSymbolHorizontalJustify.CENTER, + centerStem: ChordSymbolHorizontalJustify.CENTER_STEM, +}; +ChordSymbol.VerticalJustify = ChordSymbolVerticalJustify; +ChordSymbol.VerticalJustifyString = { + top: ChordSymbolVerticalJustify.TOP, + above: ChordSymbolVerticalJustify.TOP, + below: ChordSymbolVerticalJustify.BOTTOM, + bottom: ChordSymbolVerticalJustify.BOTTOM, +}; +ChordSymbol.glyphs = { + diminished: { + code: 'csymDiminished', + }, + dim: { + code: 'csymDiminished', + }, + halfDiminished: { + code: 'csymHalfDiminished', + }, + '+': { + code: 'csymAugmented', + }, + augmented: { + code: 'csymAugmented', + }, + majorSeventh: { + code: 'csymMajorSeventh', + }, + minor: { + code: 'csymMinor', + }, + '-': { + code: 'csymMinor', + }, + '(': { + code: 'csymParensLeftTall', + }, + leftParen: { + code: 'csymParensLeftTall', + }, + ')': { + code: 'csymParensRightTall', + }, + rightParen: { + code: 'csymParensRightTall', + }, + leftBracket: { + code: 'csymBracketLeftTall', + }, + rightBracket: { + code: 'csymBracketRightTall', + }, + leftParenTall: { + code: 'csymParensLeftVeryTall', + }, + rightParenTall: { + code: 'csymParensRightVeryTall', + }, + '/': { + code: 'csymDiagonalArrangementSlash', + }, + over: { + code: 'csymDiagonalArrangementSlash', + }, + '#': { + code: 'accidentalSharp', + }, + b: { + code: 'accidentalFlat', + }, +}; +ChordSymbol.symbolTypes = SymbolTypes; +ChordSymbol.symbolModifiers = SymbolModifiers; +ChordSymbol.noFormat = false; diff --git a/build/esm/src/clef.js b/build/esm/src/clef.js new file mode 100644 index 0000000000..b304c7ab83 --- /dev/null +++ b/build/esm/src/clef.js @@ -0,0 +1,153 @@ +import { Glyph } from './glyph.js'; +import { StaveModifier, StaveModifierPosition } from './stavemodifier.js'; +import { Tables } from './tables.js'; +import { defined, log } from './util.js'; +function L(...args) { + if (Clef.DEBUG) + log('Vex.Flow.Clef', args); +} +export class Clef extends StaveModifier { + constructor(type, size, annotation) { + super(); + this.clef = Clef.types['treble']; + this.setPosition(StaveModifierPosition.BEGIN); + this.setType(type, size, annotation); + this.setWidth(Tables.currentMusicFont().lookupMetric(`clef.${this.size}.width`)); + L('Creating clef:', type); + } + static get CATEGORY() { + return "Clef"; + } + static get types() { + return { + treble: { + code: 'gClef', + line: 3, + point: 0, + }, + bass: { + code: 'fClef', + line: 1, + point: 0, + }, + alto: { + code: 'cClef', + line: 2, + point: 0, + }, + tenor: { + code: 'cClef', + line: 1, + point: 0, + }, + percussion: { + code: 'restMaxima', + line: 2, + point: 0, + }, + soprano: { + code: 'cClef', + line: 4, + point: 0, + }, + 'mezzo-soprano': { + code: 'cClef', + line: 3, + point: 0, + }, + 'baritone-c': { + code: 'cClef', + line: 0, + point: 0, + }, + 'baritone-f': { + code: 'fClef', + line: 2, + point: 0, + }, + subbass: { + code: 'fClef', + line: 0, + point: 0, + }, + french: { + code: 'gClef', + line: 4, + point: 0, + }, + tab: { + code: '6stringTabClef', + point: 0, + }, + }; + } + setType(type, size, annotation) { + this.type = type; + this.clef = Clef.types[type]; + if (size === undefined) { + this.size = 'default'; + } + else { + this.size = size; + } + const musicFont = Tables.currentMusicFont(); + this.clef.point = musicFont.lookupMetric(`clef.${this.size}.point`, 0); + this.glyph = new Glyph(this.clef.code, this.clef.point, { + category: `clef.${this.clef.code}.${this.size}`, + }); + if (annotation !== undefined) { + const code = musicFont.lookupMetric(`clef.annotations.${annotation}.smuflCode`); + const point = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.point`); + const line = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.${this.type}.line`); + const x_shift = musicFont.lookupMetric(`clef.annotations.${annotation}.${this.size}.${this.type}.shiftX`); + this.annotation = { code, point, line, x_shift }; + this.attachment = new Glyph(this.annotation.code, this.annotation.point); + this.attachment.metrics.x_max = 0; + this.attachment.setXShift(this.annotation.x_shift); + } + else { + this.annotation = undefined; + } + return this; + } + getWidth() { + if (this.type === 'tab') { + defined(this.stave, 'ClefError', "Can't get width without stave."); + } + return this.width; + } + setStave(stave) { + this.stave = stave; + if (this.type === 'tab') { + const glyph = defined(this.glyph, 'ClefError', "Can't set stave without glyph."); + const numLines = this.stave.getNumLines(); + const musicFont = Tables.currentMusicFont(); + const point = musicFont.lookupMetric(`clef.lineCount.${numLines}.point`); + const shiftY = musicFont.lookupMetric(`clef.lineCount.${numLines}.shiftY`); + glyph.setPoint(point); + glyph.setYShift(shiftY); + } + return this; + } + draw() { + const glyph = defined(this.glyph, 'ClefError', "Can't draw clef without glyph."); + const stave = this.checkStave(); + const ctx = stave.checkContext(); + this.setRendered(); + ctx.openGroup('clef', this.getAttribute('id')); + glyph.setStave(stave); + glyph.setContext(ctx); + if (this.clef.line !== undefined) { + this.placeGlyphOnLine(glyph, stave, this.clef.line); + } + glyph.renderToStave(this.x); + if (this.annotation !== undefined && this.attachment !== undefined) { + this.placeGlyphOnLine(this.attachment, stave, this.annotation.line); + this.attachment.setStave(stave); + this.attachment.setContext(ctx); + this.attachment.renderToStave(this.x); + } + ctx.closeGroup(); + } +} +Clef.DEBUG = false; diff --git a/build/esm/src/clefnote.js b/build/esm/src/clefnote.js new file mode 100644 index 0000000000..656488eb62 --- /dev/null +++ b/build/esm/src/clefnote.js @@ -0,0 +1,65 @@ +import { Clef } from './clef.js'; +import { Glyph } from './glyph.js'; +import { Note } from './note.js'; +export class ClefNote extends Note { + constructor(type, size, annotation) { + super({ duration: 'b' }); + this.type = type; + this.clef_obj = new Clef(type, size, annotation); + this.clef = this.clef_obj.clef; + this.glyph = new Glyph(this.clef.code, this.clef.point); + this.setWidth(this.glyph.getMetrics().width); + this.ignore_ticks = true; + } + static get CATEGORY() { + return "ClefNote"; + } + setType(type, size, annotation) { + this.type = type; + this.clef_obj = new Clef(type, size, annotation); + this.clef = this.clef_obj.clef; + this.glyph = new Glyph(this.clef.code, this.clef.point); + this.setWidth(this.glyph.getMetrics().width); + return this; + } + getClef() { + return this.clef; + } + setContext(context) { + super.setContext(context); + this.glyph.setContext(this.getContext()); + return this; + } + getBoundingBox() { + return super.getBoundingBox(); + } + addToModifierContext(mc) { + return this; + } + preFormat() { + this.preFormatted = true; + return this; + } + draw() { + var _a; + const stave = this.checkStave(); + if (!this.glyph.getContext()) { + this.glyph.setContext(this.getContext()); + } + this.setRendered(); + const abs_x = this.getAbsoluteX(); + this.glyph.setStave(stave); + this.glyph.setYShift(stave.getYForLine((_a = this.clef.line) !== null && _a !== void 0 ? _a : 0) - stave.getYForGlyphs()); + this.glyph.renderToStave(abs_x); + if (this.clef_obj.annotation !== undefined) { + const attachment = new Glyph(this.clef_obj.annotation.code, this.clef_obj.annotation.point); + if (!attachment.getContext()) { + attachment.setContext(this.getContext()); + } + attachment.setStave(stave); + attachment.setYShift(stave.getYForLine(this.clef_obj.annotation.line) - stave.getYForGlyphs()); + attachment.setXShift(this.clef_obj.annotation.x_shift); + attachment.renderToStave(abs_x); + } + } +} diff --git a/build/esm/src/crescendo.js b/build/esm/src/crescendo.js new file mode 100644 index 0000000000..c70d3b7769 --- /dev/null +++ b/build/esm/src/crescendo.js @@ -0,0 +1,77 @@ +import { Note } from './note.js'; +import { TickContext } from './tickcontext.js'; +import { log } from './util.js'; +function L(...args) { + if (Crescendo.DEBUG) + log('Vex.Flow.Crescendo', args); +} +function renderHairpin(ctx, params) { + const begin_x = params.begin_x; + const end_x = params.end_x; + const y = params.y; + const half_height = params.height / 2; + ctx.beginPath(); + if (params.reverse) { + ctx.moveTo(begin_x, y - half_height); + ctx.lineTo(end_x, y); + ctx.lineTo(begin_x, y + half_height); + } + else { + ctx.moveTo(end_x, y - half_height); + ctx.lineTo(begin_x, y); + ctx.lineTo(end_x, y + half_height); + } + ctx.stroke(); + ctx.closePath(); +} +export class Crescendo extends Note { + constructor(noteStruct) { + super(noteStruct); + this.options = { + extend_left: 0, + extend_right: 0, + y_shift: 0, + }; + this.decrescendo = false; + this.line = noteStruct.line || 0; + this.height = 15; + } + static get CATEGORY() { + return "Crescendo"; + } + setLine(line) { + this.line = line; + return this; + } + setHeight(height) { + this.height = height; + return this; + } + setDecrescendo(decresc) { + this.decrescendo = decresc; + return this; + } + preFormat() { + this.preFormatted = true; + return this; + } + draw() { + const ctx = this.checkContext(); + const stave = this.checkStave(); + this.setRendered(); + const tick_context = this.getTickContext(); + const next_context = TickContext.getNextContext(tick_context); + const begin_x = this.getAbsoluteX(); + const end_x = next_context ? next_context.getX() : stave.getX() + stave.getWidth(); + const y = stave.getYForLine(this.line + -3) + 1; + L('Drawing ', this.decrescendo ? 'decrescendo ' : 'crescendo ', this.height, 'x', begin_x - end_x); + renderHairpin(ctx, { + begin_x: begin_x - this.options.extend_left, + end_x: end_x + this.options.extend_right, + y: y + this.options.y_shift, + height: this.height, + reverse: this.decrescendo, + }); + } +} +Crescendo.DEBUG = false; diff --git a/build/esm/src/curve.js b/build/esm/src/curve.js new file mode 100644 index 0000000000..0294f49b3b --- /dev/null +++ b/build/esm/src/curve.js @@ -0,0 +1,118 @@ +import { Element } from './element.js'; +import { RuntimeError } from './util.js'; +export var CurvePosition; +(function (CurvePosition) { + CurvePosition[CurvePosition["NEAR_HEAD"] = 1] = "NEAR_HEAD"; + CurvePosition[CurvePosition["NEAR_TOP"] = 2] = "NEAR_TOP"; +})(CurvePosition || (CurvePosition = {})); +export class Curve extends Element { + constructor(from, to, options) { + super(); + this.render_options = Object.assign({ thickness: 2, x_shift: 0, y_shift: 10, position: CurvePosition.NEAR_HEAD, position_end: CurvePosition.NEAR_HEAD, invert: false, cps: [ + { x: 0, y: 10 }, + { x: 0, y: 10 }, + ] }, options); + this.from = from; + this.to = to; + } + static get CATEGORY() { + return "Curve"; + } + static get Position() { + return CurvePosition; + } + static get PositionString() { + return { + nearHead: CurvePosition.NEAR_HEAD, + nearTop: CurvePosition.NEAR_TOP, + }; + } + setNotes(from, to) { + if (!from && !to) { + throw new RuntimeError('BadArguments', 'Curve needs to have either `from` or `to` set.'); + } + this.from = from; + this.to = to; + return this; + } + isPartial() { + return !this.from || !this.to; + } + renderCurve(params) { + const ctx = this.checkContext(); + const x_shift = this.render_options.x_shift; + const y_shift = this.render_options.y_shift * params.direction; + const first_x = params.first_x + x_shift; + const first_y = params.first_y + y_shift; + const last_x = params.last_x - x_shift; + const last_y = params.last_y + y_shift; + const thickness = this.render_options.thickness; + const cps = this.render_options.cps; + const { x: cp0x, y: cp0y } = cps[0]; + const { x: cp1x, y: cp1y } = cps[1]; + const cp_spacing = (last_x - first_x) / (cps.length + 2); + ctx.beginPath(); + ctx.moveTo(first_x, first_y); + ctx.bezierCurveTo(first_x + cp_spacing + cp0x, first_y + cp0y * params.direction, last_x - cp_spacing + cp1x, last_y + cp1y * params.direction, last_x, last_y); + ctx.bezierCurveTo(last_x - cp_spacing + cp1x, last_y + (cp1y + thickness) * params.direction, first_x + cp_spacing + cp0x, first_y + (cp0y + thickness) * params.direction, first_x, first_y); + ctx.stroke(); + ctx.closePath(); + ctx.fill(); + } + draw() { + this.checkContext(); + this.setRendered(); + const first_note = this.from; + const last_note = this.to; + let first_x; + let last_x; + let first_y; + let last_y; + let stem_direction = 0; + let metric = 'baseY'; + let end_metric = 'baseY'; + function getPosition(position) { + return typeof position === 'string' ? Curve.PositionString[position] : position; + } + const position = getPosition(this.render_options.position); + const position_end = getPosition(this.render_options.position_end); + if (position === CurvePosition.NEAR_TOP) { + metric = 'topY'; + end_metric = 'topY'; + } + if (position_end === CurvePosition.NEAR_HEAD) { + end_metric = 'baseY'; + } + else if (position_end === CurvePosition.NEAR_TOP) { + end_metric = 'topY'; + } + if (first_note) { + first_x = first_note.getTieRightX(); + stem_direction = first_note.getStemDirection(); + first_y = first_note.getStemExtents()[metric]; + } + else { + const stave = last_note.checkStave(); + first_x = stave.getTieStartX(); + first_y = last_note.getStemExtents()[metric]; + } + if (last_note) { + last_x = last_note.getTieLeftX(); + stem_direction = last_note.getStemDirection(); + last_y = last_note.getStemExtents()[end_metric]; + } + else { + const stave = first_note.checkStave(); + last_x = stave.getTieEndX(); + last_y = first_note.getStemExtents()[end_metric]; + } + this.renderCurve({ + first_x, + last_x, + first_y, + last_y, + direction: stem_direction * (this.render_options.invert === true ? -1 : 1), + }); + return true; + } +} diff --git a/build/esm/src/dot.js b/build/esm/src/dot.js new file mode 100644 index 0000000000..ce7a5d438b --- /dev/null +++ b/build/esm/src/dot.js @@ -0,0 +1,137 @@ +import { Modifier } from './modifier.js'; +import { isGraceNote, isStaveNote, isTabNote } from './typeguard.js'; +import { RuntimeError } from './util.js'; +export class Dot extends Modifier { + constructor() { + super(); + this.position = Modifier.Position.RIGHT; + this.radius = 2; + this.setWidth(5); + this.dot_shiftY = 0; + } + static get CATEGORY() { + return "Dot"; + } + static getDots(note) { + return note.getModifiersByType(Dot.CATEGORY); + } + static buildAndAttach(notes, options) { + for (const note of notes) { + if (options === null || options === void 0 ? void 0 : options.all) { + for (let i = 0; i < note.keys.length; i++) { + const dot = new Dot(); + dot.setDotShiftY(note.glyph.dot_shiftY); + note.addModifier(dot, i); + } + } + else if ((options === null || options === void 0 ? void 0 : options.index) != undefined) { + const dot = new Dot(); + dot.setDotShiftY(note.glyph.dot_shiftY); + note.addModifier(dot, options === null || options === void 0 ? void 0 : options.index); + } + else { + const dot = new Dot(); + dot.setDotShiftY(note.glyph.dot_shiftY); + note.addModifier(dot, 0); + } + } + } + static format(dots, state) { + const right_shift = state.right_shift; + const dot_spacing = 1; + if (!dots || dots.length === 0) + return false; + const dot_list = []; + const max_shift_map = {}; + for (let i = 0; i < dots.length; ++i) { + const dot = dots[i]; + const note = dot.getNote(); + let props; + let shift; + if (isStaveNote(note)) { + const index = dot.checkIndex(); + props = note.getKeyProps()[index]; + shift = note.getFirstDotPx(); + } + else if (isTabNote(note)) { + props = { line: 0.5 }; + shift = right_shift; + } + else { + throw new RuntimeError('Internal', 'Unexpected instance.'); + } + const note_id = note.getAttribute('id'); + dot_list.push({ line: props.line, note, note_id, dot }); + max_shift_map[note_id] = Math.max(max_shift_map[note_id] || shift, shift); + } + dot_list.sort((a, b) => b.line - a.line); + let dot_shift = right_shift; + let x_width = 0; + let last_line = null; + let last_note = null; + let prev_dotted_space = null; + let half_shiftY = 0; + for (let i = 0; i < dot_list.length; ++i) { + const { dot, note, note_id, line } = dot_list[i]; + if (line !== last_line || note !== last_note) { + dot_shift = max_shift_map[note_id]; + } + if (!note.isRest() && line !== last_line) { + if (Math.abs(line % 1) === 0.5) { + half_shiftY = 0; + } + else { + half_shiftY = 0.5; + if (last_note != null && !last_note.isRest() && last_line != null && last_line - line === 0.5) { + half_shiftY = -0.5; + } + else if (line + half_shiftY === prev_dotted_space) { + half_shiftY = -0.5; + } + } + } + if (note.isRest()) { + dot.dot_shiftY += -half_shiftY; + } + else { + dot.dot_shiftY = -half_shiftY; + } + prev_dotted_space = line + half_shiftY; + dot.setXShift(dot_shift); + dot_shift += dot.getWidth() + dot_spacing; + x_width = dot_shift > x_width ? dot_shift : x_width; + last_line = line; + last_note = note; + } + state.right_shift += x_width; + return true; + } + setNote(note) { + this.note = note; + if (isGraceNote(note)) { + this.radius *= 0.5; + this.setWidth(3); + } + return this; + } + setDotShiftY(y) { + this.dot_shiftY = y; + return this; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const stave = note.checkStave(); + const lineSpace = stave.getSpacingBetweenLines(); + const start = note.getModifierStartXY(this.position, this.index, { forceFlagRight: true }); + if (isTabNote(note)) { + start.y = note.getStemExtents().baseY; + } + const x = start.x + this.x_shift + this.width - this.radius; + const y = start.y + this.y_shift + this.dot_shiftY * lineSpace; + ctx.beginPath(); + ctx.arc(x, y, this.radius, 0, Math.PI * 2, false); + ctx.fill(); + } +} diff --git a/build/esm/src/easyscore.js b/build/esm/src/easyscore.js new file mode 100644 index 0000000000..16ed373f4f --- /dev/null +++ b/build/esm/src/easyscore.js @@ -0,0 +1,374 @@ +import { Articulation } from './articulation.js'; +import { Dot } from './dot.js'; +import { FretHandFinger } from './frethandfinger.js'; +import { Music } from './music.js'; +import { Parser } from './parser.js'; +import { Stem } from './stem.js'; +import { defined, log, RuntimeError } from './util.js'; +function L(...args) { + if (EasyScore.DEBUG) + log('Vex.Flow.EasyScore', args); +} +export class EasyScoreGrammar { + constructor(builder) { + this.builder = builder; + } + begin() { + return this.LINE; + } + LINE() { + return { + expect: [this.PIECE, this.PIECES, this.EOL], + }; + } + PIECE() { + return { + expect: [this.CHORDORNOTE, this.PARAMS], + run: () => this.builder.commitPiece(), + }; + } + PIECES() { + return { + expect: [this.COMMA, this.PIECE], + zeroOrMore: true, + }; + } + PARAMS() { + return { + expect: [this.DURATION, this.TYPE, this.DOTS, this.OPTS], + }; + } + CHORDORNOTE() { + return { + expect: [this.CHORD, this.SINGLENOTE], + or: true, + }; + } + CHORD() { + return { + expect: [this.LPAREN, this.NOTES, this.RPAREN], + run: (state) => this.builder.addChord(state.matches[1]), + }; + } + NOTES() { + return { + expect: [this.NOTE], + oneOrMore: true, + }; + } + NOTE() { + return { + expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE], + }; + } + SINGLENOTE() { + return { + expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE], + run: (state) => { + const s = state; + this.builder.addSingleNote(s.matches[0], s.matches[1], s.matches[2]); + }, + }; + } + ACCIDENTAL() { + return { + expect: [this.MICROTONES, this.ACCIDENTALS], + maybe: true, + or: true, + }; + } + DOTS() { + return { + expect: [this.DOT], + zeroOrMore: true, + run: (state) => this.builder.setNoteDots(state.matches), + }; + } + TYPE() { + return { + expect: [this.SLASH, this.MAYBESLASH, this.TYPES], + maybe: true, + run: (state) => this.builder.setNoteType(state.matches[2]), + }; + } + DURATION() { + return { + expect: [this.SLASH, this.DURATIONS], + maybe: true, + run: (state) => this.builder.setNoteDuration(state.matches[1]), + }; + } + OPTS() { + return { + expect: [this.LBRACKET, this.KEYVAL, this.KEYVALS, this.RBRACKET], + maybe: true, + }; + } + KEYVALS() { + return { + expect: [this.COMMA, this.KEYVAL], + zeroOrMore: true, + }; + } + KEYVAL() { + const unquote = (str) => str.slice(1, -1); + return { + expect: [this.KEY, this.EQUALS, this.VAL], + run: (state) => this.builder.addNoteOption(state.matches[0], unquote(state.matches[2])), + }; + } + VAL() { + return { + expect: [this.SVAL, this.DVAL], + or: true, + }; + } + KEY() { + return { token: '[a-zA-Z][a-zA-Z0-9]*' }; + } + DVAL() { + return { token: '["][^"]*["]' }; + } + SVAL() { + return { token: "['][^']*[']" }; + } + NOTENAME() { + return { token: '[a-gA-G]' }; + } + OCTAVE() { + return { token: '[0-9]+' }; + } + ACCIDENTALS() { + return { token: 'bb|b|##|#|n' }; + } + MICROTONES() { + return { token: 'bbs|bss|bs|db|d|\\+\\+-|\\+-|\\+\\+|\\+|k|o' }; + } + DURATIONS() { + return { token: '[0-9whq]+' }; + } + TYPES() { + return { token: '[rRsSmMhHgG]' }; + } + LPAREN() { + return { token: '[(]' }; + } + RPAREN() { + return { token: '[)]' }; + } + COMMA() { + return { token: '[,]' }; + } + DOT() { + return { token: '[.]' }; + } + SLASH() { + return { token: '[/]' }; + } + MAYBESLASH() { + return { token: '[/]?' }; + } + EQUALS() { + return { token: '[=]' }; + } + LBRACKET() { + return { token: '\\[' }; + } + RBRACKET() { + return { token: '\\]' }; + } + EOL() { + return { token: '$' }; + } +} +export class Piece { + constructor(duration) { + this.chord = []; + this.dots = 0; + this.options = {}; + this.duration = duration; + } +} +export class Builder { + constructor(factory) { + this.commitHooks = []; + this.factory = factory; + this.reset(); + } + reset(options) { + this.options = Object.assign({ stem: 'auto', clef: 'treble' }, options); + this.elements = { notes: [], accidentals: [] }; + this.rollingDuration = '8'; + this.resetPiece(); + } + getFactory() { + return this.factory; + } + getElements() { + return this.elements; + } + addCommitHook(commitHook) { + this.commitHooks.push(commitHook); + } + resetPiece() { + L('resetPiece'); + this.piece = new Piece(this.rollingDuration); + } + setNoteDots(dots) { + L('setNoteDots:', dots); + if (dots) + this.piece.dots = dots.length; + } + setNoteDuration(duration) { + L('setNoteDuration:', duration); + this.rollingDuration = this.piece.duration = duration || this.rollingDuration; + } + setNoteType(type) { + L('setNoteType:', type); + if (type) + this.piece.type = type; + } + addNoteOption(key, value) { + L('addNoteOption: key:', key, 'value:', value); + this.piece.options[key] = value; + } + addNote(key, accid, octave) { + L('addNote:', key, accid, octave); + this.piece.chord.push({ + key: key, + accid, + octave, + }); + } + addSingleNote(key, accid, octave) { + L('addSingleNote:', key, accid, octave); + this.addNote(key, accid, octave); + } + addChord(notes) { + L('startChord'); + if (typeof notes[0] !== 'object') { + this.addSingleNote(notes[0]); + } + else { + notes.forEach((n) => { + if (n) + this.addNote(...n); + }); + } + L('endChord'); + } + commitPiece() { + L('commitPiece'); + const { factory } = this; + if (!factory) + return; + const options = Object.assign(Object.assign({}, this.options), this.piece.options); + const stem = defined(options.stem, 'BadArguments', 'options.stem is not defined').toLowerCase(); + const clef = defined(options.clef, 'BadArguments', 'options.clef is not defined').toLowerCase(); + const { chord, duration, dots, type } = this.piece; + const standardAccidentals = Music.accidentals; + const keys = chord.map((notePiece) => { + var _a; + return notePiece.key + + (standardAccidentals.includes((_a = notePiece.accid) !== null && _a !== void 0 ? _a : '') ? notePiece.accid : '') + + '/' + + notePiece.octave; + }); + const auto_stem = stem === 'auto'; + const note = (type === null || type === void 0 ? void 0 : type.toLowerCase()) == 'g' + ? factory.GhostNote({ duration, dots }) + : factory.StaveNote({ keys, duration, dots, type, clef, auto_stem }); + if (!auto_stem) + note.setStemDirection(stem === 'up' ? Stem.UP : Stem.DOWN); + const accidentals = []; + chord.forEach((notePiece, index) => { + const accid = notePiece.accid; + if (typeof accid === 'string') { + const accidental = factory.Accidental({ type: accid }); + note.addModifier(accidental, index); + accidentals.push(accidental); + } + else { + accidentals.push(undefined); + } + }); + for (let i = 0; i < dots; i++) + Dot.buildAndAttach([note], { all: true }); + this.commitHooks.forEach((commitHook) => commitHook(options, note, this)); + this.elements.notes.push(note); + this.elements.accidentals.push(accidentals); + this.resetPiece(); + } +} +function setId(options, note) { + if (options.id === undefined) + return; + note.setAttribute('id', options.id); +} +const commaSeparatedRegex = /\s*,\s*/; +function setClass(options, note) { + if (options.class === undefined) + return; + options.class.split(commaSeparatedRegex).forEach((className) => note.addClass(className)); +} +export class EasyScore { + constructor(options = {}) { + this.defaults = { + clef: 'treble', + time: '4/4', + stem: 'auto', + }; + this.setOptions(options); + } + set(defaults) { + this.defaults = Object.assign(Object.assign({}, this.defaults), defaults); + return this; + } + setOptions(options) { + var _a, _b; + const factory = options.factory; + const builder = (_a = options.builder) !== null && _a !== void 0 ? _a : new Builder(factory); + this.options = Object.assign(Object.assign({ commitHooks: [setId, setClass, Articulation.easyScoreHook, FretHandFinger.easyScoreHook], throwOnError: false }, options), { factory, + builder }); + this.factory = factory; + this.builder = builder; + this.grammar = new EasyScoreGrammar(this.builder); + this.parser = new Parser(this.grammar); + (_b = this.options.commitHooks) === null || _b === void 0 ? void 0 : _b.forEach((commitHook) => this.addCommitHook(commitHook)); + return this; + } + setContext(context) { + this.factory.setContext(context); + return this; + } + parse(line, options = {}) { + this.builder.reset(options); + const result = this.parser.parse(line); + if (!result.success && this.options.throwOnError) { + L(result); + throw new RuntimeError('Error parsing line: ' + line); + } + return result; + } + beam(notes, options) { + this.factory.Beam({ notes, options }); + return notes; + } + tuplet(notes, options) { + this.factory.Tuplet({ notes, options }); + return notes; + } + notes(line, options = {}) { + options = Object.assign({ clef: this.defaults.clef, stem: this.defaults.stem }, options); + this.parse(line, options); + return this.builder.getElements().notes; + } + voice(notes, options = {}) { + options = Object.assign({ time: this.defaults.time }, options); + return this.factory.Voice(options).addTickables(notes); + } + addCommitHook(commitHook) { + this.builder.addCommitHook(commitHook); + } +} +EasyScore.DEBUG = false; diff --git a/build/esm/src/element.js b/build/esm/src/element.js new file mode 100644 index 0000000000..2cc1ada025 --- /dev/null +++ b/build/esm/src/element.js @@ -0,0 +1,232 @@ +import { Font, FontStyle, FontWeight } from './font.js'; +import { Registry } from './registry.js'; +import { defined, prefix } from './util.js'; +export class Element { + constructor() { + var _a; + this.children = []; + this.attrs = { + id: Element.newID(), + el: undefined, + type: this.getCategory(), + classes: {}, + }; + this.rendered = false; + (_a = Registry.getDefaultRegistry()) === null || _a === void 0 ? void 0 : _a.register(this); + } + static get CATEGORY() { + return "Element"; + } + static newID() { + return `auto${Element.ID++}`; + } + addChildElement(child) { + this.children.push(child); + return this; + } + getCategory() { + return this.constructor.CATEGORY; + } + setStyle(style) { + this.style = style; + return this; + } + setGroupStyle(style) { + this.style = style; + this.children.forEach((child) => child.setGroupStyle(style)); + return this; + } + getStyle() { + return this.style; + } + applyStyle(context = this.context, style = this.getStyle()) { + if (!style) + return this; + if (!context) + return this; + context.save(); + if (style.shadowColor) + context.setShadowColor(style.shadowColor); + if (style.shadowBlur) + context.setShadowBlur(style.shadowBlur); + if (style.fillStyle) + context.setFillStyle(style.fillStyle); + if (style.strokeStyle) + context.setStrokeStyle(style.strokeStyle); + if (style.lineWidth) + context.setLineWidth(style.lineWidth); + return this; + } + restoreStyle(context = this.context, style = this.getStyle()) { + if (!style) + return this; + if (!context) + return this; + context.restore(); + return this; + } + drawWithStyle() { + this.checkContext(); + this.applyStyle(); + this.draw(); + this.restoreStyle(); + } + hasClass(className) { + return this.attrs.classes[className] === true; + } + addClass(className) { + var _a; + this.attrs.classes[className] = true; + (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({ + id: this.attrs.id, + name: 'class', + value: className, + oldValue: undefined, + }); + return this; + } + removeClass(className) { + var _a; + delete this.attrs.classes[className]; + (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({ + id: this.attrs.id, + name: 'class', + value: undefined, + oldValue: className, + }); + return this; + } + onRegister(registry) { + this.registry = registry; + return this; + } + isRendered() { + return this.rendered; + } + setRendered(rendered = true) { + this.rendered = rendered; + return this; + } + getAttributes() { + return this.attrs; + } + getAttribute(name) { + return this.attrs[name]; + } + getSVGElement(suffix = '') { + const id = prefix(this.attrs.id + suffix); + const element = document.getElementById(id); + if (element) + return element; + } + setAttribute(name, value) { + var _a; + const oldID = this.attrs.id; + const oldValue = this.attrs[name]; + this.attrs[name] = value; + (_a = this.registry) === null || _a === void 0 ? void 0 : _a.onUpdate({ id: oldID, name, value, oldValue }); + return this; + } + getBoundingBox() { + return this.boundingBox; + } + getContext() { + return this.context; + } + setContext(context) { + this.context = context; + return this; + } + checkContext() { + return defined(this.context, 'NoContext', 'No rendering context attached to instance.'); + } + set font(f) { + this.setFont(f); + } + get font() { + return Font.toCSSString(this.textFont); + } + setFont(font, size, weight, style) { + const defaultTextFont = this.constructor.TEXT_FONT; + const fontIsObject = typeof font === 'object'; + const fontIsString = typeof font === 'string'; + const fontIsUndefined = font === undefined; + const sizeWeightStyleAreUndefined = size === undefined && weight === undefined && style === undefined; + if (fontIsObject) { + this.textFont = Object.assign(Object.assign({}, defaultTextFont), font); + } + else if (fontIsString && sizeWeightStyleAreUndefined) { + this.textFont = Font.fromCSSString(font); + } + else if (fontIsUndefined && sizeWeightStyleAreUndefined) { + this.textFont = Object.assign({}, defaultTextFont); + } + else { + this.textFont = Font.validate(font !== null && font !== void 0 ? font : defaultTextFont.family, size !== null && size !== void 0 ? size : defaultTextFont.size, weight !== null && weight !== void 0 ? weight : defaultTextFont.weight, style !== null && style !== void 0 ? style : defaultTextFont.style); + } + return this; + } + getFont() { + if (!this.textFont) { + this.resetFont(); + } + return Font.toCSSString(this.textFont); + } + resetFont() { + this.setFont(); + } + get fontInfo() { + if (!this.textFont) { + this.resetFont(); + } + return Object.assign({}, this.textFont); + } + set fontInfo(fontInfo) { + this.setFont(fontInfo); + } + setFontSize(size) { + const fontInfo = this.fontInfo; + this.setFont(fontInfo.family, size, fontInfo.weight, fontInfo.style); + return this; + } + getFontSize() { + return this.fontSize; + } + set fontSize(size) { + this.setFontSize(size); + } + get fontSize() { + let size = this.fontInfo.size; + if (typeof size === 'number') { + size = `${size}pt`; + } + return size; + } + get fontSizeInPoints() { + return Font.convertSizeToPointValue(this.fontSize); + } + get fontSizeInPixels() { + return Font.convertSizeToPixelValue(this.fontSize); + } + get fontStyle() { + return this.fontInfo.style; + } + set fontStyle(style) { + const fontInfo = this.fontInfo; + this.setFont(fontInfo.family, fontInfo.size, fontInfo.weight, style); + } + get fontWeight() { + return this.fontInfo.weight + ''; + } + set fontWeight(weight) { + const fontInfo = this.fontInfo; + this.setFont(fontInfo.family, fontInfo.size, weight, fontInfo.style); + } +} +Element.ID = 1000; +Element.TEXT_FONT = { + family: Font.SANS_SERIF, + size: Font.SIZE, + weight: FontWeight.NORMAL, + style: FontStyle.NORMAL, +}; diff --git a/build/esm/src/factory.js b/build/esm/src/factory.js new file mode 100644 index 0000000000..0198135531 --- /dev/null +++ b/build/esm/src/factory.js @@ -0,0 +1,463 @@ +import { Accidental } from './accidental.js'; +import { Annotation, AnnotationHorizontalJustify, AnnotationVerticalJustify } from './annotation.js'; +import { Articulation } from './articulation.js'; +import { BarNote } from './barnote.js'; +import { Beam } from './beam.js'; +import { ChordSymbol } from './chordsymbol.js'; +import { ClefNote } from './clefnote.js'; +import { Curve } from './curve.js'; +import { EasyScore } from './easyscore.js'; +import { Element } from './element.js'; +import { Formatter } from './formatter.js'; +import { FretHandFinger } from './frethandfinger.js'; +import { GhostNote } from './ghostnote.js'; +import { GlyphNote } from './glyphnote.js'; +import { GraceNote } from './gracenote.js'; +import { GraceNoteGroup } from './gracenotegroup.js'; +import { KeySigNote } from './keysignote.js'; +import { ModifierContext } from './modifiercontext.js'; +import { MultiMeasureRest } from './multimeasurerest.js'; +import { NoteSubGroup } from './notesubgroup.js'; +import { Ornament } from './ornament.js'; +import { PedalMarking } from './pedalmarking.js'; +import { Renderer } from './renderer.js'; +import { RepeatNote } from './repeatnote.js'; +import { Stave } from './stave.js'; +import { StaveConnector } from './staveconnector.js'; +import { StaveLine } from './staveline.js'; +import { StaveNote } from './stavenote.js'; +import { StaveTie } from './stavetie.js'; +import { StringNumber } from './stringnumber.js'; +import { System } from './system.js'; +import { TabNote } from './tabnote.js'; +import { TabStave } from './tabstave.js'; +import { TextBracket } from './textbracket.js'; +import { TextDynamics } from './textdynamics.js'; +import { TextNote } from './textnote.js'; +import { TickContext } from './tickcontext.js'; +import { TimeSigNote } from './timesignote.js'; +import { Tuplet } from './tuplet.js'; +import { defined, log, RuntimeError } from './util.js'; +import { VibratoBracket } from './vibratobracket.js'; +import { Voice } from './voice.js'; +import { isHTMLCanvas } from './web.js'; +function L(...args) { + if (Factory.DEBUG) + log('Vex.Flow.Factory', args); +} +export class Factory { + constructor(options = {}) { + L('New factory: ', options); + this.options = { + stave: { + space: 10, + }, + renderer: { + elementId: '', + width: 500, + height: 200, + background: '#FFF', + }, + font: Factory.TEXT_FONT, + }; + this.setOptions(options); + } + static newFromElementId(elementId, width = 500, height = 200) { + return new Factory({ renderer: { elementId, width, height } }); + } + reset() { + this.renderQ = []; + this.systems = []; + this.staves = []; + this.voices = []; + this.stave = undefined; + } + setOptions(options) { + this.options = Object.assign(Object.assign({}, this.options), options); + this.initRenderer(); + this.reset(); + } + initRenderer() { + const { elementId, width, height, background } = this.options.renderer; + if (elementId == null) { + return; + } + if (elementId == '') { + L(this); + throw new RuntimeError('renderer.elementId not set in FactoryOptions'); + } + let backend = this.options.renderer.backend; + if (backend === undefined) { + const elem = document.getElementById(elementId); + if (isHTMLCanvas(elem)) { + backend = Renderer.Backends.CANVAS; + } + else { + backend = Renderer.Backends.SVG; + } + } + this.context = Renderer.buildContext(elementId, backend, width, height, background); + } + getContext() { + return this.context; + } + setContext(context) { + this.context = context; + return this; + } + getStave() { + return this.stave; + } + getVoices() { + return this.voices; + } + Stave(params) { + const staveSpace = this.options.stave.space; + const p = Object.assign({ x: 0, y: 0, width: this.options.renderer.width - staveSpace * 1.0, options: { spacing_between_lines_px: staveSpace * 1.0 } }, params); + const stave = new Stave(p.x, p.y, p.width, p.options); + this.staves.push(stave); + stave.setContext(this.context); + this.stave = stave; + return stave; + } + TabStave(params) { + const staveSpace = this.options.stave.space; + const p = Object.assign({ x: 0, y: 0, width: this.options.renderer.width - staveSpace * 1.0, options: { spacing_between_lines_px: staveSpace * 1.3 } }, params); + const stave = new TabStave(p.x, p.y, p.width, p.options); + this.staves.push(stave); + stave.setContext(this.context); + this.stave = stave; + return stave; + } + StaveNote(noteStruct) { + const note = new StaveNote(noteStruct); + if (this.stave) + note.setStave(this.stave); + note.setContext(this.context); + this.renderQ.push(note); + return note; + } + GlyphNote(glyph, noteStruct, options) { + const note = new GlyphNote(glyph, noteStruct, options); + if (this.stave) + note.setStave(this.stave); + note.setContext(this.context); + this.renderQ.push(note); + return note; + } + RepeatNote(type, noteStruct, options) { + const note = new RepeatNote(type, noteStruct, options); + if (this.stave) + note.setStave(this.stave); + note.setContext(this.context); + this.renderQ.push(note); + return note; + } + GhostNote(noteStruct) { + const ghostNote = new GhostNote(noteStruct); + if (this.stave) + ghostNote.setStave(this.stave); + ghostNote.setContext(this.context); + this.renderQ.push(ghostNote); + return ghostNote; + } + TextNote(noteStruct) { + const textNote = new TextNote(noteStruct); + if (this.stave) + textNote.setStave(this.stave); + textNote.setContext(this.context); + this.renderQ.push(textNote); + return textNote; + } + BarNote(params = {}) { + const barNote = new BarNote(params.type); + if (this.stave) + barNote.setStave(this.stave); + barNote.setContext(this.context); + this.renderQ.push(barNote); + return barNote; + } + ClefNote(params) { + const p = Object.assign({ type: 'treble', options: { + size: 'default', + annotation: undefined, + } }, params); + const clefNote = new ClefNote(p.type, p.options.size, p.options.annotation); + if (this.stave) + clefNote.setStave(this.stave); + clefNote.setContext(this.context); + this.renderQ.push(clefNote); + return clefNote; + } + TimeSigNote(params) { + const p = Object.assign({ time: '4/4' }, params); + const timeSigNote = new TimeSigNote(p.time); + if (this.stave) + timeSigNote.setStave(this.stave); + timeSigNote.setContext(this.context); + this.renderQ.push(timeSigNote); + return timeSigNote; + } + KeySigNote(params) { + const keySigNote = new KeySigNote(params.key, params.cancelKey, params.alterKey); + if (this.stave) + keySigNote.setStave(this.stave); + keySigNote.setContext(this.context); + this.renderQ.push(keySigNote); + return keySigNote; + } + TabNote(noteStruct) { + const note = new TabNote(noteStruct); + if (this.stave) + note.setStave(this.stave); + note.setContext(this.context); + this.renderQ.push(note); + return note; + } + GraceNote(noteStruct) { + const note = new GraceNote(noteStruct); + if (this.stave) + note.setStave(this.stave); + note.setContext(this.context); + return note; + } + GraceNoteGroup(params) { + const group = new GraceNoteGroup(params.notes, params.slur); + group.setContext(this.context); + return group; + } + Accidental(params) { + const accid = new Accidental(params.type); + accid.setContext(this.context); + return accid; + } + Annotation(params) { + const p = Object.assign({ text: 'p', hJustify: AnnotationHorizontalJustify.CENTER, vJustify: AnnotationVerticalJustify.BOTTOM }, params); + const annotation = new Annotation(p.text); + annotation.setJustification(p.hJustify); + annotation.setVerticalJustification(p.vJustify); + annotation.setFont(p.font); + annotation.setContext(this.context); + return annotation; + } + ChordSymbol(params) { + const p = Object.assign({ vJustify: 'top', hJustify: 'center', kerning: true, reportWidth: true }, params); + const chordSymbol = new ChordSymbol(); + chordSymbol.setHorizontal(p.hJustify); + chordSymbol.setVertical(p.vJustify); + chordSymbol.setEnableKerning(p.kerning); + chordSymbol.setReportWidth(p.reportWidth); + if (typeof p.fontFamily === 'string' && typeof p.fontSize === 'number') { + if (typeof p.fontWeight === 'string') + chordSymbol.setFont(p.fontFamily, p.fontSize, p.fontWeight); + else + chordSymbol.setFont(p.fontFamily, p.fontSize, ''); + } + else if (typeof p.fontSize === 'number') { + chordSymbol.setFontSize(p.fontSize); + } + chordSymbol.setContext(this.context); + return chordSymbol; + } + Articulation(params) { + const p = Object.assign({ type: 'a.', position: 'above' }, params); + const articulation = new Articulation(p.type); + articulation.setPosition(p.position); + articulation.setContext(this.context); + return articulation; + } + Ornament(type, params) { + const options = Object.assign({ type, position: 0, accidental: '' }, params); + const ornament = new Ornament(type); + ornament.setPosition(options.position); + if (options.upperAccidental) { + ornament.setUpperAccidental(options.upperAccidental); + } + if (options.lowerAccidental) { + ornament.setLowerAccidental(options.lowerAccidental); + } + if (typeof options.delayed !== 'undefined') { + ornament.setDelayed(options.delayed); + } + ornament.setContext(this.context); + return ornament; + } + TextDynamics(params) { + const p = Object.assign({ text: 'p', duration: 'q', dots: 0, line: 0 }, params); + const text = new TextDynamics({ + text: p.text, + line: p.line, + duration: p.duration, + dots: p.dots, + }); + if (this.stave) + text.setStave(this.stave); + text.setContext(this.context); + this.renderQ.push(text); + return text; + } + Fingering(params) { + const p = Object.assign({ number: '0', position: 'left' }, params); + const fingering = new FretHandFinger(p.number); + fingering.setPosition(p.position); + fingering.setContext(this.context); + return fingering; + } + StringNumber(params, drawCircle = true) { + const stringNumber = new StringNumber(params.number); + stringNumber.setPosition(params.position); + stringNumber.setContext(this.context); + stringNumber.setDrawCircle(drawCircle); + return stringNumber; + } + TickContext() { + return new TickContext(); + } + ModifierContext() { + return new ModifierContext(); + } + MultiMeasureRest(params) { + const numMeasures = defined(params.number_of_measures, 'NoNumberOfMeasures'); + const multiMeasureRest = new MultiMeasureRest(numMeasures, params); + multiMeasureRest.setContext(this.context); + this.renderQ.push(multiMeasureRest); + return multiMeasureRest; + } + Voice(params) { + const p = Object.assign({ time: '4/4' }, params); + const voice = new Voice(p.time); + this.voices.push(voice); + return voice; + } + StaveConnector(params) { + const connector = new StaveConnector(params.top_stave, params.bottom_stave); + connector.setType(params.type).setContext(this.context); + this.renderQ.push(connector); + return connector; + } + Formatter(options) { + return new Formatter(options); + } + Tuplet(params) { + const p = Object.assign({ notes: [], options: {} }, params); + const tuplet = new Tuplet(p.notes, p.options).setContext(this.context); + this.renderQ.push(tuplet); + return tuplet; + } + Beam(params) { + var _a, _b, _c, _d, _e; + const beam = new Beam(params.notes, (_a = params.options) === null || _a === void 0 ? void 0 : _a.autoStem).setContext(this.context); + beam.breakSecondaryAt((_c = (_b = params.options) === null || _b === void 0 ? void 0 : _b.secondaryBeamBreaks) !== null && _c !== void 0 ? _c : []); + if ((_d = params.options) === null || _d === void 0 ? void 0 : _d.partialBeamDirections) { + Object.entries((_e = params.options) === null || _e === void 0 ? void 0 : _e.partialBeamDirections).forEach(([noteIndex, direction]) => { + beam.setPartialBeamSideAt(Number(noteIndex), direction); + }); + } + this.renderQ.push(beam); + return beam; + } + Curve(params) { + const curve = new Curve(params.from, params.to, params.options).setContext(this.context); + this.renderQ.push(curve); + return curve; + } + StaveTie(params) { + var _a; + const tie = new StaveTie({ + first_note: params.from, + last_note: params.to, + first_indices: params.first_indices, + last_indices: params.last_indices, + }, params.text); + if ((_a = params.options) === null || _a === void 0 ? void 0 : _a.direction) + tie.setDirection(params.options.direction); + tie.setContext(this.context); + this.renderQ.push(tie); + return tie; + } + StaveLine(params) { + var _a, _b; + const line = new StaveLine({ + first_note: params.from, + last_note: params.to, + first_indices: params.first_indices, + last_indices: params.last_indices, + }); + if ((_a = params.options) === null || _a === void 0 ? void 0 : _a.text) + line.setText(params.options.text); + if ((_b = params.options) === null || _b === void 0 ? void 0 : _b.font) + line.setFont(params.options.font); + line.setContext(this.context); + this.renderQ.push(line); + return line; + } + VibratoBracket(params) { + const vibratoBracket = new VibratoBracket({ + start: params.from, + stop: params.to, + }); + if (params.options.line) + vibratoBracket.setLine(params.options.line); + if (params.options.harsh) + vibratoBracket.setHarsh(params.options.harsh); + vibratoBracket.setContext(this.context); + this.renderQ.push(vibratoBracket); + return vibratoBracket; + } + TextBracket(params) { + const textBracket = new TextBracket({ + start: params.from, + stop: params.to, + text: params.text, + superscript: params.options.superscript, + position: params.options.position, + }); + if (params.options.line) + textBracket.setLine(params.options.line); + if (params.options.font) + textBracket.setFont(params.options.font); + textBracket.setContext(this.context); + this.renderQ.push(textBracket); + return textBracket; + } + System(params = {}) { + params.factory = this; + const system = new System(params).setContext(this.context); + this.systems.push(system); + return system; + } + EasyScore(options = {}) { + options.factory = this; + return new EasyScore(options); + } + PedalMarking(params) { + const p = Object.assign({ notes: [], options: { + style: 'mixed', + } }, params); + const pedal = new PedalMarking(p.notes); + pedal.setType(PedalMarking.typeString[p.options.style]); + pedal.setContext(this.context); + this.renderQ.push(pedal); + return pedal; + } + NoteSubGroup(params) { + const p = Object.assign({ notes: [] }, params); + const group = new NoteSubGroup(p.notes); + group.setContext(this.context); + return group; + } + draw() { + const ctx = this.context; + this.systems.forEach((s) => s.setContext(ctx).format()); + this.staves.forEach((s) => s.setContext(ctx).draw()); + this.voices.forEach((v) => v.setContext(ctx).draw()); + this.renderQ.forEach((e) => { + if (!e.isRendered()) + e.setContext(ctx).draw(); + }); + this.systems.forEach((s) => s.setContext(ctx).draw()); + this.reset(); + } +} +Factory.DEBUG = false; +Factory.TEXT_FONT = Object.assign({}, Element.TEXT_FONT); diff --git a/build/esm/src/flow.js b/build/esm/src/flow.js new file mode 100644 index 0000000000..09a4d4c3d3 --- /dev/null +++ b/build/esm/src/flow.js @@ -0,0 +1,300 @@ +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +import { Accidental } from './accidental.js'; +import { Annotation, AnnotationHorizontalJustify, AnnotationVerticalJustify } from './annotation.js'; +import { Articulation } from './articulation.js'; +import { BarNote } from './barnote.js'; +import { Beam } from './beam.js'; +import { Bend } from './bend.js'; +import { BoundingBox } from './boundingbox.js'; +import { BoundingBoxComputation } from './boundingboxcomputation.js'; +import { CanvasContext } from './canvascontext.js'; +import { ChordSymbol, ChordSymbolHorizontalJustify, ChordSymbolVerticalJustify, SymbolModifiers, SymbolTypes, } from './chordsymbol.js'; +import { Clef } from './clef.js'; +import { ClefNote } from './clefnote.js'; +import { Crescendo } from './crescendo.js'; +import { Curve, CurvePosition } from './curve.js'; +import { Dot } from './dot.js'; +import { EasyScore } from './easyscore.js'; +import { Element } from './element.js'; +import { Factory } from './factory.js'; +import { Font, FontStyle, FontWeight } from './font.js'; +import { Formatter } from './formatter.js'; +import { Fraction } from './fraction.js'; +import { FretHandFinger } from './frethandfinger.js'; +import { GhostNote } from './ghostnote.js'; +import { Glyph } from './glyph.js'; +import { GlyphNote } from './glyphnote.js'; +import { GraceNote } from './gracenote.js'; +import { GraceNoteGroup } from './gracenotegroup.js'; +import { GraceTabNote } from './gracetabnote.js'; +import { KeyManager } from './keymanager.js'; +import { KeySignature } from './keysignature.js'; +import { KeySigNote } from './keysignote.js'; +import { Modifier, ModifierPosition } from './modifier.js'; +import { ModifierContext } from './modifiercontext.js'; +import { MultiMeasureRest } from './multimeasurerest.js'; +import { Music } from './music.js'; +import { Note } from './note.js'; +import { NoteHead } from './notehead.js'; +import { NoteSubGroup } from './notesubgroup.js'; +import { Ornament } from './ornament.js'; +import { Parenthesis } from './parenthesis.js'; +import { Parser } from './parser.js'; +import { PedalMarking } from './pedalmarking.js'; +import { Registry } from './registry.js'; +import { RenderContext } from './rendercontext.js'; +import { Renderer, RendererBackends, RendererLineEndType } from './renderer.js'; +import { RepeatNote } from './repeatnote.js'; +import { Stave } from './stave.js'; +import { Barline, BarlineType } from './stavebarline.js'; +import { StaveConnector } from './staveconnector.js'; +import { StaveHairpin } from './stavehairpin.js'; +import { StaveLine } from './staveline.js'; +import { StaveModifier, StaveModifierPosition } from './stavemodifier.js'; +import { StaveNote } from './stavenote.js'; +import { Repetition } from './staverepetition.js'; +import { StaveTempo } from './stavetempo.js'; +import { StaveText } from './stavetext.js'; +import { StaveTie } from './stavetie.js'; +import { Volta, VoltaType } from './stavevolta.js'; +import { Stem } from './stem.js'; +import { StringNumber } from './stringnumber.js'; +import { Stroke } from './strokes.js'; +import { SVGContext } from './svgcontext.js'; +import { System } from './system.js'; +import { Tables } from './tables.js'; +import { TabNote } from './tabnote.js'; +import { TabSlide } from './tabslide.js'; +import { TabStave } from './tabstave.js'; +import { TabTie } from './tabtie.js'; +import { TextBracket, TextBracketPosition } from './textbracket.js'; +import { TextDynamics } from './textdynamics.js'; +import { TextFormatter } from './textformatter.js'; +import { TextJustification, TextNote } from './textnote.js'; +import { TickContext } from './tickcontext.js'; +import { TimeSignature } from './timesignature.js'; +import { TimeSigNote } from './timesignote.js'; +import { Tremolo } from './tremolo.js'; +import { Tuning } from './tuning.js'; +import { Tuplet } from './tuplet.js'; +import { DATE, ID, VERSION } from './version.js'; +import { Vibrato } from './vibrato.js'; +import { VibratoBracket } from './vibratobracket.js'; +import { Voice, VoiceMode } from './voice.js'; +export class Flow { + static get BUILD() { + return { + VERSION: VERSION, + ID: ID, + DATE: DATE, + }; + } + static setMusicFont(...fontNames) { + const fonts = fontNames.map((fontName) => Font.load(fontName)); + Tables.MUSIC_FONT_STACK = fonts; + Glyph.MUSIC_FONT_STACK = fonts.slice(); + Glyph.CURRENT_CACHE_KEY = fontNames.join(','); + return fonts; + } + static fetchMusicFont(fontName, fontModuleOrPath) { + return __awaiter(this, void 0, void 0, function* () { + }); + } + static getMusicFont() { + const fonts = Tables.MUSIC_FONT_STACK; + return fonts.map((font) => font.getName()); + } + static get RENDER_PRECISION_PLACES() { + return Tables.RENDER_PRECISION_PLACES; + } + static set RENDER_PRECISION_PLACES(precision) { + Tables.RENDER_PRECISION_PLACES = precision; + } + static get SOFTMAX_FACTOR() { + return Tables.SOFTMAX_FACTOR; + } + static set SOFTMAX_FACTOR(factor) { + Tables.SOFTMAX_FACTOR = factor; + } + static get NOTATION_FONT_SCALE() { + return Tables.NOTATION_FONT_SCALE; + } + static set NOTATION_FONT_SCALE(value) { + Tables.NOTATION_FONT_SCALE = value; + } + static get TABLATURE_FONT_SCALE() { + return Tables.TABLATURE_FONT_SCALE; + } + static set TABLATURE_FONT_SCALE(value) { + Tables.TABLATURE_FONT_SCALE = value; + } + static get RESOLUTION() { + return Tables.RESOLUTION; + } + static set RESOLUTION(value) { + Tables.RESOLUTION = value; + } + static get SLASH_NOTEHEAD_WIDTH() { + return Tables.SLASH_NOTEHEAD_WIDTH; + } + static set SLASH_NOTEHEAD_WIDTH(value) { + Tables.SLASH_NOTEHEAD_WIDTH = value; + } + static get STAVE_LINE_DISTANCE() { + return Tables.STAVE_LINE_DISTANCE; + } + static set STAVE_LINE_DISTANCE(value) { + Tables.STAVE_LINE_DISTANCE = value; + } + static get STAVE_LINE_THICKNESS() { + return Tables.STAVE_LINE_THICKNESS; + } + static set STAVE_LINE_THICKNESS(value) { + Tables.STAVE_LINE_THICKNESS = value; + } + static get STEM_HEIGHT() { + return Tables.STEM_HEIGHT; + } + static set STEM_HEIGHT(value) { + Tables.STEM_HEIGHT = value; + } + static get STEM_WIDTH() { + return Tables.STEM_WIDTH; + } + static set STEM_WIDTH(value) { + Tables.STEM_WIDTH = value; + } + static get TIME4_4() { + return Tables.TIME4_4; + } + static get accidentalMap() { + return Tables.accidentalMap; + } + static get unicode() { + return Tables.unicode; + } + static keySignature(spec) { + return Tables.keySignature(spec); + } + static hasKeySignature(spec) { + return Tables.hasKeySignature(spec); + } + static getKeySignatures() { + return Tables.getKeySignatures(); + } + static clefProperties(clef) { + return Tables.clefProperties(clef); + } + static keyProperties(key, clef, params) { + return Tables.keyProperties(key, clef, params); + } + static durationToTicks(duration) { + return Tables.durationToTicks(duration); + } +} +Flow.Accidental = Accidental; +Flow.Annotation = Annotation; +Flow.Articulation = Articulation; +Flow.Barline = Barline; +Flow.BarNote = BarNote; +Flow.Beam = Beam; +Flow.Bend = Bend; +Flow.BoundingBox = BoundingBox; +Flow.BoundingBoxComputation = BoundingBoxComputation; +Flow.CanvasContext = CanvasContext; +Flow.ChordSymbol = ChordSymbol; +Flow.Clef = Clef; +Flow.ClefNote = ClefNote; +Flow.Crescendo = Crescendo; +Flow.Curve = Curve; +Flow.Dot = Dot; +Flow.EasyScore = EasyScore; +Flow.Element = Element; +Flow.Factory = Factory; +Flow.Font = Font; +Flow.Formatter = Formatter; +Flow.Fraction = Fraction; +Flow.FretHandFinger = FretHandFinger; +Flow.GhostNote = GhostNote; +Flow.Glyph = Glyph; +Flow.GlyphNote = GlyphNote; +Flow.GraceNote = GraceNote; +Flow.GraceNoteGroup = GraceNoteGroup; +Flow.GraceTabNote = GraceTabNote; +Flow.KeyManager = KeyManager; +Flow.KeySignature = KeySignature; +Flow.KeySigNote = KeySigNote; +Flow.Modifier = Modifier; +Flow.ModifierContext = ModifierContext; +Flow.MultiMeasureRest = MultiMeasureRest; +Flow.Music = Music; +Flow.Note = Note; +Flow.NoteHead = NoteHead; +Flow.NoteSubGroup = NoteSubGroup; +Flow.Ornament = Ornament; +Flow.Parenthesis = Parenthesis; +Flow.Parser = Parser; +Flow.PedalMarking = PedalMarking; +Flow.Registry = Registry; +Flow.RenderContext = RenderContext; +Flow.Renderer = Renderer; +Flow.RepeatNote = RepeatNote; +Flow.Repetition = Repetition; +Flow.Stave = Stave; +Flow.StaveConnector = StaveConnector; +Flow.StaveHairpin = StaveHairpin; +Flow.StaveLine = StaveLine; +Flow.StaveModifier = StaveModifier; +Flow.StaveNote = StaveNote; +Flow.StaveTempo = StaveTempo; +Flow.StaveText = StaveText; +Flow.StaveTie = StaveTie; +Flow.Stem = Stem; +Flow.StringNumber = StringNumber; +Flow.Stroke = Stroke; +Flow.SVGContext = SVGContext; +Flow.System = System; +Flow.TabNote = TabNote; +Flow.TabSlide = TabSlide; +Flow.TabStave = TabStave; +Flow.TabTie = TabTie; +Flow.TextBracket = TextBracket; +Flow.TextDynamics = TextDynamics; +Flow.TextFormatter = TextFormatter; +Flow.TextNote = TextNote; +Flow.TickContext = TickContext; +Flow.TimeSignature = TimeSignature; +Flow.TimeSigNote = TimeSigNote; +Flow.Tremolo = Tremolo; +Flow.Tuning = Tuning; +Flow.Tuplet = Tuplet; +Flow.Vibrato = Vibrato; +Flow.VibratoBracket = VibratoBracket; +Flow.Voice = Voice; +Flow.Volta = Volta; +Flow.AnnotationHorizontalJustify = AnnotationHorizontalJustify; +Flow.AnnotationVerticalJustify = AnnotationVerticalJustify; +Flow.ChordSymbolHorizontalJustify = ChordSymbolHorizontalJustify; +Flow.ChordSymbolVerticalJustify = ChordSymbolVerticalJustify; +Flow.SymbolTypes = SymbolTypes; +Flow.SymbolModifiers = SymbolModifiers; +Flow.CurvePosition = CurvePosition; +Flow.FontWeight = FontWeight; +Flow.FontStyle = FontStyle; +Flow.ModifierPosition = ModifierPosition; +Flow.RendererBackends = RendererBackends; +Flow.RendererLineEndType = RendererLineEndType; +Flow.BarlineType = BarlineType; +Flow.StaveModifierPosition = StaveModifierPosition; +Flow.VoltaType = VoltaType; +Flow.TextBracketPosition = TextBracketPosition; +Flow.TextJustification = TextJustification; +Flow.VoiceMode = VoiceMode; diff --git a/build/esm/src/font.js b/build/esm/src/font.js new file mode 100644 index 0000000000..b9f37a8b23 --- /dev/null +++ b/build/esm/src/font.js @@ -0,0 +1,262 @@ +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +import { defined } from './util.js'; +export var FontWeight; +(function (FontWeight) { + FontWeight["NORMAL"] = "normal"; + FontWeight["BOLD"] = "bold"; +})(FontWeight || (FontWeight = {})); +export var FontStyle; +(function (FontStyle) { + FontStyle["NORMAL"] = "normal"; + FontStyle["ITALIC"] = "italic"; +})(FontStyle || (FontStyle = {})); +let fontParser; +const Fonts = {}; +export class Font { + constructor(fontName) { + this.name = fontName; + } + static convertSizeToPixelValue(fontSize = Font.SIZE) { + var _a; + if (typeof fontSize === 'number') { + return fontSize * Font.scaleToPxFrom.pt; + } + else { + const value = parseFloat(fontSize); + if (isNaN(value)) { + return 0; + } + const unit = fontSize.replace(/[\d.\s]/g, '').toLowerCase(); + const conversionFactor = (_a = Font.scaleToPxFrom[unit]) !== null && _a !== void 0 ? _a : 1; + return value * conversionFactor; + } + } + static convertSizeToPointValue(fontSize = Font.SIZE) { + var _a; + if (typeof fontSize === 'number') { + return fontSize; + } + else { + const value = parseFloat(fontSize); + if (isNaN(value)) { + return 0; + } + const unit = fontSize.replace(/[\d.\s]/g, '').toLowerCase(); + const conversionFactor = ((_a = Font.scaleToPxFrom[unit]) !== null && _a !== void 0 ? _a : 1) / Font.scaleToPxFrom.pt; + return value * conversionFactor; + } + } + static validate(f, size, weight, style) { + if (typeof f === 'string' && size === undefined && weight === undefined && style === undefined) { + return Font.fromCSSString(f); + } + let family; + if (typeof f === 'object') { + family = f.family; + size = f.size; + weight = f.weight; + style = f.style; + } + else { + family = f; + } + family = family !== null && family !== void 0 ? family : Font.SANS_SERIF; + size = size !== null && size !== void 0 ? size : Font.SIZE + 'pt'; + weight = weight !== null && weight !== void 0 ? weight : FontWeight.NORMAL; + style = style !== null && style !== void 0 ? style : FontStyle.NORMAL; + if (weight === '') { + weight = FontWeight.NORMAL; + } + if (style === '') { + style = FontStyle.NORMAL; + } + if (typeof size === 'number') { + size = `${size}pt`; + } + if (typeof weight === 'number') { + weight = weight.toString(); + } + return { family, size, weight, style }; + } + static fromCSSString(cssFontShorthand) { + if (!fontParser) { + fontParser = document.createElement('span'); + } + fontParser.style.font = cssFontShorthand; + const { fontFamily, fontSize, fontWeight, fontStyle } = fontParser.style; + return { family: fontFamily, size: fontSize, weight: fontWeight, style: fontStyle }; + } + static toCSSString(fontInfo) { + var _a; + if (!fontInfo) { + return ''; + } + let style; + const st = fontInfo.style; + if (st === FontStyle.NORMAL || st === '' || st === undefined) { + style = ''; + } + else { + style = st.trim() + ' '; + } + let weight; + const wt = fontInfo.weight; + if (wt === FontWeight.NORMAL || wt === '' || wt === undefined) { + weight = ''; + } + else if (typeof wt === 'number') { + weight = wt + ' '; + } + else { + weight = wt.trim() + ' '; + } + let size; + const sz = fontInfo.size; + if (sz === undefined) { + size = Font.SIZE + 'pt '; + } + else if (typeof sz === 'number') { + size = sz + 'pt '; + } + else { + size = sz.trim() + ' '; + } + const family = (_a = fontInfo.family) !== null && _a !== void 0 ? _a : Font.SANS_SERIF; + return `${style}${weight}${size}${family}`; + } + static scaleSize(fontSize, scaleFactor) { + if (typeof fontSize === 'number') { + return (fontSize * scaleFactor); + } + else { + const value = parseFloat(fontSize); + const unit = fontSize.replace(/[\d.\s]/g, ''); + return `${value * scaleFactor}${unit}`; + } + } + static isBold(weight) { + if (!weight) { + return false; + } + else if (typeof weight === 'number') { + return weight >= 600; + } + else { + const parsedWeight = parseInt(weight, 10); + if (isNaN(parsedWeight)) { + return weight.toLowerCase() === 'bold'; + } + else { + return parsedWeight >= 600; + } + } + } + static isItalic(style) { + if (!style) { + return false; + } + else { + return style.toLowerCase() === FontStyle.ITALIC; + } + } + static loadWebFont(fontName, woffURL, includeWoff2 = true) { + return __awaiter(this, void 0, void 0, function* () { + const woff2URL = includeWoff2 ? `url(${woffURL}2) format('woff2'), ` : ''; + const woff1URL = `url(${woffURL}) format('woff')`; + const woffURLs = woff2URL + woff1URL; + const fontFace = new FontFace(fontName, woffURLs); + yield fontFace.load(); + document.fonts.add(fontFace); + return fontFace; + }); + } + static loadWebFonts() { + return __awaiter(this, void 0, void 0, function* () { + const host = Font.WEB_FONT_HOST; + const files = Font.WEB_FONT_FILES; + for (const fontName in files) { + const fontPath = files[fontName]; + Font.loadWebFont(fontName, host + fontPath); + } + }); + } + static load(fontName, data, metrics) { + let font = Fonts[fontName]; + if (!font) { + font = new Font(fontName); + Fonts[fontName] = font; + } + if (data) { + font.setData(data); + } + if (metrics) { + font.setMetrics(metrics); + } + return font; + } + getName() { + return this.name; + } + getData() { + return defined(this.data, 'FontError', 'Missing font data'); + } + getMetrics() { + return defined(this.metrics, 'FontError', 'Missing metrics'); + } + setData(data) { + this.data = data; + } + setMetrics(metrics) { + this.metrics = metrics; + } + hasData() { + return this.data !== undefined; + } + getResolution() { + return this.getData().resolution; + } + getGlyphs() { + return this.getData().glyphs; + } + lookupMetric(key, defaultValue) { + const keyParts = key.split('.'); + let currObj = this.getMetrics(); + for (let i = 0; i < keyParts.length; i++) { + const keyPart = keyParts[i]; + const value = currObj[keyPart]; + if (value === undefined) { + return defaultValue; + } + currObj = value; + } + return currObj; + } + toString() { + return '[' + this.name + ' Font]'; + } +} +Font.SANS_SERIF = 'Arial, sans-serif'; +Font.SERIF = 'Times New Roman, serif'; +Font.SIZE = 10; +Font.scaleToPxFrom = { + pt: 4 / 3, + px: 1, + em: 16, + '%': 4 / 25, + in: 96, + mm: 96 / 25.4, + cm: 96 / 2.54, +}; +Font.WEB_FONT_HOST = 'https://unpkg.com/vexflow-fonts@1.0.3/'; +Font.WEB_FONT_FILES = { + 'Roboto Slab': 'robotoslab/RobotoSlab-Medium_2.001.woff', + PetalumaScript: 'petaluma/PetalumaScript_1.10_FS.woff', +}; diff --git a/build/esm/src/fonts/bravura_glyphs.js b/build/esm/src/fonts/bravura_glyphs.js new file mode 100644 index 0000000000..b64f5b7199 --- /dev/null +++ b/build/esm/src/fonts/bravura_glyphs.js @@ -0,0 +1,3519 @@ +export const BravuraFont = { + glyphs: { + bracketTop: { + x_min: 0, + x_max: 469, + y_min: 0, + y_max: 295, + ha: 295, + o: 'm 0 0 l 180 0 b 674 390 410 43 616 150 b 675 405 675 396 675 400 b 664 425 675 416 671 422 b 628 405 651 425 635 415 b 157 179 613 389 432 199 l 12 179 b 0 168 3 179 0 177 z', + }, + bracketBottom: { + x_min: 0, + x_max: 469, + y_min: -295, + y_max: 0, + ha: 295, + o: 'm 0 -168 b 12 -179 0 -177 3 -179 l 157 -179 b 628 -405 432 -199 613 -389 b 664 -425 635 -415 651 -425 b 675 -405 671 -422 675 -416 b 674 -390 675 -400 675 -396 b 180 0 616 -150 410 -43 l 0 0 z', + }, + barlineTick: { + x_min: 0, + x_max: 36, + y_min: 868, + y_max: 1120, + ha: 252, + o: 'm 52 1250 l 52 1613 l 0 1613 l 0 1250 z', + }, + breathMarkTick: { + x_min: 0, + x_max: 500, + y_min: 0, + y_max: 502, + ha: 502, + o: 'm 9 367 b 0 374 6 372 3 374 b 9 334 0 367 0 343 b 179 19 40 312 164 121 b 192 0 179 3 186 0 b 210 19 197 0 207 6 b 698 701 245 197 507 658 b 720 714 714 704 720 711 b 698 723 720 720 711 723 b 197 186 455 714 210 202 b 186 176 194 179 189 176 b 176 186 179 176 176 186 b 9 367 143 266 27 359 z', + }, + segno: { + x_min: 4, + x_max: 550, + y_min: -27, + y_max: 759, + ha: 786, + o: 'm 194 958 b 217 939 203 958 213 955 l 220 929 b 325 805 230 890 252 805 b 425 901 384 805 425 840 b 413 969 425 923 420 946 b 220 1060 390 1035 294 1060 b 6 793 120 1060 6 936 b 29 687 6 759 13 723 b 295 449 75 582 284 454 b 304 438 301 446 304 444 b 295 415 304 432 301 425 b 78 22 285 395 78 22 b 73 3 75 16 73 9 b 114 -39 73 -20 91 -39 b 150 -17 128 -39 143 -30 b 377 395 150 -17 373 386 b 395 402 377 393 389 402 b 704 176 416 397 704 312 b 621 75 704 120 670 82 l 616 73 b 562 138 586 73 562 94 l 562 154 b 485 249 562 209 526 249 b 468 246 480 249 474 248 b 366 153 415 233 366 210 b 540 -12 366 65 455 -12 b 600 -1 559 -12 579 -9 b 792 251 716 37 792 131 b 789 292 792 264 791 278 b 523 588 768 451 540 579 b 498 611 505 598 498 603 b 501 619 498 613 500 616 b 732 1032 508 631 732 1032 b 737 1053 736 1040 737 1045 b 697 1093 737 1076 719 1093 b 661 1073 683 1093 668 1086 b 423 647 661 1073 432 660 b 410 635 419 639 416 635 b 396 639 406 635 402 636 b 128 792 383 644 166 727 b 108 868 120 808 108 838 b 186 958 108 907 125 948 z m 598 671 b 680 589 598 626 635 589 b 762 671 726 589 762 626 b 680 753 762 717 726 753 b 598 671 635 753 598 717 z m 202 380 b 120 462 202 425 166 462 b 37 380 75 462 37 425 b 120 298 37 334 75 298 b 202 380 166 298 202 334 z', + }, + coda: { + x_min: -4, + x_max: 955, + y_min: -158, + y_max: 898, + ha: 1056, + o: 'm 1349 576 l 1178 576 b 729 1083 1164 847 962 1064 l 729 1269 b 694 1293 729 1287 713 1293 b 660 1269 675 1293 660 1287 l 660 1083 b 210 576 426 1064 226 848 l 20 576 b -6 541 0 576 -6 560 b 20 507 -6 523 0 507 l 210 507 b 660 0 226 238 426 19 l 660 -202 b 694 -228 660 -222 675 -228 b 729 -202 713 -228 729 -222 l 729 0 b 1178 507 962 19 1164 238 l 1349 507 b 1375 541 1369 507 1375 523 b 1349 576 1375 560 1369 576 z m 940 576 l 729 576 l 729 1002 b 940 576 930 985 940 809 z m 660 1002 l 660 576 l 455 576 b 660 1002 455 809 455 985 z m 455 507 l 660 507 l 660 69 b 455 507 474 91 456 285 z m 729 69 l 729 507 l 940 507 b 729 69 936 287 909 91 z', + }, + gClef: { + x_min: 0, + x_max: 671, + y_min: -658, + y_max: 1098, + ha: 1756, + o: 'm 541 598 b 550 625 539 615 541 616 b 824 1174 706 770 824 953 b 730 1509 824 1299 789 1423 b 655 1581 708 1541 671 1581 b 562 1512 635 1581 590 1544 b 420 1064 455 1394 420 1214 b 441 828 420 981 431 887 b 428 793 444 811 445 808 b 0 125 220 622 0 416 b 524 -363 0 -125 171 -363 b 624 -354 557 -363 595 -360 b 645 -367 639 -351 642 -350 b 684 -657 662 -464 684 -589 b 455 -896 684 -870 540 -896 b 340 -854 377 -896 340 -873 b 386 -829 340 -844 353 -840 b 482 -694 431 -816 482 -778 b 344 -547 482 -615 432 -547 b 190 -713 248 -547 190 -624 b 464 -948 190 -806 246 -948 b 747 -660 560 -948 747 -904 b 706 -351 747 -577 721 -441 b 724 -327 703 -334 704 -336 b 966 16 870 -269 966 -147 b 619 363 966 200 831 363 b 577 389 582 363 582 363 z m 677 1358 b 763 1240 724 1358 763 1319 b 513 851 763 1080 626 950 b 494 863 503 842 497 844 b 485 995 488 900 485 949 b 677 1358 485 1220 589 1358 z m 520 377 b 498 343 524 350 524 351 b 289 63 372 300 289 186 b 455 -192 289 -66 357 -158 b 494 -200 467 -196 484 -200 b 511 -184 505 -200 511 -193 b 490 -166 511 -174 500 -170 b 386 -12 429 -140 386 -78 b 530 157 386 71 442 132 b 559 145 553 163 556 161 l 631 -284 b 611 -304 634 -300 632 -300 b 530 -311 588 -308 559 -311 b 115 29 278 -311 115 -171 b 249 363 115 114 130 228 b 469 567 336 459 402 513 b 490 562 484 579 487 577 z m 619 148 b 635 168 616 166 618 170 b 848 -66 752 158 848 60 b 713 -271 848 -157 793 -230 b 690 -262 696 -279 693 -279 z', + }, + cClef: { + x_min: 0, + x_max: 699, + y_min: -506, + y_max: 506, + ha: 1012, + o: 'm 331 694 b 301 724 331 714 321 724 l 300 724 b 269 694 279 724 269 714 l 269 -694 b 300 -724 269 -714 279 -724 l 301 -724 b 331 -694 321 -724 331 -714 l 331 -63 b 344 -55 331 -52 338 -53 b 472 -265 382 -65 442 -102 b 500 -301 477 -288 485 -301 b 530 -262 516 -301 523 -287 b 684 -128 549 -199 582 -128 b 804 -409 778 -128 804 -220 b 651 -683 804 -598 770 -683 b 528 -644 631 -683 528 -674 b 567 -622 528 -636 552 -628 b 625 -528 596 -612 625 -583 b 527 -429 625 -465 583 -429 b 416 -547 465 -429 416 -471 b 667 -729 416 -638 495 -729 b 1007 -413 903 -729 1007 -563 b 706 -76 1007 -215 897 -76 b 618 -89 664 -76 636 -84 b 576 -88 603 -94 589 -96 b 524 0 556 -75 524 -29 b 576 88 524 29 556 75 b 618 89 589 96 603 94 b 706 76 636 84 664 76 b 1007 413 897 76 1007 215 b 667 729 1007 563 903 729 b 416 547 495 729 416 638 b 527 429 416 471 465 429 b 625 528 583 429 625 465 b 567 622 625 583 596 612 b 528 644 552 628 528 636 b 651 683 528 674 631 683 b 804 409 770 683 804 598 b 684 128 804 220 778 128 b 530 262 582 128 549 199 b 500 301 523 287 516 301 b 472 265 485 301 477 288 b 344 55 442 102 382 65 b 331 63 338 53 331 52 z m 30 724 b 0 694 10 724 0 714 l 0 -694 b 30 -724 0 -714 10 -724 l 154 -724 b 184 -694 174 -724 184 -714 l 184 694 b 154 724 184 714 174 724 z', + }, + fClef: { + x_min: -5, + x_max: 684, + y_min: -635, + y_max: 262, + ha: 897, + o: 'm 363 377 b 0 56 112 377 0 194 b 177 -158 0 -59 60 -158 b 330 -6 268 -158 330 -95 b 192 144 330 86 262 144 b 120 134 153 144 138 134 b 96 160 101 134 96 145 b 330 323 96 217 183 323 b 549 -53 482 323 549 173 b 14 -871 549 -455 350 -680 b -7 -897 1 -878 -7 -886 b 12 -914 -7 -906 -1 -914 b 36 -907 19 -914 27 -912 b 765 -40 390 -734 765 -478 b 363 377 765 210 612 377 z m 906 259 b 827 180 861 259 827 225 b 906 101 827 135 861 101 b 985 180 950 101 985 135 b 906 259 985 225 950 259 z m 907 -102 b 829 -180 863 -102 829 -135 b 907 -258 829 -225 863 -258 b 985 -180 952 -258 985 -225 b 907 -102 985 -135 952 -102 z', + }, + unpitchedPercussionClef1: { + x_min: 0, + x_max: 382, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 230 -338 l 230 338 b 210 360 230 350 222 360 l 20 360 b 0 338 9 360 0 350 l 0 -338 b 20 -360 0 -350 9 -360 l 210 -360 b 230 -338 222 -360 230 -350 z m 550 338 b 530 360 550 350 541 360 l 340 360 b 320 338 328 360 320 350 l 320 -338 b 340 -360 320 -350 328 -360 l 530 -360 b 550 -338 541 -360 550 -350 z', + }, + '6stringTabClef': { + x_min: -3, + x_max: 408, + y_min: -748, + y_max: 764, + ha: 1512, + o: 'm 557 1024 l 557 1100 l 26 1100 l 26 1024 l 249 1024 l 249 422 l 336 422 l 336 1024 z m 588 -328 l 350 348 l 238 348 l -4 -328 l 88 -328 l 160 -125 l 420 -125 l 491 -328 z m 397 -52 l 181 -52 l 292 256 z m 544 -883 b 420 -719 544 -802 507 -752 b 514 -572 482 -690 514 -639 b 314 -399 514 -472 442 -399 l 39 -399 l 39 -1077 l 344 -1077 b 544 -883 467 -1077 544 -995 z m 428 -583 b 292 -691 428 -652 389 -691 l 125 -691 l 125 -475 l 292 -475 b 428 -583 389 -475 428 -514 z m 458 -884 b 337 -1001 458 -949 418 -1001 l 125 -1001 l 125 -768 l 337 -768 b 458 -884 418 -768 458 -818 z', + }, + timeSig0: { + x_min: 20, + x_max: 450, + y_min: -250, + y_max: 251, + ha: 501, + o: 'm 648 0 b 338 361 648 200 510 361 b 29 0 167 361 29 200 b 338 -360 29 -199 167 -360 b 648 0 510 -360 648 -199 z m 338 317 b 446 10 397 317 446 180 b 338 -295 446 -158 397 -295 b 230 10 278 -295 230 -158 b 338 317 230 180 278 317 z', + }, + timeSig1: { + x_min: 20, + x_max: 314, + y_min: -250, + y_max: 251, + ha: 501, + o: 'm 35 19 b 29 0 35 19 29 10 b 45 -20 29 -7 33 -16 b 58 -23 50 -22 56 -23 b 78 -10 72 -23 78 -10 b 156 117 78 -10 140 89 b 170 131 161 127 167 131 b 179 111 176 131 179 120 l 179 -261 b 115 -315 179 -294 145 -315 b 91 -337 105 -315 91 -320 b 122 -360 91 -353 104 -360 l 429 -360 b 452 -337 452 -360 452 -337 b 431 -315 452 -337 452 -315 b 384 -265 410 -315 384 -289 l 384 328 b 356 361 384 351 376 360 b 281 356 336 361 300 356 b 206 360 253 356 228 357 b 199 361 203 360 200 361 b 173 334 184 361 179 347 z', + }, + timeSig2: { + x_min: 20, + x_max: 426, + y_min: -257, + y_max: 254, + ha: 511, + o: 'm 606 -131 b 589 -111 606 -114 599 -111 b 570 -127 577 -111 573 -117 l 569 -128 b 513 -192 554 -164 543 -192 b 488 -187 505 -192 498 -190 b 445 -171 469 -180 459 -179 b 289 -137 416 -160 348 -137 b 236 -145 271 -137 252 -140 b 422 -42 268 -94 390 -50 b 613 147 523 -14 613 27 b 330 366 613 300 464 366 b 69 275 229 366 140 357 b 29 170 45 245 29 209 b 42 108 29 150 33 130 b 160 29 63 63 108 29 b 261 156 248 29 261 120 b 161 275 261 242 161 246 b 275 330 164 295 190 330 b 405 192 403 330 405 233 b 193 -102 405 60 297 -39 b 33 -317 114 -153 58 -223 l 32 -321 b 69 -370 32 -340 48 -370 b 203 -282 101 -370 118 -282 b 410 -360 261 -282 282 -360 b 606 -131 472 -360 583 -354 z', + }, + timeSig3: { + x_min: 20, + x_max: 401, + y_min: -251, + y_max: 249, + ha: 500, + o: 'm 307 357 b 301 357 305 357 304 357 l 291 359 b 285 359 289 359 287 359 b 37 200 161 359 37 276 b 154 84 37 153 65 89 l 161 84 b 256 177 225 84 256 130 l 256 189 b 209 248 252 242 216 245 b 180 268 202 251 180 248 l 180 274 b 240 310 183 298 228 310 b 374 199 363 310 374 233 l 374 189 b 199 36 374 82 289 40 b 164 12 184 35 164 27 b 200 -6 164 -6 189 -6 b 379 -137 366 -6 379 -118 b 269 -307 379 -289 301 -307 b 256 -305 264 -307 258 -305 b 216 -282 245 -304 217 -304 l 216 -275 b 249 -180 216 -243 248 -222 b 145 -76 249 -120 207 -76 b 130 -78 140 -76 135 -76 b 60 -115 105 -82 78 -96 b 29 -203 36 -137 29 -171 b 275 -361 32 -315 134 -359 l 288 -361 b 577 -161 431 -361 577 -288 l 577 -151 b 537 -50 575 -109 564 -82 b 503 -20 528 -39 517 -29 l 472 -3 l 425 10 b 410 17 418 12 413 12 b 409 24 409 20 409 22 b 415 37 409 30 410 36 b 459 50 431 42 446 43 b 547 181 517 78 547 115 b 307 357 547 314 367 353 z', + }, + timeSig4: { + x_min: 20, + x_max: 450, + y_min: -250, + y_max: 251, + ha: 501, + o: 'm 521 -107 l 521 202 b 504 226 521 213 520 226 b 475 213 491 226 484 223 l 338 48 b 325 14 333 40 325 32 l 325 -107 l 131 -107 b 481 336 246 -9 477 318 l 482 340 b 461 361 482 353 472 361 b 363 359 448 361 389 359 b 261 361 337 359 272 361 b 228 334 248 361 228 357 b 43 -105 228 156 86 -45 l 35 -117 b 35 -118 35 -117 35 -118 l 33 -120 b 29 -137 30 -127 29 -132 b 58 -161 29 -151 40 -161 l 325 -161 l 325 -252 b 268 -302 325 -291 294 -302 b 235 -330 245 -302 235 -315 b 262 -360 235 -344 240 -360 l 569 -360 b 598 -330 583 -360 598 -350 b 566 -301 598 -310 580 -301 b 521 -246 552 -301 521 -292 l 521 -161 l 626 -161 b 648 -134 641 -161 648 -151 b 626 -107 648 -117 642 -107 z', + }, + timeSig5: { + x_min: 20, + x_max: 383, + y_min: -251, + y_max: 246, + ha: 497, + o: 'm 109 85 b 117 179 109 85 115 166 b 138 197 118 190 125 197 l 144 197 b 285 184 158 194 226 184 b 492 323 485 184 492 300 b 472 353 492 341 488 353 b 295 340 454 353 341 340 b 101 354 249 340 125 351 b 66 330 75 354 68 341 l 50 10 l 50 7 b 79 -14 50 -12 65 -14 b 111 14 94 -14 95 -1 b 209 62 125 29 160 62 b 357 -125 258 62 357 35 b 235 -304 357 -284 272 -304 b 202 -300 223 -304 212 -304 b 184 -279 194 -295 186 -289 b 202 -259 184 -269 194 -264 b 256 -163 235 -239 256 -203 b 144 -50 256 -99 206 -50 b 30 -157 66 -50 35 -107 b 29 -183 29 -166 29 -174 b 284 -361 29 -302 107 -361 b 552 -125 456 -361 552 -255 b 314 112 552 6 445 112 b 122 71 230 112 168 98 b 115 69 120 69 117 69 b 109 79 109 69 109 75 z', + }, + timeSig6: { + x_min: 20, + x_max: 414, + y_min: -249, + y_max: 251, + ha: 500, + o: 'm 439 120 b 554 229 500 120 554 167 b 553 245 554 235 554 239 b 348 361 539 337 426 361 b 85 209 239 360 137 307 b 29 4 53 148 29 72 l 29 -1 b 73 -200 30 -68 42 -143 b 324 -359 132 -307 203 -359 b 513 -307 389 -359 461 -348 b 596 -137 563 -266 596 -202 b 379 72 596 -24 490 72 b 248 22 333 72 285 55 b 239 19 245 19 242 19 b 226 53 230 19 226 30 b 346 327 230 320 315 327 b 393 305 374 327 393 320 b 357 251 393 285 366 268 b 347 209 350 238 347 223 b 369 150 347 187 354 166 b 439 120 379 131 420 120 z m 320 3 b 405 -158 366 3 405 -69 b 320 -320 405 -248 366 -320 b 236 -158 274 -320 236 -248 b 320 3 236 -69 274 3 z', + }, + timeSig7: { + x_min: 20, + x_max: 421, + y_min: -250, + y_max: 249, + ha: 499, + o: 'm 606 294 b 582 351 606 333 606 351 b 552 336 580 351 557 346 b 485 236 541 318 521 236 b 262 359 449 236 382 359 b 137 307 179 359 157 325 b 98 281 117 288 108 282 b 60 315 86 281 68 301 b 43 325 58 321 50 325 b 29 308 36 325 29 321 l 29 71 b 45 48 29 71 30 48 b 66 76 56 48 60 60 b 164 196 81 112 99 196 b 374 88 222 196 291 88 b 446 118 415 88 435 109 b 459 124 451 121 456 124 b 469 111 465 124 468 120 b 272 -112 469 71 359 -10 b 173 -315 217 -176 173 -259 b 200 -360 173 -346 173 -360 b 294 -347 226 -360 258 -347 b 412 -360 330 -347 397 -360 b 435 -307 426 -360 435 -348 b 606 288 435 -66 606 140 z', + }, + timeSig8: { + x_min: 20, + x_max: 416, + y_min: -259, + y_max: 259, + ha: 518, + o: 'm 481 52 b 567 204 533 85 567 132 b 317 373 567 351 356 373 b 36 176 150 373 36 297 b 161 -16 36 76 92 23 b 29 -190 86 -52 29 -99 b 301 -373 29 -315 158 -373 b 599 -117 445 -373 599 -311 b 481 52 599 -30 549 17 z m 406 85 b 168 240 291 125 168 150 b 314 331 168 301 251 331 b 482 207 360 331 482 308 b 406 85 482 150 454 112 z m 295 -325 b 111 -183 199 -325 111 -276 b 225 -48 111 -125 161 -72 b 436 -219 330 -94 436 -124 b 295 -325 436 -276 392 -325 z', + }, + timeSig9: { + x_min: 20, + x_max: 414, + y_min: -249, + y_max: 251, + ha: 500, + o: 'm 186 -117 b 71 -226 125 -117 71 -164 b 72 -242 71 -232 71 -236 b 276 -359 86 -334 199 -359 b 540 -206 386 -357 488 -304 b 596 -1 572 -145 596 -69 l 596 4 b 552 203 595 71 583 145 b 301 361 492 310 422 361 b 112 310 236 361 164 351 b 29 140 62 269 29 204 b 246 -69 29 27 135 -69 b 377 -19 292 -69 340 -52 b 386 -16 380 -16 383 -16 b 399 -50 395 -16 399 -27 b 279 -324 395 -317 310 -324 b 232 -302 251 -324 232 -317 b 268 -248 232 -282 259 -265 b 278 -206 275 -235 278 -220 b 256 -147 278 -184 271 -163 b 186 -117 246 -128 204 -117 z m 305 0 b 220 161 259 0 220 72 b 305 323 220 251 259 323 b 389 161 351 323 389 251 b 305 0 389 72 351 0 z', + }, + timeSigCommon: { + x_min: 5, + x_max: 424, + y_min: -249, + y_max: 251, + ha: 500, + o: 'm 336 361 b 7 -14 131 361 7 180 b 101 -262 7 -108 42 -190 b 321 -359 156 -328 235 -359 b 611 -88 573 -359 611 -130 b 589 -56 611 -56 595 -56 b 567 -82 577 -56 567 -58 b 363 -311 567 -268 409 -311 b 184 40 246 -311 184 -197 b 372 327 184 278 294 327 b 477 278 446 327 477 292 b 451 246 477 265 472 246 b 360 140 393 246 360 184 b 471 32 360 58 431 32 b 580 156 471 32 580 36 b 336 361 580 344 363 361 z', + }, + timeSigCutCommon: { + x_min: 0, + x_max: 418, + y_min: -359, + y_max: 361, + ha: 720, + o: 'm 573 -58 b 559 -82 567 -58 559 -60 b 354 -310 559 -266 400 -310 b 317 -305 340 -310 328 -308 b 302 -284 311 -304 302 -295 l 302 287 b 338 323 302 297 328 321 b 363 324 347 324 356 324 b 468 275 436 324 468 289 b 442 243 468 264 464 243 b 351 137 384 243 351 181 b 462 30 351 56 422 30 b 572 154 462 30 572 35 b 318 357 572 295 441 357 b 302 390 310 359 302 383 l 302 495 b 276 520 302 507 292 520 b 252 495 265 520 252 507 l 252 369 b 235 346 252 359 238 346 l 196 331 b 0 -14 66 275 0 122 b 225 -346 0 -150 86 -310 b 252 -382 235 -350 252 -369 l 252 -492 b 276 -517 252 -505 265 -517 b 302 -492 292 -517 302 -505 l 302 -379 b 318 -359 302 -370 308 -363 b 602 -85 563 -354 602 -130 b 579 -58 600 -58 586 -58 z m 252 -235 b 243 -252 252 -248 248 -252 b 236 -248 240 -252 238 -251 b 177 37 197 -193 177 -96 b 232 259 177 147 200 215 b 236 262 233 262 235 262 b 252 239 243 262 252 251 z', + }, + timeSigPlus: { + x_min: -1, + x_max: 499, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 432 53 b 413 79 420 53 413 65 l 413 340 b 392 360 413 350 405 360 l 325 360 b 305 340 312 360 305 350 l 305 79 b 284 53 305 66 292 53 l 19 53 b -1 33 9 53 -1 46 l -1 -33 b 19 -55 -1 -46 9 -55 l 284 -55 b 305 -75 298 -55 305 -68 l 305 -340 b 325 -360 305 -350 312 -360 l 392 -360 b 413 -340 405 -360 413 -350 l 413 -78 b 433 -55 413 -63 423 -55 l 698 -55 b 719 -33 708 -55 719 -46 l 719 33 b 698 53 719 46 708 53 z', + }, + timeSigPlusSmall: { + x_min: -1, + x_max: 255, + y_min: -133, + y_max: 123, + ha: 256, + o: 'm 220 20 b 210 33 215 20 210 26 l 210 166 b 200 177 210 171 206 177 l 166 177 b 156 166 160 177 156 171 l 156 33 b 145 20 156 27 150 20 l 10 20 b -1 10 4 20 -1 16 l -1 -24 b 10 -35 -1 -30 4 -35 l 145 -35 b 156 -46 153 -35 156 -42 l 156 -180 b 166 -192 156 -186 160 -192 l 200 -192 b 210 -180 206 -192 210 -186 l 210 -48 b 222 -35 210 -39 216 -35 l 356 -35 b 367 -24 361 -35 367 -30 l 367 10 b 356 20 367 16 361 20 z', + }, + timeSigMinus: { + x_min: 0, + x_max: 448, + y_min: -35, + y_max: 40, + ha: 75, + o: 'm 645 39 b 619 58 645 49 634 58 l 27 58 b 0 39 12 58 0 49 l 0 -32 b 27 -50 0 -42 12 -50 l 619 -50 b 645 -32 634 -50 645 -42 z', + }, + timeSigParensRight: { + x_min: 0, + x_max: 184, + y_min: -489, + y_max: 491, + ha: 980, + o: 'm 0 -696 b 3 -704 0 -698 1 -704 b 7 -703 4 -704 6 -704 b 265 1 187 -530 265 -282 b 12 701 265 289 187 531 b 4 707 12 701 6 707 b 0 696 1 707 0 703 l 0 665 b 4 644 0 665 0 651 b 167 1 112 503 167 315 b 6 -641 167 -311 109 -497 b 0 -658 3 -644 0 -651 z', + }, + timeSigParensRightSmall: { + x_min: 0, + x_max: 110, + y_min: -251, + y_max: 249, + ha: 500, + o: 'm 0 -356 b 3 -361 0 -357 1 -361 b 158 0 112 -272 158 -145 b 4 359 158 147 109 272 b 0 353 3 359 0 357 l 0 338 b 3 327 0 338 0 330 b 91 0 60 246 91 160 b 4 -328 91 -160 62 -249 b 0 -337 3 -330 0 -333 z', + }, + timeSigParensLeft: { + x_min: 0, + x_max: 184, + y_min: -489, + y_max: 491, + ha: 980, + o: 'm 265 -658 b 259 -641 265 -651 262 -644 b 98 1 156 -497 98 -311 b 261 644 98 315 153 503 b 265 665 265 651 265 665 l 265 696 b 261 707 265 703 264 707 b 253 701 259 707 253 701 b 0 1 78 531 0 289 b 258 -703 0 -282 78 -530 b 262 -704 259 -704 261 -704 b 265 -696 264 -704 265 -698 z', + }, + timeSigParensLeftSmall: { + x_min: 0, + x_max: 110, + y_min: -251, + y_max: 249, + ha: 500, + o: 'm 158 -337 b 154 -328 158 -333 156 -330 b 68 0 96 -249 68 -160 b 156 327 68 160 98 246 b 158 338 158 330 158 338 l 158 353 b 154 359 158 357 156 359 b 0 0 49 272 0 147 b 156 -361 0 -145 46 -272 b 158 -356 157 -361 158 -357 z', + }, + noteheadDoubleWhole: { + x_min: 0, + x_max: 599, + y_min: -155, + y_max: 155, + ha: 310, + o: 'm 13 223 b 0 212 4 223 0 217 l 0 -213 b 13 -223 0 -219 4 -223 l 32 -223 b 45 -213 39 -223 45 -219 l 45 212 b 32 223 45 217 39 223 z m 96 223 b 82 212 88 223 82 217 l 82 -213 b 96 -223 82 -219 88 -223 l 114 -223 b 128 -213 121 -223 128 -219 l 128 212 b 114 223 128 217 121 223 z m 747 223 b 733 212 740 223 733 217 l 733 -213 b 747 -223 733 -219 740 -223 l 766 -223 b 780 -213 773 -223 780 -219 l 780 212 b 766 223 780 217 773 223 z m 829 223 b 815 212 824 223 815 217 l 815 -213 b 829 -223 815 -219 824 -223 l 848 -223 b 863 -213 857 -223 863 -219 l 863 212 b 848 223 863 217 857 223 z m 438 180 b 130 1 248 180 130 101 b 423 -180 130 -92 210 -180 b 733 1 657 -180 733 -98 b 438 180 733 104 572 180 z m 469 -145 b 331 -71 409 -145 369 -112 b 284 58 305 -37 284 12 b 400 147 284 131 333 147 b 577 -45 498 147 577 42 b 469 -145 577 -115 533 -145 z', + }, + noteheadWhole: { + x_min: 0, + x_max: 422, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 311 180 b 0 3 120 180 0 101 b 297 -180 0 -94 82 -180 b 608 3 533 -180 608 -98 b 311 180 608 105 445 180 z m 160 91 b 274 148 176 141 229 148 b 452 -45 373 148 452 42 b 386 -141 452 -89 433 -130 b 341 -147 372 -145 356 -147 b 206 -72 289 -147 236 -112 b 156 56 177 -39 156 10 b 160 91 156 68 157 79 z', + }, + noteheadHalf: { + x_min: 0, + x_max: 295, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 140 -180 b 425 60 377 -180 425 13 b 282 180 425 134 366 180 b 0 -60 68 180 0 14 b 140 -180 0 -137 60 -180 z m 108 -125 b 50 -92 78 -125 60 -109 b 42 -63 46 -84 42 -73 b 318 121 42 7 251 121 b 372 91 346 121 361 108 b 380 63 376 82 380 73 b 108 -125 380 1 177 -125 z', + }, + noteheadBlack: { + x_min: 0, + x_max: 295, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 140 -180 b 425 60 268 -180 425 -62 b 285 180 425 134 367 180 b 0 -60 127 180 0 63 b 140 -180 0 -135 62 -180 z', + }, + noteheadXDoubleWhole: { + x_min: 0, + x_max: 546, + y_min: -155, + y_max: 155, + ha: 310, + o: 'm 43 213 b 30 223 43 217 39 223 l 13 223 b 0 213 6 223 0 217 l 0 -215 b 13 -223 0 -219 6 -223 l 30 -223 b 43 -215 39 -223 43 -219 z m 704 213 b 693 223 704 217 698 223 l 672 223 b 660 213 667 223 660 217 l 660 163 b 634 180 655 173 645 180 l 505 180 b 484 173 498 180 490 177 l 393 95 l 300 173 b 279 180 294 177 287 180 l 151 180 b 125 163 141 180 130 173 l 125 213 b 112 223 125 217 118 223 l 94 223 b 82 213 86 223 82 217 l 82 -215 b 94 -223 82 -219 86 -223 l 112 -223 b 125 -215 118 -223 125 -219 l 125 -163 b 151 -180 130 -173 140 -180 l 279 -180 b 300 -171 287 -180 294 -177 l 393 -95 l 485 -171 b 505 -180 491 -177 498 -180 l 632 -180 b 660 -163 645 -180 655 -173 l 660 -215 b 672 -223 660 -219 667 -223 l 693 -223 b 704 -215 698 -223 704 -219 z m 786 213 b 772 223 786 217 780 223 l 755 223 b 740 213 747 223 740 217 l 740 -215 b 755 -223 740 -219 747 -223 l 772 -223 b 786 -215 780 -223 786 -219 z m 507 -141 l 393 -45 l 276 -141 l 207 -141 l 364 0 l 207 141 l 276 141 l 393 45 l 507 141 l 577 141 l 420 0 l 577 -141 z m 660 -132 l 518 0 l 660 132 z m 125 131 l 266 0 l 125 -131 z', + }, + noteheadXWhole: { + x_min: 0, + x_max: 377, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 272 -95 l 364 -171 b 384 -180 370 -177 377 -180 l 511 -180 b 543 -148 528 -180 543 -164 b 531 -124 543 -140 539 -131 l 412 0 l 531 124 b 541 148 539 131 541 140 b 513 180 541 164 528 180 l 384 180 b 364 171 377 180 370 177 l 272 94 l 179 171 b 158 180 173 177 166 180 l 30 180 b 0 148 16 180 0 164 b 12 124 0 140 4 131 l 132 0 l 12 -124 b 1 -148 4 -131 1 -140 b 32 -180 1 -164 14 -180 l 158 -180 b 179 -171 166 -180 173 -177 z m 386 -141 l 272 -45 l 157 -141 l 88 -141 l 245 0 l 88 141 l 157 141 l 272 45 l 386 141 l 456 141 l 300 0 l 456 -141 z', + }, + noteheadXHalf: { + x_min: 0, + x_max: 334, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 295 180 b 271 170 287 180 278 177 l 209 98 l 115 171 b 95 180 109 177 104 180 l 36 180 b 4 148 19 180 4 164 b 14 124 4 140 7 132 l 140 22 l 7 -127 b 0 -148 3 -131 0 -138 b 32 -180 0 -166 14 -180 l 184 -180 b 209 -170 193 -180 203 -177 l 271 -99 l 363 -171 b 384 -180 370 -176 377 -180 l 445 -180 b 478 -147 461 -180 478 -163 b 465 -125 478 -138 474 -131 l 341 -22 l 474 127 b 481 148 480 131 481 138 b 448 180 481 166 468 180 z m 36 148 l 95 148 l 233 33 l 334 148 l 410 148 l 274 -6 l 445 -148 l 384 -148 l 248 -35 l 147 -148 l 71 -148 l 206 4 z', + }, + noteheadXBlack: { + x_min: 0, + x_max: 290, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 410 -143 l 239 0 l 410 144 b 418 160 415 147 418 154 b 399 180 418 171 408 180 b 389 177 396 180 392 179 l 207 26 l 29 177 b 17 180 26 179 22 180 b 0 161 7 180 0 170 b 7 144 0 156 3 148 l 179 0 l 7 -143 b 0 -158 1 -147 0 -153 b 19 -180 0 -170 7 -180 b 29 -176 23 -180 26 -179 l 207 -24 l 389 -176 b 399 -180 392 -179 396 -180 b 418 -160 410 -180 418 -168 b 410 -143 418 -153 415 -147 z', + }, + noteheadCircleXDoubleWhole: { + x_min: 0, + x_max: 422, + y_min: -155, + y_max: 155, + ha: 310, + o: 'm 576 223 b 563 213 570 223 563 219 l 563 -215 b 576 -223 563 -219 570 -223 l 595 -223 b 608 -215 602 -223 608 -219 l 608 213 b 595 223 608 219 602 223 z m 497 223 b 484 213 491 223 484 219 l 484 -215 b 497 -223 484 -219 491 -223 l 516 -223 b 528 -215 523 -223 528 -219 l 528 213 b 516 223 528 219 523 223 z m 94 223 b 81 213 86 223 81 219 l 81 -215 b 94 -223 81 -219 86 -223 l 111 -223 b 124 -215 118 -223 124 -219 l 124 213 b 111 223 124 219 118 223 z m 13 223 b 0 213 6 223 0 219 l 0 -215 b 13 -223 0 -219 6 -223 l 30 -223 b 45 -215 37 -223 45 -219 l 45 213 b 30 223 45 219 37 223 z m 304 180 b 127 0 206 180 127 101 b 304 -180 127 -99 206 -180 b 482 0 405 -180 482 -99 b 304 180 482 101 405 180 z m 305 32 l 225 112 b 304 140 248 130 275 140 b 387 112 336 140 364 130 z m 278 1 l 193 -82 b 216 0 199 -59 216 -30 b 194 85 216 33 203 50 z m 334 1 l 418 84 b 389 0 402 50 389 23 b 418 -81 389 -30 409 -60 z m 305 -27 l 389 -109 b 304 -138 364 -128 336 -138 b 222 -109 274 -138 246 -128 z', + }, + noteheadCircleXWhole: { + x_min: 0, + x_max: 249, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 179 180 b 0 0 81 180 0 101 b 179 -180 0 -99 81 -180 b 359 0 278 -180 359 -99 b 179 180 359 101 278 180 z m 180 32 l 99 112 b 179 140 121 130 150 140 b 262 112 210 140 238 130 z m 151 1 l 68 -82 b 86 0 73 -59 86 -30 b 68 85 86 33 78 50 z m 209 1 l 291 84 b 269 0 276 50 269 32 b 291 -79 269 -26 282 -58 z m 180 -27 l 264 -111 b 179 -138 239 -128 210 -138 b 96 -111 148 -138 120 -128 z', + }, + noteheadCircleXHalf: { + x_min: 0, + x_max: 250, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 179 180 b 0 0 81 180 0 101 b 179 -180 0 -99 81 -180 b 360 0 278 -180 360 -99 b 179 180 360 101 278 180 z m 186 37 l 131 92 b 220 124 153 109 189 124 b 262 112 236 124 249 121 z m 215 7 l 291 84 b 304 42 300 71 304 58 b 271 -49 304 10 288 -26 z m 145 -6 l 68 -82 b 56 -42 59 -71 56 -58 b 89 52 56 -9 72 27 z m 174 -33 l 230 -89 b 140 -124 206 -108 171 -124 b 96 -111 122 -124 109 -121 z', + }, + noteheadCircleX: { + x_min: 0, + x_max: 249, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 179 180 b 0 0 81 180 0 99 b 179 -180 0 -99 81 -180 b 359 0 278 -180 359 -99 b 179 180 359 99 278 180 z m 261 112 l 180 30 l 98 112 b 179 138 121 128 148 138 b 261 112 210 138 238 128 z m 317 0 b 292 -82 317 -30 308 -59 l 209 1 l 291 84 b 317 0 307 60 317 30 z m 40 0 b 69 84 40 32 50 60 l 151 1 l 68 -84 b 40 0 49 -60 40 -30 z m 95 -111 l 180 -27 l 262 -111 b 179 -138 239 -128 210 -138 b 95 -111 148 -138 120 -128 z', + }, + noteheadCircledDoubleWhole: { + x_min: 0, + x_max: 603, + y_min: -218, + y_max: 213, + ha: 431, + o: 'm 770 223 l 752 223 b 737 213 744 223 737 219 l 737 59 b 435 307 710 203 582 307 b 128 48 281 307 156 197 l 128 213 b 115 223 128 219 122 223 l 96 223 b 84 213 89 223 84 219 l 84 -215 b 96 -223 84 -220 89 -223 l 115 -223 b 128 -215 122 -223 128 -220 l 128 -56 b 435 -314 156 -206 282 -314 b 654 -223 517 -314 595 -282 b 737 -66 697 -180 726 -125 l 737 -215 b 752 -223 737 -220 744 -223 l 770 -223 b 785 -215 778 -223 785 -220 l 785 213 b 770 223 785 219 778 223 z m 435 274 b 698 85 556 274 661 194 b 439 180 641 143 534 180 b 176 99 320 180 228 148 b 435 274 217 203 318 274 z m 32 223 l 13 223 b 0 213 6 223 0 219 l 0 -215 b 13 -223 0 -220 6 -223 l 32 -223 b 45 -215 40 -223 45 -220 l 45 213 b 32 223 45 219 40 223 z m 852 223 l 835 223 b 819 213 828 223 819 219 l 819 -215 b 835 -223 819 -220 828 -223 l 852 -223 b 868 -215 861 -223 868 -220 l 868 213 b 852 223 868 219 861 223 z m 580 -46 b 514 -143 580 -91 562 -131 b 472 -148 501 -147 487 -148 b 364 -105 433 -148 395 -131 l 334 -73 b 285 58 307 -39 285 10 b 289 91 285 69 287 79 b 403 145 305 140 357 145 b 580 -46 501 145 580 42 z m 435 -282 b 176 -108 318 -282 217 -209 b 425 -180 222 -151 301 -180 b 691 -109 563 -180 647 -153 b 435 -282 651 -210 550 -282 z', + }, + noteheadCircledWhole: { + x_min: 0, + x_max: 437, + y_min: -225, + y_max: 211, + ha: 436, + o: 'm 314 304 b 0 -10 140 304 0 164 b 314 -324 0 -183 141 -324 b 629 -10 487 -324 629 -183 b 314 304 629 164 488 304 z m 314 275 b 588 73 441 275 549 193 b 321 180 536 137 420 180 b 48 88 190 180 95 143 b 314 275 85 199 199 275 z m 393 -141 b 350 -147 379 -145 364 -147 b 314 -141 337 -147 325 -145 b 167 55 235 -120 167 -26 b 173 91 167 66 168 79 b 284 145 187 138 239 145 b 459 -48 382 145 459 39 b 393 -141 459 -91 438 -131 z m 314 -294 b 40 -86 187 -294 75 -207 b 305 -180 81 -141 164 -180 b 588 -86 464 -180 550 -143 b 314 -294 554 -209 442 -294 z', + }, + noteheadCircledHalf: { + x_min: -18, + x_max: 311, + y_min: -162, + y_max: 167, + ha: 329, + o: 'm 212 240 b -26 3 81 240 -26 134 b 212 -233 -26 -127 81 -233 b 448 3 341 -233 448 -127 b 212 240 448 134 341 240 z m 212 220 b 363 160 271 220 324 197 b 281 180 341 173 312 180 b 0 -52 76 180 6 26 b -6 3 -4 -35 -6 -16 b 212 220 -6 122 92 220 z m 50 -92 b 42 -63 46 -84 42 -73 b 173 63 42 -33 73 7 b 317 120 243 105 288 120 b 369 89 344 120 359 107 b 377 62 374 81 377 72 b 248 -66 377 33 348 -1 b 108 -125 183 -109 138 -125 b 50 -92 78 -125 60 -109 z m 212 -215 b 84 -171 164 -215 120 -199 b 138 -180 101 -179 120 -180 b 422 56 372 -180 420 7 b 429 3 426 40 429 22 b 212 -215 429 -117 333 -215 z', + }, + noteheadCircledBlack: { + x_min: -21, + x_max: 321, + y_min: -171, + y_max: 167, + ha: 338, + o: 'm 216 240 b -30 -3 82 240 -30 131 b 216 -246 -30 -137 82 -246 b 462 -3 351 -246 462 -137 b 216 240 462 131 351 240 z m 216 220 b 372 160 276 220 331 197 b 284 180 348 174 317 180 b 0 -59 127 180 0 65 l 0 -66 b -10 -3 -6 -45 -10 -24 b 216 220 -10 120 92 220 z m 216 -226 b 56 -158 153 -226 96 -200 b 140 -180 79 -171 107 -180 b 425 60 268 -180 425 -60 b 422 88 425 71 425 79 b 442 -3 435 60 442 29 b 216 -226 442 -125 341 -226 z', + }, + noteheadDoubleWholeSquare: { + x_min: 0, + x_max: 416, + y_min: -190, + y_max: 198, + ha: 388, + o: 'm 563 217 b 528 180 563 192 544 180 l 62 180 b 36 215 52 180 36 192 l 36 268 b 17 285 36 278 27 285 b 0 268 7 285 0 278 l 0 -255 b 17 -274 0 -264 7 -274 b 36 -255 27 -274 36 -264 l 36 -213 b 66 -180 36 -197 53 -180 l 528 -180 b 563 -209 549 -180 563 -196 l 563 -255 b 580 -274 563 -264 570 -274 b 599 -255 590 -274 599 -264 l 599 268 b 580 285 599 278 590 285 b 563 268 570 285 563 278 z m 36 23 b 111 71 36 55 58 71 l 487 71 b 563 30 533 71 563 53 l 563 -22 b 487 -68 563 -53 533 -68 l 117 -68 b 36 -22 66 -68 36 -49 z', + }, + noteheadSquareWhite: { + x_min: 0, + x_max: 313, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 451 -180 l 451 180 l 0 180 l 0 -180 z m 40 -138 l 40 140 l 410 140 l 410 -138 z', + }, + noteheadSquareBlack: { + x_min: 0, + x_max: 313, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 451 -180 l 451 180 l 0 180 l 0 -180 z', + }, + noteheadTriangleDownDoubleWhole: { + x_min: 0, + x_max: 483, + y_min: -155, + y_max: 155, + ha: 310, + o: 'm 696 213 b 681 223 696 219 690 223 l 662 223 b 648 213 655 223 648 219 l 648 -213 b 662 -223 648 -217 655 -223 l 681 -223 b 696 -213 690 -223 696 -217 z m 619 213 b 605 223 619 219 613 223 l 588 223 b 573 213 580 223 573 219 l 573 174 b 562 180 570 177 566 180 l 134 180 b 122 174 130 180 125 177 l 122 213 b 108 223 122 219 117 223 l 91 223 b 76 213 84 223 76 219 l 76 -213 b 91 -223 76 -217 84 -223 l 108 -223 b 122 -213 117 -223 122 -217 l 122 154 l 334 -173 b 346 -180 337 -177 341 -180 b 357 -173 351 -180 354 -177 l 573 154 l 573 -213 b 588 -223 573 -217 580 -223 l 605 -223 b 619 -213 613 -223 619 -217 z m 32 -223 b 46 -213 40 -223 46 -217 l 46 213 b 32 223 46 219 40 223 l 14 223 b 0 213 7 223 0 219 l 0 -213 b 14 -223 0 -217 7 -223 z m 428 98 b 346 -107 428 17 377 -53 b 265 96 315 -55 265 17 b 289 137 265 109 275 137 l 406 137 b 428 98 419 137 428 111 z', + }, + noteheadTriangleDownWhole: { + x_min: 0, + x_max: 319, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 14 180 b 0 166 6 180 0 173 b 1 158 0 163 1 160 l 216 -173 b 228 -180 219 -177 225 -180 b 239 -173 233 -180 238 -177 l 458 158 b 459 166 458 160 459 163 b 445 180 459 173 454 180 z m 288 137 b 310 98 301 137 310 111 b 228 -108 310 17 259 -55 b 145 96 197 -56 145 17 b 170 137 145 109 157 137 z', + }, + noteheadTriangleDownHalf: { + x_min: 0, + x_max: 285, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 196 -180 b 209 -173 200 -180 206 -177 l 408 157 b 410 166 409 160 410 163 b 396 180 410 173 403 180 l 14 180 b 0 166 4 180 0 173 b 1 158 0 163 0 161 l 183 -173 b 196 -180 184 -174 190 -180 z m 164 138 l 295 138 l 179 -76 l 114 37 z', + }, + noteheadTriangleDownBlack: { + x_min: 0, + x_max: 292, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 207 -180 l 420 180 l 0 180 z', + }, + noteheadTriangleUpDoubleWhole: { + x_min: 0, + x_max: 483, + y_min: -155, + y_max: 155, + ha: 310, + o: 'm 696 213 b 681 223 696 217 690 223 l 662 223 b 648 213 655 223 648 217 l 648 -213 b 662 -223 648 -219 655 -223 l 681 -223 b 696 -213 690 -223 696 -219 z m 619 213 b 605 223 619 217 613 223 l 588 223 b 573 213 580 223 573 217 l 573 -154 l 357 173 b 346 180 354 177 351 180 b 334 173 341 180 337 177 l 122 -154 l 122 213 b 108 223 122 217 117 223 l 91 223 b 76 213 84 223 76 217 l 76 -213 b 91 -223 76 -219 84 -223 l 108 -223 b 122 -213 117 -223 122 -219 l 122 -174 b 134 -180 125 -177 130 -180 l 562 -180 b 573 -174 566 -180 570 -177 l 573 -213 b 588 -223 573 -219 580 -223 l 605 -223 b 619 -213 613 -223 619 -219 z m 32 223 l 14 223 b 0 213 7 223 0 217 l 0 -213 b 14 -223 0 -219 7 -223 l 32 -223 b 46 -213 40 -223 46 -219 l 46 213 b 32 223 46 217 40 223 z m 428 -98 b 406 -137 428 -111 419 -137 l 289 -137 b 265 -96 275 -137 265 -109 b 346 107 265 -17 315 55 b 428 -98 377 53 428 -17 z', + }, + noteheadTriangleUpWhole: { + x_min: 0, + x_max: 319, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 445 -180 b 459 -166 454 -180 459 -173 b 458 -158 459 -163 458 -160 l 239 173 b 228 180 238 177 233 180 b 216 173 225 180 219 177 l 1 -158 b 0 -166 1 -160 0 -163 b 14 -180 0 -173 6 -180 z m 170 -137 b 145 -96 157 -137 145 -109 b 228 108 145 -17 197 56 b 310 -98 259 55 310 -17 b 288 -137 310 -111 301 -137 z', + }, + noteheadTriangleUpHalf: { + x_min: 0, + x_max: 285, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 215 180 b 202 173 210 180 204 177 l 3 -157 b 0 -166 1 -160 0 -163 b 14 -180 0 -173 7 -180 l 396 -180 b 410 -166 406 -180 410 -173 b 409 -158 410 -163 410 -161 l 228 173 b 215 180 226 174 220 180 z m 246 -138 l 115 -138 l 232 76 l 297 -37 z', + }, + noteheadTriangleUpBlack: { + x_min: 0, + x_max: 293, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 422 -180 l 207 180 l 0 -180 z', + }, + noteheadSlashedDoubleWhole1: { + x_min: 0, + x_max: 596, + y_min: -179, + y_max: 168, + ha: 347, + o: 'm 618 135 l 697 206 b 704 222 703 210 704 216 b 698 236 704 226 703 232 b 683 242 694 239 688 242 b 670 238 677 242 674 240 l 575 153 b 435 180 531 168 481 180 b 128 0 246 180 128 98 b 236 -148 128 -58 160 -114 l 153 -222 b 145 -238 148 -226 145 -232 b 151 -252 145 -242 148 -248 b 167 -258 156 -256 161 -258 b 181 -253 171 -258 177 -256 l 282 -164 b 420 -180 320 -173 366 -180 b 729 0 654 -180 729 -98 b 618 135 729 55 681 104 z m 114 223 l 95 223 b 82 212 88 223 82 217 l 82 -215 b 95 -223 82 -219 88 -223 l 114 -223 b 127 -215 121 -223 127 -219 l 127 212 b 114 223 127 217 121 223 z m 32 223 l 13 223 b 0 212 6 223 0 217 l 0 -215 b 13 -223 0 -219 6 -223 l 32 -223 b 45 -215 39 -223 45 -219 l 45 212 b 32 223 45 217 39 223 z m 844 223 l 825 223 b 811 212 819 223 811 217 l 811 -215 b 825 -223 811 -219 819 -223 l 844 -223 b 858 -215 851 -223 858 -219 l 858 212 b 844 223 858 217 851 223 z m 763 223 l 743 223 b 730 212 736 223 730 217 l 730 -215 b 743 -223 730 -219 736 -223 l 763 -223 b 776 -215 769 -223 776 -219 l 776 212 b 763 223 776 217 769 223 z m 282 56 b 285 89 282 68 284 79 b 399 144 301 137 354 144 b 510 95 441 144 480 124 l 327 -68 b 282 56 301 -35 282 13 z m 572 -72 b 508 -141 564 -108 544 -132 b 467 -147 495 -145 481 -147 b 360 -104 428 -147 389 -128 l 356 -98 l 537 63 b 575 -46 560 30 575 -9 b 572 -72 575 -55 573 -65 z', + }, + noteheadSlashedWhole1: { + x_min: -22, + x_max: 433, + y_min: -157, + y_max: 148, + ha: 305, + o: 'm 484 140 b 308 180 431 166 367 180 b 0 1 118 180 0 99 b 73 -128 0 -48 22 -95 l -22 -190 b -32 -206 -27 -194 -32 -200 b -27 -217 -32 -210 -30 -215 b -12 -226 -23 -223 -17 -226 b 0 -223 -7 -226 -4 -225 l 112 -150 b 294 -180 157 -168 217 -180 b 602 1 526 -180 602 -98 b 523 118 602 48 570 86 l 613 177 b 624 193 619 181 624 187 b 619 204 624 197 622 200 b 603 213 615 209 609 213 b 592 209 599 213 596 212 z m 190 -52 b 154 56 170 -20 154 19 b 160 91 154 68 156 79 b 271 147 174 138 226 147 b 396 82 321 147 364 121 z m 419 50 b 446 -48 436 19 446 -14 b 337 -147 446 -120 402 -147 b 301 -141 327 -147 314 -144 b 235 -104 276 -134 253 -120 b 215 -84 226 -98 220 -91 z', + }, + noteheadSlashedHalf1: { + x_min: -67, + x_max: 386, + y_min: -142, + y_max: 160, + ha: 302, + o: 'm 552 222 b 536 230 549 228 543 230 b 524 228 533 230 528 230 l 389 140 b 281 180 364 164 327 180 b 0 -60 65 180 0 13 b 7 -105 0 -78 3 -92 l -88 -167 b -96 -184 -94 -171 -96 -177 b -94 -194 -96 -187 -95 -192 b -76 -204 -89 -202 -84 -204 b -66 -202 -73 -204 -69 -203 l 29 -140 b 137 -180 55 -167 92 -180 b 420 59 374 -180 420 13 b 412 107 420 76 419 92 l 546 194 b 556 210 552 197 556 204 b 552 222 556 213 554 217 z m 315 120 b 347 112 328 120 338 117 l 46 -82 b 42 -63 43 -76 42 -69 b 315 120 42 6 248 120 z m 108 -124 b 69 -114 91 -124 79 -120 l 372 81 b 376 63 374 75 376 69 b 108 -124 376 0 174 -124 z', + }, + noteheadSlashedBlack1: { + x_min: -80, + x_max: 375, + y_min: -165, + y_max: 167, + ha: 332, + o: 'm 518 240 b 507 236 514 240 510 239 l 384 148 b 284 180 359 168 324 180 b 0 -62 127 180 0 63 b 13 -115 0 -82 4 -99 l -107 -202 b -115 -217 -111 -204 -115 -212 b -111 -229 -115 -222 -114 -225 b -95 -238 -108 -235 -101 -238 b -84 -235 -91 -238 -86 -236 l 39 -148 b 140 -180 63 -170 99 -180 b 425 59 268 -180 425 -62 b 410 117 425 81 420 101 l 530 203 b 540 219 536 207 540 213 b 518 240 540 229 528 240 z', + }, + noteheadSlashedDoubleWhole2: { + x_min: 0, + x_max: 596, + y_min: -178, + y_max: 169, + ha: 347, + o: 'm 729 0 b 435 180 729 102 569 180 b 278 156 374 180 321 170 l 184 239 b 170 243 181 242 176 243 b 154 238 166 243 158 240 b 150 223 151 233 150 228 b 156 207 150 217 153 212 l 233 138 b 128 0 167 107 128 56 b 420 -180 128 -94 210 -180 b 575 -164 482 -180 533 -174 l 672 -252 b 687 -256 677 -255 681 -256 b 703 -251 691 -256 698 -255 b 707 -236 706 -246 707 -240 b 701 -220 707 -230 706 -225 l 619 -150 b 729 0 700 -117 729 -62 z m 114 223 l 95 223 b 82 213 88 223 82 217 l 82 -213 b 95 -223 82 -219 88 -223 l 114 -223 b 127 -213 121 -223 127 -219 l 127 213 b 114 223 127 217 121 223 z m 32 223 l 13 223 b 0 213 6 223 0 217 l 0 -213 b 13 -223 0 -219 6 -223 l 32 -223 b 45 -213 39 -223 45 -219 l 45 213 b 32 223 45 217 39 223 z m 844 223 l 825 223 b 811 213 819 223 811 217 l 811 -213 b 825 -223 811 -219 819 -223 l 844 -223 b 858 -213 851 -223 858 -219 l 858 213 b 844 223 858 217 851 223 z m 763 223 l 743 223 b 730 213 736 223 730 217 l 730 -213 b 743 -223 730 -219 736 -223 l 763 -223 b 776 -213 769 -223 776 -219 l 776 213 b 763 223 776 217 769 223 z m 312 124 b 399 144 336 141 369 144 b 575 -46 495 144 575 40 b 563 -98 575 -65 570 -81 z m 508 -141 b 467 -147 495 -145 481 -147 b 360 -104 428 -147 389 -128 b 330 -72 350 -95 340 -82 b 282 56 304 -37 282 10 b 285 89 282 68 284 79 b 536 -130 287 89 304 75 z', + }, + noteheadSlashedWhole2: { + x_min: -18, + x_max: 436, + y_min: -154, + y_max: 151, + ha: 305, + o: 'm 531 -128 b 602 1 582 -96 602 -49 b 308 180 602 104 441 180 b 114 144 230 180 164 166 l 4 215 b -6 217 1 217 -3 217 b -22 209 -13 217 -19 215 b -26 197 -24 204 -26 200 b -16 181 -26 192 -22 184 l 75 121 b 0 1 27 91 0 49 b 294 -180 0 -94 82 -180 b 491 -150 379 -180 444 -168 l 598 -219 b 608 -222 600 -222 605 -222 b 624 -213 615 -222 621 -219 b 628 -202 626 -209 628 -206 b 618 -186 628 -196 624 -189 z m 168 108 b 271 147 190 141 233 147 b 446 -48 369 147 446 40 b 445 -72 446 -56 446 -63 z m 154 69 l 429 -109 b 382 -141 419 -125 402 -135 b 337 -147 367 -144 351 -147 b 301 -141 327 -147 314 -144 b 235 -104 276 -134 253 -120 b 203 -72 223 -94 213 -82 b 154 58 177 -39 154 12 z', + }, + noteheadSlashedHalf2: { + x_min: -73, + x_max: 380, + y_min: -134, + y_max: 168, + ha: 302, + o: 'm 537 -156 l 383 -58 b 422 60 413 -9 422 39 b 281 180 422 134 364 180 b 101 127 203 180 144 157 l -75 239 b -85 242 -78 242 -82 242 b -102 233 -92 242 -98 239 b -105 222 -104 229 -105 225 b -95 206 -105 216 -102 209 l 69 99 b 0 -59 19 46 0 -20 b 138 -180 0 -135 60 -180 b 359 -88 248 -180 317 -138 l 516 -190 b 527 -193 520 -192 524 -193 b 543 -183 534 -193 540 -190 b 547 -173 546 -180 547 -176 b 537 -156 547 -166 543 -160 z m 367 92 b 377 63 374 82 377 73 b 318 -14 377 43 361 20 l 184 72 b 317 121 248 108 289 121 b 367 92 344 121 357 109 z m 248 -66 b 108 -124 181 -108 138 -124 b 50 -92 78 -124 60 -109 b 42 -63 46 -84 42 -73 b 145 49 42 -35 68 0 l 285 -40 b 248 -66 274 -49 261 -56 z', + }, + noteheadSlashedBlack2: { + x_min: -79, + x_max: 376, + y_min: -164, + y_max: 168, + ha: 332, + o: 'm 531 -200 l 363 -78 b 425 59 402 -37 425 10 b 285 180 425 132 367 180 b 92 114 210 180 144 154 l -81 238 b -94 242 -85 240 -89 242 b -111 232 -99 242 -107 238 b -114 220 -112 229 -114 225 b -105 204 -114 215 -111 207 l 62 85 b 0 -62 23 43 0 -9 b 140 -180 0 -137 62 -180 b 331 -108 204 -180 275 -153 l 507 -233 b 520 -236 511 -236 517 -236 b 537 -228 527 -236 533 -233 b 541 -216 540 -225 541 -220 b 531 -200 541 -210 537 -203 z', + }, + noteheadDiamondDoubleWhole: { + x_min: 0, + x_max: 432, + y_min: -155, + y_max: 155, + ha: 310, + o: 'm 592 223 b 580 215 585 223 580 219 l 580 -215 b 592 -223 580 -219 585 -223 l 608 -223 b 622 -215 615 -223 622 -219 l 622 215 b 608 223 622 219 615 223 z m 517 223 b 504 215 510 223 504 219 l 504 -215 b 517 -223 504 -219 510 -223 l 533 -223 b 544 -215 540 -223 544 -219 l 544 215 b 533 223 544 219 540 223 z m 246 179 b 240 180 243 179 242 180 b 232 176 236 180 233 179 l 118 22 b 117 17 117 20 117 19 l 117 215 b 104 223 117 219 111 223 l 88 223 b 75 215 81 223 75 219 l 75 -215 b 88 -223 75 -219 81 -223 l 104 -223 b 117 -215 111 -223 117 -219 l 117 14 l 118 14 b 122 7 118 12 120 10 l 374 -179 b 382 -180 376 -180 379 -180 b 390 -177 384 -180 387 -180 l 503 -23 l 503 -17 b 500 -9 503 -13 503 -10 z m 12 223 b 0 215 4 223 0 219 l 0 -215 b 12 -223 0 -219 4 -223 l 29 -223 b 40 -215 36 -223 40 -219 l 40 215 b 29 223 40 219 36 223 z m 183 39 b 179 46 181 39 179 43 b 229 112 226 112 228 112 b 236 109 229 112 233 111 l 436 -39 b 439 -46 438 -39 439 -42 b 390 -112 393 -111 392 -112 b 383 -109 389 -112 386 -111 z', + }, + noteheadDiamondWhole: { + x_min: 0, + x_max: 270, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 386 -23 b 389 -16 387 -20 389 -19 b 383 -7 389 -13 386 -9 l 130 179 b 122 180 128 180 125 180 b 115 177 120 180 117 180 l 3 23 b 0 17 1 20 0 19 b 4 7 0 16 3 10 l 258 -179 b 264 -180 261 -179 262 -180 b 272 -176 268 -180 271 -179 z m 66 40 b 62 48 65 42 62 45 l 109 111 b 112 112 109 112 111 112 b 118 111 115 112 117 111 l 320 -37 b 324 -46 323 -39 324 -42 b 275 -111 278 -111 276 -111 b 268 -108 272 -111 271 -109 z', + }, + noteheadDiamondHalf: { + x_min: 0, + x_max: 251, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 359 -7 b 361 0 360 -6 361 -3 b 359 7 361 3 360 4 l 189 177 b 180 180 186 179 183 180 b 174 177 179 180 176 179 l 4 7 b 0 0 1 4 0 3 b 4 -7 0 -3 1 -6 l 174 -177 b 180 -180 176 -180 179 -180 b 189 -177 183 -180 186 -180 z m 266 26 b 138 -71 266 -12 176 -71 b 96 -50 121 -71 108 -63 b 88 -24 89 -43 88 -32 b 215 73 88 13 177 73 b 266 26 238 73 266 50 z', + }, + noteheadDiamondBlack: { + x_min: 0, + x_max: 250, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 357 -6 b 360 1 359 -4 360 -1 b 357 9 360 4 359 7 l 189 177 b 180 180 187 179 184 180 b 171 177 177 180 173 179 l 3 9 b 0 1 0 6 0 4 b 4 -7 0 -1 1 -4 l 173 -177 b 180 -180 176 -180 177 -180 b 187 -177 181 -180 184 -180 z', + }, + noteheadParenthesis: { + x_min: -73, + x_max: 368, + y_min: -180, + y_max: 182, + ha: 362, + o: 'm 52 -249 b -30 -144 3 -212 -14 -190 b -52 4 -45 -102 -52 -56 b 52 252 -52 118 -36 179 l 46 262 b -105 3 -49 197 -105 124 b 45 -259 -105 -109 -48 -200 z m 382 -259 b 530 3 474 -202 530 -108 b 379 262 530 122 474 200 l 373 252 b 478 4 462 180 478 118 b 456 -144 478 -56 471 -102 b 373 -249 439 -190 422 -212 z', + }, + noteheadParenthesisRight: { + x_min: -36, + x_max: 73, + y_min: -181, + y_max: 181, + ha: 362, + o: 'm -43 -261 b 105 1 49 -203 105 -109 b -46 261 105 121 49 199 l -52 251 b 53 3 37 179 53 117 b 32 -145 53 -58 46 -104 b -52 -251 14 -192 -3 -213 z', + }, + noteheadParenthesisLeft: { + x_min: 0, + x_max: 109, + y_min: -181, + y_max: 181, + ha: 362, + o: 'm 157 -251 b 75 -145 108 -213 91 -192 b 53 3 60 -104 53 -58 b 157 251 53 117 69 177 l 151 261 b 0 1 56 196 0 122 b 150 -261 0 -111 58 -202 z', + }, + noteheadMoonBlack: { + x_min: 0, + x_max: 315, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 228 -180 b 454 0 343 -180 454 -130 l 454 180 l 0 180 l 0 0 b 228 -180 0 -131 112 -180 z', + }, + noteheadTriangleLeftBlack: { + x_min: 0, + x_max: 339, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 488 -180 l 0 180 l 0 -180 z', + }, + noteheadTriangleRightBlack: { + x_min: 0, + x_max: 339, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 488 180 l 0 -180 l 488 -180 z', + }, + noteheadTriangleRoundDownBlack: { + x_min: 0, + x_max: 278, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 200 -180 l 400 112 l 383 124 b 199 180 327 161 264 180 b 16 124 135 180 73 161 l 0 112 z', + }, + augmentationDot: { + x_min: 0, + x_max: 100, + y_min: -50, + y_max: 50, + ha: 100, + o: 'm 144 0 b 72 72 144 40 112 72 b 0 0 32 72 0 40 b 72 -72 0 -40 32 -72 b 144 0 112 -72 144 -40 z', + }, + tremolo1: { + x_min: -150, + x_max: 150, + y_min: -93, + y_max: 94, + ha: 187, + o: 'm 216 -45 l 216 135 l -216 46 l -216 -134 z', + }, + flag8thUp: { + x_min: 0, + x_max: 264, + y_min: -810.1921176545985, + y_max: 9, + ha: 819.1921176545985, + o: 'm 343 -1138 b 380 -888 343 -1138 380 -1001 b 215 -395 380 -708 305 -539 b 58 -19 141 -281 81 -157 b 27 13 53 4 42 13 b 0 -9 12 13 0 9 l 0 -353 b 284 -688 95 -370 232 -566 b 318 -904 305 -737 318 -819 b 284 -1102 318 -969 308 -1037 b 279 -1123 281 -1110 279 -1117 b 302 -1165 279 -1146 294 -1159 b 343 -1138 311 -1171 336 -1162 z', + }, + flag8thDown: { + x_min: 0, + x_max: 306, + y_min: -14, + y_max: 808, + ha: 822, + o: 'm 346 1094 b 376 897 366 1034 376 962 b 318 642 376 812 340 691 b 0 340 265 521 193 405 l 0 1 b 23 -20 0 -13 12 -20 b 58 12 36 -20 55 -12 b 262 387 82 148 189 274 b 441 881 353 530 441 701 b 400 1142 441 994 412 1096 b 377 1164 396 1158 387 1164 b 346 1094 356 1164 331 1136 z', + }, + flag16thUp: { + x_min: 0, + x_max: 279, + y_min: -813, + y_max: 2, + ha: 815, + o: 'm 392 -1146 b 402 -988 397 -1139 402 -1057 l 402 -956 b 360 -783 402 -896 386 -837 b 359 -770 360 -779 359 -776 b 360 -760 359 -768 359 -765 b 396 -577 364 -752 396 -665 b 392 -526 396 -559 395 -543 b 236 -275 377 -428 340 -387 b 53 -16 158 -192 78 -168 b 24 3 50 0 33 3 b 0 -12 16 3 0 -1 l 0 -570 l 7 -570 b 298 -778 96 -573 199 -576 b 344 -992 331 -847 344 -917 b 333 -1120 344 -1034 340 -1077 b 331 -1133 331 -1126 331 -1129 b 363 -1171 331 -1152 343 -1171 b 392 -1146 373 -1171 383 -1165 z m 301 -661 b 223 -562 278 -625 253 -596 b 59 -331 156 -484 89 -449 b 58 -327 58 -330 58 -328 b 78 -312 58 -321 66 -312 l 89 -312 b 302 -464 177 -312 255 -393 b 341 -592 328 -501 341 -546 b 340 -621 341 -602 341 -611 b 330 -658 337 -632 337 -647 b 311 -667 328 -662 318 -667 b 301 -661 307 -667 304 -665 z', + }, + flag16thDown: { + x_min: 0, + x_max: 290.8951581511223, + y_min: -9, + y_max: 812.0064, + ha: 821.0064, + o: 'm 346 1132 b 312 768 367 1011 367 880 b 7 559 213 566 96 562 l 0 559 l 0 1 b 24 -13 0 -6 10 -13 b 53 6 35 -13 50 -10 b 406 516 88 228 372 289 b 410 567 409 531 410 549 b 374 750 410 655 379 742 b 373 760 373 753 373 756 b 374 773 373 766 374 769 b 405 1138 426 881 428 1022 b 370 1169 397 1171 387 1169 b 346 1132 353 1168 341 1156 z m 325 657 b 344 647 333 657 343 652 b 354 611 351 636 351 622 b 356 582 356 600 356 590 b 317 454 356 534 343 491 b 89 302 269 383 177 302 l 78 302 b 58 317 66 302 58 310 b 59 321 58 318 58 320 b 238 552 89 439 170 472 b 315 651 268 585 292 613 b 325 657 318 655 321 657 z', + }, + flag32ndUp: { + x_min: 0, + x_max: 261, + y_min: -812, + y_max: 149, + ha: 961, + o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 366 -289 369 -315 369 -302 b 220 -58 350 -202 317 -163 b 46 187 148 20 71 43 b 20 215 45 200 35 215 b 0 197 12 215 0 207 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 56 -390 147 -527 88 -495 b 73 -367 53 -380 60 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z', + }, + flag32ndDown: { + x_min: 0, + x_max: 273, + y_min: -172, + y_max: 812, + ha: 984, + o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -229 b 20 -248 0 -242 9 -248 b 48 -219 35 -248 46 -232 b 229 36 72 -69 154 -46 b 380 278 330 145 364 186 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z', + }, + flag64thUp: { + x_min: 0, + x_max: 261, + y_min: -812, + y_max: 347, + ha: 1159, + o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 220 228 350 84 317 122 b 46 472 148 305 71 328 b 20 500 45 485 32 500 b 0 482 10 500 0 492 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 24 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 58 187 148 20 82 43 b 56 193 58 189 58 192 b 300 24 138 193 220 157 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 b 73 -367 52 -376 63 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z', + }, + flag64thDown: { + x_min: 0, + x_max: 273, + y_min: -376, + y_max: 812, + ha: 1188, + o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -523 b 20 -541 0 -534 9 -541 b 48 -513 35 -541 46 -526 b 229 -258 72 -363 154 -340 b 380 -16 330 -148 364 -108 b 384 27 383 -1 384 13 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z m 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 b 229 36 75 -86 145 -55 b 311 128 264 73 289 102 z', + }, + flag128thUp: { + x_min: 0, + x_max: 261, + y_min: -812, + y_max: 533, + ha: 1345, + o: 'm 374 -969 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 341 75 360 26 353 50 b 369 222 354 111 369 167 b 366 264 369 236 369 251 b 220 495 350 351 317 390 b 46 740 148 573 71 596 b 22 768 45 753 35 768 b 0 750 10 768 0 760 l 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 z m 300 292 b 321 223 315 264 321 242 b 317 193 321 212 318 203 b 301 135 314 180 308 158 b 220 228 281 161 255 190 b 55 461 151 304 79 327 b 300 292 134 461 220 426 z m 300 24 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 56 187 148 20 81 43 b 55 193 56 189 56 192 b 300 24 137 193 220 157 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 315 -657 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 b 73 -367 53 -376 62 -367 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 z', + }, + flag128thDown: { + x_min: 0, + x_max: 273, + y_min: -580, + y_max: 812, + ha: 1392, + o: 'm 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -816 b 20 -835 0 -828 7 -835 b 48 -806 33 -835 46 -819 b 229 -552 72 -657 154 -634 b 380 -310 330 -442 364 -402 b 384 -266 383 -295 384 -281 b 351 -105 384 -206 366 -143 b 384 27 372 -66 384 -16 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 356 783 356 782 356 783 l 351 791 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z m 330 350 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 z m 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 b 229 36 75 -86 145 -55 b 311 128 264 73 289 102 z m 330 -238 b 334 -268 331 -248 334 -256 b 311 -340 334 -287 328 -310 b 56 -516 229 -478 137 -516 b 229 -258 75 -380 145 -348 b 311 -166 264 -220 289 -192 z', + }, + accidentalFlat: { + x_min: 0, + x_max: 226, + y_min: -175, + y_max: 439, + ha: 614, + o: 'm 17 -245 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 82 -225 117 -186 b 325 82 281 -72 325 16 b 196 220 325 164 262 216 b 117 196 171 220 137 209 b 85 176 108 189 92 176 b 78 177 82 176 81 176 b 62 202 68 181 62 192 b 72 608 63 233 72 579 b 45 632 72 624 59 632 b 0 592 24 632 1 618 b 17 -245 0 592 6 -230 z m 68 -117 b 63 27 68 -117 63 -30 b 66 73 63 50 65 68 b 167 144 76 102 134 144 b 226 60 209 144 226 96 b 98 -134 226 -17 160 -95 b 84 -138 92 -137 88 -138 b 68 -117 71 -138 68 -124 z', + }, + accidentalNatural: { + x_min: 0, + x_max: 168, + y_min: -335, + y_max: 341, + ha: 676, + o: 'm 203 261 b 197 259 200 261 199 259 b 68 226 197 259 105 226 b 53 233 59 226 53 228 l 53 474 b 36 491 53 484 45 491 l 17 491 b 0 474 7 491 0 484 l 0 -268 b 13 -281 0 -276 4 -281 l 16 -279 b 22 -278 17 -279 20 -279 b 164 -235 42 -269 122 -235 b 189 -251 179 -235 189 -239 l 189 -465 b 206 -482 189 -475 196 -482 l 225 -482 b 242 -465 233 -482 242 -475 l 242 258 b 230 269 242 265 236 269 b 225 268 229 269 226 269 z m 53 56 b 176 114 53 76 141 114 b 189 107 184 114 189 112 l 189 -42 b 71 -101 189 -68 107 -101 b 53 -92 60 -101 53 -98 z', + }, + accidentalSharp: { + x_min: 0, + x_max: 249, + y_min: -348, + y_max: 350, + ha: 698, + o: 'm 341 170 b 359 194 351 174 359 186 l 359 297 b 348 308 359 304 354 308 b 341 307 346 308 344 308 b 305 294 341 307 312 295 b 285 312 295 294 285 301 l 285 488 b 265 504 285 497 276 504 b 242 488 251 504 242 497 l 242 301 b 223 259 240 287 236 268 b 132 223 206 249 157 229 b 115 252 120 223 115 240 l 115 425 b 95 441 115 433 105 441 b 72 425 81 441 72 433 l 72 230 b 55 192 72 210 63 196 b 17 176 46 187 17 176 b 0 153 7 173 0 161 l 0 50 b 13 37 0 42 4 37 l 16 39 b 50 53 17 39 39 48 l 52 55 b 72 29 63 55 72 40 l 72 -114 b 56 -147 72 -130 65 -143 b 17 -163 48 -150 17 -163 b 0 -186 7 -166 0 -177 l 0 -288 b 13 -301 0 -297 4 -301 l 16 -300 b 50 -287 17 -300 37 -291 b 55 -285 52 -285 53 -285 b 72 -308 65 -285 72 -301 l 72 -485 b 91 -501 72 -494 81 -501 b 115 -485 105 -501 115 -494 l 115 -285 b 130 -253 115 -266 122 -256 l 217 -217 b 219 -217 217 -217 219 -217 l 222 -216 b 242 -242 235 -216 242 -233 l 242 -422 b 261 -438 242 -431 251 -438 b 285 -422 276 -438 285 -431 l 285 -217 b 301 -184 285 -206 291 -189 b 341 -168 311 -180 341 -168 b 359 -144 351 -164 359 -153 l 359 -42 b 348 -30 359 -35 354 -30 b 341 -32 346 -30 344 -30 l 304 -46 b 285 -20 295 -46 285 -37 l 285 114 b 304 156 285 124 292 151 z m 242 -65 b 132 -122 233 -94 166 -122 b 115 -115 124 -122 117 -120 b 111 -43 112 -109 111 -78 b 115 63 111 1 112 52 b 220 118 118 88 184 118 b 242 109 230 118 239 115 b 248 27 245 102 248 66 b 242 -65 248 -12 245 -52 z', + }, + accidentalDoubleSharp: { + x_min: 0, + x_max: 247, + y_min: -125, + y_max: 127, + ha: 252, + o: 'm 274 -46 b 206 1 258 -37 206 -9 b 274 50 206 22 253 43 b 278 50 275 50 276 50 l 287 49 b 346 63 304 49 331 52 b 356 115 353 71 356 92 b 292 183 356 174 351 183 b 233 173 266 183 240 180 b 226 117 228 168 226 143 b 179 49 219 101 196 49 b 130 117 158 49 135 96 b 118 173 130 141 125 167 b 66 183 112 180 89 183 b 7 173 42 183 16 180 b 0 120 3 170 0 145 b 7 63 0 94 3 68 b 68 49 17 55 43 49 b 82 50 73 49 78 50 b 150 3 98 42 150 13 b 84 -46 150 -16 104 -39 l 69 -46 b 7 -56 43 -46 16 -49 b 0 -111 3 -60 0 -85 b 7 -166 0 -137 3 -163 b 65 -180 17 -174 40 -180 b 118 -166 86 -180 109 -176 b 130 -111 127 -158 130 -134 b 132 -105 130 -109 131 -107 b 177 -45 141 -85 158 -45 b 226 -111 196 -45 220 -91 b 233 -166 226 -137 228 -161 b 291 -180 243 -174 266 -180 b 356 -114 346 -180 356 -166 b 346 -56 356 -89 351 -63 b 288 -46 338 -49 312 -46 z', + }, + accidentalDoubleFlat: { + x_min: 0, + x_max: 411, + y_min: -175, + y_max: 437, + ha: 612, + o: 'm 452 217 b 384 194 426 217 408 207 b 350 176 374 189 363 176 b 343 177 347 176 344 176 b 328 202 333 180 328 190 b 337 606 328 232 337 579 b 310 629 337 622 324 629 b 265 592 291 629 268 616 b 269 194 265 592 266 395 b 196 217 248 209 223 217 l 187 217 b 120 194 160 217 143 207 b 85 176 108 189 98 176 b 78 177 82 176 81 176 b 62 202 68 180 62 190 b 72 606 62 232 72 579 b 45 629 72 622 59 629 b 0 592 24 629 1 616 b 17 -245 0 592 7 -232 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 84 -226 120 -186 b 274 -50 206 -124 246 -85 b 284 -245 276 -158 279 -240 b 295 -252 288 -251 292 -252 b 304 -249 300 -252 304 -249 b 416 -163 348 -226 383 -186 b 592 82 546 -72 592 16 b 461 217 592 163 528 216 z m 96 -134 b 84 -138 92 -137 86 -138 b 68 -115 72 -138 68 -124 b 63 26 68 -115 63 -30 b 66 72 63 49 65 66 b 168 144 75 101 134 144 b 226 59 212 144 226 95 b 96 -134 226 -22 161 -94 z m 361 -134 b 348 -138 356 -137 351 -138 b 333 -115 337 -138 333 -124 b 328 39 333 -115 328 -16 b 330 72 328 55 328 68 b 433 144 338 101 399 144 b 468 130 448 144 459 140 b 490 59 481 112 490 88 b 361 -134 490 -22 426 -94 z', + }, + accidentalParensLeft: { + x_min: 0, + x_max: 141, + y_min: -248, + y_max: 247, + ha: 495, + o: 'm 203 331 l 203 351 b 202 356 203 354 203 356 b 0 0 60 281 0 140 b 199 -357 0 -144 60 -269 b 203 -354 200 -357 203 -356 l 203 -333 b 200 -327 203 -330 202 -328 b 86 0 118 -253 86 -160 b 200 324 86 158 120 251 b 203 331 202 325 203 327 z', + }, + accidentalParensRight: { + x_min: 0, + x_max: 141, + y_min: -248, + y_max: 247, + ha: 495, + o: 'm 0 331 b 3 324 0 327 1 325 b 117 0 84 251 117 158 b 3 -327 117 -160 85 -253 b 0 -333 1 -328 0 -330 l 0 -354 b 4 -357 0 -356 3 -357 b 203 0 143 -269 203 -144 b 1 356 203 140 143 281 b 0 351 0 356 0 354 z', + }, + accidentalQuarterToneFlatStein: { + x_min: 1, + x_max: 227, + y_min: -175, + y_max: 439, + ha: 614, + o: 'm 310 -245 b 327 592 321 -230 327 592 b 282 632 325 618 302 632 b 255 608 268 632 255 624 b 265 202 255 579 264 233 b 249 177 265 192 259 181 b 242 176 246 176 245 176 b 210 196 235 176 219 189 b 131 220 190 209 156 220 b 1 85 65 216 1 164 b 174 -161 1 16 46 -72 b 288 -249 210 -186 245 -225 b 297 -252 288 -249 292 -252 b 310 -245 301 -252 305 -251 z m 259 -117 b 243 -138 259 -124 256 -138 b 229 -134 239 -138 235 -137 b 101 60 167 -95 101 -17 b 160 144 101 96 118 144 b 261 73 193 144 251 102 b 264 27 262 68 264 50 b 259 -117 264 -30 259 -117 z', + }, + accidentalThreeQuarterTonesFlatZimmermann: { + x_min: 1, + x_max: 466, + y_min: -175, + y_max: 439, + ha: 614, + o: 'm 363 -245 b 376 -252 367 -251 372 -252 b 384 -249 380 -252 384 -249 b 497 -161 428 -226 464 -186 b 671 84 625 -72 671 16 b 541 220 671 164 606 217 b 513 217 531 220 523 219 b 464 196 495 212 480 206 b 431 176 452 189 442 176 b 423 177 428 176 426 176 b 408 202 413 180 408 190 l 419 608 b 392 632 419 625 406 632 b 346 592 372 632 347 618 b 363 -245 346 592 351 -230 z m 289 -249 b 297 -252 289 -249 292 -252 b 310 -245 300 -252 305 -251 b 328 592 321 -230 328 592 b 282 631 327 618 302 631 b 255 608 268 631 255 624 l 266 202 b 251 177 266 190 261 180 b 243 176 248 176 246 176 b 210 196 232 176 222 189 b 164 216 196 204 180 210 l 163 217 b 132 220 151 219 143 220 b 1 84 65 217 1 163 b 177 -163 1 16 48 -72 b 289 -249 210 -186 245 -226 z m 262 72 b 265 26 264 66 265 49 b 261 -115 265 -30 261 -115 b 245 -138 261 -124 258 -138 b 230 -134 240 -138 236 -137 b 102 60 166 -92 102 -20 b 124 128 102 88 111 112 b 161 144 134 138 147 144 b 199 134 173 144 184 141 b 262 72 219 122 256 92 z m 413 -115 b 409 26 413 -115 409 -30 b 412 72 409 49 410 66 b 514 144 420 102 480 144 b 570 60 557 144 570 96 b 442 -134 570 -23 508 -91 b 429 -138 436 -137 433 -138 b 413 -115 418 -138 413 -124 z', + }, + accidentalQuarterToneSharpStein: { + x_min: 0, + x_max: 179, + y_min: -353, + y_max: 307, + ha: 660, + o: 'm 258 240 b 246 252 258 248 252 252 b 240 251 245 252 242 252 b 168 225 240 251 171 225 b 150 253 156 225 150 240 l 150 426 b 130 442 150 435 141 442 b 105 418 108 442 105 429 l 105 230 b 91 193 105 219 101 202 b 17 161 65 183 42 171 b 0 138 9 158 0 147 l 0 36 b 13 23 0 27 4 23 l 16 24 b 86 53 17 24 73 49 l 88 55 b 107 30 98 55 107 42 l 107 -114 b 92 -145 107 -130 101 -143 l 17 -177 b 0 -200 9 -180 0 -192 l 0 -302 b 13 -315 0 -311 4 -315 l 16 -314 b 85 -285 17 -314 72 -291 b 105 -312 92 -282 105 -301 l 105 -492 b 125 -508 105 -501 114 -508 b 150 -484 147 -508 150 -498 l 150 -285 b 151 -274 150 -281 150 -278 b 164 -253 153 -265 158 -256 b 240 -225 176 -251 240 -225 b 258 -202 249 -222 258 -210 l 258 -99 b 245 -86 258 -91 253 -86 l 242 -88 b 240 -88 242 -88 240 -88 l 240 -86 b 168 -115 240 -86 174 -114 b 148 -91 158 -115 148 -107 l 148 43 b 167 85 148 55 156 81 b 240 114 180 91 240 114 b 258 138 249 118 258 128 z', + }, + accidentalThreeQuarterTonesSharpStein: { + x_min: 3, + x_max: 317, + y_min: -347, + y_max: 369, + ha: 716, + o: 'm 456 324 b 448 336 456 330 454 336 b 393 317 445 336 400 320 b 389 315 392 315 390 315 b 383 325 386 315 383 318 l 383 508 b 360 531 383 528 379 531 b 337 508 341 531 337 527 l 337 318 b 325 291 337 300 334 294 b 268 268 320 288 287 276 b 253 281 256 268 253 274 l 253 464 b 230 487 253 484 249 487 b 207 464 212 487 207 482 l 207 264 b 194 240 207 253 204 245 l 132 217 b 131 217 132 217 132 217 l 130 216 b 118 229 122 216 118 220 l 118 420 b 95 444 118 439 114 444 b 72 420 76 444 72 439 l 72 212 b 60 190 72 197 68 193 l 16 173 b 4 161 9 170 4 167 l 4 50 b 13 39 4 45 9 39 b 58 55 16 39 46 49 b 63 56 60 56 62 56 b 72 42 71 56 72 50 l 72 -125 b 58 -150 72 -137 65 -147 l 16 -166 b 4 -177 9 -168 4 -171 l 4 -289 b 14 -301 4 -295 9 -301 b 53 -287 16 -301 40 -291 b 62 -285 56 -285 59 -285 b 72 -298 69 -285 72 -289 l 72 -477 b 95 -500 72 -495 76 -500 b 118 -477 114 -500 118 -495 l 118 -278 b 127 -259 118 -269 121 -261 l 196 -232 b 207 -243 204 -232 207 -235 l 207 -432 b 230 -455 207 -452 212 -455 b 253 -432 249 -455 253 -451 l 253 -228 b 268 -204 253 -216 259 -207 l 320 -186 b 328 -183 323 -184 325 -183 b 337 -194 334 -183 337 -187 l 337 -387 b 360 -410 337 -408 341 -410 b 383 -387 379 -410 383 -406 l 383 -174 b 395 -157 383 -166 390 -158 l 445 -138 b 456 -127 452 -135 456 -132 l 456 -14 b 448 -3 456 -10 454 -3 b 397 -22 445 -3 408 -17 l 396 -23 b 383 -6 387 -23 383 -16 l 383 163 b 392 181 383 173 384 179 b 445 202 397 183 445 202 b 456 213 452 203 456 207 z m 337 -45 b 266 -78 333 -56 287 -78 b 258 -75 262 -78 259 -76 b 253 19 255 -71 253 -27 b 258 130 253 69 255 122 b 333 163 264 141 315 163 b 337 161 334 163 337 161 b 341 78 340 157 341 120 b 337 -45 341 24 340 -37 z m 118 -127 b 114 -48 114 -121 114 -86 b 118 78 114 6 115 68 b 200 114 122 91 180 114 b 207 111 204 114 206 112 b 212 22 210 107 212 66 b 207 -94 212 -29 210 -85 b 127 -130 203 -108 148 -130 b 118 -127 122 -130 120 -128 z', + }, + accidentalBuyukMucennebFlat: { + x_min: 1, + x_max: 287, + y_min: -174, + y_max: 438, + ha: 612, + o: 'm 379 452 b 370 464 379 458 377 464 b 164 389 366 464 170 392 b 156 396 163 389 156 393 b 157 436 157 409 157 428 b 167 452 157 445 161 449 b 366 526 173 455 366 526 b 379 540 374 528 379 534 l 379 611 b 370 622 379 616 377 622 b 170 550 366 622 174 552 b 160 557 163 550 160 554 b 161 608 160 585 161 602 b 134 631 161 624 148 631 b 89 590 114 631 91 616 l 89 528 b 81 517 89 526 88 518 b 16 491 76 514 16 491 b 1 480 6 490 1 485 l 1 406 b 13 395 1 400 4 395 l 14 396 b 79 419 16 396 72 415 b 89 412 86 419 89 415 b 91 376 89 399 89 386 b 82 359 91 364 89 361 b 16 331 76 356 16 331 b 1 321 6 331 1 328 l 1 248 b 13 236 1 242 4 236 b 79 262 16 236 71 258 b 92 251 89 262 92 256 b 107 -242 95 23 101 -236 b 120 -251 111 -249 115 -251 b 128 -248 124 -251 128 -248 b 240 -160 171 -225 207 -184 b 413 84 367 -71 413 16 b 284 220 413 166 350 216 b 207 196 259 220 229 209 b 170 176 196 190 184 176 l 168 177 b 151 203 157 181 151 192 b 153 269 151 210 151 236 b 163 292 153 275 153 289 b 366 367 173 297 366 367 b 379 383 374 370 379 376 z m 186 -132 b 173 -137 180 -135 176 -137 b 157 -114 161 -137 157 -122 b 153 35 157 -114 153 -22 b 154 73 153 53 153 68 b 219 135 160 92 197 124 b 255 144 232 141 243 144 b 292 130 269 144 282 140 b 314 62 305 114 314 91 b 186 -132 314 -17 251 -94 z', + }, + accidentalBakiyeFlat: { + x_min: -1, + x_max: 286, + y_min: -175, + y_max: 439, + ha: 614, + o: 'm 377 454 b 369 467 377 458 376 467 b 363 465 367 467 364 467 b 161 390 363 465 167 393 b 153 399 154 390 153 395 b 157 608 154 494 157 593 b 130 632 157 624 144 632 b 86 592 111 632 88 618 b 88 377 86 592 86 501 b 76 356 88 373 88 360 l 12 331 b -1 320 3 330 -1 327 l -1 248 b 9 236 -1 242 1 236 b 81 264 12 236 78 261 b 89 258 86 264 89 261 b 104 -245 92 30 96 -236 b 115 -252 108 -251 112 -252 b 124 -249 120 -252 124 -249 b 239 -161 167 -226 203 -186 b 412 84 367 -72 412 17 b 282 220 412 166 348 216 b 255 216 274 220 264 219 b 203 196 238 212 222 206 b 171 177 193 189 177 177 b 163 179 168 177 166 177 b 147 202 153 181 147 192 b 147 216 147 204 147 209 l 150 262 b 150 276 150 269 150 275 b 158 291 150 287 154 289 b 363 370 163 292 363 370 b 377 384 373 373 377 379 z m 181 -134 b 167 -138 176 -137 171 -138 b 153 -117 156 -138 153 -125 b 148 27 153 -117 148 -30 b 151 73 148 50 150 68 b 255 144 161 105 219 144 b 312 62 298 144 312 99 b 181 -134 312 -19 249 -96 z', + }, + accidentalKomaSharp: { + x_min: 0, + x_max: 229, + y_min: -337, + y_max: 322, + ha: 659, + o: 'm 312 151 b 330 176 323 156 330 166 l 330 278 b 320 289 330 285 327 289 b 312 288 318 289 315 289 b 200 246 312 288 203 248 b 181 275 187 246 181 264 l 181 448 b 163 464 181 456 173 464 b 138 441 140 464 138 452 l 138 253 b 122 215 137 240 132 225 b 17 177 92 203 45 177 b 0 153 7 173 0 163 l 0 50 b 10 39 0 43 4 39 b 17 40 13 39 14 39 l 128 81 b 138 52 138 81 138 63 l 138 -91 b 124 -124 138 -107 132 -120 b 17 -167 115 -127 17 -167 b 0 -192 7 -171 0 -181 l 0 -294 b 10 -305 0 -301 4 -305 b 17 -304 13 -305 14 -305 b 128 -261 17 -304 117 -264 l 130 -259 b 138 -276 137 -259 138 -268 l 138 -469 b 157 -485 138 -478 147 -485 b 181 -462 179 -485 181 -475 l 181 -262 b 183 -252 181 -258 181 -255 b 197 -232 186 -243 190 -235 b 312 -187 207 -228 312 -187 b 330 -163 323 -183 330 -173 l 330 -60 b 320 -49 330 -53 327 -49 b 312 -50 318 -49 315 -49 l 200 -94 b 193 -95 197 -95 194 -95 b 181 -68 183 -95 181 -85 l 181 66 b 200 108 181 92 189 104 z', + }, + accidentalKucukMucennebSharp: { + x_min: -1, + x_max: 339, + y_min: -338, + y_max: 321, + ha: 659, + o: 'm 264 92 b 271 102 264 98 265 99 l 395 150 b 412 174 405 154 412 164 l 412 276 b 402 288 412 284 409 288 b 395 287 400 288 397 288 b 282 245 395 287 285 246 b 264 274 269 245 264 262 l 264 446 b 245 462 264 455 255 462 b 220 439 222 462 220 451 l 220 252 b 204 213 219 239 215 223 b 99 176 174 202 127 176 b 82 151 89 171 82 161 l 82 49 b 92 37 82 42 86 37 b 99 39 95 37 96 37 l 210 79 b 216 81 212 81 215 81 b 220 78 219 81 220 79 l 220 56 b 216 46 220 52 220 48 b 16 -29 210 45 16 -29 b -1 -45 4 -32 -1 -36 l -1 -138 b 12 -154 -1 -145 3 -154 l 215 -79 b 220 -84 219 -79 220 -81 l 220 -105 b 210 -122 220 -115 219 -120 b 99 -168 202 -127 99 -168 b 82 -193 89 -173 82 -183 l 82 -295 b 92 -307 82 -302 86 -307 b 99 -305 95 -307 96 -307 b 210 -262 99 -305 199 -265 l 212 -261 b 220 -278 219 -261 220 -269 l 220 -471 b 239 -487 220 -480 229 -487 b 264 -464 261 -487 264 -477 l 264 -264 b 265 -253 264 -259 264 -256 b 279 -233 268 -245 272 -236 b 395 -189 289 -229 395 -189 b 412 -164 405 -184 412 -174 l 412 -62 b 402 -50 412 -55 409 -50 b 395 -52 400 -50 397 -50 l 278 -96 b 264 -86 268 -96 264 -94 l 264 -68 b 269 -59 264 -62 265 -60 b 471 17 274 -58 471 17 b 488 36 484 22 488 27 l 488 127 b 475 144 488 134 487 144 l 472 141 b 471 141 472 141 471 141 l 471 143 b 272 68 471 143 282 71 l 269 66 b 264 71 264 66 264 69 z', + }, + accidentalKoron: { + x_min: 0, + x_max: 300, + y_min: -472, + y_max: 157, + ha: 629, + o: 'm 432 -4 b 415 10 432 1 418 9 l 4 226 b 0 223 1 226 0 225 l 0 -672 b 7 -680 0 -677 3 -680 l 45 -680 b 52 -672 49 -680 52 -677 l 52 -193 l 415 -22 b 432 -4 418 -20 432 -13 z m 52 -137 l 52 144 l 327 -7 z', + }, + accidentalSori: { + x_min: 0, + x_max: 421, + y_min: -318, + y_max: 328, + ha: 646, + o: 'm 606 10 b 589 23 606 16 592 22 l 382 109 l 382 465 b 374 472 382 469 379 472 l 337 472 b 330 465 333 472 330 469 l 330 132 l 183 194 l 183 425 b 176 432 183 429 180 432 l 138 432 b 131 425 134 432 131 429 l 131 216 l 3 269 b 0 265 0 269 0 266 l 0 223 b 3 213 0 216 0 215 l 131 160 l 131 -150 l 3 -203 b 0 -212 0 -204 0 -206 l 0 -255 b 3 -259 0 -258 1 -259 l 131 -204 l 131 -451 b 138 -458 131 -455 134 -458 l 176 -458 b 183 -451 180 -458 183 -455 l 183 -183 l 330 -120 l 330 -410 b 337 -418 330 -415 333 -418 l 374 -418 b 382 -410 379 -418 382 -415 l 382 -98 l 589 -9 b 606 10 592 -9 606 0 z m 183 -128 l 183 138 l 330 76 l 330 -66 z m 382 -45 l 382 55 l 501 6 z', + }, + articAccentAbove: { + x_min: 0, + x_max: 339, + y_min: 1, + y_max: 245, + ha: 244, + o: 'm 469 151 b 488 177 488 156 488 166 b 469 203 488 189 488 197 l 37 350 b 24 353 32 351 26 353 b 3 333 12 353 7 344 b 0 318 1 327 0 323 b 20 298 0 311 4 304 b 346 187 20 298 331 193 b 356 177 353 186 356 181 b 344 167 356 173 353 170 b 20 58 328 163 20 58 b 0 36 4 50 0 43 b 3 23 0 32 1 27 b 23 1 7 13 13 1 b 29 3 24 1 27 1 z', + }, + articAccentBelow: { + x_min: 0, + x_max: 339, + y_min: -244, + y_max: 0, + ha: 244, + o: 'm 469 -202 b 488 -176 488 -197 488 -187 b 469 -150 488 -164 488 -156 l 37 -3 b 24 0 32 -1 26 0 b 3 -20 12 0 7 -9 b 0 -35 1 -26 0 -30 b 20 -55 0 -42 4 -49 b 346 -166 20 -55 331 -160 b 356 -176 353 -167 356 -171 b 344 -186 356 -180 353 -183 b 20 -295 328 -190 20 -295 b 0 -317 4 -302 0 -310 b 3 -330 0 -321 1 -325 b 23 -351 7 -340 13 -351 b 29 -350 24 -351 27 -351 z', + }, + articTenutoAbove: { + x_min: -1, + x_max: 338, + y_min: 0, + y_max: 48, + ha: 48, + o: 'm 452 0 b 487 35 485 0 487 16 b 452 69 487 53 487 69 l 33 69 b -1 35 -1 69 -1 53 b 33 0 -1 16 -1 0 z', + }, + articTenutoBelow: { + x_min: -1, + x_max: 338, + y_min: -48, + y_max: 0, + ha: 48, + o: 'm 452 -69 b 487 -35 485 -69 487 -53 b 452 0 487 -16 487 0 l 33 0 b -1 -35 -1 0 -1 -16 b 33 -69 -1 -53 -1 -69 z', + }, + articStaccatoAbove: { + x_min: 0, + x_max: 84, + y_min: 0, + y_max: 84, + ha: 84, + o: 'm 121 60 b 60 121 121 94 94 121 b 0 60 27 121 0 94 b 60 0 0 27 27 0 b 121 60 94 0 121 27 z', + }, + articStaccatoBelow: { + x_min: 0, + x_max: 84, + y_min: -84, + y_max: 0, + ha: 84, + o: 'm 121 -60 b 60 0 121 -27 94 0 b 0 -60 27 0 0 -27 b 60 -121 0 -94 27 -121 b 121 -60 94 -121 121 -94 z', + }, + articStaccatissimoAbove: { + x_min: 1, + x_max: 100, + y_min: -2, + y_max: 293, + ha: 295, + o: 'm 72 422 b 1 390 35 422 3 409 b 72 -3 1 369 39 -3 b 144 389 108 -3 144 356 b 72 422 144 410 111 422 z', + }, + articStaccatissimoBelow: { + x_min: 1, + x_max: 100, + y_min: -295, + y_max: 0, + ha: 295, + o: 'm 72 -425 b 144 -392 111 -425 144 -413 b 72 0 144 -359 108 0 b 1 -393 39 0 1 -372 b 72 -425 3 -412 35 -425 z', + }, + articMarcatoAbove: { + x_min: -1, + x_max: 235, + y_min: -1, + y_max: 253, + ha: 254, + o: 'm 181 356 b 167 364 177 361 173 364 b 153 356 157 364 153 356 l 0 23 b -1 16 -1 20 -1 19 b 9 0 -1 9 1 1 b 16 -1 10 -1 14 -1 b 32 9 22 -1 29 1 b 112 186 32 9 109 180 b 118 190 114 189 115 190 b 127 186 121 190 124 189 b 209 9 128 180 209 9 b 225 0 213 3 219 0 l 323 0 b 338 16 333 1 338 7 b 337 23 338 19 338 22 z', + }, + articMarcatoBelow: { + x_min: -1, + x_max: 235, + y_min: -254, + y_max: 0, + ha: 254, + o: 'm 156 -357 b 170 -366 160 -363 164 -366 b 184 -357 180 -366 184 -357 l 337 -24 b 338 -17 338 -22 338 -20 b 328 -1 338 -10 336 -3 b 321 0 327 0 323 0 b 305 -10 315 0 308 -3 b 225 -187 305 -10 228 -181 b 219 -192 223 -190 222 -192 b 210 -187 216 -192 213 -190 b 128 -10 209 -181 128 -10 b 112 -1 124 -4 118 -1 l 14 -1 b -1 -17 4 -3 -1 -9 b 0 -24 -1 -20 -1 -23 z', + }, + fermataAbove: { + x_min: 3, + x_max: 605, + y_min: -3, + y_max: 329, + ha: 332, + o: 'm 435 318 b 818 36 742 318 804 91 b 821 26 819 32 819 27 b 851 -4 831 6 837 -4 b 871 16 864 -4 871 1 b 870 30 871 20 871 24 b 438 474 780 471 480 474 b 6 30 392 474 94 471 b 4 14 4 24 4 19 b 23 -4 4 0 12 -4 b 52 26 36 -4 43 6 b 56 39 53 27 55 33 b 435 318 73 98 138 318 z m 516 75 b 436 153 516 117 480 153 b 359 75 395 153 359 117 b 436 -4 359 32 395 -4 b 516 75 480 -4 516 32 z', + }, + fermataBelow: { + x_min: 3, + x_max: 605, + y_min: -332, + y_max: 0, + ha: 332, + o: 'm 435 -323 b 56 -43 138 -323 73 -102 b 52 -30 55 -37 53 -32 b 23 0 43 -10 36 0 b 4 -19 12 0 4 -4 b 6 -35 4 -23 4 -29 b 438 -478 94 -475 392 -478 b 870 -35 480 -478 780 -475 b 871 -20 871 -29 871 -24 b 851 0 871 -6 864 0 b 821 -30 837 0 831 -10 b 818 -40 819 -32 819 -36 b 435 -323 804 -95 742 -323 z m 516 -79 b 436 0 516 -36 480 0 b 359 -79 395 0 359 -36 b 436 -157 359 -121 395 -157 b 516 -79 480 -157 516 -121 z', + }, + fermataLongAbove: { + x_min: 0, + x_max: 603, + y_min: -1, + y_max: 333, + ha: 334, + o: 'm 72 480 b 0 441 32 480 0 462 l 0 19 b 35 0 0 9 16 0 b 71 19 55 0 71 9 l 71 289 b 433 315 71 307 252 315 b 798 289 615 315 798 307 l 798 19 b 832 0 798 9 814 0 b 868 19 852 0 868 9 l 868 441 b 796 480 868 462 837 480 z m 513 78 b 433 156 513 121 478 156 b 356 78 390 156 356 121 b 433 -1 356 35 390 -1 b 513 78 478 -1 513 35 z', + }, + fermataLongBelow: { + x_min: 0, + x_max: 603, + y_min: -333, + y_max: 1, + ha: 334, + o: 'm 513 -78 b 433 1 513 -35 478 1 b 356 -78 390 1 356 -35 b 433 -156 356 -121 390 -156 b 513 -78 478 -156 513 -121 z m 796 -480 b 868 -441 837 -480 868 -462 l 868 -19 b 832 0 868 -9 852 0 b 798 -19 814 0 798 -9 l 798 -289 b 433 -315 798 -307 615 -315 b 71 -289 252 -315 71 -307 l 71 -19 b 35 0 71 -9 55 0 b 0 -19 16 0 0 -9 l 0 -441 b 72 -480 0 -462 32 -480 z', + }, + fermataVeryLongAbove: { + x_min: 0, + x_max: 715, + y_min: 0, + y_max: 408, + ha: 408, + o: 'm 76 588 b 0 546 35 588 0 569 l 0 22 b 37 1 0 10 17 1 b 75 22 59 1 75 10 l 75 431 b 514 458 75 449 294 458 b 955 431 734 458 955 449 l 955 22 b 991 1 955 10 971 1 b 1030 22 1012 1 1030 10 l 1030 546 b 953 588 1030 569 995 588 z m 215 389 b 138 347 171 389 138 370 l 138 22 b 174 1 138 10 154 1 b 213 22 196 1 213 10 l 213 217 b 514 245 213 235 363 245 b 816 217 665 245 816 235 l 816 22 b 854 1 816 10 834 1 b 891 22 876 1 891 10 l 891 347 b 815 389 891 370 858 389 z m 606 84 b 521 167 606 130 569 167 b 439 84 475 167 439 130 b 521 0 439 39 475 0 b 606 84 569 0 606 39 z', + }, + fermataVeryLongBelow: { + x_min: 0, + x_max: 715, + y_min: -408, + y_max: 0, + ha: 408, + o: 'm 606 -84 b 521 0 606 -39 569 0 b 439 -84 475 0 439 -39 b 521 -167 439 -130 475 -167 b 606 -84 569 -167 606 -130 z m 815 -389 b 891 -347 858 -389 891 -370 l 891 -22 b 854 -1 891 -10 876 -1 b 816 -22 834 -1 816 -10 l 816 -217 b 514 -245 816 -235 665 -245 b 213 -217 363 -245 213 -235 l 213 -22 b 174 -1 213 -10 196 -1 b 138 -22 154 -1 138 -10 l 138 -347 b 215 -389 138 -370 171 -389 z m 953 -588 b 1030 -546 995 -588 1030 -569 l 1030 -22 b 991 -1 1030 -10 1012 -1 b 955 -22 971 -1 955 -10 l 955 -431 b 514 -458 955 -449 734 -458 b 75 -431 294 -458 75 -449 l 75 -22 b 37 -1 75 -10 59 -1 b 0 -22 17 -1 0 -10 l 0 -546 b 76 -588 0 -569 35 -588 z', + }, + fermataShortAbove: { + x_min: 0, + x_max: 604, + y_min: 0, + y_max: 341, + ha: 341, + o: 'm 78 0 b 88 6 81 0 82 3 b 435 328 134 45 412 328 b 783 3 458 328 742 39 b 793 0 786 1 793 0 l 865 0 b 870 4 865 0 870 1 b 867 10 870 6 868 9 b 435 491 805 69 474 491 b 3 10 397 491 69 75 b 0 4 1 9 0 6 b 4 0 0 1 4 0 z m 513 94 b 433 171 513 135 477 171 b 354 94 390 171 354 135 b 433 13 354 49 390 13 b 513 94 477 13 513 49 z', + }, + fermataShortBelow: { + x_min: 0, + x_max: 604, + y_min: -341, + y_max: 0, + ha: 341, + o: 'm 4 0 b 0 -4 4 0 0 -1 b 3 -10 0 -6 1 -9 b 435 -491 69 -75 397 -491 b 867 -10 474 -491 805 -69 b 870 -4 868 -9 870 -6 b 865 0 870 -1 865 0 l 793 0 b 783 -3 793 0 786 -1 b 435 -328 742 -39 458 -328 b 88 -6 412 -328 134 -45 b 78 0 82 -3 81 0 z m 513 -94 b 433 -13 513 -49 477 -13 b 354 -94 390 -13 354 -49 b 433 -171 354 -135 390 -171 b 513 -94 477 -171 513 -135 z', + }, + breathMarkComma: { + x_min: 1, + x_max: 152, + y_min: 2, + y_max: 251, + ha: 249, + o: 'm 104 361 b 1 271 42 361 1 321 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 17 32 29 26 26 l 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 z', + }, + breathMarkUpbow: { + x_min: 1, + x_max: 249, + y_min: 1, + y_max: 495, + ha: 494, + o: 'm 181 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 z', + }, + caesura: { + x_min: 0, + x_max: 384, + y_min: -1, + y_max: 532, + ha: 533, + o: 'm 40 -1 b 78 26 58 -1 72 9 l 321 713 b 323 726 323 717 323 721 b 282 766 323 747 304 766 b 245 739 265 766 251 756 l 3 52 b 0 37 1 48 0 42 b 27 1 0 22 10 7 b 40 -1 32 -1 36 -1 z m 308 26 l 552 713 b 553 726 553 717 553 721 b 513 766 553 747 534 766 b 475 739 495 766 481 756 l 232 52 b 230 39 230 48 230 43 b 258 1 230 23 240 7 b 271 -1 262 -1 266 -1 b 308 26 287 -1 302 9 z', + }, + caesuraCurved: { + x_min: 0, + x_max: 373, + y_min: 0, + y_max: 530, + ha: 530, + o: 'm 491 763 b 445 719 468 763 446 744 b 252 98 432 507 340 295 l 226 39 b 223 27 225 35 223 32 b 252 0 223 13 233 0 b 276 16 262 0 272 6 b 537 716 386 230 537 478 b 491 763 537 742 518 763 z m 29 0 b 53 16 39 0 48 6 l 82 69 b 314 716 187 264 314 498 b 268 763 314 742 295 763 b 222 719 245 763 223 744 b 29 98 209 507 117 295 l 3 39 b 0 29 1 36 0 33 b 29 0 0 14 12 0 z', + }, + restMaxima: { + x_min: 0, + x_max: 381, + y_min: -249, + y_max: 250, + ha: 499, + o: 'm 180 -330 l 180 331 b 156 360 180 356 170 360 l 23 360 b 0 331 10 360 0 356 l 0 -330 b 23 -359 0 -354 10 -359 l 156 -359 b 180 -330 170 -359 180 -354 z m 549 -330 l 549 331 b 524 360 549 356 539 360 l 392 360 b 369 331 379 360 369 356 l 369 -330 b 392 -359 369 -354 379 -359 l 524 -359 b 549 -330 539 -359 549 -354 z', + }, + restDoubleWhole: { + x_min: 0, + x_max: 125, + y_min: 0, + y_max: 250, + ha: 250, + o: 'm 180 22 l 180 338 b 156 360 180 350 170 360 l 23 360 b 0 338 10 360 0 350 l 0 22 b 23 0 0 10 10 0 l 156 0 b 180 22 170 0 180 10 z', + }, + restWhole: { + x_min: 0, + x_max: 282, + y_min: -135, + y_max: 9, + ha: 144, + o: 'm 406 -157 l 406 -24 b 369 13 406 -3 389 13 l 37 13 b 0 -24 16 13 0 -3 l 0 -157 b 37 -194 0 -177 16 -194 l 369 -194 b 406 -157 389 -194 406 -177 z', + }, + restWholeLegerLine: { + x_min: -117, + x_max: 399, + y_min: -135, + y_max: 20, + ha: 155, + o: 'm -143 29 b -168 3 -157 29 -168 17 b -143 -23 -168 -12 -157 -23 l 0 -23 l 0 -157 b 37 -194 0 -177 16 -194 l 369 -194 b 406 -157 389 -194 406 -177 l 406 -24 b 549 -23 406 -23 406 -23 b 575 3 563 -23 575 -12 b 549 29 575 17 563 29 z', + }, + restHalf: { + x_min: 0, + x_max: 282, + y_min: -2, + y_max: 142, + ha: 144, + o: 'm 406 35 l 406 167 b 369 204 406 189 389 204 l 37 204 b 0 167 16 204 0 189 l 0 35 b 37 -3 0 14 16 -3 l 369 -3 b 406 35 389 -3 406 14 z', + }, + restHalfLegerLine: { + x_min: -117, + x_max: 399, + y_min: -13, + y_max: 142, + ha: 155, + o: 'm 549 -19 b 575 7 563 -19 575 -7 b 549 33 575 22 563 33 b 406 35 406 33 406 33 l 406 167 b 369 204 406 187 389 204 l 37 204 b 0 167 16 204 0 187 l 0 33 l -143 33 b -168 7 -157 33 -168 22 b -143 -19 -168 -7 -157 -19 z', + }, + restQuarter: { + x_min: 1, + x_max: 270, + y_min: -375, + y_max: 373, + ha: 748, + o: 'm 112 -55 b 174 -141 135 -84 156 -111 b 183 -161 177 -147 183 -158 b 181 -167 183 -163 183 -166 b 166 -174 179 -173 173 -174 b 143 -170 160 -174 148 -171 b 137 -170 141 -170 138 -170 l 125 -166 b 1 -304 50 -166 1 -233 b 168 -527 1 -376 63 -446 b 206 -540 180 -536 194 -540 b 228 -531 216 -540 226 -537 b 230 -521 229 -527 230 -524 b 207 -487 230 -508 219 -497 b 170 -435 189 -487 173 -448 b 164 -397 166 -423 164 -410 b 255 -292 164 -338 194 -292 b 369 -317 297 -292 344 -308 l 370 -318 b 382 -320 376 -320 379 -320 b 389 -314 386 -320 389 -318 b 336 -232 389 -297 351 -249 b 236 -32 281 -166 236 -112 b 236 -27 236 -30 236 -29 l 238 -17 b 238 -13 238 -16 238 -14 b 333 199 243 71 295 140 b 338 220 337 206 338 213 b 333 248 338 235 333 248 b 95 526 333 248 120 501 b 69 537 88 533 78 537 b 40 507 55 537 40 527 b 46 484 40 500 42 492 b 134 291 52 468 134 395 b 48 108 134 238 112 176 b 27 66 33 94 27 78 b 42 32 27 46 42 32 z', + }, + rest8th: { + x_min: 0, + x_max: 247, + y_min: -251, + y_max: 174, + ha: 425, + o: 'm 193 154 b 96 251 193 207 150 251 b 0 154 43 251 0 207 b 39 81 0 124 17 98 b 117 56 62 65 89 56 b 173 66 137 56 157 60 b 225 88 193 72 206 78 b 232 89 228 89 230 89 b 239 76 238 89 239 84 b 238 60 239 72 239 66 b 104 -343 233 39 130 -248 b 145 -361 104 -360 137 -361 b 196 -347 161 -361 181 -359 b 341 161 200 -344 341 161 b 356 217 347 187 354 210 b 338 240 356 232 341 239 b 323 235 336 240 331 240 b 193 140 312 226 240 140 z', + }, + rest16th: { + x_min: 0, + x_max: 320, + y_min: -500, + y_max: 179, + ha: 679, + o: 'm 300 160 b 202 258 300 215 256 258 b 104 160 148 258 104 215 b 219 62 104 101 164 62 b 331 94 258 62 298 75 b 341 96 336 95 338 96 b 348 86 346 96 348 94 b 265 -173 348 63 275 -151 b 194 -217 253 -200 215 -217 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 151 -105 b 0 -203 43 -105 0 -148 b 115 -301 0 -262 60 -301 b 223 -271 153 -301 190 -288 b 229 -279 226 -271 229 -274 l 228 -281 b 228 -282 228 -282 228 -282 l 91 -690 b 91 -691 91 -690 91 -691 l 89 -693 b 134 -720 89 -706 102 -720 b 189 -687 176 -720 183 -703 l 356 -138 b 420 81 393 -16 420 81 b 459 226 420 81 456 207 b 461 232 459 229 461 230 b 446 248 461 240 449 246 b 431 242 439 248 435 245 b 300 145 420 233 348 147 z', + }, + rest32nd: { + x_min: 0, + x_max: 363, + y_min: -500, + y_max: 426, + ha: 926, + o: 'm 508 603 b 492 598 501 603 497 600 b 361 503 482 590 410 503 l 361 516 b 264 613 361 570 318 613 b 166 516 210 613 166 570 b 206 444 166 487 183 461 b 246 423 217 433 232 428 b 284 418 258 420 269 418 b 393 449 321 418 360 432 b 399 451 395 451 397 451 b 415 426 409 451 415 436 l 413 423 b 413 422 413 423 413 422 l 357 192 b 279 140 350 168 302 140 b 281 153 281 144 281 148 b 183 251 281 207 236 251 b 85 153 128 251 85 207 b 125 81 85 124 102 98 b 164 60 137 71 150 65 b 203 55 176 58 189 55 b 311 86 240 55 278 69 b 315 88 312 88 314 88 b 325 69 323 88 325 76 l 268 -167 b 194 -217 261 -197 216 -216 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 153 -105 b 0 -203 45 -105 0 -148 b 115 -301 0 -262 60 -301 b 228 -269 154 -301 194 -288 b 232 -268 229 -268 230 -268 b 240 -276 236 -268 240 -272 b 138 -688 240 -282 141 -678 b 137 -697 137 -691 137 -694 b 176 -720 137 -708 145 -720 b 232 -690 222 -720 226 -706 b 484 436 236 -672 484 436 b 521 582 484 436 518 564 b 523 588 521 585 523 586 b 508 603 523 600 511 603 z', + }, + rest64th: { + x_min: 0, + x_max: 423, + y_min: -753, + y_max: 430, + ha: 1183, + o: 'm 596 609 b 580 603 589 609 585 606 b 448 507 569 595 497 507 b 449 521 449 511 449 516 b 351 619 449 575 405 619 b 253 521 297 619 253 575 b 372 422 253 461 317 422 b 481 454 410 422 446 438 b 491 456 484 455 488 456 b 504 441 498 456 504 451 b 501 426 504 436 503 432 b 445 202 500 422 451 217 b 359 144 435 174 383 144 l 359 158 b 261 256 359 212 315 256 b 163 158 207 256 163 212 b 243 65 163 112 202 78 b 279 60 255 62 266 60 b 397 91 320 60 360 73 b 403 92 400 92 402 92 b 412 79 409 92 412 86 b 410 72 412 76 412 75 b 351 -161 408 59 356 -150 b 281 -212 340 -199 301 -212 l 281 -197 b 183 -99 281 -144 238 -99 b 85 -197 130 -99 85 -144 b 125 -271 85 -228 102 -253 b 166 -291 138 -279 151 -287 b 204 -297 177 -294 192 -297 b 262 -287 225 -297 245 -292 b 305 -265 282 -279 287 -274 b 310 -264 307 -264 308 -264 b 318 -284 317 -264 318 -275 b 317 -295 318 -288 317 -294 b 259 -524 315 -302 265 -508 b 194 -567 251 -554 213 -567 b 196 -554 196 -563 196 -559 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 b 40 -626 0 -583 17 -609 b 118 -652 60 -644 92 -652 b 210 -629 145 -652 186 -642 b 216 -628 213 -628 215 -628 b 228 -647 226 -628 228 -639 l 226 -651 b 226 -652 226 -651 226 -652 l 122 -1054 b 121 -1064 121 -1058 121 -1061 b 167 -1084 121 -1077 134 -1084 b 215 -1060 202 -1084 209 -1076 b 402 -278 217 -1047 229 -1021 b 436 -135 403 -278 431 -161 l 570 441 b 609 588 570 441 605 569 b 596 609 609 603 602 608 z', + }, + rest128th: { + x_min: 0, + x_max: 485, + y_min: -750, + y_max: 689, + ha: 1439, + o: 'm 537 894 b 439 992 537 949 494 992 b 341 894 386 992 341 949 b 382 822 341 865 359 840 b 459 796 402 805 433 796 b 518 806 480 796 501 801 l 520 808 b 569 828 539 814 552 819 b 580 831 572 829 577 831 b 598 812 589 831 598 825 b 596 801 598 809 598 805 b 540 575 590 773 546 595 b 448 510 534 553 475 510 l 448 524 b 350 622 448 577 405 622 b 252 524 297 622 252 577 b 292 451 252 494 269 468 b 369 426 318 433 337 426 b 429 435 389 426 412 429 b 494 464 449 442 475 455 b 498 465 495 465 497 465 b 505 446 504 465 505 456 b 503 426 505 439 504 432 l 446 202 b 366 144 439 173 389 144 l 366 158 b 268 256 366 212 323 256 b 170 158 215 256 170 212 b 289 59 170 98 235 59 b 347 69 310 59 330 63 b 397 91 367 76 379 82 b 406 94 400 92 403 94 b 415 79 412 94 415 88 b 412 63 415 75 413 69 b 357 -157 408 42 364 -134 b 281 -212 346 -196 302 -212 b 282 -197 281 -207 282 -203 b 184 -99 282 -144 238 -99 b 86 -197 130 -99 86 -144 b 204 -297 86 -258 150 -297 b 262 -287 225 -297 245 -292 b 312 -265 282 -279 294 -274 b 318 -264 314 -264 317 -264 b 327 -275 324 -264 327 -269 b 266 -517 324 -287 278 -490 b 200 -569 248 -566 220 -567 l 196 -554 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 b 118 -652 0 -615 63 -652 b 177 -642 138 -652 160 -648 l 179 -641 b 229 -621 197 -635 210 -629 l 230 -619 b 239 -626 236 -619 239 -622 b 238 -632 239 -628 239 -631 b 131 -1057 235 -642 134 -1050 b 173 -1080 131 -1071 140 -1080 b 230 -1057 219 -1080 225 -1074 l 658 815 b 697 960 658 815 694 942 b 698 966 697 963 698 965 b 684 982 698 975 687 981 b 668 976 677 982 672 979 b 537 880 658 969 586 881 z', + }, + dynamicPiano: { + x_min: -89, + x_max: 366, + y_min: -142, + y_max: 274, + ha: 416, + o: 'm 395 395 b 292 357 350 395 318 380 b 262 328 272 340 268 328 b 246 363 255 328 259 338 b 177 393 236 380 215 393 b 1 251 92 393 46 333 b -9 223 -6 238 -9 230 b 7 207 -9 213 -1 207 b 30 229 17 207 23 216 b 127 338 72 301 101 338 b 143 321 138 338 143 331 b 134 285 143 310 138 295 l -43 -154 b -65 -168 -48 -166 -50 -168 l -109 -168 b -128 -187 -122 -168 -128 -174 b -111 -204 -128 -199 -122 -204 l 167 -204 b 186 -186 180 -204 186 -199 b 168 -168 186 -174 180 -168 l 111 -168 b 98 -164 102 -168 98 -168 b 101 -154 98 -163 99 -158 l 166 7 b 179 24 168 14 171 24 b 213 -1 186 24 190 10 b 276 -14 233 -12 252 -14 b 527 266 415 -14 527 130 b 395 395 527 350 475 395 z m 356 341 b 389 288 380 341 389 320 b 243 35 389 217 312 35 b 207 81 219 35 207 50 b 235 180 207 111 219 140 l 264 251 b 356 341 284 300 321 341 z', + }, + dynamicMezzo: { + x_min: -20, + x_max: 446, + y_min: -10, + y_max: 274, + ha: 284, + o: 'm 528 395 b 431 350 487 395 454 374 b 409 330 416 336 415 330 b 397 360 402 330 406 341 b 334 395 389 379 370 395 b 236 350 292 395 259 374 b 215 330 222 336 220 330 b 203 360 207 330 212 340 b 147 393 194 379 174 393 b -19 251 71 393 26 331 b -29 223 -26 238 -29 230 b -13 207 -29 213 -22 207 b 9 226 -3 207 1 215 b 107 338 52 300 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 287 323 225 292 255 323 b 308 302 304 323 308 314 b 294 249 308 285 302 269 b 203 24 294 248 292 248 b 199 9 200 17 199 13 b 215 0 199 3 203 0 l 285 0 b 308 17 298 0 302 3 l 402 251 b 481 323 419 292 449 323 b 503 302 498 323 503 314 b 413 43 503 252 413 104 b 478 -14 413 6 436 -14 b 629 102 533 -14 583 26 b 642 132 638 117 642 125 b 629 145 642 141 636 145 b 608 127 619 145 615 138 b 534 49 580 84 553 49 b 523 62 526 49 523 53 b 606 317 523 112 606 238 b 528 395 606 353 588 395 z', + }, + dynamicForte: { + x_min: -141, + x_max: 364, + y_min: -152, + y_max: 444, + ha: 596, + o: 'm 23 380 b 0 357 7 380 0 373 b 22 336 0 343 7 336 l 105 336 b 117 330 114 336 117 336 b 114 315 117 327 115 323 l 23 0 b -101 -187 -17 -141 -43 -187 b -127 -174 -120 -187 -127 -181 b -92 -156 -127 -163 -114 -170 b -63 -102 -75 -144 -63 -125 b -128 -43 -63 -65 -89 -43 b -203 -122 -171 -43 -203 -78 b -95 -219 -203 -186 -156 -219 b 161 17 14 -219 82 -145 b 269 317 203 105 235 194 l 271 318 b 289 336 271 323 282 336 l 383 336 b 406 359 399 336 406 343 b 384 380 406 373 399 380 l 298 380 b 284 387 288 380 284 380 b 287 405 284 392 285 396 b 419 606 315 530 347 606 b 442 595 431 606 442 603 b 419 580 442 586 435 588 b 389 526 400 572 389 552 b 454 465 389 485 418 465 b 524 543 491 465 524 490 b 400 639 524 596 491 639 b 135 402 261 639 183 540 b 107 380 128 380 127 380 z', + }, + dynamicRinforzando: { + x_min: -20, + x_max: 277, + y_min: 0, + y_max: 274, + ha: 274, + o: 'm 324 395 b 235 350 287 395 256 374 b 215 330 222 336 220 330 b 203 360 207 330 213 337 b 145 393 194 379 174 393 b -19 251 75 393 27 337 b -29 223 -26 238 -29 230 b -13 207 -29 213 -22 207 b 9 226 -3 207 3 215 b 107 338 52 301 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 304 351 226 298 272 351 b 318 343 312 351 318 348 b 287 285 318 330 287 325 b 338 239 287 256 308 239 b 399 318 373 239 399 268 b 324 395 399 360 377 395 z', + }, + dynamicSforzando: { + x_min: 0, + x_max: 229, + y_min: -10, + y_max: 273, + ha: 283, + o: 'm 212 393 b 68 274 127 393 68 350 b 145 161 68 223 95 196 b 200 85 187 132 200 114 b 127 20 200 53 173 20 b 66 42 91 20 66 32 b 91 56 66 49 75 46 b 111 98 104 65 111 79 b 59 145 111 127 86 145 b 0 78 24 145 0 117 b 125 -14 0 30 49 -14 b 291 120 219 -14 291 36 b 220 232 291 160 276 190 b 151 314 168 271 151 287 b 213 361 151 337 168 361 b 258 346 238 361 258 356 b 240 333 258 340 251 340 b 226 298 232 325 226 314 b 276 252 226 269 248 252 b 330 307 311 252 330 279 b 212 393 330 360 285 393 z', + }, + dynamicZ: { + x_min: -30, + x_max: 244, + y_min: -10, + y_max: 268, + ha: 278, + o: 'm 333 386 b 298 377 321 386 314 382 b 239 370 282 373 259 370 b 94 383 153 370 111 383 b 68 364 79 383 72 377 l 33 264 b 29 242 30 255 29 248 b 45 228 29 232 36 228 b 66 249 55 228 60 236 l 81 279 b 96 297 85 288 88 297 b 168 292 102 297 127 292 b 223 302 194 292 215 302 b 196 269 229 302 197 271 l -26 45 b -43 16 -37 33 -43 27 b -24 -1 -43 6 -36 -1 b 4 16 -12 -1 -3 10 b 39 30 16 24 27 30 b 179 -14 79 30 108 -14 b 297 102 259 -14 297 43 b 245 166 297 147 271 166 b 197 115 219 166 197 145 b 236 72 197 88 216 72 b 259 79 251 72 255 79 b 264 75 262 79 264 78 b 258 60 264 72 261 66 b 229 45 252 50 242 45 b 117 95 186 45 173 95 b 85 86 98 95 89 86 b 102 111 85 86 95 104 l 333 338 b 351 370 344 350 351 359 b 333 386 351 380 343 386 z', + }, + ornamentTrill: { + x_min: 0, + x_max: 521, + y_min: -10, + y_max: 390, + ha: 400, + o: 'm 383 562 b 364 557 377 562 369 559 l 294 534 b 269 511 281 530 275 526 l 217 384 b 206 367 212 370 210 367 b 179 380 200 367 192 374 b 118 393 158 389 140 393 b 0 292 50 393 0 353 b 95 210 0 248 30 210 b 140 213 112 210 131 213 b 144 209 143 213 144 212 b 140 194 144 206 143 202 l 124 156 b 96 58 108 117 96 88 b 179 -14 96 17 124 -14 b 325 153 253 -14 325 46 b 307 251 325 187 320 219 b 302 265 304 258 302 261 b 334 294 302 274 311 281 l 343 298 b 455 348 393 328 428 348 b 474 327 468 348 474 344 b 465 285 474 312 469 295 l 360 24 b 356 9 357 17 356 13 b 372 0 356 3 360 0 l 442 0 b 465 17 455 0 459 3 l 559 251 b 655 351 577 298 624 351 b 670 343 664 351 670 348 b 638 285 670 330 638 325 b 690 239 638 256 660 239 b 750 318 724 239 750 268 b 675 395 750 360 729 395 b 586 350 638 395 608 374 b 566 330 573 336 572 330 b 553 361 559 330 564 340 b 490 393 543 380 521 393 b 347 348 432 393 377 364 b 312 333 328 338 320 333 b 308 337 310 333 308 334 b 315 359 308 343 312 351 l 387 537 b 392 553 390 544 392 549 b 383 562 392 559 389 562 z m 118 360 b 192 325 134 360 192 347 b 186 307 192 321 189 314 l 180 292 b 148 265 173 274 167 269 b 98 258 130 261 112 258 b 39 301 50 258 39 281 b 118 360 39 327 60 360 z m 272 240 b 292 151 285 240 292 164 b 212 30 292 88 253 30 b 196 48 200 30 196 37 b 207 92 196 59 202 78 b 264 230 207 94 209 94 b 272 240 266 238 268 240 z', + }, + ornamentTurn: { + x_min: 0, + x_max: 460, + y_min: 0, + y_max: 218, + ha: 218, + o: 'm 534 314 b 454 251 490 314 454 294 b 505 199 454 219 475 199 b 579 232 547 199 549 232 b 626 164 603 232 626 202 b 533 72 626 102 583 72 b 377 180 487 72 439 111 b 150 312 307 258 243 312 b 0 148 55 312 0 240 b 128 0 0 45 66 0 b 209 63 173 0 209 20 b 157 115 209 95 187 115 b 84 82 115 115 114 82 b 36 150 59 82 36 112 b 130 242 36 212 79 242 b 285 134 176 242 223 203 b 513 1 356 56 419 1 b 662 166 608 1 662 73 b 534 314 662 269 596 314 z', + }, + ornamentTurnSlash: { + x_min: 0, + x_max: 460, + y_min: -90, + y_max: 306, + ha: 396, + o: 'm 333 441 b 310 418 315 441 310 433 l 310 274 b 302 252 310 258 308 252 b 261 278 294 252 287 262 b 150 311 228 298 192 311 b 0 147 55 311 0 239 b 128 -1 0 43 66 -1 b 209 62 173 -1 209 19 b 157 114 209 94 187 114 b 84 81 115 114 114 81 b 36 148 59 81 36 111 b 130 240 36 210 79 240 b 285 128 176 240 222 197 b 307 79 304 108 307 105 l 307 -107 b 330 -130 307 -122 312 -130 b 353 -107 347 -130 353 -122 l 353 37 b 360 59 353 53 353 59 b 402 33 369 59 376 49 b 513 0 435 13 471 0 b 662 164 608 0 662 72 b 534 312 662 268 596 312 b 454 249 490 312 454 292 b 505 197 454 217 475 197 b 579 230 547 197 549 230 b 626 163 603 230 626 200 b 533 71 626 101 583 71 b 377 183 487 71 441 114 b 356 232 359 203 356 206 l 356 418 b 333 441 356 433 350 441 z', + }, + ornamentMordent: { + x_min: 1, + x_max: 729, + y_min: -73, + y_max: 319, + ha: 392, + o: 'm 546 265 l 546 459 l 501 459 l 501 216 l 459 167 b 439 167 454 160 445 160 b 302 327 387 228 310 317 b 258 353 291 338 282 351 b 226 340 245 353 238 348 l 20 107 b 1 73 12 98 1 84 b 30 59 1 65 9 59 b 88 94 53 59 73 79 b 144 143 107 109 124 127 b 176 161 158 154 168 161 b 197 144 183 161 189 156 l 323 10 b 351 0 328 3 340 0 b 377 9 361 0 372 3 b 498 114 392 17 475 94 l 498 -105 l 544 -105 l 544 153 b 562 160 550 157 556 160 b 585 144 569 160 576 156 b 710 10 590 135 697 24 b 737 0 716 3 727 0 b 765 9 749 0 759 3 b 1030 295 776 17 1011 274 l 1032 300 b 1050 328 1041 308 1050 318 b 1012 353 1050 343 1024 353 b 986 343 1002 353 994 348 b 854 190 971 330 871 206 b 828 176 842 180 835 176 b 802 190 818 176 809 183 b 681 333 791 202 696 320 b 645 353 668 344 657 353 b 613 340 634 353 626 350 b 580 304 600 330 590 315 z', + }, + ornamentShortTrill: { + x_min: 0, + x_max: 725, + y_min: 0, + y_max: 245, + ha: 245, + o: 'm 429 167 l 301 325 b 256 353 291 338 282 350 b 225 340 246 353 238 350 b 16 105 158 268 88 186 b 0 72 9 96 0 86 b 29 58 0 63 7 58 b 71 76 42 58 55 62 l 158 154 b 174 160 163 158 168 160 b 197 143 181 160 187 154 b 321 10 203 135 310 24 b 350 0 327 3 338 0 b 377 7 361 0 372 3 l 533 148 b 554 160 543 158 550 160 b 577 143 562 160 566 156 b 703 10 585 135 690 24 b 732 0 708 3 720 0 b 759 7 743 0 753 3 b 1024 294 769 16 1005 272 b 1044 327 1032 305 1044 321 b 1005 353 1044 341 1018 353 b 979 343 996 353 988 348 b 848 189 963 330 864 204 b 821 174 837 179 828 174 b 796 189 811 174 804 181 b 674 331 783 202 688 318 b 641 351 662 343 651 351 b 606 340 628 351 619 350 b 573 304 593 328 583 315 b 444 167 533 259 491 213 b 429 167 439 161 433 161 z', + }, + ornamentTremblement: { + x_min: 1, + x_max: 985, + y_min: 0, + y_max: 244, + ha: 244, + o: 'm 678 325 b 634 351 667 338 657 350 b 602 338 621 351 613 348 l 448 167 b 439 167 446 164 441 164 l 302 325 b 258 351 291 338 281 350 b 228 338 245 351 238 348 b 193 304 215 328 204 315 l 19 107 b 1 72 13 96 1 76 b 30 58 1 63 9 58 b 89 92 52 58 73 78 l 144 141 b 148 144 145 143 147 143 b 176 160 160 153 170 160 b 199 143 183 160 189 154 b 324 10 204 134 311 23 b 351 0 330 3 340 0 b 379 7 363 0 373 3 l 530 148 b 552 160 536 154 546 160 b 575 143 559 160 564 154 b 698 10 580 134 687 23 b 727 0 704 3 716 0 b 755 7 739 0 749 3 l 907 147 b 930 160 922 158 923 160 b 952 143 937 160 943 154 l 1077 10 b 1107 0 1084 3 1096 0 b 1133 7 1117 0 1128 3 b 1398 294 1143 16 1380 272 b 1418 327 1407 305 1418 321 b 1381 351 1418 343 1394 351 b 1354 341 1371 351 1362 348 b 1223 189 1338 328 1238 204 b 1195 174 1211 179 1202 174 b 1171 189 1185 174 1178 181 b 1048 331 1158 200 1063 318 b 1012 351 1035 343 1024 351 b 981 338 1002 351 994 350 b 948 304 968 328 958 315 b 827 166 907 258 865 212 b 815 166 824 163 818 163 b 678 325 760 226 732 264 z', + }, + ornamentPrecompAppoggTrill: { + x_min: 0, + x_max: 1119, + y_min: 0, + y_max: 481, + ha: 481, + o: 'm 1015 163 b 873 328 963 223 880 318 b 828 354 860 344 847 353 b 796 341 816 354 809 351 b 763 305 783 331 773 317 b 642 168 721 261 681 215 b 636 163 641 167 639 164 b 494 328 585 223 501 318 b 449 354 481 344 468 353 b 418 341 438 354 431 351 b 384 305 405 331 395 317 b 264 168 343 261 302 215 l 242 144 b 144 88 232 124 171 88 b 79 197 81 88 79 189 l 79 648 b 60 693 79 683 71 693 b 52 691 58 693 55 693 b 0 616 3 672 0 625 l 0 207 b 121 0 0 40 68 0 b 249 68 168 0 232 53 b 279 94 262 75 271 86 b 336 144 298 111 315 128 b 367 163 350 156 360 163 b 389 145 374 163 380 157 b 514 12 395 137 501 26 b 543 1 520 4 531 1 b 569 9 553 1 563 4 b 636 73 576 14 605 43 l 658 94 b 714 144 677 111 694 128 b 746 163 729 156 739 163 b 768 145 753 163 759 157 b 893 12 773 137 880 26 b 922 1 899 4 910 1 b 948 9 932 1 942 4 l 1012 71 b 1037 94 1022 78 1030 86 b 1092 144 1054 111 1073 128 b 1123 161 1106 156 1115 161 b 1146 145 1130 161 1136 157 b 1270 12 1152 137 1259 26 b 1299 1 1276 4 1287 1 b 1326 9 1310 1 1320 4 b 1591 297 1336 19 1572 275 b 1611 328 1600 307 1611 320 b 1574 354 1611 343 1585 354 b 1548 344 1565 354 1555 350 b 1416 192 1532 331 1431 206 b 1388 177 1404 181 1395 177 b 1365 190 1380 177 1371 184 b 1243 333 1352 203 1256 321 b 1205 354 1228 346 1217 354 b 1174 341 1195 354 1187 351 b 1140 305 1161 330 1152 317 z', + }, + ornamentPrecompSlideTrillDAnglebert: { + x_min: 2, + x_max: 1150, + y_min: -367, + y_max: 245, + ha: 612, + o: 'm 1058 160 b 916 327 1007 220 923 317 b 871 353 903 343 890 351 b 840 340 860 353 852 350 b 806 304 827 330 816 315 b 685 167 765 259 724 213 l 680 160 l 615 235 b 419 344 582 275 523 344 b 3 -144 258 344 3 26 b 4 -168 3 -153 3 -160 b 246 -482 24 -315 99 -422 b 458 -528 340 -521 410 -528 b 514 -526 485 -528 504 -526 b 552 -508 531 -526 552 -517 b 514 -497 552 -503 541 -498 l 503 -497 b 194 -390 432 -494 298 -488 b 69 -151 194 -390 69 -279 b 184 96 69 -60 128 27 b 328 183 202 118 258 183 b 477 96 413 183 454 118 b 559 10 510 62 552 19 b 588 0 566 3 576 0 b 613 7 598 0 609 3 b 723 112 622 14 681 73 b 789 161 733 122 776 161 b 811 144 796 161 802 156 b 936 10 816 135 923 24 b 965 0 942 3 953 0 b 991 7 975 0 985 3 b 1051 66 996 12 1022 37 b 1081 92 1063 73 1073 84 b 1136 143 1099 109 1117 127 b 1168 160 1151 154 1159 160 b 1191 144 1175 160 1181 156 b 1315 10 1197 135 1303 24 b 1344 0 1320 3 1332 0 b 1371 7 1355 0 1365 3 b 1636 295 1381 17 1617 274 b 1656 327 1644 305 1656 318 b 1619 353 1656 341 1630 353 b 1593 343 1610 353 1600 348 b 1460 190 1577 330 1476 204 b 1433 176 1449 180 1440 176 b 1410 189 1424 176 1416 183 b 1287 331 1397 202 1300 320 b 1250 353 1273 344 1261 353 b 1218 340 1240 353 1231 350 b 1185 304 1205 328 1197 315 z', + }, + ornamentPrecompSlideTrillBach: { + x_min: 0, + x_max: 1048, + y_min: -367, + y_max: 331, + ha: 698, + o: 'm 1038 477 l 979 477 l 979 238 l 912 160 b 769 327 858 220 775 317 b 724 353 756 343 743 351 b 693 340 713 353 706 350 b 660 304 680 330 670 315 b 539 167 618 259 577 213 b 533 161 536 166 534 163 b 390 327 480 220 396 317 b 346 353 377 343 364 351 l 340 353 b 308 340 330 353 321 350 b 275 304 295 330 285 315 b 117 122 220 243 168 186 b 0 -144 68 62 0 -48 b 1 -168 0 -153 0 -160 b 243 -482 22 -315 96 -422 b 455 -528 337 -521 408 -528 b 511 -526 482 -528 501 -526 b 549 -508 528 -526 549 -517 b 511 -497 549 -503 539 -498 l 500 -497 b 192 -390 429 -494 295 -488 b 68 -177 192 -390 84 -298 b 66 -151 66 -168 66 -160 b 189 105 66 -58 127 35 b 232 143 203 118 216 131 b 264 161 246 154 256 161 b 285 144 271 161 276 156 b 410 10 291 135 397 24 b 439 0 416 3 428 0 b 465 7 449 0 459 3 l 531 72 b 554 92 540 78 547 86 b 611 143 573 109 590 127 b 642 161 625 154 635 161 b 664 144 649 161 655 156 b 789 10 670 135 776 24 b 818 0 795 3 806 0 b 844 7 828 0 838 3 b 904 66 850 12 876 37 b 935 92 916 73 924 84 b 979 134 949 107 963 121 l 979 -88 l 1037 -88 l 1037 151 l 1044 144 b 1168 10 1050 135 1156 24 b 1197 0 1174 3 1185 0 b 1224 7 1208 0 1218 3 b 1489 295 1234 17 1470 274 b 1509 327 1498 305 1509 318 b 1472 353 1509 341 1483 353 b 1446 343 1463 353 1453 348 b 1313 190 1430 330 1329 204 b 1286 176 1302 180 1293 176 b 1263 189 1277 176 1269 183 b 1140 331 1250 202 1153 320 b 1103 353 1126 344 1115 353 b 1071 340 1093 353 1084 350 b 1038 304 1058 328 1050 315 z', + }, + ornamentPrecompTrillSuffixDandrieu: { + x_min: 0, + x_max: 949, + y_min: 0, + y_max: 381, + ha: 381, + o: 'm 1367 314 b 1250 521 1367 419 1318 482 b 1107 549 1211 537 1145 549 b 1083 546 1096 549 1087 549 b 1066 528 1071 540 1066 534 b 1079 520 1066 524 1070 520 b 1323 351 1187 517 1323 487 b 1201 171 1323 269 1260 219 b 1194 166 1201 171 1198 168 b 1056 327 1142 226 1063 317 b 1011 353 1043 343 1030 351 b 979 340 999 353 992 350 b 946 304 966 330 956 315 b 825 167 904 259 864 213 l 821 161 b 678 327 768 222 685 317 b 634 353 665 343 652 351 b 602 340 622 353 615 350 b 569 304 589 330 579 315 b 448 167 527 259 487 213 l 444 161 b 301 327 390 222 308 317 b 256 353 288 343 275 351 b 225 340 245 353 238 350 b 192 304 212 330 202 315 b 71 167 150 259 109 213 b 17 105 52 147 36 127 b 0 73 10 98 0 84 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 174 161 157 154 167 161 b 196 144 181 161 187 156 b 321 10 202 135 308 24 b 350 0 327 3 338 0 b 376 7 360 0 370 3 b 485 112 384 14 444 73 b 552 161 495 122 539 161 b 573 144 559 161 564 156 b 698 10 579 135 685 24 b 727 0 704 3 716 0 b 753 7 737 0 747 3 b 863 112 762 14 821 73 b 929 161 873 122 916 161 b 950 144 936 161 942 156 b 1076 10 956 135 1063 24 b 1104 0 1081 3 1093 0 b 1130 7 1115 0 1125 3 b 1236 108 1139 14 1195 69 b 1367 314 1297 160 1367 233 z', + }, + ornamentPrecompDoubleCadenceUpperPrefix: { + x_min: 0, + x_max: 1278, + y_min: 0, + y_max: 247, + ha: 247, + o: 'm 1801 356 b 1776 346 1793 356 1783 351 b 1642 192 1760 333 1659 206 b 1614 177 1630 181 1621 177 b 1591 190 1606 177 1597 184 b 1469 334 1578 203 1482 323 b 1430 356 1453 347 1441 356 b 1398 343 1420 356 1411 353 b 1365 307 1385 331 1377 318 l 1240 164 b 1097 330 1187 226 1104 320 b 1053 356 1084 346 1071 354 b 1021 343 1041 356 1034 353 b 988 307 1008 333 998 318 b 865 168 946 262 904 216 l 861 163 b 717 330 808 223 724 320 b 672 356 704 346 691 354 b 641 343 661 356 654 353 b 608 307 628 333 618 318 b 485 168 566 262 524 216 l 455 134 b 284 46 409 88 351 46 b 16 285 148 46 32 265 b 3 295 9 292 4 295 b 0 291 1 295 0 292 b 1 285 0 288 1 285 b 308 0 42 190 157 0 b 530 120 415 1 482 63 b 559 144 539 128 549 137 b 590 163 573 156 583 163 b 612 145 598 163 603 157 b 739 10 618 137 724 24 b 768 0 744 3 756 0 b 793 7 778 0 788 3 b 903 114 802 14 861 75 l 939 144 b 971 163 953 156 963 163 b 992 145 978 163 984 157 b 1119 10 998 137 1106 24 b 1148 0 1125 3 1136 0 b 1174 7 1158 0 1168 3 b 1284 114 1182 14 1241 75 b 1316 144 1282 115 1312 141 b 1348 161 1331 156 1339 161 b 1371 145 1355 161 1361 157 b 1496 10 1377 137 1485 24 b 1525 0 1502 3 1513 0 b 1552 7 1536 0 1547 3 b 1819 298 1562 17 1800 276 b 1840 330 1829 308 1840 320 b 1832 344 1840 334 1837 340 b 1801 356 1820 351 1810 356 z', + }, + ornamentPrecompDoubleCadenceUpperPrefixTurn: { + x_min: 0, + x_max: 1277, + y_min: -62, + y_max: 333, + ha: 395, + o: 'm 1273 202 l 1273 480 l 1230 480 l 1230 174 l 1097 328 b 1053 354 1084 344 1071 353 b 1021 341 1041 354 1034 351 b 988 305 1008 331 998 317 b 865 167 945 261 904 215 l 861 161 b 717 328 808 222 724 318 b 672 354 704 344 691 353 b 641 341 661 354 654 351 b 608 305 628 331 618 317 b 485 167 564 261 524 215 b 455 132 474 156 465 144 b 284 45 410 88 350 45 b 14 284 148 45 30 264 b 3 294 9 291 4 294 b 0 289 1 294 0 291 b 1 284 0 287 1 284 b 308 -1 42 189 157 -1 b 530 118 415 0 481 62 b 557 143 539 127 547 135 b 590 161 572 154 582 161 b 612 144 598 161 603 156 b 737 9 618 135 724 24 b 768 -1 743 1 755 -1 b 793 6 778 -1 788 1 b 903 112 802 13 861 73 l 937 143 b 971 161 953 154 963 161 b 992 144 978 161 984 156 b 1117 9 998 135 1104 24 b 1148 -1 1123 1 1136 -1 b 1174 6 1158 -1 1168 1 l 1230 60 l 1230 -89 l 1273 -89 l 1273 102 l 1283 112 b 1348 160 1295 125 1332 160 b 1371 144 1355 160 1361 156 b 1496 9 1377 135 1483 24 b 1525 -1 1502 1 1513 -1 b 1552 6 1536 -1 1547 1 b 1819 297 1562 16 1800 275 b 1839 328 1827 307 1839 320 b 1801 354 1839 343 1813 354 b 1776 344 1793 354 1783 350 b 1642 190 1760 331 1657 206 b 1614 176 1630 180 1621 176 b 1591 189 1606 176 1597 183 b 1467 333 1578 203 1480 321 b 1430 354 1453 346 1441 354 b 1398 341 1420 354 1411 351 b 1365 305 1385 330 1377 317 z', + }, + ornamentPrecompTrillLowerSuffix: { + x_min: 0, + x_max: 859, + y_min: -222, + y_max: 246, + ha: 468, + o: 'm 1164 217 b 1031 351 1138 259 1063 351 b 1011 337 1020 351 1024 347 b 828 167 952 291 886 217 l 824 164 b 683 328 772 225 690 318 b 638 354 670 344 657 353 b 606 341 626 354 619 351 b 573 305 593 331 583 317 b 451 167 530 261 490 215 l 446 161 b 302 328 393 222 310 318 b 258 354 289 344 276 353 b 226 341 246 354 239 351 b 193 305 213 331 203 317 b 71 167 150 261 109 215 b 17 105 52 147 36 127 b 0 73 10 98 0 84 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 176 161 157 154 168 161 b 197 144 183 161 189 156 b 323 9 203 135 310 23 b 353 -1 328 1 340 -1 b 379 6 363 -1 373 1 b 488 112 387 13 446 73 l 523 143 b 556 161 539 154 549 161 b 577 144 563 161 569 156 b 703 9 583 135 690 23 b 733 -1 708 1 721 -1 b 759 6 743 -1 753 1 b 868 112 768 13 827 73 b 955 183 878 122 943 183 b 1081 107 965 183 1031 153 b 1156 -89 1128 63 1156 6 l 1156 -102 b 948 -297 1156 -204 1048 -297 b 806 -271 904 -297 850 -282 l 792 -266 b 801 -288 792 -268 795 -282 b 948 -320 809 -297 880 -320 b 1237 -50 1092 -320 1237 -199 b 1164 217 1237 75 1218 122 z', + }, + brassScoop: { + x_min: 1, + x_max: 320, + y_min: -373, + y_max: 13, + ha: 386, + o: 'm 35 -537 b 461 -12 194 -518 461 -289 b 438 19 461 13 451 19 b 410 -9 425 19 413 9 b 35 -425 357 -366 92 -403 b 1 -482 13 -433 1 -438 l 1 -505 b 26 -537 1 -526 3 -537 z', + }, + brassDoitMedium: { + x_min: 0, + x_max: 489, + y_min: -40, + y_max: 346, + ha: 386, + o: 'm 33 -58 b 704 468 255 -58 683 186 b 681 498 704 494 693 498 b 654 471 668 498 658 488 b 33 55 550 118 91 76 b 0 -3 12 46 0 42 l 0 -26 b 24 -58 0 -46 1 -58 z', + }, + brassFallLipShort: { + x_min: 1, + x_max: 293, + y_min: -345, + y_max: 42, + ha: 387, + o: 'm 22 60 b 1 35 4 60 1 52 l 1 6 b 26 -50 3 -40 10 -43 b 32 -52 27 -50 30 -50 b 376 -469 85 -73 327 -111 b 400 -497 379 -487 387 -497 b 422 -467 412 -497 422 -491 b 32 60 422 -187 177 40 z', + }, + brassLiftMedium: { + x_min: 0, + x_max: 811, + y_min: 0, + y_max: 852, + ha: 852, + o: 'm 1138 1220 b 1135 1225 1135 1223 1135 1224 b 1129 1227 1133 1227 1130 1227 b 1117 1207 1122 1227 1117 1212 l 1117 1201 b 1109 1164 1117 1187 1117 1172 b 1100 1156 1107 1161 1104 1158 b 959 1104 1058 1128 995 1140 b 929 1032 936 1081 929 1056 b 932 1007 929 1024 930 1015 b 923 976 932 995 930 985 l 914 971 b 773 919 873 942 809 955 b 743 847 750 896 743 870 b 746 821 743 838 744 829 b 737 791 746 809 744 799 l 729 783 b 588 733 687 756 624 769 b 557 661 564 710 557 684 b 560 635 557 652 559 644 b 552 605 560 624 559 612 l 543 598 b 402 547 501 570 438 583 b 372 475 379 524 372 498 b 374 449 372 467 373 458 b 366 419 374 438 373 426 l 357 412 b 216 361 315 384 252 397 b 186 289 193 338 186 312 b 189 264 186 281 187 272 b 180 233 189 252 187 240 b 171 226 177 232 174 229 b 30 176 130 199 66 212 b 0 104 7 153 0 128 b 33 0 0 88 14 0 b 49 17 40 0 49 10 b 71 63 52 35 56 49 b 212 115 102 95 154 59 b 239 186 230 134 239 160 b 236 210 239 194 238 202 b 256 249 239 225 243 236 b 397 301 288 281 340 245 b 425 372 416 320 425 346 b 422 396 425 380 423 387 b 442 435 425 410 429 422 b 583 487 474 467 526 431 b 611 557 602 505 611 531 b 608 582 611 566 609 573 b 628 621 611 596 615 608 b 769 672 660 652 711 618 b 796 743 788 691 796 717 b 793 768 796 752 795 759 b 814 806 796 782 801 793 b 955 858 845 838 897 804 b 982 929 973 877 982 903 b 979 953 982 937 981 945 b 999 992 982 968 986 979 b 1140 1045 1031 1024 1083 989 b 1168 1116 1161 1066 1168 1090 b 1138 1220 1168 1162 1145 1207 z', + }, + brassFallRoughMedium: { + x_min: 0, + x_max: 811, + y_min: 0, + y_max: 852, + ha: 852, + o: 'm 30 1220 b 0 1116 23 1207 0 1162 b 27 1045 0 1090 7 1066 b 168 992 85 989 137 1024 b 189 953 181 979 186 968 b 186 929 187 945 186 937 b 213 858 186 903 194 877 b 354 806 271 804 323 838 b 374 768 367 793 372 782 b 372 743 373 759 372 752 b 399 672 372 717 380 691 b 540 621 456 618 508 652 b 560 582 553 608 557 596 b 557 557 559 573 557 566 b 585 487 557 531 566 505 b 726 435 642 431 694 467 b 746 396 739 422 743 410 b 743 372 744 387 743 380 b 770 301 743 346 752 320 b 912 249 828 245 880 281 b 932 210 924 236 929 225 b 929 186 930 202 929 194 b 956 115 929 160 937 134 b 1097 63 1014 59 1066 95 b 1119 17 1112 49 1116 35 b 1135 0 1119 10 1128 0 b 1168 104 1153 0 1168 91 b 1138 176 1168 128 1161 153 b 996 226 1102 212 1038 199 b 988 233 994 229 991 232 b 979 264 981 240 979 252 b 982 289 981 272 982 281 b 952 361 982 312 975 338 b 811 412 916 397 852 384 l 802 419 b 793 449 795 426 793 438 b 796 475 795 458 796 467 b 766 547 796 498 789 524 b 625 598 730 583 667 570 l 616 605 b 608 635 609 612 608 624 b 611 661 609 644 611 652 b 580 733 611 684 603 710 b 439 783 544 769 481 756 l 431 791 b 422 821 423 799 422 809 b 425 847 423 829 425 838 b 395 919 425 870 418 896 b 253 971 359 955 295 942 l 245 976 b 236 1007 238 985 236 995 b 239 1032 238 1015 239 1024 b 209 1104 239 1056 232 1081 b 68 1156 173 1140 109 1128 b 59 1164 63 1158 60 1161 b 50 1201 50 1172 50 1187 l 50 1207 b 39 1227 50 1212 46 1227 b 33 1225 37 1227 35 1227 b 30 1220 33 1224 33 1223 z', + }, + brassBend: { + x_min: 0, + x_max: 392, + y_min: 0, + y_max: 282, + ha: 282, + o: 'm 282 0 b 552 72 369 0 456 23 b 564 92 560 75 564 84 l 564 383 b 541 406 564 395 554 406 b 518 383 528 406 518 395 l 518 107 b 282 46 435 65 357 46 b 46 107 207 46 130 65 l 46 383 b 23 406 46 395 36 406 b 0 383 10 406 0 395 l 0 92 b 13 72 0 84 4 75 b 282 0 108 23 196 0 z', + }, + brassMuteClosed: { + x_min: 0, + x_max: 272, + y_min: 0, + y_max: 272, + ha: 272, + o: 'm 392 219 l 219 219 l 219 392 l 173 392 l 173 219 l 0 219 l 0 173 l 173 173 l 173 0 l 219 0 l 219 173 l 392 173 z', + }, + brassMuteOpen: { + x_min: 0, + x_max: 304, + y_min: 0, + y_max: 304, + ha: 304, + o: 'm 219 0 b 438 219 340 0 438 98 b 219 438 438 340 340 438 b 0 219 98 438 0 340 b 219 0 0 98 98 0 z m 219 392 b 392 219 314 392 392 314 b 219 46 392 124 314 46 b 46 219 124 46 46 124 b 219 392 46 314 124 392 z', + }, + brassFlip: { + x_min: 0, + x_max: 379, + y_min: 0, + y_max: 282, + ha: 282, + o: 'm 523 0 b 541 9 530 0 536 3 b 546 22 544 13 546 17 b 536 42 546 29 541 36 l 36 402 b 23 406 33 405 27 406 b 0 383 12 406 0 395 l 0 23 b 23 0 0 10 10 0 b 46 23 36 0 46 10 l 46 337 l 508 4 b 523 0 513 1 517 0 z', + }, + brassJazzTurn: { + x_min: 0, + x_max: 620, + y_min: 0, + y_max: 245, + ha: 245, + o: 'm 792 190 b 765 176 780 179 772 176 b 740 190 755 176 747 183 b 629 325 727 202 644 312 b 593 347 616 338 605 347 b 562 334 583 346 575 344 b 528 298 549 323 539 310 l 406 176 b 389 168 406 176 399 168 b 374 176 384 168 379 170 b 245 325 360 192 245 325 b 200 353 232 343 219 351 b 168 340 190 353 181 350 l 17 156 b 0 121 10 147 0 132 b 16 107 0 114 4 108 b 84 143 26 107 76 137 b 118 160 92 150 108 160 b 141 143 125 160 131 154 b 265 10 147 135 253 24 b 294 0 271 3 282 0 b 321 7 305 0 315 3 b 498 160 321 7 478 158 b 521 143 505 160 513 154 b 647 10 528 135 635 24 b 675 0 652 3 664 0 b 703 7 687 0 697 3 b 874 186 713 16 855 164 b 893 220 881 196 893 212 b 873 245 890 235 883 243 b 796 194 847 245 815 213 z', + }, + brassSmear: { + x_min: 1, + x_max: 306, + y_min: 0, + y_max: 170, + ha: 170, + o: 'm 193 79 b 308 0 219 50 264 0 b 439 117 396 0 438 102 b 439 120 439 118 439 118 l 441 125 b 441 128 441 127 441 127 b 433 141 441 135 439 141 b 416 130 429 141 423 137 b 343 94 390 107 370 94 b 269 153 315 94 294 121 l 265 158 b 144 245 239 190 180 245 b 6 134 62 245 10 143 b 1 114 3 125 1 118 b 7 107 1 108 4 107 b 36 122 13 107 22 112 b 92 151 55 137 65 151 b 183 89 125 151 161 112 b 189 84 184 88 187 86 z', + }, + stringsDownBow: { + x_min: 0, + x_max: 312, + y_min: 0, + y_max: 318, + ha: 318, + o: 'm 37 458 b 0 420 17 458 0 441 l 0 17 b 17 0 0 7 9 0 l 37 0 b 55 17 46 0 55 7 l 55 253 b 225 278 55 269 140 278 b 395 253 310 278 395 269 l 395 17 b 413 0 395 7 403 0 l 432 0 b 449 17 441 0 449 7 l 449 420 b 412 458 449 441 432 458 z', + }, + stringsUpBow: { + x_min: 1, + x_max: 249, + y_min: 1, + y_max: 495, + ha: 494, + o: 'm 181 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 z', + }, + stringsHarmonic: { + x_min: 0, + x_max: 200, + y_min: 0, + y_max: 200, + ha: 200, + o: 'm 288 144 b 144 288 288 225 223 288 b 0 144 65 288 0 225 b 144 0 0 65 65 0 b 288 144 223 0 288 65 z m 144 249 b 249 144 203 249 249 203 b 144 39 249 86 203 39 b 39 144 86 39 39 86 b 144 249 39 203 86 249 z', + }, + pluckedSnapPizzicatoAbove: { + x_min: 0, + x_max: 200, + y_min: 0, + y_max: 300, + ha: 300, + o: 'm 0 144 b 144 0 0 63 65 0 b 288 144 223 0 288 63 b 167 285 288 215 235 275 l 167 432 l 121 432 l 121 285 b 0 144 52 275 0 215 z m 121 246 l 121 144 l 167 144 l 167 246 b 249 144 213 236 249 193 b 144 39 249 85 202 39 b 39 144 85 39 39 85 b 121 246 39 193 73 236 z', + }, + pluckedSnapPizzicatoBelow: { + x_min: 0, + x_max: 200, + y_min: 0, + y_max: 300, + ha: 300, + o: 'm 288 288 b 144 432 288 369 223 432 b 0 288 65 432 0 369 b 121 145 0 216 52 157 l 121 0 l 167 0 l 167 145 b 288 288 235 157 288 216 z m 167 186 l 167 288 l 121 288 l 121 186 b 39 288 75 196 39 238 b 144 393 39 347 86 393 b 249 288 203 393 249 347 b 167 186 249 238 215 196 z', + }, + pluckedLeftHandPizzicato: { + x_min: 0, + x_max: 272, + y_min: 0, + y_max: 272, + ha: 272, + o: 'm 392 219 l 219 219 l 219 392 l 173 392 l 173 219 l 0 219 l 0 173 l 173 173 l 173 0 l 219 0 l 219 173 l 392 173 z', + }, + keyboardPedalPed: { + x_min: 0, + x_max: 1019, + y_min: -8, + y_max: 555, + ha: 563, + o: 'm 413 799 b 179 749 327 798 261 789 b 0 517 107 713 0 632 b 122 376 0 454 37 376 b 240 540 189 376 240 452 b 225 586 240 579 233 586 b 204 549 213 586 212 573 b 138 480 199 527 181 480 b 85 549 96 480 85 517 l 85 554 b 353 762 89 690 230 762 b 373 752 364 762 373 760 b 351 708 373 740 360 723 b 274 546 330 675 274 585 b 353 416 274 508 333 444 b 412 304 372 390 412 351 b 382 228 412 275 403 256 b 334 190 363 202 361 200 b 147 29 271 167 147 88 b 196 -12 147 4 171 -12 b 343 108 239 -12 279 33 l 363 132 b 387 150 370 141 376 150 b 543 -4 445 150 467 -4 b 631 42 567 -4 586 0 l 668 78 b 685 89 674 84 680 89 b 696 75 688 89 690 86 b 809 -9 717 29 753 -9 b 946 66 854 -9 894 13 b 988 107 971 92 981 107 b 1002 89 994 107 996 99 b 1152 -4 1030 36 1077 -4 b 1329 248 1238 -4 1329 82 b 792 717 1329 556 1047 665 b 766 720 785 719 775 720 b 747 703 752 720 747 711 b 780 680 747 693 756 685 b 1223 222 1028 621 1223 504 b 1152 39 1223 122 1205 39 b 1073 229 1104 39 1073 132 b 1132 423 1073 314 1086 377 b 1142 442 1140 432 1142 436 b 1126 458 1142 451 1136 458 b 1093 446 1119 458 1109 455 b 975 216 1022 408 975 337 l 975 190 b 943 121 975 160 972 150 b 852 69 899 76 877 69 b 776 148 816 69 786 117 b 773 163 775 154 773 158 b 786 177 773 167 776 170 l 801 187 b 937 366 867 235 937 284 b 844 454 937 422 900 454 b 665 217 711 454 665 331 b 671 153 665 197 667 176 l 671 147 b 662 134 671 143 670 140 b 605 111 639 118 625 111 b 521 160 572 111 546 135 b 451 203 497 184 474 197 b 426 212 435 207 426 206 b 436 230 426 216 429 220 b 510 389 464 269 510 340 b 429 521 510 435 480 462 b 369 629 387 570 369 599 b 402 720 369 648 384 691 b 462 763 425 759 446 763 b 611 624 540 763 611 704 b 564 575 611 592 590 575 b 501 602 540 575 520 582 b 474 622 492 611 487 622 b 459 603 465 622 459 615 b 603 471 459 570 510 471 b 711 588 670 471 711 524 b 422 799 711 742 554 799 z m 815 403 b 848 343 838 403 848 383 b 780 226 848 295 824 261 b 765 217 773 220 768 217 b 759 228 762 217 759 220 b 756 282 757 245 756 262 b 815 403 756 346 772 403 z m 1405 124 b 1344 62 1369 124 1344 98 b 1405 0 1344 26 1369 0 b 1467 62 1441 0 1467 26 b 1405 124 1467 98 1441 124 z', + }, + keyboardPedalUp: { + x_min: 0, + x_max: 450, + y_min: 0, + y_max: 450, + ha: 450, + o: 'm 582 396 b 516 367 554 396 533 384 b 465 340 495 347 487 340 l 458 340 b 412 377 432 340 412 348 b 432 409 412 387 419 396 l 438 415 b 490 429 451 428 464 429 b 575 501 534 429 575 452 b 501 575 575 541 541 575 b 429 490 452 575 429 534 b 415 438 429 464 428 451 l 409 432 b 377 412 396 419 387 412 b 340 458 348 412 340 432 l 340 465 b 367 516 340 487 347 495 b 396 582 384 533 396 554 b 324 648 396 625 363 648 b 252 582 285 648 252 625 b 281 516 252 554 264 533 b 308 465 301 495 308 487 l 308 458 b 271 412 308 432 300 412 b 239 432 261 412 252 419 l 233 438 b 219 490 220 451 219 464 b 147 575 219 534 196 575 b 73 501 107 575 73 541 b 158 429 73 452 114 429 b 210 415 184 429 197 428 l 216 409 b 236 377 229 396 236 387 b 190 340 236 348 216 340 l 183 340 b 132 367 161 340 153 347 b 66 396 115 384 94 396 b 0 324 23 396 0 363 b 66 252 0 285 23 252 b 132 281 94 252 115 264 b 183 308 153 301 161 308 l 190 308 b 236 271 216 308 236 300 b 216 239 236 261 229 252 l 210 233 b 158 219 197 220 184 219 b 73 147 114 219 73 196 b 147 73 73 107 107 73 b 219 158 196 73 219 114 b 233 210 219 184 220 197 l 239 216 b 271 236 252 229 261 236 b 308 190 300 236 308 216 l 308 183 b 281 132 308 161 301 153 b 252 66 264 115 252 94 b 324 0 252 23 285 0 b 396 66 363 0 396 23 b 367 132 396 94 384 115 b 340 183 347 153 340 161 l 340 190 b 377 236 340 216 348 236 b 409 216 387 236 396 229 l 415 210 b 429 158 428 197 429 184 b 501 73 429 114 452 73 b 575 147 541 73 575 107 b 490 219 575 196 534 219 b 438 233 464 219 451 220 l 432 239 b 412 271 419 252 412 261 b 458 308 412 300 432 308 l 465 308 b 516 281 487 308 495 301 b 582 252 533 264 554 252 b 648 324 625 252 648 285 b 582 396 648 363 625 396 z m 324 271 b 271 324 291 271 271 291 b 324 377 271 357 291 377 b 377 324 357 377 377 357 b 324 271 377 291 357 271 z', + }, + pictChokeCymbal: { + x_min: 1, + x_max: 152, + y_min: 2, + y_max: 251, + ha: 249, + o: 'm 104 361 b 1 271 42 361 1 321 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 17 32 29 26 26 l 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 z', + }, + wiggleArpeggiatoUp: { + x_min: -33, + x_max: 292, + y_min: 0, + y_max: 119, + ha: 119, + o: 'm 130 171 b -39 68 16 171 -14 91 b -48 53 -45 62 -48 58 b -29 42 -48 46 -39 42 b -10 46 -23 42 -16 43 b 56 63 12 56 29 63 b 248 0 121 63 135 0 b 419 127 361 0 410 104 b 420 132 420 130 420 131 b 412 140 420 137 416 140 b 386 130 403 140 392 134 b 334 107 367 117 353 107 b 318 108 330 107 324 107 b 240 138 289 112 265 128 b 130 171 209 153 168 171 z', + }, + arrowheadBlackUp: { + x_min: 0, + x_max: 228, + y_min: 0, + y_max: 299, + ha: 299, + o: 'm 166 431 b 0 20 111 274 0 30 b 16 0 0 12 6 0 l 17 1 b 166 50 43 16 160 50 b 310 1 171 50 289 13 l 311 0 b 328 20 321 0 328 12 b 166 431 328 30 220 274 z', + }, + arrowheadBlackDown: { + x_min: 0, + x_max: 228, + y_min: 0, + y_max: 299, + ha: 299, + o: 'm 166 0 b 328 410 220 157 328 400 b 311 431 328 419 321 431 l 310 429 b 166 380 289 418 171 380 b 17 429 160 380 43 415 l 16 431 b 0 410 6 431 0 419 b 166 0 0 400 111 157 z', + }, + arpeggiatoUp: { + x_min: 1, + x_max: 229, + y_min: 7, + y_max: 1511, + ha: 1504, + o: 'm 219 1848 l 330 1848 l 164 2176 l 1 1848 l 121 1848 b 92 1778 115 1822 101 1800 l 89 1773 b 59 1668 75 1741 59 1702 b 96 1555 59 1614 76 1580 b 99 1551 98 1554 99 1551 l 102 1547 b 124 1496 115 1531 124 1515 b 122 1482 124 1492 124 1488 b 92 1404 118 1453 102 1428 b 59 1293 78 1372 59 1332 b 105 1172 59 1234 81 1198 b 124 1120 118 1155 124 1143 l 122 1113 b 122 1110 122 1113 122 1112 b 92 1032 118 1081 102 1057 b 59 922 78 1001 59 960 b 115 792 59 855 86 816 b 124 760 121 782 124 773 b 122 744 124 756 124 750 b 92 667 118 716 102 693 b 59 556 78 635 59 595 b 108 433 59 495 82 458 b 124 389 117 420 124 408 b 122 374 124 384 124 379 b 92 298 118 346 102 323 l 89 292 b 59 186 75 261 59 222 b 163 19 59 73 140 42 b 177 10 168 13 173 10 b 189 29 184 10 189 19 b 184 48 189 35 187 42 b 167 114 174 69 167 85 b 230 305 167 179 229 193 b 181 423 230 357 209 396 b 167 484 173 442 167 458 b 230 675 167 547 229 563 b 179 796 230 729 206 769 b 167 850 171 812 167 827 b 230 1040 167 913 229 929 b 183 1158 230 1092 209 1130 b 167 1220 173 1178 167 1194 b 230 1411 167 1284 229 1300 b 186 1526 230 1462 210 1499 b 167 1594 176 1529 167 1584 b 230 1786 167 1659 229 1673 b 219 1848 230 1809 226 1829 z', + }, + arpeggiatoDown: { + x_min: 1, + x_max: 229, + y_min: -4, + y_max: 1500, + ha: 1504, + o: 'm 219 323 b 230 384 226 341 230 361 b 167 576 229 497 167 511 b 186 644 167 586 176 641 b 230 759 210 671 230 708 b 167 950 229 870 167 886 b 183 1012 167 976 173 992 b 230 1130 209 1040 230 1079 b 167 1320 229 1241 167 1257 b 179 1374 167 1344 171 1358 b 230 1495 206 1401 230 1441 b 167 1686 229 1607 167 1623 b 181 1747 167 1712 173 1728 b 230 1865 209 1774 230 1813 b 167 2056 229 1977 167 1992 b 184 2123 167 2085 174 2101 b 189 2141 187 2128 189 2136 b 177 2160 189 2151 184 2160 b 163 2151 173 2160 168 2157 b 59 1984 140 2128 59 2097 b 89 1878 59 1948 75 1909 l 92 1872 b 122 1796 102 1848 118 1824 b 124 1781 124 1791 124 1786 b 108 1737 124 1763 117 1750 b 59 1614 82 1712 59 1675 b 92 1503 59 1575 78 1535 b 122 1426 102 1477 118 1454 b 124 1410 124 1420 124 1414 b 115 1378 124 1397 121 1388 b 59 1248 86 1354 59 1315 b 92 1138 59 1210 78 1169 b 122 1060 102 1113 118 1089 b 122 1057 122 1058 122 1058 l 124 1050 b 105 998 124 1027 118 1015 b 59 877 81 972 59 936 b 92 766 59 838 78 798 b 122 688 102 742 118 717 b 124 674 124 683 124 678 b 102 624 124 655 115 639 l 99 619 b 96 615 99 619 98 616 b 59 503 76 590 59 556 b 89 397 59 468 75 429 l 92 392 b 121 323 101 370 115 348 l 1 323 l 164 -6 l 330 323 z', + }, + repeat1Bar: { + x_min: 0, + x_max: 532, + y_min: -250, + y_max: 279, + ha: 529, + o: 'm 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 675 -71 b 586 -161 626 -71 586 -111 b 675 -251 586 -210 626 -251 b 766 -161 726 -251 766 -210 b 675 -71 766 -111 726 -71 z', + }, + repeat2Bars: { + x_min: 0, + x_max: 762, + y_min: -250, + y_max: 279, + ha: 529, + o: 'm 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 b 343 -360 331 -356 336 -360 l 485 -360 b 516 -340 498 -360 508 -348 z m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 1007 -71 b 917 -161 958 -71 917 -111 b 1007 -251 917 -210 958 -251 b 1097 -161 1057 -251 1097 -210 b 1007 -71 1097 -111 1057 -71 z', + }, + repeat4Bars: { + x_min: 0, + x_max: 1232, + y_min: -250, + y_max: 279, + ha: 529, + o: 'm 1767 380 b 1774 395 1771 386 1774 390 b 1765 402 1774 399 1771 402 l 1613 402 b 1587 380 1604 402 1597 393 l 1012 -340 b 1008 -350 1009 -343 1008 -347 b 1020 -360 1008 -356 1012 -360 l 1162 -360 b 1192 -340 1175 -360 1185 -348 z m 1436 380 b 1443 395 1440 386 1443 390 b 1434 402 1443 399 1440 402 l 1282 402 b 1256 380 1273 402 1266 393 l 681 -340 b 677 -350 678 -343 677 -347 b 688 -360 677 -356 681 -360 l 831 -360 b 861 -340 844 -360 854 -348 z m 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 b 343 -360 331 -356 336 -360 l 485 -360 b 516 -340 498 -360 508 -348 z m 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z m 89 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 z m 1683 -71 b 1594 -161 1634 -71 1594 -111 b 1683 -251 1594 -210 1634 -251 b 1774 -161 1734 -251 1774 -210 b 1683 -71 1774 -111 1734 -71 z', + }, + repeatBarSlash: { + x_min: 0, + x_max: 532, + y_min: -250, + y_max: 279, + ha: 529, + o: 'm 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 z', + }, + csymDiminished: { + x_min: 0, + x_max: 473, + y_min: 0, + y_max: 473, + ha: 473, + o: 'm 341 681 b 0 341 153 681 0 530 b 341 0 0 153 153 0 b 681 341 530 0 681 153 b 341 681 681 530 530 681 z m 341 618 b 618 341 495 618 618 495 b 341 63 618 189 494 63 b 63 341 187 63 63 187 b 341 618 63 494 189 618 z', + }, + csymHalfDiminished: { + x_min: -16, + x_max: 488, + y_min: -15, + y_max: 489, + ha: 504, + o: 'm 703 660 l 658 704 l 557 603 b 340 681 498 652 422 681 b -1 341 151 681 -1 530 b 78 124 -1 259 29 183 l -23 23 l 22 -22 l 122 79 b 340 0 181 30 258 0 b 680 341 528 0 680 153 b 602 559 680 423 651 500 z m 62 341 b 340 618 62 494 187 618 b 513 559 403 618 464 598 l 122 168 b 62 341 84 217 62 278 z m 616 341 b 340 63 616 189 492 63 b 167 124 276 63 216 85 l 557 514 b 616 341 596 465 616 405 z', + }, + csymAugmented: { + x_min: 0, + x_max: 395, + y_min: 1, + y_max: 396, + ha: 395, + o: 'm 569 318 l 317 318 l 317 570 l 253 570 l 253 318 l 0 318 l 0 255 l 253 255 l 253 1 l 317 1 l 317 255 l 569 255 z', + }, + csymMajorSeventh: { + x_min: 0, + x_max: 558, + y_min: 1, + y_max: 477, + ha: 476, + o: 'm 402 687 l 0 1 l 804 1 z m 402 562 l 693 65 l 111 65 z', + }, + csymMinor: { + x_min: 0, + x_max: 325, + y_min: 216, + y_max: 260, + ha: 44, + o: 'm 468 374 l 0 374 l 0 311 l 468 311 z', + }, + csymParensLeftTall: { + x_min: 1, + x_max: 185, + y_min: 0, + y_max: 997, + ha: 997, + o: 'm 266 48 b 261 65 266 55 264 62 b 92 719 157 212 92 400 b 262 1371 92 1037 154 1228 b 266 1394 266 1378 266 1394 l 266 1424 b 264 1436 266 1431 266 1436 b 259 1434 262 1436 259 1434 b 1 719 84 1261 1 1011 b 259 1 1 429 79 177 b 264 0 261 0 262 0 b 266 9 265 0 266 6 z', + }, + csymParensRightTall: { + x_min: -20, + x_max: 164, + y_min: 0, + y_max: 997, + ha: 997, + o: 'm -29 9 b -26 0 -29 6 -27 0 b -22 1 -24 0 -23 0 b 236 719 158 177 236 429 b -22 1434 236 1011 154 1261 b -26 1436 -22 1434 -24 1436 b -29 1424 -29 1436 -29 1431 l -29 1394 b -24 1371 -29 1394 -29 1378 b 145 719 84 1228 145 1037 b -23 65 145 400 81 212 b -29 48 -26 62 -29 55 z', + }, + csymBracketLeftTall: { + x_min: 0, + x_max: 155, + y_min: 0, + y_max: 1000, + ha: 1000, + o: 'm 217 0 b 223 9 220 0 223 4 l 223 37 b 217 46 223 42 220 46 l 92 46 l 92 1394 l 217 1394 b 223 1403 220 1394 223 1398 l 223 1431 b 217 1440 223 1436 220 1440 l 6 1440 b 0 1436 3 1440 0 1439 l 0 4 b 6 0 0 1 3 0 z', + }, + csymBracketRightTall: { + x_min: 1, + x_max: 156, + y_min: 0, + y_max: 1000, + ha: 1000, + o: 'm 219 0 b 225 4 222 0 225 1 l 225 1436 b 219 1440 225 1439 222 1440 l 7 1440 b 1 1431 4 1440 1 1436 l 1 1403 b 7 1394 1 1398 4 1394 l 132 1394 l 132 46 l 7 46 b 1 37 4 46 1 42 l 1 9 b 7 0 1 4 4 0 z', + }, + csymParensLeftVeryTall: { + x_min: 0, + x_max: 122, + y_min: 0, + y_max: 993, + ha: 993, + o: 'm 176 32 b 171 49 176 39 174 46 b 60 716 104 194 60 399 b 173 1382 60 1032 101 1241 b 176 1405 176 1390 176 1405 l 176 1427 b 173 1430 176 1428 174 1430 b 0 716 40 1297 0 978 b 170 3 0 428 50 179 b 171 0 170 1 170 0 b 176 6 173 0 176 4 z', + }, + csymParensRightVeryTall: { + x_min: -15, + x_max: 107, + y_min: 0, + y_max: 993, + ha: 993, + o: 'm -22 6 b -17 0 -22 4 -19 0 b -16 3 -16 0 -16 1 b 154 716 104 179 154 428 b -19 1430 154 978 114 1297 b -22 1427 -20 1430 -22 1428 l -22 1405 b -19 1382 -22 1405 -22 1390 b 94 716 53 1241 94 1032 b -17 49 94 399 50 194 b -22 32 -20 46 -22 39 z', + }, + csymDiagonalArrangementSlash: { + x_min: 0, + x_max: 999, + y_min: 0, + y_max: 1000, + ha: 1000, + o: 'm 1439 1380 l 1377 1440 l 0 60 l 62 0 z', + }, + accSagittal5v7KleismaUp: { + x_min: 0, + x_max: 156, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 -35 b 135 -112 68 -86 99 -112 b 225 68 194 -112 225 -53 l 180 68 b 144 -4 180 20 168 -4 b 122 0 138 -4 131 -3 b 23 248 86 14 52 96 l 0 248 z', + }, + accSagittal5v7KleismaDown: { + x_min: 0, + x_max: 156, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 23 -248 b 122 0 52 -96 86 -14 b 144 4 131 3 138 4 b 180 -68 168 4 180 -20 l 225 -68 b 135 112 225 53 194 112 b 45 35 99 112 68 86 l 45 517 l 0 517 z', + }, + accSagittal5CommaUp: { + x_min: 0, + x_max: 156, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 225 -517 l 225 248 l 203 248 l 0 -112 l 0 -284 l 180 33 l 180 -517 z', + }, + accSagittal5CommaDown: { + x_min: 0, + x_max: 156, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 180 517 l 180 -33 l 0 284 l 0 112 l 203 -248 l 225 -248 l 225 517 z', + }, + accSagittal7CommaUp: { + x_min: 0, + x_max: 156, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 248 l 0 -517 l 45 -517 l 45 112 l 89 112 b 180 -68 150 112 180 53 l 180 -248 l 225 -248 l 225 68 b 135 248 225 187 194 248 z', + }, + accSagittal7CommaDown: { + x_min: 0, + x_max: 156, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 135 -248 b 225 -68 194 -248 225 -187 l 225 248 l 180 248 l 180 68 b 89 -112 180 -53 150 -112 l 45 -112 l 45 517 l 0 517 l 0 -248 z', + }, + accSagittal25SmallDiesisUp: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -157 l 0 -259 l 315 -89 l 315 -517 l 360 -517 l 360 248 l 337 248 l 0 68 l 0 -33 l 315 135 l 315 10 z', + }, + accSagittal25SmallDiesisDown: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 315 -10 l 315 -135 l 0 33 l 0 -68 l 337 -248 l 360 -248 l 360 517 l 315 517 l 315 89 l 0 259 l 0 157 z', + }, + accSagittal35MediumDiesisUp: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -68 330 112 360 53 l 360 -248 l 405 -248 l 405 68 b 315 248 405 187 374 248 l 203 248 l 0 -112 z', + }, + accSagittal35MediumDiesisDown: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 112 l 203 -248 l 315 -248 b 405 -68 374 -248 405 -187 l 405 248 l 360 248 l 360 68 b 271 -112 360 -53 330 -112 l 225 -112 l 225 517 l 180 517 l 180 -33 l 0 284 z', + }, + accSagittal11MediumDiesisUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 225 53 l 225 -517 l 271 -517 l 271 53 l 495 -248 l 495 -89 l 248 248 l 0 -89 l 0 -248 z', + }, + accSagittal11MediumDiesisDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 248 l 0 89 l 248 -248 l 495 89 l 495 248 l 271 -53 l 271 517 l 225 517 l 225 -53 z', + }, + accSagittal11LargeDiesisUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 112 l 315 112 b 449 -68 405 112 449 53 l 449 -248 l 495 -248 l 495 68 b 360 248 495 187 449 248 l 135 248 b 0 68 45 248 0 187 z', + }, + accSagittal11LargeDiesisDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 360 -248 b 495 -68 449 -248 495 -187 l 495 248 l 449 248 l 449 68 b 315 -112 449 -53 405 -112 l 271 -112 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z', + }, + accSagittal35LargeDiesisUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 l 540 112 l 540 274 l 271 -58 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z', + }, + accSagittal35LargeDiesisDown: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 l 540 112 l 540 274 l 269 -58 l 269 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z', + }, + accSagittalSharp25SDown: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 b 112 -112 0 -53 36 -112 l 135 -112 l 135 -517 l 180 -517 l 180 -89 b 248 26 206 -65 229 -27 b 315 -89 264 -27 287 -65 l 315 -517 l 360 -517 l 360 -112 l 383 -112 b 495 68 458 -112 495 -53 l 449 68 b 399 -4 449 20 433 -4 b 248 248 297 -4 261 171 b 122 0 216 96 176 14 b 94 -4 112 -3 102 -4 b 45 68 60 -4 45 20 z', + }, + accSagittalFlat25SUp: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -68 b 94 4 45 -20 60 4 b 122 0 102 4 112 3 b 248 -248 176 -14 216 -96 b 399 4 261 -171 297 4 b 449 -68 433 4 449 -20 l 495 -68 b 383 112 495 53 458 112 l 360 112 l 360 517 l 315 517 l 315 89 b 248 -26 287 65 264 27 b 180 89 229 27 206 65 l 180 517 l 135 517 l 135 112 l 112 112 b 0 -68 36 112 0 53 z', + }, + accSagittalSharp7CDown: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 112 l 89 112 b 180 104 124 112 154 109 l 180 -517 l 225 -517 l 225 89 b 315 -68 285 60 315 9 l 315 -248 l 360 -248 l 360 68 b 135 248 360 187 285 248 l 0 248 z', + }, + accSagittalFlat7CUp: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 135 -248 b 360 -68 285 -248 360 -187 l 360 248 l 315 248 l 315 68 b 225 -89 315 -9 285 -60 l 225 517 l 180 517 l 180 -104 b 89 -112 154 -109 124 -112 l 45 -112 l 45 517 l 0 517 z', + }, + accSagittalSharp5CDown: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -517 l 45 71 l 180 -56 l 180 -517 l 225 -517 l 225 -98 l 405 -268 l 405 -112 l 23 248 l 0 248 l 0 -517 z', + }, + accSagittalFlat5CUp: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 517 l 0 -248 l 23 -248 l 405 112 l 405 268 l 225 98 l 225 517 l 180 517 l 180 56 l 45 -71 l 45 517 z', + }, + accSagittalSharp5v7kDown: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -112 l 0 -276 l 135 -82 l 135 -517 l 180 -517 l 180 -17 l 271 112 l 315 112 l 315 -517 l 360 -517 l 360 107 b 449 -68 420 89 449 30 l 449 -248 l 495 -248 l 495 68 b 360 248 495 189 449 248 l 248 248 z', + }, + accSagittalFlat5v7kUp: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 248 -248 l 360 -248 b 495 -68 449 -248 495 -189 l 495 248 l 449 248 l 449 68 b 360 -107 449 -30 420 -89 l 360 517 l 315 517 l 315 -112 l 271 -112 l 180 17 l 180 517 l 135 517 l 135 82 l 0 276 l 0 112 z', + }, + accSagittalSharp: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 180 -53 l 180 -517 l 225 -517 l 225 0 l 292 85 l 360 0 l 360 -517 l 405 -517 l 405 -53 l 585 -274 l 585 -112 l 292 248 l 0 -112 l 0 -274 z', + }, + accSagittalFlat: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 274 l 0 112 l 292 -248 l 585 112 l 585 274 l 405 53 l 405 517 l 360 517 l 360 0 l 292 -85 l 225 0 l 225 517 l 180 517 l 180 53 z', + }, + accSagittalSharp5v7kUp: { + x_min: 0, + x_max: 312, + y_min: -361, + y_max: 172, + ha: 533, + o: 'm 45 -517 l 45 -10 b 135 -92 68 -48 98 -75 l 135 -520 l 180 -520 l 180 -108 b 248 -115 203 -112 225 -115 b 271 -112 256 -115 264 -115 l 271 -517 l 315 -517 l 315 -107 b 449 68 405 -89 449 -30 l 405 68 b 297 -4 405 19 369 -4 b 23 248 131 -4 56 85 l 0 248 l 0 -517 z', + }, + accSagittalFlat5v7kDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 361, + ha: 533, + o: 'm 0 517 l 0 -248 l 23 -248 b 297 4 56 -85 131 4 b 405 -68 369 4 405 -19 l 449 -68 b 315 107 449 30 405 89 l 315 517 l 271 517 l 271 112 b 248 115 264 115 256 115 b 180 108 225 115 203 112 l 180 520 l 135 520 l 135 92 b 45 10 98 75 68 48 l 45 517 z', + }, + accSagittalSharp5CUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -266 l 135 -153 l 135 -517 l 180 -517 l 180 -115 l 271 -39 l 271 -517 l 315 -517 l 315 0 l 405 75 l 405 -517 l 449 -517 l 449 248 l 428 248 l 0 -112 z', + }, + accSagittalFlat5CDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 112 l 428 -248 l 449 -248 l 449 517 l 405 517 l 405 -75 l 315 0 l 315 517 l 271 517 l 271 39 l 180 115 l 180 517 l 135 517 l 135 153 l 0 266 z', + }, + accSagittalSharp7CUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 112 l 135 112 l 135 -517 l 180 -517 l 180 108 b 271 89 213 105 243 99 l 271 -517 l 315 -517 l 315 73 b 405 -68 374 45 405 -3 l 405 -248 l 449 -248 l 449 68 b 135 248 449 187 346 248 l 0 248 z', + }, + accSagittalFlat7CDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 135 -248 b 449 -68 346 -248 449 -187 l 449 248 l 405 248 l 405 68 b 315 -73 405 3 374 -45 l 315 517 l 271 517 l 271 -89 b 180 -108 243 -99 213 -105 l 180 517 l 135 517 l 135 -112 l 45 -112 l 45 517 l 0 517 z', + }, + accSagittalSharp25SUp: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -30 l 495 143 l 495 14 l 0 -157 l 0 -255 l 225 -177 l 225 -517 l 271 -517 l 271 -161 l 360 -130 l 360 -517 l 405 -517 l 405 -115 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 517 248 l 0 68 z', + }, + accSagittalFlat25SDown: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 l 517 -248 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 115 l 405 517 l 360 517 l 360 130 l 271 161 l 271 517 l 225 517 l 225 177 l 0 255 l 0 157 l 495 -14 l 495 -143 l 0 30 z', + }, + accSagittalSharp35MUp: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -112 l 0 -274 l 135 -108 l 135 -517 l 180 -517 l 180 -53 l 271 58 l 271 -517 l 315 -517 l 315 112 l 360 112 b 405 109 376 112 390 112 l 405 -517 l 449 -517 l 449 96 b 540 -68 510 72 540 17 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 z', + }, + accSagittalFlat35MDown: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 292 -248 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 449 -96 540 -17 510 -72 l 449 517 l 405 517 l 405 -109 b 360 -112 390 -112 376 -112 l 315 -112 l 315 517 l 271 517 l 271 -58 l 180 53 l 180 517 l 135 517 l 135 108 l 0 274 l 0 112 z', + }, + accSagittalSharp11MUp: { + x_min: 0, + x_max: 469, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -112 l 0 -271 l 180 -79 l 180 -517 l 225 -517 l 225 -30 l 315 65 l 315 -517 l 360 -517 l 360 65 l 449 -30 l 449 -517 l 495 -517 l 495 -79 l 675 -271 l 675 -112 l 337 248 z', + }, + accSagittalFlat11MDown: { + x_min: 0, + x_max: 469, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 337 -248 l 675 112 l 675 271 l 495 79 l 495 517 l 449 517 l 449 30 l 360 -65 l 360 517 l 315 517 l 315 -65 l 225 30 l 225 517 l 180 517 l 180 79 l 0 271 l 0 112 z', + }, + accSagittalSharp11LUp: { + x_min: 0, + x_max: 469, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 112 l 449 112 l 449 -517 l 495 -517 l 495 104 b 631 -68 585 82 631 26 l 631 -248 l 675 -248 l 675 68 b 449 248 675 187 600 248 l 225 248 b 0 68 75 248 0 187 z', + }, + accSagittalFlat11LDown: { + x_min: 0, + x_max: 469, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 449 -248 b 675 -68 600 -248 675 -187 l 675 248 l 631 248 l 631 68 b 495 -104 631 -26 585 -82 l 495 517 l 449 517 l 449 -112 l 360 -112 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z', + }, + accSagittalSharp35LUp: { + x_min: 0, + x_max: 500, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 71 l 452 -17 l 452 -517 l 495 -517 l 495 -56 l 720 -268 l 720 -112 l 337 248 l 225 248 b 0 68 75 248 0 187 z', + }, + accSagittalFlat35LDown: { + x_min: 0, + x_max: 500, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 l 720 112 l 720 268 l 495 56 l 495 517 l 452 517 l 452 17 l 360 -71 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z', + }, + accSagittalDoubleSharp25SDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 b 135 -112 0 -53 45 -112 b 243 -62 180 -112 215 -95 l 89 -503 l 143 -517 l 292 -82 l 445 -517 l 495 -503 l 343 -62 b 449 -112 372 -95 408 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 315 148 b 112 -4 274 148 236 -4 b 45 68 68 -4 45 20 z', + }, + accSagittalDoubleFlat25SUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -68 b 112 4 45 -20 68 4 b 292 -248 236 4 274 -148 b 475 4 315 -148 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 b 343 62 408 112 372 95 l 495 503 l 445 517 l 292 82 l 143 517 l 89 503 l 243 62 b 135 112 215 95 180 112 b 0 -68 45 112 0 53 z', + }, + accSagittalDoubleSharp7CDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -503 l 52 -517 l 203 -82 l 354 -517 l 405 -503 l 230 0 l 271 108 b 495 -68 420 92 495 35 l 495 -248 l 540 -248 l 540 68 b 225 248 540 187 435 248 l 89 248 l 89 112 l 135 112 l 174 0 z m 213 112 l 203 82 l 192 112 z', + }, + accSagittalDoubleFlat7CUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 174 0 l 135 -112 l 89 -112 l 89 -248 l 225 -248 b 540 -68 435 -248 540 -187 l 540 248 l 495 248 l 495 68 b 271 -108 495 -35 420 -92 l 230 0 l 405 503 l 354 517 l 203 82 l 52 517 l 0 503 z m 192 -112 l 203 -82 l 213 -112 z', + }, + accSagittalDoubleSharp5CDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 405 -503 l 230 0 l 232 4 l 585 -264 l 585 -112 l 112 248 l 89 248 l 89 112 l 151 68 l 174 0 l 0 -503 l 52 -517 l 203 -82 l 354 -517 z', + }, + accSagittalDoubleFlat5CUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 354 517 l 203 82 l 52 517 l 0 503 l 174 0 l 151 -68 l 89 -112 l 89 -248 l 112 -248 l 585 112 l 585 264 l 232 -4 l 230 0 l 405 503 z', + }, + accSagittalDoubleSharp5v7kDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -274 l 252 35 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 360 112 b 540 -68 480 112 540 53 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 l 0 -112 z', + }, + accSagittalDoubleFlat5v7kUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 112 l 292 -248 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 360 -112 540 -53 480 -112 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 252 -35 l 0 274 z', + }, + accSagittalDoubleSharp: { + x_min: 0, + x_max: 469, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 540 -503 l 366 0 l 380 45 l 675 -271 l 675 -112 l 337 248 l 0 -112 l 0 -271 l 295 45 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 z', + }, + accSagittalDoubleFlat: { + x_min: 0, + x_max: 469, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 295 -45 l 0 271 l 0 112 l 337 -248 l 675 112 l 675 271 l 380 -45 l 366 0 l 540 503 z', + }, + accSagittal7v11KleismaUp: { + x_min: 0, + x_max: 219, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 68 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 -45 b 248 -112 200 -89 225 -112 b 315 68 292 -112 315 -53 l 271 68 b 248 -4 271 20 264 -4 b 236 0 245 -4 240 -3 b 157 248 213 14 187 96 b 78 0 127 96 101 14 b 65 -4 73 -3 68 -4 b 45 68 50 -4 45 20 l 0 68 b 68 -112 0 -53 23 -112 z', + }, + accSagittal7v11KleismaDown: { + x_min: 0, + x_max: 219, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 68 112 b 0 -68 23 112 0 53 l 45 -68 b 65 4 45 -20 50 4 b 78 0 68 4 73 3 b 157 -248 101 -14 127 -96 b 236 0 187 -96 213 -14 b 248 4 240 3 245 4 b 271 -68 264 4 271 -20 l 315 -68 b 248 112 315 53 292 112 b 180 45 225 112 200 89 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 z', + }, + accSagittal17CommaUp: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 -40 b 315 -118 248 -92 279 -118 b 405 62 374 -118 405 -59 l 360 62 b 324 -10 360 14 348 -10 b 302 -6 318 -10 311 -9 b 206 217 268 9 235 84 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z', + }, + accSagittal17CommaDown: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 206 -217 b 302 6 235 -84 268 -9 b 324 10 311 9 318 10 b 360 -62 348 10 360 -14 l 405 -62 b 315 118 405 59 374 118 b 225 40 279 118 248 92 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z', + }, + accSagittal55CommaUp: { + x_min: 0, + x_max: 219, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 248 l 0 -517 l 45 -517 l 45 58 l 315 -274 l 315 -112 l 23 248 z', + }, + accSagittal55CommaDown: { + x_min: 0, + x_max: 219, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 23 -248 l 315 112 l 315 274 l 45 -58 l 45 517 l 0 517 l 0 -248 z', + }, + accSagittal7v11CommaUp: { + x_min: 0, + x_max: 188, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 248 l 135 248 b 0 68 45 248 0 187 z', + }, + accSagittal7v11CommaDown: { + x_min: 0, + x_max: 188, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 135 -248 0 -187 45 -248 l 271 -248 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z', + }, + accSagittal5v11SmallDiesisUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 73 l 0 -248 l 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 -40 b 360 -118 295 -92 325 -118 b 449 62 420 -118 449 -59 l 405 62 b 369 -10 405 14 393 -10 b 348 -6 363 -10 356 -9 b 251 217 312 9 279 84 l 248 248 l 135 248 b 0 73 45 248 0 189 z', + }, + accSagittal5v11SmallDiesisDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -73 b 135 -248 0 -189 45 -248 l 248 -248 l 251 -217 b 348 6 279 -84 312 -9 b 369 10 356 9 363 10 b 405 -62 393 10 405 -14 l 449 -62 b 360 118 449 59 420 118 b 271 40 325 118 295 92 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 l 0 248 z', + }, + accSagittalSharp5v11SDown: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 242 37 203 -23 225 -3 b 315 -89 262 -23 285 -63 l 315 -517 l 360 -517 l 360 -112 l 383 -112 b 495 68 458 -112 495 -53 l 449 68 b 399 -4 449 20 433 -4 b 248 248 297 -4 261 171 b 157 68 222 127 192 68 l 89 68 b 0 -203 30 68 0 -23 z', + }, + accSagittalFlat5v11SUp: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -127 b 399 4 261 -171 297 4 b 449 -68 433 4 449 -20 l 495 -68 b 383 112 495 53 458 112 l 360 112 l 360 517 l 315 517 l 315 89 b 242 -37 285 63 262 23 b 180 23 225 3 203 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z', + }, + accSagittalSharp7v11CDown: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 89 -112 l 89 -517 l 135 -517 l 135 -95 b 206 37 163 -73 187 -30 b 271 -23 225 -3 248 -23 l 271 -517 l 315 -517 l 315 -23 l 383 -23 b 449 -203 428 -23 449 -84 l 495 -203 b 405 68 495 -23 465 68 l 292 68 b 203 248 258 68 228 127 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 20 l 0 68 b 89 -112 0 -52 30 -112 z', + }, + accSagittalFlat7v11CUp: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 89 112 b 0 -68 30 112 0 52 l 45 -68 b 81 3 45 -20 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 b 292 -68 228 -127 258 -68 l 405 -68 b 495 203 465 -68 495 23 l 449 203 b 383 23 449 84 428 23 l 315 23 l 315 517 l 271 517 l 271 23 b 206 -37 248 23 225 3 b 135 95 187 30 163 73 l 135 517 l 89 517 z', + }, + accSagittalSharp55CDown: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -271 l 135 -125 l 135 -517 l 180 -517 l 180 -78 l 315 65 l 315 -517 l 360 -517 l 360 248 l 337 248 l 0 -112 z', + }, + accSagittalFlat55CUp: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 112 l 337 -248 l 360 -248 l 360 517 l 315 517 l 315 -65 l 180 78 l 180 517 l 135 517 l 135 125 l 0 271 z', + }, + accSagittalSharp17CDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -248 l 45 -68 b 180 109 45 36 89 95 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -89 292 13 321 -55 l 360 -517 l 405 -517 l 405 -112 l 428 -112 b 540 68 504 -112 540 -53 l 495 68 b 445 -4 495 20 480 -4 b 292 248 343 -4 307 171 l 180 248 b 0 68 60 248 0 187 l 0 -248 z', + }, + accSagittalFlat17CUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 248 l 0 -68 b 180 -248 0 -187 60 -248 l 292 -248 b 445 4 307 -171 343 4 b 495 -68 480 4 495 -20 l 540 -68 b 428 112 540 53 504 112 l 405 112 l 405 517 l 360 517 l 360 89 b 271 -112 321 55 292 -13 l 225 -112 l 225 517 l 180 517 l 180 -109 b 45 68 89 -95 45 -36 l 45 248 z', + }, + accSagittalSharp7v11kDown: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -32 l 405 138 l 405 13 l 0 -157 l 0 -256 l 225 -161 l 225 -517 l 271 -517 l 271 -144 l 405 -86 l 405 -517 l 449 -517 l 449 248 l 428 248 l 0 68 z', + }, + accSagittalFlat7v11kUp: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 l 428 -248 l 449 -248 l 449 517 l 405 517 l 405 86 l 271 144 l 271 517 l 225 517 l 225 161 l 0 256 l 0 157 l 405 -13 l 405 -138 l 0 32 z', + }, + accSagittalSharp7v11kUp: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 135 -112 l 135 -517 l 180 -517 l 180 -105 b 271 -23 217 -94 248 -65 l 271 -517 l 315 -517 l 315 -23 b 405 -105 337 -65 369 -94 l 405 -517 l 449 -517 l 449 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 315 148 b 112 -4 274 148 236 -4 b 45 68 68 -4 45 20 l 0 68 b 135 -112 0 -53 45 -112 z', + }, + accSagittalFlat7v11kDown: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 135 112 b 0 -68 45 112 0 53 l 45 -68 b 112 4 45 -20 68 4 b 292 -248 236 4 274 -148 b 475 4 315 -148 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 l 449 517 l 405 517 l 405 105 b 315 23 369 94 337 65 l 315 517 l 271 517 l 271 23 b 180 105 248 65 217 94 l 180 517 l 135 517 z', + }, + accSagittalSharp17CUp: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 -23 b 405 -105 337 -65 369 -94 l 405 -517 l 449 -517 l 449 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 312 150 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z', + }, + accSagittalFlat17CDown: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 b 475 4 312 -150 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 l 449 517 l 405 517 l 405 105 b 315 23 369 94 337 65 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalSharp55CUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -517 l 45 78 l 135 10 l 135 -517 l 180 -517 l 180 -23 l 271 -92 l 271 -517 l 315 -517 l 315 -127 l 495 -264 l 495 -112 l 23 248 l 0 248 l 0 -517 z', + }, + accSagittalFlat55CDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 517 l 0 -248 l 23 -248 l 495 112 l 495 264 l 315 127 l 315 517 l 271 517 l 271 92 l 180 23 l 180 517 l 135 517 l 135 -10 l 45 -78 l 45 517 z', + }, + accSagittalSharp7v11CUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 86 45 6 89 58 l 180 -517 l 225 -517 l 225 98 b 315 109 252 104 282 108 l 315 -517 l 360 -517 l 360 112 l 449 112 l 449 -517 l 495 -517 l 495 248 l 360 248 b 0 68 121 248 0 189 z', + }, + accSagittalFlat7v11CDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 360 -248 0 -189 121 -248 l 495 -248 l 495 517 l 449 517 l 449 -112 l 360 -112 l 360 517 l 315 517 l 315 -109 b 225 -98 282 -108 252 -104 l 225 517 l 180 517 l 180 -86 b 45 68 89 -58 45 -6 l 45 248 l 0 248 z', + }, + accSagittalSharp5v11SUp: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 -23 b 449 -105 383 -65 415 -94 l 449 -517 l 495 -517 l 495 -112 b 631 68 585 -112 631 -53 l 585 68 b 520 -4 585 20 563 -4 b 337 248 396 -4 360 150 l 225 248 b 0 68 76 248 0 187 z', + }, + accSagittalFlat5v11SDown: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 225 -248 0 -187 76 -248 l 337 -248 b 520 4 360 -150 396 4 b 585 -68 563 4 585 -20 l 631 -68 b 495 112 631 53 585 112 l 495 517 l 449 517 l 449 105 b 360 23 415 94 383 65 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z', + }, + accSagittalDoubleSharp5v11SDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 341 -60 b 449 -112 370 -95 405 -112 b 585 68 540 -112 585 -53 l 540 68 b 475 -4 540 20 517 -4 b 292 248 350 -4 312 150 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z', + }, + accSagittalDoubleFlat5v11SUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 b 475 4 312 -150 350 4 b 540 -68 517 4 540 -20 l 585 -68 b 449 112 585 53 540 112 b 341 60 405 112 370 95 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalDoubleSharp7v11CDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 112 -112 b 193 -73 143 -112 170 -99 l 45 -501 l 95 -517 l 248 -81 l 397 -517 l 449 -503 l 275 0 l 278 4 b 337 -23 295 -13 315 -23 l 405 -23 b 495 -203 465 -23 495 -84 l 540 -203 b 428 68 540 -23 503 68 l 360 68 b 248 248 310 68 271 127 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 112 -112 0 -52 36 -112 z', + }, + accSagittalDoubleFlat7v11CUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 112 112 b 0 -68 36 112 0 52 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 b 360 -68 271 -127 310 -68 l 428 -68 b 540 203 503 -68 540 23 l 495 203 b 405 23 495 84 465 23 l 337 23 b 278 -4 315 23 295 13 l 275 0 l 449 503 l 397 517 l 248 81 l 95 517 l 45 501 l 193 73 b 112 112 170 99 143 112 z', + }, + accSagittalDoubleSharp55CDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 428 248 l 0 -112 l 0 -266 l 307 -7 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 386 59 l 449 112 l 449 248 z', + }, + accSagittalDoubleFlat55CUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 449 -248 l 449 -112 l 386 -59 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 307 7 l 0 266 l 0 112 l 428 -248 z', + }, + accSagittalDoubleSharp17CDown: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -248 l 45 -68 b 271 112 45 53 120 112 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 387 -62 b 495 -112 416 -95 452 -112 b 631 68 585 -112 631 -53 l 585 68 b 520 -4 585 20 563 -4 b 337 248 396 -4 360 150 l 225 248 b 0 68 76 248 0 187 l 0 -248 z', + }, + accSagittalDoubleFlat17CUp: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 248 l 0 -68 b 225 -248 0 -187 76 -248 l 337 -248 b 520 4 360 -150 396 4 b 585 -68 563 4 585 -20 l 631 -68 b 495 112 631 53 585 112 b 387 62 452 112 416 95 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 271 -112 b 45 68 120 -112 45 -53 l 45 248 z', + }, + accSagittalDoubleSharp7v11kDown: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 l 0 -30 l 366 96 l 399 0 l 392 -23 l 0 -157 l 0 -255 l 353 -135 l 225 -503 l 276 -517 l 428 -82 l 579 -517 l 631 -503 l 455 0 l 507 145 l 540 157 l 540 248 l 517 248 z m 416 115 l 442 124 l 428 82 z', + }, + accSagittalDoubleFlat7v11kUp: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 517 -248 l 540 -248 l 540 -157 l 507 -145 l 455 0 l 631 503 l 579 517 l 428 82 l 276 517 l 225 503 l 353 135 l 0 255 l 0 157 l 392 23 l 399 0 l 366 -96 l 0 30 l 0 -68 z m 428 -82 l 442 -124 l 416 -115 z', + }, + accSagittal23CommaUp: { + x_min: 0, + x_max: 188, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 -4 b 68 -23 53 -17 60 -23 l 180 -23 b 225 -203 210 -23 225 -82 l 271 -203 b 206 68 271 -23 248 68 l 89 68 b 23 248 71 68 48 127 l 0 248 z', + }, + accSagittal23CommaDown: { + x_min: 0, + x_max: 188, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 23 -248 b 89 -68 48 -127 71 -68 l 206 -68 b 271 203 248 -68 271 23 l 225 203 b 180 23 225 82 210 23 l 68 23 b 45 4 60 23 53 17 l 45 517 l 0 517 z', + }, + accSagittal5v19CommaUp: { + x_min: 0, + x_max: 156, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 248 l 203 248 b 86 112 151 157 112 112 b 45 157 59 112 45 127 l 0 157 b 76 23 0 72 26 27 l 0 -112 z', + }, + accSagittal5v19CommaDown: { + x_min: 0, + x_max: 156, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 112 l 76 -23 b 0 -157 26 -27 0 -72 l 45 -157 b 86 -112 45 -127 59 -112 b 203 -248 112 -112 151 -157 l 225 -248 l 225 517 l 180 517 l 180 -33 l 0 284 z', + }, + accSagittal5v23SmallDiesisUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -284 l 180 33 l 180 -517 l 225 -517 l 225 -4 b 248 -23 233 -17 240 -23 l 360 -23 b 405 -203 390 -23 405 -82 l 449 -203 b 386 68 449 -23 428 68 l 271 68 b 203 248 251 68 228 127 l 0 -112 z', + }, + accSagittal5v23SmallDiesisDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 112 l 203 -248 b 271 -68 228 -127 251 -68 l 386 -68 b 449 203 428 -68 449 23 l 405 203 b 360 23 405 82 390 23 l 248 23 b 225 4 240 23 233 17 l 225 517 l 180 517 l 180 -33 l 0 284 z', + }, + accSagittalSharp5v23SDown: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 6 b 89 -23 59 -13 73 -23 l 180 -23 l 180 -517 l 225 -517 l 225 -23 l 292 -23 b 360 -203 337 -23 360 -84 l 405 -203 b 315 68 405 -23 374 68 l 112 68 b 23 248 78 68 48 127 l 0 248 z', + }, + accSagittalFlat5v23SUp: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 23 -248 b 112 -68 48 -127 78 -68 l 315 -68 b 405 203 374 -68 405 23 l 360 203 b 292 23 360 84 337 23 l 225 23 l 225 517 l 180 517 l 180 23 l 89 23 b 45 -6 73 23 59 13 l 45 517 l 0 517 z', + }, + accSagittalSharp5v19CDown: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 b 89 -112 0 -52 30 -112 l 89 -517 l 135 -517 l 135 -95 b 225 112 173 -65 203 4 l 271 112 l 271 -517 l 315 -517 l 315 107 b 405 -68 374 89 405 30 l 405 -248 l 449 -248 l 449 68 b 315 248 449 189 405 248 l 203 248 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 23 z', + }, + accSagittalFlat5v19CUp: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -68 b 81 3 45 -23 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 l 315 -248 b 449 -68 405 -248 449 -189 l 449 248 l 405 248 l 405 68 b 315 -107 405 -30 374 -89 l 315 517 l 271 517 l 271 -112 l 225 -112 b 135 95 203 -4 173 65 l 135 517 l 89 517 l 89 112 b 0 -68 30 112 0 52 z', + }, + accSagittalSharp23CDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 135 -82 l 135 -517 l 180 -517 l 180 -17 l 239 68 b 315 -23 261 7 287 -23 l 315 -517 l 360 -517 l 360 -23 l 428 -23 b 495 -203 472 -23 495 -84 l 540 -203 b 449 68 540 -23 510 68 l 337 68 b 248 248 302 68 271 127 l 0 -112 l 0 -276 z', + }, + accSagittalFlat23CUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 276 l 0 112 l 248 -248 b 337 -68 271 -127 302 -68 l 449 -68 b 540 203 510 -68 540 23 l 495 203 b 428 23 495 84 472 23 l 360 23 l 360 517 l 315 517 l 315 23 b 239 -68 287 23 261 -7 l 180 17 l 180 517 l 135 517 l 135 82 z', + }, + accSagittalSharp23CUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 14 b 112 -23 63 -10 86 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 360 -23 b 449 -203 420 -23 449 -84 l 495 -203 b 383 68 495 -23 458 68 l 135 68 b 23 248 85 68 48 127 l 0 248 z', + }, + accSagittalFlat23CDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 23 -248 b 135 -68 48 -127 85 -68 l 383 -68 b 495 203 458 -68 495 23 l 449 203 b 360 23 449 84 420 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 -14 86 23 63 10 l 45 517 l 0 517 z', + }, + accSagittalSharp5v19CUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -112 l 0 -266 l 135 -153 l 135 -517 l 180 -517 l 180 -115 l 271 -39 l 271 -517 l 315 -517 l 315 0 l 405 75 l 405 -517 l 449 -517 l 449 248 l 428 248 b 130 68 285 127 186 68 b 45 157 73 68 45 98 l 0 157 b 112 -20 0 53 37 -6 z', + }, + accSagittalFlat5v19CDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 112 20 b 0 -157 37 6 0 -53 l 45 -157 b 130 -68 45 -98 73 -68 b 428 -248 186 -68 285 -127 l 449 -248 l 449 517 l 405 517 l 405 -75 l 315 0 l 315 517 l 271 517 l 271 39 l 180 115 l 180 517 l 135 517 l 135 153 l 0 266 l 0 112 z', + }, + accSagittalSharp5v23SUp: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 135 -108 l 135 -517 l 180 -517 l 180 -53 l 271 58 l 271 -517 l 315 -517 l 315 14 b 383 -23 334 -10 357 -23 l 405 -23 l 405 -517 l 449 -517 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 405 68 b 292 248 356 68 318 127 l 0 -112 l 0 -274 z', + }, + accSagittalFlat5v23SDown: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 274 l 0 112 l 292 -248 b 405 -68 318 -127 356 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 449 517 l 405 517 l 405 23 l 383 23 b 315 -14 357 23 334 10 l 315 517 l 271 517 l 271 -58 l 180 53 l 180 517 l 135 517 l 135 108 z', + }, + accSagittalDoubleSharp5v23SDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 52 -517 l 203 -81 l 354 -517 l 405 -503 l 239 -23 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 225 68 b 112 248 176 68 138 127 l 89 248 l 89 112 b 170 -14 109 45 135 0 l 0 -501 z', + }, + accSagittalDoubleFlat5v23SUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 501 l 170 14 b 89 -112 135 0 109 -45 l 89 -248 l 112 -248 b 225 -68 138 -127 176 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 239 23 l 405 503 l 354 517 l 203 81 l 52 517 z', + }, + accSagittalDoubleSharp5v19CDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 b 112 -112 0 -52 36 -112 b 193 -73 143 -112 170 -99 l 45 -501 l 95 -517 l 248 -81 l 397 -517 l 449 -501 l 275 0 l 315 112 b 495 -68 435 112 495 53 l 495 -248 l 540 -248 l 540 68 b 360 248 540 189 480 248 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 z', + }, + accSagittalDoubleFlat5v19CUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 360 -248 b 540 -68 480 -248 540 -189 l 540 248 l 495 248 l 495 68 b 315 -112 495 -53 435 -112 l 275 0 l 449 501 l 397 517 l 248 81 l 95 517 l 45 501 l 193 73 b 112 112 170 99 143 112 b 0 -68 36 112 0 52 z', + }, + accSagittalDoubleSharp23CDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 252 35 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 323 4 b 383 -23 340 -13 360 -23 l 449 -23 b 540 -203 510 -23 540 -84 l 585 -203 b 472 68 585 -23 547 68 l 405 68 b 292 248 356 68 318 127 l 0 -112 l 0 -274 z', + }, + accSagittalDoubleFlat23CUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 274 l 0 112 l 292 -248 b 405 -68 318 -127 356 -68 l 472 -68 b 585 203 547 -68 585 23 l 540 203 b 449 23 540 84 510 23 l 383 23 b 323 -4 360 23 340 13 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 252 -35 z', + }, + accSagittal19SchismaUp: { + x_min: 0, + x_max: 125, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 68 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 248 l 157 248 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 l 0 68 b 68 -112 0 -52 23 -112 z', + }, + accSagittal19SchismaDown: { + x_min: 0, + x_max: 125, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 68 112 b 0 -68 23 112 0 52 l 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 l 180 -248 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 z', + }, + accSagittal17KleismaUp: { + x_min: 0, + x_max: 156, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 248 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z', + }, + accSagittal17KleismaDown: { + x_min: 0, + x_max: 156, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 225 -248 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z', + }, + accSagittal143CommaUp: { + x_min: 0, + x_max: 156, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -203 l 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 248 l 203 248 b 135 68 177 127 154 68 l 105 68 b 45 157 65 68 45 98 l 0 157 b 23 20 0 95 7 50 b 0 -203 7 -23 0 -98 z', + }, + accSagittal143CommaDown: { + x_min: 0, + x_max: 156, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 23 -20 0 98 7 23 b 0 -157 7 -50 0 -95 l 45 -157 b 105 -68 45 -98 65 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 225 -248 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z', + }, + accSagittal11v49CommaUp: { + x_min: 0, + x_max: 188, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -292 b 89 -157 45 -203 60 -157 l 203 -157 b 225 -143 210 -157 217 -153 l 225 -517 l 271 -517 l 271 248 l 248 248 b 180 157 233 187 210 157 l 68 157 b 0 -68 23 157 0 82 l 45 -68 b 89 68 45 23 60 68 l 203 68 b 225 84 209 68 216 72 l 225 -36 b 180 -68 213 -58 199 -68 l 68 -68 b 0 -292 23 -68 0 -143 z', + }, + accSagittal11v49CommaDown: { + x_min: 0, + x_max: 188, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 292 b 68 68 0 143 23 68 l 180 68 b 225 36 199 68 213 58 l 225 -84 b 203 -68 216 -72 209 -68 l 89 -68 b 45 68 60 -68 45 -23 l 0 68 b 68 -157 0 -82 23 -157 l 180 -157 b 248 -248 210 -157 233 -187 l 271 -248 l 271 517 l 225 517 l 225 143 b 203 157 217 153 210 157 l 89 157 b 45 292 60 157 45 203 z', + }, + accSagittal19CommaUp: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 b 68 -112 0 -52 23 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 -4 b 203 -23 187 -17 196 -23 l 315 -23 b 360 -203 346 -23 360 -82 l 405 -203 b 341 68 405 -23 383 68 l 225 68 b 157 248 206 68 183 127 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 z', + }, + accSagittal19CommaDown: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 b 225 -68 183 -127 206 -68 l 341 -68 b 405 203 383 -68 405 23 l 360 203 b 315 23 360 82 346 23 l 203 23 b 180 4 196 23 187 17 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 b 0 -68 23 112 0 52 z', + }, + accSagittal7v19CommaUp: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 b 68 -112 0 -52 23 -112 b 135 -45 89 -112 112 -89 l 135 -517 l 180 -517 l 180 112 l 225 112 b 315 -68 285 112 315 53 l 315 -248 l 360 -248 l 360 68 b 271 248 360 187 330 248 l 157 248 b 79 0 127 98 101 16 b 68 -3 73 0 68 -3 b 45 68 52 -3 45 20 z', + }, + accSagittal7v19CommaDown: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -68 b 68 3 45 -20 52 3 b 79 0 68 3 73 0 b 157 -248 101 -16 127 -98 l 271 -248 b 360 -68 330 -248 360 -187 l 360 248 l 315 248 l 315 68 b 225 -112 315 -53 285 -112 l 180 -112 l 180 517 l 135 517 l 135 45 b 68 112 112 89 89 112 b 0 -68 23 112 0 52 z', + }, + accSagittal49SmallDiesisUp: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -203 l 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -68 330 112 360 53 l 360 -248 l 405 -248 l 405 68 b 315 248 405 187 374 248 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z', + }, + accSagittal49SmallDiesisDown: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 315 -248 b 405 -68 374 -248 405 -187 l 405 248 l 360 248 l 360 68 b 271 -112 360 -53 330 -112 l 225 -112 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z', + }, + accSagittal23SmallDiesisUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 89 -23 45 -82 60 -23 l 157 -23 b 180 -4 164 -23 173 -17 l 180 -517 l 225 -517 l 225 58 l 495 -274 l 495 -112 l 203 248 b 135 68 177 127 154 68 l 68 68 b 0 -203 23 68 0 -23 z', + }, + accSagittal23SmallDiesisDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 68 -68 0 23 23 -68 l 135 -68 b 203 -248 154 -68 177 -127 l 495 112 l 495 274 l 225 -58 l 225 517 l 180 517 l 180 4 b 157 23 173 17 164 23 l 89 23 b 45 203 60 23 45 82 z', + }, + accSagittal5v13MediumDiesisUp: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -259 l 315 -89 l 315 -517 l 360 -517 l 360 248 l 337 248 b 128 180 253 203 184 180 b 45 248 73 180 45 203 l 0 248 b 52 95 0 170 17 120 l 0 68 l 0 -33 l 315 135 l 315 10 l 0 -157 z', + }, + accSagittal5v13MediumDiesisDown: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 157 l 315 -10 l 315 -135 l 0 33 l 0 -68 l 52 -95 b 0 -248 17 -120 0 -170 l 45 -248 b 128 -180 45 -203 73 -180 b 337 -248 184 -180 253 -203 l 360 -248 l 360 517 l 315 517 l 315 89 l 0 259 z', + }, + accSagittal11v19MediumDiesisUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -248 l 45 -68 b 180 112 45 53 89 112 l 225 112 l 225 -517 l 271 -517 l 271 -4 b 292 -23 278 -17 285 -23 l 405 -23 b 449 -203 435 -23 449 -82 l 495 -203 b 431 68 495 -23 472 68 l 315 68 b 248 248 295 68 271 127 l 135 248 b 0 68 45 248 0 187 l 0 -248 z', + }, + accSagittal11v19MediumDiesisDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 248 l 0 -68 b 135 -248 0 -187 45 -248 l 248 -248 b 315 -68 271 -127 295 -68 l 431 -68 b 495 203 472 -68 495 23 l 449 203 b 405 23 449 82 435 23 l 292 23 b 271 4 285 23 278 17 l 271 517 l 225 517 l 225 -112 l 180 -112 b 45 68 89 -112 45 -53 l 45 248 z', + }, + accSagittal49MediumDiesisUp: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -68 l 0 -248 l 45 -248 l 315 -94 l 315 -517 l 360 -517 l 360 248 l 225 248 b 0 -68 75 248 0 143 z m 45 -68 b 225 112 45 53 105 112 l 315 112 l 315 10 l 45 -145 z', + }, + accSagittal49MediumDiesisDown: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 68 b 225 -248 0 -143 75 -248 l 360 -248 l 360 517 l 315 517 l 315 94 l 45 248 l 0 248 z m 45 145 l 315 -10 l 315 -112 l 225 -112 b 45 68 105 -112 45 -53 z', + }, + accSagittal5v49MediumDiesisUp: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -89 l 0 -248 l 225 53 l 225 -517 l 271 -517 l 271 53 l 495 -248 l 495 -89 l 248 248 b 89 89 170 143 118 89 b 45 157 60 89 45 112 l 0 157 b 68 3 0 68 23 16 z', + }, + accSagittal5v49MediumDiesisDown: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 68 -3 b 0 -157 23 -16 0 -68 l 45 -157 b 89 -89 45 -112 60 -89 b 248 -248 118 -89 170 -143 l 495 89 l 495 248 l 271 -53 l 271 517 l 225 517 l 225 -53 l 0 248 l 0 89 z', + }, + accSagittal49LargeDiesisUp: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 -89 l 360 -248 l 405 -248 l 405 -68 b 180 248 405 143 330 248 l 0 248 z m 45 12 l 45 112 l 180 112 b 360 -68 300 112 360 53 l 360 -147 z', + }, + accSagittal49LargeDiesisDown: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 180 -248 b 405 68 330 -248 405 -143 l 405 248 l 360 248 l 45 89 l 45 517 l 0 517 z m 360 147 l 360 68 b 180 -112 360 -53 300 -112 l 45 -112 l 45 -12 z', + }, + accSagittal11v19LargeDiesisUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 -86 l 449 -256 l 449 -157 l 45 13 l 45 138 l 449 -30 l 449 68 l 23 248 l 0 248 z', + }, + accSagittal11v19LargeDiesisDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 23 -248 l 449 -68 l 449 30 l 45 -138 l 45 -13 l 449 157 l 449 256 l 45 86 l 45 517 l 0 517 z', + }, + accSagittal5v13LargeDiesisUp: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 b 89 -112 0 -52 30 -112 b 180 -35 125 -112 157 -86 l 180 -517 l 225 -517 l 225 -86 l 631 -256 l 631 -157 l 225 13 l 225 138 l 631 -30 l 631 68 l 203 248 b 101 0 173 98 138 16 b 81 -3 94 0 86 -3 b 45 68 56 -3 45 20 z', + }, + accSagittal5v13LargeDiesisDown: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -68 b 81 3 45 -20 56 3 b 101 0 86 3 94 0 b 203 -248 138 -16 173 -98 l 631 -68 l 631 30 l 225 -138 l 225 -13 l 631 157 l 631 256 l 225 86 l 225 517 l 180 517 l 180 35 b 89 112 157 86 125 112 b 0 -68 30 112 0 52 z', + }, + accSagittalSharp23SDown: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -203 l 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 b 315 6 287 -23 301 -13 l 315 -517 l 360 -517 l 360 248 l 337 248 b 248 68 312 127 282 68 l 194 68 b 89 157 125 68 89 98 l 45 157 b 60 59 45 118 50 85 b 0 -203 20 30 0 -56 z', + }, + accSagittalFlat23SUp: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 60 -59 0 56 20 -30 b 45 -157 50 -85 45 -118 l 89 -157 b 194 -68 89 -98 125 -68 l 248 -68 b 337 -248 282 -68 312 -127 l 360 -248 l 360 517 l 315 517 l 315 -6 b 271 23 301 13 287 23 l 180 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z', + }, + accSagittalSharp49SDown: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -292 l 45 -292 b 112 -157 45 -203 68 -157 l 135 -157 l 135 -517 l 180 -517 l 180 -157 l 271 -157 b 315 -135 285 -157 300 -150 l 315 -517 l 360 -517 l 360 248 l 337 248 b 248 157 323 187 292 157 l 89 157 b 0 -68 30 157 0 82 l 45 -68 b 112 68 45 23 68 68 l 271 68 b 315 89 284 68 300 75 l 315 -32 b 248 -68 298 -56 275 -68 l 89 -68 b 0 -292 29 -68 0 -143 z', + }, + accSagittalFlat49SUp: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 292 b 89 68 0 143 29 68 l 248 68 b 315 32 275 68 298 56 l 315 -89 b 271 -68 300 -75 284 -68 l 112 -68 b 45 68 68 -68 45 -23 l 0 68 b 89 -157 0 -82 30 -157 l 248 -157 b 337 -248 292 -157 323 -187 l 360 -248 l 360 517 l 315 517 l 315 135 b 271 157 300 150 285 157 l 180 157 l 180 517 l 135 517 l 135 157 l 112 157 b 45 292 68 157 45 203 z', + }, + accSagittalSharp7v19CDown: { + x_min: 0, + x_max: 250, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -112 l 0 -271 l 135 -125 l 135 -517 l 180 -517 l 180 -78 l 315 65 l 315 -517 l 360 -517 l 360 248 l 337 248 b 118 89 239 143 166 89 b 45 157 68 89 45 112 l 0 157 b 89 -20 0 53 29 -6 z', + }, + accSagittalFlat7v19CUp: { + x_min: 0, + x_max: 250, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 89 20 b 0 -157 29 6 0 -53 l 45 -157 b 118 -89 45 -112 68 -89 b 337 -248 166 -89 239 -143 l 360 -248 l 360 517 l 315 517 l 315 -65 l 180 78 l 180 517 l 135 517 l 135 125 l 0 271 l 0 112 z', + }, + accSagittalSharp19CDown: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -248 l 45 -248 l 45 -68 b 180 96 45 17 89 72 l 180 -517 l 225 -517 l 225 107 b 315 112 252 112 282 112 l 360 112 l 360 -517 l 405 -517 l 405 248 l 271 248 b 0 68 89 248 0 187 z', + }, + accSagittalFlat19CUp: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 271 -248 0 -187 89 -248 l 405 -248 l 405 517 l 360 517 l 360 -112 l 315 -112 b 225 -107 282 -112 252 -112 l 225 517 l 180 517 l 180 -96 b 45 68 89 -72 45 -17 l 45 248 l 0 248 z', + }, + accSagittalSharp11v49CDown: { + x_min: 0, + x_max: 344, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 112 -23 45 -82 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 271 112 215 -23 245 23 l 315 112 l 315 -517 l 360 -517 l 360 107 b 449 -68 420 89 449 30 l 449 -248 l 495 -248 l 495 68 b 360 248 495 189 449 248 l 248 248 b 157 68 222 128 192 68 l 89 68 b 0 -203 30 68 0 -23 z', + }, + accSagittalFlat11v49CUp: { + x_min: 0, + x_max: 344, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -128 l 360 -248 b 495 -68 449 -248 495 -189 l 495 248 l 449 248 l 449 68 b 360 -107 449 -30 420 -89 l 360 517 l 315 517 l 315 -112 l 271 -112 b 180 23 245 -23 215 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 82 z', + }, + accSagittalSharp143CDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 112 -23 45 -84 68 -23 l 135 -23 l 135 -517 l 180 -517 l 180 -23 b 259 76 210 -23 236 10 l 315 17 l 315 -517 l 360 -517 l 360 -30 l 585 -271 l 585 -112 l 248 248 b 157 68 222 127 192 68 l 89 68 b 0 -203 30 68 0 -23 z', + }, + accSagittalFlat143CUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 89 -68 0 23 30 -68 l 157 -68 b 248 -248 192 -68 222 -127 l 585 112 l 585 271 l 360 30 l 360 517 l 315 517 l 315 -17 l 259 -76 b 180 23 236 -10 210 23 l 180 517 l 135 517 l 135 23 l 112 23 b 45 203 68 23 45 84 z', + }, + accSagittalSharp17kDown: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -157 l 0 -256 l 225 -161 l 225 -517 l 271 -517 l 271 -144 l 405 -86 l 405 -517 l 449 -517 l 449 248 l 428 248 b 145 171 305 196 210 171 b 45 248 78 171 45 196 l 0 248 b 79 101 0 170 26 121 l 0 68 l 0 -32 l 405 138 l 405 13 z', + }, + accSagittalFlat17kUp: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 405 -13 l 405 -138 l 0 32 l 0 -68 l 79 -101 b 0 -248 26 -121 0 -170 l 45 -248 b 145 -171 45 -196 78 -171 b 428 -248 210 -171 305 -196 l 449 -248 l 449 517 l 405 517 l 405 86 l 271 144 l 271 517 l 225 517 l 225 161 l 0 256 l 0 157 z', + }, + accSagittalSharp19sDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -248 l 45 -248 l 45 -68 b 180 109 45 36 89 95 l 180 -517 l 225 -517 l 225 112 l 271 112 b 360 -23 295 23 325 -23 l 360 -517 l 405 -517 l 405 -23 l 472 -23 b 540 -203 517 -23 540 -84 l 585 -203 b 495 68 585 -23 554 68 l 383 68 b 292 248 348 68 318 127 l 180 248 b 0 68 60 248 0 187 z', + }, + accSagittalFlat19sUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 180 -248 0 -187 60 -248 l 292 -248 b 383 -68 318 -127 348 -68 l 495 -68 b 585 203 554 -68 585 23 l 540 203 b 472 23 540 84 517 23 l 405 23 l 405 517 l 360 517 l 360 23 b 271 -112 325 23 295 -23 l 225 -112 l 225 517 l 180 517 l 180 -109 b 45 68 89 -95 45 -36 l 45 248 l 0 248 z', + }, + accSagittalSharp19sUp: { + x_min: 0, + x_max: 281, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 89 -96 l 89 -517 l 135 -517 l 135 -108 b 180 -112 148 -112 163 -112 b 225 -108 196 -112 210 -112 l 225 -517 l 271 -517 l 271 -94 b 360 -12 305 -78 337 -50 l 360 -517 l 405 -517 l 405 248 l 383 248 b 190 0 353 98 288 16 b 138 -3 171 0 153 -3 b 45 68 75 -3 45 20 l 0 68 b 89 -96 0 -17 30 -72 z', + }, + accSagittalFlat19sDown: { + x_min: 0, + x_max: 281, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 89 96 b 0 -68 30 72 0 17 l 45 -68 b 138 3 45 -20 75 3 b 190 0 153 3 171 0 b 383 -248 288 -16 353 -98 l 405 -248 l 405 517 l 360 517 l 360 12 b 271 94 337 50 305 78 l 271 517 l 225 517 l 225 108 b 180 112 210 112 196 112 b 135 108 163 112 148 112 l 135 517 l 89 517 z', + }, + accSagittalSharp17kUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 337 -23 b 405 14 363 -23 386 -10 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 68 402 127 364 68 l 112 68 b 0 -203 37 68 0 -23 z', + }, + accSagittalFlat17kDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 112 -68 0 23 37 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 517 l 405 517 l 405 -14 b 337 23 386 10 363 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalSharp143CUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 271 -23 l 271 -517 l 315 -517 l 315 -23 l 337 -23 b 405 14 363 -23 386 -10 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 68 402 127 364 68 l 240 68 b 89 157 140 68 89 98 l 45 157 b 68 53 45 115 52 81 b 0 -203 23 23 0 -63 z', + }, + accSagittalFlat143CDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 68 -53 0 63 23 -23 b 45 -157 52 -81 45 -115 l 89 -157 b 240 -68 89 -98 140 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 517 l 405 517 l 405 -14 b 337 23 386 10 363 23 l 315 23 l 315 517 l 271 517 l 271 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalSharp11v49CUp: { + x_min: 0, + x_max: 312, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -68 b 135 68 45 23 76 68 l 337 68 b 405 95 363 68 386 76 l 405 -27 b 315 -68 386 -55 356 -68 l 112 -68 b 0 -292 37 -68 0 -143 l 45 -292 b 135 -157 45 -203 75 -157 l 135 -517 l 180 -517 l 180 -157 l 271 -157 l 271 -517 l 315 -517 l 315 -157 l 337 -157 b 405 -130 360 -157 383 -148 l 405 -517 l 449 -517 l 449 248 l 428 248 b 315 157 413 187 376 157 l 112 157 b 0 -68 37 157 0 82 z', + }, + accSagittalFlat11v49CDown: { + x_min: 0, + x_max: 312, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 68 b 112 -157 0 -82 37 -157 l 315 -157 b 428 -248 376 -157 413 -187 l 449 -248 l 449 517 l 405 517 l 405 130 b 337 157 383 148 360 157 l 315 157 l 315 517 l 271 517 l 271 157 l 180 157 l 180 517 l 135 517 l 135 157 b 45 292 75 157 45 203 l 0 292 b 112 68 0 143 37 68 l 315 68 b 405 27 356 68 386 55 l 405 -95 b 337 -68 386 -76 363 -68 l 135 -68 b 45 68 76 -68 45 -23 z', + }, + accSagittalSharp19CUp: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 14 b 337 -23 289 -10 311 -23 l 360 -23 l 360 -517 l 405 -517 l 405 -23 b 495 -203 465 -23 495 -82 l 540 -203 b 428 68 540 -23 503 68 l 360 68 b 248 248 310 68 271 128 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z', + }, + accSagittalFlat19CDown: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 b 360 -68 271 -128 310 -68 l 428 -68 b 540 203 503 -68 540 23 l 495 203 b 405 23 495 82 465 23 l 405 517 l 360 517 l 360 23 l 337 23 b 271 -14 311 23 289 10 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z', + }, + accSagittalSharp7v19CUp: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 112 l 315 112 b 360 109 331 112 346 112 l 360 -517 l 405 -517 l 405 98 b 495 -68 465 73 495 19 l 495 -248 l 540 -248 l 540 68 b 360 248 540 189 480 248 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z', + }, + accSagittalFlat7v19CDown: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 360 -248 b 540 -68 480 -248 540 -189 l 540 248 l 495 248 l 495 68 b 405 -98 495 -19 465 -73 l 405 517 l 360 517 l 360 -109 b 315 -112 346 -112 331 -112 l 271 -112 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z', + }, + accSagittalSharp49SUp: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 112 l 360 112 b 405 109 376 112 390 112 l 405 -517 l 449 -517 l 449 96 b 540 -68 510 72 540 17 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z', + }, + accSagittalFlat49SDown: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 449 -96 540 -17 510 -72 l 449 517 l 405 517 l 405 -109 b 360 -112 390 -112 376 -112 l 315 -112 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalSharp23SUp: { + x_min: 0, + x_max: 469, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 135 -517 l 180 -517 l 180 -23 l 203 -23 b 271 14 229 -23 251 -10 l 271 -517 l 315 -517 l 315 71 l 405 -14 l 405 -517 l 449 -517 l 449 -56 l 675 -268 l 675 -112 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z', + }, + accSagittalFlat23SDown: { + x_min: 0, + x_max: 469, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 675 112 l 675 268 l 449 56 l 449 517 l 405 517 l 405 14 l 315 -71 l 315 517 l 271 517 l 271 -14 b 203 23 251 10 229 23 l 180 23 l 180 517 l 135 517 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalSharp5v13MUp: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 495 141 l 495 14 l 0 -157 l 0 -256 l 225 -180 l 225 -517 l 271 -517 l 271 -161 l 360 -130 l 360 -517 l 405 -517 l 405 -115 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 517 248 b 167 168 366 194 248 168 b 45 248 85 168 45 194 l 0 248 b 95 99 0 170 30 120 l 0 68 l 0 -30 z', + }, + accSagittalFlat5v13MDown: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 30 l 0 -68 l 95 -99 b 0 -248 30 -120 0 -170 l 45 -248 b 167 -168 45 -194 85 -168 b 517 -248 248 -168 366 -194 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 115 l 405 517 l 360 517 l 360 130 l 271 161 l 271 517 l 225 517 l 225 180 l 0 256 l 0 157 l 495 -14 l 495 -141 z', + }, + accSagittalSharp11v19MUp: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 180 104 45 26 89 82 l 180 -517 l 225 -517 l 225 112 l 315 112 l 315 -517 l 360 -517 l 360 14 b 428 -23 379 -10 402 -23 l 449 -23 l 449 -517 l 495 -517 l 495 -23 b 585 -203 554 -23 585 -84 l 631 -203 b 517 68 631 -23 593 68 l 449 68 b 337 248 400 68 363 127 l 225 248 b 0 68 75 248 0 187 z', + }, + accSagittalFlat11v19MDown: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 b 449 -68 363 -127 400 -68 l 517 -68 b 631 203 593 -68 631 23 l 585 203 b 495 23 585 84 554 23 l 495 517 l 449 517 l 449 23 l 428 23 b 360 -14 402 23 379 10 l 360 517 l 315 517 l 315 -112 l 225 -112 l 225 517 l 180 517 l 180 -104 b 45 68 89 -82 45 -26 l 45 248 l 0 248 z', + }, + accSagittalSharp49MUp: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -248 l 45 -248 l 225 -180 l 225 -517 l 271 -517 l 271 -166 l 360 -132 l 360 -517 l 405 -517 l 405 -117 l 495 -84 l 495 -517 l 540 -517 l 540 248 l 360 248 b 0 -68 120 248 0 143 z m 45 -145 l 45 -68 b 360 112 45 53 150 112 l 495 112 l 495 14 z', + }, + accSagittalFlat49MDown: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 68 b 360 -248 0 -143 120 -248 l 540 -248 l 540 517 l 495 517 l 495 84 l 405 117 l 405 517 l 360 517 l 360 132 l 271 166 l 271 517 l 225 517 l 225 180 l 45 248 l 0 248 z m 495 -14 l 495 -112 l 360 -112 b 45 68 150 -112 45 -53 l 45 145 z', + }, + accSagittalSharp5v49MUp: { + x_min: 0, + x_max: 469, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -271 l 180 -79 l 180 -517 l 225 -517 l 225 -30 l 315 65 l 315 -517 l 360 -517 l 360 65 l 449 -30 l 449 -517 l 495 -517 l 495 -79 l 675 -271 l 675 -112 l 337 248 b 118 89 239 143 166 89 b 45 157 68 89 45 112 l 0 157 b 107 0 0 62 36 10 l 0 -112 z', + }, + accSagittalFlat5v49MDown: { + x_min: 0, + x_max: 469, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 112 l 107 0 b 0 -157 36 -10 0 -62 l 45 -157 b 118 -89 45 -112 68 -89 b 337 -248 166 -89 239 -143 l 675 112 l 675 271 l 495 79 l 495 517 l 449 517 l 449 30 l 360 -65 l 360 517 l 315 517 l 315 -65 l 225 30 l 225 517 l 180 517 l 180 79 l 0 271 z', + }, + accSagittalSharp49LUp: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 -82 l 135 -112 l 135 -517 l 180 -517 l 180 -127 l 271 -157 l 271 -517 l 315 -517 l 315 -173 l 540 -248 l 585 -248 l 585 -68 b 180 248 585 143 449 248 l 0 248 z m 45 112 l 180 112 b 540 -68 420 112 540 53 l 540 -145 l 45 16 z', + }, + accSagittalFlat49LDown: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 180 -248 b 585 68 449 -248 585 -143 l 585 248 l 540 248 l 315 173 l 315 517 l 271 517 l 271 157 l 180 127 l 180 517 l 135 517 l 135 112 l 45 82 l 45 517 l 0 517 z m 45 -16 l 540 145 l 540 68 b 180 -112 540 -53 420 -112 l 45 -112 z', + }, + accSagittalSharp11v19LUp: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -517 l 45 -517 l 45 -81 l 135 -108 l 135 -517 l 180 -517 l 180 -121 l 271 -148 l 271 -517 l 315 -517 l 315 -161 l 631 -255 l 631 -157 l 45 16 l 45 144 l 631 -30 l 631 68 l 23 248 l 0 248 z', + }, + accSagittalFlat11v19LDown: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -248 l 23 -248 l 631 -68 l 631 30 l 45 -144 l 45 -16 l 631 157 l 631 255 l 315 161 l 315 517 l 271 517 l 271 148 l 180 121 l 180 517 l 135 517 l 135 108 l 45 81 l 45 517 l 0 517 z', + }, + accSagittalSharp5v13LUp: { + x_min: 0, + x_max: 500, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 89 -109 l 89 -517 l 135 -517 l 135 -109 b 225 -27 170 -102 200 -75 l 225 -517 l 271 -517 l 271 -85 l 360 -120 l 360 -517 l 405 -517 l 405 -135 l 720 -256 l 720 -157 l 271 14 l 271 141 l 720 -30 l 720 68 l 248 248 b 122 0 217 98 176 16 b 95 -3 112 0 104 -3 b 45 68 60 -3 45 20 l 0 68 b 89 -109 0 -39 30 -98 z', + }, + accSagittalFlat5v13LDown: { + x_min: 0, + x_max: 500, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 89 109 b 0 -68 30 98 0 39 l 45 -68 b 95 3 45 -20 60 3 b 122 0 104 3 112 0 b 248 -248 176 -16 217 -98 l 720 -68 l 720 30 l 271 -141 l 271 -14 l 720 157 l 720 256 l 405 135 l 405 517 l 360 517 l 360 120 l 271 85 l 271 517 l 225 517 l 225 27 b 135 109 200 75 170 102 l 135 517 l 89 517 z', + }, + accSagittalDoubleSharp23SDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -203 l 45 -203 b 135 -23 45 -82 76 -23 l 301 -23 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 370 -14 b 449 112 423 10 449 53 l 449 248 l 428 248 b 315 68 402 127 364 68 l 240 68 b 89 157 140 68 89 98 l 45 157 b 68 53 45 115 52 81 b 0 -203 23 23 0 -63 z', + }, + accSagittalDoubleFlat23SUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 68 -53 0 63 23 -23 b 45 -157 52 -81 45 -115 l 89 -157 b 240 -68 89 -98 140 -68 l 315 -68 b 428 -248 364 -68 402 -127 l 449 -248 l 449 -112 b 370 14 449 -53 423 -10 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 301 23 l 135 23 b 45 203 76 23 45 82 z', + }, + accSagittalDoubleSharp49SDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -292 l 45 -292 b 112 -157 45 -203 68 -157 l 256 -157 l 135 -503 l 187 -517 l 337 -82 l 490 -517 l 540 -503 l 366 0 l 396 89 b 449 157 416 102 435 125 l 449 248 l 428 248 b 315 157 413 187 376 157 l 112 157 b 0 -68 39 157 0 82 l 45 -68 b 135 68 45 23 76 68 l 287 68 l 311 0 l 288 -68 l 89 -68 b 0 -292 32 -68 0 -144 z', + }, + accSagittalDoubleFlat49SUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 292 b 89 68 0 144 32 68 l 288 68 l 311 0 l 287 -68 l 135 -68 b 45 68 76 -68 45 -23 l 0 68 b 112 -157 0 -82 39 -157 l 315 -157 b 428 -248 376 -157 413 -187 l 449 -248 l 449 -157 b 396 -89 435 -125 416 -102 l 366 0 l 540 503 l 490 517 l 337 82 l 187 517 l 135 503 l 256 157 l 112 157 b 45 292 68 157 45 203 z', + }, + accSagittalDoubleSharp7v19CDown: { + x_min: 0, + x_max: 375, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -112 l 0 -266 l 307 -7 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 386 59 l 449 112 l 449 248 l 428 248 b 130 68 285 127 186 68 b 45 157 73 68 45 98 l 0 157 b 112 -20 0 53 37 -6 z', + }, + accSagittalDoubleFlat7v19CUp: { + x_min: 0, + x_max: 375, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 112 20 b 0 -157 37 6 0 -53 l 45 -157 b 130 -68 45 -98 73 -68 b 428 -248 186 -68 285 -127 l 449 -248 l 449 -112 l 386 -59 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 307 7 l 0 266 l 0 112 z', + }, + accSagittalDoubleSharp19CDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 68 l 0 -248 l 45 -248 l 45 -68 b 315 109 45 36 135 95 l 354 0 l 180 -503 l 232 -517 l 383 -82 l 534 -517 l 585 -503 l 410 0 l 449 112 l 495 112 l 495 248 l 360 248 b 0 68 120 248 0 187 z m 372 112 l 393 112 l 383 82 z', + }, + accSagittalDoubleFlat19CUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 360 -248 0 -187 120 -248 l 495 -248 l 495 -112 l 449 -112 l 410 0 l 585 503 l 534 517 l 383 82 l 232 517 l 180 503 l 354 0 l 315 -109 b 45 68 135 -95 45 -36 l 45 248 l 0 248 z m 383 -82 l 393 -112 l 372 -112 z', + }, + accSagittalDoubleSharp11v49CDown: { + x_min: 0, + x_max: 406, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 360 112 b 540 -68 480 112 540 53 l 540 -248 l 585 -248 l 585 68 b 405 248 585 187 526 248 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z', + }, + accSagittalDoubleFlat11v49CUp: { + x_min: 0, + x_max: 406, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 405 -248 b 585 -68 526 -248 585 -187 l 585 248 l 540 248 l 540 68 b 360 -112 540 -53 480 -112 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalDoubleSharp143CDown: { + x_min: 0, + x_max: 469, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 45 -203 b 135 -23 45 -84 75 -23 l 203 -23 b 262 4 225 -23 245 -13 l 265 0 l 89 -503 l 141 -517 l 292 -82 l 444 -517 l 495 -503 l 321 0 l 337 49 l 675 -268 l 675 -112 l 292 248 b 180 68 268 127 230 68 l 112 68 b 0 -203 37 68 0 -23 z', + }, + accSagittalDoubleFlat143CUp: { + x_min: 0, + x_max: 469, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 203 b 112 -68 0 23 37 -68 l 180 -68 b 292 -248 230 -68 268 -127 l 675 112 l 675 268 l 337 -49 l 321 0 l 495 503 l 444 517 l 292 82 l 141 517 l 89 503 l 265 0 l 262 -4 b 203 23 245 13 225 23 l 135 23 b 45 203 75 23 45 84 z', + }, + accSagittalDoubleSharp17kDown: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 248 b 95 101 0 170 30 121 l 0 68 l 0 -30 l 364 96 l 399 0 l 390 -23 l 0 -157 l 0 -255 l 353 -135 l 225 -503 l 275 -517 l 428 -82 l 577 -517 l 631 -503 l 455 0 l 507 145 l 540 157 l 540 248 l 517 248 b 167 168 366 194 248 168 b 45 248 85 168 45 194 z m 416 115 l 442 124 l 428 82 z', + }, + accSagittalDoubleFlat17kUp: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 45 -248 b 167 -168 45 -194 85 -168 b 517 -248 248 -168 366 -194 l 540 -248 l 540 -157 l 507 -145 l 455 0 l 631 503 l 577 517 l 428 82 l 275 517 l 225 503 l 353 135 l 0 255 l 0 157 l 390 23 l 399 0 l 364 -96 l 0 30 l 0 -68 l 95 -101 b 0 -248 30 -121 0 -170 z m 428 -82 l 442 -124 l 416 -115 z', + }, + accSagittalDoubleSharp19sDown: { + x_min: 0, + x_max: 438, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 -248 l 45 -248 l 45 -68 b 271 112 45 53 120 112 l 310 0 l 135 -503 l 186 -517 l 337 -82 l 488 -517 l 540 -503 l 366 0 l 367 4 b 428 -23 386 -13 405 -23 l 495 -23 b 585 -203 554 -23 585 -84 l 631 -203 b 517 68 631 -23 593 68 l 449 68 b 337 248 400 68 363 127 l 225 248 b 0 68 75 248 0 187 z', + }, + accSagittalDoubleFlat19sUp: { + x_min: 0, + x_max: 438, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 0 -68 b 225 -248 0 -187 75 -248 l 337 -248 b 449 -68 363 -127 400 -68 l 517 -68 b 631 203 593 -68 631 23 l 585 203 b 495 23 585 84 554 23 l 428 23 b 367 -4 405 23 386 13 l 366 0 l 540 503 l 488 517 l 337 82 l 186 517 l 135 503 l 310 0 l 271 -112 b 45 68 120 -112 45 -53 l 45 248 l 0 248 z', + }, + accSagittalShaftUp: { + x_min: 0, + x_max: 31, + y_min: -359, + y_max: 172, + ha: 531, + o: 'm 0 112 l 0 -517 l 45 -517 l 45 112 l 23 248 z', + }, + accSagittalShaftDown: { + x_min: 0, + x_max: 31, + y_min: -172, + y_max: 359, + ha: 531, + o: 'm 23 -248 l 45 -112 l 45 517 l 0 517 l 0 -112 z', + }, + accSagittalAcute: { + x_min: 0, + x_max: 125, + y_min: -62, + y_max: 125, + ha: 187, + o: 'm 0 0 l 0 -89 l 180 89 l 180 180 z', + }, + accSagittalGrave: { + x_min: 0, + x_max: 125, + y_min: -125, + y_max: 62, + ha: 187, + o: 'm 180 -180 l 180 -89 l 0 89 l 0 0 z', + }, + accSagittal1MinaUp: { + x_min: -7, + x_max: 124, + y_min: 16, + y_max: 106.31676725154982, + ha: 90.31676725154982, + o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 134 150 179 112 163 135 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z', + }, + accSagittal1MinaDown: { + x_min: -7, + x_max: 124, + y_min: -106.31676725154983, + y_max: -16, + ha: 90.31676725154983, + o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 179 -23 163 -135 179 -112 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z', + }, + accSagittal2MinasUp: { + x_min: -7, + x_max: 218, + y_min: 16, + y_max: 106.31676725154982, + ha: 90.31676725154982, + o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 269 150 314 112 298 135 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z', + }, + accSagittal2MinasDown: { + x_min: -7, + x_max: 218, + y_min: -106.31676725154983, + y_max: -16, + ha: 90.31676725154983, + o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z', + }, + accSagittal1TinaUp: { + x_min: 0, + x_max: 93, + y_min: 16, + y_max: 107, + ha: 91, + o: 'm 134 154 l 91 154 b 81 76 91 101 91 86 b 0 68 73 69 48 68 l 0 23 b 134 154 122 23 134 36 z', + }, + accSagittal1TinaDown: { + x_min: 0, + x_max: 93, + y_min: -107, + y_max: -16, + ha: 91, + o: 'm 134 -154 b 0 -23 134 -36 122 -23 l 0 -68 b 81 -76 48 -68 73 -69 b 91 -154 91 -86 91 -101 z', + }, + accSagittal2TinasUp: { + x_min: 0, + x_max: 94, + y_min: 16, + y_max: 107, + ha: 91, + o: 'm 135 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z', + }, + accSagittal2TinasDown: { + x_min: 0, + x_max: 94, + y_min: -107, + y_max: -16, + ha: 91, + o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 z', + }, + accSagittal3TinasUp: { + x_min: -7, + x_max: 124, + y_min: 16, + y_max: 106.31676725154982, + ha: 90.31676725154982, + o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 134 150 179 112 163 135 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z', + }, + accSagittal3TinasDown: { + x_min: -7, + x_max: 124, + y_min: -106.31676725154983, + y_max: -16, + ha: 90.31676725154983, + o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 179 -23 163 -135 179 -112 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z', + }, + accSagittal4TinasUp: { + x_min: 0, + x_max: 187, + y_min: 16, + y_max: 106.69999999999997, + ha: 90.69999999999997, + o: 'm 0 68 l 0 23 b 143 45 105 23 124 26 b 203 107 153 55 183 107 b 226 23 216 107 226 86 l 269 23 b 225 150 269 112 253 135 b 160 132 207 158 181 153 b 115 81 138 112 124 88 b 0 68 104 71 94 68 z', + }, + accSagittal4TinasDown: { + x_min: 0, + x_max: 187, + y_min: -106.69999999999999, + y_max: -16, + ha: 90.69999999999999, + o: 'm 0 -68 b 115 -81 94 -68 104 -71 b 160 -132 124 -88 138 -112 b 225 -150 181 -153 207 -158 b 269 -23 253 -135 269 -112 l 226 -23 b 203 -107 226 -86 216 -107 b 143 -45 183 -107 153 -55 b 0 -23 124 -26 105 -23 z', + }, + accSagittal5TinasUp: { + x_min: 0, + x_max: 218, + y_min: 16, + y_max: 107, + ha: 91, + o: 'm 135 23 b 187 45 156 23 168 26 b 249 107 197 55 228 107 b 271 23 262 107 271 86 l 314 23 b 269 150 314 112 298 135 b 204 132 252 158 226 153 b 160 81 183 112 168 88 b 135 68 148 71 147 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z', + }, + accSagittal5TinasDown: { + x_min: 0, + x_max: 218, + y_min: -107, + y_max: -16, + ha: 91, + o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 b 160 -81 147 -68 148 -71 b 204 -132 168 -88 183 -112 b 269 -150 226 -153 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 249 -107 271 -86 262 -107 b 187 -45 228 -107 197 -55 b 135 -23 168 -26 156 -23 z', + }, + accSagittal6TinasUp: { + x_min: -7, + x_max: 218, + y_min: 16, + y_max: 106.31676725154982, + ha: 90.31676725154982, + o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 269 150 314 112 298 135 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z', + }, + accSagittal6TinasDown: { + x_min: -7, + x_max: 218, + y_min: -106.31676725154983, + y_max: -16, + ha: 90.31676725154983, + o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 314 -23 298 -135 314 -112 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z', + }, + accSagittal7TinasUp: { + x_min: 0, + x_max: 281, + y_min: 16, + y_max: 106.69999999999997, + ha: 90.69999999999997, + o: 'm 0 68 l 0 23 b 143 45 105 23 124 26 b 203 107 153 55 183 107 b 226 23 216 107 226 86 l 269 23 b 298 65 269 23 291 55 b 343 107 314 86 331 107 b 361 23 354 107 363 86 l 405 23 b 360 150 405 112 389 135 b 294 130 343 158 311 150 b 264 92 281 115 272 104 b 225 150 258 127 245 140 b 160 132 207 158 181 153 b 115 81 138 112 124 88 b 0 68 104 71 94 68 z', + }, + accSagittal7TinasDown: { + x_min: 0, + x_max: 281, + y_min: -106.69999999999999, + y_max: -16, + ha: 90.69999999999999, + o: 'm 0 -68 b 115 -81 94 -68 104 -71 b 160 -132 124 -88 138 -112 b 225 -150 181 -153 207 -158 b 264 -92 245 -140 258 -127 b 294 -130 272 -104 281 -115 b 360 -150 311 -150 343 -158 b 405 -23 389 -135 405 -112 l 361 -23 b 343 -107 363 -86 354 -107 b 298 -65 331 -107 314 -86 b 269 -23 291 -55 269 -23 l 226 -23 b 203 -107 226 -86 216 -107 b 143 -45 183 -107 153 -55 b 0 -23 124 -26 105 -23 z', + }, + accSagittal8TinasUp: { + x_min: 0, + x_max: 312, + y_min: 16, + y_max: 107, + ha: 91, + o: 'm 135 23 b 187 45 156 23 168 26 b 249 107 197 55 228 107 b 271 23 262 107 271 86 l 314 23 b 343 65 314 23 336 55 b 387 107 359 86 376 107 b 406 23 399 107 408 86 l 449 23 b 405 150 449 112 433 135 b 338 130 387 158 356 150 b 308 92 325 115 317 104 b 269 150 302 127 289 140 b 204 132 252 158 226 153 b 160 81 183 112 168 88 b 135 68 148 71 147 68 b 89 154 94 68 89 124 l 46 154 b 36 92 45 131 42 105 b 0 68 32 82 23 68 l 0 23 b 68 63 29 23 53 40 b 135 23 84 39 104 23 z', + }, + accSagittal8TinasDown: { + x_min: 0, + x_max: 312, + y_min: -107, + y_max: -16, + ha: 91, + o: 'm 135 -23 b 68 -63 104 -23 84 -39 b 0 -23 53 -40 29 -23 l 0 -68 b 36 -92 23 -68 32 -82 b 46 -154 42 -105 45 -131 l 89 -154 b 135 -68 89 -124 94 -68 b 160 -81 147 -68 148 -71 b 204 -132 168 -88 183 -112 b 269 -150 226 -153 252 -158 b 308 -92 289 -140 302 -127 b 338 -130 317 -104 325 -115 b 405 -150 356 -150 387 -158 b 449 -23 433 -135 449 -112 l 406 -23 b 387 -107 408 -86 399 -107 b 343 -65 376 -107 359 -86 b 314 -23 336 -55 314 -23 l 271 -23 b 249 -107 271 -86 262 -107 b 187 -45 228 -107 197 -55 b 135 -23 168 -26 156 -23 z', + }, + accSagittal9TinasUp: { + x_min: -7, + x_max: 312, + y_min: 16, + y_max: 106.31676725154982, + ha: 90.31676725154982, + o: 'm -10 23 l 43 23 b 72 65 43 23 65 55 b 117 107 88 86 105 107 b 135 23 128 107 137 86 l 179 23 b 207 65 179 23 200 55 b 252 107 223 86 240 107 b 271 23 264 107 272 86 l 314 23 b 343 65 314 23 336 55 b 387 107 359 86 376 107 b 406 23 399 107 408 86 l 449 23 b 405 150 449 112 433 135 b 338 130 387 158 356 150 b 308 92 325 115 317 104 b 269 150 302 127 289 140 b 203 130 252 158 220 150 b 173 92 190 115 181 104 b 134 150 167 127 154 140 b 68 130 117 158 85 150 b -10 23 43 101 13 58 z', + }, + accSagittal9TinasDown: { + x_min: -7, + x_max: 312, + y_min: -106.31676725154983, + y_max: -16, + ha: 90.31676725154983, + o: 'm -10 -23 b 68 -130 13 -58 43 -101 b 134 -150 85 -150 117 -158 b 173 -92 154 -140 167 -127 b 203 -130 181 -104 190 -115 b 269 -150 220 -150 252 -158 b 308 -92 289 -140 302 -127 b 338 -130 317 -104 325 -115 b 405 -150 356 -150 387 -158 b 449 -23 433 -135 449 -112 l 406 -23 b 387 -107 408 -86 399 -107 b 343 -65 376 -107 359 -86 b 314 -23 336 -55 314 -23 l 271 -23 b 252 -107 272 -86 264 -107 b 207 -65 240 -107 223 -86 b 179 -23 200 -55 179 -23 l 135 -23 b 117 -107 137 -86 128 -107 b 72 -65 105 -107 88 -86 b 43 -23 65 -55 43 -23 z', + }, + accSagittalFractionalTinaUp: { + x_min: -3, + x_max: 35, + y_min: 73, + y_max: 111, + ha: 38, + o: 'm -4 132 b 23 105 -4 118 9 105 b 50 132 37 105 50 118 b 23 160 50 147 37 160 b -4 132 9 160 -4 147 z', + }, + accSagittalFractionalTinaDown: { + x_min: -3, + x_max: 35, + y_min: -111, + y_max: -73, + ha: 38, + o: 'm -4 -132 b 23 -160 -4 -147 9 -160 b 50 -132 37 -160 50 -147 b 23 -105 50 -118 37 -105 b -4 -132 9 -105 -4 -118 z', + }, + accidentalNarrowReversedFlat: { + x_min: 0, + x_max: 164, + y_min: -194, + y_max: 421, + ha: 615, + o: 'm 236 -279 l 236 606 l 192 606 l 192 179 b 85 243 150 222 114 243 b 0 84 23 243 0 134 b 112 -158 0 3 37 -78 z m 192 112 l 192 -163 l 135 -98 b 82 40 101 -50 82 -3 b 138 144 82 73 96 144 b 192 112 153 144 170 132 z', + }, + accidentalNarrowReversedFlatAndFlat: { + x_min: 0, + x_max: 414, + y_min: -194, + y_max: 421, + ha: 615, + o: 'm 281 606 l 281 -268 l 438 -158 b 596 84 547 -82 596 3 b 475 243 596 154 556 243 b 325 179 435 243 384 222 l 325 606 z m 235 -279 l 235 606 l 190 606 l 190 179 b 85 243 148 222 114 243 b 12 158 52 243 27 215 b 0 84 3 134 0 108 b 112 -158 0 3 37 -78 z m 325 111 b 410 144 359 132 386 144 b 498 36 462 144 498 84 b 413 -107 498 -9 469 -58 l 325 -173 z m 192 112 l 192 -163 l 135 -98 b 81 40 99 -50 81 -3 b 91 94 81 59 84 76 b 137 144 102 127 118 144 b 192 112 153 144 170 132 z', + }, + accidentalWilsonPlus: { + x_min: 0, + x_max: 281, + y_min: -203, + y_max: 203, + ha: 406, + o: 'm 405 268 l 225 98 l 225 292 l 180 292 l 180 56 l 0 -112 l 0 -268 l 180 -98 l 180 -292 l 225 -292 l 225 -56 l 405 112 z', + }, + accidentalWilsonMinus: { + x_min: 0, + x_max: 281, + y_min: -186, + y_max: 186, + ha: 372, + o: 'm 0 112 l 405 -268 l 405 -112 l 0 268 z', + }, + }, + fontFamily: 'Bravura', + resolution: 1000, + generatedOn: '2022-06-26T17:36:54.186Z', +}; diff --git a/build/esm/src/fonts/bravura_metrics.js b/build/esm/src/fonts/bravura_metrics.js new file mode 100644 index 0000000000..718e6f99ec --- /dev/null +++ b/build/esm/src/fonts/bravura_metrics.js @@ -0,0 +1,513 @@ +export const BravuraMetrics = { + name: 'Bravura', + smufl: true, + stave: { + padding: 12, + endPaddingMax: 10, + endPaddingMin: 5, + unalignedNotePadding: 10, + }, + accidental: { + noteheadAccidentalPadding: 1, + leftPadding: 2, + accidentalSpacing: 3, + }, + clef: { + default: { + point: 32, + width: 26, + }, + small: { + point: 26, + width: 20, + }, + annotations: { + '8va': { + smuflCode: 'timeSig8', + default: { + point: 18, + treble: { + line: -1.4, + shiftX: 12, + }, + }, + small: { + point: 16, + treble: { + line: -0.2, + shiftX: 8, + }, + }, + }, + '8vb': { + smuflCode: 'timeSig8', + default: { + point: 18, + treble: { + line: 6, + shiftX: 10, + }, + bass: { + line: 3.5, + shiftX: 1, + }, + }, + small: { + point: 16, + treble: { + line: 5.3, + shiftX: 6, + }, + bass: { + line: 3.1, + shiftX: 0.5, + }, + }, + }, + }, + lineCount: { + '8': { point: 55, shiftY: 14 }, + '7': { point: 47, shiftY: 8 }, + '6': { point: 32, shiftY: 1 }, + '5': { point: 30, shiftY: -6 }, + '4': { point: 23, shiftY: -12 }, + }, + }, + parenthesis: { + default: { + point: 39, + width: 7, + }, + gracenote: { + point: (39 * 3) / 5, + width: 3, + }, + }, + pedalMarking: { + up: { + point: 40, + }, + down: { + point: 34, + }, + }, + digits: { + shiftLine: -1, + point: 34, + tupletPoint: 22, + shiftY: -6, + }, + articulation: { + articStaccatissimoAbove: { + padding: 2, + }, + articStaccatissimoBelow: { + padding: 2, + }, + }, + tremolo: { + default: { + point: 25, + spacing: 5, + offsetYStemUp: -5, + offsetYStemDown: 5, + offsetXStemUp: 11, + offsetXStemDown: 1, + }, + grace: { + point: 18, + spacing: 4, + offsetYStemUp: -5, + offsetYStemDown: 5, + offsetXStemUp: 7, + offsetXStemDown: 1, + }, + }, + staveRepetition: { + symbolText: { + offsetX: 12, + offsetY: 25, + spacing: 5, + }, + coda: { + offsetY: 25, + }, + segno: { + offsetY: 10, + }, + }, + stem: { + heightAdjustmentForFlag: -3, + noteHead: { + noteheadTriangleUpHalf: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpBlack: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpWhole: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadXHalf: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXBlack: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXWhole: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadHalf: { + offsetYBaseStemUp: -2.55, + offsetYBaseStemDown: 2.65, + }, + noteheadBlack: { + offsetYBaseStemUp: -2, + offsetYBaseStemDown: 2, + }, + noteheadSquareWhite: { + offsetYBaseStemDown: -5, + offsetYBaseStemUp: 5, + }, + }, + }, + glyphs: { + coda: { + point: 20, + shiftX: -7, + shiftY: 8, + }, + segno: { + shiftX: -7, + }, + flag: { + shiftX: -0.75, + staveTempo: { + shiftX: -1, + }, + }, + clef: { + gClef: { + default: { scale: 1.1, shiftY: 1 }, + small: { shiftY: 1.5 }, + }, + fClef: { + default: { shiftY: -0.5 }, + }, + }, + ornament: { + ornamentTurn: { + scale: 1.2, + }, + ornamentTurnSlash: { + scale: 1.2, + }, + }, + stringNumber: { + verticalPadding: 8, + stemPadding: 2, + leftPadding: 5, + rightPadding: 6, + }, + stroke: { + arrowheadBlackDown: { + straight: { + shiftX: -4.5, + }, + wiggly: { + shiftX: -1, + shiftY: 1, + }, + }, + arrowheadBlackUp: { + straight: { + shiftX: -0.85, + }, + wiggly: { + shiftX: -1, + shiftY: 1, + }, + }, + }, + textNote: { + point: 34, + breathMarkTick: { + point: 36, + shiftY: 9, + }, + breathMarkComma: { + point: 36, + }, + segno: { + point: 30, + shiftX: -7, + shiftY: 8, + }, + coda: { + point: 20, + shiftX: -7, + shiftY: 8, + }, + ornamentTrill: { + shiftX: -8, + shiftY: 8, + }, + ornamentTurn: { + point: 42, + }, + ornamentTurnSlash: { + point: 42, + }, + ornamentMordent: { + shiftX: -8, + }, + ornamentShortTrill: { + shiftX: -8, + }, + }, + noteHead: { + minPadding: 2, + standard: { + restQuarterStemUp: { + point: 35, + }, + restQuarterStemDown: { + point: 35, + }, + }, + custom: { + noteheadCircleXStemUp: { + shiftX: 1.5, + }, + noteheadCircleXStemDown: { + shiftX: 0.25, + }, + noteheadDiamondHalfStemUp: { + shiftX: 1.5, + }, + noteheadDiamondBlackStemUp: { + shiftX: 1.5, + }, + noteheadDiamondWholeStemUp: { + shiftX: 1, + }, + noteheadXHalfStemUp: { + shiftX: -2, + }, + noteheadXHalfStemDown: { + shiftX: 1, + }, + noteheadXWholeStemUp: { + shiftX: -4, + }, + noteheadXWholeStemDown: { + shiftX: 1, + }, + noteheadXDoubleWholeStemUp: { + shiftX: -4, + }, + noteheadXDoubleWholeStemDown: { + shiftX: 1, + }, + noteheadSquareWhiteStemDown: { + shiftX: 0.25, + }, + noteheadSquareWhiteStemUp: { + shiftX: -0.75, + }, + noteheadSquareBlackStemUp: { + shiftX: -0.75, + }, + noteheadTriangleUpWholeStemUp: { + shiftX: -0.75, + }, + }, + }, + chordSymbol: { + global: { + superscriptOffset: -400, + subscriptOffset: 300, + kerningOffset: -250, + lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'], + upperKerningText: ['A', 'L'], + spacing: 100, + superSubRatio: 0.66, + }, + csymDiminished: { + scale: 0.8, + leftSideBearing: -32, + advanceWidth: 506, + yOffset: 0, + }, + csymHalfDiminished: { + scale: 0.8, + leftSideBearing: -32, + advanceWidth: 506, + yOffset: 0, + }, + csymAugmented: { + scale: 1, + leftSideBearing: 0, + advanceWidth: 530, + yOffset: 0, + }, + csymParensLeftTall: { + scale: 0.8, + leftSideBearing: -20, + advanceWidth: 184, + yOffset: 250, + }, + csymParensRightTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 189, + yOffset: 250, + }, + csymBracketLeftTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 328, + yOffset: 0, + }, + csymBracketRightTall: { + scale: 0.8, + leftSideBearing: 1, + advanceWidth: 600, + yOffset: 0, + }, + csymParensLeftVeryTall: { + scale: 0.9, + leftSideBearing: 50, + advanceWidth: 121, + yOffset: 350, + }, + csymParensRightVeryTall: { + scale: 0.9, + leftSideBearing: 0, + advanceWidth: 111, + yOffset: 350, + }, + csymDiagonalArrangementSlash: { + scale: 0.6, + leftSideBearing: -1, + advanceWidth: 990, + yOffset: 0, + }, + csymMinor: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 482, + yOffset: 0, + }, + csymMajorSeventh: { + scale: 0.9, + leftSideBearing: 200, + yOffset: 0, + advanceWidth: 600, + }, + accidentalSharp: { + scale: 0.75, + leftSideBearing: 20, + advanceWidth: 250, + yOffset: -302, + }, + accidentalFlat: { + scale: 0.9, + leftSideBearing: -20, + advanceWidth: 226, + yOffset: -184, + }, + }, + jazzOrnaments: { + brassScoop: { + scale: 1.0, + xOffset: -12, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 20, + }, + brassDoitMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 22, + }, + brassFallLipShort: { + scale: 1.0, + xOffset: 16, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 15, + }, + brassLiftMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 5, + stemUpYOffset: 0, + reportedWidth: 5, + }, + brassFallRoughMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 28, + stemUpYOffset: 0, + reportedWidth: 5, + }, + brassBend: { + scale: 1.0, + xOffset: 2, + yOffset: -8, + stemUpYOffset: 25, + reportedWidth: 5, + }, + brassMuteClosed: { + scale: 1.0, + xOffset: 3, + yOffset: -8, + stemUpYOffset: 25, + reportedWidth: 5, + }, + brassMuteOpen: { + scale: 1.0, + xOffset: 3, + yOffset: -7, + stemUpYOffset: 25, + reportedWidth: 5, + }, + brassFlip: { + scale: 1.0, + xOffset: 10, + yOffset: 0, + stemUpYOffset: 7, + reportedWidth: 10, + }, + brassJazzTurn: { + scale: 1.0, + xOffset: 0, + yOffset: 0, + stemUpYOffset: 8, + reportedWidth: 31, + }, + brassSmear: { + scale: 1.0, + xOffset: 10, + yOffset: 0, + stemUpYOffset: 8, + reportedWidth: 5, + }, + }, + tuplet: { + noteHeadOffset: 20, + stemOffset: 10, + bottomLine: 4, + topModifierOffset: 15, + }, + }, +}; diff --git a/build/esm/src/fonts/custom_glyphs.js b/build/esm/src/fonts/custom_glyphs.js new file mode 100644 index 0000000000..9ce490bf82 --- /dev/null +++ b/build/esm/src/fonts/custom_glyphs.js @@ -0,0 +1,78 @@ +export const CustomFont = { + resolution: 1000, + fontFamily: 'VexFlowCustom', + glyphs: { + noteheadSquareWhite: { + x_min: 0, + x_max: 430.75, + ha: 386, + o: 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 l 50 150 l 380 150 l 380 -150 l 50 -150 l 50 150 ', + }, + noteheadSquareBlack: { + x_min: 0, + x_max: 430.75, + ha: 386, + o: 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 ', + }, + accidentalBuyukMucennebFlat: { + x_min: -171.5, + x_max: 251.8125, + ha: 257, + o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ', + }, + accidentalBakiyeFlat: { + x_min: -176.9375, + x_max: 251.8125, + ha: 257, + o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ', + }, + accidentalKucukMucennebSharp: { + x_min: -1.359375, + x_max: 255.890625, + ha: 261, + o: 'm 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 ', + }, + accidentalKoron: { + x_min: -20, + x_max: 320, + ha: 257, + o: 'm -8 200 b -8 210 8 200 16 200 l 20 148 -199 l 23 -615 b 0 -629 9 -629 6 -629 l -21 -612 l -21 -201 l -21 216 l -20 200 m 16 200 l 310 0 l 240 0 l 16 140 l 16 -120 l 240 0 l 310 0 l 16 -200 ', + }, + accidentalSori: { + x_min: -10.890625, + x_max: 299.4375, + ha: 294, + o: 'm 44 174 b 51 174 47 174 49 174 b 68 173 55 174 61 174 l 287 112 l 551 40 b 615 20 617 22 609 23 b 626 0 622 16 626 8 b 615 -22 626 -9 622 -18 b 613 -23 613 -23 613 -23 b 613 -23 613 -23 613 -23 b 287 -113 613 -24 597 -29 l 68 -174 b 53 -176 61 -176 57 -176 b 39 -172 47 -176 43 -174 b 27 -151 31 -167 27 -159 b 39 -129 27 -141 31 -133 b 230 -74 43 -124 20 -131 l 370 -36 l 468 -9 b 498 0 484 -4 498 -1 b 468 8 498 0 484 2 l 370 34 l 230 73 b 40 126 28 129 43 124 b 27 149 31 131 27 140 b 44 174 27 161 34 170 m 205 110 l 205 300 b 205 330 245 330 245 300 l 245 300 l 245 -300 b 245 -330 205 -330 205 -300 l 205 -300 l 205 110 l 345 90 m 345 90 l 345 330 b 345 360 385 360 385 330 l 385 330 l 385 -270 b 385 -300 345 -300 345 -270 l 345 -270 l 345 90 ', + }, + vexAccidentalMicrotonal2: { + x_min: -1.359375, + x_max: 386.5625, + ha: 394, + o: 'm 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 ', + }, + vexAccidentalMicrotonal3: { + x_min: 0, + x_max: 430.75, + ha: 360, + o: 'm -146 537 b -138 538 -143 538 -141 538 b -118 525 -129 538 -121 533 b -117 390 -117 522 -117 521 b -115 259 -117 268 -117 259 b -115 259 -115 259 -115 259 b -59 272 -104 263 -62 272 b -39 259 -50 272 -42 267 b -37 209 -38 257 -37 233 b -39 159 -37 185 -38 162 b -85 138 -43 149 -44 149 l -117 131 l -117 21 b -115 -88 -117 -80 -117 -88 b -115 -88 -115 -88 -115 -88 b -59 -75 -104 -84 -62 -75 b -44 -81 -52 -75 -48 -77 b -38 -124 -38 -87 -38 -85 b -38 -138 -38 -124 -38 -138 b -38 -152 -38 -138 -38 -152 b -44 -195 -38 -191 -38 -190 b -85 -209 -48 -200 -48 -200 l -117 -217 l -117 -349 b -118 -486 -117 -481 -117 -482 b -138 -499 -121 -494 -129 -499 b -153 -493 -143 -499 -149 -497 b -159 -415 -158 -487 -159 -496 b -159 -355 -159 -398 -159 -379 b -159 -227 -159 -284 -159 -227 b -205 -238 -159 -227 -180 -232 b -250 -249 -230 -244 -250 -249 b -251 -386 -251 -249 -251 -311 b -252 -525 -251 -521 -251 -522 b -272 -538 -255 -534 -264 -538 b -287 -532 -277 -538 -283 -536 b -293 -452 -292 -527 -293 -536 b -293 -391 -293 -436 -293 -415 b -294 -260 -293 -269 -293 -260 b -294 -260 -294 -260 -294 -260 b -348 -272 -306 -264 -345 -272 b -368 -259 -357 -272 -365 -267 b -369 -209 -369 -257 -369 -233 b -368 -159 -369 -185 -369 -162 b -323 -139 -364 -149 -362 -148 l -293 -131 l -293 -22 b -294 87 -293 80 -293 87 b -294 87 -294 87 -294 87 b -348 75 -306 84 -345 75 b -368 88 -357 75 -365 80 b -369 138 -369 91 -369 114 b -368 188 -369 162 -369 186 b -323 209 -364 198 -362 199 l -293 216 l -293 349 b -292 486 -293 481 -293 482 b -272 499 -288 494 -280 499 b -257 493 -266 499 -261 497 b -251 414 -251 487 -251 496 b -251 354 -251 398 -251 378 b -251 226 -251 284 -251 226 b -205 238 -250 226 -230 231 b -159 249 -180 244 -159 249 b -159 385 -159 249 -159 310 b -157 525 -159 521 -159 522 b -146 537 -156 530 -151 535 z m -159 11 b -159 120 -159 98 -159 120 l -159 120 b -175 116 -160 120 -167 119 b -221 105 -184 114 -204 109 l -251 98 l -251 -12 b -251 -121 -251 -72 -251 -121 b -205 -110 -250 -121 -230 -116 b -159 -99 -180 -104 -159 -99 b -159 11 -159 -99 -159 -49 z m 89 517 b 97 519 92 518 94 519 b 117 505 106 519 114 513 b 119 376 119 502 119 501 l 119 249 l 145 258 b 176 267 169 266 172 267 b 177 267 176 267 177 267 b 196 255 186 267 192 263 l 197 252 l 197 205 b 197 181 197 195 197 187 b 193 149 197 153 197 153 b 152 131 190 144 187 143 l 119 120 l 119 10 b 119 -100 119 -62 119 -100 b 145 -91 120 -100 131 -96 b 173 -82 159 -86 171 -82 b 176 -81 174 -81 175 -81 b 196 -94 185 -81 193 -87 b 198 -151 197 -97 198 -125 b 197 -194 198 -172 197 -192 b 153 -218 193 -203 192 -204 l 119 -230 l 119 -367 l 118 -504 l 117 -507 b 97 -519 113 -514 105 -519 b 82 -512 92 -519 87 -517 b 76 -434 77 -507 76 -516 b 76 -374 76 -418 76 -398 b 76 -245 76 -303 76 -245 b 52 -254 76 -245 65 -249 b 19 -263 34 -260 25 -263 b 6 -257 13 -263 10 -261 b 0 -214 0 -251 0 -253 b 0 -200 0 -210 0 -205 b 0 -188 0 -196 0 -192 b 6 -143 0 -147 0 -149 b 46 -126 10 -139 10 -139 l 76 -115 l 76 -5 b 76 106 76 56 76 106 b 51 98 76 106 64 102 b 18 89 34 92 25 89 b 6 95 13 89 10 91 b 0 139 0 101 0 99 b 0 153 0 143 0 148 b 0 179 0 163 0 172 b 44 225 0 215 3 211 l 76 236 l 76 369 b 78 505 76 501 76 502 b 89 517 80 510 85 515 z ', + }, + vexAccidentalMicrotonal4: { + x_min: 0, + x_max: 430.75, + ha: 360, + o: 'm 283 633 b 291 634 286 634 289 634 b 311 621 300 634 308 629 b 313 505 313 618 313 617 b 313 393 313 443 313 393 b 378 425 313 393 343 407 l 443 458 l 448 458 b 449 458 449 458 449 458 b 471 437 462 458 471 448 b 469 429 471 434 470 432 b 387 382 466 421 469 423 l 313 344 l 313 247 l 313 150 l 315 152 b 433 201 353 184 394 201 b 479 193 448 201 464 198 b 549 86 524 177 549 135 b 526 1 549 59 541 29 b 395 -143 504 -39 475 -71 b 316 -214 351 -182 341 -191 b 292 -229 302 -228 300 -229 b 272 -216 283 -229 275 -224 b 271 55 271 -212 271 -212 b 270 323 271 203 270 323 b 205 291 270 323 241 308 l 140 258 l 135 258 b 134 258 135 258 134 258 b 112 279 121 258 112 267 b 114 287 112 281 113 284 b 196 334 117 295 114 293 l 271 371 l 271 495 b 272 621 271 617 271 618 b 283 633 274 626 279 631 z m 404 133 b 391 134 400 134 395 134 b 384 134 388 134 386 134 b 318 88 358 130 335 114 l 313 81 l 313 -37 l 313 -156 l 316 -152 b 439 83 391 -71 439 22 l 439 84 b 404 133 439 115 430 128 z m -8 633 l -8 633 b 0 634 -6 634 -3 634 b 20 621 8 634 17 629 b 21 384 21 618 21 617 l 21 150 l 24 152 b 141 201 62 184 102 201 b 187 193 157 201 172 198 b 257 86 232 177 257 135 b 234 1 257 59 250 29 b 103 -143 212 -39 183 -71 b 24 -214 60 -182 49 -191 b 0 -229 10 -228 8 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 203 l -21 618 l -20 621 b -8 633 -18 626 -13 631 z m 113 133 l 113 133 b 99 134 109 134 103 134 b 93 134 97 134 94 134 b 26 88 66 130 43 114 l 21 81 l 21 -37 l 21 -156 l 25 -152 b 148 83 99 -71 148 22 l 148 84 b 113 133 148 115 138 128 z ', + }, + vexNoteHeadRectBlack: { + x_min: 0, + x_max: 430.75, + ha: 360, + o: 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 ', + }, + vexNoteHeadRectWhite: { + x_min: 0, + x_max: 430.75, + ha: 360, + o: 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 l 50 100 l 380 100 l 380 -100 l 50 -100 l 50 100', + }, + }, +}; diff --git a/build/esm/src/fonts/custom_metrics.js b/build/esm/src/fonts/custom_metrics.js new file mode 100644 index 0000000000..2aa6b37f4a --- /dev/null +++ b/build/esm/src/fonts/custom_metrics.js @@ -0,0 +1,5 @@ +export const CustomMetrics = { + name: 'VexFlowCustom', + smufl: false, + glyphs: {}, +}; diff --git a/build/esm/src/fonts/gonville_glyphs.js b/build/esm/src/fonts/gonville_glyphs.js new file mode 100644 index 0000000000..6ebc1f3f50 --- /dev/null +++ b/build/esm/src/fonts/gonville_glyphs.js @@ -0,0 +1,870 @@ +export const GonvilleFont = { + glyphs: { + bracketTop: { + x_min: 0, + x_max: 559.421875, + ha: 571, + o: 'm 544 204 b 548 204 545 204 547 204 b 559 194 555 204 559 199 b 559 190 559 192 559 191 b 530 156 559 188 556 184 b 462 86 510 134 481 104 b 453 76 458 81 454 77 l 446 70 l 441 65 b 434 59 439 63 436 61 l 427 54 b 409 37 426 51 416 44 b 392 23 398 29 394 26 b 387 19 389 22 387 20 b 379 13 386 19 383 16 l 371 8 l 367 5 l 359 -1 l 337 -16 b 285 -48 319 -29 298 -41 l 279 -52 b 186 -95 255 -66 210 -87 l 175 -99 b 23 -129 127 -117 68 -129 b 17 -129 20 -129 19 -129 b 1 -123 2 -129 2 -129 b 0 -49 0 -122 0 -83 b 0 4 0 -22 0 1 b 27 11 2 9 4 9 b 185 31 78 12 145 20 b 198 34 186 31 193 33 b 314 73 234 44 277 58 b 349 88 328 79 340 84 b 353 90 352 90 353 90 b 363 94 353 90 357 93 b 371 98 367 97 371 98 b 428 129 372 98 413 120 b 461 148 441 136 454 144 b 468 151 464 149 466 151 b 472 154 469 152 470 154 b 481 161 473 155 477 158 b 525 190 490 166 518 186 l 534 197 b 540 201 536 198 539 199 b 544 204 541 202 544 204 ', + }, + bracketBottom: { + x_min: 0, + x_max: 559.421875, + ha: 571, + o: 'm 5 127 b 14 127 6 127 9 127 b 51 126 25 127 43 127 b 175 98 93 122 138 112 l 186 94 b 279 51 210 86 255 65 b 285 47 280 51 283 48 b 319 27 291 44 311 31 l 326 22 b 359 0 332 19 352 4 l 367 -6 b 371 -9 368 -6 370 -8 l 379 -15 b 387 -22 383 -18 386 -20 l 398 -30 l 411 -40 l 417 -47 l 427 -55 l 434 -61 b 441 -66 436 -62 439 -65 l 446 -72 l 453 -77 l 462 -87 b 558 -188 490 -113 549 -176 b 559 -195 559 -191 559 -194 b 548 -205 559 -201 555 -205 b 541 -204 547 -205 544 -205 b 534 -198 539 -201 536 -199 l 525 -191 b 481 -162 518 -187 490 -167 b 472 -155 477 -159 472 -156 b 468 -152 470 -155 469 -154 b 461 -149 466 -152 464 -151 b 428 -130 454 -145 441 -137 b 371 -99 413 -122 372 -99 b 363 -95 371 -99 367 -98 b 353 -91 357 -94 353 -91 b 348 -90 353 -91 352 -91 b 332 -81 343 -87 341 -86 b 27 -12 230 -37 127 -13 b 0 -5 4 -11 2 -11 b 0 58 0 -2 0 27 b 0 122 0 88 0 120 b 5 127 1 124 4 126 ', + }, + barlineTick: { + x_min: -80.3125, + x_max: 78.9375, + ha: 81, + o: 'm 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 ', + }, + breathMarkTick: { + x_min: -80.3125, + x_max: 78.9375, + ha: 81, + o: 'm 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 ', + }, + segno: { + x_min: -330.75, + x_max: 329.390625, + ha: 336, + o: 'm -133 483 b -117 484 -127 484 -122 484 b 31 373 -51 484 9 440 b 35 348 34 365 35 356 b -25 285 35 313 10 285 b -87 331 -55 285 -76 302 b -167 402 -100 376 -133 402 b -191 398 -175 402 -183 401 b -227 341 -215 388 -227 369 b -225 320 -227 334 -227 327 b -13 74 -209 230 -125 133 b 6 65 -4 70 5 66 l 9 63 l 10 65 b 117 231 12 68 40 112 l 189 341 l 242 424 b 268 460 262 456 264 458 b 283 464 273 463 277 464 b 308 438 296 464 308 453 l 308 437 b 287 396 308 430 308 428 l 95 98 l 59 43 l 58 41 l 65 37 b 253 -156 151 -8 217 -77 b 281 -285 272 -199 281 -244 b 148 -481 281 -381 231 -463 b 115 -485 137 -484 126 -485 b -32 -376 51 -485 -9 -442 b -36 -349 -35 -366 -36 -358 b 25 -287 -36 -315 -12 -287 b 85 -333 54 -287 74 -302 b 166 -403 99 -377 133 -403 b 190 -399 174 -403 182 -402 b 225 -342 215 -390 225 -370 b 224 -322 225 -335 225 -328 b 12 -76 208 -231 125 -134 b -8 -66 2 -72 -6 -68 l -10 -65 l -12 -66 b -118 -231 -13 -68 -42 -113 l -190 -342 l -243 -426 b -269 -462 -264 -458 -265 -458 b -284 -466 -274 -464 -279 -466 b -310 -440 -298 -466 -310 -455 l -310 -438 b -288 -398 -310 -430 -308 -430 l -96 -99 l -59 -44 l -59 -43 l -66 -38 b -281 284 -198 33 -281 158 l -281 284 b -133 483 -281 392 -220 474 m 254 177 b 266 179 258 177 262 179 b 319 149 287 179 307 167 b 329 115 326 140 329 127 b 319 79 329 102 326 90 b 268 51 307 61 287 51 b 221 72 250 51 234 58 b 205 115 210 84 205 99 b 254 177 205 142 223 170 m -281 -54 b -269 -52 -277 -52 -273 -52 b -223 -73 -253 -52 -235 -59 b -206 -116 -212 -84 -206 -101 b -216 -151 -206 -129 -209 -141 b -269 -179 -228 -170 -249 -179 b -314 -159 -285 -179 -302 -173 b -330 -116 -325 -147 -330 -131 b -281 -54 -330 -88 -313 -61 ', + }, + coda: { + x_min: -311.6875, + x_max: 310.328125, + ha: 317, + o: 'm -9 388 b -2 390 -8 390 -5 390 b 5 388 1 390 4 390 b 19 378 10 387 16 383 b 23 333 23 371 23 371 b 24 298 23 299 24 298 b 81 276 34 298 65 285 b 213 91 145 240 190 177 b 224 24 217 76 224 36 b 257 24 224 24 235 24 b 299 19 292 24 292 24 b 310 -1 306 15 310 6 b 299 -23 310 -11 306 -19 b 257 -27 292 -27 292 -27 b 224 -29 235 -27 224 -29 b 213 -95 224 -40 217 -80 b 81 -280 190 -181 145 -244 b 24 -301 65 -290 34 -301 b 23 -335 24 -301 23 -303 l 23 -340 b 17 -381 23 -374 23 -374 b -1 -391 13 -388 5 -391 b -21 -381 -9 -391 -17 -388 b -27 -340 -27 -374 -27 -374 l -27 -335 b -28 -301 -27 -303 -27 -301 b -85 -280 -38 -301 -69 -290 b -217 -95 -149 -244 -194 -181 b -228 -29 -221 -80 -228 -40 b -259 -27 -228 -29 -238 -27 b -300 -23 -294 -27 -294 -27 b -311 -2 -307 -19 -311 -11 b -294 23 -311 8 -304 19 b -259 24 -291 23 -284 24 b -228 24 -239 24 -228 24 b -217 91 -228 36 -221 76 b -85 276 -194 177 -149 240 b -28 298 -69 285 -38 298 b -27 333 -27 298 -27 299 b -27 371 -27 362 -27 369 b -9 388 -24 378 -17 385 m -27 136 b -28 247 -27 197 -28 247 b -61 216 -31 247 -53 226 b -123 33 -95 172 -121 98 l -125 24 l -76 24 l -27 24 l -27 136 m 29 242 b 24 247 27 245 24 247 b 23 136 24 247 23 197 l 23 24 l 72 24 l 121 24 l 119 33 b 29 242 115 116 77 206 m -27 -140 l -27 -27 l -76 -27 l -125 -27 l -123 -36 b -61 -220 -121 -102 -95 -176 b -28 -251 -53 -230 -31 -251 b -27 -140 -28 -251 -27 -201 m 119 -36 l 121 -27 l 72 -27 l 23 -27 l 23 -140 b 24 -251 23 -201 24 -251 b 57 -220 27 -251 49 -230 b 119 -36 91 -176 117 -102 ', + }, + gClef: { + x_min: -1.359375, + x_max: 847.96875, + ha: 865, + o: 'm 488 1499 b 495 1500 490 1500 492 1500 b 541 1465 507 1500 521 1490 b 679 1078 622 1372 679 1210 b 677 1050 679 1068 677 1060 b 477 642 668 893 604 764 l 443 609 l 431 596 l 431 592 l 438 562 l 449 508 l 460 458 b 481 355 475 390 481 355 b 481 355 481 355 481 355 b 490 356 481 355 485 355 b 528 358 495 356 511 358 b 558 356 540 358 552 356 b 839 95 699 338 808 237 b 847 22 845 72 847 47 b 631 -303 847 -113 766 -242 b 620 -309 623 -308 620 -309 l 620 -310 b 631 -359 620 -310 626 -333 l 646 -435 l 660 -496 b 672 -588 668 -535 672 -563 b 664 -653 672 -610 669 -630 b 383 -875 630 -792 509 -875 b 201 -810 321 -875 257 -855 b 129 -680 151 -768 129 -730 b 274 -530 129 -592 200 -530 b 351 -553 300 -530 326 -538 b 412 -669 393 -582 412 -626 b 287 -805 412 -735 366 -800 l 279 -805 l 285 -809 b 383 -830 318 -823 351 -830 b 586 -718 464 -830 540 -789 b 626 -584 612 -678 626 -631 b 619 -528 626 -566 623 -548 b 612 -495 619 -526 616 -510 b 577 -324 590 -387 577 -324 b 577 -324 577 -324 577 -324 b 568 -326 575 -324 571 -324 b 528 -334 558 -328 537 -333 b 465 -338 506 -337 485 -338 b 24 -11 269 -338 87 -206 b -1 145 8 41 -1 93 b 96 442 -1 249 32 351 b 322 714 166 541 236 626 l 352 745 l 345 782 l 332 843 l 315 921 b 303 984 310 950 304 978 b 295 1082 298 1017 295 1049 b 413 1426 295 1208 336 1329 b 488 1499 436 1456 477 1496 m 549 1301 b 541 1301 547 1301 544 1301 b 411 1207 500 1301 447 1263 b 355 1004 374 1152 355 1079 b 359 942 355 984 356 963 b 371 881 362 927 363 917 l 385 818 b 392 782 389 799 392 784 l 392 782 b 434 828 393 782 424 816 b 607 1165 534 941 594 1060 b 608 1193 608 1175 608 1183 b 597 1270 608 1224 604 1254 b 549 1301 589 1286 571 1299 m 398 528 b 393 555 396 542 393 553 b 392 555 393 555 393 555 b 317 470 390 555 347 505 b 190 298 266 408 212 334 b 127 70 148 227 127 148 b 155 -77 127 19 137 -30 b 468 -303 209 -216 333 -303 b 519 -299 484 -303 502 -302 b 568 -284 541 -295 568 -287 l 568 -284 b 563 -263 568 -284 566 -274 l 534 -120 l 511 -13 l 496 61 l 480 133 b 469 187 472 176 469 187 b 468 188 469 187 469 188 b 416 162 462 188 430 172 b 337 13 364 126 337 69 b 413 -124 337 -40 363 -93 b 428 -144 424 -131 428 -137 b 428 -149 428 -145 428 -148 b 409 -166 426 -161 419 -166 b 394 -162 405 -166 400 -165 b 240 77 302 -122 240 -27 l 240 77 b 430 342 240 197 315 301 l 436 344 l 426 394 l 398 528 m 548 194 b 526 195 540 195 532 195 b 519 195 524 195 521 195 l 514 195 l 518 177 l 539 79 l 552 15 l 566 -48 l 594 -187 l 605 -240 b 612 -266 609 -254 611 -266 b 612 -266 612 -266 612 -266 b 641 -248 613 -266 630 -256 b 744 -98 692 -212 730 -156 b 751 -40 749 -79 751 -59 b 548 194 751 76 665 181 ', + }, + cClef: { + x_min: 0, + x_max: 873.828125, + ha: 892, + o: 'm 0 0 l 0 703 l 81 703 l 164 703 l 164 0 l 164 -705 l 81 -705 l 0 -705 l 0 0 m 225 0 l 225 703 l 246 703 l 268 703 l 268 366 l 268 30 l 274 36 b 314 79 284 44 302 63 b 413 302 357 137 392 213 b 432 327 419 324 421 327 b 449 306 443 327 447 322 b 611 115 457 195 529 115 b 651 122 624 115 638 117 b 728 316 705 140 724 188 b 729 388 728 342 729 366 b 671 635 729 533 711 602 b 581 662 649 652 616 662 b 477 637 545 662 510 653 l 475 635 l 477 634 b 503 627 488 632 495 631 b 545 556 532 612 545 584 b 491 480 545 524 526 491 b 465 474 481 476 473 474 b 379 563 417 474 379 516 b 389 602 379 576 382 588 b 541 691 409 641 479 681 b 582 694 555 692 568 694 b 865 462 714 694 834 598 b 873 392 871 440 873 416 b 865 317 873 367 871 341 b 639 84 839 194 748 101 b 612 83 630 83 620 83 b 511 116 577 83 543 94 b 504 120 509 119 506 120 b 504 120 504 120 504 120 b 469 59 504 120 488 93 l 432 -1 l 469 -61 b 504 -122 488 -94 504 -122 b 504 -122 504 -122 504 -122 b 511 -117 506 -122 509 -120 b 612 -84 543 -95 577 -84 b 665 -91 630 -84 647 -87 b 869 -338 771 -122 850 -216 b 873 -392 872 -356 873 -374 b 798 -595 873 -469 847 -539 b 581 -695 741 -662 660 -695 b 406 -626 517 -695 454 -671 b 381 -563 389 -607 381 -585 b 465 -477 381 -519 413 -477 b 545 -559 514 -477 545 -519 b 503 -628 545 -587 532 -613 b 477 -635 495 -632 488 -634 l 475 -637 l 477 -638 b 581 -663 510 -655 545 -663 b 671 -637 616 -663 649 -653 b 729 -391 711 -603 729 -534 b 728 -317 729 -367 728 -344 b 623 -117 722 -173 698 -124 b 611 -116 619 -116 615 -116 b 449 -308 528 -116 457 -198 b 432 -328 447 -323 443 -328 b 413 -303 421 -328 419 -326 b 314 -80 392 -215 357 -138 b 274 -37 302 -65 284 -45 l 268 -31 l 268 -367 l 268 -705 l 246 -705 l 225 -705 l 225 0 ', + }, + fClef: { + x_min: -1.359375, + x_max: 899.703125, + ha: 918, + o: 'm 307 349 b 332 351 315 351 323 351 b 443 340 367 351 408 347 b 741 47 607 306 720 195 b 744 0 743 31 744 16 b 660 -303 744 -90 713 -206 b 28 -755 534 -531 304 -695 b 14 -756 23 -755 19 -756 b -1 -741 4 -756 -1 -750 b 21 -720 -1 -731 1 -728 b 567 -56 337 -601 548 -344 b 568 -11 568 -41 568 -24 b 442 285 568 129 525 233 b 325 319 406 308 367 319 b 93 177 232 319 137 266 b 84 154 91 170 84 155 b 84 154 84 154 84 154 b 88 156 84 154 85 155 b 159 177 110 170 134 177 b 257 134 194 177 231 162 b 294 41 281 108 294 73 b 171 -97 294 -24 246 -90 b 156 -98 166 -97 161 -98 b 6 74 73 -98 6 -22 b 6 80 6 76 6 79 b 307 349 10 223 141 340 m 839 215 b 845 216 841 216 842 216 b 862 213 852 216 860 215 b 899 163 887 206 899 184 b 872 117 899 145 890 127 b 847 111 865 112 856 111 b 808 130 833 111 818 117 b 796 162 800 140 796 151 b 839 215 796 187 812 212 m 839 -112 b 845 -112 841 -112 842 -112 b 862 -115 852 -112 860 -113 b 899 -165 887 -122 899 -144 b 872 -210 899 -183 890 -201 b 847 -217 865 -215 856 -217 b 808 -198 833 -217 818 -210 b 796 -165 800 -188 796 -177 b 839 -112 796 -140 812 -116 ', + }, + unpitchedPercussionClef1: { + x_min: 0, + x_max: 464.140625, + ha: 474, + o: 'm 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 ', + }, + '6stringTabClef': { + x_min: -1.359375, + x_max: 680.5625, + ha: 694, + o: 'm 597 1042 b 604 1042 600 1042 602 1042 b 642 1002 627 1042 642 1022 b 619 966 642 988 635 974 b 439 927 574 942 503 927 l 426 927 l 426 921 b 430 838 428 893 430 866 b 345 480 430 696 398 560 b 179 391 307 423 249 391 b 156 392 171 391 164 392 b 138 394 149 394 142 394 b 103 434 115 396 103 416 b 129 471 103 451 111 466 b 141 474 133 473 137 474 b 172 459 153 474 164 469 b 181 455 175 456 176 455 b 187 456 182 455 185 455 b 253 520 212 460 234 483 b 315 836 294 605 315 714 b 311 928 315 867 314 898 b 302 945 310 943 311 942 b 245 953 283 950 262 953 b 130 891 193 953 149 931 b 84 860 119 870 102 860 b 36 905 61 860 39 877 b 36 910 36 907 36 909 b 80 970 36 931 50 949 b 249 1017 125 1000 187 1017 b 322 1009 273 1017 299 1014 l 341 1003 b 436 991 372 995 406 991 b 577 1031 495 991 545 1004 b 597 1042 583 1038 590 1041 m 416 360 b 424 360 419 360 421 360 b 481 309 454 360 479 338 b 503 145 484 280 495 199 b 585 -185 525 16 555 -106 b 630 -245 596 -213 613 -237 l 634 -247 l 638 -245 b 647 -244 641 -245 645 -244 b 680 -278 666 -244 680 -262 b 664 -308 680 -290 675 -301 b 638 -312 658 -310 650 -312 b 613 -309 631 -312 623 -310 b 477 -201 555 -303 502 -260 b 417 -2 460 -159 434 -72 b 416 5 417 1 416 5 b 416 5 416 5 416 5 b 411 -5 415 5 413 0 b 359 -97 397 -33 377 -70 b 353 -106 355 -102 353 -105 b 359 -112 353 -108 355 -109 b 409 -130 375 -123 390 -129 b 426 -134 420 -130 421 -131 b 431 -147 428 -137 431 -141 b 420 -162 431 -152 427 -159 b 382 -169 409 -166 396 -169 b 323 -155 363 -169 341 -165 l 317 -152 l 314 -155 b 62 -303 240 -240 148 -295 b 36 -305 55 -305 44 -305 b 23 -303 29 -305 24 -305 b -1 -273 6 -299 -1 -287 b 31 -240 -1 -256 10 -240 b 36 -240 32 -240 34 -240 b 42 -241 38 -241 39 -241 b 134 -204 63 -241 99 -226 b 367 288 265 -115 357 81 b 375 330 368 313 370 320 b 416 360 383 347 400 358 m 360 -359 b 379 -359 363 -359 371 -359 b 424 -360 396 -359 416 -359 b 646 -502 536 -373 624 -430 b 649 -527 649 -510 649 -519 b 530 -673 649 -578 604 -635 l 521 -677 l 529 -681 b 653 -811 592 -714 637 -762 b 660 -853 658 -827 660 -839 b 645 -911 660 -873 656 -892 b 426 -1021 608 -981 519 -1021 b 283 -989 377 -1021 328 -1011 b 235 -949 249 -972 239 -964 b 234 -936 234 -946 234 -941 b 234 -928 234 -934 234 -931 l 235 -925 l 234 -927 l 225 -934 b 87 -982 186 -966 138 -982 b 80 -982 85 -982 83 -982 b 55 -981 70 -981 58 -981 b 17 -943 32 -981 17 -964 b 54 -904 17 -921 35 -904 b 78 -914 62 -904 72 -909 l 83 -918 l 88 -918 b 190 -831 122 -918 166 -881 b 269 -506 242 -727 269 -612 b 268 -462 269 -492 269 -477 b 266 -449 266 -458 266 -452 b 265 -444 266 -445 266 -444 b 257 -446 264 -444 261 -445 b 132 -545 196 -470 152 -505 b 88 -573 122 -563 104 -573 b 39 -523 63 -573 39 -553 b 63 -476 39 -505 44 -494 b 360 -359 136 -408 235 -369 m 419 -424 b 393 -423 411 -423 406 -423 l 375 -423 l 377 -426 b 379 -439 377 -427 378 -434 b 383 -510 382 -463 383 -487 b 314 -811 383 -609 360 -710 b 266 -893 296 -850 285 -870 b 264 -898 265 -896 264 -898 l 264 -898 b 264 -898 264 -898 264 -898 b 268 -898 264 -898 266 -898 b 273 -898 270 -898 272 -898 b 300 -909 283 -898 291 -900 b 426 -957 340 -941 385 -957 b 476 -949 443 -957 460 -954 b 547 -853 522 -931 547 -893 b 485 -745 547 -816 526 -775 b 397 -707 460 -727 432 -714 b 366 -675 375 -703 366 -692 b 396 -642 366 -657 377 -645 b 530 -557 455 -637 511 -601 b 536 -527 534 -548 536 -537 b 419 -424 536 -480 490 -437 ', + }, + timeSig0: { + x_min: 0, + x_max: 514.5, + ha: 525, + o: 'm 236 648 b 246 648 238 648 242 648 b 288 646 261 648 283 648 b 472 513 364 634 428 587 b 514 347 502 464 514 413 b 462 163 514 272 499 217 b 257 44 409 83 333 44 b 50 163 181 44 103 83 b 0 347 14 217 0 272 b 40 513 0 413 12 464 b 236 648 87 591 155 638 m 277 614 b 253 616 273 616 261 616 b 242 616 247 616 243 616 b 170 499 193 609 181 589 b 159 348 163 446 159 398 b 166 222 159 308 161 266 b 201 91 174 138 183 106 b 257 76 215 81 235 76 b 311 91 277 76 299 81 b 347 222 330 106 338 138 b 353 348 352 266 353 308 b 344 499 353 398 351 446 b 277 614 333 587 322 606 m 257 -1 l 258 -1 l 255 -1 l 257 -1 m 257 673 l 258 673 l 255 673 l 257 673 ', + }, + timeSig1: { + x_min: -1.359375, + x_max: 344.359375, + ha: 351, + o: 'm 126 637 l 129 638 l 198 638 l 266 638 l 269 635 b 274 631 272 634 273 632 l 277 627 l 277 395 b 279 156 277 230 277 161 b 329 88 281 123 295 106 b 344 69 341 81 344 79 b 337 55 344 62 343 59 l 333 54 l 197 54 l 61 54 l 58 55 b 50 69 53 59 50 62 b 65 88 50 79 53 81 b 80 97 72 91 74 93 b 117 156 103 113 112 129 b 117 345 117 161 117 222 l 117 528 l 100 503 l 38 406 b 14 383 24 384 23 383 b -1 398 5 383 -1 390 b 4 415 -1 403 1 409 b 16 437 5 416 10 426 l 72 539 l 100 596 b 121 632 119 631 119 631 b 126 637 122 634 125 635 m 171 -1 l 172 -1 l 170 -1 l 171 -1 m 171 673 l 172 673 l 170 673 l 171 673 ', + }, + timeSig2: { + x_min: -1.359375, + x_max: 458.6875, + ha: 468, + o: 'm 197 648 b 216 648 201 648 208 648 b 258 646 232 648 253 648 b 419 546 333 637 393 599 b 432 489 428 528 432 509 b 356 342 432 440 405 384 b 235 278 322 313 288 295 b 69 170 166 256 107 217 b 69 169 69 170 69 169 b 69 169 69 169 69 169 b 74 173 69 169 72 170 b 209 222 112 204 163 222 b 310 195 247 222 274 215 b 371 179 332 184 352 179 b 396 181 379 179 387 179 b 428 202 409 184 423 194 b 442 212 431 209 436 212 b 458 197 450 212 458 206 b 441 148 458 190 449 165 b 299 44 409 84 353 44 b 288 45 295 44 292 44 b 250 61 274 45 268 49 b 122 99 212 86 164 99 b 73 91 104 99 88 97 b 28 63 53 84 34 72 b 14 54 25 56 20 54 b 1 62 9 54 4 56 l -1 65 l -1 79 b 0 99 -1 91 0 95 b 2 113 1 102 2 108 b 164 309 20 197 81 272 b 285 470 232 341 277 398 b 287 487 287 476 287 481 b 171 595 287 551 239 595 b 155 595 166 595 160 595 b 142 592 145 594 142 594 b 145 589 142 592 142 591 b 179 527 168 576 179 551 b 132 455 179 496 163 467 b 104 451 122 452 112 451 b 27 530 62 451 27 487 b 29 555 27 538 27 546 b 197 648 44 601 115 639 m 228 -1 l 230 -1 l 227 -1 l 228 -1 m 228 673 l 230 673 l 227 673 l 228 673 ', + }, + timeSig3: { + x_min: -1.359375, + x_max: 409.6875, + ha: 418, + o: 'm 174 648 b 191 648 176 648 183 648 b 225 648 204 648 220 648 b 402 523 317 638 389 588 b 404 503 404 517 404 510 b 402 484 404 495 404 488 b 264 373 389 437 334 394 b 257 370 259 371 257 371 b 257 370 257 370 257 370 b 264 369 258 370 261 369 b 409 202 359 334 409 267 b 318 72 409 152 381 104 b 200 43 281 52 240 43 b 23 113 134 43 69 68 b 0 169 6 129 0 149 b 77 249 0 210 29 249 l 77 249 b 152 174 125 249 152 212 b 103 102 152 145 137 116 b 103 102 103 102 103 102 b 147 94 103 101 132 95 b 153 94 149 94 151 94 b 265 206 219 94 265 141 b 264 226 265 213 265 219 b 147 355 253 299 204 353 b 126 371 133 356 126 362 b 147 388 126 383 132 388 b 254 474 196 391 238 424 b 259 502 258 484 259 494 b 182 592 259 544 228 582 b 156 595 175 595 166 595 b 115 592 142 595 129 594 l 111 591 l 115 588 b 152 524 141 574 152 549 b 92 449 152 491 130 458 b 76 448 87 448 81 448 b -1 530 32 448 -1 488 b 20 581 -1 548 5 566 b 174 648 55 619 108 641 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 ', + }, + timeSig4: { + x_min: 0, + x_max: 468.21875, + ha: 478, + o: 'm 174 637 b 232 638 175 638 189 638 b 277 638 245 638 259 638 l 378 638 l 381 635 b 389 623 386 632 389 627 b 382 609 389 617 386 613 b 366 589 381 606 372 598 l 313 528 l 245 451 l 209 410 l 155 348 l 84 267 b 59 240 72 252 59 240 b 59 240 59 240 59 240 b 151 238 59 238 68 238 l 242 238 l 242 303 b 243 371 242 369 242 370 b 289 426 245 374 254 385 l 303 441 l 317 456 l 338 483 l 360 506 l 371 520 b 386 527 375 526 381 527 b 400 519 392 527 397 524 b 401 440 401 516 401 514 b 401 377 401 423 401 402 l 401 238 l 426 238 b 453 237 449 238 450 238 b 465 217 461 234 465 226 b 460 202 465 212 464 206 b 426 197 454 197 453 197 l 401 197 l 401 180 b 451 88 402 129 412 109 b 468 69 465 81 468 79 b 461 55 468 62 466 59 l 458 54 l 321 54 l 185 54 l 182 55 b 175 69 176 59 175 62 b 191 88 175 79 176 81 b 240 180 230 109 240 129 l 240 197 l 125 197 b 73 195 104 195 87 195 b 8 197 10 195 9 197 b 0 212 2 199 0 205 b 0 212 0 212 0 212 b 20 242 0 219 0 219 b 163 610 104 344 163 492 b 174 637 163 628 166 634 m 234 -1 l 235 -1 l 232 -1 l 234 -1 m 234 673 l 235 673 l 232 673 l 234 673 ', + }, + timeSig5: { + x_min: 0, + x_max: 409.6875, + ha: 418, + o: 'm 47 637 b 53 638 49 638 50 638 b 69 634 55 638 61 637 b 210 610 114 619 161 610 b 363 634 259 610 311 619 b 382 638 372 637 378 638 b 392 634 386 638 389 637 b 397 623 396 630 397 627 b 393 610 397 620 396 616 b 298 505 368 552 338 520 b 212 494 277 498 246 494 b 65 517 163 494 106 502 b 61 517 62 517 61 517 b 61 517 61 517 61 517 b 51 408 61 517 51 412 b 51 408 51 408 51 408 b 51 408 51 408 51 408 b 61 412 53 408 55 409 b 125 434 80 421 103 430 b 185 441 145 440 166 441 b 409 244 310 441 409 353 b 401 191 409 227 406 209 b 197 43 375 105 287 43 b 159 47 183 43 171 44 b 23 123 112 56 61 86 b 0 180 6 140 0 159 b 76 260 0 220 31 260 b 92 259 81 260 87 259 b 152 183 132 251 152 216 b 100 112 152 152 134 122 b 95 111 98 112 95 111 b 95 111 95 111 95 111 b 129 98 95 109 119 101 b 148 97 136 97 141 97 b 264 235 206 97 261 158 b 265 248 265 240 265 244 b 210 398 265 312 243 373 b 179 408 201 406 194 408 b 174 408 178 408 176 408 b 53 369 130 408 88 394 b 34 359 39 359 38 359 b 17 374 24 359 17 365 b 39 628 17 384 38 625 b 47 637 40 631 43 635 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 ', + }, + timeSig6: { + x_min: 0, + x_max: 475.03125, + ha: 485, + o: 'm 255 648 b 274 648 259 648 266 648 b 314 646 288 648 307 648 b 450 555 374 637 438 594 b 454 530 453 546 454 538 b 375 451 454 485 416 451 b 328 467 359 451 343 455 b 300 526 310 483 300 503 b 352 598 300 557 319 589 b 356 599 355 598 356 599 b 352 602 356 599 355 601 b 288 616 330 612 308 616 b 210 584 257 616 230 605 b 164 433 189 559 174 508 b 160 374 163 415 160 381 b 160 374 160 374 160 374 b 160 374 160 374 160 374 b 168 377 160 374 164 376 b 258 395 200 390 228 395 b 366 367 294 395 328 387 b 475 223 436 333 475 283 b 472 197 475 215 473 206 b 349 65 462 141 419 95 b 259 43 317 51 288 43 b 167 69 230 43 200 52 b 4 290 80 113 20 195 b 0 349 1 309 0 328 b 20 467 0 391 6 433 b 255 648 58 563 155 637 m 269 363 b 257 363 265 363 261 363 b 210 345 236 363 220 356 b 186 226 196 324 186 272 b 187 198 186 216 186 206 b 213 95 191 151 202 112 b 257 76 221 83 238 76 b 270 77 261 76 266 76 b 321 156 299 81 310 99 b 329 229 326 183 329 206 b 321 301 329 252 326 274 b 269 363 311 342 298 359 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 ', + }, + timeSig7: { + x_min: 0, + x_max: 442.359375, + ha: 451, + o: 'm 147 648 b 166 649 153 649 160 649 b 313 598 217 649 273 630 b 340 587 323 588 328 587 l 341 587 b 412 628 367 587 390 601 b 427 638 416 635 421 638 b 439 632 431 638 435 637 b 442 623 441 630 442 628 b 430 569 442 616 439 603 b 352 369 408 492 377 410 b 300 259 325 324 313 298 b 273 84 283 205 273 140 b 265 55 273 65 272 59 l 261 54 l 181 54 l 99 54 l 96 55 b 91 61 95 56 92 59 l 89 63 l 89 77 b 147 263 89 133 111 202 b 261 401 176 313 212 355 b 378 541 315 449 349 489 l 382 548 l 375 544 b 240 495 333 512 285 495 b 129 535 198 495 160 509 b 84 560 108 552 95 560 b 76 559 81 560 78 560 b 31 487 59 555 43 530 b 14 470 27 473 24 470 b 1 477 8 470 4 471 l 0 480 l 0 553 l 0 627 l 1 630 b 16 638 4 635 9 638 b 23 635 17 638 20 637 b 49 626 36 626 39 626 b 96 638 59 626 80 630 b 104 639 99 638 102 639 b 117 644 107 641 112 642 b 147 648 125 645 137 648 m 220 -1 l 221 -1 l 219 -1 l 220 -1 m 220 673 l 221 673 l 219 673 l 220 673 ', + }, + timeSig8: { + x_min: 0, + x_max: 488.640625, + ha: 499, + o: 'm 217 648 b 245 649 225 648 235 649 b 453 516 343 649 430 595 b 458 478 455 503 458 491 b 412 370 458 440 441 398 b 411 369 412 369 411 369 b 415 365 411 367 412 367 b 488 231 462 331 488 281 b 472 165 488 208 483 186 b 243 43 434 86 338 43 b 63 104 178 43 112 62 b 0 233 20 140 0 186 b 73 365 0 283 24 331 l 77 369 l 72 374 b 29 476 42 406 29 441 b 217 648 29 557 103 635 m 258 605 b 242 606 253 605 247 606 b 157 552 198 606 157 580 b 160 541 157 548 159 544 b 319 413 176 503 242 452 l 337 403 l 338 406 b 359 476 352 428 359 452 b 258 605 359 537 318 595 m 138 326 b 130 330 134 328 130 330 b 130 330 130 330 130 330 b 107 305 127 330 112 313 b 84 231 91 281 84 256 b 243 86 84 156 151 86 b 249 87 245 86 246 87 b 347 156 303 88 347 120 b 344 172 347 162 345 167 b 156 319 325 227 257 281 b 138 326 151 322 144 324 m 243 -1 l 245 -1 l 242 -1 l 243 -1 m 243 673 l 245 673 l 242 673 l 243 673 ', + }, + timeSig9: { + x_min: 0, + x_max: 475.03125, + ha: 485, + o: 'm 191 646 b 212 649 198 648 205 649 b 255 644 227 649 243 646 b 458 448 348 616 428 539 b 475 342 469 415 475 378 b 460 244 475 308 469 274 b 193 44 421 124 303 44 b 91 69 157 44 122 51 b 19 161 43 97 19 126 b 21 181 19 167 20 174 b 98 241 32 220 65 241 b 170 186 129 241 160 223 b 172 166 171 179 172 173 b 121 94 172 134 152 102 b 117 93 118 94 117 93 b 121 90 117 93 118 91 b 185 76 142 80 164 76 b 270 119 220 76 251 91 b 308 259 287 145 300 194 b 313 317 310 277 313 310 b 313 317 313 317 313 317 b 313 317 313 317 313 317 b 304 315 313 317 308 316 b 216 295 273 302 245 295 b 145 308 193 295 170 299 b 19 398 88 327 42 360 b 0 469 5 420 0 444 b 24 551 0 496 8 526 b 191 646 54 596 125 637 m 227 614 b 215 616 224 616 220 616 b 202 614 210 616 206 616 b 152 535 174 610 163 592 b 144 463 147 509 144 485 b 152 391 144 440 147 417 b 216 328 163 344 179 328 b 280 391 253 328 269 344 b 288 463 285 417 288 440 b 280 535 288 485 285 509 b 227 614 269 594 258 610 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 ', + }, + timeSigCommon: { + x_min: -1.359375, + x_max: 556.6875, + ha: 568, + o: 'm 294 322 b 318 323 299 322 308 323 b 360 320 334 323 352 322 b 526 217 430 310 490 273 b 543 166 537 202 543 184 b 447 70 543 117 503 70 b 445 70 447 70 446 70 b 359 159 394 72 359 113 b 368 201 359 173 362 187 b 442 245 382 229 412 245 b 455 244 446 245 451 245 b 460 244 458 244 460 244 b 460 244 460 244 460 244 b 454 248 460 244 458 245 b 325 291 417 276 372 291 b 285 287 313 291 299 290 b 144 -2 183 269 144 190 b 281 -290 144 -208 179 -280 b 304 -291 289 -291 298 -291 b 524 -105 412 -291 506 -212 b 541 -84 526 -88 530 -84 b 556 -101 551 -84 556 -90 b 549 -138 556 -111 553 -122 b 334 -322 521 -237 435 -310 b 302 -324 323 -323 313 -324 b 13 -101 172 -324 54 -234 b -1 -1 4 -68 -1 -34 b 294 322 -1 161 121 303 ', + }, + timeSigCutCommon: { + x_min: 0, + x_max: 556.6875, + ha: 568, + o: 'm 289 545 b 298 546 292 545 295 546 b 318 533 306 546 315 541 b 319 428 319 530 319 528 l 319 327 l 334 327 b 526 223 412 326 485 285 b 543 172 537 206 543 190 b 447 76 543 122 503 76 b 445 76 446 76 446 76 b 359 165 394 77 359 119 b 368 205 359 179 362 192 b 441 251 382 233 412 251 b 455 249 446 251 451 251 b 460 248 458 249 460 248 b 460 248 460 248 460 248 b 454 254 460 249 458 251 b 334 295 419 280 378 294 l 319 295 l 319 4 l 319 -287 l 321 -285 b 328 -285 322 -285 325 -285 b 524 -99 424 -277 507 -198 b 541 -79 526 -84 530 -79 b 556 -97 551 -79 556 -84 b 548 -133 556 -105 553 -117 b 334 -317 521 -233 434 -306 b 322 -319 329 -317 323 -317 l 319 -319 l 319 -424 b 319 -471 319 -444 319 -459 b 313 -541 319 -544 318 -535 b 298 -548 308 -545 303 -548 b 279 -534 289 -548 281 -542 b 277 -424 277 -531 277 -530 l 277 -317 l 273 -317 b 13 -95 153 -305 51 -217 b 0 2 4 -62 0 -29 b 182 295 0 126 66 238 b 274 324 210 309 249 320 l 277 324 l 277 427 b 279 533 277 528 277 530 b 289 545 281 538 285 542 m 277 2 b 277 291 277 161 277 291 b 268 288 277 291 273 290 b 144 1 179 265 144 184 b 276 -284 144 -199 175 -267 l 277 -285 l 277 2 ', + }, + timeSigPlus: { + x_min: 0, + x_max: 319.859375, + ha: 326, + o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ', + }, + timeSigPlusSmall: { + x_min: 0, + x_max: 319.859375, + ha: 326, + o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ', + }, + timeSigMinus: { + x_min: 0, + x_max: 318.5, + ha: 325, + o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ', + }, + timeSigParensRight: { + x_min: 25.859375, + x_max: 164.6875, + ha: 168, + o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ', + }, + timeSigParensRightSmall: { + x_min: 25.859375, + x_max: 164.6875, + ha: 168, + o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ', + }, + timeSigParensLeft: { + x_min: -166.0625, + x_max: -25.859375, + ha: 0, + o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ', + }, + timeSigParensLeftSmall: { + x_min: -166.0625, + x_max: -25.859375, + ha: 0, + o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ', + }, + noteheadDoubleWhole: { + x_min: 0, + x_max: 902.421875, + ha: 921, + o: 'm 17 240 b 24 241 19 241 21 241 b 32 240 28 241 31 241 b 46 229 38 238 43 234 b 50 88 50 223 50 237 b 50 -1 50 63 50 34 b 50 -90 50 -36 50 -65 b 46 -231 50 -238 50 -224 b 25 -242 42 -238 34 -242 b 0 -224 14 -242 4 -235 b 0 2 0 -222 0 -108 b 0 223 0 112 0 220 b 17 240 2 230 9 237 m 110 240 b 118 241 111 241 114 241 b 126 240 121 241 123 241 b 142 223 133 237 140 230 b 144 123 144 220 144 205 b 144 29 144 45 144 29 b 144 29 144 29 144 29 b 393 183 166 106 264 167 b 450 186 412 184 431 186 b 756 29 600 186 732 120 b 756 29 756 29 756 29 b 758 123 758 29 758 45 b 760 227 758 226 758 223 b 784 241 766 237 774 241 b 804 229 792 241 800 237 b 809 88 808 223 809 237 l 809 -1 l 809 -90 b 804 -231 809 -238 808 -224 b 784 -242 800 -238 792 -242 b 762 -231 775 -242 766 -238 b 758 -124 756 -224 758 -231 b 756 -30 758 -47 758 -30 b 756 -30 756 -30 756 -30 b 509 -184 736 -108 637 -169 b 450 -187 488 -187 469 -187 b 144 -30 300 -187 168 -122 b 144 -30 144 -30 144 -30 b 144 -124 144 -30 144 -47 b 140 -231 144 -231 144 -224 b 118 -242 134 -238 126 -242 b 92 -224 107 -242 96 -235 b 92 2 92 -222 92 -108 b 92 223 92 112 92 220 b 110 240 95 230 102 237 m 432 161 b 413 162 426 162 420 162 b 313 41 351 162 313 109 b 347 -73 313 5 323 -34 b 487 -163 385 -133 439 -163 b 578 -97 526 -163 562 -142 b 588 -43 585 -80 588 -62 b 432 161 588 47 518 147 m 868 240 b 876 241 869 241 872 241 b 884 240 879 241 882 241 b 898 229 890 238 894 234 b 902 88 902 223 902 237 l 902 -1 l 902 -90 b 898 -231 902 -238 902 -224 b 876 -242 892 -238 884 -242 b 852 -224 865 -242 854 -235 b 850 2 850 -222 850 -108 b 852 223 850 112 850 220 b 868 240 853 230 860 237 ', + }, + noteheadWhole: { + x_min: 0, + x_max: 619.3125, + ha: 632, + o: 'm 274 184 b 307 186 285 186 296 186 b 616 22 465 186 597 116 b 619 -1 617 13 619 5 b 308 -187 619 -104 483 -187 b 0 -1 133 -187 0 -102 b 5 36 0 11 1 23 b 274 184 29 115 141 176 m 289 161 b 272 162 284 162 277 162 b 171 41 209 162 171 108 b 205 -73 171 5 182 -34 b 345 -163 243 -133 298 -163 b 436 -98 385 -163 420 -142 b 446 -43 443 -80 446 -62 b 289 161 446 47 377 147 ', + }, + noteheadHalf: { + x_min: 0, + x_max: 428.75, + ha: 438, + o: 'm 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 m 366 131 b 352 134 362 133 357 134 b 219 81 321 134 269 115 b 47 -111 126 23 50 -62 b 47 -112 47 -111 47 -112 b 77 -136 47 -129 58 -136 b 264 -45 118 -136 194 -101 b 382 109 336 12 382 76 b 366 131 382 120 377 129 ', + }, + noteheadBlack: { + x_min: 0, + x_max: 428.75, + ha: 438, + o: 'm 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 ', + }, + noteheadXWhole: { + x_min: 0, + x_max: 598.890625, + ha: 611, + o: 'm 62 181 b 77 183 66 183 72 183 b 91 181 83 183 88 183 b 202 131 100 180 106 177 l 299 87 l 394 131 b 517 183 499 181 502 183 b 519 183 517 183 518 183 b 598 104 567 183 598 144 b 577 49 598 84 592 65 b 518 15 567 38 563 37 b 484 0 499 6 484 0 b 518 -16 484 -1 499 -8 b 577 -51 563 -38 567 -40 b 598 -105 592 -66 598 -86 b 519 -184 598 -145 567 -184 b 517 -184 518 -184 517 -184 b 394 -133 502 -184 499 -183 l 299 -88 l 202 -133 b 81 -184 99 -183 95 -184 b 77 -184 80 -184 78 -184 b 0 -105 29 -184 0 -145 b 20 -51 0 -86 5 -66 b 80 -16 29 -40 34 -38 b 114 -1 98 -8 114 -1 b 80 15 114 0 98 6 b 20 49 34 37 29 38 b 0 104 6 65 0 84 b 62 181 0 140 23 174 m 88 134 b 74 136 85 134 80 136 b 68 134 72 136 69 136 b 46 104 54 130 46 117 b 55 81 46 95 49 88 b 149 34 59 76 53 80 b 224 -1 190 15 224 0 b 144 -38 224 -1 187 -18 b 54 -84 59 -79 58 -79 b 46 -105 49 -90 46 -98 b 76 -137 46 -122 58 -137 b 78 -137 77 -137 77 -137 b 194 -86 87 -137 76 -141 b 298 -36 250 -58 298 -36 b 298 -36 298 -36 298 -36 b 402 -84 299 -36 345 -58 b 518 -137 522 -141 510 -137 b 521 -137 519 -137 519 -137 b 551 -105 539 -137 551 -122 b 541 -83 551 -98 548 -90 b 447 -36 537 -77 544 -81 b 374 -1 406 -16 374 -1 b 447 34 374 0 406 15 b 541 81 544 80 537 76 b 551 104 548 88 551 97 b 521 136 551 120 539 136 b 518 136 519 136 519 136 b 517 136 518 136 517 136 l 517 136 b 402 83 511 136 511 136 b 298 34 345 56 299 34 b 298 34 298 34 298 34 b 194 84 298 34 250 56 b 88 134 137 111 89 133 ', + }, + noteheadXHalf: { + x_min: 0, + x_max: 406.96875, + ha: 415, + o: 'm 55 181 b 70 183 61 183 66 183 b 111 170 85 183 99 179 b 160 130 115 167 137 149 l 202 95 l 245 130 b 319 181 299 176 302 179 b 334 183 325 183 330 183 b 406 109 375 183 406 148 b 401 81 406 99 405 91 b 348 24 394 65 390 59 b 318 -1 332 11 318 0 b 348 -26 318 -1 332 -12 b 401 -83 390 -61 394 -66 b 406 -111 405 -93 406 -101 b 334 -184 406 -149 375 -184 b 319 -183 330 -184 325 -184 b 245 -131 302 -180 299 -177 l 202 -97 l 160 -131 b 85 -183 107 -177 103 -180 b 70 -184 80 -184 76 -184 b 0 -111 31 -184 0 -149 b 4 -83 0 -101 1 -93 b 58 -26 10 -66 16 -61 b 88 -1 74 -12 88 -1 b 58 24 88 0 74 11 b 10 69 23 54 17 59 b 0 109 2 81 0 95 b 55 181 0 142 21 173 m 83 133 b 72 136 78 136 76 136 b 57 131 66 136 61 134 b 46 109 49 126 46 117 b 50 93 46 104 47 98 b 107 45 51 91 77 70 b 160 0 137 20 160 0 b 107 -47 160 -1 137 -22 b 50 -94 77 -72 51 -93 b 46 -111 47 -99 46 -105 b 59 -134 46 -120 50 -130 b 72 -137 62 -136 68 -137 b 83 -136 76 -137 80 -136 b 144 -84 84 -134 107 -116 b 202 -36 176 -58 202 -36 b 261 -84 202 -36 230 -58 b 323 -136 299 -116 321 -134 b 334 -137 326 -136 330 -137 b 345 -134 338 -137 343 -136 b 360 -111 355 -130 360 -120 b 355 -94 360 -105 359 -99 b 299 -47 353 -93 329 -72 b 245 0 269 -22 245 -1 b 299 45 245 0 269 20 b 355 93 329 70 353 91 b 360 109 359 98 360 104 b 345 133 360 119 355 129 b 334 136 343 134 338 136 b 323 134 330 136 326 134 b 261 83 321 133 299 115 b 202 34 230 56 202 34 b 144 83 202 34 176 56 b 83 133 106 115 84 133 ', + }, + noteheadXBlack: { + x_min: 0, + x_max: 406.96875, + ha: 415, + o: 'm 21 183 b 28 183 24 183 25 183 b 42 181 34 183 39 183 b 127 108 47 179 47 179 b 202 41 168 72 202 41 b 279 108 204 41 238 72 b 357 177 321 145 356 176 b 375 183 363 181 370 183 b 406 151 392 183 406 169 b 404 137 406 147 405 141 b 322 62 401 131 398 129 b 251 0 284 27 251 0 b 322 -63 251 -1 284 -29 b 404 -138 398 -130 401 -133 b 406 -152 405 -142 406 -148 b 375 -184 406 -170 392 -184 b 357 -179 370 -184 363 -183 b 279 -109 356 -177 321 -147 b 202 -43 238 -73 204 -43 b 127 -109 202 -43 168 -73 b 49 -179 85 -147 50 -177 b 31 -184 43 -183 36 -184 b 0 -152 13 -184 0 -170 b 2 -138 0 -148 0 -142 b 83 -63 5 -133 8 -130 b 155 0 122 -29 155 -1 b 83 62 155 0 122 27 b 8 129 43 97 10 127 b 0 151 2 136 0 144 b 21 183 0 165 8 177 ', + }, + noteheadTriangleUpWhole: { + x_min: 0, + x_max: 630.203125, + ha: 643, + o: 'm 308 204 b 314 205 310 205 313 205 b 326 201 319 205 323 204 b 355 154 328 199 338 180 b 401 83 362 142 392 95 l 409 72 b 431 41 412 66 424 49 b 619 -174 498 -51 570 -134 b 630 -192 626 -180 630 -186 b 626 -202 630 -195 628 -199 b 616 -206 623 -205 620 -206 b 552 -188 608 -206 592 -202 b 310 -155 488 -169 392 -155 b 268 -156 295 -155 281 -155 b 77 -188 197 -161 126 -173 b 13 -206 35 -202 20 -206 b 9 -206 12 -206 10 -206 b 0 -191 2 -202 0 -197 b 8 -176 0 -186 2 -180 b 204 49 58 -136 138 -43 l 220 72 l 227 83 b 295 188 245 108 281 166 b 308 204 299 197 304 202 m 315 147 b 314 147 315 147 314 147 b 314 147 314 147 314 147 b 306 129 314 145 310 138 l 296 105 b 281 72 292 97 284 77 l 274 56 b 181 -123 247 -4 212 -72 l 174 -134 l 176 -133 b 314 -123 215 -127 272 -123 b 451 -133 356 -123 413 -127 l 454 -134 l 449 -123 b 353 56 417 -72 381 -4 l 347 72 b 332 105 344 77 336 97 l 322 129 b 315 147 318 138 315 145 ', + }, + noteheadTriangleUpHalf: { + x_min: 0, + x_max: 438.28125, + ha: 447, + o: 'm 212 205 b 219 205 213 205 216 205 b 239 183 228 205 231 204 b 421 -163 298 40 363 -83 b 438 -191 434 -180 438 -186 b 436 -197 438 -192 438 -195 b 424 -206 434 -204 431 -206 b 406 -201 420 -206 415 -205 b 216 -156 347 -172 281 -156 b 23 -205 148 -156 80 -173 b 14 -206 20 -206 17 -206 b 0 -191 6 -206 0 -201 b 6 -176 0 -187 1 -183 b 202 192 63 -104 142 45 b 212 205 205 199 208 202 m 264 48 l 249 81 l 243 94 l 242 91 b 89 -126 208 36 137 -66 b 81 -138 85 -133 81 -138 b 81 -138 81 -138 81 -138 b 81 -138 81 -138 81 -138 b 95 -133 81 -138 87 -136 b 280 -94 156 -108 221 -94 b 334 -98 299 -94 317 -95 b 343 -99 338 -99 343 -99 b 343 -99 343 -99 343 -99 b 338 -94 343 -99 341 -97 b 264 48 318 -58 287 1 ', + }, + noteheadTriangleUpBlack: { + x_min: -1.359375, + x_max: 436.921875, + ha: 446, + o: 'm 213 205 b 217 205 215 205 216 205 b 234 194 224 205 234 199 b 236 187 234 194 235 190 l 245 167 l 261 129 l 270 106 b 355 -61 294 54 329 -13 b 420 -163 381 -105 402 -138 b 436 -188 435 -184 436 -184 b 436 -191 436 -190 436 -190 b 421 -206 436 -201 431 -206 l 421 -206 l 416 -206 l 405 -201 b 217 -158 347 -172 283 -158 b 31 -201 153 -158 88 -172 l 20 -206 l 14 -206 l 14 -206 b 0 -191 5 -206 0 -201 b -1 -188 0 -190 -1 -190 b 14 -163 -1 -186 0 -184 b 95 -34 36 -136 72 -77 b 166 106 119 8 148 68 l 175 129 l 183 148 l 200 188 b 213 205 205 199 208 202 ', + }, + noteheadDiamondWhole: { + x_min: 0, + x_max: 432.828125, + ha: 442, + o: 'm 208 184 b 213 187 209 186 212 187 b 224 176 217 187 221 183 b 245 147 225 172 235 159 b 419 -1 288 90 347 38 b 431 -8 424 -4 431 -8 b 432 -12 432 -9 432 -11 b 430 -18 432 -13 432 -16 b 364 -61 424 -20 383 -47 b 225 -183 307 -102 250 -152 b 223 -187 224 -184 223 -187 b 220 -188 221 -188 220 -188 b 208 -176 216 -188 210 -184 b 187 -148 205 -173 197 -159 b 12 0 144 -90 84 -38 b 0 11 4 5 0 8 b 16 24 0 13 4 18 b 183 158 83 69 141 115 b 208 184 194 169 198 173 m 183 105 b 176 113 181 109 176 113 b 172 109 176 113 175 112 b 92 45 149 90 117 62 l 88 41 l 102 31 b 247 -105 160 -6 210 -55 l 254 -115 l 257 -112 l 269 -102 b 340 -45 287 -87 319 -61 l 344 -43 l 330 -33 b 183 105 272 6 221 54 ', + }, + noteheadDiamondHalf: { + x_min: 0, + x_max: 438.28125, + ha: 447, + o: 'm 212 190 b 219 191 213 191 216 191 b 236 176 225 191 228 190 b 419 18 277 105 341 49 b 436 5 431 13 434 11 b 438 -1 438 4 438 1 b 424 -16 438 -8 432 -13 b 356 -49 409 -20 379 -36 b 234 -180 306 -83 258 -133 b 219 -192 230 -188 224 -192 b 200 -176 213 -192 206 -187 b 9 -15 157 -102 89 -45 b 0 0 2 -12 0 -6 b 16 18 0 9 2 12 b 200 176 93 48 159 104 b 212 190 205 186 208 188 m 239 113 b 236 117 238 116 238 117 b 230 108 235 117 234 115 b 92 -15 196 58 140 8 b 88 -18 91 -16 88 -18 b 92 -20 88 -18 91 -19 b 198 -116 130 -43 166 -74 b 200 -117 200 -117 200 -117 b 201 -117 200 -117 201 -117 b 264 -43 212 -98 242 -62 b 345 15 288 -19 321 4 b 348 18 347 16 348 16 b 344 20 348 18 347 19 b 239 113 307 41 266 79 ', + }, + noteheadDiamondBlack: { + x_min: 0, + x_max: 432.828125, + ha: 442, + o: 'm 209 186 b 213 187 210 187 212 187 b 216 187 215 187 216 187 b 224 174 216 186 220 180 b 420 -1 269 105 338 43 b 432 -12 431 -8 432 -9 b 421 -23 432 -15 432 -16 b 228 -180 345 -70 264 -137 b 219 -188 221 -188 221 -188 l 219 -188 b 208 -177 215 -188 215 -188 b 10 1 163 -106 93 -44 b 0 11 0 6 0 8 b 10 22 0 13 0 15 b 202 179 87 69 167 136 b 209 186 206 183 209 186 ', + }, + augmentationDot: { + x_min: 0, + x_max: 133.390625, + ha: 136, + o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ', + }, + tremolo1: { + x_min: -206.890625, + x_max: 428.75, + ha: 438, + o: 'm 389 -351 b 394 -351 390 -351 393 -351 b 428 -385 413 -351 428 -367 b 428 -394 428 -388 428 -391 b 394 -428 426 -406 421 -410 l 332 -473 l 269 -516 l 205 -560 l 141 -603 l 77 -648 l 13 -692 l -50 -737 l -114 -780 l -145 -802 b -171 -813 -157 -810 -163 -813 b -175 -813 -172 -813 -174 -813 b -206 -777 -194 -811 -206 -795 b -202 -760 -206 -771 -205 -766 b -87 -675 -197 -752 -206 -757 l -34 -639 l 83 -557 l 145 -514 l 209 -470 l 272 -427 b 389 -351 375 -356 381 -352 ', + }, + flag8thUp: { + x_min: -24.5, + x_max: 317.140625, + ha: 324, + o: 'm -24 -161 l -24 -5 l -20 -5 b 0 -24 -9 -5 -2 -12 b 171 -315 21 -124 84 -233 b 317 -660 268 -406 317 -531 b 187 -1014 317 -782 274 -909 b 161 -1034 172 -1034 171 -1034 b 141 -1013 149 -1034 141 -1025 b 152 -991 141 -1004 142 -1002 b 266 -682 228 -899 266 -788 b 174 -430 266 -588 236 -498 b -23 -317 136 -388 66 -348 b -24 -161 -23 -316 -24 -285 ', + }, + flag8thDown: { + x_min: -21.78125, + x_max: 367.5, + ha: 375, + o: 'm 230 1031 b 238 1032 232 1032 235 1032 b 259 1014 245 1032 251 1027 b 367 662 330 906 367 782 b 364 602 367 641 367 621 b 232 317 352 488 304 384 b 57 120 155 245 103 187 b -1 18 31 84 6 40 b -19 4 -4 11 -12 4 l -21 4 l -21 159 l -21 315 l -16 315 b 96 335 10 315 62 324 b 315 695 227 380 315 527 b 313 738 315 709 314 724 b 224 991 304 825 273 916 b 216 1013 219 999 216 1007 b 230 1031 216 1021 220 1028 ', + }, + flag16thUp: { + x_min: -24.5, + x_max: 317.140625, + ha: 324, + o: 'm -24 -147 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 58 -123 6 -43 31 -86 b 196 -278 93 -173 134 -219 b 317 -570 274 -356 317 -460 b 294 -713 317 -617 308 -666 l 289 -724 l 294 -735 b 317 -873 308 -780 317 -827 b 235 -1132 317 -963 288 -1054 b 209 -1165 228 -1140 224 -1146 b 189 -1177 204 -1172 196 -1177 b 171 -1164 182 -1177 175 -1172 b 168 -1154 170 -1161 168 -1159 b 181 -1132 168 -1149 172 -1142 b 269 -891 238 -1064 269 -975 b 269 -881 269 -886 269 -884 b 262 -814 269 -857 265 -827 b 258 -800 261 -811 259 -806 b 142 -628 240 -731 198 -667 b -8 -589 112 -606 47 -589 b -20 -589 -13 -589 -19 -589 l -24 -589 l -24 -449 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 58 -424 6 -345 31 -388 b 194 -580 93 -476 136 -523 b 259 -660 221 -606 245 -635 b 261 -663 259 -662 261 -663 b 264 -656 262 -663 262 -660 b 269 -587 268 -632 269 -610 b 264 -521 269 -566 268 -544 b 262 -512 264 -517 262 -513 b 258 -498 261 -509 259 -503 b 142 -326 240 -428 198 -365 b -8 -287 112 -303 47 -288 b -20 -287 -13 -287 -19 -287 l -24 -287 l -24 -147 ', + }, + flag16thDown: { + x_min: -21.78125, + x_max: 362.0625, + ha: 369, + o: 'm 302 1031 b 308 1032 304 1032 307 1032 b 330 1016 318 1032 325 1027 b 362 867 351 970 362 920 b 340 738 362 824 353 780 l 336 727 l 340 717 b 362 591 355 677 362 634 b 257 323 362 496 325 401 b 204 272 243 306 227 290 b 20 56 129 206 66 133 b -1 18 12 44 0 22 b -19 4 -4 9 -12 4 l -21 4 l -21 140 l -21 276 l -12 277 b 167 333 61 288 127 309 b 319 598 262 388 319 491 b 311 664 319 620 317 642 l 310 673 l 304 664 b 204 548 279 620 250 587 b 20 333 129 483 66 409 b -1 292 12 320 0 298 b -19 280 -4 285 -12 280 l -21 280 l -21 416 l -21 552 l -12 553 b 167 609 61 564 127 585 b 319 874 264 666 319 770 b 294 992 319 914 311 954 b 288 1011 288 1004 288 1007 b 302 1031 288 1021 294 1028 ', + }, + flag32ndUp: { + x_min: -24.5, + x_max: 315.78125, + ha: 322, + o: 'm -24 -145 l -24 -5 l -20 -5 b 1 -26 -10 -5 -6 -9 b 175 -241 31 -86 96 -166 b 314 -548 259 -323 304 -420 b 315 -589 315 -555 315 -571 b 314 -630 315 -606 315 -623 b 298 -730 311 -664 306 -699 l 295 -742 l 296 -748 b 314 -850 304 -778 311 -813 b 315 -892 315 -857 315 -874 b 314 -932 315 -909 315 -925 b 298 -1032 311 -967 306 -1002 l 295 -1045 l 296 -1050 b 314 -1153 304 -1081 311 -1115 b 315 -1193 315 -1160 315 -1177 b 314 -1235 315 -1211 315 -1228 b 217 -1526 306 -1338 270 -1444 b 201 -1533 213 -1532 208 -1533 b 182 -1522 193 -1533 185 -1529 b 179 -1514 181 -1518 179 -1517 b 189 -1489 179 -1508 182 -1501 b 266 -1217 240 -1403 266 -1308 b 262 -1156 266 -1196 265 -1177 b 110 -907 247 -1043 190 -950 b 0 -889 87 -895 50 -889 l -1 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 1 -631 -10 -610 -6 -614 b 175 -846 31 -691 96 -771 b 259 -956 213 -884 236 -914 b 265 -966 262 -961 264 -966 b 265 -966 265 -966 265 -966 b 265 -953 265 -964 265 -959 b 266 -920 266 -943 266 -932 b 262 -853 266 -898 265 -873 b 110 -605 247 -741 190 -648 b 0 -587 87 -592 50 -587 l -1 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 1 -328 -10 -308 -6 -312 b 175 -544 31 -388 96 -469 b 259 -655 213 -581 236 -612 b 265 -663 262 -659 264 -663 b 265 -663 265 -663 265 -663 b 265 -650 265 -663 265 -657 b 266 -617 266 -641 266 -630 b 262 -551 266 -595 265 -570 b 110 -303 247 -438 190 -345 b 0 -284 87 -290 50 -284 l -1 -284 l -24 -284 l -24 -145 ', + }, + flag32ndDown: { + x_min: -21.78125, + x_max: 366.140625, + ha: 374, + o: 'm 276 1378 b 284 1379 279 1379 281 1379 b 306 1360 292 1379 298 1374 b 352 1247 326 1326 343 1286 b 366 1139 362 1213 366 1175 b 347 1009 366 1093 359 1049 l 344 1002 l 347 992 b 352 971 348 986 351 977 b 366 863 362 936 366 899 b 347 732 366 818 359 773 l 344 725 l 347 716 b 352 695 348 710 351 700 b 366 588 362 659 366 623 b 223 262 366 464 314 345 b 189 233 212 252 212 252 b 35 76 126 183 73 129 b -1 16 20 56 2 27 b -19 4 -4 9 -12 4 l -21 4 l -21 137 l -21 270 l -17 270 b 186 344 59 281 134 308 b 319 606 270 399 319 499 b 317 650 319 620 319 635 l 315 659 l 314 655 b 223 537 288 607 258 570 b 189 509 212 528 212 528 b 35 352 126 459 73 405 b -1 292 20 333 2 303 b -19 280 -4 285 -12 280 l -21 280 l -21 413 l -21 546 l -17 546 b 186 620 59 557 134 584 b 319 882 270 675 319 775 b 317 925 319 896 319 911 l 315 935 l 314 931 b 223 813 288 884 258 846 b 189 785 212 805 212 805 b 35 628 126 735 73 681 b -1 569 20 609 2 580 b -19 556 -4 562 -12 556 l -21 556 l -21 689 l -21 823 l -17 823 b 202 907 68 835 152 867 b 319 1157 280 968 319 1061 b 270 1338 319 1218 303 1281 b 262 1358 264 1349 262 1353 b 262 1364 262 1360 262 1363 b 276 1378 265 1371 269 1376 ', + }, + flag64thUp: { + x_min: -24.5, + x_max: 314.421875, + ha: 321, + o: 'm -24 -145 l -24 -5 l -20 -5 b 0 -23 -9 -5 -2 -12 b 27 -87 4 -38 14 -66 b 138 -220 53 -136 88 -177 b 235 -328 179 -255 208 -288 b 314 -592 287 -409 314 -501 b 292 -732 314 -639 307 -687 l 289 -742 l 294 -756 b 314 -896 307 -802 314 -849 b 292 -1035 314 -943 307 -991 l 289 -1045 l 294 -1057 b 314 -1197 307 -1104 314 -1152 b 292 -1338 314 -1246 307 -1292 l 289 -1347 l 294 -1360 b 314 -1500 307 -1407 314 -1454 b 273 -1689 314 -1565 300 -1628 b 250 -1712 265 -1710 261 -1712 b 228 -1691 236 -1712 228 -1704 l 228 -1685 l 234 -1675 b 270 -1507 258 -1621 270 -1564 b 98 -1193 270 -1381 209 -1261 b 40 -1174 76 -1179 58 -1174 b -10 -1189 24 -1174 8 -1178 b -20 -1192 -14 -1192 -16 -1192 l -24 -1192 l -24 -1052 l -24 -913 l -20 -913 b 0 -931 -9 -913 -2 -920 b 27 -995 4 -946 14 -974 b 138 -1128 53 -1043 88 -1085 b 257 -1275 190 -1172 228 -1220 b 262 -1283 259 -1279 262 -1283 l 262 -1283 b 269 -1249 264 -1282 268 -1260 b 270 -1206 270 -1233 270 -1220 b 98 -891 270 -1075 206 -957 b 40 -871 76 -877 58 -871 b -10 -886 24 -871 8 -875 b -20 -889 -14 -889 -16 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 0 -628 -9 -610 -2 -617 b 27 -692 4 -644 14 -671 b 138 -825 53 -741 88 -782 b 257 -973 190 -870 228 -917 b 262 -981 259 -977 262 -981 l 262 -981 b 269 -946 264 -979 268 -957 b 270 -903 270 -931 270 -917 b 98 -588 270 -774 206 -655 b 40 -569 76 -574 58 -569 b -10 -584 24 -569 8 -574 b -20 -587 -14 -587 -16 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 0 -326 -9 -308 -2 -315 b 27 -390 4 -341 14 -369 b 138 -523 53 -438 88 -480 b 257 -670 190 -567 228 -614 b 262 -678 259 -674 262 -678 b 262 -678 262 -678 262 -678 b 269 -644 264 -677 268 -656 b 270 -601 270 -628 270 -614 b 98 -285 270 -471 206 -352 b 40 -266 76 -273 58 -266 b -10 -281 24 -266 8 -272 b -20 -284 -14 -284 -16 -284 l -24 -284 l -24 -145 ', + }, + flag64thDown: { + x_min: -21.78125, + x_max: 367.5, + ha: 375, + o: 'm 259 1553 b 265 1553 261 1553 264 1553 b 288 1540 272 1553 277 1550 b 367 1351 340 1493 367 1424 b 336 1221 367 1308 357 1263 l 332 1211 l 333 1208 b 367 1077 356 1170 367 1124 b 336 945 367 1032 357 986 l 332 935 l 333 932 b 367 800 356 893 367 848 b 336 669 367 756 357 710 l 332 659 l 333 656 b 367 523 356 617 367 571 b 345 412 367 485 360 446 b 231 273 322 356 284 310 b -1 19 121 195 27 93 b -17 4 -4 11 -10 5 l -21 4 l -21 134 l -21 265 l -17 265 b 133 291 20 265 96 278 b 318 537 245 328 318 433 b 307 603 318 559 315 582 b 303 614 304 612 304 614 b 298 609 302 614 300 613 b 231 549 281 589 258 567 b -1 295 121 471 27 369 b -17 280 -4 287 -10 281 l -21 280 l -21 410 l -21 541 l -17 541 b 133 567 20 541 96 555 b 318 813 245 605 318 709 b 307 880 318 835 315 859 b 303 891 304 888 304 891 b 298 885 302 891 300 888 b 231 825 281 866 258 843 b -1 571 121 748 27 645 b -17 556 -4 563 -10 557 l -21 556 l -21 687 l -21 817 l -17 817 b 133 843 20 817 96 830 b 318 1089 245 881 318 985 b 307 1156 318 1111 315 1134 b 303 1167 304 1164 304 1167 b 298 1161 302 1167 300 1164 b 231 1102 281 1140 258 1120 b -1 848 121 1024 27 921 b -17 832 -4 839 -10 834 l -21 832 l -21 963 l -21 1093 l -17 1093 b 114 1113 12 1093 78 1103 b 313 1314 215 1142 289 1218 b 318 1364 317 1331 318 1347 b 255 1511 318 1422 295 1478 b 243 1532 247 1519 243 1525 b 259 1553 243 1540 250 1550 ', + }, + flag128thUp: { + x_min: -24.5, + x_max: 313.0625, + ha: 319, + o: 'm -24 -133 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 142 -213 13 -61 74 -144 b 258 -376 196 -269 230 -315 b 313 -605 295 -449 313 -528 b 292 -742 313 -652 306 -699 b 288 -752 289 -748 288 -752 b 288 -752 288 -752 288 -752 b 292 -764 289 -753 291 -757 b 313 -907 306 -811 313 -860 b 292 -1045 313 -954 306 -1002 b 288 -1054 289 -1050 288 -1054 b 288 -1054 288 -1054 288 -1054 b 292 -1067 289 -1054 291 -1060 b 313 -1210 306 -1113 313 -1161 b 292 -1346 313 -1257 306 -1304 b 288 -1357 289 -1353 288 -1357 b 288 -1357 288 -1357 288 -1357 b 292 -1368 289 -1357 291 -1363 b 313 -1512 306 -1415 313 -1464 b 292 -1648 313 -1560 306 -1605 b 288 -1660 289 -1654 288 -1660 b 288 -1660 288 -1660 288 -1660 b 292 -1671 289 -1660 291 -1665 b 313 -1814 306 -1719 313 -1766 b 250 -2040 313 -1897 291 -1977 b 232 -2062 238 -2057 236 -2059 b 221 -2065 230 -2063 225 -2065 b 200 -2045 210 -2065 201 -2057 b 200 -2043 200 -2044 200 -2044 b 208 -2026 200 -2037 202 -2034 b 269 -1826 249 -1966 269 -1897 b 153 -1544 269 -1726 230 -1625 b -9 -1472 115 -1506 58 -1481 b -21 -1471 -14 -1471 -19 -1471 l -24 -1471 l -24 -1343 l -24 -1215 l -20 -1215 b -1 -1229 -12 -1215 -4 -1221 b 142 -1424 13 -1270 74 -1353 b 257 -1582 196 -1478 228 -1524 b 264 -1594 261 -1589 264 -1594 l 264 -1594 b 265 -1582 264 -1594 264 -1589 b 270 -1525 268 -1562 270 -1544 b 153 -1243 270 -1424 228 -1321 b -9 -1170 115 -1203 58 -1178 b -21 -1168 -14 -1170 -19 -1168 l -24 -1168 l -24 -1041 l -24 -913 l -20 -913 b -1 -927 -12 -913 -4 -918 b 142 -1121 13 -967 74 -1050 b 257 -1281 196 -1175 228 -1221 b 264 -1292 261 -1286 264 -1292 l 264 -1292 b 265 -1279 264 -1292 264 -1286 b 270 -1222 268 -1261 270 -1242 b 153 -941 270 -1121 228 -1018 b -9 -867 115 -900 58 -875 b -21 -866 -14 -867 -19 -866 l -24 -866 l -24 -738 l -24 -610 l -20 -610 b -1 -624 -12 -610 -4 -616 b 142 -818 13 -664 74 -749 b 257 -978 196 -873 228 -918 b 264 -989 261 -984 264 -989 l 264 -989 b 265 -977 264 -989 264 -984 b 270 -920 268 -959 270 -939 b 153 -638 270 -818 228 -716 b -9 -564 115 -598 58 -573 b -21 -563 -14 -564 -19 -563 l -24 -563 l -24 -435 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 142 -516 13 -363 74 -446 b 257 -675 196 -571 228 -616 b 264 -687 261 -681 264 -687 l 264 -687 b 265 -674 264 -687 264 -681 b 270 -617 268 -656 270 -637 b 153 -335 270 -516 228 -413 b -9 -262 115 -295 58 -270 b -21 -260 -14 -262 -19 -260 l -24 -260 l -24 -133 ', + }, + flag128thDown: { + x_min: -21.78125, + x_max: 367.5, + ha: 375, + o: 'm 276 1900 b 284 1901 279 1900 281 1901 b 306 1883 291 1901 298 1896 b 367 1686 347 1825 367 1757 b 343 1558 367 1643 359 1600 l 338 1549 l 343 1537 b 367 1411 359 1497 367 1454 b 343 1282 367 1367 359 1324 l 338 1272 l 343 1261 b 367 1135 359 1221 367 1178 b 343 1007 367 1090 359 1047 l 338 996 l 343 985 b 367 859 359 945 367 902 b 343 731 367 814 359 771 l 338 720 l 343 709 b 367 582 359 667 367 626 b 289 362 367 503 340 426 b 239 312 276 345 259 330 b 29 77 152 237 76 152 b -1 18 14 54 2 30 b -19 4 -4 11 -12 4 l -21 4 l -21 133 l -20 260 l -13 262 b 98 299 17 269 62 284 b 111 305 103 302 110 305 b 167 334 123 310 156 327 b 319 595 264 391 319 491 b 313 659 319 616 318 638 b 310 667 311 664 311 667 b 307 663 310 667 308 666 b 240 588 289 637 269 614 b 16 331 141 505 62 413 b -1 294 8 316 1 302 b -19 280 -4 287 -12 280 l -21 280 l -21 408 l -20 537 l -13 538 b 98 576 17 545 62 560 b 111 581 103 578 110 581 b 167 610 123 587 156 603 b 319 871 264 667 319 767 b 313 935 319 892 318 913 b 310 942 311 941 311 942 b 307 939 310 942 308 941 b 240 864 289 913 269 889 b 16 607 141 781 62 689 b -1 570 8 592 1 578 b -19 556 -4 563 -12 556 l -21 556 l -21 684 l -20 813 l -13 814 b 98 852 17 821 62 836 b 111 857 103 855 110 857 b 167 886 123 863 156 880 b 319 1147 264 943 319 1043 b 313 1211 319 1168 318 1189 b 310 1218 311 1217 311 1218 b 307 1215 310 1218 308 1217 b 240 1140 289 1188 269 1165 b 16 884 141 1057 62 966 b -1 846 8 868 1 855 b -19 832 -4 839 -12 832 l -21 832 l -21 960 l -20 1089 l -13 1090 b 98 1128 17 1097 62 1111 b 111 1134 103 1131 110 1134 b 167 1163 123 1139 156 1156 b 319 1424 264 1220 319 1320 b 313 1486 319 1444 318 1465 b 310 1494 311 1493 311 1494 b 307 1492 310 1494 308 1493 b 240 1417 289 1464 269 1442 b 16 1160 141 1333 62 1242 b -1 1121 8 1145 1 1131 b -19 1109 -4 1115 -12 1109 l -21 1109 l -21 1236 l -20 1365 l -13 1367 b 98 1404 17 1374 62 1388 b 111 1410 103 1407 110 1410 b 250 1508 172 1437 215 1467 b 319 1701 296 1564 319 1633 b 270 1859 319 1757 303 1814 b 262 1882 265 1868 262 1875 b 276 1900 262 1890 266 1896 ', + }, + accidentalFlat: { + x_min: -21.78125, + x_max: 251.8125, + ha: 257, + o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ', + }, + accidentalNatural: { + x_min: 0, + x_max: 239.5625, + ha: 244, + o: 'm 10 460 b 20 462 13 462 14 462 b 39 449 28 462 35 458 l 40 446 l 40 326 b 40 205 40 259 40 205 b 127 227 40 205 80 215 b 220 249 196 244 213 249 b 227 247 224 249 225 248 b 238 237 231 245 235 241 l 239 233 l 239 -106 l 239 -448 l 238 -451 b 219 -463 234 -459 225 -463 b 198 -451 210 -463 202 -459 l 197 -448 l 197 -324 b 197 -201 197 -248 197 -201 b 110 -223 196 -201 157 -210 b 17 -245 42 -240 24 -245 b 10 -242 13 -245 13 -244 b 0 -233 6 -241 2 -237 l 0 -230 l 0 108 l 0 446 l 0 449 b 10 460 2 453 6 458 m 197 22 b 197 70 197 41 197 58 b 196 116 197 113 197 116 l 196 116 b 118 97 196 116 160 106 l 40 77 l 40 -18 b 40 -112 40 -69 40 -112 l 119 -93 l 197 -73 l 197 22 ', + }, + accidentalSharp: { + x_min: 0, + x_max: 323.9375, + ha: 331, + o: 'm 217 535 b 225 537 220 537 221 537 b 245 524 235 537 242 533 l 246 521 l 247 390 l 247 258 l 273 265 b 306 270 288 269 299 270 b 322 259 315 270 319 267 b 323 208 323 256 323 233 b 322 158 323 184 323 159 b 288 140 318 148 315 147 b 247 130 254 131 247 130 b 247 65 247 130 247 104 b 247 20 247 51 247 36 l 247 -88 l 273 -81 b 306 -76 289 -77 299 -76 b 318 -81 311 -76 315 -77 b 323 -123 323 -87 323 -86 l 323 -138 l 323 -154 b 318 -195 323 -191 323 -190 b 269 -210 314 -199 315 -199 b 249 -216 259 -213 250 -216 l 247 -216 l 247 -349 l 246 -483 l 245 -487 b 225 -499 242 -495 234 -499 b 206 -487 219 -499 210 -495 l 205 -483 l 205 -355 l 205 -227 l 204 -227 l 181 -233 l 138 -244 b 117 -249 127 -247 117 -249 b 115 -385 115 -249 115 -256 l 115 -523 l 114 -526 b 95 -538 110 -534 102 -538 b 74 -526 87 -538 78 -534 l 73 -523 l 73 -391 b 72 -260 73 -269 73 -260 b 72 -260 72 -260 72 -260 b 19 -273 61 -263 23 -273 b 0 -260 10 -273 4 -267 b 0 -209 0 -256 0 -256 l 0 -162 l 1 -158 b 61 -134 5 -148 5 -148 l 73 -131 l 73 -22 b 72 86 73 79 73 86 b 72 86 72 86 72 86 b 19 74 61 83 23 74 b 0 86 10 74 4 79 b 0 137 0 90 0 90 l 0 184 l 1 188 b 61 212 5 198 5 198 l 73 215 l 73 348 l 73 481 l 74 485 b 95 498 78 492 87 498 b 103 495 98 498 100 496 b 114 485 107 494 111 489 l 115 481 l 115 353 l 115 226 l 121 226 b 159 235 123 227 141 231 l 198 247 l 205 248 l 205 384 l 205 521 l 206 524 b 217 535 209 528 212 533 m 205 9 b 205 119 205 70 205 119 l 205 119 b 182 113 204 119 194 116 l 138 102 b 117 97 127 99 117 97 b 115 -12 115 97 115 91 l 115 -122 l 121 -120 b 159 -111 123 -119 141 -115 l 198 -101 l 205 -98 l 205 9 ', + }, + accidentalDoubleSharp: { + x_min: 0, + x_max: 367.5, + ha: 375, + o: 'm 0 124 l 0 187 l 61 187 l 122 187 l 122 138 l 122 91 l 153 61 l 183 30 l 213 61 l 243 91 l 243 138 l 243 187 l 306 187 l 367 187 l 367 124 l 367 61 l 321 61 l 274 61 l 243 30 l 213 0 l 243 -31 l 274 -62 l 321 -62 l 367 -62 l 367 -124 l 367 -188 l 306 -188 l 243 -188 l 243 -140 l 243 -93 l 213 -62 l 183 -31 l 153 -62 l 122 -93 l 122 -140 l 122 -188 l 61 -188 l 0 -188 l 0 -124 l 0 -62 l 46 -62 l 92 -62 l 123 -31 l 153 0 l 123 30 l 92 61 l 46 61 l 0 61 l 0 124 ', + }, + accidentalDoubleFlat: { + x_min: -21.78125, + x_max: 483.1875, + ha: 493, + o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 179 164 199 187 192 l 210 176 l 210 396 l 210 617 l 212 621 b 231 632 216 628 223 632 b 250 620 239 632 247 628 b 251 383 251 616 251 616 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 ', + }, + accidentalParensLeft: { + x_min: -166.0625, + x_max: -25.859375, + ha: 0, + o: 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ', + }, + accidentalParensRight: { + x_min: 25.859375, + x_max: 164.6875, + ha: 168, + o: 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ', + }, + accidentalQuarterToneFlatStein: { + x_min: 0, + x_max: 272.21875, + ha: 278, + o: 'm 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 ', + }, + accidentalThreeQuarterTonesFlatZimmermann: { + x_min: 0, + x_max: 607.0625, + ha: 619, + o: 'm 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 m 347 631 b 353 632 348 632 351 632 b 374 620 363 632 371 628 b 375 383 375 616 375 616 l 375 148 l 377 151 b 492 199 415 183 454 199 b 537 191 507 199 522 197 b 607 84 582 176 607 134 b 583 0 607 58 598 29 b 455 -142 562 -40 533 -72 l 378 -215 b 355 -229 364 -229 362 -229 b 334 -216 345 -229 337 -224 l 333 -212 l 333 201 l 333 616 l 334 620 b 347 631 337 624 341 630 m 465 131 b 451 133 461 133 455 133 b 445 133 449 133 446 133 b 379 87 419 129 396 113 l 375 80 l 375 -37 l 375 -156 l 378 -152 b 499 81 451 -72 499 20 l 499 83 b 465 131 499 113 490 126 ', + }, + accidentalQuarterToneSharpStein: { + x_min: 0, + x_max: 193.28125, + ha: 197, + o: 'm 85 514 b 95 517 88 517 89 517 b 114 505 103 517 110 513 l 115 502 l 115 376 b 115 249 115 306 115 249 b 141 258 117 249 127 252 l 167 266 l 172 266 b 190 254 181 265 187 262 l 193 251 l 193 202 l 193 188 b 187 147 193 149 191 152 b 147 130 183 142 182 141 l 115 119 l 115 9 b 115 -99 115 -51 115 -99 b 141 -91 115 -99 127 -95 b 171 -81 166 -81 167 -81 l 171 -81 b 191 -94 181 -81 189 -87 b 193 -142 191 -97 193 -120 b 191 -195 193 -167 191 -194 b 125 -227 187 -205 187 -204 l 115 -230 l 115 -366 l 115 -503 l 114 -506 b 95 -519 110 -514 102 -519 b 74 -506 87 -519 78 -514 l 73 -503 l 73 -374 b 73 -245 73 -260 73 -245 b 73 -245 73 -245 73 -245 b 55 -252 72 -245 63 -249 l 32 -260 b 19 -263 27 -262 23 -263 b 4 -256 13 -263 8 -260 b 0 -215 0 -251 0 -254 b 0 -199 0 -210 0 -206 l 0 -152 l 1 -149 b 8 -140 2 -145 5 -141 b 42 -127 9 -140 24 -133 l 73 -116 l 73 -5 b 73 23 73 4 73 15 b 73 105 73 70 73 105 b 49 97 73 105 61 101 b 17 88 32 91 23 88 b 4 95 10 88 8 91 b 0 137 0 101 0 98 b 0 151 0 141 0 145 l 0 199 l 1 202 b 43 224 5 212 5 212 l 73 234 l 73 367 l 73 502 l 74 505 b 85 514 77 509 81 513 ', + }, + accidentalThreeQuarterTonesSharpStein: { + x_min: -1.359375, + x_max: 455.96875, + ha: 465, + o: 'm 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 ', + }, + accidentalBuyukMucennebFlat: { + x_min: -171.5, + x_max: 251.8125, + ha: 257, + o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ', + }, + accidentalBakiyeFlat: { + x_min: -176.9375, + x_max: 251.8125, + ha: 257, + o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ', + }, + accidentalKomaSharp: { + x_min: -1.359375, + x_max: 455.96875, + ha: 465, + o: 'm 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 ', + }, + accidentalKucukMucennebSharp: { + x_min: -1.359375, + x_max: 255.890625, + ha: 261, + o: 'm 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 ', + }, + articAccentAbove: { + x_min: -348.4375, + x_max: 24.5, + ha: 25, + o: 'm -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 ', + }, + articAccentBelow: { + x_min: -348.4375, + x_max: 24.5, + ha: 25, + o: 'm -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 ', + }, + articTenutoAbove: { + x_min: 0, + x_max: 318.5, + ha: 325, + o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ', + }, + articTenutoBelow: { + x_min: 0, + x_max: 318.5, + ha: 325, + o: 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ', + }, + articStaccatoAbove: { + x_min: 0, + x_max: 133.390625, + ha: 136, + o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ', + }, + articStaccatoBelow: { + x_min: 0, + x_max: 133.390625, + ha: 136, + o: 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ', + }, + articStaccatissimoAbove: { + x_min: -73.5, + x_max: 72.140625, + ha: 74, + o: 'm -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 ', + }, + articStaccatissimoBelow: { + x_min: -73.5, + x_max: 72.140625, + ha: 74, + o: 'm -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 ', + }, + articMarcatoAbove: { + x_min: -149.71875, + x_max: 148.359375, + ha: 151, + o: 'm -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 ', + }, + articMarcatoBelow: { + x_min: -149.71875, + x_max: 148.359375, + ha: 151, + o: 'm -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 ', + }, + fermataAbove: { + x_min: -442.359375, + x_max: 441, + ha: 450, + o: 'm -31 487 b -1 488 -21 488 -10 488 b 434 104 216 488 397 330 b 441 27 438 79 441 47 b 439 12 441 20 439 15 b 419 0 435 4 427 0 b 404 5 413 0 408 1 b 398 30 400 11 398 13 b 0 351 390 213 213 351 b -59 348 -20 351 -39 349 b -400 30 -251 324 -393 191 b -405 5 -400 13 -401 11 b -420 0 -409 1 -415 0 b -441 12 -428 0 -436 4 b -442 27 -441 15 -442 20 b -435 104 -442 47 -439 79 b -31 487 -401 316 -235 474 m -13 131 b -1 133 -9 133 -5 133 b 51 105 19 133 39 123 b 61 70 58 95 61 83 b 51 34 61 58 58 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -57 38 -62 54 b -13 131 -62 98 -44 124 ', + }, + fermataBelow: { + x_min: -441, + x_max: 439.640625, + ha: 449, + o: 'm -428 -2 b -421 0 -427 -1 -424 0 b -406 -6 -416 0 -409 -2 b -400 -31 -401 -12 -400 -15 b -1 -352 -392 -215 -215 -352 b 58 -349 19 -352 38 -351 b 398 -31 250 -326 392 -192 b 404 -6 398 -15 400 -12 b 419 -1 408 -2 413 -1 b 439 -13 427 -1 435 -5 b 439 -29 439 -16 439 -22 b 434 -105 439 -48 438 -80 b 0 -489 397 -333 213 -489 b -68 -484 -23 -489 -44 -488 b -441 -36 -280 -452 -436 -263 b -441 -30 -441 -34 -441 -31 b -428 -2 -441 -11 -439 -5 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -57 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ', + }, + fermataLongAbove: { + x_min: -390.640625, + x_max: 389.28125, + ha: 397, + o: 'm -378 502 l -374 503 l 0 503 l 372 503 l 377 502 b 387 491 381 499 385 496 l 389 488 l 389 251 l 389 15 l 387 12 b 367 0 383 4 375 0 b 348 12 360 0 352 4 l 347 15 l 347 174 l 347 335 l 0 335 l -348 335 l -348 174 l -348 15 l -349 12 b -368 0 -353 4 -362 0 b -389 12 -377 0 -385 4 l -390 15 l -390 251 l -390 488 l -389 491 b -378 502 -386 496 -382 499 m -13 131 b -1 133 -9 133 -5 133 b 50 105 19 133 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -58 38 -62 55 b -13 131 -62 98 -44 124 ', + }, + fermataLongBelow: { + x_min: -390.640625, + x_max: 389.28125, + ha: 397, + o: 'm -378 -2 b -368 -1 -375 -1 -374 -1 b -349 -13 -360 -1 -353 -5 l -348 -16 l -348 -176 l -348 -337 l 0 -337 l 347 -337 l 347 -176 l 347 -16 l 348 -13 b 367 0 352 -5 360 0 b 387 -13 375 0 383 -5 l 389 -16 l 389 -252 l 389 -489 l 387 -492 b 377 -503 385 -498 381 -501 l 372 -505 l 0 -505 l -374 -505 l -378 -503 b -389 -492 -382 -501 -386 -498 l -390 -489 l -390 -252 l -390 -16 l -389 -13 b -378 -2 -386 -8 -382 -4 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -58 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ', + }, + fermataVeryLongAbove: { + x_min: -390.640625, + x_max: 389.28125, + ha: 397, + o: 'm -378 573 l -374 576 l 0 576 l 372 576 l 377 573 b 387 563 381 571 385 567 l 389 559 l 389 287 l 389 15 l 387 12 b 367 0 383 4 375 0 b 348 12 360 0 352 4 l 347 15 l 347 210 l 347 406 l 0 406 l -348 406 l -348 210 l -348 15 l -349 12 b -368 0 -353 4 -362 0 b -389 12 -377 0 -385 4 l -390 15 l -390 287 l -390 559 l -389 563 b -378 573 -386 567 -382 571 m -274 337 l -270 338 l 0 338 l 269 338 l 273 337 b 284 326 279 334 281 330 l 285 323 l 285 169 l 285 15 l 284 12 b 265 -1 280 4 272 -1 b 245 12 257 -1 249 4 l 245 15 l 243 108 l 243 201 l 0 201 l -245 201 l -245 108 l -245 15 l -246 12 b -266 -1 -250 4 -258 -1 b -285 12 -273 -1 -281 4 l -287 15 l -287 169 l -287 323 l -285 326 b -274 337 -283 330 -280 334 m -13 131 b -1 133 -9 133 -5 133 b 50 105 19 133 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -58 38 -62 55 b -13 131 -62 98 -44 124 ', + }, + fermataVeryLongBelow: { + x_min: -390.640625, + x_max: 389.28125, + ha: 397, + o: 'm -378 -2 b -368 -1 -375 -1 -374 -1 b -349 -13 -360 -1 -353 -5 l -348 -16 l -348 -212 l -348 -408 l 0 -408 l 347 -408 l 347 -212 l 347 -16 l 348 -13 b 367 0 352 -5 360 0 b 387 -13 375 0 383 -5 l 389 -16 l 389 -288 l 389 -560 l 387 -564 b 377 -574 385 -569 381 -573 l 372 -577 l 0 -577 l -374 -577 l -378 -574 b -389 -564 -382 -573 -386 -569 l -390 -560 l -390 -288 l -390 -16 l -389 -13 b -378 -2 -386 -8 -382 -4 m -274 -2 b -266 -1 -272 -1 -270 -1 b -246 -13 -257 -1 -250 -5 l -245 -16 l -245 -109 l -245 -202 l 0 -202 l 243 -202 l 243 -109 l 245 -16 l 245 -13 b 265 0 249 -5 257 0 b 284 -13 272 0 280 -5 l 285 -16 l 285 -170 l 285 -324 l 284 -327 b 273 -338 281 -331 279 -335 l 269 -340 l 0 -340 l -270 -340 l -274 -338 b -285 -327 -280 -335 -283 -331 l -287 -324 l -287 -170 l -287 -16 l -285 -13 b -274 -2 -283 -8 -280 -4 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -58 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ', + }, + fermataShortAbove: { + x_min: -390.640625, + x_max: 389.28125, + ha: 397, + o: 'm -9 650 b -1 652 -6 650 -4 652 b 19 639 6 652 13 648 l 23 631 b 28 623 24 628 27 626 l 34 614 l 39 606 l 43 598 l 49 588 l 54 580 l 59 571 l 65 563 l 69 555 l 74 546 l 80 537 l 85 528 b 89 520 87 526 89 523 l 95 512 l 100 503 l 106 494 l 111 487 l 115 478 l 121 470 l 126 462 l 130 453 l 136 445 l 141 437 l 147 427 l 151 419 l 156 410 l 161 402 l 167 394 l 172 385 l 176 376 b 182 367 179 374 181 370 l 187 359 l 193 351 l 198 342 l 202 334 l 208 326 l 212 317 l 217 309 l 223 301 l 228 292 l 234 284 l 238 274 l 243 266 l 249 258 l 254 249 l 259 241 l 264 233 l 269 224 b 274 216 270 222 273 217 l 280 206 l 285 198 l 295 180 l 299 174 l 304 165 l 310 156 l 315 148 l 321 140 l 325 131 l 330 123 l 336 113 l 341 105 l 347 97 l 351 88 l 356 80 l 360 72 b 364 66 362 70 363 68 b 370 58 366 65 368 61 l 379 41 b 389 19 386 31 389 24 b 382 4 389 13 386 8 b 347 0 377 0 378 0 b 337 0 344 0 340 0 b 336 0 336 0 336 0 b 287 11 294 0 294 0 l 281 19 l 276 27 l 272 37 l 266 45 l 261 54 l 255 62 l 250 70 l 246 79 l 240 87 l 235 97 l 230 105 l 224 113 l 220 122 l 215 130 l 209 140 l 204 148 l 200 155 l 194 163 b 189 172 193 165 191 169 l 185 180 l 179 188 l 174 198 l 168 206 l 163 215 l 159 223 l 153 231 l 148 240 l 142 249 l 138 258 l 133 266 l 127 274 l 122 283 l 117 292 l 111 301 l 107 308 l 102 316 b 98 324 102 317 99 322 l 92 333 l 87 341 l 81 349 l 77 359 l 72 367 l 66 376 l 61 384 l 55 392 l 51 401 l 46 410 l 40 419 l 35 427 l 31 435 l 24 444 l 20 453 l 14 460 l 10 469 b 5 477 9 470 6 474 l 0 485 l -5 494 l -9 502 l -14 512 b -20 519 -16 513 -19 517 l -24 526 l -28 534 b -31 537 -29 535 -31 537 b -35 533 -32 537 -32 535 l -88 444 l -187 280 l -285 117 l -343 23 b -362 1 -352 6 -356 2 b -368 0 -364 0 -367 0 b -390 20 -381 0 -390 8 l -390 20 b -359 77 -390 27 -390 27 l -80 539 l -25 631 b -9 650 -17 644 -13 648 m -13 133 b -1 134 -9 133 -5 134 b 50 105 19 134 39 123 b 61 70 57 95 61 83 b 50 34 61 58 57 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 70 -57 40 -62 55 b -13 133 -62 98 -44 126 ', + }, + fermataShortBelow: { + x_min: -390.640625, + x_max: 389.28125, + ha: 397, + o: 'm -377 -1 b -368 0 -375 -1 -372 0 b -362 -1 -366 0 -363 -1 b -343 -24 -356 -4 -352 -8 l -285 -119 l -187 -280 l -88 -444 l -35 -533 b -31 -538 -32 -537 -32 -538 b -28 -534 -31 -538 -29 -537 l -23 -526 l -19 -517 l -13 -509 l -8 -501 l -2 -492 l 2 -483 l 6 -476 l 17 -458 l 23 -449 l 32 -433 l 38 -424 l 42 -416 l 47 -408 l 53 -399 l 58 -391 l 63 -381 l 68 -373 l 73 -365 l 78 -356 l 84 -348 l 89 -340 l 93 -330 l 99 -322 l 104 -315 l 114 -297 l 125 -280 l 129 -272 l 134 -263 l 140 -255 l 145 -247 l 151 -238 l 155 -230 l 160 -220 l 166 -212 l 171 -204 l 176 -195 l 181 -187 l 186 -177 l 191 -169 l 196 -162 l 201 -154 l 206 -144 l 217 -127 l 221 -119 l 227 -111 l 232 -102 l 238 -94 l 242 -86 l 247 -77 l 253 -69 l 258 -59 l 262 -51 l 268 -43 l 273 -34 l 279 -26 l 283 -18 b 321 -1 292 -2 292 -1 b 338 -1 326 -1 332 -1 b 382 -6 378 -1 375 -1 b 389 -20 386 -9 389 -15 b 382 -38 389 -26 386 -31 l 378 -47 l 372 -55 l 367 -63 l 362 -72 l 356 -80 l 351 -90 l 347 -98 l 341 -106 l 336 -115 l 330 -123 l 325 -131 l 321 -141 l 315 -149 l 310 -158 l 304 -166 l 299 -174 b 295 -183 298 -177 296 -181 l 289 -191 l 285 -199 l 280 -208 l 274 -216 l 269 -224 l 264 -233 l 259 -242 l 254 -251 l 249 -259 l 243 -267 l 238 -276 l 234 -284 l 228 -292 l 223 -302 l 217 -310 l 213 -319 l 208 -327 b 202 -335 206 -330 204 -334 l 197 -344 l 193 -351 l 187 -360 l 182 -369 l 176 -377 l 172 -385 l 167 -394 l 161 -403 l 156 -412 l 152 -420 l 147 -428 l 141 -437 l 136 -445 l 130 -455 l 126 -463 l 121 -471 l 115 -480 b 110 -488 114 -483 111 -487 l 106 -496 l 100 -503 l 96 -512 l 89 -521 l 85 -530 l 80 -538 l 74 -546 l 69 -555 l 65 -564 l 59 -573 l 54 -581 l 49 -589 l 43 -598 l 39 -606 l 34 -616 l 28 -624 l 23 -632 b 19 -641 21 -635 20 -638 b 0 -653 14 -649 8 -653 b -25 -631 -10 -653 -14 -649 l -80 -541 l -359 -79 b -389 -29 -375 -52 -389 -30 b -390 -22 -389 -26 -390 -24 b -377 -1 -390 -13 -385 -5 m -13 -9 b -1 -8 -9 -8 -5 -8 b 51 -36 19 -8 39 -19 b 61 -72 58 -47 61 -59 b 51 -106 61 -84 58 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -127 b -62 -72 -57 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ', + }, + breathMarkComma: { + x_min: -1.359375, + x_max: 193.28125, + ha: 197, + o: 'm 78 233 b 87 233 81 233 84 233 b 187 140 132 233 174 195 b 193 102 190 127 193 115 b 43 -113 193 22 136 -62 b 27 -119 36 -116 31 -119 b 19 -108 21 -119 19 -115 b 29 -97 19 -102 20 -101 b 102 13 73 -72 102 -27 b 92 51 102 26 98 40 l 91 54 l 84 54 b 8 104 53 54 21 74 b -1 142 1 116 -1 130 b 78 233 -1 187 31 227 ', + }, + breathMarkUpbow: { + x_min: -170.140625, + x_max: 168.78125, + ha: 172, + o: 'm -160 567 b -122 567 -159 567 -149 567 l -87 567 l -84 566 b -74 553 -78 563 -77 560 b -20 366 -73 551 -49 466 b 31 186 8 267 31 186 b 85 371 31 186 55 269 b 140 559 114 473 138 557 b 153 567 141 564 148 567 b 168 559 159 567 166 564 b 168 555 168 557 168 557 b 92 281 168 548 159 513 b 14 13 50 134 14 13 b 0 0 14 6 6 0 b -17 15 -8 0 -17 8 b -93 283 -17 15 -51 136 b -170 552 -166 533 -170 548 b -170 553 -170 552 -170 552 b -160 567 -170 560 -167 564 ', + }, + caesura: { + x_min: 0, + x_max: 622.03125, + ha: 635, + o: 'm 398 417 b 406 419 401 419 404 419 b 427 398 417 419 427 409 b 427 391 427 395 427 392 b 34 -274 424 385 38 -272 b 20 -280 29 -278 25 -280 b 0 -259 9 -280 0 -270 b 0 -252 0 -256 0 -254 b 393 413 2 -247 389 410 b 398 417 394 415 397 416 m 592 417 b 600 419 594 419 597 419 b 622 398 611 419 622 409 b 620 391 622 395 620 392 b 227 -274 617 385 231 -272 b 213 -280 223 -278 219 -280 b 193 -259 202 -280 193 -270 b 194 -252 193 -256 193 -254 b 586 413 196 -247 582 410 b 592 417 588 415 590 416 ', + }, + caesuraCurved: { + x_min: 0, + x_max: 503.609375, + ha: 514, + o: 'm 274 430 b 277 430 276 430 277 430 b 310 394 296 430 310 415 b 308 383 310 391 308 387 b 306 367 307 381 307 374 b 236 120 298 305 272 210 b 40 -273 189 -5 125 -134 b 20 -287 35 -283 27 -287 b 5 -281 14 -287 9 -285 b 0 -267 1 -277 0 -273 b 9 -242 0 -262 2 -255 b 246 395 137 -12 232 242 b 274 430 249 416 257 427 m 468 430 b 472 430 469 430 470 430 b 503 394 490 430 503 415 b 502 383 503 391 503 387 b 499 367 502 381 500 374 b 431 120 491 305 465 210 b 234 -273 382 -5 318 -134 b 213 -287 228 -283 220 -287 b 198 -281 208 -287 202 -285 b 193 -267 194 -277 193 -273 b 202 -242 193 -262 196 -255 b 439 395 330 -12 426 242 b 468 430 442 416 451 427 ', + }, + restMaxima: { + x_min: 0, + x_max: 464.140625, + ha: 474, + o: 'm 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 ', + }, + restDoubleWhole: { + x_min: 0, + x_max: 386.5625, + ha: 394, + o: 'm 0 173 l 0 347 l 193 347 l 386 347 l 386 173 l 386 0 l 193 0 l 0 0 l 0 173 ', + }, + restWhole: { + x_min: 0, + x_max: 447.8125, + ha: 457, + o: 'm 0 -87 l 0 0 l 223 0 l 447 0 l 447 -87 l 447 -174 l 223 -174 l 0 -174 l 0 -87 ', + }, + restWholeLegerLine: { + x_min: 0, + x_max: 737.71875, + ha: 753, + o: 'm 9 13 b 208 15 10 15 51 15 b 368 15 251 15 304 15 l 726 15 l 729 12 b 737 -1 735 9 737 4 b 729 -15 737 -6 735 -11 l 726 -16 l 660 -16 l 592 -16 l 592 -95 l 592 -174 l 368 -174 l 144 -174 l 144 -95 l 144 -16 l 77 -16 l 9 -16 l 6 -15 b 0 -1 1 -11 0 -6 b 9 13 0 5 2 11 ', + }, + restHalf: { + x_min: 0, + x_max: 447.8125, + ha: 457, + o: 'm 0 86 l 0 173 l 223 173 l 447 173 l 447 86 l 447 0 l 223 0 l 0 0 l 0 86 ', + }, + restHalfLegerLine: { + x_min: 0, + x_max: 737.71875, + ha: 753, + o: 'm 144 94 l 144 173 l 368 173 l 592 173 l 592 94 l 592 15 l 660 15 l 726 15 l 729 12 b 737 -1 735 9 737 4 b 729 -15 737 -6 735 -11 l 726 -16 l 368 -16 l 9 -16 l 6 -15 b 0 -1 1 -11 0 -6 b 6 12 0 4 1 9 l 9 15 l 77 15 l 144 15 l 144 94 ', + }, + restQuarter: { + x_min: 0, + x_max: 300.8125, + ha: 307, + o: 'm 49 505 b 53 506 50 505 51 506 b 70 496 58 506 62 503 b 81 485 73 492 78 488 l 96 473 l 111 459 l 122 449 l 134 438 l 182 396 l 255 330 b 292 291 292 298 292 298 l 292 290 l 292 284 l 283 270 b 209 36 234 197 209 113 b 288 -170 209 -44 235 -119 b 299 -184 295 -179 299 -181 b 300 -191 300 -187 300 -188 b 285 -206 300 -199 294 -206 b 280 -206 283 -206 281 -206 b 247 -201 270 -202 259 -201 b 176 -222 223 -201 197 -208 b 114 -340 136 -249 114 -292 b 172 -471 114 -384 134 -433 b 185 -492 182 -481 185 -487 b 181 -502 185 -496 183 -499 b 171 -508 176 -505 174 -508 b 152 -498 166 -508 160 -503 b 0 -284 65 -428 12 -352 b 0 -260 0 -278 0 -270 b 1 -238 0 -252 0 -242 b 148 -140 16 -177 73 -140 b 209 -148 167 -140 189 -142 b 215 -149 212 -148 215 -149 b 215 -149 215 -149 215 -149 l 215 -149 b 201 -136 215 -148 209 -142 l 157 -97 l 96 -41 b 17 34 21 24 17 29 b 17 37 17 36 17 36 b 17 38 17 37 17 38 b 25 56 17 44 17 44 b 110 298 81 131 110 219 b 46 474 110 367 88 431 b 38 491 40 480 38 487 b 49 505 38 498 42 502 ', + }, + rest8th: { + x_min: 0, + x_max: 349.8125, + ha: 357, + o: 'm 88 302 b 103 303 93 302 98 303 b 202 224 149 303 191 270 b 205 199 204 216 205 208 b 178 129 205 173 196 147 l 175 126 l 182 127 b 307 249 236 142 284 190 b 313 259 308 254 311 258 b 329 267 317 265 323 267 b 349 247 340 267 349 259 b 201 -263 349 242 204 -258 b 182 -273 197 -270 190 -273 b 163 -260 174 -273 166 -269 b 161 -256 161 -259 161 -258 b 217 -59 161 -248 170 -220 b 272 129 247 43 272 127 b 272 129 272 129 272 129 b 264 122 272 129 268 126 b 140 80 227 94 183 80 b 36 115 102 80 65 91 b 0 194 10 136 0 165 b 88 302 0 244 32 292 ', + }, + rest16th: { + x_min: 0, + x_max: 450.53125, + ha: 460, + o: 'm 189 302 b 204 303 193 302 198 303 b 303 224 250 303 292 270 b 306 199 304 216 306 208 b 279 129 306 173 296 147 l 276 126 l 281 127 b 408 249 337 142 385 190 b 412 259 409 254 412 258 b 430 267 417 265 423 267 b 450 247 441 267 450 259 b 200 -605 450 242 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 194 111 136 99 165 b 189 302 99 244 133 292 ', + }, + rest32nd: { + x_min: 0, + x_max: 551.25, + ha: 563, + o: 'm 289 644 b 304 645 294 645 299 645 b 404 566 349 645 392 613 b 406 541 405 557 406 549 b 379 471 406 514 397 489 l 377 467 l 382 470 b 509 591 438 485 485 531 b 513 601 510 595 513 599 b 530 609 518 607 524 609 b 551 588 540 609 551 602 b 200 -605 551 584 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 195 112 136 99 165 b 118 256 99 217 106 238 b 204 303 138 287 171 303 b 292 249 238 303 273 285 b 306 199 302 234 306 217 b 279 129 306 173 296 148 l 276 126 l 281 127 b 408 248 336 142 385 190 b 473 470 409 254 473 469 b 473 470 473 470 473 470 b 465 464 473 470 469 467 b 341 421 428 435 383 421 b 236 458 303 421 266 433 b 200 537 212 478 200 508 b 289 644 200 585 234 635 ', + }, + rest64th: { + x_min: -1.359375, + x_max: 651.96875, + ha: 665, + o: 'm 389 644 b 405 645 394 645 400 645 b 504 566 450 645 492 613 b 507 541 506 557 507 549 b 480 471 507 514 498 489 l 477 467 l 483 470 b 609 591 539 485 586 531 b 613 601 611 595 613 599 b 631 609 619 607 624 609 b 651 588 641 609 651 602 b 200 -946 651 584 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 537 313 478 300 508 b 389 644 300 585 334 635 ', + }, + rest128th: { + x_min: -1.359375, + x_max: 752.703125, + ha: 768, + o: 'm 490 985 b 504 986 495 986 500 986 b 604 907 551 986 593 954 b 607 884 607 900 607 892 b 581 813 607 857 597 831 l 578 810 l 583 811 b 710 932 638 827 687 873 b 714 943 711 936 713 942 b 730 952 720 949 725 952 b 752 931 741 952 752 943 b 200 -946 752 927 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 538 314 477 300 508 b 318 598 300 559 306 580 b 404 645 340 630 372 645 b 494 592 439 645 475 627 b 507 541 502 577 507 559 b 480 471 507 516 498 489 l 477 467 l 483 470 b 608 589 537 485 586 531 b 675 811 611 595 675 810 b 675 811 675 811 675 811 b 666 806 675 811 671 809 b 543 763 628 777 585 763 b 438 799 504 763 468 775 b 401 878 412 820 401 849 b 490 985 401 928 434 977 ', + }, + dynamicPiano: { + x_min: -53.078125, + x_max: 513.140625, + ha: 485, + o: 'm 185 383 b 196 384 187 383 191 384 b 277 334 230 384 259 365 b 288 301 281 324 288 306 b 288 297 288 298 288 297 b 294 302 289 297 291 299 b 394 370 323 338 367 367 b 404 371 398 370 401 371 b 510 272 453 371 498 328 b 513 237 513 262 513 251 b 507 172 513 217 511 192 b 326 -34 487 59 412 -26 b 314 -36 322 -36 318 -36 b 274 -24 298 -36 283 -31 l 265 -16 b 224 44 246 -1 232 20 b 223 49 224 47 223 49 b 223 49 223 49 223 49 b 149 -197 221 48 149 -194 b 149 -198 149 -197 149 -198 b 170 -210 149 -202 155 -205 b 187 -215 174 -210 175 -212 b 204 -231 201 -219 204 -222 b 197 -245 204 -240 202 -242 l 194 -248 l 76 -248 l -42 -248 l -46 -245 b -53 -231 -51 -242 -53 -240 b -35 -215 -53 -222 -49 -217 b -13 -210 -21 -212 -20 -212 b -6 -208 -10 -209 -8 -208 b 0 -206 -6 -208 -2 -206 b 25 -188 13 -201 21 -195 b 163 280 28 -183 163 276 b 166 291 163 283 164 287 b 167 302 167 295 167 299 b 155 324 167 315 161 324 b 155 324 155 324 155 324 b 65 230 125 322 85 280 b 53 215 61 217 58 215 b 51 215 53 215 51 215 b 42 224 46 215 42 217 b 57 263 42 231 47 244 b 140 360 77 305 104 337 b 152 370 144 365 149 369 b 185 383 157 376 172 381 m 374 306 b 366 308 371 308 368 308 b 300 273 348 308 321 294 b 284 254 288 262 287 259 b 280 242 283 249 281 245 b 257 169 279 240 270 213 l 236 98 l 236 93 b 251 48 238 77 243 61 b 279 27 258 37 272 27 b 281 27 279 27 280 27 b 291 31 281 27 287 30 b 396 170 334 52 378 109 b 406 247 402 197 406 224 b 401 277 406 259 405 270 b 374 306 397 290 383 303 ', + }, + dynamicMezzo: { + x_min: 46.28125, + x_max: 669.671875, + ha: 563, + o: 'm 183 376 b 189 376 185 376 187 376 b 212 374 197 376 208 376 b 265 337 234 369 253 355 b 274 317 268 331 273 320 b 274 316 274 317 274 316 b 280 323 276 316 276 319 b 311 358 288 337 299 348 b 319 366 315 360 318 365 b 356 376 326 373 340 376 b 382 371 364 376 374 374 b 428 337 400 366 417 352 b 436 317 431 331 436 320 b 438 316 436 317 436 316 b 442 323 438 316 439 319 b 475 358 451 337 462 348 b 483 366 477 360 481 365 b 518 376 488 373 503 376 b 544 373 528 376 536 376 b 604 285 579 360 604 326 b 597 249 604 273 601 258 b 543 63 596 247 544 70 b 541 54 543 61 541 55 b 540 44 540 51 540 47 b 552 23 540 33 545 23 b 552 23 552 23 552 23 b 647 126 586 29 627 72 b 658 138 651 136 653 138 b 660 138 660 138 660 138 b 669 129 666 137 669 136 b 654 88 669 122 665 109 b 562 -12 631 43 602 9 l 549 -19 b 521 -27 540 -24 530 -27 b 447 30 490 -27 458 -4 b 443 58 445 38 443 48 b 450 93 443 72 446 84 b 504 278 453 97 504 272 b 507 288 506 283 506 287 b 509 298 507 292 509 295 b 491 326 509 310 502 320 b 487 327 490 327 488 327 b 479 324 484 327 483 326 b 441 270 462 316 443 288 b 435 249 441 265 436 254 b 398 127 434 248 419 195 b 362 4 379 61 362 5 b 328 -1 359 -1 362 -1 b 314 -1 323 -1 319 -1 b 302 -1 310 -1 306 -1 b 266 4 266 -1 269 -1 b 265 6 265 5 265 5 b 303 144 265 13 272 34 b 343 278 325 216 343 276 b 344 288 343 281 344 285 b 345 298 345 291 345 295 b 330 326 345 310 340 320 b 323 327 328 327 325 327 b 317 324 322 327 321 326 b 279 270 300 316 281 288 b 273 249 279 265 274 254 b 236 127 272 248 255 195 b 200 4 216 61 200 5 b 164 -1 197 -1 198 -1 b 151 -1 161 -1 156 -1 b 140 -1 147 -1 142 -1 b 103 4 104 -1 106 -1 b 103 6 103 5 103 5 b 141 144 103 13 108 34 b 181 278 161 216 179 276 b 182 288 181 281 181 285 b 183 298 182 291 183 295 b 168 324 183 310 178 320 b 160 327 166 326 163 327 b 141 320 156 327 151 324 b 69 230 112 305 85 272 b 57 215 65 217 62 215 b 55 215 57 215 55 215 b 46 224 49 215 46 217 b 59 260 46 231 50 242 b 151 363 81 306 112 341 b 161 369 155 365 160 367 b 183 376 166 371 174 374 ', + }, + dynamicForte: { + x_min: -118.421875, + x_max: 597.53125, + ha: 381, + o: 'm 460 574 b 464 574 461 574 462 574 b 488 574 470 574 481 574 b 500 573 491 574 498 574 b 594 503 543 570 588 538 b 597 488 596 498 597 494 b 528 417 597 449 564 417 b 502 423 519 417 510 419 b 465 481 477 434 465 458 b 488 528 465 499 472 516 b 490 530 490 530 490 530 b 490 530 490 530 490 530 b 468 517 488 530 475 523 b 349 340 419 485 377 420 b 347 330 348 334 347 330 b 383 328 347 328 363 328 b 428 326 423 328 424 328 b 442 302 438 320 442 312 b 430 281 442 294 438 285 b 385 276 424 277 426 276 l 377 276 l 332 276 l 330 269 b 178 -117 303 126 250 -9 b 1 -249 129 -194 69 -237 b -20 -251 -6 -251 -13 -251 b -114 -187 -65 -251 -100 -227 b -118 -156 -117 -177 -118 -166 b -51 -84 -118 -116 -91 -84 b -31 -87 -46 -84 -39 -86 b 16 -152 0 -95 16 -124 b -12 -205 16 -173 8 -194 b -16 -208 -14 -206 -16 -208 b -14 -208 -16 -208 -14 -208 b -9 -206 -14 -208 -12 -208 b 74 -124 23 -197 54 -166 b 172 224 98 -79 125 22 b 185 276 178 252 183 274 b 185 276 185 276 185 276 b 141 276 185 276 181 276 b 91 280 96 276 96 276 b 77 302 83 285 77 294 b 91 326 77 312 83 320 b 148 328 95 328 96 328 l 198 330 l 202 341 b 460 574 249 473 351 566 ', + }, + dynamicRinforzando: { + x_min: 78.9375, + x_max: 485.921875, + ha: 417, + o: 'm 362 378 b 378 380 367 380 372 380 b 472 348 415 380 453 367 b 485 315 481 338 485 327 b 462 273 485 298 477 281 b 439 267 454 269 446 267 b 398 290 424 267 409 274 b 344 319 385 309 364 319 b 281 269 315 319 289 301 b 279 262 280 266 279 262 b 276 256 279 260 277 258 b 274 249 276 254 274 251 b 238 127 273 248 257 192 b 201 4 217 61 201 5 b 166 -1 198 -1 200 -1 b 153 -1 163 -1 157 -1 b 141 -1 148 -1 144 -1 b 104 4 106 -1 107 -1 b 104 6 104 5 104 5 b 142 144 104 13 110 34 b 182 278 164 219 181 276 b 183 288 182 281 182 285 b 185 302 185 292 185 298 b 164 330 185 317 176 328 b 159 330 163 330 161 330 b 102 302 140 330 119 320 b 91 294 95 295 93 294 b 88 294 91 294 89 294 b 78 303 83 294 78 298 b 81 312 78 306 78 309 b 200 373 106 347 160 373 b 215 371 205 373 209 371 b 266 335 235 367 254 353 b 269 331 268 333 269 331 b 269 331 269 331 269 331 b 273 335 269 331 270 334 b 362 378 298 359 330 376 ', + }, + dynamicSforzando: { + x_min: 70.78125, + x_max: 378.390625, + ha: 315, + o: 'm 246 373 b 254 373 249 373 251 373 b 372 324 303 373 360 351 b 378 302 377 317 378 309 b 338 251 378 278 362 255 b 328 249 334 249 332 249 b 283 294 303 249 283 270 b 288 315 283 301 284 308 b 289 319 289 317 289 319 b 289 319 289 319 289 319 b 283 320 289 320 287 320 b 270 322 279 322 274 322 b 206 288 242 322 215 308 b 206 283 206 287 206 285 b 257 223 206 267 230 238 b 284 206 272 213 277 210 b 351 90 328 173 351 130 b 340 47 351 74 348 59 b 205 -30 314 -2 264 -30 b 182 -29 198 -30 190 -30 b 84 15 147 -24 103 -5 b 70 48 74 24 70 36 b 108 99 70 70 85 94 b 121 102 112 101 117 102 b 167 56 147 102 167 80 b 159 31 167 48 164 40 l 156 26 l 157 26 b 190 20 167 22 178 20 b 220 26 201 20 212 22 b 258 65 243 34 258 51 b 257 70 258 66 258 69 b 204 126 249 94 234 109 b 114 258 148 158 114 209 b 125 302 114 273 118 288 b 246 373 147 342 193 370 ', + }, + dynamicZ: { + x_min: 29.9375, + x_max: 420.578125, + ha: 371, + o: 'm 115 345 b 221 347 117 345 166 347 b 411 345 306 347 409 345 b 420 330 416 342 420 335 b 415 319 420 326 419 321 b 178 118 397 303 179 118 b 178 117 178 118 178 117 b 181 117 178 117 178 117 b 189 117 182 117 185 117 b 193 117 190 117 191 117 b 247 98 215 117 232 111 b 296 75 266 83 280 76 b 302 75 299 75 300 75 b 322 91 311 75 315 79 b 322 91 322 91 322 91 b 322 91 322 91 322 91 b 319 91 322 91 321 91 b 313 90 318 90 315 90 b 283 107 300 90 288 97 b 277 126 279 114 277 121 b 319 167 277 149 295 167 b 319 167 319 167 319 167 b 362 118 347 167 362 147 b 355 82 362 108 359 96 b 311 33 349 65 340 55 b 224 1 284 12 253 1 b 194 5 213 1 204 2 b 168 18 183 8 178 11 b 110 36 151 30 130 36 b 57 15 88 36 68 29 b 47 11 54 12 51 11 b 31 20 40 11 34 13 b 29 26 31 22 29 25 b 68 66 29 36 39 45 b 285 250 73 71 281 248 b 285 250 285 250 285 250 b 231 252 285 252 261 252 b 137 250 190 252 141 250 b 93 227 122 248 110 241 b 78 220 88 222 83 220 b 66 227 74 220 70 222 b 63 234 65 229 63 231 b 85 291 63 241 69 252 b 115 345 108 342 108 344 ', + }, + ornamentTrill: { + x_min: -340.28125, + x_max: 338.921875, + ha: 346, + o: 'm -32 520 b -29 521 -31 520 -31 521 b -23 519 -27 521 -24 520 b -20 513 -21 517 -20 516 b -21 506 -20 512 -20 509 b -31 474 -23 502 -27 488 l -53 402 l -66 352 l -68 349 l -57 349 b -32 351 -51 349 -40 351 b 123 370 19 352 74 359 b 137 371 127 370 133 371 b 170 356 152 371 164 366 b 171 355 170 355 170 355 b 216 366 174 355 183 358 b 280 378 268 377 266 377 b 287 378 283 378 284 378 b 332 349 307 378 322 369 b 338 319 336 341 338 330 b 332 301 338 310 336 302 b 242 280 329 299 246 280 b 242 280 242 280 242 280 b 235 288 236 280 235 283 b 235 292 235 290 235 291 b 236 302 236 297 236 299 b 220 337 236 316 230 330 l 216 340 l 210 335 b 159 276 189 322 172 301 b 118 149 152 265 156 274 b 81 34 84 36 85 36 b -8 13 78 33 -4 13 b -8 13 -8 13 -8 13 b -14 20 -12 15 -14 15 b -8 44 -14 24 -12 31 b -2 66 -5 55 -2 65 b -2 66 -2 66 -2 66 l -2 66 b -43 41 -2 66 -21 55 b -114 4 -98 8 -98 8 b -144 0 -123 0 -134 0 b -242 99 -197 0 -242 43 b -242 109 -242 102 -242 105 b -212 219 -240 122 -242 116 b -185 312 -197 270 -185 312 l -185 312 b -189 312 -185 312 -186 312 b -259 312 -200 312 -227 312 b -321 310 -291 312 -310 310 b -334 312 -330 310 -334 312 b -340 319 -338 313 -340 316 b -336 326 -340 322 -338 324 b -291 337 -334 326 -314 331 l -247 347 l -210 348 b -172 348 -190 348 -172 348 b -168 363 -172 348 -171 355 b -145 442 -151 424 -145 441 b -133 452 -144 444 -140 446 l -77 489 b -32 520 -53 506 -32 520 m 57 334 b 53 335 55 335 54 335 b 44 334 50 335 49 335 b -70 316 8 326 -28 320 b -78 309 -78 316 -78 316 b -108 202 -80 305 -88 274 b -141 81 -136 112 -141 93 b -140 74 -141 79 -141 77 b -117 49 -137 59 -127 49 b -107 52 -114 49 -110 51 b 16 127 -106 54 14 126 b 42 217 16 127 42 215 b 49 241 42 222 44 229 b 73 320 53 251 73 317 b 57 334 73 327 65 333 ', + }, + ornamentTurn: { + x_min: -423.3125, + x_max: 421.9375, + ha: 431, + o: 'm -262 197 b -247 197 -257 197 -253 197 b -118 162 -210 197 -163 184 b 40 45 -61 134 -13 98 b 277 -95 119 -33 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -55 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 201 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 136 b 421 22 421 37 421 29 b 245 -199 421 -93 338 -199 b 238 -198 243 -199 240 -199 b -44 -47 148 -194 50 -141 b -250 86 -114 22 -183 66 b -295 94 -270 91 -283 94 b -315 91 -302 94 -307 94 b -381 4 -356 81 -381 43 b -355 -56 -381 -18 -372 -40 b -298 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -178 -69 -200 -58 -189 -62 b -151 -122 -160 -81 -151 -101 b -171 -167 -151 -138 -157 -155 b -239 -195 -185 -181 -213 -192 b -257 -197 -245 -197 -250 -197 b -423 -5 -352 -197 -423 -109 b -412 65 -423 16 -419 40 b -262 197 -389 137 -329 188 ', + }, + ornamentTurnSlash: { + x_min: -423.3125, + x_max: 421.9375, + ha: 431, + o: 'm -10 276 b -2 277 -8 277 -5 277 b 17 265 5 277 13 273 b 19 163 19 260 19 260 l 19 68 l 39 45 b 277 -95 122 -34 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -54 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 200 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 137 b 421 22 421 37 421 29 b 257 -198 421 -86 347 -188 b 242 -198 251 -198 247 -198 b 20 -105 181 -198 95 -163 l 19 -104 l 19 -183 b 19 -216 19 -195 19 -206 b 12 -273 19 -272 17 -267 b -2 -278 8 -277 2 -278 b -21 -266 -10 -278 -19 -274 b -23 -165 -23 -263 -23 -262 l -23 -69 l -44 -47 b -250 86 -117 23 -183 66 b -295 94 -270 93 -284 94 b -315 91 -302 94 -308 94 b -381 5 -356 81 -381 43 b -355 -56 -381 -16 -372 -40 b -299 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -168 -77 -196 -58 -179 -65 b -151 -122 -156 -90 -151 -105 b -179 -174 -151 -141 -160 -162 b -239 -195 -194 -184 -217 -192 b -257 -197 -245 -195 -250 -197 b -423 -5 -349 -197 -423 -113 b -423 0 -423 -4 -423 -1 b -277 194 -420 97 -362 173 b -247 197 -268 197 -258 197 b -24 104 -185 197 -100 162 l -23 102 l -23 181 b -21 265 -23 260 -23 260 b -10 276 -20 269 -14 274 ', + }, + ornamentMordent: { + x_min: -402.890625, + x_max: 401.53125, + ha: 410, + o: 'm -10 273 b -4 274 -9 273 -6 274 b 16 262 4 274 12 269 b 17 158 17 259 17 259 l 17 56 l 62 112 b 117 174 110 172 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b 21 -6 27 0 24 -2 l 17 -12 l 17 -147 b 17 -210 17 -173 17 -194 b 10 -292 17 -297 16 -287 b -2 -299 6 -297 2 -299 b -21 -287 -10 -299 -19 -295 b -24 -174 -23 -284 -23 -284 l -24 -63 l -66 -117 b -121 -176 -110 -170 -114 -176 b -125 -176 -122 -176 -123 -176 b -296 -12 -134 -174 -125 -184 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 170 -398 -43 -231 165 b -212 174 -221 173 -216 174 b -202 173 -208 174 -205 174 b -39 11 -200 172 -151 122 l -28 -1 l -25 1 l -24 4 l -24 130 b -23 260 -24 256 -24 258 b -10 273 -20 266 -16 270 ', + }, + ornamentShortTrill: { + x_min: -402.890625, + x_max: 401.53125, + ha: 410, + o: 'm -219 173 b -213 174 -217 174 -215 174 b -202 173 -209 174 -205 173 b -114 86 -200 172 -179 151 b -28 0 -66 37 -28 0 b 40 84 -28 0 2 37 b 117 174 111 173 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b -42 -86 27 0 -4 -38 b -118 -174 -112 -174 -111 -173 b -123 -176 -119 -176 -121 -176 b -133 -174 -126 -176 -130 -174 b -296 -12 -136 -173 -172 -137 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 172 -398 -43 -228 167 b -219 173 -223 172 -220 173 ', + }, + ornamentTremblement: { + x_min: -571.671875, + x_max: 570.3125, + ha: 582, + o: 'm -386 173 b -381 174 -385 174 -383 174 b -370 173 -377 174 -372 173 b -281 86 -367 172 -347 151 b -196 0 -235 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 277 172 b 289 174 285 174 288 174 b 299 173 294 174 298 173 b 462 11 303 172 338 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 374 -176 371 -176 b 280 -87 367 -173 345 -152 b 194 0 234 -38 194 0 b 125 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 43 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -141 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -289 -176 b -300 -174 -295 -176 -299 -174 b -464 -12 -304 -173 -340 -137 l -476 0 l -504 -34 b -543 -77 -534 -73 -537 -76 b -549 -79 -545 -79 -547 -79 b -571 -58 -562 -79 -571 -69 b -568 -49 -571 -55 -570 -52 b -392 172 -566 -43 -396 167 b -386 173 -390 172 -387 173 ', + }, + ornamentPrecompAppoggTrill: { + x_min: -571.671875, + x_max: 570.3125, + ha: 582, + o: 'm -559 351 b -551 352 -556 352 -553 352 b -530 338 -543 352 -533 348 b -529 169 -530 337 -529 291 l -529 1 l -507 27 l -441 112 b -382 174 -394 169 -390 174 b -378 174 -381 174 -379 174 b -281 86 -370 174 -375 179 b -196 0 -234 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 279 172 b 289 174 285 174 288 174 b 300 173 294 174 298 173 b 462 11 303 172 340 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 375 -176 371 -176 b 280 -87 367 -173 347 -152 b 194 0 234 -38 194 0 b 126 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 44 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -140 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -288 -176 b -300 -174 -294 -176 -298 -174 b -464 -11 -303 -173 -374 -102 l -476 0 l -506 -37 b -539 -76 -528 -65 -537 -74 b -551 -80 -543 -79 -547 -80 b -570 -68 -558 -80 -566 -76 l -571 -65 l -571 136 b -570 340 -571 331 -571 337 b -559 351 -568 344 -564 348 ', + }, + ornamentPrecompSlideTrillDAnglebert: { + x_min: -590.71875, + x_max: 589.359375, + ha: 601, + o: 'm -367 173 b -362 174 -366 174 -364 174 b -351 173 -357 174 -353 173 b -262 86 -348 172 -328 151 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 72 86 -13 172 6 151 b 157 0 119 37 157 0 b 227 84 159 0 189 37 b 303 174 298 173 296 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 144 -86 213 0 182 -38 b 68 -174 73 -174 74 -173 b 62 -176 66 -176 65 -176 b 53 -174 59 -176 55 -174 b -35 -87 50 -173 29 -152 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -367 173 -375 169 -372 172 ', + }, + ornamentPrecompSlideTrillBach: { + x_min: -590.71875, + x_max: 589.359375, + ha: 601, + o: 'm 175 273 b 182 274 178 273 181 274 b 202 262 190 274 198 269 b 204 158 204 259 204 259 l 204 56 l 250 112 b 303 174 296 172 298 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 208 -6 213 0 210 -2 l 204 -12 l 204 -147 b 204 -210 204 -173 204 -194 b 198 -292 204 -297 204 -287 b 183 -299 194 -297 189 -299 b 164 -287 175 -299 167 -295 b 163 -174 163 -284 163 -284 l 161 -63 l 119 -117 b 65 -176 76 -170 73 -176 b 61 -176 63 -176 62 -176 b -35 -87 51 -174 57 -180 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -363 174 -374 170 -371 174 b -359 174 -362 174 -360 174 b -262 86 -351 174 -356 179 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 147 11 -13 172 35 123 l 157 -1 l 160 1 l 163 4 l 163 130 b 164 260 163 256 163 258 b 175 273 166 266 170 270 ', + }, + ornamentPrecompTrillSuffixDandrieu: { + x_min: -590.71875, + x_max: 589.359375, + ha: 601, + o: 'm 544 335 b 553 337 548 337 551 337 b 575 313 563 337 570 330 b 589 226 583 285 589 256 b 517 8 589 152 563 76 b 464 -58 507 -4 503 -9 l 401 -136 b 362 -176 372 -172 370 -176 b 357 -176 360 -176 359 -176 b 261 -87 349 -174 355 -180 b 175 0 215 -38 175 0 b 106 -86 175 0 144 -38 b 29 -174 35 -174 36 -173 b 24 -176 28 -176 27 -176 b 14 -174 21 -176 17 -174 b -73 -87 12 -173 -8 -152 b -159 0 -121 -38 -159 0 b -228 -86 -160 0 -190 -38 b -304 -174 -299 -174 -298 -173 b -310 -176 -306 -176 -308 -176 b -319 -174 -314 -176 -318 -174 b -483 -12 -323 -173 -359 -137 l -495 0 l -524 -34 b -562 -77 -553 -73 -556 -76 b -568 -79 -564 -79 -566 -79 b -590 -58 -581 -79 -590 -69 b -588 -49 -590 -55 -589 -52 b -412 170 -585 -43 -417 165 b -398 174 -408 173 -402 174 b -389 173 -394 174 -392 174 b -300 86 -387 172 -366 151 b -215 -1 -254 37 -215 -1 b -145 84 -215 -1 -183 37 b -69 173 -74 173 -76 172 b -63 174 -68 174 -66 174 b -54 173 -61 174 -57 173 b 34 86 -51 172 -31 151 b 119 -1 81 37 119 -1 b 189 84 121 -1 151 37 b 265 173 259 173 258 172 b 270 174 266 174 269 174 b 280 173 274 174 279 173 b 370 84 283 172 303 151 b 455 -1 416 37 455 -1 l 455 -1 b 476 24 455 -1 469 15 b 547 226 522 87 547 159 b 534 302 547 252 543 278 b 532 317 533 308 532 313 b 544 335 532 326 536 333 ', + }, + ornamentPrecompDoubleCadenceUpperPrefix: { + x_min: -597.53125, + x_max: 596.171875, + ha: 608, + o: 'm -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 80 86 -5 172 13 151 b 166 -1 127 37 166 -1 b 235 84 166 -1 197 37 b 311 173 306 173 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 152 -86 221 -1 190 -38 b 76 -176 81 -174 83 -173 b 70 -176 74 -176 73 -176 b 61 -174 66 -176 62 -174 b -27 -87 58 -173 38 -152 b -114 -1 -74 -38 -112 -1 b -182 -86 -114 -1 -145 -38 b -258 -176 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 ', + }, + ornamentPrecompDoubleCadenceUpperPrefixTurn: { + x_min: -597.53125, + x_max: 596.171875, + ha: 608, + o: 'm -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 155 11 -5 172 43 123 l 166 -1 l 168 1 l 170 4 l 170 130 b 171 260 170 256 170 258 b 191 274 175 269 183 274 b 205 267 196 274 201 272 b 212 158 212 262 210 273 l 212 56 l 257 112 b 311 173 304 172 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 216 -6 221 -1 219 -2 l 212 -12 l 212 -147 b 212 -210 212 -173 212 -194 b 205 -292 212 -297 210 -287 b 191 -299 201 -297 196 -299 b 172 -287 183 -299 175 -295 b 170 -174 171 -284 171 -284 l 170 -63 l 127 -117 b 73 -176 84 -170 80 -176 b 68 -176 72 -176 70 -176 b -27 -87 59 -174 65 -180 b -114 0 -74 -38 -112 0 b -182 -86 -114 0 -145 -38 b -258 -174 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 ', + }, + ornamentPrecompTrillLowerSuffix: { + x_min: -597.53125, + x_max: 596.171875, + ha: 608, + o: 'm -413 173 b -408 174 -412 174 -409 174 b -397 173 -404 174 -400 173 b -308 86 -394 172 -374 151 b -223 0 -261 37 -223 0 b -153 84 -223 0 -191 37 b -77 174 -83 173 -84 172 b -72 174 -76 174 -74 174 b -62 173 -68 174 -63 173 b 25 86 -59 172 -39 151 b 112 0 73 37 111 0 b 181 84 112 0 144 37 b 257 174 251 173 251 172 b 262 174 258 174 261 174 b 273 173 266 174 270 173 b 436 9 276 172 347 101 l 447 -1 l 477 36 b 522 79 511 79 513 79 l 522 79 b 552 51 533 79 539 73 b 596 -112 582 6 596 -51 b 567 -262 596 -161 586 -213 b 539 -322 558 -287 544 -316 b 524 -327 534 -326 529 -327 b 504 -315 515 -327 507 -323 b 503 -308 503 -312 503 -309 b 511 -285 503 -302 504 -297 b 555 -113 540 -227 555 -169 b 544 -34 555 -86 551 -59 b 522 19 540 -16 530 8 l 521 22 l 481 -26 l 405 -122 b 353 -176 366 -172 362 -176 b 349 -176 352 -176 351 -176 b 253 -87 341 -176 347 -180 b 167 0 206 -38 167 0 b 99 -86 167 0 136 -38 b 21 -174 27 -174 28 -173 b 17 -176 20 -176 19 -176 b 6 -174 13 -176 9 -174 b -81 -87 4 -173 -14 -152 b -167 0 -129 -38 -167 0 b -236 -86 -167 0 -198 -38 b -313 -174 -307 -174 -306 -173 b -318 -176 -314 -176 -315 -176 b -328 -174 -321 -176 -325 -174 b -491 -12 -330 -173 -367 -137 l -503 0 l -530 -34 b -570 -77 -562 -73 -564 -76 b -577 -79 -571 -79 -574 -79 b -597 -58 -588 -79 -597 -69 b -596 -49 -597 -55 -597 -52 b -417 172 -593 -43 -423 167 b -413 173 -417 172 -415 173 ', + }, + stringsDownBow: { + x_min: -228.671875, + x_max: 227.3125, + ha: 232, + o: 'm -217 487 l -213 488 l 0 488 l 212 488 l 216 487 b 225 476 220 484 224 480 l 227 473 l 227 244 l 227 15 l 225 12 b 206 0 223 4 215 0 b 197 1 204 0 200 0 b 187 12 193 4 189 6 l 186 15 l 186 138 l 186 262 l -1 262 l -187 262 l -187 138 l -187 15 l -189 12 b -208 0 -193 4 -200 0 b -227 12 -216 0 -223 4 l -228 15 l -228 244 l -228 473 l -227 476 b -217 487 -225 480 -221 484 ', + }, + stringsUpBow: { + x_min: -149.71875, + x_max: 148.359375, + ha: 151, + o: 'm -137 381 b -130 383 -134 383 -133 383 b -111 371 -122 383 -114 378 b -55 224 -110 370 -85 305 b 0 80 -25 145 -1 80 b 54 224 0 80 24 145 b 112 377 114 384 110 373 b 127 384 118 381 122 384 b 148 362 138 384 148 374 l 148 356 l 83 183 b 16 9 47 88 17 11 b -1 0 12 2 5 0 b -14 5 -5 0 -10 1 b -84 183 -19 9 -13 -6 l -149 356 l -149 362 b -137 381 -149 371 -145 378 ', + }, + stringsHarmonic: { + x_min: -122.5, + x_max: 121.140625, + ha: 124, + o: 'm -16 145 b 0 147 -10 147 -5 147 b 121 -1 66 147 121 77 b 114 -49 121 -16 118 -33 b -1 -148 95 -112 47 -148 b -85 -106 -31 -148 -61 -134 b -122 -1 -110 -76 -122 -38 b -16 145 -122 68 -81 134 m 12 111 b 0 113 8 113 4 113 b -68 22 -29 113 -61 73 b -70 0 -69 15 -70 6 b -13 -113 -70 -49 -47 -98 b -1 -115 -9 -115 -5 -115 b 63 -40 24 -115 53 -83 b 68 -1 66 -27 68 -15 b 12 111 68 48 46 97 ', + }, + pluckedSnapPizzicatoAbove: { + x_min: -149.71875, + x_max: 148.359375, + ha: 151, + o: 'm -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 ', + }, + pluckedSnapPizzicatoBelow: { + x_min: -149.71875, + x_max: 148.359375, + ha: 151, + o: 'm -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 ', + }, + pluckedLeftHandPizzicato: { + x_min: 0, + x_max: 319.859375, + ha: 326, + o: 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ', + }, + keyboardPedalPed: { + x_min: -1.359375, + x_max: 1064.390625, + ha: 1086, + o: 'm 296 692 b 314 694 302 694 307 694 b 386 685 337 694 366 689 b 548 498 480 660 548 580 b 548 481 548 492 548 487 b 455 395 541 426 499 395 b 370 462 420 395 383 417 b 362 496 364 477 362 488 b 377 514 362 509 367 514 b 393 501 386 514 390 510 b 432 474 397 484 413 474 b 470 487 445 474 458 478 b 491 530 484 496 491 510 b 490 544 491 534 491 539 b 333 660 479 606 411 657 l 323 662 l 315 646 b 269 524 285 591 269 556 b 321 431 269 492 287 466 b 349 395 338 413 343 408 b 363 342 359 378 363 362 b 359 312 363 333 362 322 b 285 158 348 266 318 206 b 281 152 283 155 281 152 b 281 152 281 152 281 152 b 287 154 283 152 284 152 b 318 155 298 154 308 155 b 461 98 371 155 419 136 l 464 97 l 483 112 b 503 129 494 120 503 127 b 504 130 503 129 504 129 b 503 138 504 131 503 134 b 500 180 500 152 500 166 b 553 326 500 238 518 288 b 604 366 560 331 592 358 b 649 381 617 376 632 381 b 696 362 665 381 681 374 b 724 302 714 347 724 324 b 695 238 724 278 714 255 b 660 210 691 234 662 212 b 579 148 658 209 582 151 b 579 148 579 148 579 148 b 596 106 579 144 589 119 b 622 77 604 88 609 83 b 657 69 632 72 645 69 b 748 112 688 69 721 84 b 755 123 754 117 755 120 b 755 127 755 124 755 126 b 751 165 752 137 751 151 b 758 219 751 183 754 202 b 894 387 774 290 820 347 b 896 390 896 388 896 388 b 891 398 896 391 895 392 b 622 560 827 477 730 535 b 600 580 605 564 600 569 b 617 596 600 591 607 596 b 628 595 622 596 624 596 b 1057 248 846 552 1020 412 b 1064 191 1061 229 1064 209 b 922 0 1064 94 1005 9 b 902 -1 916 -1 909 -1 b 774 76 847 -1 800 26 b 769 83 770 81 770 83 b 769 81 769 83 769 83 b 627 -1 733 29 677 -1 b 548 27 597 -1 570 8 b 515 88 537 37 525 61 l 513 95 l 510 93 l 453 45 b 390 0 396 0 396 0 b 390 0 390 0 390 0 b 374 15 381 0 377 4 b 268 105 359 69 314 105 b 250 104 262 105 257 105 l 243 102 l 234 90 b 155 1 201 49 159 2 b 147 -1 152 0 149 -1 b 130 15 138 -1 130 6 b 132 20 130 18 132 19 b 136 31 133 22 134 27 b 220 131 149 74 178 109 b 231 137 225 134 230 136 b 302 278 280 202 302 244 b 265 335 302 299 295 309 b 209 442 234 363 213 402 b 209 455 209 446 209 451 b 279 648 209 502 232 564 l 285 659 l 283 659 b 176 627 238 653 210 645 b 57 477 111 594 66 538 b 55 459 55 471 55 464 b 72 409 55 437 61 415 b 93 403 78 405 87 403 b 152 467 123 403 151 431 b 168 488 153 483 157 488 b 185 462 181 488 185 483 l 185 460 b 137 344 183 409 168 369 b 78 322 119 328 98 322 b 13 360 50 322 25 335 b -1 426 4 380 -1 402 b 89 610 -1 488 32 559 b 296 692 147 659 210 685 m 926 348 b 921 353 924 351 922 353 b 914 348 920 353 918 351 b 823 167 857 306 823 237 b 828 124 823 154 826 138 b 890 31 837 79 862 40 b 896 31 892 31 894 31 b 956 104 916 31 940 59 b 970 191 965 129 970 159 b 966 241 970 208 969 224 b 926 348 959 277 945 313 m 627 326 b 619 326 624 326 622 326 b 598 316 611 326 604 323 b 568 215 579 288 568 255 b 568 208 568 213 568 210 b 571 183 570 195 570 184 l 571 183 b 594 201 571 183 582 191 l 634 231 b 660 259 653 247 656 248 b 664 278 662 266 664 272 b 627 326 664 299 649 320 ', + }, + keyboardPedalUp: { + x_min: -1.359375, + x_max: 592.078125, + ha: 604, + o: 'm 280 692 b 295 694 283 692 289 694 b 310 692 300 694 307 692 b 357 630 340 684 357 657 b 336 580 357 612 351 594 b 311 538 321 566 311 549 b 352 492 311 512 330 492 b 366 495 357 492 362 492 b 397 553 390 503 397 517 b 415 603 397 576 402 591 b 460 623 427 617 443 623 b 509 599 479 623 498 614 b 522 559 518 587 522 573 b 494 506 522 538 513 519 b 451 495 481 498 473 496 b 415 488 432 495 426 494 b 394 449 404 483 394 464 b 394 448 394 448 394 448 l 394 440 l 397 433 b 428 409 404 420 413 413 b 438 408 431 408 435 408 b 479 431 450 408 462 415 b 528 455 495 448 510 455 b 548 452 534 455 541 453 b 592 391 577 442 592 416 b 549 331 592 365 577 340 b 528 327 541 328 534 327 b 479 351 510 327 495 335 b 438 374 464 367 450 374 b 417 369 431 374 424 373 b 394 333 402 360 394 348 b 400 312 394 326 396 319 b 451 287 408 294 420 288 b 513 258 484 285 499 278 b 522 223 519 247 522 234 b 461 159 522 190 496 159 b 449 161 457 159 453 159 b 397 229 416 167 397 191 b 366 288 397 265 390 278 b 352 290 362 290 357 290 b 315 262 336 290 321 280 b 311 245 313 256 311 251 b 334 204 311 233 318 220 b 355 170 348 190 351 184 b 357 152 356 166 357 159 b 355 136 357 147 356 140 b 295 88 345 104 321 88 b 232 152 264 88 232 112 b 255 204 232 174 238 186 b 279 244 273 222 279 231 l 279 245 b 238 290 279 270 259 290 b 224 288 234 290 228 290 b 193 229 200 278 193 265 b 141 161 193 191 174 167 b 129 159 137 159 133 159 b 68 223 93 159 68 190 b 77 258 68 234 70 247 b 138 287 91 278 106 285 b 185 302 166 287 175 291 b 196 333 193 312 196 323 b 174 369 196 347 187 360 b 152 374 166 373 159 374 b 111 351 140 374 126 367 b 62 327 95 335 80 327 b 51 328 58 327 54 327 b -1 391 16 334 -1 363 b 53 455 -1 420 17 449 b 62 455 57 455 59 455 b 111 431 80 455 95 448 b 152 408 127 415 140 408 b 161 409 155 408 159 408 b 193 433 176 413 186 420 l 196 440 l 196 448 b 196 451 196 449 196 449 b 190 471 196 459 194 463 b 137 495 182 489 167 495 l 134 495 l 134 495 b 68 560 95 495 68 521 b 129 623 68 596 95 623 b 144 621 134 623 138 623 b 193 553 175 614 193 589 b 224 495 193 517 200 503 b 238 492 228 492 234 492 b 279 538 259 492 279 512 b 254 580 279 549 269 566 b 232 630 239 594 232 612 b 280 692 232 657 250 684 m 307 456 b 295 458 303 458 299 458 b 230 391 258 458 230 426 b 236 360 230 381 231 371 b 295 324 249 337 272 324 b 353 360 318 324 341 337 b 360 391 357 370 360 381 b 307 456 360 421 340 451 ', + }, + pictChokeCymbal: { + x_min: 0, + x_max: 227.3125, + ha: 232, + o: 'm 91 213 b 100 215 93 215 96 215 b 227 58 167 215 224 144 b 227 52 227 56 227 54 b 61 -201 227 -43 164 -138 b 29 -216 44 -212 36 -216 b 23 -210 27 -216 24 -213 b 21 -205 21 -208 21 -206 b 34 -192 21 -201 25 -197 b 122 -55 89 -161 122 -106 b 104 6 122 -33 117 -12 l 103 9 l 96 9 b 4 79 57 9 17 38 b 0 112 1 90 0 101 b 91 213 0 163 36 209 ', + }, + wiggleArpeggiatoUp: { + x_min: 58.53125, + x_max: 228.671875, + ha: 294, + o: 'm 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 ', + }, + arrowheadBlackUp: { + x_min: -10.890625, + x_max: 299.4375, + ha: 294, + o: 'm 136 460 b 142 462 137 462 140 462 b 166 449 152 462 161 456 b 171 428 168 446 168 445 b 288 131 194 322 238 209 b 298 115 295 120 296 117 b 299 106 298 112 299 109 b 273 81 299 91 287 81 b 255 86 268 81 261 83 b 155 116 225 104 183 116 l 152 116 l 149 108 b 141 83 148 102 144 91 b 134 48 137 69 134 58 b 149 9 134 34 140 24 b 153 -1 152 5 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 147 -11 b 122 2 138 -11 133 -6 b 95 61 104 20 95 38 b 107 108 95 74 99 90 b 108 113 107 111 108 112 b 107 113 108 113 108 113 b 102 113 106 113 104 113 b 31 86 76 108 53 98 b 14 80 24 81 20 80 b -10 106 0 80 -10 91 b 0 131 -10 115 -9 116 b 115 430 49 209 91 317 b 136 460 119 451 123 456 ', + }, + arrowheadBlackDown: { + x_min: -10.890625, + x_max: 298.078125, + ha: 294, + o: 'm 138 473 b 142 474 140 473 141 474 b 164 459 148 474 153 470 b 191 402 183 442 191 423 b 181 353 191 388 187 371 b 178 349 179 352 178 349 b 179 348 178 348 179 348 b 185 349 181 348 182 348 b 255 376 210 355 234 363 b 272 381 264 381 266 381 b 298 355 287 381 298 370 b 288 330 298 348 298 345 b 171 34 238 254 194 141 b 166 13 168 16 168 16 b 144 1 161 5 152 1 b 121 15 134 1 125 5 b 115 33 119 18 117 24 b 0 330 91 145 49 252 b -10 355 -9 345 -10 348 b 13 381 -10 371 0 381 b 31 376 19 381 25 380 b 132 345 61 358 103 345 l 136 345 l 137 355 b 145 378 138 359 142 370 b 152 415 149 394 152 405 b 137 452 152 427 148 438 b 133 464 134 458 133 460 b 138 473 133 467 134 470 ', + }, + vexAccidentalMicrotonal1: { + x_min: -171.5, + x_max: 483.1875, + ha: 493, + o: 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 495 20 616 20 616 b 20 373 20 427 20 373 b 115 410 20 373 63 390 l 210 448 l 210 531 b 212 620 210 614 210 616 b 231 632 215 628 223 632 b 246 627 236 632 242 631 b 251 541 251 620 251 628 l 251 463 l 315 489 b 387 514 368 509 381 514 b 393 513 390 514 392 514 b 406 494 402 510 406 502 b 397 476 406 487 404 480 b 323 446 396 474 363 462 l 251 417 l 251 283 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -19 -217 -9 -229 -16 -224 l -20 -215 l -21 48 l -21 310 l -83 287 b -152 262 -133 266 -145 262 b -157 263 -153 262 -155 262 b -171 283 -166 266 -171 274 b -161 301 -171 290 -167 297 b -91 328 -160 302 -129 315 l -21 356 l -21 487 l -20 617 l -19 621 b -8 631 -17 626 -12 630 m 210 288 b 210 401 210 351 210 401 b 114 365 209 401 167 384 l 20 327 l 20 238 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 180 164 199 187 192 l 209 177 b 209 177 209 177 209 177 b 210 288 210 177 210 199 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 ', + }, + vexAccidentalMicrotonal2: { + x_min: -1.359375, + x_max: 386.5625, + ha: 394, + o: 'm 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 ', + }, + vexWiggleArpeggioUp: { + x_min: 58.53125, + x_max: 228.671875, + ha: 294, + o: 'm 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 ', + }, + vexNoteHeadMutedBreve: { + x_min: 0, + x_max: 370.21875, + ha: 378, + o: 'm 0 0 l 0 277 l 61 277 l 122 277 l 122 0 l 122 -278 l 61 -278 l 0 -278 l 0 0 m 246 -1 l 246 277 l 308 277 l 370 277 l 370 -1 l 370 -278 l 308 -278 l 246 -278 l 246 -1 ', + }, + }, + cssFontWeight: 'normal', + ascender: 1903, + underlinePosition: -125, + cssFontStyle: 'normal', + boundingBox: { + yMin: -2065.375, + xMin: -695.53125, + yMax: 1901.578125, + xMax: 1159.671875, + }, + resolution: 1000, + original_font_information: { + postscript_name: 'Gonville-18', + version_string: 'Version 0.1.8904 ', + vendor_url: '', + full_font_name: 'Gonville-18', + font_family_name: 'Gonville-18', + copyright: 'No copyright is claimed on this font file.', + description: '', + trademark: '', + designer: '', + designer_url: '', + unique_font_identifier: 'FontForge 2.0 : Gonville-18 : 17-3-2010', + license_url: '', + license_description: '', + manufacturer_name: '', + font_sub_family_name: '18', + }, + descender: -2066, + fontFamily: 'Gonville-18', + lineHeight: 4093, + underlineThickness: 50, +}; diff --git a/build/esm/src/fonts/gonville_metrics.js b/build/esm/src/fonts/gonville_metrics.js new file mode 100644 index 0000000000..6b59653ec7 --- /dev/null +++ b/build/esm/src/fonts/gonville_metrics.js @@ -0,0 +1,418 @@ +export const GonvilleMetrics = { + name: 'Gonville', + smufl: false, + stave: { + padding: 12, + endPaddingMax: 10, + endPaddingMin: 5, + unalignedNotePadding: 10, + }, + accidental: { + noteheadAccidentalPadding: 1, + leftPadding: 2, + accidentalSpacing: 3, + }, + clef: { + default: { + point: 40, + width: 26, + }, + small: { + point: 32, + width: 20, + }, + annotations: { + '8va': { + smuflCode: 'timeSig8', + default: { + point: 20, + treble: { + line: -1.2, + shiftX: 11, + }, + }, + small: { + point: 18, + treble: { + line: -0.4, + shiftX: 8, + }, + }, + }, + '8vb': { + smuflCode: 'timeSig8', + default: { + point: 20, + treble: { + line: 6.3, + shiftX: 10, + }, + bass: { + line: 4, + shiftX: 1, + }, + }, + small: { + point: 18, + treble: { + line: 5.8, + shiftX: 6, + }, + bass: { + line: 3.5, + shiftX: 0.5, + }, + }, + }, + }, + lineCount: { + '8': { point: 55, shiftY: 14 }, + '7': { point: 47, shiftY: 8 }, + '6': { point: 40, shiftY: 1 }, + '5': { point: 30, shiftY: -6 }, + '4': { point: 23, shiftY: -12 }, + }, + }, + parenthesis: { + default: { + point: 39, + width: 7, + }, + gracenote: { + point: (39 * 3) / 5, + width: 3, + }, + }, + pedalMarking: { + up: { + point: 40, + }, + down: { + point: 40, + }, + }, + digits: { + point: 40, + tupletPoint: 28, + }, + tremolo: { + default: { + point: 25, + spacing: 4, + offsetYStemUp: -7, + offsetYStemDown: 7, + offsetXStemUp: 9, + offsetXStemDown: -0.5, + }, + grace: { + point: 15, + spacing: 4, + offsetYStemUp: -7, + offsetYStemDown: 7, + offsetXStemUp: 6.5, + offsetXStemDown: -0.5, + }, + }, + staveRepetition: { + symbolText: { + offsetX: 12, + offsetY: 25, + spacing: 5, + }, + coda: { + offsetY: 25, + }, + segno: { + offsetY: 0, + }, + }, + stem: { + heightAdjustmentForFlag: -3, + noteHead: { + noteheadTriangleUpHalf: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpBlack: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpWhole: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadXHalf: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXBlack: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXWhole: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadHalf: { + offsetYBaseStemUp: -1.5, + offsetYBaseStemDown: 1.5, + }, + noteheadBlack: { + offsetYBaseStemUp: -1.5, + offsetYBaseStemDown: 1.5, + }, + noteheadSquareWhite: { + offsetYBaseStemDown: -5, + offsetYBaseStemUp: 5, + }, + }, + }, + glyphs: { + flag: { + shiftX: -0.08, + flag8thDown: { + shiftX: -0.16, + }, + flag16thDown: { + shiftX: -0.16, + }, + flag32ndDown: { + shiftX: -0.16, + shiftY: 9, + }, + flag64thDown: { + shiftX: -0.16, + shiftY: 13, + }, + flag128thDown: { + shiftX: -0.16, + shiftY: 22, + }, + flag32ndUp: { + shiftY: -9, + }, + flag64thUp: { + shiftY: -13, + }, + flag128thUp: { + shiftY: -22, + }, + }, + stringNumber: { + verticalPadding: 8, + stemPadding: 2, + leftPadding: 5, + rightPadding: 6, + }, + textNote: { + point: 40, + default: {}, + ornamentTrill: { + shiftX: -5, + shiftY: 4, + }, + }, + noteHead: { + minPadding: 2, + custom: { + noteheadCircleXStemUp: { + shiftX: -1.5, + }, + noteheadXWholeStemUp: { + shiftX: -5, + }, + noteheadTriangleUpWholeStemUp: { + shiftX: -6, + }, + }, + }, + chordSymbol: { + global: { + superscriptOffset: -400, + subscriptOffset: 300, + kerningOffset: -250, + lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'], + upperKerningText: ['A', 'L'], + spacing: 100, + superSubRatio: 0.66, + }, + csymDiminished: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 506, + yOffset: 0, + }, + csymHalfDiminished: { + scale: 0.8, + leftSideBearing: -32, + advanceWidth: 506, + yOffset: 0, + }, + csymAugmented: { + scale: 1, + leftSideBearing: 0, + advanceWidth: 530, + yOffset: 0, + }, + csymParensLeftTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 155, + yOffset: 250, + }, + csymParensRightTall: { + scale: 0.8, + leftSideBearing: -40, + advanceWidth: 189, + yOffset: 250, + }, + csymBracketLeftTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 328, + yOffset: 0, + }, + csymBracketRightTall: { + scale: 0.8, + leftSideBearing: 1, + advanceWidth: 600, + yOffset: 0, + }, + csymParensLeftVeryTall: { + scale: 0.9, + leftSideBearing: 0, + advanceWidth: 121, + yOffset: 350, + }, + csymParensRightVeryTall: { + scale: 0.9, + leftSideBearing: 50, + advanceWidth: 111, + yOffset: 350, + }, + csymDiagonalArrangementSlash: { + scale: 0.6, + leftSideBearing: -1, + advanceWidth: 990, + yOffset: 0, + }, + csymMinor: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 482, + yOffset: 0, + }, + csymMajorSeventh: { + scale: 0.9, + leftSideBearing: 200, + yOffset: 0, + advanceWidth: 600, + }, + accidentalSharp: { + scale: 0.75, + leftSideBearing: 40, + advanceWidth: 250, + yOffset: -402, + }, + accidentalFlat: { + scale: 0.95, + leftSideBearing: -50, + advanceWidth: 208, + yOffset: -184, + }, + }, + jazzOrnaments: { + brassScoop: { + scale: 1.0, + xOffset: -12, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 15, + }, + brassDoitMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 22, + }, + brassFallLipShort: { + scale: 1.0, + xOffset: 17, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 15, + }, + brassLiftMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 5, + stemUpYOffset: 0, + reportedWidth: 5, + }, + brassFallRoughMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 28, + stemUpYOffset: 0, + reportedWidth: 5, + }, + brassBend: { + scale: 1.0, + xOffset: 2, + yOffset: -8, + stemUpYOffset: 24, + reportedWidth: 5, + }, + brassMuteClosed: { + scale: 1.0, + xOffset: 3, + yOffset: -9, + stemUpYOffset: 24, + reportedWidth: 5, + }, + brassMuteOpen: { + scale: 1.0, + xOffset: 3, + yOffset: -7, + stemUpYOffset: 25, + reportedWidth: 5, + }, + brassFlip: { + scale: 1.0, + xOffset: 10, + yOffset: -4, + stemUpYOffset: 7, + reportedWidth: 5, + }, + brassJazzTurn: { + scale: 1.0, + xOffset: 3, + yOffset: -4, + stemUpYOffset: 10, + reportedWidth: 28, + }, + brassSmear: { + scale: 1.0, + xOffset: 10, + yOffset: -4, + stemUpYOffset: 9, + reportedWidth: 5, + }, + }, + tremolo: { + default: { + shiftY: -10, + }, + grace: { + shiftY: -5, + }, + }, + tuplet: { + noteHeadOffset: 20, + stemOffset: 10, + bottomLine: 4, + topModifierOffset: 15, + }, + }, +}; diff --git a/build/esm/src/fonts/leland_glyphs.js b/build/esm/src/fonts/leland_glyphs.js new file mode 100644 index 0000000000..39615d6aec --- /dev/null +++ b/build/esm/src/fonts/leland_glyphs.js @@ -0,0 +1,1183 @@ +export const LelandFont = { + glyphs: { + bracketTop: { + x_min: 0, + x_max: 491, + y_min: 0, + y_max: 279, + ha: 279, + o: 'm 697 399 b 687 402 694 400 690 402 b 671 395 681 402 674 400 b 249 168 668 390 524 168 l 20 168 b 0 150 9 168 0 161 l 0 20 l 0 0 l 176 0 b 706 374 619 0 704 370 b 707 382 706 376 707 379 b 697 399 707 389 703 395 z', + }, + bracketBottom: { + x_min: 0, + x_max: 491, + y_min: -279, + y_max: 0, + ha: 279, + o: 'm 697 -399 b 707 -382 703 -395 707 -389 b 706 -374 707 -379 706 -376 b 176 0 704 -370 619 0 l 0 0 l 0 -20 l 0 -150 b 20 -168 0 -161 9 -168 l 249 -168 b 671 -395 524 -168 668 -390 b 687 -402 674 -400 681 -402 b 697 -399 690 -402 694 -400 z', + }, + segno: { + x_min: 0, + x_max: 654, + y_min: 0, + y_max: 869, + ha: 869, + o: 'm 546 690 l 838 1207 b 841 1215 840 1210 841 1212 b 832 1233 841 1221 837 1230 l 809 1248 b 798 1251 806 1250 801 1251 b 780 1241 792 1251 783 1247 l 487 721 l 217 860 b 99 995 147 897 99 924 b 236 1165 99 1120 179 1165 b 343 1073 288 1165 325 1130 b 454 988 357 1022 405 988 b 477 991 461 988 469 989 b 541 1076 526 1002 541 1045 b 540 1089 541 1080 541 1084 b 294 1225 534 1116 514 1225 b 0 939 72 1225 0 1053 b 125 706 0 825 42 753 l 397 563 l 104 45 b 102 35 102 42 102 37 b 111 19 102 29 107 22 l 132 3 b 144 0 135 1 141 0 b 148 0 145 0 147 0 b 161 10 153 1 158 6 l 456 531 l 704 403 b 842 256 780 361 842 318 b 706 86 842 131 763 86 b 599 177 654 86 616 120 b 488 262 585 228 537 262 b 465 259 481 262 472 261 b 402 177 418 248 402 206 b 403 163 402 171 402 167 b 649 26 409 135 429 26 b 942 312 871 26 942 199 b 821 549 942 426 901 507 z m 52 444 b 118 416 69 426 95 416 b 183 444 141 416 166 426 b 210 508 200 461 210 485 b 183 573 210 531 200 556 b 118 600 166 590 141 600 b 52 573 95 600 69 590 b 24 508 35 556 24 531 b 52 444 24 485 35 461 z m 760 730 b 825 703 778 713 802 703 b 890 730 848 703 873 713 b 917 795 907 747 917 772 b 890 861 917 818 907 844 b 825 888 873 878 848 888 b 760 861 802 888 778 878 b 733 795 743 844 733 818 b 760 730 733 772 743 747 z', + }, + coda: { + x_min: 0, + x_max: 745, + y_min: -113, + y_max: 735, + ha: 848, + o: 'm 924 467 b 560 896 916 697 757 881 l 560 1038 b 540 1058 560 1050 552 1058 l 524 1058 b 505 1038 513 1058 505 1050 l 505 896 b 150 467 311 877 158 693 l 20 467 b 0 446 9 467 0 458 l 0 432 b 20 412 0 420 9 412 l 150 412 b 505 0 166 193 317 17 l 505 -143 b 524 -163 505 -154 513 -163 l 540 -163 b 560 -143 552 -163 560 -154 l 560 0 b 923 412 753 13 907 190 l 1054 412 b 1073 432 1066 412 1073 420 l 1073 446 b 1054 467 1073 458 1066 467 z m 560 467 l 560 852 b 773 467 716 837 773 671 z m 505 467 l 301 467 b 505 851 301 668 357 831 z m 505 412 l 505 45 b 301 412 366 65 301 219 z m 560 412 l 772 412 b 560 45 772 215 706 60 z', + }, + gClef: { + x_min: 0, + x_max: 640, + y_min: -666, + y_max: 1112, + ha: 1778, + o: 'm 809 -30 b 665 -279 809 -132 768 -238 b 586 186 635 -107 596 122 b 809 -30 716 186 809 98 z m 605 -297 b 521 -305 576 -302 549 -305 b 140 56 315 -305 140 -161 b 390 498 140 232 264 389 b 459 562 415 520 438 540 b 492 357 472 484 482 416 b 272 45 361 318 272 180 b 467 -194 272 -56 351 -194 b 491 -176 478 -194 491 -189 b 459 -144 491 -163 477 -156 b 372 -1 403 -109 372 -72 b 521 177 372 86 436 157 z m 478 1184 b 632 1392 491 1241 557 1392 b 688 1223 654 1392 688 1322 b 478 863 688 1073 577 960 b 462 1037 469 920 462 976 b 478 1184 462 1090 467 1139 z m 176 -739 b 444 -959 176 -834 249 -959 b 622 -910 511 -959 570 -942 b 720 -670 700 -855 720 -760 b 697 -467 720 -613 711 -549 b 675 -338 693 -438 684 -395 b 922 3 816 -292 922 -145 b 557 367 922 220 768 367 b 516 619 543 454 528 539 b 773 1188 668 779 773 959 b 710 1477 773 1319 733 1426 b 608 1601 675 1551 634 1601 b 505 1528 598 1601 553 1584 b 387 1113 413 1418 387 1234 b 419 804 387 1035 395 965 b 312 701 418 802 343 726 b 0 117 181 579 0 405 b 503 -364 0 -153 235 -364 b 616 -354 544 -364 583 -360 b 660 -670 644 -492 660 -593 b 438 -899 660 -819 583 -899 b 370 -891 403 -899 373 -891 b 366 -887 369 -890 366 -888 b 373 -881 366 -884 369 -883 b 508 -721 441 -871 508 -814 b 341 -562 508 -644 449 -562 b 176 -739 240 -562 176 -644 z', + }, + cClef: { + x_min: 0, + x_max: 627, + y_min: -480, + y_max: 482, + ha: 962, + o: 'm 19 675 b 0 657 9 675 0 667 l 0 -654 b 19 -672 0 -664 9 -672 l 122 -672 b 141 -654 132 -672 141 -664 l 141 657 b 122 675 141 667 132 675 z m 903 -376 b 619 -58 903 -197 808 -58 b 505 -95 586 -58 562 -60 b 426 1 503 -89 474 -32 b 505 98 474 35 503 92 b 641 60 560 65 579 60 b 903 379 816 60 903 223 b 580 694 903 580 755 694 b 318 517 472 694 318 649 b 438 400 318 446 367 400 b 546 510 501 400 546 446 b 425 615 546 589 494 615 b 547 651 458 638 503 651 b 723 400 698 651 723 530 b 593 128 723 289 720 128 b 438 279 467 128 441 265 b 418 300 438 281 438 300 b 396 279 397 300 396 281 b 264 29 383 200 344 62 l 264 657 b 246 675 264 667 256 675 b 228 657 236 675 228 667 l 228 -654 b 246 -672 228 -664 236 -672 b 264 -654 256 -672 264 -664 l 264 -26 b 396 -278 348 -60 380 -197 b 418 -297 396 -279 397 -297 b 438 -278 438 -297 438 -279 b 593 -125 441 -262 467 -125 b 723 -397 720 -125 723 -287 b 547 -648 723 -527 698 -648 b 425 -612 503 -648 458 -635 b 441 -613 426 -612 432 -613 b 546 -507 504 -613 546 -569 b 438 -397 546 -444 501 -397 b 318 -514 367 -397 318 -444 b 580 -691 318 -647 472 -691 b 903 -376 755 -691 903 -577 z', + }, + fClef: { + x_min: 0, + x_max: 664, + y_min: -617, + y_max: 251, + ha: 868, + o: 'm 366 361 b 167 298 256 361 168 298 b 37 112 84 236 50 163 b 27 36 30 86 27 60 b 46 -58 27 1 33 -30 b 140 -138 63 -96 96 -124 b 194 -147 157 -144 176 -147 b 287 -122 226 -147 259 -138 b 359 10 331 -98 359 -46 b 289 134 359 60 333 107 b 206 160 259 154 230 160 b 160 153 189 160 173 157 b 109 122 145 147 121 132 b 147 215 114 150 131 192 b 219 279 163 238 194 266 b 351 308 255 300 301 308 b 570 -52 498 308 570 190 b 477 -399 570 -186 520 -314 b 310 -635 429 -494 366 -585 b 17 -837 160 -772 19 -837 b 0 -864 17 -837 0 -847 b 1 -871 0 -867 1 -868 b 27 -888 6 -886 19 -888 b 35 -887 29 -888 33 -887 b 331 -717 36 -887 200 -819 b 528 -544 405 -664 471 -606 b 661 -367 580 -488 625 -428 b 760 -50 724 -259 760 -147 b 670 239 760 69 729 168 b 366 361 602 320 500 361 z m 818 179 b 887 107 818 138 850 107 b 956 179 924 107 956 138 b 887 252 956 219 924 252 b 818 179 850 252 818 219 z m 818 -177 b 887 -251 818 -217 850 -251 b 956 -177 924 -251 956 -217 b 887 -104 956 -137 924 -104 b 818 -177 850 -104 818 -137 z', + }, + unpitchedPercussionClef1: { + x_min: 0, + x_max: 352, + y_min: -252, + y_max: 252, + ha: 504, + o: 'm 19 363 b 0 344 9 363 0 354 l 0 -344 b 19 -363 0 -354 9 -363 l 177 -363 b 196 -344 187 -363 196 -354 l 196 344 b 177 363 196 354 187 363 z m 330 363 b 311 344 320 363 311 354 l 311 -344 b 330 -363 311 -354 320 -363 l 488 -363 b 507 -344 498 -363 507 -354 l 507 344 b 488 363 507 354 498 363 z', + }, + '6stringTabClef': { + x_min: 0, + x_max: 439, + y_min: -743, + y_max: 746, + ha: 1489, + o: 'm 52 1074 l 52 958 l 249 958 l 249 419 l 387 419 l 387 958 l 583 958 l 583 1074 z m 0 -333 l 145 -333 l 192 -196 l 436 -196 l 481 -333 l 632 -333 l 396 334 l 238 334 z m 315 181 l 400 -81 l 229 -81 z m 566 -474 b 393 -402 531 -428 475 -403 l 71 -402 l 71 -1070 l 372 -1070 b 374 -1070 373 -1070 373 -1070 b 465 -1061 405 -1070 435 -1067 b 541 -1027 494 -1056 520 -1043 b 588 -975 560 -1012 575 -995 b 618 -868 608 -943 618 -907 b 592 -770 618 -829 609 -798 b 514 -711 575 -743 549 -724 b 566 -674 537 -700 554 -688 b 596 -576 586 -649 596 -616 b 566 -474 596 -536 586 -503 z m 348 -518 b 428 -528 380 -518 408 -521 b 464 -590 452 -539 464 -559 b 436 -649 464 -619 455 -638 b 366 -665 418 -661 395 -665 l 203 -665 l 203 -518 z m 367 -776 b 435 -788 396 -776 419 -780 b 477 -858 464 -801 477 -824 b 433 -942 477 -900 462 -927 b 366 -953 418 -949 395 -953 l 203 -953 l 203 -776 z', + }, + timeSig0: { + x_min: 15, + x_max: 389, + y_min: -254, + y_max: 255, + ha: 509, + o: 'm 291 367 b 22 0 138 367 22 209 b 291 -366 22 -209 138 -366 b 560 0 444 -366 560 -209 b 291 367 560 209 444 367 z m 376 -200 b 291 -308 376 -252 353 -308 b 206 -200 229 -308 206 -252 l 206 200 b 291 308 206 252 229 308 b 376 200 353 308 376 252 z', + }, + timeSig1: { + x_min: 15, + x_max: 336, + y_min: -243, + y_max: 245, + ha: 488, + o: 'm 359 -284 l 359 336 b 341 353 359 346 351 353 l 199 353 b 190 350 196 353 193 351 b 184 344 189 348 186 346 l 23 65 b 22 56 22 62 22 59 b 30 42 22 50 26 45 l 58 26 b 66 23 60 24 63 23 b 81 32 72 23 78 27 l 183 207 l 183 -284 l 73 -284 b 56 -301 63 -284 56 -291 l 56 -333 b 73 -350 56 -343 63 -350 l 468 -350 b 484 -333 478 -350 484 -343 l 484 -301 b 468 -284 484 -291 478 -284 z', + }, + timeSig2: { + x_min: 15, + x_max: 377, + y_min: -243, + y_max: 245, + ha: 488, + o: 'm 492 -56 b 382 -192 481 -88 452 -192 b 190 -134 288 -192 268 -134 b 153 -138 179 -134 167 -135 b 341 -36 153 -138 189 -84 b 533 173 494 12 533 86 b 288 353 533 233 505 353 b 30 156 71 353 30 222 b 138 49 30 96 79 49 b 245 156 197 49 245 96 b 179 255 245 196 216 240 b 168 271 174 256 168 264 b 202 297 168 279 176 289 b 251 304 209 300 229 304 b 311 288 271 304 294 300 b 348 180 338 271 348 245 b 65 -150 348 12 148 -24 b 22 -278 65 -150 22 -210 b 73 -350 22 -346 56 -350 b 121 -305 96 -350 121 -331 b 117 -287 121 -300 120 -294 b 105 -239 108 -266 105 -251 b 107 -226 105 -235 105 -230 b 154 -203 108 -217 120 -203 b 238 -289 196 -203 212 -252 b 350 -350 264 -327 304 -350 b 484 -264 396 -350 458 -317 b 543 -63 510 -210 543 -102 b 518 -36 543 -45 531 -36 b 492 -56 508 -36 498 -42 z', + }, + timeSig3: { + x_min: 14.984905204685425, + x_max: 364, + y_min: -244, + y_max: 244, + ha: 488, + o: 'm 392 23 b 514 168 507 68 514 143 b 514 176 514 171 514 174 b 262 351 514 189 510 351 b 22 176 14 351 22 176 l 23 176 l 22 173 b 115 81 22 121 63 81 b 207 173 167 81 207 121 b 135 264 207 215 176 255 b 140 268 137 265 138 266 b 215 289 160 282 187 289 b 340 176 275 289 340 253 b 255 69 340 85 272 72 b 140 60 238 66 157 60 b 121 40 122 60 121 40 l 121 12 b 140 -6 121 12 124 -4 b 243 -14 164 -7 197 -7 b 340 -167 307 -23 340 -66 b 215 -289 340 -264 275 -289 b 121 -266 174 -289 137 -278 b 207 -174 168 -264 207 -222 b 115 -81 207 -122 167 -81 b 22 -174 63 -81 22 -122 b 22 -180 22 -174 22 -177 b 78 -298 22 -199 26 -251 b 236 -351 134 -350 204 -351 b 524 -147 374 -351 524 -304 b 389 23 524 -42 452 3 z', + }, + timeSig4: { + x_min: 14, + x_max: 442, + y_min: -248, + y_max: 249, + ha: 497, + o: 'm 300 -183 l 300 -289 l 180 -289 b 160 -310 170 -289 160 -298 l 160 -337 b 180 -357 160 -348 170 -357 l 616 -357 b 636 -337 628 -357 636 -348 l 636 -310 b 616 -289 636 -298 628 -289 l 487 -289 l 487 -183 l 616 -183 b 636 -161 628 -183 636 -173 l 636 -134 b 616 -114 636 -124 628 -114 l 487 -114 l 487 115 b 477 134 487 124 482 131 l 459 143 b 452 144 456 144 455 144 b 449 144 451 144 451 144 b 436 140 445 144 439 143 l 305 20 b 300 4 301 16 300 10 l 300 -114 l 132 -114 b 464 287 132 -114 294 59 b 471 307 469 294 471 301 b 467 321 471 314 468 320 l 435 353 b 420 359 431 356 426 359 b 206 359 412 359 217 359 b 187 341 196 359 189 350 b 143 118 187 341 180 235 b 24 -124 105 1 62 -71 b 20 -140 24 -124 20 -131 b 22 -148 20 -143 20 -145 b 36 -174 26 -158 36 -174 b 52 -183 36 -174 39 -183 z', + }, + timeSig5: { + x_min: 15, + x_max: 362, + y_min: -244, + y_max: 246, + ha: 490, + o: 'm 39 314 b 46 170 39 314 46 245 b 46 151 46 164 46 157 b 39 -24 45 71 39 -24 b 39 -29 39 -24 39 -26 b 49 -48 39 -35 40 -46 b 99 -59 62 -50 92 -58 b 107 -59 102 -59 104 -59 b 121 -49 112 -59 118 -58 b 235 45 128 -30 144 45 b 356 -112 337 45 356 -43 b 238 -292 356 -184 333 -288 b 226 -292 233 -292 230 -292 b 166 -282 193 -292 174 -288 b 158 -274 161 -281 158 -276 b 164 -264 158 -269 160 -266 b 222 -168 177 -255 222 -239 b 117 -71 222 -98 173 -71 b 22 -171 60 -71 22 -122 b 111 -318 22 -220 36 -275 b 252 -351 147 -338 199 -351 b 456 -275 325 -351 405 -328 b 521 -109 503 -228 521 -167 b 433 79 521 -32 487 43 b 271 124 397 104 336 124 b 131 84 223 124 173 112 b 125 82 130 82 127 82 b 115 92 120 82 115 86 l 115 183 b 131 199 115 192 122 199 l 132 199 b 252 192 154 197 202 192 b 372 209 295 192 340 196 b 474 320 439 236 462 289 b 477 334 475 324 477 330 b 451 354 477 346 469 354 b 431 351 445 354 439 353 b 252 328 360 334 305 328 b 88 343 200 328 150 334 b 71 344 88 343 81 344 b 39 320 56 344 39 340 b 39 314 39 317 39 315 z', + }, + timeSig6: { + x_min: 15, + x_max: 387, + y_min: -244, + y_max: 245, + ha: 489, + o: 'm 356 69 b 216 22 268 69 236 43 b 209 98 212 52 209 75 b 216 167 209 121 212 141 b 338 287 225 220 261 287 b 410 259 374 287 396 275 b 356 174 380 246 356 207 b 448 82 356 122 396 82 b 541 174 500 82 541 122 l 541 177 b 541 179 541 177 541 177 b 533 225 541 192 539 213 b 310 353 514 276 454 353 b 58 163 180 353 86 229 b 22 -23 43 128 22 58 b 131 -285 22 -111 46 -210 b 318 -351 215 -348 268 -351 b 557 -125 369 -351 557 -292 b 356 69 557 16 446 69 z m 302 -291 b 216 -145 255 -291 216 -226 b 302 1 216 -65 255 1 b 390 -145 350 1 390 -65 b 302 -291 390 -226 350 -291 z', + }, + timeSig7: { + x_min: 15, + x_max: 366, + y_min: -250, + y_max: 251, + ha: 501, + o: 'm 233 -177 b 160 -336 202 -225 160 -282 b 180 -360 160 -351 164 -360 b 264 -351 203 -360 217 -354 b 278 -350 268 -351 274 -350 b 369 -360 320 -350 359 -360 b 405 -331 382 -360 406 -344 b 405 -327 405 -330 405 -328 b 396 -226 405 -324 396 -279 b 408 -130 396 -196 399 -161 b 503 151 425 -62 471 60 b 527 308 518 196 527 275 b 526 341 527 321 527 327 b 510 361 524 356 518 361 b 484 361 503 361 491 361 b 467 341 477 361 467 356 b 406 228 467 327 464 228 b 235 351 346 228 328 351 b 86 252 145 351 91 261 l 86 321 b 71 337 86 330 79 337 l 37 337 b 22 321 29 337 22 330 l 22 55 b 37 39 22 46 29 39 l 71 39 b 86 55 79 39 86 46 l 86 101 b 158 179 86 134 108 179 b 328 124 209 179 213 124 b 425 143 357 124 410 128 b 233 -177 413 120 266 -130 z', + }, + timeSig8: { + x_min: 15, + x_max: 393, + y_min: -248, + y_max: 246, + ha: 494, + o: 'm 467 26 b 547 166 514 62 547 108 b 294 354 547 269 433 354 b 40 166 154 354 40 269 b 122 13 40 108 55 56 b 22 -147 58 -24 22 -78 b 294 -357 22 -264 144 -357 b 566 -147 444 -357 566 -264 b 467 26 566 -78 541 -13 z m 294 -276 b 122 -145 202 -276 122 -226 b 197 -26 122 -49 197 -26 b 435 -187 295 -59 435 -108 b 294 -276 435 -226 384 -276 z m 386 65 b 180 209 288 96 180 144 b 294 288 180 265 232 288 b 444 180 383 288 444 246 b 386 65 444 111 412 78 z', + }, + timeSig9: { + x_min: 15, + x_max: 387, + y_min: -244, + y_max: 245, + ha: 489, + o: 'm 223 -68 b 363 -20 311 -68 343 -42 b 370 -96 367 -50 370 -73 b 363 -166 370 -120 367 -140 b 240 -285 354 -219 318 -285 b 168 -258 204 -285 183 -274 b 223 -173 199 -245 223 -206 b 131 -81 223 -121 183 -81 b 37 -173 79 -81 37 -121 l 37 -176 b 37 -177 37 -176 37 -176 b 46 -223 37 -190 40 -212 b 269 -351 65 -275 125 -351 b 521 -161 399 -351 492 -228 b 557 24 536 -127 557 -56 b 448 287 557 112 533 212 b 261 353 364 350 311 353 b 22 127 210 353 22 294 b 223 -68 22 -14 132 -68 z m 276 294 b 363 147 324 294 363 228 b 276 1 363 66 324 1 b 189 147 229 1 189 66 b 276 294 189 228 229 294 z', + }, + timeSigCommon: { + x_min: 0, + x_max: 463, + y_min: -256, + y_max: 258, + ha: 514, + o: 'm 468 258 b 406 147 432 235 406 193 b 408 130 406 141 406 135 b 521 17 415 71 462 24 b 537 17 526 17 533 17 b 667 147 609 17 667 75 b 667 156 667 147 667 151 b 664 177 667 161 665 171 b 350 372 651 239 595 372 b 0 17 36 372 0 111 b 382 -369 0 -154 22 -369 b 641 -131 524 -369 635 -285 b 629 -120 641 -124 636 -120 l 611 -120 b 599 -131 605 -120 599 -125 b 382 -323 593 -251 508 -323 b 196 -128 256 -323 196 -255 l 196 147 b 356 320 196 228 228 320 b 469 271 423 320 454 295 b 471 264 471 268 471 266 b 468 258 471 262 471 259 z', + }, + timeSigCutCommon: { + x_min: 0, + x_max: 463, + y_min: -376, + y_max: 388, + ha: 764, + o: 'm 611 -120 b 599 -131 605 -120 599 -125 b 382 -323 593 -251 508 -323 b 369 -323 377 -323 373 -323 l 369 320 b 469 269 428 317 455 292 b 471 264 471 266 471 265 b 468 258 471 261 471 259 b 406 147 432 235 406 193 b 408 130 406 141 406 135 b 523 17 415 71 464 24 b 537 17 527 17 533 17 b 667 147 609 17 667 75 b 667 156 667 147 667 151 b 664 177 667 161 665 171 b 369 370 651 236 598 364 l 369 543 b 353 559 369 552 361 559 l 314 559 b 298 543 305 559 298 552 l 298 369 b 0 17 32 341 0 105 b 298 -364 0 -140 17 -334 l 298 -526 b 314 -541 298 -534 305 -541 l 353 -541 b 369 -526 361 -541 369 -534 l 369 -369 b 382 -369 373 -369 377 -369 b 641 -131 524 -369 635 -285 b 629 -120 641 -124 636 -120 z m 196 147 b 298 312 196 215 216 289 l 298 -310 b 196 -128 229 -285 196 -223 z', + }, + timeSigPlus: { + x_min: 0, + x_max: 408, + y_min: -204, + y_max: 204, + ha: 408, + o: 'm 327 33 l 327 275 b 308 294 327 285 318 294 l 279 294 b 261 275 269 294 261 285 l 261 33 l 19 33 b 0 14 9 33 0 24 l 0 -13 b 19 -33 0 -23 9 -33 l 261 -33 l 261 -274 b 279 -294 261 -284 269 -294 l 308 -294 b 327 -274 318 -294 327 -284 l 327 -33 l 567 -33 b 588 -13 577 -33 588 -23 l 588 14 b 567 33 588 24 577 33 z', + }, + noteheadDoubleWhole: { + x_min: 0, + x_max: 538, + y_min: -178, + y_max: 179, + ha: 357, + o: 'm 33 258 b 20 258 27 258 26 258 b 0 238 9 258 0 249 b 0 -236 0 226 0 -226 b 20 -256 0 -246 9 -256 b 33 -256 26 -256 27 -256 b 53 -236 43 -256 53 -245 b 53 238 53 -228 53 226 b 33 258 53 249 45 258 z m 649 258 b 636 258 644 258 642 258 b 616 238 625 258 616 249 b 616 125 616 235 616 187 b 389 196 573 167 500 196 b 160 125 276 196 203 167 b 160 238 160 187 160 235 b 140 258 160 249 151 258 b 127 258 134 258 132 258 b 107 238 115 258 107 249 b 107 -236 107 226 107 -226 b 127 -256 107 -246 115 -256 b 140 -256 132 -256 134 -256 b 160 -236 150 -256 160 -245 b 160 -122 160 -233 160 -186 b 389 -194 203 -166 276 -194 b 616 -122 500 -194 573 -166 b 616 -236 616 -186 616 -233 b 636 -256 616 -246 625 -256 b 649 -256 642 -256 644 -256 b 670 -236 660 -256 670 -245 b 670 238 670 -228 670 226 b 649 258 670 249 661 258 z m 462 -140 b 400 -148 445 -144 422 -148 b 314 -101 360 -148 333 -135 b 268 68 295 -65 269 29 b 268 76 268 71 268 73 b 314 141 268 109 282 130 b 377 150 331 145 354 150 b 462 102 416 150 442 140 b 510 -66 482 63 510 -29 b 462 -140 510 -104 497 -128 z m 755 258 b 742 258 749 258 747 258 b 721 238 730 258 721 249 b 721 -236 721 226 721 -226 b 742 -256 721 -246 730 -256 b 755 -256 747 -256 749 -256 b 775 -236 765 -256 775 -245 b 775 238 775 -228 775 226 b 755 258 775 249 766 258 z', + }, + noteheadWhole: { + x_min: 0, + x_max: 373, + y_min: -134, + y_max: 136, + ha: 270, + o: 'm 269 196 b 0 1 71 196 0 95 b 269 -193 0 -92 71 -193 b 537 1 468 -193 537 -92 b 269 196 537 95 468 196 z m 343 -138 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 148 68 176 -63 150 29 b 194 141 145 107 160 130 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 389 -65 363 63 389 -29 b 343 -138 389 -102 377 -128 z', + }, + noteheadHalf: { + x_min: 0, + x_max: 325, + y_min: -133, + y_max: 132, + ha: 265, + o: 'm 307 190 b 0 -60 167 190 0 73 b 161 -192 0 -122 45 -192 b 468 58 311 -192 468 -69 b 307 190 468 143 396 190 z m 268 -63 b 108 -124 264 -66 158 -124 b 50 -72 60 -124 50 -85 b 200 62 50 -12 194 59 b 360 122 206 65 308 122 b 418 71 395 122 418 102 b 268 -63 418 9 272 -60 z', + }, + noteheadBlack: { + x_min: 0, + x_max: 325, + y_min: -133, + y_max: 132, + ha: 265, + o: 'm 0 -60 b 161 -192 0 -122 45 -192 b 468 58 311 -192 468 -69 b 307 190 468 143 396 190 b 0 -60 167 190 0 72 z', + }, + noteheadXBlack: { + x_min: 0, + x_max: 325, + y_min: -132, + y_max: 132, + ha: 264, + o: 'm 461 138 b 468 153 465 141 468 147 l 468 154 b 462 167 468 160 465 164 l 445 184 b 431 190 441 187 436 190 b 418 186 426 190 420 189 l 235 40 l 50 186 b 37 190 48 189 42 190 b 24 184 32 190 29 187 l 6 167 b 0 153 3 164 0 158 b 7 138 0 147 3 141 l 183 0 l 7 -138 b 0 -153 3 -141 0 -147 b 6 -166 0 -157 3 -163 l 23 -184 b 37 -190 26 -189 32 -190 b 50 -186 42 -190 48 -189 l 235 -40 l 418 -186 b 431 -190 420 -189 426 -190 b 445 -184 436 -190 442 -189 l 462 -166 b 468 -153 465 -163 468 -157 b 461 -138 468 -147 465 -141 l 285 0 z', + }, + noteheadCircleX: { + x_min: 0, + x_max: 325, + y_min: -162, + y_max: 163, + ha: 325, + o: 'm 265 0 l 395 105 b 426 0 415 75 426 39 b 387 -115 426 -43 412 -84 z m 233 -27 l 360 -145 b 235 -192 327 -174 282 -192 b 99 -137 183 -192 134 -171 z m 202 1 l 73 -105 b 42 0 53 -75 42 -39 b 81 115 42 43 56 84 z m 235 29 l 108 145 b 233 193 141 174 186 193 b 369 138 285 193 334 173 z m 233 235 b 0 0 104 235 0 130 b 233 -233 0 -130 104 -233 b 468 0 363 -233 468 -130 b 233 235 468 130 363 235 z', + }, + noteheadDoubleWholeSquare: { + x_min: 0, + x_max: 432, + y_min: -179, + y_max: 177, + ha: 356, + o: 'm 590 255 b 570 235 579 255 570 246 l 570 203 l 53 203 l 53 235 b 33 255 53 246 45 255 l 20 255 b 0 235 9 255 0 246 l 0 -230 b 20 -251 0 -242 9 -251 l 33 -251 b 53 -230 45 -251 53 -242 l 53 -200 l 570 -200 l 570 -238 b 590 -258 570 -249 579 -258 l 603 -258 b 622 -238 615 -258 622 -249 l 622 235 b 603 255 622 246 615 255 z m 570 -101 l 53 -101 l 53 105 l 570 105 z', + }, + noteheadSquareWhite: { + x_min: 0, + x_max: 310, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 395 128 l 395 -128 l 52 -128 l 52 128 z m 446 180 l 0 180 l 0 -180 l 446 -180 z', + }, + noteheadSquareBlack: { + x_min: 0, + x_max: 310, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 446 180 l 0 180 l 0 -180 l 446 -180 z', + }, + noteheadTriangleUpBlack: { + x_min: 0, + x_max: 310, + y_min: -136, + y_max: 122, + ha: 258, + o: 'm 223 176 l 0 -196 l 446 -196 z', + }, + noteheadSlashedDoubleWhole1: { + x_min: -66, + x_max: 456, + y_min: -213, + y_max: 212, + ha: 425, + o: 'm 652 298 b 638 305 649 304 644 305 b 626 301 634 305 629 304 l 560 248 b 543 256 557 253 550 256 b 530 256 537 256 536 256 b 510 236 518 256 510 248 b 510 204 510 235 510 223 l 455 161 b 281 194 413 181 356 194 b 53 124 168 194 96 166 b 53 236 53 186 53 233 b 29 256 53 253 42 256 b 20 256 26 256 23 256 b 0 236 9 256 0 248 b 0 -204 0 228 0 -98 l -88 -272 b -95 -288 -92 -276 -95 -282 b -91 -300 -95 -291 -94 -295 b -76 -307 -86 -304 -82 -307 b -65 -302 -72 -307 -68 -305 l 3 -248 b 20 -258 6 -253 12 -258 b 53 -238 33 -258 52 -255 b 53 -206 53 -236 53 -225 l 107 -161 b 281 -196 148 -183 206 -196 b 510 -124 393 -196 465 -166 b 510 -238 510 -187 510 -235 b 530 -258 510 -248 518 -258 b 563 -238 543 -258 563 -255 b 563 204 563 -229 563 98 l 649 272 b 657 288 655 276 657 282 b 652 298 657 291 655 295 z m 160 75 b 269 148 160 138 219 148 b 356 101 310 148 334 140 b 363 85 357 96 360 91 l 189 -56 b 160 66 174 -14 161 40 b 160 75 160 69 160 72 z m 53 -163 b 53 -124 53 -151 53 -138 b 76 -144 60 -131 68 -138 z m 402 -68 b 292 -148 402 -138 351 -148 b 207 -101 252 -150 226 -137 b 199 -84 204 -96 202 -91 l 373 56 b 402 -68 389 13 402 -40 z m 510 124 b 485 144 503 131 494 137 l 510 163 b 510 124 510 151 510 137 z', + }, + noteheadSlashedWhole1: { + x_min: -75, + x_max: 448, + y_min: -211, + y_max: 214, + ha: 425, + o: 'm 641 301 b 625 308 636 305 631 308 b 613 304 621 307 618 307 l 439 160 b 269 196 399 181 343 196 b 0 1 71 196 0 95 b 69 -138 0 -49 20 -101 l -101 -271 b -108 -287 -105 -275 -108 -281 b -104 -298 -107 -291 -107 -294 b -88 -304 -99 -302 -94 -304 b -76 -301 -85 -304 -81 -304 l 98 -157 b 269 -193 138 -179 194 -193 b 537 1 468 -193 537 -92 b 468 141 537 52 517 104 l 638 274 b 645 289 642 278 645 284 b 641 301 644 292 644 297 z m 148 68 b 148 78 148 72 148 75 b 194 141 148 111 163 131 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 350 86 346 98 348 92 l 177 -55 b 148 68 163 -12 150 42 z m 389 -65 b 343 -138 389 -102 377 -128 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 187 -82 192 -95 190 -89 l 279 -6 l 361 58 b 389 -65 376 16 389 -39 z', + }, + noteheadSlashedHalf1: { + x_min: -98, + x_max: 424, + y_min: -213, + y_max: 212, + ha: 425, + o: 'm 606 298 b 592 305 602 302 598 305 b 580 301 588 305 583 304 l 412 163 b 307 190 383 180 347 190 b 153 148 258 190 204 176 b 0 -60 58 98 0 13 b 14 -120 0 -81 4 -101 b 32 -143 20 -128 26 -135 l -134 -274 b -141 -288 -138 -276 -141 -282 b -137 -300 -141 -292 -140 -297 b -122 -307 -134 -304 -128 -307 b -111 -302 -118 -307 -114 -305 l 56 -164 b 161 -192 85 -181 121 -192 b 315 -151 210 -192 264 -179 b 468 58 410 -101 468 -16 b 454 117 468 78 464 98 b 436 141 449 125 444 134 l 603 272 b 611 287 608 275 611 281 b 606 298 611 291 609 295 z m 56 -98 b 49 -73 52 -91 49 -82 b 75 -23 49 -58 59 -39 b 199 60 99 1 147 32 b 337 118 251 89 302 111 b 359 121 344 120 351 121 b 361 121 360 121 360 121 l 225 9 l 69 -114 b 56 -98 65 -109 60 -104 z m 410 94 b 416 69 415 86 416 78 b 392 19 416 53 408 36 b 266 -65 367 -6 318 -36 b 128 -122 215 -94 163 -115 b 107 -125 121 -124 114 -125 b 104 -125 107 -125 105 -125 l 245 -9 l 396 111 b 410 94 402 107 408 101 z', + }, + noteheadSlashedBlack1: { + x_min: -98, + x_max: 424, + y_min: -213, + y_max: 212, + ha: 425, + o: 'm 606 298 b 592 305 602 302 598 305 b 580 301 588 305 583 304 l 412 161 b 307 190 383 180 347 190 b 0 -60 167 190 0 72 b 32 -144 0 -89 10 -120 l -134 -274 b -141 -288 -138 -278 -141 -284 b -137 -301 -141 -292 -140 -297 b -122 -307 -134 -305 -128 -307 b -111 -304 -118 -307 -114 -307 l 56 -164 b 161 -192 82 -181 117 -192 b 468 58 311 -192 468 -71 b 436 141 468 91 456 120 l 603 271 b 611 285 608 275 611 281 b 606 298 611 289 609 294 z', + }, + noteheadSlashedDoubleWhole2: { + x_min: -66, + x_max: 456, + y_min: -213, + y_max: 212, + ha: 425, + o: 'm 563 -204 b 563 236 563 -98 563 228 b 543 256 563 249 554 256 b 530 256 537 256 536 256 b 510 236 518 256 510 248 b 510 124 510 233 510 187 b 281 194 467 166 393 194 b 107 161 207 194 150 181 l 53 204 b 53 236 53 223 53 235 b 33 256 53 249 45 256 b 20 256 27 256 26 256 b 3 246 12 256 6 253 l -63 301 b -76 305 -68 304 -72 305 b -91 298 -81 305 -86 304 b -95 287 -94 295 -95 291 b -88 272 -95 281 -92 276 l 0 204 b 0 -238 0 98 0 -229 b 20 -258 0 -248 9 -258 b 33 -258 26 -258 27 -258 b 53 -238 43 -258 53 -246 b 53 -124 53 -235 53 -187 b 281 -196 96 -166 170 -196 b 456 -161 356 -196 413 -183 l 510 -206 b 510 -238 510 -225 510 -236 b 530 -258 510 -248 518 -258 b 543 -258 536 -258 537 -258 b 560 -246 549 -258 556 -252 l 626 -302 b 638 -307 631 -305 634 -307 b 654 -300 645 -307 649 -304 b 657 -288 655 -295 657 -292 b 651 -272 657 -282 655 -276 z m 207 140 b 269 148 225 144 248 148 b 356 101 310 148 336 140 b 402 -68 376 62 402 -30 b 402 -78 402 -71 402 -75 l 292 9 l 168 109 b 207 140 176 124 189 134 z m 78 144 b 53 124 69 137 60 131 b 53 163 53 137 53 150 z m 356 -141 b 294 -148 338 -145 315 -148 b 207 -101 253 -148 226 -137 b 161 66 189 -66 163 27 b 160 72 161 69 160 71 b 161 78 160 75 160 76 l 271 -9 l 395 -109 b 356 -141 387 -124 374 -134 z m 485 -144 b 510 -124 494 -138 503 -131 b 510 -163 510 -138 510 -151 z', + }, + noteheadSlashedWhole2: { + x_min: -75, + x_max: 448, + y_min: -212, + y_max: 214, + ha: 426, + o: 'm 468 -138 b 537 1 517 -101 537 -49 b 269 196 537 95 468 196 b 98 160 196 196 140 181 l -76 304 b -88 308 -81 307 -84 307 b -104 301 -94 308 -99 305 b -108 289 -107 297 -107 292 b -101 274 -108 284 -105 278 l 69 141 b 0 1 20 104 0 52 b 269 -193 0 -92 71 -193 b 441 -157 343 -193 399 -179 l 613 -301 b 625 -305 618 -304 622 -305 b 641 -298 631 -305 636 -302 b 645 -287 644 -294 644 -291 b 638 -271 645 -281 642 -275 z m 194 141 b 256 150 212 147 235 150 b 343 102 297 150 323 141 b 389 -65 363 63 389 -29 b 389 -76 389 -69 389 -73 l 279 10 l 156 112 b 194 141 163 125 176 135 z m 343 -138 b 281 -147 325 -144 302 -147 b 194 -99 240 -147 213 -135 b 148 68 176 -63 150 29 b 148 76 148 71 148 73 b 148 81 148 78 148 79 l 258 -6 l 382 -108 b 343 -138 374 -122 361 -132 z', + }, + noteheadSlashedHalf2: { + x_min: -98, + x_max: 424, + y_min: -213, + y_max: 212, + ha: 425, + o: 'm 386 -102 b 468 58 438 -55 468 4 b 454 117 468 78 464 98 b 307 190 428 164 373 190 b 153 148 258 190 204 176 b 108 120 137 140 122 130 l -111 301 b -122 305 -114 304 -118 305 b -137 298 -128 305 -134 302 b -141 287 -140 295 -141 291 b -134 272 -141 281 -138 275 l 85 101 b 0 -60 32 53 0 -7 b 14 -120 0 -81 4 -101 b 161 -192 40 -167 95 -192 b 315 -151 210 -192 264 -179 b 361 -122 333 -143 347 -132 l 580 -302 b 592 -307 583 -305 588 -307 b 606 -300 598 -307 602 -304 b 611 -288 609 -297 611 -292 b 603 -274 611 -282 608 -276 z m 199 60 b 337 118 251 89 302 111 b 359 121 344 120 351 121 b 410 94 382 121 400 112 b 416 69 415 86 416 78 b 392 19 416 53 408 36 b 308 -42 374 0 343 -20 l 245 7 l 189 55 b 199 60 192 56 196 58 z m 266 -65 b 128 -122 215 -94 163 -115 b 107 -125 121 -124 114 -125 b 56 -98 84 -125 66 -117 b 49 -73 52 -91 49 -82 b 75 -23 49 -58 59 -39 b 163 39 94 -4 125 17 l 225 -9 l 282 -56 b 266 -65 276 -59 272 -62 z', + }, + noteheadSlashedBlack2: { + x_min: -98.44444444444443, + x_max: 424, + y_min: -213, + y_max: 212, + ha: 425, + o: 'm 384 -102 b 468 58 435 -58 468 0 b 307 190 468 143 396 190 b 108 121 239 190 167 163 l -111 301 b -124 305 -115 304 -120 305 b -138 298 -128 305 -134 302 b -141 289 -140 295 -141 292 b -141 287 -141 288 -143 288 b -135 272 -141 281 -140 275 l 84 101 b 0 -60 35 56 0 0 b 161 -192 0 -122 45 -192 b 361 -122 232 -192 304 -164 l 579 -302 b 590 -307 583 -305 588 -307 b 606 -300 596 -307 602 -304 b 611 -288 609 -297 611 -292 b 603 -274 609 -282 608 -276 z', + }, + noteheadDiamondDoubleWhole: { + x_min: 0, + x_max: 373, + y_min: -178, + y_max: 179, + ha: 357, + o: 'm 504 258 b 484 238 494 258 484 248 l 484 46 b 282 187 415 95 285 186 b 268 192 279 190 275 192 b 255 187 262 192 258 190 l 52 45 l 52 238 b 33 258 52 248 43 258 l 20 258 b 0 238 9 258 0 248 l 0 -236 b 20 -256 0 -248 9 -256 l 33 -256 b 52 -236 43 -256 52 -248 l 52 -45 l 249 -181 b 268 -190 258 -189 264 -190 b 282 -186 274 -190 279 -189 b 484 -43 285 -184 413 -94 l 484 -236 b 504 -256 484 -248 494 -256 l 517 -256 b 537 -236 528 -256 537 -248 l 537 238 b 517 258 537 248 528 258 z m 220 -115 l 102 -33 l 317 117 l 435 35 z', + }, + noteheadDiamondWhole: { + x_min: 0, + x_max: 373, + y_min: -133, + y_max: 132, + ha: 265, + o: 'm 282 -187 b 530 -13 285 -186 530 -13 b 537 0 534 -10 537 -6 b 530 13 537 4 534 10 b 282 186 530 13 287 183 b 268 190 279 189 275 190 b 255 186 262 190 258 189 l 7 12 b 0 -1 3 9 0 4 b 4 -13 0 -6 1 -10 l 249 -183 b 268 -192 258 -190 264 -192 b 282 -187 274 -192 279 -190 z m 220 -117 l 102 -35 l 317 115 l 435 33 z', + }, + noteheadDiamondHalf: { + x_min: 0, + x_max: 335, + y_min: -132, + y_max: 133, + ha: 265, + o: 'm 475 -13 b 482 0 480 -10 482 -6 b 475 13 482 4 480 10 l 253 187 b 240 192 251 190 246 192 b 229 187 236 192 232 190 l 7 13 b 0 0 3 10 0 6 b 7 -13 0 -4 3 -10 l 229 -186 b 240 -190 232 -189 236 -190 b 253 -186 246 -190 251 -189 z m 284 -115 l 92 33 l 199 117 l 390 -33 z', + }, + noteheadDiamondBlack: { + x_min: 0, + x_max: 335, + y_min: -132, + y_max: 133, + ha: 265, + o: 'm 475 -14 b 482 -1 480 -10 482 -6 b 475 13 482 4 480 10 l 253 187 b 240 192 251 190 246 192 b 229 187 236 192 232 190 l 7 13 b 0 0 3 10 0 4 b 7 -14 0 -6 3 -10 l 229 -186 b 240 -190 232 -189 236 -190 b 253 -186 246 -190 251 -189 z', + }, + noteheadParenthesisRight: { + x_min: 0, + x_max: 75, + y_min: -209.4142135623731, + y_max: 212, + ha: 421.4142135623731, + o: 'm 10 305 b 4 302 7 304 6 304 b 0 295 1 301 0 298 b 1 289 0 294 0 292 b 68 -10 1 288 68 160 b 1 -288 68 -95 50 -192 b 0 -292 0 -289 0 -291 b 4 -300 0 -295 1 -298 b 12 -301 7 -301 9 -302 b 17 -298 14 -301 16 -300 b 108 0 22 -292 108 -174 b 17 301 108 174 22 295 b 10 305 16 304 13 305 z', + }, + noteheadParenthesisLeft: { + x_min: 0, + x_max: 75, + y_min: -212, + y_max: 209.4142135623731, + ha: 421.4142135623731, + o: 'm 98 -305 b 104 -302 101 -304 102 -304 b 108 -295 107 -301 108 -298 b 107 -289 108 -294 108 -292 b 40 10 107 -288 40 -160 b 107 288 40 95 58 192 b 108 292 108 289 108 291 b 104 300 108 295 107 298 b 96 301 101 301 99 302 b 91 298 94 301 92 300 b 0 0 86 292 0 174 b 91 -301 0 -174 86 -295 b 98 -305 92 -304 95 -305 z', + }, + noteheadMoonBlack: { + x_min: 0, + x_max: 310, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 0 180 l 0 0 b 223 -180 0 -99 99 -180 b 446 0 347 -180 446 -99 l 446 180 z', + }, + noteheadTriangleLeftBlack: { + x_min: 0, + x_max: 339, + y_min: -136, + y_max: 122, + ha: 258, + o: 'm 0 176 l 0 -196 l 488 -196 z', + }, + noteheadTriangleRightBlack: { + x_min: 0, + x_max: 339, + y_min: -136, + y_max: 122, + ha: 258, + o: 'm 488 176 l 0 -196 l 488 -196 z', + }, + noteheadTriangleRoundDownBlack: { + x_min: 0, + x_max: 310, + y_min: -136, + y_max: 122, + ha: 258, + o: 'm 226 -196 l 446 63 b 226 176 446 63 384 176 b 0 63 68 176 0 63 z', + }, + augmentationDot: { + x_min: 0, + x_max: 100, + y_min: -50, + y_max: 50, + ha: 100, + o: 'm 0 0 b 72 -72 0 -40 32 -72 b 144 0 112 -72 144 -40 b 72 72 144 40 112 72 b 0 0 32 72 0 40 z', + }, + tremolo1: { + x_min: 0, + x_max: 290, + y_min: -93, + y_max: 96, + ha: 189, + o: 'm 0 48 l 0 -134 l 418 -43 l 418 138 z', + }, + flag8thUp: { + x_min: 0, + x_max: 289.04376776750354, + y_min: -817, + y_max: 12, + ha: 829, + o: 'm 0 -327 b 12 -343 0 -331 1 -338 b 291 -600 73 -363 197 -441 b 359 -827 317 -645 359 -707 b 294 -1140 359 -930 331 -1037 b 289 -1162 291 -1149 288 -1156 b 297 -1175 289 -1168 291 -1172 b 304 -1176 300 -1176 302 -1176 b 327 -1161 314 -1176 321 -1171 b 416 -798 395 -1041 418 -888 b 416 -780 416 -791 416 -786 b 302 -458 409 -595 302 -458 b 131 -220 307 -458 170 -281 b 50 -50 78 -138 53 -56 b 36 6 49 -46 36 6 b 19 17 35 12 27 17 b 0 -1 9 17 0 9 z', + }, + flag8thDown: { + x_min: 0, + x_max: 309, + y_min: -12, + y_max: 817, + ha: 829, + o: 'm 0 1 b 19 -17 0 -9 9 -17 b 36 -6 26 -17 35 -12 b 50 50 36 -4 49 46 b 117 196 52 56 65 111 b 331 458 173 289 259 357 b 445 780 402 559 445 654 b 338 1161 445 912 415 1021 b 317 1176 334 1171 325 1176 b 310 1175 314 1176 311 1176 b 300 1158 302 1172 300 1166 b 304 1140 300 1153 301 1146 b 384 827 361 1007 384 930 b 317 600 384 707 343 645 b 12 343 223 441 72 363 b 0 327 1 338 0 331 z', + }, + flag16thUp: { + x_min: 0, + x_max: 279, + y_min: -820, + y_max: 12, + ha: 832, + o: 'm 301 -681 b 148 -514 262 -631 219 -585 b 56 -372 92 -458 66 -409 b 52 -343 55 -364 53 -354 b 271 -510 125 -343 219 -442 b 340 -696 327 -583 340 -641 b 337 -739 340 -710 338 -724 b 301 -681 325 -716 312 -697 z m 0 -549 b 22 -563 0 -553 12 -559 b 258 -776 59 -576 171 -648 b 318 -950 307 -850 318 -901 b 317 -975 318 -959 318 -966 b 285 -1140 317 -1009 307 -1083 b 279 -1164 284 -1148 279 -1156 b 289 -1179 279 -1169 282 -1175 b 297 -1181 292 -1181 294 -1181 b 318 -1161 307 -1181 312 -1169 b 382 -962 344 -1120 382 -1043 b 374 -855 382 -920 379 -886 b 402 -678 389 -802 402 -749 b 333 -471 402 -603 382 -536 b 137 -228 265 -382 192 -307 b 42 0 82 -148 42 0 b 22 17 39 10 37 17 b 0 0 4 17 0 10 z', + }, + flag16thDown: { + x_min: 0, + x_max: 309, + y_min: -26, + y_max: 803, + ha: 829, + o: 'm 53 346 b 56 363 55 353 56 359 b 163 517 66 399 78 452 b 384 732 246 582 346 662 b 317 503 382 621 354 552 b 53 346 229 395 122 364 z m 0 -14 b 22 -37 0 -26 10 -37 b 43 -14 33 -37 40 -26 b 167 232 65 134 109 177 b 445 683 243 305 445 416 b 432 837 445 730 441 783 b 441 919 438 855 441 881 b 327 1149 441 1032 374 1112 b 304 1156 321 1153 312 1156 b 287 1152 298 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1135 b 382 930 344 1076 382 1027 b 374 876 382 912 380 893 l 373 871 b 373 871 373 871 373 871 b 327 789 366 842 350 815 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z', + }, + flag32ndUp: { + x_min: 0, + x_max: 279, + y_min: -821, + y_max: 186, + ha: 1007, + o: 'm 301 -683 b 148 -516 262 -632 219 -588 b 56 -373 92 -459 66 -410 b 50 -343 55 -366 53 -354 b 271 -500 125 -343 219 -432 b 340 -687 327 -575 340 -632 b 337 -739 340 -704 338 -721 b 301 -683 325 -716 312 -698 z m 271 -259 b 340 -446 327 -333 340 -392 b 338 -469 340 -455 338 -462 b 333 -461 337 -467 334 -464 b 91 -192 265 -372 145 -271 b 50 -92 69 -160 58 -124 b 271 -259 124 -92 219 -192 z m 0 -550 b 22 -564 0 -554 12 -560 b 258 -778 59 -577 171 -649 b 318 -952 307 -851 318 -903 b 317 -976 318 -960 318 -968 b 285 -1142 317 -1011 307 -1084 b 279 -1165 284 -1149 279 -1158 b 289 -1181 279 -1171 282 -1176 b 297 -1182 292 -1182 294 -1182 b 318 -1162 307 -1182 312 -1171 b 382 -963 344 -1122 382 -1044 b 374 -857 382 -922 379 -887 b 402 -668 389 -802 402 -740 b 386 -563 402 -632 396 -596 b 402 -441 395 -526 402 -487 b 402 -428 402 -436 402 -432 b 333 -220 402 -353 382 -285 b 137 23 265 -131 192 -56 b 42 251 82 102 42 251 b 22 268 39 261 37 268 b 0 251 4 268 0 261 z', + }, + flag32ndDown: { + x_min: 0, + x_max: 309, + y_min: -216, + y_max: 803, + ha: 1019, + o: 'm 50 73 b 91 171 58 105 71 141 b 347 402 145 251 272 317 b 384 454 361 418 374 435 b 324 239 384 347 361 287 b 50 73 235 130 122 94 z m 163 517 b 366 693 248 589 327 642 b 382 716 372 700 377 708 b 383 693 383 708 383 700 b 314 505 383 621 359 562 b 53 343 258 436 179 390 b 56 363 55 351 56 359 b 163 517 66 400 81 449 z m 0 -288 b 22 -311 0 -298 10 -311 b 43 -288 33 -311 40 -300 b 167 -40 65 -138 109 -95 b 445 409 243 32 445 143 b 431 577 445 462 439 520 b 441 651 435 602 439 626 b 441 675 441 658 441 667 b 441 687 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 305 1156 321 1153 314 1156 b 287 1152 300 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1136 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z', + }, + flag64thUp: { + x_min: 0, + x_max: 279, + y_min: -822, + y_max: 373, + ha: 1195, + o: 'm 333 -461 b 91 -192 265 -372 145 -271 b 50 -92 69 -161 58 -125 b 271 -251 125 -92 219 -183 b 340 -438 327 -324 340 -383 b 338 -469 340 -448 338 -459 b 333 -461 337 -467 334 -464 z m 301 -683 b 148 -517 262 -632 219 -588 b 56 -374 92 -461 66 -410 b 50 -343 55 -366 53 -356 b 271 -501 125 -343 219 -433 b 340 -688 327 -575 340 -634 b 337 -739 340 -706 338 -721 b 301 -683 325 -717 312 -698 z m 271 10 b 340 -176 327 -63 340 -121 b 337 -217 340 -190 338 -204 b 333 -212 336 -216 334 -213 b 91 65 265 -122 145 -16 b 48 177 66 101 53 143 l 50 177 b 271 10 124 177 217 78 z m 0 -552 b 22 -564 0 -554 12 -562 b 258 -778 59 -579 171 -649 b 318 -952 307 -851 317 -903 b 317 -976 318 -960 318 -968 b 285 -1142 317 -1012 307 -1084 b 279 -1165 284 -1149 279 -1158 b 289 -1181 279 -1172 282 -1178 b 297 -1184 292 -1182 295 -1184 b 318 -1164 307 -1182 312 -1172 b 382 -963 344 -1122 382 -1044 b 374 -857 382 -923 379 -887 b 402 -668 389 -804 402 -740 b 386 -563 402 -632 396 -596 b 402 -432 395 -523 402 -480 b 402 -418 402 -428 402 -423 b 383 -304 402 -379 396 -341 b 402 -170 393 -264 402 -222 b 402 -158 402 -166 402 -163 b 333 49 402 -84 382 -16 b 137 292 265 138 192 213 b 42 520 82 372 42 520 b 22 537 39 530 37 537 b 0 520 4 537 0 530 z', + }, + flag64thDown: { + x_min: 0, + x_max: 309, + y_min: -403, + y_max: 804, + ha: 1207, + o: 'm 52 -196 b 91 -102 59 -166 71 -131 b 347 128 145 -23 272 45 b 384 180 361 145 374 163 b 324 -30 384 76 361 16 b 52 -196 235 -140 124 -176 z m 163 517 b 366 693 248 589 327 644 b 382 717 372 701 377 708 b 383 693 383 708 383 701 b 314 505 383 621 359 562 b 53 343 258 438 179 390 b 56 363 55 351 56 359 b 163 517 66 400 81 449 z m 314 232 b 50 69 258 163 179 117 b 91 171 56 102 69 140 b 347 402 145 251 272 318 b 382 449 360 416 372 432 b 383 420 383 439 383 429 b 314 232 383 348 359 288 z m 0 -557 b 22 -580 0 -567 10 -580 b 43 -557 33 -580 40 -567 b 167 -310 65 -408 109 -364 b 445 140 243 -238 445 -125 b 431 307 445 192 439 249 b 441 377 436 331 439 354 b 441 406 441 387 441 397 b 441 418 441 410 441 413 b 423 546 441 464 432 507 b 441 651 432 582 438 618 b 441 675 441 660 441 667 b 441 688 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 305 1158 321 1153 314 1156 b 287 1152 300 1158 292 1156 b 279 1145 281 1151 279 1148 b 294 1129 279 1140 288 1136 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 563 z', + }, + flag128thUp: { + x_min: 0, + x_max: 279, + y_min: -821, + y_max: 573, + ha: 1394, + o: 'm 0 -550 b 22 -563 0 -553 12 -560 b 258 -776 59 -576 171 -648 b 318 -950 307 -850 318 -901 b 317 -975 318 -959 318 -966 b 285 -1140 317 -1011 307 -1083 b 279 -1164 284 -1148 279 -1156 b 289 -1179 279 -1171 282 -1176 b 297 -1182 292 -1181 294 -1181 b 318 -1162 307 -1182 312 -1169 b 382 -962 344 -1120 382 -1043 b 374 -857 382 -922 379 -887 b 402 -668 389 -802 402 -740 b 383 -554 402 -629 396 -590 b 402 -399 396 -503 402 -452 b 382 -284 402 -359 396 -321 b 402 -125 396 -230 402 -180 b 383 -14 402 -86 396 -49 b 402 130 396 35 402 81 b 333 348 402 204 382 284 b 137 592 265 438 192 513 b 42 808 82 671 46 793 b 22 825 39 818 37 825 b 0 808 4 825 0 818 z m 271 310 b 340 111 328 235 340 170 b 338 73 340 98 338 86 b 333 81 336 76 334 79 b 91 357 265 170 145 276 b 48 469 66 393 53 435 l 50 469 b 271 310 124 469 217 377 z m 301 -681 b 148 -523 262 -631 219 -593 b 56 -383 92 -465 66 -420 b 49 -343 55 -374 52 -359 l 50 -343 b 271 -500 124 -343 217 -432 b 340 -688 327 -575 340 -634 b 337 -737 340 -706 338 -721 b 301 -681 325 -716 312 -697 z m 333 -461 b 91 -192 265 -372 145 -271 b 48 -73 66 -154 53 -111 l 48 -73 l 50 -73 b 271 -232 124 -73 217 -163 b 340 -419 327 -305 340 -364 b 337 -468 340 -435 338 -452 b 333 -461 336 -465 334 -464 z m 333 -192 b 91 84 265 -102 145 4 b 48 200 65 121 53 164 l 48 200 l 50 200 b 271 42 124 200 217 109 b 340 -147 327 -32 340 -92 b 337 -197 340 -164 338 -181 b 333 -192 336 -196 334 -194 z', + }, + flag128thDown: { + x_min: 0, + x_max: 309, + y_min: -591, + y_max: 803, + ha: 1394, + o: 'm 0 -828 b 22 -851 0 -838 10 -851 b 43 -828 33 -851 40 -840 b 167 -580 65 -678 109 -635 b 445 -131 243 -508 445 -397 b 431 36 445 -79 439 -22 b 441 108 436 60 439 85 b 441 137 441 117 441 127 b 441 147 441 140 441 144 b 423 275 441 193 432 236 b 441 377 433 310 438 344 b 441 406 441 387 441 396 b 441 418 441 410 441 413 b 423 546 441 464 432 507 b 441 649 432 582 438 616 b 441 675 441 658 441 667 b 441 687 441 680 441 684 b 425 808 441 730 433 772 b 441 919 435 840 441 876 b 327 1149 441 1032 374 1112 b 304 1156 321 1153 312 1156 b 287 1152 298 1156 292 1155 b 279 1145 281 1149 279 1148 b 294 1129 279 1140 288 1135 b 382 930 344 1076 382 1027 b 327 789 382 877 364 832 b 22 598 226 672 86 612 b 0 559 12 593 0 562 z m 314 -37 b 50 -200 258 -107 179 -153 b 91 -102 58 -168 71 -132 b 347 128 145 -23 272 45 b 382 176 360 143 372 160 b 383 151 383 167 383 160 b 314 -37 383 79 359 19 z m 314 232 b 50 69 258 163 179 117 b 91 171 56 101 69 138 b 347 402 145 251 272 317 b 382 449 360 416 372 432 b 383 420 383 439 383 429 b 314 232 383 347 359 288 z m 163 517 b 366 693 248 589 327 642 b 382 716 372 700 377 708 b 383 693 383 708 383 700 b 314 505 382 621 359 560 b 53 343 258 436 179 390 b 56 363 55 350 56 357 b 163 517 66 399 81 449 z m 52 -467 b 91 -372 59 -435 71 -402 b 347 -141 145 -292 272 -225 b 384 -89 361 -125 374 -108 b 324 -301 382 -194 361 -255 b 52 -467 235 -410 122 -446 z', + }, + accidentalFlat: { + x_min: 0, + x_max: 203, + y_min: -176, + y_max: 453, + ha: 629, + o: 'm 289 114 b 173 223 281 170 246 223 b 52 170 101 223 59 179 l 58 632 b 37 652 58 644 49 652 l 20 652 b 0 632 9 652 0 644 l 7 -233 b 27 -253 7 -245 16 -253 b 39 -251 30 -253 36 -252 b 216 -114 45 -248 138 -202 b 292 78 271 -52 292 19 b 289 114 292 91 291 102 z m 190 58 b 148 -85 190 36 184 -30 b 48 -183 124 -122 75 -161 l 52 98 b 134 153 55 111 76 153 b 190 73 186 153 190 104 b 190 58 190 66 190 62 z', + }, + accidentalNatural: { + x_min: 0, + x_max: 171, + y_min: -323, + y_max: 325, + ha: 648, + o: 'm 239 264 b 228 268 236 266 232 268 b 222 266 226 268 223 266 l 40 216 l 40 468 l 0 468 l 0 -245 b 20 -264 0 -256 9 -264 b 26 -264 22 -264 24 -264 l 207 -213 l 207 -465 l 246 -465 b 246 248 246 -226 246 1 b 239 264 246 253 243 261 z m 40 -140 l 40 96 l 207 144 l 207 -94 z', + }, + accidentalSharp: { + x_min: 0, + x_max: 244, + y_min: -333, + y_max: 334, + ha: 667, + o: 'm 336 151 b 351 171 344 153 351 163 l 351 256 b 331 276 351 268 343 276 b 328 276 330 276 330 276 l 281 266 l 281 481 l 240 481 l 240 258 l 112 232 l 112 435 l 72 435 l 72 223 l 16 212 b 0 192 7 210 0 200 l 0 189 l 0 105 l 0 108 b 20 88 0 96 9 88 b 24 88 22 88 23 88 l 72 98 l 72 -140 l 16 -151 b 0 -171 7 -153 0 -163 l 0 -255 b 20 -275 0 -266 9 -275 b 24 -275 22 -275 23 -275 l 72 -265 l 72 -480 l 112 -480 l 112 -256 l 240 -230 l 240 -433 l 281 -433 l 281 -222 l 336 -212 b 351 -192 344 -210 351 -200 l 351 -107 b 331 -86 351 -95 343 -86 b 328 -86 330 -86 330 -86 l 281 -96 l 281 141 z m 112 107 l 240 132 l 240 -105 l 112 -132 z', + }, + accidentalDoubleSharp: { + x_min: 0, + x_max: 275, + y_min: -137, + y_max: 138, + ha: 275, + o: 'm 360 73 l 376 73 b 396 94 387 73 396 82 l 396 179 b 376 199 396 190 387 199 l 291 199 b 271 179 279 199 271 190 l 271 161 l 271 102 l 200 30 l 196 30 l 124 102 l 124 179 b 105 199 124 190 117 199 l 20 199 b 0 179 9 199 0 190 l 0 94 b 20 73 0 82 9 73 l 35 73 l 36 73 l 96 73 l 167 3 l 167 -1 l 96 -73 l 36 -73 l 35 -73 l 20 -73 b 0 -92 9 -73 0 -81 l 0 -177 b 20 -197 0 -189 9 -197 l 105 -197 b 124 -177 117 -197 124 -189 l 124 -101 l 196 -32 l 200 -32 l 271 -101 l 271 -161 l 271 -163 l 271 -177 b 291 -197 271 -189 279 -197 l 376 -197 b 396 -177 387 -197 396 -189 l 396 -92 b 376 -73 396 -81 387 -73 l 361 -73 l 360 -73 l 300 -73 l 228 -1 l 228 1 l 300 73 z', + }, + accidentalDoubleFlat: { + x_min: 0, + x_max: 371, + y_min: -176, + y_max: 453, + ha: 629, + o: 'm 531 115 b 415 223 523 171 488 223 b 294 171 343 223 301 180 l 300 632 b 279 652 300 644 291 652 l 262 652 b 242 632 251 652 242 644 l 246 199 b 173 223 228 213 204 223 b 52 170 101 223 59 179 l 58 632 b 37 652 58 644 49 652 l 20 652 b 0 632 9 652 0 644 l 7 -233 b 27 -253 7 -245 16 -253 b 39 -249 30 -253 36 -251 b 216 -114 45 -246 138 -202 b 248 -69 226 -102 239 -82 l 249 -233 b 269 -253 249 -245 258 -253 b 281 -249 272 -253 278 -251 b 458 -112 287 -246 380 -200 b 534 79 513 -50 534 20 b 531 115 534 92 533 104 z m 190 58 b 148 -85 190 36 184 -30 b 48 -183 124 -122 75 -161 l 52 98 b 134 153 55 111 76 153 b 190 73 186 153 190 104 b 190 58 190 66 190 62 z m 432 58 b 390 -85 432 36 426 -30 b 289 -183 366 -122 317 -161 l 294 98 b 376 153 297 111 318 153 b 432 73 428 153 432 104 b 432 58 432 66 432 62 z', + }, + accidentalParensLeft: { + x_min: 0, + x_max: 75, + y_min: -212, + y_max: 209.4142135623731, + ha: 421.4142135623731, + o: 'm 98 -305 b 104 -302 101 -304 102 -304 b 108 -295 107 -301 108 -298 b 107 -289 108 -294 108 -292 b 40 10 107 -288 40 -160 b 107 288 40 95 58 192 b 108 292 108 289 108 291 b 104 300 108 295 107 298 b 96 301 101 301 99 302 b 91 298 94 301 92 300 b 0 0 86 292 0 174 b 91 -301 0 -174 86 -295 b 98 -305 92 -304 95 -305 z', + }, + accidentalParensRight: { + x_min: 0, + x_max: 75, + y_min: -209.4142135623731, + y_max: 212, + ha: 421.4142135623731, + o: 'm 10 305 b 4 302 7 304 6 304 b 0 295 1 301 0 298 b 1 289 0 294 0 292 b 68 -10 1 288 68 160 b 1 -288 68 -95 50 -192 b 0 -292 0 -289 0 -291 b 4 -300 0 -295 1 -298 b 12 -301 7 -301 9 -302 b 17 -298 14 -301 16 -300 b 108 0 22 -292 108 -174 b 17 301 108 174 22 295 b 10 305 16 304 13 305 z', + }, + accidentalQuarterToneFlatStein: { + x_min: 0, + x_max: 193, + y_min: -176, + y_max: 452, + ha: 628, + o: 'm 0 84 b 107 -145 0 -26 65 -105 b 245 -249 166 -202 245 -249 b 253 -253 248 -251 249 -253 b 272 -235 264 -253 272 -245 l 278 632 b 259 651 278 642 269 651 l 248 651 b 229 632 238 651 229 642 l 232 174 b 125 217 223 186 192 217 b 0 84 53 217 0 173 z m 148 154 b 232 102 212 154 232 115 b 233 107 232 99 233 102 l 235 -179 b 134 -72 207 -156 160 -111 b 92 58 98 -17 92 36 b 92 75 92 62 92 68 b 148 154 92 105 96 154 z', + }, + accidentalThreeQuarterTonesFlatZimmermann: { + x_min: 0, + x_max: 422, + y_min: -176, + y_max: 452, + ha: 628, + o: 'm 608 84 b 482 217 608 173 554 217 b 376 174 416 217 384 186 l 379 632 b 360 651 379 642 370 651 l 348 651 b 330 632 338 651 330 642 l 336 -235 b 354 -253 336 -245 344 -253 b 363 -249 359 -253 360 -251 b 501 -145 363 -249 442 -202 b 608 84 543 -105 608 -26 z m 459 154 b 516 75 511 154 516 105 b 516 58 516 68 516 62 b 474 -72 516 36 510 -17 b 373 -179 448 -111 400 -156 l 374 107 b 376 102 374 102 376 99 b 459 154 376 115 396 154 z m 0 84 b 107 -145 0 -26 65 -105 b 245 -249 166 -202 245 -249 b 253 -253 248 -251 249 -253 b 272 -235 264 -253 272 -245 l 278 632 b 259 651 278 642 269 651 l 248 651 b 229 632 238 651 229 642 l 232 174 b 125 217 223 186 192 217 b 0 84 53 217 0 173 z m 148 154 b 232 102 212 154 232 115 b 233 107 232 99 233 102 l 235 -179 b 134 -72 207 -156 160 -111 b 92 58 98 -17 92 36 b 92 75 92 62 92 68 b 148 154 92 105 96 154 z', + }, + accidentalQuarterToneSharpStein: { + x_min: 0, + x_max: 180, + y_min: -316, + y_max: 320, + ha: 636, + o: 'm 243 144 b 259 164 252 145 259 156 l 259 249 b 239 269 259 261 251 269 b 235 268 238 269 236 268 l 150 251 l 150 461 l 109 461 l 109 242 l 16 222 b 0 203 7 220 0 212 l 0 120 b 20 99 0 108 9 99 b 24 99 22 99 23 99 l 109 117 l 109 -121 l 16 -141 b 0 -160 7 -143 0 -151 l 0 -243 b 20 -264 0 -255 9 -264 b 24 -264 22 -264 23 -264 l 109 -246 l 109 -455 l 150 -455 l 150 -238 l 243 -219 b 259 -199 252 -217 259 -207 l 259 -114 b 239 -95 259 -102 251 -95 b 235 -95 238 -95 236 -95 l 150 -112 l 150 125 z', + }, + accidentalThreeQuarterTonesSharpStein: { + x_min: 0, + x_max: 290, + y_min: -328, + y_max: 339, + ha: 667, + o: 'm 400 158 b 416 179 409 160 416 170 l 416 264 b 397 284 416 275 409 284 b 393 284 396 284 395 284 l 348 274 l 348 488 l 308 488 l 308 265 l 223 248 l 223 465 l 184 465 l 184 240 l 108 225 l 108 442 l 69 442 l 69 216 l 16 204 b 0 186 7 203 0 194 l 0 102 b 20 82 0 91 9 82 b 24 82 22 82 23 82 l 69 92 l 69 -147 l 16 -158 b 0 -177 7 -160 0 -168 l 0 -261 b 20 -281 0 -272 9 -281 b 24 -281 22 -281 23 -281 l 69 -272 l 69 -472 l 108 -472 l 108 -264 l 184 -248 l 184 -451 l 223 -451 l 223 -240 l 308 -223 l 308 -426 l 348 -426 l 348 -215 l 400 -204 b 418 -184 409 -203 418 -193 l 418 -99 b 397 -79 418 -88 409 -79 b 393 -79 396 -79 395 -79 l 348 -89 l 348 148 z m 184 -122 l 108 -138 l 108 99 l 184 115 z m 223 122 l 308 140 l 308 -98 l 223 -115 z', + }, + accidentalBuyukMucennebFlat: { + x_min: 0, + x_max: 277, + y_min: -176, + y_max: 454, + ha: 630, + o: 'm 396 115 b 279 225 387 173 354 225 b 158 171 204 225 164 179 l 160 317 l 336 419 l 336 482 l 161 380 l 161 488 l 336 590 l 336 654 l 163 552 l 164 634 b 144 654 164 645 156 654 l 127 654 b 107 634 115 654 107 645 l 108 520 l 0 456 l 0 393 l 108 456 l 109 350 l 0 285 l 0 222 l 109 287 l 114 -235 b 134 -253 114 -246 122 -253 b 145 -251 138 -253 141 -252 b 323 -114 145 -251 242 -204 b 399 79 377 -52 399 20 b 396 115 399 92 397 104 z m 297 58 b 255 -85 297 36 291 -30 b 154 -184 230 -122 181 -163 l 158 96 b 240 153 161 109 181 153 b 297 73 292 153 297 104 b 297 58 297 66 297 62 z', + }, + accidentalBakiyeFlat: { + x_min: 0, + x_max: 277, + y_min: -176, + y_max: 454, + ha: 630, + o: 'm 396 115 b 279 225 387 173 354 225 b 158 171 204 225 164 179 l 161 348 l 336 452 l 336 516 l 161 413 l 164 634 b 144 654 164 645 156 654 l 127 654 b 107 634 115 654 107 645 l 109 382 l 0 318 l 0 255 l 109 318 l 114 -235 b 134 -253 114 -246 122 -253 b 145 -251 138 -253 143 -252 b 323 -114 145 -251 242 -204 b 399 79 377 -52 399 20 b 396 115 399 92 397 104 z m 297 58 b 255 -85 297 36 291 -30 b 156 -184 230 -122 183 -163 l 158 96 b 240 153 161 109 181 153 b 297 73 292 153 297 104 b 297 58 297 66 297 62 z', + }, + accidentalKucukMucennebSharp: { + x_min: 0, + x_max: 348, + y_min: -316, + y_max: 318, + ha: 634, + o: 'm 494 121 b 482 125 491 124 487 125 b 478 124 481 125 480 124 l 269 68 l 269 127 l 412 164 b 425 181 420 167 425 173 l 425 266 b 418 282 425 272 422 279 b 406 285 415 285 410 285 b 402 285 405 285 403 285 l 269 249 l 269 458 l 232 458 l 232 239 l 89 200 b 76 181 81 197 76 190 l 76 98 b 84 84 76 92 79 86 b 95 79 86 81 91 79 b 99 81 96 79 98 81 l 232 115 l 232 58 l 14 -3 b 0 -20 6 -6 0 -12 l 0 -104 b 7 -118 0 -109 3 -115 b 19 -122 10 -121 14 -122 b 23 -122 20 -122 22 -122 l 232 -66 l 232 -124 l 89 -163 b 76 -180 81 -166 76 -171 l 76 -264 b 84 -279 76 -269 79 -276 b 95 -282 86 -282 91 -282 b 99 -282 96 -282 98 -282 l 232 -246 l 232 -455 l 269 -455 l 269 -236 l 412 -199 b 425 -180 420 -196 425 -189 l 425 -95 b 418 -81 425 -89 422 -84 b 406 -76 415 -78 410 -76 b 402 -78 405 -76 403 -78 l 269 -114 l 269 -55 l 487 4 b 501 22 495 7 501 13 l 501 107 b 494 121 501 112 498 118 z', + }, + articAccentAbove: { + x_min: 0, + x_max: 361, + y_min: 0, + y_max: 235, + ha: 235, + o: 'm 26 337 b 20 338 24 337 22 338 b 0 318 9 338 0 330 l 0 285 b 14 266 0 276 7 269 l 323 170 l 14 72 b 0 53 7 69 0 62 l 0 20 b 20 0 0 9 9 0 b 26 1 22 0 24 1 l 505 150 b 520 170 513 153 520 161 b 505 189 520 179 513 186 z', + }, + articAccentBelow: { + x_min: 0, + x_max: 361, + y_min: -235, + y_max: 0, + ha: 235, + o: 'm 26 -1 b 20 0 24 -1 22 0 b 0 -20 9 0 0 -9 l 0 -53 b 14 -72 0 -62 7 -69 l 323 -168 l 14 -266 b 0 -285 7 -269 0 -276 l 0 -318 b 20 -338 0 -330 9 -338 b 26 -337 22 -338 24 -337 l 505 -189 b 520 -168 513 -186 520 -177 b 505 -150 520 -160 513 -153 z', + }, + articTenutoAbove: { + x_min: 0, + x_max: 316, + y_min: 0, + y_max: 46, + ha: 46, + o: 'm 20 66 b 0 46 9 66 0 58 l 0 20 b 20 0 0 9 9 0 l 435 0 b 455 20 446 0 455 9 l 455 46 b 435 66 455 58 446 66 z', + }, + articTenutoBelow: { + x_min: 0, + x_max: 316, + y_min: -46, + y_max: 0, + ha: 46, + o: 'm 20 0 b 0 -20 9 0 0 -9 l 0 -46 b 20 -66 0 -58 9 -66 l 435 -66 b 455 -46 446 -66 455 -58 l 455 -20 b 435 0 455 -9 446 0 z', + }, + articStaccatoAbove: { + x_min: -0.25, + x_max: 78.25, + y_min: -0.25, + y_max: 78, + ha: 78.25, + o: 'm 16 16 b 96 16 39 -6 73 -6 b 96 95 118 39 118 73 b 16 95 73 118 39 118 b 16 16 -6 73 -6 39 z', + }, + articStaccatoBelow: { + x_min: -0.25, + x_max: 78.25, + y_min: -78.25, + y_max: 0, + ha: 78.25, + o: 'm 16 -96 b 96 -96 39 -118 73 -118 b 96 -17 118 -73 118 -39 b 16 -17 73 6 39 6 b 16 -96 -6 -39 -6 -73 z', + }, + articStaccatissimoAbove: { + x_min: 0, + x_max: 127, + y_min: 0, + y_max: 248, + ha: 248, + o: 'm 163 357 b 150 353 154 357 150 353 l 99 300 b 92 295 96 297 95 295 b 85 300 89 295 88 297 l 35 353 b 22 357 35 353 30 357 b 0 338 13 357 0 351 b 73 22 0 323 73 22 b 92 0 75 16 78 0 b 111 22 107 0 109 16 b 183 338 111 22 183 323 b 163 357 183 351 171 357 z', + }, + articStaccatissimoBelow: { + x_min: 0, + x_max: 127, + y_min: -248, + y_max: 0, + ha: 248, + o: 'm 20 -357 b 33 -353 29 -357 33 -353 l 84 -300 b 91 -295 86 -297 88 -295 b 98 -300 94 -295 95 -297 l 148 -353 b 161 -357 148 -353 153 -357 b 183 -338 170 -357 183 -351 b 109 -22 183 -323 109 -22 b 91 0 108 -16 105 0 b 72 -22 76 0 73 -16 b 0 -338 72 -22 0 -323 b 20 -357 0 -351 12 -357 z', + }, + articMarcatoAbove: { + x_min: 1, + x_max: 296, + y_min: 0, + y_max: 253, + ha: 253, + o: 'm 36 10 l 173 239 l 298 10 b 317 0 301 4 310 0 l 408 0 b 426 20 419 0 426 9 b 425 30 426 23 426 27 l 230 356 b 213 364 226 361 222 363 b 196 356 207 364 199 361 l 1 30 z', + }, + articMarcatoBelow: { + x_min: 0, + x_max: 295, + y_min: -253, + y_max: 0, + ha: 253, + o: 'm 390 -10 l 253 -239 l 128 -10 b 109 0 125 -4 117 0 l 19 0 b 0 -20 7 0 0 -9 b 1 -30 0 -23 0 -27 l 196 -356 b 213 -364 200 -361 204 -363 b 230 -356 219 -364 228 -361 l 425 -30 z', + }, + fermataAbove: { + x_min: 0, + x_max: 622, + y_min: 0, + y_max: 368, + ha: 368, + o: 'm 778 374 b 448 530 642 521 523 530 b 120 374 373 530 255 521 b 0 65 49 297 0 143 b 20 19 0 37 6 19 b 161 265 60 19 40 143 b 445 373 268 372 410 373 b 448 373 446 373 446 373 b 451 373 449 373 449 373 b 734 265 485 373 628 372 b 876 19 855 143 835 19 b 896 65 890 19 896 36 b 778 374 896 143 848 298 z m 348 99 b 448 0 348 45 393 0 b 547 99 503 0 547 45 b 448 199 547 154 503 199 b 348 99 393 199 348 154 z', + }, + fermataBelow: { + x_min: 0, + x_max: 622, + y_min: -368, + y_max: 0, + ha: 368, + o: 'm 778 -374 b 896 -65 848 -298 896 -143 b 876 -19 896 -36 890 -19 b 734 -265 835 -19 855 -143 b 451 -373 628 -372 485 -373 b 448 -373 449 -373 449 -373 b 445 -373 446 -373 446 -373 b 161 -265 410 -373 268 -372 b 20 -19 40 -143 60 -19 b 0 -65 6 -19 0 -37 b 120 -374 0 -143 49 -297 b 448 -530 255 -521 373 -530 b 778 -374 523 -530 642 -521 z m 348 -99 b 448 -199 348 -154 393 -199 b 547 -99 503 -199 547 -154 b 448 0 547 -45 503 0 b 348 -99 393 0 348 -45 z', + }, + fermataLongAbove: { + x_min: 0, + x_max: 623, + y_min: 0, + y_max: 368, + ha: 368, + o: 'm 40 0 l 40 399 l 858 399 l 858 0 l 897 0 l 897 510 b 877 530 897 521 888 530 l 20 530 b 0 510 9 530 0 521 l 0 0 z m 350 148 b 449 49 350 94 395 49 b 547 148 504 49 547 94 b 449 248 547 203 504 248 b 350 148 395 248 350 203 z', + }, + fermataLongBelow: { + x_min: 0, + x_max: 623, + y_min: -368, + y_max: 0, + ha: 368, + o: 'm 0 -510 b 20 -530 0 -521 9 -530 l 877 -530 b 897 -510 888 -530 897 -521 l 897 0 l 858 0 l 858 -399 l 40 -399 l 40 0 l 0 0 z m 350 -148 b 449 -248 350 -203 395 -248 b 547 -148 504 -248 547 -203 b 449 -49 547 -94 504 -49 b 350 -148 395 -49 350 -94 z', + }, + fermataVeryLongAbove: { + x_min: 0, + x_max: 842, + y_min: 0, + y_max: 549, + ha: 549, + o: 'm 276 0 l 276 399 l 936 399 l 936 0 l 976 0 l 976 510 b 956 530 976 521 968 530 l 256 530 b 236 510 245 530 236 521 l 236 0 z m 507 148 b 606 49 507 94 552 49 b 706 148 661 49 706 94 b 606 248 706 203 661 248 b 507 148 552 248 507 203 z m 40 0 l 40 661 l 1172 661 l 1172 0 l 1212 0 l 1212 772 b 1192 791 1212 783 1204 791 l 20 791 b 0 772 9 791 0 783 l 0 0 z', + }, + fermataVeryLongBelow: { + x_min: 0, + x_max: 842, + y_min: -549, + y_max: 0, + ha: 549, + o: 'm 236 -510 b 256 -530 236 -521 245 -530 l 956 -530 b 976 -510 968 -530 976 -521 l 976 0 l 936 0 l 936 -399 l 276 -399 l 276 0 l 236 0 z m 507 -148 b 606 -248 507 -203 552 -248 b 706 -148 661 -248 706 -203 b 606 -49 706 -94 661 -49 b 507 -148 552 -49 507 -94 z m 0 -772 b 20 -791 0 -783 9 -791 l 1192 -791 b 1212 -772 1204 -791 1212 -783 l 1212 0 l 1172 0 l 1172 -661 l 40 -661 l 40 0 l 0 0 z', + }, + fermataShortAbove: { + x_min: 0, + x_max: 642, + y_min: 0, + y_max: 454, + ha: 454, + o: 'm 363 148 b 462 49 363 94 408 49 b 562 148 517 49 562 94 b 462 248 562 203 517 248 b 363 148 408 248 363 203 z m 477 645 b 461 654 474 649 467 654 b 445 645 455 654 448 649 l 4 32 b 0 20 3 29 0 23 b 20 0 0 9 9 0 l 82 0 b 98 9 88 0 95 4 l 461 514 l 827 9 b 842 0 829 4 837 0 l 904 0 b 924 20 916 0 924 9 b 920 32 924 23 922 29 z', + }, + fermataShortBelow: { + x_min: 0, + x_max: 642, + y_min: -454, + y_max: 0, + ha: 454, + o: 'm 363 -148 b 462 -248 363 -203 408 -248 b 562 -148 517 -248 562 -203 b 462 -49 562 -94 517 -49 b 363 -148 408 -49 363 -94 z m 920 -32 b 924 -20 922 -29 924 -23 b 904 0 924 -9 916 0 l 842 0 b 827 -9 837 0 829 -4 l 461 -514 l 98 -9 b 82 0 95 -4 88 0 l 20 0 b 0 -20 9 0 0 -9 b 4 -32 0 -23 3 -29 l 445 -645 b 461 -654 448 -649 455 -654 b 477 -645 467 -654 474 -649 z', + }, + breathMarkComma: { + x_min: 0, + x_max: 191, + y_min: 0, + y_max: 321, + ha: 321, + o: 'm 82 0 b 275 285 215 92 275 183 b 115 462 275 396 212 462 b 0 356 46 462 0 413 b 115 246 0 294 53 246 b 181 258 157 246 177 256 b 192 261 184 259 189 261 b 199 259 194 261 196 261 b 203 245 202 258 203 253 b 48 43 203 183 147 112 z', + }, + caesura: { + x_min: 0, + x_max: 380, + y_min: 0, + y_max: 490, + ha: 490, + o: 'm 285 706 b 285 706 285 706 285 706 b 271 696 279 706 274 701 l 1 22 b 0 16 0 20 0 17 b 16 0 0 7 7 0 l 50 0 b 65 10 56 0 62 4 l 334 684 b 336 690 334 685 336 688 b 320 706 336 698 328 706 z m 213 22 b 212 16 213 20 212 17 b 228 0 212 7 219 0 l 262 0 b 276 10 268 0 274 4 l 546 684 b 547 690 547 685 547 688 b 531 706 547 698 540 706 l 497 706 b 482 696 491 706 485 701 z', + }, + caesuraCurved: { + x_min: 0, + x_max: 368, + y_min: 0, + y_max: 491, + ha: 491, + o: 'm 262 707 b 245 693 253 707 246 701 b 1 26 233 603 177 348 b 0 17 0 23 0 20 b 16 0 0 9 6 0 b 30 7 22 0 27 3 b 318 687 259 341 304 602 b 318 690 318 688 318 688 b 301 707 318 698 310 707 z m 474 707 b 458 693 465 707 459 701 b 213 26 446 603 389 348 b 212 19 212 23 212 20 b 229 0 212 9 219 0 b 243 7 235 0 240 3 b 530 687 472 341 516 602 b 530 690 530 688 530 688 b 514 707 530 698 523 707 z', + }, + restMaxima: { + x_min: 0, + x_max: 450, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 158 -360 b 180 -338 170 -360 180 -350 l 180 338 b 158 360 180 350 170 360 l 22 360 b 0 338 9 360 0 350 l 0 -338 b 22 -360 0 -350 9 -360 z m 626 -360 b 648 -338 638 -360 648 -350 l 648 338 b 626 360 648 350 638 360 l 490 360 b 468 338 477 360 468 350 l 468 -338 b 490 -360 468 -350 477 -360 z', + }, + restDoubleWhole: { + x_min: 0, + x_max: 125, + y_min: -11, + y_max: 262, + ha: 273, + o: 'm 158 -16 b 180 6 171 -16 180 -6 l 180 356 b 158 377 180 367 171 377 l 22 377 b 0 356 10 377 0 367 l 0 6 b 22 -16 0 -6 10 -16 z', + }, + restWhole: { + x_min: 0, + x_max: 325, + y_min: -131, + y_max: 5, + ha: 136, + o: 'm 20 7 b 0 -13 9 7 0 -1 l 0 -168 b 20 -189 0 -180 9 -189 l 448 -189 b 468 -168 459 -189 468 -180 l 468 -13 b 448 7 468 -1 459 7 z', + }, + restWholeLegerLine: { + x_min: -139, + x_max: 464, + y_min: -122, + y_max: 14, + ha: 136, + o: 'm 449 20 l 19 20 l -200 20 l -200 -20 l 0 -20 l 0 -156 b 19 -176 0 -167 7 -176 l 449 -176 b 468 -156 461 -176 468 -167 l 468 -20 l 668 -20 l 668 20 z', + }, + restHalf: { + x_min: 0, + x_max: 325, + y_min: -4, + y_max: 132, + ha: 136, + o: 'm 0 14 b 20 -6 0 -6 0 -6 l 448 -6 b 468 14 468 -6 468 -6 l 468 170 b 448 190 468 190 468 190 l 20 190 b 0 170 0 190 0 190 z', + }, + restHalfLegerLine: { + x_min: -139, + x_max: 464, + y_min: -14, + y_max: 122, + ha: 136, + o: 'm 668 20 l 468 20 l 468 156 b 449 176 468 167 461 176 l 19 176 b 0 156 7 176 0 167 l 0 20 l -200 20 l -200 -20 l 19 -20 l 449 -20 l 668 -20 z', + }, + restQuarter: { + x_min: 0, + x_max: 235, + y_min: -331, + y_max: 401, + ha: 732, + o: 'm 331 -239 b 323 -229 330 -238 327 -235 l 157 -24 b 154 -16 156 -23 154 -19 b 157 -3 154 -12 156 -6 l 304 219 b 307 229 305 222 307 226 l 307 242 b 302 253 307 246 305 251 l 69 569 b 55 577 69 569 63 577 b 43 573 50 577 48 576 b 36 559 37 569 36 563 b 40 543 36 550 40 543 l 150 393 b 154 376 153 389 154 383 b 150 359 154 370 153 363 l 4 137 b 1 125 3 134 1 128 l 1 112 b 6 101 1 108 3 104 l 167 -99 b 131 -95 161 -98 148 -95 b 49 -124 107 -95 75 -101 b 0 -229 17 -153 0 -193 b 16 -285 0 -249 4 -269 b 154 -468 46 -331 154 -468 b 171 -477 154 -468 161 -477 b 180 -474 174 -477 177 -477 b 190 -456 187 -468 190 -462 b 186 -444 190 -451 187 -446 b 135 -353 181 -436 135 -353 b 125 -307 135 -353 125 -333 b 150 -246 125 -288 131 -265 b 206 -223 167 -229 187 -223 b 252 -236 225 -223 240 -229 l 308 -272 b 320 -275 308 -272 314 -275 b 334 -268 325 -275 330 -274 b 338 -255 337 -262 338 -259 b 334 -243 338 -251 337 -248 z', + }, + rest8th: { + x_min: 0, + x_max: 276, + y_min: -255, + y_max: 204, + ha: 459, + o: 'm 384 292 b 379 294 383 292 380 294 b 360 282 370 294 363 289 b 245 141 354 274 310 189 b 180 112 226 127 203 117 b 206 181 196 131 206 154 b 104 284 206 238 160 284 b 0 181 46 284 0 238 b 65 85 0 137 27 101 b 144 68 86 75 115 68 b 269 109 186 68 230 81 b 320 157 287 122 304 140 l 156 -356 l 194 -367 l 396 268 b 397 275 397 269 397 272 b 384 292 397 282 393 288 z', + }, + rest16th: { + x_min: 1, + x_max: 344, + y_min: -507, + y_max: 204, + ha: 711, + o: 'm 494 268 b 495 275 495 271 495 272 b 482 292 495 282 491 289 b 475 294 480 294 477 294 b 456 282 467 294 461 289 b 285 115 422 213 364 135 b 310 184 302 135 310 158 b 203 284 310 240 259 284 b 104 177 145 281 104 233 b 171 84 105 134 134 98 b 252 69 197 72 225 69 b 423 164 324 72 380 108 l 423 164 l 359 -65 b 183 -245 338 -132 256 -226 b 207 -176 199 -225 207 -200 b 102 -76 207 -118 158 -76 b 1 -183 45 -76 1 -125 b 69 -275 1 -226 32 -262 b 150 -289 96 -287 121 -289 b 321 -194 222 -287 278 -251 l 174 -720 l 213 -730 z', + }, + rest32nd: { + x_min: 0, + x_max: 391, + y_min: -507, + y_max: 460, + ha: 967, + o: 'm 217 71 b 408 171 348 71 402 161 l 354 -46 b 184 -240 323 -121 268 -217 b 204 -171 200 -220 204 -197 b 102 -76 204 -114 158 -76 b 0 -177 46 -76 0 -120 b 140 -288 0 -252 63 -288 b 320 -186 216 -288 276 -246 l 189 -721 l 228 -730 l 562 638 b 563 644 563 639 563 642 b 549 661 563 652 557 658 b 543 662 547 662 544 662 b 524 649 534 662 528 657 b 361 487 497 589 431 504 b 383 556 379 508 383 530 b 282 652 383 611 338 652 b 179 549 226 652 179 609 b 249 451 179 505 210 464 b 311 439 268 444 288 441 b 330 441 317 439 323 439 b 498 541 400 445 458 485 l 442 310 b 271 117 413 238 351 137 b 292 186 288 138 292 160 b 189 282 292 243 245 282 b 88 180 132 282 88 238 b 217 71 88 112 153 71 z', + }, + rest64th: { + x_min: 0, + x_max: 423, + y_min: -758, + y_max: 464, + ha: 1222, + o: 'm 207 -1083 l 246 -1092 b 608 644 282 -919 605 634 b 609 649 608 647 609 648 b 595 667 609 658 603 665 b 589 668 593 668 592 668 b 569 654 577 668 575 664 b 474 521 563 644 530 573 b 412 487 456 505 435 494 b 432 546 425 503 432 526 b 328 649 432 606 382 649 b 226 546 275 649 226 608 b 360 438 226 465 300 438 b 501 492 419 438 474 465 b 546 546 527 518 533 526 l 547 547 l 500 323 b 399 161 491 300 452 209 b 337 125 382 144 360 132 b 357 184 350 143 357 134 b 253 288 357 235 317 288 b 151 187 190 288 151 236 b 285 76 151 138 183 76 b 471 184 412 76 465 173 l 423 -45 b 324 -204 413 -69 374 -158 b 262 -240 305 -222 284 -233 b 281 -180 274 -223 281 -212 b 177 -78 281 -147 258 -78 b 75 -180 98 -78 75 -153 b 209 -289 75 -207 88 -289 b 395 -181 330 -289 389 -193 l 350 -397 b 248 -564 337 -449 285 -530 b 186 -599 229 -580 207 -592 b 204 -540 197 -583 204 -563 b 102 -438 204 -501 174 -438 b 0 -540 29 -438 0 -501 b 132 -648 0 -579 24 -648 b 320 -540 266 -648 315 -552 z', + }, + rest128th: { + x_min: -1, + x_max: 475, + y_min: -759, + y_max: 717, + ha: 1476, + o: 'm 677 1028 b 664 1032 672 1031 667 1032 b 644 1018 654 1032 649 1028 b 549 886 638 1008 605 937 b 487 851 531 870 510 858 b 507 910 500 868 507 890 b 403 1014 507 971 456 1014 b 301 910 350 1014 301 972 b 435 802 301 829 374 802 b 576 857 494 802 549 829 b 621 910 602 883 608 890 l 622 912 l 575 687 b 474 526 566 664 527 573 b 412 490 456 508 435 497 b 432 549 425 507 432 498 b 328 652 432 599 392 652 b 226 552 265 652 226 600 b 360 441 226 503 258 441 b 546 549 487 441 540 537 l 498 320 b 399 160 488 295 449 207 b 337 125 380 143 359 131 b 356 184 348 141 356 153 b 252 287 356 217 333 287 b 150 184 173 287 150 212 b 284 76 150 157 163 76 b 469 183 405 76 464 171 l 425 -33 b 323 -200 412 -85 360 -166 b 261 -235 304 -216 282 -228 b 279 -176 272 -219 279 -199 b 177 -72 279 -137 249 -72 b 75 -176 104 -72 75 -137 b 207 -284 75 -215 99 -284 b 395 -176 341 -284 390 -187 l 347 -409 b 248 -566 330 -461 282 -533 b 186 -600 229 -582 207 -593 b 204 -541 197 -583 204 -564 b 102 -438 204 -501 174 -438 b -1 -541 29 -438 -1 -503 b 132 -649 -1 -580 24 -649 b 318 -546 256 -649 307 -567 l 206 -1084 l 245 -1093 b 683 1008 281 -920 680 996 b 684 1015 683 1009 684 1014 b 677 1028 684 1020 683 1024 z', + }, + dynamicPiano: { + x_min: -95, + x_max: 317, + y_min: -163, + y_max: 263, + ha: 426, + o: 'm 186 -235 l 186 -206 l 78 -206 l 161 26 l 166 16 b 229 -29 166 16 180 -16 b 256 -32 238 -32 248 -32 b 445 166 336 -32 415 49 b 456 246 454 197 456 223 b 374 373 456 343 396 367 b 356 376 369 374 361 376 b 242 314 311 376 266 338 l 238 310 l 235 315 b 154 377 235 315 204 370 b 138 379 148 377 144 379 b 0 226 91 379 42 346 l 26 213 b 63 301 32 232 46 278 b 102 328 72 314 89 325 b 108 328 104 328 107 328 b 120 325 112 328 117 327 b 127 304 125 321 127 314 b 94 192 127 269 101 206 l -49 -206 l -137 -206 l -137 -235 z m 226 17 b 215 19 223 17 217 17 b 187 81 193 27 187 53 b 204 180 187 125 203 177 b 297 317 217 235 259 295 b 324 325 307 323 315 325 b 336 324 328 325 333 325 b 350 311 341 323 347 317 b 356 278 354 302 356 291 b 333 161 356 239 341 187 b 242 20 314 105 278 37 b 226 17 238 17 230 17 z', + }, + dynamicMezzo: { + x_min: -7, + x_max: 374, + y_min: -2, + y_max: 251, + ha: 253, + o: 'm 488 63 b 467 48 481 50 474 48 b 459 49 464 48 462 48 b 449 65 452 52 449 58 b 461 112 449 76 455 94 b 474 157 464 121 471 150 b 492 281 482 183 492 242 b 491 301 492 288 492 295 b 436 359 484 340 467 359 b 340 307 399 359 359 331 l 337 301 l 334 308 b 272 359 334 308 311 359 b 177 310 232 359 202 343 l 173 304 l 171 311 b 117 360 171 311 153 353 b 96 361 109 361 102 361 b 29 328 60 361 39 340 b -10 252 20 318 0 284 l 12 240 b 68 318 12 240 36 318 b 75 317 71 318 72 318 b 86 295 84 314 86 307 b 59 194 86 275 75 240 b 1 20 59 193 6 33 b 0 13 1 17 0 16 b 3 4 0 10 1 7 b 14 -1 6 1 9 -1 l 36 -1 b 91 -1 58 -1 86 -1 b 107 22 94 -1 101 -1 b 127 99 114 53 121 79 b 235 310 132 121 186 310 b 243 305 238 310 242 308 b 248 289 246 302 248 297 b 216 160 248 265 233 219 b 173 22 194 89 173 22 b 173 16 173 20 173 19 b 176 3 173 12 173 6 b 187 -1 179 0 183 -1 l 266 -1 b 282 16 272 -1 279 0 b 284 26 282 17 284 22 b 392 302 312 228 359 288 b 396 304 393 302 395 304 l 397 304 b 400 302 399 304 399 302 b 408 289 403 301 408 297 b 369 140 408 275 399 217 b 356 75 360 117 356 95 b 370 23 356 55 360 37 b 428 -3 382 6 408 -3 b 536 99 492 -3 517 49 b 539 108 537 102 537 105 l 514 120 b 488 63 514 120 498 81 z', + }, + dynamicForte: { + x_min: -137, + x_max: 334, + y_min: -193, + y_max: 421, + ha: 614, + o: 'm -122 -86 b -197 -161 -161 -86 -197 -122 b -81 -278 -197 -236 -147 -278 b 35 -228 -35 -278 -1 -264 b 202 173 98 -164 167 50 b 238 297 215 219 228 264 l 238 300 l 341 300 b 356 314 350 300 356 305 l 356 346 b 341 360 356 354 350 360 l 256 360 l 256 364 b 330 554 297 511 308 537 b 359 566 341 563 351 566 b 366 564 361 566 364 564 b 380 553 373 563 377 559 b 382 546 382 550 382 549 b 373 528 382 539 379 531 b 351 478 359 517 351 498 b 354 458 351 471 353 465 b 384 426 359 445 370 432 b 410 420 390 423 400 420 b 445 431 420 420 432 423 b 478 472 459 438 474 456 b 481 497 481 480 481 488 b 467 550 481 514 477 533 b 376 605 455 572 422 598 b 351 606 369 606 360 606 b 225 553 317 606 272 595 b 122 363 187 520 154 456 l 122 360 l 13 360 b -1 346 4 360 -1 354 l -1 314 b 13 300 -1 305 4 300 l 102 300 l 102 294 b 66 140 88 236 76 187 b 24 -35 55 86 42 32 l 20 -52 b -53 -235 -10 -170 -19 -212 b -78 -242 -60 -239 -69 -242 b -98 -235 -85 -242 -92 -239 b -105 -222 -102 -232 -105 -228 b -105 -219 -105 -220 -105 -220 b -94 -204 -104 -213 -101 -207 b -58 -144 -66 -193 -58 -167 b -122 -86 -58 -124 -71 -86 z', + }, + dynamicRinforzando: { + x_min: -12, + x_max: 230, + y_min: 0, + y_max: 254, + ha: 254, + o: 'm 272 364 b 200 341 239 364 212 348 b 168 310 187 333 177 321 l 164 304 b 109 363 164 304 151 353 b 88 366 102 364 95 366 b 22 331 52 366 32 343 b -17 255 13 321 -7 287 l 4 243 b 60 321 4 243 29 321 b 68 320 63 321 65 321 b 78 297 75 317 78 308 b 49 180 78 272 65 230 l 0 23 b 0 17 0 22 0 20 b 3 4 0 13 0 7 b 14 0 6 1 10 0 l 94 0 b 109 17 99 0 107 1 b 111 27 109 19 111 23 b 209 302 140 230 186 279 b 225 311 215 308 220 311 b 229 310 226 311 228 311 b 233 304 233 307 233 305 b 233 301 233 302 233 301 b 216 268 220 291 216 279 b 225 243 216 259 219 249 b 262 229 235 232 249 229 b 304 242 279 229 295 235 b 331 308 320 255 331 275 b 272 364 331 341 304 364 z', + }, + dynamicSforzando: { + x_min: 0, + x_max: 208, + y_min: -5, + y_max: 263, + ha: 268, + o: 'm 242 328 b 217 289 222 317 217 300 b 258 249 217 274 230 249 b 298 284 285 249 295 269 b 300 295 300 287 300 291 b 189 379 300 328 272 379 b 49 259 92 379 49 315 b 99 173 49 229 59 196 b 164 137 117 163 140 151 b 194 88 189 122 194 102 b 124 24 194 73 177 24 b 72 46 82 24 72 39 b 73 49 72 48 72 49 b 96 96 78 52 96 62 b 50 150 96 134 72 150 b 0 91 29 150 0 134 b 124 -7 0 26 49 -7 b 282 111 199 -7 282 24 b 171 239 282 197 207 219 b 128 292 135 259 128 268 b 193 347 128 317 156 347 b 242 328 230 347 242 328 z', + }, + dynamicZ: { + x_min: -42, + x_max: 239, + y_min: -1, + y_max: 258, + ha: 259, + o: 'm 229 292 b 235 288 232 292 233 291 b 236 284 236 285 236 285 b 233 278 236 281 235 279 b -42 55 232 276 -4 85 b -60 24 -56 43 -60 33 b -50 4 -60 12 -50 4 b -35 0 -45 1 -40 0 b 9 29 -14 0 1 19 b 50 69 17 43 26 69 b 89 35 75 69 81 50 b 170 -1 104 10 137 -1 b 243 22 197 -1 223 6 b 304 147 288 56 304 118 b 264 196 304 176 294 196 b 226 156 239 196 226 174 b 251 117 226 128 249 122 b 251 108 251 114 251 111 b 243 79 251 98 249 88 b 212 56 236 68 223 56 b 202 59 209 56 204 56 b 163 92 194 63 186 75 b 108 122 140 109 114 120 b 105 125 105 124 105 124 b 107 128 105 127 107 128 b 312 304 107 128 302 294 b 341 340 324 315 336 327 b 344 347 343 341 344 346 l 344 356 b 333 369 343 367 336 369 l 331 369 l 262 363 b 217 361 245 361 230 361 b 156 366 193 361 174 363 b 114 372 147 367 125 372 b 107 370 111 372 108 370 b 86 344 98 367 89 360 b 37 222 72 265 42 232 b 37 219 37 220 37 220 b 50 207 37 213 43 207 l 66 207 b 81 225 75 207 76 215 b 108 291 85 235 105 285 b 118 297 111 297 112 297 b 167 289 125 295 144 291 b 181 289 171 289 177 289 b 229 292 202 289 222 291 z', + }, + ornamentTrill: { + x_min: -12, + x_max: 383, + y_min: 0, + y_max: 383, + ha: 383, + o: 'm 464 396 b 376 359 408 396 376 359 l 364 370 b 346 377 357 377 346 377 l 197 377 l 246 528 b 246 531 246 530 246 531 b 226 552 246 541 236 552 l 213 552 b 199 544 209 552 202 547 b 124 482 196 541 130 487 b 117 471 118 478 117 471 b 84 377 117 471 102 431 l 3 377 b -17 360 -14 377 -17 360 l -17 341 b 3 324 -17 325 3 324 l 66 324 b 0 85 35 229 0 117 b 92 0 0 16 48 0 b 186 35 137 0 186 35 b 194 13 186 35 190 24 b 212 0 199 1 212 0 l 276 0 b 298 16 295 0 298 16 l 298 43 b 321 147 298 75 321 147 l 382 284 b 412 325 382 284 396 311 b 446 341 425 336 438 341 b 452 340 448 341 451 341 b 428 288 432 327 428 305 b 485 233 428 271 446 233 b 552 308 534 233 552 264 b 464 396 552 353 520 396 z m 222 143 b 147 78 210 104 171 78 b 137 79 143 78 140 78 b 121 115 125 85 121 99 b 137 190 121 148 137 190 l 180 324 l 275 324 b 279 320 279 324 279 320 b 222 143 279 320 235 187 z', + }, + ornamentTurn: { + x_min: 0, + x_max: 456, + y_min: 0, + y_max: 232, + ha: 232, + o: 'm 527 334 b 442 269 488 334 442 312 b 501 204 442 228 468 204 b 570 226 533 204 540 226 b 613 164 598 226 613 204 l 613 163 b 550 98 613 127 586 98 b 448 143 508 98 485 109 l 328 255 l 298 284 b 174 334 262 317 223 334 b 0 170 92 334 0 278 b 131 0 0 68 58 0 b 215 65 170 0 215 22 b 156 130 215 107 189 130 b 86 108 124 130 117 108 b 43 170 59 108 43 130 l 43 171 b 108 236 43 207 72 236 b 209 192 150 236 171 225 l 328 79 l 360 50 b 482 0 396 17 433 0 b 657 164 564 0 657 56 b 527 334 657 266 600 334 z', + }, + ornamentTurnSlash: { + x_min: 0, + x_max: 456, + y_min: -80, + y_max: 313, + ha: 393, + o: 'm 527 334 b 442 269 488 334 442 312 b 501 204 442 228 468 204 b 570 226 533 204 540 226 b 613 164 598 226 613 204 l 613 163 b 550 98 613 127 586 98 b 448 143 508 98 485 109 l 354 230 l 354 431 b 336 451 354 442 347 451 l 323 451 b 302 431 311 451 302 442 l 302 279 l 298 284 b 174 334 262 317 223 334 b 0 170 92 334 0 278 b 131 0 0 68 58 0 b 215 65 170 0 215 22 b 156 130 215 107 189 130 b 86 108 124 130 117 108 b 43 170 59 108 43 130 l 43 171 b 108 236 43 207 72 236 b 209 192 150 236 171 225 l 302 104 l 302 -96 b 323 -115 302 -108 311 -115 l 336 -115 b 354 -96 347 -115 354 -108 l 354 55 l 360 50 b 482 0 396 17 433 0 b 657 164 564 0 657 56 b 527 334 657 266 600 334 z', + }, + ornamentMordent: { + x_min: 0, + x_max: 473, + y_min: -77, + y_max: 316, + ha: 393, + o: 'm 647 302 l 562 166 l 446 347 b 429 357 444 353 435 357 b 413 347 423 357 416 353 l 363 262 l 363 435 b 343 455 363 446 354 455 l 331 455 b 311 435 320 455 311 446 l 311 173 l 310 171 l 203 347 b 186 357 200 353 192 357 b 168 347 180 357 171 353 l 0 69 l 35 48 l 120 189 l 226 10 b 243 0 229 4 238 0 b 261 10 249 0 258 4 l 311 95 l 311 -91 b 331 -111 311 -102 320 -111 l 343 -111 b 363 -91 354 -111 363 -102 l 363 184 l 366 189 l 478 10 b 495 0 481 4 490 0 b 513 10 501 0 510 4 l 681 281 z', + }, + ornamentShortTrill: { + x_min: 0, + x_max: 473, + y_min: 0, + y_max: 248, + ha: 248, + o: 'm 647 302 l 562 166 l 446 347 b 431 357 444 353 436 357 b 413 347 425 357 416 353 l 310 171 l 203 347 b 186 357 200 353 192 357 b 168 347 180 357 173 353 l 0 69 l 35 48 l 120 189 l 226 10 b 243 0 229 4 238 0 b 261 10 249 0 258 4 l 366 189 l 478 9 b 495 0 481 3 490 0 b 513 10 501 0 510 4 l 681 281 z', + }, + ornamentTremblement: { + x_min: 0, + x_max: 654, + y_min: 0, + y_max: 248, + ha: 248, + o: 'm 907 302 l 822 166 l 708 348 b 691 357 704 354 701 357 b 674 347 685 357 677 353 l 648 302 l 563 166 l 449 348 b 432 357 446 354 438 357 b 415 347 426 357 418 353 l 415 346 l 311 171 l 203 348 b 186 357 200 354 192 357 b 168 348 177 357 171 354 l 168 347 l 0 69 l 35 48 l 120 190 l 226 10 b 243 0 229 4 238 0 l 245 0 b 261 10 251 0 258 4 l 367 189 l 480 10 b 497 0 482 4 491 0 b 513 10 503 0 510 4 l 625 192 l 739 10 b 756 0 742 4 750 0 b 772 10 762 0 769 4 l 942 282 z', + }, + ornamentPrecompAppoggTrill: { + x_min: 0, + x_max: 680, + y_min: 0, + y_max: 388, + ha: 388, + o: 'm 860 170 l 746 353 b 729 361 743 359 737 361 b 713 351 723 361 716 357 l 685 307 l 600 170 l 487 353 b 481 359 485 356 484 357 b 469 361 478 360 472 361 b 452 351 464 361 455 357 l 348 176 l 240 353 b 223 361 238 359 229 361 b 206 353 215 361 209 359 l 40 76 l 40 541 b 20 559 39 552 30 559 b 0 541 10 559 1 552 l 0 26 b 19 1 0 16 9 4 b 26 0 20 1 24 0 b 48 13 35 0 43 6 l 72 52 l 157 194 l 265 14 b 282 4 268 9 276 4 b 298 14 288 4 295 9 l 405 193 l 517 14 b 534 4 520 9 528 4 b 550 14 540 4 547 9 l 664 196 l 776 14 b 793 4 779 9 788 4 b 811 14 799 4 808 9 l 979 287 l 945 307 z', + }, + ornamentPrecompSlideTrillDAnglebert: { + x_min: 0, + x_max: 662, + y_min: -158, + y_max: 248, + ha: 406, + o: 'm 834 166 l 720 348 b 704 357 717 354 713 357 b 687 348 697 357 690 353 l 661 302 l 660 302 l 575 166 l 461 348 b 455 354 459 350 456 353 b 444 357 452 356 448 357 b 428 347 438 357 431 353 l 323 171 l 215 347 b 213 350 215 348 215 350 b 213 350 213 350 213 350 l 213 351 l 212 351 l 212 353 l 210 353 l 210 353 l 209 354 b 207 354 209 354 207 354 b 197 357 206 356 200 357 b 197 357 197 357 197 357 b 194 357 196 357 196 357 b 180 347 187 357 183 353 l 180 346 l 69 164 b 0 -50 23 88 0 17 b 49 -219 0 -108 16 -163 b 66 -228 52 -223 59 -228 b 76 -225 69 -228 73 -226 b 86 -207 82 -222 86 -215 b 84 -197 86 -204 85 -200 b 40 -52 55 -150 40 -102 b 104 143 40 10 62 73 l 131 190 l 239 10 b 256 0 242 4 249 0 l 256 0 b 272 10 262 0 269 4 l 379 189 l 491 10 b 508 0 494 4 503 0 b 508 0 508 0 508 0 l 508 0 b 526 10 514 0 521 4 l 638 192 l 750 10 b 768 0 755 4 762 0 l 768 0 b 785 10 773 0 782 4 l 785 10 l 953 282 l 919 302 z', + }, + ornamentPrecompSlideTrillBach: { + x_min: 0, + x_max: 662, + y_min: -158, + y_max: 321, + ha: 479, + o: 'm 834 166 l 720 348 b 704 357 716 354 713 357 b 687 348 698 357 690 354 l 660 304 l 660 302 l 632 259 l 632 442 b 612 462 632 454 624 462 l 599 462 b 579 442 588 462 579 454 l 579 173 l 575 166 l 461 348 b 455 356 459 351 458 354 b 445 359 452 357 448 359 b 428 348 439 359 431 354 l 323 171 l 215 347 b 213 350 215 348 213 350 l 213 351 l 212 353 l 210 353 l 210 354 l 207 354 b 197 357 204 356 200 357 b 180 348 189 357 183 354 l 179 346 l 69 164 b 0 -49 23 88 0 19 b 49 -217 0 -107 17 -163 b 66 -228 52 -223 60 -228 b 76 -225 69 -228 73 -226 b 86 -207 82 -222 86 -213 b 84 -197 86 -204 85 -200 b 42 -50 56 -148 42 -101 b 104 144 42 12 62 75 l 131 190 l 239 10 b 256 0 242 4 251 0 b 274 10 262 0 271 4 l 379 190 l 491 10 b 508 0 494 4 503 0 b 526 10 514 0 523 4 l 579 98 l 579 -84 b 599 -104 579 -95 588 -104 l 612 -104 b 632 -84 624 -104 632 -95 l 632 183 l 638 192 l 750 10 b 768 0 753 4 762 0 b 785 10 773 0 782 4 l 953 282 l 919 302 z', + }, + ornamentPrecompTrillSuffixDandrieu: { + x_min: 0, + x_max: 662, + y_min: 0, + y_max: 406, + ha: 406, + o: 'm 904 575 b 887 585 901 580 893 585 b 877 582 884 585 880 583 b 867 564 871 579 867 570 b 870 554 867 562 868 557 b 912 408 897 505 912 458 b 850 213 912 346 891 282 l 822 167 l 714 348 b 697 357 711 354 703 357 b 680 348 691 357 683 354 l 575 168 l 462 348 b 445 357 459 354 451 357 b 428 348 439 357 431 354 l 315 167 l 203 348 b 186 357 200 354 192 357 b 168 348 180 357 171 354 l 0 76 l 35 55 l 120 192 l 233 10 b 249 0 238 4 240 0 b 266 10 255 0 264 4 l 294 55 l 379 192 l 492 9 b 498 3 494 6 495 4 b 508 0 501 1 505 0 b 526 10 514 0 523 4 l 631 186 l 737 13 b 746 3 739 10 743 4 b 756 0 749 1 753 0 b 773 9 762 0 770 3 l 884 193 b 953 406 930 269 953 338 b 904 575 953 464 936 520 z', + }, + ornamentPrecompDoubleCadenceUpperPrefix: { + x_min: 0, + x_max: 857, + y_min: 0, + y_max: 248, + ha: 248, + o: 'm 383 140 b 413 189 399 166 412 187 b 520 10 423 171 516 16 b 537 0 523 4 530 0 b 554 10 543 0 550 4 b 660 189 557 16 649 171 b 772 10 671 173 766 19 b 791 0 778 1 785 0 b 806 10 796 0 802 4 b 919 192 809 16 907 174 l 1031 10 b 1048 0 1035 4 1043 0 l 1048 0 b 1066 10 1054 1 1063 4 l 1066 10 l 1234 282 l 1200 302 l 1115 166 l 1002 348 b 985 357 998 354 994 357 b 968 348 978 357 971 353 l 855 166 b 742 348 845 183 746 341 b 726 357 737 354 732 357 b 708 348 719 357 711 354 b 603 171 704 341 613 189 b 495 348 593 189 498 343 b 478 357 492 353 487 357 b 461 348 469 357 464 353 b 357 173 459 346 393 235 b 213 79 320 111 284 79 b 66 176 143 79 95 112 b 40 279 43 228 40 275 b 20 300 40 291 30 300 b 0 278 9 300 0 289 b 29 161 0 276 3 219 b 213 39 65 81 130 39 b 383 140 297 39 346 73 z', + }, + ornamentPrecompTrillLowerSuffix: { + x_min: 0, + x_max: 565, + y_min: -171, + y_max: 249, + ha: 420, + o: 'm 347 168 l 235 348 b 217 359 230 354 226 359 b 200 348 209 359 203 353 b 3 30 197 344 6 35 b 0 20 0 26 0 24 b 22 0 0 9 10 0 b 37 9 27 0 35 3 l 151 192 b 265 10 161 174 262 13 b 281 0 268 6 272 0 b 298 10 289 0 295 3 l 403 186 l 511 10 b 528 0 516 4 521 0 b 546 10 537 0 541 4 l 698 265 b 775 22 744 202 775 112 b 700 -215 775 -60 752 -144 b 696 -226 697 -219 696 -222 b 704 -243 696 -232 700 -239 b 717 -246 708 -246 713 -246 b 733 -239 723 -246 729 -243 b 814 20 789 -160 814 -69 b 711 312 814 132 773 242 b 696 320 707 317 700 320 b 680 310 691 320 684 318 b 595 168 671 297 602 181 l 488 348 b 471 359 484 354 478 359 b 454 348 464 359 456 353 b 347 168 449 343 357 186 z', + }, + brassMuteClosed: { + x_min: 0, + x_max: 312, + y_min: 0, + y_max: 312, + ha: 312, + o: 'm 22 256 b 0 225 7 256 0 240 b 22 193 0 209 7 193 l 193 193 l 193 22 b 225 0 193 7 209 0 b 256 22 240 0 256 7 l 256 193 l 428 193 b 449 225 442 193 449 209 b 428 256 449 240 442 256 l 256 256 l 256 428 b 225 449 256 442 240 449 b 193 428 209 449 193 442 l 193 256 z', + }, + brassMuteOpen: { + x_min: 0, + x_max: 280, + y_min: 0, + y_max: 280, + ha: 280, + o: 'm 202 403 b 0 202 91 403 0 312 b 202 0 0 91 91 0 b 403 202 312 0 403 91 b 202 403 403 312 312 403 z m 202 40 b 40 202 112 40 40 112 b 202 363 40 291 112 363 b 363 202 291 363 363 291 b 202 40 363 112 291 40 z', + }, + stringsDownBow: { + x_min: 0, + x_max: 315, + y_min: 0, + y_max: 293, + ha: 293, + o: 'm 40 0 l 40 291 l 413 291 l 413 0 l 454 0 l 454 402 b 433 422 454 413 445 422 l 20 422 b 0 402 9 422 0 402 l 0 0 z', + }, + stringsUpBow: { + x_min: 0, + x_max: 262, + y_min: 0, + y_max: 343, + ha: 343, + o: 'm 374 485 b 357 494 372 490 363 494 l 337 494 b 318 481 330 494 321 488 l 189 118 l 59 481 b 40 494 56 488 48 494 l 20 494 b 0 474 9 494 0 485 b 1 467 0 472 1 468 l 170 13 b 189 0 173 6 181 0 b 207 13 196 0 204 6 l 376 467 b 377 474 376 468 377 472 b 374 485 377 477 376 482 z', + }, + stringsHarmonic: { + x_min: 0, + x_max: 181, + y_min: 0, + y_max: 181, + ha: 181, + o: 'm 131 220 b 220 131 181 220 220 181 b 131 40 220 81 181 40 b 40 131 81 40 40 81 b 131 220 40 181 81 220 z m 131 261 b 0 131 59 261 0 203 b 131 0 0 59 59 0 b 261 131 203 0 261 59 b 131 261 261 203 203 261 z', + }, + pluckedSnapPizzicatoAbove: { + x_min: 0, + x_max: 269, + y_min: 0, + y_max: 389, + ha: 389, + o: 'm 213 540 b 194 560 213 552 204 560 b 174 540 183 560 174 552 l 174 386 b 0 193 76 376 0 294 b 194 0 0 86 86 0 b 387 193 301 0 387 86 b 213 386 387 294 311 376 z m 194 40 b 40 193 109 40 40 109 b 174 346 40 271 98 336 l 174 193 b 194 173 174 183 183 173 b 213 193 204 173 213 183 l 213 346 b 347 193 289 336 347 271 b 194 40 347 109 278 40 z', + }, + pluckedSnapPizzicatoBelow: { + x_min: 0, + x_max: 269, + y_min: 0, + y_max: 389, + ha: 389, + o: 'm 213 174 b 387 367 311 184 387 266 b 193 560 387 474 301 560 b 0 367 86 560 0 474 b 174 174 0 266 76 184 l 174 20 b 194 0 174 9 183 0 b 213 20 204 0 213 9 z m 194 520 b 347 367 278 520 347 452 b 213 215 347 289 289 225 l 213 367 b 194 387 213 377 204 387 b 174 367 183 387 174 377 l 174 215 b 40 367 98 225 40 289 b 194 520 40 452 109 520 z', + }, + keyboardPedalPed: { + x_min: 0, + x_max: 981, + y_min: -10, + y_max: 545, + ha: 555, + o: 'm 1354 12 b 1413 78 1385 12 1413 42 b 1354 145 1413 115 1385 145 b 1293 78 1320 145 1293 115 b 1354 12 1293 42 1320 12 z m 1092 88 b 1080 86 1089 86 1084 86 b 1004 203 1037 86 1004 137 b 1107 376 1004 360 1097 374 b 1149 209 1129 336 1149 287 b 1092 88 1149 117 1130 95 z m 752 393 b 795 344 779 393 795 372 b 770 285 795 325 788 304 b 693 203 737 249 697 207 b 688 264 690 225 688 245 b 752 393 688 347 714 393 z m 245 507 b 220 544 245 533 235 544 b 217 544 219 544 219 544 b 186 510 206 546 192 537 b 143 464 179 478 163 464 b 134 465 140 464 137 464 b 102 516 117 467 102 487 b 141 613 102 541 112 576 b 347 721 212 711 315 721 b 356 721 351 721 354 721 b 275 560 344 701 297 616 b 259 495 274 557 259 528 b 272 452 259 480 264 465 b 373 323 297 416 350 354 b 387 284 382 311 387 298 b 350 222 387 265 376 245 b 230 140 301 180 252 154 b 128 39 215 130 128 92 b 134 12 128 30 130 22 b 173 -14 144 -7 157 -14 b 264 40 204 -14 243 17 b 333 98 281 58 302 98 b 389 39 357 98 373 60 b 478 -10 416 1 435 -10 b 622 96 527 -10 559 43 b 740 -10 626 86 667 -10 b 929 95 827 -10 917 85 b 1086 -12 950 37 1018 -12 b 1120 -7 1097 -12 1109 -10 b 1264 213 1212 17 1264 111 b 1263 248 1264 225 1263 236 b 815 664 1228 544 907 647 b 785 668 805 665 795 668 b 779 668 783 668 782 668 b 757 654 769 668 760 665 b 757 649 757 652 757 651 b 786 618 759 629 783 619 b 818 606 796 613 808 611 b 1071 435 1007 534 1066 445 b 909 181 930 386 909 256 b 910 141 909 164 909 151 b 786 78 899 127 844 78 b 708 151 726 78 710 144 b 799 230 711 154 742 181 b 864 350 845 271 864 312 b 757 456 864 410 815 456 b 599 222 644 456 599 328 b 609 141 599 192 602 164 b 563 104 608 140 595 122 b 540 98 556 99 549 98 b 459 140 513 98 480 118 b 397 184 413 189 399 184 b 475 279 403 189 454 226 b 482 311 480 289 482 300 b 449 410 482 359 452 405 b 361 533 442 419 383 503 b 354 560 356 541 354 550 b 386 651 353 588 372 622 b 429 713 405 693 426 710 b 557 592 521 688 557 628 b 549 569 557 582 554 573 b 523 559 540 562 531 559 b 459 592 495 559 469 583 b 425 613 451 600 438 613 b 409 608 419 613 415 612 b 399 586 402 602 399 595 b 399 583 397 585 399 585 b 409 552 399 573 405 562 b 541 458 441 487 492 458 b 608 480 564 458 588 465 b 648 572 632 497 648 531 b 429 778 648 649 589 749 b 351 785 402 782 376 785 b 0 507 130 785 0 615 b 127 366 0 399 68 366 b 245 507 186 366 245 429 z', + }, + keyboardPedalUp: { + x_min: 0, + x_max: 473, + y_min: 0, + y_max: 473, + ha: 473, + o: 'm 99 99 b 164 69 120 79 143 69 b 199 82 177 69 190 73 b 210 114 206 89 210 102 b 206 137 210 122 209 130 b 200 160 203 145 200 154 b 210 179 200 166 203 171 l 245 215 b 285 213 255 225 272 219 l 287 213 l 288 212 b 318 183 301 206 318 196 l 318 134 b 291 102 318 112 308 112 b 258 58 274 92 258 76 b 340 0 258 26 294 0 b 423 58 386 0 423 26 b 390 102 423 76 408 92 b 361 134 373 112 361 112 l 361 183 b 392 212 361 196 379 206 b 395 213 393 212 393 213 b 436 215 408 219 426 225 l 471 179 b 480 161 478 171 480 167 b 474 137 480 154 477 147 b 471 115 472 130 471 122 b 482 82 471 102 474 91 b 517 69 491 73 504 69 b 582 99 539 69 562 79 b 612 164 602 120 612 143 b 599 199 612 177 608 190 b 567 210 592 206 579 210 b 544 206 559 210 552 209 b 521 200 536 203 528 200 b 501 210 514 200 508 203 l 467 245 b 468 285 456 255 462 272 l 468 287 b 469 288 468 287 469 287 b 498 318 475 301 485 318 l 547 318 b 579 291 569 318 569 308 b 624 258 589 274 605 258 b 681 340 655 258 681 294 b 624 423 681 386 655 423 b 579 390 605 423 589 408 b 547 361 569 373 569 361 l 498 361 b 469 392 485 361 475 379 b 468 395 469 393 468 393 b 467 436 462 408 456 426 l 501 471 b 520 480 508 478 514 480 b 544 474 527 480 534 477 b 566 471 552 472 559 471 b 599 482 579 471 590 474 b 612 516 608 491 612 503 b 582 580 612 536 602 560 b 516 612 562 600 537 612 b 482 599 503 612 491 608 b 471 566 474 590 471 579 b 474 544 471 559 472 552 b 480 520 477 534 480 527 b 471 501 480 514 478 508 l 436 467 b 395 468 426 456 408 462 b 392 469 393 468 393 469 b 361 498 379 475 361 485 l 361 547 b 390 579 361 569 373 569 b 423 624 408 589 423 605 b 340 681 423 655 386 681 b 258 624 294 681 258 655 b 291 579 258 605 274 589 b 318 547 308 569 318 569 l 318 498 b 288 469 318 485 301 475 l 287 468 l 285 468 b 245 467 272 462 255 456 l 210 501 b 200 521 203 508 200 514 b 206 544 200 528 203 536 b 210 567 209 552 210 559 b 199 599 210 579 206 592 b 164 612 190 608 177 612 b 99 582 143 612 120 602 b 69 517 79 562 69 539 b 82 482 69 504 73 491 b 115 471 91 474 102 471 b 137 474 122 471 130 472 b 161 480 147 477 154 480 b 180 471 167 480 173 478 l 215 436 b 213 395 225 426 219 408 b 212 392 213 393 212 393 b 183 361 206 379 196 361 l 134 361 b 102 390 112 361 112 373 b 58 423 92 408 76 423 b 0 340 26 423 0 386 b 58 258 0 294 26 258 b 102 291 76 258 92 274 b 134 318 112 308 112 318 l 183 318 b 212 288 196 318 206 301 b 213 287 212 287 213 288 l 213 285 b 215 245 219 272 225 255 l 179 210 b 160 200 171 203 166 200 b 137 206 154 200 145 203 b 114 210 130 209 122 210 b 82 199 102 210 89 206 b 69 164 73 190 69 177 b 99 99 69 143 79 120 z m 276 276 b 249 340 262 291 249 320 b 340 432 249 390 289 432 b 432 340 390 432 432 390 b 405 276 432 320 419 291 b 340 249 390 262 360 249 b 276 276 320 249 291 262 z', + }, + wiggleArpeggiatoUp: { + x_min: -22, + x_max: 242, + y_min: 0, + y_max: 164, + ha: 164, + o: 'm 343 122 b 323 143 343 122 334 132 b 308 148 318 147 312 148 b 298 144 304 148 301 147 b 282 128 295 141 291 137 b 274 124 279 125 276 124 b 265 128 268 124 265 128 b 158 220 265 128 173 207 b 112 236 143 232 127 236 b 43 206 82 236 55 219 l -26 137 b -32 125 -30 132 -32 130 b -26 112 -32 118 -26 112 b -6 92 -26 112 -17 102 b 7 86 -1 88 3 86 b 17 91 12 86 14 88 b 33 107 20 94 24 98 b 42 111 36 109 39 111 b 52 107 48 111 52 107 b 158 16 52 107 144 29 b 204 0 174 4 190 0 b 274 30 235 0 262 17 l 343 99 b 348 111 347 104 348 108 b 343 122 348 118 343 122 z', + }, + repeat1Bar: { + x_min: 0, + x_max: 481, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 693 -181 b 602 -91 693 -131 651 -91 b 511 -181 552 -91 511 -131 b 602 -272 511 -232 552 -272 b 693 -181 651 -272 693 -232 z', + }, + repeat2Bars: { + x_min: 0, + x_max: 735, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 1058 -181 b 968 -91 1058 -131 1017 -91 b 877 -181 917 -91 877 -131 b 968 -272 877 -232 917 -272 b 1058 -181 1017 -272 1058 -232 z m 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 1058 360 l 877 360 l 366 -360 l 547 -360 z', + }, + repeat4Bars: { + x_min: 0, + x_max: 1243, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 183 180 b 92 271 183 230 141 271 b 1 180 42 271 1 230 b 92 89 1 130 42 89 b 183 180 141 89 183 130 z m 693 360 l 511 360 l 0 -360 l 181 -360 z m 1058 360 l 877 360 l 366 -360 l 547 -360 z m 1424 360 l 1243 360 l 732 -360 l 913 -360 z m 1790 360 l 1608 360 l 1097 -360 l 1279 -360 z m 1790 -181 b 1699 -91 1790 -131 1748 -91 b 1608 -181 1649 -91 1608 -131 b 1699 -272 1608 -232 1649 -272 b 1790 -181 1748 -272 1790 -232 z', + }, + repeatBarSlash: { + x_min: 0, + x_max: 481, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 693 360 l 511 360 l 0 -360 l 181 -360 z', + }, + csymDiminished: { + x_min: 0, + x_max: 501, + y_min: 0, + y_max: 501, + ha: 501, + o: 'm 361 721 b 0 361 161 721 0 560 b 361 0 0 161 161 0 b 721 361 560 0 721 161 b 361 721 721 560 560 721 z m 557 164 b 361 82 505 111 435 82 b 164 164 287 82 216 111 b 82 361 111 216 82 287 b 164 557 82 436 111 505 b 361 639 216 611 287 639 b 557 557 436 639 505 611 b 639 361 611 505 639 436 b 557 164 639 287 609 216 z', + }, + csymHalfDiminished: { + x_min: -1, + x_max: 502, + y_min: -1, + y_max: 502, + ha: 503, + o: 'm 723 684 l 684 723 l 596 634 b 361 721 533 688 451 721 b 0 361 161 721 0 560 b 88 125 0 271 33 189 l -1 36 l 36 -1 l 125 88 b 361 0 189 33 271 0 b 721 361 560 0 721 161 b 634 596 721 451 688 533 z m 82 361 b 164 557 82 436 111 505 b 361 639 216 611 287 639 b 537 576 426 639 488 616 l 145 184 b 82 361 105 233 82 295 z m 639 361 b 557 164 639 287 609 216 b 361 82 505 111 435 82 b 184 145 295 82 233 105 l 576 537 b 639 361 616 488 639 426 z', + }, + csymAugmented: { + x_min: 1, + x_max: 321, + y_min: 90, + y_max: 410, + ha: 320, + o: 'm 462 400 l 272 400 l 272 590 l 192 590 l 192 400 l 1 400 l 1 320 l 192 320 l 192 130 l 272 130 l 272 320 l 462 320 z', + }, + csymMajorSeventh: { + x_min: 0, + x_max: 500, + y_min: 10, + y_max: 490, + ha: 480, + o: 'm 360 528 l 585 96 l 135 96 z m 360 706 l 0 14 l 720 14 z', + }, + accidentalNarrowReversedFlat: { + x_min: 0, + x_max: 160, + y_min: -176, + y_max: 452, + ha: 628, + o: 'm 0 84 b 101 -153 0 -26 65 -107 b 196 -249 153 -217 196 -249 b 206 -253 199 -251 202 -253 b 225 -235 216 -253 225 -245 l 230 632 b 212 651 230 642 222 651 l 199 651 b 180 632 189 651 180 642 l 184 204 b 125 217 184 204 171 217 b 0 84 53 217 0 173 z m 145 154 b 184 107 181 154 184 120 l 187 -179 b 114 -72 167 -158 132 -112 b 82 58 86 -13 82 36 b 145 154 82 79 82 154 z', + }, + accidentalNarrowReversedFlatAndFlat: { + x_min: 0, + x_max: 416, + y_min: -176, + y_max: 452, + ha: 628, + o: 'm 462 217 b 330 174 374 217 338 181 l 334 632 b 315 651 334 642 325 651 l 302 651 b 284 632 292 651 284 642 l 289 -235 b 308 -253 289 -245 298 -253 b 320 -249 312 -253 317 -251 b 492 -138 320 -249 433 -194 b 599 84 534 -98 599 -26 b 462 217 599 173 534 217 z m 501 58 b 459 -72 501 36 498 -19 b 327 -179 431 -111 359 -164 l 330 85 l 330 91 b 422 154 330 125 359 154 b 501 58 503 154 501 79 z m 0 84 b 101 -153 0 -26 65 -107 b 196 -249 153 -217 196 -249 b 206 -253 199 -251 202 -253 b 225 -235 216 -253 225 -245 l 230 632 b 212 651 230 642 222 651 l 199 651 b 180 632 189 651 180 642 l 184 204 b 125 217 184 204 171 217 b 0 84 53 217 0 173 z m 145 154 b 184 107 181 154 184 120 l 187 -179 b 114 -72 167 -158 132 -112 b 82 58 86 -13 82 36 b 145 154 82 79 82 154 z', + }, + }, + fontFamily: 'Leland', + resolution: 1000, + generatedOn: '2022-06-26T17:49:33.853Z', +}; diff --git a/build/esm/src/fonts/leland_metrics.js b/build/esm/src/fonts/leland_metrics.js new file mode 100644 index 0000000000..6b8cd3d1d1 --- /dev/null +++ b/build/esm/src/fonts/leland_metrics.js @@ -0,0 +1,507 @@ +export const LelandMetrics = { + name: 'Leland', + smufl: true, + stave: { + padding: 12, + endPaddingMax: 10, + endPaddingMin: 5, + unalignedNotePadding: 10, + }, + accidental: { + noteheadAccidentalPadding: 1, + leftPadding: 2, + accidentalSpacing: 3, + }, + clef: { + default: { + point: 32, + width: 26, + }, + small: { + point: 26, + width: 20, + }, + annotations: { + '8va': { + smuflCode: 'timeSig8', + default: { + point: 18, + treble: { + line: -1.4, + shiftX: 12, + }, + }, + small: { + point: 16, + treble: { + line: -0.2, + shiftX: 8, + }, + }, + }, + '8vb': { + smuflCode: 'timeSig8', + default: { + point: 18, + treble: { + line: 6, + shiftX: 10, + }, + bass: { + line: 3.5, + shiftX: 1, + }, + }, + small: { + point: 16, + treble: { + line: 5.3, + shiftX: 6, + }, + bass: { + line: 3.1, + shiftX: 0.5, + }, + }, + }, + }, + lineCount: { + '8': { point: 55, shiftY: 14 }, + '7': { point: 47, shiftY: 8 }, + '6': { point: 32, shiftY: 1 }, + '5': { point: 30, shiftY: -6 }, + '4': { point: 23, shiftY: -12 }, + }, + }, + parenthesis: { + default: { + point: 39, + width: 7, + }, + gracenote: { + point: (39 * 3) / 5, + width: 3, + }, + }, + pedalMarking: { + up: { + point: 40, + }, + down: { + point: 34, + }, + }, + digits: { + shiftLine: -1, + point: 34, + tupletPoint: 22, + shiftY: -6, + }, + articulation: { + articStaccatissimoAbove: { + padding: 2, + }, + articStaccatissimoBelow: { + padding: 2, + }, + }, + tremolo: { + default: { + point: 25, + spacing: 5, + offsetYStemUp: -5, + offsetYStemDown: 5, + offsetXStemUp: 11, + offsetXStemDown: 1, + }, + grace: { + point: 18, + spacing: 4, + offsetYStemUp: -5, + offsetYStemDown: 5, + offsetXStemUp: 7, + offsetXStemDown: 1, + }, + }, + staveRepetition: { + symbolText: { + offsetX: 12, + offsetY: 25, + spacing: 5, + }, + coda: { + offsetY: 25, + }, + segno: { + offsetY: 10, + }, + }, + stem: { + heightAdjustmentForFlag: -3, + noteHead: { + noteheadTriangleUpHalf: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpBlack: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpWhole: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadXHalf: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXBlack: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXWhole: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadHalf: { + offsetYBaseStemUp: -2.55, + offsetYBaseStemDown: 2.65, + }, + noteheadBlack: { + offsetYBaseStemUp: -2, + offsetYBaseStemDown: 2, + }, + noteheadSquareWhite: { + offsetYBaseStemDown: -5, + offsetYBaseStemUp: 5, + }, + }, + }, + glyphs: { + coda: { + point: 20, + shiftX: -7, + shiftY: 8, + }, + segno: { + shiftX: -7, + }, + flag: { + shiftX: -0.75, + staveTempo: { + shiftX: -1, + }, + }, + clef: { + gClef: { + default: { scale: 1.1, shiftY: 1 }, + small: { shiftY: 1.5 }, + }, + fClef: { + default: { shiftY: -0.5 }, + }, + }, + ornament: { + ornamentTurn: { + scale: 1.2, + }, + ornamentTurnSlash: { + scale: 1.2, + }, + }, + stringNumber: { + verticalPadding: 8, + stemPadding: 2, + leftPadding: 5, + rightPadding: 6, + }, + stroke: { + arrowheadBlackDown: { + straight: { + shiftX: -4.5, + }, + wiggly: { + shiftX: -1, + shiftY: 1, + }, + }, + arrowheadBlackUp: { + straight: { + shiftX: -0.85, + }, + wiggly: { + shiftX: -1, + shiftY: 1, + }, + }, + }, + textNote: { + point: 34, + breathMarkTick: { + point: 36, + shiftY: 9, + }, + breathMarkComma: { + point: 36, + }, + segno: { + point: 30, + shiftX: -7, + shiftY: 8, + }, + coda: { + point: 20, + shiftX: -7, + shiftY: 8, + }, + ornamentTrill: { + shiftX: -8, + shiftY: 8, + }, + ornamentTurn: { + point: 42, + }, + ornamentTurnSlash: { + point: 42, + }, + ornamentMordent: { + shiftX: -8, + }, + ornamentShortTrill: { + shiftX: -8, + }, + }, + noteHead: { + minPadding: 2, + standard: { + restQuarterStemUp: { + point: 35, + }, + restQuarterStemDown: { + point: 35, + }, + }, + custom: { + noteheadCircleXStemUp: { + shiftX: 1.5, + }, + noteheadCircleXStemDown: { + shiftX: 0.25, + }, + noteheadDiamondHalfStemUp: { + shiftX: 1.5, + }, + noteheadDiamondBlackStemUp: { + shiftX: 1.5, + }, + noteheadDiamondWholeStemUp: { + shiftX: 1, + }, + noteheadXHalfStemUp: { + shiftX: -2, + }, + noteheadXHalfStemDown: { + shiftX: 1, + }, + noteheadXWholeStemUp: { + shiftX: -4, + }, + noteheadXWholeStemDown: { + shiftX: 1, + }, + noteheadSquareWhiteStemDown: { + shiftX: 0.25, + }, + noteheadSquareWhiteStemUp: { + shiftX: -0.75, + }, + noteheadSquareBlackStemUp: { + shiftX: -0.75, + }, + noteheadTriangleUpWholeStemUp: { + shiftX: -0.75, + }, + }, + }, + chordSymbol: { + global: { + superscriptOffset: -400, + subscriptOffset: 300, + kerningOffset: -250, + lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'], + upperKerningText: ['A', 'L'], + spacing: 100, + superSubRatio: 0.66, + }, + csymDiminished: { + scale: 0.8, + leftSideBearing: -32, + advanceWidth: 506, + yOffset: 0, + }, + csymHalfDiminished: { + scale: 0.8, + leftSideBearing: -32, + advanceWidth: 506, + yOffset: 0, + }, + csymAugmented: { + scale: 1, + leftSideBearing: 0, + advanceWidth: 530, + yOffset: 0, + }, + csymParensLeftTall: { + scale: 0.8, + leftSideBearing: -20, + advanceWidth: 184, + yOffset: 250, + }, + csymParensRightTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 189, + yOffset: 250, + }, + csymBracketLeftTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 328, + yOffset: 0, + }, + csymBracketRightTall: { + scale: 0.8, + leftSideBearing: 1, + advanceWidth: 600, + yOffset: 0, + }, + csymParensLeftVeryTall: { + scale: 0.9, + leftSideBearing: 50, + advanceWidth: 121, + yOffset: 350, + }, + csymParensRightVeryTall: { + scale: 0.9, + leftSideBearing: 0, + advanceWidth: 111, + yOffset: 350, + }, + csymDiagonalArrangementSlash: { + scale: 0.6, + leftSideBearing: -1, + advanceWidth: 990, + yOffset: 0, + }, + csymMinor: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 482, + yOffset: 0, + }, + csymMajorSeventh: { + scale: 0.9, + leftSideBearing: 200, + yOffset: 0, + advanceWidth: 600, + }, + accidentalSharp: { + scale: 0.75, + leftSideBearing: 20, + advanceWidth: 250, + yOffset: -302, + }, + accidentalFlat: { + scale: 0.9, + leftSideBearing: -20, + advanceWidth: 226, + yOffset: -184, + }, + }, + jazzOrnaments: { + brassScoop: { + scale: 1.0, + xOffset: -12, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 20, + }, + brassDoitMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 22, + }, + brassFallLipShort: { + scale: 1.0, + xOffset: 16, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 15, + }, + brassLiftMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 5, + stemUpYOffset: 0, + reportedWidth: 5, + }, + brassFallRoughMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 28, + stemUpYOffset: 0, + reportedWidth: 5, + }, + brassBend: { + scale: 1.0, + xOffset: 2, + yOffset: -8, + stemUpYOffset: 25, + reportedWidth: 5, + }, + brassMuteClosed: { + scale: 1.0, + xOffset: 3, + yOffset: -8, + stemUpYOffset: 25, + reportedWidth: 5, + }, + brassMuteOpen: { + scale: 1.0, + xOffset: 3, + yOffset: -7, + stemUpYOffset: 25, + reportedWidth: 5, + }, + brassFlip: { + scale: 1.0, + xOffset: 10, + yOffset: 0, + stemUpYOffset: 7, + reportedWidth: 10, + }, + brassJazzTurn: { + scale: 1.0, + xOffset: 0, + yOffset: 0, + stemUpYOffset: 8, + reportedWidth: 31, + }, + brassSmear: { + scale: 1.0, + xOffset: 10, + yOffset: 0, + stemUpYOffset: 8, + reportedWidth: 5, + }, + }, + tuplet: { + noteHeadOffset: 20, + stemOffset: 10, + bottomLine: 4, + topModifierOffset: 15, + }, + }, +}; diff --git a/build/esm/src/fonts/load_all.js b/build/esm/src/fonts/load_all.js new file mode 100644 index 0000000000..09b7cde58a --- /dev/null +++ b/build/esm/src/fonts/load_all.js @@ -0,0 +1,12 @@ +import { loadBravura } from './load_bravura.js'; +import { loadCustom } from './load_custom.js'; +import { loadGonville } from './load_gonville.js'; +import { loadLeland } from './load_leland.js'; +import { loadPetaluma } from './load_petaluma.js'; +export function loadAllMusicFonts() { + loadBravura(); + loadGonville(); + loadPetaluma(); + loadCustom(); + loadLeland(); +} diff --git a/build/esm/src/fonts/load_bravura.js b/build/esm/src/fonts/load_bravura.js new file mode 100644 index 0000000000..db708aa73b --- /dev/null +++ b/build/esm/src/fonts/load_bravura.js @@ -0,0 +1,6 @@ +import { Font } from '../font.js'; +import { BravuraFont } from './bravura_glyphs.js'; +import { BravuraMetrics } from './bravura_metrics.js'; +export function loadBravura() { + Font.load('Bravura', BravuraFont, BravuraMetrics); +} diff --git a/build/esm/src/fonts/load_custom.js b/build/esm/src/fonts/load_custom.js new file mode 100644 index 0000000000..0a1bb4f9df --- /dev/null +++ b/build/esm/src/fonts/load_custom.js @@ -0,0 +1,6 @@ +import { Font } from '../font.js'; +import { CustomFont } from './custom_glyphs.js'; +import { CustomMetrics } from './custom_metrics.js'; +export function loadCustom() { + Font.load('Custom', CustomFont, CustomMetrics); +} diff --git a/build/esm/src/fonts/load_gonville.js b/build/esm/src/fonts/load_gonville.js new file mode 100644 index 0000000000..16980d80cc --- /dev/null +++ b/build/esm/src/fonts/load_gonville.js @@ -0,0 +1,6 @@ +import { Font } from '../font.js'; +import { GonvilleFont } from './gonville_glyphs.js'; +import { GonvilleMetrics } from './gonville_metrics.js'; +export function loadGonville() { + Font.load('Gonville', GonvilleFont, GonvilleMetrics); +} diff --git a/build/esm/src/fonts/load_leland.js b/build/esm/src/fonts/load_leland.js new file mode 100644 index 0000000000..22658eaf3f --- /dev/null +++ b/build/esm/src/fonts/load_leland.js @@ -0,0 +1,6 @@ +import { Font } from '../font.js'; +import { LelandFont } from './leland_glyphs.js'; +import { LelandMetrics } from './leland_metrics.js'; +export function loadLeland() { + Font.load('Leland', LelandFont, LelandMetrics); +} diff --git a/build/esm/src/fonts/load_petaluma.js b/build/esm/src/fonts/load_petaluma.js new file mode 100644 index 0000000000..c3d416ba25 --- /dev/null +++ b/build/esm/src/fonts/load_petaluma.js @@ -0,0 +1,6 @@ +import { Font } from '../font.js'; +import { PetalumaFont } from './petaluma_glyphs.js'; +import { PetalumaMetrics } from './petaluma_metrics.js'; +export function loadPetaluma() { + Font.load('Petaluma', PetalumaFont, PetalumaMetrics); +} diff --git a/build/esm/src/fonts/petaluma_glyphs.js b/build/esm/src/fonts/petaluma_glyphs.js new file mode 100644 index 0000000000..26bdfab2ea --- /dev/null +++ b/build/esm/src/fonts/petaluma_glyphs.js @@ -0,0 +1,1615 @@ +export const PetalumaFont = { + glyphs: { + bracketTop: { + x_min: 0, + x_max: 508, + y_min: 0, + y_max: 370, + ha: 370, + o: 'm 22 0 b 122 0 55 1 89 0 l 157 0 b 713 376 425 0 622 137 b 732 467 724 406 732 436 b 726 514 732 482 730 498 b 711 533 723 528 719 533 b 693 526 707 533 700 530 b 674 498 683 520 678 508 b 635 406 662 467 652 435 b 310 164 560 281 458 193 b 154 151 258 154 206 151 b 39 154 117 151 78 154 b 1 120 17 154 4 145 b 0 84 0 108 0 96 b 0 20 0 63 1 40 b 22 0 0 4 7 0 z', + }, + bracketBottom: { + x_min: 0, + x_max: 496, + y_min: -393, + y_max: 0, + ha: 393, + o: 'm 696 -566 b 711 -539 713 -566 708 -549 b 714 -521 713 -533 714 -527 b 713 -508 714 -517 713 -513 b 661 -327 706 -445 688 -384 b 392 -42 603 -203 513 -109 b 206 0 331 -7 266 0 b 160 -1 190 0 174 -1 b 26 -1 107 -1 66 -3 b 0 -19 12 -1 0 -4 l 0 -23 b 3 -50 1 -32 3 -42 b 1 -86 3 -62 1 -73 b 4 -118 1 -96 1 -108 b 45 -151 10 -145 23 -154 b 180 -143 89 -144 135 -145 b 621 -419 392 -135 523 -236 b 662 -539 641 -456 655 -497 b 696 -566 667 -557 680 -566 z', + }, + barlineTick: { + x_min: 0, + x_max: 56.036101509664164, + y_min: 876.905249806889, + y_max: 1121.5430338167066, + ha: 244.63778400981766, + o: 'm 42 1263 b 66 1287 62 1261 66 1272 b 81 1583 65 1387 72 1485 b 35 1614 82 1610 53 1610 b 14 1591 17 1619 16 1604 b 0 1408 7 1525 0 1459 l 0 1292 b 42 1263 1 1263 23 1266 z', + }, + breathMarkTick: { + x_min: 0, + x_max: 568, + y_min: 0, + y_max: 621, + ha: 621, + o: 'm 258 0 b 278 39 276 0 274 24 b 279 56 279 45 279 50 l 279 73 b 278 117 279 88 278 102 b 281 148 278 127 279 138 b 536 600 312 330 387 487 b 744 719 600 651 670 690 b 815 779 775 730 808 740 b 818 824 818 793 818 808 b 815 868 818 838 818 852 b 796 894 814 881 808 894 b 779 888 791 894 786 893 b 719 864 760 878 739 871 b 372 602 580 806 459 724 b 229 252 298 498 251 383 b 220 268 225 262 222 264 b 209 302 217 279 213 291 b 75 527 181 387 143 467 b 16 563 58 543 39 573 b 0 539 3 557 0 549 b 12 492 0 524 9 507 b 56 400 19 459 22 425 b 163 269 104 367 138 323 b 238 36 197 194 216 115 b 258 0 242 22 243 0 z', + }, + segno: { + x_min: 0, + x_max: 798, + y_min: -65, + y_max: 806, + ha: 871, + o: 'm 16 -94 b 66 -69 39 -92 53 -85 b 177 59 102 -26 138 17 b 543 456 298 192 420 324 b 726 300 615 420 680 373 b 753 217 744 271 753 243 b 655 112 753 170 719 131 b 599 104 636 107 618 104 b 461 173 544 104 495 128 b 432 190 454 183 444 190 b 409 179 425 190 418 187 b 359 118 390 160 373 141 b 341 72 347 101 341 86 b 373 24 341 56 351 40 b 409 6 384 17 396 10 b 550 -13 454 -12 501 -14 b 599 -6 566 -12 583 -10 b 864 213 720 27 806 104 b 886 300 878 242 886 271 b 857 395 886 331 877 363 b 799 467 840 420 821 445 b 648 572 755 513 704 546 b 1110 1083 802 743 955 914 b 1140 1129 1123 1097 1136 1110 b 1149 1148 1142 1135 1149 1142 b 1145 1153 1149 1149 1148 1152 b 1123 1161 1139 1158 1130 1161 b 1109 1156 1119 1161 1113 1159 b 1089 1138 1102 1151 1094 1145 b 946 988 1040 1089 989 1041 b 595 602 834 855 711 732 l 590 598 l 549 615 b 432 793 462 647 432 723 b 534 888 432 851 474 888 b 671 834 588 888 631 864 b 710 818 684 824 696 818 b 724 821 714 818 719 819 b 809 883 757 834 788 852 b 816 901 814 890 816 896 b 802 923 816 910 812 916 b 706 984 770 945 742 971 b 593 1011 668 998 631 1011 b 516 991 567 1011 541 1005 b 333 799 433 949 380 876 b 302 693 312 765 302 729 b 330 589 302 658 311 624 b 469 488 360 533 415 511 b 485 482 475 487 480 485 b 266 249 412 405 338 327 b 121 88 217 196 170 141 b 9 -65 78 40 37 -7 b 0 -85 4 -72 0 -79 b 16 -94 0 -91 4 -94 z m 861 536 b 927 575 890 539 909 557 b 965 628 952 598 965 613 b 926 680 965 644 952 658 b 865 713 900 701 883 713 b 805 667 845 713 828 698 b 768 611 791 649 770 631 b 812 564 766 589 798 582 b 861 536 824 550 840 537 z m 251 350 b 363 436 285 348 353 403 b 354 456 366 448 360 452 b 271 518 327 477 298 497 b 243 528 261 526 252 528 b 210 513 232 528 222 523 b 157 454 190 494 176 472 b 141 428 147 444 141 436 b 158 406 141 420 147 413 b 216 361 180 393 197 376 b 245 350 225 356 235 350 z', + }, + coda: { + x_min: 0, + x_max: 1380, + y_min: -196, + y_max: 1037, + ha: 1233, + o: 'm 1028 -282 b 1057 -245 1045 -282 1053 -261 b 1060 -203 1060 -232 1060 -217 b 1063 9 1060 -132 1061 -62 b 1390 194 1192 22 1303 81 b 1531 543 1467 298 1512 415 b 1532 556 1531 547 1532 552 b 1904 559 1656 557 1780 559 b 1950 582 1920 559 1941 569 b 1987 674 1970 609 1987 638 b 1984 698 1987 681 1986 690 b 1950 700 1973 698 1961 700 l 1941 700 l 1545 696 b 1535 776 1545 723 1541 749 b 1103 1113 1477 996 1326 1107 b 1080 1115 1096 1115 1087 1115 b 1081 1322 1080 1184 1080 1253 b 1079 1467 1083 1371 1081 1418 b 1061 1493 1079 1476 1080 1493 l 1060 1493 b 1028 1467 1044 1490 1031 1485 b 1020 1403 1025 1446 1020 1424 b 1017 1110 1020 1305 1018 1208 l 962 1106 b 569 914 808 1087 671 1035 b 451 683 510 844 472 766 l 161 678 b 118 680 148 678 132 680 b 79 670 101 680 86 678 b 0 544 48 636 29 592 l 37 544 l 429 549 b 428 518 428 539 428 528 b 488 285 428 435 458 360 b 681 81 526 192 593 124 b 946 9 763 40 854 19 b 1008 6 966 7 988 6 b 1005 -137 1008 -42 1005 -89 b 1012 -243 1005 -173 1005 -209 b 1028 -282 1015 -258 1011 -282 z m 1074 690 b 1079 935 1077 772 1077 852 b 1326 855 1166 932 1250 909 b 1446 694 1385 814 1426 759 b 1269 693 1387 694 1328 693 b 1074 690 1204 693 1139 691 z m 577 684 b 766 874 618 763 678 828 b 989 932 837 912 913 923 b 1015 933 998 932 1007 933 b 1014 822 1015 896 1014 860 b 1011 688 1012 791 1012 743 z m 1067 184 b 1071 553 1070 307 1068 429 b 1439 556 1194 553 1316 554 b 1437 554 1439 554 1437 554 b 1341 337 1413 478 1387 402 b 1119 192 1286 261 1211 212 b 1067 184 1102 189 1084 186 z m 1008 180 b 660 264 886 181 770 212 b 524 471 570 305 524 374 b 528 524 524 488 526 505 l 533 549 b 792 552 619 550 706 550 b 1009 553 865 553 937 552 b 1008 180 1009 428 1008 288 z', + }, + gClef: { + x_min: 0, + x_max: 664, + y_min: -559, + y_max: 1009, + ha: 1568, + o: 'm 343 -805 b 366 -801 350 -805 357 -804 b 409 -773 383 -795 397 -786 b 582 -328 528 -648 577 -497 b 583 -294 582 -315 583 -294 b 612 -279 583 -294 603 -282 b 747 -197 660 -256 706 -230 b 949 143 857 -109 920 10 b 956 206 955 164 956 186 b 791 384 956 297 906 363 b 704 393 762 390 733 393 b 498 336 632 393 563 374 b 481 325 490 331 481 325 l 444 465 b 442 485 442 472 442 485 b 609 880 442 485 589 746 b 619 996 616 919 619 958 b 613 1084 619 1027 618 1056 b 534 1387 599 1188 560 1286 b 482 1453 527 1417 517 1453 b 422 1407 456 1453 438 1428 b 305 1063 348 1305 312 1188 b 304 1002 304 1043 304 1022 b 338 654 304 886 323 769 b 343 629 338 645 341 636 b 144 356 278 537 206 451 b 23 144 101 288 53 220 b 0 20 7 107 0 63 b 82 -210 0 -69 30 -160 b 207 -288 112 -239 160 -271 b 410 -328 274 -312 340 -328 b 474 -324 431 -328 452 -327 l 491 -321 b 491 -341 491 -321 492 -334 b 402 -585 475 -428 454 -513 b 294 -668 374 -622 348 -664 b 271 -693 278 -670 271 -680 b 274 -708 271 -698 272 -703 b 302 -775 282 -730 292 -753 b 343 -805 311 -795 325 -805 z m 400 717 b 382 922 389 786 382 854 b 481 1286 382 1047 408 1169 b 507 1125 498 1233 507 1179 b 500 1040 507 1097 504 1068 b 400 717 481 927 455 818 z m 252 -135 b 196 -121 232 -134 215 -127 b 117 -69 158 -108 127 -94 b 111 -32 112 -58 111 -45 b 117 19 111 -16 114 1 b 130 56 118 27 127 52 b 324 337 186 156 253 246 l 384 416 l 395 384 b 416 291 406 348 416 291 b 350 213 416 291 376 239 b 243 -42 278 143 243 55 b 251 -117 243 -66 246 -91 b 252 -135 252 -122 252 -127 z m 563 -91 b 510 168 552 3 530 78 b 513 192 508 179 508 186 b 624 202 550 199 586 202 b 730 192 660 202 694 199 b 850 141 773 183 816 176 b 858 134 852 138 855 135 b 595 -121 801 19 716 -68 l 569 -131 z m 410 -160 b 311 -147 360 -160 311 -147 b 307 -98 311 -147 307 -127 b 314 -33 307 -79 308 -56 b 429 131 328 36 377 85 b 441 138 433 135 438 138 b 449 122 446 138 448 132 b 490 -131 462 37 484 -46 b 490 -153 491 -140 490 -153 b 410 -160 490 -153 452 -163 z', + }, + cClef: { + x_min: 0, + x_max: 731, + y_min: -543, + y_max: 543, + ha: 1086, + o: 'm 131 -782 b 141 -755 138 -782 140 -773 b 147 -490 143 -667 145 -577 b 160 207 150 -258 153 -24 b 168 618 164 344 158 481 b 81 768 173 690 132 732 b 45 782 66 778 55 782 b 3 740 26 782 13 768 b 0 724 1 736 0 730 l 1 710 b 4 596 4 672 4 634 l 4 382 b 9 102 4 288 4 196 b 17 -301 13 -32 10 -166 l 17 -672 b 50 -736 17 -701 27 -720 b 109 -772 69 -749 91 -759 b 131 -782 120 -778 127 -782 z m 615 -770 b 881 -684 710 -770 801 -739 b 1020 -395 986 -612 1020 -510 b 1017 -334 1020 -374 1018 -354 b 769 -62 1007 -209 896 -75 b 746 -60 762 -60 755 -60 b 639 -73 710 -60 675 -69 b 524 -109 598 -79 560 -92 b 528 -36 526 -85 528 -60 b 527 -4 528 -26 528 -14 b 528 39 527 10 528 24 b 526 99 528 59 527 79 b 592 94 549 95 570 94 b 648 99 611 94 629 95 b 912 157 744 94 844 117 b 1053 377 1009 215 1053 284 b 1050 425 1053 393 1053 409 b 914 665 1037 521 986 602 b 717 753 855 717 791 753 b 626 734 688 753 658 747 l 462 665 b 347 500 374 628 347 580 b 350 449 347 484 348 468 b 392 419 353 428 367 416 b 492 438 425 425 459 428 b 541 498 524 448 541 468 b 540 514 541 503 541 508 b 537 546 537 524 537 536 b 573 639 537 580 550 611 b 606 657 582 649 593 657 l 609 657 b 716 622 647 652 684 647 b 834 372 801 556 834 469 b 831 323 834 356 832 338 b 743 187 825 266 795 217 b 710 176 732 180 720 176 b 694 179 704 176 700 177 b 527 223 638 193 582 206 b 495 229 516 228 505 229 b 454 220 481 229 468 225 b 395 189 432 213 415 200 b 363 180 384 186 374 181 b 348 168 356 179 348 176 b 340 161 343 167 340 164 b 347 150 340 157 343 154 b 356 147 348 148 353 147 b 364 92 361 130 363 111 b 369 -37 367 49 369 6 b 363 -154 369 -76 367 -115 b 357 -236 360 -183 357 -210 b 376 -264 357 -253 361 -259 b 456 -289 402 -284 429 -289 b 521 -282 478 -289 500 -285 b 549 -255 537 -279 546 -271 b 598 -177 556 -225 577 -202 b 622 -164 605 -168 613 -164 b 636 -167 626 -164 631 -166 b 749 -225 678 -177 714 -199 b 848 -405 814 -276 848 -337 b 824 -507 848 -436 840 -471 b 657 -657 792 -582 730 -625 b 608 -668 638 -664 622 -668 b 534 -602 572 -668 547 -645 b 513 -575 530 -589 523 -575 b 507 -576 510 -575 508 -575 b 478 -582 497 -580 488 -582 b 405 -570 454 -582 428 -570 b 389 -572 399 -570 395 -570 l 363 -572 b 321 -575 348 -572 333 -569 l 321 631 b 323 662 323 641 323 652 b 315 716 323 681 321 698 b 304 736 314 723 317 736 l 302 736 b 281 716 294 734 285 729 b 275 665 276 700 275 683 l 275 382 b 276 99 275 288 275 193 b 279 -170 278 10 276 -81 b 284 -399 282 -246 284 -323 b 282 -629 284 -475 282 -553 b 289 -721 282 -660 289 -690 b 300 -736 289 -727 291 -736 b 312 -724 307 -736 310 -730 b 321 -667 323 -706 321 -687 l 321 -632 l 328 -644 l 340 -657 b 510 -757 386 -707 445 -740 b 615 -770 546 -766 580 -770 z', + }, + fClef: { + x_min: 0, + x_max: 776, + y_min: -496, + y_max: 216, + ha: 712, + o: 'm 402 -706 b 804 -405 592 -678 716 -566 b 876 -53 861 -298 874 -183 b 868 33 876 -32 873 1 b 560 311 845 217 723 311 b 524 310 549 311 536 311 b 131 134 373 297 239 242 b 17 -29 84 86 37 39 b 9 -89 12 -50 9 -71 b 112 -238 9 -154 43 -206 b 124 -243 117 -239 120 -242 b 186 -261 145 -255 166 -261 b 268 -228 215 -261 242 -249 b 351 -59 325 -181 351 -124 b 343 10 351 -36 348 -13 b 340 36 341 19 340 27 b 409 105 340 75 363 102 b 441 107 420 107 431 107 b 624 36 510 107 573 86 b 744 -200 688 -27 724 -109 b 747 -230 747 -210 747 -222 b 717 -323 747 -264 736 -292 b 608 -445 688 -370 654 -410 b 307 -541 518 -513 415 -541 l 213 -541 b 39 -521 154 -541 96 -539 b 0 -552 17 -514 0 -531 b 1 -564 0 -556 0 -560 b 17 -611 6 -580 10 -596 b 101 -694 35 -648 50 -684 b 288 -714 164 -707 225 -714 b 402 -706 325 -714 363 -711 z m 1018 92 b 1080 118 1041 91 1068 96 b 1117 219 1099 150 1117 180 b 1113 252 1117 229 1116 240 b 1045 288 1102 297 1068 276 b 1017 262 1028 297 1024 274 b 984 124 989 220 996 170 b 1008 91 979 108 986 91 z m 972 -281 b 1070 -148 1024 -279 1070 -210 b 1025 -105 1070 -105 1045 -112 b 989 -127 1004 -96 998 -114 b 949 -249 963 -164 963 -209 b 969 -281 943 -265 949 -281 z', + }, + unpitchedPercussionClef1: { + x_min: 0, + x_max: 379.13761966945304, + y_min: -250, + y_max: 250, + ha: 500, + o: 'm 481 -360 b 507 -357 491 -360 500 -360 b 546 -295 541 -346 547 -325 b 536 79 543 -170 540 -46 b 523 311 533 157 534 235 b 475 359 518 340 508 359 b 425 360 459 359 442 360 b 400 359 416 360 409 360 b 337 294 348 353 340 347 l 337 -73 b 336 -264 337 -137 337 -200 b 343 -294 336 -274 338 -284 b 481 -360 359 -330 431 -360 z m 144 -341 b 207 -320 167 -341 189 -331 b 217 -301 215 -315 217 -308 b 210 -262 217 -289 210 -275 b 228 187 212 -112 209 37 b 228 287 228 220 229 253 b 174 353 228 336 222 343 b 120 359 157 357 138 359 b 48 357 96 359 72 356 b 17 323 29 357 19 344 b 7 120 16 255 9 187 b 6 -109 6 43 6 -33 l 6 -204 b 0 -251 6 -220 0 -235 b 3 -269 0 -256 0 -262 b 127 -340 24 -330 79 -328 b 144 -341 132 -341 138 -341 z', + }, + '6stringTabClef': { + x_min: 0, + x_max: 438, + y_min: -768, + y_max: 767, + ha: 1535, + o: 'm 369 438 b 374 439 370 438 372 438 b 384 462 383 444 384 452 l 384 474 b 390 697 386 547 390 622 b 373 1002 390 799 390 901 l 533 1002 b 560 1001 541 1004 552 1001 b 573 1007 567 1001 572 1002 b 546 1050 579 1025 559 1038 b 536 1056 543 1053 539 1053 b 324 1104 472 1102 397 1104 b 72 1090 238 1104 154 1099 b 55 1093 66 1090 60 1092 b 37 1073 46 1093 37 1089 b 60 1045 37 1061 48 1051 b 203 1001 105 1022 151 1001 b 233 1004 213 1001 223 1002 b 246 1005 238 1004 243 1005 b 272 975 264 1005 272 996 l 272 965 b 258 596 264 842 265 719 b 315 474 253 540 272 504 l 343 455 b 369 438 351 448 357 438 z m 114 -320 b 127 -304 120 -320 124 -315 b 171 -174 141 -261 158 -219 b 222 -135 179 -147 196 -137 b 426 -122 289 -131 359 -128 b 498 -164 462 -120 482 -127 b 628 -301 521 -226 575 -264 b 631 -288 631 -295 631 -291 b 628 -269 631 -281 629 -276 b 569 -134 616 -220 589 -179 b 408 225 514 -14 462 107 b 314 357 384 274 351 318 b 278 380 298 372 288 379 b 251 351 268 380 261 372 b 4 -209 156 171 75 -17 b 0 -228 1 -215 0 -222 b 19 -258 0 -240 7 -249 b 102 -314 45 -279 75 -294 b 114 -320 107 -318 111 -320 z m 425 6 b 360 20 403 17 382 20 b 274 14 331 20 302 14 l 246 14 l 340 206 b 425 6 369 137 395 75 z m 245 -1106 b 281 -1104 256 -1106 269 -1106 b 511 -888 400 -1094 511 -1035 b 454 -688 511 -814 504 -744 b 448 -678 449 -685 448 -681 b 454 -667 448 -675 449 -671 b 504 -497 503 -619 507 -559 b 324 -288 500 -383 436 -308 b 295 -287 314 -287 304 -287 l 282 -287 b 115 -330 223 -287 168 -307 b 94 -366 102 -336 94 -348 l 94 -370 b 96 -435 96 -392 96 -413 b 73 -858 89 -576 71 -717 b 78 -919 73 -878 78 -899 b 72 -950 78 -930 76 -940 b 63 -992 66 -965 63 -978 b 66 -1015 63 -999 65 -1008 b 173 -1104 84 -1106 84 -1106 b 245 -1106 197 -1104 220 -1104 z m 161 -622 b 147 -618 156 -622 151 -621 b 140 -600 141 -612 140 -606 b 144 -564 140 -589 144 -575 b 143 -554 144 -560 144 -557 l 143 -546 b 220 -451 144 -467 143 -465 b 278 -445 239 -446 259 -444 b 418 -497 328 -445 376 -461 b 429 -516 426 -504 429 -510 b 415 -533 429 -521 423 -527 b 219 -608 357 -579 287 -590 b 215 -609 217 -608 216 -609 b 161 -622 197 -609 177 -622 z m 154 -953 b 130 -933 135 -953 130 -948 l 130 -865 l 128 -865 b 135 -788 130 -838 124 -808 b 203 -769 145 -769 180 -776 b 259 -762 223 -765 242 -762 b 441 -852 330 -762 386 -805 b 449 -867 446 -858 449 -863 b 436 -884 449 -874 444 -878 b 318 -942 402 -914 363 -935 b 154 -953 264 -950 209 -953 z', + }, + timeSig0: { + x_min: 20, + x_max: 513, + y_min: -358.159536277652, + y_max: 359, + ha: 717.159536277652, + o: 'm 341 -516 b 420 -510 367 -516 395 -514 b 675 -338 533 -494 622 -448 b 737 -92 716 -256 734 -171 b 739 -35 739 -73 739 -53 b 680 305 739 86 720 207 b 400 517 622 449 537 517 b 337 514 380 517 359 517 b 289 507 321 511 305 513 b 91 317 192 477 127 412 b 29 9 50 212 29 108 b 217 -458 29 -157 88 -312 b 341 -516 251 -494 291 -518 z m 412 -452 b 359 -425 393 -452 376 -444 b 187 14 242 -301 179 -158 b 268 334 193 127 212 235 b 387 448 295 383 330 428 b 406 452 395 451 400 452 b 428 444 413 452 420 449 b 517 324 471 413 497 372 b 586 -29 560 222 586 86 b 556 -271 586 -112 585 -193 b 468 -422 536 -327 508 -377 b 412 -452 449 -442 431 -452 z', + }, + timeSig1: { + x_min: 20, + x_max: 283, + y_min: -364, + y_max: 366, + ha: 730, + o: 'm 264 -524 b 357 -510 297 -524 325 -516 b 374 -490 369 -508 374 -501 b 380 -438 376 -472 380 -455 l 406 246 b 408 301 408 265 408 282 b 400 445 408 348 405 396 b 288 527 395 491 338 527 b 253 520 276 527 264 526 b 240 508 249 517 245 513 b 49 409 192 445 127 413 b 29 396 33 408 29 403 b 32 380 29 392 30 386 b 59 363 36 366 49 364 b 164 348 95 356 130 348 b 222 357 183 348 203 351 b 238 361 228 360 233 360 b 252 334 248 361 252 353 b 243 59 252 242 249 150 b 219 -490 229 -124 233 -307 b 264 -524 217 -516 232 -524 z', + }, + timeSig2: { + x_min: 20, + x_max: 660.4636303241031, + y_min: -378.7201231608281, + y_max: 382, + ha: 760.720123160828, + o: 'm 99 -543 b 130 -533 111 -550 121 -540 b 255 -448 168 -501 213 -475 b 338 -425 282 -431 310 -425 b 392 -431 356 -425 374 -426 b 485 -462 423 -438 454 -451 b 648 -497 540 -482 595 -497 b 834 -441 711 -497 773 -480 b 950 -242 906 -395 958 -334 b 942 -210 950 -230 950 -215 b 912 -220 932 -204 920 -213 b 861 -264 894 -235 877 -248 b 775 -317 835 -289 808 -305 b 675 -334 742 -328 708 -334 b 510 -295 619 -334 563 -318 b 372 -264 465 -278 420 -264 b 305 -272 350 -264 328 -266 b 331 -242 318 -256 324 -249 b 490 -73 386 -187 438 -131 b 675 340 595 43 664 180 b 677 369 677 350 677 360 b 556 536 677 461 638 508 b 468 550 526 546 497 550 b 297 508 409 550 353 533 b 111 354 220 475 168 412 b 29 197 65 308 29 261 b 32 164 29 187 29 176 b 29 140 33 157 29 147 b 43 125 29 132 32 125 b 73 147 55 125 65 138 b 86 163 79 153 82 158 b 238 320 134 219 183 272 b 425 389 292 367 360 389 b 575 341 480 389 531 373 b 606 298 590 330 606 317 b 600 278 606 292 603 285 b 501 107 576 217 544 158 b 304 -104 439 33 372 -35 b 111 -356 230 -180 167 -265 b 84 -446 92 -386 84 -415 b 86 -481 84 -458 85 -469 b 88 -514 88 -491 88 -503 b 99 -543 89 -526 91 -537 z', + }, + timeSig3: { + x_min: 19.824321427094187, + x_max: 540, + y_min: -392, + y_max: 392, + ha: 784, + o: 'm 216 -540 b 354 -564 264 -556 310 -564 b 605 -465 445 -564 530 -530 b 729 -161 697 -383 729 -275 b 724 -82 729 -135 727 -108 b 589 95 716 -1 670 62 b 523 114 567 102 546 108 b 750 418 606 213 677 315 b 778 503 769 444 778 472 b 773 540 778 514 776 527 b 750 564 769 557 762 564 b 736 562 746 564 742 563 b 641 552 704 553 672 552 b 402 554 562 552 481 554 l 346 554 b 84 546 258 554 170 554 b 36 501 55 543 40 531 b 29 412 30 472 32 442 b 52 384 27 393 32 384 l 56 384 b 210 392 107 389 158 392 l 602 392 b 354 108 523 285 445 192 b 246 -65 300 58 246 12 b 252 -108 246 -78 248 -92 l 252 -111 b 264 -141 251 -122 251 -135 b 291 -132 274 -145 284 -140 b 425 -72 328 -95 377 -84 b 475 -65 442 -68 459 -65 b 592 -108 517 -65 557 -79 b 645 -179 615 -125 645 -147 b 642 -194 645 -184 644 -189 b 485 -376 616 -278 569 -344 b 361 -399 444 -392 402 -399 b 151 -340 289 -399 219 -376 b 88 -275 122 -323 98 -310 b 71 -249 86 -268 85 -249 b 63 -251 68 -249 66 -249 b 36 -288 48 -255 36 -266 b 55 -423 33 -336 45 -377 b 101 -482 60 -448 78 -468 b 216 -540 138 -504 174 -526 z', + }, + timeSig4: { + x_min: 20, + x_max: 633.0785282750762, + y_min: -489.59088556716864, + y_max: 491.18559127100053, + ha: 980.7764768381692, + o: 'm 608 -704 b 641 -684 622 -708 634 -696 b 667 -602 660 -660 662 -631 b 685 -190 683 -465 680 -327 l 685 -176 b 831 -127 736 -166 783 -148 b 912 0 901 -94 913 -76 b 886 53 912 36 904 52 b 848 40 877 53 864 49 l 838 36 b 687 -13 789 14 739 -3 b 681 177 687 50 684 114 b 672 338 678 230 677 285 b 654 373 671 350 672 373 b 622 340 636 373 624 361 b 615 262 621 314 613 288 b 619 -22 616 167 619 72 b 569 -22 602 -23 585 -23 b 305 -3 481 -16 395 -1 b 210 -9 274 -3 242 -4 b 301 163 242 52 268 108 b 513 552 377 288 459 412 b 536 652 526 585 536 618 b 533 683 536 662 534 672 b 520 707 531 691 531 707 b 487 693 508 708 494 704 b 474 668 482 684 477 677 b 384 490 454 603 418 547 b 253 281 343 419 295 351 b 73 -13 194 181 145 78 b 29 -108 50 -42 29 -72 b 37 -147 29 -121 32 -134 b 50 -186 43 -160 50 -173 b 68 -216 52 -207 56 -215 b 92 -207 73 -216 82 -213 b 288 -166 156 -180 220 -166 b 556 -186 377 -166 467 -180 b 586 -189 566 -187 576 -187 b 616 -186 596 -189 606 -189 b 606 -432 613 -268 612 -350 b 596 -625 603 -495 596 -559 b 598 -670 596 -641 596 -655 b 608 -704 598 -683 596 -700 z', + }, + timeSig5: { + x_min: 19.663871085403297, + x_max: 583, + y_min: -389, + y_max: 389, + ha: 778, + o: 'm 132 -536 b 249 -560 168 -553 209 -559 b 507 -462 351 -560 454 -514 b 677 -183 588 -384 642 -289 b 694 -85 688 -150 694 -117 b 540 138 694 12 642 94 b 422 173 501 154 462 167 b 400 187 408 174 400 177 b 405 202 400 190 402 196 b 428 284 416 228 426 255 b 469 312 431 307 442 312 b 757 372 569 312 662 343 b 840 490 821 392 840 432 b 812 560 840 540 834 560 b 763 546 801 560 785 556 b 757 543 762 546 759 544 b 465 484 665 505 570 484 b 396 484 452 484 425 487 b 353 454 377 482 366 474 b 281 300 323 405 304 351 b 245 164 262 255 245 212 b 246 144 245 158 246 151 b 233 63 249 115 243 89 b 225 35 228 50 225 40 b 264 14 225 22 236 19 b 445 -26 325 7 387 0 b 569 -151 501 -52 547 -89 b 575 -180 573 -161 575 -170 b 527 -275 575 -217 547 -245 b 347 -367 484 -334 419 -367 b 261 -351 318 -367 289 -363 b 95 -300 206 -333 154 -307 b 55 -321 73 -297 65 -302 b 29 -468 29 -367 40 -419 b 56 -505 26 -482 36 -500 b 132 -536 82 -514 108 -524 z', + }, + timeSig6: { + x_min: 20, + x_max: 565, + y_min: -363, + y_max: 363, + ha: 726, + o: 'm 390 -518 b 621 -458 469 -507 549 -494 b 814 -134 753 -390 814 -281 b 652 59 814 -16 750 58 b 580 48 629 59 606 55 b 233 -334 392 -9 276 -138 b 115 -228 181 -314 143 -278 b 98 -160 104 -206 98 -183 b 107 -109 98 -144 101 -127 b 167 37 124 -59 145 -12 b 508 340 236 189 347 292 b 575 353 530 347 553 353 b 648 327 600 353 625 346 b 665 320 654 321 661 320 b 687 336 674 320 681 325 b 703 405 697 359 703 382 b 684 472 703 429 697 451 b 593 523 664 504 631 521 b 576 521 588 523 582 523 b 297 403 472 508 380 465 b 115 177 217 344 164 264 b 29 -121 60 82 29 -17 b 53 -278 29 -173 36 -225 b 226 -497 82 -374 131 -454 b 347 -523 265 -514 305 -523 b 390 -518 361 -523 376 -521 z m 351 -357 b 312 -351 337 -356 320 -363 b 325 -315 304 -340 320 -327 b 543 -120 373 -222 448 -158 b 622 -104 570 -108 596 -102 b 717 -132 655 -104 687 -112 b 740 -167 732 -143 740 -153 b 730 -196 740 -176 737 -184 b 563 -321 690 -258 634 -300 b 359 -357 497 -341 428 -354 z', + }, + timeSig7: { + x_min: 20.3617407597707, + x_max: 592, + y_min: -345, + y_max: 345, + ha: 690, + o: 'm 253 -497 b 318 -485 276 -497 297 -487 b 366 -441 348 -482 360 -468 b 487 -104 390 -323 433 -210 b 835 403 580 82 701 246 b 852 436 847 416 852 428 b 815 467 852 451 840 461 b 762 474 798 471 779 474 b 674 445 732 474 701 465 b 603 410 652 431 628 420 b 383 360 533 379 459 360 b 200 435 315 360 249 382 b 88 494 168 469 131 485 b 66 497 81 495 73 497 b 33 484 52 497 39 492 b 50 436 22 469 39 451 b 295 310 114 360 199 324 b 406 301 331 304 369 301 b 593 324 468 301 530 308 b 585 307 589 314 588 310 b 265 -249 451 137 338 -46 b 207 -442 242 -312 223 -377 b 204 -462 206 -449 204 -456 b 253 -497 204 -487 220 -497 z', + }, + timeSig8: { + x_min: 20, + x_max: 504.15101530718516, + y_min: -428, + y_max: 428, + ha: 856, + o: 'm 265 -616 b 289 -615 274 -616 281 -616 b 710 -271 492 -592 657 -485 b 726 -148 721 -229 727 -187 b 585 108 726 -48 687 42 b 572 127 576 114 573 120 b 576 144 572 132 575 138 b 598 301 590 196 598 249 b 586 413 598 338 593 376 b 356 616 559 531 467 616 b 233 582 317 616 275 606 b 29 233 101 505 29 384 b 104 9 29 153 46 72 b 189 -48 127 -16 160 -27 b 92 -158 141 -73 114 -114 b 37 -343 63 -217 50 -279 b 33 -390 35 -359 33 -374 b 265 -616 33 -524 148 -616 z m 258 105 b 124 148 215 105 167 117 b 96 196 105 163 96 177 b 99 217 96 202 96 209 b 197 384 120 281 151 337 b 350 451 242 429 297 451 b 516 364 412 451 472 422 b 530 331 523 354 530 343 l 530 327 l 530 320 b 468 151 520 261 507 200 b 419 122 455 135 442 125 b 258 105 370 117 320 105 z m 328 -438 b 158 -276 233 -436 160 -359 b 166 -239 158 -264 161 -252 b 230 -157 176 -203 202 -179 b 367 -72 274 -125 320 -98 b 448 -49 396 -56 423 -49 b 562 -118 491 -49 528 -72 b 611 -251 590 -157 611 -199 b 569 -341 611 -288 595 -318 b 328 -438 500 -402 416 -432 z', + }, + timeSig9: { + x_min: 20, + x_max: 494, + y_min: -421, + y_max: 421, + ha: 842, + o: 'm 235 -606 b 361 -564 275 -606 318 -593 b 619 -229 487 -482 566 -366 b 706 127 664 -114 694 4 b 711 233 708 163 711 197 b 700 346 711 271 708 308 b 389 606 658 517 530 606 b 351 605 376 606 364 606 b 56 272 171 586 56 441 b 96 98 56 216 69 156 b 334 -53 144 -3 238 -53 b 544 36 408 -53 484 -24 b 652 176 586 78 622 124 b 631 71 645 141 639 105 b 467 -302 599 -63 562 -196 b 271 -442 412 -364 354 -422 b 225 -448 255 -446 239 -448 b 95 -305 148 -448 98 -395 b 89 -255 95 -288 94 -271 b 73 -233 86 -246 85 -233 b 52 -248 65 -233 56 -239 b 29 -317 42 -271 30 -291 b 49 -448 29 -361 40 -405 b 235 -606 69 -541 144 -606 z m 340 104 b 144 209 264 108 194 141 b 127 258 132 225 127 240 b 137 297 127 271 130 284 b 366 449 184 396 269 449 b 517 408 415 449 467 436 b 595 348 546 392 572 372 b 616 305 608 336 616 321 b 609 281 616 298 613 289 b 340 104 557 184 477 104 z', + }, + timeSigCommon: { + x_min: 20, + x_max: 585, + y_min: -298, + y_max: 294.49658092772603, + ha: 592.496580927726, + o: 'm 444 -405 b 829 -45 626 -346 740 -207 b 842 26 842 -23 842 1 b 821 58 842 39 841 58 b 795 40 811 58 802 48 b 765 3 785 29 773 16 b 469 -223 690 -104 596 -183 b 354 -242 431 -235 392 -242 b 180 -177 292 -242 235 -223 b 135 -99 154 -157 140 -131 b 132 -59 134 -85 132 -72 b 141 7 132 -37 135 -16 b 449 274 189 160 297 243 b 477 278 459 276 468 276 b 546 203 517 278 539 253 b 517 157 550 177 533 166 b 485 143 507 153 497 143 l 482 143 b 467 148 478 143 472 144 b 374 183 438 170 406 181 b 264 118 333 183 292 161 b 238 48 246 92 238 69 b 261 -9 238 29 245 10 b 383 -73 287 -39 337 -73 b 412 -68 392 -73 402 -72 b 631 164 526 -27 586 59 b 649 252 644 193 649 222 b 636 328 649 278 645 304 b 504 423 615 400 579 429 b 242 318 408 415 317 387 b 29 -158 104 190 29 33 b 30 -176 29 -164 29 -170 b 115 -364 42 -246 52 -315 b 307 -429 177 -410 240 -429 b 444 -405 351 -429 397 -420 z', + }, + timeSigCutCommon: { + x_min: 20, + x_max: 695, + y_min: -687.0379164869064, + y_max: 687, + ha: 1374.0379164869064, + o: 'm 564 -989 b 595 -945 585 -991 589 -963 l 599 -922 b 605 -628 600 -824 603 -726 l 609 -399 b 878 -251 706 -363 798 -320 b 996 -85 932 -204 976 -153 b 1001 -63 998 -78 1001 -71 b 989 -46 1001 -56 998 -49 b 978 -43 985 -45 982 -43 b 950 -59 968 -43 959 -49 b 733 -216 894 -132 815 -177 b 611 -259 694 -235 652 -249 b 616 -20 612 -179 615 -99 b 680 29 642 -7 665 9 b 698 43 685 36 690 40 b 870 251 792 82 840 160 b 877 294 874 265 877 279 b 818 410 877 338 855 382 b 683 458 779 442 730 448 b 625 468 664 462 644 465 l 625 514 b 638 958 626 662 636 811 b 626 989 638 979 635 989 b 603 981 621 989 613 986 b 422 840 534 945 481 888 b 412 805 412 832 413 818 b 426 713 410 773 420 743 b 445 678 429 690 435 678 b 474 691 452 678 461 683 b 563 755 503 710 530 732 b 564 724 564 740 564 733 b 559 469 563 639 560 554 b 462 454 526 469 494 464 b 112 143 302 399 199 281 b 33 -94 66 71 45 -10 b 29 -148 30 -112 29 -131 b 105 -351 29 -223 52 -291 b 359 -455 171 -426 258 -451 b 517 -431 409 -451 464 -446 l 539 -422 l 539 -477 b 533 -739 536 -563 539 -651 b 530 -824 531 -768 530 -795 b 546 -948 530 -865 533 -907 b 564 -989 552 -962 543 -989 z m 410 -288 b 193 -197 328 -288 253 -264 b 141 -60 160 -161 141 -108 b 157 6 141 -35 147 -12 b 259 158 189 58 217 112 b 438 291 311 215 364 266 b 528 305 468 301 498 305 b 554 304 537 305 546 304 b 553 212 554 274 554 242 b 426 115 498 199 446 164 b 416 68 419 99 416 84 b 425 12 416 49 420 30 b 474 -39 432 -17 448 -32 b 513 -43 487 -42 498 -43 b 547 -40 524 -43 536 -42 l 543 -272 b 461 -285 516 -278 488 -281 b 410 -288 444 -287 426 -288 z m 694 197 b 668 203 685 197 677 199 b 621 216 654 210 638 215 b 622 294 622 242 622 268 b 706 268 651 287 678 278 b 746 235 721 261 734 249 b 752 222 749 230 752 226 b 743 213 752 219 749 215 b 694 197 727 206 711 197 z', + }, + timeSigPlus: { + x_min: 0, + x_max: 661, + y_min: -358, + y_max: 358, + ha: 716, + o: 'm 605 -516 b 629 -490 624 -516 629 -507 b 628 -475 629 -485 628 -481 b 613 -131 624 -405 616 -174 b 612 -96 612 -114 612 -96 l 647 -98 b 897 -115 730 -99 814 -109 b 940 -89 919 -117 935 -109 b 952 -24 946 -69 952 -46 b 948 9 952 -14 950 -3 b 912 39 942 26 933 37 b 609 60 822 48 609 60 b 616 392 609 60 608 291 b 567 488 619 436 605 467 b 511 516 550 498 531 514 b 498 511 507 516 503 514 b 478 446 475 501 480 469 b 467 150 474 348 469 249 b 465 59 465 121 465 59 l 372 49 b 73 14 272 36 173 24 b 49 13 65 13 56 13 b 0 -33 9 13 0 6 b 60 -141 0 -117 6 -140 b 112 -135 73 -141 91 -140 b 413 -102 213 -125 314 -112 b 464 -98 441 -99 464 -98 l 464 -145 b 477 -456 464 -249 468 -353 b 526 -510 478 -488 491 -507 b 589 -513 546 -511 569 -510 b 605 -516 595 -514 600 -516 z', + }, + timeSigPlusSmall: { + x_min: 0, + x_max: 418, + y_min: -197, + y_max: 199, + ha: 396, + o: 'm 301 -284 b 330 -238 320 -284 324 -255 b 348 -46 350 -176 341 -111 b 374 -20 351 -27 356 -23 b 481 -17 409 -16 445 -17 b 566 -9 510 -17 537 -16 b 602 3 579 -7 602 -16 b 566 29 602 19 582 24 b 526 33 553 32 539 33 b 384 39 478 36 432 39 b 356 62 363 39 356 42 l 356 68 b 359 177 359 104 359 141 l 359 251 b 341 287 359 264 361 285 b 311 255 324 287 314 272 b 310 228 311 246 310 236 l 301 69 b 275 39 301 49 295 39 l 271 39 b 210 40 251 40 230 40 b 167 39 196 40 181 40 b 89 40 141 37 115 40 b 24 30 68 40 46 37 b 0 17 17 27 0 30 l 0 13 b 27 -17 3 0 7 -13 b 91 -22 49 -22 71 -22 b 153 -22 115 -22 137 -20 l 275 -22 b 295 -40 289 -22 295 -27 l 295 -48 b 288 -235 288 -109 287 -171 b 287 -264 288 -243 287 -253 b 301 -284 287 -275 289 -284 z', + }, + timeSigMinus: { + x_min: 0, + x_max: 662, + y_min: -54, + y_max: 55, + ha: 109, + o: 'm 39 -78 b 49 -76 42 -78 45 -76 b 452 -75 94 -75 272 -75 b 861 -76 632 -75 814 -76 b 953 -20 927 -79 953 -66 b 948 27 953 -7 950 9 b 946 37 948 30 948 35 b 896 79 940 63 929 79 b 471 78 827 78 648 78 l 42 78 b 0 37 14 78 0 69 b 23 -66 0 0 17 -32 b 39 -78 24 -75 32 -76 z', + }, + timeSigParensRight: { + x_min: 0, + x_max: 274.26483738379414, + y_min: -722.6326530612245, + y_max: 725, + ha: 1447.6326530612246, + o: 'm 37 -1038 b 69 -1031 48 -1044 59 -1038 b 88 -1015 76 -1027 82 -1021 b 164 -886 120 -976 147 -933 b 333 -351 233 -711 292 -534 b 395 118 366 -204 399 -59 b 389 245 392 144 392 194 b 120 996 369 521 265 766 b 68 1044 99 1030 84 1044 b 19 988 50 1044 36 1024 b 0 922 7 965 0 945 b 20 858 0 901 6 881 b 259 215 141 660 236 449 b 271 -1 266 143 271 71 b 252 -239 271 -82 265 -161 b 148 -667 228 -384 183 -524 b 39 -1009 120 -785 66 -893 b 33 -1031 37 -1017 33 -1024 b 37 -1038 33 -1034 35 -1037 z', + }, + timeSigParensRightSmall: { + x_min: 0, + x_max: 154.4025307335204, + y_min: -422, + y_max: 422, + ha: 844, + o: 'm 43 -608 b 60 -598 48 -608 53 -605 b 117 -511 82 -572 102 -543 b 222 23 193 -350 219 -177 b 213 166 225 55 216 109 b 115 531 206 294 174 416 b 45 603 99 562 76 588 b 30 608 39 606 35 608 b 10 598 23 608 17 603 b 0 546 3 590 0 570 b 23 451 0 507 9 458 b 102 351 66 429 84 390 b 167 42 150 252 167 148 b 163 -49 167 12 166 -19 b 35 -449 151 -192 121 -330 b 14 -504 22 -467 14 -485 b 17 -527 14 -511 16 -520 l 30 -590 b 43 -608 33 -603 37 -608 z', + }, + timeSigParensLeft: { + x_min: 0.5555555555555556, + x_max: 399.6216117372966, + y_min: -728, + y_max: 728, + ha: 1456, + o: 'm 562 -1048 b 573 -1043 566 -1048 570 -1047 b 553 -988 582 -1025 564 -1004 b 472 -884 527 -952 497 -920 b 210 -354 366 -717 275 -541 b 148 -6 170 -240 148 -124 b 160 148 148 45 153 96 b 315 678 189 331 242 508 b 431 901 350 755 380 834 b 459 950 451 926 461 939 b 435 995 459 962 451 972 b 364 1048 405 1034 383 1048 b 305 996 343 1048 325 1028 b 127 624 226 881 174 753 b 1 30 56 432 9 235 b 1 -32 1 9 0 -12 b 180 -629 13 -245 92 -438 b 363 -936 230 -739 298 -835 b 526 -1041 402 -995 448 -1041 b 562 -1048 537 -1040 552 -1048 z', + }, + timeSigParensLeftSmall: { + x_min: 0, + x_max: 173.45497224367904, + y_min: -405, + y_max: 404, + ha: 809, + o: 'm 197 -583 b 222 -553 212 -582 219 -566 b 229 -497 226 -534 229 -516 b 213 -425 229 -472 225 -448 b 102 -177 173 -344 132 -262 b 62 30 78 -111 58 -42 b 91 183 66 82 75 134 b 215 426 118 271 156 356 b 249 552 246 465 252 505 b 230 582 249 563 246 582 b 197 563 219 582 206 576 b 71 356 144 500 105 429 b 0 50 26 259 3 158 b 13 -112 4 -3 7 -58 b 176 -559 29 -275 105 -416 b 196 -583 180 -569 186 -583 z', + }, + noteheadDoubleWhole: { + x_min: -0.4444444444444444, + x_max: 614.1875, + y_min: -223.03296670127517, + y_max: 223, + ha: 446.0329667012752, + o: 'm 35 -321 b 62 -266 58 -318 58 -288 l 62 -194 b 63 50 62 -114 63 -32 b 60 189 63 96 63 143 b 43 300 59 226 60 265 b 29 321 40 308 39 321 l 26 321 b 0 292 13 318 0 310 b 0 248 0 278 -1 262 b 6 147 4 215 6 181 b 4 48 6 114 4 81 b 6 0 4 32 6 16 b 7 -36 7 -12 7 -24 l 7 -52 b 6 -156 7 -86 6 -121 b 19 -275 6 -196 9 -236 b 35 -321 23 -291 16 -323 z m 847 -314 b 871 -288 860 -315 867 -300 b 884 -187 881 -255 886 -222 b 876 115 878 -86 876 14 b 877 255 876 161 876 209 b 868 291 877 268 873 279 b 855 304 867 301 863 304 b 844 301 852 304 848 304 b 822 265 825 292 822 278 b 824 251 822 259 822 255 b 822 170 822 225 822 197 l 822 -20 b 835 -284 827 -86 825 -186 b 847 -314 837 -295 835 -311 z m 757 -291 b 793 -171 796 -255 792 -212 b 795 -49 795 -131 795 -91 b 786 207 795 36 791 121 b 779 240 786 217 783 229 b 766 258 776 246 776 258 b 762 256 765 258 763 256 b 739 236 752 253 740 252 b 733 177 737 216 732 197 b 737 20 737 125 739 73 l 737 -107 b 740 -202 737 -138 739 -170 b 757 -291 740 -230 743 -261 z m 128 -261 b 144 -251 135 -264 141 -256 b 158 -203 156 -236 157 -220 b 161 -137 161 -181 161 -158 b 157 30 161 -81 157 -26 b 158 76 157 45 157 60 l 158 101 b 156 225 158 141 158 183 b 137 253 156 235 154 253 l 134 253 b 109 222 120 251 109 242 b 104 91 108 179 104 134 b 108 -58 104 42 109 -9 b 107 -105 108 -73 108 -89 b 105 -127 107 -112 107 -120 b 118 -245 105 -167 114 -204 b 128 -261 118 -252 121 -259 z m 488 -242 b 693 -79 595 -249 685 -166 l 693 -55 b 690 0 693 -36 691 -17 b 540 187 684 84 621 164 b 449 200 508 196 480 200 b 210 104 363 200 282 163 b 186 56 196 92 186 76 b 207 -82 186 9 192 -37 b 300 -204 225 -132 248 -181 b 488 -242 356 -229 415 -240 z m 490 -88 b 449 -86 477 -88 464 -88 b 287 -56 399 -85 341 -78 b 258 -33 275 -52 258 -48 b 282 -7 258 -20 272 -13 b 458 43 340 23 399 43 b 580 14 497 43 537 35 b 618 -20 606 1 619 -9 b 592 -58 618 -30 609 -42 b 490 -88 562 -82 528 -88 z', + }, + noteheadWhole: { + x_min: 0, + x_max: 380.16649762501584, + y_min: -186.17102907059297, + y_max: 165, + ha: 351.17102907059297, + o: 'm 547 40 b 223 -268 543 -151 367 -259 b 102 -233 180 -271 143 -248 l 62 -216 b 0 -127 22 -197 0 -166 b 6 -91 0 -115 1 -104 b 122 141 33 -9 69 71 b 327 238 170 204 249 238 b 514 158 397 238 467 212 b 547 40 544 125 549 84 z m 248 -107 b 384 -63 295 -102 341 -88 b 426 -23 402 -53 415 -40 b 435 3 432 -14 435 -6 b 413 32 435 14 428 24 b 301 73 376 49 343 73 b 272 69 291 73 282 72 b 121 -35 207 53 157 20 b 111 -58 117 -42 111 -50 b 125 -75 111 -65 115 -71 b 248 -107 164 -89 202 -107 z', + }, + noteheadHalf: { + x_min: 0, + x_max: 334, + y_min: -174, + y_max: 175, + ha: 349, + o: 'm 480 56 b 167 -251 478 -115 331 -251 b 94 -242 143 -251 118 -248 b 9 -141 43 -229 20 -192 b 0 -68 3 -115 0 -91 b 284 249 0 95 127 200 b 304 252 289 251 297 252 b 481 78 374 252 481 170 b 480 56 481 71 481 63 z m 213 -102 b 399 6 274 -81 341 -48 b 402 17 400 7 402 13 b 399 27 402 22 400 26 b 311 94 373 53 353 88 b 292 95 305 95 300 95 b 130 27 230 95 181 55 b 69 -62 98 9 62 -29 b 161 -98 76 -98 128 -91 b 213 -102 174 -101 186 -101 z', + }, + noteheadBlack: { + x_min: 0, + x_max: 334.04644433966797, + y_min: -164, + y_max: 164, + ha: 328, + o: 'm 112 -233 b 141 -236 122 -235 131 -236 b 481 104 279 -236 485 -48 b 403 222 477 141 478 192 b 334 236 382 232 359 236 b 1 -59 180 236 13 59 b 0 -85 1 -68 0 -76 b 112 -233 0 -157 32 -215 z', + }, + noteheadXDoubleWhole: { + x_min: 0, + x_max: 730, + y_min: -266, + y_max: 267, + ha: 533, + o: 'm 1018 -373 b 1032 -361 1025 -376 1028 -367 b 1051 -287 1047 -338 1051 -314 b 1050 -252 1051 -276 1051 -264 b 1030 186 1031 -107 1037 40 b 1031 266 1028 213 1031 239 b 1018 363 1031 300 1028 331 b 1005 384 1015 373 1017 384 l 1004 384 b 984 363 992 384 986 373 b 982 343 982 356 982 348 b 981 235 982 307 981 271 b 996 -285 981 60 986 -112 b 1009 -360 998 -311 1005 -336 b 1018 -373 1011 -364 1014 -373 z m 16 -383 b 49 -328 39 -367 48 -350 b 69 56 58 -202 62 -73 b 75 212 72 107 72 160 b 78 278 76 233 78 255 b 59 382 78 312 73 347 b 29 328 33 372 29 350 b 13 -29 29 209 23 88 b 3 -222 7 -95 10 -157 b 0 -265 1 -236 0 -252 b 16 -383 0 -304 6 -343 z m 923 -314 b 955 -240 948 -289 952 -265 b 965 -65 962 -181 965 -125 b 963 0 965 -45 965 -22 b 962 111 960 37 962 73 b 953 240 962 154 960 197 b 939 275 952 253 952 275 b 913 239 924 274 913 258 b 913 173 914 217 913 194 b 914 135 913 160 913 147 b 920 27 919 98 920 63 b 909 -128 920 -26 917 -78 b 906 -179 906 -147 906 -163 b 923 -314 906 -223 913 -266 z m 121 -301 b 143 -272 134 -301 138 -284 b 147 -255 145 -268 145 -261 b 173 160 161 -117 166 22 b 173 233 173 184 174 209 b 157 264 171 243 171 264 b 137 235 143 264 138 249 b 132 207 135 226 132 216 b 121 43 128 153 124 96 b 105 -186 117 -36 105 -111 b 111 -269 105 -215 107 -242 b 121 -301 114 -281 104 -300 z m 210 -238 b 376 -193 274 -239 327 -226 b 471 -134 406 -173 439 -154 b 534 -94 491 -120 513 -107 b 671 -192 579 -127 624 -161 b 733 -226 691 -204 708 -228 b 746 -225 737 -228 742 -226 b 845 -204 782 -226 814 -213 b 868 -194 854 -203 865 -203 b 852 -173 871 -183 860 -179 b 661 -40 789 -128 724 -84 b 642 -27 654 -36 648 -32 b 861 114 716 17 791 63 b 886 132 870 120 886 121 l 886 137 b 852 164 883 151 867 161 b 776 176 827 170 801 176 b 685 145 744 176 714 168 b 530 45 638 107 583 76 b 403 132 487 73 444 101 b 279 176 364 161 324 171 b 223 160 259 176 229 176 b 258 115 215 141 242 127 b 431 -17 314 71 372 26 b 173 -196 341 -73 253 -130 b 157 -209 168 -200 157 -203 b 158 -215 157 -212 157 -215 b 183 -236 166 -223 168 -235 b 210 -238 194 -236 206 -239 z m 768 -207 b 533 -40 687 -150 609 -94 b 321 -173 462 -85 392 -130 b 261 -194 304 -184 287 -196 b 239 -193 253 -196 246 -194 b 387 -95 294 -157 340 -125 b 505 -20 426 -71 465 -45 l 484 -4 b 353 89 441 27 396 56 b 320 115 341 96 330 107 b 297 141 311 124 297 132 b 300 148 297 144 298 145 b 336 135 311 164 324 143 b 528 -4 400 89 464 42 l 723 121 b 770 140 737 131 753 138 b 792 132 779 140 789 141 b 778 115 795 122 783 120 b 586 -6 714 75 651 35 b 557 -24 576 -13 567 -19 b 726 -147 613 -66 670 -109 b 768 -207 744 -161 765 -173 z', + }, + noteheadXWhole: { + x_min: 0, + x_max: 506, + y_min: -143.0823320899293, + y_max: 144, + ha: 287.0823320899293, + o: 'm 53 -206 b 219 -163 117 -207 170 -196 b 314 -102 249 -141 282 -122 b 377 -63 334 -89 356 -76 b 514 -161 422 -96 468 -128 b 576 -196 534 -174 552 -196 b 589 -193 580 -196 585 -196 b 688 -174 625 -194 657 -181 b 711 -158 698 -171 711 -173 b 696 -143 711 -151 701 -147 b 503 -9 632 -98 567 -52 l 485 4 b 704 145 559 49 634 95 b 729 164 711 150 729 151 l 729 168 b 696 196 726 183 710 193 b 621 207 671 202 645 207 b 528 177 589 207 557 200 b 373 76 480 140 426 108 b 246 164 330 104 287 132 b 122 206 207 193 167 203 b 66 192 102 207 72 207 b 99 147 58 173 85 158 b 274 14 157 102 215 58 b 16 -164 184 -42 96 -98 b 0 -179 12 -168 0 -170 b 1 -183 0 -180 0 -183 b 26 -204 6 -193 12 -204 b 53 -206 37 -206 49 -206 z m 611 -177 b 376 -9 530 -118 452 -63 l 164 -143 b 104 -164 147 -154 130 -164 b 82 -161 96 -164 89 -164 b 230 -65 137 -125 183 -95 l 347 12 b 327 26 341 16 334 22 l 196 121 b 163 147 184 128 173 137 b 140 173 154 154 140 163 b 143 180 140 176 141 177 b 179 166 154 194 167 174 l 372 27 l 566 153 b 613 171 580 161 596 170 b 635 160 624 171 635 174 b 621 147 635 153 626 150 l 429 24 b 400 6 419 19 409 13 b 569 -117 456 -35 513 -75 b 611 -177 588 -130 608 -143 z', + }, + noteheadXHalf: { + x_min: 0, + x_max: 421, + y_min: -145.51844828189743, + y_max: 151, + ha: 296.51844828189746, + o: 'm 490 -209 b 539 -207 505 -207 521 -207 b 606 -209 560 -207 583 -209 b 598 -196 602 -203 600 -199 l 406 -19 l 540 130 b 547 144 546 135 547 140 b 536 156 547 148 543 153 b 488 192 518 166 503 176 b 416 217 471 209 444 217 b 323 180 380 217 344 204 l 264 115 b 239 138 256 122 248 131 b 33 197 180 196 108 200 b 3 186 23 197 6 193 b 19 154 -1 174 10 163 b 171 12 69 107 120 59 b 19 -157 120 -45 69 -101 b 0 -177 14 -163 0 -166 b 1 -181 0 -179 0 -180 b 39 -203 9 -197 22 -203 l 186 -203 b 197 -202 190 -202 193 -200 l 213 -202 b 262 -180 228 -202 246 -199 l 314 -122 b 490 -209 363 -170 412 -216 z m 435 -148 b 291 -30 379 -112 337 -69 l 213 -118 b 190 -137 207 -125 202 -137 b 145 -111 173 -130 154 -127 b 160 -79 137 -98 151 -88 b 238 16 184 -48 212 -16 b 141 99 204 43 173 72 l 124 117 b 115 132 121 121 115 127 b 118 137 115 134 117 137 b 141 132 127 147 135 138 l 253 36 b 347 150 285 75 315 112 b 370 164 354 160 363 163 b 403 145 382 164 393 156 b 416 127 412 140 416 132 b 405 102 416 118 412 111 l 307 -10 b 413 -105 343 -42 379 -73 b 435 -148 425 -115 436 -125 z', + }, + noteheadXBlack: { + x_min: 0, + x_max: 289, + y_min: -156, + y_max: 157, + ha: 313, + o: 'm 23 -225 b 69 -204 40 -223 56 -219 b 137 -131 92 -180 115 -157 l 209 -50 b 377 -197 264 -101 321 -148 b 403 -210 384 -203 393 -210 l 408 -210 b 416 -192 416 -207 416 -199 l 416 -186 b 403 -148 416 -171 413 -158 b 344 -81 384 -125 367 -101 b 252 -1 312 -55 282 -29 b 377 157 297 49 340 101 b 402 202 387 170 402 187 b 395 217 402 207 400 213 b 376 226 389 223 382 226 b 334 192 360 226 346 204 b 206 42 289 143 248 94 b 96 161 167 81 131 120 b 60 193 86 174 76 189 b 33 206 52 196 42 206 b 22 199 29 206 26 204 b 10 173 14 190 10 181 b 22 147 10 166 14 157 b 148 7 62 98 104 52 b 164 -7 154 1 158 -3 b 10 -189 111 -66 55 -122 b 0 -212 6 -197 0 -203 b 1 -217 0 -213 0 -216 b 23 -225 4 -226 14 -222 z', + }, + noteheadCircleXDoubleWhole: { + x_min: 0, + x_max: 437, + y_min: -220, + y_max: 219.03988406941295, + ha: 439.03988406941295, + o: 'm 10 -304 b 40 -206 43 -275 37 -239 b 55 168 48 -81 50 45 b 53 269 56 202 55 236 b 33 315 52 287 46 314 b 3 269 9 317 4 291 b 0 239 1 259 0 249 l 0 -196 b 10 -304 1 -232 7 -268 z m 592 -317 b 621 -220 619 -287 621 -253 b 622 -121 622 -187 622 -154 b 625 -20 622 -88 622 -55 b 629 101 628 20 629 60 b 628 220 629 141 628 181 b 618 253 628 232 625 243 b 608 275 613 259 616 274 b 602 272 606 275 603 275 b 575 249 590 269 575 266 l 575 246 b 573 222 575 239 573 230 l 573 -50 b 592 -317 575 -137 570 -225 z m 79 -285 b 114 -6 96 -261 109 -131 b 117 -63 114 -24 114 -45 b 249 -242 124 -151 166 -212 b 324 -256 275 -252 300 -256 b 504 -137 406 -256 478 -209 b 505 -265 504 -180 505 -222 b 513 -282 505 -269 510 -275 b 533 -248 526 -272 528 -261 b 540 -174 539 -223 540 -199 l 540 -127 b 553 207 546 -16 549 95 b 543 232 553 216 554 232 b 518 207 530 233 518 222 b 511 118 520 177 510 148 l 511 92 b 330 216 488 174 420 223 b 301 215 320 216 311 216 b 122 65 202 204 151 163 b 114 9 117 46 114 27 b 115 75 114 32 115 53 b 101 248 115 157 109 228 b 76 206 78 242 76 225 l 76 91 b 75 -26 76 52 76 13 b 69 -189 72 -81 66 -134 b 79 -285 71 -219 76 -249 z m 317 4 b 219 109 285 40 252 75 l 209 120 b 331 153 248 141 289 151 b 420 137 360 153 390 147 b 446 120 435 131 442 127 l 436 108 l 328 -7 z m 215 -131 b 216 -101 215 -122 215 -114 b 219 -45 217 -82 219 -63 b 197 94 219 3 213 49 l 197 95 b 199 94 199 95 199 94 l 310 -27 b 233 -108 285 -55 259 -81 z m 442 -141 b 432 -122 441 -134 436 -128 l 344 -26 l 426 58 l 445 81 b 444 75 445 78 444 76 b 428 -13 433 46 428 16 b 446 -104 428 -45 433 -75 b 452 -122 449 -111 452 -117 b 442 -141 452 -131 448 -137 z m 323 -190 b 272 -180 305 -187 288 -184 b 217 -158 239 -173 225 -168 l 327 -45 b 330 -48 328 -46 328 -48 b 432 -150 363 -82 393 -121 b 323 -190 400 -174 364 -189 z', + }, + noteheadCircleXWhole: { + x_min: 0, + x_max: 323, + y_min: -190, + y_max: 184.44625787787314, + ha: 374.4462578778731, + o: 'm 156 -258 b 240 -274 184 -268 213 -274 b 455 -101 347 -274 441 -202 b 465 19 462 -60 465 -22 b 464 71 465 36 465 52 b 246 265 455 194 370 274 b 216 264 236 265 226 264 b 12 94 102 251 45 203 b 0 13 3 66 1 40 b 4 -55 0 -10 3 -32 b 156 -258 14 -154 60 -222 z m 245 10 b 233 23 242 14 238 19 b 121 144 196 65 158 104 l 109 154 b 249 192 156 179 202 192 b 351 174 284 192 317 186 b 380 154 366 168 376 163 b 379 153 380 154 380 153 b 369 141 376 148 372 145 b 245 10 327 98 287 53 z m 115 -131 b 118 -96 117 -121 117 -111 b 121 -27 120 -73 121 -50 b 98 124 121 24 115 75 b 96 127 96 125 98 125 b 99 125 98 127 98 125 b 225 -12 140 79 181 33 l 138 -105 b 115 -131 131 -114 122 -121 z m 376 -143 b 363 -121 374 -134 369 -128 b 265 -12 331 -85 298 -48 l 357 85 b 379 111 364 94 372 101 b 377 102 379 108 377 105 b 359 4 364 71 359 37 b 382 -99 359 -32 366 -66 b 387 -121 384 -108 386 -115 b 376 -143 387 -130 382 -135 z m 239 -197 b 181 -187 220 -194 200 -192 b 121 -161 145 -177 128 -173 b 243 -33 161 -118 203 -75 l 248 -36 b 364 -153 285 -75 320 -118 b 239 -197 327 -180 287 -197 z', + }, + noteheadCircleXHalf: { + x_min: 0, + x_max: 309, + y_min: -179, + y_max: 179, + ha: 358, + o: 'm 232 -258 b 435 -94 328 -258 412 -196 b 445 6 444 -60 445 -27 b 444 69 445 27 445 48 b 258 258 439 170 374 258 l 230 258 l 207 256 b 14 107 111 248 45 202 b 0 12 4 75 0 43 b 12 -82 0 -20 4 -50 b 144 -242 27 -160 69 -212 b 232 -258 174 -252 203 -258 z m 192 60 b 115 141 166 88 141 115 l 108 150 b 226 189 141 173 186 189 b 253 186 236 189 245 187 b 305 180 271 183 288 183 b 192 60 268 140 229 101 z m 56 -78 b 45 6 43 -56 45 -23 b 65 84 49 39 50 45 b 85 121 72 96 78 107 b 95 124 88 124 92 127 b 171 39 120 95 145 68 z m 360 -132 b 348 -112 359 -124 353 -118 l 300 -58 l 387 37 b 410 63 397 48 405 56 b 413 26 412 52 413 40 b 360 -132 413 -42 393 -95 z m 232 -183 b 184 -177 217 -183 202 -181 l 281 -78 b 348 -143 301 -101 323 -122 b 232 -183 318 -168 279 -183 z', + }, + noteheadCircleX: { + x_min: 0, + x_max: 344, + y_min: -179, + y_max: 175.12551922594866, + ha: 354.12551922594866, + o: 'm 99 -210 b 236 -258 137 -242 186 -258 b 418 -183 305 -258 374 -230 b 495 33 475 -120 495 -48 b 494 66 495 45 494 55 b 302 252 487 183 405 256 b 181 243 262 249 222 248 b 46 171 128 236 79 219 b 0 19 14 127 0 73 b 99 -210 0 -68 35 -156 z m 245 42 l 124 156 b 200 176 145 166 170 173 b 337 183 245 181 291 184 b 377 176 351 183 364 180 b 245 42 333 131 288 86 z m 392 -99 l 285 3 l 400 121 b 418 154 409 131 418 140 b 465 50 448 130 465 94 b 405 -112 462 -17 439 -73 z m 89 -120 b 48 0 56 -82 48 -42 b 89 112 48 35 59 76 b 109 101 96 111 102 108 l 210 7 l 187 -17 b 89 -120 151 -53 125 -82 z m 176 -183 b 127 -163 158 -179 141 -171 l 252 -32 l 372 -144 b 233 -189 334 -173 285 -189 b 176 -183 215 -189 196 -187 z', + }, + noteheadCircledDoubleWhole: { + x_min: 0, + x_max: 672, + y_min: -291, + y_max: 291, + ha: 582, + o: 'm 27 -419 b 43 -369 37 -403 43 -387 b 49 -82 45 -272 49 -177 b 50 370 50 69 50 219 b 30 419 50 389 50 419 b 7 369 7 419 7 389 b 0 -284 4 151 1 -66 b 16 -418 0 -328 10 -373 z m 945 -374 b 968 -282 963 -343 968 -312 b 966 -245 968 -269 968 -258 b 958 -45 959 -179 962 -111 b 948 262 949 56 952 160 b 936 377 946 301 946 340 b 922 399 933 386 933 399 l 919 397 b 897 374 909 396 899 389 b 894 308 897 353 893 331 b 904 120 899 246 903 183 b 913 -111 907 43 909 -35 b 927 -297 916 -173 919 -235 b 945 -374 930 -320 927 -347 z m 95 -347 b 120 -292 115 -325 117 -310 b 124 -223 122 -269 124 -246 b 122 -141 124 -196 122 -168 b 121 -85 121 -122 121 -104 b 462 -297 170 -209 300 -297 b 727 -219 543 -294 639 -271 b 828 -118 773 -190 808 -157 b 842 -268 831 -168 834 -219 b 851 -288 844 -275 840 -287 b 865 -272 861 -289 863 -279 b 873 -225 871 -256 873 -240 b 873 -171 873 -207 871 -190 b 858 196 868 -48 863 75 b 848 295 857 229 854 262 b 840 315 848 301 850 315 l 837 315 b 816 295 827 314 816 307 b 809 216 815 268 808 243 b 815 102 812 179 814 140 b 672 295 780 176 733 240 b 500 370 621 340 566 370 b 436 361 480 370 459 367 b 120 95 288 321 183 233 l 120 256 b 115 287 120 266 118 276 b 104 305 112 292 115 305 l 101 305 b 82 284 91 304 82 297 b 76 216 81 262 76 239 b 84 -253 78 59 79 -96 b 95 -347 84 -282 89 -311 z m 780 -33 b 779 -24 780 -30 779 -27 b 704 92 766 22 743 62 b 544 173 655 128 599 147 b 400 206 497 194 448 204 b 307 193 369 206 338 202 b 202 118 264 181 226 153 b 235 168 212 135 222 151 b 505 337 302 262 396 312 b 523 338 511 337 517 338 b 611 288 559 338 586 312 b 763 62 678 225 733 151 b 780 -33 776 26 782 -4 z m 435 -88 b 337 -23 387 -88 354 -65 b 333 6 334 -14 333 -6 b 366 86 333 35 344 66 b 456 122 390 111 423 121 b 602 27 517 122 582 88 b 606 1 605 19 606 10 b 575 -49 606 -20 596 -36 b 435 -88 530 -76 481 -82 z m 441 -269 b 194 -96 327 -262 249 -194 b 167 1 176 -62 167 -30 b 177 59 167 22 171 42 b 174 39 176 52 174 46 b 266 -104 174 -27 210 -73 b 511 -151 346 -148 435 -144 l 552 -151 b 740 -104 616 -145 683 -141 b 776 -66 756 -94 769 -81 b 700 -174 766 -105 740 -140 b 441 -269 632 -232 533 -268 z', + }, + noteheadCircledWhole: { + x_min: -50, + x_max: 472, + y_min: -231.00750990437078, + y_max: 232, + ha: 463.00750990437075, + o: 'm 289 -333 b 553 -255 370 -330 465 -307 b 680 -62 635 -206 680 -138 b 662 22 680 -36 674 -7 b 500 259 626 112 573 193 b 327 334 448 304 393 334 b 264 325 307 334 287 331 b -59 49 111 284 4 193 b -72 -19 -68 26 -72 4 b 289 -333 -72 -192 84 -334 z m 608 -69 b 605 -60 606 -66 606 -63 b 530 56 592 -14 570 26 b 372 137 482 92 425 111 b 228 170 324 158 275 168 b 134 157 196 170 166 166 b 29 82 91 145 53 117 b 60 132 37 99 49 115 b 333 301 128 226 223 276 b 350 302 338 301 344 302 b 438 252 386 302 413 276 b 590 26 505 189 560 115 b 608 -69 603 -10 608 -40 z m 262 -124 b 164 -59 215 -124 180 -101 b 160 -32 161 -50 160 -42 b 193 50 160 -3 171 30 b 284 86 217 75 251 85 b 429 -9 344 86 409 52 b 433 -36 432 -17 433 -26 b 402 -85 433 -56 423 -72 b 262 -124 357 -112 307 -118 z m 268 -305 b 22 -132 154 -298 76 -230 b -6 -33 3 -98 -6 -65 b 3 23 -6 -14 -3 6 b 1 3 1 16 1 10 b 94 -140 1 -63 37 -109 b 338 -187 173 -184 261 -180 l 379 -187 b 566 -140 444 -181 510 -177 b 602 -102 582 -130 595 -117 b 526 -210 592 -141 567 -176 b 268 -305 459 -268 360 -304 z', + }, + noteheadCircledHalf: { + x_min: -50, + x_max: 393, + y_min: -175, + y_max: 175, + ha: 350, + o: 'm 540 39 b 408 187 503 94 464 148 b 259 252 356 223 301 252 b 35 192 160 252 95 229 b -68 50 -17 160 -53 112 b -72 13 -71 37 -72 24 b 69 -204 -72 -79 -1 -161 b 246 -252 125 -238 186 -252 b 500 -164 336 -252 426 -219 b 566 -42 543 -132 566 -88 b 540 39 566 -14 557 14 z m 9 -42 b 12 -68 10 -50 10 -59 b -7 6 3 -46 -4 -22 b 131 189 1 98 55 153 b 243 220 167 206 204 215 b 261 222 249 222 255 222 b 377 161 308 222 341 189 b 435 89 402 141 420 117 b 431 92 433 89 432 91 b 346 120 402 102 372 107 b 253 143 314 135 282 143 b 85 79 193 143 138 115 b 9 -42 45 52 10 13 z m 356 39 b 343 1 356 24 351 12 b 206 -111 304 -46 259 -84 b 181 -118 196 -115 189 -118 b 156 -71 163 -118 154 -102 b 238 35 164 -22 199 9 b 324 66 264 52 294 59 b 356 39 348 71 356 62 z m 488 -78 b 392 -176 471 -125 433 -154 b 246 -225 346 -200 297 -217 b 230 -226 240 -226 235 -226 b 157 -204 203 -226 180 -215 b 78 -154 128 -190 101 -174 b 232 -184 128 -171 180 -184 b 344 -161 269 -184 307 -179 b 491 -39 405 -135 455 -94 b 500 -23 495 -33 497 -29 b 488 -78 500 -40 494 -59 z', + }, + noteheadCircledBlack: { + x_min: -70, + x_max: 326, + y_min: -168, + y_max: 192, + ha: 360, + o: 'm 176 -239 b 190 -242 180 -240 186 -240 b 262 -232 213 -242 238 -235 b 469 -19 384 -225 469 -131 b 467 22 469 -6 468 9 b 383 194 455 86 436 151 b 183 276 315 249 251 275 b 32 236 134 276 85 264 b -94 88 -30 207 -75 160 b -101 30 -98 69 -101 49 b 176 -239 -101 -107 9 -251 z m 177 -212 b -30 -27 81 -213 -13 -131 b -33 17 -33 -13 -33 3 b 127 226 -33 111 14 187 b 194 239 151 233 173 238 b 301 203 232 239 266 226 b 364 134 330 184 350 160 b 233 181 341 160 279 180 b 192 171 216 181 202 179 b 13 1 117 131 46 86 b 3 -48 6 -17 3 -33 b 60 -115 3 -79 20 -101 b 203 -135 105 -131 151 -138 b 229 -138 212 -137 220 -137 b 295 -122 251 -138 274 -135 b 400 -33 337 -99 373 -71 b 228 -206 393 -125 330 -192 b 177 -212 209 -209 192 -213 z', + }, + noteheadDoubleWholeSquare: { + x_min: 0, + x_max: 474, + y_min: -209.39230484541326, + y_max: 211, + ha: 420.39230484541326, + o: 'm 648 -301 b 668 -287 658 -304 665 -295 b 683 -209 678 -262 683 -235 b 677 258 681 -55 678 102 b 672 284 677 266 677 276 b 661 304 670 291 672 304 l 658 304 b 635 279 647 301 635 297 b 629 240 635 266 629 252 l 629 236 b 631 225 629 232 631 228 b 583 194 631 197 611 194 l 528 194 b 125 207 393 194 259 202 b 89 207 114 209 101 206 b 63 210 79 207 71 207 b 52 229 55 213 52 220 b 55 258 52 238 55 248 b 53 266 55 261 55 264 b 36 298 48 276 53 298 l 35 298 b 4 264 14 298 7 284 b 0 187 0 238 0 213 b 4 50 0 143 3 96 b 6 -10 6 30 6 10 b 4 -130 6 -50 4 -91 b 12 -268 4 -176 6 -222 b 19 -287 13 -275 10 -284 b 35 -275 26 -288 30 -281 b 52 -220 50 -261 48 -239 b 75 -199 55 -206 58 -199 l 141 -197 l 274 -197 l 634 -197 b 639 -281 635 -219 636 -251 b 648 -301 641 -288 638 -300 z m 72 -66 b 55 -56 59 -69 55 -65 l 55 -50 b 53 53 55 -16 55 20 b 69 73 53 69 60 72 l 79 72 b 330 65 163 66 246 63 l 592 65 b 634 81 606 65 618 71 b 635 -30 634 39 635 6 b 605 -58 635 -49 628 -58 b 451 -60 553 -60 503 -60 b 219 -59 373 -60 295 -59 l 166 -59 b 72 -66 134 -59 104 -60 z', + }, + noteheadSquareWhite: { + x_min: 0, + x_max: 350, + y_min: -131, + y_max: 131, + ha: 262, + o: 'm 468 -189 b 485 -187 474 -189 480 -189 b 500 -176 495 -187 500 -183 b 498 -168 500 -174 498 -171 b 497 -166 498 -167 497 -167 l 498 -164 b 504 -154 503 -163 504 -158 b 503 -138 504 -150 503 -144 l 503 -135 l 503 -94 b 492 66 500 -45 494 10 b 488 135 492 89 488 112 b 484 150 488 141 485 145 b 482 154 482 151 482 153 b 429 189 472 177 456 189 b 53 184 304 186 179 186 l 39 184 b 33 181 36 183 35 183 b 12 160 20 181 12 177 b 0 -109 9 71 4 -19 b 19 -137 0 -125 7 -134 b 23 -151 19 -141 20 -145 b 85 -187 37 -173 55 -187 b 468 -189 212 -187 340 -187 z m 246 -125 l 63 -125 b 66 -111 65 -122 66 -117 b 73 72 69 -50 71 10 l 73 130 b 88 128 78 128 82 128 b 148 130 108 130 128 130 b 271 128 190 130 230 128 l 271 130 l 420 130 b 428 20 425 92 425 56 l 436 -127 l 246 -127 z', + }, + noteheadSquareBlack: { + x_min: 0, + x_max: 342, + y_min: -129.98961937716263, + y_max: 132.44444444444446, + ha: 262.4340638216071, + o: 'm 217 190 b 439 186 304 190 372 190 b 467 180 448 184 458 183 b 492 145 484 176 492 167 b 490 -124 490 56 490 -33 b 488 -141 490 -130 488 -135 b 456 -170 488 -163 478 -168 b 118 -183 344 -176 230 -181 b 29 -184 89 -183 60 -192 b 0 -148 4 -180 0 -168 b 1 29 1 -89 1 -30 l 1 156 b 36 190 3 187 4 190 b 217 190 102 192 168 190 z', + }, + noteheadTriangleDownDoubleWhole: { + x_min: 0, + x_max: 510, + y_min: -213, + y_max: 213, + ha: 426, + o: 'm 16 -307 b 30 -289 26 -307 29 -297 b 43 -236 36 -272 42 -253 l 65 219 b 59 285 62 240 69 264 b 46 307 55 294 58 307 l 43 307 b 19 279 30 304 20 295 b 13 184 17 248 14 216 b 1 -125 9 81 7 -23 b 0 -163 0 -138 0 -150 b 6 -287 0 -204 4 -245 b 16 -307 6 -295 7 -305 z m 707 -294 b 734 -213 733 -271 734 -242 b 729 245 733 -60 730 92 b 719 285 729 259 724 272 b 707 298 716 291 714 298 l 703 298 b 685 284 696 297 687 292 b 683 253 683 274 683 264 b 691 -181 685 108 685 -36 b 707 -294 693 -217 690 -256 z m 108 -238 b 125 -203 125 -238 121 -216 b 127 -190 127 -199 127 -194 b 120 -138 127 -173 120 -156 l 120 -66 b 114 167 120 12 118 89 l 118 161 b 314 -153 184 58 248 -48 b 350 -184 327 -173 338 -184 b 387 -154 361 -184 374 -174 b 567 108 449 -68 508 20 b 626 193 588 137 608 164 b 615 -132 622 85 619 -24 l 615 -166 b 619 -207 615 -180 615 -194 b 638 -226 622 -217 629 -225 b 651 -209 648 -226 649 -216 b 658 -177 655 -199 658 -187 l 658 -171 b 667 49 655 -98 667 -23 b 665 88 667 62 667 75 b 665 220 665 135 667 179 b 641 265 664 238 660 265 b 626 243 629 265 626 255 b 628 222 626 236 628 228 b 612 225 624 223 619 225 b 384 223 537 223 461 223 l 384 225 l 170 225 b 131 215 157 225 144 222 b 112 200 122 210 117 206 b 88 266 111 225 108 249 b 75 239 76 259 75 249 b 73 147 75 207 73 179 b 82 -189 73 35 79 -78 b 84 -203 82 -194 82 -199 b 108 -238 86 -219 91 -238 z m 361 -79 b 295 78 336 -26 314 26 b 284 151 287 101 284 125 b 310 177 284 171 291 177 b 419 176 346 176 383 174 l 423 176 b 445 153 441 176 445 168 l 445 147 b 361 -79 442 65 415 -10 z', + }, + noteheadTriangleDownWhole: { + x_min: 0, + x_max: 366, + y_min: -145, + y_max: 138, + ha: 283, + o: 'm 242 -209 b 279 -180 253 -209 266 -200 b 459 84 341 -92 400 -4 b 520 170 480 112 501 141 b 527 189 524 177 527 183 b 504 199 527 196 520 199 l 55 199 b 23 190 45 199 33 196 b 0 161 9 181 0 173 b 10 135 0 154 3 145 b 206 -177 76 32 140 -73 b 242 -209 219 -199 230 -209 z m 253 -105 b 187 52 228 -52 206 0 b 176 127 179 76 176 101 b 197 151 176 144 181 151 l 202 151 b 256 150 220 151 238 150 b 311 151 275 150 294 151 b 337 128 331 151 337 144 l 337 122 b 253 -105 334 39 307 -35 z', + }, + noteheadTriangleDownHalf: { + x_min: -0.0833130378007211, + x_max: 341, + y_min: -159, + y_max: 159, + ha: 318, + o: 'm 266 -229 b 282 -215 274 -229 278 -225 b 487 153 350 -92 418 30 b 491 170 490 158 491 164 b 480 189 491 177 487 183 b 425 215 464 202 448 213 b 33 226 297 217 168 222 b 13 229 29 223 22 229 b 1 222 9 229 4 228 b 14 184 -4 207 7 196 b 210 -176 81 65 145 -56 b 253 -225 222 -194 230 -213 b 266 -229 259 -226 264 -228 z m 134 22 b 147 43 138 27 141 37 b 206 163 174 79 179 127 b 213 170 209 166 212 167 l 340 167 b 193 -75 287 89 251 1 b 190 -82 192 -76 190 -79 z', + }, + noteheadTriangleDownBlack: { + x_min: 0, + x_max: 346, + y_min: -149, + y_max: 149, + ha: 298, + o: 'm 229 -215 b 259 -202 238 -215 248 -210 b 284 -173 269 -194 278 -184 l 482 173 b 498 209 488 184 498 194 b 481 215 492 215 487 215 b 63 213 343 215 203 213 b 12 197 45 213 29 206 b 0 180 4 193 0 187 b 3 168 0 177 1 173 b 13 150 6 163 9 156 l 196 -189 b 229 -215 206 -206 216 -215 z', + }, + noteheadTriangleUpDoubleWhole: { + x_min: 0, + x_max: 510, + y_min: -213, + y_max: 213, + ha: 426, + o: 'm 16 -307 b 30 -289 26 -307 29 -297 b 43 -236 36 -272 42 -253 l 65 219 b 59 285 62 240 69 264 b 46 307 55 294 58 307 l 43 307 b 19 279 30 304 20 295 b 13 184 17 248 14 216 b 1 -125 9 81 7 -23 b 0 -163 0 -138 0 -150 b 6 -287 0 -204 4 -245 b 16 -307 6 -295 7 -305 z m 707 -298 b 734 -217 733 -275 734 -246 b 729 240 733 -65 730 88 b 719 281 729 255 724 268 b 707 294 716 287 714 294 l 703 294 b 685 279 696 292 687 288 b 683 249 683 269 683 259 b 691 -186 685 104 685 -40 b 707 -298 693 -222 690 -261 z m 88 -266 b 112 -200 108 -249 111 -225 b 131 -215 117 -206 122 -210 b 170 -225 144 -222 157 -225 l 384 -225 l 384 -223 b 612 -225 461 -223 537 -223 b 628 -222 619 -225 624 -223 b 641 -265 628 -238 622 -265 b 665 -220 660 -265 664 -238 b 665 -88 667 -179 665 -135 b 667 -49 667 -75 667 -62 b 658 171 667 23 655 98 b 651 209 660 184 655 197 b 638 226 649 216 648 226 b 619 207 629 225 622 217 b 615 166 615 194 615 180 l 615 132 b 626 -193 619 24 622 -85 b 567 -108 608 -164 588 -137 b 387 154 508 -20 449 68 b 350 184 374 174 361 184 b 314 153 338 184 327 173 b 118 -161 248 48 184 -58 l 114 -167 b 120 66 118 -89 120 -12 l 120 138 b 127 190 120 156 127 173 b 125 203 127 194 127 199 b 108 238 121 216 125 238 b 84 203 91 238 86 219 b 82 189 82 199 82 194 b 73 -147 79 78 73 -35 b 75 -239 73 -179 75 -207 b 88 -266 75 -249 76 -259 z m 310 -177 b 284 -151 291 -177 284 -171 b 295 -78 284 -125 287 -101 b 361 79 314 -26 336 26 b 445 -147 415 10 442 -65 b 423 -176 446 -166 442 -176 l 419 -176 b 310 -177 383 -174 346 -176 z', + }, + noteheadTriangleUpWhole: { + x_min: 0, + x_max: 366, + y_min: -145, + y_max: 138, + ha: 283, + o: 'm 504 -209 b 527 -199 520 -209 527 -206 b 520 -180 527 -193 524 -187 b 459 -94 501 -151 480 -122 b 279 170 400 -6 341 82 b 242 199 266 190 253 199 b 206 167 230 199 219 189 b 10 -145 140 63 76 -42 b 0 -171 3 -156 0 -164 b 23 -200 0 -183 9 -192 b 55 -209 33 -206 45 -209 z m 202 -161 b 176 -137 183 -163 176 -156 b 187 -62 176 -111 179 -86 b 253 95 206 -10 228 42 b 337 -132 307 24 334 -49 b 311 -161 338 -153 334 -161 b 256 -160 294 -161 275 -160 b 202 -161 238 -160 220 -161 z', + }, + noteheadTriangleUpHalf: { + x_min: 0, + x_max: 341.0833130378007, + y_min: -159, + y_max: 159, + ha: 318, + o: 'm 458 -226 b 478 -229 462 -223 469 -229 b 490 -222 482 -229 487 -228 b 477 -184 495 -207 484 -196 b 281 176 410 -65 346 56 b 238 225 269 194 261 213 b 225 229 232 226 228 228 b 209 215 217 229 213 225 b 4 -153 141 92 73 -30 b 0 -170 1 -158 0 -164 b 12 -189 0 -177 4 -183 b 66 -215 27 -202 43 -213 b 458 -226 194 -217 323 -222 z m 151 -167 b 298 75 204 -89 240 -1 b 301 82 300 76 301 79 l 357 -22 b 344 -43 353 -27 350 -37 b 285 -163 317 -79 312 -127 b 278 -170 282 -166 279 -167 z', + }, + noteheadTriangleUpBlack: { + x_min: 0, + x_max: 346, + y_min: -149, + y_max: 149, + ha: 298, + o: 'm 481 -215 b 498 -209 487 -215 492 -215 b 482 -173 498 -194 488 -184 l 284 173 b 259 202 278 184 269 194 b 229 215 248 210 238 215 b 196 189 216 215 206 206 l 13 -150 b 3 -168 9 -156 6 -163 b 0 -180 1 -173 0 -177 b 12 -197 0 -187 4 -193 b 63 -213 29 -206 45 -213 b 481 -215 203 -213 343 -215 z', + }, + noteheadSlashedDoubleWhole1: { + x_min: 0, + x_max: 697, + y_min: -290, + y_max: 290, + ha: 580, + o: 'm 20 -418 b 42 -376 40 -418 37 -392 b 43 -356 45 -370 43 -363 l 43 -348 b 50 -197 43 -298 49 -248 b 78 317 58 -24 69 147 b 72 387 75 343 82 366 b 52 418 68 397 69 418 l 49 416 b 24 380 33 413 24 399 b 19 235 23 333 20 284 b 7 -82 14 130 10 24 b 0 -264 6 -143 0 -203 b 10 -382 0 -302 1 -343 b 20 -418 13 -393 6 -418 z m 976 -344 b 991 -331 985 -346 988 -337 b 1004 -271 999 -312 1004 -292 l 1004 -194 b 996 184 1004 -68 1001 59 b 996 281 996 216 998 249 b 984 379 995 314 991 347 b 971 397 981 392 976 396 b 952 386 965 397 959 392 b 943 361 943 380 945 370 b 937 288 939 337 937 312 b 945 158 937 245 942 203 b 959 -248 950 23 953 -112 b 966 -325 960 -274 963 -300 b 976 -344 966 -334 968 -344 z m 102 -331 b 124 -272 120 -314 122 -294 b 135 -278 127 -276 131 -278 l 141 -278 b 320 -199 206 -262 272 -252 b 348 -171 328 -189 338 -180 b 482 -199 392 -190 436 -199 b 704 -173 576 -199 641 -187 b 847 -82 760 -158 809 -130 l 855 -69 l 855 -73 b 863 -229 857 -125 860 -177 b 876 -255 863 -239 863 -255 b 893 -233 886 -255 888 -242 b 900 -189 899 -219 900 -203 l 900 66 b 900 192 899 108 900 150 b 893 301 900 228 899 265 b 877 325 890 310 893 325 l 876 325 b 855 301 865 324 855 315 b 850 202 852 268 847 235 b 854 50 854 151 854 101 b 821 99 847 68 835 85 b 733 167 795 127 765 148 b 831 253 766 196 799 225 b 851 265 837 258 844 261 b 829 282 840 275 835 279 b 772 295 815 291 795 295 b 685 271 739 295 704 287 b 624 215 665 252 645 233 l 566 232 b 527 239 553 236 540 239 b 490 228 514 239 501 236 b 451 219 475 217 467 219 b 275 176 389 219 331 200 b 184 53 216 150 184 105 b 199 -14 184 32 189 10 b 262 -108 215 -52 236 -82 l 125 -230 b 134 225 130 -78 132 73 b 135 269 134 239 135 255 b 121 330 135 291 132 311 b 95 287 99 323 95 307 b 92 124 94 233 95 179 b 85 -143 88 36 85 -53 b 89 -300 85 -196 86 -248 b 102 -331 89 -311 89 -323 z m 367 -14 b 350 43 359 3 351 22 b 392 122 350 82 363 107 b 544 171 439 150 492 160 b 572 168 554 174 563 171 z m 564 -132 b 467 -105 528 -138 497 -121 b 442 -89 458 -101 449 -95 l 658 101 b 690 30 677 82 690 59 b 688 10 690 24 690 17 b 564 -132 678 -45 611 -127 z', + }, + noteheadSlashedWhole1: { + x_min: -76, + x_max: 498, + y_min: -168, + y_max: 168, + ha: 336, + o: 'm -79 -242 b 55 -202 -32 -236 14 -228 l 145 -143 b 333 -171 203 -166 265 -171 b 429 -164 361 -174 395 -168 b 582 -130 481 -158 534 -154 b 657 -20 631 -105 657 -65 b 619 68 657 9 644 40 b 552 120 599 89 577 107 b 582 138 562 127 572 132 b 717 226 625 167 668 194 b 638 242 688 236 662 242 b 543 213 603 242 573 232 b 455 154 514 194 484 174 b 325 199 412 167 367 179 b 233 215 298 210 265 215 b 75 156 173 215 124 186 b 0 27 24 122 0 76 b 66 -98 0 -17 22 -63 b 72 -102 69 -99 71 -101 b -89 -209 17 -137 -36 -173 b -109 -225 -95 -213 -109 -216 b -108 -229 -109 -226 -108 -228 b -85 -242 -104 -239 -95 -242 z m 181 -29 b 167 14 171 -13 167 1 b 187 62 167 30 173 46 b 301 137 217 99 258 118 b 312 138 304 138 308 138 l 317 138 b 389 109 340 125 364 118 l 383 105 z m 337 -109 b 239 -82 301 -107 268 -99 l 468 65 b 482 24 477 53 482 40 b 480 4 482 19 481 12 b 337 -109 467 -56 399 -111 z', + }, + noteheadSlashedHalf1: { + x_min: -79.3435119522494, + x_max: 471, + y_min: -184, + y_max: 184, + ha: 368, + o: 'm -112 -251 b -94 -265 -107 -261 -101 -264 b -52 -242 -79 -265 -63 -249 l 89 -148 b 212 -180 125 -170 167 -179 b 238 -177 220 -180 229 -179 l 262 -180 b 346 -171 289 -180 318 -176 b 576 -91 431 -166 507 -140 b 641 4 619 -60 641 -29 b 592 96 641 35 625 65 l 583 104 b 533 147 567 121 550 134 l 613 200 b 678 261 636 216 664 232 b 658 265 671 264 664 265 b 611 248 641 265 625 258 l 491 171 b 337 204 444 194 392 204 b 281 200 318 204 300 204 b 27 62 180 187 92 145 b -1 -19 9 37 -1 10 b 36 -107 -1 -50 12 -82 b 52 -121 42 -112 46 -117 l -72 -203 b -112 -251 -91 -216 -122 -233 z m 161 -49 b 158 -29 160 -42 158 -35 b 183 33 158 -7 167 16 b 395 137 239 95 311 122 b 420 125 405 134 413 130 z m 276 -128 b 261 -131 271 -130 266 -131 b 181 -86 233 -131 203 -114 l 454 94 l 468 72 b 481 36 477 60 481 49 b 469 1 481 26 477 14 b 276 -128 422 -66 354 -105 z', + }, + noteheadSlashedBlack1: { + x_min: -110, + x_max: 452, + y_min: -190, + y_max: 190, + ha: 380, + o: 'm -131 -274 b -102 -262 -121 -272 -111 -266 b 7 -186 -65 -239 -29 -212 b 50 -157 22 -176 36 -166 b 105 -176 65 -166 84 -173 b 207 -183 140 -181 173 -183 b 239 -184 219 -184 229 -184 b 428 -91 327 -184 377 -150 b 487 43 461 -52 487 -7 b 482 76 487 53 485 65 b 459 128 478 95 469 112 b 507 161 475 138 491 150 l 651 262 b 622 274 641 271 632 274 b 605 271 616 274 611 272 b 514 233 573 262 541 252 l 422 167 b 317 203 392 190 354 203 b 271 196 301 203 285 200 b 168 157 236 186 200 173 b 6 -16 94 120 33 68 b -1 -62 1 -32 -1 -48 b 17 -125 -1 -86 4 -108 b -81 -196 -16 -148 -48 -173 b -145 -242 -102 -212 -128 -219 b -158 -256 -150 -246 -158 -251 b -157 -261 -158 -258 -157 -259 b -131 -274 -153 -269 -141 -274 z', + }, + noteheadSlashedDoubleWhole2: { + x_min: -0.12386605641055257, + x_max: 697.4733477320805, + y_min: -295, + y_max: 295, + ha: 590, + o: 'm 870 -338 b 891 -315 884 -341 887 -325 b 906 -183 907 -274 903 -228 b 914 186 912 -60 904 62 b 914 240 914 203 916 222 b 916 276 913 251 916 265 b 899 300 916 289 913 300 b 871 253 874 300 871 274 b 858 -168 871 111 858 -27 b 860 -235 858 -190 860 -213 l 736 -131 b 834 -20 799 -111 834 -69 b 789 85 834 13 819 49 b 683 160 760 118 723 140 b 383 216 589 209 487 215 b 330 213 364 217 347 216 b 228 300 295 242 261 271 b 86 347 184 337 138 348 b 58 343 76 347 63 350 l 58 360 b 35 425 58 384 53 423 b 6 382 9 425 6 403 l 6 131 b 0 -164 6 33 4 -66 b 24 -327 -1 -216 6 -271 b 50 -262 46 -305 50 -284 l 50 -154 b 52 -45 50 -118 50 -81 b 58 325 55 79 58 202 b 73 310 60 320 68 315 b 94 294 79 304 86 298 b 89 271 89 287 89 278 l 89 94 b 104 -194 101 -20 88 -108 b 118 -245 107 -213 104 -248 b 140 -190 140 -243 140 -212 l 140 -62 b 132 258 140 46 138 153 l 132 259 l 235 173 b 193 132 219 161 204 148 b 153 26 167 101 153 63 b 164 -35 153 7 157 -16 b 341 -170 196 -114 261 -158 b 433 -177 372 -174 403 -177 b 619 -157 497 -177 559 -170 l 706 -230 b 799 -276 736 -258 765 -276 b 818 -274 806 -276 812 -276 l 861 -274 b 863 -312 861 -287 863 -300 b 870 -338 864 -321 858 -337 z m 966 -425 b 986 -397 979 -425 982 -408 b 991 -373 989 -390 989 -382 b 995 -239 991 -328 995 -284 b 1004 334 1001 -49 1002 143 b 995 380 1005 350 1005 367 b 982 402 989 386 992 402 l 978 400 b 949 374 965 396 950 390 b 948 333 948 360 948 346 l 948 -37 b 949 -84 949 -52 949 -68 b 946 -248 949 -132 946 -189 b 953 -396 946 -297 948 -346 b 966 -425 955 -408 950 -425 z m 624 -36 b 416 140 554 22 485 81 b 482 156 439 150 461 154 b 625 81 537 156 588 124 b 647 27 639 63 647 46 b 624 -36 647 7 638 -14 z m 469 -117 b 320 14 386 -118 320 -60 b 343 81 320 37 327 60 l 547 -95 b 469 -117 521 -105 494 -111 z', + }, + noteheadSlashedWhole2: { + x_min: -83, + x_max: 510, + y_min: -201, + y_max: 198, + ha: 399, + o: 'm 734 -289 b 696 -245 726 -266 710 -256 b 586 -164 660 -217 622 -192 l 589 -161 b 654 -50 631 -135 654 -94 b 616 40 654 -19 641 13 b 305 174 536 127 420 174 b 171 151 261 174 215 167 b 166 150 170 151 168 150 b 86 209 140 170 112 189 b -94 284 32 249 -22 289 l -108 285 b -120 274 -114 285 -120 284 b -104 251 -120 266 -112 258 b 71 124 -46 209 12 166 l 85 114 b 36 72 66 102 50 89 b 0 -30 12 40 0 4 b 122 -186 0 -96 45 -160 b 343 -222 194 -210 268 -222 b 514 -197 410 -220 467 -213 l 554 -228 b 734 -289 609 -268 668 -275 z m 477 -82 b 268 73 408 -30 338 22 l 301 91 b 336 101 314 96 324 101 b 370 88 347 101 359 96 b 459 9 405 66 436 43 b 481 -56 474 -13 481 -35 b 477 -82 481 -65 480 -73 z m 310 -161 b 216 -143 276 -161 246 -156 b 166 -72 181 -128 166 -105 b 168 -46 166 -65 167 -55 b 206 26 176 -16 189 7 b 436 -140 282 -29 360 -84 b 382 -158 420 -150 402 -157 b 310 -161 357 -161 333 -161 z', + }, + noteheadSlashedHalf2: { + x_min: -73, + x_max: 454, + y_min: -188, + y_max: 188, + ha: 376, + o: 'm 654 -271 b 603 -202 649 -233 625 -217 b 481 -115 563 -173 523 -144 b 564 -60 510 -101 539 -82 b 615 40 596 -33 615 4 b 609 69 615 50 613 60 b 505 167 590 120 554 151 b 336 190 451 184 392 190 b 124 134 259 190 189 171 l -42 248 b -88 271 -56 256 -75 271 b -101 265 -94 271 -98 269 b -105 252 -104 259 -105 255 b -66 210 -105 235 -82 222 l 85 107 b 0 -24 42 73 0 35 b 183 -183 0 -118 75 -184 b 262 -176 206 -180 233 -177 b 438 -135 324 -171 383 -158 b 570 -228 482 -166 527 -197 b 654 -271 595 -243 621 -259 z m 393 -53 l 311 4 l 225 65 b 392 134 274 102 331 122 b 455 50 425 141 455 101 b 439 -3 455 35 451 14 b 393 -53 425 -22 409 -37 z m 287 -121 b 246 -130 272 -127 259 -130 b 171 -89 215 -130 189 -115 b 156 -40 161 -73 156 -58 b 186 29 156 -17 166 7 l 192 35 l 359 -82 b 287 -121 337 -98 312 -111 z', + }, + noteheadSlashedBlack2: { + x_min: -84, + x_max: 405, + y_min: -189, + y_max: 189, + ha: 378, + o: 'm 557 -265 b 573 -272 562 -268 567 -272 b 583 -261 577 -272 580 -269 b 575 -242 580 -253 579 -248 b 524 -190 563 -220 544 -204 b 405 -99 485 -160 445 -130 b 497 50 449 -60 482 -9 b 500 72 498 58 500 65 b 478 122 500 91 492 107 b 331 186 438 167 387 186 b 120 131 258 186 186 167 l 107 124 b -52 242 53 163 1 203 b -89 265 -63 251 -76 259 b -107 272 -95 268 -101 272 b -117 266 -109 272 -114 271 b -121 251 -120 262 -121 256 b -114 235 -121 245 -120 239 b -60 186 -96 217 -81 199 b 63 95 -20 156 22 125 b -1 -35 26 66 -1 27 b 137 -183 -1 -130 46 -183 b 174 -180 148 -183 161 -181 l 245 -171 b 366 -128 289 -166 331 -150 l 426 -171 b 557 -265 469 -203 514 -233 z', + }, + noteheadDiamondDoubleWhole: { + x_min: 0, + x_max: 429, + y_min: -221, + y_max: 221, + ha: 442, + o: 'm 22 -318 b 42 -294 33 -318 37 -302 b 46 -266 45 -285 45 -275 b 50 -219 49 -249 50 -233 b 48 -153 50 -197 49 -176 b 43 120 43 -62 43 29 l 43 253 b 37 298 43 269 45 284 b 26 318 35 305 35 318 l 24 318 b 1 295 13 317 3 308 b 0 268 0 285 0 276 l 0 -121 b 10 -291 0 -177 1 -235 b 22 -318 12 -301 10 -318 z m 593 -312 b 618 -256 611 -294 616 -276 l 618 -186 b 611 253 618 -40 612 108 b 605 276 611 261 608 268 b 589 295 600 284 600 297 b 567 272 577 294 569 285 l 567 251 b 575 -197 573 102 575 -48 b 593 -312 575 -233 579 -271 z m 99 -268 b 114 -256 107 -269 111 -262 b 127 -196 124 -238 125 -217 b 128 -144 128 -179 128 -161 b 122 -9 128 -99 125 -55 l 135 -19 b 344 -179 206 -71 276 -122 b 370 -190 354 -186 363 -190 b 395 -173 379 -190 386 -184 b 492 -33 426 -127 459 -79 b 491 -86 491 -50 491 -68 b 507 -251 491 -138 495 -193 b 534 -184 530 -228 533 -206 b 541 144 537 -75 539 35 b 530 204 541 164 539 186 b 520 220 528 210 528 220 b 500 203 511 219 503 213 b 498 192 498 200 498 194 l 498 176 b 494 7 497 120 497 63 l 490 12 l 287 176 b 258 190 279 181 274 190 b 212 153 239 186 225 168 l 127 40 b 121 32 124 37 122 35 b 118 114 120 59 118 86 b 102 249 117 158 122 206 b 75 219 85 246 79 236 b 72 187 72 209 72 197 b 76 117 72 164 75 141 b 85 -151 79 27 79 -62 b 91 -251 86 -184 91 -217 b 99 -268 91 -258 92 -266 z m 392 -128 b 374 -122 387 -134 380 -127 l 180 29 b 170 45 173 35 170 39 b 176 56 170 48 173 52 b 236 122 204 101 219 122 b 308 76 252 122 272 107 l 433 -26 b 449 -50 439 -32 449 -36 b 392 -128 432 -75 413 -102 z', + }, + noteheadDiamondWhole: { + x_min: 0, + x_max: 271, + y_min: -132, + y_max: 132, + ha: 264, + o: 'm 230 -177 b 256 -190 240 -186 249 -190 b 281 -173 265 -190 272 -184 b 382 -29 314 -124 347 -76 b 390 -10 387 -22 390 -14 b 376 12 390 -3 386 4 b 173 177 308 66 240 121 b 144 190 166 183 160 190 b 98 153 127 186 112 170 b 13 40 69 115 42 76 b 0 13 4 29 0 20 b 22 -19 0 3 7 -9 b 230 -177 92 -69 163 -122 z m 279 -128 b 261 -122 274 -134 266 -127 l 66 30 b 56 45 59 35 56 39 b 62 56 56 48 59 52 b 122 122 91 101 105 122 b 194 76 138 122 158 107 l 320 -26 b 336 -50 325 -32 336 -35 b 279 -128 318 -75 300 -102 z', + }, + noteheadDiamondHalf: { + x_min: 0, + x_max: 295, + y_min: -148, + y_max: 148, + ha: 296, + o: 'm 228 -207 b 245 -213 235 -210 240 -213 b 264 -203 252 -213 258 -210 b 415 -46 314 -150 364 -98 b 425 -27 420 -40 425 -35 b 416 -10 425 -22 422 -16 b 217 200 350 60 284 131 b 194 213 212 207 204 213 b 170 196 181 213 177 203 b 14 33 118 143 68 86 b 0 7 4 23 0 16 b 17 -20 0 -1 6 -10 b 118 -114 52 -50 82 -85 b 228 -207 156 -144 184 -184 z m 209 -157 b 134 -69 177 -138 141 -115 b 130 -26 131 -55 130 -40 b 215 148 130 42 160 99 b 225 156 217 151 220 156 b 230 153 226 156 228 156 b 323 -26 276 104 321 55 b 298 -75 324 -42 315 -59 b 265 -109 287 -86 276 -99 b 209 -157 245 -125 228 -167 z', + }, + noteheadDiamondBlack: { + x_min: 0, + x_max: 310, + y_min: -146, + y_max: 146, + ha: 292, + o: 'm 266 -210 b 289 -194 278 -209 284 -200 b 406 -76 330 -156 367 -115 b 446 -23 433 -49 446 -36 b 412 29 446 -10 435 3 b 405 36 409 30 408 33 b 252 196 354 89 304 143 b 225 210 243 204 235 210 b 204 202 219 210 212 209 b 10 24 141 141 75 82 b 0 9 4 19 0 14 b 9 -6 0 4 3 0 l 232 -192 b 266 -210 242 -200 256 -204 z', + }, + noteheadParenthesis: { + x_min: -70.190112022022, + x_max: 329, + y_min: -196, + y_max: 201, + ha: 397, + o: 'm 344 -279 b 382 -262 361 -288 370 -272 b 405 -233 390 -255 399 -245 b 474 9 455 -158 468 -73 b 416 228 474 78 448 174 b 364 282 403 249 387 271 b 344 289 359 285 350 288 b 331 279 338 289 333 287 b 325 248 328 269 325 258 b 338 225 325 238 328 229 b 412 138 379 207 396 174 b 445 1 433 92 445 45 b 346 -217 445 -81 410 -154 b 336 -252 340 -223 336 -238 b 344 -279 336 -265 338 -276 z m 19 -274 b 35 -282 24 -279 30 -281 b 49 -265 42 -282 46 -275 b 52 -243 50 -256 52 -249 b 36 -210 52 -230 49 -220 b -60 -59 -16 -173 -35 -114 b -73 9 -69 -39 -73 -16 b 33 223 -73 92 -24 189 b 50 265 43 229 50 249 b 33 288 50 278 46 289 b 4 272 23 288 14 275 b -9 261 0 269 -4 265 b -101 23 -58 193 -105 124 b -37 -206 -104 -52 -75 -130 b 19 -274 -23 -232 -6 -255 z', + }, + noteheadParenthesisRight: { + x_min: -30, + x_max: 82, + y_min: -199.08429092881173, + y_max: 206, + ha: 405.0842909288117, + o: 'm -17 -282 b 24 -264 -6 -297 12 -272 b 60 -219 40 -253 52 -236 b 117 1 96 -150 112 -75 b 118 16 118 6 118 12 b 109 73 118 36 112 55 b 4 279 99 154 68 226 b -23 297 -4 287 -13 297 b -37 289 -27 297 -32 294 b -43 266 -42 285 -43 276 b -32 225 -43 251 -37 229 b 84 -7 48 170 84 82 b 32 -184 84 -69 65 -132 b -10 -222 22 -200 4 -209 b -24 -258 -20 -232 -24 -245 b -17 -282 -24 -266 -22 -276 z', + }, + noteheadParenthesisLeft: { + x_min: 0, + x_max: 106, + y_min: -197, + y_max: 197, + ha: 394, + o: 'm 134 -284 b 138 -281 135 -284 137 -284 b 145 -268 144 -278 145 -274 l 144 -253 b 107 -180 138 -225 121 -204 b 42 13 71 -120 42 -56 b 49 73 42 32 43 52 b 137 210 62 128 95 171 b 153 255 147 219 153 239 b 145 278 153 265 151 274 b 130 284 140 281 135 284 b 98 259 117 284 108 268 b 0 37 35 203 1 131 b 118 -268 9 -69 53 -173 b 134 -284 121 -274 127 -284 z', + }, + noteheadMoonBlack: { + x_min: 0, + x_max: 328, + y_min: -125, + y_max: 125, + ha: 250, + o: 'm 353 -160 b 465 -40 412 -140 451 -102 b 472 30 471 -17 472 6 b 469 124 472 60 469 92 b 406 179 469 170 459 177 l 128 179 b 37 180 98 179 68 179 b 0 141 7 180 0 170 b 3 -20 3 88 3 33 b 69 -134 3 -72 26 -109 b 240 -180 125 -164 181 -180 b 353 -160 278 -180 315 -174 z', + }, + noteheadTriangleLeftBlack: { + x_min: 0, + x_max: 391.1554175279994, + y_min: -142, + y_max: 142, + ha: 284, + o: 'm 138 -204 b 318 -197 197 -199 258 -197 l 431 -197 b 544 -192 469 -196 507 -193 b 563 -184 552 -190 560 -193 b 553 -167 564 -177 559 -171 l 540 -157 b 232 60 436 -85 334 -12 l 50 190 b 20 204 42 197 32 204 b 10 202 17 204 14 204 b 0 184 1 197 0 192 b 1 164 0 177 1 170 b 6 -150 3 59 6 -45 b 39 -193 7 -176 17 -186 b 138 -204 72 -204 105 -204 z', + }, + noteheadTriangleRightBlack: { + x_min: -0.3332953162522517, + x_max: 398, + y_min: -139, + y_max: 140, + ha: 279, + o: 'm 543 -200 b 573 -176 566 -200 573 -194 l 573 -168 b 554 141 566 -66 560 37 b 520 197 553 167 546 187 b 495 202 511 200 504 202 b 454 184 481 202 467 196 l 35 -137 b 0 -171 22 -147 -4 -154 b 52 -199 6 -193 33 -193 b 69 -199 58 -200 63 -199 z', + }, + noteheadTriangleRoundDownBlack: { + x_min: 0, + x_max: 334, + y_min: -133.78604087938328, + y_max: 136, + ha: 269.7860408793833, + o: 'm 252 -192 b 285 -176 269 -196 276 -187 b 468 52 346 -99 406 -23 b 481 79 477 62 481 71 b 465 104 481 88 475 95 b 441 124 456 109 449 117 b 249 196 380 174 314 194 b 13 104 157 196 69 154 b 0 86 6 98 0 92 b 7 69 0 82 3 76 b 202 -164 73 -7 137 -85 b 252 -192 216 -181 235 -186 z', + }, + augmentationDot: { + x_min: 0, + x_max: 96, + y_min: -57, + y_max: 57, + ha: 114, + o: 'm 13 -82 b 16 -81 14 -82 14 -82 b 105 -73 46 -76 75 -76 b 131 -48 121 -72 131 -60 b 138 26 134 -24 138 0 b 137 48 138 33 138 40 b 108 82 134 71 125 82 b 95 81 104 82 99 82 b 33 71 75 78 53 75 b 4 46 20 68 6 62 b 0 -66 1 9 0 -29 b 13 -82 0 -73 1 -82 z', + }, + tremolo1: { + x_min: -158, + x_max: 156.19381479578487, + y_min: -88, + y_max: 88, + ha: 176, + o: 'm -206 -127 b -194 -125 -203 -127 -199 -127 b 173 -36 -72 -94 50 -65 b 220 16 202 -29 215 -12 b 225 50 223 30 225 45 b 216 107 226 76 222 91 b 194 127 210 120 204 127 b 183 124 192 127 189 127 l -192 33 b -226 -9 -213 27 -222 14 b -228 -32 -226 -16 -228 -23 b -222 -108 -228 -58 -222 -82 b -206 -127 -222 -120 -217 -127 z', + }, + flag8thUp: { + x_min: 0, + x_max: 261, + y_min: -819, + y_max: 0, + ha: 819, + o: 'm 265 -1171 b 351 -1035 301 -1130 336 -1087 b 376 -867 369 -979 376 -923 b 367 -755 376 -829 373 -792 b 233 -422 350 -632 311 -520 b 131 -291 199 -379 166 -334 b 65 -125 91 -239 66 -192 b 62 -75 65 -112 62 -91 b 42 0 62 -49 52 -24 l 35 0 b 0 -63 6 -13 0 -36 l 0 -144 b 96 -445 0 -255 29 -356 b 177 -547 124 -478 150 -514 b 308 -831 246 -629 298 -721 b 317 -890 310 -851 317 -871 b 311 -919 317 -900 315 -910 b 256 -1005 297 -950 282 -984 b 228 -1068 233 -1024 228 -1045 b 230 -1106 228 -1080 229 -1093 b 240 -1162 232 -1125 239 -1143 b 251 -1179 242 -1174 246 -1179 b 265 -1171 255 -1179 259 -1176 z', + }, + flag8thDown: { + x_min: 0, + x_max: 261, + y_min: 0, + y_max: 819, + ha: 819, + o: 'm 265 1171 b 251 1179 259 1176 255 1179 b 240 1162 246 1179 242 1174 b 230 1106 239 1143 232 1125 b 228 1068 229 1093 228 1080 b 256 1005 228 1045 233 1024 b 311 919 282 984 297 950 b 317 890 315 910 317 900 b 308 831 317 871 310 851 b 177 547 298 721 246 629 b 96 445 150 514 124 478 b 0 144 29 356 0 255 l 0 63 b 35 0 0 36 6 13 l 42 0 b 62 75 52 24 62 49 b 59 117 62 91 59 104 b 131 291 60 183 91 239 b 233 422 166 334 199 379 b 367 755 311 520 350 632 b 376 867 373 792 376 829 b 351 1035 376 923 369 979 b 265 1171 336 1087 301 1130 z', + }, + flag16thUp: { + x_min: 0, + x_max: 327.1591498636094, + y_min: -819.3972596310256, + y_max: 0, + ha: 819.3972596310256, + o: 'm 415 -1179 b 435 -1168 423 -1182 429 -1174 b 451 -1138 442 -1159 446 -1149 b 465 -1020 464 -1102 467 -1064 b 461 -962 464 -1004 464 -984 b 471 -821 467 -916 472 -870 b 465 -721 472 -791 467 -756 b 415 -520 459 -651 441 -585 b 200 -245 370 -408 284 -327 b 96 -114 160 -206 118 -168 b 75 -24 84 -85 85 -53 b 59 0 72 -16 72 0 b 53 -1 58 0 56 -1 b 27 -32 40 -6 27 -10 b 29 -68 27 -43 29 -55 b 10 -79 20 -69 13 -72 b 1 -109 6 -89 1 -99 b 0 -170 0 -130 0 -148 b 35 -410 0 -252 12 -333 b 258 -793 76 -557 156 -681 b 409 -1158 350 -896 410 -1014 b 415 -1179 409 -1165 405 -1175 z m 413 -816 b 331 -681 392 -769 364 -723 b 145 -420 266 -596 189 -521 b 86 -281 125 -374 102 -330 b 156 -370 105 -312 128 -343 b 318 -539 210 -425 269 -478 b 413 -816 383 -621 420 -713 z', + }, + flag16thDown: { + x_min: 0, + x_max: 327.1591498636094, + y_min: 0, + y_max: 819, + ha: 819, + o: 'm 59 0 b 75 24 72 0 72 16 b 96 114 85 53 84 85 b 200 245 118 168 160 206 b 415 520 284 327 370 408 b 465 721 441 585 459 651 b 471 821 467 756 472 791 b 461 962 472 870 467 916 b 465 1020 464 984 464 1004 b 451 1138 467 1064 464 1102 b 435 1168 446 1149 442 1159 b 418 1179 431 1172 425 1179 l 415 1179 b 408 1169 409 1176 408 1174 b 409 1158 408 1165 409 1161 b 258 793 410 1014 350 896 b 35 410 156 681 76 557 b 0 170 12 333 0 252 l 0 88 b 29 7 0 71 6 23 b 59 0 33 4 58 0 z m 86 281 b 145 420 102 330 125 374 b 331 681 189 521 266 596 b 413 816 364 723 392 769 b 415 791 413 808 415 799 b 318 539 415 698 377 613 b 156 370 269 478 210 425 b 86 281 128 343 105 312 z', + }, + flag32ndUp: { + x_min: -0.19862981551275186, + x_max: 268.0942440943661, + y_min: -849.4710740978672, + y_max: 149.0769891455102, + ha: 998.5480632433774, + o: 'm 323 -1223 b 351 -1198 337 -1227 344 -1210 b 359 -1184 354 -1194 356 -1188 b 386 -999 377 -1122 387 -1060 b 341 -783 386 -927 372 -855 b 330 -736 334 -769 330 -753 b 333 -708 330 -727 330 -717 b 344 -621 340 -678 344 -649 b 341 -579 344 -608 343 -593 b 328 -500 338 -553 328 -526 b 331 -475 328 -491 328 -484 b 347 -370 343 -438 348 -402 b 151 27 348 -212 288 -56 b 53 176 98 59 50 102 b 45 197 53 183 48 192 b 33 215 40 203 40 216 l 30 215 b 6 194 22 212 9 209 b 0 120 3 170 -1 145 b 0 -43 4 65 0 13 b 0 -98 0 -60 1 -79 b 4 -276 0 -157 6 -216 b 7 -456 4 -337 7 -397 b 66 -638 7 -523 22 -585 b 158 -724 94 -671 127 -697 b 318 -1011 246 -801 295 -899 b 321 -1044 321 -1021 321 -1032 b 312 -1152 321 -1080 312 -1116 b 317 -1192 312 -1165 314 -1179 b 323 -1223 320 -1202 311 -1220 z m 285 -376 b 121 -180 249 -289 173 -245 b 91 -105 104 -158 92 -135 b 288 -354 181 -144 288 -269 b 285 -376 288 -363 287 -370 z m 275 -657 b 111 -492 226 -589 163 -547 b 65 -376 78 -456 66 -418 b 71 -323 65 -360 68 -341 b 275 -657 164 -418 265 -504 z', + }, + flag32ndDown: { + x_min: -2.800802874905624, + x_max: 268.09424409436605, + y_min: -169.07698914551014, + y_max: 829.4710740978672, + ha: 998.5480632433773, + o: 'm 323 1194 b 317 1164 311 1191 320 1174 b 312 1123 314 1151 312 1136 b 321 1015 312 1087 321 1051 b 318 982 321 1004 321 992 b 158 696 295 870 246 772 b 66 609 127 668 94 642 b 7 428 22 556 7 494 b 4 248 7 369 4 308 b -1 78 6 187 -10 137 b 0 14 0 59 0 32 l 0 -148 b 6 -223 0 -174 3 -199 b 30 -243 9 -238 22 -240 l 33 -243 b 45 -226 40 -245 40 -232 b 53 -204 48 -220 53 -212 b 151 -56 50 -131 98 -88 b 347 341 288 27 348 183 b 331 446 348 373 343 409 b 328 471 328 455 328 462 b 341 550 328 497 338 524 b 344 592 343 564 344 579 b 333 680 344 621 340 649 b 330 707 330 688 330 698 b 341 755 330 724 334 740 b 386 971 372 827 386 899 b 359 1155 387 1031 377 1093 b 351 1169 356 1159 354 1165 b 323 1194 344 1181 337 1198 z m 275 628 b 71 294 265 475 164 389 b 65 347 68 312 65 331 b 111 464 66 389 78 428 b 275 628 163 518 226 560 z m 285 347 b 288 325 287 341 288 334 b 91 76 288 240 181 115 b 121 151 92 107 104 130 b 285 347 173 216 249 261 z', + }, + flag64thUp: { + x_min: -4, + x_max: 282, + y_min: -823.5430338167067, + y_max: 347, + ha: 1170.5430338167066, + o: 'm 350 -1185 b 380 -1162 364 -1189 374 -1175 b 406 -1022 399 -1119 406 -1071 b 359 -798 406 -945 384 -871 b 348 -756 353 -785 348 -772 b 350 -744 348 -753 350 -749 b 363 -621 356 -704 363 -664 b 360 -580 363 -608 363 -593 b 359 -560 359 -573 359 -567 b 373 -490 359 -536 366 -513 b 393 -346 386 -444 393 -395 b 387 -269 393 -320 390 -294 b 348 -127 382 -219 348 -173 b 351 -104 348 -120 348 -111 b 353 -65 351 -91 353 -78 b 341 37 353 -26 348 6 b 226 215 323 108 278 164 b 86 336 181 258 127 288 b 62 395 72 353 62 370 b 42 481 62 423 55 454 b 27 500 37 488 36 500 b 24 498 26 500 26 500 b -1 480 14 497 1 492 b -6 444 -4 467 -6 455 l -6 435 b -1 341 -1 403 -1 372 l -1 266 b 6 156 -1 230 0 193 b 13 35 12 117 13 75 l 13 -35 b 14 -85 13 -52 14 -68 b 29 -276 19 -150 33 -213 b 20 -448 24 -334 20 -392 b 24 -534 20 -477 22 -505 b 114 -708 30 -605 59 -664 b 197 -780 143 -732 171 -755 b 344 -1153 301 -884 341 -1011 b 343 -1172 344 -1159 343 -1166 b 350 -1185 343 -1176 344 -1182 z m 287 -88 b 62 193 186 -17 79 48 b 229 52 121 144 174 98 b 289 -33 256 29 274 -3 b 295 -56 294 -42 295 -49 b 287 -88 295 -66 292 -76 z m 298 -410 b 118 -235 238 -351 176 -295 b 76 -88 82 -197 78 -147 b 268 -252 137 -153 203 -202 b 330 -360 304 -279 330 -315 b 323 -402 330 -373 327 -387 b 311 -418 318 -413 315 -418 b 298 -410 307 -418 302 -415 z m 300 -691 b 117 -508 243 -616 168 -575 b 82 -408 94 -480 82 -448 b 84 -379 82 -397 82 -387 b 259 -553 135 -451 206 -492 b 301 -667 287 -583 301 -619 b 300 -691 301 -674 301 -683 z', + }, + flag64thDown: { + x_min: -5, + x_max: 281, + y_min: -375, + y_max: 795.5430338167066, + ha: 1170.5430338167066, + o: 'm 348 1145 b 341 1132 343 1142 341 1136 b 343 1113 341 1126 343 1119 b 196 740 340 971 300 844 b 112 668 170 714 141 691 b 23 494 58 624 29 564 b 19 408 20 465 19 436 b 27 236 19 351 23 294 b 13 45 32 173 17 109 b 12 -6 13 27 12 12 l 12 -75 b 4 -196 12 -115 10 -157 b -3 -307 -1 -233 -3 -271 l -3 -382 b -7 -475 -3 -412 -3 -444 l -7 -484 b -3 -520 -7 -495 -6 -507 b 23 -539 0 -533 13 -537 b 26 -540 24 -540 24 -540 b 40 -521 35 -540 36 -528 b 60 -435 53 -494 60 -464 b 85 -376 60 -410 71 -393 b 225 -255 125 -328 180 -298 b 340 -78 276 -204 321 -148 b 351 24 347 -46 351 -14 b 350 63 351 37 350 50 b 347 86 347 71 347 79 b 386 229 347 132 380 179 b 392 305 389 253 392 279 b 372 449 392 354 384 403 b 357 520 364 472 357 495 b 359 540 357 527 357 533 b 361 580 361 553 361 567 b 348 704 361 624 354 664 b 347 716 348 708 347 713 b 357 757 347 732 351 744 b 405 982 383 831 405 904 b 379 1122 405 1031 397 1079 b 348 1145 373 1135 363 1149 z m 298 651 b 300 626 300 642 300 634 b 258 513 300 579 285 543 b 82 338 204 452 134 410 b 81 367 81 347 81 357 b 115 468 81 408 92 439 b 298 651 167 534 242 576 z m 297 370 b 310 377 301 374 305 377 b 321 361 314 377 317 373 b 328 320 325 347 328 333 b 266 212 328 275 302 239 b 75 48 202 161 135 112 b 117 194 76 107 81 157 b 297 370 174 255 236 311 z m 285 48 b 294 16 291 36 294 26 b 288 -7 294 9 292 1 b 228 -92 272 -37 255 -69 b 60 -233 173 -138 120 -184 b 285 48 78 -88 184 -23 z', + }, + flag128thUp: { + x_min: 0, + x_max: 252, + y_min: -804, + y_max: 530, + ha: 1334, + o: 'm 298 -1158 b 328 -1126 312 -1158 320 -1139 b 330 -1116 330 -1123 330 -1119 b 347 -996 343 -1076 347 -1037 b 328 -837 347 -943 338 -890 b 320 -778 324 -816 320 -798 b 330 -733 320 -763 323 -749 b 340 -665 338 -714 337 -688 b 341 -645 340 -660 341 -652 b 333 -534 341 -609 333 -572 b 343 -471 333 -513 334 -492 b 361 -366 356 -436 361 -402 b 331 -202 361 -311 348 -256 b 328 -187 330 -197 328 -193 b 331 -179 328 -184 328 -181 b 363 -55 353 -137 363 -96 b 337 79 363 -12 351 33 b 327 114 333 92 327 104 b 344 144 327 124 331 132 b 359 174 353 150 357 163 b 361 228 360 193 361 210 b 243 517 361 337 325 435 b 147 596 213 546 179 569 b 75 708 111 626 75 655 b 62 744 75 723 68 733 b 50 763 58 752 58 763 b 46 762 49 763 48 762 b 17 742 36 757 22 757 b 0 697 14 726 0 711 b 1 595 0 662 3 631 b 0 469 0 552 0 511 b 1 429 0 456 0 442 b 22 289 6 382 22 337 b 24 128 22 238 24 184 b 22 66 24 108 23 86 b 19 -19 20 37 19 10 b 20 -132 19 -56 20 -95 b 13 -276 20 -180 19 -229 b 9 -359 10 -304 9 -330 b 12 -487 9 -402 12 -445 b 56 -582 12 -526 29 -554 b 197 -742 107 -632 160 -681 b 288 -1100 265 -851 276 -976 b 288 -1122 288 -1107 287 -1115 b 287 -1145 289 -1129 287 -1138 b 298 -1158 287 -1153 288 -1158 z m 304 150 b 75 475 229 256 112 334 b 304 150 233 357 305 287 z m 271 -73 b 127 72 233 -14 179 26 b 81 167 96 98 81 127 b 84 194 81 176 82 184 b 271 -73 148 102 242 39 z m 279 -396 b 132 -223 233 -330 180 -279 b 81 -112 104 -192 81 -156 b 82 -91 81 -105 81 -98 b 279 -396 167 -125 269 -281 z m 249 -609 b 69 -357 197 -520 88 -471 b 249 -609 131 -441 229 -498 z', + }, + flag128thDown: { + x_min: -0.8888888888888888, + x_max: 252, + y_min: -580, + y_max: 754, + ha: 1334, + o: 'm 298 1086 b 287 1073 288 1086 287 1081 b 288 1050 287 1066 289 1057 b 288 1028 287 1043 288 1035 b 197 670 276 904 265 779 b 56 510 160 609 107 560 b 12 415 29 482 12 454 b 9 287 12 373 9 330 b 13 204 9 258 10 232 b 20 60 19 157 20 108 b 19 -53 20 23 19 -16 b 22 -138 19 -82 20 -109 b 24 -200 23 -158 24 -180 b 22 -361 24 -256 22 -310 b 1 -501 22 -409 6 -454 b 0 -541 0 -514 0 -528 b 0 -667 0 -583 -3 -624 b 0 -809 0 -675 -3 -791 b 46 -834 4 -825 36 -829 b 50 -835 48 -834 49 -835 b 62 -816 58 -835 58 -824 b 75 -780 68 -805 75 -795 b 147 -668 75 -727 111 -698 b 243 -589 179 -641 213 -618 b 361 -300 325 -507 361 -409 b 359 -246 361 -282 360 -265 b 344 -216 357 -235 353 -222 b 327 -186 331 -204 327 -196 b 337 -151 327 -176 333 -164 b 363 -17 351 -105 363 -60 b 331 107 363 24 353 65 b 328 115 328 109 328 112 b 331 130 328 121 330 125 b 361 294 348 184 361 239 b 343 399 361 330 356 364 b 333 462 334 420 333 441 b 341 573 333 500 341 537 b 340 593 341 580 340 588 b 330 661 337 616 338 642 b 320 706 323 677 320 691 b 328 765 320 726 324 744 b 347 924 338 818 347 871 b 330 1044 347 965 343 1004 b 328 1054 330 1047 330 1051 b 298 1086 320 1067 312 1086 z m 249 537 b 69 285 229 426 131 369 b 249 537 88 399 197 448 z m 279 324 b 82 19 269 209 167 53 b 81 40 81 26 81 33 b 132 151 81 84 104 120 b 279 324 180 207 233 258 z m 271 1 b 84 -266 242 -111 148 -174 b 81 -239 82 -256 81 -248 b 127 -144 81 -199 96 -170 b 271 1 179 -98 233 -58 z m 304 -222 b 75 -547 305 -359 233 -429 b 304 -222 112 -406 229 -328 z', + }, + accidentalFlat: { + x_min: 1, + x_max: 209, + y_min: -208, + y_max: 472, + ha: 680, + o: 'm 29 -300 b 46 -289 33 -300 39 -297 b 107 -243 65 -274 86 -258 b 301 127 233 -153 301 -30 b 298 186 301 147 301 166 b 190 297 291 256 251 297 b 147 289 177 297 163 294 b 86 265 127 284 107 274 l 85 264 l 85 301 b 91 465 85 356 88 410 b 94 559 91 497 94 527 b 84 651 94 589 91 621 b 66 680 81 661 81 680 l 65 680 b 37 645 49 678 37 665 b 33 523 36 605 32 563 l 33 478 b 26 223 33 393 29 308 b 1 -141 22 101 1 -19 b 17 -287 1 -189 4 -239 b 29 -300 20 -295 23 -300 z m 68 -105 b 76 12 71 -68 72 -29 b 81 107 79 43 81 75 l 86 109 b 171 135 114 121 141 135 b 204 128 181 135 193 132 b 238 92 228 120 239 108 b 230 63 238 84 236 75 b 68 -105 193 -10 132 -59 z', + }, + accidentalNatural: { + x_min: 0, + x_max: 213.5, + y_min: -456, + y_max: 462, + ha: 918, + o: 'm 255 -657 b 281 -624 271 -657 275 -636 b 285 -599 282 -615 285 -608 b 292 -300 288 -500 289 -400 b 289 -161 292 -253 289 -207 b 300 128 292 -65 297 32 b 304 168 300 128 302 150 l 304 173 l 305 190 l 305 199 l 307 225 b 304 259 307 229 310 246 b 272 298 297 274 302 305 b 63 266 204 279 134 272 b 72 514 68 348 72 432 b 71 595 72 541 72 567 b 56 665 71 619 66 642 b 17 579 9 651 17 608 b 3 144 19 433 7 289 b 0 -7 1 94 0 43 b 3 -134 0 -50 1 -92 b 7 -219 3 -163 7 -192 b 35 -251 7 -243 17 -251 b 49 -249 39 -251 43 -251 l 223 -223 l 230 -222 l 230 -359 b 223 -516 230 -410 223 -464 b 236 -619 223 -550 226 -585 b 255 -657 240 -634 236 -657 z m 58 -63 b 55 81 56 -14 53 33 l 56 99 b 85 99 65 99 75 98 b 232 108 134 104 183 107 l 240 109 l 236 66 b 232 -48 235 29 232 -10 b 58 -81 174 -63 115 -73 z', + }, + accidentalSharp: { + x_min: -22, + x_max: 390, + y_min: -384, + y_max: 383, + ha: 767, + o: 'm 202 -553 b 219 -526 213 -552 216 -536 b 226 -471 225 -507 226 -488 b 225 -425 226 -455 225 -441 b 226 -392 225 -415 225 -402 b 233 -305 229 -363 232 -334 l 297 -292 b 331 -469 300 -353 311 -412 b 347 -485 333 -477 338 -485 b 363 -469 356 -487 359 -477 b 374 -418 373 -454 374 -435 b 376 -382 376 -405 376 -393 b 372 -276 376 -347 373 -311 l 455 -259 b 550 -156 534 -243 544 -232 b 550 -109 550 -137 552 -124 b 526 -78 549 -91 541 -78 l 523 -78 b 507 -79 517 -78 513 -78 b 403 -101 474 -88 438 -95 l 379 -105 b 382 -42 380 -85 380 -63 b 384 96 383 4 384 50 b 503 131 425 107 464 118 b 549 173 524 138 543 150 b 562 249 554 199 562 223 b 554 294 562 264 560 279 b 536 315 549 308 544 315 l 533 315 b 517 312 528 315 523 315 b 382 266 472 294 428 279 l 377 344 b 359 531 374 406 372 469 b 348 552 356 539 357 552 l 347 552 l 343 552 b 315 528 331 549 317 544 l 315 501 b 320 249 315 416 318 333 l 243 232 b 239 361 243 275 242 318 b 226 425 238 383 238 403 b 199 359 194 409 199 382 b 193 223 196 312 194 268 b 72 202 153 215 112 209 b 4 118 13 192 4 183 b 10 66 0 102 12 84 b 33 29 7 39 14 30 b 48 32 37 29 42 30 b 187 55 95 39 141 46 l 183 -75 b 176 -145 181 -99 179 -122 b 16 -179 122 -156 69 -166 b -32 -232 -14 -186 -32 -197 b -17 -331 -32 -266 -19 -298 b -1 -356 -17 -347 -13 -354 b 12 -353 1 -356 6 -354 b 167 -320 63 -341 115 -331 b 166 -377 166 -338 166 -357 b 189 -526 166 -428 171 -477 b 202 -553 192 -536 189 -553 z m 240 -132 b 243 -37 242 -101 242 -69 b 245 65 245 -3 245 30 b 315 79 269 69 292 73 b 301 -120 308 13 305 -53 z', + }, + accidentalDoubleSharp: { + x_min: 0, + x_max: 287, + y_min: -159, + y_max: 159, + ha: 318, + o: 'm 84 -229 b 107 -216 91 -229 98 -225 b 200 -125 138 -186 167 -154 b 232 -95 212 -115 222 -105 b 347 -189 271 -125 310 -157 b 370 -200 356 -196 363 -200 b 396 -179 380 -200 389 -192 b 412 -102 410 -154 406 -125 b 377 -27 410 -69 400 -46 l 325 14 b 402 91 350 42 374 68 b 413 127 410 96 413 107 b 382 200 409 148 397 176 b 350 229 370 220 360 229 b 314 210 340 229 328 223 b 274 174 300 199 285 187 b 212 104 252 151 232 128 b 92 187 173 132 132 161 b 78 193 86 192 82 193 b 68 190 75 193 72 193 b 48 179 62 186 53 187 b 40 137 43 168 40 154 b 81 16 40 92 56 32 b 107 -3 89 10 98 4 b 14 -94 76 -32 45 -62 b 0 -124 6 -102 0 -114 b 12 -154 0 -134 3 -144 b 62 -215 26 -176 48 -193 b 84 -229 69 -225 76 -229 z', + }, + accidentalDoubleFlat: { + x_min: 0, + x_max: 359, + y_min: -220, + y_max: 446, + ha: 666, + o: 'm 43 -317 b 72 -301 55 -317 63 -310 b 160 -186 108 -268 134 -226 b 236 -60 186 -145 212 -102 b 233 -131 235 -85 233 -108 b 239 -220 233 -161 235 -190 b 259 -246 240 -233 239 -240 b 301 -228 284 -252 291 -238 b 465 -7 369 -163 416 -85 b 517 173 500 48 517 108 b 451 307 517 229 505 284 b 409 315 436 312 422 315 b 331 287 382 315 356 305 b 311 274 324 282 320 274 l 310 274 l 310 566 b 305 621 310 585 312 603 b 294 642 301 628 305 642 l 292 642 b 264 622 282 641 266 636 b 253 575 259 606 256 590 b 246 418 248 523 246 471 b 248 243 246 360 248 302 l 248 187 b 164 238 220 225 193 238 b 85 213 140 238 112 226 b 84 229 85 220 84 225 b 86 315 85 258 86 287 b 81 528 86 386 82 458 b 71 582 81 547 78 566 b 56 603 66 590 68 603 l 53 603 b 23 580 40 600 26 598 b 19 537 20 566 19 552 b 20 514 19 530 19 521 b 26 390 24 472 26 432 b 14 66 26 282 16 174 b 0 -168 13 -12 0 -91 b 12 -279 0 -206 3 -242 b 30 -314 16 -294 14 -308 b 43 -317 35 -317 39 -317 z m 301 -72 b 302 7 302 -45 302 -19 l 302 86 b 351 158 304 121 321 145 b 383 166 361 163 373 166 b 435 143 402 166 419 157 b 445 127 441 138 445 132 b 441 114 445 122 444 118 b 301 -72 397 49 354 -14 z m 75 -147 b 73 30 75 -86 75 -29 b 118 82 73 62 92 76 b 132 84 124 84 128 84 b 190 52 156 84 174 69 b 193 40 192 49 193 45 b 192 33 193 37 193 35 b 75 -147 157 -30 125 -95 z', + }, + accidentalParensLeft: { + x_min: 0, + x_max: 130.18934911242604, + y_min: -270, + y_max: 267.6082500723851, + ha: 537.6082500723851, + o: 'm 107 -389 b 127 -374 114 -389 120 -384 b 141 -347 132 -367 137 -357 b 151 -294 148 -330 151 -311 b 122 -207 151 -265 141 -236 b 63 -65 94 -164 72 -117 b 59 -10 60 -46 59 -27 b 145 223 59 78 94 153 b 187 354 176 262 189 305 b 177 384 187 364 190 380 b 143 373 166 387 153 383 b 124 354 137 367 130 361 b 0 -35 33 240 0 108 l 0 -92 b 85 -372 4 -193 27 -287 b 107 -389 92 -383 99 -389 z', + }, + accidentalParensRight: { + x_min: -0.4444444444444445, + x_max: 139, + y_min: -275, + y_max: 277, + ha: 552, + o: 'm 58 -396 b 96 -354 75 -396 85 -370 b 200 13 168 -238 200 -111 b 153 268 200 109 184 190 b 49 392 131 320 101 364 b 26 399 40 397 33 399 b 0 366 10 399 0 387 b 0 318 -1 350 0 334 l 0 291 b 27 238 -3 266 7 253 b 143 9 105 180 143 98 b 141 -20 143 -1 143 -10 b 63 -225 135 -92 108 -164 b 36 -307 45 -251 36 -278 b 40 -344 36 -320 37 -331 b 42 -356 42 -347 42 -351 b 58 -396 42 -374 37 -396 z', + }, + accidentalQuarterToneFlatStein: { + x_min: 0, + x_max: 208, + y_min: -240, + y_max: 440, + ha: 680, + o: 'm 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z', + }, + accidentalThreeQuarterTonesFlatZimmermann: { + x_min: 0, + x_max: 422, + y_min: -240, + y_max: 440, + ha: 680, + o: 'm 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 336 -346 b 353 -336 340 -346 346 -343 b 413 -289 372 -320 393 -304 b 608 81 540 -199 608 -76 b 605 140 608 101 608 120 b 497 251 598 210 557 251 b 454 243 484 251 469 248 b 393 219 433 238 413 228 l 392 217 l 392 255 b 397 419 392 310 395 364 b 400 513 397 451 400 481 b 390 605 400 543 397 575 b 373 634 387 615 387 634 l 372 634 b 344 599 356 632 344 619 b 340 477 343 559 338 517 l 340 432 b 333 177 340 347 336 262 b 308 -187 328 55 308 -65 b 324 -333 308 -235 311 -285 b 336 -346 327 -341 330 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z m 374 -151 b 383 -35 377 -114 379 -75 b 387 60 386 -3 387 29 l 393 63 b 478 89 420 75 448 89 b 511 82 488 89 500 86 b 544 46 534 73 546 62 b 537 17 544 37 543 29 b 374 -151 500 -56 439 -105 z', + }, + accidentalQuarterToneSharpStein: { + x_min: 0, + x_max: 300, + y_min: -338, + y_max: 351, + ha: 689, + o: 'm 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 l 35 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z', + }, + accidentalThreeQuarterTonesSharpStein: { + x_min: -23, + x_max: 388, + y_min: -373, + y_max: 445, + ha: 818, + o: 'm 114 -537 b 138 -475 137 -518 138 -495 b 147 -292 138 -413 144 -353 b 212 -278 168 -287 190 -282 b 243 -444 215 -333 225 -389 b 261 -467 248 -454 251 -465 b 281 -446 272 -469 276 -455 b 292 -347 292 -416 288 -384 b 288 -262 289 -320 288 -291 l 374 -245 b 376 -311 374 -266 374 -288 b 390 -456 379 -357 379 -405 b 416 -396 412 -436 415 -418 b 423 -287 420 -360 423 -323 b 422 -235 423 -269 423 -252 b 451 -229 432 -233 441 -232 b 547 -98 524 -215 547 -199 l 547 -89 b 521 -49 546 -59 540 -49 b 497 -52 516 -49 507 -49 b 418 -68 469 -56 444 -63 b 423 52 419 -29 422 12 b 426 140 425 81 425 109 b 495 160 449 145 472 153 b 552 219 526 170 546 189 b 559 279 557 240 553 262 b 530 341 559 324 552 341 b 490 331 520 341 507 338 b 432 311 471 324 452 318 b 449 552 436 392 442 471 b 452 588 451 563 452 575 b 446 622 452 599 451 611 b 436 641 444 629 448 641 b 418 628 428 641 420 636 b 409 602 413 621 410 611 b 386 297 396 501 390 399 b 297 274 356 288 327 281 b 291 403 295 317 294 360 b 274 550 288 452 284 501 b 259 569 271 564 265 569 b 240 559 253 569 248 563 b 230 537 232 554 230 546 l 230 488 b 233 369 230 448 232 409 b 236 261 236 333 238 297 b 156 245 210 255 183 251 b 154 396 154 295 154 346 b 150 416 154 403 153 410 b 140 438 145 423 150 438 l 138 438 b 118 413 128 436 118 428 b 112 354 118 393 114 374 b 109 238 109 315 109 276 b 49 226 89 233 69 230 b 3 163 16 222 3 202 b 7 91 3 138 9 114 b 29 62 7 69 13 62 b 39 63 32 62 35 63 b 104 73 60 66 82 71 b 101 -10 104 46 102 17 l 92 -132 l 10 -150 b -33 -204 -19 -157 -33 -170 b -19 -310 -32 -240 -19 -274 b -6 -324 -19 -321 -13 -324 b 6 -323 -1 -324 1 -324 b 82 -307 32 -317 58 -311 b 81 -376 82 -330 81 -353 b 114 -537 81 -431 94 -484 z m 294 -92 b 297 -37 295 -73 295 -56 b 300 49 300 -9 300 20 l 300 108 b 379 127 325 114 353 120 b 374 -76 376 59 374 -9 b 294 -92 347 -82 320 -86 z m 154 -120 b 157 20 154 -73 156 -26 b 158 82 158 40 158 62 b 230 95 183 86 206 89 b 225 0 229 63 226 32 b 217 -107 223 -35 220 -71 z', + }, + accidentalBuyukMucennebFlat: { + x_min: 1.8692317181955784, + x_max: 287, + y_min: -248, + y_max: 432.4720949426819, + ha: 680.4720949426819, + o: 'm 410 128 b 302 239 403 199 363 239 b 259 232 289 239 275 236 b 199 207 239 226 219 216 l 197 206 l 197 243 l 197 251 b 347 317 248 272 298 295 b 376 347 360 324 372 334 b 389 435 387 376 393 405 b 348 454 384 462 377 465 b 202 387 300 432 251 409 b 203 408 203 395 203 402 l 203 431 b 347 490 252 451 300 469 b 376 517 360 495 372 505 b 389 599 387 546 393 572 b 348 616 384 625 377 628 l 203 556 b 196 593 202 569 199 582 b 179 622 193 603 193 622 l 177 622 b 150 588 161 621 150 608 b 147 533 150 570 148 552 b 29 488 108 517 69 503 b 3 455 12 482 3 472 b 12 353 1 422 9 389 b 145 408 56 372 101 389 b 145 363 145 392 145 377 l 29 315 b 3 281 12 310 3 298 b 12 170 1 245 9 209 l 141 226 b 138 166 140 206 138 186 b 114 -199 134 43 115 -76 b 130 -344 114 -246 117 -297 b 141 -357 132 -353 135 -357 b 158 -347 145 -357 151 -354 b 219 -301 177 -331 199 -315 b 413 69 346 -210 413 -88 b 410 128 413 89 413 108 z m 350 35 b 343 6 350 26 348 17 b 180 -163 308 -69 245 -117 b 189 -46 183 -125 184 -86 b 193 49 192 -14 193 17 l 199 52 b 284 78 226 63 253 78 b 317 71 294 78 305 75 b 350 35 340 62 351 50 z', + }, + accidentalBakiyeFlat: { + x_min: 1.8692317181955784, + x_max: 287, + y_min: -236, + y_max: 444, + ha: 680, + o: 'm 141 -340 b 158 -330 145 -340 151 -337 b 219 -284 177 -314 199 -298 b 413 86 346 -193 413 -71 b 410 145 413 107 413 125 b 302 256 403 216 363 256 b 259 249 289 256 275 253 b 199 225 239 243 219 233 l 197 223 l 197 261 b 199 334 197 285 199 310 b 347 406 249 357 298 382 b 376 439 360 413 372 425 b 390 516 384 465 390 490 b 389 537 390 523 390 530 b 372 564 384 556 382 564 b 348 557 367 564 359 562 b 204 487 300 537 253 510 b 206 518 206 497 206 507 b 196 611 206 549 203 580 b 179 639 193 621 193 639 l 177 639 b 150 605 161 638 150 625 b 145 482 148 564 144 523 l 145 458 b 29 405 107 439 68 420 b 3 366 12 397 3 386 b 12 243 1 325 9 287 b 143 307 56 265 99 285 l 138 183 b 114 -181 134 60 114 -59 b 130 -327 114 -229 117 -279 b 141 -340 132 -336 135 -340 z m 180 -145 b 189 -29 183 -108 184 -69 b 193 66 192 3 193 35 l 199 69 b 284 95 226 81 253 95 b 317 88 294 95 305 92 b 350 52 340 79 351 68 b 343 23 350 43 348 35 b 180 -145 305 -50 245 -99 z', + }, + accidentalKomaSharp: { + x_min: 0, + x_max: 300, + y_min: -338, + y_max: 351, + ha: 689, + o: 'm 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 l 35 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z', + }, + accidentalKucukMucennebSharp: { + x_min: -0.15206251809627475, + x_max: 359, + y_min: -420, + y_max: 343, + ha: 763, + o: 'm 236 -605 b 262 -543 256 -583 261 -564 b 269 -423 268 -503 269 -464 b 266 -340 269 -396 268 -367 l 361 -318 b 405 -276 384 -312 399 -298 b 413 -189 412 -248 416 -219 b 395 -164 412 -171 409 -164 b 382 -166 392 -164 387 -164 b 264 -193 343 -176 304 -184 b 269 -102 265 -163 268 -132 b 454 -62 331 -89 392 -78 b 501 -23 477 -58 494 -45 b 517 62 511 6 517 33 b 487 112 517 95 513 112 b 471 111 482 112 477 112 b 274 66 406 95 340 81 b 276 138 275 91 276 114 b 350 154 301 144 325 148 b 402 203 377 160 396 176 b 412 284 408 230 412 258 b 392 311 412 302 406 311 b 372 308 386 311 379 310 b 287 291 343 301 314 297 l 295 405 b 298 441 297 416 298 428 b 292 475 298 452 297 464 b 282 494 289 482 294 494 b 264 481 274 494 266 490 b 255 455 259 474 256 464 b 239 282 248 397 243 340 b 148 268 209 278 179 274 b 62 164 62 252 62 253 l 62 132 b 79 108 60 117 65 108 l 86 108 l 230 130 b 229 92 230 118 229 105 b 228 56 228 79 228 68 b 66 20 173 43 120 32 b 0 -59 6 7 3 1 l 0 -138 b 14 -160 -1 -156 4 -160 b 27 -158 19 -160 23 -160 b 222 -112 92 -141 157 -127 b 220 -203 220 -143 220 -173 b 147 -217 196 -207 171 -213 b 89 -288 92 -228 89 -229 b 95 -347 85 -305 96 -325 b 112 -374 92 -366 98 -374 b 125 -373 117 -374 121 -374 l 220 -351 b 222 -458 220 -386 220 -422 b 236 -605 223 -504 225 -552 z', + }, + accidentalKoron: { + x_min: 0, + x_max: 303, + y_min: -462.4598053473055, + y_max: 180, + ha: 642.4598053473055, + o: 'm 59 -665 b 72 -649 69 -662 72 -657 b 69 -626 72 -642 69 -634 b 69 -622 69 -625 69 -624 l 69 -600 b 55 -156 60 -456 68 -311 b 86 -170 66 -166 76 -170 b 112 -163 95 -170 104 -166 b 390 -35 204 -120 298 -78 b 436 -1 409 -27 436 -27 b 396 46 436 22 413 33 l 382 55 b 46 243 271 121 157 179 b 12 259 29 253 17 259 b 0 219 1 259 0 248 b 3 -372 0 22 3 -176 b 6 -616 3 -454 6 -536 b 59 -665 6 -638 40 -671 z m 55 199 b 363 24 156 141 258 84 b 55 -118 259 -24 160 -69 z', + }, + accidentalSori: { + x_min: 0, + x_max: 434, + y_min: -295, + y_max: 325, + ha: 620, + o: 'm 194 -425 b 196 -409 194 -418 196 -413 b 194 -194 196 -337 196 -266 b 364 -127 251 -171 308 -150 b 361 -321 363 -192 364 -256 b 410 -387 360 -357 373 -377 b 413 -373 412 -382 413 -377 b 418 -114 418 -287 418 -200 l 418 -105 b 595 -35 477 -82 536 -59 b 625 0 612 -27 625 -22 b 593 48 624 23 618 39 l 419 117 b 423 370 419 202 423 285 b 426 403 423 382 426 393 b 418 436 426 415 425 426 b 384 468 409 449 399 468 b 369 448 370 468 369 459 b 369 436 369 444 369 441 l 369 428 l 369 423 b 367 138 369 328 367 233 l 353 143 l 192 207 l 192 367 b 173 406 192 383 184 396 b 151 422 167 413 160 422 b 144 420 148 422 147 422 b 137 403 138 416 137 410 l 137 392 l 137 229 b 33 271 102 243 68 256 b 13 276 26 274 19 276 b 0 262 6 276 0 272 b 35 199 1 239 0 212 l 138 160 b 140 -148 138 58 138 -45 b 56 -181 111 -158 84 -170 b 24 -215 35 -189 24 -199 b 29 -235 24 -220 26 -228 b 49 -253 35 -249 42 -253 b 78 -240 59 -253 69 -243 b 140 -216 98 -233 120 -225 l 140 -356 b 194 -425 140 -406 141 -406 z m 194 -125 b 193 138 194 -37 193 50 b 315 89 233 122 275 107 b 366 71 333 84 350 76 b 364 -58 366 27 366 -16 b 194 -125 308 -81 251 -104 z m 419 49 l 526 7 l 485 -10 l 419 -36 z', + }, + articAccentAbove: { + x_min: 0, + x_max: 425, + y_min: 0, + y_max: 326, + ha: 326, + o: 'm 27 1 b 78 12 46 0 62 6 b 347 112 168 45 253 91 b 521 184 409 128 459 167 b 608 259 557 194 589 220 b 612 274 611 265 612 271 b 598 292 612 281 608 287 b 477 347 559 312 518 331 b 176 465 374 384 275 425 b 156 469 168 468 161 469 b 125 456 145 469 137 465 b 53 370 96 432 78 399 b 45 353 48 363 45 357 b 68 333 45 344 52 337 b 360 225 166 298 262 261 b 192 154 302 203 249 171 b 13 36 120 132 53 105 b 0 13 9 29 0 22 l 0 9 b 16 0 3 1 10 0 l 26 0 b 27 1 27 0 27 0 z', + }, + articAccentBelow: { + x_min: 0, + x_max: 425, + y_min: -326, + y_max: 0, + ha: 326, + o: 'm 26 -469 l 27 -469 b 78 -458 46 -469 62 -464 b 347 -357 168 -426 253 -380 b 521 -285 409 -341 459 -302 b 608 -210 557 -276 589 -249 b 612 -196 611 -204 612 -200 b 598 -179 612 -189 608 -183 b 477 -122 559 -157 518 -138 b 176 -4 374 -85 275 -45 b 156 0 168 -1 161 0 b 125 -13 145 0 137 -4 b 53 -99 96 -37 78 -71 b 45 -117 48 -107 45 -112 b 68 -137 45 -125 52 -132 b 360 -245 166 -171 262 -209 b 192 -315 302 -266 249 -300 b 13 -433 120 -337 53 -366 b 0 -456 9 -442 0 -448 l 0 -461 b 16 -469 3 -468 10 -469 z', + }, + articTenutoAbove: { + x_min: 0.35192668236256364, + x_max: 471.1238660564107, + y_min: 0, + y_max: 56, + ha: 56, + o: 'm 137 0 b 197 1 156 0 179 1 b 409 6 268 1 338 6 b 482 4 432 6 459 6 b 556 0 508 3 534 0 b 651 10 588 0 621 3 b 678 27 662 12 678 10 b 654 59 680 45 672 53 b 511 75 606 73 560 73 b 255 81 426 78 341 81 b 160 79 222 81 193 79 l 36 79 b 1 71 24 78 7 85 b 19 32 -3 56 9 43 b 45 16 26 24 36 20 b 137 0 76 3 108 0 z', + }, + articTenutoBelow: { + x_min: 0.35192668236256364, + x_max: 471.1238660564107, + y_min: -59, + y_max: -3, + ha: 56, + o: 'm 137 -85 b 197 -84 156 -85 179 -84 b 409 -79 268 -84 338 -79 b 482 -81 432 -79 459 -79 b 556 -85 508 -82 534 -85 b 651 -75 588 -85 621 -82 b 678 -58 662 -73 678 -75 b 654 -26 680 -40 672 -32 b 511 -10 606 -12 560 -12 b 255 -4 426 -7 341 -4 b 160 -6 222 -4 193 -6 l 36 -6 b 1 -14 24 -7 7 0 b 19 -53 -3 -29 9 -42 b 45 -69 26 -60 36 -65 b 137 -85 76 -82 108 -85 z', + }, + articStaccatoAbove: { + x_min: 1.4151102965496913, + x_max: 112, + y_min: 0, + y_max: 156, + ha: 156, + o: 'm 98 0 b 132 23 109 0 122 7 b 161 112 150 50 161 79 b 158 148 161 124 161 137 b 125 186 154 167 131 167 b 63 225 117 215 85 216 b 23 197 45 222 30 219 b 3 91 12 163 12 127 b 19 66 0 79 4 69 b 65 27 40 62 53 46 b 98 0 76 9 88 0 z', + }, + articStaccatoBelow: { + x_min: 1.4151102965496913, + x_max: 112.08403222864916, + y_min: -156, + y_max: 0, + ha: 156, + o: 'm 132 -202 b 161 -112 151 -174 163 -145 b 158 -76 161 -101 161 -88 b 125 -39 153 -58 131 -58 b 63 0 115 -10 85 -9 b 23 -27 45 -3 30 -6 b 3 -134 12 -62 10 -98 b 19 -158 0 -145 4 -156 b 65 -197 40 -164 53 -179 b 98 -225 75 -216 88 -225 b 132 -202 109 -225 122 -217 z', + }, + articStaccatissimoAbove: { + x_min: 0, + x_max: 139, + y_min: 0, + y_max: 411, + ha: 411, + o: 'm 104 0 b 144 115 143 29 138 75 b 197 423 158 217 180 320 b 200 454 199 433 200 444 b 181 540 200 482 193 513 b 112 592 167 573 141 592 b 55 567 92 592 72 585 b 0 490 32 546 3 527 l 0 484 b 27 279 14 416 14 347 b 84 20 43 193 52 104 b 96 0 86 13 92 6 z', + }, + articStaccatissimoBelow: { + x_min: 0, + x_max: 139, + y_min: -411, + y_max: 0, + ha: 411, + o: 'm 88 -592 b 145 -567 108 -592 128 -585 b 200 -490 168 -546 197 -527 l 200 -484 b 173 -279 186 -416 186 -347 b 117 -20 157 -193 148 -104 b 104 0 114 -13 108 -6 l 96 0 b 56 -115 58 -29 62 -75 b 3 -423 42 -217 20 -320 b 0 -454 1 -433 0 -444 b 19 -540 0 -482 7 -513 b 88 -592 33 -573 59 -592 z', + }, + articMarcatoAbove: { + x_min: 0.04121419527862119, + x_max: 396, + y_min: 0, + y_max: 328.0000000000001, + ha: 328.0000000000001, + o: 'm 477 0 b 510 13 488 0 500 6 b 570 124 546 40 563 81 b 547 183 570 147 560 166 b 356 422 487 265 405 330 b 346 442 354 429 350 436 l 346 444 b 318 465 340 456 330 464 l 312 469 b 274 449 294 480 284 461 b 242 413 262 438 253 425 b 56 196 177 343 112 274 b 1 56 26 154 13 105 b 27 20 -4 35 9 20 b 42 23 32 20 37 20 b 84 53 59 29 72 39 b 255 269 141 125 193 200 b 275 229 262 255 266 242 b 448 14 324 151 390 86 b 477 0 456 4 467 0 z', + }, + articMarcatoBelow: { + x_min: 0, + x_max: 395.9587858047214, + y_min: -328.0000000000001, + y_max: 0, + ha: 328.0000000000001, + o: 'm 258 -469 b 297 -449 276 -480 287 -461 b 328 -413 308 -438 317 -425 b 514 -196 393 -343 458 -274 b 569 -56 544 -154 557 -105 b 543 -20 575 -35 562 -20 b 528 -23 539 -20 533 -20 b 487 -53 511 -29 498 -39 b 315 -269 429 -125 377 -200 b 295 -229 308 -255 304 -242 b 122 -14 246 -151 180 -86 b 94 0 114 -4 104 0 b 60 -13 82 0 71 -6 b 0 -124 24 -40 7 -81 b 23 -183 0 -147 10 -166 b 215 -422 84 -265 166 -330 b 225 -442 216 -429 220 -436 l 225 -444 b 252 -465 230 -456 240 -464 z', + }, + fermataAbove: { + x_min: -0.04550444040404433, + x_max: 472, + y_min: 2.015071727506986, + y_max: 454, + ha: 451.984928272493, + o: 'm 39 10 b 78 108 66 37 71 73 b 163 311 92 181 111 252 b 284 423 199 353 239 392 b 373 458 312 444 340 454 b 433 431 395 458 410 446 b 603 153 530 361 596 276 b 595 121 603 144 595 131 l 595 88 b 602 50 596 75 589 55 b 639 73 619 43 631 60 b 651 102 645 82 648 92 b 667 194 660 132 662 163 b 680 278 671 222 672 248 b 560 567 680 386 638 481 b 396 654 508 625 452 649 b 291 632 364 654 325 644 b 161 526 235 613 200 566 b 4 249 85 446 26 357 b 4 174 0 222 -3 196 b 10 19 4 124 4 69 b 29 4 12 6 16 0 b 39 10 35 4 33 4 z m 338 37 b 370 40 350 36 357 36 b 380 75 387 40 380 43 b 389 94 382 79 382 85 b 356 132 389 111 374 122 b 269 154 328 147 300 156 b 225 125 252 154 228 157 b 261 48 222 81 232 56 b 338 37 287 40 312 40 z', + }, + fermataBelow: { + x_min: -0.310835055998654, + x_max: 518.570567335755, + y_min: -430, + y_max: -0.9161449836506543, + ha: 429.08385501634933, + o: 'm 344 -615 b 500 -543 402 -602 452 -576 b 713 -253 605 -471 661 -364 b 746 -98 737 -204 750 -153 b 727 -59 744 -82 744 -59 b 688 -88 711 -59 694 -68 b 678 -109 687 -96 683 -102 b 562 -314 648 -183 611 -252 b 387 -439 516 -373 458 -416 b 328 -449 367 -446 347 -449 b 180 -386 274 -449 225 -423 b 69 -179 111 -330 69 -262 b 75 -121 69 -160 71 -141 b 84 -58 78 -101 84 -79 b 82 -39 84 -52 84 -45 b 68 -1 79 -26 82 -4 b 26 -32 49 0 33 -12 b 20 -52 24 -39 22 -45 b 0 -223 9 -107 -3 -161 b 141 -553 1 -348 27 -468 b 304 -619 192 -590 243 -619 b 344 -615 317 -619 330 -618 z m 415 -190 b 435 -157 429 -192 435 -184 b 308 -27 435 -86 379 -27 b 271 -46 287 -27 272 -35 b 269 -69 269 -55 269 -62 b 364 -183 269 -128 302 -170 z', + }, + fermataLongAbove: { + x_min: 0, + x_max: 591.4911182523068, + y_min: -6, + y_max: 337.10134960318186, + ha: 343.10134960318186, + o: 'm 20 -9 b 36 14 29 -9 35 3 b 49 109 45 45 49 78 b 48 143 49 121 49 131 b 42 312 40 200 45 256 b 63 338 42 331 46 338 b 68 340 65 338 66 338 b 279 333 138 336 209 334 b 760 317 439 330 599 323 b 783 298 775 317 782 315 l 796 161 b 814 17 801 115 802 68 b 851 144 840 45 855 102 b 824 396 842 228 834 312 b 760 468 816 459 812 467 l 55 485 b 1 433 12 487 1 478 l 1 387 b 0 203 1 325 0 264 b 9 17 0 141 3 79 b 20 -9 9 7 6 -9 z m 403 3 b 439 6 413 3 425 4 b 477 42 464 9 474 22 b 478 62 478 49 478 55 l 478 84 b 465 160 478 109 478 135 b 449 173 461 167 459 173 b 354 105 386 179 354 156 b 359 71 354 95 356 84 b 360 65 360 69 360 66 b 403 3 372 14 373 3 z', + }, + fermataLongBelow: { + x_min: 0, + x_max: 602, + y_min: -335, + y_max: 7, + ha: 342, + o: 'm 793 -482 b 851 -444 822 -482 842 -471 b 867 -357 860 -416 867 -387 b 865 -336 867 -350 867 -343 b 851 -189 858 -287 855 -238 b 832 -32 847 -135 840 -84 b 824 -17 832 -26 832 -17 l 822 -17 b 805 -30 816 -19 806 -20 b 798 -88 802 -50 798 -69 b 805 -292 798 -157 801 -225 b 772 -327 806 -318 801 -327 b 360 -324 635 -327 497 -325 b 78 -327 265 -323 171 -327 b 50 -304 59 -327 50 -320 l 50 -297 b 62 -187 55 -261 60 -225 b 71 -60 62 -144 71 -102 b 68 -20 71 -48 71 -33 b 53 10 66 -10 69 10 l 52 10 b 22 -22 37 9 24 -1 b 14 -121 17 -55 16 -89 b 0 -359 10 -200 0 -279 b 6 -452 0 -390 3 -420 b 42 -481 9 -478 20 -481 l 415 -481 l 415 -482 z m 409 -183 b 454 -179 420 -183 435 -181 b 505 -124 487 -176 504 -158 b 505 -89 507 -112 505 -101 b 507 -58 505 -79 507 -68 b 505 -42 507 -52 507 -48 b 485 -10 503 -29 501 -10 b 448 -9 472 -9 461 -9 b 380 -22 425 -9 402 -12 b 363 -46 372 -27 363 -35 l 363 -49 b 364 -114 363 -71 361 -94 b 409 -183 374 -168 377 -183 z', + }, + fermataVeryLongAbove: { + x_min: 0, + x_max: 715, + y_min: -14.096346766617495, + y_max: 437, + ha: 451.0963467666175, + o: 'm 26 -20 b 42 -4 36 -22 39 -12 b 49 53 49 14 49 33 l 49 448 b 69 478 49 467 52 478 l 72 478 b 81 480 75 478 78 478 b 144 477 102 477 122 477 l 207 477 b 943 471 452 477 698 471 b 978 442 966 471 976 467 b 989 99 985 327 985 213 b 999 -19 991 60 995 22 b 1030 62 1028 6 1030 35 b 1021 507 1028 210 1025 359 b 1012 596 1021 537 1017 567 b 976 624 1009 618 998 624 b 507 626 819 624 662 625 b 46 629 353 628 200 629 b 7 590 19 629 7 618 b 0 101 7 428 0 264 b 16 -4 0 65 13 32 b 26 -20 17 -10 22 -19 z m 187 -9 b 207 30 206 -7 204 14 b 207 55 209 37 207 46 b 200 240 210 117 197 179 b 219 262 200 256 203 262 l 223 262 b 456 252 301 258 379 255 l 772 239 b 804 209 792 238 802 235 b 818 69 806 163 809 115 b 834 -4 821 46 816 19 b 857 56 852 13 857 35 b 851 183 857 99 858 141 b 827 360 841 242 841 301 b 786 390 821 383 809 389 b 189 409 588 403 387 402 b 153 377 163 409 153 400 b 173 27 153 259 150 143 b 187 -9 176 13 177 -9 z m 478 3 b 536 10 491 3 510 6 b 582 60 569 14 580 32 l 582 89 l 580 89 b 580 117 580 98 582 107 b 540 171 577 158 572 171 b 521 171 534 171 528 170 b 459 166 500 170 480 168 b 423 132 436 164 423 154 b 428 88 423 118 425 102 b 478 3 438 22 439 4 z', + }, + fermataVeryLongBelow: { + x_min: -0.012345679012345682, + x_max: 686.4443937550029, + y_min: -427, + y_max: 30, + ha: 457, + o: 'm 56 -615 b 282 -612 132 -612 207 -613 b 924 -606 497 -608 710 -606 b 973 -570 953 -606 968 -593 b 988 -455 984 -533 991 -494 b 982 -262 984 -390 982 -327 b 976 -69 982 -197 981 -134 b 976 -14 975 -50 976 -33 b 966 43 976 4 975 23 b 940 20 953 37 943 35 b 933 -76 936 -12 933 -45 b 935 -121 933 -91 933 -107 b 940 -307 940 -183 940 -245 l 940 -435 b 919 -458 940 -451 935 -458 b 894 -459 910 -458 903 -458 b 206 -467 665 -461 435 -467 b 88 -467 167 -467 127 -468 b 45 -425 45 -467 42 -465 b 46 -400 46 -416 46 -408 b 43 -325 46 -376 43 -350 b 42 -59 42 -236 42 -148 b 22 17 42 -32 36 -6 b 0 -27 -1 7 0 -10 b 7 -420 0 -158 7 -289 l 7 -474 b 16 -579 7 -510 7 -544 b 56 -615 22 -603 27 -615 z m 789 -390 b 835 -357 816 -392 829 -380 b 850 -256 844 -324 850 -291 b 848 -230 850 -248 850 -239 b 845 -135 845 -199 845 -167 l 845 -72 b 837 23 845 -40 848 -9 b 809 -27 809 14 809 -7 l 809 -222 b 788 -242 809 -238 805 -242 l 203 -229 b 180 -209 186 -229 180 -223 l 180 -160 b 179 -115 180 -145 180 -131 b 179 -50 177 -94 179 -72 b 163 24 179 -26 176 0 b 137 -6 145 19 140 10 b 134 -39 134 -17 134 -27 b 138 -105 134 -60 137 -82 l 138 -197 b 145 -343 138 -246 138 -294 b 179 -377 148 -364 151 -377 b 789 -390 383 -377 586 -380 z m 480 -164 b 566 -65 549 -164 566 -140 b 527 1 566 -10 564 1 b 436 -71 426 1 436 -9 l 436 -88 l 436 -143 b 454 -163 436 -153 439 -161 b 480 -164 464 -163 472 -164 z', + }, + fermataShortAbove: { + x_min: 0, + x_max: 545, + y_min: -18.08551453529649, + y_max: 348, + ha: 366.0855145352965, + o: 'm 16 -26 b 36 -9 26 -27 30 -16 b 354 340 143 107 249 223 b 369 348 360 346 364 348 b 382 341 373 348 377 346 l 530 199 b 743 0 599 131 672 68 b 753 -7 747 -3 750 -7 b 762 -1 756 -7 759 -6 b 785 84 776 10 785 48 b 768 150 785 112 779 138 l 399 491 b 379 501 392 498 384 501 b 357 488 372 501 364 495 b 27 137 248 370 141 251 b 1 84 12 121 1 105 b 3 69 1 79 1 75 b 0 55 1 65 0 59 b 9 1 0 36 9 20 b 16 -26 10 -7 3 -22 z m 357 24 b 367 27 360 24 363 24 b 431 118 422 42 431 49 b 429 151 431 130 431 141 b 400 193 428 171 429 193 b 333 147 359 193 333 176 b 341 42 333 111 337 78 b 357 24 343 30 346 24 z', + }, + fermataShortBelow: { + x_min: 0, + x_max: 565, + y_min: -335, + y_max: 10, + ha: 345, + o: 'm 386 -482 b 422 -455 395 -482 405 -474 b 732 -117 526 -343 631 -232 b 814 12 765 -79 799 -42 b 752 -22 780 14 768 -7 b 436 -320 645 -120 540 -219 b 419 -328 429 -325 425 -328 b 400 -318 413 -328 408 -325 b 35 0 279 -212 157 -105 b 16 14 29 4 23 14 b 7 12 13 14 10 14 b 0 -3 1 7 0 1 b 7 -23 0 -10 3 -17 b 20 -48 12 -30 14 -39 b 167 -238 60 -117 115 -177 b 351 -455 229 -310 289 -383 b 386 -482 367 -474 377 -482 z m 382 -213 b 406 -207 389 -213 396 -210 b 452 -156 431 -199 446 -180 b 461 -85 456 -132 458 -108 b 448 -32 461 -66 454 -49 b 418 -6 442 -12 431 -6 b 397 -9 410 -6 405 -7 b 348 -50 376 -14 350 -14 b 356 -170 348 -91 354 -130 b 382 -213 357 -199 363 -213 z', + }, + breathMarkComma: { + x_min: 0, + x_max: 148, + y_min: 0, + y_max: 275, + ha: 275, + o: 'm 120 0 b 187 78 156 20 174 48 b 213 209 206 121 213 164 b 206 294 213 238 210 265 b 140 390 200 337 171 367 b 122 396 134 395 128 396 b 68 382 105 396 85 384 b 46 379 60 382 53 382 b 0 328 12 369 0 357 b 1 311 0 323 1 317 b 30 210 4 275 22 243 b 66 167 39 179 46 167 b 94 171 73 167 82 168 b 143 180 109 174 124 180 b 160 179 148 180 154 180 b 120 66 124 145 120 107 b 120 0 120 45 121 23 z', + }, + breathMarkUpbow: { + x_min: 0, + x_max: 254, + y_min: 0, + y_max: 595, + ha: 595, + o: 'm 233 0 b 256 48 251 14 253 30 b 272 183 264 92 265 138 b 311 455 289 274 295 364 b 350 716 327 541 341 628 b 366 815 354 749 366 782 b 359 857 366 829 363 842 b 327 815 334 852 330 832 b 302 674 315 769 310 721 b 248 357 288 567 269 462 b 225 226 240 314 242 268 b 210 251 212 232 213 243 b 69 721 163 408 117 564 b 32 835 58 760 53 801 b 20 851 29 841 27 851 b 14 850 19 851 16 851 b 0 828 6 847 0 838 l 0 825 b 12 765 1 804 7 785 b 194 125 73 552 132 338 b 233 0 206 84 213 42 z', + }, + caesura: { + x_min: 0, + x_max: 565.5831864753837, + y_min: -0.09016994374947417, + y_max: 562.4481112129314, + ha: 562.5382811566809, + o: 'm 0 76 b 49 122 24 92 37 107 b 444 613 180 287 305 455 b 528 770 484 660 518 708 b 531 792 530 778 531 785 b 524 808 531 799 530 805 b 490 792 513 815 498 802 b 390 683 456 756 420 721 b 48 262 275 543 164 400 b 0 76 0 207 7 145 z m 226 1 b 248 13 238 -4 243 7 l 353 137 b 759 638 490 302 632 464 b 814 805 795 688 819 740 b 779 786 796 805 788 796 b 628 609 724 732 678 668 b 310 242 523 485 416 363 b 217 69 265 190 217 140 b 222 30 217 58 219 45 b 222 23 222 29 220 26 b 220 12 222 20 220 16 b 226 1 220 7 222 3 z', + }, + caesuraCurved: { + x_min: 0, + x_max: 386, + y_min: -10, + y_max: 584, + ha: 594, + o: 'm 180 -14 b 246 14 213 -13 230 0 b 347 144 288 52 315 99 b 526 471 420 246 488 350 b 556 671 546 537 556 603 b 543 798 556 713 553 756 b 504 837 537 822 521 828 b 490 841 500 840 494 841 b 472 832 482 841 477 838 b 406 678 436 785 406 737 b 410 638 406 665 408 652 b 425 511 419 595 425 553 b 315 186 425 395 387 287 b 180 -14 271 122 228 58 z m 14 24 b 49 39 29 24 40 32 b 120 114 76 60 99 85 b 216 276 156 166 184 223 b 317 626 281 384 317 501 b 315 664 317 639 317 651 b 301 773 314 701 311 737 b 262 808 295 795 278 808 b 245 799 256 808 249 805 b 170 641 209 750 170 706 b 171 621 170 634 170 628 b 177 511 176 585 177 549 b 114 229 177 415 160 320 b 0 26 79 161 42 95 b 14 24 6 24 10 24 z', + }, + restMaxima: { + x_min: 0, + x_max: 366, + y_min: -255, + y_max: 255, + ha: 510, + o: 'm 397 -367 b 504 -343 436 -367 468 -347 b 518 -318 516 -341 518 -330 b 527 -30 518 -217 527 -117 b 526 33 527 -7 527 13 l 526 301 b 501 350 526 323 520 341 b 428 367 477 361 452 367 b 374 359 410 367 393 364 b 357 333 361 354 357 347 b 356 91 357 252 356 171 l 356 30 b 340 -307 357 -82 346 -194 b 397 -367 337 -354 350 -367 z m 46 -357 b 58 -356 49 -357 53 -357 b 154 -333 91 -351 121 -338 b 173 -305 168 -330 173 -320 l 173 302 b 132 356 173 330 157 348 b 68 364 112 363 89 364 b 3 304 19 363 1 348 l 3 4 l 0 4 b 1 -302 0 -98 0 -200 b 46 -357 1 -331 16 -357 z', + }, + restDoubleWhole: { + x_min: 0, + x_max: 122, + y_min: 0, + y_max: 249, + ha: 249, + o: 'm 43 0 b 58 1 48 0 52 0 b 124 20 81 6 102 17 b 176 96 173 27 176 58 b 173 220 174 138 173 179 b 176 304 173 248 176 276 b 140 353 176 331 163 346 b 95 359 125 356 111 359 b 32 346 73 359 52 354 b 0 315 20 340 0 337 b 1 243 0 291 1 268 l 1 174 l 4 174 l 4 48 b 43 0 4 16 17 0 z', + }, + restWhole: { + x_min: 0.8908513171538642, + x_max: 500, + y_min: -120, + y_max: 14, + ha: 134, + o: 'm 356 -173 l 356 -171 l 642 -171 b 719 -115 680 -171 717 -145 b 720 -82 719 -104 720 -92 b 711 -20 720 -60 719 -40 b 672 17 704 0 694 10 b 649 20 664 20 657 20 b 605 17 634 20 621 17 b 92 19 433 17 262 17 b 29 7 69 20 49 12 b 9 -17 12 4 9 -6 b 10 -43 9 -26 10 -35 b 1 -84 10 -58 3 -72 b 76 -173 0 -147 7 -173 z', + }, + restWholeLegerLine: { + x_min: -196.7269258015421, + x_max: 685, + y_min: -157, + y_max: 29, + ha: 186, + o: 'm 96 -226 b 167 -223 121 -226 144 -225 b 300 -222 207 -222 252 -222 l 444 -222 b 660 -217 520 -222 595 -222 b 746 -131 703 -216 746 -200 b 744 -62 746 -108 747 -85 b 743 -39 743 -53 743 -46 b 789 -14 743 -16 752 -17 b 883 -16 821 -13 851 -16 b 965 -9 910 -16 937 -14 b 986 3 972 -7 986 -10 l 986 6 b 963 35 984 17 982 32 b 887 42 937 39 913 42 b 39 27 605 42 321 33 l -76 27 b -261 20 -138 27 -200 26 b -282 14 -269 20 -279 23 b -271 -7 -287 4 -276 -1 b -209 -27 -253 -23 -230 -24 b -153 -30 -190 -30 -173 -30 b -48 -29 -118 -30 -82 -27 b 6 -32 -22 -29 -6 -27 b 1 -72 3 -43 1 -58 b 4 -167 1 -105 7 -140 b 53 -223 3 -207 14 -217 b 96 -226 68 -226 82 -226 z', + }, + restHalf: { + x_min: 0, + x_max: 518.3998530468286, + y_min: 0, + y_max: 162, + ha: 162, + o: 'm 98 0 l 556 0 b 665 1 592 0 629 0 b 746 82 720 3 743 29 b 736 174 749 114 740 144 b 670 232 729 215 708 232 b 570 229 636 232 603 229 b 356 233 498 229 426 233 l 73 233 b 0 179 19 233 0 220 b 1 154 0 171 0 164 b 6 95 4 135 6 115 b 98 0 3 27 29 0 z', + }, + restHalfLegerLine: { + x_min: -120, + x_max: 448.2056815990121, + y_min: -20, + y_max: 143, + ha: 163, + o: 'm 397 -29 b 482 -23 426 -29 455 -27 b 526 -24 497 -24 511 -24 b 608 -17 554 -24 582 -23 b 645 -1 622 -14 644 -17 b 615 26 648 13 629 20 b 595 32 608 29 602 30 b 526 37 572 35 549 37 b 498 36 517 37 507 37 b 471 35 487 35 478 35 b 445 53 451 35 445 39 b 449 89 445 60 446 73 l 454 117 b 373 206 456 173 428 206 b 324 204 356 206 340 206 b 209 203 287 203 248 203 b 46 193 156 203 101 202 b 16 170 32 190 19 187 b 9 112 13 151 9 131 b 14 78 9 101 10 89 b 19 59 17 71 19 63 b -4 45 19 49 12 45 l -10 45 b -150 33 -58 45 -104 46 b -173 22 -158 32 -173 33 l -173 19 b -151 -13 -170 6 -168 -10 b -117 -17 -140 -16 -128 -17 b 118 -13 -37 -17 39 -13 b 397 -29 213 -13 308 -29 z', + }, + restQuarter: { + x_min: -0.3784452492533808, + x_max: 263, + y_min: -415, + y_max: 415, + ha: 830, + o: 'm 151 -596 b 164 -563 163 -589 161 -575 b 160 -546 164 -557 161 -552 b 124 -396 148 -495 135 -446 b 122 -380 122 -390 122 -384 b 199 -255 122 -331 158 -272 b 228 -256 209 -249 217 -253 b 324 -346 274 -271 298 -310 b 353 -369 331 -356 341 -369 b 360 -367 356 -369 357 -369 b 379 -336 373 -361 379 -348 l 377 -325 b 344 -232 372 -292 366 -258 b 249 -58 301 -180 278 -117 b 242 -36 245 -49 242 -42 b 258 -7 242 -26 248 -17 b 328 78 284 20 311 45 b 354 158 344 104 354 131 b 337 216 354 177 350 196 b 213 435 294 288 249 359 b 115 575 189 487 158 536 b 78 598 105 585 92 598 b 59 592 72 598 66 596 b 39 562 45 583 39 572 b 53 527 39 550 45 539 b 168 344 98 469 125 402 b 187 307 181 328 187 317 b 153 269 187 294 176 284 b 62 213 122 252 91 235 b 40 180 48 203 40 192 b 46 158 40 173 43 166 b 99 65 60 125 79 95 b 183 -79 131 20 160 -29 b 156 -86 173 -88 164 -85 b 0 -261 58 -99 -7 -173 b 96 -557 10 -366 49 -464 b 124 -585 102 -569 109 -580 b 145 -598 132 -588 138 -598 b 151 -596 147 -598 150 -598 z', + }, + rest8th: { + x_min: 0, + x_max: 289, + y_min: -260, + y_max: 261, + ha: 521, + o: 'm 164 -374 b 212 -340 190 -373 203 -357 b 276 -190 238 -292 258 -242 b 410 285 333 -36 359 128 b 416 314 413 294 416 304 l 416 321 b 393 354 415 341 410 354 b 382 353 389 354 386 354 b 292 311 347 347 315 333 b 174 225 256 276 216 251 b 157 219 168 222 163 219 b 140 228 151 219 145 222 b 131 246 134 233 131 240 b 135 262 131 252 132 256 b 147 298 141 272 147 285 b 127 367 147 323 154 354 b 94 376 114 373 102 376 b 48 336 75 376 63 363 b 3 181 20 288 12 235 b 0 150 1 170 0 160 b 109 24 0 84 35 24 b 171 36 127 24 148 27 b 289 101 213 52 248 75 b 164 -374 256 -62 193 -213 z', + }, + rest16th: { + x_min: 0, + x_max: 333, + y_min: -328.283950617284, + y_max: 244, + ha: 572.2839506172841, + o: 'm 209 -471 b 246 -458 222 -477 236 -468 b 307 -338 279 -425 300 -384 b 324 -226 312 -301 317 -262 b 428 161 350 -94 386 35 b 480 318 445 215 480 259 b 467 347 480 331 477 341 b 445 351 461 350 454 351 b 408 337 432 351 419 347 b 402 333 405 336 403 334 b 223 215 344 294 294 245 b 236 259 229 233 235 246 b 238 276 238 265 238 271 b 212 338 238 302 226 334 b 193 341 206 340 199 341 b 86 289 156 341 104 317 b 59 180 66 255 59 217 b 156 27 59 76 92 27 b 236 46 179 27 204 35 b 338 101 271 59 298 82 b 289 -49 312 49 302 0 b 196 -122 276 -99 235 -107 b 176 -114 187 -127 176 -127 l 176 -111 b 157 -53 177 -88 164 -72 b 69 -9 141 -7 101 -16 b 17 -48 43 -3 29 -27 b 0 -127 4 -73 0 -99 b 6 -186 0 -147 1 -167 b 82 -294 17 -262 37 -294 b 160 -276 102 -294 128 -289 b 219 -242 181 -268 203 -259 b 236 -230 223 -236 229 -230 b 243 -232 239 -230 240 -230 b 235 -275 248 -246 239 -261 b 202 -456 220 -334 202 -395 b 209 -471 202 -462 203 -468 z', + }, + rest32nd: { + x_min: 0, + x_max: 347, + y_min: -497.5023916875033, + y_max: 483, + ha: 980.5023916875033, + o: 'm 177 -716 b 217 -690 194 -720 209 -704 b 233 -655 225 -680 230 -668 b 292 -390 253 -567 275 -480 b 361 -48 312 -275 336 -161 b 452 400 393 102 422 252 b 497 629 467 477 482 553 b 500 647 498 635 500 641 b 480 691 500 665 492 684 b 464 696 475 694 469 696 b 418 674 448 696 431 685 l 361 626 b 333 611 353 618 343 612 b 308 629 325 611 317 616 b 239 667 292 651 265 661 b 204 670 228 668 216 670 b 86 559 141 670 95 628 b 85 537 86 552 85 544 b 107 416 85 495 95 455 b 161 372 114 389 134 372 b 174 373 166 372 170 372 b 226 383 192 374 209 377 b 387 478 285 402 330 444 b 364 386 379 444 364 415 b 276 271 364 323 320 298 b 265 266 272 268 268 266 b 252 276 261 266 256 269 b 143 333 229 311 186 333 b 107 327 130 333 118 330 b 43 243 62 314 46 291 b 58 145 43 210 52 179 b 150 63 68 92 99 63 b 315 132 213 63 259 98 b 266 -58 297 63 281 4 b 207 -101 259 -91 230 -96 b 186 -66 186 -107 199 -75 b 180 -50 181 -63 183 -55 b 101 -3 160 -23 135 -3 b 9 -66 59 -3 20 -32 b 0 -118 3 -84 0 -101 b 10 -196 0 -144 6 -170 b 104 -287 20 -256 52 -287 b 137 -282 114 -287 125 -287 b 184 -269 151 -281 171 -269 b 196 -275 190 -269 193 -271 b 199 -287 197 -278 199 -282 b 184 -343 199 -304 189 -325 b 181 -348 184 -346 183 -347 b 134 -595 158 -429 131 -508 b 156 -677 134 -624 150 -648 b 177 -716 158 -693 160 -713 z', + }, + rest64th: { + x_min: 0, + x_max: 428, + y_min: -720, + y_max: 473.6797408388932, + ha: 1193.6797408388932, + o: 'm 200 -1037 b 229 -1012 215 -1037 222 -1025 b 238 -984 233 -1004 236 -994 b 282 -780 248 -914 265 -848 b 386 -369 317 -644 354 -507 b 491 104 422 -212 451 -53 b 600 541 528 249 550 399 b 616 629 611 570 616 599 b 600 680 616 648 615 671 b 550 665 586 687 566 677 b 480 618 527 649 501 635 b 464 611 474 613 468 611 b 448 622 458 611 454 615 b 366 662 425 651 397 662 b 331 658 354 662 343 661 b 242 572 285 647 253 619 b 236 528 239 557 236 543 b 266 400 236 484 251 442 b 325 373 274 377 301 373 b 436 409 366 373 403 383 l 494 452 b 474 360 485 416 474 389 b 383 248 474 297 435 269 b 320 328 377 288 351 310 b 276 341 305 337 291 341 b 186 269 235 341 194 311 b 181 230 183 256 181 243 b 187 153 181 204 186 179 b 279 63 192 86 233 63 b 304 65 288 63 295 63 b 416 115 344 72 379 92 b 387 -14 406 69 397 27 b 320 -95 380 -52 369 -86 b 318 -79 320 -89 320 -84 b 223 0 305 -29 271 0 b 122 -81 171 0 135 -30 b 118 -127 120 -96 118 -112 l 118 -196 b 137 -242 118 -215 125 -229 b 209 -275 157 -266 181 -275 b 249 -269 222 -275 235 -274 b 318 -248 272 -264 294 -255 b 281 -390 315 -301 292 -344 b 276 -400 279 -393 279 -397 b 259 -420 272 -408 266 -416 b 246 -429 255 -425 251 -429 b 233 -415 242 -429 238 -426 b 176 -359 225 -389 200 -372 b 121 -346 158 -348 140 -346 b 14 -408 73 -346 27 -370 b 0 -498 4 -438 0 -468 b 6 -564 0 -520 3 -543 b 91 -635 12 -611 45 -635 b 131 -629 104 -635 117 -634 b 223 -590 163 -622 190 -603 b 166 -824 203 -671 189 -747 b 148 -912 157 -852 148 -881 b 156 -955 148 -926 150 -940 b 177 -1008 161 -972 170 -991 b 200 -1037 181 -1020 183 -1037 z', + }, + rest128th: { + x_min: 0.6717818579024267, + x_max: 491, + y_min: -711, + y_max: 719, + ha: 1430, + o: 'm 233 -1015 b 271 -956 256 -1002 266 -981 l 314 -723 b 393 -350 337 -598 366 -474 b 543 312 442 -128 492 91 b 687 841 583 490 635 665 b 707 958 698 880 707 919 b 706 986 707 968 707 976 b 688 1025 704 999 704 1024 b 670 1027 683 1025 677 1027 b 629 1007 655 1027 639 1022 b 559 945 613 981 586 968 b 541 1004 553 968 559 991 b 456 1035 516 1024 488 1035 b 419 1030 444 1035 431 1034 b 344 953 379 1018 353 995 b 340 900 341 936 340 917 b 341 847 340 881 341 864 b 380 779 340 815 354 793 b 464 763 406 765 435 762 b 592 814 510 763 549 786 b 546 660 575 757 556 710 b 480 585 537 619 517 598 b 478 599 480 590 478 595 b 386 678 472 641 428 678 b 294 612 343 678 304 651 b 279 477 282 567 278 521 b 363 395 281 428 317 395 b 380 396 369 395 374 395 b 488 436 416 403 449 419 b 384 233 469 357 468 275 b 359 291 373 252 377 276 b 282 318 337 310 310 318 b 181 264 243 318 203 298 b 154 107 153 216 154 161 b 242 6 154 42 187 6 b 278 10 253 6 265 7 b 408 88 330 22 366 55 b 387 -1 400 56 393 27 b 301 -112 379 -55 354 -94 b 289 -65 297 -95 302 -79 b 219 -32 269 -42 245 -32 b 183 -37 207 -32 196 -35 b 112 -109 144 -46 121 -71 b 105 -219 104 -145 108 -183 b 186 -315 101 -276 134 -315 b 230 -307 199 -315 215 -312 b 324 -256 264 -295 292 -275 b 180 -491 323 -383 266 -471 b 183 -459 180 -480 180 -469 b 184 -442 184 -454 184 -448 l 184 -436 b 135 -369 184 -403 170 -383 b 102 -363 125 -364 114 -363 b 29 -399 73 -363 45 -376 b 1 -556 -4 -448 6 -503 b 109 -670 -4 -625 43 -670 b 140 -667 118 -670 130 -668 b 253 -616 180 -658 213 -638 b 238 -688 248 -644 242 -665 b 192 -959 220 -779 192 -867 b 193 -992 192 -971 192 -981 b 210 -1024 194 -1014 199 -1024 b 233 -1015 216 -1024 223 -1021 z', + }, + dynamicPiano: { + x_min: -49, + x_max: 326.5019318364244, + y_min: -142, + y_max: 515, + ha: 657, + o: 'm -56 -204 b -42 -202 -52 -204 -46 -203 b -19 -194 -35 -202 -26 -197 b 147 -138 35 -170 91 -151 b 249 -58 194 -127 223 -95 b 262 -29 255 -50 262 -39 b 258 -17 262 -24 261 -20 b 232 -7 252 -10 242 -7 b 210 -12 225 -7 217 -9 b 125 -40 184 -23 157 -30 b 183 140 153 19 171 79 b 251 167 207 144 230 153 b 469 518 383 262 480 382 b 357 687 472 626 420 687 b 315 678 344 687 330 684 b 204 600 279 664 240 634 b 210 704 206 635 209 670 b 215 721 212 710 215 716 b 206 733 215 727 212 730 b 180 742 197 736 189 742 b 164 734 176 742 170 740 b 1 575 108 684 36 645 b -7 557 -1 569 -7 563 b -6 553 -7 556 -7 554 b 7 547 -3 547 3 547 l 17 547 b 82 575 43 547 59 567 l 82 452 b 56 46 82 317 81 180 b 17 -66 49 7 46 -36 b -62 -173 -13 -99 -37 -135 b -71 -192 -66 -179 -71 -184 b -68 -199 -71 -193 -69 -196 b -56 -204 -65 -203 -60 -204 z m 196 258 b 197 266 197 261 197 264 b 200 510 200 347 199 429 b 233 543 210 521 222 533 b 281 560 249 554 266 560 b 340 503 310 560 333 540 b 344 461 343 488 344 474 b 321 323 344 413 333 369 b 268 272 315 300 295 281 b 196 258 245 265 220 261 z', + }, + dynamicMezzo: { + x_min: -18, + x_max: 559, + y_min: -50, + y_max: 365, + ha: 415, + o: 'm 43 -71 b 160 19 86 -71 143 -26 b 230 264 189 99 200 184 b 282 363 243 297 259 327 b 287 320 285 347 287 333 b 284 279 287 305 285 292 l 249 -12 b 275 -43 248 -29 245 -43 b 395 45 321 -43 389 3 b 462 271 406 124 436 197 b 523 387 475 310 490 348 l 523 346 b 504 130 521 274 513 202 b 501 81 501 114 501 98 b 510 3 501 55 504 29 b 580 -72 521 -48 543 -72 b 625 -63 593 -72 608 -69 b 789 50 690 -43 744 -3 b 805 72 795 56 805 63 b 798 85 805 76 802 81 b 778 94 792 91 785 94 b 755 85 770 94 763 91 l 693 40 b 675 33 685 36 680 33 b 658 52 668 33 662 39 b 645 144 651 82 645 112 b 658 448 641 246 660 346 b 606 507 658 485 638 507 b 583 504 599 507 592 505 b 495 446 547 497 521 471 b 420 373 471 423 448 399 b 413 458 418 406 418 432 b 361 507 408 490 386 507 b 320 491 347 507 333 501 b 160 307 256 444 207 382 l 160 337 b 174 488 160 387 174 438 b 156 521 174 501 173 513 b 137 526 148 524 143 526 b 109 513 127 526 118 520 b -16 399 66 477 23 439 b -26 383 -20 395 -26 389 l -26 379 b -14 370 -24 372 -20 370 b -6 372 -12 370 -9 372 b 19 376 4 374 12 376 b 36 359 32 376 36 370 b 30 330 36 350 35 341 l 30 323 b 9 -35 23 203 17 85 b 43 -71 6 -65 19 -71 z', + }, + dynamicForte: { + x_min: -144, + x_max: 311.30112136775, + y_min: -115.3876295915697, + y_max: 504, + ha: 619.3876295915697, + o: 'm -101 -166 b 173 76 7 -153 150 -30 b 206 344 192 164 202 253 b 268 338 226 343 246 341 b 384 395 317 333 353 361 b 397 419 393 405 397 412 b 367 442 397 429 387 436 b 350 444 361 444 356 444 b 206 455 302 449 255 454 l 206 474 b 202 540 204 495 202 518 b 209 593 202 557 203 576 b 236 624 215 613 225 624 b 265 612 245 624 253 619 b 308 552 287 596 302 577 b 336 533 312 534 323 533 b 448 611 366 533 444 583 b 399 696 452 648 423 671 b 382 706 395 700 387 703 b 308 726 357 720 333 726 b 207 684 272 726 239 711 b 60 455 135 622 60 560 l 10 455 b -23 448 -1 455 -13 454 b -102 372 -55 426 -76 397 b -109 357 -108 367 -109 361 b -95 347 -109 353 -105 348 b -63 346 -84 346 -73 346 b 0 344 -43 344 -22 344 l 63 344 b 53 186 63 291 59 239 b 23 0 46 124 42 60 b -35 -60 10 -42 -6 -60 b -73 -52 -45 -60 -58 -58 b -91 -48 -79 -49 -85 -48 b -109 -53 -96 -48 -102 -49 b -199 -124 -143 -72 -168 -99 b -207 -137 -203 -128 -207 -132 b -194 -148 -207 -141 -203 -145 b -101 -166 -164 -160 -132 -168 z', + }, + dynamicRinforzando: { + x_min: -75, + x_max: 322.0960720195126, + y_min: -90, + y_max: 325, + ha: 415, + o: 'm 23 -130 b 40 -125 27 -130 33 -128 b 128 -9 81 -114 125 -53 b 145 200 132 62 141 130 b 148 238 147 212 148 225 b 308 321 184 291 245 321 b 363 314 325 321 344 318 b 377 310 369 312 373 310 b 384 311 380 310 382 310 b 464 415 410 317 464 389 b 446 433 465 429 455 429 b 390 445 428 441 409 445 b 305 429 361 445 334 438 b 167 346 252 413 202 393 b 153 325 163 338 158 333 b 148 438 154 363 151 399 b 121 468 147 456 134 468 b 101 458 115 468 108 465 b -63 310 46 409 -16 367 b -108 240 -78 289 -98 271 b 32 330 -50 256 -13 297 b 37 304 37 320 37 312 l 37 292 b 10 -101 27 161 20 30 b 23 -130 9 -120 12 -130 z', + }, + dynamicSforzando: { + x_min: 0, + x_max: 296, + y_min: 0, + y_max: 379, + ha: 379, + o: 'm 151 0 b 174 1 160 0 166 0 b 392 158 272 14 346 71 b 405 207 400 174 405 190 b 359 287 405 236 389 265 b 261 325 328 308 294 315 b 168 413 216 340 181 366 b 166 426 167 418 166 423 b 176 438 166 432 167 436 b 199 441 183 441 190 441 b 310 393 238 441 295 422 b 334 370 317 376 325 370 b 363 386 343 370 353 379 b 422 445 386 402 408 420 b 426 458 425 449 426 454 b 422 469 426 462 425 465 b 274 546 395 518 333 546 b 161 503 232 546 190 531 b 86 405 132 472 108 439 b 71 347 75 387 71 367 b 112 256 71 312 85 279 b 209 215 141 232 176 226 b 284 168 238 206 266 197 b 300 131 291 157 300 144 b 298 120 300 127 298 122 b 278 107 294 109 285 108 b 262 108 271 107 266 108 l 259 108 b 114 157 200 107 156 125 b 96 181 104 163 96 170 l 96 184 b 102 202 96 190 102 196 b 96 209 102 204 101 207 b 63 194 82 215 72 204 b 7 109 42 168 26 138 b 0 86 3 101 0 94 b 13 60 0 78 4 68 b 151 0 53 23 101 0 z', + }, + dynamicZ: { + x_min: -42.73880183193087, + x_max: 331, + y_min: 0, + y_max: 328, + ha: 328, + o: 'm -45 0 b -6 16 -32 0 -17 10 b 3 20 -3 16 0 19 b 144 60 49 48 96 60 b 284 22 190 60 238 46 b 348 4 305 10 327 4 b 461 75 393 4 435 30 b 468 91 464 81 467 86 b 456 104 468 95 465 99 b 287 173 402 131 348 167 b 239 176 271 174 255 176 b 168 174 217 176 194 174 b 367 340 236 236 298 294 b 459 423 402 363 432 392 b 477 454 467 431 475 442 b 474 462 477 456 475 459 b 454 472 469 469 462 472 b 432 468 446 472 439 469 b 356 448 406 461 380 455 b 210 422 307 433 258 422 b 109 442 177 422 144 428 b 94 445 104 444 99 445 b 69 433 85 445 76 442 b 27 390 56 419 39 406 b -9 343 16 373 -17 357 b 63 311 3 320 36 314 l 78 311 b 132 307 95 308 114 307 b 240 314 168 307 203 311 l 193 271 b -37 50 117 196 19 145 b -59 7 -46 36 -69 20 b -45 0 -55 3 -50 0 z', + }, + ornamentTrill: { + x_min: 1, + x_max: 551, + y_min: -18, + y_max: 539, + ha: 557, + o: 'm 321 612 b 190 602 278 605 235 605 l 190 638 b 187 693 190 652 190 667 b 161 776 184 717 193 776 b 137 747 150 776 137 766 b 130 654 135 716 131 685 l 130 596 l 52 588 b 4 539 23 585 7 570 b 1 477 3 530 1 500 b 3 448 1 461 3 448 l 3 452 b 53 432 6 436 23 432 b 134 435 75 432 102 433 b 151 117 138 328 147 223 b 170 13 153 82 157 46 b 209 -26 179 -10 193 -26 b 222 -22 213 -26 217 -24 b 269 -17 233 -16 253 -27 b 343 135 325 19 346 66 b 343 158 343 147 344 147 b 323 192 341 171 337 187 b 291 176 311 194 300 184 l 264 148 b 229 131 261 145 238 131 b 212 170 209 131 213 154 b 194 438 203 259 199 348 l 272 442 b 284 452 276 441 279 441 b 305 462 287 461 295 462 l 312 462 b 346 477 325 462 340 464 b 366 560 357 503 366 531 b 321 612 366 598 356 618 z m 759 588 b 711 560 749 592 733 570 b 588 500 671 541 631 521 b 583 533 586 514 586 524 b 560 576 577 549 577 572 b 517 550 541 582 528 564 b 416 423 482 508 452 462 b 382 353 392 397 384 370 b 387 305 380 341 386 318 b 392 275 389 295 392 285 b 409 243 393 262 393 243 b 431 262 419 243 425 255 b 521 373 459 298 488 333 b 523 354 521 366 523 360 b 520 337 523 346 521 340 b 508 295 513 323 508 310 b 530 102 508 279 524 122 b 549 66 533 88 530 66 b 577 99 563 66 572 84 b 580 131 580 109 580 121 l 580 302 b 600 347 580 318 582 337 b 701 392 632 364 665 384 b 793 518 785 409 793 435 b 759 588 793 559 785 576 z', + }, + ornamentTurn: { + x_min: 0, + x_max: 574, + y_min: 0, + y_max: 312, + ha: 312, + o: 'm 651 0 b 816 132 727 0 796 46 b 827 223 822 163 827 193 b 808 340 827 262 821 301 b 665 449 785 408 729 449 b 636 446 655 449 647 448 b 589 384 600 441 586 422 l 602 300 b 611 285 603 291 605 285 b 621 288 613 285 616 287 b 655 295 632 294 644 295 b 711 284 674 295 693 289 b 773 209 740 275 773 232 b 697 156 773 184 734 160 b 664 154 685 154 675 154 b 579 168 635 154 608 158 b 455 242 533 186 495 213 b 261 400 387 291 331 354 b 160 432 225 422 190 432 b 20 328 98 432 49 392 b 0 229 6 295 0 262 b 30 71 0 176 14 122 b 144 3 43 29 96 3 b 168 6 153 3 160 4 b 248 122 233 20 248 39 b 246 147 248 124 248 135 b 226 177 243 164 239 177 b 206 170 220 177 215 174 b 144 154 186 158 166 154 b 79 170 122 154 101 160 b 53 202 62 179 53 189 b 60 228 53 209 55 217 b 161 281 81 261 120 281 b 183 279 168 281 176 281 b 325 190 243 269 284 229 b 572 16 402 124 475 53 b 651 0 598 6 625 0 z', + }, + ornamentTurnSlash: { + x_min: 0, + x_max: 574, + y_min: -106, + y_max: 405, + ha: 511, + o: 'm 441 -153 b 456 -60 455 -118 456 -89 b 455 81 455 -14 455 33 b 572 14 491 55 530 30 b 651 -1 598 4 625 -1 b 816 131 727 -1 796 45 b 827 222 822 161 827 192 b 808 338 827 261 821 300 b 665 448 785 406 729 448 b 636 445 655 448 647 446 b 589 383 600 439 586 420 l 602 298 b 611 284 603 289 605 284 b 621 287 613 284 616 285 b 655 294 632 292 644 294 b 711 282 674 294 693 288 b 773 207 740 274 773 230 b 697 154 773 183 734 158 b 664 153 685 153 675 153 b 579 167 635 153 608 157 b 455 240 533 183 495 212 b 454 242 455 240 455 242 l 454 337 b 452 488 454 386 452 439 b 433 570 452 517 451 546 b 425 583 431 575 431 583 l 422 583 b 403 566 415 582 408 573 b 402 546 400 560 402 553 l 397 287 b 261 399 353 325 310 366 b 160 431 225 420 190 431 b 20 327 98 431 48 390 b 0 228 6 294 0 261 b 30 69 0 174 14 121 b 144 1 43 27 96 1 b 168 4 153 1 160 3 b 248 121 233 19 248 37 b 246 145 248 122 248 134 b 226 176 243 163 239 176 b 206 168 220 176 215 173 b 144 153 186 157 166 153 b 79 168 122 153 101 158 b 53 200 62 177 53 187 b 60 226 53 207 55 216 b 161 279 79 259 120 279 b 183 278 168 279 176 279 b 325 189 243 266 282 226 b 395 130 348 168 372 148 b 393 71 393 109 393 89 b 441 -153 390 -6 402 -78 z', + }, + ornamentMordent: { + x_min: 0, + x_max: 700, + y_min: 0, + y_max: 497, + ha: 497, + o: 'm 513 0 b 528 39 526 14 527 27 b 531 72 531 50 531 60 b 528 138 531 94 528 117 l 528 347 b 552 359 537 354 544 359 b 579 338 560 359 569 353 b 674 217 609 297 639 255 b 719 190 690 200 704 190 b 759 215 732 190 744 197 b 940 395 815 279 877 337 b 1001 490 968 422 986 455 b 1008 513 1004 495 1008 505 b 1002 524 1008 517 1007 521 b 968 516 994 530 978 524 b 960 508 965 513 963 510 b 798 356 900 464 848 410 b 778 341 791 347 783 341 b 757 354 772 341 765 346 b 661 475 720 392 690 432 b 611 517 644 504 629 517 b 563 498 598 517 583 511 b 527 471 550 490 539 481 l 527 570 b 492 716 526 619 523 671 b 472 677 480 704 472 694 b 465 399 474 585 468 491 b 439 366 456 387 448 376 b 384 320 415 336 399 320 b 330 367 369 320 354 336 b 325 376 328 369 327 373 b 226 490 291 413 265 456 b 189 505 213 500 202 505 b 157 491 177 505 167 500 b 0 229 75 420 0 346 b 1 202 0 220 0 212 b 22 215 12 203 16 209 b 124 327 55 252 89 289 b 147 343 132 337 140 343 b 171 323 156 343 164 336 b 266 197 196 276 232 236 b 337 157 291 170 314 157 b 410 207 361 157 386 174 b 461 274 428 229 444 252 b 462 166 461 238 461 202 b 513 0 465 108 487 55 z', + }, + ornamentShortTrill: { + x_min: 0, + x_max: 747, + y_min: 0, + y_max: 243, + ha: 243, + o: 'm 379 0 b 428 14 395 0 410 4 b 474 56 445 26 461 39 b 552 157 500 89 526 122 b 566 168 556 163 560 168 b 575 157 569 168 572 166 b 664 36 592 107 628 72 b 733 1 685 13 710 1 b 802 35 757 1 780 13 b 1007 249 871 105 940 177 b 1067 324 1028 272 1054 295 b 1076 340 1068 330 1076 334 b 1073 346 1076 341 1076 343 b 1057 350 1068 348 1063 350 b 1047 347 1053 350 1050 350 b 1001 310 1031 336 1015 324 l 857 157 b 844 143 852 153 848 143 b 835 150 841 143 838 144 b 757 242 815 186 780 209 b 685 298 739 268 713 284 b 641 310 670 305 655 310 b 590 288 625 310 608 304 b 497 179 554 256 527 215 b 480 164 490 170 485 164 b 462 179 474 164 469 168 b 372 295 436 220 405 258 b 278 344 346 324 312 344 b 199 310 252 344 226 334 b 92 196 161 274 128 233 b 0 24 46 148 23 89 b 42 48 22 27 32 37 b 156 168 84 85 114 132 b 196 192 174 184 186 192 b 228 158 206 192 215 181 b 312 36 252 114 282 75 b 379 0 331 12 354 0 z', + }, + ornamentTremblement: { + x_min: 0, + x_max: 982.17691453624, + y_min: 0, + y_max: 224, + ha: 224, + o: 'm 0 0 b 63 36 30 12 48 23 b 157 124 94 66 125 94 b 177 135 164 131 170 135 b 196 122 183 135 189 131 b 268 40 217 94 245 68 b 323 6 288 16 304 6 b 369 20 336 6 350 10 b 412 53 384 29 399 40 b 501 145 442 84 472 114 b 523 158 508 154 516 158 b 543 145 528 158 536 154 b 641 45 576 112 608 78 b 698 17 658 27 677 17 b 729 23 708 17 719 20 b 804 65 756 32 780 46 b 904 154 837 95 871 124 b 920 163 910 160 916 163 b 936 153 924 163 930 160 b 1024 60 965 121 996 92 b 1112 13 1053 29 1080 13 b 1184 39 1135 13 1158 22 b 1359 194 1248 84 1305 138 b 1413 301 1388 223 1403 261 b 1404 323 1417 315 1413 323 b 1391 320 1400 323 1395 321 b 1344 294 1375 314 1358 307 b 1224 186 1305 258 1269 216 b 1194 173 1212 179 1202 173 b 1165 193 1184 173 1175 179 b 1096 271 1145 222 1122 248 b 1001 318 1061 302 1031 318 b 903 268 969 318 937 301 b 806 186 871 239 841 210 b 782 174 796 179 789 174 b 756 193 773 174 765 180 b 652 291 729 232 693 266 b 596 308 634 302 615 308 b 530 278 573 308 552 298 l 415 168 b 393 157 408 161 400 157 b 373 171 387 157 380 161 b 305 245 353 197 330 222 b 248 276 285 266 266 278 b 189 245 229 276 210 266 b 81 144 156 209 120 174 b 0 0 33 109 26 56 z', + }, + ornamentPrecompAppoggTrill: { + x_min: -0.11067192132025548, + x_max: 1066, + y_min: -50, + y_max: 533.1706452421108, + ha: 583.1706452421108, + o: 'm 187 -46 b 213 -14 197 -37 204 -26 b 285 151 251 36 266 94 b 304 189 294 177 297 189 b 337 168 311 189 320 181 b 458 33 386 131 415 76 b 495 12 472 19 484 12 b 531 40 508 12 518 22 b 580 168 557 79 569 124 b 622 235 592 213 603 235 b 683 194 636 235 655 222 b 838 26 737 140 791 86 b 919 -33 860 -1 881 -39 b 984 53 960 -27 971 19 b 1022 156 998 86 1008 122 b 1054 190 1032 179 1041 190 b 1089 167 1063 190 1074 183 b 1208 32 1129 122 1171 78 b 1244 10 1221 17 1231 10 b 1273 22 1253 10 1263 14 b 1496 206 1352 78 1427 137 b 1535 310 1526 236 1535 272 b 1531 359 1535 325 1534 343 b 1496 343 1515 360 1506 351 l 1309 192 b 1269 167 1289 176 1279 167 b 1234 199 1260 167 1251 177 b 1122 324 1200 243 1168 289 b 1074 344 1106 337 1089 344 b 1014 301 1051 344 1030 328 b 952 144 985 252 971 197 b 933 121 946 128 940 121 b 910 137 927 121 920 125 b 850 210 888 161 870 186 b 687 369 799 266 750 325 b 631 390 665 383 647 390 b 567 327 602 390 580 369 b 527 199 554 284 543 242 b 508 168 520 179 514 168 b 482 192 503 168 495 177 b 353 328 444 240 405 292 b 312 343 338 338 324 343 b 266 297 292 343 276 327 b 204 125 248 239 232 180 b 143 79 193 102 173 79 b 92 122 117 79 105 102 b 81 154 86 131 84 143 b 48 423 59 242 50 333 b 45 544 46 464 45 504 b 53 730 45 606 48 668 b 40 768 55 744 52 766 b 13 730 19 770 14 747 b 0 514 7 658 -1 586 b 26 122 3 383 6 252 b 75 -36 35 66 40 10 b 134 -72 92 -59 112 -72 b 187 -46 151 -72 170 -63 z', + }, + ornamentPrecompSlideTrillDAnglebert: { + x_min: 0, + x_max: 1088, + y_min: -380, + y_max: 252, + ha: 632, + o: 'm 560 -539 b 439 -481 527 -497 484 -485 b 354 -461 409 -478 380 -477 b 131 -154 236 -389 161 -285 b 124 -98 127 -135 124 -117 b 196 55 124 -40 148 10 b 308 99 230 86 268 99 b 399 81 337 99 367 92 b 514 22 441 66 477 43 b 619 -30 567 -9 590 -30 b 719 17 642 -30 670 -16 b 861 131 769 52 818 88 b 899 150 874 144 887 150 b 936 117 913 150 926 138 b 965 43 948 94 956 68 b 1007 -1 973 24 978 -1 b 1048 30 1025 -1 1037 16 b 1070 65 1057 40 1064 52 b 1110 148 1084 92 1096 121 b 1145 190 1120 164 1120 190 b 1191 153 1169 192 1179 168 b 1256 29 1218 115 1231 68 b 1292 1 1267 10 1277 1 b 1320 10 1300 1 1309 4 b 1369 48 1339 19 1355 33 b 1515 196 1418 96 1464 148 b 1567 343 1558 238 1567 287 b 1555 363 1565 357 1562 363 b 1539 356 1551 363 1547 360 b 1433 268 1502 330 1466 301 b 1335 171 1401 236 1374 199 b 1310 163 1325 166 1318 163 b 1286 183 1302 163 1293 168 b 1218 311 1264 226 1247 272 b 1164 351 1200 337 1182 351 b 1110 308 1146 351 1128 337 b 1031 176 1084 265 1058 219 b 1015 161 1025 166 1021 161 b 999 179 1009 161 1005 167 b 955 279 985 213 973 248 b 913 307 943 300 930 307 b 887 302 904 307 896 305 b 852 281 874 298 863 291 b 693 167 804 236 747 204 b 612 140 667 150 639 140 b 549 157 592 140 570 145 b 403 220 503 181 452 202 b 271 248 360 236 315 248 b 179 229 239 248 209 242 b 0 -29 65 180 0 85 b 9 -104 0 -53 3 -78 b 397 -526 56 -317 183 -464 b 505 -547 432 -536 468 -547 b 560 -539 524 -547 541 -544 z', + }, + ornamentPrecompSlideTrillBach: { + x_min: 0, + x_max: 1185, + y_min: -380, + y_max: 465, + ha: 845, + o: 'm 624 -544 b 642 -528 638 -543 642 -537 b 639 -514 642 -524 642 -520 b 590 -444 629 -487 609 -467 b 523 -413 573 -422 553 -410 b 498 -415 514 -415 507 -415 b 399 -389 464 -415 431 -405 b 89 -157 281 -330 176 -255 b 72 -117 78 -144 72 -131 b 73 -101 72 -111 72 -107 b 187 186 91 3 147 91 b 246 230 200 216 222 230 b 300 209 262 230 281 223 b 456 48 359 163 403 101 b 540 -10 494 10 518 -10 b 625 59 566 -10 589 13 b 690 148 648 88 668 118 b 711 167 697 160 704 167 b 733 153 719 167 724 163 b 844 14 769 105 808 60 b 903 -42 873 -23 886 -42 b 973 -1 919 -42 937 -27 b 1008 33 986 7 996 20 b 1048 81 1021 48 1035 65 b 1050 37 1048 66 1050 52 b 1047 -24 1050 17 1048 -3 b 1038 -275 1038 -108 1040 -192 l 1037 -289 b 1045 -302 1037 -295 1038 -301 b 1068 -284 1056 -304 1064 -292 b 1084 -242 1076 -271 1081 -256 b 1099 -109 1096 -199 1099 -154 b 1106 158 1099 -19 1106 71 b 1128 187 1113 167 1120 177 b 1168 223 1143 212 1155 223 b 1210 193 1179 223 1191 213 b 1220 183 1214 190 1215 186 b 1329 36 1261 138 1292 84 b 1374 7 1345 16 1358 7 b 1411 20 1384 7 1395 12 b 1479 84 1437 37 1459 59 b 1610 235 1521 135 1564 186 b 1706 403 1655 282 1695 334 b 1614 346 1663 400 1637 373 b 1464 170 1564 287 1515 228 b 1440 150 1453 156 1447 150 b 1414 173 1433 150 1426 158 b 1283 336 1371 228 1333 288 b 1220 366 1261 356 1240 366 b 1148 318 1194 366 1169 350 b 1103 255 1133 297 1119 275 b 1097 301 1102 271 1100 285 b 1099 334 1099 312 1099 324 b 1092 428 1099 367 1094 397 b 1071 647 1087 501 1079 575 b 1058 670 1071 657 1071 670 b 1035 648 1047 670 1038 661 b 1018 516 1024 605 1015 560 b 1041 203 1025 412 1037 307 b 1043 180 1041 196 1043 187 b 992 127 1027 161 1009 143 b 965 111 981 117 972 111 b 936 132 955 111 946 120 b 829 268 900 179 867 225 b 760 317 801 301 780 317 b 691 258 739 317 719 297 b 605 147 664 219 641 177 b 589 138 599 141 593 138 b 572 148 583 138 579 141 b 415 317 520 206 467 261 b 327 372 390 343 366 366 b 300 373 317 373 308 373 b 154 295 239 373 190 348 b 55 138 120 243 85 192 b 0 -53 22 79 0 13 b 160 -317 0 -156 49 -252 b 209 -354 177 -327 192 -343 b 510 -531 305 -419 397 -495 b 593 -547 537 -540 564 -547 b 624 -544 603 -547 613 -546 z', + }, + ornamentPrecompTrillSuffixDandrieu: { + x_min: 0, + x_max: 1003, + y_min: -20, + y_max: 521, + ha: 541, + o: 'm 791 -16 b 844 33 812 -3 829 14 b 981 271 900 107 937 190 b 994 288 984 278 985 288 b 1009 269 1004 288 1007 278 b 1077 112 1034 217 1051 163 b 1158 43 1103 62 1129 43 b 1231 69 1179 43 1204 55 b 1348 189 1280 98 1315 143 b 1444 451 1407 271 1444 357 b 1431 547 1444 482 1440 514 b 1188 750 1401 665 1299 750 b 1158 747 1178 750 1168 749 b 1079 684 1119 742 1089 727 b 1063 632 1076 665 1071 648 b 1056 609 1058 622 1056 615 b 1071 599 1056 602 1060 599 b 1086 600 1076 599 1080 600 b 1130 605 1102 603 1116 605 b 1244 569 1171 605 1210 595 b 1349 346 1322 511 1349 433 b 1348 312 1349 334 1349 324 b 1289 197 1345 266 1325 228 b 1238 174 1270 181 1253 174 b 1188 215 1220 174 1202 187 b 1145 308 1172 245 1159 276 b 1096 413 1129 343 1120 382 b 1053 438 1084 431 1068 438 b 1011 413 1038 438 1022 431 b 955 324 989 384 971 354 b 850 127 920 258 886 192 b 838 112 847 121 842 112 b 824 128 828 109 825 121 b 802 193 815 150 809 171 b 730 400 779 264 766 337 b 688 431 719 420 703 431 b 647 403 674 431 660 422 b 606 338 632 383 619 361 b 513 167 575 282 546 223 b 480 122 503 150 498 122 b 452 171 459 122 459 153 b 420 255 442 199 432 228 b 337 408 399 308 380 364 b 276 436 317 428 297 436 b 215 397 253 436 230 423 b 23 72 148 289 81 184 b 0 29 17 59 0 40 b 7 17 0 23 1 20 b 59 58 26 7 46 39 b 190 276 111 127 143 206 b 216 301 202 292 207 301 b 245 279 223 301 232 294 b 311 166 278 248 292 206 b 367 16 331 117 346 65 b 402 -19 377 -7 387 -19 b 438 -4 412 -19 423 -13 b 518 88 474 17 495 55 b 628 284 562 150 592 216 b 657 223 648 266 651 243 b 717 13 677 154 696 84 b 755 -29 726 -16 737 -29 b 791 -16 765 -29 776 -24 z', + }, + ornamentPrecompDoubleCadenceUpperPrefix: { + x_min: 0, + x_max: 1246, + y_min: -30, + y_max: 296.0302860502196, + ha: 326.0302860502196, + o: 'm 360 -43 b 559 59 445 -43 503 7 b 698 236 615 111 652 179 b 714 248 704 243 710 248 b 727 235 719 248 721 243 l 848 42 b 883 12 860 22 870 12 b 917 32 891 12 903 19 b 946 62 927 42 939 50 b 1037 192 972 108 1009 147 b 1057 210 1044 204 1051 210 b 1076 190 1063 210 1068 203 l 1176 12 b 1215 -19 1188 -9 1201 -19 b 1250 -6 1225 -19 1237 -14 b 1284 27 1264 3 1274 16 b 1380 190 1323 78 1351 135 b 1395 210 1384 197 1385 210 b 1413 190 1405 210 1410 197 b 1508 40 1436 134 1467 85 b 1564 3 1529 14 1547 3 b 1617 32 1580 3 1597 12 b 1767 238 1678 92 1719 167 b 1794 310 1781 259 1791 282 b 1752 294 1776 317 1764 304 b 1656 164 1711 258 1689 206 b 1629 144 1646 151 1637 144 b 1603 161 1620 144 1613 150 b 1502 315 1562 207 1525 258 b 1452 357 1490 344 1470 357 b 1397 320 1431 357 1411 344 b 1316 170 1368 271 1345 219 b 1280 127 1306 154 1303 127 b 1244 171 1256 127 1254 154 b 1145 337 1210 226 1179 282 b 1110 363 1135 354 1122 363 b 1070 338 1097 363 1084 354 b 1050 311 1063 330 1057 320 b 959 181 1017 271 992 223 b 939 167 950 173 945 167 b 920 184 933 167 927 173 b 818 343 887 238 852 291 b 759 395 795 377 778 395 b 701 344 742 395 724 377 b 698 338 700 341 700 340 b 544 154 652 272 605 207 b 412 98 501 117 458 98 b 304 130 377 98 341 108 b 95 373 204 187 144 275 b 58 426 85 393 82 428 b 19 366 26 426 26 389 b 0 307 13 346 0 327 b 4 287 0 300 1 294 b 174 36 49 194 91 102 b 360 -43 230 -9 289 -43 z', + }, + ornamentPrecompDoubleCadenceUpperPrefixTurn: { + x_min: 0, + x_max: 1226, + y_min: -237, + y_max: 436, + ha: 673, + o: 'm 1279 -341 b 1293 -252 1293 -307 1295 -278 b 1277 36 1287 -156 1282 -59 l 1273 118 b 1318 176 1289 137 1303 157 b 1349 203 1332 193 1342 203 b 1378 168 1359 203 1367 192 b 1456 35 1401 122 1428 78 b 1511 -12 1476 3 1493 -12 b 1568 23 1526 -12 1544 0 b 1597 53 1578 32 1588 42 b 1705 186 1629 101 1669 143 b 1761 284 1728 216 1751 246 b 1765 300 1763 288 1765 295 b 1763 307 1765 302 1765 305 b 1737 302 1754 311 1744 308 b 1718 287 1729 298 1725 292 b 1598 145 1673 245 1637 194 b 1578 130 1590 135 1584 130 b 1557 147 1571 130 1565 135 b 1447 321 1516 202 1488 265 b 1403 351 1433 341 1417 351 b 1358 323 1388 351 1372 341 b 1269 209 1329 285 1299 248 b 1254 521 1264 314 1259 418 b 1228 616 1253 554 1247 588 b 1218 628 1224 621 1223 628 l 1215 628 b 1201 613 1210 626 1202 619 b 1200 600 1200 609 1200 605 l 1200 586 b 1211 348 1204 507 1207 428 b 1217 166 1214 288 1215 226 b 1202 181 1212 168 1208 174 b 1094 334 1168 233 1130 284 b 1048 366 1079 356 1064 366 b 1004 331 1034 366 1018 354 b 904 154 969 275 930 220 b 873 202 887 171 880 187 b 778 356 845 256 819 311 b 737 379 763 372 750 379 b 698 353 724 379 711 370 l 621 232 b 415 114 570 154 495 114 b 302 138 377 114 340 121 b 73 400 187 192 117 284 b 55 420 69 415 62 420 b 42 410 50 420 45 416 b 0 292 23 373 0 334 b 4 262 0 282 1 272 b 168 39 32 168 92 99 b 359 -26 225 -6 292 -26 b 585 76 446 -26 530 10 b 668 202 616 115 641 160 b 693 228 680 219 687 228 b 720 203 700 228 707 219 b 801 63 752 160 775 111 b 844 7 812 42 818 7 b 910 66 877 6 894 39 b 923 94 916 75 919 85 b 995 219 945 137 968 179 b 1025 184 1009 210 1017 197 b 1119 56 1054 141 1087 98 b 1166 20 1138 32 1152 20 b 1215 50 1181 20 1195 30 b 1221 56 1217 52 1218 55 b 1228 -163 1223 -17 1225 -89 b 1279 -341 1231 -223 1251 -278 z', + }, + ornamentPrecompTrillLowerSuffix: { + x_min: 0, + x_max: 833, + y_min: -309, + y_max: 319, + ha: 628, + o: 'm 778 -444 b 801 -445 785 -444 793 -445 b 1037 -338 894 -445 969 -397 b 1200 37 1149 -240 1200 -109 b 1084 406 1200 171 1172 300 b 1024 444 1064 431 1043 444 b 960 390 999 444 978 426 b 841 163 923 314 886 236 b 812 128 832 150 827 128 b 786 167 796 130 793 153 b 660 418 744 251 716 341 b 599 459 639 445 619 459 b 541 410 577 459 557 444 b 439 197 507 340 474 269 b 422 179 435 190 435 179 b 338 393 392 251 379 328 b 275 439 320 423 298 439 b 212 396 253 439 230 425 b 71 219 170 333 128 268 b 0 45 17 173 16 112 b 68 98 32 62 50 78 b 194 264 112 150 153 209 b 230 292 209 282 219 292 b 264 261 240 292 251 282 b 274 242 268 255 269 248 b 346 46 304 179 325 112 b 376 10 351 32 354 10 b 412 35 392 10 403 22 b 452 107 429 56 441 82 b 541 291 481 168 511 230 b 556 307 547 302 552 307 b 573 295 562 307 567 302 b 624 217 595 272 611 246 b 721 1 657 145 685 72 b 755 -27 732 -19 742 -27 b 786 -16 765 -27 775 -24 b 857 73 819 7 840 39 b 952 256 887 134 920 194 b 978 289 963 279 969 289 b 1009 262 985 289 994 281 b 1030 235 1017 253 1024 245 b 1110 -4 1071 161 1099 81 b 1116 -68 1113 -26 1116 -48 b 1009 -243 1116 -140 1090 -200 b 848 -291 956 -272 901 -291 b 730 -261 809 -291 770 -282 b 696 -248 714 -252 703 -248 b 671 -284 684 -248 678 -258 l 662 -312 b 657 -357 658 -330 657 -344 b 744 -439 657 -403 683 -425 z', + }, + brassScoop: { + x_min: -0.4444444444444445, + x_max: 312, + y_min: -390, + y_max: 28, + ha: 418, + o: 'm 0 -562 b 393 -256 171 -504 307 -412 b 449 -39 431 -189 449 -115 b 448 -1 449 -26 449 -14 b 433 40 446 14 448 40 b 408 -3 410 40 412 14 b 396 -66 403 -23 402 -46 b 45 -397 346 -243 209 -337 b 0 -451 13 -409 1 -423 b 0 -562 -1 -485 0 -520 z', + }, + brassDoitMedium: { + x_min: -0.32815253965710617, + x_max: 476.21251177608565, + y_min: -50, + y_max: 333.1535583875376, + ha: 383.1535583875376, + o: 'm 16 -72 b 27 -71 19 -72 23 -72 b 215 -33 89 -56 153 -48 b 521 114 327 -7 435 35 b 685 432 615 199 691 295 b 670 480 684 449 688 475 b 642 441 654 482 648 456 b 403 183 599 321 513 240 b 79 89 301 130 192 105 b 0 -1 -12 76 0 76 b 0 -50 0 -17 1 -33 b 16 -72 0 -65 3 -72 z', + }, + brassFallLipShort: { + x_min: 0, + x_max: 298, + y_min: -344, + y_max: 65, + ha: 409, + o: 'm 396 -495 b 420 -461 412 -487 418 -474 b 429 -382 428 -435 429 -409 b 426 -330 429 -364 428 -347 b 285 -6 410 -209 356 -104 b 98 94 239 59 173 94 b 39 86 79 94 58 92 b 0 49 20 81 0 73 l 0 -52 b 10 -69 0 -62 1 -69 b 20 -68 13 -69 16 -69 b 88 -56 45 -59 66 -56 b 261 -160 156 -56 213 -95 b 396 -495 333 -259 382 -369 z', + }, + brassLiftMedium: { + x_min: 0, + x_max: 807, + y_min: 0, + y_max: 838, + ha: 838, + o: 'm 50 0 b 55 1 52 0 53 0 b 58 23 65 7 59 16 b 55 58 56 36 55 48 b 130 117 55 99 75 112 b 220 213 202 121 220 141 b 315 308 220 289 238 308 l 336 308 b 408 380 393 310 406 321 b 461 452 409 438 416 452 b 485 451 468 452 477 451 b 569 510 531 448 556 464 b 573 543 572 520 572 531 b 657 619 580 605 595 618 b 698 621 670 619 684 619 b 788 700 749 625 778 649 b 798 778 792 726 793 752 b 873 857 806 841 809 845 b 985 950 927 867 973 887 b 1084 1047 1002 1035 1004 1034 b 1162 1128 1133 1056 1162 1087 b 1146 1182 1162 1145 1158 1164 b 1125 1207 1140 1191 1136 1207 l 1122 1207 b 1110 1191 1113 1205 1110 1198 b 1112 1174 1110 1185 1112 1178 b 1048 1110 1109 1126 1096 1113 b 1028 1109 1043 1110 1035 1109 b 939 1022 969 1102 948 1081 b 845 922 929 949 917 936 b 746 812 773 909 753 886 b 744 780 744 802 744 791 b 635 681 737 700 717 683 b 524 583 553 680 536 665 b 439 510 514 520 503 510 b 357 431 377 510 360 492 l 357 406 b 314 364 356 379 343 364 b 238 361 288 364 264 364 b 173 300 202 357 180 334 b 167 245 168 281 167 262 b 105 174 166 192 157 180 b 75 171 95 173 85 171 b 6 112 30 166 14 153 b 0 73 1 98 0 85 b 37 10 0 45 13 26 b 50 0 42 7 46 0 z', + }, + brassFallRoughMedium: { + x_min: 0, + x_max: 791, + y_min: 0, + y_max: 819, + ha: 819, + o: 'm 1117 0 b 1139 101 1129 26 1139 71 b 1138 121 1139 109 1139 115 b 1084 193 1125 171 1110 193 b 1044 183 1073 193 1060 189 b 1022 177 1035 179 1028 177 b 1007 209 1012 177 1008 186 b 876 324 1004 292 959 330 b 799 317 850 321 825 320 b 759 354 772 314 755 320 b 760 373 760 360 760 366 b 759 392 760 379 760 384 b 681 477 753 451 730 477 b 654 474 672 477 664 475 b 606 467 638 471 622 468 b 586 465 599 465 592 465 b 564 481 570 465 564 469 b 569 505 564 487 566 495 b 575 553 572 521 575 537 b 572 585 575 564 573 575 b 481 665 560 657 539 668 b 412 665 458 664 435 665 b 382 690 392 667 382 672 b 383 700 382 693 383 696 b 386 773 387 724 387 749 b 297 858 382 828 351 857 b 229 861 274 858 251 858 b 190 897 207 863 193 871 b 163 1012 186 936 180 976 b 79 1084 145 1050 124 1084 b 66 1083 75 1084 71 1083 b 43 1096 49 1081 43 1087 b 48 1112 43 1100 45 1106 b 53 1130 52 1119 53 1125 b 39 1169 53 1145 45 1158 b 26 1179 36 1175 30 1179 b 16 1171 22 1179 17 1176 b 0 1103 10 1149 0 1126 b 9 1067 0 1092 1 1079 b 91 1021 26 1031 52 1018 b 145 978 122 1024 141 1011 b 156 913 147 956 151 935 b 291 795 170 831 210 795 b 346 768 337 795 346 796 b 344 743 346 760 344 753 b 343 716 344 733 343 724 b 455 600 343 651 390 602 b 505 605 471 599 490 605 b 528 598 514 605 523 603 b 536 579 534 592 536 586 b 524 523 536 562 526 541 b 523 505 524 517 523 511 b 621 405 523 442 560 405 b 639 406 626 405 634 406 b 677 413 652 408 664 410 b 701 416 687 415 696 416 b 721 392 716 416 721 410 b 720 373 721 386 720 380 b 831 255 714 301 759 252 b 897 261 854 255 876 261 b 926 262 909 261 919 262 b 969 197 963 262 965 252 b 971 184 969 193 971 189 b 1031 115 979 137 998 115 b 1071 122 1043 115 1056 118 b 1096 130 1079 125 1086 127 b 1087 59 1094 107 1087 82 b 1117 0 1087 37 1094 17 z', + }, + brassBend: { + x_min: 0, + x_max: 381, + y_min: 0, + y_max: 367, + ha: 367, + o: 'm 298 0 b 472 50 359 0 418 14 b 537 135 501 71 530 92 b 543 216 543 163 543 190 l 543 266 b 544 308 543 281 543 295 b 549 433 546 354 549 395 b 543 507 549 459 547 482 b 533 528 541 516 544 528 b 511 508 524 528 514 520 b 508 478 510 498 508 488 b 504 318 507 425 504 372 b 505 264 504 300 505 282 b 446 181 505 220 484 199 b 294 150 396 160 344 150 b 92 194 226 150 158 167 b 45 269 62 207 45 230 b 46 359 46 300 46 328 b 37 497 46 405 45 451 b 27 523 36 507 37 523 b 4 498 14 524 6 513 b 3 481 3 492 3 487 b 0 409 1 456 0 433 b 4 228 0 348 4 288 b 3 177 4 210 4 194 b 68 53 1 125 20 84 b 200 10 108 27 154 17 b 298 0 233 4 266 0 z', + }, + brassMuteClosed: { + x_min: 0, + x_max: 274, + y_min: 0, + y_max: 260, + ha: 260, + o: 'm 203 0 b 209 1 206 0 207 0 b 216 13 215 4 216 9 l 215 27 l 215 153 b 216 161 216 156 216 158 b 372 164 268 163 318 164 b 395 184 383 164 395 166 l 395 189 b 357 229 392 209 386 229 b 219 228 311 229 265 228 l 223 310 b 209 357 225 328 219 344 b 189 374 203 364 197 374 b 184 373 187 374 186 373 b 177 359 179 372 177 366 l 177 348 l 173 222 l 39 222 b 0 206 12 222 0 219 b 10 174 0 199 3 189 b 46 157 19 157 30 157 b 108 160 68 158 88 160 b 171 161 130 161 150 161 l 167 58 b 184 16 167 40 171 26 b 203 0 192 12 196 0 z', + }, + brassMuteOpen: { + x_min: 1, + x_max: 313.01193341111656, + y_min: 0, + y_max: 309, + ha: 309, + o: 'm 265 0 b 451 189 363 7 452 88 l 451 215 b 348 383 441 285 405 343 b 209 445 288 426 248 445 b 84 379 168 445 132 420 b 69 364 79 373 73 369 b 1 213 30 323 1 275 b 230 0 1 88 94 0 z m 210 62 b 128 73 181 62 154 66 b 40 171 71 91 42 125 b 52 226 40 187 45 206 b 197 374 79 295 130 344 b 228 382 207 380 217 382 b 300 361 252 382 276 370 b 374 308 328 350 353 331 b 410 223 397 284 410 253 b 393 163 410 202 405 181 b 210 62 354 91 288 63 z', + }, + brassFlip: { + x_min: 0, + x_max: 402, + y_min: 0, + y_max: 361, + ha: 361, + o: 'm 579 0 b 511 153 579 68 557 117 b 52 504 359 271 206 387 b 29 520 45 510 39 520 b 20 517 26 520 23 518 b 0 477 3 510 0 494 l 0 125 b 17 20 1 92 1 56 b 40 84 37 40 40 60 b 42 287 40 151 42 219 l 42 363 z', + }, + brassJazzTurn: { + x_min: 0, + x_max: 646, + y_min: 0, + y_max: 212, + ha: 212, + o: 'm 310 0 b 367 33 327 0 344 10 b 389 55 374 40 382 49 b 490 145 423 85 456 114 b 507 154 495 151 501 154 b 524 144 513 154 517 151 b 598 72 547 120 575 98 b 700 24 625 42 662 24 b 765 43 721 24 744 30 b 893 147 812 72 855 105 b 930 212 910 166 923 186 b 912 215 923 213 917 215 b 871 199 896 215 883 209 b 812 153 852 183 832 167 b 789 144 805 148 796 144 b 773 156 782 144 776 147 b 691 251 757 199 720 222 b 603 301 658 282 631 301 b 527 258 580 301 556 288 b 420 156 494 222 455 190 b 399 143 412 147 405 143 b 377 157 392 143 386 147 b 259 282 340 200 300 242 b 219 305 245 298 232 305 b 177 279 204 305 192 297 b 55 127 137 228 95 177 b 0 52 36 104 20 79 b 14 50 6 50 10 50 b 53 66 32 50 45 58 b 115 131 75 88 98 108 b 135 148 124 143 130 148 b 157 132 141 148 148 143 b 252 33 186 96 219 65 b 310 0 275 12 292 0 z', + }, + brassSmear: { + x_min: 0, + x_max: 334, + y_min: 0, + y_max: 151, + ha: 151, + o: 'm 321 0 b 475 125 390 0 436 43 b 481 143 478 131 481 137 b 475 154 481 147 480 151 b 449 148 468 158 458 154 b 395 132 432 137 413 132 b 343 140 377 132 360 137 b 229 194 301 148 266 173 b 168 217 206 209 186 217 b 109 192 148 217 130 209 b 0 26 59 148 32 89 b 59 63 32 29 45 48 b 98 84 72 78 84 84 b 130 73 108 84 118 81 b 213 26 157 58 183 37 b 321 0 255 9 289 0 z', + }, + stringsDownBow: { + x_min: 0, + x_max: 306, + y_min: -0.09607201951262866, + y_max: 366, + ha: 366.09607201951263, + o: 'm 405 0 b 425 17 413 -1 420 9 b 439 66 435 32 439 48 b 441 268 439 137 441 202 b 436 412 441 314 439 361 l 435 413 b 423 469 435 436 431 456 b 344 508 406 501 373 501 b 204 527 298 520 251 527 b 60 498 156 527 108 518 b 7 438 32 485 10 468 l 7 426 b 4 337 7 396 7 367 b 0 140 0 272 0 206 b 1 42 0 107 0 73 b 13 3 1 27 -3 4 b 40 39 29 3 35 24 b 42 53 42 43 40 49 b 49 141 48 84 49 112 b 48 215 49 167 48 192 b 49 252 48 228 48 240 l 49 312 b 130 343 72 331 99 340 b 206 347 156 346 180 347 b 372 314 262 347 318 338 l 390 307 l 390 245 b 390 138 392 212 390 176 b 397 23 390 101 392 62 b 405 0 399 14 393 1 z', + }, + stringsUpBow: { + x_min: 0, + x_max: 219.2842808242076, + y_min: 0, + y_max: 489, + ha: 489, + o: 'm 151 0 b 184 42 170 12 180 26 b 297 554 223 212 261 382 b 315 690 305 598 318 645 b 304 704 315 697 311 704 b 276 670 288 704 282 697 b 157 131 236 490 196 311 l 157 144 b 73 526 134 276 104 396 b 30 677 60 576 52 638 b 13 694 26 684 22 694 b 0 674 9 694 0 691 l 0 671 b 10 603 3 649 6 626 b 105 174 42 461 72 317 b 150 0 117 117 128 58 z', + }, + stringsHarmonic: { + x_min: 0, + x_max: 191, + y_min: 0, + y_max: 202, + ha: 202, + o: 'm 143 0 b 275 122 217 0 275 53 b 127 291 275 206 202 291 b 0 154 63 291 0 222 b 143 0 0 76 71 0 z m 122 68 b 43 105 89 66 59 75 b 39 124 40 111 39 117 b 79 199 39 148 56 180 b 145 226 101 216 122 226 b 199 210 163 226 180 220 b 235 150 223 196 235 173 b 203 92 235 128 225 107 b 122 68 181 76 150 68 z', + }, + pluckedSnapPizzicatoAbove: { + x_min: 0, + x_max: 201, + y_min: 0, + y_max: 325, + ha: 325, + o: 'm 171 0 b 289 99 240 0 289 45 b 258 183 289 130 274 156 b 174 269 236 217 203 240 l 174 408 b 174 429 174 415 176 422 b 131 468 168 451 153 468 b 117 451 120 468 117 461 b 118 429 117 444 118 435 b 115 307 117 389 115 347 b 0 166 59 295 0 223 b 171 0 0 85 89 0 z m 134 55 b 52 131 84 55 52 85 b 115 233 52 179 81 209 b 114 192 114 220 114 206 b 174 120 114 137 114 137 l 174 228 b 233 148 200 207 223 183 b 236 130 235 143 236 135 b 197 72 236 105 223 85 b 134 55 177 60 157 55 z', + }, + pluckedSnapPizzicatoBelow: { + x_min: 0, + x_max: 211, + y_min: 0, + y_max: 307, + ha: 307, + o: 'm 145 7 b 163 0 153 3 158 0 b 173 23 170 0 173 7 l 173 140 l 170 140 l 170 163 l 171 163 b 206 170 179 164 193 166 b 304 287 264 186 304 233 b 281 354 304 308 297 333 b 118 442 240 412 186 439 b 0 324 69 442 0 370 b 115 176 0 266 55 202 l 115 56 b 145 7 114 33 125 19 z m 115 220 b 62 256 92 223 73 230 b 53 292 56 269 53 281 b 78 344 53 311 60 328 b 168 384 105 372 135 384 b 213 376 183 384 199 382 b 253 321 239 366 253 346 b 246 291 253 311 251 301 b 170 226 230 256 203 236 l 170 258 b 148 305 171 278 163 292 b 128 315 143 310 135 315 l 124 315 b 115 301 117 314 115 308 z', + }, + pluckedLeftHandPizzicato: { + x_min: 0, + x_max: 271, + y_min: 0, + y_max: 284, + ha: 284, + o: 'm 213 0 b 223 14 222 0 223 7 b 222 35 223 22 222 29 l 222 176 b 373 170 272 174 323 170 b 390 180 382 170 390 171 l 390 184 b 347 232 386 207 382 232 b 219 238 307 233 266 235 l 219 364 b 171 409 219 395 193 409 b 156 393 160 409 156 402 b 158 370 156 384 158 376 l 158 240 b 16 239 115 240 66 239 b 0 226 7 239 0 238 l 0 223 b 50 179 1 203 29 179 b 158 177 86 179 122 179 l 158 63 b 161 29 158 52 158 40 b 213 0 166 -1 194 1 z', + }, + keyboardPedalPed: { + x_min: 0, + x_max: 944, + y_min: -13, + y_max: 550, + ha: 563, + o: 'm 22 0 b 109 78 53 0 105 46 l 144 333 b 163 376 147 347 140 372 b 364 465 238 390 301 426 b 454 599 416 497 454 540 b 452 618 454 605 454 612 b 320 770 442 694 396 747 b 248 779 295 778 272 779 b 193 778 229 779 212 779 b 160 780 181 778 167 775 b 137 792 153 789 144 791 b 109 789 128 792 118 789 b 7 719 59 789 48 737 b 23 708 16 714 20 708 b 36 710 29 710 33 710 b 53 684 52 710 53 698 l 53 674 b 43 386 53 577 53 482 b 20 164 36 312 30 238 b 1 30 14 120 7 75 b 0 19 0 26 0 22 b 22 0 0 9 4 0 z m 171 425 b 156 442 160 425 156 429 b 157 475 157 452 157 464 b 164 602 161 517 164 560 b 161 698 164 635 163 667 b 184 729 161 720 167 729 l 193 729 b 348 563 278 719 348 641 b 346 539 348 554 347 547 b 171 425 328 459 229 422 z m 979 6 b 1008 13 986 6 995 9 b 1081 101 1047 29 1079 46 b 1116 449 1087 217 1104 333 b 1143 654 1123 518 1133 586 b 1148 685 1145 664 1148 675 b 1140 704 1148 693 1146 700 b 1107 716 1130 713 1119 716 b 1056 706 1092 716 1073 710 b 1037 671 1035 703 1038 685 b 1004 439 1025 595 1014 517 b 986 419 1001 428 999 419 b 979 419 985 419 982 420 b 935 426 965 423 949 425 b 795 376 884 426 838 405 b 664 153 714 323 664 249 b 665 130 664 145 665 138 b 753 29 671 65 704 29 b 815 40 773 29 792 33 b 975 147 873 65 923 101 b 965 45 971 108 968 76 b 979 6 963 17 966 6 z m 393 -17 b 634 145 494 16 579 52 b 638 160 636 151 638 156 b 625 168 638 166 634 168 b 621 167 624 168 622 168 b 524 118 582 164 544 160 b 495 79 517 104 505 92 b 435 33 471 49 452 33 b 380 96 416 33 397 55 b 369 145 373 114 369 131 b 442 225 369 186 395 213 b 468 232 451 228 459 229 b 654 344 539 255 606 285 b 677 395 667 360 677 376 b 672 415 677 402 675 408 b 612 459 661 442 639 455 b 589 461 602 461 592 461 b 348 328 500 461 409 408 b 269 120 302 268 269 199 b 379 -19 269 45 318 -19 b 393 -17 383 -19 389 -19 z m 395 240 b 494 383 418 300 452 344 l 521 405 b 544 419 528 409 536 418 b 554 415 547 419 550 418 b 570 383 564 406 570 396 l 570 379 b 552 331 570 360 562 344 b 395 240 511 285 462 253 z m 827 89 b 792 111 815 89 804 96 b 766 204 775 131 766 158 b 845 360 772 256 799 314 b 871 372 854 369 863 372 b 897 366 880 372 888 369 b 978 279 942 353 963 320 b 976 259 981 272 981 265 b 858 104 942 203 909 147 b 827 89 847 94 837 89 z m 1282 12 b 1336 35 1303 14 1320 23 b 1359 71 1351 45 1359 58 b 1338 102 1359 82 1352 95 b 1254 130 1312 118 1284 130 b 1187 88 1223 130 1202 109 b 1178 65 1182 81 1178 72 b 1195 37 1178 55 1182 45 b 1282 12 1223 23 1253 19 z', + }, + keyboardPedalUp: { + x_min: 0, + x_max: 436.6015132318337, + y_min: 0, + y_max: 461, + ha: 461, + o: 'm 330 0 b 334 1 331 0 333 0 b 340 12 338 4 340 7 l 338 26 b 340 264 338 105 338 184 b 526 95 400 206 461 148 b 559 71 536 88 547 71 b 564 72 560 71 563 71 b 580 121 580 79 580 102 l 580 127 b 543 203 585 158 573 184 b 472 259 518 219 495 238 l 445 285 b 590 292 494 288 541 291 b 622 318 609 294 618 302 b 628 359 625 331 626 346 b 586 402 632 393 621 405 b 464 395 546 399 504 396 l 559 491 b 567 524 567 500 567 510 b 564 543 567 527 567 536 b 539 596 559 563 560 590 b 494 564 521 600 508 577 b 340 413 442 514 390 464 l 340 560 b 287 664 340 600 321 632 b 271 518 274 612 272 566 b 268 445 269 494 269 469 b 117 569 219 488 168 530 b 96 579 109 575 102 579 b 85 560 89 579 85 573 b 124 446 85 518 82 477 b 209 380 153 426 181 403 b 45 374 154 377 99 376 b 0 324 9 374 0 359 b 63 266 0 265 1 265 b 144 272 89 269 117 272 l 196 272 b 108 193 167 246 138 219 b 60 135 76 164 60 151 b 99 73 60 121 73 105 b 104 68 101 72 102 71 b 114 58 107 60 111 58 b 130 66 120 58 124 62 b 259 186 173 107 217 145 b 256 117 259 163 256 140 b 311 13 256 72 271 37 b 330 0 317 10 323 0 z', + }, + pictChokeCymbal: { + x_min: 1, + x_max: 147, + y_min: 0, + y_max: 242, + ha: 242, + o: 'm 79 4 b 207 158 153 32 192 88 b 212 200 210 173 212 187 b 143 336 212 253 187 298 b 98 348 131 344 115 348 b 4 295 60 348 16 327 b 1 276 1 289 1 282 b 9 249 1 266 3 258 b 121 183 35 206 72 183 b 156 186 132 183 144 183 b 26 53 134 115 91 73 b 7 39 13 49 7 45 b 19 20 7 33 12 27 b 59 0 30 9 43 0 b 79 4 65 0 72 1 z', + }, + wiggleArpeggiatoUp: { + x_min: -22, + x_max: 300, + y_min: 0, + y_max: 176, + ha: 176, + o: 'm 173 4 b 196 0 180 1 189 0 b 246 26 215 0 230 9 b 301 117 271 53 285 85 b 312 131 305 125 307 131 b 327 124 315 131 321 128 b 373 86 341 112 353 101 b 412 69 389 75 402 69 b 432 94 425 69 432 79 b 373 181 432 117 413 154 b 235 252 323 216 285 245 b 220 253 229 253 225 253 b 168 215 196 253 181 240 b 111 112 151 180 140 141 b 94 102 105 105 99 102 b 78 111 89 102 84 105 b 0 181 55 135 35 160 b -32 153 -20 194 -32 168 b 0 86 -32 124 -32 109 b 94 36 22 71 73 46 b 173 4 134 16 131 17 z', + }, + arpeggiatoUp: { + x_min: 0, + x_max: 262, + y_min: 0, + y_max: 1459, + ha: 1459, + o: 'm 190 0 b 160 63 187 29 170 45 b 145 108 150 81 145 95 b 183 163 145 128 157 145 b 300 246 222 190 262 216 b 347 318 333 272 347 295 b 301 393 347 341 331 364 b 258 413 289 403 272 408 b 145 449 220 425 183 436 b 117 464 135 452 120 452 b 140 491 115 477 128 484 b 294 593 192 526 243 557 b 330 647 318 611 330 626 b 314 693 330 660 324 675 b 262 736 302 714 285 729 b 170 763 230 744 200 753 b 122 783 153 768 125 768 b 160 831 120 804 143 818 b 288 922 202 861 246 890 b 333 999 318 945 333 972 b 266 1083 333 1032 310 1064 b 189 1115 240 1094 215 1103 b 122 1178 145 1133 122 1153 b 168 1250 122 1200 138 1223 l 180 1257 b 269 1333 210 1283 240 1306 b 305 1405 294 1356 305 1381 b 284 1469 305 1426 298 1447 b 228 1525 269 1492 251 1511 b 183 1600 197 1545 183 1571 b 190 1640 183 1613 184 1626 b 197 1670 193 1650 194 1660 b 272 1735 213 1719 230 1735 b 295 1734 279 1735 287 1735 b 323 1732 305 1732 314 1732 b 350 1731 333 1732 341 1732 b 377 1742 369 1729 377 1732 b 370 1761 377 1747 374 1754 l 301 1898 b 217 2066 274 1954 248 2012 b 186 2101 204 2089 196 2101 b 154 2069 177 2101 167 2091 b 12 1824 105 1987 59 1907 b 0 1787 4 1810 0 1797 b 59 1744 0 1761 20 1745 b 160 1738 92 1744 125 1740 b 145 1692 156 1721 151 1706 b 135 1633 138 1672 135 1652 b 184 1518 135 1591 151 1552 b 229 1475 199 1503 213 1488 b 259 1431 249 1456 259 1444 b 229 1388 259 1420 249 1407 b 151 1325 203 1365 177 1345 b 105 1279 134 1310 118 1296 b 73 1202 84 1251 73 1227 b 108 1123 73 1176 85 1152 b 255 1031 148 1077 199 1051 b 282 1014 274 1025 282 1021 b 262 991 282 1008 275 1001 b 151 914 226 963 189 939 b 79 851 125 896 99 877 b 63 809 69 837 63 824 b 79 769 63 796 68 783 b 202 697 111 729 154 710 b 266 670 225 690 266 688 b 210 622 266 648 232 635 b 82 534 167 593 120 570 b 55 491 63 518 55 505 b 79 448 55 478 63 465 b 255 361 127 395 192 380 b 288 343 269 359 288 357 b 266 312 288 331 275 320 b 144 223 229 278 184 253 b 85 134 104 193 85 166 b 118 53 85 111 96 85 b 190 0 135 29 160 14 z', + }, + arpeggiatoDown: { + x_min: 0, + x_max: 218, + y_min: 0, + y_max: 1440, + ha: 1440, + o: 'm 161 16 b 310 261 210 98 259 180 b 314 275 312 266 314 271 b 302 295 314 282 310 289 b 252 311 287 308 269 311 b 217 310 240 311 229 310 b 190 333 202 310 194 315 b 151 412 186 363 171 389 b 102 501 120 452 102 477 b 150 588 102 524 118 547 b 161 603 154 592 158 598 b 181 661 176 622 181 641 b 173 704 181 675 179 690 b 86 795 156 746 121 770 b 53 829 63 811 53 819 b 78 868 53 840 62 851 b 102 888 85 876 94 883 b 180 956 128 912 156 933 b 216 1028 204 979 216 1002 b 203 1081 216 1044 212 1061 b 115 1171 186 1123 148 1145 b 75 1221 88 1191 75 1207 b 114 1272 75 1237 88 1251 b 173 1308 132 1284 154 1296 b 226 1339 190 1318 209 1328 b 265 1405 253 1359 265 1380 b 258 1447 265 1418 264 1431 b 154 1541 242 1499 199 1521 b 109 1581 124 1555 109 1567 b 141 1627 109 1594 121 1608 b 204 1680 163 1646 184 1662 b 233 1742 223 1699 233 1719 b 226 1777 233 1752 230 1764 b 135 1862 210 1822 173 1840 b 104 1895 114 1875 104 1884 b 118 1930 104 1904 109 1914 b 192 2006 135 1961 161 1986 b 206 2029 203 2013 206 2022 b 192 2064 206 2040 197 2052 b 180 2074 187 2071 184 2074 b 156 2061 171 2074 163 2065 b 84 1983 125 2040 102 2013 b 65 1921 71 1961 65 1941 b 88 1853 65 1899 72 1876 b 171 1784 108 1820 138 1801 b 190 1764 184 1777 190 1770 b 174 1741 190 1757 184 1750 b 107 1683 153 1722 128 1704 b 68 1610 81 1659 68 1636 b 88 1548 68 1591 75 1571 b 177 1470 109 1512 141 1489 b 223 1431 209 1453 223 1443 b 179 1390 223 1420 209 1408 b 128 1361 163 1380 145 1371 b 71 1322 108 1348 88 1338 b 32 1253 45 1300 32 1277 b 48 1198 32 1236 37 1218 b 147 1090 71 1152 108 1120 b 174 1057 166 1076 174 1067 b 153 1022 174 1047 167 1037 b 109 982 140 1008 124 995 b 37 919 85 962 59 942 b 9 860 17 899 9 880 b 26 806 9 844 14 827 b 120 717 50 769 84 740 b 138 691 132 708 138 700 b 130 668 138 684 135 677 b 92 618 118 651 105 635 b 59 531 71 589 59 560 b 84 455 59 507 68 481 b 132 386 98 431 115 408 b 148 341 144 372 148 357 b 144 317 148 333 147 324 b 121 305 140 307 131 305 l 98 305 b 82 304 94 304 88 304 l 32 304 b 0 292 10 304 0 302 b 12 266 0 287 4 279 b 60 164 32 233 46 199 b 127 20 84 117 105 68 b 144 0 132 9 137 0 b 161 16 150 0 154 4 z', + }, + repeat1Bar: { + x_min: 0, + x_max: 599.1057280164835, + y_min: -250, + y_max: 175, + ha: 425, + o: 'm 216 98 b 255 75 236 84 246 75 b 291 104 265 75 274 85 b 323 147 304 117 327 125 b 289 215 323 168 314 184 b 238 252 269 239 253 252 b 187 222 222 252 207 242 b 173 206 183 216 177 212 b 157 170 163 194 157 183 b 174 138 157 160 161 150 b 216 98 189 127 200 109 z m 76 -334 b 181 -285 111 -315 148 -302 b 831 52 396 -168 613 -58 b 863 114 855 63 864 82 b 828 202 855 140 855 176 b 808 213 821 209 815 213 b 793 209 804 213 799 212 l 422 19 b 26 -179 291 -48 164 -124 b 0 -213 10 -186 0 -196 b 3 -232 0 -219 0 -225 b 52 -325 14 -265 37 -294 b 66 -337 55 -331 59 -337 b 76 -334 69 -337 72 -336 z m 769 -360 b 829 -264 779 -360 829 -284 b 769 -176 822 -232 799 -200 b 742 -163 760 -167 750 -163 b 716 -184 733 -163 723 -168 b 683 -228 708 -202 693 -213 b 672 -253 675 -236 672 -245 b 683 -281 672 -262 675 -271 b 752 -353 703 -308 732 -327 b 769 -360 756 -357 763 -360 z', + }, + repeat2Bars: { + x_min: 0.008571918423331715, + x_max: 775, + y_min: -246.92374029115243, + y_max: 362.82068246705313, + ha: 609.7444227582056, + o: 'm 909 412 b 873 351 906 384 893 367 b 436 50 729 249 585 147 l 91 -179 b 62 -174 76 -189 68 -183 b 12 -96 48 -147 24 -125 b 36 -16 -7 -53 -6 -43 b 220 104 96 24 158 65 b 819 507 425 232 624 369 b 881 495 852 530 861 528 b 909 412 899 469 900 439 z m 333 338 b 302 240 330 307 317 274 b 276 235 297 225 287 228 l 233 269 b 203 376 186 307 183 318 b 225 441 212 397 217 419 b 246 454 228 452 232 458 b 333 338 284 441 333 380 z m 1116 228 b 1067 158 1115 192 1092 174 b 910 59 1015 125 963 92 b 478 -240 762 -33 622 -140 b 311 -350 423 -279 366 -314 b 285 -344 298 -360 289 -356 b 239 -258 272 -314 251 -288 b 261 -196 228 -228 235 -210 b 517 -29 348 -144 436 -91 b 1030 321 681 98 861 202 b 1093 307 1060 343 1076 340 b 1116 228 1107 281 1109 252 z m 1070 -105 b 1020 -210 1057 -143 1038 -176 b 998 -210 1014 -219 1004 -215 l 924 -153 b 913 -88 899 -135 897 -112 b 949 -22 926 -66 939 -45 b 998 -7 960 6 976 9 b 1070 -105 1032 -32 1058 -63 z', + }, + repeat4Bars: { + x_min: 0, + x_max: 1374, + y_min: -304, + y_max: 304, + ha: 608, + o: 'm 78 -266 b 92 -258 82 -266 88 -264 b 114 -240 98 -251 107 -246 b 638 107 289 -125 467 -14 b 873 271 716 161 793 216 b 907 337 894 285 906 305 b 887 400 901 354 897 379 b 852 438 877 426 867 438 b 814 420 842 438 829 432 b 135 -33 592 262 366 111 b 12 -121 92 -60 48 -84 b 0 -144 4 -128 0 -135 b 4 -160 0 -148 1 -154 b 63 -255 17 -196 45 -223 b 78 -266 68 -262 72 -266 z m 291 148 b 325 223 302 148 308 170 b 333 256 328 235 330 246 b 264 363 330 305 298 336 b 242 373 255 369 248 373 b 220 347 232 373 225 364 b 202 288 216 327 213 305 b 190 252 193 275 190 262 b 222 200 190 232 202 215 b 291 148 264 170 279 148 z m 815 -367 b 829 -359 819 -367 824 -364 b 851 -343 835 -353 844 -347 b 1375 6 1027 -228 1205 -117 l 1610 170 b 1644 235 1632 184 1643 203 b 1626 300 1639 253 1634 276 b 1590 337 1614 325 1604 337 b 1551 320 1580 337 1567 330 b 873 -135 1329 161 1103 10 b 749 -222 829 -161 785 -184 b 737 -245 742 -230 737 -238 b 742 -261 737 -249 739 -255 b 802 -357 755 -297 782 -325 b 815 -367 805 -363 809 -367 z m 396 -360 b 408 -356 400 -360 403 -359 b 609 -223 471 -307 543 -269 b 896 -19 706 -156 795 -81 b 1164 154 985 37 1074 96 b 1214 223 1189 170 1211 187 b 1176 321 1204 253 1205 292 b 1159 330 1169 327 1165 330 b 1145 324 1155 330 1151 328 b 1048 258 1113 302 1081 278 b 357 -202 809 117 598 -65 b 333 -238 341 -212 333 -223 b 338 -262 333 -245 334 -253 b 384 -350 350 -294 372 -318 b 396 -360 386 -354 390 -360 z m 1162 -438 b 1174 -433 1166 -438 1169 -436 b 1374 -300 1237 -384 1309 -346 b 1660 -96 1470 -233 1561 -158 b 1930 76 1751 -39 1840 19 b 1979 147 1954 92 1977 109 b 1943 243 1968 177 1971 216 b 1924 253 1935 251 1930 253 b 1911 248 1920 253 1915 252 b 1814 181 1878 225 1848 202 b 1123 -279 1575 40 1364 -141 b 1099 -315 1106 -289 1099 -300 b 1103 -338 1099 -321 1100 -330 b 1149 -426 1115 -370 1138 -396 b 1162 -438 1151 -432 1156 -438 z m 1875 -295 b 1882 -291 1878 -295 1879 -294 b 1934 -189 1904 -258 1921 -223 b 1872 -96 1925 -147 1901 -120 b 1840 -78 1858 -84 1848 -78 b 1812 -109 1830 -78 1823 -88 l 1777 -173 b 1770 -199 1773 -181 1770 -190 b 1786 -230 1770 -210 1774 -220 b 1862 -289 1809 -253 1837 -269 b 1875 -295 1865 -292 1871 -295 z', + }, + repeatBarSlash: { + x_min: 0, + x_max: 630, + y_min: -225.19160170741762, + y_max: 265.12618221237005, + ha: 490.31778391978764, + o: 'm 78 -324 b 92 -314 82 -325 88 -321 b 114 -298 96 -307 107 -302 b 638 49 289 -183 467 -72 b 873 215 716 104 792 161 b 907 279 894 229 906 248 b 887 344 901 298 897 321 b 852 382 877 369 867 380 b 814 363 842 383 829 376 b 135 -91 603 192 364 55 b 12 -177 92 -118 45 -137 b 0 -202 4 -186 0 -192 b 4 -217 0 -206 1 -212 b 63 -312 17 -253 42 -284 b 78 -324 68 -318 72 -323 z', + }, + csymDiminished: { + x_min: 0, + x_max: 506, + y_min: -0.011036179317259481, + y_max: 500, + ha: 500.0110361793173, + o: 'm 397 0 b 729 265 576 -1 729 95 b 711 367 729 297 723 331 b 472 670 668 498 586 595 b 315 720 423 701 372 720 b 253 713 295 720 275 719 b 32 514 144 687 75 615 b 0 374 12 468 0 420 b 27 251 0 333 9 292 b 140 117 52 196 92 153 b 397 0 223 52 317 4 z m 340 95 b 132 314 233 84 122 216 b 324 589 145 438 200 539 b 415 611 360 603 389 611 b 544 505 469 611 505 576 b 590 392 564 471 583 432 b 596 343 593 374 596 359 b 340 95 596 210 485 96 z', + }, + csymHalfDiminished: { + x_min: -32, + x_max: 496, + y_min: -33, + y_max: 492, + ha: 525, + o: 'm -29 -48 b 0 -36 -19 -48 -9 -40 b 17 -20 7 -32 12 -24 b 134 94 56 19 95 56 b 372 0 207 43 282 0 b 455 13 397 0 426 4 b 677 258 556 45 671 141 b 678 289 677 268 678 278 b 593 539 678 380 654 467 b 592 541 593 540 592 540 l 684 632 b 713 678 700 647 711 665 b 714 691 714 684 714 688 b 707 704 714 698 711 701 b 691 708 701 707 696 708 b 660 691 680 708 670 701 l 552 585 b 478 634 530 606 507 624 b 361 684 438 648 397 661 b 301 703 341 697 320 703 b 226 677 275 703 251 693 b 27 449 140 618 72 543 b 0 324 9 410 -4 370 b 88 128 -1 243 30 177 b -30 -7 43 86 0 46 b -46 -33 -35 -16 -46 -24 b -42 -42 -46 -36 -45 -39 b -29 -48 -37 -46 -33 -48 z m 141 179 b 121 251 128 200 121 225 b 128 297 121 265 124 281 b 351 575 163 420 248 505 b 377 582 359 579 369 580 b 501 536 422 586 468 567 b 141 179 382 416 261 298 z m 281 105 b 179 137 240 105 206 117 b 210 168 189 147 200 157 l 537 487 b 547 455 541 477 544 467 b 556 370 552 426 556 397 b 429 154 556 274 503 207 b 281 105 384 122 336 105 z', + }, + csymAugmented: { + x_min: 0, + x_max: 530, + y_min: 0, + y_max: 539, + ha: 539, + o: 'm 380 0 b 393 14 384 4 390 9 b 397 46 397 24 397 36 l 397 333 b 736 327 511 331 624 330 b 763 343 755 327 763 333 b 755 361 763 348 760 354 b 635 431 726 402 688 431 l 390 431 l 390 485 b 386 606 392 526 386 566 b 392 664 386 625 387 645 b 395 690 393 672 395 681 b 376 753 395 711 389 734 b 357 776 372 762 369 776 b 350 775 354 776 353 776 b 327 740 337 769 327 759 b 327 621 328 700 327 661 b 330 438 328 559 328 498 l 29 438 b 4 431 20 438 7 442 b 0 413 3 425 0 419 b 7 399 0 408 1 403 b 131 338 45 369 85 340 b 331 334 199 336 265 334 b 333 163 333 276 333 220 b 366 13 333 109 348 63 b 380 0 367 7 374 4 z', + }, + csymMajorSeventh: { + x_min: 0, + x_max: 593.1050509327923, + y_min: 0, + y_max: 569, + ha: 569, + o: 'm 124 1 l 497 27 b 819 50 605 35 711 43 b 854 98 847 52 855 63 b 812 200 845 128 835 166 b 564 585 730 328 648 456 b 435 786 521 652 480 720 b 397 819 419 809 408 819 b 369 792 387 819 379 811 b 7 173 248 585 128 379 b 0 150 3 166 0 158 b 7 128 0 143 3 135 b 89 10 30 86 65 50 b 109 0 95 1 102 0 z m 163 147 b 153 153 158 147 156 148 b 164 179 147 163 158 170 b 426 644 251 334 338 488 b 442 660 432 655 436 660 b 458 645 446 660 452 655 b 727 220 547 503 636 361 b 736 202 732 213 736 206 b 714 190 736 196 730 192 b 179 148 537 177 359 163 b 163 147 174 150 168 147 z', + }, + csymMinor: { + x_min: 0, + x_max: 481.64484584675915, + y_min: 193, + y_max: 265.20435472429375, + ha: 72.20435472429375, + o: 'm 168 278 b 197 279 177 278 187 278 b 431 292 275 287 353 288 l 431 291 b 661 302 508 295 585 300 b 693 311 672 304 688 300 b 674 346 697 324 685 338 b 564 382 641 366 606 384 l 27 360 b 0 347 17 360 1 366 b 19 314 0 333 3 321 b 168 278 66 291 115 278 z', + }, + csymParensLeftTall: { + x_min: 0, + x_max: 185, + y_min: 0, + y_max: 1034, + ha: 1034, + o: 'm 215 0 b 226 17 223 1 223 10 b 229 37 229 24 229 32 b 220 81 229 52 225 66 b 167 203 206 124 181 160 b 86 616 124 338 89 474 b 82 765 85 665 82 716 b 91 886 82 805 84 845 b 245 1319 120 1038 171 1184 b 266 1397 259 1346 266 1371 b 259 1443 266 1411 264 1427 b 226 1489 253 1463 248 1489 b 193 1454 212 1489 203 1467 b 114 1292 158 1404 140 1346 b 0 806 40 1138 0 978 b 3 721 0 779 0 750 b 1 677 1 707 1 693 b 36 418 1 593 16 504 b 144 96 62 307 95 199 b 196 12 158 66 179 39 b 212 0 200 7 204 0 z', + }, + csymParensRightTall: { + x_min: -40, + x_max: 188.5411603861406, + y_min: 0.20204102886728756, + y_max: 1058, + ha: 1057.7979589711326, + o: 'm 30 1 b 63 14 42 -3 55 6 b 122 99 86 40 108 68 b 189 258 145 153 166 204 b 271 667 239 379 268 503 b 246 852 275 708 261 780 b 10 1495 197 1077 128 1295 b -14 1524 4 1505 1 1524 b -16 1522 -14 1524 -16 1524 b -46 1489 -33 1521 -43 1503 b -58 1417 -53 1464 -58 1440 b -36 1335 -58 1390 -52 1364 b 68 1138 0 1270 35 1204 b 163 883 108 1056 137 969 b 206 668 184 814 200 742 b 207 631 207 655 207 642 b 166 426 207 560 192 492 b 46 143 130 330 111 228 b 19 29 19 109 17 69 b 30 1 20 19 24 3 z', + }, + csymBracketLeftTall: { + x_min: 0, + x_max: 328, + y_min: 2, + y_max: 807, + ha: 805, + o: 'm 68 3 b 76 4 71 3 73 3 b 186 13 112 12 150 13 b 240 13 204 13 222 13 l 287 13 b 379 17 317 13 348 13 b 472 121 435 24 472 69 b 467 156 472 132 469 144 b 446 174 462 168 456 174 l 439 174 b 327 166 402 167 364 166 b 265 167 307 166 285 167 l 209 167 b 187 475 199 269 189 372 b 166 985 186 645 187 815 l 377 1002 b 415 1001 389 1002 402 1001 b 456 1027 432 1001 448 1005 b 472 1096 467 1048 472 1073 b 464 1146 472 1113 469 1130 b 439 1162 459 1161 452 1162 b 40 1129 305 1151 173 1139 b 1 1093 17 1128 1 1120 b 0 1009 0 1064 0 1037 b 13 975 0 991 3 981 b 30 670 23 873 30 772 b 29 608 30 649 29 628 l 29 563 b 56 88 29 405 49 246 b 53 22 55 66 55 43 b 68 3 53 12 56 3 z', + }, + csymBracketRightTall: { + x_min: 0.8519422934604696, + x_max: 306, + y_min: -0.17180889215212544, + y_max: 829.1037519824849, + ha: 829.2755608746371, + o: 'm 117 0 b 372 29 203 -3 287 20 l 373 29 b 406 32 383 30 395 30 b 436 60 428 33 432 43 b 441 109 439 76 441 92 b 433 200 441 140 436 170 b 409 696 422 366 409 530 b 416 887 409 763 416 831 b 415 920 416 899 415 910 l 415 1106 b 412 1135 415 1116 415 1126 l 412 1145 b 373 1189 413 1171 408 1192 b 321 1189 356 1189 338 1189 l 215 1189 l 215 1194 l 56 1194 b 6 1153 27 1195 10 1187 b 1 1064 3 1123 4 1093 b 22 1043 0 1050 6 1043 b 84 1044 42 1044 63 1044 b 264 1038 144 1044 203 1040 b 265 958 264 1011 265 985 b 262 845 265 920 264 883 b 259 710 259 801 259 755 b 279 243 259 554 271 399 b 285 170 281 219 284 194 b 95 151 222 161 158 156 b 29 81 27 147 27 147 l 29 73 b 105 0 33 0 33 0 z', + }, + csymParensLeftVeryTall: { + x_min: 0, + x_max: 116, + y_min: 0, + y_max: 934.1531437146923, + ha: 934.1531437146923, + o: 'm 128 0 b 147 17 137 0 144 9 b 167 102 160 45 167 73 b 158 154 167 120 164 137 b 117 307 141 204 130 256 b 63 698 84 435 71 567 b 62 788 62 729 62 757 b 69 916 62 829 63 873 b 109 1172 81 1001 94 1087 b 132 1320 118 1221 137 1269 b 124 1345 131 1329 134 1342 b 96 1332 114 1346 102 1341 b 71 1269 82 1313 75 1292 b 39 1104 59 1214 48 1159 b 0 742 19 988 0 871 b 10 559 3 688 6 624 b 58 226 16 446 33 336 b 112 20 73 157 94 89 b 128 0 115 13 118 0 z', + }, + csymParensRightVeryTall: { + x_min: -20, + x_max: 111.4332498248095, + y_min: -0.07657185734616112, + y_max: 1009, + ha: 1009.0765718573462, + o: 'm -3 0 b 20 22 9 -1 14 12 b 36 56 26 33 32 45 b 99 274 58 128 84 199 b 160 788 135 439 163 605 b 122 1181 164 912 145 1047 b 50 1431 108 1267 86 1351 b 36 1453 48 1439 46 1453 l 35 1453 l 30 1453 b 7 1423 17 1449 7 1440 b 27 1287 9 1377 10 1331 b 96 963 71 1184 85 1074 b 105 818 102 914 105 867 b 91 624 105 753 99 688 b -4 213 72 484 48 344 b -29 101 -19 174 -29 138 b -16 27 -29 76 -24 52 b -3 0 -13 17 -14 3 z', + }, + csymDiagonalArrangementSlash: { + x_min: -0.19862981551275186, + x_max: 990, + y_min: -26.946823529189132, + y_max: 1027.5514326488437, + ha: 1054.4982561780328, + o: 'm 14 -37 b 58 -9 35 -45 46 -22 b 392 333 170 105 279 217 l 765 711 b 1372 1329 968 916 1168 1125 b 1424 1439 1403 1359 1417 1397 b 1426 1457 1424 1444 1426 1450 b 1416 1477 1426 1466 1423 1475 b 1374 1462 1400 1485 1385 1473 b 1181 1269 1309 1397 1246 1331 b 736 831 1031 1122 884 979 b 356 452 609 704 485 576 b 32 132 246 347 143 236 b 0 50 7 109 1 84 b 6 9 -1 37 3 23 b 14 -37 10 -9 0 -32 z', + }, + accidentalNarrowReversedFlat: { + x_min: 0, + x_max: 208, + y_min: -231, + y_max: 449, + ha: 680, + o: 'm 272 -333 b 284 -320 278 -333 281 -328 b 300 -174 297 -272 300 -222 b 275 190 298 -52 279 68 b 268 445 272 275 268 360 l 268 490 b 264 612 269 530 265 572 b 236 647 264 632 252 645 l 235 647 b 217 618 220 647 220 628 b 207 526 210 588 207 556 b 210 432 207 494 210 464 b 216 268 213 377 215 323 l 216 230 l 215 232 b 154 256 194 240 174 251 b 111 264 138 261 124 264 b 3 153 50 264 10 223 b 0 94 0 132 0 114 b 194 -276 0 -63 68 -186 b 255 -323 215 -291 236 -307 b 272 -333 262 -330 268 -333 z m 233 -138 b 71 30 168 -92 105 -45 b 63 59 65 42 63 50 b 96 95 62 75 73 86 b 130 102 108 99 120 102 b 215 76 160 102 187 88 l 220 73 b 225 -22 220 42 222 10 b 233 -138 229 -62 230 -101 z', + }, + accidentalNarrowReversedFlatAndFlat: { + x_min: 0, + x_max: 335, + y_min: -231, + y_max: 449, + ha: 680, + o: 'm 151 490 b 148 612 151 530 150 572 b 132 647 148 632 141 645 b 122 618 124 647 124 628 b 117 526 118 588 117 556 b 118 432 117 494 118 464 b 121 268 120 377 121 323 l 121 232 b 86 256 109 240 98 251 b 62 264 78 261 69 264 b 1 153 29 264 6 223 b 0 94 0 132 0 114 b 109 -276 0 -63 37 -186 b 144 -323 121 -291 132 -307 b 153 -333 147 -330 151 -333 b 160 -320 157 -333 158 -328 b 168 -174 167 -272 168 -222 b 154 190 168 -52 157 68 b 151 445 153 275 151 360 z m 480 153 b 372 264 472 223 432 264 b 328 256 359 264 344 261 b 268 232 308 251 288 240 l 266 230 l 266 268 b 272 432 266 323 269 377 b 275 526 272 464 275 494 b 265 618 275 556 272 588 b 248 647 262 628 262 647 l 246 647 b 219 612 230 645 219 632 b 215 490 217 572 213 530 l 215 445 b 207 190 215 360 210 275 b 183 -174 203 68 183 -52 b 199 -320 183 -222 186 -272 b 210 -333 202 -328 204 -333 b 228 -323 215 -333 220 -330 b 288 -276 246 -307 268 -291 b 482 94 415 -186 482 -63 b 480 153 482 114 482 132 z m 40 30 b 36 59 36 42 36 50 b 55 95 35 75 42 86 b 73 102 60 99 68 102 b 121 76 89 102 105 88 l 124 73 b 127 -22 124 42 125 10 l 131 -138 b 40 30 95 -92 60 -43 z m 419 59 b 412 30 419 50 418 42 b 249 -138 374 -43 314 -92 b 258 -22 252 -101 253 -62 b 262 73 261 10 262 42 l 268 76 b 353 102 295 88 323 102 b 386 95 363 102 374 99 b 419 59 409 86 420 75 z', + }, + accidentalWilsonPlus: { + x_min: 0, + x_max: 298, + y_min: -218, + y_max: 218, + ha: 436, + o: 'm 232 -314 b 236 -301 236 -310 236 -305 l 236 -295 b 243 -52 239 -213 242 -132 l 369 62 b 429 200 413 101 425 147 b 416 243 429 216 428 236 b 383 225 406 251 393 232 l 377 220 b 246 98 336 177 291 138 b 249 242 248 145 246 193 b 225 304 251 265 242 287 b 209 314 220 308 215 314 b 204 312 207 314 206 312 b 196 292 196 310 196 300 b 193 184 194 256 194 220 b 187 48 192 140 190 94 b 46 -72 141 7 94 -32 b 0 -163 13 -98 0 -127 b 1 -187 0 -170 0 -179 b 10 -235 4 -203 6 -219 b 20 -255 12 -242 14 -251 b 36 -245 26 -259 30 -249 b 181 -109 85 -200 132 -154 b 176 -258 180 -158 176 -209 b 232 -314 176 -298 186 -307 z', + }, + accidentalWilsonMinus: { + x_min: 0, + x_max: 284.2093390143919, + y_min: -163, + y_max: 163, + ha: 326, + o: 'm 386 -232 b 409 -163 415 -222 408 -180 b 382 -69 410 -120 408 -89 b 32 228 264 30 141 118 b 17 235 26 233 22 235 b 3 219 9 235 3 228 b 0 157 3 199 0 179 b 29 69 0 125 6 95 b 323 -194 115 -29 222 -111 b 374 -235 338 -206 353 -235 b 386 -232 377 -235 382 -233 z', + }, + }, + fontFamily: 'Petaluma', + resolution: 1000, + generatedOn: '2022-06-26T17:47:23.560Z', +}; diff --git a/build/esm/src/fonts/petaluma_metrics.js b/build/esm/src/fonts/petaluma_metrics.js new file mode 100644 index 0000000000..955731c839 --- /dev/null +++ b/build/esm/src/fonts/petaluma_metrics.js @@ -0,0 +1,542 @@ +export const PetalumaMetrics = { + name: 'Petaluma', + smufl: true, + stave: { + padding: 15, + endPaddingMax: 15, + endPaddingMin: 7, + unalignedNotePadding: 12, + }, + accidental: { + noteheadAccidentalPadding: 1, + leftPadding: 2, + accidentalSpacing: 3, + }, + clef: { + default: { + point: 32, + width: 26, + }, + small: { + point: 26, + width: 20, + }, + annotations: { + '8va': { + smuflCode: 'timeSig8', + default: { + point: 18, + treble: { + line: -1.4, + shiftX: 12, + }, + }, + small: { + point: 16, + treble: { + line: -0.2, + shiftX: 8, + }, + }, + }, + '8vb': { + smuflCode: 'timeSig8', + default: { + point: 18, + treble: { + line: 6, + shiftX: 10, + }, + bass: { + line: 3.5, + shiftX: 1, + }, + }, + small: { + point: 16, + treble: { + line: 5.3, + shiftX: 6, + }, + bass: { + line: 3.1, + shiftX: 0.5, + }, + }, + }, + }, + lineCount: { + '8': { point: 55, shiftY: 14 }, + '7': { point: 47, shiftY: 8 }, + '6': { point: 32, shiftY: 1 }, + '5': { point: 30, shiftY: -6 }, + '4': { point: 23, shiftY: -12 }, + }, + }, + parenthesis: { + default: { + point: 39, + width: 7, + }, + gracenote: { + point: (39 * 3) / 5, + width: 3, + }, + }, + pedalMarking: { + up: { + point: 40, + }, + down: { + point: 34, + }, + }, + digits: { + shiftLine: -1, + point: 22, + tupletPoint: 16, + shiftY: -2, + }, + articulation: { + articStaccatissimoAbove: { + padding: 2, + }, + articStaccatissimoBelow: { + padding: 2, + }, + }, + tremolo: { + default: { + point: 25, + spacing: 5, + offsetYStemUp: -5, + offsetYStemDown: 5, + offsetXStemUp: 13, + offsetXStemDown: 1, + }, + grace: { + point: 18, + spacing: 4, + offsetYStemUp: -5, + offsetYStemDown: 5, + offsetXStemUp: 8, + offsetXStemDown: 1, + }, + }, + staveRepetition: { + symbolText: { + offsetX: 12, + offsetY: 25, + spacing: 5, + }, + coda: { + offsetY: 25, + }, + segno: { + offsetY: 10, + }, + }, + noteHead: { + displaced: { + shiftX: -2, + }, + }, + stem: { + heightAdjustmentForFlag: -3, + noteHead: { + noteheadTriangleUpHalf: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpBlack: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadTriangleUpWhole: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4, + }, + noteheadXHalf: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXBlack: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadXWhole: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4, + }, + noteheadHalf: { + offsetYBaseStemDown: 1.8, + offsetYBaseStemUp: -1.8, + }, + noteheadBlack: { + offsetYBaseStemDown: 2, + offsetYBaseStemUp: -2, + }, + noteheadSquareWhite: { + offsetYBaseStemDown: -5, + offsetYBaseStemUp: 5, + }, + }, + }, + glyphs: { + coda: { + point: 20, + shiftX: -7, + shiftY: 8, + }, + segno: { + shiftX: -7, + }, + flag: { + shiftX: -0.77, + flag16thUp: { + shiftX: -0.75, + }, + flag32ndUp: { + shiftX: -0.85, + }, + flag64thUp: { + shiftX: -1.55, + }, + flag128thUp: { + shiftX: -1.3, + }, + flag16thDown: { + shiftX: -0.75, + }, + flag32ndDown: { + shiftX: -0.76, + }, + flag64thDown: { + shiftX: -1.5, + }, + flag128thDown: { + shiftX: -1.2, + }, + staveTempo: { + shiftX: -1, + }, + }, + clef: { + gClef: { + default: { scale: 1.1, shiftY: 1 }, + small: { shiftY: 1.5 }, + }, + fClef: { + default: { shiftY: -0.5 }, + }, + }, + ornament: { + ornamentTurn: { + scale: 1.2, + }, + ornamentTurnSlash: { + scale: 1.2, + }, + }, + stringNumber: { + verticalPadding: 8, + stemPadding: 2, + leftPadding: 5, + rightPadding: 6, + }, + stroke: { + arrowheadBlackDown: { + straight: { + shiftX: -4.5, + }, + wiggly: { + shiftX: -1, + shiftY: 1, + }, + }, + arrowheadBlackUp: { + straight: { + shiftX: -0.85, + }, + wiggly: { + shiftX: -1, + shiftY: 1, + }, + }, + }, + textNote: { + point: 34, + breathMarkTick: { + point: 36, + shiftY: 9, + }, + breathMarkComma: { + point: 36, + }, + segno: { + point: 30, + shiftX: -7, + shiftY: 8, + }, + coda: { + point: 20, + shiftX: -7, + shiftY: 8, + }, + ornamentTrill: { + shiftX: -10, + shiftY: 8, + }, + ornamentMordent: { + shiftX: -8, + }, + ornamentShortTrill: { + shiftX: -8, + }, + }, + noteHead: { + minPadding: 2, + standard: { + noteheadBlackStemUp: { + shiftX: 0.5, + }, + noteheadHalfStemUp: { + shiftX: 0.725, + }, + noteheadWholeStemUp: { + shiftX: 1, + }, + }, + custom: { + noteheadCircleXStemUp: { + shiftX: -1, + }, + noteheadCircleXStemDown: { + shiftX: 0.25, + }, + noteheadDiamondHalfStemUp: { + shiftX: 1.5, + }, + noteheadDiamondBlackStemUp: { + shiftX: 1.5, + }, + noteheadDiamondWholeStemUp: { + shiftX: 1, + }, + noteheadXBlackStemUp: { + shiftX: 1, + }, + noteheadXHalfStemUp: { + shiftX: -3, + }, + noteheadXHalfStemDown: { + shiftX: 1, + }, + noteheadXWholeStemUp: { + shiftX: -7, + }, + noteheadXWholeStemDown: { + shiftX: 1, + }, + noteheadXDoubleWholeStemUp: { + shiftX: -12, + }, + noteheadXDoubleWholeStemDown: { + shiftX: -4, + }, + noteheadSquareWhiteStemDown: { + shiftX: 0.25, + }, + noteheadSquareWhiteStemUp: { + shiftX: -0.75, + }, + noteheadSquareBlackStemUp: { + shiftX: -0.75, + }, + noteheadTriangleUpWholeStemUp: { + shiftX: -0.75, + }, + }, + }, + chordSymbol: { + global: { + superscriptOffset: -400, + subscriptOffset: 300, + kerningOffset: -150, + lowerKerningText: ['D', 'F', 'P', 'T', 'V', 'Y'], + upperKerningText: ['L'], + spacing: 20, + superSubRatio: 0.73, + }, + csymDiminished: { + scale: 0.8, + leftSideBearing: -95, + advanceWidth: 506, + yOffset: 0, + }, + csymHalfDiminished: { + scale: 0.8, + leftSideBearing: -32, + advanceWidth: 506, + yOffset: 0, + }, + csymAugmented: { + scale: 1, + leftSideBearing: -25, + advanceWidth: 530, + yOffset: 0, + }, + csymParensLeftTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 155, + yOffset: 150, + }, + csymParensRightTall: { + scale: 0.8, + leftSideBearing: 40, + advanceWidth: 189, + yOffset: 150, + }, + csymBracketLeftTall: { + scale: 0.8, + leftSideBearing: 0, + advanceWidth: 328, + yOffset: 0, + }, + csymBracketRightTall: { + scale: 0.8, + leftSideBearing: 1, + advanceWidth: 600, + yOffset: 0, + }, + csymParensLeftVeryTall: { + scale: 0.95, + leftSideBearing: 0, + advanceWidth: 210, + yOffset: 250, + }, + csymParensRightVeryTall: { + scale: 0.9, + leftSideBearing: -100, + advanceWidth: 111, + yOffset: 250, + }, + csymDiagonalArrangementSlash: { + scale: 0.6, + leftSideBearing: -1, + advanceWidth: 990, + yOffset: 0, + }, + csymMinor: { + scale: 0.7, + leftSideBearing: 0, + advanceWidth: 482, + yOffset: 0, + }, + csymMajorSeventh: { + scale: 0.8, + leftSideBearing: 100, + yOffset: 0, + advanceWidth: 600, + }, + accidentalSharp: { + scale: 0.7, + leftSideBearing: 0, + advanceWidth: 425, + yOffset: -422, + }, + accidentalFlat: { + scale: 0.8, + leftSideBearing: -10, + advanceWidth: 228, + yOffset: -284, + }, + }, + jazzOrnaments: { + brassScoop: { + scale: 1.0, + xOffset: -12, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 15, + }, + brassDoitMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 19, + }, + brassFallLipShort: { + scale: 1.0, + xOffset: 16, + yOffset: 0, + stemUpYOffset: 0, + reportedWidth: 19, + }, + brassLiftMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 5, + stemUpYOffset: 0, + reportedWidth: 15, + }, + brassFallRoughMedium: { + scale: 1.0, + xOffset: 16, + yOffset: 26, + stemUpYOffset: 0, + reportedWidth: 5, + }, + brassBend: { + scale: 1.0, + xOffset: 3, + yOffset: -8, + stemUpYOffset: 28, + reportedWidth: 5, + }, + brassMuteClosed: { + scale: 1.0, + xOffset: 3, + yOffset: -8, + stemUpYOffset: 26, + reportedWidth: 5, + }, + brassMuteOpen: { + scale: 1.0, + xOffset: 4, + yOffset: -8, + stemUpYOffset: 27, + reportedWidth: 5, + }, + brassFlip: { + scale: 1.0, + xOffset: 10, + yOffset: -4, + stemUpYOffset: 7, + reportedWidth: 5, + }, + brassJazzTurn: { + scale: 1.0, + xOffset: 6, + yOffset: -4, + stemUpYOffset: 5, + reportedWidth: 30, + }, + brassSmear: { + scale: 1.0, + xOffset: 10, + yOffset: -4, + stemUpYOffset: 5, + reportedWidth: 5, + }, + }, + tuplet: { + noteHeadOffset: 20, + stemOffset: 10, + bottomLine: 4, + topModifierOffset: 20, + }, + }, +}; diff --git a/build/esm/src/fonts/petalumascript_glyphs.js b/build/esm/src/fonts/petalumascript_glyphs.js new file mode 100644 index 0000000000..2589c61a67 --- /dev/null +++ b/build/esm/src/fonts/petalumascript_glyphs.js @@ -0,0 +1,863 @@ +export const PetalumaScriptFont = { + spacing: 50, + glyphs: { + ' ': { + x_min: 0, + x_max: 250, + y_min: 0, + y_max: 500, + ha: 500, + leftSideBearing: 0, + advanceWidth: 250, + }, + '0': { + x_min: 33, + x_max: 534, + y_min: -13, + y_max: 751, + ha: 764, + leftSideBearing: 33, + advanceWidth: 570, + }, + '1': { + x_min: 48, + x_max: 235, + y_min: -17, + y_max: 734, + ha: 751, + leftSideBearing: 48, + advanceWidth: 286, + }, + '2': { + x_min: 56, + x_max: 571, + y_min: -19, + y_max: 741, + ha: 760, + leftSideBearing: 56, + advanceWidth: 626, + }, + '3': { + x_min: 50, + x_max: 528, + y_min: -7, + y_max: 731, + ha: 738, + leftSideBearing: 50, + advanceWidth: 589, + }, + '4': { + x_min: 38, + x_max: 564, + y_min: -13, + y_max: 743, + ha: 756, + leftSideBearing: 38, + advanceWidth: 614, + }, + '5': { + x_min: 42, + x_max: 601, + y_min: -34, + y_max: 743, + ha: 777, + leftSideBearing: 42, + advanceWidth: 648, + }, + '6': { + x_min: 47, + x_max: 606, + y_min: -16, + y_max: 743, + ha: 759, + leftSideBearing: 47, + advanceWidth: 667, + }, + '7': { + x_min: 47, + x_max: 567, + y_min: 5, + y_max: 739, + ha: 734, + leftSideBearing: 0, + advanceWidth: 615, + }, + '8': { + x_min: 40, + x_max: 541, + y_min: -15, + y_max: 752, + ha: 767, + leftSideBearing: 40, + advanceWidth: 585, + }, + '9': { + x_min: 40, + x_max: 537, + y_min: -52, + y_max: 736, + ha: 788, + leftSideBearing: 40, + advanceWidth: 592, + }, + '!': { + x_min: 49, + x_max: 180, + y_min: -7, + y_max: 761, + ha: 768, + leftSideBearing: 49, + advanceWidth: 230, + }, + '"': { + x_min: 39, + x_max: 304, + y_min: 596, + y_max: 804, + ha: 208, + leftSideBearing: 39, + advanceWidth: 353, + }, + '#': { + x_min: 33, + x_max: 599, + y_min: -8, + y_max: 765, + ha: 773, + leftSideBearing: 33, + advanceWidth: 648, + }, + $: { + x_min: 53, + x_max: 495, + y_min: -111, + y_max: 823, + ha: 934, + leftSideBearing: 53, + advanceWidth: 560, + }, + '%': { + x_min: 35, + x_max: 656, + y_min: -128, + y_max: 808, + ha: 936, + leftSideBearing: 35, + advanceWidth: 711, + }, + '&': { + x_min: 53, + x_max: 441, + y_min: -3, + y_max: 753, + ha: 756, + leftSideBearing: 53, + advanceWidth: 500, + }, + "'": { + x_min: 43, + x_max: 161, + y_min: 590, + y_max: 811, + ha: 221, + leftSideBearing: 43, + advanceWidth: 217, + }, + '(': { + x_min: 41, + x_max: 311, + y_min: -36, + y_max: 845, + ha: 881, + leftSideBearing: 41, + advanceWidth: 308, + }, + ')': { + x_min: -8, + x_max: 257, + y_min: -21, + y_max: 852, + ha: 873, + leftSideBearing: -8, + advanceWidth: 280, + }, + '*': { + x_min: 59, + x_max: 539, + y_min: 175, + y_max: 589, + ha: 414, + leftSideBearing: 59, + advanceWidth: 601, + }, + '+': { + x_min: 33, + x_max: 361, + y_min: 180, + y_max: 587, + ha: 407, + leftSideBearing: 33, + advanceWidth: 400, + }, + ',': { + x_min: 15, + x_max: 176, + y_min: -129, + y_max: 92, + ha: 221, + leftSideBearing: 15, + advanceWidth: 205, + }, + '-': { + x_min: 40, + x_max: 380, + y_min: 317, + y_max: 452, + ha: 135, + leftSideBearing: 40, + advanceWidth: 422, + }, + '.': { + x_min: 48, + x_max: 185, + y_min: -56, + y_max: 84, + ha: 140, + leftSideBearing: 48, + advanceWidth: 227, + }, + '/': { + x_min: -58, + x_max: 654, + y_min: -122, + y_max: 844, + ha: 966, + leftSideBearing: -58, + advanceWidth: 626, + }, + ':': { + x_min: 65, + x_max: 225, + y_min: 97, + y_max: 536, + ha: 439, + leftSideBearing: 65, + advanceWidth: 302, + }, + ';': { + x_min: 13, + x_max: 295, + y_min: -139, + y_max: 536, + ha: 675, + leftSideBearing: 13, + advanceWidth: 334, + }, + '<': { + x_min: 28, + x_max: 438, + y_min: -1, + y_max: 607, + ha: 608, + leftSideBearing: 28, + advanceWidth: 475, + }, + '=': { + x_min: 40, + x_max: 383, + y_min: 199.9598640852289, + y_max: 541, + ha: 341.0401359147711, + leftSideBearing: 40, + advanceWidth: 422, + }, + '>': { + x_min: 35, + x_max: 421, + y_min: 28, + y_max: 632, + ha: 604, + leftSideBearing: 35, + advanceWidth: 466, + }, + '?': { + x_min: 45, + x_max: 548, + y_min: -17, + y_max: 767, + ha: 784, + leftSideBearing: 45, + advanceWidth: 592, + }, + '@': { + x_min: 51, + x_max: 730, + y_min: -78, + y_max: 753, + ha: 831, + leftSideBearing: 51, + advanceWidth: 781, + }, + A: { + x_min: 37, + x_max: 554, + y_min: -4, + y_max: 746, + ha: 750, + leftSideBearing: 37, + advanceWidth: 617, + }, + B: { + x_min: 37, + x_max: 532, + y_min: 3, + y_max: 783, + ha: 780, + leftSideBearing: 37, + advanceWidth: 579, + }, + C: { + x_min: 37, + x_max: 583, + y_min: -3, + y_max: 775, + ha: 778, + leftSideBearing: 37, + advanceWidth: 623, + }, + D: { + x_min: 50, + x_max: 530, + y_min: -15, + y_max: 749, + ha: 764, + leftSideBearing: 50, + advanceWidth: 579, + }, + E: { + x_min: 45, + x_max: 531, + y_min: -1, + y_max: 743, + ha: 744, + leftSideBearing: 45, + advanceWidth: 585, + }, + F: { + x_min: 45, + x_max: 459, + y_min: 23, + y_max: 727, + ha: 704, + leftSideBearing: 45, + advanceWidth: 510, + }, + G: { + x_min: 31, + x_max: 577, + y_min: -8, + y_max: 733, + ha: 741, + leftSideBearing: 31, + advanceWidth: 611, + }, + H: { + x_min: 37, + x_max: 493, + y_min: -22, + y_max: 758, + ha: 780, + leftSideBearing: 37, + advanceWidth: 535, + }, + I: { + x_min: 47, + x_max: 501, + y_min: -3, + y_max: 731, + ha: 734, + leftSideBearing: 47, + advanceWidth: 541, + }, + J: { + x_min: 33, + x_max: 531, + y_min: -23, + y_max: 725, + ha: 748, + leftSideBearing: 33, + advanceWidth: 573, + }, + K: { + x_min: 43, + x_max: 505, + y_min: -10, + y_max: 740, + ha: 750, + leftSideBearing: 43, + advanceWidth: 560, + }, + L: { + x_min: 49, + x_max: 457, + y_min: -2, + y_max: 746, + ha: 748, + leftSideBearing: 49, + advanceWidth: 510, + }, + M: { + x_min: 35, + x_max: 699, + y_min: 1, + y_max: 744, + ha: 743, + leftSideBearing: 35, + advanceWidth: 743, + }, + N: { + x_min: 34, + x_max: 533, + y_min: -17, + y_max: 761, + ha: 778, + leftSideBearing: 34, + advanceWidth: 579, + }, + O: { + x_min: 41, + x_max: 608, + y_min: -5, + y_max: 735, + ha: 740, + leftSideBearing: 41, + advanceWidth: 667, + }, + P: { + x_min: 53, + x_max: 451, + y_min: -18, + y_max: 735, + ha: 753, + leftSideBearing: 53, + advanceWidth: 497, + }, + Q: { + x_min: 40, + x_max: 599, + y_min: -67, + y_max: 744, + ha: 811, + leftSideBearing: 40, + advanceWidth: 648, + }, + R: { + x_min: 39, + x_max: 487, + y_min: 16, + y_max: 735, + ha: 719, + leftSideBearing: 39, + advanceWidth: 535, + }, + S: { + x_min: 35, + x_max: 552, + y_min: -47, + y_max: 708, + ha: 755, + leftSideBearing: 35, + advanceWidth: 604, + }, + T: { + x_min: 26, + x_max: 656, + y_min: -13, + y_max: 718, + ha: 731, + leftSideBearing: 26, + advanceWidth: 705, + }, + U: { + x_min: 41, + x_max: 518, + y_min: -20, + y_max: 748, + ha: 768, + leftSideBearing: 41, + advanceWidth: 567, + }, + V: { + x_min: 47, + x_max: 509, + y_min: -26, + y_max: 744, + ha: 770, + leftSideBearing: 47, + advanceWidth: 567, + }, + W: { + x_min: 44, + x_max: 789, + y_min: -35, + y_max: 720, + ha: 755, + leftSideBearing: 44, + advanceWidth: 833, + }, + X: { + x_min: 63, + x_max: 635, + y_min: -10, + y_max: 745, + ha: 755, + leftSideBearing: 63, + advanceWidth: 680, + }, + Y: { + x_min: 43, + x_max: 503, + y_min: -21, + y_max: 734, + ha: 755, + leftSideBearing: 43, + advanceWidth: 541, + }, + Z: { + x_min: 42, + x_max: 584, + y_min: -10, + y_max: 739, + ha: 749, + leftSideBearing: 42, + advanceWidth: 629, + }, + '[': { + x_min: 46, + x_max: 346, + y_min: -150, + y_max: 884, + ha: 1034, + leftSideBearing: 46, + advanceWidth: 291, + }, + '\\': { + x_min: 20, + x_max: 616, + y_min: -100, + y_max: 797, + ha: 897, + leftSideBearing: 20, + advanceWidth: 645, + }, + ']': { + x_min: -76, + x_max: 226, + y_min: -150, + y_max: 881, + ha: 1031, + leftSideBearing: -76, + advanceWidth: 297, + }, + '^': { + x_min: 43, + x_max: 437, + y_min: 517, + y_max: 812, + ha: 295, + leftSideBearing: 43, + advanceWidth: 478, + }, + _: { + x_min: 29, + x_max: 563, + y_min: -110, + y_max: -1, + ha: 109, + leftSideBearing: 29, + advanceWidth: 598, + }, + '`': { + x_min: 54, + x_max: 321, + y_min: 540, + y_max: 747, + ha: 207, + leftSideBearing: 54, + advanceWidth: 368, + }, + a: { + x_min: 20, + x_max: 447, + y_min: -17, + y_max: 495, + ha: 512, + leftSideBearing: 20, + advanceWidth: 494, + }, + b: { + x_min: 37, + x_max: 466, + y_min: -27, + y_max: 770, + ha: 797, + leftSideBearing: 37, + advanceWidth: 510, + }, + c: { + x_min: 35, + x_max: 456, + y_min: -9, + y_max: 507, + ha: 516, + leftSideBearing: 35, + advanceWidth: 460, + }, + d: { + x_min: 45, + x_max: 520, + y_min: -15, + y_max: 764, + ha: 779, + leftSideBearing: 45, + advanceWidth: 560, + }, + e: { + x_min: 33, + x_max: 370, + y_min: -5, + y_max: 501, + ha: 506, + leftSideBearing: 33, + advanceWidth: 397, + }, + f: { + x_min: 35, + x_max: 411, + y_min: -13, + y_max: 695, + ha: 708, + leftSideBearing: 35, + advanceWidth: 453, + }, + g: { + x_min: 33, + x_max: 551, + y_min: -257, + y_max: 505, + ha: 762, + leftSideBearing: 33, + advanceWidth: 611, + }, + h: { + x_min: 32, + x_max: 458, + y_min: -29, + y_max: 743, + ha: 772, + leftSideBearing: 32, + advanceWidth: 491, + }, + i: { + x_min: 45, + x_max: 167, + y_min: -13, + y_max: 631, + ha: 644, + leftSideBearing: 45, + advanceWidth: 220, + }, + j: { + x_min: -127, + x_max: 261, + y_min: -231, + y_max: 601, + ha: 832, + leftSideBearing: -127, + advanceWidth: 308, + }, + k: { + x_min: 39, + x_max: 443, + y_min: -3, + y_max: 700, + ha: 703, + leftSideBearing: 39, + advanceWidth: 497, + }, + l: { + x_min: 58, + x_max: 168, + y_min: -8, + y_max: 686, + ha: 694, + leftSideBearing: 58, + advanceWidth: 227, + }, + m: { + x_min: 39, + x_max: 688, + y_min: -14, + y_max: 501, + ha: 515, + leftSideBearing: 39, + advanceWidth: 718, + }, + n: { + x_min: 45, + x_max: 491, + y_min: -32, + y_max: 512, + ha: 544, + leftSideBearing: 45, + advanceWidth: 541, + }, + o: { + x_min: 41, + x_max: 424, + y_min: -12, + y_max: 493, + ha: 505, + leftSideBearing: 41, + advanceWidth: 447, + }, + p: { + x_min: 25, + x_max: 529, + y_min: -260, + y_max: 500, + ha: 760, + leftSideBearing: 25, + advanceWidth: 573, + }, + q: { + x_min: 53, + x_max: 603, + y_min: -235, + y_max: 514, + ha: 749, + leftSideBearing: 53, + advanceWidth: 623, + }, + r: { + x_min: 32, + x_max: 407, + y_min: -7, + y_max: 492, + ha: 499, + leftSideBearing: 32, + advanceWidth: 460, + }, + s: { + x_min: 49, + x_max: 416, + y_min: -12, + y_max: 519, + ha: 531, + leftSideBearing: 49, + advanceWidth: 460, + }, + t: { + x_min: 32, + x_max: 442, + y_min: -5, + y_max: 684, + ha: 689, + leftSideBearing: 32, + advanceWidth: 469, + }, + u: { + x_min: 41, + x_max: 487, + y_min: -5, + y_max: 507, + ha: 512, + leftSideBearing: 41, + advanceWidth: 510, + }, + v: { + x_min: 16, + x_max: 441, + y_min: -20, + y_max: 542, + ha: 562, + leftSideBearing: 16, + advanceWidth: 456, + }, + w: { + x_min: 39, + x_max: 639, + y_min: -22, + y_max: 505, + ha: 527, + leftSideBearing: 39, + advanceWidth: 661, + }, + x: { + x_min: 15, + x_max: 505, + y_min: -39, + y_max: 539, + ha: 578, + leftSideBearing: 15, + advanceWidth: 541, + }, + y: { + x_min: -98, + x_max: 501, + y_min: -242, + y_max: 511, + ha: 753, + leftSideBearing: -98, + advanceWidth: 548, + }, + z: { + x_min: 27, + x_max: 479, + y_min: -3, + y_max: 494, + ha: 497, + leftSideBearing: 27, + advanceWidth: 494, + }, + '{': { + x_min: 0, + x_max: 0, + y_min: 0, + y_max: 0, + ha: 0, + leftSideBearing: 0, + advanceWidth: 308, + }, + '|': { + x_min: 0, + x_max: 0, + y_min: 0, + y_max: 0, + ha: 0, + leftSideBearing: 0, + advanceWidth: 308, + }, + '}': { + x_min: 0, + x_max: 0, + y_min: 0, + y_max: 0, + ha: 0, + leftSideBearing: 0, + advanceWidth: 308, + }, + '~': { + x_min: 0, + x_max: 0, + y_min: 0, + y_max: 0, + ha: 0, + leftSideBearing: 0, + advanceWidth: 308, + }, + }, + fontFamily: 'PetalumaScript', + resolution: 1000, + generatedOn: '2020-06-14T18:33:25.407Z', +}; diff --git a/build/esm/src/fonts/robotoslab_glyphs.js b/build/esm/src/fonts/robotoslab_glyphs.js new file mode 100644 index 0000000000..e7f8b1d3e9 --- /dev/null +++ b/build/esm/src/fonts/robotoslab_glyphs.js @@ -0,0 +1,863 @@ +export const RobotoSlabFont = { + spacing: 50, + glyphs: { + ' ': { + x_min: 0, + x_max: 509, + y_min: 0, + y_max: 2000, + ha: 2000, + leftSideBearing: 0, + advanceWidth: 509, + }, + '0': { + x_min: 121, + x_max: 1048, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 121, + advanceWidth: 1168, + }, + '1': { + x_min: 117, + x_max: 767, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 117, + advanceWidth: 844, + }, + '2': { + x_min: 75.8474576645637, + x_max: 1040, + y_min: 0, + y_max: 1477, + ha: 1477, + leftSideBearing: 75, + advanceWidth: 1131, + }, + '3': { + x_min: 74.85365853658536, + x_max: 994, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 74, + advanceWidth: 1106, + }, + '4': { + x_min: 63, + x_max: 1114, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 63, + advanceWidth: 1187, + }, + '5': { + x_min: 96.8448275474953, + x_max: 982, + y_min: -21, + y_max: 1456, + ha: 1477, + leftSideBearing: 96, + advanceWidth: 1081, + }, + '6': { + x_min: 121, + x_max: 1067, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 121, + advanceWidth: 1144, + }, + '7': { + x_min: 76, + x_max: 1060, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: -30, + advanceWidth: 1128, + }, + '8': { + x_min: 92, + x_max: 1039, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 92, + advanceWidth: 1131, + }, + '9': { + x_min: 84, + x_max: 1026, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 84, + advanceWidth: 1154, + }, + '!': { + x_min: 143, + x_max: 340, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 143, + advanceWidth: 483, + }, + '"': { + x_min: 166, + x_max: 634, + y_min: 1055, + y_max: 1560, + ha: 505, + leftSideBearing: 166, + advanceWidth: 770, + }, + '#': { + x_min: 63, + x_max: 1179, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 63, + advanceWidth: 1246, + }, + $: { + x_min: 81.92156915727656, + x_max: 1012, + y_min: -208, + y_max: 1693, + ha: 1901, + leftSideBearing: 81, + advanceWidth: 1110, + }, + '%': { + x_min: 77, + x_max: 1384, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 77, + advanceWidth: 1460, + }, + '&': { + x_min: 74, + x_max: 1242, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 74, + advanceWidth: 1289, + }, + "'": { + x_min: 166, + x_max: 324, + y_min: 1055, + y_max: 1560, + ha: 505, + leftSideBearing: 166, + advanceWidth: 460, + }, + '(': { + x_min: 114, + x_max: 650, + y_min: -463, + y_max: 1636, + ha: 2099, + leftSideBearing: 114, + advanceWidth: 662, + }, + ')': { + x_min: 11, + x_max: 547, + y_min: -463, + y_max: 1636, + ha: 2099, + leftSideBearing: 11, + advanceWidth: 654, + }, + '*': { + x_min: 66, + x_max: 893, + y_min: 607, + y_max: 1456, + ha: 849, + leftSideBearing: 66, + advanceWidth: 958, + }, + '+': { + x_min: 73, + x_max: 1071, + y_min: 146, + y_max: 1206, + ha: 1060, + leftSideBearing: 73, + advanceWidth: 1145, + }, + ',': { + x_min: 23, + x_max: 315, + y_min: -311, + y_max: 221, + ha: 532, + leftSideBearing: 23, + advanceWidth: 404, + }, + '-': { + x_min: 154, + x_max: 643, + y_min: 538, + y_max: 692, + ha: 154, + leftSideBearing: 154, + advanceWidth: 797, + }, + '.': { + x_min: 145, + x_max: 342, + y_min: 0, + y_max: 202, + ha: 202, + leftSideBearing: 145, + advanceWidth: 493, + }, + '/': { + x_min: 0, + x_max: 774, + y_min: -125, + y_max: 1456, + ha: 1581, + leftSideBearing: 0, + advanceWidth: 824, + }, + ':': { + x_min: 145, + x_max: 342, + y_min: 0, + y_max: 1082, + ha: 1082, + leftSideBearing: 145, + advanceWidth: 419, + }, + ';': { + x_min: 53, + x_max: 345, + y_min: -311, + y_max: 1082, + ha: 1393, + leftSideBearing: 53, + advanceWidth: 424, + }, + '<': { + x_min: 76, + x_max: 892, + y_min: 107, + y_max: 1013, + ha: 906, + leftSideBearing: 76, + advanceWidth: 1017, + }, + '=': { + x_min: 147, + x_max: 981, + y_min: 407, + y_max: 987, + ha: 580, + leftSideBearing: 147, + advanceWidth: 1127, + }, + '>': { + x_min: 125, + x_max: 980, + y_min: 87, + y_max: 993, + ha: 906, + leftSideBearing: 125, + advanceWidth: 1060, + }, + '?': { + x_min: 65.92660602419838, + x_max: 890, + y_min: 0, + y_max: 1477, + ha: 1477, + leftSideBearing: 65, + advanceWidth: 953, + }, + '@': { + x_min: 84.3592218305664, + x_max: 1705.2346925277395, + y_min: -453, + y_max: 1431, + ha: 1884, + leftSideBearing: 84, + advanceWidth: 1821, + }, + A: { + x_min: 70, + x_max: 1463, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 70, + advanceWidth: 1533, + }, + B: { + x_min: 81, + x_max: 1253, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1322, + }, + C: { + x_min: 80, + x_max: 1174, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 80, + advanceWidth: 1290, + }, + D: { + x_min: 81, + x_max: 1291, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1356, + }, + E: { + x_min: 81, + x_max: 1190, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1306, + }, + F: { + x_min: 81, + x_max: 1176, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1256, + }, + G: { + x_min: 80, + x_max: 1226, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 80, + advanceWidth: 1346, + }, + H: { + x_min: 81, + x_max: 1497, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1578, + }, + I: { + x_min: 81, + x_max: 604, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 685, + }, + J: { + x_min: 60, + x_max: 1100, + y_min: -21, + y_max: 1456, + ha: 1477, + leftSideBearing: 60, + advanceWidth: 1169, + }, + K: { + x_min: 81, + x_max: 1427, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1501, + }, + L: { + x_min: 81, + x_max: 1130, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1210, + }, + M: { + x_min: 94, + x_max: 1888, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 94, + advanceWidth: 1982, + }, + N: { + x_min: 83, + x_max: 1509, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 83, + advanceWidth: 1592, + }, + O: { + x_min: 70, + x_max: 1281, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 70, + advanceWidth: 1351, + }, + P: { + x_min: 81, + x_max: 1242, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 81, + advanceWidth: 1297, + }, + Q: { + x_min: 70, + x_max: 1348, + y_min: -245, + y_max: 1477, + ha: 1722, + leftSideBearing: 70, + advanceWidth: 1376, + }, + R: { + x_min: 81, + x_max: 1285, + y_min: 0, + y_max: 1455, + ha: 1455, + leftSideBearing: 81, + advanceWidth: 1385, + }, + S: { + x_min: 115, + x_max: 1116, + y_min: -21, + y_max: 1477, + ha: 1498, + leftSideBearing: 115, + advanceWidth: 1206, + }, + T: { + x_min: 96, + x_max: 1306, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 96, + advanceWidth: 1406, + }, + U: { + x_min: 70, + x_max: 1452, + y_min: -21, + y_max: 1456, + ha: 1477, + leftSideBearing: 70, + advanceWidth: 1522, + }, + V: { + x_min: 65, + x_max: 1443, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 65, + advanceWidth: 1508, + }, + W: { + x_min: 72, + x_max: 2057, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 72, + advanceWidth: 2129, + }, + X: { + x_min: 80, + x_max: 1449, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 80, + advanceWidth: 1529, + }, + Y: { + x_min: 65, + x_max: 1396, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 65, + advanceWidth: 1461, + }, + Z: { + x_min: 90, + x_max: 1107, + y_min: 0, + y_max: 1456, + ha: 1456, + leftSideBearing: 90, + advanceWidth: 1197, + }, + '[': { + x_min: 157, + x_max: 541, + y_min: -312, + y_max: 1664, + ha: 1976, + leftSideBearing: 157, + advanceWidth: 573, + }, + '\\': { + x_min: 36, + x_max: 830, + y_min: -125, + y_max: 1456, + ha: 1581, + leftSideBearing: 36, + advanceWidth: 841, + }, + ']': { + x_min: 23, + x_max: 408, + y_min: -312, + y_max: 1664, + ha: 1976, + leftSideBearing: 23, + advanceWidth: 552, + }, + '^': { + x_min: 71, + x_max: 802, + y_min: 729, + y_max: 1456, + ha: 727, + leftSideBearing: 71, + advanceWidth: 864, + }, + _: { + x_min: 119, + x_max: 1041, + y_min: -154, + y_max: 0, + ha: 154, + leftSideBearing: 119, + advanceWidth: 1168, + }, + '`': { + x_min: 40, + x_max: 456, + y_min: 1288, + y_max: 1560, + ha: 272, + leftSideBearing: 40, + advanceWidth: 496, + }, + a: { + x_min: 79, + x_max: 1053, + y_min: -21, + y_max: 1102, + ha: 1123, + leftSideBearing: 79, + advanceWidth: 1132, + }, + b: { + x_min: -16, + x_max: 1071, + y_min: -21, + y_max: 1560, + ha: 1581, + leftSideBearing: -16, + advanceWidth: 1145, + }, + c: { + x_min: 78, + x_max: 988, + y_min: -21, + y_max: 1102, + ha: 1123, + leftSideBearing: 78, + advanceWidth: 1067, + }, + d: { + x_min: 78, + x_max: 1156, + y_min: -21, + y_max: 1560, + ha: 1581, + leftSideBearing: 78, + advanceWidth: 1218, + }, + e: { + x_min: 74, + x_max: 980, + y_min: -21, + y_max: 1102, + ha: 1123, + leftSideBearing: 74, + advanceWidth: 1059, + }, + f: { + x_min: 64, + x_max: 731, + y_min: 0, + y_max: 1581, + ha: 1581, + leftSideBearing: 64, + advanceWidth: 725, + }, + g: { + x_min: 78, + x_max: 1133, + y_min: -437, + y_max: 1102, + ha: 1539, + leftSideBearing: 78, + advanceWidth: 1157, + }, + h: { + x_min: 49, + x_max: 1255, + y_min: 0, + y_max: 1560, + ha: 1560, + leftSideBearing: 49, + advanceWidth: 1315, + }, + i: { + x_min: 67, + x_max: 590, + y_min: 0, + y_max: 1560, + ha: 1560, + leftSideBearing: 67, + advanceWidth: 652, + }, + j: { + x_min: -56, + x_max: 381, + y_min: -437, + y_max: 1560, + ha: 1997, + leftSideBearing: -56, + advanceWidth: 525, + }, + k: { + x_min: 64, + x_max: 1248, + y_min: 0, + y_max: 1560, + ha: 1560, + leftSideBearing: 64, + advanceWidth: 1287, + }, + l: { + x_min: 64, + x_max: 587, + y_min: 0, + y_max: 1560, + ha: 1560, + leftSideBearing: 64, + advanceWidth: 653, + }, + m: { + x_min: 74, + x_max: 1905, + y_min: 0, + y_max: 1102, + ha: 1102, + leftSideBearing: 74, + advanceWidth: 1977, + }, + n: { + x_min: 74, + x_max: 1278, + y_min: 0, + y_max: 1102, + ha: 1102, + leftSideBearing: 74, + advanceWidth: 1343, + }, + o: { + x_min: 78, + x_max: 1046, + y_min: -21, + y_max: 1102, + ha: 1123, + leftSideBearing: 78, + advanceWidth: 1124, + }, + p: { + x_min: 34, + x_max: 1119, + y_min: -416, + y_max: 1102, + ha: 1518, + leftSideBearing: 34, + advanceWidth: 1197, + }, + q: { + x_min: 78, + x_max: 1135, + y_min: -416, + y_max: 1102, + ha: 1518, + leftSideBearing: 78, + advanceWidth: 1139, + }, + r: { + x_min: 72, + x_max: 808, + y_min: 0, + y_max: 1102, + ha: 1102, + leftSideBearing: 72, + advanceWidth: 854, + }, + s: { + x_min: 104, + x_max: 933, + y_min: -21, + y_max: 1102, + ha: 1123, + leftSideBearing: 104, + advanceWidth: 1022, + }, + t: { + x_min: 24, + x_max: 678, + y_min: -17, + y_max: 1343, + ha: 1360, + leftSideBearing: 24, + advanceWidth: 730, + }, + u: { + x_min: 52, + x_max: 1181, + y_min: -21, + y_max: 1082, + ha: 1103, + leftSideBearing: 52, + advanceWidth: 1245, + }, + v: { + x_min: 26, + x_max: 1176, + y_min: 0, + y_max: 1082, + ha: 1082, + leftSideBearing: 26, + advanceWidth: 1206, + }, + w: { + x_min: 52, + x_max: 1777, + y_min: 0, + y_max: 1082, + ha: 1082, + leftSideBearing: 52, + advanceWidth: 1823, + }, + x: { + x_min: 42, + x_max: 1163, + y_min: 0, + y_max: 1082, + ha: 1082, + leftSideBearing: 42, + advanceWidth: 1203, + }, + y: { + x_min: 24, + x_max: 1172, + y_min: -437, + y_max: 1082, + ha: 1519, + leftSideBearing: 24, + advanceWidth: 1192, + }, + z: { + x_min: 88, + x_max: 960, + y_min: 0, + y_max: 1082, + ha: 1082, + leftSideBearing: 88, + advanceWidth: 1032, + }, + '{': { + x_min: 63, + x_max: 671, + y_min: -364, + y_max: 1597, + ha: 1961, + leftSideBearing: 63, + advanceWidth: 701, + }, + '|': { + x_min: 150, + x_max: 307, + y_min: -270, + y_max: 1456, + ha: 1726, + leftSideBearing: 150, + advanceWidth: 451, + }, + '}': { + x_min: 27, + x_max: 635, + y_min: -364, + y_max: 1597, + ha: 1961, + leftSideBearing: 27, + advanceWidth: 701, + }, + '~': { + x_min: 121, + x_max: 1257, + y_min: 401, + y_max: 803, + ha: 402, + leftSideBearing: 121, + advanceWidth: 1386, + }, + }, + fontFamily: 'Roboto Slab', + resolution: 2048, + generatedOn: '2020-06-15T19:12:58.120Z', +}; diff --git a/build/esm/src/fonts/textfonts.js b/build/esm/src/fonts/textfonts.js new file mode 100644 index 0000000000..e81301e0c1 --- /dev/null +++ b/build/esm/src/fonts/textfonts.js @@ -0,0 +1,44 @@ +import { Font } from '../font.js'; +import { TextFormatter } from '../textformatter.js'; +import { PetalumaScriptFont } from './petalumascript_glyphs.js'; +import { RobotoSlabFont } from './robotoslab_glyphs.js'; +export function loadTextFonts() { + { + const fontData = RobotoSlabFont; + const { fontFamily, resolution, glyphs } = fontData; + Font.load(fontFamily, fontData); + const maxSizeGlyph = 'b'; + TextFormatter.registerInfo({ + family: fontFamily, + resolution, + glyphs, + maxSizeGlyph, + monospaced: false, + bold: false, + italic: false, + superscriptOffset: 0.66, + subscriptOffset: 0.66, + serifs: true, + description: 'Text font to pair with the Bravura / Gonville music fonts.', + }); + } + { + const fontData = PetalumaScriptFont; + const { fontFamily, resolution, glyphs } = fontData; + Font.load(fontFamily, fontData); + const maxSizeGlyph = 'b'; + TextFormatter.registerInfo({ + family: fontFamily, + resolution, + glyphs, + maxSizeGlyph, + monospaced: false, + bold: false, + italic: false, + superscriptOffset: 0.66, + subscriptOffset: 0.66, + serifs: false, + description: 'Text font to pair with the Petaluma music font.', + }); + } +} diff --git a/build/esm/src/formatter.js b/build/esm/src/formatter.js new file mode 100644 index 0000000000..64a23d88ed --- /dev/null +++ b/build/esm/src/formatter.js @@ -0,0 +1,621 @@ +import { Beam } from './beam.js'; +import { Font } from './font.js'; +import { Fraction } from './fraction.js'; +import { ModifierContext } from './modifiercontext.js'; +import { Stave } from './stave.js'; +import { StaveConnector } from './staveconnector.js'; +import { Tables } from './tables.js'; +import { TickContext } from './tickcontext.js'; +import { isNote, isStaveNote } from './typeguard.js'; +import { defined, log, midLine, RuntimeError } from './util.js'; +import { Voice } from './voice.js'; +const sumArray = (arr) => arr.reduce((a, b) => a + b, 0); +function createContexts(voices, makeContext, addToContext) { + if (voices.length == 0) + return { + map: {}, + array: [], + list: [], + resolutionMultiplier: 0, + }; + const tickToContextMap = {}; + const tickList = []; + const contexts = []; + const resolutionMultiplier = Formatter.getResolutionMultiplier(voices); + voices.forEach((voice, voiceIndex) => { + const ticksUsed = new Fraction(0, resolutionMultiplier); + voice.getTickables().forEach((tickable) => { + const integerTicks = ticksUsed.numerator; + if (!tickToContextMap[integerTicks]) { + const newContext = makeContext({ tickID: integerTicks }); + contexts.push(newContext); + tickToContextMap[integerTicks] = newContext; + tickList.push(integerTicks); + } + addToContext(tickable, tickToContextMap[integerTicks], voiceIndex); + ticksUsed.add(tickable.getTicks()); + }); + }); + return { + map: tickToContextMap, + array: contexts, + list: tickList.sort((a, b) => a - b), + resolutionMultiplier, + }; +} +function L(...args) { + if (Formatter.DEBUG) + log('Vex.Flow.Formatter', args); +} +function getRestLineForNextNoteGroup(notes, currRestLine, currNoteIndex, compare) { + let nextRestLine = currRestLine; + for (let noteIndex = currNoteIndex + 1; noteIndex < notes.length; noteIndex++) { + const note = notes[noteIndex]; + if (isNote(note) && !note.isRest() && !note.shouldIgnoreTicks()) { + nextRestLine = note.getLineForRest(); + break; + } + } + if (compare && currRestLine !== nextRestLine) { + const top = Math.max(currRestLine, nextRestLine); + const bot = Math.min(currRestLine, nextRestLine); + nextRestLine = midLine(top, bot); + } + return nextRestLine; +} +export class Formatter { + constructor(options) { + this.formatterOptions = Object.assign({ globalSoftmax: false, softmaxFactor: Tables.SOFTMAX_FACTOR, maxIterations: 5 }, options); + this.justifyWidth = 0; + this.totalCost = 0; + this.totalShift = 0; + this.durationStats = {}; + this.minTotalWidth = 0; + this.hasMinTotalWidth = false; + this.tickContexts = { + map: {}, + array: [], + list: [], + resolutionMultiplier: 0, + }; + this.modifierContexts = []; + this.contextGaps = { + total: 0, + gaps: [], + }; + this.voices = []; + this.lossHistory = []; + } + static SimpleFormat(notes, x = 0, { paddingBetween = 10 } = {}) { + notes.reduce((accumulator, note) => { + note.addToModifierContext(new ModifierContext()); + const tick = new TickContext().addTickable(note).preFormat(); + const metrics = tick.getMetrics(); + tick.setX(accumulator + metrics.totalLeftPx); + return accumulator + tick.getWidth() + metrics.totalRightPx + paddingBetween; + }, x); + } + static plotDebugging(ctx, formatter, xPos, y1, y2, options) { + options = Object.assign({ stavePadding: Tables.currentMusicFont().lookupMetric('stave.padding') }, options); + const x = xPos + options.stavePadding; + const contextGaps = formatter.contextGaps; + function stroke(x1, x2, color) { + ctx.beginPath(); + ctx.setStrokeStyle(color); + ctx.setFillStyle(color); + ctx.setLineWidth(1); + ctx.fillRect(x1, y1, Math.max(x2 - x1, 0), y2 - y1); + } + ctx.save(); + ctx.setFont(Font.SANS_SERIF, 8); + contextGaps.gaps.forEach((gap) => { + stroke(x + gap.x1, x + gap.x2, 'rgba(100,200,100,0.4)'); + ctx.setFillStyle('green'); + ctx.fillText(Math.round(gap.x2 - gap.x1).toString(), x + gap.x1, y2 + 12); + }); + ctx.setFillStyle('red'); + ctx.fillText(`Loss: ${(formatter.totalCost || 0).toFixed(2)} Shift: ${(formatter.totalShift || 0).toFixed(2)} Gap: ${contextGaps.total.toFixed(2)}`, x - 20, y2 + 27); + ctx.restore(); + } + static FormatAndDraw(ctx, stave, notes, params) { + let options = { + auto_beam: false, + align_rests: false, + }; + if (typeof params === 'object') { + options = Object.assign(Object.assign({}, options), params); + } + else if (typeof params === 'boolean') { + options.auto_beam = params; + } + const voice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(notes); + const beams = options.auto_beam ? Beam.applyAndGetBeams(voice) : []; + new Formatter() + .joinVoices([voice]) + .formatToStave([voice], stave, { align_rests: options.align_rests, stave }); + voice.setStave(stave).draw(ctx, stave); + beams.forEach((beam) => beam.setContext(ctx).draw()); + return voice.getBoundingBox(); + } + static FormatAndDrawTab(ctx, tabstave, stave, tabnotes, notes, autobeam, params) { + let opts = { + auto_beam: autobeam, + align_rests: false, + }; + if (typeof params === 'object') { + opts = Object.assign(Object.assign({}, opts), params); + } + else if (typeof params === 'boolean') { + opts.auto_beam = params; + } + const notevoice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(notes); + const tabvoice = new Voice(Tables.TIME4_4).setMode(Voice.Mode.SOFT).addTickables(tabnotes); + const beams = opts.auto_beam ? Beam.applyAndGetBeams(notevoice) : []; + new Formatter() + .joinVoices([notevoice]) + .joinVoices([tabvoice]) + .formatToStave([notevoice, tabvoice], stave, { align_rests: opts.align_rests }); + notevoice.draw(ctx, stave); + tabvoice.draw(ctx, tabstave); + beams.forEach((beam) => beam.setContext(ctx).draw()); + new StaveConnector(stave, tabstave).setContext(ctx).draw(); + } + static AlignRestsToNotes(tickables, alignAllNotes, alignTuplets) { + tickables.forEach((currTickable, index) => { + if (isStaveNote(currTickable) && currTickable.isRest()) { + if (currTickable.getTuplet() && !alignTuplets) { + return; + } + const position = currTickable.getGlyph().position.toUpperCase(); + if (position !== 'R/4' && position !== 'B/4') { + return; + } + if (alignAllNotes || currTickable.getBeam()) { + const props = currTickable.getKeyProps()[0]; + if (index === 0) { + props.line = getRestLineForNextNoteGroup(tickables, props.line, index, false); + } + else if (index > 0 && index < tickables.length) { + const prevTickable = tickables[index - 1]; + if (isStaveNote(prevTickable)) { + if (prevTickable.isRest()) { + props.line = prevTickable.getKeyProps()[0].line; + } + else { + const restLine = prevTickable.getLineForRest(); + props.line = getRestLineForNextNoteGroup(tickables, restLine, index, true); + } + } + } + currTickable.setKeyLine(0, props.line); + } + } + }); + } + alignRests(voices, alignAllNotes) { + if (!voices || !voices.length) { + throw new RuntimeError('BadArgument', 'No voices to format rests'); + } + voices.forEach((voice) => Formatter.AlignRestsToNotes(voice.getTickables(), alignAllNotes)); + } + preCalculateMinTotalWidth(voices) { + const unalignedPadding = Tables.currentMusicFont().lookupMetric('stave.unalignedNotePadding'); + let unalignedCtxCount = 0; + let wsum = 0; + let dsum = 0; + const widths = []; + const durations = []; + if (this.hasMinTotalWidth) + return this.minTotalWidth; + if (!voices) { + throw new RuntimeError('BadArgument', "'voices' required to run preCalculateMinTotalWidth"); + } + this.createTickContexts(voices); + const { list: contextList, map: contextMap } = this.tickContexts; + this.minTotalWidth = 0; + contextList.forEach((tick) => { + const context = contextMap[tick]; + context.preFormat(); + if (context.getTickables().length < voices.length) { + unalignedCtxCount += 1; + } + context.getTickables().forEach((t) => { + wsum += t.getMetrics().width; + dsum += t.getTicks().value(); + widths.push(t.getMetrics().width); + durations.push(t.getTicks().value()); + }); + const width = context.getWidth(); + this.minTotalWidth += width; + }); + this.hasMinTotalWidth = true; + const wavg = wsum > 0 ? wsum / widths.length : 1 / widths.length; + const wvar = sumArray(widths.map((ll) => Math.pow(ll - wavg, 2))); + const wpads = Math.pow(wvar / widths.length, 0.5) / wavg; + const davg = dsum / durations.length; + const dvar = sumArray(durations.map((ll) => Math.pow(ll - davg, 2))); + const dpads = Math.pow(dvar / durations.length, 0.5) / davg; + const padmax = Math.max(dpads, wpads) * contextList.length * unalignedPadding; + const unalignedPad = unalignedPadding * unalignedCtxCount; + return this.minTotalWidth + Math.max(unalignedPad, padmax); + } + getMinTotalWidth() { + if (!this.hasMinTotalWidth) { + throw new RuntimeError('NoMinTotalWidth', "Call 'preCalculateMinTotalWidth' or 'preFormat' before calling 'getMinTotalWidth'"); + } + return this.minTotalWidth; + } + static getResolutionMultiplier(voices) { + if (!voices || !voices.length) { + throw new RuntimeError('BadArgument', 'No voices to format'); + } + const totalTicks = voices[0].getTotalTicks(); + const resolutionMultiplier = voices.reduce((accumulator, voice) => { + if (!voice.getTotalTicks().equals(totalTicks)) { + throw new RuntimeError('TickMismatch', 'Voices should have same total note duration in ticks.'); + } + if (voice.getMode() === Voice.Mode.STRICT && !voice.isComplete()) { + throw new RuntimeError('IncompleteVoice', 'Voice does not have enough notes.'); + } + return Math.max(accumulator, Fraction.LCM(accumulator, voice.getResolutionMultiplier())); + }, 1); + return resolutionMultiplier; + } + createModifierContexts(voices) { + if (voices.length == 0) + return; + const resolutionMultiplier = Formatter.getResolutionMultiplier(voices); + const tickToContextMap = new Map(); + const contexts = []; + voices.forEach((voice) => { + const ticksUsed = new Fraction(0, resolutionMultiplier); + voice.getTickables().forEach((tickable) => { + const integerTicks = ticksUsed.numerator; + let staveTickToContextMap = tickToContextMap.get(tickable.getStave()); + if (!staveTickToContextMap) { + tickToContextMap.set(tickable.getStave(), {}); + staveTickToContextMap = tickToContextMap.get(tickable.getStave()); + } + if (!(staveTickToContextMap ? staveTickToContextMap[integerTicks] : undefined)) { + const newContext = new ModifierContext(); + contexts.push(newContext); + staveTickToContextMap[integerTicks] = newContext; + } + tickable.addToModifierContext(staveTickToContextMap[integerTicks]); + ticksUsed.add(tickable.getTicks()); + }); + }); + this.modifierContexts.push({ + map: tickToContextMap, + array: contexts, + resolutionMultiplier, + }); + } + createTickContexts(voices) { + const fn = (tickable, context, voiceIndex) => context.addTickable(tickable, voiceIndex); + const contexts = createContexts(voices, (tick) => new TickContext(tick), fn); + this.tickContexts = contexts; + const contextArray = this.tickContexts.array; + contextArray.forEach((context) => { + context.tContexts = contextArray; + }); + return contexts; + } + getTickContexts() { + return this.tickContexts; + } + preFormat(justifyWidth = 0, renderingContext, voicesParam, stave) { + const contexts = this.tickContexts; + if (!contexts) { + throw new RuntimeError('NoTickContexts', 'preFormat requires TickContexts'); + } + const { list: contextList, map: contextMap } = contexts; + this.lossHistory = []; + if (voicesParam && stave) { + voicesParam.forEach((voice) => voice.setStave(stave).preFormat()); + } + let x = 0; + let shift = 0; + this.minTotalWidth = 0; + let totalTicks = 0; + contextList.forEach((tick) => { + const context = contextMap[tick]; + context.preFormat(); + const width = context.getWidth(); + this.minTotalWidth += width; + const maxTicks = context.getMaxTicks().value(); + totalTicks += maxTicks; + const metrics = context.getMetrics(); + x = x + shift + metrics.totalLeftPx; + context.setX(x); + shift = width - metrics.totalLeftPx; + }); + const { globalSoftmax, softmaxFactor, maxIterations } = this.formatterOptions; + const exp = (tick) => Math.pow(softmaxFactor, (contextMap[tick].getMaxTicks().value() / totalTicks)); + const expTicksUsed = sumArray(contextList.map(exp)); + this.minTotalWidth = x + shift; + this.hasMinTotalWidth = true; + if (justifyWidth <= 0) + return this.evaluate(); + const firstContext = contextMap[contextList[0]]; + const lastContext = contextMap[contextList[contextList.length - 1]]; + function calculateIdealDistances(adjustedJustifyWidth) { + const distances = contextList.map((tick, i) => { + const context = contextMap[tick]; + const voices = context.getTickablesByVoice(); + let backTickable; + if (i > 0) { + const prevContext = contextMap[contextList[i - 1]]; + for (let j = i - 1; j >= 0; j--) { + const backTick = contextMap[contextList[j]]; + const backVoices = backTick.getTickablesByVoice(); + const matchingVoices = []; + Object.keys(voices).forEach((v) => { + if (backVoices[v]) { + matchingVoices.push(v); + } + }); + if (matchingVoices.length > 0) { + let maxTicks = 0; + let maxNegativeShiftPx = Infinity; + let expectedDistance = 0; + matchingVoices.forEach((v) => { + const ticks = backVoices[v].getTicks().value(); + if (ticks > maxTicks) { + backTickable = backVoices[v]; + maxTicks = ticks; + } + const thisTickable = voices[v]; + const insideLeftEdge = thisTickable.getX() - + (thisTickable.getMetrics().modLeftPx + thisTickable.getMetrics().leftDisplacedHeadPx); + const backMetrics = backVoices[v].getMetrics(); + const insideRightEdge = backVoices[v].getX() + backMetrics.notePx + backMetrics.modRightPx + backMetrics.rightDisplacedHeadPx; + maxNegativeShiftPx = Math.min(maxNegativeShiftPx, insideLeftEdge - insideRightEdge); + }); + maxNegativeShiftPx = Math.min(maxNegativeShiftPx, context.getX() - (prevContext.getX() + adjustedJustifyWidth * 0.05)); + if (globalSoftmax) { + const t = totalTicks; + expectedDistance = (Math.pow(softmaxFactor, (maxTicks / t)) / expTicksUsed) * adjustedJustifyWidth; + } + else if (typeof backTickable !== 'undefined') { + expectedDistance = backTickable.getVoice().softmax(maxTicks) * adjustedJustifyWidth; + } + return { + expectedDistance, + maxNegativeShiftPx, + fromTickable: backTickable, + }; + } + } + } + return { expectedDistance: 0, fromTickablePx: 0, maxNegativeShiftPx: 0 }; + }); + return distances; + } + function shiftToIdealDistances(idealDistances) { + const centerX = adjustedJustifyWidth / 2; + let spaceAccum = 0; + contextList.forEach((tick, index) => { + const context = contextMap[tick]; + if (index > 0) { + const contextX = context.getX(); + const ideal = idealDistances[index]; + const errorPx = defined(ideal.fromTickable).getX() + ideal.expectedDistance - (contextX + spaceAccum); + let negativeShiftPx = 0; + if (errorPx > 0) { + spaceAccum += errorPx; + } + else if (errorPx < 0) { + negativeShiftPx = Math.min(ideal.maxNegativeShiftPx, Math.abs(errorPx)); + spaceAccum += -negativeShiftPx; + } + context.setX(contextX + spaceAccum); + } + context.getCenterAlignedTickables().forEach((tickable) => { + tickable.setCenterXShift(centerX - context.getX()); + }); + }); + return lastContext.getX() - firstContext.getX(); + } + const adjustedJustifyWidth = justifyWidth - + lastContext.getMetrics().notePx - + lastContext.getMetrics().totalRightPx - + firstContext.getMetrics().totalLeftPx; + const musicFont = Tables.currentMusicFont(); + const configMinPadding = musicFont.lookupMetric('stave.endPaddingMin'); + const configMaxPadding = musicFont.lookupMetric('stave.endPaddingMax'); + const leftPadding = musicFont.lookupMetric('stave.padding'); + let targetWidth = adjustedJustifyWidth; + const distances = calculateIdealDistances(targetWidth); + let actualWidth = shiftToIdealDistances(distances); + if (contextList.length === 1) + return 0; + const calcMinDistance = (targetWidth, distances) => { + let mdCalc = targetWidth / 2; + if (distances.length > 1) { + for (let di = 1; di < distances.length; ++di) { + mdCalc = Math.min(distances[di].expectedDistance / 2, mdCalc); + } + } + return mdCalc; + }; + const minDistance = calcMinDistance(targetWidth, distances); + const paddingMaxCalc = (curTargetWidth) => { + let lastTickablePadding = 0; + const lastTickable = lastContext && lastContext.getMaxTickable(); + if (lastTickable) { + const voice = lastTickable.getVoice(); + if (voice.getTicksUsed().value() > voice.getTotalTicks().value()) { + return configMaxPadding * 2 < minDistance ? minDistance : configMaxPadding; + } + const tickWidth = lastTickable.getWidth(); + lastTickablePadding = + voice.softmax(lastContext.getMaxTicks().value()) * curTargetWidth - (tickWidth + leftPadding); + } + return configMaxPadding * 2 < lastTickablePadding ? lastTickablePadding : configMaxPadding; + }; + let paddingMax = paddingMaxCalc(targetWidth); + let paddingMin = paddingMax - (configMaxPadding - configMinPadding); + const maxX = adjustedJustifyWidth - paddingMin; + let iterations = maxIterations; + while ((actualWidth > maxX && iterations > 0) || (actualWidth + paddingMax < maxX && iterations > 1)) { + targetWidth -= actualWidth - maxX; + paddingMax = paddingMaxCalc(targetWidth); + paddingMin = paddingMax - (configMaxPadding - configMinPadding); + actualWidth = shiftToIdealDistances(calculateIdealDistances(targetWidth)); + iterations--; + } + this.justifyWidth = justifyWidth; + return this.evaluate(); + } + evaluate() { + const contexts = this.tickContexts; + const justifyWidth = this.justifyWidth; + this.contextGaps = { total: 0, gaps: [] }; + contexts.list.forEach((tick, index) => { + if (index === 0) + return; + const prevTick = contexts.list[index - 1]; + const prevContext = contexts.map[prevTick]; + const context = contexts.map[tick]; + const prevMetrics = prevContext.getMetrics(); + const currMetrics = context.getMetrics(); + const insideRightEdge = prevContext.getX() + prevMetrics.notePx + prevMetrics.totalRightPx; + const insideLeftEdge = context.getX() - currMetrics.totalLeftPx; + const gap = insideLeftEdge - insideRightEdge; + this.contextGaps.total += gap; + this.contextGaps.gaps.push({ x1: insideRightEdge, x2: insideLeftEdge }); + context.getFormatterMetrics().freedom.left = gap; + prevContext.getFormatterMetrics().freedom.right = gap; + }); + this.durationStats = {}; + const durationStats = this.durationStats; + function updateStats(duration, space) { + const stats = durationStats[duration]; + if (stats === undefined) { + durationStats[duration] = { mean: space, count: 1 }; + } + else { + stats.count += 1; + stats.mean = (stats.mean + space) / 2; + } + } + this.voices.forEach((voice) => { + voice.getTickables().forEach((note, i, notes) => { + const duration = note.getTicks().clone().simplify().toString(); + const metrics = note.getMetrics(); + const formatterMetrics = note.getFormatterMetrics(); + const leftNoteEdge = note.getX() + metrics.notePx + metrics.modRightPx + metrics.rightDisplacedHeadPx; + let space = 0; + if (i < notes.length - 1) { + const rightNote = notes[i + 1]; + const rightMetrics = rightNote.getMetrics(); + const rightNoteEdge = rightNote.getX() - rightMetrics.modLeftPx - rightMetrics.leftDisplacedHeadPx; + space = rightNoteEdge - leftNoteEdge; + formatterMetrics.space.used = rightNote.getX() - note.getX(); + rightNote.getFormatterMetrics().freedom.left = space; + } + else { + space = justifyWidth - leftNoteEdge; + formatterMetrics.space.used = justifyWidth - note.getX(); + } + formatterMetrics.freedom.right = space; + updateStats(duration, formatterMetrics.space.used); + }); + }); + let totalDeviation = 0; + this.voices.forEach((voice) => { + voice.getTickables().forEach((note) => { + const duration = note.getTicks().clone().simplify().toString(); + const metrics = note.getFormatterMetrics(); + metrics.space.mean = durationStats[duration].mean; + metrics.duration = duration; + metrics.iterations += 1; + metrics.space.deviation = metrics.space.used - metrics.space.mean; + totalDeviation += Math.pow(metrics.space.deviation, 2); + }); + }); + this.totalCost = Math.sqrt(totalDeviation); + this.lossHistory.push(this.totalCost); + return this.totalCost; + } + tune(options) { + var _a; + const contexts = this.tickContexts; + if (!contexts) { + return 0; + } + const alpha = (_a = options === null || options === void 0 ? void 0 : options.alpha) !== null && _a !== void 0 ? _a : 0.5; + function move(current, shift, prev, next) { + current.setX(current.getX() + shift); + current.getFormatterMetrics().freedom.left += shift; + current.getFormatterMetrics().freedom.right -= shift; + if (prev) + prev.getFormatterMetrics().freedom.right += shift; + if (next) + next.getFormatterMetrics().freedom.left -= shift; + } + let shift = 0; + this.totalShift = 0; + contexts.list.forEach((tick, index, list) => { + const context = contexts.map[tick]; + const prevContext = index > 0 ? contexts.map[list[index - 1]] : undefined; + const nextContext = index < list.length - 1 ? contexts.map[list[index + 1]] : undefined; + move(context, shift, prevContext, nextContext); + const cost = -sumArray(context.getTickables().map((t) => t.getFormatterMetrics().space.deviation)); + if (cost > 0) { + shift = -Math.min(context.getFormatterMetrics().freedom.right, Math.abs(cost)); + } + else if (cost < 0) { + if (nextContext) { + shift = Math.min(nextContext.getFormatterMetrics().freedom.right, Math.abs(cost)); + } + else { + shift = 0; + } + } + shift *= alpha; + this.totalShift += shift; + }); + return this.evaluate(); + } + postFormat() { + this.modifierContexts.forEach((modifierContexts) => { + modifierContexts.array.forEach((mc) => mc.postFormat()); + }); + this.tickContexts.list.forEach((tick) => { + this.tickContexts.map[tick].postFormat(); + }); + return this; + } + joinVoices(voices) { + this.createModifierContexts(voices); + this.hasMinTotalWidth = false; + return this; + } + format(voices, justifyWidth, options) { + const opts = Object.assign({ align_rests: false }, options); + this.voices = voices; + const softmaxFactor = this.formatterOptions.softmaxFactor; + if (softmaxFactor) { + this.voices.forEach((v) => v.setSoftmaxFactor(softmaxFactor)); + } + this.alignRests(voices, opts.align_rests); + this.createTickContexts(voices); + this.preFormat(justifyWidth, opts.context, voices, opts.stave); + if (opts.stave) + this.postFormat(); + return this; + } + formatToStave(voices, stave, optionsParam) { + const options = Object.assign({ context: stave.getContext() }, optionsParam); + const justifyWidth = stave.getNoteEndX() - stave.getNoteStartX() - Stave.defaultPadding; + L('Formatting voices to width: ', justifyWidth); + return this.format(voices, justifyWidth, options); + } + getTickContext(tick) { + var _a; + return (_a = this.tickContexts) === null || _a === void 0 ? void 0 : _a.map[tick]; + } +} +Formatter.DEBUG = false; diff --git a/build/esm/src/fraction.js b/build/esm/src/fraction.js new file mode 100644 index 0000000000..d87c70825c --- /dev/null +++ b/build/esm/src/fraction.js @@ -0,0 +1,171 @@ +import { RuntimeError } from './util.js'; +export class Fraction { + constructor(numerator, denominator) { + this.numerator = 1; + this.denominator = 1; + this.set(numerator, denominator); + } + static get CATEGORY() { + return "Fraction"; + } + static GCD(a, b) { + if (typeof a !== 'number' || Number.isNaN(a) || typeof b !== 'number' || Number.isNaN(b)) { + throw new RuntimeError('BadArgument', `Invalid numbers: ${a}, ${b}`); + } + let t; + while (b !== 0) { + t = b; + b = a % b; + a = t; + } + return a; + } + static LCM(a, b) { + return (a * b) / Fraction.GCD(a, b); + } + static LCMM(args) { + if (args.length === 0) { + return 0; + } + else if (args.length === 1) { + return args[0]; + } + else if (args.length === 2) { + return Fraction.LCM(args[0], args[1]); + } + else { + return Fraction.LCM(args.shift(), Fraction.LCMM(args)); + } + } + set(numerator = 1, denominator = 1) { + this.numerator = numerator; + this.denominator = denominator; + return this; + } + value() { + return this.numerator / this.denominator; + } + simplify() { + let u = this.numerator; + let d = this.denominator; + const gcd = Fraction.GCD(u, d); + u /= gcd; + d /= gcd; + if (d < 0) { + d = -d; + u = -u; + } + return this.set(u, d); + } + add(param1 = 0, param2 = 1) { + const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2); + const lcm = Fraction.LCM(this.denominator, otherDenominator); + const a = lcm / this.denominator; + const b = lcm / otherDenominator; + const u = this.numerator * a + otherNumerator * b; + return this.set(u, lcm); + } + subtract(param1 = 0, param2 = 1) { + const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2); + const lcm = Fraction.LCM(this.denominator, otherDenominator); + const a = lcm / this.denominator; + const b = lcm / otherDenominator; + const u = this.numerator * a - otherNumerator * b; + return this.set(u, lcm); + } + multiply(param1 = 1, param2 = 1) { + const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2); + return this.set(this.numerator * otherNumerator, this.denominator * otherDenominator); + } + divide(param1 = 1, param2 = 1) { + const [otherNumerator, otherDenominator] = getNumeratorAndDenominator(param1, param2); + return this.set(this.numerator * otherDenominator, this.denominator * otherNumerator); + } + equals(compare) { + const a = Fraction.__staticFractionA.copy(compare).simplify(); + const b = Fraction.__staticFractionB.copy(this).simplify(); + return a.numerator === b.numerator && a.denominator === b.denominator; + } + greaterThan(compare) { + const a = Fraction.__staticFractionB.copy(this); + a.subtract(compare); + return a.numerator > 0; + } + greaterThanEquals(compare) { + const a = Fraction.__staticFractionB.copy(this); + a.subtract(compare); + return a.numerator >= 0; + } + lessThan(compare) { + return !this.greaterThanEquals(compare); + } + lessThanEquals(compare) { + return !this.greaterThan(compare); + } + clone() { + return new Fraction(this.numerator, this.denominator); + } + copy(other) { + if (typeof other === 'number') { + return this.set(other, 1); + } + else { + return this.set(other.numerator, other.denominator); + } + } + quotient() { + return Math.floor(this.numerator / this.denominator); + } + remainder() { + return this.numerator % this.denominator; + } + makeAbs() { + this.denominator = Math.abs(this.denominator); + this.numerator = Math.abs(this.numerator); + return this; + } + toString() { + return `${this.numerator}/${this.denominator}`; + } + toSimplifiedString() { + return Fraction.__staticFractionTmp.copy(this).simplify().toString(); + } + toMixedString() { + let s = ''; + const q = this.quotient(); + const f = Fraction.__staticFractionTmp.copy(this); + if (q < 0) { + f.makeAbs(); + } + if (q !== 0) { + s += q; + if (f.numerator !== 0) { + s += ` ${f.toSimplifiedString()}`; + } + } + else if (f.numerator === 0) { + s = '0'; + } + else { + s = f.toSimplifiedString(); + } + return s; + } + parse(str) { + const i = str.split('/'); + const n = parseInt(i[0], 10); + const d = i[1] ? parseInt(i[1], 10) : 1; + return this.set(n, d); + } +} +Fraction.__staticFractionA = new Fraction(); +Fraction.__staticFractionB = new Fraction(); +Fraction.__staticFractionTmp = new Fraction(); +function getNumeratorAndDenominator(n, d = 1) { + if (typeof n === 'number') { + return [n, d]; + } + else { + return [n.numerator, n.denominator]; + } +} diff --git a/build/esm/src/frethandfinger.js b/build/esm/src/frethandfinger.js new file mode 100644 index 0000000000..e2c1e8badc --- /dev/null +++ b/build/esm/src/frethandfinger.js @@ -0,0 +1,156 @@ +import { Font, FontStyle, FontWeight } from './font.js'; +import { Modifier, ModifierPosition } from './modifier.js'; +import { Tables } from './tables.js'; +import { TextFormatter } from './textformatter.js'; +import { RuntimeError } from './util.js'; +export class FretHandFinger extends Modifier { + constructor(finger) { + super(); + this.finger = finger; + this.width = 7; + this.position = Modifier.Position.LEFT; + this.x_shift = 0; + this.y_shift = 0; + this.x_offset = 0; + this.y_offset = 0; + this.resetFont(); + } + static get CATEGORY() { + return "FretHandFinger"; + } + static format(nums, state) { + const { left_shift, right_shift } = state; + const num_spacing = 1; + if (!nums || nums.length === 0) + return false; + const nums_list = []; + let prev_note = null; + let shiftLeft = 0; + let shiftRight = 0; + for (let i = 0; i < nums.length; ++i) { + const num = nums[i]; + const note = num.getNote(); + const pos = num.getPosition(); + const index = num.checkIndex(); + const props = note.getKeyProps()[index]; + const textFormatter = TextFormatter.create(num.textFont); + const textHeight = textFormatter.maxHeight; + if (num.position === ModifierPosition.ABOVE) { + state.top_text_line += textHeight / Tables.STAVE_LINE_DISTANCE + 0.5; + } + if (num.position === ModifierPosition.BELOW) { + state.text_line += textHeight / Tables.STAVE_LINE_DISTANCE + 0.5; + } + if (note !== prev_note) { + for (let n = 0; n < note.keys.length; ++n) { + if (left_shift === 0) { + shiftLeft = Math.max(note.getLeftDisplacedHeadPx(), shiftLeft); + } + if (right_shift === 0) { + shiftRight = Math.max(note.getRightDisplacedHeadPx(), shiftRight); + } + } + prev_note = note; + } + nums_list.push({ + note, + num, + pos, + line: props.line, + shiftL: shiftLeft, + shiftR: shiftRight, + }); + } + nums_list.sort((a, b) => b.line - a.line); + let numShiftL = 0; + let numShiftR = 0; + let xWidthL = 0; + let xWidthR = 0; + let lastLine = null; + let lastNote = null; + for (let i = 0; i < nums_list.length; ++i) { + let num_shift = 0; + const { note, pos, num, line, shiftL, shiftR } = nums_list[i]; + if (line !== lastLine || note !== lastNote) { + numShiftL = left_shift + shiftL; + numShiftR = right_shift + shiftR; + } + const numWidth = num.getWidth() + num_spacing; + if (pos === Modifier.Position.LEFT) { + num.setXShift(left_shift + numShiftL); + num_shift = left_shift + numWidth; + xWidthL = num_shift > xWidthL ? num_shift : xWidthL; + } + else if (pos === Modifier.Position.RIGHT) { + num.setXShift(numShiftR); + num_shift = shiftRight + numWidth; + xWidthR = num_shift > xWidthR ? num_shift : xWidthR; + } + lastLine = line; + lastNote = note; + } + state.left_shift += xWidthL; + state.right_shift += xWidthR; + return true; + } + static easyScoreHook({ fingerings } = {}, note, builder) { + fingerings === null || fingerings === void 0 ? void 0 : fingerings.split(',').map((fingeringString) => { + const split = fingeringString.trim().split('.'); + const params = { number: split[0] }; + if (split[1]) + params.position = split[1]; + return builder.getFactory().Fingering(params); + }).map((fingering, index) => note.addModifier(fingering, index)); + } + setFretHandFinger(finger) { + this.finger = finger; + return this; + } + getFretHandFinger() { + return this.finger; + } + setOffsetX(x) { + this.x_offset = x; + return this; + } + setOffsetY(y) { + this.y_offset = y; + return this; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const start = note.getModifierStartXY(this.position, this.index); + let dot_x = start.x + this.x_shift + this.x_offset; + let dot_y = start.y + this.y_shift + this.y_offset + 5; + switch (this.position) { + case Modifier.Position.ABOVE: + dot_x -= 4; + dot_y -= 12; + break; + case Modifier.Position.BELOW: + dot_x -= 2; + dot_y += 10; + break; + case Modifier.Position.LEFT: + dot_x -= this.width; + break; + case Modifier.Position.RIGHT: + dot_x += 1; + break; + default: + throw new RuntimeError('InvalidPosition', `The position ${this.position} does not exist`); + } + ctx.save(); + ctx.setFont(this.textFont); + ctx.fillText('' + this.finger, dot_x, dot_y); + ctx.restore(); + } +} +FretHandFinger.TEXT_FONT = { + family: Font.SANS_SERIF, + size: 9, + weight: FontWeight.BOLD, + style: FontStyle.NORMAL, +}; diff --git a/build/esm/src/ghostnote.js b/build/esm/src/ghostnote.js new file mode 100644 index 0000000000..02b3f05342 --- /dev/null +++ b/build/esm/src/ghostnote.js @@ -0,0 +1,50 @@ +import { StemmableNote } from './stemmablenote.js'; +import { isAnnotation } from './typeguard.js'; +import { RuntimeError } from './util.js'; +const ERROR_MSG = 'Ghost note must have valid initialization data to identify duration.'; +export class GhostNote extends StemmableNote { + static get CATEGORY() { + return "GhostNote"; + } + constructor(parameter) { + if (!parameter) { + throw new RuntimeError('BadArguments', ERROR_MSG); + } + let noteStruct; + if (typeof parameter === 'string') { + noteStruct = { duration: parameter }; + } + else if (typeof parameter === 'object') { + noteStruct = parameter; + } + else { + throw new RuntimeError('BadArguments', ERROR_MSG); + } + super(noteStruct); + this.setWidth(0); + } + isRest() { + return true; + } + setStave(stave) { + super.setStave(stave); + return this; + } + addToModifierContext(mc) { + return this; + } + preFormat() { + this.preFormatted = true; + return this; + } + draw() { + this.setRendered(); + for (let i = 0; i < this.modifiers.length; ++i) { + const modifier = this.modifiers[i]; + if (isAnnotation(modifier)) { + modifier.setContext(this.getContext()); + modifier.drawWithStyle(); + } + } + } +} diff --git a/build/esm/src/glyph.js b/build/esm/src/glyph.js new file mode 100644 index 0000000000..65edcde7e3 --- /dev/null +++ b/build/esm/src/glyph.js @@ -0,0 +1,340 @@ +import { BoundingBox } from './boundingbox.js'; +import { BoundingBoxComputation } from './boundingboxcomputation.js'; +import { Element } from './element.js'; +import { Tables } from './tables.js'; +import { defined, RuntimeError } from './util.js'; +class GlyphCacheEntry { + constructor(fontStack, code, category) { + this.point = -1; + this.metrics = Glyph.loadMetrics(fontStack, code, category); + this.bbox = Glyph.getOutlineBoundingBox(this.metrics.outline, this.metrics.scale, this.metrics.x_shift, this.metrics.y_shift); + if (category) { + this.point = Glyph.lookupFontMetric(this.metrics.font, category, code, 'point', -1); + } + } +} +class GlyphCache { + constructor() { + this.cache = new Map(); + } + lookup(code, category) { + let entries = this.cache.get(Glyph.CURRENT_CACHE_KEY); + if (entries === undefined) { + entries = {}; + this.cache.set(Glyph.CURRENT_CACHE_KEY, entries); + } + const key = category ? `${code}%${category}` : code; + let entry = entries[key]; + if (entry === undefined) { + entry = new GlyphCacheEntry(Glyph.MUSIC_FONT_STACK, code, category); + entries[key] = entry; + } + return entry; + } +} +class GlyphOutline { + constructor(outline, originX, originY, scale) { + this.outline = outline; + this.originX = originX; + this.originY = originY; + this.scale = scale; + this.i = 0; + this.precision = 1; + this.precision = Math.pow(10, Tables.RENDER_PRECISION_PLACES); + } + done() { + return this.i >= this.outline.length; + } + next() { + return Math.round((this.outline[this.i++] * this.precision) / this.precision); + } + nextX() { + return Math.round((this.originX + this.outline[this.i++] * this.scale) * this.precision) / this.precision; + } + nextY() { + return Math.round((this.originY - this.outline[this.i++] * this.scale) * this.precision) / this.precision; + } + static parse(str) { + const result = []; + const parts = str.split(' '); + let i = 0; + while (i < parts.length) { + switch (parts[i++]) { + case 'm': + result.push(0, parseInt(parts[i++]), parseInt(parts[i++])); + break; + case 'l': + result.push(1, parseInt(parts[i++]), parseInt(parts[i++])); + break; + case 'q': + result.push(2, parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++])); + break; + case 'b': + result.push(3, parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++]), parseInt(parts[i++])); + break; + } + } + return result; + } +} +export class Glyph extends Element { + constructor(code, point, options) { + super(); + this.bbox = new BoundingBox(0, 0, 0, 0); + this.topGlyphs = []; + this.botGlyphs = []; + this.options = {}; + this.scale = 1; + this.code = code; + this.point = point; + this.originShift = { x: 0, y: 0 }; + this.x_shift = 0; + this.y_shift = 0; + if (options) { + this.setOptions(options); + } + else { + this.reset(); + } + } + static get CATEGORY() { + return "Glyph"; + } + static lookupFontMetric(font, category, code, key, defaultValue) { + let value = font.lookupMetric(`glyphs.${category}.${code}.${key}`, undefined); + if (value === undefined) { + value = font.lookupMetric(`glyphs.${category}.${key}`, defaultValue); + } + return value; + } + static lookupGlyph(fontStack, code) { + defined(fontStack, 'BadFontStack', 'Font stack is misconfigured'); + let glyph; + let font; + for (let i = 0; i < fontStack.length; i++) { + font = fontStack[i]; + glyph = font.getGlyphs()[code]; + if (glyph) + return { glyph, font }; + } + throw new RuntimeError('BadGlyph', `Glyph ${code} does not exist in font.`); + } + static loadMetrics(fontStack, code, category) { + const { glyph, font } = Glyph.lookupGlyph(fontStack, code); + if (!glyph.o) + throw new RuntimeError('BadGlyph', `Glyph ${code} has no outline defined.`); + let x_shift = 0; + let y_shift = 0; + let scale = 1; + if (category && font) { + x_shift = Glyph.lookupFontMetric(font, category, code, 'shiftX', 0); + y_shift = Glyph.lookupFontMetric(font, category, code, 'shiftY', 0); + scale = Glyph.lookupFontMetric(font, category, code, 'scale', 1); + } + const x_min = glyph.x_min; + const x_max = glyph.x_max; + const ha = glyph.ha; + if (!glyph.cached_outline) { + glyph.cached_outline = GlyphOutline.parse(glyph.o); + } + return { + x_min, + x_max, + x_shift, + y_shift, + scale, + ha, + outline: glyph.cached_outline, + font, + width: x_max - x_min, + height: ha, + }; + } + static renderGlyph(ctx, x_pos, y_pos, point, code, options) { + var _a; + const data = Glyph.cache.lookup(code, options === null || options === void 0 ? void 0 : options.category); + const metrics = data.metrics; + if (data.point != -1) { + point = data.point; + } + const customScale = (_a = options === null || options === void 0 ? void 0 : options.scale) !== null && _a !== void 0 ? _a : 1; + const scale = ((point * 72.0) / (metrics.font.getResolution() * 100.0)) * metrics.scale * customScale; + Glyph.renderOutline(ctx, metrics.outline, scale, x_pos + metrics.x_shift * customScale, y_pos + metrics.y_shift * customScale); + return metrics; + } + static renderOutline(ctx, outline, scale, x_pos, y_pos) { + const go = new GlyphOutline(outline, x_pos, y_pos, scale); + ctx.beginPath(); + let x, y; + while (!go.done()) { + switch (go.next()) { + case 0: + ctx.moveTo(go.nextX(), go.nextY()); + break; + case 1: + ctx.lineTo(go.nextX(), go.nextY()); + break; + case 2: + x = go.nextX(); + y = go.nextY(); + ctx.quadraticCurveTo(go.nextX(), go.nextY(), x, y); + break; + case 3: + x = go.nextX(); + y = go.nextY(); + ctx.bezierCurveTo(go.nextX(), go.nextY(), go.nextX(), go.nextY(), x, y); + break; + } + } + ctx.fill(); + } + static getOutlineBoundingBox(outline, scale, x_pos, y_pos) { + const go = new GlyphOutline(outline, x_pos, y_pos, scale); + const bboxComp = new BoundingBoxComputation(); + let penX = x_pos; + let penY = y_pos; + let x, y; + while (!go.done()) { + switch (go.next()) { + case 0: + penX = go.nextX(); + penY = go.nextY(); + break; + case 1: + bboxComp.addPoint(penX, penY); + penX = go.nextX(); + penY = go.nextY(); + bboxComp.addPoint(penX, penY); + break; + case 2: + x = go.nextX(); + y = go.nextY(); + bboxComp.addQuadraticCurve(penX, penY, go.nextX(), go.nextY(), x, y); + penX = x; + penY = y; + break; + case 3: + x = go.nextX(); + y = go.nextY(); + bboxComp.addBezierCurve(penX, penY, go.nextX(), go.nextY(), go.nextX(), go.nextY(), x, y); + penX = x; + penY = y; + break; + } + } + return new BoundingBox(bboxComp.getX1(), bboxComp.getY1(), bboxComp.width(), bboxComp.height()); + } + static getWidth(code, point, category) { + const data = Glyph.cache.lookup(code, category); + if (data.point != -1) { + point = data.point; + } + const scale = (point * 72) / (data.metrics.font.getResolution() * 100); + return data.bbox.getW() * scale; + } + draw(...args) { + } + getCode() { + return this.code; + } + setOptions(options) { + this.options = Object.assign(Object.assign({}, this.options), options); + this.reset(); + } + setPoint(point) { + this.point = point; + return this; + } + setStave(stave) { + this.stave = stave; + return this; + } + getXShift() { + return this.x_shift; + } + setXShift(x_shift) { + this.x_shift = x_shift; + return this; + } + getYshift() { + return this.y_shift; + } + setYShift(y_shift) { + this.y_shift = y_shift; + return this; + } + reset() { + const data = Glyph.cache.lookup(this.code, this.options.category); + this.metrics = data.metrics; + if (data.point != -1) { + this.point = data.point; + } + this.scale = (this.point * 72) / (this.metrics.font.getResolution() * 100); + this.bbox = new BoundingBox(data.bbox.getX() * this.scale, data.bbox.getY() * this.scale, data.bbox.getW() * this.scale, data.bbox.getH() * this.scale); + } + checkMetrics() { + return defined(this.metrics, 'BadGlyph', `Glyph ${this.code} is not initialized.`); + } + getMetrics() { + const metrics = this.checkMetrics(); + const metricsScale = metrics.scale; + return { + x_min: metrics.x_min * this.scale * metricsScale, + x_max: metrics.x_max * this.scale * metricsScale, + width: this.bbox.getW(), + height: this.bbox.getH(), + scale: this.scale * metricsScale, + x_shift: metrics.x_shift, + y_shift: metrics.y_shift, + outline: metrics.outline, + font: metrics.font, + ha: metrics.ha, + }; + } + setOriginX(x) { + const { bbox } = this; + const originX = Math.abs(bbox.getX() / bbox.getW()); + const xShift = (x - originX) * bbox.getW(); + this.originShift.x = -xShift; + } + setOriginY(y) { + const { bbox } = this; + const originY = Math.abs(bbox.getY() / bbox.getH()); + const yShift = (y - originY) * bbox.getH(); + this.originShift.y = -yShift; + } + setOrigin(x, y) { + this.setOriginX(x); + this.setOriginY(y); + } + render(ctx, x, y) { + const metrics = this.checkMetrics(); + const outline = metrics.outline; + const scale = this.scale * metrics.scale; + this.setRendered(); + this.applyStyle(ctx); + const xPos = x + this.originShift.x + metrics.x_shift; + const yPos = y + this.originShift.y + metrics.y_shift; + Glyph.renderOutline(ctx, outline, scale, xPos, yPos); + this.restoreStyle(ctx); + } + checkStave() { + return defined(this.stave, 'NoStave', 'No stave attached to instance.'); + } + renderToStave(x) { + const context = this.checkContext(); + const metrics = this.checkMetrics(); + const stave = this.checkStave(); + const outline = metrics.outline; + const scale = this.scale * metrics.scale; + this.setRendered(); + this.applyStyle(); + const xPos = x + this.x_shift + metrics.x_shift; + const yPos = stave.getYForGlyphs() + this.y_shift + metrics.y_shift; + Glyph.renderOutline(context, outline, scale, xPos, yPos); + this.restoreStyle(); + } +} +Glyph.cache = new GlyphCache(); +Glyph.CURRENT_CACHE_KEY = ''; +Glyph.MUSIC_FONT_STACK = []; diff --git a/build/esm/src/glyphnote.js b/build/esm/src/glyphnote.js new file mode 100644 index 0000000000..f7de102351 --- /dev/null +++ b/build/esm/src/glyphnote.js @@ -0,0 +1,53 @@ +import { Note } from './note.js'; +export class GlyphNote extends Note { + constructor(glyph, noteStruct, options) { + super(noteStruct); + this.options = Object.assign({ ignoreTicks: false, line: 2 }, options); + this.ignore_ticks = this.options.ignoreTicks; + if (glyph) { + this.setGlyph(glyph); + } + } + static get CATEGORY() { + return "GlyphNote"; + } + setGlyph(glyph) { + this.glyph = glyph; + this.setWidth(this.glyph.getMetrics().width); + return this; + } + getBoundingBox() { + return this.glyph.getBoundingBox(); + } + preFormat() { + if (!this.preFormatted && this.modifierContext) { + this.modifierContext.preFormat(); + } + this.preFormatted = true; + return this; + } + drawModifiers() { + const ctx = this.checkContext(); + for (let i = 0; i < this.modifiers.length; i++) { + const modifier = this.modifiers[i]; + modifier.setContext(ctx); + modifier.drawWithStyle(); + } + } + draw() { + const stave = this.checkStave(); + const ctx = stave.checkContext(); + this.setRendered(); + ctx.openGroup('glyphNote', this.getAttribute('id')); + const glyph = this.glyph; + if (!glyph.getContext()) { + glyph.setContext(ctx); + } + glyph.setStave(stave); + glyph.setYShift(stave.getYForLine(this.options.line) - stave.getYForGlyphs()); + const x = this.isCenterAligned() ? this.getAbsoluteX() - this.getWidth() / 2 : this.getAbsoluteX(); + glyph.renderToStave(x); + this.drawModifiers(); + ctx.closeGroup(); + } +} diff --git a/build/esm/src/gracenote.js b/build/esm/src/gracenote.js new file mode 100644 index 0000000000..30a5a5c8b5 --- /dev/null +++ b/build/esm/src/gracenote.js @@ -0,0 +1,133 @@ +import { StaveNote } from './stavenote.js'; +import { Stem } from './stem.js'; +import { Tables } from './tables.js'; +import { RuntimeError } from './util.js'; +export class GraceNote extends StaveNote { + constructor(noteStruct) { + super(Object.assign({ glyph_font_scale: Tables.NOTATION_FONT_SCALE * GraceNote.SCALE, stroke_px: GraceNote.LEDGER_LINE_OFFSET }, noteStruct)); + this.slash = noteStruct.slash || false; + this.slur = true; + this.buildNoteHeads(); + this.width = 3; + } + static get CATEGORY() { + return "GraceNote"; + } + static get LEDGER_LINE_OFFSET() { + return 2; + } + static get SCALE() { + return 0.66; + } + getStemExtension() { + if (this.stem_extension_override) { + return this.stem_extension_override; + } + const glyph = this.getGlyph(); + if (glyph) { + let ret = super.getStemExtension(); + if (glyph.stem) { + const staveNoteScale = this.getStaveNoteScale(); + ret = (Stem.HEIGHT + ret) * staveNoteScale - Stem.HEIGHT; + } + return ret; + } + return 0; + } + getStaveNoteScale() { + return this.render_options.glyph_font_scale / Tables.NOTATION_FONT_SCALE; + } + draw() { + super.draw(); + this.setRendered(); + const stem = this.stem; + if (this.slash && stem) { + const staveNoteScale = this.getStaveNoteScale(); + const offsetScale = staveNoteScale / 0.66; + let slashBBox = undefined; + const beam = this.beam; + if (beam) { + if (!beam.postFormatted) { + beam.postFormat(); + } + slashBBox = this.calcBeamedNotesSlashBBox(8 * offsetScale, 8 * offsetScale, { + stem: 6 * offsetScale, + beam: 5 * offsetScale, + }); + } + else { + const stem_direction = this.getStemDirection(); + const noteHeadBounds = this.getNoteHeadBounds(); + const noteStemHeight = stem.getHeight(); + let x = this.getAbsoluteX(); + let y = stem_direction === Stem.DOWN + ? noteHeadBounds.y_top - noteStemHeight + : noteHeadBounds.y_bottom - noteStemHeight; + const defaultStemExtention = stem_direction === Stem.DOWN ? this.glyph.stem_down_extension : this.glyph.stem_up_extension; + let defaultOffsetY = Tables.STEM_HEIGHT; + defaultOffsetY -= defaultOffsetY / 2.8; + defaultOffsetY += defaultStemExtention; + y += defaultOffsetY * staveNoteScale * stem_direction; + const offsets = stem_direction === Stem.UP + ? { + x1: 1, + y1: 0, + x2: 13, + y2: -9, + } + : { + x1: -4, + y1: 1, + x2: 13, + y2: 9, + }; + x += offsets.x1 * offsetScale; + y += offsets.y1 * offsetScale; + slashBBox = { + x1: x, + y1: y, + x2: x + offsets.x2 * offsetScale, + y2: y + offsets.y2 * offsetScale, + }; + } + const ctx = this.checkContext(); + ctx.save(); + ctx.setLineWidth(1 * offsetScale); + ctx.beginPath(); + ctx.moveTo(slashBBox.x1, slashBBox.y1); + ctx.lineTo(slashBBox.x2, slashBBox.y2); + ctx.closePath(); + ctx.stroke(); + ctx.restore(); + } + } + calcBeamedNotesSlashBBox(slashStemOffset, slashBeamOffset, protrusions) { + const beam = this.beam; + if (!beam) + throw new RuntimeError('NoBeam', "Can't calculate without a beam."); + const beam_slope = beam.slope; + const isBeamEndNote = beam.notes[beam.notes.length - 1] === this; + const scaleX = isBeamEndNote ? -1 : 1; + const beam_angle = Math.atan(beam_slope * scaleX); + const iPointOnBeam = { + dx: Math.cos(beam_angle) * slashBeamOffset, + dy: Math.sin(beam_angle) * slashBeamOffset, + }; + slashStemOffset *= this.getStemDirection(); + const slash_angle = Math.atan((iPointOnBeam.dy - slashStemOffset) / iPointOnBeam.dx); + const protrusion_stem_dx = Math.cos(slash_angle) * protrusions.stem * scaleX; + const protrusion_stem_dy = Math.sin(slash_angle) * protrusions.stem; + const protrusion_beam_dx = Math.cos(slash_angle) * protrusions.beam * scaleX; + const protrusion_beam_dy = Math.sin(slash_angle) * protrusions.beam; + const stemX = this.getStemX(); + const stem0X = beam.notes[0].getStemX(); + const stemY = beam.getBeamYToDraw() + (stemX - stem0X) * beam_slope; + const ret = { + x1: stemX - protrusion_stem_dx, + y1: stemY + slashStemOffset - protrusion_stem_dy, + x2: stemX + iPointOnBeam.dx * scaleX + protrusion_beam_dx, + y2: stemY + iPointOnBeam.dy + protrusion_beam_dy, + }; + return ret; + } +} diff --git a/build/esm/src/gracenotegroup.js b/build/esm/src/gracenotegroup.js new file mode 100644 index 0000000000..2d5feab942 --- /dev/null +++ b/build/esm/src/gracenotegroup.js @@ -0,0 +1,129 @@ +import { Beam } from './beam.js'; +import { Formatter } from './formatter.js'; +import { Modifier } from './modifier.js'; +import { StaveNote } from './stavenote.js'; +import { StaveTie } from './stavetie.js'; +import { Tables } from './tables.js'; +import { TabTie } from './tabtie.js'; +import { isStaveNote } from './typeguard.js'; +import { log } from './util.js'; +import { Voice } from './voice.js'; +function L(...args) { + if (GraceNoteGroup.DEBUG) + log('Vex.Flow.GraceNoteGroup', args); +} +export class GraceNoteGroup extends Modifier { + constructor(grace_notes, show_slur) { + super(); + this.preFormatted = false; + this.position = Modifier.Position.LEFT; + this.grace_notes = grace_notes; + this.width = 0; + this.show_slur = show_slur; + this.slur = undefined; + this.voice = new Voice({ + num_beats: 4, + beat_value: 4, + resolution: Tables.RESOLUTION, + }).setStrict(false); + this.render_options = { + slur_y_shift: 0, + }; + this.beams = []; + this.voice.addTickables(this.grace_notes); + return this; + } + static get CATEGORY() { + return "GraceNoteGroup"; + } + static format(gracenote_groups, state) { + const group_spacing_stave = 4; + const group_spacing_tab = 0; + if (!gracenote_groups || gracenote_groups.length === 0) + return false; + const group_list = []; + let prev_note = null; + let shiftL = 0; + for (let i = 0; i < gracenote_groups.length; ++i) { + const gracenote_group = gracenote_groups[i]; + const note = gracenote_group.getNote(); + const is_stavenote = isStaveNote(note); + const spacing = is_stavenote ? group_spacing_stave : group_spacing_tab; + if (is_stavenote && note !== prev_note) { + for (let n = 0; n < note.keys.length; ++n) { + shiftL = Math.max(note.getLeftDisplacedHeadPx(), shiftL); + } + prev_note = note; + } + group_list.push({ shift: shiftL, gracenote_group, spacing }); + } + let group_shift = group_list[0].shift; + let formatWidth; + for (let i = 0; i < group_list.length; ++i) { + const gracenote_group = group_list[i].gracenote_group; + gracenote_group.preFormat(); + formatWidth = gracenote_group.getWidth() + group_list[i].spacing; + group_shift = Math.max(formatWidth, group_shift); + } + for (let i = 0; i < group_list.length; ++i) { + const gracenote_group = group_list[i].gracenote_group; + formatWidth = gracenote_group.getWidth() + group_list[i].spacing; + gracenote_group.setSpacingFromNextModifier(group_shift - Math.min(formatWidth, group_shift) + StaveNote.minNoteheadPadding); + } + state.left_shift += group_shift; + return true; + } + preFormat() { + if (this.preFormatted) + return; + if (!this.formatter) { + this.formatter = new Formatter(); + } + this.formatter.joinVoices([this.voice]).format([this.voice], 0, {}); + this.setWidth(this.formatter.getMinTotalWidth()); + this.preFormatted = true; + } + beamNotes(grace_notes) { + grace_notes = grace_notes || this.grace_notes; + if (grace_notes.length > 1) { + const beam = new Beam(grace_notes); + beam.render_options.beam_width = 3; + beam.render_options.partial_beam_length = 4; + this.beams.push(beam); + } + return this; + } + setWidth(width) { + this.width = width; + return this; + } + getWidth() { + return this.width + StaveNote.minNoteheadPadding; + } + getGraceNotes() { + return this.grace_notes; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + L('Drawing grace note group for:', note); + this.alignSubNotesWithNote(this.getGraceNotes(), note); + this.grace_notes.forEach((graceNote) => graceNote.setContext(ctx).draw()); + this.beams.forEach((beam) => beam.setContext(ctx).draw()); + if (this.show_slur) { + const is_stavenote = isStaveNote(note); + const TieClass = is_stavenote ? StaveTie : TabTie; + this.slur = new TieClass({ + last_note: this.grace_notes[0], + first_note: note, + first_indices: [0], + last_indices: [0], + }); + this.slur.render_options.cp2 = 12; + this.slur.render_options.y_shift = (is_stavenote ? 7 : 5) + this.render_options.slur_y_shift; + this.slur.setContext(ctx).draw(); + } + } +} +GraceNoteGroup.DEBUG = false; diff --git a/build/esm/src/gracetabnote.js b/build/esm/src/gracetabnote.js new file mode 100644 index 0000000000..8aba164203 --- /dev/null +++ b/build/esm/src/gracetabnote.js @@ -0,0 +1,12 @@ +import { Font } from './font.js'; +import { TabNote } from './tabnote.js'; +export class GraceTabNote extends TabNote { + static get CATEGORY() { + return "GraceTabNote"; + } + constructor(noteStruct) { + super(noteStruct, false); + this.render_options = Object.assign(Object.assign({}, this.render_options), { y_shift: 0.3, scale: 0.6, font: `7.5pt ${Font.SANS_SERIF}` }); + this.updateWidth(); + } +} diff --git a/build/esm/src/index.js b/build/esm/src/index.js new file mode 100644 index 0000000000..2c9f8c57d8 --- /dev/null +++ b/build/esm/src/index.js @@ -0,0 +1,89 @@ +export * from './accidental.js'; +export * from './annotation.js'; +export * from './articulation.js'; +export * from './barnote.js'; +export * from './beam.js'; +export * from './bend.js'; +export * from './boundingbox.js'; +export * from './boundingboxcomputation.js'; +export * from './canvascontext.js'; +export * from './chordsymbol.js'; +export * from './clef.js'; +export * from './clefnote.js'; +export * from './crescendo.js'; +export * from './curve.js'; +export * from './dot.js'; +export * from './easyscore.js'; +export * from './element.js'; +export * from './factory.js'; +export * from './flow.js'; +export * from './font.js'; +export * from './formatter.js'; +export * from './fraction.js'; +export * from './frethandfinger.js'; +export * from './ghostnote.js'; +export * from './glyph.js'; +export * from './glyphnote.js'; +export * from './gracenote.js'; +export * from './gracenotegroup.js'; +export * from './gracetabnote.js'; +export * from './keymanager.js'; +export * from './keysignature.js'; +export * from './keysignote.js'; +export * from './modifier.js'; +export * from './modifiercontext.js'; +export * from './multimeasurerest.js'; +export * from './music.js'; +export * from './note.js'; +export * from './notehead.js'; +export * from './notesubgroup.js'; +export * from './ornament.js'; +export * from './parenthesis.js'; +export * from './parser.js'; +export * from './pedalmarking.js'; +export * from './registry.js'; +export * from './rendercontext.js'; +export * from './renderer.js'; +export * from './repeatnote.js'; +export * from './stave.js'; +export * from './stavebarline.js'; +export * from './staveconnector.js'; +export * from './stavehairpin.js'; +export * from './staveline.js'; +export * from './stavemodifier.js'; +export * from './stavenote.js'; +export * from './staverepetition.js'; +export * from './stavesection.js'; +export * from './stavetempo.js'; +export * from './stavetext.js'; +export * from './stavetie.js'; +export * from './stavevolta.js'; +export * from './stem.js'; +export * from './stemmablenote.js'; +export * from './stringnumber.js'; +export * from './strokes.js'; +export * from './svgcontext.js'; +export * from './system.js'; +export * from './tabnote.js'; +export * from './tabslide.js'; +export * from './tabstave.js'; +export * from './tabtie.js'; +export * from './textbracket.js'; +export * from './textdynamics.js'; +export * from './textformatter.js'; +export * from './textnote.js'; +export * from './tickable.js'; +export * from './tickcontext.js'; +export * from './timesigglyph.js'; +export * from './timesignature.js'; +export * from './timesignote.js'; +export * from './tremolo.js'; +export * from './tuning.js'; +export * from './tuplet.js'; +export * from './typeguard.js'; +export * from './util.js'; +export * from './vex.js'; +export * from './vibrato.js'; +export * from './vibratobracket.js'; +export * from './voice.js'; +export * from './web.js'; diff --git a/build/esm/src/keymanager.js b/build/esm/src/keymanager.js new file mode 100644 index 0000000000..6ccffe83c2 --- /dev/null +++ b/build/esm/src/keymanager.js @@ -0,0 +1,99 @@ +import { Music } from './music.js'; +import { RuntimeError } from './util.js'; +export class KeyManager { + constructor(key) { + this.music = new Music(); + this.setKey(key); + } + setKey(key) { + this.key = key; + this.reset(); + return this; + } + getKey() { + return this.key; + } + reset() { + this.keyParts = this.music.getKeyParts(this.key); + this.keyString = this.keyParts.root; + if (this.keyParts.accidental) + this.keyString += this.keyParts.accidental; + const is_supported_type = Music.scaleTypes[this.keyParts.type]; + if (!is_supported_type) { + throw new RuntimeError('BadArguments', `Unsupported key type: ${this.key}`); + } + this.scale = this.music.getScaleTones(this.music.getNoteValue(this.keyString), Music.scaleTypes[this.keyParts.type]); + this.scaleMap = {}; + this.scaleMapByValue = {}; + this.originalScaleMapByValue = {}; + const noteLocation = Music.root_indices[this.keyParts.root]; + for (let i = 0; i < Music.roots.length; ++i) { + const index = (noteLocation + i) % Music.roots.length; + const rootName = Music.roots[index]; + const noteName = this.music.getRelativeNoteName(rootName, this.scale[i]); + this.scaleMap[rootName] = noteName; + this.scaleMapByValue[this.scale[i]] = noteName; + this.originalScaleMapByValue[this.scale[i]] = noteName; + } + return this; + } + getAccidental(key) { + const root = this.music.getKeyParts(key).root; + const parts = this.music.getNoteParts(this.scaleMap[root]); + return { + note: this.scaleMap[root], + accidental: parts.accidental, + }; + } + selectNote(note) { + note = note.toLowerCase(); + const parts = this.music.getNoteParts(note); + const scaleNote = this.scaleMap[parts.root]; + const modparts = this.music.getNoteParts(scaleNote); + if (scaleNote === note) { + return { + note: scaleNote, + accidental: parts.accidental, + change: false, + }; + } + const valueNote = this.scaleMapByValue[this.music.getNoteValue(note)]; + if (valueNote != null) { + return { + note: valueNote, + accidental: this.music.getNoteParts(valueNote).accidental, + change: false, + }; + } + const originalValueNote = this.originalScaleMapByValue[this.music.getNoteValue(note)]; + if (originalValueNote != null) { + this.scaleMap[modparts.root] = originalValueNote; + delete this.scaleMapByValue[this.music.getNoteValue(scaleNote)]; + this.scaleMapByValue[this.music.getNoteValue(note)] = originalValueNote; + return { + note: originalValueNote, + accidental: this.music.getNoteParts(originalValueNote).accidental, + change: true, + }; + } + if (modparts.root === note) { + delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])]; + this.scaleMapByValue[this.music.getNoteValue(modparts.root)] = modparts.root; + this.scaleMap[modparts.root] = modparts.root; + return { + note: modparts.root, + accidental: undefined, + change: true, + }; + } + delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])]; + this.scaleMapByValue[this.music.getNoteValue(note)] = note; + delete this.scaleMap[modparts.root]; + this.scaleMap[modparts.root] = note; + return { + note, + accidental: parts.accidental, + change: true, + }; + } +} diff --git a/build/esm/src/keysignature.js b/build/esm/src/keysignature.js new file mode 100644 index 0000000000..63e7f1e440 --- /dev/null +++ b/build/esm/src/keysignature.js @@ -0,0 +1,255 @@ +import { Glyph } from './glyph.js'; +import { StaveModifier, StaveModifierPosition } from './stavemodifier.js'; +import { Tables } from './tables.js'; +import { defined } from './util.js'; +export class KeySignature extends StaveModifier { + constructor(keySpec, cancelKeySpec, alterKeySpec) { + super(); + this.accList = []; + this.setKeySig(keySpec, cancelKeySpec, alterKeySpec); + this.setPosition(StaveModifierPosition.BEGIN); + this.glyphFontScale = 38; + this.glyphs = []; + this.xPositions = []; + this.paddingForced = false; + } + static get CATEGORY() { + return "KeySignature"; + } + convertToGlyph(acc, nextAcc) { + const accGlyphData = Tables.accidentalCodes(acc.type); + const glyph = new Glyph(accGlyphData.code, this.glyphFontScale); + let extraWidth = 1; + if (acc.type === 'n' && nextAcc) { + const spacing = KeySignature.accidentalSpacing[nextAcc.type]; + if (spacing) { + const isAbove = nextAcc.line >= acc.line; + extraWidth = isAbove ? spacing.above : spacing.below; + } + } + this.placeGlyphOnLine(glyph, this.checkStave(), acc.line); + this.glyphs.push(glyph); + const xPosition = this.xPositions[this.xPositions.length - 1]; + const glyphWidth = glyph.getMetrics().width + extraWidth; + this.xPositions.push(xPosition + glyphWidth); + this.width += glyphWidth; + } + cancelKey(spec) { + this.formatted = false; + this.cancelKeySpec = spec; + return this; + } + convertToCancelAccList(spec) { + const cancel_accList = Tables.keySignature(spec); + const different_types = this.accList.length > 0 && cancel_accList.length > 0 && cancel_accList[0].type !== this.accList[0].type; + const naturals = different_types ? cancel_accList.length : cancel_accList.length - this.accList.length; + if (naturals < 1) + return undefined; + const cancelled = []; + for (let i = 0; i < naturals; i++) { + let index = i; + if (!different_types) { + index = cancel_accList.length - naturals + i; + } + const acc = cancel_accList[index]; + cancelled.push({ type: 'n', line: acc.line }); + } + this.accList = cancelled.concat(this.accList); + return { + accList: cancelled, + type: cancel_accList[0].type, + }; + } + addToStave(stave) { + this.paddingForced = true; + stave.addModifier(this); + return this; + } + convertAccLines(clef, type, accList = this.accList) { + let offset = 0.0; + let customLines; + switch (clef) { + case 'soprano': + if (type === '#') + customLines = [2.5, 0.5, 2, 0, 1.5, -0.5, 1]; + else + offset = -1; + break; + case 'mezzo-soprano': + if (type === 'b') + customLines = [0, 2, 0.5, 2.5, 1, 3, 1.5]; + else + offset = 1.5; + break; + case 'alto': + offset = 0.5; + break; + case 'tenor': + if (type === '#') + customLines = [3, 1, 2.5, 0.5, 2, 0, 1.5]; + else + offset = -0.5; + break; + case 'baritone-f': + case 'baritone-c': + if (type === 'b') + customLines = [0.5, 2.5, 1, 3, 1.5, 3.5, 2]; + else + offset = 2; + break; + case 'bass': + case 'french': + offset = 1; + break; + default: + break; + } + let i; + if (typeof customLines !== 'undefined') { + for (i = 0; i < accList.length; ++i) { + accList[i].line = customLines[i]; + } + } + else if (offset !== 0) { + for (i = 0; i < accList.length; ++i) { + accList[i].line += offset; + } + } + } + getPadding(index) { + if (!this.formatted) + this.format(); + return this.glyphs.length === 0 || (!this.paddingForced && index < 2) ? 0 : this.padding; + } + getWidth() { + if (!this.formatted) + this.format(); + return this.width; + } + setKeySig(keySpec, cancelKeySpec, alterKeySpec) { + this.formatted = false; + this.keySpec = keySpec; + this.cancelKeySpec = cancelKeySpec; + this.alterKeySpec = alterKeySpec; + return this; + } + alterKey(alterKeySpec) { + this.formatted = false; + this.alterKeySpec = alterKeySpec; + return this; + } + convertToAlterAccList(alterKeySpec) { + const max = Math.min(alterKeySpec.length, this.accList.length); + for (let i = 0; i < max; ++i) { + if (alterKeySpec[i]) { + this.accList[i].type = alterKeySpec[i]; + } + } + } + format() { + const stave = this.checkStave(); + this.width = 0; + this.glyphs = []; + this.xPositions = [0]; + this.accList = Tables.keySignature(defined(this.keySpec)); + const accList = this.accList; + const firstAccidentalType = accList.length > 0 ? accList[0].type : undefined; + let cancelAccList; + if (this.cancelKeySpec) { + cancelAccList = this.convertToCancelAccList(this.cancelKeySpec); + } + if (this.alterKeySpec) { + this.convertToAlterAccList(this.alterKeySpec); + } + if (this.accList.length > 0) { + const clef = (this.position === StaveModifierPosition.END ? stave.getEndClef() : stave.getClef()) || stave.getClef(); + if (cancelAccList) { + this.convertAccLines(clef, cancelAccList.type, cancelAccList.accList); + } + this.convertAccLines(clef, firstAccidentalType, accList); + for (let i = 0; i < this.accList.length; ++i) { + this.convertToGlyph(this.accList[i], this.accList[i + 1]); + } + } + this.formatted = true; + } + getGlyphs() { + if (!this.formatted) + this.format(); + return this.glyphs; + } + draw() { + const stave = this.checkStave(); + const ctx = stave.checkContext(); + if (!this.formatted) + this.format(); + this.setRendered(); + ctx.openGroup('keysignature', this.getAttribute('id')); + for (let i = 0; i < this.glyphs.length; i++) { + const glyph = this.glyphs[i]; + const x = this.x + this.xPositions[i]; + glyph.setStave(stave); + glyph.setContext(ctx); + glyph.renderToStave(x); + } + ctx.closeGroup(); + } +} +KeySignature.accidentalSpacing = { + '#': { + above: 6, + below: 4, + }, + b: { + above: 4, + below: 7, + }, + n: { + above: 4, + below: 1, + }, + '##': { + above: 6, + below: 4, + }, + bb: { + above: 4, + below: 7, + }, + db: { + above: 4, + below: 7, + }, + d: { + above: 4, + below: 7, + }, + bbs: { + above: 4, + below: 7, + }, + '++': { + above: 6, + below: 4, + }, + '+': { + above: 6, + below: 4, + }, + '+-': { + above: 6, + below: 4, + }, + '++-': { + above: 6, + below: 4, + }, + bs: { + above: 4, + below: 10, + }, + bss: { + above: 4, + below: 10, + }, +}; diff --git a/build/esm/src/keysignote.js b/build/esm/src/keysignote.js new file mode 100644 index 0000000000..8006c64a40 --- /dev/null +++ b/build/esm/src/keysignote.js @@ -0,0 +1,28 @@ +import { KeySignature } from './keysignature.js'; +import { Note } from './note.js'; +export class KeySigNote extends Note { + constructor(keySpec, cancelKeySpec, alterKeySpec) { + super({ duration: 'b' }); + this.keySignature = new KeySignature(keySpec, cancelKeySpec, alterKeySpec); + this.ignore_ticks = true; + } + static get CATEGORY() { + return "KeySigNote"; + } + addToModifierContext(mc) { + return this; + } + preFormat() { + this.preFormatted = true; + this.keySignature.setStave(this.checkStave()); + this.setWidth(this.keySignature.getWidth()); + return this; + } + draw() { + const ctx = this.checkStave().checkContext(); + this.setRendered(); + this.keySignature.setX(this.getAbsoluteX()); + this.keySignature.setContext(ctx); + this.keySignature.draw(); + } +} diff --git a/build/esm/src/modifier.js b/build/esm/src/modifier.js new file mode 100644 index 0000000000..7847de42bf --- /dev/null +++ b/build/esm/src/modifier.js @@ -0,0 +1,128 @@ +import { Element } from './element.js'; +import { defined, RuntimeError } from './util.js'; +export var ModifierPosition; +(function (ModifierPosition) { + ModifierPosition[ModifierPosition["CENTER"] = 0] = "CENTER"; + ModifierPosition[ModifierPosition["LEFT"] = 1] = "LEFT"; + ModifierPosition[ModifierPosition["RIGHT"] = 2] = "RIGHT"; + ModifierPosition[ModifierPosition["ABOVE"] = 3] = "ABOVE"; + ModifierPosition[ModifierPosition["BELOW"] = 4] = "BELOW"; +})(ModifierPosition || (ModifierPosition = {})); +export class Modifier extends Element { + constructor() { + super(); + this.width = 0; + this.text_line = 0; + this.position = Modifier.Position.LEFT; + this.x_shift = 0; + this.y_shift = 0; + this.spacingFromNextModifier = 0; + } + static get CATEGORY() { + return "Modifier"; + } + static get Position() { + return ModifierPosition; + } + static get PositionString() { + return { + center: ModifierPosition.CENTER, + above: ModifierPosition.ABOVE, + below: ModifierPosition.BELOW, + left: ModifierPosition.LEFT, + right: ModifierPosition.RIGHT, + }; + } + reset() { + } + getWidth() { + return this.width; + } + setWidth(width) { + this.width = width; + return this; + } + getNote() { + return defined(this.note, 'NoNote', 'Modifier has no note.'); + } + checkAttachedNote() { + const category = this.getCategory(); + defined(this.index, 'NoIndex', `Can't draw ${category} without an index.`); + return defined(this.note, 'NoNote', `Can't draw ${category} without a note.`); + } + setNote(note) { + this.note = note; + return this; + } + getIndex() { + return this.index; + } + checkIndex() { + return defined(this.index, 'NoIndex', 'Modifier has an invalid index.'); + } + setIndex(index) { + this.index = index; + return this; + } + getModifierContext() { + return this.modifierContext; + } + checkModifierContext() { + return defined(this.modifierContext, 'NoModifierContext', 'Modifier Context Required'); + } + setModifierContext(c) { + this.modifierContext = c; + return this; + } + getPosition() { + return this.position; + } + setPosition(position) { + this.position = typeof position === 'string' ? Modifier.PositionString[position] : position; + this.reset(); + return this; + } + setTextLine(line) { + this.text_line = line; + return this; + } + setYShift(y) { + this.y_shift = y; + return this; + } + setSpacingFromNextModifier(x) { + this.spacingFromNextModifier = x; + } + getSpacingFromNextModifier() { + return this.spacingFromNextModifier; + } + setXShift(x) { + this.x_shift = 0; + if (this.position === Modifier.Position.LEFT) { + this.x_shift -= x; + } + else { + this.x_shift += x; + } + return this; + } + getXShift() { + return this.x_shift; + } + draw() { + this.checkContext(); + throw new RuntimeError('NotImplemented', 'draw() not implemented for this modifier.'); + } + alignSubNotesWithNote(subNotes, note) { + const tickContext = note.getTickContext(); + const metrics = tickContext.getMetrics(); + const stave = note.getStave(); + const subNoteXOffset = tickContext.getX() - metrics.modLeftPx - metrics.modRightPx + this.getSpacingFromNextModifier(); + subNotes.forEach((subNote) => { + const subTickContext = subNote.getTickContext(); + if (stave) + subNote.setStave(stave); + subTickContext.setXOffset(subNoteXOffset); + }); + } +} diff --git a/build/esm/src/modifiercontext.js b/build/esm/src/modifiercontext.js new file mode 100644 index 0000000000..dc3d3bdc14 --- /dev/null +++ b/build/esm/src/modifiercontext.js @@ -0,0 +1,110 @@ +import { Accidental } from './accidental.js'; +import { Annotation } from './annotation.js'; +import { Articulation } from './articulation.js'; +import { Bend } from './bend.js'; +import { ChordSymbol } from './chordsymbol.js'; +import { Dot } from './dot.js'; +import { FretHandFinger } from './frethandfinger.js'; +import { GraceNoteGroup } from './gracenotegroup.js'; +import { NoteSubGroup } from './notesubgroup.js'; +import { Ornament } from './ornament.js'; +import { Parenthesis } from './parenthesis.js'; +import { StaveNote } from './stavenote.js'; +import { StringNumber } from './stringnumber.js'; +import { Stroke } from './strokes.js'; +import { log, RuntimeError } from './util.js'; +import { Vibrato } from './vibrato.js'; +function L(...args) { + if (ModifierContext.DEBUG) + log('Vex.Flow.ModifierContext', args); +} +export class ModifierContext { + constructor() { + this.state = { + left_shift: 0, + right_shift: 0, + text_line: 0, + top_text_line: 0, + }; + this.members = {}; + this.preFormatted = false; + this.postFormatted = false; + this.formatted = false; + this.width = 0; + this.spacing = 0; + } + addModifier(member) { + L('addModifier is deprecated, use addMember instead.'); + return this.addMember(member); + } + addMember(member) { + const category = member.getCategory(); + if (!this.members[category]) { + this.members[category] = []; + } + this.members[category].push(member); + member.setModifierContext(this); + this.preFormatted = false; + return this; + } + getModifiers(category) { + L('getModifiers is deprecated, use getMembers instead.'); + return this.getMembers(category); + } + getMembers(category) { + var _a; + return (_a = this.members[category]) !== null && _a !== void 0 ? _a : []; + } + getWidth() { + return this.width; + } + getLeftShift() { + return this.state.left_shift; + } + getRightShift() { + return this.state.right_shift; + } + getState() { + return this.state; + } + getMetrics() { + if (!this.formatted) { + throw new RuntimeError('UnformattedMember', 'Unformatted member has no metrics.'); + } + return { + width: this.state.left_shift + this.state.right_shift + this.spacing, + spacing: this.spacing, + }; + } + preFormat() { + if (this.preFormatted) + return; + L('Preformatting ModifierContext'); + const state = this.state; + const members = this.members; + StaveNote.format(members["StaveNote"], state); + Parenthesis.format(members["Parenthesis"], state); + Dot.format(members["Dot"], state); + FretHandFinger.format(members["FretHandFinger"], state); + Accidental.format(members["Accidental"], state); + Stroke.format(members["Stroke"], state); + GraceNoteGroup.format(members["GraceNoteGroup"], state); + NoteSubGroup.format(members["NoteSubGroup"], state); + StringNumber.format(members["StringNumber"], state); + Articulation.format(members["Articulation"], state); + Ornament.format(members["Ornament"], state); + Annotation.format(members["Annotation"], state); + ChordSymbol.format(members["ChordSymbol"], state); + Bend.format(members["Bend"], state); + Vibrato.format(members["Vibrato"], state, this); + this.width = state.left_shift + state.right_shift; + this.preFormatted = true; + } + postFormat() { + if (this.postFormatted) + return; + L('Postformatting ModifierContext'); + StaveNote.postFormat(this.getMembers("StaveNote")); + } +} +ModifierContext.DEBUG = false; diff --git a/build/esm/src/multimeasurerest.js b/build/esm/src/multimeasurerest.js new file mode 100644 index 0000000000..03c9b60b53 --- /dev/null +++ b/build/esm/src/multimeasurerest.js @@ -0,0 +1,173 @@ +import { Element } from './element.js'; +import { Glyph } from './glyph.js'; +import { NoteHead } from './notehead.js'; +import { StaveModifierPosition } from './stavemodifier.js'; +import { Tables } from './tables.js'; +import { TimeSignature } from './timesignature.js'; +import { isBarline } from './typeguard.js'; +import { defined } from './util.js'; +let semibreve_rest; +function get_semibreve_rest() { + if (!semibreve_rest) { + const noteHead = new NoteHead({ duration: 'w', note_type: 'r' }); + semibreve_rest = { + glyph_font_scale: noteHead.render_options.glyph_font_scale, + glyph_code: noteHead.glyph_code, + width: noteHead.getWidth(), + }; + } + return semibreve_rest; +} +export class MultiMeasureRest extends Element { + constructor(number_of_measures, options) { + super(); + this.xs = { left: NaN, right: NaN }; + this.hasPaddingLeft = false; + this.hasPaddingRight = false; + this.hasLineThickness = false; + this.hasSymbolSpacing = false; + this.number_of_measures = number_of_measures; + this.hasPaddingLeft = typeof options.padding_left === 'number'; + this.hasPaddingRight = typeof options.padding_right === 'number'; + this.hasLineThickness = typeof options.line_thickness === 'number'; + this.hasSymbolSpacing = typeof options.symbol_spacing === 'number'; + const musicFont = Tables.currentMusicFont(); + this.render_options = Object.assign({ use_symbols: false, show_number: true, number_line: -0.5, number_glyph_point: musicFont.lookupMetric('digits.point'), line: 2, spacing_between_lines_px: Tables.STAVE_LINE_DISTANCE, serif_thickness: 2, semibreve_rest_glyph_scale: Tables.NOTATION_FONT_SCALE, padding_left: 0, padding_right: 0, line_thickness: 5, symbol_spacing: 0 }, options); + const fontLineShift = musicFont.lookupMetric('digits.shiftLine', 0); + this.render_options.number_line += fontLineShift; + } + static get CATEGORY() { + return "MultiMeasureRest"; + } + getXs() { + return this.xs; + } + setStave(stave) { + this.stave = stave; + return this; + } + getStave() { + return this.stave; + } + checkStave() { + return defined(this.stave, 'NoStave', 'No stave attached to instance.'); + } + drawLine(stave, ctx, left, right, spacingBetweenLines) { + const options = this.render_options; + const y = stave.getYForLine(options.line); + const padding = (right - left) * 0.1; + left += padding; + right -= padding; + let lineThicknessHalf; + if (this.hasLineThickness) { + lineThicknessHalf = options.line_thickness * 0.5; + } + else { + lineThicknessHalf = spacingBetweenLines * 0.25; + } + const serifThickness = options.serif_thickness; + const top = y - spacingBetweenLines; + const bot = y + spacingBetweenLines; + const leftIndented = left + serifThickness; + const rightIndented = right - serifThickness; + const lineTop = y - lineThicknessHalf; + const lineBottom = y + lineThicknessHalf; + ctx.save(); + ctx.beginPath(); + ctx.moveTo(left, top); + ctx.lineTo(leftIndented, top); + ctx.lineTo(leftIndented, lineTop); + ctx.lineTo(rightIndented, lineTop); + ctx.lineTo(rightIndented, top); + ctx.lineTo(right, top); + ctx.lineTo(right, bot); + ctx.lineTo(rightIndented, bot); + ctx.lineTo(rightIndented, lineBottom); + ctx.lineTo(leftIndented, lineBottom); + ctx.lineTo(leftIndented, bot); + ctx.lineTo(left, bot); + ctx.closePath(); + ctx.fill(); + } + drawSymbols(stave, ctx, left, right, spacingBetweenLines) { + const n4 = Math.floor(this.number_of_measures / 4); + const n = this.number_of_measures % 4; + const n2 = Math.floor(n / 2); + const n1 = n % 2; + const options = this.render_options; + semibreve_rest = undefined; + const rest = get_semibreve_rest(); + const rest_scale = options.semibreve_rest_glyph_scale; + const rest_width = rest.width * (rest_scale / rest.glyph_font_scale); + const glyphs = { + 2: { + width: rest_width * 0.5, + height: spacingBetweenLines, + }, + 1: { + width: rest_width, + }, + }; + const spacing = this.hasSymbolSpacing ? options.symbol_spacing : 10; + const width = n4 * glyphs[2].width + n2 * glyphs[2].width + n1 * glyphs[1].width + (n4 + n2 + n1 - 1) * spacing; + let x = left + (right - left) * 0.5 - width * 0.5; + const line = options.line; + const yTop = stave.getYForLine(line - 1); + const yMiddle = stave.getYForLine(line); + const yBottom = stave.getYForLine(line + 1); + ctx.save(); + ctx.setStrokeStyle('none'); + ctx.setLineWidth(0); + for (let i = 0; i < n4; ++i) { + ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height); + ctx.fillRect(x, yBottom - glyphs[2].height, glyphs[2].width, glyphs[2].height); + x += glyphs[2].width + spacing; + } + for (let i = 0; i < n2; ++i) { + ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height); + x += glyphs[2].width + spacing; + } + for (let i = 0; i < n1; ++i) { + Glyph.renderGlyph(ctx, x, yTop, rest_scale, rest.glyph_code); + x += glyphs[1].width + spacing; + } + ctx.restore(); + } + draw() { + const ctx = this.checkContext(); + this.setRendered(); + const stave = this.checkStave(); + let left = stave.getNoteStartX(); + let right = stave.getNoteEndX(); + const begModifiers = stave.getModifiers(StaveModifierPosition.BEGIN); + if (begModifiers.length === 1 && isBarline(begModifiers[0])) { + left -= begModifiers[0].getWidth(); + } + const options = this.render_options; + if (this.hasPaddingLeft) { + left = stave.getX() + options.padding_left; + } + if (this.hasPaddingRight) { + right = stave.getX() + stave.getWidth() - options.padding_right; + } + this.xs.left = left; + this.xs.right = right; + const spacingBetweenLines = options.spacing_between_lines_px; + if (options.use_symbols) { + this.drawSymbols(stave, ctx, left, right, spacingBetweenLines); + } + else { + this.drawLine(stave, ctx, left, right, spacingBetweenLines); + } + if (options.show_number) { + const timeSpec = '/' + this.number_of_measures; + const timeSig = new TimeSignature(timeSpec, 0, false); + timeSig.point = options.number_glyph_point; + timeSig.setTimeSig(timeSpec); + timeSig.setStave(stave); + timeSig.setX(left + (right - left) * 0.5 - timeSig.getInfo().glyph.getMetrics().width * 0.5); + timeSig.bottomLine = options.number_line; + timeSig.setContext(ctx).draw(); + } + } +} diff --git a/build/esm/src/music.js b/build/esm/src/music.js new file mode 100644 index 0000000000..d92c3749fe --- /dev/null +++ b/build/esm/src/music.js @@ -0,0 +1,322 @@ +import { RuntimeError } from './util.js'; +export class Music { + static get NUM_TONES() { + return this.canonical_notes.length; + } + static get roots() { + return ['c', 'd', 'e', 'f', 'g', 'a', 'b']; + } + static get root_values() { + return [0, 2, 4, 5, 7, 9, 11]; + } + static get root_indices() { + return { + c: 0, + d: 1, + e: 2, + f: 3, + g: 4, + a: 5, + b: 6, + }; + } + static get canonical_notes() { + return ['c', 'c#', 'd', 'd#', 'e', 'f', 'f#', 'g', 'g#', 'a', 'a#', 'b']; + } + static get diatonic_intervals() { + return ['unison', 'm2', 'M2', 'm3', 'M3', 'p4', 'dim5', 'p5', 'm6', 'M6', 'b7', 'M7', 'octave']; + } + static get diatonic_accidentals() { + return { + unison: { note: 0, accidental: 0 }, + m2: { note: 1, accidental: -1 }, + M2: { note: 1, accidental: 0 }, + m3: { note: 2, accidental: -1 }, + M3: { note: 2, accidental: 0 }, + p4: { note: 3, accidental: 0 }, + dim5: { note: 4, accidental: -1 }, + p5: { note: 4, accidental: 0 }, + m6: { note: 5, accidental: -1 }, + M6: { note: 5, accidental: 0 }, + b7: { note: 6, accidental: -1 }, + M7: { note: 6, accidental: 0 }, + octave: { note: 7, accidental: 0 }, + }; + } + static get intervals() { + return { + u: 0, + unison: 0, + m2: 1, + b2: 1, + min2: 1, + S: 1, + H: 1, + 2: 2, + M2: 2, + maj2: 2, + T: 2, + W: 2, + m3: 3, + b3: 3, + min3: 3, + M3: 4, + 3: 4, + maj3: 4, + 4: 5, + p4: 5, + '#4': 6, + b5: 6, + aug4: 6, + dim5: 6, + 5: 7, + p5: 7, + '#5': 8, + b6: 8, + aug5: 8, + 6: 9, + M6: 9, + maj6: 9, + b7: 10, + m7: 10, + min7: 10, + dom7: 10, + M7: 11, + maj7: 11, + 8: 12, + octave: 12, + }; + } + static get scales() { + return { + major: [2, 2, 1, 2, 2, 2, 1], + minor: [2, 1, 2, 2, 1, 2, 2], + ionian: [2, 2, 1, 2, 2, 2, 1], + dorian: [2, 1, 2, 2, 2, 1, 2], + phyrgian: [1, 2, 2, 2, 1, 2, 2], + lydian: [2, 2, 2, 1, 2, 2, 1], + mixolydian: [2, 2, 1, 2, 2, 1, 2], + aeolian: [2, 1, 2, 2, 1, 2, 2], + locrian: [1, 2, 2, 1, 2, 2, 2], + }; + } + static get scaleTypes() { + return { + M: Music.scales.major, + m: Music.scales.minor, + }; + } + static get accidentals() { + return ['bb', 'b', 'n', '#', '##']; + } + static get noteValues() { + return { + c: { root_index: 0, int_val: 0 }, + cn: { root_index: 0, int_val: 0 }, + 'c#': { root_index: 0, int_val: 1 }, + 'c##': { root_index: 0, int_val: 2 }, + cb: { root_index: 0, int_val: 11 }, + cbb: { root_index: 0, int_val: 10 }, + d: { root_index: 1, int_val: 2 }, + dn: { root_index: 1, int_val: 2 }, + 'd#': { root_index: 1, int_val: 3 }, + 'd##': { root_index: 1, int_val: 4 }, + db: { root_index: 1, int_val: 1 }, + dbb: { root_index: 1, int_val: 0 }, + e: { root_index: 2, int_val: 4 }, + en: { root_index: 2, int_val: 4 }, + 'e#': { root_index: 2, int_val: 5 }, + 'e##': { root_index: 2, int_val: 6 }, + eb: { root_index: 2, int_val: 3 }, + ebb: { root_index: 2, int_val: 2 }, + f: { root_index: 3, int_val: 5 }, + fn: { root_index: 3, int_val: 5 }, + 'f#': { root_index: 3, int_val: 6 }, + 'f##': { root_index: 3, int_val: 7 }, + fb: { root_index: 3, int_val: 4 }, + fbb: { root_index: 3, int_val: 3 }, + g: { root_index: 4, int_val: 7 }, + gn: { root_index: 4, int_val: 7 }, + 'g#': { root_index: 4, int_val: 8 }, + 'g##': { root_index: 4, int_val: 9 }, + gb: { root_index: 4, int_val: 6 }, + gbb: { root_index: 4, int_val: 5 }, + a: { root_index: 5, int_val: 9 }, + an: { root_index: 5, int_val: 9 }, + 'a#': { root_index: 5, int_val: 10 }, + 'a##': { root_index: 5, int_val: 11 }, + ab: { root_index: 5, int_val: 8 }, + abb: { root_index: 5, int_val: 7 }, + b: { root_index: 6, int_val: 11 }, + bn: { root_index: 6, int_val: 11 }, + 'b#': { root_index: 6, int_val: 0 }, + 'b##': { root_index: 6, int_val: 1 }, + bb: { root_index: 6, int_val: 10 }, + bbb: { root_index: 6, int_val: 9 }, + }; + } + isValidNoteValue(note) { + return note >= 0 && note < Music.canonical_notes.length; + } + isValidIntervalValue(interval) { + return interval >= 0 && interval < Music.diatonic_intervals.length; + } + getNoteParts(noteString) { + if (!noteString || noteString.length < 1) { + throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString); + } + if (noteString.length > 3) { + throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString); + } + const note = noteString.toLowerCase(); + const regex = /^([cdefgab])(b|bb|n|#|##)?$/; + const match = regex.exec(note); + if (match !== null) { + const root = match[1]; + const accidental = match[2]; + return { + root, + accidental, + }; + } + else { + throw new RuntimeError('BadArguments', 'Invalid note name: ' + noteString); + } + } + getKeyParts(keyString) { + if (!keyString || keyString.length < 1) { + throw new RuntimeError('BadArguments', 'Invalid key: ' + keyString); + } + const key = keyString.toLowerCase(); + const regex = /^([cdefgab])(b|#)?(mel|harm|m|M)?$/; + const match = regex.exec(key); + if (match !== null) { + const root = match[1]; + const accidental = match[2]; + let type = match[3]; + if (!type) + type = 'M'; + return { + root, + accidental, + type, + }; + } + else { + throw new RuntimeError('BadArguments', `Invalid key: ${keyString}`); + } + } + getNoteValue(noteString) { + const value = Music.noteValues[noteString]; + if (value === undefined) { + throw new RuntimeError('BadArguments', `Invalid note name: ${noteString}`); + } + return value.int_val; + } + getIntervalValue(intervalString) { + const value = Music.intervals[intervalString]; + if (value === undefined) { + throw new RuntimeError('BadArguments', `Invalid interval name: ${intervalString}`); + } + return value; + } + getCanonicalNoteName(noteValue) { + if (!this.isValidNoteValue(noteValue)) { + throw new RuntimeError('BadArguments', `Invalid note value: ${noteValue}`); + } + return Music.canonical_notes[noteValue]; + } + getCanonicalIntervalName(intervalValue) { + if (!this.isValidIntervalValue(intervalValue)) { + throw new RuntimeError('BadArguments', `Invalid interval value: ${intervalValue}`); + } + return Music.diatonic_intervals[intervalValue]; + } + getRelativeNoteValue(noteValue, intervalValue, direction = 1) { + if (direction !== 1 && direction !== -1) { + throw new RuntimeError('BadArguments', `Invalid direction: ${direction}`); + } + let sum = (noteValue + direction * intervalValue) % Music.NUM_TONES; + if (sum < 0) + sum += Music.NUM_TONES; + return sum; + } + getRelativeNoteName(root, noteValue) { + const parts = this.getNoteParts(root); + const rootValue = this.getNoteValue(parts.root); + let interval = noteValue - rootValue; + if (Math.abs(interval) > Music.NUM_TONES - 3) { + let multiplier = 1; + if (interval > 0) + multiplier = -1; + const reverse_interval = ((noteValue + 1 + (rootValue + 1)) % Music.NUM_TONES) * multiplier; + if (Math.abs(reverse_interval) > 2) { + throw new RuntimeError('BadArguments', `Notes not related: ${root}, ${noteValue})`); + } + else { + interval = reverse_interval; + } + } + if (Math.abs(interval) > 2) { + throw new RuntimeError('BadArguments', `Notes not related: ${root}, ${noteValue})`); + } + let relativeNoteName = parts.root; + if (interval > 0) { + for (let i = 1; i <= interval; ++i) { + relativeNoteName += '#'; + } + } + else if (interval < 0) { + for (let i = -1; i >= interval; --i) { + relativeNoteName += 'b'; + } + } + return relativeNoteName; + } + getScaleTones(key, intervals) { + const tones = [key]; + let nextNote = key; + for (let i = 0; i < intervals.length; i++) { + nextNote = this.getRelativeNoteValue(nextNote, intervals[i]); + if (nextNote !== key) + tones.push(nextNote); + } + return tones; + } + getIntervalBetween(note1, note2, direction = 1) { + if (direction !== 1 && direction !== -1) { + throw new RuntimeError('BadArguments', `Invalid direction: ${direction}`); + } + if (!this.isValidNoteValue(note1) || !this.isValidNoteValue(note2)) { + throw new RuntimeError('BadArguments', `Invalid notes: ${note1}, ${note2}`); + } + let difference = direction === 1 ? note2 - note1 : note1 - note2; + if (difference < 0) + difference += Music.NUM_TONES; + return difference; + } + createScaleMap(keySignature) { + const keySigParts = this.getKeyParts(keySignature); + if (!keySigParts.type) + throw new RuntimeError('BadArguments', 'Unsupported key type: undefined'); + const scaleName = Music.scaleTypes[keySigParts.type]; + let keySigString = keySigParts.root; + if (keySigParts.accidental) + keySigString += keySigParts.accidental; + if (!scaleName) + throw new RuntimeError('BadArguments', 'Unsupported key type: ' + keySignature); + const scale = this.getScaleTones(this.getNoteValue(keySigString), scaleName); + const noteLocation = Music.root_indices[keySigParts.root]; + const scaleMap = {}; + for (let i = 0; i < Music.roots.length; ++i) { + const index = (noteLocation + i) % Music.roots.length; + const rootName = Music.roots[index]; + let noteName = this.getRelativeNoteName(rootName, scale[i]); + if (noteName.length === 1) { + noteName += 'n'; + } + scaleMap[rootName] = noteName; + } + return scaleMap; + } +} diff --git a/build/esm/src/note.js b/build/esm/src/note.js new file mode 100644 index 0000000000..969bf6b8e4 --- /dev/null +++ b/build/esm/src/note.js @@ -0,0 +1,371 @@ +import { Font } from './font.js'; +import { drawDot } from './rendercontext.js'; +import { Tables } from './tables.js'; +import { Tickable } from './tickable.js'; +import { defined, RuntimeError } from './util.js'; +export class Note extends Tickable { + constructor(noteStruct) { + super(); + if (!noteStruct) { + throw new RuntimeError('BadArguments', 'Note must have valid initialization data to identify duration and type.'); + } + const parsedNoteStruct = Note.parseNoteStruct(noteStruct); + if (!parsedNoteStruct) { + throw new RuntimeError('BadArguments', `Invalid note initialization object: ${JSON.stringify(noteStruct)}`); + } + this.keys = noteStruct.keys || []; + this.keyProps = []; + this.duration = parsedNoteStruct.duration; + this.noteType = parsedNoteStruct.type; + this.customTypes = parsedNoteStruct.customTypes; + if (noteStruct.duration_override) { + this.setDuration(noteStruct.duration_override); + } + else { + this.setIntrinsicTicks(parsedNoteStruct.ticks); + } + this.modifiers = []; + this.glyph = Tables.getGlyphProps(this.duration, this.noteType); + this.customGlyphs = this.customTypes.map((t) => Tables.getGlyphProps(this.duration, t)); + this.playNote = undefined; + this.ignore_ticks = false; + this.width = 0; + this.leftDisplacedHeadPx = 0; + this.rightDisplacedHeadPx = 0; + this.x_shift = 0; + this.ys = []; + if (noteStruct.align_center) { + this.setCenterAlignment(noteStruct.align_center); + } + this.render_options = { + annotation_spacing: 5, + glyph_font_scale: 1, + stroke_px: 1, + scale: 1, + font: '', + y_shift: 0, + }; + } + static get CATEGORY() { + return "Note"; + } + static plotMetrics(ctx, note, yPos) { + const metrics = note.getMetrics(); + const xStart = note.getAbsoluteX() - metrics.modLeftPx - metrics.leftDisplacedHeadPx; + const xPre1 = note.getAbsoluteX() - metrics.leftDisplacedHeadPx; + const xAbs = note.getAbsoluteX(); + const xPost1 = note.getAbsoluteX() + metrics.notePx; + const xPost2 = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx; + const xEnd = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx + metrics.modRightPx; + const xFreedomRight = xEnd + (note.getFormatterMetrics().freedom.right || 0); + const xWidth = xEnd - xStart; + ctx.save(); + ctx.setFont(Font.SANS_SERIF, 8); + ctx.fillText(Math.round(xWidth) + 'px', xStart + note.getXShift(), yPos); + const y = yPos + 7; + function stroke(x1, x2, color, yy = y) { + ctx.beginPath(); + ctx.setStrokeStyle(color); + ctx.setFillStyle(color); + ctx.setLineWidth(3); + ctx.moveTo(x1 + note.getXShift(), yy); + ctx.lineTo(x2 + note.getXShift(), yy); + ctx.stroke(); + } + stroke(xStart, xPre1, 'red'); + stroke(xPre1, xAbs, '#999'); + stroke(xAbs, xPost1, 'green'); + stroke(xPost1, xPost2, '#999'); + stroke(xPost2, xEnd, 'red'); + stroke(xEnd, xFreedomRight, '#DD0'); + stroke(xStart - note.getXShift(), xStart, '#BBB'); + drawDot(ctx, xAbs + note.getXShift(), y, 'blue'); + const formatterMetrics = note.getFormatterMetrics(); + if (formatterMetrics.iterations > 0) { + const spaceDeviation = formatterMetrics.space.deviation; + const prefix = spaceDeviation >= 0 ? '+' : ''; + ctx.setFillStyle('red'); + ctx.fillText(prefix + Math.round(spaceDeviation), xAbs + note.getXShift(), yPos - 10); + } + ctx.restore(); + } + static parseDuration(durationString) { + if (!durationString) { + return undefined; + } + const regexp = /(\d*\/?\d+|[a-z])(d*)([nrhms]|$)/; + const result = regexp.exec(durationString); + if (!result) { + return undefined; + } + const duration = result[1]; + const dots = result[2].length; + const type = result[3] || 'n'; + return { duration, dots, type }; + } + static parseNoteStruct(noteStruct) { + const durationProps = Note.parseDuration(noteStruct.duration); + if (!durationProps) { + return undefined; + } + let type = noteStruct.type; + if (type && !Tables.validTypes[type]) { + return undefined; + } + const customTypes = []; + if (!type) { + type = durationProps.type || 'n'; + if (noteStruct.keys !== undefined) { + noteStruct.keys.forEach((k, i) => { + const result = k.split('/'); + customTypes[i] = (result && result.length === 3 ? result[2] : type); + }); + } + } + let ticks = Tables.durationToTicks(durationProps.duration); + if (!ticks) { + return undefined; + } + const dots = noteStruct.dots ? noteStruct.dots : durationProps.dots; + if (typeof dots !== 'number') { + return undefined; + } + let currentTicks = ticks; + for (let i = 0; i < dots; i++) { + if (currentTicks <= 1) + return undefined; + currentTicks = currentTicks / 2; + ticks += currentTicks; + } + return { + duration: durationProps.duration, + type, + customTypes, + dots, + ticks, + }; + } + getPlayNote() { + return this.playNote; + } + setPlayNote(note) { + this.playNote = note; + return this; + } + isRest() { + return false; + } + addStroke(index, stroke) { + stroke.setNote(this); + stroke.setIndex(index); + this.modifiers.push(stroke); + this.preFormatted = false; + return this; + } + getStave() { + return this.stave; + } + checkStave() { + return defined(this.stave, 'NoStave', 'No stave attached to instance.'); + } + setStave(stave) { + this.stave = stave; + this.setYs([stave.getYForLine(0)]); + this.setContext(this.stave.getContext()); + return this; + } + getLeftDisplacedHeadPx() { + return this.leftDisplacedHeadPx; + } + getRightDisplacedHeadPx() { + return this.rightDisplacedHeadPx; + } + setLeftDisplacedHeadPx(x) { + this.leftDisplacedHeadPx = x; + return this; + } + setRightDisplacedHeadPx(x) { + this.rightDisplacedHeadPx = x; + return this; + } + shouldIgnoreTicks() { + return this.ignore_ticks; + } + getLineNumber(isTopNote) { + return 0; + } + getLineForRest() { + return 0; + } + getGlyph() { + return this.glyph; + } + getGlyphWidth() { + if (this.glyph) { + if (this.glyph.getMetrics) { + return this.glyph.getMetrics().width; + } + else if (this.glyph.getWidth) { + return this.glyph.getWidth(this.render_options.glyph_font_scale); + } + } + return 0; + } + setYs(ys) { + this.ys = ys; + return this; + } + getYs() { + if (this.ys.length === 0) { + throw new RuntimeError('NoYValues', 'No Y-values calculated for this note.'); + } + return this.ys; + } + getYForTopText(text_line) { + return this.checkStave().getYForTopText(text_line); + } + getVoice() { + if (!this.voice) + throw new RuntimeError('NoVoice', 'Note has no voice.'); + return this.voice; + } + setVoice(voice) { + this.voice = voice; + this.preFormatted = false; + return this; + } + getTickContext() { + return this.checkTickContext(); + } + setTickContext(tc) { + this.tickContext = tc; + this.preFormatted = false; + return this; + } + getDuration() { + return this.duration; + } + isDotted() { + return this.getModifiersByType('Dot').length > 0; + } + hasStem() { + return false; + } + getNoteType() { + return this.noteType; + } + getBeam() { + return this.beam; + } + checkBeam() { + return defined(this.beam, 'NoBeam', 'No beam attached to instance'); + } + hasBeam() { + return this.beam != undefined; + } + setBeam(beam) { + this.beam = beam; + return this; + } + addModifier(modifier, index = 0) { + const signature = 'Note.addModifier(modifier: Modifier, index: number=0)'; + if (typeof index === 'string') { + index = parseInt(index); + console.warn(signature + ' expected a number for `index`, but received a string.'); + } + if (typeof modifier !== 'object' || typeof index !== 'number') { + throw new RuntimeError('WrongParams', 'Incorrect call signature. Use ' + signature + ' instead.'); + } + modifier.setNote(this); + modifier.setIndex(index); + super.addModifier(modifier); + return this; + } + getModifiersByType(type) { + return this.modifiers.filter((modifier) => modifier.getCategory() === type); + } + getModifierStartXY(position, index, options) { + if (!this.preFormatted) { + throw new RuntimeError('UnformattedNote', "Can't call GetModifierStartXY on an unformatted note"); + } + return { + x: this.getAbsoluteX(), + y: this.ys[0], + }; + } + getRightParenthesisPx(index) { + const props = this.getKeyProps()[index]; + return props.displaced ? this.getRightDisplacedHeadPx() : 0; + } + getLeftParenthesisPx(index) { + const props = this.getKeyProps()[index]; + return props.displaced ? this.getLeftDisplacedHeadPx() - this.x_shift : -this.x_shift; + } + getFirstDotPx() { + let px = this.getRightDisplacedHeadPx(); + if (this.checkModifierContext().getMembers('Parenthesis').length !== 0) + px += Tables.currentMusicFont().lookupMetric('parenthesis.default.width'); + return px; + } + getMetrics() { + if (!this.preFormatted) { + throw new RuntimeError('UnformattedNote', "Can't call getMetrics on an unformatted note."); + } + const modLeftPx = this.modifierContext ? this.modifierContext.getState().left_shift : 0; + const modRightPx = this.modifierContext ? this.modifierContext.getState().right_shift : 0; + const width = this.getWidth(); + const glyphWidth = this.getGlyphWidth(); + const notePx = width - + modLeftPx - + modRightPx - + this.leftDisplacedHeadPx - + this.rightDisplacedHeadPx; + return { + width, + glyphWidth, + notePx, + modLeftPx, + modRightPx, + leftDisplacedHeadPx: this.leftDisplacedHeadPx, + rightDisplacedHeadPx: this.rightDisplacedHeadPx, + glyphPx: 0, + }; + } + getAbsoluteX() { + const tickContext = this.checkTickContext(`Can't getAbsoluteX() without a TickContext.`); + let x = tickContext.getX(); + if (this.stave) { + x += this.stave.getNoteStartX() + Tables.currentMusicFont().lookupMetric('stave.padding'); + } + if (this.isCenterAligned()) { + x += this.getCenterXShift(); + } + return x; + } + getStemDirection() { + throw new RuntimeError('NoStem', 'No stem attached to this note.'); + } + getStemExtents() { + throw new RuntimeError('NoStem', 'No stem attached to this note.'); + } + getTieRightX() { + let tieStartX = this.getAbsoluteX(); + const note_glyph_width = this.glyph.getWidth(); + tieStartX += note_glyph_width / 2; + tieStartX += -this.width / 2 + this.width + 2; + return tieStartX; + } + getTieLeftX() { + let tieEndX = this.getAbsoluteX(); + const note_glyph_width = this.glyph.getWidth(); + tieEndX += note_glyph_width / 2; + tieEndX -= this.width / 2 + 2; + return tieEndX; + } + getKeys() { + return this.keys; + } + getKeyProps() { + return this.keyProps; + } +} diff --git a/build/esm/src/notehead.js b/build/esm/src/notehead.js new file mode 100644 index 0000000000..76b46a57a3 --- /dev/null +++ b/build/esm/src/notehead.js @@ -0,0 +1,168 @@ +import { BoundingBox } from './boundingbox.js'; +import { Glyph } from './glyph.js'; +import { Note } from './note.js'; +import { Stem } from './stem.js'; +import { Tables } from './tables.js'; +import { defined, log, RuntimeError } from './util.js'; +function L(...args) { + if (NoteHead.DEBUG) + log('Vex.Flow.NoteHead', args); +} +function drawSlashNoteHead(ctx, duration, x, y, stem_direction, staveSpace) { + const width = Tables.SLASH_NOTEHEAD_WIDTH; + ctx.save(); + ctx.setLineWidth(Tables.STEM_WIDTH); + let fill = false; + if (Tables.durationToNumber(duration) > 2) { + fill = true; + } + if (!fill) + x -= (Tables.STEM_WIDTH / 2) * stem_direction; + ctx.beginPath(); + ctx.moveTo(x, y + staveSpace); + ctx.lineTo(x, y + 1); + ctx.lineTo(x + width, y - staveSpace); + ctx.lineTo(x + width, y); + ctx.lineTo(x, y + staveSpace); + ctx.closePath(); + if (fill) { + ctx.fill(); + } + else { + ctx.stroke(); + } + if (Tables.durationToFraction(duration).equals(0.5)) { + const breve_lines = [-3, -1, width + 1, width + 3]; + for (let i = 0; i < breve_lines.length; i++) { + ctx.beginPath(); + ctx.moveTo(x + breve_lines[i], y - 10); + ctx.lineTo(x + breve_lines[i], y + 11); + ctx.stroke(); + } + } + ctx.restore(); +} +export class NoteHead extends Note { + constructor(noteStruct) { + super(noteStruct); + this.custom_glyph = false; + this.stem_up_x_offset = 0; + this.stem_down_x_offset = 0; + this.index = noteStruct.index; + this.x = noteStruct.x || 0; + this.y = noteStruct.y || 0; + if (noteStruct.note_type) + this.noteType = noteStruct.note_type; + this.displaced = noteStruct.displaced || false; + this.stem_direction = noteStruct.stem_direction || Stem.UP; + this.line = noteStruct.line || 0; + this.glyph = Tables.getGlyphProps(this.duration, this.noteType); + defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`); + if ((this.line > 5 || this.line < 0) && this.glyph.leger_code_head) { + this.glyph.code_head = this.glyph.leger_code_head; + } + this.glyph_code = this.glyph.code_head; + this.x_shift = noteStruct.x_shift || 0; + if (noteStruct.custom_glyph_code) { + this.custom_glyph = true; + this.glyph_code = noteStruct.custom_glyph_code; + this.stem_up_x_offset = noteStruct.stem_up_x_offset || 0; + this.stem_down_x_offset = noteStruct.stem_down_x_offset || 0; + } + this.setStyle(noteStruct.style); + this.slashed = noteStruct.slashed || false; + this.render_options = Object.assign(Object.assign({}, this.render_options), { glyph_font_scale: noteStruct.glyph_font_scale || Tables.NOTATION_FONT_SCALE }); + this.setWidth(this.glyph.getWidth(this.render_options.glyph_font_scale)); + } + static get CATEGORY() { + return "NoteHead"; + } + getWidth() { + return this.width; + } + isDisplaced() { + return this.displaced === true; + } + getGlyph() { + return this.glyph; + } + setX(x) { + this.x = x; + return this; + } + getY() { + return this.y; + } + setY(y) { + this.y = y; + return this; + } + getLine() { + return this.line; + } + setLine(line) { + this.line = line; + return this; + } + getAbsoluteX() { + const x = !this.preFormatted ? this.x : super.getAbsoluteX(); + const displacementStemAdjustment = Stem.WIDTH / 2; + const musicFont = Tables.currentMusicFont(); + const fontShift = musicFont.lookupMetric('notehead.shiftX', 0) * this.stem_direction; + const displacedFontShift = musicFont.lookupMetric('noteHead.displaced.shiftX', 0) * this.stem_direction; + return (x + + fontShift + + (this.displaced ? (this.width - displacementStemAdjustment) * this.stem_direction + displacedFontShift : 0)); + } + getBoundingBox() { + if (!this.preFormatted) { + throw new RuntimeError('UnformattedNote', "Can't call getBoundingBox on an unformatted note."); + } + const spacing = this.checkStave().getSpacingBetweenLines(); + const half_spacing = spacing / 2; + const min_y = this.y - half_spacing; + return new BoundingBox(this.getAbsoluteX(), min_y, this.width, spacing); + } + setStave(stave) { + const line = this.getLine(); + this.stave = stave; + if (this.stave) { + this.setY(this.stave.getYForNote(line)); + this.setContext(this.stave.getContext()); + } + return this; + } + preFormat() { + if (this.preFormatted) + return this; + const width = this.getWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx; + this.setWidth(width); + this.preFormatted = true; + return this; + } + draw() { + const ctx = this.checkContext(); + this.setRendered(); + let head_x = this.getAbsoluteX(); + if (this.custom_glyph) { + head_x += this.stem_direction === Stem.UP ? this.stem_up_x_offset : this.stem_down_x_offset; + } + const y = this.y; + L("Drawing note head '", this.noteType, this.duration, "' at", head_x, y); + const stem_direction = this.stem_direction; + const glyph_font_scale = this.render_options.glyph_font_scale; + this.applyStyle(ctx); + const categorySuffix = `${this.glyph_code}Stem${stem_direction === Stem.UP ? 'Up' : 'Down'}`; + if (this.noteType === 's') { + const staveSpace = this.checkStave().getSpacingBetweenLines(); + drawSlashNoteHead(ctx, this.duration, head_x, y, stem_direction, staveSpace); + } + else { + Glyph.renderGlyph(ctx, head_x, y, glyph_font_scale, this.glyph_code, { + category: this.custom_glyph ? `noteHead.custom.${categorySuffix}` : `noteHead.standard.${categorySuffix}`, + }); + } + this.restoreStyle(ctx); + } +} +NoteHead.DEBUG = false; diff --git a/build/esm/src/notesubgroup.js b/build/esm/src/notesubgroup.js new file mode 100644 index 0000000000..dda43ee27c --- /dev/null +++ b/build/esm/src/notesubgroup.js @@ -0,0 +1,59 @@ +import { Formatter } from './formatter.js'; +import { Modifier } from './modifier.js'; +import { Tables } from './tables.js'; +import { Voice } from './voice.js'; +export class NoteSubGroup extends Modifier { + constructor(subNotes) { + super(); + this.preFormatted = false; + this.position = Modifier.Position.LEFT; + this.subNotes = subNotes; + this.subNotes.forEach((subNote) => { + subNote.setIgnoreTicks(false); + }); + this.width = 0; + this.formatter = new Formatter(); + this.voice = new Voice({ + num_beats: 4, + beat_value: 4, + resolution: Tables.RESOLUTION, + }).setStrict(false); + this.voice.addTickables(this.subNotes); + } + static get CATEGORY() { + return "NoteSubGroup"; + } + static format(groups, state) { + if (!groups || groups.length === 0) + return false; + let width = 0; + for (let i = 0; i < groups.length; ++i) { + const group = groups[i]; + group.preFormat(); + width += group.getWidth(); + } + state.left_shift += width; + return true; + } + preFormat() { + if (this.preFormatted) + return; + this.formatter.joinVoices([this.voice]).format([this.voice], 0); + this.setWidth(this.formatter.getMinTotalWidth()); + this.preFormatted = true; + } + setWidth(width) { + this.width = width; + return this; + } + getWidth() { + return this.width; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + this.alignSubNotesWithNote(this.subNotes, note); + this.subNotes.forEach((subNote) => subNote.setContext(ctx).drawWithStyle()); + } +} diff --git a/build/esm/src/ornament.js b/build/esm/src/ornament.js new file mode 100644 index 0000000000..3c1ad9efda --- /dev/null +++ b/build/esm/src/ornament.js @@ -0,0 +1,209 @@ +import { Glyph } from './glyph.js'; +import { Modifier } from './modifier.js'; +import { Stem } from './stem.js'; +import { Tables } from './tables.js'; +import { TickContext } from './tickcontext.js'; +import { isTabNote } from './typeguard.js'; +import { defined, log, RuntimeError } from './util.js'; +function L(...args) { + if (Ornament.DEBUG) + log('Vex.Flow.Ornament', args); +} +export class Ornament extends Modifier { + constructor(type) { + super(); + this.type = type; + this.delayed = false; + this.render_options = { + font_scale: 38, + accidentalLowerPadding: 3, + accidentalUpperPadding: 3, + }; + this.ornament = Tables.ornamentCodes(this.type); + const metrics = this.getMetrics(); + this.adjustForStemDirection = false; + this.reportedWidth = metrics && metrics.reportedWidth ? metrics.reportedWidth : 0; + this.stemUpYOffset = metrics && metrics.stemUpYOffset ? metrics.stemUpYOffset : 0; + this.ornamentAlignWithNoteHead = Ornament.ornamentAlignWithNoteHead.indexOf(this.type) >= 0; + if (!this.ornament) { + throw new RuntimeError('ArgumentError', `Ornament not found: '${this.type}'`); + } + this.x_shift = metrics ? metrics.xOffset : 0; + this.y_shift = metrics ? metrics.yOffset : 0; + this.glyph = new Glyph(this.ornament.code, this.render_options.font_scale, { + category: `ornament.${this.ornament.code}`, + }); + if (Ornament.ornamentNoteTransition.indexOf(this.type) >= 0) { + this.delayed = true; + } + if (!metrics) { + this.glyph.setOrigin(0.5, 1.0); + } + } + static get CATEGORY() { + return "Ornament"; + } + static get minPadding() { + const musicFont = Tables.currentMusicFont(); + return musicFont.lookupMetric('glyphs.noteHead.minPadding'); + } + static format(ornaments, state) { + if (!ornaments || ornaments.length === 0) + return false; + let width = 0; + let right_shift = state.right_shift; + let left_shift = state.left_shift; + let yOffset = 0; + for (let i = 0; i < ornaments.length; ++i) { + const ornament = ornaments[i]; + const increment = 2; + if (Ornament.ornamentRelease.indexOf(ornament.type) >= 0) { + ornament.x_shift += right_shift + 2; + } + if (Ornament.ornamentAttack.indexOf(ornament.type) >= 0) { + ornament.x_shift -= left_shift + 2; + } + if (ornament.reportedWidth && ornament.x_shift < 0) { + left_shift += ornament.reportedWidth; + } + else if (ornament.reportedWidth && ornament.x_shift >= 0) { + right_shift += ornament.reportedWidth + Ornament.minPadding; + } + else { + width = Math.max(ornament.getWidth(), width); + } + if (Ornament.ornamentArticulation.indexOf(ornament.type) >= 0) { + const ornamentNote = defined(ornament.note, 'NoAttachedNote'); + if (ornamentNote.getLineNumber() >= 3 || ornament.getPosition() === Modifier.Position.ABOVE) { + state.top_text_line += increment; + ornament.y_shift += yOffset; + yOffset -= ornament.glyph.bbox.getH(); + } + else { + state.text_line += increment; + ornament.y_shift += yOffset; + yOffset += ornament.glyph.bbox.getH(); + } + } + else { + if (ornament.getPosition() === Modifier.Position.ABOVE) { + ornament.setTextLine(state.top_text_line); + state.top_text_line += increment; + } + else { + ornament.setTextLine(state.text_line); + state.text_line += increment; + } + } + } + state.left_shift = left_shift + width / 2; + state.right_shift = right_shift + width / 2; + return true; + } + static get ornamentNoteTransition() { + return ['flip', 'jazzTurn', 'smear']; + } + static get ornamentAttack() { + return ['scoop']; + } + static get ornamentAlignWithNoteHead() { + return ['doit', 'fall', 'fallLong', 'doitLong', 'bend', 'plungerClosed', 'plungerOpen', 'scoop']; + } + static get ornamentRelease() { + return ['doit', 'fall', 'fallLong', 'doitLong', 'jazzTurn', 'smear', 'flip']; + } + static get ornamentArticulation() { + return ['bend', 'plungerClosed', 'plungerOpen']; + } + getMetrics() { + return Tables.currentMusicFont().getMetrics().glyphs.jazzOrnaments[this.ornament.code]; + } + setDelayed(delayed) { + this.delayed = delayed; + return this; + } + setUpperAccidental(accid) { + const scale = this.render_options.font_scale / 1.3; + this.accidentalUpper = new Glyph(Tables.accidentalCodes(accid).code, scale); + this.accidentalUpper.setOrigin(0.5, 1.0); + return this; + } + setLowerAccidental(accid) { + const scale = this.render_options.font_scale / 1.3; + this.accidentalLower = new Glyph(Tables.accidentalCodes(accid).code, scale); + this.accidentalLower.setOrigin(0.5, 1.0); + return this; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const stemDir = note.getStemDirection(); + const stave = note.checkStave(); + ctx.openGroup('ornament', this.getAttribute('id')); + const stemExtents = note.checkStem().getExtents(); + let y = stemDir === Stem.DOWN ? stemExtents.baseY : stemExtents.topY; + if (isTabNote(note)) { + if (note.hasStem()) { + if (stemDir === Stem.DOWN) { + y = stave.getYForTopText(this.text_line); + } + } + else { + y = stave.getYForTopText(this.text_line); + } + } + const isPlacedOnNoteheadSide = stemDir === Stem.DOWN; + const spacing = stave.getSpacingBetweenLines(); + let lineSpacing = 1; + if (!isPlacedOnNoteheadSide && note.hasBeam()) { + lineSpacing += 0.5; + } + const totalSpacing = spacing * (this.text_line + lineSpacing); + const glyphYBetweenLines = y - totalSpacing; + const start = note.getModifierStartXY(this.position, this.index); + let glyphX = start.x; + let glyphY = this.ornamentAlignWithNoteHead + ? start.y + : Math.min(stave.getYForTopText(this.text_line), glyphYBetweenLines); + glyphY += this.y_shift; + if (this.delayed) { + let delayXShift = 0; + const startX = glyphX - (stave.getX() - 10); + if (this.delayXShift !== undefined) { + delayXShift = this.delayXShift; + } + else { + delayXShift += this.glyph.getMetrics().width / 2; + const nextContext = TickContext.getNextContext(note.getTickContext()); + if (nextContext) { + delayXShift += (nextContext.getX() - startX) * 0.5; + } + else { + delayXShift += (stave.getX() + stave.getWidth() - startX) * 0.5; + } + this.delayXShift = delayXShift; + } + glyphX += delayXShift; + } + L('Rendering ornament: ', this.ornament, glyphX, glyphY); + if (this.accidentalLower) { + this.accidentalLower.render(ctx, glyphX, glyphY); + glyphY -= this.accidentalLower.getMetrics().height; + glyphY -= this.render_options.accidentalLowerPadding; + } + if (this.stemUpYOffset && note.hasStem() && note.getStemDirection() === 1) { + glyphY += this.stemUpYOffset; + } + if (note.getLineNumber() < 5 && Ornament.ornamentNoteTransition.indexOf(this.type) >= 0) { + glyphY = note.checkStave().getBoundingBox().getY() + 40; + } + this.glyph.render(ctx, glyphX + this.x_shift, glyphY); + if (this.accidentalUpper) { + glyphY -= this.glyph.getMetrics().height + this.render_options.accidentalUpperPadding; + this.accidentalUpper.render(ctx, glyphX, glyphY); + } + ctx.closeGroup(); + } +} +Ornament.DEBUG = false; diff --git a/build/esm/src/parenthesis.js b/build/esm/src/parenthesis.js new file mode 100644 index 0000000000..db336f3c31 --- /dev/null +++ b/build/esm/src/parenthesis.js @@ -0,0 +1,76 @@ +import { Glyph } from './glyph.js'; +import { Modifier, ModifierPosition } from './modifier.js'; +import { Tables } from './tables.js'; +import { isGraceNote } from './typeguard.js'; +export class Parenthesis extends Modifier { + constructor(position) { + super(); + this.position = position !== null && position !== void 0 ? position : Modifier.Position.LEFT; + this.point = Tables.currentMusicFont().lookupMetric('parenthesis.default.point'); + this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.default.width')); + } + static get CATEGORY() { + return "Parenthesis"; + } + static buildAndAttach(notes) { + for (const note of notes) { + for (let i = 0; i < note.keys.length; i++) { + note.addModifier(new Parenthesis(ModifierPosition.LEFT), i); + note.addModifier(new Parenthesis(ModifierPosition.RIGHT), i); + } + } + } + static format(parentheses, state) { + if (!parentheses || parentheses.length === 0) + return false; + let x_widthL = 0; + let x_widthR = 0; + for (let i = 0; i < parentheses.length; ++i) { + const parenthesis = parentheses[i]; + const note = parenthesis.getNote(); + const pos = parenthesis.getPosition(); + const index = parenthesis.checkIndex(); + let shift = 0; + if (pos === ModifierPosition.RIGHT) { + shift = note.getRightParenthesisPx(index); + x_widthR = x_widthR > shift + parenthesis.width ? x_widthR : shift + parenthesis.width; + } + if (pos === ModifierPosition.LEFT) { + shift = note.getLeftParenthesisPx(index); + x_widthL = x_widthL > shift + parenthesis.width ? x_widthL : shift + parenthesis.width; + } + parenthesis.setXShift(shift); + } + state.left_shift += x_widthL; + state.right_shift += x_widthR; + return true; + } + setNote(note) { + this.note = note; + this.point = Tables.currentMusicFont().lookupMetric('parenthesis.default.point'); + this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.default.width')); + if (isGraceNote(note)) { + this.point = Tables.currentMusicFont().lookupMetric('parenthesis.gracenote.point'); + this.setWidth(Tables.currentMusicFont().lookupMetric('parenthesis.gracenote.width')); + } + return this; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const start = note.getModifierStartXY(this.position, this.index, { forceFlagRight: true }); + const x = start.x + this.x_shift; + const y = start.y + this.y_shift; + if (this.position == Modifier.Position.RIGHT) { + Glyph.renderGlyph(ctx, x + 1, y, this.point, 'noteheadParenthesisRight', { + category: `noteHead.standard.noteheadParenthesisRight`, + }); + } + else if (this.position == Modifier.Position.LEFT) { + Glyph.renderGlyph(ctx, x - 2, y, this.point, 'noteheadParenthesisLeft', { + category: `noteHead.standard.noteheadParenthesisLeft`, + }); + } + } +} diff --git a/build/esm/src/parser.js b/build/esm/src/parser.js new file mode 100644 index 0000000000..2cb5274923 --- /dev/null +++ b/build/esm/src/parser.js @@ -0,0 +1,164 @@ +import { log, RuntimeError } from './util.js'; +function L(...args) { + if (Parser.DEBUG) + log('Vex.Flow.Parser', args); +} +const NO_ERROR_POS = -1; +function flattenMatches(r) { + if ('matchedString' in r) + return r.matchedString; + if ('results' in r) + return flattenMatches(r.results); + const results = r; + if (results.length === 1) + return flattenMatches(results[0]); + if (results.length === 0) + return null; + return results.map(flattenMatches); +} +export class Parser { + constructor(grammar) { + this.grammar = grammar; + this.line = ''; + this.pos = 0; + this.errorPos = NO_ERROR_POS; + } + parse(line) { + this.line = line; + this.pos = 0; + this.errorPos = NO_ERROR_POS; + const result = this.expect(this.grammar.begin()); + result.errorPos = this.errorPos; + return result; + } + matchFail(returnPos) { + if (this.errorPos === NO_ERROR_POS) + this.errorPos = this.pos; + this.pos = returnPos; + } + matchSuccess() { + this.errorPos = NO_ERROR_POS; + } + matchToken(token, noSpace = false) { + const regexp = noSpace ? new RegExp('^((' + token + '))') : new RegExp('^((' + token + ')\\s*)'); + const workingLine = this.line.slice(this.pos); + const result = workingLine.match(regexp); + if (result !== null) { + return { + success: true, + matchedString: result[2], + incrementPos: result[1].length, + pos: this.pos, + }; + } + else { + return { success: false, pos: this.pos }; + } + } + expectOne(rule, maybe = false) { + const results = []; + const pos = this.pos; + let allMatches = true; + let oneMatch = false; + maybe = maybe === true || rule.maybe === true; + if (rule.expect) { + for (const next of rule.expect) { + const localPos = this.pos; + const result = this.expect(next); + if (result.success) { + results.push(result); + oneMatch = true; + if (rule.or) + break; + } + else { + allMatches = false; + if (!rule.or) { + this.pos = localPos; + break; + } + } + } + } + const gotOne = (rule.or && oneMatch) || allMatches; + const success = gotOne || maybe === true; + const numMatches = gotOne ? 1 : 0; + if (maybe && !gotOne) + this.pos = pos; + if (success) { + this.matchSuccess(); + } + else { + this.matchFail(pos); + } + return { success, results, numMatches }; + } + expectOneOrMore(rule, maybe = false) { + const results = []; + const pos = this.pos; + let numMatches = 0; + let more = true; + do { + const result = this.expectOne(rule); + if (result.success && result.results) { + numMatches++; + results.push(result.results); + } + else { + more = false; + } + } while (more); + const success = numMatches > 0 || maybe === true; + if (maybe && !(numMatches > 0)) + this.pos = pos; + if (success) { + this.matchSuccess(); + } + else { + this.matchFail(pos); + } + return { success, results, numMatches }; + } + expectZeroOrMore(rule) { + return this.expectOneOrMore(rule, true); + } + expect(ruleFunc) { + L('Evaluating rule function:', ruleFunc); + if (!ruleFunc) { + throw new RuntimeError('Invalid rule function'); + } + let result; + const rule = ruleFunc.bind(this.grammar)(); + if (rule.token) { + result = this.matchToken(rule.token, rule.noSpace === true); + if (result.success) { + this.pos += result.incrementPos; + } + } + else if (rule.expect) { + if (rule.oneOrMore) { + result = this.expectOneOrMore(rule); + } + else if (rule.zeroOrMore) { + result = this.expectZeroOrMore(rule); + } + else { + result = this.expectOne(rule); + } + } + else { + L(rule); + throw new RuntimeError('Bad grammar! No `token` or `expect` property ' + rule); + } + const matches = []; + result.matches = matches; + if (result.results) { + result.results.forEach((r) => matches.push(flattenMatches(r))); + } + if (rule.run && result.success) { + rule.run({ matches }); + } + return result; + } +} +Parser.DEBUG = false; diff --git a/build/esm/src/pedalmarking.js b/build/esm/src/pedalmarking.js new file mode 100644 index 0000000000..d422c4e39c --- /dev/null +++ b/build/esm/src/pedalmarking.js @@ -0,0 +1,192 @@ +import { Element } from './element.js'; +import { Font, FontStyle, FontWeight } from './font.js'; +import { Glyph } from './glyph.js'; +import { Tables } from './tables.js'; +import { log, RuntimeError } from './util.js'; +function L(...args) { + if (PedalMarking.DEBUG) + log('Vex.Flow.PedalMarking', args); +} +function drawPedalGlyph(name, context, x, y, point) { + const glyph_data = PedalMarking.GLYPHS[name]; + const glyph = new Glyph(glyph_data.code, point, { category: 'pedalMarking' }); + glyph.render(context, x + glyph_data.x_shift, y + glyph_data.y_shift); +} +export class PedalMarking extends Element { + constructor(notes) { + super(); + this.notes = notes; + this.type = PedalMarking.type.TEXT; + this.line = 0; + this.custom_depress_text = ''; + this.custom_release_text = ''; + this.resetFont(); + this.render_options = { + bracket_height: 10, + text_margin_right: 6, + bracket_line_width: 1, + color: 'black', + }; + } + static get CATEGORY() { + return "PedalMarking"; + } + static createSustain(notes) { + const pedal = new PedalMarking(notes); + return pedal; + } + static createSostenuto(notes) { + const pedal = new PedalMarking(notes); + pedal.setType(PedalMarking.type.MIXED); + pedal.setCustomText('Sost. Ped.'); + return pedal; + } + static createUnaCorda(notes) { + const pedal = new PedalMarking(notes); + pedal.setType(PedalMarking.type.TEXT); + pedal.setCustomText('una corda', 'tre corda'); + return pedal; + } + setType(type) { + type = typeof type === 'string' ? PedalMarking.typeString[type] : type; + if (type >= PedalMarking.type.TEXT && type <= PedalMarking.type.MIXED) { + this.type = type; + } + return this; + } + setCustomText(depress, release) { + this.custom_depress_text = depress || ''; + this.custom_release_text = release || ''; + return this; + } + setLine(line) { + this.line = line; + return this; + } + drawBracketed() { + const ctx = this.checkContext(); + let is_pedal_depressed = false; + let prev_x; + let prev_y; + this.notes.forEach((note, index, notes) => { + is_pedal_depressed = !is_pedal_depressed; + const x = note.getAbsoluteX(); + const y = note.checkStave().getYForBottomText(this.line + 3); + if (x < prev_x) { + throw new RuntimeError('InvalidConfiguration', 'The notes provided must be in order of ascending x positions'); + } + const next_is_same = notes[index + 1] === note; + const prev_is_same = notes[index - 1] === note; + let x_shift = 0; + const point = Tables.currentMusicFont().lookupMetric(`pedalMarking.${is_pedal_depressed ? 'down' : 'up'}.point`); + if (is_pedal_depressed) { + x_shift = prev_is_same ? 5 : 0; + if (this.type === PedalMarking.type.MIXED && !prev_is_same) { + if (this.custom_depress_text) { + const text_width = ctx.measureText(this.custom_depress_text).width; + ctx.fillText(this.custom_depress_text, x - text_width / 2, y); + x_shift = text_width / 2 + this.render_options.text_margin_right; + } + else { + drawPedalGlyph('pedal_depress', ctx, x, y, point); + x_shift = 20 + this.render_options.text_margin_right; + } + } + else { + ctx.beginPath(); + ctx.moveTo(x, y - this.render_options.bracket_height); + ctx.lineTo(x + x_shift, y); + ctx.stroke(); + ctx.closePath(); + } + } + else { + x_shift = next_is_same ? -5 : 0; + ctx.beginPath(); + ctx.moveTo(prev_x, prev_y); + ctx.lineTo(x + x_shift, y); + ctx.lineTo(x, y - this.render_options.bracket_height); + ctx.stroke(); + ctx.closePath(); + } + prev_x = x + x_shift; + prev_y = y; + }); + } + drawText() { + const ctx = this.checkContext(); + let is_pedal_depressed = false; + this.notes.forEach((note) => { + is_pedal_depressed = !is_pedal_depressed; + const stave = note.checkStave(); + const x = note.getAbsoluteX(); + const y = stave.getYForBottomText(this.line + 3); + const point = Tables.currentMusicFont().lookupMetric(`pedalMarking.${is_pedal_depressed ? 'down' : 'up'}.point`); + let text_width = 0; + if (is_pedal_depressed) { + if (this.custom_depress_text) { + text_width = ctx.measureText(this.custom_depress_text).width; + ctx.fillText(this.custom_depress_text, x - text_width / 2, y); + } + else { + drawPedalGlyph('pedal_depress', ctx, x, y, point); + } + } + else { + if (this.custom_release_text) { + text_width = ctx.measureText(this.custom_release_text).width; + ctx.fillText(this.custom_release_text, x - text_width / 2, y); + } + else { + drawPedalGlyph('pedal_release', ctx, x, y, point); + } + } + }); + } + draw() { + const ctx = this.checkContext(); + this.setRendered(); + ctx.save(); + ctx.setStrokeStyle(this.render_options.color); + ctx.setFillStyle(this.render_options.color); + ctx.setFont(this.textFont); + L('Rendering Pedal Marking'); + if (this.type === PedalMarking.type.BRACKET || this.type === PedalMarking.type.MIXED) { + ctx.setLineWidth(this.render_options.bracket_line_width); + this.drawBracketed(); + } + else if (this.type === PedalMarking.type.TEXT) { + this.drawText(); + } + ctx.restore(); + } +} +PedalMarking.DEBUG = false; +PedalMarking.TEXT_FONT = { + family: Font.SERIF, + size: 12, + weight: FontWeight.BOLD, + style: FontStyle.ITALIC, +}; +PedalMarking.GLYPHS = { + pedal_depress: { + code: 'keyboardPedalPed', + x_shift: -10, + y_shift: 0, + }, + pedal_release: { + code: 'keyboardPedalUp', + x_shift: -2, + y_shift: 3, + }, +}; +PedalMarking.type = { + TEXT: 1, + BRACKET: 2, + MIXED: 3, +}; +PedalMarking.typeString = { + text: PedalMarking.type.TEXT, + bracket: PedalMarking.type.BRACKET, + mixed: PedalMarking.type.MIXED, +}; diff --git a/build/esm/src/registry.js b/build/esm/src/registry.js new file mode 100644 index 0000000000..cb60d78c91 --- /dev/null +++ b/build/esm/src/registry.js @@ -0,0 +1,81 @@ +import { RuntimeError } from './util.js'; +class Index { + constructor() { + this.id = {}; + this.type = {}; + this.class = {}; + } +} +export class Registry { + constructor() { + this.index = new Index(); + } + static getDefaultRegistry() { + return Registry.defaultRegistry; + } + static enableDefaultRegistry(registry) { + Registry.defaultRegistry = registry; + } + static disableDefaultRegistry() { + Registry.defaultRegistry = undefined; + } + clear() { + this.index = new Index(); + return this; + } + setIndexValue(name, value, id, elem) { + const index = this.index; + if (!index[name][value]) { + index[name][value] = {}; + } + index[name][value][id] = elem; + } + updateIndex({ id, name, value, oldValue }) { + const elem = this.getElementById(id); + if (oldValue !== undefined && this.index[name][oldValue]) { + delete this.index[name][oldValue][id]; + } + if (value && elem) { + this.setIndexValue(name, value, elem.getAttribute('id'), elem); + } + } + register(elem, id) { + id = id || elem.getAttribute('id'); + if (!id) { + throw new RuntimeError("Can't add element without `id` attribute to registry"); + } + elem.setAttribute('id', id); + this.setIndexValue('id', id, id, elem); + this.updateIndex({ id, name: 'type', value: elem.getAttribute('type'), oldValue: undefined }); + elem.onRegister(this); + return this; + } + getElementById(id) { + var _a, _b; + return (_b = (_a = this.index.id) === null || _a === void 0 ? void 0 : _a[id]) === null || _b === void 0 ? void 0 : _b[id]; + } + getElementsByAttribute(attribute, value) { + const index_attr = this.index[attribute]; + if (index_attr) { + const index_attr_val = index_attr[value]; + if (index_attr_val) { + const keys = Object.keys(index_attr_val); + return keys.map((k) => index_attr_val[k]); + } + } + return []; + } + getElementsByType(type) { + return this.getElementsByAttribute('type', type); + } + getElementsByClass(className) { + return this.getElementsByAttribute('class', className); + } + onUpdate(info) { + const allowedNames = ['id', 'type', 'class']; + if (allowedNames.includes(info.name)) { + this.updateIndex(info); + } + return this; + } +} diff --git a/build/esm/src/rendercontext.js b/build/esm/src/rendercontext.js new file mode 100644 index 0000000000..ec7a54acc0 --- /dev/null +++ b/build/esm/src/rendercontext.js @@ -0,0 +1,24 @@ +export class RenderContext { + static get CATEGORY() { + return "RenderContext"; + } + set font(f) { + this.setFont(f); + } + get font() { + return this.getFont(); + } + setRawFont(f) { + this.setFont(f); + return this; + } +} +export function drawDot(ctx, x, y, color = '#F55') { + ctx.save(); + ctx.setFillStyle(color); + ctx.beginPath(); + ctx.arc(x, y, 3, 0, Math.PI * 2, false); + ctx.closePath(); + ctx.fill(); + ctx.restore(); +} diff --git a/build/esm/src/renderer.js b/build/esm/src/renderer.js new file mode 100644 index 0000000000..d925f77f9b --- /dev/null +++ b/build/esm/src/renderer.js @@ -0,0 +1,112 @@ +import { CanvasContext } from './canvascontext.js'; +import { SVGContext } from './svgcontext.js'; +import { isRenderContext } from './typeguard.js'; +import { RuntimeError } from './util.js'; +import { isHTMLCanvas, isHTMLDiv } from './web.js'; +export var RendererBackends; +(function (RendererBackends) { + RendererBackends[RendererBackends["CANVAS"] = 1] = "CANVAS"; + RendererBackends[RendererBackends["SVG"] = 2] = "SVG"; +})(RendererBackends || (RendererBackends = {})); +export var RendererLineEndType; +(function (RendererLineEndType) { + RendererLineEndType[RendererLineEndType["NONE"] = 1] = "NONE"; + RendererLineEndType[RendererLineEndType["UP"] = 2] = "UP"; + RendererLineEndType[RendererLineEndType["DOWN"] = 3] = "DOWN"; +})(RendererLineEndType || (RendererLineEndType = {})); +export class Renderer { + constructor(arg0, arg1) { + if (isRenderContext(arg0)) { + this.ctx = arg0; + } + else { + if (arg1 === undefined) { + throw new RuntimeError('InvalidArgument', 'Missing backend argument'); + } + const backend = arg1; + let element; + if (typeof arg0 == 'string') { + const maybeElement = document.getElementById(arg0); + if (!maybeElement) { + throw new RuntimeError('BadElementId', `Can't find element with ID "${maybeElement}"`); + } + element = maybeElement; + } + else { + element = arg0; + } + if (backend === Renderer.Backends.CANVAS) { + if (!isHTMLCanvas(element)) { + throw new RuntimeError('BadElement', 'CANVAS context requires an HTMLCanvasElement.'); + } + const context = element.getContext('2d'); + if (!context) { + throw new RuntimeError('BadElement', "Can't get canvas context"); + } + this.ctx = new CanvasContext(context); + } + else if (backend === Renderer.Backends.SVG) { + if (!isHTMLDiv(element)) { + throw new RuntimeError('BadElement', 'SVG context requires an HTMLDivElement.'); + } + this.ctx = new SVGContext(element); + } + else { + throw new RuntimeError('InvalidBackend', `No support for backend: ${backend}`); + } + } + } + static buildContext(elementId, backend, width, height, background = '#FFF') { + const renderer = new Renderer(elementId, backend); + if (width && height) { + renderer.resize(width, height); + } + const ctx = renderer.getContext(); + ctx.setBackgroundFillStyle(background); + Renderer.lastContext = ctx; + return ctx; + } + static getCanvasContext(elementId, width, height, background) { + return Renderer.buildContext(elementId, Renderer.Backends.CANVAS, width, height, background); + } + static getSVGContext(elementId, width, height, background) { + return Renderer.buildContext(elementId, Renderer.Backends.SVG, width, height, background); + } + static drawDashedLine(context, fromX, fromY, toX, toY, dashPattern) { + context.beginPath(); + const dx = toX - fromX; + const dy = toY - fromY; + const angle = Math.atan2(dy, dx); + let x = fromX; + let y = fromY; + context.moveTo(fromX, fromY); + let idx = 0; + let draw = true; + while (!((dx < 0 ? x <= toX : x >= toX) && (dy < 0 ? y <= toY : y >= toY))) { + const dashLength = dashPattern[idx++ % dashPattern.length]; + const nx = x + Math.cos(angle) * dashLength; + x = dx < 0 ? Math.max(toX, nx) : Math.min(toX, nx); + const ny = y + Math.sin(angle) * dashLength; + y = dy < 0 ? Math.max(toY, ny) : Math.min(toY, ny); + if (draw) { + context.lineTo(x, y); + } + else { + context.moveTo(x, y); + } + draw = !draw; + } + context.closePath(); + context.stroke(); + } + resize(width, height) { + this.ctx.resize(width, height); + return this; + } + getContext() { + return this.ctx; + } +} +Renderer.Backends = RendererBackends; +Renderer.LineEndType = RendererLineEndType; +Renderer.lastContext = undefined; diff --git a/build/esm/src/repeatnote.js b/build/esm/src/repeatnote.js new file mode 100644 index 0000000000..de9f137e53 --- /dev/null +++ b/build/esm/src/repeatnote.js @@ -0,0 +1,22 @@ +import { Glyph } from './glyph.js'; +import { GlyphNote } from './glyphnote.js'; +import { Tables } from './tables.js'; +const CODES = { + '1': 'repeat1Bar', + '2': 'repeat2Bars', + '4': 'repeat4Bars', + slash: 'repeatBarSlash', +}; +export class RepeatNote extends GlyphNote { + static get CATEGORY() { + return "RepeatNote"; + } + constructor(type, noteStruct, options) { + super(undefined, Object.assign({ duration: 'q', align_center: type !== 'slash' }, noteStruct), options); + const glyphCode = CODES[type] || 'repeat1Bar'; + const glyph = new Glyph(glyphCode, Tables.currentMusicFont().lookupMetric('repeatNote.point', 40), { + category: 'repeatNote', + }); + this.setGlyph(glyph); + } +} diff --git a/build/esm/src/stave.js b/build/esm/src/stave.js new file mode 100644 index 0000000000..d97220dd5e --- /dev/null +++ b/build/esm/src/stave.js @@ -0,0 +1,588 @@ +import { BoundingBox } from './boundingbox.js'; +import { Clef } from './clef.js'; +import { Element } from './element.js'; +import { Font, FontStyle, FontWeight } from './font.js'; +import { KeySignature } from './keysignature.js'; +import { Barline, BarlineType } from './stavebarline.js'; +import { StaveModifierPosition } from './stavemodifier.js'; +import { Repetition } from './staverepetition.js'; +import { StaveSection } from './stavesection.js'; +import { StaveTempo } from './stavetempo.js'; +import { StaveText } from './stavetext.js'; +import { Volta } from './stavevolta.js'; +import { Tables } from './tables.js'; +import { TimeSignature } from './timesignature.js'; +import { isBarline } from './typeguard.js'; +import { RuntimeError } from './util.js'; +const SORT_ORDER_BEG_MODIFIERS = { + [Barline.CATEGORY]: 0, + [Clef.CATEGORY]: 1, + [KeySignature.CATEGORY]: 2, + [TimeSignature.CATEGORY]: 3, +}; +const SORT_ORDER_END_MODIFIERS = { + [TimeSignature.CATEGORY]: 0, + [KeySignature.CATEGORY]: 1, + [Barline.CATEGORY]: 2, + [Clef.CATEGORY]: 3, +}; +export class Stave extends Element { + constructor(x, y, width, options) { + super(); + this.height = 0; + this.x = x; + this.y = y; + this.width = width; + this.formatted = false; + this.start_x = x + 5; + this.end_x = x + width; + this.modifiers = []; + this.measure = 0; + this.clef = 'treble'; + this.endClef = undefined; + this.resetFont(); + this.options = Object.assign({ vertical_bar_width: 10, num_lines: 5, fill_style: '#999999', left_bar: true, right_bar: true, spacing_between_lines_px: Tables.STAVE_LINE_DISTANCE, space_above_staff_ln: 4, space_below_staff_ln: 4, top_text_position: 1, bottom_text_position: 4, line_config: [] }, options); + this.bounds = { x: this.x, y: this.y, w: this.width, h: 0 }; + this.defaultLedgerLineStyle = { strokeStyle: '#444', lineWidth: 1.4 }; + this.resetLines(); + this.addModifier(new Barline(this.options.left_bar ? BarlineType.SINGLE : BarlineType.NONE)); + this.addEndModifier(new Barline(this.options.right_bar ? BarlineType.SINGLE : BarlineType.NONE)); + } + static get CATEGORY() { + return "Stave"; + } + static get defaultPadding() { + const musicFont = Tables.currentMusicFont(); + return musicFont.lookupMetric('stave.padding') + musicFont.lookupMetric('stave.endPaddingMax'); + } + static get rightPadding() { + const musicFont = Tables.currentMusicFont(); + return musicFont.lookupMetric('stave.endPaddingMax'); + } + setDefaultLedgerLineStyle(style) { + this.defaultLedgerLineStyle = style; + } + getDefaultLedgerLineStyle() { + return Object.assign(Object.assign({}, this.getStyle()), this.defaultLedgerLineStyle); + } + space(spacing) { + return this.options.spacing_between_lines_px * spacing; + } + resetLines() { + this.options.line_config = []; + for (let i = 0; i < this.options.num_lines; i++) { + this.options.line_config.push({ visible: true }); + } + this.height = (this.options.num_lines + this.options.space_above_staff_ln) * this.options.spacing_between_lines_px; + this.options.bottom_text_position = this.options.num_lines; + } + setNoteStartX(x) { + if (!this.formatted) + this.format(); + this.start_x = x; + return this; + } + getNoteStartX() { + if (!this.formatted) + this.format(); + return this.start_x; + } + getNoteEndX() { + if (!this.formatted) + this.format(); + return this.end_x; + } + getTieStartX() { + return this.start_x; + } + getTieEndX() { + return this.end_x; + } + getX() { + return this.x; + } + getNumLines() { + return this.options.num_lines; + } + setNumLines(n) { + this.options.num_lines = n; + this.resetLines(); + return this; + } + setY(y) { + this.y = y; + return this; + } + getY() { + return this.y; + } + getTopLineTopY() { + return this.getYForLine(0) - Tables.STAVE_LINE_THICKNESS / 2; + } + getBottomLineBottomY() { + return this.getYForLine(this.getNumLines() - 1) + Tables.STAVE_LINE_THICKNESS / 2; + } + setX(x) { + const shift = x - this.x; + this.formatted = false; + this.x = x; + this.start_x += shift; + this.end_x += shift; + for (let i = 0; i < this.modifiers.length; i++) { + const mod = this.modifiers[i]; + mod.setX(mod.getX() + shift); + } + return this; + } + setWidth(width) { + this.formatted = false; + this.width = width; + this.end_x = this.x + width; + return this; + } + getWidth() { + return this.width; + } + getStyle() { + return Object.assign({ fillStyle: this.options.fill_style, strokeStyle: this.options.fill_style, lineWidth: Tables.STAVE_LINE_THICKNESS }, super.getStyle()); + } + setMeasure(measure) { + this.measure = measure; + return this; + } + getMeasure() { + return this.measure; + } + getModifierXShift(index = 0) { + if (typeof index !== 'number') { + throw new RuntimeError('InvalidIndex', 'Must be of number type'); + } + if (!this.formatted) + this.format(); + if (this.getModifiers(StaveModifierPosition.BEGIN).length === 1) { + return 0; + } + if (this.modifiers[index].getPosition() === StaveModifierPosition.RIGHT) { + return 0; + } + let start_x = this.start_x - this.x; + const begBarline = this.modifiers[0]; + if (begBarline.getType() === BarlineType.REPEAT_BEGIN && start_x > begBarline.getWidth()) { + start_x -= begBarline.getWidth(); + } + return start_x; + } + setRepetitionType(type, yShift = 0) { + this.modifiers.push(new Repetition(type, this.x, yShift)); + return this; + } + setVoltaType(type, number_t, y) { + this.modifiers.push(new Volta(type, number_t, this.x, y)); + return this; + } + setSection(section, y, xOffset = 0, fontSize, drawRect = true) { + const staveSection = new StaveSection(section, this.x + xOffset, y, drawRect); + if (fontSize) + staveSection.setFontSize(fontSize); + this.modifiers.push(staveSection); + return this; + } + setTempo(tempo, y) { + this.modifiers.push(new StaveTempo(tempo, this.x, y)); + return this; + } + setText(text, position, options = {}) { + this.modifiers.push(new StaveText(text, position, options)); + return this; + } + getHeight() { + return this.height; + } + getSpacingBetweenLines() { + return this.options.spacing_between_lines_px; + } + getBoundingBox() { + return new BoundingBox(this.x, this.y, this.width, this.getBottomY() - this.y); + } + getBottomY() { + const options = this.options; + const spacing = options.spacing_between_lines_px; + const score_bottom = this.getYForLine(options.num_lines) + options.space_below_staff_ln * spacing; + return score_bottom; + } + getBottomLineY() { + return this.getYForLine(this.options.num_lines); + } + getYForLine(line) { + const options = this.options; + const spacing = options.spacing_between_lines_px; + const headroom = options.space_above_staff_ln; + const y = this.y + line * spacing + headroom * spacing; + return y; + } + getLineForY(y) { + const options = this.options; + const spacing = options.spacing_between_lines_px; + const headroom = options.space_above_staff_ln; + return (y - this.y) / spacing - headroom; + } + getYForTopText(line = 0) { + return this.getYForLine(-line - this.options.top_text_position); + } + getYForBottomText(line = 0) { + return this.getYForLine(this.options.bottom_text_position + line); + } + getYForNote(line) { + const options = this.options; + const spacing = options.spacing_between_lines_px; + const headroom = options.space_above_staff_ln; + return this.y + headroom * spacing + 5 * spacing - line * spacing; + } + getYForGlyphs() { + return this.getYForLine(3); + } + addModifier(modifier, position) { + if (position !== undefined) { + modifier.setPosition(position); + } + modifier.setStave(this); + this.formatted = false; + this.modifiers.push(modifier); + return this; + } + addEndModifier(modifier) { + this.addModifier(modifier, StaveModifierPosition.END); + return this; + } + setBegBarType(type) { + const { SINGLE, REPEAT_BEGIN, NONE } = BarlineType; + if (type === SINGLE || type === REPEAT_BEGIN || type === NONE) { + this.modifiers[0].setType(type); + this.formatted = false; + } + return this; + } + setEndBarType(type) { + if (type !== BarlineType.REPEAT_BEGIN) { + this.modifiers[1].setType(type); + this.formatted = false; + } + return this; + } + setClef(clefSpec, size, annotation, position) { + if (position === undefined) { + position = StaveModifierPosition.BEGIN; + } + if (position === StaveModifierPosition.END) { + this.endClef = clefSpec; + } + else { + this.clef = clefSpec; + } + const clefs = this.getModifiers(position, Clef.CATEGORY); + if (clefs.length === 0) { + this.addClef(clefSpec, size, annotation, position); + } + else { + clefs[0].setType(clefSpec, size, annotation); + } + return this; + } + getClef() { + return this.clef; + } + setEndClef(clefSpec, size, annotation) { + this.setClef(clefSpec, size, annotation, StaveModifierPosition.END); + return this; + } + getEndClef() { + return this.endClef; + } + setKeySignature(keySpec, cancelKeySpec, position) { + if (position === undefined) { + position = StaveModifierPosition.BEGIN; + } + const keySignatures = this.getModifiers(position, KeySignature.CATEGORY); + if (keySignatures.length === 0) { + this.addKeySignature(keySpec, cancelKeySpec, position); + } + else { + keySignatures[0].setKeySig(keySpec, cancelKeySpec); + } + return this; + } + setEndKeySignature(keySpec, cancelKeySpec) { + this.setKeySignature(keySpec, cancelKeySpec, StaveModifierPosition.END); + return this; + } + setTimeSignature(timeSpec, customPadding, position) { + if (position === undefined) { + position = StaveModifierPosition.BEGIN; + } + const timeSignatures = this.getModifiers(position, TimeSignature.CATEGORY); + if (timeSignatures.length === 0) { + this.addTimeSignature(timeSpec, customPadding, position); + } + else { + timeSignatures[0].setTimeSig(timeSpec); + } + return this; + } + setEndTimeSignature(timeSpec, customPadding) { + this.setTimeSignature(timeSpec, customPadding, StaveModifierPosition.END); + return this; + } + addKeySignature(keySpec, cancelKeySpec, position) { + if (position === undefined) { + position = StaveModifierPosition.BEGIN; + } + this.addModifier(new KeySignature(keySpec, cancelKeySpec).setPosition(position), position); + return this; + } + addClef(clef, size, annotation, position) { + if (position === undefined || position === StaveModifierPosition.BEGIN) { + this.clef = clef; + } + else if (position === StaveModifierPosition.END) { + this.endClef = clef; + } + this.addModifier(new Clef(clef, size, annotation), position); + return this; + } + addEndClef(clef, size, annotation) { + this.addClef(clef, size, annotation, StaveModifierPosition.END); + return this; + } + addTimeSignature(timeSpec, customPadding, position) { + this.addModifier(new TimeSignature(timeSpec, customPadding), position); + return this; + } + addEndTimeSignature(timeSpec, customPadding) { + this.addTimeSignature(timeSpec, customPadding, StaveModifierPosition.END); + return this; + } + addTrebleGlyph() { + this.addClef('treble'); + return this; + } + getModifiers(position, category) { + const noPosition = position === undefined; + const noCategory = category === undefined; + if (noPosition && noCategory) { + return this.modifiers; + } + else if (noPosition) { + return this.modifiers.filter((m) => category === m.getCategory()); + } + else if (noCategory) { + return this.modifiers.filter((m) => position === m.getPosition()); + } + else { + return this.modifiers.filter((m) => position === m.getPosition() && category === m.getCategory()); + } + } + sortByCategory(items, order) { + for (let i = items.length - 1; i >= 0; i--) { + for (let j = 0; j < i; j++) { + if (order[items[j].getCategory()] > order[items[j + 1].getCategory()]) { + const temp = items[j]; + items[j] = items[j + 1]; + items[j + 1] = temp; + } + } + } + } + format() { + const begBarline = this.modifiers[0]; + const endBarline = this.modifiers[1]; + const begModifiers = this.getModifiers(StaveModifierPosition.BEGIN); + const endModifiers = this.getModifiers(StaveModifierPosition.END); + this.sortByCategory(begModifiers, SORT_ORDER_BEG_MODIFIERS); + this.sortByCategory(endModifiers, SORT_ORDER_END_MODIFIERS); + if (begModifiers.length > 1 && begBarline.getType() === BarlineType.REPEAT_BEGIN) { + begModifiers.push(begModifiers.splice(0, 1)[0]); + begModifiers.splice(0, 0, new Barline(BarlineType.SINGLE)); + } + if (endModifiers.indexOf(endBarline) > 0) { + endModifiers.splice(0, 0, new Barline(BarlineType.NONE)); + } + let width; + let padding; + let modifier; + let offset = 0; + let x = this.x; + for (let i = 0; i < begModifiers.length; i++) { + modifier = begModifiers[i]; + padding = modifier.getPadding(i + offset); + width = modifier.getWidth(); + x += padding; + modifier.setX(x); + x += width; + if (padding + width === 0) + offset--; + } + this.start_x = x; + x = this.x + this.width; + const widths = { + left: 0, + right: 0, + paddingRight: 0, + paddingLeft: 0, + }; + let lastBarlineIdx = 0; + for (let i = 0; i < endModifiers.length; i++) { + modifier = endModifiers[i]; + lastBarlineIdx = isBarline(modifier) ? i : lastBarlineIdx; + widths.right = 0; + widths.left = 0; + widths.paddingRight = 0; + widths.paddingLeft = 0; + const layoutMetrics = modifier.getLayoutMetrics(); + if (layoutMetrics) { + if (i !== 0) { + widths.right = layoutMetrics.xMax || 0; + widths.paddingRight = layoutMetrics.paddingRight || 0; + } + widths.left = -layoutMetrics.xMin || 0; + widths.paddingLeft = layoutMetrics.paddingLeft || 0; + if (i === endModifiers.length - 1) { + widths.paddingLeft = 0; + } + } + else { + widths.paddingRight = modifier.getPadding(i - lastBarlineIdx); + if (i !== 0) { + widths.right = modifier.getWidth(); + } + if (i === 0) { + widths.left = modifier.getWidth(); + } + } + x -= widths.paddingRight; + x -= widths.right; + modifier.setX(x); + x -= widths.left; + x -= widths.paddingLeft; + } + this.end_x = endModifiers.length === 1 ? this.x + this.width : x; + this.formatted = true; + } + draw() { + const ctx = this.checkContext(); + this.setRendered(); + ctx.openGroup('stave', this.getAttribute('id')); + if (!this.formatted) + this.format(); + const num_lines = this.options.num_lines; + const width = this.width; + const x = this.x; + let y; + for (let line = 0; line < num_lines; line++) { + y = this.getYForLine(line); + this.applyStyle(); + if (this.options.line_config[line].visible) { + ctx.beginPath(); + ctx.moveTo(x, y); + ctx.lineTo(x + width, y); + ctx.stroke(); + } + this.restoreStyle(); + } + for (let i = 0; i < this.modifiers.length; i++) { + const modifier = this.modifiers[i]; + if (typeof modifier.draw === 'function') { + modifier.applyStyle(ctx); + modifier.draw(this, this.getModifierXShift(i)); + modifier.restoreStyle(ctx); + } + } + if (this.measure > 0) { + ctx.save(); + ctx.setFont(this.textFont); + const textWidth = ctx.measureText('' + this.measure).width; + y = this.getYForTopText(0) + 3; + ctx.fillText('' + this.measure, this.x - textWidth / 2, y); + ctx.restore(); + } + ctx.closeGroup(); + return this; + } + getVerticalBarWidth() { + return this.options.vertical_bar_width; + } + getConfigForLines() { + return this.options.line_config; + } + setConfigForLine(line_number, line_config) { + if (line_number >= this.options.num_lines || line_number < 0) { + throw new RuntimeError('StaveConfigError', 'The line number must be within the range of the number of lines in the Stave.'); + } + if (line_config.visible === undefined) { + throw new RuntimeError('StaveConfigError', "The line configuration object is missing the 'visible' property."); + } + if (typeof line_config.visible !== 'boolean') { + throw new RuntimeError('StaveConfigError', "The line configuration objects 'visible' property must be true or false."); + } + this.options.line_config[line_number] = line_config; + return this; + } + setConfigForLines(lines_configuration) { + if (lines_configuration.length !== this.options.num_lines) { + throw new RuntimeError('StaveConfigError', 'The length of the lines configuration array must match the number of lines in the Stave'); + } + for (const line_config in lines_configuration) { + if (lines_configuration[line_config].visible == undefined) { + lines_configuration[line_config] = this.options.line_config[line_config]; + } + this.options.line_config[line_config] = Object.assign(Object.assign({}, this.options.line_config[line_config]), lines_configuration[line_config]); + } + this.options.line_config = lines_configuration; + return this; + } + static formatBegModifiers(staves) { + let maxX = 0; + staves.forEach((stave) => { + if (stave.getNoteStartX() > maxX) + maxX = stave.getNoteStartX(); + }); + staves.forEach((stave) => { + stave.setNoteStartX(maxX); + }); + maxX = 0; + staves.forEach((stave) => { + const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, "Barline"); + modifiers.forEach((modifier) => { + if (modifier.getType() == BarlineType.REPEAT_BEGIN) + if (modifier.getX() > maxX) + maxX = modifier.getX(); + }); + }); + staves.forEach((stave) => { + const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, "Barline"); + modifiers.forEach((modifier) => { + if (modifier.getType() == BarlineType.REPEAT_BEGIN) + modifier.setX(maxX); + }); + }); + maxX = 0; + staves.forEach((stave) => { + const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, "TimeSignature"); + modifiers.forEach((modifier) => { + if (modifier.getX() > maxX) + maxX = modifier.getX(); + }); + }); + staves.forEach((stave) => { + const modifiers = stave.getModifiers(StaveModifierPosition.BEGIN, "TimeSignature"); + modifiers.forEach((modifier) => { + modifier.setX(maxX); + }); + }); + } +} +Stave.TEXT_FONT = { + family: Font.SANS_SERIF, + size: 8, + weight: FontWeight.NORMAL, + style: FontStyle.NORMAL, +}; diff --git a/build/esm/src/stavebarline.js b/build/esm/src/stavebarline.js new file mode 100644 index 0000000000..e950a6124e --- /dev/null +++ b/build/esm/src/stavebarline.js @@ -0,0 +1,182 @@ +import { StaveModifier, StaveModifierPosition } from './stavemodifier.js'; +import { Tables } from './tables.js'; +export var BarlineType; +(function (BarlineType) { + BarlineType[BarlineType["SINGLE"] = 1] = "SINGLE"; + BarlineType[BarlineType["DOUBLE"] = 2] = "DOUBLE"; + BarlineType[BarlineType["END"] = 3] = "END"; + BarlineType[BarlineType["REPEAT_BEGIN"] = 4] = "REPEAT_BEGIN"; + BarlineType[BarlineType["REPEAT_END"] = 5] = "REPEAT_END"; + BarlineType[BarlineType["REPEAT_BOTH"] = 6] = "REPEAT_BOTH"; + BarlineType[BarlineType["NONE"] = 7] = "NONE"; +})(BarlineType || (BarlineType = {})); +export class Barline extends StaveModifier { + constructor(type) { + super(); + this.thickness = Tables.STAVE_LINE_THICKNESS; + const TYPE = BarlineType; + this.widths = {}; + this.widths[TYPE.SINGLE] = 5; + this.widths[TYPE.DOUBLE] = 5; + this.widths[TYPE.END] = 5; + this.widths[TYPE.REPEAT_BEGIN] = 5; + this.widths[TYPE.REPEAT_END] = 5; + this.widths[TYPE.REPEAT_BOTH] = 5; + this.widths[TYPE.NONE] = 5; + this.paddings = {}; + this.paddings[TYPE.SINGLE] = 0; + this.paddings[TYPE.DOUBLE] = 0; + this.paddings[TYPE.END] = 0; + this.paddings[TYPE.REPEAT_BEGIN] = 15; + this.paddings[TYPE.REPEAT_END] = 15; + this.paddings[TYPE.REPEAT_BOTH] = 15; + this.paddings[TYPE.NONE] = 0; + this.layoutMetricsMap = {}; + this.layoutMetricsMap[TYPE.SINGLE] = { + xMin: 0, + xMax: 1, + paddingLeft: 5, + paddingRight: 5, + }; + this.layoutMetricsMap[TYPE.DOUBLE] = { + xMin: -3, + xMax: 1, + paddingLeft: 5, + paddingRight: 5, + }; + this.layoutMetricsMap[TYPE.END] = { + xMin: -5, + xMax: 1, + paddingLeft: 5, + paddingRight: 5, + }; + this.layoutMetricsMap[TYPE.REPEAT_END] = { + xMin: -10, + xMax: 1, + paddingLeft: 5, + paddingRight: 5, + }; + this.layoutMetricsMap[TYPE.REPEAT_BEGIN] = { + xMin: -2, + xMax: 10, + paddingLeft: 5, + paddingRight: 5, + }; + this.layoutMetricsMap[TYPE.REPEAT_BOTH] = { + xMin: -10, + xMax: 10, + paddingLeft: 5, + paddingRight: 5, + }; + this.layoutMetricsMap[TYPE.NONE] = { + xMin: 0, + xMax: 0, + paddingLeft: 5, + paddingRight: 5, + }; + this.setPosition(StaveModifierPosition.BEGIN); + this.setType(type); + } + static get CATEGORY() { + return "Barline"; + } + static get type() { + return BarlineType; + } + static get typeString() { + return { + single: BarlineType.SINGLE, + double: BarlineType.DOUBLE, + end: BarlineType.END, + repeatBegin: BarlineType.REPEAT_BEGIN, + repeatEnd: BarlineType.REPEAT_END, + repeatBoth: BarlineType.REPEAT_BOTH, + none: BarlineType.NONE, + }; + } + getType() { + return this.type; + } + setType(type) { + this.type = typeof type === 'string' ? Barline.typeString[type] : type; + this.setWidth(this.widths[this.type]); + this.setPadding(this.paddings[this.type]); + this.setLayoutMetrics(this.layoutMetricsMap[this.type]); + return this; + } + draw(stave) { + stave.checkContext(); + this.setRendered(); + switch (this.type) { + case BarlineType.SINGLE: + this.drawVerticalBar(stave, this.x, false); + break; + case BarlineType.DOUBLE: + this.drawVerticalBar(stave, this.x, true); + break; + case BarlineType.END: + this.drawVerticalEndBar(stave, this.x); + break; + case BarlineType.REPEAT_BEGIN: + this.drawRepeatBar(stave, this.x, true); + if (stave.getX() !== this.x) { + this.drawVerticalBar(stave, stave.getX()); + } + break; + case BarlineType.REPEAT_END: + this.drawRepeatBar(stave, this.x, false); + break; + case BarlineType.REPEAT_BOTH: + this.drawRepeatBar(stave, this.x, false); + this.drawRepeatBar(stave, this.x, true); + break; + default: + break; + } + } + drawVerticalBar(stave, x, double_bar) { + const staveCtx = stave.checkContext(); + const topY = stave.getTopLineTopY(); + const botY = stave.getBottomLineBottomY(); + if (double_bar) { + staveCtx.fillRect(x - 3, topY, 1, botY - topY); + } + staveCtx.fillRect(x, topY, 1, botY - topY); + } + drawVerticalEndBar(stave, x) { + const staveCtx = stave.checkContext(); + const topY = stave.getTopLineTopY(); + const botY = stave.getBottomLineBottomY(); + staveCtx.fillRect(x - 5, topY, 1, botY - topY); + staveCtx.fillRect(x - 2, topY, 3, botY - topY); + } + drawRepeatBar(stave, x, begin) { + const staveCtx = stave.checkContext(); + const topY = stave.getTopLineTopY(); + const botY = stave.getBottomLineBottomY(); + let x_shift = 3; + if (!begin) { + x_shift = -5; + } + staveCtx.fillRect(x + x_shift, topY, 1, botY - topY); + staveCtx.fillRect(x - 2, topY, 3, botY - topY); + const dot_radius = 2; + if (begin) { + x_shift += 4; + } + else { + x_shift -= 4; + } + const dot_x = x + x_shift + dot_radius / 2; + let y_offset = (stave.getNumLines() - 1) * stave.getSpacingBetweenLines(); + y_offset = y_offset / 2 - stave.getSpacingBetweenLines() / 2; + let dot_y = topY + y_offset + dot_radius / 2; + staveCtx.beginPath(); + staveCtx.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false); + staveCtx.fill(); + dot_y += stave.getSpacingBetweenLines(); + staveCtx.beginPath(); + staveCtx.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false); + staveCtx.fill(); + } +} diff --git a/build/esm/src/staveconnector.js b/build/esm/src/staveconnector.js new file mode 100644 index 0000000000..48f4ab606b --- /dev/null +++ b/build/esm/src/staveconnector.js @@ -0,0 +1,199 @@ +import { Element } from './element.js'; +import { Font, FontStyle, FontWeight } from './font.js'; +import { Glyph } from './glyph.js'; +import { Tables } from './tables.js'; +import { RuntimeError } from './util.js'; +function drawBoldDoubleLine(ctx, type, topX, topY, botY) { + if (type !== StaveConnector.type.BOLD_DOUBLE_LEFT && type !== StaveConnector.type.BOLD_DOUBLE_RIGHT) { + throw new RuntimeError('InvalidConnector', 'A REPEAT_BEGIN or REPEAT_END type must be provided.'); + } + let x_shift = 3; + let variableWidth = 3.5; + const thickLineOffset = 2; + if (type === StaveConnector.type.BOLD_DOUBLE_RIGHT) { + x_shift = -5; + variableWidth = 3; + } + ctx.fillRect(topX + x_shift, topY, 1, botY - topY); + ctx.fillRect(topX - thickLineOffset, topY, variableWidth, botY - topY); +} +export class StaveConnector extends Element { + constructor(top_stave, bottom_stave) { + super(); + this.thickness = Tables.STAVE_LINE_THICKNESS; + this.width = 3; + this.top_stave = top_stave; + this.bottom_stave = bottom_stave; + this.type = StaveConnector.type.DOUBLE; + this.resetFont(); + this.x_shift = 0; + this.texts = []; + } + static get CATEGORY() { + return "StaveConnector"; + } + setType(type) { + const newType = typeof type === 'string' ? StaveConnector.typeString[type] : type; + if (Object.values(StaveConnector.type).includes(newType)) { + this.type = newType; + } + return this; + } + getType() { + return this.type; + } + setText(text, options = {}) { + this.texts.push({ + content: text, + options: Object.assign({ shift_x: 0, shift_y: 0 }, options), + }); + return this; + } + setXShift(x_shift) { + if (typeof x_shift !== 'number') { + throw new RuntimeError('InvalidType', 'x_shift must be a Number'); + } + this.x_shift = x_shift; + return this; + } + getXShift() { + return this.x_shift; + } + draw() { + const ctx = this.checkContext(); + this.setRendered(); + let topY = this.top_stave.getYForLine(0); + let botY = this.bottom_stave.getYForLine(this.bottom_stave.getNumLines() - 1) + this.thickness; + let width = this.width; + let topX = this.top_stave.getX(); + const isRightSidedConnector = this.type === StaveConnector.type.SINGLE_RIGHT || + this.type === StaveConnector.type.BOLD_DOUBLE_RIGHT || + this.type === StaveConnector.type.THIN_DOUBLE; + if (isRightSidedConnector) { + topX = this.top_stave.getX() + this.top_stave.getWidth(); + } + let attachment_height = botY - topY; + switch (this.type) { + case StaveConnector.type.SINGLE: + width = 1; + break; + case StaveConnector.type.SINGLE_LEFT: + width = 1; + break; + case StaveConnector.type.SINGLE_RIGHT: + width = 1; + break; + case StaveConnector.type.DOUBLE: + topX -= this.width + 2; + topY -= this.thickness; + attachment_height += 0.5; + break; + case StaveConnector.type.BRACE: { + width = 12; + const x1 = this.top_stave.getX() - 2 + this.x_shift; + const y1 = topY; + const x3 = x1; + const y3 = botY; + const x2 = x1 - width; + const y2 = y1 + attachment_height / 2.0; + const cpx1 = x2 - 0.9 * width; + const cpy1 = y1 + 0.2 * attachment_height; + const cpx2 = x1 + 1.1 * width; + const cpy2 = y2 - 0.135 * attachment_height; + const cpx3 = cpx2; + const cpy3 = y2 + 0.135 * attachment_height; + const cpx4 = cpx1; + const cpy4 = y3 - 0.2 * attachment_height; + const cpx5 = x2 - width; + const cpy5 = cpy4; + const cpx6 = x1 + 0.4 * width; + const cpy6 = y2 + 0.135 * attachment_height; + const cpx7 = cpx6; + const cpy7 = y2 - 0.135 * attachment_height; + const cpx8 = cpx5; + const cpy8 = cpy1; + ctx.beginPath(); + ctx.moveTo(x1, y1); + ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2); + ctx.bezierCurveTo(cpx3, cpy3, cpx4, cpy4, x3, y3); + ctx.bezierCurveTo(cpx5, cpy5, cpx6, cpy6, x2, y2); + ctx.bezierCurveTo(cpx7, cpy7, cpx8, cpy8, x1, y1); + ctx.fill(); + ctx.stroke(); + break; + } + case StaveConnector.type.BRACKET: + topY -= 6; + botY += 6; + attachment_height = botY - topY; + Glyph.renderGlyph(ctx, topX - 5, topY, 40, 'bracketTop'); + Glyph.renderGlyph(ctx, topX - 5, botY, 40, 'bracketBottom'); + topX -= this.width + 2; + break; + case StaveConnector.type.BOLD_DOUBLE_LEFT: + drawBoldDoubleLine(ctx, this.type, topX + this.x_shift, topY, botY - this.thickness); + break; + case StaveConnector.type.BOLD_DOUBLE_RIGHT: + drawBoldDoubleLine(ctx, this.type, topX, topY, botY - this.thickness); + break; + case StaveConnector.type.THIN_DOUBLE: + width = 1; + attachment_height -= this.thickness; + break; + case StaveConnector.type.NONE: + break; + default: + throw new RuntimeError('InvalidType', `The provided StaveConnector.type (${this.type}) is invalid.`); + } + if (this.type !== StaveConnector.type.BRACE && + this.type !== StaveConnector.type.BOLD_DOUBLE_LEFT && + this.type !== StaveConnector.type.BOLD_DOUBLE_RIGHT && + this.type !== StaveConnector.type.NONE) { + ctx.fillRect(topX, topY, width, attachment_height); + } + if (this.type === StaveConnector.type.THIN_DOUBLE) { + ctx.fillRect(topX - 3, topY, width, attachment_height); + } + ctx.save(); + ctx.setLineWidth(2); + ctx.setFont(this.textFont); + for (let i = 0; i < this.texts.length; i++) { + const text = this.texts[i]; + const text_width = ctx.measureText('' + text.content).width; + const x = this.top_stave.getX() - text_width - 24 + text.options.shift_x; + const y = (this.top_stave.getYForLine(0) + this.bottom_stave.getBottomLineY()) / 2 + text.options.shift_y; + ctx.fillText('' + text.content, x, y + 4); + } + ctx.restore(); + } +} +StaveConnector.TEXT_FONT = { + family: Font.SERIF, + size: 16, + weight: FontWeight.NORMAL, + style: FontStyle.NORMAL, +}; +StaveConnector.type = { + SINGLE_RIGHT: 0, + SINGLE_LEFT: 1, + SINGLE: 1, + DOUBLE: 2, + BRACE: 3, + BRACKET: 4, + BOLD_DOUBLE_LEFT: 5, + BOLD_DOUBLE_RIGHT: 6, + THIN_DOUBLE: 7, + NONE: 8, +}; +StaveConnector.typeString = { + singleRight: StaveConnector.type.SINGLE_RIGHT, + singleLeft: StaveConnector.type.SINGLE_LEFT, + single: StaveConnector.type.SINGLE, + double: StaveConnector.type.DOUBLE, + brace: StaveConnector.type.BRACE, + bracket: StaveConnector.type.BRACKET, + boldDoubleLeft: StaveConnector.type.BOLD_DOUBLE_LEFT, + boldDoubleRight: StaveConnector.type.BOLD_DOUBLE_RIGHT, + thinDouble: StaveConnector.type.THIN_DOUBLE, + none: StaveConnector.type.NONE, +}; diff --git a/build/esm/src/stavehairpin.js b/build/esm/src/stavehairpin.js new file mode 100644 index 0000000000..b5991e8f8e --- /dev/null +++ b/build/esm/src/stavehairpin.js @@ -0,0 +1,120 @@ +import { Element } from './element.js'; +import { Modifier } from './modifier.js'; +import { RuntimeError } from './util.js'; +export class StaveHairpin extends Element { + constructor(notes, type) { + super(); + this.setNotes(notes); + this.hairpin = type; + this.position = Modifier.Position.BELOW; + this.render_options = { + height: 10, + y_shift: 0, + left_shift_px: 0, + right_shift_px: 0, + right_shift_ticks: 0, + left_shift_ticks: 0, + }; + } + static get CATEGORY() { + return "StaveHairpin"; + } + static FormatByTicksAndDraw(ctx, formatter, notes, type, position, options) { + var _a, _b; + const ppt = formatter.pixelsPerTick; + if (ppt == null) { + throw new RuntimeError('BadArguments', 'A valid Formatter must be provide to draw offsets by ticks.'); + } + const l_shift_px = ppt * ((_a = options.left_shift_ticks) !== null && _a !== void 0 ? _a : 0); + const r_shift_px = ppt * ((_b = options.right_shift_ticks) !== null && _b !== void 0 ? _b : 0); + const hairpin_options = { + height: options.height, + y_shift: options.y_shift, + left_shift_px: l_shift_px, + right_shift_px: r_shift_px, + right_shift_ticks: 0, + left_shift_ticks: 0, + }; + new StaveHairpin({ + first_note: notes.first_note, + last_note: notes.last_note, + }, type) + .setContext(ctx) + .setRenderOptions(hairpin_options) + .setPosition(position) + .draw(); + } + setPosition(position) { + if (position === Modifier.Position.ABOVE || position === Modifier.Position.BELOW) { + this.position = position; + } + return this; + } + setRenderOptions(options) { + if (options.height != null && + options.y_shift != null && + options.left_shift_px != null && + options.right_shift_px != null) { + this.render_options = options; + } + return this; + } + setNotes(notes) { + if (!notes.first_note && !notes.last_note) { + throw new RuntimeError('BadArguments', 'Hairpin needs to have either first_note or last_note set.'); + } + this.notes = notes; + this.first_note = notes.first_note; + this.last_note = notes.last_note; + return this; + } + renderHairpin(params) { + const ctx = this.checkContext(); + let dis = this.render_options.y_shift + 20; + let y_shift = params.first_y; + if (this.position === Modifier.Position.ABOVE) { + dis = -dis + 30; + y_shift = params.first_y - params.staff_height; + } + const l_shift = this.render_options.left_shift_px; + const r_shift = this.render_options.right_shift_px; + ctx.beginPath(); + switch (this.hairpin) { + case StaveHairpin.type.CRESC: + ctx.moveTo(params.last_x + r_shift, y_shift + dis); + ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height / 2 + dis); + ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height + dis); + break; + case StaveHairpin.type.DECRESC: + ctx.moveTo(params.first_x + l_shift, y_shift + dis); + ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height / 2 + dis); + ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height + dis); + break; + default: + break; + } + ctx.stroke(); + ctx.closePath(); + } + draw() { + this.checkContext(); + this.setRendered(); + const firstNote = this.first_note; + const lastNote = this.last_note; + if (!firstNote || !lastNote) + throw new RuntimeError('NoNote', 'Notes required to draw'); + const start = firstNote.getModifierStartXY(this.position, 0); + const end = lastNote.getModifierStartXY(this.position, 0); + this.renderHairpin({ + first_x: start.x, + last_x: end.x, + first_y: firstNote.checkStave().getY() + firstNote.checkStave().getHeight(), + last_y: lastNote.checkStave().getY() + lastNote.checkStave().getHeight(), + staff_height: firstNote.checkStave().getHeight(), + }); + } +} +StaveHairpin.type = { + CRESC: 1, + DECRESC: 2, +}; diff --git a/build/esm/src/staveline.js b/build/esm/src/staveline.js new file mode 100644 index 0000000000..34f3d14d61 --- /dev/null +++ b/build/esm/src/staveline.js @@ -0,0 +1,215 @@ +import { Element } from './element.js'; +import { Tables } from './tables.js'; +import { TextJustification } from './textnote.js'; +import { RuntimeError } from './util.js'; +function drawArrowHead(ctx, x0, y0, x1, y1, x2, y2) { + ctx.beginPath(); + ctx.moveTo(x0, y0); + ctx.lineTo(x1, y1); + ctx.lineTo(x2, y2); + ctx.lineTo(x0, y0); + ctx.closePath(); + ctx.fill(); +} +export class StaveLine extends Element { + constructor(notes) { + super(); + this.setNotes(notes); + this.text = ''; + this.resetFont(); + this.render_options = { + padding_left: 4, + padding_right: 3, + line_width: 1, + line_dash: undefined, + rounded_end: true, + color: undefined, + draw_start_arrow: false, + draw_end_arrow: false, + arrowhead_length: 10, + arrowhead_angle: Math.PI / 8, + text_position_vertical: StaveLine.TextVerticalPosition.TOP, + text_justification: StaveLine.TextJustification.CENTER, + }; + } + static get CATEGORY() { + return "StaveLine"; + } + setText(text) { + this.text = text; + return this; + } + setNotes(notes) { + if (!notes.first_note && !notes.last_note) { + throw new RuntimeError('BadArguments', 'Notes needs to have either first_note or last_note set.'); + } + if (!notes.first_indices) + notes.first_indices = [0]; + if (!notes.last_indices) + notes.last_indices = [0]; + if (notes.first_indices.length !== notes.last_indices.length) { + throw new RuntimeError('BadArguments', 'Connected notes must have same number of indices.'); + } + this.notes = notes; + this.first_note = notes.first_note; + this.first_indices = notes.first_indices; + this.last_note = notes.last_note; + this.last_indices = notes.last_indices; + return this; + } + applyLineStyle() { + const ctx = this.checkContext(); + const render_options = this.render_options; + if (render_options.line_dash) { + ctx.setLineDash(render_options.line_dash); + } + if (render_options.line_width) { + ctx.setLineWidth(render_options.line_width); + } + if (render_options.rounded_end) { + ctx.setLineCap('round'); + } + else { + ctx.setLineCap('square'); + } + } + applyFontStyle() { + const ctx = this.checkContext(); + ctx.setFont(this.textFont); + const render_options = this.render_options; + const color = render_options.color; + if (color) { + ctx.setStrokeStyle(color); + ctx.setFillStyle(color); + } + } + drawArrowLine(ctx, pt1, pt2) { + const both_arrows = this.render_options.draw_start_arrow && this.render_options.draw_end_arrow; + const x1 = pt1.x; + const y1 = pt1.y; + const x2 = pt2.x; + const y2 = pt2.y; + const distance = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)); + const ratio = (distance - this.render_options.arrowhead_length / 3) / distance; + let end_x; + let end_y; + let start_x; + let start_y; + if (this.render_options.draw_end_arrow || both_arrows) { + end_x = Math.round(x1 + (x2 - x1) * ratio); + end_y = Math.round(y1 + (y2 - y1) * ratio); + } + else { + end_x = x2; + end_y = y2; + } + if (this.render_options.draw_start_arrow || both_arrows) { + start_x = x1 + (x2 - x1) * (1 - ratio); + start_y = y1 + (y2 - y1) * (1 - ratio); + } + else { + start_x = x1; + start_y = y1; + } + if (this.render_options.color) { + ctx.setStrokeStyle(this.render_options.color); + ctx.setFillStyle(this.render_options.color); + } + ctx.beginPath(); + ctx.moveTo(start_x, start_y); + ctx.lineTo(end_x, end_y); + ctx.stroke(); + ctx.closePath(); + const line_angle = Math.atan2(y2 - y1, x2 - x1); + const h = Math.abs(this.render_options.arrowhead_length / Math.cos(this.render_options.arrowhead_angle)); + let angle1; + let angle2; + let top_x; + let top_y; + let bottom_x; + let bottom_y; + if (this.render_options.draw_end_arrow || both_arrows) { + angle1 = line_angle + Math.PI + this.render_options.arrowhead_angle; + top_x = x2 + Math.cos(angle1) * h; + top_y = y2 + Math.sin(angle1) * h; + angle2 = line_angle + Math.PI - this.render_options.arrowhead_angle; + bottom_x = x2 + Math.cos(angle2) * h; + bottom_y = y2 + Math.sin(angle2) * h; + drawArrowHead(ctx, top_x, top_y, x2, y2, bottom_x, bottom_y); + } + if (this.render_options.draw_start_arrow || both_arrows) { + angle1 = line_angle + this.render_options.arrowhead_angle; + top_x = x1 + Math.cos(angle1) * h; + top_y = y1 + Math.sin(angle1) * h; + angle2 = line_angle - this.render_options.arrowhead_angle; + bottom_x = x1 + Math.cos(angle2) * h; + bottom_y = y1 + Math.sin(angle2) * h; + drawArrowHead(ctx, top_x, top_y, x1, y1, bottom_x, bottom_y); + } + } + draw() { + const ctx = this.checkContext(); + this.setRendered(); + const first_note = this.first_note; + const last_note = this.last_note; + const render_options = this.render_options; + ctx.save(); + this.applyLineStyle(); + let start_position = { x: 0, y: 0 }; + let end_position = { x: 0, y: 0 }; + this.first_indices.forEach((first_index, i) => { + const last_index = this.last_indices[i]; + start_position = first_note.getModifierStartXY(2, first_index); + end_position = last_note.getModifierStartXY(1, last_index); + const upwards_slope = start_position.y > end_position.y; + start_position.x += first_note.getMetrics().modRightPx + render_options.padding_left; + end_position.x -= last_note.getMetrics().modLeftPx + render_options.padding_right; + const notehead_width = first_note.getGlyph().getWidth(); + const first_displaced = first_note.getKeyProps()[first_index].displaced; + if (first_displaced && first_note.getStemDirection() === 1) { + start_position.x += notehead_width + render_options.padding_left; + } + const last_displaced = last_note.getKeyProps()[last_index].displaced; + if (last_displaced && last_note.getStemDirection() === -1) { + end_position.x -= notehead_width + render_options.padding_right; + } + start_position.y += upwards_slope ? -3 : 1; + end_position.y += upwards_slope ? 2 : 0; + this.drawArrowLine(ctx, start_position, end_position); + }); + ctx.restore(); + const text_width = ctx.measureText(this.text).width; + const justification = render_options.text_justification; + let x = 0; + if (justification === StaveLine.TextJustification.LEFT) { + x = start_position.x; + } + else if (justification === StaveLine.TextJustification.CENTER) { + const delta_x = end_position.x - start_position.x; + const center_x = delta_x / 2 + start_position.x; + x = center_x - text_width / 2; + } + else if (justification === StaveLine.TextJustification.RIGHT) { + x = end_position.x - text_width; + } + let y = 0; + const vertical_position = render_options.text_position_vertical; + if (vertical_position === StaveLine.TextVerticalPosition.TOP) { + y = first_note.checkStave().getYForTopText(); + } + else if (vertical_position === StaveLine.TextVerticalPosition.BOTTOM) { + y = first_note.checkStave().getYForBottomText(Tables.TEXT_HEIGHT_OFFSET_HACK); + } + ctx.save(); + this.applyFontStyle(); + ctx.fillText(this.text, x, y); + ctx.restore(); + return this; + } +} +StaveLine.TEXT_FONT = Object.assign({}, Element.TEXT_FONT); +StaveLine.TextVerticalPosition = { + TOP: 1, + BOTTOM: 2, +}; +StaveLine.TextJustification = TextJustification; diff --git a/build/esm/src/stavemodifier.js b/build/esm/src/stavemodifier.js new file mode 100644 index 0000000000..e64fd4970a --- /dev/null +++ b/build/esm/src/stavemodifier.js @@ -0,0 +1,77 @@ +import { Element } from './element.js'; +import { defined } from './util.js'; +export var StaveModifierPosition; +(function (StaveModifierPosition) { + StaveModifierPosition[StaveModifierPosition["CENTER"] = 0] = "CENTER"; + StaveModifierPosition[StaveModifierPosition["LEFT"] = 1] = "LEFT"; + StaveModifierPosition[StaveModifierPosition["RIGHT"] = 2] = "RIGHT"; + StaveModifierPosition[StaveModifierPosition["ABOVE"] = 3] = "ABOVE"; + StaveModifierPosition[StaveModifierPosition["BELOW"] = 4] = "BELOW"; + StaveModifierPosition[StaveModifierPosition["BEGIN"] = 5] = "BEGIN"; + StaveModifierPosition[StaveModifierPosition["END"] = 6] = "END"; +})(StaveModifierPosition || (StaveModifierPosition = {})); +export class StaveModifier extends Element { + constructor() { + super(); + this.width = 0; + this.x = 0; + this.padding = 10; + this.position = StaveModifierPosition.ABOVE; + } + static get CATEGORY() { + return "StaveModifier"; + } + static get Position() { + return StaveModifierPosition; + } + getPosition() { + return this.position; + } + setPosition(position) { + this.position = position; + return this; + } + getStave() { + return this.stave; + } + checkStave() { + return defined(this.stave, 'NoStave', 'No stave attached to instance.'); + } + setStave(stave) { + this.stave = stave; + return this; + } + getWidth() { + return this.width; + } + setWidth(width) { + this.width = width; + return this; + } + getX() { + return this.x; + } + setX(x) { + this.x = x; + return this; + } + placeGlyphOnLine(glyph, stave, line, customShift = 0) { + glyph.setYShift(stave.getYForLine(line !== null && line !== void 0 ? line : 0) - stave.getYForGlyphs() + customShift); + } + getPadding(index) { + return index !== undefined && index < 2 ? 0 : this.padding; + } + setPadding(padding) { + this.padding = padding; + return this; + } + setLayoutMetrics(layoutMetrics) { + this.layoutMetrics = layoutMetrics; + return this; + } + getLayoutMetrics() { + return this.layoutMetrics; + } + draw(...args) { + } +} diff --git a/build/esm/src/stavenote.js b/build/esm/src/stavenote.js new file mode 100644 index 0000000000..d4eb80b59d --- /dev/null +++ b/build/esm/src/stavenote.js @@ -0,0 +1,885 @@ +import { BoundingBox } from './boundingbox.js'; +import { Modifier } from './modifier.js'; +import { NoteHead } from './notehead.js'; +import { Stem } from './stem.js'; +import { StemmableNote } from './stemmablenote.js'; +import { Tables } from './tables.js'; +import { defined, log, midLine, RuntimeError } from './util.js'; +function showDeprecationWarningForNoteHeads() { + console.warn('StaveNote.note_heads is deprecated. Use StaveNote.noteHeads instead.', 'This accessor will be removed in VexFlow 5.0.'); +} +function L(...args) { + if (StaveNote.DEBUG) + log('Vex.Flow.StaveNote', args); +} +const isInnerNoteIndex = (note, index) => index === (note.getStemDirection() === Stem.UP ? note.keyProps.length - 1 : 0); +function shiftRestVertical(rest, note, dir) { + const delta = dir; + rest.line += delta; + rest.maxLine += delta; + rest.minLine += delta; + rest.note.setKeyLine(0, rest.note.getKeyLine(0) + delta); +} +function centerRest(rest, noteU, noteL) { + const delta = rest.line - midLine(noteU.minLine, noteL.maxLine); + rest.note.setKeyLine(0, rest.note.getKeyLine(0) - delta); + rest.line -= delta; + rest.maxLine -= delta; + rest.minLine -= delta; +} +export class StaveNote extends StemmableNote { + constructor(noteStruct) { + var _a, _b, _c; + super(noteStruct); + this.minLine = 0; + this.maxLine = 0; + this.sortedKeyProps = []; + this.ledgerLineStyle = {}; + this.clef = (_a = noteStruct.clef) !== null && _a !== void 0 ? _a : 'treble'; + this.octave_shift = (_b = noteStruct.octave_shift) !== null && _b !== void 0 ? _b : 0; + this.glyph = Tables.getGlyphProps(this.duration, this.noteType); + defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`); + this.displaced = false; + this.dot_shiftY = 0; + this.use_default_head_x = false; + this._noteHeads = []; + this.modifiers = []; + this.render_options = Object.assign(Object.assign({}, this.render_options), { glyph_font_scale: noteStruct.glyph_font_scale || Tables.NOTATION_FONT_SCALE, stroke_px: noteStruct.stroke_px || StaveNote.LEDGER_LINE_OFFSET }); + this.calculateKeyProps(); + this.buildStem(); + if (noteStruct.auto_stem) { + this.autoStem(); + } + else { + this.setStemDirection((_c = noteStruct.stem_direction) !== null && _c !== void 0 ? _c : Stem.UP); + } + this.reset(); + this.buildFlag(); + } + static get CATEGORY() { + return "StaveNote"; + } + static get STEM_UP() { + return Stem.UP; + } + static get STEM_DOWN() { + return Stem.DOWN; + } + static get LEDGER_LINE_OFFSET() { + return 3; + } + static get minNoteheadPadding() { + const musicFont = Tables.currentMusicFont(); + return musicFont.lookupMetric('glyphs.noteHead.minPadding'); + } + static format(notes, state) { + if (!notes || notes.length < 2) + return false; + const notesList = []; + for (let i = 0; i < notes.length; i++) { + const props = notes[i].sortedKeyProps; + const line = props[0].keyProps.line; + let minL = props[props.length - 1].keyProps.line; + const stemDirection = notes[i].getStemDirection(); + const stemMax = notes[i].getStemLength() / 10; + const stemMin = notes[i].getStemMinimumLength() / 10; + let maxL; + if (notes[i].isRest()) { + maxL = line + notes[i].glyph.line_above; + minL = line - notes[i].glyph.line_below; + } + else { + maxL = + stemDirection === 1 ? props[props.length - 1].keyProps.line + stemMax : props[props.length - 1].keyProps.line; + minL = stemDirection === 1 ? props[0].keyProps.line : props[0].keyProps.line - stemMax; + } + notesList.push({ + line: props[0].keyProps.line, + maxLine: maxL, + minLine: minL, + isrest: notes[i].isRest(), + stemDirection: stemDirection, + stemMax, + stemMin, + voice_shift: notes[i].getVoiceShiftWidth(), + is_displaced: notes[i].isDisplaced(), + note: notes[i], + }); + } + let voices = 0; + let noteU = undefined; + let noteM = undefined; + let noteL = undefined; + const draw = [false, false, false]; + for (let i = 0; i < notesList.length; i++) { + draw[i] = notesList[i].note.render_options.draw == false ? false : true; + } + if (draw[0] && draw[1] && draw[2]) { + voices = 3; + noteU = notesList[0]; + noteM = notesList[1]; + noteL = notesList[2]; + } + else if (draw[0] && draw[1]) { + voices = 2; + noteU = notesList[0]; + noteL = notesList[1]; + } + else if (draw[0] && draw[2]) { + voices = 2; + noteU = notesList[0]; + noteL = notesList[2]; + } + else if (draw[1] && draw[2]) { + voices = 2; + noteU = notesList[1]; + noteL = notesList[2]; + } + else { + return true; + } + if (voices === 2 && noteU.stemDirection === -1 && noteL.stemDirection === 1) { + noteU = notesList[1]; + noteL = notesList[0]; + } + const voiceXShift = Math.max(noteU.voice_shift, noteL.voice_shift); + let xShift = 0; + if (voices === 2) { + const lineSpacing = noteU.note.hasStem() && noteL.note.hasStem() && noteU.stemDirection === noteL.stemDirection ? 0.0 : 0.5; + if (noteL.isrest && noteU.isrest && noteU.note.duration === noteL.note.duration) { + noteL.note.render_options.draw = false; + } + else if (noteU.minLine <= noteL.maxLine + lineSpacing) { + if (noteU.isrest) { + shiftRestVertical(noteU, noteL, 1); + } + else if (noteL.isrest) { + shiftRestVertical(noteL, noteU, -1); + } + else { + const lineDiff = Math.abs(noteU.line - noteL.line); + if (noteU.note.hasStem() && noteL.note.hasStem()) { + let whiteNoteHeadCount = 0; + let blackNoteHeadCount = 0; + if (Tables.durationToNumber(noteU.note.duration) === 2) { + whiteNoteHeadCount++; + } + else if (Tables.durationToNumber(noteU.note.duration) > 2) { + blackNoteHeadCount++; + } + if (Tables.durationToNumber(noteL.note.duration) === 2) { + whiteNoteHeadCount++; + } + else if (Tables.durationToNumber(noteL.note.duration) > 2) { + blackNoteHeadCount++; + } + if ((whiteNoteHeadCount !== 2 && blackNoteHeadCount !== 2) || + noteU.note.getModifiersByType("Dot").length !== noteL.note.getModifiersByType("Dot").length) { + xShift = voiceXShift + 2; + if (noteU.stemDirection === noteL.stemDirection) { + noteU.note.setXShift(xShift); + } + else { + noteL.note.setXShift(xShift); + } + } + else if (lineDiff < 1 && lineDiff > 0) { + xShift = voiceXShift + 2; + if (noteU.stemDirection === noteL.stemDirection) { + noteU.note.setXShift(xShift); + } + else { + noteL.note.setXShift(xShift); + } + } + else if (noteU.note.voice !== noteL.note.voice) { + if (noteU.stemDirection === noteL.stemDirection) { + if (noteU.line != noteL.line) { + xShift = voiceXShift + 2; + noteU.note.setXShift(xShift); + } + else { + if (noteL.stemDirection === 1) { + noteL.stemDirection = -1; + noteL.note.setStemDirection(-1); + } + } + } + } + } + else if (lineDiff < 1) { + xShift = voiceXShift + 2; + if (noteU.stemDirection === noteL.stemDirection) { + noteU.note.setXShift(xShift); + } + else { + noteL.note.setXShift(xShift); + } + } + else if (noteU.note.hasStem()) { + noteU.stemDirection = -noteU.note.getStemDirection(); + noteU.note.setStemDirection(noteU.stemDirection); + } + else if (noteL.note.hasStem()) { + noteL.stemDirection = -noteL.note.getStemDirection(); + noteL.note.setStemDirection(noteL.stemDirection); + } + } + } + state.right_shift += xShift; + return true; + } + if (!noteM) + throw new RuntimeError('InvalidState', 'noteM not defined.'); + if (noteM.isrest && !noteU.isrest && !noteL.isrest) { + if (noteU.minLine <= noteM.maxLine || noteM.minLine <= noteL.maxLine) { + const restHeight = noteM.maxLine - noteM.minLine; + const space = noteU.minLine - noteL.maxLine; + if (restHeight < space) { + centerRest(noteM, noteU, noteL); + } + else { + xShift = voiceXShift + 2; + noteM.note.setXShift(xShift); + if (noteL.note.hasBeam() === false) { + noteL.stemDirection = -1; + noteL.note.setStemDirection(-1); + } + if (noteU.minLine <= noteL.maxLine && noteU.note.hasBeam() === false) { + noteU.stemDirection = 1; + noteU.note.setStemDirection(1); + } + } + state.right_shift += xShift; + return true; + } + } + if (noteU.isrest && noteM.isrest && noteL.isrest) { + noteU.note.render_options.draw = false; + noteL.note.render_options.draw = false; + state.right_shift += xShift; + return true; + } + if (noteM.isrest && noteU.isrest && noteM.minLine <= noteL.maxLine) { + noteM.note.render_options.draw = false; + } + if (noteM.isrest && noteL.isrest && noteU.minLine <= noteM.maxLine) { + noteM.note.render_options.draw = false; + } + if (noteU.isrest && noteU.minLine <= noteM.maxLine) { + shiftRestVertical(noteU, noteM, 1); + } + if (noteL.isrest && noteM.minLine <= noteL.maxLine) { + shiftRestVertical(noteL, noteM, -1); + } + if (noteU.minLine <= noteM.maxLine + 0.5 || noteM.minLine <= noteL.maxLine) { + xShift = voiceXShift + 2; + noteM.note.setXShift(xShift); + if (noteL.note.hasBeam() === false) { + noteL.stemDirection = -1; + noteL.note.setStemDirection(-1); + } + if (noteU.minLine <= noteL.maxLine && noteU.note.hasBeam() === false) { + noteU.stemDirection = 1; + noteU.note.setStemDirection(1); + } + } + state.right_shift += xShift; + return true; + } + static postFormat(notes) { + if (!notes) + return false; + notes.forEach((note) => note.postFormat()); + return true; + } + reset() { + super.reset(); + const noteHeadStyles = this._noteHeads.map((noteHead) => noteHead.getStyle()); + this.buildNoteHeads(); + this._noteHeads.forEach((noteHead, index) => { + const noteHeadStyle = noteHeadStyles[index]; + if (noteHeadStyle) + noteHead.setStyle(noteHeadStyle); + }); + const stave = this.stave; + if (stave) { + this._noteHeads.forEach((head) => head.setStave(stave)); + } + this.calcNoteDisplacements(); + return this; + } + setBeam(beam) { + this.beam = beam; + this.calcNoteDisplacements(); + if (this.stem) { + this.stem.setExtension(this.getStemExtension()); + } + return this; + } + buildStem() { + this.setStem(new Stem({ hide: !!this.isRest() })); + return this; + } + buildNoteHeads() { + this._noteHeads = []; + const stemDirection = this.getStemDirection(); + const keys = this.getKeys(); + let lastLine = undefined; + let lineDiff = undefined; + let displaced = false; + let start; + let end; + let step; + if (stemDirection === Stem.UP) { + start = 0; + end = keys.length; + step = 1; + } + else { + start = keys.length - 1; + end = -1; + step = -1; + } + for (let i = start; i !== end; i += step) { + const noteProps = this.sortedKeyProps[i].keyProps; + const line = noteProps.line; + if (lastLine === undefined) { + lastLine = line; + } + else { + lineDiff = Math.abs(lastLine - line); + if (lineDiff === 0 || lineDiff === 0.5) { + displaced = !displaced; + } + else { + displaced = false; + this.use_default_head_x = true; + } + } + lastLine = line; + const notehead = new NoteHead({ + duration: this.duration, + note_type: this.noteType, + displaced, + stem_direction: stemDirection, + custom_glyph_code: noteProps.code, + glyph_font_scale: this.render_options.glyph_font_scale, + x_shift: noteProps.shift_right, + stem_up_x_offset: noteProps.stem_up_x_offset, + stem_down_x_offset: noteProps.stem_down_x_offset, + line: noteProps.line, + }); + this.addChildElement(notehead); + this._noteHeads[this.sortedKeyProps[i].index] = notehead; + } + } + autoStem() { + this.setStemDirection(this.calculateOptimalStemDirection()); + } + calculateOptimalStemDirection() { + this.minLine = this.sortedKeyProps[0].keyProps.line; + this.maxLine = this.sortedKeyProps[this.keyProps.length - 1].keyProps.line; + const MIDDLE_LINE = 3; + const decider = (this.minLine + this.maxLine) / 2; + const stemDirection = decider < MIDDLE_LINE ? Stem.UP : Stem.DOWN; + return stemDirection; + } + calculateKeyProps() { + let lastLine; + for (let i = 0; i < this.keys.length; ++i) { + const key = this.keys[i]; + if (this.glyph.rest) + this.glyph.position = key; + const options = { octave_shift: this.octave_shift || 0, duration: this.duration }; + const props = Tables.keyProperties(key, this.clef, options); + if (!props) { + throw new RuntimeError('BadArguments', `Invalid key for note properties: ${key}`); + } + if (props.key === 'R') { + if (this.duration === '1' || this.duration === 'w') { + props.line = 4; + } + else { + props.line = 3; + } + } + const line = props.line; + if (lastLine == undefined) { + lastLine = line; + } + else { + if (Math.abs(lastLine - line) === 0.5) { + this.displaced = true; + props.displaced = true; + if (this.keyProps.length > 0) { + this.keyProps[i - 1].displaced = true; + } + } + } + lastLine = line; + this.keyProps.push(props); + } + this.keyProps.forEach((keyProps, index) => { + this.sortedKeyProps.push({ keyProps, index }); + }); + this.sortedKeyProps.sort((a, b) => a.keyProps.line - b.keyProps.line); + } + getBoundingBox() { + var _a, _b; + if (!this.preFormatted) { + throw new RuntimeError('UnformattedNote', "Can't call getBoundingBox on an unformatted note."); + } + const { width: w, modLeftPx, leftDisplacedHeadPx } = this.getMetrics(); + const x = this.getAbsoluteX() - modLeftPx - leftDisplacedHeadPx; + let minY = 0; + let maxY = 0; + const halfLineSpacing = ((_b = (_a = this.getStave()) === null || _a === void 0 ? void 0 : _a.getSpacingBetweenLines()) !== null && _b !== void 0 ? _b : 0) / 2; + const lineSpacing = halfLineSpacing * 2; + if (this.isRest()) { + const y = this.ys[0]; + const frac = Tables.durationToFraction(this.duration); + if (frac.equals(1) || frac.equals(2)) { + minY = y - halfLineSpacing; + maxY = y + halfLineSpacing; + } + else { + minY = y - this.glyph.line_above * lineSpacing; + maxY = y + this.glyph.line_below * lineSpacing; + } + } + else if (this.glyph.stem) { + const ys = this.getStemExtents(); + ys.baseY += halfLineSpacing * this.getStemDirection(); + minY = Math.min(ys.topY, ys.baseY); + maxY = Math.max(ys.topY, ys.baseY); + } + else { + minY = 0; + maxY = 0; + for (let i = 0; i < this.ys.length; ++i) { + const yy = this.ys[i]; + if (i === 0) { + minY = yy; + maxY = yy; + } + else { + minY = Math.min(yy, minY); + maxY = Math.max(yy, maxY); + } + } + minY -= halfLineSpacing; + maxY += halfLineSpacing; + } + return new BoundingBox(x, minY, w, maxY - minY); + } + getLineNumber(isTopNote) { + if (!this.keyProps.length) { + throw new RuntimeError('NoKeyProps', "Can't get bottom note line, because note is not initialized properly."); + } + let resultLine = this.keyProps[0].line; + for (let i = 0; i < this.keyProps.length; i++) { + const thisLine = this.keyProps[i].line; + if (isTopNote) { + if (thisLine > resultLine) + resultLine = thisLine; + } + else { + if (thisLine < resultLine) + resultLine = thisLine; + } + } + return resultLine; + } + isRest() { + return this.glyph.rest; + } + isChord() { + return !this.isRest() && this.keys.length > 1; + } + hasStem() { + return this.glyph.stem; + } + hasFlag() { + return super.hasFlag() && !this.isRest(); + } + getStemX() { + if (this.noteType === 'r') { + return this.getCenterGlyphX(); + } + else { + return super.getStemX() + (this.stem_direction ? Stem.WIDTH / (2 * -this.stem_direction) : 0); + } + } + getYForTopText(textLine) { + const extents = this.getStemExtents(); + return Math.min(this.checkStave().getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1)); + } + getYForBottomText(textLine) { + const extents = this.getStemExtents(); + return Math.max(this.checkStave().getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine); + } + setStave(stave) { + super.setStave(stave); + const ys = this._noteHeads.map((notehead) => { + notehead.setStave(stave); + return notehead.getY(); + }); + this.setYs(ys); + if (this.stem) { + const { y_top, y_bottom } = this.getNoteHeadBounds(); + this.stem.setYBounds(y_top, y_bottom); + } + return this; + } + isDisplaced() { + return this.displaced; + } + setNoteDisplaced(displaced) { + this.displaced = displaced; + return this; + } + getTieRightX() { + let tieStartX = this.getAbsoluteX(); + tieStartX += this.getGlyphWidth() + this.x_shift + this.rightDisplacedHeadPx; + if (this.modifierContext) + tieStartX += this.modifierContext.getRightShift(); + return tieStartX; + } + getTieLeftX() { + let tieEndX = this.getAbsoluteX(); + tieEndX += this.x_shift - this.leftDisplacedHeadPx; + return tieEndX; + } + getLineForRest() { + let restLine = this.keyProps[0].line; + if (this.keyProps.length > 1) { + const lastLine = this.keyProps[this.keyProps.length - 1].line; + const top = Math.max(restLine, lastLine); + const bot = Math.min(restLine, lastLine); + restLine = midLine(top, bot); + } + return restLine; + } + getModifierStartXY(position, index, options = {}) { + var _a, _b; + if (!this.preFormatted) { + throw new RuntimeError('UnformattedNote', "Can't call GetModifierStartXY on an unformatted note"); + } + if (this.ys.length === 0) { + throw new RuntimeError('NoYValues', 'No Y-Values calculated for this note.'); + } + const { ABOVE, BELOW, LEFT, RIGHT } = Modifier.Position; + let x = 0; + if (position === LEFT) { + x = -1 * 2; + } + else if (position === RIGHT) { + x = this.getGlyphWidth() + this.x_shift + 2; + if (this.stem_direction === Stem.UP && + this.hasFlag() && + (options.forceFlagRight || isInnerNoteIndex(this, index))) { + x += (_b = (_a = this === null || this === void 0 ? void 0 : this.flag) === null || _a === void 0 ? void 0 : _a.getMetrics().width) !== null && _b !== void 0 ? _b : 0; + } + } + else if (position === BELOW || position === ABOVE) { + x = this.getGlyphWidth() / 2; + } + return { + x: this.getAbsoluteX() + x, + y: this.ys[index], + }; + } + setStyle(style) { + return super.setGroupStyle(style); + } + setStemStyle(style) { + const stem = this.getStem(); + if (stem) + stem.setStyle(style); + return this; + } + getStemStyle() { + var _a; + return (_a = this.stem) === null || _a === void 0 ? void 0 : _a.getStyle(); + } + setLedgerLineStyle(style) { + this.ledgerLineStyle = style; + } + getLedgerLineStyle() { + return this.ledgerLineStyle; + } + setFlagStyle(style) { + var _a; + (_a = this.flag) === null || _a === void 0 ? void 0 : _a.setStyle(style); + } + getFlagStyle() { + var _a; + return (_a = this.flag) === null || _a === void 0 ? void 0 : _a.getStyle(); + } + setKeyStyle(index, style) { + this._noteHeads[index].setStyle(style); + return this; + } + setKeyLine(index, line) { + this.keyProps[index].line = line; + this.reset(); + return this; + } + getKeyLine(index) { + return this.keyProps[index].line; + } + getVoiceShiftWidth() { + return this.getGlyphWidth() * (this.displaced ? 2 : 1); + } + calcNoteDisplacements() { + this.setLeftDisplacedHeadPx(this.displaced && this.stem_direction === Stem.DOWN ? this.getGlyphWidth() : 0); + this.setRightDisplacedHeadPx(!this.hasFlag() && this.displaced && this.stem_direction === Stem.UP ? this.getGlyphWidth() : 0); + } + preFormat() { + if (this.preFormatted) + return; + let noteHeadPadding = 0; + if (this.modifierContext) { + this.modifierContext.preFormat(); + if (this.modifierContext.getWidth() === 0) { + noteHeadPadding = StaveNote.minNoteheadPadding; + } + } + let width = this.getGlyphWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx + noteHeadPadding; + if (this.shouldDrawFlag() && this.stem_direction === Stem.UP) { + width += this.getGlyphWidth(); + } + this.setWidth(width); + this.preFormatted = true; + } + getNoteHeadBounds() { + let yTop = +Infinity; + let yBottom = -Infinity; + let nonDisplacedX; + let displacedX; + let highestLine = this.checkStave().getNumLines(); + let lowestLine = 1; + let highestDisplacedLine; + let lowestDisplacedLine; + let highestNonDisplacedLine = highestLine; + let lowestNonDisplacedLine = lowestLine; + this._noteHeads.forEach((notehead) => { + const line = notehead.getLine(); + const y = notehead.getY(); + yTop = Math.min(y, yTop); + yBottom = Math.max(y, yBottom); + if (displacedX === undefined && notehead.isDisplaced()) { + displacedX = notehead.getAbsoluteX(); + } + if (nonDisplacedX === undefined && !notehead.isDisplaced()) { + nonDisplacedX = notehead.getAbsoluteX(); + } + highestLine = Math.max(line, highestLine); + lowestLine = Math.min(line, lowestLine); + if (notehead.isDisplaced()) { + highestDisplacedLine = highestDisplacedLine === undefined ? line : Math.max(line, highestDisplacedLine); + lowestDisplacedLine = lowestDisplacedLine === undefined ? line : Math.min(line, lowestDisplacedLine); + } + else { + highestNonDisplacedLine = Math.max(line, highestNonDisplacedLine); + lowestNonDisplacedLine = Math.min(line, lowestNonDisplacedLine); + } + }, this); + return { + y_top: yTop, + y_bottom: yBottom, + displaced_x: displacedX, + non_displaced_x: nonDisplacedX, + highest_line: highestLine, + lowest_line: lowestLine, + highest_displaced_line: highestDisplacedLine, + lowest_displaced_line: lowestDisplacedLine, + highest_non_displaced_line: highestNonDisplacedLine, + lowest_non_displaced_line: lowestNonDisplacedLine, + }; + } + getNoteHeadBeginX() { + return this.getAbsoluteX() + this.x_shift; + } + getNoteHeadEndX() { + const xBegin = this.getNoteHeadBeginX(); + return xBegin + this.getGlyphWidth(); + } + get noteHeads() { + return this._noteHeads.slice(); + } + get note_heads() { + showDeprecationWarningForNoteHeads(); + return this.noteHeads; + } + drawLedgerLines() { + const stave = this.checkStave(); + const { glyph, render_options: { stroke_px }, } = this; + const ctx = this.checkContext(); + const width = glyph.getWidth() + stroke_px * 2; + const doubleWidth = 2 * (glyph.getWidth() + stroke_px) - Stem.WIDTH / 2; + if (this.isRest()) + return; + if (!ctx) { + throw new RuntimeError('NoCanvasContext', "Can't draw without a canvas context."); + } + const { highest_line, lowest_line, highest_displaced_line, highest_non_displaced_line, lowest_displaced_line, lowest_non_displaced_line, displaced_x, non_displaced_x, } = this.getNoteHeadBounds(); + if (highest_line < 6 && lowest_line > 0) + return; + const min_x = Math.min(displaced_x !== null && displaced_x !== void 0 ? displaced_x : 0, non_displaced_x !== null && non_displaced_x !== void 0 ? non_displaced_x : 0); + const drawLedgerLine = (y, normal, displaced) => { + let x; + if (displaced && normal) + x = min_x - stroke_px; + else if (normal) + x = (non_displaced_x !== null && non_displaced_x !== void 0 ? non_displaced_x : 0) - stroke_px; + else + x = (displaced_x !== null && displaced_x !== void 0 ? displaced_x : 0) - stroke_px; + const ledgerWidth = normal && displaced ? doubleWidth : width; + ctx.beginPath(); + ctx.moveTo(x, y); + ctx.lineTo(x + ledgerWidth, y); + ctx.stroke(); + }; + const style = Object.assign(Object.assign({}, stave.getDefaultLedgerLineStyle()), this.getLedgerLineStyle()); + this.applyStyle(ctx, style); + for (let line = 6; line <= highest_line; ++line) { + const normal = non_displaced_x !== undefined && line <= highest_non_displaced_line; + const displaced = highest_displaced_line !== undefined && line <= highest_displaced_line; + drawLedgerLine(stave.getYForNote(line), normal, displaced); + } + for (let line = 0; line >= lowest_line; --line) { + const normal = non_displaced_x !== undefined && line >= lowest_non_displaced_line; + const displaced = lowest_displaced_line !== undefined && line >= lowest_displaced_line; + drawLedgerLine(stave.getYForNote(line), normal, displaced); + } + this.restoreStyle(ctx, style); + } + drawModifiers(noteheadParam) { + const ctx = this.checkContext(); + for (let i = 0; i < this.modifiers.length; i++) { + const modifier = this.modifiers[i]; + const index = modifier.checkIndex(); + const notehead = this._noteHeads[index]; + if (notehead == noteheadParam) { + const noteheadStyle = notehead.getStyle(); + notehead.applyStyle(ctx, noteheadStyle); + modifier.setContext(ctx); + modifier.drawWithStyle(); + notehead.restoreStyle(ctx, noteheadStyle); + } + } + } + shouldDrawFlag() { + const hasStem = this.stem !== undefined; + const hasFlag = this.glyph.flag; + const hasNoBeam = this.beam === undefined; + return hasStem && hasFlag && hasNoBeam; + } + drawFlag() { + var _a, _b, _c, _d, _e; + const ctx = this.checkContext(); + if (!ctx) { + throw new RuntimeError('NoCanvasContext', "Can't draw without a canvas context."); + } + if (this.shouldDrawFlag()) { + const { y_top, y_bottom } = this.getNoteHeadBounds(); + const noteStemHeight = this.stem.getHeight(); + const flagX = this.getStemX(); + const flagY = this.getStemDirection() === Stem.DOWN + ? + y_top - + noteStemHeight + + 2 - + (this.glyph ? this.glyph.stem_down_extension : 0) * this.getStaveNoteScale() - + ((_b = (_a = this.flag) === null || _a === void 0 ? void 0 : _a.getMetrics().y_shift) !== null && _b !== void 0 ? _b : 0) * (1 - this.getStaveNoteScale()) + : + y_bottom - + noteStemHeight - + 2 + + (this.glyph ? this.glyph.stem_up_extension : 0) * this.getStaveNoteScale() - + ((_d = (_c = this.flag) === null || _c === void 0 ? void 0 : _c.getMetrics().y_shift) !== null && _d !== void 0 ? _d : 0) * (1 - this.getStaveNoteScale()); + (_e = this.flag) === null || _e === void 0 ? void 0 : _e.render(ctx, flagX, flagY); + } + } + drawNoteHeads() { + const ctx = this.checkContext(); + this._noteHeads.forEach((notehead) => { + ctx.openGroup('notehead', notehead.getAttribute('id'), { pointerBBox: true }); + notehead.setContext(ctx).draw(); + this.drawModifiers(notehead); + ctx.closeGroup(); + }); + } + drawStem(stemOptions) { + const ctx = this.checkContext(); + if (stemOptions) { + this.setStem(new Stem(stemOptions)); + } + if (this.shouldDrawFlag() && this.stem) { + this.stem.adjustHeightForFlag(); + } + if (this.stem) { + this.stem.setContext(ctx).draw(); + } + } + getStaveNoteScale() { + return 1.0; + } + getStemExtension() { + const super_stem_extension = super.getStemExtension(); + if (!this.glyph.stem) { + return super_stem_extension; + } + const stem_direction = this.getStemDirection(); + if (stem_direction !== this.calculateOptimalStemDirection()) { + return super_stem_extension; + } + let mid_line_distance; + const MIDDLE_LINE = 3; + if (stem_direction === Stem.UP) { + mid_line_distance = MIDDLE_LINE - this.maxLine; + } + else { + mid_line_distance = this.minLine - MIDDLE_LINE; + } + const lines_over_octave_from_mid_line = mid_line_distance - 3.5; + if (lines_over_octave_from_mid_line <= 0) { + return super_stem_extension; + } + const stave = this.getStave(); + let spacing_between_lines = 10; + if (stave != undefined) { + spacing_between_lines = stave.getSpacingBetweenLines(); + } + return super_stem_extension + lines_over_octave_from_mid_line * spacing_between_lines; + } + draw() { + if (this.render_options.draw === false) + return; + if (this.ys.length === 0) { + throw new RuntimeError('NoYValues', "Can't draw note without Y values."); + } + const ctx = this.checkContext(); + const xBegin = this.getNoteHeadBeginX(); + const shouldRenderStem = this.hasStem() && !this.beam; + this._noteHeads.forEach((notehead) => notehead.setX(xBegin)); + if (this.stem) { + const stemX = this.getStemX(); + this.stem.setNoteHeadXBounds(stemX, stemX); + } + L('Rendering ', this.isChord() ? 'chord :' : 'note :', this.keys); + this.applyStyle(); + ctx.openGroup('stavenote', this.getAttribute('id')); + this.drawLedgerLines(); + if (shouldRenderStem) + this.drawStem(); + this.drawNoteHeads(); + this.drawFlag(); + ctx.closeGroup(); + this.restoreStyle(); + this.setRendered(); + } +} +StaveNote.DEBUG = false; diff --git a/build/esm/src/staverepetition.js b/build/esm/src/staverepetition.js new file mode 100644 index 0000000000..7b7d7e27d8 --- /dev/null +++ b/build/esm/src/staverepetition.js @@ -0,0 +1,155 @@ +import { Font, FontStyle, FontWeight } from './font.js'; +import { Glyph } from './glyph.js'; +import { StaveModifier } from './stavemodifier.js'; +import { Tables } from './tables.js'; +export class Repetition extends StaveModifier { + constructor(type, x, y_shift) { + super(); + this.symbol_type = type; + this.x = x; + this.x_shift = 0; + this.y_shift = y_shift; + this.resetFont(); + } + static get CATEGORY() { + return "Repetition"; + } + setShiftX(x) { + this.x_shift = x; + return this; + } + setShiftY(y) { + this.y_shift = y; + return this; + } + draw(stave, x) { + this.setRendered(); + switch (this.symbol_type) { + case Repetition.type.CODA_RIGHT: + this.drawCodaFixed(stave, x + stave.getWidth()); + break; + case Repetition.type.CODA_LEFT: + this.drawSymbolText(stave, x, 'Coda', true); + break; + case Repetition.type.SEGNO_LEFT: + this.drawSignoFixed(stave, x); + break; + case Repetition.type.SEGNO_RIGHT: + this.drawSignoFixed(stave, x + stave.getWidth()); + break; + case Repetition.type.DC: + this.drawSymbolText(stave, x, 'D.C.', false); + break; + case Repetition.type.DC_AL_CODA: + this.drawSymbolText(stave, x, 'D.C. al', true); + break; + case Repetition.type.DC_AL_FINE: + this.drawSymbolText(stave, x, 'D.C. al Fine', false); + break; + case Repetition.type.DS: + this.drawSymbolText(stave, x, 'D.S.', false); + break; + case Repetition.type.DS_AL_CODA: + this.drawSymbolText(stave, x, 'D.S. al', true); + break; + case Repetition.type.DS_AL_FINE: + this.drawSymbolText(stave, x, 'D.S. al Fine', false); + break; + case Repetition.type.FINE: + this.drawSymbolText(stave, x, 'Fine', false); + break; + case Repetition.type.TO_CODA: + this.drawSymbolText(stave, x, 'To', true); + break; + default: + break; + } + return this; + } + drawCodaFixed(stave, x) { + const y = stave.getYForTopText(stave.getNumLines()) + this.y_shift; + Glyph.renderGlyph(stave.checkContext(), this.x + x + this.x_shift, y + Tables.currentMusicFont().lookupMetric('staveRepetition.coda.offsetY'), 40, 'coda', { category: 'coda' }); + return this; + } + drawSignoFixed(stave, x) { + const y = stave.getYForTopText(stave.getNumLines()) + this.y_shift; + Glyph.renderGlyph(stave.checkContext(), this.x + x + this.x_shift, y + Tables.currentMusicFont().lookupMetric('staveRepetition.segno.offsetY'), 30, 'segno', { category: 'segno' }); + return this; + } + drawSymbolText(stave, x, text, draw_coda) { + const ctx = stave.checkContext(); + ctx.save(); + ctx.setFont(this.textFont); + let text_x = 0; + let symbol_x = 0; + const modifierWidth = stave.getNoteStartX() - this.x; + switch (this.symbol_type) { + case Repetition.type.CODA_LEFT: + text_x = this.x + stave.getVerticalBarWidth(); + symbol_x = + text_x + + ctx.measureText(text).width + + Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX'); + break; + case Repetition.type.DC: + case Repetition.type.DC_AL_FINE: + case Repetition.type.DS: + case Repetition.type.DS_AL_FINE: + case Repetition.type.FINE: + text_x = + this.x + + x + + this.x_shift + + stave.getWidth() - + Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.spacing') - + modifierWidth - + ctx.measureText(text).width; + break; + default: + text_x = + this.x + + x + + this.x_shift + + stave.getWidth() - + Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.spacing') - + modifierWidth - + ctx.measureText(text).width - + Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX'); + symbol_x = + text_x + + ctx.measureText(text).width + + Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetX'); + break; + } + const y = stave.getYForTopText(stave.getNumLines()) + + this.y_shift + + Tables.currentMusicFont().lookupMetric('staveRepetition.symbolText.offsetY'); + if (draw_coda) { + Glyph.renderGlyph(ctx, symbol_x, y, 40, 'coda', { category: 'coda' }); + } + ctx.fillText(text, text_x, y + 5); + ctx.restore(); + return this; + } +} +Repetition.TEXT_FONT = { + family: Font.SERIF, + size: 12, + weight: FontWeight.BOLD, + style: FontStyle.NORMAL, +}; +Repetition.type = { + NONE: 1, + CODA_LEFT: 2, + CODA_RIGHT: 3, + SEGNO_LEFT: 4, + SEGNO_RIGHT: 5, + DC: 6, + DC_AL_CODA: 7, + DC_AL_FINE: 8, + DS: 9, + DS_AL_CODA: 10, + DS_AL_FINE: 11, + FINE: 12, + TO_CODA: 13, +}; diff --git a/build/esm/src/stavesection.js b/build/esm/src/stavesection.js new file mode 100644 index 0000000000..305801afbf --- /dev/null +++ b/build/esm/src/stavesection.js @@ -0,0 +1,61 @@ +import { Font, FontStyle, FontWeight } from './font.js'; +import { StaveModifier } from './stavemodifier.js'; +export class StaveSection extends StaveModifier { + constructor(section, x, shift_y, drawRect = true) { + super(); + this.setWidth(16); + this.section = section; + this.x = x; + this.shift_x = 0; + this.shift_y = shift_y; + this.drawRect = drawRect; + this.resetFont(); + } + static get CATEGORY() { + return "StaveSection"; + } + setStaveSection(section) { + this.section = section; + return this; + } + setShiftX(x) { + this.shift_x = x; + return this; + } + setShiftY(y) { + this.shift_y = y; + return this; + } + draw(stave, shift_x) { + const ctx = stave.checkContext(); + this.setRendered(); + ctx.save(); + ctx.setLineWidth(2); + ctx.setFont(this.textFont); + const paddingX = 2; + const paddingY = 2; + const rectWidth = 2; + const textMeasurements = ctx.measureText(this.section); + const textWidth = textMeasurements.width; + const textHeight = textMeasurements.height; + const width = textWidth + 2 * paddingX; + const height = textHeight + 2 * paddingY; + const y = stave.getYForTopText(1.5) + this.shift_y; + const x = this.x + shift_x; + if (this.drawRect) { + ctx.beginPath(); + ctx.setLineWidth(rectWidth); + ctx.rect(x, y + textMeasurements.y - paddingY, width, height); + ctx.stroke(); + } + ctx.fillText(this.section, x + paddingX, y); + ctx.restore(); + return this; + } +} +StaveSection.TEXT_FONT = { + family: Font.SANS_SERIF, + size: 10, + weight: FontWeight.BOLD, + style: FontStyle.NORMAL, +}; diff --git a/build/esm/src/stavetempo.js b/build/esm/src/stavetempo.js new file mode 100644 index 0000000000..3489a05d46 --- /dev/null +++ b/build/esm/src/stavetempo.js @@ -0,0 +1,91 @@ +import { Font, FontStyle, FontWeight } from './font.js'; +import { Glyph } from './glyph.js'; +import { StaveModifier, StaveModifierPosition } from './stavemodifier.js'; +import { Tables } from './tables.js'; +export class StaveTempo extends StaveModifier { + constructor(tempo, x, shift_y) { + super(); + this.render_options = { glyph_font_scale: 30 }; + this.tempo = tempo; + this.position = StaveModifierPosition.ABOVE; + this.x = x; + this.shift_x = 10; + this.shift_y = shift_y; + this.resetFont(); + } + static get CATEGORY() { + return "StaveTempo"; + } + setTempo(tempo) { + this.tempo = tempo; + return this; + } + setShiftX(x) { + this.shift_x = x; + return this; + } + setShiftY(y) { + this.shift_y = y; + return this; + } + draw(stave, shift_x) { + const ctx = stave.checkContext(); + this.setRendered(); + const options = this.render_options; + const scale = options.glyph_font_scale / 38; + const name = this.tempo.name; + const duration = this.tempo.duration; + const dots = this.tempo.dots || 0; + const bpm = this.tempo.bpm; + let x = this.x + this.shift_x + shift_x; + const y = stave.getYForTopText(1) + this.shift_y; + ctx.save(); + if (name) { + ctx.setFont(this.textFont); + ctx.fillText(name, x, y); + x += ctx.measureText(name).width; + } + if (duration && bpm) { + ctx.setFont(Object.assign(Object.assign({}, this.textFont), { weight: 'normal', style: 'normal' })); + if (name) { + x += ctx.measureText(' ').width; + ctx.fillText('(', x, y); + x += ctx.measureText('(').width; + } + const code = Tables.getGlyphProps(duration); + x += 3 * scale; + Glyph.renderGlyph(ctx, x, y, options.glyph_font_scale, code.code_head); + x += code.getWidth() * scale; + if (code.stem) { + let stem_height = 30; + if (code.beam_count) + stem_height += 3 * (code.beam_count - 1); + stem_height *= scale; + const y_top = y - stem_height; + ctx.fillRect(x - scale, y_top, scale, stem_height); + if (code.flag) { + Glyph.renderGlyph(ctx, x, y_top, options.glyph_font_scale, code.code_flag_upstem, { + category: 'flag.staveTempo', + }); + if (!dots) + x += 6 * scale; + } + } + for (let i = 0; i < dots; i++) { + x += 6 * scale; + ctx.beginPath(); + ctx.arc(x, y + 2 * scale, 2 * scale, 0, Math.PI * 2, false); + ctx.fill(); + } + ctx.fillText(' = ' + bpm + (name ? ')' : ''), x + 3 * scale, y); + } + ctx.restore(); + return this; + } +} +StaveTempo.TEXT_FONT = { + family: Font.SERIF, + size: 14, + weight: FontWeight.BOLD, + style: FontStyle.NORMAL, +}; diff --git a/build/esm/src/stavetext.js b/build/esm/src/stavetext.js new file mode 100644 index 0000000000..1e5a3bf9dc --- /dev/null +++ b/build/esm/src/stavetext.js @@ -0,0 +1,82 @@ +import { Font, FontStyle, FontWeight } from './font.js'; +import { StaveModifier, StaveModifierPosition } from './stavemodifier.js'; +import { TextJustification, TextNote } from './textnote.js'; +import { RuntimeError } from './util.js'; +export class StaveText extends StaveModifier { + constructor(text, position, options = {}) { + super(); + this.setWidth(16); + this.text = text; + this.position = position; + this.options = Object.assign({ shift_x: 0, shift_y: 0, justification: TextNote.Justification.CENTER }, options); + this.resetFont(); + } + static get CATEGORY() { + return "StaveText"; + } + setStaveText(text) { + this.text = text; + return this; + } + setShiftX(x) { + this.shift_x = x; + return this; + } + setShiftY(y) { + this.shift_y = y; + return this; + } + setText(text) { + this.text = text; + return this; + } + draw(stave) { + const ctx = stave.checkContext(); + this.setRendered(); + ctx.save(); + ctx.setLineWidth(2); + ctx.setFont(this.textFont); + const text_width = ctx.measureText('' + this.text).width; + let x; + let y; + switch (this.position) { + case StaveModifierPosition.LEFT: + case StaveModifierPosition.RIGHT: + y = (stave.getYForLine(0) + stave.getBottomLineY()) / 2 + this.options.shift_y; + if (this.position === StaveModifierPosition.LEFT) { + x = stave.getX() - text_width - 24 + this.options.shift_x; + } + else { + x = stave.getX() + stave.getWidth() + 24 + this.options.shift_x; + } + break; + case StaveModifierPosition.ABOVE: + case StaveModifierPosition.BELOW: + x = stave.getX() + this.options.shift_x; + if (this.options.justification === TextJustification.CENTER) { + x += stave.getWidth() / 2 - text_width / 2; + } + else if (this.options.justification === TextJustification.RIGHT) { + x += stave.getWidth() - text_width; + } + if (this.position === StaveModifierPosition.ABOVE) { + y = stave.getYForTopText(2) + this.options.shift_y; + } + else { + y = stave.getYForBottomText(2) + this.options.shift_y; + } + break; + default: + throw new RuntimeError('InvalidPosition', 'Value Must be in Modifier.Position.'); + } + ctx.fillText('' + this.text, x, y + 4); + ctx.restore(); + return this; + } +} +StaveText.TEXT_FONT = { + family: Font.SERIF, + size: 16, + weight: FontWeight.NORMAL, + style: FontStyle.NORMAL, +}; diff --git a/build/esm/src/stavetie.js b/build/esm/src/stavetie.js new file mode 100644 index 0000000000..4cc7cb96de --- /dev/null +++ b/build/esm/src/stavetie.js @@ -0,0 +1,144 @@ +import { Element } from './element.js'; +import { RuntimeError } from './util.js'; +export class StaveTie extends Element { + constructor(notes, text) { + super(); + this.setNotes(notes); + this.text = text; + this.render_options = { + cp1: 8, + cp2: 12, + text_shift_x: 0, + first_x_shift: 0, + last_x_shift: 0, + y_shift: 7, + tie_spacing: 0, + }; + this.resetFont(); + } + static get CATEGORY() { + return "StaveTie"; + } + setDirection(direction) { + this.direction = direction; + return this; + } + setNotes(notes) { + if (!notes.first_note && !notes.last_note) { + throw new RuntimeError('BadArguments', 'Tie needs to have either first_note or last_note set.'); + } + if (!notes.first_indices) { + notes.first_indices = [0]; + } + if (!notes.last_indices) { + notes.last_indices = [0]; + } + if (notes.first_indices.length !== notes.last_indices.length) { + throw new RuntimeError('BadArguments', 'Tied notes must have same number of indices.'); + } + this.notes = notes; + return this; + } + isPartial() { + return !this.notes.first_note || !this.notes.last_note; + } + renderTie(params) { + if (params.first_ys.length === 0 || params.last_ys.length === 0) { + throw new RuntimeError('BadArguments', 'No Y-values to render'); + } + const ctx = this.checkContext(); + let cp1 = this.render_options.cp1; + let cp2 = this.render_options.cp2; + if (Math.abs(params.last_x_px - params.first_x_px) < 10) { + cp1 = 2; + cp2 = 8; + } + const first_x_shift = this.render_options.first_x_shift; + const last_x_shift = this.render_options.last_x_shift; + const y_shift = this.render_options.y_shift * params.direction; + const first_indices = this.notes.first_indices; + const last_indices = this.notes.last_indices; + for (let i = 0; i < first_indices.length; ++i) { + const cp_x = (params.last_x_px + last_x_shift + (params.first_x_px + first_x_shift)) / 2; + const first_y_px = params.first_ys[first_indices[i]] + y_shift; + const last_y_px = params.last_ys[last_indices[i]] + y_shift; + if (isNaN(first_y_px) || isNaN(last_y_px)) { + throw new RuntimeError('BadArguments', 'Bad indices for tie rendering.'); + } + const top_cp_y = (first_y_px + last_y_px) / 2 + cp1 * params.direction; + const bottom_cp_y = (first_y_px + last_y_px) / 2 + cp2 * params.direction; + ctx.openGroup('stavetie', this.getAttribute('id')); + ctx.beginPath(); + ctx.moveTo(params.first_x_px + first_x_shift, first_y_px); + ctx.quadraticCurveTo(cp_x, top_cp_y, params.last_x_px + last_x_shift, last_y_px); + ctx.quadraticCurveTo(cp_x, bottom_cp_y, params.first_x_px + first_x_shift, first_y_px); + ctx.closePath(); + ctx.fill(); + ctx.closeGroup(); + } + } + renderText(first_x_px, last_x_px) { + var _a, _b, _c; + if (!this.text) + return; + const ctx = this.checkContext(); + let center_x = (first_x_px + last_x_px) / 2; + center_x -= ctx.measureText(this.text).width / 2; + const stave = (_b = (_a = this.notes.first_note) === null || _a === void 0 ? void 0 : _a.checkStave()) !== null && _b !== void 0 ? _b : (_c = this.notes.last_note) === null || _c === void 0 ? void 0 : _c.checkStave(); + if (stave) { + ctx.save(); + ctx.setFont(this.textFont); + ctx.fillText(this.text, center_x + this.render_options.text_shift_x, stave.getYForTopText() - 1); + ctx.restore(); + } + } + getNotes() { + return this.notes; + } + draw() { + this.checkContext(); + this.setRendered(); + const first_note = this.notes.first_note; + const last_note = this.notes.last_note; + let first_x_px = 0; + let last_x_px = 0; + let first_ys = [0]; + let last_ys = [0]; + let stem_direction = 0; + if (first_note) { + first_x_px = first_note.getTieRightX() + this.render_options.tie_spacing; + stem_direction = first_note.getStemDirection(); + first_ys = first_note.getYs(); + } + else if (last_note) { + const stave = last_note.checkStave(); + first_x_px = stave.getTieStartX(); + first_ys = last_note.getYs(); + this.notes.first_indices = this.notes.last_indices; + } + if (last_note) { + last_x_px = last_note.getTieLeftX() + this.render_options.tie_spacing; + stem_direction = last_note.getStemDirection(); + last_ys = last_note.getYs(); + } + else if (first_note) { + const stave = first_note.checkStave(); + last_x_px = stave.getTieEndX(); + last_ys = first_note.getYs(); + this.notes.last_indices = this.notes.first_indices; + } + if (this.direction) { + stem_direction = this.direction; + } + this.renderTie({ + first_x_px, + last_x_px, + first_ys, + last_ys, + direction: stem_direction, + }); + this.renderText(first_x_px, last_x_px); + return true; + } +} +StaveTie.TEXT_FONT = Object.assign({}, Element.TEXT_FONT); diff --git a/build/esm/src/stavevolta.js b/build/esm/src/stavevolta.js new file mode 100644 index 0000000000..fa39fdd50f --- /dev/null +++ b/build/esm/src/stavevolta.js @@ -0,0 +1,67 @@ +import { Font, FontStyle, FontWeight } from './font.js'; +import { StaveModifier } from './stavemodifier.js'; +export var VoltaType; +(function (VoltaType) { + VoltaType[VoltaType["NONE"] = 1] = "NONE"; + VoltaType[VoltaType["BEGIN"] = 2] = "BEGIN"; + VoltaType[VoltaType["MID"] = 3] = "MID"; + VoltaType[VoltaType["END"] = 4] = "END"; + VoltaType[VoltaType["BEGIN_END"] = 5] = "BEGIN_END"; +})(VoltaType || (VoltaType = {})); +export class Volta extends StaveModifier { + constructor(type, number, x, y_shift) { + super(); + this.volta = type; + this.x = x; + this.y_shift = y_shift; + this.number = number; + this.resetFont(); + } + static get CATEGORY() { + return "Volta"; + } + static get type() { + return VoltaType; + } + setShiftY(y) { + this.y_shift = y; + return this; + } + draw(stave, x) { + const ctx = stave.checkContext(); + this.setRendered(); + let width = stave.getWidth() - x; + const top_y = stave.getYForTopText(stave.getNumLines()) + this.y_shift; + const vert_height = 1.5 * stave.getSpacingBetweenLines(); + switch (this.volta) { + case VoltaType.BEGIN: + ctx.fillRect(this.x + x, top_y, 1, vert_height); + break; + case VoltaType.END: + width -= 5; + ctx.fillRect(this.x + x + width, top_y, 1, vert_height); + break; + case VoltaType.BEGIN_END: + width -= 3; + ctx.fillRect(this.x + x, top_y, 1, vert_height); + ctx.fillRect(this.x + x + width, top_y, 1, vert_height); + break; + default: + break; + } + if (this.volta === VoltaType.BEGIN || this.volta === VoltaType.BEGIN_END) { + ctx.save(); + ctx.setFont(this.textFont); + ctx.fillText(this.number, this.x + x + 5, top_y + 15); + ctx.restore(); + } + ctx.fillRect(this.x + x, top_y, width, 1); + return this; + } +} +Volta.TEXT_FONT = { + family: Font.SANS_SERIF, + size: 9, + weight: FontWeight.BOLD, + style: FontStyle.NORMAL, +}; diff --git a/build/esm/src/stem.js b/build/esm/src/stem.js new file mode 100644 index 0000000000..45d7ed5b63 --- /dev/null +++ b/build/esm/src/stem.js @@ -0,0 +1,133 @@ +import { Element } from './element.js'; +import { Tables } from './tables.js'; +import { log, RuntimeError } from './util.js'; +function L(...args) { + if (Stem.DEBUG) + log('Vex.Flow.Stem', args); +} +export class Stem extends Element { + constructor(options) { + super(); + this.stem_up_y_offset = 0; + this.stem_down_y_offset = 0; + this.stem_up_y_base_offset = 0; + this.stem_down_y_base_offset = 0; + this.x_begin = (options === null || options === void 0 ? void 0 : options.x_begin) || 0; + this.x_end = (options === null || options === void 0 ? void 0 : options.x_end) || 0; + this.y_top = (options === null || options === void 0 ? void 0 : options.y_top) || 0; + this.y_bottom = (options === null || options === void 0 ? void 0 : options.y_bottom) || 0; + this.stem_extension = (options === null || options === void 0 ? void 0 : options.stem_extension) || 0; + this.stem_direction = (options === null || options === void 0 ? void 0 : options.stem_direction) || 0; + this.hide = (options === null || options === void 0 ? void 0 : options.hide) || false; + this.isStemlet = (options === null || options === void 0 ? void 0 : options.isStemlet) || false; + this.stemletHeight = (options === null || options === void 0 ? void 0 : options.stemletHeight) || 0; + this.renderHeightAdjustment = 0; + this.setOptions(options); + } + static get CATEGORY() { + return "Stem"; + } + static get UP() { + return 1; + } + static get DOWN() { + return -1; + } + static get WIDTH() { + return Tables.STEM_WIDTH; + } + static get HEIGHT() { + return Tables.STEM_HEIGHT; + } + setOptions(options) { + this.stem_up_y_offset = (options === null || options === void 0 ? void 0 : options.stem_up_y_offset) || 0; + this.stem_down_y_offset = (options === null || options === void 0 ? void 0 : options.stem_down_y_offset) || 0; + this.stem_up_y_base_offset = (options === null || options === void 0 ? void 0 : options.stem_up_y_base_offset) || 0; + this.stem_down_y_base_offset = (options === null || options === void 0 ? void 0 : options.stem_down_y_base_offset) || 0; + } + setNoteHeadXBounds(x_begin, x_end) { + this.x_begin = x_begin; + this.x_end = x_end; + return this; + } + setDirection(direction) { + this.stem_direction = direction; + } + setExtension(ext) { + this.stem_extension = ext; + } + getExtension() { + return this.stem_extension; + } + setYBounds(y_top, y_bottom) { + this.y_top = y_top; + this.y_bottom = y_bottom; + } + getHeight() { + const y_offset = this.stem_direction === Stem.UP ? this.stem_up_y_offset : this.stem_down_y_offset; + const unsigned_height = this.y_bottom - this.y_top + (Stem.HEIGHT - y_offset + this.stem_extension); + return unsigned_height * this.stem_direction; + } + getBoundingBox() { + throw new RuntimeError('NotImplemented', 'getBoundingBox() not implemented.'); + } + getExtents() { + const isStemUp = this.stem_direction === Stem.UP; + const ys = [this.y_top, this.y_bottom]; + const stemHeight = Stem.HEIGHT + this.stem_extension; + const innerMostNoteheadY = (isStemUp ? Math.min : Math.max)(...ys); + const outerMostNoteheadY = (isStemUp ? Math.max : Math.min)(...ys); + const stemTipY = innerMostNoteheadY + stemHeight * -this.stem_direction; + return { topY: stemTipY, baseY: outerMostNoteheadY }; + } + setVisibility(isVisible) { + this.hide = !isVisible; + return this; + } + setStemlet(isStemlet, stemletHeight) { + this.isStemlet = isStemlet; + this.stemletHeight = stemletHeight; + return this; + } + adjustHeightForFlag() { + this.renderHeightAdjustment = Tables.currentMusicFont().lookupMetric('stem.heightAdjustmentForFlag', -3); + } + adjustHeightForBeam() { + this.renderHeightAdjustment = -Stem.WIDTH / 2; + } + draw() { + this.setRendered(); + if (this.hide) + return; + const ctx = this.checkContext(); + let stem_x; + let stem_y; + const stem_direction = this.stem_direction; + let y_base_offset = 0; + if (stem_direction === Stem.DOWN) { + stem_x = this.x_begin; + stem_y = this.y_top + this.stem_down_y_offset; + y_base_offset = this.stem_down_y_base_offset; + } + else { + stem_x = this.x_end; + stem_y = this.y_bottom - this.stem_up_y_offset; + y_base_offset = this.stem_up_y_base_offset; + } + const stemHeight = this.getHeight(); + L('Rendering stem - ', 'Top Y: ', this.y_top, 'Bottom Y: ', this.y_bottom); + const stemletYOffset = this.isStemlet ? stemHeight - this.stemletHeight * this.stem_direction : 0; + ctx.save(); + ctx.openGroup('stem', this.getAttribute('id'), { pointerBBox: true }); + this.applyStyle(ctx); + ctx.beginPath(); + ctx.setLineWidth(Stem.WIDTH); + ctx.moveTo(stem_x, stem_y - stemletYOffset + y_base_offset); + ctx.lineTo(stem_x, stem_y - stemHeight - this.renderHeightAdjustment * stem_direction); + ctx.stroke(); + this.restoreStyle(ctx); + ctx.closeGroup(); + ctx.restore(); + } +} +Stem.DEBUG = false; diff --git a/build/esm/src/stemmablenote.js b/build/esm/src/stemmablenote.js new file mode 100644 index 0000000000..6c9b8b1b10 --- /dev/null +++ b/build/esm/src/stemmablenote.js @@ -0,0 +1,194 @@ +import { Glyph } from './glyph.js'; +import { Note } from './note.js'; +import { Stem } from './stem.js'; +import { Tables } from './tables.js'; +import { RuntimeError } from './util.js'; +export class StemmableNote extends Note { + constructor(noteStruct) { + super(noteStruct); + } + static get CATEGORY() { + return "StemmableNote"; + } + getStem() { + return this.stem; + } + checkStem() { + if (!this.stem) { + throw new RuntimeError('NoStem', 'No stem attached to instance'); + } + return this.stem; + } + setStem(stem) { + this.stem = stem; + this.addChildElement(stem); + return this; + } + buildStem() { + const stem = new Stem(); + this.setStem(stem); + return this; + } + buildFlag(category = 'flag') { + const { glyph } = this; + if (this.hasFlag()) { + const flagCode = this.getStemDirection() === Stem.DOWN ? glyph.code_flag_downstem : glyph.code_flag_upstem; + this.flag = new Glyph(flagCode, this.render_options.glyph_font_scale, { category }); + } + } + getBaseCustomNoteHeadGlyph() { + if (this.getStemDirection() === Stem.DOWN) { + return this.customGlyphs[this.customGlyphs.length - 1]; + } + else { + return this.customGlyphs[0]; + } + } + getStemLength() { + return Stem.HEIGHT + this.getStemExtension(); + } + getBeamCount() { + const glyph = this.getGlyph(); + if (glyph) { + return glyph.beam_count; + } + else { + return 0; + } + } + getStemMinimumLength() { + const frac = Tables.durationToFraction(this.duration); + let length = frac.value() <= 1 ? 0 : 20; + switch (this.duration) { + case '8': + if (this.beam == undefined) + length = 35; + break; + case '16': + length = this.beam == undefined ? 35 : 25; + break; + case '32': + length = this.beam == undefined ? 45 : 35; + break; + case '64': + length = this.beam == undefined ? 50 : 40; + break; + case '128': + length = this.beam == undefined ? 55 : 45; + break; + default: + break; + } + return length; + } + getStemDirection() { + if (!this.stem_direction) + throw new RuntimeError('NoStem', 'No stem attached to this note.'); + return this.stem_direction; + } + setStemDirection(direction) { + if (!direction) + direction = Stem.UP; + if (direction !== Stem.UP && direction !== Stem.DOWN) { + throw new RuntimeError('BadArgument', `Invalid stem direction: ${direction}`); + } + this.stem_direction = direction; + this.reset(); + if (this.hasFlag()) { + this.buildFlag(); + } + this.beam = undefined; + if (this.stem) { + this.stem.setDirection(direction); + this.stem.setExtension(this.getStemExtension()); + const glyph = this.getBaseCustomNoteHeadGlyph() || this.getGlyph(); + const offsets = Tables.currentMusicFont().lookupMetric(`stem.noteHead.${glyph.code_head}`, { + offsetYBaseStemUp: 0, + offsetYTopStemUp: 0, + offsetYBaseStemDown: 0, + offsetYTopStemDown: 0, + }); + this.stem.setOptions({ + stem_up_y_offset: offsets.offsetYTopStemUp, + stem_down_y_offset: offsets.offsetYTopStemDown, + stem_up_y_base_offset: offsets.offsetYBaseStemUp, + stem_down_y_base_offset: offsets.offsetYBaseStemDown, + }); + } + if (this.preFormatted) { + this.preFormat(); + } + return this; + } + getStemX() { + const x_begin = this.getAbsoluteX() + this.x_shift; + const x_end = this.getAbsoluteX() + this.x_shift + this.getGlyphWidth(); + const stem_x = this.stem_direction === Stem.DOWN ? x_begin : x_end; + return stem_x; + } + getCenterGlyphX() { + return this.getAbsoluteX() + this.x_shift + this.getGlyphWidth() / 2; + } + getStemExtension() { + const glyph = this.getGlyph(); + if (this.stem_extension_override != undefined) { + return this.stem_extension_override; + } + if (this.beam) { + return glyph.stem_beam_extension; + } + if (glyph) { + return this.getStemDirection() === Stem.UP ? glyph.stem_up_extension : glyph.stem_down_extension; + } + return 0; + } + setStemLength(height) { + this.stem_extension_override = height - Stem.HEIGHT; + return this; + } + getStemExtents() { + if (!this.stem) + throw new RuntimeError('NoStem', 'No stem attached to this note.'); + return this.stem.getExtents(); + } + getYForTopText(textLine) { + const stave = this.checkStave(); + if (this.hasStem()) { + const extents = this.getStemExtents(); + if (!extents) + throw new RuntimeError('InvalidState', 'Stem does not have extents.'); + return Math.min(stave.getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1)); + } + else { + return stave.getYForTopText(textLine); + } + } + getYForBottomText(textLine) { + const stave = this.checkStave(); + if (this.hasStem()) { + const extents = this.getStemExtents(); + if (!extents) + throw new RuntimeError('InvalidState', 'Stem does not have extents.'); + return Math.max(stave.getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine); + } + else { + return stave.getYForBottomText(textLine); + } + } + hasFlag() { + return Tables.getGlyphProps(this.duration).flag && !this.beam; + } + postFormat() { + var _a; + (_a = this.beam) === null || _a === void 0 ? void 0 : _a.postFormat(); + this.postFormatted = true; + return this; + } + drawStem(stemOptions) { + var _a; + this.checkContext(); + this.setRendered(); + this.setStem(new Stem(stemOptions)); + (_a = this.stem) === null || _a === void 0 ? void 0 : _a.setContext(this.getContext()).draw(); + } +} diff --git a/build/esm/src/stringnumber.js b/build/esm/src/stringnumber.js new file mode 100644 index 0000000000..d81fef7408 --- /dev/null +++ b/build/esm/src/stringnumber.js @@ -0,0 +1,238 @@ +import { Font, FontStyle, FontWeight } from './font.js'; +import { Modifier, ModifierPosition } from './modifier.js'; +import { Renderer } from './renderer.js'; +import { Stem } from './stem.js'; +import { Tables } from './tables.js'; +import { isStaveNote, isStemmableNote } from './typeguard.js'; +import { RuntimeError } from './util.js'; +export class StringNumber extends Modifier { + constructor(number) { + super(); + this.string_number = number; + this.position = Modifier.Position.ABOVE; + this.x_shift = 0; + this.y_shift = 0; + this.text_line = 0; + this.stem_offset = 0; + this.x_offset = 0; + this.y_offset = 0; + this.dashed = true; + this.leg = Renderer.LineEndType.NONE; + this.radius = 8; + this.drawCircle = true; + this.setWidth(this.radius * 2 + 4); + this.resetFont(); + } + static get CATEGORY() { + return "StringNumber"; + } + static get metrics() { + return Tables.currentMusicFont().getMetrics().glyphs.stringNumber; + } + static format(nums, state) { + const left_shift = state.left_shift; + const right_shift = state.right_shift; + const num_spacing = 1; + if (!nums || nums.length === 0) + return false; + const nums_list = []; + let prev_note = null; + let shift_left = 0; + let shift_right = 0; + const modLines = 0; + for (let i = 0; i < nums.length; ++i) { + const num = nums[i]; + const note = num.getNote(); + const pos = num.getPosition(); + if (!isStaveNote(note)) { + throw new RuntimeError('NoStaveNote'); + } + const index = num.checkIndex(); + const props = note.getKeyProps()[index]; + const mc = note.getModifierContext(); + const verticalSpaceNeeded = (num.radius * 2) / Tables.STAVE_LINE_DISTANCE + 0.5; + if (mc) { + if (pos === ModifierPosition.ABOVE) { + num.text_line = mc.getState().top_text_line; + state.top_text_line += verticalSpaceNeeded; + } + else if (pos === ModifierPosition.BELOW) { + num.text_line = mc.getState().text_line; + state.text_line += verticalSpaceNeeded; + } + } + if (note !== prev_note) { + for (let n = 0; n < note.keys.length; ++n) { + if (left_shift === 0) { + shift_left = Math.max(note.getLeftDisplacedHeadPx(), shift_left); + } + if (right_shift === 0) { + shift_right = Math.max(note.getRightDisplacedHeadPx(), shift_right); + } + } + prev_note = note; + } + const glyphLine = modLines === 0 ? props.line : modLines; + nums_list.push({ + pos, + note, + num, + line: glyphLine, + shiftL: shift_left, + shiftR: shift_right, + }); + } + nums_list.sort((a, b) => b.line - a.line); + let num_shiftR = 0; + let x_widthL = 0; + let x_widthR = 0; + let last_line = null; + let last_note = null; + for (let i = 0; i < nums_list.length; ++i) { + let num_shift = 0; + const note = nums_list[i].note; + const pos = nums_list[i].pos; + const num = nums_list[i].num; + const line = nums_list[i].line; + const shiftR = nums_list[i].shiftR; + if (line !== last_line || note !== last_note) { + num_shiftR = right_shift + shiftR; + } + const num_width = num.getWidth() + num_spacing; + if (pos === Modifier.Position.LEFT) { + num.setXShift(left_shift); + num_shift = shift_left + num_width; + x_widthL = num_shift > x_widthL ? num_shift : x_widthL; + } + else if (pos === Modifier.Position.RIGHT) { + num.setXShift(num_shiftR); + num_shift += num_width; + x_widthR = num_shift > x_widthR ? num_shift : x_widthR; + } + last_line = line; + last_note = note; + } + state.left_shift += x_widthL; + state.right_shift += x_widthR; + return true; + } + setLineEndType(leg) { + if (leg >= Renderer.LineEndType.NONE && leg <= Renderer.LineEndType.DOWN) { + this.leg = leg; + } + return this; + } + setStringNumber(number) { + this.string_number = number; + return this; + } + setOffsetX(x) { + this.x_offset = x; + return this; + } + setOffsetY(y) { + this.y_offset = y; + return this; + } + setLastNote(note) { + this.last_note = note; + return this; + } + setDashed(dashed) { + this.dashed = dashed; + return this; + } + setDrawCircle(drawCircle) { + this.drawCircle = drawCircle; + return this; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const start = note.getModifierStartXY(this.position, this.index); + const stemDirection = note.hasStem() ? note.getStemDirection() : Stem.UP; + let dot_x = start.x + this.x_shift + this.x_offset; + let stem_ext = {}; + if (note.hasStem()) { + stem_ext = note.checkStem().getExtents(); + } + let dot_y = start.y + this.y_shift + this.y_offset; + switch (this.position) { + case Modifier.Position.ABOVE: + { + const ys = note.getYs(); + dot_y = ys.reduce((a, b) => (a < b ? a : b)); + if (note.hasStem() && stemDirection == Stem.UP) { + dot_y = stem_ext.topY + StringNumber.metrics.stemPadding; + } + dot_y -= this.radius + StringNumber.metrics.verticalPadding + this.text_line * Tables.STAVE_LINE_DISTANCE; + } + break; + case Modifier.Position.BELOW: + { + const ys = note.getYs(); + dot_y = ys.reduce((a, b) => (a > b ? a : b)); + if (note.hasStem() && stemDirection == Stem.DOWN) { + dot_y = stem_ext.topY - StringNumber.metrics.stemPadding; + } + dot_y += this.radius + StringNumber.metrics.verticalPadding + this.text_line * Tables.STAVE_LINE_DISTANCE; + } + break; + case Modifier.Position.LEFT: + dot_x -= this.radius / 2 + StringNumber.metrics.leftPadding; + break; + case Modifier.Position.RIGHT: + dot_x += this.radius / 2 + StringNumber.metrics.rightPadding; + break; + default: + throw new RuntimeError('InvalidPosition', `The position ${this.position} is invalid`); + } + ctx.save(); + if (this.drawCircle) { + ctx.beginPath(); + ctx.arc(dot_x, dot_y, this.radius, 0, Math.PI * 2, false); + ctx.setLineWidth(1.5); + ctx.stroke(); + } + ctx.setFont(this.textFont); + const x = dot_x - ctx.measureText(this.string_number).width / 2; + ctx.fillText('' + this.string_number, x, dot_y + 4.5); + const lastNote = this.last_note; + if (isStemmableNote(lastNote)) { + const end = lastNote.getStemX() - note.getX() + 5; + ctx.setStrokeStyle('#000000'); + ctx.setLineCap('round'); + ctx.setLineWidth(0.6); + if (this.dashed) { + Renderer.drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 3]); + } + else { + Renderer.drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 0]); + } + let len; + let pattern; + switch (this.leg) { + case Renderer.LineEndType.UP: + len = -10; + pattern = this.dashed ? [3, 3] : [3, 0]; + Renderer.drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern); + break; + case Renderer.LineEndType.DOWN: + len = 10; + pattern = this.dashed ? [3, 3] : [3, 0]; + Renderer.drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern); + break; + default: + break; + } + } + ctx.restore(); + } +} +StringNumber.TEXT_FONT = { + family: Font.SANS_SERIF, + size: Font.SIZE, + weight: FontWeight.BOLD, + style: FontStyle.NORMAL, +}; diff --git a/build/esm/src/strokes.js b/build/esm/src/strokes.js new file mode 100644 index 0000000000..a8cb374b2f --- /dev/null +++ b/build/esm/src/strokes.js @@ -0,0 +1,200 @@ +import { Font, FontStyle, FontWeight } from './font.js'; +import { Glyph } from './glyph.js'; +import { Modifier } from './modifier.js'; +import { isNote, isStaveNote, isTabNote } from './typeguard.js'; +import { RuntimeError } from './util.js'; +export class Stroke extends Modifier { + constructor(type, options) { + super(); + this.options = Object.assign({ all_voices: true }, options); + this.all_voices = this.options.all_voices; + this.type = type; + this.position = Modifier.Position.LEFT; + this.render_options = { + font_scale: 38, + }; + this.resetFont(); + this.setXShift(0); + this.setWidth(10); + } + static get CATEGORY() { + return "Stroke"; + } + static format(strokes, state) { + const left_shift = state.left_shift; + const stroke_spacing = 0; + if (!strokes || strokes.length === 0) + return false; + const strokeList = strokes.map((stroke) => { + const note = stroke.getNote(); + const index = stroke.checkIndex(); + if (isStaveNote(note)) { + const { line } = note.getKeyProps()[index]; + const shift = note.getLeftDisplacedHeadPx(); + return { line, shift, stroke }; + } + else if (isTabNote(note)) { + const { str: string } = note.getPositions()[index]; + return { line: string, shift: 0, stroke }; + } + else { + throw new RuntimeError('Internal', 'Unexpected instance.'); + } + }); + const strokeShift = left_shift; + const xShift = strokeList.reduce((xShift, { stroke, shift }) => { + stroke.setXShift(strokeShift + shift); + return Math.max(stroke.getWidth() + stroke_spacing, xShift); + }, 0); + state.left_shift += xShift; + return true; + } + getPosition() { + return this.position; + } + addEndNote(note) { + this.note_end = note; + return this; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const start = note.getModifierStartXY(this.position, this.index); + let ys = note.getYs(); + let topY = start.y; + let botY = start.y; + const x = start.x - 5; + const line_space = note.checkStave().getSpacingBetweenLines(); + const notes = this.checkModifierContext().getMembers(note.getCategory()); + for (let i = 0; i < notes.length; i++) { + const note = notes[i]; + if (isNote(note)) { + ys = note.getYs(); + for (let n = 0; n < ys.length; n++) { + if (this.note === notes[i] || this.all_voices) { + topY = Math.min(topY, ys[n]); + botY = Math.max(botY, ys[n]); + } + } + } + } + let arrow = ''; + let arrow_shift_x = 0; + let arrow_y = 0; + let text_shift_x = 0; + let text_y = 0; + switch (this.type) { + case Stroke.Type.BRUSH_DOWN: + arrow = 'arrowheadBlackUp'; + arrow_shift_x = -3; + arrow_y = topY - line_space / 2 + 10; + botY += line_space / 2; + break; + case Stroke.Type.BRUSH_UP: + arrow = 'arrowheadBlackDown'; + arrow_shift_x = 0.5; + arrow_y = botY + line_space / 2; + topY -= line_space / 2; + break; + case Stroke.Type.ROLL_DOWN: + case Stroke.Type.RASQUEDO_DOWN: + arrow = 'arrowheadBlackUp'; + arrow_shift_x = -3; + text_shift_x = this.x_shift + arrow_shift_x - 2; + if (isStaveNote(note)) { + topY += 1.5 * line_space; + if ((botY - topY) % 2 !== 0) { + botY += 0.5 * line_space; + } + else { + botY += line_space; + } + arrow_y = topY - line_space; + text_y = botY + line_space + 2; + } + else { + topY += 1.5 * line_space; + botY += line_space; + arrow_y = topY - 0.75 * line_space; + text_y = botY + 0.25 * line_space; + } + break; + case Stroke.Type.ROLL_UP: + case Stroke.Type.RASQUEDO_UP: + arrow = 'arrowheadBlackDown'; + arrow_shift_x = -4; + text_shift_x = this.x_shift + arrow_shift_x - 1; + if (isStaveNote(note)) { + arrow_y = line_space / 2; + topY += 0.5 * line_space; + if ((botY - topY) % 2 === 0) { + botY += line_space / 2; + } + arrow_y = botY + 0.5 * line_space; + text_y = topY - 1.25 * line_space; + } + else { + topY += 0.25 * line_space; + botY += 0.5 * line_space; + arrow_y = botY + 0.25 * line_space; + text_y = topY - line_space; + } + break; + case Stroke.Type.ARPEGGIO_DIRECTIONLESS: + topY += 0.5 * line_space; + botY += line_space; + break; + default: + throw new RuntimeError('InvalidType', `The stroke type ${this.type} does not exist`); + } + let strokeLine = 'straight'; + if (this.type === Stroke.Type.BRUSH_DOWN || this.type === Stroke.Type.BRUSH_UP) { + ctx.fillRect(x + this.x_shift, topY, 1, botY - topY); + } + else { + strokeLine = 'wiggly'; + if (isStaveNote(note)) { + for (let i = topY; i <= botY; i += line_space) { + Glyph.renderGlyph(ctx, x + this.x_shift - 4, i, this.render_options.font_scale, 'vexWiggleArpeggioUp'); + } + } + else { + let i; + for (i = topY; i <= botY; i += 10) { + Glyph.renderGlyph(ctx, x + this.x_shift - 4, i, this.render_options.font_scale, 'vexWiggleArpeggioUp'); + } + if (this.type === Stroke.Type.RASQUEDO_DOWN) { + text_y = i + 0.25 * line_space; + } + } + } + if (this.type === Stroke.Type.ARPEGGIO_DIRECTIONLESS) { + return; + } + Glyph.renderGlyph(ctx, x + this.x_shift + arrow_shift_x, arrow_y, this.render_options.font_scale, arrow, { + category: `stroke.${arrow}.${strokeLine}`, + }); + if (this.type === Stroke.Type.RASQUEDO_DOWN || this.type === Stroke.Type.RASQUEDO_UP) { + ctx.save(); + ctx.setFont(this.textFont); + ctx.fillText('R', x + text_shift_x, text_y); + ctx.restore(); + } + } +} +Stroke.Type = { + BRUSH_DOWN: 1, + BRUSH_UP: 2, + ROLL_DOWN: 3, + ROLL_UP: 4, + RASQUEDO_DOWN: 5, + RASQUEDO_UP: 6, + ARPEGGIO_DIRECTIONLESS: 7, +}; +Stroke.TEXT_FONT = { + family: Font.SERIF, + size: Font.SIZE, + weight: FontWeight.BOLD, + style: FontStyle.ITALIC, +}; diff --git a/build/esm/src/svgcontext.js b/build/esm/src/svgcontext.js new file mode 100644 index 0000000000..55d2f09b85 --- /dev/null +++ b/build/esm/src/svgcontext.js @@ -0,0 +1,417 @@ +import { Font, FontStyle, FontWeight } from './font.js'; +import { RenderContext } from './rendercontext.js'; +import { normalizeAngle, prefix, RuntimeError } from './util.js'; +const ATTRIBUTES_TO_IGNORE = { + path: { + x: true, + y: true, + width: true, + height: true, + 'font-family': true, + 'font-weight': true, + 'font-style': true, + 'font-size': true, + }, + rect: { + 'font-family': true, + 'font-weight': true, + 'font-style': true, + 'font-size': true, + }, + text: { + width: true, + height: true, + }, +}; +const SVG_NS = 'http://www.w3.org/2000/svg'; +const TWO_PI = 2 * Math.PI; +class MeasureTextCache { + constructor() { + this.cache = {}; + } + lookup(text, svg, attributes) { + let entries = this.cache[text]; + if (entries === undefined) { + entries = {}; + this.cache[text] = entries; + } + const family = attributes['font-family']; + const size = attributes['font-size']; + const weight = attributes['font-weight']; + const style = attributes['font-style']; + const key = `${family}%${size}%${weight}%${style}`; + let entry = entries[key]; + if (entry === undefined) { + entry = this.measureImpl(text, svg, attributes); + entries[key] = entry; + } + return entry; + } + measureImpl(text, svg, attributes) { + let txt = this.txt; + if (!txt) { + txt = document.createElementNS(SVG_NS, 'text'); + this.txt = txt; + } + txt.textContent = text; + txt.setAttributeNS(null, 'font-family', attributes['font-family']); + txt.setAttributeNS(null, 'font-size', attributes['font-size']); + txt.setAttributeNS(null, 'font-style', attributes['font-style']); + txt.setAttributeNS(null, 'font-weight', attributes['font-weight']); + svg.appendChild(txt); + const bbox = txt.getBBox(); + svg.removeChild(txt); + return { x: bbox.x, y: bbox.y, width: bbox.width, height: bbox.height }; + } +} +export class SVGContext extends RenderContext { + constructor(element) { + super(); + this.width = 0; + this.height = 0; + this.backgroundFillStyle = 'white'; + this.fontCSSString = ''; + this.element = element; + const svg = this.create('svg'); + this.element.appendChild(svg); + this.svg = svg; + this.parent = this.svg; + this.groups = [this.svg]; + this.path = ''; + this.pen = { x: NaN, y: NaN }; + this.lineWidth = 1.0; + const defaultFontAttributes = { + 'font-family': Font.SANS_SERIF, + 'font-size': Font.SIZE + 'pt', + 'font-weight': FontWeight.NORMAL, + 'font-style': FontStyle.NORMAL, + }; + this.state = Object.assign({ scale: { x: 1, y: 1 } }, defaultFontAttributes); + this.attributes = Object.assign({ 'stroke-width': 0.3, 'stroke-dasharray': 'none', fill: 'black', stroke: 'black' }, defaultFontAttributes); + this.shadow_attributes = { + width: 0, + color: 'black', + }; + this.state_stack = []; + } + create(svgElementType) { + return document.createElementNS(SVG_NS, svgElementType); + } + openGroup(cls, id, attrs) { + const group = this.create('g'); + this.groups.push(group); + this.parent.appendChild(group); + this.parent = group; + if (cls) + group.setAttribute('class', prefix(cls)); + if (id) + group.setAttribute('id', prefix(id)); + if (attrs && attrs.pointerBBox) { + group.setAttribute('pointer-events', 'bounding-box'); + } + return group; + } + closeGroup() { + this.groups.pop(); + this.parent = this.groups[this.groups.length - 1]; + } + add(elem) { + this.parent.appendChild(elem); + } + setFillStyle(style) { + this.attributes.fill = style; + return this; + } + setBackgroundFillStyle(style) { + this.backgroundFillStyle = style; + return this; + } + setStrokeStyle(style) { + this.attributes.stroke = style; + return this; + } + setShadowColor(color) { + this.shadow_attributes.color = color; + return this; + } + setShadowBlur(blur) { + this.shadow_attributes.width = blur; + return this; + } + setLineWidth(width) { + this.attributes['stroke-width'] = width; + this.lineWidth = width; + return this; + } + setLineDash(lineDash) { + if (Object.prototype.toString.call(lineDash) === '[object Array]') { + this.attributes['stroke-dasharray'] = lineDash.join(','); + return this; + } + else { + throw new RuntimeError('ArgumentError', 'lineDash must be an array of integers.'); + } + } + setLineCap(capType) { + this.attributes['stroke-linecap'] = capType; + return this; + } + resize(width, height) { + this.width = width; + this.height = height; + this.element.style.width = width.toString(); + this.svg.style.width = width.toString(); + this.svg.style.height = height.toString(); + const attributes = { + width, + height, + }; + this.applyAttributes(this.svg, attributes); + this.scale(this.state.scale.x, this.state.scale.y); + return this; + } + scale(x, y) { + this.state.scale = { x, y }; + const visibleWidth = this.width / x; + const visibleHeight = this.height / y; + this.setViewBox(0, 0, visibleWidth, visibleHeight); + return this; + } + setViewBox(viewBox_or_minX, minY, width, height) { + if (typeof viewBox_or_minX === 'string') { + this.svg.setAttribute('viewBox', viewBox_or_minX); + } + else { + const viewBoxString = viewBox_or_minX + ' ' + minY + ' ' + width + ' ' + height; + this.svg.setAttribute('viewBox', viewBoxString); + } + } + applyAttributes(element, attributes) { + const attrNamesToIgnore = ATTRIBUTES_TO_IGNORE[element.nodeName]; + for (const attrName in attributes) { + if (attrNamesToIgnore && attrNamesToIgnore[attrName]) { + continue; + } + element.setAttributeNS(null, attrName, attributes[attrName]); + } + return element; + } + clear() { + while (this.svg.lastChild) { + this.svg.removeChild(this.svg.lastChild); + } + this.scale(this.state.scale.x, this.state.scale.y); + } + rect(x, y, width, height, attributes) { + if (height < 0) { + y += height; + height *= -1; + } + const rectangle = this.create('rect'); + attributes = attributes !== null && attributes !== void 0 ? attributes : { fill: 'none', 'stroke-width': this.lineWidth, stroke: 'black' }; + this.applyAttributes(rectangle, Object.assign({ x, y, width, height }, attributes)); + this.add(rectangle); + return this; + } + fillRect(x, y, width, height) { + const attributes = { fill: this.attributes.fill }; + this.rect(x, y, width, height, attributes); + return this; + } + clearRect(x, y, width, height) { + this.rect(x, y, width, height, { 'stroke-width': 0, fill: this.backgroundFillStyle }); + return this; + } + beginPath() { + this.path = ''; + this.pen.x = NaN; + this.pen.y = NaN; + return this; + } + moveTo(x, y) { + this.path += 'M' + x + ' ' + y; + this.pen.x = x; + this.pen.y = y; + return this; + } + lineTo(x, y) { + this.path += 'L' + x + ' ' + y; + this.pen.x = x; + this.pen.y = y; + return this; + } + bezierCurveTo(x1, y1, x2, y2, x, y) { + this.path += 'C' + x1 + ' ' + y1 + ',' + x2 + ' ' + y2 + ',' + x + ' ' + y; + this.pen.x = x; + this.pen.y = y; + return this; + } + quadraticCurveTo(x1, y1, x, y) { + this.path += 'Q' + x1 + ' ' + y1 + ',' + x + ' ' + y; + this.pen.x = x; + this.pen.y = y; + return this; + } + arc(x, y, radius, startAngle, endAngle, counterclockwise) { + const x0 = x + radius * Math.cos(startAngle); + const y0 = y + radius * Math.sin(startAngle); + const tmpStartTest = normalizeAngle(startAngle); + const tmpEndTest = normalizeAngle(endAngle); + if ((!counterclockwise && endAngle - startAngle >= TWO_PI) || + (counterclockwise && startAngle - endAngle >= TWO_PI) || + tmpStartTest === tmpEndTest) { + const x1 = x + radius * Math.cos(startAngle + Math.PI); + const y1 = y + radius * Math.sin(startAngle + Math.PI); + this.path += `M${x0} ${y0} A${radius} ${radius} 0 0 0 ${x1} ${y1} `; + this.path += `A${radius} ${radius} 0 0 0 ${x0} ${y0}`; + this.pen.x = x0; + this.pen.y = y0; + } + else { + const x1 = x + radius * Math.cos(endAngle); + const y1 = y + radius * Math.sin(endAngle); + startAngle = tmpStartTest; + endAngle = tmpEndTest; + let large; + if (Math.abs(endAngle - startAngle) < Math.PI) { + large = counterclockwise; + } + else { + large = !counterclockwise; + } + if (startAngle > endAngle) { + large = !large; + } + const sweep = !counterclockwise; + this.path += `M${x0} ${y0} A${radius} ${radius} 0 ${+large} ${+sweep} ${x1} ${y1}`; + this.pen.x = x1; + this.pen.y = y1; + } + return this; + } + closePath() { + this.path += 'Z'; + return this; + } + getShadowStyle() { + const sa = this.shadow_attributes; + return `filter: drop-shadow(0 0 ${sa.width / 1.5}px ${sa.color})`; + } + fill(attributes) { + const path = this.create('path'); + if (typeof attributes === 'undefined') { + attributes = Object.assign(Object.assign({}, this.attributes), { stroke: 'none' }); + } + attributes.d = this.path; + if (this.shadow_attributes.width > 0) { + attributes.style = this.getShadowStyle(); + } + this.applyAttributes(path, attributes); + this.add(path); + return this; + } + stroke() { + const path = this.create('path'); + const attributes = Object.assign(Object.assign({}, this.attributes), { fill: 'none', 'stroke-width': this.lineWidth, d: this.path }); + if (this.shadow_attributes.width > 0) { + attributes.style = this.getShadowStyle(); + } + this.applyAttributes(path, attributes); + this.add(path); + return this; + } + measureText(text) { + return SVGContext.measureTextCache.lookup(text, this.svg, this.attributes); + } + fillText(text, x, y) { + if (!text || text.length <= 0) { + return this; + } + const attributes = Object.assign(Object.assign({}, this.attributes), { stroke: 'none', x, + y }); + const txt = this.create('text'); + txt.textContent = text; + this.applyAttributes(txt, attributes); + this.add(txt); + return this; + } + save() { + this.state_stack.push({ + state: { + 'font-family': this.state['font-family'], + 'font-weight': this.state['font-weight'], + 'font-style': this.state['font-style'], + 'font-size': this.state['font-size'], + scale: this.state.scale, + }, + attributes: { + 'font-family': this.attributes['font-family'], + 'font-weight': this.attributes['font-weight'], + 'font-style': this.attributes['font-style'], + 'font-size': this.attributes['font-size'], + fill: this.attributes.fill, + stroke: this.attributes.stroke, + 'stroke-width': this.attributes['stroke-width'], + 'stroke-dasharray': this.attributes['stroke-dasharray'], + }, + shadow_attributes: { + width: this.shadow_attributes.width, + color: this.shadow_attributes.color, + }, + lineWidth: this.lineWidth, + }); + return this; + } + restore() { + const savedState = this.state_stack.pop(); + if (savedState) { + const state = savedState; + this.state['font-family'] = state.state['font-family']; + this.state['font-weight'] = state.state['font-weight']; + this.state['font-style'] = state.state['font-style']; + this.state['font-size'] = state.state['font-size']; + this.state.scale = state.state.scale; + this.attributes['font-family'] = state.attributes['font-family']; + this.attributes['font-weight'] = state.attributes['font-weight']; + this.attributes['font-style'] = state.attributes['font-style']; + this.attributes['font-size'] = state.attributes['font-size']; + this.attributes.fill = state.attributes.fill; + this.attributes.stroke = state.attributes.stroke; + this.attributes['stroke-width'] = state.attributes['stroke-width']; + this.attributes['stroke-dasharray'] = state.attributes['stroke-dasharray']; + this.shadow_attributes.width = state.shadow_attributes.width; + this.shadow_attributes.color = state.shadow_attributes.color; + this.lineWidth = state.lineWidth; + } + return this; + } + set fillStyle(style) { + this.setFillStyle(style); + } + get fillStyle() { + return this.attributes.fill; + } + set strokeStyle(style) { + this.setStrokeStyle(style); + } + get strokeStyle() { + return this.attributes.stroke; + } + setFont(f, size, weight, style) { + const fontInfo = Font.validate(f, size, weight, style); + this.fontCSSString = Font.toCSSString(fontInfo); + const fontAttributes = { + 'font-family': fontInfo.family, + 'font-size': fontInfo.size, + 'font-weight': fontInfo.weight, + 'font-style': fontInfo.style, + }; + this.attributes = Object.assign(Object.assign({}, this.attributes), fontAttributes); + this.state = Object.assign(Object.assign({}, this.state), fontAttributes); + return this; + } + getFont() { + return this.fontCSSString; + } +} +SVGContext.measureTextCache = new MeasureTextCache(); diff --git a/build/esm/src/system.js b/build/esm/src/system.js new file mode 100644 index 0000000000..6606686431 --- /dev/null +++ b/build/esm/src/system.js @@ -0,0 +1,113 @@ +import { BoundingBox } from './boundingbox.js'; +import { Element } from './element.js'; +import { Formatter } from './formatter.js'; +import { Note } from './note.js'; +import { Stave } from './stave.js'; +import { RuntimeError } from './util.js'; +export class System extends Element { + constructor(params = {}) { + super(); + this.setOptions(params); + this.parts = []; + } + static get CATEGORY() { + return "System"; + } + setOptions(options = {}) { + if (!options.factory) { + throw new RuntimeError('NoFactory', 'System.setOptions(options) requires a factory.'); + } + this.factory = options.factory; + this.options = Object.assign(Object.assign({ factory: this.factory, x: 10, y: 10, width: 500, spaceBetweenStaves: 12, autoWidth: false, noJustification: false, debugFormatter: false, formatIterations: 0, noPadding: false }, options), { details: Object.assign({ alpha: 0.5 }, options.details), formatOptions: Object.assign({}, options.formatOptions) }); + if (this.options.noJustification === false && typeof options.width === 'undefined') { + this.options.autoWidth = true; + } + } + setContext(context) { + super.setContext(context); + this.factory.setContext(context); + return this; + } + addConnector(type = 'double') { + this.connector = this.factory.StaveConnector({ + top_stave: this.parts[0].stave, + bottom_stave: this.parts[this.parts.length - 1].stave, + type, + }); + return this.connector; + } + addStave(params) { + var _a; + const staveOptions = Object.assign({ left_bar: false }, params.options); + const stave = (_a = params.stave) !== null && _a !== void 0 ? _a : this.factory.Stave({ x: this.options.x, y: this.options.y, width: this.options.width, options: staveOptions }); + const p = Object.assign(Object.assign({ stave, spaceAbove: 0, spaceBelow: 0, debugNoteMetrics: false, noJustification: false }, params), { options: staveOptions }); + const ctx = this.getContext(); + p.voices.forEach((voice) => voice + .setContext(ctx) + .setStave(stave) + .getTickables() + .forEach((tickable) => tickable.setStave(stave))); + this.parts.push(p); + return stave; + } + format() { + const options_details = this.options.details; + let justifyWidth = 0; + const formatter = new Formatter(options_details); + this.formatter = formatter; + let y = this.options.y; + let startX = 0; + let allVoices = []; + let allStaves = []; + const debugNoteMetricsYs = []; + this.parts.forEach((part) => { + y = y + part.stave.space(part.spaceAbove); + part.stave.setY(y); + formatter.joinVoices(part.voices); + y = y + part.stave.space(part.spaceBelow); + y = y + part.stave.space(this.options.spaceBetweenStaves); + if (part.debugNoteMetrics) { + debugNoteMetricsYs.push({ y, voice: part.voices[0] }); + y += 15; + } + allVoices = allVoices.concat(part.voices); + allStaves = allStaves.concat(part.stave); + startX = Math.max(startX, part.stave.getNoteStartX()); + }); + this.parts.forEach((part) => part.stave.setNoteStartX(startX)); + if (this.options.autoWidth) { + justifyWidth = formatter.preCalculateMinTotalWidth(allVoices); + this.parts.forEach((part) => { + part.stave.setWidth(justifyWidth + Stave.rightPadding + (startX - this.options.x)); + }); + } + else { + justifyWidth = this.options.noPadding + ? this.options.width - (startX - this.options.x) + : this.options.width - (startX - this.options.x) - Stave.defaultPadding; + } + formatter.format(allVoices, this.options.noJustification ? 0 : justifyWidth, this.options.formatOptions); + formatter.postFormat(); + for (let i = 0; i < this.options.formatIterations; i++) { + formatter.tune(options_details); + } + this.startX = startX; + this.debugNoteMetricsYs = debugNoteMetricsYs; + this.lastY = y; + this.boundingBox = new BoundingBox(this.options.x, this.options.y, this.options.width, this.lastY - this.options.y); + Stave.formatBegModifiers(allStaves); + } + draw() { + const ctx = this.checkContext(); + if (!this.formatter || !this.startX || !this.lastY || !this.debugNoteMetricsYs) { + throw new RuntimeError('NoFormatter', 'format() must be called before draw()'); + } + this.setRendered(); + if (this.options.debugFormatter) { + Formatter.plotDebugging(ctx, this.formatter, this.startX, this.options.y, this.lastY); + } + this.debugNoteMetricsYs.forEach((d) => { + d.voice.getTickables().forEach((tickable) => Note.plotMetrics(ctx, tickable, d.y)); + }); + } +} diff --git a/build/esm/src/tables.js b/build/esm/src/tables.js new file mode 100644 index 0000000000..9272df7362 --- /dev/null +++ b/build/esm/src/tables.js @@ -0,0 +1,1231 @@ +import { Fraction } from './fraction.js'; +import { Glyph } from './glyph.js'; +import { RuntimeError } from './util.js'; +const RESOLUTION = 16384; +const durations = { + '1/2': RESOLUTION * 2, + 1: RESOLUTION / 1, + 2: RESOLUTION / 2, + 4: RESOLUTION / 4, + 8: RESOLUTION / 8, + 16: RESOLUTION / 16, + 32: RESOLUTION / 32, + 64: RESOLUTION / 64, + 128: RESOLUTION / 128, + 256: RESOLUTION / 256, +}; +const durationAliases = { + w: '1', + h: '2', + q: '4', + b: '256', +}; +const keySignatures = { + C: { num: 0 }, + Am: { num: 0 }, + F: { acc: 'b', num: 1 }, + Dm: { acc: 'b', num: 1 }, + Bb: { acc: 'b', num: 2 }, + Gm: { acc: 'b', num: 2 }, + Eb: { acc: 'b', num: 3 }, + Cm: { acc: 'b', num: 3 }, + Ab: { acc: 'b', num: 4 }, + Fm: { acc: 'b', num: 4 }, + Db: { acc: 'b', num: 5 }, + Bbm: { acc: 'b', num: 5 }, + Gb: { acc: 'b', num: 6 }, + Ebm: { acc: 'b', num: 6 }, + Cb: { acc: 'b', num: 7 }, + Abm: { acc: 'b', num: 7 }, + G: { acc: '#', num: 1 }, + Em: { acc: '#', num: 1 }, + D: { acc: '#', num: 2 }, + Bm: { acc: '#', num: 2 }, + A: { acc: '#', num: 3 }, + 'F#m': { acc: '#', num: 3 }, + E: { acc: '#', num: 4 }, + 'C#m': { acc: '#', num: 4 }, + B: { acc: '#', num: 5 }, + 'G#m': { acc: '#', num: 5 }, + 'F#': { acc: '#', num: 6 }, + 'D#m': { acc: '#', num: 6 }, + 'C#': { acc: '#', num: 7 }, + 'A#m': { acc: '#', num: 7 }, +}; +const clefs = { + treble: { line_shift: 0 }, + bass: { line_shift: 6 }, + tenor: { line_shift: 4 }, + alto: { line_shift: 3 }, + soprano: { line_shift: 1 }, + percussion: { line_shift: 0 }, + 'mezzo-soprano': { line_shift: 2 }, + 'baritone-c': { line_shift: 5 }, + 'baritone-f': { line_shift: 5 }, + subbass: { line_shift: 7 }, + french: { line_shift: -1 }, +}; +const notesInfo = { + C: { index: 0, int_val: 0 }, + CN: { index: 0, int_val: 0, accidental: 'n' }, + 'C#': { index: 0, int_val: 1, accidental: '#' }, + 'C##': { index: 0, int_val: 2, accidental: '##' }, + CB: { index: 0, int_val: 11, accidental: 'b' }, + CBB: { index: 0, int_val: 10, accidental: 'bb' }, + D: { index: 1, int_val: 2 }, + DN: { index: 1, int_val: 2, accidental: 'n' }, + 'D#': { index: 1, int_val: 3, accidental: '#' }, + 'D##': { index: 1, int_val: 4, accidental: '##' }, + DB: { index: 1, int_val: 1, accidental: 'b' }, + DBB: { index: 1, int_val: 0, accidental: 'bb' }, + E: { index: 2, int_val: 4 }, + EN: { index: 2, int_val: 4, accidental: 'n' }, + 'E#': { index: 2, int_val: 5, accidental: '#' }, + 'E##': { index: 2, int_val: 6, accidental: '##' }, + EB: { index: 2, int_val: 3, accidental: 'b' }, + EBB: { index: 2, int_val: 2, accidental: 'bb' }, + F: { index: 3, int_val: 5 }, + FN: { index: 3, int_val: 5, accidental: 'n' }, + 'F#': { index: 3, int_val: 6, accidental: '#' }, + 'F##': { index: 3, int_val: 7, accidental: '##' }, + FB: { index: 3, int_val: 4, accidental: 'b' }, + FBB: { index: 3, int_val: 3, accidental: 'bb' }, + G: { index: 4, int_val: 7 }, + GN: { index: 4, int_val: 7, accidental: 'n' }, + 'G#': { index: 4, int_val: 8, accidental: '#' }, + 'G##': { index: 4, int_val: 9, accidental: '##' }, + GB: { index: 4, int_val: 6, accidental: 'b' }, + GBB: { index: 4, int_val: 5, accidental: 'bb' }, + A: { index: 5, int_val: 9 }, + AN: { index: 5, int_val: 9, accidental: 'n' }, + 'A#': { index: 5, int_val: 10, accidental: '#' }, + 'A##': { index: 5, int_val: 11, accidental: '##' }, + AB: { index: 5, int_val: 8, accidental: 'b' }, + ABB: { index: 5, int_val: 7, accidental: 'bb' }, + B: { index: 6, int_val: 11 }, + BN: { index: 6, int_val: 11, accidental: 'n' }, + 'B#': { index: 6, int_val: 12, accidental: '#' }, + 'B##': { index: 6, int_val: 13, accidental: '##' }, + BB: { index: 6, int_val: 10, accidental: 'b' }, + BBB: { index: 6, int_val: 9, accidental: 'bb' }, + R: { index: 6, rest: true }, + X: { + index: 6, + accidental: '', + octave: 4, + code: 'noteheadXBlack', + shift_right: 5.5, + }, +}; +const validNoteTypes = { + n: { name: 'note' }, + r: { name: 'rest' }, + h: { name: 'harmonic' }, + m: { name: 'muted' }, + s: { name: 'slash' }, + g: { name: 'ghost' }, + d: { name: 'diamond' }, + x: { name: 'x' }, + ci: { name: 'circled' }, + cx: { name: 'circle x' }, + sf: { name: 'slashed' }, + sb: { name: 'slashed backward' }, + sq: { name: 'square' }, + tu: { name: 'triangle up' }, + td: { name: 'triangle down' }, +}; +const accidentals = { + '#': { code: 'accidentalSharp', parenRightPaddingAdjustment: -1 }, + '##': { code: 'accidentalDoubleSharp', parenRightPaddingAdjustment: -1 }, + b: { code: 'accidentalFlat', parenRightPaddingAdjustment: -2 }, + bb: { code: 'accidentalDoubleFlat', parenRightPaddingAdjustment: -2 }, + n: { code: 'accidentalNatural', parenRightPaddingAdjustment: -1 }, + '{': { code: 'accidentalParensLeft', parenRightPaddingAdjustment: -1 }, + '}': { code: 'accidentalParensRight', parenRightPaddingAdjustment: -1 }, + db: { code: 'accidentalThreeQuarterTonesFlatZimmermann', parenRightPaddingAdjustment: -1 }, + d: { code: 'accidentalQuarterToneFlatStein', parenRightPaddingAdjustment: 0 }, + '++': { code: 'accidentalThreeQuarterTonesSharpStein', parenRightPaddingAdjustment: -1 }, + '+': { code: 'accidentalQuarterToneSharpStein', parenRightPaddingAdjustment: -1 }, + '+-': { code: 'accidentalKucukMucennebSharp', parenRightPaddingAdjustment: -1 }, + bs: { code: 'accidentalBakiyeFlat', parenRightPaddingAdjustment: -1 }, + bss: { code: 'accidentalBuyukMucennebFlat', parenRightPaddingAdjustment: -1 }, + o: { code: 'accidentalSori', parenRightPaddingAdjustment: -1 }, + k: { code: 'accidentalKoron', parenRightPaddingAdjustment: -1 }, + bbs: { code: 'vexAccidentalMicrotonal1', parenRightPaddingAdjustment: -1 }, + '++-': { code: 'vexAccidentalMicrotonal2', parenRightPaddingAdjustment: -1 }, + ashs: { code: 'vexAccidentalMicrotonal3', parenRightPaddingAdjustment: -1 }, + afhf: { code: 'vexAccidentalMicrotonal4', parenRightPaddingAdjustment: -1 }, + accSagittal5v7KleismaUp: { code: 'accSagittal5v7KleismaUp', parenRightPaddingAdjustment: -1 }, + accSagittal5v7KleismaDown: { code: 'accSagittal5v7KleismaDown', parenRightPaddingAdjustment: -1 }, + accSagittal5CommaUp: { code: 'accSagittal5CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal5CommaDown: { code: 'accSagittal5CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal7CommaUp: { code: 'accSagittal7CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal7CommaDown: { code: 'accSagittal7CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal25SmallDiesisUp: { code: 'accSagittal25SmallDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal25SmallDiesisDown: { code: 'accSagittal25SmallDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal35MediumDiesisUp: { code: 'accSagittal35MediumDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal35MediumDiesisDown: { code: 'accSagittal35MediumDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal11MediumDiesisUp: { code: 'accSagittal11MediumDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal11MediumDiesisDown: { code: 'accSagittal11MediumDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal11LargeDiesisUp: { code: 'accSagittal11LargeDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal11LargeDiesisDown: { code: 'accSagittal11LargeDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal35LargeDiesisUp: { code: 'accSagittal35LargeDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal35LargeDiesisDown: { code: 'accSagittal35LargeDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp25SDown: { code: 'accSagittalSharp25SDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat25SUp: { code: 'accSagittalFlat25SUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7CDown: { code: 'accSagittalSharp7CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7CUp: { code: 'accSagittalFlat7CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5CDown: { code: 'accSagittalSharp5CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5CUp: { code: 'accSagittalFlat5CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v7kDown: { code: 'accSagittalSharp5v7kDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v7kUp: { code: 'accSagittalFlat5v7kUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp: { code: 'accSagittalSharp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat: { code: 'accSagittalFlat', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v7kUp: { code: 'accSagittalSharp5v7kUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v7kDown: { code: 'accSagittalFlat5v7kDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5CUp: { code: 'accSagittalSharp5CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5CDown: { code: 'accSagittalFlat5CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7CUp: { code: 'accSagittalSharp7CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7CDown: { code: 'accSagittalFlat7CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp25SUp: { code: 'accSagittalSharp25SUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat25SDown: { code: 'accSagittalFlat25SDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp35MUp: { code: 'accSagittalSharp35MUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat35MDown: { code: 'accSagittalFlat35MDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp11MUp: { code: 'accSagittalSharp11MUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat11MDown: { code: 'accSagittalFlat11MDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp11LUp: { code: 'accSagittalSharp11LUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat11LDown: { code: 'accSagittalFlat11LDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp35LUp: { code: 'accSagittalSharp35LUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat35LDown: { code: 'accSagittalFlat35LDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp25SDown: { code: 'accSagittalDoubleSharp25SDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat25SUp: { code: 'accSagittalDoubleFlat25SUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp7CDown: { code: 'accSagittalDoubleSharp7CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat7CUp: { code: 'accSagittalDoubleFlat7CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp5CDown: { code: 'accSagittalDoubleSharp5CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat5CUp: { code: 'accSagittalDoubleFlat5CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp5v7kDown: { code: 'accSagittalDoubleSharp5v7kDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat5v7kUp: { code: 'accSagittalDoubleFlat5v7kUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp: { code: 'accSagittalDoubleSharp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat: { code: 'accSagittalDoubleFlat', parenRightPaddingAdjustment: -1 }, + accSagittal7v11KleismaUp: { code: 'accSagittal7v11KleismaUp', parenRightPaddingAdjustment: -1 }, + accSagittal7v11KleismaDown: { code: 'accSagittal7v11KleismaDown', parenRightPaddingAdjustment: -1 }, + accSagittal17CommaUp: { code: 'accSagittal17CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal17CommaDown: { code: 'accSagittal17CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal55CommaUp: { code: 'accSagittal55CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal55CommaDown: { code: 'accSagittal55CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal7v11CommaUp: { code: 'accSagittal7v11CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal7v11CommaDown: { code: 'accSagittal7v11CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal5v11SmallDiesisUp: { code: 'accSagittal5v11SmallDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal5v11SmallDiesisDown: { code: 'accSagittal5v11SmallDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v11SDown: { code: 'accSagittalSharp5v11SDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v11SUp: { code: 'accSagittalFlat5v11SUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7v11CDown: { code: 'accSagittalSharp7v11CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7v11CUp: { code: 'accSagittalFlat7v11CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp55CDown: { code: 'accSagittalSharp55CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat55CUp: { code: 'accSagittalFlat55CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp17CDown: { code: 'accSagittalSharp17CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat17CUp: { code: 'accSagittalFlat17CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7v11kDown: { code: 'accSagittalSharp7v11kDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7v11kUp: { code: 'accSagittalFlat7v11kUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7v11kUp: { code: 'accSagittalSharp7v11kUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7v11kDown: { code: 'accSagittalFlat7v11kDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp17CUp: { code: 'accSagittalSharp17CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat17CDown: { code: 'accSagittalFlat17CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp55CUp: { code: 'accSagittalSharp55CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat55CDown: { code: 'accSagittalFlat55CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7v11CUp: { code: 'accSagittalSharp7v11CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7v11CDown: { code: 'accSagittalFlat7v11CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v11SUp: { code: 'accSagittalSharp5v11SUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v11SDown: { code: 'accSagittalFlat5v11SDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp5v11SDown: { code: 'accSagittalDoubleSharp5v11SDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat5v11SUp: { code: 'accSagittalDoubleFlat5v11SUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp7v11CDown: { code: 'accSagittalDoubleSharp7v11CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat7v11CUp: { code: 'accSagittalDoubleFlat7v11CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp55CDown: { code: 'accSagittalDoubleSharp55CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat55CUp: { code: 'accSagittalDoubleFlat55CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp17CDown: { code: 'accSagittalDoubleSharp17CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat17CUp: { code: 'accSagittalDoubleFlat17CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp7v11kDown: { code: 'accSagittalDoubleSharp7v11kDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat7v11kUp: { code: 'accSagittalDoubleFlat7v11kUp', parenRightPaddingAdjustment: -1 }, + accSagittal23CommaUp: { code: 'accSagittal23CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal23CommaDown: { code: 'accSagittal23CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal5v19CommaUp: { code: 'accSagittal5v19CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal5v19CommaDown: { code: 'accSagittal5v19CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal5v23SmallDiesisUp: { code: 'accSagittal5v23SmallDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal5v23SmallDiesisDown: { code: 'accSagittal5v23SmallDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v23SDown: { code: 'accSagittalSharp5v23SDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v23SUp: { code: 'accSagittalFlat5v23SUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v19CDown: { code: 'accSagittalSharp5v19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v19CUp: { code: 'accSagittalFlat5v19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp23CDown: { code: 'accSagittalSharp23CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat23CUp: { code: 'accSagittalFlat23CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp23CUp: { code: 'accSagittalSharp23CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat23CDown: { code: 'accSagittalFlat23CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v19CUp: { code: 'accSagittalSharp5v19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v19CDown: { code: 'accSagittalFlat5v19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v23SUp: { code: 'accSagittalSharp5v23SUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v23SDown: { code: 'accSagittalFlat5v23SDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp5v23SDown: { code: 'accSagittalDoubleSharp5v23SDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat5v23SUp: { code: 'accSagittalDoubleFlat5v23SUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp5v19CDown: { code: 'accSagittalDoubleSharp5v19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat5v19CUp: { code: 'accSagittalDoubleFlat5v19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp23CDown: { code: 'accSagittalDoubleSharp23CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat23CUp: { code: 'accSagittalDoubleFlat23CUp', parenRightPaddingAdjustment: -1 }, + accSagittal19SchismaUp: { code: 'accSagittal19SchismaUp', parenRightPaddingAdjustment: -1 }, + accSagittal19SchismaDown: { code: 'accSagittal19SchismaDown', parenRightPaddingAdjustment: -1 }, + accSagittal17KleismaUp: { code: 'accSagittal17KleismaUp', parenRightPaddingAdjustment: -1 }, + accSagittal17KleismaDown: { code: 'accSagittal17KleismaDown', parenRightPaddingAdjustment: -1 }, + accSagittal143CommaUp: { code: 'accSagittal143CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal143CommaDown: { code: 'accSagittal143CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal11v49CommaUp: { code: 'accSagittal11v49CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal11v49CommaDown: { code: 'accSagittal11v49CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal19CommaUp: { code: 'accSagittal19CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal19CommaDown: { code: 'accSagittal19CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal7v19CommaUp: { code: 'accSagittal7v19CommaUp', parenRightPaddingAdjustment: -1 }, + accSagittal7v19CommaDown: { code: 'accSagittal7v19CommaDown', parenRightPaddingAdjustment: -1 }, + accSagittal49SmallDiesisUp: { code: 'accSagittal49SmallDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal49SmallDiesisDown: { code: 'accSagittal49SmallDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal23SmallDiesisUp: { code: 'accSagittal23SmallDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal23SmallDiesisDown: { code: 'accSagittal23SmallDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal5v13MediumDiesisUp: { code: 'accSagittal5v13MediumDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal5v13MediumDiesisDown: { code: 'accSagittal5v13MediumDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal11v19MediumDiesisUp: { code: 'accSagittal11v19MediumDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal11v19MediumDiesisDown: { code: 'accSagittal11v19MediumDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal49MediumDiesisUp: { code: 'accSagittal49MediumDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal49MediumDiesisDown: { code: 'accSagittal49MediumDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal5v49MediumDiesisUp: { code: 'accSagittal5v49MediumDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal5v49MediumDiesisDown: { code: 'accSagittal5v49MediumDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal49LargeDiesisUp: { code: 'accSagittal49LargeDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal49LargeDiesisDown: { code: 'accSagittal49LargeDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal11v19LargeDiesisUp: { code: 'accSagittal11v19LargeDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal11v19LargeDiesisDown: { code: 'accSagittal11v19LargeDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittal5v13LargeDiesisUp: { code: 'accSagittal5v13LargeDiesisUp', parenRightPaddingAdjustment: -1 }, + accSagittal5v13LargeDiesisDown: { code: 'accSagittal5v13LargeDiesisDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp23SDown: { code: 'accSagittalSharp23SDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat23SUp: { code: 'accSagittalFlat23SUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp49SDown: { code: 'accSagittalSharp49SDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat49SUp: { code: 'accSagittalFlat49SUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7v19CDown: { code: 'accSagittalSharp7v19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7v19CUp: { code: 'accSagittalFlat7v19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp19CDown: { code: 'accSagittalSharp19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat19CUp: { code: 'accSagittalFlat19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp11v49CDown: { code: 'accSagittalSharp11v49CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat11v49CUp: { code: 'accSagittalFlat11v49CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp143CDown: { code: 'accSagittalSharp143CDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat143CUp: { code: 'accSagittalFlat143CUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp17kDown: { code: 'accSagittalSharp17kDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat17kUp: { code: 'accSagittalFlat17kUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp19sDown: { code: 'accSagittalSharp19sDown', parenRightPaddingAdjustment: -1 }, + accSagittalFlat19sUp: { code: 'accSagittalFlat19sUp', parenRightPaddingAdjustment: -1 }, + accSagittalSharp19sUp: { code: 'accSagittalSharp19sUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat19sDown: { code: 'accSagittalFlat19sDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp17kUp: { code: 'accSagittalSharp17kUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat17kDown: { code: 'accSagittalFlat17kDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp143CUp: { code: 'accSagittalSharp143CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat143CDown: { code: 'accSagittalFlat143CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp11v49CUp: { code: 'accSagittalSharp11v49CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat11v49CDown: { code: 'accSagittalFlat11v49CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp19CUp: { code: 'accSagittalSharp19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat19CDown: { code: 'accSagittalFlat19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp7v19CUp: { code: 'accSagittalSharp7v19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat7v19CDown: { code: 'accSagittalFlat7v19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp49SUp: { code: 'accSagittalSharp49SUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat49SDown: { code: 'accSagittalFlat49SDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp23SUp: { code: 'accSagittalSharp23SUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat23SDown: { code: 'accSagittalFlat23SDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v13MUp: { code: 'accSagittalSharp5v13MUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v13MDown: { code: 'accSagittalFlat5v13MDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp11v19MUp: { code: 'accSagittalSharp11v19MUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat11v19MDown: { code: 'accSagittalFlat11v19MDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp49MUp: { code: 'accSagittalSharp49MUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat49MDown: { code: 'accSagittalFlat49MDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v49MUp: { code: 'accSagittalSharp5v49MUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v49MDown: { code: 'accSagittalFlat5v49MDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp49LUp: { code: 'accSagittalSharp49LUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat49LDown: { code: 'accSagittalFlat49LDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp11v19LUp: { code: 'accSagittalSharp11v19LUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat11v19LDown: { code: 'accSagittalFlat11v19LDown', parenRightPaddingAdjustment: -1 }, + accSagittalSharp5v13LUp: { code: 'accSagittalSharp5v13LUp', parenRightPaddingAdjustment: -1 }, + accSagittalFlat5v13LDown: { code: 'accSagittalFlat5v13LDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp23SDown: { code: 'accSagittalDoubleSharp23SDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat23SUp: { code: 'accSagittalDoubleFlat23SUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp49SDown: { code: 'accSagittalDoubleSharp49SDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat49SUp: { code: 'accSagittalDoubleFlat49SUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp7v19CDown: { code: 'accSagittalDoubleSharp7v19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat7v19CUp: { code: 'accSagittalDoubleFlat7v19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp19CDown: { code: 'accSagittalDoubleSharp19CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat19CUp: { code: 'accSagittalDoubleFlat19CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp11v49CDown: { code: 'accSagittalDoubleSharp11v49CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat11v49CUp: { code: 'accSagittalDoubleFlat11v49CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp143CDown: { code: 'accSagittalDoubleSharp143CDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat143CUp: { code: 'accSagittalDoubleFlat143CUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp17kDown: { code: 'accSagittalDoubleSharp17kDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat17kUp: { code: 'accSagittalDoubleFlat17kUp', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleSharp19sDown: { code: 'accSagittalDoubleSharp19sDown', parenRightPaddingAdjustment: -1 }, + accSagittalDoubleFlat19sUp: { code: 'accSagittalDoubleFlat19sUp', parenRightPaddingAdjustment: -1 }, + accSagittalShaftUp: { code: 'accSagittalShaftUp', parenRightPaddingAdjustment: -1 }, + accSagittalShaftDown: { code: 'accSagittalShaftDown', parenRightPaddingAdjustment: -1 }, + accSagittalAcute: { code: 'accSagittalAcute', parenRightPaddingAdjustment: -1 }, + accSagittalGrave: { code: 'accSagittalGrave', parenRightPaddingAdjustment: -1 }, + accSagittal1MinaUp: { code: 'accSagittal1MinaUp', parenRightPaddingAdjustment: -1 }, + accSagittal1MinaDown: { code: 'accSagittal1MinaDown', parenRightPaddingAdjustment: -1 }, + accSagittal2MinasUp: { code: 'accSagittal2MinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal2MinasDown: { code: 'accSagittal2MinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal1TinaUp: { code: 'accSagittal1TinaUp', parenRightPaddingAdjustment: -1 }, + accSagittal1TinaDown: { code: 'accSagittal1TinaDown', parenRightPaddingAdjustment: -1 }, + accSagittal2TinasUp: { code: 'accSagittal2TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal2TinasDown: { code: 'accSagittal2TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal3TinasUp: { code: 'accSagittal3TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal3TinasDown: { code: 'accSagittal3TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal4TinasUp: { code: 'accSagittal4TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal4TinasDown: { code: 'accSagittal4TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal5TinasUp: { code: 'accSagittal5TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal5TinasDown: { code: 'accSagittal5TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal6TinasUp: { code: 'accSagittal6TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal6TinasDown: { code: 'accSagittal6TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal7TinasUp: { code: 'accSagittal7TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal7TinasDown: { code: 'accSagittal7TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal8TinasUp: { code: 'accSagittal8TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal8TinasDown: { code: 'accSagittal8TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittal9TinasUp: { code: 'accSagittal9TinasUp', parenRightPaddingAdjustment: -1 }, + accSagittal9TinasDown: { code: 'accSagittal9TinasDown', parenRightPaddingAdjustment: -1 }, + accSagittalFractionalTinaUp: { code: 'accSagittalFractionalTinaUp', parenRightPaddingAdjustment: -1 }, + accSagittalFractionalTinaDown: { code: 'accSagittalFractionalTinaDown', parenRightPaddingAdjustment: -1 }, + accidentalNarrowReversedFlat: { code: 'accidentalNarrowReversedFlat', parenRightPaddingAdjustment: -1 }, + accidentalNarrowReversedFlatAndFlat: { + code: 'accidentalNarrowReversedFlatAndFlat', + parenRightPaddingAdjustment: -1, + }, + accidentalWilsonPlus: { code: 'accidentalWilsonPlus', parenRightPaddingAdjustment: -1 }, + accidentalWilsonMinus: { code: 'accidentalWilsonMinus', parenRightPaddingAdjustment: -1 }, +}; +const accidentalColumns = { + 1: { + a: [1], + b: [1], + }, + 2: { + a: [1, 2], + }, + 3: { + a: [1, 3, 2], + b: [1, 2, 1], + second_on_bottom: [1, 2, 3], + }, + 4: { + a: [1, 3, 4, 2], + b: [1, 2, 3, 1], + spaced_out_tetrachord: [1, 2, 1, 2], + }, + 5: { + a: [1, 3, 5, 4, 2], + b: [1, 2, 4, 3, 1], + spaced_out_pentachord: [1, 2, 3, 2, 1], + very_spaced_out_pentachord: [1, 2, 1, 2, 1], + }, + 6: { + a: [1, 3, 5, 6, 4, 2], + b: [1, 2, 4, 5, 3, 1], + spaced_out_hexachord: [1, 3, 2, 1, 3, 2], + very_spaced_out_hexachord: [1, 2, 1, 2, 1, 2], + }, +}; +const articulations = { + 'a.': { code: 'augmentationDot', between_lines: true }, + av: { + aboveCode: 'articStaccatissimoAbove', + belowCode: 'articStaccatissimoBelow', + between_lines: true, + }, + 'a>': { + aboveCode: 'articAccentAbove', + belowCode: 'articAccentBelow', + between_lines: true, + }, + 'a-': { + aboveCode: 'articTenutoAbove', + belowCode: 'articTenutoBelow', + between_lines: true, + }, + 'a^': { + aboveCode: 'articMarcatoAbove', + belowCode: 'articMarcatoBelow', + between_lines: false, + }, + 'a+': { code: 'pluckedLeftHandPizzicato', between_lines: false }, + ao: { + aboveCode: 'pluckedSnapPizzicatoAbove', + belowCode: 'pluckedSnapPizzicatoBelow', + between_lines: false, + }, + ah: { code: 'stringsHarmonic', between_lines: false }, + 'a@': { aboveCode: 'fermataAbove', belowCode: 'fermataBelow', between_lines: false }, + 'a@a': { code: 'fermataAbove', between_lines: false }, + 'a@u': { code: 'fermataBelow', between_lines: false }, + 'a@s': { aboveCode: 'fermataShortAbove', belowCode: 'fermataShortBelow', between_lines: false }, + 'a@as': { code: 'fermataShortAbove', between_lines: false }, + 'a@us': { code: 'fermataShortBelow', between_lines: false }, + 'a@l': { aboveCode: 'fermataLongAbove', belowCode: 'fermataLongBelow', between_lines: false }, + 'a@al': { code: 'fermataLongAbove', between_lines: false }, + 'a@ul': { code: 'fermataLongBelow', between_lines: false }, + 'a@vl': { aboveCode: 'fermataVeryLongAbove', belowCode: 'fermataVeryLongBelow', between_lines: false }, + 'a@avl': { code: 'fermataVeryLongAbove', between_lines: false }, + 'a@uvl': { code: 'fermataVeryLongBelow', between_lines: false }, + 'a|': { code: 'stringsUpBow', between_lines: false }, + am: { code: 'stringsDownBow', between_lines: false }, + 'a,': { code: 'pictChokeCymbal', between_lines: false }, +}; +const ornaments = { + mordent: { code: 'ornamentShortTrill' }, + mordent_inverted: { code: 'ornamentMordent' }, + turn: { code: 'ornamentTurn' }, + turn_inverted: { code: 'ornamentTurnSlash' }, + tr: { code: 'ornamentTrill' }, + upprall: { code: 'ornamentPrecompSlideTrillDAnglebert' }, + downprall: { code: 'ornamentPrecompDoubleCadenceUpperPrefix' }, + prallup: { code: 'ornamentPrecompTrillSuffixDandrieu' }, + pralldown: { code: 'ornamentPrecompTrillLowerSuffix' }, + upmordent: { code: 'ornamentPrecompSlideTrillBach' }, + downmordent: { code: 'ornamentPrecompDoubleCadenceUpperPrefixTurn' }, + lineprall: { code: 'ornamentPrecompAppoggTrill' }, + prallprall: { code: 'ornamentTremblement' }, + scoop: { code: 'brassScoop' }, + doit: { code: 'brassDoitMedium' }, + fall: { code: 'brassFallLipShort' }, + doitLong: { code: 'brassLiftMedium' }, + fallLong: { code: 'brassFallRoughMedium' }, + bend: { code: 'brassBend' }, + plungerClosed: { code: 'brassMuteClosed' }, + plungerOpen: { code: 'brassMuteOpen' }, + flip: { code: 'brassFlip' }, + jazzTurn: { code: 'brassJazzTurn' }, + smear: { code: 'brassSmear' }, +}; +export class Tables { + static currentMusicFont() { + if (Tables.MUSIC_FONT_STACK.length === 0) { + throw new RuntimeError('NoFonts', 'The font stack is empty. See: await Flow.fetchMusicFont(...); Flow.setMusicFont(...).'); + } + else { + return Tables.MUSIC_FONT_STACK[0]; + } + } + static clefProperties(clef) { + if (!clef || !(clef in clefs)) + throw new RuntimeError('BadArgument', 'Invalid clef: ' + clef); + return clefs[clef]; + } + static keyProperties(keyOctaveGlyph, clef = 'treble', params) { + let options = { octave_shift: 0, duration: '4' }; + if (typeof params === 'object') { + options = Object.assign(Object.assign({}, options), params); + } + const duration = Tables.sanitizeDuration(options.duration); + const pieces = keyOctaveGlyph.split('/'); + if (pieces.length < 2) { + throw new RuntimeError('BadArguments', `First argument must be note/octave or note/octave/glyph-code: ${keyOctaveGlyph}`); + } + const key = pieces[0].toUpperCase(); + const value = notesInfo[key]; + if (!value) + throw new RuntimeError('BadArguments', 'Invalid key name: ' + key); + if (value.octave) + pieces[1] = value.octave.toString(); + let octave = parseInt(pieces[1], 10); + octave += -1 * options.octave_shift; + const baseIndex = octave * 7 - 4 * 7; + let line = (baseIndex + value.index) / 2; + line += Tables.clefProperties(clef).line_shift; + let stroke = 0; + if (line <= 0 && (line * 2) % 2 === 0) + stroke = 1; + if (line >= 6 && (line * 2) % 2 === 0) + stroke = -1; + const int_value = typeof value.int_val !== 'undefined' ? octave * 12 + value.int_val : undefined; + const code = value.code; + const shift_right = value.shift_right; + let customNoteHeadProps = {}; + if (pieces.length > 2 && pieces[2]) { + const glyphName = pieces[2].toUpperCase(); + customNoteHeadProps = { code: this.codeNoteHead(glyphName, duration) } || {}; + } + return Object.assign({ key, + octave, + line, + int_value, accidental: value.accidental, code, + stroke, + shift_right, displaced: false }, customNoteHeadProps); + } + static integerToNote(integer) { + if (typeof integer === 'undefined' || integer < 0 || integer > 11) { + throw new RuntimeError('BadArguments', `integerToNote() requires an integer in the range [0, 11]: ${integer}`); + } + const table = { + 0: 'C', + 1: 'C#', + 2: 'D', + 3: 'D#', + 4: 'E', + 5: 'F', + 6: 'F#', + 7: 'G', + 8: 'G#', + 9: 'A', + 10: 'A#', + 11: 'B', + }; + const noteValue = table[integer]; + if (!noteValue) { + throw new RuntimeError('BadArguments', `Unknown note value for integer: ${integer}`); + } + return noteValue; + } + static tabToGlyph(fret, scale = 1.0) { + let glyph = undefined; + let width = 0; + let shift_y = 0; + if (fret.toUpperCase() === 'X') { + const glyphMetrics = new Glyph('accidentalDoubleSharp', Tables.TABLATURE_FONT_SCALE).getMetrics(); + glyph = 'accidentalDoubleSharp'; + if (glyphMetrics.width == undefined || glyphMetrics.height == undefined) + throw new RuntimeError('InvalidMetrics', 'Width and height required'); + width = glyphMetrics.width; + shift_y = -glyphMetrics.height / 2; + } + else { + width = Tables.textWidth(fret); + } + return { + text: fret, + code: glyph, + getWidth: () => width * scale, + shift_y, + }; + } + static textWidth(text) { + return 7 * text.toString().length; + } + static articulationCodes(artic) { + return articulations[artic]; + } + static accidentalCodes(acc) { + return accidentals[acc]; + } + static ornamentCodes(acc) { + return ornaments[acc]; + } + static keySignature(spec) { + const keySpec = keySignatures[spec]; + if (!keySpec) { + throw new RuntimeError('BadKeySignature', `Bad key signature spec: '${spec}'`); + } + if (!keySpec.acc) { + return []; + } + const accidentalList = { + b: [2, 0.5, 2.5, 1, 3, 1.5, 3.5], + '#': [0, 1.5, -0.5, 1, 2.5, 0.5, 2], + }; + const notes = accidentalList[keySpec.acc]; + const acc_list = []; + for (let i = 0; i < keySpec.num; ++i) { + const line = notes[i]; + acc_list.push({ type: keySpec.acc, line }); + } + return acc_list; + } + static getKeySignatures() { + return keySignatures; + } + static hasKeySignature(spec) { + return spec in keySignatures; + } + static sanitizeDuration(duration) { + const durationNumber = durationAliases[duration]; + if (durationNumber !== undefined) { + duration = durationNumber; + } + if (durations[duration] === undefined) { + throw new RuntimeError('BadArguments', `The provided duration is not valid: ${duration}`); + } + return duration; + } + static durationToFraction(duration) { + return new Fraction().parse(Tables.sanitizeDuration(duration)); + } + static durationToNumber(duration) { + return Tables.durationToFraction(duration).value(); + } + static durationToTicks(duration) { + duration = Tables.sanitizeDuration(duration); + const ticks = durations[duration]; + if (ticks === undefined) { + throw new RuntimeError('InvalidDuration'); + } + return ticks; + } + static codeNoteHead(type, duration) { + let code = ''; + switch (type) { + case 'D0': + code = 'noteheadDiamondWhole'; + break; + case 'D1': + code = 'noteheadDiamondHalf'; + break; + case 'D2': + code = 'noteheadDiamondBlack'; + break; + case 'D3': + code = 'noteheadDiamondBlack'; + break; + case 'T0': + code = 'noteheadTriangleUpWhole'; + break; + case 'T1': + code = 'noteheadTriangleUpHalf'; + break; + case 'T2': + code = 'noteheadTriangleUpBlack'; + break; + case 'T3': + code = 'noteheadTriangleUpBlack'; + break; + case 'X0': + code = 'noteheadXWhole'; + break; + case 'X1': + code = 'noteheadXHalf'; + break; + case 'X2': + code = 'noteheadXBlack'; + break; + case 'X3': + code = 'noteheadCircleX'; + break; + case 'S1': + code = 'noteheadSquareWhite'; + break; + case 'S2': + code = 'noteheadSquareBlack'; + break; + case 'R1': + code = 'vexNoteHeadRectWhite'; + break; + case 'R2': + code = 'vexNoteHeadRectBlack'; + break; + case 'DO': + code = 'noteheadTriangleUpBlack'; + break; + case 'RE': + code = 'noteheadMoonBlack'; + break; + case 'MI': + code = 'noteheadDiamondBlack'; + break; + case 'FA': + code = 'noteheadTriangleLeftBlack'; + break; + case 'FAUP': + code = 'noteheadTriangleRightBlack'; + break; + case 'SO': + code = 'noteheadBlack'; + break; + case 'LA': + code = 'noteheadSquareBlack'; + break; + case 'TI': + code = 'noteheadTriangleRoundDownBlack'; + break; + case 'D': + case 'H': + switch (duration) { + case '1/2': + code = 'noteheadDiamondDoubleWhole'; + break; + case '1': + code = 'noteheadDiamondWhole'; + break; + case '2': + code = 'noteheadDiamondHalf'; + break; + default: + code = 'noteheadDiamondBlack'; + break; + } + break; + case 'N': + case 'G': + switch (duration) { + case '1/2': + code = 'noteheadDoubleWhole'; + break; + case '1': + code = 'noteheadWhole'; + break; + case '2': + code = 'noteheadHalf'; + break; + default: + code = 'noteheadBlack'; + break; + } + break; + case 'M': + case 'X': + switch (duration) { + case '1/2': + code = 'noteheadXDoubleWhole'; + break; + case '1': + code = 'noteheadXWhole'; + break; + case '2': + code = 'noteheadXHalf'; + break; + default: + code = 'noteheadXBlack'; + break; + } + break; + case 'CX': + switch (duration) { + case '1/2': + code = 'noteheadCircleXDoubleWhole'; + break; + case '1': + code = 'noteheadCircleXWhole'; + break; + case '2': + code = 'noteheadCircleXHalf'; + break; + default: + code = 'noteheadCircleX'; + break; + } + break; + case 'CI': + switch (duration) { + case '1/2': + code = 'noteheadCircledDoubleWhole'; + break; + case '1': + code = 'noteheadCircledWhole'; + break; + case '2': + code = 'noteheadCircledHalf'; + break; + default: + code = 'noteheadCircledBlack'; + break; + } + break; + case 'SQ': + switch (duration) { + case '1/2': + code = 'noteheadDoubleWholeSquare'; + break; + case '1': + code = 'noteheadSquareWhite'; + break; + case '2': + code = 'noteheadSquareWhite'; + break; + default: + code = 'noteheadSquareBlack'; + break; + } + break; + case 'TU': + switch (duration) { + case '1/2': + code = 'noteheadTriangleUpDoubleWhole'; + break; + case '1': + code = 'noteheadTriangleUpWhole'; + break; + case '2': + code = 'noteheadTriangleUpHalf'; + break; + default: + code = 'noteheadTriangleUpBlack'; + break; + } + break; + case 'TD': + switch (duration) { + case '1/2': + code = 'noteheadTriangleDownDoubleWhole'; + break; + case '1': + code = 'noteheadTriangleDownWhole'; + break; + case '2': + code = 'noteheadTriangleDownHalf'; + break; + default: + code = 'noteheadTriangleDownBlack'; + break; + } + break; + case 'SF': + switch (duration) { + case '1/2': + code = 'noteheadSlashedDoubleWhole1'; + break; + case '1': + code = 'noteheadSlashedWhole1'; + break; + case '2': + code = 'noteheadSlashedHalf1'; + break; + default: + code = 'noteheadSlashedBlack1'; + } + break; + case 'SB': + switch (duration) { + case '1/2': + code = 'noteheadSlashedDoubleWhole2'; + break; + case '1': + code = 'noteheadSlashedWhole2'; + break; + case '2': + code = 'noteheadSlashedHalf2'; + break; + default: + code = 'noteheadSlashedBlack2'; + } + break; + } + return code; + } + static getGlyphProps(duration, type = 'n') { + duration = Tables.sanitizeDuration(duration); + const code = durationCodes[duration]; + if (code === undefined) { + return undefined; + } + let glyphTypeProperties = code.type[type]; + const codeNoteHead = Tables.codeNoteHead(type.toUpperCase(), duration); + if (codeNoteHead != '') + glyphTypeProperties = Object.assign(Object.assign({}, glyphTypeProperties), { code_head: codeNoteHead, code: codeNoteHead }); + const code_head = glyphTypeProperties.code_head; + const getWidth = (scale = Tables.NOTATION_FONT_SCALE) => Glyph.getWidth(code_head, scale); + return Object.assign(Object.assign(Object.assign({}, code.common), { getWidth: getWidth }), glyphTypeProperties); + } +} +Tables.SOFTMAX_FACTOR = 100; +Tables.STEM_WIDTH = 1.5; +Tables.STEM_HEIGHT = 35; +Tables.STAVE_LINE_THICKNESS = 1; +Tables.RENDER_PRECISION_PLACES = 3; +Tables.RESOLUTION = RESOLUTION; +Tables.MUSIC_FONT_STACK = []; +Tables.NOTATION_FONT_SCALE = 39; +Tables.TABLATURE_FONT_SCALE = 39; +Tables.SLASH_NOTEHEAD_WIDTH = 15; +Tables.STAVE_LINE_DISTANCE = 10; +Tables.TEXT_HEIGHT_OFFSET_HACK = 1; +Tables.accidentalMap = accidentals; +Tables.accidentalColumnsTable = accidentalColumns; +Tables.unicode = { + sharp: String.fromCharCode(0x266f), + flat: String.fromCharCode(0x266d), + natural: String.fromCharCode(0x266e), + triangle: String.fromCharCode(0x25b3), + 'o-with-slash': String.fromCharCode(0x00f8), + degrees: String.fromCharCode(0x00b0), + circle: String.fromCharCode(0x25cb), +}; +Tables.validTypes = validNoteTypes; +Tables.TIME4_4 = { + num_beats: 4, + beat_value: 4, + resolution: RESOLUTION, +}; +const durationCodes = { + '1/2': { + common: { + stem: false, + stem_offset: 0, + flag: false, + stem_up_extension: -Tables.STEM_HEIGHT, + stem_down_extension: -Tables.STEM_HEIGHT, + tabnote_stem_up_extension: -Tables.STEM_HEIGHT, + tabnote_stem_down_extension: -Tables.STEM_HEIGHT, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + code_head: 'restDoubleWhole', + rest: true, + position: 'B/5', + dot_shiftY: 0.5, + }, + s: { + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 1: { + common: { + stem: false, + stem_offset: 0, + flag: false, + stem_up_extension: -Tables.STEM_HEIGHT, + stem_down_extension: -Tables.STEM_HEIGHT, + tabnote_stem_up_extension: -Tables.STEM_HEIGHT, + tabnote_stem_down_extension: -Tables.STEM_HEIGHT, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + code_head: 'restWhole', + leger_code_head: 'restWholeLegerLine', + rest: true, + position: 'D/5', + dot_shiftY: 0.5, + }, + s: { + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 2: { + common: { + stem: true, + stem_offset: 0, + flag: false, + stem_up_extension: 0, + stem_down_extension: 0, + tabnote_stem_up_extension: 0, + tabnote_stem_down_extension: 0, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + code_head: 'restHalf', + leger_code_head: 'restHalfLegerLine', + stem: false, + rest: true, + position: 'B/4', + dot_shiftY: -0.5, + }, + s: { + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 4: { + common: { + stem: true, + stem_offset: 0, + flag: false, + stem_up_extension: 0, + stem_down_extension: 0, + tabnote_stem_up_extension: 0, + tabnote_stem_down_extension: 0, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + code_head: 'restQuarter', + stem: false, + rest: true, + position: 'B/4', + dot_shiftY: -0.5, + line_above: 1.5, + line_below: 1.5, + }, + s: { + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 8: { + common: { + stem: true, + stem_offset: 0, + flag: true, + beam_count: 1, + stem_beam_extension: 0, + code_flag_upstem: 'flag8thUp', + code_flag_downstem: 'flag8thDown', + stem_up_extension: 0, + stem_down_extension: 0, + tabnote_stem_up_extension: 0, + tabnote_stem_down_extension: 0, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + code_head: 'rest8th', + stem: false, + flag: false, + rest: true, + position: 'B/4', + dot_shiftY: -0.5, + line_above: 1.0, + line_below: 1.0, + }, + s: { + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 16: { + common: { + beam_count: 2, + stem_beam_extension: 0, + stem: true, + stem_offset: 0, + flag: true, + code_flag_upstem: 'flag16thUp', + code_flag_downstem: 'flag16thDown', + stem_up_extension: 0, + stem_down_extension: 0, + tabnote_stem_up_extension: 0, + tabnote_stem_down_extension: 0, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + code_head: 'rest16th', + stem: false, + flag: false, + rest: true, + position: 'B/4', + dot_shiftY: -0.5, + line_above: 1.0, + line_below: 2.0, + }, + s: { + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 32: { + common: { + beam_count: 3, + stem_beam_extension: 7.5, + stem: true, + stem_offset: 0, + flag: true, + code_flag_upstem: 'flag32ndUp', + code_flag_downstem: 'flag32ndDown', + stem_up_extension: 9, + stem_down_extension: 9, + tabnote_stem_up_extension: 9, + tabnote_stem_down_extension: 9, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + code_head: 'rest32nd', + stem: false, + flag: false, + rest: true, + position: 'B/4', + dot_shiftY: -1.5, + line_above: 2.0, + line_below: 2.0, + }, + s: { + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 64: { + common: { + beam_count: 4, + stem_beam_extension: 15, + stem: true, + stem_offset: 0, + flag: true, + code_flag_upstem: 'flag64thUp', + code_flag_downstem: 'flag64thDown', + stem_up_extension: 13, + stem_down_extension: 13, + tabnote_stem_up_extension: 13, + tabnote_stem_down_extension: 13, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + code_head: 'rest64th', + stem: false, + flag: false, + rest: true, + position: 'B/4', + dot_shiftY: -1.5, + line_above: 2.0, + line_below: 3.0, + }, + s: { + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, + 128: { + common: { + beam_count: 5, + stem_beam_extension: 22.5, + stem: true, + stem_offset: 0, + flag: true, + code_flag_upstem: 'flag128thUp', + code_flag_downstem: 'flag128thDown', + stem_up_extension: 22, + stem_down_extension: 22, + tabnote_stem_up_extension: 22, + tabnote_stem_down_extension: 22, + dot_shiftY: 0, + line_above: 0, + line_below: 0, + }, + type: { + r: { + code_head: 'rest128th', + stem: false, + flag: false, + rest: true, + position: 'B/4', + dot_shiftY: -2.5, + line_above: 3.0, + line_below: 3.0, + }, + s: { + getWidth: () => Tables.SLASH_NOTEHEAD_WIDTH, + position: 'B/4', + }, + }, + }, +}; diff --git a/build/esm/src/tabnote.js b/build/esm/src/tabnote.js new file mode 100644 index 0000000000..15e40f266e --- /dev/null +++ b/build/esm/src/tabnote.js @@ -0,0 +1,297 @@ +import { Font } from './font.js'; +import { Glyph } from './glyph.js'; +import { Modifier } from './modifier.js'; +import { Stem } from './stem.js'; +import { StemmableNote } from './stemmablenote.js'; +import { Tables } from './tables.js'; +import { isDot } from './typeguard.js'; +import { defined, RuntimeError } from './util.js'; +function getUnusedStringGroups(num_lines, strings_used) { + const stem_through = []; + let group = []; + for (let string = 1; string <= num_lines; string++) { + const is_used = strings_used.indexOf(string) > -1; + if (!is_used) { + group.push(string); + } + else { + stem_through.push(group); + group = []; + } + } + if (group.length > 0) + stem_through.push(group); + return stem_through; +} +function getPartialStemLines(stem_y, unused_strings, stave, stem_direction) { + const up_stem = stem_direction !== 1; + const down_stem = stem_direction !== -1; + const line_spacing = stave.getSpacingBetweenLines(); + const total_lines = stave.getNumLines(); + const stem_lines = []; + unused_strings.forEach((strings) => { + const containsLastString = strings.indexOf(total_lines) > -1; + const containsFirstString = strings.indexOf(1) > -1; + if ((up_stem && containsFirstString) || (down_stem && containsLastString)) { + return; + } + if (strings.length === 1) { + strings.push(strings[0]); + } + const line_ys = []; + strings.forEach((string, index, strings) => { + const isTopBound = string === 1; + const isBottomBound = string === total_lines; + let y = stave.getYForLine(string - 1); + if (index === 0 && !isTopBound) { + y -= line_spacing / 2 - 1; + } + else if (index === strings.length - 1 && !isBottomBound) { + y += line_spacing / 2 - 1; + } + line_ys.push(y); + if (stem_direction === 1 && isTopBound) { + line_ys.push(stem_y - 2); + } + else if (stem_direction === -1 && isBottomBound) { + line_ys.push(stem_y + 2); + } + }); + stem_lines.push(line_ys.sort((a, b) => a - b)); + }); + return stem_lines; +} +export class TabNote extends StemmableNote { + constructor(noteStruct, draw_stem = false) { + super(noteStruct); + this.glyphs = []; + this.greatestString = () => { + return this.positions.map((x) => x.str).reduce((a, b) => (a > b ? a : b)); + }; + this.leastString = () => { + return this.positions.map((x) => x.str).reduce((a, b) => (a < b ? a : b)); + }; + this.ghost = false; + this.positions = noteStruct.positions || []; + this.render_options = Object.assign(Object.assign({}, this.render_options), { glyph_font_scale: Tables.TABLATURE_FONT_SCALE, draw_stem, draw_dots: draw_stem, draw_stem_through_stave: false, y_shift: 0, scale: 1.0, font: `${Font.SIZE}pt ${Font.SANS_SERIF}` }); + this.glyph = Tables.getGlyphProps(this.duration, this.noteType); + defined(this.glyph, 'BadArguments', `No glyph found for duration '${this.duration}' and type '${this.noteType}'`); + this.buildStem(); + if (noteStruct.stem_direction) { + this.setStemDirection(noteStruct.stem_direction); + } + else { + this.setStemDirection(Stem.UP); + } + this.ghost = false; + this.updateWidth(); + } + static get CATEGORY() { + return "TabNote"; + } + reset() { + super.reset(); + if (this.stave) + this.setStave(this.stave); + return this; + } + setGhost(ghost) { + this.ghost = ghost; + this.updateWidth(); + return this; + } + hasStem() { + if (this.render_options.draw_stem) + return true; + return false; + } + getStemExtension() { + const glyph = this.getGlyph(); + if (this.stem_extension_override != null) { + return this.stem_extension_override; + } + if (glyph) { + return this.getStemDirection() === Stem.UP ? glyph.tabnote_stem_up_extension : glyph.tabnote_stem_down_extension; + } + return 0; + } + updateWidth() { + this.glyphs = []; + this.width = 0; + for (let i = 0; i < this.positions.length; ++i) { + let fret = this.positions[i].fret; + if (this.ghost) + fret = '(' + fret + ')'; + const glyph = Tables.tabToGlyph(fret.toString(), this.render_options.scale); + this.glyphs.push(glyph); + this.width = Math.max(glyph.getWidth(), this.width); + } + this.glyph.getWidth = () => this.width; + } + setStave(stave) { + super.setStave(stave); + const ctx = stave.getContext(); + this.setContext(ctx); + if (ctx) { + this.width = 0; + for (let i = 0; i < this.glyphs.length; ++i) { + const glyph = this.glyphs[i]; + const text = '' + glyph.text; + if (text.toUpperCase() !== 'X') { + ctx.save(); + ctx.setFont(this.render_options.font); + glyph.width = ctx.measureText(text).width; + ctx.restore(); + glyph.getWidth = () => glyph.width; + } + this.width = Math.max(glyph.getWidth(), this.width); + } + this.glyph.getWidth = () => this.width; + } + const ys = this.positions.map(({ str: line }) => stave.getYForLine(Number(line) - 1)); + this.setYs(ys); + if (this.stem) { + this.stem.setYBounds(this.getStemY(), this.getStemY()); + } + return this; + } + getPositions() { + return this.positions; + } + getModifierStartXY(position, index) { + if (!this.preFormatted) { + throw new RuntimeError('UnformattedNote', "Can't call GetModifierStartXY on an unformatted note"); + } + if (this.ys.length === 0) { + throw new RuntimeError('NoYValues', 'No Y-Values calculated for this note.'); + } + let x = 0; + if (position === Modifier.Position.LEFT) { + x = -1 * 2; + } + else if (position === Modifier.Position.RIGHT) { + x = this.width + 2; + } + else if (position === Modifier.Position.BELOW || position === Modifier.Position.ABOVE) { + const note_glyph_width = this.glyph.getWidth(); + x = note_glyph_width / 2; + } + return { + x: this.getAbsoluteX() + x, + y: this.ys[index], + }; + } + getLineForRest() { + return Number(this.positions[0].str); + } + preFormat() { + if (this.preFormatted) + return; + if (this.modifierContext) + this.modifierContext.preFormat(); + this.preFormatted = true; + } + getStemX() { + return this.getCenterGlyphX(); + } + getStemY() { + const num_lines = this.checkStave().getNumLines(); + const stemUpLine = -0.5; + const stemDownLine = num_lines - 0.5; + const stemStartLine = Stem.UP === this.stem_direction ? stemUpLine : stemDownLine; + return this.checkStave().getYForLine(stemStartLine); + } + getStemExtents() { + return this.checkStem().getExtents(); + } + drawFlag() { + var _a; + const { beam, glyph, render_options: { draw_stem }, } = this; + const context = this.checkContext(); + const shouldDrawFlag = beam == undefined && draw_stem; + if (glyph.flag && shouldDrawFlag) { + const flag_x = this.getStemX(); + const flag_y = this.getStemDirection() === Stem.DOWN + ? + this.getStemY() - this.checkStem().getHeight() - (this.glyph ? this.glyph.stem_down_extension : 0) + : + this.getStemY() - this.checkStem().getHeight() + (this.glyph ? this.glyph.stem_up_extension : 0); + (_a = this.flag) === null || _a === void 0 ? void 0 : _a.render(context, flag_x, flag_y); + } + } + drawModifiers() { + this.modifiers.forEach((modifier) => { + if (isDot(modifier) && !this.render_options.draw_dots) { + return; + } + modifier.setContext(this.getContext()); + modifier.drawWithStyle(); + }); + } + drawStemThrough() { + const stemX = this.getStemX(); + const stemY = this.getStemY(); + const ctx = this.checkContext(); + const drawStem = this.render_options.draw_stem; + const stemThrough = this.render_options.draw_stem_through_stave; + if (drawStem && stemThrough) { + const numLines = this.checkStave().getNumLines(); + const stringsUsed = this.positions.map((position) => Number(position.str)); + const unusedStrings = getUnusedStringGroups(numLines, stringsUsed); + const stemLines = getPartialStemLines(stemY, unusedStrings, this.checkStave(), this.getStemDirection()); + ctx.save(); + ctx.setLineWidth(Stem.WIDTH); + stemLines.forEach((bounds) => { + if (bounds.length === 0) + return; + ctx.beginPath(); + ctx.moveTo(stemX, bounds[0]); + ctx.lineTo(stemX, bounds[bounds.length - 1]); + ctx.stroke(); + ctx.closePath(); + }); + ctx.restore(); + } + } + drawPositions() { + const ctx = this.checkContext(); + const x = this.getAbsoluteX(); + const ys = this.ys; + for (let i = 0; i < this.positions.length; ++i) { + const y = ys[i] + this.render_options.y_shift; + const glyph = this.glyphs[i]; + const note_glyph_width = this.glyph.getWidth(); + const tab_x = x + note_glyph_width / 2 - glyph.getWidth() / 2; + ctx.clearRect(tab_x - 2, y - 3, glyph.getWidth() + 4, 6); + if (glyph.code) { + Glyph.renderGlyph(ctx, tab_x, y, this.render_options.glyph_font_scale * this.render_options.scale, glyph.code); + } + else { + ctx.save(); + ctx.setFont(this.render_options.font); + const text = glyph.text.toString(); + ctx.fillText(text, tab_x, y + 5 * this.render_options.scale); + ctx.restore(); + } + } + } + draw() { + const ctx = this.checkContext(); + if (this.ys.length === 0) { + throw new RuntimeError('NoYValues', "Can't draw note without Y values."); + } + this.setRendered(); + const render_stem = this.beam == undefined && this.render_options.draw_stem; + ctx.openGroup('tabnote', this.getAttribute('id'), { pointerBBox: true }); + this.drawPositions(); + this.drawStemThrough(); + if (this.stem && render_stem) { + const stem_x = this.getStemX(); + this.stem.setNoteHeadXBounds(stem_x, stem_x); + this.stem.setContext(ctx).draw(); + } + this.drawFlag(); + this.drawModifiers(); + ctx.closeGroup(); + } +} diff --git a/build/esm/src/tabslide.js b/build/esm/src/tabslide.js new file mode 100644 index 0000000000..cdf35a6441 --- /dev/null +++ b/build/esm/src/tabslide.js @@ -0,0 +1,76 @@ +import { Font, FontStyle, FontWeight } from './font.js'; +import { TabTie } from './tabtie.js'; +import { RuntimeError } from './util.js'; +export class TabSlide extends TabTie { + constructor(notes, direction) { + super(notes, 'sl.'); + if (!direction) { + let first_fret = notes.first_note.getPositions()[0].fret; + if (typeof first_fret === 'string') { + first_fret = parseInt(first_fret, 10); + } + let last_fret = notes.last_note.getPositions()[0].fret; + if (typeof last_fret === 'string') { + last_fret = parseInt(last_fret, 10); + } + if (isNaN(first_fret) || isNaN(last_fret)) { + direction = TabSlide.SLIDE_UP; + } + else { + direction = first_fret > last_fret ? TabSlide.SLIDE_DOWN : TabSlide.SLIDE_UP; + } + } + this.direction = direction; + this.render_options.cp1 = 11; + this.render_options.cp2 = 14; + this.render_options.y_shift = 0.5; + this.resetFont(); + } + static get CATEGORY() { + return "TabSlide"; + } + static get SLIDE_UP() { + return 1; + } + static get SLIDE_DOWN() { + return -1; + } + static createSlideUp(notes) { + return new TabSlide(notes, TabSlide.SLIDE_UP); + } + static createSlideDown(notes) { + return new TabSlide(notes, TabSlide.SLIDE_DOWN); + } + renderTie(params) { + if (params.first_ys.length === 0 || params.last_ys.length === 0) { + throw new RuntimeError('BadArguments', 'No Y-values to render'); + } + const ctx = this.checkContext(); + const first_x_px = params.first_x_px; + const first_ys = params.first_ys; + const last_x_px = params.last_x_px; + const direction = params.direction; + if (direction !== TabSlide.SLIDE_UP && direction !== TabSlide.SLIDE_DOWN) { + throw new RuntimeError('BadSlide', 'Invalid slide direction'); + } + const first_indices = this.notes.first_indices; + for (let i = 0; i < first_indices.length; ++i) { + const slide_y = first_ys[first_indices[i]] + this.render_options.y_shift; + if (isNaN(slide_y)) { + throw new RuntimeError('BadArguments', 'Bad indices for slide rendering.'); + } + ctx.beginPath(); + ctx.moveTo(first_x_px, slide_y + 3 * direction); + ctx.lineTo(last_x_px, slide_y - 3 * direction); + ctx.closePath(); + ctx.stroke(); + } + this.setRendered(); + } +} +TabSlide.TEXT_FONT = { + family: Font.SERIF, + size: 10, + weight: FontWeight.BOLD, + style: FontStyle.ITALIC, +}; diff --git a/build/esm/src/tabstave.js b/build/esm/src/tabstave.js new file mode 100644 index 0000000000..e71d724a53 --- /dev/null +++ b/build/esm/src/tabstave.js @@ -0,0 +1,17 @@ +import { Stave } from './stave.js'; +export class TabStave extends Stave { + static get CATEGORY() { + return "TabStave"; + } + constructor(x, y, width, options) { + const tab_options = Object.assign({ spacing_between_lines_px: 13, num_lines: 6, top_text_position: 1 }, options); + super(x, y, width, tab_options); + } + getYForGlyphs() { + return this.getYForLine(2.5); + } + addTabGlyph() { + this.addClef('tab'); + return this; + } +} diff --git a/build/esm/src/tabtie.js b/build/esm/src/tabtie.js new file mode 100644 index 0000000000..18a303cc73 --- /dev/null +++ b/build/esm/src/tabtie.js @@ -0,0 +1,19 @@ +import { StaveTie } from './stavetie.js'; +export class TabTie extends StaveTie { + static get CATEGORY() { + return "TabTie"; + } + static createHammeron(notes) { + return new TabTie(notes, 'H'); + } + static createPulloff(notes) { + return new TabTie(notes, 'P'); + } + constructor(notes, text) { + super(notes, text); + this.render_options.cp1 = 9; + this.render_options.cp2 = 11; + this.render_options.y_shift = 3; + this.direction = -1; + } +} diff --git a/build/esm/src/textbracket.js b/build/esm/src/textbracket.js new file mode 100644 index 0000000000..43dd44f786 --- /dev/null +++ b/build/esm/src/textbracket.js @@ -0,0 +1,144 @@ +import { Element } from './element.js'; +import { Font, FontStyle, FontWeight } from './font.js'; +import { Renderer } from './renderer.js'; +import { Tables } from './tables.js'; +import { log, RuntimeError } from './util.js'; +function L(...args) { + if (TextBracket.DEBUG) + log('Vex.Flow.TextBracket', args); +} +export var TextBracketPosition; +(function (TextBracketPosition) { + TextBracketPosition[TextBracketPosition["TOP"] = 1] = "TOP"; + TextBracketPosition[TextBracketPosition["BOTTOM"] = -1] = "BOTTOM"; +})(TextBracketPosition || (TextBracketPosition = {})); +export class TextBracket extends Element { + constructor({ start, stop, text = '', superscript = '', position = TextBracketPosition.TOP }) { + super(); + this.start = start; + this.stop = stop; + this.text = text; + this.superscript = superscript; + this.position = typeof position === 'string' ? TextBracket.PositionString[position] : position; + this.line = 1; + this.resetFont(); + this.render_options = { + dashed: true, + dash: [5], + color: 'black', + line_width: 1, + show_bracket: true, + bracket_height: 8, + underline_superscript: true, + }; + } + static get CATEGORY() { + return "TextBracket"; + } + static get Position() { + return TextBracketPosition; + } + static get PositionString() { + return { + top: TextBracketPosition.TOP, + bottom: TextBracketPosition.BOTTOM, + }; + } + static get Positions() { + L('Positions is deprecated, use TextBracketPosition instead.'); + return TextBracketPosition; + } + static get PositionsString() { + L('PositionsString is deprecated, use PositionString instead.'); + return TextBracket.PositionString; + } + applyStyle(ctx) { + ctx.setFont(this.font); + const options = this.render_options; + ctx.setStrokeStyle(options.color); + ctx.setFillStyle(options.color); + ctx.setLineWidth(options.line_width); + return this; + } + setDashed(dashed, dash) { + this.render_options.dashed = dashed; + if (dash) + this.render_options.dash = dash; + return this; + } + setLine(line) { + this.line = line; + return this; + } + draw() { + const ctx = this.checkContext(); + this.setRendered(); + let y = 0; + switch (this.position) { + case TextBracketPosition.TOP: + y = this.start.checkStave().getYForTopText(this.line); + break; + case TextBracketPosition.BOTTOM: + y = this.start.checkStave().getYForBottomText(this.line + Tables.TEXT_HEIGHT_OFFSET_HACK); + break; + default: + throw new RuntimeError('InvalidPosition', `The position ${this.position} is invalid.`); + } + const start = { x: this.start.getAbsoluteX(), y }; + const stop = { x: this.stop.getAbsoluteX(), y }; + L('Rendering TextBracket: start:', start, 'stop:', stop, 'y:', y); + const bracket_height = this.render_options.bracket_height * this.position; + ctx.save(); + this.applyStyle(ctx); + ctx.fillText(this.text, start.x, start.y); + const main_measure = ctx.measureText(this.text); + const main_width = main_measure.width; + const main_height = main_measure.height; + const super_y = start.y - main_height / 2.5; + const { family, size, weight, style } = this.textFont; + const smallerFontSize = Font.scaleSize(size, 0.714286); + ctx.setFont(family, smallerFontSize, weight, style); + ctx.fillText(this.superscript, start.x + main_width + 1, super_y); + const super_measure = ctx.measureText(this.superscript); + const super_width = super_measure.width; + const super_height = super_measure.height; + let start_x = start.x; + let line_y = super_y; + const end_x = stop.x + this.stop.getGlyph().getWidth(); + if (this.position === TextBracketPosition.TOP) { + start_x += main_width + super_width + 5; + line_y -= super_height / 2.7; + } + else if (this.position === TextBracketPosition.BOTTOM) { + line_y += super_height / 2.7; + start_x += main_width + 2; + if (!this.render_options.underline_superscript) { + start_x += super_width; + } + } + if (this.render_options.dashed) { + Renderer.drawDashedLine(ctx, start_x, line_y, end_x, line_y, this.render_options.dash); + if (this.render_options.show_bracket) { + Renderer.drawDashedLine(ctx, end_x, line_y + 1 * this.position, end_x, line_y + bracket_height, this.render_options.dash); + } + } + else { + ctx.beginPath(); + ctx.moveTo(start_x, line_y); + ctx.lineTo(end_x, line_y); + if (this.render_options.show_bracket) { + ctx.lineTo(end_x, line_y + bracket_height); + } + ctx.stroke(); + ctx.closePath(); + } + ctx.restore(); + } +} +TextBracket.DEBUG = false; +TextBracket.TEXT_FONT = { + family: Font.SERIF, + size: 15, + weight: FontWeight.NORMAL, + style: FontStyle.ITALIC, +}; diff --git a/build/esm/src/textdynamics.js b/build/esm/src/textdynamics.js new file mode 100644 index 0000000000..363800a944 --- /dev/null +++ b/build/esm/src/textdynamics.js @@ -0,0 +1,81 @@ +import { Glyph } from './glyph.js'; +import { Note } from './note.js'; +import { defined, log, RuntimeError } from './util.js'; +function L(...args) { + if (TextDynamics.DEBUG) + log('Vex.Flow.TextDynamics', args); +} +export class TextDynamics extends Note { + constructor(noteStruct) { + super(noteStruct); + this.sequence = (noteStruct.text || '').toLowerCase(); + this.line = noteStruct.line || 0; + this.glyphs = []; + this.render_options = Object.assign(Object.assign({}, this.render_options), { glyph_font_size: 40 }); + L('New Dynamics Text: ', this.sequence); + } + static get CATEGORY() { + return "TextDynamics"; + } + static get GLYPHS() { + return { + f: { + code: 'dynamicForte', + width: 12, + }, + p: { + code: 'dynamicPiano', + width: 14, + }, + m: { + code: 'dynamicMezzo', + width: 17, + }, + s: { + code: 'dynamicSforzando', + width: 10, + }, + z: { + code: 'dynamicZ', + width: 12, + }, + r: { + code: 'dynamicRinforzando', + width: 12, + }, + }; + } + setLine(line) { + this.line = line; + return this; + } + preFormat() { + let total_width = 0; + this.glyphs = []; + this.sequence.split('').forEach((letter) => { + const glyph_data = TextDynamics.GLYPHS[letter]; + if (!glyph_data) + throw new RuntimeError('Invalid dynamics character: ' + letter); + const size = defined(this.render_options.glyph_font_size); + const glyph = new Glyph(glyph_data.code, size, { category: 'textNote' }); + this.glyphs.push(glyph); + total_width += glyph_data.width; + }); + this.setWidth(total_width); + this.preFormatted = true; + return this; + } + draw() { + this.setRendered(); + const x = this.getAbsoluteX(); + const y = this.checkStave().getYForLine(this.line + -3); + L('Rendering Dynamics: ', this.sequence); + let letter_x = x; + this.glyphs.forEach((glyph, index) => { + const current_letter = this.sequence[index]; + glyph.render(this.checkContext(), letter_x, y); + letter_x += TextDynamics.GLYPHS[current_letter].width; + }); + } +} +TextDynamics.DEBUG = false; diff --git a/build/esm/src/textformatter.js b/build/esm/src/textformatter.js new file mode 100644 index 0000000000..3839b80e5b --- /dev/null +++ b/build/esm/src/textformatter.js @@ -0,0 +1,177 @@ +import { Font, FontStyle, FontWeight } from './font.js'; +import { log } from './util.js'; +function L(...args) { + if (TextFormatter.DEBUG) + log('Vex.Flow.TextFormatter', args); +} +const textWidthCache = {}; +const registry = {}; +export class TextFormatter { + constructor(formatterInfo) { + this.family = ''; + this.size = 14; + this.resolution = 1000; + this.glyphs = {}; + this.serifs = false; + this.monospaced = false; + this.italic = false; + this.bold = false; + this.superscriptOffset = 0; + this.subscriptOffset = 0; + this.maxSizeGlyph = 'H'; + this.cacheKey = ''; + this.updateParams(formatterInfo); + } + static getFontFamilies() { + const registeredFonts = []; + for (const fontFamily in registry) { + const formatterInfo = registry[fontFamily]; + registeredFonts.push(Object.assign({}, formatterInfo)); + } + return registeredFonts; + } + static create(requestedFont = {}) { + L('create: ', requestedFont); + if (!requestedFont.family) { + requestedFont.family = Font.SANS_SERIF; + } + const candidates = []; + const requestedFamilies = requestedFont.family.split(/\s*,\s*/); + for (const requestedFamily of requestedFamilies) { + for (const fontFamily in registry) { + if (fontFamily.startsWith(requestedFamily)) { + candidates.push(registry[fontFamily]); + } + } + if (candidates.length > 0) { + break; + } + } + let formatter; + if (candidates.length === 0) { + formatter = new TextFormatter(Object.values(registry)[0]); + } + else if (candidates.length === 1) { + formatter = new TextFormatter(candidates[0]); + } + else { + const bold = Font.isBold(requestedFont.weight); + const italic = Font.isItalic(requestedFont.style); + const perfectMatch = candidates.find((f) => f.bold === bold && f.italic === italic); + if (perfectMatch) { + formatter = new TextFormatter(perfectMatch); + } + else { + const partialMatch = candidates.find((f) => f.italic === italic || f.bold === bold); + if (partialMatch) { + formatter = new TextFormatter(partialMatch); + } + else { + formatter = new TextFormatter(candidates[0]); + } + } + } + const fontSize = requestedFont.size; + if (typeof fontSize !== 'undefined') { + const fontSizeInPt = Font.convertSizeToPointValue(fontSize); + formatter.setFontSize(fontSizeInPt); + } + return formatter; + } + static getInfo(fontFamily) { + return registry[fontFamily]; + } + static registerInfo(info, overwrite = false) { + L('registerInfo: ', info, overwrite); + const fontFamily = info.family; + const currFontInfo = registry[fontFamily]; + if (currFontInfo === undefined || overwrite) { + registry[fontFamily] = info; + } + } + updateParams(params) { + if (params.family) + this.family = params.family; + if (params.resolution) + this.resolution = params.resolution; + if (params.glyphs) + this.glyphs = params.glyphs; + if (params.serifs) + this.serifs = params.serifs; + if (params.monospaced) + this.monospaced = params.monospaced; + if (params.italic) + this.italic = params.italic; + if (params.bold) + this.bold = params.bold; + if (params.maxSizeGlyph) + this.maxSizeGlyph = params.maxSizeGlyph; + if (params.superscriptOffset) + this.superscriptOffset = params.superscriptOffset; + if (params.subscriptOffset) + this.subscriptOffset = params.subscriptOffset; + this.updateCacheKey(); + } + updateCacheKey() { + const family = this.family.replace(/\s+/g, '_'); + const size = this.size; + const weight = this.bold ? FontWeight.BOLD : FontWeight.NORMAL; + const style = this.italic ? FontStyle.ITALIC : FontStyle.NORMAL; + this.cacheKey = `${family}%${size}%${weight}%${style}`; + } + getGlyphMetrics(character) { + if (this.glyphs[character]) { + return this.glyphs[character]; + } + else { + return this.glyphs[this.maxSizeGlyph]; + } + } + get maxHeight() { + const metrics = this.getGlyphMetrics(this.maxSizeGlyph); + return (metrics.ha / this.resolution) * this.fontSizeInPixels; + } + getWidthForCharacterInEm(c) { + var _a; + const metrics = this.getGlyphMetrics(c); + if (!metrics) { + return 0.65; + } + else { + const advanceWidth = (_a = metrics.advanceWidth) !== null && _a !== void 0 ? _a : 0; + return advanceWidth / this.resolution; + } + } + getWidthForTextInEm(text) { + const key = this.cacheKey; + let cachedWidths = textWidthCache[key]; + if (cachedWidths === undefined) { + cachedWidths = {}; + textWidthCache[key] = cachedWidths; + } + let width = cachedWidths[text]; + if (width === undefined) { + width = 0; + for (let i = 0; i < text.length; ++i) { + width += this.getWidthForCharacterInEm(text[i]); + } + cachedWidths[text] = width; + } + return width; + } + getWidthForTextInPx(text) { + return this.getWidthForTextInEm(text) * this.fontSizeInPixels; + } + setFontSize(size) { + this.size = size; + this.updateCacheKey(); + return this; + } + get fontSizeInPixels() { + return this.size * Font.scaleToPxFrom.pt; + } + getResolution() { + return this.resolution; + } +} +TextFormatter.DEBUG = false; diff --git a/build/esm/src/textnote.js b/build/esm/src/textnote.js new file mode 100644 index 0000000000..41140c05a7 --- /dev/null +++ b/build/esm/src/textnote.js @@ -0,0 +1,180 @@ +import { Font, FontStyle, FontWeight } from './font.js'; +import { Glyph } from './glyph.js'; +import { Note } from './note.js'; +import { RuntimeError } from './util.js'; +export var TextJustification; +(function (TextJustification) { + TextJustification[TextJustification["LEFT"] = 1] = "LEFT"; + TextJustification[TextJustification["CENTER"] = 2] = "CENTER"; + TextJustification[TextJustification["RIGHT"] = 3] = "RIGHT"; +})(TextJustification || (TextJustification = {})); +export class TextNote extends Note { + constructor(noteStruct) { + super(noteStruct); + this.text = noteStruct.text || ''; + this.superscript = noteStruct.superscript; + this.subscript = noteStruct.subscript; + this.setFont(noteStruct.font); + this.line = noteStruct.line || 0; + this.smooth = noteStruct.smooth || false; + this.ignore_ticks = noteStruct.ignore_ticks || false; + this.justification = TextJustification.LEFT; + if (noteStruct.glyph) { + const struct = TextNote.GLYPHS[noteStruct.glyph]; + if (!struct) + throw new RuntimeError('Invalid glyph type: ' + noteStruct.glyph); + this.glyph = new Glyph(struct.code, 40, { category: 'textNote' }); + this.setWidth(this.glyph.getMetrics().width); + } + else { + this.glyph = undefined; + } + } + static get CATEGORY() { + return "TextNote"; + } + static get GLYPHS() { + return { + segno: { + code: 'segno', + }, + tr: { + code: 'ornamentTrill', + }, + mordent: { + code: 'ornamentMordent', + }, + mordent_upper: { + code: 'ornamentShortTrill', + }, + mordent_lower: { + code: 'ornamentMordent', + }, + f: { + code: 'dynamicForte', + }, + p: { + code: 'dynamicPiano', + }, + m: { + code: 'dynamicMezzo', + }, + s: { + code: 'dynamicSforzando', + }, + z: { + code: 'dynamicZ', + }, + coda: { + code: 'coda', + }, + pedal_open: { + code: 'keyboardPedalPed', + }, + pedal_close: { + code: 'keyboardPedalUp', + }, + caesura_straight: { + code: 'caesura', + }, + caesura_curved: { + code: 'caesuraCurved', + }, + breath: { + code: 'breathMarkComma', + }, + tick: { + code: 'breathMarkTick', + }, + turn: { + code: 'ornamentTurn', + }, + turn_inverted: { + code: 'ornamentTurnSlash', + }, + }; + } + setJustification(just) { + this.justification = just; + return this; + } + setLine(line) { + this.line = line; + return this; + } + getLine() { + return this.line; + } + getText() { + return this.text; + } + preFormat() { + if (this.preFormatted) + return; + const tickContext = this.checkTickContext(`Can't preformat without a TickContext.`); + if (this.smooth) { + this.setWidth(0); + } + else { + if (this.glyph) { + } + else { + const ctx = this.checkContext(); + ctx.setFont(this.textFont); + this.setWidth(ctx.measureText(this.text).width); + } + } + if (this.justification === TextJustification.CENTER) { + this.leftDisplacedHeadPx = this.width / 2; + } + else if (this.justification === TextJustification.RIGHT) { + this.leftDisplacedHeadPx = this.width; + } + this.rightDisplacedHeadPx = tickContext.getMetrics().glyphPx / 2; + this.preFormatted = true; + } + draw() { + const ctx = this.checkContext(); + const stave = this.checkStave(); + const tickContext = this.checkTickContext(`Can't draw without a TickContext.`); + this.setRendered(); + let x = this.getAbsoluteX() + tickContext.getMetrics().glyphPx / 2; + const width = this.getWidth(); + if (this.justification === TextJustification.CENTER) { + x -= width / 2; + } + else if (this.justification === TextJustification.RIGHT) { + x -= width; + } + let y; + if (this.glyph) { + y = stave.getYForLine(this.line + -3); + this.glyph.render(ctx, x, y); + } + else { + y = stave.getYForLine(this.line + -3); + this.applyStyle(ctx); + ctx.setFont(this.textFont); + ctx.fillText(this.text, x, y); + const height = ctx.measureText(this.text).height; + const { family, size, weight, style } = this.textFont; + const smallerFontSize = Font.scaleSize(size, 0.769231); + if (this.superscript) { + ctx.setFont(family, smallerFontSize, weight, style); + ctx.fillText(this.superscript, x + this.width + 2, y - height / 2.2); + } + if (this.subscript) { + ctx.setFont(family, smallerFontSize, weight, style); + ctx.fillText(this.subscript, x + this.width + 2, y + height / 2.2 - 1); + } + this.restoreStyle(ctx); + } + } +} +TextNote.TEXT_FONT = { + family: Font.SANS_SERIF, + size: 12, + weight: FontWeight.NORMAL, + style: FontStyle.NORMAL, +}; +TextNote.Justification = TextJustification; diff --git a/build/esm/src/tickable.js b/build/esm/src/tickable.js new file mode 100644 index 0000000000..49eb5b7910 --- /dev/null +++ b/build/esm/src/tickable.js @@ -0,0 +1,214 @@ +import { Element } from './element.js'; +import { Fraction } from './fraction.js'; +import { Tables } from './tables.js'; +import { defined, RuntimeError } from './util.js'; +export class Tickable extends Element { + constructor() { + super(); + this._preFormatted = false; + this._postFormatted = false; + this.ticks = new Fraction(0, 1); + this.intrinsicTicks = 0; + this.tickMultiplier = new Fraction(1, 1); + this.width = 0; + this.x_shift = 0; + this.modifiers = []; + this.tupletStack = []; + this.align_center = false; + this.center_x_shift = 0; + this.ignore_ticks = false; + this.formatterMetrics = { + freedom: { left: 0, right: 0 }, + duration: '', + iterations: 0, + space: { + used: 0, + mean: 0, + deviation: 0, + }, + }; + } + static get CATEGORY() { + return "Tickable"; + } + reset() { + return this; + } + getTicks() { + return this.ticks; + } + shouldIgnoreTicks() { + return this.ignore_ticks; + } + setIgnoreTicks(flag) { + this.ignore_ticks = flag; + return this; + } + setWidth(width) { + this.width = width; + } + getWidth() { + if (!this._preFormatted) { + throw new RuntimeError('UnformattedNote', "Can't call GetWidth on an unformatted note."); + } + return this.width + (this.modifierContext ? this.modifierContext.getWidth() : 0); + } + setXShift(x) { + this.x_shift = x; + return this; + } + getXShift() { + return this.x_shift; + } + getX() { + const tickContext = this.checkTickContext(`Can't getX() without a TickContext.`); + return tickContext.getX() + this.x_shift; + } + getFormatterMetrics() { + return this.formatterMetrics; + } + getCenterXShift() { + if (this.isCenterAligned()) { + return this.center_x_shift; + } + return 0; + } + setCenterXShift(centerXShift) { + this.center_x_shift = centerXShift; + return this; + } + isCenterAligned() { + return this.align_center; + } + setCenterAlignment(align_center) { + this.align_center = align_center; + return this; + } + getVoice() { + return defined(this.voice, 'NoVoice', 'Tickable has no voice.'); + } + setVoice(voice) { + this.voice = voice; + } + getTuplet() { + return this.tuplet; + } + getTupletStack() { + return this.tupletStack; + } + resetTuplet(tuplet) { + let noteCount; + let notesOccupied; + if (tuplet) { + const i = this.tupletStack.indexOf(tuplet); + if (i !== -1) { + this.tupletStack.splice(i, 1); + noteCount = tuplet.getNoteCount(); + notesOccupied = tuplet.getNotesOccupied(); + this.applyTickMultiplier(noteCount, notesOccupied); + } + return this; + } + while (this.tupletStack.length) { + tuplet = this.tupletStack.pop(); + noteCount = tuplet.getNoteCount(); + notesOccupied = tuplet.getNotesOccupied(); + this.applyTickMultiplier(noteCount, notesOccupied); + } + return this; + } + setTuplet(tuplet) { + if (tuplet) { + this.tupletStack.push(tuplet); + const noteCount = tuplet.getNoteCount(); + const notesOccupied = tuplet.getNotesOccupied(); + this.applyTickMultiplier(notesOccupied, noteCount); + } + this.tuplet = tuplet; + return this; + } + addToModifierContext(mc) { + this.modifierContext = mc; + for (let i = 0; i < this.modifiers.length; ++i) { + this.modifierContext.addMember(this.modifiers[i]); + } + this.modifierContext.addMember(this); + this._preFormatted = false; + return this; + } + addModifier(modifier, index = 0) { + this.modifiers.push(modifier); + this._preFormatted = false; + return this; + } + getModifiers() { + return this.modifiers; + } + setTickContext(tc) { + this.tickContext = tc; + this._preFormatted = false; + } + checkTickContext(message = 'Tickable has no tick context.') { + return defined(this.tickContext, 'NoTickContext', message); + } + preFormat() { + if (this._preFormatted) + return; + this.width = 0; + if (this.modifierContext) { + this.modifierContext.preFormat(); + this.width += this.modifierContext.getWidth(); + } + } + set preFormatted(value) { + this._preFormatted = value; + } + get preFormatted() { + return this._preFormatted; + } + postFormat() { + if (this._postFormatted) + return this; + this._postFormatted = true; + return this; + } + set postFormatted(value) { + this._postFormatted = value; + } + get postFormatted() { + return this._postFormatted; + } + getIntrinsicTicks() { + return this.intrinsicTicks; + } + setIntrinsicTicks(intrinsicTicks) { + this.intrinsicTicks = intrinsicTicks; + this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks); + } + getTickMultiplier() { + return this.tickMultiplier; + } + applyTickMultiplier(numerator, denominator) { + this.tickMultiplier.multiply(numerator, denominator); + this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks); + } + setDuration(duration) { + const ticks = duration.numerator * (Tables.RESOLUTION / duration.denominator); + this.ticks = this.tickMultiplier.clone().multiply(ticks); + this.intrinsicTicks = this.ticks.value(); + } + getAbsoluteX() { + const tickContext = this.checkTickContext(`Can't getAbsoluteX() without a TickContext.`); + return tickContext.getX(); + } + setModifierContext(mc) { + this.modifierContext = mc; + return this; + } + getModifierContext() { + return this.modifierContext; + } + checkModifierContext() { + return defined(this.modifierContext, 'NoModifierContext', 'No modifier context attached to this tickable.'); + } +} diff --git a/build/esm/src/tickcontext.js b/build/esm/src/tickcontext.js new file mode 100644 index 0000000000..d21e395457 --- /dev/null +++ b/build/esm/src/tickcontext.js @@ -0,0 +1,170 @@ +import { Fraction } from './fraction.js'; +import { RuntimeError } from './util.js'; +export class TickContext { + constructor(options) { + this.preFormatted = false; + this.postFormatted = false; + this.tickID = options && options.tickID ? options.tickID : 0; + this.currentTick = new Fraction(0, 1); + this.maxTicks = new Fraction(0, 1); + this.maxTickable = undefined; + this.minTicks = undefined; + this.minTickable = undefined; + this.padding = 1; + this.x = 0; + this.xBase = 0; + this.xOffset = 0; + this.tickables = []; + this.tickablesByVoice = {}; + this.notePx = 0; + this.glyphPx = 0; + this.leftDisplacedHeadPx = 0; + this.rightDisplacedHeadPx = 0; + this.modLeftPx = 0; + this.modRightPx = 0; + this.totalLeftPx = 0; + this.totalRightPx = 0; + this.tContexts = []; + this.width = 0; + this.formatterMetrics = { + freedom: { left: 0, right: 0 }, + }; + } + static getNextContext(tContext) { + const contexts = tContext.tContexts; + const index = contexts.indexOf(tContext); + if (index + 1 < contexts.length) + return contexts[index + 1]; + } + getTickID() { + return this.tickID; + } + getX() { + return this.x; + } + setX(x) { + this.x = x; + this.xBase = x; + this.xOffset = 0; + return this; + } + getXBase() { + return this.xBase; + } + setXBase(xBase) { + this.xBase = xBase; + this.x = xBase + this.xOffset; + } + getXOffset() { + return this.xOffset; + } + setXOffset(xOffset) { + this.xOffset = xOffset; + this.x = this.xBase + xOffset; + } + getWidth() { + return this.width + this.padding * 2; + } + setPadding(padding) { + this.padding = padding; + return this; + } + getMaxTicks() { + return this.maxTicks; + } + getMinTicks() { + return this.minTicks; + } + getMaxTickable() { + return this.maxTickable; + } + getMinTickable() { + return this.minTickable; + } + getTickables() { + return this.tickables; + } + getTickableForVoice(voiceIndex) { + return this.tickablesByVoice[voiceIndex]; + } + getTickablesByVoice() { + return this.tickablesByVoice; + } + getCenterAlignedTickables() { + return this.tickables.filter((tickable) => tickable.isCenterAligned()); + } + getMetrics() { + const { width, glyphPx, notePx, leftDisplacedHeadPx, rightDisplacedHeadPx, modLeftPx, modRightPx, totalLeftPx, totalRightPx, } = this; + return { + width, + glyphPx, + notePx, + leftDisplacedHeadPx, + rightDisplacedHeadPx, + modLeftPx, + modRightPx, + totalLeftPx, + totalRightPx, + }; + } + getCurrentTick() { + return this.currentTick; + } + setCurrentTick(tick) { + this.currentTick = tick; + this.preFormatted = false; + } + addTickable(tickable, voiceIndex) { + if (!tickable) { + throw new RuntimeError('BadArgument', 'Invalid tickable added.'); + } + if (!tickable.shouldIgnoreTicks()) { + const ticks = tickable.getTicks(); + if (ticks.greaterThan(this.maxTicks)) { + this.maxTicks = ticks.clone(); + this.maxTickable = tickable; + } + if (this.minTicks == null) { + this.minTicks = ticks.clone(); + this.minTickable = tickable; + } + else if (ticks.lessThan(this.minTicks)) { + this.minTicks = ticks.clone(); + this.minTickable = tickable; + } + } + tickable.setTickContext(this); + this.tickables.push(tickable); + this.tickablesByVoice[voiceIndex || 0] = tickable; + this.preFormatted = false; + return this; + } + preFormat() { + if (this.preFormatted) + return this; + for (let i = 0; i < this.tickables.length; ++i) { + const tickable = this.tickables[i]; + tickable.preFormat(); + const metrics = tickable.getMetrics(); + this.leftDisplacedHeadPx = Math.max(this.leftDisplacedHeadPx, metrics.leftDisplacedHeadPx); + this.rightDisplacedHeadPx = Math.max(this.rightDisplacedHeadPx, metrics.rightDisplacedHeadPx); + this.notePx = Math.max(this.notePx, metrics.notePx); + this.glyphPx = Math.max(this.glyphPx, metrics.glyphWidth || 0); + this.modLeftPx = Math.max(this.modLeftPx, metrics.modLeftPx); + this.modRightPx = Math.max(this.modRightPx, metrics.modRightPx); + this.totalLeftPx = Math.max(this.totalLeftPx, metrics.modLeftPx + metrics.leftDisplacedHeadPx); + this.totalRightPx = Math.max(this.totalRightPx, metrics.modRightPx + metrics.rightDisplacedHeadPx); + this.width = this.notePx + this.totalLeftPx + this.totalRightPx; + } + return this; + } + postFormat() { + if (this.postFormatted) + return this; + this.postFormatted = true; + return this; + } + getFormatterMetrics() { + return this.formatterMetrics; + } +} diff --git a/build/esm/src/timesigglyph.js b/build/esm/src/timesigglyph.js new file mode 100644 index 0000000000..4b786e6695 --- /dev/null +++ b/build/esm/src/timesigglyph.js @@ -0,0 +1,85 @@ +import { Glyph } from './glyph.js'; +import { defined } from './util.js'; +export class TimeSignatureGlyph extends Glyph { + constructor(timeSignature, topDigits, botDigits, code, point, options) { + var _a; + super(code, point, options); + this.timeSignature = timeSignature; + this.topGlyphs = []; + this.botGlyphs = []; + let topWidth = 0; + for (let i = 0; i < topDigits.length; ++i) { + let timeSigType = topDigits[i]; + switch (topDigits[i]) { + case '-': + timeSigType = 'Minus'; + break; + case '+': + timeSigType = botDigits.length > 0 ? 'PlusSmall' : 'Plus'; + break; + case '(': + timeSigType = botDigits.length > 0 ? 'ParensLeftSmall' : 'ParensLeft'; + break; + case ')': + timeSigType = botDigits.length > 0 ? 'ParensRightSmall' : 'ParensRight'; + break; + } + const topGlyph = new Glyph('timeSig' + timeSigType, this.timeSignature.point); + this.topGlyphs.push(topGlyph); + topWidth += (_a = topGlyph.getMetrics().width) !== null && _a !== void 0 ? _a : 0; + } + let botWidth = 0; + for (let i = 0; i < botDigits.length; ++i) { + let timeSigType = botDigits[i]; + switch (botDigits[i]) { + case '+': + timeSigType = 'PlusSmall'; + break; + case '(': + timeSigType = 'ParensLeftSmall'; + break; + case ')': + timeSigType = 'ParensRightSmall'; + break; + } + const botGlyph = new Glyph('timeSig' + timeSigType, this.timeSignature.point); + this.botGlyphs.push(botGlyph); + botWidth += defined(botGlyph.getMetrics().width); + } + this.width = Math.max(topWidth, botWidth); + this.xMin = this.getMetrics().x_min; + this.topStartX = (this.width - topWidth) / 2.0; + this.botStartX = (this.width - botWidth) / 2.0; + this.reset(); + } + getMetrics() { + return { + x_min: this.xMin, + x_max: this.xMin + this.width, + width: this.width, + }; + } + renderToStave(x) { + const stave = this.checkStave(); + const ctx = this.checkContext(); + let start_x = x + this.topStartX; + let y = 0; + if (this.botGlyphs.length > 0) + y = stave.getYForLine(this.timeSignature.topLine); + else + y = (stave.getYForLine(this.timeSignature.topLine) + stave.getYForLine(this.timeSignature.bottomLine)) / 2; + for (let i = 0; i < this.topGlyphs.length; ++i) { + const glyph = this.topGlyphs[i]; + Glyph.renderOutline(ctx, glyph.getMetrics().outline, this.scale, start_x + this.x_shift, y); + start_x += defined(glyph.getMetrics().width); + } + start_x = x + this.botStartX; + y = stave.getYForLine(this.timeSignature.bottomLine); + for (let i = 0; i < this.botGlyphs.length; ++i) { + const glyph = this.botGlyphs[i]; + this.timeSignature.placeGlyphOnLine(glyph, stave, 0); + Glyph.renderOutline(ctx, glyph.getMetrics().outline, this.scale, start_x + glyph.getMetrics().x_shift, y); + start_x += defined(glyph.getMetrics().width); + } + } +} diff --git a/build/esm/src/timesignature.js b/build/esm/src/timesignature.js new file mode 100644 index 0000000000..bca5eb8f21 --- /dev/null +++ b/build/esm/src/timesignature.js @@ -0,0 +1,89 @@ +import { Glyph } from './glyph.js'; +import { StaveModifier, StaveModifierPosition } from './stavemodifier.js'; +import { Tables } from './tables.js'; +import { TimeSignatureGlyph } from './timesigglyph.js'; +import { defined, RuntimeError } from './util.js'; +const assertIsValidTimeSig = (timeSpec) => { + const numbers = timeSpec.split('/'); + if (numbers.length !== 2 && numbers[0] !== '+' && numbers[0] !== '-') { + throw new RuntimeError('BadTimeSignature', `Invalid time spec: ${timeSpec}. Must be in the form "/"`); + } + numbers.forEach((number) => { + if (/^[0-9+\-()]+$/.test(number) == false) { + throw new RuntimeError('BadTimeSignature', `Invalid time spec: ${timeSpec}. Must contain valid signatures.`); + } + }); +}; +export class TimeSignature extends StaveModifier { + constructor(timeSpec = '4/4', customPadding = 15, validate_args = true) { + super(); + this.validate_args = validate_args; + const padding = customPadding; + const musicFont = Tables.currentMusicFont(); + this.point = musicFont.lookupMetric('digits.point'); + const fontLineShift = musicFont.lookupMetric('digits.shiftLine', 0); + this.topLine = 2 + fontLineShift; + this.bottomLine = 4 + fontLineShift; + this.setPosition(StaveModifierPosition.BEGIN); + this.info = this.parseTimeSpec(timeSpec); + this.setWidth(defined(this.info.glyph.getMetrics().width)); + this.setPadding(padding); + } + static get CATEGORY() { + return "TimeSignature"; + } + static get glyphs() { + return { + C: { + code: 'timeSigCommon', + point: 40, + line: 2, + }, + 'C|': { + code: 'timeSigCutCommon', + point: 40, + line: 2, + }, + }; + } + parseTimeSpec(timeSpec) { + var _a, _b; + if (timeSpec === 'C' || timeSpec === 'C|') { + const { line, code, point } = TimeSignature.glyphs[timeSpec]; + return { + line, + num: false, + glyph: new Glyph(code, point), + }; + } + if (this.validate_args) { + assertIsValidTimeSig(timeSpec); + } + const parts = timeSpec.split('/'); + return { + num: true, + glyph: this.makeTimeSignatureGlyph((_a = parts[0]) !== null && _a !== void 0 ? _a : '', (_b = parts[1]) !== null && _b !== void 0 ? _b : ''), + }; + } + makeTimeSignatureGlyph(topDigits, botDigits) { + return new TimeSignatureGlyph(this, topDigits, botDigits, 'timeSig0', this.point); + } + getInfo() { + return this.info; + } + setTimeSig(timeSpec) { + this.info = this.parseTimeSpec(timeSpec); + return this; + } + draw() { + const stave = this.checkStave(); + const ctx = stave.checkContext(); + this.setRendered(); + ctx.openGroup('timesignature', this.getAttribute('id')); + this.info.glyph.setStave(stave); + this.info.glyph.setContext(ctx); + this.placeGlyphOnLine(this.info.glyph, stave, this.info.line); + this.info.glyph.renderToStave(this.x); + ctx.closeGroup(); + } +} diff --git a/build/esm/src/timesignote.js b/build/esm/src/timesignote.js new file mode 100644 index 0000000000..09e9518a82 --- /dev/null +++ b/build/esm/src/timesignote.js @@ -0,0 +1,32 @@ +import { Note } from './note.js'; +import { TimeSignature } from './timesignature.js'; +export class TimeSigNote extends Note { + constructor(timeSpec, customPadding) { + super({ duration: 'b' }); + const timeSignature = new TimeSignature(timeSpec, customPadding); + this.timeSigInfo = timeSignature.getInfo(); + this.setWidth(this.timeSigInfo.glyph.getMetrics().width); + this.ignore_ticks = true; + } + static get CATEGORY() { + return "TimeSigNote"; + } + addToModifierContext(mc) { + return this; + } + preFormat() { + this.preFormatted = true; + return this; + } + draw() { + const stave = this.checkStave(); + const ctx = this.checkContext(); + this.setRendered(); + if (!this.timeSigInfo.glyph.getContext()) { + this.timeSigInfo.glyph.setContext(ctx); + } + this.timeSigInfo.glyph.setStave(stave); + this.timeSigInfo.glyph.setYShift(stave.getYForLine(2) - stave.getYForGlyphs()); + this.timeSigInfo.glyph.renderToStave(this.getAbsoluteX()); + } +} diff --git a/build/esm/src/tremolo.js b/build/esm/src/tremolo.js new file mode 100644 index 0000000000..c76512f516 --- /dev/null +++ b/build/esm/src/tremolo.js @@ -0,0 +1,47 @@ +import { Glyph } from './glyph.js'; +import { GraceNote } from './gracenote.js'; +import { Modifier } from './modifier.js'; +import { Stem } from './stem.js'; +import { Tables } from './tables.js'; +import { isGraceNote } from './typeguard.js'; +export class Tremolo extends Modifier { + constructor(num) { + super(); + this.num = num; + this.position = Modifier.Position.CENTER; + this.code = 'tremolo1'; + this.y_spacing_scale = 1; + this.extra_stroke_scale = 1; + } + static get CATEGORY() { + return "Tremolo"; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const stemDirection = note.getStemDirection(); + const start = note.getModifierStartXY(this.position, this.index); + let x = start.x; + const gn = isGraceNote(note); + const scale = gn ? GraceNote.SCALE : 1; + const category = `tremolo.${gn ? 'grace' : 'default'}`; + const musicFont = Tables.currentMusicFont(); + let y_spacing = musicFont.lookupMetric(`${category}.spacing`) * stemDirection; + y_spacing *= this.y_spacing_scale; + const height = this.num * y_spacing; + let y = note.getStemExtents().baseY - height; + if (stemDirection < 0) { + y += musicFont.lookupMetric(`${category}.offsetYStemDown`) * scale; + } + else { + y += musicFont.lookupMetric(`${category}.offsetYStemUp`) * scale; + } + const fontScale = musicFont.lookupMetric(`${category}.point`); + x += musicFont.lookupMetric(`${category}.offsetXStem${stemDirection === Stem.UP ? 'Up' : 'Down'}`); + for (let i = 0; i < this.num; ++i) { + Glyph.renderGlyph(ctx, x, y, fontScale, this.code, { category, scale: this.extra_stroke_scale }); + y += y_spacing; + } + } +} diff --git a/build/esm/src/tuning.js b/build/esm/src/tuning.js new file mode 100644 index 0000000000..3051bd8a4e --- /dev/null +++ b/build/esm/src/tuning.js @@ -0,0 +1,54 @@ +import { Tables } from './tables.js'; +import { RuntimeError } from './util.js'; +export class Tuning { + constructor(tuningString = 'E/5,B/4,G/4,D/4,A/3,E/3,B/2,E/2') { + this.tuningValues = []; + this.setTuning(tuningString); + } + static get names() { + return { + standard: 'E/5,B/4,G/4,D/4,A/3,E/3', + dagdad: 'D/5,A/4,G/4,D/4,A/3,D/3', + dropd: 'E/5,B/4,G/4,D/4,A/3,D/3', + eb: 'Eb/5,Bb/4,Gb/4,Db/4,Ab/3,Db/3', + standardBanjo: 'D/5,B/4,G/4,D/4,G/5', + }; + } + noteToInteger(noteString) { + return Tables.keyProperties(noteString).int_value; + } + setTuning(tuningString) { + if (Tuning.names[tuningString]) { + tuningString = Tuning.names[tuningString]; + } + this.tuningValues = []; + const keys = tuningString.split(/\s*,\s*/); + if (keys.length === 0) { + throw new RuntimeError('BadArguments', `Invalid tuning string: ${tuningString}`); + } + for (let i = 0; i < keys.length; ++i) { + this.tuningValues[i] = this.noteToInteger(keys[i]); + } + } + getValueForString(stringNum) { + const s = Number(stringNum); + if (s < 1 || s > this.tuningValues.length) { + throw new RuntimeError('BadArguments', `String number must be between 1 and ${this.tuningValues.length}:${stringNum}`); + } + return this.tuningValues[s - 1]; + } + getValueForFret(fretNum, stringNum) { + const stringValue = this.getValueForString(stringNum); + const f = Number(fretNum); + if (f < 0) { + throw new RuntimeError('BadArguments', `Fret number must be 0 or higher: ${fretNum}`); + } + return stringValue + f; + } + getNoteForFret(fretNum, stringNum) { + const noteValue = this.getValueForFret(fretNum, stringNum); + const octave = Math.floor(noteValue / 12); + const value = noteValue % 12; + return `${Tables.integerToNote(value)}/${octave}`; + } +} diff --git a/build/esm/src/tuplet.js b/build/esm/src/tuplet.js new file mode 100644 index 0000000000..191153b3b1 --- /dev/null +++ b/build/esm/src/tuplet.js @@ -0,0 +1,240 @@ +import { Element } from './element.js'; +import { Formatter } from './formatter.js'; +import { Glyph } from './glyph.js'; +import { Stem } from './stem.js'; +import { Tables } from './tables.js'; +import { defined, RuntimeError } from './util.js'; +export class Tuplet extends Element { + constructor(notes, options = {}) { + super(); + this.numerator_glyphs = []; + this.denom_glyphs = []; + if (!notes || !notes.length) { + throw new RuntimeError('BadArguments', 'No notes provided for tuplet.'); + } + this.options = options; + this.notes = notes; + this.num_notes = this.options.num_notes != undefined ? this.options.num_notes : notes.length; + if (this.options.beats_occupied) { + this.beatsOccupiedDeprecationWarning(); + } + this.notes_occupied = this.options.notes_occupied || this.options.beats_occupied || 2; + if (this.options.bracketed != undefined) { + this.bracketed = this.options.bracketed; + } + else { + this.bracketed = notes.some((note) => !note.hasBeam()); + } + this.ratioed = + this.options.ratioed != undefined ? this.options.ratioed : Math.abs(this.notes_occupied - this.num_notes) > 1; + this.point = Tables.currentMusicFont().lookupMetric('digits.tupletPoint'); + this.y_pos = 16; + this.x_pos = 100; + this.width = 200; + this.setTupletLocation(this.options.location || Tuplet.LOCATION_TOP); + Formatter.AlignRestsToNotes(notes, true, true); + this.resolveGlyphs(); + this.attach(); + } + static get CATEGORY() { + return "Tuplet"; + } + static get LOCATION_TOP() { + return 1; + } + static get LOCATION_BOTTOM() { + return -1; + } + static get NESTING_OFFSET() { + return 15; + } + static get metrics() { + return Tables.currentMusicFont().getMetrics().glyphs.tuplet; + } + attach() { + for (let i = 0; i < this.notes.length; i++) { + const note = this.notes[i]; + note.setTuplet(this); + } + } + detach() { + for (let i = 0; i < this.notes.length; i++) { + const note = this.notes[i]; + note.resetTuplet(this); + } + } + setBracketed(bracketed) { + this.bracketed = !!bracketed; + return this; + } + setRatioed(ratioed) { + this.ratioed = !!ratioed; + return this; + } + setTupletLocation(location) { + if (location !== Tuplet.LOCATION_TOP && location !== Tuplet.LOCATION_BOTTOM) { + console.warn(`Invalid tuplet location [${location}]. Using Tuplet.LOCATION_TOP.`); + location = Tuplet.LOCATION_TOP; + } + this.location = location; + return this; + } + getNotes() { + return this.notes; + } + getNoteCount() { + return this.num_notes; + } + beatsOccupiedDeprecationWarning() { + console.warn('beats_occupied has been deprecated as an option for tuplets. Please use notes_occupied instead.', 'Calls to getBeatsOccupied / setBeatsOccupied should now be routed to getNotesOccupied / setNotesOccupied.', 'The old methods will be removed in VexFlow 5.0.'); + } + getBeatsOccupied() { + this.beatsOccupiedDeprecationWarning(); + return this.getNotesOccupied(); + } + setBeatsOccupied(beats) { + this.beatsOccupiedDeprecationWarning(); + return this.setNotesOccupied(beats); + } + getNotesOccupied() { + return this.notes_occupied; + } + setNotesOccupied(notes) { + this.detach(); + this.notes_occupied = notes; + this.resolveGlyphs(); + this.attach(); + } + resolveGlyphs() { + this.numerator_glyphs = []; + let n = this.num_notes; + while (n >= 1) { + this.numerator_glyphs.unshift(new Glyph('timeSig' + (n % 10), this.point)); + n = parseInt((n / 10).toString(), 10); + } + this.denom_glyphs = []; + n = this.notes_occupied; + while (n >= 1) { + this.denom_glyphs.unshift(new Glyph('timeSig' + (n % 10), this.point)); + n = parseInt((n / 10).toString(), 10); + } + } + getNestedTupletCount() { + const location = this.location; + const first_note = this.notes[0]; + let maxTupletCount = countTuplets(first_note, location); + let minTupletCount = countTuplets(first_note, location); + function countTuplets(note, location) { + return note.getTupletStack().filter((tuplet) => tuplet.location === location).length; + } + this.notes.forEach((note) => { + const tupletCount = countTuplets(note, location); + maxTupletCount = tupletCount > maxTupletCount ? tupletCount : maxTupletCount; + minTupletCount = tupletCount < minTupletCount ? tupletCount : minTupletCount; + }); + return maxTupletCount - minTupletCount; + } + getYPosition() { + const nested_tuplet_y_offset = this.getNestedTupletCount() * Tuplet.NESTING_OFFSET * -this.location; + const y_offset = this.options.y_offset || 0; + const first_note = this.notes[0]; + let y_pos; + if (this.location === Tuplet.LOCATION_TOP) { + y_pos = first_note.checkStave().getYForLine(0) - Tuplet.metrics.topModifierOffset; + for (let i = 0; i < this.notes.length; ++i) { + const note = this.notes[i]; + let modLines = 0; + const mc = note.getModifierContext(); + if (mc) { + modLines = Math.max(modLines, mc.getState().top_text_line); + } + const modY = note.getYForTopText(modLines) - Tuplet.metrics.noteHeadOffset; + if (note.hasStem() || note.isRest()) { + const top_y = note.getStemDirection() === Stem.UP + ? note.getStemExtents().topY - Tuplet.metrics.stemOffset + : note.getStemExtents().baseY - Tuplet.metrics.noteHeadOffset; + y_pos = Math.min(top_y, y_pos); + if (modLines > 0) { + y_pos = Math.min(modY, y_pos); + } + } + } + } + else { + let lineCheck = Tuplet.metrics.bottomLine; + this.notes.forEach((nn) => { + const mc = nn.getModifierContext(); + if (mc) { + lineCheck = Math.max(lineCheck, mc.getState().text_line + 1); + } + }); + y_pos = first_note.checkStave().getYForLine(lineCheck) + Tuplet.metrics.noteHeadOffset; + for (let i = 0; i < this.notes.length; ++i) { + if (this.notes[i].hasStem() || this.notes[i].isRest()) { + const bottom_y = this.notes[i].getStemDirection() === Stem.UP + ? this.notes[i].getStemExtents().baseY + Tuplet.metrics.noteHeadOffset + : this.notes[i].getStemExtents().topY + Tuplet.metrics.stemOffset; + if (bottom_y > y_pos) { + y_pos = bottom_y; + } + } + } + } + return y_pos + nested_tuplet_y_offset + y_offset; + } + draw() { + const ctx = this.checkContext(); + this.setRendered(); + const first_note = this.notes[0]; + const last_note = this.notes[this.notes.length - 1]; + if (!this.bracketed) { + this.x_pos = first_note.getStemX(); + this.width = last_note.getStemX() - this.x_pos; + } + else { + this.x_pos = first_note.getTieLeftX() - 5; + this.width = last_note.getTieRightX() - this.x_pos + 5; + } + this.y_pos = this.getYPosition(); + const addGlyphWidth = (width, glyph) => width + defined(glyph.getMetrics().width); + let width = this.numerator_glyphs.reduce(addGlyphWidth, 0); + if (this.ratioed) { + width = this.denom_glyphs.reduce(addGlyphWidth, width); + width += this.point * 0.32; + } + const notation_center_x = this.x_pos + this.width / 2; + const notation_start_x = notation_center_x - width / 2; + if (this.bracketed) { + const line_width = this.width / 2 - width / 2 - 5; + if (line_width > 0) { + ctx.fillRect(this.x_pos, this.y_pos, line_width, 1); + ctx.fillRect(this.x_pos + this.width / 2 + width / 2 + 5, this.y_pos, line_width, 1); + ctx.fillRect(this.x_pos, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM ? 1 : 0), 1, this.location * 10); + ctx.fillRect(this.x_pos + this.width, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM ? 1 : 0), 1, this.location * 10); + } + } + const shiftY = Tables.currentMusicFont().lookupMetric('digits.shiftY', 0); + let x_offset = 0; + this.numerator_glyphs.forEach((glyph) => { + glyph.render(ctx, notation_start_x + x_offset, this.y_pos + this.point / 3 - 2 + shiftY); + x_offset += defined(glyph.getMetrics().width); + }); + if (this.ratioed) { + const colon_x = notation_start_x + x_offset + this.point * 0.16; + const colon_radius = this.point * 0.06; + ctx.beginPath(); + ctx.arc(colon_x, this.y_pos - this.point * 0.08, colon_radius, 0, Math.PI * 2, false); + ctx.closePath(); + ctx.fill(); + ctx.beginPath(); + ctx.arc(colon_x, this.y_pos + this.point * 0.12, colon_radius, 0, Math.PI * 2, false); + ctx.closePath(); + ctx.fill(); + x_offset += this.point * 0.32; + this.denom_glyphs.forEach((glyph) => { + glyph.render(ctx, notation_start_x + x_offset, this.y_pos + this.point / 3 - 2 + shiftY); + x_offset += defined(glyph.getMetrics().width); + }); + } + } +} diff --git a/build/esm/src/typeguard.js b/build/esm/src/typeguard.js new file mode 100644 index 0000000000..bc5cfbd703 --- /dev/null +++ b/build/esm/src/typeguard.js @@ -0,0 +1,30 @@ +export function isCategory(obj, category, checkAncestors = true) { + if (typeof obj !== 'object' || obj === null) { + return false; + } + let constructorFcn = obj.constructor; + if (checkAncestors) { + while (obj !== null) { + constructorFcn = obj.constructor; + if ('CATEGORY' in constructorFcn && constructorFcn.CATEGORY === category) { + return true; + } + obj = Object.getPrototypeOf(obj); + } + return false; + } + else { + return 'CATEGORY' in constructorFcn && constructorFcn.CATEGORY === category; + } +} +export const isAccidental = (obj) => isCategory(obj, "Accidental"); +export const isAnnotation = (obj) => isCategory(obj, "Annotation"); +export const isBarline = (obj) => isCategory(obj, "Barline"); +export const isDot = (obj) => isCategory(obj, "Dot"); +export const isGraceNote = (obj) => isCategory(obj, "GraceNote"); +export const isGraceNoteGroup = (obj) => isCategory(obj, "GraceNoteGroup"); +export const isNote = (obj) => isCategory(obj, "Note"); +export const isRenderContext = (obj) => isCategory(obj, "RenderContext"); +export const isStaveNote = (obj) => isCategory(obj, "StaveNote"); +export const isStemmableNote = (obj) => isCategory(obj, "StemmableNote"); +export const isTabNote = (obj) => isCategory(obj, "TabNote"); diff --git a/build/esm/src/util.js b/build/esm/src/util.js new file mode 100644 index 0000000000..3a3c51137c --- /dev/null +++ b/build/esm/src/util.js @@ -0,0 +1,58 @@ +export class RuntimeError extends Error { + constructor(code, message = '') { + super('[RuntimeError] ' + code + ': ' + message); + this.code = code; + } +} +export function globalObject() { + if (typeof globalThis !== 'undefined') { + return globalThis; + } + if (typeof self !== 'undefined') { + return self; + } + if (typeof window !== 'undefined') { + return window; + } + if (typeof global !== 'undefined') { + return global; + } + return Function('return this')(); +} +export function defined(x, code = 'undefined', message = '') { + if (x === undefined) { + throw new RuntimeError(code, message); + } + return x; +} +export function log(block, ...args) { + if (!args) + return; + const line = Array.prototype.slice.call(args).join(' '); + globalObject().console.log(block + ': ' + line); +} +export function warn(...args) { + const line = args.join(' '); + const err = new Error(); + globalObject().console.log('Warning: ', line, err.stack); +} +function roundN(x, n) { + return x % n >= n / 2 ? parseInt(`${x / n}`, 10) * n + n : parseInt(`${x / n}`, 10) * n; +} +export function midLine(a, b) { + let mid_line = b + (a - b) / 2; + if (mid_line % 2 > 0) { + mid_line = roundN(mid_line * 10, 5) / 10; + } + return mid_line; +} +export function prefix(text) { + return `vf-${text}`; +} +export function normalizeAngle(a) { + a = a % (2 * Math.PI); + if (a < 0) { + a += 2 * Math.PI; + } + return a; +} diff --git a/build/esm/src/version.js b/build/esm/src/version.js new file mode 100644 index 0000000000..11165e0d20 --- /dev/null +++ b/build/esm/src/version.js @@ -0,0 +1,3 @@ +export const VERSION = '4.1.0-alpha.0'; +export const ID = '847bc9014672858aedc7f8460384f51f98d6bd84'; +export const DATE = '2022-10-10T04:47:38.237Z'; \ No newline at end of file diff --git a/build/esm/src/vex.js b/build/esm/src/vex.js new file mode 100644 index 0000000000..fbb7026a5b --- /dev/null +++ b/build/esm/src/vex.js @@ -0,0 +1,51 @@ +import { Flow } from './flow.js'; +import { log, RuntimeError } from './util.js'; +export class Vex { + static sortAndUnique(arr, cmp, eq) { + if (arr.length > 1) { + const newArr = []; + let last; + arr.sort(cmp); + for (let i = 0; i < arr.length; ++i) { + if (i === 0 || !eq(arr[i], last)) { + newArr.push(arr[i]); + } + last = arr[i]; + } + return newArr; + } + else { + return arr; + } + } + static contains(arr, obj) { + let i = arr.length; + while (i--) { + if (arr[i] === obj) { + return true; + } + } + return false; + } + static getCanvasContext(canvasSelector) { + if (!canvasSelector) { + throw new RuntimeError('BadArgument', 'Invalid canvas selector: ' + canvasSelector); + } + const canvas = document.getElementById(canvasSelector); + if (!(canvas && canvas.getContext)) { + throw new RuntimeError('UnsupportedBrowserError', 'This browser does not support HTML5 Canvas'); + } + return canvas.getContext('2d'); + } + static benchmark(s, f) { + const start_time = new Date().getTime(); + f(); + const elapsed = new Date().getTime() - start_time; + log(s, elapsed + 'ms'); + } + static stackTrace() { + const err = new Error(); + return err.stack; + } +} +Vex.Flow = Flow; diff --git a/build/esm/src/vibrato.js b/build/esm/src/vibrato.js new file mode 100644 index 0000000000..2d29233ea7 --- /dev/null +++ b/build/esm/src/vibrato.js @@ -0,0 +1,100 @@ +import { Bend } from './bend.js'; +import { Modifier } from './modifier.js'; +import { Tables } from './tables.js'; +export class Vibrato extends Modifier { + constructor() { + super(); + this.position = Modifier.Position.RIGHT; + this.render_options = { + harsh: false, + vibrato_width: 20, + wave_height: 6, + wave_width: 4, + wave_girth: 2, + }; + this.setVibratoWidth(this.render_options.vibrato_width); + } + static get CATEGORY() { + return "Vibrato"; + } + static format(vibratos, state, context) { + if (!vibratos || vibratos.length === 0) + return false; + let text_line = state.top_text_line; + let width = 0; + let shift = state.right_shift - 7; + const bends = context.getMembers(Bend.CATEGORY); + if (bends && bends.length > 0) { + const bendHeight = bends.map((bb) => bb.getTextHeight()).reduce((a, b) => (a > b ? a : b)) / Tables.STAVE_LINE_DISTANCE; + text_line = text_line - (bendHeight + 1); + } + else { + state.top_text_line += 1; + } + for (let i = 0; i < vibratos.length; ++i) { + const vibrato = vibratos[i]; + vibrato.setXShift(shift); + vibrato.setTextLine(text_line); + width += vibrato.getWidth(); + shift += width; + } + state.right_shift += width; + return true; + } + setHarsh(harsh) { + this.render_options.harsh = harsh; + return this; + } + setVibratoWidth(width) { + this.render_options.vibrato_width = width; + this.setWidth(width); + return this; + } + draw() { + const ctx = this.checkContext(); + const note = this.checkAttachedNote(); + this.setRendered(); + const start = note.getModifierStartXY(Modifier.Position.RIGHT, this.index); + const vx = start.x + this.x_shift; + const vy = note.getYForTopText(this.text_line) + 2; + Vibrato.renderVibrato(ctx, vx, vy, this.render_options); + } + static renderVibrato(ctx, x, y, opts) { + const { harsh, vibrato_width, wave_width, wave_girth, wave_height } = opts; + const num_waves = vibrato_width / wave_width; + ctx.beginPath(); + let i; + if (harsh) { + ctx.moveTo(x, y + wave_girth + 1); + for (i = 0; i < num_waves / 2; ++i) { + ctx.lineTo(x + wave_width, y - wave_height / 2); + x += wave_width; + ctx.lineTo(x + wave_width, y + wave_height / 2); + x += wave_width; + } + for (i = 0; i < num_waves / 2; ++i) { + ctx.lineTo(x - wave_width, y - wave_height / 2 + wave_girth + 1); + x -= wave_width; + ctx.lineTo(x - wave_width, y + wave_height / 2 + wave_girth + 1); + x -= wave_width; + } + ctx.fill(); + } + else { + ctx.moveTo(x, y + wave_girth); + for (i = 0; i < num_waves / 2; ++i) { + ctx.quadraticCurveTo(x + wave_width / 2, y - wave_height / 2, x + wave_width, y); + x += wave_width; + ctx.quadraticCurveTo(x + wave_width / 2, y + wave_height / 2, x + wave_width, y); + x += wave_width; + } + for (i = 0; i < num_waves / 2; ++i) { + ctx.quadraticCurveTo(x - wave_width / 2, y + wave_height / 2 + wave_girth, x - wave_width, y + wave_girth); + x -= wave_width; + ctx.quadraticCurveTo(x - wave_width / 2, y - wave_height / 2 + wave_girth, x - wave_width, y + wave_girth); + x -= wave_width; + } + ctx.fill(); + } + } +} diff --git a/build/esm/src/vibratobracket.js b/build/esm/src/vibratobracket.js new file mode 100644 index 0000000000..24a6487803 --- /dev/null +++ b/build/esm/src/vibratobracket.js @@ -0,0 +1,50 @@ +import { Element } from './element.js'; +import { log } from './util.js'; +import { Vibrato } from './vibrato.js'; +function L(...args) { + if (VibratoBracket.DEBUG) + log('Vex.Flow.VibratoBracket', args); +} +export class VibratoBracket extends Element { + constructor(bracket_data) { + super(); + if (bracket_data.start) + this.start = bracket_data.start; + if (bracket_data.stop) + this.stop = bracket_data.stop; + this.line = 1; + this.render_options = { + harsh: false, + wave_height: 6, + wave_width: 4, + wave_girth: 2, + vibrato_width: 0, + }; + } + static get CATEGORY() { + return "VibratoBracket"; + } + setLine(line) { + this.line = line; + return this; + } + setHarsh(harsh) { + this.render_options.harsh = harsh; + return this; + } + draw() { + const ctx = this.checkContext(); + this.setRendered(); + const y = (this.start && this.start.checkStave().getYForTopText(this.line)) || + (this.stop && this.stop.checkStave().getYForTopText(this.line)) || + 0; + const start_x = (this.start && this.start.getAbsoluteX()) || (this.stop && this.stop.checkStave().getTieStartX()) || 0; + const stop_x = (this.stop && this.stop.getAbsoluteX() - this.stop.getWidth() - 5) || + (this.start && this.start.checkStave().getTieEndX() - 10) || + 0; + this.render_options.vibrato_width = stop_x - start_x; + L('Rendering VibratoBracket: start_x:', start_x, 'stop_x:', stop_x, 'y:', y); + Vibrato.renderVibrato(ctx, start_x, y, this.render_options); + } +} +VibratoBracket.DEBUG = false; diff --git a/build/esm/src/voice.js b/build/esm/src/voice.js new file mode 100644 index 0000000000..98a84dedf8 --- /dev/null +++ b/build/esm/src/voice.js @@ -0,0 +1,189 @@ +import { Element } from './element.js'; +import { Fraction } from './fraction.js'; +import { Tables } from './tables.js'; +import { defined, RuntimeError } from './util.js'; +export var VoiceMode; +(function (VoiceMode) { + VoiceMode[VoiceMode["STRICT"] = 1] = "STRICT"; + VoiceMode[VoiceMode["SOFT"] = 2] = "SOFT"; + VoiceMode[VoiceMode["FULL"] = 3] = "FULL"; +})(VoiceMode || (VoiceMode = {})); +export class Voice extends Element { + constructor(time) { + super(); + this.resolutionMultiplier = 1; + this.mode = VoiceMode.STRICT; + this.preFormatted = false; + this.ticksUsed = new Fraction(0, 1); + this.largestTickWidth = 0; + this.tickables = []; + this.options = { + softmaxFactor: Tables.SOFTMAX_FACTOR, + }; + let voiceTime; + if (typeof time === 'string') { + const match = time.match(/(\d+)\/(\d+)/); + if (match) { + voiceTime = { + num_beats: parseInt(match[1]), + beat_value: parseInt(match[2]), + }; + } + } + else { + voiceTime = time; + } + this.time = Object.assign({ num_beats: 4, beat_value: 4, resolution: Tables.RESOLUTION }, voiceTime); + this.totalTicks = new Fraction(this.time.num_beats * (this.time.resolution / this.time.beat_value), 1); + this.smallestTickCount = this.totalTicks.clone(); + } + static get CATEGORY() { + return "Voice"; + } + static get Mode() { + return VoiceMode; + } + getTotalTicks() { + return this.totalTicks; + } + getTicksUsed() { + return this.ticksUsed; + } + getLargestTickWidth() { + return this.largestTickWidth; + } + getSmallestTickCount() { + return this.smallestTickCount; + } + getTickables() { + return this.tickables; + } + getMode() { + return this.mode; + } + setMode(mode) { + this.mode = mode; + return this; + } + getResolutionMultiplier() { + return this.resolutionMultiplier; + } + getActualResolution() { + return this.resolutionMultiplier * this.time.resolution; + } + setStave(stave) { + this.stave = stave; + this.boundingBox = undefined; + return this; + } + getStave() { + return this.stave; + } + getBoundingBox() { + if (!this.boundingBox) { + const stave = this.checkStave(); + let boundingBox = undefined; + for (let i = 0; i < this.tickables.length; ++i) { + const tickable = this.tickables[i]; + tickable.setStave(stave); + const bb = tickable.getBoundingBox(); + if (bb) { + boundingBox = boundingBox ? boundingBox.mergeWith(bb) : bb; + } + } + this.boundingBox = boundingBox; + } + return this.boundingBox; + } + setStrict(strict) { + this.mode = strict ? VoiceMode.STRICT : VoiceMode.SOFT; + return this; + } + isComplete() { + if (this.mode === VoiceMode.STRICT || this.mode === VoiceMode.FULL) { + return this.ticksUsed.equals(this.totalTicks); + } + else { + return true; + } + } + setSoftmaxFactor(factor) { + this.options.softmaxFactor = factor; + return this; + } + reCalculateExpTicksUsed() { + const totalTicks = this.ticksUsed.value(); + const exp = (tickable) => Math.pow(this.options.softmaxFactor, tickable.getTicks().value() / totalTicks); + this.expTicksUsed = this.tickables.map(exp).reduce((a, b) => a + b, 0); + return this.expTicksUsed; + } + softmax(tickValue) { + if (!this.expTicksUsed) { + this.expTicksUsed = this.reCalculateExpTicksUsed(); + } + const totalTicks = this.ticksUsed.value(); + const exp = (v) => Math.pow(this.options.softmaxFactor, v / totalTicks); + const sm = exp(tickValue) / this.expTicksUsed; + return sm; + } + addTickable(tickable) { + if (!tickable.shouldIgnoreTicks()) { + const ticks = tickable.getTicks(); + this.ticksUsed.add(ticks); + this.expTicksUsed = 0; + if ((this.mode === VoiceMode.STRICT || this.mode === VoiceMode.FULL) && + this.ticksUsed.greaterThan(this.totalTicks)) { + this.ticksUsed.subtract(ticks); + throw new RuntimeError('BadArgument', 'Too many ticks.'); + } + if (ticks.lessThan(this.smallestTickCount)) { + this.smallestTickCount = ticks.clone(); + } + this.resolutionMultiplier = this.ticksUsed.denominator; + this.totalTicks.add(0, this.ticksUsed.denominator); + } + this.tickables.push(tickable); + tickable.setVoice(this); + return this; + } + addTickables(tickables) { + for (let i = 0; i < tickables.length; ++i) { + this.addTickable(tickables[i]); + } + return this; + } + preFormat() { + if (this.preFormatted) + return this; + const stave = this.checkStave(); + this.tickables.forEach((tickable) => { + if (!tickable.getStave()) { + tickable.setStave(stave); + } + }); + this.preFormatted = true; + return this; + } + checkStave() { + return defined(this.stave, 'NoStave', 'No stave attached to instance.'); + } + draw(context = this.checkContext(), stave) { + stave = stave !== null && stave !== void 0 ? stave : this.stave; + this.setRendered(); + let boundingBox = undefined; + for (let i = 0; i < this.tickables.length; ++i) { + const tickable = this.tickables[i]; + if (stave) { + tickable.setStave(stave); + } + defined(tickable.getStave(), 'MissingStave', 'The voice cannot draw tickables without staves.'); + const bb = tickable.getBoundingBox(); + if (bb) { + boundingBox = boundingBox ? boundingBox.mergeWith(bb) : bb; + } + tickable.setContext(context); + tickable.drawWithStyle(); + } + this.boundingBox = boundingBox; + } +} diff --git a/build/esm/src/web.js b/build/esm/src/web.js new file mode 100644 index 0000000000..f27804df9c --- /dev/null +++ b/build/esm/src/web.js @@ -0,0 +1,15 @@ +import { globalObject } from './util.js'; +export function isHTMLCanvas(element) { + if (!element) + return false; + const global = globalObject(); + return ((typeof global.HTMLCanvasElement === 'function' && element instanceof global.HTMLCanvasElement) || + (typeof element.getContext === 'function' && typeof element.toDataURL === 'function')); +} +export function isHTMLDiv(element) { + if (!element) + return false; + const global = globalObject(); + return ((typeof global.HTMLDivElement === 'function' && element instanceof global.HTMLDivElement) || + (typeof element.appendChild === 'function' && typeof element.style === 'object')); +} diff --git a/build/esm/tests/accidental_tests.js b/build/esm/tests/accidental_tests.js new file mode 100644 index 0000000000..fd374f8050 --- /dev/null +++ b/build/esm/tests/accidental_tests.js @@ -0,0 +1,974 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Accidental } from '../src/accidental.js'; +import { Beam } from '../src/beam.js'; +import { Dot } from '../src/dot.js'; +import { Flow } from '../src/flow.js'; +import { Formatter } from '../src/formatter.js'; +import { ModifierContext } from '../src/modifiercontext.js'; +import { Note } from '../src/note.js'; +import { Stave } from '../src/stave.js'; +import { StaveNote } from '../src/stavenote.js'; +import { Stem } from '../src/stem.js'; +import { TickContext } from '../src/tickcontext.js'; +import { TimeSigNote } from '../src/timesignote.js'; +import { isAccidental } from '../src/typeguard.js'; +import { Voice } from '../src/voice.js'; +const AccidentalTests = { + Start() { + QUnit.module('Accidental'); + test('Automatic Accidentals - Simple Tests', autoAccidentalWorking); + const run = VexFlowTests.runTests; + run('Accidental Padding', formatAccidentalSpaces); + run('Basic', basic); + run('Stem Down', basicStemDown); + run('Cautionary Accidental', cautionary); + run('Accidental Arrangement Special Cases', specialCases); + run('Multi Voice', multiVoice); + run('Microtonal', microtonal); + run('Microtonal (Iranian)', microtonal_iranian); + run('Sagittal', sagittal); + run('Automatic Accidentals', automaticAccidentals0); + run('Automatic Accidentals - C major scale in Ab', automaticAccidentals1); + run('Automatic Accidentals - No Accidentals Necessary', automaticAccidentals2); + run('Automatic Accidentals - No Accidentals Necessary (EasyScore)', automaticAccidentals3); + run('Automatic Accidentals - Multi Voice Inline', automaticAccidentalsMultiVoiceInline); + run('Automatic Accidentals - Multi Voice Offset', automaticAccidentalsMultiVoiceOffset); + run('Automatic Accidentals - Key C, Single Octave', automaticAccidentalsCornerCases1); + run('Automatic Accidentals - Key C, Two Octaves', automaticAccidentalsCornerCases2); + run('Automatic Accidentals - Key C#, Single Octave', automaticAccidentalsCornerCases3); + run('Automatic Accidentals - Key C#, Two Octaves', automaticAccidentalsCornerCases4); + run('Factory API', factoryAPI); + }, +}; +function hasAccidental(note) { + return note.getModifiers().some((modifier) => isAccidental(modifier)); +} +function makeNewAccid(factory) { + return (type) => factory.Accidental({ type }); +} +function autoAccidentalWorking() { + const createStaveNote = (noteStruct) => new StaveNote(noteStruct); + let notes = [ + { keys: ['bb/4'], duration: '4' }, + { keys: ['bb/4'], duration: '4' }, + { keys: ['g#/4'], duration: '4' }, + { keys: ['g/4'], duration: '4' }, + { keys: ['b/4'], duration: '4' }, + { keys: ['b/4'], duration: '4' }, + { keys: ['a#/4'], duration: '4' }, + { keys: ['g#/4'], duration: '4' }, + ].map(createStaveNote); + let voice = new Voice().setMode(Voice.Mode.SOFT).addTickables(notes); + Accidental.applyAccidentals([voice], 'F'); + equal(hasAccidental(notes[0]), false, 'No flat because of key signature'); + equal(hasAccidental(notes[1]), false, 'No flat because of key signature'); + equal(hasAccidental(notes[2]), true, 'Added a sharp'); + equal(hasAccidental(notes[3]), true, 'Back to natural'); + equal(hasAccidental(notes[4]), true, 'Back to natural'); + equal(hasAccidental(notes[5]), false, 'Natural remembered'); + equal(hasAccidental(notes[6]), true, 'Added sharp'); + equal(hasAccidental(notes[7]), true, 'Added sharp'); + notes = [ + { keys: ['e#/4'], duration: '4' }, + { keys: ['cb/4'], duration: '4' }, + { keys: ['fb/4'], duration: '4' }, + { keys: ['b#/4'], duration: '4' }, + { keys: ['b#/4'], duration: '4' }, + { keys: ['cb/5'], duration: '4' }, + { keys: ['fb/5'], duration: '4' }, + { keys: ['e#/4'], duration: '4' }, + ].map(createStaveNote); + voice = new Voice().setMode(Voice.Mode.SOFT).addTickables(notes); + Accidental.applyAccidentals([voice], 'A'); + equal(hasAccidental(notes[0]), true, 'Added sharp'); + equal(hasAccidental(notes[1]), true, 'Added flat'); + equal(hasAccidental(notes[2]), true, 'Added flat'); + equal(hasAccidental(notes[3]), true, 'Added sharp'); + equal(hasAccidental(notes[4]), false, 'Sharp remembered'); + equal(hasAccidental(notes[5]), true, 'Added flat(different octave)'); + equal(hasAccidental(notes[6]), true, 'Added flat(different octave)'); + equal(hasAccidental(notes[7]), false, 'sharp remembered'); + notes = [ + { keys: ['c/4'], duration: '4' }, + { keys: ['cb/4'], duration: '4' }, + { keys: ['cb/4'], duration: '4' }, + { keys: ['c#/4'], duration: '4' }, + { keys: ['c#/4'], duration: '4' }, + { keys: ['cbb/4'], duration: '4' }, + { keys: ['cbb/4'], duration: '4' }, + { keys: ['c##/4'], duration: '4' }, + { keys: ['c##/4'], duration: '4' }, + { keys: ['c/4'], duration: '4' }, + { keys: ['c/4'], duration: '4' }, + ].map(createStaveNote); + voice = new Voice().setMode(Voice.Mode.SOFT).addTickables(notes); + Accidental.applyAccidentals([voice], 'C'); + equal(hasAccidental(notes[0]), false, 'No accidental'); + equal(hasAccidental(notes[1]), true, 'Added flat'); + equal(hasAccidental(notes[2]), false, 'Flat remembered'); + equal(hasAccidental(notes[3]), true, 'Sharp added'); + equal(hasAccidental(notes[4]), false, 'Sharp remembered'); + equal(hasAccidental(notes[5]), true, 'Added doubled flat'); + equal(hasAccidental(notes[6]), false, 'Double flat remembered'); + equal(hasAccidental(notes[7]), true, 'Added double sharp'); + equal(hasAccidental(notes[8]), false, 'Double sharp rememberd'); + equal(hasAccidental(notes[9]), true, 'Added natural'); + equal(hasAccidental(notes[10]), false, 'Natural remembered'); +} +function formatAccidentalSpaces(options) { + const f = VexFlowTests.makeFactory(options, 750, 280); + const context = f.getContext(); + const softmaxFactor = 100; + const notes = [ + new StaveNote({ + keys: ['e##/5'], + duration: '8d', + }).addModifier(new Accidental('##'), 0), + new StaveNote({ + keys: ['b/4'], + duration: '16', + }).addModifier(new Accidental('b'), 0), + new StaveNote({ + keys: ['f/3'], + duration: '8', + }), + new StaveNote({ + keys: ['a/3'], + duration: '16', + }), + new StaveNote({ + keys: ['e/4', 'g/4'], + duration: '16', + }) + .addModifier(new Accidental('bb'), 0) + .addModifier(new Accidental('bb'), 1), + new StaveNote({ + keys: ['d/4'], + duration: '16', + }), + new StaveNote({ + keys: ['e/4', 'g/4'], + duration: '16', + }) + .addModifier(new Accidental('#'), 0) + .addModifier(new Accidental('#'), 1), + new StaveNote({ + keys: ['g/4'], + duration: '32', + }), + new StaveNote({ + keys: ['a/4'], + duration: '32', + }), + new StaveNote({ + keys: ['g/4'], + duration: '16', + }), + new StaveNote({ + keys: ['d/4'], + duration: 'q', + }), + ]; + Dot.buildAndAttach([notes[0]], { all: true }); + const beams = Beam.generateBeams(notes); + const voice = new Voice({ + num_beats: 4, + beat_value: 4, + }); + voice.addTickables(notes); + const formatter = new Formatter({ softmaxFactor }).joinVoices([voice]); + const width = formatter.preCalculateMinTotalWidth([voice]); + const stave = new Stave(10, 40, width + 20); + stave.setContext(context).draw(); + formatter.format([voice], width); + voice.draw(context, stave); + beams.forEach((b) => b.setContext(context).draw()); + notes.forEach((note) => Note.plotMetrics(context, note, 30)); + VexFlowTests.plotLegendForNoteWidth(context, 300, 150); + ok(true); +} +function basic(options) { + const f = VexFlowTests.makeFactory(options, 700, 240); + const accid = makeNewAccid(f); + f.Stave({ x: 10, y: 10, width: 550 }); + const notes = [ + f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: '1' }) + .addModifier(accid('b'), 0) + .addModifier(accid('#'), 1), + f + .StaveNote({ keys: ['e/4', 'f/4', 'a/4', 'c/5', 'e/5', 'g/5', 'd/4'], duration: '2' }) + .addModifier(accid('##'), 6) + .addModifier(accid('n'), 0) + .addModifier(accid('bb'), 1) + .addModifier(accid('b'), 2) + .addModifier(accid('#'), 3) + .addModifier(accid('n'), 4) + .addModifier(accid('bb'), 5), + f + .StaveNote({ keys: ['g/5', 'f/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5'], duration: '16' }) + .addModifier(accid('n'), 1) + .addModifier(accid('#'), 2) + .addModifier(accid('#'), 3) + .addModifier(accid('b'), 4) + .addModifier(accid('bb'), 5) + .addModifier(accid('##'), 6) + .addModifier(accid('#'), 0), + f + .StaveNote({ keys: ['a/3', 'c/4', 'e/4', 'b/4', 'd/5', 'g/5'], duration: '1' }) + .addModifier(accid('#'), 0) + .addModifier(accid('##').setAsCautionary(), 1) + .addModifier(accid('#').setAsCautionary(), 2) + .addModifier(accid('b'), 3) + .addModifier(accid('bb').setAsCautionary(), 4) + .addModifier(accid('b').setAsCautionary(), 5), + ]; + Formatter.SimpleFormat(notes, 10, { paddingBetween: 45 }); + notes.forEach((note, index) => { + Note.plotMetrics(f.getContext(), note, 140); + ok(note.getModifiersByType('Accidental').length > 0, 'Note ' + index + ' has accidentals'); + note.getModifiersByType('Accidental').forEach((accid, index) => { + ok(accid.getWidth() > 0, 'Accidental ' + index + ' has set width'); + }); + }); + f.draw(); + VexFlowTests.plotLegendForNoteWidth(f.getContext(), 480, 140); + ok(true, 'Full Accidental'); +} +function cautionary(options) { + const staveCount = 12; + const scale = 0.85; + const staveWidth = 840; + let i = 0; + let j = 0; + const f = VexFlowTests.makeFactory(options, staveWidth + 10, 175 * staveCount + 10); + f.getContext().scale(scale, scale); + const accids = Object.keys(Flow.accidentalMap).filter((accid) => accid !== '{' && accid !== '}'); + const mod = Math.round(accids.length / staveCount); + for (i = 0; i < staveCount; ++i) { + const stave = f.Stave({ x: 0, y: 10 + 200 * i, width: staveWidth / scale }); + const score = f.EasyScore(); + const rowMap = []; + for (j = 0; j < mod && j + i * staveCount < accids.length; ++j) { + rowMap.push(accids[j + i * staveCount]); + } + const notes = rowMap.map((accidType) => f + .StaveNote({ keys: ['a/4'], duration: '4', stem_direction: Stem.UP }) + .addModifier(f.Accidental({ type: accidType }), 0)); + const voice = score.voice(notes, { time: rowMap.length + '/4' }); + voice.getTickables().forEach((tickable) => { + tickable + .getModifiers() + .filter((modifier) => modifier.getAttribute('type') === Accidental.CATEGORY) + .forEach((accid) => accid.setAsCautionary()); + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + } + ok(true, 'Must successfully render cautionary accidentals'); +} +function specialCases(options) { + const f = VexFlowTests.makeFactory(options, 700, 240); + const accid = makeNewAccid(f); + f.Stave({ x: 10, y: 10, width: 550 }); + const notes = [ + f + .StaveNote({ keys: ['f/4', 'd/5'], duration: '1' }) + .addModifier(accid('#'), 0) + .addModifier(accid('b'), 1), + f + .StaveNote({ keys: ['c/4', 'g/4'], duration: '2' }) + .addModifier(accid('##'), 0) + .addModifier(accid('##'), 1), + f + .StaveNote({ keys: ['b/3', 'd/4', 'f/4'], duration: '16' }) + .addModifier(accid('#'), 0) + .addModifier(accid('#'), 1) + .addModifier(accid('##'), 2), + f + .StaveNote({ keys: ['g/4', 'a/4', 'c/5', 'e/5'], duration: '16' }) + .addModifier(accid('b'), 0) + .addModifier(accid('b'), 1) + .addModifier(accid('n'), 3), + f + .StaveNote({ keys: ['e/4', 'g/4', 'b/4', 'c/5'], duration: '4' }) + .addModifier(accid('b').setAsCautionary(), 0) + .addModifier(accid('b').setAsCautionary(), 1) + .addModifier(accid('bb'), 2) + .addModifier(accid('b'), 3), + f + .StaveNote({ keys: ['b/3', 'e/4', 'a/4', 'd/5', 'g/5'], duration: '8' }) + .addModifier(accid('bb'), 0) + .addModifier(accid('b').setAsCautionary(), 1) + .addModifier(accid('n').setAsCautionary(), 2) + .addModifier(accid('#'), 3) + .addModifier(accid('n').setAsCautionary(), 4), + ]; + Formatter.SimpleFormat(notes, 0, { paddingBetween: 20 }); + notes.forEach((note, index) => { + Note.plotMetrics(f.getContext(), note, 140); + ok(note.getModifiersByType('Accidental').length > 0, 'Note ' + index + ' has accidentals'); + note.getModifiersByType('Accidental').forEach((accid, index) => { + ok(accid.getWidth() > 0, 'Accidental ' + index + ' has set width'); + }); + }); + f.draw(); + VexFlowTests.plotLegendForNoteWidth(f.getContext(), 480, 140); + ok(true, 'Full Accidental'); +} +function basicStemDown(options) { + const f = VexFlowTests.makeFactory(options, 700, 240); + const accid = makeNewAccid(f); + f.Stave({ x: 10, y: 10, width: 550 }); + const notes = [ + f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: 'w', stem_direction: -1 }) + .addModifier(accid('b'), 0) + .addModifier(accid('#'), 1), + f + .StaveNote({ keys: ['d/4', 'e/4', 'f/4', 'a/4', 'c/5', 'e/5', 'g/5'], duration: '2', stem_direction: -1 }) + .addModifier(accid('##'), 0) + .addModifier(accid('n'), 1) + .addModifier(accid('bb'), 2) + .addModifier(accid('b'), 3) + .addModifier(accid('#'), 4) + .addModifier(accid('n'), 5) + .addModifier(accid('bb'), 6), + f + .StaveNote({ keys: ['f/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5', 'g/5'], duration: '16', stem_direction: -1 }) + .addModifier(accid('n'), 0) + .addModifier(accid('#'), 1) + .addModifier(accid('#'), 2) + .addModifier(accid('b'), 3) + .addModifier(accid('bb'), 4) + .addModifier(accid('##'), 5) + .addModifier(accid('#'), 6), + ]; + Formatter.SimpleFormat(notes, 0, { paddingBetween: 30 }); + notes.forEach((note, noteIndex) => { + Note.plotMetrics(f.getContext(), note, 140); + ok(note.getModifiersByType('Accidental').length > 0, 'Note ' + noteIndex + ' has accidentals'); + note.getModifiersByType('Accidental').forEach((accid, accidIndex) => { + ok(accid.getWidth() > 0, 'Accidental ' + accidIndex + ' has set width'); + }); + }); + f.draw(); + VexFlowTests.plotLegendForNoteWidth(f.getContext(), 480, 140); + ok(true, 'Full Accidental'); +} +function multiVoice(options) { + function showNotes(note1, note2, stave, ctx, x) { + const modifierContext = new ModifierContext(); + note1.addToModifierContext(modifierContext); + note2.addToModifierContext(modifierContext); + new TickContext().addTickable(note1).addTickable(note2).preFormat().setX(x); + note1.setContext(ctx).draw(); + note2.setContext(ctx).draw(); + Note.plotMetrics(ctx, note1, 180); + Note.plotMetrics(ctx, note2, 15); + } + const f = VexFlowTests.makeFactory(options, 460, 250); + const accid = makeNewAccid(f); + const stave = f.Stave({ x: 10, y: 45, width: 420 }); + const ctx = f.getContext(); + stave.draw(); + let note1 = f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: '2', stem_direction: -1 }) + .addModifier(accid('b'), 0) + .addModifier(accid('n'), 1) + .addModifier(accid('#'), 2) + .setStave(stave); + let note2 = f + .StaveNote({ keys: ['d/5', 'a/5', 'b/5'], duration: '2', stem_direction: 1 }) + .addModifier(accid('b'), 0) + .addModifier(accid('bb'), 1) + .addModifier(accid('##'), 2) + .setStave(stave); + showNotes(note1, note2, stave, ctx, 60); + note1 = f + .StaveNote({ keys: ['c/4', 'e/4', 'c/5'], duration: '2', stem_direction: -1 }) + .addModifier(accid('b'), 0) + .addModifier(accid('n'), 1) + .addModifier(accid('#'), 2) + .setStave(stave); + note2 = f + .StaveNote({ keys: ['d/5', 'a/5', 'b/5'], duration: '4', stem_direction: 1 }) + .addModifier(accid('b'), 0) + .setStave(stave); + showNotes(note1, note2, stave, ctx, 150); + note1 = f + .StaveNote({ keys: ['d/4', 'c/5', 'd/5'], duration: '2', stem_direction: -1 }) + .addModifier(accid('b'), 0) + .addModifier(accid('n'), 1) + .addModifier(accid('#'), 2) + .setStave(stave); + note2 = f + .StaveNote({ keys: ['d/5', 'a/5', 'b/5'], duration: '4', stem_direction: 1 }) + .addModifier(accid('b'), 0) + .setStave(stave); + showNotes(note1, note2, stave, ctx, 250); + VexFlowTests.plotLegendForNoteWidth(ctx, 350, 150); + ok(true, 'Full Accidental'); +} +function microtonal(options) { + const f = VexFlowTests.makeFactory(options, 700, 240); + const accid = makeNewAccid(f); + const ctx = f.getContext(); + f.Stave({ x: 10, y: 10, width: 650 }); + const notes = [ + f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: '1' }) + .addModifier(accid('db'), 0) + .addModifier(accid('d'), 1), + f + .StaveNote({ keys: ['d/4', 'e/4', 'f/4', 'a/4', 'c/5', 'e/5', 'g/5'], duration: '2' }) + .addModifier(accid('bbs'), 0) + .addModifier(accid('++'), 1) + .addModifier(accid('+'), 2) + .addModifier(accid('d'), 3) + .addModifier(accid('db'), 4) + .addModifier(accid('+'), 5) + .addModifier(accid('##'), 6), + f + .StaveNote({ keys: ['f/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5', 'g/5'], duration: '16' }) + .addModifier(accid('++'), 0) + .addModifier(accid('bbs'), 1) + .addModifier(accid('+'), 2) + .addModifier(accid('b'), 3) + .addModifier(accid('db'), 4) + .addModifier(accid('##'), 5) + .addModifier(accid('#'), 6), + f + .StaveNote({ keys: ['a/3', 'c/4', 'e/4', 'b/4', 'd/5', 'g/5'], duration: '1' }) + .addModifier(accid('#'), 0) + .addModifier(accid('db').setAsCautionary(), 1) + .addModifier(accid('bbs').setAsCautionary(), 2) + .addModifier(accid('b'), 3) + .addModifier(accid('++').setAsCautionary(), 4) + .addModifier(accid('d').setAsCautionary(), 5), + f + .StaveNote({ keys: ['f/4', 'g/4', 'a/4', 'b/4', 'd/5', 'g/5'], duration: '16' }) + .addModifier(accid('++-'), 0) + .addModifier(accid('+-'), 1) + .addModifier(accid('bs'), 2) + .addModifier(accid('bss'), 3) + .addModifier(accid('afhf'), 4) + .addModifier(accid('ashs'), 5), + ]; + Formatter.SimpleFormat(notes, 0, { paddingBetween: 35 }); + notes.forEach((note, index) => { + Note.plotMetrics(f.getContext(), note, 140); + ok(note.getModifiersByType('Accidental').length > 0, 'Note ' + index + ' has accidentals'); + note.getModifiersByType('Accidental').forEach((accid, index) => { + ok(accid.getWidth() > 0, 'Accidental ' + index + ' has set width'); + }); + }); + f.draw(); + VexFlowTests.plotLegendForNoteWidth(ctx, 580, 140); + ok(true, 'Microtonal Accidental'); +} +function microtonal_iranian(options) { + const f = VexFlowTests.makeFactory(options, 700, 240); + const accid = makeNewAccid(f); + const ctx = f.getContext(); + f.Stave({ x: 10, y: 10, width: 650 }); + const notes = [ + f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: '1' }) + .addModifier(accid('k'), 0) + .addModifier(accid('o'), 1), + f + .StaveNote({ keys: ['d/4', 'e/4', 'f/4', 'a/4', 'c/5', 'e/5', 'g/5'], duration: '2' }) + .addModifier(accid('b'), 0) + .addModifier(accid('k'), 1) + .addModifier(accid('n'), 2) + .addModifier(accid('o'), 3) + .addModifier(accid('#'), 4) + .addModifier(accid('bb'), 5) + .addModifier(accid('##'), 6), + f + .StaveNote({ keys: ['f/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5', 'g/5'], duration: '16' }) + .addModifier(accid('o'), 0) + .addModifier(accid('k'), 1) + .addModifier(accid('n'), 2) + .addModifier(accid('b'), 3) + .addModifier(accid('bb'), 4) + .addModifier(accid('##'), 5) + .addModifier(accid('#'), 6), + f + .StaveNote({ keys: ['a/3', 'c/4', 'e/4', 'b/4', 'd/5', 'g/5'], duration: '1' }) + .addModifier(accid('#'), 0) + .addModifier(accid('o').setAsCautionary(), 1) + .addModifier(accid('n').setAsCautionary(), 2) + .addModifier(accid('b'), 3) + .addModifier(accid('k').setAsCautionary(), 4), + f + .StaveNote({ keys: ['f/4', 'g/4', 'a/4', 'b/4'], duration: '16' }) + .addModifier(accid('k'), 0) + .addModifier(accid('k'), 1) + .addModifier(accid('k'), 2) + .addModifier(accid('k'), 3), + ]; + Formatter.SimpleFormat(notes, 0, { paddingBetween: 35 }); + notes.forEach((note, index) => { + Note.plotMetrics(f.getContext(), note, 140); + ok(note.getModifiersByType('Accidental').length > 0, 'Note ' + index + ' has accidentals'); + note.getModifiersByType('Accidental').forEach((accid, index) => { + ok(accid.getWidth() > 0, 'Accidental ' + index + ' has set width'); + }); + }); + f.draw(); + VexFlowTests.plotLegendForNoteWidth(ctx, 580, 140); + ok(true, 'Microtonal Accidental (Iranian)'); +} +function sagittal(options) { + const f = VexFlowTests.makeFactory(options, 700, 240); + const accid = makeNewAccid(f); + const ctx = f.getContext(); + f.Stave({ x: 10, y: 10, width: 650 }); + const notes = [ + f + .StaveNote({ keys: ['d/4', 'f/4', 'b/4', 'b/4'], duration: '4' }) + .addModifier(accid('accSagittal11MediumDiesisUp'), 1) + .addModifier(accid('accSagittal5CommaDown'), 2) + .addModifier(accid('b'), 3) + .addModifier(accid('accSagittal7CommaDown'), 3), + f + .StaveNote({ keys: ['d/4', 'f/4', 'a/4', 'b/4'], duration: '4' }) + .addModifier(accid('accSagittal35LargeDiesisDown'), 2), + f.StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'c/5'], duration: '8' }).addModifier(accid('accSagittal5CommaDown'), 1), + f + .StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'b/4'], duration: '8' }) + .addModifier(accid('b'), 1) + .addModifier(accid('accSagittal7CommaDown'), 1) + .addModifier(accid('accSagittal11LargeDiesisDown'), 3), + f + .StaveNote({ keys: ['d/4', 'f/4', 'b/4', 'b/4'], duration: '4' }) + .addModifier(accid('accSagittal11MediumDiesisUp'), 1) + .addModifier(accid('accSagittal5CommaDown'), 2) + .addModifier(accid('accSagittalFlat7CDown'), 3), + f + .StaveNote({ keys: ['d/4', 'f/4', 'a/4', 'b/4'], duration: '4' }) + .addModifier(accid('accSagittal35LargeDiesisDown'), 2), + f.StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'c/5'], duration: '8' }).addModifier(accid('accSagittal5CommaDown'), 1), + f + .StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'b/4'], duration: '8' }) + .addModifier(accid('accSagittalFlat7CDown'), 1) + .addModifier(accid('accSagittal11LargeDiesisDown'), 3), + ]; + f.StaveTie({ + from: notes[0], + to: notes[1], + first_indices: [0, 1], + last_indices: [0, 1], + }); + f.StaveTie({ + from: notes[0], + to: notes[1], + first_indices: [3], + last_indices: [3], + options: { + direction: Stem.DOWN, + }, + }); + f.StaveTie({ + from: notes[4], + to: notes[5], + first_indices: [0, 1], + last_indices: [0, 1], + }); + f.StaveTie({ + from: notes[4], + to: notes[5], + first_indices: [3], + last_indices: [3], + options: { + direction: Stem.DOWN, + }, + }); + f.Beam({ notes: notes.slice(2, 4) }); + f.Beam({ notes: notes.slice(6, 8) }); + Formatter.SimpleFormat(notes); + notes.forEach((note, index) => { + Note.plotMetrics(f.getContext(), note, 140); + ok(note.getModifiersByType('Accidental').length > 0, 'Note ' + index + ' has accidentals'); + note.getModifiersByType('Accidental').forEach((accid, index) => { + ok(accid.getWidth() > 0, 'Accidental ' + index + ' has set width'); + }); + }); + f.draw(); + VexFlowTests.plotLegendForNoteWidth(ctx, 580, 140); + ok(true, 'Sagittal'); +} +function automaticAccidentals0(options) { + const f = VexFlowTests.makeFactory(options, 700, 200); + const stave = f.Stave(); + const notes = [ + { keys: ['c/4', 'c/5'], duration: '4' }, + { keys: ['c#/4', 'c#/5'], duration: '4' }, + { keys: ['c#/4', 'c#/5'], duration: '4' }, + { keys: ['c##/4', 'c##/5'], duration: '4' }, + { keys: ['c##/4', 'c##/5'], duration: '4' }, + { keys: ['c/4', 'c/5'], duration: '4' }, + { keys: ['cn/4', 'cn/5'], duration: '4' }, + { keys: ['cbb/4', 'cbb/5'], duration: '4' }, + { keys: ['cbb/4', 'cbb/5'], duration: '4' }, + { keys: ['cb/4', 'cb/5'], duration: '4' }, + { keys: ['cb/4', 'cb/5'], duration: '4' }, + { keys: ['c/4', 'c/5'], duration: '4' }, + ].map(f.StaveNote.bind(f)); + const gracenotes = [{ keys: ['d#/4'], duration: '16', slash: true }].map(f.GraceNote.bind(f)); + notes[0].addModifier(f.GraceNoteGroup({ notes: gracenotes }).beamNotes(), 0); + const voice = f + .Voice() + .setMode(Voice.Mode.SOFT) + .addTickable(new TimeSigNote('12/4').setStave(stave)) + .addTickables(notes); + Accidental.applyAccidentals([voice], 'C'); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +function automaticAccidentals1(options) { + const f = VexFlowTests.makeFactory(options, 700, 150); + const stave = f.Stave().addKeySignature('Ab'); + const notes = [ + { keys: ['c/4'], duration: '4' }, + { keys: ['d/4'], duration: '4' }, + { keys: ['e/4'], duration: '4' }, + { keys: ['f/4'], duration: '4' }, + { keys: ['g/4'], duration: '4' }, + { keys: ['a/4'], duration: '4' }, + { keys: ['b/4'], duration: '4' }, + { keys: ['c/5'], duration: '4' }, + ].map(f.StaveNote.bind(f)); + const voice = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes); + Accidental.applyAccidentals([voice], 'Ab'); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +function automaticAccidentals2(options) { + const f = VexFlowTests.makeFactory(options, 700, 150); + const stave = f.Stave().addKeySignature('A'); + const notes = [ + { keys: ['a/4'], duration: '4' }, + { keys: ['b/4'], duration: '4' }, + { keys: ['c#/5'], duration: '4' }, + { keys: ['d/5'], duration: '4' }, + { keys: ['e/5'], duration: '4' }, + { keys: ['f#/5'], duration: '4' }, + { keys: ['g#/5'], duration: '4' }, + { keys: ['a/5'], duration: '4' }, + ].map(f.StaveNote.bind(f)); + const voice = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes); + Accidental.applyAccidentals([voice], 'A'); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +function automaticAccidentals3(options) { + const f = VexFlowTests.makeFactory(options, 700, 150); + const stave = f.Stave().addKeySignature('A'); + const score = f.EasyScore(); + score.set({ time: '8/4' }); + const notes = score.notes('A4/q, B4/q, C#5/q, D5/q, E5/q,F#5/q, G#5/q, A5/q', { stem: 'UP' }); + const voice = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes); + Accidental.applyAccidentals([voice], 'A'); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +function automaticAccidentalsMultiVoiceInline(options) { + const f = VexFlowTests.makeFactory(options, 700, 150); + const stave = f.Stave().addKeySignature('Ab'); + const notes0 = [ + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['d/4'], duration: '4', stem_direction: -1 }, + { keys: ['e/4'], duration: '4', stem_direction: -1 }, + { keys: ['f/4'], duration: '4', stem_direction: -1 }, + { keys: ['g/4'], duration: '4', stem_direction: -1 }, + { keys: ['a/4'], duration: '4', stem_direction: -1 }, + { keys: ['b/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + ].map(f.StaveNote.bind(f)); + const notes1 = [ + { keys: ['c/5'], duration: '4' }, + { keys: ['d/5'], duration: '4' }, + { keys: ['e/5'], duration: '4' }, + { keys: ['f/5'], duration: '4' }, + { keys: ['g/5'], duration: '4' }, + { keys: ['a/5'], duration: '4' }, + { keys: ['b/5'], duration: '4' }, + { keys: ['c/6'], duration: '4' }, + ].map(f.StaveNote.bind(f)); + const voice0 = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes0); + const voice1 = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes1); + Accidental.applyAccidentals([voice0, voice1], 'Ab'); + equal(hasAccidental(notes0[0]), false); + equal(hasAccidental(notes0[1]), true); + equal(hasAccidental(notes0[2]), true); + equal(hasAccidental(notes0[3]), false); + equal(hasAccidental(notes0[4]), false); + equal(hasAccidental(notes0[5]), true); + equal(hasAccidental(notes0[6]), true); + equal(hasAccidental(notes0[7]), false); + equal(hasAccidental(notes1[0]), false); + equal(hasAccidental(notes1[1]), true); + equal(hasAccidental(notes1[2]), true); + equal(hasAccidental(notes1[3]), false); + equal(hasAccidental(notes1[4]), false); + equal(hasAccidental(notes1[5]), true); + equal(hasAccidental(notes1[6]), true); + equal(hasAccidental(notes1[7]), false); + new Formatter().joinVoices([voice0, voice1]).formatToStave([voice0, voice1], stave); + f.draw(); + ok(true); +} +function automaticAccidentalsMultiVoiceOffset(options) { + const f = VexFlowTests.makeFactory(options, 700, 150); + const stave = f.Stave().addKeySignature('Cb'); + const notes0 = [ + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['d/4'], duration: '4', stem_direction: -1 }, + { keys: ['e/4'], duration: '4', stem_direction: -1 }, + { keys: ['f/4'], duration: '4', stem_direction: -1 }, + { keys: ['g/4'], duration: '4', stem_direction: -1 }, + { keys: ['a/4'], duration: '4', stem_direction: -1 }, + { keys: ['b/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + ].map(f.StaveNote.bind(f)); + const notes1 = [ + { keys: ['c/5'], duration: '8' }, + { keys: ['c/5'], duration: '4' }, + { keys: ['d/5'], duration: '4' }, + { keys: ['e/5'], duration: '4' }, + { keys: ['f/5'], duration: '4' }, + { keys: ['g/5'], duration: '4' }, + { keys: ['a/5'], duration: '4' }, + { keys: ['b/5'], duration: '4' }, + { keys: ['c/6'], duration: '4' }, + ].map(f.StaveNote.bind(f)); + const voice0 = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes0); + const voice1 = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes1); + Accidental.applyAccidentals([voice0, voice1], 'Cb'); + equal(hasAccidental(notes0[0]), true); + equal(hasAccidental(notes0[1]), true); + equal(hasAccidental(notes0[2]), true); + equal(hasAccidental(notes0[3]), true); + equal(hasAccidental(notes0[4]), true); + equal(hasAccidental(notes0[5]), true); + equal(hasAccidental(notes0[6]), true); + equal(hasAccidental(notes0[7]), false, 'Natural Remembered'); + equal(hasAccidental(notes1[0]), true); + equal(hasAccidental(notes1[1]), false); + equal(hasAccidental(notes1[2]), true); + equal(hasAccidental(notes1[3]), true); + equal(hasAccidental(notes1[4]), true); + equal(hasAccidental(notes1[5]), true); + equal(hasAccidental(notes1[6]), true); + equal(hasAccidental(notes1[7]), true); + new Formatter().joinVoices([voice0, voice1]).formatToStave([voice0, voice1], stave); + f.draw(); + ok(true); +} +function automaticAccidentalsCornerCases1(options) { + const f = VexFlowTests.makeFactory(options, 700, 150); + const stave = f.Stave().addKeySignature('C'); + const notes0 = [ + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c#/4'], duration: '4', stem_direction: -1 }, + { keys: ['c#/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['cb/4'], duration: '4', stem_direction: -1 }, + { keys: ['cb/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + ].map(f.StaveNote.bind(f)); + const voice0 = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes0); + Accidental.applyAccidentals([voice0], 'C'); + equal(hasAccidental(notes0[0]), false); + equal(hasAccidental(notes0[1]), true); + equal(hasAccidental(notes0[2]), false); + equal(hasAccidental(notes0[3]), true); + equal(hasAccidental(notes0[4]), false); + equal(hasAccidental(notes0[5]), true); + equal(hasAccidental(notes0[6]), false); + equal(hasAccidental(notes0[7]), true); + equal(hasAccidental(notes0[8]), false); + new Formatter().joinVoices([voice0]).formatToStave([voice0], stave); + f.draw(); + ok(true); +} +function automaticAccidentalsCornerCases2(options) { + const f = VexFlowTests.makeFactory(options, 700, 150); + const stave = f.Stave().addKeySignature('C'); + const notes0 = [ + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + { keys: ['c#/4'], duration: '4', stem_direction: -1 }, + { keys: ['c#/5'], duration: '4', stem_direction: -1 }, + { keys: ['c#/4'], duration: '4', stem_direction: -1 }, + { keys: ['c#/5'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + { keys: ['cb/4'], duration: '4', stem_direction: -1 }, + { keys: ['cb/5'], duration: '4', stem_direction: -1 }, + { keys: ['cb/4'], duration: '4', stem_direction: -1 }, + { keys: ['cb/5'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + ].map(f.StaveNote.bind(f)); + const voice0 = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes0); + Accidental.applyAccidentals([voice0], 'C'); + equal(hasAccidental(notes0[0]), false); + equal(hasAccidental(notes0[2]), true); + equal(hasAccidental(notes0[4]), false); + equal(hasAccidental(notes0[6]), true); + equal(hasAccidental(notes0[8]), false); + equal(hasAccidental(notes0[10]), true); + equal(hasAccidental(notes0[12]), false); + equal(hasAccidental(notes0[14]), true); + equal(hasAccidental(notes0[16]), false); + equal(hasAccidental(notes0[1]), false); + equal(hasAccidental(notes0[3]), true); + equal(hasAccidental(notes0[5]), false); + equal(hasAccidental(notes0[7]), true); + equal(hasAccidental(notes0[9]), false); + equal(hasAccidental(notes0[11]), true); + equal(hasAccidental(notes0[13]), false); + equal(hasAccidental(notes0[15]), true); + equal(hasAccidental(notes0[17]), false); + new Formatter().joinVoices([voice0]).formatToStave([voice0], stave); + f.draw(); + ok(true); +} +function automaticAccidentalsCornerCases3(options) { + const f = VexFlowTests.makeFactory(options, 700, 150); + const stave = f.Stave().addKeySignature('C#'); + const notes0 = [ + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c#/4'], duration: '4', stem_direction: -1 }, + { keys: ['c#/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['cb/4'], duration: '4', stem_direction: -1 }, + { keys: ['cb/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + ].map(f.StaveNote.bind(f)); + const voice0 = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes0); + Accidental.applyAccidentals([voice0], 'C#'); + equal(hasAccidental(notes0[0]), true); + equal(hasAccidental(notes0[1]), true); + equal(hasAccidental(notes0[2]), false); + equal(hasAccidental(notes0[3]), true); + equal(hasAccidental(notes0[4]), false); + equal(hasAccidental(notes0[5]), true); + equal(hasAccidental(notes0[6]), false); + equal(hasAccidental(notes0[7]), true); + equal(hasAccidental(notes0[8]), false); + new Formatter().joinVoices([voice0]).formatToStave([voice0], stave); + f.draw(); + ok(true); +} +function automaticAccidentalsCornerCases4(options) { + const f = VexFlowTests.makeFactory(options, 700, 150); + const stave = f.Stave().addKeySignature('C#'); + const notes0 = [ + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + { keys: ['c#/4'], duration: '4', stem_direction: -1 }, + { keys: ['c#/5'], duration: '4', stem_direction: -1 }, + { keys: ['c#/4'], duration: '4', stem_direction: -1 }, + { keys: ['c#/5'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + { keys: ['cb/4'], duration: '4', stem_direction: -1 }, + { keys: ['cb/5'], duration: '4', stem_direction: -1 }, + { keys: ['cb/4'], duration: '4', stem_direction: -1 }, + { keys: ['cb/5'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + { keys: ['c/4'], duration: '4', stem_direction: -1 }, + { keys: ['c/5'], duration: '4', stem_direction: -1 }, + ].map(f.StaveNote.bind(f)); + const voice0 = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes0); + Accidental.applyAccidentals([voice0], 'C#'); + equal(hasAccidental(notes0[0]), true); + equal(hasAccidental(notes0[2]), true); + equal(hasAccidental(notes0[4]), false); + equal(hasAccidental(notes0[6]), true); + equal(hasAccidental(notes0[8]), false); + equal(hasAccidental(notes0[10]), true); + equal(hasAccidental(notes0[12]), false); + equal(hasAccidental(notes0[14]), true); + equal(hasAccidental(notes0[16]), false); + equal(hasAccidental(notes0[1]), true); + equal(hasAccidental(notes0[3]), true); + equal(hasAccidental(notes0[5]), false); + equal(hasAccidental(notes0[7]), true); + equal(hasAccidental(notes0[9]), false); + equal(hasAccidental(notes0[11]), true); + equal(hasAccidental(notes0[13]), false); + equal(hasAccidental(notes0[15]), true); + equal(hasAccidental(notes0[17]), false); + new Formatter().joinVoices([voice0]).formatToStave([voice0], stave); + f.draw(); + ok(true); +} +function factoryAPI(options) { + const f = VexFlowTests.makeFactory(options, 700, 240); + f.Stave({ x: 10, y: 10, width: 550 }); + const accid = makeNewAccid(f); + const notes = [ + f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: 'w' }) + .addModifier(accid('b'), 0) + .addModifier(accid('#'), 1), + f + .StaveNote({ keys: ['d/4', 'e/4', 'f/4', 'a/4', 'c/5', 'e/5', 'g/5'], duration: 'h' }) + .addModifier(accid('##'), 0) + .addModifier(accid('n'), 1) + .addModifier(accid('bb'), 2) + .addModifier(accid('b'), 3) + .addModifier(accid('#'), 4) + .addModifier(accid('n'), 5) + .addModifier(accid('bb'), 6), + f + .StaveNote({ keys: ['f/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5', 'g/5'], duration: '16' }) + .addModifier(accid('n'), 0) + .addModifier(accid('#'), 1) + .addModifier(accid('#'), 2) + .addModifier(accid('b'), 3) + .addModifier(accid('bb'), 4) + .addModifier(accid('##'), 5) + .addModifier(accid('#'), 6), + f + .StaveNote({ keys: ['a/3', 'c/4', 'e/4', 'b/4', 'd/5', 'g/5'], duration: 'w' }) + .addModifier(accid('#'), 0) + .addModifier(accid('##').setAsCautionary(), 1) + .addModifier(accid('#').setAsCautionary(), 2) + .addModifier(accid('b'), 3) + .addModifier(accid('bb').setAsCautionary(), 4) + .addModifier(accid('b').setAsCautionary(), 5), + ]; + Formatter.SimpleFormat(notes); + notes.forEach((n, i) => { + ok(n.getModifiersByType('Accidental').length > 0, 'Note ' + i + ' has accidentals'); + n.getModifiersByType('Accidental').forEach((accid, i) => { + ok(accid.getWidth() > 0, 'Accidental ' + i + ' has set width'); + }); + }); + f.draw(); + ok(true, 'Factory API'); +} +VexFlowTests.register(AccidentalTests); +export { AccidentalTests }; diff --git a/build/esm/tests/annotation_tests.js b/build/esm/tests/annotation_tests.js new file mode 100644 index 0000000000..49b09d9583 --- /dev/null +++ b/build/esm/tests/annotation_tests.js @@ -0,0 +1,390 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Annotation, AnnotationVerticalJustify } from '../src/annotation.js'; +import { Articulation } from '../src/articulation.js'; +import { Beam } from '../src/beam.js'; +import { Bend } from '../src/bend.js'; +import { Flow } from '../src/flow.js'; +import { Font, FontStyle, FontWeight } from '../src/font.js'; +import { Formatter } from '../src/formatter.js'; +import { ModifierPosition } from '../src/modifier.js'; +import { Registry } from '../src/registry.js'; +import { Stave } from '../src/stave.js'; +import { StaveNote } from '../src/stavenote.js'; +import { Stem } from '../src/stem.js'; +import { TabNote } from '../src/tabnote.js'; +import { TabStave } from '../src/tabstave.js'; +import { Vibrato } from '../src/vibrato.js'; +import { Voice } from '../src/voice.js'; +const AnnotationTests = { + Start() { + QUnit.module('Annotation'); + const run = VexFlowTests.runTests; + run('Placement', placement); + run('Lyrics', lyrics); + run('Simple Annotation', simple); + run('Styled Annotation', styling); + run('Standard Notation Annotation', standard); + run('Harmonics', harmonic); + run('Fingerpicking', picking); + run('Bottom Annotation', bottom); + run('Bottom Annotations with Beams', bottomWithBeam); + run('Test Justification Annotation Stem Up', justificationStemUp); + run('Test Justification Annotation Stem Down', justificationStemDown); + run('TabNote Annotations', tabNotes); + }, +}; +const FONT_SIZE = VexFlowTests.Font.size; +const tabNote = (noteStruct) => new TabNote(noteStruct); +const staveNote = (noteStruct) => new StaveNote(noteStruct); +function lyrics(options) { + let fontSize = FONT_SIZE; + let x = 10; + let width = 170; + let ratio = 1; + const registry = new Registry(); + Registry.enableDefaultRegistry(registry); + const f = VexFlowTests.makeFactory(options, 750, 260); + for (let i = 0; i < 3; ++i) { + const score = f.EasyScore(); + score.set({ time: '3/4' }); + const system = f.System({ width, x }); + system.addStave({ + voices: [ + score.voice(score.notes('(C4 F4)/2[id="n0"]').concat(score.beam(score.notes('(C4 A4)/8[id="n1"], (C4 A4)/8[id="n2"]')))), + ], + }); + ['hand,', 'and', 'me', 'pears', 'lead', 'the'].forEach((text, ix) => { + const verse = Math.floor(ix / 3); + const noteGroupID = 'n' + (ix % 3); + const noteGroup = registry.getElementById(noteGroupID); + const lyricsAnnotation = f.Annotation({ text }).setFont('Roboto Slab', fontSize); + lyricsAnnotation.setPosition(ModifierPosition.BELOW); + noteGroup.addModifier(lyricsAnnotation, verse); + }); + system.addStave({ + voices: [score.voice(score.notes('(F4 D5)/2').concat(score.beam(score.notes('(F4 F5)/8, (F4 F5)/8'))))], + }); + f.draw(); + ratio = (fontSize + 2) / fontSize; + width = width * ratio; + x = x + width; + fontSize = fontSize + 2; + } + ok(true); +} +function simple(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + ctx.font = '10pt Arial, sans-serif'; + const stave = new TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw(); + const notes = [ + tabNote({ + positions: [ + { str: 2, fret: 10 }, + { str: 4, fret: 9 }, + ], + duration: 'h', + }).addModifier(new Annotation('T'), 0), + tabNote({ + positions: [{ str: 2, fret: 10 }], + duration: 'h', + }).addModifier(new Bend('Full').setTap('T'), 0), + ]; + Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, 'Simple Annotation'); +} +function standard(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + const stave = new Stave(10, 10, 450).addClef('treble').setContext(ctx).draw(); + const annotation = (text) => new Annotation(text).setFont(Font.SERIF, FONT_SIZE, 'normal', 'italic'); + const notes = [ + staveNote({ keys: ['c/4', 'e/4'], duration: 'h' }).addModifier(annotation('quiet'), 0), + staveNote({ keys: ['c/4', 'e/4', 'c/5'], duration: 'h' }).addModifier(annotation('Allegro'), 2), + ]; + Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, 'Standard Notation Annotation'); +} +function styling(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.5, 1.5); + const stave = new Stave(10, 10, 450).addClef('treble').setContext(ctx).draw(); + const annotation = (text, style) => new Annotation(text).setFont(Font.SERIF, FONT_SIZE, 'normal', 'italic').setStyle(style); + const notes = [ + staveNote({ keys: ['c/4', 'e/4'], duration: 'h' }).addModifier(annotation('quiet', { fillStyle: '#0F0' }), 0), + staveNote({ keys: ['c/4', 'e/4', 'c/5'], duration: 'h' }).addModifier(annotation('Allegro', { fillStyle: '#00F' }), 2), + ]; + Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, 'Standard Notation Annotation'); +} +function harmonic(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + ctx.font = '10pt Arial'; + const stave = new TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw(); + const notes = [ + tabNote({ + positions: [ + { str: 2, fret: 12 }, + { str: 3, fret: 12 }, + ], + duration: 'h', + }).addModifier(new Annotation('Harm.'), 0), + tabNote({ + positions: [{ str: 2, fret: 9 }], + duration: 'h', + }) + .addModifier(new Annotation('(8va)').setFont(Font.SERIF, FONT_SIZE, FontWeight.NORMAL, FontStyle.ITALIC), 0) + .addModifier(new Annotation('A.H.'), 0), + ]; + Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, 'Simple Annotation'); +} +function picking(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.setFillStyle('#221'); + ctx.setStrokeStyle('#221'); + ctx.setFont(Font.SANS_SERIF, FONT_SIZE); + const stave = new TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw(); + const annotation = (text) => new Annotation(text).setFont(Font.SERIF, FONT_SIZE, FontWeight.NORMAL, FontStyle.ITALIC); + const notes = [ + tabNote({ + positions: [ + { str: 1, fret: 0 }, + { str: 2, fret: 1 }, + { str: 3, fret: 2 }, + { str: 4, fret: 2 }, + { str: 5, fret: 0 }, + ], + duration: 'h', + }).addModifier(new Vibrato().setVibratoWidth(40), 0), + tabNote({ + positions: [{ str: 6, fret: 9 }], + duration: '8', + }).addModifier(annotation('p').setVerticalJustification(AnnotationVerticalJustify.TOP), 0), + tabNote({ + positions: [{ str: 3, fret: 9 }], + duration: '8', + }).addModifier(annotation('i').setVerticalJustification(AnnotationVerticalJustify.TOP), 0), + tabNote({ + positions: [{ str: 2, fret: 9 }], + duration: '8', + }).addModifier(annotation('m').setVerticalJustification(AnnotationVerticalJustify.TOP), 0), + tabNote({ + positions: [{ str: 1, fret: 9 }], + duration: '8', + }).addModifier(annotation('a').setVerticalJustification(AnnotationVerticalJustify.TOP), 0), + ]; + Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, 'Fingerpicking'); +} +function placement(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 750, 300); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + const stave = new Stave(10, 50, 750).addClef('treble').setContext(ctx).draw(); + const annotation = (text, fontSize, vj) => new Annotation(text).setFont(Font.SERIF, fontSize).setVerticalJustification(vj); + const notes = [ + staveNote({ keys: ['e/4'], duration: 'q', stem_direction: Stem.DOWN }) + .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Articulation('a-').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(annotation('v1', 10, AnnotationVerticalJustify.TOP), 0) + .addModifier(annotation('v2', 10, AnnotationVerticalJustify.TOP), 0), + staveNote({ keys: ['b/4'], duration: 'q', stem_direction: Stem.DOWN }) + .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Articulation('a-').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(annotation('v1', 10, AnnotationVerticalJustify.TOP), 0) + .addModifier(annotation('v2', 10, AnnotationVerticalJustify.TOP), 0), + staveNote({ keys: ['c/5'], duration: 'q', stem_direction: Stem.DOWN }) + .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Articulation('a-').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(annotation('v1', 10, AnnotationVerticalJustify.TOP), 0) + .addModifier(annotation('v2', 10, AnnotationVerticalJustify.TOP), 0), + staveNote({ keys: ['f/4'], duration: 'q' }) + .addModifier(annotation('v1', 14, AnnotationVerticalJustify.TOP), 0) + .addModifier(annotation('v2', 14, AnnotationVerticalJustify.TOP), 0), + staveNote({ keys: ['f/4'], duration: 'q', stem_direction: Stem.DOWN }) + .addModifier(new Articulation('am').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Articulation('a-').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(annotation('v1', 10, AnnotationVerticalJustify.TOP), 0) + .addModifier(annotation('v2', 20, AnnotationVerticalJustify.TOP), 0), + staveNote({ keys: ['f/5'], duration: 'q' }) + .addModifier(annotation('v1', 11, AnnotationVerticalJustify.TOP), 0) + .addModifier(annotation('v2', 11, AnnotationVerticalJustify.TOP), 0), + staveNote({ keys: ['f/5'], duration: 'q' }) + .addModifier(annotation('v1', 11, AnnotationVerticalJustify.TOP), 0) + .addModifier(annotation('v2', 20, AnnotationVerticalJustify.TOP), 0), + staveNote({ keys: ['f/4'], duration: 'q' }) + .addModifier(annotation('v1', 12, AnnotationVerticalJustify.BOTTOM), 0) + .addModifier(annotation('v2', 12, AnnotationVerticalJustify.BOTTOM), 0), + staveNote({ keys: ['f/5'], duration: 'q' }) + .addModifier(new Articulation('a.').setPosition(ModifierPosition.BELOW), 0) + .addModifier(annotation('v1', 11, AnnotationVerticalJustify.BOTTOM), 0) + .addModifier(annotation('v2', 20, AnnotationVerticalJustify.BOTTOM), 0), + staveNote({ keys: ['f/5'], duration: 'q', stem_direction: Stem.DOWN }) + .addModifier(new Articulation('am').setPosition(ModifierPosition.BELOW), 0) + .addModifier(annotation('v1', 10, AnnotationVerticalJustify.BOTTOM), 0) + .addModifier(annotation('v2', 20, AnnotationVerticalJustify.BOTTOM), 0), + staveNote({ keys: ['f/4'], duration: 'q', stem_direction: Stem.DOWN }) + .addModifier(annotation('v1', 10, AnnotationVerticalJustify.BOTTOM), 0) + .addModifier(annotation('v2', 20, AnnotationVerticalJustify.BOTTOM), 0), + staveNote({ keys: ['f/5'], duration: 'w' }) + .addModifier(new Articulation('a@u').setPosition(ModifierPosition.BELOW), 0) + .addModifier(annotation('v1', 11, AnnotationVerticalJustify.BOTTOM), 0) + .addModifier(annotation('v2', 16, AnnotationVerticalJustify.BOTTOM), 0), + ]; + Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, ' Annotation Placement'); +} +function bottom(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + const stave = new Stave(10, 10, 300).addClef('treble').setContext(ctx).draw(); + const annotation = (text) => new Annotation(text).setFont(Font.SERIF, FONT_SIZE).setVerticalJustification(Annotation.VerticalJustify.BOTTOM); + const notes = [ + staveNote({ keys: ['f/4'], duration: 'w' }).addModifier(annotation('F'), 0), + staveNote({ keys: ['a/4'], duration: 'w' }).addModifier(annotation('A'), 0), + staveNote({ keys: ['c/5'], duration: 'w' }).addModifier(annotation('C'), 0), + staveNote({ keys: ['e/5'], duration: 'w' }).addModifier(annotation('E'), 0), + ]; + Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, 'Bottom Annotation'); +} +function bottomWithBeam(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + const stave = new Stave(10, 10, 300).addClef('treble').setContext(ctx).draw(); + const notes = [ + new StaveNote({ keys: ['a/3'], duration: '8' }).addModifier(new Annotation('good').setVerticalJustification(Annotation.VerticalJustify.BOTTOM)), + new StaveNote({ keys: ['g/3'], duration: '8' }).addModifier(new Annotation('even').setVerticalJustification(Annotation.VerticalJustify.BOTTOM)), + new StaveNote({ keys: ['c/4'], duration: '8' }).addModifier(new Annotation('under').setVerticalJustification(Annotation.VerticalJustify.BOTTOM)), + new StaveNote({ keys: ['d/4'], duration: '8' }).addModifier(new Annotation('beam').setVerticalJustification(Annotation.VerticalJustify.BOTTOM)), + ]; + const beam = new Beam(notes.slice(1)); + Formatter.FormatAndDraw(ctx, stave, notes); + beam.setContext(ctx).draw(); + ok(true, 'Bottom Annotation with Beams'); +} +function justificationStemUp(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 650, 950); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + const annotation = (text, hJustification, vJustification) => new Annotation(text) + .setFont(Font.SANS_SERIF, FONT_SIZE) + .setJustification(hJustification) + .setVerticalJustification(vJustification); + for (let v = 1; v <= 4; ++v) { + const stave = new Stave(10, (v - 1) * 150 + 40, 400).addClef('treble').setContext(ctx).draw(); + const notes = [ + staveNote({ keys: ['c/3'], duration: 'q' }).addModifier(annotation('Text', 1, v), 0), + staveNote({ keys: ['c/4'], duration: 'q' }).addModifier(annotation('Text', 2, v), 0), + staveNote({ keys: ['c/5'], duration: 'q' }).addModifier(annotation('Text', 3, v), 0), + staveNote({ keys: ['c/6'], duration: 'q' }).addModifier(annotation('Text', 4, v), 0), + ]; + Formatter.FormatAndDraw(ctx, stave, notes); + } + ok(true, 'Test Justification Annotation'); +} +function justificationStemDown(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 650, 1000); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + const annotation = (text, hJustification, vJustification) => new Annotation(text) + .setFont(Font.SANS_SERIF, FONT_SIZE) + .setJustification(hJustification) + .setVerticalJustification(vJustification); + for (let v = 1; v <= 4; ++v) { + const stave = new Stave(10, (v - 1) * 150 + 40, 400).addClef('treble').setContext(ctx).draw(); + const notes = [ + staveNote({ keys: ['c/3'], duration: 'q', stem_direction: -1 }).addModifier(annotation('Text', 1, v), 0), + staveNote({ keys: ['c/4'], duration: 'q', stem_direction: -1 }).addModifier(annotation('Text', 2, v), 0), + staveNote({ keys: ['c/5'], duration: 'q', stem_direction: -1 }).addModifier(annotation('Text', 3, v), 0), + staveNote({ keys: ['c/6'], duration: 'q', stem_direction: -1 }).addModifier(annotation('Text', 4, v), 0), + ]; + Formatter.FormatAndDraw(ctx, stave, notes); + } + ok(true, 'Test Justification Annotation'); +} +function tabNotes(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 600, 200); + ctx.font = '10pt Arial, sans-serif'; + const stave = new TabStave(10, 10, 550); + stave.setContext(ctx); + stave.draw(); + const specs = [ + { + positions: [ + { str: 3, fret: 6 }, + { str: 4, fret: 25 }, + ], + duration: '8', + }, + { + positions: [ + { str: 2, fret: 10 }, + { str: 5, fret: 12 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 3, fret: 5 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 3, fret: 5 }, + ], + duration: '8', + }, + ]; + const notes1 = specs.map((noteSpec) => { + const note = new TabNote(noteSpec); + note.render_options.draw_stem = true; + return note; + }); + const notes2 = specs.map((noteSpec) => { + const note = new TabNote(noteSpec); + note.render_options.draw_stem = true; + note.setStemDirection(-1); + return note; + }); + const notes3 = specs.map((noteSpec) => new TabNote(noteSpec)); + notes1[0].addModifier(new Annotation('Text').setJustification(1).setVerticalJustification(1)); + notes1[1].addModifier(new Annotation('Text').setJustification(2).setVerticalJustification(2)); + notes1[2].addModifier(new Annotation('Text').setJustification(3).setVerticalJustification(3)); + notes1[3].addModifier(new Annotation('Text').setJustification(4).setVerticalJustification(4)); + notes2[0].addModifier(new Annotation('Text').setJustification(3).setVerticalJustification(1)); + notes2[1].addModifier(new Annotation('Text').setJustification(3).setVerticalJustification(2)); + notes2[2].addModifier(new Annotation('Text').setJustification(3).setVerticalJustification(3)); + notes2[3].addModifier(new Annotation('Text').setJustification(3).setVerticalJustification(4)); + notes3[0].addModifier(new Annotation('Text').setVerticalJustification(1)); + notes3[1].addModifier(new Annotation('Text').setVerticalJustification(2)); + notes3[2].addModifier(new Annotation('Text').setVerticalJustification(3)); + notes3[3].addModifier(new Annotation('Text').setVerticalJustification(4)); + const voice = new Voice(Flow.TIME4_4).setMode(Voice.Mode.SOFT); + voice.addTickables(notes1); + voice.addTickables(notes2); + voice.addTickables(notes3); + new Formatter().joinVoices([voice]).formatToStave([voice], stave, { stave }); + voice.draw(ctx, stave); + ok(true, 'TabNotes successfully drawn'); +} +VexFlowTests.register(AnnotationTests); +export { AnnotationTests }; diff --git a/build/esm/tests/articulation_tests.js b/build/esm/tests/articulation_tests.js new file mode 100644 index 0000000000..26e5bfe626 --- /dev/null +++ b/build/esm/tests/articulation_tests.js @@ -0,0 +1,368 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Articulation } from '../src/articulation.js'; +import { Beam } from '../src/beam.js'; +import { Flow } from '../src/flow.js'; +import { Font } from '../src/font.js'; +import { Formatter } from '../src/formatter.js'; +import { ModifierPosition } from '../src/modifier.js'; +import { Stave } from '../src/stave.js'; +import { Barline } from '../src/stavebarline.js'; +import { StaveNote } from '../src/stavenote.js'; +import { Stem } from '../src/stem.js'; +import { TabNote } from '../src/tabnote.js'; +import { TabStave } from '../src/tabstave.js'; +import { Voice } from '../src/voice.js'; +const ArticulationTests = { + Start() { + QUnit.module('Articulation'); + const run = VexFlowTests.runTests; + run('Articulation - Vertical Placement', verticalPlacement); + run('Articulation - Staccato/Staccatissimo', drawArticulations, { sym1: 'a.', sym2: 'av' }); + run('Articulation - Accent/Tenuto', drawArticulations, { sym1: 'a>', sym2: 'a-' }); + run('Articulation - Marcato/L.H. Pizzicato', drawArticulations, { sym1: 'a^', sym2: 'a+' }); + run('Articulation - Snap Pizzicato/Fermata', drawArticulations, { sym1: 'ao', sym2: 'ao' }); + run('Articulation - Up-stroke/Down-Stroke', drawArticulations, { sym1: 'a|', sym2: 'am' }); + run('Articulation - Fermata Above/Below', drawFermata, { sym1: 'a@a', sym2: 'a@u' }); + run('Articulation - Fermata Short Above/Below', drawFermata, { sym1: 'a@as', sym2: 'a@us' }); + run('Articulation - Fermata Long Above/Below', drawFermata, { sym1: 'a@al', sym2: 'a@ul' }); + run('Articulation - Fermata Very Long Above/Below', drawFermata, { sym1: 'a@avl', sym2: 'a@uvl' }); + run('Articulation - Inline/Multiple', drawArticulations2, { sym1: 'a.', sym2: 'a.' }); + run('TabNote Articulation', tabNotes, { sym1: 'a.', sym2: 'a.' }); + }, +}; +function drawArticulations(options) { + const sym1 = options.params.sym1; + const sym2 = options.params.sym2; + const width = 125 - Stave.defaultPadding; + const f = VexFlowTests.makeFactory(options, 675, 195); + const ctx = f.getContext(); + expect(0); + let x = 10; + const y = 30; + const score = f.EasyScore(); + const formatAndDrawToWidth = (x, y, width, notes, barline) => { + const voices = [score.voice(notes, { time: '4/4' })]; + const formatter = f.Formatter(); + voices.forEach((v) => formatter.joinVoices([v])); + const nwidth = Math.max(formatter.preCalculateMinTotalWidth(voices), width); + formatter.format(voices, nwidth); + const stave = f + .Stave({ x, y, width: nwidth + Stave.defaultPadding }) + .setEndBarType(barline) + .setContext(ctx) + .draw(); + voices.forEach((voice) => voice.draw(ctx, stave)); + return stave.getWidth(); + }; + const notesBar1 = [ + f.StaveNote({ keys: ['a/3'], duration: 'q', stem_direction: 1 }), + f.StaveNote({ keys: ['a/4'], duration: 'q', stem_direction: 1 }), + f.StaveNote({ keys: ['c/4'], duration: 'q', stem_direction: 1 }), + f.StaveNote({ keys: ['a/4'], duration: 'q', stem_direction: 1 }), + ]; + notesBar1[0].addModifier(new Articulation(sym1).setPosition(4), 0); + notesBar1[1].addModifier(new Articulation(sym1).setPosition(4), 0); + notesBar1[2].addModifier(new Articulation(sym1).setPosition(3), 0); + notesBar1[3].addModifier(new Articulation(sym1).setPosition(3), 0); + x += formatAndDrawToWidth(x, y, width, notesBar1, Barline.type.NONE); + const notesBar2 = [ + f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: -1 }), + f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: -1 }), + f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: -1 }), + f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: -1 }), + ]; + notesBar2[0].addModifier(new Articulation(sym1).setPosition(3), 0); + notesBar2[1].addModifier(new Articulation(sym1).setPosition(3), 0); + notesBar2[2].addModifier(new Articulation(sym1).setPosition(4), 0); + notesBar2[3].addModifier(new Articulation(sym1).setPosition(4), 0); + x += formatAndDrawToWidth(x, y, width, notesBar2, Barline.type.DOUBLE); + const notesBar3 = [ + f.StaveNote({ keys: ['c/4'], duration: 'q', stem_direction: 1 }), + f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: 1 }), + f.StaveNote({ keys: ['c/4'], duration: 'q', stem_direction: 1 }), + f.StaveNote({ keys: ['a/4'], duration: 'q', stem_direction: 1 }), + ]; + notesBar3[0].addModifier(new Articulation(sym2).setPosition(4), 0); + notesBar3[1].addModifier(new Articulation(sym2).setPosition(4), 0); + notesBar3[2].addModifier(new Articulation(sym2).setPosition(3), 0); + notesBar3[3].addModifier(new Articulation(sym2).setPosition(3), 0); + x += formatAndDrawToWidth(x, y, width, notesBar3, Barline.type.NONE); + const notesBar4 = [ + f.StaveNote({ keys: ['a/4'], duration: 'q', stem_direction: -1 }), + f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: -1 }), + f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: -1 }), + f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: -1 }), + ]; + notesBar4[0].addModifier(new Articulation(sym2).setPosition(3), 0); + notesBar4[1].addModifier(new Articulation(sym2).setPosition(3), 0); + notesBar4[2].addModifier(new Articulation(sym2).setPosition(4), 0); + notesBar4[3].addModifier(new Articulation(sym2).setPosition(4), 0); + formatAndDrawToWidth(x, y, width, notesBar4, Barline.type.END); +} +function drawFermata(options) { + const sym1 = options.params.sym1; + const sym2 = options.params.sym2; + const f = VexFlowTests.makeFactory(options, 400, 195); + const ctx = f.getContext(); + const score = f.EasyScore(); + const width = 150 - Stave.defaultPadding; + let x = 50; + const y = 30; + const formatAndDrawToWidth = (x, y, width, notes, barline) => { + const voices = [score.voice(notes, { time: '4/4' })]; + const formatter = f.Formatter(); + voices.forEach((v) => formatter.joinVoices([v])); + const nwidth = Math.max(formatter.preCalculateMinTotalWidth(voices), width); + formatter.format(voices, nwidth); + const stave = f + .Stave({ x, y, width: nwidth + Stave.defaultPadding }) + .setEndBarType(barline) + .setContext(ctx) + .draw(); + voices.forEach((voice) => voice.draw(ctx, stave)); + return stave.getWidth(); + }; + expect(0); + const notesBar1 = [ + f.StaveNote({ keys: ['c/4'], duration: 'q', stem_direction: 1 }), + f.StaveNote({ keys: ['a/4'], duration: 'q', stem_direction: 1 }), + f.StaveNote({ keys: ['c/4'], duration: 'q', stem_direction: -1 }), + f.StaveNote({ keys: ['a/4'], duration: 'q', stem_direction: -1 }), + ]; + notesBar1[0].addModifier(new Articulation(sym1).setPosition(3), 0); + notesBar1[1].addModifier(new Articulation(sym1).setPosition(3), 0); + notesBar1[2].addModifier(new Articulation(sym2).setPosition(4), 0); + notesBar1[3].addModifier(new Articulation(sym2).setPosition(4), 0); + x += formatAndDrawToWidth(x, y, width, notesBar1, Barline.type.NONE); + const notesBar2 = [ + f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: 1 }), + f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: 1 }), + f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: -1 }), + f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: -1 }), + ]; + notesBar2[0].addModifier(new Articulation(sym1).setPosition(3), 0); + notesBar2[1].addModifier(new Articulation(sym1).setPosition(3), 0); + notesBar2[2].addModifier(new Articulation(sym2).setPosition(4), 0); + notesBar2[3].addModifier(new Articulation(sym2).setPosition(4), 0); + formatAndDrawToWidth(x, y, width, notesBar2, Barline.type.DOUBLE); +} +function verticalPlacement(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 750, 300); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + const staveNote = (noteStruct) => new StaveNote(noteStruct); + const stave = new Stave(10, 50, 750).addClef('treble').setContext(ctx).draw(); + const notes = [ + staveNote({ keys: ['f/4'], duration: 'q' }) + .addModifier(new Articulation('a@u').setPosition(ModifierPosition.BELOW), 0) + .addModifier(new Articulation('a.').setPosition(ModifierPosition.BELOW), 0) + .addModifier(new Articulation('a-').setPosition(ModifierPosition.BELOW), 0), + staveNote({ keys: ['g/4'], duration: 'q', stem_direction: Stem.DOWN }) + .addModifier(new Articulation('a@u').setPosition(ModifierPosition.BELOW), 0) + .addModifier(new Articulation('a.').setPosition(ModifierPosition.BELOW), 0) + .addModifier(new Articulation('a-').setPosition(ModifierPosition.BELOW), 0), + staveNote({ keys: ['c/5'], duration: 'q' }) + .addModifier(new Articulation('a@u').setPosition(ModifierPosition.BELOW), 0) + .addModifier(new Articulation('a.').setPosition(ModifierPosition.BELOW), 0) + .addModifier(new Articulation('a-').setPosition(ModifierPosition.BELOW), 0), + staveNote({ keys: ['f/4'], duration: 'q' }) + .addModifier(new Articulation('a.').setPosition(ModifierPosition.BELOW), 0) + .addModifier(new Articulation('a-').setPosition(ModifierPosition.BELOW), 0) + .addModifier(new Articulation('a@u').setPosition(ModifierPosition.BELOW), 0), + staveNote({ keys: ['g/4'], duration: 'q', stem_direction: Stem.DOWN }) + .addModifier(new Articulation('a.').setPosition(ModifierPosition.BELOW), 0) + .addModifier(new Articulation('a-').setPosition(ModifierPosition.BELOW), 0) + .addModifier(new Articulation('a@u').setPosition(ModifierPosition.BELOW), 0), + staveNote({ keys: ['c/5'], duration: 'q' }) + .addModifier(new Articulation('a.').setPosition(ModifierPosition.BELOW), 0) + .addModifier(new Articulation('a-').setPosition(ModifierPosition.BELOW), 0) + .addModifier(new Articulation('a@u').setPosition(ModifierPosition.BELOW), 0), + staveNote({ keys: ['a/5'], duration: 'q', stem_direction: Stem.DOWN }) + .addModifier(new Articulation('a@a').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Articulation('a-').setPosition(ModifierPosition.ABOVE), 0), + staveNote({ keys: ['f/5'], duration: 'q' }) + .addModifier(new Articulation('a@a').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Articulation('a-').setPosition(ModifierPosition.ABOVE), 0), + staveNote({ keys: ['b/4'], duration: 'q', stem_direction: Stem.DOWN }) + .addModifier(new Articulation('a@a').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Articulation('a-').setPosition(ModifierPosition.ABOVE), 0), + staveNote({ keys: ['a/5'], duration: 'q', stem_direction: Stem.DOWN }) + .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Articulation('a-').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Articulation('a@a').setPosition(ModifierPosition.ABOVE), 0), + staveNote({ keys: ['f/5'], duration: 'q' }) + .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Articulation('a-').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Articulation('a@a').setPosition(ModifierPosition.ABOVE), 0), + staveNote({ keys: ['b/4'], duration: 'q', stem_direction: Stem.DOWN }) + .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Articulation('a-').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Articulation('a@a').setPosition(ModifierPosition.ABOVE), 0), + ]; + Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, ' Annotation Placement'); +} +function drawArticulations2(options) { + expect(0); + const scale = 0.8; + const f = VexFlowTests.makeFactory(options, 1500, 195); + const ctx = f.getContext(); + ctx.scale(scale, scale); + const stave1 = new Stave(10, 50, 500).setContext(ctx).draw(); + const notesBar1 = [ + f.StaveNote({ keys: ['c/4'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['d/4'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['e/4'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['g/4'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['a/4'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['b/4'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['c/5'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['d/5'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['e/5'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['f/5'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['g/5'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['a/5'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['b/5'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['c/6'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['d/6'], duration: '16', stem_direction: -1 }), + ]; + let i; + for (i = 0; i < 16; i++) { + notesBar1[i].addModifier(new Articulation('a.').setPosition(4), 0); + notesBar1[i].addModifier(new Articulation('a>').setPosition(4), 0); + if (i === 15) { + notesBar1[i].addModifier(new Articulation('a@u').setPosition(4), 0); + } + } + const beam1 = new Beam(notesBar1.slice(0, 8)); + const beam2 = new Beam(notesBar1.slice(8, 16)); + Formatter.FormatAndDraw(ctx, stave1, notesBar1); + beam1.setContext(ctx).draw(); + beam2.setContext(ctx).draw(); + const stave2 = new Stave(510, 50, 500).setContext(ctx).draw(); + const notesBar2 = [ + f.StaveNote({ keys: ['f/3'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['g/3'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['a/3'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['b/3'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['c/4'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['d/4'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['e/4'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '16', stem_direction: 1 }), + f.StaveNote({ keys: ['g/4'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['a/4'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['b/4'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['c/5'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['d/5'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['e/5'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['f/5'], duration: '16', stem_direction: -1 }), + f.StaveNote({ keys: ['g/5'], duration: '16', stem_direction: -1 }), + ]; + for (i = 0; i < 16; i++) { + notesBar2[i].addModifier(new Articulation('a-').setPosition(3), 0); + notesBar2[i].addModifier(new Articulation('a^').setPosition(3), 0); + if (i === 15) { + notesBar2[i].addModifier(new Articulation('a@u').setPosition(4), 0); + } + } + const beam3 = new Beam(notesBar2.slice(0, 8)); + const beam4 = new Beam(notesBar2.slice(8, 16)); + Formatter.FormatAndDraw(ctx, stave2, notesBar2); + beam3.setContext(ctx).draw(); + beam4.setContext(ctx).draw(); + const stave3 = new Stave(1010, 50, 100).setContext(ctx).draw(); + const notesBar3 = [f.StaveNote({ keys: ['c/4'], duration: 'w', stem_direction: 1 })]; + notesBar3[0].addModifier(new Articulation('a-').setPosition(3), 0); + notesBar3[0].addModifier(new Articulation('a>').setPosition(3), 0); + notesBar3[0].addModifier(new Articulation('a@a').setPosition(3), 0); + Formatter.FormatAndDraw(ctx, stave3, notesBar3); + const stave4 = new Stave(1110, 50, 250).setContext(ctx).draw(); + const notesBar4 = [ + f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: -1 }), + f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: -1 }), + f.StaveNote({ keys: ['c/5'], duration: 'q', stem_direction: -1 }), + f.StaveNote({ keys: ['a/5'], duration: 'q', stem_direction: -1 }), + ]; + for (i = 0; i < 4; i++) { + let position1 = 3; + if (i > 1) { + position1 = 4; + } + notesBar4[i].addModifier(new Articulation('a-').setPosition(position1), 0); + } + Formatter.FormatAndDraw(ctx, stave4, notesBar4); +} +function tabNotes(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 600, 200); + ctx.font = '10pt ' + Font.SANS_SERIF; + const stave = new TabStave(10, 10, 550); + stave.setContext(ctx); + stave.draw(); + const specs = [ + { + positions: [ + { str: 3, fret: 6 }, + { str: 4, fret: 25 }, + ], + duration: '8', + }, + { + positions: [ + { str: 2, fret: 10 }, + { str: 5, fret: 12 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 3, fret: 5 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 3, fret: 5 }, + ], + duration: '8', + }, + ]; + const notes1 = specs.map((noteSpec) => { + const tabNote = new TabNote(noteSpec); + tabNote.render_options.draw_stem = true; + return tabNote; + }); + const notes2 = specs.map((noteSpec) => { + const tabNote = new TabNote(noteSpec); + tabNote.render_options.draw_stem = true; + tabNote.setStemDirection(-1); + return tabNote; + }); + const notes3 = specs.map((noteSpec) => new TabNote(noteSpec)); + notes1[0].addModifier(new Articulation('a>').setPosition(3), 0); + notes1[1].addModifier(new Articulation('a>').setPosition(4), 0); + notes1[2].addModifier(new Articulation('a.').setPosition(3), 0); + notes1[3].addModifier(new Articulation('a.').setPosition(4), 0); + notes2[0].addModifier(new Articulation('a>').setPosition(3), 0); + notes2[1].addModifier(new Articulation('a>').setPosition(4), 0); + notes2[2].addModifier(new Articulation('a.').setPosition(3), 0); + notes2[3].addModifier(new Articulation('a.').setPosition(4), 0); + notes3[0].addModifier(new Articulation('a>').setPosition(3), 0); + notes3[1].addModifier(new Articulation('a>').setPosition(4), 0); + notes3[2].addModifier(new Articulation('a.').setPosition(3), 0); + notes3[3].addModifier(new Articulation('a.').setPosition(4), 0); + const voice = new Voice(Flow.TIME4_4).setMode(Voice.Mode.SOFT); + voice.addTickables(notes1); + voice.addTickables(notes2); + voice.addTickables(notes3); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + voice.draw(ctx, stave); + ok(true, 'TabNotes successfully drawn'); +} +VexFlowTests.register(ArticulationTests); +export { ArticulationTests }; diff --git a/build/esm/tests/auto_beam_formatting_tests.js b/build/esm/tests/auto_beam_formatting_tests.js new file mode 100644 index 0000000000..810e275237 --- /dev/null +++ b/build/esm/tests/auto_beam_formatting_tests.js @@ -0,0 +1,551 @@ +import { concat, VexFlowTests } from './vexflow_test_helpers.js'; +import { Beam } from '../src/beam.js'; +import { Fraction } from '../src/fraction.js'; +import { Stave } from '../src/stave.js'; +import { Stem } from '../src/stem.js'; +const AutoBeamFormattingTests = { + Start() { + QUnit.module('Auto-Beaming'); + const run = VexFlowTests.runTests; + run('Simple Auto Beaming', simpleAuto); + run('Auto Beaming With Overflow Group', simpleAutoWithOverflowGroup); + run('Even Group Stem Directions', evenGroupStemDirections); + run('Odd Group Stem Directions', oddGroupStemDirections); + run('Odd Beam Groups Auto Beaming', oddBeamGroups); + run('More Simple Auto Beaming 0', moreSimple0); + run('More Simple Auto Beaming 1', moreSimple1); + run('Beam Across All Rests', beamAcrossAllRests); + run('Beam Across All Rests with Stemlets', beamAcrossAllRestsWithStemlets); + run('Break Beams on Middle Rests Only', beamAcrossMiddleRests); + run('Break Beams on Rest', breakBeamsOnRests); + run('Maintain Stem Directions', maintainStemDirections); + run('Maintain Stem Directions - Beam Over Rests', maintainStemDirectionsBeamAcrossRests); + run('Beat group with unbeamable note - 2/2', groupWithUnbeamableNote); + run('Offset beat grouping - 6/8 ', groupWithUnbeamableNote1); + run('Odd Time - Guessing Default Beam Groups', autoOddBeamGroups); + run('Custom Beam Groups', customBeamGroups); + run('Simple Tuplet Auto Beaming', simpleTuplets); + run('More Simple Tuplet Auto Beaming', moreSimpleTuplets); + run('More Automatic Beaming', moreBeaming); + run('Automatic Beaming 4/4 with 3, 3, 2 Pattern', beamingWithSeveralGroups1); + run('Automatic Beaming 4/4 with 3, 3, 2 Pattern and Overflow', beamingWithSeveralGroupsOverflow); + run('Automatic Beaming 8/4 with 3, 2, 3 Pattern and 2 Overflows', beamingWithSeveralGroupsOverflow2); + run('Automatic Beaming 8/4 with 3, 2, 3 Pattern and 3 Overflows', beamingWithSeveralGroupsOverflow3); + run('Duration-Based Secondary Beam Breaks', secondaryBreaks1); + run('Duration-Based Secondary Beam Breaks 2', secondaryBreaks2); + run('Flat Beams Up', flatBeamsUp); + run('Flat Beams Down', flatBeamsDown); + run('Flat Beams Mixed Direction', flatBeamsMixed); + run('Flat Beams Up (uniform)', flatBeamsUpUniform); + run('Flat Beams Down (uniform)', flatBeamsDownUniform); + run('Flat Beams Up Bounds', flatBeamsUpBounds); + run('Flat Beams Down Bounds', flatBeamsDownBounds); + }, +}; +function simpleAuto(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('f5/8, e5, d5, c5/16, c5, d5/8, e5, f5, f5/32, f5, f5, f5'), { time: '4/4' }); + const beams = Beam.applyAndGetBeams(voice); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beaming Applicator Test'); +} +function simpleAutoWithOverflowGroup(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('f5/4., e5/8, d5/8, d5/16, c5/16, c5/16, c5/16, f5/16, f5/32, f5/32'), { + time: '4/4', + }); + const beams = Beam.applyAndGetBeams(voice); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beaming Applicator Test'); +} +function evenGroupStemDirections(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('a4/8, b4, g4, c5, f4, d5, e4, e5, b4, b4, g4, d5'), { time: '6/4' }); + const beams = Beam.applyAndGetBeams(voice); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + equal(beams[0].getStemDirection(), Stem.UP); + equal(beams[1].getStemDirection(), Stem.UP); + equal(beams[2].getStemDirection(), Stem.UP); + equal(beams[3].getStemDirection(), Stem.UP); + equal(beams[4].getStemDirection(), Stem.DOWN); + equal(beams[5].getStemDirection(), Stem.DOWN); + ok(true, 'Auto Beaming Applicator Test'); +} +function oddGroupStemDirections(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('g4/8, b4, d5, c5, f4, d5, e4, g5, g4, b4, g4, d5, a4, c5, a4'), { + time: '15/8', + }); + const groups = [new Fraction(3, 8)]; + const beams = Beam.applyAndGetBeams(voice, undefined, groups); + equal(beams[0].getStemDirection(), Stem.DOWN, 'Notes are equidistant from middle line'); + equal(beams[1].getStemDirection(), Stem.DOWN); + equal(beams[2].getStemDirection(), Stem.UP); + equal(beams[3].getStemDirection(), Stem.DOWN, 'Notes are equidistant from middle line'); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beaming Applicator Test'); +} +function oddBeamGroups(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('f5, e5, d5, c5, c5, d5, e5, f5, f5, f4, f3, f5/16, f5'), { time: '6/4' }); + const groups = [new Fraction(2, 8), new Fraction(3, 8), new Fraction(1, 8)]; + const beams = Beam.applyAndGetBeams(voice, undefined, groups); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function moreSimple0(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c4/8, g4, c5, g5, a5, c4, d4, a5'), { time: '4/4' }); + const beams = Beam.applyAndGetBeams(voice); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function moreSimple1(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c5/16, g5, c5, c5/r, c5/r, (c4 e4 g4), d4, a5, c4, g4, c5, b4/r, (c4 e4), b4/r, b4/r, a4'), { time: '4/4' }); + const beams = Beam.applyAndGetBeams(voice); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function breakBeamsOnRests(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c5/16, g5, c5, c5/r, c5/r, (c4 e4 g4), d4, a5, c4, g4, c5, b4/r, (c4 e4), b4/r, b4/r, a4'), { time: '4/4' }); + const beams = Beam.generateBeams(voice.getTickables(), { + beam_rests: false, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function beamAcrossAllRestsWithStemlets(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c5/16, g5, c5, c5/r, c5/r, (c4 e4 g4), d4, a5, c4, g4, c5, b4/r, (c4 e4), b4/r, b4/r, a4'), { time: '4/4' }); + const beams = Beam.generateBeams(voice.getTickables(), { + beam_rests: true, + show_stemlets: true, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function beamAcrossAllRests(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c5/16, g5, c5, c5/r, c5/r, (c4 e4 g4), d4, a5, c4, g4, c5, b4/r, (c4 e4), b4/r, b4/r, a4'), { time: '4/4' }); + const beams = Beam.generateBeams(voice.getTickables(), { + beam_rests: true, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function beamAcrossMiddleRests(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c5/16, g5, c5, c5/r, c5/r, (c4 e4 g4), d4, a5, c4, g4, c5, b4/r, (c4 e4), b4/r, b4/r, a4'), { time: '4/4' }); + const beams = Beam.generateBeams(voice.getTickables(), { + beam_rests: true, + beam_middle_only: true, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function maintainStemDirections(options) { + const f = VexFlowTests.makeFactory(options, 450, 200); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes([ + 'b4/16, b4, b4[stem="down"], b4/r', + 'b4/r, b4[stem="down"], b4, b4', + 'b4[stem="down"], b4[stem="down"], b4, b4/r', + 'b4/32, b4[stem="down"], b4[stem="down"], b4, b4/16/r, b4', + ].join(', '), { stem: 'up' }), { time: '4/4' }); + const beams = Beam.generateBeams(voice.getTickables(), { + beam_rests: false, + maintain_stem_directions: true, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function maintainStemDirectionsBeamAcrossRests(options) { + const f = VexFlowTests.makeFactory(options, 450, 200); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes([ + 'b4/16, b4, b4[stem="down"], b4/r', + 'b4/r, b4[stem="down"], b4, b4', + 'b4[stem="down"], b4[stem="down"], b4, b4/r', + 'b4/32, b4[stem="down"], b4[stem="down"], b4, b4/16/r, b4', + ].join(', '), { stem: 'up' }), { time: '4/4' }); + const beams = Beam.generateBeams(voice.getTickables(), { + beam_rests: true, + maintain_stem_directions: true, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function groupWithUnbeamableNote(options) { + const f = VexFlowTests.makeFactory(options, 450, 200); + const stave = f.Stave().addTimeSignature('2/4'); + const score = f.EasyScore(); + const voice = score.voice(score.notes('b4/16, b4, b4/4, b4/16, b4'), { time: '2/4' }); + const beams = Beam.generateBeams(voice.getTickables(), { + groups: [new Fraction(2, 2)], + beam_rests: false, + maintain_stem_directions: true, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function groupWithUnbeamableNote1(options) { + const f = VexFlowTests.makeFactory(options, 450, 200); + const stave = f.Stave().addTimeSignature('6/8'); + const score = f.EasyScore(); + const voice = score.voice(score.notes('b4/4, b4/4, b4/8, b4/8'), { time: '6/8' }); + const beams = Beam.generateBeams(voice.getTickables(), { + groups: [new Fraction(3, 8)], + beam_rests: false, + maintain_stem_directions: true, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function autoOddBeamGroups(options) { + const f = VexFlowTests.makeFactory(options, 450, 400); + const score = f.EasyScore(); + const stave1 = f.Stave({ y: 10 }).addTimeSignature('5/4'); + const voice1 = score.voice(score.notes('c5/8, g5, c5, b4, b4, c4, d4, a5, c4, g4'), { time: '5/4' }); + const stave2 = f.Stave({ y: 150 }).addTimeSignature('5/8'); + const voice2 = score.voice(score.notes('c5/8, g5, c5, b4, b4'), { time: '5/8' }); + const stave3 = f.Stave({ y: 290 }).addTimeSignature('13/16'); + const voice3 = score.voice(score.notes('c5/16, g5, c5, b4, b4, c5, g5, c5, b4, b4, c5, b4, b4'), { + time: '13/16', + }); + const beams = [ + ...Beam.applyAndGetBeams(voice1, undefined, Beam.getDefaultBeamGroups('5/4')), + ...Beam.applyAndGetBeams(voice2, undefined, Beam.getDefaultBeamGroups('5/8')), + ...Beam.applyAndGetBeams(voice3, undefined, Beam.getDefaultBeamGroups('13/16')), + ]; + f.Formatter().formatToStave([voice1], stave1).formatToStave([voice2], stave2).formatToStave([voice3], stave3); + Stave.formatBegModifiers([stave1, stave2, stave3]); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function customBeamGroups(options) { + const f = VexFlowTests.makeFactory(options, 450, 400); + const score = f.EasyScore(); + const stave1 = f.Stave({ y: 10 }).addTimeSignature('5/4'); + const voice1 = score.voice(score.notes('c5/8, g5, c5, b4, b4, c4, d4, a5, c4, g4'), { time: '5/4' }); + const stave2 = f.Stave({ y: 150 }).addTimeSignature('5/8'); + const voice2 = score.voice(score.notes('c5/8, g5, c5, b4, b4'), { time: '5/8' }); + const stave3 = f.Stave({ y: 290 }).addTimeSignature('13/16'); + const voice3 = score.voice(score.notes('c5/16, g5, c5, b4, b4, c5, g5, c5, b4, b4, c5, b4, b4'), { time: '13/16' }); + const group1 = [new Fraction(5, 8)]; + const group2 = [new Fraction(3, 8), new Fraction(2, 8)]; + const group3 = [new Fraction(7, 16), new Fraction(2, 16), new Fraction(4, 16)]; + const beams = [ + ...Beam.applyAndGetBeams(voice1, undefined, group1), + ...Beam.applyAndGetBeams(voice2, undefined, group2), + ...Beam.applyAndGetBeams(voice3, undefined, group3), + ]; + f.Formatter().formatToStave([voice1], stave1).formatToStave([voice2], stave2).formatToStave([voice3], stave3); + Stave.formatBegModifiers([stave1, stave2, stave3]); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function createShortcuts(score) { + return { + notes: score.notes.bind(score), + tuplet: score.tuplet.bind(score), + }; +} +function simpleTuplets(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const { notes, tuplet } = createShortcuts(score); + const voice = score.voice([ + ...tuplet(notes('c4/8, g4, c5')), + ...notes('g5/8, a5'), + ...tuplet(notes('a5/16, (c5 e5), a5, d5, a5'), { ratioed: false, notes_occupied: 4 }), + ], { time: '3/4' }); + const beams = Beam.applyAndGetBeams(voice); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function moreSimpleTuplets(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const { notes, tuplet } = createShortcuts(score); + const voice = score.voice([...tuplet(notes('d4/4, g4, c5')), ...notes('g5/16, a5, a5, (c5 e5)')], { time: '3/4' }); + const beams = Beam.applyAndGetBeams(voice); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function moreBeaming(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c4/8, g4/4, c5/8., g5/16, a5/4, a5/16, (c5 e5)/16, a5/8'), { time: '9/8' }); + const beams = Beam.applyAndGetBeams(voice, undefined, Beam.getDefaultBeamGroups('9/8')); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function beamingWithSeveralGroups1(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c4/8, g4/4, c5/8, g5, a5, a5, f5'), { time: '4/4' }); + const beams = Beam.applyAndGetBeams(voice, undefined, [new Fraction(3, 8), new Fraction(3, 8), new Fraction(2, 8)]); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function beamingWithSeveralGroupsOverflow(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c4/8, g4/4., c5/8, g5, a5, a5'), { time: '4/4' }); + const beams = Beam.applyAndGetBeams(voice, undefined, [new Fraction(3, 8), new Fraction(3, 8), new Fraction(2, 8)]); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function beamingWithSeveralGroupsOverflow2(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c4/16, g4/2, f4/16, c5/8, a4/16, c4/16, g4/8, b4, c5, g5, f5, e5, c5, a4/4'), { + time: '8/4', + }); + const beams = Beam.applyAndGetBeams(voice, undefined, [new Fraction(3, 8), new Fraction(2, 8), new Fraction(3, 8)]); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function beamingWithSeveralGroupsOverflow3(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c4/16, g4/1, f4/16, c5/8, g5, f5, e5, c5, a4/4'), { time: '8/4' }); + const beams = Beam.applyAndGetBeams(voice, undefined, [new Fraction(3, 8), new Fraction(2, 8), new Fraction(3, 8)]); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Auto Beam Applicator Test'); +} +function secondaryBreaks1(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes([ + 'f5/32, f5, f5, f5, f5/16., f5/32', + 'f5/16, f5/8, f5/16', + 'f5/32, f5/16., f5., f5/32', + 'f5/16., f5/32, f5, f5/16.', + ].join(','))); + const beams = Beam.generateBeams(voice.getTickables(), { secondary_breaks: '8' }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Duration-Based Secondary Breaks Test'); +} +function secondaryBreaks2(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const { notes, tuplet } = createShortcuts(score); + const voice = score.voice([ + tuplet(notes('e5/16, f5, f5')), + tuplet(notes('f5/16, f5, c5')), + notes('a4/16., f4/32'), + tuplet(notes('d4/16, d4, d4')), + tuplet(notes('a5/8, (e5 g5), a5')), + tuplet(notes('f5/16, f5, f5')), + tuplet(notes('f5/16, f5, a4')), + ].reduce(concat)); + const beams = Beam.generateBeams(voice.getTickables(), { secondary_breaks: '8' }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Duration-Based Secondary Breaks Test'); +} +function flatBeamsUp(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const { notes, tuplet } = createShortcuts(score); + const voice = score.voice([ + tuplet(notes('c4/8, g4, f5')), + notes('d5/8'), + tuplet(notes('c5/16, (c4 e4 g4), f4')), + notes('d5/8, e5, c4, f5/32, f5, f5, f5'), + ].reduce(concat)); + const beams = Beam.generateBeams(voice.getTickables(), { + flat_beams: true, + stem_direction: 1, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Flat Beams Up Test'); +} +function flatBeamsDown(options) { + const f = VexFlowTests.makeFactory(options, 450, 200); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c5/64, c5, c5, c5, c5, c5, c5, c5, a5/8, g5, (d4 f4 a4)/16, d4, d5/8, e5, g5, a6/32, a6, a6, g4/64, g4')); + const beams = Beam.generateBeams(voice.getTickables(), { + flat_beams: true, + stem_direction: -1, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Flat Beams Down Test'); +} +function flatBeamsMixed(options) { + const f = VexFlowTests.makeFactory(options, 450, 200); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c5/64, d5, e5, c5, f5, c5, a5, c5, a5/8, g5, (d4 f4 a4)/16, d4, d5/8, e5, c4, a4/32, a4, a4, g4/64, g4')); + const beams = Beam.generateBeams(voice.getTickables(), { flat_beams: true }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Flat Beams Mixed Direction Test'); +} +function flatBeamsUpUniform(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const { notes, tuplet } = createShortcuts(score); + const voice = score.voice([ + ...tuplet(notes('c4/8, g4, g5')), + ...notes('d5/8, c5/16, (c4 e4 g4), d5/8, e5, c4, f5/32, f5, f5, f5'), + ]); + const beams = Beam.generateBeams(voice.getTickables(), { + flat_beams: true, + flat_beam_offset: 50, + stem_direction: 1, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Flat Beams Up (uniform) Test'); +} +function flatBeamsDownUniform(options) { + const f = VexFlowTests.makeFactory(options, 450, 200); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const voice = score.voice(score.notes('c5/64, c5, c5, c5, c5, c5, c5, c5, a5/8, g5, (e4 g4 b4)/16, e5, d5/8, e5/8, g5/8, a6/32, a6, a6, g4/64, g4')); + const beams = Beam.generateBeams(voice.getTickables(), { + flat_beams: true, + flat_beam_offset: 155, + stem_direction: -1, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Flat Beams Down (uniform) Test'); +} +function flatBeamsUpBounds(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const { notes, tuplet } = createShortcuts(score); + const voice = score.voice([ + ...tuplet(notes('c4/8, g4/8, g5/8')), + ...notes('d5/8, c5/16, (c4 e4 g4)/16, d5/8, e5/8, c4/8, f5/32, f5/32, f5/32, f5/32'), + ]); + const beams = Beam.generateBeams(voice.getTickables(), { + flat_beams: true, + flat_beam_offset: 60, + stem_direction: 1, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Flat Beams Up (uniform) Test'); +} +function flatBeamsDownBounds(options) { + const f = VexFlowTests.makeFactory(options, 450, 200); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const voice = score.voice(score.notes([ + 'g5/8, a6/32, a6/32, a6/32, g4/64, g4/64', + 'c5/64, c5/64, c5/64, c5/64, c5/64, c5/64, c5/64, c5/64, a5/8', + 'g5/8, (e4 g4 b4)/16, e5/16', + 'd5/8, e5/8', + ].join(','), { stem: 'down' })); + const beams = Beam.generateBeams(voice.getTickables(), { + flat_beams: true, + flat_beam_offset: 145, + stem_direction: -1, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'Flat Beams Down (uniform) Test'); +} +VexFlowTests.register(AutoBeamFormattingTests); +export { AutoBeamFormattingTests }; diff --git a/build/esm/tests/bach_tests.js b/build/esm/tests/bach_tests.js new file mode 100644 index 0000000000..857789e1a3 --- /dev/null +++ b/build/esm/tests/bach_tests.js @@ -0,0 +1,335 @@ +import { concat, VexFlowTests } from './vexflow_test_helpers.js'; +import { BarlineType, Registry } from '../src/index.js'; +const BachDemoTests = { + Start() { + QUnit.module('Bach Demo'); + VexFlowTests.runTests('Minuet 1', minuet1); + }, +}; +function minuet1(options) { + const registry = new Registry(); + Registry.enableDefaultRegistry(registry); + const id = (id) => registry.getElementById(id); + const f = VexFlowTests.makeFactory(options, 1100, 900); + const score = f.EasyScore({ throwOnError: true }); + const voice = score.voice.bind(score); + const notes = score.notes.bind(score); + const beam = score.beam.bind(score); + let x = 120; + let y = 80; + function appendSystem(width) { + const system = f.System({ x, y, width, spaceBetweenStaves: 10 }); + x += width; + return system; + } + score.set({ time: '3/4' }); + let system = appendSystem(220); + system + .addStave({ + voices: [ + voice([notes('D5/q[id="m1a"]'), beam(notes('G4/8, A4, B4, C5', { stem: 'up' }))].reduce(concat)), + voice([f.TextDynamics({ text: 'p', duration: 'h', dots: 1, line: 9 })]), + ], + }) + .addClef('treble') + .addKeySignature('G') + .addTimeSignature('3/4') + .setTempo({ name: 'Allegretto', duration: 'h', dots: 1, bpm: 66 }, -30); + system + .addStave({ voices: [voice(notes('(G3 B3 D4)/h, A3/q', { clef: 'bass' }))] }) + .addClef('bass') + .addKeySignature('G') + .addTimeSignature('3/4'); + system.addConnector('brace'); + system.addConnector('singleRight'); + system.addConnector('singleLeft'); + id('m1a').addModifier(f.Fingering({ number: '5' }), 0); + system = appendSystem(150); + system.addStave({ voices: [voice(notes('D5/q[id="m2a"], G4[id="m2b"], G4[id="m2c"]'))] }); + system.addStave({ voices: [voice(notes('B3/h.', { clef: 'bass' }))] }); + system.addConnector('singleRight'); + id('m2a').addModifier(f.Articulation({ type: 'a.', position: 'above' }), 0); + id('m2b').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0); + id('m2c').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0); + f.Curve({ + from: id('m1a'), + to: id('m2a'), + options: { + cps: [ + { x: 0, y: 40 }, + { x: 0, y: 40 }, + ], + }, + }); + system = appendSystem(150); + system.addStave({ + voices: [voice([notes('E5/q[id="m3a"]'), beam(notes('C5/8, D5, E5, F5', { stem: 'down' }))].reduce(concat))], + }); + id('m3a').addModifier(f.Fingering({ number: '3', position: 'above' }), 0); + system.addStave({ voices: [voice(notes('C4/h.', { clef: 'bass' }))] }); + system.addConnector('singleRight'); + system = appendSystem(150); + system.addStave({ voices: [voice(notes('G5/q[id="m4a"], G4[id="m4b"], G4[id="m4c"]'))] }); + system.addStave({ voices: [voice(notes('B3/h.', { clef: 'bass' }))] }); + system.addConnector('singleRight'); + id('m4a').addModifier(f.Articulation({ type: 'a.', position: 'above' }), 0); + id('m4b').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0); + id('m4c').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0); + f.Curve({ + from: id('m3a'), + to: id('m4a'), + options: { + cps: [ + { x: 0, y: 20 }, + { x: 0, y: 20 }, + ], + }, + }); + system = appendSystem(150); + system.addStave({ + voices: [voice([notes('C5/q[id="m5a"]'), beam(notes('D5/8, C5, B4, A4', { stem: 'down' }))].reduce(concat))], + }); + id('m5a').addModifier(f.Fingering({ number: '4', position: 'above' }), 0); + system.addStave({ voices: [voice(notes('A3/h.', { clef: 'bass' }))] }); + system.addConnector('singleRight'); + system = appendSystem(150); + system.addStave({ + voices: [voice([notes('B4/q'), beam(notes('C5/8, B4, A4, G4[id="m6a"]', { stem: 'up' }))].reduce(concat))], + }); + system.addStave({ voices: [voice(notes('G3/h.', { clef: 'bass' }))] }); + system.addConnector('singleRight'); + f.Curve({ + from: id('m5a'), + to: id('m6a'), + options: { + cps: [ + { x: 0, y: 20 }, + { x: 0, y: 20 }, + ], + invert: true, + position_end: 'nearTop', + y_shift: 20, + }, + }); + x = 20; + y += 230; + system = appendSystem(220); + system + .addStave({ + voices: [ + voice([notes('F4/q[id="m7a"]'), beam(notes('G4/8[id="m7b"], A4, B4, G4', { stem: 'up' }))].reduce(concat)), + ], + }) + .addClef('treble') + .addKeySignature('G'); + system + .addStave({ voices: [voice(notes('D4/q, B3[id="m7c"], G3', { clef: 'bass' }))] }) + .addClef('bass') + .addKeySignature('G'); + system.addConnector('brace'); + system.addConnector('singleRight'); + system.addConnector('singleLeft'); + id('m7a').addModifier(f.Fingering({ number: '2', position: 'below' }), 0); + id('m7b').addModifier(f.Fingering({ number: '1' }), 0); + id('m7c').addModifier(f.Fingering({ number: '3', position: 'above' }), 0); + system = appendSystem(180); + const grace = f.GraceNote({ keys: ['d/3'], clef: 'bass', duration: '8', slash: true }); + system.addStave({ voices: [voice(notes('A4/h.[id="m8c"]'))] }); + system.addStave({ + voices: [ + score + .set({ clef: 'bass' }) + .voice([notes('D4/q[id="m8a"]'), beam(notes('D3/8, C4, B3[id="m8b"], A3', { stem: 'down' }))].reduce(concat)), + ], + }); + system.addConnector('singleRight'); + id('m8b').addModifier(f.Fingering({ number: '1', position: 'above' }), 0); + id('m8c').addModifier(f.GraceNoteGroup({ notes: [grace] }), 0); + f.Curve({ + from: id('m7a'), + to: id('m8c'), + options: { + cps: [ + { x: 0, y: 20 }, + { x: 0, y: 20 }, + ], + invert: true, + position: 'nearTop', + position_end: 'nearTop', + }, + }); + f.StaveTie({ from: grace, to: id('m8c') }); + system = appendSystem(180); + system.addStave({ + voices: [ + score + .set({ clef: 'treble' }) + .voice([notes('D5/q[id="m9a"]'), beam(notes('G4/8, A4, B4, C5', { stem: 'up' }))].reduce(concat)), + ], + }); + system.addStave({ voices: [voice(notes('B3/h, A3/q', { clef: 'bass' }))] }); + system.addConnector('singleRight'); + id('m9a').addModifier(f.Fingering({ number: '5' }), 0); + system = appendSystem(170); + system.addStave({ voices: [voice(notes('D5/q[id="m10a"], G4[id="m10b"], G4[id="m10c"]'))] }); + system.addStave({ voices: [voice(notes('G3/q[id="m10d"], B3, G3', { clef: 'bass' }))] }); + system.addConnector('singleRight'); + id('m10a').addModifier(f.Articulation({ type: 'a.', position: 'above' }), 0); + id('m10b').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0); + id('m10c').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0); + id('m10d').addModifier(f.Fingering({ number: '4' }), 0); + f.Curve({ + from: id('m9a'), + to: id('m10a'), + options: { + cps: [ + { x: 0, y: 40 }, + { x: 0, y: 40 }, + ], + }, + }); + system = appendSystem(150); + system.addStave({ + voices: [voice([notes('E5/q[id="m11a"]'), beam(notes('C5/8, D5, E5, F5', { stem: 'down' }))].reduce(concat))], + }); + id('m11a').addModifier(f.Fingering({ number: '3', position: 'above' }), 0); + system.addStave({ voices: [voice(notes('C4/h.', { clef: 'bass' }))] }); + system.addConnector('singleRight'); + system = appendSystem(170); + system.addStave({ voices: [voice(notes('G5/q[id="m12a"], G4[id="m12b"], G4[id="m12c"]'))] }); + system.addStave({ + voices: [ + score + .set({ clef: 'bass' }) + .voice([notes('B3/q[id="m12d"]'), beam(notes('C4/8, B3, A3, G3[id="m12e"]', { stem: 'down' }))].reduce(concat)), + ], + }); + system.addConnector('singleRight'); + id('m12a').addModifier(f.Articulation({ type: 'a.', position: 'above' }), 0); + id('m12b').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0); + id('m12c').addModifier(f.Articulation({ type: 'a.', position: 'below' }), 0); + id('m12d').addModifier(f.Fingering({ number: '2', position: 'above' }), 0); + id('m12e').addModifier(f.Fingering({ number: '4', position: 'above' }), 0); + f.Curve({ + from: id('m11a'), + to: id('m12a'), + options: { + cps: [ + { x: 0, y: 20 }, + { x: 0, y: 20 }, + ], + }, + }); + x = 20; + y += 230; + system = appendSystem(220); + system + .addStave({ + voices: [ + score + .set({ clef: 'treble' }) + .voice([notes('c5/q[id="m13a"]'), beam(notes('d5/8, c5, b4, a4', { stem: 'down' }))].reduce(concat)), + ], + }) + .addClef('treble') + .addKeySignature('G'); + system + .addStave({ voices: [voice(notes('a3/h[id="m13b"], f3/q[id="m13c"]', { clef: 'bass' }))] }) + .addClef('bass') + .addKeySignature('G'); + system.addConnector('brace'); + system.addConnector('singleRight'); + system.addConnector('singleLeft'); + id('m13a').addModifier(f.Fingering({ number: '4', position: 'above' }), 0); + id('m13b').addModifier(f.Fingering({ number: '1' }), 0); + id('m13c').addModifier(f.Fingering({ number: '3', position: 'above' }), 0); + system = appendSystem(180); + system.addStave({ + voices: [ + score + .set({ clef: 'treble' }) + .voice([notes('B4/q'), beam(notes('C5/8, b4, a4, g4', { stem: 'up' }))].reduce(concat)), + ], + }); + system.addStave({ voices: [voice(notes('g3/h[id="m14a"], b3/q[id="m14b"]', { clef: 'bass' }))] }); + system.addConnector('singleRight'); + id('m14a').addModifier(f.Fingering({ number: '2' }), 0); + id('m14b').addModifier(f.Fingering({ number: '1' }), 0); + system = appendSystem(180); + system.addStave({ + voices: [ + score + .set({ clef: 'treble' }) + .voice([notes('a4/q'), beam(notes('b4/8, a4, g4, f4[id="m15a"]', { stem: 'up' }))].reduce(concat)), + ], + }); + system.addStave({ voices: [voice(notes('c4/q[id="m15b"], d4, d3', { clef: 'bass' }))] }); + system.addConnector('singleRight'); + id('m15a').addModifier(f.Fingering({ number: '2' }), 0); + id('m15b').addModifier(f.Fingering({ number: '2' }), 0); + system = appendSystem(130); + system + .addStave({ + voices: [score.set({ clef: 'treble' }).voice([notes('g4/h.[id="m16a"]')].reduce(concat))], + }) + .setEndBarType(BarlineType.REPEAT_END); + system + .addStave({ voices: [voice(notes('g3/h[id="m16b"], g2/q', { clef: 'bass' }))] }) + .setEndBarType(BarlineType.REPEAT_END); + system.addConnector('boldDoubleRight'); + id('m16a').addModifier(f.Fingering({ number: '1' }), 0); + id('m16b').addModifier(f.Fingering({ number: '1' }), 0); + f.Curve({ + from: id('m13a'), + to: id('m16a'), + options: { + cps: [ + { x: 0, y: 50 }, + { x: 0, y: 20 }, + ], + invert: true, + position_end: 'nearTop', + }, + }); + system = appendSystem(180); + system + .addStave({ + voices: [ + score + .set({ clef: 'treble' }) + .voice([notes('b5/q[id="m17a"]'), beam(notes('g5/8, a5, b5, g5', { stem: 'down' }))].reduce(concat)), + voice([f.TextDynamics({ text: 'mf', duration: 'h', dots: 1, line: 10 })]), + ], + }) + .setBegBarType(BarlineType.REPEAT_BEGIN); + system.addStave({ voices: [voice(notes('g3/h.', { clef: 'bass' }))] }).setBegBarType(BarlineType.REPEAT_BEGIN); + system.addConnector('boldDoubleLeft'); + system.addConnector('singleRight'); + id('m17a').addModifier(f.Fingering({ number: '5', position: 'above' }), 0); + system = appendSystem(180); + system.addStave({ + voices: [ + score + .set({ clef: 'treble' }) + .voice([notes('a5/q[id="m18a"]'), beam(notes('d5/8, e5, f5, d5[id="m18b"]', { stem: 'down' }))].reduce(concat)), + ], + }); + system.addStave({ voices: [voice(notes('f3/h.', { clef: 'bass' }))] }); + system.addConnector('singleRight'); + id('m18a').addModifier(f.Fingering({ number: '4', position: 'above' }), 0); + f.Curve({ + from: id('m17a'), + to: id('m18b'), + options: { + cps: [ + { x: 0, y: 20 }, + { x: 0, y: 30 }, + ], + }, + }); + f.draw(); + Registry.disableDefaultRegistry(); + ok(true, 'Bach Minuet 1'); +} +VexFlowTests.register(BachDemoTests); +export { BachDemoTests }; diff --git a/build/esm/tests/barline_tests.js b/build/esm/tests/barline_tests.js new file mode 100644 index 0000000000..73d2d18e4a --- /dev/null +++ b/build/esm/tests/barline_tests.js @@ -0,0 +1,52 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Barline, BarlineType } from '../src/stavebarline.js'; +const BarlineTests = { + Start() { + QUnit.module('Barline'); + test('Enums', enums); + const run = VexFlowTests.runTests; + run('Simple BarNotes', simple); + run('Style BarNotes', style); + }, +}; +function enums() { + equal(Barline.type, BarlineType); + const a = BarlineType['DOUBLE']; + const b = BarlineType.DOUBLE; + equal(a, b); +} +function simple(options) { + const f = VexFlowTests.makeFactory(options, 380, 160); + const stave = f.Stave(); + const notes = [ + f.StaveNote({ keys: ['d/4', 'e/4', 'f/4'], stem_direction: -1, duration: '2' }), + f.BarNote({ type: 'single' }), + f + .StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '2' }) + .addModifier(f.Accidental({ type: 'n' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1), + ]; + const voice = f.Voice().addTickables(notes); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Simple Test'); +} +function style(options) { + const f = VexFlowTests.makeFactory(options, 380, 160); + const stave = f.Stave(); + const notes = [ + f.StaveNote({ keys: ['d/4', 'e/4', 'f/4'], stem_direction: -1, duration: '2' }), + f.BarNote({ type: 'single' }), + f + .StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '2' }) + .addModifier(f.Accidental({ type: 'n' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1), + ]; + notes[1].setStyle({ shadowBlur: 15, shadowColor: 'blue', fillStyle: 'blue', strokeStyle: 'blue' }); + const voice = f.Voice().addTickables(notes); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Style'); +} +VexFlowTests.register(BarlineTests); +export { BarlineTests }; diff --git a/build/esm/tests/beam_tests.js b/build/esm/tests/beam_tests.js new file mode 100644 index 0000000000..55d8ee4137 --- /dev/null +++ b/build/esm/tests/beam_tests.js @@ -0,0 +1,651 @@ +import { concat, VexFlowTests } from './vexflow_test_helpers.js'; +import { AnnotationVerticalJustify, Beam, Dot, Font, FontStyle, FontWeight, Stem, Voice, } from '../src/index.js'; +const BeamTests = { + Start() { + QUnit.module('Beam'); + const run = VexFlowTests.runTests; + run('Simple Beam', simple); + run('Multi Beam', multi); + run('Sixteenth Beam', sixteenth); + run('Slopey Beam', slopey); + run('Auto-stemmed Beam', autoStem); + run('Mixed Beam 1', mixed); + run('Mixed Beam 2', mixed2); + run('Dotted Beam', dotted); + run('Partial Beam', partial); + run('Close Trade-offs Beam', tradeoffs); + run('Insane Beam', insane); + run('Lengthy Beam', lenghty); + run('Outlier Beam', outlier); + run('Break Secondary Beams', breakSecondaryBeams); + run('Partial Beam Direction', partialBeamDirection); + run('TabNote Beams Up', tabBeamsUp); + run('TabNote Beams Down', tabBeamsDown); + run('TabNote Auto Create Beams', autoTabBeams); + run('TabNote Beams Auto Stem', tabBeamsAutoStem); + run('Complex Beams with Annotations', complexWithAnnotation); + run('Complex Beams with Articulations', complexWithArticulation); + run('Complex Beams with Articulations two Staves', complexWithArticulation2); + }, +}; +function simple(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const beam = score.beam.bind(score); + const notes = score.notes.bind(score); + const voice = score.voice([ + notes('(cb4 e#4 a4)/2'), + beam(notes('(cb4 e#4 a4)/8, (d4 f4 a4), (ebb4 g##4 b4), (f4 a4 c5)', { stem: 'up' })), + ].reduce(concat), { time: '2/2' }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Simple Test'); +} +function multi(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice.bind(score); + const beam = score.beam.bind(score); + const notes = score.notes.bind(score); + const voices = [ + voice([beam(notes('f5/8, e5, d5, c5', { stem: 'up' })), beam(notes('c5, d5, e5, f5', { stem: 'up' }))].reduce(concat)), + voice([beam(notes('f4/8, e4, d4, c4', { stem: 'down' })), beam(notes('c4/8, d4, e4, f4', { stem: 'down' }))].reduce(concat)), + ]; + f.Formatter().joinVoices(voices).formatToStave(voices, stave); + f.draw(); + ok(true, 'Multi Test'); +} +function sixteenth(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice.bind(score); + const beam = score.beam.bind(score); + const notes = score.notes.bind(score); + const voices = [ + voice([ + beam(notes('f5/16, f5, d5, c5', { stem: 'up' })), + beam(notes('c5/16, d5, f5, e5', { stem: 'up' })), + notes('f5/2', { stem: 'up' }), + ].reduce(concat)), + voice([ + beam(notes('f4/16, e4/16, d4/16, c4/16', { stem: 'down' })), + beam(notes('c4/16, d4/16, f4/16, e4/16', { stem: 'down' })), + notes('f4/2', { stem: 'down' }), + ].reduce(concat)), + ]; + f.Formatter().joinVoices(voices).formatToStave(voices, stave); + f.draw(); + ok(true, 'Sixteenth Test'); +} +function breakSecondaryBeams(options) { + const f = VexFlowTests.makeFactory(options, 600, 200); + const stave = f.Stave({ y: 20 }); + const score = f.EasyScore(); + const voice = score.voice.bind(score); + const beam = score.beam.bind(score); + const notes = score.notes.bind(score); + const voices = [ + voice([ + beam(notes('f5/16., f5/32, c5/16., d5/32, c5/16., d5/32', { stem: 'up' }), { secondaryBeamBreaks: [1, 3] }), + beam(notes('f5/16, e5, e5, e5, e5, e5', { stem: 'up' }), { secondaryBeamBreaks: [2] }), + ].reduce(concat), { time: '3/4' }), + voice([ + beam(notes('f4/32, d4, e4, c4, d4, c4, f4, d4, e4, c4, c4, d4', { stem: 'down' }), { + secondaryBeamBreaks: [3, 7], + }), + beam(notes('d4/16, f4, d4, e4, e4, e4', { stem: 'down' }), { secondaryBeamBreaks: [3] }), + ].reduce(concat), { time: '3/4' }), + ]; + f.Formatter().joinVoices(voices).formatToStave(voices, stave); + f.draw(); + ok(true, 'Breaking Secondary Beams Test'); +} +function partialBeamDirection(options) { + const f = VexFlowTests.makeFactory(options, 600, 200); + const stave = f.Stave({ y: 20 }); + const score = f.EasyScore(); + const voice = score.voice.bind(score); + const beam = score.beam.bind(score); + const notes = score.notes.bind(score); + const voices = [ + voice([ + beam(notes('f4/8, f4/16, f4/8, f4/16', { stem: 'up' })), + beam(notes('f4/8, f4/16, f4/8, f4/16', { stem: 'up' }), { partialBeamDirections: { '1': 'R' } }), + beam(notes('f4/8, f4/16, f4/8, f4/16', { stem: 'up' }), { partialBeamDirections: { '1': 'L' } }), + ].reduce(concat), { time: '9/8' }), + ]; + f.Formatter().joinVoices(voices).formatToStave(voices, stave); + f.draw(); + ok(true, 'Partial beam direction test'); +} +function slopey(options) { + const f = VexFlowTests.makeFactory(options, 350, 140); + const stave = f.Stave({ y: 20 }); + const score = f.EasyScore(); + const beam = score.beam.bind(score); + const notes = score.notes.bind(score); + const voice = score.voice([ + beam(notes('c4/8, f4/8, d5/8, g5/8', { stem: 'up' })), + beam(notes('d6/8, f5/8, d4/8, g3/8', { stem: 'up' })), + ].reduce(concat)); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Slopey Test'); +} +function autoStem(options) { + const f = VexFlowTests.makeFactory(options, 350, 140); + const stave = f.Stave({ y: 20 }); + const score = f.EasyScore(); + const voice = score.voice(score.notes('a4/8, b4/8, g4/8, c5/8, f4/8, d5/8, e4/8, e5/8, b4/8, b4/8, g4/8, d5/8'), { + time: '6/4', + }); + const notes = voice.getTickables(); + const beams = [ + f.Beam({ notes: notes.slice(0, 2), options: { autoStem: true } }), + f.Beam({ notes: notes.slice(2, 4), options: { autoStem: true } }), + f.Beam({ notes: notes.slice(4, 6), options: { autoStem: true } }), + f.Beam({ notes: notes.slice(6, 8), options: { autoStem: true } }), + f.Beam({ notes: notes.slice(8, 10), options: { autoStem: true } }), + f.Beam({ notes: notes.slice(10, 12), options: { autoStem: true } }), + ]; + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + const UP = Stem.UP; + const DOWN = Stem.DOWN; + equal(beams[0].getStemDirection(), UP); + equal(beams[1].getStemDirection(), UP); + equal(beams[2].getStemDirection(), UP); + equal(beams[3].getStemDirection(), UP); + equal(beams[4].getStemDirection(), DOWN); + equal(beams[5].getStemDirection(), DOWN); + f.draw(); + ok(true, 'AutoStem Beam Test'); +} +function mixed(options) { + const f = VexFlowTests.makeFactory(options, 350, 140); + const stave = f.Stave({ y: 20 }); + const score = f.EasyScore(); + const voice1 = score.voice(score.notes('f5/8, d5/16, c5/16, c5/16, d5/16, e5/8, f5/8, d5/16, c5/16, c5/16, d5/16, e5/8', { stem: 'up' })); + const voice2 = score.voice(score.notes('f4/16, e4/8, d4/16, c4/16, d4/8, f4/16, f4/16, e4/8, d4/16, c4/16, d4/8, f4/16', { stem: 'down' })); + [ + [0, 4], + [4, 8], + [8, 12], + ].forEach((range) => f.Beam({ notes: voice1.getTickables().slice(range[0], range[1]) })); + [ + [0, 4], + [4, 8], + [8, 12], + ].forEach((range) => f.Beam({ notes: voice2.getTickables().slice(range[0], range[1]) })); + f.Formatter().joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave); + f.draw(); + ok(true, 'Multi Test'); +} +function mixed2(options) { + const f = VexFlowTests.makeFactory(options, 450, 180); + const stave = f.Stave({ y: 20 }); + const score = f.EasyScore(); + const voice = score.voice(score.notes('f5/32, d5/16, c5/32, c5/64, d5/128, e5/8, f5/16, d5/32, c5/64, c5/32, d5/16, e5/128', { + stem: 'up', + }), { time: '31/64' }); + const voice2 = score.voice(score.notes('f4/32, d4/16, c4/32, c4/64, d4/128, e4/8, f4/16, d4/32, c4/64, c4/32, d4/16, e4/128', { + stem: 'down', + }), { time: '31/64' }); + f.Beam({ notes: voice.getTickables().slice(0, 12) }); + f.Beam({ notes: voice2.getTickables().slice(0, 12) }); + f.Formatter().joinVoices([voice, voice2]).formatToStave([voice, voice2], stave); + f.draw(); + ok(true, 'Multi Test'); +} +function dotted(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('d4/8, b3/8., a3/16, a3/8, b3/8., c4/16, d4/8, b3/8, a3/8., a3/16, b3/8., c4/16', { stem: 'up' }), { time: '6/4' }); + const notes = voice.getTickables(); + f.Beam({ notes: notes.slice(0, 4) }); + f.Beam({ notes: notes.slice(4, 8) }); + f.Beam({ notes: notes.slice(8, 12) }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Dotted Test'); +} +function partial(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('d4/8, b3/32, c4/16., d4/16., e4/8, c4/64, c4/32, a3/8., b3/32., c4/8, e4/64, b3/16., b3/64, f4/8, e4/8, g4/64, e4/8'), { time: '89/64' }); + const notes = voice.getTickables(); + f.Beam({ notes: notes.slice(0, 3) }); + f.Beam({ notes: notes.slice(3, 9) }); + f.Beam({ notes: notes.slice(9, 13) }); + f.Beam({ notes: notes.slice(13, 17) }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Partial Test'); +} +function tradeoffs(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave(); + const score = f.EasyScore(); + const voice = score.voice(score.notes('a4/8, b4/8, c4/8, d4/8, g4/8, a4/8, b4/8, c4/8', { stem: 'up' })); + const notes = voice.getTickables(); + f.Beam({ notes: notes.slice(0, 4) }); + f.Beam({ notes: notes.slice(4, 8) }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Close Trade-offs Test'); +} +function insane(options) { + const f = VexFlowTests.makeFactory(options, 450, 180); + const stave = f.Stave({ y: 20 }); + const score = f.EasyScore(); + const voice = score.voice(score.notes('g4/8, g5/8, c4/8, b5/8, g4/8[stem="down"], a5[stem="down"], b4[stem="down"], c4/8', { stem: 'up' })); + const notes = voice.getTickables(); + f.Beam({ notes: notes.slice(0, 4) }); + f.Beam({ notes: notes.slice(4, 7) }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Insane Test'); +} +function lenghty(options) { + const f = VexFlowTests.makeFactory(options, 450, 180); + const stave = f.Stave({ y: 20 }); + const score = f.EasyScore(); + const voice = score.voice(score.beam(score.notes('g4/8, g4, g4, a4', { stem: 'up' })), { time: '2/4' }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Lengthy Test'); +} +function outlier(options) { + const f = VexFlowTests.makeFactory(options, 450, 180); + const stave = f.Stave({ y: 20 }); + const score = f.EasyScore(); + const voice = score.voice(score.notes([ + 'g4/8[stem="up"], f4[stem="up"], d5[stem="up"], e4[stem="up"]', + 'd5/8[stem="down"], d5[stem="down"], c5[stem="down"], d5[stem="down"]', + ].join())); + const notes = voice.getTickables(); + f.Beam({ notes: notes.slice(0, 4) }); + f.Beam({ notes: notes.slice(4, 8) }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave, { stave: stave }); + f.draw(); + ok(true, 'Outlier Test'); +} +function tabBeamsUp(options) { + const f = VexFlowTests.makeFactory(options, 600, 200); + const stave = f.TabStave({ y: 20 }); + const specs = [ + { + positions: [ + { str: 3, fret: 6 }, + { str: 4, fret: 25 }, + ], + duration: '4', + }, + { + positions: [ + { str: 2, fret: 10 }, + { str: 5, fret: 12 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '16', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '32', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '64', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '128', + }, + { positions: [{ str: 3, fret: 6 }], duration: '8' }, + { positions: [{ str: 3, fret: 6 }], duration: '8' }, + { positions: [{ str: 3, fret: 6 }], duration: '8' }, + { positions: [{ str: 3, fret: 6 }], duration: '8' }, + ]; + const notes = specs.map((struct) => { + const tabNote = f.TabNote(struct); + tabNote.render_options.draw_stem = true; + return tabNote; + }); + f.Beam({ notes: notes.slice(1, 7) }); + f.Beam({ notes: notes.slice(8, 11) }); + f.Tuplet({ notes: notes.slice(8, 11), options: { ratioed: true } }); + const voice = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'All objects have been drawn'); +} +function tabBeamsDown(options) { + const f = VexFlowTests.makeFactory(options, 600, 250); + const stave = f.TabStave({ options: { num_lines: 10 } }); + const specs = [ + { + stem_direction: -1, + positions: [ + { str: 3, fret: 6 }, + { str: 4, fret: 25 }, + ], + duration: '4', + }, + { + stem_direction: -1, + positions: [ + { str: 2, fret: 10 }, + { str: 5, fret: 12 }, + ], + duration: '8dd', + }, + { + stem_direction: -1, + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '8', + }, + { + stem_direction: -1, + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '16', + }, + { + stem_direction: -1, + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '32', + }, + { + stem_direction: -1, + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '64', + }, + { + stem_direction: -1, + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '128', + }, + { stem_direction: -1, positions: [{ str: 1, fret: 6 }], duration: '8' }, + { stem_direction: -1, positions: [{ str: 1, fret: 6 }], duration: '8' }, + { stem_direction: -1, positions: [{ str: 1, fret: 6 }], duration: '8' }, + { stem_direction: -1, positions: [{ str: 7, fret: 6 }], duration: '8' }, + { stem_direction: -1, positions: [{ str: 7, fret: 6 }], duration: '8' }, + { stem_direction: -1, positions: [{ str: 10, fret: 6 }], duration: '8' }, + { stem_direction: -1, positions: [{ str: 10, fret: 6 }], duration: '8' }, + ]; + const notes = specs.map((struct) => { + const tabNote = f.TabNote(struct); + tabNote.render_options.draw_stem = true; + tabNote.render_options.draw_dots = true; + return tabNote; + }); + Dot.buildAndAttach([notes[1], notes[1]]); + f.Beam({ notes: notes.slice(1, 7) }); + f.Beam({ notes: notes.slice(8, 11) }); + f.Tuplet({ notes: notes.slice(8, 11), options: { location: -1 } }); + f.Tuplet({ notes: notes.slice(11, 14), options: { location: -1 } }); + const voice = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'All objects have been drawn'); +} +function autoTabBeams(options) { + const f = VexFlowTests.makeFactory(options, 600, 200); + const stave = f.TabStave(); + const specs = [ + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '16', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '16', + }, + { positions: [{ str: 1, fret: 6 }], duration: '32' }, + { positions: [{ str: 1, fret: 6 }], duration: '32' }, + { positions: [{ str: 1, fret: 6 }], duration: '32' }, + { positions: [{ str: 6, fret: 6 }], duration: '32' }, + { positions: [{ str: 6, fret: 6 }], duration: '16' }, + { positions: [{ str: 6, fret: 6 }], duration: '16' }, + { positions: [{ str: 6, fret: 6 }], duration: '16' }, + { positions: [{ str: 6, fret: 6 }], duration: '16' }, + ]; + const notes = specs.map((struct) => { + const tabNote = f.TabNote(struct); + tabNote.render_options.draw_stem = true; + tabNote.render_options.draw_dots = true; + return tabNote; + }); + const voice = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes); + const beams = Beam.applyAndGetBeams(voice, -1); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + beams.forEach((beam) => beam.setContext(f.getContext()).draw()); + ok(true, 'All objects have been drawn'); +} +function tabBeamsAutoStem(options) { + const f = VexFlowTests.makeFactory(options, 600, 300); + const stave = f.TabStave(); + const specs = [ + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '8', + stem_direction: -1, + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '8', + stem_direction: 1, + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '16', + stem_direction: -1, + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '16', + stem_direction: 1, + }, + { positions: [{ str: 1, fret: 6 }], duration: '32', stem_direction: 1 }, + { positions: [{ str: 1, fret: 6 }], duration: '32', stem_direction: -1 }, + { positions: [{ str: 1, fret: 6 }], duration: '32', stem_direction: -1 }, + { positions: [{ str: 6, fret: 6 }], duration: '32', stem_direction: -1 }, + { positions: [{ str: 6, fret: 6 }], duration: '16', stem_direction: 1 }, + { positions: [{ str: 6, fret: 6 }], duration: '16', stem_direction: 1 }, + { positions: [{ str: 6, fret: 6 }], duration: '16', stem_direction: 1 }, + { positions: [{ str: 6, fret: 6 }], duration: '16', stem_direction: -1 }, + ]; + const notes = specs.map((struct) => { + const tabNote = f.TabNote(struct); + tabNote.render_options.draw_stem = true; + tabNote.render_options.draw_dots = true; + return tabNote; + }); + f.Beam({ notes: notes.slice(0, 8), options: { autoStem: true } }); + f.Beam({ notes: notes.slice(8, 12), options: { autoStem: true } }); + const voice = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'All objects have been drawn'); +} +function complexWithAnnotation(options) { + const factory = VexFlowTests.makeFactory(options, 500, 200); + const stave = factory.Stave({ y: 40 }); + const s1 = [ + { keys: ['e/4'], duration: '128', stem_direction: 1 }, + { keys: ['d/4'], duration: '16', stem_direction: 1 }, + { keys: ['e/4'], duration: '8', stem_direction: 1 }, + { keys: ['c/4', 'g/4'], duration: '32', stem_direction: 1 }, + { keys: ['c/4'], duration: '32', stem_direction: 1 }, + { keys: ['c/4'], duration: '32', stem_direction: 1 }, + { keys: ['c/4'], duration: '32', stem_direction: 1 }, + ]; + const s2 = [ + { keys: ['e/5'], duration: '128', stem_direction: -1 }, + { keys: ['d/5'], duration: '16', stem_direction: -1 }, + { keys: ['e/5'], duration: '8', stem_direction: -1 }, + { keys: ['c/5', 'g/5'], duration: '32', stem_direction: -1 }, + { keys: ['c/5'], duration: '32', stem_direction: -1 }, + { keys: ['c/5'], duration: '32', stem_direction: -1 }, + { keys: ['c/5'], duration: '32', stem_direction: -1 }, + ]; + const font = { + family: Font.SERIF, + size: 14, + weight: FontWeight.BOLD, + style: FontStyle.ITALIC, + }; + const notes1 = s1.map((struct) => factory + .StaveNote(struct) + .addModifier(factory.Annotation({ text: '1', vJustify: AnnotationVerticalJustify.TOP, font }), 0)); + const notes2 = s2.map((struct) => factory + .StaveNote(struct) + .addModifier(factory.Annotation({ text: '3', vJustify: AnnotationVerticalJustify.BOTTOM, font }), 0)); + factory.Beam({ notes: notes1 }); + factory.Beam({ notes: notes2 }); + const voice = factory.Voice().setMode(Voice.Mode.SOFT).addTickables(notes1).addTickables(notes2); + factory.Formatter().joinVoices([voice]).formatToStave([voice], stave, { stave: stave }); + factory.draw(); + ok(true, 'Complex beam annotations'); +} +function complexWithArticulation(options) { + const f = VexFlowTests.makeFactory(options, 500, 200); + const stave = f.Stave({ y: 40 }); + const s1 = [ + { keys: ['e/4'], duration: '128', stem_direction: 1 }, + { keys: ['d/4'], duration: '16', stem_direction: 1 }, + { keys: ['e/4'], duration: '8', stem_direction: 1 }, + { keys: ['c/4', 'g/4'], duration: '32', stem_direction: 1 }, + { keys: ['c/4'], duration: '32', stem_direction: 1 }, + { keys: ['c/4'], duration: '32', stem_direction: 1 }, + { keys: ['c/4'], duration: '32', stem_direction: 1 }, + ]; + const s2 = [ + { keys: ['e/5'], duration: '128', stem_direction: -1 }, + { keys: ['d/5'], duration: '16', stem_direction: -1 }, + { keys: ['e/5'], duration: '8', stem_direction: -1 }, + { keys: ['c/5', 'g/5'], duration: '32', stem_direction: -1 }, + { keys: ['c/5'], duration: '32', stem_direction: -1 }, + { keys: ['c/5'], duration: '32', stem_direction: -1 }, + { keys: ['c/5'], duration: '32', stem_direction: -1 }, + ]; + const notes1 = s1.map((struct) => f.StaveNote(struct).addModifier(f.Articulation({ type: 'am', position: 'above' }), 0)); + const notes2 = s2.map((struct) => f.StaveNote(struct).addModifier(f.Articulation({ type: 'a>', position: 'below' }), 0)); + f.Beam({ notes: notes1 }); + f.Beam({ notes: notes2 }); + const voice = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes1).addTickables(notes2); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave, { stave: stave }); + f.draw(); + ok(true, 'Complex beam articulations'); +} +function complexWithArticulation2(options) { + const f = VexFlowTests.makeFactory(options, 500, 300); + const system = f.System(); + const s1 = [ + { keys: ['e/4'], duration: '128', stem_direction: 1 }, + { keys: ['d/4'], duration: '16', stem_direction: 1 }, + { keys: ['e/4'], duration: '8', stem_direction: 1 }, + { keys: ['c/4', 'g/4'], duration: '32', stem_direction: 1 }, + { keys: ['c/4'], duration: '32', stem_direction: 1 }, + { keys: ['c/4'], duration: '32', stem_direction: 1 }, + { keys: ['c/4'], duration: '32', stem_direction: 1 }, + ]; + const s2 = [ + { keys: ['e/5'], duration: '128', stem_direction: -1 }, + { keys: ['d/5'], duration: '16', stem_direction: -1 }, + { keys: ['e/5'], duration: '8', stem_direction: -1 }, + { keys: ['c/5', 'g/5'], duration: '32', stem_direction: -1 }, + { keys: ['c/5'], duration: '32', stem_direction: -1 }, + { keys: ['c/5'], duration: '32', stem_direction: -1 }, + { keys: ['c/5'], duration: '32', stem_direction: -1 }, + ]; + const notes1 = s1.map((struct) => f.StaveNote(struct).addModifier(f.Articulation({ type: 'am', position: 'above' }), 0)); + const notes2 = s2.map((struct) => f.StaveNote(struct).addModifier(f.Articulation({ type: 'a>', position: 'below' }), 0)); + const notes3 = s1.map((struct) => f.StaveNote(struct).addModifier(f.Articulation({ type: 'am', position: 'above' }), 0)); + const notes4 = s2.map((struct) => f.StaveNote(struct).addModifier(f.Articulation({ type: 'a>', position: 'below' }), 0)); + f.Beam({ notes: notes1 }); + f.Beam({ notes: notes2 }); + f.Beam({ notes: notes3 }); + f.Beam({ notes: notes4 }); + const voice1 = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes1).addTickables(notes2); + const voice2 = f.Voice().setMode(Voice.Mode.SOFT).addTickables(notes3).addTickables(notes4); + system.addStave({ voices: [voice1] }); + system.addStave({ voices: [voice2] }); + f.draw(); + ok(true, 'Complex beam articulations two staves'); +} +VexFlowTests.register(BeamTests); +export { BeamTests }; diff --git a/build/esm/tests/bend_tests.js b/build/esm/tests/bend_tests.js new file mode 100644 index 0000000000..56fa567261 --- /dev/null +++ b/build/esm/tests/bend_tests.js @@ -0,0 +1,215 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Bend } from '../src/bend.js'; +import { Font } from '../src/font.js'; +import { Formatter } from '../src/formatter.js'; +import { ModifierContext } from '../src/modifiercontext.js'; +import { Note } from '../src/note.js'; +import { TabNote } from '../src/tabnote.js'; +import { TabStave } from '../src/tabstave.js'; +import { TickContext } from '../src/tickcontext.js'; +const BendTests = { + Start() { + QUnit.module('Bend'); + const run = VexFlowTests.runTests; + run('Double Bends', doubleBends); + run('Reverse Bends', reverseBends); + run('Bend Phrase', bendPhrase); + run('Double Bends With Release', doubleBendsWithRelease); + run('Whako Bend', whackoBends); + }, +}; +const note = (noteStruct) => new TabNote(noteStruct); +const bendWithText = (text, release = false) => new Bend(text, release); +const bendWithPhrase = (phrase) => new Bend('', false, phrase); +function doubleBends(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + ctx.font = '10pt Arial'; + const stave = new TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw(); + const notes = [ + note({ + positions: [ + { str: 2, fret: 10 }, + { str: 4, fret: 9 }, + ], + duration: 'q', + }) + .addModifier(bendWithText('Full'), 0) + .addModifier(bendWithText('1/2'), 1), + note({ + positions: [ + { str: 2, fret: 5 }, + { str: 3, fret: 5 }, + ], + duration: 'q', + }) + .addModifier(bendWithText('1/4'), 0) + .addModifier(bendWithText('1/4'), 1), + note({ + positions: [{ str: 4, fret: 7 }], + duration: 'h', + }), + ]; + Formatter.FormatAndDraw(ctx, stave, notes); + notes.forEach((note) => Note.plotMetrics(ctx, note, 140)); + ok(true, 'Double Bends'); +} +function doubleBendsWithRelease(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 550, 240); + ctx.scale(1.0, 1.0); + ctx.setBackgroundFillStyle('#FFF'); + ctx.setFont('Arial', VexFlowTests.Font.size); + const stave = new TabStave(10, 10, 550).addTabGlyph().setContext(ctx).draw(); + const notes = [ + note({ + positions: [ + { str: 1, fret: 10 }, + { str: 4, fret: 9 }, + ], + duration: 'q', + }) + .addModifier(bendWithText('1/2', true), 0) + .addModifier(bendWithText('Full', true), 1), + note({ + positions: [ + { str: 2, fret: 5 }, + { str: 3, fret: 5 }, + { str: 4, fret: 5 }, + ], + duration: 'q', + }) + .addModifier(bendWithText('1/4', true), 0) + .addModifier(bendWithText('Monstrous', true), 1) + .addModifier(bendWithText('1/4', true), 2), + note({ + positions: [{ str: 4, fret: 7 }], + duration: 'q', + }), + note({ + positions: [{ str: 4, fret: 7 }], + duration: 'q', + }), + ]; + Formatter.FormatAndDraw(ctx, stave, notes); + notes.forEach((note) => Note.plotMetrics(ctx, note, 140)); + ok(true, 'Bend Release'); +} +function reverseBends(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + ctx.setFont('10pt Arial'); + const stave = new TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw(); + const notes = [ + note({ + positions: [ + { str: 2, fret: 10 }, + { str: 4, fret: 9 }, + ], + duration: 'w', + }) + .addModifier(bendWithText('Full'), 1) + .addModifier(bendWithText('1/2'), 0), + note({ + positions: [ + { str: 2, fret: 5 }, + { str: 3, fret: 5 }, + ], + duration: 'w', + }) + .addModifier(bendWithText('1/4'), 1) + .addModifier(bendWithText('1/4'), 0), + note({ + positions: [{ str: 4, fret: 7 }], + duration: 'w', + }), + ]; + for (let i = 0; i < notes.length; ++i) { + const note = notes[i]; + const mc = new ModifierContext(); + note.addToModifierContext(mc); + const tickContext = new TickContext(); + tickContext + .addTickable(note) + .preFormat() + .setX(75 * i); + note.setStave(stave).setContext(ctx).draw(); + Note.plotMetrics(ctx, note, 140); + ok(true, 'Bend ' + i); + } +} +function bendPhrase(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + ctx.font = Font.SIZE + 'pt ' + Font.SANS_SERIF; + const stave = new TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw(); + const phrase1 = [ + { type: Bend.UP, text: 'Full' }, + { type: Bend.DOWN, text: 'Monstrous' }, + { type: Bend.UP, text: '1/2' }, + { type: Bend.DOWN, text: '' }, + ]; + const bend1 = bendWithPhrase(phrase1).setContext(ctx); + const notes = [ + note({ + positions: [{ str: 2, fret: 10 }], + duration: 'w', + }).addModifier(bend1, 0), + ]; + for (let i = 0; i < notes.length; ++i) { + const note = notes[i]; + note.addToModifierContext(new ModifierContext()); + const tickContext = new TickContext(); + tickContext + .addTickable(note) + .preFormat() + .setX(75 * i); + note.setStave(stave).setContext(ctx).draw(); + Note.plotMetrics(ctx, note, 140); + ok(true, 'Bend ' + i); + } +} +function whackoBends(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 240); + ctx.scale(1.0, 1.0); + ctx.setBackgroundFillStyle('#FFF'); + ctx.setFont('Arial', VexFlowTests.Font.size); + const stave = new TabStave(10, 10, 350).addTabGlyph().setContext(ctx).draw(); + const phrase1 = [ + { type: Bend.UP, text: 'Full' }, + { type: Bend.DOWN, text: '' }, + { type: Bend.UP, text: '1/2' }, + { type: Bend.DOWN, text: '' }, + ]; + const phrase2 = [ + { type: Bend.UP, text: 'Full' }, + { type: Bend.UP, text: 'Full' }, + { type: Bend.UP, text: '1/2' }, + { type: Bend.DOWN, text: '' }, + { type: Bend.DOWN, text: 'Full' }, + { type: Bend.DOWN, text: 'Full' }, + { type: Bend.UP, text: '1/2' }, + { type: Bend.DOWN, text: '' }, + ]; + const notes = [ + note({ + positions: [ + { str: 2, fret: 10 }, + { str: 3, fret: 9 }, + ], + duration: 'q', + }) + .addModifier(bendWithPhrase(phrase1), 0) + .addModifier(bendWithPhrase(phrase2), 1), + ]; + Formatter.FormatAndDraw(ctx, stave, notes); + Note.plotMetrics(ctx, notes[0], 140); + ok(true, 'Whacko Bend & Release'); +} +VexFlowTests.register(BendTests); +export { BendTests }; diff --git a/build/esm/tests/boundingbox_tests.js b/build/esm/tests/boundingbox_tests.js new file mode 100644 index 0000000000..9ee34301c4 --- /dev/null +++ b/build/esm/tests/boundingbox_tests.js @@ -0,0 +1,53 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { BoundingBox } from '../src/index.js'; +const BoundingBoxTests = { + Start() { + QUnit.module('BoundingBox'); + test('Initialization Test', initialization); + test('Merging Text', merging); + }, +}; +function initialization() { + const bb = new BoundingBox(4, 5, 6, 7); + equal(bb.getX(), 4, 'Bad X'); + equal(bb.getY(), 5, 'Bad Y'); + equal(bb.getW(), 6, 'Bad W'); + equal(bb.getH(), 7, 'Bad H'); + bb.setX(5); + equal(bb.getX(), 5, 'Bad X'); +} +function merging() { + const tests = [ + { + type: 'Intersection', + bb1: new BoundingBox(10, 10, 10, 10), + bb2: new BoundingBox(15, 20, 10, 10), + merged: new BoundingBox(10, 10, 15, 20), + }, + { + type: '1 contains 2', + bb1: new BoundingBox(10, 10, 30, 30), + bb2: new BoundingBox(15, 15, 10, 10), + merged: new BoundingBox(10, 10, 30, 30), + }, + { + type: '2 contains 1', + bb1: new BoundingBox(15, 15, 10, 10), + bb2: new BoundingBox(10, 10, 30, 30), + merged: new BoundingBox(10, 10, 30, 30), + }, + ]; + tests.forEach((test) => { + const type = test.type; + const bb1 = test.bb1; + const bb2 = test.bb2; + const merged = test.merged; + bb1.mergeWith(bb2); + equal(bb1.getX(), merged.getX(), type + ' - Bad X'); + equal(bb1.getY(), merged.getY(), type + ' - Bad Y'); + equal(bb1.getW(), merged.getW(), type + ' - Bad W'); + equal(bb1.getH(), merged.getH(), type + ' - Bad H'); + }); +} +VexFlowTests.register(BoundingBoxTests); +export { BoundingBoxTests }; diff --git a/build/esm/tests/boundingboxcomputation_tests.js b/build/esm/tests/boundingboxcomputation_tests.js new file mode 100644 index 0000000000..f4f9d51b30 --- /dev/null +++ b/build/esm/tests/boundingboxcomputation_tests.js @@ -0,0 +1,183 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { BoundingBoxComputation, Glyph } from '../src/index.js'; +const BoundingBoxComputationTests = { + Start() { + QUnit.module('BoundingBoxComputation'); + test('Point Test', point); + const run = VexFlowTests.runTests; + quadraticParams.forEach((params, index) => { + run(`Quadratic Test ${index}`, quadratic, params); + }); + cubicParams.forEach((params, index) => { + run(`Cubic Test ${index}`, cubic, params); + }); + }, +}; +function point() { + const bboxComp = new BoundingBoxComputation(); + bboxComp.addPoint(2, 3); + equal(bboxComp.getX1(), 2, 'Bad X1'); + equal(bboxComp.getY1(), 3, 'Bad Y1'); + equal(bboxComp.width(), 0, 'Bad width'); + equal(bboxComp.height(), 0, 'Bad height'); + bboxComp.addPoint(-5, 7); + equal(bboxComp.getX1(), -5, 'Bad X1'); + equal(bboxComp.getY1(), 3, 'Bad Y1'); + equal(bboxComp.width(), 7, 'Bad width'); + equal(bboxComp.height(), 4, 'Bad height'); +} +function createContext(options) { + const points = options.params.points; + let w = points[0]; + let h = points[1]; + for (let i = 2; i < points.length; i += 2) { + w = Math.max(w, points[i]); + h = Math.max(h, points[i + 1]); + } + const f = VexFlowTests.makeFactory(options, w + 20, h + 20); + const ctx = f.getContext(); + ctx.setLineCap('square'); + return ctx; +} +function rect(ctx, style, lineWidth, x, y, w, h) { + ctx.strokeStyle = style; + ctx.setLineWidth(lineWidth); + ctx.beginPath(); + ctx.moveTo(x, y); + ctx.lineTo(x + w, y); + ctx.lineTo(x + w, y + h); + ctx.lineTo(x, y + h); + ctx.lineTo(x, y); + ctx.stroke(); +} +const quadraticParams = [ + { + points: [10, 10, 100, 20, 110, 110], + box: [10, 10, 100, 100], + }, + { + points: [110, 10, 60, 110, 10, 20], + box: [10, 10, 100, 52.63], + }, + { + points: [10, 10, 30, 20, 50, 30], + box: [10, 10, 40, 20], + }, + { + points: [100, 30, 30, 110, 20, 30], + box: [20, 30, 80, 40], + }, +]; +function quadratic(options) { + const points = options.params.points; + const box = options.params.box; + const ctx = createContext(options); + const [x0, y0, x1, y1, x2, y2] = points; + let [bx, by, bw, bh] = box; + rect(ctx, '#0f0', 5, bx, by, bw, bh); + const bboxComp = new BoundingBoxComputation(); + bboxComp.addQuadraticCurve(x0, y0, x1, y1, x2, y2); + [bx, by, bw, bh] = [bboxComp.getX1(), bboxComp.getY1(), bboxComp.width(), bboxComp.height()]; + rect(ctx, '#00f', 3, bx, by, bw, bh); + const o = [0, x0, -y0, 2, x2, -y2, x1, -y1]; + const bbox = Glyph.getOutlineBoundingBox(o, 1, 0, 0); + rect(ctx, '#fa0', 1, bbox.getX(), bbox.getY(), bbox.getW(), bbox.getH()); + ctx.setLineWidth(1); + ctx.fillStyle = '#000'; + Glyph.renderOutline(ctx, o, 1, 0, 0); + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(x0, y0); + ctx.lineTo(x1, y1); + ctx.lineTo(x2, y2); + ctx.stroke(); + ok(Math.abs(bboxComp.getX1() - box[0]) < 0.01, `Bad X1: ${bboxComp.getX1()}`); + ok(Math.abs(bboxComp.getY1() - box[1]) < 0.01, `Bad Y1: ${bboxComp.getY1()}`); + ok(Math.abs(bboxComp.width() - box[2]) < 0.01, `Bad width: ${bboxComp.width()}`); + ok(Math.abs(bboxComp.height() - box[3]) < 0.01, `Bad height: ${bboxComp.height()}`); + ok(Math.abs(bbox.getX() - box[0]) < 0.01, `Bad X: ${bbox.getX()}`); + ok(Math.abs(bbox.getY() - box[1]) < 0.01, `Bad Y: ${bbox.getY()}`); + ok(Math.abs(bbox.getW() - box[2]) < 0.01, `Bad W: ${bbox.getW()}`); + ok(Math.abs(bbox.getH() - box[3]) < 0.01, `Bad H: ${bbox.getH()}`); +} +const cubicParams = [ + { + points: [10, 10, 60, 20, 100, 60, 110, 110], + box: [10, 10, 100, 100], + }, + { + points: [10, 10, 35, 110, 85, 110, 110, 10], + box: [10, 10, 100, 75], + }, + { + points: [10, 110, 90, 10, 30, 10, 110, 110], + box: [10, 35, 100, 75], + }, + { + points: [10, 10, 110, 110, 110, 10, 10, 110], + box: [10, 10, 75, 100], + }, + { + points: [10, 10, 130, 110, -10, 110, 110, 10], + box: [10, 10, 100, 75], + }, + { + points: [50, 10, 10, 110, 110, 110, 74, 10], + box: [40.38, 10, 41.59, 75], + }, + { + points: [10, 30, 35, 60, 110, 110, 60, 10], + box: [10, 10, 66.82, 59.37], + }, + { + points: [210, 70, 10, 10, 190, 10, 120, 90], + box: [112.02, 27.23, 97.98, 62.77], + }, + { + points: [20, 10, 210, 90, 10, 90, 100, 38], + box: [20, 10, 85.33, 64.06], + }, + { + points: [60, 14, 10, 14, 90, 14, 70, 14], + box: [43.28, 14, 30.01, 0], + }, + { + points: [10, 60, 20, 100, 100, 20, 110, 60], + box: [10, 48.45, 100, 23.1], + }, +]; +function cubic(options) { + const points = options.params.points; + const box = options.params.box; + const ctx = createContext(options); + const [x0, y0, x1, y1, x2, y2, x3, y3] = points; + let [bx, by, bw, bh] = box; + rect(ctx, '#0f0', 5, bx, by, bw, bh); + const bboxComp = new BoundingBoxComputation(); + bboxComp.addBezierCurve(x0, y0, x1, y1, x2, y2, x3, y3); + [bx, by, bw, bh] = [bboxComp.getX1(), bboxComp.getY1(), bboxComp.width(), bboxComp.height()]; + rect(ctx, '#00f', 3, bx, by, bw, bh); + const o = [0, x0, -y0, 3, x3, -y3, x1, -y1, x2, -y2]; + const bbox = Glyph.getOutlineBoundingBox(o, 1, 0, 0); + rect(ctx, '#fa0', 1, bbox.getX(), bbox.getY(), bbox.getW(), bbox.getH()); + ctx.setLineWidth(1); + ctx.fillStyle = '#000'; + Glyph.renderOutline(ctx, o, 1, 0, 0); + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(x0, y0); + ctx.lineTo(x1, y1); + ctx.lineTo(x2, y2); + ctx.lineTo(x3, y3); + ctx.stroke(); + ok(Math.abs(bboxComp.getX1() - box[0]) < 0.01, `Bad X1: ${bboxComp.getX1()}`); + ok(Math.abs(bboxComp.getY1() - box[1]) < 0.01, `Bad Y1: ${bboxComp.getY1()}`); + ok(Math.abs(bboxComp.width() - box[2]) < 0.01, `Bad width: ${bboxComp.width()}`); + ok(Math.abs(bboxComp.height() - box[3]) < 0.01, `Bad height: ${bboxComp.height()}`); + ok(Math.abs(bbox.getX() - box[0]) < 0.01, `Bad X: ${bbox.getX()}`); + ok(Math.abs(bbox.getY() - box[1]) < 0.01, `Bad Y: ${bbox.getY()}`); + ok(Math.abs(bbox.getW() - box[2]) < 0.01, `Bad W: ${bbox.getW()}`); + ok(Math.abs(bbox.getH() - box[3]) < 0.01, `Bad H: ${bbox.getH()}`); +} +VexFlowTests.register(BoundingBoxComputationTests); +export { BoundingBoxComputationTests }; diff --git a/build/esm/tests/chordsymbol_tests.js b/build/esm/tests/chordsymbol_tests.js new file mode 100644 index 0000000000..789539374e --- /dev/null +++ b/build/esm/tests/chordsymbol_tests.js @@ -0,0 +1,402 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Accidental } from '../src/accidental.js'; +import { ChordSymbol } from '../src/chordsymbol.js'; +import { Font } from '../src/font.js'; +import { Formatter } from '../src/formatter.js'; +import { Ornament } from '../src/ornament.js'; +import { Stave } from '../src/stave.js'; +import { StaveNote } from '../src/stavenote.js'; +import { Tables } from '../src/tables.js'; +const ChordSymbolTests = { + Start() { + QUnit.module('ChordSymbol'); + const run = VexFlowTests.runTests; + run('Chord Symbol With Modifiers', withModifiers); + run('Chord Symbol Font Size Tests', fontSize); + run('Chord Symbol Kerning Tests', kern); + run('Top Chord Symbols', top); + run('Top Chord Symbols Justified', topJustify); + run('Bottom Chord Symbols', bottom); + run('Bottom Stem Down Chord Symbols', bottomStemDown); + run('Double Bottom Chord Symbols', doubleBottom); + }, +}; +const superscript = { symbolModifier: ChordSymbol.symbolModifiers.SUPERSCRIPT }; +const subscript = { symbolModifier: ChordSymbol.symbolModifiers.SUBSCRIPT }; +const note = (factory, keys, duration, chordSymbol) => factory.StaveNote({ keys, duration }).addModifier(chordSymbol, 0); +function getGlyphWidth(glyphName) { + const musicFont = Tables.currentMusicFont(); + const glyph = musicFont.getGlyphs()[glyphName]; + const widthInEm = (glyph.x_max - glyph.x_min) / musicFont.getResolution(); + return widthInEm * 38 * Font.scaleToPxFrom.pt; +} +function withModifiers(options) { + const f = VexFlowTests.makeFactory(options, 750, 580); + const ctx = f.getContext(); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + function draw(chords, y) { + const notes = [ + note(f, ['c/4'], 'q', chords[0]).addModifier(new Ornament('doit')), + note(f, ['c/4'], 'q', chords[1]), + note(f, ['c/4'], 'q', chords[2]).addModifier(new Ornament('fall')), + note(f, ['c/4'], 'q', chords[3]), + ]; + const score = f.EasyScore(); + const voice = score.voice(notes, { time: '4/4' }); + const formatter = f.Formatter(); + formatter.joinVoices([voice]); + const voiceW = formatter.preCalculateMinTotalWidth([voice]); + const staffW = voiceW + Stave.defaultPadding + getGlyphWidth('gClef'); + formatter.format([voice], voiceW); + const staff = f.Stave({ x: 10, y, width: staffW }).addClef('treble').draw(); + voice.draw(ctx, staff); + } + let chords = []; + chords.push(f + .ChordSymbol({ fontSize: 10 }) + .addText('F7') + .addGlyph('leftParenTall') + .addGlyphOrText('b9', superscript) + .addGlyphOrText('#11', subscript) + .addGlyph('rightParenTall')); + chords.push(f.ChordSymbol({ fontSize: 12 }).addText('F7').addGlyphOrText('b9', superscript).addGlyphOrText('#11', subscript)); + chords.push(f + .ChordSymbol({ fontSize: 14 }) + .addText('F7') + .addGlyph('leftParenTall') + .addGlyphOrText('add 3', superscript) + .addGlyphOrText('omit 9', subscript) + .addGlyph('rightParenTall')); + chords.push(f + .ChordSymbol({ fontSize: 16 }) + .addText('F7') + .addGlyph('leftParenTall') + .addGlyphOrText('b9', superscript) + .addGlyphOrText('#11', subscript) + .addGlyph('rightParenTall')); + draw(chords, 40); + chords = []; + chords.push(f + .ChordSymbol({ fontSize: 10 }) + .setFontSize(10) + .addText('F7') + .addGlyphOrText('#11', superscript) + .addGlyphOrText('b9', subscript)); + chords.push(f.ChordSymbol({ fontSize: 12 }).addText('F7').addGlyphOrText('#11', superscript).addGlyphOrText('b9', subscript)); + chords.push(f.ChordSymbol({ fontSize: 14 }).addText('F7').addGlyphOrText('#11', superscript).addGlyphOrText('b9', subscript)); + chords.push(f + .ChordSymbol({ fontSize: 16 }) + .setFontSize(16) + .addText('F7') + .addGlyphOrText('#11', superscript) + .addGlyphOrText('b9', subscript)); + draw(chords, 140); + chords = [ + f.ChordSymbol({ fontSize: 10 }).addGlyphOrText('Ab').addGlyphOrText('7(#11b9)', superscript), + f.ChordSymbol({ fontSize: 14 }).addGlyphOrText('C#').addGlyphOrText('7(#11b9)', superscript), + f.ChordSymbol({ fontSize: 16 }).addGlyphOrText('Ab').addGlyphOrText('7(#11b9)', superscript), + f.ChordSymbol({ fontSize: 18 }).addGlyphOrText('C#').addGlyphOrText('7(#11b9)', superscript), + ]; + draw(chords, 240); + ok(true, 'Font Size Chord Symbol'); +} +function fontSize(options) { + const f = VexFlowTests.makeFactory(options, 750, 580); + const ctx = f.getContext(); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + function draw(chords, y) { + const stave = f.Stave({ x: 10, y, width: 450 }).addClef('treble'); + const notes = [ + note(f, ['c/4'], 'q', chords[0]), + note(f, ['c/4'], 'q', chords[1]), + note(f, ['c/4'], 'q', chords[2]), + note(f, ['c/4'], 'q', chords[3]), + ]; + const score = f.EasyScore(); + const voice = score.voice(notes, { time: '4/4' }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + } + let chords = []; + chords.push(f + .ChordSymbol({ fontSize: 10 }) + .addText('F7') + .addGlyph('leftParenTall') + .addGlyphOrText('b9', superscript) + .addGlyphOrText('#11', subscript) + .addGlyph('rightParenTall') + .setReportWidth(false)); + chords.push(f + .ChordSymbol({ fontSize: 12 }) + .addText('F7') + .addGlyphOrText('b9', superscript) + .addGlyphOrText('#11', subscript) + .setReportWidth(false)); + chords.push(f + .ChordSymbol({ fontSize: 14 }) + .addText('F7') + .addGlyph('leftParenTall') + .addGlyphOrText('add 3', superscript) + .addGlyphOrText('omit 9', subscript) + .addGlyph('rightParenTall') + .setReportWidth(false)); + chords.push(f + .ChordSymbol({ fontSize: 16 }) + .addText('F7') + .addGlyph('leftParenTall') + .addGlyphOrText('b9', superscript) + .addGlyphOrText('#11', subscript) + .addGlyph('rightParenTall') + .setReportWidth(false)); + draw(chords, 40); + chords = []; + chords.push(f + .ChordSymbol({ fontSize: 10 }) + .setFontSize(10) + .addText('F7') + .addGlyphOrText('#11', superscript) + .addGlyphOrText('b9', subscript)); + chords.push(f.ChordSymbol({ fontSize: 12 }).addText('F7').addGlyphOrText('#11', superscript).addGlyphOrText('b9', subscript)); + chords.push(f.ChordSymbol({ fontSize: 14 }).addText('F7').addGlyphOrText('#11', superscript).addGlyphOrText('b9', subscript)); + chords.push(f + .ChordSymbol({ fontSize: 16 }) + .setFontSize(16) + .addText('F7') + .addGlyphOrText('#11', superscript) + .addGlyphOrText('b9', subscript)); + draw(chords, 140); + chords = [ + f.ChordSymbol({ fontSize: 10 }).addGlyphOrText('Ab').addGlyphOrText('7(#11b9)', superscript), + f.ChordSymbol({ fontSize: 14 }).addGlyphOrText('C#').addGlyphOrText('7(#11b9)', superscript), + f.ChordSymbol({ fontSize: 16 }).addGlyphOrText('Ab').addGlyphOrText('7(#11b9)', superscript), + f.ChordSymbol({ fontSize: 18 }).addGlyphOrText('C#').addGlyphOrText('7(#11b9)', superscript), + ]; + draw(chords, 240); + ok(true, 'Font Size Chord Symbol'); +} +function kern(options) { + const f = VexFlowTests.makeFactory(options, 650 * 1.5, 650); + const ctx = f.getContext(); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + function draw(chords, y) { + const stave = f.Stave({ x: 10, y, width: 450 }).addClef('treble').setContext(ctx).draw(); + const notes = [ + note(f, ['C/4'], 'q', chords[0]), + note(f, ['C/4'], 'q', chords[1]), + note(f, ['C/4'], 'q', chords[2]), + note(f, ['C/4'], 'q', chords[3]), + ]; + const score = f.EasyScore(); + const voice = score.voice(notes, { time: '4/4' }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + } + let chords = [ + f.ChordSymbol().addText('A').addGlyphSuperscript('dim').setReportWidth(false), + f.ChordSymbol({ kerning: false, reportWidth: false }).addText('A').addGlyphSuperscript('dim'), + f.ChordSymbol({ hJustify: 'left', reportWidth: false }).addText('C').addGlyph('halfDiminished', superscript), + f.ChordSymbol({ reportWidth: false }).addText('D').addGlyph('halfDiminished', superscript), + ]; + draw(chords, 10); + chords = [ + f.ChordSymbol().addText('A').addGlyphSuperscript('dim'), + f.ChordSymbol({ kerning: false }).addText('A').addGlyphSuperscript('dim'), + f.ChordSymbol().addText('A').addGlyphSuperscript('+').addTextSuperscript('5'), + f.ChordSymbol().addText('G').addGlyphSuperscript('+').addTextSuperscript('5'), + ]; + draw(chords, 110); + chords = [ + f.ChordSymbol().addText('A').addGlyph('-'), + f.ChordSymbol().addText('E').addGlyph('-'), + f.ChordSymbol().addText('A').addGlyphOrText('(#11)', superscript), + f.ChordSymbol().addText('E').addGlyphOrText('(#9)', superscript), + ]; + draw(chords, 210); + chords = [ + f.ChordSymbol().addGlyphOrText('F/B').addGlyphOrText('b', superscript), + f.ChordSymbol().addText('E').addGlyphOrText('V/V'), + f.ChordSymbol().addText('A').addGlyphOrText('(#11)', superscript), + f.ChordSymbol().addText('E').addGlyphOrText('(#9)', superscript), + ]; + draw(chords, 310); + ok(true, 'Chord Symbol Kerning Tests'); +} +function top(options) { + const f = VexFlowTests.makeFactory(options, 650 * 1.5, 650); + const ctx = f.getContext(); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + function draw(c1, c2, y) { + const stave = f.Stave({ x: 10, y, width: 450 }).addClef('treble').setContext(ctx).draw(); + const notes = [ + note(f, ['e/4', 'a/4', 'd/5'], 'h', c1).addModifier(new Accidental('b'), 0), + note(f, ['c/4', 'e/4', 'b/4'], 'h', c2), + ]; + const score = f.EasyScore(); + const voice = score.voice(notes, { time: '4/4' }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + } + let chord1 = f + .ChordSymbol({ reportWidth: false }) + .addText('F7') + .setHorizontal('left') + .addGlyphOrText('(#11b9)', superscript); + let chord2 = f + .ChordSymbol({ reportWidth: false }) + .addText('C') + .setHorizontal('left') + .addGlyphSuperscript('majorSeventh'); + draw(chord1, chord2, 40); + chord1 = f + .ChordSymbol() + .addText('F7') + .addTextSuperscript('(') + .addGlyphOrText('#11b9', superscript) + .addTextSuperscript(')'); + chord2 = f.ChordSymbol().addText('C').setHorizontal('left').addTextSuperscript('Maj.'); + draw(chord1, chord2, 140); + chord1 = f + .ChordSymbol() + .addText('F7') + .setHorizontal('left') + .addGlyphOrText('#11', superscript) + .addGlyphOrText('b9', subscript); + chord2 = f.ChordSymbol().addText('C').addTextSuperscript('sus4'); + draw(chord1, chord2, 240); + ok(true, 'Top Chord Symbol'); +} +function topJustify(options) { + const f = VexFlowTests.makeFactory(options, 500 * 1.5, 680); + const ctx = f.getContext(); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + function draw(chord1, chord2, y) { + const stave = new Stave(10, y, 450).addClef('treble').setContext(ctx).draw(); + const notes = [ + note(f, ['e/4', 'a/4', 'd/5'], 'h', chord1).addModifier(new Accidental('b'), 0), + note(f, ['c/4', 'e/4', 'B/4'], 'h', chord2), + ]; + Formatter.FormatAndDraw(ctx, stave, notes); + } + let chord1 = f.ChordSymbol().addText('F7').setHorizontal('left').addGlyphOrText('(#11b9)', superscript); + let chord2 = f.ChordSymbol({ hJustify: 'left' }).addText('C').addGlyphSuperscript('majorSeventh'); + draw(chord1, chord2, 40); + chord1 = f + .ChordSymbol({ hJustify: 'center' }) + .addText('F7') + .setHorizontal('left') + .addGlyphOrText('(#11b9)', superscript); + chord2 = f.ChordSymbol({ hJustify: 'center' }).addText('C').addTextSuperscript('Maj.'); + draw(chord1, chord2, 140); + chord1 = f + .ChordSymbol({ hJustify: 'right' }) + .addText('F7') + .setHorizontal('left') + .addGlyphOrText('#11', superscript) + .addGlyphOrText('b9', subscript); + chord2 = f.ChordSymbol({ hJustify: 'right' }).addText('C').addTextSuperscript('Maj.'); + draw(chord1, chord2, 240); + chord1 = f + .ChordSymbol({ hJustify: 'left' }) + .addText('F7') + .setHorizontal('left') + .addGlyphOrText('#11', superscript) + .addGlyphOrText('b9', subscript); + chord2 = f.ChordSymbol({ hJustify: 'centerStem' }).addText('C').addTextSuperscript('Maj.'); + draw(chord1, chord2, 340); + ok(true, 'Top Chord Justified'); +} +function bottom(options) { + const f = VexFlowTests.makeFactory(options, 600 * 1.5, 230); + const ctx = f.getContext(); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + function draw(chords, y) { + const stave = new Stave(10, y, 400).addClef('treble').setContext(ctx).draw(); + const notes = [ + note(f, ['c/4', 'f/4', 'a/4'], 'q', chords[0]), + note(f, ['c/4', 'e/4', 'b/4'], 'q', chords[1]).addModifier(new Accidental('b'), 2), + note(f, ['c/4', 'e/4', 'g/4'], 'q', chords[2]), + note(f, ['c/4', 'f/4', 'a/4'], 'q', chords[3]).addModifier(new Accidental('#'), 1), + ]; + Formatter.FormatAndDraw(ctx, stave, notes); + } + const chords = [ + f.ChordSymbol({ vJustify: 'bottom' }).addText('I').addTextSuperscript('6').addTextSubscript('4'), + f.ChordSymbol({ vJustify: 'bottom' }).addGlyphOrText('V'), + f.ChordSymbol({ vJustify: 'bottom' }).addLine(12), + f.ChordSymbol({ vJustify: 'bottom' }).addGlyphOrText('V/V'), + ]; + draw(chords, 10); + ok(true, 'Bottom Chord Symbol'); +} +function bottomStemDown(options) { + const f = VexFlowTests.makeFactory(options, 600 * 1.5, 330); + const ctx = f.getContext(); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + function draw(chords, y) { + const note = (keys, duration, chordSymbol) => new StaveNote({ keys, duration, stem_direction: -1 }).addModifier(chordSymbol, 0); + const stave = new Stave(10, y, 400).addClef('treble').setContext(ctx).draw(); + const notes = [ + note(['c/4', 'f/4', 'a/4'], 'q', chords[0]), + note(['c/4', 'e/4', 'b/4'], 'q', chords[1]).addModifier(new Accidental('b'), 2), + note(['c/4', 'e/4', 'g/4'], 'q', chords[2]), + note(['c/4', 'f/4', 'a/4'], 'q', chords[3]).addModifier(new Accidental('#'), 1), + ]; + Formatter.FormatAndDraw(ctx, stave, notes); + } + const chords = [ + f.ChordSymbol({ vJustify: 'bottom' }).addGlyphOrText('F'), + f.ChordSymbol({ vJustify: 'bottom' }).addGlyphOrText('C7'), + f.ChordSymbol({ vJustify: 'bottom' }).addLine(12), + f.ChordSymbol({ vJustify: 'bottom' }).addText('A').addGlyphSuperscript('dim'), + ]; + draw(chords, 10); + ok(true, 'Bottom Stem Down Chord Symbol'); +} +function doubleBottom(options) { + const f = VexFlowTests.makeFactory(options, 600 * 1.5, 260); + const ctx = f.getContext(); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + function draw(chords, chords2, y) { + const note = (keys, duration, chordSymbol1, chordSymbol2) => new StaveNote({ keys, duration }).addModifier(chordSymbol1, 0).addModifier(chordSymbol2, 0); + const stave = f.Stave({ x: 10, y, width: 450 }).addClef('treble').setContext(ctx).draw(); + const notes = [ + note(['c/4', 'f/4', 'a/4'], 'q', chords[0], chords2[0]), + note(['c/4', 'e/4', 'b/4'], 'q', chords[1], chords2[1]).addModifier(f.Accidental({ type: 'b' }), 2), + note(['c/4', 'e/4', 'g/4'], 'q', chords[2], chords2[2]), + note(['c/4', 'f/4', 'a/4'], 'q', chords[3], chords2[3]).addModifier(f.Accidental({ type: '#' }), 1), + ]; + Formatter.FormatAndDraw(ctx, stave, notes); + } + const chords1 = [ + f.ChordSymbol({ vJustify: 'bottom' }).addText('I').addTextSuperscript('6').addTextSubscript('4'), + f.ChordSymbol({ vJustify: 'bottom' }).addGlyphOrText('V'), + f.ChordSymbol({ vJustify: 'bottom' }).addLine(12), + f.ChordSymbol({ vJustify: 'bottom' }).addGlyphOrText('V/V'), + ]; + const chords2 = [ + f.ChordSymbol({ vJustify: 'bottom' }).addText('T'), + f.ChordSymbol({ vJustify: 'bottom' }).addText('D'), + f.ChordSymbol({ vJustify: 'bottom' }).addText('D'), + f.ChordSymbol({ vJustify: 'bottom' }).addText('SD'), + ]; + draw(chords1, chords2, 10); + ok(true, '2 Bottom Chord Symbol'); +} +VexFlowTests.register(ChordSymbolTests); +export { ChordSymbolTests }; diff --git a/build/esm/tests/clef_tests.js b/build/esm/tests/clef_tests.js new file mode 100644 index 0000000000..230c60d2d9 --- /dev/null +++ b/build/esm/tests/clef_tests.js @@ -0,0 +1,131 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +const ClefTests = { + Start() { + QUnit.module('Clef'); + const run = VexFlowTests.runTests; + run('Clef Test', draw); + run('Clef End Test', drawEnd); + run('Small Clef Test', drawSmall); + run('Small Clef End Test', drawSmallEnd); + run('Clef Change Test', drawClefChange); + }, +}; +function draw(options) { + const f = VexFlowTests.makeFactory(options, 800, 120); + f.Stave() + .addClef('treble') + .addClef('treble', 'default', '8va') + .addClef('treble', 'default', '8vb') + .addClef('alto') + .addClef('tenor') + .addClef('soprano') + .addClef('bass') + .addClef('bass', 'default', '8vb') + .addClef('mezzo-soprano') + .addClef('baritone-c') + .addClef('baritone-f') + .addClef('subbass') + .addClef('percussion') + .addClef('french') + .addEndClef('treble'); + f.draw(); + ok(true, 'all pass'); +} +function drawEnd(options) { + const f = VexFlowTests.makeFactory(options, 800, 120); + f.Stave() + .addClef('bass') + .addEndClef('treble') + .addEndClef('treble', 'default', '8va') + .addEndClef('treble', 'default', '8vb') + .addEndClef('alto') + .addEndClef('tenor') + .addEndClef('soprano') + .addEndClef('bass') + .addEndClef('bass', 'default', '8vb') + .addEndClef('mezzo-soprano') + .addEndClef('baritone-c') + .addEndClef('baritone-f') + .addEndClef('subbass') + .addEndClef('percussion') + .addEndClef('french'); + f.draw(); + ok(true, 'all pass'); +} +function drawSmall(options) { + const f = VexFlowTests.makeFactory(options, 800, 120); + f.Stave() + .addClef('treble', 'small') + .addClef('treble', 'small', '8va') + .addClef('treble', 'small', '8vb') + .addClef('alto', 'small') + .addClef('tenor', 'small') + .addClef('soprano', 'small') + .addClef('bass', 'small') + .addClef('bass', 'small', '8vb') + .addClef('mezzo-soprano', 'small') + .addClef('baritone-c', 'small') + .addClef('baritone-f', 'small') + .addClef('subbass', 'small') + .addClef('percussion', 'small') + .addClef('french', 'small') + .addEndClef('treble', 'small'); + f.draw(); + ok(true, 'all pass'); +} +function drawSmallEnd(options) { + const f = VexFlowTests.makeFactory(options, 800, 120); + f.Stave() + .addClef('bass', 'small') + .addEndClef('treble', 'small') + .addEndClef('treble', 'small', '8va') + .addEndClef('treble', 'small', '8vb') + .addEndClef('alto', 'small') + .addEndClef('tenor', 'small') + .addEndClef('soprano', 'small') + .addEndClef('bass', 'small') + .addEndClef('bass', 'small', '8vb') + .addEndClef('mezzo-soprano', 'small') + .addEndClef('baritone-c', 'small') + .addEndClef('baritone-f', 'small') + .addEndClef('subbass', 'small') + .addEndClef('percussion', 'small') + .addEndClef('french', 'small'); + f.draw(); + ok(true, 'all pass'); +} +function drawClefChange(options) { + const f = VexFlowTests.makeFactory(options, 800, 180); + const stave = f.Stave().addClef('treble'); + const notes = [ + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble' }), + f.ClefNote({ type: 'alto', options: { size: 'small' } }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'alto' }), + f.ClefNote({ type: 'tenor', options: { size: 'small' } }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'tenor' }), + f.ClefNote({ type: 'soprano', options: { size: 'small' } }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'soprano' }), + f.ClefNote({ type: 'bass', options: { size: 'small' } }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'bass' }), + f.ClefNote({ type: 'mezzo-soprano', options: { size: 'small' } }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'mezzo-soprano' }), + f.ClefNote({ type: 'baritone-c', options: { size: 'small' } }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'baritone-c' }), + f.ClefNote({ type: 'baritone-f', options: { size: 'small' } }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'baritone-f' }), + f.ClefNote({ type: 'subbass', options: { size: 'small' } }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'subbass' }), + f.ClefNote({ type: 'french', options: { size: 'small' } }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'french' }), + f.ClefNote({ type: 'treble', options: { size: 'small', annotation: '8vb' } }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble', octave_shift: -1 }), + f.ClefNote({ type: 'treble', options: { size: 'small', annotation: '8va' } }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble', octave_shift: 1 }), + ]; + const voice = f.Voice({ time: '12/4' }).addTickables(notes); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'all pass'); +} +VexFlowTests.register(ClefTests); +export { ClefTests }; diff --git a/build/esm/tests/curve_tests.js b/build/esm/tests/curve_tests.js new file mode 100644 index 0000000000..2a6f501162 --- /dev/null +++ b/build/esm/tests/curve_tests.js @@ -0,0 +1,118 @@ +import { concat, VexFlowTests } from './vexflow_test_helpers.js'; +import { CurvePosition } from '../src/curve.js'; +const CurveTests = { + Start() { + QUnit.module('Curve'); + const run = VexFlowTests.runTests; + run('Simple Curve', simple); + run('Rounded Curve', rounded); + run('Thick Thin Curves', thickThin); + run('Top Curve', top); + }, +}; +function createTest(noteGroup1, noteGroup2, setupCurves) { + return (options) => { + const factory = VexFlowTests.makeFactory(options, 350, 200); + const stave = factory.Stave({ y: 50 }); + const score = factory.EasyScore(); + const staveNotes = [ + score.beam(score.notes(...noteGroup1)), + score.beam(score.notes(...noteGroup2)), + ].reduce(concat); + setupCurves(factory, staveNotes); + const voices = [score.voice(staveNotes, { time: '4/4' })]; + factory.Formatter().joinVoices(voices).formatToStave(voices, stave); + factory.draw(); + ok('Simple Curve'); + }; +} +const simple = createTest(['c4/8, f5, d5, g5', { stem: 'up' }], ['d6/8, f5, d5, g5', { stem: 'down' }], (f, notes) => { + f.Curve({ + from: notes[0], + to: notes[3], + options: { + cps: [ + { x: 0, y: 10 }, + { x: 0, y: 50 }, + ], + }, + }); + f.Curve({ + from: notes[4], + to: notes[7], + options: { + cps: [ + { x: 0, y: 10 }, + { x: 0, y: 20 }, + ], + }, + }); +}); +const rounded = createTest(['c5/8, f4, d4, g5', { stem: 'up' }], ['d5/8, d6, d6, g5', { stem: 'down' }], (f, notes) => { + f.Curve({ + from: notes[0], + to: notes[3], + options: { + x_shift: -10, + y_shift: 30, + cps: [ + { x: 0, y: 20 }, + { x: 0, y: 50 }, + ], + }, + }); + f.Curve({ + from: notes[4], + to: notes[7], + options: { + cps: [ + { x: 0, y: 50 }, + { x: 0, y: 50 }, + ], + }, + }); +}); +const thickThin = createTest(['c5/8, f4, d4, g5', { stem: 'up' }], ['d5/8, d6, d6, g5', { stem: 'down' }], (f, notes) => { + f.Curve({ + from: notes[0], + to: notes[3], + options: { + thickness: 10, + x_shift: -10, + y_shift: 30, + cps: [ + { x: 0, y: 20 }, + { x: 0, y: 50 }, + ], + }, + }); + f.Curve({ + from: notes[4], + to: notes[7], + options: { + thickness: 0, + cps: [ + { x: 0, y: 50 }, + { x: 0, y: 50 }, + ], + }, + }); +}); +const top = createTest(['c5/8, f4, d4, g5', { stem: 'up' }], ['d5/8, d6, d6, g5', { stem: 'down' }], (f, notes) => { + f.Curve({ + from: notes[0], + to: notes[7], + options: { + x_shift: -3, + y_shift: 10, + position: CurvePosition.NEAR_TOP, + position_end: CurvePosition.NEAR_HEAD, + cps: [ + { x: 0, y: 20 }, + { x: 40, y: 80 }, + ], + }, + }); +}); +VexFlowTests.register(CurveTests); +export { CurveTests }; diff --git a/build/esm/tests/dot_tests.js b/build/esm/tests/dot_tests.js new file mode 100644 index 0000000000..5b9bac424e --- /dev/null +++ b/build/esm/tests/dot_tests.js @@ -0,0 +1,123 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Beam } from '../src/beam.js'; +import { Dot } from '../src/dot.js'; +import { Formatter } from '../src/formatter.js'; +import { ModifierContext } from '../src/modifiercontext.js'; +import { Note } from '../src/note.js'; +import { Stave } from '../src/stave.js'; +import { StaveNote } from '../src/stavenote.js'; +import { TickContext } from '../src/tickcontext.js'; +import { Voice } from '../src/voice.js'; +const DotTests = { + Start() { + QUnit.module('Dot'); + const run = VexFlowTests.runTests; + run('Basic', basic); + run('Multi Voice', multiVoice); + }, +}; +function showOneNote(note1, stave, ctx, x) { + const modifierContext = new ModifierContext(); + note1.setStave(stave).addToModifierContext(modifierContext); + new TickContext().addTickable(note1).preFormat().setX(x); + note1.setContext(ctx).draw(); + Note.plotMetrics(ctx, note1, 140); +} +function basic(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 1000, 240); + ctx.setFillStyle('#221'); + ctx.setStrokeStyle('#221'); + const stave = new Stave(10, 10, 975); + stave.setContext(ctx); + stave.draw(); + const notes = [ + new StaveNote({ keys: ['c/4', 'e/4', 'a/4', 'b/4'], duration: 'w' }), + new StaveNote({ keys: ['a/4', 'b/4', 'c/5'], duration: '4', stem_direction: 1 }), + new StaveNote({ keys: ['g/4', 'a/4', 'b/4'], duration: '4', stem_direction: -1 }), + new StaveNote({ keys: ['e/4', 'f/4', 'b/4', 'c/5'], duration: '4' }), + new StaveNote({ + keys: ['g/4', 'a/4', 'd/5', 'e/5', 'g/5'], + duration: '4', + stem_direction: -1, + }), + new StaveNote({ keys: ['g/4', 'b/4', 'd/5', 'e/5'], duration: '4', stem_direction: -1 }), + new StaveNote({ keys: ['e/4', 'g/4', 'b/4', 'c/5'], duration: '4', stem_direction: 1 }), + new StaveNote({ keys: ['d/4', 'e/4', 'f/4', 'a/4', 'c/5', 'e/5', 'g/5'], duration: '2' }), + new StaveNote({ + keys: ['f/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5', 'g/5'], + duration: '16', + stem_direction: -1, + }), + new StaveNote({ keys: ['f/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5', 'g/5'], duration: '16', stem_direction: 1 }), + new StaveNote({ + keys: ['e/4', 'g/4', 'a/4', 'b/4', 'c/5', 'e/5', 'f/5'], + duration: '16', + stem_direction: 1, + }), + new StaveNote({ + keys: ['e/4', 'g/4', 'a/4', 'b/4', 'c/5'], + duration: '16', + stem_direction: 1, + }), + new StaveNote({ keys: ['e/4', 'a/4', 'b/4', 'c/5'], duration: '16', stem_direction: 1 }), + ]; + Dot.buildAndAttach(notes, { all: true }); + Dot.buildAndAttach([notes[7], notes[8], notes[9]], { all: true }); + Dot.buildAndAttach([notes[8], notes[9]], { all: true }); + const beam = new Beam(notes.slice(notes.length - 2)); + for (let i = 0; i < notes.length; i++) { + showOneNote(notes[i], stave, ctx, 30 + i * 65); + const dots = notes[i].getModifiersByType('Dot'); + ok(dots.length > 0, 'Note ' + i + ' has dots'); + for (let j = 0; j < dots.length; ++j) { + ok(dots[j].getWidth() > 0, 'Dot ' + j + ' has width set'); + } + } + beam.setContext(ctx).draw(); + VexFlowTests.plotLegendForNoteWidth(ctx, 890, 140); + ok(true, 'Full Dot'); +} +function multiVoice(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 750, 300); + ctx.setFillStyle('#221'); + ctx.setStrokeStyle('#221'); + const stave = new Stave(30, 45, 700).setContext(ctx).draw(); + const notes1 = [ + new StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: '2', stem_direction: -1 }), + new StaveNote({ keys: ['c/4', 'e/4', 'c/5'], duration: '2', stem_direction: -1 }), + new StaveNote({ keys: ['d/4', 'c/5', 'd/5'], duration: '2', stem_direction: -1 }), + new StaveNote({ keys: ['d/4', 'c/5', 'd/5'], duration: '8', stem_direction: -1 }), + new StaveNote({ keys: ['d/4', 'c/5', 'd/5'], duration: '8', stem_direction: -1 }), + ]; + Dot.buildAndAttach([notes1[0], notes1[2], notes1[3], notes1[4]], { all: true }); + Dot.buildAndAttach([notes1[0], notes1[2], notes1[3], notes1[4]], { all: true }); + Dot.buildAndAttach([notes1[1]], { index: 0 }); + Dot.buildAndAttach([notes1[1]], { index: 0 }); + Dot.buildAndAttach([notes1[1]], { index: 1 }); + Dot.buildAndAttach([notes1[1]], { index: 1 }); + Dot.buildAndAttach([notes1[1]], { index: 2 }); + Dot.buildAndAttach([notes1[1]], { index: 2 }); + Dot.buildAndAttach([notes1[1]], { index: 2 }); + Dot.buildAndAttach([notes1[2], notes1[3], notes1[4]]); + const notes2 = [ + new StaveNote({ keys: ['d/5', 'a/5', 'b/5'], duration: '2', stem_direction: 1 }), + new StaveNote({ keys: ['d/5', 'a/5', 'b/5'], duration: '4', stem_direction: 1 }), + new StaveNote({ keys: ['d/5', 'a/5', 'b/5'], duration: '4', stem_direction: 1 }), + new StaveNote({ keys: ['d/5', 'g/5', 'a/5', 'b/5'], duration: '8', stem_direction: 1 }), + new StaveNote({ keys: ['d/5', 'a/5', 'b/5'], duration: '8', stem_direction: 1 }), + ]; + Dot.buildAndAttach(notes2, { all: true }); + Dot.buildAndAttach([notes2[1]], { all: true }); + const voice1 = new Voice().setMode(Voice.Mode.SOFT).addTickables(notes1); + const voice2 = new Voice().setMode(Voice.Mode.SOFT).addTickables(notes2); + const formatter = new Formatter().joinVoices([voice1, voice2]); + formatter.format([voice1, voice2], 700); + voice1.draw(ctx, stave); + voice2.draw(ctx, stave); + notes1.forEach((note) => Note.plotMetrics(ctx, note, 190)); + notes2.forEach((note) => Note.plotMetrics(ctx, note, 20)); + VexFlowTests.plotLegendForNoteWidth(ctx, 620, 220); + ok(true, 'Full Dot'); +} +VexFlowTests.register(DotTests); +export { DotTests }; diff --git a/build/esm/tests/easyscore_tests.js b/build/esm/tests/easyscore_tests.js new file mode 100644 index 0000000000..9935fdb647 --- /dev/null +++ b/build/esm/tests/easyscore_tests.js @@ -0,0 +1,488 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Articulation } from '../src/articulation.js'; +import { EasyScore } from '../src/easyscore.js'; +import { FretHandFinger } from '../src/frethandfinger.js'; +import { Modifier } from '../src/modifier.js'; +import { Parenthesis } from '../src/parenthesis.js'; +import { StaveConnector } from '../src/staveconnector.js'; +import { Stem } from '../src/stem.js'; +import { Tuplet } from '../src/tuplet.js'; +const EasyScoreTests = { + Start() { + QUnit.module('EasyScore'); + test('Basic', basic); + test('Accidentals', accidentals); + test('Durations', durations); + test('Chords', chords); + test('Dots', dots); + test('Types', types); + test('Options', options); + const run = VexFlowTests.runTests; + run('Draw Basic', drawBasicTest); + run('Draw Different KeySignature', drawDiffKeysig); + run('Draw Basic Muted', drawBasicMutedTest); + run('Draw Basic Harmonic', drawBasicHarmonicTest); + run('Draw Basic Slash', drawBasicSlashTest); + run('Draw Ghostnote Basic', drawGhostBasicTest); + run('Draw Ghostnote Dotted', drawGhostDottedTest); + run('Draw Parenthesised', drawParenthesisedTest); + run('Draw Accidentals', drawAccidentalsTest); + run('Draw Beams', drawBeamsTest); + run('Draw Tuplets', drawTupletsTest); + run('Draw Dots', drawDotsTest); + run('Draw Options', drawOptionsTest); + run('Draw Fingerings', drawFingeringsTest); + run('Keys', keys); + }, +}; +function createShortcuts(score) { + return { + voice: score.voice.bind(score), + notes: score.notes.bind(score), + beam: score.beam.bind(score), + tuplet: score.tuplet.bind(score), + }; +} +function basic() { + const score = new EasyScore(); + const mustPass = ['c4', 'c#4', 'c4/r', 'c#5', 'c3/m', 'c3//m', 'c3//h', 'c3/s', 'c3//s', 'c3/g', 'c3//g']; + const mustFail = ['', '()', '7', '(c#4 e5 g6']; + mustPass.forEach((line) => equal(score.parse(line).success, true, line)); + mustFail.forEach((line) => equal(score.parse(line).success, false, line)); +} +function accidentals() { + const score = new EasyScore(); + const mustPass = [ + 'c3', + 'c##3, cb3', + 'Cn3', + 'f3//m', + '(c##3 cbb3 cn3), cb3', + 'cbbs7', + 'cbb7', + 'cbss7', + 'cbs7', + 'cb7', + 'cdb7', + 'cd7', + 'c##7', + 'c#7', + 'cn7', + 'c++-7', + 'c++7', + 'c+-7', + 'c+7', + '(cbs3 bbs3 dbs3), ebs3', + '(cd7 cbb3 cn3), cb3', + 'co7', + 'ck7', + ]; + const mustFail = [ + 'ct3', + 'cdbb7', + '(cq cbb3 cn3), cb3', + '(cdd7 cbb3 cn3), cb3', + 'cbbbs7', + 'cbbss7', + 'cbsss7', + 'csbs7', + 'cddb7', + 'cddbb7', + 'cdd7', + 'c##b7', + 'c#bs7', + 'cnb#7', + 'c+#+b-d7', + 'c+--7', + 'c++--7', + 'c+++7', + 'cbk7', + 'cok7', + 'cko7', + 'c#s7', + ]; + mustPass.forEach((line) => equal(score.parse(line).success, true, line)); + mustFail.forEach((line) => equal(score.parse(line).success, false, line)); +} +function durations() { + const score = new EasyScore(); + const mustPass = ['c3/4', 'c##3/w, cb3', 'c##3/w, cb3/q', 'c##3/q, cb3/32', '(c##3 cbb3 cn3), cb3']; + const mustFail = ['Cn3/]', '/', '(cq cbb3 cn3), cb3', '(cdd7 cbb3 cn3), cb3']; + mustPass.forEach((line) => equal(score.parse(line).success, true, line)); + mustFail.forEach((line) => equal(score.parse(line).success, false, line)); +} +function chords() { + const score = new EasyScore(); + const mustPass = [ + '(c5)', + '(c3 e0 g9)', + '(c##4 cbb4 cn4)/w, (c#5 cb2 a3)/32', + '(d##4 cbb4 cn4)/w/r, (c#5 cb2 a3)', + '(c##4 cbb4 cn4)/4, (c#5 cb2 a3)', + '(c##4 cbb4 cn4)/m, (c#5 cb2 a3)', + ]; + const mustFail = ['(c)']; + mustPass.forEach((line) => equal(score.parse(line).success, true, line)); + mustFail.forEach((line) => equal(score.parse(line).success, false, line)); +} +function dots() { + const score = new EasyScore(); + const mustPass = [ + 'c3/4.', + 'c##3/w.., cb3', + 'f##3/s, cb3/q...', + 'c##3/q, cb3/32', + '(c##3 cbb3 cn3)., cb3', + '(c5).', + '(c##4 cbb4 cn4)/w.., (c#5 cb2 a3)/32', + ]; + const mustFail = ['.', 'c.#', 'c#4./4']; + mustPass.forEach((line) => equal(score.parse(line).success, true, line)); + mustFail.forEach((line) => equal(score.parse(line).success, false, line)); +} +function types() { + const score = new EasyScore(); + const mustPass = ['c3/4/m.', 'c##3//r.., cb3', 'c##3/m.., cb3', 'c##3/r.., cb3', 'd##3/w/s, cb3/q...', 'Fb4']; + const mustFail = ['c4/q/U', '(c##4, cbb4 cn4)/w.., (c#5 cb2 a3)/32', 'z#3']; + mustPass.forEach((line) => equal(score.parse(line).success, true, line)); + mustFail.forEach((line) => equal(score.parse(line).success, false, line)); +} +function options() { + const score = new EasyScore(); + const mustPass = [ + 'c3/4.[foo="bar"]', + 'c##3/w.., cb3[id="blah"]', + 'c##3/q, cb3/32', + '(c##3 cbb3 cn3).[blah="bod4o"], cb3', + '(c5)[fooooo="booo"]', + 'c#5[id="foobar"]', + ]; + const mustFail = ['.[', 'f##3/w[], cb3/q...']; + mustPass.forEach((line) => equal(score.parse(line).success, true, line)); + mustFail.forEach((line) => equal(score.parse(line).success, false, line)); +} +function drawBasicTest(options) { + const f = VexFlowTests.makeFactory(options, 600, 350); + const score = f.EasyScore(); + const system = f.System(); + const { voice, notes } = createShortcuts(score); + system + .addStave({ + voices: [ + voice(notes('(d4 e4 g4)/q, c4/q, c4/q/r, c4/q', { stem: 'down' })), + voice(notes('c#5/h., c5/q', { stem: 'up' })), + ], + }) + .addClef('treble'); + system + .addStave({ + voices: [voice(notes('c#3/q, cn3/q, bb3/q, d##3/q', { clef: 'bass' }))], + }) + .addClef('bass'); + system.addConnector().setType(StaveConnector.type.BRACKET); + f.draw(); + expect(0); +} +function drawDiffKeysig(options) { + const f = VexFlowTests.makeFactory(options, 600, 350); + const score = f.EasyScore(); + const system = f.System(); + const { voice, notes } = createShortcuts(score); + system + .addStave({ + voices: [ + voice(notes('(d4 e4 g4)/q, c4/q, c4/q/r, c4/q', { stem: 'down' })), + voice(notes('c5/h., c5/q', { stem: 'up' })), + ], + }) + .addClef('treble') + .addTimeSignature('4/4') + .addKeySignature('D'); + system + .addStave({ + voices: [voice(notes('c#3/q, cn3/q, bb3/q, d##3/q', { clef: 'bass' }))], + }) + .addClef('bass') + .addTimeSignature('4/4'); + system.addConnector().setType(StaveConnector.type.BRACKET); + f.draw(); + expect(0); +} +function drawBasicMutedTest(options) { + const f = VexFlowTests.makeFactory(options, 600, 350); + const score = f.EasyScore(); + const system = f.System(); + const { voice, notes } = createShortcuts(score); + system + .addStave({ + voices: [ + voice(notes('(d4 e4 g4)/q/m, c4/q/m, c4/q/r, c4/q/m', { stem: 'down' })), + voice(notes('c#5/h/m., c5/q/m', { stem: 'up' })), + ], + }) + .addClef('treble'); + system + .addStave({ + voices: [voice(notes('c#3/q/m, cn3/q/m, bb3/q/m, d##3/q/m', { clef: 'bass' }))], + }) + .addClef('bass'); + system.addConnector().setType(StaveConnector.type.BRACKET); + f.draw(); + expect(0); +} +function drawBasicHarmonicTest(options) { + const f = VexFlowTests.makeFactory(options, 600, 350); + const score = f.EasyScore(); + const system = f.System(); + const { voice, notes } = createShortcuts(score); + system + .addStave({ + voices: [ + voice(notes('(d4 e4 g4)/q/h, c4/q/h, c4/q/r, c4/q/h', { stem: 'down' })), + voice(notes('c#5/h/h., c5/q/h', { stem: 'up' })), + ], + }) + .addClef('treble'); + system + .addStave({ + voices: [voice(notes('c#3/q/h, cn3/q/h, bb3/q/h, d##3/q/h', { clef: 'bass' }))], + }) + .addClef('bass'); + system.addConnector().setType(StaveConnector.type.BRACKET); + f.draw(); + expect(0); +} +function drawBasicSlashTest(options) { + const f = VexFlowTests.makeFactory(options, 600, 350); + const score = f.EasyScore(); + const system = f.System(); + const { voice, notes } = createShortcuts(score); + system + .addStave({ + voices: [ + voice(notes('(d4 e4 g4)/q/s, c4/q/s, c4/q/r, c4/q/s', { stem: 'down' })), + voice(notes('c#5/h/s., c5/q/s', { stem: 'up' })), + ], + }) + .addClef('treble'); + system + .addStave({ + voices: [voice(notes('c#3/q/s, cn3/q/s, bb3/q/s, d##3/q/s', { clef: 'bass' }))], + }) + .addClef('bass'); + system.addConnector().setType(StaveConnector.type.BRACKET); + f.draw(); + expect(0); +} +function drawGhostBasicTest(options) { + const f = VexFlowTests.makeFactory(options, 550); + const score = f.EasyScore(); + const system = f.System(); + system.addStave({ + voices: [ + score.voice([ + ...score.notes('f#5/4, f5, db5, c5', { stem: 'up' }), + ...score.beam(score.notes('c5/8, d5, fn5, e5', { stem: 'up' })), + ...score.beam(score.notes('d5, c5', { stem: 'up' })), + ], { time: '7/4' }), + score.voice(score.notes('c4/h/g, f4/4, c4/4/g, e4/4, c4/8/g, d##4/8, c4/8, c4/8', { stem: 'down' }), { + time: '7/4', + }), + ], + }); + f.draw(); + expect(0); +} +function drawGhostDottedTest(options) { + const f = VexFlowTests.makeFactory(options, 550); + const score = f.EasyScore(); + const system = f.System(); + system.addStave({ + voices: [ + score.voice([ + ...score.notes('c4/4/g., fbb5/8, d5/4', { stem: 'up' }), + ...score.beam(score.notes('c5/8, c#5/16, d5/16', { stem: 'up' })), + ...score.notes('c4/2/g.., fn5/8', { stem: 'up' }), + ], { time: '8/4' }), + score.voice([ + ...score.notes('f#4/4', { stem: 'down' }), + ...score.beam(score.notes('e4/8, d4/8', { stem: 'down' })), + ...score.notes('c4/4/g.., cb4/16, c#4/h, d4/4', { stem: 'down' }), + ...score.beam(score.notes('fn4/8, e4/8', { stem: 'down' })), + ], { time: '8/4' }), + ], + }); + f.draw(); + expect(0); +} +function drawParenthesisedTest(options) { + const f = VexFlowTests.makeFactory(options, 600, 350); + const score = f.EasyScore(); + const system = f.System(); + const { voice, notes } = createShortcuts(score); + const notes1 = notes('(d4 e4 g4)/q, c4/q, c4/q/r, c4/q', { stem: 'down' }); + Parenthesis.buildAndAttach([notes1[0], notes1[3]]); + const notes2 = notes('c#5/h., c5/q', { stem: 'down' }); + Parenthesis.buildAndAttach([notes2[0], notes2[1]]); + system + .addStave({ + voices: [voice(notes1), voice(notes2)], + }) + .addClef('treble'); + const notes3 = notes('c#3/q, cn3/q, bb3/q, d##3/q', { stem: 'down' }); + Parenthesis.buildAndAttach(notes3); + system + .addStave({ + voices: [voice(notes3)], + }) + .addClef('bass'); + system.addConnector().setType(StaveConnector.type.BRACKET); + f.draw(); + expect(0); +} +function drawAccidentalsTest(options) { + const f = VexFlowTests.makeFactory(options, 600, 350); + const score = f.EasyScore(); + const system = f.System(); + const { voice, notes } = createShortcuts(score); + system + .addStave({ + voices: [ + voice(notes('(cbbs4 ebb4 gbss4)/q, cbs4/q, cdb4/q/r, cd4/q', { stem: 'down' })), + voice(notes('c++-5/h., c++5/q', { stem: 'up' })), + ], + }) + .addClef('treble'); + system + .addStave({ + voices: [voice(notes('c+-3/q, c+3/q, bb3/q, d##3/q', { clef: 'bass' }))], + }) + .addClef('bass'); + system.addConnector().setType(StaveConnector.type.BRACKET); + f.draw(); + expect(0); +} +function drawBeamsTest(options) { + const f = VexFlowTests.makeFactory(options, 600, 250); + const score = f.EasyScore(); + const system = f.System(); + const { voice, notes, beam } = createShortcuts(score); + system + .addStave({ + voices: [ + voice(notes('(c4 e4 g4)/q, c4/q, c4/q/r, c4/q', { stem: 'down' })), + voice([...notes('c#5/h.', { stem: 'up' }), ...beam(notes('c5/8, c5/8', { stem: 'up' }))]), + ], + }) + .addClef('treble'); + f.draw(); + expect(0); +} +function drawTupletsTest(options) { + const f = VexFlowTests.makeFactory(options, 600, 250); + const score = f.EasyScore(); + const system = f.System(); + const { voice, notes, tuplet, beam } = createShortcuts(score); + const v1_tuplet = tuplet(notes('(c4 e4 g4)/q, cbb4/q, c4/q', { stem: 'down' }), { + location: Tuplet.LOCATION_BOTTOM, + }); + const v1_halfNote = notes('c4/h', { stem: 'down' }); + const v1 = voice([...v1_tuplet, ...v1_halfNote]); + const v2_halfNote = notes('c#5/h.', { stem: 'up' }); + const v2_tuplet = tuplet(beam(notes('cb5/8, cn5/8, c5/8', { stem: 'up' }))); + const v2 = voice([...v2_halfNote, ...v2_tuplet]); + system.addStave({ voices: [v1, v2] }).addClef('treble'); + f.draw(); + expect(0); +} +function drawDotsTest(options) { + const f = VexFlowTests.makeFactory(options, 600, 250); + const score = f.EasyScore(); + const system = f.System(); + const { voice, notes } = createShortcuts(score); + system + .addStave({ + voices: [voice(notes('(c4 e4 g4)/8., (c4 e4 g4)/8.., (c4 e4 g4)/8..., (c4 e4 g4)/8...., (c4 e4 g4)/16...'))], + }) + .addClef('treble'); + f.draw(); + expect(0); +} +function drawOptionsTest(options) { + const f = VexFlowTests.makeFactory(options, 500, 200); + const score = f.EasyScore(); + const system = f.System(); + const notes = score.notes('B4/h[id="foobar", class="red,bold", stem="up", articulations="staccato.below,tenuto"], B4/q[articulations="accent.above"], B4/q[stem="down"]'); + system.addStave({ voices: [score.voice(notes)] }); + f.draw(); + const note0 = notes[0]; + const note1 = notes[1]; + const note0_modifier0 = note0.getModifiers()[0]; + const note0_modifier1 = note0.getModifiers()[1]; + const note1_modifier0 = note1.getModifiers()[0]; + equal(note0.getAttribute('id'), 'foobar'); + ok(note0.hasClass('red')); + ok(note0.hasClass('bold')); + equal(note0_modifier0.getCategory(), Articulation.CATEGORY); + equal(note0_modifier0.type, 'a.'); + equal(note0_modifier0.getPosition(), Modifier.Position.BELOW); + equal(note0_modifier1.getCategory(), Articulation.CATEGORY); + equal(note0_modifier1.type, 'a-'); + equal(note0_modifier1.getPosition(), Modifier.Position.ABOVE); + equal(note0.getStemDirection(), Stem.UP); + equal(note1_modifier0.getCategory(), Articulation.CATEGORY); + equal(note1_modifier0.type, 'a>'); + equal(note1_modifier0.getPosition(), Modifier.Position.ABOVE); + equal(notes[2].getStemDirection(), Stem.DOWN); +} +function drawFingeringsTest(options) { + const f = VexFlowTests.makeFactory(options, 500, 200); + const score = f.EasyScore(); + const system = f.System(); + const notes = score.notes('C4/q[fingerings="1"], E4[fingerings="3.above"], G4[fingerings="5.below"], (C4 E4 G4)[fingerings="1,3,5"]'); + system.addStave({ voices: [score.voice(notes)] }); + f.draw(); + const note0_modifier0 = notes[0].getModifiers()[0]; + equal(note0_modifier0.getCategory(), FretHandFinger.CATEGORY); + equal(note0_modifier0.getFretHandFinger(), '1'); + equal(note0_modifier0.getPosition(), Modifier.Position.LEFT); + const note1_modifier0 = notes[1].getModifiers()[0]; + equal(note1_modifier0.getCategory(), FretHandFinger.CATEGORY); + equal(note1_modifier0.getFretHandFinger(), '3'); + equal(note1_modifier0.getPosition(), Modifier.Position.ABOVE); + const note2_modifier0 = notes[2].getModifiers()[0]; + equal(note2_modifier0.getCategory(), FretHandFinger.CATEGORY); + equal(note2_modifier0.getFretHandFinger(), '5'); + equal(note2_modifier0.getPosition(), Modifier.Position.BELOW); + const note3_modifiers = notes[3].getModifiers(); + const note3_modifier0 = note3_modifiers[0]; + const note3_modifier1 = note3_modifiers[1]; + const note3_modifier2 = note3_modifiers[2]; + equal(note3_modifier0.getCategory(), FretHandFinger.CATEGORY); + equal(note3_modifier0.getFretHandFinger(), '1'); + equal(note3_modifier0.getPosition(), Modifier.Position.LEFT); + equal(note3_modifier1.getCategory(), FretHandFinger.CATEGORY); + equal(note3_modifier1.getFretHandFinger(), '3'); + equal(note3_modifier1.getPosition(), Modifier.Position.LEFT); + equal(note3_modifier2.getCategory(), FretHandFinger.CATEGORY); + equal(note3_modifier2.getFretHandFinger(), '5'); + equal(note3_modifier2.getPosition(), Modifier.Position.LEFT); +} +function keys(options) { + const f = VexFlowTests.makeFactory(options, 700, 200); + const score = f.EasyScore(); + const system = f.System(); + const notes = score.notes('c#3/q, c##3, cb3, cbb3, cn3, c3, cbbs3, cbss3, cbs3, cdb3, cd3, c++-3, c++3, c+-3, c+3, co3, ck3', { clef: 'bass' }); + system.addStave({ voices: [f.Voice().setStrict(false).addTickables(notes)] }).addClef('bass'); + f.draw(); + equal(notes[0].keys, 'c#/3'); + equal(notes[1].keys, 'c##/3'); + equal(notes[2].keys, 'cb/3'); + equal(notes[3].keys, 'cbb/3'); + equal(notes[4].keys, 'cn/3'); + for (let i = 5; i < notes.length; i++) { + equal(notes[i].keys, 'c/3'); + } +} +VexFlowTests.register(EasyScoreTests); +export { EasyScoreTests }; diff --git a/build/esm/tests/factory_tests.js b/build/esm/tests/factory_tests.js new file mode 100644 index 0000000000..0d03e28937 --- /dev/null +++ b/build/esm/tests/factory_tests.js @@ -0,0 +1,44 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Factory } from '../src/factory.js'; +import { Barline } from '../src/stavebarline.js'; +const FactoryTests = { + Start() { + QUnit.module('Factory'); + test('Defaults', defaults); + const run = VexFlowTests.runTests; + run('Draw', draw); + run('Draw Tab (repeat barlines must be aligned)', drawTab); + }, +}; +function defaults() { + throws(() => new Factory({ renderer: { elementId: '', width: 700, height: 500 } }), 'Empty string for elementId throws an exception.'); + const factory = new Factory({ + renderer: { elementId: null, width: 700, height: 500 }, + }); + const options = factory.options; + equal(options.renderer.width, 700); + equal(options.renderer.height, 500); + equal(options.renderer.elementId, null); + equal(options.stave.space, 10); +} +function draw(options) { + const f = Factory.newFromElementId(options.elementId); + f.Stave().setClef('treble'); + f.draw(); + expect(0); +} +function drawTab(options) { + const factory = VexFlowTests.makeFactory(options, 500, 400); + const system = factory.System({ width: 500 }); + const stave = factory.Stave().setClef('treble').setKeySignature('C#').setBegBarType(Barline.type.REPEAT_BEGIN); + const voices = [factory.Voice().addTickables([factory.GhostNote({ duration: 'w' })])]; + system.addStave({ stave, voices }); + const tabStave = factory.TabStave().setClef('tab').setBegBarType(Barline.type.REPEAT_BEGIN); + const tabVoices = [factory.Voice().addTickables([factory.GhostNote({ duration: 'w' })])]; + system.addStave({ stave: tabStave, voices: tabVoices }); + factory.draw(); + equal(stave.getModifiers()[0].getX(), tabStave.getModifiers()[0].getX()); + expect(1); +} +VexFlowTests.register(FactoryTests); +export { FactoryTests }; diff --git a/build/esm/tests/font_tests.js b/build/esm/tests/font_tests.js new file mode 100644 index 0000000000..510f724e16 --- /dev/null +++ b/build/esm/tests/font_tests.js @@ -0,0 +1,135 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Accidental } from '../src/accidental.js'; +import { Bend } from '../src/bend.js'; +import { CanvasContext } from '../src/canvascontext.js'; +import { Element } from '../src/element.js'; +import { Flow } from '../src/flow.js'; +import { Font, FontStyle, FontWeight } from '../src/font.js'; +import { PedalMarking } from '../src/pedalmarking.js'; +import { StaveNote } from '../src/stavenote.js'; +import { TextBracket } from '../src/textbracket.js'; +import { TextNote } from '../src/textnote.js'; +import { Voice } from '../src/voice.js'; +const FontTests = { + Start() { + QUnit.module('Font'); + test('setFont', setFont); + test('Parsing', fontParsing); + test('Sizes', fontSizes); + const run = VexFlowTests.runTests; + run('Set Text Font to Georgia', setTextFontToGeorgia); + run('Set Music Font to Petaluma', setMusicFontToPetaluma); + }, +}; +function setFont() { + const canvas = document.createElement('canvas'); + canvas.width = 800; + canvas.height = 400; + const ctx = new CanvasContext(canvas.getContext('2d')); + ctx.setFont('PetalumaScript', '100px', 'normal', 'italic'); + equal(ctx.font, 'italic 100px PetalumaScript'); + const voice = new Voice(); + propEqual(voice.fontInfo, Element.TEXT_FONT); + voice.setFont('bold 32pt Arial'); + const fontInfo = voice.fontInfo; + equal(fontInfo === null || fontInfo === void 0 ? void 0 : fontInfo.size, '32pt'); + const flat = new Accidental('b'); + equal(flat.textFont, undefined); + flat.setFont(undefined, undefined, undefined, FontStyle.ITALIC); + equal(flat.getFont(), 'italic 10pt Arial, sans-serif'); + flat.setFont(undefined, undefined, FontWeight.BOLD, undefined); + equal(flat.getFont(), 'bold 10pt Arial, sans-serif'); + flat.setFont(undefined, undefined, FontWeight.BOLD, FontStyle.ITALIC); + equal(flat.getFont(), 'italic bold 10pt Arial, sans-serif'); + flat.setFont(undefined, undefined, FontWeight.BOLD, 'oblique'); + equal(flat.getFont(), 'oblique bold 10pt Arial, sans-serif'); + flat.setFont(undefined, undefined, 'normal', ''); + equal(flat.getFont(), '10pt Arial, sans-serif'); +} +function fontParsing() { + const b = new Bend('1/2', true); + const bFont = b.fontInfo; + equal(bFont === null || bFont === void 0 ? void 0 : bFont.family, Font.SANS_SERIF); + equal(bFont === null || bFont === void 0 ? void 0 : bFont.size, Font.SIZE); + equal(bFont === null || bFont === void 0 ? void 0 : bFont.weight, FontWeight.NORMAL); + equal(bFont === null || bFont === void 0 ? void 0 : bFont.style, FontStyle.NORMAL); + const f1 = 'Roboto Slab, serif'; + const t = new TextNote({ duration: '4', font: { family: f1 } }); + equal(f1, t.fontInfo.family); + const n1 = new StaveNote({ keys: ['e/5'], duration: '4' }); + const n2 = new StaveNote({ keys: ['c/5'], duration: '4' }); + const tb = new TextBracket({ start: n1, stop: n2 }); + const f2 = tb.fontInfo; + equal(f2 === null || f2 === void 0 ? void 0 : f2.size, 15); + equal(f2 === null || f2 === void 0 ? void 0 : f2.style, FontStyle.ITALIC); + const f3 = Font.fromCSSString(`bold 1.5em/3 "Lucida Sans Typewriter", "Lucida Console", Consolas, monospace`); + const f3SizeInPx = Font.convertSizeToPixelValue(f3.size); + equal(f3SizeInPx, 24); +} +function fontSizes() { + { + const size = '17px'; + const sizeInEm = Font.convertSizeToPixelValue(size) / Font.scaleToPxFrom.em; + equal(sizeInEm, 1.0625); + } + { + const size = '2em'; + const sizeInPx = Font.convertSizeToPixelValue(size); + equal(sizeInPx, 32); + } + { + const pedal = new PedalMarking([]); + equal(pedal.getFont(), 'italic bold 12pt Times New Roman, serif'); + equal(pedal.fontSizeInPoints, 12); + equal(pedal.fontSizeInPixels, 16); + const doubledSizePx = pedal.fontSizeInPixels * 2; + equal(doubledSizePx, 32); + const doubledSizePt = Font.scaleSize(pedal.fontSizeInPoints, 2); + equal(doubledSizePt, 24); + equal(Font.scaleSize('1.5em', 3), '4.5em'); + } +} +function setTextFontToGeorgia(options) { + const factory = VexFlowTests.makeFactory(options, 400, 200); + const stave = factory.Stave({ y: 40 }); + const score = factory.EasyScore(); + const voice1 = score.voice([ + factory.StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: -1, duration: 'h' }), + factory.StaveNote({ keys: ['d/4', 'f/4'], stem_direction: -1, duration: 'q' }), + factory.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: 'q' }), + ]); + const defaultFont = TextNote.TEXT_FONT; + TextNote.TEXT_FONT = { + family: 'Georgia, Courier New, serif', + size: 14, + weight: 'bold', + style: 'italic', + }; + const voice2 = score.voice([ + factory + .TextNote({ text: 'Here are some fun lyrics...', duration: 'w' }) + .setJustification(TextNote.Justification.LEFT), + ]); + const formatter = factory.Formatter(); + formatter.joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave); + factory.draw(); + TextNote.TEXT_FONT = defaultFont; + ok(true); +} +function setMusicFontToPetaluma(options) { + Flow.setMusicFont('Petaluma'); + const factory = VexFlowTests.makeFactory(options, 400, 200); + const stave = factory.Stave({ y: 40 }); + const score = factory.EasyScore(); + const voice = score.voice([ + factory.StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: -1, duration: 'h' }), + factory.StaveNote({ keys: ['d/4', 'f/4'], stem_direction: -1, duration: 'q' }), + factory.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: 'q' }), + ]); + const formatter = factory.Formatter(); + formatter.joinVoices([voice]).formatToStave([voice], stave); + factory.draw(); + ok(true); +} +VexFlowTests.register(FontTests); +export { FontTests }; diff --git a/build/esm/tests/formatter/framestack.js b/build/esm/tests/formatter/framestack.js new file mode 100644 index 0000000000..87b85af75b --- /dev/null +++ b/build/esm/tests/formatter/framestack.js @@ -0,0 +1,61 @@ +"use strict"; +class FrameStack { + constructor(parentEl, numFrames, params) { + this.parentEl = parentEl; + this.numFrames = numFrames; + this.options = Object.assign({ prefix: 'vex-frame-', width: 700, height: 800, iterationCallback: null }, params); + this.frames = []; + this.currentFrame = 0; + document.getElementById(this.parentEl).innerHTML = ''; + for (let i = 0; i < this.numFrames; i++) { + const div = document.createElement('div'); + div.id = this.frameID(i); + div.style.position = 'absolute'; + div.style.top = 0; + div.style.left = 0; + div.style.width = `${this.options.width}px`; + div.style.height = `${this.options.height}px`; + div.style.display = 'none'; + this.frames[i] = div; + } + } + frameID(i) { + return `${this.options.prefix}${i}`; + } + install() { + this.show(0); + setTimeout(() => { + const fragment = document.createDocumentFragment(); + for (let i = 0; i < this.numFrames; i++) { + fragment.appendChild(this.frames[i]); + } + const parent = document.getElementById(this.parentEl); + parent.appendChild(fragment); + parent.style.width = `${this.options.width}px`; + parent.style.height = `${this.options.height}px`; + }, 0); + } + get(i) { + return this.frames[i]; + } + show(i) { + this.frames[this.currentFrame].style.display = 'none'; + this.frames[i].style.display = 'block'; + this.currentFrame = i; + } + start(params) { + const options = Object.assign({ start: 0, end: this.numFrames, intervalms: 100 }, params); + this.animationTimer = setInterval(() => { + const frame = this.currentFrame + 1 === this.numFrames ? 0 : this.currentFrame + 1; + this.show(frame); + if (this.options.iterationCallback) + this.options.iterationCallback(frame); + }, options.intervalms); + } + stop() { + clearInterval(this.animationTimer); + } +} +if (typeof module != 'undefined') { + module.exports = { FrameStack }; +} diff --git a/build/esm/tests/formatter/tests.js b/build/esm/tests/formatter/tests.js new file mode 100644 index 0000000000..4140ad78db --- /dev/null +++ b/build/esm/tests/formatter/tests.js @@ -0,0 +1,203 @@ +"use strict"; +const VF = Vex.Flow; +function subgroup(el, iterations, params) { + const options = Object.assign({ systemWidth: 550, debug: true }, params); + const f = new VF.Factory({ + renderer: { + elementId: el, + width: options.width, + height: options.height, + }, + }); + f.StaveNote = f.StaveNote.bind(f); + const stave1 = f.Stave({ x: 15, y: 40, width: options.systemWidth }).setClef('treble'); + const notes1 = [ + { keys: ['f/5'], stem_direction: 1, duration: '4' }, + { keys: ['d/4'], stem_direction: 1, duration: '4', clef: 'bass' }, + { keys: ['c/5'], stem_direction: 1, duration: '4', clef: 'alto' }, + { keys: ['c/5'], stem_direction: 1, duration: '4', clef: 'soprano' }, + ].map(f.StaveNote); + const notes2 = [ + { keys: ['c/4'], stem_direction: -1, duration: '4' }, + { keys: ['c/3'], stem_direction: -1, duration: '4', clef: 'bass' }, + { keys: ['d/4'], stem_direction: -1, duration: '4', clef: 'alto' }, + { keys: ['f/4'], stem_direction: -1, duration: '4', clef: 'soprano' }, + ].map(f.StaveNote); + const stave2 = f.Stave({ x: 15, y: 160, width: options.systemWidth }).setClef('bass'); + const notes3 = [ + { keys: ['e/3'], duration: '8', stem_direction: -1, clef: 'bass' }, + { keys: ['g/4'], duration: '8', stem_direction: 1, clef: 'treble' }, + { keys: ['d/4'], duration: '8', stem_direction: 1, clef: 'treble' }, + { keys: ['f/4'], duration: '8', stem_direction: 1, clef: 'treble' }, + { keys: ['c/4'], duration: '8', stem_direction: 1, clef: 'treble' }, + { keys: ['g/3'], duration: '8', stem_direction: -1, clef: 'bass' }, + { keys: ['d/3'], duration: '8', stem_direction: -1, clef: 'bass' }, + { keys: ['f/3'], duration: '8', stem_direction: -1, clef: 'bass' }, + ].map(f.StaveNote); + f.StaveConnector({ top_stave: stave1, bottom_stave: stave2, type: 'brace' }); + f.StaveConnector({ top_stave: stave1, bottom_stave: stave2, type: 'singleLeft' }); + f.StaveConnector({ top_stave: stave1, bottom_stave: stave2, type: 'singleRight' }); + function addAccidental(note, acc) { + return note.addModifier(f.Accidental({ type: acc }), 0); + } + function addSubGroup(note, subNotes) { + return note.addModifier(f.NoteSubGroup({ notes: subNotes }), 0); + } + f.Beam({ notes: notes3.slice(1, 4) }); + f.Beam({ notes: notes3.slice(5) }); + addAccidental(notes1[1], '#'); + addSubGroup(notes1[1], [f.ClefNote({ type: 'bass', options: { size: 'small' } }), f.TimeSigNote({ time: '3/4' })]); + addSubGroup(notes2[2], [f.ClefNote({ type: 'alto', options: { size: 'small' } }), f.TimeSigNote({ time: '9/8' })]); + addSubGroup(notes1[3], [f.ClefNote({ type: 'soprano', options: { size: 'small' } })]); + addSubGroup(notes3[1], [f.ClefNote({ type: 'treble', options: { size: 'small' } })]); + addSubGroup(notes3[5], [f.ClefNote({ type: 'bass', options: { size: 'small' } })]); + addAccidental(notes3[0], '#'); + addAccidental(notes3[3], 'b'); + addAccidental(notes3[5], '#'); + addAccidental(notes1[2], 'b'); + addAccidental(notes2[3], '#'); + const voice = f.Voice().addTickables(notes1); + const voice2 = f.Voice().addTickables(notes2); + const voice3 = f.Voice().addTickables(notes3); + const formatter = f.Formatter(); + formatter.joinVoices([voice, voice2]).joinVoices([voice3]).formatToStave([voice, voice2, voice3], stave1); + for (let i = 0; i < iterations; i++) { + formatter.tune({ alpha: 0.01 }); + } + f.draw(); + if (options.debug) { + VF.Formatter.plotDebugging(f.getContext(), formatter, stave1.getNoteStartX(), 20, 320); + } +} +function tuplets(el, iterations, params) { + const options = Object.assign({ systemWidth: 500, debug: true }, params); + const f = new VF.Factory({ + renderer: { + elementId: el, + width: options.width, + height: options.height, + }, + }); + const system = f.System({ + x: 50, + width: options.systemWidth, + debugFormatter: options.debug, + formatIterations: iterations, + }); + const score = f.EasyScore(); + const newVoice = function (notes) { + return score.voice(notes, { time: '1/4' }); + }; + const newStave = function (voice) { + return system + .addStave({ voices: [voice], debugNoteMetrics: options.debug }) + .addClef('treble') + .addTimeSignature('1/4'); + }; + const voices = [ + score.notes('c5/8, c5'), + score.tuplet(score.notes('a4/8, a4, a4'), { notes_occupied: 2 }), + score.notes('c5/16, c5, c5, c5'), + score.tuplet(score.notes('a4/16, a4, a4, a4, a4'), { notes_occupied: 4 }), + score.tuplet(score.notes('a4/32, a4, a4, a4, a4, a4, a4'), { notes_occupied: 8 }), + ]; + voices.map(newVoice).forEach(newStave); + system.addConnector().setType(VF.StaveConnector.type.BRACKET); + f.draw(); +} +function multistave(el, iterations, params) { + const options = Object.assign({ systemWidth: 550, debug: true, justify: true, alpha: 0.1 }, params); + const f = new VF.Factory({ + renderer: { + elementId: el, + width: options.width, + height: options.height, + }, + }); + const score = f.EasyScore(); + const stave11 = f.Stave({ y: 20, width: 275 }).addTrebleGlyph().addTimeSignature('6/8'); + const notes11 = score.notes('f4/4, d4/8, g4/4, eb4/8'); + const voice11 = score.voice(notes11, { time: '6/8' }); + const stave21 = f.Stave({ y: 130, width: 275 }).addTrebleGlyph().addTimeSignature('6/8'); + const notes21 = score.notes('d4/8, d4, d4, d4, eb4, eb4'); + const voice21 = score.voice(notes21, { time: '6/8' }); + const stave31 = f.Stave({ y: 250, width: 275 }).addClef('bass').addTimeSignature('6/8'); + const notes31 = score.notes('a5/8, a5, a5, a5, a5, a5', { stem: 'down' }); + const voice31 = score.voice(notes31, { time: '6/8' }); + f.StaveConnector({ + top_stave: stave21, + bottom_stave: stave31, + type: 'brace', + }); + f.Beam({ notes: notes21.slice(0, 3) }); + f.Beam({ notes: notes21.slice(3, 6) }); + f.Beam({ notes: notes31.slice(0, 3) }); + f.Beam({ notes: notes31.slice(3, 6) }); + let formatter = f.Formatter().joinVoices([voice11]).joinVoices([voice21]).joinVoices([voice31]); + if (options.justify) { + formatter.formatToStave([voice11, voice21, voice31], stave11); + } + else { + formatter.format([voice11, voice21, voice31], 0); + } + for (let i = 0; i < iterations; i++) { + formatter.tune({ alphs: options.alpha }); + } + if (options.debug) { + VF.Formatter.plotDebugging(f.getContext(), formatter, stave11.getNoteStartX(), 20, 320); + } + const stave12 = f.Stave({ + x: stave11.width + stave11.x, + y: stave11.y, + width: stave11.width, + }); + var notes12 = score.notes('ab4/4, bb4/8, (cb5 eb5)/4[stem="down"], d5/8[stem="down"]'); + var voice12 = score.voice(notes12, { time: '6/8' }); + f.Stave({ + x: stave21.width + stave21.x, + y: stave21.y, + width: stave21.width, + }); + var notes22 = score.notes('(eb4 ab4)/4., (c4 eb4 ab4)/4, db5/8', { stem: 'up' }); + var voice22 = score.voice(notes22, { time: '6/8' }); + f.Stave({ + x: stave31.width + stave31.x, + y: stave31.y, + width: stave31.width, + }); + var notes32 = score.notes('a5/8, a5, a5, a5, a5, a5', { stem: 'down' }); + var voice32 = score.voice(notes32, { time: '6/8' }); + formatter = f.Formatter().joinVoices([voice12]).joinVoices([voice22]).joinVoices([voice32]); + if (options.justify) { + formatter.formatToStave([voice12, voice22, voice32], stave12); + } + else { + formatter.format([voice12, voice22, voice32], 0); + } + for (var j = 0; j < iterations; j++) { + formatter.tune({ alpha: options.alpha }); + } + f.Beam({ notes: notes32.slice(0, 3) }); + f.Beam({ notes: notes32.slice(3, 6) }); + f.draw(); + if (options.debug) { + VF.Formatter.plotDebugging(f.getContext(), formatter, stave12.getNoteStartX(), 20, 320); + } +} +const Tests = { + tuplets: { + options: { width: 600, height: 750, debug: true }, + fn: tuplets, + }, + subgroup: { + options: { width: 650, height: 350, debug: true }, + fn: subgroup, + }, + multistave: { + options: { width: 650, height: 350, debug: true }, + fn: multistave, + }, +}; +if (typeof module != 'undefined') { + module.exports = Tests; +} diff --git a/build/esm/tests/formatter_tests.js b/build/esm/tests/formatter_tests.js new file mode 100644 index 0000000000..30569e0251 --- /dev/null +++ b/build/esm/tests/formatter_tests.js @@ -0,0 +1,721 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Accidental } from '../src/accidental.js'; +import { Annotation, AnnotationVerticalJustify } from '../src/annotation.js'; +import { Articulation } from '../src/articulation.js'; +import { Beam } from '../src/beam.js'; +import { Bend } from '../src/bend.js'; +import { Dot } from '../src/dot.js'; +import { Flow } from '../src/flow.js'; +import { Font, FontWeight } from '../src/font.js'; +import { Formatter } from '../src/formatter.js'; +import { FretHandFinger } from '../src/frethandfinger.js'; +import { ModifierPosition } from '../src/modifier.js'; +import { Note } from '../src/note.js'; +import { Registry } from '../src/registry.js'; +import { Stave } from '../src/stave.js'; +import { StaveConnector } from '../src/staveconnector.js'; +import { StaveNote } from '../src/stavenote.js'; +import { Stem } from '../src/stem.js'; +import { StringNumber } from '../src/stringnumber.js'; +import { Tables } from '../src/tables.js'; +import { Tuplet } from '../src/tuplet.js'; +import { Voice } from '../src/voice.js'; +import { MockTickable } from './mocks.js'; +const FormatterTests = { + Start() { + QUnit.module('Formatter'); + test('TickContext Building', buildTickContexts); + const run = VexFlowTests.runTests; + run('Penultimate Note Padding', penultimateNote); + run('Whitespace and justify', rightJustify); + run('Notehead padding', noteHeadPadding); + run('Justification and alignment with accidentals', accidentalJustification); + run('Long measure taking full space', longMeasureProblems); + run('Vertical alignment - few unaligned beats', unalignedNoteDurations1); + run('Vertical alignment - many unaligned beats', unalignedNoteDurations2, { globalSoftmax: false }); + run('Vertical alignment - many unaligned beats (global softmax)', unalignedNoteDurations2, { globalSoftmax: true }); + run('Vertical alignment - many mixed elements', alignedMixedElements, { globalSoftmax: true }); + run('StaveNote - Justification', justifyStaveNotes); + run('Notes with Tab', notesWithTab); + run('Multiple Staves - Justified', multiStaves, { debug: true }); + run('Softmax', softMax); + run('Mixtime', mixTime); + run('Tight', tightNotes1); + run('Tight 2', tightNotes2); + run('Annotations', annotations); + run('Proportional Formatting - No Tuning', proportional, { debug: true, iterations: 0 }); + run('Proportional Formatting - No Justification', proportional, { justify: false, debug: true, iterations: 0 }); + run('Proportional Formatting (20 iterations)', proportional, { debug: true, iterations: 20, alpha: 0.5 }); + }, +}; +function getGlyphWidth(glyphName) { + const musicFont = Tables.currentMusicFont(); + const glyph = musicFont.getGlyphs()[glyphName]; + const widthInEm = (glyph.x_max - glyph.x_min) / musicFont.getResolution(); + return widthInEm * 38 * Font.scaleToPxFrom.pt; +} +function buildTickContexts() { + function createTickable(beat) { + return new MockTickable().setTicks(beat); + } + const BEAT = (1 * Flow.RESOLUTION) / 4; + const tickables1 = [ + createTickable(BEAT).setWidth(10), + createTickable(BEAT * 2).setWidth(20), + createTickable(BEAT).setWidth(30), + ]; + const tickables2 = [ + createTickable(BEAT * 2).setWidth(10), + createTickable(BEAT).setWidth(20), + createTickable(BEAT).setWidth(30), + ]; + const voice1 = new Voice(Flow.TIME4_4); + const voice2 = new Voice(Flow.TIME4_4); + voice1.addTickables(tickables1); + voice2.addTickables(tickables2); + const formatter = new Formatter(); + const tContexts = formatter.createTickContexts([voice1, voice2]); + equal(tContexts.list.length, 4, 'Voices should have four tick contexts'); + throws(() => formatter.getMinTotalWidth(), /NoMinTotalWidth/, 'Expected to throw exception'); + ok(formatter.preCalculateMinTotalWidth([voice1, voice2]), 'Successfully runs preCalculateMinTotalWidth'); + equal(formatter.getMinTotalWidth(), 88, 'Get minimum total width without passing voices'); + formatter.preFormat(); + equal(formatter.getMinTotalWidth(), 88, 'Minimum total width'); + equal(tickables1[0].getX(), tickables2[0].getX(), 'First notes of both voices have the same X'); + equal(tickables1[2].getX(), tickables2[2].getX(), 'Last notes of both voices have the same X'); + ok(tickables1[1].getX() < tickables2[1].getX(), 'Second note of voice 2 is to the right of the second note of voice 1'); +} +function rightJustify(options) { + const f = VexFlowTests.makeFactory(options, 1200, 150); + const getTickables = (time, n, duration, duration2) => { + const tickar = []; + let i = 0; + for (i = 0; i < n; ++i) { + const dd = i === n - 1 ? duration2 : duration; + tickar.push(new StaveNote({ keys: ['f/4'], duration: dd })); + } + return new Voice(time).addTickables(tickar); + }; + const renderTest = (time, n, duration, duration2, x, width) => { + const formatter = f.Formatter(); + const stave = f.Stave({ x, y: 20, width }); + const voice = getTickables(time, n, duration, duration2); + formatter.joinVoices([voice]).formatToStave([voice], stave); + stave.draw(); + voice.draw(f.getContext(), stave); + }; + renderTest({ num_beats: 4, beat_value: 4, resolution: 4 * 4096 }, 3, '4', '2', 10, 300); + renderTest({ num_beats: 4, beat_value: 4, resolution: 4 * 4096 }, 1, 'w', 'w', 310, 300); + renderTest({ num_beats: 3, beat_value: 4, resolution: 4 * 4096 }, 3, '4', '4', 610, 300); + renderTest({ num_beats: 3, beat_value: 4, resolution: 4 * 4096 }, 6, '8', '8', 910, 300); + ok(true); +} +function penultimateNote(options) { + const f = VexFlowTests.makeFactory(options, 500, 550); + const score = f.EasyScore(); + const staffWidth = 310; + let system = undefined; + let voices = []; + let notes = []; + let note = undefined; + let stave = undefined; + let y = 10; + const draw = (softmax) => { + system = f.System({ + width: staffWidth, + y, + formatOptions: { align_rests: true }, + details: { softmaxFactor: softmax }, + }); + notes = []; + voices = []; + note = score.notes('C4/8/r', { clef: 'bass' })[0]; + notes.push(note); + note = score.notes('A3/8', { stem: 'up', clef: 'bass' })[0]; + notes.push(note); + note = score.notes('C4/4', { stem: 'up', clef: 'bass' })[0]; + notes.push(note); + voices.push(score.voice(notes).setMode(2)); + notes = []; + note = score.notes('( F3 A3 )/4', { stem: 'down', clef: 'bass' })[0]; + notes.push(note); + note = score.notes('B4/4/r', {})[0]; + notes.push(note); + voices.push(score.voice(notes).setMode(2)); + notes = []; + stave = system.addStave({ voices: voices }); + stave.addClef('bass'); + stave.addTimeSignature('2/4'); + voices = []; + f.draw(); + f.getContext().fillText(`softmax: ${softmax.toString()}`, staffWidth + 20, y + 50); + y += 100; + }; + draw(100); + draw(10); + draw(5); + draw(2); + draw(1.5); + ok(true); +} +function noteHeadPadding(options) { + const registry = new Registry(); + Registry.enableDefaultRegistry(registry); + const f = VexFlowTests.makeFactory(options, 600, 300); + const score = f.EasyScore(); + score.set({ time: '9/8' }); + const notes1 = score.notes('(d5 f5)/8,(c5 e5)/8,(d5 f5)/8,(c5 e5)/2.'); + const beams = [new Beam(notes1.slice(0, 3), true)]; + const voice1 = new Voice().setMode(Voice.Mode.SOFT); + const notes2 = score.notes('(g4 an4)/2.,(g4 a4)/4.', { clef: 'treble' }); + const voice2 = new Voice().setMode(Voice.Mode.SOFT); + voice2.addTickables(notes2); + voice1.addTickables(notes1); + const formatter = f.Formatter().joinVoices([voice1]).joinVoices([voice2]); + const width = formatter.preCalculateMinTotalWidth([voice1, voice2]); + formatter.format([voice1, voice2], width); + const staveWidth = width + Stave.defaultPadding; + const stave1 = f.Stave({ y: 50, width: staveWidth }); + const stave2 = f.Stave({ y: 150, width: staveWidth }); + stave1.draw(); + stave2.draw(); + voice1.draw(f.getContext(), stave1); + voice2.draw(f.getContext(), stave2); + beams.forEach((b) => b.setContext(f.getContext()).draw()); + ok(true); +} +function longMeasureProblems(options) { + const registry = new Registry(); + Registry.enableDefaultRegistry(registry); + const f = VexFlowTests.makeFactory(options, 1500, 300); + const score = f.EasyScore(); + score.set({ time: '4/4' }); + const notes1 = score.notes('b4/4,b4/8,b4/8,b4/4,b4/4,b4/2,b4/2,b4/4,b4/8,b4/8,b4/4,b4/4,b4/2,b4/2,b4/4,b4/8,b4/8,b4/4,b4/4,b4/2,b4/2,b4/4,b4/2,b4/8,b4/8'); + const voice1 = new Voice().setMode(Voice.Mode.SOFT); + const notes2 = score.notes('d3/4,(ab3 f4)/2,d3/4,ab3/4,d3/2,ab3/4,d3/4,ab3/2,d3/4,ab3/4,d3/2,ab3/4,d3/4,ab3/2,d3/4,ab3/4,d3/2,ab3/4,d4/4,d4/2,d4/4', { clef: 'bass' }); + const voice2 = new Voice().setMode(Voice.Mode.SOFT); + voice2.addTickables(notes2); + voice1.addTickables(notes1); + const formatter = f.Formatter().joinVoices([voice1]).joinVoices([voice2]); + const width = formatter.preCalculateMinTotalWidth([voice1, voice2]); + formatter.format([voice1, voice2], width); + const stave1 = f.Stave({ y: 50, width: width + Stave.defaultPadding }); + const stave2 = f.Stave({ y: 200, width: width + Stave.defaultPadding }); + stave1.draw(); + stave2.draw(); + voice1.draw(f.getContext(), stave1); + voice2.draw(f.getContext(), stave2); + ok(true); +} +function accidentalJustification(options) { + const f = VexFlowTests.makeFactory(options, 600, 300); + const score = f.EasyScore(); + const notes11 = score.notes('a4/2, a4/4, a4/8, ab4/16, an4/16'); + const voice11 = score.voice(notes11, { time: '4/4' }); + const notes21 = score.notes('c4/2, d4/8, d4/8, e4/8, e4/8'); + const voice21 = score.voice(notes21, { time: '4/4' }); + let beams = Beam.generateBeams(notes11.slice(2)); + beams = beams.concat(beams, Beam.generateBeams(notes21.slice(1, 3))); + beams = beams.concat(Beam.generateBeams(notes21.slice(3))); + const formatter = f.Formatter({ softmaxFactor: 100 }).joinVoices([voice11]).joinVoices([voice21]); + const width = formatter.preCalculateMinTotalWidth([voice11, voice21]); + const stave11 = f.Stave({ y: 20, width: width + Stave.defaultPadding }); + const stave21 = f.Stave({ y: 130, width: width + Stave.defaultPadding }); + formatter.format([voice11, voice21], width); + const ctx = f.getContext(); + stave11.setContext(ctx).draw(); + stave21.setContext(ctx).draw(); + voice11.draw(ctx, stave11); + voice21.draw(ctx, stave21); + beams.forEach((b) => b.setContext(ctx).draw()); + ok(true); +} +function unalignedNoteDurations1(options) { + const f = VexFlowTests.makeFactory(options, 600, 250); + const score = f.EasyScore(); + const notes11 = [ + new StaveNote({ keys: ['a/4'], duration: '8' }), + new StaveNote({ keys: ['b/4'], duration: '4' }), + new StaveNote({ keys: ['b/4'], duration: '8' }), + ]; + const notes21 = [ + new StaveNote({ keys: ['a/4'], duration: '16' }), + new StaveNote({ keys: ['b/4.'], duration: '4' }), + new StaveNote({ keys: ['a/4'], duration: '8d' }), + ]; + Dot.buildAndAttach([notes21[2]], { all: true }); + const ctx = f.getContext(); + const voice11 = score.voice(notes11, { time: '2/4' }).setMode(Voice.Mode.SOFT); + const voice21 = score.voice(notes21, { time: '2/4' }).setMode(Voice.Mode.SOFT); + const beams21 = Beam.generateBeams(notes21); + const beams11 = Beam.generateBeams(notes11); + const formatter = new Formatter(); + formatter.joinVoices([voice11]); + formatter.joinVoices([voice21]); + const width = formatter.preCalculateMinTotalWidth([voice11, voice21]); + const stave11 = f.Stave({ y: 20, width: width + Stave.defaultPadding }); + const stave21 = f.Stave({ y: 130, width: width + Stave.defaultPadding }); + formatter.format([voice11, voice21], width); + stave11.setContext(ctx).draw(); + stave21.setContext(ctx).draw(); + voice11.draw(ctx, stave11); + voice21.draw(ctx, stave21); + beams21.forEach((b) => b.setContext(ctx).draw()); + beams11.forEach((b) => b.setContext(ctx).draw()); + ok(voice11.getTickables()[1].getX() > voice21.getTickables()[1].getX()); +} +function unalignedNoteDurations2(options) { + const notes1 = [ + new StaveNote({ keys: ['b/4'], duration: '8r' }), + new StaveNote({ keys: ['g/4'], duration: '16' }), + new StaveNote({ keys: ['c/5'], duration: '16' }), + new StaveNote({ keys: ['e/5'], duration: '16' }), + new StaveNote({ keys: ['g/4'], duration: '16' }), + new StaveNote({ keys: ['c/5'], duration: '16' }), + new StaveNote({ keys: ['e/5'], duration: '16' }), + new StaveNote({ keys: ['b/4'], duration: '8r' }), + new StaveNote({ keys: ['g/4'], duration: '16' }), + new StaveNote({ keys: ['c/5'], duration: '16' }), + new StaveNote({ keys: ['e/5'], duration: '16' }), + new StaveNote({ keys: ['g/4'], duration: '16' }), + new StaveNote({ keys: ['c/5'], duration: '16' }), + new StaveNote({ keys: ['e/5'], duration: '16' }), + ]; + const notes2 = [ + new StaveNote({ keys: ['a/4'], duration: '16r' }), + new StaveNote({ keys: ['e/4.'], duration: '8d' }), + new StaveNote({ keys: ['e/4'], duration: '4' }), + new StaveNote({ keys: ['a/4'], duration: '16r' }), + new StaveNote({ keys: ['e/4.'], duration: '8d' }), + new StaveNote({ keys: ['e/4'], duration: '4' }), + ]; + const f = VexFlowTests.makeFactory(options, 750, 280); + const context = f.getContext(); + const voice1 = new Voice({ num_beats: 4, beat_value: 4 }); + voice1.addTickables(notes1); + const voice2 = new Voice({ num_beats: 4, beat_value: 4 }); + voice2.addTickables(notes2); + const formatter = new Formatter({ softmaxFactor: 100, globalSoftmax: options.params.globalSoftmax }); + formatter.joinVoices([voice1]); + formatter.joinVoices([voice2]); + const width = formatter.preCalculateMinTotalWidth([voice1, voice2]); + formatter.format([voice1, voice2], width); + const stave1 = new Stave(10, 40, width + Stave.defaultPadding); + const stave2 = new Stave(10, 100, width + Stave.defaultPadding); + stave1.setContext(context).draw(); + stave2.setContext(context).draw(); + voice1.draw(context, stave1); + voice2.draw(context, stave2); + ok(voice1.getTickables()[1].getX() > voice2.getTickables()[1].getX()); +} +function alignedMixedElements(options) { + const f = VexFlowTests.makeFactory(options, 800, 500); + const context = f.getContext(); + const stave = new Stave(10, 200, 400); + const stave2 = new Stave(410, 200, 400); + const notes = [ + new StaveNote({ keys: ['c/5'], duration: '8' }) + .addModifier(new Accidental('##'), 0) + .addModifier(new FretHandFinger('4').setPosition(ModifierPosition.BELOW), 0) + .addModifier(new StringNumber('3').setPosition(ModifierPosition.BELOW), 0) + .addModifier(new Articulation('a.').setPosition(ModifierPosition.BELOW), 0) + .addModifier(new Articulation('a>').setPosition(ModifierPosition.BELOW), 0) + .addModifier(new Articulation('a^').setPosition(ModifierPosition.BELOW), 0) + .addModifier(new Articulation('am').setPosition(ModifierPosition.BELOW), 0) + .addModifier(new Articulation('a@u').setPosition(ModifierPosition.BELOW), 0) + .addModifier(new Annotation('yyyy').setVerticalJustification(AnnotationVerticalJustify.BOTTOM), 0) + .addModifier(new Annotation('xxxx').setVerticalJustification(AnnotationVerticalJustify.BOTTOM).setFont('sans-serif', 20), 0) + .addModifier(new Annotation('ttt').setVerticalJustification(AnnotationVerticalJustify.BOTTOM).setFont('sans-serif', 20), 0), + new StaveNote({ keys: ['c/5'], duration: '8', stem_direction: Stem.DOWN }) + .addModifier(new StringNumber('3').setPosition(ModifierPosition.BELOW), 0) + .addModifier(new Articulation('a.').setPosition(ModifierPosition.BELOW), 0) + .addModifier(new Articulation('a>').setPosition(ModifierPosition.BELOW), 0), + new StaveNote({ keys: ['c/5'], duration: '8' }), + ]; + const notes2 = [ + new StaveNote({ keys: ['c/5'], duration: '8' }) + .addModifier(new StringNumber('3').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Annotation('yyyy').setVerticalJustification(AnnotationVerticalJustify.TOP), 0), + new StaveNote({ keys: ['c/5'], duration: '8', stem_direction: Stem.DOWN }) + .addModifier(new FretHandFinger('4').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new StringNumber('3').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Articulation('a.').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Articulation('a>').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Articulation('a^').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Articulation('am').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Articulation('a@u').setPosition(ModifierPosition.ABOVE), 0) + .addModifier(new Annotation('yyyy').setVerticalJustification(AnnotationVerticalJustify.TOP), 0) + .addModifier(new Annotation('xxxx').setVerticalJustification(AnnotationVerticalJustify.TOP).setFont('sans-serif', 20), 0) + .addModifier(new Annotation('ttt').setVerticalJustification(AnnotationVerticalJustify.TOP).setFont('sans-serif', 20), 0), + new StaveNote({ keys: ['c/5'], duration: '8' }), + ]; + const tuplet = new Tuplet(notes).setTupletLocation(-1); + const tuplet2 = new Tuplet(notes2).setTupletLocation(1); + Formatter.FormatAndDraw(context, stave, notes); + Formatter.FormatAndDraw(context, stave2, notes2); + stave.setContext(context).draw(); + stave2.setContext(context).draw(); + tuplet.setContext(context).draw(); + tuplet2.setContext(context).draw(); + ok(true); +} +function justifyStaveNotes(options) { + const f = VexFlowTests.makeFactory(options, 520, 280); + const ctx = f.getContext(); + const score = f.EasyScore(); + let y = 30; + function justifyToWidth(width) { + f.Stave({ y: y }).addClef('treble'); + const voices = [ + score.voice(score.notes('(cbb4 en4 a4)/2, (d4 e4 f4)/8, (d4 f4 a4)/8, (cn4 f#4 a4)/4', { stem: 'down' })), + score.voice(score.notes('(bb4 e#5 a5)/4, (d5 e5 f5)/2, (c##5 fb5 a5)/4', { stem: 'up' })), + ]; + f.Formatter() + .joinVoices(voices) + .format(voices, width - (Stave.defaultPadding + getGlyphWidth('gClef'))); + voices[0].getTickables().forEach((note) => Note.plotMetrics(ctx, note, y + 140)); + voices[1].getTickables().forEach((note) => Note.plotMetrics(ctx, note, y - 20)); + y += 210; + } + justifyToWidth(520); + f.draw(); + ok(true); +} +function notesWithTab(options) { + const f = VexFlowTests.makeFactory(options, 420, 580); + const score = f.EasyScore(); + let y = 10; + function justifyToWidth(width) { + const stave = f.Stave({ y: y }).addClef('treble'); + const voice = score.voice(score.notes('d#4/2, (c4 d4)/8, d4/8, (c#4 e4 a4)/4', { stem: 'up' })); + y += 100; + f.TabStave({ y: y }).addTabGlyph().setNoteStartX(stave.getNoteStartX()); + const tabVoice = score.voice([ + f.TabNote({ positions: [{ str: 3, fret: 6 }], duration: '2' }).addModifier(new Bend('Full'), 0), + f + .TabNote({ + positions: [ + { str: 2, fret: 3 }, + { str: 3, fret: 5 }, + ], + duration: '8', + }) + .addModifier(new Bend('Unison'), 1), + f.TabNote({ positions: [{ str: 3, fret: 7 }], duration: '8' }), + f.TabNote({ + positions: [ + { str: 3, fret: 6 }, + { str: 4, fret: 7 }, + { str: 2, fret: 5 }, + ], + duration: '4', + }), + ]); + f.Formatter().joinVoices([voice]).joinVoices([tabVoice]).format([voice, tabVoice], width); + y += 150; + } + justifyToWidth(0); + justifyToWidth(300); + f.draw(); + ok(true); +} +function multiStaves(options) { + const f = VexFlowTests.makeFactory(options, 600, 400); + const ctx = f.getContext(); + const score = f.EasyScore(); + const notes11 = score.notes('f4/4, d4/8, g4/4, eb4/8'); + const notes21 = score.notes('d4/8, d4, d4, d4, e4, eb4'); + const notes31 = score.notes('a5/8, a5, a5, a5, a5, a5', { stem: 'down' }); + let voices = [ + score.voice(notes11, { time: '6/8' }), + score.voice(notes21, { time: '6/8' }), + score.voice(notes31, { time: '6/8' }), + ]; + let formatter = f.Formatter(); + voices.forEach((v) => formatter.joinVoices([v])); + let width = formatter.preCalculateMinTotalWidth(voices); + formatter.format(voices, width); + let beams = [ + new Beam(notes21.slice(0, 3), true), + new Beam(notes21.slice(3, 6), true), + new Beam(notes31.slice(0, 3), true), + new Beam(notes31.slice(3, 6), true), + ]; + const staveYs = [20, 130, 250]; + let staveWidth = width + getGlyphWidth('gClef') + getGlyphWidth('timeSig8') + Stave.defaultPadding; + let staves = [ + f.Stave({ y: staveYs[0], width: staveWidth }).addClef('treble').addTimeSignature('6/8'), + f.Stave({ y: staveYs[1], width: staveWidth }).addClef('treble').addTimeSignature('6/8'), + f.Stave({ y: staveYs[2], width: staveWidth }).addClef('bass').addTimeSignature('6/8'), + ]; + f.StaveConnector({ + top_stave: staves[1], + bottom_stave: staves[2], + type: 'brace', + }); + for (let i = 0; i < staves.length; ++i) { + staves[i].setContext(ctx).draw(); + voices[i].draw(ctx, staves[i]); + } + beams.forEach((beam) => beam.setContext(ctx).draw()); + const notes12 = score.notes('ab4/4, bb4/8, (cb5 eb5)/4[stem="down"], d5/8[stem="down"]'); + const notes22 = score.notes('(eb4 ab4)/4., (c4 eb4 ab4)/4, db5/8', { stem: 'up' }); + const notes32 = score.notes('a5/8, a5, a5, a5, a5, a5', { stem: 'down' }); + voices = [ + score.voice(notes12, { time: '6/8' }), + score.voice(notes22, { time: '6/8' }), + score.voice(notes32, { time: '6/8' }), + ]; + formatter = f.Formatter(); + voices.forEach((v) => formatter.joinVoices([v])); + width = formatter.preCalculateMinTotalWidth(voices); + const staveX = staves[0].getX() + staves[0].getWidth(); + staveWidth = width + Stave.defaultPadding; + staves = [ + f.Stave({ x: staveX, y: staveYs[0], width: staveWidth }), + f.Stave({ x: staveX, y: staveYs[1], width: staveWidth }), + f.Stave({ x: staveX, y: staveYs[2], width: staveWidth }), + ]; + formatter.format(voices, width); + beams = [ + new Beam(notes32.slice(0, 3), true), + new Beam(notes32.slice(3, 6), true), + ]; + for (let i = 0; i < staves.length; ++i) { + staves[i].setContext(ctx).draw(); + voices[i].draw(ctx, staves[i]); + voices[i].getTickables().forEach((note) => Note.plotMetrics(ctx, note, staveYs[i] - 20)); + } + beams.forEach((beam) => beam.setContext(ctx).draw()); + ok(true); +} +function proportional(options) { + const debug = options.params.debug; + Registry.enableDefaultRegistry(new Registry()); + const f = VexFlowTests.makeFactory(options, 775, 750); + const system = f.System({ + x: 50, + autoWidth: true, + debugFormatter: debug, + noJustification: !(options.params.justify === undefined && true), + formatIterations: options.params.iterations, + details: { alpha: options.params.alpha }, + }); + const score = f.EasyScore(); + const voices = [ + score.notes('c5/8, c5'), + score.tuplet(score.notes('a4/8, a4, a4'), { notes_occupied: 2 }), + score.notes('c5/16, c5, c5, c5'), + score.tuplet(score.notes('a4/16, a4, a4, a4, a4'), { notes_occupied: 4 }), + score.tuplet(score.notes('a4/32, a4, a4, a4, a4, a4, a4'), { notes_occupied: 8 }), + ]; + const createVoice = (notes) => score.voice(notes, { time: '1/4' }); + const createStave = (voice) => system + .addStave({ voices: [voice], debugNoteMetrics: debug }) + .addClef('treble') + .addTimeSignature('1/4'); + voices.map(createVoice).forEach(createStave); + system.addConnector().setType(StaveConnector.type.BRACKET); + f.draw(); + Registry.disableDefaultRegistry(); + ok(true); +} +function softMax(options) { + const f = VexFlowTests.makeFactory(options, 550, 500); + const textX = 450 / 0.8; + f.getContext().scale(0.8, 0.8); + function draw(y, factor) { + const score = f.EasyScore(); + const system = f.System({ + x: 100, + y, + details: { softmaxFactor: factor }, + autoWidth: true, + }); + system + .addStave({ + voices: [ + score.voice(score + .notes('C#5/h, a4/q') + .concat(score.beam(score.notes('Abb4/8, A4/8'))) + .concat(score.beam(score.notes('A4/16, A#4, A4, Ab4/32, A4'))), { time: '5/4' }), + ], + }) + .addClef('treble') + .addTimeSignature('5/4'); + f.draw(); + f.getContext().fillText(`softmax: ${factor.toString()}`, textX, y + 50); + ok(true); + } + draw(50, 1); + draw(150, 2); + draw(250, 10); + draw(350, 20); + draw(450, 200); +} +function mixTime(options) { + const f = VexFlowTests.makeFactory(options, 400 + Stave.defaultPadding, 250); + f.getContext().scale(0.8, 0.8); + const score = f.EasyScore(); + const system = f.System({ + details: { softmaxFactor: 100 }, + autoWidth: true, + debugFormatter: true, + }); + system + .addStave({ + voices: [score.voice(score.notes('C#5/q, B4').concat(score.beam(score.notes('A4/8, E4, C4, D4'))))], + }) + .addClef('treble') + .addTimeSignature('4/4'); + system + .addStave({ + voices: [score.voice(score.notes('C#5/q, B4, B4').concat(score.tuplet(score.beam(score.notes('A4/8, E4, C4')))))], + }) + .addClef('treble') + .addTimeSignature('4/4'); + f.draw(); + ok(true); +} +function tightNotes1(options) { + const f = VexFlowTests.makeFactory(options, 440, 250); + f.getContext().scale(0.8, 0.8); + const score = f.EasyScore(); + const system = f.System({ + autoWidth: true, + debugFormatter: true, + details: { maxIterations: 10 }, + }); + system + .addStave({ + voices: [ + score.voice(score.beam(score.notes('B4/16, B4, B4, B4, B4, B4, B4, B4')).concat(score.notes('B4/q, B4'))), + ], + }) + .addClef('treble') + .addTimeSignature('4/4'); + system + .addStave({ + voices: [ + score.voice(score.notes('B4/q, B4').concat(score.beam(score.notes('B4/16, B4, B4, B4, B4, B4, B4, B4')))), + ], + }) + .addClef('treble') + .addTimeSignature('4/4'); + f.draw(); + ok(true); +} +function tightNotes2(options) { + const f = VexFlowTests.makeFactory(options, 440, 250); + f.getContext().scale(0.8, 0.8); + const score = f.EasyScore(); + const system = f.System({ + autoWidth: true, + debugFormatter: true, + }); + system + .addStave({ + voices: [ + score.voice(score.beam(score.notes('B4/16, B4, B4, B4, B4, B4, B4, B4')).concat(score.notes('B4/q, B4'))), + ], + }) + .addClef('treble') + .addTimeSignature('4/4'); + system + .addStave({ + voices: [score.voice(score.notes('B4/w'))], + }) + .addClef('treble') + .addTimeSignature('4/4'); + f.draw(); + ok(true); +} +function annotations(options) { + const pageWidth = 916; + const pageHeight = 600; + const f = VexFlowTests.makeFactory(options, pageWidth, pageHeight); + const context = f.getContext(); + const lyrics1 = ['ipso', 'ipso-', 'ipso', 'ipso', 'ipsoz', 'ipso-', 'ipso', 'ipso', 'ipso', 'ip', 'ipso']; + const lyrics2 = ['ipso', 'ipso-', 'ipsoz', 'ipso', 'ipso', 'ipso-', 'ipso', 'ipso', 'ipso', 'ip', 'ipso']; + const smar = [ + { + sm: 5, + width: 550, + lyrics: lyrics1, + title: '550px,softMax:5', + }, + { + sm: 10, + width: 550, + lyrics: lyrics2, + title: '550px,softmax:10,different word order', + }, + { + sm: 5, + width: 550, + lyrics: lyrics2, + title: '550px,softmax:5', + }, + { + sm: 100, + width: 550, + lyrics: lyrics2, + title: '550px,softmax:100', + }, + ]; + const rowSize = 140; + const beats = 12; + const beatsPer = 8; + const beamGroup = 3; + const durations = ['8d', '16', '8', '8d', '16', '8', '8d', '16', '8', '4', '8']; + const beams = []; + let y = 40; + smar.forEach((sm) => { + const stave = new Stave(10, y, sm.width); + const notes = []; + let iii = 0; + context.fillText(sm.title, 100, y); + y += rowSize; + durations.forEach((dd) => { + const note = new StaveNote({ keys: ['b/4'], duration: dd }); + if (dd.indexOf('d') >= 0) { + Dot.buildAndAttach([note], { all: true }); + } + if (sm.lyrics.length > iii) { + note.addModifier(new Annotation(sm.lyrics[iii]) + .setVerticalJustification(Annotation.VerticalJustify.BOTTOM) + .setFont(Font.SERIF, 12, FontWeight.NORMAL)); + } + notes.push(note); + iii += 1; + }); + notes.forEach((note) => { + if (note.getDuration().indexOf('d') >= 0) { + Dot.buildAndAttach([note], { all: true }); + } + }); + let notesToBeam = []; + notes.forEach((note) => { + if (note.getIntrinsicTicks() < 4096) { + notesToBeam.push(note); + if (notesToBeam.length >= beamGroup) { + beams.push(new Beam(notesToBeam)); + notesToBeam = []; + } + } + else { + notesToBeam = []; + } + }); + const voice1 = new Voice({ num_beats: beats, beat_value: beatsPer }).setMode(Voice.Mode.SOFT).addTickables(notes); + const fmt = new Formatter({ softmaxFactor: sm.sm, maxIterations: 2 }).joinVoices([voice1]); + fmt.format([voice1], sm.width - 11); + stave.setContext(context).draw(); + voice1.draw(context, stave); + beams.forEach((b) => b.setContext(context).draw()); + }); + ok(true); +} +VexFlowTests.register(FormatterTests); +export { FormatterTests }; diff --git a/build/esm/tests/fraction_tests.js b/build/esm/tests/fraction_tests.js new file mode 100644 index 0000000000..7094c607a7 --- /dev/null +++ b/build/esm/tests/fraction_tests.js @@ -0,0 +1,72 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Fraction } from '../src/fraction.js'; +const FractionTests = { + Start() { + QUnit.module('Fraction'); + test('Basic', basic); + test('With Other Fractions', withOtherFractions); + }, +}; +function basic() { + const f_1_2 = new Fraction(1, 2); + ok(f_1_2.equals(0.5), 'Fraction: 1/2 equals 0.5'); + ok(f_1_2.equals(new Fraction(1, 2)), 'Fraction: 1/2 equals 1/2'); + ok(f_1_2.equals(new Fraction(2, 4)), 'Fraction: 1/2 equals 2/4'); + notOk(f_1_2.greaterThan(1), 'Fraction: ! 1/2 > 1'); + ok(f_1_2.greaterThan(0.2), 'Fraction: 1/2 > 0.2'); + ok(f_1_2.greaterThanEquals(0.2), 'Fraction: 1/2 >= 0.2'); + ok(f_1_2.greaterThanEquals(0.5), 'Fraction: 1/2 >= 0.5'); + notOk(f_1_2.greaterThanEquals(1), 'Fraction: ! 1/2 >= 1'); + notOk(f_1_2.lessThan(0.5), 'Fraction: ! 1/2 < 0.5'); + ok(f_1_2.lessThan(1), 'Fraction: 1/2 < 1'); + ok(f_1_2.lessThanEquals(0.6), 'Fraction: 1/2 <= 0.6'); + ok(f_1_2.lessThanEquals(0.5), 'Fraction: 1/2 <= 0.5'); + notOk(f_1_2.lessThanEquals(0.4), 'Fraction: ! 1/2 <= 0.4'); + const f_05 = f_1_2.copy(0.5); + strictEqual(f_05, f_1_2, 'Fraction: f_05 === f_1_2'); + strictEqual(f_05.toString(), '0.5/1', 'Fraction: f_05.toString() === "0.5/1"'); + strictEqual(f_05.toSimplifiedString(), '1/2', 'Fraction: f_05.toSimplifiedString() === "1/2"'); + const tF_n = f_05.clone(); + notStrictEqual(tF_n, f_05, 'Fraction: tF_n !== f_05'); + notEqual(tF_n, f_05, 'Fraction: tF_n != f_05'); + deepEqual(tF_n, f_05, 'tF_n deepEqual f_05'); + notDeepEqual(tF_n, {}, 'tF_n notDeepEqual {}'); + tF_n.subtract(-0.5); + ok(tF_n.equals(1), 'Fraction: 0.5 -(-0.5) equals 1'); + tF_n.add(1); + ok(tF_n.equals(2), 'Fraction: 1 + 1 equals 2'); + tF_n.multiply(2); + ok(tF_n.equals(4), 'Fraction: 2 * 2 equals 4'); + tF_n.divide(2); + ok(tF_n.equals(2), 'Fraction: 4 / 2 equals 2'); + equal(Fraction.LCMM([]), 0); + equal(Fraction.LCMM([17]), 17); + equal(Fraction.LCMM([2, 5]), 10); + equal(Fraction.LCMM([15, 3, 5]), 15); + equal(Fraction.LCMM([2, 4, 6]), 12); + equal(Fraction.LCMM([2, 3, 4, 5]), 60); + equal(Fraction.LCMM([12, 15, 10, 75]), 300); + equal(Fraction.GCD(0, 0), 0); + equal(Fraction.GCD(0, 99), 99); + equal(Fraction.GCD(77, 0), 77); + equal(Fraction.GCD(42, 14), 14); + equal(Fraction.GCD(15, 10), 5); +} +function withOtherFractions() { + const f_1_2 = new Fraction(1, 2); + const f_1_4 = new Fraction(1, 4); + const f_1_8 = new Fraction(1, 8); + const f_2 = new Fraction(2, 1); + const a = f_1_2.clone().multiply(f_1_2); + ok(a.equals(f_1_4), '1/2 x 1/2 == 1/4'); + const b = f_1_2.clone().divide(f_1_4); + ok(b.equals(f_2), '1/2 / 1/4 == 2'); + const c = f_2.clone().subtract(f_1_2).subtract(f_1_2).subtract(f_1_4); + const d = f_1_8.clone().add(f_1_8).add(f_1_8).multiply(f_2); + ok(c.equals(d), '2-1/2-1/2-1/4 == (1/8+1/8+1/8)*(2/1)'); + equal(c.value(), 0.75, '3/4 == 0.75'); + const e = f_1_8.clone().add(f_1_4).add(f_1_8); + ok(e.equals(f_1_2), '1/8 + 1/4 + 1/8 == 1/2'); +} +VexFlowTests.register(FractionTests); +export { FractionTests }; diff --git a/build/esm/tests/ghostnote_tests.js b/build/esm/tests/ghostnote_tests.js new file mode 100644 index 0000000000..76820b198d --- /dev/null +++ b/build/esm/tests/ghostnote_tests.js @@ -0,0 +1,77 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +const GhostNoteTests = { + Start() { + QUnit.module('GhostNote'); + const run = VexFlowTests.runTests; + run('GhostNote Basic', basic); + run('GhostNote Dotted', dotted); + }, +}; +function createTest(addItems) { + return (options) => { + const factory = VexFlowTests.makeFactory(options, 550); + const stave = factory.Stave(); + const score = factory.EasyScore(); + addItems(factory, score); + const voices = factory.getVoices(); + factory.Formatter().joinVoices(voices).formatToStave(voices, stave); + factory.draw(); + ok(true, 'all pass'); + }; +} +const basic = createTest((f, score) => { + const voiceTop = score.voice(score.notes('f#5/4, f5, db5, c5, c5/8, d5, fn5, e5, d5, c5', { stem: 'up' }), { + time: '7/4', + }); + const notesTop = voiceTop.getTickables(); + f.Beam({ notes: notesTop.slice(4, 8) }); + f.Beam({ notes: notesTop.slice(8, 10) }); + score.voice([ + f.GhostNote({ duration: '2' }), + f.StaveNote({ keys: ['f/4'], stem_direction: -1, duration: '4' }), + f.GhostNote({ duration: '4' }), + f.StaveNote({ keys: ['e/4'], stem_direction: -1, duration: '4' }), + f.GhostNote({ duration: '8' }), + f.StaveNote({ keys: ['d/4'], stem_direction: -1, duration: '8' }).addModifier(f.Accidental({ type: '##' }), 0), + f.StaveNote({ keys: ['c/4'], stem_direction: -1, duration: '8' }), + f.StaveNote({ keys: ['c/4'], stem_direction: -1, duration: '8' }), + ], { time: '7/4' }); +}); +const dotted = createTest((f, score) => { + const voice1 = score.voice([ + f.GhostNote({ duration: '4d' }), + f.StaveNote({ duration: '8', keys: ['f/5'], stem_direction: 1 }), + f.StaveNote({ duration: '4', keys: ['d/5'], stem_direction: 1 }), + f.StaveNote({ duration: '8', keys: ['c/5'], stem_direction: 1 }), + f.StaveNote({ duration: '16', keys: ['c/5'], stem_direction: 1 }), + f.StaveNote({ duration: '16', keys: ['d/5'], stem_direction: 1 }), + f.GhostNote({ duration: '2dd' }), + f.StaveNote({ duration: '8', keys: ['f/5'], stem_direction: 1 }), + ], { time: '8/4' }); + const voice2 = score.voice([ + f.StaveNote({ duration: '4', keys: ['f/4'], stem_direction: -1 }), + f.StaveNote({ duration: '8', keys: ['e/4'], stem_direction: -1 }), + f.StaveNote({ duration: '8', keys: ['d/4'], stem_direction: -1 }), + f.GhostNote({ duration: '4dd' }), + f.StaveNote({ duration: '16', keys: ['c/4'], stem_direction: -1 }), + f.StaveNote({ duration: '2', keys: ['c/4'], stem_direction: -1 }), + f.StaveNote({ duration: '4', keys: ['d/4'], stem_direction: -1 }), + f.StaveNote({ duration: '8', keys: ['f/4'], stem_direction: -1 }), + f.StaveNote({ duration: '8', keys: ['e/4'], stem_direction: -1 }), + ], { time: '8/4' }); + const notes1 = voice1.getTickables(); + const notes2 = voice2.getTickables(); + const addAccidental = (note, type) => note.addModifier(f.Accidental({ type }), 0); + addAccidental(notes1[1], 'bb'); + addAccidental(notes1[4], '#'); + addAccidental(notes1[7], 'n'); + addAccidental(notes2[0], '#'); + addAccidental(notes2[4], 'b'); + addAccidental(notes2[5], '#'); + addAccidental(notes2[7], 'n'); + f.Beam({ notes: notes1.slice(3, 6) }); + f.Beam({ notes: notes2.slice(1, 3) }); + f.Beam({ notes: notes2.slice(7, 9) }); +}); +VexFlowTests.register(GhostNoteTests); +export { GhostNoteTests }; diff --git a/build/esm/tests/glyphnote_tests.js b/build/esm/tests/glyphnote_tests.js new file mode 100644 index 0000000000..13e6b80429 --- /dev/null +++ b/build/esm/tests/glyphnote_tests.js @@ -0,0 +1,113 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { ChordSymbol } from '../src/chordsymbol.js'; +import { Glyph } from '../src/glyph.js'; +import { Registry } from '../src/registry.js'; +import { StaveConnector } from '../src/staveconnector.js'; +const GlyphNoteTests = { + Start() { + QUnit.module('GlyphNote'); + const run = VexFlowTests.runTests; + run('GlyphNote with ChordSymbols', chordChanges, { debug: false, noPadding: false }); + run('GlyphNote Positioning', basic, { debug: false, noPadding: false }); + run('GlyphNote No Stave Padding', basic, { debug: true, noPadding: true }); + run('GlyphNote RepeatNote', repeatNote, { debug: false, noPadding: true }); + }, +}; +function chordChanges(options) { + Registry.enableDefaultRegistry(new Registry()); + const f = VexFlowTests.makeFactory(options, 300, 200); + const system = f.System({ + x: 50, + width: 250, + debugFormatter: options.params.debug, + noPadding: options.params.noPadding, + details: { alpha: options.params.alpha }, + }); + const score = f.EasyScore(); + const notes = [ + f.GlyphNote(new Glyph('repeatBarSlash', 40), { duration: 'q' }), + f.GlyphNote(new Glyph('repeatBarSlash', 40), { duration: 'q' }), + f.GlyphNote(new Glyph('repeatBarSlash', 40), { duration: 'q' }), + f.GlyphNote(new Glyph('repeatBarSlash', 40), { duration: 'q' }), + ]; + const chord1 = f + .ChordSymbol({ reportWidth: false }) + .addText('F7') + .setHorizontal('left') + .addGlyphOrText('(#11b9)', { symbolModifier: ChordSymbol.symbolModifiers.SUPERSCRIPT }); + const chord2 = f + .ChordSymbol() + .addText('F7') + .setHorizontal('left') + .addGlyphOrText('#11', { symbolModifier: ChordSymbol.symbolModifiers.SUPERSCRIPT }) + .addGlyphOrText('b9', { symbolModifier: ChordSymbol.symbolModifiers.SUBSCRIPT }); + notes[0].addModifier(chord1, 0); + notes[2].addModifier(chord2, 0); + const voice = score.voice(notes); + system.addStave({ voices: [voice], debugNoteMetrics: options.params.debug }); + system.addConnector().setType(StaveConnector.type.BRACKET); + f.draw(); + Registry.disableDefaultRegistry(); + ok(true); +} +function basic(options) { + Registry.enableDefaultRegistry(new Registry()); + const f = VexFlowTests.makeFactory(options, 300, 400); + const system = f.System({ + x: 50, + width: 250, + debugFormatter: options.params.debug, + noPadding: options.params.noPadding, + details: { alpha: options.params.alpha }, + }); + const score = f.EasyScore(); + const newVoice = (notes) => score.voice(notes, { time: '1/4' }); + const newStave = (voice) => system.addStave({ voices: [voice], debugNoteMetrics: options.params.debug }); + const voices = [ + [f.GlyphNote(new Glyph('repeat1Bar', 40), { duration: 'q' }, { line: 4 })], + [f.GlyphNote(new Glyph('repeat2Bars', 40), { duration: 'q', align_center: true })], + [ + f.GlyphNote(new Glyph('repeatBarSlash', 40), { duration: '16' }), + f.GlyphNote(new Glyph('repeatBarSlash', 40), { duration: '16' }), + f.GlyphNote(new Glyph('repeat4Bars', 40), { duration: '16' }), + f.GlyphNote(new Glyph('repeatBarSlash', 40), { duration: '16' }), + ], + ]; + voices.map(newVoice).forEach(newStave); + system.addConnector().setType(StaveConnector.type.BRACKET); + f.draw(); + Registry.disableDefaultRegistry(); + ok(true); +} +function repeatNote(options) { + Registry.enableDefaultRegistry(new Registry()); + const f = VexFlowTests.makeFactory(options, 300, 500); + const system = f.System({ + x: 50, + width: 250, + debugFormatter: options.params.debug, + noPadding: options.params.noPadding, + details: { alpha: options.params.alpha }, + }); + const score = f.EasyScore(); + const createVoice = (notes) => score.voice(notes, { time: '1/4' }); + const addStaveWithVoice = (voice) => system.addStave({ voices: [voice], debugNoteMetrics: options.params.debug }); + const voices = [ + [f.RepeatNote('1')], + [f.RepeatNote('2')], + [f.RepeatNote('4')], + [ + f.RepeatNote('slash', { duration: '16' }), + f.RepeatNote('slash', { duration: '16' }), + f.RepeatNote('slash', { duration: '16' }), + f.RepeatNote('slash', { duration: '16' }), + ], + ]; + voices.map(createVoice).forEach(addStaveWithVoice); + system.addConnector().setType(StaveConnector.type.BRACKET); + f.draw(); + Registry.disableDefaultRegistry(); + ok(true); +} +VexFlowTests.register(GlyphNoteTests); +export { GlyphNoteTests }; diff --git a/build/esm/tests/gracenote_tests.js b/build/esm/tests/gracenote_tests.js new file mode 100644 index 0000000000..2b270a321f --- /dev/null +++ b/build/esm/tests/gracenote_tests.js @@ -0,0 +1,413 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Accidental } from '../src/accidental.js'; +import { Annotation } from '../src/annotation.js'; +import { Articulation } from '../src/articulation.js'; +import { Dot } from '../src/dot.js'; +import { Formatter } from '../src/formatter.js'; +const GraceNoteTests = { + Start() { + QUnit.module('Grace Notes'); + const run = VexFlowTests.runTests; + run('Grace Note Basic', basic); + run('With Articulation and Annotation on Parent Note', graceNoteModifiers); + run('Grace Note Basic with Slurs', basicSlurred); + run('Grace Note Stem', stem); + run('Grace Note Stem with Beams 1', stemWithBeamed, { + keys1: ['g/4'], + stemDirection1: 1, + keys2: ['d/5'], + stemDirection2: -1, + }); + run('Grace Note Stem with Beams 2', stemWithBeamed, { + keys1: ['a/3'], + stemDirection1: 1, + keys2: ['a/5'], + stemDirection2: -1, + }); + run('Grace Note Stem with Beams 3', stemWithBeamed, { + keys1: ['c/4'], + stemDirection1: 1, + keys2: ['c/6'], + stemDirection2: -1, + }); + run('Grace Note Slash', slash); + run('Grace Note Slash with Beams', slashWithBeams); + run('Grace Notes Multiple Voices', multipleVoices); + run('Grace Notes Multiple Voices Multiple Draws', multipleVoicesMultipleDraws); + }, +}; +function basic(options) { + const f = VexFlowTests.makeFactory(options, 700, 130); + const stave = f.Stave({ x: 10, y: 10, width: 650 }); + const gracenotes = [ + { keys: ['e/4'], duration: '32' }, + { keys: ['f/4'], duration: '32' }, + { keys: ['g/4'], duration: '32' }, + { keys: ['a/4'], duration: '32' }, + ].map(f.GraceNote.bind(f)); + const gracenotes1 = [{ keys: ['b/4'], duration: '8', slash: false }].map(f.GraceNote.bind(f)); + const gracenotes2 = [{ keys: ['b/4'], duration: '8', slash: true }].map(f.GraceNote.bind(f)); + const gracenotes3 = [ + { keys: ['e/4'], duration: '8' }, + { keys: ['f/4'], duration: '16' }, + { keys: ['e/4', 'g/4'], duration: '8' }, + { keys: ['a/4'], duration: '32' }, + { keys: ['b/4'], duration: '32' }, + ].map(f.GraceNote.bind(f)); + const gracenotes4 = [ + { keys: ['g/4'], duration: '8' }, + { keys: ['g/4'], duration: '16' }, + { keys: ['g/4'], duration: '16' }, + ].map(f.GraceNote.bind(f)); + gracenotes[1].addModifier(f.Accidental({ type: '##' }), 0); + gracenotes3[3].addModifier(f.Accidental({ type: 'bb' }), 0); + Dot.buildAndAttach([gracenotes4[0]], { all: true }); + const notes = [ + f + .StaveNote({ keys: ['b/4'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes }).beamNotes(), 0), + f + .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true }) + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.GraceNoteGroup({ notes: gracenotes1 }).beamNotes(), 0), + f + .StaveNote({ keys: ['c/5', 'd/5'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes2 }).beamNotes(), 0), + f + .StaveNote({ keys: ['a/4'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes3 }).beamNotes(), 0), + f + .StaveNote({ keys: ['a/4'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes4 }).beamNotes(), 0), + ]; + const voice = f.Voice().setStrict(false).addTickables(notes); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'GraceNoteBasic'); +} +function graceNoteModifiers(options) { + const f = VexFlowTests.makeFactory(options, 700, 130); + const stave = f.Stave({ x: 10, y: 10, width: 650 }); + const gracenotes = [{ keys: ['b/4'], duration: '8', slash: false }].map(f.GraceNote.bind(f)); + const notes = [ + f + .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes }), 0), + f + .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes }), 0) + .addModifier(new Articulation('a-').setPosition(3), 0), + f + .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes }), 0) + .addModifier(new Articulation('a-').setPosition(3), 0) + .addModifier(new Accidental('#')), + f + .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes }), 0) + .addModifier(new Articulation('a-').setPosition(3), 0) + .addModifier(new Annotation('words')), + f + .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes }), 0) + .addModifier(new Articulation('a-').setPosition(3), 0) + .addModifier(new Articulation('a>').setPosition(3), 0), + f + .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes }), 0) + .addModifier(new Articulation('a-').setPosition(3), 0) + .addModifier(new Articulation('a>').setPosition(3), 0) + .addModifier(new Articulation('a@a').setPosition(3), 0), + ]; + const voice = f.Voice().setStrict(false).addTickables(notes); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'GraceNoteModifiers'); +} +function basicSlurred(options) { + const f = VexFlowTests.makeFactory(options, 700, 130); + const stave = f.Stave({ x: 10, y: 10, width: 650 }); + const gracenotes0 = [ + { keys: ['e/4'], duration: '32' }, + { keys: ['f/4'], duration: '32' }, + { keys: ['g/4'], duration: '32' }, + { keys: ['a/4'], duration: '32' }, + ].map(f.GraceNote.bind(f)); + const gracenotes1 = [{ keys: ['b/4'], duration: '8', slash: false }].map(f.GraceNote.bind(f)); + const gracenotes2 = [{ keys: ['b/4'], duration: '8', slash: true }].map(f.GraceNote.bind(f)); + const gracenotes3 = [ + { keys: ['e/4'], duration: '8' }, + { keys: ['f/4'], duration: '16' }, + { keys: ['e/4', 'g/4'], duration: '8' }, + { keys: ['a/4'], duration: '32' }, + { keys: ['b/4'], duration: '32' }, + ].map(f.GraceNote.bind(f)); + const gracenotes4 = [ + { keys: ['a/4'], duration: '8' }, + { keys: ['a/4'], duration: '16' }, + { keys: ['a/4'], duration: '16' }, + ].map(f.GraceNote.bind(f)); + gracenotes0[1].addModifier(f.Accidental({ type: '#' }), 0); + gracenotes3[3].addModifier(f.Accidental({ type: 'b' }), 0); + gracenotes3[2].addModifier(f.Accidental({ type: 'n' }), 0); + Dot.buildAndAttach([gracenotes4[0]], { all: true }); + const notes = [ + f + .StaveNote({ keys: ['b/4'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes0, slur: true }).beamNotes(), 0), + f + .StaveNote({ keys: ['c/5'], duration: '4', auto_stem: true }) + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.GraceNoteGroup({ notes: gracenotes1, slur: true }).beamNotes(), 0), + f + .StaveNote({ keys: ['c/5', 'd/5'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes2, slur: true }).beamNotes(), 0), + f + .StaveNote({ keys: ['a/4'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes3, slur: true }).beamNotes(), 0), + f + .StaveNote({ keys: ['a/4'], duration: '4', auto_stem: true }) + .addModifier(f.GraceNoteGroup({ notes: gracenotes4, slur: true }).beamNotes(), 0), + f.StaveNote({ keys: ['a/4'], duration: '4', auto_stem: true }), + ]; + const voice = f.Voice().setStrict(false).addTickables(notes); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'GraceNoteBasic'); +} +const createNoteForStemTest = (duration, noteBuilder, keys, stem_direction, slash = false) => { + const struct = { duration, slash }; + struct.stem_direction = stem_direction; + struct.keys = keys; + return noteBuilder(struct); +}; +const durationsForStemTest = ['8', '16', '32', '64', '128']; +function stem(options) { + const f = VexFlowTests.makeFactory(options, 700, 130); + const stave = f.Stave({ x: 10, y: 10, width: 650 }); + function createNotes(noteBuilder, keys, stem_direction) { + return durationsForStemTest.map((duration) => createNoteForStemTest(duration, noteBuilder, keys, stem_direction)); + } + function createNoteBlock(keys, stem_direction) { + const staveNotes = createNotes(f.StaveNote.bind(f), keys, stem_direction); + const gracenotes = createNotes(f.GraceNote.bind(f), keys, stem_direction); + staveNotes[0].addModifier(f.GraceNoteGroup({ notes: gracenotes }), 0); + return staveNotes; + } + const voice = f.Voice().setStrict(false); + voice.addTickables(createNoteBlock(['g/4'], 1)); + voice.addTickables(createNoteBlock(['d/5'], -1)); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'GraceNoteStem'); +} +function stemWithBeamed(options) { + const f = VexFlowTests.makeFactory(options, 700, 130); + const stave = f.Stave({ x: 10, y: 10, width: 650 }); + function createBeamedNotes(noteBuilder, keys, stem_direction, beams, isGrace = false, notesToBeam) { + const ret = []; + durationsForStemTest.map((duration) => { + const n0 = createNoteForStemTest(duration, noteBuilder, keys, stem_direction); + const n1 = createNoteForStemTest(duration, noteBuilder, keys, stem_direction); + ret.push(n0); + ret.push(n1); + if (notesToBeam) { + notesToBeam.push([n0, n1]); + } + if (!isGrace) { + beams.push(f.Beam({ notes: [n0, n1] })); + } + }); + return ret; + } + function createBeamedNoteBlock(keys, stem_direction, beams) { + const bnotes = createBeamedNotes(f.StaveNote.bind(f), keys, stem_direction, beams); + const notesToBeam = []; + const gracenotes = createBeamedNotes(f.GraceNote.bind(f), keys, stem_direction, beams, true, notesToBeam); + const graceNoteGroup = f.GraceNoteGroup({ notes: gracenotes }); + notesToBeam.map(graceNoteGroup.beamNotes.bind(graceNoteGroup)); + bnotes[0].addModifier(graceNoteGroup, 0); + return bnotes; + } + const beams = []; + const voice = f.Voice().setStrict(false); + voice.addTickables(createBeamedNoteBlock(options.params.keys1, options.params.stemDirection1, beams)); + voice.addTickables(createBeamedNoteBlock(options.params.keys2, options.params.stemDirection2, beams)); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'GraceNoteStem'); +} +function slash(options) { + const f = VexFlowTests.makeFactory(options, 700, 130); + const stave = f.Stave({ x: 10, y: 10, width: 650 }); + function createNotes(noteT, keys, stem_direction, slash) { + return durationsForStemTest.map((d) => createNoteForStemTest(d, noteT, keys, stem_direction, slash)); + } + function createNoteBlock(keys, stem_direction) { + const notes = [f.StaveNote({ keys: ['f/4'], stem_direction, duration: '16' })]; + let graceNotes = createNotes(f.GraceNote.bind(f), keys, stem_direction, true); + const duration = '8'; + const gns = [ + { keys: ['d/4', 'a/4'], stem_direction, duration, slash: true }, + { keys: ['d/4', 'a/4'], stem_direction, duration, slash: true }, + { keys: ['d/4', 'a/4'], stem_direction, duration, slash: true }, + { keys: ['e/4', 'a/4'], stem_direction, duration, slash: true }, + { keys: ['e/4', 'a/4'], stem_direction, duration, slash: true }, + { keys: ['b/4', 'f/5'], stem_direction, duration, slash: true }, + { keys: ['b/4', 'f/5'], stem_direction, duration, slash: true }, + { keys: ['b/4', 'f/5'], stem_direction, duration, slash: true }, + { keys: ['e/4', 'a/4'], stem_direction, duration, slash: true }, + ].map(f.GraceNote.bind(f)); + const notesToBeam = []; + notesToBeam.push([gns[0], gns[1], gns[2]]); + notesToBeam.push([gns[3], gns[4], gns[5]]); + notesToBeam.push([gns[6], gns[7], gns[8]]); + graceNotes = graceNotes.concat(gns); + const graceNoteGroup = f.GraceNoteGroup({ notes: graceNotes }); + notesToBeam.forEach((notes) => graceNoteGroup.beamNotes(notes)); + notes[0].addModifier(graceNoteGroup, 0); + return notes; + } + const voice = f.Voice().setStrict(false); + voice.addTickables(createNoteBlock(['d/4', 'a/4'], 1)); + voice.addTickables(createNoteBlock(['d/4', 'a/4'], -1)); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'GraceNoteSlash'); +} +function slashWithBeams(options) { + const f = VexFlowTests.makeFactory(options, 800, 130); + const stave = f.Stave({ x: 10, y: 10, width: 750 }); + function createNoteBlock(keys, stem_direction) { + const notes = [f.StaveNote({ keys: ['f/4'], stem_direction, duration: '16' })]; + let allGraceNotes = []; + const graceNotesToBeam = []; + ['8', '16', '32', '64'].forEach(function (duration) { + const graceNotes = [ + { keys: ['d/4', 'a/4'], stem_direction, duration, slash: true }, + { keys: ['d/4', 'a/4'], stem_direction, duration, slash: false }, + { keys: ['e/4', 'a/4'], stem_direction, duration, slash: true }, + { keys: ['b/4', 'f/5'], stem_direction, duration, slash: false }, + { keys: ['b/4', 'f/5'], stem_direction, duration, slash: true }, + { keys: ['e/4', 'a/4'], stem_direction, duration, slash: false }, + ].map(f.GraceNote.bind(f)); + graceNotesToBeam.push([graceNotes[0], graceNotes[1]]); + graceNotesToBeam.push([graceNotes[2], graceNotes[3]]); + graceNotesToBeam.push([graceNotes[4], graceNotes[5]]); + allGraceNotes = allGraceNotes.concat(graceNotes); + }); + const graceNoteGroup = f.GraceNoteGroup({ notes: allGraceNotes }); + graceNotesToBeam.forEach((g) => graceNoteGroup.beamNotes(g)); + notes[0].addModifier(graceNoteGroup, 0); + return notes; + } + const voice = f.Voice().setStrict(false); + voice.addTickables(createNoteBlock(['d/4', 'a/4'], 1)); + voice.addTickables(createNoteBlock(['d/4', 'a/4'], -1)); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'GraceNoteSlashWithBeams'); +} +function multipleVoices(options) { + const f = VexFlowTests.makeFactory(options, 450, 140); + const stave = f.Stave({ x: 10, y: 10, width: 450 }); + const notes = [ + { keys: ['f/5'], stem_direction: 1, duration: '16' }, + { keys: ['f/5'], stem_direction: 1, duration: '16' }, + { keys: ['d/5'], stem_direction: 1, duration: '16' }, + { keys: ['c/5'], stem_direction: 1, duration: '16' }, + { keys: ['c/5'], stem_direction: 1, duration: '16' }, + { keys: ['d/5'], stem_direction: 1, duration: '16' }, + { keys: ['f/5'], stem_direction: 1, duration: '16' }, + { keys: ['e/5'], stem_direction: 1, duration: '16' }, + ].map(f.StaveNote.bind(f)); + const notes2 = [ + { keys: ['f/4'], stem_direction: -1, duration: '16' }, + { keys: ['e/4'], stem_direction: -1, duration: '16' }, + { keys: ['d/4'], stem_direction: -1, duration: '16' }, + { keys: ['c/4'], stem_direction: -1, duration: '16' }, + { keys: ['c/4'], stem_direction: -1, duration: '16' }, + { keys: ['d/4'], stem_direction: -1, duration: '16' }, + { keys: ['f/4'], stem_direction: -1, duration: '16' }, + { keys: ['e/4'], stem_direction: -1, duration: '16' }, + ].map(f.StaveNote.bind(f)); + const gracenotes1 = [{ keys: ['b/4'], stem_direction: 1, duration: '8', slash: true }].map(f.GraceNote.bind(f)); + const gracenotes2 = [{ keys: ['f/4'], stem_direction: -1, duration: '8', slash: true }].map(f.GraceNote.bind(f)); + const gracenotes3 = [ + { keys: ['f/4'], duration: '32', stem_direction: -1 }, + { keys: ['e/4'], duration: '32', stem_direction: -1 }, + ].map(f.GraceNote.bind(f)); + const gracenotes4 = [ + { keys: ['f/5'], duration: '32', stem_direction: 1 }, + { keys: ['e/5'], duration: '32', stem_direction: 1 }, + { keys: ['e/5'], duration: '8', stem_direction: 1 }, + ].map(f.GraceNote.bind(f)); + gracenotes2[0].setStemDirection(-1); + gracenotes2[0].addModifier(f.Accidental({ type: '#' }), 0); + notes[1].addModifier(f.GraceNoteGroup({ notes: gracenotes4 }).beamNotes(), 0); + notes[3].addModifier(f.GraceNoteGroup({ notes: gracenotes1 }), 0); + notes2[1].addModifier(f.GraceNoteGroup({ notes: gracenotes2 }).beamNotes(), 0); + notes2[5].addModifier(f.GraceNoteGroup({ notes: gracenotes3 }).beamNotes(), 0); + const voice = f.Voice().setStrict(false).addTickables(notes); + const voice2 = f.Voice().setStrict(false).addTickables(notes2); + f.Beam({ notes: notes.slice(0, 4) }); + f.Beam({ notes: notes.slice(4, 8) }); + f.Beam({ notes: notes2.slice(0, 4) }); + f.Beam({ notes: notes2.slice(4, 8) }); + f.Formatter().joinVoices([voice, voice2]).formatToStave([voice, voice2], stave); + f.draw(); + ok(true, 'Sixteenth Test'); +} +function multipleVoicesMultipleDraws(options) { + const f = VexFlowTests.makeFactory(options, 450, 140); + const stave = f.Stave({ x: 10, y: 10, width: 450 }); + const notes = [ + { keys: ['f/5'], stem_direction: 1, duration: '16' }, + { keys: ['f/5'], stem_direction: 1, duration: '16' }, + { keys: ['d/5'], stem_direction: 1, duration: '16' }, + { keys: ['c/5'], stem_direction: 1, duration: '16' }, + { keys: ['c/5'], stem_direction: 1, duration: '16' }, + { keys: ['d/5'], stem_direction: 1, duration: '16' }, + { keys: ['f/5'], stem_direction: 1, duration: '16' }, + { keys: ['e/5'], stem_direction: 1, duration: '16' }, + ].map(f.StaveNote.bind(f)); + const notes2 = [ + { keys: ['f/4'], stem_direction: -1, duration: '16' }, + { keys: ['e/4'], stem_direction: -1, duration: '16' }, + { keys: ['d/4'], stem_direction: -1, duration: '16' }, + { keys: ['c/4'], stem_direction: -1, duration: '16' }, + { keys: ['c/4'], stem_direction: -1, duration: '16' }, + { keys: ['d/4'], stem_direction: -1, duration: '16' }, + { keys: ['f/4'], stem_direction: -1, duration: '16' }, + { keys: ['e/4'], stem_direction: -1, duration: '16' }, + ].map(f.StaveNote.bind(f)); + const gracenotes1 = [{ keys: ['b/4'], stem_direction: 1, duration: '8', slash: true }].map(f.GraceNote.bind(f)); + const gracenotes2 = [{ keys: ['f/4'], stem_direction: -1, duration: '8', slash: true }].map(f.GraceNote.bind(f)); + const gracenotes3 = [ + { keys: ['f/4'], duration: '32', stem_direction: -1 }, + { keys: ['e/4'], duration: '32', stem_direction: -1 }, + ].map(f.GraceNote.bind(f)); + const gracenotes4 = [ + { keys: ['f/5'], duration: '32', stem_direction: 1 }, + { keys: ['e/5'], duration: '32', stem_direction: 1 }, + { keys: ['e/5'], duration: '8', stem_direction: 1 }, + ].map(f.GraceNote.bind(f)); + gracenotes2[0].setStemDirection(-1); + gracenotes2[0].addModifier(f.Accidental({ type: '#' }), 0); + notes[1].addModifier(f.GraceNoteGroup({ notes: gracenotes4 }).beamNotes(), 0); + notes[3].addModifier(f.GraceNoteGroup({ notes: gracenotes1 }), 0); + notes2[1].addModifier(f.GraceNoteGroup({ notes: gracenotes2 }).beamNotes(), 0); + notes2[5].addModifier(f.GraceNoteGroup({ notes: gracenotes3 }).beamNotes(), 0); + const voice = f.Voice().setStrict(false).addTickables(notes); + const voice2 = f.Voice().setStrict(false).addTickables(notes2); + f.Beam({ notes: notes.slice(0, 4) }); + f.Beam({ notes: notes.slice(4, 8) }); + f.Beam({ notes: notes2.slice(0, 4) }); + f.Beam({ notes: notes2.slice(4, 8) }); + f.Formatter().joinVoices([voice, voice2]).formatToStave([voice, voice2], stave); + f.draw(); + f.draw(); + ok(true, 'Seventeenth Test'); +} +VexFlowTests.register(GraceNoteTests); +export { GraceNoteTests }; diff --git a/build/esm/tests/gracetabnote_tests.js b/build/esm/tests/gracetabnote_tests.js new file mode 100644 index 0000000000..d1f8c40e55 --- /dev/null +++ b/build/esm/tests/gracetabnote_tests.js @@ -0,0 +1,79 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Flow } from '../src/flow.js'; +import { Formatter } from '../src/formatter.js'; +import { GraceNoteGroup } from '../src/gracenotegroup.js'; +import { GraceTabNote } from '../src/gracetabnote.js'; +import { TabNote } from '../src/tabnote.js'; +import { TabStave } from '../src/tabstave.js'; +import { Voice } from '../src/voice.js'; +const GraceTabNoteTests = { + Start() { + QUnit.module('Grace Tab Notes'); + const run = VexFlowTests.runTests; + run('Grace Tab Note Simple', simple); + run('Grace Tab Note Slurred', slurred); + }, +}; +const tabNote = (noteStruct) => new TabNote(noteStruct); +const graceTabNote = (noteStruct) => new GraceTabNote(noteStruct); +function setupContext(opts, ctxBuilder) { + const context = ctxBuilder(opts.elementId, 350, 140); + const stave = new TabStave(10, 10, 350).addTabGlyph().setContext(context).draw(); + return { context, stave }; +} +function simple(options, contextBuilder) { + const { context, stave } = setupContext(options, contextBuilder); + const note0 = tabNote({ positions: [{ str: 4, fret: 6 }], duration: '4' }); + const note1 = tabNote({ positions: [{ str: 4, fret: 12 }], duration: '4' }); + const note2 = tabNote({ positions: [{ str: 4, fret: 10 }], duration: '4' }); + const note3 = tabNote({ positions: [{ str: 4, fret: 10 }], duration: '4' }); + const gracenote_group0 = [{ positions: [{ str: 4, fret: 'x' }], duration: '8' }]; + const gracenote_group1 = [ + { positions: [{ str: 4, fret: 9 }], duration: '16' }, + { positions: [{ str: 4, fret: 10 }], duration: '16' }, + ]; + const gracenote_group2 = [{ positions: [{ str: 4, fret: 9 }], duration: '8' }]; + const gracenote_group3 = [ + { positions: [{ str: 5, fret: 10 }], duration: '8' }, + { positions: [{ str: 4, fret: 9 }], duration: '8' }, + ]; + const gracenotes0 = gracenote_group0.map(graceTabNote); + const gracenotes1 = gracenote_group1.map(graceTabNote); + const gracenotes2 = gracenote_group2.map(graceTabNote); + gracenotes2[0].setGhost(true); + const gracenotes3 = gracenote_group3.map(graceTabNote); + note0.addModifier(new GraceNoteGroup(gracenotes0), 0); + note1.addModifier(new GraceNoteGroup(gracenotes1), 0); + note2.addModifier(new GraceNoteGroup(gracenotes2), 0); + note3.addModifier(new GraceNoteGroup(gracenotes3), 0); + const voice = new Voice(Flow.TIME4_4); + voice.addTickables([note0, note1, note2, note3]); + new Formatter().joinVoices([voice]).format([voice], 250); + voice.draw(context, stave); + ok(true, 'Simple Test'); +} +function slurred(options, contextBuilder) { + const { context, stave } = setupContext(options, contextBuilder); + const note0 = tabNote({ positions: [{ str: 4, fret: 12 }], duration: 'h' }); + const note1 = tabNote({ positions: [{ str: 4, fret: 10 }], duration: 'h' }); + const gracenote_group0 = [ + { positions: [{ str: 4, fret: 9 }], duration: '8' }, + { positions: [{ str: 4, fret: 10 }], duration: '8' }, + ]; + const gracenote_group1 = [ + { positions: [{ str: 4, fret: 7 }], duration: '16' }, + { positions: [{ str: 4, fret: 8 }], duration: '16' }, + { positions: [{ str: 4, fret: 9 }], duration: '16' }, + ]; + const gracenotes0 = gracenote_group0.map(graceTabNote); + const gracenotes1 = gracenote_group1.map(graceTabNote); + note0.addModifier(new GraceNoteGroup(gracenotes0, true), 0); + note1.addModifier(new GraceNoteGroup(gracenotes1, true), 0); + const voice = new Voice(Flow.TIME4_4); + voice.addTickables([note0, note1]); + new Formatter().joinVoices([voice]).format([voice], 200); + voice.draw(context, stave); + ok(true, 'Slurred Test'); +} +VexFlowTests.register(GraceTabNoteTests); +export { GraceTabNoteTests }; diff --git a/build/esm/tests/index.js b/build/esm/tests/index.js new file mode 100644 index 0000000000..20aff4b3cf --- /dev/null +++ b/build/esm/tests/index.js @@ -0,0 +1,68 @@ +export * from './accidental_tests.js'; +export * from './annotation_tests.js'; +export * from './articulation_tests.js'; +export * from './auto_beam_formatting_tests.js'; +export * from './bach_tests.js'; +export * from './barline_tests.js'; +export * from './beam_tests.js'; +export * from './bend_tests.js'; +export * from './boundingbox_tests.js'; +export * from './boundingboxcomputation_tests.js'; +export * from './chordsymbol_tests.js'; +export * from './clef_tests.js'; +export * from './curve_tests.js'; +export * from './dot_tests.js'; +export * from './easyscore_tests.js'; +export * from './factory_tests.js'; +export * from './font_tests.js'; +export * from './formatter_tests.js'; +export * from './fraction_tests.js'; +export * from './ghostnote_tests.js'; +export * from './glyphnote_tests.js'; +export * from './gracenote_tests.js'; +export * from './gracetabnote_tests.js'; +export * from './key_clef_tests.js'; +export * from './keymanager_tests.js'; +export * from './keysignature_tests.js'; +export * from './modifier_tests.js'; +export * from './multimeasurerest_tests.js'; +export * from './music_tests.js'; +export * from './notehead_tests.js'; +export * from './notesubgroup_tests.js'; +export * from './offscreencanvas_tests.js'; +export * from './ornament_tests.js'; +export * from './parser_tests.js'; +export * from './pedalmarking_tests.js'; +export * from './percussion_tests.js'; +export * from './registry_tests.js'; +export * from './renderer_tests.js'; +export * from './rests_tests.js'; +export * from './rhythm_tests.js'; +export * from './stave_tests.js'; +export * from './staveconnector_tests.js'; +export * from './stavehairpin_tests.js'; +export * from './staveline_tests.js'; +export * from './stavemodifier_tests.js'; +export * from './stavenote_tests.js'; +export * from './stavetie_tests.js'; +export * from './stringnumber_tests.js'; +export * from './strokes_tests.js'; +export * from './style_tests.js'; +export * from './tabnote_tests.js'; +export * from './tabslide_tests.js'; +export * from './tabstave_tests.js'; +export * from './tabtie_tests.js'; +export * from './textbracket_tests.js'; +export * from './textformatter_tests.js'; +export * from './textnote_tests.js'; +export * from './threevoice_tests.js'; +export * from './tickcontext_tests.js'; +export * from './timesignature_tests.js'; +export * from './tremolo_tests.js'; +export * from './tuning_tests.js'; +export * from './tuplet_tests.js'; +export * from './typeguard_tests.js'; +export * from './vf_prefix_tests.js'; +export * from './vibrato_tests.js'; +export * from './vibratobracket_tests.js'; +export * from './voice_tests.js'; diff --git a/build/esm/tests/key_clef_tests.js b/build/esm/tests/key_clef_tests.js new file mode 100644 index 0000000000..7e7c0756f9 --- /dev/null +++ b/build/esm/tests/key_clef_tests.js @@ -0,0 +1,103 @@ +import { MAJOR_KEYS, MINOR_KEYS, VexFlowTests } from './vexflow_test_helpers.js'; +import { Glyph } from '../src/glyph.js'; +import { KeySignature } from '../src/keysignature.js'; +import { Stave } from '../src/stave.js'; +const ClefKeySignatureTests = { + Start() { + QUnit.module('Clef Keys'); + const run = VexFlowTests.runTests; + run('Major Key Clef Test', keys, { majorKeys: true }); + run('Minor Key Clef Test', keys, { majorKeys: false }); + run('Stave Helper', staveHelper); + }, +}; +const fontWidths = () => { + const glyphScale = 39; + const sharpWidth = Glyph.getWidth('accidentalSharp', glyphScale) + 1; + const flatWidth = Glyph.getWidth('accidentalFlat', glyphScale) + 1; + const ksPadding = 10; + const naturalWidth = Glyph.getWidth('accidentalNatural', glyphScale) + 2; + const clefWidth = Glyph.getWidth('gClef', glyphScale); + return { sharpWidth, flatWidth, naturalWidth, clefWidth, ksPadding }; +}; +function keys(options, contextBuilder) { + const w = fontWidths(); + const accidentalCount = 28; + const sharpTestWidth = accidentalCount * w.sharpWidth + w.clefWidth + Stave.defaultPadding + 6 * w.ksPadding; + const flatTestWidth = accidentalCount * w.flatWidth + w.clefWidth + Stave.defaultPadding + 6 * w.ksPadding; + const clefs = [ + 'treble', + 'soprano', + 'mezzo-soprano', + 'alto', + 'tenor', + 'baritone-f', + 'baritone-c', + 'bass', + 'french', + 'subbass', + 'percussion', + ]; + const ctx = contextBuilder(options.elementId, Math.max(sharpTestWidth, flatTestWidth) + 100, 20 + 80 * 2 * clefs.length); + const staves = []; + const keys = options.params.majorKeys ? MAJOR_KEYS : MINOR_KEYS; + let i; + let flat; + let sharp; + let keySig; + const yOffsetForFlatStaves = 10 + 80 * clefs.length; + for (i = 0; i < clefs.length; i++) { + staves[i] = new Stave(10, 10 + 80 * i, flatTestWidth); + staves[i].addClef(clefs[i]); + staves[i + clefs.length] = new Stave(10, yOffsetForFlatStaves + 10 + 80 * i, sharpTestWidth); + staves[i + clefs.length].addClef(clefs[i]); + for (flat = 0; flat < 8; flat++) { + keySig = new KeySignature(keys[flat]); + keySig.addToStave(staves[i]); + } + for (sharp = 8; sharp < keys.length; sharp++) { + keySig = new KeySignature(keys[sharp]); + keySig.addToStave(staves[i + clefs.length]); + } + staves[i].setContext(ctx); + staves[i].draw(); + staves[i + clefs.length].setContext(ctx); + staves[i + clefs.length].draw(); + } + ok(true, 'all pass'); +} +function staveHelper(options, contextBuilder) { + const w = fontWidths(); + const accidentalCount = 28; + const sharpTestWidth = accidentalCount * w.sharpWidth + w.clefWidth + Stave.defaultPadding + 7 * w.ksPadding; + const flatTestWidth = accidentalCount * w.flatWidth + w.clefWidth + Stave.defaultPadding + 7 * w.ksPadding; + const ctx = contextBuilder(options.elementId, Math.max(sharpTestWidth, flatTestWidth) + 100, 400); + const stave1 = new Stave(10, 10, flatTestWidth); + const stave2 = new Stave(10, 90, flatTestWidth); + const stave3 = new Stave(10, 170, sharpTestWidth); + const stave4 = new Stave(10, 260, sharpTestWidth); + const keys = MAJOR_KEYS; + stave1.addClef('treble'); + stave2.addClef('bass'); + stave3.addClef('alto'); + stave4.addClef('tenor'); + for (let n = 0; n < 8; ++n) { + stave1.addKeySignature(keys[n]); + stave2.addKeySignature(keys[n]); + } + for (let i = 8; i < keys.length; ++i) { + stave3.addKeySignature(keys[i]); + stave4.addKeySignature(keys[i]); + } + stave1.setContext(ctx); + stave1.draw(); + stave2.setContext(ctx); + stave2.draw(); + stave3.setContext(ctx); + stave3.draw(); + stave4.setContext(ctx); + stave4.draw(); + ok(true, 'all pass'); +} +VexFlowTests.register(ClefKeySignatureTests); +export { ClefKeySignatureTests }; diff --git a/build/esm/tests/keymanager_tests.js b/build/esm/tests/keymanager_tests.js new file mode 100644 index 0000000000..6cc5f7a1b4 --- /dev/null +++ b/build/esm/tests/keymanager_tests.js @@ -0,0 +1,68 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { KeyManager } from '../src/index.js'; +const KeyManagerTests = { + Start() { + QUnit.module('KeyManager'); + test('Valid Notes', works); + test('Select Notes', selectNotes); + }, +}; +function works() { + const manager = new KeyManager('g'); + equal(manager.getAccidental('f').accidental, '#'); + manager.setKey('a'); + equal(manager.getAccidental('c').accidental, '#'); + equal(manager.getAccidental('a').accidental, null); + equal(manager.getAccidental('f').accidental, '#'); + manager.setKey('A'); + equal(manager.getAccidental('c').accidental, '#'); + equal(manager.getAccidental('a').accidental, null); + equal(manager.getAccidental('f').accidental, '#'); +} +function selectNotes() { + const manager = new KeyManager('f'); + equal(manager.selectNote('bb').note, 'bb'); + equal(manager.selectNote('bb').accidental, 'b'); + equal(manager.selectNote('g').note, 'g'); + equal(manager.selectNote('g').accidental, null); + equal(manager.selectNote('b').note, 'b'); + equal(manager.selectNote('b').accidental, null); + equal(manager.selectNote('a#').note, 'bb'); + equal(manager.selectNote('g#').note, 'g#'); + equal(manager.selectNote('g#').note, 'g#'); + equal(manager.selectNote('bb').note, 'bb'); + equal(manager.selectNote('bb').accidental, 'b'); + equal(manager.selectNote('g').note, 'g'); + equal(manager.selectNote('g').accidental, null); + equal(manager.selectNote('b').note, 'b'); + equal(manager.selectNote('b').accidental, null); + equal(manager.selectNote('a#').note, 'bb'); + equal(manager.selectNote('g#').note, 'g#'); + manager.reset(); + equal(manager.selectNote('g#').change, true); + equal(manager.selectNote('g#').change, false); + equal(manager.selectNote('g').change, true); + equal(manager.selectNote('g').change, false); + equal(manager.selectNote('g#').change, true); + manager.reset(); + let note = manager.selectNote('bb'); + equal(note.change, false); + equal(note.accidental, 'b'); + note = manager.selectNote('g'); + equal(note.change, false); + equal(note.accidental, null); + note = manager.selectNote('g#'); + equal(note.change, true); + equal(note.accidental, '#'); + note = manager.selectNote('g'); + equal(note.change, true); + equal(note.accidental, null); + note = manager.selectNote('g'); + equal(note.change, false); + equal(note.accidental, null); + note = manager.selectNote('g#'); + equal(note.change, true); + equal(note.accidental, '#'); +} +VexFlowTests.register(KeyManagerTests); +export { KeyManagerTests }; diff --git a/build/esm/tests/keysignature_tests.js b/build/esm/tests/keysignature_tests.js new file mode 100644 index 0000000000..e5c92135a0 --- /dev/null +++ b/build/esm/tests/keysignature_tests.js @@ -0,0 +1,308 @@ +import { MAJOR_KEYS, MINOR_KEYS, VexFlowTests } from './vexflow_test_helpers.js'; +import { Flow } from '../src/flow.js'; +import { Glyph } from '../src/glyph.js'; +import { KeySignature } from '../src/keysignature.js'; +import { Stave } from '../src/stave.js'; +import { BarlineType } from '../src/stavebarline.js'; +const KeySignatureTests = { + Start() { + QUnit.module('KeySignature'); + test('Key Parser Test', parser); + const run = VexFlowTests.runTests; + run('Major Key Test', majorKeys); + run('Minor Key Test', minorKeys); + run('Stave Helper', staveHelper); + run('Cancelled key test', majorKeysCanceled); + run('Cancelled key (for each clef) test', keysCanceledForEachClef); + run('Altered key test', majorKeysAltered); + run('End key with clef test', endKeyWithClef); + run('Key Signature Change test', changeKey); + }, +}; +const fontWidths = () => { + const glyphScale = 39; + const sharpWidth = Glyph.getWidth('accidentalSharp', glyphScale) + 1; + const flatWidth = Glyph.getWidth('accidentalFlat', glyphScale) + 1; + const naturalWidth = Glyph.getWidth('accidentalNatural', glyphScale) + 2; + const clefWidth = Glyph.getWidth('gClef', glyphScale) * 2; + return { sharpWidth, flatWidth, naturalWidth, clefWidth }; +}; +function parser() { + expect(11); + function catchError(spec) { + throws(() => Flow.keySignature(spec), /BadKeySignature/); + } + catchError('asdf'); + catchError('D!'); + catchError('E#'); + catchError('D#'); + catchError('#'); + catchError('b'); + catchError('Kb'); + catchError('Fb'); + catchError('Dbm'); + catchError('B#m'); + Flow.keySignature('B'); + Flow.keySignature('C'); + Flow.keySignature('Fm'); + Flow.keySignature('Ab'); + Flow.keySignature('Abm'); + Flow.keySignature('F#'); + Flow.keySignature('G#m'); + ok(true, 'all pass'); +} +function majorKeys(options, contextBuilder) { + const w = fontWidths(); + const accidentalCount = 28; + const casePadding = 10; + const testCases = 7; + const sharpTestWidth = accidentalCount * w.sharpWidth + casePadding * testCases + Stave.defaultPadding; + const flatTestWidth = accidentalCount * w.flatWidth + casePadding * testCases + Stave.defaultPadding; + const ctx = contextBuilder(options.elementId, Math.max(sharpTestWidth, flatTestWidth) + 100, 240); + const stave1 = new Stave(10, 10, flatTestWidth); + const stave2 = new Stave(10, 90, sharpTestWidth); + const keys = MAJOR_KEYS; + let keySig = null; + for (let i = 0; i < 8; ++i) { + keySig = new KeySignature(keys[i]); + keySig.addToStave(stave1); + } + for (let n = 8; n < keys.length; ++n) { + keySig = new KeySignature(keys[n]); + keySig.addToStave(stave2); + } + stave1.setContext(ctx); + stave1.draw(); + stave2.setContext(ctx); + stave2.draw(); + ok(true, 'all pass'); +} +function majorKeysCanceled(options, contextBuilder) { + const scale = 0.9; + const w = fontWidths(); + const flatPadding = 18; + const sharpPadding = 20; + const flatTestCases = 8; + const sharpTestCases = 7; + const sharpTestWidth = 28 * w.sharpWidth + 21 * w.naturalWidth + sharpPadding * sharpTestCases + Stave.defaultPadding + w.clefWidth; + const flatTestWidth = 28 * w.flatWidth + 28 * w.naturalWidth + flatPadding * flatTestCases + Stave.defaultPadding + w.clefWidth; + const eFlatTestWidth = 28 * w.flatWidth + 32 * w.naturalWidth + flatPadding * flatTestCases + Stave.defaultPadding + w.clefWidth; + const eSharpTestWidth = 28 * w.sharpWidth + 28 * w.naturalWidth + sharpPadding * sharpTestCases + Stave.defaultPadding + w.clefWidth; + const maxWidth = Math.max(Math.max(sharpTestWidth, flatTestWidth, Math.max(eSharpTestWidth, eFlatTestWidth))); + const ctx = contextBuilder(options.elementId, maxWidth + 100, 500); + ctx.scale(scale, scale); + const stave1 = new Stave(10, 10, flatTestWidth).addClef('treble'); + const stave2 = new Stave(10, 90, sharpTestWidth).addClef('treble'); + const stave3 = new Stave(10, 170, eFlatTestWidth).addClef('treble'); + const stave4 = new Stave(10, 250, eSharpTestWidth).addClef('treble'); + const keys = MAJOR_KEYS; + let keySig = null; + let i; + let n; + for (i = 0; i < 8; ++i) { + keySig = new KeySignature(keys[i]); + keySig.cancelKey('Cb'); + keySig.setPadding(flatPadding); + keySig.addToStave(stave1); + } + for (n = 8; n < keys.length; ++n) { + keySig = new KeySignature(keys[n]); + keySig.cancelKey('C#'); + keySig.setPadding(sharpPadding); + keySig.addToStave(stave2); + } + for (i = 0; i < 8; ++i) { + keySig = new KeySignature(keys[i]); + keySig.cancelKey('E'); + keySig.setPadding(flatPadding); + keySig.addToStave(stave3); + } + for (n = 8; n < keys.length; ++n) { + keySig = new KeySignature(keys[n]); + keySig.cancelKey('Ab'); + keySig.setPadding(sharpPadding); + keySig.addToStave(stave4); + } + stave1.setContext(ctx); + stave1.draw(); + stave2.setContext(ctx); + stave2.draw(); + stave3.setContext(ctx); + stave3.draw(); + stave4.setContext(ctx); + stave4.draw(); + ok(true, 'all pass'); +} +function keysCanceledForEachClef(options, contextBuilder) { + const scale = 0.8; + const w = fontWidths(); + const keyPadding = 10; + const keys = ['C#', 'Cb']; + const flatsKey = [7, 14]; + const sharpsKey = [14, 7]; + const natsKey = [7, 7]; + const max = 21 * Math.max(w.sharpWidth, w.flatWidth) * 2 + keyPadding * 6 + Stave.defaultPadding + w.clefWidth; + const ctx = contextBuilder(options.elementId, max + 100, 380); + ctx.scale(scale, scale); + const x = 20; + let y = 20; + let tx = x; + ['bass', 'tenor', 'soprano', 'mezzo-soprano', 'baritone-f'].forEach(function (clef) { + keys.forEach((key, keyIx) => { + const cancelKey = keys[(keyIx + 1) % 2]; + const width = flatsKey[keyIx] * w.flatWidth + + natsKey[keyIx] * w.naturalWidth + + sharpsKey[keyIx] * w.sharpWidth + + keyPadding * 3 + + w.clefWidth + + Stave.defaultPadding; + const stave = new Stave(tx, y, width); + stave.setClef(clef); + stave.addKeySignature(cancelKey); + stave.addKeySignature(key, cancelKey); + stave.addKeySignature(key); + stave.setContext(ctx).draw(); + tx += width; + }); + tx = x; + y += 80; + }); + ok(true, 'all pass'); +} +function majorKeysAltered(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 780, 500); + ctx.scale(0.9, 0.9); + const stave1 = new Stave(10, 10, 750).addClef('treble'); + const stave2 = new Stave(10, 90, 750).addClef('treble'); + const stave3 = new Stave(10, 170, 750).addClef('treble'); + const stave4 = new Stave(10, 250, 750).addClef('treble'); + const keys = MAJOR_KEYS; + let keySig = null; + let i; + let n; + for (i = 0; i < 8; ++i) { + keySig = new KeySignature(keys[i]); + keySig.alterKey(['bs', 'bs']); + keySig.setPadding(18); + keySig.addToStave(stave1); + } + for (n = 8; n < keys.length; ++n) { + keySig = new KeySignature(keys[n]); + keySig.alterKey(['+', '+', '+']); + keySig.setPadding(20); + keySig.addToStave(stave2); + } + for (i = 0; i < 8; ++i) { + keySig = new KeySignature(keys[i]); + keySig.alterKey(['n', 'bs', 'bb']); + keySig.setPadding(18); + keySig.addToStave(stave3); + } + for (n = 8; n < keys.length; ++n) { + keySig = new KeySignature(keys[n]); + keySig.alterKey(['++', '+', 'n', '+']); + keySig.setPadding(20); + keySig.addToStave(stave4); + } + stave1.setContext(ctx); + stave1.draw(); + stave2.setContext(ctx); + stave2.draw(); + stave3.setContext(ctx); + stave3.draw(); + stave4.setContext(ctx); + stave4.draw(); + ok(true, 'all pass'); +} +function minorKeys(options, contextBuilder) { + const accidentalCount = 28; + const w = fontWidths(); + const casePadding = 10; + const testCases = 7; + const sharpTestWidth = accidentalCount * w.sharpWidth + casePadding * testCases + Stave.defaultPadding; + const flatTestWidth = accidentalCount * w.flatWidth + casePadding * testCases + Stave.defaultPadding; + const ctx = contextBuilder(options.elementId, Math.max(sharpTestWidth, flatTestWidth) + 100, 240); + const stave1 = new Stave(10, 10, flatTestWidth); + const stave2 = new Stave(10, 90, sharpTestWidth); + const keys = MINOR_KEYS; + let keySig = null; + for (let i = 0; i < 8; ++i) { + keySig = new KeySignature(keys[i]); + keySig.addToStave(stave1); + } + for (let n = 8; n < keys.length; ++n) { + keySig = new KeySignature(keys[n]); + keySig.addToStave(stave2); + } + stave1.setContext(ctx); + stave1.draw(); + stave2.setContext(ctx); + stave2.draw(); + ok(true, 'all pass'); +} +function endKeyWithClef(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 200); + ctx.scale(0.9, 0.9); + const stave1 = new Stave(10, 10, 350); + stave1 + .setKeySignature('G') + .setBegBarType(BarlineType.REPEAT_BEGIN) + .setEndBarType(BarlineType.REPEAT_END) + .setClef('treble') + .addTimeSignature('4/4') + .setEndClef('bass') + .setEndKeySignature('Cb'); + const stave2 = new Stave(10, 90, 350); + stave2.setKeySignature('Cb').setClef('bass').setEndClef('treble').setEndKeySignature('G'); + stave1.setContext(ctx).draw(); + stave2.setContext(ctx).draw(); + ok(true, 'all pass'); +} +function staveHelper(options, contextBuilder) { + const w = fontWidths(); + const accidentalCount = 28; + const casePadding = 10; + const testCases = 7; + const sharpTestWidth = accidentalCount * w.sharpWidth + casePadding * testCases + Stave.defaultPadding; + const flatTestWidth = accidentalCount * w.flatWidth + casePadding * testCases + Stave.defaultPadding; + const ctx = contextBuilder(options.elementId, Math.max(sharpTestWidth, flatTestWidth) + 100, 240); + const stave1 = new Stave(10, 10, flatTestWidth); + const stave2 = new Stave(10, 90, sharpTestWidth); + const keys = MAJOR_KEYS; + for (let i = 0; i < 8; ++i) { + stave1.addKeySignature(keys[i]); + } + for (let n = 8; n < keys.length; ++n) { + stave2.addKeySignature(keys[n]); + } + stave1.setContext(ctx); + stave1.draw(); + stave2.setContext(ctx); + stave2.draw(); + ok(true, 'all pass'); +} +function changeKey(options) { + const f = VexFlowTests.makeFactory(options, 900); + const stave = f.Stave({ x: 10, y: 10, width: 800 }).addClef('treble').addTimeSignature('C|'); + const voice = f + .Voice() + .setStrict(false) + .addTickables([ + f.KeySigNote({ key: 'Bb' }), + f.StaveNote({ keys: ['c/4'], duration: '1' }), + f.BarNote(), + f.KeySigNote({ key: 'D', cancelKey: 'Bb' }), + f.StaveNote({ keys: ['c/4'], duration: '1' }), + f.BarNote(), + f.KeySigNote({ key: 'Bb' }), + f.StaveNote({ keys: ['c/4'], duration: '1' }), + f.BarNote(), + f.KeySigNote({ key: 'D', alterKey: ['b', 'n'] }), + f.StaveNote({ keys: ['c/4'], duration: '1' }), + ]); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'all pass'); +} +VexFlowTests.register(KeySignatureTests); +export { KeySignatureTests }; diff --git a/build/esm/tests/mocks.js b/build/esm/tests/mocks.js new file mode 100644 index 0000000000..64d6a6f680 --- /dev/null +++ b/build/esm/tests/mocks.js @@ -0,0 +1,71 @@ +import { Fraction } from '../src/fraction.js'; +import { Tickable } from '../src/tickable.js'; +class MockTickable extends Tickable { + constructor() { + super(...arguments); + this.ticks = new Fraction(1, 1); + this.width = 0; + this.ignore_ticks = false; + } + init() { + } + getX() { + return this.tickContext.getX(); + } + getIntrinsicTicks() { + return this.ticks.value(); + } + getTicks() { + return this.ticks; + } + setTicks(t) { + this.ticks = new Fraction(t, 1); + return this; + } + getMetrics() { + return { + width: 0, + glyphWidth: 0, + notePx: this.width, + modLeftPx: 0, + modRightPx: 0, + leftDisplacedHeadPx: 0, + rightDisplacedHeadPx: 0, + glyphPx: 0, + }; + } + getWidth() { + return this.width; + } + setWidth(w) { + this.width = w; + return this; + } + setVoice(v) { + this.voice = v; + return this; + } + setStave(stave) { + this.stave = stave; + return this; + } + getStave() { + return this.stave; + } + setTickContext(tc) { + this.tickContext = tc; + return this; + } + setIgnoreTicks(flag) { + this.ignore_ticks = flag; + return this; + } + shouldIgnoreTicks() { + return this.ignore_ticks; + } + preFormat() { + } + draw(...args) { + } +} +export { MockTickable }; diff --git a/build/esm/tests/modifier_tests.js b/build/esm/tests/modifier_tests.js new file mode 100644 index 0000000000..2b0c1a110d --- /dev/null +++ b/build/esm/tests/modifier_tests.js @@ -0,0 +1,24 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Modifier, ModifierContext } from '../src/index.js'; +const ModifierContextTests = { + Start() { + QUnit.module('ModifierContext'); + test('Modifier Width Test', width); + test('Modifier Management', management); + }, +}; +function width() { + const mc = new ModifierContext(); + equal(mc.getWidth(), 0, 'New modifier context has no width'); +} +function management() { + const mc = new ModifierContext(); + const modifier1 = new Modifier(); + const modifier2 = new Modifier(); + mc.addMember(modifier1); + mc.addMember(modifier2); + const modifiers = mc.getMembers(Modifier.CATEGORY); + equal(modifiers.length, 2, 'Added two modifiers'); +} +VexFlowTests.register(ModifierContextTests); +export { ModifierContextTests }; diff --git a/build/esm/tests/multimeasurerest_tests.js b/build/esm/tests/multimeasurerest_tests.js new file mode 100644 index 0000000000..aa3043562b --- /dev/null +++ b/build/esm/tests/multimeasurerest_tests.js @@ -0,0 +1,141 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Flow } from '../src/flow.js'; +import { Font } from '../src/font.js'; +const MultiMeasureRestTests = { + Start() { + QUnit.module('MultiMeasureRest'); + const run = VexFlowTests.runTests; + run('Simple Test', simple); + run('Stave with modifiers Test', staveWithModifiers); + }, +}; +function simple(options) { + const width = 910; + const f = VexFlowTests.makeFactory(options, width, 300); + const line_spacing_15px = { options: { spacing_between_lines_px: 15 } }; + const params = [ + [{}, { number_of_measures: 2, show_number: false }], + [{}, { number_of_measures: 2 }], + [{}, { number_of_measures: 2, line_thickness: 8, serif_thickness: 3 }], + [{}, { number_of_measures: 1, use_symbols: true }], + [{}, { number_of_measures: 2, use_symbols: true }], + [{}, { number_of_measures: 3, use_symbols: true }], + [{}, { number_of_measures: 4, use_symbols: true }], + [{}, { number_of_measures: 5, use_symbols: true }], + [{}, { number_of_measures: 6, use_symbols: true }], + [{}, { number_of_measures: 7, use_symbols: true }], + [{}, { number_of_measures: 8, use_symbols: true }], + [{}, { number_of_measures: 9, use_symbols: true }], + [{}, { number_of_measures: 10, use_symbols: true }], + [{}, { number_of_measures: 11, use_symbols: true }], + [{}, { number_of_measures: 11, use_symbols: false, padding_left: 20, padding_right: 20 }], + [{}, { number_of_measures: 11, use_symbols: true, symbol_spacing: 5 }], + [{}, { number_of_measures: 11, use_symbols: false, line: 3, number_line: 2 }], + [{}, { number_of_measures: 11, use_symbols: true, line: 3, number_line: 2 }], + [line_spacing_15px, { number_of_measures: 12 }], + [line_spacing_15px, { number_of_measures: 9, use_symbols: true }], + [line_spacing_15px, { number_of_measures: 12, spacing_between_lines_px: 15, number_glyph_point: 40 * 1.5 }], + [ + line_spacing_15px, + { + number_of_measures: 9, + spacing_between_lines_px: 15, + use_symbols: true, + number_glyph_point: 40 * 1.5, + }, + ], + [ + line_spacing_15px, + { + number_of_measures: 9, + spacing_between_lines_px: 15, + use_symbols: true, + number_glyph_point: 40 * 1.5, + semibreve_rest_glyph_scale: Flow.NOTATION_FONT_SCALE * 1.5, + }, + ], + ]; + const staveWidth = 100; + let x = 0; + let y = 0; + const mmRests = params.map((param) => { + if (x + staveWidth * 2 > width) { + x = 0; + y += 80; + } + const staveParams = param[0]; + const mmRestParams = param[1]; + staveParams.x = x; + staveParams.y = y; + staveParams.width = staveWidth; + x += staveWidth; + const stave = f.Stave(staveParams); + return f.MultiMeasureRest(mmRestParams).setStave(stave); + }); + f.draw(); + const xs = mmRests[0].getXs(); + const strY = mmRests[0].getStave().getYForLine(-0.5); + const str = 'TACET'; + const context = f.getContext(); + context.save(); + context.setFont(Font.SERIF, 16, 'bold'); + const metrics = context.measureText(str); + context.fillText(str, xs.left + (xs.right - xs.left) * 0.5 - metrics.width * 0.5, strY); + context.restore(); + ok(true, 'Simple Test'); +} +function staveWithModifiers(options) { + const width = 910; + const f = VexFlowTests.makeFactory(options, width, 200); + let x = 0; + let y = 0; + const params = [ + [{ clef: 'treble', params: { width: 150 } }, { number_of_measures: 5 }], + [{ clef: 'treble', keySig: 'G', params: { width: 150 } }, { number_of_measures: 5 }], + [{ clef: 'treble', timeSig: '4/4', keySig: 'G', params: { width: 150 } }, { number_of_measures: 5 }], + [{ clef: 'treble', endClef: 'bass', params: { width: 150 } }, { number_of_measures: 5 }], + [{ clef: 'treble', endKeySig: 'F', params: { width: 150 } }, { number_of_measures: 5 }], + [{ clef: 'treble', endTimeSig: '2/4', params: { width: 150 } }, { number_of_measures: 5 }], + [{ clef: 'treble', endClef: 'bass', endTimeSig: '2/4', params: { width: 150 } }, { number_of_measures: 5 }], + [ + { clef: 'treble', endClef: 'bass', endTimeSig: '2/4', params: { width: 150 } }, + { number_of_measures: 5, use_symbols: true }, + ], + ]; + params.forEach((param) => { + const staveOptions = param[0]; + const staveParams = staveOptions.params; + const mmrestParams = param[1]; + if (x + staveParams.width > width) { + x = 0; + y += 80; + } + staveParams.x = x; + x += staveParams.width; + staveParams.y = y; + const stave = f.Stave(staveParams); + if (staveOptions.clef) { + stave.addClef(staveOptions.clef); + } + if (staveOptions.timeSig) { + stave.addTimeSignature(staveOptions.timeSig); + } + if (staveOptions.keySig) { + stave.addKeySignature(staveOptions.keySig); + } + if (staveOptions.endClef) { + stave.addEndClef(staveOptions.endClef); + } + if (staveOptions.endKeySig) { + stave.setEndKeySignature(staveOptions.endKeySig); + } + if (staveOptions.endTimeSig) { + stave.setEndTimeSignature(staveOptions.endTimeSig); + } + return f.MultiMeasureRest(mmrestParams).setStave(stave); + }); + f.draw(); + ok(true, 'Stave with modifiers Test'); +} +VexFlowTests.register(MultiMeasureRestTests); +export { MultiMeasureRestTests }; diff --git a/build/esm/tests/music_tests.js b/build/esm/tests/music_tests.js new file mode 100644 index 0000000000..404d779b5b --- /dev/null +++ b/build/esm/tests/music_tests.js @@ -0,0 +1,161 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { KeyManager } from '../src/keymanager.js'; +import { Music } from '../src/music.js'; +const MusicTests = { + Start() { + QUnit.module('MusicTests'); + test('Valid Notes', validNotes); + test('Valid Keys', validKeys); + test('Note Values', noteValue); + test('Interval Values', intervalValue); + test('Relative Notes', relativeNotes); + test('Relative Note Names', relativeNoteNames); + test('Canonical Notes', canonicalNotes); + test('Canonical Intervals', canonicalIntervals); + test('Scale Tones', scaleTones); + test('Scale Intervals', scaleIntervals); + }, +}; +function validNotes() { + expect(10); + const music = new Music(); + let parts = music.getNoteParts('c'); + equal(parts.root, 'c'); + equal(parts.accidental, null); + parts = music.getNoteParts('C'); + equal(parts.root, 'c'); + equal(parts.accidental, null); + parts = music.getNoteParts('c#'); + equal(parts.root, 'c'); + equal(parts.accidental, '#'); + parts = music.getNoteParts('c##'); + equal(parts.root, 'c'); + equal(parts.accidental, '##'); + throws(() => music.getNoteParts('r'), /BadArguments/, 'Invalid note: r'); + throws(() => music.getNoteParts(''), /BadArguments/, "Invalid note: ''"); +} +function validKeys() { + expect(18); + const music = new Music(); + let parts = music.getKeyParts('c'); + equal(parts.root, 'c'); + equal(parts.accidental, null); + equal(parts.type, 'M'); + parts = music.getKeyParts('d#'); + equal(parts.root, 'd'); + equal(parts.accidental, '#'); + equal(parts.type, 'M'); + parts = music.getKeyParts('fbm'); + equal(parts.root, 'f'); + equal(parts.accidental, 'b'); + equal(parts.type, 'm'); + parts = music.getKeyParts('c#mel'); + equal(parts.root, 'c'); + equal(parts.accidental, '#'); + equal(parts.type, 'mel'); + parts = music.getKeyParts('g#harm'); + equal(parts.root, 'g'); + equal(parts.accidental, '#'); + equal(parts.type, 'harm'); + throws(() => music.getKeyParts('r'), /BadArguments/, 'Invalid key: r'); + throws(() => music.getKeyParts(''), /BadArguments/, `Invalid key: ''`); + throws(() => music.getKeyParts('#m'), /BadArguments/, 'Invalid key: #m'); +} +function noteValue() { + expect(3); + const music = new Music(); + let note = music.getNoteValue('c'); + equal(note, 0); + throws(() => music.getNoteValue('r'), /BadArguments/, 'Invalid note name'); + note = music.getNoteValue('f#'); + equal(note, 6); +} +function intervalValue() { + expect(2); + const music = new Music(); + const value = music.getIntervalValue('b2'); + equal(value, 1); + throws(() => music.getIntervalValue('7'), /BadArguments/, 'Invalid interval name'); +} +function relativeNotes() { + expect(8); + const music = new Music(); + let value = music.getRelativeNoteValue(music.getNoteValue('c'), music.getIntervalValue('b5')); + equal(value, 6); + throws(() => music.getRelativeNoteValue(music.getNoteValue('bc'), music.getIntervalValue('b2')), /BadArguments/, 'Invalid note'); + throws(() => music.getRelativeNoteValue(music.getNoteValue('b'), music.getIntervalValue('p3')), /BadArguments/, 'Invalid interval'); + value = music.getRelativeNoteValue(music.getNoteValue('d'), music.getIntervalValue('2'), -1); + equal(value, 0); + throws(() => music.getRelativeNoteValue(music.getNoteValue('b'), music.getIntervalValue('p4'), 0), /BadArguments/, 'Invalid direction: 0'); + value = music.getRelativeNoteValue(music.getNoteValue('b'), music.getIntervalValue('b5')); + equal(value, 5); + value = music.getRelativeNoteValue(music.getNoteValue('c'), music.getIntervalValue('b2'), -1); + equal(value, 11); + value = music.getRelativeNoteValue(music.getNoteValue('g'), music.getIntervalValue('p5')); + equal(value, 2); +} +function relativeNoteNames() { + expect(9); + const music = new Music(); + equal(music.getRelativeNoteName('b', music.getNoteValue('c#')), 'b##'); + equal(music.getRelativeNoteName('c', music.getNoteValue('c')), 'c'); + equal(music.getRelativeNoteName('c', music.getNoteValue('db')), 'c#'); + equal(music.getRelativeNoteName('c', music.getNoteValue('b')), 'cb'); + equal(music.getRelativeNoteName('c#', music.getNoteValue('db')), 'c#'); + equal(music.getRelativeNoteName('e', music.getNoteValue('f#')), 'e##'); + equal(music.getRelativeNoteName('e', music.getNoteValue('d#')), 'eb'); + equal(music.getRelativeNoteName('e', music.getNoteValue('fb')), 'e'); + throws(() => music.getRelativeNoteName('e', music.getNoteValue('g#')), /BadArguments/, 'Too far away. Notes not related.'); +} +function canonicalNotes() { + expect(3); + const music = new Music(); + equal(music.getCanonicalNoteName(0), 'c'); + equal(music.getCanonicalNoteName(2), 'd'); + throws(() => music.getCanonicalNoteName(-1), /BadArguments/, 'Invalid note value'); +} +function canonicalIntervals() { + expect(3); + const music = new Music(); + equal(music.getCanonicalIntervalName(0), 'unison'); + equal(music.getCanonicalIntervalName(2), 'M2'); + throws(() => music.getCanonicalIntervalName(-1), /BadArguments/, 'Invalid interval value'); +} +function scaleTones() { + expect(24); + const music = new Music(); + const manager = new KeyManager('CM'); + const c_major = music.getScaleTones(music.getNoteValue('c'), Music.scales.major); + let values = ['c', 'd', 'e', 'f', 'g', 'a', 'b']; + equal(c_major.length, 7); + for (let i = 0; i < c_major.length; ++i) { + equal(music.getCanonicalNoteName(c_major[i]), values[i]); + } + const c_dorian = music.getScaleTones(music.getNoteValue('c'), Music.scales.dorian); + values = ['c', 'd', 'eb', 'f', 'g', 'a', 'bb']; + let note = null; + equal(c_dorian.length, 7); + for (let i = 0; i < c_dorian.length; ++i) { + note = music.getCanonicalNoteName(c_dorian[i]); + equal(manager.selectNote(note).note, values[i]); + } + const c_mixolydian = music.getScaleTones(music.getNoteValue('c'), Music.scales.mixolydian); + values = ['c', 'd', 'e', 'f', 'g', 'a', 'bb']; + equal(c_mixolydian.length, 7); + for (let i = 0; i < c_mixolydian.length; ++i) { + note = music.getCanonicalNoteName(c_mixolydian[i]); + equal(manager.selectNote(note).note, values[i]); + } +} +function scaleIntervals() { + expect(6); + const m = new Music(); + equal(m.getCanonicalIntervalName(m.getIntervalBetween(m.getNoteValue('c'), m.getNoteValue('d'))), 'M2'); + equal(m.getCanonicalIntervalName(m.getIntervalBetween(m.getNoteValue('g'), m.getNoteValue('c'))), 'p4'); + equal(m.getCanonicalIntervalName(m.getIntervalBetween(m.getNoteValue('c'), m.getNoteValue('c'))), 'unison'); + equal(m.getCanonicalIntervalName(m.getIntervalBetween(m.getNoteValue('f'), m.getNoteValue('cb'))), 'dim5'); + equal(m.getCanonicalIntervalName(m.getIntervalBetween(m.getNoteValue('d'), m.getNoteValue('c'), 1)), 'b7'); + equal(m.getCanonicalIntervalName(m.getIntervalBetween(m.getNoteValue('d'), m.getNoteValue('c'), -1)), 'M2'); +} +VexFlowTests.register(MusicTests); +export { MusicTests }; diff --git a/build/esm/tests/notehead_tests.js b/build/esm/tests/notehead_tests.js new file mode 100644 index 0000000000..daf37e56bc --- /dev/null +++ b/build/esm/tests/notehead_tests.js @@ -0,0 +1,222 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Flow } from '../src/flow.js'; +import { Formatter } from '../src/formatter.js'; +import { NoteHead } from '../src/notehead.js'; +import { Stave } from '../src/stave.js'; +import { StaveNote } from '../src/stavenote.js'; +import { TickContext } from '../src/tickcontext.js'; +import { Voice } from '../src/voice.js'; +const NoteHeadTests = { + Start() { + QUnit.module('NoteHead'); + const run = VexFlowTests.runTests; + run('Basic', basic); + run('Various Note Heads 1', variousNoteHeads); + run('Various Note Heads 2', variousNoteHeads2); + run('Various Heads', variousHeads); + run('Drum Chord Heads', drumChordHeads); + run('Bounding Boxes', basicBoundingBoxes); + }, +}; +function setContextStyle(ctx) { + ctx.scale(1.8, 1.8); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + ctx.font = '10pt Arial'; +} +function basic(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 450, 250); + setContextStyle(ctx); + const stave = new Stave(10, 0, 250).addClef('treble'); + stave.setContext(ctx).draw(); + const formatter = new Formatter(); + const voice = new Voice(Flow.TIME4_4).setStrict(false); + const note_head1 = new NoteHead({ duration: '4', line: 3 }); + const note_head2 = new NoteHead({ duration: '1', line: 2.5 }); + const note_head3 = new NoteHead({ duration: '2', line: 0 }); + voice.addTickables([note_head1, note_head2, note_head3]); + formatter.joinVoices([voice]).formatToStave([voice], stave); + voice.draw(ctx, stave); + ok('Basic NoteHead test'); +} +function showNote(noteStruct, stave, ctx, x) { + const note = new StaveNote(noteStruct).setStave(stave); + new TickContext().addTickable(note).preFormat().setX(x); + note.setContext(ctx).draw(); + return note; +} +function variousHeads(options, contextBuilder) { + const notes = [ + { keys: ['g/5/d0'], duration: '4' }, + { keys: ['g/5/d1'], duration: '4' }, + { keys: ['g/5/d2'], duration: '4' }, + { keys: ['g/5/d3'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/t0'], duration: '1' }, + { keys: ['g/5/t1'], duration: '4' }, + { keys: ['g/5/t2'], duration: '4' }, + { keys: ['g/5/t3'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/x0'], duration: '1' }, + { keys: ['g/5/x1'], duration: '4' }, + { keys: ['g/5/x2'], duration: '4' }, + { keys: ['g/5/x3'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/s1'], duration: '4' }, + { keys: ['g/5/s2'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/r1'], duration: '4' }, + { keys: ['g/5/r2'], duration: '4' }, + ]; + const ctx = contextBuilder(options.elementId, notes.length * 25 + 100, 240); + for (let staveNum = 0; staveNum < 2; ++staveNum) { + const stave = new Stave(10, 10 + staveNum * 120, notes.length * 25 + 75) + .addClef('percussion') + .setContext(ctx) + .draw(); + for (let i = 0; i < notes.length; ++i) { + const note = notes[i]; + note.stem_direction = staveNum === 0 ? -1 : 1; + const staveNote = showNote(note, stave, ctx, (i + 1) * 25); + ok(staveNote.getX() > 0, 'Note ' + i + ' has X value'); + ok(staveNote.getYs().length > 0, 'Note ' + i + ' has Y values'); + } + } +} +function variousNoteHeads(options, contextBuilder) { + const notes = [ + { keys: ['g/5/d'], duration: '1/2' }, + { keys: ['g/5/d'], duration: '1' }, + { keys: ['g/5/d'], duration: '2' }, + { keys: ['g/5/d'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/x'], duration: '1/2' }, + { keys: ['g/5/x'], duration: '1' }, + { keys: ['g/5/x'], duration: '2' }, + { keys: ['g/5/x'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/cx'], duration: '1/2' }, + { keys: ['g/5/cx'], duration: '1' }, + { keys: ['g/5/cx'], duration: '2' }, + { keys: ['g/5/cx'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/tu'], duration: '1/2' }, + { keys: ['g/5/tu'], duration: '1' }, + { keys: ['g/5/tu'], duration: '2' }, + { keys: ['g/5/tu'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/td'], duration: '1/2' }, + { keys: ['g/5/td'], duration: '1' }, + { keys: ['g/5/td'], duration: '2' }, + { keys: ['g/5/td'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/sf'], duration: '1/2' }, + { keys: ['g/5/sf'], duration: '1' }, + { keys: ['g/5/sf'], duration: '2' }, + { keys: ['g/5/sf'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/sb'], duration: '1/2' }, + { keys: ['g/5/sb'], duration: '1' }, + { keys: ['g/5/sb'], duration: '2' }, + { keys: ['g/5/sb'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/ci'], duration: '1/2' }, + { keys: ['g/5/ci'], duration: '1' }, + { keys: ['g/5/ci'], duration: '2' }, + { keys: ['g/5/ci'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/sq'], duration: '1/2' }, + { keys: ['g/5/sq'], duration: '1' }, + { keys: ['g/5/sq'], duration: '2' }, + { keys: ['g/5/sq'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + ]; + const ctx = contextBuilder(options.elementId, notes.length * 25 + 100, 240); + for (let staveNum = 0; staveNum < 2; ++staveNum) { + const stave = new Stave(10, 10 + staveNum * 120, notes.length * 25 + 75) + .addClef('percussion') + .setContext(ctx) + .draw(); + for (let i = 0; i < notes.length; ++i) { + const note = notes[i]; + note.stem_direction = staveNum === 0 ? -1 : 1; + const staveNote = showNote(note, stave, ctx, (i + 1) * 25); + ok(staveNote.getX() > 0, 'Note ' + i + ' has X value'); + ok(staveNote.getYs().length > 0, 'Note ' + i + ' has Y values'); + } + } +} +function variousNoteHeads2(options, contextBuilder) { + const notes = [ + { keys: ['g/5/do'], duration: '4', auto_stem: true }, + { keys: ['g/5/re'], duration: '4', auto_stem: true }, + { keys: ['g/5/mi'], duration: '4', auto_stem: true }, + { keys: ['g/5/fa'], duration: '4', auto_stem: true }, + { keys: ['e/4/faup'], duration: '4', auto_stem: true }, + { keys: ['g/5/so'], duration: '4', auto_stem: true }, + { keys: ['g/5/la'], duration: '4', auto_stem: true }, + { keys: ['g/5/ti'], duration: '4', auto_stem: true }, + ]; + const ctx = contextBuilder(options.elementId, notes.length * 25 + 100, 240); + const stave = new Stave(10, 10, notes.length * 25 + 75).addClef('percussion').setContext(ctx).draw(); + for (let i = 0; i < notes.length; ++i) { + const note = notes[i]; + const staveNote = showNote(note, stave, ctx, (i + 1) * 25); + ok(staveNote.getX() > 0, 'Note ' + i + ' has X value'); + ok(staveNote.getYs().length > 0, 'Note ' + i + ' has Y values'); + } +} +function drumChordHeads(options, contextBuilder) { + const notes = [ + { keys: ['a/4/d0', 'g/5/x3'], duration: '4' }, + { keys: ['a/4/x3', 'g/5/d0'], duration: '4' }, + { keys: ['a/4/d1', 'g/5/x2'], duration: '4' }, + { keys: ['a/4/x2', 'g/5/d1'], duration: '4' }, + { keys: ['a/4/d2', 'g/5/x1'], duration: '4' }, + { keys: ['a/4/x1', 'g/5/d2'], duration: '4' }, + { keys: ['a/4/d3', 'g/5/x0'], duration: '4' }, + { keys: ['a/4/x0', 'g/5/d3'], duration: '4' }, + { keys: ['a/4', 'g/5/d0'], duration: '4' }, + { keys: ['a/4/x3', 'g/5'], duration: '4' }, + { keys: ['a/4/t0', 'g/5/s1'], duration: '4' }, + { keys: ['a/4/s1', 'g/5/t0'], duration: '4' }, + { keys: ['a/4/t1', 'g/5/s2'], duration: '4' }, + { keys: ['a/4/s2', 'g/5/t1'], duration: '4' }, + { keys: ['a/4/t2', 'g/5/r1'], duration: '4' }, + { keys: ['a/4/r1', 'g/5/t2'], duration: '4' }, + { keys: ['a/4/t3', 'g/5/r2'], duration: '4' }, + { keys: ['a/4/r2', 'g/5/t3'], duration: '4' }, + ]; + const ctx = contextBuilder(options.elementId, notes.length * 25 + 100, 240); + for (let h = 0; h < 2; ++h) { + const stave = new Stave(10, 10 + h * 120, notes.length * 25 + 75).addClef('percussion').setContext(ctx).draw(); + for (let i = 0; i < notes.length; ++i) { + const note = notes[i]; + note.stem_direction = h === 0 ? -1 : 1; + const staveNote = showNote(note, stave, ctx, (i + 1) * 25); + ok(staveNote.getX() > 0, 'Note ' + i + ' has X value'); + ok(staveNote.getYs().length > 0, 'Note ' + i + ' has Y values'); + } + } +} +function basicBoundingBoxes(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 450, 250); + setContextStyle(ctx); + const stave = new Stave(10, 0, 250).addClef('treble'); + stave.setContext(ctx).draw(); + const formatter = new Formatter(); + const voice = new Voice(Flow.TIME4_4).setStrict(false); + const nh1 = new NoteHead({ duration: '4', line: 3 }); + const nh2 = new NoteHead({ duration: '2', line: 2.5 }); + const nh3 = new NoteHead({ duration: '1', line: 0 }); + voice.addTickables([nh1, nh2, nh3]); + formatter.joinVoices([voice]).formatToStave([voice], stave); + voice.draw(ctx, stave); + for (const bb of [nh1.getBoundingBox(), nh2.getBoundingBox(), nh3.getBoundingBox()]) { + ctx.rect(bb.getX(), bb.getY(), bb.getW(), bb.getH()); + } + ctx.stroke(); + ok('NoteHead Bounding Boxes'); +} +VexFlowTests.register(NoteHeadTests); +export { NoteHeadTests }; diff --git a/build/esm/tests/notesubgroup_tests.js b/build/esm/tests/notesubgroup_tests.js new file mode 100644 index 0000000000..36e2626389 --- /dev/null +++ b/build/esm/tests/notesubgroup_tests.js @@ -0,0 +1,149 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { BarNote } from '../src/barnote.js'; +import { Note } from '../src/note.js'; +import { BarlineType } from '../src/stavebarline.js'; +const NoteSubGroupTests = { + Start() { + QUnit.module('NoteSubGroup'); + const run = VexFlowTests.runTests; + run('Basic - ClefNote, TimeSigNote and BarNote', basic); + run('Multi Voice', multiVoiceSingleDraw); + run('Multi Voice Multiple Draws', multiVoiceDoubleDraw); + run('Multi Staff', multiStaff); + }, +}; +function createShortcuts(f) { + return { + createStaveNote: (noteStruct) => f.StaveNote(noteStruct), + addAccidental: (note, accid) => note.addModifier(f.Accidental({ type: accid }), 0), + addSubGroup: (note, subNotes) => note.addModifier(f.NoteSubGroup({ notes: subNotes }), 0), + }; +} +function basic(options) { + const f = VexFlowTests.makeFactory(options, 750, 200); + const ctx = f.getContext(); + const stave = f.Stave({ width: 600 }).addClef('treble'); + const { createStaveNote, addAccidental, addSubGroup } = createShortcuts(f); + const notes = [ + { keys: ['f/5'], stem_direction: -1, duration: '4' }, + { keys: ['d/4'], stem_direction: -1, duration: '4', clef: 'bass' }, + { keys: ['g/4'], stem_direction: -1, duration: '4', clef: 'alto' }, + { keys: ['a/4'], stem_direction: -1, duration: '4', clef: 'alto' }, + { keys: ['c/4'], stem_direction: -1, duration: '4', clef: 'tenor' }, + { keys: ['c/3'], stem_direction: +1, duration: '4', clef: 'tenor' }, + { keys: ['d/4'], stem_direction: -1, duration: '4', clef: 'tenor' }, + { keys: ['f/4'], stem_direction: -1, duration: '4', clef: 'tenor' }, + ].map(createStaveNote); + addAccidental(notes[1], '#'); + addAccidental(notes[2], 'n'); + addSubGroup(notes[1], [f.ClefNote({ type: 'bass', options: { size: 'small' } })]); + addSubGroup(notes[2], [f.ClefNote({ type: 'alto', options: { size: 'small' } })]); + addSubGroup(notes[4], [f.ClefNote({ type: 'tenor', options: { size: 'small' } }), new BarNote()]); + addSubGroup(notes[5], [f.TimeSigNote({ time: '6/8' })]); + addSubGroup(notes[6], [new BarNote(BarlineType.REPEAT_BEGIN)]); + addAccidental(notes[4], 'b'); + addAccidental(notes[6], 'bb'); + const voice = f.Voice().setStrict(false).addTickables(notes); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + notes.forEach((note) => Note.plotMetrics(ctx, note, 150)); + VexFlowTests.plotLegendForNoteWidth(ctx, 620, 120); + ok(true, 'all pass'); +} +function multiVoiceSingleDraw(options) { + multiVoiceHelper(options, 1); +} +function multiVoiceDoubleDraw(options) { + multiVoiceHelper(options, 2); +} +function multiVoiceHelper(options, numDraws) { + const f = VexFlowTests.makeFactory(options, 550, 200); + const ctx = f.getContext(); + const stave = f.Stave().addClef('treble'); + const { createStaveNote, addAccidental, addSubGroup } = createShortcuts(f); + const notes1 = [ + { keys: ['f/5'], stem_direction: 1, duration: '4' }, + { keys: ['d/4'], stem_direction: 1, duration: '4', clef: 'bass' }, + { keys: ['c/5'], stem_direction: 1, duration: '4', clef: 'alto' }, + { keys: ['c/5'], stem_direction: 1, duration: '4', clef: 'soprano' }, + ].map(createStaveNote); + const notes2 = [ + { keys: ['c/4'], stem_direction: -1, duration: '4' }, + { keys: ['c/3'], stem_direction: -1, duration: '4', clef: 'bass' }, + { keys: ['d/4'], stem_direction: -1, duration: '4', clef: 'alto' }, + { keys: ['f/4'], stem_direction: -1, duration: '4', clef: 'soprano' }, + ].map(createStaveNote); + addAccidental(notes1[1], '#'); + addSubGroup(notes1[1], [ + f.ClefNote({ type: 'bass', options: { size: 'small' } }), + new BarNote(BarlineType.REPEAT_BEGIN), + f.TimeSigNote({ time: '3/4' }), + ]); + addSubGroup(notes2[2], [ + f.ClefNote({ type: 'alto', options: { size: 'small' } }), + f.TimeSigNote({ time: '9/8' }), + new BarNote(BarlineType.DOUBLE), + ]); + addSubGroup(notes1[3], [f.ClefNote({ type: 'soprano', options: { size: 'small' } })]); + addAccidental(notes1[2], 'b'); + addAccidental(notes2[3], '#'); + const voices = [f.Voice().addTickables(notes1), f.Voice().addTickables(notes2)]; + f.Formatter().joinVoices(voices).formatToStave(voices, stave); + for (let i = 0; i < numDraws; i++) { + f.draw(); + } + notes1.forEach((note) => Note.plotMetrics(ctx, note, 150)); + ok(true, 'all pass'); +} +function multiStaff(options) { + const f = VexFlowTests.makeFactory(options, 550, 400); + const { createStaveNote, addAccidental, addSubGroup } = createShortcuts(f); + const stave1 = f.Stave({ x: 15, y: 30, width: 500 }).setClef('treble'); + const notes1 = [ + { keys: ['f/5'], stem_direction: 1, duration: '4' }, + { keys: ['d/4'], stem_direction: 1, duration: '4', clef: 'bass' }, + { keys: ['c/5'], stem_direction: 1, duration: '4', clef: 'alto' }, + { keys: ['c/5'], stem_direction: 1, duration: '4', clef: 'soprano' }, + ].map(createStaveNote); + const notes2 = [ + { keys: ['c/4'], stem_direction: -1, duration: '4' }, + { keys: ['c/3'], stem_direction: -1, duration: '4', clef: 'bass' }, + { keys: ['d/4'], stem_direction: -1, duration: '4', clef: 'alto' }, + { keys: ['f/4'], stem_direction: -1, duration: '4', clef: 'soprano' }, + ].map(createStaveNote); + const stave2 = f.Stave({ x: 15, y: 150, width: 500 }).setClef('bass'); + const notes3 = [ + { keys: ['e/3'], duration: '8', stem_direction: -1, clef: 'bass' }, + { keys: ['g/4'], duration: '8', stem_direction: 1, clef: 'treble' }, + { keys: ['d/4'], duration: '8', stem_direction: 1, clef: 'treble' }, + { keys: ['f/4'], duration: '8', stem_direction: 1, clef: 'treble' }, + { keys: ['c/4'], duration: '8', stem_direction: 1, clef: 'treble' }, + { keys: ['g/3'], duration: '8', stem_direction: -1, clef: 'bass' }, + { keys: ['d/3'], duration: '8', stem_direction: -1, clef: 'bass' }, + { keys: ['f/3'], duration: '8', stem_direction: -1, clef: 'bass' }, + ].map(createStaveNote); + f.StaveConnector({ top_stave: stave1, bottom_stave: stave2, type: 'brace' }); + f.StaveConnector({ top_stave: stave1, bottom_stave: stave2, type: 'singleLeft' }); + f.StaveConnector({ top_stave: stave1, bottom_stave: stave2, type: 'singleRight' }); + f.Beam({ notes: notes3.slice(1, 4) }); + f.Beam({ notes: notes3.slice(5) }); + addAccidental(notes1[1], '#'); + addSubGroup(notes1[1], [f.ClefNote({ type: 'bass', options: { size: 'small' } }), f.TimeSigNote({ time: '3/4' })]); + addSubGroup(notes2[2], [f.ClefNote({ type: 'alto', options: { size: 'small' } }), f.TimeSigNote({ time: '9/8' })]); + addSubGroup(notes1[3], [f.ClefNote({ type: 'soprano', options: { size: 'small' } })]); + addSubGroup(notes3[1], [f.ClefNote({ type: 'treble', options: { size: 'small' } })]); + addSubGroup(notes3[5], [f.ClefNote({ type: 'bass', options: { size: 'small' } })]); + addAccidental(notes3[0], '#'); + addAccidental(notes3[3], 'b'); + addAccidental(notes3[5], '#'); + addAccidental(notes1[2], 'b'); + addAccidental(notes2[3], '#'); + const voice1 = f.Voice().addTickables(notes1); + const voice2 = f.Voice().addTickables(notes2); + const voice3 = f.Voice().addTickables(notes3); + f.Formatter().joinVoices([voice1, voice2]).joinVoices([voice3]).formatToStave([voice1, voice2, voice3], stave1); + f.draw(); + ok(true, 'all pass'); +} +VexFlowTests.register(NoteSubGroupTests); +export { NoteSubGroupTests }; diff --git a/build/esm/tests/offscreencanvas_tests.js b/build/esm/tests/offscreencanvas_tests.js new file mode 100644 index 0000000000..b1c3899b1a --- /dev/null +++ b/build/esm/tests/offscreencanvas_tests.js @@ -0,0 +1,47 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { CanvasContext } from '../src/canvascontext.js'; +import { Formatter } from '../src/formatter.js'; +import { Stave } from '../src/stave.js'; +import { BarlineType } from '../src/stavebarline.js'; +import { StaveNote } from '../src/stavenote.js'; +import { globalObject } from '../src/util.js'; +const OffscreenCanvasTests = { + Start() { + if (globalObject().OffscreenCanvas === undefined) { + return; + } + QUnit.module('OffscreenCanvas'); + test('Simple Test', simpleTest); + }, +}; +function simpleTest() { + const offscreenCanvas = new OffscreenCanvas(550, 200); + const offscreenCtx = offscreenCanvas.getContext('2d'); + if (offscreenCtx == null) { + throw new Error("Couldn't create offscreen context"); + } + const ctx = new CanvasContext(offscreenCtx); + const stave = new Stave(10, 50, 200); + stave.setEndBarType(BarlineType.END); + stave.addClef('treble').setContext(ctx).draw(); + const notes = [ + new StaveNote({ keys: ['c/4'], duration: 'q' }), + new StaveNote({ keys: ['d/4'], duration: 'q' }), + new StaveNote({ keys: ['b/4'], duration: 'qr' }), + new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: 'q' }), + ]; + Formatter.FormatAndDraw(ctx, stave, notes); + const imgBmp = offscreenCanvas.transferToImageBitmap(); + const canvas = document.createElement('canvas'); + canvas.width = offscreenCanvas.width; + canvas.height = offscreenCanvas.height; + const canvasCtx = canvas.getContext('2d'); + if (canvasCtx == null) { + throw new Error("Couldn't create canvas context"); + } + canvasCtx.drawImage(imgBmp, 0, 0); + document.body.appendChild(canvas); + ok(true, 'all pass'); +} +VexFlowTests.register(OffscreenCanvasTests); +export { OffscreenCanvasTests }; diff --git a/build/esm/tests/ornament_tests.js b/build/esm/tests/ornament_tests.js new file mode 100644 index 0000000000..7185fd42e8 --- /dev/null +++ b/build/esm/tests/ornament_tests.js @@ -0,0 +1,302 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Accidental } from '../src/accidental.js'; +import { Beam } from '../src/beam.js'; +import { Dot } from '../src/dot.js'; +import { Formatter } from '../src/formatter.js'; +import { Glyph } from '../src/glyph.js'; +import { Ornament } from '../src/ornament.js'; +import { Stave } from '../src/stave.js'; +import { StaveNote } from '../src/stavenote.js'; +import { Voice, VoiceMode } from '../src/voice.js'; +const OrnamentTests = { + Start() { + QUnit.module('Ornament'); + const run = VexFlowTests.runTests; + run('Ornaments', drawOrnaments); + run('Ornaments Vertically Shifted', drawOrnamentsDisplaced); + run('Ornaments - Delayed turns', drawOrnamentsDelayed); + run('Ornaments - Delayed turns, Multiple Draws', drawOrnamentsDelayedMultipleDraws); + run('Stacked', drawOrnamentsStacked); + run('With Upper/Lower Accidentals', drawOrnamentsWithAccidentals); + run('Jazz Ornaments', jazzOrnaments); + }, +}; +function drawOrnaments(options, contextBuilder) { + expect(0); + const ctx = contextBuilder(options.elementId, 750, 195); + const stave = new Stave(10, 30, 700); + stave.setContext(ctx).draw(); + const notes = [ + new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + new StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + ]; + notes[0].addModifier(new Ornament('mordent'), 0); + notes[1].addModifier(new Ornament('mordent_inverted'), 0); + notes[2].addModifier(new Ornament('turn'), 0); + notes[3].addModifier(new Ornament('turn_inverted'), 0); + notes[4].addModifier(new Ornament('tr'), 0); + notes[5].addModifier(new Ornament('upprall'), 0); + notes[6].addModifier(new Ornament('downprall'), 0); + notes[7].addModifier(new Ornament('prallup'), 0); + notes[8].addModifier(new Ornament('pralldown'), 0); + notes[9].addModifier(new Ornament('upmordent'), 0); + notes[10].addModifier(new Ornament('downmordent'), 0); + notes[11].addModifier(new Ornament('lineprall'), 0); + notes[12].addModifier(new Ornament('prallprall'), 0); + Formatter.FormatAndDraw(ctx, stave, notes); +} +function drawOrnamentsDisplaced(options, contextBuilder) { + expect(0); + const ctx = contextBuilder(options.elementId, 750, 195); + const stave = new Stave(10, 30, 700); + stave.setContext(ctx).draw(); + const notes = [ + new StaveNote({ keys: ['a/5'], duration: '4', stem_direction: -1 }), + new StaveNote({ keys: ['a/5'], duration: '4', stem_direction: -1 }), + new StaveNote({ keys: ['a/5'], duration: '4', stem_direction: -1 }), + new StaveNote({ keys: ['a/5'], duration: '4', stem_direction: -1 }), + new StaveNote({ keys: ['a/5'], duration: '4', stem_direction: -1 }), + new StaveNote({ keys: ['a/5'], duration: '4', stem_direction: -1 }), + new StaveNote({ keys: ['a/5'], duration: '4', stem_direction: -1 }), + new StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + new StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + new StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + new StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + new StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + new StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + ]; + notes[0].addModifier(new Ornament('mordent'), 0); + notes[1].addModifier(new Ornament('mordent_inverted'), 0); + notes[1].addModifier(new Ornament('mordent_inverted'), 0); + notes[2].addModifier(new Ornament('turn'), 0); + notes[3].addModifier(new Ornament('turn_inverted'), 0); + notes[4].addModifier(new Ornament('tr'), 0); + notes[5].addModifier(new Ornament('upprall'), 0); + notes[6].addModifier(new Ornament('downprall'), 0); + notes[7].addModifier(new Ornament('prallup'), 0); + notes[8].addModifier(new Ornament('pralldown'), 0); + notes[9].addModifier(new Ornament('upmordent'), 0); + notes[10].addModifier(new Ornament('downmordent'), 0); + notes[11].addModifier(new Ornament('lineprall'), 0); + notes[12].addModifier(new Ornament('prallprall'), 0); + Formatter.FormatAndDraw(ctx, stave, notes); +} +const addDelayedTurns = (f) => { + const context = f.getContext(); + const stave = f.Stave({ x: 10, y: 30, width: 500 }); + stave.setContext(context).draw(); + const notes = [ + f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + ]; + notes[0].addModifier(f.Ornament('turn', { delayed: true }), 0); + notes[1].addModifier(f.Ornament('turn_inverted', { delayed: true }), 0); + notes[2].addModifier(f.Ornament('turn_inverted', { delayed: true }), 0); + notes[3].addModifier(f.Ornament('turn', { delayed: true }), 0); + return { context, stave, notes }; +}; +function drawOrnamentsDelayed(options) { + expect(0); + const f = VexFlowTests.makeFactory(options, 550, 195); + const { context, stave, notes } = addDelayedTurns(f); + Formatter.FormatAndDraw(context, stave, notes); +} +function drawOrnamentsDelayedMultipleDraws(options) { + expect(0); + const f = VexFlowTests.makeFactory(options, 550, 195); + const { context, stave, notes } = addDelayedTurns(f); + Formatter.FormatAndDraw(context, stave, notes); + Formatter.FormatAndDraw(context, stave, notes); +} +function drawOrnamentsStacked(options) { + expect(0); + const f = VexFlowTests.makeFactory(options, 550, 195); + const ctx = f.getContext(); + const stave = f.Stave({ x: 10, y: 30, width: 500 }); + stave.setContext(ctx).draw(); + const notes = [ + f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['a/4'], duration: '4', stem_direction: 1 }), + ]; + notes[0].addModifier(f.Ornament('mordent'), 0); + notes[1].addModifier(f.Ornament('turn_inverted'), 0); + notes[2].addModifier(f.Ornament('turn'), 0); + notes[3].addModifier(f.Ornament('turn_inverted'), 0); + notes[0].addModifier(f.Ornament('turn'), 0); + notes[1].addModifier(f.Ornament('prallup'), 0); + notes[2].addModifier(f.Ornament('upmordent'), 0); + notes[3].addModifier(f.Ornament('lineprall'), 0); + Formatter.FormatAndDraw(ctx, stave, notes); +} +function drawOrnamentsWithAccidentals(options) { + expect(0); + const f = VexFlowTests.makeFactory(options, 650, 250); + const ctx = f.getContext(); + const stave = f.Stave({ x: 10, y: 60, width: 600 }); + stave.setContext(ctx).draw(); + const notes = [ + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: 1 }), + ]; + notes[0].addModifier(f.Ornament('mordent', { lowerAccidental: '#', upperAccidental: '#' }), 0); + notes[1].addModifier(f.Ornament('turn_inverted', { lowerAccidental: 'b', upperAccidental: 'b' }), 0); + notes[2].addModifier(f.Ornament('turn', { upperAccidental: '##', lowerAccidental: '##' }), 0); + notes[3].addModifier(f.Ornament('mordent_inverted', { lowerAccidental: 'db', upperAccidental: 'db' }), 0); + notes[4].addModifier(f.Ornament('turn_inverted', { upperAccidental: '++', lowerAccidental: '++' }), 0); + notes[5].addModifier(f.Ornament('tr', { upperAccidental: 'n', lowerAccidental: 'n' }), 0); + notes[6].addModifier(f.Ornament('prallup', { upperAccidental: 'd', lowerAccidental: 'd' }), 0); + notes[7].addModifier(f.Ornament('lineprall', { upperAccidental: 'db', lowerAccidental: 'db' }), 0); + notes[8].addModifier(f.Ornament('upmordent', { upperAccidental: 'bbs', lowerAccidental: 'bbs' }), 0); + notes[9].addModifier(f.Ornament('prallprall', { upperAccidental: 'bb', lowerAccidental: 'bb' }), 0); + notes[10].addModifier(f.Ornament('turn_inverted', { upperAccidental: '+', lowerAccidental: '+' }), 0); + Formatter.FormatAndDraw(ctx, stave, notes); +} +function jazzOrnaments(options) { + const clefWidth = Glyph.getWidth('gClef', 38); + function draw(modifiers, keys, x, width, y, stemDirection) { + const note = (keys, duration, modifier, stemDirection) => { + const n = new StaveNote({ keys, duration, stem_direction: stemDirection }) + .addModifier(modifier, 0) + .addModifier(new Accidental('b'), 0); + const dot = duration.indexOf('d') >= 0; + if (dot) { + Dot.buildAndAttach([n], { all: true }); + } + return n; + }; + const stave = new Stave(x, y, width).addClef('treble').setContext(ctx).draw(); + const notes = [ + note(keys, '4d', modifiers[0], stemDirection), + note(keys, '8', modifiers[1], stemDirection), + note(keys, '4d', modifiers[2], stemDirection), + note(keys, '8', modifiers[3], stemDirection), + ]; + if (modifiers.length > 4) { + notes[3].addModifier(modifiers[4], 0); + } + Beam.generateBeams(notes); + const voice = new Voice({ + num_beats: 4, + beat_value: 4, + }).setMode(VoiceMode.SOFT); + voice.addTickables(notes); + const formatter = new Formatter().joinVoices([voice]); + formatter.format([voice], width - Stave.defaultPadding - clefWidth); + stave.setContext(ctx).draw(); + voice.draw(ctx, stave); + } + expect(0); + const f = VexFlowTests.makeFactory(options, 950, 400); + const ctx = f.getContext(); + ctx.scale(1, 1); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + const xStart = 10; + const width = 300; + const yStart = 50; + const staffHeight = 70; + let curX = xStart; + let curY = yStart; + let mods = [ + f.Ornament('scoop'), + f.Ornament('doit'), + f.Ornament('fall'), + f.Ornament('doitLong'), + ]; + draw(mods, ['a/5'], curX, width, curY, -1); + curX += width; + mods = [ + f.Ornament('fallLong'), + f.Ornament('bend'), + f.Ornament('plungerClosed'), + f.Ornament('plungerOpen'), + f.Ornament('bend'), + ]; + draw(mods, ['a/5'], curX, width, curY, -1); + curX += width; + mods = [ + f.Ornament('flip'), + f.Ornament('jazzTurn'), + f.Ornament('smear'), + f.Ornament('doit'), + ]; + draw(mods, ['a/5'], curX, width, curY, 1); + curX = xStart; + curY += staffHeight; + mods = [ + f.Ornament('scoop'), + f.Ornament('doit'), + f.Ornament('fall'), + f.Ornament('doitLong'), + ]; + draw(mods, ['e/5'], curX, width, curY); + curX += width; + mods = [ + f.Ornament('fallLong'), + f.Ornament('bend'), + f.Ornament('plungerClosed'), + f.Ornament('plungerOpen'), + f.Ornament('bend'), + ]; + draw(mods, ['e/5'], curX, width, curY); + curX += width; + mods = [ + f.Ornament('flip'), + f.Ornament('jazzTurn'), + f.Ornament('smear'), + f.Ornament('doit'), + ]; + draw(mods, ['e/5'], curX, width, curY); + curX = xStart; + curY += staffHeight; + mods = [ + f.Ornament('scoop'), + f.Ornament('doit'), + f.Ornament('fall'), + f.Ornament('doitLong'), + ]; + draw(mods, ['e/4'], curX, width, curY); + curX += width; + mods = [ + f.Ornament('fallLong'), + f.Ornament('bend'), + f.Ornament('plungerClosed'), + f.Ornament('plungerOpen'), + f.Ornament('bend'), + ]; + draw(mods, ['e/4'], curX, width, curY); + curX += width; + mods = [ + f.Ornament('flip'), + f.Ornament('jazzTurn'), + f.Ornament('smear'), + f.Ornament('doit'), + ]; + draw(mods, ['e/4'], curX, width, curY); +} +VexFlowTests.register(OrnamentTests); +export { OrnamentTests }; diff --git a/build/esm/tests/parser_tests.js b/build/esm/tests/parser_tests.js new file mode 100644 index 0000000000..3682126413 --- /dev/null +++ b/build/esm/tests/parser_tests.js @@ -0,0 +1,122 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Parser } from '../src/parser.js'; +const ParserTests = { + Start() { + QUnit.module('Parser'); + test('Basic', basic); + test('Advanced', advanced); + test('Mixed', mixed); + test('Micro Score', microscore); + }, +}; +class TestGrammar { + begin() { + return () => ({ expect: this.expect }); + } + BIGORLITTLE() { + return { expect: [this.BIGLINE, this.LITTLELINE], or: true }; + } + BIGLINE() { + return { expect: [this.LBRACE, this.WORD, this.WORDS, this.MAYBEEXCLAIM, this.RBRACE] }; + } + LITTLELINE() { + return { expect: [this.WORD, this.WORDS] }; + } + WORDS() { + return { expect: [this.COMMA, this.WORD], zeroOrMore: true }; + } + MAYBEEXCLAIM() { + return { expect: [this.EXCLAIM], maybe: true }; + } + LBRACE() { + return { token: '[{]' }; + } + RBRACE() { + return { token: '[}]' }; + } + WORD() { + return { token: '[a-zA-Z]+' }; + } + COMMA() { + return { token: '[,]' }; + } + EXCLAIM() { + return { token: '[!]' }; + } + EOL() { + return { token: '$' }; + } +} +class MicroScoreGrammar { + constructor() { + this.ITEM = () => ({ expect: [this.PIANO_KEY_NUMBER, this.CHORD], or: true }); + this.MAYBE_MORE_ITEMS = () => ({ expect: [this.ITEM], zeroOrMore: true }); + this.PIANO_KEY_NUMBER = () => ({ expect: [this.NUM], oneOrMore: true }); + this.CHORD = () => ({ expect: [this.LEFT_BRACKET, this.PIANO_KEY_NUMBER, this.MORE_CHORD_PARTS, this.RIGHT_BRACKET] }); + this.MORE_CHORD_PARTS = () => ({ expect: [this.PERIOD, this.PIANO_KEY_NUMBER], oneOrMore: true }); + this.NUM = () => ({ token: '\\d+' }); + this.WHITESPACE = () => ({ token: '\\s+' }); + this.PERIOD = () => ({ token: '\\.' }); + this.LEFT_BRACKET = () => ({ token: '\\[' }); + this.RIGHT_BRACKET = () => ({ token: '\\]' }); + this.EOL = () => ({ token: '$' }); + } + begin() { + return () => ({ expect: [this.ITEM, this.MAYBE_MORE_ITEMS, this.EOL] }); + } +} +function fails(result, expectedErrorPos, msg) { + notOk(result.success, msg); + equal(result.errorPos, expectedErrorPos, msg); +} +function basic() { + const grammar = new TestGrammar(); + grammar.expect = [grammar.LITTLELINE, grammar.EOL]; + const parser = new Parser(grammar); + const mustPass = ['first, second', 'first,second', 'first', 'first,second, third']; + mustPass.forEach((line) => equal(parser.parse(line).success, true, line)); + fails(parser.parse(''), 0); + fails(parser.parse('first second'), 6); + fails(parser.parse('first,,'), 5); + fails(parser.parse('first,'), 5); + fails(parser.parse(',,'), 0); +} +function advanced() { + const grammar = new TestGrammar(); + grammar.expect = [grammar.BIGLINE, grammar.EOL]; + const parser = new Parser(grammar); + const mustPass = ['{first}', '{first!}', '{first,second}', '{first,second!}', '{first,second,third!}']; + mustPass.forEach((line) => equal(parser.parse(line).success, true, line)); + fails(parser.parse('{first,second,third,}'), 19); + fails(parser.parse('first,second,third'), 0); + fails(parser.parse('{first,second,third'), 19); + fails(parser.parse('{!}'), 1); +} +function mixed() { + const grammar = new TestGrammar(); + grammar.expect = [grammar.BIGORLITTLE, grammar.EOL]; + const parser = new Parser(grammar); + const mustPass = ['{first,second,third!}', 'first, second']; + mustPass.forEach((line) => equal(parser.parse(line).success, true, line)); + fails(parser.parse('first second'), 6); +} +function microscore() { + const grammar = new MicroScoreGrammar(); + const parser = new Parser(grammar); + const mustPass = [ + '40 42 44 45 47 49 51 52', + '[40.44.47] [45.49.52] [47.51.54] [49.52.56]', + '40 [40.44.47] 45 47 [44.47.51]', + ]; + mustPass.forEach((line) => { + var _a; + const result = parser.parse(line); + equal(result.success, true, line); + equal((_a = result.matches) === null || _a === void 0 ? void 0 : _a.length, 3, line); + }); + fails(parser.parse('40 42 44 45 47 49 5A 52'), 19); + fails(parser.parse('40.44.47] [45.49.52] [47.51.54] [49.52.56]'), 2); + fails(parser.parse('40 [40] 45 47 [44.47.51]'), 3); +} +VexFlowTests.register(ParserTests); +export { ParserTests }; diff --git a/build/esm/tests/pedalmarking_tests.js b/build/esm/tests/pedalmarking_tests.js new file mode 100644 index 0000000000..dee713e61d --- /dev/null +++ b/build/esm/tests/pedalmarking_tests.js @@ -0,0 +1,64 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +const PedalMarkingTests = { + Start() { + QUnit.module('PedalMarking'); + const run = VexFlowTests.runTests; + run('Simple Pedal 1', simple1); + run('Simple Pedal 2', simple2); + run('Simple Pedal 3', simple3); + run('Release and Depress on Same Note 1', releaseDepress1); + run('Release and Depress on Same Note 2', releaseDepress2); + run('Custom Text 1', customTest1); + run('Custom Text 2', customTest2); + }, +}; +function createTest(makePedal) { + return (options) => { + const f = VexFlowTests.makeFactory(options, 550, 200); + const score = f.EasyScore(); + const stave0 = f.Stave({ width: 250 }).addClef('treble'); + const voice0 = score.voice(score.notes('b4/4, b4, b4, b4[stem="down"]', { stem: 'up' })); + f.Formatter().joinVoices([voice0]).formatToStave([voice0], stave0); + const stave1 = f.Stave({ width: 260, x: 250 }); + const voice1 = score.voice(score.notes('c4/4, c4, c4, c4', { stem: 'up' })); + f.Formatter().joinVoices([voice1]).formatToStave([voice1], stave1); + makePedal(f, voice0.getTickables(), voice1.getTickables()); + f.draw(); + ok(true, 'Must render'); + }; +} +function withSimplePedal(style) { + return (factory, notes0, notes1) => factory.PedalMarking({ + notes: [notes0[0], notes0[2], notes0[3], notes1[3]], + options: { style }, + }); +} +function withReleaseAndDepressedPedal(style) { + return (factory, notes0, notes1) => factory.PedalMarking({ + notes: [notes0[0], notes0[3], notes0[3], notes1[1], notes1[1], notes1[3]], + options: { style }, + }); +} +const simple1 = createTest(withSimplePedal('text')); +const simple2 = createTest(withSimplePedal('bracket')); +const simple3 = createTest(withSimplePedal('mixed')); +const releaseDepress1 = createTest(withReleaseAndDepressedPedal('bracket')); +const releaseDepress2 = createTest(withReleaseAndDepressedPedal('mixed')); +const customTest1 = createTest((factory, notes0, notes1) => { + const pedal = factory.PedalMarking({ + notes: [notes0[0], notes1[3]], + options: { style: 'text' }, + }); + pedal.setCustomText('una corda', 'tre corda'); + return pedal; +}); +const customTest2 = createTest((factory, notes0, notes1) => { + const pedal = factory.PedalMarking({ + notes: [notes0[0], notes1[3]], + options: { style: 'mixed' }, + }); + pedal.setCustomText('Sost. Ped.'); + return pedal; +}); +VexFlowTests.register(PedalMarkingTests); +export { PedalMarkingTests }; diff --git a/build/esm/tests/percussion_tests.js b/build/esm/tests/percussion_tests.js new file mode 100644 index 0000000000..853333ca73 --- /dev/null +++ b/build/esm/tests/percussion_tests.js @@ -0,0 +1,180 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Dot, Font, FontStyle, FontWeight, Stave, StaveNote, TickContext, Tremolo, } from '../src/index.js'; +const PercussionTests = { + Start() { + QUnit.module('Percussion'); + const run = VexFlowTests.runTests; + run('Percussion Clef', draw); + run('Percussion Notes', drawNotes); + run('Percussion Basic0', basic0); + run('Percussion Basic1', basic1); + run('Percussion Basic2', basic2); + run('Percussion Snare0', snare0); + run('Percussion Snare1', snare1); + run('Percussion Snare2', snare2); + run('Percussion Snare3', snare3); + }, +}; +function draw(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 120); + new Stave(10, 10, 300).addClef('percussion').setContext(ctx).draw(); + ok(true); +} +function showNote(struct, stave, ctx, x) { + const staveNote = new StaveNote(struct).setStave(stave); + new TickContext().addTickable(staveNote).preFormat().setX(x); + staveNote.setContext(ctx).draw(); + return staveNote; +} +function drawNotes(options, contextBuilder) { + const notes = [ + { keys: ['g/5/d0'], duration: '4' }, + { keys: ['g/5/d1'], duration: '4' }, + { keys: ['g/5/d2'], duration: '4' }, + { keys: ['g/5/d3'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/t0'], duration: '1' }, + { keys: ['g/5/t1'], duration: '4' }, + { keys: ['g/5/t2'], duration: '4' }, + { keys: ['g/5/t3'], duration: '4' }, + { keys: ['x/'], duration: '1' }, + { keys: ['g/5/x0'], duration: '1' }, + { keys: ['g/5/x1'], duration: '4' }, + { keys: ['g/5/x2'], duration: '4' }, + { keys: ['g/5/x3'], duration: '4' }, + ]; + const ctx = contextBuilder(options.elementId, notes.length * 25 + 100, 240); + for (let h = 0; h < 2; ++h) { + const stave = new Stave(10, 10 + h * 120, notes.length * 25 + 75).addClef('percussion').setContext(ctx).draw(); + for (let i = 0; i < notes.length; ++i) { + const note = notes[i]; + note.stem_direction = h === 0 ? -1 : 1; + const staveNote = showNote(note, stave, ctx, (i + 1) * 25); + ok(staveNote.getX() > 0, 'Note ' + i + ' has X value'); + ok(staveNote.getYs().length > 0, 'Note ' + i + ' has Y values'); + } + } +} +function createSingleMeasureTest(setup) { + return (options) => { + const f = VexFlowTests.makeFactory(options, 500); + const stave = f.Stave().addClef('percussion'); + setup(f); + f.Formatter().joinVoices(f.getVoices()).formatToStave(f.getVoices(), stave); + f.draw(); + ok(true); + }; +} +const basic0 = createSingleMeasureTest((f) => { + const voice0 = f + .Voice() + .addTickables([ + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + ]); + const voice1 = f + .Voice() + .addTickables([ + f.StaveNote({ keys: ['f/4'], duration: '8', stem_direction: -1 }), + f.StaveNote({ keys: ['f/4'], duration: '8', stem_direction: -1 }), + f.StaveNote({ keys: ['d/4/x2', 'c/5'], duration: '4', stem_direction: -1 }), + f.StaveNote({ keys: ['f/4'], duration: '8', stem_direction: -1 }), + f.StaveNote({ keys: ['f/4'], duration: '8', stem_direction: -1 }), + f.StaveNote({ keys: ['d/4/x2', 'c/5'], duration: '4', stem_direction: -1 }), + ]); + f.Beam({ notes: voice0.getTickables() }); + f.Beam({ notes: voice1.getTickables().slice(0, 2) }); + f.Beam({ notes: voice1.getTickables().slice(3, 5) }); +}); +const basic1 = createSingleMeasureTest((f) => { + f.Voice().addTickables([ + f.StaveNote({ keys: ['f/5/x2'], duration: '4' }), + f.StaveNote({ keys: ['f/5/x2'], duration: '4' }), + f.StaveNote({ keys: ['f/5/x2'], duration: '4' }), + f.StaveNote({ keys: ['f/5/x2'], duration: '4' }), + ]); + f.Voice().addTickables([ + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: -1 }), + f.StaveNote({ keys: ['d/4/x2', 'c/5'], duration: '4', stem_direction: -1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: -1 }), + f.StaveNote({ keys: ['d/4/x2', 'c/5'], duration: '4', stem_direction: -1 }), + ]); +}); +const basic2 = createSingleMeasureTest((f) => { + const voice0 = f + .Voice() + .addTickables([ + f.StaveNote({ keys: ['a/5/x3'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5'], duration: '8' }), + f.StaveNote({ keys: ['g/4/n', 'g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + f.StaveNote({ keys: ['g/5/x2'], duration: '8' }), + ]); + f.Beam({ notes: voice0.getTickables().slice(1, 8) }); + const notes1 = [ + f.StaveNote({ keys: ['f/4'], duration: '8', stem_direction: -1 }), + f.StaveNote({ keys: ['f/4'], duration: '8', stem_direction: -1 }), + f.StaveNote({ keys: ['d/4/x2', 'c/5'], duration: '4', stem_direction: -1 }), + f.StaveNote({ keys: ['f/4'], duration: '4', stem_direction: -1 }), + f.StaveNote({ keys: ['d/4/x2', 'c/5'], duration: '8d', stem_direction: -1 }), + f.StaveNote({ keys: ['c/5'], duration: '16', stem_direction: -1 }), + ]; + Dot.buildAndAttach([notes1[4]], { all: true }); + const voice1 = f.Voice().addTickables(notes1); + f.Beam({ notes: voice1.getTickables().slice(0, 2) }); + f.Beam({ notes: voice1.getTickables().slice(4, 6) }); +}); +const snare0 = createSingleMeasureTest((f) => { + const font = { + family: Font.SERIF, + size: 14, + weight: FontWeight.BOLD, + style: FontStyle.ITALIC, + }; + f.Voice().addTickables([ + f + .StaveNote({ keys: ['c/5'], duration: '4', stem_direction: -1 }) + .addModifier(f.Articulation({ type: 'a>' }), 0) + .addModifier(f.Annotation({ text: 'L', font }), 0), + f.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: -1 }).addModifier(f.Annotation({ text: 'R', font }), 0), + f.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: -1 }).addModifier(f.Annotation({ text: 'L', font }), 0), + f.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: -1 }).addModifier(f.Annotation({ text: 'L', font }), 0), + ]); +}); +const snare1 = createSingleMeasureTest((f) => { + f.Voice().addTickables([ + f.StaveNote({ keys: ['g/5/x2'], duration: '4', stem_direction: -1 }).addModifier(f.Articulation({ type: 'ah' }), 0), + f.StaveNote({ keys: ['g/5/x2'], duration: '4', stem_direction: -1 }), + f.StaveNote({ keys: ['g/5/x2'], duration: '4', stem_direction: -1 }).addModifier(f.Articulation({ type: 'ah' }), 0), + f.StaveNote({ keys: ['a/5/x3'], duration: '4', stem_direction: -1 }).addModifier(f.Articulation({ type: 'a,' }), 0), + ]); +}); +const snare2 = createSingleMeasureTest((f) => { + f.Voice().addTickables([ + f.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: -1 }).addModifier(new Tremolo(1), 0), + f.GraceNote({ keys: ['c/5'], duration: '4', stem_direction: -1 }).addModifier(new Tremolo(1), 0), + f.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: -1 }).addModifier(new Tremolo(3), 0), + f.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: -1 }).addModifier(new Tremolo(5), 0), + ]); +}); +const snare3 = createSingleMeasureTest((factory) => { + factory + .Voice() + .addTickables([ + factory.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: 1 }).addModifier(new Tremolo(2), 0), + factory.GraceNote({ keys: ['c/5'], duration: '4', stem_direction: 1 }).addModifier(new Tremolo(2), 0), + factory.GraceNote({ keys: ['c/5'], duration: '4', stem_direction: 1 }).addModifier(new Tremolo(3), 0), + factory.StaveNote({ keys: ['c/5'], duration: '4', stem_direction: 1 }).addModifier(new Tremolo(5), 0), + ]); +}); +VexFlowTests.register(PercussionTests); +export { PercussionTests }; diff --git a/build/esm/tests/registry_tests.js b/build/esm/tests/registry_tests.js new file mode 100644 index 0000000000..b8264f18f5 --- /dev/null +++ b/build/esm/tests/registry_tests.js @@ -0,0 +1,64 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { EasyScore, Factory, Registry, StaveNote } from '../src/index.js'; +const RegistryTests = { + Start() { + QUnit.module('Registry'); + test('Register and Clear', registerAndClear); + test('Default Registry', defaultRegistry); + test('Multiple Classes', classes); + }, +}; +function registerAndClear() { + const registry = new Registry(); + const score = new EasyScore({ factory: Factory.newFromElementId(null) }); + registry.register(score.notes('C4')[0], 'foobar'); + const foobar = registry.getElementById('foobar'); + ok(foobar); + equal(foobar.getAttribute('id'), 'foobar'); + registry.clear(); + notOk(registry.getElementById('foobar')); + throws(() => registry.register(score.notes('C4'))); + registry.clear(); + ok(registry.register(score.notes('C4[id="boobar"]')[0]).getElementById('boobar')); +} +function defaultRegistry() { + const registry = new Registry(); + const score = new EasyScore({ factory: Factory.newFromElementId(null) }); + Registry.enableDefaultRegistry(registry); + score.notes('C4[id="foobar"]'); + const note = registry.getElementById('foobar'); + ok(note); + note.setAttribute('id', 'boobar'); + ok(registry.getElementById('boobar')); + notOk(registry.getElementById('foobar')); + registry.clear(); + equal(registry.getElementsByType(StaveNote.CATEGORY).length, 0); + score.notes('C5'); + const elements = registry.getElementsByType(StaveNote.CATEGORY); + equal(elements.length, 1); +} +function classes() { + const registry = new Registry(); + const score = new EasyScore({ factory: Factory.newFromElementId(null) }); + Registry.enableDefaultRegistry(registry); + score.notes('C4[id="foobar"]'); + const note = registry.getElementById('foobar'); + note.addClass('foo'); + ok(note.hasClass('foo')); + notOk(note.hasClass('boo')); + equal(registry.getElementsByClass('foo').length, 1); + equal(registry.getElementsByClass('boo').length, 0); + note.addClass('boo'); + ok(note.hasClass('foo')); + ok(note.hasClass('boo')); + equal(registry.getElementsByClass('foo').length, 1); + equal(registry.getElementsByClass('boo').length, 1); + note.removeClass('boo'); + note.removeClass('foo'); + notOk(note.hasClass('foo')); + notOk(note.hasClass('boo')); + equal(registry.getElementsByClass('foo').length, 0); + equal(registry.getElementsByClass('boo').length, 0); +} +VexFlowTests.register(RegistryTests); +export { RegistryTests }; diff --git a/build/esm/tests/renderer_tests.js b/build/esm/tests/renderer_tests.js new file mode 100644 index 0000000000..7439b1e122 --- /dev/null +++ b/build/esm/tests/renderer_tests.js @@ -0,0 +1,113 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { CanvasContext, Factory, Formatter, isHTMLCanvas, Renderer, RuntimeError, Stave, StaveNote, SVGContext, } from '../src/index.js'; +const STAVE_WIDTH = 700; +const STAVE_HEIGHT = 100; +const STAVE_RIGHT_MARGIN = 10; +const USE_RENDERER = { useRendererAPI: true }; +const USE_FACTORY = { useRendererAPI: false }; +const RendererTests = { + Start() { + QUnit.module('Renderer'); + const run = VexFlowTests.runTests; + run('Random', random); + run('Renderer API with element ID string', stringElementId, USE_RENDERER); + run('Renderer API with canvas or div', canvasOrDivElement, USE_RENDERER); + run('Renderer API with context', passRenderContext); + run('Factory API with element ID string', stringElementId, USE_FACTORY); + run('Factory API with canvas or div', canvasOrDivElement, USE_FACTORY); + }, +}; +function drawStave(stave, context) { + stave.addClef('bass').addTimeSignature('3/4').draw(); + Formatter.FormatAndDraw(context, stave, [ + new StaveNote({ keys: ['C/4'], duration: '4' }), + new StaveNote({ keys: ['E/4'], duration: '4' }), + new StaveNote({ keys: ['G/4'], duration: '4' }), + ]); +} +function random(options) { + const useElementIDString = Math.random() > 0.5; + const useRendererAPI = Math.random() > 0.5; + options.params = { useRendererAPI }; + if (useElementIDString) { + stringElementId(options); + } + else { + canvasOrDivElement(options); + } + const element = document.getElementById(options.elementId); + const colorForElementType = useElementIDString ? '#CCCCCC' : '#0074d9'; + const lineStyleForWhichAPI = useRendererAPI ? 'solid' : 'dashed'; + const borderStyle = `3px ${lineStyleForWhichAPI} ${colorForElementType}`; + let elementType; + if (options.backend === Renderer.Backends.CANVAS) { + element.style.border = borderStyle; + elementType = '<canvas> element object'; + } + else { + element.children[0].style.border = borderStyle; + elementType = '<svg> element object'; + } + if (useElementIDString) { + elementType = 'elementID string'; + } + const whichAPI = useRendererAPI ? 'Renderer API' : 'Factory API'; + element.parentElement.insertAdjacentHTML('beforeend', `
` + + `${whichAPI}` + + ` with ` + + `${elementType}` + + `

`); +} +function useRendererAPI(e, backend) { + const renderer = new Renderer(e, backend); + renderer.resize(STAVE_WIDTH, STAVE_HEIGHT); + const context = renderer.getContext(); + drawStave(new Stave(0, 0, STAVE_WIDTH - STAVE_RIGHT_MARGIN).setContext(context), context); +} +function useFactoryAPI(e, backend) { + const opts = { + renderer: { elementId: e, width: STAVE_WIDTH, height: STAVE_HEIGHT, backend }, + }; + const factory = new Factory(opts); + drawStave(factory.Stave(), factory.getContext()); +} +function stringElementId(options) { + const elementId = options.elementId; + if (options.params.useRendererAPI) { + useRendererAPI(elementId, options.backend); + } + else { + useFactoryAPI(elementId, options.backend); + } + ok(true); +} +function canvasOrDivElement(options) { + const element = document.getElementById(options.elementId); + if (options.params.useRendererAPI) { + useRendererAPI(element, options.backend); + } + else { + useFactoryAPI(element, options.backend); + } + ok(true); +} +function passRenderContext(options) { + let context; + const element = document.getElementById(options.elementId); + if (isHTMLCanvas(element)) { + const ctx = element.getContext('2d'); + if (!ctx) { + throw new RuntimeError(`Couldn't get context from element "${options.elementId}"`); + } + context = new CanvasContext(ctx); + } + else { + context = new SVGContext(element); + } + const renderer = new Renderer(context); + renderer.resize(STAVE_WIDTH, STAVE_HEIGHT); + drawStave(new Stave(0, 0, STAVE_WIDTH - STAVE_RIGHT_MARGIN).setContext(context), context); + ok(true); +} +VexFlowTests.register(RendererTests); +export { RendererTests }; diff --git a/build/esm/tests/rests_tests.js b/build/esm/tests/rests_tests.js new file mode 100644 index 0000000000..69ea14ff5d --- /dev/null +++ b/build/esm/tests/rests_tests.js @@ -0,0 +1,262 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Beam } from '../src/beam.js'; +import { Dot } from '../src/dot.js'; +import { Flow } from '../src/flow.js'; +import { Formatter } from '../src/formatter.js'; +import { Stave } from '../src/stave.js'; +import { StaveNote } from '../src/stavenote.js'; +import { Tuplet } from '../src/tuplet.js'; +import { Voice } from '../src/voice.js'; +const RestsTests = { + Start() { + QUnit.module('Rests'); + const run = VexFlowTests.runTests; + run('Outside Stave', legerRest); + run('Dotted', basic); + run('Auto Align - Beamed Notes Stems Up', beamsUp); + run('Auto Align - Beamed Notes Stems Down', beamsDown); + run('Auto Align - Tuplets Stems Up', tupletsUp); + run('Auto Align - Tuplets Stems Down', tupletsDown); + run('Auto Align - Single Voice (Default)', singleVoiceDefaultAlignment); + run('Auto Align - Single Voice (Align All)', singleVoiceAlignAll); + run('Auto Align - Multi Voice', multiVoice); + }, +}; +function setupContext(options, contextBuilder, width = 350, height = 150) { + const context = contextBuilder(options.elementId, width, height); + context.scale(0.9, 0.9); + context.fillStyle = '#221'; + context.strokeStyle = '#221'; + context.font = '10pt Arial'; + const stave = new Stave(10, 30, width).addClef('treble').addTimeSignature('4/4').setContext(context).draw(); + return { context, stave }; +} +function basic(options, contextBuilder) { + const { context, stave } = setupContext(options, contextBuilder, 700); + const notes = [ + new StaveNote({ keys: ['b/4'], stem_direction: 1, duration: 'wr' }), + new StaveNote({ keys: ['b/4'], stem_direction: 1, duration: 'hr' }), + new StaveNote({ keys: ['b/4'], stem_direction: 1, duration: '4r' }), + new StaveNote({ keys: ['b/4'], stem_direction: 1, duration: '8r' }), + new StaveNote({ keys: ['b/4'], stem_direction: 1, duration: '16r' }), + new StaveNote({ keys: ['b/4'], stem_direction: 1, duration: '32r' }), + new StaveNote({ keys: ['b/4'], stem_direction: 1, duration: '64r' }), + new StaveNote({ keys: ['b/4'], stem_direction: 1, duration: '128r' }), + ]; + Dot.buildAndAttach(notes, { all: true }); + Formatter.FormatAndDraw(context, stave, notes); + ok(true, 'Dotted Rest Test'); +} +function legerRest(options, contextBuilder) { + const { context, stave } = setupContext(options, contextBuilder, 700); + const notes = [ + new StaveNote({ keys: ['a/5'], stem_direction: 1, duration: 'wr' }), + new StaveNote({ keys: ['c/6'], stem_direction: 1, duration: 'hr' }), + new StaveNote({ keys: ['b/4'], stem_direction: 1, duration: 'hr' }), + new StaveNote({ keys: ['a/3'], stem_direction: 1, duration: 'wr' }), + new StaveNote({ keys: ['f/3'], stem_direction: 1, duration: 'hr' }), + new StaveNote({ keys: ['b/4'], stem_direction: 1, duration: 'wr' }), + ]; + Formatter.FormatAndDraw(context, stave, notes); + ok(true, 'Leger/Ledger Rest Test'); +} +const note = (noteStruct) => new StaveNote(noteStruct); +function beamsUp(options, contextBuilder) { + const { context, stave } = setupContext(options, contextBuilder, 600, 160); + const notes = [ + note({ keys: ['e/5'], stem_direction: 1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: 1, duration: '8r' }), + note({ keys: ['b/5'], stem_direction: 1, duration: '8' }), + note({ keys: ['c/5'], stem_direction: 1, duration: '8' }), + note({ keys: ['b/4', 'd/5', 'a/5'], stem_direction: 1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: 1, duration: '8r' }), + note({ keys: ['b/4'], stem_direction: 1, duration: '8r' }), + note({ keys: ['c/4'], stem_direction: 1, duration: '8' }), + note({ keys: ['b/4', 'd/5', 'a/5'], stem_direction: 1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: 1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: 1, duration: '8r' }), + note({ keys: ['c/4'], stem_direction: 1, duration: '8' }), + ]; + const beam1 = new Beam(notes.slice(0, 4)); + const beam2 = new Beam(notes.slice(4, 8)); + const beam3 = new Beam(notes.slice(8, 12)); + Formatter.FormatAndDraw(context, stave, notes); + beam1.setContext(context).draw(); + beam2.setContext(context).draw(); + beam3.setContext(context).draw(); + ok(true, 'Auto Align Rests - Beams Up Test'); +} +function beamsDown(options, contextBuilder) { + const { context, stave } = setupContext(options, contextBuilder, 600, 160); + const notes = [ + note({ keys: ['a/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + note({ keys: ['b/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['c/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['b/4', 'd/5', 'a/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + note({ keys: ['e/4'], stem_direction: -1, duration: '8' }), + note({ keys: ['b/4', 'd/5', 'a/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + note({ keys: ['e/4'], stem_direction: -1, duration: '8' }), + ]; + const beam1 = new Beam(notes.slice(0, 4)); + const beam2 = new Beam(notes.slice(4, 8)); + const beam3 = new Beam(notes.slice(8, 12)); + Formatter.FormatAndDraw(context, stave, notes); + beam1.setContext(context).draw(); + beam2.setContext(context).draw(); + beam3.setContext(context).draw(); + ok(true, 'Auto Align Rests - Beams Down Test'); +} +function tupletsUp(options, contextBuilder) { + const { context, stave } = setupContext(options, contextBuilder, 600, 160); + const notes = [ + note({ keys: ['b/4'], stem_direction: 1, duration: '4' }), + note({ keys: ['b/4'], stem_direction: 1, duration: '4' }), + note({ keys: ['a/5'], stem_direction: 1, duration: '4r' }), + note({ keys: ['a/5'], stem_direction: 1, duration: '4r' }), + note({ keys: ['g/5'], stem_direction: 1, duration: '4r' }), + note({ keys: ['b/5'], stem_direction: 1, duration: '4' }), + note({ keys: ['a/5'], stem_direction: 1, duration: '4' }), + note({ keys: ['g/5'], stem_direction: 1, duration: '4r' }), + note({ keys: ['b/4'], stem_direction: 1, duration: '4' }), + note({ keys: ['a/5'], stem_direction: 1, duration: '4' }), + note({ keys: ['b/4'], stem_direction: 1, duration: '4r' }), + note({ keys: ['b/4'], stem_direction: 1, duration: '4r' }), + ]; + const tuplet1 = new Tuplet(notes.slice(0, 3)).setTupletLocation(Tuplet.LOCATION_TOP); + const tuplet2 = new Tuplet(notes.slice(3, 6)).setTupletLocation(Tuplet.LOCATION_TOP); + const tuplet3 = new Tuplet(notes.slice(6, 9)).setTupletLocation(Tuplet.LOCATION_TOP); + const tuplet4 = new Tuplet(notes.slice(9, 12)).setTupletLocation(Tuplet.LOCATION_TOP); + Formatter.FormatAndDraw(context, stave, notes); + tuplet1.setContext(context).draw(); + tuplet2.setContext(context).draw(); + tuplet3.setContext(context).draw(); + tuplet4.setContext(context).draw(); + ok(true, 'Auto Align Rests - Tuplets Stem Up Test'); +} +function tupletsDown(options, contextBuilder) { + const { context, stave } = setupContext(options, contextBuilder, 600, 160); + const notes = [ + note({ keys: ['a/5'], stem_direction: -1, duration: '8r' }), + note({ keys: ['g/5'], stem_direction: -1, duration: '8r' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8' }), + note({ keys: ['a/5'], stem_direction: -1, duration: '8r' }), + note({ keys: ['g/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['b/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['a/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['g/5'], stem_direction: -1, duration: '8r' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8' }), + note({ keys: ['a/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['g/5'], stem_direction: -1, duration: '8r' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + ]; + const beam1 = new Beam(notes.slice(0, 3)); + const beam2 = new Beam(notes.slice(3, 6)); + const beam3 = new Beam(notes.slice(6, 9)); + const beam4 = new Beam(notes.slice(9, 12)); + const tuplet1 = new Tuplet(notes.slice(0, 3)).setTupletLocation(Tuplet.LOCATION_BOTTOM); + const tuplet2 = new Tuplet(notes.slice(3, 6)).setTupletLocation(Tuplet.LOCATION_BOTTOM); + const tuplet3 = new Tuplet(notes.slice(6, 9)).setTupletLocation(Tuplet.LOCATION_BOTTOM); + const tuplet4 = new Tuplet(notes.slice(9, 12)).setTupletLocation(Tuplet.LOCATION_BOTTOM); + Formatter.FormatAndDraw(context, stave, notes); + tuplet1.setContext(context).draw(); + tuplet2.setContext(context).draw(); + tuplet3.setContext(context).draw(); + tuplet4.setContext(context).draw(); + beam1.setContext(context).draw(); + beam2.setContext(context).draw(); + beam3.setContext(context).draw(); + beam4.setContext(context).draw(); + ok(true, 'Auto Align Rests - Tuplets Stem Down Test'); +} +function singleVoiceDefaultAlignment(options, contextBuilder) { + const { context, stave } = setupContext(options, contextBuilder, 600, 160); + const notes = [ + note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }), + note({ keys: ['f/4'], stem_direction: -1, duration: '4' }), + note({ keys: ['e/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + note({ keys: ['a/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8' }), + note({ keys: ['e/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['a/5'], stem_direction: 1, duration: '4' }), + note({ keys: ['b/4'], stem_direction: 1, duration: '4r' }), + note({ keys: ['b/5'], stem_direction: 1, duration: '4' }), + note({ keys: ['d/5'], stem_direction: -1, duration: '4' }), + note({ keys: ['g/5'], stem_direction: -1, duration: '4' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }), + ]; + const beam = new Beam(notes.slice(5, 9)); + const tuplet = new Tuplet(notes.slice(9, 12)).setTupletLocation(Tuplet.LOCATION_TOP); + Formatter.FormatAndDraw(context, stave, notes); + tuplet.setContext(context).draw(); + beam.setContext(context).draw(); + ok(true, 'Auto Align Rests - Default Test'); +} +function singleVoiceAlignAll(options, contextBuilder) { + const { context, stave } = setupContext(options, contextBuilder, 600, 160); + const notes = [ + note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }), + note({ keys: ['f/4'], stem_direction: -1, duration: '4' }), + note({ keys: ['e/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + note({ keys: ['a/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '8' }), + note({ keys: ['e/5'], stem_direction: -1, duration: '8' }), + note({ keys: ['a/5'], stem_direction: 1, duration: '4' }), + note({ keys: ['b/4'], stem_direction: 1, duration: '4r' }), + note({ keys: ['b/5'], stem_direction: 1, duration: '4' }), + note({ keys: ['d/5'], stem_direction: -1, duration: '4' }), + note({ keys: ['g/5'], stem_direction: -1, duration: '4' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }), + note({ keys: ['b/4'], stem_direction: -1, duration: '4r' }), + ]; + const beam = new Beam(notes.slice(5, 9)); + const tuplet = new Tuplet(notes.slice(9, 12)).setTupletLocation(Tuplet.LOCATION_TOP); + Formatter.FormatAndDraw(context, stave, notes, { align_rests: true }); + tuplet.setContext(context).draw(); + beam.setContext(context).draw(); + ok(true, 'Auto Align Rests - Align All Test'); +} +function multiVoice(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 600, 200); + const stave = new Stave(50, 10, 500).addClef('treble').setContext(ctx).addTimeSignature('4/4').draw(); + const noteOnStave = (noteStruct) => new StaveNote(noteStruct).setStave(stave); + const notes1 = [ + noteOnStave({ keys: ['c/4', 'e/4', 'g/4'], duration: '4' }), + noteOnStave({ keys: ['b/4'], duration: '4r' }), + noteOnStave({ keys: ['c/4', 'd/4', 'a/4'], duration: '4' }), + noteOnStave({ keys: ['b/4'], duration: '4r' }), + ]; + const notes2 = [ + noteOnStave({ keys: ['e/3'], stem_direction: -1, duration: '8' }), + noteOnStave({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + noteOnStave({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + noteOnStave({ keys: ['e/3'], stem_direction: -1, duration: '8' }), + noteOnStave({ keys: ['e/3'], stem_direction: -1, duration: '8' }), + noteOnStave({ keys: ['b/4'], stem_direction: -1, duration: '8r' }), + noteOnStave({ keys: ['e/3'], stem_direction: -1, duration: '8' }), + noteOnStave({ keys: ['e/3'], stem_direction: -1, duration: '8' }), + ]; + const voice1 = new Voice(Flow.TIME4_4).addTickables(notes1); + const voice2 = new Voice(Flow.TIME4_4).addTickables(notes2); + new Formatter().joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave, { align_rests: true }); + const beam2_1 = new Beam(notes2.slice(0, 4)); + const beam2_2 = new Beam(notes2.slice(4, 8)); + voice2.draw(ctx); + voice1.draw(ctx); + beam2_1.setContext(ctx).draw(); + beam2_2.setContext(ctx).draw(); + ok(true, 'Strokes Test Multi Voice'); +} +VexFlowTests.register(RestsTests); +export { RestsTests }; diff --git a/build/esm/tests/rhythm_tests.js b/build/esm/tests/rhythm_tests.js new file mode 100644 index 0000000000..c2eca911de --- /dev/null +++ b/build/esm/tests/rhythm_tests.js @@ -0,0 +1,357 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Annotation } from '../src/annotation.js'; +import { Beam } from '../src/beam.js'; +import { Formatter } from '../src/formatter.js'; +import { Stave } from '../src/stave.js'; +import { BarlineType } from '../src/stavebarline.js'; +import { StaveNote } from '../src/stavenote.js'; +const RhythmTests = { + Start() { + QUnit.module('Rhythm'); + const run = VexFlowTests.runTests; + run('Rhythm Draw - slash notes', drawBasic); + run('Rhythm Draw - beamed slash notes', drawBeamedSlashNotes); + run('Rhythm Draw - beamed slash notes, some rests', drawSlashAndBeamAndRests); + run('Rhythm Draw - 16th note rhythm with scratches', drawSixtenthWithScratches); + run('Rhythm Draw - 32nd note rhythm with scratches', drawThirtySecondWithScratches); + }, +}; +function drawBasic(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 800, 150); + const staveBar1 = new Stave(10, 30, 150); + staveBar1.setBegBarType(BarlineType.DOUBLE); + staveBar1.setEndBarType(BarlineType.SINGLE); + staveBar1.addClef('treble'); + staveBar1.addTimeSignature('4/4'); + staveBar1.addKeySignature('C'); + staveBar1.setContext(ctx).draw(); + const notesBar1 = [new StaveNote({ keys: ['b/4'], duration: '1s', stem_direction: -1 })]; + Formatter.FormatAndDraw(ctx, staveBar1, notesBar1); + const staveBar2 = new Stave(staveBar1.getWidth() + staveBar1.getX(), staveBar1.getY(), 120); + staveBar2.setBegBarType(BarlineType.SINGLE); + staveBar2.setEndBarType(BarlineType.SINGLE); + staveBar2.setContext(ctx).draw(); + const notesBar2 = [ + new StaveNote({ keys: ['b/4'], duration: '2s', stem_direction: -1 }), + new StaveNote({ keys: ['b/4'], duration: '2s', stem_direction: -1 }), + ]; + Formatter.FormatAndDraw(ctx, staveBar2, notesBar2); + const staveBar3 = new Stave(staveBar2.getWidth() + staveBar2.getX(), staveBar2.getY(), 170); + staveBar3.setContext(ctx).draw(); + const notesBar3 = [ + new StaveNote({ + keys: ['b/4'], + duration: '4s', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '4s', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '4s', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '4s', + stem_direction: -1, + }), + ]; + Formatter.FormatAndDraw(ctx, staveBar3, notesBar3); + const staveBar4 = new Stave(staveBar3.getWidth() + staveBar3.getX(), staveBar3.getY(), 200); + staveBar4.setContext(ctx).draw(); + const notesBar4 = [ + new StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + ]; + Formatter.FormatAndDraw(ctx, staveBar4, notesBar4); + expect(0); +} +function drawBeamedSlashNotes(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 800, 150); + const staveBar1 = new Stave(10, 30, 300); + staveBar1.setBegBarType(BarlineType.DOUBLE); + staveBar1.setEndBarType(BarlineType.SINGLE); + staveBar1.addClef('treble'); + staveBar1.addTimeSignature('4/4'); + staveBar1.addKeySignature('C'); + staveBar1.setContext(ctx).draw(); + const notesBar1_part1 = [ + new StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + ]; + const notesBar1_part2 = [ + new StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + ]; + const beam1 = new Beam(notesBar1_part1); + const beam2 = new Beam(notesBar1_part2); + const notesBar1 = notesBar1_part1.concat(notesBar1_part2); + Formatter.FormatAndDraw(ctx, staveBar1, notesBar1); + beam1.setContext(ctx).draw(); + beam2.setContext(ctx).draw(); + expect(0); +} +function drawSlashAndBeamAndRests(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 800, 150); + const staveBar1 = new Stave(10, 30, 300); + staveBar1.setBegBarType(BarlineType.DOUBLE); + staveBar1.setEndBarType(BarlineType.SINGLE); + staveBar1.addClef('treble'); + staveBar1.addTimeSignature('4/4'); + staveBar1.addKeySignature('F'); + staveBar1.setContext(ctx).draw(); + const notesBar1_part1 = [ + new StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new StaveNote({ keys: ['b/4'], duration: '8s', stem_direction: -1 }), + ]; + notesBar1_part1[0].addModifier(new Annotation('C7').setFont('Times', VexFlowTests.Font.size + 2), 0); + const notesBar1_part2 = [ + new StaveNote({ + keys: ['b/4'], + duration: '8r', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '8r', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '8r', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '8s', + stem_direction: -1, + }), + ]; + const beam1 = new Beam(notesBar1_part1); + Formatter.FormatAndDraw(ctx, staveBar1, notesBar1_part1.concat(notesBar1_part2)); + beam1.setContext(ctx).draw(); + const staveBar2 = new Stave(staveBar1.getWidth() + staveBar1.getX(), staveBar1.getY(), 220); + staveBar2.setContext(ctx).draw(); + const notesBar2 = [ + new StaveNote({ + keys: ['b/4'], + duration: '1s', + stem_direction: -1, + }), + ]; + notesBar2[0].addModifier(new Annotation('F').setFont('Times', VexFlowTests.Font.size + 2), 0); + Formatter.FormatAndDraw(ctx, staveBar2, notesBar2); + expect(0); +} +function drawSixtenthWithScratches(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 800, 150); + const staveBar1 = new Stave(10, 30, 300); + staveBar1.setBegBarType(BarlineType.DOUBLE); + staveBar1.setEndBarType(BarlineType.SINGLE); + staveBar1.addClef('treble'); + staveBar1.addTimeSignature('4/4'); + staveBar1.addKeySignature('F'); + staveBar1.setContext(ctx).draw(); + const notesBar1_part1 = [ + new StaveNote({ + keys: ['b/4'], + duration: '16s', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '16s', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '16m', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '16s', + stem_direction: -1, + }), + ]; + const notesBar1_part2 = [ + new StaveNote({ + keys: ['b/4'], + duration: '16m', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '16s', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '16r', + stem_direction: -1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '16s', + stem_direction: -1, + }), + ]; + notesBar1_part1[0].addModifier(new Annotation('C7').setFont('Times', VexFlowTests.Font.size + 3), 0); + const beam1 = new Beam(notesBar1_part1); + const beam2 = new Beam(notesBar1_part2); + Formatter.FormatAndDraw(ctx, staveBar1, notesBar1_part1.concat(notesBar1_part2)); + beam1.setContext(ctx).draw(); + beam2.setContext(ctx).draw(); + expect(0); +} +function drawThirtySecondWithScratches(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 800, 150); + const staveBar1 = new Stave(10, 30, 300); + staveBar1.setBegBarType(BarlineType.DOUBLE); + staveBar1.setEndBarType(BarlineType.SINGLE); + staveBar1.addClef('treble'); + staveBar1.addTimeSignature('4/4'); + staveBar1.addKeySignature('F'); + staveBar1.setContext(ctx).draw(); + const notesBar1_part1 = [ + new StaveNote({ + keys: ['b/4'], + duration: '32s', + stem_direction: 1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '32s', + stem_direction: 1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '32m', + stem_direction: 1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '32s', + stem_direction: 1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '32m', + stem_direction: 1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '32s', + stem_direction: 1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '32r', + stem_direction: 1, + }), + new StaveNote({ + keys: ['b/4'], + duration: '32s', + stem_direction: 1, + }), + ]; + notesBar1_part1[0].addModifier(new Annotation('C7').setFont('Times', VexFlowTests.Font.size + 3), 0); + const beam1 = new Beam(notesBar1_part1); + Formatter.FormatAndDraw(ctx, staveBar1, notesBar1_part1); + beam1.setContext(ctx).draw(); + expect(0); +} +VexFlowTests.register(RhythmTests); +export { RhythmTests }; diff --git a/build/esm/tests/stave_tests.js b/build/esm/tests/stave_tests.js new file mode 100644 index 0000000000..339c0e1019 --- /dev/null +++ b/build/esm/tests/stave_tests.js @@ -0,0 +1,560 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Accidental } from '../src/accidental.js'; +import { Beam } from '../src/beam.js'; +import { Clef } from '../src/clef.js'; +import { Formatter } from '../src/formatter.js'; +import { KeySignature } from '../src/keysignature.js'; +import { Modifier } from '../src/modifier.js'; +import { Stave } from '../src/stave.js'; +import { Barline, BarlineType } from '../src/stavebarline.js'; +import { StaveNote } from '../src/stavenote.js'; +import { Repetition } from '../src/staverepetition.js'; +import { VoltaType } from '../src/stavevolta.js'; +import { TextJustification } from '../src/textnote.js'; +import { TimeSignature } from '../src/timesignature.js'; +const StaveTests = { + Start() { + QUnit.module('Stave'); + test('StaveModifiers SortByCategory', sortByCategory); + const run = VexFlowTests.runTests; + run('Stave Draw Test', draw); + run('Open Stave Draw Test', drawOpenStave); + run('Multiple Stave Barline Test', drawMultipleMeasures); + run('Multiple Stave Barline Test (14pt Section)', drawMultipleMeasures, { fontSize: 14 }); + run('Multiple Stave Repeats Test', drawRepeats); + run('Stave End Modifiers Test', drawEndModifiers); + run('Stave Repetition (CODA) Positioning', drawStaveRepetition, { yShift: 0 }); + run('Stave Repetition (CODA) Positioning (-20)', drawStaveRepetition, { yShift: -20 }); + run('Stave Repetition (CODA) Positioning (+10)', drawStaveRepetition, { yShift: +10 }); + run('Multiple Staves Volta Test', drawVolta); + run('Volta + Modifier Measure Test', drawVoltaModifier); + run('Tempo Test', drawTempo); + run('Single Line Configuration Test', configureSingleLine); + run('Batch Line Configuration Test', configureAllLines); + run('Stave Text Test', drawStaveText); + run('Multiple Line Stave Text Test', drawStaveTextMultiLine); + run('Factory API', factoryAPI); + }, +}; +function sortByCategory() { + const stave = new Stave(0, 0, 300); + const clef0 = new Clef('treble'); + const clef1 = new Clef('alto'); + const clef2 = new Clef('bass'); + const time0 = new TimeSignature('C'); + const time1 = new TimeSignature('C|'); + const time2 = new TimeSignature('9/8'); + const key0 = new KeySignature('G'); + const key1 = new KeySignature('F'); + const key2 = new KeySignature('D'); + const bar0 = new Barline(BarlineType.SINGLE); + const bar1 = new Barline(BarlineType.DOUBLE); + const bar2 = new Barline(BarlineType.NONE); + const order0 = { Barline: 0, Clef: 1, KeySignature: 2, TimeSignature: 3 }; + const order1 = { TimeSignature: 0, KeySignature: 1, Barline: 2, Clef: 3 }; + const sortAndCompare = (title, a, b, order) => { + stave.sortByCategory(a, order); + let isSame = true; + if (a.length !== b.length) + isSame = false; + for (let i = 0; i < a.length; ++i) { + if (a[i] !== b[i]) + isSame = false; + } + ok(isSame, title); + }; + sortAndCompare('Keep the original order 1', [bar0, bar1, clef0, clef1, key0, key1, time0, time1], [bar0, bar1, clef0, clef1, key0, key1, time0, time1], order0); + sortAndCompare('Keep the original order 2', [time0, time1, key0, key1, bar0, bar1, clef0, clef1], [time0, time1, key0, key1, bar0, bar1, clef0, clef1], order1); + sortAndCompare('Sort and keep 1', [bar0, bar1, clef0, clef1, key0, key1, time0, time1], [time0, time1, key0, key1, bar0, bar1, clef0, clef1], order1); + sortAndCompare('Sort and keep 2', [bar0, clef0, key0, time0, key1, time1, clef1, bar1, time2, clef2, bar2, key2], [bar0, bar1, bar2, clef0, clef1, clef2, key0, key1, key2, time0, time1, time2], order0); + sortAndCompare('Sort and keep 3', [bar2, clef2, key2, time0, key0, time2, clef1, bar1, time1, clef0, bar0, key1], [time0, time2, time1, key2, key0, key1, bar2, bar1, bar0, clef2, clef1, clef0], order1); +} +function draw(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 150); + const stave = new Stave(10, 10, 300); + stave.setContext(ctx); + stave.draw(); + equal(stave.getYForNote(0), 100, 'getYForNote(0)'); + equal(stave.getYForLine(5), 100, 'getYForLine(5)'); + equal(stave.getYForLine(0), 50, 'getYForLine(0) - Top Line'); + equal(stave.getYForLine(4), 90, 'getYForLine(4) - Bottom Line'); + ok(true, 'all pass'); +} +function drawOpenStave(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 350); + let stave = new Stave(10, 10, 300, { left_bar: false }); + stave.setContext(ctx); + stave.draw(); + stave = new Stave(10, 150, 300, { right_bar: false }); + stave.setContext(ctx); + stave.draw(); + ok(true, 'all pass'); +} +function drawMultipleMeasures(options, contextBuilder) { + var _a, _b; + expect(0); + const ctx = contextBuilder(options.elementId, 550, 200); + const staveBar1 = new Stave(10, 50, 200); + staveBar1.setBegBarType(BarlineType.REPEAT_BEGIN); + staveBar1.setEndBarType(BarlineType.DOUBLE); + staveBar1.setSection('A', 0, 0, (_a = options.params) === null || _a === void 0 ? void 0 : _a.fontSize, false); + staveBar1.addClef('treble').setContext(ctx).draw(); + const notesBar1 = [ + new StaveNote({ keys: ['c/4'], duration: 'q' }), + new StaveNote({ keys: ['d/4'], duration: 'q' }), + new StaveNote({ keys: ['b/4'], duration: 'qr' }), + new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: 'q' }), + ]; + Formatter.FormatAndDraw(ctx, staveBar1, notesBar1); + const staveBar2 = new Stave(staveBar1.getWidth() + staveBar1.getX(), staveBar1.getY(), 300); + staveBar2.setSection('B', 0, 0, (_b = options.params) === null || _b === void 0 ? void 0 : _b.fontSize); + staveBar2.setEndBarType(BarlineType.END); + staveBar2.setContext(ctx).draw(); + const notesBar2_part1 = [ + new StaveNote({ keys: ['c/4'], duration: '8' }), + new StaveNote({ keys: ['d/4'], duration: '8' }), + new StaveNote({ keys: ['g/4'], duration: '8' }), + new StaveNote({ keys: ['e/4'], duration: '8' }), + ]; + const notesBar2_part2 = [ + new StaveNote({ keys: ['c/4'], duration: '8' }), + new StaveNote({ keys: ['d/4'], duration: '8' }), + new StaveNote({ keys: ['g/4'], duration: '8' }), + new StaveNote({ keys: ['e/4'], duration: '8' }), + ]; + const beam1 = new Beam(notesBar2_part1); + const beam2 = new Beam(notesBar2_part2); + const notesBar2 = notesBar2_part1.concat(notesBar2_part2); + Formatter.FormatAndDraw(ctx, staveBar2, notesBar2); + beam1.setContext(ctx).draw(); + beam2.setContext(ctx).draw(); +} +function drawRepeats(options, contextBuilder) { + expect(0); + const ctx = contextBuilder(options.elementId, 750, 120); + const staveBar1 = new Stave(10, 0, 250); + staveBar1.setBegBarType(BarlineType.REPEAT_BEGIN); + staveBar1.setEndBarType(BarlineType.REPEAT_END); + staveBar1.addClef('treble'); + staveBar1.addKeySignature('A'); + staveBar1.setContext(ctx).draw(); + const notesBar1 = [ + new StaveNote({ keys: ['c/4'], duration: 'q' }), + new StaveNote({ keys: ['d/4'], duration: 'q' }), + new StaveNote({ keys: ['b/4'], duration: 'qr' }), + new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: 'q' }), + ]; + Formatter.FormatAndDraw(ctx, staveBar1, notesBar1); + const staveBar2 = new Stave(staveBar1.getWidth() + staveBar1.getX(), staveBar1.getY(), 250); + staveBar2.setBegBarType(BarlineType.REPEAT_BEGIN); + staveBar2.setEndBarType(BarlineType.REPEAT_END); + staveBar2.setContext(ctx).draw(); + const notesBar2_part1 = [ + new StaveNote({ keys: ['c/4'], duration: '8' }), + new StaveNote({ keys: ['d/4'], duration: '8' }), + new StaveNote({ keys: ['g/4'], duration: '8' }), + new StaveNote({ keys: ['e/4'], duration: '8' }), + ]; + const notesBar2_part2 = [ + new StaveNote({ keys: ['c/4'], duration: '8' }), + new StaveNote({ keys: ['d/4'], duration: '8' }), + new StaveNote({ keys: ['g/4'], duration: '8' }), + new StaveNote({ keys: ['e/4'], duration: '8' }), + ]; + notesBar2_part2[0].addModifier(new Accidental('#'), 0); + notesBar2_part2[1].addModifier(new Accidental('#'), 0); + notesBar2_part2[3].addModifier(new Accidental('b'), 0); + const beam1 = new Beam(notesBar2_part1); + const beam2 = new Beam(notesBar2_part2); + const notesBar2 = notesBar2_part1.concat(notesBar2_part2); + Formatter.FormatAndDraw(ctx, staveBar2, notesBar2); + beam1.setContext(ctx).draw(); + beam2.setContext(ctx).draw(); + const staveBar3 = new Stave(staveBar2.getWidth() + staveBar2.getX(), staveBar2.getY(), 50); + staveBar3.setContext(ctx).draw(); + const notesBar3 = [new StaveNote({ keys: ['d/5'], duration: 'wr' })]; + Formatter.FormatAndDraw(ctx, staveBar3, notesBar3); + const staveBar4 = new Stave(staveBar3.getWidth() + staveBar3.getX(), staveBar3.getY(), 250 - staveBar1.getModifierXShift()); + staveBar4.setBegBarType(BarlineType.REPEAT_BEGIN); + staveBar4.setEndBarType(BarlineType.REPEAT_END); + staveBar4.setContext(ctx).draw(); + const notesBar4 = [ + new StaveNote({ keys: ['c/4'], duration: 'q' }), + new StaveNote({ keys: ['d/4'], duration: 'q' }), + new StaveNote({ keys: ['b/4'], duration: 'qr' }), + new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: 'q' }), + ]; + Formatter.FormatAndDraw(ctx, staveBar4, notesBar4); +} +function drawEndModifiers(options, contextBuilder) { + expect(0); + const staveWidth = 230; + const blockHeight = 80; + let x = 10; + let y = 0; + const ctx = contextBuilder(options.elementId, 800, 700); + function drawStavesInTwoLines(endBarLine) { + function drawStave(x, y, width, begMods, endMods) { + const staveBar = new Stave(x, y, width - 10); + if (begMods) { + if (begMods.barLine !== undefined) { + staveBar.setBegBarType(begMods.barLine); + } + if (begMods.clef !== undefined) { + staveBar.addClef(begMods.clef); + } + if (begMods.keySig !== undefined) { + staveBar.addKeySignature(begMods.keySig); + } + if (begMods.timeSig !== undefined) { + staveBar.setTimeSignature(begMods.timeSig); + } + } + if (endMods) { + if (endMods.barLine !== undefined) { + staveBar.setEndBarType(endMods.barLine); + } + if (endMods.clef !== undefined) { + staveBar.addEndClef(endMods.clef); + } + if (endMods.keySig !== undefined) { + staveBar.setEndKeySignature(endMods.keySig); + } + if (endMods.timeSig !== undefined) { + staveBar.setEndTimeSignature(endMods.timeSig); + } + } + staveBar.setContext(ctx).draw(); + const notesBar = [ + new StaveNote({ keys: ['c/4'], duration: 'q' }), + new StaveNote({ keys: ['d/4'], duration: 'q' }), + new StaveNote({ keys: ['b/4'], duration: 'qr' }), + new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: 'q' }), + ]; + Formatter.FormatAndDraw(ctx, staveBar, notesBar); + } + drawStave(x, y, staveWidth + 50, { barLine: BarlineType.REPEAT_BEGIN, clef: 'treble', keySig: 'A' }, { barLine: endBarLine, clef: 'bass' }); + x += staveWidth + 50; + drawStave(x, y, staveWidth, { barLine: BarlineType.REPEAT_BEGIN }, { barLine: endBarLine, keySig: 'E' }); + x += staveWidth; + drawStave(x, y, staveWidth, { barLine: BarlineType.REPEAT_BEGIN }, { barLine: endBarLine, timeSig: '2/4' }); + x += staveWidth; + x = 10; + y += blockHeight; + drawStave(x, y, staveWidth, { barLine: BarlineType.REPEAT_BEGIN }, { barLine: endBarLine, clef: 'bass', timeSig: '2/4' }); + x += staveWidth; + drawStave(x, y, staveWidth, { barLine: BarlineType.REPEAT_BEGIN }, { barLine: endBarLine, clef: 'treble', keySig: 'Ab' }); + x += staveWidth; + drawStave(x, y, staveWidth, { barLine: BarlineType.REPEAT_BEGIN }, { barLine: endBarLine, clef: 'bass', keySig: 'Ab', timeSig: '2/4' }); + x += staveWidth; + } + y = 0; + x = 10; + drawStavesInTwoLines(BarlineType.SINGLE); + y += blockHeight + 10; + x = 10; + drawStavesInTwoLines(BarlineType.DOUBLE); + y += blockHeight + 10; + x = 10; + drawStavesInTwoLines(BarlineType.REPEAT_END); + y += blockHeight + 10; + x = 10; + drawStavesInTwoLines(BarlineType.REPEAT_BOTH); +} +function drawStaveRepetition(options, contextBuilder) { + expect(0); + const ctx = contextBuilder(options.elementId, 725, 200); + const mm1 = new Stave(10, 50, 150); + mm1.addClef('treble'); + mm1.setRepetitionType(Repetition.type.DS_AL_FINE, options.params.yShift); + mm1.setMeasure(1); + mm1.setContext(ctx).draw(); + const notesmm1 = [ + new StaveNote({ keys: ['a/4'], duration: 'q' }), + new StaveNote({ keys: ['f/4'], duration: 'q' }), + new StaveNote({ keys: ['f/4'], duration: 'q' }), + new StaveNote({ keys: ['a/4'], duration: 'q' }), + ]; + Formatter.FormatAndDraw(ctx, mm1, notesmm1); + const mm2 = new Stave(mm1.getWidth() + mm1.getX(), mm1.getY(), 150); + mm2.setRepetitionType(Repetition.type.TO_CODA, options.params.yShift); + mm2.setMeasure(2); + mm2.setContext(ctx).draw(); + const notesmm2 = [ + new StaveNote({ keys: ['a/4'], duration: 'q' }), + new StaveNote({ keys: ['f/4'], duration: 'q' }), + new StaveNote({ keys: ['f/4'], duration: 'q' }), + new StaveNote({ keys: ['a/4'], duration: 'q' }), + ]; + Formatter.FormatAndDraw(ctx, mm2, notesmm2); + const mm3 = new Stave(mm2.getWidth() + mm2.getX(), mm1.getY(), 150); + mm3.setRepetitionType(Repetition.type.DS_AL_CODA, options.params.yShift); + mm3.setMeasure(3); + mm3.setContext(ctx).draw(); + const notesmm3 = [ + new StaveNote({ keys: ['a/4'], duration: 'q' }), + new StaveNote({ keys: ['f/4'], duration: 'q' }), + new StaveNote({ keys: ['f/4'], duration: 'q' }), + new StaveNote({ keys: ['a/4'], duration: 'q' }), + ]; + Formatter.FormatAndDraw(ctx, mm3, notesmm3); + const mm4 = new Stave(mm3.getWidth() + mm3.getX(), mm1.getY(), 150); + mm4.setRepetitionType(Repetition.type.CODA_LEFT, options.params.yShift); + mm4.setMeasure(4); + mm4.setContext(ctx).draw(); + const notesmm4 = [ + new StaveNote({ keys: ['a/4'], duration: 'q' }), + new StaveNote({ keys: ['f/4'], duration: 'q' }), + new StaveNote({ keys: ['f/4'], duration: 'q' }), + new StaveNote({ keys: ['a/4'], duration: 'q' }), + ]; + Formatter.FormatAndDraw(ctx, mm4, notesmm4); +} +function drawVolta(options, contextBuilder) { + expect(0); + const ctx = contextBuilder(options.elementId, 725, 200); + const mm1 = new Stave(10, 50, 125); + mm1.setBegBarType(BarlineType.REPEAT_BEGIN); + mm1.setRepetitionType(Repetition.type.SEGNO_LEFT); + mm1.addClef('treble'); + mm1.addKeySignature('A'); + mm1.setMeasure(1); + mm1.setSection('A', 0); + mm1.setContext(ctx).draw(); + const notesmm1 = [new StaveNote({ keys: ['c/4'], duration: 'w' })]; + Formatter.FormatAndDraw(ctx, mm1, notesmm1); + const mm2 = new Stave(mm1.getWidth() + mm1.getX(), mm1.getY(), 60); + mm2.setRepetitionType(Repetition.type.CODA_RIGHT); + mm2.setMeasure(2); + mm2.setContext(ctx).draw(); + const notesmm2 = [new StaveNote({ keys: ['d/4'], duration: 'w' })]; + Formatter.FormatAndDraw(ctx, mm2, notesmm2); + const mm3 = new Stave(mm2.getWidth() + mm2.getX(), mm1.getY(), 60); + mm3.setVoltaType(VoltaType.BEGIN, '1.', -5); + mm3.setMeasure(3); + mm3.setContext(ctx).draw(); + const notesmm3 = [new StaveNote({ keys: ['e/4'], duration: 'w' })]; + Formatter.FormatAndDraw(ctx, mm3, notesmm3); + const mm4 = new Stave(mm3.getWidth() + mm3.getX(), mm1.getY(), 60); + mm4.setVoltaType(VoltaType.MID, '', -5); + mm4.setMeasure(4); + mm4.setContext(ctx).draw(); + const notesmm4 = [new StaveNote({ keys: ['f/4'], duration: 'w' })]; + Formatter.FormatAndDraw(ctx, mm4, notesmm4); + const mm5 = new Stave(mm4.getWidth() + mm4.getX(), mm1.getY(), 60); + mm5.setEndBarType(BarlineType.REPEAT_END); + mm5.setVoltaType(VoltaType.END, '', -5); + mm5.setMeasure(5); + mm5.setContext(ctx).draw(); + const notesmm5 = [new StaveNote({ keys: ['g/4'], duration: 'w' })]; + Formatter.FormatAndDraw(ctx, mm5, notesmm5); + const mm6 = new Stave(mm5.getWidth() + mm5.getX(), mm1.getY(), 60); + mm6.setVoltaType(VoltaType.BEGIN_END, '2.', -5); + mm6.setEndBarType(BarlineType.DOUBLE); + mm6.setMeasure(6); + mm6.setContext(ctx).draw(); + const notesmm6 = [new StaveNote({ keys: ['a/4'], duration: 'w' })]; + Formatter.FormatAndDraw(ctx, mm6, notesmm6); + const mm7 = new Stave(mm6.getWidth() + mm6.getX(), mm1.getY(), 60); + mm7.setMeasure(7); + mm7.setSection('B', 0); + mm7.setContext(ctx).draw(); + const notesmm7 = [new StaveNote({ keys: ['b/4'], duration: 'w' })]; + Formatter.FormatAndDraw(ctx, mm7, notesmm7); + const mm8 = new Stave(mm7.getWidth() + mm7.getX(), mm1.getY(), 60); + mm8.setEndBarType(BarlineType.DOUBLE); + mm8.setRepetitionType(Repetition.type.DS_AL_CODA); + mm8.setMeasure(8); + mm8.setContext(ctx).draw(); + const notesmm8 = [new StaveNote({ keys: ['c/5'], duration: 'w' })]; + Formatter.FormatAndDraw(ctx, mm8, notesmm8); + const mm9 = new Stave(mm8.getWidth() + mm8.getX() + 20, mm1.getY(), 125); + mm9.setEndBarType(BarlineType.END); + mm9.setRepetitionType(Repetition.type.CODA_LEFT); + mm9.addClef('treble'); + mm9.addKeySignature('A'); + mm9.setMeasure(9); + mm9.setContext(ctx).draw(); + const notesmm9 = [new StaveNote({ keys: ['d/5'], duration: 'w' })]; + Formatter.FormatAndDraw(ctx, mm9, notesmm9); +} +function drawVoltaModifier(options, contextBuilder) { + expect(0); + const ctx = contextBuilder(options.elementId, 1100, 200); + const mm1 = new Stave(10, 50, 175); + mm1.setBegBarType(BarlineType.REPEAT_BEGIN); + mm1.setVoltaType(VoltaType.BEGIN_END, '1.', -5); + mm1.addClef('treble'); + mm1.addKeySignature('A'); + mm1.setMeasure(1); + mm1.setSection('A', 0); + mm1.setContext(ctx).draw(); + const notesmm1 = [new StaveNote({ keys: ['c/4'], duration: 'w' })]; + Formatter.FormatAndDraw(ctx, mm1, notesmm1); + const mm2 = new Stave(mm1.getX() + mm1.getWidth(), mm1.getY(), 175); + mm2.setBegBarType(BarlineType.REPEAT_BEGIN); + mm2.setRepetitionType(Repetition.type.DS); + mm2.setVoltaType(VoltaType.BEGIN, '2.', -5); + mm2.addClef('treble'); + mm2.addKeySignature('A'); + mm2.setMeasure(2); + mm2.setContext(ctx).draw(); + const notesmm2 = [new StaveNote({ keys: ['c/4'], duration: 'w' })]; + Formatter.FormatAndDraw(ctx, mm2, notesmm2); + const mm3 = new Stave(mm2.getX() + mm2.getWidth(), mm2.getY(), 175); + mm3.setVoltaType(VoltaType.MID, '', -5); + mm3.setRepetitionType(Repetition.type.DS); + mm3.addClef('treble'); + mm3.addKeySignature('B'); + mm3.setMeasure(3); + mm3.setSection('B', 0); + mm3.setContext(ctx).draw(); + const notesmm3 = [new StaveNote({ keys: ['c/4'], duration: 'w' })]; + Formatter.FormatAndDraw(ctx, mm3, notesmm3); + const mm4 = new Stave(mm3.getX() + mm3.getWidth(), mm3.getY(), 175); + mm4.setVoltaType(VoltaType.END, '1.', -5); + mm4.setRepetitionType(Repetition.type.DS); + mm4.addClef('treble'); + mm4.addKeySignature('A'); + mm4.setMeasure(4); + mm4.setSection('C', 0); + mm4.setContext(ctx).draw(); + const notesmm4 = [new StaveNote({ keys: ['c/4'], duration: 'w' })]; + Formatter.FormatAndDraw(ctx, mm4, notesmm4); + const mm5 = new Stave(mm4.getX() + mm4.getWidth(), mm4.getY(), 175); + mm5.setEndBarType(BarlineType.DOUBLE); + mm5.setRepetitionType(Repetition.type.DS); + mm5.addClef('treble'); + mm5.addKeySignature('A'); + mm5.setMeasure(5); + mm5.setSection('D', 0); + mm5.setContext(ctx).draw(); + const notesmm5 = [new StaveNote({ keys: ['c/4'], duration: 'w' })]; + Formatter.FormatAndDraw(ctx, mm5, notesmm5); + const mm6 = new Stave(mm5.getX() + mm5.getWidth(), mm5.getY(), 175); + mm6.setRepetitionType(Repetition.type.DS); + mm6.setMeasure(6); + mm6.setSection('E', 0); + mm6.setContext(ctx).draw(); + const notesmm6 = [new StaveNote({ keys: ['c/4'], duration: 'w' })]; + Formatter.FormatAndDraw(ctx, mm6, notesmm6); +} +function drawTempo(options, contextBuilder) { + expect(0); + const ctx = contextBuilder(options.elementId, 725, 350); + const padding = 10; + let x = 0; + let y = 50; + function drawTempoStaveBar(width, tempo, tempo_y, notes) { + const staveBar = new Stave(padding + x, y, width); + if (x === 0) + staveBar.addClef('treble'); + staveBar.setTempo(tempo, tempo_y); + staveBar.setContext(ctx).draw(); + const notesBar = notes || [ + new StaveNote({ keys: ['c/4'], duration: 'q' }), + new StaveNote({ keys: ['d/4'], duration: 'q' }), + new StaveNote({ keys: ['b/4'], duration: 'q' }), + new StaveNote({ keys: ['c/4'], duration: 'q' }), + ]; + Formatter.FormatAndDraw(ctx, staveBar, notesBar); + x += width; + } + drawTempoStaveBar(120, { duration: 'q', dots: 1, bpm: 80 }, 0); + drawTempoStaveBar(100, { duration: '8', dots: 2, bpm: 90 }, 0); + drawTempoStaveBar(100, { duration: '16', dots: 1, bpm: 96 }, 0); + drawTempoStaveBar(100, { duration: '32', bpm: 70 }, 0); + drawTempoStaveBar(250, { name: 'Andante', bpm: 120 }, -20, [ + new StaveNote({ keys: ['c/4'], duration: '8' }), + new StaveNote({ keys: ['d/4'], duration: '8' }), + new StaveNote({ keys: ['g/4'], duration: '8' }), + new StaveNote({ keys: ['e/5'], duration: '8' }), + new StaveNote({ keys: ['c/4'], duration: '8' }), + new StaveNote({ keys: ['d/4'], duration: '8' }), + new StaveNote({ keys: ['g/4'], duration: '8' }), + new StaveNote({ keys: ['e/4'], duration: '8' }), + ]); + x = 0; + y += 150; + drawTempoStaveBar(120, { duration: 'w', bpm: 80 }, 0); + drawTempoStaveBar(100, { duration: 'h', bpm: 90 }, 0); + drawTempoStaveBar(100, { duration: 'q', bpm: 96 }, 0); + drawTempoStaveBar(100, { duration: '8', bpm: 70 }, 0); + drawTempoStaveBar(250, { name: 'Andante grazioso' }, 0, [ + new StaveNote({ keys: ['c/4'], duration: '8' }), + new StaveNote({ keys: ['d/4'], duration: '8' }), + new StaveNote({ keys: ['g/4'], duration: '8' }), + new StaveNote({ keys: ['e/4'], duration: '8' }), + new StaveNote({ keys: ['c/4'], duration: '8' }), + new StaveNote({ keys: ['d/4'], duration: '8' }), + new StaveNote({ keys: ['g/4'], duration: '8' }), + new StaveNote({ keys: ['e/4'], duration: '8' }), + ]); +} +function configureSingleLine(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 120); + const stave = new Stave(10, 10, 300); + stave + .setConfigForLine(0, { visible: true }) + .setConfigForLine(1, { visible: false }) + .setConfigForLine(2, { visible: true }) + .setConfigForLine(3, { visible: false }) + .setConfigForLine(4, { visible: true }); + stave.setContext(ctx).draw(); + const config = stave.getConfigForLines(); + equal(config[0].visible, true, 'getLinesConfiguration() - Line 0'); + equal(config[1].visible, false, 'getLinesConfiguration() - Line 1'); + equal(config[2].visible, true, 'getLinesConfiguration() - Line 2'); + equal(config[3].visible, false, 'getLinesConfiguration() - Line 3'); + equal(config[4].visible, true, 'getLinesConfiguration() - Line 4'); + ok(true, 'all pass'); +} +function configureAllLines(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 120); + const stave = new Stave(10, 10, 300); + stave + .setConfigForLines([{ visible: false }, {}, { visible: false }, { visible: true }, { visible: false }]) + .setContext(ctx) + .draw(); + const config = stave.getConfigForLines(); + equal(config[0].visible, false, 'getLinesConfiguration() - Line 0'); + equal(config[1].visible, true, 'getLinesConfiguration() - Line 1'); + equal(config[2].visible, false, 'getLinesConfiguration() - Line 2'); + equal(config[3].visible, true, 'getLinesConfiguration() - Line 3'); + equal(config[4].visible, false, 'getLinesConfiguration() - Line 4'); + ok(true, 'all pass'); +} +function drawStaveText(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 900, 140); + const stave = new Stave(300, 10, 300); + stave.setText('Violin', Modifier.Position.LEFT); + stave.setText('Right Text', Modifier.Position.RIGHT); + stave.setText('Above Text', Modifier.Position.ABOVE); + stave.setText('Below Text', Modifier.Position.BELOW); + stave.setContext(ctx).draw(); + ok(true, 'all pass'); +} +function drawStaveTextMultiLine(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 900, 200); + const stave = new Stave(300, 40, 300); + stave.setText('Violin', Modifier.Position.LEFT, { shift_y: -10 }); + stave.setText('2nd line', Modifier.Position.LEFT, { shift_y: 10 }); + stave.setText('Right Text', Modifier.Position.RIGHT, { shift_y: -10 }); + stave.setText('2nd line', Modifier.Position.RIGHT, { shift_y: 10 }); + stave.setText('Above Text', Modifier.Position.ABOVE, { shift_y: -10 }); + stave.setText('2nd line', Modifier.Position.ABOVE, { shift_y: 10 }); + stave.setText('Left Below Text', Modifier.Position.BELOW, { shift_y: -10, justification: TextJustification.LEFT }); + stave.setText('Right Below Text', Modifier.Position.BELOW, { shift_y: 10, justification: TextJustification.RIGHT }); + stave.setContext(ctx).draw(); + ok(true, 'all pass'); +} +function factoryAPI(options) { + const f = VexFlowTests.makeFactory(options, 900, 200); + const stave = f.Stave({ x: 300, y: 40, width: 300 }); + stave.setText('Violin', Modifier.Position.LEFT, { shift_y: -10 }); + stave.setText('2nd line', Modifier.Position.LEFT, { shift_y: 10 }); + f.draw(); + ok(true, 'all pass'); +} +VexFlowTests.register(StaveTests); +export { StaveTests }; diff --git a/build/esm/tests/staveconnector_tests.js b/build/esm/tests/staveconnector_tests.js new file mode 100644 index 0000000000..76fb9b7e38 --- /dev/null +++ b/build/esm/tests/staveconnector_tests.js @@ -0,0 +1,402 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Flow } from '../src/flow.js'; +import { Modifier } from '../src/modifier.js'; +import { Stave } from '../src/stave.js'; +import { BarlineType } from '../src/stavebarline.js'; +import { StaveConnector } from '../src/staveconnector.js'; +const StaveConnectorTests = { + Start() { + QUnit.module('StaveConnector'); + const run = VexFlowTests.runTests; + run('Single Draw Test', drawSingle); + run('Single Draw Test, 4px Stave Line Thickness', drawSingle4pxStaveLines); + run('Single Both Sides Test', drawSingleBoth); + run('Double Draw Test', drawDouble); + run('Bold Double Line Left Draw Test', drawRepeatBegin); + run('Bold Double Line Right Draw Test', drawRepeatEnd); + run('Thin Double Line Right Draw Test', drawThinDouble); + run('Bold Double Lines Overlapping Draw Test', drawRepeatAdjacent); + run('Bold Double Lines Offset Draw Test', drawRepeatOffset); + run('Bold Double Lines Offset Draw Test 2', drawRepeatOffset2); + run('Brace Draw Test', drawBrace); + run('Brace Wide Draw Test', drawBraceWide); + run('Bracket Draw Test', drawBracket); + run('Combined Draw Test', drawCombined); + }, +}; +function drawSingle(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new Stave(25, 10, 300); + const stave2 = new Stave(25, 120, 300); + stave1.setContext(ctx); + stave2.setContext(ctx); + const connector = new StaveConnector(stave1, stave2); + connector.setType(StaveConnector.type.SINGLE); + connector.setContext(ctx); + stave1.draw(); + stave2.draw(); + connector.draw(); + ok(true, 'all pass'); +} +function drawSingle4pxStaveLines(options, contextBuilder) { + const oldThickness = Flow.STAVE_LINE_THICKNESS; + Flow.STAVE_LINE_THICKNESS = 4; + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new Stave(25, 10, 300); + const stave2 = new Stave(25, 120, 300); + stave1.setContext(ctx); + stave2.setContext(ctx); + const connector = new StaveConnector(stave1, stave2); + connector.setType(StaveConnector.type.SINGLE); + connector.setContext(ctx); + stave1.draw(); + stave2.draw(); + connector.draw(); + Flow.STAVE_LINE_THICKNESS = oldThickness; + ok(true, 'all pass'); +} +function drawSingleBoth(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new Stave(25, 10, 300); + const stave2 = new Stave(25, 120, 300); + stave1.setContext(ctx); + stave2.setContext(ctx); + const connector1 = new StaveConnector(stave1, stave2); + connector1.setType(StaveConnector.type.SINGLE_LEFT); + connector1.setContext(ctx); + const connector2 = new StaveConnector(stave1, stave2); + connector2.setType(StaveConnector.type.SINGLE_RIGHT); + connector2.setContext(ctx); + stave1.draw(); + stave2.draw(); + connector1.draw(); + connector2.draw(); + ok(true, 'all pass'); +} +function drawDouble(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new Stave(25, 10, 300); + const stave2 = new Stave(25, 120, 300); + stave1.setContext(ctx); + stave2.setContext(ctx); + const connector = new StaveConnector(stave1, stave2); + const line = new StaveConnector(stave1, stave2); + connector.setType(StaveConnector.type.DOUBLE); + connector.setContext(ctx); + line.setType(StaveConnector.type.SINGLE); + connector.setContext(ctx); + line.setContext(ctx); + stave1.draw(); + stave2.draw(); + connector.draw(); + line.draw(); + ok(true, 'all pass'); +} +function drawBrace(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 450, 300); + const stave1 = new Stave(100, 10, 300); + const stave2 = new Stave(100, 120, 300); + stave1.setContext(ctx); + stave2.setContext(ctx); + const connector = new StaveConnector(stave1, stave2); + const line = new StaveConnector(stave1, stave2); + connector.setType(StaveConnector.type.BRACE); + connector.setContext(ctx); + connector.setText('Piano'); + line.setType(StaveConnector.type.SINGLE); + connector.setContext(ctx); + line.setContext(ctx); + stave1.draw(); + stave2.draw(); + connector.draw(); + line.draw(); + ok(true, 'all pass'); +} +function drawBraceWide(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new Stave(25, -20, 300); + const stave2 = new Stave(25, 200, 300); + stave1.setContext(ctx); + stave2.setContext(ctx); + const connector = new StaveConnector(stave1, stave2); + const line = new StaveConnector(stave1, stave2); + connector.setType(StaveConnector.type.BRACE); + connector.setContext(ctx); + line.setType(StaveConnector.type.SINGLE); + connector.setContext(ctx); + line.setContext(ctx); + stave1.draw(); + stave2.draw(); + connector.draw(); + line.draw(); + ok(true, 'all pass'); +} +function drawBracket(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new Stave(25, 10, 300); + const stave2 = new Stave(25, 120, 300); + stave1.setContext(ctx); + stave2.setContext(ctx); + const connector = new StaveConnector(stave1, stave2); + const line = new StaveConnector(stave1, stave2); + connector.setType(StaveConnector.type.BRACKET); + connector.setContext(ctx); + line.setType(StaveConnector.type.SINGLE); + connector.setContext(ctx); + line.setContext(ctx); + stave1.draw(); + stave2.draw(); + connector.draw(); + line.draw(); + ok(true, 'all pass'); +} +function drawRepeatBegin(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new Stave(25, 10, 300); + const stave2 = new Stave(25, 120, 300); + stave1.setContext(ctx); + stave2.setContext(ctx); + stave1.setBegBarType(BarlineType.REPEAT_BEGIN); + stave2.setBegBarType(BarlineType.REPEAT_BEGIN); + const line = new StaveConnector(stave1, stave2); + line.setType(StaveConnector.type.BOLD_DOUBLE_LEFT); + line.setContext(ctx); + stave1.draw(); + stave2.draw(); + line.draw(); + ok(true, 'all pass'); +} +function drawRepeatEnd(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new Stave(25, 10, 300); + const stave2 = new Stave(25, 120, 300); + stave1.setContext(ctx); + stave2.setContext(ctx); + stave1.setEndBarType(BarlineType.REPEAT_END); + stave2.setEndBarType(BarlineType.REPEAT_END); + const line = new StaveConnector(stave1, stave2); + line.setType(StaveConnector.type.BOLD_DOUBLE_RIGHT); + line.setContext(ctx); + stave1.draw(); + stave2.draw(); + line.draw(); + ok(true, 'all pass'); +} +function drawThinDouble(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new Stave(25, 10, 300); + const stave2 = new Stave(25, 120, 300); + stave1.setContext(ctx); + stave2.setContext(ctx); + stave1.setEndBarType(BarlineType.DOUBLE); + stave2.setEndBarType(BarlineType.DOUBLE); + const line = new StaveConnector(stave1, stave2); + line.setType(StaveConnector.type.THIN_DOUBLE); + line.setContext(ctx); + stave1.draw(); + stave2.draw(); + line.draw(); + ok(true, 'all pass'); +} +function drawRepeatAdjacent(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new Stave(25, 10, 150); + const stave2 = new Stave(25, 120, 150); + const stave3 = new Stave(175, 10, 150); + const stave4 = new Stave(175, 120, 150); + stave1.setContext(ctx); + stave2.setContext(ctx); + stave3.setContext(ctx); + stave4.setContext(ctx); + stave1.setEndBarType(BarlineType.REPEAT_END); + stave2.setEndBarType(BarlineType.REPEAT_END); + stave3.setEndBarType(BarlineType.END); + stave4.setEndBarType(BarlineType.END); + stave1.setBegBarType(BarlineType.REPEAT_BEGIN); + stave2.setBegBarType(BarlineType.REPEAT_BEGIN); + stave3.setBegBarType(BarlineType.REPEAT_BEGIN); + stave4.setBegBarType(BarlineType.REPEAT_BEGIN); + const connector1 = new StaveConnector(stave1, stave2); + const connector2 = new StaveConnector(stave1, stave2); + const connector3 = new StaveConnector(stave3, stave4); + const connector4 = new StaveConnector(stave3, stave4); + connector1.setContext(ctx); + connector2.setContext(ctx); + connector3.setContext(ctx); + connector4.setContext(ctx); + connector1.setType(StaveConnector.type.BOLD_DOUBLE_LEFT); + connector2.setType(StaveConnector.type.BOLD_DOUBLE_RIGHT); + connector3.setType(StaveConnector.type.BOLD_DOUBLE_LEFT); + connector4.setType(StaveConnector.type.BOLD_DOUBLE_RIGHT); + stave1.draw(); + stave2.draw(); + stave3.draw(); + stave4.draw(); + connector1.draw(); + connector2.draw(); + connector3.draw(); + connector4.draw(); + ok(true, 'all pass'); +} +function drawRepeatOffset2(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new Stave(25, 10, 150); + const stave2 = new Stave(25, 120, 150); + const stave3 = new Stave(175, 10, 150); + const stave4 = new Stave(175, 120, 150); + stave1.setContext(ctx); + stave2.setContext(ctx); + stave3.setContext(ctx); + stave4.setContext(ctx); + stave1.addClef('treble'); + stave2.addClef('bass'); + stave3.addClef('alto'); + stave4.addClef('treble'); + stave1.addTimeSignature('4/4'); + stave2.addTimeSignature('4/4'); + stave3.addTimeSignature('6/8'); + stave4.addTimeSignature('6/8'); + stave1.setEndBarType(BarlineType.REPEAT_END); + stave2.setEndBarType(BarlineType.REPEAT_END); + stave3.setEndBarType(BarlineType.END); + stave4.setEndBarType(BarlineType.END); + stave1.setBegBarType(BarlineType.REPEAT_BEGIN); + stave2.setBegBarType(BarlineType.REPEAT_BEGIN); + stave3.setBegBarType(BarlineType.REPEAT_BEGIN); + stave4.setBegBarType(BarlineType.REPEAT_BEGIN); + const connector1 = new StaveConnector(stave1, stave2); + const connector2 = new StaveConnector(stave1, stave2); + const connector3 = new StaveConnector(stave3, stave4); + const connector4 = new StaveConnector(stave3, stave4); + const connector5 = new StaveConnector(stave3, stave4); + connector1.setContext(ctx); + connector2.setContext(ctx); + connector3.setContext(ctx); + connector4.setContext(ctx); + connector5.setContext(ctx); + connector1.setType(StaveConnector.type.BOLD_DOUBLE_LEFT); + connector2.setType(StaveConnector.type.BOLD_DOUBLE_RIGHT); + connector3.setType(StaveConnector.type.BOLD_DOUBLE_LEFT); + connector4.setType(StaveConnector.type.BOLD_DOUBLE_RIGHT); + connector5.setType(StaveConnector.type.SINGLE_LEFT); + connector1.setXShift(stave1.getModifierXShift()); + connector3.setXShift(stave3.getModifierXShift()); + stave1.draw(); + stave2.draw(); + stave3.draw(); + stave4.draw(); + connector1.draw(); + connector2.draw(); + connector3.draw(); + connector4.draw(); + connector5.draw(); + ok(true, 'all pass'); +} +function drawRepeatOffset(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 300); + const stave1 = new Stave(25, 10, 150); + const stave2 = new Stave(25, 120, 150); + const stave3 = new Stave(185, 10, 150); + const stave4 = new Stave(185, 120, 150); + stave1.setContext(ctx); + stave2.setContext(ctx); + stave3.setContext(ctx); + stave4.setContext(ctx); + stave1.addClef('bass'); + stave2.addClef('alto'); + stave3.addClef('treble'); + stave4.addClef('tenor'); + stave3.addKeySignature('Ab'); + stave4.addKeySignature('Ab'); + stave1.addTimeSignature('4/4'); + stave2.addTimeSignature('4/4'); + stave3.addTimeSignature('6/8'); + stave4.addTimeSignature('6/8'); + stave1.setEndBarType(BarlineType.REPEAT_END); + stave2.setEndBarType(BarlineType.REPEAT_END); + stave3.setEndBarType(BarlineType.END); + stave4.setEndBarType(BarlineType.END); + stave1.setBegBarType(BarlineType.REPEAT_BEGIN); + stave2.setBegBarType(BarlineType.REPEAT_BEGIN); + stave3.setBegBarType(BarlineType.REPEAT_BEGIN); + stave4.setBegBarType(BarlineType.REPEAT_BEGIN); + const connector1 = new StaveConnector(stave1, stave2); + const connector2 = new StaveConnector(stave1, stave2); + const connector3 = new StaveConnector(stave3, stave4); + const connector4 = new StaveConnector(stave3, stave4); + const connector5 = new StaveConnector(stave3, stave4); + connector1.setContext(ctx); + connector2.setContext(ctx); + connector3.setContext(ctx); + connector4.setContext(ctx); + connector5.setContext(ctx); + connector1.setType(StaveConnector.type.BOLD_DOUBLE_LEFT); + connector2.setType(StaveConnector.type.BOLD_DOUBLE_RIGHT); + connector3.setType(StaveConnector.type.BOLD_DOUBLE_LEFT); + connector4.setType(StaveConnector.type.BOLD_DOUBLE_RIGHT); + connector5.setType(StaveConnector.type.SINGLE_LEFT); + connector1.setXShift(stave1.getModifierXShift()); + connector3.setXShift(stave3.getModifierXShift()); + stave1.draw(); + stave2.draw(); + stave3.draw(); + stave4.draw(); + connector1.draw(); + connector2.draw(); + connector3.draw(); + connector4.draw(); + connector5.draw(); + ok(true, 'all pass'); +} +function drawCombined(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 550, 700); + const stave1 = new Stave(150, 10, 300); + const stave2 = new Stave(150, 100, 300); + const stave3 = new Stave(150, 190, 300); + const stave4 = new Stave(150, 280, 300); + const stave5 = new Stave(150, 370, 300); + const stave6 = new Stave(150, 460, 300); + const stave7 = new Stave(150, 560, 300); + stave1.setText('Violin', Modifier.Position.LEFT); + stave1.setContext(ctx); + stave2.setContext(ctx); + stave3.setContext(ctx); + stave4.setContext(ctx); + stave5.setContext(ctx); + stave6.setContext(ctx); + stave7.setContext(ctx); + const conn_single = new StaveConnector(stave1, stave7); + const conn_double = new StaveConnector(stave2, stave3); + const conn_bracket = new StaveConnector(stave4, stave7); + const conn_none = new StaveConnector(stave4, stave5); + const conn_brace = new StaveConnector(stave6, stave7); + conn_single.setType(StaveConnector.type.SINGLE); + conn_double.setType(StaveConnector.type.DOUBLE); + conn_bracket.setType(StaveConnector.type.BRACKET); + conn_brace.setType(StaveConnector.type.BRACE); + conn_brace.setXShift(-5); + conn_double.setText('Piano'); + conn_none.setText('Multiple', { shift_y: -15 }); + conn_none.setText('Line Text', { shift_y: 15 }); + conn_brace.setText('Harpsichord'); + conn_single.setContext(ctx); + conn_double.setContext(ctx); + conn_bracket.setContext(ctx); + conn_none.setContext(ctx); + conn_brace.setContext(ctx); + stave1.draw(); + stave2.draw(); + stave3.draw(); + stave4.draw(); + stave5.draw(); + stave6.draw(); + stave7.draw(); + conn_single.draw(); + conn_double.draw(); + conn_bracket.draw(); + conn_none.draw(); + conn_brace.draw(); + ok(true, 'all pass'); +} +VexFlowTests.register(StaveConnectorTests); +export { StaveConnectorTests }; diff --git a/build/esm/tests/stavehairpin_tests.js b/build/esm/tests/stavehairpin_tests.js new file mode 100644 index 0000000000..b176dec5fe --- /dev/null +++ b/build/esm/tests/stavehairpin_tests.js @@ -0,0 +1,90 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { StaveHairpin } from '../src/stavehairpin.js'; +const StaveHairpinTests = { + Start() { + QUnit.module('StaveHairpin'); + const run = VexFlowTests.runTests; + run('Simple StaveHairpin', simple); + run('Horizontal Offset StaveHairpin', horizontal); + run('Vertical Offset StaveHairpin', vertical); + run('Height StaveHairpin', height); + }, +}; +function drawHairpin(first_note, last_note, ctx, type, position, options) { + const hairpin = new StaveHairpin({ first_note, last_note }, type); + hairpin.setContext(ctx); + hairpin.setPosition(position); + if (options) { + hairpin.setRenderOptions(options); + } + hairpin.draw(); +} +function createTest(drawTwoHairpins) { + return (options) => { + const factory = VexFlowTests.makeFactory(options); + const ctx = factory.getContext(); + const stave = factory.Stave(); + const notes = [ + factory + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: 1, duration: '4' }) + .addModifier(factory.Accidental({ type: 'b' }), 0) + .addModifier(factory.Accidental({ type: '#' }), 1), + factory.StaveNote({ keys: ['d/4'], stem_direction: 1, duration: '4' }), + factory.StaveNote({ keys: ['e/4'], stem_direction: 1, duration: '4' }), + factory.StaveNote({ keys: ['f/4'], stem_direction: 1, duration: '4' }), + ]; + const voice = factory.Voice().addTickables(notes); + factory.Formatter().joinVoices([voice]).formatToStave([voice], stave); + factory.draw(); + drawTwoHairpins(ctx, notes); + ok(true, 'Simple Test'); + }; +} +const simple = createTest((ctx, notes) => { + drawHairpin(notes[0], notes[2], ctx, 1, 4); + drawHairpin(notes[1], notes[3], ctx, 2, 3); +}); +const horizontal = createTest((ctx, notes) => { + drawHairpin(notes[0], notes[2], ctx, 1, 3, { + height: 10, + vo: 20, + left_ho: 20, + right_ho: -20, + }); + drawHairpin(notes[3], notes[3], ctx, 2, 4, { + height: 10, + y_shift: 0, + left_shift_px: 0, + right_shift_px: 120, + }); +}); +const vertical = createTest((ctx, notes) => { + drawHairpin(notes[0], notes[2], ctx, 1, 4, { + height: 10, + y_shift: 0, + left_shift_px: 0, + right_shift_px: 0, + }); + drawHairpin(notes[2], notes[3], ctx, 2, 4, { + height: 10, + y_shift: -15, + left_shift_px: 2, + right_shift_px: 0, + }); +}); +const height = createTest((ctx, notes) => { + drawHairpin(notes[0], notes[2], ctx, 1, 4, { + height: 10, + y_shift: 0, + left_shift_px: 0, + right_shift_px: 0, + }); + drawHairpin(notes[2], notes[3], ctx, 2, 4, { + height: 15, + y_shift: 0, + left_shift_px: 2, + right_shift_px: 0, + }); +}); +VexFlowTests.register(StaveHairpinTests); +export { StaveHairpinTests }; diff --git a/build/esm/tests/staveline_tests.js b/build/esm/tests/staveline_tests.js new file mode 100644 index 0000000000..2534aad5cd --- /dev/null +++ b/build/esm/tests/staveline_tests.js @@ -0,0 +1,122 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Dot } from '../src/dot.js'; +import { Font, FontStyle } from '../src/font.js'; +const StaveLineTests = { + Start() { + QUnit.module('StaveLine'); + const run = VexFlowTests.runTests; + run('Simple StaveLine', simple0); + run('StaveLine Arrow Options', simple1); + }, +}; +function simple0(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave().addClef('treble'); + const notes = [ + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble' }), + f.StaveNote({ keys: ['c/5'], duration: '4', clef: 'treble' }), + f.StaveNote({ keys: ['c/4', 'g/4', 'b/4'], duration: '4', clef: 'treble' }), + f.StaveNote({ keys: ['f/4', 'a/4', 'f/5'], duration: '4', clef: 'treble' }), + ]; + const voice = f.Voice().addTickables(notes); + f.StaveLine({ + from: notes[0], + to: notes[1], + first_indices: [0], + last_indices: [0], + options: { + font: { family: Font.SERIF, size: 12, style: FontStyle.ITALIC }, + text: 'gliss.', + }, + }); + const staveLine2 = f.StaveLine({ + from: notes[2], + to: notes[3], + first_indices: [2, 1, 0], + last_indices: [0, 1, 2], + }); + staveLine2.render_options.line_dash = [10, 10]; + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +function simple1(options) { + const f = VexFlowTests.makeFactory(options, 770); + const stave = f.Stave().addClef('treble'); + const notes = [ + f.StaveNote({ keys: ['c#/5', 'd/5'], duration: '4', clef: 'treble', stem_direction: -1 }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble' }).addModifier(f.Accidental({ type: '#' }), 0), + f.StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '4', clef: 'treble' }), + f + .StaveNote({ keys: ['f/4', 'a/4', 'c/5'], duration: '4', clef: 'treble' }) + .addModifier(f.Accidental({ type: '#' }), 2), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble' }).addModifier(f.Accidental({ type: '#' }), 0), + f.StaveNote({ keys: ['c#/5', 'd/5'], duration: '4', clef: 'treble', stem_direction: -1 }), + f.StaveNote({ keys: ['c/4', 'd/4', 'g/4'], duration: '4', clef: 'treble' }), + f + .StaveNote({ keys: ['f/4', 'a/4', 'c/5'], duration: '4', clef: 'treble' }) + .addModifier(f.Accidental({ type: '#' }), 2), + ]; + Dot.buildAndAttach([notes[0]], { all: true }); + const voice = f.Voice().setStrict(false).addTickables(notes); + const staveLine0 = f.StaveLine({ + from: notes[0], + to: notes[1], + first_indices: [0], + last_indices: [0], + options: { text: 'Left' }, + }); + const staveLine4 = f.StaveLine({ + from: notes[2], + to: notes[3], + first_indices: [1], + last_indices: [1], + options: { text: 'Right' }, + }); + const staveLine1 = f.StaveLine({ + from: notes[4], + to: notes[5], + first_indices: [0], + last_indices: [0], + options: { text: 'Center' }, + }); + const staveLine2 = f.StaveLine({ + from: notes[6], + to: notes[7], + first_indices: [1], + last_indices: [0], + }); + const staveLine3 = f.StaveLine({ + from: notes[6], + to: notes[7], + first_indices: [2], + last_indices: [2], + options: { text: 'Top' }, + }); + staveLine0.render_options.draw_end_arrow = true; + staveLine0.render_options.text_justification = 1; + staveLine0.render_options.text_position_vertical = 2; + staveLine1.render_options.draw_end_arrow = true; + staveLine1.render_options.arrowhead_length = 30; + staveLine1.render_options.line_width = 5; + staveLine1.render_options.text_justification = 2; + staveLine1.render_options.text_position_vertical = 2; + staveLine4.render_options.line_width = 2; + staveLine4.render_options.draw_end_arrow = true; + staveLine4.render_options.draw_start_arrow = true; + staveLine4.render_options.arrowhead_angle = 0.5; + staveLine4.render_options.arrowhead_length = 20; + staveLine4.render_options.text_justification = 3; + staveLine4.render_options.text_position_vertical = 2; + staveLine2.render_options.draw_start_arrow = true; + staveLine2.render_options.line_dash = [5, 4]; + staveLine3.render_options.draw_end_arrow = true; + staveLine3.render_options.draw_start_arrow = true; + staveLine3.render_options.color = 'red'; + staveLine3.render_options.text_position_vertical = 1; + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +VexFlowTests.register(StaveLineTests); +export { StaveLineTests }; diff --git a/build/esm/tests/stavemodifier_tests.js b/build/esm/tests/stavemodifier_tests.js new file mode 100644 index 0000000000..89e4619003 --- /dev/null +++ b/build/esm/tests/stavemodifier_tests.js @@ -0,0 +1,51 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Stave } from '../src/stave.js'; +import { BarlineType } from '../src/stavebarline.js'; +import { StaveModifierPosition } from '../src/stavemodifier.js'; +const StaveModifierTests = { + Start() { + QUnit.module('StaveModifier'); + const run = VexFlowTests.runTests; + run('Stave Draw Test', draw); + run('Begin & End StaveModifier Test', drawBeginAndEnd); + }, +}; +function draw(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 120); + const stave = new Stave(10, 10, 300); + stave.setContext(ctx); + stave.draw(); + equal(stave.getYForNote(0), 100, 'getYForNote(0)'); + equal(stave.getYForLine(5), 100, 'getYForLine(5)'); + equal(stave.getYForLine(0), 50, 'getYForLine(0) - Top Line'); + equal(stave.getYForLine(4), 90, 'getYForLine(4) - Bottom Line'); + ok(true, 'all pass'); +} +function drawBeginAndEnd(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + const stave = new Stave(10, 10, 400); + stave.setContext(ctx); + stave.setTimeSignature('C|'); + stave.setKeySignature('Db'); + stave.setClef('treble'); + stave.setBegBarType(BarlineType.REPEAT_BEGIN); + stave.setEndClef('alto'); + stave.setEndTimeSignature('9/8'); + stave.setEndKeySignature('G', 'C#'); + stave.setEndBarType(BarlineType.DOUBLE); + stave.draw(); + const END = StaveModifierPosition.END; + stave.setY(100); + stave.setTimeSignature('3/4'); + stave.setKeySignature('G', 'C#'); + stave.setClef('bass'); + stave.setBegBarType(BarlineType.SINGLE); + stave.setClef('treble', undefined, undefined, END); + stave.setTimeSignature('C', undefined, END); + stave.setKeySignature('F', undefined, END); + stave.setEndBarType(BarlineType.SINGLE); + stave.draw(); + ok(true, 'all pass'); +} +VexFlowTests.register(StaveModifierTests); +export { StaveModifierTests }; diff --git a/build/esm/tests/stavenote_tests.js b/build/esm/tests/stavenote_tests.js new file mode 100644 index 0000000000..1b67017cd0 --- /dev/null +++ b/build/esm/tests/stavenote_tests.js @@ -0,0 +1,938 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Accidental } from '../src/accidental.js'; +import { Annotation, AnnotationVerticalJustify } from '../src/annotation.js'; +import { Articulation } from '../src/articulation.js'; +import { Beam } from '../src/beam.js'; +import { Dot } from '../src/dot.js'; +import { Flow } from '../src/flow.js'; +import { Formatter } from '../src/formatter.js'; +import { Fraction } from '../src/fraction.js'; +import { FretHandFinger } from '../src/frethandfinger.js'; +import { Modifier } from '../src/modifier.js'; +import { ModifierContext } from '../src/modifiercontext.js'; +import { Stave } from '../src/stave.js'; +import { StaveNote } from '../src/stavenote.js'; +import { Stem } from '../src/stem.js'; +import { StringNumber } from '../src/stringnumber.js'; +import { Stroke } from '../src/strokes.js'; +import { TickContext } from '../src/tickcontext.js'; +const StaveNoteTests = { + Start() { + QUnit.module('StaveNote'); + test('Tick', ticks); + test('Tick - New API', ticksNewAPI); + test('Stem', stem); + test('Automatic Stem Direction', autoStem); + test('Stem Extension Pitch', stemExtensionPitch); + test('Displacement after calling setStemDirection', setStemDirectionDisplacement); + test('StaveLine', staveLine); + test('Width', width); + test('TickContext', tickContext); + const run = VexFlowTests.runTests; + run('StaveNote Draw - Treble', drawBasic, { clef: 'treble', octaveShift: 0, restKey: 'r/4' }); + run('StaveNote BoundingBoxes - Treble', drawBoundingBoxes, { clef: 'treble', octaveShift: 0, restKey: 'r/4' }); + run('StaveNote Draw - Alto', drawBasic, { clef: 'alto', octaveShift: -1, restKey: 'r/4' }); + run('StaveNote Draw - Tenor', drawBasic, { clef: 'tenor', octaveShift: -1, restKey: 'r/3' }); + run('StaveNote Draw - Bass', drawBasic, { clef: 'bass', octaveShift: -2, restKey: 'r/3' }); + run('StaveNote Draw - Harmonic And Muted', drawHarmonicAndMuted); + run('StaveNote Draw - Slash', drawSlash); + run('Displacements', displacements); + run('StaveNote Draw - Bass 2', drawBass); + run('StaveNote Draw - Key Styles', drawKeyStyles); + run('StaveNote Draw - StaveNote Stem Styles', drawNoteStemStyles); + run('StaveNote Draw - StaveNote Stem Lengths', drawNoteStemLengths); + run('StaveNote Draw - StaveNote Flag Styles', drawNoteStylesWithFlag); + run('StaveNote Draw - StaveNote Styles', drawNoteStyles); + run('Stave, Ledger Line, Beam, Stem and Flag Styles', drawBeamStyles); + run('Flag and Dot Placement - Stem Up', dotsAndFlagsStemUp); + run('Flag and Dots Placement - Stem Down', dotsAndFlagsStemDown); + run('Beam and Dot Placement - Stem Up', dotsAndBeamsUp); + run('Beam and Dot Placement - Stem Down', dotsAndBeamsDown); + run('No Padding', noPadding); + run('Note Heads Placement - Simple', noteHeadsSimple); + run('Note Heads Placement - Hidden Notes', noteHeadsHidden); + run('Center Aligned Note', centerAlignedRest); + run('Center Aligned Note with Articulation', centerAlignedRestFermata); + run('Center Aligned Note with Annotation', centerAlignedRestAnnotation); + run('Center Aligned Note - Multi Voice', centerAlignedMultiVoice); + run('Center Aligned Note with Multiple Modifiers', centerAlignedNoteMultiModifiers); + VexFlowTests.runSVGTest('Interactive Mouseover StaveNote', drawBasic, { + clef: 'treble', + octaveShift: 0, + restKey: 'r/4', + ui: true, + }); + }, +}; +const staveNote = (struct) => new StaveNote(struct); +function draw(note, stave, context, x, drawBoundingBox = false, addModifierContext = true) { + note.setStave(stave); + if (addModifierContext) { + note.addToModifierContext(new ModifierContext()); + } + new TickContext().addTickable(note).preFormat().setX(x); + note.setContext(context).draw(); + if (drawBoundingBox) { + const bb = note.getBoundingBox(); + context.rect(bb.getX(), bb.getY(), bb.getW(), bb.getH()); + context.stroke(); + } + return note; +} +function ticks() { + const BEAT = (1 * Flow.RESOLUTION) / 4; + const tickTests = { + 'Breve note': ['1/2', 8.0, 'n'], + 'Whole note': ['w', 4.0, 'n'], + 'Quarter note': ['q', 1.0, 'n'], + 'Dotted half note': ['hd', 3.0, 'n'], + 'Doubled-dotted half note': ['hdd', 3.5, 'n'], + 'Triple-dotted half note': ['hddd', 3.75, 'n'], + 'Dotted half rest': ['hdr', 3.0, 'r'], + 'Double-dotted half rest': ['hddr', 3.5, 'r'], + 'Triple-dotted half rest': ['hdddr', 3.75, 'r'], + 'Dotted harmonic quarter note': ['qdh', 1.5, 'h'], + 'Double-dotted harmonic quarter note': ['qddh', 1.75, 'h'], + 'Triple-dotted harmonic quarter note': ['qdddh', 1.875, 'h'], + 'Dotted muted 8th note': ['8dm', 0.75, 'm'], + 'Double-dotted muted 8th note': ['8ddm', 0.875, 'm'], + 'Triple-dotted muted 8th note': ['8dddm', 0.9375, 'm'], + }; + Object.keys(tickTests).forEach((testName) => { + const testData = tickTests[testName]; + const durationString = testData[0]; + const expectedBeats = testData[1]; + const expectedNoteType = testData[2]; + const note = new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: durationString }); + equal(note.getTicks().value(), BEAT * expectedBeats, testName + ' must have ' + expectedBeats + ' beats'); + equal(note.getNoteType(), expectedNoteType, 'Note type must be ' + expectedNoteType); + }); + throws(() => new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '8.7dddm' }), /BadArguments/, "Invalid note duration '8.7' throws BadArguments exception"); + throws(() => new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '2Z' }), /BadArguments/, "Invalid note type 'Z' throws BadArguments exception"); + throws(() => new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '2dddZ' }), /BadArguments/, "Invalid note type 'Z' throws BadArguments exception"); +} +function ticksNewAPI() { + const BEAT = (1 * Flow.RESOLUTION) / 4; + const tickTests = { + 'Breve note': [{ duration: '1/2' }, 8.0, 'n'], + 'Whole note': [{ duration: 'w' }, 4.0, 'n'], + 'Quarter note': [{ duration: 'q' }, 1.0, 'n'], + 'Dotted half note': [{ duration: 'h', dots: 1 }, 3.0, 'n'], + 'Doubled-dotted half note': [{ duration: 'h', dots: 2 }, 3.5, 'n'], + 'Triple-dotted half note': [{ duration: 'h', dots: 3 }, 3.75, 'n'], + 'Dotted half rest': [{ duration: 'h', dots: 1, type: 'r' }, 3.0, 'r'], + 'Double-dotted half rest': [{ duration: 'h', dots: 2, type: 'r' }, 3.5, 'r'], + 'Triple-dotted half rest': [{ duration: 'h', dots: 3, type: 'r' }, 3.75, 'r'], + 'Dotted harmonic quarter note': [{ duration: 'q', dots: 1, type: 'h' }, 1.5, 'h'], + 'Double-dotted harmonic quarter note': [{ duration: 'q', dots: 2, type: 'h' }, 1.75, 'h'], + 'Triple-dotted harmonic quarter note': [{ duration: 'q', dots: 3, type: 'h' }, 1.875, 'h'], + 'Dotted muted 8th note': [{ duration: '8', dots: 1, type: 'm' }, 0.75, 'm'], + 'Double-dotted muted 8th note': [{ duration: '8', dots: 2, type: 'm' }, 0.875, 'm'], + 'Triple-dotted muted 8th note': [{ duration: '8', dots: 3, type: 'm' }, 0.9375, 'm'], + }; + Object.keys(tickTests).forEach(function (testName) { + const testData = tickTests[testName]; + const noteData = testData[0]; + const expectedBeats = testData[1]; + const expectedNoteType = testData[2]; + noteData.keys = ['c/4', 'e/4', 'g/4']; + const note = new StaveNote(noteData); + equal(note.getTicks().value(), BEAT * expectedBeats, testName + ' must have ' + expectedBeats + ' beats'); + equal(note.getNoteType(), expectedNoteType, 'Note type must be ' + expectedNoteType); + }); + throws(() => new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '8.7dddm' }), /BadArguments/, "Invalid note duration '8.7' throws BadArguments exception"); + throws(() => new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '2Z' }), /BadArguments/, "Invalid note type 'Z' throws BadArguments exception"); + throws(() => new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '2dddZ' }), /BadArguments/, "Invalid note type 'Z' throws BadArguments exception"); +} +function stem() { + const note = new StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: 'w' }); + equal(note.getStemDirection(), Stem.UP, 'Default note has UP stem'); +} +function autoStem() { + const testData = [ + [['c/5', 'e/5', 'g/5'], Stem.DOWN], + [['e/4', 'g/4', 'c/5'], Stem.UP], + [['c/5'], Stem.DOWN], + [['a/4', 'e/5', 'g/5'], Stem.DOWN], + [['b/4'], Stem.DOWN], + ]; + testData.forEach((td) => { + const keys = td[0]; + const expectedStemDirection = td[1]; + const note = new StaveNote({ keys: keys, auto_stem: true, duration: '8' }); + equal(note.getStemDirection(), expectedStemDirection, 'Stem must be ' + (expectedStemDirection === Stem.UP ? 'up' : 'down')); + }); +} +function stemExtensionPitch() { + const testData = [ + [['c/5', 'e/5', 'g/5'], 0, 0], + [['e/4', 'g/4', 'c/5'], 0, 0], + [['c/5'], 0, 0], + [['f/3'], 15, 0], + [['f/3'], 15, Stem.UP], + [['f/3'], 0, Stem.DOWN], + [['f/3', 'e/5'], 0, 0], + [['g/6'], 25, 0], + [['g/6'], 25, Stem.DOWN], + [['g/6'], 0, Stem.UP], + ]; + testData.forEach((td) => { + const keys = td[0]; + const expectedStemExtension = td[1]; + const overrideStemDirection = td[2]; + let note; + if (overrideStemDirection === 0) { + note = new StaveNote({ keys: keys, auto_stem: true, duration: '4' }); + } + else { + note = new StaveNote({ keys: keys, duration: '4', stem_direction: overrideStemDirection }); + } + equal(note.getStemExtension(), expectedStemExtension, 'For ' + keys.toString() + ' StemExtension must be ' + expectedStemExtension); + const stave = new Stave(10, 10, 300, { spacing_between_lines_px: 20 }); + note.setStave(stave); + equal(note.getStemExtension(), expectedStemExtension * 2, 'For wide staff ' + keys.toString() + ' StemExtension must be ' + expectedStemExtension * 2); + }); +} +function setStemDirectionDisplacement() { + function getDisplacements(note) { + return note.noteHeads.map((noteHead) => noteHead.isDisplaced()); + } + const stemUpDisplacements = [false, true, false]; + const stemDownDisplacements = [true, false, false]; + const note = new StaveNote({ keys: ['c/5', 'd/5', 'g/5'], stem_direction: Stem.UP, duration: '4' }); + deepEqual(getDisplacements(note), stemUpDisplacements); + note.setStemDirection(Stem.DOWN); + deepEqual(getDisplacements(note), stemDownDisplacements); + note.setStemDirection(Stem.UP); + deepEqual(getDisplacements(note), stemUpDisplacements); +} +function staveLine() { + const stave = new Stave(10, 10, 300); + const note = new StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: 'w' }); + note.setStave(stave); + const props = note.getKeyProps(); + equal(props[0].line, 0, 'C/4 on line 0'); + equal(props[1].line, 1, 'E/4 on line 1'); + equal(props[2].line, 2.5, 'A/4 on line 2.5'); + const ys = note.getYs(); + equal(ys.length, 3, 'Chord should be rendered on three lines'); + equal(ys[0], 100, 'Line for C/4'); + equal(ys[1], 90, 'Line for E/4'); + equal(ys[2], 75, 'Line for A/4'); +} +function width() { + const note = new StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: 'w' }); + throws(() => note.getWidth(), /UnformattedNote/, 'Unformatted note should have no width'); +} +function tickContext() { + const stave = new Stave(10, 10, 400); + const note = new StaveNote({ keys: ['c/4', 'e/4', 'a/4'], duration: 'w' }).setStave(stave); + new TickContext().addTickable(note).preFormat().setX(10).setPadding(0); + expect(0); +} +function drawBasic(options, contextBuilder) { + const clef = options.params.clef; + const octaveShift = options.params.octaveShift; + const restKey = options.params.restKey; + const ctx = contextBuilder(options.elementId, 700, 180); + const stave = new Stave(10, 30, 750); + stave.setContext(ctx); + stave.addClef(clef); + stave.draw(); + const lowerKeys = ['c/', 'e/', 'a/']; + const higherKeys = ['c/', 'e/', 'a/']; + for (let k = 0; k < lowerKeys.length; k++) { + lowerKeys[k] = lowerKeys[k] + (4 + octaveShift); + higherKeys[k] = higherKeys[k] + (5 + octaveShift); + } + const restKeys = [restKey]; + const noteStructs = [ + { clef: clef, keys: higherKeys, duration: '1/2' }, + { clef: clef, keys: lowerKeys, duration: 'w' }, + { clef: clef, keys: higherKeys, duration: 'h' }, + { clef: clef, keys: lowerKeys, duration: 'q' }, + { clef: clef, keys: higherKeys, duration: '8' }, + { clef: clef, keys: lowerKeys, duration: '16' }, + { clef: clef, keys: higherKeys, duration: '32' }, + { clef: clef, keys: higherKeys, duration: '64' }, + { clef: clef, keys: higherKeys, duration: '128' }, + { clef: clef, keys: lowerKeys, duration: '1/2', stem_direction: Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: 'w', stem_direction: Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: 'h', stem_direction: Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: 'q', stem_direction: Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: '8', stem_direction: Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: '16', stem_direction: Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: '32', stem_direction: Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: '64', stem_direction: Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: '128', stem_direction: Stem.DOWN }, + { clef: clef, keys: restKeys, duration: '1/2r' }, + { clef: clef, keys: restKeys, duration: 'wr' }, + { clef: clef, keys: restKeys, duration: 'hr' }, + { clef: clef, keys: restKeys, duration: 'qr' }, + { clef: clef, keys: restKeys, duration: '8r' }, + { clef: clef, keys: restKeys, duration: '16r' }, + { clef: clef, keys: restKeys, duration: '32r' }, + { clef: clef, keys: restKeys, duration: '64r' }, + { clef: clef, keys: restKeys, duration: '128r' }, + { keys: ['x/4'], duration: 'h' }, + ]; + expect(noteStructs.length * 2); + const colorDescendants = (parentItem, color) => () => parentItem.querySelectorAll('*').forEach((child) => { + child.setAttribute('fill', color); + child.setAttribute('stroke', color); + }); + for (let i = 0; i < noteStructs.length; ++i) { + const note = draw(staveNote(noteStructs[i]), stave, ctx, (i + 1) * 25); + if (options.params.ui) { + const item = note.getSVGElement(); + if (item) { + item.addEventListener('mouseover', colorDescendants(item, 'green'), false); + item.addEventListener('mouseout', colorDescendants(item, 'black'), false); + } + } + ok(note.getX() > 0, 'Note ' + i + ' has X value'); + ok(note.getYs().length > 0, 'Note ' + i + ' has Y values'); + } +} +function drawBoundingBoxes(options, contextBuilder) { + const clef = options.params.clef; + const octaveShift = options.params.octaveShift; + const restKey = options.params.restKey; + const ctx = contextBuilder(options.elementId, 700, 180); + const stave = new Stave(10, 30, 750); + stave.setContext(ctx); + stave.addClef(clef); + stave.draw(); + const lowerKeys = ['c/', 'e/', 'a/']; + const higherKeys = ['c/', 'e/', 'a/']; + for (let k = 0; k < lowerKeys.length; k++) { + lowerKeys[k] = lowerKeys[k] + (4 + octaveShift); + higherKeys[k] = higherKeys[k] + (5 + octaveShift); + } + const restKeys = [restKey]; + const noteStructs = [ + { clef: clef, keys: higherKeys, duration: '1/2' }, + { clef: clef, keys: lowerKeys, duration: 'w' }, + { clef: clef, keys: higherKeys, duration: 'h' }, + { clef: clef, keys: lowerKeys, duration: 'q' }, + { clef: clef, keys: higherKeys, duration: '8' }, + { clef: clef, keys: lowerKeys, duration: '16' }, + { clef: clef, keys: higherKeys, duration: '32' }, + { clef: clef, keys: higherKeys, duration: '64' }, + { clef: clef, keys: higherKeys, duration: '128' }, + { clef: clef, keys: lowerKeys, duration: '1/2', stem_direction: Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: 'w', stem_direction: Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: 'h', stem_direction: Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: 'q', stem_direction: Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: '8', stem_direction: Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: '16', stem_direction: Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: '32', stem_direction: Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: '64', stem_direction: Stem.DOWN }, + { clef: clef, keys: lowerKeys, duration: '128' }, + { clef: clef, keys: restKeys, duration: '1/2r' }, + { clef: clef, keys: restKeys, duration: 'wr' }, + { clef: clef, keys: restKeys, duration: 'hr' }, + { clef: clef, keys: restKeys, duration: 'qr' }, + { clef: clef, keys: restKeys, duration: '8r' }, + { clef: clef, keys: restKeys, duration: '16r' }, + { clef: clef, keys: restKeys, duration: '32r' }, + { clef: clef, keys: restKeys, duration: '64r' }, + { clef: clef, keys: restKeys, duration: '128r' }, + { keys: ['x/4'], duration: 'h' }, + ]; + expect(noteStructs.length * 2); + for (let i = 0; i < noteStructs.length; ++i) { + const note = draw(staveNote(noteStructs[i]), stave, ctx, (i + 1) * 25, true, false); + ok(note.getX() > 0, 'Note ' + i + ' has X value'); + ok(note.getYs().length > 0, 'Note ' + i + ' has Y values'); + } +} +function drawBass(options, contextBuilder) { + expect(40); + const ctx = contextBuilder(options.elementId, 600, 280); + const stave = new Stave(10, 10, 650); + stave.setContext(ctx); + stave.addClef('bass'); + stave.draw(); + const noteStructs = [ + { clef: 'bass', keys: ['c/3', 'e/3', 'a/3'], duration: '1/2' }, + { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: 'w' }, + { clef: 'bass', keys: ['c/3', 'e/3', 'a/3'], duration: 'h' }, + { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: 'q' }, + { clef: 'bass', keys: ['c/3', 'e/3', 'a/3'], duration: '8' }, + { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: '16' }, + { clef: 'bass', keys: ['c/3', 'e/3', 'a/3'], duration: '32' }, + { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: 'h', stem_direction: Stem.DOWN }, + { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: 'q', stem_direction: Stem.DOWN }, + { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: '8', stem_direction: Stem.DOWN }, + { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: '16', stem_direction: Stem.DOWN }, + { clef: 'bass', keys: ['c/2', 'e/2', 'a/2'], duration: '32', stem_direction: Stem.DOWN }, + { keys: ['r/4'], duration: '1/2r' }, + { keys: ['r/4'], duration: 'wr' }, + { keys: ['r/4'], duration: 'hr' }, + { keys: ['r/4'], duration: 'qr' }, + { keys: ['r/4'], duration: '8r' }, + { keys: ['r/4'], duration: '16r' }, + { keys: ['r/4'], duration: '32r' }, + { keys: ['x/4'], duration: 'h' }, + ]; + for (let i = 0; i < noteStructs.length; ++i) { + const note = draw(staveNote(noteStructs[i]), stave, ctx, (i + 1) * 25); + ok(note.getX() > 0, 'Note ' + i + ' has X value'); + ok(note.getYs().length > 0, 'Note ' + i + ' has Y values'); + } +} +function displacements(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 700, 155); + ctx.scale(0.9, 0.9); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + const stave = new Stave(10, 10, 675); + stave.setContext(ctx); + stave.draw(); + const noteStructs = [ + { keys: ['g/3', 'a/3', 'c/4', 'd/4', 'e/4'], duration: '1/2' }, + { keys: ['g/3', 'a/3', 'c/4', 'd/4', 'e/4'], duration: 'w' }, + { keys: ['d/4', 'e/4', 'f/4'], duration: 'h' }, + { keys: ['f/4', 'g/4', 'a/4', 'b/4'], duration: 'q' }, + { keys: ['e/3', 'b/3', 'c/4', 'e/4', 'f/4', 'g/5', 'a/5'], duration: '8' }, + { keys: ['a/3', 'c/4', 'e/4', 'g/4', 'a/4', 'b/4'], duration: '16' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '32' }, + { keys: ['c/4', 'e/4', 'a/4', 'a/4'], duration: '64' }, + { keys: ['g/3', 'c/4', 'd/4', 'e/4'], duration: 'h', stem_direction: Stem.DOWN }, + { keys: ['d/4', 'e/4', 'f/4'], duration: 'q', stem_direction: Stem.DOWN }, + { keys: ['f/4', 'g/4', 'a/4', 'b/4'], duration: '8', stem_direction: Stem.DOWN }, + { keys: ['c/4', 'd/4', 'e/4', 'f/4', 'g/4', 'a/4'], duration: '16', stem_direction: Stem.DOWN }, + { keys: ['b/3', 'c/4', 'e/4', 'a/4', 'b/5', 'c/6', 'e/6'], duration: '32', stem_direction: Stem.DOWN }, + { + keys: ['b/3', 'c/4', 'e/4', 'a/4', 'b/5', 'c/6', 'e/6', 'e/6'], + duration: '64', + stem_direction: Stem.DOWN, + }, + ]; + expect(noteStructs.length * 2); + for (let i = 0; i < noteStructs.length; ++i) { + const note = draw(staveNote(noteStructs[i]), stave, ctx, (i + 1) * 45); + ok(note.getX() > 0, 'Note ' + i + ' has X value'); + ok(note.getYs().length > 0, 'Note ' + i + ' has Y values'); + } +} +function drawHarmonicAndMuted(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 1000, 180); + const stave = new Stave(10, 10, 950); + stave.setContext(ctx); + stave.draw(); + const noteStructs = [ + { keys: ['c/4', 'e/4', 'a/4'], duration: '1/2h' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'wh' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'hh' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'qh' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '8h' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '16h' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '32h' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '64h' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '128h' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '1/2h', stem_direction: Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'wh', stem_direction: Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'hh', stem_direction: Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'qh', stem_direction: Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '8h', stem_direction: Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '16h', stem_direction: Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '32h', stem_direction: Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '64h', stem_direction: Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '128h', stem_direction: Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '1/2m' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'wm' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'hm' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'qm' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '8m' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '16m' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '32m' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '64m' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '128m' }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '1/2m', stem_direction: Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'wm', stem_direction: Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'hm', stem_direction: Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: 'qm', stem_direction: Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '8m', stem_direction: Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '16m', stem_direction: Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '32m', stem_direction: Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '64m', stem_direction: Stem.DOWN }, + { keys: ['c/4', 'e/4', 'a/4'], duration: '128m', stem_direction: Stem.DOWN }, + ]; + expect(noteStructs.length * 2); + for (let i = 0; i < noteStructs.length; ++i) { + const note = draw(staveNote(noteStructs[i]), stave, ctx, i * 25 + 5); + ok(note.getX() > 0, 'Note ' + i + ' has X value'); + ok(note.getYs().length > 0, 'Note ' + i + ' has Y values'); + } +} +function drawSlash(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 700, 180); + const stave = new Stave(10, 10, 650); + stave.setContext(ctx); + stave.draw(); + const notes = [ + { keys: ['b/4'], duration: '1/2s', stem_direction: Stem.DOWN }, + { keys: ['b/4'], duration: 'ws', stem_direction: Stem.DOWN }, + { keys: ['b/4'], duration: 'hs', stem_direction: Stem.DOWN }, + { keys: ['b/4'], duration: 'qs', stem_direction: Stem.DOWN }, + { keys: ['b/4'], duration: '8s', stem_direction: Stem.DOWN }, + { keys: ['b/4'], duration: '16s', stem_direction: Stem.DOWN }, + { keys: ['b/4'], duration: '32s', stem_direction: Stem.DOWN }, + { keys: ['b/4'], duration: '64s', stem_direction: Stem.DOWN }, + { keys: ['b/4'], duration: '128s', stem_direction: Stem.DOWN }, + { keys: ['b/4'], duration: '1/2s', stem_direction: Stem.UP }, + { keys: ['b/4'], duration: 'ws', stem_direction: Stem.UP }, + { keys: ['b/4'], duration: 'hs', stem_direction: Stem.UP }, + { keys: ['b/4'], duration: 'qs', stem_direction: Stem.UP }, + { keys: ['b/4'], duration: '8s', stem_direction: Stem.UP }, + { keys: ['b/4'], duration: '16s', stem_direction: Stem.UP }, + { keys: ['b/4'], duration: '32s', stem_direction: Stem.UP }, + { keys: ['b/4'], duration: '64s', stem_direction: Stem.UP }, + { keys: ['b/4'], duration: '128s', stem_direction: Stem.UP }, + { keys: ['b/4'], duration: '8s', stem_direction: Stem.DOWN }, + { keys: ['b/4'], duration: '8s', stem_direction: Stem.DOWN }, + { keys: ['b/4'], duration: '8s', stem_direction: Stem.UP }, + { keys: ['b/4'], duration: '8s', stem_direction: Stem.UP }, + ]; + const stave_notes = notes.map((struct) => new StaveNote(struct)); + const beam1 = new Beam([stave_notes[16], stave_notes[17]]); + const beam2 = new Beam([stave_notes[18], stave_notes[19]]); + Formatter.FormatAndDraw(ctx, stave, stave_notes, false); + beam1.setContext(ctx).draw(); + beam2.setContext(ctx).draw(); + ok('Slash Note Heads'); +} +function drawKeyStyles(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 300, 280); + ctx.scale(3, 3); + const stave = new Stave(10, 0, 100); + const note = new StaveNote({ keys: ['g/4', 'bb/4', 'd/5'], duration: 'q' }) + .setStave(stave) + .addModifier(new Accidental('b'), 1) + .setKeyStyle(1, { shadowBlur: 2, shadowColor: 'blue', fillStyle: 'blue' }); + new TickContext().addTickable(note).preFormat().setX(25); + stave.setContext(ctx).draw(); + note.setContext(ctx).draw(); + ok(note.getX() > 0, 'Note has X value'); + ok(note.getYs().length > 0, 'Note has Y values'); +} +function drawNoteStyles(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 300, 280); + const stave = new Stave(10, 0, 100); + ctx.scale(3, 3); + const note = new StaveNote({ keys: ['g/4', 'bb/4', 'd/5'], duration: '8' }) + .setStave(stave) + .addModifier(new Accidental('b'), 1); + note.setStyle({ shadowBlur: 2, shadowColor: 'blue', fillStyle: 'blue', strokeStyle: 'blue' }); + new TickContext().addTickable(note).preFormat().setX(25); + stave.setContext(ctx).draw(); + note.setContext(ctx).draw(); + ok(note.getX() > 0, 'Note has X value'); + ok(note.getYs().length > 0, 'Note has Y values'); +} +function drawNoteStemStyles(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 300, 280); + const stave = new Stave(10, 0, 100); + ctx.scale(3, 3); + const note = new StaveNote({ keys: ['g/4', 'bb/4', 'd/5'], duration: 'q' }) + .setStave(stave) + .addModifier(new Accidental('b'), 1); + note.setStemStyle({ shadowBlur: 2, shadowColor: 'blue', fillStyle: 'blue', strokeStyle: 'blue' }); + new TickContext().addTickable(note).preFormat().setX(25); + stave.setContext(ctx).draw(); + note.setContext(ctx).draw(); + ok('Note Stem Style'); +} +function drawNoteStemLengths(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 975, 150); + const stave = new Stave(10, 10, 975); + stave.setContext(ctx).draw(); + const keys = [ + 'e/3', + 'f/3', + 'g/3', + 'a/3', + 'b/3', + 'c/4', + 'd/4', + 'e/4', + 'f/4', + 'g/4', + 'f/5', + 'g/5', + 'a/5', + 'b/5', + 'c/6', + 'd/6', + 'e/6', + 'f/6', + 'g/6', + 'a/6', + ]; + const notes = []; + let note; + let i; + for (i = 0; i < keys.length; i++) { + let duration = 'q'; + if (i % 2 === 1) { + duration = '8'; + } + note = new StaveNote({ keys: [keys[i]], duration, auto_stem: true }).setStave(stave); + new TickContext().addTickable(note); + note.setContext(ctx); + notes.push(note); + } + const whole_keys = ['e/3', 'a/3', 'f/5', 'a/5', 'd/6', 'a/6']; + for (i = 0; i < whole_keys.length; i++) { + note = new StaveNote({ keys: [whole_keys[i]], duration: 'w' }).setStave(stave); + new TickContext().addTickable(note); + note.setContext(ctx); + notes.push(note); + } + Formatter.FormatAndDraw(ctx, stave, notes); + ok('Note Stem Length'); +} +function drawNoteStylesWithFlag(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 300, 280); + const stave = new Stave(10, 0, 100); + ctx.scale(3, 3); + const note = new StaveNote({ keys: ['g/4', 'bb/4', 'd/5'], duration: '8' }) + .setStave(stave) + .addModifier(new Accidental('b'), 1); + note.setFlagStyle({ shadowBlur: 2, shadowColor: 'blue', fillStyle: 'blue', strokeStyle: 'blue' }); + new TickContext().addTickable(note).preFormat().setX(25); + stave.setContext(ctx).draw(); + note.setContext(ctx).draw(); + ok(note.getX() > 0, 'Note has X value'); + ok(note.getYs().length > 0, 'Note has Y values'); +} +function drawBeamStyles(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 160); + const stave = new Stave(10, 10, 380); + stave.setStyle({ strokeStyle: '#EEAAEE', lineWidth: 3 }); + stave.setContext(ctx); + stave.draw(); + const notes = [ + { keys: ['b/4'], duration: '8', stem_direction: Stem.DOWN }, + { keys: ['b/4'], duration: '8', stem_direction: Stem.DOWN }, + { keys: ['b/4'], duration: '8', stem_direction: Stem.DOWN }, + { keys: ['b/4'], duration: '8', stem_direction: Stem.DOWN }, + { keys: ['b/4'], duration: '8', stem_direction: Stem.DOWN }, + { keys: ['b/4'], duration: '8', stem_direction: Stem.UP }, + { keys: ['b/4'], duration: '8', stem_direction: Stem.UP }, + { keys: ['d/6'], duration: '8', stem_direction: Stem.DOWN }, + { keys: ['c/6', 'd/6'], duration: '8', stem_direction: Stem.DOWN }, + { keys: ['d/6', 'e/6'], duration: '8', stem_direction: Stem.DOWN }, + { keys: ['e/6', 'f/6'], duration: '8', stem_direction: Stem.DOWN }, + ]; + const staveNotes = notes.map((note) => new StaveNote(note)); + const beam1 = new Beam(staveNotes.slice(0, 2)); + const beam2 = new Beam(staveNotes.slice(3, 5)); + const beam3 = new Beam(staveNotes.slice(5, 7)); + const beam4 = new Beam(staveNotes.slice(7, 9)); + beam1.setStyle({ fillStyle: 'blue', strokeStyle: 'blue' }); + staveNotes[0].setKeyStyle(0, { fillStyle: 'purple' }); + staveNotes[0].setStemStyle({ strokeStyle: 'green' }); + staveNotes[1].setStemStyle({ strokeStyle: 'orange' }); + staveNotes[1].setKeyStyle(0, { fillStyle: 'darkturquoise' }); + staveNotes[5].setStyle({ fillStyle: 'tomato', strokeStyle: 'tomato' }); + beam3.setStyle({ shadowBlur: 4, shadowColor: 'blue' }); + staveNotes[9].setLedgerLineStyle({ fillStyle: 'lawngreen', strokeStyle: 'lawngreen', lineWidth: 1 }); + staveNotes[9].setFlagStyle({ fillStyle: 'orange', strokeStyle: 'orange' }); + Formatter.FormatAndDraw(ctx, stave, staveNotes, false); + beam1.setContext(ctx).draw(); + beam2.setContext(ctx).draw(); + beam3.setContext(ctx).draw(); + beam4.setContext(ctx).draw(); + ok('draw beam styles'); +} +function dotsAndFlagsStemUp(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 800, 150); + ctx.scale(1.0, 1.0); + ctx.setFillStyle('#221'); + ctx.setStrokeStyle('#221'); + const stave = new Stave(10, 10, 975); + const notes = [ + staveNote({ keys: ['f/4'], duration: '4', stem_direction: Stem.UP }), + staveNote({ keys: ['f/4'], duration: '8', stem_direction: Stem.UP }), + staveNote({ keys: ['f/4'], duration: '16', stem_direction: Stem.UP }), + staveNote({ keys: ['f/4'], duration: '32', stem_direction: Stem.UP }), + staveNote({ keys: ['f/4'], duration: '64', stem_direction: Stem.UP }), + staveNote({ keys: ['f/4'], duration: '128', stem_direction: Stem.UP }), + staveNote({ keys: ['g/4'], duration: '4', stem_direction: Stem.UP }), + staveNote({ keys: ['g/4'], duration: '8', stem_direction: Stem.UP }), + staveNote({ keys: ['g/4'], duration: '16', stem_direction: Stem.UP }), + staveNote({ keys: ['g/4'], duration: '32' }), + staveNote({ keys: ['g/4'], duration: '64', stem_direction: Stem.UP }), + staveNote({ keys: ['g/4'], duration: '128', stem_direction: Stem.UP }), + ]; + Dot.buildAndAttach(notes, { all: true }); + Dot.buildAndAttach([notes[5], notes[11]], { all: true }); + stave.setContext(ctx).draw(); + for (let i = 0; i < notes.length; ++i) { + draw(notes[i], stave, ctx, i * 65); + } + ok(true, 'Full Dot'); +} +function dotsAndFlagsStemDown(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 800, 160); + ctx.scale(1.0, 1.0); + ctx.setFillStyle('#221'); + ctx.setStrokeStyle('#221'); + const stave = new Stave(10, 10, 975); + const staveNotes = [ + staveNote({ keys: ['e/5'], duration: '4', stem_direction: Stem.DOWN }), + staveNote({ keys: ['e/5'], duration: '8', stem_direction: Stem.DOWN }), + staveNote({ keys: ['e/5'], duration: '16', stem_direction: Stem.DOWN }), + staveNote({ keys: ['e/5'], duration: '32', stem_direction: Stem.DOWN }), + staveNote({ keys: ['e/5'], duration: '64', stem_direction: Stem.DOWN }), + staveNote({ keys: ['e/5'], duration: '128', stem_direction: Stem.DOWN }), + staveNote({ keys: ['d/5'], duration: '4', stem_direction: Stem.DOWN }), + staveNote({ keys: ['d/5'], duration: '8', stem_direction: Stem.DOWN }), + staveNote({ keys: ['d/5'], duration: '16', stem_direction: Stem.DOWN }), + staveNote({ keys: ['d/5'], duration: '32', stem_direction: Stem.DOWN }), + staveNote({ keys: ['d/5'], duration: '64', stem_direction: Stem.DOWN }), + staveNote({ keys: ['d/5'], duration: '128', stem_direction: Stem.DOWN }), + ]; + Dot.buildAndAttach(staveNotes, { all: true }); + stave.setContext(ctx).draw(); + for (let i = 0; i < staveNotes.length; ++i) { + draw(staveNotes[i], stave, ctx, i * 65); + } + ok(true, 'Full Dot'); +} +function dotsAndBeamsUp(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 800, 150); + ctx.scale(1.0, 1.0); + ctx.setFillStyle('#221'); + ctx.setStrokeStyle('#221'); + const stave = new Stave(10, 10, 975); + const staveNotes = [ + staveNote({ keys: ['f/4'], duration: '8', stem_direction: Stem.UP }), + staveNote({ keys: ['f/4'], duration: '16', stem_direction: Stem.UP }), + staveNote({ keys: ['f/4'], duration: '32', stem_direction: Stem.UP }), + staveNote({ keys: ['f/4'], duration: '64', stem_direction: Stem.UP }), + staveNote({ keys: ['f/4'], duration: '128', stem_direction: Stem.UP }), + staveNote({ keys: ['g/4'], duration: '8', stem_direction: Stem.UP }), + staveNote({ keys: ['g/4'], duration: '16', stem_direction: Stem.UP }), + staveNote({ keys: ['g/4'], duration: '32' }), + staveNote({ keys: ['g/4'], duration: '64', stem_direction: Stem.UP }), + staveNote({ keys: ['g/4'], duration: '128', stem_direction: Stem.UP }), + ]; + Dot.buildAndAttach(staveNotes, { all: true }); + Dot.buildAndAttach([staveNotes[4], staveNotes[9]], { all: true }); + const beam = new Beam(staveNotes); + stave.setContext(ctx).draw(); + for (let i = 0; i < staveNotes.length; ++i) { + draw(staveNotes[i], stave, ctx, i * 65); + } + beam.setContext(ctx).draw(); + ok(true, 'Full Dot'); +} +function dotsAndBeamsDown(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 800, 160); + ctx.scale(1.0, 1.0); + ctx.setFillStyle('#221'); + ctx.setStrokeStyle('#221'); + const stave = new Stave(10, 10, 975); + const staveNotes = [ + staveNote({ keys: ['e/5'], duration: '8', stem_direction: Stem.DOWN }), + staveNote({ keys: ['e/5'], duration: '16', stem_direction: Stem.DOWN }), + staveNote({ keys: ['e/5'], duration: '32', stem_direction: Stem.DOWN }), + staveNote({ keys: ['e/5'], duration: '64', stem_direction: Stem.DOWN }), + staveNote({ keys: ['e/5'], duration: '128', stem_direction: Stem.DOWN }), + staveNote({ keys: ['d/5'], duration: '8', stem_direction: Stem.DOWN }), + staveNote({ keys: ['d/5'], duration: '16', stem_direction: Stem.DOWN }), + staveNote({ keys: ['d/5'], duration: '32', stem_direction: Stem.DOWN }), + staveNote({ keys: ['d/5'], duration: '64', stem_direction: Stem.DOWN }), + staveNote({ keys: ['d/5'], duration: '128', stem_direction: Stem.DOWN }), + ]; + Dot.buildAndAttach(staveNotes, { all: true }); + const beam = new Beam(staveNotes); + stave.setContext(ctx).draw(); + for (let i = 0; i < staveNotes.length; ++i) { + draw(staveNotes[i], stave, ctx, i * 65); + } + beam.setContext(ctx).draw(); + ok(true, 'Full Dot'); +} +function noteHeadsSimple(options) { + const vf = VexFlowTests.makeFactory(options, 800, 250); + const score = vf.EasyScore(); + const system1 = vf.System({ y: 100, x: 50, width: 200 }); + system1 + .addStave({ + voices: [ + score.voice([...score.beam(score.notes('a4/8, b4/8', { stem: 'up' })), ...score.notes('a4/q/r, a4/h/r')]), + score.voice(score.notes('g4/w')), + ], + }) + .addClef('treble') + .addTimeSignature('4/4'); + const system2 = vf.System({ y: 100, x: 250, width: 150 }); + system2.addStave({ + voices: [score.voice(score.notes('b4/h, b4/h/r')), score.voice(score.notes('b4/w'))], + }); + const system3 = vf.System({ y: 100, x: 400, width: 150 }); + system3.addStave({ + voices: [score.voice(score.notes('d5/h, d5/h/r')), score.voice(score.notes('e4/w'))], + }); + const system4 = vf.System({ y: 100, x: 550, width: 150 }); + system4.addStave({ + voices: [ + score.voice(score.notes('e4/q, e4/q/r, e4/h/r')), + score.voice(score.notes('e4/8, e4/8/r, e4/q/r, e4/h/r')), + ], + }); + vf.draw(); + expect(0); +} +function noPadding(options) { + const vf = VexFlowTests.makeFactory(options, 800, 500); + const score = vf.EasyScore(); + function newStave(y, noPadding) { + let system = vf.System({ y, x: 50, width: 200, noPadding }); + system + .addStave({ + voices: [ + score.voice([...score.beam(score.notes('a4/8, b4/8', { stem: 'up' })), ...score.notes('a4/q, a4/h')]), + score.voice(score.notes('g4/w')), + ], + }) + .addClef('treble') + .addTimeSignature('4/4'); + system = vf.System({ y, x: 250, width: 150, noPadding }); + system.addStave({ + voices: [score.voice(score.notes('b4/h, b4/h')), score.voice(score.notes('b4/w'))], + }); + system = vf.System({ y, x: 400, width: 150, noPadding }); + system.addStave({ + voices: [score.voice(score.notes('d5/h, d5/h')), score.voice(score.notes('e4/w'))], + }); + system = vf.System({ y, x: 550, width: 150, noPadding }); + system.addStave({ + voices: [score.voice(score.notes('e4/q, e4/q, e4/h')), score.voice(score.notes('e4/8, e4/8, e4/q, e4/h'))], + }); + } + newStave(100, true); + newStave(200, false); + vf.draw(); + expect(0); +} +function noteHeadsHidden(options) { + const vf = VexFlowTests.makeFactory(options, 800, 250); + const score = vf.EasyScore(); + const system1 = vf.System({ y: 100, x: 50, width: 200 }); + const notes1 = score.notes('g4/w'); + notes1[0].render_options.draw = false; + system1 + .addStave({ + voices: [ + score.voice([...score.beam(score.notes('a4/8, b4/8', { stem: 'up' })), ...score.notes('a4/q/r, a4/h/r')]), + score.voice(notes1), + ], + }) + .addClef('treble') + .addTimeSignature('4/4'); + const system2 = vf.System({ y: 100, x: 250, width: 150 }); + const notes2 = score.notes('b4/w'); + notes2[0].render_options.draw = false; + system2.addStave({ + voices: [score.voice(score.notes('b4/h, b4/h/r')), score.voice(notes2)], + }); + const system3 = vf.System({ y: 100, x: 400, width: 150 }); + system3.addStave({ + voices: [score.voice(score.notes('d5/h, d5/h/r')), score.voice(score.notes('e4/w'))], + }); + const system4 = vf.System({ y: 100, x: 550, width: 150 }); + const notes4 = score.notes('e4/q, e4/q/r, e4/h/r'); + notes4[0].render_options.draw = false; + notes4[2].render_options.draw = false; + system4.addStave({ + voices: [score.voice(notes4), score.voice(score.notes('e4/8, e4/8/r, e4/q/r, e4/h/r'))], + }); + vf.draw(); + expect(0); +} +function centerAlignedRest(options) { + const f = VexFlowTests.makeFactory(options, 400, 160); + const stave = f.Stave({ x: 10, y: 10, width: 350 }).addClef('treble').addTimeSignature('4/4'); + const note = f.StaveNote({ keys: ['b/4'], duration: '1r', align_center: true }); + const voice = f.Voice().setStrict(false).addTickables([note]); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +function centerAlignedRestFermata(options) { + const f = VexFlowTests.makeFactory(options, 400, 160); + const stave = f.Stave({ x: 10, y: 10, width: 350 }).addClef('treble').addTimeSignature('4/4'); + const note = f + .StaveNote({ keys: ['b/4'], duration: '1r', align_center: true }) + .addModifier(new Articulation('a@a').setPosition(3), 0); + const voice = f.Voice().setStrict(false).addTickables([note]); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +function centerAlignedRestAnnotation(options) { + const f = VexFlowTests.makeFactory(options, 400, 160); + const stave = f.Stave({ x: 10, y: 10, width: 350 }).addClef('treble').addTimeSignature('4/4'); + const note = f + .StaveNote({ keys: ['b/4'], duration: '1r', align_center: true }) + .addModifier(new Annotation('Whole measure rest').setVerticalJustification(AnnotationVerticalJustify.TOP), 0); + const voice = f.Voice().setStrict(false).addTickables([note]); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +function centerAlignedNoteMultiModifiers(options) { + const f = VexFlowTests.makeFactory(options, 400, 160); + const stave = f.Stave({ x: 10, y: 10, width: 350 }).addClef('treble').addTimeSignature('4/4'); + function newFinger(num, pos) { + return new FretHandFinger(num).setPosition(pos); + } + const note = f + .StaveNote({ keys: ['c/4', 'e/4', 'g/4'], duration: '4', align_center: true }) + .addModifier(new Annotation('Test').setPosition(3), 0) + .addStroke(0, new Stroke(2)) + .addModifier(new Accidental('#'), 1) + .addModifier(newFinger('3', Modifier.Position.LEFT), 0) + .addModifier(newFinger('2', Modifier.Position.LEFT), 2) + .addModifier(newFinger('1', Modifier.Position.RIGHT), 1) + .addModifier(new StringNumber('4').setPosition(Modifier.Position.BELOW), 2); + Dot.buildAndAttach([note], { all: true }); + const voice = f.Voice().setStrict(false).addTickables([note]); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +function centerAlignedMultiVoice(options) { + const f = VexFlowTests.makeFactory(options, 400, 160); + const stave = f.Stave({ x: 10, y: 10, width: 350 }).addClef('treble').addTimeSignature('3/8'); + const custom_duration = new Fraction(3, 8); + const notes0 = [ + f.StaveNote({ + keys: ['c/4'], + duration: '1r', + align_center: true, + duration_override: custom_duration, + }), + ]; + const createStaveNote = (struct) => f.StaveNote(struct); + const notes1 = [ + { keys: ['b/4'], duration: '8' }, + { keys: ['b/4'], duration: '8' }, + { keys: ['b/4'], duration: '8' }, + ].map(createStaveNote); + notes1[1].addModifier(f.Accidental({ type: '#' }), 0); + f.Beam({ notes: notes1 }); + const voice0 = f.Voice({ time: '3/8' }).setStrict(false).addTickables(notes0); + const voice1 = f.Voice({ time: '3/8' }).setStrict(false).addTickables(notes1); + f.Formatter().joinVoices([voice0, voice1]).formatToStave([voice0, voice1], stave); + f.draw(); + ok(true); +} +VexFlowTests.register(StaveNoteTests); +export { StaveNoteTests }; diff --git a/build/esm/tests/stavetie_tests.js b/build/esm/tests/stavetie_tests.js new file mode 100644 index 0000000000..aacc43c620 --- /dev/null +++ b/build/esm/tests/stavetie_tests.js @@ -0,0 +1,108 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Stem } from '../src/stem.js'; +const StaveTieTests = { + Start() { + QUnit.module('StaveTie'); + const run = VexFlowTests.runTests; + run('Simple StaveTie', simple); + run('Chord StaveTie', chord); + run('Stem Up StaveTie', stemUp); + run('No End Note With Clef', noEndNote1); + run('No End Note', noEndNote2); + run('No Start Note With Clef', noStartNote1); + run('No Start Note', noStartNote2); + run('Set Direction Down', setDirectionDown); + run('Set Direction Up', setDirectionUp); + }, +}; +function createTest(notesData, setupTies) { + return (options) => { + const factory = VexFlowTests.makeFactory(options, 300); + const stave = factory.Stave(); + const score = factory.EasyScore(); + const notes = score.notes(notesData[0], notesData[1]); + const voice = score.voice(notes); + setupTies(factory, notes, stave); + factory.Formatter().joinVoices([voice]).formatToStave([voice], stave); + factory.draw(); + ok(true); + }; +} +const simple = createTest(['(cb4 e#4 a4)/2, (d4 e4 f4)', { stem: 'down' }], (f, notes) => { + f.StaveTie({ + from: notes[0], + to: notes[1], + first_indices: [0, 1], + last_indices: [0, 1], + }); +}); +const chord = createTest(['(d4 e4 f4)/2, (cn4 f#4 a4)', { stem: 'down' }], (f, notes) => { + f.StaveTie({ + from: notes[0], + to: notes[1], + first_indices: [0, 1, 2], + last_indices: [0, 1, 2], + }); +}); +const stemUp = createTest(['(d4 e4 f4)/2, (cn4 f#4 a4)', { stem: 'up' }], (f, notes) => { + f.StaveTie({ + from: notes[0], + to: notes[1], + first_indices: [0, 1, 2], + last_indices: [0, 1, 2], + }); +}); +const noEndNote1 = createTest(['(cb4 e#4 a4)/2, (d4 e4 f4)', { stem: 'down' }], (f, notes, stave) => { + stave.addEndClef('treble'); + f.StaveTie({ + from: notes[1], + first_indices: [2], + last_indices: [2], + text: 'slow.', + }); +}); +const noEndNote2 = createTest(['(cb4 e#4 a4)/2, (d4 e4 f4)', { stem: 'down' }], (f, notes) => { + f.StaveTie({ + from: notes[1], + first_indices: [2], + last_indices: [2], + text: 'slow.', + }); +}); +const noStartNote1 = createTest(['(cb4 e#4 a4)/2, (d4 e4 f4)', { stem: 'down' }], (f, notes, stave) => { + stave.addClef('treble'); + f.StaveTie({ + to: notes[0], + first_indices: [2], + last_indices: [2], + text: 'H', + }); +}); +const noStartNote2 = createTest(['(cb4 e#4 a4)/2, (d4 e4 f4)', { stem: 'down' }], (f, notes) => { + f.StaveTie({ + to: notes[0], + first_indices: [2], + last_indices: [2], + text: 'H', + }); +}); +const setDirectionDown = createTest(['(cb4 e#4 a4)/2, (d4 e4 f4)', { stem: 'down' }], (f, notes) => { + f.StaveTie({ + from: notes[0], + to: notes[1], + first_indices: [0, 1], + last_indices: [0, 1], + options: { direction: Stem.DOWN }, + }); +}); +const setDirectionUp = createTest(['(cb4 e#4 a4)/2, (d4 e4 f4)', { stem: 'down' }], (f, notes) => { + f.StaveTie({ + from: notes[0], + to: notes[1], + first_indices: [0, 1], + last_indices: [0, 1], + options: { direction: Stem.UP }, + }); +}); +VexFlowTests.register(StaveTieTests); +export { StaveTieTests }; diff --git a/build/esm/tests/stringnumber_tests.js b/build/esm/tests/stringnumber_tests.js new file mode 100644 index 0000000000..687e868122 --- /dev/null +++ b/build/esm/tests/stringnumber_tests.js @@ -0,0 +1,264 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Glyph } from '../src/glyph.js'; +import { Renderer } from '../src/renderer.js'; +import { Stave } from '../src/stave.js'; +import { BarlineType } from '../src/stavebarline.js'; +import { Stroke } from '../src/strokes.js'; +const StringNumberTests = { + Start() { + QUnit.module('StringNumber'); + const run = VexFlowTests.runTests; + run('String Number In Notation', drawMultipleMeasures); + run('String Number In Notation - no circle', drawMultipleMeasures, { drawCircle: false }); + run('Fret Hand Finger In Notation', drawFretHandFingers); + run('Multi Voice With Strokes, String & Finger Numbers', multi); + run('Complex Measure With String & Finger Numbers', drawAccidentals); + }, +}; +function drawMultipleMeasures(options) { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y; + const f = VexFlowTests.makeFactory(options, 775, 200); + const score = f.EasyScore(); + const stave1 = f.Stave({ width: 300 }).setEndBarType(BarlineType.DOUBLE).addClef('treble'); + const notes1 = score.notes('(c4 e4 g4)/4., (c5 e5 g5)/8, (c4 f4 g4)/4, (c4 f4 g4)/4', { stem: 'down' }); + notes1[0] + .addModifier(f.StringNumber({ number: '5', position: 'right' }, (_a = options.params) === null || _a === void 0 ? void 0 : _a.drawCircle), 0) + .addModifier(f.StringNumber({ number: '4', position: 'left' }, (_b = options.params) === null || _b === void 0 ? void 0 : _b.drawCircle), 1) + .addModifier(f.StringNumber({ number: '3', position: 'right' }, (_c = options.params) === null || _c === void 0 ? void 0 : _c.drawCircle), 2); + notes1[1] + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.StringNumber({ number: '5', position: 'below' }, (_d = options.params) === null || _d === void 0 ? void 0 : _d.drawCircle), 0) + .addModifier(f.Accidental({ type: '#' }).setAsCautionary(), 1) + .addModifier(f + .StringNumber({ number: '3', position: 'above' }, (_e = options.params) === null || _e === void 0 ? void 0 : _e.drawCircle) + .setLastNote(notes1[3]) + .setLineEndType(Renderer.LineEndType.DOWN), 2); + notes1[2] + .addModifier(f.StringNumber({ number: '5', position: 'left' }, (_f = options.params) === null || _f === void 0 ? void 0 : _f.drawCircle), 0) + .addModifier(f.StringNumber({ number: '3', position: 'left' }, (_g = options.params) === null || _g === void 0 ? void 0 : _g.drawCircle), 2) + .addModifier(f.Accidental({ type: '#' }), 1); + notes1[3] + .addModifier(f.StringNumber({ number: '5', position: 'right' }, (_h = options.params) === null || _h === void 0 ? void 0 : _h.drawCircle).setOffsetY(7), 0) + .addModifier(f.StringNumber({ number: '4', position: 'right' }, (_j = options.params) === null || _j === void 0 ? void 0 : _j.drawCircle).setOffsetY(6), 1) + .addModifier(f.StringNumber({ number: '3', position: 'right' }, (_k = options.params) === null || _k === void 0 ? void 0 : _k.drawCircle).setOffsetY(-6), 2); + const voice1 = score.voice(notes1); + f.Formatter().joinVoices([voice1]).formatToStave([voice1], stave1); + const stave2 = f + .Stave({ x: stave1.getWidth() + stave1.getX(), y: stave1.getY(), width: 300 }) + .setEndBarType(BarlineType.DOUBLE); + const notes2 = score.notes('(c4 e4 g4)/4, (c5 e5 g5), (c4 f4 g4), (c4 f4 g4)', { stem: 'up' }); + notes2[0] + .addModifier(f.StringNumber({ number: '5', position: 'right' }, (_l = options.params) === null || _l === void 0 ? void 0 : _l.drawCircle), 0) + .addModifier(f.StringNumber({ number: '4', position: 'left' }, (_m = options.params) === null || _m === void 0 ? void 0 : _m.drawCircle), 1) + .addModifier(f.StringNumber({ number: '3', position: 'right' }, (_o = options.params) === null || _o === void 0 ? void 0 : _o.drawCircle), 2); + notes2[1] + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.StringNumber({ number: '5', position: 'below' }, (_p = options.params) === null || _p === void 0 ? void 0 : _p.drawCircle), 0) + .addModifier(f.Accidental({ type: '#' }), 1) + .addModifier(f + .StringNumber({ number: '3', position: 'above' }, (_q = options.params) === null || _q === void 0 ? void 0 : _q.drawCircle) + .setLastNote(notes2[3]) + .setDashed(false), 2); + notes2[2] + .addModifier(f.StringNumber({ number: '3', position: 'left' }, (_r = options.params) === null || _r === void 0 ? void 0 : _r.drawCircle), 2) + .addModifier(f.Accidental({ type: '#' }), 1); + notes2[3] + .addModifier(f.StringNumber({ number: '5', position: 'right' }, (_s = options.params) === null || _s === void 0 ? void 0 : _s.drawCircle).setOffsetY(7), 0) + .addModifier(f.StringNumber({ number: '4', position: 'right' }, (_t = options.params) === null || _t === void 0 ? void 0 : _t.drawCircle).setOffsetY(6), 1) + .addModifier(f.StringNumber({ number: '3', position: 'right' }, (_u = options.params) === null || _u === void 0 ? void 0 : _u.drawCircle).setOffsetY(-6), 2); + const voice2 = score.voice(notes2); + f.Formatter().joinVoices([voice2]).formatToStave([voice2], stave2); + const stave3 = f + .Stave({ x: stave2.getWidth() + stave2.getX(), y: stave2.getY(), width: 150 }) + .setEndBarType(BarlineType.END); + const notesBar3 = score.notes('(c4 e4 g4 a4)/1.'); + notesBar3[0] + .addModifier(f.StringNumber({ number: '5', position: 'below' }, (_v = options.params) === null || _v === void 0 ? void 0 : _v.drawCircle), 0) + .addModifier(f.StringNumber({ number: '4', position: 'right' }, (_w = options.params) === null || _w === void 0 ? void 0 : _w.drawCircle), 1) + .addModifier(f.StringNumber({ number: '3', position: 'left' }, (_x = options.params) === null || _x === void 0 ? void 0 : _x.drawCircle), 2) + .addModifier(f.StringNumber({ number: '2', position: 'above' }, (_y = options.params) === null || _y === void 0 ? void 0 : _y.drawCircle), 3); + const voice3 = score.voice(notesBar3, { time: '6/4' }); + f.Formatter().joinVoices([voice3]).formatToStave([voice3], stave3); + f.draw(); + ok(true, 'String Number'); +} +function drawFretHandFingers(options) { + const f = VexFlowTests.makeFactory(options, 725, 200); + const score = f.EasyScore(); + const stave1 = f.Stave({ width: 350 }).setEndBarType(BarlineType.DOUBLE).addClef('treble'); + const notes1 = score.notes('(c4 e4 g4)/4, (c5 e5 g5), (c4 f4 g4), (c4 f4 g4)', { stem: 'down' }); + notes1[0] + .addModifier(f.Fingering({ number: '3', position: 'left' }), 0) + .addModifier(f.Fingering({ number: '2', position: 'left' }), 1) + .addModifier(f.Fingering({ number: '0', position: 'left' }), 2); + notes1[1] + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.Fingering({ number: '3', position: 'left' }), 0) + .addModifier(f.Fingering({ number: '2', position: 'left' }), 1) + .addModifier(f.Accidental({ type: '#' }), 1) + .addModifier(f.Fingering({ number: '0', position: 'left' }), 2); + notes1[2] + .addModifier(f.Fingering({ number: '3', position: 'below' }), 0) + .addModifier(f.Fingering({ number: '4', position: 'left' }), 1) + .addModifier(f.StringNumber({ number: '4', position: 'left' }), 1) + .addModifier(f.Fingering({ number: '0', position: 'above' }), 2) + .addModifier(f.Accidental({ type: '#' }), 1); + notes1[3] + .addModifier(f.Fingering({ number: '3', position: 'right' }), 0) + .addModifier(f.StringNumber({ number: '5', position: 'right' }).setOffsetY(7), 0) + .addModifier(f.Fingering({ number: '4', position: 'right' }), 1) + .addModifier(f.StringNumber({ number: '4', position: 'right' }).setOffsetY(6), 1) + .addModifier(f.Fingering({ number: '0', position: 'right' }).setOffsetY(-5), 2) + .addModifier(f.StringNumber({ number: '3', position: 'right' }).setOffsetY(-6), 2); + const voice1 = score.voice(notes1); + f.Formatter().joinVoices([voice1]).formatToStave([voice1], stave1); + const stave2 = f + .Stave({ x: stave1.getWidth() + stave1.getX(), y: stave1.getY(), width: 350 }) + .setEndBarType(BarlineType.END); + const notes2 = score.notes('(c4 e4 g4)/4., (c5 e5 g5)/8, (c4 f4 g4)/8, (c4 f4 g4)/4.[stem="down"]', { + stem: 'up', + }); + notes2[0] + .addModifier(f.Fingering({ number: '3', position: 'right' }), 0) + .addModifier(f.Fingering({ number: '2', position: 'left' }), 1) + .addModifier(f.StringNumber({ number: '4', position: 'right' }), 1) + .addModifier(f.Fingering({ number: '0', position: 'above' }), 2); + notes2[1] + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.Fingering({ number: '3', position: 'right' }), 0) + .addModifier(f.Fingering({ number: '2', position: 'left' }), 1) + .addModifier(f.Accidental({ type: '#' }), 1) + .addModifier(f.Fingering({ number: '0', position: 'left' }), 2); + notes2[2] + .addModifier(f.Fingering({ number: '3', position: 'below' }), 0) + .addModifier(f.Fingering({ number: '2', position: 'left' }), 1) + .addModifier(f.StringNumber({ number: '4', position: 'left' }), 1) + .addModifier(f.Fingering({ number: '1', position: 'right' }), 2) + .addModifier(f.Accidental({ type: '#' }), 2); + notes2[3] + .addModifier(f.Fingering({ number: '3', position: 'right' }), 0) + .addModifier(f.StringNumber({ number: '5', position: 'right' }).setOffsetY(7), 0) + .addModifier(f.Fingering({ number: '4', position: 'right' }), 1) + .addModifier(f.StringNumber({ number: '4', position: 'right' }).setOffsetY(6), 1) + .addModifier(f.Fingering({ number: '1', position: 'right' }).setOffsetY(-6), 2) + .addModifier(f.StringNumber({ number: '3', position: 'right' }).setOffsetY(-6), 2); + const voice2 = score.voice(notes2); + f.Formatter().joinVoices([voice2]).formatToStave([voice2], stave2); + f.draw(); + ok(true, 'String Number'); +} +function multi(options) { + const f = VexFlowTests.makeFactory(options, 700, 200); + const score = f.EasyScore(); + const stave = f.Stave(); + const notes1 = score.notes('(c4 e4 g4)/4, (a3 e4 g4), (c4 d4 a4), (c4 d4 a4)', { stem: 'up' }); + notes1[0] + .addStroke(0, new Stroke(5)) + .addModifier(f.Fingering({ number: '3', position: 'left' }), 0) + .addModifier(f.Fingering({ number: '2', position: 'left' }), 1) + .addModifier(f.Fingering({ number: '0', position: 'left' }), 2) + .addModifier(f.StringNumber({ number: '4', position: 'left' }), 1) + .addModifier(f.StringNumber({ number: '3', position: 'above' }), 2); + notes1[1] + .addStroke(0, new Stroke(6)) + .addModifier(f.StringNumber({ number: '4', position: 'right' }), 1) + .addModifier(f.StringNumber({ number: '3', position: 'above' }), 2) + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1) + .addModifier(f.Accidental({ type: '#' }), 2); + notes1[2] + .addStroke(0, new Stroke(2)) + .addModifier(f.Fingering({ number: '3', position: 'left' }), 0) + .addModifier(f.Fingering({ number: '0', position: 'right' }), 1) + .addModifier(f.StringNumber({ number: '4', position: 'right' }), 1) + .addModifier(f.Fingering({ number: '1', position: 'left' }), 2) + .addModifier(f.StringNumber({ number: '3', position: 'right' }), 2); + notes1[3] + .addStroke(0, new Stroke(1)) + .addModifier(f.StringNumber({ number: '3', position: 'left' }), 2) + .addModifier(f.StringNumber({ number: '4', position: 'right' }), 1); + const notes2 = score.notes('e3/8, e3, e3, e3, e3, e3, e3, e3', { stem: 'down' }); + notes2[0] + .addModifier(f.Fingering({ number: '0', position: 'left' }), 0) + .addModifier(f.StringNumber({ number: '6', position: 'below' }), 0); + notes2[2].addModifier(f.Accidental({ type: '#' }), 0); + notes2[4].addModifier(f.Fingering({ number: '0', position: 'left' }), 0); + notes2[4].addModifier(f.StringNumber({ number: '6', position: 'left' }).setOffsetX(15).setOffsetY(18), 0); + const voices = [score.voice(notes2), score.voice(notes1)]; + f.Formatter().joinVoices(voices).formatToStave(voices, stave); + f.Beam({ notes: notes2.slice(0, 4) }); + f.Beam({ notes: notes2.slice(4, 8) }); + f.draw(); + ok(true, 'Strokes Test Multi Voice'); +} +function drawAccidentals(options) { + const f = VexFlowTests.makeFactory(options, 750); + const glyphScale = 39; + const clefWidth = Glyph.getWidth('gClef', glyphScale); + const notes = [ + f.StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'c/5', 'e/5', 'g/5'], stem_direction: 1, duration: '4' }), + f.StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'd/5', 'e/5', 'g/5'], stem_direction: 1, duration: '4' }), + f.StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'd/5', 'e/5', 'g/5'], stem_direction: -1, duration: '4' }), + f.StaveNote({ keys: ['c/4', 'e/4', 'g/4', 'd/5', 'e/5', 'g/5'], stem_direction: -1, duration: '4' }), + ]; + notes[0] + .addModifier(f.Fingering({ number: '3', position: 'left' }), 0) + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.Fingering({ number: '2', position: 'left' }), 1) + .addModifier(f.StringNumber({ number: '2', position: 'left' }), 1) + .addModifier(f.Accidental({ type: '#' }), 1) + .addModifier(f.Fingering({ number: '0', position: 'left' }), 2) + .addModifier(f.Accidental({ type: '#' }), 2) + .addModifier(f.Fingering({ number: '3', position: 'left' }), 3) + .addModifier(f.Accidental({ type: '#' }), 3) + .addModifier(f.Fingering({ number: '2', position: 'right' }), 4) + .addModifier(f.StringNumber({ number: '3', position: 'right' }), 4) + .addModifier(f.Accidental({ type: '#' }), 4) + .addModifier(f.Fingering({ number: '0', position: 'left' }), 5) + .addModifier(f.Accidental({ type: '#' }), 5); + notes[1] + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1) + .addModifier(f.Accidental({ type: '#' }), 2) + .addModifier(f.Accidental({ type: '#' }), 3) + .addModifier(f.Accidental({ type: '#' }), 4) + .addModifier(f.Accidental({ type: '#' }), 5); + notes[2] + .addModifier(f.Fingering({ number: '3', position: 'left' }), 0) + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.Fingering({ number: '2', position: 'left' }), 1) + .addModifier(f.StringNumber({ number: '2', position: 'left' }), 1) + .addModifier(f.Accidental({ type: '#' }), 1) + .addModifier(f.Fingering({ number: '0', position: 'left' }), 2) + .addModifier(f.Accidental({ type: '#' }), 2) + .addModifier(f.Fingering({ number: '3', position: 'left' }), 3) + .addModifier(f.Accidental({ type: '#' }), 3) + .addModifier(f.Fingering({ number: '2', position: 'right' }), 4) + .addModifier(f.StringNumber({ number: '3', position: 'right' }), 4) + .addModifier(f.Accidental({ type: '#' }), 4) + .addModifier(f.Fingering({ number: '0', position: 'left' }), 5) + .addModifier(f.Accidental({ type: '#' }), 5); + notes[3] + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1) + .addModifier(f.Accidental({ type: '#' }), 2) + .addModifier(f.Accidental({ type: '#' }), 3) + .addModifier(f.Accidental({ type: '#' }), 4) + .addModifier(f.Accidental({ type: '#' }), 5); + const voice = f.Voice().addTickables(notes); + const ctx = f.getContext(); + const formatter = f.Formatter().joinVoices([voice]); + const stavePadding = clefWidth + Stave.defaultPadding + 10; + const nwidth = Math.max(formatter.preCalculateMinTotalWidth([voice]), 490 - stavePadding); + formatter.format([voice], nwidth); + const stave = f + .Stave({ x: 0, y: 0, width: nwidth + stavePadding }) + .setContext(ctx) + .setEndBarType(BarlineType.DOUBLE) + .addClef('treble') + .draw(); + voice.draw(ctx, stave); + ok(true, 'String Number'); +} +VexFlowTests.register(StringNumberTests); +export { StringNumberTests }; diff --git a/build/esm/tests/strokes_tests.js b/build/esm/tests/strokes_tests.js new file mode 100644 index 0000000000..1a84f75a76 --- /dev/null +++ b/build/esm/tests/strokes_tests.js @@ -0,0 +1,275 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Barline, Beam, Bend, Stroke } from '../src/index.js'; +const StrokesTests = { + Start() { + QUnit.module('Strokes'); + const run = VexFlowTests.runTests; + run('Strokes - Brush/Roll/Rasquedo', brushRollRasquedo); + run('Strokes - Arpeggio directionless (without arrows)', arpeggioDirectionless); + run('Strokes - Multi Voice', multiVoice); + run('Strokes - Notation and Tab', notesWithTab); + run('Strokes - Multi-Voice Notation and Tab', multiNotationAndTab); + }, +}; +function brushRollRasquedo(options) { + const f = VexFlowTests.makeFactory(options, 600, 200); + const score = f.EasyScore(); + const stave1 = f.Stave({ width: 250 }).setEndBarType(Barline.type.DOUBLE); + const notes1 = score.notes('(a3 e4 a4)/4, (c4 e4 g4), (c4 e4 g4), (c4 e4 g4)', { stem: 'up' }); + notes1[0].addStroke(0, new Stroke(1)); + notes1[1] + .addStroke(0, new Stroke(2)) + .addModifier(f.Accidental({ type: '#' }), 1) + .addModifier(f.Accidental({ type: '#' }), 2) + .addModifier(f.Accidental({ type: '#' }), 0); + notes1[2].addStroke(0, new Stroke(1)); + notes1[3].addStroke(0, new Stroke(2)); + const voice1 = score.voice(notes1); + f.Formatter().joinVoices([voice1]).formatToStave([voice1], stave1); + const stave2 = f + .Stave({ x: stave1.getWidth() + stave1.getX(), y: stave1.getY(), width: 300 }) + .setEndBarType(Barline.type.DOUBLE); + const notes2 = score.notes('(c4 d4 g4)/4, (c4 d4 g4), (c4 d4 g4), (c4 d4 a4)', { stem: 'up' }); + notes2[0].addStroke(0, new Stroke(3)); + notes2[1].addStroke(0, new Stroke(4)); + notes2[2].addStroke(0, new Stroke(5)); + notes2[3] + .addStroke(0, new Stroke(6)) + .addModifier(f.Accidental({ type: 'bb' }), 0) + .addModifier(f.Accidental({ type: 'bb' }), 1) + .addModifier(f.Accidental({ type: 'bb' }), 2); + const voice2 = score.voice(notes2); + f.Formatter().joinVoices([voice2]).formatToStave([voice2], stave2); + f.draw(); + ok(true, 'Brush/Roll/Rasquedo'); +} +function arpeggioDirectionless(options) { + const f = VexFlowTests.makeFactory(options, 700, 200); + const score = f.EasyScore(); + const stave1 = f.Stave({ x: 100, width: 500 }).setEndBarType(Barline.type.DOUBLE); + const notes1 = score.notes('(g4 b4 d5)/4, (g4 b4 d5 g5), (g4 b4 d5 g5), (g4 b4 d5)', { stem: 'up' }); + const graceNoteStructs = [ + { keys: ['e/4'], duration: '32' }, + { keys: ['f/4'], duration: '32' }, + { keys: ['g/4'], duration: '32' }, + ]; + const graceNotes = graceNoteStructs.map((graceNoteStruct) => f.GraceNote(graceNoteStruct)); + const graceNoteGroup = f.GraceNoteGroup({ notes: graceNotes, slur: false }); + graceNoteGroup.beamNotes(); + notes1[0].addStroke(0, new Stroke(7)); + notes1[1] + .addStroke(0, new Stroke(7)) + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1) + .addModifier(f.Accidental({ type: '#' }), 2) + .addModifier(f.Accidental({ type: '#' }), 3); + notes1[2] + .addStroke(0, new Stroke(7)) + .addModifier(f.Accidental({ type: 'b' }), 1) + .addModifier(graceNoteGroup, 0); + notes1[3].addStroke(0, new Stroke(7)).addModifier(f.NoteSubGroup({ + notes: [f.ClefNote({ type: 'treble', options: { size: 'default', annotation: '8va' } })], + }), 0); + const voice1 = score.voice(notes1); + f.Formatter().joinVoices([voice1]).formatToStave([voice1], stave1); + f.draw(); + ok(true, 'Arpeggio directionless (without arrows)'); +} +function multiVoice(options) { + const f = VexFlowTests.makeFactory(options, 500, 200); + const score = f.EasyScore(); + const stave = f.Stave(); + const notes1 = score.notes('(c4 e4 g4)/4, (c4 e4 g4), (c4 d4 a4), (c4 d4 a4)', { stem: 'up' }); + notes1[0].addStroke(0, new Stroke(5)); + notes1[1] + .addStroke(0, new Stroke(6)) + .addModifier(f.Accidental({ type: '#' }), 0) + .addModifier(f.Accidental({ type: '#' }), 2); + notes1[2].addStroke(0, new Stroke(2)); + notes1[3].addStroke(0, new Stroke(1)); + const notes2 = score.notes('e3/8, e3, e3, e3, e3, e3, e3, e3', { stem: 'down' }); + f.Beam({ notes: notes2.slice(0, 4) }); + f.Beam({ notes: notes2.slice(4, 8) }); + const voices = [notes1, notes2].map((notes) => score.voice(notes)); + f.Formatter().joinVoices(voices).formatToStave(voices, stave); + f.draw(); + ok(true, 'Strokes Test Multi Voice'); +} +function multiNotationAndTab(options) { + const f = VexFlowTests.makeFactory(options, 400, 275); + const score = f.EasyScore(); + const stave = f.Stave().addClef('treble'); + const notes1 = score.notes('(g4 b4 e5)/4, (g4 b4 e5), (g4 b4 e5), (g4 b4 e5)', { stem: 'up' }); + notes1[0].addStroke(0, new Stroke(3, { all_voices: false })); + notes1[1].addStroke(0, new Stroke(6)); + notes1[2].addStroke(0, new Stroke(2, { all_voices: false })); + notes1[3].addStroke(0, new Stroke(1)); + const notes2 = score.notes('g3/4, g3, g3, g3', { stem: 'down' }); + f.TabStave({ y: 100 }).addClef('tab').setNoteStartX(stave.getNoteStartX()); + const tabNotes1 = [ + f.TabNote({ + positions: [ + { str: 3, fret: 0 }, + { str: 2, fret: 0 }, + { str: 1, fret: 1 }, + ], + duration: '4', + }), + f.TabNote({ + positions: [ + { str: 3, fret: 0 }, + { str: 2, fret: 0 }, + { str: 1, fret: 1 }, + ], + duration: '4', + }), + f.TabNote({ + positions: [ + { str: 3, fret: 0 }, + { str: 2, fret: 0 }, + { str: 1, fret: 1 }, + ], + duration: '4', + }), + f.TabNote({ + positions: [ + { str: 3, fret: 0 }, + { str: 2, fret: 0 }, + { str: 1, fret: 1 }, + ], + duration: '4', + }), + ]; + tabNotes1[0].addStroke(0, new Stroke(3, { all_voices: false })); + tabNotes1[1].addStroke(0, new Stroke(6)); + tabNotes1[2].addStroke(0, new Stroke(2, { all_voices: false })); + tabNotes1[3].addStroke(0, new Stroke(1)); + const tabNotes2 = [ + f.TabNote({ positions: [{ str: 6, fret: 3 }], duration: '4' }), + f.TabNote({ positions: [{ str: 6, fret: 3 }], duration: '4' }), + f.TabNote({ positions: [{ str: 6, fret: 3 }], duration: '4' }), + f.TabNote({ positions: [{ str: 6, fret: 3 }], duration: '4' }), + ]; + const voices = [notes1, notes2, tabNotes1, tabNotes2].map((notes) => score.voice(notes)); + f.Formatter().joinVoices(voices).formatToStave(voices, stave); + f.draw(); + ok(true, 'Strokes Test Notation & Tab Multi Voice'); +} +function notesWithTab(options) { + const f = VexFlowTests.makeFactory(options, 500, 300); + const stave = f.Stave({ x: 15, y: 40, width: 450 }).addClef('treble'); + const notes = [ + f + .StaveNote({ keys: ['b/4', 'd/5', 'g/5'], stem_direction: -1, duration: '4' }) + .addModifier(f.Accidental({ type: 'b' }), 1) + .addModifier(f.Accidental({ type: 'b' }), 0), + f.StaveNote({ keys: ['c/5', 'd/5'], stem_direction: -1, duration: '4' }), + f.StaveNote({ keys: ['b/3', 'e/4', 'a/4', 'd/5'], stem_direction: 1, duration: '8' }), + f + .StaveNote({ keys: ['a/3', 'e/4', 'a/4', 'c/5', 'e/5', 'a/5'], stem_direction: 1, duration: '8' }) + .addModifier(f.Accidental({ type: '#' }), 3), + f.StaveNote({ keys: ['b/3', 'e/4', 'a/4', 'd/5'], stem_direction: 1, duration: '8' }), + f + .StaveNote({ keys: ['a/3', 'e/4', 'a/4', 'c/5', 'f/5', 'a/5'], stem_direction: 1, duration: '8' }) + .addModifier(f.Accidental({ type: '#' }), 3) + .addModifier(f.Accidental({ type: '#' }), 4), + ]; + const tabstave = f + .TabStave({ x: stave.getX(), y: 140, width: 450 }) + .addClef('tab') + .setNoteStartX(stave.getNoteStartX()); + const tabNotes = [ + f + .TabNote({ + positions: [ + { str: 1, fret: 3 }, + { str: 2, fret: 2 }, + { str: 3, fret: 3 }, + ], + duration: '4', + }) + .addModifier(new Bend('Full'), 0), + f + .TabNote({ + positions: [ + { str: 2, fret: 3 }, + { str: 3, fret: 5 }, + ], + duration: '4', + }) + .addModifier(new Bend('Unison'), 1), + f.TabNote({ + positions: [ + { str: 3, fret: 7 }, + { str: 4, fret: 7 }, + { str: 5, fret: 7 }, + { str: 6, fret: 7 }, + ], + duration: '8', + }), + f.TabNote({ + positions: [ + { str: 1, fret: 5 }, + { str: 2, fret: 5 }, + { str: 3, fret: 6 }, + { str: 4, fret: 7 }, + { str: 5, fret: 7 }, + { str: 6, fret: 5 }, + ], + duration: '8', + }), + f.TabNote({ + positions: [ + { str: 3, fret: 7 }, + { str: 4, fret: 7 }, + { str: 5, fret: 7 }, + { str: 6, fret: 7 }, + ], + duration: '8', + }), + f.TabNote({ + positions: [ + { str: 1, fret: 5 }, + { str: 2, fret: 5 }, + { str: 3, fret: 6 }, + { str: 4, fret: 7 }, + { str: 5, fret: 7 }, + { str: 6, fret: 5 }, + ], + duration: '8', + }), + ]; + notes[0].addStroke(0, new Stroke(1)); + notes[1].addStroke(0, new Stroke(2)); + notes[2].addStroke(0, new Stroke(3)); + notes[3].addStroke(0, new Stroke(4)); + notes[4].addStroke(0, new Stroke(5)); + notes[5].addStroke(0, new Stroke(6)); + tabNotes[0].addStroke(0, new Stroke(1)); + tabNotes[1].addStroke(0, new Stroke(2)); + tabNotes[2].addStroke(0, new Stroke(3)); + tabNotes[3].addStroke(0, new Stroke(4)); + tabNotes[4].addStroke(0, new Stroke(5)); + tabNotes[5].addStroke(0, new Stroke(6)); + f.StaveConnector({ + top_stave: stave, + bottom_stave: tabstave, + type: 'bracket', + }); + f.StaveConnector({ + top_stave: stave, + bottom_stave: tabstave, + type: 'single', + }); + const voice = f.Voice().addTickables(notes); + const tabVoice = f.Voice().addTickables(tabNotes); + const beams = Beam.applyAndGetBeams(voice); + f.Formatter().joinVoices([voice]).joinVoices([tabVoice]).formatToStave([voice, tabVoice], stave); + f.draw(); + beams.forEach(function (beam) { + beam.setContext(f.getContext()).draw(); + }); + ok(true); +} +VexFlowTests.register(StrokesTests); +export { StrokesTests }; diff --git a/build/esm/tests/style_tests.js b/build/esm/tests/style_tests.js new file mode 100644 index 0000000000..f32fb870c6 --- /dev/null +++ b/build/esm/tests/style_tests.js @@ -0,0 +1,98 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Annotation } from '../src/annotation.js'; +import { Articulation } from '../src/articulation.js'; +import { Bend } from '../src/bend.js'; +import { Formatter } from '../src/formatter.js'; +import { KeySignature } from '../src/keysignature.js'; +import { NoteSubGroup } from '../src/notesubgroup.js'; +import { Ornament } from '../src/ornament.js'; +import { StaveModifierPosition } from '../src/stavemodifier.js'; +import { Stroke } from '../src/strokes.js'; +import { TabNote } from '../src/tabnote.js'; +import { TabStave } from '../src/tabstave.js'; +import { TimeSignature } from '../src/timesignature.js'; +const StyleTests = { + Start() { + QUnit.module('Style'); + const run = VexFlowTests.runTests; + run('Basic Style', stave); + run('TabNote modifiers Style', tab); + }, +}; +function FS(fillStyle, strokeStyle) { + const ret = { fillStyle }; + if (strokeStyle) { + ret.strokeStyle = strokeStyle; + } + return ret; +} +function stave(options) { + const f = VexFlowTests.makeFactory(options, 600, 150); + const stave = f.Stave({ x: 25, y: 20, width: 500 }); + const keySig = new KeySignature('D'); + keySig.addToStave(stave); + keySig.setStyle(FS('blue')); + stave.addTimeSignature('4/4'); + const timeSig = stave.getModifiers(StaveModifierPosition.BEGIN, TimeSignature.CATEGORY); + timeSig[0].setStyle(FS('brown')); + const notes = [ + f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: 1, duration: '4' }) + .addModifier(f.Accidental({ type: 'b' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1), + f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: 1, duration: '4' }) + .addModifier(f.Accidental({ type: 'b' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1), + f.StaveNote({ keys: ['e/4'], stem_direction: 1, duration: '4' }), + f.StaveNote({ keys: ['f/4'], stem_direction: 1, duration: '8' }), + f.TextDynamics({ text: 'sfz', duration: '16' }).setStyle(FS('blue')), + f.GhostNote({ duration: '16' }).addModifier(new Annotation('GhostNote green text').setStyle(FS('green')), 0), + ]; + const notes0 = notes[0]; + const notes1 = notes[1]; + notes0.setKeyStyle(0, FS('red')); + notes1.setKeyStyle(0, FS('red')); + const mods1 = notes1.getModifiers(); + mods1[0].setStyle(FS('green')); + notes0.addModifier(new Articulation('a.').setPosition(4).setStyle(FS('green')), 0); + notes0.addModifier(new Ornament('mordent').setStyle(FS('lightgreen')), 0); + notes1.addModifier(new Annotation('blue').setStyle(FS('blue')), 0); + notes1.addModifier(new NoteSubGroup([f.ClefNote({ options: { size: 'small' } }).setStyle(FS('blue'))]), 0); + const voice = f.Voice().addTickables(notes); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Basic Style'); +} +function tab(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 140); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + ctx.font = '10pt Arial'; + const stave = new TabStave(10, 10, 450).addTabGlyph(); + stave.getModifiers()[2].setStyle(FS('blue')); + stave.setContext(ctx).draw(); + const tabNote = (noteStruct) => new TabNote(noteStruct); + const notes = [ + tabNote({ + positions: [ + { str: 2, fret: 10 }, + { str: 4, fret: 9 }, + ], + duration: 'h', + }).addModifier(new Annotation('green text').setStyle(FS('green')), 0), + tabNote({ + positions: [ + { str: 2, fret: 10 }, + { str: 4, fret: 9 }, + ], + duration: 'h', + }) + .addModifier(new Bend('Full').setStyle(FS('brown')), 0) + .addStroke(0, new Stroke(1, { all_voices: false }).setStyle(FS('blue'))), + ]; + Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, 'TabNote Modifiers Style'); +} +VexFlowTests.register(StyleTests); +export { StyleTests }; diff --git a/build/esm/tests/support/qunit.js b/build/esm/tests/support/qunit.js new file mode 100644 index 0000000000..f3104a009e --- /dev/null +++ b/build/esm/tests/support/qunit.js @@ -0,0 +1,2765 @@ +"use strict"; +/*! + * QUnit 1.19.0 + * http://qunitjs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2015-09-01T15:00Z + */ +(function (global) { + var QUnit = {}; + var Date = global.Date; + var now = Date.now || + function () { + return new Date().getTime(); + }; + var setTimeout = global.setTimeout; + var clearTimeout = global.clearTimeout; + var window = global.window; + var defined = { + document: window && window.document !== undefined, + setTimeout: setTimeout !== undefined, + sessionStorage: (function () { + var x = 'qunit-test-string'; + try { + sessionStorage.setItem(x, x); + sessionStorage.removeItem(x); + return true; + } + catch (e) { + return false; + } + })(), + }; + var fileName = (sourceFromStacktrace(0) || '').replace(/(:\d+)+\)?/, '').replace(/.+\//, ''); + var globalStartCalled = false; + var runStarted = false; + var toString = Object.prototype.toString, hasOwn = Object.prototype.hasOwnProperty; + function diff(a, b) { + var i, j, result = a.slice(); + for (i = 0; i < result.length; i++) { + for (j = 0; j < b.length; j++) { + if (result[i] === b[j]) { + result.splice(i, 1); + i--; + break; + } + } + } + return result; + } + function inArray(elem, array) { + if (array.indexOf) { + return array.indexOf(elem); + } + for (var i = 0, length = array.length; i < length; i++) { + if (array[i] === elem) { + return i; + } + } + return -1; + } + function objectValues(obj) { + var key, val, vals = QUnit.is('array', obj) ? [] : {}; + for (key in obj) { + if (hasOwn.call(obj, key)) { + val = obj[key]; + vals[key] = val === Object(val) ? objectValues(val) : val; + } + } + return vals; + } + function extend(a, b, undefOnly) { + for (var prop in b) { + if (hasOwn.call(b, prop)) { + if (prop !== 'constructor' || a !== global) { + if (b[prop] === undefined) { + delete a[prop]; + } + else if (!(undefOnly && typeof a[prop] !== 'undefined')) { + a[prop] = b[prop]; + } + } + } + } + return a; + } + function objectType(obj) { + if (typeof obj === 'undefined') { + return 'undefined'; + } + if (obj === null) { + return 'null'; + } + var match = toString.call(obj).match(/^\[object\s(.*)\]$/), type = (match && match[1]) || ''; + switch (type) { + case 'Number': + if (isNaN(obj)) { + return 'nan'; + } + return 'number'; + case 'String': + case 'Boolean': + case 'Array': + case 'Set': + case 'Map': + case 'Date': + case 'RegExp': + case 'Function': + return type.toLowerCase(); + } + if (typeof obj === 'object') { + return 'object'; + } + return undefined; + } + function is(type, obj) { + return QUnit.objectType(obj) === type; + } + var getUrlParams = function () { + var i, current; + var urlParams = {}; + var location = window.location; + var params = location.search.slice(1).split('&'); + var length = params.length; + if (params[0]) { + for (i = 0; i < length; i++) { + current = params[i].split('='); + current[0] = decodeURIComponent(current[0]); + current[1] = current[1] ? decodeURIComponent(current[1]) : true; + if (urlParams[current[0]]) { + urlParams[current[0]] = [].concat(urlParams[current[0]], current[1]); + } + else { + urlParams[current[0]] = current[1]; + } + } + } + return urlParams; + }; + function extractStacktrace(e, offset) { + offset = offset === undefined ? 4 : offset; + var stack, include, i; + if (e.stack) { + stack = e.stack.split('\n'); + if (/^error$/i.test(stack[0])) { + stack.shift(); + } + if (fileName) { + include = []; + for (i = offset; i < stack.length; i++) { + if (stack[i].indexOf(fileName) !== -1) { + break; + } + include.push(stack[i]); + } + if (include.length) { + return include.join('\n'); + } + } + return stack[offset]; + } + else if (e.sourceURL) { + if (/qunit.js$/.test(e.sourceURL)) { + return; + } + return e.sourceURL + ':' + e.line; + } + } + function sourceFromStacktrace(offset) { + var error = new Error(); + if (!error.stack) { + try { + throw error; + } + catch (err) { + error = err; + } + } + return extractStacktrace(error, offset); + } + var config = { + queue: [], + blocking: true, + reorder: true, + altertitle: true, + scrolltop: true, + maxDepth: 5, + requireExpects: false, + urlConfig: [ + { + id: 'hidepassed', + label: 'Hide passed tests', + tooltip: 'Only show tests and assertions that fail. Stored as query-strings.', + }, + { + id: 'noglobals', + label: 'Check for Globals', + tooltip: 'Enabling this will test if any test introduces new properties on the ' + + 'global object (`window` in Browsers). Stored as query-strings.', + }, + { + id: 'notrycatch', + label: 'No try-catch', + tooltip: 'Enabling this will run tests outside of a try-catch block. Makes debugging ' + + 'exceptions in IE reasonable. Stored as query-strings.', + }, + ], + modules: [], + currentModule: { + name: '', + tests: [], + }, + callbacks: {}, + }; + var urlParams = defined.document ? getUrlParams() : {}; + config.modules.push(config.currentModule); + if (urlParams.filter === true) { + delete urlParams.filter; + } + config.filter = urlParams.filter; + config.testId = []; + if (urlParams.testId) { + urlParams.testId = decodeURIComponent(urlParams.testId).split(','); + for (var i = 0; i < urlParams.testId.length; i++) { + config.testId.push(urlParams.testId[i]); + } + } + var loggingCallbacks = {}; + function registerLoggingCallbacks(obj) { + var i, l, key, callbackNames = ['begin', 'done', 'log', 'testStart', 'testDone', 'moduleStart', 'moduleDone']; + function registerLoggingCallback(key) { + var loggingCallback = function (callback) { + if (objectType(callback) !== 'function') { + throw new Error('QUnit logging methods require a callback function as their first parameters.'); + } + config.callbacks[key].push(callback); + }; + loggingCallbacks[key] = loggingCallback; + return loggingCallback; + } + for (i = 0, l = callbackNames.length; i < l; i++) { + key = callbackNames[i]; + if (objectType(config.callbacks[key]) === 'undefined') { + config.callbacks[key] = []; + } + obj[key] = registerLoggingCallback(key); + } + } + function runLoggingCallbacks(key, args) { + var i, l, callbacks; + callbacks = config.callbacks[key]; + for (i = 0, l = callbacks.length; i < l; i++) { + callbacks[i](args); + } + } + function verifyLoggingCallbacks() { + var loggingCallback, userCallback; + for (loggingCallback in loggingCallbacks) { + if (QUnit[loggingCallback] !== loggingCallbacks[loggingCallback]) { + userCallback = QUnit[loggingCallback]; + QUnit[loggingCallback] = loggingCallbacks[loggingCallback]; + QUnit[loggingCallback](userCallback); + if (global.console && global.console.warn) { + global.console.warn('QUnit.' + + loggingCallback + + ' was replaced with a new value.\n' + + 'Please, check out the documentation on how to apply logging callbacks.\n' + + 'Reference: http://api.qunitjs.com/category/callbacks/'); + } + } + } + } + (function () { + if (!defined.document) { + return; + } + var onErrorFnPrev = window.onerror; + window.onerror = function (error, filePath, linerNr) { + var ret = false; + if (onErrorFnPrev) { + ret = onErrorFnPrev(error, filePath, linerNr); + } + if (ret !== true) { + if (QUnit.config.current) { + if (QUnit.config.current.ignoreGlobalErrors) { + return true; + } + QUnit.pushFailure(error, filePath + ':' + linerNr); + } + else { + QUnit.test('global failure', extend(function () { + QUnit.pushFailure(error, filePath + ':' + linerNr); + }, { validTest: true })); + } + return false; + } + return ret; + }; + })(); + QUnit.urlParams = urlParams; + QUnit.isLocal = !(defined.document && window.location.protocol !== 'file:'); + QUnit.version = '1.19.0'; + extend(QUnit, { + module: function (name, testEnvironment) { + var currentModule = { + name: name, + testEnvironment: testEnvironment, + tests: [], + }; + if (testEnvironment && testEnvironment.setup) { + testEnvironment.beforeEach = testEnvironment.setup; + delete testEnvironment.setup; + } + if (testEnvironment && testEnvironment.teardown) { + testEnvironment.afterEach = testEnvironment.teardown; + delete testEnvironment.teardown; + } + config.modules.push(currentModule); + config.currentModule = currentModule; + }, + asyncTest: asyncTest, + test: test, + skip: skip, + start: function (count) { + var globalStartAlreadyCalled = globalStartCalled; + if (!config.current) { + globalStartCalled = true; + if (runStarted) { + throw new Error('Called start() outside of a test context while already started'); + } + else if (globalStartAlreadyCalled || count > 1) { + throw new Error('Called start() outside of a test context too many times'); + } + else if (config.autostart) { + throw new Error('Called start() outside of a test context when ' + 'QUnit.config.autostart was true'); + } + else if (!config.pageLoaded) { + config.autostart = true; + return; + } + } + else { + config.current.semaphore -= count || 1; + if (config.current.semaphore > 0) { + return; + } + if (config.current.semaphore < 0) { + config.current.semaphore = 0; + QUnit.pushFailure("Called start() while already started (test's semaphore was 0 already)", sourceFromStacktrace(2)); + return; + } + } + resumeProcessing(); + }, + stop: function (count) { + if (!config.current) { + throw new Error('Called stop() outside of a test context'); + } + config.current.semaphore += count || 1; + pauseProcessing(); + }, + config: config, + is: is, + objectType: objectType, + extend: extend, + load: function () { + config.pageLoaded = true; + extend(config, { + stats: { all: 0, bad: 0 }, + moduleStats: { all: 0, bad: 0 }, + started: 0, + updateRate: 1000, + autostart: true, + filter: '', + }, true); + config.blocking = false; + if (config.autostart) { + resumeProcessing(); + } + }, + stack: function (offset) { + offset = (offset || 0) + 2; + return sourceFromStacktrace(offset); + }, + }); + registerLoggingCallbacks(QUnit); + function begin() { + var i, l, modulesLog = []; + if (!config.started) { + config.started = now(); + verifyLoggingCallbacks(); + if (config.modules[0].name === '' && config.modules[0].tests.length === 0) { + config.modules.shift(); + } + for (i = 0, l = config.modules.length; i < l; i++) { + modulesLog.push({ + name: config.modules[i].name, + tests: config.modules[i].tests, + }); + } + runLoggingCallbacks('begin', { + totalTests: Test.count, + modules: modulesLog, + }); + } + config.blocking = false; + process(true); + } + function process(last) { + function next() { + process(last); + } + var start = now(); + config.depth = (config.depth || 0) + 1; + while (config.queue.length && !config.blocking) { + if (!defined.setTimeout || config.updateRate <= 0 || now() - start < config.updateRate) { + if (config.current) { + config.current.usedAsync = false; + } + config.queue.shift()(); + } + else { + setTimeout(next, 13); + break; + } + } + config.depth--; + if (last && !config.blocking && !config.queue.length && config.depth === 0) { + done(); + } + } + function pauseProcessing() { + config.blocking = true; + if (config.testTimeout && defined.setTimeout) { + clearTimeout(config.timeout); + config.timeout = setTimeout(function () { + if (config.current) { + config.current.semaphore = 0; + QUnit.pushFailure('Test timed out', sourceFromStacktrace(2)); + } + else { + throw new Error('Test timed out'); + } + resumeProcessing(); + }, config.testTimeout); + } + } + function resumeProcessing() { + runStarted = true; + if (defined.setTimeout) { + setTimeout(function () { + if (config.current && config.current.semaphore > 0) { + return; + } + if (config.timeout) { + clearTimeout(config.timeout); + } + begin(); + }, 13); + } + else { + begin(); + } + } + function done() { + var runtime, passed; + config.autorun = true; + if (config.previousModule) { + runLoggingCallbacks('moduleDone', { + name: config.previousModule.name, + tests: config.previousModule.tests, + failed: config.moduleStats.bad, + passed: config.moduleStats.all - config.moduleStats.bad, + total: config.moduleStats.all, + runtime: now() - config.moduleStats.started, + }); + } + delete config.previousModule; + runtime = now() - config.started; + passed = config.stats.all - config.stats.bad; + runLoggingCallbacks('done', { + failed: config.stats.bad, + passed: passed, + total: config.stats.all, + runtime: runtime, + }); + } + function Test(settings) { + var i, l; + ++Test.count; + extend(this, settings); + this.assertions = []; + this.semaphore = 0; + this.usedAsync = false; + this.module = config.currentModule; + this.stack = sourceFromStacktrace(3); + for (i = 0, l = this.module.tests; i < l.length; i++) { + if (this.module.tests[i].name === this.testName) { + this.testName += ' '; + } + } + this.testId = generateHash(this.module.name, this.testName); + this.module.tests.push({ + name: this.testName, + testId: this.testId, + }); + if (settings.skip) { + this.callback = function () { }; + this.async = false; + this.expected = 0; + } + else { + this.assert = new Assert(this); + } + } + Test.count = 0; + Test.prototype = { + before: function () { + if (this.module !== config.previousModule || + !hasOwn.call(config, 'previousModule')) { + if (hasOwn.call(config, 'previousModule')) { + runLoggingCallbacks('moduleDone', { + name: config.previousModule.name, + tests: config.previousModule.tests, + failed: config.moduleStats.bad, + passed: config.moduleStats.all - config.moduleStats.bad, + total: config.moduleStats.all, + runtime: now() - config.moduleStats.started, + }); + } + config.previousModule = this.module; + config.moduleStats = { all: 0, bad: 0, started: now() }; + runLoggingCallbacks('moduleStart', { + name: this.module.name, + tests: this.module.tests, + }); + } + config.current = this; + if (this.module.testEnvironment) { + delete this.module.testEnvironment.beforeEach; + delete this.module.testEnvironment.afterEach; + } + this.testEnvironment = extend({}, this.module.testEnvironment); + this.started = now(); + runLoggingCallbacks('testStart', { + name: this.testName, + module: this.module.name, + testId: this.testId, + }); + if (!config.pollution) { + saveGlobal(); + } + }, + run: function () { + var promise; + config.current = this; + if (this.async) { + QUnit.stop(); + } + this.callbackStarted = now(); + if (config.notrycatch) { + promise = this.callback.call(this.testEnvironment, this.assert); + this.resolvePromise(promise); + return; + } + try { + promise = this.callback.call(this.testEnvironment, this.assert); + this.resolvePromise(promise); + } + catch (e) { + this.pushFailure('Died on test #' + (this.assertions.length + 1) + ' ' + this.stack + ': ' + (e.message || e), extractStacktrace(e, 0)); + saveGlobal(); + if (config.blocking) { + QUnit.start(); + } + } + }, + after: function () { + checkPollution(); + }, + queueHook: function (hook, hookName) { + var promise, test = this; + return function runHook() { + config.current = test; + if (config.notrycatch) { + promise = hook.call(test.testEnvironment, test.assert); + test.resolvePromise(promise, hookName); + return; + } + try { + promise = hook.call(test.testEnvironment, test.assert); + test.resolvePromise(promise, hookName); + } + catch (error) { + test.pushFailure(hookName + ' failed on ' + test.testName + ': ' + (error.message || error), extractStacktrace(error, 0)); + } + }; + }, + hooks: function (handler) { + var hooks = []; + if (this.skip) { + return hooks; + } + if (this.module.testEnvironment && QUnit.objectType(this.module.testEnvironment[handler]) === 'function') { + hooks.push(this.queueHook(this.module.testEnvironment[handler], handler)); + } + return hooks; + }, + finish: function () { + config.current = this; + if (config.requireExpects && this.expected === null) { + this.pushFailure('Expected number of assertions to be defined, but expect() was ' + 'not called.', this.stack); + } + else if (this.expected !== null && this.expected !== this.assertions.length) { + this.pushFailure('Expected ' + this.expected + ' assertions, but ' + this.assertions.length + ' were run', this.stack); + } + else if (this.expected === null && !this.assertions.length) { + this.pushFailure('Expected at least one assertion, but none were run - call ' + 'expect(0) to accept zero assertions.', this.stack); + } + var i, bad = 0; + this.runtime = now() - this.started; + config.stats.all += this.assertions.length; + config.moduleStats.all += this.assertions.length; + for (i = 0; i < this.assertions.length; i++) { + if (!this.assertions[i].result) { + bad++; + config.stats.bad++; + config.moduleStats.bad++; + } + } + runLoggingCallbacks('testDone', { + name: this.testName, + module: this.module.name, + skipped: !!this.skip, + failed: bad, + passed: this.assertions.length - bad, + total: this.assertions.length, + runtime: this.runtime, + assertions: this.assertions, + testId: this.testId, + source: this.stack, + duration: this.runtime, + }); + QUnit.reset(); + config.current = undefined; + }, + queue: function () { + var bad, test = this; + if (!this.valid()) { + return; + } + function run() { + synchronize([ + function () { + test.before(); + }, + test.hooks('beforeEach'), + function () { + test.run(); + }, + test.hooks('afterEach').reverse(), + function () { + test.after(); + }, + function () { + test.finish(); + }, + ]); + } + bad = + QUnit.config.reorder && + defined.sessionStorage && + +sessionStorage.getItem('qunit-test-' + this.module.name + '-' + this.testName); + if (bad) { + run(); + } + else { + synchronize(run, true); + } + }, + push: function (result, actual, expected, message, negative) { + var source, details = { + module: this.module.name, + name: this.testName, + result: result, + message: message, + actual: actual, + expected: expected, + testId: this.testId, + negative: negative || false, + runtime: now() - this.started, + }; + if (!result) { + source = sourceFromStacktrace(); + if (source) { + details.source = source; + } + } + runLoggingCallbacks('log', details); + this.assertions.push({ + result: !!result, + message: message, + }); + }, + pushFailure: function (message, source, actual) { + if (!(this instanceof Test)) { + throw new Error('pushFailure() assertion outside test context, was ' + sourceFromStacktrace(2)); + } + var details = { + module: this.module.name, + name: this.testName, + result: false, + message: message || 'error', + actual: actual || null, + testId: this.testId, + runtime: now() - this.started, + }; + if (source) { + details.source = source; + } + runLoggingCallbacks('log', details); + this.assertions.push({ + result: false, + message: message, + }); + }, + resolvePromise: function (promise, phase) { + var then, message, test = this; + if (promise != null) { + then = promise.then; + if (QUnit.objectType(then) === 'function') { + QUnit.stop(); + then.call(promise, function () { + QUnit.start(); + }, function (error) { + message = + 'Promise rejected ' + + (!phase ? 'during' : phase.replace(/Each$/, '')) + + ' ' + + test.testName + + ': ' + + (error.message || error); + test.pushFailure(message, extractStacktrace(error, 0)); + saveGlobal(); + QUnit.start(); + }); + } + } + }, + valid: function () { + var include, filter = config.filter && config.filter.toLowerCase(), module = QUnit.urlParams.module && QUnit.urlParams.module.toLowerCase(), fullName = (this.module.name + ': ' + this.testName).toLowerCase(); + if (this.callback && this.callback.validTest) { + return true; + } + if (config.testId.length > 0 && inArray(this.testId, config.testId) < 0) { + return false; + } + if (module && (!this.module.name || this.module.name.toLowerCase() !== module)) { + return false; + } + if (!filter) { + return true; + } + include = filter.charAt(0) !== '!'; + if (!include) { + filter = filter.slice(1); + } + if (fullName.indexOf(filter) !== -1) { + return include; + } + return !include; + }, + }; + QUnit.reset = function () { + if (!defined.document) { + return; + } + var fixture = defined.document && document.getElementById && document.getElementById('qunit-fixture'); + if (fixture) { + fixture.innerHTML = config.fixture; + } + }; + QUnit.pushFailure = function () { + if (!QUnit.config.current) { + throw new Error('pushFailure() assertion outside test context, in ' + sourceFromStacktrace(2)); + } + var currentTest = QUnit.config.current; + return currentTest.pushFailure.apply(currentTest, arguments); + }; + function generateHash(module, testName) { + var hex, i = 0, hash = 0, str = module + '\x1C' + testName, len = str.length; + for (; i < len; i++) { + hash = (hash << 5) - hash + str.charCodeAt(i); + hash |= 0; + } + hex = (0x100000000 + hash).toString(16); + if (hex.length < 8) { + hex = '0000000' + hex; + } + return hex.slice(-8); + } + function synchronize(callback, last) { + if (QUnit.objectType(callback) === 'array') { + while (callback.length) { + synchronize(callback.shift()); + } + return; + } + config.queue.push(callback); + if (config.autorun && !config.blocking) { + process(last); + } + } + function saveGlobal() { + config.pollution = []; + if (config.noglobals) { + for (var key in global) { + if (hasOwn.call(global, key)) { + if (/^qunit-test-output/.test(key)) { + continue; + } + config.pollution.push(key); + } + } + } + } + function checkPollution() { + var newGlobals, deletedGlobals, old = config.pollution; + saveGlobal(); + newGlobals = diff(config.pollution, old); + if (newGlobals.length > 0) { + QUnit.pushFailure('Introduced global variable(s): ' + newGlobals.join(', ')); + } + deletedGlobals = diff(old, config.pollution); + if (deletedGlobals.length > 0) { + QUnit.pushFailure('Deleted global variable(s): ' + deletedGlobals.join(', ')); + } + } + function asyncTest(testName, expected, callback) { + if (arguments.length === 2) { + callback = expected; + expected = null; + } + QUnit.test(testName, expected, callback, true); + } + function test(testName, expected, callback, async) { + var newTest; + if (arguments.length === 2) { + callback = expected; + expected = null; + } + newTest = new Test({ + testName: testName, + expected: expected, + async: async, + callback: callback, + }); + newTest.queue(); + } + function skip(testName) { + var test = new Test({ + testName: testName, + skip: true, + }); + test.queue(); + } + function Assert(testContext) { + this.test = testContext; + } + QUnit.assert = Assert.prototype = { + expect: function (asserts) { + if (arguments.length === 1) { + this.test.expected = asserts; + } + else { + return this.test.expected; + } + }, + async: function () { + var test = this.test, popped = false; + test.semaphore += 1; + test.usedAsync = true; + pauseProcessing(); + return function done() { + if (!popped) { + test.semaphore -= 1; + popped = true; + resumeProcessing(); + } + else { + test.pushFailure('Called the callback returned from `assert.async` more than once', sourceFromStacktrace(2)); + } + }; + }, + push: function () { + var assert = this, currentTest = (assert instanceof Assert && assert.test) || QUnit.config.current; + if (!currentTest) { + throw new Error('assertion outside test context, in ' + sourceFromStacktrace(2)); + } + if (currentTest.usedAsync === true && currentTest.semaphore === 0) { + currentTest.pushFailure('Assertion after the final `assert.async` was resolved', sourceFromStacktrace(2)); + } + if (!(assert instanceof Assert)) { + assert = currentTest.assert; + } + return assert.test.push.apply(assert.test, arguments); + }, + ok: function (result, message) { + message = + message || (result ? 'okay' : 'failed, expected argument to be truthy, was: ' + QUnit.dump.parse(result)); + this.push(!!result, result, true, message); + }, + notOk: function (result, message) { + message = + message || (!result ? 'okay' : 'failed, expected argument to be falsy, was: ' + QUnit.dump.parse(result)); + this.push(!result, result, false, message, true); + }, + equal: function (actual, expected, message) { + this.push(expected == actual, actual, expected, message); + }, + notEqual: function (actual, expected, message) { + this.push(expected != actual, actual, expected, message, true); + }, + propEqual: function (actual, expected, message) { + actual = objectValues(actual); + expected = objectValues(expected); + this.push(QUnit.equiv(actual, expected), actual, expected, message); + }, + notPropEqual: function (actual, expected, message) { + actual = objectValues(actual); + expected = objectValues(expected); + this.push(!QUnit.equiv(actual, expected), actual, expected, message, true); + }, + deepEqual: function (actual, expected, message) { + this.push(QUnit.equiv(actual, expected), actual, expected, message); + }, + notDeepEqual: function (actual, expected, message) { + this.push(!QUnit.equiv(actual, expected), actual, expected, message, true); + }, + strictEqual: function (actual, expected, message) { + this.push(expected === actual, actual, expected, message); + }, + notStrictEqual: function (actual, expected, message) { + this.push(expected !== actual, actual, expected, message, true); + }, + throws: function (block, expected, message) { + var actual, expectedType, expectedOutput = expected, ok = false, currentTest = (this instanceof Assert && this.test) || QUnit.config.current; + if (message == null && typeof expected === 'string') { + message = expected; + expected = null; + } + currentTest.ignoreGlobalErrors = true; + try { + block.call(currentTest.testEnvironment); + } + catch (e) { + actual = e; + } + currentTest.ignoreGlobalErrors = false; + if (actual) { + expectedType = QUnit.objectType(expected); + if (!expected) { + ok = true; + expectedOutput = null; + } + else if (expectedType === 'regexp') { + ok = expected.test(errorString(actual)); + } + else if (expectedType === 'string') { + ok = expected === errorString(actual); + } + else if (expectedType === 'function' && actual instanceof expected) { + ok = true; + } + else if (expectedType === 'object') { + ok = + actual instanceof expected.constructor && + actual.name === expected.name && + actual.message === expected.message; + } + else if (expectedType === 'function' && expected.call({}, actual) === true) { + expectedOutput = null; + ok = true; + } + } + currentTest.assert.push(ok, actual, expectedOutput, message); + }, + }; + (function () { + Assert.prototype.raises = Assert.prototype['throws']; + })(); + function errorString(error) { + var name, message, resultErrorString = error.toString(); + if (resultErrorString.substring(0, 7) === '[object') { + name = error.name ? error.name.toString() : 'Error'; + message = error.message ? error.message.toString() : ''; + if (name && message) { + return name + ': ' + message; + } + else if (name) { + return name; + } + else if (message) { + return message; + } + else { + return 'Error'; + } + } + else { + return resultErrorString; + } + } + QUnit.equiv = (function () { + function bindCallbacks(o, callbacks, args) { + var prop = QUnit.objectType(o); + if (prop) { + if (QUnit.objectType(callbacks[prop]) === 'function') { + return callbacks[prop].apply(callbacks, args); + } + else { + return callbacks[prop]; + } + } + } + var innerEquiv, callers = [], parents = [], parentsB = [], getProto = Object.getPrototypeOf || + function (obj) { + return obj.__proto__; + }, callbacks = (function () { + function useStrictEquality(b, a) { + if (b instanceof a.constructor || a instanceof b.constructor) { + return a == b; + } + else { + return a === b; + } + } + return { + string: useStrictEquality, + boolean: useStrictEquality, + number: useStrictEquality, + null: useStrictEquality, + undefined: useStrictEquality, + nan: function (b) { + return isNaN(b); + }, + date: function (b, a) { + return QUnit.objectType(b) === 'date' && a.valueOf() === b.valueOf(); + }, + regexp: function (b, a) { + return (QUnit.objectType(b) === 'regexp' && + a.source === b.source && + a.global === b.global && + a.ignoreCase === b.ignoreCase && + a.multiline === b.multiline && + a.sticky === b.sticky); + }, + function: function () { + var caller = callers[callers.length - 1]; + return caller !== Object && typeof caller !== 'undefined'; + }, + array: function (b, a) { + var i, j, len, loop, aCircular, bCircular; + if (QUnit.objectType(b) !== 'array') { + return false; + } + len = a.length; + if (len !== b.length) { + return false; + } + parents.push(a); + parentsB.push(b); + for (i = 0; i < len; i++) { + loop = false; + for (j = 0; j < parents.length; j++) { + aCircular = parents[j] === a[i]; + bCircular = parentsB[j] === b[i]; + if (aCircular || bCircular) { + if (a[i] === b[i] || (aCircular && bCircular)) { + loop = true; + } + else { + parents.pop(); + parentsB.pop(); + return false; + } + } + } + if (!loop && !innerEquiv(a[i], b[i])) { + parents.pop(); + parentsB.pop(); + return false; + } + } + parents.pop(); + parentsB.pop(); + return true; + }, + set: function (b, a) { + var aArray, bArray; + if (QUnit.objectType(b) !== 'set') { + return false; + } + aArray = []; + a.forEach(function (v) { + aArray.push(v); + }); + bArray = []; + b.forEach(function (v) { + bArray.push(v); + }); + return innerEquiv(bArray, aArray); + }, + map: function (b, a) { + var aArray, bArray; + if (QUnit.objectType(b) !== 'map') { + return false; + } + aArray = []; + a.forEach(function (v, k) { + aArray.push([k, v]); + }); + bArray = []; + b.forEach(function (v, k) { + bArray.push([k, v]); + }); + return innerEquiv(bArray, aArray); + }, + object: function (b, a) { + var i, j, loop, aCircular, bCircular, eq = true, aProperties = [], bProperties = []; + if (a.constructor !== b.constructor) { + if (!((getProto(a) === null && getProto(b) === Object.prototype) || + (getProto(b) === null && getProto(a) === Object.prototype))) { + return false; + } + } + callers.push(a.constructor); + parents.push(a); + parentsB.push(b); + for (i in a) { + loop = false; + for (j = 0; j < parents.length; j++) { + aCircular = parents[j] === a[i]; + bCircular = parentsB[j] === b[i]; + if (aCircular || bCircular) { + if (a[i] === b[i] || (aCircular && bCircular)) { + loop = true; + } + else { + eq = false; + break; + } + } + } + aProperties.push(i); + if (!loop && !innerEquiv(a[i], b[i])) { + eq = false; + break; + } + } + parents.pop(); + parentsB.pop(); + callers.pop(); + for (i in b) { + bProperties.push(i); + } + return eq && innerEquiv(aProperties.sort(), bProperties.sort()); + }, + }; + })(); + innerEquiv = function () { + var args = [].slice.apply(arguments); + if (args.length < 2) { + return true; + } + return ((function (a, b) { + if (a === b) { + return true; + } + else if (a === null || + b === null || + typeof a === 'undefined' || + typeof b === 'undefined' || + QUnit.objectType(a) !== QUnit.objectType(b)) { + return false; + } + else { + return bindCallbacks(a, callbacks, [b, a]); + } + })(args[0], args[1]) && innerEquiv.apply(this, args.splice(1, args.length - 1))); + }; + return innerEquiv; + })(); + QUnit.dump = (function () { + function quote(str) { + return '"' + str.toString().replace(/\\/g, '\\\\').replace(/"/g, '\\"') + '"'; + } + function literal(o) { + return o + ''; + } + function join(pre, arr, post) { + var s = dump.separator(), base = dump.indent(), inner = dump.indent(1); + if (arr.join) { + arr = arr.join(',' + s + inner); + } + if (!arr) { + return pre + post; + } + return [pre, inner + arr, base + post].join(s); + } + function array(arr, stack) { + var i = arr.length, ret = new Array(i); + if (dump.maxDepth && dump.depth > dump.maxDepth) { + return '[object Array]'; + } + this.up(); + while (i--) { + ret[i] = this.parse(arr[i], undefined, stack); + } + this.down(); + return join('[', ret, ']'); + } + var reName = /^function (\w+)/, dump = { + parse: function (obj, objType, stack) { + stack = stack || []; + var res, parser, parserType, inStack = inArray(obj, stack); + if (inStack !== -1) { + return 'recursion(' + (inStack - stack.length) + ')'; + } + objType = objType || this.typeOf(obj); + parser = this.parsers[objType]; + parserType = typeof parser; + if (parserType === 'function') { + stack.push(obj); + res = parser.call(this, obj, stack); + stack.pop(); + return res; + } + return parserType === 'string' ? parser : this.parsers.error; + }, + typeOf: function (obj) { + var type; + if (obj === null) { + type = 'null'; + } + else if (typeof obj === 'undefined') { + type = 'undefined'; + } + else if (QUnit.is('regexp', obj)) { + type = 'regexp'; + } + else if (QUnit.is('date', obj)) { + type = 'date'; + } + else if (QUnit.is('function', obj)) { + type = 'function'; + } + else if (obj.setInterval !== undefined && obj.document !== undefined && obj.nodeType === undefined) { + type = 'window'; + } + else if (obj.nodeType === 9) { + type = 'document'; + } + else if (obj.nodeType) { + type = 'node'; + } + else if (toString.call(obj) === '[object Array]' || + (typeof obj.length === 'number' && + obj.item !== undefined && + (obj.length ? obj.item(0) === obj[0] : obj.item(0) === null && obj[0] === undefined))) { + type = 'array'; + } + else if (obj.constructor === Error.prototype.constructor) { + type = 'error'; + } + else { + type = typeof obj; + } + return type; + }, + separator: function () { + return this.multiline ? (this.HTML ? '
' : '\n') : this.HTML ? ' ' : ' '; + }, + indent: function (extra) { + if (!this.multiline) { + return ''; + } + var chr = this.indentChar; + if (this.HTML) { + chr = chr.replace(/\t/g, ' ').replace(/ /g, ' '); + } + return new Array(this.depth + (extra || 0)).join(chr); + }, + up: function (a) { + this.depth += a || 1; + }, + down: function (a) { + this.depth -= a || 1; + }, + setParser: function (name, parser) { + this.parsers[name] = parser; + }, + quote: quote, + literal: literal, + join: join, + depth: 1, + maxDepth: QUnit.config.maxDepth, + parsers: { + window: '[Window]', + document: '[Document]', + error: function (error) { + return 'Error("' + error.message + '")'; + }, + unknown: '[Unknown]', + null: 'null', + undefined: 'undefined', + function: function (fn) { + var ret = 'function', name = 'name' in fn ? fn.name : (reName.exec(fn) || [])[1]; + if (name) { + ret += ' ' + name; + } + ret += '( '; + ret = [ret, dump.parse(fn, 'functionArgs'), '){'].join(''); + return join(ret, dump.parse(fn, 'functionCode'), '}'); + }, + array: array, + nodelist: array, + arguments: array, + object: function (map, stack) { + var keys, key, val, i, nonEnumerableProperties, ret = []; + if (dump.maxDepth && dump.depth > dump.maxDepth) { + return '[object Object]'; + } + dump.up(); + keys = []; + for (key in map) { + keys.push(key); + } + nonEnumerableProperties = ['message', 'name']; + for (i in nonEnumerableProperties) { + key = nonEnumerableProperties[i]; + if (key in map && inArray(key, keys) < 0) { + keys.push(key); + } + } + keys.sort(); + for (i = 0; i < keys.length; i++) { + key = keys[i]; + val = map[key]; + ret.push(dump.parse(key, 'key') + ': ' + dump.parse(val, undefined, stack)); + } + dump.down(); + return join('{', ret, '}'); + }, + node: function (node) { + var len, i, val, open = dump.HTML ? '<' : '<', close = dump.HTML ? '>' : '>', tag = node.nodeName.toLowerCase(), ret = open + tag, attrs = node.attributes; + if (attrs) { + for (i = 0, len = attrs.length; i < len; i++) { + val = attrs[i].nodeValue; + if (val && val !== 'inherit') { + ret += ' ' + attrs[i].nodeName + '=' + dump.parse(val, 'attribute'); + } + } + } + ret += close; + if (node.nodeType === 3 || node.nodeType === 4) { + ret += node.nodeValue; + } + return ret + open + '/' + tag + close; + }, + functionArgs: function (fn) { + var args, l = fn.length; + if (!l) { + return ''; + } + args = new Array(l); + while (l--) { + args[l] = String.fromCharCode(97 + l); + } + return ' ' + args.join(', ') + ' '; + }, + key: quote, + functionCode: '[code]', + attribute: quote, + string: quote, + date: quote, + regexp: literal, + number: literal, + boolean: literal, + }, + HTML: false, + indentChar: ' ', + multiline: true, + }; + return dump; + })(); + QUnit.jsDump = QUnit.dump; + if (defined.document) { + (function () { + var i, assertions = Assert.prototype; + function applyCurrent(current) { + return function () { + var assert = new Assert(QUnit.config.current); + current.apply(assert, arguments); + }; + } + for (i in assertions) { + QUnit[i] = applyCurrent(assertions[i]); + } + })(); + (function () { + var i, l, keys = [ + 'test', + 'module', + 'expect', + 'asyncTest', + 'start', + 'stop', + 'ok', + 'notOk', + 'equal', + 'notEqual', + 'propEqual', + 'notPropEqual', + 'deepEqual', + 'notDeepEqual', + 'strictEqual', + 'notStrictEqual', + 'throws', + ]; + for (i = 0, l = keys.length; i < l; i++) { + window[keys[i]] = QUnit[keys[i]]; + } + })(); + window.QUnit = QUnit; + } + if (typeof module !== 'undefined' && module && module.exports) { + module.exports = QUnit; + module.exports.QUnit = QUnit; + } + if (typeof exports !== 'undefined' && exports) { + exports.QUnit = QUnit; + } + if (typeof define === 'function' && define.amd) { + define(function () { + return QUnit; + }); + QUnit.config.autostart = false; + } + QUnit.diff = (function () { + function DiffMatchPatch() { } + var DIFF_DELETE = -1, DIFF_INSERT = 1, DIFF_EQUAL = 0; + DiffMatchPatch.prototype.DiffMain = function (text1, text2, optChecklines) { + var deadline, checklines, commonlength, commonprefix, commonsuffix, diffs; + deadline = new Date().getTime() + 1000; + if (text1 === null || text2 === null) { + throw new Error('Null input. (DiffMain)'); + } + if (text1 === text2) { + if (text1) { + return [[DIFF_EQUAL, text1]]; + } + return []; + } + if (typeof optChecklines === 'undefined') { + optChecklines = true; + } + checklines = optChecklines; + commonlength = this.diffCommonPrefix(text1, text2); + commonprefix = text1.substring(0, commonlength); + text1 = text1.substring(commonlength); + text2 = text2.substring(commonlength); + commonlength = this.diffCommonSuffix(text1, text2); + commonsuffix = text1.substring(text1.length - commonlength); + text1 = text1.substring(0, text1.length - commonlength); + text2 = text2.substring(0, text2.length - commonlength); + diffs = this.diffCompute(text1, text2, checklines, deadline); + if (commonprefix) { + diffs.unshift([DIFF_EQUAL, commonprefix]); + } + if (commonsuffix) { + diffs.push([DIFF_EQUAL, commonsuffix]); + } + this.diffCleanupMerge(diffs); + return diffs; + }; + DiffMatchPatch.prototype.diffCleanupEfficiency = function (diffs) { + var changes, equalities, equalitiesLength, lastequality, pointer, preIns, preDel, postIns, postDel; + changes = false; + equalities = []; + equalitiesLength = 0; + lastequality = null; + pointer = 0; + preIns = false; + preDel = false; + postIns = false; + postDel = false; + while (pointer < diffs.length) { + if (diffs[pointer][0] === DIFF_EQUAL) { + if (diffs[pointer][1].length < 4 && (postIns || postDel)) { + equalities[equalitiesLength++] = pointer; + preIns = postIns; + preDel = postDel; + lastequality = diffs[pointer][1]; + } + else { + equalitiesLength = 0; + lastequality = null; + } + postIns = postDel = false; + } + else { + if (diffs[pointer][0] === DIFF_DELETE) { + postDel = true; + } + else { + postIns = true; + } + if (lastequality && + ((preIns && preDel && postIns && postDel) || + (lastequality.length < 2 && preIns + preDel + postIns + postDel === 3))) { + diffs.splice(equalities[equalitiesLength - 1], 0, [DIFF_DELETE, lastequality]); + diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT; + equalitiesLength--; + lastequality = null; + if (preIns && preDel) { + postIns = postDel = true; + equalitiesLength = 0; + } + else { + equalitiesLength--; + pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1; + postIns = postDel = false; + } + changes = true; + } + } + pointer++; + } + if (changes) { + this.diffCleanupMerge(diffs); + } + }; + DiffMatchPatch.prototype.diffPrettyHtml = function (diffs) { + var op, data, x, html = []; + for (x = 0; x < diffs.length; x++) { + op = diffs[x][0]; + data = diffs[x][1]; + switch (op) { + case DIFF_INSERT: + html[x] = '' + data + ''; + break; + case DIFF_DELETE: + html[x] = '' + data + ''; + break; + case DIFF_EQUAL: + html[x] = '' + data + ''; + break; + } + } + return html.join(''); + }; + DiffMatchPatch.prototype.diffCommonPrefix = function (text1, text2) { + var pointermid, pointermax, pointermin, pointerstart; + if (!text1 || !text2 || text1.charAt(0) !== text2.charAt(0)) { + return 0; + } + pointermin = 0; + pointermax = Math.min(text1.length, text2.length); + pointermid = pointermax; + pointerstart = 0; + while (pointermin < pointermid) { + if (text1.substring(pointerstart, pointermid) === text2.substring(pointerstart, pointermid)) { + pointermin = pointermid; + pointerstart = pointermin; + } + else { + pointermax = pointermid; + } + pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); + } + return pointermid; + }; + DiffMatchPatch.prototype.diffCommonSuffix = function (text1, text2) { + var pointermid, pointermax, pointermin, pointerend; + if (!text1 || !text2 || text1.charAt(text1.length - 1) !== text2.charAt(text2.length - 1)) { + return 0; + } + pointermin = 0; + pointermax = Math.min(text1.length, text2.length); + pointermid = pointermax; + pointerend = 0; + while (pointermin < pointermid) { + if (text1.substring(text1.length - pointermid, text1.length - pointerend) === + text2.substring(text2.length - pointermid, text2.length - pointerend)) { + pointermin = pointermid; + pointerend = pointermin; + } + else { + pointermax = pointermid; + } + pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); + } + return pointermid; + }; + DiffMatchPatch.prototype.diffCompute = function (text1, text2, checklines, deadline) { + var diffs, longtext, shorttext, i, hm, text1A, text2A, text1B, text2B, midCommon, diffsA, diffsB; + if (!text1) { + return [[DIFF_INSERT, text2]]; + } + if (!text2) { + return [[DIFF_DELETE, text1]]; + } + longtext = text1.length > text2.length ? text1 : text2; + shorttext = text1.length > text2.length ? text2 : text1; + i = longtext.indexOf(shorttext); + if (i !== -1) { + diffs = [ + [DIFF_INSERT, longtext.substring(0, i)], + [DIFF_EQUAL, shorttext], + [DIFF_INSERT, longtext.substring(i + shorttext.length)], + ]; + if (text1.length > text2.length) { + diffs[0][0] = diffs[2][0] = DIFF_DELETE; + } + return diffs; + } + if (shorttext.length === 1) { + return [ + [DIFF_DELETE, text1], + [DIFF_INSERT, text2], + ]; + } + hm = this.diffHalfMatch(text1, text2); + if (hm) { + text1A = hm[0]; + text1B = hm[1]; + text2A = hm[2]; + text2B = hm[3]; + midCommon = hm[4]; + diffsA = this.DiffMain(text1A, text2A, checklines, deadline); + diffsB = this.DiffMain(text1B, text2B, checklines, deadline); + return diffsA.concat([[DIFF_EQUAL, midCommon]], diffsB); + } + if (checklines && text1.length > 100 && text2.length > 100) { + return this.diffLineMode(text1, text2, deadline); + } + return this.diffBisect(text1, text2, deadline); + }; + DiffMatchPatch.prototype.diffHalfMatch = function (text1, text2) { + var longtext, shorttext, dmp, text1A, text2B, text2A, text1B, midCommon, hm1, hm2, hm; + longtext = text1.length > text2.length ? text1 : text2; + shorttext = text1.length > text2.length ? text2 : text1; + if (longtext.length < 4 || shorttext.length * 2 < longtext.length) { + return null; + } + dmp = this; + function diffHalfMatchI(longtext, shorttext, i) { + var seed, j, bestCommon, prefixLength, suffixLength, bestLongtextA, bestLongtextB, bestShorttextA, bestShorttextB; + seed = longtext.substring(i, i + Math.floor(longtext.length / 4)); + j = -1; + bestCommon = ''; + while ((j = shorttext.indexOf(seed, j + 1)) !== -1) { + prefixLength = dmp.diffCommonPrefix(longtext.substring(i), shorttext.substring(j)); + suffixLength = dmp.diffCommonSuffix(longtext.substring(0, i), shorttext.substring(0, j)); + if (bestCommon.length < suffixLength + prefixLength) { + bestCommon = shorttext.substring(j - suffixLength, j) + shorttext.substring(j, j + prefixLength); + bestLongtextA = longtext.substring(0, i - suffixLength); + bestLongtextB = longtext.substring(i + prefixLength); + bestShorttextA = shorttext.substring(0, j - suffixLength); + bestShorttextB = shorttext.substring(j + prefixLength); + } + } + if (bestCommon.length * 2 >= longtext.length) { + return [bestLongtextA, bestLongtextB, bestShorttextA, bestShorttextB, bestCommon]; + } + else { + return null; + } + } + hm1 = diffHalfMatchI(longtext, shorttext, Math.ceil(longtext.length / 4)); + hm2 = diffHalfMatchI(longtext, shorttext, Math.ceil(longtext.length / 2)); + if (!hm1 && !hm2) { + return null; + } + else if (!hm2) { + hm = hm1; + } + else if (!hm1) { + hm = hm2; + } + else { + hm = hm1[4].length > hm2[4].length ? hm1 : hm2; + } + text1A, text1B, text2A, text2B; + if (text1.length > text2.length) { + text1A = hm[0]; + text1B = hm[1]; + text2A = hm[2]; + text2B = hm[3]; + } + else { + text2A = hm[0]; + text2B = hm[1]; + text1A = hm[2]; + text1B = hm[3]; + } + midCommon = hm[4]; + return [text1A, text1B, text2A, text2B, midCommon]; + }; + DiffMatchPatch.prototype.diffLineMode = function (text1, text2, deadline) { + var a, diffs, linearray, pointer, countInsert, countDelete, textInsert, textDelete, j; + a = this.diffLinesToChars(text1, text2); + text1 = a.chars1; + text2 = a.chars2; + linearray = a.lineArray; + diffs = this.DiffMain(text1, text2, false, deadline); + this.diffCharsToLines(diffs, linearray); + this.diffCleanupSemantic(diffs); + diffs.push([DIFF_EQUAL, '']); + pointer = 0; + countDelete = 0; + countInsert = 0; + textDelete = ''; + textInsert = ''; + while (pointer < diffs.length) { + switch (diffs[pointer][0]) { + case DIFF_INSERT: + countInsert++; + textInsert += diffs[pointer][1]; + break; + case DIFF_DELETE: + countDelete++; + textDelete += diffs[pointer][1]; + break; + case DIFF_EQUAL: + if (countDelete >= 1 && countInsert >= 1) { + diffs.splice(pointer - countDelete - countInsert, countDelete + countInsert); + pointer = pointer - countDelete - countInsert; + a = this.DiffMain(textDelete, textInsert, false, deadline); + for (j = a.length - 1; j >= 0; j--) { + diffs.splice(pointer, 0, a[j]); + } + pointer = pointer + a.length; + } + countInsert = 0; + countDelete = 0; + textDelete = ''; + textInsert = ''; + break; + } + pointer++; + } + diffs.pop(); + return diffs; + }; + DiffMatchPatch.prototype.diffBisect = function (text1, text2, deadline) { + var text1Length, text2Length, maxD, vOffset, vLength, v1, v2, x, delta, front, k1start, k1end, k2start, k2end, k2Offset, k1Offset, x1, x2, y1, y2, d, k1, k2; + text1Length = text1.length; + text2Length = text2.length; + maxD = Math.ceil((text1Length + text2Length) / 2); + vOffset = maxD; + vLength = 2 * maxD; + v1 = new Array(vLength); + v2 = new Array(vLength); + for (x = 0; x < vLength; x++) { + v1[x] = -1; + v2[x] = -1; + } + v1[vOffset + 1] = 0; + v2[vOffset + 1] = 0; + delta = text1Length - text2Length; + front = delta % 2 !== 0; + k1start = 0; + k1end = 0; + k2start = 0; + k2end = 0; + for (d = 0; d < maxD; d++) { + if (new Date().getTime() > deadline) { + break; + } + for (k1 = -d + k1start; k1 <= d - k1end; k1 += 2) { + k1Offset = vOffset + k1; + if (k1 === -d || (k1 !== d && v1[k1Offset - 1] < v1[k1Offset + 1])) { + x1 = v1[k1Offset + 1]; + } + else { + x1 = v1[k1Offset - 1] + 1; + } + y1 = x1 - k1; + while (x1 < text1Length && y1 < text2Length && text1.charAt(x1) === text2.charAt(y1)) { + x1++; + y1++; + } + v1[k1Offset] = x1; + if (x1 > text1Length) { + k1end += 2; + } + else if (y1 > text2Length) { + k1start += 2; + } + else if (front) { + k2Offset = vOffset + delta - k1; + if (k2Offset >= 0 && k2Offset < vLength && v2[k2Offset] !== -1) { + x2 = text1Length - v2[k2Offset]; + if (x1 >= x2) { + return this.diffBisectSplit(text1, text2, x1, y1, deadline); + } + } + } + } + for (k2 = -d + k2start; k2 <= d - k2end; k2 += 2) { + k2Offset = vOffset + k2; + if (k2 === -d || (k2 !== d && v2[k2Offset - 1] < v2[k2Offset + 1])) { + x2 = v2[k2Offset + 1]; + } + else { + x2 = v2[k2Offset - 1] + 1; + } + y2 = x2 - k2; + while (x2 < text1Length && + y2 < text2Length && + text1.charAt(text1Length - x2 - 1) === text2.charAt(text2Length - y2 - 1)) { + x2++; + y2++; + } + v2[k2Offset] = x2; + if (x2 > text1Length) { + k2end += 2; + } + else if (y2 > text2Length) { + k2start += 2; + } + else if (!front) { + k1Offset = vOffset + delta - k2; + if (k1Offset >= 0 && k1Offset < vLength && v1[k1Offset] !== -1) { + x1 = v1[k1Offset]; + y1 = vOffset + x1 - k1Offset; + x2 = text1Length - x2; + if (x1 >= x2) { + return this.diffBisectSplit(text1, text2, x1, y1, deadline); + } + } + } + } + } + return [ + [DIFF_DELETE, text1], + [DIFF_INSERT, text2], + ]; + }; + DiffMatchPatch.prototype.diffBisectSplit = function (text1, text2, x, y, deadline) { + var text1a, text1b, text2a, text2b, diffs, diffsb; + text1a = text1.substring(0, x); + text2a = text2.substring(0, y); + text1b = text1.substring(x); + text2b = text2.substring(y); + diffs = this.DiffMain(text1a, text2a, false, deadline); + diffsb = this.DiffMain(text1b, text2b, false, deadline); + return diffs.concat(diffsb); + }; + DiffMatchPatch.prototype.diffCleanupSemantic = function (diffs) { + var changes, equalities, equalitiesLength, lastequality, pointer, lengthInsertions2, lengthDeletions2, lengthInsertions1, lengthDeletions1, deletion, insertion, overlapLength1, overlapLength2; + changes = false; + equalities = []; + equalitiesLength = 0; + lastequality = null; + pointer = 0; + lengthInsertions1 = 0; + lengthDeletions1 = 0; + lengthInsertions2 = 0; + lengthDeletions2 = 0; + while (pointer < diffs.length) { + if (diffs[pointer][0] === DIFF_EQUAL) { + equalities[equalitiesLength++] = pointer; + lengthInsertions1 = lengthInsertions2; + lengthDeletions1 = lengthDeletions2; + lengthInsertions2 = 0; + lengthDeletions2 = 0; + lastequality = diffs[pointer][1]; + } + else { + if (diffs[pointer][0] === DIFF_INSERT) { + lengthInsertions2 += diffs[pointer][1].length; + } + else { + lengthDeletions2 += diffs[pointer][1].length; + } + if (lastequality && + lastequality.length <= Math.max(lengthInsertions1, lengthDeletions1) && + lastequality.length <= Math.max(lengthInsertions2, lengthDeletions2)) { + diffs.splice(equalities[equalitiesLength - 1], 0, [DIFF_DELETE, lastequality]); + diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT; + equalitiesLength--; + equalitiesLength--; + pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1; + lengthInsertions1 = 0; + lengthDeletions1 = 0; + lengthInsertions2 = 0; + lengthDeletions2 = 0; + lastequality = null; + changes = true; + } + } + pointer++; + } + if (changes) { + this.diffCleanupMerge(diffs); + } + pointer = 1; + while (pointer < diffs.length) { + if (diffs[pointer - 1][0] === DIFF_DELETE && diffs[pointer][0] === DIFF_INSERT) { + deletion = diffs[pointer - 1][1]; + insertion = diffs[pointer][1]; + overlapLength1 = this.diffCommonOverlap(deletion, insertion); + overlapLength2 = this.diffCommonOverlap(insertion, deletion); + if (overlapLength1 >= overlapLength2) { + if (overlapLength1 >= deletion.length / 2 || overlapLength1 >= insertion.length / 2) { + diffs.splice(pointer, 0, [DIFF_EQUAL, insertion.substring(0, overlapLength1)]); + diffs[pointer - 1][1] = deletion.substring(0, deletion.length - overlapLength1); + diffs[pointer + 1][1] = insertion.substring(overlapLength1); + pointer++; + } + } + else { + if (overlapLength2 >= deletion.length / 2 || overlapLength2 >= insertion.length / 2) { + diffs.splice(pointer, 0, [DIFF_EQUAL, deletion.substring(0, overlapLength2)]); + diffs[pointer - 1][0] = DIFF_INSERT; + diffs[pointer - 1][1] = insertion.substring(0, insertion.length - overlapLength2); + diffs[pointer + 1][0] = DIFF_DELETE; + diffs[pointer + 1][1] = deletion.substring(overlapLength2); + pointer++; + } + } + pointer++; + } + pointer++; + } + }; + DiffMatchPatch.prototype.diffCommonOverlap = function (text1, text2) { + var text1Length, text2Length, textLength, best, length, pattern, found; + text1Length = text1.length; + text2Length = text2.length; + if (text1Length === 0 || text2Length === 0) { + return 0; + } + if (text1Length > text2Length) { + text1 = text1.substring(text1Length - text2Length); + } + else if (text1Length < text2Length) { + text2 = text2.substring(0, text1Length); + } + textLength = Math.min(text1Length, text2Length); + if (text1 === text2) { + return textLength; + } + best = 0; + length = 1; + while (true) { + pattern = text1.substring(textLength - length); + found = text2.indexOf(pattern); + if (found === -1) { + return best; + } + length += found; + if (found === 0 || text1.substring(textLength - length) === text2.substring(0, length)) { + best = length; + length++; + } + } + }; + DiffMatchPatch.prototype.diffLinesToChars = function (text1, text2) { + var lineArray, lineHash, chars1, chars2; + lineArray = []; + lineHash = {}; + lineArray[0] = ''; + function diffLinesToCharsMunge(text) { + var chars, lineStart, lineEnd, lineArrayLength, line; + chars = ''; + lineStart = 0; + lineEnd = -1; + lineArrayLength = lineArray.length; + while (lineEnd < text.length - 1) { + lineEnd = text.indexOf('\n', lineStart); + if (lineEnd === -1) { + lineEnd = text.length - 1; + } + line = text.substring(lineStart, lineEnd + 1); + lineStart = lineEnd + 1; + if (lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) : lineHash[line] !== undefined) { + chars += String.fromCharCode(lineHash[line]); + } + else { + chars += String.fromCharCode(lineArrayLength); + lineHash[line] = lineArrayLength; + lineArray[lineArrayLength++] = line; + } + } + return chars; + } + chars1 = diffLinesToCharsMunge(text1); + chars2 = diffLinesToCharsMunge(text2); + return { + chars1: chars1, + chars2: chars2, + lineArray: lineArray, + }; + }; + DiffMatchPatch.prototype.diffCharsToLines = function (diffs, lineArray) { + var x, chars, text, y; + for (x = 0; x < diffs.length; x++) { + chars = diffs[x][1]; + text = []; + for (y = 0; y < chars.length; y++) { + text[y] = lineArray[chars.charCodeAt(y)]; + } + diffs[x][1] = text.join(''); + } + }; + DiffMatchPatch.prototype.diffCleanupMerge = function (diffs) { + var pointer, countDelete, countInsert, textInsert, textDelete, commonlength, changes, diffPointer, position; + diffs.push([DIFF_EQUAL, '']); + pointer = 0; + countDelete = 0; + countInsert = 0; + textDelete = ''; + textInsert = ''; + commonlength; + while (pointer < diffs.length) { + switch (diffs[pointer][0]) { + case DIFF_INSERT: + countInsert++; + textInsert += diffs[pointer][1]; + pointer++; + break; + case DIFF_DELETE: + countDelete++; + textDelete += diffs[pointer][1]; + pointer++; + break; + case DIFF_EQUAL: + if (countDelete + countInsert > 1) { + if (countDelete !== 0 && countInsert !== 0) { + commonlength = this.diffCommonPrefix(textInsert, textDelete); + if (commonlength !== 0) { + if (pointer - countDelete - countInsert > 0 && + diffs[pointer - countDelete - countInsert - 1][0] === DIFF_EQUAL) { + diffs[pointer - countDelete - countInsert - 1][1] += textInsert.substring(0, commonlength); + } + else { + diffs.splice(0, 0, [DIFF_EQUAL, textInsert.substring(0, commonlength)]); + pointer++; + } + textInsert = textInsert.substring(commonlength); + textDelete = textDelete.substring(commonlength); + } + commonlength = this.diffCommonSuffix(textInsert, textDelete); + if (commonlength !== 0) { + diffs[pointer][1] = textInsert.substring(textInsert.length - commonlength) + diffs[pointer][1]; + textInsert = textInsert.substring(0, textInsert.length - commonlength); + textDelete = textDelete.substring(0, textDelete.length - commonlength); + } + } + if (countDelete === 0) { + diffs.splice(pointer - countInsert, countDelete + countInsert, [DIFF_INSERT, textInsert]); + } + else if (countInsert === 0) { + diffs.splice(pointer - countDelete, countDelete + countInsert, [DIFF_DELETE, textDelete]); + } + else { + diffs.splice(pointer - countDelete - countInsert, countDelete + countInsert, [DIFF_DELETE, textDelete], [DIFF_INSERT, textInsert]); + } + pointer = pointer - countDelete - countInsert + (countDelete ? 1 : 0) + (countInsert ? 1 : 0) + 1; + } + else if (pointer !== 0 && diffs[pointer - 1][0] === DIFF_EQUAL) { + diffs[pointer - 1][1] += diffs[pointer][1]; + diffs.splice(pointer, 1); + } + else { + pointer++; + } + countInsert = 0; + countDelete = 0; + textDelete = ''; + textInsert = ''; + break; + } + } + if (diffs[diffs.length - 1][1] === '') { + diffs.pop(); + } + changes = false; + pointer = 1; + while (pointer < diffs.length - 1) { + if (diffs[pointer - 1][0] === DIFF_EQUAL && diffs[pointer + 1][0] === DIFF_EQUAL) { + diffPointer = diffs[pointer][1]; + position = diffPointer.substring(diffPointer.length - diffs[pointer - 1][1].length); + if (position === diffs[pointer - 1][1]) { + diffs[pointer][1] = + diffs[pointer - 1][1] + + diffs[pointer][1].substring(0, diffs[pointer][1].length - diffs[pointer - 1][1].length); + diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1]; + diffs.splice(pointer - 1, 1); + changes = true; + } + else if (diffPointer.substring(0, diffs[pointer + 1][1].length) === diffs[pointer + 1][1]) { + diffs[pointer - 1][1] += diffs[pointer + 1][1]; + diffs[pointer][1] = diffs[pointer][1].substring(diffs[pointer + 1][1].length) + diffs[pointer + 1][1]; + diffs.splice(pointer + 1, 1); + changes = true; + } + } + pointer++; + } + if (changes) { + this.diffCleanupMerge(diffs); + } + }; + return function (o, n) { + var diff, output, text; + diff = new DiffMatchPatch(); + output = diff.DiffMain(o, n); + diff.diffCleanupEfficiency(output); + text = diff.diffPrettyHtml(output); + return text; + }; + })(); +})((function () { + return this; +})()); +(function () { + if (typeof window === 'undefined' || !window.document) { + return; + } + QUnit.init = function () { + var tests, banner, result, qunit, config = QUnit.config; + config.stats = { all: 0, bad: 0 }; + config.moduleStats = { all: 0, bad: 0 }; + config.started = 0; + config.updateRate = 1000; + config.blocking = false; + config.autostart = true; + config.autorun = false; + config.filter = ''; + config.queue = []; + if (typeof window === 'undefined') { + return; + } + qunit = id('qunit'); + if (qunit) { + qunit.innerHTML = + "

" + + escapeText(document.title) + + '

' + + "

" + + "
" + + "

" + + "
    "; + } + tests = id('qunit-tests'); + banner = id('qunit-banner'); + result = id('qunit-testresult'); + if (tests) { + tests.innerHTML = ''; + } + if (banner) { + banner.className = ''; + } + if (result) { + result.parentNode.removeChild(result); + } + if (tests) { + result = document.createElement('p'); + result.id = 'qunit-testresult'; + result.className = 'result'; + tests.parentNode.insertBefore(result, tests); + result.innerHTML = 'Running...
     '; + } + }; + var config = QUnit.config, hasOwn = Object.prototype.hasOwnProperty, defined = { + document: window.document !== undefined, + sessionStorage: (function () { + var x = 'qunit-test-string'; + try { + sessionStorage.setItem(x, x); + sessionStorage.removeItem(x); + return true; + } + catch (e) { + return false; + } + })(), + }, modulesList = []; + function escapeText(s) { + if (!s) { + return ''; + } + s = s + ''; + return s.replace(/['"<>&]/g, function (s) { + switch (s) { + case "'": + return '''; + case '"': + return '"'; + case '<': + return '<'; + case '>': + return '>'; + case '&': + return '&'; + } + }); + } + function addEvent(elem, type, fn) { + if (elem.addEventListener) { + elem.addEventListener(type, fn, false); + } + else if (elem.attachEvent) { + elem.attachEvent('on' + type, function () { + var event = window.event; + if (!event.target) { + event.target = event.srcElement || document; + } + fn.call(elem, event); + }); + } + } + function addEvents(elems, type, fn) { + var i = elems.length; + while (i--) { + addEvent(elems[i], type, fn); + } + } + function hasClass(elem, name) { + return (' ' + elem.className + ' ').indexOf(' ' + name + ' ') >= 0; + } + function addClass(elem, name) { + if (!hasClass(elem, name)) { + elem.className += (elem.className ? ' ' : '') + name; + } + } + function toggleClass(elem, name) { + if (hasClass(elem, name)) { + removeClass(elem, name); + } + else { + addClass(elem, name); + } + } + function removeClass(elem, name) { + var set = ' ' + elem.className + ' '; + while (set.indexOf(' ' + name + ' ') >= 0) { + set = set.replace(' ' + name + ' ', ' '); + } + elem.className = typeof set.trim === 'function' ? set.trim() : set.replace(/^\s+|\s+$/g, ''); + } + function id(name) { + return defined.document && document.getElementById && document.getElementById(name); + } + function getUrlConfigHtml() { + var i, j, val, escaped, escapedTooltip, selection = false, len = config.urlConfig.length, urlConfigHtml = ''; + for (i = 0; i < len; i++) { + val = config.urlConfig[i]; + if (typeof val === 'string') { + val = { + id: val, + label: val, + }; + } + escaped = escapeText(val.id); + escapedTooltip = escapeText(val.tooltip); + if (config[val.id] === undefined) { + config[val.id] = QUnit.urlParams[val.id]; + } + if (!val.value || typeof val.value === 'string') { + urlConfigHtml += + "'; + } + else { + urlConfigHtml += + "'; + } + } + return urlConfigHtml; + } + function toolbarChanged() { + var updatedUrl, value, field = this, params = {}; + if ('selectedIndex' in field) { + value = field.options[field.selectedIndex].value || undefined; + } + else { + value = field.checked ? field.defaultValue || true : undefined; + } + params[field.name] = value; + updatedUrl = setUrl(params); + if ('hidepassed' === field.name && 'replaceState' in window.history) { + config[field.name] = value || false; + if (value) { + addClass(id('qunit-tests'), 'hidepass'); + } + else { + removeClass(id('qunit-tests'), 'hidepass'); + } + window.history.replaceState(null, '', updatedUrl); + } + else { + window.location = updatedUrl; + } + } + function setUrl(params) { + var key, querystring = '?'; + params = QUnit.extend(QUnit.extend({}, QUnit.urlParams), params); + for (key in params) { + if (hasOwn.call(params, key)) { + if (params[key] === undefined) { + continue; + } + querystring += encodeURIComponent(key); + if (params[key] !== true) { + querystring += '=' + encodeURIComponent(params[key]); + } + querystring += '&'; + } + } + return location.protocol + '//' + location.host + location.pathname + querystring.slice(0, -1); + } + function applyUrlParams() { + var selectedModule, modulesList = id('qunit-modulefilter'), filter = id('qunit-filter-input').value; + selectedModule = modulesList ? decodeURIComponent(modulesList.options[modulesList.selectedIndex].value) : undefined; + window.location = setUrl({ + module: selectedModule === '' ? undefined : selectedModule, + filter: filter === '' ? undefined : filter, + testId: undefined, + }); + } + function toolbarUrlConfigContainer() { + var urlConfigContainer = document.createElement('span'); + urlConfigContainer.innerHTML = getUrlConfigHtml(); + addClass(urlConfigContainer, 'qunit-url-config'); + addEvents(urlConfigContainer.getElementsByTagName('input'), 'click', toolbarChanged); + addEvents(urlConfigContainer.getElementsByTagName('select'), 'change', toolbarChanged); + return urlConfigContainer; + } + function toolbarLooseFilter() { + var filter = document.createElement('form'), label = document.createElement('label'), input = document.createElement('input'), button = document.createElement('button'); + addClass(filter, 'qunit-filter'); + label.innerHTML = 'Filter: '; + input.type = 'text'; + input.value = config.filter || ''; + input.name = 'filter'; + input.id = 'qunit-filter-input'; + button.innerHTML = 'Go'; + label.appendChild(input); + filter.appendChild(label); + filter.appendChild(button); + addEvent(filter, 'submit', function (ev) { + applyUrlParams(); + if (ev && ev.preventDefault) { + ev.preventDefault(); + } + return false; + }); + return filter; + } + function toolbarModuleFilterHtml() { + var i, moduleFilterHtml = ''; + if (!modulesList.length) { + return false; + } + modulesList.sort(function (a, b) { + return a.localeCompare(b); + }); + moduleFilterHtml += + "" + + "'; + return moduleFilterHtml; + } + function toolbarModuleFilter() { + var toolbar = id('qunit-testrunner-toolbar'), moduleFilter = document.createElement('span'), moduleFilterHtml = toolbarModuleFilterHtml(); + if (!toolbar || !moduleFilterHtml) { + return false; + } + moduleFilter.setAttribute('id', 'qunit-modulefilter-container'); + moduleFilter.innerHTML = moduleFilterHtml; + addEvent(moduleFilter.lastChild, 'change', applyUrlParams); + toolbar.appendChild(moduleFilter); + } + function appendToolbar() { + var toolbar = id('qunit-testrunner-toolbar'); + if (toolbar) { + toolbar.appendChild(toolbarUrlConfigContainer()); + toolbar.appendChild(toolbarLooseFilter()); + } + } + function appendHeader() { + var header = id('qunit-header'); + if (header) { + header.innerHTML = + "" + + header.innerHTML + + ' '; + } + } + function appendBanner() { + var banner = id('qunit-banner'); + if (banner) { + banner.className = ''; + } + } + function appendTestResults() { + var tests = id('qunit-tests'), result = id('qunit-testresult'); + if (result) { + result.parentNode.removeChild(result); + } + if (tests) { + tests.innerHTML = ''; + result = document.createElement('p'); + result.id = 'qunit-testresult'; + result.className = 'result'; + tests.parentNode.insertBefore(result, tests); + result.innerHTML = 'Running...
     '; + } + } + function storeFixture() { + var fixture = id('qunit-fixture'); + if (fixture) { + config.fixture = fixture.innerHTML; + } + } + function appendUserAgent() { + var userAgent = id('qunit-userAgent'); + if (userAgent) { + userAgent.innerHTML = ''; + userAgent.appendChild(document.createTextNode('QUnit ' + QUnit.version + '; ' + navigator.userAgent)); + } + } + function appendTestsList(modules) { + var i, l, x, z, test, moduleObj; + for (i = 0, l = modules.length; i < l; i++) { + moduleObj = modules[i]; + if (moduleObj.name) { + modulesList.push(moduleObj.name); + } + for (x = 0, z = moduleObj.tests.length; x < z; x++) { + test = moduleObj.tests[x]; + appendTest(test.name, test.testId, moduleObj.name); + } + } + } + function appendTest(name, testId, moduleName) { + var title, rerunTrigger, testBlock, assertList, tests = id('qunit-tests'); + if (!tests) { + return; + } + title = document.createElement('strong'); + title.innerHTML = getNameHtml(name, moduleName); + rerunTrigger = document.createElement('a'); + rerunTrigger.innerHTML = 'Rerun'; + rerunTrigger.href = setUrl({ testId: testId }); + testBlock = document.createElement('li'); + testBlock.appendChild(title); + testBlock.appendChild(rerunTrigger); + testBlock.id = 'qunit-test-output-' + testId; + assertList = document.createElement('ol'); + assertList.className = 'qunit-assert-list'; + testBlock.appendChild(assertList); + tests.appendChild(testBlock); + } + QUnit.begin(function (details) { + var qunit = id('qunit'); + storeFixture(); + if (qunit) { + qunit.innerHTML = + "

    " + + escapeText(document.title) + + '

    ' + + "

    " + + "
    " + + "

    " + + "
      "; + } + appendHeader(); + appendBanner(); + appendTestResults(); + appendUserAgent(); + appendToolbar(); + appendTestsList(details.modules); + toolbarModuleFilter(); + if (qunit && config.hidepassed) { + addClass(qunit.lastChild, 'hidepass'); + } + }); + QUnit.done(function (details) { + var i, key, banner = id('qunit-banner'), tests = id('qunit-tests'), html = [ + 'Tests completed in ', + details.runtime, + ' milliseconds.
      ', + "", + details.passed, + " assertions of ", + details.total, + " passed, ", + details.failed, + ' failed.', + ].join(''); + if (banner) { + banner.className = details.failed ? 'qunit-fail' : 'qunit-pass'; + } + if (tests) { + id('qunit-testresult').innerHTML = html; + } + if (config.altertitle && defined.document && document.title) { + document.title = [details.failed ? '\u2716' : '\u2714', document.title.replace(/^[\u2714\u2716] /i, '')].join(' '); + } + if (config.reorder && defined.sessionStorage && details.failed === 0) { + for (i = 0; i < sessionStorage.length; i++) { + key = sessionStorage.key(i++); + if (key.indexOf('qunit-test-') === 0) { + sessionStorage.removeItem(key); + } + } + } + if (config.scrolltop && window.scrollTo) { + window.scrollTo(0, 0); + } + }); + function getNameHtml(name, module) { + var nameHtml = ''; + if (module) { + nameHtml = "" + escapeText(module) + ': '; + } + nameHtml += "" + escapeText(name) + ''; + return nameHtml; + } + QUnit.testStart(function (details) { + var running, testBlock, bad; + testBlock = id('qunit-test-output-' + details.testId); + if (testBlock) { + testBlock.className = 'running'; + } + else { + appendTest(details.name, details.testId, details.module); + } + running = id('qunit-testresult'); + if (running) { + bad = + QUnit.config.reorder && + defined.sessionStorage && + +sessionStorage.getItem('qunit-test-' + details.module + '-' + details.name); + running.innerHTML = + (bad ? 'Rerunning previously failed test:
      ' : 'Running:
      ') + + getNameHtml(details.name, details.module); + } + }); + function stripHtml(string) { + return string + .replace(/<\/?[^>]+(>|$)/g, '') + .replace(/\"/g, '') + .replace(/\s+/g, ''); + } + QUnit.log(function (details) { + var assertList, assertLi, message, expected, actual, diff, showDiff = false, testItem = id('qunit-test-output-' + details.testId); + if (!testItem) { + return; + } + message = escapeText(details.message) || (details.result ? 'okay' : 'failed'); + message = "" + message + ''; + message += "@ " + details.runtime + ' ms'; + if (!details.result && hasOwn.call(details, 'expected')) { + if (details.negative) { + expected = escapeText('NOT ' + QUnit.dump.parse(details.expected)); + } + else { + expected = escapeText(QUnit.dump.parse(details.expected)); + } + actual = escapeText(QUnit.dump.parse(details.actual)); + message += "'; + if (actual !== expected) { + message += "'; + if (!/^(true|false)$/.test(actual) && !/^(true|false)$/.test(expected)) { + diff = QUnit.diff(expected, actual); + showDiff = stripHtml(diff).length !== stripHtml(expected).length + stripHtml(actual).length; + } + if (showDiff) { + message += "'; + } + } + else if (expected.indexOf('[object Array]') !== -1 || expected.indexOf('[object Object]') !== -1) { + message += + "'; + } + if (details.source) { + message += + "'; + } + message += '
      Expected:
      " + expected + '
      Result:
      " + actual + '
      Diff:
      " + diff + '
      Message: " + + 'Diff suppressed as the depth of object is more than current max depth (' + + QUnit.config.maxDepth + + ').

      Hint: Use QUnit.dump.maxDepth to ' + + " run with a higher max depth or " + + 'Rerun without max depth.

      Source:
      " + escapeText(details.source) + '
      '; + } + else if (!details.result && details.source) { + message += + '' + + "' + + '
      Source:
      " +
      +                    escapeText(details.source) +
      +                    '
      '; + } + assertList = testItem.getElementsByTagName('ol')[0]; + assertLi = document.createElement('li'); + assertLi.className = details.result ? 'pass' : 'fail'; + assertLi.innerHTML = message; + assertList.appendChild(assertLi); + }); + QUnit.testDone(function (details) { + var testTitle, time, testItem, assertList, good, bad, testCounts, skipped, sourceName, tests = id('qunit-tests'); + if (!tests) { + return; + } + testItem = id('qunit-test-output-' + details.testId); + assertList = testItem.getElementsByTagName('ol')[0]; + good = details.passed; + bad = details.failed; + if (config.reorder && defined.sessionStorage) { + if (bad) { + sessionStorage.setItem('qunit-test-' + details.module + '-' + details.name, bad); + } + else { + sessionStorage.removeItem('qunit-test-' + details.module + '-' + details.name); + } + } + if (bad === 0) { + addClass(assertList, 'qunit-collapsed'); + } + testTitle = testItem.firstChild; + testCounts = bad ? "" + bad + ', ' + "" + good + ', ' : ''; + testTitle.innerHTML += " (" + testCounts + details.assertions.length + ')'; + if (details.skipped) { + testItem.className = 'skipped'; + skipped = document.createElement('em'); + skipped.className = 'qunit-skipped-label'; + skipped.innerHTML = 'skipped'; + testItem.insertBefore(skipped, testTitle); + } + else { + addEvent(testTitle, 'click', function () { + toggleClass(assertList, 'qunit-collapsed'); + }); + testItem.className = bad ? 'fail' : 'pass'; + time = document.createElement('span'); + time.className = 'runtime'; + time.innerHTML = details.runtime + ' ms'; + testItem.insertBefore(time, assertList); + } + if (details.source) { + sourceName = document.createElement('p'); + sourceName.innerHTML = 'Source: ' + details.source; + addClass(sourceName, 'qunit-source'); + if (bad === 0) { + addClass(sourceName, 'qunit-collapsed'); + } + addEvent(testTitle, 'click', function () { + toggleClass(sourceName, 'qunit-collapsed'); + }); + testItem.appendChild(sourceName); + } + }); + if (defined.document) { + var notPhantom = (function (p) { + return !(p && p.version && p.version.major > 0); + })(window.phantom); + if (notPhantom && document.readyState === 'complete') { + QUnit.load(); + } + else { + addEvent(window, 'load', QUnit.load); + } + } + else { + config.pageLoaded = true; + config.autorun = true; + } +})(); diff --git a/build/esm/tests/tabnote_tests.js b/build/esm/tests/tabnote_tests.js new file mode 100644 index 0000000000..1cfbba3a6f --- /dev/null +++ b/build/esm/tests/tabnote_tests.js @@ -0,0 +1,474 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Dot } from '../src/dot.js'; +import { Flow } from '../src/flow.js'; +import { Font, FontWeight } from '../src/font.js'; +import { Formatter } from '../src/formatter.js'; +import { Stave } from '../src/stave.js'; +import { TabNote } from '../src/tabnote.js'; +import { TabStave } from '../src/tabstave.js'; +import { TickContext } from '../src/tickcontext.js'; +import { Voice, VoiceMode } from '../src/voice.js'; +const TabNoteTests = { + Start() { + QUnit.module('TabNote'); + test('Tick', ticks); + test('TabStave Line', tabStaveLine); + test('Width', width); + test('TickContext', tickContext); + const run = VexFlowTests.runTests; + run('TabNote Draw', draw); + run('TabNote Stems Up', drawStemsUp); + run('TabNote Stems Down', drawStemsDown); + run('TabNote Stems Up Through Stave', drawStemsUpThrough); + run('TabNote Stems Down Through Stave', drawStemsDownThrough); + run('TabNote Stems with Dots', drawStemsDotted); + }, +}; +function ticks() { + const BEAT = (1 * Flow.RESOLUTION) / 4; + let note = new TabNote({ positions: [{ str: 6, fret: 6 }], duration: '1' }); + equal(note.getTicks().value(), BEAT * 4, 'Whole note has 4 beats'); + note = new TabNote({ positions: [{ str: 3, fret: 4 }], duration: '4' }); + equal(note.getTicks().value(), BEAT, 'Quarter note has 1 beat'); +} +function tabStaveLine() { + const note = new TabNote({ + positions: [ + { str: 6, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '1', + }); + const positions = note.getPositions(); + equal(positions[0].str, 6, 'String 6, Fret 6'); + equal(positions[0].fret, 6, 'String 6, Fret 6'); + equal(positions[1].str, 4, 'String 4, Fret 5'); + equal(positions[1].fret, 5, 'String 4, Fret 5'); + const stave = new Stave(10, 10, 300); + note.setStave(stave); + const ys = note.getYs(); + equal(ys.length, 2, 'Chord should be rendered on two lines'); + equal(ys[0], 100, 'Line for String 6, Fret 6'); + equal(ys[1], 80, 'Line for String 4, Fret 5'); +} +function width() { + expect(1); + const note = new TabNote({ + positions: [ + { str: 6, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '1', + }); + throws(() => note.getWidth(), /UnformattedNote/, 'Unformatted note should have no width'); +} +function tickContext() { + const note = new TabNote({ + positions: [ + { str: 6, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '1', + }); + const tickContext = new TickContext().addTickable(note).preFormat().setX(10).setPadding(0); + equal(tickContext.getWidth(), 7); +} +function draw(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 600, 140); + ctx.font = '10pt Arial'; + const stave = new TabStave(10, 10, 550); + stave.setContext(ctx); + stave.draw(); + const notes = [ + { positions: [{ str: 6, fret: 6 }], duration: '4' }, + { + positions: [ + { str: 3, fret: 6 }, + { str: 4, fret: 25 }, + ], + duration: '4', + }, + { + positions: [ + { str: 2, fret: 'x' }, + { str: 5, fret: 15 }, + ], + duration: '4', + }, + { + positions: [ + { str: 2, fret: 'x' }, + { str: 5, fret: 5 }, + ], + duration: '4', + }, + { + positions: [ + { str: 2, fret: 10 }, + { str: 5, fret: 12 }, + ], + duration: '4', + }, + { + positions: [ + { str: 6, fret: 0 }, + { str: 5, fret: 5 }, + { str: 4, fret: 5 }, + { str: 3, fret: 4 }, + { str: 2, fret: 3 }, + { str: 1, fret: 0 }, + ], + duration: '4', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '4', + }, + ]; + function showNote(noteStruct, stave, ctx, x) { + const tabNote = new TabNote(noteStruct); + const tickContext = new TickContext(); + tickContext.addTickable(tabNote).preFormat().setX(x); + tabNote.setContext(ctx).setStave(stave); + tabNote.draw(); + return tabNote; + } + for (let i = 0; i < notes.length; ++i) { + const note = notes[i]; + const tabNote = showNote(note, stave, ctx, (i + 1) * 25); + ok(tabNote.getX() > 0, 'Note ' + i + ' has X value'); + ok(tabNote.getYs().length > 0, 'Note ' + i + ' has Y values'); + } +} +function drawStemsUp(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 600, 200); + ctx.font = '10pt Arial'; + const stave = new TabStave(10, 30, 550); + stave.setContext(ctx); + stave.draw(); + const specs = [ + { + positions: [ + { str: 3, fret: 6 }, + { str: 4, fret: 25 }, + ], + duration: '4', + }, + { + positions: [ + { str: 2, fret: 10 }, + { str: 5, fret: 12 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '16', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '32', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '64', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '128', + }, + ]; + const notes = specs.map((struct) => { + const tabNote = new TabNote(struct); + tabNote.render_options.draw_stem = true; + return tabNote; + }); + const voice = new Voice(Flow.TIME4_4).setMode(VoiceMode.SOFT); + voice.addTickables(notes); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + voice.draw(ctx, stave); + ok(true, 'TabNotes successfully drawn'); +} +function drawStemsDown(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 600, 200); + ctx.font = '10pt Arial'; + const stave = new TabStave(10, 10, 550); + stave.setContext(ctx); + stave.draw(); + const specs = [ + { + positions: [ + { str: 3, fret: 6 }, + { str: 4, fret: 25 }, + ], + duration: '4', + }, + { + positions: [ + { str: 2, fret: 10 }, + { str: 5, fret: 12 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '16', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '32', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '64', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '128', + }, + ]; + const notes = specs.map((struct) => { + const tabNote = new TabNote(struct); + tabNote.render_options.draw_stem = true; + tabNote.setStemDirection(-1); + return tabNote; + }); + const voice = new Voice(Flow.TIME4_4).setMode(VoiceMode.SOFT); + voice.addTickables(notes); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + voice.draw(ctx, stave); + ok(true, 'All objects have been drawn'); +} +function drawStemsUpThrough(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 600, 200); + ctx.font = '10pt Arial'; + const stave = new TabStave(10, 30, 550); + stave.setContext(ctx); + stave.draw(); + const specs = [ + { + positions: [ + { str: 3, fret: 6 }, + { str: 4, fret: 25 }, + ], + duration: '4', + }, + { + positions: [ + { str: 2, fret: 10 }, + { str: 5, fret: 12 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '16', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '32', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '64', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '128', + }, + ]; + const notes = specs.map((struct) => { + const tabNote = new TabNote(struct); + tabNote.render_options.draw_stem = true; + tabNote.render_options.draw_stem_through_stave = true; + return tabNote; + }); + ctx.setFont(Font.SANS_SERIF, 10, FontWeight.BOLD); + const voice = new Voice(Flow.TIME4_4).setMode(VoiceMode.SOFT); + voice.addTickables(notes); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + voice.draw(ctx, stave); + ok(true, 'TabNotes successfully drawn'); +} +function drawStemsDownThrough(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 600, 250); + ctx.font = '10pt Arial'; + const stave = new TabStave(10, 10, 550, { num_lines: 8 }); + stave.setContext(ctx); + stave.draw(); + const specs = [ + { + positions: [ + { str: 3, fret: 6 }, + { str: 4, fret: 25 }, + ], + duration: '4', + }, + { + positions: [ + { str: 2, fret: 10 }, + { str: 5, fret: 12 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '16', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + { str: 6, fret: 10 }, + ], + duration: '32', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '64', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 3, fret: 5 }, + { str: 5, fret: 5 }, + { str: 7, fret: 5 }, + ], + duration: '128', + }, + ]; + const notes = specs.map((struct) => { + const tabNote = new TabNote(struct); + tabNote.render_options.draw_stem = true; + tabNote.render_options.draw_stem_through_stave = true; + tabNote.setStemDirection(-1); + return tabNote; + }); + ctx.setFont('Arial', 10, 'bold'); + const voice = new Voice(Flow.TIME4_4).setMode(VoiceMode.SOFT); + voice.addTickables(notes); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + voice.draw(ctx, stave); + ok(true, 'All objects have been drawn'); +} +function drawStemsDotted(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 600, 200); + ctx.font = '10pt Arial'; + const stave = new TabStave(10, 10, 550); + stave.setContext(ctx); + stave.draw(); + const specs = [ + { + positions: [ + { str: 3, fret: 6 }, + { str: 4, fret: 25 }, + ], + duration: '4d', + }, + { + positions: [ + { str: 2, fret: 10 }, + { str: 5, fret: 12 }, + ], + duration: '8', + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '4dd', + stem_direction: -1, + }, + { + positions: [ + { str: 1, fret: 6 }, + { str: 4, fret: 5 }, + ], + duration: '16', + stem_direction: -1, + }, + ]; + const notes = specs.map((struct) => new TabNote(struct, true)); + Dot.buildAndAttach([notes[0], notes[2], notes[2]]); + const voice = new Voice(Flow.TIME4_4).setMode(VoiceMode.SOFT); + voice.addTickables(notes); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + voice.draw(ctx, stave); + ok(true, 'TabNotes successfully drawn'); +} +VexFlowTests.register(TabNoteTests); +export { TabNoteTests }; diff --git a/build/esm/tests/tabslide_tests.js b/build/esm/tests/tabslide_tests.js new file mode 100644 index 0000000000..9d68fcda16 --- /dev/null +++ b/build/esm/tests/tabslide_tests.js @@ -0,0 +1,135 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Flow } from '../src/flow.js'; +import { Formatter } from '../src/formatter.js'; +import { TabNote } from '../src/tabnote.js'; +import { TabSlide } from '../src/tabslide.js'; +import { TabStave } from '../src/tabstave.js'; +import { Voice } from '../src/voice.js'; +const TabSlideTests = { + Start() { + QUnit.module('TabSlide'); + const run = VexFlowTests.runTests; + run('Simple TabSlide', simple); + run('Slide Up', slideUp); + run('Slide Down', slideDown); + }, +}; +function tieNotes(notes, indices, stave, ctx) { + const voice = new Voice(Flow.TIME4_4); + voice.addTickables(notes); + new Formatter().joinVoices([voice]).format([voice], 100); + voice.draw(ctx, stave); + const tie = new TabSlide({ + first_note: notes[0], + last_note: notes[1], + first_indices: indices, + last_indices: indices, + }, TabSlide.SLIDE_UP); + tie.setContext(ctx); + tie.draw(); +} +function setupContext(options, width) { + const context = options.contextBuilder(options.elementId, 350, 140); + context.scale(0.9, 0.9); + context.fillStyle = '#221'; + context.strokeStyle = '#221'; + context.font = '10pt Arial'; + const stave = new TabStave(10, 10, width || 350).addTabGlyph().setContext(context).draw(); + return { context, stave }; +} +const tabNote = (noteStruct) => new TabNote(noteStruct); +function simple(options, contextBuilder) { + options.contextBuilder = contextBuilder; + const { stave, context } = setupContext(options); + tieNotes([ + tabNote({ positions: [{ str: 4, fret: 4 }], duration: 'h' }), + tabNote({ positions: [{ str: 4, fret: 6 }], duration: 'h' }), + ], [0], stave, context); + ok(true, 'Simple Test'); +} +function multiTest(options, buildTabSlide) { + const { context, stave } = setupContext(options, 440); + const notes = [ + tabNote({ positions: [{ str: 4, fret: 4 }], duration: '8' }), + tabNote({ positions: [{ str: 4, fret: 4 }], duration: '8' }), + tabNote({ + positions: [ + { str: 4, fret: 4 }, + { str: 5, fret: 4 }, + ], + duration: '8', + }), + tabNote({ + positions: [ + { str: 4, fret: 6 }, + { str: 5, fret: 6 }, + ], + duration: '8', + }), + tabNote({ positions: [{ str: 2, fret: 14 }], duration: '8' }), + tabNote({ positions: [{ str: 2, fret: 16 }], duration: '8' }), + tabNote({ + positions: [ + { str: 2, fret: 14 }, + { str: 3, fret: 14 }, + ], + duration: '8', + }), + tabNote({ + positions: [ + { str: 2, fret: 16 }, + { str: 3, fret: 16 }, + ], + duration: '8', + }), + ]; + const voice = new Voice(Flow.TIME4_4).addTickables(notes); + new Formatter().joinVoices([voice]).format([voice], 300); + voice.draw(context, stave); + buildTabSlide({ + first_note: notes[0], + last_note: notes[1], + first_indices: [0], + last_indices: [0], + }) + .setContext(context) + .draw(); + ok(true, 'Single note'); + buildTabSlide({ + first_note: notes[2], + last_note: notes[3], + first_indices: [0, 1], + last_indices: [0, 1], + }) + .setContext(context) + .draw(); + ok(true, 'Chord'); + buildTabSlide({ + first_note: notes[4], + last_note: notes[5], + first_indices: [0], + last_indices: [0], + }) + .setContext(context) + .draw(); + ok(true, 'Single note high-fret'); + buildTabSlide({ + first_note: notes[6], + last_note: notes[7], + first_indices: [0, 1], + last_indices: [0, 1], + }) + .setContext(context) + .draw(); + ok(true, 'Chord high-fret'); +} +function slideUp(options, contextBuilder) { + options.contextBuilder = contextBuilder; + multiTest(options, TabSlide.createSlideUp); +} +function slideDown(options, contextBuilder) { + options.contextBuilder = contextBuilder; + multiTest(options, TabSlide.createSlideDown); +} +VexFlowTests.register(TabSlideTests); +export { TabSlideTests }; diff --git a/build/esm/tests/tabstave_tests.js b/build/esm/tests/tabstave_tests.js new file mode 100644 index 0000000000..791d933fa7 --- /dev/null +++ b/build/esm/tests/tabstave_tests.js @@ -0,0 +1,23 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { TabStave } from '../src/tabstave.js'; +const TabStaveTests = { + Start() { + QUnit.module('TabStave'); + const run = VexFlowTests.runTests; + run('TabStave Draw Test', draw); + }, +}; +function draw(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 160); + const stave = new TabStave(10, 10, 300); + stave.setNumLines(6); + stave.setContext(ctx); + stave.draw(); + equal(stave.getYForNote(0), 127, 'getYForNote(0)'); + equal(stave.getYForLine(5), 127, 'getYForLine(5)'); + equal(stave.getYForLine(0), 62, 'getYForLine(0) - Top Line'); + equal(stave.getYForLine(4), 114, 'getYForLine(4) - Bottom Line'); + ok(true, 'all pass'); +} +VexFlowTests.register(TabStaveTests); +export { TabStaveTests }; diff --git a/build/esm/tests/tabtie_tests.js b/build/esm/tests/tabtie_tests.js new file mode 100644 index 0000000000..f31b77ebd9 --- /dev/null +++ b/build/esm/tests/tabtie_tests.js @@ -0,0 +1,173 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Annotation } from '../src/annotation.js'; +import { Flow } from '../src/flow.js'; +import { Formatter } from '../src/formatter.js'; +import { TabNote } from '../src/tabnote.js'; +import { TabStave } from '../src/tabstave.js'; +import { TabTie } from '../src/tabtie.js'; +import { Voice } from '../src/voice.js'; +const TabTieTests = { + Start() { + QUnit.module('TabTie'); + const run = VexFlowTests.runTests; + run('Simple TabTie', simple); + run('Hammerons', simpleHammerOn); + run('Pulloffs', simplePullOff); + run('Tapping', tap); + run('Continuous', continuous); + }, +}; +const tabNote = (noteStruct) => new TabNote(noteStruct); +function setupContext(options, w = 0, h = 0) { + const context = options.contextBuilder(options.elementId, w || 350, h || 160); + context.fillStyle = '#221'; + context.strokeStyle = '#221'; + context.setFont('Arial', VexFlowTests.Font.size); + const stave = new TabStave(10, 10, w || 350).addTabGlyph().setContext(context).draw(); + return { context, stave }; +} +function tieNotes(notes, indices, stave, ctx, text) { + const voice = new Voice(Flow.TIME4_4); + voice.addTickables(notes); + new Formatter().joinVoices([voice]).format([voice], 100); + voice.draw(ctx, stave); + const tie = new TabTie({ + first_note: notes[0], + last_note: notes[1], + first_indices: indices, + last_indices: indices, + }, text !== null && text !== void 0 ? text : 'Annotation'); + tie.setContext(ctx); + tie.draw(); +} +function simple(options, contextBuilder) { + options.contextBuilder = contextBuilder; + const { context, stave } = setupContext(options); + const note1 = tabNote({ positions: [{ str: 4, fret: 4 }], duration: 'h' }); + const note2 = tabNote({ positions: [{ str: 4, fret: 6 }], duration: 'h' }); + tieNotes([note1, note2], [0], stave, context); + ok(true, 'Simple Test'); +} +function simpleHammerOn(options, contextBuilder) { + options.contextBuilder = contextBuilder; + multiTest(options, TabTie.createHammeron); +} +function simplePullOff(options, contextBuilder) { + options.contextBuilder = contextBuilder; + multiTest(options, TabTie.createPulloff); +} +function multiTest(options, createTabTie) { + const { context, stave } = setupContext(options, 440, 140); + const notes = [ + tabNote({ positions: [{ str: 4, fret: 4 }], duration: '8' }), + tabNote({ positions: [{ str: 4, fret: 4 }], duration: '8' }), + tabNote({ + positions: [ + { str: 4, fret: 4 }, + { str: 5, fret: 4 }, + ], + duration: '8', + }), + tabNote({ + positions: [ + { str: 4, fret: 6 }, + { str: 5, fret: 6 }, + ], + duration: '8', + }), + tabNote({ positions: [{ str: 2, fret: 14 }], duration: '8' }), + tabNote({ positions: [{ str: 2, fret: 16 }], duration: '8' }), + tabNote({ + positions: [ + { str: 2, fret: 14 }, + { str: 3, fret: 14 }, + ], + duration: '8', + }), + tabNote({ + positions: [ + { str: 2, fret: 16 }, + { str: 3, fret: 16 }, + ], + duration: '8', + }), + ]; + const voice = new Voice(Flow.TIME4_4).addTickables(notes); + new Formatter().joinVoices([voice]).format([voice], 300); + voice.draw(context, stave); + createTabTie({ + first_note: notes[0], + last_note: notes[1], + first_indices: [0], + last_indices: [0], + }) + .setContext(context) + .draw(); + ok(true, 'Single note'); + createTabTie({ + first_note: notes[2], + last_note: notes[3], + first_indices: [0, 1], + last_indices: [0, 1], + }) + .setContext(context) + .draw(); + ok(true, 'Chord'); + createTabTie({ + first_note: notes[4], + last_note: notes[5], + first_indices: [0], + last_indices: [0], + }) + .setContext(context) + .draw(); + ok(true, 'Single note high-fret'); + createTabTie({ + first_note: notes[6], + last_note: notes[7], + first_indices: [0, 1], + last_indices: [0, 1], + }) + .setContext(context) + .draw(); + ok(true, 'Chord high-fret'); +} +function tap(options, contextBuilder) { + options.contextBuilder = contextBuilder; + const { context, stave } = setupContext(options); + const note1 = tabNote({ positions: [{ str: 4, fret: 12 }], duration: 'h' }).addModifier(new Annotation('T'), 0); + const note2 = tabNote({ positions: [{ str: 4, fret: 10 }], duration: 'h' }); + tieNotes([note1, note2], [0], stave, context, 'P'); + ok(true, 'Tapping Test'); +} +function continuous(options, contextBuilder) { + options.contextBuilder = contextBuilder; + const { context, stave } = setupContext(options, 440, 140); + const notes = [ + tabNote({ positions: [{ str: 4, fret: 4 }], duration: 'q' }), + tabNote({ positions: [{ str: 4, fret: 5 }], duration: 'q' }), + tabNote({ positions: [{ str: 4, fret: 6 }], duration: 'h' }), + ]; + const voice = new Voice(Flow.TIME4_4).addTickables(notes); + new Formatter().joinVoices([voice]).format([voice], 300); + voice.draw(context, stave); + TabTie.createHammeron({ + first_note: notes[0], + last_note: notes[1], + first_indices: [0], + last_indices: [0], + }) + .setContext(context) + .draw(); + TabTie.createPulloff({ + first_note: notes[1], + last_note: notes[2], + first_indices: [0], + last_indices: [0], + }) + .setContext(context) + .draw(); + ok(true, 'Continuous Hammeron'); +} +VexFlowTests.register(TabTieTests); +export { TabTieTests }; diff --git a/build/esm/tests/textbracket_tests.js b/build/esm/tests/textbracket_tests.js new file mode 100644 index 0000000000..16dd574984 --- /dev/null +++ b/build/esm/tests/textbracket_tests.js @@ -0,0 +1,100 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +const TextBracketTests = { + Start() { + QUnit.module('TextBracket'); + const run = VexFlowTests.runTests; + run('Simple TextBracket', simple0); + run('TextBracket Styles', simple1); + }, +}; +function simple0(options) { + const f = VexFlowTests.makeFactory(options, 550); + const stave = f.Stave(); + const score = f.EasyScore(); + const notes = score.notes('c4/4, c4, c4, c4, c4', { stem: 'up' }); + const voice = score.voice(notes, { time: '5/4' }); + f.TextBracket({ + from: notes[0], + to: notes[4], + text: '15', + options: { + superscript: 'va', + position: 'top', + }, + }); + f.TextBracket({ + from: notes[0], + to: notes[4], + text: '8', + options: { + superscript: 'vb', + position: 'bottom', + line: 3, + }, + }); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +function simple1(options) { + const f = VexFlowTests.makeFactory(options, 550); + const stave = f.Stave(); + const score = f.EasyScore(); + const notes = score.notes('c4/4, c4, c4, c4, c4', { stem: 'up' }); + const voice = score.voice(notes, { time: '5/4' }); + const topOctaves = [ + f.TextBracket({ + from: notes[0], + to: notes[1], + text: 'Cool notes', + options: { + superscript: '', + position: 'top', + }, + }), + f.TextBracket({ + from: notes[2], + to: notes[4], + text: 'Testing', + options: { + position: 'top', + superscript: 'superscript', + font: { family: 'Arial', size: 15, weight: 'normal', style: 'normal' }, + }, + }), + ]; + const bottomOctaves = [ + f.TextBracket({ + from: notes[0], + to: notes[1], + text: '8', + options: { + superscript: 'vb', + position: 'bottom', + line: 3, + font: { size: 30 }, + }, + }), + f.TextBracket({ + from: notes[2], + to: notes[4], + text: 'Not cool notes', + options: { + superscript: ' super uncool', + position: 'bottom', + line: 4, + }, + }), + ]; + topOctaves[1].render_options.line_width = 2; + topOctaves[1].render_options.show_bracket = false; + bottomOctaves[0].render_options.underline_superscript = false; + bottomOctaves[0].setDashed(false); + bottomOctaves[1].render_options.bracket_height = 40; + bottomOctaves[1].setDashed(true, [2, 2]); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +VexFlowTests.register(TextBracketTests); +export { TextBracketTests }; diff --git a/build/esm/tests/textformatter_tests.js b/build/esm/tests/textformatter_tests.js new file mode 100644 index 0000000000..ce475c8c76 --- /dev/null +++ b/build/esm/tests/textformatter_tests.js @@ -0,0 +1,24 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { TextFormatter } from '../src/textformatter.js'; +const TextFormatterTests = { + Start() { + QUnit.module('TextFormatter'); + test('Basic', basic); + }, +}; +function basic() { + var _a; + const registeredFamilies = TextFormatter.getFontFamilies(); + equal(registeredFamilies.length, 2, `There are two registered font families: 'Roboto Slab' & 'PetalumaScript'`); + const petalumaFormatterInfo = TextFormatter.getInfo('PetalumaScript'); + equal((_a = petalumaFormatterInfo === null || petalumaFormatterInfo === void 0 ? void 0 : petalumaFormatterInfo.glyphs) === null || _a === void 0 ? void 0 : _a.C.advanceWidth, 623, 'PetalumaScript advanceWidth of C character is 623.'); + const formatterForPetalumaScript = TextFormatter.create({ family: 'PetalumaScript', size: '100px' }); + const metricsPetalumaScriptH = formatterForPetalumaScript.getGlyphMetrics('H'); + equal(metricsPetalumaScriptH.leftSideBearing, 37); + const formatterForRobotoSlab = TextFormatter.create({ family: 'Roboto Slab', size: '100px', style: 'italic' }); + const metricsRobotoSlabH = formatterForRobotoSlab.getGlyphMetrics('H'); + equal(metricsRobotoSlabH.advanceWidth, 1578); + equal(formatterForRobotoSlab.cacheKey, 'Roboto_Slab%75%normal%normal'); +} +VexFlowTests.register(TextFormatterTests); +export { TextFormatterTests }; diff --git a/build/esm/tests/textnote_tests.js b/build/esm/tests/textnote_tests.js new file mode 100644 index 0000000000..a0a0886704 --- /dev/null +++ b/build/esm/tests/textnote_tests.js @@ -0,0 +1,217 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Crescendo } from '../src/crescendo.js'; +import { Flow } from '../src/flow.js'; +import { Font } from '../src/font.js'; +import { Note } from '../src/note.js'; +import { Stave } from '../src/stave.js'; +import { TextNote } from '../src/textnote.js'; +const TextNoteTests = { + Start() { + QUnit.module('TextNote'); + const run = VexFlowTests.runTests; + run('TextNote Formatting', formatTextNotes); + run('TextNote Formatting 2', formatTextNotes2); + run('TextNote Superscript and Subscript', superscriptAndSubscript); + run('TextNote Formatting With Glyphs 0', formatTextGlyphs0); + run('TextNote Formatting With Glyphs 1', formatTextGlyphs1); + run('Crescendo', crescendo); + run('Text Dynamics', textDynamics); + }, +}; +function formatTextNotes(options) { + const f = VexFlowTests.makeFactory(options, 400, 200); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const voice1 = score.voice([ + f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: -1, duration: 'h' }) + .addModifier(f.Accidental({ type: 'b' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1), + f.StaveNote({ keys: ['d/4', 'e/4', 'f/4'], stem_direction: -1, duration: 'q' }), + f + .StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: 'q' }) + .addModifier(f.Accidental({ type: 'n' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1), + ]); + const voice2 = score.voice([ + f.TextNote({ text: 'Center Justification', duration: 'h' }).setJustification(TextNote.Justification.CENTER), + f.TextNote({ text: 'Left Line 1', duration: 'q' }).setLine(1), + f.TextNote({ text: 'Right', duration: 'q' }).setJustification(TextNote.Justification.RIGHT), + ]); + const formatter = f.Formatter(); + formatter.joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave); + f.draw(); + ok(true); +} +function formatTextNotes2(options) { + const f = VexFlowTests.makeFactory(options, 600, 200); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const voice1 = score.voice([ + f.StaveNote({ keys: ['g/4'], stem_direction: 1, duration: '16' }), + f.StaveNote({ keys: ['g/4'], stem_direction: 1, duration: '16' }), + f.StaveNote({ keys: ['g/4'], stem_direction: 1, duration: '16' }), + f.StaveNote({ keys: ['g/5'], stem_direction: -1, duration: '16' }), + f.StaveNote({ keys: ['g/5'], stem_direction: -1, duration: '16' }), + f.StaveNote({ keys: ['g/5'], stem_direction: -1, duration: '16' }), + f.StaveNote({ keys: ['g/5', 'a/5'], stem_direction: -1, duration: '16' }), + f.StaveNote({ keys: ['g/5', 'a/5'], stem_direction: -1, duration: '16' }), + f.StaveNote({ keys: ['g/5', 'a/5'], stem_direction: -1, duration: '16' }), + f.StaveNote({ keys: ['g/4', 'a/4'], stem_direction: 1, duration: '16' }), + f.StaveNote({ keys: ['g/4', 'a/4'], stem_direction: 1, duration: '16' }), + f.StaveNote({ keys: ['g/4', 'a/4'], stem_direction: 1, duration: '16' }), + f.StaveNote({ keys: ['g/4', 'a/4'], stem_direction: 1, duration: 'q' }), + ]); + const voice2 = score.voice([ + f.TextNote({ text: 'C', duration: '16' }).setJustification(TextNote.Justification.CENTER), + f.TextNote({ text: 'L', duration: '16' }), + f.TextNote({ text: 'R', duration: '16' }).setJustification(TextNote.Justification.RIGHT), + f.TextNote({ text: 'C', duration: '16' }).setJustification(TextNote.Justification.CENTER), + f.TextNote({ text: 'L', duration: '16' }), + f.TextNote({ text: 'R', duration: '16' }).setJustification(TextNote.Justification.RIGHT), + f.TextNote({ text: 'C', duration: '16' }).setJustification(TextNote.Justification.CENTER), + f.TextNote({ text: 'L', duration: '16' }), + f.TextNote({ text: 'R', duration: '16' }).setJustification(TextNote.Justification.RIGHT), + f.TextNote({ text: 'C', duration: '16' }).setJustification(TextNote.Justification.CENTER), + f.TextNote({ text: 'L', duration: '16' }), + f.TextNote({ text: 'R', duration: '16' }).setJustification(TextNote.Justification.RIGHT), + f.TextNote({ text: 'R', duration: 'q' }).setJustification(TextNote.Justification.RIGHT), + ]); + f.Formatter().joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave); + voice2.getTickables().forEach((note) => Note.plotMetrics(f.getContext(), note, 170)); + f.draw(); + ok(true); +} +function superscriptAndSubscript(options) { + const f = VexFlowTests.makeFactory(options, 600, 230); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const voice1 = score.voice([ + f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: 1, duration: 'h' }) + .addModifier(f.Accidental({ type: 'b' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1), + f.StaveNote({ keys: ['d/4', 'e/4', 'f/4'], stem_direction: 1, duration: 'q' }), + f + .StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: 1, duration: 'q' }) + .addModifier(f.Accidental({ type: 'n' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1), + ]); + const notes2 = [ + f.TextNote({ text: Flow.unicode.flat + 'I', superscript: '+5', duration: '8' }), + f.TextNote({ text: 'D' + Flow.unicode.sharp + '/F', duration: '4d', superscript: 'sus2' }), + f.TextNote({ text: 'ii', superscript: '6', subscript: '4', duration: '8' }), + f.TextNote({ text: 'C', superscript: Flow.unicode.triangle + '7', subscript: '', duration: '8' }), + f.TextNote({ text: 'vii', superscript: Flow.unicode['o-with-slash'] + '7', duration: '8' }), + f.TextNote({ text: 'V', superscript: '7', duration: '8' }), + ]; + equal(notes2[0].getText(), Flow.unicode.flat + 'I', 'TextNote.getText() return .text'); + const voice2 = score.voice(notes2); + voice2.getTickables().forEach((note) => { + const textNote = note; + textNote.setFont({ family: Font.SERIF, size: 15 }); + textNote.setLine(13); + textNote.setJustification(TextNote.Justification.LEFT); + }); + f.Formatter().joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave); + f.draw(); + ok(true); +} +function formatTextGlyphs0(options) { + const f = VexFlowTests.makeFactory(options, 600, 230); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const voice1 = score.voice([ + f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: -1, duration: 'h' }) + .addModifier(f.Accidental({ type: 'b' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1), + f.StaveNote({ keys: ['d/4', 'e/4', 'f/4'], stem_direction: -1, duration: '8' }), + f.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '8' }), + f.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '8' }), + f.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '8' }), + ]); + const voice2 = score.voice([ + f.TextNote({ text: 'Center', duration: '8' }).setJustification(TextNote.Justification.CENTER), + f.TextNote({ glyph: 'f', duration: '8' }), + f.TextNote({ glyph: 'p', duration: '8' }), + f.TextNote({ glyph: 'm', duration: '8' }), + f.TextNote({ glyph: 'z', duration: '8' }), + f.TextNote({ glyph: 'mordent_upper', duration: '16' }), + f.TextNote({ glyph: 'mordent_lower', duration: '16' }), + f.TextNote({ glyph: 'segno', duration: '8' }), + f.TextNote({ glyph: 'coda', duration: '8' }), + ]); + voice2.getTickables().forEach((n) => n.setJustification(TextNote.Justification.CENTER)); + f.Formatter().joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave); + f.draw(); + ok(true); +} +function formatTextGlyphs1(options) { + const f = VexFlowTests.makeFactory(options, 600, 230); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const voice1 = score.voice([ + f + .StaveNote({ keys: ['c/4', 'e/4', 'a/4'], stem_direction: -1, duration: 'h' }) + .addModifier(f.Accidental({ type: 'b' }), 0) + .addModifier(f.Accidental({ type: '#' }), 1), + f.StaveNote({ keys: ['d/4', 'e/4', 'f/4'], stem_direction: -1, duration: '8' }), + f.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '8' }), + f.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '8' }), + f.StaveNote({ keys: ['c/4', 'f/4', 'a/4'], stem_direction: -1, duration: '8' }), + ]); + const voice2 = score.voice([ + f.TextNote({ glyph: 'turn', duration: '16' }), + f.TextNote({ glyph: 'turn_inverted', duration: '16' }), + f.TextNote({ glyph: 'pedal_open', duration: '8' }).setLine(10), + f.TextNote({ glyph: 'pedal_close', duration: '8' }).setLine(10), + f.TextNote({ glyph: 'caesura_curved', duration: '8' }).setLine(3), + f.TextNote({ glyph: 'caesura_straight', duration: '8' }).setLine(3), + f.TextNote({ glyph: 'breath', duration: '8' }).setLine(2), + f.TextNote({ glyph: 'tick', duration: '8' }).setLine(3), + f.TextNote({ glyph: 'tr', duration: '8', smooth: true }).setJustification(TextNote.Justification.CENTER), + ]); + voice2.getTickables().forEach((n) => n.setJustification(TextNote.Justification.CENTER)); + f.Formatter().joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave); + f.draw(); + ok(true); +} +function crescendo(options) { + const f = VexFlowTests.makeFactory(options, 600, 230); + const stave = f.Stave({ y: 40 }); + const score = f.EasyScore(); + const voice = score.voice([ + f.TextNote({ glyph: 'p', duration: '16' }), + new Crescendo({ duration: '4d' }).setLine(0).setHeight(25).setStave(stave), + f.TextNote({ glyph: 'f', duration: '16' }), + new Crescendo({ duration: '4' }).setLine(5).setStave(stave), + new Crescendo({ duration: '4' }).setLine(10).setDecrescendo(true).setHeight(5).setStave(stave), + ]); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true); +} +function textDynamics(options) { + const f = VexFlowTests.makeFactory(options, 600, 230); + const score = f.EasyScore(); + const voice = score.voice([ + f.TextDynamics({ text: 'sfz', duration: '4' }), + f.TextDynamics({ text: 'rfz', duration: '4' }), + f.TextDynamics({ text: 'mp', duration: '4' }), + f.TextDynamics({ text: 'ppp', duration: '4' }), + f.TextDynamics({ text: 'fff', duration: '4' }), + f.TextDynamics({ text: 'mf', duration: '4' }), + f.TextDynamics({ text: 'sff', duration: '4' }), + ], { time: '7/4' }); + const formatter = f.Formatter(); + formatter.joinVoices([voice]); + const width = formatter.preCalculateMinTotalWidth([voice]); + formatter.format([voice]); + const stave = f.Stave({ y: 40, width: width + Stave.defaultPadding }); + stave.draw(); + voice.draw(f.getContext(), stave); + ok(true); +} +VexFlowTests.register(TextNoteTests); +export { TextNoteTests }; diff --git a/build/esm/tests/threevoice_tests.js b/build/esm/tests/threevoice_tests.js new file mode 100644 index 0000000000..9fe6ead737 --- /dev/null +++ b/build/esm/tests/threevoice_tests.js @@ -0,0 +1,132 @@ +import { concat, VexFlowTests } from './vexflow_test_helpers.js'; +import { Beam } from '../src/beam.js'; +const ThreeVoicesTests = { + Start() { + QUnit.module('Three Voice Rests'); + const run = VexFlowTests.runTests; + run('Three Voices - #1', threeVoices1); + run('Three Voices - #2 Complex', threeVoices2); + run('Three Voices - #3', threeVoices3); + run('Auto Adjust Rest Positions - Two Voices', autoRestTwoVoices); + run('Auto Adjust Rest Positions - Three Voices #1', autoRestThreeVoices1); + run('Auto Adjust Rest Positions - Three Voices #2', autoRestThreeVoices2); + }, +}; +function createThreeVoicesTest(noteGroup1, noteGroup2, noteGroup3, setup) { + return (options) => { + const factory = VexFlowTests.makeFactory(options, 600, 200); + const stave = factory.Stave().addClef('treble').addTimeSignature('4/4'); + const score = factory.EasyScore(); + const noteGroups = [noteGroup1, noteGroup2, noteGroup3].map((args) => score.notes(...args)); + const voices = noteGroups.map((notes) => score.voice(notes)); + setup(factory, voices); + const beams = [ + Beam.applyAndGetBeams(voices[0], +1), + Beam.applyAndGetBeams(voices[1], -1), + Beam.applyAndGetBeams(voices[2], -1), + ].reduce(concat); + factory.Formatter().joinVoices(voices).formatToStave(voices, stave); + factory.draw(); + for (let i = 0; i < beams.length; i++) { + beams[i].setContext(factory.getContext()).draw(); + } + ok(true); + }; +} +const threeVoices1 = createThreeVoicesTest(['e5/2, e5', { stem: 'up' }], ['(d4 a4 d#5)/8, b4, (d4 a4 c5), b4, (d4 a4 c5), b4, (d4 a4 c5), b4', { stem: 'down' }], ['b3/4, e3, f3, a3', { stem: 'down' }], (f, voices) => { + voices[0].getTickables()[0].addModifier(f.Fingering({ number: '0', position: 'left' }), 0); + voices[1] + .getTickables()[0] + .addModifier(f.Fingering({ number: '0', position: 'left' }), 0) + .addModifier(f.Fingering({ number: '4', position: 'left' }), 1); +}); +const threeVoices2 = createThreeVoicesTest(['(a4 e5)/16, e5, e5, e5, e5/8, e5, e5/2', { stem: 'up' }], ['(d4 d#5)/16, (b4 c5), d5, e5, (d4 a4 c5)/8, b4, (d4 a4 c5), b4, (d4 a4 c5), b4', { stem: 'down' }], ['b3/8, b3, e3/4, f3, a3', { stem: 'down' }], (f, voices) => { + voices[0] + .getTickables()[0] + .addModifier(f.Fingering({ number: '2', position: 'left' }), 0) + .addModifier(f.Fingering({ number: '0', position: 'above' }), 1); + voices[1] + .getTickables()[0] + .addModifier(f.Fingering({ number: '0', position: 'left' }), 0) + .addModifier(f.Fingering({ number: '4', position: 'left' }), 1); +}); +const threeVoices3 = createThreeVoicesTest(['(g4 e5)/4, e5, (g4 e5)/2', { stem: 'up' }], ['c#5/4, b4/8, b4/8/r, a4/4., g4/8', { stem: 'down' }], ['c4/4, b3, a3, g3', { stem: 'down' }], (f, voices) => { + voices[0] + .getTickables()[0] + .addModifier(f.Fingering({ number: '0', position: 'left' }), 0) + .addModifier(f.Fingering({ number: '0', position: 'left' }), 1); + voices[1].getTickables()[0].addModifier(f.Fingering({ number: '1', position: 'left' }), 0); + voices[2].getTickables()[0].addModifier(f.Fingering({ number: '3', position: 'left' }), 0); +}); +function autoRestTwoVoices(options) { + const f = VexFlowTests.makeFactory(options, 900, 200); + const score = f.EasyScore(); + let x = 10; + let beams = []; + function createMeasure(measureTitle, width, align_rests) { + const stave = f.Stave({ x: x, y: 50, width: width }).setBegBarType(1); + x += width; + const noteArrays = [ + score.notes('b4/8/r, e5/16, b4/r, b4/8/r, e5/16, b4/r, b4/8/r, d5/16, b4/r, e5/4', { stem: 'up' }), + score.notes('c5/16, c4, b4/r, d4, e4, f4, b4/r, g4, g4[stem="up"], a4[stem="up"], b4/r, b4[stem="up"], e4/4', { + stem: 'down', + }), + [f.TextNote({ text: measureTitle, line: -1, duration: '1', smooth: true })], + ]; + const voices = noteArrays.map((notes) => score.voice(notes)); + beams = beams.concat(Beam.applyAndGetBeams(voices[0], 1)).concat(Beam.applyAndGetBeams(voices[1], -1)); + f.Formatter().joinVoices(voices).formatToStave(voices, stave, { align_rests }); + } + createMeasure('Default Rest Positions', 400, false); + createMeasure('Rests Repositioned To Avoid Collisions', 400, true); + f.draw(); + for (let i = 0; i < beams.length; i++) { + beams[i].setContext(f.getContext()).draw(); + } + ok(true, 'Auto Adjust Rests - Two Voices'); +} +function autoRestThreeVoices1(options) { + const f = VexFlowTests.makeFactory(options, 850, 200); + const score = f.EasyScore(); + let x = 10; + function createMeasure(measureTitle, width, align_rests) { + const stave = f.Stave({ x: x, y: 50, width: width }).setBegBarType(1); + const voices = [ + score.voice(score.notes('b4/4/r, e5, e5/r, e5/r, e5, e5, e5, e5/r', { stem: 'up' }), { time: '8/4' }), + score.voice(score.notes('b4/4/r, b4/r, b4/r, b4, b4/r, b4/r, b4, b4', { stem: 'down' }), { time: '8/4' }), + score.voice(score.notes('e4/4/r, e4/r, f4, b4/r, g4, c4, e4/r, c4', { stem: 'down' }), { time: '8/4' }), + score.voice([ + f.TextNote({ text: measureTitle, duration: '1', line: -1, smooth: true }), + f.TextNote({ text: '', duration: '1', line: -1, smooth: true }), + ], { time: '8/4' }), + ]; + f.Formatter().joinVoices(voices).formatToStave(voices, stave, { align_rests }); + x += width; + } + createMeasure('Default Rest Positions', 400, false); + createMeasure('Rests Repositioned To Avoid Collisions', 400, true); + f.draw(); + ok(true); +} +function autoRestThreeVoices2(options) { + const f = VexFlowTests.makeFactory(options, 850, 200); + const score = f.EasyScore(); + let x = 10; + function createMeasure(measureTitle, width, align_rests) { + const stave = f.Stave({ x: x, y: 50, width: width }).setBegBarType(1); + const voices = [ + score.voice(score.notes('b4/16/r, e5, e5/r, e5/r, e5, e5, e5, e5/r'), { time: '2/4' }), + score.voice(score.notes('b4/16/r, b4/r, b4/r, b4, b4/r, b4/r, b4, b4'), { time: '2/4' }), + score.voice(score.notes('e4/16/r, e4/r, f4, b4/r, g4, c4, e4/r, c4'), { time: '2/4' }), + score.voice([f.TextNote({ text: measureTitle, duration: 'h', line: -1, smooth: true })], { time: '2/4' }), + ]; + f.Formatter().joinVoices(voices).formatToStave(voices, stave, { align_rests }); + x += width; + } + createMeasure('Default Rest Positions', 400, false); + createMeasure('Rests Repositioned To Avoid Collisions', 400, true); + f.draw(); + ok(true); +} +VexFlowTests.register(ThreeVoicesTests); +export { ThreeVoicesTests }; diff --git a/build/esm/tests/tickcontext_tests.js b/build/esm/tests/tickcontext_tests.js new file mode 100644 index 0000000000..e9d325be9d --- /dev/null +++ b/build/esm/tests/tickcontext_tests.js @@ -0,0 +1,36 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Flow } from '../src/flow.js'; +import { TickContext } from '../src/tickcontext.js'; +import { MockTickable } from './mocks.js'; +const TickContextTests = { + Start() { + QUnit.module('TickContext'); + test('Current Tick Test', currentTick); + test('Tracking Test', tracking); + }, +}; +function currentTick() { + const tc = new TickContext(); + equal(tc.getCurrentTick().value(), 0, 'New tick context has no ticks'); +} +function tracking() { + const BEAT = (1 * Flow.RESOLUTION) / 4; + const tickables = [ + new MockTickable().setTicks(BEAT).setWidth(10), + new MockTickable().setTicks(BEAT * 2).setWidth(20), + new MockTickable().setTicks(BEAT).setWidth(30), + ]; + const tc = new TickContext(); + tc.setPadding(0); + tc.addTickable(tickables[0]); + equal(tc.getMaxTicks().value(), BEAT); + tc.addTickable(tickables[1]); + equal(tc.getMaxTicks().value(), BEAT * 2); + tc.addTickable(tickables[2]); + equal(tc.getMaxTicks().value(), BEAT * 2); + equal(tc.getWidth(), 0); + tc.preFormat(); + equal(tc.getWidth(), 30); +} +VexFlowTests.register(TickContextTests); +export { TickContextTests }; diff --git a/build/esm/tests/timesignature_tests.js b/build/esm/tests/timesignature_tests.js new file mode 100644 index 0000000000..1ab8ed8de9 --- /dev/null +++ b/build/esm/tests/timesignature_tests.js @@ -0,0 +1,134 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Stave } from '../src/stave.js'; +import { StaveConnector } from '../src/staveconnector.js'; +import { TimeSignature } from '../src/timesignature.js'; +const TimeSignatureTests = { + Start() { + QUnit.module('TimeSignature'); + test('Time Signature Parser', parser); + const run = VexFlowTests.runTests; + run('Basic Time Signatures', basic); + run('Big Signature Test', big); + run('Additive Signature Test', additive); + run('Alternating Signature Test', alternating); + run('Interchangeable Signature Test', interchangeable); + run('Aggregate Signature Test', agregate); + run('Complex Signature Test', complex); + run('Time Signature multiple staves alignment test', multiple); + run('Time Signature Change Test', change); + }, +}; +function parser() { + const timeSig = new TimeSignature(); + const mustFail = ['asdf', '123/', '/10', '/', '4567', 'C+', '1+', '+1', '(3+', '+3)', '()', '(+)']; + mustFail.forEach((invalidString) => { + throws(() => timeSig.parseTimeSpec(invalidString), /BadTimeSignature/); + }); + const mustPass = ['4/4', '10/12', '1/8', '1234567890/1234567890', 'C', 'C|', '+']; + mustPass.forEach((validString) => timeSig.parseTimeSpec(validString)); + ok(true, 'all pass'); +} +function basic(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 600, 120); + new Stave(10, 10, 500) + .addTimeSignature('2/2') + .addTimeSignature('3/4') + .addTimeSignature('4/4') + .addTimeSignature('6/8') + .addTimeSignature('C') + .addTimeSignature('C|') + .addEndTimeSignature('2/2') + .addEndTimeSignature('3/4') + .addEndTimeSignature('4/4') + .addEndClef('treble') + .addEndTimeSignature('6/8') + .addEndTimeSignature('C') + .addEndTimeSignature('C|') + .setContext(ctx) + .draw(); + ok(true, 'all pass'); +} +function big(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 120); + new Stave(10, 10, 300) + .addTimeSignature('12/8') + .addTimeSignature('7/16') + .addTimeSignature('1234567/890') + .addTimeSignature('987/654321') + .setContext(ctx) + .draw(); + ok(true, 'all pass'); +} +function additive(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 120); + new Stave(10, 10, 300).addTimeSignature('2+3+2/8').setContext(ctx).draw(); + ok(true, 'all pass'); +} +function alternating(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 120); + new Stave(10, 10, 300).addTimeSignature('6/8').addTimeSignature('+').addTimeSignature('3/4').setContext(ctx).draw(); + ok(true, 'all pass'); +} +function interchangeable(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 120); + new Stave(10, 10, 300).addTimeSignature('3/4').addTimeSignature('-').addTimeSignature('2/4').setContext(ctx).draw(); + ok(true, 'all pass'); +} +function agregate(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 120); + new Stave(10, 10, 300) + .addTimeSignature('2/4') + .addTimeSignature('+') + .addTimeSignature('3/8') + .addTimeSignature('+') + .addTimeSignature('5/4') + .setContext(ctx) + .draw(); + ok(true, 'all pass'); +} +function complex(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 120); + new Stave(10, 10, 300) + .addTimeSignature('(2+3)/16') + .addTimeSignature('+') + .addTimeSignature('3/8') + .setContext(ctx) + .draw(); + ok(true, 'all pass'); +} +function multiple(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 400, 350); + const stave1LineConfig = [false, false, true, false, false].map((visible) => ({ visible })); + const stave1 = new Stave(15, 0, 300) + .setConfigForLines(stave1LineConfig) + .addClef('percussion') + .addTimeSignature('4/4', 25) + .setContext(ctx) + .draw(); + const stave2 = new Stave(15, 110, 300).addClef('treble').addTimeSignature('4/4').setContext(ctx).draw(); + const stave3 = new Stave(15, 220, 300).addClef('bass').addTimeSignature('4/4').setContext(ctx).draw(); + new StaveConnector(stave1, stave2).setType('single').setContext(ctx).draw(); + new StaveConnector(stave2, stave3).setType('single').setContext(ctx).draw(); + new StaveConnector(stave2, stave3).setType('brace').setContext(ctx).draw(); + ok(true, 'all pass'); +} +function change(options) { + const f = VexFlowTests.makeFactory(options, 900); + const stave = f.Stave({ x: 0, y: 0 }).addClef('treble').addTimeSignature('C|'); + const tickables = [ + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble' }), + f.TimeSigNote({ time: '3/4' }), + f.StaveNote({ keys: ['d/4'], duration: '4', clef: 'alto' }), + f.StaveNote({ keys: ['b/3'], duration: '4r', clef: 'alto' }), + f.TimeSigNote({ time: 'C' }), + f.StaveNote({ keys: ['c/3', 'e/3', 'g/3'], duration: '4', clef: 'bass' }), + f.TimeSigNote({ time: '9/8' }), + f.StaveNote({ keys: ['c/4'], duration: '4', clef: 'treble' }), + ]; + const voice = f.Voice().setStrict(false).addTickables(tickables); + f.Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'all pass'); +} +VexFlowTests.register(TimeSignatureTests); +export { TimeSignatureTests }; diff --git a/build/esm/tests/tremolo_tests.js b/build/esm/tests/tremolo_tests.js new file mode 100644 index 0000000000..23be8a1fc5 --- /dev/null +++ b/build/esm/tests/tremolo_tests.js @@ -0,0 +1,75 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Barline } from '../src/stavebarline.js'; +import { Tremolo } from '../src/tremolo.js'; +const TremoloTests = { + Start() { + QUnit.module('Tremolo'); + const run = VexFlowTests.runTests; + run('Tremolo - Basic', tremoloBasic); + run('Tremolo - Big', tremoloBig); + }, +}; +function tremoloBasic(options) { + const f = VexFlowTests.makeFactory(options, 600, 200); + const score = f.EasyScore(); + const stave1 = f.Stave({ width: 250 }).setEndBarType(Barline.type.DOUBLE); + const notes1 = score.notes('e4/4, e4, e4, e4', { stem: 'up' }); + notes1[0].addModifier(new Tremolo(3), 0); + notes1[1].addModifier(new Tremolo(2), 0); + notes1[2].addModifier(new Tremolo(1), 0); + const voice1 = score.voice(notes1); + f.Formatter().joinVoices([voice1]).formatToStave([voice1], stave1); + const stave2 = f + .Stave({ x: stave1.getWidth() + stave1.getX(), y: stave1.getY(), width: 300 }) + .setEndBarType(Barline.type.DOUBLE); + const notes2 = score.notes('e5/4, e5, e5, e5', { stem: 'down' }); + notes2[1].addModifier(new Tremolo(1), 0); + notes2[2].addModifier(new Tremolo(2), 0); + notes2[3].addModifier(new Tremolo(3), 0); + const voice2 = score.voice(notes2); + f.Formatter().joinVoices([voice2]).formatToStave([voice2], stave2); + f.draw(); + ok(true, 'Tremolo - Basic'); +} +function tremoloBig(options) { + const f = VexFlowTests.makeFactory(options, 600, 200); + const score = f.EasyScore(); + const stave1 = f.Stave({ width: 250 }).setEndBarType(Barline.type.DOUBLE); + const notes1 = score.notes('e4/4, e4, e4, e4', { stem: 'up' }); + const tremolo1 = new Tremolo(3); + tremolo1.extra_stroke_scale = 1.7; + tremolo1.y_spacing_scale = 1.5; + const tremolo2 = new Tremolo(2); + tremolo2.extra_stroke_scale = 1.7; + tremolo2.y_spacing_scale = 1.5; + const tremolo3 = new Tremolo(1); + tremolo3.extra_stroke_scale = 1.7; + tremolo3.y_spacing_scale = 1.5; + notes1[0].addModifier(tremolo1, 0); + notes1[1].addModifier(tremolo2, 0); + notes1[2].addModifier(tremolo3, 0); + const voice1 = score.voice(notes1); + f.Formatter().joinVoices([voice1]).formatToStave([voice1], stave1); + const stave2 = f + .Stave({ x: stave1.getWidth() + stave1.getX(), y: stave1.getY(), width: 300 }) + .setEndBarType(Barline.type.DOUBLE); + const notes2 = score.notes('e5/4, e5, e5, e5', { stem: 'down' }); + const tremolo4 = new Tremolo(1); + tremolo4.extra_stroke_scale = 1.7; + tremolo4.y_spacing_scale = 1.5; + const tremolo5 = new Tremolo(2); + tremolo5.extra_stroke_scale = 1.7; + tremolo5.y_spacing_scale = 1.5; + const tremolo6 = new Tremolo(3); + tremolo6.extra_stroke_scale = 1.7; + tremolo6.y_spacing_scale = 1.5; + notes2[1].addModifier(tremolo4, 0); + notes2[2].addModifier(tremolo5, 0); + notes2[3].addModifier(tremolo6, 0); + const voice2 = score.voice(notes2); + f.Formatter().joinVoices([voice2]).formatToStave([voice2], stave2); + f.draw(); + ok(true, 'Tremolo - Big'); +} +VexFlowTests.register(TremoloTests); +export { TremoloTests }; diff --git a/build/esm/tests/tuning_tests.js b/build/esm/tests/tuning_tests.js new file mode 100644 index 0000000000..b386ba8a60 --- /dev/null +++ b/build/esm/tests/tuning_tests.js @@ -0,0 +1,56 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Tuning } from '../src/tuning.js'; +const TuningTests = { + Start() { + QUnit.module('Tuning'); + test('Standard Tuning', standard); + test('Standard Banjo Tuning', banjo); + test('Return note for fret', noteForFret); + }, +}; +function checkStandard(tuning) { + throws(() => tuning.getValueForString(0), /BadArguments/, 'String 0'); + throws(() => tuning.getValueForString(9), /BadArguments/, 'String 9'); + equal(tuning.getValueForString(6), 40, 'Low E string'); + equal(tuning.getValueForString(5), 45, 'A string'); + equal(tuning.getValueForString(4), 50, 'D string'); + equal(tuning.getValueForString(3), 55, 'G string'); + equal(tuning.getValueForString(2), 59, 'B string'); + equal(tuning.getValueForString(1), 64, 'High E string'); +} +function checkStandardBanjo(tuning) { + throws(() => tuning.getValueForString(0), /BadArguments/, 'String 0'); + throws(() => tuning.getValueForString(6), /BadArguments/, 'String 6'); + equal(tuning.getValueForString(5), 67, 'High G string'); + equal(tuning.getValueForString(4), 50, 'D string'); + equal(tuning.getValueForString(3), 55, 'G string'); + equal(tuning.getValueForString(2), 59, 'B string'); + equal(tuning.getValueForString(1), 62, 'High D string'); +} +function standard() { + expect(16); + const tuning = new Tuning(); + checkStandard(tuning); + tuning.setTuning('standard'); + checkStandard(tuning); +} +function banjo() { + expect(7); + const tuning = new Tuning(); + tuning.setTuning('standardBanjo'); + checkStandardBanjo(tuning); +} +function noteForFret() { + expect(8); + const tuning = new Tuning('E/5,B/4,G/4,D/4,A/3,E/3'); + throws(() => tuning.getNoteForFret(-1, 1), /BadArguments/, 'Fret = -1'); + throws(() => tuning.getNoteForFret(1, -1), /BadArguments/, 'String = -1'); + equal(tuning.getNoteForFret(0, 1), 'E/5', 'High E string'); + equal(tuning.getNoteForFret(5, 1), 'A/5', 'High E string, fret 5'); + equal(tuning.getNoteForFret(0, 2), 'B/4', 'B string'); + equal(tuning.getNoteForFret(0, 3), 'G/4', 'G string'); + equal(tuning.getNoteForFret(12, 2), 'B/5', 'B string, fret 12'); + equal(tuning.getNoteForFret(0, 6), 'E/3', 'Low E string'); +} +VexFlowTests.register(TuningTests); +export { TuningTests }; diff --git a/build/esm/tests/tuplet_tests.js b/build/esm/tests/tuplet_tests.js new file mode 100644 index 0000000000..d8aea22e7b --- /dev/null +++ b/build/esm/tests/tuplet_tests.js @@ -0,0 +1,450 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Dot } from '../src/dot.js'; +import { Formatter } from '../src/formatter.js'; +import { Stem } from '../src/stem.js'; +import { Tuplet } from '../src/tuplet.js'; +const TupletTests = { + Start() { + QUnit.module('Tuplet'); + const run = VexFlowTests.runTests; + run('Simple Tuplet', simple); + run('Beamed Tuplet', beamed); + run('Ratioed Tuplet', ratio); + run('Bottom Tuplet', bottom); + run('Bottom Ratioed Tuplet', bottomRatio); + run('Awkward Tuplet', awkward); + run('Complex Tuplet', complex); + run('Mixed Stem Direction Tuplet', mixedTop); + run('Mixed Stem Direction Bottom Tuplet', mixedBottom); + run('Nested Tuplets', nested); + run('Single Tuplets', single); + }, +}; +const set = (key) => (value) => (object) => { + object[key] = value; + return object; +}; +const setStemDirection = set('stem_direction'); +const setStemUp = setStemDirection(Stem.UP); +const setStemDown = setStemDirection(Stem.DOWN); +const setDurationToQuarterNote = set('duration')('4'); +function simple(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave({ x: 10, y: 10, width: 350 }).addTimeSignature('3/4'); + const notes = [ + { keys: ['g/4'], duration: '4' }, + { keys: ['a/4'], duration: '4' }, + { keys: ['b/4'], duration: '4' }, + { keys: ['b/4'], duration: '8' }, + { keys: ['a/4'], duration: '8' }, + { keys: ['g/4'], duration: '8' }, + ] + .map(setStemUp) + .map(f.StaveNote.bind(f)); + f.Tuplet({ notes: notes.slice(0, 3) }); + f.Tuplet({ notes: notes.slice(3, 6) }); + const voice = f + .Voice({ time: { num_beats: 3, beat_value: 4 } }) + .setStrict(true) + .addTickables(notes); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Simple Test'); +} +function beamed(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave({ x: 10, y: 10, width: 350 }).addTimeSignature('3/8'); + const notes = [ + { keys: ['b/4'], duration: '16' }, + { keys: ['a/4'], duration: '16' }, + { keys: ['g/4'], duration: '16' }, + { keys: ['a/4'], duration: '8' }, + { keys: ['f/4'], duration: '8' }, + { keys: ['a/4'], duration: '8' }, + { keys: ['f/4'], duration: '8' }, + { keys: ['a/4'], duration: '8' }, + { keys: ['f/4'], duration: '8' }, + { keys: ['g/4'], duration: '8' }, + ] + .map(setStemUp) + .map(f.StaveNote.bind(f)); + f.Beam({ notes: notes.slice(0, 3) }); + f.Beam({ notes: notes.slice(3, 10) }); + f.Tuplet({ notes: notes.slice(0, 3) }); + f.Tuplet({ notes: notes.slice(3, 10) }); + const voice = f + .Voice({ time: { num_beats: 3, beat_value: 8 } }) + .setStrict(true) + .addTickables(notes); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Beamed Test'); +} +function ratio(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave({ x: 10, y: 10, width: 350 }).addTimeSignature('4/4'); + const notes = [ + { keys: ['f/4'], duration: '4' }, + { keys: ['a/4'], duration: '4' }, + { keys: ['b/4'], duration: '4' }, + { keys: ['g/4'], duration: '8' }, + { keys: ['e/4'], duration: '8' }, + { keys: ['g/4'], duration: '8' }, + ] + .map(setStemUp) + .map(f.StaveNote.bind(f)); + f.Beam({ + notes: notes.slice(3, 6), + }); + f.Tuplet({ + notes: notes.slice(0, 3), + options: { + ratioed: true, + }, + }); + f.Tuplet({ + notes: notes.slice(3, 6), + options: { + ratioed: true, + notes_occupied: 4, + }, + }); + const voice = f.Voice().setStrict(true).addTickables(notes); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Ratioed Test'); +} +function bottom(options) { + const f = VexFlowTests.makeFactory(options, 350, 160); + const stave = f.Stave({ x: 10, y: 10 }).addTimeSignature('3/4'); + const notes = [ + { keys: ['f/4'], duration: '4' }, + { keys: ['c/4'], duration: '4' }, + { keys: ['g/4'], duration: '4' }, + { keys: ['d/5'], duration: '8' }, + { keys: ['g/3'], duration: '8' }, + { keys: ['b/4'], duration: '8' }, + ] + .map(setStemDown) + .map(f.StaveNote.bind(f)); + f.Beam({ + notes: notes.slice(3, 6), + }); + f.Tuplet({ + notes: notes.slice(0, 3), + options: { location: Tuplet.LOCATION_BOTTOM }, + }); + f.Tuplet({ + notes: notes.slice(3, 6), + options: { location: Tuplet.LOCATION_BOTTOM }, + }); + const voice = f + .Voice({ time: { num_beats: 3, beat_value: 4 } }) + .setStrict(true) + .addTickables(notes); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Bottom Test'); +} +function bottomRatio(options) { + const f = VexFlowTests.makeFactory(options, 350, 160); + const stave = f.Stave({ x: 10, y: 10 }).addTimeSignature('5/8'); + const notes = [ + { keys: ['f/4'], duration: '4' }, + { keys: ['c/4'], duration: '4' }, + { keys: ['d/4'], duration: '4' }, + { keys: ['d/5'], duration: '8' }, + { keys: ['g/5'], duration: '8' }, + { keys: ['b/4'], duration: '8' }, + ] + .map(setStemDown) + .map(f.StaveNote.bind(f)); + f.Beam({ + notes: notes.slice(3, 6), + }); + f.Tuplet({ + notes: notes.slice(0, 3), + options: { + location: Tuplet.LOCATION_BOTTOM, + ratioed: true, + }, + }); + f.Tuplet({ + notes: notes.slice(3, 6), + options: { + location: Tuplet.LOCATION_BOTTOM, + notes_occupied: 1, + }, + }); + const voice = f + .Voice({ time: { num_beats: 5, beat_value: 8 } }) + .setStrict(true) + .addTickables(notes); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Bottom Ratioed Test'); +} +function awkward(options) { + const f = VexFlowTests.makeFactory(options, 370, 160); + const stave = f.Stave({ x: 10, y: 10 }); + const notes = [ + { keys: ['g/4'], duration: '16' }, + { keys: ['b/4'], duration: '16' }, + { keys: ['a/4'], duration: '16' }, + { keys: ['a/4'], duration: '16' }, + { keys: ['g/4'], duration: '16' }, + { keys: ['f/4'], duration: '16' }, + { keys: ['e/4'], duration: '16' }, + { keys: ['c/4'], duration: '16' }, + { keys: ['g/4'], duration: '16' }, + { keys: ['a/4'], duration: '16' }, + { keys: ['f/4'], duration: '16' }, + { keys: ['e/4'], duration: '16' }, + { keys: ['c/4'], duration: '8' }, + { keys: ['d/4'], duration: '8' }, + { keys: ['e/4'], duration: '8' }, + ] + .map(setStemUp) + .map(f.StaveNote.bind(f)); + f.Beam({ notes: notes.slice(0, 12) }); + f.Tuplet({ + notes: notes.slice(0, 12), + options: { + notes_occupied: 142, + ratioed: true, + }, + }); + f.Tuplet({ + notes: notes.slice(12, 15), + options: { + ratioed: true, + }, + }).setBracketed(true); + const voice = f.Voice().setStrict(false).addTickables(notes); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Awkward Test'); +} +function complex(options) { + const f = VexFlowTests.makeFactory(options, 600); + const stave = f.Stave({ x: 10, y: 10 }).addTimeSignature('4/4'); + const notes1 = [ + { keys: ['b/4'], duration: '8d' }, + { keys: ['a/4'], duration: '16' }, + { keys: ['g/4'], duration: '8' }, + { keys: ['a/4'], duration: '16' }, + { keys: ['b/4'], duration: '16r' }, + { keys: ['g/4'], duration: '32' }, + { keys: ['f/4'], duration: '32' }, + { keys: ['g/4'], duration: '32' }, + { keys: ['f/4'], duration: '32' }, + { keys: ['a/4'], duration: '16' }, + { keys: ['f/4'], duration: '8' }, + { keys: ['b/4'], duration: '8' }, + { keys: ['a/4'], duration: '8' }, + { keys: ['g/4'], duration: '8' }, + { keys: ['b/4'], duration: '8' }, + { keys: ['a/4'], duration: '8' }, + ] + .map(setStemUp) + .map(f.StaveNote.bind(f)); + Dot.buildAndAttach([notes1[0]], { all: true }); + const notes2 = [{ keys: ['c/4'] }, { keys: ['c/4'] }, { keys: ['c/4'] }, { keys: ['c/4'] }] + .map(setDurationToQuarterNote) + .map(setStemDown) + .map(f.StaveNote.bind(f)); + f.Beam({ notes: notes1.slice(0, 3) }); + f.Beam({ notes: notes1.slice(5, 9) }); + f.Beam({ notes: notes1.slice(11, 16) }); + f.Tuplet({ + notes: notes1.slice(0, 3), + }); + f.Tuplet({ + notes: notes1.slice(3, 11), + options: { + num_notes: 7, + notes_occupied: 4, + ratioed: false, + }, + }); + f.Tuplet({ + notes: notes1.slice(11, 16), + options: { + notes_occupied: 4, + }, + }); + const voice1 = f.Voice().setStrict(true).addTickables(notes1); + const voice2 = f.Voice().setStrict(true).addTickables(notes2); + new Formatter().joinVoices([voice1, voice2]).formatToStave([voice1, voice2], stave); + f.draw(); + ok(true, 'Complex Test'); +} +function mixedTop(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave({ x: 10, y: 10 }); + const notes = [ + { keys: ['a/4'], stem_direction: 1 }, + { keys: ['c/6'], stem_direction: -1 }, + { keys: ['a/4'], stem_direction: 1 }, + { keys: ['f/5'], stem_direction: 1 }, + { keys: ['a/4'], stem_direction: -1 }, + { keys: ['c/6'], stem_direction: -1 }, + ] + .map(setDurationToQuarterNote) + .map(f.StaveNote.bind(f)); + f.Tuplet({ + notes: notes.slice(0, 2), + options: { + notes_occupied: 3, + }, + }); + f.Tuplet({ + notes: notes.slice(2, 4), + options: { + notes_occupied: 3, + }, + }); + f.Tuplet({ + notes: notes.slice(4, 6), + options: { + notes_occupied: 3, + }, + }); + const voice = f.Voice().setStrict(false).addTickables(notes); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Mixed Stem Direction Tuplet'); +} +function mixedBottom(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave({ x: 10, y: 10 }); + const notes = [ + { keys: ['f/3'], stem_direction: 1 }, + { keys: ['a/5'], stem_direction: -1 }, + { keys: ['a/4'], stem_direction: 1 }, + { keys: ['f/3'], stem_direction: 1 }, + { keys: ['a/4'], stem_direction: -1 }, + { keys: ['c/4'], stem_direction: -1 }, + ] + .map(setDurationToQuarterNote) + .map(f.StaveNote.bind(f)); + f.Tuplet({ + notes: notes.slice(0, 2), + options: { + notes_occupied: 3, + }, + }); + f.Tuplet({ + notes: notes.slice(2, 4), + options: { + notes_occupied: 3, + }, + }); + f.Tuplet({ + notes: notes.slice(4, 6), + options: { + notes_occupied: 3, + }, + }); + const voice = f.Voice().setStrict(false).addTickables(notes); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Mixed Stem Direction Bottom Tuplet'); +} +function nested(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave({ x: 10, y: 10 }).addTimeSignature('4/4'); + const notes = [ + { keys: ['b/4'], duration: '4' }, + { keys: ['a/4'], duration: '4' }, + { keys: ['g/4'], duration: '16' }, + { keys: ['a/4'], duration: '16' }, + { keys: ['f/4'], duration: '16' }, + { keys: ['a/4'], duration: '16' }, + { keys: ['g/4'], duration: '16' }, + { keys: ['b/4'], duration: '2' }, + ] + .map(setStemUp) + .map(f.StaveNote.bind(f)); + f.Beam({ + notes: notes.slice(2, 7), + }); + f.Tuplet({ + notes: notes.slice(0, 7), + options: { + notes_occupied: 2, + num_notes: 3, + }, + }); + f.Tuplet({ + notes: notes.slice(2, 7), + options: { + notes_occupied: 4, + num_notes: 5, + }, + }); + const voice = f.Voice().setStrict(true).addTickables(notes); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Nested Tuplets'); +} +function single(options) { + const f = VexFlowTests.makeFactory(options); + const stave = f.Stave({ x: 10, y: 10 }).addTimeSignature('4/4'); + const notes = [ + { keys: ['c/4'], duration: '4' }, + { keys: ['d/4'], duration: '8' }, + { keys: ['e/4'], duration: '8' }, + { keys: ['f/4'], duration: '8' }, + { keys: ['g/4'], duration: '8' }, + { keys: ['a/4'], duration: '2' }, + { keys: ['b/4'], duration: '4' }, + ] + .map(setStemUp) + .map(f.StaveNote.bind(f)); + f.Beam({ + notes: notes.slice(1, 4), + }); + f.Tuplet({ + notes: notes.slice(0, -1), + options: { + num_notes: 4, + notes_occupied: 3, + ratioed: true, + bracketed: true, + }, + }); + f.Tuplet({ + notes: notes.slice(0, 1), + options: { + num_notes: 3, + notes_occupied: 2, + ratioed: true, + }, + }); + f.Tuplet({ + notes: notes.slice(1, 4), + options: { + num_notes: 3, + notes_occupied: 2, + }, + }); + f.Tuplet({ + notes: notes.slice(4, 5), + options: { + num_notes: 3, + notes_occupied: 2, + ratioed: true, + bracketed: true, + }, + }); + const voice = f + .Voice({ time: { num_beats: 4, beat_value: 4 } }) + .setStrict(true) + .addTickables(notes); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + f.draw(); + ok(true, 'Nested Tuplets'); +} +VexFlowTests.register(TupletTests); +export { TupletTests }; diff --git a/build/esm/tests/typeguard_tests.js b/build/esm/tests/typeguard_tests.js new file mode 100644 index 0000000000..a985aa718b --- /dev/null +++ b/build/esm/tests/typeguard_tests.js @@ -0,0 +1,82 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { CanvasContext } from '../src/canvascontext.js'; +import { StaveNote } from '../src/stavenote.js'; +import { StemmableNote } from '../src/stemmablenote.js'; +import { TabNote } from '../src/tabnote.js'; +import { isCategory, isNote, isRenderContext, isStaveNote, isStemmableNote, isTabNote } from '../src/typeguard.js'; +const TypeGuardTests = { + Start() { + QUnit.module('TypeGuard'); + test('Real VexFlow Types', real); + test('Fake VexFlow Types in ES5', fakeES5); + test('Fake VexFlow Types in ES6', fakeES6); + test('Edge Case ES5/ES6', edgeCaseES5vsES6); + }, +}; +function real() { + const s = new StaveNote({ keys: ['c/4'], duration: 'w' }); + ok(isStaveNote(s), 'isStaveNote helper function'); + ok(isCategory(s, 'StaveNote'), 'Use isCategory(s, "StaveNote") directly'); + notOk(isTabNote(s), 'isTabNote helper function. s is NOT a TabNote.'); + const t = new TabNote({ positions: [{ str: 2, fret: 1 }], duration: '1' }); + ok(isTabNote(t), 'isTabNote helper function'); + notOk(isStaveNote(t), 't is NOT a StaveNote'); + ok(isNote(s), 'StaveNote extends StemmableNote which extends Note, so s is a Note'); + ok(isStemmableNote(t), 'TabNote extends StemmableNote'); + ok(isNote(t), 'TabNote extends StemmableNote which extends Note, so t is a Note'); + const canvas = document.createElement('canvas'); + canvas.width = 800; + canvas.height = 400; + const ctx = new CanvasContext(canvas.getContext('2d')); + ok(isRenderContext(ctx), 'ctx is a RenderContext'); +} +function checkFakeObjects(fakeStemmableNote, fakeStaveNote) { + ok(isStemmableNote(fakeStemmableNote), 'Fake StemmableNote is a StemmableNote.'); + notOk(isNote(fakeStemmableNote), 'Fake StemmableNote is not a Note (no ancestors with the correct CATEGORY).'); + ok(isCategory(fakeStaveNote, 'StaveNote'), 'Fake StaveNote is a StaveNote.'); + ok(isStaveNote(fakeStaveNote), 'Fake StaveNote is a StaveNote (via helper function).'); + ok(isCategory(fakeStaveNote, 'StemmableNote'), 'Fake StaveNote is also a StemmableNote (via inheritance).'); + notOk(isNote(fakeStaveNote), 'Fake StaveNote is not a Note. CATEGORY does not match.'); +} +function fakeES5() { + function FakeStemmableNote() { + this.isFake = true; + } + FakeStemmableNote.CATEGORY = StemmableNote.CATEGORY; + function FakeStaveNote() { + FakeStemmableNote.call(this); + } + FakeStaveNote.CATEGORY = StaveNote.CATEGORY; + FakeStaveNote.prototype = Object.create(FakeStemmableNote.prototype); + FakeStaveNote.prototype.constructor = FakeStaveNote; + const fakeStemmableNote = new FakeStemmableNote(); + const fakeStaveNote = new FakeStaveNote(); + checkFakeObjects(fakeStemmableNote, fakeStaveNote); +} +function fakeES6() { + class FakeStemmableNote { + } + FakeStemmableNote.CATEGORY = StemmableNote.CATEGORY; + class FakeStaveNote extends FakeStemmableNote { + } + FakeStaveNote.CATEGORY = StaveNote.CATEGORY; + const fakeStemmableNote = new FakeStemmableNote(); + const fakeStaveNote = new FakeStaveNote(); + checkFakeObjects(fakeStemmableNote, fakeStaveNote); +} +function edgeCaseES5vsES6() { + class Z extends Object { + } + class Y extends Z { + } + class X extends Y { + } + const zInstance = new Z(); + const xInstance = new X(); + ok(xInstance instanceof Object, 'es5 & es6: x IS an instanceof Object'); + ok(zInstance instanceof Z, 'es6: z IS an instanceof Z'); + ok(xInstance instanceof Y, 'es6: x IS an instanceof Y'); + ok(xInstance instanceof Z, 'es6: x IS an instanceof Z'); +} +VexFlowTests.register(TypeGuardTests); +export { TypeGuardTests }; diff --git a/build/esm/tests/vexflow_test_helpers.js b/build/esm/tests/vexflow_test_helpers.js new file mode 100644 index 0000000000..3d9d7d96a5 --- /dev/null +++ b/build/esm/tests/vexflow_test_helpers.js @@ -0,0 +1,267 @@ +import { Factory, Flow, Font, Renderer } from '../src/index.js'; +import { globalObject } from '../src/util.js'; +const global = globalObject(); +let originalFontNames; +function useTempFontStack(fontName) { + originalFontNames = Flow.getMusicFont(); + Flow.setMusicFont(...VexFlowTests.FONT_STACKS[fontName]); +} +function restoreOriginalFontStack() { + Flow.setMusicFont(...originalFontNames); +} +if (!global.$) { + global.$ = (param) => { + let element; + if (typeof param !== 'string') { + element = param; + } + else if (param.startsWith('<')) { + const tagName = param.match(/[A-Za-z]+/g)[0]; + element = document.createElement(tagName); + } + else { + element = document.querySelector(param); + } + const $element = { + get(index) { + return element; + }, + addClass(c) { + element.classList.add(c); + return $element; + }, + text(t) { + element.textContent = t; + return $element; + }, + html(h) { + if (!h) { + return element.innerHTML; + } + else { + element.innerHTML = h; + return $element; + } + }, + append(...elementsToAppend) { + elementsToAppend.forEach((e) => { + element.appendChild(e); + }); + return $element; + }, + attr(attrName, val) { + element.setAttribute(attrName, val); + return $element; + }, + }; + return $element; + }; +} +function sanitizeName(name) { + return name.replace(/[^a-zA-Z0-9]/g, '_'); +} +const CANVAS_TEST_CONFIG = { + backend: Renderer.Backends.CANVAS, + tagName: 'canvas', + testType: 'Canvas', + fontStacks: ['Bravura'], +}; +const SVG_TEST_CONFIG = { + backend: Renderer.Backends.SVG, + tagName: 'div', + testType: 'SVG', + fontStacks: ['Bravura', 'Gonville', 'Petaluma', 'Leland'], +}; +const NODE_TEST_CONFIG = { + backend: Renderer.Backends.CANVAS, + tagName: 'canvas', + testType: 'NodeCanvas', + fontStacks: ['Bravura', 'Gonville', 'Petaluma', 'Leland'], +}; +export class VexFlowTests { + static register(test) { + VexFlowTests.tests.push(test); + } + static parseJobOptions(runOptions) { + let { jobs, job } = runOptions || { jobs: 1, job: 0 }; + if (window) { + const { location } = window; + if (location) { + const sps = new URLSearchParams(location.search); + const jobsParam = sps.get('jobs'); + const jobParam = sps.get('job'); + if (jobsParam) { + jobs = parseInt(jobsParam, 10); + } + if (jobParam) { + job = parseInt(jobParam, 10); + } + } + } + return { + jobs, + job, + }; + } + static run(runOptions) { + const { jobs, job } = VexFlowTests.parseJobOptions(runOptions); + VexFlowTests.tests.forEach((test, idx) => { + if (jobs === 1 || idx % jobs === job) { + test.Start(); + } + }); + } + static set NODE_FONT_STACKS(fontStacks) { + NODE_TEST_CONFIG.fontStacks = fontStacks; + } + static generateTestID(prefix) { + return prefix + '_' + VexFlowTests.NEXT_TEST_ID++; + } + static runTests(name, testFunc, params) { + VexFlowTests.runCanvasTest(name, testFunc, params); + VexFlowTests.runSVGTest(name, testFunc, params); + VexFlowTests.runNodeTest(name, testFunc, params); + } + static createTest(elementId, testTitle, tagName, titleId = '') { + const anchorTestTitle = `${testTitle}`; + const title = $('
      ').addClass('name').attr('id', titleId).html(anchorTestTitle).get(0); + const vexOutput = $(`<${tagName}/>`).addClass('vex-tabdiv').attr('id', elementId).get(0); + const container = $('
      ').addClass('testcanvas').append(title, vexOutput).get(0); + $('#vexflow_testoutput').append(container); + return vexOutput; + } + static makeFactory(options, width = 450, height = 140) { + const { elementId, backend } = options; + return new Factory({ renderer: { elementId, backend, width, height } }); + } + static runCanvasTest(name, testFunc, params) { + if (VexFlowTests.RUN_CANVAS_TESTS) { + const helper = null; + VexFlowTests.runWithParams(Object.assign(Object.assign({}, CANVAS_TEST_CONFIG), { name, testFunc, params, helper })); + } + } + static runSVGTest(name, testFunc, params) { + if (VexFlowTests.RUN_SVG_TESTS) { + const helper = null; + VexFlowTests.runWithParams(Object.assign(Object.assign({}, SVG_TEST_CONFIG), { name, testFunc, params, helper })); + } + } + static runNodeTest(name, testFunc, params) { + if (VexFlowTests.RUN_NODE_TESTS) { + const helper = VexFlowTests.runNodeTestHelper; + VexFlowTests.runWithParams(Object.assign(Object.assign({}, NODE_TEST_CONFIG), { name, testFunc, params, helper })); + } + } + static runNodeTestHelper(fontName, element) { + if (Renderer.lastContext !== undefined) { + const moduleName = sanitizeName(QUnit.current_module); + const testName = sanitizeName(QUnit.current_test); + const onlyBravura = NODE_TEST_CONFIG.fontStacks.length === 1 && fontName === 'Bravura'; + const fontInfo = onlyBravura ? '' : `.${fontName}`; + const fileName = `${VexFlowTests.NODE_IMAGEDIR}/${moduleName}.${testName}${fontInfo}.png`; + const imageData = element.toDataURL().split(';base64,').pop(); + const imageBuffer = Buffer.from(imageData, 'base64'); + VexFlowTests.shims.fs.writeFileSync(fileName, imageBuffer, { encoding: 'base64' }); + } + } + static runWithParams({ fontStacks, testFunc, name, params, backend, tagName, testType, helper }) { + if (name === undefined) { + throw new Error('Test name is undefined.'); + } + const testTypeLowerCase = testType.toLowerCase(); + fontStacks.forEach((fontStackName) => { + QUnit.test(name, (assert) => { + useTempFontStack(fontStackName); + const elementId = VexFlowTests.generateTestID(`${testTypeLowerCase}_` + fontStackName); + const moduleName = assert.test.module.name; + const title = moduleName + ' › ' + name + ` › ${testType} + ${fontStackName}`; + let prefix = ''; + if (testTypeLowerCase === 'canvas') { + prefix = testTypeLowerCase + '_'; + } + else { + } + const titleId = `${prefix}${sanitizeName(moduleName)}.${sanitizeName(name)}.${fontStackName}`; + const element = VexFlowTests.createTest(elementId, title, tagName, titleId); + const options = { elementId, params, assert, backend }; + const isSVG = backend === Renderer.Backends.SVG; + const contextBuilder = isSVG ? Renderer.getSVGContext : Renderer.getCanvasContext; + testFunc(options, contextBuilder); + restoreOriginalFontStack(); + if (helper) + helper(fontStackName, element); + }); + }); + } + static plotLegendForNoteWidth(ctx, x, y) { + ctx.save(); + ctx.setFont(Font.SANS_SERIF, 8); + const spacing = 12; + let lastY = y; + function legend(color, text) { + ctx.beginPath(); + ctx.setStrokeStyle(color); + ctx.setFillStyle(color); + ctx.setLineWidth(10); + ctx.moveTo(x, lastY - 4); + ctx.lineTo(x + 10, lastY - 4); + ctx.stroke(); + ctx.setFillStyle('black'); + ctx.fillText(text, x + 15, lastY); + lastY += spacing; + } + legend('green', 'Note + Flag'); + legend('red', 'Modifiers'); + legend('#999', 'Displaced Head'); + legend('#DDD', 'Formatter Shift'); + ctx.restore(); + } +} +VexFlowTests.tests = []; +VexFlowTests.RUN_CANVAS_TESTS = true; +VexFlowTests.RUN_SVG_TESTS = true; +VexFlowTests.RUN_NODE_TESTS = false; +VexFlowTests.Font = { size: 10 }; +VexFlowTests.FONT_STACKS = { + Bravura: ['Bravura', 'Gonville', 'Custom'], + Gonville: ['Gonville', 'Bravura', 'Custom'], + Petaluma: ['Petaluma', 'Gonville', 'Bravura', 'Custom'], + Leland: ['Leland', 'Bravura', 'Gonville', 'Custom'], +}; +VexFlowTests.NEXT_TEST_ID = 0; +export const concat = (a, b) => a.concat(b); +export const MAJOR_KEYS = [ + 'C', + 'F', + 'Bb', + 'Eb', + 'Ab', + 'Db', + 'Gb', + 'Cb', + 'G', + 'D', + 'A', + 'E', + 'B', + 'F#', + 'C#', +]; +export const MINOR_KEYS = [ + 'Am', + 'Dm', + 'Gm', + 'Cm', + 'Fm', + 'Bbm', + 'Ebm', + 'Abm', + 'Em', + 'Bm', + 'F#m', + 'C#m', + 'G#m', + 'D#m', + 'A#m', +]; +Flow.Test = VexFlowTests; diff --git a/build/esm/tests/vf_prefix_tests.js b/build/esm/tests/vf_prefix_tests.js new file mode 100644 index 0000000000..d21fe87882 --- /dev/null +++ b/build/esm/tests/vf_prefix_tests.js @@ -0,0 +1,115 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Accidental, Annotation, Articulation, Barline, BarNote, Beam, Bend, BoundingBox, BoundingBoxComputation, ChordSymbol, Clef, ClefNote, Crescendo, Curve, Dot, EasyScore, Element, Factory, Flow, Font, Formatter, Fraction, FretHandFinger, GhostNote, Glyph, GlyphNote, GraceNote, GraceNoteGroup, GraceTabNote, KeyManager, KeySignature, KeySigNote, Modifier, ModifierContext, MultiMeasureRest, Music, Note, NoteHead, NoteSubGroup, Ornament, Parser, PedalMarking, Registry, Renderer, RepeatNote, Repetition, Stave, StaveConnector, StaveHairpin, StaveLine, StaveModifier, StaveNote, StaveTempo, StaveText, StaveTie, Stem, StringNumber, Stroke, System, TabNote, TabSlide, TabStave, TabTie, TextBracket, TextDynamics, TextFormatter, TextNote, TickContext, TimeSignature, TimeSigNote, Tremolo, Tuning, Tuplet, Vibrato, VibratoBracket, Voice, Volta, } from '../src/index.js'; +const VFPrefixTests = { + Start() { + QUnit.module('VF.* API'); + test('VF.* API', VF_Prefix); + test('VF Alias', VF_Alias); + }, +}; +function VF_Prefix() { + const VF = Vex.Flow; + equal(Accidental, VF.Accidental); + equal(Annotation, VF.Annotation); + equal(Articulation, VF.Articulation); + equal(Barline, VF.Barline); + equal(BarNote, VF.BarNote); + equal(Beam, VF.Beam); + equal(Bend, VF.Bend); + equal(BoundingBox, VF.BoundingBox); + equal(BoundingBoxComputation, VF.BoundingBoxComputation); + equal(ChordSymbol, VF.ChordSymbol); + equal(Clef, VF.Clef); + equal(ClefNote, VF.ClefNote); + equal(Crescendo, VF.Crescendo); + equal(Curve, VF.Curve); + equal(Dot, VF.Dot); + equal(EasyScore, VF.EasyScore); + equal(Element, VF.Element); + equal(Factory, VF.Factory); + equal(Flow.RESOLUTION, VF.RESOLUTION); + equal(Font, VF.Font); + equal(Formatter, VF.Formatter); + propEqual(new Formatter(), new VF.Formatter(), 'new Formatter()'); + equal(Fraction, VF.Fraction); + equal(FretHandFinger, VF.FretHandFinger); + equal(GhostNote, VF.GhostNote); + equal(Glyph, VF.Glyph); + equal(GlyphNote, VF.GlyphNote); + equal(GraceNote, VF.GraceNote); + equal(GraceNoteGroup, VF.GraceNoteGroup); + equal(GraceTabNote, VF.GraceTabNote); + equal(KeyManager, VF.KeyManager); + equal(KeySignature, VF.KeySignature); + equal(KeySigNote, VF.KeySigNote); + equal(Modifier, VF.Modifier); + equal(ModifierContext, VF.ModifierContext); + equal(MultiMeasureRest, VF.MultiMeasureRest); + equal(Music, VF.Music); + equal(Note, VF.Note); + equal(NoteHead, VF.NoteHead); + equal(NoteSubGroup, VF.NoteSubGroup); + equal(Ornament, VF.Ornament); + equal(Parser, VF.Parser); + equal(PedalMarking, VF.PedalMarking); + equal(Registry, VF.Registry); + equal(Renderer, VF.Renderer); + equal(RepeatNote, VF.RepeatNote); + equal(Repetition, VF.Repetition); + equal(Stave, VF.Stave); + notEqual(Stave, VF.StaveNote); + equal(StaveConnector, VF.StaveConnector); + equal(StaveHairpin, VF.StaveHairpin); + equal(StaveLine, VF.StaveLine); + equal(StaveModifier, VF.StaveModifier); + equal(StaveNote, VF.StaveNote); + equal(StaveTempo, VF.StaveTempo); + equal(StaveText, VF.StaveText); + equal(StaveTie, VF.StaveTie); + equal(Stem, VF.Stem); + equal(StringNumber, VF.StringNumber); + equal(Stroke, VF.Stroke); + equal(System, VF.System); + equal(TabNote, VF.TabNote); + equal(TabSlide, VF.TabSlide); + equal(TabStave, VF.TabStave); + equal(TabTie, VF.TabTie); + equal(TextBracket, VF.TextBracket); + equal(TextDynamics, VF.TextDynamics); + equal(TextFormatter, VF.TextFormatter); + equal(TextNote, VF.TextNote); + equal(TickContext, VF.TickContext); + equal(TimeSignature, VF.TimeSignature); + equal(TimeSigNote, VF.TimeSigNote); + equal(Tremolo, VF.Tremolo); + equal(Tuning, VF.Tuning); + equal(Tuplet, VF.Tuplet); + equal(Vibrato, VF.Vibrato); + equal(VibratoBracket, VF.VibratoBracket); + equal(Voice, VF.Voice); + equal(Volta, VF.Volta); +} +function VF_Alias() { + const Flow = Vex.Flow; + const VFAliases = { + get VFAccidental() { + return Flow.Accidental; + }, + get VFAnnotation() { + return Flow.Annotation; + }, + get VFVibrato() { + return Flow.Vibrato; + }, + }; + const { VFVibrato, VFAccidental, VFAnnotation } = VFAliases; + equal(Accidental, VFAccidental); + equal(Annotation, VFAnnotation); + const vibrato = new VFVibrato(); + ok(vibrato); + const acc1 = new VFAccidental('##'); + const acc2 = new Accidental('##'); + equal(acc1.type, acc2.type); +} +VexFlowTests.register(VFPrefixTests); +export { VFPrefixTests }; diff --git a/build/esm/tests/vibrato_tests.js b/build/esm/tests/vibrato_tests.js new file mode 100644 index 0000000000..f2d5ed3460 --- /dev/null +++ b/build/esm/tests/vibrato_tests.js @@ -0,0 +1,92 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Bend, Font, Formatter, TabNote, TabStave, Vibrato } from '../src/index.js'; +const VibratoTests = { + Start() { + QUnit.module('Vibrato'); + const run = VexFlowTests.runTests; + run('Simple Vibrato', simple); + run('Harsh Vibrato', harsh); + run('Vibrato with Bend', withBend); + }, +}; +const tabNote = (noteStruct) => new TabNote(noteStruct); +function simple(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + ctx.font = '10pt Arial'; + const stave = new TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw(); + const notes = [ + tabNote({ + positions: [ + { str: 2, fret: 10 }, + { str: 4, fret: 9 }, + ], + duration: 'h', + }).addModifier(new Vibrato(), 0), + tabNote({ + positions: [{ str: 2, fret: 10 }], + duration: 'h', + }).addModifier(new Vibrato(), 0), + ]; + Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, 'Simple Vibrato'); +} +function harsh(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.5, 1.5); + ctx.fillStyle = '#221'; + ctx.strokeStyle = '#221'; + ctx.font = '10pt Arial'; + const stave = new TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw(); + const notes = [ + tabNote({ + positions: [ + { str: 2, fret: 10 }, + { str: 4, fret: 9 }, + ], + duration: 'h', + }).addModifier(new Vibrato().setHarsh(true), 0), + tabNote({ + positions: [{ str: 2, fret: 10 }], + duration: 'h', + }).addModifier(new Vibrato().setHarsh(true), 0), + ]; + Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, 'Harsh Vibrato'); +} +function withBend(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 500, 240); + ctx.scale(1.3, 1.3); + ctx.setFillStyle('#221'); + ctx.setStrokeStyle('#221'); + ctx.setFont(Font.SANS_SERIF, VexFlowTests.Font.size); + const stave = new TabStave(10, 10, 450).addTabGlyph().setContext(ctx).draw(); + const notes = [ + tabNote({ + positions: [ + { str: 2, fret: 9 }, + { str: 3, fret: 9 }, + ], + duration: 'q', + }) + .addModifier(new Bend('1/2', true), 0) + .addModifier(new Bend('1/2', true), 1) + .addModifier(new Vibrato(), 0), + tabNote({ + positions: [{ str: 2, fret: 10 }], + duration: 'q', + }) + .addModifier(new Bend('Full', false), 0) + .addModifier(new Vibrato().setVibratoWidth(60), 0), + tabNote({ + positions: [{ str: 2, fret: 10 }], + duration: 'h', + }).addModifier(new Vibrato().setVibratoWidth(120).setHarsh(true), 0), + ]; + Formatter.FormatAndDraw(ctx, stave, notes); + ok(true, 'Vibrato with Bend'); +} +VexFlowTests.register(VibratoTests); +export { VibratoTests }; diff --git a/build/esm/tests/vibratobracket_tests.js b/build/esm/tests/vibratobracket_tests.js new file mode 100644 index 0000000000..4d77ecad41 --- /dev/null +++ b/build/esm/tests/vibratobracket_tests.js @@ -0,0 +1,45 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +const VibratoBracketTests = { + Start() { + QUnit.module('VibratoBracket'); + const run = VexFlowTests.runTests; + run('Simple VibratoBracket', simple); + run('Harsh VibratoBracket Without End Note', withoutEndNote); + run('Harsh VibratoBracket Without Start Note', withoutStartNote); + }, +}; +function createTest(noteGroup, setupVibratoBracket) { + return (options) => { + const factory = VexFlowTests.makeFactory(options, 650, 200); + const stave = factory.Stave(); + const score = factory.EasyScore(); + const voice = score.voice(score.notes(noteGroup)); + setupVibratoBracket(factory, voice.getTickables()); + factory.Formatter().joinVoices([voice]).formatToStave([voice], stave); + factory.draw(); + ok(true); + }; +} +const simple = createTest('c4/4, c4, c4, c4', (factory, notes) => { + factory.VibratoBracket({ + from: notes[0], + to: notes[3], + options: { line: 2 }, + }); +}); +const withoutEndNote = createTest('c4/4, c4, c4, c4', (factory, notes) => { + factory.VibratoBracket({ + from: notes[2], + to: null, + options: { line: 2, harsh: true }, + }); +}); +const withoutStartNote = createTest('c4/4, c4, c4, c4', (factory, notes) => { + factory.VibratoBracket({ + from: null, + to: notes[2], + options: { line: 2, harsh: true }, + }); +}); +VexFlowTests.register(VibratoBracketTests); +export { VibratoBracketTests }; diff --git a/build/esm/tests/voice_tests.js b/build/esm/tests/voice_tests.js new file mode 100644 index 0000000000..31c1967c6d --- /dev/null +++ b/build/esm/tests/voice_tests.js @@ -0,0 +1,69 @@ +import { VexFlowTests } from './vexflow_test_helpers.js'; +import { Flow } from '../src/flow.js'; +import { Formatter } from '../src/formatter.js'; +import { Stave } from '../src/stave.js'; +import { Barline } from '../src/stavebarline.js'; +import { StaveNote } from '../src/stavenote.js'; +import { Voice } from '../src/voice.js'; +import { MockTickable } from './mocks.js'; +const VoiceTests = { + Start() { + QUnit.module('Voice'); + test('Strict Test', strict); + test('Ignore Test', ignore); + VexFlowTests.runTests('Full Voice Mode Test', full); + }, +}; +const BEAT = (1 * Flow.RESOLUTION) / 4; +const createTickable = () => new MockTickable().setTicks(BEAT); +function strict() { + expect(8); + const tickables = [createTickable(), createTickable(), createTickable()]; + const voice = new Voice(Flow.TIME4_4); + equal(voice.getTotalTicks().value(), BEAT * 4, '4/4 Voice has 4 beats'); + equal(voice.getTicksUsed().value(), BEAT * 0, 'No beats in voice'); + voice.addTickables(tickables); + equal(voice.getTicksUsed().value(), BEAT * 3, 'Three beats in voice'); + voice.addTickable(createTickable()); + equal(voice.getTicksUsed().value(), BEAT * 4, 'Four beats in voice'); + equal(voice.isComplete(), true, 'Voice is complete'); + const numeratorBeforeException = voice.getTicksUsed().numerator; + throws(() => voice.addTickable(createTickable()), /BadArgument/, '"Too many ticks" exception'); + equal(voice.getTicksUsed().numerator, numeratorBeforeException, 'Revert `ticksUsed` after a "Too many ticks" exception'); + equal(voice.getSmallestTickCount().value(), BEAT, 'Smallest tick count is BEAT'); +} +function ignore() { + const tickables = [ + createTickable(), + createTickable(), + createTickable().setIgnoreTicks(true), + createTickable(), + createTickable().setIgnoreTicks(true), + createTickable(), + ]; + const voice = new Voice(Flow.TIME4_4); + voice.addTickables(tickables); + ok(true, 'all pass'); +} +function full(options, contextBuilder) { + const ctx = contextBuilder(options.elementId, 550, 200); + const stave = new Stave(10, 50, 500).addClef('treble').addTimeSignature('4/4').setEndBarType(Barline.type.END); + const notes = [ + new StaveNote({ keys: ['c/4'], duration: '4' }), + new StaveNote({ keys: ['d/4'], duration: '4' }), + new StaveNote({ keys: ['r/4'], duration: '4r' }), + ]; + notes.forEach((note) => note.setStave(stave)); + const voice = new Voice(Flow.TIME4_4).setMode(Voice.Mode.FULL).addTickables(notes); + new Formatter().joinVoices([voice]).formatToStave([voice], stave); + stave.setContext(ctx).draw(); + voice.draw(ctx); + const bb = voice.getBoundingBox(); + if (bb) { + ctx.rect(bb.getX(), bb.getY(), bb.getW(), bb.getH()); + } + ctx.stroke(); + throws(() => voice.addTickable(new StaveNote({ keys: ['c/4'], duration: '2' })), /BadArgument/, 'Voice cannot exceed full amount of ticks'); +} +VexFlowTests.register(VoiceTests); +export { VoiceTests }; diff --git a/build/types/entry/vexflow-bravura.d.ts b/build/types/entry/vexflow-bravura.d.ts new file mode 100644 index 0000000000..a5193666d7 --- /dev/null +++ b/build/types/entry/vexflow-bravura.d.ts @@ -0,0 +1,2 @@ +export * from '../src/index'; +export * as default from '../src/index'; diff --git a/build/types/entry/vexflow-core.d.ts b/build/types/entry/vexflow-core.d.ts new file mode 100644 index 0000000000..a5193666d7 --- /dev/null +++ b/build/types/entry/vexflow-core.d.ts @@ -0,0 +1,2 @@ +export * from '../src/index'; +export * as default from '../src/index'; diff --git a/build/types/entry/vexflow-debug.d.ts b/build/types/entry/vexflow-debug.d.ts new file mode 100644 index 0000000000..a5193666d7 --- /dev/null +++ b/build/types/entry/vexflow-debug.d.ts @@ -0,0 +1,2 @@ +export * from '../src/index'; +export * as default from '../src/index'; diff --git a/build/types/entry/vexflow-font-bravura.d.ts b/build/types/entry/vexflow-font-bravura.d.ts new file mode 100644 index 0000000000..873d55c296 --- /dev/null +++ b/build/types/entry/vexflow-font-bravura.d.ts @@ -0,0 +1,4057 @@ +export declare const Font: { + data: { + glyphs: { + bracketTop: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + bracketBottom: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + barlineTick: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + breathMarkTick: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + segno: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + coda: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + gClef: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + cClef: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fClef: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + unpitchedPercussionClef1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + '6stringTabClef': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig0: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig3: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig4: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig5: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig6: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig7: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig8: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig9: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigCommon: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigCutCommon: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigPlus: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigPlusSmall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigMinus: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigParensRight: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigParensRightSmall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigParensLeft: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigParensLeftSmall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadXDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadXWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadXHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadXBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircleXDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircleXWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircleXHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircleX: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircledDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircledWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircledHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircledBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDoubleWholeSquare: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSquareWhite: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSquareBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleDownDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleDownWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleDownHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleDownBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedDoubleWhole1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedWhole1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedHalf1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedBlack1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedDoubleWhole2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedWhole2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedHalf2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedBlack2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadParenthesis: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadParenthesisRight: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadParenthesisLeft: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadMoonBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleLeftBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleRightBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleRoundDownBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + augmentationDot: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + tremolo1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag8thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag8thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag16thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag16thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag32ndUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag32ndDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag64thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag64thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag128thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag128thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalNatural: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalDoubleSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalDoubleFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalParensLeft: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalParensRight: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalQuarterToneFlatStein: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalThreeQuarterTonesFlatZimmermann: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalQuarterToneSharpStein: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalThreeQuarterTonesSharpStein: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalBuyukMucennebFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalBakiyeFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalKomaSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalKucukMucennebSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalKoron: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalSori: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articAccentAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articAccentBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articTenutoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articTenutoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatissimoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatissimoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articMarcatoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articMarcatoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataLongAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataLongBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataVeryLongAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataVeryLongBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataShortAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataShortBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + breathMarkComma: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + breathMarkUpbow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + caesura: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + caesuraCurved: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restMaxima: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restWholeLegerLine: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restHalfLegerLine: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restQuarter: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest8th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest16th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest32nd: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest64th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest128th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicPiano: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicMezzo: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicForte: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicRinforzando: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicSforzando: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicZ: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTrill: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTurn: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTurnSlash: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentMordent: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentShortTrill: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTremblement: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompAppoggTrill: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompSlideTrillDAnglebert: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompSlideTrillBach: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompTrillSuffixDandrieu: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompDoubleCadenceUpperPrefix: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompDoubleCadenceUpperPrefixTurn: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompTrillLowerSuffix: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassScoop: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassDoitMedium: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassFallLipShort: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassLiftMedium: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassFallRoughMedium: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassBend: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassMuteClosed: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassMuteOpen: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassFlip: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassJazzTurn: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassSmear: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + stringsDownBow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + stringsUpBow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + stringsHarmonic: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + pluckedSnapPizzicatoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + pluckedSnapPizzicatoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + pluckedLeftHandPizzicato: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + keyboardPedalPed: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + keyboardPedalUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + pictChokeCymbal: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + wiggleArpeggiatoUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + arrowheadBlackUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + arrowheadBlackDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + arpeggiatoUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + arpeggiatoDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeat1Bar: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeat2Bars: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeat4Bars: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeatBarSlash: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymDiminished: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymHalfDiminished: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymAugmented: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymMajorSeventh: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymMinor: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymParensLeftTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymParensRightTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymBracketLeftTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymBracketRightTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymParensLeftVeryTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymParensRightVeryTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymDiagonalArrangementSlash: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v7KleismaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v7KleismaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5CommaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5CommaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal7CommaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal7CommaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal25SmallDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal25SmallDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal35MediumDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal35MediumDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal11MediumDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal11MediumDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal11LargeDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal11LargeDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal35LargeDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal35LargeDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp25SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat25SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp7CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat7CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5v7kDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5v7kUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5v7kUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5v7kDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp7CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat7CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp25SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat25SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp35MUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat35MDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp11MUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat11MDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp11LUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat11LDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp35LUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat35LDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp25SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat25SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp7CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat7CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp5CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat5CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp5v7kDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat5v7kUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal7v11KleismaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal7v11KleismaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal17CommaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal17CommaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal55CommaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal55CommaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal7v11CommaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal7v11CommaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v11SmallDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v11SmallDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5v11SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5v11SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp7v11CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat7v11CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp55CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat55CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp17CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat17CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp7v11kDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat7v11kUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp7v11kUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat7v11kDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp17CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat17CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp55CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat55CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp7v11CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat7v11CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5v11SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5v11SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp5v11SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat5v11SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp7v11CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat7v11CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp55CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat55CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp17CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat17CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp7v11kDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat7v11kUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal23CommaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal23CommaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v19CommaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v19CommaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v23SmallDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v23SmallDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5v23SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5v23SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5v19CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5v19CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp23CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat23CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp23CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat23CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5v19CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5v19CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5v23SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5v23SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp5v23SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat5v23SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp5v19CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat5v19CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp23CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat23CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal19SchismaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal19SchismaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal17KleismaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal17KleismaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal143CommaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal143CommaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal11v49CommaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal11v49CommaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal19CommaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal19CommaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal7v19CommaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal7v19CommaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal49SmallDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal49SmallDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal23SmallDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal23SmallDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v13MediumDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v13MediumDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal11v19MediumDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal11v19MediumDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal49MediumDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal49MediumDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v49MediumDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v49MediumDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal49LargeDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal49LargeDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal11v19LargeDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal11v19LargeDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v13LargeDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v13LargeDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp23SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat23SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp49SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat49SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp7v19CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat7v19CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp19CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat19CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp11v49CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat11v49CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp143CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat143CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp17kDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat17kUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp19sDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat19sUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp19sUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat19sDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp17kUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat17kDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp143CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat143CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp11v49CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat11v49CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp19CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat19CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp7v19CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat7v19CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp49SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat49SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp23SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat23SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5v13MUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5v13MDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp11v19MUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat11v19MDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp49MUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat49MDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5v49MUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5v49MDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp49LUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat49LDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp11v19LUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat11v19LDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5v13LUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5v13LDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp23SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat23SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp49SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat49SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp7v19CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat7v19CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp19CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat19CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp11v49CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat11v49CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp143CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat143CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp17kDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat17kUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp19sDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat19sUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalShaftUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalShaftDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalAcute: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalGrave: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal1MinaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal1MinaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal2MinasUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal2MinasDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal1TinaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal1TinaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal2TinasUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal2TinasDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal3TinasUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal3TinasDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal4TinasUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal4TinasDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5TinasUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5TinasDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal6TinasUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal6TinasDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal7TinasUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal7TinasDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal8TinasUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal8TinasDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal9TinasUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal9TinasDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFractionalTinaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFractionalTinaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalNarrowReversedFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalNarrowReversedFlatAndFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalWilsonPlus: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalWilsonMinus: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + }; + fontFamily: string; + resolution: number; + generatedOn: string; + }; + metrics: { + name: string; + smufl: boolean; + stave: { + padding: number; + endPaddingMax: number; + endPaddingMin: number; + unalignedNotePadding: number; + }; + accidental: { + noteheadAccidentalPadding: number; + leftPadding: number; + accidentalSpacing: number; + }; + clef: { + default: { + point: number; + width: number; + }; + small: { + point: number; + width: number; + }; + annotations: { + '8va': { + smuflCode: string; + default: { + point: number; + treble: { + line: number; + shiftX: number; + }; + }; + small: { + point: number; + treble: { + line: number; + shiftX: number; + }; + }; + }; + '8vb': { + smuflCode: string; + default: { + point: number; + treble: { + line: number; + shiftX: number; + }; + bass: { + line: number; + shiftX: number; + }; + }; + small: { + point: number; + treble: { + line: number; + shiftX: number; + }; + bass: { + line: number; + shiftX: number; + }; + }; + }; + }; + lineCount: { + '8': { + point: number; + shiftY: number; + }; + '7': { + point: number; + shiftY: number; + }; + '6': { + point: number; + shiftY: number; + }; + '5': { + point: number; + shiftY: number; + }; + '4': { + point: number; + shiftY: number; + }; + }; + }; + parenthesis: { + default: { + point: number; + width: number; + }; + gracenote: { + point: number; + width: number; + }; + }; + pedalMarking: { + up: { + point: number; + }; + down: { + point: number; + }; + }; + digits: { + shiftLine: number; + point: number; + tupletPoint: number; + shiftY: number; + }; + articulation: { + articStaccatissimoAbove: { + padding: number; + }; + articStaccatissimoBelow: { + padding: number; + }; + }; + tremolo: { + default: { + point: number; + spacing: number; + offsetYStemUp: number; + offsetYStemDown: number; + offsetXStemUp: number; + offsetXStemDown: number; + }; + grace: { + point: number; + spacing: number; + offsetYStemUp: number; + offsetYStemDown: number; + offsetXStemUp: number; + offsetXStemDown: number; + }; + }; + staveRepetition: { + symbolText: { + offsetX: number; + offsetY: number; + spacing: number; + }; + coda: { + offsetY: number; + }; + segno: { + offsetY: number; + }; + }; + stem: { + heightAdjustmentForFlag: number; + noteHead: { + noteheadTriangleUpHalf: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadTriangleUpBlack: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadTriangleUpWhole: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXHalf: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXBlack: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXWhole: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadHalf: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadBlack: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadSquareWhite: { + offsetYBaseStemDown: number; + offsetYBaseStemUp: number; + }; + }; + }; + glyphs: { + coda: { + point: number; + shiftX: number; + shiftY: number; + }; + segno: { + shiftX: number; + }; + flag: { + shiftX: number; + staveTempo: { + shiftX: number; + }; + }; + clef: { + gClef: { + default: { + scale: number; + shiftY: number; + }; + small: { + shiftY: number; + }; + }; + fClef: { + default: { + shiftY: number; + }; + }; + }; + ornament: { + ornamentTurn: { + scale: number; + }; + ornamentTurnSlash: { + scale: number; + }; + }; + stringNumber: { + verticalPadding: number; + stemPadding: number; + leftPadding: number; + rightPadding: number; + }; + stroke: { + arrowheadBlackDown: { + straight: { + shiftX: number; + }; + wiggly: { + shiftX: number; + shiftY: number; + }; + }; + arrowheadBlackUp: { + straight: { + shiftX: number; + }; + wiggly: { + shiftX: number; + shiftY: number; + }; + }; + }; + textNote: { + point: number; + breathMarkTick: { + point: number; + shiftY: number; + }; + breathMarkComma: { + point: number; + }; + segno: { + point: number; + shiftX: number; + shiftY: number; + }; + coda: { + point: number; + shiftX: number; + shiftY: number; + }; + ornamentTrill: { + shiftX: number; + shiftY: number; + }; + ornamentTurn: { + point: number; + }; + ornamentTurnSlash: { + point: number; + }; + ornamentMordent: { + shiftX: number; + }; + ornamentShortTrill: { + shiftX: number; + }; + }; + noteHead: { + minPadding: number; + standard: { + restQuarterStemUp: { + point: number; + }; + restQuarterStemDown: { + point: number; + }; + }; + custom: { + noteheadCircleXStemUp: { + shiftX: number; + }; + noteheadCircleXStemDown: { + shiftX: number; + }; + noteheadDiamondHalfStemUp: { + shiftX: number; + }; + noteheadDiamondBlackStemUp: { + shiftX: number; + }; + noteheadDiamondWholeStemUp: { + shiftX: number; + }; + noteheadXHalfStemUp: { + shiftX: number; + }; + noteheadXHalfStemDown: { + shiftX: number; + }; + noteheadXWholeStemUp: { + shiftX: number; + }; + noteheadXWholeStemDown: { + shiftX: number; + }; + noteheadXDoubleWholeStemUp: { + shiftX: number; + }; + noteheadXDoubleWholeStemDown: { + shiftX: number; + }; + noteheadSquareWhiteStemDown: { + shiftX: number; + }; + noteheadSquareWhiteStemUp: { + shiftX: number; + }; + noteheadSquareBlackStemUp: { + shiftX: number; + }; + noteheadTriangleUpWholeStemUp: { + shiftX: number; + }; + }; + }; + chordSymbol: { + global: { + superscriptOffset: number; + subscriptOffset: number; + kerningOffset: number; + lowerKerningText: string[]; + upperKerningText: string[]; + spacing: number; + superSubRatio: number; + }; + csymDiminished: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymHalfDiminished: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymAugmented: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensLeftTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensRightTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymBracketLeftTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymBracketRightTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensLeftVeryTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensRightVeryTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymDiagonalArrangementSlash: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymMinor: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymMajorSeventh: { + scale: number; + leftSideBearing: number; + yOffset: number; + advanceWidth: number; + }; + accidentalSharp: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + accidentalFlat: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + }; + jazzOrnaments: { + brassScoop: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassDoitMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFallLipShort: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassLiftMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFallRoughMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassBend: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassMuteClosed: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassMuteOpen: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFlip: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassJazzTurn: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassSmear: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + }; + tuplet: { + noteHeadOffset: number; + stemOffset: number; + bottomLine: number; + topModifierOffset: number; + }; + }; + }; +}; +export default Font; diff --git a/build/types/entry/vexflow-font-custom.d.ts b/build/types/entry/vexflow-font-custom.d.ts new file mode 100644 index 0000000000..f675de9c75 --- /dev/null +++ b/build/types/entry/vexflow-font-custom.d.ts @@ -0,0 +1,86 @@ +export declare const Font: { + data: { + resolution: number; + fontFamily: string; + glyphs: { + noteheadSquareWhite: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadSquareBlack: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalBuyukMucennebFlat: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalBakiyeFlat: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalKucukMucennebSharp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalKoron: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalSori: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + vexAccidentalMicrotonal2: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + vexAccidentalMicrotonal3: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + vexAccidentalMicrotonal4: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + vexNoteHeadRectBlack: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + vexNoteHeadRectWhite: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + }; + }; + metrics: { + name: string; + smufl: boolean; + glyphs: {}; + }; +}; +export default Font; diff --git a/build/types/entry/vexflow-font-gonville.d.ts b/build/types/entry/vexflow-font-gonville.d.ts new file mode 100644 index 0000000000..06c9f71274 --- /dev/null +++ b/build/types/entry/vexflow-font-gonville.d.ts @@ -0,0 +1,1306 @@ +export declare const Font: { + data: { + glyphs: { + bracketTop: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + bracketBottom: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + barlineTick: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + breathMarkTick: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + segno: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + coda: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + gClef: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + cClef: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + fClef: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + unpitchedPercussionClef1: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + '6stringTabClef': { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSig0: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSig1: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSig2: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSig3: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSig4: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSig5: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSig6: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSig7: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSig8: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSig9: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSigCommon: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSigCutCommon: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSigPlus: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSigPlusSmall: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSigMinus: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSigParensRight: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSigParensRightSmall: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSigParensLeft: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSigParensLeftSmall: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadDoubleWhole: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadWhole: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadHalf: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadBlack: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadXWhole: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadXHalf: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadXBlack: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpWhole: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpHalf: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpBlack: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadDiamondWhole: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadDiamondHalf: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadDiamondBlack: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + augmentationDot: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + tremolo1: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + flag8thUp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + flag8thDown: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + flag16thUp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + flag16thDown: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + flag32ndUp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + flag32ndDown: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + flag64thUp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + flag64thDown: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + flag128thUp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + flag128thDown: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalFlat: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalNatural: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalSharp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalDoubleSharp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalDoubleFlat: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalParensLeft: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalParensRight: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalQuarterToneFlatStein: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalThreeQuarterTonesFlatZimmermann: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalQuarterToneSharpStein: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalThreeQuarterTonesSharpStein: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalBuyukMucennebFlat: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalBakiyeFlat: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalKomaSharp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalKucukMucennebSharp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + articAccentAbove: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + articAccentBelow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + articTenutoAbove: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + articTenutoBelow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + articStaccatoAbove: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + articStaccatoBelow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + articStaccatissimoAbove: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + articStaccatissimoBelow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + articMarcatoAbove: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + articMarcatoBelow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + fermataAbove: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + fermataBelow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + fermataLongAbove: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + fermataLongBelow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + fermataVeryLongAbove: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + fermataVeryLongBelow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + fermataShortAbove: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + fermataShortBelow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + breathMarkComma: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + breathMarkUpbow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + caesura: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + caesuraCurved: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + restMaxima: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + restDoubleWhole: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + restWhole: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + restWholeLegerLine: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + restHalf: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + restHalfLegerLine: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + restQuarter: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + rest8th: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + rest16th: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + rest32nd: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + rest64th: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + rest128th: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + dynamicPiano: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + dynamicMezzo: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + dynamicForte: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + dynamicRinforzando: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + dynamicSforzando: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + dynamicZ: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentTrill: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentTurn: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentTurnSlash: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentMordent: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentShortTrill: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentTremblement: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentPrecompAppoggTrill: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentPrecompSlideTrillDAnglebert: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentPrecompSlideTrillBach: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentPrecompTrillSuffixDandrieu: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentPrecompDoubleCadenceUpperPrefix: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentPrecompDoubleCadenceUpperPrefixTurn: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentPrecompTrillLowerSuffix: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + stringsDownBow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + stringsUpBow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + stringsHarmonic: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + pluckedSnapPizzicatoAbove: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + pluckedSnapPizzicatoBelow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + pluckedLeftHandPizzicato: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + keyboardPedalPed: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + keyboardPedalUp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + pictChokeCymbal: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + wiggleArpeggiatoUp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + arrowheadBlackUp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + arrowheadBlackDown: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + vexAccidentalMicrotonal1: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + vexAccidentalMicrotonal2: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + vexWiggleArpeggioUp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + vexNoteHeadMutedBreve: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + }; + cssFontWeight: string; + ascender: number; + underlinePosition: number; + cssFontStyle: string; + boundingBox: { + yMin: number; + xMin: number; + yMax: number; + xMax: number; + }; + resolution: number; + original_font_information: { + postscript_name: string; + version_string: string; + vendor_url: string; + full_font_name: string; + font_family_name: string; + copyright: string; + description: string; + trademark: string; + designer: string; + designer_url: string; + unique_font_identifier: string; + license_url: string; + license_description: string; + manufacturer_name: string; + font_sub_family_name: string; + }; + descender: number; + fontFamily: string; + lineHeight: number; + underlineThickness: number; + }; + metrics: { + name: string; + smufl: boolean; + stave: { + padding: number; + endPaddingMax: number; + endPaddingMin: number; + unalignedNotePadding: number; + }; + accidental: { + noteheadAccidentalPadding: number; + leftPadding: number; + accidentalSpacing: number; + }; + clef: { + default: { + point: number; + width: number; + }; + small: { + point: number; + width: number; + }; + annotations: { + '8va': { + smuflCode: string; + default: { + point: number; + treble: { + line: number; + shiftX: number; + }; + }; + small: { + point: number; + treble: { + line: number; + shiftX: number; + }; + }; + }; + '8vb': { + smuflCode: string; + default: { + point: number; + treble: { + line: number; + shiftX: number; + }; + bass: { + line: number; + shiftX: number; + }; + }; + small: { + point: number; + treble: { + line: number; + shiftX: number; + }; + bass: { + line: number; + shiftX: number; + }; + }; + }; + }; + lineCount: { + '8': { + point: number; + shiftY: number; + }; + '7': { + point: number; + shiftY: number; + }; + '6': { + point: number; + shiftY: number; + }; + '5': { + point: number; + shiftY: number; + }; + '4': { + point: number; + shiftY: number; + }; + }; + }; + parenthesis: { + default: { + point: number; + width: number; + }; + gracenote: { + point: number; + width: number; + }; + }; + pedalMarking: { + up: { + point: number; + }; + down: { + point: number; + }; + }; + digits: { + point: number; + tupletPoint: number; + }; + tremolo: { + default: { + point: number; + spacing: number; + offsetYStemUp: number; + offsetYStemDown: number; + offsetXStemUp: number; + offsetXStemDown: number; + }; + grace: { + point: number; + spacing: number; + offsetYStemUp: number; + offsetYStemDown: number; + offsetXStemUp: number; + offsetXStemDown: number; + }; + }; + staveRepetition: { + symbolText: { + offsetX: number; + offsetY: number; + spacing: number; + }; + coda: { + offsetY: number; + }; + segno: { + offsetY: number; + }; + }; + stem: { + heightAdjustmentForFlag: number; + noteHead: { + noteheadTriangleUpHalf: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadTriangleUpBlack: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadTriangleUpWhole: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXHalf: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXBlack: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXWhole: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadHalf: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadBlack: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadSquareWhite: { + offsetYBaseStemDown: number; + offsetYBaseStemUp: number; + }; + }; + }; + glyphs: { + flag: { + shiftX: number; + flag8thDown: { + shiftX: number; + }; + flag16thDown: { + shiftX: number; + }; + flag32ndDown: { + shiftX: number; + shiftY: number; + }; + flag64thDown: { + shiftX: number; + shiftY: number; + }; + flag128thDown: { + shiftX: number; + shiftY: number; + }; + flag32ndUp: { + shiftY: number; + }; + flag64thUp: { + shiftY: number; + }; + flag128thUp: { + shiftY: number; + }; + }; + stringNumber: { + verticalPadding: number; + stemPadding: number; + leftPadding: number; + rightPadding: number; + }; + textNote: { + point: number; + default: {}; + ornamentTrill: { + shiftX: number; + shiftY: number; + }; + }; + noteHead: { + minPadding: number; + custom: { + noteheadCircleXStemUp: { + shiftX: number; + }; + noteheadXWholeStemUp: { + shiftX: number; + }; + noteheadTriangleUpWholeStemUp: { + shiftX: number; + }; + }; + }; + chordSymbol: { + global: { + superscriptOffset: number; + subscriptOffset: number; + kerningOffset: number; + lowerKerningText: string[]; + upperKerningText: string[]; + spacing: number; + superSubRatio: number; + }; + csymDiminished: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymHalfDiminished: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymAugmented: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensLeftTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensRightTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymBracketLeftTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymBracketRightTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensLeftVeryTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensRightVeryTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymDiagonalArrangementSlash: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymMinor: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymMajorSeventh: { + scale: number; + leftSideBearing: number; + yOffset: number; + advanceWidth: number; + }; + accidentalSharp: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + accidentalFlat: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + }; + jazzOrnaments: { + brassScoop: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassDoitMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFallLipShort: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassLiftMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFallRoughMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassBend: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassMuteClosed: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassMuteOpen: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFlip: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassJazzTurn: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassSmear: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + }; + tremolo: { + default: { + shiftY: number; + }; + grace: { + shiftY: number; + }; + }; + tuplet: { + noteHeadOffset: number; + stemOffset: number; + bottomLine: number; + topModifierOffset: number; + }; + }; + }; +}; +export default Font; diff --git a/build/types/entry/vexflow-font-leland.d.ts b/build/types/entry/vexflow-font-leland.d.ts new file mode 100644 index 0000000000..5cf45d8b6c --- /dev/null +++ b/build/types/entry/vexflow-font-leland.d.ts @@ -0,0 +1,1715 @@ +export declare const Font: { + data: { + glyphs: { + bracketTop: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + bracketBottom: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + segno: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + coda: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + gClef: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + cClef: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fClef: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + unpitchedPercussionClef1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + '6stringTabClef': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig0: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig3: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig4: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig5: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig6: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig7: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig8: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig9: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigCommon: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigCutCommon: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigPlus: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadXBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircleX: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDoubleWholeSquare: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSquareWhite: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSquareBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedDoubleWhole1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedWhole1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedHalf1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedBlack1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedDoubleWhole2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedWhole2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedHalf2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedBlack2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadParenthesisRight: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadParenthesisLeft: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadMoonBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleLeftBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleRightBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleRoundDownBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + augmentationDot: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + tremolo1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag8thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag8thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag16thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag16thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag32ndUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag32ndDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag64thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag64thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag128thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag128thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalNatural: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalDoubleSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalDoubleFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalParensLeft: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalParensRight: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalQuarterToneFlatStein: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalThreeQuarterTonesFlatZimmermann: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalQuarterToneSharpStein: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalThreeQuarterTonesSharpStein: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalBuyukMucennebFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalBakiyeFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalKucukMucennebSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articAccentAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articAccentBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articTenutoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articTenutoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatissimoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatissimoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articMarcatoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articMarcatoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataLongAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataLongBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataVeryLongAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataVeryLongBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataShortAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataShortBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + breathMarkComma: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + caesura: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + caesuraCurved: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restMaxima: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restWholeLegerLine: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restHalfLegerLine: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restQuarter: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest8th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest16th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest32nd: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest64th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest128th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicPiano: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicMezzo: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicForte: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicRinforzando: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicSforzando: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicZ: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTrill: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTurn: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTurnSlash: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentMordent: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentShortTrill: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTremblement: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompAppoggTrill: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompSlideTrillDAnglebert: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompSlideTrillBach: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompTrillSuffixDandrieu: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompDoubleCadenceUpperPrefix: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompTrillLowerSuffix: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassMuteClosed: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassMuteOpen: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + stringsDownBow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + stringsUpBow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + stringsHarmonic: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + pluckedSnapPizzicatoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + pluckedSnapPizzicatoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + keyboardPedalPed: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + keyboardPedalUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + wiggleArpeggiatoUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeat1Bar: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeat2Bars: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeat4Bars: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeatBarSlash: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymDiminished: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymHalfDiminished: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymAugmented: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymMajorSeventh: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalNarrowReversedFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalNarrowReversedFlatAndFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + }; + fontFamily: string; + resolution: number; + generatedOn: string; + }; + metrics: { + name: string; + smufl: boolean; + stave: { + padding: number; + endPaddingMax: number; + endPaddingMin: number; + unalignedNotePadding: number; + }; + accidental: { + noteheadAccidentalPadding: number; + leftPadding: number; + accidentalSpacing: number; + }; + clef: { + default: { + point: number; + width: number; + }; + small: { + point: number; + width: number; + }; + annotations: { + '8va': { + smuflCode: string; + default: { + point: number; + treble: { + line: number; + shiftX: number; + }; + }; + small: { + point: number; + treble: { + line: number; + shiftX: number; + }; + }; + }; + '8vb': { + smuflCode: string; + default: { + point: number; + treble: { + line: number; + shiftX: number; + }; + bass: { + line: number; + shiftX: number; + }; + }; + small: { + point: number; + treble: { + line: number; + shiftX: number; + }; + bass: { + line: number; + shiftX: number; + }; + }; + }; + }; + lineCount: { + '8': { + point: number; + shiftY: number; + }; + '7': { + point: number; + shiftY: number; + }; + '6': { + point: number; + shiftY: number; + }; + '5': { + point: number; + shiftY: number; + }; + '4': { + point: number; + shiftY: number; + }; + }; + }; + parenthesis: { + default: { + point: number; + width: number; + }; + gracenote: { + point: number; + width: number; + }; + }; + pedalMarking: { + up: { + point: number; + }; + down: { + point: number; + }; + }; + digits: { + shiftLine: number; + point: number; + tupletPoint: number; + shiftY: number; + }; + articulation: { + articStaccatissimoAbove: { + padding: number; + }; + articStaccatissimoBelow: { + padding: number; + }; + }; + tremolo: { + default: { + point: number; + spacing: number; + offsetYStemUp: number; + offsetYStemDown: number; + offsetXStemUp: number; + offsetXStemDown: number; + }; + grace: { + point: number; + spacing: number; + offsetYStemUp: number; + offsetYStemDown: number; + offsetXStemUp: number; + offsetXStemDown: number; + }; + }; + staveRepetition: { + symbolText: { + offsetX: number; + offsetY: number; + spacing: number; + }; + coda: { + offsetY: number; + }; + segno: { + offsetY: number; + }; + }; + stem: { + heightAdjustmentForFlag: number; + noteHead: { + noteheadTriangleUpHalf: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadTriangleUpBlack: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadTriangleUpWhole: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXHalf: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXBlack: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXWhole: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadHalf: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadBlack: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadSquareWhite: { + offsetYBaseStemDown: number; + offsetYBaseStemUp: number; + }; + }; + }; + glyphs: { + coda: { + point: number; + shiftX: number; + shiftY: number; + }; + segno: { + shiftX: number; + }; + flag: { + shiftX: number; + staveTempo: { + shiftX: number; + }; + }; + clef: { + gClef: { + default: { + scale: number; + shiftY: number; + }; + small: { + shiftY: number; + }; + }; + fClef: { + default: { + shiftY: number; + }; + }; + }; + ornament: { + ornamentTurn: { + scale: number; + }; + ornamentTurnSlash: { + scale: number; + }; + }; + stringNumber: { + verticalPadding: number; + stemPadding: number; + leftPadding: number; + rightPadding: number; + }; + stroke: { + arrowheadBlackDown: { + straight: { + shiftX: number; + }; + wiggly: { + shiftX: number; + shiftY: number; + }; + }; + arrowheadBlackUp: { + straight: { + shiftX: number; + }; + wiggly: { + shiftX: number; + shiftY: number; + }; + }; + }; + textNote: { + point: number; + breathMarkTick: { + point: number; + shiftY: number; + }; + breathMarkComma: { + point: number; + }; + segno: { + point: number; + shiftX: number; + shiftY: number; + }; + coda: { + point: number; + shiftX: number; + shiftY: number; + }; + ornamentTrill: { + shiftX: number; + shiftY: number; + }; + ornamentTurn: { + point: number; + }; + ornamentTurnSlash: { + point: number; + }; + ornamentMordent: { + shiftX: number; + }; + ornamentShortTrill: { + shiftX: number; + }; + }; + noteHead: { + minPadding: number; + standard: { + restQuarterStemUp: { + point: number; + }; + restQuarterStemDown: { + point: number; + }; + }; + custom: { + noteheadCircleXStemUp: { + shiftX: number; + }; + noteheadCircleXStemDown: { + shiftX: number; + }; + noteheadDiamondHalfStemUp: { + shiftX: number; + }; + noteheadDiamondBlackStemUp: { + shiftX: number; + }; + noteheadDiamondWholeStemUp: { + shiftX: number; + }; + noteheadXHalfStemUp: { + shiftX: number; + }; + noteheadXHalfStemDown: { + shiftX: number; + }; + noteheadXWholeStemUp: { + shiftX: number; + }; + noteheadXWholeStemDown: { + shiftX: number; + }; + noteheadSquareWhiteStemDown: { + shiftX: number; + }; + noteheadSquareWhiteStemUp: { + shiftX: number; + }; + noteheadSquareBlackStemUp: { + shiftX: number; + }; + noteheadTriangleUpWholeStemUp: { + shiftX: number; + }; + }; + }; + chordSymbol: { + global: { + superscriptOffset: number; + subscriptOffset: number; + kerningOffset: number; + lowerKerningText: string[]; + upperKerningText: string[]; + spacing: number; + superSubRatio: number; + }; + csymDiminished: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymHalfDiminished: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymAugmented: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensLeftTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensRightTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymBracketLeftTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymBracketRightTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensLeftVeryTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensRightVeryTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymDiagonalArrangementSlash: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymMinor: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymMajorSeventh: { + scale: number; + leftSideBearing: number; + yOffset: number; + advanceWidth: number; + }; + accidentalSharp: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + accidentalFlat: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + }; + jazzOrnaments: { + brassScoop: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassDoitMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFallLipShort: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassLiftMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFallRoughMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassBend: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassMuteClosed: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassMuteOpen: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFlip: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassJazzTurn: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassSmear: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + }; + tuplet: { + noteHeadOffset: number; + stemOffset: number; + bottomLine: number; + topModifierOffset: number; + }; + }; + }; +}; +export default Font; diff --git a/build/types/entry/vexflow-font-petaluma.d.ts b/build/types/entry/vexflow-font-petaluma.d.ts new file mode 100644 index 0000000000..d196dd624d --- /dev/null +++ b/build/types/entry/vexflow-font-petaluma.d.ts @@ -0,0 +1,2182 @@ +export declare const Font: { + data: { + glyphs: { + bracketTop: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + bracketBottom: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + barlineTick: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + breathMarkTick: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + segno: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + coda: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + gClef: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + cClef: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fClef: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + unpitchedPercussionClef1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + '6stringTabClef': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig0: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig3: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig4: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig5: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig6: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig7: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig8: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig9: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigCommon: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigCutCommon: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigPlus: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigPlusSmall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigMinus: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigParensRight: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigParensRightSmall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigParensLeft: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigParensLeftSmall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadXDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadXWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadXHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadXBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircleXDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircleXWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircleXHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircleX: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircledDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircledWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircledHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircledBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDoubleWholeSquare: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSquareWhite: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSquareBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleDownDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleDownWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleDownHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleDownBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedDoubleWhole1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedWhole1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedHalf1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedBlack1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedDoubleWhole2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedWhole2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedHalf2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedBlack2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadParenthesis: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadParenthesisRight: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadParenthesisLeft: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadMoonBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleLeftBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleRightBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleRoundDownBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + augmentationDot: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + tremolo1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag8thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag8thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag16thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag16thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag32ndUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag32ndDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag64thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag64thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag128thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag128thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalNatural: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalDoubleSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalDoubleFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalParensLeft: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalParensRight: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalQuarterToneFlatStein: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalThreeQuarterTonesFlatZimmermann: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalQuarterToneSharpStein: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalThreeQuarterTonesSharpStein: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalBuyukMucennebFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalBakiyeFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalKomaSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalKucukMucennebSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalKoron: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalSori: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articAccentAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articAccentBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articTenutoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articTenutoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatissimoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatissimoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articMarcatoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articMarcatoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataLongAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataLongBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataVeryLongAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataVeryLongBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataShortAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataShortBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + breathMarkComma: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + breathMarkUpbow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + caesura: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + caesuraCurved: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restMaxima: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restWholeLegerLine: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restHalfLegerLine: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restQuarter: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest8th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest16th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest32nd: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest64th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest128th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicPiano: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicMezzo: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicForte: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicRinforzando: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicSforzando: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicZ: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTrill: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTurn: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTurnSlash: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentMordent: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentShortTrill: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTremblement: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompAppoggTrill: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompSlideTrillDAnglebert: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompSlideTrillBach: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompTrillSuffixDandrieu: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompDoubleCadenceUpperPrefix: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompDoubleCadenceUpperPrefixTurn: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompTrillLowerSuffix: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassScoop: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassDoitMedium: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassFallLipShort: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassLiftMedium: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassFallRoughMedium: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassBend: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassMuteClosed: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassMuteOpen: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassFlip: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassJazzTurn: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassSmear: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + stringsDownBow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + stringsUpBow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + stringsHarmonic: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + pluckedSnapPizzicatoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + pluckedSnapPizzicatoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + pluckedLeftHandPizzicato: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + keyboardPedalPed: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + keyboardPedalUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + pictChokeCymbal: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + wiggleArpeggiatoUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + arpeggiatoUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + arpeggiatoDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeat1Bar: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeat2Bars: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeat4Bars: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeatBarSlash: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymDiminished: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymHalfDiminished: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymAugmented: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymMajorSeventh: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymMinor: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymParensLeftTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymParensRightTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymBracketLeftTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymBracketRightTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymParensLeftVeryTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymParensRightVeryTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymDiagonalArrangementSlash: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalNarrowReversedFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalNarrowReversedFlatAndFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalWilsonPlus: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalWilsonMinus: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + }; + fontFamily: string; + resolution: number; + generatedOn: string; + }; + metrics: { + name: string; + smufl: boolean; + stave: { + padding: number; + endPaddingMax: number; + endPaddingMin: number; + unalignedNotePadding: number; + }; + accidental: { + noteheadAccidentalPadding: number; + leftPadding: number; + accidentalSpacing: number; + }; + clef: { + default: { + point: number; + width: number; + }; + small: { + point: number; + width: number; + }; + annotations: { + '8va': { + smuflCode: string; + default: { + point: number; + treble: { + line: number; + shiftX: number; + }; + }; + small: { + point: number; + treble: { + line: number; + shiftX: number; + }; + }; + }; + '8vb': { + smuflCode: string; + default: { + point: number; + treble: { + line: number; + shiftX: number; + }; + bass: { + line: number; + shiftX: number; + }; + }; + small: { + point: number; + treble: { + line: number; + shiftX: number; + }; + bass: { + line: number; + shiftX: number; + }; + }; + }; + }; + lineCount: { + '8': { + point: number; + shiftY: number; + }; + '7': { + point: number; + shiftY: number; + }; + '6': { + point: number; + shiftY: number; + }; + '5': { + point: number; + shiftY: number; + }; + '4': { + point: number; + shiftY: number; + }; + }; + }; + parenthesis: { + default: { + point: number; + width: number; + }; + gracenote: { + point: number; + width: number; + }; + }; + pedalMarking: { + up: { + point: number; + }; + down: { + point: number; + }; + }; + digits: { + shiftLine: number; + point: number; + tupletPoint: number; + shiftY: number; + }; + articulation: { + articStaccatissimoAbove: { + padding: number; + }; + articStaccatissimoBelow: { + padding: number; + }; + }; + tremolo: { + default: { + point: number; + spacing: number; + offsetYStemUp: number; + offsetYStemDown: number; + offsetXStemUp: number; + offsetXStemDown: number; + }; + grace: { + point: number; + spacing: number; + offsetYStemUp: number; + offsetYStemDown: number; + offsetXStemUp: number; + offsetXStemDown: number; + }; + }; + staveRepetition: { + symbolText: { + offsetX: number; + offsetY: number; + spacing: number; + }; + coda: { + offsetY: number; + }; + segno: { + offsetY: number; + }; + }; + noteHead: { + displaced: { + shiftX: number; + }; + }; + stem: { + heightAdjustmentForFlag: number; + noteHead: { + noteheadTriangleUpHalf: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadTriangleUpBlack: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadTriangleUpWhole: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXHalf: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXBlack: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXWhole: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadHalf: { + offsetYBaseStemDown: number; + offsetYBaseStemUp: number; + }; + noteheadBlack: { + offsetYBaseStemDown: number; + offsetYBaseStemUp: number; + }; + noteheadSquareWhite: { + offsetYBaseStemDown: number; + offsetYBaseStemUp: number; + }; + }; + }; + glyphs: { + coda: { + point: number; + shiftX: number; + shiftY: number; + }; + segno: { + shiftX: number; + }; + flag: { + shiftX: number; + flag16thUp: { + shiftX: number; + }; + flag32ndUp: { + shiftX: number; + }; + flag64thUp: { + shiftX: number; + }; + flag128thUp: { + shiftX: number; + }; + flag16thDown: { + shiftX: number; + }; + flag32ndDown: { + shiftX: number; + }; + flag64thDown: { + shiftX: number; + }; + flag128thDown: { + shiftX: number; + }; + staveTempo: { + shiftX: number; + }; + }; + clef: { + gClef: { + default: { + scale: number; + shiftY: number; + }; + small: { + shiftY: number; + }; + }; + fClef: { + default: { + shiftY: number; + }; + }; + }; + ornament: { + ornamentTurn: { + scale: number; + }; + ornamentTurnSlash: { + scale: number; + }; + }; + stringNumber: { + verticalPadding: number; + stemPadding: number; + leftPadding: number; + rightPadding: number; + }; + stroke: { + arrowheadBlackDown: { + straight: { + shiftX: number; + }; + wiggly: { + shiftX: number; + shiftY: number; + }; + }; + arrowheadBlackUp: { + straight: { + shiftX: number; + }; + wiggly: { + shiftX: number; + shiftY: number; + }; + }; + }; + textNote: { + point: number; + breathMarkTick: { + point: number; + shiftY: number; + }; + breathMarkComma: { + point: number; + }; + segno: { + point: number; + shiftX: number; + shiftY: number; + }; + coda: { + point: number; + shiftX: number; + shiftY: number; + }; + ornamentTrill: { + shiftX: number; + shiftY: number; + }; + ornamentMordent: { + shiftX: number; + }; + ornamentShortTrill: { + shiftX: number; + }; + }; + noteHead: { + minPadding: number; + standard: { + noteheadBlackStemUp: { + shiftX: number; + }; + noteheadHalfStemUp: { + shiftX: number; + }; + noteheadWholeStemUp: { + shiftX: number; + }; + }; + custom: { + noteheadCircleXStemUp: { + shiftX: number; + }; + noteheadCircleXStemDown: { + shiftX: number; + }; + noteheadDiamondHalfStemUp: { + shiftX: number; + }; + noteheadDiamondBlackStemUp: { + shiftX: number; + }; + noteheadDiamondWholeStemUp: { + shiftX: number; + }; + noteheadXBlackStemUp: { + shiftX: number; + }; + noteheadXHalfStemUp: { + shiftX: number; + }; + noteheadXHalfStemDown: { + shiftX: number; + }; + noteheadXWholeStemUp: { + shiftX: number; + }; + noteheadXWholeStemDown: { + shiftX: number; + }; + noteheadXDoubleWholeStemUp: { + shiftX: number; + }; + noteheadXDoubleWholeStemDown: { + shiftX: number; + }; + noteheadSquareWhiteStemDown: { + shiftX: number; + }; + noteheadSquareWhiteStemUp: { + shiftX: number; + }; + noteheadSquareBlackStemUp: { + shiftX: number; + }; + noteheadTriangleUpWholeStemUp: { + shiftX: number; + }; + }; + }; + chordSymbol: { + global: { + superscriptOffset: number; + subscriptOffset: number; + kerningOffset: number; + lowerKerningText: string[]; + upperKerningText: string[]; + spacing: number; + superSubRatio: number; + }; + csymDiminished: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymHalfDiminished: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymAugmented: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensLeftTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensRightTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymBracketLeftTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymBracketRightTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensLeftVeryTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensRightVeryTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymDiagonalArrangementSlash: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymMinor: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymMajorSeventh: { + scale: number; + leftSideBearing: number; + yOffset: number; + advanceWidth: number; + }; + accidentalSharp: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + accidentalFlat: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + }; + jazzOrnaments: { + brassScoop: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassDoitMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFallLipShort: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassLiftMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFallRoughMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassBend: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassMuteClosed: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassMuteOpen: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFlip: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassJazzTurn: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassSmear: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + }; + tuplet: { + noteHeadOffset: number; + stemOffset: number; + bottomLine: number; + topModifierOffset: number; + }; + }; + }; +}; +export default Font; diff --git a/build/types/entry/vexflow-gonville.d.ts b/build/types/entry/vexflow-gonville.d.ts new file mode 100644 index 0000000000..a5193666d7 --- /dev/null +++ b/build/types/entry/vexflow-gonville.d.ts @@ -0,0 +1,2 @@ +export * from '../src/index'; +export * as default from '../src/index'; diff --git a/build/types/entry/vexflow-leland.d.ts b/build/types/entry/vexflow-leland.d.ts new file mode 100644 index 0000000000..a5193666d7 --- /dev/null +++ b/build/types/entry/vexflow-leland.d.ts @@ -0,0 +1,2 @@ +export * from '../src/index'; +export * as default from '../src/index'; diff --git a/build/types/entry/vexflow-petaluma.d.ts b/build/types/entry/vexflow-petaluma.d.ts new file mode 100644 index 0000000000..a5193666d7 --- /dev/null +++ b/build/types/entry/vexflow-petaluma.d.ts @@ -0,0 +1,2 @@ +export * from '../src/index'; +export * as default from '../src/index'; diff --git a/build/types/entry/vexflow.d.ts b/build/types/entry/vexflow.d.ts new file mode 100644 index 0000000000..a5193666d7 --- /dev/null +++ b/build/types/entry/vexflow.d.ts @@ -0,0 +1,2 @@ +export * from '../src/index'; +export * as default from '../src/index'; diff --git a/build/types/src/accidental.d.ts b/build/types/src/accidental.d.ts new file mode 100644 index 0000000000..33b50bbe8c --- /dev/null +++ b/build/types/src/accidental.d.ts @@ -0,0 +1,66 @@ +import { Glyph } from './glyph'; +import { Modifier } from './modifier'; +import { ModifierContextState } from './modifiercontext'; +import { Note } from './note'; +import { Voice } from './voice'; +export declare type Line = { + column: number; + line: number; + flatLine: boolean; + dblSharpLine: boolean; + numAcc: number; + width: number; +}; +/** + * An `Accidental` inherits from `Modifier`, and is formatted within a + * `ModifierContext`. Accidentals are modifiers that can be attached to + * notes. Support is included for both western and microtonal accidentals. + * + * See `tests/accidental_tests.ts` for usage examples. + */ +export declare class Accidental extends Modifier { + /** Accidental code provided to the constructor. */ + readonly type: string; + /** To enable logging for this class. Set `Vex.Flow.Accidental.DEBUG` to `true`. */ + static DEBUG: boolean; + protected accidental: { + code: string; + parenRightPaddingAdjustment: number; + }; + render_options: { + parenLeftPadding: number; + font_scale: number; + parenRightPadding: number; + }; + protected cautionary: boolean; + protected glyph: Glyph; + protected parenRight?: Glyph; + protected parenLeft?: Glyph; + /** Accidentals category string. */ + static get CATEGORY(): string; + /** Arrange accidentals inside a ModifierContext. */ + static format(accidentals: Accidental[], state: ModifierContextState): void; + /** Helper function to determine whether two lines of accidentals collide vertically */ + static checkCollision(line1: Line, line2: Line): boolean; + /** + * Use this method to automatically apply accidentals to a set of `voices`. + * The accidentals will be remembered between all the voices provided. + * Optionally, you can also provide an initial `keySignature`. + */ + static applyAccidentals(voices: Voice[], keySignature: string): void; + /** + * Create accidental. + * @param type value from `Vex.Flow.accidentalCodes.accidentals` table in `tables.ts`. + * For example: `#`, `##`, `b`, `n`, etc. + */ + constructor(type: string); + protected reset(): void; + /** Get width in pixels. */ + getWidth(): number; + /** Attach this accidental to `note`, which must be a `StaveNote`. */ + setNote(note: Note): this; + /** If called, draws parenthesis around accidental. */ + setAsCautionary(): this; + /** Render accidental onto canvas. */ + draw(): void; +} diff --git a/build/types/src/annotation.d.ts b/build/types/src/annotation.d.ts new file mode 100644 index 0000000000..f94eb8d63b --- /dev/null +++ b/build/types/src/annotation.d.ts @@ -0,0 +1,61 @@ +import { FontInfo } from './font'; +import { Modifier } from './modifier'; +import { ModifierContextState } from './modifiercontext'; +export declare enum AnnotationHorizontalJustify { + LEFT = 1, + CENTER = 2, + RIGHT = 3, + CENTER_STEM = 4 +} +export declare enum AnnotationVerticalJustify { + TOP = 1, + CENTER = 2, + BOTTOM = 3, + CENTER_STEM = 4 +} +/** + * Annotations are modifiers that can be attached to + * notes. + * + * See `tests/annotation_tests.ts` for usage examples. + */ +export declare class Annotation extends Modifier { + /** To enable logging for this class. Set `Vex.Flow.Annotation.DEBUG` to `true`. */ + static DEBUG: boolean; + /** Annotations category string. */ + static get CATEGORY(): string; + static TEXT_FONT: Required; + /** Text annotations can be positioned and justified relative to the note. */ + static HorizontalJustify: typeof AnnotationHorizontalJustify; + static HorizontalJustifyString: Record; + static VerticalJustify: typeof AnnotationVerticalJustify; + static VerticalJustifyString: Record; + static get minAnnotationPadding(): number; + /** Arrange annotations within a `ModifierContext` */ + static format(annotations: Annotation[], state: ModifierContextState): boolean; + protected horizontalJustification: AnnotationHorizontalJustify; + protected verticalJustification: AnnotationVerticalJustify; + protected text: string; + /** + * Annotations inherit from `Modifier` and is positioned correctly when + * in a `ModifierContext`. + * Create a new `Annotation` with the string `text`. + */ + constructor(text: string); + /** + * Set vertical position of text (above or below stave). + * @param just value in `AnnotationVerticalJustify`. + */ + setVerticalJustification(just: string | AnnotationVerticalJustify): this; + /** + * Get horizontal justification. + */ + getJustification(): AnnotationHorizontalJustify; + /** + * Set horizontal justification. + * @param justification value in `Annotation.Justify`. + */ + setJustification(just: string | AnnotationHorizontalJustify): this; + /** Render text beside the note. */ + draw(): void; +} diff --git a/build/types/src/articulation.d.ts b/build/types/src/articulation.d.ts new file mode 100644 index 0000000000..d15e493e27 --- /dev/null +++ b/build/types/src/articulation.d.ts @@ -0,0 +1,62 @@ +import { Builder } from './easyscore'; +import { Glyph } from './glyph'; +import { Modifier } from './modifier'; +import { ModifierContextState } from './modifiercontext'; +import { StemmableNote } from './stemmablenote'; +export interface ArticulationStruct { + code?: string; + aboveCode?: string; + belowCode?: string; + between_lines: boolean; +} +/** + * Articulations and Accents are modifiers that can be + * attached to notes. The complete list of articulations is available in + * `tables.ts` under `Vex.Flow.articulationCodes`. + * + * See `tests/articulation_tests.ts` for usage examples. + */ +export declare class Articulation extends Modifier { + /** To enable logging for this class. Set `Vex.Flow.Articulation.DEBUG` to `true`. */ + static DEBUG: boolean; + /** Articulations category string. */ + static get CATEGORY(): string; + protected static readonly INITIAL_OFFSET: number; + /** Articulation code provided to the constructor. */ + readonly type: string; + render_options: { + font_scale: number; + }; + protected articulation: ArticulationStruct; + protected glyph: Glyph; + /** + * FIXME: + * Most of the complex formatting logic (ie: snapping to space) is + * actually done in .render(). But that logic belongs in this method. + * + * Unfortunately, this isn't possible because, by this point, stem lengths + * have not yet been finalized. Finalized stem lengths are required to determine the + * initial position of any stem-side articulation. + * + * This indicates that all objects should have their stave set before being + * formatted. It can't be an optional if you want accurate vertical positioning. + * Consistently positioned articulations that play nice with other modifiers + * won't be possible until we stop relying on render-time formatting. + * + * Ideally, when this function has completed, the vertical articulation positions + * should be ready to render without further adjustment. But the current state + * is far from this ideal. + */ + static format(articulations: Articulation[], state: ModifierContextState): boolean; + static easyScoreHook({ articulations }: { + articulations: string; + }, note: StemmableNote, builder: Builder): void; + /** + * Create a new articulation. + * @param type entry in `Vex.Flow.articulationCodes` in `tables.ts` + */ + constructor(type: string); + protected reset(): void; + /** Render articulation in position next to note. */ + draw(): void; +} diff --git a/build/types/src/barnote.d.ts b/build/types/src/barnote.d.ts new file mode 100644 index 0000000000..b3175ff022 --- /dev/null +++ b/build/types/src/barnote.d.ts @@ -0,0 +1,29 @@ +import { ModifierContext } from './modifiercontext'; +import { Note } from './note'; +import { BarlineType } from './stavebarline'; +/** + * A `BarNote` is used to render bar lines (from `barline.ts`). `BarNote`s can + * be added to a voice and rendered in the middle of a stave. Since it has no + * duration, it consumes no `tick`s, and is dealt with appropriately by the formatter. + * + * See `tests/barnote_tests.ts` for usage examples. + */ +export declare class BarNote extends Note { + /** To enable logging for this class. Set `Vex.Flow.BarNote.DEBUG` to `true`. */ + static DEBUG: boolean; + static get CATEGORY(): string; + protected metrics: { + widths: Record; + }; + protected type: BarlineType; + constructor(type?: string | BarlineType); + /** Get the type of bar note.*/ + getType(): BarlineType; + /** Set the type of bar note. */ + setType(type: string | BarlineType): this; + addToModifierContext(mc: ModifierContext): this; + /** Overridden to ignore. */ + preFormat(): this; + /** Render note to stave. */ + draw(): void; +} diff --git a/build/types/src/beam.d.ts b/build/types/src/beam.d.ts new file mode 100644 index 0000000000..e6abf96ff9 --- /dev/null +++ b/build/types/src/beam.d.ts @@ -0,0 +1,153 @@ +import { Element } from './element'; +import { Fraction } from './fraction'; +import { RenderContext } from './rendercontext'; +import { StemmableNote } from './stemmablenote'; +import { Voice } from './voice'; +export declare const BEAM_LEFT = "L"; +export declare const BEAM_RIGHT = "R"; +export declare const BEAM_BOTH = "B"; +export declare type PartialBeamDirection = typeof BEAM_LEFT | typeof BEAM_RIGHT | typeof BEAM_BOTH; +/** `Beams` span over a set of `StemmableNotes`. */ +export declare class Beam extends Element { + static get CATEGORY(): string; + render_options: { + flat_beam_offset?: number; + flat_beams: boolean; + secondary_break_ticks?: number; + show_stemlets: boolean; + beam_width: number; + max_slope: number; + min_slope: number; + slope_iterations: number; + slope_cost: number; + stemlet_extension: number; + partial_beam_length: number; + min_flat_beam_offset: number; + }; + notes: StemmableNote[]; + postFormatted: boolean; + slope: number; + private readonly stem_direction; + private readonly ticks; + private y_shift; + private break_on_indices; + private beam_count; + private unbeamable?; + /** + * Overrides to default beam directions for secondary-level beams that do not + * connect to any other note. See further explanation at + * `setPartialBeamSideAt` + */ + private forcedPartialDirections; + /** Get the direction of the beam */ + getStemDirection(): number; + /** + * Get the default beam groups for a provided time signature. + * Attempt to guess if the time signature is not found in table. + * Currently this is fairly naive. + */ + static getDefaultBeamGroups(time_sig: string): Fraction[]; + /** + * A helper function to automatically build basic beams for a voice. For more + * complex auto-beaming use `Beam.generateBeams()`. + * @param voice the voice to generate the beams for + * @param stem_direction a stem direction to apply to the entire voice + * @param groups an array of `Fraction` representing beat groupings for the beam + */ + static applyAndGetBeams(voice: Voice, stem_direction?: number, groups?: Fraction[]): Beam[]; + /** + * A helper function to autimatically build beams for a voice with + * configuration options. + * + * Example configuration object: + * + * ``` + * config = { + * groups: [new Vex.Flow.Fraction(2, 8)], + * stem_direction: -1, + * beam_rests: true, + * beam_middle_only: true, + * show_stemlets: false + * }; + * ``` + * @param notes an array of notes to create the beams for + * @param config the configuration object + * @param config.stem_direction set to apply the same direction to all notes + * @param config.beam_rests set to `true` to include rests in the beams + * @param config.beam_middle_only set to `true` to only beam rests in the middle of the beat + * @param config.show_stemlets set to `true` to draw stemlets for rests + * @param config.maintain_stem_directions set to `true` to not apply new stem directions + * @param config.groups array of `Fractions` that represent the beat structure to beam the notes + * + */ + static generateBeams(notes: StemmableNote[], config?: { + flat_beam_offset?: number; + flat_beams?: boolean; + secondary_breaks?: string; + show_stemlets?: boolean; + maintain_stem_directions?: boolean; + beam_middle_only?: boolean; + beam_rests?: boolean; + groups?: Fraction[]; + stem_direction?: number; + }): Beam[]; + constructor(notes: StemmableNote[], auto_stem?: boolean); + /** Get the notes in this beam. */ + getNotes(): StemmableNote[]; + /** Get the max number of beams in the set of notes. */ + getBeamCount(): number; + /** Set which note `indices` to break the secondary beam at. */ + breakSecondaryAt(indices: number[]): this; + /** + * Forces the direction of a partial beam (a secondary-level beam that exists + * on one note only of the beam group). This is useful in rhythms such as 6/8 + * eighth-sixteenth-eighth-sixteenth, where the direction of the beam on the + * first sixteenth note can help imply whether the rhythm is to be felt as + * three groups of eighth notes (typical) or as two groups of three-sixteenths + * (less common): + * ``` + * ┌───┬──┬──┐ ┌──┬──┬──┐ + * │ ├─ │ ─┤ vs │ ─┤ │ ─┤ + * │ │ │ │ │ │ │ │ + * ``` + */ + setPartialBeamSideAt(noteIndex: number, side: PartialBeamDirection): this; + /** + * Restore the default direction of a partial beam (a secondary-level beam + * that does not connect to any other notes). + */ + unsetPartialBeamSideAt(noteIndex: number): this; + /** Return the y coordinate for linear function. */ + getSlopeY(x: number, first_x_px: number, first_y_px: number, slope: number): number; + /** Calculate the best possible slope for the provided notes. */ + calculateSlope(): void; + /** Calculate a slope and y-shift for flat beams. */ + calculateFlatSlope(): void; + /** Return the Beam y offset. */ + getBeamYToDraw(): number; + /** + * Create new stems for the notes in the beam, so that each stem + * extends into the beams. + */ + applyStemExtensions(): void; + /** Return upper level beam direction. */ + lookupBeamDirection(duration: string, prev_tick: number, tick: number, next_tick: number, noteIndex: number): PartialBeamDirection; + /** Get the x coordinates for the beam lines of specific `duration`. */ + getBeamLines(duration: string): { + start: number; + end?: number; + }[]; + /** Render the stems for each note. */ + protected drawStems(ctx: RenderContext): void; + protected drawBeamLines(ctx: RenderContext): void; + /** Pre-format the beam. */ + preFormat(): this; + /** + * Post-format the beam. This can only be called after + * the notes in the beam have both `x` and `y` values. ie: they've + * been formatted and have staves. + */ + postFormat(): void; + /** Render the beam to the canvas context */ + draw(): void; +} diff --git a/build/types/src/bend.d.ts b/build/types/src/bend.d.ts new file mode 100644 index 0000000000..a9a98cd821 --- /dev/null +++ b/build/types/src/bend.d.ts @@ -0,0 +1,73 @@ +import { FontInfo } from './font'; +import { Modifier } from './modifier'; +import { ModifierContextState } from './modifiercontext'; +export interface BendPhrase { + x?: number; + type: number; + text: string; + width?: number; + draw_width?: number; +} +/** Bend implements tablature bends. */ +export declare class Bend extends Modifier { + static get CATEGORY(): string; + static get UP(): number; + static get DOWN(): number; + /** Default text font. */ + static TEXT_FONT: Required; + static format(bends: Bend[], state: ModifierContextState): boolean; + protected text: string; + protected tap: string; + protected release: boolean; + protected phrase: BendPhrase[]; + render_options: { + line_width: number; + release_width: number; + bend_width: number; + line_style: string; + }; + /** + * Example of a phrase: + * ``` + * [{ + * type: UP, + * text: "whole" + * width: 8; + * }, + * { + * type: DOWN, + * text: "whole" + * width: 8; + * }, + * { + * type: UP, + * text: "half" + * width: 8; + * }, + * { + * type: UP, + * text: "whole" + * width: 8; + * }, + * { + * type: DOWN, + * text: "1 1/2" + * width: 8; + * }] + * ``` + * @param text text for bend ("Full", "Half", etc.) (DEPRECATED) + * @param release if true, render a release. (DEPRECATED) + * @param phrase if set, ignore "text" and "release", and use the more sophisticated phrase specified + */ + constructor(text: string, release?: boolean, phrase?: BendPhrase[]); + /** Set horizontal shift in pixels. */ + setXShift(value: number): this; + setTap(value: string): this; + /** Get text provided in the constructor. */ + getText(): string; + getTextHeight(): number; + /** Recalculate width. */ + protected updateWidth(): this; + /** Draw the bend on the rendering context. */ + draw(): void; +} diff --git a/build/types/src/boundingbox.d.ts b/build/types/src/boundingbox.d.ts new file mode 100644 index 0000000000..dfe3b3bce0 --- /dev/null +++ b/build/types/src/boundingbox.d.ts @@ -0,0 +1,42 @@ +export interface Bounds { + x: number; + y: number; + w: number; + h: number; +} +export declare class BoundingBox implements Bounds { + x: number; + y: number; + w: number; + h: number; + /** + * Create a new copy. + */ + static copy(that: BoundingBox): BoundingBox; + constructor(x: number, y: number, w: number, h: number); + /** Get x position. */ + getX(): number; + /** Get y position. */ + getY(): number; + /** Get width. */ + getW(): number; + /** Get height. */ + getH(): number; + /** Set x position. */ + setX(x: number): this; + /** Set y position. */ + setY(y: number): this; + /** Set width. */ + setW(w: number): this; + /** Set height. */ + setH(h: number): this; + /** Move to position. */ + move(x: number, y: number): this; + /** Clone. */ + clone(): BoundingBox; + /** + * Merge my box with given box. Creates a bigger bounding box unless + * the given box is contained in this one. + */ + mergeWith(boundingBox: BoundingBox): this; +} diff --git a/build/types/src/boundingboxcomputation.d.ts b/build/types/src/boundingboxcomputation.d.ts new file mode 100644 index 0000000000..3ad9086536 --- /dev/null +++ b/build/types/src/boundingboxcomputation.d.ts @@ -0,0 +1,33 @@ +/** + * BoundingBoxComputation computes metrics for a bounding box by continuously + * taking canvas path commands. + * + * Warning: This class is merely a crutch to get bounding box information without + * explicit metadata. This is likely to get deprecated following SMuFL support. + * + * based on: https://github.com/canvg/canvg/blob/master/src/BoundingBox.ts (MIT License) + */ +export declare class BoundingBoxComputation { + protected x1: number; + protected y1: number; + protected x2: number; + protected y2: number; + /** Get calculated X1. */ + getX1(): number; + /** Get calculated Y1. */ + getY1(): number; + /** Get calculated width. */ + width(): number; + /** Get calculated height. */ + height(): number; + /** Add point to BoundingBox. */ + addPoint(x: number, y: number): void; + /** Add X to BoundingBox. */ + addX(x: number): void; + /** Add Y to BoundingBox. */ + addY(y: number): void; + /** Add quadratic curve to BoundingBox. */ + addQuadraticCurve(p0x: number, p0y: number, p1x: number, p1y: number, p2x: number, p2y: number): void; + /** Add bezier curve to BoundingBox. */ + addBezierCurve(p0x: number, p0y: number, p1x: number, p1y: number, p2x: number, p2y: number, p3x: number, p3y: number): void; +} diff --git a/build/types/src/canvascontext.d.ts b/build/types/src/canvascontext.d.ts new file mode 100644 index 0000000000..66c63216fe --- /dev/null +++ b/build/types/src/canvascontext.d.ts @@ -0,0 +1,89 @@ +import { FontInfo } from './font'; +import { GroupAttributes, RenderContext, TextMeasure } from './rendercontext'; +interface OffscreenCanvas extends EventTarget { + width: number; + height: number; +} +interface OffscreenCanvasRenderingContext2D extends CanvasState, CanvasTransform, CanvasCompositing, CanvasImageSmoothing, CanvasFillStrokeStyles, CanvasShadowStyles, CanvasFilters, CanvasRect, CanvasDrawPath, CanvasText, CanvasDrawImage, CanvasImageData, CanvasPathDrawingStyles, CanvasTextDrawingStyles, CanvasPath { + readonly canvas: OffscreenCanvas; +} +/** + * A rendering context for the Canvas backend. This class serves as a proxy for the + * underlying CanvasRenderingContext2D object, part of the browser's API. + */ +export declare class CanvasContext extends RenderContext { + /** The 2D rendering context from the Canvas API. Forward method calls to this object. */ + context2D: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D; + /** + * The HTMLCanvasElement or OffscreenCanvas that is associated with the above context. + * If there was no associated `` element, just store the default WIDTH / HEIGHT. + */ + canvas: HTMLCanvasElement | OffscreenCanvas | { + width: number; + height: number; + }; + /** Height of one line of text (in pixels). */ + textHeight: number; + static get WIDTH(): number; + static get HEIGHT(): number; + static get CANVAS_BROWSER_SIZE_LIMIT(): number; + /** + * Ensure that width and height do not exceed the browser limit. + * @returns array of [width, height] clamped to the browser limit. + */ + static sanitizeCanvasDims(width: number, height: number): [number, number]; + constructor(context: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D); + /** + * Set all pixels to transparent black rgba(0,0,0,0). + */ + clear(): void; + openGroup(cls?: string, id?: string, attrs?: GroupAttributes): any; + closeGroup(): void; + add(child: any): void; + setFillStyle(style: string): this; + /** CanvasContext ignores `setBackgroundFillStyle()`. */ + setBackgroundFillStyle(style: string): this; + setStrokeStyle(style: string): this; + setShadowColor(color: string): this; + setShadowBlur(blur: number): this; + setLineWidth(width: number): this; + setLineCap(capType: CanvasLineCap): this; + setLineDash(dash: number[]): this; + scale(x: number, y: number): this; + resize(width: number, height: number): this; + rect(x: number, y: number, width: number, height: number): this; + fillRect(x: number, y: number, width: number, height: number): this; + /** + * Set the pixels in a rectangular area to transparent black rgba(0,0,0,0). + */ + clearRect(x: number, y: number, width: number, height: number): this; + beginPath(): this; + moveTo(x: number, y: number): this; + lineTo(x: number, y: number): this; + bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): this; + quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): this; + arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise: boolean): this; + fill(): this; + stroke(): this; + closePath(): this; + measureText(text: string): TextMeasure; + fillText(text: string, x: number, y: number): this; + save(): this; + restore(): this; + set fillStyle(style: string | CanvasGradient | CanvasPattern); + get fillStyle(): string | CanvasGradient | CanvasPattern; + set strokeStyle(style: string | CanvasGradient | CanvasPattern); + get strokeStyle(): string | CanvasGradient | CanvasPattern; + /** + * @param f is 1) a `FontInfo` object or + * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or + * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided). + * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt'). + * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900). + * @param style is a string (e.g., 'italic', 'normal'). + */ + setFont(f?: string | FontInfo, size?: string | number, weight?: string | number, style?: string): this; + /** Return a string of the form `'italic bold 15pt Arial'` */ + getFont(): string; +} +export {}; diff --git a/build/types/src/chordsymbol.d.ts b/build/types/src/chordsymbol.d.ts new file mode 100644 index 0000000000..97f3b39a84 --- /dev/null +++ b/build/types/src/chordsymbol.d.ts @@ -0,0 +1,150 @@ +import { FontInfo } from './font'; +import { Glyph } from './glyph'; +import { Modifier } from './modifier'; +import { ModifierContextState } from './modifiercontext'; +import { TextFormatter } from './textformatter'; +export interface ChordSymbolBlock { + text: string; + symbolType: SymbolTypes; + symbolModifier: SymbolModifiers; + xShift: number; + yShift: number; + vAlign: boolean; + width: number; + glyph?: Glyph; +} +export declare enum ChordSymbolHorizontalJustify { + LEFT = 1, + CENTER = 2, + RIGHT = 3, + CENTER_STEM = 4 +} +export declare enum ChordSymbolVerticalJustify { + TOP = 1, + BOTTOM = 2 +} +export declare enum SymbolTypes { + GLYPH = 1, + TEXT = 2, + LINE = 3 +} +export declare enum SymbolModifiers { + NONE = 1, + SUBSCRIPT = 2, + SUPERSCRIPT = 3 +} +/** + * ChordSymbol is a modifier that creates a chord symbol above/below a chord. + * As a modifier, it is attached to an existing note. + */ +export declare class ChordSymbol extends Modifier { + static DEBUG: boolean; + static get CATEGORY(): string; + static readonly HorizontalJustify: typeof ChordSymbolHorizontalJustify; + static readonly HorizontalJustifyString: Record; + static readonly VerticalJustify: typeof ChordSymbolVerticalJustify; + static readonly VerticalJustifyString: Record; + static get superSubRatio(): number; + /** Currently unused: Globally turn off text formatting, if the built-in formatting does not work for your font. */ + static set NO_TEXT_FORMAT(val: boolean); + static get NO_TEXT_FORMAT(): boolean; + static getMetricForGlyph(glyphCode: string): any; + static get engravingFontResolution(): number; + static get spacingBetweenBlocks(): number; + static getWidthForGlyph(glyph: Glyph): number; + static getYShiftForGlyph(glyph: Glyph): number; + static getXShiftForGlyph(glyph: Glyph): number; + static get superscriptOffset(): number; + static get subscriptOffset(): number; + static get kerningOffset(): number; + static readonly glyphs: Record; + static readonly symbolTypes: typeof SymbolTypes; + static readonly symbolModifiers: typeof SymbolModifiers; + static get metrics(): any; + static get lowerKerningText(): string[]; + static get upperKerningText(): string[]; + static isSuperscript(block: ChordSymbolBlock): boolean; + static isSubscript(block: ChordSymbolBlock): boolean; + static get minPadding(): number; + /** + * Estimate the width of the whole chord symbol, based on the sum of the widths of the individual blocks. + * Estimate how many lines above/below the staff we need. + */ + static format(symbols: ChordSymbol[], state: ModifierContextState): boolean; + /** Currently unused. */ + protected static noFormat: boolean; + protected symbolBlocks: ChordSymbolBlock[]; + protected horizontal: number; + protected vertical: number; + protected useKerning: boolean; + protected reportWidth: boolean; + protected textFormatter: TextFormatter; + constructor(); + /** + * Default text font. + * Choose a font family that works well with the current music engraving font. + * @override `Element.TEXT_FONT`. + */ + static get TEXT_FONT(): Required; + /** + * The offset is specified in `em`. Scale this value by the font size in pixels. + */ + get superscriptOffset(): number; + get subscriptOffset(): number; + setReportWidth(value: boolean): this; + getReportWidth(): boolean; + updateOverBarAdjustments(): void; + updateKerningAdjustments(): void; + /** Do some basic kerning so that letter chords like 'A' don't have the extensions hanging off to the right. */ + getKerningAdjustment(j: number): number; + /** + * ChordSymbol allows multiple blocks so we can mix glyphs and font text. + * Each block can have its own vertical orientation. + */ + getSymbolBlock(params?: any): ChordSymbolBlock; + /** Add a symbol to this chord, could be text, glyph or line. */ + addSymbolBlock(parameters: any): this; + /** Add a text block. */ + addText(text: string, parameters?: any): this; + /** Add a text block with superscript modifier. */ + addTextSuperscript(text: string): this; + /** Add a text block with subscript modifier. */ + addTextSubscript(text: string): this; + /** Add a glyph block with superscript modifier. */ + addGlyphSuperscript(glyph: string): this; + /** Add a glyph block. */ + addGlyph(glyph: string, params?: any): this; + /** + * Add a glyph for each character in 'text'. If the glyph is not available, use text from the font. + * e.g. `addGlyphOrText('(+5#11)')` will use text for the '5' and '11', and glyphs for everything else. + */ + addGlyphOrText(text: string, params?: any): this; + /** Add a line of the given width, used as a continuation of the previous symbol in analysis, or lyrics, etc. */ + addLine(width: number, params?: any): this; + /** + * Set the chord symbol's font family, size, weight, style (e.g., `Arial`, `10pt`, `bold`, `italic`). + * + * @param f is 1) a `FontInfo` object or + * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or + * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided). + * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt'). + * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900). + * @param style is a string (e.g., 'italic', 'normal'). + * + * @override See: Element. + */ + setFont(f?: string | FontInfo, size?: string | number, weight?: string | number, style?: string): this; + setEnableKerning(val: boolean): this; + /** Set vertical position of text (above or below stave). */ + setVertical(vj: ChordSymbolVerticalJustify | string | number): this; + getVertical(): number; + /** Set horizontal justification. */ + setHorizontal(hj: ChordSymbolHorizontalJustify | string | number): this; + getHorizontal(): number; + getWidth(): number; + getYOffsetForText(text: string): number; + /** Render text and glyphs above/below the note. */ + draw(): void; +} diff --git a/build/types/src/clef.d.ts b/build/types/src/clef.d.ts new file mode 100644 index 0000000000..8ee9c12715 --- /dev/null +++ b/build/types/src/clef.d.ts @@ -0,0 +1,48 @@ +import { Glyph } from './glyph'; +import { Stave } from './stave'; +import { StaveModifier } from './stavemodifier'; +export interface ClefType { + point: number; + code: string; + line?: number; +} +/** + * Clef implements various types of clefs that can be rendered on a stave. + * + * See `tests/clef_tests.ts` for usage examples. + */ +export declare class Clef extends StaveModifier { + /** To enable logging for this class, set `Vex.Flow.Clef.DEBUG` to `true`. */ + static DEBUG: boolean; + static get CATEGORY(): string; + annotation?: { + code: string; + line: number; + x_shift: number; + point: number; + }; + /** + * The attribute `clef` must be a key from + * `Clef.types` + */ + clef: ClefType; + protected glyph?: Glyph; + protected attachment?: Glyph; + protected size?: string; + protected type?: string; + /** + * Every clef name is associated with a glyph code from the font file + * and a default stave line number. + */ + static get types(): Record; + /** Create a new clef. */ + constructor(type: string, size?: string, annotation?: string); + /** Set clef type, size and annotation. */ + setType(type: string, size?: string, annotation?: string): this; + /** Get clef width. */ + getWidth(): number; + /** Set associated stave. */ + setStave(stave: Stave): this; + /** Render clef. */ + draw(): void; +} diff --git a/build/types/src/clefnote.d.ts b/build/types/src/clefnote.d.ts new file mode 100644 index 0000000000..cdcb2325aa --- /dev/null +++ b/build/types/src/clefnote.d.ts @@ -0,0 +1,25 @@ +import { BoundingBox } from './boundingbox'; +import { Clef, ClefType } from './clef'; +import { ModifierContext } from './modifiercontext'; +import { Note } from './note'; +import { RenderContext } from './rendercontext'; +/** ClefNote implements clef annotations in measures. */ +export declare class ClefNote extends Note { + static get CATEGORY(): string; + protected clef_obj: Clef; + protected type: string; + protected clef: ClefType; + constructor(type: string, size?: string, annotation?: string); + /** Set clef type, size and annotation. */ + setType(type: string, size: string, annotation: string): this; + /** Get associated clef. */ + getClef(): ClefType; + /** Set associated context. */ + setContext(context: RenderContext): this; + /** Get bounding box. */ + getBoundingBox(): BoundingBox | undefined; + addToModifierContext(mc: ModifierContext): this; + preFormat(): this; + /** Render clef note. */ + draw(): void; +} diff --git a/build/types/src/crescendo.d.ts b/build/types/src/crescendo.d.ts new file mode 100644 index 0000000000..af5069b5f4 --- /dev/null +++ b/build/types/src/crescendo.d.ts @@ -0,0 +1,27 @@ +import { Note, NoteStruct } from './note'; +export interface CrescendoParams { + reverse: boolean; + height: number; + y: number; + end_x: number; + begin_x: number; +} +export declare class Crescendo extends Note { + static DEBUG: boolean; + /** Crescendo category string. */ + static get CATEGORY(): string; + protected decrescendo: boolean; + protected height: number; + protected line: number; + protected options: { + extend_left: number; + extend_right: number; + y_shift: number; + }; + constructor(noteStruct: NoteStruct); + setLine(line: number): this; + setHeight(height: number): this; + setDecrescendo(decresc: boolean): this; + preFormat(): this; + draw(): void; +} diff --git a/build/types/src/curve.d.ts b/build/types/src/curve.d.ts new file mode 100644 index 0000000000..2742f3d30e --- /dev/null +++ b/build/types/src/curve.d.ts @@ -0,0 +1,41 @@ +import { Element } from './element'; +import { Note } from './note'; +export interface CurveOptions { + /** Two control points for the bezier curves. */ + cps?: { + x: number; + y: number; + }[]; + thickness?: number; + x_shift?: number; + y_shift?: number; + position?: string | number; + position_end?: string | number; + invert?: boolean; +} +export declare enum CurvePosition { + NEAR_HEAD = 1, + NEAR_TOP = 2 +} +export declare class Curve extends Element { + static get CATEGORY(): string; + render_options: Required; + protected from: Note; + protected to: Note; + static get Position(): typeof CurvePosition; + static get PositionString(): Record; + constructor(from: Note, to: Note, options: CurveOptions); + setNotes(from: Note, to: Note): this; + /** + * @return {boolean} Returns true if this is a partial bar. + */ + isPartial(): boolean; + renderCurve(params: { + last_y: number; + last_x: number; + first_y: number; + first_x: number; + direction: number; + }): void; + draw(): boolean; +} diff --git a/build/types/src/dot.d.ts b/build/types/src/dot.d.ts new file mode 100644 index 0000000000..7cfff84e6f --- /dev/null +++ b/build/types/src/dot.d.ts @@ -0,0 +1,20 @@ +import { Modifier } from './modifier'; +import { ModifierContextState } from './modifiercontext'; +import { Note } from './note'; +export declare class Dot extends Modifier { + static get CATEGORY(): string; + protected radius: number; + protected dot_shiftY: number; + /** Returns the dots associated to a Note. */ + static getDots(note: Note): Dot[]; + /** Add a dot on the specified keys to the notes. */ + static buildAndAttach(notes: Note[], options?: { + index?: number; + all?: boolean; + }): void; + static format(dots: Dot[], state: ModifierContextState): boolean; + constructor(); + setNote(note: Note): this; + setDotShiftY(y: number): this; + draw(): void; +} diff --git a/build/types/src/easyscore.d.ts b/build/types/src/easyscore.d.ts new file mode 100644 index 0000000000..ccfe7ce87a --- /dev/null +++ b/build/types/src/easyscore.d.ts @@ -0,0 +1,152 @@ +import { Accidental } from './accidental'; +import { PartialBeamDirection } from './beam'; +import { Factory } from './factory'; +import { Note } from './note'; +import { Grammar, Match, Parser, Result, Rule, RuleFunction } from './parser'; +import { RenderContext } from './rendercontext'; +import { StemmableNote } from './stemmablenote'; +import { TupletOptions } from './tuplet'; +import { Voice } from './voice'; +export declare type CommitHook = (obj: any, note: StemmableNote, builder: Builder) => void; +export declare class EasyScoreGrammar implements Grammar { + builder: Builder; + constructor(builder: Builder); + begin(): RuleFunction; + LINE(): Rule; + PIECE(): Rule; + PIECES(): Rule; + PARAMS(): Rule; + CHORDORNOTE(): Rule; + CHORD(): Rule; + NOTES(): Rule; + NOTE(): Rule; + SINGLENOTE(): Rule; + ACCIDENTAL(): Rule; + DOTS(): Rule; + TYPE(): Rule; + DURATION(): Rule; + OPTS(): Rule; + KEYVALS(): Rule; + KEYVAL(): Rule; + VAL(): Rule; + KEY(): Rule; + DVAL(): Rule; + SVAL(): Rule; + NOTENAME(): Rule; + OCTAVE(): Rule; + ACCIDENTALS(): Rule; + MICROTONES(): Rule; + DURATIONS(): Rule; + TYPES(): Rule; + LPAREN(): Rule; + RPAREN(): Rule; + COMMA(): Rule; + DOT(): Rule; + SLASH(): Rule; + MAYBESLASH(): Rule; + EQUALS(): Rule; + LBRACKET(): Rule; + RBRACKET(): Rule; + EOL(): Rule; +} +export interface NotePiece { + key: string; + accid?: string | null; + octave?: string; +} +export declare class Piece { + chord: NotePiece[]; + duration: string; + dots: number; + type?: string; + options: { + [x: string]: string; + }; + constructor(duration: string); +} +export interface BuilderElements { + notes: StemmableNote[]; + accidentals: (Accidental | undefined)[][]; +} +export interface BuilderOptions extends Record { + stem?: string; + clef?: string; +} +export declare class Builder { + factory: Factory; + elements: BuilderElements; + options: BuilderOptions; + piece: Piece; + commitHooks: CommitHook[]; + rollingDuration: string; + constructor(factory: Factory); + reset(options?: BuilderOptions): void; + getFactory(): Factory; + getElements(): BuilderElements; + addCommitHook(commitHook: CommitHook): void; + resetPiece(): void; + setNoteDots(dots: Match[]): void; + setNoteDuration(duration?: string): void; + setNoteType(type?: string): void; + addNoteOption(key: string, value: string): void; + addNote(key?: string, accid?: string | null, octave?: string): void; + addSingleNote(key: string, accid?: string | null, octave?: string): void; + addChord(notes: Match[]): void; + commitPiece(): void; +} +export interface EasyScoreOptions { + factory?: Factory; + builder?: Builder; + commitHooks?: CommitHook[]; + throwOnError?: boolean; +} +export interface EasyScoreDefaults extends Record { + clef?: string; + time?: string; + stem?: string; +} +/** + * EasyScore implements a parser for a simple language to generate VexFlow objects. + */ +export declare class EasyScore { + static DEBUG: boolean; + defaults: EasyScoreDefaults; + options: EasyScoreOptions; + factory: Factory; + builder: Builder; + grammar: EasyScoreGrammar; + parser: Parser; + constructor(options?: EasyScoreOptions); + /** + * Set the score defaults. + * clef must be set appropriately to avoid errors when adding Staves. + * @param defaults.clef default clef ( treble | bass ...) see {@link Clef.types} + * @param defaults.time default time signature ( 4/4 | 9/8 ...) + * @param defaults.stem default stem arrangement (auto | up | down) + * @returns this + */ + set(defaults: EasyScoreDefaults): this; + /** + * @param options.factory is required. + * @returns this + */ + setOptions(options: EasyScoreOptions): this; + setContext(context: RenderContext): this; + parse(line: string, options?: BuilderOptions): Result; + beam(notes: StemmableNote[], options?: { + autoStem?: boolean; + secondaryBeamBreaks?: number[]; + partialBeamDirections?: { + [noteIndex: number]: PartialBeamDirection; + }; + }): StemmableNote[]; + tuplet(notes: StemmableNote[], options?: TupletOptions): StemmableNote[]; + notes(line: string, options?: BuilderOptions): StemmableNote[]; + voice(notes: Note[], options?: { + time?: string; + options?: { + softmaxFactor: number; + }; + }): Voice; + addCommitHook(commitHook: CommitHook): void; +} diff --git a/build/types/src/element.d.ts b/build/types/src/element.d.ts new file mode 100644 index 0000000000..dbe166b791 --- /dev/null +++ b/build/types/src/element.d.ts @@ -0,0 +1,207 @@ +import { BoundingBox } from './boundingbox'; +import { FontInfo } from './font'; +import { Registry } from './registry'; +import { RenderContext } from './rendercontext'; +/** Element attributes. */ +export interface ElementAttributes { + [name: string]: any; + id: string; + el?: any; + type: string; + classes: Record; +} +/** Element style */ +export interface ElementStyle { + /** + * CSS color used for the shadow. + * + * Examples: 'red', '#ff0000', '#ff000010', 'rgb(255,0,0)' + * + * See [CSS Legal Color Values](https://www.w3schools.com/cssref/css_colors_legal.asp) + */ + shadowColor?: string; + /** + * Level of blur applied to shadows. + * + * Values that are not finite numbers greater than or equal to zero are ignored. + */ + shadowBlur?: number; + /** + * CSS color used with context fill command. + * + * Examples: 'red', '#ff0000', '#ff000010', 'rgb(255,0,0)' + * + * See [CSS Legal Color Values](https://www.w3schools.com/cssref/css_colors_legal.asp) + */ + fillStyle?: string; + /** + * CSS color used with context stroke command. + * + * Examples: 'red', '#ff0000', '#ff000010', 'rgb(255,0,0)' + * + * See [CSS Legal Color Values](https://www.w3schools.com/cssref/css_colors_legal.asp) + */ + strokeStyle?: string; + /** + * Line width, 1.0 by default. + */ + lineWidth?: number; +} +/** + * Element implements a generic base class for VexFlow, with implementations + * of general functions and properties that can be inherited by all VexFlow elements. + */ +export declare abstract class Element { + static get CATEGORY(): string; + protected children: Element[]; + protected static ID: number; + protected static newID(): string; + /** + * Default font for text. This is not related to music engraving. Instead, see `Flow.setMusicFont(...fontNames)` + * to customize the font for musical symbols placed on the score. + */ + static TEXT_FONT: Required; + private context?; + protected rendered: boolean; + protected style?: ElementStyle; + private attrs; + protected boundingBox?: BoundingBox; + protected registry?: Registry; + /** + * Some elements include text. + * The `textFont` property contains information required to style the text (i.e., font family, size, weight, and style). + * It is undefined by default, and can be set using `setFont(...)` or `resetFont()`. + */ + protected textFont?: Required; + constructor(); + addChildElement(child: Element): this; + getCategory(): string; + /** + * Set the element style used to render. + * + * Example: + * ```typescript + * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' }); + * element.draw(); + * ``` + * Note: If the element draws additional sub-elements (ie.: Modifiers in a Stave), + * the style can be applied to all of them by means of the context: + * ```typescript + * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' }); + * element.getContext().setFillStyle('red'); + * element.getContext().setStrokeStyle('red'); + * element.draw(); + * ``` + * or using drawWithStyle: + * ```typescript + * element.setStyle({ fillStyle: 'red', strokeStyle: 'red' }); + * element.drawWithStyle(); + * ``` + */ + setStyle(style: ElementStyle | undefined): this; + /** Set the element & associated children style used for rendering. */ + setGroupStyle(style: ElementStyle): this; + /** Get the element style used for rendering. */ + getStyle(): ElementStyle | undefined; + /** Apply the element style to `context`. */ + applyStyle(context?: RenderContext | undefined, style?: ElementStyle | undefined): this; + /** Restore the style of `context`. */ + restoreStyle(context?: RenderContext | undefined, style?: ElementStyle | undefined): this; + /** + * Draw the element and all its sub-elements (ie.: Modifiers in a Stave) + * with the element style. + */ + drawWithStyle(): void; + /** Draw an element. */ + abstract draw(...args: any[]): void; + /** Check if it has a class label (An element can have multiple class labels). */ + hasClass(className: string): boolean; + /** Add a class label (An element can have multiple class labels). */ + addClass(className: string): this; + /** Remove a class label (An element can have multiple class labels). */ + removeClass(className: string): this; + /** Call back from registry after the element is registered. */ + onRegister(registry: Registry): this; + /** Return the rendered status. */ + isRendered(): boolean; + /** Set the rendered status. */ + setRendered(rendered?: boolean): this; + /** Return the element attributes. */ + getAttributes(): ElementAttributes; + /** Return an attribute. */ + getAttribute(name: string): any; + /** Return associated SVGElement. */ + getSVGElement(suffix?: string): SVGElement | undefined; + /** Set an attribute. */ + setAttribute(name: string, value: any): this; + /** Get the boundingBox. */ + getBoundingBox(): BoundingBox | undefined; + /** Return the context. */ + getContext(): RenderContext | undefined; + /** Set the context. */ + setContext(context?: RenderContext): this; + /** Validate and return the context. */ + checkContext(): RenderContext; + /** + * Provide a CSS compatible font string (e.g., 'bold 16px Arial'). + */ + set font(f: string); + /** Returns the CSS compatible font string. */ + get font(): string; + /** + * Set the element's font family, size, weight, style (e.g., `Arial`, `10pt`, `bold`, `italic`). + * @param font is 1) a `FontInfo` object or + * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or + * 3) a string representing the font family (at least one of `size`, `weight`, or `style` must also be provided). + * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt'). + * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900). + * @param style is a string (e.g., 'italic', 'normal'). + * If no arguments are provided, then the font is set to the default font. + * Each Element subclass may specify its own default by overriding the static `TEXT_FONT` property. + */ + setFont(font?: string | FontInfo, size?: string | number, weight?: string | number, style?: string): this; + getFont(): string; + /** + * Reset the text font to the style indicated by the static `TEXT_FONT` property. + * Subclasses can call this to initialize `textFont` for the first time. + */ + resetFont(): void; + /** Return a copy of the current FontInfo object. */ + get fontInfo(): Required; + set fontInfo(fontInfo: FontInfo); + /** Change the font size, while keeping everything else the same. */ + setFontSize(size?: string | number): this; + /** + * @returns a CSS font-size string (e.g., '18pt', '12px', '1em'). + * See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes. + */ + getFontSize(): string; + /** + * The size is 1) a string of the form '10pt' or '16px', compatible with the CSS font-size property. + * or 2) a number, which is interpreted as a point size (i.e. 12 == '12pt'). + */ + set fontSize(size: string | number); + /** + * @returns a CSS font-size string (e.g., '18pt', '12px', '1em'). + */ + get fontSize(): string; + /** + * @returns the font size in `pt`. + */ + get fontSizeInPoints(): number; + /** + * @returns the font size in `px`. + */ + get fontSizeInPixels(): number; + /** + * @returns a CSS font-style string (e.g., 'italic'). + */ + get fontStyle(): string; + set fontStyle(style: string); + /** + * @returns a CSS font-weight string (e.g., 'bold'). + * As in CSS, font-weight is always returned as a string, even if it was set as a number. + */ + get fontWeight(): string; + set fontWeight(weight: string | number); +} diff --git a/build/types/src/factory.d.ts b/build/types/src/factory.d.ts new file mode 100644 index 0000000000..a7644f5c4f --- /dev/null +++ b/build/types/src/factory.d.ts @@ -0,0 +1,278 @@ +import { Accidental } from './accidental'; +import { Annotation, AnnotationHorizontalJustify, AnnotationVerticalJustify } from './annotation'; +import { Articulation } from './articulation'; +import { BarNote } from './barnote'; +import { Beam, PartialBeamDirection } from './beam'; +import { ChordSymbol } from './chordsymbol'; +import { ClefNote } from './clefnote'; +import { Curve, CurveOptions } from './curve'; +import { EasyScore, EasyScoreOptions } from './easyscore'; +import { Element } from './element'; +import { FontInfo } from './font'; +import { Formatter, FormatterOptions } from './formatter'; +import { FretHandFinger } from './frethandfinger'; +import { GhostNote } from './ghostnote'; +import { Glyph } from './glyph'; +import { GlyphNote, GlyphNoteOptions } from './glyphnote'; +import { GraceNote, GraceNoteStruct } from './gracenote'; +import { GraceNoteGroup } from './gracenotegroup'; +import { KeySigNote } from './keysignote'; +import { ModifierContext } from './modifiercontext'; +import { MultiMeasureRest, MultimeasureRestRenderOptions } from './multimeasurerest'; +import { Note, NoteStruct } from './note'; +import { NoteSubGroup } from './notesubgroup'; +import { Ornament } from './ornament'; +import { PedalMarking } from './pedalmarking'; +import { RenderContext } from './rendercontext'; +import { RepeatNote } from './repeatnote'; +import { Stave, StaveOptions } from './stave'; +import { BarlineType } from './stavebarline'; +import { StaveConnector, StaveConnectorType } from './staveconnector'; +import { StaveLine } from './staveline'; +import { StaveNote, StaveNoteStruct } from './stavenote'; +import { StaveTie } from './stavetie'; +import { StemmableNote } from './stemmablenote'; +import { StringNumber } from './stringnumber'; +import { System, SystemOptions } from './system'; +import { TabNote, TabNoteStruct } from './tabnote'; +import { TabStave } from './tabstave'; +import { TextBracket } from './textbracket'; +import { TextDynamics } from './textdynamics'; +import { TextNote, TextNoteStruct } from './textnote'; +import { TickContext } from './tickcontext'; +import { TimeSigNote } from './timesignote'; +import { Tuplet, TupletOptions } from './tuplet'; +import { VibratoBracket } from './vibratobracket'; +import { Voice, VoiceTime } from './voice'; +export interface FactoryOptions { + stave?: { + space: number; + }; + renderer?: { + elementId: string | null; + backend?: number; + width: number; + height: number; + background?: string; + }; + font?: FontInfo; +} +/** + * Factory implements a high level API around VexFlow. + */ +export declare class Factory { + /** To enable logging for this class. Set `Vex.Flow.Factory.DEBUG` to `true`. */ + static DEBUG: boolean; + /** Default text font. */ + static TEXT_FONT: Required; + /** + * Static simplified function to access constructor without providing FactoryOptions + * + * Example: + * + * Create an SVG renderer and attach it to the DIV element named "boo" to render using 1200 and 600 + * + * `const vf: Factory = Vex.Flow.Factory.newFromElementId('boo', 1200, 600 );` + */ + static newFromElementId(elementId: string | null, width?: number, height?: number): Factory; + protected options: Required; + protected stave?: Stave; + protected context: RenderContext; + protected staves: Stave[]; + protected voices: Voice[]; + protected renderQ: Element[]; + protected systems: System[]; + /** + * Example: + * + * Create an SVG renderer and attach it to the DIV element named "boo" to render using 1200 and 600 + * + * `const vf: Factory = new Vex.Flow.Factory({renderer: { elementId: 'boo', width: 1200, height: 600 }});` + */ + constructor(options?: FactoryOptions); + reset(): void; + setOptions(options?: FactoryOptions): void; + initRenderer(): void; + getContext(): RenderContext; + setContext(context: RenderContext): this; + getStave(): Stave | undefined; + getVoices(): Voice[]; + /** Return pixels from current stave spacing. */ + Stave(params?: { + x?: number; + y?: number; + width?: number; + options?: StaveOptions; + }): Stave; + TabStave(params?: { + x?: number; + y?: number; + width?: number; + options?: StaveOptions; + }): TabStave; + StaveNote(noteStruct: StaveNoteStruct): StaveNote; + GlyphNote(glyph: Glyph, noteStruct: NoteStruct, options?: GlyphNoteOptions): GlyphNote; + RepeatNote(type: string, noteStruct?: NoteStruct, options?: GlyphNoteOptions): RepeatNote; + GhostNote(noteStruct: string | NoteStruct): GhostNote; + TextNote(noteStruct: TextNoteStruct): TextNote; + BarNote(params?: { + type?: BarlineType | string; + }): BarNote; + ClefNote(params?: { + type?: string; + options?: { + size?: string; + annotation?: string; + }; + }): ClefNote; + TimeSigNote(params?: { + time?: string; + }): TimeSigNote; + KeySigNote(params: { + key: string; + cancelKey?: string; + alterKey?: string[]; + }): KeySigNote; + TabNote(noteStruct: TabNoteStruct): TabNote; + GraceNote(noteStruct: GraceNoteStruct): GraceNote; + GraceNoteGroup(params: { + notes: StemmableNote[]; + slur?: boolean; + }): GraceNoteGroup; + Accidental(params: { + type: string; + }): Accidental; + Annotation(params?: { + text?: string; + hJustify?: string | AnnotationHorizontalJustify; + vJustify?: string | AnnotationVerticalJustify; + font?: FontInfo; + }): Annotation; + ChordSymbol(params?: { + vJustify?: string; + hJustify?: string; + kerning?: boolean; + reportWidth?: boolean; + fontFamily?: string; + fontSize?: number; + fontWeight?: string; + }): ChordSymbol; + Articulation(params?: { + type?: string; + position?: string | number; + }): Articulation; + Ornament(type: string, params?: { + position?: string | number; + upperAccidental?: string; + lowerAccidental?: string; + delayed?: boolean; + }): Ornament; + TextDynamics(params?: { + text?: string; + duration?: string; + dots?: number; + line?: number; + }): TextDynamics; + Fingering(params: { + number?: string; + position?: string; + }): FretHandFinger; + StringNumber(params: { + number: string; + position: string; + }, drawCircle?: boolean): StringNumber; + TickContext(): TickContext; + ModifierContext(): ModifierContext; + MultiMeasureRest(params: MultimeasureRestRenderOptions): MultiMeasureRest; + Voice(params?: { + time?: VoiceTime | string; + }): Voice; + StaveConnector(params: { + top_stave: Stave; + bottom_stave: Stave; + type: StaveConnectorType; + }): StaveConnector; + Formatter(options?: FormatterOptions): Formatter; + Tuplet(params?: { + notes?: Note[]; + options?: TupletOptions; + }): Tuplet; + Beam(params: { + notes: StemmableNote[]; + options?: { + autoStem?: boolean; + secondaryBeamBreaks?: number[]; + partialBeamDirections?: { + [noteIndex: number]: PartialBeamDirection; + }; + }; + }): Beam; + Curve(params: { + from: Note; + to: Note; + options: CurveOptions; + }): Curve; + StaveTie(params: { + from?: Note | null; + to?: Note | null; + first_indices?: number[]; + last_indices?: number[]; + text?: string; + options?: { + direction?: number; + }; + }): StaveTie; + StaveLine(params: { + from: StaveNote; + to: StaveNote; + first_indices: number[]; + last_indices: number[]; + options?: { + text?: string; + font?: FontInfo; + }; + }): StaveLine; + VibratoBracket(params: { + from: Note | null; + to: Note | null; + options: { + harsh?: boolean; + line?: number; + }; + }): VibratoBracket; + TextBracket(params: { + from: Note; + to: Note; + text: string; + options: { + superscript: string; + position: string; + line?: number; + font?: FontInfo; + }; + }): TextBracket; + System(params?: SystemOptions): System; + /** + * Creates EasyScore. Normally the first step after constructing a Factory. For example: + * ``` + * const vf: Factory = new Vex.Flow.Factory({renderer: { elementId: 'boo', width: 1200, height: 600 }}); + * const score: EasyScore = vf.EasyScore(); + * ``` + * @param options.factory optional instance of Factory + * @param options.builder instance of Builder + * @param options.commitHooks function to call after a note element is created + * @param options.throwOnError throw error in case of parsing error + */ + EasyScore(options?: EasyScoreOptions): EasyScore; + PedalMarking(params?: { + notes?: StaveNote[]; + options?: { + style: string; + }; + }): PedalMarking; + NoteSubGroup(params?: { + notes?: Note[]; + }): NoteSubGroup; + /** Render the score. */ + draw(): void; +} diff --git a/build/types/src/flow.d.ts b/build/types/src/flow.d.ts new file mode 100644 index 0000000000..cfe39cc2ff --- /dev/null +++ b/build/types/src/flow.d.ts @@ -0,0 +1,264 @@ +import { Accidental } from './accidental'; +import { Annotation, AnnotationHorizontalJustify, AnnotationVerticalJustify } from './annotation'; +import { Articulation } from './articulation'; +import { BarNote } from './barnote'; +import { Beam } from './beam'; +import { Bend } from './bend'; +import { BoundingBox } from './boundingbox'; +import { BoundingBoxComputation } from './boundingboxcomputation'; +import { CanvasContext } from './canvascontext'; +import { ChordSymbol, ChordSymbolHorizontalJustify, ChordSymbolVerticalJustify, SymbolModifiers, SymbolTypes } from './chordsymbol'; +import { Clef } from './clef'; +import { ClefNote } from './clefnote'; +import { Crescendo } from './crescendo'; +import { Curve, CurvePosition } from './curve'; +import { Dot } from './dot'; +import { EasyScore } from './easyscore'; +import { Element } from './element'; +import { Factory } from './factory'; +import { Font, FontModule, FontStyle, FontWeight } from './font'; +import { Formatter } from './formatter'; +import { Fraction } from './fraction'; +import { FretHandFinger } from './frethandfinger'; +import { GhostNote } from './ghostnote'; +import { Glyph } from './glyph'; +import { GlyphNote } from './glyphnote'; +import { GraceNote } from './gracenote'; +import { GraceNoteGroup } from './gracenotegroup'; +import { GraceTabNote } from './gracetabnote'; +import { KeyManager } from './keymanager'; +import { KeySignature } from './keysignature'; +import { KeySigNote } from './keysignote'; +import { Modifier, ModifierPosition } from './modifier'; +import { ModifierContext } from './modifiercontext'; +import { MultiMeasureRest } from './multimeasurerest'; +import { Music } from './music'; +import { Note } from './note'; +import { NoteHead } from './notehead'; +import { NoteSubGroup } from './notesubgroup'; +import { Ornament } from './ornament'; +import { Parenthesis } from './parenthesis'; +import { Parser } from './parser'; +import { PedalMarking } from './pedalmarking'; +import { Registry } from './registry'; +import { RenderContext } from './rendercontext'; +import { Renderer, RendererBackends, RendererLineEndType } from './renderer'; +import { RepeatNote } from './repeatnote'; +import { Stave } from './stave'; +import { Barline, BarlineType } from './stavebarline'; +import { StaveConnector } from './staveconnector'; +import { StaveHairpin } from './stavehairpin'; +import { StaveLine } from './staveline'; +import { StaveModifier, StaveModifierPosition } from './stavemodifier'; +import { StaveNote } from './stavenote'; +import { Repetition } from './staverepetition'; +import { StaveTempo } from './stavetempo'; +import { StaveText } from './stavetext'; +import { StaveTie } from './stavetie'; +import { Volta, VoltaType } from './stavevolta'; +import { Stem } from './stem'; +import { StringNumber } from './stringnumber'; +import { Stroke } from './strokes'; +import { SVGContext } from './svgcontext'; +import { System } from './system'; +import { TabNote } from './tabnote'; +import { TabSlide } from './tabslide'; +import { TabStave } from './tabstave'; +import { TabTie } from './tabtie'; +import { TextBracket, TextBracketPosition } from './textbracket'; +import { TextDynamics } from './textdynamics'; +import { TextFormatter } from './textformatter'; +import { TextJustification, TextNote } from './textnote'; +import { TickContext } from './tickcontext'; +import { TimeSignature } from './timesignature'; +import { TimeSigNote } from './timesignote'; +import { Tremolo } from './tremolo'; +import { Tuning } from './tuning'; +import { Tuplet } from './tuplet'; +import { Vibrato } from './vibrato'; +import { VibratoBracket } from './vibratobracket'; +import { Voice, VoiceMode } from './voice'; +export declare class Flow { + static get BUILD(): { + /** version number. */ + VERSION: string; + /** git commit ID that this library was built from. */ + ID: string; + /** The date when this library was compiled. */ + DATE: string; + }; + static Accidental: typeof Accidental; + static Annotation: typeof Annotation; + static Articulation: typeof Articulation; + static Barline: typeof Barline; + static BarNote: typeof BarNote; + static Beam: typeof Beam; + static Bend: typeof Bend; + static BoundingBox: typeof BoundingBox; + static BoundingBoxComputation: typeof BoundingBoxComputation; + static CanvasContext: typeof CanvasContext; + static ChordSymbol: typeof ChordSymbol; + static Clef: typeof Clef; + static ClefNote: typeof ClefNote; + static Crescendo: typeof Crescendo; + static Curve: typeof Curve; + static Dot: typeof Dot; + static EasyScore: typeof EasyScore; + static Element: typeof Element; + static Factory: typeof Factory; + static Font: typeof Font; + static Formatter: typeof Formatter; + static Fraction: typeof Fraction; + static FretHandFinger: typeof FretHandFinger; + static GhostNote: typeof GhostNote; + static Glyph: typeof Glyph; + static GlyphNote: typeof GlyphNote; + static GraceNote: typeof GraceNote; + static GraceNoteGroup: typeof GraceNoteGroup; + static GraceTabNote: typeof GraceTabNote; + static KeyManager: typeof KeyManager; + static KeySignature: typeof KeySignature; + static KeySigNote: typeof KeySigNote; + static Modifier: typeof Modifier; + static ModifierContext: typeof ModifierContext; + static MultiMeasureRest: typeof MultiMeasureRest; + static Music: typeof Music; + static Note: typeof Note; + static NoteHead: typeof NoteHead; + static NoteSubGroup: typeof NoteSubGroup; + static Ornament: typeof Ornament; + static Parenthesis: typeof Parenthesis; + static Parser: typeof Parser; + static PedalMarking: typeof PedalMarking; + static Registry: typeof Registry; + static RenderContext: typeof RenderContext; + static Renderer: typeof Renderer; + static RepeatNote: typeof RepeatNote; + static Repetition: typeof Repetition; + static Stave: typeof Stave; + static StaveConnector: typeof StaveConnector; + static StaveHairpin: typeof StaveHairpin; + static StaveLine: typeof StaveLine; + static StaveModifier: typeof StaveModifier; + static StaveNote: typeof StaveNote; + static StaveTempo: typeof StaveTempo; + static StaveText: typeof StaveText; + static StaveTie: typeof StaveTie; + static Stem: typeof Stem; + static StringNumber: typeof StringNumber; + static Stroke: typeof Stroke; + static SVGContext: typeof SVGContext; + static System: typeof System; + static TabNote: typeof TabNote; + static TabSlide: typeof TabSlide; + static TabStave: typeof TabStave; + static TabTie: typeof TabTie; + static TextBracket: typeof TextBracket; + static TextDynamics: typeof TextDynamics; + static TextFormatter: typeof TextFormatter; + static TextNote: typeof TextNote; + static TickContext: typeof TickContext; + static TimeSignature: typeof TimeSignature; + static TimeSigNote: typeof TimeSigNote; + static Tremolo: typeof Tremolo; + static Tuning: typeof Tuning; + static Tuplet: typeof Tuplet; + static Vibrato: typeof Vibrato; + static VibratoBracket: typeof VibratoBracket; + static Voice: typeof Voice; + static Volta: typeof Volta; + static AnnotationHorizontalJustify: typeof AnnotationHorizontalJustify; + static AnnotationVerticalJustify: typeof AnnotationVerticalJustify; + static ChordSymbolHorizontalJustify: typeof ChordSymbolHorizontalJustify; + static ChordSymbolVerticalJustify: typeof ChordSymbolVerticalJustify; + static SymbolTypes: typeof SymbolTypes; + static SymbolModifiers: typeof SymbolModifiers; + static CurvePosition: typeof CurvePosition; + static FontWeight: typeof FontWeight; + static FontStyle: typeof FontStyle; + static ModifierPosition: typeof ModifierPosition; + static RendererBackends: typeof RendererBackends; + static RendererLineEndType: typeof RendererLineEndType; + static BarlineType: typeof BarlineType; + static StaveModifierPosition: typeof StaveModifierPosition; + static VoltaType: typeof VoltaType; + static TextBracketPosition: typeof TextBracketPosition; + static TextJustification: typeof TextJustification; + static VoiceMode: typeof VoiceMode; + /** + * Examples: + * ``` + * Vex.Flow.setMusicFont('Petaluma'); + * Vex.Flow.setMusicFont('Bravura', 'Gonville'); + * ``` + * + * **CASE 1**: You are using `vexflow.js`, which includes all music fonts (Bravura, Gonville, Petaluma, Custom). + * In this case, calling this method is optional, since VexFlow already defaults to a music font stack of: + * 'Bravura', 'Gonville', 'Custom'. + * + * **CASE 2**: You are using `vexflow-bravura.js` or `vexflow-petaluma.js` or `vexflow-gonville.js`, + * which includes a single music font. Calling this method is unnecessary. + * + * **CASE 3**: You are using the light weight `vexflow-core.js` to take advantage of lazy loading for fonts. + * In this case, the default music font stack is empty. + * Example: + * ``` + * await Vex.Flow.fetchMusicFont('Petaluma'); + * Vex.Flow.setMusicFont('Petaluma'); + * ... (do VexFlow stuff) ... + * ``` + * See `demos/fonts/` for more examples. + * + * @returns an array of Font objects corresponding to the provided `fontNames`. + */ + static setMusicFont(...fontNames: string[]): Font[]; + /** + * Used with vexflow-core which supports dynamic font loading. + */ + static fetchMusicFont(fontName: string, fontModuleOrPath?: string | FontModule): Promise; + static getMusicFont(): string[]; + static get RENDER_PRECISION_PLACES(): number; + static set RENDER_PRECISION_PLACES(precision: number); + static get SOFTMAX_FACTOR(): number; + static set SOFTMAX_FACTOR(factor: number); + static get NOTATION_FONT_SCALE(): number; + static set NOTATION_FONT_SCALE(value: number); + static get TABLATURE_FONT_SCALE(): number; + static set TABLATURE_FONT_SCALE(value: number); + static get RESOLUTION(): number; + static set RESOLUTION(value: number); + static get SLASH_NOTEHEAD_WIDTH(): number; + static set SLASH_NOTEHEAD_WIDTH(value: number); + static get STAVE_LINE_DISTANCE(): number; + static set STAVE_LINE_DISTANCE(value: number); + static get STAVE_LINE_THICKNESS(): number; + static set STAVE_LINE_THICKNESS(value: number); + static get STEM_HEIGHT(): number; + static set STEM_HEIGHT(value: number); + static get STEM_WIDTH(): number; + static set STEM_WIDTH(value: number); + static get TIME4_4(): { + num_beats: number; + beat_value: number; + resolution: number; + }; + static get accidentalMap(): Record; + static get unicode(): Record; + static keySignature(spec: string): { + type: string; + line: number; + }[]; + static hasKeySignature(spec: string): boolean; + static getKeySignatures(): Record; + static clefProperties(clef: string): { + line_shift: number; + }; + static keyProperties(key: string, clef?: string, params?: any): any; + static durationToTicks(duration: string): number; +} diff --git a/build/types/src/font.d.ts b/build/types/src/font.d.ts new file mode 100644 index 0000000000..34618dfa83 --- /dev/null +++ b/build/types/src/font.d.ts @@ -0,0 +1,180 @@ +export interface FontInfo { + /** CSS font-family, e.g., 'Arial', 'Helvetica Neue, Arial, sans-serif', 'Times, serif' */ + family?: string; + /** + * CSS font-size (e.g., '10pt', '12px'). + * For backwards compatibility with 3.0.9, plain numbers are assumed to be specified in 'pt'. + */ + size?: number | string; + /** `bold` or a number (e.g., 900) as inspired by CSS font-weight. */ + weight?: string | number; + /** `italic` as inspired by CSS font-style. */ + style?: string; +} +export declare type FontModule = { + data: FontData; + metrics: FontMetrics; +}; +export interface FontData { + glyphs: Record; + fontFamily?: string; + resolution: number; + generatedOn?: string; +} +/** Specified in the `xxx_metrics.ts` files. */ +export interface FontMetrics extends Record { + name: string; + smufl: boolean; + stave?: Record; + accidental?: Record; + clef?: Record; + pedalMarking?: Record>; + digits?: Record; + articulation?: Record>; + tremolo?: Record>; + noteHead?: Record>; + glyphs: Record>; +} +export interface FontGlyph { + x_min: number; + x_max: number; + y_min?: number; + y_max?: number; + ha: number; + leftSideBearing?: number; + advanceWidth?: number; + o?: string; + cached_outline?: number[]; +} +export declare enum FontWeight { + NORMAL = "normal", + BOLD = "bold" +} +export declare enum FontStyle { + NORMAL = "normal", + ITALIC = "italic" +} +export declare class Font { + /** Default sans-serif font family. */ + static SANS_SERIF: string; + /** Default serif font family. */ + static SERIF: string; + /** Default font size in `pt`. */ + static SIZE: number; + /** Given a length (for units: pt, px, em, %, in, mm, cm) what is the scale factor to convert it to px? */ + static scaleToPxFrom: Record; + /** + * @param fontSize a font size to convert. Can be specified as a CSS length string (e.g., '16pt', '1em') + * or as a number (the unit is assumed to be 'pt'). See `Font.scaleToPxFrom` for the supported + * units (e.g., pt, em, %). + * @returns the number of pixels that is equivalent to `fontSize` + */ + static convertSizeToPixelValue(fontSize?: string | number): number; + /** + * @param fontSize a font size to convert. Can be specified as a CSS length string (e.g., '16pt', '1em') + * or as a number (the unit is assumed to be 'pt'). See `Font.scaleToPxFrom` for the supported + * units (e.g., pt, em, %). + * @returns the number of points that is equivalent to `fontSize` + */ + static convertSizeToPointValue(fontSize?: string | number): number; + /** + * @param f + * @param size + * @param weight + * @param style + * @returns the `size` field will include the units (e.g., '12pt', '16px'). + */ + static validate(f?: string | FontInfo, size?: string | number, weight?: string | number, style?: string): Required; + /** + * @param cssFontShorthand a string formatted as CSS font shorthand (e.g., 'italic bold 15pt Arial'). + */ + static fromCSSString(cssFontShorthand: string): Required; + /** + * @returns a CSS font shorthand string of the form `italic bold 16pt Arial`. + */ + static toCSSString(fontInfo?: FontInfo): string; + /** + * @param fontSize a number representing a font size, or a string font size with units. + * @param scaleFactor multiply the size by this factor. + * @returns size * scaleFactor (e.g., 16pt * 3 = 48pt, 8px * 0.5 = 4px, 24 * 2 = 48). + * If the fontSize argument was a number, the return value will be a number. + * If the fontSize argument was a string, the return value will be a string. + */ + static scaleSize(fontSize: T, scaleFactor: number): T; + /** + * @param weight a string (e.g., 'bold') or a number (e.g., 600 / semi-bold in the OpenType spec). + * @returns true if the font weight indicates bold. + */ + static isBold(weight?: string | number): boolean; + /** + * @param style + * @returns true if the font style indicates 'italic'. + */ + static isItalic(style?: string): boolean; + /** + * Customize this field to specify a different CDN for delivering web fonts. + * Alternative: https://cdn.jsdelivr.net/npm/vexflow-fonts@1.0.3/ + * Or you can use your own host. + */ + static WEB_FONT_HOST: string; + /** + * These font files will be loaded from the CDN specified by `Font.WEB_FONT_HOST` when + * `await Font.loadWebFonts()` is called. Customize this field to specify a different + * set of fonts to load. See: `Font.loadWebFonts()`. + */ + static WEB_FONT_FILES: Record; + /** + * @param fontName + * @param woffURL The absolute or relative URL to the woff file. + * @param includeWoff2 If true, we assume that a woff2 file is in + * the same folder as the woff file, and will append a `2` to the url. + */ + static loadWebFont(fontName: string, woffURL: string, includeWoff2?: boolean): Promise; + /** + * Load the web fonts that are used by ChordSymbol. For example, `flow.html` calls: + * `await Vex.Flow.Font.loadWebFonts();` + * Alternatively, you may load web fonts with a stylesheet link (e.g., from Google Fonts), + * and a @font-face { font-family: ... } rule in your CSS. + * If you do not load either of these fonts, ChordSymbol will fall back to Times or Arial, + * depending on the current music engraving font. + * + * You can customize `Font.WEB_FONT_HOST` and `Font.WEB_FONT_FILES` to load different fonts + * for your app. + */ + static loadWebFonts(): Promise; + /** + * @param fontName + * @param data optionally set the Font object's `.data` property. + * This is usually done when setting up a font for the first time. + * @param metrics optionally set the Font object's `.metrics` property. + * This is usually done when setting up a font for the first time. + * @returns a Font object with the given `fontName`. + * Reuse an existing Font object if a matching one is found. + */ + static load(fontName: string, data?: FontData, metrics?: FontMetrics): Font; + protected name: string; + protected data?: FontData; + protected metrics?: FontMetrics; + /** + * Use `Font.load(fontName)` to get a Font object. + * Do not call this constructor directly. + */ + private constructor(); + getName(): string; + getData(): FontData; + getMetrics(): FontMetrics; + setData(data: FontData): void; + setMetrics(metrics: FontMetrics): void; + hasData(): boolean; + getResolution(): number; + getGlyphs(): Record; + /** + * Use the provided key to look up a value in this font's metrics file (e.g., bravura_metrics.ts, petaluma_metrics.ts). + * @param key is a string separated by periods (e.g., stave.endPaddingMax, clef.lineCount.'5'.shiftY). + * @param defaultValue is returned if the lookup fails. + * @returns the retrieved value (or `defaultValue` if the lookup fails). + */ + lookupMetric(key: string, defaultValue?: Record | number): any; + /** For debugging. */ + toString(): string; +} diff --git a/build/types/src/fonts/bravura_glyphs.d.ts b/build/types/src/fonts/bravura_glyphs.d.ts new file mode 100644 index 0000000000..236e28d530 --- /dev/null +++ b/build/types/src/fonts/bravura_glyphs.d.ts @@ -0,0 +1,3519 @@ +export declare const BravuraFont: { + glyphs: { + bracketTop: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + bracketBottom: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + barlineTick: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + breathMarkTick: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + segno: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + coda: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + gClef: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + cClef: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fClef: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + unpitchedPercussionClef1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + '6stringTabClef': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig0: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig3: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig4: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig5: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig6: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig7: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig8: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig9: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigCommon: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigCutCommon: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigPlus: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigPlusSmall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigMinus: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigParensRight: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigParensRightSmall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigParensLeft: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigParensLeftSmall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadXDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadXWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadXHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadXBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircleXDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircleXWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircleXHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircleX: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircledDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircledWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircledHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircledBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDoubleWholeSquare: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSquareWhite: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSquareBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleDownDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleDownWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleDownHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleDownBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedDoubleWhole1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedWhole1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedHalf1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedBlack1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedDoubleWhole2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedWhole2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedHalf2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedBlack2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadParenthesis: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadParenthesisRight: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadParenthesisLeft: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadMoonBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleLeftBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleRightBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleRoundDownBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + augmentationDot: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + tremolo1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag8thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag8thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag16thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag16thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag32ndUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag32ndDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag64thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag64thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag128thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag128thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalNatural: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalDoubleSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalDoubleFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalParensLeft: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalParensRight: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalQuarterToneFlatStein: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalThreeQuarterTonesFlatZimmermann: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalQuarterToneSharpStein: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalThreeQuarterTonesSharpStein: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalBuyukMucennebFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalBakiyeFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalKomaSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalKucukMucennebSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalKoron: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalSori: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articAccentAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articAccentBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articTenutoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articTenutoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatissimoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatissimoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articMarcatoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articMarcatoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataLongAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataLongBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataVeryLongAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataVeryLongBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataShortAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataShortBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + breathMarkComma: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + breathMarkUpbow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + caesura: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + caesuraCurved: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restMaxima: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restWholeLegerLine: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restHalfLegerLine: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restQuarter: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest8th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest16th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest32nd: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest64th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest128th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicPiano: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicMezzo: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicForte: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicRinforzando: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicSforzando: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicZ: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTrill: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTurn: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTurnSlash: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentMordent: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentShortTrill: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTremblement: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompAppoggTrill: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompSlideTrillDAnglebert: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompSlideTrillBach: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompTrillSuffixDandrieu: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompDoubleCadenceUpperPrefix: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompDoubleCadenceUpperPrefixTurn: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompTrillLowerSuffix: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassScoop: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassDoitMedium: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassFallLipShort: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassLiftMedium: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassFallRoughMedium: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassBend: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassMuteClosed: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassMuteOpen: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassFlip: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassJazzTurn: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassSmear: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + stringsDownBow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + stringsUpBow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + stringsHarmonic: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + pluckedSnapPizzicatoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + pluckedSnapPizzicatoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + pluckedLeftHandPizzicato: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + keyboardPedalPed: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + keyboardPedalUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + pictChokeCymbal: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + wiggleArpeggiatoUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + arrowheadBlackUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + arrowheadBlackDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + arpeggiatoUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + arpeggiatoDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeat1Bar: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeat2Bars: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeat4Bars: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeatBarSlash: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymDiminished: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymHalfDiminished: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymAugmented: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymMajorSeventh: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymMinor: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymParensLeftTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymParensRightTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymBracketLeftTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymBracketRightTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymParensLeftVeryTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymParensRightVeryTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymDiagonalArrangementSlash: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v7KleismaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v7KleismaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5CommaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5CommaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal7CommaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal7CommaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal25SmallDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal25SmallDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal35MediumDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal35MediumDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal11MediumDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal11MediumDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal11LargeDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal11LargeDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal35LargeDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal35LargeDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp25SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat25SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp7CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat7CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5v7kDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5v7kUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5v7kUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5v7kDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp7CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat7CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp25SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat25SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp35MUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat35MDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp11MUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat11MDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp11LUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat11LDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp35LUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat35LDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp25SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat25SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp7CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat7CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp5CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat5CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp5v7kDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat5v7kUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal7v11KleismaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal7v11KleismaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal17CommaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal17CommaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal55CommaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal55CommaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal7v11CommaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal7v11CommaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v11SmallDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v11SmallDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5v11SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5v11SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp7v11CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat7v11CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp55CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat55CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp17CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat17CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp7v11kDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat7v11kUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp7v11kUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat7v11kDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp17CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat17CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp55CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat55CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp7v11CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat7v11CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5v11SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5v11SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp5v11SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat5v11SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp7v11CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat7v11CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp55CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat55CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp17CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat17CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp7v11kDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat7v11kUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal23CommaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal23CommaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v19CommaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v19CommaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v23SmallDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v23SmallDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5v23SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5v23SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5v19CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5v19CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp23CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat23CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp23CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat23CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5v19CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5v19CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5v23SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5v23SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp5v23SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat5v23SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp5v19CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat5v19CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp23CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat23CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal19SchismaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal19SchismaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal17KleismaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal17KleismaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal143CommaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal143CommaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal11v49CommaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal11v49CommaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal19CommaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal19CommaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal7v19CommaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal7v19CommaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal49SmallDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal49SmallDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal23SmallDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal23SmallDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v13MediumDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v13MediumDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal11v19MediumDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal11v19MediumDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal49MediumDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal49MediumDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v49MediumDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v49MediumDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal49LargeDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal49LargeDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal11v19LargeDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal11v19LargeDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v13LargeDiesisUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5v13LargeDiesisDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp23SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat23SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp49SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat49SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp7v19CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat7v19CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp19CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat19CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp11v49CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat11v49CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp143CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat143CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp17kDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat17kUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp19sDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat19sUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp19sUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat19sDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp17kUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat17kDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp143CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat143CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp11v49CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat11v49CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp19CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat19CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp7v19CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat7v19CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp49SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat49SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp23SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat23SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5v13MUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5v13MDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp11v19MUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat11v19MDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp49MUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat49MDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5v49MUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5v49MDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp49LUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat49LDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp11v19LUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat11v19LDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalSharp5v13LUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFlat5v13LDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp23SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat23SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp49SDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat49SUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp7v19CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat7v19CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp19CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat19CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp11v49CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat11v49CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp143CDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat143CUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp17kDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat17kUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleSharp19sDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalDoubleFlat19sUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalShaftUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalShaftDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalAcute: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalGrave: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal1MinaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal1MinaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal2MinasUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal2MinasDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal1TinaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal1TinaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal2TinasUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal2TinasDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal3TinasUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal3TinasDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal4TinasUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal4TinasDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5TinasUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal5TinasDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal6TinasUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal6TinasDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal7TinasUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal7TinasDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal8TinasUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal8TinasDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal9TinasUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittal9TinasDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFractionalTinaUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accSagittalFractionalTinaDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalNarrowReversedFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalNarrowReversedFlatAndFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalWilsonPlus: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalWilsonMinus: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + }; + fontFamily: string; + resolution: number; + generatedOn: string; +}; diff --git a/build/types/src/fonts/bravura_metrics.d.ts b/build/types/src/fonts/bravura_metrics.d.ts new file mode 100644 index 0000000000..b5ba321d29 --- /dev/null +++ b/build/types/src/fonts/bravura_metrics.d.ts @@ -0,0 +1,539 @@ +/** + * The Bravura font was created by Daniel Spreadbury @ Steinberg. + * https://github.com/steinbergmedia/bravura/ + */ +export declare const BravuraMetrics: { + name: string; + smufl: boolean; + stave: { + padding: number; + endPaddingMax: number; + endPaddingMin: number; + unalignedNotePadding: number; + }; + accidental: { + noteheadAccidentalPadding: number; + leftPadding: number; + accidentalSpacing: number; + }; + clef: { + default: { + point: number; + width: number; + }; + small: { + point: number; + width: number; + }; + annotations: { + '8va': { + smuflCode: string; + default: { + point: number; + treble: { + line: number; + shiftX: number; + }; + }; + small: { + point: number; + treble: { + line: number; + shiftX: number; + }; + }; + }; + '8vb': { + smuflCode: string; + default: { + point: number; + treble: { + line: number; + shiftX: number; + }; + bass: { + line: number; + shiftX: number; + }; + }; + small: { + point: number; + treble: { + line: number; + shiftX: number; + }; + bass: { + line: number; + shiftX: number; + }; + }; + }; + }; + lineCount: { + '8': { + point: number; + shiftY: number; + }; + '7': { + point: number; + shiftY: number; + }; + '6': { + point: number; + shiftY: number; + }; + '5': { + point: number; + shiftY: number; + }; + '4': { + point: number; + shiftY: number; + }; + }; + }; + parenthesis: { + default: { + point: number; + width: number; + }; + gracenote: { + point: number; + width: number; + }; + }; + pedalMarking: { + up: { + point: number; + }; + down: { + point: number; + }; + }; + digits: { + shiftLine: number; + point: number; + tupletPoint: number; + shiftY: number; + }; + articulation: { + articStaccatissimoAbove: { + padding: number; + }; + articStaccatissimoBelow: { + padding: number; + }; + }; + tremolo: { + default: { + point: number; + spacing: number; + offsetYStemUp: number; + offsetYStemDown: number; + offsetXStemUp: number; + offsetXStemDown: number; + }; + grace: { + point: number; + spacing: number; + offsetYStemUp: number; + offsetYStemDown: number; + offsetXStemUp: number; + offsetXStemDown: number; + }; + }; + staveRepetition: { + symbolText: { + offsetX: number; + offsetY: number; + spacing: number; + }; + coda: { + offsetY: number; + }; + segno: { + offsetY: number; + }; + }; + stem: { + heightAdjustmentForFlag: number; + noteHead: { + noteheadTriangleUpHalf: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadTriangleUpBlack: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadTriangleUpWhole: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXHalf: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXBlack: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXWhole: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadHalf: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadBlack: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadSquareWhite: { + offsetYBaseStemDown: number; + offsetYBaseStemUp: number; + }; + }; + }; + glyphs: { + coda: { + point: number; + shiftX: number; + shiftY: number; + }; + segno: { + shiftX: number; + }; + flag: { + shiftX: number; + staveTempo: { + shiftX: number; + }; + }; + clef: { + gClef: { + default: { + scale: number; + shiftY: number; + }; + small: { + shiftY: number; + }; + }; + fClef: { + default: { + shiftY: number; + }; + }; + }; + ornament: { + ornamentTurn: { + scale: number; + }; + ornamentTurnSlash: { + scale: number; + }; + }; + stringNumber: { + verticalPadding: number; + stemPadding: number; + leftPadding: number; + rightPadding: number; + }; + stroke: { + arrowheadBlackDown: { + straight: { + shiftX: number; + }; + wiggly: { + shiftX: number; + shiftY: number; + }; + }; + arrowheadBlackUp: { + straight: { + shiftX: number; + }; + wiggly: { + shiftX: number; + shiftY: number; + }; + }; + }; + textNote: { + point: number; + breathMarkTick: { + point: number; + shiftY: number; + }; + breathMarkComma: { + point: number; + }; + segno: { + point: number; + shiftX: number; + shiftY: number; + }; + coda: { + point: number; + shiftX: number; + shiftY: number; + }; + ornamentTrill: { + shiftX: number; + shiftY: number; + }; + ornamentTurn: { + point: number; + }; + ornamentTurnSlash: { + point: number; + }; + ornamentMordent: { + shiftX: number; + }; + ornamentShortTrill: { + shiftX: number; + }; + }; + noteHead: { + minPadding: number; + standard: { + restQuarterStemUp: { + point: number; + }; + restQuarterStemDown: { + point: number; + }; + }; + custom: { + noteheadCircleXStemUp: { + shiftX: number; + }; + noteheadCircleXStemDown: { + shiftX: number; + }; + noteheadDiamondHalfStemUp: { + shiftX: number; + }; + noteheadDiamondBlackStemUp: { + shiftX: number; + }; + noteheadDiamondWholeStemUp: { + shiftX: number; + }; + noteheadXHalfStemUp: { + shiftX: number; + }; + noteheadXHalfStemDown: { + shiftX: number; + }; + noteheadXWholeStemUp: { + shiftX: number; + }; + noteheadXWholeStemDown: { + shiftX: number; + }; + noteheadXDoubleWholeStemUp: { + shiftX: number; + }; + noteheadXDoubleWholeStemDown: { + shiftX: number; + }; + noteheadSquareWhiteStemDown: { + shiftX: number; + }; + noteheadSquareWhiteStemUp: { + shiftX: number; + }; + noteheadSquareBlackStemUp: { + shiftX: number; + }; + noteheadTriangleUpWholeStemUp: { + shiftX: number; + }; + }; + }; + chordSymbol: { + global: { + superscriptOffset: number; + subscriptOffset: number; + kerningOffset: number; + lowerKerningText: string[]; + upperKerningText: string[]; + spacing: number; + superSubRatio: number; + }; + csymDiminished: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymHalfDiminished: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymAugmented: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensLeftTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensRightTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymBracketLeftTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymBracketRightTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensLeftVeryTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensRightVeryTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymDiagonalArrangementSlash: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymMinor: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymMajorSeventh: { + scale: number; + leftSideBearing: number; + yOffset: number; + advanceWidth: number; + }; + accidentalSharp: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + accidentalFlat: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + }; + jazzOrnaments: { + brassScoop: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassDoitMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFallLipShort: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassLiftMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFallRoughMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassBend: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassMuteClosed: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassMuteOpen: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFlip: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassJazzTurn: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassSmear: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + }; + tuplet: { + noteHeadOffset: number; + stemOffset: number; + bottomLine: number; + topModifierOffset: number; + }; + }; +}; diff --git a/build/types/src/fonts/custom_glyphs.d.ts b/build/types/src/fonts/custom_glyphs.d.ts new file mode 100644 index 0000000000..0bb62984ec --- /dev/null +++ b/build/types/src/fonts/custom_glyphs.d.ts @@ -0,0 +1,78 @@ +export declare const CustomFont: { + resolution: number; + fontFamily: string; + glyphs: { + noteheadSquareWhite: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadSquareBlack: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalBuyukMucennebFlat: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalBakiyeFlat: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalKucukMucennebSharp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalKoron: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalSori: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + vexAccidentalMicrotonal2: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + vexAccidentalMicrotonal3: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + vexAccidentalMicrotonal4: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + vexNoteHeadRectBlack: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + vexNoteHeadRectWhite: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + }; +}; diff --git a/build/types/src/fonts/custom_metrics.d.ts b/build/types/src/fonts/custom_metrics.d.ts new file mode 100644 index 0000000000..3f88d3695f --- /dev/null +++ b/build/types/src/fonts/custom_metrics.d.ts @@ -0,0 +1,5 @@ +export declare const CustomMetrics: { + name: string; + smufl: boolean; + glyphs: {}; +}; diff --git a/build/types/src/fonts/gonville_glyphs.d.ts b/build/types/src/fonts/gonville_glyphs.d.ts new file mode 100644 index 0000000000..9831efa71f --- /dev/null +++ b/build/types/src/fonts/gonville_glyphs.d.ts @@ -0,0 +1,870 @@ +export declare const GonvilleFont: { + glyphs: { + bracketTop: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + bracketBottom: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + barlineTick: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + breathMarkTick: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + segno: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + coda: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + gClef: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + cClef: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + fClef: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + unpitchedPercussionClef1: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + '6stringTabClef': { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSig0: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSig1: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSig2: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSig3: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSig4: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSig5: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSig6: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSig7: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSig8: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSig9: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSigCommon: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSigCutCommon: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSigPlus: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSigPlusSmall: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSigMinus: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSigParensRight: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSigParensRightSmall: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSigParensLeft: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + timeSigParensLeftSmall: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadDoubleWhole: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadWhole: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadHalf: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadBlack: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadXWhole: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadXHalf: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadXBlack: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpWhole: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpHalf: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpBlack: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadDiamondWhole: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadDiamondHalf: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + noteheadDiamondBlack: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + augmentationDot: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + tremolo1: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + flag8thUp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + flag8thDown: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + flag16thUp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + flag16thDown: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + flag32ndUp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + flag32ndDown: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + flag64thUp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + flag64thDown: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + flag128thUp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + flag128thDown: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalFlat: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalNatural: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalSharp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalDoubleSharp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalDoubleFlat: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalParensLeft: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalParensRight: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalQuarterToneFlatStein: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalThreeQuarterTonesFlatZimmermann: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalQuarterToneSharpStein: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalThreeQuarterTonesSharpStein: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalBuyukMucennebFlat: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalBakiyeFlat: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalKomaSharp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + accidentalKucukMucennebSharp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + articAccentAbove: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + articAccentBelow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + articTenutoAbove: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + articTenutoBelow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + articStaccatoAbove: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + articStaccatoBelow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + articStaccatissimoAbove: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + articStaccatissimoBelow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + articMarcatoAbove: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + articMarcatoBelow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + fermataAbove: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + fermataBelow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + fermataLongAbove: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + fermataLongBelow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + fermataVeryLongAbove: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + fermataVeryLongBelow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + fermataShortAbove: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + fermataShortBelow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + breathMarkComma: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + breathMarkUpbow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + caesura: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + caesuraCurved: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + restMaxima: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + restDoubleWhole: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + restWhole: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + restWholeLegerLine: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + restHalf: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + restHalfLegerLine: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + restQuarter: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + rest8th: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + rest16th: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + rest32nd: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + rest64th: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + rest128th: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + dynamicPiano: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + dynamicMezzo: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + dynamicForte: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + dynamicRinforzando: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + dynamicSforzando: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + dynamicZ: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentTrill: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentTurn: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentTurnSlash: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentMordent: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentShortTrill: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentTremblement: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentPrecompAppoggTrill: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentPrecompSlideTrillDAnglebert: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentPrecompSlideTrillBach: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentPrecompTrillSuffixDandrieu: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentPrecompDoubleCadenceUpperPrefix: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentPrecompDoubleCadenceUpperPrefixTurn: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + ornamentPrecompTrillLowerSuffix: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + stringsDownBow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + stringsUpBow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + stringsHarmonic: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + pluckedSnapPizzicatoAbove: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + pluckedSnapPizzicatoBelow: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + pluckedLeftHandPizzicato: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + keyboardPedalPed: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + keyboardPedalUp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + pictChokeCymbal: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + wiggleArpeggiatoUp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + arrowheadBlackUp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + arrowheadBlackDown: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + vexAccidentalMicrotonal1: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + vexAccidentalMicrotonal2: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + vexWiggleArpeggioUp: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + vexNoteHeadMutedBreve: { + x_min: number; + x_max: number; + ha: number; + o: string; + }; + }; + cssFontWeight: string; + ascender: number; + underlinePosition: number; + cssFontStyle: string; + boundingBox: { + yMin: number; + xMin: number; + yMax: number; + xMax: number; + }; + resolution: number; + original_font_information: { + postscript_name: string; + version_string: string; + vendor_url: string; + full_font_name: string; + font_family_name: string; + copyright: string; + description: string; + trademark: string; + designer: string; + designer_url: string; + unique_font_identifier: string; + license_url: string; + license_description: string; + manufacturer_name: string; + font_sub_family_name: string; + }; + descender: number; + fontFamily: string; + lineHeight: number; + underlineThickness: number; +}; diff --git a/build/types/src/fonts/gonville_metrics.d.ts b/build/types/src/fonts/gonville_metrics.d.ts new file mode 100644 index 0000000000..84197ac743 --- /dev/null +++ b/build/types/src/fonts/gonville_metrics.d.ts @@ -0,0 +1,437 @@ +/** + * The Gonville font was created by Simon Tatham. + * https://www.chiark.greenend.org.uk/~sgtatham/gonville/ + */ +export declare const GonvilleMetrics: { + name: string; + smufl: boolean; + stave: { + padding: number; + endPaddingMax: number; + endPaddingMin: number; + unalignedNotePadding: number; + }; + accidental: { + noteheadAccidentalPadding: number; + leftPadding: number; + accidentalSpacing: number; + }; + clef: { + default: { + point: number; + width: number; + }; + small: { + point: number; + width: number; + }; + annotations: { + '8va': { + smuflCode: string; + default: { + point: number; + treble: { + line: number; + shiftX: number; + }; + }; + small: { + point: number; + treble: { + line: number; + shiftX: number; + }; + }; + }; + '8vb': { + smuflCode: string; + default: { + point: number; + treble: { + line: number; + shiftX: number; + }; + bass: { + line: number; + shiftX: number; + }; + }; + small: { + point: number; + treble: { + line: number; + shiftX: number; + }; + bass: { + line: number; + shiftX: number; + }; + }; + }; + }; + lineCount: { + '8': { + point: number; + shiftY: number; + }; + '7': { + point: number; + shiftY: number; + }; + '6': { + point: number; + shiftY: number; + }; + '5': { + point: number; + shiftY: number; + }; + '4': { + point: number; + shiftY: number; + }; + }; + }; + parenthesis: { + default: { + point: number; + width: number; + }; + gracenote: { + point: number; + width: number; + }; + }; + pedalMarking: { + up: { + point: number; + }; + down: { + point: number; + }; + }; + digits: { + point: number; + tupletPoint: number; + }; + tremolo: { + default: { + point: number; + spacing: number; + offsetYStemUp: number; + offsetYStemDown: number; + offsetXStemUp: number; + offsetXStemDown: number; + }; + grace: { + point: number; + spacing: number; + offsetYStemUp: number; + offsetYStemDown: number; + offsetXStemUp: number; + offsetXStemDown: number; + }; + }; + staveRepetition: { + symbolText: { + offsetX: number; + offsetY: number; + spacing: number; + }; + coda: { + offsetY: number; + }; + segno: { + offsetY: number; + }; + }; + stem: { + heightAdjustmentForFlag: number; + noteHead: { + noteheadTriangleUpHalf: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadTriangleUpBlack: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadTriangleUpWhole: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXHalf: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXBlack: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXWhole: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadHalf: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadBlack: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadSquareWhite: { + offsetYBaseStemDown: number; + offsetYBaseStemUp: number; + }; + }; + }; + glyphs: { + flag: { + shiftX: number; + flag8thDown: { + shiftX: number; + }; + flag16thDown: { + shiftX: number; + }; + flag32ndDown: { + shiftX: number; + shiftY: number; + }; + flag64thDown: { + shiftX: number; + shiftY: number; + }; + flag128thDown: { + shiftX: number; + shiftY: number; + }; + flag32ndUp: { + shiftY: number; + }; + flag64thUp: { + shiftY: number; + }; + flag128thUp: { + shiftY: number; + }; + }; + stringNumber: { + verticalPadding: number; + stemPadding: number; + leftPadding: number; + rightPadding: number; + }; + textNote: { + point: number; + default: {}; + ornamentTrill: { + shiftX: number; + shiftY: number; + }; + }; + noteHead: { + minPadding: number; + custom: { + noteheadCircleXStemUp: { + shiftX: number; + }; + noteheadXWholeStemUp: { + shiftX: number; + }; + noteheadTriangleUpWholeStemUp: { + shiftX: number; + }; + }; + }; + chordSymbol: { + global: { + superscriptOffset: number; + subscriptOffset: number; + kerningOffset: number; + lowerKerningText: string[]; + upperKerningText: string[]; + spacing: number; + superSubRatio: number; + }; + csymDiminished: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymHalfDiminished: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymAugmented: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensLeftTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensRightTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymBracketLeftTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymBracketRightTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensLeftVeryTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensRightVeryTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymDiagonalArrangementSlash: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymMinor: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymMajorSeventh: { + scale: number; + leftSideBearing: number; + yOffset: number; + advanceWidth: number; + }; + accidentalSharp: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + accidentalFlat: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + }; + jazzOrnaments: { + brassScoop: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassDoitMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFallLipShort: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassLiftMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFallRoughMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassBend: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassMuteClosed: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassMuteOpen: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFlip: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassJazzTurn: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassSmear: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + }; + tremolo: { + default: { + shiftY: number; + }; + grace: { + shiftY: number; + }; + }; + tuplet: { + noteHeadOffset: number; + stemOffset: number; + bottomLine: number; + topModifierOffset: number; + }; + }; +}; diff --git a/build/types/src/fonts/leland_glyphs.d.ts b/build/types/src/fonts/leland_glyphs.d.ts new file mode 100644 index 0000000000..c257ad4c6c --- /dev/null +++ b/build/types/src/fonts/leland_glyphs.d.ts @@ -0,0 +1,1183 @@ +export declare const LelandFont: { + glyphs: { + bracketTop: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + bracketBottom: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + segno: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + coda: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + gClef: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + cClef: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fClef: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + unpitchedPercussionClef1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + '6stringTabClef': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig0: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig3: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig4: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig5: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig6: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig7: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig8: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig9: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigCommon: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigCutCommon: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigPlus: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadXBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircleX: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDoubleWholeSquare: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSquareWhite: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSquareBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedDoubleWhole1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedWhole1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedHalf1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedBlack1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedDoubleWhole2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedWhole2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedHalf2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedBlack2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadParenthesisRight: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadParenthesisLeft: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadMoonBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleLeftBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleRightBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleRoundDownBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + augmentationDot: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + tremolo1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag8thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag8thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag16thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag16thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag32ndUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag32ndDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag64thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag64thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag128thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag128thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalNatural: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalDoubleSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalDoubleFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalParensLeft: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalParensRight: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalQuarterToneFlatStein: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalThreeQuarterTonesFlatZimmermann: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalQuarterToneSharpStein: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalThreeQuarterTonesSharpStein: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalBuyukMucennebFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalBakiyeFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalKucukMucennebSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articAccentAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articAccentBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articTenutoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articTenutoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatissimoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatissimoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articMarcatoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articMarcatoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataLongAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataLongBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataVeryLongAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataVeryLongBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataShortAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataShortBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + breathMarkComma: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + caesura: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + caesuraCurved: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restMaxima: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restWholeLegerLine: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restHalfLegerLine: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restQuarter: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest8th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest16th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest32nd: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest64th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest128th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicPiano: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicMezzo: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicForte: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicRinforzando: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicSforzando: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicZ: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTrill: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTurn: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTurnSlash: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentMordent: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentShortTrill: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTremblement: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompAppoggTrill: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompSlideTrillDAnglebert: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompSlideTrillBach: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompTrillSuffixDandrieu: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompDoubleCadenceUpperPrefix: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompTrillLowerSuffix: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassMuteClosed: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassMuteOpen: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + stringsDownBow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + stringsUpBow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + stringsHarmonic: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + pluckedSnapPizzicatoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + pluckedSnapPizzicatoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + keyboardPedalPed: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + keyboardPedalUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + wiggleArpeggiatoUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeat1Bar: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeat2Bars: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeat4Bars: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeatBarSlash: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymDiminished: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymHalfDiminished: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymAugmented: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymMajorSeventh: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalNarrowReversedFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalNarrowReversedFlatAndFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + }; + fontFamily: string; + resolution: number; + generatedOn: string; +}; diff --git a/build/types/src/fonts/leland_metrics.d.ts b/build/types/src/fonts/leland_metrics.d.ts new file mode 100644 index 0000000000..4e9fe91cc7 --- /dev/null +++ b/build/types/src/fonts/leland_metrics.d.ts @@ -0,0 +1,529 @@ +export declare const LelandMetrics: { + name: string; + smufl: boolean; + stave: { + padding: number; + endPaddingMax: number; + endPaddingMin: number; + unalignedNotePadding: number; + }; + accidental: { + noteheadAccidentalPadding: number; + leftPadding: number; + accidentalSpacing: number; + }; + clef: { + default: { + point: number; + width: number; + }; + small: { + point: number; + width: number; + }; + annotations: { + '8va': { + smuflCode: string; + default: { + point: number; + treble: { + line: number; + shiftX: number; + }; + }; + small: { + point: number; + treble: { + line: number; + shiftX: number; + }; + }; + }; + '8vb': { + smuflCode: string; + default: { + point: number; + treble: { + line: number; + shiftX: number; + }; + bass: { + line: number; + shiftX: number; + }; + }; + small: { + point: number; + treble: { + line: number; + shiftX: number; + }; + bass: { + line: number; + shiftX: number; + }; + }; + }; + }; + lineCount: { + '8': { + point: number; + shiftY: number; + }; + '7': { + point: number; + shiftY: number; + }; + '6': { + point: number; + shiftY: number; + }; + '5': { + point: number; + shiftY: number; + }; + '4': { + point: number; + shiftY: number; + }; + }; + }; + parenthesis: { + default: { + point: number; + width: number; + }; + gracenote: { + point: number; + width: number; + }; + }; + pedalMarking: { + up: { + point: number; + }; + down: { + point: number; + }; + }; + digits: { + shiftLine: number; + point: number; + tupletPoint: number; + shiftY: number; + }; + articulation: { + articStaccatissimoAbove: { + padding: number; + }; + articStaccatissimoBelow: { + padding: number; + }; + }; + tremolo: { + default: { + point: number; + spacing: number; + offsetYStemUp: number; + offsetYStemDown: number; + offsetXStemUp: number; + offsetXStemDown: number; + }; + grace: { + point: number; + spacing: number; + offsetYStemUp: number; + offsetYStemDown: number; + offsetXStemUp: number; + offsetXStemDown: number; + }; + }; + staveRepetition: { + symbolText: { + offsetX: number; + offsetY: number; + spacing: number; + }; + coda: { + offsetY: number; + }; + segno: { + offsetY: number; + }; + }; + stem: { + heightAdjustmentForFlag: number; + noteHead: { + noteheadTriangleUpHalf: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadTriangleUpBlack: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadTriangleUpWhole: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXHalf: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXBlack: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXWhole: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadHalf: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadBlack: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadSquareWhite: { + offsetYBaseStemDown: number; + offsetYBaseStemUp: number; + }; + }; + }; + glyphs: { + coda: { + point: number; + shiftX: number; + shiftY: number; + }; + segno: { + shiftX: number; + }; + flag: { + shiftX: number; + staveTempo: { + shiftX: number; + }; + }; + clef: { + gClef: { + default: { + scale: number; + shiftY: number; + }; + small: { + shiftY: number; + }; + }; + fClef: { + default: { + shiftY: number; + }; + }; + }; + ornament: { + ornamentTurn: { + scale: number; + }; + ornamentTurnSlash: { + scale: number; + }; + }; + stringNumber: { + verticalPadding: number; + stemPadding: number; + leftPadding: number; + rightPadding: number; + }; + stroke: { + arrowheadBlackDown: { + straight: { + shiftX: number; + }; + wiggly: { + shiftX: number; + shiftY: number; + }; + }; + arrowheadBlackUp: { + straight: { + shiftX: number; + }; + wiggly: { + shiftX: number; + shiftY: number; + }; + }; + }; + textNote: { + point: number; + breathMarkTick: { + point: number; + shiftY: number; + }; + breathMarkComma: { + point: number; + }; + segno: { + point: number; + shiftX: number; + shiftY: number; + }; + coda: { + point: number; + shiftX: number; + shiftY: number; + }; + ornamentTrill: { + shiftX: number; + shiftY: number; + }; + ornamentTurn: { + point: number; + }; + ornamentTurnSlash: { + point: number; + }; + ornamentMordent: { + shiftX: number; + }; + ornamentShortTrill: { + shiftX: number; + }; + }; + noteHead: { + minPadding: number; + standard: { + restQuarterStemUp: { + point: number; + }; + restQuarterStemDown: { + point: number; + }; + }; + custom: { + noteheadCircleXStemUp: { + shiftX: number; + }; + noteheadCircleXStemDown: { + shiftX: number; + }; + noteheadDiamondHalfStemUp: { + shiftX: number; + }; + noteheadDiamondBlackStemUp: { + shiftX: number; + }; + noteheadDiamondWholeStemUp: { + shiftX: number; + }; + noteheadXHalfStemUp: { + shiftX: number; + }; + noteheadXHalfStemDown: { + shiftX: number; + }; + noteheadXWholeStemUp: { + shiftX: number; + }; + noteheadXWholeStemDown: { + shiftX: number; + }; + noteheadSquareWhiteStemDown: { + shiftX: number; + }; + noteheadSquareWhiteStemUp: { + shiftX: number; + }; + noteheadSquareBlackStemUp: { + shiftX: number; + }; + noteheadTriangleUpWholeStemUp: { + shiftX: number; + }; + }; + }; + chordSymbol: { + global: { + superscriptOffset: number; + subscriptOffset: number; + kerningOffset: number; + lowerKerningText: string[]; + upperKerningText: string[]; + spacing: number; + superSubRatio: number; + }; + csymDiminished: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymHalfDiminished: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymAugmented: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensLeftTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensRightTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymBracketLeftTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymBracketRightTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensLeftVeryTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensRightVeryTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymDiagonalArrangementSlash: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymMinor: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymMajorSeventh: { + scale: number; + leftSideBearing: number; + yOffset: number; + advanceWidth: number; + }; + accidentalSharp: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + accidentalFlat: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + }; + jazzOrnaments: { + brassScoop: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassDoitMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFallLipShort: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassLiftMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFallRoughMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassBend: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassMuteClosed: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassMuteOpen: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFlip: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassJazzTurn: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassSmear: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + }; + tuplet: { + noteHeadOffset: number; + stemOffset: number; + bottomLine: number; + topModifierOffset: number; + }; + }; +}; diff --git a/build/types/src/fonts/load_all.d.ts b/build/types/src/fonts/load_all.d.ts new file mode 100644 index 0000000000..c8159357a9 --- /dev/null +++ b/build/types/src/fonts/load_all.d.ts @@ -0,0 +1 @@ +export declare function loadAllMusicFonts(): void; diff --git a/build/types/src/fonts/load_bravura.d.ts b/build/types/src/fonts/load_bravura.d.ts new file mode 100644 index 0000000000..368afa2244 --- /dev/null +++ b/build/types/src/fonts/load_bravura.d.ts @@ -0,0 +1 @@ +export declare function loadBravura(): void; diff --git a/build/types/src/fonts/load_custom.d.ts b/build/types/src/fonts/load_custom.d.ts new file mode 100644 index 0000000000..2b3b5207a7 --- /dev/null +++ b/build/types/src/fonts/load_custom.d.ts @@ -0,0 +1 @@ +export declare function loadCustom(): void; diff --git a/build/types/src/fonts/load_gonville.d.ts b/build/types/src/fonts/load_gonville.d.ts new file mode 100644 index 0000000000..1dad266116 --- /dev/null +++ b/build/types/src/fonts/load_gonville.d.ts @@ -0,0 +1 @@ +export declare function loadGonville(): void; diff --git a/build/types/src/fonts/load_leland.d.ts b/build/types/src/fonts/load_leland.d.ts new file mode 100644 index 0000000000..cd62e01095 --- /dev/null +++ b/build/types/src/fonts/load_leland.d.ts @@ -0,0 +1 @@ +export declare function loadLeland(): void; diff --git a/build/types/src/fonts/load_petaluma.d.ts b/build/types/src/fonts/load_petaluma.d.ts new file mode 100644 index 0000000000..db8a66540a --- /dev/null +++ b/build/types/src/fonts/load_petaluma.d.ts @@ -0,0 +1 @@ +export declare function loadPetaluma(): void; diff --git a/build/types/src/fonts/petaluma_glyphs.d.ts b/build/types/src/fonts/petaluma_glyphs.d.ts new file mode 100644 index 0000000000..fb06ce807e --- /dev/null +++ b/build/types/src/fonts/petaluma_glyphs.d.ts @@ -0,0 +1,1615 @@ +export declare const PetalumaFont: { + glyphs: { + bracketTop: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + bracketBottom: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + barlineTick: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + breathMarkTick: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + segno: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + coda: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + gClef: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + cClef: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fClef: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + unpitchedPercussionClef1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + '6stringTabClef': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig0: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig3: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig4: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig5: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig6: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig7: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig8: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSig9: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigCommon: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigCutCommon: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigPlus: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigPlusSmall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigMinus: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigParensRight: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigParensRightSmall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigParensLeft: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + timeSigParensLeftSmall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadXDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadXWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadXHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadXBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircleXDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircleXWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircleXHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircleX: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircledDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircledWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircledHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadCircledBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDoubleWholeSquare: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSquareWhite: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSquareBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleDownDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleDownWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleDownHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleDownBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleUpBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedDoubleWhole1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedWhole1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedHalf1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedBlack1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedDoubleWhole2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedWhole2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedHalf2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadSlashedBlack2: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadDiamondBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadParenthesis: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadParenthesisRight: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadParenthesisLeft: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadMoonBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleLeftBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleRightBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + noteheadTriangleRoundDownBlack: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + augmentationDot: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + tremolo1: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag8thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag8thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag16thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag16thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag32ndUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag32ndDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag64thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag64thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag128thUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + flag128thDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalNatural: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalDoubleSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalDoubleFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalParensLeft: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalParensRight: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalQuarterToneFlatStein: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalThreeQuarterTonesFlatZimmermann: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalQuarterToneSharpStein: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalThreeQuarterTonesSharpStein: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalBuyukMucennebFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalBakiyeFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalKomaSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalKucukMucennebSharp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalKoron: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalSori: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articAccentAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articAccentBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articTenutoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articTenutoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatissimoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articStaccatissimoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articMarcatoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + articMarcatoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataLongAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataLongBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataVeryLongAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataVeryLongBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataShortAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + fermataShortBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + breathMarkComma: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + breathMarkUpbow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + caesura: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + caesuraCurved: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restMaxima: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restDoubleWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restWhole: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restWholeLegerLine: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restHalf: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restHalfLegerLine: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + restQuarter: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest8th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest16th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest32nd: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest64th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + rest128th: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicPiano: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicMezzo: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicForte: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicRinforzando: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicSforzando: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + dynamicZ: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTrill: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTurn: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTurnSlash: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentMordent: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentShortTrill: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentTremblement: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompAppoggTrill: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompSlideTrillDAnglebert: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompSlideTrillBach: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompTrillSuffixDandrieu: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompDoubleCadenceUpperPrefix: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompDoubleCadenceUpperPrefixTurn: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + ornamentPrecompTrillLowerSuffix: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassScoop: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassDoitMedium: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassFallLipShort: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassLiftMedium: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassFallRoughMedium: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassBend: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassMuteClosed: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassMuteOpen: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassFlip: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassJazzTurn: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + brassSmear: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + stringsDownBow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + stringsUpBow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + stringsHarmonic: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + pluckedSnapPizzicatoAbove: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + pluckedSnapPizzicatoBelow: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + pluckedLeftHandPizzicato: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + keyboardPedalPed: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + keyboardPedalUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + pictChokeCymbal: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + wiggleArpeggiatoUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + arpeggiatoUp: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + arpeggiatoDown: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeat1Bar: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeat2Bars: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeat4Bars: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + repeatBarSlash: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymDiminished: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymHalfDiminished: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymAugmented: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymMajorSeventh: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymMinor: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymParensLeftTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymParensRightTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymBracketLeftTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymBracketRightTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymParensLeftVeryTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymParensRightVeryTall: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + csymDiagonalArrangementSlash: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalNarrowReversedFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalNarrowReversedFlatAndFlat: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalWilsonPlus: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + accidentalWilsonMinus: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + o: string; + }; + }; + fontFamily: string; + resolution: number; + generatedOn: string; +}; diff --git a/build/types/src/fonts/petaluma_metrics.d.ts b/build/types/src/fonts/petaluma_metrics.d.ts new file mode 100644 index 0000000000..62fb61f849 --- /dev/null +++ b/build/types/src/fonts/petaluma_metrics.d.ts @@ -0,0 +1,568 @@ +/** + * The Petaluma font was created by Steinberg Media. + * https://github.com/steinbergmedia/petaluma + */ +export declare const PetalumaMetrics: { + name: string; + smufl: boolean; + stave: { + padding: number; + endPaddingMax: number; + endPaddingMin: number; + unalignedNotePadding: number; + }; + accidental: { + noteheadAccidentalPadding: number; + leftPadding: number; + accidentalSpacing: number; + }; + clef: { + default: { + point: number; + width: number; + }; + small: { + point: number; + width: number; + }; + annotations: { + '8va': { + smuflCode: string; + default: { + point: number; + treble: { + line: number; + shiftX: number; + }; + }; + small: { + point: number; + treble: { + line: number; + shiftX: number; + }; + }; + }; + '8vb': { + smuflCode: string; + default: { + point: number; + treble: { + line: number; + shiftX: number; + }; + bass: { + line: number; + shiftX: number; + }; + }; + small: { + point: number; + treble: { + line: number; + shiftX: number; + }; + bass: { + line: number; + shiftX: number; + }; + }; + }; + }; + lineCount: { + '8': { + point: number; + shiftY: number; + }; + '7': { + point: number; + shiftY: number; + }; + '6': { + point: number; + shiftY: number; + }; + '5': { + point: number; + shiftY: number; + }; + '4': { + point: number; + shiftY: number; + }; + }; + }; + parenthesis: { + default: { + point: number; + width: number; + }; + gracenote: { + point: number; + width: number; + }; + }; + pedalMarking: { + up: { + point: number; + }; + down: { + point: number; + }; + }; + digits: { + shiftLine: number; + point: number; + tupletPoint: number; + shiftY: number; + }; + articulation: { + articStaccatissimoAbove: { + padding: number; + }; + articStaccatissimoBelow: { + padding: number; + }; + }; + tremolo: { + default: { + point: number; + spacing: number; + offsetYStemUp: number; + offsetYStemDown: number; + offsetXStemUp: number; + offsetXStemDown: number; + }; + grace: { + point: number; + spacing: number; + offsetYStemUp: number; + offsetYStemDown: number; + offsetXStemUp: number; + offsetXStemDown: number; + }; + }; + staveRepetition: { + symbolText: { + offsetX: number; + offsetY: number; + spacing: number; + }; + coda: { + offsetY: number; + }; + segno: { + offsetY: number; + }; + }; + noteHead: { + displaced: { + shiftX: number; + }; + }; + stem: { + heightAdjustmentForFlag: number; + noteHead: { + noteheadTriangleUpHalf: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadTriangleUpBlack: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadTriangleUpWhole: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXHalf: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXBlack: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadXWhole: { + offsetYBaseStemUp: number; + offsetYBaseStemDown: number; + }; + noteheadHalf: { + offsetYBaseStemDown: number; + offsetYBaseStemUp: number; + }; + noteheadBlack: { + offsetYBaseStemDown: number; + offsetYBaseStemUp: number; + }; + noteheadSquareWhite: { + offsetYBaseStemDown: number; + offsetYBaseStemUp: number; + }; + }; + }; + glyphs: { + coda: { + point: number; + shiftX: number; + shiftY: number; + }; + segno: { + shiftX: number; + }; + flag: { + shiftX: number; + flag16thUp: { + shiftX: number; + }; + flag32ndUp: { + shiftX: number; + }; + flag64thUp: { + shiftX: number; + }; + flag128thUp: { + shiftX: number; + }; + flag16thDown: { + shiftX: number; + }; + flag32ndDown: { + shiftX: number; + }; + flag64thDown: { + shiftX: number; + }; + flag128thDown: { + shiftX: number; + }; + staveTempo: { + shiftX: number; + }; + }; + clef: { + gClef: { + default: { + scale: number; + shiftY: number; + }; + small: { + shiftY: number; + }; + }; + fClef: { + default: { + shiftY: number; + }; + }; + }; + ornament: { + ornamentTurn: { + scale: number; + }; + ornamentTurnSlash: { + scale: number; + }; + }; + stringNumber: { + verticalPadding: number; + stemPadding: number; + leftPadding: number; + rightPadding: number; + }; + stroke: { + arrowheadBlackDown: { + straight: { + shiftX: number; + }; + wiggly: { + shiftX: number; + shiftY: number; + }; + }; + arrowheadBlackUp: { + straight: { + shiftX: number; + }; + wiggly: { + shiftX: number; + shiftY: number; + }; + }; + }; + textNote: { + point: number; + breathMarkTick: { + point: number; + shiftY: number; + }; + breathMarkComma: { + point: number; + }; + segno: { + point: number; + shiftX: number; + shiftY: number; + }; + coda: { + point: number; + shiftX: number; + shiftY: number; + }; + ornamentTrill: { + shiftX: number; + shiftY: number; + }; + ornamentMordent: { + shiftX: number; + }; + ornamentShortTrill: { + shiftX: number; + }; + }; + noteHead: { + minPadding: number; + standard: { + noteheadBlackStemUp: { + shiftX: number; + }; + noteheadHalfStemUp: { + shiftX: number; + }; + noteheadWholeStemUp: { + shiftX: number; + }; + }; + custom: { + noteheadCircleXStemUp: { + shiftX: number; + }; + noteheadCircleXStemDown: { + shiftX: number; + }; + noteheadDiamondHalfStemUp: { + shiftX: number; + }; + noteheadDiamondBlackStemUp: { + shiftX: number; + }; + noteheadDiamondWholeStemUp: { + shiftX: number; + }; + noteheadXBlackStemUp: { + shiftX: number; + }; + noteheadXHalfStemUp: { + shiftX: number; + }; + noteheadXHalfStemDown: { + shiftX: number; + }; + noteheadXWholeStemUp: { + shiftX: number; + }; + noteheadXWholeStemDown: { + shiftX: number; + }; + noteheadXDoubleWholeStemUp: { + shiftX: number; + }; + noteheadXDoubleWholeStemDown: { + shiftX: number; + }; + noteheadSquareWhiteStemDown: { + shiftX: number; + }; + noteheadSquareWhiteStemUp: { + shiftX: number; + }; + noteheadSquareBlackStemUp: { + shiftX: number; + }; + noteheadTriangleUpWholeStemUp: { + shiftX: number; + }; + }; + }; + chordSymbol: { + global: { + superscriptOffset: number; + subscriptOffset: number; + kerningOffset: number; + lowerKerningText: string[]; + upperKerningText: string[]; + spacing: number; + superSubRatio: number; + }; + csymDiminished: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymHalfDiminished: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymAugmented: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensLeftTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensRightTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymBracketLeftTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymBracketRightTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensLeftVeryTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymParensRightVeryTall: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymDiagonalArrangementSlash: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymMinor: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + csymMajorSeventh: { + scale: number; + leftSideBearing: number; + yOffset: number; + advanceWidth: number; + }; + accidentalSharp: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + accidentalFlat: { + scale: number; + leftSideBearing: number; + advanceWidth: number; + yOffset: number; + }; + }; + jazzOrnaments: { + brassScoop: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassDoitMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFallLipShort: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassLiftMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFallRoughMedium: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassBend: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassMuteClosed: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassMuteOpen: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassFlip: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassJazzTurn: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + brassSmear: { + scale: number; + xOffset: number; + yOffset: number; + stemUpYOffset: number; + reportedWidth: number; + }; + }; + tuplet: { + noteHeadOffset: number; + stemOffset: number; + bottomLine: number; + topModifierOffset: number; + }; + }; +}; diff --git a/build/types/src/fonts/petalumascript_glyphs.d.ts b/build/types/src/fonts/petalumascript_glyphs.d.ts new file mode 100644 index 0000000000..82295a6a3a --- /dev/null +++ b/build/types/src/fonts/petalumascript_glyphs.d.ts @@ -0,0 +1,863 @@ +export declare const PetalumaScriptFont: { + spacing: number; + glyphs: { + ' ': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '0': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '1': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '2': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '3': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '4': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '5': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '6': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '7': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '8': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '9': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '!': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '"': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '#': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + $: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '%': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '&': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + "'": { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '(': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + ')': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '*': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '+': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + ',': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '-': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '.': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '/': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + ':': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + ';': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '<': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '=': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '>': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '?': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '@': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + A: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + B: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + C: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + D: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + E: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + F: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + G: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + H: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + I: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + J: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + K: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + L: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + M: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + N: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + O: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + P: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + Q: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + R: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + S: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + T: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + U: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + V: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + W: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + X: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + Y: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + Z: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '[': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '\\': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + ']': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '^': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + _: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '`': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + a: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + b: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + c: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + d: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + e: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + f: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + g: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + h: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + i: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + j: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + k: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + l: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + m: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + n: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + o: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + p: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + q: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + r: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + s: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + t: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + u: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + v: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + w: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + x: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + y: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + z: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '{': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '|': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '}': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '~': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + }; + fontFamily: string; + resolution: number; + generatedOn: string; +}; diff --git a/build/types/src/fonts/robotoslab_glyphs.d.ts b/build/types/src/fonts/robotoslab_glyphs.d.ts new file mode 100644 index 0000000000..3bfa79f006 --- /dev/null +++ b/build/types/src/fonts/robotoslab_glyphs.d.ts @@ -0,0 +1,863 @@ +export declare const RobotoSlabFont: { + spacing: number; + glyphs: { + ' ': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '0': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '1': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '2': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '3': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '4': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '5': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '6': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '7': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '8': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '9': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '!': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '"': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '#': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + $: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '%': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '&': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + "'": { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '(': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + ')': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '*': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '+': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + ',': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '-': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '.': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '/': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + ':': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + ';': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '<': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '=': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '>': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '?': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '@': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + A: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + B: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + C: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + D: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + E: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + F: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + G: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + H: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + I: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + J: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + K: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + L: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + M: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + N: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + O: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + P: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + Q: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + R: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + S: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + T: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + U: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + V: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + W: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + X: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + Y: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + Z: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '[': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '\\': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + ']': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '^': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + _: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '`': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + a: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + b: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + c: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + d: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + e: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + f: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + g: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + h: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + i: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + j: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + k: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + l: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + m: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + n: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + o: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + p: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + q: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + r: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + s: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + t: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + u: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + v: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + w: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + x: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + y: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + z: { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '{': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '|': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '}': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + '~': { + x_min: number; + x_max: number; + y_min: number; + y_max: number; + ha: number; + leftSideBearing: number; + advanceWidth: number; + }; + }; + fontFamily: string; + resolution: number; + generatedOn: string; +}; diff --git a/build/types/src/fonts/textfonts.d.ts b/build/types/src/fonts/textfonts.d.ts new file mode 100644 index 0000000000..a9a1721cd3 --- /dev/null +++ b/build/types/src/fonts/textfonts.d.ts @@ -0,0 +1 @@ +export declare function loadTextFonts(): void; diff --git a/build/types/src/formatter.d.ts b/build/types/src/formatter.d.ts new file mode 100644 index 0000000000..4a447ad30c --- /dev/null +++ b/build/types/src/formatter.d.ts @@ -0,0 +1,215 @@ +import { BoundingBox } from './boundingbox'; +import { ModifierContext } from './modifiercontext'; +import { RenderContext } from './rendercontext'; +import { Stave } from './stave'; +import { StemmableNote } from './stemmablenote'; +import { TabNote } from './tabnote'; +import { TabStave } from './tabstave'; +import { Tickable } from './tickable'; +import { TickContext } from './tickcontext'; +import { Voice } from './voice'; +export interface FormatterOptions { + /** Defaults to 100. */ + softmaxFactor?: number; + /** Defaults to `false`. */ + globalSoftmax?: boolean; + /** Defaults to 5. */ + maxIterations?: number; +} +export interface FormatParams { + align_rests?: boolean; + stave?: Stave; + context?: RenderContext; + auto_beam?: boolean; +} +export interface AlignmentContexts { + list: number[]; + map: Record; + array: T[]; + resolutionMultiplier: number; +} +export interface AlignmentModifierContexts { + map: Map>; + array: ModifierContext[]; + resolutionMultiplier: number; +} +/** + * Format implements the formatting and layout algorithms that are used + * to position notes in a voice. The algorithm can align multiple voices both + * within a stave, and across multiple staves. + * + * To do this, the formatter breaks up voices into a grid of rational-valued + * `ticks`, to which each note is assigned. Then, minimum widths are assigned + * to each tick based on the widths of the notes and modifiers in that tick. This + * establishes the smallest amount of space required for each tick. + * + * Finally, the formatter distributes the left over space proportionally to + * all the ticks, setting the `x` values of the notes in each tick. + * + * See `tests/formatter_tests.ts` for usage examples. The helper functions included + * here (`FormatAndDraw`, `FormatAndDrawTab`) also serve as useful usage examples. + */ +export declare class Formatter { + static DEBUG: boolean; + protected hasMinTotalWidth: boolean; + protected minTotalWidth: number; + protected contextGaps: { + total: number; + gaps: { + x1: number; + x2: number; + }[]; + }; + protected justifyWidth: number; + protected totalCost: number; + protected totalShift: number; + protected tickContexts: AlignmentContexts; + protected formatterOptions: Required; + protected modifierContexts: AlignmentModifierContexts[]; + protected voices: Voice[]; + protected lossHistory: number[]; + protected durationStats: Record; + /** + * Helper function to layout "notes" one after the other without + * regard for proportions. Useful for tests and debugging. + */ + static SimpleFormat(notes: Tickable[], x?: number, { paddingBetween }?: { + paddingBetween?: number | undefined; + }): void; + /** Helper function to plot formatter debug info. */ + static plotDebugging(ctx: RenderContext, formatter: Formatter, xPos: number, y1: number, y2: number, options?: { + stavePadding: number; + }): void; + /** + * Helper function to format and draw a single voice. Returns a bounding + * box for the notation. + * @param ctx the rendering context + * @param stave the stave to which to draw (`Stave` or `TabStave`) + * @param notes array of `Note` instances (`Note`, `TextNote`, `TabNote`, etc.) + * @param params one of below: + * * Setting `autobeam` only `(context, stave, notes, true)` or + * `(ctx, stave, notes, {autobeam: true})` + * * Setting `align_rests` a struct is needed `(context, stave, notes, {align_rests: true})` + * * Setting both a struct is needed `(context, stave, notes, { + * autobeam: true, align_rests: true})` + * * `autobeam` automatically generates beams for the notes. + * * `align_rests` aligns rests with nearby notes. + */ + static FormatAndDraw(ctx: RenderContext, stave: Stave, notes: StemmableNote[], params?: FormatParams | boolean): BoundingBox | undefined; + /** + * Helper function to format and draw aligned tab and stave notes in two + * separate staves. + * @param ctx the rendering context + * @param tabstave a `TabStave` instance on which to render `TabNote`s. + * @param stave a `Stave` instance on which to render `Note`s. + * @param notes array of `Note` instances for the stave (`Note`, `BarNote`, etc.) + * @param tabnotes array of `Note` instances for the tab stave (`TabNote`, `BarNote`, etc.) + * @param autobeam automatically generate beams. + * @param params a configuration object: + * * `autobeam` automatically generates beams for the notes. + * * `align_rests` aligns rests with nearby notes. + */ + static FormatAndDrawTab(ctx: RenderContext, tabstave: TabStave, stave: Stave, tabnotes: TabNote[], notes: Tickable[], autobeam: boolean, params: FormatParams): void; + /** + * Automatically set the vertical position of rests based on previous/next note positions. + * @param tickables an array of Tickables. + * @param alignAllNotes If `false`, only align rests that are within a group of beamed notes. + * @param alignTuplets If `false`, ignores tuplets. + */ + static AlignRestsToNotes(tickables: Tickable[], alignAllNotes: boolean, alignTuplets?: boolean): void; + constructor(options?: FormatterOptions); + /** + * Find all the rests in each of the `voices` and align them to neighboring notes. + * + * @param voices + * @param alignAllNotes If `false`, only align rests within beamed groups of notes. If `true`, align all rests. + */ + alignRests(voices: Voice[], alignAllNotes: boolean): void; + /** + * Estimate the width required to render 'voices'. This is done by: + * 1. Sum the widths of all the tick contexts + * 2. Estimate the padding. + * The latter is done by calculating the padding 3 different ways, and taking the + * greatest value: + * 1. the padding required for unaligned notes in different voices + * 2. the padding based on the stddev of the tickable widths + * 3. the padding based on the stddev of the tickable durations. + * + * The last 2 quantities estimate a 'width entropy', where notes might need more + * room than the proportional formatting gives them. A measure of all same duration + * and width will need no extra padding, and all these quantities will be + * zero in that case. + * + * Note: joinVoices has to be called before calling preCalculateMinTotalWidth. + * + * @param voices the voices that contain the notes + * @returns the estimated width in pixels + */ + preCalculateMinTotalWidth(voices: Voice[]): number; + /** + * Get minimum width required to render all voices. Either `format` or + * `preCalculateMinTotalWidth` must be called before this method. + */ + getMinTotalWidth(): number; + /** Calculate the resolution multiplier for `voices`. */ + static getResolutionMultiplier(voices: Voice[]): number; + /** Create a `ModifierContext` for each tick in `voices`. */ + createModifierContexts(voices: Voice[]): void; + /** + * Create a `TickContext` for each tick in `voices`. Also calculate the + * total number of ticks in voices. + */ + createTickContexts(voices: Voice[]): AlignmentContexts; + /** + * Get the AlignmentContexts of TickContexts that were created by createTickContexts. + * Returns undefined if createTickContexts has not yet been run. + */ + getTickContexts(): AlignmentContexts | undefined; + /** + * This is the core formatter logic. Format voices and justify them + * to `justifyWidth` pixels. `renderingContext` is required to justify elements + * that can't retrieve widths without a canvas. This method sets the `x` positions + * of all the tickables/notes in the formatter. + */ + preFormat(justifyWidth?: number, renderingContext?: RenderContext, voicesParam?: Voice[], stave?: Stave): number; + /** Calculate the total cost of this formatting decision. */ + evaluate(): number; + /** + * Run a single iteration of rejustification. At a high level, this method calculates + * the overall "loss" (or cost) of this layout, and repositions tickcontexts in an + * attempt to reduce the cost. You can call this method multiple times until it finds + * and oscillates around a global minimum. + * @param options[alpha] the "learning rate" for the formatter. It determines how much of a shift + * the formatter should make based on its cost function. + */ + tune(options?: { + alpha?: number; + }): number; + /** + * This is the top-level call for all formatting logic completed + * after `x` *and* `y` values have been computed for the notes + * in the voices. + */ + postFormat(): this; + /** + * Take all `voices` and create `ModifierContext`s out of them. This tells + * the formatters that the voices belong on a single stave. + */ + joinVoices(voices: Voice[]): this; + /** + * Align rests in voices, justify the contexts, and position the notes + * so voices are aligned and ready to render onto the stave. This method + * mutates the `x` positions of all tickables in `voices`. + * + * Voices are full justified to fit in `justifyWidth` pixels. + * + * Set `options.context` to the rendering context. Set `options.align_rests` + * to true to enable rest alignment. + */ + format(voices: Voice[], justifyWidth?: number, options?: FormatParams): this; + formatToStave(voices: Voice[], stave: Stave, optionsParam?: FormatParams): this; + getTickContext(tick: number): TickContext | undefined; +} diff --git a/build/types/src/fraction.d.ts b/build/types/src/fraction.d.ts new file mode 100644 index 0000000000..41aad5c956 --- /dev/null +++ b/build/types/src/fraction.d.ts @@ -0,0 +1,62 @@ +/** Fraction represents a rational number. */ +export declare class Fraction { + static get CATEGORY(): string; + private static __staticFractionA; + private static __staticFractionB; + private static __staticFractionTmp; + /** + * GCD: Greatest common divisor using the Euclidean algorithm. + * Note: GCD(0, 0) => 0 and GCD(0, n) => n. + */ + static GCD(a: number, b: number): number; + /** LCM: Lowest common multiple. */ + static LCM(a: number, b: number): number; + /** Lowest common multiple for more than two numbers. */ + static LCMM(args: number[]): number; + numerator: number; + denominator: number; + /** Set the numerator and denominator. */ + constructor(numerator?: number, denominator?: number); + /** Set the numerator and denominator. */ + set(numerator?: number, denominator?: number): this; + /** Return the value of the fraction. */ + value(): number; + /** Simplify numerator and denominator using GCD. */ + simplify(): this; + /** Add value of another fraction. */ + add(param1?: Fraction | number, param2?: number): this; + /** Substract value of another fraction. */ + subtract(param1?: Fraction | number, param2?: number): this; + /** Multiply by value of another fraction. */ + multiply(param1?: Fraction | number, param2?: number): this; + /** Divide by value of another Fraction. */ + divide(param1?: Fraction | number, param2?: number): this; + /** Simplify both sides and check if they are equal. */ + equals(compare: Fraction | number): boolean; + /** Greater than operator. */ + greaterThan(compare: Fraction | number): boolean; + /** Greater than or equals operator. */ + greaterThanEquals(compare: Fraction | number): boolean; + /** Less than operator. */ + lessThan(compare: Fraction | number): boolean; + /** Less than or equals operator. */ + lessThanEquals(compare: Fraction | number): boolean; + /** Return a new copy with current values. */ + clone(): Fraction; + /** Copy value of another fraction. */ + copy(other: Fraction | number): this; + /** Return the integer component (eg. 5/2 => 2). */ + quotient(): number; + /** Return the remainder component (eg. 5/2 => 1). */ + remainder(): number; + /** Calculate absolute value. */ + makeAbs(): this; + /** Return a raw string representation (eg. "5/2"). */ + toString(): string; + /** Return a simplified string respresentation. */ + toSimplifiedString(): string; + /** Return string representation in mixed form. */ + toMixedString(): string; + /** Parse a fraction string. */ + parse(str: string): this; +} diff --git a/build/types/src/frethandfinger.d.ts b/build/types/src/frethandfinger.d.ts new file mode 100644 index 0000000000..d7946ce0b6 --- /dev/null +++ b/build/types/src/frethandfinger.d.ts @@ -0,0 +1,22 @@ +import { Builder } from './easyscore'; +import { FontInfo } from './font'; +import { Modifier } from './modifier'; +import { ModifierContextState } from './modifiercontext'; +import { StemmableNote } from './stemmablenote'; +export declare class FretHandFinger extends Modifier { + static get CATEGORY(): string; + static TEXT_FONT: Required; + static format(nums: FretHandFinger[], state: ModifierContextState): boolean; + static easyScoreHook({ fingerings }: { + fingerings?: string | undefined; + } | undefined, note: StemmableNote, builder: Builder): void; + protected finger: string; + protected x_offset: number; + protected y_offset: number; + constructor(finger: string); + setFretHandFinger(finger: string): this; + getFretHandFinger(): string; + setOffsetX(x: number): this; + setOffsetY(y: number): this; + draw(): void; +} diff --git a/build/types/src/ghostnote.d.ts b/build/types/src/ghostnote.d.ts new file mode 100644 index 0000000000..ba30a4337b --- /dev/null +++ b/build/types/src/ghostnote.d.ts @@ -0,0 +1,16 @@ +import { ModifierContext } from './modifiercontext'; +import { NoteStruct } from './note'; +import { Stave } from './stave'; +import { StemmableNote } from './stemmablenote'; +export declare class GhostNote extends StemmableNote { + static get CATEGORY(): string; + constructor(parameter: string | NoteStruct); + /** + * @returns true if this note is a type of rest. Rests don't have pitches, but take up space in the score. + */ + isRest(): boolean; + setStave(stave: Stave): this; + addToModifierContext(mc: ModifierContext): this; + preFormat(): this; + draw(): void; +} diff --git a/build/types/src/glyph.d.ts b/build/types/src/glyph.d.ts new file mode 100644 index 0000000000..620c6fa54e --- /dev/null +++ b/build/types/src/glyph.d.ts @@ -0,0 +1,141 @@ +import { BoundingBox } from './boundingbox'; +import { Element } from './element'; +import { Font, FontGlyph } from './font'; +import { RenderContext } from './rendercontext'; +import { Stave } from './stave'; +import { Stem } from './stem'; +export interface GlyphProps { + code_head: string; + dot_shiftY: number; + position: string; + rest: boolean; + line_below: number; + line_above: number; + stem_beam_extension: number; + stem_up_extension: number; + stem_down_extension: number; + stem: Stem; + code: string; + code_flag_upstem: string; + code_flag_downstem: string; + flag: boolean; + width: number; + text: string; + tabnote_stem_down_extension: number; + tabnote_stem_up_extension: number; + beam_count: number; + shift_y: number; + getWidth(a?: number): number; + getMetrics(): GlyphMetrics; +} +export interface GlyphOptions { + category?: string; +} +export interface GlyphMetrics { + width: number; + height: number; + x_min: number; + x_max: number; + x_shift: number; + y_shift: number; + scale: number; + ha: number; + outline: number[]; + font: Font; +} +export declare const enum OutlineCode { + MOVE = 0, + LINE = 1, + QUADRATIC = 2, + BEZIER = 3 +} +declare class GlyphCacheEntry { + metrics: GlyphMetrics; + bbox: BoundingBox; + point: number; + constructor(fontStack: Font[], code: string, category?: string); +} +declare class GlyphCache { + protected cache: Map>; + lookup(code: string, category?: string): GlyphCacheEntry; +} +export declare class Glyph extends Element { + static get CATEGORY(): string; + protected static cache: GlyphCache; + static CURRENT_CACHE_KEY: string; + static MUSIC_FONT_STACK: Font[]; + /** + * Pass a key of the form `glyphs.{category}.{code}.{key}` to Font.lookupMetric(). If the initial lookup fails, + * try again with the path `glyphs.{category}.{key}`. If the second lookup fails, return the defaultValue. + * + * @param font + * @param category any metric path under 'glyphs', so 'stem.up' could resolve to glyphs.stem.up.shiftX, glyphs.stem.up.shiftY, etc. + * @param code + * @param key + * @param defaultValue + */ + static lookupFontMetric(font: Font, category: string, code: string, key: string, defaultValue: number): number; + static lookupGlyph(fontStack: Font[], code: string): { + font: Font; + glyph: FontGlyph; + }; + static loadMetrics(fontStack: Font[], code: string, category?: string): GlyphMetrics; + /** + * Renders glyphs from the default font stack. + * + * @param ctx Canvas or SVG context + * @param x_pos x coordinate + * @param y_pos y coordinate + * @param point the point size of the font + * @param code the glyph code in font.getGlyphs() + * @param options + * @returns + */ + static renderGlyph(ctx: RenderContext, x_pos: number, y_pos: number, point: number, code: string, options?: { + category?: string; + scale?: number; + }): GlyphMetrics; + static renderOutline(ctx: RenderContext, outline: number[], scale: number, x_pos: number, y_pos: number): void; + static getOutlineBoundingBox(outline: number[], scale: number, x_pos: number, y_pos: number): BoundingBox; + static getWidth(code: string, point: number, category?: string): number; + bbox: BoundingBox; + code: string; + metrics: GlyphMetrics; + topGlyphs: Glyph[]; + botGlyphs: Glyph[]; + protected options: GlyphOptions; + protected originShift: { + x: number; + y: number; + }; + protected x_shift: number; + protected y_shift: number; + scale: number; + protected point: number; + protected stave?: Stave; + /** + * @param code + * @param point + * @param options + */ + constructor(code: string, point: number, options?: GlyphOptions); + draw(...args: any[]): void; + getCode(): string; + setOptions(options: any): void; + setPoint(point: number): this; + setStave(stave: Stave): this; + getXShift(): number; + setXShift(x_shift: number): this; + getYshift(): number; + setYShift(y_shift: number): this; + reset(): void; + checkMetrics(): GlyphMetrics; + getMetrics(): GlyphMetrics; + setOriginX(x: number): void; + setOriginY(y: number): void; + setOrigin(x: number, y: number): void; + render(ctx: RenderContext, x: number, y: number): void; + checkStave(): Stave; + renderToStave(x: number): void; +} +export {}; diff --git a/build/types/src/glyphnote.d.ts b/build/types/src/glyphnote.d.ts new file mode 100644 index 0000000000..0f0279eaf7 --- /dev/null +++ b/build/types/src/glyphnote.d.ts @@ -0,0 +1,17 @@ +import { BoundingBox } from './boundingbox'; +import { Glyph } from './glyph'; +import { Note, NoteStruct } from './note'; +export interface GlyphNoteOptions { + ignoreTicks?: boolean; + line?: number; +} +export declare class GlyphNote extends Note { + static get CATEGORY(): string; + protected options: Required; + constructor(glyph: Glyph | undefined, noteStruct: NoteStruct, options?: GlyphNoteOptions); + setGlyph(glyph: Glyph): this; + getBoundingBox(): BoundingBox; + preFormat(): this; + drawModifiers(): void; + draw(): void; +} diff --git a/build/types/src/gracenote.d.ts b/build/types/src/gracenote.d.ts new file mode 100644 index 0000000000..55c1f26593 --- /dev/null +++ b/build/types/src/gracenote.d.ts @@ -0,0 +1,19 @@ +import { StaveNote, StaveNoteStruct } from './stavenote'; +export interface GraceNoteStruct extends StaveNoteStruct { + slash?: boolean; +} +export declare class GraceNote extends StaveNote { + static get CATEGORY(): string; + static get LEDGER_LINE_OFFSET(): number; + static get SCALE(): number; + protected slash: boolean; + protected slur: boolean; + constructor(noteStruct: GraceNoteStruct); + getStemExtension(): number; + getStaveNoteScale(): number; + draw(): void; + calcBeamedNotesSlashBBox(slashStemOffset: number, slashBeamOffset: number, protrusions: { + beam: number; + stem: number; + }): Record; +} diff --git a/build/types/src/gracenotegroup.d.ts b/build/types/src/gracenotegroup.d.ts new file mode 100644 index 0000000000..9b807374d1 --- /dev/null +++ b/build/types/src/gracenotegroup.d.ts @@ -0,0 +1,33 @@ +import { Beam } from './beam'; +import { Formatter } from './formatter'; +import { Modifier } from './modifier'; +import { ModifierContextState } from './modifiercontext'; +import { Note } from './note'; +import { StaveTie } from './stavetie'; +import { StemmableNote } from './stemmablenote'; +import { TabTie } from './tabtie'; +import { Voice } from './voice'; +/** GraceNoteGroup is used to format and render grace notes. */ +export declare class GraceNoteGroup extends Modifier { + static DEBUG: boolean; + static get CATEGORY(): string; + protected readonly voice: Voice; + protected readonly grace_notes: StemmableNote[]; + protected readonly show_slur?: boolean; + protected preFormatted: boolean; + protected formatter?: Formatter; + render_options: { + slur_y_shift: number; + }; + protected slur?: StaveTie | TabTie; + protected beams: Beam[]; + /** Arranges groups inside a `ModifierContext`. */ + static format(gracenote_groups: GraceNoteGroup[], state: ModifierContextState): boolean; + constructor(grace_notes: StemmableNote[], show_slur?: boolean); + preFormat(): void; + beamNotes(grace_notes?: StemmableNote[]): this; + setWidth(width: number): this; + getWidth(): number; + getGraceNotes(): Note[]; + draw(): void; +} diff --git a/build/types/src/gracetabnote.d.ts b/build/types/src/gracetabnote.d.ts new file mode 100644 index 0000000000..fe6bcf3819 --- /dev/null +++ b/build/types/src/gracetabnote.d.ts @@ -0,0 +1,5 @@ +import { TabNote, TabNoteStruct } from './tabnote'; +export declare class GraceTabNote extends TabNote { + static get CATEGORY(): string; + constructor(noteStruct: TabNoteStruct); +} diff --git a/build/types/src/index.d.ts b/build/types/src/index.d.ts new file mode 100644 index 0000000000..dfefbc7915 --- /dev/null +++ b/build/types/src/index.d.ts @@ -0,0 +1,89 @@ +export * from './accidental'; +export * from './annotation'; +export * from './articulation'; +export * from './barnote'; +export * from './beam'; +export * from './bend'; +export * from './boundingbox'; +export * from './boundingboxcomputation'; +export * from './canvascontext'; +export * from './chordsymbol'; +export * from './clef'; +export * from './clefnote'; +export * from './crescendo'; +export * from './curve'; +export * from './dot'; +export * from './easyscore'; +export * from './element'; +export * from './factory'; +export * from './flow'; +export * from './font'; +export * from './formatter'; +export * from './fraction'; +export * from './frethandfinger'; +export * from './ghostnote'; +export * from './glyph'; +export * from './glyphnote'; +export * from './gracenote'; +export * from './gracenotegroup'; +export * from './gracetabnote'; +export * from './keymanager'; +export * from './keysignature'; +export * from './keysignote'; +export * from './modifier'; +export * from './modifiercontext'; +export * from './multimeasurerest'; +export * from './music'; +export * from './note'; +export * from './notehead'; +export * from './notesubgroup'; +export * from './ornament'; +export * from './parenthesis'; +export * from './parser'; +export * from './pedalmarking'; +export * from './registry'; +export * from './rendercontext'; +export * from './renderer'; +export * from './repeatnote'; +export * from './stave'; +export * from './stavebarline'; +export * from './staveconnector'; +export * from './stavehairpin'; +export * from './staveline'; +export * from './stavemodifier'; +export * from './stavenote'; +export * from './staverepetition'; +export * from './stavesection'; +export * from './stavetempo'; +export * from './stavetext'; +export * from './stavetie'; +export * from './stavevolta'; +export * from './stem'; +export * from './stemmablenote'; +export * from './stringnumber'; +export * from './strokes'; +export * from './svgcontext'; +export * from './system'; +export * from './tabnote'; +export * from './tabslide'; +export * from './tabstave'; +export * from './tabtie'; +export * from './textbracket'; +export * from './textdynamics'; +export * from './textformatter'; +export * from './textnote'; +export * from './tickable'; +export * from './tickcontext'; +export * from './timesigglyph'; +export * from './timesignature'; +export * from './timesignote'; +export * from './tremolo'; +export * from './tuning'; +export * from './tuplet'; +export * from './typeguard'; +export * from './util'; +export * from './vex'; +export * from './vibrato'; +export * from './vibratobracket'; +export * from './voice'; +export * from './web'; diff --git a/build/types/src/keymanager.d.ts b/build/types/src/keymanager.d.ts new file mode 100644 index 0000000000..dfa97e269f --- /dev/null +++ b/build/types/src/keymanager.d.ts @@ -0,0 +1,25 @@ +import { KeyParts, Music } from './music'; +export declare class KeyManager { + protected music: Music; + protected keyParts: KeyParts; + protected keyString: string; + protected key: string; + protected scale: number[]; + protected scaleMap: Record; + protected scaleMapByValue: Record; + protected originalScaleMapByValue: Record; + constructor(key: string); + setKey(key: string): this; + getKey(): string; + reset(): this; + getAccidental(key: string): { + note: string; + accidental?: string; + change?: boolean; + }; + selectNote(note: string): { + note: string; + accidental?: string; + change: boolean; + }; +} diff --git a/build/types/src/keysignature.d.ts b/build/types/src/keysignature.d.ts new file mode 100644 index 0000000000..fe68d97320 --- /dev/null +++ b/build/types/src/keysignature.d.ts @@ -0,0 +1,54 @@ +import { Glyph } from './glyph'; +import { Stave } from './stave'; +import { StaveModifier } from './stavemodifier'; +export declare class KeySignature extends StaveModifier { + static get CATEGORY(): string; + protected glyphFontScale: number; + protected glyphs: Glyph[]; + protected xPositions: number[]; + protected paddingForced: boolean; + protected formatted?: boolean; + protected cancelKeySpec?: string; + protected accList: { + type: string; + line: number; + }[]; + protected keySpec?: string; + protected alterKeySpec?: string[]; + static accidentalSpacing: Record; + constructor(keySpec: string, cancelKeySpec?: string, alterKeySpec?: string[]); + convertToGlyph(acc: { + type: string; + line: number; + }, nextAcc: { + type: string; + line: number; + }): void; + cancelKey(spec: string): this; + convertToCancelAccList(spec: string): { + type: string; + accList: { + type: string; + line: number; + }[]; + } | undefined; + addToStave(stave: Stave): this; + convertAccLines(clef: string, type?: string, accList?: { + type: string; + line: number; + }[]): void; + getPadding(index: number): number; + getWidth(): number; + setKeySig(keySpec: string, cancelKeySpec?: string, alterKeySpec?: string[]): this; + alterKey(alterKeySpec: string[]): this; + convertToAlterAccList(alterKeySpec: string[]): void; + format(): void; + /** + * Return the Glyph objects making up this KeySignature. + */ + getGlyphs(): Glyph[]; + draw(): void; +} diff --git a/build/types/src/keysignote.d.ts b/build/types/src/keysignote.d.ts new file mode 100644 index 0000000000..56032e4c37 --- /dev/null +++ b/build/types/src/keysignote.d.ts @@ -0,0 +1,11 @@ +import { KeySignature } from './keysignature'; +import { ModifierContext } from './modifiercontext'; +import { Note } from './note'; +export declare class KeySigNote extends Note { + static get CATEGORY(): string; + protected keySignature: KeySignature; + constructor(keySpec: string, cancelKeySpec?: string, alterKeySpec?: string[]); + addToModifierContext(mc: ModifierContext): this; + preFormat(): this; + draw(): void; +} diff --git a/build/types/src/modifier.d.ts b/build/types/src/modifier.d.ts new file mode 100644 index 0000000000..73758e277a --- /dev/null +++ b/build/types/src/modifier.d.ts @@ -0,0 +1,97 @@ +import { Element } from './element'; +import { ModifierContext } from './modifiercontext'; +import { Note } from './note'; +export declare enum ModifierPosition { + CENTER = 0, + LEFT = 1, + RIGHT = 2, + ABOVE = 3, + BELOW = 4 +} +/** + * `Modifier` is an abstract interface for notational elements that modify + * a `Note`. Examples of modifiers are `Accidental`, `Annotation`, `Stroke`, etc. + * + * For a `Modifier` instance to be positioned correctly, it must be part of + * a `ModifierContext`. All modifiers in the same context are rendered relative to + * one another. + * + * Typically, all modifiers to a note are part of the same `ModifierContext` instance. Also, + * in multi-voice staves, all modifiers to notes on the same `tick` are part of the same + * `ModifierContext`. This ensures that multiple voices don't trample all over each other. + */ +export declare class Modifier extends Element { + /** + * Modifiers category string. Every modifier has a different category. + * The `ModifierContext` uses this to determine the type and order of the modifiers. + */ + static get CATEGORY(): string; + /** Modifiers can be positioned almost anywhere, relative to a note. */ + static get Position(): typeof ModifierPosition; + static get PositionString(): Record; + protected note?: Note; + protected index?: number; + protected width: number; + protected text_line: number; + protected position: ModifierPosition; + protected y_shift: number; + protected x_shift: number; + private spacingFromNextModifier; + private modifierContext?; + constructor(); + /** Called when position changes. */ + protected reset(): void; + /** Get modifier widths. */ + getWidth(): number; + /** Set modifier widths. */ + setWidth(width: number): this; + /** Get attached note (`StaveNote`, `TabNote`, etc.) */ + getNote(): Note; + /** + * Used in draw() to check and get the attached note (`StaveNote`, `TabNote`, etc.). + * Also verifies that the index is valid. + */ + checkAttachedNote(): Note; + /** + * Set attached note. + * @param note (`StaveNote`, `TabNote`, etc.) + */ + setNote(note: Note): this; + /** Get note index, which is a specific note in a chord. */ + getIndex(): number | undefined; + /** Check and get note index, which is a specific note in a chord. */ + checkIndex(): number; + /** Set note index, which is a specific note in a chord. */ + setIndex(index: number): this; + /** Get `ModifierContext`. */ + getModifierContext(): ModifierContext | undefined; + /** Check and get `ModifierContext`. */ + checkModifierContext(): ModifierContext; + /** Every modifier must be part of a `ModifierContext`. */ + setModifierContext(c: ModifierContext): this; + /** Get position. */ + getPosition(): number; + /** + * Set position. + * @param position CENTER | LEFT | RIGHT | ABOVE | BELOW + */ + setPosition(position: string | number): this; + /** Set the `text_line` for the modifier. */ + setTextLine(line: number): this; + /** Shift modifier down `y` pixels. Negative values shift up. */ + setYShift(y: number): this; + /** Set spacing from next modifier. */ + setSpacingFromNextModifier(x: number): void; + /** Get spacing from next modifier. */ + getSpacingFromNextModifier(): number; + /** + * Shift modifier `x` pixels in the direction of the modifier. Negative values + * shift reverse. + */ + setXShift(x: number): this; + /** Get shift modifier `x` */ + getXShift(): number; + /** Render the modifier onto the canvas. */ + draw(): void; + alignSubNotesWithNote(subNotes: Note[], note: Note): void; +} diff --git a/build/types/src/modifiercontext.d.ts b/build/types/src/modifiercontext.d.ts new file mode 100644 index 0000000000..a84ce5d838 --- /dev/null +++ b/build/types/src/modifiercontext.d.ts @@ -0,0 +1,45 @@ +import { Modifier } from './modifier'; +import { StaveNote } from './stavenote'; +import { TabNote } from './tabnote'; +import { Tickable } from './tickable'; +export interface ModifierContextState { + right_shift: number; + left_shift: number; + text_line: number; + top_text_line: number; +} +export interface ModifierContextMetrics { + width: number; + spacing: number; +} +export declare type ModifierContextMember = Tickable | Modifier | StaveNote | TabNote; +export declare class ModifierContext { + static DEBUG: boolean; + protected state: ModifierContextState; + protected members: Record; + protected preFormatted: boolean; + protected postFormatted: boolean; + protected formatted: boolean; + protected width: number; + protected spacing: number; + addModifier(member: ModifierContextMember): this; + /** + * this.members maps CATEGORY strings to arrays of Tickable | Modifier | StaveNote | TabNote. + * Here we add a new member to this.members, and create a new array if needed. + * @param member + * @returns this + */ + addMember(member: ModifierContextMember): this; + /** + * @deprecated + */ + getModifiers(category: string): ModifierContextMember[]; + getMembers(category: string): ModifierContextMember[]; + getWidth(): number; + getLeftShift(): number; + getRightShift(): number; + getState(): ModifierContextState; + getMetrics(): ModifierContextMetrics; + preFormat(): void; + postFormat(): void; +} diff --git a/build/types/src/multimeasurerest.d.ts b/build/types/src/multimeasurerest.d.ts new file mode 100644 index 0000000000..f63dee846d --- /dev/null +++ b/build/types/src/multimeasurerest.d.ts @@ -0,0 +1,61 @@ +import { Element } from './element'; +import { RenderContext } from './rendercontext'; +import { Stave } from './stave'; +export interface MultimeasureRestRenderOptions { + /** Extracted by Factory.MultiMeasureRest() and passed to the MultiMeasureRest constructor. */ + number_of_measures: number; + /** Use rest symbols. Defaults to `false`, which renders a thick horizontal line with serifs at both ends. */ + use_symbols?: boolean; + /** Horizontal spacing between rest symbol glyphs (if `use_symbols` is `true`).*/ + symbol_spacing?: number; + /** Show the number of measures at the top. Defaults to `true`. */ + show_number?: boolean; + /** Vertical position of the "number of measures" text (measured in stave lines). Defaults to -0.5, which is above the stave. 6.5 is below the stave. */ + number_line?: number; + /** Font size of the "number of measures" text. */ + number_glyph_point?: number; + /** Left padding from `stave.getX()`. */ + padding_left?: number; + /** Right padding from `stave.getX() + stave.getWidth()` */ + padding_right?: number; + /** Vertical position of the rest line or symbols, expressed as stave lines. Default: 2. The top stave line is 1, and the bottom stave line is 5. */ + line?: number; + /** Defaults to the number of vertical pixels between stave lines. Used for serif height or 2-bar / 4-bar symbol height. */ + spacing_between_lines_px?: number; + /** Size of the semibreve (1-bar) rest symbol. Other symbols are scaled accordingly. */ + semibreve_rest_glyph_scale?: number; + /** Thickness of the rest line. Used when `use_symbols` is false. Defaults to half the space between stave lines. */ + line_thickness?: number; + /** Thickness of the rest line's serif. Used when `use_symbols` is false. */ + serif_thickness?: number; +} +export declare class MultiMeasureRest extends Element { + static get CATEGORY(): string; + render_options: Required; + protected xs: { + left: number; + right: number; + }; + protected number_of_measures: number; + protected stave?: Stave; + private hasPaddingLeft; + private hasPaddingRight; + private hasLineThickness; + private hasSymbolSpacing; + /** + * + * @param number_of_measures Number of measures. + * @param options The options object. + */ + constructor(number_of_measures: number, options: MultimeasureRestRenderOptions); + getXs(): { + left: number; + right: number; + }; + setStave(stave: Stave): this; + getStave(): Stave | undefined; + checkStave(): Stave; + drawLine(stave: Stave, ctx: RenderContext, left: number, right: number, spacingBetweenLines: number): void; + drawSymbols(stave: Stave, ctx: RenderContext, left: number, right: number, spacingBetweenLines: number): void; + draw(): void; +} diff --git a/build/types/src/music.d.ts b/build/types/src/music.d.ts new file mode 100644 index 0000000000..aa3e40e206 --- /dev/null +++ b/build/types/src/music.d.ts @@ -0,0 +1,91 @@ +export interface NoteAccidental { + note: number; + accidental: AccidentalValue; +} +export interface NoteParts { + root: string; + accidental: string; +} +export interface KeyParts { + root: string; + accidental: string; + type: string; +} +export declare type KeyValue = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11; +export declare type RootValue = 0 | 1 | 2 | 3 | 4 | 5 | 6; +export declare type AccidentalValue = -2 | -1 | 0 | 1 | 2; +export interface Key { + root_index: RootValue; + int_val: KeyValue; +} +/** Music implements some standard music theory routines. */ +export declare class Music { + /** Number of an canonical notes (12). */ + static get NUM_TONES(): number; + /** Names of root notes ('c', 'd',...) */ + static get roots(): string[]; + /** Values of the root notes.*/ + static get root_values(): KeyValue[]; + /** Indices of the root notes.*/ + static get root_indices(): Record; + /** Names of canonical notes ('c', 'c#', 'd',...). */ + static get canonical_notes(): string[]; + /** Names of diatonic intervals ('unison', 'm2', 'M2',...). */ + static get diatonic_intervals(): string[]; + /** NoteAccidental associated to diatonic intervals. */ + static get diatonic_accidentals(): Record; + /** Semitones shift associated to intervals .*/ + static get intervals(): Record; + /** Semitones shifts associated with scales. */ + static get scales(): Record; + /** Scales associated with m (minor) and M (major). */ + static get scaleTypes(): Record; + /** Accidentals abbreviations. */ + static get accidentals(): string[]; + /** Note values. */ + static get noteValues(): Record; + protected isValidNoteValue(note: number): boolean; + protected isValidIntervalValue(interval: number): boolean; + /** Return root and accidental associated to a note. */ + getNoteParts(noteString: string): NoteParts; + /** Return root, accidental and type associated to a key. */ + getKeyParts(keyString: string): KeyParts; + /** Note value associated to a note name. */ + getNoteValue(noteString: string): number; + /** Interval value associated to an interval name. */ + getIntervalValue(intervalString: string): number; + /** Canonical note name associated to a value. */ + getCanonicalNoteName(noteValue: number): string; + /** Interval name associated to a value. */ + getCanonicalIntervalName(intervalValue: number): string; + /** + * Given a note, interval, and interval direction, produce the relative note. + */ + getRelativeNoteValue(noteValue: number, intervalValue: number, direction?: number): number; + /** + * Given a root and note value, produce the relative note name. + */ + getRelativeNoteName(root: string, noteValue: number): string; + /** + * Return scale tones, given intervals. Each successive interval is + * relative to the previous one, e.g., Major Scale: + * + * TTSTTTS = [2,2,1,2,2,2,1] + * + * When used with key = 0, returns C scale (which is isomorphic to + * interval list). + */ + getScaleTones(key: number, intervals: number[]): number[]; + /** + * Return the interval of a note, given a diatonic scale. + * e.g., given the scale C, and the note E, returns M3. + */ + getIntervalBetween(note1: number, note2: number, direction?: number): number; + /** + * Create a scale map that represents the pitch state for a + * `keySignature`. For example, passing a `G` to `keySignature` would + * return a scale map with every note naturalized except for `F` which + * has an `F#` state. + */ + createScaleMap(keySignature: string): Record; +} diff --git a/build/types/src/note.d.ts b/build/types/src/note.d.ts new file mode 100644 index 0000000000..244d1a9c52 --- /dev/null +++ b/build/types/src/note.d.ts @@ -0,0 +1,232 @@ +import { Beam } from './beam'; +import { Fraction } from './fraction'; +import { GlyphProps } from './glyph'; +import { Modifier } from './modifier'; +import { RenderContext } from './rendercontext'; +import { Stave } from './stave'; +import { Stroke } from './strokes'; +import { Tickable } from './tickable'; +import { TickContext } from './tickcontext'; +import { Voice } from './voice'; +export interface KeyProps { + stem_down_x_offset: number; + stem_up_x_offset: number; + key: string; + octave: number; + line: number; + int_value: number; + accidental: string; + code: string; + stroke: number; + shift_right: number; + displaced: boolean; +} +export interface NoteMetrics { + /** The total width of the note (including modifiers). */ + width: number; + glyphWidth?: number; + /** The width of the note head only. */ + notePx: number; + /** Start `X` for left modifiers. */ + modLeftPx: number; + /** Start `X` for right modifiers. */ + modRightPx: number; + /** Extra space on left of note. */ + leftDisplacedHeadPx: number; + glyphPx: number; + /** Extra space on right of note. */ + rightDisplacedHeadPx: number; +} +export interface NoteDuration { + duration: string; + dots: number; + type: string; +} +export interface ParsedNote { + duration: string; + type: string; + customTypes: string[]; + dots: number; + ticks: number; +} +export interface NoteStruct { + /** Array of pitches, e.g: `['c/4', 'e/4', 'g/4']` */ + keys?: string[]; + /** The time length (e.g., `q` for quarter, `h` for half, `8` for eighth etc.). */ + duration: string; + line?: number; + /** The number of dots, which affects the duration. */ + dots?: number; + /** The note type (e.g., `r` for rest, `s` for slash notes, etc.). */ + type?: string; + align_center?: boolean; + duration_override?: Fraction; +} +/** + * Note implements an abstract interface for notes and chords that + * are rendered on a stave. Notes have some common properties: All of them + * have a value (e.g., pitch, fret, etc.) and a duration (quarter, half, etc.) + * + * Some notes have stems, heads, dots, etc. Most notational elements that + * surround a note are called *modifiers*, and every note has an associated + * array of them. All notes also have a rendering context and belong to a stave. + */ +export declare abstract class Note extends Tickable { + static get CATEGORY(): string; + /** Debug helper. Displays various note metrics for the given note. */ + static plotMetrics(ctx: RenderContext, note: Tickable, yPos: number): void; + protected static parseDuration(durationString?: string): NoteDuration | undefined; + protected static parseNoteStruct(noteStruct: NoteStruct): ParsedNote | undefined; + glyph?: any; + keys: string[]; + keyProps: KeyProps[]; + protected stave?: Stave; + render_options: { + draw_stem_through_stave?: boolean; + draw?: boolean; + draw_dots?: boolean; + draw_stem?: boolean; + y_shift: number; + extend_left?: number; + extend_right?: number; + glyph_font_scale: number; + annotation_spacing: number; + glyph_font_size?: number; + scale: number; + font: string; + stroke_px: number; + }; + protected duration: string; + protected leftDisplacedHeadPx: number; + protected rightDisplacedHeadPx: number; + protected noteType: string; + protected customGlyphs: GlyphProps[]; + protected ys: number[]; + protected customTypes: string[]; + protected playNote?: Note; + protected beam?: Beam; + /** + * Every note is a tickable, i.e., it can be mutated by the `Formatter` class for + * positioning and layout. + * + * @param noteStruct To create a new note you need to provide a `noteStruct`. + */ + constructor(noteStruct: NoteStruct); + /** + * Get the play note, which is arbitrary data that can be used by an + * audio player. + */ + getPlayNote(): Note | undefined; + /** + * Set the play note, which is arbitrary data that can be used by an + * audio player. + */ + setPlayNote(note: Note): this; + /** + * @returns true if this note is a type of rest. + * + * Rests don't have pitches, but take up space in the score. + * Subclasses should override this default implementation. + */ + isRest(): boolean; + /** Add stroke. */ + addStroke(index: number, stroke: Stroke): this; + /** Get the target stave. */ + getStave(): Stave | undefined; + /** Check and get the target stave. */ + checkStave(): Stave; + /** Set the target stave. */ + setStave(stave: Stave): this; + /** Get spacing to the left of the notes. */ + getLeftDisplacedHeadPx(): number; + /** Get spacing to the right of the notes. */ + getRightDisplacedHeadPx(): number; + /** Set spacing to the left of the notes. */ + setLeftDisplacedHeadPx(x: number): this; + /** Set spacing to the right of the notes. */ + setRightDisplacedHeadPx(x: number): this; + /** True if this note has no duration (e.g., bar notes, spacers, etc.). */ + shouldIgnoreTicks(): boolean; + /** Get the stave line number for the note. */ + getLineNumber(isTopNote?: boolean): number; + /** Get the stave line number for rest. */ + getLineForRest(): number; + /** Get the glyph associated with this note. */ + getGlyph(): any; + /** Get the glyph width. */ + getGlyphWidth(): number; + /** + * Set Y positions for this note. Each Y value is associated with + * an individual pitch/key within the note/chord. + */ + setYs(ys: number[]): this; + /** + * Get Y positions for this note. Each Y value is associated with + * an individual pitch/key within the note/chord. + */ + getYs(): number[]; + /** + * Get the Y position of the space above the stave onto which text can + * be rendered. + */ + getYForTopText(text_line: number): number; + /** Return the voice that this note belongs in. */ + getVoice(): Voice; + /** Attach this note to `voice`. */ + setVoice(voice: Voice): this; + /** Get the `TickContext` for this note. */ + getTickContext(): TickContext; + /** Set the `TickContext` for this note. */ + setTickContext(tc: TickContext): this; + /** Accessor to duration. */ + getDuration(): string; + /** Accessor to isDotted. */ + isDotted(): boolean; + /** Accessor to hasStem. */ + hasStem(): boolean; + /** Accessor to note type. */ + getNoteType(): string; + /** Get the beam. */ + getBeam(): Beam | undefined; + /** Check and get the beam. */ + checkBeam(): Beam; + /** Check it has a beam. */ + hasBeam(): boolean; + /** Set the beam. */ + setBeam(beam: Beam): this; + /** + * Attach a modifier to this note. + * @param modifier the Modifier to add. + * @param index of the key to modify. + * @returns this + */ + addModifier(modifier: Modifier, index?: number): this; + /** Get all modifiers of a specific type in `this.modifiers`. */ + getModifiersByType(type: string): Modifier[]; + /** Get the coordinates for where modifiers begin. */ + getModifierStartXY(position?: number, index?: number, options?: any): { + x: number; + y: number; + }; + getRightParenthesisPx(index: number): number; + getLeftParenthesisPx(index: number): number; + getFirstDotPx(): number; + /** Get the metrics for this note. */ + getMetrics(): NoteMetrics; + /** + * Get the absolute `X` position of this note's tick context. This + * excludes x_shift, so you'll need to factor it in if you're + * looking for the post-formatted x-position. + */ + getAbsoluteX(): number; + /** Get the direction of the stem. */ + getStemDirection(): number; + /** Get the top and bottom `y` values of the stem. */ + getStemExtents(): Record; + /** Get the `x` coordinate to the right of the note. */ + getTieRightX(): number; + /** Get the `x` coordinate to the left of the note. */ + getTieLeftX(): number; + getKeys(): string[]; + getKeyProps(): KeyProps[]; +} diff --git a/build/types/src/notehead.d.ts b/build/types/src/notehead.d.ts new file mode 100644 index 0000000000..5b368e5f51 --- /dev/null +++ b/build/types/src/notehead.d.ts @@ -0,0 +1,70 @@ +import { BoundingBox } from './boundingbox'; +import { ElementStyle } from './element'; +import { GlyphProps } from './glyph'; +import { Note, NoteStruct } from './note'; +import { Stave } from './stave'; +export interface NoteHeadStruct extends NoteStruct { + line?: number; + glyph_font_scale?: number; + slashed?: boolean; + style?: ElementStyle; + stem_down_x_offset?: number; + stem_up_x_offset?: number; + custom_glyph_code?: string; + x_shift?: number; + stem_direction?: number; + displaced?: boolean; + note_type?: string; + x?: number; + y?: number; + index?: number; +} +/** + * `NoteHeads` are typically not manipulated + * directly, but used internally in `StaveNote`. + * + * See `tests/notehead_tests.ts` for usage examples. + */ +export declare class NoteHead extends Note { + /** To enable logging for this class. Set `Vex.Flow.NoteHead.DEBUG` to `true`. */ + static DEBUG: boolean; + static get CATEGORY(): string; + glyph_code: string; + protected custom_glyph: boolean; + protected stem_up_x_offset: number; + protected stem_down_x_offset: number; + protected displaced: boolean; + protected stem_direction: number; + protected x: number; + protected y: number; + protected line: number; + protected index?: number; + protected slashed: boolean; + constructor(noteStruct: NoteHeadStruct); + /** Get the width of the notehead. */ + getWidth(): number; + /** Determine if the notehead is displaced. */ + isDisplaced(): boolean; + /** Get the glyph data. */ + getGlyph(): GlyphProps; + /** Set the X coordinate. */ + setX(x: number): this; + /** Get the Y coordinate. */ + getY(): number; + /** Set the Y coordinate. */ + setY(y: number): this; + /** Get the stave line the notehead is placed on. */ + getLine(): number; + /** Set the stave line the notehead is placed on. */ + setLine(line: number): this; + /** Get the canvas `x` coordinate position of the notehead. */ + getAbsoluteX(): number; + /** Get the `BoundingBox` for the `NoteHead`. */ + getBoundingBox(): BoundingBox; + /** Set notehead to a provided `stave`. */ + setStave(stave: Stave): this; + /** Pre-render formatting. */ + preFormat(): this; + /** Draw the notehead. */ + draw(): void; +} diff --git a/build/types/src/notesubgroup.d.ts b/build/types/src/notesubgroup.d.ts new file mode 100644 index 0000000000..4bc695ed2f --- /dev/null +++ b/build/types/src/notesubgroup.d.ts @@ -0,0 +1,18 @@ +import { Formatter } from './formatter'; +import { Modifier } from './modifier'; +import { ModifierContextState } from './modifiercontext'; +import { Note } from './note'; +import { Voice } from './voice'; +export declare class NoteSubGroup extends Modifier { + static get CATEGORY(): string; + static format(groups: NoteSubGroup[], state: ModifierContextState): boolean; + protected subNotes: Note[]; + protected preFormatted: boolean; + protected formatter: Formatter; + protected voice: Voice; + constructor(subNotes: Note[]); + preFormat(): void; + setWidth(width: number): this; + getWidth(): number; + draw(): void; +} diff --git a/build/types/src/ornament.d.ts b/build/types/src/ornament.d.ts new file mode 100644 index 0000000000..ff1e6118d0 --- /dev/null +++ b/build/types/src/ornament.d.ts @@ -0,0 +1,77 @@ +import { Glyph } from './glyph'; +import { Modifier } from './modifier'; +import { ModifierContextState } from './modifiercontext'; +/** + * Ornament implements ornaments as modifiers that can be + * attached to notes. The complete list of ornaments is available in + * `tables.ts` under `Vex.Flow.ornamentCodes`. + * + * See `tests/ornament_tests.ts` for usage examples. + */ +export declare class Ornament extends Modifier { + /** To enable logging for this class. Set `Vex.Flow.Ornament.DEBUG` to `true`. */ + static DEBUG: boolean; + /** Ornaments category string. */ + static get CATEGORY(): string; + static get minPadding(): number; + protected ornament: { + code: string; + }; + protected stemUpYOffset: number; + protected ornamentAlignWithNoteHead: string[] | boolean; + protected type: string; + protected delayed: boolean; + protected reportedWidth: number; + protected adjustForStemDirection: boolean; + render_options: { + accidentalUpperPadding: number; + accidentalLowerPadding: number; + font_scale: number; + }; + protected glyph: Glyph; + protected accidentalUpper?: Glyph; + protected accidentalLower?: Glyph; + protected delayXShift?: number; + /** Arrange ornaments inside `ModifierContext` */ + static format(ornaments: Ornament[], state: ModifierContextState): boolean; + /** + * ornamentNoteTransition means the jazz ornament represents an effect from one note to another, + * these are generally on the top of the staff. + */ + static get ornamentNoteTransition(): string[]; + /** + * ornamentAttack indicates something that happens in the attach, placed before the note and + * any accidentals + */ + static get ornamentAttack(): string[]; + /** + * The ornament is aligned based on the note head, but without regard to whether the + * stem goes up or down. + */ + static get ornamentAlignWithNoteHead(): string[]; + /** + * An ornament that happens on the release of the note, generally placed after the + * note and overlapping the next beat/measure.. + */ + static get ornamentRelease(): string[]; + /** ornamentArticulation goes above/below the note based on space availablity */ + static get ornamentArticulation(): string[]; + /** + * Legacy ornaments have hard-coded metrics. If additional ornament types are + * added, get their metrics here. + */ + getMetrics(): any; + /** + * Create a new ornament of type `type`, which is an entry in + * `Vex.Flow.ornamentCodes` in `tables.ts`. + */ + constructor(type: string); + /** Set whether the ornament is to be delayed. */ + setDelayed(delayed: boolean): this; + /** Set the upper accidental for the ornament. */ + setUpperAccidental(accid: string): this; + /** Set the lower accidental for the ornament. */ + setLowerAccidental(accid: string): this; + /** Render ornament in position next to note. */ + draw(): void; +} diff --git a/build/types/src/parenthesis.d.ts b/build/types/src/parenthesis.d.ts new file mode 100644 index 0000000000..5189a3edda --- /dev/null +++ b/build/types/src/parenthesis.d.ts @@ -0,0 +1,22 @@ +import { Modifier, ModifierPosition } from './modifier'; +import { ModifierContextState } from './modifiercontext'; +import { Note } from './note'; +/** Parenthesis implements parenthesis modifiers for notes. */ +export declare class Parenthesis extends Modifier { + static get CATEGORY(): string; + protected point: number; + /** Add parentheses to the notes. */ + static buildAndAttach(notes: Note[]): void; + /** Arrange parentheses inside a ModifierContext. */ + static format(parentheses: Parenthesis[], state: ModifierContextState): boolean; + /** + * Constructor + * + * @param position Modifier.Position.LEFT (default) or Modifier.Position.RIGHT + */ + constructor(position: ModifierPosition); + /** Set the associated note. */ + setNote(note: Note): this; + /** Render the parenthesis. */ + draw(): void; +} diff --git a/build/types/src/parser.d.ts b/build/types/src/parser.d.ts new file mode 100644 index 0000000000..443779d26a --- /dev/null +++ b/build/types/src/parser.d.ts @@ -0,0 +1,45 @@ +export declare type Match = string | Match[] | null; +export declare type RuleFunction = () => Rule; +export declare type TriggerFunction = (state?: { + matches: Match[]; +}) => void; +export interface Rule { + token?: string; + noSpace?: boolean; + expect?: RuleFunction[]; + zeroOrMore?: boolean; + oneOrMore?: boolean; + maybe?: boolean; + or?: boolean; + run?: TriggerFunction; +} +export interface Result { + success: boolean; + pos?: number; + incrementPos?: number; + matchedString?: string; + matches?: Match[]; + numMatches?: number; + results?: GroupedResults; + errorPos?: number; +} +export declare type GroupedResults = (Result | Result[])[]; +export interface Grammar { + begin(): RuleFunction; +} +export declare class Parser { + static DEBUG: boolean; + protected grammar: Grammar; + protected line: string; + protected pos: number; + protected errorPos: number; + constructor(grammar: Grammar); + parse(line: string): Result; + matchFail(returnPos: number): void; + matchSuccess(): void; + matchToken(token: string, noSpace?: boolean): Result; + expectOne(rule: Rule, maybe?: boolean): Result; + expectOneOrMore(rule: Rule, maybe?: boolean): Result; + expectZeroOrMore(rule: Rule): Result; + expect(ruleFunc: RuleFunction): Result; +} diff --git a/build/types/src/pedalmarking.d.ts b/build/types/src/pedalmarking.d.ts new file mode 100644 index 0000000000..0cc5adb864 --- /dev/null +++ b/build/types/src/pedalmarking.d.ts @@ -0,0 +1,69 @@ +import { Element } from './element'; +import { FontInfo } from './font'; +import { StaveNote } from './stavenote'; +/** + * PedalMarking implements different types of pedal markings. These notation + * elements indicate to the performer when to depress and release the a pedal. + * + * In order to create "Sostenuto", and "una corda" markings, you must set + * custom text for the release/depress pedal markings. + */ +export declare class PedalMarking extends Element { + /** To enable logging for this class. Set `Vex.Flow.PedalMarking.DEBUG` to `true`. */ + static DEBUG: boolean; + static get CATEGORY(): string; + static TEXT_FONT: Required; + protected line: number; + protected type: number; + protected custom_depress_text: string; + protected custom_release_text: string; + render_options: { + color: string; + bracket_height: number; + text_margin_right: number; + bracket_line_width: number; + }; + protected notes: StaveNote[]; + /** Glyph data */ + static readonly GLYPHS: Record; + /** Pedal type as number. */ + static readonly type: { + TEXT: number; + BRACKET: number; + MIXED: number; + }; + /** Pedal type as string. */ + static readonly typeString: Record; + /** + * Create a sustain pedal marking. Returns the defaults PedalMarking. + * Which uses the traditional "Ped" and "*"" markings. + */ + static createSustain(notes: StaveNote[]): PedalMarking; + /** Create a sostenuto pedal marking */ + static createSostenuto(notes: StaveNote[]): PedalMarking; + /** Create an una corda pedal marking */ + static createUnaCorda(notes: StaveNote[]): PedalMarking; + constructor(notes: StaveNote[]); + /** Set pedal type. */ + setType(type: string | number): this; + /** + * Set custom text for the `depress`/`release` pedal markings. No text is + * set if the parameter is falsy. + */ + setCustomText(depress: string, release?: string): this; + /** Set the staff line to render the markings on. */ + setLine(line: number): this; + /** Draw the bracket based pedal markings. */ + drawBracketed(): void; + /** + * Draw the text based pedal markings. This defaults to the traditional + * "Ped" and "*"" symbols if no custom text has been provided. + */ + drawText(): void; + /** Render the pedal marking in position on the rendering context. */ + draw(): void; +} diff --git a/build/types/src/registry.d.ts b/build/types/src/registry.d.ts new file mode 100644 index 0000000000..6959b79f28 --- /dev/null +++ b/build/types/src/registry.d.ts @@ -0,0 +1,40 @@ +import { Element } from './element'; +declare class Index { + [key: string]: { + [key: string]: { + [key: string]: Element; + }; + }; + constructor(); +} +export interface RegistryUpdate { + id: string; + name: string; + value: string | undefined; + oldValue: string | undefined; +} +export declare class Registry { + private static defaultRegistry?; + static getDefaultRegistry(): Registry | undefined; + static enableDefaultRegistry(registry: Registry): void; + static disableDefaultRegistry(): void; + protected index: Index; + constructor(); + clear(): this; + setIndexValue(name: string, value: string, id: string, elem: Element): void; + updateIndex({ id, name, value, oldValue }: RegistryUpdate): void; + /** + * Register element `elem` with this registry. + * This adds the element to its index and watches it for attribute changes. + * @param elem + * @param id + * @returns this + */ + register(elem: Element, id?: string): this; + getElementById(id: string): Element | undefined; + getElementsByAttribute(attribute: string, value: string): Element[]; + getElementsByType(type: string): Element[]; + getElementsByClass(className: string): Element[]; + onUpdate(info: RegistryUpdate): this; +} +export {}; diff --git a/build/types/src/rendercontext.d.ts b/build/types/src/rendercontext.d.ts new file mode 100644 index 0000000000..e4bb0882ae --- /dev/null +++ b/build/types/src/rendercontext.d.ts @@ -0,0 +1,64 @@ +import { FontInfo } from './font'; +export interface TextMeasure { + x: number; + y: number; + width: number; + height: number; +} +export interface GroupAttributes { + pointerBBox: boolean; +} +export declare abstract class RenderContext { + static get CATEGORY(): string; + abstract clear(): void; + abstract setFillStyle(style: string): this; + abstract setBackgroundFillStyle(style: string): this; + abstract setStrokeStyle(style: string): this; + abstract setShadowColor(color: string): this; + abstract setShadowBlur(blur: number): this; + abstract setLineWidth(width: number): this; + abstract setLineCap(capType: CanvasLineCap): this; + abstract setLineDash(dashPattern: number[]): this; + abstract scale(x: number, y: number): this; + abstract rect(x: number, y: number, width: number, height: number): this; + abstract resize(width: number, height: number): this; + abstract fillRect(x: number, y: number, width: number, height: number): this; + abstract clearRect(x: number, y: number, width: number, height: number): this; + abstract beginPath(): this; + abstract moveTo(x: number, y: number): this; + abstract lineTo(x: number, y: number): this; + abstract bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): this; + abstract quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): this; + abstract arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise: boolean): this; + abstract fill(attributes?: any): this; + abstract stroke(): this; + abstract closePath(): this; + abstract fillText(text: string, x: number, y: number): this; + abstract save(): this; + abstract restore(): this; + abstract openGroup(cls?: string, id?: string, attrs?: GroupAttributes): any; + abstract closeGroup(): void; + abstract add(child: any): void; + abstract measureText(text: string): TextMeasure; + abstract set fillStyle(style: string | CanvasGradient | CanvasPattern); + abstract get fillStyle(): string | CanvasGradient | CanvasPattern; + abstract set strokeStyle(style: string | CanvasGradient | CanvasPattern); + abstract get strokeStyle(): string | CanvasGradient | CanvasPattern; + abstract setFont(f?: string | FontInfo, size?: string | number, weight?: string | number, style?: string): this; + abstract getFont(): string; + set font(f: string); + get font(): string; + /** + * This is kept for backwards compatibility with 3.0.9. + * @deprecated use `setFont(...)` instead since it now supports CSS font shorthand. + */ + setRawFont(f: string): this; +} +/** + * Draw a tiny dot marker on the specified context. A great debugging aid. + * @param ctx context + * @param x dot x coordinate + * @param y dot y coordinate + * @param color + */ +export declare function drawDot(ctx: RenderContext, x: number, y: number, color?: string): void; diff --git a/build/types/src/renderer.d.ts b/build/types/src/renderer.d.ts new file mode 100644 index 0000000000..13055c123f --- /dev/null +++ b/build/types/src/renderer.d.ts @@ -0,0 +1,35 @@ +import { RenderContext } from './rendercontext'; +export declare type ContextBuilder = typeof Renderer.getSVGContext | typeof Renderer.getCanvasContext; +export declare enum RendererBackends { + CANVAS = 1, + SVG = 2 +} +export declare enum RendererLineEndType { + NONE = 1, + UP = 2, + DOWN = 3 +} +/** + * Support Canvas & SVG rendering contexts. + */ +export declare class Renderer { + static Backends: typeof RendererBackends; + static LineEndType: typeof RendererLineEndType; + static lastContext?: RenderContext; + static buildContext(elementId: string | HTMLCanvasElement | HTMLDivElement, backend: number, width: number, height: number, background?: string): RenderContext; + static getCanvasContext(elementId: string, width: number, height: number, background?: string): RenderContext; + static getSVGContext(elementId: string, width: number, height: number, background?: string): RenderContext; + static drawDashedLine(context: RenderContext, fromX: number, fromY: number, toX: number, toY: number, dashPattern: number[]): void; + protected ctx: RenderContext; + /** + * @param canvasId can be: + * - a string element ID (of a canvas or div element) + * - a canvas element + * - a div element, which will contain the SVG output + * @param backend Renderer.Backends.CANVAS or Renderer.Backends.SVG + */ + constructor(context: RenderContext); + constructor(canvas: string | HTMLCanvasElement | HTMLDivElement, backend: number); + resize(width: number, height: number): this; + getContext(): RenderContext; +} diff --git a/build/types/src/repeatnote.d.ts b/build/types/src/repeatnote.d.ts new file mode 100644 index 0000000000..f3df63ab8c --- /dev/null +++ b/build/types/src/repeatnote.d.ts @@ -0,0 +1,6 @@ +import { GlyphNote, GlyphNoteOptions } from './glyphnote'; +import { NoteStruct } from './note'; +export declare class RepeatNote extends GlyphNote { + static get CATEGORY(): string; + constructor(type: string, noteStruct?: NoteStruct, options?: GlyphNoteOptions); +} diff --git a/build/types/src/stave.d.ts b/build/types/src/stave.d.ts new file mode 100644 index 0000000000..c4f0b477fb --- /dev/null +++ b/build/types/src/stave.d.ts @@ -0,0 +1,194 @@ +import { BoundingBox, Bounds } from './boundingbox'; +import { Element, ElementStyle } from './element'; +import { FontInfo } from './font'; +import { BarlineType } from './stavebarline'; +import { StaveModifier } from './stavemodifier'; +import { StaveTempoOptions } from './stavetempo'; +export interface StaveLineConfig { + visible?: boolean; +} +export interface StaveOptions { + bottom_text_position?: number; + line_config?: StaveLineConfig[]; + space_below_staff_ln?: number; + space_above_staff_ln?: number; + vertical_bar_width?: number; + fill_style?: string; + left_bar?: boolean; + right_bar?: boolean; + spacing_between_lines_px?: number; + top_text_position?: number; + num_lines?: number; +} +export declare class Stave extends Element { + static get CATEGORY(): string; + static TEXT_FONT: Required; + readonly options: Required; + protected start_x: number; + protected clef: string; + protected endClef?: string; + protected x: number; + protected y: number; + protected width: number; + protected height: number; + protected formatted: boolean; + protected end_x: number; + protected measure: number; + protected bounds: Bounds; + protected readonly modifiers: StaveModifier[]; + protected defaultLedgerLineStyle: ElementStyle; + static get defaultPadding(): number; + static get rightPadding(): number; + constructor(x: number, y: number, width: number, options?: StaveOptions); + /** Set default style for ledger lines. */ + setDefaultLedgerLineStyle(style: ElementStyle): void; + /** Get default style for ledger lines. */ + getDefaultLedgerLineStyle(): ElementStyle; + space(spacing: number): number; + resetLines(): void; + setNoteStartX(x: number): this; + getNoteStartX(): number; + getNoteEndX(): number; + getTieStartX(): number; + getTieEndX(): number; + getX(): number; + getNumLines(): number; + setNumLines(n: number): this; + setY(y: number): this; + getY(): number; + getTopLineTopY(): number; + getBottomLineBottomY(): number; + setX(x: number): this; + setWidth(width: number): this; + getWidth(): number; + getStyle(): ElementStyle; + /** + * Set the measure number of this Stave. + */ + setMeasure(measure: number): this; + /** + * Return the measure number of this Stave. + */ + getMeasure(): number; + /** + * Gets the pixels to shift from the beginning of the stave + * following the modifier at the provided index + * @param {Number} index The index from which to determine the shift + * @return {Number} The amount of pixels shifted + */ + getModifierXShift(index?: number): number; + /** Coda & Segno Symbol functions */ + setRepetitionType(type: number, yShift?: number): this; + setVoltaType(type: number, number_t: string, y: number): this; + setSection(section: string, y: number, xOffset?: number, fontSize?: number, drawRect?: boolean): this; + setTempo(tempo: StaveTempoOptions, y: number): this; + setText(text: string, position: number, options?: { + shift_x?: number; + shift_y?: number; + justification?: number; + }): this; + getHeight(): number; + getSpacingBetweenLines(): number; + getBoundingBox(): BoundingBox; + getBottomY(): number; + getBottomLineY(): number; + /** @returns the y for the *center* of a staff line */ + getYForLine(line: number): number; + getLineForY(y: number): number; + getYForTopText(line?: number): number; + getYForBottomText(line?: number): number; + getYForNote(line: number): number; + getYForGlyphs(): number; + addModifier(modifier: StaveModifier, position?: number): this; + addEndModifier(modifier: StaveModifier): this; + setBegBarType(type: number | BarlineType): this; + setEndBarType(type: number | BarlineType): this; + setClef(clefSpec: string, size?: string, annotation?: string, position?: number): this; + getClef(): string; + setEndClef(clefSpec: string, size?: string, annotation?: string): this; + getEndClef(): string | undefined; + setKeySignature(keySpec: string, cancelKeySpec?: string, position?: number): this; + setEndKeySignature(keySpec: string, cancelKeySpec?: string): this; + setTimeSignature(timeSpec: string, customPadding?: number, position?: number): this; + setEndTimeSignature(timeSpec: string, customPadding?: number): this; + /** + * Add a key signature to the stave. + * + * Example: + * `stave.addKeySignature('Db');` + * @param keySpec new key specification `[A-G][b|#]?` + * @param cancelKeySpec + * @param position + * @returns + */ + addKeySignature(keySpec: string, cancelKeySpec?: string, position?: number): this; + /** + * Add a clef to the stave. + * + * Example: + * + * stave.addClef('treble') + * @param clef clef (treble|bass|...) see {@link Clef.types} + * @param size + * @param annotation + * @param position + * @returns + */ + addClef(clef: string, size?: string, annotation?: string, position?: number): this; + addEndClef(clef: string, size?: string, annotation?: string): this; + /** + * Add a time signature to the stave + * + * Example: + * + * `stave.addTimeSignature('4/4');` + * @param timeSpec time signature specification `(C\||C|\d\/\d)` + * @param customPadding + * @param position + * @returns + */ + addTimeSignature(timeSpec: string, customPadding?: number, position?: number): this; + addEndTimeSignature(timeSpec: string, customPadding?: number): this; + addTrebleGlyph(): this; + /** + * @param position + * @param category + * @returns array of StaveModifiers that match the provided position and category. + */ + getModifiers(position?: number, category?: string): StaveModifier[]; + /** + * Use the modifier's `getCategory()` as a key for the `order` array. + * The retrieved value is used to sort modifiers from left to right (0 to to 3). + */ + sortByCategory(items: StaveModifier[], order: Record): void; + format(): void; + /** + * All drawing functions below need the context to be set. + */ + draw(): this; + getVerticalBarWidth(): number; + /** + * Get the current configuration for the Stave. + * @return {Array} An array of configuration objects. + */ + getConfigForLines(): StaveLineConfig[]; + /** + * Configure properties of the lines in the Stave + * @param line_number The index of the line to configure. + * @param line_config An configuration object for the specified line. + * @throws RuntimeError "StaveConfigError" When the specified line number is out of + * range of the number of lines specified in the constructor. + */ + setConfigForLine(line_number: number, line_config: StaveLineConfig): this; + /** + * Set the staff line configuration array for all of the lines at once. + * @param lines_configuration An array of line configuration objects. These objects + * are of the same format as the single one passed in to setLineConfiguration(). + * The caller can set null for any line config entry if it is desired that the default be used + * @throws RuntimeError "StaveConfigError" When the lines_configuration array does not have + * exactly the same number of elements as the num_lines configuration object set in + * the constructor. + */ + setConfigForLines(lines_configuration: StaveLineConfig[]): this; + static formatBegModifiers(staves: Stave[]): void; +} diff --git a/build/types/src/stavebarline.d.ts b/build/types/src/stavebarline.d.ts new file mode 100644 index 0000000000..67b51bb437 --- /dev/null +++ b/build/types/src/stavebarline.d.ts @@ -0,0 +1,28 @@ +import { Stave } from './stave'; +import { LayoutMetrics, StaveModifier } from './stavemodifier'; +export declare enum BarlineType { + SINGLE = 1, + DOUBLE = 2, + END = 3, + REPEAT_BEGIN = 4, + REPEAT_END = 5, + REPEAT_BOTH = 6, + NONE = 7 +} +export declare class Barline extends StaveModifier { + static get CATEGORY(): string; + protected widths: Record; + protected paddings: Record; + protected layoutMetricsMap: Record; + protected thickness: number; + protected type: BarlineType; + static get type(): typeof BarlineType; + static get typeString(): Record; + constructor(type: BarlineType | string); + getType(): number; + setType(type: string | number): this; + draw(stave: Stave): void; + drawVerticalBar(stave: Stave, x: number, double_bar?: boolean): void; + drawVerticalEndBar(stave: Stave, x: number): void; + drawRepeatBar(stave: Stave, x: number, begin: boolean): void; +} diff --git a/build/types/src/staveconnector.d.ts b/build/types/src/staveconnector.d.ts new file mode 100644 index 0000000000..b9f8027a43 --- /dev/null +++ b/build/types/src/staveconnector.d.ts @@ -0,0 +1,65 @@ +import { Element } from './element'; +import { FontInfo } from './font'; +import { Stave } from './stave'; +/** + * see {@link StaveConnector.type} & {@link StaveConnector.typeString} + */ +export declare type StaveConnectorType = 'singleRight' | 'singleLeft' | 'single' | 'double' | 'brace' | 'bracket' | 'boldDoubleLeft' | 'boldDoubleRight' | 'thinDouble' | 'none' | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; +/** StaveConnector implements the connector lines between staves of a system. */ +export declare class StaveConnector extends Element { + static get CATEGORY(): string; + static TEXT_FONT: Required; + /** + * SINGLE_LEFT and SINGLE are the same value for compatibility + * with older versions of vexflow which didn't have right sided + * stave connectors. + */ + static readonly type: Record>; + /** + * Connector type: + * * "singleRight" + * * "singleLeft" + * * "single" + * * "double" + * * "brace" + * * "bracket" + * * "boldDoubleLeft" + * * "boldDoubleRight" + * * "thinDouble" + * * "none" + */ + static readonly typeString: Record, Exclude>; + protected width: number; + protected texts: { + content: string; + options: { + shift_x: number; + shift_y: number; + }; + }[]; + protected type: typeof StaveConnector['type'][keyof typeof StaveConnector['type']]; + readonly top_stave: Stave; + readonly bottom_stave: Stave; + readonly thickness: number; + protected x_shift: number; + constructor(top_stave: Stave, bottom_stave: Stave); + /** + * Set type. + * @param type see {@link StaveConnector.type} & {@link StaveConnector.typeString} + */ + setType(type: StaveConnectorType): this; + /** + * Get type. + * @returns number {@link StaveConnector.type} + */ + getType(): number; + /** Set optional associated Text. */ + setText(text: string, options?: { + shift_x?: number; + shift_y?: number; + }): this; + setXShift(x_shift: number): this; + getXShift(): number; + /** Render connector and associated text. */ + draw(): void; +} diff --git a/build/types/src/stavehairpin.d.ts b/build/types/src/stavehairpin.d.ts new file mode 100644 index 0000000000..ef02eb2563 --- /dev/null +++ b/build/types/src/stavehairpin.d.ts @@ -0,0 +1,56 @@ +import { Element } from './element'; +import { Note } from './note'; +import { RenderContext } from './rendercontext'; +export interface StaveHairpinRenderOptions { + right_shift_ticks?: number; + left_shift_ticks?: number; + left_shift_px: number; + right_shift_px: number; + height: number; + y_shift: number; +} +export declare class StaveHairpin extends Element { + static get CATEGORY(): string; + protected hairpin: number; + protected position: number; + render_options: StaveHairpinRenderOptions; + protected notes: Record; + protected first_note?: Note; + protected last_note?: Note; + static readonly type: { + CRESC: number; + DECRESC: number; + }; + static FormatByTicksAndDraw(ctx: RenderContext, formatter: { + pixelsPerTick: number; + }, notes: Record, type: number, position: number, options: StaveHairpinRenderOptions): void; + /** + * Create a new hairpin from the specified notes. + * + * @param {!Object} notes The notes to tie up. + * Notes is a struct that has: + * + * { + * first_note: Note, + * last_note: Note, + * } + * @param {!Object} type The type of hairpin + */ + constructor(notes: Record, type: number); + setPosition(position: number): this; + setRenderOptions(options: StaveHairpinRenderOptions): this; + /** + * Set the notes to attach this hairpin to. + * + * @param {!Object} notes The start and end notes. + */ + setNotes(notes: Record): this; + renderHairpin(params: { + first_x: number; + last_x: number; + first_y: number; + last_y: number; + staff_height: number; + }): void; + draw(): void; +} diff --git a/build/types/src/staveline.d.ts b/build/types/src/staveline.d.ts new file mode 100644 index 0000000000..16f0679234 --- /dev/null +++ b/build/types/src/staveline.d.ts @@ -0,0 +1,54 @@ +import { Element } from './element'; +import { FontInfo } from './font'; +import { RenderContext } from './rendercontext'; +import { StaveNote } from './stavenote'; +import { TextJustification } from './textnote'; +export interface StaveLineNotes { + first_note: StaveNote; + first_indices: number[]; + last_note: StaveNote; + last_indices: number[]; +} +export declare class StaveLine extends Element { + static get CATEGORY(): string; + /** Default text font. */ + static TEXT_FONT: Required; + static readonly TextVerticalPosition: { + TOP: number; + BOTTOM: number; + }; + static readonly TextJustification: typeof TextJustification; + render_options: { + padding_left: number; + padding_right: number; + line_width: number; + line_dash?: number[]; + rounded_end: boolean; + color?: string; + draw_start_arrow: boolean; + draw_end_arrow: boolean; + arrowhead_length: number; + arrowhead_angle: number; + text_position_vertical: number; + text_justification: number; + }; + protected text: string; + protected notes: StaveLineNotes; + protected first_note: StaveNote; + protected first_indices: number[]; + protected last_note: StaveNote; + protected last_indices: number[]; + constructor(notes: StaveLineNotes); + setText(text: string): this; + setNotes(notes: StaveLineNotes): this; + applyLineStyle(): void; + applyFontStyle(): void; + protected drawArrowLine(ctx: RenderContext, pt1: { + x: number; + y: number; + }, pt2: { + x: number; + y: number; + }): void; + draw(): this; +} diff --git a/build/types/src/stavemodifier.d.ts b/build/types/src/stavemodifier.d.ts new file mode 100644 index 0000000000..911c624afb --- /dev/null +++ b/build/types/src/stavemodifier.d.ts @@ -0,0 +1,44 @@ +import { Element } from './element'; +import { Glyph } from './glyph'; +import { Stave } from './stave'; +export interface LayoutMetrics { + xMin: number; + xMax: number; + paddingLeft: number; + paddingRight: number; +} +export declare enum StaveModifierPosition { + CENTER = 0, + LEFT = 1, + RIGHT = 2, + ABOVE = 3, + BELOW = 4, + BEGIN = 5, + END = 6 +} +export declare class StaveModifier extends Element { + static get CATEGORY(): string; + static get Position(): typeof StaveModifierPosition; + protected width: number; + protected x: number; + protected padding: number; + protected position: StaveModifierPosition; + protected stave?: Stave; + protected layoutMetrics?: LayoutMetrics; + constructor(); + getPosition(): number; + setPosition(position: number): this; + getStave(): Stave | undefined; + checkStave(): Stave; + setStave(stave: Stave): this; + getWidth(): number; + setWidth(width: number): this; + getX(): number; + setX(x: number): this; + placeGlyphOnLine(glyph: Glyph, stave: Stave, line?: number, customShift?: number): void; + getPadding(index: number): number; + setPadding(padding: number): this; + setLayoutMetrics(layoutMetrics: LayoutMetrics): this; + getLayoutMetrics(): LayoutMetrics | undefined; + draw(...args: any[]): void; +} diff --git a/build/types/src/stavenote.d.ts b/build/types/src/stavenote.d.ts new file mode 100644 index 0000000000..1284baea8d --- /dev/null +++ b/build/types/src/stavenote.d.ts @@ -0,0 +1,154 @@ +import { Beam } from './beam'; +import { BoundingBox } from './boundingbox'; +import { ElementStyle } from './element'; +import { ModifierContextState } from './modifiercontext'; +import { Note, NoteStruct } from './note'; +import { NoteHead } from './notehead'; +import { Stave } from './stave'; +import { StemOptions } from './stem'; +import { StemmableNote } from './stemmablenote'; +export interface StaveNoteHeadBounds { + y_top: number; + y_bottom: number; + displaced_x?: number; + non_displaced_x?: number; + highest_line: number; + lowest_line: number; + highest_displaced_line?: number; + lowest_displaced_line?: number; + highest_non_displaced_line: number; + lowest_non_displaced_line: number; +} +export interface StaveNoteFormatSettings { + line: number; + maxLine: number; + minLine: number; + isrest: boolean; + stemDirection?: number; + stemMax: number; + stemMin: number; + voice_shift: number; + is_displaced: boolean; + note: StaveNote; +} +export interface StaveNoteStruct extends NoteStruct { + /** `Stem.UP` or `Stem.DOWN`. */ + stem_direction?: number; + auto_stem?: boolean; + stem_down_x_offset?: number; + stem_up_x_offset?: number; + stroke_px?: number; + glyph_font_scale?: number; + octave_shift?: number; + clef?: string; +} +export declare class StaveNote extends StemmableNote { + static DEBUG: boolean; + static get CATEGORY(): string; + /** + * @deprecated Use Stem.UP. + */ + static get STEM_UP(): number; + /** + * @deprecated Use Stem.DOWN. + */ + static get STEM_DOWN(): number; + static get LEDGER_LINE_OFFSET(): number; + static get minNoteheadPadding(): number; + /** Format notes inside a ModifierContext. */ + static format(notes: StaveNote[], state: ModifierContextState): boolean; + static postFormat(notes: Note[]): boolean; + minLine: number; + maxLine: number; + protected readonly clef: string; + protected readonly octave_shift?: number; + protected displaced: boolean; + protected dot_shiftY: number; + protected use_default_head_x: boolean; + protected ledgerLineStyle: ElementStyle; + private _noteHeads; + private sortedKeyProps; + constructor(noteStruct: StaveNoteStruct); + reset(): this; + setBeam(beam: Beam): this; + buildStem(): this; + buildNoteHeads(): void; + autoStem(): void; + calculateOptimalStemDirection(): number; + calculateKeyProps(): void; + getBoundingBox(): BoundingBox; + getLineNumber(isTopNote?: boolean): number; + /** + * @returns true if this note is a type of rest. Rests don't have pitches, but take up space in the score. + */ + isRest(): boolean; + isChord(): boolean; + hasStem(): boolean; + hasFlag(): boolean; + getStemX(): number; + getYForTopText(textLine: number): number; + getYForBottomText(textLine: number): number; + setStave(stave: Stave): this; + isDisplaced(): boolean; + setNoteDisplaced(displaced: boolean): this; + getTieRightX(): number; + getTieLeftX(): number; + getLineForRest(): number; + getModifierStartXY(position: number, index: number, options?: { + forceFlagRight?: boolean; + }): { + x: number; + y: number; + }; + setStyle(style: ElementStyle): this; + setStemStyle(style: ElementStyle): this; + getStemStyle(): ElementStyle | undefined; + setLedgerLineStyle(style: ElementStyle): void; + getLedgerLineStyle(): ElementStyle; + setFlagStyle(style: ElementStyle): void; + getFlagStyle(): ElementStyle | undefined; + setKeyStyle(index: number, style: ElementStyle): this; + setKeyLine(index: number, line: number): this; + getKeyLine(index: number): number; + getVoiceShiftWidth(): number; + calcNoteDisplacements(): void; + preFormat(): void; + /** + * @typedef {Object} noteHeadBounds + * @property {number} y_top the highest notehead bound + * @property {number} y_bottom the lowest notehead bound + * @property {number|Null} displaced_x the starting x for displaced noteheads + * @property {number|Null} non_displaced_x the starting x for non-displaced noteheads + * @property {number} highest_line the highest notehead line in traditional music line + * numbering (bottom line = 1, top line = 5) + * @property {number} lowest_line the lowest notehead line + * @property {number|false} highest_displaced_line the highest staff line number + * for a displaced notehead + * @property {number|false} lowest_displaced_line + * @property {number} highest_non_displaced_line + * @property {number} lowest_non_displaced_line + */ + /** + * Get the staff line and y value for the highest & lowest noteheads + * @returns {noteHeadBounds} + */ + getNoteHeadBounds(): StaveNoteHeadBounds; + getNoteHeadBeginX(): number; + getNoteHeadEndX(): number; + get noteHeads(): NoteHead[]; + /** @deprecated use StaveNote.noteHeads instead. */ + get note_heads(): NoteHead[]; + drawLedgerLines(): void; + drawModifiers(noteheadParam: NoteHead): void; + shouldDrawFlag(): boolean; + drawFlag(): void; + drawNoteHeads(): void; + drawStem(stemOptions?: StemOptions): void; + /** Primarily used as the scaling factor for grace notes, GraceNote will return the required scale. */ + getStaveNoteScale(): number; + /** + * Override stemmablenote stem extension to adjust for distance from middle line. + */ + getStemExtension(): number; + draw(): void; +} diff --git a/build/types/src/staverepetition.d.ts b/build/types/src/staverepetition.d.ts new file mode 100644 index 0000000000..afa3bf95c0 --- /dev/null +++ b/build/types/src/staverepetition.d.ts @@ -0,0 +1,32 @@ +import { FontInfo } from './font'; +import { Stave } from './stave'; +import { StaveModifier } from './stavemodifier'; +export declare class Repetition extends StaveModifier { + static get CATEGORY(): string; + static TEXT_FONT: Required; + static readonly type: { + NONE: number; + CODA_LEFT: number; + CODA_RIGHT: number; + SEGNO_LEFT: number; + SEGNO_RIGHT: number; + DC: number; + DC_AL_CODA: number; + DC_AL_FINE: number; + DS: number; + DS_AL_CODA: number; + DS_AL_FINE: number; + FINE: number; + TO_CODA: number; + }; + protected symbol_type: number; + protected x_shift: number; + protected y_shift: number; + constructor(type: number, x: number, y_shift: number); + setShiftX(x: number): this; + setShiftY(y: number): this; + draw(stave: Stave, x: number): this; + drawCodaFixed(stave: Stave, x: number): this; + drawSignoFixed(stave: Stave, x: number): this; + drawSymbolText(stave: Stave, x: number, text: string, draw_coda: boolean): this; +} diff --git a/build/types/src/stavesection.d.ts b/build/types/src/stavesection.d.ts new file mode 100644 index 0000000000..b918b6e764 --- /dev/null +++ b/build/types/src/stavesection.d.ts @@ -0,0 +1,16 @@ +import { FontInfo } from './font'; +import { Stave } from './stave'; +import { StaveModifier } from './stavemodifier'; +export declare class StaveSection extends StaveModifier { + static get CATEGORY(): string; + static TEXT_FONT: Required; + protected section: string; + protected shift_x: number; + protected shift_y: number; + protected drawRect: boolean; + constructor(section: string, x: number, shift_y: number, drawRect?: boolean); + setStaveSection(section: string): this; + setShiftX(x: number): this; + setShiftY(y: number): this; + draw(stave: Stave, shift_x: number): this; +} diff --git a/build/types/src/stavetempo.d.ts b/build/types/src/stavetempo.d.ts new file mode 100644 index 0000000000..6fe3003fd7 --- /dev/null +++ b/build/types/src/stavetempo.d.ts @@ -0,0 +1,25 @@ +import { FontInfo } from './font'; +import { Stave } from './stave'; +import { StaveModifier } from './stavemodifier'; +export interface StaveTempoOptions { + bpm?: number; + duration?: string; + dots?: number; + name?: string; +} +export declare class StaveTempo extends StaveModifier { + static get CATEGORY(): string; + static TEXT_FONT: Required; + protected tempo: StaveTempoOptions; + protected shift_x: number; + protected shift_y: number; + /** Font size for note. */ + render_options: { + glyph_font_scale: number; + }; + constructor(tempo: StaveTempoOptions, x: number, shift_y: number); + setTempo(tempo: StaveTempoOptions): this; + setShiftX(x: number): this; + setShiftY(y: number): this; + draw(stave: Stave, shift_x: number): this; +} diff --git a/build/types/src/stavetext.d.ts b/build/types/src/stavetext.d.ts new file mode 100644 index 0000000000..23a01dd860 --- /dev/null +++ b/build/types/src/stavetext.d.ts @@ -0,0 +1,25 @@ +import { FontInfo } from './font'; +import { Stave } from './stave'; +import { StaveModifier } from './stavemodifier'; +export declare class StaveText extends StaveModifier { + static get CATEGORY(): string; + static TEXT_FONT: Required; + protected options: { + shift_x: number; + shift_y: number; + justification: number; + }; + protected text: string; + protected shift_x?: number; + protected shift_y?: number; + constructor(text: string, position: number, options?: { + shift_x?: number; + shift_y?: number; + justification?: number; + }); + setStaveText(text: string): this; + setShiftX(x: number): this; + setShiftY(y: number): this; + setText(text: string): this; + draw(stave: Stave): this; +} diff --git a/build/types/src/stavetie.d.ts b/build/types/src/stavetie.d.ts new file mode 100644 index 0000000000..22a3a4541e --- /dev/null +++ b/build/types/src/stavetie.d.ts @@ -0,0 +1,63 @@ +import { Element } from './element'; +import { FontInfo } from './font'; +import { Note } from './note'; +export interface TieNotes { + first_note?: Note | null; + last_note?: Note | null; + first_indices?: number[]; + last_indices?: number[]; +} +export declare class StaveTie extends Element { + static get CATEGORY(): string; + /** Default text font. */ + static TEXT_FONT: Required; + render_options: { + cp2: number; + last_x_shift: number; + tie_spacing: number; + cp1: number; + first_x_shift: number; + text_shift_x: number; + y_shift: number; + }; + protected text?: string; + protected notes: TieNotes; + protected direction?: number; + /** + * @param notes is a struct that has: + * + * { + * first_note: Note, + * last_note: Note, + * first_indices: [n1, n2, n3], + * last_indices: [n1, n2, n3] + * } + * + * @param text + */ + constructor(notes: TieNotes, text?: string); + setDirection(direction: number): this; + /** + * Set the notes to attach this tie to. + * + * @param {!Object} notes The notes to tie up. + */ + setNotes(notes: TieNotes): this; + /** + * @return {boolean} Returns true if this is a partial bar. + */ + isPartial(): boolean; + renderTie(params: { + direction: number; + first_x_px: number; + last_x_px: number; + last_ys: number[]; + first_ys: number[]; + }): void; + renderText(first_x_px: number, last_x_px: number): void; + /** + * Returns the TieNotes structure of the first and last note this tie connects. + */ + getNotes(): TieNotes; + draw(): boolean; +} diff --git a/build/types/src/stavevolta.d.ts b/build/types/src/stavevolta.d.ts new file mode 100644 index 0000000000..d23dddce6c --- /dev/null +++ b/build/types/src/stavevolta.d.ts @@ -0,0 +1,21 @@ +import { FontInfo } from './font'; +import { Stave } from './stave'; +import { StaveModifier } from './stavemodifier'; +export declare enum VoltaType { + NONE = 1, + BEGIN = 2, + MID = 3, + END = 4, + BEGIN_END = 5 +} +export declare class Volta extends StaveModifier { + static get CATEGORY(): string; + static get type(): typeof VoltaType; + static TEXT_FONT: Required; + protected volta: number; + protected number: string; + protected y_shift: number; + constructor(type: number, number: string, x: number, y_shift: number); + setShiftY(y: number): this; + draw(stave: Stave, x: number): this; +} diff --git a/build/types/src/stem.d.ts b/build/types/src/stem.d.ts new file mode 100644 index 0000000000..727332e7bc --- /dev/null +++ b/build/types/src/stem.d.ts @@ -0,0 +1,58 @@ +import { BoundingBox } from './boundingbox'; +import { Element } from './element'; +export interface StemOptions { + stem_down_y_base_offset?: number; + stem_up_y_base_offset?: number; + stem_down_y_offset?: number; + stem_up_y_offset?: number; + stemletHeight?: number; + isStemlet?: boolean; + hide?: boolean; + stem_direction?: number; + stem_extension?: number; + y_bottom?: number; + y_top?: number; + x_end?: number; + x_begin?: number; +} +export declare class Stem extends Element { + /** To enable logging for this class. Set `Vex.Flow.Stem.DEBUG` to `true`. */ + static DEBUG: boolean; + static get CATEGORY(): string; + static get UP(): number; + static get DOWN(): number; + static get WIDTH(): number; + static get HEIGHT(): number; + protected hide: boolean; + protected isStemlet: boolean; + protected stemletHeight: number; + protected x_begin: number; + protected x_end: number; + protected y_top: number; + protected stem_up_y_offset: number; + protected y_bottom: number; + protected stem_down_y_offset: number; + protected stem_up_y_base_offset: number; + protected stem_down_y_base_offset: number; + protected stem_direction: number; + protected stem_extension: number; + protected renderHeightAdjustment: number; + constructor(options?: StemOptions); + setOptions(options?: StemOptions): void; + setNoteHeadXBounds(x_begin: number, x_end: number): this; + setDirection(direction: number): void; + setExtension(ext: number): void; + getExtension(): number; + setYBounds(y_top: number, y_bottom: number): void; + getHeight(): number; + getBoundingBox(): BoundingBox; + getExtents(): { + topY: number; + baseY: number; + }; + setVisibility(isVisible: boolean): this; + setStemlet(isStemlet: boolean, stemletHeight: number): this; + adjustHeightForFlag(): void; + adjustHeightForBeam(): void; + draw(): void; +} diff --git a/build/types/src/stemmablenote.d.ts b/build/types/src/stemmablenote.d.ts new file mode 100644 index 0000000000..1148fc9c51 --- /dev/null +++ b/build/types/src/stemmablenote.d.ts @@ -0,0 +1,39 @@ +import { Glyph, GlyphProps } from './glyph'; +import { Note, NoteStruct } from './note'; +import { Stem, StemOptions } from './stem'; +export declare abstract class StemmableNote extends Note { + static get CATEGORY(): string; + stem_direction?: number; + stem?: Stem; + protected flag?: Glyph; + protected stem_extension_override?: number; + constructor(noteStruct: NoteStruct); + getStem(): Stem | undefined; + checkStem(): Stem; + setStem(stem: Stem): this; + buildStem(): this; + buildFlag(category?: string): void; + getBaseCustomNoteHeadGlyph(): GlyphProps; + getStemLength(): number; + getBeamCount(): number; + getStemMinimumLength(): number; + getStemDirection(): number; + setStemDirection(direction?: number): this; + getStemX(): number; + getCenterGlyphX(): number; + getStemExtension(): number; + setStemLength(height: number): this; + getStemExtents(): { + topY: number; + baseY: number; + }; + /** Gets the `y` value for the top modifiers at a specific `textLine`. */ + getYForTopText(textLine: number): number; + /** Gets the `y` value for the bottom modifiers at a specific `textLine`. */ + getYForBottomText(textLine: number): number; + hasFlag(): boolean; + /** Post formats the note. */ + postFormat(): this; + /** Renders the stem onto the canvas. */ + drawStem(stemOptions: StemOptions): void; +} diff --git a/build/types/src/stringnumber.d.ts b/build/types/src/stringnumber.d.ts new file mode 100644 index 0000000000..31fa242e48 --- /dev/null +++ b/build/types/src/stringnumber.d.ts @@ -0,0 +1,29 @@ +import { FontInfo } from './font'; +import { Modifier } from './modifier'; +import { ModifierContextState } from './modifiercontext'; +import { Note } from './note'; +export declare class StringNumber extends Modifier { + static get CATEGORY(): string; + static TEXT_FONT: Required; + static get metrics(): any; + static format(nums: StringNumber[], state: ModifierContextState): boolean; + protected radius: number; + protected drawCircle: boolean; + protected last_note?: Note; + protected string_number: string; + protected x_offset: number; + protected y_offset: number; + protected text_line: number; + protected stem_offset: number; + protected dashed: boolean; + protected leg: number; + constructor(number: string); + setLineEndType(leg: number): this; + setStringNumber(number: string): this; + setOffsetX(x: number): this; + setOffsetY(y: number): this; + setLastNote(note: Note): this; + setDashed(dashed: boolean): this; + setDrawCircle(drawCircle: boolean): this; + draw(): void; +} diff --git a/build/types/src/strokes.d.ts b/build/types/src/strokes.d.ts new file mode 100644 index 0000000000..8e6329489c --- /dev/null +++ b/build/types/src/strokes.d.ts @@ -0,0 +1,33 @@ +import { FontInfo } from './font'; +import { Modifier } from './modifier'; +import { ModifierContextState } from './modifiercontext'; +import { Note } from './note'; +export declare class Stroke extends Modifier { + static get CATEGORY(): string; + static readonly Type: { + BRUSH_DOWN: number; + BRUSH_UP: number; + ROLL_DOWN: number; + ROLL_UP: number; + RASQUEDO_DOWN: number; + RASQUEDO_UP: number; + ARPEGGIO_DIRECTIONLESS: number; + }; + static TEXT_FONT: Required; + static format(strokes: Stroke[], state: ModifierContextState): boolean; + protected options: { + all_voices: boolean; + }; + protected all_voices: boolean; + protected type: number; + protected note_end?: Note; + render_options: { + font_scale: number; + }; + constructor(type: number, options?: { + all_voices: boolean; + }); + getPosition(): number; + addEndNote(note: Note): this; + draw(): void; +} diff --git a/build/types/src/svgcontext.d.ts b/build/types/src/svgcontext.d.ts new file mode 100644 index 0000000000..9c4d62cec5 --- /dev/null +++ b/build/types/src/svgcontext.d.ts @@ -0,0 +1,131 @@ +import { FontInfo } from './font'; +import { GroupAttributes, RenderContext, TextMeasure } from './rendercontext'; +export declare type Attributes = Record; +export interface State { + state: Attributes; + attributes: Attributes; + shadow_attributes: Attributes; + lineWidth: number; +} +declare class MeasureTextCache { + protected txt?: SVGTextElement; + protected cache: Record>; + lookup(text: string, svg: SVGSVGElement, attributes: Attributes): TextMeasure; + measureImpl(text: string, svg: SVGSVGElement, attributes: Attributes): TextMeasure; +} +/** + * SVG rendering context with an API similar to CanvasRenderingContext2D. + */ +export declare class SVGContext extends RenderContext { + protected static measureTextCache: MeasureTextCache; + element: HTMLElement; + svg: SVGSVGElement; + width: number; + height: number; + path: string; + pen: { + x: number; + y: number; + }; + lineWidth: number; + attributes: Attributes; + shadow_attributes: Attributes; + state: Attributes; + state_stack: State[]; + parent: SVGGElement; + groups: SVGGElement[]; + backgroundFillStyle: string; + /** Formatted as CSS font shorthand (e.g., 'italic bold 12pt Arial') */ + protected fontCSSString: string; + constructor(element: HTMLElement); + /** + * Use one of the overload signatures to create an SVG element of a specific type. + * The last overload accepts an arbitrary string, and is identical to the + * implementation signature. + * Feel free to add new overloads for other SVG element types as required. + */ + create(svgElementType: 'g'): SVGGElement; + create(svgElementType: 'path'): SVGPathElement; + create(svgElementType: 'rect'): SVGRectElement; + create(svgElementType: 'svg'): SVGSVGElement; + create(svgElementType: 'text'): SVGTextElement; + create(svgElementType: string): SVGElement; + openGroup(cls?: string, id?: string, attrs?: GroupAttributes): SVGGElement; + closeGroup(): void; + add(elem: SVGElement): void; + setFillStyle(style: string): this; + /** + * Used to set the fill color for `clearRect()`. This allows us to simulate + * cutting a "hole" into the SVG drawing. + */ + setBackgroundFillStyle(style: string): this; + setStrokeStyle(style: string): this; + setShadowColor(color: string): this; + /** + * @param blur A non-negative float specifying the level of shadow blur, where 0 + * represents no blur and larger numbers represent increasingly more blur. + * @returns this + */ + setShadowBlur(blur: number): this; + /** + * @param width + * @returns this + */ + setLineWidth(width: number): this; + /** + * @param lineDash an array of integers in the form of [dash, space, dash, space, etc...] + * @returns this + * + * See: [SVG `stroke-dasharray` attribute](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray) + */ + setLineDash(lineDash: number[]): this; + /** + * @param capType + * @returns this + */ + setLineCap(capType: CanvasLineCap): this; + resize(width: number, height: number): this; + scale(x: number, y: number): this; + /** + * 1 arg: string in the "x y w h" format + * 4 args: x:number, y:number, w:number, h:number + */ + setViewBox(viewBox_or_minX: string | number, minY?: number, width?: number, height?: number): void; + applyAttributes(element: SVGElement, attributes: Attributes): SVGElement; + clear(): void; + rect(x: number, y: number, width: number, height: number, attributes?: Attributes): this; + fillRect(x: number, y: number, width: number, height: number): this; + clearRect(x: number, y: number, width: number, height: number): this; + beginPath(): this; + moveTo(x: number, y: number): this; + lineTo(x: number, y: number): this; + bezierCurveTo(x1: number, y1: number, x2: number, y2: number, x: number, y: number): this; + quadraticCurveTo(x1: number, y1: number, x: number, y: number): this; + arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise: boolean): this; + closePath(): this; + private getShadowStyle; + fill(attributes?: Attributes): this; + stroke(): this; + measureText(text: string): TextMeasure; + fillText(text: string, x: number, y: number): this; + save(): this; + restore(): this; + set fillStyle(style: string | CanvasGradient | CanvasPattern); + get fillStyle(): string | CanvasGradient | CanvasPattern; + set strokeStyle(style: string | CanvasGradient | CanvasPattern); + get strokeStyle(): string | CanvasGradient | CanvasPattern; + /** + * @param f is 1) a `FontInfo` object or + * 2) a string formatted as CSS font shorthand (e.g., 'bold 10pt Arial') or + * 3) a string representing the font family (one of `size`, `weight`, or `style` must also be provided). + * @param size a string specifying the font size and unit (e.g., '16pt'), or a number (the unit is assumed to be 'pt'). + * @param weight is a string (e.g., 'bold', 'normal') or a number (100, 200, ... 900). It is inserted + * into the font-weight attribute (e.g., font-weight="bold") + * @param style is a string (e.g., 'italic', 'normal') that is inserted into the + * font-style attribute (e.g., font-style="italic") + */ + setFont(f?: string | FontInfo, size?: string | number, weight?: string | number, style?: string): this; + /** Return a string of the form `'italic bold 15pt Arial'` */ + getFont(): string; +} +export {}; diff --git a/build/types/src/system.d.ts b/build/types/src/system.d.ts new file mode 100644 index 0000000000..7b689943ff --- /dev/null +++ b/build/types/src/system.d.ts @@ -0,0 +1,92 @@ +import { Element } from './element'; +import { Factory } from './factory'; +import { FormatParams, Formatter, FormatterOptions } from './formatter'; +import { RenderContext } from './rendercontext'; +import { Stave, StaveOptions } from './stave'; +import { StaveConnector, StaveConnectorType } from './staveconnector'; +import { Voice } from './voice'; +export interface SystemFormatterOptions extends FormatterOptions { + alpha?: number; +} +export interface SystemStave { + voices: Voice[]; + stave?: Stave; + noJustification?: boolean; + options?: StaveOptions; + spaceAbove?: number; + spaceBelow?: number; + debugNoteMetrics?: boolean; +} +/** + * Formatting for systems created/drawn from factory: + * + * If width is provided, the system will use the specified width. + * + * If noJustification flag is 'true', there is no justification between voices + * Otherwise, autoWidth defaults to true. + * + * If autowidth is true, the system uses format.preCalculateMinWidth + * for the width of all voices, and default stave padding + */ +export interface SystemOptions { + factory?: Factory; + noPadding?: boolean; + debugFormatter?: boolean; + spaceBetweenStaves?: number; + formatIterations?: number; + autoWidth?: boolean; + x?: number; + width?: number; + y?: number; + details?: SystemFormatterOptions; + formatOptions?: FormatParams; + noJustification?: boolean; +} +/** + * System implements a musical system, which is a collection of staves, + * each which can have one or more voices. All voices across all staves in + * the system are formatted together. + */ +export declare class System extends Element { + static get CATEGORY(): string; + protected options: Required; + protected factory: Factory; + protected formatter?: Formatter; + protected startX?: number; + protected lastY?: number; + protected parts: Required[]; + protected connector?: StaveConnector; + protected debugNoteMetricsYs?: { + y: number; + voice: Voice; + }[]; + constructor(params?: SystemOptions); + /** Set formatting options. */ + setOptions(options?: SystemOptions): void; + /** Set associated context. */ + setContext(context: RenderContext): this; + /** + * Add connector between staves. + * @param type see {@link StaveConnector.typeString} + */ + addConnector(type?: StaveConnectorType): StaveConnector; + /** + * Add a stave to the system. + * + * Example (one voice): + * + * `system.addStave({voices: [score.voice(score.notes('C#5/q, B4, A4, G#4'))]});` + * + * Example (two voices): + * + * `system.addStave({voices: [` + * `score.voice(score.notes('C#5/q, B4, A4, G#4', {stem: 'up'})),` + * `score.voice(score.notes('C#4/h, C#4', {stem: 'down'}))` + * `]});` + */ + addStave(params: SystemStave): Stave; + /** Format the system. */ + format(): void; + /** Render the system. */ + draw(): void; +} diff --git a/build/types/src/tables.d.ts b/build/types/src/tables.d.ts new file mode 100644 index 0000000000..40e9f1ad0d --- /dev/null +++ b/build/types/src/tables.d.ts @@ -0,0 +1,99 @@ +import { ArticulationStruct } from './articulation'; +import { Font } from './font'; +import { Fraction } from './fraction'; +export declare class Tables { + static SOFTMAX_FACTOR: number; + static STEM_WIDTH: number; + static STEM_HEIGHT: number; + static STAVE_LINE_THICKNESS: number; + static RENDER_PRECISION_PLACES: number; + static RESOLUTION: number; + /** + * Customize this by calling Flow.setMusicFont(...fontNames); + */ + static MUSIC_FONT_STACK: Font[]; + /** + * @returns the `Font` object at the head of the music font stack. + */ + static currentMusicFont(): Font; + static NOTATION_FONT_SCALE: number; + static TABLATURE_FONT_SCALE: number; + static SLASH_NOTEHEAD_WIDTH: number; + static STAVE_LINE_DISTANCE: number; + static TEXT_HEIGHT_OFFSET_HACK: number; + static clefProperties(clef: string): { + line_shift: number; + }; + /** + * @param keyOctaveGlyph a string in the format "key/octave" (e.g., "c/5") or "key/octave/custom-note-head-code" (e.g., "g/5/t3"). + * @param clef + * @param params a struct with one option, `octave_shift` for clef ottavation (0 = default; 1 = 8va; -1 = 8vb, etc.). + * @returns properties for the specified note. + */ + static keyProperties(keyOctaveGlyph: string, clef?: string, params?: { + octave_shift?: number; + }): any; + static integerToNote(integer?: number): string; + static tabToGlyph(fret: string, scale?: number): { + text: string; + code?: string; + getWidth: () => number; + shift_y: number; + }; + static textWidth(text: string): number; + static articulationCodes(artic: string): ArticulationStruct; + static accidentalMap: Record; + static accidentalCodes(acc: string): { + code: string; + parenRightPaddingAdjustment: number; + }; + static accidentalColumnsTable: Record; + static ornamentCodes(acc: string): { + code: string; + }; + static keySignature(spec: string): { + type: string; + line: number; + }[]; + static getKeySignatures(): Record; + static hasKeySignature(spec: string): boolean; + static unicode: { + sharp: string; + flat: string; + natural: string; + triangle: string; + 'o-with-slash': string; + degrees: string; + circle: string; + }; + /** + * Convert duration aliases to the number based duration. + * If the input isn't an alias, simply return the input. + * @param duration + * @returns Example: 'q' -> '4', '8' -> '8' + */ + static sanitizeDuration(duration: string): string; + /** Convert the `duration` to a fraction. */ + static durationToFraction(duration: string): Fraction; + /** Convert the `duration` to a number. */ + static durationToNumber(duration: string): number; + static durationToTicks(duration: string): number; + static codeNoteHead(type: string, duration: string): string; + static getGlyphProps(duration: string, type?: string): any | undefined; + static validTypes: Record; + static TIME4_4: { + num_beats: number; + beat_value: number; + resolution: number; + }; +} diff --git a/build/types/src/tabnote.d.ts b/build/types/src/tabnote.d.ts new file mode 100644 index 0000000000..99923a2862 --- /dev/null +++ b/build/types/src/tabnote.d.ts @@ -0,0 +1,44 @@ +import { GlyphProps } from './glyph'; +import { Stave } from './stave'; +import { StaveNoteStruct } from './stavenote'; +import { StemmableNote } from './stemmablenote'; +export interface TabNotePosition { + str: number; + fret: number | string; +} +export interface TabNoteStruct extends StaveNoteStruct { + positions: TabNotePosition[]; +} +export declare class TabNote extends StemmableNote { + static get CATEGORY(): string; + protected ghost: boolean; + protected glyphs: GlyphProps[]; + protected positions: TabNotePosition[]; + constructor(noteStruct: TabNoteStruct, draw_stem?: boolean); + greatestString: () => number; + leastString: () => number; + reset(): this; + setGhost(ghost: boolean): this; + hasStem(): boolean; + getStemExtension(): number; + updateWidth(): void; + setStave(stave: Stave): this; + getPositions(): TabNotePosition[]; + getModifierStartXY(position: number, index: number): { + x: number; + y: number; + }; + getLineForRest(): number; + preFormat(): void; + getStemX(): number; + getStemY(): number; + getStemExtents(): { + topY: number; + baseY: number; + }; + drawFlag(): void; + drawModifiers(): void; + drawStemThrough(): void; + drawPositions(): void; + draw(): void; +} diff --git a/build/types/src/tabslide.d.ts b/build/types/src/tabslide.d.ts new file mode 100644 index 0000000000..553e52f321 --- /dev/null +++ b/build/types/src/tabslide.d.ts @@ -0,0 +1,34 @@ +import { FontInfo } from './font'; +import { TieNotes } from './stavetie'; +import { TabTie } from './tabtie'; +export declare class TabSlide extends TabTie { + static get CATEGORY(): string; + static TEXT_FONT: Required; + static get SLIDE_UP(): number; + static get SLIDE_DOWN(): number; + static createSlideUp(notes: TieNotes): TabSlide; + static createSlideDown(notes: TieNotes): TabSlide; + /** + * @param notes is a struct of the form: + * { + * first_note: Note, + * last_note: Note, + * first_indices: [n1, n2, n3], + * last_indices: [n1, n2, n3] + * } + * @param notes.first_note the starting note of the slide + * @param notes.last_note the ending note of the slide + * @param notes.first_indices specifies which string + fret positions of the TabNote are used in this slide. zero indexed. + * @param notes.last_indices currently unused. we assume it's the same as first_indices. + * + * @param direction TabSlide.SLIDE_UP or TabSlide.SLIDE_DOWN + */ + constructor(notes: TieNotes, direction?: number); + renderTie(params: { + direction: number; + first_x_px: number; + last_x_px: number; + last_ys: number[]; + first_ys: number[]; + }): void; +} diff --git a/build/types/src/tabstave.d.ts b/build/types/src/tabstave.d.ts new file mode 100644 index 0000000000..ac87718cd2 --- /dev/null +++ b/build/types/src/tabstave.d.ts @@ -0,0 +1,7 @@ +import { Stave, StaveOptions } from './stave'; +export declare class TabStave extends Stave { + static get CATEGORY(): string; + constructor(x: number, y: number, width: number, options?: StaveOptions); + getYForGlyphs(): number; + addTabGlyph(): this; +} diff --git a/build/types/src/tabtie.d.ts b/build/types/src/tabtie.d.ts new file mode 100644 index 0000000000..bfc26fa027 --- /dev/null +++ b/build/types/src/tabtie.d.ts @@ -0,0 +1,18 @@ +import { StaveTie, TieNotes } from './stavetie'; +export declare class TabTie extends StaveTie { + static get CATEGORY(): string; + static createHammeron(notes: TieNotes): TabTie; + static createPulloff(notes: TieNotes): TabTie; + /** + * @param notes is a struct that has: + * { + * first_note: Note, + * last_note: Note, + * first_indices: [n1, n2, n3], + * last_indices: [n1, n2, n3] + * } + * + * @param text + */ + constructor(notes: TieNotes, text?: string); +} diff --git a/build/types/src/textbracket.d.ts b/build/types/src/textbracket.d.ts new file mode 100644 index 0000000000..201f9d49fb --- /dev/null +++ b/build/types/src/textbracket.d.ts @@ -0,0 +1,55 @@ +import { Element } from './element'; +import { FontInfo } from './font'; +import { Note } from './note'; +import { RenderContext } from './rendercontext'; +export interface TextBracketParams { + start: Note; + stop: Note; + text?: string; + superscript?: string; + position?: number | string; +} +export declare enum TextBracketPosition { + TOP = 1, + BOTTOM = -1 +} +export declare class TextBracket extends Element { + static DEBUG: boolean; + static get CATEGORY(): string; + static TEXT_FONT: Required; + render_options: { + dashed: boolean; + color: string; + line_width: number; + underline_superscript: boolean; + show_bracket: boolean; + dash: number[]; + bracket_height: number; + }; + protected readonly text: string; + protected readonly superscript: string; + protected line: number; + readonly position: TextBracketPosition; + readonly start: Note; + readonly stop: Note; + static get Position(): typeof TextBracketPosition; + static get PositionString(): Record; + /** + * @deprecated Use `TextBracket.Position` instead. + */ + static get Positions(): typeof TextBracketPosition; + /** + * @deprecated Use `TextBracket.PositionString` instead. + */ + static get PositionsString(): Record; + constructor({ start, stop, text, superscript, position }: TextBracketParams); + /** + * Apply the text backet styling to the provided context. + * @param ctx + * @returns this + */ + applyStyle(ctx: RenderContext): this; + setDashed(dashed: boolean, dash?: number[]): this; + setLine(line: number): this; + draw(): void; +} diff --git a/build/types/src/textdynamics.d.ts b/build/types/src/textdynamics.d.ts new file mode 100644 index 0000000000..fa07c00a82 --- /dev/null +++ b/build/types/src/textdynamics.d.ts @@ -0,0 +1,39 @@ +import { Glyph } from './glyph'; +import { Note } from './note'; +import { TextNoteStruct } from './textnote'; +/** + * `TextDynamics` renders traditional + * text dynamics markings, **ie: p, f, sfz, rfz, ppp** + * + * You can render any dynamics string that contains a combination of + * the following letters: P, M, F, Z, R, S + */ +export declare class TextDynamics extends Note { + /** To enable logging for this class. Set `Vex.Flow.TextDynamics.DEBUG` to `true`. */ + static DEBUG: boolean; + static get CATEGORY(): string; + protected sequence: string; + protected line: number; + protected glyphs: Glyph[]; + /** The glyph data for each dynamics letter. */ + static get GLYPHS(): Record; + /** + * Create the dynamics marking. + * + * A `TextDynamics` object inherits from `Note` so that it can be formatted + * within a `Voice`. + * + * @param noteStruct an object that contains a `duration` property and a + * `sequence` of letters that represents the letters to render. + */ + constructor(noteStruct: TextNoteStruct); + /** Set the Stave line on which the note should be placed. */ + setLine(line: number): this; + /** Preformat the dynamics text. */ + preFormat(): this; + /** Draw the dynamics text on the rendering context. */ + draw(): void; +} diff --git a/build/types/src/textformatter.d.ts b/build/types/src/textformatter.d.ts new file mode 100644 index 0000000000..041b612873 --- /dev/null +++ b/build/types/src/textformatter.d.ts @@ -0,0 +1,109 @@ +import { FontGlyph, FontInfo } from './font'; +export interface TextFormatterInfo extends Record { + family: string; + resolution?: number; + glyphs?: Record; + serifs: boolean; + monospaced: boolean; + italic: boolean; + bold: boolean; + maxSizeGlyph?: string; + superscriptOffset?: number; + subscriptOffset?: number; + description: string; +} +export declare class TextFormatter { + /** To enable logging for this class. Set `Vex.Flow.TextFormatter.DEBUG` to `true`. */ + static DEBUG: boolean; + /** + * Return all registered font families. + */ + static getFontFamilies(): TextFormatterInfo[]; + /** + * Call `TextFormatter.registerInfo(info)` to register font information before using this method. + * + * This method creates a formatter for the font that most closely matches the requested font. + * We compare font family, bold, and italic attributes. + * This method will return a fallback formatter if there are no matches. + */ + static create(requestedFont?: FontInfo): TextFormatter; + /** + * @param fontFamily used as a key to the font registry. + * @returns the same info object that was passed in via `TextFormatter.registerInfo(info)` + */ + static getInfo(fontFamily: string): TextFormatterInfo | undefined; + /** + * Apps may register their own fonts and metrics, and those metrics + * will be available to the app for formatting. + * + * Metrics can be generated from a font file using fontgen_text.js in the tools/fonts directory. + * @param info + * @param overwrite + */ + static registerInfo(info: TextFormatterInfo, overwrite?: boolean): void; + /** Font family. */ + protected family: string; + /** Specified in `pt` units. */ + protected size: number; + /** Font metrics are extracted at 1000 upem (units per em). */ + protected resolution: number; + /** + * For text formatting, we do not require glyph outlines, but instead rely on glyph + * bounding box metrics such as: + * ``` + * { + * x_min: 48, + * x_max: 235, + * y_min: -17, + * y_max: 734, + * ha: 751, + * leftSideBearing: 48, + * advanceWidth: 286, + * } + * ``` + */ + protected glyphs: Record; + protected description?: string; + protected serifs: boolean; + protected monospaced: boolean; + protected italic: boolean; + protected bold: boolean; + protected superscriptOffset: number; + protected subscriptOffset: number; + protected maxSizeGlyph: string; + protected cacheKey: string; + /** + * Use `TextFormatter.create(...)` to build an instance from information previously + * registered via `TextFormatter.registerInfo(info)`. + */ + private constructor(); + updateParams(params: TextFormatterInfo): void; + /** Create a hash with the current font data, so we can cache computed widths. */ + updateCacheKey(): void; + /** + * The glyphs table is indexed by the character (e.g., 'C', '@'). + * See: robotoslab_glyphs.ts & petalumascript_glyphs.ts. + */ + getGlyphMetrics(character: string): FontGlyph; + get maxHeight(): number; + /** + * Retrieve the character's advanceWidth as a fraction of an `em` unit. + * For the space character ' ' as defined in the: + * petalumascript_glyphs.ts: 250 advanceWidth in the 1000 unitsPerEm font returns 0.25. + * robotoslab_glyphs.ts: 509 advanceWidth in the 2048 unitsPerEm font returns 0.2485. + */ + getWidthForCharacterInEm(c: string): number; + /** + * Retrieve the total width of `text` in `em` units. + */ + getWidthForTextInEm(text: string): number; + /** The width of the text (in `em`) is scaled by the font size (in `px`). */ + getWidthForTextInPx(text: string): number; + /** + * @param size in pt. + */ + setFontSize(size: number): this; + /** `this.size` is specified in points. Convert to pixels. */ + get fontSizeInPixels(): number; + getResolution(): number; +} diff --git a/build/types/src/textnote.d.ts b/build/types/src/textnote.d.ts new file mode 100644 index 0000000000..077f6eb396 --- /dev/null +++ b/build/types/src/textnote.d.ts @@ -0,0 +1,53 @@ +import { FontInfo } from './font'; +import { Note, NoteStruct } from './note'; +export declare enum TextJustification { + LEFT = 1, + CENTER = 2, + RIGHT = 3 +} +export interface TextNoteStruct extends NoteStruct { + text?: string; + glyph?: string; + ignore_ticks?: boolean; + smooth?: boolean; + font?: FontInfo; + subscript?: string; + superscript?: string; +} +/** + * `TextNote` is a notation element that is positioned in time. Generally + * meant for objects that sit above/below the staff and inline with each other. + * `TextNote` has to be assigned to a `Stave` before rendering by means of `setStave`. + * Examples of this would be such as dynamics, lyrics, chord changes, etc. + */ +export declare class TextNote extends Note { + static get CATEGORY(): string; + static TEXT_FONT: Required; + static readonly Justification: typeof TextJustification; + /** Glyph data. */ + static get GLYPHS(): Record; + protected text: string; + protected superscript?: string; + protected subscript?: string; + protected smooth: boolean; + protected justification: TextJustification; + protected line: number; + constructor(noteStruct: TextNoteStruct); + /** Set the horizontal justification of the TextNote. */ + setJustification(just: TextJustification): this; + /** Set the Stave line on which the note should be placed. */ + setLine(line: number): this; + /** Return the Stave line on which the TextNote is placed. */ + getLine(): number; + /** Return the unformatted text of this TextNote. */ + getText(): string; + /** Pre-render formatting. */ + preFormat(): void; + /** + * Renders the TextNote. + * `TextNote` has to be assigned to a `Stave` before rendering by means of `setStave`. + */ + draw(): void; +} diff --git a/build/types/src/tickable.d.ts b/build/types/src/tickable.d.ts new file mode 100644 index 0000000000..2af87518bd --- /dev/null +++ b/build/types/src/tickable.d.ts @@ -0,0 +1,140 @@ +import { Element } from './element'; +import { Fraction } from './fraction'; +import { Modifier } from './modifier'; +import { ModifierContext } from './modifiercontext'; +import { Stave } from './stave'; +import { TickContext } from './tickcontext'; +import { Tuplet } from './tuplet'; +import { Voice } from './voice'; +/** Formatter metrics interface */ +export interface FormatterMetrics { + duration: string; + freedom: { + left: number; + right: number; + }; + iterations: number; + space: { + used: number; + mean: number; + deviation: number; + }; +} +/** + * Tickable represents a element that sit on a score and + * has a duration, i.e., Tickables occupy space in the musical rendering dimension. + */ +export declare abstract class Tickable extends Element { + static get CATEGORY(): string; + protected ignore_ticks: boolean; + protected tupletStack: Tuplet[]; + protected tuplet?: Tuplet; + protected ticks: Fraction; + protected center_x_shift: number; + protected voice?: Voice; + protected width: number; + protected x_shift: number; + protected modifierContext?: ModifierContext; + protected tickContext?: TickContext; + protected modifiers: Modifier[]; + protected tickMultiplier: Fraction; + protected formatterMetrics: FormatterMetrics; + protected intrinsicTicks: number; + protected align_center: boolean; + private _preFormatted; + private _postFormatted; + constructor(); + /** Reset the Tickable, this function will be overloaded. */ + reset(): this; + /** Return the ticks. */ + getTicks(): Fraction; + /** Check if it ignores the ticks. */ + shouldIgnoreTicks(): boolean; + /** Ignore the ticks. */ + setIgnoreTicks(flag: boolean): this; + /** Set width of note. Used by the formatter for positioning. */ + setWidth(width: number): void; + /** Get width of note. Used by the formatter for positioning. */ + getWidth(): number; + /** Displace note by `x` pixels. Used by the formatter. */ + setXShift(x: number): this; + /** Get the `x` displaced pixels of the note. */ + getXShift(): number; + /** Get `x` position of this tick context. */ + getX(): number; + /** Return the formatterMetrics. */ + getFormatterMetrics(): FormatterMetrics; + /** Return the center `x` shift. */ + getCenterXShift(): number; + /** Set the center `x` shift. */ + setCenterXShift(centerXShift: number): this; + isCenterAligned(): boolean; + setCenterAlignment(align_center: boolean): this; + /** + * Return the associated voice. Every tickable must be associated with a voice. + * This allows formatters and preFormatter to associate them with the right modifierContexts. + */ + getVoice(): Voice; + /** Set the associated voice. */ + setVoice(voice: Voice): void; + /** Get the tuplet. */ + getTuplet(): Tuplet | undefined; + /** Return the intrinsic ticks. */ + getTupletStack(): Tuplet[]; + /** + * Reset the specific Tuplet if this is not provided, all tuplets are reset. + * Remove any prior tuplets from the tick calculation and + * reset the intrinsic tick value. + */ + resetTuplet(tuplet?: Tuplet): this; + /** Attach to new tuplet. */ + setTuplet(tuplet: Tuplet): this; + /** + * Add self to the provided ModifierContext `mc`. + * If this tickable has modifiers, set modifierContext. + * @returns this + */ + addToModifierContext(mc: ModifierContext): this; + /** + * Optional, if tickable has modifiers, associate a Modifier. + * @param mod the modifier + */ + addModifier(modifier: Modifier, index?: number): this; + /** Get the list of associated modifiers. */ + getModifiers(): Modifier[]; + /** Set the Tick Context. */ + setTickContext(tc: TickContext): void; + checkTickContext(message?: string): TickContext; + /** Preformat the Tickable. */ + preFormat(): void; + /** Set preformatted status. */ + set preFormatted(value: boolean); + get preFormatted(): boolean; + /** Postformat the Tickable. */ + postFormat(): this; + /** Set postformatted status. */ + set postFormatted(value: boolean); + get postFormatted(): boolean; + /** Return the intrinsic ticks. */ + getIntrinsicTicks(): number; + /** Set the intrinsic ticks. */ + setIntrinsicTicks(intrinsicTicks: number): void; + /** Get the tick multiplier. */ + getTickMultiplier(): Fraction; + /** Apply a tick multiplier. */ + applyTickMultiplier(numerator: number, denominator: number): void; + /** Set the duration. */ + setDuration(duration: Fraction): void; + getAbsoluteX(): number; + /** Attach this note to a modifier context. */ + setModifierContext(mc?: ModifierContext): this; + /** Get `ModifierContext`. */ + getModifierContext(): ModifierContext | undefined; + /** Check and get `ModifierContext`. */ + checkModifierContext(): ModifierContext; + /** Get the target stave. */ + abstract getStave(): Stave | undefined; + /** Set the target stave. */ + abstract setStave(stave: Stave): this; + abstract getMetrics(): any; +} diff --git a/build/types/src/tickcontext.d.ts b/build/types/src/tickcontext.d.ts new file mode 100644 index 0000000000..20e5a92957 --- /dev/null +++ b/build/types/src/tickcontext.d.ts @@ -0,0 +1,82 @@ +import { Fraction } from './fraction'; +import { NoteMetrics } from './note'; +import { Tickable } from './tickable'; +export interface TickContextMetrics extends NoteMetrics { + totalLeftPx: number; + totalRightPx: number; +} +export interface TickContextOptions { + tickID: number; +} +/** + * TickContext formats abstract tickable objects, such as notes, chords, tabs, etc. + */ +export declare class TickContext { + protected readonly tickID: number; + protected readonly tickables: Tickable[]; + protected readonly tickablesByVoice: Record; + protected currentTick: Fraction; + protected maxTicks: Fraction; + protected padding: number; + protected xBase: number; + protected x: number; + protected xOffset: number; + protected notePx: number; + protected glyphPx: number; + protected leftDisplacedHeadPx: number; + protected rightDisplacedHeadPx: number; + protected modLeftPx: number; + protected modRightPx: number; + protected totalLeftPx: number; + protected totalRightPx: number; + protected maxTickable?: Tickable; + protected minTicks?: Fraction; + protected minTickable?: Tickable; + tContexts: TickContext[]; + protected preFormatted: boolean; + protected postFormatted: boolean; + protected width: number; + protected formatterMetrics: { + freedom: { + left: number; + right: number; + }; + }; + static getNextContext(tContext: TickContext): TickContext | undefined; + constructor(options?: TickContextOptions); + getTickID(): number; + getX(): number; + setX(x: number): this; + getXBase(): number; + setXBase(xBase: number): void; + getXOffset(): number; + setXOffset(xOffset: number): void; + getWidth(): number; + setPadding(padding: number): this; + getMaxTicks(): Fraction; + getMinTicks(): Fraction | undefined; + getMaxTickable(): Tickable | undefined; + getMinTickable(): Tickable | undefined; + getTickables(): Tickable[]; + /** + * Introduced on 2020-04-17 as getTickablesForVoice(voiceIndex). + * https://github.com/0xfe/vexflow/blame/dc97b0cc5bb93171c0038638c34362dc958222ca/src/tickcontext.js#L63 + * Renamed on 2021-08-05 to getTickableForVoice(voiceIndex). Method renamed to singular, since it returns one Tickable. + */ + getTickableForVoice(voiceIndex: number): Tickable; + getTickablesByVoice(): Record; + getCenterAlignedTickables(): Tickable[]; + /** Gets widths context, note and left/right modifiers for formatting. */ + getMetrics(): TickContextMetrics; + getCurrentTick(): Fraction; + setCurrentTick(tick: Fraction): void; + addTickable(tickable: Tickable, voiceIndex?: number): this; + preFormat(): this; + postFormat(): this; + getFormatterMetrics(): { + freedom: { + left: number; + right: number; + }; + }; +} diff --git a/build/types/src/timesigglyph.d.ts b/build/types/src/timesigglyph.d.ts new file mode 100644 index 0000000000..982fc6b06a --- /dev/null +++ b/build/types/src/timesigglyph.d.ts @@ -0,0 +1,14 @@ +import { Glyph, GlyphMetrics } from './glyph'; +import { TimeSignature } from './timesignature'; +export declare class TimeSignatureGlyph extends Glyph { + timeSignature: TimeSignature; + topStartX: number; + botStartX: number; + width: number; + xMin: number; + constructor(timeSignature: TimeSignature, topDigits: string, botDigits: string, code: string, point: number, options?: { + category: string; + }); + getMetrics(): GlyphMetrics; + renderToStave(x: number): void; +} diff --git a/build/types/src/timesignature.d.ts b/build/types/src/timesignature.d.ts new file mode 100644 index 0000000000..9e88c30395 --- /dev/null +++ b/build/types/src/timesignature.d.ts @@ -0,0 +1,26 @@ +import { Glyph } from './glyph'; +import { StaveModifier } from './stavemodifier'; +export interface TimeSignatureInfo { + glyph: Glyph; + line?: number; + num: boolean; +} +export declare class TimeSignature extends StaveModifier { + static get CATEGORY(): string; + static get glyphs(): Record; + point: number; + bottomLine: number; + topLine: number; + protected info: TimeSignatureInfo; + protected validate_args: boolean; + constructor(timeSpec?: string, customPadding?: number, validate_args?: boolean); + parseTimeSpec(timeSpec: string): TimeSignatureInfo; + makeTimeSignatureGlyph(topDigits: string, botDigits: string): Glyph; + getInfo(): TimeSignatureInfo; + setTimeSig(timeSpec: string): this; + draw(): void; +} diff --git a/build/types/src/timesignote.d.ts b/build/types/src/timesignote.d.ts new file mode 100644 index 0000000000..3907a793bb --- /dev/null +++ b/build/types/src/timesignote.d.ts @@ -0,0 +1,11 @@ +import { ModifierContext } from './modifiercontext'; +import { Note } from './note'; +import { TimeSignatureInfo } from './timesignature'; +export declare class TimeSigNote extends Note { + static get CATEGORY(): string; + protected timeSigInfo: TimeSignatureInfo; + constructor(timeSpec: string, customPadding?: number); + addToModifierContext(mc: ModifierContext): this; + preFormat(): this; + draw(): void; +} diff --git a/build/types/src/tremolo.d.ts b/build/types/src/tremolo.d.ts new file mode 100644 index 0000000000..8a5f3db4f1 --- /dev/null +++ b/build/types/src/tremolo.d.ts @@ -0,0 +1,17 @@ +import { Modifier } from './modifier'; +/** Tremolo implements tremolo notation. */ +export declare class Tremolo extends Modifier { + static get CATEGORY(): string; + protected readonly code: string; + protected readonly num: number; + /** Extra spacing required for big strokes. */ + y_spacing_scale: number; + /** Font scaling for big strokes. */ + extra_stroke_scale: number; + /** + * @param num number of bars + */ + constructor(num: number); + /** Draw the tremolo on the rendering context. */ + draw(): void; +} diff --git a/build/types/src/tuning.d.ts b/build/types/src/tuning.d.ts new file mode 100644 index 0000000000..c0195742e2 --- /dev/null +++ b/build/types/src/tuning.d.ts @@ -0,0 +1,23 @@ +/** `Tuning` implements varies types of tunings for tablature. */ +export declare class Tuning { + protected tuningValues: number[]; + static get names(): Record; + /** + * Constructor. + * @param tuningString tuning name (eg. 'dagdad') or comma separated note strings + */ + constructor(tuningString?: string); + /** Return the note number associated to the note string. */ + noteToInteger(noteString: string): number; + /** + * Set tuning identified by tuning name (eg. 'dagdad') + * @param tuningString tuning name (eg. 'dagdad') or comma separated note strings + */ + setTuning(tuningString: string): void; + /** Return the note number associated with a tablature string. */ + getValueForString(stringNum: string | number): number; + /** Return the note number associated with a tablature string and fret. */ + getValueForFret(fretNum: string | number, stringNum: string | number): number; + /** Return the note string associated with tablature string and fret. */ + getNoteForFret(fretNum: string | number, stringNum: string | number): string; +} diff --git a/build/types/src/tuplet.d.ts b/build/types/src/tuplet.d.ts new file mode 100644 index 0000000000..a89a597479 --- /dev/null +++ b/build/types/src/tuplet.d.ts @@ -0,0 +1,105 @@ +/** + * ## Description + * + * Create a new tuplet from the specified notes. The notes must + * be part of the same voice. If they are of different rhythmic + * values, then options.num_notes must be set. + * + * @constructor + * @param {Array.} A set of notes: staveNotes, + * notes, etc... any class that inherits stemmableNote at some + * point in its prototype chain. + * @param options: object { + * + * num_notes: fit this many notes into... + * notes_occupied: ...the space of this many notes + * + * Together, these two properties make up the tuplet ratio + * in the form of num_notes : notes_occupied. + * num_notes defaults to the number of notes passed in, so + * it is important that if you omit this property, all of + * the notes passed should be of the same note value. + * notes_occupied defaults to 2 -- so you should almost + * certainly pass this parameter for anything other than + * a basic triplet. + * + * location: + * default 1, which is above the notes: ┌─── 3 ───┐ + * -1 is below the notes └─── 3 ───┘ + * + * bracketed: boolean, draw a bracket around the tuplet number + * when true: ┌─── 3 ───┐ when false: 3 + * defaults to true if notes are not beamed, false otherwise + * + * ratioed: boolean + * when true: ┌─── 7:8 ───┐, when false: ┌─── 7 ───┐ + * defaults to true if the difference between num_notes and + * notes_occupied is greater than 1. + * + * y_offset: int, default 0 + * manually offset a tuplet, for instance to avoid collisions + * with articulations, etc... + * } + */ +import { Element } from './element'; +import { Glyph } from './glyph'; +import { Note } from './note'; +export interface TupletOptions { + beats_occupied?: number; + bracketed?: boolean; + location?: number; + notes_occupied?: number; + num_notes?: number; + ratioed?: boolean; + y_offset?: number; +} +export declare const enum TupletLocation { + BOTTOM = -1, + TOP = 1 +} +export declare class Tuplet extends Element { + static get CATEGORY(): string; + notes: Note[]; + protected options: TupletOptions; + protected num_notes: number; + protected point: number; + protected bracketed: boolean; + protected y_pos: number; + protected x_pos: number; + protected width: number; + protected location: number; + protected notes_occupied: number; + protected ratioed: boolean; + protected numerator_glyphs: Glyph[]; + protected denom_glyphs: Glyph[]; + static get LOCATION_TOP(): number; + static get LOCATION_BOTTOM(): number; + static get NESTING_OFFSET(): number; + static get metrics(): any; + constructor(notes: Note[], options?: TupletOptions); + attach(): void; + detach(): void; + /** + * Set whether or not the bracket is drawn. + */ + setBracketed(bracketed: boolean): this; + /** + * Set whether or not the ratio is shown. + */ + setRatioed(ratioed: boolean): this; + /** + * Set the tuplet indicator to be displayed either on the top or bottom of the stave. + */ + setTupletLocation(location: number): this; + getNotes(): Note[]; + getNoteCount(): number; + beatsOccupiedDeprecationWarning(): void; + getBeatsOccupied(): number; + setBeatsOccupied(beats: number): void; + getNotesOccupied(): number; + setNotesOccupied(notes: number): void; + resolveGlyphs(): void; + getNestedTupletCount(): number; + getYPosition(): number; + draw(): void; +} diff --git a/build/types/src/typeguard.d.ts b/build/types/src/typeguard.d.ts new file mode 100644 index 0000000000..e1399a8862 --- /dev/null +++ b/build/types/src/typeguard.d.ts @@ -0,0 +1,99 @@ +import { Accidental } from './accidental'; +import { Annotation } from './annotation'; +import { Dot } from './dot'; +import { GraceNote } from './gracenote'; +import { GraceNoteGroup } from './gracenotegroup'; +import { Note } from './note'; +import { RenderContext } from './rendercontext.js'; +import { Barline } from './stavebarline'; +import { StaveNote } from './stavenote'; +import { StemmableNote } from './stemmablenote'; +import { TabNote } from './tabnote'; +/** + * Use instead of `instanceof` as a more flexible type guard. + * @param obj check if this object's CATEGORY matches the provided category. + * @param category a string representing a category of VexFlow objects. + * @param checkAncestors defaults to `true`, so we walk up the prototype chain to look for a matching `CATEGORY`. + * If `false`, we do not check the superclass or other ancestors. + * @returns true if `obj` has a static `CATEGORY` property that matches `category`. + */ +export declare function isCategory(obj: any, category: string, checkAncestors?: boolean): obj is T; +export declare const isAccidental: (obj: unknown) => obj is Accidental; +export declare const isAnnotation: (obj: unknown) => obj is Annotation; +export declare const isBarline: (obj: unknown) => obj is Barline; +export declare const isDot: (obj: unknown) => obj is Dot; +export declare const isGraceNote: (obj: unknown) => obj is GraceNote; +export declare const isGraceNoteGroup: (obj: unknown) => obj is GraceNoteGroup; +export declare const isNote: (obj: unknown) => obj is Note; +export declare const isRenderContext: (obj: unknown) => obj is RenderContext; +export declare const isStaveNote: (obj: unknown) => obj is StaveNote; +export declare const isStemmableNote: (obj: unknown) => obj is StemmableNote; +export declare const isTabNote: (obj: unknown) => obj is TabNote; +export declare const enum Category { + Accidental = "Accidental", + Annotation = "Annotation", + Articulation = "Articulation", + Barline = "Barline", + BarNote = "BarNote", + Beam = "Beam", + Bend = "Bend", + ChordSymbol = "ChordSymbol", + Clef = "Clef", + ClefNote = "ClefNote", + Crescendo = "Crescendo", + Curve = "Curve", + Dot = "Dot", + Element = "Element", + Fraction = "Fraction", + FretHandFinger = "FretHandFinger", + GhostNote = "GhostNote", + Glyph = "Glyph", + GlyphNote = "GlyphNote", + GraceNote = "GraceNote", + GraceNoteGroup = "GraceNoteGroup", + GraceTabNote = "GraceTabNote", + KeySignature = "KeySignature", + KeySigNote = "KeySigNote", + Modifier = "Modifier", + MultiMeasureRest = "MultiMeasureRest", + Note = "Note", + NoteHead = "NoteHead", + NoteSubGroup = "NoteSubGroup", + Ornament = "Ornament", + Parenthesis = "Parenthesis", + PedalMarking = "PedalMarking", + RenderContext = "RenderContext", + RepeatNote = "RepeatNote", + Repetition = "Repetition", + Stave = "Stave", + StaveConnector = "StaveConnector", + StaveHairpin = "StaveHairpin", + StaveLine = "StaveLine", + StaveModifier = "StaveModifier", + StaveNote = "StaveNote", + StaveSection = "StaveSection", + StaveTempo = "StaveTempo", + StaveText = "StaveText", + StaveTie = "StaveTie", + Stem = "Stem", + StemmableNote = "StemmableNote", + StringNumber = "StringNumber", + Stroke = "Stroke", + System = "System", + TabNote = "TabNote", + TabSlide = "TabSlide", + TabStave = "TabStave", + TabTie = "TabTie", + TextBracket = "TextBracket", + TextDynamics = "TextDynamics", + TextNote = "TextNote", + Tickable = "Tickable", + TimeSignature = "TimeSignature", + TimeSigNote = "TimeSigNote", + Tremolo = "Tremolo", + Tuplet = "Tuplet", + Vibrato = "Vibrato", + VibratoBracket = "VibratoBracket", + Voice = "Voice", + Volta = "Volta" +} diff --git a/build/types/src/util.d.ts b/build/types/src/util.d.ts new file mode 100644 index 0000000000..7ff01c89f8 --- /dev/null +++ b/build/types/src/util.d.ts @@ -0,0 +1,27 @@ +/** `RuntimeError` will be thrown by VexFlow classes in case of error. */ +export declare class RuntimeError extends Error { + code: string; + constructor(code: string, message?: string); +} +/** VexFlow can be used outside of the browser (e.g., Node) where `window` may not be defined. */ +export declare function globalObject(): typeof globalThis & any; +/** + * Check that `x` is of type `T` and not `undefined`. + * If `x` is `undefined`, throw a RuntimeError with the optionally provided error code and message. + */ +export declare function defined(x?: T, code?: string, message?: string): T; +/** Default log function sends all arguments to console. */ +export declare function log(block: string, ...args: any[]): void; +/** Dump warning to console. */ +export declare function warn(...args: any[]): void; +/** Locate the mid point between stave lines. Returns a fractional line if a space. */ +export declare function midLine(a: number, b: number): number; +/** + * Used by various classes (e.g., SVGContext) to provide a + * unique prefix to element names (or other keys in shared namespaces). + */ +export declare function prefix(text: string): string; +/** + * Convert an arbitrary angle in radians to the equivalent one in the range [0, pi). + */ +export declare function normalizeAngle(a: number): number; diff --git a/build/types/src/version.d.ts b/build/types/src/version.d.ts new file mode 100644 index 0000000000..e5292457ed --- /dev/null +++ b/build/types/src/version.d.ts @@ -0,0 +1,3 @@ +export declare const VERSION: string; +export declare const ID: string; +export declare const DATE: string; diff --git a/build/types/src/vex.d.ts b/build/types/src/vex.d.ts new file mode 100644 index 0000000000..d05bfe36fe --- /dev/null +++ b/build/types/src/vex.d.ts @@ -0,0 +1,18 @@ +import { Flow } from './flow'; +import { RuntimeError } from './util'; +export declare class Vex { + static Flow: typeof Flow; + /** + * Take `arr` and return a new list consisting of the sorted, unique, + * contents of arr. Does not modify `arr`. + */ + static sortAndUnique(arr: any[], cmp: any, eq: any): any[]; + /** Check if array `arr` contains `obj`. */ + static contains(arr: any[], obj: any): boolean; + static getCanvasContext(canvasSelector: string): RenderingContext; + /** Benchmark. Run function `f` once and report time elapsed shifted by `s` milliseconds. */ + static benchmark(s: any, f: any): void; + static stackTrace(): string | undefined; + static RERR: RuntimeError; + static RuntimeError: RuntimeError; +} diff --git a/build/types/src/vibrato.d.ts b/build/types/src/vibrato.d.ts new file mode 100644 index 0000000000..adfa194c07 --- /dev/null +++ b/build/types/src/vibrato.d.ts @@ -0,0 +1,29 @@ +import { Modifier } from './modifier'; +import { ModifierContext, ModifierContextState } from './modifiercontext'; +import { RenderContext } from './rendercontext'; +export interface VibratoRenderOptions { + wave_height: number; + wave_girth: number; + vibrato_width: number; + harsh: boolean; + wave_width: number; +} +/** `Vibrato` implements diverse vibratos. */ +export declare class Vibrato extends Modifier { + static get CATEGORY(): string; + render_options: VibratoRenderOptions; + /** Arrange vibratos inside a `ModifierContext`. */ + static format(vibratos: Vibrato[], state: ModifierContextState, context: ModifierContext): boolean; + constructor(); + /** Set harsh vibrato. */ + setHarsh(harsh: boolean): this; + /** Set vibrato width in pixels. */ + setVibratoWidth(width: number): this; + /** Draw the vibrato on the rendering context. */ + draw(): void; + /** + * Static rendering method that can be called from + * other classes (e.g. VibratoBracket). + */ + static renderVibrato(ctx: RenderContext, x: number, y: number, opts: VibratoRenderOptions): void; +} diff --git a/build/types/src/vibratobracket.d.ts b/build/types/src/vibratobracket.d.ts new file mode 100644 index 0000000000..3d823d14e1 --- /dev/null +++ b/build/types/src/vibratobracket.d.ts @@ -0,0 +1,33 @@ +import { Element } from './element'; +import { Note } from './note'; +/** `VibratoBracket` renders vibrato effect between two notes. */ +export declare class VibratoBracket extends Element { + /** To enable logging for this class. Set `Vex.Flow.VibratoBracket.DEBUG` to `true`. */ + static DEBUG: boolean; + static get CATEGORY(): string; + protected line: number; + protected start?: Note; + protected stop?: Note; + render_options: { + vibrato_width: number; + wave_height: number; + wave_girth: number; + harsh: boolean; + wave_width: number; + }; + /** + * Either the stop or start note must be set, or both of them. + * An undefined value for the start or stop note indicates that the vibrato + * is drawn from the beginning or until the end of the stave accordingly. + */ + constructor(bracket_data: { + stop?: Note | null; + start?: Note | null; + }); + /** Set line position of the vibrato bracket. */ + setLine(line: number): this; + /** Set harsh vibrato bracket. */ + setHarsh(harsh: boolean): this; + /** Draw the vibrato bracket on the rendering context. */ + draw(): void; +} diff --git a/build/types/src/voice.d.ts b/build/types/src/voice.d.ts new file mode 100644 index 0000000000..c8d35270a1 --- /dev/null +++ b/build/types/src/voice.d.ts @@ -0,0 +1,106 @@ +import { BoundingBox } from './boundingbox'; +import { Element } from './element'; +import { Fraction } from './fraction'; +import { RenderContext } from './rendercontext'; +import { Stave } from './stave'; +import { Tickable } from './tickable'; +export interface VoiceTime { + num_beats: number; + beat_value: number; + /** Defaults to `Flow.RESOLUTION` if not provided. */ + resolution?: number; +} +export declare enum VoiceMode { + STRICT = 1, + SOFT = 2, + FULL = 3 +} +/** + * `Voice` is mainly a container object to group `Tickables` for formatting. + */ +export declare class Voice extends Element { + static get CATEGORY(): string; + /** + * Modes allow the addition of ticks in three different ways: + * - STRICT: This is the default. Ticks must fill the voice. + * - SOFT: Ticks can be added without restrictions. + * - FULL: Ticks do not need to fill the voice, but can't exceed the maximum tick length. + */ + static get Mode(): typeof VoiceMode; + protected resolutionMultiplier: number; + protected smallestTickCount: Fraction; + protected stave?: Stave; + protected mode: VoiceMode; + protected expTicksUsed?: number; + protected preFormatted: boolean; + protected options: { + softmaxFactor: number; + }; + protected readonly totalTicks: Fraction; + protected readonly ticksUsed: Fraction; + protected readonly largestTickWidth: number; + protected readonly tickables: Tickable[]; + protected readonly time: Required; + constructor(time?: VoiceTime | string); + /** Get the total ticks in the voice. */ + getTotalTicks(): Fraction; + /** Get the total ticks used in the voice by all the tickables. */ + getTicksUsed(): Fraction; + /** Get the largest width of all the tickables. */ + getLargestTickWidth(): number; + /** Get the tick count for the shortest tickable */ + getSmallestTickCount(): Fraction; + /** Get the tickables in the voice. */ + getTickables(): Tickable[]; + /** Get the voice mode. */ + getMode(): number; + /** + * Set the voice mode. + * @param mode value from `VoiceMode` + */ + setMode(mode: number): this; + /** Get the resolution multiplier for the voice. */ + getResolutionMultiplier(): number; + /** Get the actual tick resolution for the voice. */ + getActualResolution(): number; + /** Set the voice's stave. */ + setStave(stave: Stave): this; + getStave(): Stave | undefined; + /** Get the bounding box for the voice. */ + getBoundingBox(): BoundingBox | undefined; + /** Set the voice mode to strict or soft. */ + setStrict(strict: boolean): this; + /** Determine if the voice is complete according to the voice mode. */ + isComplete(): boolean; + /** + * We use softmax to layout the tickables proportional to the exponent of + * their duration. The softmax factor is used to determine the 'linearness' of + * the layout. + * + * The softmax of all the tickables in this voice should sum to 1. + */ + setSoftmaxFactor(factor: number): this; + /** + * Calculate the sum of the exponents of all the ticks in this voice to use + * as the denominator of softmax. + */ + protected reCalculateExpTicksUsed(): number; + /** Get the softmax-scaled value of a tick duration. 'tickValue' is a number. */ + softmax(tickValue: number): number; + /** Add a tickable to the voice. */ + addTickable(tickable: Tickable): this; + /** Add an array of tickables to the voice. */ + addTickables(tickables: Tickable[]): this; + /** Preformat the voice by applying the voice's stave to each note. */ + preFormat(): this; + checkStave(): Stave; + /** + * Render the voice onto the canvas `context` and an optional `stave`. + * If `stave` is omitted, it is expected that the notes have staves + * already set. + * + * This method also calculates the voice's boundingBox while drawing + * the notes. Note the similarities with this.getBoundingBox(). + */ + draw(context?: RenderContext, stave?: Stave): void; +} diff --git a/build/types/src/web.d.ts b/build/types/src/web.d.ts new file mode 100644 index 0000000000..e5bd19628f --- /dev/null +++ b/build/types/src/web.d.ts @@ -0,0 +1,2 @@ +export declare function isHTMLCanvas(element: any): element is HTMLCanvasElement; +export declare function isHTMLDiv(element: any): element is HTMLDivElement; diff --git a/docs/api/assets/search.js b/docs/api/assets/search.js index 05310fad96..0fb724fcc0 100644 --- a/docs/api/assets/search.js +++ b/docs/api/assets/search.js @@ -1 +1 @@ -window.searchData = {"kinds":{"8":"Enumeration","16":"Enumeration member","32":"Variable","64":"Function","128":"Class","256":"Interface","512":"Constructor","1024":"Property","2048":"Method","65536":"Type literal","262144":"Accessor","4194304":"Type alias"},"rows":[{"id":0,"kind":4194304,"name":"Line","url":"modules.html#Line","classes":"tsd-kind-type-alias"},{"id":1,"kind":65536,"name":"__type","url":"modules.html#Line.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"Line"},{"id":2,"kind":1024,"name":"column","url":"modules.html#Line.__type.column","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Line.__type"},{"id":3,"kind":1024,"name":"line","url":"modules.html#Line.__type.line","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Line.__type"},{"id":4,"kind":1024,"name":"flatLine","url":"modules.html#Line.__type.flatLine","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Line.__type"},{"id":5,"kind":1024,"name":"dblSharpLine","url":"modules.html#Line.__type.dblSharpLine","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Line.__type"},{"id":6,"kind":1024,"name":"numAcc","url":"modules.html#Line.__type.numAcc","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Line.__type"},{"id":7,"kind":1024,"name":"width","url":"modules.html#Line.__type.width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Line.__type"},{"id":8,"kind":128,"name":"Accidental","url":"classes/Accidental.html","classes":"tsd-kind-class"},{"id":9,"kind":1024,"name":"DEBUG","url":"classes/Accidental.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Accidental"},{"id":10,"kind":262144,"name":"CATEGORY","url":"classes/Accidental.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Accidental"},{"id":11,"kind":2048,"name":"format","url":"classes/Accidental.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Accidental"},{"id":12,"kind":2048,"name":"checkCollision","url":"classes/Accidental.html#checkCollision","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Accidental"},{"id":13,"kind":2048,"name":"applyAccidentals","url":"classes/Accidental.html#applyAccidentals","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Accidental"},{"id":14,"kind":262144,"name":"Position","url":"classes/Accidental.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Accidental"},{"id":15,"kind":262144,"name":"PositionString","url":"classes/Accidental.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Accidental"},{"id":16,"kind":1024,"name":"TEXT_FONT","url":"classes/Accidental.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Accidental"},{"id":17,"kind":512,"name":"constructor","url":"classes/Accidental.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Accidental"},{"id":18,"kind":1024,"name":"type","url":"classes/Accidental.html#type","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Accidental"},{"id":19,"kind":1024,"name":"render_options","url":"classes/Accidental.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Accidental"},{"id":20,"kind":65536,"name":"__type","url":"classes/Accidental.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Accidental"},{"id":21,"kind":1024,"name":"parenLeftPadding","url":"classes/Accidental.html#__type.parenLeftPadding","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Accidental.__type"},{"id":22,"kind":1024,"name":"font_scale","url":"classes/Accidental.html#__type.font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Accidental.__type"},{"id":23,"kind":1024,"name":"parenRightPadding","url":"classes/Accidental.html#__type.parenRightPadding","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Accidental.__type"},{"id":24,"kind":2048,"name":"getWidth","url":"classes/Accidental.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Accidental"},{"id":25,"kind":2048,"name":"setNote","url":"classes/Accidental.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Accidental"},{"id":26,"kind":2048,"name":"setAsCautionary","url":"classes/Accidental.html#setAsCautionary","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Accidental"},{"id":27,"kind":2048,"name":"draw","url":"classes/Accidental.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Accidental"},{"id":28,"kind":2048,"name":"setWidth","url":"classes/Accidental.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":29,"kind":2048,"name":"getNote","url":"classes/Accidental.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":30,"kind":2048,"name":"checkAttachedNote","url":"classes/Accidental.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":31,"kind":2048,"name":"getIndex","url":"classes/Accidental.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":32,"kind":2048,"name":"checkIndex","url":"classes/Accidental.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":33,"kind":2048,"name":"setIndex","url":"classes/Accidental.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":34,"kind":2048,"name":"getModifierContext","url":"classes/Accidental.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":35,"kind":2048,"name":"checkModifierContext","url":"classes/Accidental.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":36,"kind":2048,"name":"setModifierContext","url":"classes/Accidental.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":37,"kind":2048,"name":"getPosition","url":"classes/Accidental.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":38,"kind":2048,"name":"setPosition","url":"classes/Accidental.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":39,"kind":2048,"name":"setTextLine","url":"classes/Accidental.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":40,"kind":2048,"name":"setYShift","url":"classes/Accidental.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":41,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/Accidental.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":42,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/Accidental.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":43,"kind":2048,"name":"setXShift","url":"classes/Accidental.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":44,"kind":2048,"name":"getXShift","url":"classes/Accidental.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":45,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/Accidental.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":46,"kind":2048,"name":"addChildElement","url":"classes/Accidental.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":47,"kind":2048,"name":"getCategory","url":"classes/Accidental.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":48,"kind":2048,"name":"setStyle","url":"classes/Accidental.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":49,"kind":2048,"name":"setGroupStyle","url":"classes/Accidental.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":50,"kind":2048,"name":"getStyle","url":"classes/Accidental.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":51,"kind":2048,"name":"applyStyle","url":"classes/Accidental.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":52,"kind":2048,"name":"restoreStyle","url":"classes/Accidental.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":53,"kind":2048,"name":"drawWithStyle","url":"classes/Accidental.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":54,"kind":2048,"name":"hasClass","url":"classes/Accidental.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":55,"kind":2048,"name":"addClass","url":"classes/Accidental.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":56,"kind":2048,"name":"removeClass","url":"classes/Accidental.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":57,"kind":2048,"name":"onRegister","url":"classes/Accidental.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":58,"kind":2048,"name":"isRendered","url":"classes/Accidental.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":59,"kind":2048,"name":"setRendered","url":"classes/Accidental.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":60,"kind":2048,"name":"getAttributes","url":"classes/Accidental.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":61,"kind":2048,"name":"getAttribute","url":"classes/Accidental.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":62,"kind":2048,"name":"setAttribute","url":"classes/Accidental.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":63,"kind":2048,"name":"getBoundingBox","url":"classes/Accidental.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":64,"kind":2048,"name":"getContext","url":"classes/Accidental.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":65,"kind":2048,"name":"setContext","url":"classes/Accidental.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":66,"kind":2048,"name":"checkContext","url":"classes/Accidental.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":67,"kind":262144,"name":"font","url":"classes/Accidental.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":68,"kind":2048,"name":"setFont","url":"classes/Accidental.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":69,"kind":2048,"name":"getFont","url":"classes/Accidental.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":70,"kind":2048,"name":"resetFont","url":"classes/Accidental.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":71,"kind":262144,"name":"fontInfo","url":"classes/Accidental.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":72,"kind":2048,"name":"setFontSize","url":"classes/Accidental.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":73,"kind":2048,"name":"getFontSize","url":"classes/Accidental.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":74,"kind":262144,"name":"fontSize","url":"classes/Accidental.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":75,"kind":262144,"name":"fontSizeInPoints","url":"classes/Accidental.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":76,"kind":262144,"name":"fontSizeInPixels","url":"classes/Accidental.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":77,"kind":262144,"name":"fontStyle","url":"classes/Accidental.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":78,"kind":262144,"name":"fontWeight","url":"classes/Accidental.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":79,"kind":8,"name":"AnnotationHorizontalJustify","url":"enums/AnnotationHorizontalJustify.html","classes":"tsd-kind-enum"},{"id":80,"kind":16,"name":"LEFT","url":"enums/AnnotationHorizontalJustify.html#LEFT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"AnnotationHorizontalJustify"},{"id":81,"kind":16,"name":"CENTER","url":"enums/AnnotationHorizontalJustify.html#CENTER","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"AnnotationHorizontalJustify"},{"id":82,"kind":16,"name":"RIGHT","url":"enums/AnnotationHorizontalJustify.html#RIGHT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"AnnotationHorizontalJustify"},{"id":83,"kind":16,"name":"CENTER_STEM","url":"enums/AnnotationHorizontalJustify.html#CENTER_STEM","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"AnnotationHorizontalJustify"},{"id":84,"kind":8,"name":"AnnotationVerticalJustify","url":"enums/AnnotationVerticalJustify.html","classes":"tsd-kind-enum"},{"id":85,"kind":16,"name":"TOP","url":"enums/AnnotationVerticalJustify.html#TOP","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"AnnotationVerticalJustify"},{"id":86,"kind":16,"name":"CENTER","url":"enums/AnnotationVerticalJustify.html#CENTER","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"AnnotationVerticalJustify"},{"id":87,"kind":16,"name":"BOTTOM","url":"enums/AnnotationVerticalJustify.html#BOTTOM","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"AnnotationVerticalJustify"},{"id":88,"kind":16,"name":"CENTER_STEM","url":"enums/AnnotationVerticalJustify.html#CENTER_STEM","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"AnnotationVerticalJustify"},{"id":89,"kind":128,"name":"Annotation","url":"classes/Annotation.html","classes":"tsd-kind-class"},{"id":90,"kind":1024,"name":"DEBUG","url":"classes/Annotation.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Annotation"},{"id":91,"kind":262144,"name":"CATEGORY","url":"classes/Annotation.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Annotation"},{"id":92,"kind":1024,"name":"TEXT_FONT","url":"classes/Annotation.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Annotation"},{"id":93,"kind":1024,"name":"HorizontalJustify","url":"classes/Annotation.html#HorizontalJustify","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Annotation"},{"id":94,"kind":1024,"name":"HorizontalJustifyString","url":"classes/Annotation.html#HorizontalJustifyString","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Annotation"},{"id":95,"kind":1024,"name":"VerticalJustify","url":"classes/Annotation.html#VerticalJustify","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Annotation"},{"id":96,"kind":1024,"name":"VerticalJustifyString","url":"classes/Annotation.html#VerticalJustifyString","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Annotation"},{"id":97,"kind":262144,"name":"minAnnotationPadding","url":"classes/Annotation.html#minAnnotationPadding","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Annotation"},{"id":98,"kind":2048,"name":"format","url":"classes/Annotation.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Annotation"},{"id":99,"kind":262144,"name":"Position","url":"classes/Annotation.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Annotation"},{"id":100,"kind":262144,"name":"PositionString","url":"classes/Annotation.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Annotation"},{"id":101,"kind":512,"name":"constructor","url":"classes/Annotation.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Annotation"},{"id":102,"kind":2048,"name":"setVerticalJustification","url":"classes/Annotation.html#setVerticalJustification","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Annotation"},{"id":103,"kind":2048,"name":"getJustification","url":"classes/Annotation.html#getJustification","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Annotation"},{"id":104,"kind":2048,"name":"setJustification","url":"classes/Annotation.html#setJustification","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Annotation"},{"id":105,"kind":2048,"name":"draw","url":"classes/Annotation.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Annotation"},{"id":106,"kind":2048,"name":"getWidth","url":"classes/Annotation.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":107,"kind":2048,"name":"setWidth","url":"classes/Annotation.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":108,"kind":2048,"name":"getNote","url":"classes/Annotation.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":109,"kind":2048,"name":"checkAttachedNote","url":"classes/Annotation.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":110,"kind":2048,"name":"setNote","url":"classes/Annotation.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":111,"kind":2048,"name":"getIndex","url":"classes/Annotation.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":112,"kind":2048,"name":"checkIndex","url":"classes/Annotation.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":113,"kind":2048,"name":"setIndex","url":"classes/Annotation.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":114,"kind":2048,"name":"getModifierContext","url":"classes/Annotation.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":115,"kind":2048,"name":"checkModifierContext","url":"classes/Annotation.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":116,"kind":2048,"name":"setModifierContext","url":"classes/Annotation.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":117,"kind":2048,"name":"getPosition","url":"classes/Annotation.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":118,"kind":2048,"name":"setPosition","url":"classes/Annotation.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":119,"kind":2048,"name":"setTextLine","url":"classes/Annotation.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":120,"kind":2048,"name":"setYShift","url":"classes/Annotation.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":121,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/Annotation.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":122,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/Annotation.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":123,"kind":2048,"name":"setXShift","url":"classes/Annotation.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":124,"kind":2048,"name":"getXShift","url":"classes/Annotation.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":125,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/Annotation.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":126,"kind":2048,"name":"addChildElement","url":"classes/Annotation.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":127,"kind":2048,"name":"getCategory","url":"classes/Annotation.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":128,"kind":2048,"name":"setStyle","url":"classes/Annotation.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":129,"kind":2048,"name":"setGroupStyle","url":"classes/Annotation.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":130,"kind":2048,"name":"getStyle","url":"classes/Annotation.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":131,"kind":2048,"name":"applyStyle","url":"classes/Annotation.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":132,"kind":2048,"name":"restoreStyle","url":"classes/Annotation.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":133,"kind":2048,"name":"drawWithStyle","url":"classes/Annotation.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":134,"kind":2048,"name":"hasClass","url":"classes/Annotation.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":135,"kind":2048,"name":"addClass","url":"classes/Annotation.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":136,"kind":2048,"name":"removeClass","url":"classes/Annotation.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":137,"kind":2048,"name":"onRegister","url":"classes/Annotation.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":138,"kind":2048,"name":"isRendered","url":"classes/Annotation.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":139,"kind":2048,"name":"setRendered","url":"classes/Annotation.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":140,"kind":2048,"name":"getAttributes","url":"classes/Annotation.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":141,"kind":2048,"name":"getAttribute","url":"classes/Annotation.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":142,"kind":2048,"name":"setAttribute","url":"classes/Annotation.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":143,"kind":2048,"name":"getBoundingBox","url":"classes/Annotation.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":144,"kind":2048,"name":"getContext","url":"classes/Annotation.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":145,"kind":2048,"name":"setContext","url":"classes/Annotation.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":146,"kind":2048,"name":"checkContext","url":"classes/Annotation.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":147,"kind":262144,"name":"font","url":"classes/Annotation.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":148,"kind":2048,"name":"setFont","url":"classes/Annotation.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":149,"kind":2048,"name":"getFont","url":"classes/Annotation.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":150,"kind":2048,"name":"resetFont","url":"classes/Annotation.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":151,"kind":262144,"name":"fontInfo","url":"classes/Annotation.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":152,"kind":2048,"name":"setFontSize","url":"classes/Annotation.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":153,"kind":2048,"name":"getFontSize","url":"classes/Annotation.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":154,"kind":262144,"name":"fontSize","url":"classes/Annotation.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":155,"kind":262144,"name":"fontSizeInPoints","url":"classes/Annotation.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":156,"kind":262144,"name":"fontSizeInPixels","url":"classes/Annotation.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":157,"kind":262144,"name":"fontStyle","url":"classes/Annotation.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":158,"kind":262144,"name":"fontWeight","url":"classes/Annotation.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":159,"kind":256,"name":"ArticulationStruct","url":"interfaces/ArticulationStruct.html","classes":"tsd-kind-interface"},{"id":160,"kind":1024,"name":"code","url":"interfaces/ArticulationStruct.html#code","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ArticulationStruct"},{"id":161,"kind":1024,"name":"aboveCode","url":"interfaces/ArticulationStruct.html#aboveCode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ArticulationStruct"},{"id":162,"kind":1024,"name":"belowCode","url":"interfaces/ArticulationStruct.html#belowCode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ArticulationStruct"},{"id":163,"kind":1024,"name":"between_lines","url":"interfaces/ArticulationStruct.html#between_lines","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ArticulationStruct"},{"id":164,"kind":128,"name":"Articulation","url":"classes/Articulation.html","classes":"tsd-kind-class"},{"id":165,"kind":1024,"name":"DEBUG","url":"classes/Articulation.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Articulation"},{"id":166,"kind":262144,"name":"CATEGORY","url":"classes/Articulation.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Articulation"},{"id":167,"kind":2048,"name":"format","url":"classes/Articulation.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Articulation"},{"id":168,"kind":2048,"name":"easyScoreHook","url":"classes/Articulation.html#easyScoreHook","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Articulation"},{"id":169,"kind":262144,"name":"Position","url":"classes/Articulation.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Articulation"},{"id":170,"kind":262144,"name":"PositionString","url":"classes/Articulation.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Articulation"},{"id":171,"kind":1024,"name":"TEXT_FONT","url":"classes/Articulation.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Articulation"},{"id":172,"kind":512,"name":"constructor","url":"classes/Articulation.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Articulation"},{"id":173,"kind":1024,"name":"type","url":"classes/Articulation.html#type","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Articulation"},{"id":174,"kind":1024,"name":"render_options","url":"classes/Articulation.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Articulation"},{"id":175,"kind":65536,"name":"__type","url":"classes/Articulation.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Articulation"},{"id":176,"kind":1024,"name":"font_scale","url":"classes/Articulation.html#__type.font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Articulation.__type"},{"id":177,"kind":2048,"name":"draw","url":"classes/Articulation.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Articulation"},{"id":178,"kind":2048,"name":"getWidth","url":"classes/Articulation.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":179,"kind":2048,"name":"setWidth","url":"classes/Articulation.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":180,"kind":2048,"name":"getNote","url":"classes/Articulation.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":181,"kind":2048,"name":"checkAttachedNote","url":"classes/Articulation.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":182,"kind":2048,"name":"setNote","url":"classes/Articulation.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":183,"kind":2048,"name":"getIndex","url":"classes/Articulation.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":184,"kind":2048,"name":"checkIndex","url":"classes/Articulation.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":185,"kind":2048,"name":"setIndex","url":"classes/Articulation.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":186,"kind":2048,"name":"getModifierContext","url":"classes/Articulation.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":187,"kind":2048,"name":"checkModifierContext","url":"classes/Articulation.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":188,"kind":2048,"name":"setModifierContext","url":"classes/Articulation.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":189,"kind":2048,"name":"getPosition","url":"classes/Articulation.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":190,"kind":2048,"name":"setPosition","url":"classes/Articulation.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":191,"kind":2048,"name":"setTextLine","url":"classes/Articulation.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":192,"kind":2048,"name":"setYShift","url":"classes/Articulation.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":193,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/Articulation.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":194,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/Articulation.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":195,"kind":2048,"name":"setXShift","url":"classes/Articulation.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":196,"kind":2048,"name":"getXShift","url":"classes/Articulation.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":197,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/Articulation.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":198,"kind":2048,"name":"addChildElement","url":"classes/Articulation.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":199,"kind":2048,"name":"getCategory","url":"classes/Articulation.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":200,"kind":2048,"name":"setStyle","url":"classes/Articulation.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":201,"kind":2048,"name":"setGroupStyle","url":"classes/Articulation.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":202,"kind":2048,"name":"getStyle","url":"classes/Articulation.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":203,"kind":2048,"name":"applyStyle","url":"classes/Articulation.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":204,"kind":2048,"name":"restoreStyle","url":"classes/Articulation.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":205,"kind":2048,"name":"drawWithStyle","url":"classes/Articulation.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":206,"kind":2048,"name":"hasClass","url":"classes/Articulation.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":207,"kind":2048,"name":"addClass","url":"classes/Articulation.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":208,"kind":2048,"name":"removeClass","url":"classes/Articulation.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":209,"kind":2048,"name":"onRegister","url":"classes/Articulation.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":210,"kind":2048,"name":"isRendered","url":"classes/Articulation.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":211,"kind":2048,"name":"setRendered","url":"classes/Articulation.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":212,"kind":2048,"name":"getAttributes","url":"classes/Articulation.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":213,"kind":2048,"name":"getAttribute","url":"classes/Articulation.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":214,"kind":2048,"name":"setAttribute","url":"classes/Articulation.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":215,"kind":2048,"name":"getBoundingBox","url":"classes/Articulation.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":216,"kind":2048,"name":"getContext","url":"classes/Articulation.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":217,"kind":2048,"name":"setContext","url":"classes/Articulation.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":218,"kind":2048,"name":"checkContext","url":"classes/Articulation.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":219,"kind":262144,"name":"font","url":"classes/Articulation.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":220,"kind":2048,"name":"setFont","url":"classes/Articulation.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":221,"kind":2048,"name":"getFont","url":"classes/Articulation.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":222,"kind":2048,"name":"resetFont","url":"classes/Articulation.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":223,"kind":262144,"name":"fontInfo","url":"classes/Articulation.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":224,"kind":2048,"name":"setFontSize","url":"classes/Articulation.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":225,"kind":2048,"name":"getFontSize","url":"classes/Articulation.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":226,"kind":262144,"name":"fontSize","url":"classes/Articulation.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":227,"kind":262144,"name":"fontSizeInPoints","url":"classes/Articulation.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":228,"kind":262144,"name":"fontSizeInPixels","url":"classes/Articulation.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":229,"kind":262144,"name":"fontStyle","url":"classes/Articulation.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":230,"kind":262144,"name":"fontWeight","url":"classes/Articulation.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":231,"kind":128,"name":"BarNote","url":"classes/BarNote.html","classes":"tsd-kind-class"},{"id":232,"kind":1024,"name":"DEBUG","url":"classes/BarNote.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"BarNote"},{"id":233,"kind":262144,"name":"CATEGORY","url":"classes/BarNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"BarNote"},{"id":234,"kind":2048,"name":"plotMetrics","url":"classes/BarNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"BarNote"},{"id":235,"kind":1024,"name":"TEXT_FONT","url":"classes/BarNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"BarNote"},{"id":236,"kind":512,"name":"constructor","url":"classes/BarNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"BarNote"},{"id":237,"kind":2048,"name":"getType","url":"classes/BarNote.html#getType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BarNote"},{"id":238,"kind":2048,"name":"setType","url":"classes/BarNote.html#setType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BarNote"},{"id":239,"kind":2048,"name":"addToModifierContext","url":"classes/BarNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"BarNote"},{"id":240,"kind":2048,"name":"preFormat","url":"classes/BarNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"BarNote"},{"id":241,"kind":2048,"name":"draw","url":"classes/BarNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"BarNote"},{"id":242,"kind":1024,"name":"glyph","url":"classes/BarNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":243,"kind":1024,"name":"keys","url":"classes/BarNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":244,"kind":1024,"name":"keyProps","url":"classes/BarNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":245,"kind":1024,"name":"render_options","url":"classes/BarNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":246,"kind":65536,"name":"__type","url":"classes/BarNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"BarNote"},{"id":247,"kind":1024,"name":"draw_stem_through_stave","url":"classes/BarNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":248,"kind":1024,"name":"draw","url":"classes/BarNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":249,"kind":1024,"name":"draw_dots","url":"classes/BarNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":250,"kind":1024,"name":"draw_stem","url":"classes/BarNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":251,"kind":1024,"name":"y_shift","url":"classes/BarNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":252,"kind":1024,"name":"extend_left","url":"classes/BarNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":253,"kind":1024,"name":"extend_right","url":"classes/BarNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":254,"kind":1024,"name":"glyph_font_scale","url":"classes/BarNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":255,"kind":1024,"name":"annotation_spacing","url":"classes/BarNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":256,"kind":1024,"name":"glyph_font_size","url":"classes/BarNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":257,"kind":1024,"name":"scale","url":"classes/BarNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":258,"kind":1024,"name":"font","url":"classes/BarNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":259,"kind":1024,"name":"stroke_px","url":"classes/BarNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":260,"kind":2048,"name":"getPlayNote","url":"classes/BarNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":261,"kind":2048,"name":"setPlayNote","url":"classes/BarNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":262,"kind":2048,"name":"isRest","url":"classes/BarNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":263,"kind":2048,"name":"addStroke","url":"classes/BarNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":264,"kind":2048,"name":"getStave","url":"classes/BarNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":265,"kind":2048,"name":"checkStave","url":"classes/BarNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":266,"kind":2048,"name":"setStave","url":"classes/BarNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":267,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/BarNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":268,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/BarNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":269,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/BarNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":270,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/BarNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":271,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/BarNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":272,"kind":2048,"name":"getLineNumber","url":"classes/BarNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":273,"kind":2048,"name":"getLineForRest","url":"classes/BarNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":274,"kind":2048,"name":"getGlyph","url":"classes/BarNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":275,"kind":2048,"name":"getGlyphWidth","url":"classes/BarNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":276,"kind":2048,"name":"setYs","url":"classes/BarNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":277,"kind":2048,"name":"getYs","url":"classes/BarNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":278,"kind":2048,"name":"getYForTopText","url":"classes/BarNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":279,"kind":2048,"name":"getVoice","url":"classes/BarNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":280,"kind":2048,"name":"setVoice","url":"classes/BarNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":281,"kind":2048,"name":"getTickContext","url":"classes/BarNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":282,"kind":2048,"name":"setTickContext","url":"classes/BarNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":283,"kind":2048,"name":"getDuration","url":"classes/BarNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":284,"kind":2048,"name":"isDotted","url":"classes/BarNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":285,"kind":2048,"name":"hasStem","url":"classes/BarNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":286,"kind":2048,"name":"getNoteType","url":"classes/BarNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":287,"kind":2048,"name":"getBeam","url":"classes/BarNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":288,"kind":2048,"name":"checkBeam","url":"classes/BarNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":289,"kind":2048,"name":"hasBeam","url":"classes/BarNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":290,"kind":2048,"name":"setBeam","url":"classes/BarNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":291,"kind":2048,"name":"addModifier","url":"classes/BarNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":292,"kind":2048,"name":"getModifiersByType","url":"classes/BarNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":293,"kind":2048,"name":"getModifierStartXY","url":"classes/BarNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":294,"kind":2048,"name":"getRightParenthesisPx","url":"classes/BarNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":295,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/BarNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":296,"kind":2048,"name":"getFirstDotPx","url":"classes/BarNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":297,"kind":2048,"name":"getMetrics","url":"classes/BarNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":298,"kind":2048,"name":"getAbsoluteX","url":"classes/BarNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":299,"kind":2048,"name":"getStemDirection","url":"classes/BarNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":300,"kind":2048,"name":"getStemExtents","url":"classes/BarNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":301,"kind":2048,"name":"getTieRightX","url":"classes/BarNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":302,"kind":2048,"name":"getTieLeftX","url":"classes/BarNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":303,"kind":2048,"name":"getKeys","url":"classes/BarNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":304,"kind":2048,"name":"getKeyProps","url":"classes/BarNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":305,"kind":2048,"name":"reset","url":"classes/BarNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":306,"kind":2048,"name":"getTicks","url":"classes/BarNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":307,"kind":2048,"name":"setIgnoreTicks","url":"classes/BarNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":308,"kind":2048,"name":"setWidth","url":"classes/BarNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":309,"kind":2048,"name":"getWidth","url":"classes/BarNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":310,"kind":2048,"name":"setXShift","url":"classes/BarNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":311,"kind":2048,"name":"getXShift","url":"classes/BarNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":312,"kind":2048,"name":"getX","url":"classes/BarNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":313,"kind":2048,"name":"getFormatterMetrics","url":"classes/BarNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":314,"kind":2048,"name":"getCenterXShift","url":"classes/BarNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":315,"kind":2048,"name":"setCenterXShift","url":"classes/BarNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":316,"kind":2048,"name":"isCenterAligned","url":"classes/BarNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":317,"kind":2048,"name":"setCenterAlignment","url":"classes/BarNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":318,"kind":2048,"name":"getTuplet","url":"classes/BarNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":319,"kind":2048,"name":"getTupletStack","url":"classes/BarNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":320,"kind":2048,"name":"resetTuplet","url":"classes/BarNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":321,"kind":2048,"name":"setTuplet","url":"classes/BarNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":322,"kind":2048,"name":"getModifiers","url":"classes/BarNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":323,"kind":2048,"name":"checkTickContext","url":"classes/BarNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":324,"kind":262144,"name":"preFormatted","url":"classes/BarNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":325,"kind":2048,"name":"postFormat","url":"classes/BarNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":326,"kind":262144,"name":"postFormatted","url":"classes/BarNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":327,"kind":2048,"name":"getIntrinsicTicks","url":"classes/BarNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":328,"kind":2048,"name":"setIntrinsicTicks","url":"classes/BarNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":329,"kind":2048,"name":"getTickMultiplier","url":"classes/BarNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":330,"kind":2048,"name":"applyTickMultiplier","url":"classes/BarNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":331,"kind":2048,"name":"setDuration","url":"classes/BarNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":332,"kind":2048,"name":"setModifierContext","url":"classes/BarNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":333,"kind":2048,"name":"getModifierContext","url":"classes/BarNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":334,"kind":2048,"name":"checkModifierContext","url":"classes/BarNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":335,"kind":2048,"name":"addChildElement","url":"classes/BarNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":336,"kind":2048,"name":"getCategory","url":"classes/BarNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":337,"kind":2048,"name":"setStyle","url":"classes/BarNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":338,"kind":2048,"name":"setGroupStyle","url":"classes/BarNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":339,"kind":2048,"name":"getStyle","url":"classes/BarNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":340,"kind":2048,"name":"applyStyle","url":"classes/BarNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":341,"kind":2048,"name":"restoreStyle","url":"classes/BarNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":342,"kind":2048,"name":"drawWithStyle","url":"classes/BarNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":343,"kind":2048,"name":"hasClass","url":"classes/BarNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":344,"kind":2048,"name":"addClass","url":"classes/BarNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":345,"kind":2048,"name":"removeClass","url":"classes/BarNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":346,"kind":2048,"name":"onRegister","url":"classes/BarNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":347,"kind":2048,"name":"isRendered","url":"classes/BarNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":348,"kind":2048,"name":"setRendered","url":"classes/BarNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":349,"kind":2048,"name":"getAttributes","url":"classes/BarNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":350,"kind":2048,"name":"getAttribute","url":"classes/BarNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":351,"kind":2048,"name":"setAttribute","url":"classes/BarNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":352,"kind":2048,"name":"getBoundingBox","url":"classes/BarNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":353,"kind":2048,"name":"getContext","url":"classes/BarNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":354,"kind":2048,"name":"setContext","url":"classes/BarNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":355,"kind":2048,"name":"checkContext","url":"classes/BarNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":356,"kind":262144,"name":"font","url":"classes/BarNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":357,"kind":2048,"name":"setFont","url":"classes/BarNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":358,"kind":2048,"name":"getFont","url":"classes/BarNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":359,"kind":2048,"name":"resetFont","url":"classes/BarNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":360,"kind":262144,"name":"fontInfo","url":"classes/BarNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":361,"kind":2048,"name":"setFontSize","url":"classes/BarNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":362,"kind":2048,"name":"getFontSize","url":"classes/BarNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":363,"kind":262144,"name":"fontSize","url":"classes/BarNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":364,"kind":262144,"name":"fontSizeInPoints","url":"classes/BarNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":365,"kind":262144,"name":"fontSizeInPixels","url":"classes/BarNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":366,"kind":262144,"name":"fontStyle","url":"classes/BarNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":367,"kind":262144,"name":"fontWeight","url":"classes/BarNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":368,"kind":32,"name":"BEAM_LEFT","url":"modules.html#BEAM_LEFT","classes":"tsd-kind-variable"},{"id":369,"kind":32,"name":"BEAM_RIGHT","url":"modules.html#BEAM_RIGHT","classes":"tsd-kind-variable"},{"id":370,"kind":32,"name":"BEAM_BOTH","url":"modules.html#BEAM_BOTH","classes":"tsd-kind-variable"},{"id":371,"kind":4194304,"name":"PartialBeamDirection","url":"modules.html#PartialBeamDirection","classes":"tsd-kind-type-alias"},{"id":372,"kind":128,"name":"Beam","url":"classes/Beam.html","classes":"tsd-kind-class"},{"id":373,"kind":262144,"name":"CATEGORY","url":"classes/Beam.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Beam"},{"id":374,"kind":2048,"name":"getDefaultBeamGroups","url":"classes/Beam.html#getDefaultBeamGroups","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Beam"},{"id":375,"kind":2048,"name":"applyAndGetBeams","url":"classes/Beam.html#applyAndGetBeams","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Beam"},{"id":376,"kind":2048,"name":"generateBeams","url":"classes/Beam.html#generateBeams","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Beam"},{"id":377,"kind":1024,"name":"TEXT_FONT","url":"classes/Beam.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Beam"},{"id":378,"kind":512,"name":"constructor","url":"classes/Beam.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Beam"},{"id":379,"kind":1024,"name":"render_options","url":"classes/Beam.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Beam"},{"id":380,"kind":65536,"name":"__type","url":"classes/Beam.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Beam"},{"id":381,"kind":1024,"name":"flat_beam_offset","url":"classes/Beam.html#__type.flat_beam_offset","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":382,"kind":1024,"name":"flat_beams","url":"classes/Beam.html#__type.flat_beams","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":383,"kind":1024,"name":"secondary_break_ticks","url":"classes/Beam.html#__type.secondary_break_ticks","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":384,"kind":1024,"name":"show_stemlets","url":"classes/Beam.html#__type.show_stemlets","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":385,"kind":1024,"name":"beam_width","url":"classes/Beam.html#__type.beam_width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":386,"kind":1024,"name":"max_slope","url":"classes/Beam.html#__type.max_slope","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":387,"kind":1024,"name":"min_slope","url":"classes/Beam.html#__type.min_slope","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":388,"kind":1024,"name":"slope_iterations","url":"classes/Beam.html#__type.slope_iterations","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":389,"kind":1024,"name":"slope_cost","url":"classes/Beam.html#__type.slope_cost","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":390,"kind":1024,"name":"stemlet_extension","url":"classes/Beam.html#__type.stemlet_extension","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":391,"kind":1024,"name":"partial_beam_length","url":"classes/Beam.html#__type.partial_beam_length","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":392,"kind":1024,"name":"min_flat_beam_offset","url":"classes/Beam.html#__type.min_flat_beam_offset","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":393,"kind":1024,"name":"notes","url":"classes/Beam.html#notes","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Beam"},{"id":394,"kind":1024,"name":"postFormatted","url":"classes/Beam.html#postFormatted","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Beam"},{"id":395,"kind":1024,"name":"slope","url":"classes/Beam.html#slope","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Beam"},{"id":396,"kind":2048,"name":"getStemDirection","url":"classes/Beam.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":397,"kind":2048,"name":"getNotes","url":"classes/Beam.html#getNotes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":398,"kind":2048,"name":"getBeamCount","url":"classes/Beam.html#getBeamCount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":399,"kind":2048,"name":"breakSecondaryAt","url":"classes/Beam.html#breakSecondaryAt","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":400,"kind":2048,"name":"setPartialBeamSideAt","url":"classes/Beam.html#setPartialBeamSideAt","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":401,"kind":2048,"name":"unsetPartialBeamSideAt","url":"classes/Beam.html#unsetPartialBeamSideAt","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":402,"kind":2048,"name":"getSlopeY","url":"classes/Beam.html#getSlopeY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":403,"kind":2048,"name":"calculateSlope","url":"classes/Beam.html#calculateSlope","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":404,"kind":2048,"name":"calculateFlatSlope","url":"classes/Beam.html#calculateFlatSlope","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":405,"kind":2048,"name":"getBeamYToDraw","url":"classes/Beam.html#getBeamYToDraw","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":406,"kind":2048,"name":"applyStemExtensions","url":"classes/Beam.html#applyStemExtensions","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":407,"kind":2048,"name":"lookupBeamDirection","url":"classes/Beam.html#lookupBeamDirection","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":408,"kind":2048,"name":"getBeamLines","url":"classes/Beam.html#getBeamLines","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":409,"kind":2048,"name":"preFormat","url":"classes/Beam.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":410,"kind":2048,"name":"postFormat","url":"classes/Beam.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":411,"kind":2048,"name":"draw","url":"classes/Beam.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Beam"},{"id":412,"kind":2048,"name":"addChildElement","url":"classes/Beam.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":413,"kind":2048,"name":"getCategory","url":"classes/Beam.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":414,"kind":2048,"name":"setStyle","url":"classes/Beam.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":415,"kind":2048,"name":"setGroupStyle","url":"classes/Beam.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":416,"kind":2048,"name":"getStyle","url":"classes/Beam.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":417,"kind":2048,"name":"applyStyle","url":"classes/Beam.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":418,"kind":2048,"name":"restoreStyle","url":"classes/Beam.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":419,"kind":2048,"name":"drawWithStyle","url":"classes/Beam.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":420,"kind":2048,"name":"hasClass","url":"classes/Beam.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":421,"kind":2048,"name":"addClass","url":"classes/Beam.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":422,"kind":2048,"name":"removeClass","url":"classes/Beam.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":423,"kind":2048,"name":"onRegister","url":"classes/Beam.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":424,"kind":2048,"name":"isRendered","url":"classes/Beam.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":425,"kind":2048,"name":"setRendered","url":"classes/Beam.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":426,"kind":2048,"name":"getAttributes","url":"classes/Beam.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":427,"kind":2048,"name":"getAttribute","url":"classes/Beam.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":428,"kind":2048,"name":"setAttribute","url":"classes/Beam.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":429,"kind":2048,"name":"getBoundingBox","url":"classes/Beam.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":430,"kind":2048,"name":"getContext","url":"classes/Beam.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":431,"kind":2048,"name":"setContext","url":"classes/Beam.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":432,"kind":2048,"name":"checkContext","url":"classes/Beam.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":433,"kind":262144,"name":"font","url":"classes/Beam.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":434,"kind":2048,"name":"setFont","url":"classes/Beam.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":435,"kind":2048,"name":"getFont","url":"classes/Beam.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":436,"kind":2048,"name":"resetFont","url":"classes/Beam.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":437,"kind":262144,"name":"fontInfo","url":"classes/Beam.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":438,"kind":2048,"name":"setFontSize","url":"classes/Beam.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":439,"kind":2048,"name":"getFontSize","url":"classes/Beam.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":440,"kind":262144,"name":"fontSize","url":"classes/Beam.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":441,"kind":262144,"name":"fontSizeInPoints","url":"classes/Beam.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":442,"kind":262144,"name":"fontSizeInPixels","url":"classes/Beam.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":443,"kind":262144,"name":"fontStyle","url":"classes/Beam.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":444,"kind":262144,"name":"fontWeight","url":"classes/Beam.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":445,"kind":256,"name":"BendPhrase","url":"interfaces/BendPhrase.html","classes":"tsd-kind-interface"},{"id":446,"kind":1024,"name":"x","url":"interfaces/BendPhrase.html#x","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"BendPhrase"},{"id":447,"kind":1024,"name":"type","url":"interfaces/BendPhrase.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"BendPhrase"},{"id":448,"kind":1024,"name":"text","url":"interfaces/BendPhrase.html#text","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"BendPhrase"},{"id":449,"kind":1024,"name":"width","url":"interfaces/BendPhrase.html#width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"BendPhrase"},{"id":450,"kind":1024,"name":"draw_width","url":"interfaces/BendPhrase.html#draw_width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"BendPhrase"},{"id":451,"kind":128,"name":"Bend","url":"classes/Bend.html","classes":"tsd-kind-class"},{"id":452,"kind":262144,"name":"CATEGORY","url":"classes/Bend.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Bend"},{"id":453,"kind":262144,"name":"UP","url":"classes/Bend.html#UP","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Bend"},{"id":454,"kind":262144,"name":"DOWN","url":"classes/Bend.html#DOWN","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Bend"},{"id":455,"kind":1024,"name":"TEXT_FONT","url":"classes/Bend.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Bend"},{"id":456,"kind":2048,"name":"format","url":"classes/Bend.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Bend"},{"id":457,"kind":262144,"name":"Position","url":"classes/Bend.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Bend"},{"id":458,"kind":262144,"name":"PositionString","url":"classes/Bend.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Bend"},{"id":459,"kind":512,"name":"constructor","url":"classes/Bend.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Bend"},{"id":460,"kind":1024,"name":"render_options","url":"classes/Bend.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Bend"},{"id":461,"kind":65536,"name":"__type","url":"classes/Bend.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Bend"},{"id":462,"kind":1024,"name":"line_width","url":"classes/Bend.html#__type.line_width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Bend.__type"},{"id":463,"kind":1024,"name":"release_width","url":"classes/Bend.html#__type.release_width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Bend.__type"},{"id":464,"kind":1024,"name":"bend_width","url":"classes/Bend.html#__type.bend_width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Bend.__type"},{"id":465,"kind":1024,"name":"line_style","url":"classes/Bend.html#__type.line_style","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Bend.__type"},{"id":466,"kind":2048,"name":"setXShift","url":"classes/Bend.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Bend"},{"id":467,"kind":2048,"name":"setTap","url":"classes/Bend.html#setTap","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Bend"},{"id":468,"kind":2048,"name":"getText","url":"classes/Bend.html#getText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Bend"},{"id":469,"kind":2048,"name":"getTextHeight","url":"classes/Bend.html#getTextHeight","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Bend"},{"id":470,"kind":2048,"name":"draw","url":"classes/Bend.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Bend"},{"id":471,"kind":2048,"name":"getWidth","url":"classes/Bend.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":472,"kind":2048,"name":"setWidth","url":"classes/Bend.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":473,"kind":2048,"name":"getNote","url":"classes/Bend.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":474,"kind":2048,"name":"checkAttachedNote","url":"classes/Bend.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":475,"kind":2048,"name":"setNote","url":"classes/Bend.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":476,"kind":2048,"name":"getIndex","url":"classes/Bend.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":477,"kind":2048,"name":"checkIndex","url":"classes/Bend.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":478,"kind":2048,"name":"setIndex","url":"classes/Bend.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":479,"kind":2048,"name":"getModifierContext","url":"classes/Bend.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":480,"kind":2048,"name":"checkModifierContext","url":"classes/Bend.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":481,"kind":2048,"name":"setModifierContext","url":"classes/Bend.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":482,"kind":2048,"name":"getPosition","url":"classes/Bend.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":483,"kind":2048,"name":"setPosition","url":"classes/Bend.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":484,"kind":2048,"name":"setTextLine","url":"classes/Bend.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":485,"kind":2048,"name":"setYShift","url":"classes/Bend.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":486,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/Bend.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":487,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/Bend.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":488,"kind":2048,"name":"getXShift","url":"classes/Bend.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":489,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/Bend.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":490,"kind":2048,"name":"addChildElement","url":"classes/Bend.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":491,"kind":2048,"name":"getCategory","url":"classes/Bend.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":492,"kind":2048,"name":"setStyle","url":"classes/Bend.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":493,"kind":2048,"name":"setGroupStyle","url":"classes/Bend.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":494,"kind":2048,"name":"getStyle","url":"classes/Bend.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":495,"kind":2048,"name":"applyStyle","url":"classes/Bend.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":496,"kind":2048,"name":"restoreStyle","url":"classes/Bend.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":497,"kind":2048,"name":"drawWithStyle","url":"classes/Bend.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":498,"kind":2048,"name":"hasClass","url":"classes/Bend.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":499,"kind":2048,"name":"addClass","url":"classes/Bend.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":500,"kind":2048,"name":"removeClass","url":"classes/Bend.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":501,"kind":2048,"name":"onRegister","url":"classes/Bend.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":502,"kind":2048,"name":"isRendered","url":"classes/Bend.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":503,"kind":2048,"name":"setRendered","url":"classes/Bend.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":504,"kind":2048,"name":"getAttributes","url":"classes/Bend.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":505,"kind":2048,"name":"getAttribute","url":"classes/Bend.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":506,"kind":2048,"name":"setAttribute","url":"classes/Bend.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":507,"kind":2048,"name":"getBoundingBox","url":"classes/Bend.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":508,"kind":2048,"name":"getContext","url":"classes/Bend.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":509,"kind":2048,"name":"setContext","url":"classes/Bend.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":510,"kind":2048,"name":"checkContext","url":"classes/Bend.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":511,"kind":262144,"name":"font","url":"classes/Bend.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":512,"kind":2048,"name":"setFont","url":"classes/Bend.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":513,"kind":2048,"name":"getFont","url":"classes/Bend.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":514,"kind":2048,"name":"resetFont","url":"classes/Bend.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":515,"kind":262144,"name":"fontInfo","url":"classes/Bend.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":516,"kind":2048,"name":"setFontSize","url":"classes/Bend.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":517,"kind":2048,"name":"getFontSize","url":"classes/Bend.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":518,"kind":262144,"name":"fontSize","url":"classes/Bend.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":519,"kind":262144,"name":"fontSizeInPoints","url":"classes/Bend.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":520,"kind":262144,"name":"fontSizeInPixels","url":"classes/Bend.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":521,"kind":262144,"name":"fontStyle","url":"classes/Bend.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":522,"kind":262144,"name":"fontWeight","url":"classes/Bend.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":523,"kind":256,"name":"Bounds","url":"interfaces/Bounds.html","classes":"tsd-kind-interface"},{"id":524,"kind":1024,"name":"x","url":"interfaces/Bounds.html#x","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Bounds"},{"id":525,"kind":1024,"name":"y","url":"interfaces/Bounds.html#y","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Bounds"},{"id":526,"kind":1024,"name":"w","url":"interfaces/Bounds.html#w","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Bounds"},{"id":527,"kind":1024,"name":"h","url":"interfaces/Bounds.html#h","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Bounds"},{"id":528,"kind":128,"name":"BoundingBox","url":"classes/BoundingBox.html","classes":"tsd-kind-class"},{"id":529,"kind":2048,"name":"copy","url":"classes/BoundingBox.html#copy","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"BoundingBox"},{"id":530,"kind":512,"name":"constructor","url":"classes/BoundingBox.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"BoundingBox"},{"id":531,"kind":1024,"name":"x","url":"classes/BoundingBox.html#x","classes":"tsd-kind-property tsd-parent-kind-class","parent":"BoundingBox"},{"id":532,"kind":1024,"name":"y","url":"classes/BoundingBox.html#y","classes":"tsd-kind-property tsd-parent-kind-class","parent":"BoundingBox"},{"id":533,"kind":1024,"name":"w","url":"classes/BoundingBox.html#w","classes":"tsd-kind-property tsd-parent-kind-class","parent":"BoundingBox"},{"id":534,"kind":1024,"name":"h","url":"classes/BoundingBox.html#h","classes":"tsd-kind-property tsd-parent-kind-class","parent":"BoundingBox"},{"id":535,"kind":2048,"name":"getX","url":"classes/BoundingBox.html#getX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBox"},{"id":536,"kind":2048,"name":"getY","url":"classes/BoundingBox.html#getY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBox"},{"id":537,"kind":2048,"name":"getW","url":"classes/BoundingBox.html#getW","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBox"},{"id":538,"kind":2048,"name":"getH","url":"classes/BoundingBox.html#getH","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBox"},{"id":539,"kind":2048,"name":"setX","url":"classes/BoundingBox.html#setX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBox"},{"id":540,"kind":2048,"name":"setY","url":"classes/BoundingBox.html#setY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBox"},{"id":541,"kind":2048,"name":"setW","url":"classes/BoundingBox.html#setW","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBox"},{"id":542,"kind":2048,"name":"setH","url":"classes/BoundingBox.html#setH","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBox"},{"id":543,"kind":2048,"name":"move","url":"classes/BoundingBox.html#move","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBox"},{"id":544,"kind":2048,"name":"clone","url":"classes/BoundingBox.html#clone","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBox"},{"id":545,"kind":2048,"name":"mergeWith","url":"classes/BoundingBox.html#mergeWith","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBox"},{"id":546,"kind":128,"name":"BoundingBoxComputation","url":"classes/BoundingBoxComputation.html","classes":"tsd-kind-class"},{"id":547,"kind":512,"name":"constructor","url":"classes/BoundingBoxComputation.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"BoundingBoxComputation"},{"id":548,"kind":2048,"name":"getX1","url":"classes/BoundingBoxComputation.html#getX1","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBoxComputation"},{"id":549,"kind":2048,"name":"getY1","url":"classes/BoundingBoxComputation.html#getY1","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBoxComputation"},{"id":550,"kind":2048,"name":"width","url":"classes/BoundingBoxComputation.html#width","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBoxComputation"},{"id":551,"kind":2048,"name":"height","url":"classes/BoundingBoxComputation.html#height","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBoxComputation"},{"id":552,"kind":2048,"name":"addPoint","url":"classes/BoundingBoxComputation.html#addPoint","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBoxComputation"},{"id":553,"kind":2048,"name":"addX","url":"classes/BoundingBoxComputation.html#addX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBoxComputation"},{"id":554,"kind":2048,"name":"addY","url":"classes/BoundingBoxComputation.html#addY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBoxComputation"},{"id":555,"kind":2048,"name":"addQuadraticCurve","url":"classes/BoundingBoxComputation.html#addQuadraticCurve","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBoxComputation"},{"id":556,"kind":2048,"name":"addBezierCurve","url":"classes/BoundingBoxComputation.html#addBezierCurve","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBoxComputation"},{"id":557,"kind":128,"name":"CanvasContext","url":"classes/CanvasContext.html","classes":"tsd-kind-class"},{"id":558,"kind":262144,"name":"WIDTH","url":"classes/CanvasContext.html#WIDTH","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"CanvasContext"},{"id":559,"kind":262144,"name":"HEIGHT","url":"classes/CanvasContext.html#HEIGHT","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"CanvasContext"},{"id":560,"kind":262144,"name":"CANVAS_BROWSER_SIZE_LIMIT","url":"classes/CanvasContext.html#CANVAS_BROWSER_SIZE_LIMIT","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"CanvasContext"},{"id":561,"kind":2048,"name":"sanitizeCanvasDims","url":"classes/CanvasContext.html#sanitizeCanvasDims","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"CanvasContext"},{"id":562,"kind":262144,"name":"CATEGORY","url":"classes/CanvasContext.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"CanvasContext"},{"id":563,"kind":512,"name":"constructor","url":"classes/CanvasContext.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":564,"kind":1024,"name":"context2D","url":"classes/CanvasContext.html#context2D","classes":"tsd-kind-property tsd-parent-kind-class","parent":"CanvasContext"},{"id":565,"kind":1024,"name":"canvas","url":"classes/CanvasContext.html#canvas","classes":"tsd-kind-property tsd-parent-kind-class","parent":"CanvasContext"},{"id":566,"kind":1024,"name":"textHeight","url":"classes/CanvasContext.html#textHeight","classes":"tsd-kind-property tsd-parent-kind-class","parent":"CanvasContext"},{"id":567,"kind":2048,"name":"clear","url":"classes/CanvasContext.html#clear","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":568,"kind":2048,"name":"openGroup","url":"classes/CanvasContext.html#openGroup","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":569,"kind":2048,"name":"closeGroup","url":"classes/CanvasContext.html#closeGroup","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":570,"kind":2048,"name":"add","url":"classes/CanvasContext.html#add","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":571,"kind":2048,"name":"setFillStyle","url":"classes/CanvasContext.html#setFillStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":572,"kind":2048,"name":"setBackgroundFillStyle","url":"classes/CanvasContext.html#setBackgroundFillStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":573,"kind":2048,"name":"setStrokeStyle","url":"classes/CanvasContext.html#setStrokeStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":574,"kind":2048,"name":"setShadowColor","url":"classes/CanvasContext.html#setShadowColor","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":575,"kind":2048,"name":"setShadowBlur","url":"classes/CanvasContext.html#setShadowBlur","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":576,"kind":2048,"name":"setLineWidth","url":"classes/CanvasContext.html#setLineWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":577,"kind":2048,"name":"setLineCap","url":"classes/CanvasContext.html#setLineCap","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":578,"kind":2048,"name":"setLineDash","url":"classes/CanvasContext.html#setLineDash","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":579,"kind":2048,"name":"scale","url":"classes/CanvasContext.html#scale","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":580,"kind":2048,"name":"resize","url":"classes/CanvasContext.html#resize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":581,"kind":2048,"name":"rect","url":"classes/CanvasContext.html#rect","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":582,"kind":2048,"name":"fillRect","url":"classes/CanvasContext.html#fillRect","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":583,"kind":2048,"name":"clearRect","url":"classes/CanvasContext.html#clearRect","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":584,"kind":2048,"name":"beginPath","url":"classes/CanvasContext.html#beginPath","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":585,"kind":2048,"name":"moveTo","url":"classes/CanvasContext.html#moveTo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":586,"kind":2048,"name":"lineTo","url":"classes/CanvasContext.html#lineTo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":587,"kind":2048,"name":"bezierCurveTo","url":"classes/CanvasContext.html#bezierCurveTo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":588,"kind":2048,"name":"quadraticCurveTo","url":"classes/CanvasContext.html#quadraticCurveTo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":589,"kind":2048,"name":"arc","url":"classes/CanvasContext.html#arc","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":590,"kind":2048,"name":"fill","url":"classes/CanvasContext.html#fill","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":591,"kind":2048,"name":"stroke","url":"classes/CanvasContext.html#stroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":592,"kind":2048,"name":"closePath","url":"classes/CanvasContext.html#closePath","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":593,"kind":2048,"name":"measureText","url":"classes/CanvasContext.html#measureText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":594,"kind":2048,"name":"fillText","url":"classes/CanvasContext.html#fillText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":595,"kind":2048,"name":"save","url":"classes/CanvasContext.html#save","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":596,"kind":2048,"name":"restore","url":"classes/CanvasContext.html#restore","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":597,"kind":262144,"name":"fillStyle","url":"classes/CanvasContext.html#fillStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":598,"kind":262144,"name":"strokeStyle","url":"classes/CanvasContext.html#strokeStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":599,"kind":2048,"name":"setFont","url":"classes/CanvasContext.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":600,"kind":2048,"name":"getFont","url":"classes/CanvasContext.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":601,"kind":262144,"name":"font","url":"classes/CanvasContext.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"CanvasContext"},{"id":602,"kind":2048,"name":"setRawFont","url":"classes/CanvasContext.html#setRawFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"CanvasContext"},{"id":603,"kind":256,"name":"ChordSymbolBlock","url":"interfaces/ChordSymbolBlock.html","classes":"tsd-kind-interface"},{"id":604,"kind":1024,"name":"text","url":"interfaces/ChordSymbolBlock.html#text","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ChordSymbolBlock"},{"id":605,"kind":1024,"name":"symbolType","url":"interfaces/ChordSymbolBlock.html#symbolType","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ChordSymbolBlock"},{"id":606,"kind":1024,"name":"symbolModifier","url":"interfaces/ChordSymbolBlock.html#symbolModifier","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ChordSymbolBlock"},{"id":607,"kind":1024,"name":"xShift","url":"interfaces/ChordSymbolBlock.html#xShift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ChordSymbolBlock"},{"id":608,"kind":1024,"name":"yShift","url":"interfaces/ChordSymbolBlock.html#yShift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ChordSymbolBlock"},{"id":609,"kind":1024,"name":"vAlign","url":"interfaces/ChordSymbolBlock.html#vAlign","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ChordSymbolBlock"},{"id":610,"kind":1024,"name":"width","url":"interfaces/ChordSymbolBlock.html#width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ChordSymbolBlock"},{"id":611,"kind":1024,"name":"glyph","url":"interfaces/ChordSymbolBlock.html#glyph","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ChordSymbolBlock"},{"id":612,"kind":8,"name":"ChordSymbolHorizontalJustify","url":"enums/ChordSymbolHorizontalJustify.html","classes":"tsd-kind-enum"},{"id":613,"kind":16,"name":"LEFT","url":"enums/ChordSymbolHorizontalJustify.html#LEFT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ChordSymbolHorizontalJustify"},{"id":614,"kind":16,"name":"CENTER","url":"enums/ChordSymbolHorizontalJustify.html#CENTER","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ChordSymbolHorizontalJustify"},{"id":615,"kind":16,"name":"RIGHT","url":"enums/ChordSymbolHorizontalJustify.html#RIGHT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ChordSymbolHorizontalJustify"},{"id":616,"kind":16,"name":"CENTER_STEM","url":"enums/ChordSymbolHorizontalJustify.html#CENTER_STEM","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ChordSymbolHorizontalJustify"},{"id":617,"kind":8,"name":"ChordSymbolVerticalJustify","url":"enums/ChordSymbolVerticalJustify.html","classes":"tsd-kind-enum"},{"id":618,"kind":16,"name":"TOP","url":"enums/ChordSymbolVerticalJustify.html#TOP","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ChordSymbolVerticalJustify"},{"id":619,"kind":16,"name":"BOTTOM","url":"enums/ChordSymbolVerticalJustify.html#BOTTOM","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ChordSymbolVerticalJustify"},{"id":620,"kind":8,"name":"SymbolTypes","url":"enums/SymbolTypes.html","classes":"tsd-kind-enum"},{"id":621,"kind":16,"name":"GLYPH","url":"enums/SymbolTypes.html#GLYPH","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"SymbolTypes"},{"id":622,"kind":16,"name":"TEXT","url":"enums/SymbolTypes.html#TEXT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"SymbolTypes"},{"id":623,"kind":16,"name":"LINE","url":"enums/SymbolTypes.html#LINE","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"SymbolTypes"},{"id":624,"kind":8,"name":"SymbolModifiers","url":"enums/SymbolModifiers.html","classes":"tsd-kind-enum"},{"id":625,"kind":16,"name":"NONE","url":"enums/SymbolModifiers.html#NONE","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"SymbolModifiers"},{"id":626,"kind":16,"name":"SUBSCRIPT","url":"enums/SymbolModifiers.html#SUBSCRIPT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"SymbolModifiers"},{"id":627,"kind":16,"name":"SUPERSCRIPT","url":"enums/SymbolModifiers.html#SUPERSCRIPT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"SymbolModifiers"},{"id":628,"kind":128,"name":"ChordSymbol","url":"classes/ChordSymbol.html","classes":"tsd-kind-class"},{"id":629,"kind":1024,"name":"DEBUG","url":"classes/ChordSymbol.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":630,"kind":262144,"name":"CATEGORY","url":"classes/ChordSymbol.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"ChordSymbol"},{"id":631,"kind":1024,"name":"HorizontalJustify","url":"classes/ChordSymbol.html#HorizontalJustify","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":632,"kind":1024,"name":"HorizontalJustifyString","url":"classes/ChordSymbol.html#HorizontalJustifyString","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":633,"kind":1024,"name":"VerticalJustify","url":"classes/ChordSymbol.html#VerticalJustify","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":634,"kind":1024,"name":"VerticalJustifyString","url":"classes/ChordSymbol.html#VerticalJustifyString","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":635,"kind":262144,"name":"superSubRatio","url":"classes/ChordSymbol.html#superSubRatio","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":636,"kind":262144,"name":"NO_TEXT_FORMAT","url":"classes/ChordSymbol.html#NO_TEXT_FORMAT","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":637,"kind":2048,"name":"getMetricForGlyph","url":"classes/ChordSymbol.html#getMetricForGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":638,"kind":262144,"name":"engravingFontResolution","url":"classes/ChordSymbol.html#engravingFontResolution","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":639,"kind":262144,"name":"spacingBetweenBlocks","url":"classes/ChordSymbol.html#spacingBetweenBlocks","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":640,"kind":2048,"name":"getWidthForGlyph","url":"classes/ChordSymbol.html#getWidthForGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":641,"kind":2048,"name":"getYShiftForGlyph","url":"classes/ChordSymbol.html#getYShiftForGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":642,"kind":2048,"name":"getXShiftForGlyph","url":"classes/ChordSymbol.html#getXShiftForGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":643,"kind":262144,"name":"superscriptOffset","url":"classes/ChordSymbol.html#superscriptOffset-1","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":644,"kind":262144,"name":"subscriptOffset","url":"classes/ChordSymbol.html#subscriptOffset-1","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":645,"kind":262144,"name":"kerningOffset","url":"classes/ChordSymbol.html#kerningOffset","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":646,"kind":1024,"name":"glyphs","url":"classes/ChordSymbol.html#glyphs","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":647,"kind":1024,"name":"symbolTypes","url":"classes/ChordSymbol.html#symbolTypes","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":648,"kind":1024,"name":"symbolModifiers","url":"classes/ChordSymbol.html#symbolModifiers","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":649,"kind":262144,"name":"metrics","url":"classes/ChordSymbol.html#metrics","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":650,"kind":262144,"name":"lowerKerningText","url":"classes/ChordSymbol.html#lowerKerningText","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":651,"kind":262144,"name":"upperKerningText","url":"classes/ChordSymbol.html#upperKerningText","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":652,"kind":2048,"name":"isSuperscript","url":"classes/ChordSymbol.html#isSuperscript","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":653,"kind":2048,"name":"isSubscript","url":"classes/ChordSymbol.html#isSubscript","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":654,"kind":262144,"name":"minPadding","url":"classes/ChordSymbol.html#minPadding","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":655,"kind":2048,"name":"format","url":"classes/ChordSymbol.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":656,"kind":262144,"name":"TEXT_FONT","url":"classes/ChordSymbol.html#TEXT_FONT","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"ChordSymbol"},{"id":657,"kind":262144,"name":"Position","url":"classes/ChordSymbol.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"ChordSymbol"},{"id":658,"kind":262144,"name":"PositionString","url":"classes/ChordSymbol.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"ChordSymbol"},{"id":659,"kind":512,"name":"constructor","url":"classes/ChordSymbol.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"ChordSymbol"},{"id":660,"kind":262144,"name":"superscriptOffset","url":"classes/ChordSymbol.html#superscriptOffset","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"ChordSymbol"},{"id":661,"kind":262144,"name":"subscriptOffset","url":"classes/ChordSymbol.html#subscriptOffset","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"ChordSymbol"},{"id":662,"kind":2048,"name":"setReportWidth","url":"classes/ChordSymbol.html#setReportWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":663,"kind":2048,"name":"getReportWidth","url":"classes/ChordSymbol.html#getReportWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":664,"kind":2048,"name":"updateOverBarAdjustments","url":"classes/ChordSymbol.html#updateOverBarAdjustments","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":665,"kind":2048,"name":"updateKerningAdjustments","url":"classes/ChordSymbol.html#updateKerningAdjustments","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":666,"kind":2048,"name":"getKerningAdjustment","url":"classes/ChordSymbol.html#getKerningAdjustment","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":667,"kind":2048,"name":"getSymbolBlock","url":"classes/ChordSymbol.html#getSymbolBlock","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":668,"kind":2048,"name":"addSymbolBlock","url":"classes/ChordSymbol.html#addSymbolBlock","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":669,"kind":2048,"name":"addText","url":"classes/ChordSymbol.html#addText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":670,"kind":2048,"name":"addTextSuperscript","url":"classes/ChordSymbol.html#addTextSuperscript","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":671,"kind":2048,"name":"addTextSubscript","url":"classes/ChordSymbol.html#addTextSubscript","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":672,"kind":2048,"name":"addGlyphSuperscript","url":"classes/ChordSymbol.html#addGlyphSuperscript","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":673,"kind":2048,"name":"addGlyph","url":"classes/ChordSymbol.html#addGlyph","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":674,"kind":2048,"name":"addGlyphOrText","url":"classes/ChordSymbol.html#addGlyphOrText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":675,"kind":2048,"name":"addLine","url":"classes/ChordSymbol.html#addLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":676,"kind":2048,"name":"setFont","url":"classes/ChordSymbol.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"ChordSymbol"},{"id":677,"kind":2048,"name":"setEnableKerning","url":"classes/ChordSymbol.html#setEnableKerning","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":678,"kind":2048,"name":"setVertical","url":"classes/ChordSymbol.html#setVertical","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":679,"kind":2048,"name":"getVertical","url":"classes/ChordSymbol.html#getVertical","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":680,"kind":2048,"name":"setHorizontal","url":"classes/ChordSymbol.html#setHorizontal","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":681,"kind":2048,"name":"getHorizontal","url":"classes/ChordSymbol.html#getHorizontal","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":682,"kind":2048,"name":"getWidth","url":"classes/ChordSymbol.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"ChordSymbol"},{"id":683,"kind":2048,"name":"getYOffsetForText","url":"classes/ChordSymbol.html#getYOffsetForText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":684,"kind":2048,"name":"draw","url":"classes/ChordSymbol.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"ChordSymbol"},{"id":685,"kind":2048,"name":"setWidth","url":"classes/ChordSymbol.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":686,"kind":2048,"name":"getNote","url":"classes/ChordSymbol.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":687,"kind":2048,"name":"checkAttachedNote","url":"classes/ChordSymbol.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":688,"kind":2048,"name":"setNote","url":"classes/ChordSymbol.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":689,"kind":2048,"name":"getIndex","url":"classes/ChordSymbol.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":690,"kind":2048,"name":"checkIndex","url":"classes/ChordSymbol.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":691,"kind":2048,"name":"setIndex","url":"classes/ChordSymbol.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":692,"kind":2048,"name":"getModifierContext","url":"classes/ChordSymbol.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":693,"kind":2048,"name":"checkModifierContext","url":"classes/ChordSymbol.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":694,"kind":2048,"name":"setModifierContext","url":"classes/ChordSymbol.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":695,"kind":2048,"name":"getPosition","url":"classes/ChordSymbol.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":696,"kind":2048,"name":"setPosition","url":"classes/ChordSymbol.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":697,"kind":2048,"name":"setTextLine","url":"classes/ChordSymbol.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":698,"kind":2048,"name":"setYShift","url":"classes/ChordSymbol.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":699,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/ChordSymbol.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":700,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/ChordSymbol.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":701,"kind":2048,"name":"setXShift","url":"classes/ChordSymbol.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":702,"kind":2048,"name":"getXShift","url":"classes/ChordSymbol.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":703,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/ChordSymbol.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":704,"kind":2048,"name":"addChildElement","url":"classes/ChordSymbol.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":705,"kind":2048,"name":"getCategory","url":"classes/ChordSymbol.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":706,"kind":2048,"name":"setStyle","url":"classes/ChordSymbol.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":707,"kind":2048,"name":"setGroupStyle","url":"classes/ChordSymbol.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":708,"kind":2048,"name":"getStyle","url":"classes/ChordSymbol.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":709,"kind":2048,"name":"applyStyle","url":"classes/ChordSymbol.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":710,"kind":2048,"name":"restoreStyle","url":"classes/ChordSymbol.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":711,"kind":2048,"name":"drawWithStyle","url":"classes/ChordSymbol.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":712,"kind":2048,"name":"hasClass","url":"classes/ChordSymbol.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":713,"kind":2048,"name":"addClass","url":"classes/ChordSymbol.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":714,"kind":2048,"name":"removeClass","url":"classes/ChordSymbol.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":715,"kind":2048,"name":"onRegister","url":"classes/ChordSymbol.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":716,"kind":2048,"name":"isRendered","url":"classes/ChordSymbol.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":717,"kind":2048,"name":"setRendered","url":"classes/ChordSymbol.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":718,"kind":2048,"name":"getAttributes","url":"classes/ChordSymbol.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":719,"kind":2048,"name":"getAttribute","url":"classes/ChordSymbol.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":720,"kind":2048,"name":"setAttribute","url":"classes/ChordSymbol.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":721,"kind":2048,"name":"getBoundingBox","url":"classes/ChordSymbol.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":722,"kind":2048,"name":"getContext","url":"classes/ChordSymbol.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":723,"kind":2048,"name":"setContext","url":"classes/ChordSymbol.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":724,"kind":2048,"name":"checkContext","url":"classes/ChordSymbol.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":725,"kind":262144,"name":"font","url":"classes/ChordSymbol.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":726,"kind":2048,"name":"getFont","url":"classes/ChordSymbol.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":727,"kind":2048,"name":"resetFont","url":"classes/ChordSymbol.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":728,"kind":262144,"name":"fontInfo","url":"classes/ChordSymbol.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":729,"kind":2048,"name":"setFontSize","url":"classes/ChordSymbol.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":730,"kind":2048,"name":"getFontSize","url":"classes/ChordSymbol.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":731,"kind":262144,"name":"fontSize","url":"classes/ChordSymbol.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":732,"kind":262144,"name":"fontSizeInPoints","url":"classes/ChordSymbol.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":733,"kind":262144,"name":"fontSizeInPixels","url":"classes/ChordSymbol.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":734,"kind":262144,"name":"fontStyle","url":"classes/ChordSymbol.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":735,"kind":262144,"name":"fontWeight","url":"classes/ChordSymbol.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":736,"kind":256,"name":"ClefType","url":"interfaces/ClefType.html","classes":"tsd-kind-interface"},{"id":737,"kind":1024,"name":"point","url":"interfaces/ClefType.html#point","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ClefType"},{"id":738,"kind":1024,"name":"code","url":"interfaces/ClefType.html#code","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ClefType"},{"id":739,"kind":1024,"name":"line","url":"interfaces/ClefType.html#line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ClefType"},{"id":740,"kind":128,"name":"Clef","url":"classes/Clef.html","classes":"tsd-kind-class"},{"id":741,"kind":1024,"name":"DEBUG","url":"classes/Clef.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Clef"},{"id":742,"kind":262144,"name":"CATEGORY","url":"classes/Clef.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Clef"},{"id":743,"kind":262144,"name":"types","url":"classes/Clef.html#types","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Clef"},{"id":744,"kind":262144,"name":"Position","url":"classes/Clef.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Clef"},{"id":745,"kind":1024,"name":"TEXT_FONT","url":"classes/Clef.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Clef"},{"id":746,"kind":512,"name":"constructor","url":"classes/Clef.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Clef"},{"id":747,"kind":1024,"name":"annotation","url":"classes/Clef.html#annotation","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Clef"},{"id":748,"kind":65536,"name":"__type","url":"classes/Clef.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Clef"},{"id":749,"kind":1024,"name":"code","url":"classes/Clef.html#__type.code","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Clef.__type"},{"id":750,"kind":1024,"name":"line","url":"classes/Clef.html#__type.line","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Clef.__type"},{"id":751,"kind":1024,"name":"x_shift","url":"classes/Clef.html#__type.x_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Clef.__type"},{"id":752,"kind":1024,"name":"point","url":"classes/Clef.html#__type.point","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Clef.__type"},{"id":753,"kind":1024,"name":"clef","url":"classes/Clef.html#clef","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Clef"},{"id":754,"kind":2048,"name":"setType","url":"classes/Clef.html#setType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Clef"},{"id":755,"kind":2048,"name":"getWidth","url":"classes/Clef.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Clef"},{"id":756,"kind":2048,"name":"setStave","url":"classes/Clef.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Clef"},{"id":757,"kind":2048,"name":"draw","url":"classes/Clef.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Clef"},{"id":758,"kind":2048,"name":"getPosition","url":"classes/Clef.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":759,"kind":2048,"name":"setPosition","url":"classes/Clef.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":760,"kind":2048,"name":"getStave","url":"classes/Clef.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":761,"kind":2048,"name":"checkStave","url":"classes/Clef.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":762,"kind":2048,"name":"setWidth","url":"classes/Clef.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":763,"kind":2048,"name":"getX","url":"classes/Clef.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":764,"kind":2048,"name":"setX","url":"classes/Clef.html#setX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":765,"kind":2048,"name":"placeGlyphOnLine","url":"classes/Clef.html#placeGlyphOnLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":766,"kind":2048,"name":"getPadding","url":"classes/Clef.html#getPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":767,"kind":2048,"name":"setPadding","url":"classes/Clef.html#setPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":768,"kind":2048,"name":"setLayoutMetrics","url":"classes/Clef.html#setLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":769,"kind":2048,"name":"getLayoutMetrics","url":"classes/Clef.html#getLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":770,"kind":2048,"name":"addChildElement","url":"classes/Clef.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":771,"kind":2048,"name":"getCategory","url":"classes/Clef.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":772,"kind":2048,"name":"setStyle","url":"classes/Clef.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":773,"kind":2048,"name":"setGroupStyle","url":"classes/Clef.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":774,"kind":2048,"name":"getStyle","url":"classes/Clef.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":775,"kind":2048,"name":"applyStyle","url":"classes/Clef.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":776,"kind":2048,"name":"restoreStyle","url":"classes/Clef.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":777,"kind":2048,"name":"drawWithStyle","url":"classes/Clef.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":778,"kind":2048,"name":"hasClass","url":"classes/Clef.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":779,"kind":2048,"name":"addClass","url":"classes/Clef.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":780,"kind":2048,"name":"removeClass","url":"classes/Clef.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":781,"kind":2048,"name":"onRegister","url":"classes/Clef.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":782,"kind":2048,"name":"isRendered","url":"classes/Clef.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":783,"kind":2048,"name":"setRendered","url":"classes/Clef.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":784,"kind":2048,"name":"getAttributes","url":"classes/Clef.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":785,"kind":2048,"name":"getAttribute","url":"classes/Clef.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":786,"kind":2048,"name":"setAttribute","url":"classes/Clef.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":787,"kind":2048,"name":"getBoundingBox","url":"classes/Clef.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":788,"kind":2048,"name":"getContext","url":"classes/Clef.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":789,"kind":2048,"name":"setContext","url":"classes/Clef.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":790,"kind":2048,"name":"checkContext","url":"classes/Clef.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":791,"kind":262144,"name":"font","url":"classes/Clef.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":792,"kind":2048,"name":"setFont","url":"classes/Clef.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":793,"kind":2048,"name":"getFont","url":"classes/Clef.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":794,"kind":2048,"name":"resetFont","url":"classes/Clef.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":795,"kind":262144,"name":"fontInfo","url":"classes/Clef.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":796,"kind":2048,"name":"setFontSize","url":"classes/Clef.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":797,"kind":2048,"name":"getFontSize","url":"classes/Clef.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":798,"kind":262144,"name":"fontSize","url":"classes/Clef.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":799,"kind":262144,"name":"fontSizeInPoints","url":"classes/Clef.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":800,"kind":262144,"name":"fontSizeInPixels","url":"classes/Clef.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":801,"kind":262144,"name":"fontStyle","url":"classes/Clef.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":802,"kind":262144,"name":"fontWeight","url":"classes/Clef.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":803,"kind":128,"name":"ClefNote","url":"classes/ClefNote.html","classes":"tsd-kind-class"},{"id":804,"kind":262144,"name":"CATEGORY","url":"classes/ClefNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"ClefNote"},{"id":805,"kind":2048,"name":"plotMetrics","url":"classes/ClefNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"ClefNote"},{"id":806,"kind":1024,"name":"TEXT_FONT","url":"classes/ClefNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"ClefNote"},{"id":807,"kind":512,"name":"constructor","url":"classes/ClefNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"ClefNote"},{"id":808,"kind":2048,"name":"setType","url":"classes/ClefNote.html#setType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ClefNote"},{"id":809,"kind":2048,"name":"getClef","url":"classes/ClefNote.html#getClef","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ClefNote"},{"id":810,"kind":2048,"name":"setContext","url":"classes/ClefNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"ClefNote"},{"id":811,"kind":2048,"name":"getBoundingBox","url":"classes/ClefNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"ClefNote"},{"id":812,"kind":2048,"name":"addToModifierContext","url":"classes/ClefNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"ClefNote"},{"id":813,"kind":2048,"name":"preFormat","url":"classes/ClefNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"ClefNote"},{"id":814,"kind":2048,"name":"draw","url":"classes/ClefNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"ClefNote"},{"id":815,"kind":1024,"name":"glyph","url":"classes/ClefNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":816,"kind":1024,"name":"keys","url":"classes/ClefNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":817,"kind":1024,"name":"keyProps","url":"classes/ClefNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":818,"kind":1024,"name":"render_options","url":"classes/ClefNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":819,"kind":65536,"name":"__type","url":"classes/ClefNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"ClefNote"},{"id":820,"kind":1024,"name":"draw_stem_through_stave","url":"classes/ClefNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":821,"kind":1024,"name":"draw","url":"classes/ClefNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":822,"kind":1024,"name":"draw_dots","url":"classes/ClefNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":823,"kind":1024,"name":"draw_stem","url":"classes/ClefNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":824,"kind":1024,"name":"y_shift","url":"classes/ClefNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":825,"kind":1024,"name":"extend_left","url":"classes/ClefNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":826,"kind":1024,"name":"extend_right","url":"classes/ClefNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":827,"kind":1024,"name":"glyph_font_scale","url":"classes/ClefNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":828,"kind":1024,"name":"annotation_spacing","url":"classes/ClefNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":829,"kind":1024,"name":"glyph_font_size","url":"classes/ClefNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":830,"kind":1024,"name":"scale","url":"classes/ClefNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":831,"kind":1024,"name":"font","url":"classes/ClefNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":832,"kind":1024,"name":"stroke_px","url":"classes/ClefNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":833,"kind":2048,"name":"getPlayNote","url":"classes/ClefNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":834,"kind":2048,"name":"setPlayNote","url":"classes/ClefNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":835,"kind":2048,"name":"isRest","url":"classes/ClefNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":836,"kind":2048,"name":"addStroke","url":"classes/ClefNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":837,"kind":2048,"name":"getStave","url":"classes/ClefNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":838,"kind":2048,"name":"checkStave","url":"classes/ClefNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":839,"kind":2048,"name":"setStave","url":"classes/ClefNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":840,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/ClefNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":841,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/ClefNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":842,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/ClefNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":843,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/ClefNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":844,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/ClefNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":845,"kind":2048,"name":"getLineNumber","url":"classes/ClefNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":846,"kind":2048,"name":"getLineForRest","url":"classes/ClefNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":847,"kind":2048,"name":"getGlyph","url":"classes/ClefNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":848,"kind":2048,"name":"getGlyphWidth","url":"classes/ClefNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":849,"kind":2048,"name":"setYs","url":"classes/ClefNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":850,"kind":2048,"name":"getYs","url":"classes/ClefNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":851,"kind":2048,"name":"getYForTopText","url":"classes/ClefNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":852,"kind":2048,"name":"getVoice","url":"classes/ClefNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":853,"kind":2048,"name":"setVoice","url":"classes/ClefNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":854,"kind":2048,"name":"getTickContext","url":"classes/ClefNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":855,"kind":2048,"name":"setTickContext","url":"classes/ClefNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":856,"kind":2048,"name":"getDuration","url":"classes/ClefNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":857,"kind":2048,"name":"isDotted","url":"classes/ClefNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":858,"kind":2048,"name":"hasStem","url":"classes/ClefNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":859,"kind":2048,"name":"getNoteType","url":"classes/ClefNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":860,"kind":2048,"name":"getBeam","url":"classes/ClefNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":861,"kind":2048,"name":"checkBeam","url":"classes/ClefNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":862,"kind":2048,"name":"hasBeam","url":"classes/ClefNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":863,"kind":2048,"name":"setBeam","url":"classes/ClefNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":864,"kind":2048,"name":"addModifier","url":"classes/ClefNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":865,"kind":2048,"name":"getModifiersByType","url":"classes/ClefNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":866,"kind":2048,"name":"getModifierStartXY","url":"classes/ClefNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":867,"kind":2048,"name":"getRightParenthesisPx","url":"classes/ClefNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":868,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/ClefNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":869,"kind":2048,"name":"getFirstDotPx","url":"classes/ClefNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":870,"kind":2048,"name":"getMetrics","url":"classes/ClefNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":871,"kind":2048,"name":"getAbsoluteX","url":"classes/ClefNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":872,"kind":2048,"name":"getStemDirection","url":"classes/ClefNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":873,"kind":2048,"name":"getStemExtents","url":"classes/ClefNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":874,"kind":2048,"name":"getTieRightX","url":"classes/ClefNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":875,"kind":2048,"name":"getTieLeftX","url":"classes/ClefNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":876,"kind":2048,"name":"getKeys","url":"classes/ClefNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":877,"kind":2048,"name":"getKeyProps","url":"classes/ClefNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":878,"kind":2048,"name":"reset","url":"classes/ClefNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":879,"kind":2048,"name":"getTicks","url":"classes/ClefNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":880,"kind":2048,"name":"setIgnoreTicks","url":"classes/ClefNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":881,"kind":2048,"name":"setWidth","url":"classes/ClefNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":882,"kind":2048,"name":"getWidth","url":"classes/ClefNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":883,"kind":2048,"name":"setXShift","url":"classes/ClefNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":884,"kind":2048,"name":"getXShift","url":"classes/ClefNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":885,"kind":2048,"name":"getX","url":"classes/ClefNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":886,"kind":2048,"name":"getFormatterMetrics","url":"classes/ClefNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":887,"kind":2048,"name":"getCenterXShift","url":"classes/ClefNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":888,"kind":2048,"name":"setCenterXShift","url":"classes/ClefNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":889,"kind":2048,"name":"isCenterAligned","url":"classes/ClefNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":890,"kind":2048,"name":"setCenterAlignment","url":"classes/ClefNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":891,"kind":2048,"name":"getTuplet","url":"classes/ClefNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":892,"kind":2048,"name":"getTupletStack","url":"classes/ClefNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":893,"kind":2048,"name":"resetTuplet","url":"classes/ClefNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":894,"kind":2048,"name":"setTuplet","url":"classes/ClefNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":895,"kind":2048,"name":"getModifiers","url":"classes/ClefNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":896,"kind":2048,"name":"checkTickContext","url":"classes/ClefNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":897,"kind":262144,"name":"preFormatted","url":"classes/ClefNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":898,"kind":2048,"name":"postFormat","url":"classes/ClefNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":899,"kind":262144,"name":"postFormatted","url":"classes/ClefNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":900,"kind":2048,"name":"getIntrinsicTicks","url":"classes/ClefNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":901,"kind":2048,"name":"setIntrinsicTicks","url":"classes/ClefNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":902,"kind":2048,"name":"getTickMultiplier","url":"classes/ClefNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":903,"kind":2048,"name":"applyTickMultiplier","url":"classes/ClefNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":904,"kind":2048,"name":"setDuration","url":"classes/ClefNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":905,"kind":2048,"name":"setModifierContext","url":"classes/ClefNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":906,"kind":2048,"name":"getModifierContext","url":"classes/ClefNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":907,"kind":2048,"name":"checkModifierContext","url":"classes/ClefNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":908,"kind":2048,"name":"addChildElement","url":"classes/ClefNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":909,"kind":2048,"name":"getCategory","url":"classes/ClefNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":910,"kind":2048,"name":"setStyle","url":"classes/ClefNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":911,"kind":2048,"name":"setGroupStyle","url":"classes/ClefNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":912,"kind":2048,"name":"getStyle","url":"classes/ClefNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":913,"kind":2048,"name":"applyStyle","url":"classes/ClefNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":914,"kind":2048,"name":"restoreStyle","url":"classes/ClefNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":915,"kind":2048,"name":"drawWithStyle","url":"classes/ClefNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":916,"kind":2048,"name":"hasClass","url":"classes/ClefNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":917,"kind":2048,"name":"addClass","url":"classes/ClefNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":918,"kind":2048,"name":"removeClass","url":"classes/ClefNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":919,"kind":2048,"name":"onRegister","url":"classes/ClefNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":920,"kind":2048,"name":"isRendered","url":"classes/ClefNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":921,"kind":2048,"name":"setRendered","url":"classes/ClefNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":922,"kind":2048,"name":"getAttributes","url":"classes/ClefNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":923,"kind":2048,"name":"getAttribute","url":"classes/ClefNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":924,"kind":2048,"name":"setAttribute","url":"classes/ClefNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":925,"kind":2048,"name":"getContext","url":"classes/ClefNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":926,"kind":2048,"name":"checkContext","url":"classes/ClefNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":927,"kind":262144,"name":"font","url":"classes/ClefNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":928,"kind":2048,"name":"setFont","url":"classes/ClefNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":929,"kind":2048,"name":"getFont","url":"classes/ClefNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":930,"kind":2048,"name":"resetFont","url":"classes/ClefNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":931,"kind":262144,"name":"fontInfo","url":"classes/ClefNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":932,"kind":2048,"name":"setFontSize","url":"classes/ClefNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":933,"kind":2048,"name":"getFontSize","url":"classes/ClefNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":934,"kind":262144,"name":"fontSize","url":"classes/ClefNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":935,"kind":262144,"name":"fontSizeInPoints","url":"classes/ClefNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":936,"kind":262144,"name":"fontSizeInPixels","url":"classes/ClefNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":937,"kind":262144,"name":"fontStyle","url":"classes/ClefNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":938,"kind":262144,"name":"fontWeight","url":"classes/ClefNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":939,"kind":256,"name":"CrescendoParams","url":"interfaces/CrescendoParams.html","classes":"tsd-kind-interface"},{"id":940,"kind":1024,"name":"reverse","url":"interfaces/CrescendoParams.html#reverse","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CrescendoParams"},{"id":941,"kind":1024,"name":"height","url":"interfaces/CrescendoParams.html#height","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CrescendoParams"},{"id":942,"kind":1024,"name":"y","url":"interfaces/CrescendoParams.html#y","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CrescendoParams"},{"id":943,"kind":1024,"name":"end_x","url":"interfaces/CrescendoParams.html#end_x","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CrescendoParams"},{"id":944,"kind":1024,"name":"begin_x","url":"interfaces/CrescendoParams.html#begin_x","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CrescendoParams"},{"id":945,"kind":128,"name":"Crescendo","url":"classes/Crescendo.html","classes":"tsd-kind-class"},{"id":946,"kind":1024,"name":"DEBUG","url":"classes/Crescendo.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Crescendo"},{"id":947,"kind":262144,"name":"CATEGORY","url":"classes/Crescendo.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Crescendo"},{"id":948,"kind":2048,"name":"plotMetrics","url":"classes/Crescendo.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Crescendo"},{"id":949,"kind":1024,"name":"TEXT_FONT","url":"classes/Crescendo.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Crescendo"},{"id":950,"kind":512,"name":"constructor","url":"classes/Crescendo.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Crescendo"},{"id":951,"kind":2048,"name":"setLine","url":"classes/Crescendo.html#setLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Crescendo"},{"id":952,"kind":2048,"name":"setHeight","url":"classes/Crescendo.html#setHeight","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Crescendo"},{"id":953,"kind":2048,"name":"setDecrescendo","url":"classes/Crescendo.html#setDecrescendo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Crescendo"},{"id":954,"kind":2048,"name":"preFormat","url":"classes/Crescendo.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Crescendo"},{"id":955,"kind":2048,"name":"draw","url":"classes/Crescendo.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Crescendo"},{"id":956,"kind":1024,"name":"glyph","url":"classes/Crescendo.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":957,"kind":1024,"name":"keys","url":"classes/Crescendo.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":958,"kind":1024,"name":"keyProps","url":"classes/Crescendo.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":959,"kind":1024,"name":"render_options","url":"classes/Crescendo.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":960,"kind":65536,"name":"__type","url":"classes/Crescendo.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Crescendo"},{"id":961,"kind":1024,"name":"draw_stem_through_stave","url":"classes/Crescendo.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":962,"kind":1024,"name":"draw","url":"classes/Crescendo.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":963,"kind":1024,"name":"draw_dots","url":"classes/Crescendo.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":964,"kind":1024,"name":"draw_stem","url":"classes/Crescendo.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":965,"kind":1024,"name":"y_shift","url":"classes/Crescendo.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":966,"kind":1024,"name":"extend_left","url":"classes/Crescendo.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":967,"kind":1024,"name":"extend_right","url":"classes/Crescendo.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":968,"kind":1024,"name":"glyph_font_scale","url":"classes/Crescendo.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":969,"kind":1024,"name":"annotation_spacing","url":"classes/Crescendo.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":970,"kind":1024,"name":"glyph_font_size","url":"classes/Crescendo.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":971,"kind":1024,"name":"scale","url":"classes/Crescendo.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":972,"kind":1024,"name":"font","url":"classes/Crescendo.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":973,"kind":1024,"name":"stroke_px","url":"classes/Crescendo.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":974,"kind":2048,"name":"getPlayNote","url":"classes/Crescendo.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":975,"kind":2048,"name":"setPlayNote","url":"classes/Crescendo.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":976,"kind":2048,"name":"isRest","url":"classes/Crescendo.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":977,"kind":2048,"name":"addStroke","url":"classes/Crescendo.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":978,"kind":2048,"name":"getStave","url":"classes/Crescendo.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":979,"kind":2048,"name":"checkStave","url":"classes/Crescendo.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":980,"kind":2048,"name":"setStave","url":"classes/Crescendo.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":981,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/Crescendo.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":982,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/Crescendo.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":983,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/Crescendo.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":984,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/Crescendo.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":985,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/Crescendo.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":986,"kind":2048,"name":"getLineNumber","url":"classes/Crescendo.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":987,"kind":2048,"name":"getLineForRest","url":"classes/Crescendo.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":988,"kind":2048,"name":"getGlyph","url":"classes/Crescendo.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":989,"kind":2048,"name":"getGlyphWidth","url":"classes/Crescendo.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":990,"kind":2048,"name":"setYs","url":"classes/Crescendo.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":991,"kind":2048,"name":"getYs","url":"classes/Crescendo.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":992,"kind":2048,"name":"getYForTopText","url":"classes/Crescendo.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":993,"kind":2048,"name":"getVoice","url":"classes/Crescendo.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":994,"kind":2048,"name":"setVoice","url":"classes/Crescendo.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":995,"kind":2048,"name":"getTickContext","url":"classes/Crescendo.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":996,"kind":2048,"name":"setTickContext","url":"classes/Crescendo.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":997,"kind":2048,"name":"getDuration","url":"classes/Crescendo.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":998,"kind":2048,"name":"isDotted","url":"classes/Crescendo.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":999,"kind":2048,"name":"hasStem","url":"classes/Crescendo.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1000,"kind":2048,"name":"getNoteType","url":"classes/Crescendo.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1001,"kind":2048,"name":"getBeam","url":"classes/Crescendo.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1002,"kind":2048,"name":"checkBeam","url":"classes/Crescendo.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1003,"kind":2048,"name":"hasBeam","url":"classes/Crescendo.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1004,"kind":2048,"name":"setBeam","url":"classes/Crescendo.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1005,"kind":2048,"name":"addModifier","url":"classes/Crescendo.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1006,"kind":2048,"name":"getModifiersByType","url":"classes/Crescendo.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1007,"kind":2048,"name":"getModifierStartXY","url":"classes/Crescendo.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1008,"kind":2048,"name":"getRightParenthesisPx","url":"classes/Crescendo.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1009,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/Crescendo.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1010,"kind":2048,"name":"getFirstDotPx","url":"classes/Crescendo.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1011,"kind":2048,"name":"getMetrics","url":"classes/Crescendo.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1012,"kind":2048,"name":"getAbsoluteX","url":"classes/Crescendo.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1013,"kind":2048,"name":"getStemDirection","url":"classes/Crescendo.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1014,"kind":2048,"name":"getStemExtents","url":"classes/Crescendo.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1015,"kind":2048,"name":"getTieRightX","url":"classes/Crescendo.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1016,"kind":2048,"name":"getTieLeftX","url":"classes/Crescendo.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1017,"kind":2048,"name":"getKeys","url":"classes/Crescendo.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1018,"kind":2048,"name":"getKeyProps","url":"classes/Crescendo.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1019,"kind":2048,"name":"reset","url":"classes/Crescendo.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1020,"kind":2048,"name":"getTicks","url":"classes/Crescendo.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1021,"kind":2048,"name":"setIgnoreTicks","url":"classes/Crescendo.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1022,"kind":2048,"name":"setWidth","url":"classes/Crescendo.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1023,"kind":2048,"name":"getWidth","url":"classes/Crescendo.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1024,"kind":2048,"name":"setXShift","url":"classes/Crescendo.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1025,"kind":2048,"name":"getXShift","url":"classes/Crescendo.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1026,"kind":2048,"name":"getX","url":"classes/Crescendo.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1027,"kind":2048,"name":"getFormatterMetrics","url":"classes/Crescendo.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1028,"kind":2048,"name":"getCenterXShift","url":"classes/Crescendo.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1029,"kind":2048,"name":"setCenterXShift","url":"classes/Crescendo.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1030,"kind":2048,"name":"isCenterAligned","url":"classes/Crescendo.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1031,"kind":2048,"name":"setCenterAlignment","url":"classes/Crescendo.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1032,"kind":2048,"name":"getTuplet","url":"classes/Crescendo.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1033,"kind":2048,"name":"getTupletStack","url":"classes/Crescendo.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1034,"kind":2048,"name":"resetTuplet","url":"classes/Crescendo.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1035,"kind":2048,"name":"setTuplet","url":"classes/Crescendo.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1036,"kind":2048,"name":"addToModifierContext","url":"classes/Crescendo.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1037,"kind":2048,"name":"getModifiers","url":"classes/Crescendo.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1038,"kind":2048,"name":"checkTickContext","url":"classes/Crescendo.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1039,"kind":262144,"name":"preFormatted","url":"classes/Crescendo.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1040,"kind":2048,"name":"postFormat","url":"classes/Crescendo.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1041,"kind":262144,"name":"postFormatted","url":"classes/Crescendo.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1042,"kind":2048,"name":"getIntrinsicTicks","url":"classes/Crescendo.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1043,"kind":2048,"name":"setIntrinsicTicks","url":"classes/Crescendo.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1044,"kind":2048,"name":"getTickMultiplier","url":"classes/Crescendo.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1045,"kind":2048,"name":"applyTickMultiplier","url":"classes/Crescendo.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1046,"kind":2048,"name":"setDuration","url":"classes/Crescendo.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1047,"kind":2048,"name":"setModifierContext","url":"classes/Crescendo.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1048,"kind":2048,"name":"getModifierContext","url":"classes/Crescendo.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1049,"kind":2048,"name":"checkModifierContext","url":"classes/Crescendo.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1050,"kind":2048,"name":"addChildElement","url":"classes/Crescendo.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1051,"kind":2048,"name":"getCategory","url":"classes/Crescendo.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1052,"kind":2048,"name":"setStyle","url":"classes/Crescendo.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1053,"kind":2048,"name":"setGroupStyle","url":"classes/Crescendo.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1054,"kind":2048,"name":"getStyle","url":"classes/Crescendo.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1055,"kind":2048,"name":"applyStyle","url":"classes/Crescendo.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1056,"kind":2048,"name":"restoreStyle","url":"classes/Crescendo.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1057,"kind":2048,"name":"drawWithStyle","url":"classes/Crescendo.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1058,"kind":2048,"name":"hasClass","url":"classes/Crescendo.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1059,"kind":2048,"name":"addClass","url":"classes/Crescendo.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1060,"kind":2048,"name":"removeClass","url":"classes/Crescendo.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1061,"kind":2048,"name":"onRegister","url":"classes/Crescendo.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1062,"kind":2048,"name":"isRendered","url":"classes/Crescendo.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1063,"kind":2048,"name":"setRendered","url":"classes/Crescendo.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1064,"kind":2048,"name":"getAttributes","url":"classes/Crescendo.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1065,"kind":2048,"name":"getAttribute","url":"classes/Crescendo.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1066,"kind":2048,"name":"setAttribute","url":"classes/Crescendo.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1067,"kind":2048,"name":"getBoundingBox","url":"classes/Crescendo.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1068,"kind":2048,"name":"getContext","url":"classes/Crescendo.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1069,"kind":2048,"name":"setContext","url":"classes/Crescendo.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1070,"kind":2048,"name":"checkContext","url":"classes/Crescendo.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1071,"kind":262144,"name":"font","url":"classes/Crescendo.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1072,"kind":2048,"name":"setFont","url":"classes/Crescendo.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1073,"kind":2048,"name":"getFont","url":"classes/Crescendo.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1074,"kind":2048,"name":"resetFont","url":"classes/Crescendo.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1075,"kind":262144,"name":"fontInfo","url":"classes/Crescendo.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1076,"kind":2048,"name":"setFontSize","url":"classes/Crescendo.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1077,"kind":2048,"name":"getFontSize","url":"classes/Crescendo.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1078,"kind":262144,"name":"fontSize","url":"classes/Crescendo.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1079,"kind":262144,"name":"fontSizeInPoints","url":"classes/Crescendo.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1080,"kind":262144,"name":"fontSizeInPixels","url":"classes/Crescendo.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1081,"kind":262144,"name":"fontStyle","url":"classes/Crescendo.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1082,"kind":262144,"name":"fontWeight","url":"classes/Crescendo.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1083,"kind":256,"name":"CurveOptions","url":"interfaces/CurveOptions.html","classes":"tsd-kind-interface"},{"id":1084,"kind":1024,"name":"cps","url":"interfaces/CurveOptions.html#cps","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CurveOptions"},{"id":1085,"kind":1024,"name":"thickness","url":"interfaces/CurveOptions.html#thickness","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CurveOptions"},{"id":1086,"kind":1024,"name":"x_shift","url":"interfaces/CurveOptions.html#x_shift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CurveOptions"},{"id":1087,"kind":1024,"name":"y_shift","url":"interfaces/CurveOptions.html#y_shift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CurveOptions"},{"id":1088,"kind":1024,"name":"position","url":"interfaces/CurveOptions.html#position","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CurveOptions"},{"id":1089,"kind":1024,"name":"position_end","url":"interfaces/CurveOptions.html#position_end","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CurveOptions"},{"id":1090,"kind":1024,"name":"invert","url":"interfaces/CurveOptions.html#invert","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CurveOptions"},{"id":1091,"kind":8,"name":"CurvePosition","url":"enums/CurvePosition.html","classes":"tsd-kind-enum"},{"id":1092,"kind":16,"name":"NEAR_HEAD","url":"enums/CurvePosition.html#NEAR_HEAD","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"CurvePosition"},{"id":1093,"kind":16,"name":"NEAR_TOP","url":"enums/CurvePosition.html#NEAR_TOP","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"CurvePosition"},{"id":1094,"kind":128,"name":"Curve","url":"classes/Curve.html","classes":"tsd-kind-class"},{"id":1095,"kind":262144,"name":"CATEGORY","url":"classes/Curve.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Curve"},{"id":1096,"kind":262144,"name":"Position","url":"classes/Curve.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Curve"},{"id":1097,"kind":262144,"name":"PositionString","url":"classes/Curve.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Curve"},{"id":1098,"kind":1024,"name":"TEXT_FONT","url":"classes/Curve.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Curve"},{"id":1099,"kind":512,"name":"constructor","url":"classes/Curve.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Curve"},{"id":1100,"kind":1024,"name":"render_options","url":"classes/Curve.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Curve"},{"id":1101,"kind":2048,"name":"setNotes","url":"classes/Curve.html#setNotes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Curve"},{"id":1102,"kind":2048,"name":"isPartial","url":"classes/Curve.html#isPartial","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Curve"},{"id":1103,"kind":2048,"name":"renderCurve","url":"classes/Curve.html#renderCurve","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Curve"},{"id":1104,"kind":2048,"name":"draw","url":"classes/Curve.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Curve"},{"id":1105,"kind":2048,"name":"addChildElement","url":"classes/Curve.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1106,"kind":2048,"name":"getCategory","url":"classes/Curve.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1107,"kind":2048,"name":"setStyle","url":"classes/Curve.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1108,"kind":2048,"name":"setGroupStyle","url":"classes/Curve.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1109,"kind":2048,"name":"getStyle","url":"classes/Curve.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1110,"kind":2048,"name":"applyStyle","url":"classes/Curve.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1111,"kind":2048,"name":"restoreStyle","url":"classes/Curve.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1112,"kind":2048,"name":"drawWithStyle","url":"classes/Curve.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1113,"kind":2048,"name":"hasClass","url":"classes/Curve.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1114,"kind":2048,"name":"addClass","url":"classes/Curve.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1115,"kind":2048,"name":"removeClass","url":"classes/Curve.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1116,"kind":2048,"name":"onRegister","url":"classes/Curve.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1117,"kind":2048,"name":"isRendered","url":"classes/Curve.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1118,"kind":2048,"name":"setRendered","url":"classes/Curve.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1119,"kind":2048,"name":"getAttributes","url":"classes/Curve.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1120,"kind":2048,"name":"getAttribute","url":"classes/Curve.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1121,"kind":2048,"name":"setAttribute","url":"classes/Curve.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1122,"kind":2048,"name":"getBoundingBox","url":"classes/Curve.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1123,"kind":2048,"name":"getContext","url":"classes/Curve.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1124,"kind":2048,"name":"setContext","url":"classes/Curve.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1125,"kind":2048,"name":"checkContext","url":"classes/Curve.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1126,"kind":262144,"name":"font","url":"classes/Curve.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1127,"kind":2048,"name":"setFont","url":"classes/Curve.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1128,"kind":2048,"name":"getFont","url":"classes/Curve.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1129,"kind":2048,"name":"resetFont","url":"classes/Curve.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1130,"kind":262144,"name":"fontInfo","url":"classes/Curve.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1131,"kind":2048,"name":"setFontSize","url":"classes/Curve.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1132,"kind":2048,"name":"getFontSize","url":"classes/Curve.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1133,"kind":262144,"name":"fontSize","url":"classes/Curve.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1134,"kind":262144,"name":"fontSizeInPoints","url":"classes/Curve.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1135,"kind":262144,"name":"fontSizeInPixels","url":"classes/Curve.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1136,"kind":262144,"name":"fontStyle","url":"classes/Curve.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1137,"kind":262144,"name":"fontWeight","url":"classes/Curve.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1138,"kind":128,"name":"Dot","url":"classes/Dot.html","classes":"tsd-kind-class"},{"id":1139,"kind":262144,"name":"CATEGORY","url":"classes/Dot.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Dot"},{"id":1140,"kind":2048,"name":"getDots","url":"classes/Dot.html#getDots","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Dot"},{"id":1141,"kind":2048,"name":"buildAndAttach","url":"classes/Dot.html#buildAndAttach","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Dot"},{"id":1142,"kind":2048,"name":"format","url":"classes/Dot.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Dot"},{"id":1143,"kind":262144,"name":"Position","url":"classes/Dot.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Dot"},{"id":1144,"kind":262144,"name":"PositionString","url":"classes/Dot.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Dot"},{"id":1145,"kind":1024,"name":"TEXT_FONT","url":"classes/Dot.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Dot"},{"id":1146,"kind":512,"name":"constructor","url":"classes/Dot.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Dot"},{"id":1147,"kind":2048,"name":"setNote","url":"classes/Dot.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Dot"},{"id":1148,"kind":2048,"name":"setDotShiftY","url":"classes/Dot.html#setDotShiftY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Dot"},{"id":1149,"kind":2048,"name":"draw","url":"classes/Dot.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Dot"},{"id":1150,"kind":2048,"name":"getWidth","url":"classes/Dot.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1151,"kind":2048,"name":"setWidth","url":"classes/Dot.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1152,"kind":2048,"name":"getNote","url":"classes/Dot.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1153,"kind":2048,"name":"checkAttachedNote","url":"classes/Dot.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1154,"kind":2048,"name":"getIndex","url":"classes/Dot.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1155,"kind":2048,"name":"checkIndex","url":"classes/Dot.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1156,"kind":2048,"name":"setIndex","url":"classes/Dot.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1157,"kind":2048,"name":"getModifierContext","url":"classes/Dot.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1158,"kind":2048,"name":"checkModifierContext","url":"classes/Dot.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1159,"kind":2048,"name":"setModifierContext","url":"classes/Dot.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1160,"kind":2048,"name":"getPosition","url":"classes/Dot.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1161,"kind":2048,"name":"setPosition","url":"classes/Dot.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1162,"kind":2048,"name":"setTextLine","url":"classes/Dot.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1163,"kind":2048,"name":"setYShift","url":"classes/Dot.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1164,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/Dot.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1165,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/Dot.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1166,"kind":2048,"name":"setXShift","url":"classes/Dot.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1167,"kind":2048,"name":"getXShift","url":"classes/Dot.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1168,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/Dot.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1169,"kind":2048,"name":"addChildElement","url":"classes/Dot.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1170,"kind":2048,"name":"getCategory","url":"classes/Dot.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1171,"kind":2048,"name":"setStyle","url":"classes/Dot.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1172,"kind":2048,"name":"setGroupStyle","url":"classes/Dot.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1173,"kind":2048,"name":"getStyle","url":"classes/Dot.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1174,"kind":2048,"name":"applyStyle","url":"classes/Dot.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1175,"kind":2048,"name":"restoreStyle","url":"classes/Dot.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1176,"kind":2048,"name":"drawWithStyle","url":"classes/Dot.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1177,"kind":2048,"name":"hasClass","url":"classes/Dot.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1178,"kind":2048,"name":"addClass","url":"classes/Dot.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1179,"kind":2048,"name":"removeClass","url":"classes/Dot.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1180,"kind":2048,"name":"onRegister","url":"classes/Dot.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1181,"kind":2048,"name":"isRendered","url":"classes/Dot.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1182,"kind":2048,"name":"setRendered","url":"classes/Dot.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1183,"kind":2048,"name":"getAttributes","url":"classes/Dot.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1184,"kind":2048,"name":"getAttribute","url":"classes/Dot.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1185,"kind":2048,"name":"setAttribute","url":"classes/Dot.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1186,"kind":2048,"name":"getBoundingBox","url":"classes/Dot.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1187,"kind":2048,"name":"getContext","url":"classes/Dot.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1188,"kind":2048,"name":"setContext","url":"classes/Dot.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1189,"kind":2048,"name":"checkContext","url":"classes/Dot.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1190,"kind":262144,"name":"font","url":"classes/Dot.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1191,"kind":2048,"name":"setFont","url":"classes/Dot.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1192,"kind":2048,"name":"getFont","url":"classes/Dot.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1193,"kind":2048,"name":"resetFont","url":"classes/Dot.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1194,"kind":262144,"name":"fontInfo","url":"classes/Dot.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1195,"kind":2048,"name":"setFontSize","url":"classes/Dot.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1196,"kind":2048,"name":"getFontSize","url":"classes/Dot.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1197,"kind":262144,"name":"fontSize","url":"classes/Dot.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1198,"kind":262144,"name":"fontSizeInPoints","url":"classes/Dot.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1199,"kind":262144,"name":"fontSizeInPixels","url":"classes/Dot.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1200,"kind":262144,"name":"fontStyle","url":"classes/Dot.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1201,"kind":262144,"name":"fontWeight","url":"classes/Dot.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1202,"kind":4194304,"name":"CommitHook","url":"modules.html#CommitHook","classes":"tsd-kind-type-alias"},{"id":1203,"kind":65536,"name":"__type","url":"modules.html#CommitHook.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"CommitHook"},{"id":1204,"kind":128,"name":"EasyScoreGrammar","url":"classes/EasyScoreGrammar.html","classes":"tsd-kind-class"},{"id":1205,"kind":512,"name":"constructor","url":"classes/EasyScoreGrammar.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1206,"kind":1024,"name":"builder","url":"classes/EasyScoreGrammar.html#builder","classes":"tsd-kind-property tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1207,"kind":2048,"name":"begin","url":"classes/EasyScoreGrammar.html#begin","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1208,"kind":2048,"name":"LINE","url":"classes/EasyScoreGrammar.html#LINE","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1209,"kind":2048,"name":"PIECE","url":"classes/EasyScoreGrammar.html#PIECE","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1210,"kind":2048,"name":"PIECES","url":"classes/EasyScoreGrammar.html#PIECES","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1211,"kind":2048,"name":"PARAMS","url":"classes/EasyScoreGrammar.html#PARAMS","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1212,"kind":2048,"name":"CHORDORNOTE","url":"classes/EasyScoreGrammar.html#CHORDORNOTE","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1213,"kind":2048,"name":"CHORD","url":"classes/EasyScoreGrammar.html#CHORD","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1214,"kind":2048,"name":"NOTES","url":"classes/EasyScoreGrammar.html#NOTES","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1215,"kind":2048,"name":"NOTE","url":"classes/EasyScoreGrammar.html#NOTE","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1216,"kind":2048,"name":"SINGLENOTE","url":"classes/EasyScoreGrammar.html#SINGLENOTE","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1217,"kind":2048,"name":"ACCIDENTAL","url":"classes/EasyScoreGrammar.html#ACCIDENTAL","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1218,"kind":2048,"name":"DOTS","url":"classes/EasyScoreGrammar.html#DOTS","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1219,"kind":2048,"name":"TYPE","url":"classes/EasyScoreGrammar.html#TYPE","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1220,"kind":2048,"name":"DURATION","url":"classes/EasyScoreGrammar.html#DURATION","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1221,"kind":2048,"name":"OPTS","url":"classes/EasyScoreGrammar.html#OPTS","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1222,"kind":2048,"name":"KEYVALS","url":"classes/EasyScoreGrammar.html#KEYVALS","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1223,"kind":2048,"name":"KEYVAL","url":"classes/EasyScoreGrammar.html#KEYVAL","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1224,"kind":2048,"name":"VAL","url":"classes/EasyScoreGrammar.html#VAL","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1225,"kind":2048,"name":"KEY","url":"classes/EasyScoreGrammar.html#KEY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1226,"kind":2048,"name":"DVAL","url":"classes/EasyScoreGrammar.html#DVAL","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1227,"kind":2048,"name":"SVAL","url":"classes/EasyScoreGrammar.html#SVAL","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1228,"kind":2048,"name":"NOTENAME","url":"classes/EasyScoreGrammar.html#NOTENAME","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1229,"kind":2048,"name":"OCTAVE","url":"classes/EasyScoreGrammar.html#OCTAVE","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1230,"kind":2048,"name":"ACCIDENTALS","url":"classes/EasyScoreGrammar.html#ACCIDENTALS","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1231,"kind":2048,"name":"MICROTONES","url":"classes/EasyScoreGrammar.html#MICROTONES","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1232,"kind":2048,"name":"DURATIONS","url":"classes/EasyScoreGrammar.html#DURATIONS","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1233,"kind":2048,"name":"TYPES","url":"classes/EasyScoreGrammar.html#TYPES","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1234,"kind":2048,"name":"LPAREN","url":"classes/EasyScoreGrammar.html#LPAREN","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1235,"kind":2048,"name":"RPAREN","url":"classes/EasyScoreGrammar.html#RPAREN","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1236,"kind":2048,"name":"COMMA","url":"classes/EasyScoreGrammar.html#COMMA","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1237,"kind":2048,"name":"DOT","url":"classes/EasyScoreGrammar.html#DOT","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1238,"kind":2048,"name":"SLASH","url":"classes/EasyScoreGrammar.html#SLASH","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1239,"kind":2048,"name":"MAYBESLASH","url":"classes/EasyScoreGrammar.html#MAYBESLASH","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1240,"kind":2048,"name":"EQUALS","url":"classes/EasyScoreGrammar.html#EQUALS","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1241,"kind":2048,"name":"LBRACKET","url":"classes/EasyScoreGrammar.html#LBRACKET","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1242,"kind":2048,"name":"RBRACKET","url":"classes/EasyScoreGrammar.html#RBRACKET","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1243,"kind":2048,"name":"EOL","url":"classes/EasyScoreGrammar.html#EOL","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1244,"kind":256,"name":"NotePiece","url":"interfaces/NotePiece.html","classes":"tsd-kind-interface"},{"id":1245,"kind":1024,"name":"key","url":"interfaces/NotePiece.html#key","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NotePiece"},{"id":1246,"kind":1024,"name":"accid","url":"interfaces/NotePiece.html#accid","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NotePiece"},{"id":1247,"kind":1024,"name":"octave","url":"interfaces/NotePiece.html#octave","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NotePiece"},{"id":1248,"kind":128,"name":"Piece","url":"classes/Piece.html","classes":"tsd-kind-class"},{"id":1249,"kind":512,"name":"constructor","url":"classes/Piece.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Piece"},{"id":1250,"kind":1024,"name":"chord","url":"classes/Piece.html#chord","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Piece"},{"id":1251,"kind":1024,"name":"duration","url":"classes/Piece.html#duration","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Piece"},{"id":1252,"kind":1024,"name":"dots","url":"classes/Piece.html#dots","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Piece"},{"id":1253,"kind":1024,"name":"type","url":"classes/Piece.html#type","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Piece"},{"id":1254,"kind":1024,"name":"options","url":"classes/Piece.html#options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Piece"},{"id":1255,"kind":65536,"name":"__type","url":"classes/Piece.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Piece"},{"id":1256,"kind":256,"name":"BuilderElements","url":"interfaces/BuilderElements.html","classes":"tsd-kind-interface"},{"id":1257,"kind":1024,"name":"notes","url":"interfaces/BuilderElements.html#notes","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"BuilderElements"},{"id":1258,"kind":1024,"name":"accidentals","url":"interfaces/BuilderElements.html#accidentals","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"BuilderElements"},{"id":1259,"kind":256,"name":"BuilderOptions","url":"interfaces/BuilderOptions.html","classes":"tsd-kind-interface"},{"id":1260,"kind":1024,"name":"stem","url":"interfaces/BuilderOptions.html#stem","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"BuilderOptions"},{"id":1261,"kind":1024,"name":"clef","url":"interfaces/BuilderOptions.html#clef","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"BuilderOptions"},{"id":1262,"kind":128,"name":"Builder","url":"classes/Builder.html","classes":"tsd-kind-class"},{"id":1263,"kind":512,"name":"constructor","url":"classes/Builder.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Builder"},{"id":1264,"kind":1024,"name":"factory","url":"classes/Builder.html#factory","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Builder"},{"id":1265,"kind":1024,"name":"elements","url":"classes/Builder.html#elements","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Builder"},{"id":1266,"kind":1024,"name":"options","url":"classes/Builder.html#options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Builder"},{"id":1267,"kind":1024,"name":"piece","url":"classes/Builder.html#piece","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Builder"},{"id":1268,"kind":1024,"name":"commitHooks","url":"classes/Builder.html#commitHooks","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Builder"},{"id":1269,"kind":1024,"name":"rollingDuration","url":"classes/Builder.html#rollingDuration","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Builder"},{"id":1270,"kind":2048,"name":"reset","url":"classes/Builder.html#reset","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1271,"kind":2048,"name":"getFactory","url":"classes/Builder.html#getFactory","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1272,"kind":2048,"name":"getElements","url":"classes/Builder.html#getElements","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1273,"kind":2048,"name":"addCommitHook","url":"classes/Builder.html#addCommitHook","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1274,"kind":2048,"name":"resetPiece","url":"classes/Builder.html#resetPiece","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1275,"kind":2048,"name":"setNoteDots","url":"classes/Builder.html#setNoteDots","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1276,"kind":2048,"name":"setNoteDuration","url":"classes/Builder.html#setNoteDuration","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1277,"kind":2048,"name":"setNoteType","url":"classes/Builder.html#setNoteType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1278,"kind":2048,"name":"addNoteOption","url":"classes/Builder.html#addNoteOption","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1279,"kind":2048,"name":"addNote","url":"classes/Builder.html#addNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1280,"kind":2048,"name":"addSingleNote","url":"classes/Builder.html#addSingleNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1281,"kind":2048,"name":"addChord","url":"classes/Builder.html#addChord","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1282,"kind":2048,"name":"commitPiece","url":"classes/Builder.html#commitPiece","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1283,"kind":256,"name":"EasyScoreOptions","url":"interfaces/EasyScoreOptions.html","classes":"tsd-kind-interface"},{"id":1284,"kind":1024,"name":"factory","url":"interfaces/EasyScoreOptions.html#factory","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"EasyScoreOptions"},{"id":1285,"kind":1024,"name":"builder","url":"interfaces/EasyScoreOptions.html#builder","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"EasyScoreOptions"},{"id":1286,"kind":1024,"name":"commitHooks","url":"interfaces/EasyScoreOptions.html#commitHooks","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"EasyScoreOptions"},{"id":1287,"kind":1024,"name":"throwOnError","url":"interfaces/EasyScoreOptions.html#throwOnError","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"EasyScoreOptions"},{"id":1288,"kind":256,"name":"EasyScoreDefaults","url":"interfaces/EasyScoreDefaults.html","classes":"tsd-kind-interface"},{"id":1289,"kind":1024,"name":"clef","url":"interfaces/EasyScoreDefaults.html#clef","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"EasyScoreDefaults"},{"id":1290,"kind":1024,"name":"time","url":"interfaces/EasyScoreDefaults.html#time","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"EasyScoreDefaults"},{"id":1291,"kind":1024,"name":"stem","url":"interfaces/EasyScoreDefaults.html#stem","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"EasyScoreDefaults"},{"id":1292,"kind":128,"name":"EasyScore","url":"classes/EasyScore.html","classes":"tsd-kind-class"},{"id":1293,"kind":1024,"name":"DEBUG","url":"classes/EasyScore.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"EasyScore"},{"id":1294,"kind":512,"name":"constructor","url":"classes/EasyScore.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"EasyScore"},{"id":1295,"kind":1024,"name":"defaults","url":"classes/EasyScore.html#defaults","classes":"tsd-kind-property tsd-parent-kind-class","parent":"EasyScore"},{"id":1296,"kind":1024,"name":"options","url":"classes/EasyScore.html#options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"EasyScore"},{"id":1297,"kind":1024,"name":"factory","url":"classes/EasyScore.html#factory","classes":"tsd-kind-property tsd-parent-kind-class","parent":"EasyScore"},{"id":1298,"kind":1024,"name":"builder","url":"classes/EasyScore.html#builder","classes":"tsd-kind-property tsd-parent-kind-class","parent":"EasyScore"},{"id":1299,"kind":1024,"name":"grammar","url":"classes/EasyScore.html#grammar","classes":"tsd-kind-property tsd-parent-kind-class","parent":"EasyScore"},{"id":1300,"kind":1024,"name":"parser","url":"classes/EasyScore.html#parser","classes":"tsd-kind-property tsd-parent-kind-class","parent":"EasyScore"},{"id":1301,"kind":2048,"name":"set","url":"classes/EasyScore.html#set","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScore"},{"id":1302,"kind":2048,"name":"setOptions","url":"classes/EasyScore.html#setOptions","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScore"},{"id":1303,"kind":2048,"name":"setContext","url":"classes/EasyScore.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScore"},{"id":1304,"kind":2048,"name":"parse","url":"classes/EasyScore.html#parse","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScore"},{"id":1305,"kind":2048,"name":"beam","url":"classes/EasyScore.html#beam","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScore"},{"id":1306,"kind":2048,"name":"tuplet","url":"classes/EasyScore.html#tuplet","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScore"},{"id":1307,"kind":2048,"name":"notes","url":"classes/EasyScore.html#notes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScore"},{"id":1308,"kind":2048,"name":"voice","url":"classes/EasyScore.html#voice","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScore"},{"id":1309,"kind":2048,"name":"addCommitHook","url":"classes/EasyScore.html#addCommitHook","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScore"},{"id":1310,"kind":256,"name":"ElementAttributes","url":"interfaces/ElementAttributes.html","classes":"tsd-kind-interface"},{"id":1311,"kind":1024,"name":"id","url":"interfaces/ElementAttributes.html#id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ElementAttributes"},{"id":1312,"kind":1024,"name":"el","url":"interfaces/ElementAttributes.html#el","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ElementAttributes"},{"id":1313,"kind":1024,"name":"type","url":"interfaces/ElementAttributes.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ElementAttributes"},{"id":1314,"kind":1024,"name":"classes","url":"interfaces/ElementAttributes.html#classes","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ElementAttributes"},{"id":1315,"kind":256,"name":"ElementStyle","url":"interfaces/ElementStyle.html","classes":"tsd-kind-interface"},{"id":1316,"kind":1024,"name":"shadowColor","url":"interfaces/ElementStyle.html#shadowColor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ElementStyle"},{"id":1317,"kind":1024,"name":"shadowBlur","url":"interfaces/ElementStyle.html#shadowBlur","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ElementStyle"},{"id":1318,"kind":1024,"name":"fillStyle","url":"interfaces/ElementStyle.html#fillStyle","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ElementStyle"},{"id":1319,"kind":1024,"name":"strokeStyle","url":"interfaces/ElementStyle.html#strokeStyle","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ElementStyle"},{"id":1320,"kind":1024,"name":"lineWidth","url":"interfaces/ElementStyle.html#lineWidth","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ElementStyle"},{"id":1321,"kind":128,"name":"Element","url":"classes/Element.html","classes":"tsd-kind-class"},{"id":1322,"kind":262144,"name":"CATEGORY","url":"classes/Element.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Element"},{"id":1323,"kind":1024,"name":"TEXT_FONT","url":"classes/Element.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Element"},{"id":1324,"kind":512,"name":"constructor","url":"classes/Element.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Element"},{"id":1325,"kind":2048,"name":"addChildElement","url":"classes/Element.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1326,"kind":2048,"name":"getCategory","url":"classes/Element.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1327,"kind":2048,"name":"setStyle","url":"classes/Element.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1328,"kind":2048,"name":"setGroupStyle","url":"classes/Element.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1329,"kind":2048,"name":"getStyle","url":"classes/Element.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1330,"kind":2048,"name":"applyStyle","url":"classes/Element.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1331,"kind":2048,"name":"restoreStyle","url":"classes/Element.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1332,"kind":2048,"name":"drawWithStyle","url":"classes/Element.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1333,"kind":2048,"name":"draw","url":"classes/Element.html#draw","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1334,"kind":2048,"name":"hasClass","url":"classes/Element.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1335,"kind":2048,"name":"addClass","url":"classes/Element.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1336,"kind":2048,"name":"removeClass","url":"classes/Element.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1337,"kind":2048,"name":"onRegister","url":"classes/Element.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1338,"kind":2048,"name":"isRendered","url":"classes/Element.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1339,"kind":2048,"name":"setRendered","url":"classes/Element.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1340,"kind":2048,"name":"getAttributes","url":"classes/Element.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1341,"kind":2048,"name":"getAttribute","url":"classes/Element.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1342,"kind":2048,"name":"setAttribute","url":"classes/Element.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1343,"kind":2048,"name":"getBoundingBox","url":"classes/Element.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1344,"kind":2048,"name":"getContext","url":"classes/Element.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1345,"kind":2048,"name":"setContext","url":"classes/Element.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1346,"kind":2048,"name":"checkContext","url":"classes/Element.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1347,"kind":262144,"name":"font","url":"classes/Element.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"Element"},{"id":1348,"kind":2048,"name":"setFont","url":"classes/Element.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1349,"kind":2048,"name":"getFont","url":"classes/Element.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1350,"kind":2048,"name":"resetFont","url":"classes/Element.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1351,"kind":262144,"name":"fontInfo","url":"classes/Element.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"Element"},{"id":1352,"kind":2048,"name":"setFontSize","url":"classes/Element.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1353,"kind":2048,"name":"getFontSize","url":"classes/Element.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1354,"kind":262144,"name":"fontSize","url":"classes/Element.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"Element"},{"id":1355,"kind":262144,"name":"fontSizeInPoints","url":"classes/Element.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"Element"},{"id":1356,"kind":262144,"name":"fontSizeInPixels","url":"classes/Element.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"Element"},{"id":1357,"kind":262144,"name":"fontStyle","url":"classes/Element.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"Element"},{"id":1358,"kind":262144,"name":"fontWeight","url":"classes/Element.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"Element"},{"id":1359,"kind":256,"name":"FactoryOptions","url":"interfaces/FactoryOptions.html","classes":"tsd-kind-interface"},{"id":1360,"kind":1024,"name":"stave","url":"interfaces/FactoryOptions.html#stave","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FactoryOptions"},{"id":1361,"kind":65536,"name":"__type","url":"interfaces/FactoryOptions.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"FactoryOptions"},{"id":1362,"kind":1024,"name":"space","url":"interfaces/FactoryOptions.html#__type-1.space","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FactoryOptions.__type"},{"id":1363,"kind":1024,"name":"renderer","url":"interfaces/FactoryOptions.html#renderer","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FactoryOptions"},{"id":1364,"kind":65536,"name":"__type","url":"interfaces/FactoryOptions.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"FactoryOptions"},{"id":1365,"kind":1024,"name":"elementId","url":"interfaces/FactoryOptions.html#__type.elementId","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FactoryOptions.__type"},{"id":1366,"kind":1024,"name":"backend","url":"interfaces/FactoryOptions.html#__type.backend","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FactoryOptions.__type"},{"id":1367,"kind":1024,"name":"width","url":"interfaces/FactoryOptions.html#__type.width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FactoryOptions.__type"},{"id":1368,"kind":1024,"name":"height","url":"interfaces/FactoryOptions.html#__type.height","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FactoryOptions.__type"},{"id":1369,"kind":1024,"name":"background","url":"interfaces/FactoryOptions.html#__type.background","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FactoryOptions.__type"},{"id":1370,"kind":1024,"name":"font","url":"interfaces/FactoryOptions.html#font","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FactoryOptions"},{"id":1371,"kind":128,"name":"Factory","url":"classes/Factory.html","classes":"tsd-kind-class"},{"id":1372,"kind":1024,"name":"DEBUG","url":"classes/Factory.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Factory"},{"id":1373,"kind":1024,"name":"TEXT_FONT","url":"classes/Factory.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Factory"},{"id":1374,"kind":2048,"name":"newFromElementId","url":"classes/Factory.html#newFromElementId","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Factory"},{"id":1375,"kind":512,"name":"constructor","url":"classes/Factory.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Factory"},{"id":1376,"kind":2048,"name":"reset","url":"classes/Factory.html#reset","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1377,"kind":2048,"name":"setOptions","url":"classes/Factory.html#setOptions","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1378,"kind":2048,"name":"initRenderer","url":"classes/Factory.html#initRenderer","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1379,"kind":2048,"name":"getContext","url":"classes/Factory.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1380,"kind":2048,"name":"setContext","url":"classes/Factory.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1381,"kind":2048,"name":"getStave","url":"classes/Factory.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1382,"kind":2048,"name":"getVoices","url":"classes/Factory.html#getVoices","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1383,"kind":2048,"name":"Stave","url":"classes/Factory.html#Stave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1384,"kind":2048,"name":"TabStave","url":"classes/Factory.html#TabStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1385,"kind":2048,"name":"StaveNote","url":"classes/Factory.html#StaveNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1386,"kind":2048,"name":"GlyphNote","url":"classes/Factory.html#GlyphNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1387,"kind":2048,"name":"RepeatNote","url":"classes/Factory.html#RepeatNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1388,"kind":2048,"name":"GhostNote","url":"classes/Factory.html#GhostNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1389,"kind":2048,"name":"TextNote","url":"classes/Factory.html#TextNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1390,"kind":2048,"name":"BarNote","url":"classes/Factory.html#BarNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1391,"kind":2048,"name":"ClefNote","url":"classes/Factory.html#ClefNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1392,"kind":2048,"name":"TimeSigNote","url":"classes/Factory.html#TimeSigNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1393,"kind":2048,"name":"KeySigNote","url":"classes/Factory.html#KeySigNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1394,"kind":2048,"name":"TabNote","url":"classes/Factory.html#TabNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1395,"kind":2048,"name":"GraceNote","url":"classes/Factory.html#GraceNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1396,"kind":2048,"name":"GraceNoteGroup","url":"classes/Factory.html#GraceNoteGroup","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1397,"kind":2048,"name":"Accidental","url":"classes/Factory.html#Accidental","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1398,"kind":2048,"name":"Annotation","url":"classes/Factory.html#Annotation","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1399,"kind":2048,"name":"ChordSymbol","url":"classes/Factory.html#ChordSymbol","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1400,"kind":2048,"name":"Articulation","url":"classes/Factory.html#Articulation","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1401,"kind":2048,"name":"Ornament","url":"classes/Factory.html#Ornament","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1402,"kind":2048,"name":"TextDynamics","url":"classes/Factory.html#TextDynamics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1403,"kind":2048,"name":"Fingering","url":"classes/Factory.html#Fingering","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1404,"kind":2048,"name":"StringNumber","url":"classes/Factory.html#StringNumber","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1405,"kind":2048,"name":"TickContext","url":"classes/Factory.html#TickContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1406,"kind":2048,"name":"ModifierContext","url":"classes/Factory.html#ModifierContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1407,"kind":2048,"name":"MultiMeasureRest","url":"classes/Factory.html#MultiMeasureRest","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1408,"kind":2048,"name":"Voice","url":"classes/Factory.html#Voice","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1409,"kind":2048,"name":"StaveConnector","url":"classes/Factory.html#StaveConnector","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1410,"kind":2048,"name":"Formatter","url":"classes/Factory.html#Formatter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1411,"kind":2048,"name":"Tuplet","url":"classes/Factory.html#Tuplet","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1412,"kind":2048,"name":"Beam","url":"classes/Factory.html#Beam","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1413,"kind":2048,"name":"Curve","url":"classes/Factory.html#Curve","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1414,"kind":2048,"name":"StaveTie","url":"classes/Factory.html#StaveTie","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1415,"kind":2048,"name":"StaveLine","url":"classes/Factory.html#StaveLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1416,"kind":2048,"name":"VibratoBracket","url":"classes/Factory.html#VibratoBracket","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1417,"kind":2048,"name":"TextBracket","url":"classes/Factory.html#TextBracket","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1418,"kind":2048,"name":"System","url":"classes/Factory.html#System","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1419,"kind":2048,"name":"EasyScore","url":"classes/Factory.html#EasyScore","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1420,"kind":2048,"name":"PedalMarking","url":"classes/Factory.html#PedalMarking","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1421,"kind":2048,"name":"NoteSubGroup","url":"classes/Factory.html#NoteSubGroup","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1422,"kind":2048,"name":"draw","url":"classes/Factory.html#draw","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1423,"kind":128,"name":"Flow","url":"classes/Flow.html","classes":"tsd-kind-class"},{"id":1424,"kind":262144,"name":"BUILD","url":"classes/Flow.html#BUILD","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1425,"kind":1024,"name":"Accidental","url":"classes/Flow.html#Accidental","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1426,"kind":1024,"name":"Annotation","url":"classes/Flow.html#Annotation","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1427,"kind":1024,"name":"Articulation","url":"classes/Flow.html#Articulation","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1428,"kind":1024,"name":"Barline","url":"classes/Flow.html#Barline","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1429,"kind":1024,"name":"BarNote","url":"classes/Flow.html#BarNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1430,"kind":1024,"name":"Beam","url":"classes/Flow.html#Beam","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1431,"kind":1024,"name":"Bend","url":"classes/Flow.html#Bend","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1432,"kind":1024,"name":"BoundingBox","url":"classes/Flow.html#BoundingBox","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1433,"kind":1024,"name":"BoundingBoxComputation","url":"classes/Flow.html#BoundingBoxComputation","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1434,"kind":1024,"name":"CanvasContext","url":"classes/Flow.html#CanvasContext","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1435,"kind":1024,"name":"ChordSymbol","url":"classes/Flow.html#ChordSymbol","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1436,"kind":1024,"name":"Clef","url":"classes/Flow.html#Clef","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1437,"kind":1024,"name":"ClefNote","url":"classes/Flow.html#ClefNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1438,"kind":1024,"name":"Crescendo","url":"classes/Flow.html#Crescendo","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1439,"kind":1024,"name":"Curve","url":"classes/Flow.html#Curve","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1440,"kind":1024,"name":"Dot","url":"classes/Flow.html#Dot","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1441,"kind":1024,"name":"EasyScore","url":"classes/Flow.html#EasyScore","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1442,"kind":1024,"name":"Element","url":"classes/Flow.html#Element","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1443,"kind":1024,"name":"Factory","url":"classes/Flow.html#Factory","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1444,"kind":1024,"name":"Font","url":"classes/Flow.html#Font","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1445,"kind":1024,"name":"Formatter","url":"classes/Flow.html#Formatter","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1446,"kind":1024,"name":"Fraction","url":"classes/Flow.html#Fraction","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1447,"kind":1024,"name":"FretHandFinger","url":"classes/Flow.html#FretHandFinger","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1448,"kind":1024,"name":"GhostNote","url":"classes/Flow.html#GhostNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1449,"kind":1024,"name":"Glyph","url":"classes/Flow.html#Glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1450,"kind":1024,"name":"GlyphNote","url":"classes/Flow.html#GlyphNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1451,"kind":1024,"name":"GraceNote","url":"classes/Flow.html#GraceNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1452,"kind":1024,"name":"GraceNoteGroup","url":"classes/Flow.html#GraceNoteGroup","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1453,"kind":1024,"name":"GraceTabNote","url":"classes/Flow.html#GraceTabNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1454,"kind":1024,"name":"KeyManager","url":"classes/Flow.html#KeyManager","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1455,"kind":1024,"name":"KeySignature","url":"classes/Flow.html#KeySignature","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1456,"kind":1024,"name":"KeySigNote","url":"classes/Flow.html#KeySigNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1457,"kind":1024,"name":"Modifier","url":"classes/Flow.html#Modifier","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1458,"kind":1024,"name":"ModifierContext","url":"classes/Flow.html#ModifierContext","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1459,"kind":1024,"name":"MultiMeasureRest","url":"classes/Flow.html#MultiMeasureRest","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1460,"kind":1024,"name":"Music","url":"classes/Flow.html#Music","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1461,"kind":1024,"name":"Note","url":"classes/Flow.html#Note","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1462,"kind":1024,"name":"NoteHead","url":"classes/Flow.html#NoteHead","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1463,"kind":1024,"name":"NoteSubGroup","url":"classes/Flow.html#NoteSubGroup","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1464,"kind":1024,"name":"Ornament","url":"classes/Flow.html#Ornament","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1465,"kind":1024,"name":"Parenthesis","url":"classes/Flow.html#Parenthesis","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1466,"kind":1024,"name":"Parser","url":"classes/Flow.html#Parser","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1467,"kind":1024,"name":"PedalMarking","url":"classes/Flow.html#PedalMarking","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1468,"kind":1024,"name":"Registry","url":"classes/Flow.html#Registry","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1469,"kind":1024,"name":"RenderContext","url":"classes/Flow.html#RenderContext","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1470,"kind":1024,"name":"Renderer","url":"classes/Flow.html#Renderer","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1471,"kind":1024,"name":"RepeatNote","url":"classes/Flow.html#RepeatNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1472,"kind":1024,"name":"Repetition","url":"classes/Flow.html#Repetition","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1473,"kind":1024,"name":"Stave","url":"classes/Flow.html#Stave","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1474,"kind":1024,"name":"StaveConnector","url":"classes/Flow.html#StaveConnector","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1475,"kind":1024,"name":"StaveHairpin","url":"classes/Flow.html#StaveHairpin","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1476,"kind":1024,"name":"StaveLine","url":"classes/Flow.html#StaveLine","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1477,"kind":1024,"name":"StaveModifier","url":"classes/Flow.html#StaveModifier","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1478,"kind":1024,"name":"StaveNote","url":"classes/Flow.html#StaveNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1479,"kind":1024,"name":"StaveTempo","url":"classes/Flow.html#StaveTempo","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1480,"kind":1024,"name":"StaveText","url":"classes/Flow.html#StaveText","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1481,"kind":1024,"name":"StaveTie","url":"classes/Flow.html#StaveTie","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1482,"kind":1024,"name":"Stem","url":"classes/Flow.html#Stem","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1483,"kind":1024,"name":"StringNumber","url":"classes/Flow.html#StringNumber","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1484,"kind":1024,"name":"Stroke","url":"classes/Flow.html#Stroke","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1485,"kind":1024,"name":"SVGContext","url":"classes/Flow.html#SVGContext","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1486,"kind":1024,"name":"System","url":"classes/Flow.html#System","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1487,"kind":1024,"name":"TabNote","url":"classes/Flow.html#TabNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1488,"kind":1024,"name":"TabSlide","url":"classes/Flow.html#TabSlide","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1489,"kind":1024,"name":"TabStave","url":"classes/Flow.html#TabStave","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1490,"kind":1024,"name":"TabTie","url":"classes/Flow.html#TabTie","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1491,"kind":1024,"name":"TextBracket","url":"classes/Flow.html#TextBracket","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1492,"kind":1024,"name":"TextDynamics","url":"classes/Flow.html#TextDynamics","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1493,"kind":1024,"name":"TextFormatter","url":"classes/Flow.html#TextFormatter","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1494,"kind":1024,"name":"TextNote","url":"classes/Flow.html#TextNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1495,"kind":1024,"name":"TickContext","url":"classes/Flow.html#TickContext","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1496,"kind":1024,"name":"TimeSignature","url":"classes/Flow.html#TimeSignature","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1497,"kind":1024,"name":"TimeSigNote","url":"classes/Flow.html#TimeSigNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1498,"kind":1024,"name":"Tremolo","url":"classes/Flow.html#Tremolo","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1499,"kind":1024,"name":"Tuning","url":"classes/Flow.html#Tuning","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1500,"kind":1024,"name":"Tuplet","url":"classes/Flow.html#Tuplet","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1501,"kind":1024,"name":"Vibrato","url":"classes/Flow.html#Vibrato","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1502,"kind":1024,"name":"VibratoBracket","url":"classes/Flow.html#VibratoBracket","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1503,"kind":1024,"name":"Voice","url":"classes/Flow.html#Voice","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1504,"kind":1024,"name":"Volta","url":"classes/Flow.html#Volta","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1505,"kind":1024,"name":"AnnotationHorizontalJustify","url":"classes/Flow.html#AnnotationHorizontalJustify","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1506,"kind":1024,"name":"AnnotationVerticalJustify","url":"classes/Flow.html#AnnotationVerticalJustify","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1507,"kind":1024,"name":"ChordSymbolHorizontalJustify","url":"classes/Flow.html#ChordSymbolHorizontalJustify","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1508,"kind":1024,"name":"ChordSymbolVerticalJustify","url":"classes/Flow.html#ChordSymbolVerticalJustify","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1509,"kind":1024,"name":"SymbolTypes","url":"classes/Flow.html#SymbolTypes","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1510,"kind":1024,"name":"SymbolModifiers","url":"classes/Flow.html#SymbolModifiers","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1511,"kind":1024,"name":"CurvePosition","url":"classes/Flow.html#CurvePosition","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1512,"kind":1024,"name":"FontWeight","url":"classes/Flow.html#FontWeight","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1513,"kind":1024,"name":"FontStyle","url":"classes/Flow.html#FontStyle","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1514,"kind":1024,"name":"ModifierPosition","url":"classes/Flow.html#ModifierPosition","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1515,"kind":1024,"name":"RendererBackends","url":"classes/Flow.html#RendererBackends","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1516,"kind":1024,"name":"RendererLineEndType","url":"classes/Flow.html#RendererLineEndType","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1517,"kind":1024,"name":"BarlineType","url":"classes/Flow.html#BarlineType","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1518,"kind":1024,"name":"StaveModifierPosition","url":"classes/Flow.html#StaveModifierPosition","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1519,"kind":1024,"name":"VoltaType","url":"classes/Flow.html#VoltaType","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1520,"kind":1024,"name":"TextBracketPosition","url":"classes/Flow.html#TextBracketPosition","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1521,"kind":1024,"name":"TextJustification","url":"classes/Flow.html#TextJustification","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1522,"kind":1024,"name":"VoiceMode","url":"classes/Flow.html#VoiceMode","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1523,"kind":2048,"name":"setMusicFont","url":"classes/Flow.html#setMusicFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1524,"kind":2048,"name":"fetchMusicFont","url":"classes/Flow.html#fetchMusicFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1525,"kind":2048,"name":"getMusicFont","url":"classes/Flow.html#getMusicFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1526,"kind":262144,"name":"RENDER_PRECISION_PLACES","url":"classes/Flow.html#RENDER_PRECISION_PLACES","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1527,"kind":262144,"name":"SOFTMAX_FACTOR","url":"classes/Flow.html#SOFTMAX_FACTOR","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1528,"kind":262144,"name":"NOTATION_FONT_SCALE","url":"classes/Flow.html#NOTATION_FONT_SCALE","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1529,"kind":262144,"name":"TABLATURE_FONT_SCALE","url":"classes/Flow.html#TABLATURE_FONT_SCALE","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1530,"kind":262144,"name":"RESOLUTION","url":"classes/Flow.html#RESOLUTION","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1531,"kind":262144,"name":"SLASH_NOTEHEAD_WIDTH","url":"classes/Flow.html#SLASH_NOTEHEAD_WIDTH","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1532,"kind":262144,"name":"STAVE_LINE_DISTANCE","url":"classes/Flow.html#STAVE_LINE_DISTANCE","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1533,"kind":262144,"name":"STAVE_LINE_THICKNESS","url":"classes/Flow.html#STAVE_LINE_THICKNESS","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1534,"kind":262144,"name":"STEM_HEIGHT","url":"classes/Flow.html#STEM_HEIGHT","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1535,"kind":262144,"name":"STEM_WIDTH","url":"classes/Flow.html#STEM_WIDTH","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1536,"kind":262144,"name":"TIME4_4","url":"classes/Flow.html#TIME4_4","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1537,"kind":262144,"name":"accidentalMap","url":"classes/Flow.html#accidentalMap","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1538,"kind":262144,"name":"unicode","url":"classes/Flow.html#unicode","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1539,"kind":2048,"name":"keySignature","url":"classes/Flow.html#keySignature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1540,"kind":2048,"name":"hasKeySignature","url":"classes/Flow.html#hasKeySignature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1541,"kind":2048,"name":"getKeySignatures","url":"classes/Flow.html#getKeySignatures","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1542,"kind":2048,"name":"clefProperties","url":"classes/Flow.html#clefProperties","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1543,"kind":2048,"name":"keyProperties","url":"classes/Flow.html#keyProperties","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1544,"kind":2048,"name":"durationToTicks","url":"classes/Flow.html#durationToTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1545,"kind":512,"name":"constructor","url":"classes/Flow.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Flow"},{"id":1546,"kind":256,"name":"FontInfo","url":"interfaces/FontInfo.html","classes":"tsd-kind-interface"},{"id":1547,"kind":1024,"name":"family","url":"interfaces/FontInfo.html#family","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontInfo"},{"id":1548,"kind":1024,"name":"size","url":"interfaces/FontInfo.html#size","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontInfo"},{"id":1549,"kind":1024,"name":"weight","url":"interfaces/FontInfo.html#weight","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontInfo"},{"id":1550,"kind":1024,"name":"style","url":"interfaces/FontInfo.html#style","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontInfo"},{"id":1551,"kind":4194304,"name":"FontModule","url":"modules.html#FontModule","classes":"tsd-kind-type-alias"},{"id":1552,"kind":65536,"name":"__type","url":"modules.html#FontModule.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"FontModule"},{"id":1553,"kind":1024,"name":"data","url":"modules.html#FontModule.__type.data","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FontModule.__type"},{"id":1554,"kind":1024,"name":"metrics","url":"modules.html#FontModule.__type.metrics","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FontModule.__type"},{"id":1555,"kind":256,"name":"FontData","url":"interfaces/FontData.html","classes":"tsd-kind-interface"},{"id":1556,"kind":1024,"name":"glyphs","url":"interfaces/FontData.html#glyphs","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontData"},{"id":1557,"kind":1024,"name":"fontFamily","url":"interfaces/FontData.html#fontFamily","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontData"},{"id":1558,"kind":1024,"name":"resolution","url":"interfaces/FontData.html#resolution","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontData"},{"id":1559,"kind":1024,"name":"generatedOn","url":"interfaces/FontData.html#generatedOn","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontData"},{"id":1560,"kind":256,"name":"FontMetrics","url":"interfaces/FontMetrics.html","classes":"tsd-kind-interface"},{"id":1561,"kind":1024,"name":"name","url":"interfaces/FontMetrics.html#name","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontMetrics"},{"id":1562,"kind":1024,"name":"smufl","url":"interfaces/FontMetrics.html#smufl","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontMetrics"},{"id":1563,"kind":1024,"name":"stave","url":"interfaces/FontMetrics.html#stave","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontMetrics"},{"id":1564,"kind":1024,"name":"accidental","url":"interfaces/FontMetrics.html#accidental","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontMetrics"},{"id":1565,"kind":1024,"name":"clef","url":"interfaces/FontMetrics.html#clef","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontMetrics"},{"id":1566,"kind":1024,"name":"pedalMarking","url":"interfaces/FontMetrics.html#pedalMarking","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontMetrics"},{"id":1567,"kind":1024,"name":"digits","url":"interfaces/FontMetrics.html#digits","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontMetrics"},{"id":1568,"kind":1024,"name":"articulation","url":"interfaces/FontMetrics.html#articulation","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontMetrics"},{"id":1569,"kind":1024,"name":"tremolo","url":"interfaces/FontMetrics.html#tremolo","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontMetrics"},{"id":1570,"kind":1024,"name":"noteHead","url":"interfaces/FontMetrics.html#noteHead","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontMetrics"},{"id":1571,"kind":1024,"name":"glyphs","url":"interfaces/FontMetrics.html#glyphs","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontMetrics"},{"id":1572,"kind":256,"name":"FontGlyph","url":"interfaces/FontGlyph.html","classes":"tsd-kind-interface"},{"id":1573,"kind":1024,"name":"x_min","url":"interfaces/FontGlyph.html#x_min","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontGlyph"},{"id":1574,"kind":1024,"name":"x_max","url":"interfaces/FontGlyph.html#x_max","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontGlyph"},{"id":1575,"kind":1024,"name":"y_min","url":"interfaces/FontGlyph.html#y_min","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontGlyph"},{"id":1576,"kind":1024,"name":"y_max","url":"interfaces/FontGlyph.html#y_max","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontGlyph"},{"id":1577,"kind":1024,"name":"ha","url":"interfaces/FontGlyph.html#ha","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontGlyph"},{"id":1578,"kind":1024,"name":"leftSideBearing","url":"interfaces/FontGlyph.html#leftSideBearing","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontGlyph"},{"id":1579,"kind":1024,"name":"advanceWidth","url":"interfaces/FontGlyph.html#advanceWidth","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontGlyph"},{"id":1580,"kind":1024,"name":"o","url":"interfaces/FontGlyph.html#o","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontGlyph"},{"id":1581,"kind":1024,"name":"cached_outline","url":"interfaces/FontGlyph.html#cached_outline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontGlyph"},{"id":1582,"kind":8,"name":"FontWeight","url":"enums/FontWeight.html","classes":"tsd-kind-enum"},{"id":1583,"kind":16,"name":"NORMAL","url":"enums/FontWeight.html#NORMAL","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"FontWeight"},{"id":1584,"kind":16,"name":"BOLD","url":"enums/FontWeight.html#BOLD","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"FontWeight"},{"id":1585,"kind":8,"name":"FontStyle","url":"enums/FontStyle.html","classes":"tsd-kind-enum"},{"id":1586,"kind":16,"name":"NORMAL","url":"enums/FontStyle.html#NORMAL","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"FontStyle"},{"id":1587,"kind":16,"name":"ITALIC","url":"enums/FontStyle.html#ITALIC","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"FontStyle"},{"id":1588,"kind":128,"name":"Font","url":"classes/Font.html","classes":"tsd-kind-class"},{"id":1589,"kind":1024,"name":"SANS_SERIF","url":"classes/Font.html#SANS_SERIF","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1590,"kind":1024,"name":"SERIF","url":"classes/Font.html#SERIF","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1591,"kind":1024,"name":"SIZE","url":"classes/Font.html#SIZE","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1592,"kind":1024,"name":"scaleToPxFrom","url":"classes/Font.html#scaleToPxFrom","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1593,"kind":2048,"name":"convertSizeToPixelValue","url":"classes/Font.html#convertSizeToPixelValue","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1594,"kind":2048,"name":"convertSizeToPointValue","url":"classes/Font.html#convertSizeToPointValue","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1595,"kind":2048,"name":"validate","url":"classes/Font.html#validate","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1596,"kind":2048,"name":"fromCSSString","url":"classes/Font.html#fromCSSString","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1597,"kind":2048,"name":"toCSSString","url":"classes/Font.html#toCSSString","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1598,"kind":2048,"name":"scaleSize","url":"classes/Font.html#scaleSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"Font"},{"id":1599,"kind":2048,"name":"isBold","url":"classes/Font.html#isBold","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1600,"kind":2048,"name":"isItalic","url":"classes/Font.html#isItalic","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1601,"kind":1024,"name":"WEB_FONT_HOST","url":"classes/Font.html#WEB_FONT_HOST","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1602,"kind":1024,"name":"WEB_FONT_FILES","url":"classes/Font.html#WEB_FONT_FILES","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1603,"kind":2048,"name":"loadWebFont","url":"classes/Font.html#loadWebFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1604,"kind":2048,"name":"loadWebFonts","url":"classes/Font.html#loadWebFonts","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1605,"kind":2048,"name":"load","url":"classes/Font.html#load","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1606,"kind":2048,"name":"getName","url":"classes/Font.html#getName","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Font"},{"id":1607,"kind":2048,"name":"getData","url":"classes/Font.html#getData","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Font"},{"id":1608,"kind":2048,"name":"getMetrics","url":"classes/Font.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Font"},{"id":1609,"kind":2048,"name":"setData","url":"classes/Font.html#setData","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Font"},{"id":1610,"kind":2048,"name":"setMetrics","url":"classes/Font.html#setMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Font"},{"id":1611,"kind":2048,"name":"hasData","url":"classes/Font.html#hasData","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Font"},{"id":1612,"kind":2048,"name":"getResolution","url":"classes/Font.html#getResolution","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Font"},{"id":1613,"kind":2048,"name":"getGlyphs","url":"classes/Font.html#getGlyphs","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Font"},{"id":1614,"kind":2048,"name":"lookupMetric","url":"classes/Font.html#lookupMetric","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Font"},{"id":1615,"kind":2048,"name":"toString","url":"classes/Font.html#toString","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Font"},{"id":1616,"kind":256,"name":"FormatterOptions","url":"interfaces/FormatterOptions.html","classes":"tsd-kind-interface"},{"id":1617,"kind":1024,"name":"softmaxFactor","url":"interfaces/FormatterOptions.html#softmaxFactor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FormatterOptions"},{"id":1618,"kind":1024,"name":"globalSoftmax","url":"interfaces/FormatterOptions.html#globalSoftmax","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FormatterOptions"},{"id":1619,"kind":1024,"name":"maxIterations","url":"interfaces/FormatterOptions.html#maxIterations","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FormatterOptions"},{"id":1620,"kind":256,"name":"FormatParams","url":"interfaces/FormatParams.html","classes":"tsd-kind-interface"},{"id":1621,"kind":1024,"name":"align_rests","url":"interfaces/FormatParams.html#align_rests","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FormatParams"},{"id":1622,"kind":1024,"name":"stave","url":"interfaces/FormatParams.html#stave","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FormatParams"},{"id":1623,"kind":1024,"name":"context","url":"interfaces/FormatParams.html#context","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FormatParams"},{"id":1624,"kind":1024,"name":"auto_beam","url":"interfaces/FormatParams.html#auto_beam","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FormatParams"},{"id":1625,"kind":256,"name":"AlignmentContexts","url":"interfaces/AlignmentContexts.html","classes":"tsd-kind-interface tsd-has-type-parameter"},{"id":1626,"kind":1024,"name":"list","url":"interfaces/AlignmentContexts.html#list","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"AlignmentContexts"},{"id":1627,"kind":1024,"name":"map","url":"interfaces/AlignmentContexts.html#map","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"AlignmentContexts"},{"id":1628,"kind":1024,"name":"array","url":"interfaces/AlignmentContexts.html#array","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"AlignmentContexts"},{"id":1629,"kind":1024,"name":"resolutionMultiplier","url":"interfaces/AlignmentContexts.html#resolutionMultiplier","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"AlignmentContexts"},{"id":1630,"kind":128,"name":"Formatter","url":"classes/Formatter.html","classes":"tsd-kind-class"},{"id":1631,"kind":1024,"name":"DEBUG","url":"classes/Formatter.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Formatter"},{"id":1632,"kind":2048,"name":"SimpleFormat","url":"classes/Formatter.html#SimpleFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Formatter"},{"id":1633,"kind":2048,"name":"plotDebugging","url":"classes/Formatter.html#plotDebugging","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Formatter"},{"id":1634,"kind":2048,"name":"FormatAndDraw","url":"classes/Formatter.html#FormatAndDraw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Formatter"},{"id":1635,"kind":2048,"name":"FormatAndDrawTab","url":"classes/Formatter.html#FormatAndDrawTab","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Formatter"},{"id":1636,"kind":2048,"name":"AlignRestsToNotes","url":"classes/Formatter.html#AlignRestsToNotes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Formatter"},{"id":1637,"kind":2048,"name":"getResolutionMultiplier","url":"classes/Formatter.html#getResolutionMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Formatter"},{"id":1638,"kind":512,"name":"constructor","url":"classes/Formatter.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Formatter"},{"id":1639,"kind":2048,"name":"alignRests","url":"classes/Formatter.html#alignRests","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1640,"kind":2048,"name":"preCalculateMinTotalWidth","url":"classes/Formatter.html#preCalculateMinTotalWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1641,"kind":2048,"name":"getMinTotalWidth","url":"classes/Formatter.html#getMinTotalWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1642,"kind":2048,"name":"createModifierContexts","url":"classes/Formatter.html#createModifierContexts","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1643,"kind":2048,"name":"createTickContexts","url":"classes/Formatter.html#createTickContexts","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1644,"kind":2048,"name":"preFormat","url":"classes/Formatter.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1645,"kind":2048,"name":"evaluate","url":"classes/Formatter.html#evaluate","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1646,"kind":2048,"name":"tune","url":"classes/Formatter.html#tune","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1647,"kind":2048,"name":"postFormat","url":"classes/Formatter.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1648,"kind":2048,"name":"joinVoices","url":"classes/Formatter.html#joinVoices","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1649,"kind":2048,"name":"format","url":"classes/Formatter.html#format","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1650,"kind":2048,"name":"formatToStave","url":"classes/Formatter.html#formatToStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1651,"kind":2048,"name":"getTickContext","url":"classes/Formatter.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1652,"kind":128,"name":"Fraction","url":"classes/Fraction.html","classes":"tsd-kind-class"},{"id":1653,"kind":262144,"name":"CATEGORY","url":"classes/Fraction.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Fraction"},{"id":1654,"kind":2048,"name":"GCD","url":"classes/Fraction.html#GCD","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Fraction"},{"id":1655,"kind":2048,"name":"LCM","url":"classes/Fraction.html#LCM","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Fraction"},{"id":1656,"kind":2048,"name":"LCMM","url":"classes/Fraction.html#LCMM","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Fraction"},{"id":1657,"kind":512,"name":"constructor","url":"classes/Fraction.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Fraction"},{"id":1658,"kind":1024,"name":"numerator","url":"classes/Fraction.html#numerator","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Fraction"},{"id":1659,"kind":1024,"name":"denominator","url":"classes/Fraction.html#denominator","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Fraction"},{"id":1660,"kind":2048,"name":"set","url":"classes/Fraction.html#set","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1661,"kind":2048,"name":"value","url":"classes/Fraction.html#value","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1662,"kind":2048,"name":"simplify","url":"classes/Fraction.html#simplify","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1663,"kind":2048,"name":"add","url":"classes/Fraction.html#add","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1664,"kind":2048,"name":"subtract","url":"classes/Fraction.html#subtract","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1665,"kind":2048,"name":"multiply","url":"classes/Fraction.html#multiply","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1666,"kind":2048,"name":"divide","url":"classes/Fraction.html#divide","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1667,"kind":2048,"name":"equals","url":"classes/Fraction.html#equals","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1668,"kind":2048,"name":"greaterThan","url":"classes/Fraction.html#greaterThan","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1669,"kind":2048,"name":"greaterThanEquals","url":"classes/Fraction.html#greaterThanEquals","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1670,"kind":2048,"name":"lessThan","url":"classes/Fraction.html#lessThan","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1671,"kind":2048,"name":"lessThanEquals","url":"classes/Fraction.html#lessThanEquals","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1672,"kind":2048,"name":"clone","url":"classes/Fraction.html#clone","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1673,"kind":2048,"name":"copy","url":"classes/Fraction.html#copy","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1674,"kind":2048,"name":"quotient","url":"classes/Fraction.html#quotient","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1675,"kind":2048,"name":"remainder","url":"classes/Fraction.html#remainder","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1676,"kind":2048,"name":"makeAbs","url":"classes/Fraction.html#makeAbs","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1677,"kind":2048,"name":"toString","url":"classes/Fraction.html#toString","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1678,"kind":2048,"name":"toSimplifiedString","url":"classes/Fraction.html#toSimplifiedString","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1679,"kind":2048,"name":"toMixedString","url":"classes/Fraction.html#toMixedString","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1680,"kind":2048,"name":"parse","url":"classes/Fraction.html#parse","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1681,"kind":128,"name":"FretHandFinger","url":"classes/FretHandFinger.html","classes":"tsd-kind-class"},{"id":1682,"kind":262144,"name":"CATEGORY","url":"classes/FretHandFinger.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"FretHandFinger"},{"id":1683,"kind":1024,"name":"TEXT_FONT","url":"classes/FretHandFinger.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"FretHandFinger"},{"id":1684,"kind":2048,"name":"format","url":"classes/FretHandFinger.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"FretHandFinger"},{"id":1685,"kind":2048,"name":"easyScoreHook","url":"classes/FretHandFinger.html#easyScoreHook","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"FretHandFinger"},{"id":1686,"kind":262144,"name":"Position","url":"classes/FretHandFinger.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"FretHandFinger"},{"id":1687,"kind":262144,"name":"PositionString","url":"classes/FretHandFinger.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"FretHandFinger"},{"id":1688,"kind":512,"name":"constructor","url":"classes/FretHandFinger.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"FretHandFinger"},{"id":1689,"kind":2048,"name":"setFretHandFinger","url":"classes/FretHandFinger.html#setFretHandFinger","classes":"tsd-kind-method tsd-parent-kind-class","parent":"FretHandFinger"},{"id":1690,"kind":2048,"name":"getFretHandFinger","url":"classes/FretHandFinger.html#getFretHandFinger","classes":"tsd-kind-method tsd-parent-kind-class","parent":"FretHandFinger"},{"id":1691,"kind":2048,"name":"setOffsetX","url":"classes/FretHandFinger.html#setOffsetX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"FretHandFinger"},{"id":1692,"kind":2048,"name":"setOffsetY","url":"classes/FretHandFinger.html#setOffsetY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"FretHandFinger"},{"id":1693,"kind":2048,"name":"draw","url":"classes/FretHandFinger.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"FretHandFinger"},{"id":1694,"kind":2048,"name":"getWidth","url":"classes/FretHandFinger.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1695,"kind":2048,"name":"setWidth","url":"classes/FretHandFinger.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1696,"kind":2048,"name":"getNote","url":"classes/FretHandFinger.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1697,"kind":2048,"name":"checkAttachedNote","url":"classes/FretHandFinger.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1698,"kind":2048,"name":"setNote","url":"classes/FretHandFinger.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1699,"kind":2048,"name":"getIndex","url":"classes/FretHandFinger.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1700,"kind":2048,"name":"checkIndex","url":"classes/FretHandFinger.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1701,"kind":2048,"name":"setIndex","url":"classes/FretHandFinger.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1702,"kind":2048,"name":"getModifierContext","url":"classes/FretHandFinger.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1703,"kind":2048,"name":"checkModifierContext","url":"classes/FretHandFinger.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1704,"kind":2048,"name":"setModifierContext","url":"classes/FretHandFinger.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1705,"kind":2048,"name":"getPosition","url":"classes/FretHandFinger.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1706,"kind":2048,"name":"setPosition","url":"classes/FretHandFinger.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1707,"kind":2048,"name":"setTextLine","url":"classes/FretHandFinger.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1708,"kind":2048,"name":"setYShift","url":"classes/FretHandFinger.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1709,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/FretHandFinger.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1710,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/FretHandFinger.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1711,"kind":2048,"name":"setXShift","url":"classes/FretHandFinger.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1712,"kind":2048,"name":"getXShift","url":"classes/FretHandFinger.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1713,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/FretHandFinger.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1714,"kind":2048,"name":"addChildElement","url":"classes/FretHandFinger.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1715,"kind":2048,"name":"getCategory","url":"classes/FretHandFinger.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1716,"kind":2048,"name":"setStyle","url":"classes/FretHandFinger.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1717,"kind":2048,"name":"setGroupStyle","url":"classes/FretHandFinger.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1718,"kind":2048,"name":"getStyle","url":"classes/FretHandFinger.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1719,"kind":2048,"name":"applyStyle","url":"classes/FretHandFinger.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1720,"kind":2048,"name":"restoreStyle","url":"classes/FretHandFinger.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1721,"kind":2048,"name":"drawWithStyle","url":"classes/FretHandFinger.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1722,"kind":2048,"name":"hasClass","url":"classes/FretHandFinger.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1723,"kind":2048,"name":"addClass","url":"classes/FretHandFinger.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1724,"kind":2048,"name":"removeClass","url":"classes/FretHandFinger.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1725,"kind":2048,"name":"onRegister","url":"classes/FretHandFinger.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1726,"kind":2048,"name":"isRendered","url":"classes/FretHandFinger.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1727,"kind":2048,"name":"setRendered","url":"classes/FretHandFinger.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1728,"kind":2048,"name":"getAttributes","url":"classes/FretHandFinger.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1729,"kind":2048,"name":"getAttribute","url":"classes/FretHandFinger.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1730,"kind":2048,"name":"setAttribute","url":"classes/FretHandFinger.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1731,"kind":2048,"name":"getBoundingBox","url":"classes/FretHandFinger.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1732,"kind":2048,"name":"getContext","url":"classes/FretHandFinger.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1733,"kind":2048,"name":"setContext","url":"classes/FretHandFinger.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1734,"kind":2048,"name":"checkContext","url":"classes/FretHandFinger.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1735,"kind":262144,"name":"font","url":"classes/FretHandFinger.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1736,"kind":2048,"name":"setFont","url":"classes/FretHandFinger.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1737,"kind":2048,"name":"getFont","url":"classes/FretHandFinger.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1738,"kind":2048,"name":"resetFont","url":"classes/FretHandFinger.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1739,"kind":262144,"name":"fontInfo","url":"classes/FretHandFinger.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1740,"kind":2048,"name":"setFontSize","url":"classes/FretHandFinger.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1741,"kind":2048,"name":"getFontSize","url":"classes/FretHandFinger.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1742,"kind":262144,"name":"fontSize","url":"classes/FretHandFinger.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1743,"kind":262144,"name":"fontSizeInPoints","url":"classes/FretHandFinger.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1744,"kind":262144,"name":"fontSizeInPixels","url":"classes/FretHandFinger.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1745,"kind":262144,"name":"fontStyle","url":"classes/FretHandFinger.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1746,"kind":262144,"name":"fontWeight","url":"classes/FretHandFinger.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1747,"kind":128,"name":"GhostNote","url":"classes/GhostNote.html","classes":"tsd-kind-class"},{"id":1748,"kind":262144,"name":"CATEGORY","url":"classes/GhostNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"GhostNote"},{"id":1749,"kind":2048,"name":"plotMetrics","url":"classes/GhostNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GhostNote"},{"id":1750,"kind":1024,"name":"TEXT_FONT","url":"classes/GhostNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GhostNote"},{"id":1751,"kind":512,"name":"constructor","url":"classes/GhostNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"GhostNote"},{"id":1752,"kind":2048,"name":"isRest","url":"classes/GhostNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GhostNote"},{"id":1753,"kind":2048,"name":"setStave","url":"classes/GhostNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GhostNote"},{"id":1754,"kind":2048,"name":"addToModifierContext","url":"classes/GhostNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GhostNote"},{"id":1755,"kind":2048,"name":"preFormat","url":"classes/GhostNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GhostNote"},{"id":1756,"kind":2048,"name":"draw","url":"classes/GhostNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GhostNote"},{"id":1757,"kind":1024,"name":"stem_direction","url":"classes/GhostNote.html#stem_direction","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1758,"kind":1024,"name":"stem","url":"classes/GhostNote.html#stem","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1759,"kind":2048,"name":"getStem","url":"classes/GhostNote.html#getStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1760,"kind":2048,"name":"checkStem","url":"classes/GhostNote.html#checkStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1761,"kind":2048,"name":"setStem","url":"classes/GhostNote.html#setStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1762,"kind":2048,"name":"buildStem","url":"classes/GhostNote.html#buildStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1763,"kind":2048,"name":"buildFlag","url":"classes/GhostNote.html#buildFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1764,"kind":2048,"name":"getBaseCustomNoteHeadGlyph","url":"classes/GhostNote.html#getBaseCustomNoteHeadGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1765,"kind":2048,"name":"getStemLength","url":"classes/GhostNote.html#getStemLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1766,"kind":2048,"name":"getBeamCount","url":"classes/GhostNote.html#getBeamCount","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1767,"kind":2048,"name":"getStemMinimumLength","url":"classes/GhostNote.html#getStemMinimumLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1768,"kind":2048,"name":"getStemDirection","url":"classes/GhostNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1769,"kind":2048,"name":"setStemDirection","url":"classes/GhostNote.html#setStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1770,"kind":2048,"name":"getStemX","url":"classes/GhostNote.html#getStemX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1771,"kind":2048,"name":"getCenterGlyphX","url":"classes/GhostNote.html#getCenterGlyphX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1772,"kind":2048,"name":"getStemExtension","url":"classes/GhostNote.html#getStemExtension","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1773,"kind":2048,"name":"setStemLength","url":"classes/GhostNote.html#setStemLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1774,"kind":2048,"name":"getStemExtents","url":"classes/GhostNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1775,"kind":2048,"name":"getYForTopText","url":"classes/GhostNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1776,"kind":2048,"name":"getYForBottomText","url":"classes/GhostNote.html#getYForBottomText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1777,"kind":2048,"name":"hasFlag","url":"classes/GhostNote.html#hasFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1778,"kind":2048,"name":"postFormat","url":"classes/GhostNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1779,"kind":2048,"name":"drawStem","url":"classes/GhostNote.html#drawStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1780,"kind":1024,"name":"glyph","url":"classes/GhostNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1781,"kind":1024,"name":"keys","url":"classes/GhostNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1782,"kind":1024,"name":"keyProps","url":"classes/GhostNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1783,"kind":1024,"name":"render_options","url":"classes/GhostNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1784,"kind":65536,"name":"__type","url":"classes/GhostNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"GhostNote"},{"id":1785,"kind":1024,"name":"draw_stem_through_stave","url":"classes/GhostNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1786,"kind":1024,"name":"draw","url":"classes/GhostNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1787,"kind":1024,"name":"draw_dots","url":"classes/GhostNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1788,"kind":1024,"name":"draw_stem","url":"classes/GhostNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1789,"kind":1024,"name":"y_shift","url":"classes/GhostNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1790,"kind":1024,"name":"extend_left","url":"classes/GhostNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1791,"kind":1024,"name":"extend_right","url":"classes/GhostNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1792,"kind":1024,"name":"glyph_font_scale","url":"classes/GhostNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1793,"kind":1024,"name":"annotation_spacing","url":"classes/GhostNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1794,"kind":1024,"name":"glyph_font_size","url":"classes/GhostNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1795,"kind":1024,"name":"scale","url":"classes/GhostNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1796,"kind":1024,"name":"font","url":"classes/GhostNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1797,"kind":1024,"name":"stroke_px","url":"classes/GhostNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1798,"kind":2048,"name":"getPlayNote","url":"classes/GhostNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1799,"kind":2048,"name":"setPlayNote","url":"classes/GhostNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1800,"kind":2048,"name":"addStroke","url":"classes/GhostNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1801,"kind":2048,"name":"getStave","url":"classes/GhostNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1802,"kind":2048,"name":"checkStave","url":"classes/GhostNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1803,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/GhostNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1804,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/GhostNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1805,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/GhostNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1806,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/GhostNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1807,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/GhostNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1808,"kind":2048,"name":"getLineNumber","url":"classes/GhostNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1809,"kind":2048,"name":"getLineForRest","url":"classes/GhostNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1810,"kind":2048,"name":"getGlyph","url":"classes/GhostNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1811,"kind":2048,"name":"getGlyphWidth","url":"classes/GhostNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1812,"kind":2048,"name":"setYs","url":"classes/GhostNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1813,"kind":2048,"name":"getYs","url":"classes/GhostNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1814,"kind":2048,"name":"getVoice","url":"classes/GhostNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1815,"kind":2048,"name":"setVoice","url":"classes/GhostNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1816,"kind":2048,"name":"getTickContext","url":"classes/GhostNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1817,"kind":2048,"name":"setTickContext","url":"classes/GhostNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1818,"kind":2048,"name":"getDuration","url":"classes/GhostNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1819,"kind":2048,"name":"isDotted","url":"classes/GhostNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1820,"kind":2048,"name":"hasStem","url":"classes/GhostNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1821,"kind":2048,"name":"getNoteType","url":"classes/GhostNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1822,"kind":2048,"name":"getBeam","url":"classes/GhostNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1823,"kind":2048,"name":"checkBeam","url":"classes/GhostNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1824,"kind":2048,"name":"hasBeam","url":"classes/GhostNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1825,"kind":2048,"name":"setBeam","url":"classes/GhostNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1826,"kind":2048,"name":"addModifier","url":"classes/GhostNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1827,"kind":2048,"name":"getModifiersByType","url":"classes/GhostNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1828,"kind":2048,"name":"getModifierStartXY","url":"classes/GhostNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1829,"kind":2048,"name":"getRightParenthesisPx","url":"classes/GhostNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1830,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/GhostNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1831,"kind":2048,"name":"getFirstDotPx","url":"classes/GhostNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1832,"kind":2048,"name":"getMetrics","url":"classes/GhostNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1833,"kind":2048,"name":"getAbsoluteX","url":"classes/GhostNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1834,"kind":2048,"name":"getTieRightX","url":"classes/GhostNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1835,"kind":2048,"name":"getTieLeftX","url":"classes/GhostNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1836,"kind":2048,"name":"getKeys","url":"classes/GhostNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1837,"kind":2048,"name":"getKeyProps","url":"classes/GhostNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1838,"kind":2048,"name":"reset","url":"classes/GhostNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1839,"kind":2048,"name":"getTicks","url":"classes/GhostNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1840,"kind":2048,"name":"setIgnoreTicks","url":"classes/GhostNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1841,"kind":2048,"name":"setWidth","url":"classes/GhostNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1842,"kind":2048,"name":"getWidth","url":"classes/GhostNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1843,"kind":2048,"name":"setXShift","url":"classes/GhostNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1844,"kind":2048,"name":"getXShift","url":"classes/GhostNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1845,"kind":2048,"name":"getX","url":"classes/GhostNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1846,"kind":2048,"name":"getFormatterMetrics","url":"classes/GhostNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1847,"kind":2048,"name":"getCenterXShift","url":"classes/GhostNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1848,"kind":2048,"name":"setCenterXShift","url":"classes/GhostNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1849,"kind":2048,"name":"isCenterAligned","url":"classes/GhostNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1850,"kind":2048,"name":"setCenterAlignment","url":"classes/GhostNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1851,"kind":2048,"name":"getTuplet","url":"classes/GhostNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1852,"kind":2048,"name":"getTupletStack","url":"classes/GhostNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1853,"kind":2048,"name":"resetTuplet","url":"classes/GhostNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1854,"kind":2048,"name":"setTuplet","url":"classes/GhostNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1855,"kind":2048,"name":"getModifiers","url":"classes/GhostNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1856,"kind":2048,"name":"checkTickContext","url":"classes/GhostNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1857,"kind":262144,"name":"preFormatted","url":"classes/GhostNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1858,"kind":262144,"name":"postFormatted","url":"classes/GhostNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1859,"kind":2048,"name":"getIntrinsicTicks","url":"classes/GhostNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1860,"kind":2048,"name":"setIntrinsicTicks","url":"classes/GhostNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1861,"kind":2048,"name":"getTickMultiplier","url":"classes/GhostNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1862,"kind":2048,"name":"applyTickMultiplier","url":"classes/GhostNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1863,"kind":2048,"name":"setDuration","url":"classes/GhostNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1864,"kind":2048,"name":"setModifierContext","url":"classes/GhostNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1865,"kind":2048,"name":"getModifierContext","url":"classes/GhostNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1866,"kind":2048,"name":"checkModifierContext","url":"classes/GhostNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1867,"kind":2048,"name":"addChildElement","url":"classes/GhostNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1868,"kind":2048,"name":"getCategory","url":"classes/GhostNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1869,"kind":2048,"name":"setStyle","url":"classes/GhostNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1870,"kind":2048,"name":"setGroupStyle","url":"classes/GhostNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1871,"kind":2048,"name":"getStyle","url":"classes/GhostNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1872,"kind":2048,"name":"applyStyle","url":"classes/GhostNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1873,"kind":2048,"name":"restoreStyle","url":"classes/GhostNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1874,"kind":2048,"name":"drawWithStyle","url":"classes/GhostNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1875,"kind":2048,"name":"hasClass","url":"classes/GhostNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1876,"kind":2048,"name":"addClass","url":"classes/GhostNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1877,"kind":2048,"name":"removeClass","url":"classes/GhostNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1878,"kind":2048,"name":"onRegister","url":"classes/GhostNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1879,"kind":2048,"name":"isRendered","url":"classes/GhostNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1880,"kind":2048,"name":"setRendered","url":"classes/GhostNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1881,"kind":2048,"name":"getAttributes","url":"classes/GhostNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1882,"kind":2048,"name":"getAttribute","url":"classes/GhostNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1883,"kind":2048,"name":"setAttribute","url":"classes/GhostNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1884,"kind":2048,"name":"getBoundingBox","url":"classes/GhostNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1885,"kind":2048,"name":"getContext","url":"classes/GhostNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1886,"kind":2048,"name":"setContext","url":"classes/GhostNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1887,"kind":2048,"name":"checkContext","url":"classes/GhostNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1888,"kind":262144,"name":"font","url":"classes/GhostNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1889,"kind":2048,"name":"setFont","url":"classes/GhostNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1890,"kind":2048,"name":"getFont","url":"classes/GhostNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1891,"kind":2048,"name":"resetFont","url":"classes/GhostNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1892,"kind":262144,"name":"fontInfo","url":"classes/GhostNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1893,"kind":2048,"name":"setFontSize","url":"classes/GhostNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1894,"kind":2048,"name":"getFontSize","url":"classes/GhostNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1895,"kind":262144,"name":"fontSize","url":"classes/GhostNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1896,"kind":262144,"name":"fontSizeInPoints","url":"classes/GhostNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1897,"kind":262144,"name":"fontSizeInPixels","url":"classes/GhostNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1898,"kind":262144,"name":"fontStyle","url":"classes/GhostNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1899,"kind":262144,"name":"fontWeight","url":"classes/GhostNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1900,"kind":256,"name":"GlyphProps","url":"interfaces/GlyphProps.html","classes":"tsd-kind-interface"},{"id":1901,"kind":1024,"name":"code_head","url":"interfaces/GlyphProps.html#code_head","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1902,"kind":1024,"name":"dot_shiftY","url":"interfaces/GlyphProps.html#dot_shiftY","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1903,"kind":1024,"name":"position","url":"interfaces/GlyphProps.html#position","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1904,"kind":1024,"name":"rest","url":"interfaces/GlyphProps.html#rest","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1905,"kind":1024,"name":"line_below","url":"interfaces/GlyphProps.html#line_below","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1906,"kind":1024,"name":"line_above","url":"interfaces/GlyphProps.html#line_above","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1907,"kind":1024,"name":"stem_beam_extension","url":"interfaces/GlyphProps.html#stem_beam_extension","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1908,"kind":1024,"name":"stem_up_extension","url":"interfaces/GlyphProps.html#stem_up_extension","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1909,"kind":1024,"name":"stem_down_extension","url":"interfaces/GlyphProps.html#stem_down_extension","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1910,"kind":1024,"name":"stem","url":"interfaces/GlyphProps.html#stem","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1911,"kind":1024,"name":"code","url":"interfaces/GlyphProps.html#code","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1912,"kind":1024,"name":"code_flag_upstem","url":"interfaces/GlyphProps.html#code_flag_upstem","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1913,"kind":1024,"name":"code_flag_downstem","url":"interfaces/GlyphProps.html#code_flag_downstem","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1914,"kind":1024,"name":"flag","url":"interfaces/GlyphProps.html#flag","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1915,"kind":1024,"name":"width","url":"interfaces/GlyphProps.html#width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1916,"kind":1024,"name":"text","url":"interfaces/GlyphProps.html#text","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1917,"kind":1024,"name":"tabnote_stem_down_extension","url":"interfaces/GlyphProps.html#tabnote_stem_down_extension","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1918,"kind":1024,"name":"tabnote_stem_up_extension","url":"interfaces/GlyphProps.html#tabnote_stem_up_extension","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1919,"kind":1024,"name":"beam_count","url":"interfaces/GlyphProps.html#beam_count","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1920,"kind":1024,"name":"shift_y","url":"interfaces/GlyphProps.html#shift_y","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1921,"kind":2048,"name":"getWidth","url":"interfaces/GlyphProps.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1922,"kind":2048,"name":"getMetrics","url":"interfaces/GlyphProps.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1923,"kind":256,"name":"GlyphOptions","url":"interfaces/GlyphOptions.html","classes":"tsd-kind-interface"},{"id":1924,"kind":1024,"name":"category","url":"interfaces/GlyphOptions.html#category","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphOptions"},{"id":1925,"kind":256,"name":"GlyphMetrics","url":"interfaces/GlyphMetrics.html","classes":"tsd-kind-interface"},{"id":1926,"kind":1024,"name":"width","url":"interfaces/GlyphMetrics.html#width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphMetrics"},{"id":1927,"kind":1024,"name":"height","url":"interfaces/GlyphMetrics.html#height","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphMetrics"},{"id":1928,"kind":1024,"name":"x_min","url":"interfaces/GlyphMetrics.html#x_min","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphMetrics"},{"id":1929,"kind":1024,"name":"x_max","url":"interfaces/GlyphMetrics.html#x_max","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphMetrics"},{"id":1930,"kind":1024,"name":"x_shift","url":"interfaces/GlyphMetrics.html#x_shift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphMetrics"},{"id":1931,"kind":1024,"name":"y_shift","url":"interfaces/GlyphMetrics.html#y_shift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphMetrics"},{"id":1932,"kind":1024,"name":"scale","url":"interfaces/GlyphMetrics.html#scale","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphMetrics"},{"id":1933,"kind":1024,"name":"ha","url":"interfaces/GlyphMetrics.html#ha","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphMetrics"},{"id":1934,"kind":1024,"name":"outline","url":"interfaces/GlyphMetrics.html#outline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphMetrics"},{"id":1935,"kind":1024,"name":"font","url":"interfaces/GlyphMetrics.html#font","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphMetrics"},{"id":1936,"kind":8,"name":"OutlineCode","url":"enums/OutlineCode.html","classes":"tsd-kind-enum"},{"id":1937,"kind":16,"name":"MOVE","url":"enums/OutlineCode.html#MOVE","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OutlineCode"},{"id":1938,"kind":16,"name":"LINE","url":"enums/OutlineCode.html#LINE","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OutlineCode"},{"id":1939,"kind":16,"name":"QUADRATIC","url":"enums/OutlineCode.html#QUADRATIC","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OutlineCode"},{"id":1940,"kind":16,"name":"BEZIER","url":"enums/OutlineCode.html#BEZIER","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OutlineCode"},{"id":1941,"kind":128,"name":"Glyph","url":"classes/Glyph.html","classes":"tsd-kind-class"},{"id":1942,"kind":262144,"name":"CATEGORY","url":"classes/Glyph.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Glyph"},{"id":1943,"kind":1024,"name":"CURRENT_CACHE_KEY","url":"classes/Glyph.html#CURRENT_CACHE_KEY","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Glyph"},{"id":1944,"kind":1024,"name":"MUSIC_FONT_STACK","url":"classes/Glyph.html#MUSIC_FONT_STACK","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Glyph"},{"id":1945,"kind":2048,"name":"lookupFontMetric","url":"classes/Glyph.html#lookupFontMetric","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Glyph"},{"id":1946,"kind":2048,"name":"lookupGlyph","url":"classes/Glyph.html#lookupGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Glyph"},{"id":1947,"kind":2048,"name":"loadMetrics","url":"classes/Glyph.html#loadMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Glyph"},{"id":1948,"kind":2048,"name":"renderGlyph","url":"classes/Glyph.html#renderGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Glyph"},{"id":1949,"kind":2048,"name":"renderOutline","url":"classes/Glyph.html#renderOutline","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Glyph"},{"id":1950,"kind":2048,"name":"getOutlineBoundingBox","url":"classes/Glyph.html#getOutlineBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Glyph"},{"id":1951,"kind":2048,"name":"getWidth","url":"classes/Glyph.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Glyph"},{"id":1952,"kind":1024,"name":"TEXT_FONT","url":"classes/Glyph.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Glyph"},{"id":1953,"kind":512,"name":"constructor","url":"classes/Glyph.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Glyph"},{"id":1954,"kind":1024,"name":"bbox","url":"classes/Glyph.html#bbox","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Glyph"},{"id":1955,"kind":1024,"name":"code","url":"classes/Glyph.html#code","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Glyph"},{"id":1956,"kind":1024,"name":"metrics","url":"classes/Glyph.html#metrics","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Glyph"},{"id":1957,"kind":1024,"name":"topGlyphs","url":"classes/Glyph.html#topGlyphs","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Glyph"},{"id":1958,"kind":1024,"name":"botGlyphs","url":"classes/Glyph.html#botGlyphs","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Glyph"},{"id":1959,"kind":1024,"name":"scale","url":"classes/Glyph.html#scale","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Glyph"},{"id":1960,"kind":2048,"name":"draw","url":"classes/Glyph.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Glyph"},{"id":1961,"kind":2048,"name":"getCode","url":"classes/Glyph.html#getCode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1962,"kind":2048,"name":"setOptions","url":"classes/Glyph.html#setOptions","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1963,"kind":2048,"name":"setPoint","url":"classes/Glyph.html#setPoint","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1964,"kind":2048,"name":"setStave","url":"classes/Glyph.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1965,"kind":2048,"name":"getXShift","url":"classes/Glyph.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1966,"kind":2048,"name":"setXShift","url":"classes/Glyph.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1967,"kind":2048,"name":"getYshift","url":"classes/Glyph.html#getYshift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1968,"kind":2048,"name":"setYShift","url":"classes/Glyph.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1969,"kind":2048,"name":"reset","url":"classes/Glyph.html#reset","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1970,"kind":2048,"name":"checkMetrics","url":"classes/Glyph.html#checkMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1971,"kind":2048,"name":"getMetrics","url":"classes/Glyph.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1972,"kind":2048,"name":"setOriginX","url":"classes/Glyph.html#setOriginX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1973,"kind":2048,"name":"setOriginY","url":"classes/Glyph.html#setOriginY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1974,"kind":2048,"name":"setOrigin","url":"classes/Glyph.html#setOrigin","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1975,"kind":2048,"name":"render","url":"classes/Glyph.html#render","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1976,"kind":2048,"name":"checkStave","url":"classes/Glyph.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1977,"kind":2048,"name":"renderToStave","url":"classes/Glyph.html#renderToStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1978,"kind":2048,"name":"addChildElement","url":"classes/Glyph.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":1979,"kind":2048,"name":"getCategory","url":"classes/Glyph.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":1980,"kind":2048,"name":"setStyle","url":"classes/Glyph.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":1981,"kind":2048,"name":"setGroupStyle","url":"classes/Glyph.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":1982,"kind":2048,"name":"getStyle","url":"classes/Glyph.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":1983,"kind":2048,"name":"applyStyle","url":"classes/Glyph.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":1984,"kind":2048,"name":"restoreStyle","url":"classes/Glyph.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":1985,"kind":2048,"name":"drawWithStyle","url":"classes/Glyph.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":1986,"kind":2048,"name":"hasClass","url":"classes/Glyph.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":1987,"kind":2048,"name":"addClass","url":"classes/Glyph.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":1988,"kind":2048,"name":"removeClass","url":"classes/Glyph.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":1989,"kind":2048,"name":"onRegister","url":"classes/Glyph.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":1990,"kind":2048,"name":"isRendered","url":"classes/Glyph.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":1991,"kind":2048,"name":"setRendered","url":"classes/Glyph.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":1992,"kind":2048,"name":"getAttributes","url":"classes/Glyph.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":1993,"kind":2048,"name":"getAttribute","url":"classes/Glyph.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":1994,"kind":2048,"name":"setAttribute","url":"classes/Glyph.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":1995,"kind":2048,"name":"getBoundingBox","url":"classes/Glyph.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":1996,"kind":2048,"name":"getContext","url":"classes/Glyph.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":1997,"kind":2048,"name":"setContext","url":"classes/Glyph.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":1998,"kind":2048,"name":"checkContext","url":"classes/Glyph.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":1999,"kind":262144,"name":"font","url":"classes/Glyph.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2000,"kind":2048,"name":"setFont","url":"classes/Glyph.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2001,"kind":2048,"name":"getFont","url":"classes/Glyph.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2002,"kind":2048,"name":"resetFont","url":"classes/Glyph.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2003,"kind":262144,"name":"fontInfo","url":"classes/Glyph.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2004,"kind":2048,"name":"setFontSize","url":"classes/Glyph.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2005,"kind":2048,"name":"getFontSize","url":"classes/Glyph.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2006,"kind":262144,"name":"fontSize","url":"classes/Glyph.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2007,"kind":262144,"name":"fontSizeInPoints","url":"classes/Glyph.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2008,"kind":262144,"name":"fontSizeInPixels","url":"classes/Glyph.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2009,"kind":262144,"name":"fontStyle","url":"classes/Glyph.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2010,"kind":262144,"name":"fontWeight","url":"classes/Glyph.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2011,"kind":256,"name":"GlyphNoteOptions","url":"interfaces/GlyphNoteOptions.html","classes":"tsd-kind-interface"},{"id":2012,"kind":1024,"name":"ignoreTicks","url":"interfaces/GlyphNoteOptions.html#ignoreTicks","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphNoteOptions"},{"id":2013,"kind":1024,"name":"line","url":"interfaces/GlyphNoteOptions.html#line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphNoteOptions"},{"id":2014,"kind":128,"name":"GlyphNote","url":"classes/GlyphNote.html","classes":"tsd-kind-class"},{"id":2015,"kind":262144,"name":"CATEGORY","url":"classes/GlyphNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"GlyphNote"},{"id":2016,"kind":2048,"name":"plotMetrics","url":"classes/GlyphNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GlyphNote"},{"id":2017,"kind":1024,"name":"TEXT_FONT","url":"classes/GlyphNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GlyphNote"},{"id":2018,"kind":512,"name":"constructor","url":"classes/GlyphNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"GlyphNote"},{"id":2019,"kind":2048,"name":"setGlyph","url":"classes/GlyphNote.html#setGlyph","classes":"tsd-kind-method tsd-parent-kind-class","parent":"GlyphNote"},{"id":2020,"kind":2048,"name":"getBoundingBox","url":"classes/GlyphNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GlyphNote"},{"id":2021,"kind":2048,"name":"preFormat","url":"classes/GlyphNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GlyphNote"},{"id":2022,"kind":2048,"name":"drawModifiers","url":"classes/GlyphNote.html#drawModifiers","classes":"tsd-kind-method tsd-parent-kind-class","parent":"GlyphNote"},{"id":2023,"kind":2048,"name":"draw","url":"classes/GlyphNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GlyphNote"},{"id":2024,"kind":1024,"name":"glyph","url":"classes/GlyphNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2025,"kind":1024,"name":"keys","url":"classes/GlyphNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2026,"kind":1024,"name":"keyProps","url":"classes/GlyphNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2027,"kind":1024,"name":"render_options","url":"classes/GlyphNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2028,"kind":65536,"name":"__type","url":"classes/GlyphNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"GlyphNote"},{"id":2029,"kind":1024,"name":"draw_stem_through_stave","url":"classes/GlyphNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2030,"kind":1024,"name":"draw","url":"classes/GlyphNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2031,"kind":1024,"name":"draw_dots","url":"classes/GlyphNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2032,"kind":1024,"name":"draw_stem","url":"classes/GlyphNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2033,"kind":1024,"name":"y_shift","url":"classes/GlyphNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2034,"kind":1024,"name":"extend_left","url":"classes/GlyphNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2035,"kind":1024,"name":"extend_right","url":"classes/GlyphNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2036,"kind":1024,"name":"glyph_font_scale","url":"classes/GlyphNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2037,"kind":1024,"name":"annotation_spacing","url":"classes/GlyphNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2038,"kind":1024,"name":"glyph_font_size","url":"classes/GlyphNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2039,"kind":1024,"name":"scale","url":"classes/GlyphNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2040,"kind":1024,"name":"font","url":"classes/GlyphNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2041,"kind":1024,"name":"stroke_px","url":"classes/GlyphNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2042,"kind":2048,"name":"getPlayNote","url":"classes/GlyphNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2043,"kind":2048,"name":"setPlayNote","url":"classes/GlyphNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2044,"kind":2048,"name":"isRest","url":"classes/GlyphNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2045,"kind":2048,"name":"addStroke","url":"classes/GlyphNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2046,"kind":2048,"name":"getStave","url":"classes/GlyphNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2047,"kind":2048,"name":"checkStave","url":"classes/GlyphNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2048,"kind":2048,"name":"setStave","url":"classes/GlyphNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2049,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/GlyphNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2050,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/GlyphNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2051,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/GlyphNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2052,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/GlyphNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2053,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/GlyphNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2054,"kind":2048,"name":"getLineNumber","url":"classes/GlyphNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2055,"kind":2048,"name":"getLineForRest","url":"classes/GlyphNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2056,"kind":2048,"name":"getGlyph","url":"classes/GlyphNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2057,"kind":2048,"name":"getGlyphWidth","url":"classes/GlyphNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2058,"kind":2048,"name":"setYs","url":"classes/GlyphNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2059,"kind":2048,"name":"getYs","url":"classes/GlyphNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2060,"kind":2048,"name":"getYForTopText","url":"classes/GlyphNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2061,"kind":2048,"name":"getVoice","url":"classes/GlyphNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2062,"kind":2048,"name":"setVoice","url":"classes/GlyphNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2063,"kind":2048,"name":"getTickContext","url":"classes/GlyphNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2064,"kind":2048,"name":"setTickContext","url":"classes/GlyphNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2065,"kind":2048,"name":"getDuration","url":"classes/GlyphNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2066,"kind":2048,"name":"isDotted","url":"classes/GlyphNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2067,"kind":2048,"name":"hasStem","url":"classes/GlyphNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2068,"kind":2048,"name":"getNoteType","url":"classes/GlyphNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2069,"kind":2048,"name":"getBeam","url":"classes/GlyphNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2070,"kind":2048,"name":"checkBeam","url":"classes/GlyphNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2071,"kind":2048,"name":"hasBeam","url":"classes/GlyphNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2072,"kind":2048,"name":"setBeam","url":"classes/GlyphNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2073,"kind":2048,"name":"addModifier","url":"classes/GlyphNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2074,"kind":2048,"name":"getModifiersByType","url":"classes/GlyphNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2075,"kind":2048,"name":"getModifierStartXY","url":"classes/GlyphNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2076,"kind":2048,"name":"getRightParenthesisPx","url":"classes/GlyphNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2077,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/GlyphNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2078,"kind":2048,"name":"getFirstDotPx","url":"classes/GlyphNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2079,"kind":2048,"name":"getMetrics","url":"classes/GlyphNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2080,"kind":2048,"name":"getAbsoluteX","url":"classes/GlyphNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2081,"kind":2048,"name":"getStemDirection","url":"classes/GlyphNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2082,"kind":2048,"name":"getStemExtents","url":"classes/GlyphNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2083,"kind":2048,"name":"getTieRightX","url":"classes/GlyphNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2084,"kind":2048,"name":"getTieLeftX","url":"classes/GlyphNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2085,"kind":2048,"name":"getKeys","url":"classes/GlyphNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2086,"kind":2048,"name":"getKeyProps","url":"classes/GlyphNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2087,"kind":2048,"name":"reset","url":"classes/GlyphNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2088,"kind":2048,"name":"getTicks","url":"classes/GlyphNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2089,"kind":2048,"name":"setIgnoreTicks","url":"classes/GlyphNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2090,"kind":2048,"name":"setWidth","url":"classes/GlyphNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2091,"kind":2048,"name":"getWidth","url":"classes/GlyphNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2092,"kind":2048,"name":"setXShift","url":"classes/GlyphNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2093,"kind":2048,"name":"getXShift","url":"classes/GlyphNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2094,"kind":2048,"name":"getX","url":"classes/GlyphNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2095,"kind":2048,"name":"getFormatterMetrics","url":"classes/GlyphNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2096,"kind":2048,"name":"getCenterXShift","url":"classes/GlyphNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2097,"kind":2048,"name":"setCenterXShift","url":"classes/GlyphNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2098,"kind":2048,"name":"isCenterAligned","url":"classes/GlyphNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2099,"kind":2048,"name":"setCenterAlignment","url":"classes/GlyphNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2100,"kind":2048,"name":"getTuplet","url":"classes/GlyphNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2101,"kind":2048,"name":"getTupletStack","url":"classes/GlyphNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2102,"kind":2048,"name":"resetTuplet","url":"classes/GlyphNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2103,"kind":2048,"name":"setTuplet","url":"classes/GlyphNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2104,"kind":2048,"name":"addToModifierContext","url":"classes/GlyphNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2105,"kind":2048,"name":"getModifiers","url":"classes/GlyphNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2106,"kind":2048,"name":"checkTickContext","url":"classes/GlyphNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2107,"kind":262144,"name":"preFormatted","url":"classes/GlyphNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2108,"kind":2048,"name":"postFormat","url":"classes/GlyphNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2109,"kind":262144,"name":"postFormatted","url":"classes/GlyphNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2110,"kind":2048,"name":"getIntrinsicTicks","url":"classes/GlyphNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2111,"kind":2048,"name":"setIntrinsicTicks","url":"classes/GlyphNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2112,"kind":2048,"name":"getTickMultiplier","url":"classes/GlyphNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2113,"kind":2048,"name":"applyTickMultiplier","url":"classes/GlyphNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2114,"kind":2048,"name":"setDuration","url":"classes/GlyphNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2115,"kind":2048,"name":"setModifierContext","url":"classes/GlyphNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2116,"kind":2048,"name":"getModifierContext","url":"classes/GlyphNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2117,"kind":2048,"name":"checkModifierContext","url":"classes/GlyphNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2118,"kind":2048,"name":"addChildElement","url":"classes/GlyphNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2119,"kind":2048,"name":"getCategory","url":"classes/GlyphNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2120,"kind":2048,"name":"setStyle","url":"classes/GlyphNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2121,"kind":2048,"name":"setGroupStyle","url":"classes/GlyphNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2122,"kind":2048,"name":"getStyle","url":"classes/GlyphNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2123,"kind":2048,"name":"applyStyle","url":"classes/GlyphNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2124,"kind":2048,"name":"restoreStyle","url":"classes/GlyphNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2125,"kind":2048,"name":"drawWithStyle","url":"classes/GlyphNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2126,"kind":2048,"name":"hasClass","url":"classes/GlyphNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2127,"kind":2048,"name":"addClass","url":"classes/GlyphNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2128,"kind":2048,"name":"removeClass","url":"classes/GlyphNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2129,"kind":2048,"name":"onRegister","url":"classes/GlyphNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2130,"kind":2048,"name":"isRendered","url":"classes/GlyphNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2131,"kind":2048,"name":"setRendered","url":"classes/GlyphNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2132,"kind":2048,"name":"getAttributes","url":"classes/GlyphNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2133,"kind":2048,"name":"getAttribute","url":"classes/GlyphNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2134,"kind":2048,"name":"setAttribute","url":"classes/GlyphNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2135,"kind":2048,"name":"getContext","url":"classes/GlyphNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2136,"kind":2048,"name":"setContext","url":"classes/GlyphNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2137,"kind":2048,"name":"checkContext","url":"classes/GlyphNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2138,"kind":262144,"name":"font","url":"classes/GlyphNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2139,"kind":2048,"name":"setFont","url":"classes/GlyphNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2140,"kind":2048,"name":"getFont","url":"classes/GlyphNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2141,"kind":2048,"name":"resetFont","url":"classes/GlyphNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2142,"kind":262144,"name":"fontInfo","url":"classes/GlyphNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2143,"kind":2048,"name":"setFontSize","url":"classes/GlyphNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2144,"kind":2048,"name":"getFontSize","url":"classes/GlyphNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2145,"kind":262144,"name":"fontSize","url":"classes/GlyphNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2146,"kind":262144,"name":"fontSizeInPoints","url":"classes/GlyphNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2147,"kind":262144,"name":"fontSizeInPixels","url":"classes/GlyphNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2148,"kind":262144,"name":"fontStyle","url":"classes/GlyphNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2149,"kind":262144,"name":"fontWeight","url":"classes/GlyphNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2150,"kind":256,"name":"GraceNoteStruct","url":"interfaces/GraceNoteStruct.html","classes":"tsd-kind-interface"},{"id":2151,"kind":1024,"name":"slash","url":"interfaces/GraceNoteStruct.html#slash","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GraceNoteStruct"},{"id":2152,"kind":1024,"name":"stem_direction","url":"interfaces/GraceNoteStruct.html#stem_direction","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2153,"kind":1024,"name":"auto_stem","url":"interfaces/GraceNoteStruct.html#auto_stem","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2154,"kind":1024,"name":"stem_down_x_offset","url":"interfaces/GraceNoteStruct.html#stem_down_x_offset","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2155,"kind":1024,"name":"stem_up_x_offset","url":"interfaces/GraceNoteStruct.html#stem_up_x_offset","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2156,"kind":1024,"name":"stroke_px","url":"interfaces/GraceNoteStruct.html#stroke_px","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2157,"kind":1024,"name":"glyph_font_scale","url":"interfaces/GraceNoteStruct.html#glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2158,"kind":1024,"name":"octave_shift","url":"interfaces/GraceNoteStruct.html#octave_shift","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2159,"kind":1024,"name":"clef","url":"interfaces/GraceNoteStruct.html#clef","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2160,"kind":1024,"name":"keys","url":"interfaces/GraceNoteStruct.html#keys","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2161,"kind":1024,"name":"duration","url":"interfaces/GraceNoteStruct.html#duration","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2162,"kind":1024,"name":"line","url":"interfaces/GraceNoteStruct.html#line","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2163,"kind":1024,"name":"dots","url":"interfaces/GraceNoteStruct.html#dots","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2164,"kind":1024,"name":"type","url":"interfaces/GraceNoteStruct.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2165,"kind":1024,"name":"align_center","url":"interfaces/GraceNoteStruct.html#align_center","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2166,"kind":1024,"name":"duration_override","url":"interfaces/GraceNoteStruct.html#duration_override","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2167,"kind":128,"name":"GraceNote","url":"classes/GraceNote.html","classes":"tsd-kind-class"},{"id":2168,"kind":262144,"name":"CATEGORY","url":"classes/GraceNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"GraceNote"},{"id":2169,"kind":262144,"name":"LEDGER_LINE_OFFSET","url":"classes/GraceNote.html#LEDGER_LINE_OFFSET","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"GraceNote"},{"id":2170,"kind":262144,"name":"SCALE","url":"classes/GraceNote.html#SCALE","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"GraceNote"},{"id":2171,"kind":1024,"name":"DEBUG","url":"classes/GraceNote.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceNote"},{"id":2172,"kind":262144,"name":"STEM_UP","url":"classes/GraceNote.html#STEM_UP","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceNote"},{"id":2173,"kind":262144,"name":"STEM_DOWN","url":"classes/GraceNote.html#STEM_DOWN","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceNote"},{"id":2174,"kind":262144,"name":"minNoteheadPadding","url":"classes/GraceNote.html#minNoteheadPadding","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceNote"},{"id":2175,"kind":2048,"name":"format","url":"classes/GraceNote.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceNote"},{"id":2176,"kind":2048,"name":"postFormat","url":"classes/GraceNote.html#postFormat-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceNote"},{"id":2177,"kind":2048,"name":"plotMetrics","url":"classes/GraceNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceNote"},{"id":2178,"kind":1024,"name":"TEXT_FONT","url":"classes/GraceNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceNote"},{"id":2179,"kind":512,"name":"constructor","url":"classes/GraceNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"GraceNote"},{"id":2180,"kind":2048,"name":"getStemExtension","url":"classes/GraceNote.html#getStemExtension","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GraceNote"},{"id":2181,"kind":2048,"name":"getStaveNoteScale","url":"classes/GraceNote.html#getStaveNoteScale","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GraceNote"},{"id":2182,"kind":2048,"name":"draw","url":"classes/GraceNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GraceNote"},{"id":2183,"kind":2048,"name":"calcBeamedNotesSlashBBox","url":"classes/GraceNote.html#calcBeamedNotesSlashBBox","classes":"tsd-kind-method tsd-parent-kind-class","parent":"GraceNote"},{"id":2184,"kind":1024,"name":"minLine","url":"classes/GraceNote.html#minLine","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2185,"kind":1024,"name":"maxLine","url":"classes/GraceNote.html#maxLine","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2186,"kind":2048,"name":"reset","url":"classes/GraceNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2187,"kind":2048,"name":"setBeam","url":"classes/GraceNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2188,"kind":2048,"name":"buildStem","url":"classes/GraceNote.html#buildStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2189,"kind":2048,"name":"buildNoteHeads","url":"classes/GraceNote.html#buildNoteHeads","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2190,"kind":2048,"name":"autoStem","url":"classes/GraceNote.html#autoStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2191,"kind":2048,"name":"calculateOptimalStemDirection","url":"classes/GraceNote.html#calculateOptimalStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2192,"kind":2048,"name":"calculateKeyProps","url":"classes/GraceNote.html#calculateKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2193,"kind":2048,"name":"getBoundingBox","url":"classes/GraceNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2194,"kind":2048,"name":"getLineNumber","url":"classes/GraceNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2195,"kind":2048,"name":"isRest","url":"classes/GraceNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2196,"kind":2048,"name":"isChord","url":"classes/GraceNote.html#isChord","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2197,"kind":2048,"name":"hasStem","url":"classes/GraceNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2198,"kind":2048,"name":"hasFlag","url":"classes/GraceNote.html#hasFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2199,"kind":2048,"name":"getStemX","url":"classes/GraceNote.html#getStemX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2200,"kind":2048,"name":"getYForTopText","url":"classes/GraceNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2201,"kind":2048,"name":"getYForBottomText","url":"classes/GraceNote.html#getYForBottomText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2202,"kind":2048,"name":"setStave","url":"classes/GraceNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2203,"kind":2048,"name":"isDisplaced","url":"classes/GraceNote.html#isDisplaced","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2204,"kind":2048,"name":"setNoteDisplaced","url":"classes/GraceNote.html#setNoteDisplaced","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2205,"kind":2048,"name":"getTieRightX","url":"classes/GraceNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2206,"kind":2048,"name":"getTieLeftX","url":"classes/GraceNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2207,"kind":2048,"name":"getLineForRest","url":"classes/GraceNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2208,"kind":2048,"name":"getModifierStartXY","url":"classes/GraceNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2209,"kind":2048,"name":"setStyle","url":"classes/GraceNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2210,"kind":2048,"name":"setStemStyle","url":"classes/GraceNote.html#setStemStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2211,"kind":2048,"name":"getStemStyle","url":"classes/GraceNote.html#getStemStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2212,"kind":2048,"name":"setLedgerLineStyle","url":"classes/GraceNote.html#setLedgerLineStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2213,"kind":2048,"name":"getLedgerLineStyle","url":"classes/GraceNote.html#getLedgerLineStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2214,"kind":2048,"name":"setFlagStyle","url":"classes/GraceNote.html#setFlagStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2215,"kind":2048,"name":"getFlagStyle","url":"classes/GraceNote.html#getFlagStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2216,"kind":2048,"name":"setKeyStyle","url":"classes/GraceNote.html#setKeyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2217,"kind":2048,"name":"setKeyLine","url":"classes/GraceNote.html#setKeyLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2218,"kind":2048,"name":"getKeyLine","url":"classes/GraceNote.html#getKeyLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2219,"kind":2048,"name":"getVoiceShiftWidth","url":"classes/GraceNote.html#getVoiceShiftWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2220,"kind":2048,"name":"calcNoteDisplacements","url":"classes/GraceNote.html#calcNoteDisplacements","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2221,"kind":2048,"name":"preFormat","url":"classes/GraceNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2222,"kind":2048,"name":"getNoteHeadBounds","url":"classes/GraceNote.html#getNoteHeadBounds","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2223,"kind":2048,"name":"getNoteHeadBeginX","url":"classes/GraceNote.html#getNoteHeadBeginX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2224,"kind":2048,"name":"getNoteHeadEndX","url":"classes/GraceNote.html#getNoteHeadEndX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2225,"kind":262144,"name":"noteHeads","url":"classes/GraceNote.html#noteHeads","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2226,"kind":262144,"name":"note_heads","url":"classes/GraceNote.html#note_heads","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2227,"kind":2048,"name":"drawLedgerLines","url":"classes/GraceNote.html#drawLedgerLines","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2228,"kind":2048,"name":"drawModifiers","url":"classes/GraceNote.html#drawModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2229,"kind":2048,"name":"shouldDrawFlag","url":"classes/GraceNote.html#shouldDrawFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2230,"kind":2048,"name":"drawFlag","url":"classes/GraceNote.html#drawFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2231,"kind":2048,"name":"drawNoteHeads","url":"classes/GraceNote.html#drawNoteHeads","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2232,"kind":2048,"name":"drawStem","url":"classes/GraceNote.html#drawStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2233,"kind":1024,"name":"stem_direction","url":"classes/GraceNote.html#stem_direction","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2234,"kind":1024,"name":"stem","url":"classes/GraceNote.html#stem","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2235,"kind":2048,"name":"getStem","url":"classes/GraceNote.html#getStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2236,"kind":2048,"name":"checkStem","url":"classes/GraceNote.html#checkStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2237,"kind":2048,"name":"setStem","url":"classes/GraceNote.html#setStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2238,"kind":2048,"name":"buildFlag","url":"classes/GraceNote.html#buildFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2239,"kind":2048,"name":"getBaseCustomNoteHeadGlyph","url":"classes/GraceNote.html#getBaseCustomNoteHeadGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2240,"kind":2048,"name":"getStemLength","url":"classes/GraceNote.html#getStemLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2241,"kind":2048,"name":"getBeamCount","url":"classes/GraceNote.html#getBeamCount","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2242,"kind":2048,"name":"getStemMinimumLength","url":"classes/GraceNote.html#getStemMinimumLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2243,"kind":2048,"name":"getStemDirection","url":"classes/GraceNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2244,"kind":2048,"name":"setStemDirection","url":"classes/GraceNote.html#setStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2245,"kind":2048,"name":"getCenterGlyphX","url":"classes/GraceNote.html#getCenterGlyphX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2246,"kind":2048,"name":"setStemLength","url":"classes/GraceNote.html#setStemLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2247,"kind":2048,"name":"getStemExtents","url":"classes/GraceNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2248,"kind":2048,"name":"postFormat","url":"classes/GraceNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2249,"kind":1024,"name":"glyph","url":"classes/GraceNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2250,"kind":1024,"name":"keys","url":"classes/GraceNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2251,"kind":1024,"name":"keyProps","url":"classes/GraceNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2252,"kind":1024,"name":"render_options","url":"classes/GraceNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2253,"kind":65536,"name":"__type","url":"classes/GraceNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"GraceNote"},{"id":2254,"kind":1024,"name":"draw_stem_through_stave","url":"classes/GraceNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2255,"kind":1024,"name":"draw","url":"classes/GraceNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2256,"kind":1024,"name":"draw_dots","url":"classes/GraceNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2257,"kind":1024,"name":"draw_stem","url":"classes/GraceNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2258,"kind":1024,"name":"y_shift","url":"classes/GraceNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2259,"kind":1024,"name":"extend_left","url":"classes/GraceNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2260,"kind":1024,"name":"extend_right","url":"classes/GraceNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2261,"kind":1024,"name":"glyph_font_scale","url":"classes/GraceNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2262,"kind":1024,"name":"annotation_spacing","url":"classes/GraceNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2263,"kind":1024,"name":"glyph_font_size","url":"classes/GraceNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2264,"kind":1024,"name":"scale","url":"classes/GraceNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2265,"kind":1024,"name":"font","url":"classes/GraceNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2266,"kind":1024,"name":"stroke_px","url":"classes/GraceNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2267,"kind":2048,"name":"getPlayNote","url":"classes/GraceNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2268,"kind":2048,"name":"setPlayNote","url":"classes/GraceNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2269,"kind":2048,"name":"addStroke","url":"classes/GraceNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2270,"kind":2048,"name":"getStave","url":"classes/GraceNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2271,"kind":2048,"name":"checkStave","url":"classes/GraceNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2272,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/GraceNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2273,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/GraceNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2274,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/GraceNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2275,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/GraceNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2276,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/GraceNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2277,"kind":2048,"name":"getGlyph","url":"classes/GraceNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2278,"kind":2048,"name":"getGlyphWidth","url":"classes/GraceNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2279,"kind":2048,"name":"setYs","url":"classes/GraceNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2280,"kind":2048,"name":"getYs","url":"classes/GraceNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2281,"kind":2048,"name":"getVoice","url":"classes/GraceNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2282,"kind":2048,"name":"setVoice","url":"classes/GraceNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2283,"kind":2048,"name":"getTickContext","url":"classes/GraceNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2284,"kind":2048,"name":"setTickContext","url":"classes/GraceNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2285,"kind":2048,"name":"getDuration","url":"classes/GraceNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2286,"kind":2048,"name":"isDotted","url":"classes/GraceNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2287,"kind":2048,"name":"getNoteType","url":"classes/GraceNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2288,"kind":2048,"name":"getBeam","url":"classes/GraceNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2289,"kind":2048,"name":"checkBeam","url":"classes/GraceNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2290,"kind":2048,"name":"hasBeam","url":"classes/GraceNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2291,"kind":2048,"name":"addModifier","url":"classes/GraceNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2292,"kind":2048,"name":"getModifiersByType","url":"classes/GraceNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2293,"kind":2048,"name":"getRightParenthesisPx","url":"classes/GraceNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2294,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/GraceNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2295,"kind":2048,"name":"getFirstDotPx","url":"classes/GraceNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2296,"kind":2048,"name":"getMetrics","url":"classes/GraceNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2297,"kind":2048,"name":"getAbsoluteX","url":"classes/GraceNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2298,"kind":2048,"name":"getKeys","url":"classes/GraceNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2299,"kind":2048,"name":"getKeyProps","url":"classes/GraceNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2300,"kind":2048,"name":"getTicks","url":"classes/GraceNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2301,"kind":2048,"name":"setIgnoreTicks","url":"classes/GraceNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2302,"kind":2048,"name":"setWidth","url":"classes/GraceNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2303,"kind":2048,"name":"getWidth","url":"classes/GraceNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2304,"kind":2048,"name":"setXShift","url":"classes/GraceNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2305,"kind":2048,"name":"getXShift","url":"classes/GraceNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2306,"kind":2048,"name":"getX","url":"classes/GraceNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2307,"kind":2048,"name":"getFormatterMetrics","url":"classes/GraceNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2308,"kind":2048,"name":"getCenterXShift","url":"classes/GraceNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2309,"kind":2048,"name":"setCenterXShift","url":"classes/GraceNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2310,"kind":2048,"name":"isCenterAligned","url":"classes/GraceNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2311,"kind":2048,"name":"setCenterAlignment","url":"classes/GraceNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2312,"kind":2048,"name":"getTuplet","url":"classes/GraceNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2313,"kind":2048,"name":"getTupletStack","url":"classes/GraceNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2314,"kind":2048,"name":"resetTuplet","url":"classes/GraceNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2315,"kind":2048,"name":"setTuplet","url":"classes/GraceNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2316,"kind":2048,"name":"addToModifierContext","url":"classes/GraceNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2317,"kind":2048,"name":"getModifiers","url":"classes/GraceNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2318,"kind":2048,"name":"checkTickContext","url":"classes/GraceNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2319,"kind":262144,"name":"preFormatted","url":"classes/GraceNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2320,"kind":262144,"name":"postFormatted","url":"classes/GraceNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2321,"kind":2048,"name":"getIntrinsicTicks","url":"classes/GraceNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2322,"kind":2048,"name":"setIntrinsicTicks","url":"classes/GraceNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2323,"kind":2048,"name":"getTickMultiplier","url":"classes/GraceNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2324,"kind":2048,"name":"applyTickMultiplier","url":"classes/GraceNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2325,"kind":2048,"name":"setDuration","url":"classes/GraceNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2326,"kind":2048,"name":"setModifierContext","url":"classes/GraceNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2327,"kind":2048,"name":"getModifierContext","url":"classes/GraceNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2328,"kind":2048,"name":"checkModifierContext","url":"classes/GraceNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2329,"kind":2048,"name":"addChildElement","url":"classes/GraceNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2330,"kind":2048,"name":"getCategory","url":"classes/GraceNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2331,"kind":2048,"name":"setGroupStyle","url":"classes/GraceNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2332,"kind":2048,"name":"getStyle","url":"classes/GraceNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2333,"kind":2048,"name":"applyStyle","url":"classes/GraceNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2334,"kind":2048,"name":"restoreStyle","url":"classes/GraceNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2335,"kind":2048,"name":"drawWithStyle","url":"classes/GraceNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2336,"kind":2048,"name":"hasClass","url":"classes/GraceNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2337,"kind":2048,"name":"addClass","url":"classes/GraceNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2338,"kind":2048,"name":"removeClass","url":"classes/GraceNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2339,"kind":2048,"name":"onRegister","url":"classes/GraceNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2340,"kind":2048,"name":"isRendered","url":"classes/GraceNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2341,"kind":2048,"name":"setRendered","url":"classes/GraceNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2342,"kind":2048,"name":"getAttributes","url":"classes/GraceNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2343,"kind":2048,"name":"getAttribute","url":"classes/GraceNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2344,"kind":2048,"name":"setAttribute","url":"classes/GraceNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2345,"kind":2048,"name":"getContext","url":"classes/GraceNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2346,"kind":2048,"name":"setContext","url":"classes/GraceNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2347,"kind":2048,"name":"checkContext","url":"classes/GraceNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2348,"kind":262144,"name":"font","url":"classes/GraceNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2349,"kind":2048,"name":"setFont","url":"classes/GraceNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2350,"kind":2048,"name":"getFont","url":"classes/GraceNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2351,"kind":2048,"name":"resetFont","url":"classes/GraceNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2352,"kind":262144,"name":"fontInfo","url":"classes/GraceNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2353,"kind":2048,"name":"setFontSize","url":"classes/GraceNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2354,"kind":2048,"name":"getFontSize","url":"classes/GraceNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2355,"kind":262144,"name":"fontSize","url":"classes/GraceNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2356,"kind":262144,"name":"fontSizeInPoints","url":"classes/GraceNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2357,"kind":262144,"name":"fontSizeInPixels","url":"classes/GraceNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2358,"kind":262144,"name":"fontStyle","url":"classes/GraceNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2359,"kind":262144,"name":"fontWeight","url":"classes/GraceNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2360,"kind":128,"name":"GraceNoteGroup","url":"classes/GraceNoteGroup.html","classes":"tsd-kind-class"},{"id":2361,"kind":1024,"name":"DEBUG","url":"classes/GraceNoteGroup.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"GraceNoteGroup"},{"id":2362,"kind":262144,"name":"CATEGORY","url":"classes/GraceNoteGroup.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"GraceNoteGroup"},{"id":2363,"kind":2048,"name":"format","url":"classes/GraceNoteGroup.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"GraceNoteGroup"},{"id":2364,"kind":262144,"name":"Position","url":"classes/GraceNoteGroup.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceNoteGroup"},{"id":2365,"kind":262144,"name":"PositionString","url":"classes/GraceNoteGroup.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceNoteGroup"},{"id":2366,"kind":1024,"name":"TEXT_FONT","url":"classes/GraceNoteGroup.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceNoteGroup"},{"id":2367,"kind":512,"name":"constructor","url":"classes/GraceNoteGroup.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"GraceNoteGroup"},{"id":2368,"kind":1024,"name":"render_options","url":"classes/GraceNoteGroup.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"GraceNoteGroup"},{"id":2369,"kind":65536,"name":"__type","url":"classes/GraceNoteGroup.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"GraceNoteGroup"},{"id":2370,"kind":1024,"name":"slur_y_shift","url":"classes/GraceNoteGroup.html#__type.slur_y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNoteGroup.__type"},{"id":2371,"kind":2048,"name":"preFormat","url":"classes/GraceNoteGroup.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"GraceNoteGroup"},{"id":2372,"kind":2048,"name":"beamNotes","url":"classes/GraceNoteGroup.html#beamNotes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"GraceNoteGroup"},{"id":2373,"kind":2048,"name":"setWidth","url":"classes/GraceNoteGroup.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GraceNoteGroup"},{"id":2374,"kind":2048,"name":"getWidth","url":"classes/GraceNoteGroup.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GraceNoteGroup"},{"id":2375,"kind":2048,"name":"getGraceNotes","url":"classes/GraceNoteGroup.html#getGraceNotes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"GraceNoteGroup"},{"id":2376,"kind":2048,"name":"draw","url":"classes/GraceNoteGroup.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GraceNoteGroup"},{"id":2377,"kind":2048,"name":"getNote","url":"classes/GraceNoteGroup.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2378,"kind":2048,"name":"checkAttachedNote","url":"classes/GraceNoteGroup.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2379,"kind":2048,"name":"setNote","url":"classes/GraceNoteGroup.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2380,"kind":2048,"name":"getIndex","url":"classes/GraceNoteGroup.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2381,"kind":2048,"name":"checkIndex","url":"classes/GraceNoteGroup.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2382,"kind":2048,"name":"setIndex","url":"classes/GraceNoteGroup.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2383,"kind":2048,"name":"getModifierContext","url":"classes/GraceNoteGroup.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2384,"kind":2048,"name":"checkModifierContext","url":"classes/GraceNoteGroup.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2385,"kind":2048,"name":"setModifierContext","url":"classes/GraceNoteGroup.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2386,"kind":2048,"name":"getPosition","url":"classes/GraceNoteGroup.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2387,"kind":2048,"name":"setPosition","url":"classes/GraceNoteGroup.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2388,"kind":2048,"name":"setTextLine","url":"classes/GraceNoteGroup.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2389,"kind":2048,"name":"setYShift","url":"classes/GraceNoteGroup.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2390,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/GraceNoteGroup.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2391,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/GraceNoteGroup.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2392,"kind":2048,"name":"setXShift","url":"classes/GraceNoteGroup.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2393,"kind":2048,"name":"getXShift","url":"classes/GraceNoteGroup.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2394,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/GraceNoteGroup.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2395,"kind":2048,"name":"addChildElement","url":"classes/GraceNoteGroup.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2396,"kind":2048,"name":"getCategory","url":"classes/GraceNoteGroup.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2397,"kind":2048,"name":"setStyle","url":"classes/GraceNoteGroup.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2398,"kind":2048,"name":"setGroupStyle","url":"classes/GraceNoteGroup.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2399,"kind":2048,"name":"getStyle","url":"classes/GraceNoteGroup.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2400,"kind":2048,"name":"applyStyle","url":"classes/GraceNoteGroup.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2401,"kind":2048,"name":"restoreStyle","url":"classes/GraceNoteGroup.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2402,"kind":2048,"name":"drawWithStyle","url":"classes/GraceNoteGroup.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2403,"kind":2048,"name":"hasClass","url":"classes/GraceNoteGroup.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2404,"kind":2048,"name":"addClass","url":"classes/GraceNoteGroup.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2405,"kind":2048,"name":"removeClass","url":"classes/GraceNoteGroup.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2406,"kind":2048,"name":"onRegister","url":"classes/GraceNoteGroup.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2407,"kind":2048,"name":"isRendered","url":"classes/GraceNoteGroup.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2408,"kind":2048,"name":"setRendered","url":"classes/GraceNoteGroup.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2409,"kind":2048,"name":"getAttributes","url":"classes/GraceNoteGroup.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2410,"kind":2048,"name":"getAttribute","url":"classes/GraceNoteGroup.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2411,"kind":2048,"name":"setAttribute","url":"classes/GraceNoteGroup.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2412,"kind":2048,"name":"getBoundingBox","url":"classes/GraceNoteGroup.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2413,"kind":2048,"name":"getContext","url":"classes/GraceNoteGroup.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2414,"kind":2048,"name":"setContext","url":"classes/GraceNoteGroup.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2415,"kind":2048,"name":"checkContext","url":"classes/GraceNoteGroup.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2416,"kind":262144,"name":"font","url":"classes/GraceNoteGroup.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2417,"kind":2048,"name":"setFont","url":"classes/GraceNoteGroup.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2418,"kind":2048,"name":"getFont","url":"classes/GraceNoteGroup.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2419,"kind":2048,"name":"resetFont","url":"classes/GraceNoteGroup.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2420,"kind":262144,"name":"fontInfo","url":"classes/GraceNoteGroup.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2421,"kind":2048,"name":"setFontSize","url":"classes/GraceNoteGroup.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2422,"kind":2048,"name":"getFontSize","url":"classes/GraceNoteGroup.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2423,"kind":262144,"name":"fontSize","url":"classes/GraceNoteGroup.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2424,"kind":262144,"name":"fontSizeInPoints","url":"classes/GraceNoteGroup.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2425,"kind":262144,"name":"fontSizeInPixels","url":"classes/GraceNoteGroup.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2426,"kind":262144,"name":"fontStyle","url":"classes/GraceNoteGroup.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2427,"kind":262144,"name":"fontWeight","url":"classes/GraceNoteGroup.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2428,"kind":128,"name":"GraceTabNote","url":"classes/GraceTabNote.html","classes":"tsd-kind-class"},{"id":2429,"kind":262144,"name":"CATEGORY","url":"classes/GraceTabNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"GraceTabNote"},{"id":2430,"kind":2048,"name":"plotMetrics","url":"classes/GraceTabNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceTabNote"},{"id":2431,"kind":1024,"name":"TEXT_FONT","url":"classes/GraceTabNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceTabNote"},{"id":2432,"kind":512,"name":"constructor","url":"classes/GraceTabNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"GraceTabNote"},{"id":2433,"kind":2048,"name":"greatestString","url":"classes/GraceTabNote.html#greatestString","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2434,"kind":2048,"name":"leastString","url":"classes/GraceTabNote.html#leastString","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2435,"kind":2048,"name":"reset","url":"classes/GraceTabNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2436,"kind":2048,"name":"setGhost","url":"classes/GraceTabNote.html#setGhost","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2437,"kind":2048,"name":"hasStem","url":"classes/GraceTabNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2438,"kind":2048,"name":"getStemExtension","url":"classes/GraceTabNote.html#getStemExtension","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2439,"kind":2048,"name":"updateWidth","url":"classes/GraceTabNote.html#updateWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2440,"kind":2048,"name":"setStave","url":"classes/GraceTabNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2441,"kind":2048,"name":"getPositions","url":"classes/GraceTabNote.html#getPositions","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2442,"kind":2048,"name":"getModifierStartXY","url":"classes/GraceTabNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2443,"kind":2048,"name":"getLineForRest","url":"classes/GraceTabNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2444,"kind":2048,"name":"preFormat","url":"classes/GraceTabNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2445,"kind":2048,"name":"getStemX","url":"classes/GraceTabNote.html#getStemX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2446,"kind":2048,"name":"getStemY","url":"classes/GraceTabNote.html#getStemY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2447,"kind":2048,"name":"getStemExtents","url":"classes/GraceTabNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2448,"kind":2048,"name":"drawFlag","url":"classes/GraceTabNote.html#drawFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2449,"kind":2048,"name":"drawModifiers","url":"classes/GraceTabNote.html#drawModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2450,"kind":2048,"name":"drawStemThrough","url":"classes/GraceTabNote.html#drawStemThrough","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2451,"kind":2048,"name":"drawPositions","url":"classes/GraceTabNote.html#drawPositions","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2452,"kind":2048,"name":"draw","url":"classes/GraceTabNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2453,"kind":1024,"name":"stem_direction","url":"classes/GraceTabNote.html#stem_direction","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2454,"kind":1024,"name":"stem","url":"classes/GraceTabNote.html#stem","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2455,"kind":2048,"name":"getStem","url":"classes/GraceTabNote.html#getStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2456,"kind":2048,"name":"checkStem","url":"classes/GraceTabNote.html#checkStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2457,"kind":2048,"name":"setStem","url":"classes/GraceTabNote.html#setStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2458,"kind":2048,"name":"buildStem","url":"classes/GraceTabNote.html#buildStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2459,"kind":2048,"name":"buildFlag","url":"classes/GraceTabNote.html#buildFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2460,"kind":2048,"name":"getBaseCustomNoteHeadGlyph","url":"classes/GraceTabNote.html#getBaseCustomNoteHeadGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2461,"kind":2048,"name":"getStemLength","url":"classes/GraceTabNote.html#getStemLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2462,"kind":2048,"name":"getBeamCount","url":"classes/GraceTabNote.html#getBeamCount","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2463,"kind":2048,"name":"getStemMinimumLength","url":"classes/GraceTabNote.html#getStemMinimumLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2464,"kind":2048,"name":"getStemDirection","url":"classes/GraceTabNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2465,"kind":2048,"name":"setStemDirection","url":"classes/GraceTabNote.html#setStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2466,"kind":2048,"name":"getCenterGlyphX","url":"classes/GraceTabNote.html#getCenterGlyphX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2467,"kind":2048,"name":"setStemLength","url":"classes/GraceTabNote.html#setStemLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2468,"kind":2048,"name":"getYForTopText","url":"classes/GraceTabNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2469,"kind":2048,"name":"getYForBottomText","url":"classes/GraceTabNote.html#getYForBottomText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2470,"kind":2048,"name":"hasFlag","url":"classes/GraceTabNote.html#hasFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2471,"kind":2048,"name":"postFormat","url":"classes/GraceTabNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2472,"kind":2048,"name":"drawStem","url":"classes/GraceTabNote.html#drawStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2473,"kind":1024,"name":"glyph","url":"classes/GraceTabNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2474,"kind":1024,"name":"keys","url":"classes/GraceTabNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2475,"kind":1024,"name":"keyProps","url":"classes/GraceTabNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2476,"kind":1024,"name":"render_options","url":"classes/GraceTabNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2477,"kind":65536,"name":"__type","url":"classes/GraceTabNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"GraceTabNote"},{"id":2478,"kind":1024,"name":"draw_stem_through_stave","url":"classes/GraceTabNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2479,"kind":1024,"name":"draw","url":"classes/GraceTabNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2480,"kind":1024,"name":"draw_dots","url":"classes/GraceTabNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2481,"kind":1024,"name":"draw_stem","url":"classes/GraceTabNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2482,"kind":1024,"name":"y_shift","url":"classes/GraceTabNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2483,"kind":1024,"name":"extend_left","url":"classes/GraceTabNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2484,"kind":1024,"name":"extend_right","url":"classes/GraceTabNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2485,"kind":1024,"name":"glyph_font_scale","url":"classes/GraceTabNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2486,"kind":1024,"name":"annotation_spacing","url":"classes/GraceTabNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2487,"kind":1024,"name":"glyph_font_size","url":"classes/GraceTabNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2488,"kind":1024,"name":"scale","url":"classes/GraceTabNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2489,"kind":1024,"name":"font","url":"classes/GraceTabNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2490,"kind":1024,"name":"stroke_px","url":"classes/GraceTabNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2491,"kind":2048,"name":"getPlayNote","url":"classes/GraceTabNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2492,"kind":2048,"name":"setPlayNote","url":"classes/GraceTabNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2493,"kind":2048,"name":"isRest","url":"classes/GraceTabNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2494,"kind":2048,"name":"addStroke","url":"classes/GraceTabNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2495,"kind":2048,"name":"getStave","url":"classes/GraceTabNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2496,"kind":2048,"name":"checkStave","url":"classes/GraceTabNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2497,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/GraceTabNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2498,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/GraceTabNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2499,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/GraceTabNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2500,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/GraceTabNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2501,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/GraceTabNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2502,"kind":2048,"name":"getLineNumber","url":"classes/GraceTabNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2503,"kind":2048,"name":"getGlyph","url":"classes/GraceTabNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2504,"kind":2048,"name":"getGlyphWidth","url":"classes/GraceTabNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2505,"kind":2048,"name":"setYs","url":"classes/GraceTabNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2506,"kind":2048,"name":"getYs","url":"classes/GraceTabNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2507,"kind":2048,"name":"getVoice","url":"classes/GraceTabNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2508,"kind":2048,"name":"setVoice","url":"classes/GraceTabNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2509,"kind":2048,"name":"getTickContext","url":"classes/GraceTabNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2510,"kind":2048,"name":"setTickContext","url":"classes/GraceTabNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2511,"kind":2048,"name":"getDuration","url":"classes/GraceTabNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2512,"kind":2048,"name":"isDotted","url":"classes/GraceTabNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2513,"kind":2048,"name":"getNoteType","url":"classes/GraceTabNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2514,"kind":2048,"name":"getBeam","url":"classes/GraceTabNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2515,"kind":2048,"name":"checkBeam","url":"classes/GraceTabNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2516,"kind":2048,"name":"hasBeam","url":"classes/GraceTabNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2517,"kind":2048,"name":"setBeam","url":"classes/GraceTabNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2518,"kind":2048,"name":"addModifier","url":"classes/GraceTabNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2519,"kind":2048,"name":"getModifiersByType","url":"classes/GraceTabNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2520,"kind":2048,"name":"getRightParenthesisPx","url":"classes/GraceTabNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2521,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/GraceTabNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2522,"kind":2048,"name":"getFirstDotPx","url":"classes/GraceTabNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2523,"kind":2048,"name":"getMetrics","url":"classes/GraceTabNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2524,"kind":2048,"name":"getAbsoluteX","url":"classes/GraceTabNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2525,"kind":2048,"name":"getTieRightX","url":"classes/GraceTabNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2526,"kind":2048,"name":"getTieLeftX","url":"classes/GraceTabNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2527,"kind":2048,"name":"getKeys","url":"classes/GraceTabNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2528,"kind":2048,"name":"getKeyProps","url":"classes/GraceTabNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2529,"kind":2048,"name":"getTicks","url":"classes/GraceTabNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2530,"kind":2048,"name":"setIgnoreTicks","url":"classes/GraceTabNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2531,"kind":2048,"name":"setWidth","url":"classes/GraceTabNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2532,"kind":2048,"name":"getWidth","url":"classes/GraceTabNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2533,"kind":2048,"name":"setXShift","url":"classes/GraceTabNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2534,"kind":2048,"name":"getXShift","url":"classes/GraceTabNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2535,"kind":2048,"name":"getX","url":"classes/GraceTabNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2536,"kind":2048,"name":"getFormatterMetrics","url":"classes/GraceTabNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2537,"kind":2048,"name":"getCenterXShift","url":"classes/GraceTabNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2538,"kind":2048,"name":"setCenterXShift","url":"classes/GraceTabNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2539,"kind":2048,"name":"isCenterAligned","url":"classes/GraceTabNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2540,"kind":2048,"name":"setCenterAlignment","url":"classes/GraceTabNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2541,"kind":2048,"name":"getTuplet","url":"classes/GraceTabNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2542,"kind":2048,"name":"getTupletStack","url":"classes/GraceTabNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2543,"kind":2048,"name":"resetTuplet","url":"classes/GraceTabNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2544,"kind":2048,"name":"setTuplet","url":"classes/GraceTabNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2545,"kind":2048,"name":"addToModifierContext","url":"classes/GraceTabNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2546,"kind":2048,"name":"getModifiers","url":"classes/GraceTabNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2547,"kind":2048,"name":"checkTickContext","url":"classes/GraceTabNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2548,"kind":262144,"name":"preFormatted","url":"classes/GraceTabNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2549,"kind":262144,"name":"postFormatted","url":"classes/GraceTabNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2550,"kind":2048,"name":"getIntrinsicTicks","url":"classes/GraceTabNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2551,"kind":2048,"name":"setIntrinsicTicks","url":"classes/GraceTabNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2552,"kind":2048,"name":"getTickMultiplier","url":"classes/GraceTabNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2553,"kind":2048,"name":"applyTickMultiplier","url":"classes/GraceTabNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2554,"kind":2048,"name":"setDuration","url":"classes/GraceTabNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2555,"kind":2048,"name":"setModifierContext","url":"classes/GraceTabNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2556,"kind":2048,"name":"getModifierContext","url":"classes/GraceTabNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2557,"kind":2048,"name":"checkModifierContext","url":"classes/GraceTabNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2558,"kind":2048,"name":"addChildElement","url":"classes/GraceTabNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2559,"kind":2048,"name":"getCategory","url":"classes/GraceTabNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2560,"kind":2048,"name":"setStyle","url":"classes/GraceTabNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2561,"kind":2048,"name":"setGroupStyle","url":"classes/GraceTabNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2562,"kind":2048,"name":"getStyle","url":"classes/GraceTabNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2563,"kind":2048,"name":"applyStyle","url":"classes/GraceTabNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2564,"kind":2048,"name":"restoreStyle","url":"classes/GraceTabNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2565,"kind":2048,"name":"drawWithStyle","url":"classes/GraceTabNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2566,"kind":2048,"name":"hasClass","url":"classes/GraceTabNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2567,"kind":2048,"name":"addClass","url":"classes/GraceTabNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2568,"kind":2048,"name":"removeClass","url":"classes/GraceTabNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2569,"kind":2048,"name":"onRegister","url":"classes/GraceTabNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2570,"kind":2048,"name":"isRendered","url":"classes/GraceTabNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2571,"kind":2048,"name":"setRendered","url":"classes/GraceTabNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2572,"kind":2048,"name":"getAttributes","url":"classes/GraceTabNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2573,"kind":2048,"name":"getAttribute","url":"classes/GraceTabNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2574,"kind":2048,"name":"setAttribute","url":"classes/GraceTabNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2575,"kind":2048,"name":"getBoundingBox","url":"classes/GraceTabNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2576,"kind":2048,"name":"getContext","url":"classes/GraceTabNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2577,"kind":2048,"name":"setContext","url":"classes/GraceTabNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2578,"kind":2048,"name":"checkContext","url":"classes/GraceTabNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2579,"kind":262144,"name":"font","url":"classes/GraceTabNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2580,"kind":2048,"name":"setFont","url":"classes/GraceTabNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2581,"kind":2048,"name":"getFont","url":"classes/GraceTabNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2582,"kind":2048,"name":"resetFont","url":"classes/GraceTabNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2583,"kind":262144,"name":"fontInfo","url":"classes/GraceTabNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2584,"kind":2048,"name":"setFontSize","url":"classes/GraceTabNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2585,"kind":2048,"name":"getFontSize","url":"classes/GraceTabNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2586,"kind":262144,"name":"fontSize","url":"classes/GraceTabNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2587,"kind":262144,"name":"fontSizeInPoints","url":"classes/GraceTabNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2588,"kind":262144,"name":"fontSizeInPixels","url":"classes/GraceTabNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2589,"kind":262144,"name":"fontStyle","url":"classes/GraceTabNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2590,"kind":262144,"name":"fontWeight","url":"classes/GraceTabNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2591,"kind":128,"name":"KeyManager","url":"classes/KeyManager.html","classes":"tsd-kind-class"},{"id":2592,"kind":512,"name":"constructor","url":"classes/KeyManager.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"KeyManager"},{"id":2593,"kind":2048,"name":"setKey","url":"classes/KeyManager.html#setKey","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeyManager"},{"id":2594,"kind":2048,"name":"getKey","url":"classes/KeyManager.html#getKey","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeyManager"},{"id":2595,"kind":2048,"name":"reset","url":"classes/KeyManager.html#reset","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeyManager"},{"id":2596,"kind":2048,"name":"getAccidental","url":"classes/KeyManager.html#getAccidental","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeyManager"},{"id":2597,"kind":2048,"name":"selectNote","url":"classes/KeyManager.html#selectNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeyManager"},{"id":2598,"kind":128,"name":"KeySignature","url":"classes/KeySignature.html","classes":"tsd-kind-class"},{"id":2599,"kind":262144,"name":"CATEGORY","url":"classes/KeySignature.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"KeySignature"},{"id":2600,"kind":1024,"name":"accidentalSpacing","url":"classes/KeySignature.html#accidentalSpacing","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"KeySignature"},{"id":2601,"kind":262144,"name":"Position","url":"classes/KeySignature.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"KeySignature"},{"id":2602,"kind":1024,"name":"TEXT_FONT","url":"classes/KeySignature.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"KeySignature"},{"id":2603,"kind":512,"name":"constructor","url":"classes/KeySignature.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"KeySignature"},{"id":2604,"kind":2048,"name":"convertToGlyph","url":"classes/KeySignature.html#convertToGlyph","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeySignature"},{"id":2605,"kind":2048,"name":"cancelKey","url":"classes/KeySignature.html#cancelKey","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeySignature"},{"id":2606,"kind":2048,"name":"convertToCancelAccList","url":"classes/KeySignature.html#convertToCancelAccList","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeySignature"},{"id":2607,"kind":2048,"name":"addToStave","url":"classes/KeySignature.html#addToStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeySignature"},{"id":2608,"kind":2048,"name":"convertAccLines","url":"classes/KeySignature.html#convertAccLines","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeySignature"},{"id":2609,"kind":2048,"name":"getPadding","url":"classes/KeySignature.html#getPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"KeySignature"},{"id":2610,"kind":2048,"name":"getWidth","url":"classes/KeySignature.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"KeySignature"},{"id":2611,"kind":2048,"name":"setKeySig","url":"classes/KeySignature.html#setKeySig","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeySignature"},{"id":2612,"kind":2048,"name":"alterKey","url":"classes/KeySignature.html#alterKey","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeySignature"},{"id":2613,"kind":2048,"name":"convertToAlterAccList","url":"classes/KeySignature.html#convertToAlterAccList","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeySignature"},{"id":2614,"kind":2048,"name":"format","url":"classes/KeySignature.html#format","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeySignature"},{"id":2615,"kind":2048,"name":"draw","url":"classes/KeySignature.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"KeySignature"},{"id":2616,"kind":2048,"name":"getPosition","url":"classes/KeySignature.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2617,"kind":2048,"name":"setPosition","url":"classes/KeySignature.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2618,"kind":2048,"name":"getStave","url":"classes/KeySignature.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2619,"kind":2048,"name":"checkStave","url":"classes/KeySignature.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2620,"kind":2048,"name":"setStave","url":"classes/KeySignature.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2621,"kind":2048,"name":"setWidth","url":"classes/KeySignature.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2622,"kind":2048,"name":"getX","url":"classes/KeySignature.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2623,"kind":2048,"name":"setX","url":"classes/KeySignature.html#setX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2624,"kind":2048,"name":"placeGlyphOnLine","url":"classes/KeySignature.html#placeGlyphOnLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2625,"kind":2048,"name":"setPadding","url":"classes/KeySignature.html#setPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2626,"kind":2048,"name":"setLayoutMetrics","url":"classes/KeySignature.html#setLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2627,"kind":2048,"name":"getLayoutMetrics","url":"classes/KeySignature.html#getLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2628,"kind":2048,"name":"addChildElement","url":"classes/KeySignature.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2629,"kind":2048,"name":"getCategory","url":"classes/KeySignature.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2630,"kind":2048,"name":"setStyle","url":"classes/KeySignature.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2631,"kind":2048,"name":"setGroupStyle","url":"classes/KeySignature.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2632,"kind":2048,"name":"getStyle","url":"classes/KeySignature.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2633,"kind":2048,"name":"applyStyle","url":"classes/KeySignature.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2634,"kind":2048,"name":"restoreStyle","url":"classes/KeySignature.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2635,"kind":2048,"name":"drawWithStyle","url":"classes/KeySignature.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2636,"kind":2048,"name":"hasClass","url":"classes/KeySignature.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2637,"kind":2048,"name":"addClass","url":"classes/KeySignature.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2638,"kind":2048,"name":"removeClass","url":"classes/KeySignature.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2639,"kind":2048,"name":"onRegister","url":"classes/KeySignature.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2640,"kind":2048,"name":"isRendered","url":"classes/KeySignature.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2641,"kind":2048,"name":"setRendered","url":"classes/KeySignature.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2642,"kind":2048,"name":"getAttributes","url":"classes/KeySignature.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2643,"kind":2048,"name":"getAttribute","url":"classes/KeySignature.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2644,"kind":2048,"name":"setAttribute","url":"classes/KeySignature.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2645,"kind":2048,"name":"getBoundingBox","url":"classes/KeySignature.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2646,"kind":2048,"name":"getContext","url":"classes/KeySignature.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2647,"kind":2048,"name":"setContext","url":"classes/KeySignature.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2648,"kind":2048,"name":"checkContext","url":"classes/KeySignature.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2649,"kind":262144,"name":"font","url":"classes/KeySignature.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2650,"kind":2048,"name":"setFont","url":"classes/KeySignature.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2651,"kind":2048,"name":"getFont","url":"classes/KeySignature.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2652,"kind":2048,"name":"resetFont","url":"classes/KeySignature.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2653,"kind":262144,"name":"fontInfo","url":"classes/KeySignature.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2654,"kind":2048,"name":"setFontSize","url":"classes/KeySignature.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2655,"kind":2048,"name":"getFontSize","url":"classes/KeySignature.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2656,"kind":262144,"name":"fontSize","url":"classes/KeySignature.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2657,"kind":262144,"name":"fontSizeInPoints","url":"classes/KeySignature.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2658,"kind":262144,"name":"fontSizeInPixels","url":"classes/KeySignature.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2659,"kind":262144,"name":"fontStyle","url":"classes/KeySignature.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2660,"kind":262144,"name":"fontWeight","url":"classes/KeySignature.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2661,"kind":128,"name":"KeySigNote","url":"classes/KeySigNote.html","classes":"tsd-kind-class"},{"id":2662,"kind":262144,"name":"CATEGORY","url":"classes/KeySigNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"KeySigNote"},{"id":2663,"kind":2048,"name":"plotMetrics","url":"classes/KeySigNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"KeySigNote"},{"id":2664,"kind":1024,"name":"TEXT_FONT","url":"classes/KeySigNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"KeySigNote"},{"id":2665,"kind":512,"name":"constructor","url":"classes/KeySigNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"KeySigNote"},{"id":2666,"kind":2048,"name":"addToModifierContext","url":"classes/KeySigNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"KeySigNote"},{"id":2667,"kind":2048,"name":"preFormat","url":"classes/KeySigNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"KeySigNote"},{"id":2668,"kind":2048,"name":"draw","url":"classes/KeySigNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"KeySigNote"},{"id":2669,"kind":1024,"name":"glyph","url":"classes/KeySigNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2670,"kind":1024,"name":"keys","url":"classes/KeySigNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2671,"kind":1024,"name":"keyProps","url":"classes/KeySigNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2672,"kind":1024,"name":"render_options","url":"classes/KeySigNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2673,"kind":65536,"name":"__type","url":"classes/KeySigNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"KeySigNote"},{"id":2674,"kind":1024,"name":"draw_stem_through_stave","url":"classes/KeySigNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2675,"kind":1024,"name":"draw","url":"classes/KeySigNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2676,"kind":1024,"name":"draw_dots","url":"classes/KeySigNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2677,"kind":1024,"name":"draw_stem","url":"classes/KeySigNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2678,"kind":1024,"name":"y_shift","url":"classes/KeySigNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2679,"kind":1024,"name":"extend_left","url":"classes/KeySigNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2680,"kind":1024,"name":"extend_right","url":"classes/KeySigNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2681,"kind":1024,"name":"glyph_font_scale","url":"classes/KeySigNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2682,"kind":1024,"name":"annotation_spacing","url":"classes/KeySigNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2683,"kind":1024,"name":"glyph_font_size","url":"classes/KeySigNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2684,"kind":1024,"name":"scale","url":"classes/KeySigNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2685,"kind":1024,"name":"font","url":"classes/KeySigNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2686,"kind":1024,"name":"stroke_px","url":"classes/KeySigNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2687,"kind":2048,"name":"getPlayNote","url":"classes/KeySigNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2688,"kind":2048,"name":"setPlayNote","url":"classes/KeySigNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2689,"kind":2048,"name":"isRest","url":"classes/KeySigNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2690,"kind":2048,"name":"addStroke","url":"classes/KeySigNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2691,"kind":2048,"name":"getStave","url":"classes/KeySigNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2692,"kind":2048,"name":"checkStave","url":"classes/KeySigNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2693,"kind":2048,"name":"setStave","url":"classes/KeySigNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2694,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/KeySigNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2695,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/KeySigNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2696,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/KeySigNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2697,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/KeySigNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2698,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/KeySigNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2699,"kind":2048,"name":"getLineNumber","url":"classes/KeySigNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2700,"kind":2048,"name":"getLineForRest","url":"classes/KeySigNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2701,"kind":2048,"name":"getGlyph","url":"classes/KeySigNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2702,"kind":2048,"name":"getGlyphWidth","url":"classes/KeySigNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2703,"kind":2048,"name":"setYs","url":"classes/KeySigNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2704,"kind":2048,"name":"getYs","url":"classes/KeySigNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2705,"kind":2048,"name":"getYForTopText","url":"classes/KeySigNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2706,"kind":2048,"name":"getVoice","url":"classes/KeySigNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2707,"kind":2048,"name":"setVoice","url":"classes/KeySigNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2708,"kind":2048,"name":"getTickContext","url":"classes/KeySigNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2709,"kind":2048,"name":"setTickContext","url":"classes/KeySigNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2710,"kind":2048,"name":"getDuration","url":"classes/KeySigNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2711,"kind":2048,"name":"isDotted","url":"classes/KeySigNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2712,"kind":2048,"name":"hasStem","url":"classes/KeySigNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2713,"kind":2048,"name":"getNoteType","url":"classes/KeySigNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2714,"kind":2048,"name":"getBeam","url":"classes/KeySigNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2715,"kind":2048,"name":"checkBeam","url":"classes/KeySigNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2716,"kind":2048,"name":"hasBeam","url":"classes/KeySigNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2717,"kind":2048,"name":"setBeam","url":"classes/KeySigNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2718,"kind":2048,"name":"addModifier","url":"classes/KeySigNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2719,"kind":2048,"name":"getModifiersByType","url":"classes/KeySigNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2720,"kind":2048,"name":"getModifierStartXY","url":"classes/KeySigNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2721,"kind":2048,"name":"getRightParenthesisPx","url":"classes/KeySigNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2722,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/KeySigNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2723,"kind":2048,"name":"getFirstDotPx","url":"classes/KeySigNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2724,"kind":2048,"name":"getMetrics","url":"classes/KeySigNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2725,"kind":2048,"name":"getAbsoluteX","url":"classes/KeySigNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2726,"kind":2048,"name":"getStemDirection","url":"classes/KeySigNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2727,"kind":2048,"name":"getStemExtents","url":"classes/KeySigNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2728,"kind":2048,"name":"getTieRightX","url":"classes/KeySigNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2729,"kind":2048,"name":"getTieLeftX","url":"classes/KeySigNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2730,"kind":2048,"name":"getKeys","url":"classes/KeySigNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2731,"kind":2048,"name":"getKeyProps","url":"classes/KeySigNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2732,"kind":2048,"name":"reset","url":"classes/KeySigNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2733,"kind":2048,"name":"getTicks","url":"classes/KeySigNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2734,"kind":2048,"name":"setIgnoreTicks","url":"classes/KeySigNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2735,"kind":2048,"name":"setWidth","url":"classes/KeySigNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2736,"kind":2048,"name":"getWidth","url":"classes/KeySigNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2737,"kind":2048,"name":"setXShift","url":"classes/KeySigNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2738,"kind":2048,"name":"getXShift","url":"classes/KeySigNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2739,"kind":2048,"name":"getX","url":"classes/KeySigNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2740,"kind":2048,"name":"getFormatterMetrics","url":"classes/KeySigNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2741,"kind":2048,"name":"getCenterXShift","url":"classes/KeySigNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2742,"kind":2048,"name":"setCenterXShift","url":"classes/KeySigNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2743,"kind":2048,"name":"isCenterAligned","url":"classes/KeySigNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2744,"kind":2048,"name":"setCenterAlignment","url":"classes/KeySigNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2745,"kind":2048,"name":"getTuplet","url":"classes/KeySigNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2746,"kind":2048,"name":"getTupletStack","url":"classes/KeySigNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2747,"kind":2048,"name":"resetTuplet","url":"classes/KeySigNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2748,"kind":2048,"name":"setTuplet","url":"classes/KeySigNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2749,"kind":2048,"name":"getModifiers","url":"classes/KeySigNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2750,"kind":2048,"name":"checkTickContext","url":"classes/KeySigNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2751,"kind":262144,"name":"preFormatted","url":"classes/KeySigNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2752,"kind":2048,"name":"postFormat","url":"classes/KeySigNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2753,"kind":262144,"name":"postFormatted","url":"classes/KeySigNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2754,"kind":2048,"name":"getIntrinsicTicks","url":"classes/KeySigNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2755,"kind":2048,"name":"setIntrinsicTicks","url":"classes/KeySigNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2756,"kind":2048,"name":"getTickMultiplier","url":"classes/KeySigNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2757,"kind":2048,"name":"applyTickMultiplier","url":"classes/KeySigNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2758,"kind":2048,"name":"setDuration","url":"classes/KeySigNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2759,"kind":2048,"name":"setModifierContext","url":"classes/KeySigNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2760,"kind":2048,"name":"getModifierContext","url":"classes/KeySigNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2761,"kind":2048,"name":"checkModifierContext","url":"classes/KeySigNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2762,"kind":2048,"name":"addChildElement","url":"classes/KeySigNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2763,"kind":2048,"name":"getCategory","url":"classes/KeySigNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2764,"kind":2048,"name":"setStyle","url":"classes/KeySigNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2765,"kind":2048,"name":"setGroupStyle","url":"classes/KeySigNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2766,"kind":2048,"name":"getStyle","url":"classes/KeySigNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2767,"kind":2048,"name":"applyStyle","url":"classes/KeySigNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2768,"kind":2048,"name":"restoreStyle","url":"classes/KeySigNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2769,"kind":2048,"name":"drawWithStyle","url":"classes/KeySigNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2770,"kind":2048,"name":"hasClass","url":"classes/KeySigNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2771,"kind":2048,"name":"addClass","url":"classes/KeySigNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2772,"kind":2048,"name":"removeClass","url":"classes/KeySigNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2773,"kind":2048,"name":"onRegister","url":"classes/KeySigNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2774,"kind":2048,"name":"isRendered","url":"classes/KeySigNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2775,"kind":2048,"name":"setRendered","url":"classes/KeySigNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2776,"kind":2048,"name":"getAttributes","url":"classes/KeySigNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2777,"kind":2048,"name":"getAttribute","url":"classes/KeySigNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2778,"kind":2048,"name":"setAttribute","url":"classes/KeySigNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2779,"kind":2048,"name":"getBoundingBox","url":"classes/KeySigNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2780,"kind":2048,"name":"getContext","url":"classes/KeySigNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2781,"kind":2048,"name":"setContext","url":"classes/KeySigNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2782,"kind":2048,"name":"checkContext","url":"classes/KeySigNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2783,"kind":262144,"name":"font","url":"classes/KeySigNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2784,"kind":2048,"name":"setFont","url":"classes/KeySigNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2785,"kind":2048,"name":"getFont","url":"classes/KeySigNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2786,"kind":2048,"name":"resetFont","url":"classes/KeySigNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2787,"kind":262144,"name":"fontInfo","url":"classes/KeySigNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2788,"kind":2048,"name":"setFontSize","url":"classes/KeySigNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2789,"kind":2048,"name":"getFontSize","url":"classes/KeySigNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2790,"kind":262144,"name":"fontSize","url":"classes/KeySigNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2791,"kind":262144,"name":"fontSizeInPoints","url":"classes/KeySigNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2792,"kind":262144,"name":"fontSizeInPixels","url":"classes/KeySigNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2793,"kind":262144,"name":"fontStyle","url":"classes/KeySigNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2794,"kind":262144,"name":"fontWeight","url":"classes/KeySigNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2795,"kind":8,"name":"ModifierPosition","url":"enums/ModifierPosition.html","classes":"tsd-kind-enum"},{"id":2796,"kind":16,"name":"CENTER","url":"enums/ModifierPosition.html#CENTER","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ModifierPosition"},{"id":2797,"kind":16,"name":"LEFT","url":"enums/ModifierPosition.html#LEFT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ModifierPosition"},{"id":2798,"kind":16,"name":"RIGHT","url":"enums/ModifierPosition.html#RIGHT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ModifierPosition"},{"id":2799,"kind":16,"name":"ABOVE","url":"enums/ModifierPosition.html#ABOVE","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ModifierPosition"},{"id":2800,"kind":16,"name":"BELOW","url":"enums/ModifierPosition.html#BELOW","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ModifierPosition"},{"id":2801,"kind":128,"name":"Modifier","url":"classes/Modifier.html","classes":"tsd-kind-class"},{"id":2802,"kind":262144,"name":"CATEGORY","url":"classes/Modifier.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Modifier"},{"id":2803,"kind":262144,"name":"Position","url":"classes/Modifier.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Modifier"},{"id":2804,"kind":262144,"name":"PositionString","url":"classes/Modifier.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Modifier"},{"id":2805,"kind":1024,"name":"TEXT_FONT","url":"classes/Modifier.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Modifier"},{"id":2806,"kind":512,"name":"constructor","url":"classes/Modifier.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Modifier"},{"id":2807,"kind":2048,"name":"getWidth","url":"classes/Modifier.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2808,"kind":2048,"name":"setWidth","url":"classes/Modifier.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2809,"kind":2048,"name":"getNote","url":"classes/Modifier.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2810,"kind":2048,"name":"checkAttachedNote","url":"classes/Modifier.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2811,"kind":2048,"name":"setNote","url":"classes/Modifier.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2812,"kind":2048,"name":"getIndex","url":"classes/Modifier.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2813,"kind":2048,"name":"checkIndex","url":"classes/Modifier.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2814,"kind":2048,"name":"setIndex","url":"classes/Modifier.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2815,"kind":2048,"name":"getModifierContext","url":"classes/Modifier.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2816,"kind":2048,"name":"checkModifierContext","url":"classes/Modifier.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2817,"kind":2048,"name":"setModifierContext","url":"classes/Modifier.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2818,"kind":2048,"name":"getPosition","url":"classes/Modifier.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2819,"kind":2048,"name":"setPosition","url":"classes/Modifier.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2820,"kind":2048,"name":"setTextLine","url":"classes/Modifier.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2821,"kind":2048,"name":"setYShift","url":"classes/Modifier.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2822,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/Modifier.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2823,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/Modifier.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2824,"kind":2048,"name":"setXShift","url":"classes/Modifier.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2825,"kind":2048,"name":"getXShift","url":"classes/Modifier.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2826,"kind":2048,"name":"draw","url":"classes/Modifier.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Modifier"},{"id":2827,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/Modifier.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2828,"kind":2048,"name":"addChildElement","url":"classes/Modifier.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2829,"kind":2048,"name":"getCategory","url":"classes/Modifier.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2830,"kind":2048,"name":"setStyle","url":"classes/Modifier.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2831,"kind":2048,"name":"setGroupStyle","url":"classes/Modifier.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2832,"kind":2048,"name":"getStyle","url":"classes/Modifier.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2833,"kind":2048,"name":"applyStyle","url":"classes/Modifier.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2834,"kind":2048,"name":"restoreStyle","url":"classes/Modifier.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2835,"kind":2048,"name":"drawWithStyle","url":"classes/Modifier.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2836,"kind":2048,"name":"hasClass","url":"classes/Modifier.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2837,"kind":2048,"name":"addClass","url":"classes/Modifier.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2838,"kind":2048,"name":"removeClass","url":"classes/Modifier.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2839,"kind":2048,"name":"onRegister","url":"classes/Modifier.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2840,"kind":2048,"name":"isRendered","url":"classes/Modifier.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2841,"kind":2048,"name":"setRendered","url":"classes/Modifier.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2842,"kind":2048,"name":"getAttributes","url":"classes/Modifier.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2843,"kind":2048,"name":"getAttribute","url":"classes/Modifier.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2844,"kind":2048,"name":"setAttribute","url":"classes/Modifier.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2845,"kind":2048,"name":"getBoundingBox","url":"classes/Modifier.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2846,"kind":2048,"name":"getContext","url":"classes/Modifier.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2847,"kind":2048,"name":"setContext","url":"classes/Modifier.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2848,"kind":2048,"name":"checkContext","url":"classes/Modifier.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2849,"kind":262144,"name":"font","url":"classes/Modifier.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2850,"kind":2048,"name":"setFont","url":"classes/Modifier.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2851,"kind":2048,"name":"getFont","url":"classes/Modifier.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2852,"kind":2048,"name":"resetFont","url":"classes/Modifier.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2853,"kind":262144,"name":"fontInfo","url":"classes/Modifier.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2854,"kind":2048,"name":"setFontSize","url":"classes/Modifier.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2855,"kind":2048,"name":"getFontSize","url":"classes/Modifier.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2856,"kind":262144,"name":"fontSize","url":"classes/Modifier.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2857,"kind":262144,"name":"fontSizeInPoints","url":"classes/Modifier.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2858,"kind":262144,"name":"fontSizeInPixels","url":"classes/Modifier.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2859,"kind":262144,"name":"fontStyle","url":"classes/Modifier.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2860,"kind":262144,"name":"fontWeight","url":"classes/Modifier.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2861,"kind":256,"name":"ModifierContextState","url":"interfaces/ModifierContextState.html","classes":"tsd-kind-interface"},{"id":2862,"kind":1024,"name":"right_shift","url":"interfaces/ModifierContextState.html#right_shift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ModifierContextState"},{"id":2863,"kind":1024,"name":"left_shift","url":"interfaces/ModifierContextState.html#left_shift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ModifierContextState"},{"id":2864,"kind":1024,"name":"text_line","url":"interfaces/ModifierContextState.html#text_line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ModifierContextState"},{"id":2865,"kind":1024,"name":"top_text_line","url":"interfaces/ModifierContextState.html#top_text_line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ModifierContextState"},{"id":2866,"kind":256,"name":"ModifierContextMetrics","url":"interfaces/ModifierContextMetrics.html","classes":"tsd-kind-interface"},{"id":2867,"kind":1024,"name":"width","url":"interfaces/ModifierContextMetrics.html#width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ModifierContextMetrics"},{"id":2868,"kind":1024,"name":"spacing","url":"interfaces/ModifierContextMetrics.html#spacing","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ModifierContextMetrics"},{"id":2869,"kind":4194304,"name":"ModifierContextMember","url":"modules.html#ModifierContextMember","classes":"tsd-kind-type-alias"},{"id":2870,"kind":128,"name":"ModifierContext","url":"classes/ModifierContext.html","classes":"tsd-kind-class"},{"id":2871,"kind":1024,"name":"DEBUG","url":"classes/ModifierContext.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"ModifierContext"},{"id":2872,"kind":512,"name":"constructor","url":"classes/ModifierContext.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"ModifierContext"},{"id":2873,"kind":2048,"name":"addModifier","url":"classes/ModifierContext.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ModifierContext"},{"id":2874,"kind":2048,"name":"addMember","url":"classes/ModifierContext.html#addMember","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ModifierContext"},{"id":2875,"kind":2048,"name":"getModifiers","url":"classes/ModifierContext.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ModifierContext"},{"id":2876,"kind":2048,"name":"getMembers","url":"classes/ModifierContext.html#getMembers","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ModifierContext"},{"id":2877,"kind":2048,"name":"getWidth","url":"classes/ModifierContext.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ModifierContext"},{"id":2878,"kind":2048,"name":"getLeftShift","url":"classes/ModifierContext.html#getLeftShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ModifierContext"},{"id":2879,"kind":2048,"name":"getRightShift","url":"classes/ModifierContext.html#getRightShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ModifierContext"},{"id":2880,"kind":2048,"name":"getState","url":"classes/ModifierContext.html#getState","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ModifierContext"},{"id":2881,"kind":2048,"name":"getMetrics","url":"classes/ModifierContext.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ModifierContext"},{"id":2882,"kind":2048,"name":"preFormat","url":"classes/ModifierContext.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ModifierContext"},{"id":2883,"kind":2048,"name":"postFormat","url":"classes/ModifierContext.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ModifierContext"},{"id":2884,"kind":256,"name":"MultimeasureRestRenderOptions","url":"interfaces/MultimeasureRestRenderOptions.html","classes":"tsd-kind-interface"},{"id":2885,"kind":1024,"name":"number_of_measures","url":"interfaces/MultimeasureRestRenderOptions.html#number_of_measures","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2886,"kind":1024,"name":"use_symbols","url":"interfaces/MultimeasureRestRenderOptions.html#use_symbols","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2887,"kind":1024,"name":"symbol_spacing","url":"interfaces/MultimeasureRestRenderOptions.html#symbol_spacing","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2888,"kind":1024,"name":"show_number","url":"interfaces/MultimeasureRestRenderOptions.html#show_number","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2889,"kind":1024,"name":"number_line","url":"interfaces/MultimeasureRestRenderOptions.html#number_line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2890,"kind":1024,"name":"number_glyph_point","url":"interfaces/MultimeasureRestRenderOptions.html#number_glyph_point","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2891,"kind":1024,"name":"padding_left","url":"interfaces/MultimeasureRestRenderOptions.html#padding_left","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2892,"kind":1024,"name":"padding_right","url":"interfaces/MultimeasureRestRenderOptions.html#padding_right","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2893,"kind":1024,"name":"line","url":"interfaces/MultimeasureRestRenderOptions.html#line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2894,"kind":1024,"name":"spacing_between_lines_px","url":"interfaces/MultimeasureRestRenderOptions.html#spacing_between_lines_px","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2895,"kind":1024,"name":"semibreve_rest_glyph_scale","url":"interfaces/MultimeasureRestRenderOptions.html#semibreve_rest_glyph_scale","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2896,"kind":1024,"name":"line_thickness","url":"interfaces/MultimeasureRestRenderOptions.html#line_thickness","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2897,"kind":1024,"name":"serif_thickness","url":"interfaces/MultimeasureRestRenderOptions.html#serif_thickness","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2898,"kind":128,"name":"MultiMeasureRest","url":"classes/MultiMeasureRest.html","classes":"tsd-kind-class"},{"id":2899,"kind":262144,"name":"CATEGORY","url":"classes/MultiMeasureRest.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"MultiMeasureRest"},{"id":2900,"kind":1024,"name":"TEXT_FONT","url":"classes/MultiMeasureRest.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"MultiMeasureRest"},{"id":2901,"kind":512,"name":"constructor","url":"classes/MultiMeasureRest.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"MultiMeasureRest"},{"id":2902,"kind":1024,"name":"render_options","url":"classes/MultiMeasureRest.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"MultiMeasureRest"},{"id":2903,"kind":2048,"name":"getXs","url":"classes/MultiMeasureRest.html#getXs","classes":"tsd-kind-method tsd-parent-kind-class","parent":"MultiMeasureRest"},{"id":2904,"kind":2048,"name":"setStave","url":"classes/MultiMeasureRest.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"MultiMeasureRest"},{"id":2905,"kind":2048,"name":"getStave","url":"classes/MultiMeasureRest.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"MultiMeasureRest"},{"id":2906,"kind":2048,"name":"checkStave","url":"classes/MultiMeasureRest.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"MultiMeasureRest"},{"id":2907,"kind":2048,"name":"drawLine","url":"classes/MultiMeasureRest.html#drawLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"MultiMeasureRest"},{"id":2908,"kind":2048,"name":"drawSymbols","url":"classes/MultiMeasureRest.html#drawSymbols","classes":"tsd-kind-method tsd-parent-kind-class","parent":"MultiMeasureRest"},{"id":2909,"kind":2048,"name":"draw","url":"classes/MultiMeasureRest.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"MultiMeasureRest"},{"id":2910,"kind":2048,"name":"addChildElement","url":"classes/MultiMeasureRest.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2911,"kind":2048,"name":"getCategory","url":"classes/MultiMeasureRest.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2912,"kind":2048,"name":"setStyle","url":"classes/MultiMeasureRest.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2913,"kind":2048,"name":"setGroupStyle","url":"classes/MultiMeasureRest.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2914,"kind":2048,"name":"getStyle","url":"classes/MultiMeasureRest.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2915,"kind":2048,"name":"applyStyle","url":"classes/MultiMeasureRest.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2916,"kind":2048,"name":"restoreStyle","url":"classes/MultiMeasureRest.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2917,"kind":2048,"name":"drawWithStyle","url":"classes/MultiMeasureRest.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2918,"kind":2048,"name":"hasClass","url":"classes/MultiMeasureRest.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2919,"kind":2048,"name":"addClass","url":"classes/MultiMeasureRest.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2920,"kind":2048,"name":"removeClass","url":"classes/MultiMeasureRest.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2921,"kind":2048,"name":"onRegister","url":"classes/MultiMeasureRest.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2922,"kind":2048,"name":"isRendered","url":"classes/MultiMeasureRest.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2923,"kind":2048,"name":"setRendered","url":"classes/MultiMeasureRest.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2924,"kind":2048,"name":"getAttributes","url":"classes/MultiMeasureRest.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2925,"kind":2048,"name":"getAttribute","url":"classes/MultiMeasureRest.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2926,"kind":2048,"name":"setAttribute","url":"classes/MultiMeasureRest.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2927,"kind":2048,"name":"getBoundingBox","url":"classes/MultiMeasureRest.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2928,"kind":2048,"name":"getContext","url":"classes/MultiMeasureRest.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2929,"kind":2048,"name":"setContext","url":"classes/MultiMeasureRest.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2930,"kind":2048,"name":"checkContext","url":"classes/MultiMeasureRest.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2931,"kind":262144,"name":"font","url":"classes/MultiMeasureRest.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2932,"kind":2048,"name":"setFont","url":"classes/MultiMeasureRest.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2933,"kind":2048,"name":"getFont","url":"classes/MultiMeasureRest.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2934,"kind":2048,"name":"resetFont","url":"classes/MultiMeasureRest.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2935,"kind":262144,"name":"fontInfo","url":"classes/MultiMeasureRest.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2936,"kind":2048,"name":"setFontSize","url":"classes/MultiMeasureRest.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2937,"kind":2048,"name":"getFontSize","url":"classes/MultiMeasureRest.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2938,"kind":262144,"name":"fontSize","url":"classes/MultiMeasureRest.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2939,"kind":262144,"name":"fontSizeInPoints","url":"classes/MultiMeasureRest.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2940,"kind":262144,"name":"fontSizeInPixels","url":"classes/MultiMeasureRest.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2941,"kind":262144,"name":"fontStyle","url":"classes/MultiMeasureRest.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2942,"kind":262144,"name":"fontWeight","url":"classes/MultiMeasureRest.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2943,"kind":256,"name":"NoteAccidental","url":"interfaces/NoteAccidental.html","classes":"tsd-kind-interface"},{"id":2944,"kind":1024,"name":"note","url":"interfaces/NoteAccidental.html#note","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteAccidental"},{"id":2945,"kind":1024,"name":"accidental","url":"interfaces/NoteAccidental.html#accidental","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteAccidental"},{"id":2946,"kind":256,"name":"NoteParts","url":"interfaces/NoteParts.html","classes":"tsd-kind-interface"},{"id":2947,"kind":1024,"name":"root","url":"interfaces/NoteParts.html#root","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteParts"},{"id":2948,"kind":1024,"name":"accidental","url":"interfaces/NoteParts.html#accidental","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteParts"},{"id":2949,"kind":256,"name":"KeyParts","url":"interfaces/KeyParts.html","classes":"tsd-kind-interface"},{"id":2950,"kind":1024,"name":"root","url":"interfaces/KeyParts.html#root","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyParts"},{"id":2951,"kind":1024,"name":"accidental","url":"interfaces/KeyParts.html#accidental","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyParts"},{"id":2952,"kind":1024,"name":"type","url":"interfaces/KeyParts.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyParts"},{"id":2953,"kind":4194304,"name":"KeyValue","url":"modules.html#KeyValue","classes":"tsd-kind-type-alias"},{"id":2954,"kind":4194304,"name":"RootValue","url":"modules.html#RootValue","classes":"tsd-kind-type-alias"},{"id":2955,"kind":4194304,"name":"AccidentalValue","url":"modules.html#AccidentalValue","classes":"tsd-kind-type-alias"},{"id":2956,"kind":256,"name":"Key","url":"interfaces/Key.html","classes":"tsd-kind-interface"},{"id":2957,"kind":1024,"name":"root_index","url":"interfaces/Key.html#root_index","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Key"},{"id":2958,"kind":1024,"name":"int_val","url":"interfaces/Key.html#int_val","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Key"},{"id":2959,"kind":128,"name":"Music","url":"classes/Music.html","classes":"tsd-kind-class"},{"id":2960,"kind":262144,"name":"NUM_TONES","url":"classes/Music.html#NUM_TONES","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":2961,"kind":262144,"name":"roots","url":"classes/Music.html#roots","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":2962,"kind":262144,"name":"root_values","url":"classes/Music.html#root_values","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":2963,"kind":262144,"name":"root_indices","url":"classes/Music.html#root_indices","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":2964,"kind":262144,"name":"canonical_notes","url":"classes/Music.html#canonical_notes","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":2965,"kind":262144,"name":"diatonic_intervals","url":"classes/Music.html#diatonic_intervals","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":2966,"kind":262144,"name":"diatonic_accidentals","url":"classes/Music.html#diatonic_accidentals","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":2967,"kind":262144,"name":"intervals","url":"classes/Music.html#intervals","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":2968,"kind":262144,"name":"scales","url":"classes/Music.html#scales","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":2969,"kind":262144,"name":"scaleTypes","url":"classes/Music.html#scaleTypes","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":2970,"kind":262144,"name":"accidentals","url":"classes/Music.html#accidentals","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":2971,"kind":262144,"name":"noteValues","url":"classes/Music.html#noteValues","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":2972,"kind":512,"name":"constructor","url":"classes/Music.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Music"},{"id":2973,"kind":2048,"name":"getNoteParts","url":"classes/Music.html#getNoteParts","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Music"},{"id":2974,"kind":2048,"name":"getKeyParts","url":"classes/Music.html#getKeyParts","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Music"},{"id":2975,"kind":2048,"name":"getNoteValue","url":"classes/Music.html#getNoteValue","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Music"},{"id":2976,"kind":2048,"name":"getIntervalValue","url":"classes/Music.html#getIntervalValue","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Music"},{"id":2977,"kind":2048,"name":"getCanonicalNoteName","url":"classes/Music.html#getCanonicalNoteName","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Music"},{"id":2978,"kind":2048,"name":"getCanonicalIntervalName","url":"classes/Music.html#getCanonicalIntervalName","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Music"},{"id":2979,"kind":2048,"name":"getRelativeNoteValue","url":"classes/Music.html#getRelativeNoteValue","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Music"},{"id":2980,"kind":2048,"name":"getRelativeNoteName","url":"classes/Music.html#getRelativeNoteName","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Music"},{"id":2981,"kind":2048,"name":"getScaleTones","url":"classes/Music.html#getScaleTones","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Music"},{"id":2982,"kind":2048,"name":"getIntervalBetween","url":"classes/Music.html#getIntervalBetween","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Music"},{"id":2983,"kind":2048,"name":"createScaleMap","url":"classes/Music.html#createScaleMap","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Music"},{"id":2984,"kind":256,"name":"KeyProps","url":"interfaces/KeyProps.html","classes":"tsd-kind-interface"},{"id":2985,"kind":1024,"name":"stem_down_x_offset","url":"interfaces/KeyProps.html#stem_down_x_offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyProps"},{"id":2986,"kind":1024,"name":"stem_up_x_offset","url":"interfaces/KeyProps.html#stem_up_x_offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyProps"},{"id":2987,"kind":1024,"name":"key","url":"interfaces/KeyProps.html#key","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyProps"},{"id":2988,"kind":1024,"name":"octave","url":"interfaces/KeyProps.html#octave","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyProps"},{"id":2989,"kind":1024,"name":"line","url":"interfaces/KeyProps.html#line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyProps"},{"id":2990,"kind":1024,"name":"int_value","url":"interfaces/KeyProps.html#int_value","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyProps"},{"id":2991,"kind":1024,"name":"accidental","url":"interfaces/KeyProps.html#accidental","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyProps"},{"id":2992,"kind":1024,"name":"code","url":"interfaces/KeyProps.html#code","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyProps"},{"id":2993,"kind":1024,"name":"stroke","url":"interfaces/KeyProps.html#stroke","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyProps"},{"id":2994,"kind":1024,"name":"shift_right","url":"interfaces/KeyProps.html#shift_right","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyProps"},{"id":2995,"kind":1024,"name":"displaced","url":"interfaces/KeyProps.html#displaced","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyProps"},{"id":2996,"kind":256,"name":"NoteMetrics","url":"interfaces/NoteMetrics.html","classes":"tsd-kind-interface"},{"id":2997,"kind":1024,"name":"width","url":"interfaces/NoteMetrics.html#width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteMetrics"},{"id":2998,"kind":1024,"name":"glyphWidth","url":"interfaces/NoteMetrics.html#glyphWidth","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteMetrics"},{"id":2999,"kind":1024,"name":"notePx","url":"interfaces/NoteMetrics.html#notePx","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteMetrics"},{"id":3000,"kind":1024,"name":"modLeftPx","url":"interfaces/NoteMetrics.html#modLeftPx","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteMetrics"},{"id":3001,"kind":1024,"name":"modRightPx","url":"interfaces/NoteMetrics.html#modRightPx","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteMetrics"},{"id":3002,"kind":1024,"name":"leftDisplacedHeadPx","url":"interfaces/NoteMetrics.html#leftDisplacedHeadPx","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteMetrics"},{"id":3003,"kind":1024,"name":"glyphPx","url":"interfaces/NoteMetrics.html#glyphPx","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteMetrics"},{"id":3004,"kind":1024,"name":"rightDisplacedHeadPx","url":"interfaces/NoteMetrics.html#rightDisplacedHeadPx","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteMetrics"},{"id":3005,"kind":256,"name":"NoteDuration","url":"interfaces/NoteDuration.html","classes":"tsd-kind-interface"},{"id":3006,"kind":1024,"name":"duration","url":"interfaces/NoteDuration.html#duration","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteDuration"},{"id":3007,"kind":1024,"name":"dots","url":"interfaces/NoteDuration.html#dots","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteDuration"},{"id":3008,"kind":1024,"name":"type","url":"interfaces/NoteDuration.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteDuration"},{"id":3009,"kind":256,"name":"ParsedNote","url":"interfaces/ParsedNote.html","classes":"tsd-kind-interface"},{"id":3010,"kind":1024,"name":"duration","url":"interfaces/ParsedNote.html#duration","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ParsedNote"},{"id":3011,"kind":1024,"name":"type","url":"interfaces/ParsedNote.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ParsedNote"},{"id":3012,"kind":1024,"name":"customTypes","url":"interfaces/ParsedNote.html#customTypes","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ParsedNote"},{"id":3013,"kind":1024,"name":"dots","url":"interfaces/ParsedNote.html#dots","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ParsedNote"},{"id":3014,"kind":1024,"name":"ticks","url":"interfaces/ParsedNote.html#ticks","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ParsedNote"},{"id":3015,"kind":256,"name":"NoteStruct","url":"interfaces/NoteStruct.html","classes":"tsd-kind-interface"},{"id":3016,"kind":1024,"name":"keys","url":"interfaces/NoteStruct.html#keys","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteStruct"},{"id":3017,"kind":1024,"name":"duration","url":"interfaces/NoteStruct.html#duration","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteStruct"},{"id":3018,"kind":1024,"name":"line","url":"interfaces/NoteStruct.html#line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteStruct"},{"id":3019,"kind":1024,"name":"dots","url":"interfaces/NoteStruct.html#dots","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteStruct"},{"id":3020,"kind":1024,"name":"type","url":"interfaces/NoteStruct.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteStruct"},{"id":3021,"kind":1024,"name":"align_center","url":"interfaces/NoteStruct.html#align_center","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteStruct"},{"id":3022,"kind":1024,"name":"duration_override","url":"interfaces/NoteStruct.html#duration_override","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteStruct"},{"id":3023,"kind":128,"name":"Note","url":"classes/Note.html","classes":"tsd-kind-class"},{"id":3024,"kind":262144,"name":"CATEGORY","url":"classes/Note.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Note"},{"id":3025,"kind":2048,"name":"plotMetrics","url":"classes/Note.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Note"},{"id":3026,"kind":1024,"name":"TEXT_FONT","url":"classes/Note.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Note"},{"id":3027,"kind":512,"name":"constructor","url":"classes/Note.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Note"},{"id":3028,"kind":1024,"name":"glyph","url":"classes/Note.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Note"},{"id":3029,"kind":1024,"name":"keys","url":"classes/Note.html#keys","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Note"},{"id":3030,"kind":1024,"name":"keyProps","url":"classes/Note.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Note"},{"id":3031,"kind":1024,"name":"render_options","url":"classes/Note.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Note"},{"id":3032,"kind":65536,"name":"__type","url":"classes/Note.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Note"},{"id":3033,"kind":1024,"name":"draw_stem_through_stave","url":"classes/Note.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3034,"kind":1024,"name":"draw","url":"classes/Note.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3035,"kind":1024,"name":"draw_dots","url":"classes/Note.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3036,"kind":1024,"name":"draw_stem","url":"classes/Note.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3037,"kind":1024,"name":"y_shift","url":"classes/Note.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3038,"kind":1024,"name":"extend_left","url":"classes/Note.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3039,"kind":1024,"name":"extend_right","url":"classes/Note.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3040,"kind":1024,"name":"glyph_font_scale","url":"classes/Note.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3041,"kind":1024,"name":"annotation_spacing","url":"classes/Note.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3042,"kind":1024,"name":"glyph_font_size","url":"classes/Note.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3043,"kind":1024,"name":"scale","url":"classes/Note.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3044,"kind":1024,"name":"font","url":"classes/Note.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3045,"kind":1024,"name":"stroke_px","url":"classes/Note.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3046,"kind":2048,"name":"getPlayNote","url":"classes/Note.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3047,"kind":2048,"name":"setPlayNote","url":"classes/Note.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3048,"kind":2048,"name":"isRest","url":"classes/Note.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3049,"kind":2048,"name":"addStroke","url":"classes/Note.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3050,"kind":2048,"name":"getStave","url":"classes/Note.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Note"},{"id":3051,"kind":2048,"name":"checkStave","url":"classes/Note.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3052,"kind":2048,"name":"setStave","url":"classes/Note.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Note"},{"id":3053,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/Note.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3054,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/Note.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3055,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/Note.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3056,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/Note.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3057,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/Note.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Note"},{"id":3058,"kind":2048,"name":"getLineNumber","url":"classes/Note.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3059,"kind":2048,"name":"getLineForRest","url":"classes/Note.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3060,"kind":2048,"name":"getGlyph","url":"classes/Note.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3061,"kind":2048,"name":"getGlyphWidth","url":"classes/Note.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3062,"kind":2048,"name":"setYs","url":"classes/Note.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3063,"kind":2048,"name":"getYs","url":"classes/Note.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3064,"kind":2048,"name":"getYForTopText","url":"classes/Note.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3065,"kind":2048,"name":"getVoice","url":"classes/Note.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Note"},{"id":3066,"kind":2048,"name":"setVoice","url":"classes/Note.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Note"},{"id":3067,"kind":2048,"name":"getTickContext","url":"classes/Note.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3068,"kind":2048,"name":"setTickContext","url":"classes/Note.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Note"},{"id":3069,"kind":2048,"name":"getDuration","url":"classes/Note.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3070,"kind":2048,"name":"isDotted","url":"classes/Note.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3071,"kind":2048,"name":"hasStem","url":"classes/Note.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3072,"kind":2048,"name":"getNoteType","url":"classes/Note.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3073,"kind":2048,"name":"getBeam","url":"classes/Note.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3074,"kind":2048,"name":"checkBeam","url":"classes/Note.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3075,"kind":2048,"name":"hasBeam","url":"classes/Note.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3076,"kind":2048,"name":"setBeam","url":"classes/Note.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3077,"kind":2048,"name":"addModifier","url":"classes/Note.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Note"},{"id":3078,"kind":2048,"name":"getModifiersByType","url":"classes/Note.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3079,"kind":2048,"name":"getModifierStartXY","url":"classes/Note.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3080,"kind":2048,"name":"getRightParenthesisPx","url":"classes/Note.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3081,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/Note.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3082,"kind":2048,"name":"getFirstDotPx","url":"classes/Note.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3083,"kind":2048,"name":"getMetrics","url":"classes/Note.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Note"},{"id":3084,"kind":2048,"name":"getAbsoluteX","url":"classes/Note.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Note"},{"id":3085,"kind":2048,"name":"getStemDirection","url":"classes/Note.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3086,"kind":2048,"name":"getStemExtents","url":"classes/Note.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3087,"kind":2048,"name":"getTieRightX","url":"classes/Note.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3088,"kind":2048,"name":"getTieLeftX","url":"classes/Note.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3089,"kind":2048,"name":"getKeys","url":"classes/Note.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3090,"kind":2048,"name":"getKeyProps","url":"classes/Note.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3091,"kind":2048,"name":"reset","url":"classes/Note.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3092,"kind":2048,"name":"getTicks","url":"classes/Note.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3093,"kind":2048,"name":"setIgnoreTicks","url":"classes/Note.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3094,"kind":2048,"name":"setWidth","url":"classes/Note.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3095,"kind":2048,"name":"getWidth","url":"classes/Note.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3096,"kind":2048,"name":"setXShift","url":"classes/Note.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3097,"kind":2048,"name":"getXShift","url":"classes/Note.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3098,"kind":2048,"name":"getX","url":"classes/Note.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3099,"kind":2048,"name":"getFormatterMetrics","url":"classes/Note.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3100,"kind":2048,"name":"getCenterXShift","url":"classes/Note.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3101,"kind":2048,"name":"setCenterXShift","url":"classes/Note.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3102,"kind":2048,"name":"isCenterAligned","url":"classes/Note.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3103,"kind":2048,"name":"setCenterAlignment","url":"classes/Note.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3104,"kind":2048,"name":"getTuplet","url":"classes/Note.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3105,"kind":2048,"name":"getTupletStack","url":"classes/Note.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3106,"kind":2048,"name":"resetTuplet","url":"classes/Note.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3107,"kind":2048,"name":"setTuplet","url":"classes/Note.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3108,"kind":2048,"name":"addToModifierContext","url":"classes/Note.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3109,"kind":2048,"name":"getModifiers","url":"classes/Note.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3110,"kind":2048,"name":"checkTickContext","url":"classes/Note.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3111,"kind":2048,"name":"preFormat","url":"classes/Note.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3112,"kind":262144,"name":"preFormatted","url":"classes/Note.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3113,"kind":2048,"name":"postFormat","url":"classes/Note.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3114,"kind":262144,"name":"postFormatted","url":"classes/Note.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3115,"kind":2048,"name":"getIntrinsicTicks","url":"classes/Note.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3116,"kind":2048,"name":"setIntrinsicTicks","url":"classes/Note.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3117,"kind":2048,"name":"getTickMultiplier","url":"classes/Note.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3118,"kind":2048,"name":"applyTickMultiplier","url":"classes/Note.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3119,"kind":2048,"name":"setDuration","url":"classes/Note.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3120,"kind":2048,"name":"setModifierContext","url":"classes/Note.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3121,"kind":2048,"name":"getModifierContext","url":"classes/Note.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3122,"kind":2048,"name":"checkModifierContext","url":"classes/Note.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3123,"kind":2048,"name":"addChildElement","url":"classes/Note.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3124,"kind":2048,"name":"getCategory","url":"classes/Note.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3125,"kind":2048,"name":"setStyle","url":"classes/Note.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3126,"kind":2048,"name":"setGroupStyle","url":"classes/Note.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3127,"kind":2048,"name":"getStyle","url":"classes/Note.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3128,"kind":2048,"name":"applyStyle","url":"classes/Note.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3129,"kind":2048,"name":"restoreStyle","url":"classes/Note.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3130,"kind":2048,"name":"drawWithStyle","url":"classes/Note.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3131,"kind":2048,"name":"draw","url":"classes/Note.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3132,"kind":2048,"name":"hasClass","url":"classes/Note.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3133,"kind":2048,"name":"addClass","url":"classes/Note.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3134,"kind":2048,"name":"removeClass","url":"classes/Note.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3135,"kind":2048,"name":"onRegister","url":"classes/Note.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3136,"kind":2048,"name":"isRendered","url":"classes/Note.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3137,"kind":2048,"name":"setRendered","url":"classes/Note.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3138,"kind":2048,"name":"getAttributes","url":"classes/Note.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3139,"kind":2048,"name":"getAttribute","url":"classes/Note.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3140,"kind":2048,"name":"setAttribute","url":"classes/Note.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3141,"kind":2048,"name":"getBoundingBox","url":"classes/Note.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3142,"kind":2048,"name":"getContext","url":"classes/Note.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3143,"kind":2048,"name":"setContext","url":"classes/Note.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3144,"kind":2048,"name":"checkContext","url":"classes/Note.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3145,"kind":262144,"name":"font","url":"classes/Note.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3146,"kind":2048,"name":"setFont","url":"classes/Note.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3147,"kind":2048,"name":"getFont","url":"classes/Note.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3148,"kind":2048,"name":"resetFont","url":"classes/Note.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3149,"kind":262144,"name":"fontInfo","url":"classes/Note.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3150,"kind":2048,"name":"setFontSize","url":"classes/Note.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3151,"kind":2048,"name":"getFontSize","url":"classes/Note.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3152,"kind":262144,"name":"fontSize","url":"classes/Note.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3153,"kind":262144,"name":"fontSizeInPoints","url":"classes/Note.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3154,"kind":262144,"name":"fontSizeInPixels","url":"classes/Note.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3155,"kind":262144,"name":"fontStyle","url":"classes/Note.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3156,"kind":262144,"name":"fontWeight","url":"classes/Note.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3157,"kind":256,"name":"NoteHeadStruct","url":"interfaces/NoteHeadStruct.html","classes":"tsd-kind-interface"},{"id":3158,"kind":1024,"name":"line","url":"interfaces/NoteHeadStruct.html#line","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite","parent":"NoteHeadStruct"},{"id":3159,"kind":1024,"name":"glyph_font_scale","url":"interfaces/NoteHeadStruct.html#glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3160,"kind":1024,"name":"slashed","url":"interfaces/NoteHeadStruct.html#slashed","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3161,"kind":1024,"name":"style","url":"interfaces/NoteHeadStruct.html#style","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3162,"kind":1024,"name":"stem_down_x_offset","url":"interfaces/NoteHeadStruct.html#stem_down_x_offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3163,"kind":1024,"name":"stem_up_x_offset","url":"interfaces/NoteHeadStruct.html#stem_up_x_offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3164,"kind":1024,"name":"custom_glyph_code","url":"interfaces/NoteHeadStruct.html#custom_glyph_code","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3165,"kind":1024,"name":"x_shift","url":"interfaces/NoteHeadStruct.html#x_shift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3166,"kind":1024,"name":"stem_direction","url":"interfaces/NoteHeadStruct.html#stem_direction","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3167,"kind":1024,"name":"displaced","url":"interfaces/NoteHeadStruct.html#displaced","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3168,"kind":1024,"name":"note_type","url":"interfaces/NoteHeadStruct.html#note_type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3169,"kind":1024,"name":"x","url":"interfaces/NoteHeadStruct.html#x","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3170,"kind":1024,"name":"y","url":"interfaces/NoteHeadStruct.html#y","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3171,"kind":1024,"name":"index","url":"interfaces/NoteHeadStruct.html#index","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3172,"kind":1024,"name":"keys","url":"interfaces/NoteHeadStruct.html#keys","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"NoteHeadStruct"},{"id":3173,"kind":1024,"name":"duration","url":"interfaces/NoteHeadStruct.html#duration","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"NoteHeadStruct"},{"id":3174,"kind":1024,"name":"dots","url":"interfaces/NoteHeadStruct.html#dots","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"NoteHeadStruct"},{"id":3175,"kind":1024,"name":"type","url":"interfaces/NoteHeadStruct.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"NoteHeadStruct"},{"id":3176,"kind":1024,"name":"align_center","url":"interfaces/NoteHeadStruct.html#align_center","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"NoteHeadStruct"},{"id":3177,"kind":1024,"name":"duration_override","url":"interfaces/NoteHeadStruct.html#duration_override","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"NoteHeadStruct"},{"id":3178,"kind":128,"name":"NoteHead","url":"classes/NoteHead.html","classes":"tsd-kind-class"},{"id":3179,"kind":1024,"name":"DEBUG","url":"classes/NoteHead.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NoteHead"},{"id":3180,"kind":262144,"name":"CATEGORY","url":"classes/NoteHead.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"NoteHead"},{"id":3181,"kind":2048,"name":"plotMetrics","url":"classes/NoteHead.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"NoteHead"},{"id":3182,"kind":1024,"name":"TEXT_FONT","url":"classes/NoteHead.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"NoteHead"},{"id":3183,"kind":512,"name":"constructor","url":"classes/NoteHead.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"NoteHead"},{"id":3184,"kind":1024,"name":"glyph_code","url":"classes/NoteHead.html#glyph_code","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NoteHead"},{"id":3185,"kind":2048,"name":"getWidth","url":"classes/NoteHead.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"NoteHead"},{"id":3186,"kind":2048,"name":"isDisplaced","url":"classes/NoteHead.html#isDisplaced","classes":"tsd-kind-method tsd-parent-kind-class","parent":"NoteHead"},{"id":3187,"kind":2048,"name":"getGlyph","url":"classes/NoteHead.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"NoteHead"},{"id":3188,"kind":2048,"name":"setX","url":"classes/NoteHead.html#setX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"NoteHead"},{"id":3189,"kind":2048,"name":"getY","url":"classes/NoteHead.html#getY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"NoteHead"},{"id":3190,"kind":2048,"name":"setY","url":"classes/NoteHead.html#setY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"NoteHead"},{"id":3191,"kind":2048,"name":"getLine","url":"classes/NoteHead.html#getLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"NoteHead"},{"id":3192,"kind":2048,"name":"setLine","url":"classes/NoteHead.html#setLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"NoteHead"},{"id":3193,"kind":2048,"name":"getAbsoluteX","url":"classes/NoteHead.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"NoteHead"},{"id":3194,"kind":2048,"name":"getBoundingBox","url":"classes/NoteHead.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"NoteHead"},{"id":3195,"kind":2048,"name":"setStave","url":"classes/NoteHead.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"NoteHead"},{"id":3196,"kind":2048,"name":"preFormat","url":"classes/NoteHead.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"NoteHead"},{"id":3197,"kind":2048,"name":"draw","url":"classes/NoteHead.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"NoteHead"},{"id":3198,"kind":1024,"name":"glyph","url":"classes/NoteHead.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3199,"kind":1024,"name":"keys","url":"classes/NoteHead.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3200,"kind":1024,"name":"keyProps","url":"classes/NoteHead.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3201,"kind":1024,"name":"render_options","url":"classes/NoteHead.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3202,"kind":65536,"name":"__type","url":"classes/NoteHead.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"NoteHead"},{"id":3203,"kind":1024,"name":"draw_stem_through_stave","url":"classes/NoteHead.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3204,"kind":1024,"name":"draw","url":"classes/NoteHead.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3205,"kind":1024,"name":"draw_dots","url":"classes/NoteHead.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3206,"kind":1024,"name":"draw_stem","url":"classes/NoteHead.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3207,"kind":1024,"name":"y_shift","url":"classes/NoteHead.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3208,"kind":1024,"name":"extend_left","url":"classes/NoteHead.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3209,"kind":1024,"name":"extend_right","url":"classes/NoteHead.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3210,"kind":1024,"name":"glyph_font_scale","url":"classes/NoteHead.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3211,"kind":1024,"name":"annotation_spacing","url":"classes/NoteHead.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3212,"kind":1024,"name":"glyph_font_size","url":"classes/NoteHead.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3213,"kind":1024,"name":"scale","url":"classes/NoteHead.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3214,"kind":1024,"name":"font","url":"classes/NoteHead.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3215,"kind":1024,"name":"stroke_px","url":"classes/NoteHead.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3216,"kind":2048,"name":"getPlayNote","url":"classes/NoteHead.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3217,"kind":2048,"name":"setPlayNote","url":"classes/NoteHead.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3218,"kind":2048,"name":"isRest","url":"classes/NoteHead.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3219,"kind":2048,"name":"addStroke","url":"classes/NoteHead.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3220,"kind":2048,"name":"getStave","url":"classes/NoteHead.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3221,"kind":2048,"name":"checkStave","url":"classes/NoteHead.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3222,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/NoteHead.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3223,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/NoteHead.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3224,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/NoteHead.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3225,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/NoteHead.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3226,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/NoteHead.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3227,"kind":2048,"name":"getLineNumber","url":"classes/NoteHead.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3228,"kind":2048,"name":"getLineForRest","url":"classes/NoteHead.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3229,"kind":2048,"name":"getGlyphWidth","url":"classes/NoteHead.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3230,"kind":2048,"name":"setYs","url":"classes/NoteHead.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3231,"kind":2048,"name":"getYs","url":"classes/NoteHead.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3232,"kind":2048,"name":"getYForTopText","url":"classes/NoteHead.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3233,"kind":2048,"name":"getVoice","url":"classes/NoteHead.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3234,"kind":2048,"name":"setVoice","url":"classes/NoteHead.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3235,"kind":2048,"name":"getTickContext","url":"classes/NoteHead.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3236,"kind":2048,"name":"setTickContext","url":"classes/NoteHead.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3237,"kind":2048,"name":"getDuration","url":"classes/NoteHead.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3238,"kind":2048,"name":"isDotted","url":"classes/NoteHead.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3239,"kind":2048,"name":"hasStem","url":"classes/NoteHead.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3240,"kind":2048,"name":"getNoteType","url":"classes/NoteHead.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3241,"kind":2048,"name":"getBeam","url":"classes/NoteHead.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3242,"kind":2048,"name":"checkBeam","url":"classes/NoteHead.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3243,"kind":2048,"name":"hasBeam","url":"classes/NoteHead.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3244,"kind":2048,"name":"setBeam","url":"classes/NoteHead.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3245,"kind":2048,"name":"addModifier","url":"classes/NoteHead.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3246,"kind":2048,"name":"getModifiersByType","url":"classes/NoteHead.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3247,"kind":2048,"name":"getModifierStartXY","url":"classes/NoteHead.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3248,"kind":2048,"name":"getRightParenthesisPx","url":"classes/NoteHead.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3249,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/NoteHead.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3250,"kind":2048,"name":"getFirstDotPx","url":"classes/NoteHead.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3251,"kind":2048,"name":"getMetrics","url":"classes/NoteHead.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3252,"kind":2048,"name":"getStemDirection","url":"classes/NoteHead.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3253,"kind":2048,"name":"getStemExtents","url":"classes/NoteHead.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3254,"kind":2048,"name":"getTieRightX","url":"classes/NoteHead.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3255,"kind":2048,"name":"getTieLeftX","url":"classes/NoteHead.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3256,"kind":2048,"name":"getKeys","url":"classes/NoteHead.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3257,"kind":2048,"name":"getKeyProps","url":"classes/NoteHead.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3258,"kind":2048,"name":"reset","url":"classes/NoteHead.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3259,"kind":2048,"name":"getTicks","url":"classes/NoteHead.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3260,"kind":2048,"name":"setIgnoreTicks","url":"classes/NoteHead.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3261,"kind":2048,"name":"setWidth","url":"classes/NoteHead.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3262,"kind":2048,"name":"setXShift","url":"classes/NoteHead.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3263,"kind":2048,"name":"getXShift","url":"classes/NoteHead.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3264,"kind":2048,"name":"getX","url":"classes/NoteHead.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3265,"kind":2048,"name":"getFormatterMetrics","url":"classes/NoteHead.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3266,"kind":2048,"name":"getCenterXShift","url":"classes/NoteHead.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3267,"kind":2048,"name":"setCenterXShift","url":"classes/NoteHead.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3268,"kind":2048,"name":"isCenterAligned","url":"classes/NoteHead.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3269,"kind":2048,"name":"setCenterAlignment","url":"classes/NoteHead.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3270,"kind":2048,"name":"getTuplet","url":"classes/NoteHead.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3271,"kind":2048,"name":"getTupletStack","url":"classes/NoteHead.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3272,"kind":2048,"name":"resetTuplet","url":"classes/NoteHead.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3273,"kind":2048,"name":"setTuplet","url":"classes/NoteHead.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3274,"kind":2048,"name":"addToModifierContext","url":"classes/NoteHead.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3275,"kind":2048,"name":"getModifiers","url":"classes/NoteHead.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3276,"kind":2048,"name":"checkTickContext","url":"classes/NoteHead.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3277,"kind":262144,"name":"preFormatted","url":"classes/NoteHead.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3278,"kind":2048,"name":"postFormat","url":"classes/NoteHead.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3279,"kind":262144,"name":"postFormatted","url":"classes/NoteHead.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3280,"kind":2048,"name":"getIntrinsicTicks","url":"classes/NoteHead.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3281,"kind":2048,"name":"setIntrinsicTicks","url":"classes/NoteHead.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3282,"kind":2048,"name":"getTickMultiplier","url":"classes/NoteHead.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3283,"kind":2048,"name":"applyTickMultiplier","url":"classes/NoteHead.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3284,"kind":2048,"name":"setDuration","url":"classes/NoteHead.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3285,"kind":2048,"name":"setModifierContext","url":"classes/NoteHead.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3286,"kind":2048,"name":"getModifierContext","url":"classes/NoteHead.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3287,"kind":2048,"name":"checkModifierContext","url":"classes/NoteHead.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3288,"kind":2048,"name":"addChildElement","url":"classes/NoteHead.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3289,"kind":2048,"name":"getCategory","url":"classes/NoteHead.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3290,"kind":2048,"name":"setStyle","url":"classes/NoteHead.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3291,"kind":2048,"name":"setGroupStyle","url":"classes/NoteHead.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3292,"kind":2048,"name":"getStyle","url":"classes/NoteHead.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3293,"kind":2048,"name":"applyStyle","url":"classes/NoteHead.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3294,"kind":2048,"name":"restoreStyle","url":"classes/NoteHead.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3295,"kind":2048,"name":"drawWithStyle","url":"classes/NoteHead.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3296,"kind":2048,"name":"hasClass","url":"classes/NoteHead.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3297,"kind":2048,"name":"addClass","url":"classes/NoteHead.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3298,"kind":2048,"name":"removeClass","url":"classes/NoteHead.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3299,"kind":2048,"name":"onRegister","url":"classes/NoteHead.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3300,"kind":2048,"name":"isRendered","url":"classes/NoteHead.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3301,"kind":2048,"name":"setRendered","url":"classes/NoteHead.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3302,"kind":2048,"name":"getAttributes","url":"classes/NoteHead.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3303,"kind":2048,"name":"getAttribute","url":"classes/NoteHead.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3304,"kind":2048,"name":"setAttribute","url":"classes/NoteHead.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3305,"kind":2048,"name":"getContext","url":"classes/NoteHead.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3306,"kind":2048,"name":"setContext","url":"classes/NoteHead.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3307,"kind":2048,"name":"checkContext","url":"classes/NoteHead.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3308,"kind":262144,"name":"font","url":"classes/NoteHead.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3309,"kind":2048,"name":"setFont","url":"classes/NoteHead.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3310,"kind":2048,"name":"getFont","url":"classes/NoteHead.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3311,"kind":2048,"name":"resetFont","url":"classes/NoteHead.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3312,"kind":262144,"name":"fontInfo","url":"classes/NoteHead.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3313,"kind":2048,"name":"setFontSize","url":"classes/NoteHead.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3314,"kind":2048,"name":"getFontSize","url":"classes/NoteHead.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3315,"kind":262144,"name":"fontSize","url":"classes/NoteHead.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3316,"kind":262144,"name":"fontSizeInPoints","url":"classes/NoteHead.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3317,"kind":262144,"name":"fontSizeInPixels","url":"classes/NoteHead.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3318,"kind":262144,"name":"fontStyle","url":"classes/NoteHead.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3319,"kind":262144,"name":"fontWeight","url":"classes/NoteHead.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3320,"kind":128,"name":"NoteSubGroup","url":"classes/NoteSubGroup.html","classes":"tsd-kind-class"},{"id":3321,"kind":262144,"name":"CATEGORY","url":"classes/NoteSubGroup.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"NoteSubGroup"},{"id":3322,"kind":2048,"name":"format","url":"classes/NoteSubGroup.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"NoteSubGroup"},{"id":3323,"kind":262144,"name":"Position","url":"classes/NoteSubGroup.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"NoteSubGroup"},{"id":3324,"kind":262144,"name":"PositionString","url":"classes/NoteSubGroup.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"NoteSubGroup"},{"id":3325,"kind":1024,"name":"TEXT_FONT","url":"classes/NoteSubGroup.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"NoteSubGroup"},{"id":3326,"kind":512,"name":"constructor","url":"classes/NoteSubGroup.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"NoteSubGroup"},{"id":3327,"kind":2048,"name":"preFormat","url":"classes/NoteSubGroup.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"NoteSubGroup"},{"id":3328,"kind":2048,"name":"setWidth","url":"classes/NoteSubGroup.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"NoteSubGroup"},{"id":3329,"kind":2048,"name":"getWidth","url":"classes/NoteSubGroup.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"NoteSubGroup"},{"id":3330,"kind":2048,"name":"draw","url":"classes/NoteSubGroup.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"NoteSubGroup"},{"id":3331,"kind":2048,"name":"getNote","url":"classes/NoteSubGroup.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3332,"kind":2048,"name":"checkAttachedNote","url":"classes/NoteSubGroup.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3333,"kind":2048,"name":"setNote","url":"classes/NoteSubGroup.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3334,"kind":2048,"name":"getIndex","url":"classes/NoteSubGroup.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3335,"kind":2048,"name":"checkIndex","url":"classes/NoteSubGroup.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3336,"kind":2048,"name":"setIndex","url":"classes/NoteSubGroup.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3337,"kind":2048,"name":"getModifierContext","url":"classes/NoteSubGroup.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3338,"kind":2048,"name":"checkModifierContext","url":"classes/NoteSubGroup.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3339,"kind":2048,"name":"setModifierContext","url":"classes/NoteSubGroup.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3340,"kind":2048,"name":"getPosition","url":"classes/NoteSubGroup.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3341,"kind":2048,"name":"setPosition","url":"classes/NoteSubGroup.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3342,"kind":2048,"name":"setTextLine","url":"classes/NoteSubGroup.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3343,"kind":2048,"name":"setYShift","url":"classes/NoteSubGroup.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3344,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/NoteSubGroup.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3345,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/NoteSubGroup.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3346,"kind":2048,"name":"setXShift","url":"classes/NoteSubGroup.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3347,"kind":2048,"name":"getXShift","url":"classes/NoteSubGroup.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3348,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/NoteSubGroup.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3349,"kind":2048,"name":"addChildElement","url":"classes/NoteSubGroup.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3350,"kind":2048,"name":"getCategory","url":"classes/NoteSubGroup.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3351,"kind":2048,"name":"setStyle","url":"classes/NoteSubGroup.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3352,"kind":2048,"name":"setGroupStyle","url":"classes/NoteSubGroup.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3353,"kind":2048,"name":"getStyle","url":"classes/NoteSubGroup.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3354,"kind":2048,"name":"applyStyle","url":"classes/NoteSubGroup.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3355,"kind":2048,"name":"restoreStyle","url":"classes/NoteSubGroup.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3356,"kind":2048,"name":"drawWithStyle","url":"classes/NoteSubGroup.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3357,"kind":2048,"name":"hasClass","url":"classes/NoteSubGroup.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3358,"kind":2048,"name":"addClass","url":"classes/NoteSubGroup.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3359,"kind":2048,"name":"removeClass","url":"classes/NoteSubGroup.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3360,"kind":2048,"name":"onRegister","url":"classes/NoteSubGroup.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3361,"kind":2048,"name":"isRendered","url":"classes/NoteSubGroup.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3362,"kind":2048,"name":"setRendered","url":"classes/NoteSubGroup.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3363,"kind":2048,"name":"getAttributes","url":"classes/NoteSubGroup.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3364,"kind":2048,"name":"getAttribute","url":"classes/NoteSubGroup.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3365,"kind":2048,"name":"setAttribute","url":"classes/NoteSubGroup.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3366,"kind":2048,"name":"getBoundingBox","url":"classes/NoteSubGroup.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3367,"kind":2048,"name":"getContext","url":"classes/NoteSubGroup.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3368,"kind":2048,"name":"setContext","url":"classes/NoteSubGroup.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3369,"kind":2048,"name":"checkContext","url":"classes/NoteSubGroup.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3370,"kind":262144,"name":"font","url":"classes/NoteSubGroup.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3371,"kind":2048,"name":"setFont","url":"classes/NoteSubGroup.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3372,"kind":2048,"name":"getFont","url":"classes/NoteSubGroup.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3373,"kind":2048,"name":"resetFont","url":"classes/NoteSubGroup.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3374,"kind":262144,"name":"fontInfo","url":"classes/NoteSubGroup.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3375,"kind":2048,"name":"setFontSize","url":"classes/NoteSubGroup.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3376,"kind":2048,"name":"getFontSize","url":"classes/NoteSubGroup.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3377,"kind":262144,"name":"fontSize","url":"classes/NoteSubGroup.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3378,"kind":262144,"name":"fontSizeInPoints","url":"classes/NoteSubGroup.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3379,"kind":262144,"name":"fontSizeInPixels","url":"classes/NoteSubGroup.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3380,"kind":262144,"name":"fontStyle","url":"classes/NoteSubGroup.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3381,"kind":262144,"name":"fontWeight","url":"classes/NoteSubGroup.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3382,"kind":128,"name":"Ornament","url":"classes/Ornament.html","classes":"tsd-kind-class"},{"id":3383,"kind":1024,"name":"DEBUG","url":"classes/Ornament.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Ornament"},{"id":3384,"kind":262144,"name":"CATEGORY","url":"classes/Ornament.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Ornament"},{"id":3385,"kind":262144,"name":"minPadding","url":"classes/Ornament.html#minPadding","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Ornament"},{"id":3386,"kind":2048,"name":"format","url":"classes/Ornament.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Ornament"},{"id":3387,"kind":262144,"name":"ornamentNoteTransition","url":"classes/Ornament.html#ornamentNoteTransition","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Ornament"},{"id":3388,"kind":262144,"name":"ornamentAttack","url":"classes/Ornament.html#ornamentAttack","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Ornament"},{"id":3389,"kind":262144,"name":"ornamentAlignWithNoteHead","url":"classes/Ornament.html#ornamentAlignWithNoteHead","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Ornament"},{"id":3390,"kind":262144,"name":"ornamentRelease","url":"classes/Ornament.html#ornamentRelease","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Ornament"},{"id":3391,"kind":262144,"name":"ornamentArticulation","url":"classes/Ornament.html#ornamentArticulation","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Ornament"},{"id":3392,"kind":262144,"name":"Position","url":"classes/Ornament.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Ornament"},{"id":3393,"kind":262144,"name":"PositionString","url":"classes/Ornament.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Ornament"},{"id":3394,"kind":1024,"name":"TEXT_FONT","url":"classes/Ornament.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Ornament"},{"id":3395,"kind":512,"name":"constructor","url":"classes/Ornament.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Ornament"},{"id":3396,"kind":1024,"name":"render_options","url":"classes/Ornament.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Ornament"},{"id":3397,"kind":65536,"name":"__type","url":"classes/Ornament.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Ornament"},{"id":3398,"kind":1024,"name":"accidentalUpperPadding","url":"classes/Ornament.html#__type.accidentalUpperPadding","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Ornament.__type"},{"id":3399,"kind":1024,"name":"accidentalLowerPadding","url":"classes/Ornament.html#__type.accidentalLowerPadding","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Ornament.__type"},{"id":3400,"kind":1024,"name":"font_scale","url":"classes/Ornament.html#__type.font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Ornament.__type"},{"id":3401,"kind":2048,"name":"getMetrics","url":"classes/Ornament.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Ornament"},{"id":3402,"kind":2048,"name":"setDelayed","url":"classes/Ornament.html#setDelayed","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Ornament"},{"id":3403,"kind":2048,"name":"setUpperAccidental","url":"classes/Ornament.html#setUpperAccidental","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Ornament"},{"id":3404,"kind":2048,"name":"setLowerAccidental","url":"classes/Ornament.html#setLowerAccidental","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Ornament"},{"id":3405,"kind":2048,"name":"draw","url":"classes/Ornament.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Ornament"},{"id":3406,"kind":2048,"name":"getWidth","url":"classes/Ornament.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3407,"kind":2048,"name":"setWidth","url":"classes/Ornament.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3408,"kind":2048,"name":"getNote","url":"classes/Ornament.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3409,"kind":2048,"name":"checkAttachedNote","url":"classes/Ornament.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3410,"kind":2048,"name":"setNote","url":"classes/Ornament.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3411,"kind":2048,"name":"getIndex","url":"classes/Ornament.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3412,"kind":2048,"name":"checkIndex","url":"classes/Ornament.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3413,"kind":2048,"name":"setIndex","url":"classes/Ornament.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3414,"kind":2048,"name":"getModifierContext","url":"classes/Ornament.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3415,"kind":2048,"name":"checkModifierContext","url":"classes/Ornament.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3416,"kind":2048,"name":"setModifierContext","url":"classes/Ornament.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3417,"kind":2048,"name":"getPosition","url":"classes/Ornament.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3418,"kind":2048,"name":"setPosition","url":"classes/Ornament.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3419,"kind":2048,"name":"setTextLine","url":"classes/Ornament.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3420,"kind":2048,"name":"setYShift","url":"classes/Ornament.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3421,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/Ornament.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3422,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/Ornament.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3423,"kind":2048,"name":"setXShift","url":"classes/Ornament.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3424,"kind":2048,"name":"getXShift","url":"classes/Ornament.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3425,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/Ornament.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3426,"kind":2048,"name":"addChildElement","url":"classes/Ornament.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3427,"kind":2048,"name":"getCategory","url":"classes/Ornament.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3428,"kind":2048,"name":"setStyle","url":"classes/Ornament.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3429,"kind":2048,"name":"setGroupStyle","url":"classes/Ornament.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3430,"kind":2048,"name":"getStyle","url":"classes/Ornament.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3431,"kind":2048,"name":"applyStyle","url":"classes/Ornament.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3432,"kind":2048,"name":"restoreStyle","url":"classes/Ornament.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3433,"kind":2048,"name":"drawWithStyle","url":"classes/Ornament.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3434,"kind":2048,"name":"hasClass","url":"classes/Ornament.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3435,"kind":2048,"name":"addClass","url":"classes/Ornament.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3436,"kind":2048,"name":"removeClass","url":"classes/Ornament.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3437,"kind":2048,"name":"onRegister","url":"classes/Ornament.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3438,"kind":2048,"name":"isRendered","url":"classes/Ornament.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3439,"kind":2048,"name":"setRendered","url":"classes/Ornament.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3440,"kind":2048,"name":"getAttributes","url":"classes/Ornament.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3441,"kind":2048,"name":"getAttribute","url":"classes/Ornament.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3442,"kind":2048,"name":"setAttribute","url":"classes/Ornament.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3443,"kind":2048,"name":"getBoundingBox","url":"classes/Ornament.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3444,"kind":2048,"name":"getContext","url":"classes/Ornament.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3445,"kind":2048,"name":"setContext","url":"classes/Ornament.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3446,"kind":2048,"name":"checkContext","url":"classes/Ornament.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3447,"kind":262144,"name":"font","url":"classes/Ornament.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3448,"kind":2048,"name":"setFont","url":"classes/Ornament.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3449,"kind":2048,"name":"getFont","url":"classes/Ornament.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3450,"kind":2048,"name":"resetFont","url":"classes/Ornament.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3451,"kind":262144,"name":"fontInfo","url":"classes/Ornament.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3452,"kind":2048,"name":"setFontSize","url":"classes/Ornament.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3453,"kind":2048,"name":"getFontSize","url":"classes/Ornament.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3454,"kind":262144,"name":"fontSize","url":"classes/Ornament.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3455,"kind":262144,"name":"fontSizeInPoints","url":"classes/Ornament.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3456,"kind":262144,"name":"fontSizeInPixels","url":"classes/Ornament.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3457,"kind":262144,"name":"fontStyle","url":"classes/Ornament.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3458,"kind":262144,"name":"fontWeight","url":"classes/Ornament.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3459,"kind":128,"name":"Parenthesis","url":"classes/Parenthesis.html","classes":"tsd-kind-class"},{"id":3460,"kind":262144,"name":"CATEGORY","url":"classes/Parenthesis.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Parenthesis"},{"id":3461,"kind":2048,"name":"buildAndAttach","url":"classes/Parenthesis.html#buildAndAttach","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Parenthesis"},{"id":3462,"kind":2048,"name":"format","url":"classes/Parenthesis.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Parenthesis"},{"id":3463,"kind":262144,"name":"Position","url":"classes/Parenthesis.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Parenthesis"},{"id":3464,"kind":262144,"name":"PositionString","url":"classes/Parenthesis.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Parenthesis"},{"id":3465,"kind":1024,"name":"TEXT_FONT","url":"classes/Parenthesis.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Parenthesis"},{"id":3466,"kind":512,"name":"constructor","url":"classes/Parenthesis.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Parenthesis"},{"id":3467,"kind":2048,"name":"setNote","url":"classes/Parenthesis.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Parenthesis"},{"id":3468,"kind":2048,"name":"draw","url":"classes/Parenthesis.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Parenthesis"},{"id":3469,"kind":2048,"name":"getWidth","url":"classes/Parenthesis.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3470,"kind":2048,"name":"setWidth","url":"classes/Parenthesis.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3471,"kind":2048,"name":"getNote","url":"classes/Parenthesis.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3472,"kind":2048,"name":"checkAttachedNote","url":"classes/Parenthesis.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3473,"kind":2048,"name":"getIndex","url":"classes/Parenthesis.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3474,"kind":2048,"name":"checkIndex","url":"classes/Parenthesis.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3475,"kind":2048,"name":"setIndex","url":"classes/Parenthesis.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3476,"kind":2048,"name":"getModifierContext","url":"classes/Parenthesis.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3477,"kind":2048,"name":"checkModifierContext","url":"classes/Parenthesis.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3478,"kind":2048,"name":"setModifierContext","url":"classes/Parenthesis.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3479,"kind":2048,"name":"getPosition","url":"classes/Parenthesis.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3480,"kind":2048,"name":"setPosition","url":"classes/Parenthesis.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3481,"kind":2048,"name":"setTextLine","url":"classes/Parenthesis.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3482,"kind":2048,"name":"setYShift","url":"classes/Parenthesis.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3483,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/Parenthesis.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3484,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/Parenthesis.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3485,"kind":2048,"name":"setXShift","url":"classes/Parenthesis.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3486,"kind":2048,"name":"getXShift","url":"classes/Parenthesis.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3487,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/Parenthesis.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3488,"kind":2048,"name":"addChildElement","url":"classes/Parenthesis.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3489,"kind":2048,"name":"getCategory","url":"classes/Parenthesis.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3490,"kind":2048,"name":"setStyle","url":"classes/Parenthesis.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3491,"kind":2048,"name":"setGroupStyle","url":"classes/Parenthesis.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3492,"kind":2048,"name":"getStyle","url":"classes/Parenthesis.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3493,"kind":2048,"name":"applyStyle","url":"classes/Parenthesis.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3494,"kind":2048,"name":"restoreStyle","url":"classes/Parenthesis.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3495,"kind":2048,"name":"drawWithStyle","url":"classes/Parenthesis.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3496,"kind":2048,"name":"hasClass","url":"classes/Parenthesis.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3497,"kind":2048,"name":"addClass","url":"classes/Parenthesis.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3498,"kind":2048,"name":"removeClass","url":"classes/Parenthesis.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3499,"kind":2048,"name":"onRegister","url":"classes/Parenthesis.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3500,"kind":2048,"name":"isRendered","url":"classes/Parenthesis.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3501,"kind":2048,"name":"setRendered","url":"classes/Parenthesis.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3502,"kind":2048,"name":"getAttributes","url":"classes/Parenthesis.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3503,"kind":2048,"name":"getAttribute","url":"classes/Parenthesis.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3504,"kind":2048,"name":"setAttribute","url":"classes/Parenthesis.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3505,"kind":2048,"name":"getBoundingBox","url":"classes/Parenthesis.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3506,"kind":2048,"name":"getContext","url":"classes/Parenthesis.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3507,"kind":2048,"name":"setContext","url":"classes/Parenthesis.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3508,"kind":2048,"name":"checkContext","url":"classes/Parenthesis.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3509,"kind":262144,"name":"font","url":"classes/Parenthesis.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3510,"kind":2048,"name":"setFont","url":"classes/Parenthesis.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3511,"kind":2048,"name":"getFont","url":"classes/Parenthesis.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3512,"kind":2048,"name":"resetFont","url":"classes/Parenthesis.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3513,"kind":262144,"name":"fontInfo","url":"classes/Parenthesis.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3514,"kind":2048,"name":"setFontSize","url":"classes/Parenthesis.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3515,"kind":2048,"name":"getFontSize","url":"classes/Parenthesis.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3516,"kind":262144,"name":"fontSize","url":"classes/Parenthesis.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3517,"kind":262144,"name":"fontSizeInPoints","url":"classes/Parenthesis.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3518,"kind":262144,"name":"fontSizeInPixels","url":"classes/Parenthesis.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3519,"kind":262144,"name":"fontStyle","url":"classes/Parenthesis.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3520,"kind":262144,"name":"fontWeight","url":"classes/Parenthesis.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3521,"kind":4194304,"name":"Match","url":"modules.html#Match","classes":"tsd-kind-type-alias"},{"id":3522,"kind":4194304,"name":"RuleFunction","url":"modules.html#RuleFunction","classes":"tsd-kind-type-alias"},{"id":3523,"kind":65536,"name":"__type","url":"modules.html#RuleFunction.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"RuleFunction"},{"id":3524,"kind":4194304,"name":"TriggerFunction","url":"modules.html#TriggerFunction","classes":"tsd-kind-type-alias"},{"id":3525,"kind":65536,"name":"__type","url":"modules.html#TriggerFunction.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"TriggerFunction"},{"id":3526,"kind":256,"name":"Rule","url":"interfaces/Rule.html","classes":"tsd-kind-interface"},{"id":3527,"kind":1024,"name":"token","url":"interfaces/Rule.html#token","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Rule"},{"id":3528,"kind":1024,"name":"noSpace","url":"interfaces/Rule.html#noSpace","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Rule"},{"id":3529,"kind":1024,"name":"expect","url":"interfaces/Rule.html#expect","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Rule"},{"id":3530,"kind":1024,"name":"zeroOrMore","url":"interfaces/Rule.html#zeroOrMore","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Rule"},{"id":3531,"kind":1024,"name":"oneOrMore","url":"interfaces/Rule.html#oneOrMore","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Rule"},{"id":3532,"kind":1024,"name":"maybe","url":"interfaces/Rule.html#maybe","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Rule"},{"id":3533,"kind":1024,"name":"or","url":"interfaces/Rule.html#or","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Rule"},{"id":3534,"kind":1024,"name":"run","url":"interfaces/Rule.html#run","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Rule"},{"id":3535,"kind":256,"name":"Result","url":"interfaces/Result.html","classes":"tsd-kind-interface"},{"id":3536,"kind":1024,"name":"success","url":"interfaces/Result.html#success","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Result"},{"id":3537,"kind":1024,"name":"pos","url":"interfaces/Result.html#pos","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Result"},{"id":3538,"kind":1024,"name":"incrementPos","url":"interfaces/Result.html#incrementPos","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Result"},{"id":3539,"kind":1024,"name":"matchedString","url":"interfaces/Result.html#matchedString","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Result"},{"id":3540,"kind":1024,"name":"matches","url":"interfaces/Result.html#matches","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Result"},{"id":3541,"kind":1024,"name":"numMatches","url":"interfaces/Result.html#numMatches","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Result"},{"id":3542,"kind":1024,"name":"results","url":"interfaces/Result.html#results","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Result"},{"id":3543,"kind":1024,"name":"errorPos","url":"interfaces/Result.html#errorPos","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Result"},{"id":3544,"kind":4194304,"name":"GroupedResults","url":"modules.html#GroupedResults","classes":"tsd-kind-type-alias"},{"id":3545,"kind":256,"name":"Grammar","url":"interfaces/Grammar.html","classes":"tsd-kind-interface"},{"id":3546,"kind":2048,"name":"begin","url":"interfaces/Grammar.html#begin","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Grammar"},{"id":3547,"kind":128,"name":"Parser","url":"classes/Parser.html","classes":"tsd-kind-class"},{"id":3548,"kind":1024,"name":"DEBUG","url":"classes/Parser.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Parser"},{"id":3549,"kind":512,"name":"constructor","url":"classes/Parser.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Parser"},{"id":3550,"kind":2048,"name":"parse","url":"classes/Parser.html#parse","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Parser"},{"id":3551,"kind":2048,"name":"matchFail","url":"classes/Parser.html#matchFail","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Parser"},{"id":3552,"kind":2048,"name":"matchSuccess","url":"classes/Parser.html#matchSuccess","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Parser"},{"id":3553,"kind":2048,"name":"matchToken","url":"classes/Parser.html#matchToken","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Parser"},{"id":3554,"kind":2048,"name":"expectOne","url":"classes/Parser.html#expectOne","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Parser"},{"id":3555,"kind":2048,"name":"expectOneOrMore","url":"classes/Parser.html#expectOneOrMore","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Parser"},{"id":3556,"kind":2048,"name":"expectZeroOrMore","url":"classes/Parser.html#expectZeroOrMore","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Parser"},{"id":3557,"kind":2048,"name":"expect","url":"classes/Parser.html#expect","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Parser"},{"id":3558,"kind":128,"name":"PedalMarking","url":"classes/PedalMarking.html","classes":"tsd-kind-class"},{"id":3559,"kind":1024,"name":"DEBUG","url":"classes/PedalMarking.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"PedalMarking"},{"id":3560,"kind":262144,"name":"CATEGORY","url":"classes/PedalMarking.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"PedalMarking"},{"id":3561,"kind":1024,"name":"TEXT_FONT","url":"classes/PedalMarking.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"PedalMarking"},{"id":3562,"kind":1024,"name":"GLYPHS","url":"classes/PedalMarking.html#GLYPHS","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"PedalMarking"},{"id":3563,"kind":1024,"name":"type","url":"classes/PedalMarking.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"PedalMarking"},{"id":3564,"kind":65536,"name":"__type","url":"classes/PedalMarking.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"PedalMarking"},{"id":3565,"kind":1024,"name":"TEXT","url":"classes/PedalMarking.html#__type-1.TEXT","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"PedalMarking.__type"},{"id":3566,"kind":1024,"name":"BRACKET","url":"classes/PedalMarking.html#__type-1.BRACKET","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"PedalMarking.__type"},{"id":3567,"kind":1024,"name":"MIXED","url":"classes/PedalMarking.html#__type-1.MIXED","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"PedalMarking.__type"},{"id":3568,"kind":1024,"name":"typeString","url":"classes/PedalMarking.html#typeString","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"PedalMarking"},{"id":3569,"kind":2048,"name":"createSustain","url":"classes/PedalMarking.html#createSustain","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"PedalMarking"},{"id":3570,"kind":2048,"name":"createSostenuto","url":"classes/PedalMarking.html#createSostenuto","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"PedalMarking"},{"id":3571,"kind":2048,"name":"createUnaCorda","url":"classes/PedalMarking.html#createUnaCorda","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"PedalMarking"},{"id":3572,"kind":512,"name":"constructor","url":"classes/PedalMarking.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"PedalMarking"},{"id":3573,"kind":1024,"name":"render_options","url":"classes/PedalMarking.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"PedalMarking"},{"id":3574,"kind":65536,"name":"__type","url":"classes/PedalMarking.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"PedalMarking"},{"id":3575,"kind":1024,"name":"color","url":"classes/PedalMarking.html#__type.color","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"PedalMarking.__type"},{"id":3576,"kind":1024,"name":"bracket_height","url":"classes/PedalMarking.html#__type.bracket_height","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"PedalMarking.__type"},{"id":3577,"kind":1024,"name":"text_margin_right","url":"classes/PedalMarking.html#__type.text_margin_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"PedalMarking.__type"},{"id":3578,"kind":1024,"name":"bracket_line_width","url":"classes/PedalMarking.html#__type.bracket_line_width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"PedalMarking.__type"},{"id":3579,"kind":2048,"name":"setType","url":"classes/PedalMarking.html#setType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"PedalMarking"},{"id":3580,"kind":2048,"name":"setCustomText","url":"classes/PedalMarking.html#setCustomText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"PedalMarking"},{"id":3581,"kind":2048,"name":"setLine","url":"classes/PedalMarking.html#setLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"PedalMarking"},{"id":3582,"kind":2048,"name":"drawBracketed","url":"classes/PedalMarking.html#drawBracketed","classes":"tsd-kind-method tsd-parent-kind-class","parent":"PedalMarking"},{"id":3583,"kind":2048,"name":"drawText","url":"classes/PedalMarking.html#drawText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"PedalMarking"},{"id":3584,"kind":2048,"name":"draw","url":"classes/PedalMarking.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"PedalMarking"},{"id":3585,"kind":2048,"name":"addChildElement","url":"classes/PedalMarking.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3586,"kind":2048,"name":"getCategory","url":"classes/PedalMarking.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3587,"kind":2048,"name":"setStyle","url":"classes/PedalMarking.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3588,"kind":2048,"name":"setGroupStyle","url":"classes/PedalMarking.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3589,"kind":2048,"name":"getStyle","url":"classes/PedalMarking.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3590,"kind":2048,"name":"applyStyle","url":"classes/PedalMarking.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3591,"kind":2048,"name":"restoreStyle","url":"classes/PedalMarking.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3592,"kind":2048,"name":"drawWithStyle","url":"classes/PedalMarking.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3593,"kind":2048,"name":"hasClass","url":"classes/PedalMarking.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3594,"kind":2048,"name":"addClass","url":"classes/PedalMarking.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3595,"kind":2048,"name":"removeClass","url":"classes/PedalMarking.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3596,"kind":2048,"name":"onRegister","url":"classes/PedalMarking.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3597,"kind":2048,"name":"isRendered","url":"classes/PedalMarking.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3598,"kind":2048,"name":"setRendered","url":"classes/PedalMarking.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3599,"kind":2048,"name":"getAttributes","url":"classes/PedalMarking.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3600,"kind":2048,"name":"getAttribute","url":"classes/PedalMarking.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3601,"kind":2048,"name":"setAttribute","url":"classes/PedalMarking.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3602,"kind":2048,"name":"getBoundingBox","url":"classes/PedalMarking.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3603,"kind":2048,"name":"getContext","url":"classes/PedalMarking.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3604,"kind":2048,"name":"setContext","url":"classes/PedalMarking.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3605,"kind":2048,"name":"checkContext","url":"classes/PedalMarking.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3606,"kind":262144,"name":"font","url":"classes/PedalMarking.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3607,"kind":2048,"name":"setFont","url":"classes/PedalMarking.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3608,"kind":2048,"name":"getFont","url":"classes/PedalMarking.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3609,"kind":2048,"name":"resetFont","url":"classes/PedalMarking.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3610,"kind":262144,"name":"fontInfo","url":"classes/PedalMarking.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3611,"kind":2048,"name":"setFontSize","url":"classes/PedalMarking.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3612,"kind":2048,"name":"getFontSize","url":"classes/PedalMarking.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3613,"kind":262144,"name":"fontSize","url":"classes/PedalMarking.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3614,"kind":262144,"name":"fontSizeInPoints","url":"classes/PedalMarking.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3615,"kind":262144,"name":"fontSizeInPixels","url":"classes/PedalMarking.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3616,"kind":262144,"name":"fontStyle","url":"classes/PedalMarking.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3617,"kind":262144,"name":"fontWeight","url":"classes/PedalMarking.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3618,"kind":256,"name":"RegistryUpdate","url":"interfaces/RegistryUpdate.html","classes":"tsd-kind-interface"},{"id":3619,"kind":1024,"name":"id","url":"interfaces/RegistryUpdate.html#id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"RegistryUpdate"},{"id":3620,"kind":1024,"name":"name","url":"interfaces/RegistryUpdate.html#name","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"RegistryUpdate"},{"id":3621,"kind":1024,"name":"value","url":"interfaces/RegistryUpdate.html#value","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"RegistryUpdate"},{"id":3622,"kind":1024,"name":"oldValue","url":"interfaces/RegistryUpdate.html#oldValue","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"RegistryUpdate"},{"id":3623,"kind":128,"name":"Registry","url":"classes/Registry.html","classes":"tsd-kind-class"},{"id":3624,"kind":2048,"name":"getDefaultRegistry","url":"classes/Registry.html#getDefaultRegistry","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Registry"},{"id":3625,"kind":2048,"name":"enableDefaultRegistry","url":"classes/Registry.html#enableDefaultRegistry","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Registry"},{"id":3626,"kind":2048,"name":"disableDefaultRegistry","url":"classes/Registry.html#disableDefaultRegistry","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Registry"},{"id":3627,"kind":512,"name":"constructor","url":"classes/Registry.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Registry"},{"id":3628,"kind":2048,"name":"clear","url":"classes/Registry.html#clear","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Registry"},{"id":3629,"kind":2048,"name":"setIndexValue","url":"classes/Registry.html#setIndexValue","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Registry"},{"id":3630,"kind":2048,"name":"updateIndex","url":"classes/Registry.html#updateIndex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Registry"},{"id":3631,"kind":2048,"name":"register","url":"classes/Registry.html#register","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Registry"},{"id":3632,"kind":2048,"name":"getElementById","url":"classes/Registry.html#getElementById","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Registry"},{"id":3633,"kind":2048,"name":"getElementsByAttribute","url":"classes/Registry.html#getElementsByAttribute","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Registry"},{"id":3634,"kind":2048,"name":"getElementsByType","url":"classes/Registry.html#getElementsByType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Registry"},{"id":3635,"kind":2048,"name":"getElementsByClass","url":"classes/Registry.html#getElementsByClass","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Registry"},{"id":3636,"kind":2048,"name":"onUpdate","url":"classes/Registry.html#onUpdate","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Registry"},{"id":3637,"kind":64,"name":"drawDot","url":"modules.html#drawDot","classes":"tsd-kind-function"},{"id":3638,"kind":256,"name":"TextMeasure","url":"interfaces/TextMeasure.html","classes":"tsd-kind-interface"},{"id":3639,"kind":1024,"name":"x","url":"interfaces/TextMeasure.html#x","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextMeasure"},{"id":3640,"kind":1024,"name":"y","url":"interfaces/TextMeasure.html#y","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextMeasure"},{"id":3641,"kind":1024,"name":"width","url":"interfaces/TextMeasure.html#width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextMeasure"},{"id":3642,"kind":1024,"name":"height","url":"interfaces/TextMeasure.html#height","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextMeasure"},{"id":3643,"kind":256,"name":"GroupAttributes","url":"interfaces/GroupAttributes.html","classes":"tsd-kind-interface"},{"id":3644,"kind":1024,"name":"pointerBBox","url":"interfaces/GroupAttributes.html#pointerBBox","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GroupAttributes"},{"id":3645,"kind":128,"name":"RenderContext","url":"classes/RenderContext.html","classes":"tsd-kind-class"},{"id":3646,"kind":262144,"name":"CATEGORY","url":"classes/RenderContext.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"RenderContext"},{"id":3647,"kind":512,"name":"constructor","url":"classes/RenderContext.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"RenderContext"},{"id":3648,"kind":2048,"name":"clear","url":"classes/RenderContext.html#clear","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3649,"kind":2048,"name":"setFillStyle","url":"classes/RenderContext.html#setFillStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3650,"kind":2048,"name":"setBackgroundFillStyle","url":"classes/RenderContext.html#setBackgroundFillStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3651,"kind":2048,"name":"setStrokeStyle","url":"classes/RenderContext.html#setStrokeStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3652,"kind":2048,"name":"setShadowColor","url":"classes/RenderContext.html#setShadowColor","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3653,"kind":2048,"name":"setShadowBlur","url":"classes/RenderContext.html#setShadowBlur","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3654,"kind":2048,"name":"setLineWidth","url":"classes/RenderContext.html#setLineWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3655,"kind":2048,"name":"setLineCap","url":"classes/RenderContext.html#setLineCap","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3656,"kind":2048,"name":"setLineDash","url":"classes/RenderContext.html#setLineDash","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3657,"kind":2048,"name":"scale","url":"classes/RenderContext.html#scale","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3658,"kind":2048,"name":"rect","url":"classes/RenderContext.html#rect","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3659,"kind":2048,"name":"resize","url":"classes/RenderContext.html#resize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3660,"kind":2048,"name":"fillRect","url":"classes/RenderContext.html#fillRect","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3661,"kind":2048,"name":"clearRect","url":"classes/RenderContext.html#clearRect","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3662,"kind":2048,"name":"beginPath","url":"classes/RenderContext.html#beginPath","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3663,"kind":2048,"name":"moveTo","url":"classes/RenderContext.html#moveTo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3664,"kind":2048,"name":"lineTo","url":"classes/RenderContext.html#lineTo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3665,"kind":2048,"name":"bezierCurveTo","url":"classes/RenderContext.html#bezierCurveTo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3666,"kind":2048,"name":"quadraticCurveTo","url":"classes/RenderContext.html#quadraticCurveTo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3667,"kind":2048,"name":"arc","url":"classes/RenderContext.html#arc","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3668,"kind":2048,"name":"fill","url":"classes/RenderContext.html#fill","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3669,"kind":2048,"name":"stroke","url":"classes/RenderContext.html#stroke","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3670,"kind":2048,"name":"closePath","url":"classes/RenderContext.html#closePath","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3671,"kind":2048,"name":"fillText","url":"classes/RenderContext.html#fillText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3672,"kind":2048,"name":"save","url":"classes/RenderContext.html#save","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3673,"kind":2048,"name":"restore","url":"classes/RenderContext.html#restore","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3674,"kind":2048,"name":"openGroup","url":"classes/RenderContext.html#openGroup","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3675,"kind":2048,"name":"closeGroup","url":"classes/RenderContext.html#closeGroup","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3676,"kind":2048,"name":"add","url":"classes/RenderContext.html#add","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3677,"kind":2048,"name":"measureText","url":"classes/RenderContext.html#measureText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3678,"kind":262144,"name":"fillStyle","url":"classes/RenderContext.html#fillStyle","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"RenderContext"},{"id":3679,"kind":262144,"name":"strokeStyle","url":"classes/RenderContext.html#strokeStyle","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"RenderContext"},{"id":3680,"kind":2048,"name":"setFont","url":"classes/RenderContext.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3681,"kind":2048,"name":"getFont","url":"classes/RenderContext.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3682,"kind":262144,"name":"font","url":"classes/RenderContext.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"RenderContext"},{"id":3683,"kind":2048,"name":"setRawFont","url":"classes/RenderContext.html#setRawFont","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3684,"kind":4194304,"name":"ContextBuilder","url":"modules.html#ContextBuilder","classes":"tsd-kind-type-alias"},{"id":3685,"kind":8,"name":"RendererBackends","url":"enums/RendererBackends.html","classes":"tsd-kind-enum"},{"id":3686,"kind":16,"name":"CANVAS","url":"enums/RendererBackends.html#CANVAS","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"RendererBackends"},{"id":3687,"kind":16,"name":"SVG","url":"enums/RendererBackends.html#SVG","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"RendererBackends"},{"id":3688,"kind":8,"name":"RendererLineEndType","url":"enums/RendererLineEndType.html","classes":"tsd-kind-enum"},{"id":3689,"kind":16,"name":"NONE","url":"enums/RendererLineEndType.html#NONE","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"RendererLineEndType"},{"id":3690,"kind":16,"name":"UP","url":"enums/RendererLineEndType.html#UP","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"RendererLineEndType"},{"id":3691,"kind":16,"name":"DOWN","url":"enums/RendererLineEndType.html#DOWN","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"RendererLineEndType"},{"id":3692,"kind":128,"name":"Renderer","url":"classes/Renderer.html","classes":"tsd-kind-class"},{"id":3693,"kind":1024,"name":"Backends","url":"classes/Renderer.html#Backends","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Renderer"},{"id":3694,"kind":1024,"name":"LineEndType","url":"classes/Renderer.html#LineEndType","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Renderer"},{"id":3695,"kind":1024,"name":"lastContext","url":"classes/Renderer.html#lastContext","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Renderer"},{"id":3696,"kind":2048,"name":"buildContext","url":"classes/Renderer.html#buildContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Renderer"},{"id":3697,"kind":2048,"name":"getCanvasContext","url":"classes/Renderer.html#getCanvasContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Renderer"},{"id":3698,"kind":2048,"name":"getSVGContext","url":"classes/Renderer.html#getSVGContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Renderer"},{"id":3699,"kind":2048,"name":"drawDashedLine","url":"classes/Renderer.html#drawDashedLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Renderer"},{"id":3700,"kind":512,"name":"constructor","url":"classes/Renderer.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Renderer"},{"id":3701,"kind":2048,"name":"resize","url":"classes/Renderer.html#resize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Renderer"},{"id":3702,"kind":2048,"name":"getContext","url":"classes/Renderer.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Renderer"},{"id":3703,"kind":128,"name":"RepeatNote","url":"classes/RepeatNote.html","classes":"tsd-kind-class"},{"id":3704,"kind":262144,"name":"CATEGORY","url":"classes/RepeatNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"RepeatNote"},{"id":3705,"kind":2048,"name":"plotMetrics","url":"classes/RepeatNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"RepeatNote"},{"id":3706,"kind":1024,"name":"TEXT_FONT","url":"classes/RepeatNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"RepeatNote"},{"id":3707,"kind":512,"name":"constructor","url":"classes/RepeatNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"RepeatNote"},{"id":3708,"kind":2048,"name":"setGlyph","url":"classes/RepeatNote.html#setGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3709,"kind":2048,"name":"getBoundingBox","url":"classes/RepeatNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3710,"kind":2048,"name":"preFormat","url":"classes/RepeatNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3711,"kind":2048,"name":"drawModifiers","url":"classes/RepeatNote.html#drawModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3712,"kind":2048,"name":"draw","url":"classes/RepeatNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3713,"kind":1024,"name":"glyph","url":"classes/RepeatNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3714,"kind":1024,"name":"keys","url":"classes/RepeatNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3715,"kind":1024,"name":"keyProps","url":"classes/RepeatNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3716,"kind":1024,"name":"render_options","url":"classes/RepeatNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3717,"kind":65536,"name":"__type","url":"classes/RepeatNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"RepeatNote"},{"id":3718,"kind":1024,"name":"draw_stem_through_stave","url":"classes/RepeatNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3719,"kind":1024,"name":"draw","url":"classes/RepeatNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3720,"kind":1024,"name":"draw_dots","url":"classes/RepeatNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3721,"kind":1024,"name":"draw_stem","url":"classes/RepeatNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3722,"kind":1024,"name":"y_shift","url":"classes/RepeatNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3723,"kind":1024,"name":"extend_left","url":"classes/RepeatNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3724,"kind":1024,"name":"extend_right","url":"classes/RepeatNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3725,"kind":1024,"name":"glyph_font_scale","url":"classes/RepeatNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3726,"kind":1024,"name":"annotation_spacing","url":"classes/RepeatNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3727,"kind":1024,"name":"glyph_font_size","url":"classes/RepeatNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3728,"kind":1024,"name":"scale","url":"classes/RepeatNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3729,"kind":1024,"name":"font","url":"classes/RepeatNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3730,"kind":1024,"name":"stroke_px","url":"classes/RepeatNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3731,"kind":2048,"name":"getPlayNote","url":"classes/RepeatNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3732,"kind":2048,"name":"setPlayNote","url":"classes/RepeatNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3733,"kind":2048,"name":"isRest","url":"classes/RepeatNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3734,"kind":2048,"name":"addStroke","url":"classes/RepeatNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3735,"kind":2048,"name":"getStave","url":"classes/RepeatNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3736,"kind":2048,"name":"checkStave","url":"classes/RepeatNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3737,"kind":2048,"name":"setStave","url":"classes/RepeatNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3738,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/RepeatNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3739,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/RepeatNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3740,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/RepeatNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3741,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/RepeatNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3742,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/RepeatNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3743,"kind":2048,"name":"getLineNumber","url":"classes/RepeatNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3744,"kind":2048,"name":"getLineForRest","url":"classes/RepeatNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3745,"kind":2048,"name":"getGlyph","url":"classes/RepeatNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3746,"kind":2048,"name":"getGlyphWidth","url":"classes/RepeatNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3747,"kind":2048,"name":"setYs","url":"classes/RepeatNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3748,"kind":2048,"name":"getYs","url":"classes/RepeatNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3749,"kind":2048,"name":"getYForTopText","url":"classes/RepeatNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3750,"kind":2048,"name":"getVoice","url":"classes/RepeatNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3751,"kind":2048,"name":"setVoice","url":"classes/RepeatNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3752,"kind":2048,"name":"getTickContext","url":"classes/RepeatNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3753,"kind":2048,"name":"setTickContext","url":"classes/RepeatNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3754,"kind":2048,"name":"getDuration","url":"classes/RepeatNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3755,"kind":2048,"name":"isDotted","url":"classes/RepeatNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3756,"kind":2048,"name":"hasStem","url":"classes/RepeatNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3757,"kind":2048,"name":"getNoteType","url":"classes/RepeatNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3758,"kind":2048,"name":"getBeam","url":"classes/RepeatNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3759,"kind":2048,"name":"checkBeam","url":"classes/RepeatNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3760,"kind":2048,"name":"hasBeam","url":"classes/RepeatNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3761,"kind":2048,"name":"setBeam","url":"classes/RepeatNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3762,"kind":2048,"name":"addModifier","url":"classes/RepeatNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3763,"kind":2048,"name":"getModifiersByType","url":"classes/RepeatNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3764,"kind":2048,"name":"getModifierStartXY","url":"classes/RepeatNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3765,"kind":2048,"name":"getRightParenthesisPx","url":"classes/RepeatNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3766,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/RepeatNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3767,"kind":2048,"name":"getFirstDotPx","url":"classes/RepeatNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3768,"kind":2048,"name":"getMetrics","url":"classes/RepeatNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3769,"kind":2048,"name":"getAbsoluteX","url":"classes/RepeatNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3770,"kind":2048,"name":"getStemDirection","url":"classes/RepeatNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3771,"kind":2048,"name":"getStemExtents","url":"classes/RepeatNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3772,"kind":2048,"name":"getTieRightX","url":"classes/RepeatNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3773,"kind":2048,"name":"getTieLeftX","url":"classes/RepeatNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3774,"kind":2048,"name":"getKeys","url":"classes/RepeatNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3775,"kind":2048,"name":"getKeyProps","url":"classes/RepeatNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3776,"kind":2048,"name":"reset","url":"classes/RepeatNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3777,"kind":2048,"name":"getTicks","url":"classes/RepeatNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3778,"kind":2048,"name":"setIgnoreTicks","url":"classes/RepeatNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3779,"kind":2048,"name":"setWidth","url":"classes/RepeatNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3780,"kind":2048,"name":"getWidth","url":"classes/RepeatNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3781,"kind":2048,"name":"setXShift","url":"classes/RepeatNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3782,"kind":2048,"name":"getXShift","url":"classes/RepeatNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3783,"kind":2048,"name":"getX","url":"classes/RepeatNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3784,"kind":2048,"name":"getFormatterMetrics","url":"classes/RepeatNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3785,"kind":2048,"name":"getCenterXShift","url":"classes/RepeatNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3786,"kind":2048,"name":"setCenterXShift","url":"classes/RepeatNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3787,"kind":2048,"name":"isCenterAligned","url":"classes/RepeatNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3788,"kind":2048,"name":"setCenterAlignment","url":"classes/RepeatNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3789,"kind":2048,"name":"getTuplet","url":"classes/RepeatNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3790,"kind":2048,"name":"getTupletStack","url":"classes/RepeatNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3791,"kind":2048,"name":"resetTuplet","url":"classes/RepeatNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3792,"kind":2048,"name":"setTuplet","url":"classes/RepeatNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3793,"kind":2048,"name":"addToModifierContext","url":"classes/RepeatNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3794,"kind":2048,"name":"getModifiers","url":"classes/RepeatNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3795,"kind":2048,"name":"checkTickContext","url":"classes/RepeatNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3796,"kind":262144,"name":"preFormatted","url":"classes/RepeatNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3797,"kind":2048,"name":"postFormat","url":"classes/RepeatNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3798,"kind":262144,"name":"postFormatted","url":"classes/RepeatNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3799,"kind":2048,"name":"getIntrinsicTicks","url":"classes/RepeatNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3800,"kind":2048,"name":"setIntrinsicTicks","url":"classes/RepeatNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3801,"kind":2048,"name":"getTickMultiplier","url":"classes/RepeatNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3802,"kind":2048,"name":"applyTickMultiplier","url":"classes/RepeatNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3803,"kind":2048,"name":"setDuration","url":"classes/RepeatNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3804,"kind":2048,"name":"setModifierContext","url":"classes/RepeatNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3805,"kind":2048,"name":"getModifierContext","url":"classes/RepeatNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3806,"kind":2048,"name":"checkModifierContext","url":"classes/RepeatNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3807,"kind":2048,"name":"addChildElement","url":"classes/RepeatNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3808,"kind":2048,"name":"getCategory","url":"classes/RepeatNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3809,"kind":2048,"name":"setStyle","url":"classes/RepeatNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3810,"kind":2048,"name":"setGroupStyle","url":"classes/RepeatNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3811,"kind":2048,"name":"getStyle","url":"classes/RepeatNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3812,"kind":2048,"name":"applyStyle","url":"classes/RepeatNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3813,"kind":2048,"name":"restoreStyle","url":"classes/RepeatNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3814,"kind":2048,"name":"drawWithStyle","url":"classes/RepeatNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3815,"kind":2048,"name":"hasClass","url":"classes/RepeatNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3816,"kind":2048,"name":"addClass","url":"classes/RepeatNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3817,"kind":2048,"name":"removeClass","url":"classes/RepeatNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3818,"kind":2048,"name":"onRegister","url":"classes/RepeatNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3819,"kind":2048,"name":"isRendered","url":"classes/RepeatNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3820,"kind":2048,"name":"setRendered","url":"classes/RepeatNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3821,"kind":2048,"name":"getAttributes","url":"classes/RepeatNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3822,"kind":2048,"name":"getAttribute","url":"classes/RepeatNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3823,"kind":2048,"name":"setAttribute","url":"classes/RepeatNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3824,"kind":2048,"name":"getContext","url":"classes/RepeatNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3825,"kind":2048,"name":"setContext","url":"classes/RepeatNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3826,"kind":2048,"name":"checkContext","url":"classes/RepeatNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3827,"kind":262144,"name":"font","url":"classes/RepeatNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3828,"kind":2048,"name":"setFont","url":"classes/RepeatNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3829,"kind":2048,"name":"getFont","url":"classes/RepeatNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3830,"kind":2048,"name":"resetFont","url":"classes/RepeatNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3831,"kind":262144,"name":"fontInfo","url":"classes/RepeatNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3832,"kind":2048,"name":"setFontSize","url":"classes/RepeatNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3833,"kind":2048,"name":"getFontSize","url":"classes/RepeatNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3834,"kind":262144,"name":"fontSize","url":"classes/RepeatNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3835,"kind":262144,"name":"fontSizeInPoints","url":"classes/RepeatNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3836,"kind":262144,"name":"fontSizeInPixels","url":"classes/RepeatNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3837,"kind":262144,"name":"fontStyle","url":"classes/RepeatNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3838,"kind":262144,"name":"fontWeight","url":"classes/RepeatNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3839,"kind":256,"name":"StaveLineConfig","url":"interfaces/StaveLineConfig.html","classes":"tsd-kind-interface"},{"id":3840,"kind":1024,"name":"visible","url":"interfaces/StaveLineConfig.html#visible","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveLineConfig"},{"id":3841,"kind":256,"name":"StaveOptions","url":"interfaces/StaveOptions.html","classes":"tsd-kind-interface"},{"id":3842,"kind":1024,"name":"bottom_text_position","url":"interfaces/StaveOptions.html#bottom_text_position","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveOptions"},{"id":3843,"kind":1024,"name":"line_config","url":"interfaces/StaveOptions.html#line_config","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveOptions"},{"id":3844,"kind":1024,"name":"space_below_staff_ln","url":"interfaces/StaveOptions.html#space_below_staff_ln","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveOptions"},{"id":3845,"kind":1024,"name":"space_above_staff_ln","url":"interfaces/StaveOptions.html#space_above_staff_ln","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveOptions"},{"id":3846,"kind":1024,"name":"vertical_bar_width","url":"interfaces/StaveOptions.html#vertical_bar_width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveOptions"},{"id":3847,"kind":1024,"name":"fill_style","url":"interfaces/StaveOptions.html#fill_style","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveOptions"},{"id":3848,"kind":1024,"name":"left_bar","url":"interfaces/StaveOptions.html#left_bar","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveOptions"},{"id":3849,"kind":1024,"name":"right_bar","url":"interfaces/StaveOptions.html#right_bar","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveOptions"},{"id":3850,"kind":1024,"name":"spacing_between_lines_px","url":"interfaces/StaveOptions.html#spacing_between_lines_px","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveOptions"},{"id":3851,"kind":1024,"name":"top_text_position","url":"interfaces/StaveOptions.html#top_text_position","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveOptions"},{"id":3852,"kind":1024,"name":"num_lines","url":"interfaces/StaveOptions.html#num_lines","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveOptions"},{"id":3853,"kind":128,"name":"Stave","url":"classes/Stave.html","classes":"tsd-kind-class"},{"id":3854,"kind":262144,"name":"CATEGORY","url":"classes/Stave.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Stave"},{"id":3855,"kind":1024,"name":"TEXT_FONT","url":"classes/Stave.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Stave"},{"id":3856,"kind":262144,"name":"defaultPadding","url":"classes/Stave.html#defaultPadding","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Stave"},{"id":3857,"kind":262144,"name":"rightPadding","url":"classes/Stave.html#rightPadding","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Stave"},{"id":3858,"kind":2048,"name":"formatBegModifiers","url":"classes/Stave.html#formatBegModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Stave"},{"id":3859,"kind":512,"name":"constructor","url":"classes/Stave.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Stave"},{"id":3860,"kind":1024,"name":"options","url":"classes/Stave.html#options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Stave"},{"id":3861,"kind":2048,"name":"setDefaultLedgerLineStyle","url":"classes/Stave.html#setDefaultLedgerLineStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3862,"kind":2048,"name":"getDefaultLedgerLineStyle","url":"classes/Stave.html#getDefaultLedgerLineStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3863,"kind":2048,"name":"space","url":"classes/Stave.html#space","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3864,"kind":2048,"name":"resetLines","url":"classes/Stave.html#resetLines","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3865,"kind":2048,"name":"setNoteStartX","url":"classes/Stave.html#setNoteStartX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3866,"kind":2048,"name":"getNoteStartX","url":"classes/Stave.html#getNoteStartX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3867,"kind":2048,"name":"getNoteEndX","url":"classes/Stave.html#getNoteEndX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3868,"kind":2048,"name":"getTieStartX","url":"classes/Stave.html#getTieStartX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3869,"kind":2048,"name":"getTieEndX","url":"classes/Stave.html#getTieEndX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3870,"kind":2048,"name":"getX","url":"classes/Stave.html#getX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3871,"kind":2048,"name":"getNumLines","url":"classes/Stave.html#getNumLines","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3872,"kind":2048,"name":"setNumLines","url":"classes/Stave.html#setNumLines","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3873,"kind":2048,"name":"setY","url":"classes/Stave.html#setY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3874,"kind":2048,"name":"getY","url":"classes/Stave.html#getY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3875,"kind":2048,"name":"getTopLineTopY","url":"classes/Stave.html#getTopLineTopY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3876,"kind":2048,"name":"getBottomLineBottomY","url":"classes/Stave.html#getBottomLineBottomY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3877,"kind":2048,"name":"setX","url":"classes/Stave.html#setX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3878,"kind":2048,"name":"setWidth","url":"classes/Stave.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3879,"kind":2048,"name":"getWidth","url":"classes/Stave.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3880,"kind":2048,"name":"getStyle","url":"classes/Stave.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Stave"},{"id":3881,"kind":2048,"name":"setMeasure","url":"classes/Stave.html#setMeasure","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3882,"kind":2048,"name":"getModifierXShift","url":"classes/Stave.html#getModifierXShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3883,"kind":2048,"name":"setRepetitionType","url":"classes/Stave.html#setRepetitionType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3884,"kind":2048,"name":"setVoltaType","url":"classes/Stave.html#setVoltaType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3885,"kind":2048,"name":"setSection","url":"classes/Stave.html#setSection","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3886,"kind":2048,"name":"setTempo","url":"classes/Stave.html#setTempo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3887,"kind":2048,"name":"setText","url":"classes/Stave.html#setText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3888,"kind":2048,"name":"getHeight","url":"classes/Stave.html#getHeight","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3889,"kind":2048,"name":"getSpacingBetweenLines","url":"classes/Stave.html#getSpacingBetweenLines","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3890,"kind":2048,"name":"getBoundingBox","url":"classes/Stave.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Stave"},{"id":3891,"kind":2048,"name":"getBottomY","url":"classes/Stave.html#getBottomY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3892,"kind":2048,"name":"getBottomLineY","url":"classes/Stave.html#getBottomLineY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3893,"kind":2048,"name":"getYForLine","url":"classes/Stave.html#getYForLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3894,"kind":2048,"name":"getLineForY","url":"classes/Stave.html#getLineForY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3895,"kind":2048,"name":"getYForTopText","url":"classes/Stave.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3896,"kind":2048,"name":"getYForBottomText","url":"classes/Stave.html#getYForBottomText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3897,"kind":2048,"name":"getYForNote","url":"classes/Stave.html#getYForNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3898,"kind":2048,"name":"getYForGlyphs","url":"classes/Stave.html#getYForGlyphs","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3899,"kind":2048,"name":"addModifier","url":"classes/Stave.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3900,"kind":2048,"name":"addEndModifier","url":"classes/Stave.html#addEndModifier","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3901,"kind":2048,"name":"setBegBarType","url":"classes/Stave.html#setBegBarType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3902,"kind":2048,"name":"setEndBarType","url":"classes/Stave.html#setEndBarType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3903,"kind":2048,"name":"setClef","url":"classes/Stave.html#setClef","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3904,"kind":2048,"name":"getClef","url":"classes/Stave.html#getClef","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3905,"kind":2048,"name":"setEndClef","url":"classes/Stave.html#setEndClef","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3906,"kind":2048,"name":"getEndClef","url":"classes/Stave.html#getEndClef","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3907,"kind":2048,"name":"setKeySignature","url":"classes/Stave.html#setKeySignature","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3908,"kind":2048,"name":"setEndKeySignature","url":"classes/Stave.html#setEndKeySignature","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3909,"kind":2048,"name":"setTimeSignature","url":"classes/Stave.html#setTimeSignature","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3910,"kind":2048,"name":"setEndTimeSignature","url":"classes/Stave.html#setEndTimeSignature","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3911,"kind":2048,"name":"addKeySignature","url":"classes/Stave.html#addKeySignature","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3912,"kind":2048,"name":"addClef","url":"classes/Stave.html#addClef","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3913,"kind":2048,"name":"addEndClef","url":"classes/Stave.html#addEndClef","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3914,"kind":2048,"name":"addTimeSignature","url":"classes/Stave.html#addTimeSignature","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3915,"kind":2048,"name":"addEndTimeSignature","url":"classes/Stave.html#addEndTimeSignature","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3916,"kind":2048,"name":"addTrebleGlyph","url":"classes/Stave.html#addTrebleGlyph","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3917,"kind":2048,"name":"getModifiers","url":"classes/Stave.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3918,"kind":2048,"name":"sortByCategory","url":"classes/Stave.html#sortByCategory","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3919,"kind":2048,"name":"format","url":"classes/Stave.html#format","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3920,"kind":2048,"name":"draw","url":"classes/Stave.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Stave"},{"id":3921,"kind":2048,"name":"getVerticalBarWidth","url":"classes/Stave.html#getVerticalBarWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3922,"kind":2048,"name":"getConfigForLines","url":"classes/Stave.html#getConfigForLines","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3923,"kind":2048,"name":"setConfigForLine","url":"classes/Stave.html#setConfigForLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3924,"kind":2048,"name":"setConfigForLines","url":"classes/Stave.html#setConfigForLines","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3925,"kind":2048,"name":"addChildElement","url":"classes/Stave.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3926,"kind":2048,"name":"getCategory","url":"classes/Stave.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3927,"kind":2048,"name":"setStyle","url":"classes/Stave.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3928,"kind":2048,"name":"setGroupStyle","url":"classes/Stave.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3929,"kind":2048,"name":"applyStyle","url":"classes/Stave.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3930,"kind":2048,"name":"restoreStyle","url":"classes/Stave.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3931,"kind":2048,"name":"drawWithStyle","url":"classes/Stave.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3932,"kind":2048,"name":"hasClass","url":"classes/Stave.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3933,"kind":2048,"name":"addClass","url":"classes/Stave.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3934,"kind":2048,"name":"removeClass","url":"classes/Stave.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3935,"kind":2048,"name":"onRegister","url":"classes/Stave.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3936,"kind":2048,"name":"isRendered","url":"classes/Stave.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3937,"kind":2048,"name":"setRendered","url":"classes/Stave.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3938,"kind":2048,"name":"getAttributes","url":"classes/Stave.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3939,"kind":2048,"name":"getAttribute","url":"classes/Stave.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3940,"kind":2048,"name":"setAttribute","url":"classes/Stave.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3941,"kind":2048,"name":"getContext","url":"classes/Stave.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3942,"kind":2048,"name":"setContext","url":"classes/Stave.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3943,"kind":2048,"name":"checkContext","url":"classes/Stave.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3944,"kind":262144,"name":"font","url":"classes/Stave.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3945,"kind":2048,"name":"setFont","url":"classes/Stave.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3946,"kind":2048,"name":"getFont","url":"classes/Stave.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3947,"kind":2048,"name":"resetFont","url":"classes/Stave.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3948,"kind":262144,"name":"fontInfo","url":"classes/Stave.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3949,"kind":2048,"name":"setFontSize","url":"classes/Stave.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3950,"kind":2048,"name":"getFontSize","url":"classes/Stave.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3951,"kind":262144,"name":"fontSize","url":"classes/Stave.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3952,"kind":262144,"name":"fontSizeInPoints","url":"classes/Stave.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3953,"kind":262144,"name":"fontSizeInPixels","url":"classes/Stave.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3954,"kind":262144,"name":"fontStyle","url":"classes/Stave.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3955,"kind":262144,"name":"fontWeight","url":"classes/Stave.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3956,"kind":8,"name":"BarlineType","url":"enums/BarlineType.html","classes":"tsd-kind-enum"},{"id":3957,"kind":16,"name":"SINGLE","url":"enums/BarlineType.html#SINGLE","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"BarlineType"},{"id":3958,"kind":16,"name":"DOUBLE","url":"enums/BarlineType.html#DOUBLE","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"BarlineType"},{"id":3959,"kind":16,"name":"END","url":"enums/BarlineType.html#END","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"BarlineType"},{"id":3960,"kind":16,"name":"REPEAT_BEGIN","url":"enums/BarlineType.html#REPEAT_BEGIN","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"BarlineType"},{"id":3961,"kind":16,"name":"REPEAT_END","url":"enums/BarlineType.html#REPEAT_END","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"BarlineType"},{"id":3962,"kind":16,"name":"REPEAT_BOTH","url":"enums/BarlineType.html#REPEAT_BOTH","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"BarlineType"},{"id":3963,"kind":16,"name":"NONE","url":"enums/BarlineType.html#NONE","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"BarlineType"},{"id":3964,"kind":128,"name":"Barline","url":"classes/Barline.html","classes":"tsd-kind-class"},{"id":3965,"kind":262144,"name":"CATEGORY","url":"classes/Barline.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Barline"},{"id":3966,"kind":262144,"name":"type","url":"classes/Barline.html#type","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Barline"},{"id":3967,"kind":262144,"name":"typeString","url":"classes/Barline.html#typeString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Barline"},{"id":3968,"kind":262144,"name":"Position","url":"classes/Barline.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Barline"},{"id":3969,"kind":1024,"name":"TEXT_FONT","url":"classes/Barline.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Barline"},{"id":3970,"kind":512,"name":"constructor","url":"classes/Barline.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Barline"},{"id":3971,"kind":2048,"name":"getType","url":"classes/Barline.html#getType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Barline"},{"id":3972,"kind":2048,"name":"setType","url":"classes/Barline.html#setType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Barline"},{"id":3973,"kind":2048,"name":"draw","url":"classes/Barline.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Barline"},{"id":3974,"kind":2048,"name":"drawVerticalBar","url":"classes/Barline.html#drawVerticalBar","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Barline"},{"id":3975,"kind":2048,"name":"drawVerticalEndBar","url":"classes/Barline.html#drawVerticalEndBar","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Barline"},{"id":3976,"kind":2048,"name":"drawRepeatBar","url":"classes/Barline.html#drawRepeatBar","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Barline"},{"id":3977,"kind":2048,"name":"getPosition","url":"classes/Barline.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":3978,"kind":2048,"name":"setPosition","url":"classes/Barline.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":3979,"kind":2048,"name":"getStave","url":"classes/Barline.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":3980,"kind":2048,"name":"checkStave","url":"classes/Barline.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":3981,"kind":2048,"name":"setStave","url":"classes/Barline.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":3982,"kind":2048,"name":"getWidth","url":"classes/Barline.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":3983,"kind":2048,"name":"setWidth","url":"classes/Barline.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":3984,"kind":2048,"name":"getX","url":"classes/Barline.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":3985,"kind":2048,"name":"setX","url":"classes/Barline.html#setX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":3986,"kind":2048,"name":"placeGlyphOnLine","url":"classes/Barline.html#placeGlyphOnLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":3987,"kind":2048,"name":"getPadding","url":"classes/Barline.html#getPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":3988,"kind":2048,"name":"setPadding","url":"classes/Barline.html#setPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":3989,"kind":2048,"name":"setLayoutMetrics","url":"classes/Barline.html#setLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":3990,"kind":2048,"name":"getLayoutMetrics","url":"classes/Barline.html#getLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":3991,"kind":2048,"name":"addChildElement","url":"classes/Barline.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":3992,"kind":2048,"name":"getCategory","url":"classes/Barline.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":3993,"kind":2048,"name":"setStyle","url":"classes/Barline.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":3994,"kind":2048,"name":"setGroupStyle","url":"classes/Barline.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":3995,"kind":2048,"name":"getStyle","url":"classes/Barline.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":3996,"kind":2048,"name":"applyStyle","url":"classes/Barline.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":3997,"kind":2048,"name":"restoreStyle","url":"classes/Barline.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":3998,"kind":2048,"name":"drawWithStyle","url":"classes/Barline.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":3999,"kind":2048,"name":"hasClass","url":"classes/Barline.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4000,"kind":2048,"name":"addClass","url":"classes/Barline.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4001,"kind":2048,"name":"removeClass","url":"classes/Barline.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4002,"kind":2048,"name":"onRegister","url":"classes/Barline.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4003,"kind":2048,"name":"isRendered","url":"classes/Barline.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4004,"kind":2048,"name":"setRendered","url":"classes/Barline.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4005,"kind":2048,"name":"getAttributes","url":"classes/Barline.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4006,"kind":2048,"name":"getAttribute","url":"classes/Barline.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4007,"kind":2048,"name":"setAttribute","url":"classes/Barline.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4008,"kind":2048,"name":"getBoundingBox","url":"classes/Barline.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4009,"kind":2048,"name":"getContext","url":"classes/Barline.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4010,"kind":2048,"name":"setContext","url":"classes/Barline.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4011,"kind":2048,"name":"checkContext","url":"classes/Barline.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4012,"kind":262144,"name":"font","url":"classes/Barline.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4013,"kind":2048,"name":"setFont","url":"classes/Barline.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4014,"kind":2048,"name":"getFont","url":"classes/Barline.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4015,"kind":2048,"name":"resetFont","url":"classes/Barline.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4016,"kind":262144,"name":"fontInfo","url":"classes/Barline.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4017,"kind":2048,"name":"setFontSize","url":"classes/Barline.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4018,"kind":2048,"name":"getFontSize","url":"classes/Barline.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4019,"kind":262144,"name":"fontSize","url":"classes/Barline.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4020,"kind":262144,"name":"fontSizeInPoints","url":"classes/Barline.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4021,"kind":262144,"name":"fontSizeInPixels","url":"classes/Barline.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4022,"kind":262144,"name":"fontStyle","url":"classes/Barline.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4023,"kind":262144,"name":"fontWeight","url":"classes/Barline.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4024,"kind":4194304,"name":"StaveConnectorType","url":"modules.html#StaveConnectorType","classes":"tsd-kind-type-alias"},{"id":4025,"kind":128,"name":"StaveConnector","url":"classes/StaveConnector.html","classes":"tsd-kind-class"},{"id":4026,"kind":262144,"name":"CATEGORY","url":"classes/StaveConnector.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveConnector"},{"id":4027,"kind":1024,"name":"TEXT_FONT","url":"classes/StaveConnector.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveConnector"},{"id":4028,"kind":1024,"name":"type","url":"classes/StaveConnector.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"StaveConnector"},{"id":4029,"kind":1024,"name":"typeString","url":"classes/StaveConnector.html#typeString","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"StaveConnector"},{"id":4030,"kind":512,"name":"constructor","url":"classes/StaveConnector.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"StaveConnector"},{"id":4031,"kind":1024,"name":"top_stave","url":"classes/StaveConnector.html#top_stave","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StaveConnector"},{"id":4032,"kind":1024,"name":"bottom_stave","url":"classes/StaveConnector.html#bottom_stave","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StaveConnector"},{"id":4033,"kind":1024,"name":"thickness","url":"classes/StaveConnector.html#thickness","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StaveConnector"},{"id":4034,"kind":2048,"name":"setType","url":"classes/StaveConnector.html#setType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveConnector"},{"id":4035,"kind":2048,"name":"getType","url":"classes/StaveConnector.html#getType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveConnector"},{"id":4036,"kind":2048,"name":"setText","url":"classes/StaveConnector.html#setText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveConnector"},{"id":4037,"kind":2048,"name":"setXShift","url":"classes/StaveConnector.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveConnector"},{"id":4038,"kind":2048,"name":"getXShift","url":"classes/StaveConnector.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveConnector"},{"id":4039,"kind":2048,"name":"draw","url":"classes/StaveConnector.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveConnector"},{"id":4040,"kind":2048,"name":"addChildElement","url":"classes/StaveConnector.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4041,"kind":2048,"name":"getCategory","url":"classes/StaveConnector.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4042,"kind":2048,"name":"setStyle","url":"classes/StaveConnector.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4043,"kind":2048,"name":"setGroupStyle","url":"classes/StaveConnector.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4044,"kind":2048,"name":"getStyle","url":"classes/StaveConnector.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4045,"kind":2048,"name":"applyStyle","url":"classes/StaveConnector.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4046,"kind":2048,"name":"restoreStyle","url":"classes/StaveConnector.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4047,"kind":2048,"name":"drawWithStyle","url":"classes/StaveConnector.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4048,"kind":2048,"name":"hasClass","url":"classes/StaveConnector.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4049,"kind":2048,"name":"addClass","url":"classes/StaveConnector.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4050,"kind":2048,"name":"removeClass","url":"classes/StaveConnector.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4051,"kind":2048,"name":"onRegister","url":"classes/StaveConnector.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4052,"kind":2048,"name":"isRendered","url":"classes/StaveConnector.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4053,"kind":2048,"name":"setRendered","url":"classes/StaveConnector.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4054,"kind":2048,"name":"getAttributes","url":"classes/StaveConnector.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4055,"kind":2048,"name":"getAttribute","url":"classes/StaveConnector.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4056,"kind":2048,"name":"setAttribute","url":"classes/StaveConnector.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4057,"kind":2048,"name":"getBoundingBox","url":"classes/StaveConnector.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4058,"kind":2048,"name":"getContext","url":"classes/StaveConnector.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4059,"kind":2048,"name":"setContext","url":"classes/StaveConnector.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4060,"kind":2048,"name":"checkContext","url":"classes/StaveConnector.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4061,"kind":262144,"name":"font","url":"classes/StaveConnector.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4062,"kind":2048,"name":"setFont","url":"classes/StaveConnector.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4063,"kind":2048,"name":"getFont","url":"classes/StaveConnector.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4064,"kind":2048,"name":"resetFont","url":"classes/StaveConnector.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4065,"kind":262144,"name":"fontInfo","url":"classes/StaveConnector.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4066,"kind":2048,"name":"setFontSize","url":"classes/StaveConnector.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4067,"kind":2048,"name":"getFontSize","url":"classes/StaveConnector.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4068,"kind":262144,"name":"fontSize","url":"classes/StaveConnector.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4069,"kind":262144,"name":"fontSizeInPoints","url":"classes/StaveConnector.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4070,"kind":262144,"name":"fontSizeInPixels","url":"classes/StaveConnector.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4071,"kind":262144,"name":"fontStyle","url":"classes/StaveConnector.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4072,"kind":262144,"name":"fontWeight","url":"classes/StaveConnector.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4073,"kind":256,"name":"StaveHairpinRenderOptions","url":"interfaces/StaveHairpinRenderOptions.html","classes":"tsd-kind-interface"},{"id":4074,"kind":1024,"name":"right_shift_ticks","url":"interfaces/StaveHairpinRenderOptions.html#right_shift_ticks","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveHairpinRenderOptions"},{"id":4075,"kind":1024,"name":"left_shift_ticks","url":"interfaces/StaveHairpinRenderOptions.html#left_shift_ticks","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveHairpinRenderOptions"},{"id":4076,"kind":1024,"name":"left_shift_px","url":"interfaces/StaveHairpinRenderOptions.html#left_shift_px","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveHairpinRenderOptions"},{"id":4077,"kind":1024,"name":"right_shift_px","url":"interfaces/StaveHairpinRenderOptions.html#right_shift_px","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveHairpinRenderOptions"},{"id":4078,"kind":1024,"name":"height","url":"interfaces/StaveHairpinRenderOptions.html#height","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveHairpinRenderOptions"},{"id":4079,"kind":1024,"name":"y_shift","url":"interfaces/StaveHairpinRenderOptions.html#y_shift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveHairpinRenderOptions"},{"id":4080,"kind":128,"name":"StaveHairpin","url":"classes/StaveHairpin.html","classes":"tsd-kind-class"},{"id":4081,"kind":262144,"name":"CATEGORY","url":"classes/StaveHairpin.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveHairpin"},{"id":4082,"kind":1024,"name":"type","url":"classes/StaveHairpin.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"StaveHairpin"},{"id":4083,"kind":65536,"name":"__type","url":"classes/StaveHairpin.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"StaveHairpin"},{"id":4084,"kind":1024,"name":"CRESC","url":"classes/StaveHairpin.html#__type.CRESC","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveHairpin.__type"},{"id":4085,"kind":1024,"name":"DECRESC","url":"classes/StaveHairpin.html#__type.DECRESC","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveHairpin.__type"},{"id":4086,"kind":2048,"name":"FormatByTicksAndDraw","url":"classes/StaveHairpin.html#FormatByTicksAndDraw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"StaveHairpin"},{"id":4087,"kind":1024,"name":"TEXT_FONT","url":"classes/StaveHairpin.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"StaveHairpin"},{"id":4088,"kind":512,"name":"constructor","url":"classes/StaveHairpin.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"StaveHairpin"},{"id":4089,"kind":1024,"name":"render_options","url":"classes/StaveHairpin.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StaveHairpin"},{"id":4090,"kind":2048,"name":"setPosition","url":"classes/StaveHairpin.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveHairpin"},{"id":4091,"kind":2048,"name":"setRenderOptions","url":"classes/StaveHairpin.html#setRenderOptions","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveHairpin"},{"id":4092,"kind":2048,"name":"setNotes","url":"classes/StaveHairpin.html#setNotes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveHairpin"},{"id":4093,"kind":2048,"name":"renderHairpin","url":"classes/StaveHairpin.html#renderHairpin","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveHairpin"},{"id":4094,"kind":2048,"name":"draw","url":"classes/StaveHairpin.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveHairpin"},{"id":4095,"kind":2048,"name":"addChildElement","url":"classes/StaveHairpin.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4096,"kind":2048,"name":"getCategory","url":"classes/StaveHairpin.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4097,"kind":2048,"name":"setStyle","url":"classes/StaveHairpin.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4098,"kind":2048,"name":"setGroupStyle","url":"classes/StaveHairpin.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4099,"kind":2048,"name":"getStyle","url":"classes/StaveHairpin.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4100,"kind":2048,"name":"applyStyle","url":"classes/StaveHairpin.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4101,"kind":2048,"name":"restoreStyle","url":"classes/StaveHairpin.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4102,"kind":2048,"name":"drawWithStyle","url":"classes/StaveHairpin.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4103,"kind":2048,"name":"hasClass","url":"classes/StaveHairpin.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4104,"kind":2048,"name":"addClass","url":"classes/StaveHairpin.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4105,"kind":2048,"name":"removeClass","url":"classes/StaveHairpin.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4106,"kind":2048,"name":"onRegister","url":"classes/StaveHairpin.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4107,"kind":2048,"name":"isRendered","url":"classes/StaveHairpin.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4108,"kind":2048,"name":"setRendered","url":"classes/StaveHairpin.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4109,"kind":2048,"name":"getAttributes","url":"classes/StaveHairpin.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4110,"kind":2048,"name":"getAttribute","url":"classes/StaveHairpin.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4111,"kind":2048,"name":"setAttribute","url":"classes/StaveHairpin.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4112,"kind":2048,"name":"getBoundingBox","url":"classes/StaveHairpin.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4113,"kind":2048,"name":"getContext","url":"classes/StaveHairpin.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4114,"kind":2048,"name":"setContext","url":"classes/StaveHairpin.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4115,"kind":2048,"name":"checkContext","url":"classes/StaveHairpin.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4116,"kind":262144,"name":"font","url":"classes/StaveHairpin.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4117,"kind":2048,"name":"setFont","url":"classes/StaveHairpin.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4118,"kind":2048,"name":"getFont","url":"classes/StaveHairpin.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4119,"kind":2048,"name":"resetFont","url":"classes/StaveHairpin.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4120,"kind":262144,"name":"fontInfo","url":"classes/StaveHairpin.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4121,"kind":2048,"name":"setFontSize","url":"classes/StaveHairpin.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4122,"kind":2048,"name":"getFontSize","url":"classes/StaveHairpin.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4123,"kind":262144,"name":"fontSize","url":"classes/StaveHairpin.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4124,"kind":262144,"name":"fontSizeInPoints","url":"classes/StaveHairpin.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4125,"kind":262144,"name":"fontSizeInPixels","url":"classes/StaveHairpin.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4126,"kind":262144,"name":"fontStyle","url":"classes/StaveHairpin.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4127,"kind":262144,"name":"fontWeight","url":"classes/StaveHairpin.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4128,"kind":256,"name":"StaveLineNotes","url":"interfaces/StaveLineNotes.html","classes":"tsd-kind-interface"},{"id":4129,"kind":1024,"name":"first_note","url":"interfaces/StaveLineNotes.html#first_note","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveLineNotes"},{"id":4130,"kind":1024,"name":"first_indices","url":"interfaces/StaveLineNotes.html#first_indices","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveLineNotes"},{"id":4131,"kind":1024,"name":"last_note","url":"interfaces/StaveLineNotes.html#last_note","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveLineNotes"},{"id":4132,"kind":1024,"name":"last_indices","url":"interfaces/StaveLineNotes.html#last_indices","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveLineNotes"},{"id":4133,"kind":128,"name":"StaveLine","url":"classes/StaveLine.html","classes":"tsd-kind-class"},{"id":4134,"kind":262144,"name":"CATEGORY","url":"classes/StaveLine.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveLine"},{"id":4135,"kind":1024,"name":"TEXT_FONT","url":"classes/StaveLine.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveLine"},{"id":4136,"kind":1024,"name":"TextVerticalPosition","url":"classes/StaveLine.html#TextVerticalPosition","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"StaveLine"},{"id":4137,"kind":65536,"name":"__type","url":"classes/StaveLine.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"StaveLine"},{"id":4138,"kind":1024,"name":"TOP","url":"classes/StaveLine.html#__type-1.TOP","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4139,"kind":1024,"name":"BOTTOM","url":"classes/StaveLine.html#__type-1.BOTTOM","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4140,"kind":1024,"name":"TextJustification","url":"classes/StaveLine.html#TextJustification","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"StaveLine"},{"id":4141,"kind":512,"name":"constructor","url":"classes/StaveLine.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"StaveLine"},{"id":4142,"kind":1024,"name":"render_options","url":"classes/StaveLine.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StaveLine"},{"id":4143,"kind":65536,"name":"__type","url":"classes/StaveLine.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"StaveLine"},{"id":4144,"kind":1024,"name":"padding_left","url":"classes/StaveLine.html#__type.padding_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4145,"kind":1024,"name":"padding_right","url":"classes/StaveLine.html#__type.padding_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4146,"kind":1024,"name":"line_width","url":"classes/StaveLine.html#__type.line_width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4147,"kind":1024,"name":"line_dash","url":"classes/StaveLine.html#__type.line_dash","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4148,"kind":1024,"name":"rounded_end","url":"classes/StaveLine.html#__type.rounded_end","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4149,"kind":1024,"name":"color","url":"classes/StaveLine.html#__type.color","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4150,"kind":1024,"name":"draw_start_arrow","url":"classes/StaveLine.html#__type.draw_start_arrow","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4151,"kind":1024,"name":"draw_end_arrow","url":"classes/StaveLine.html#__type.draw_end_arrow","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4152,"kind":1024,"name":"arrowhead_length","url":"classes/StaveLine.html#__type.arrowhead_length","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4153,"kind":1024,"name":"arrowhead_angle","url":"classes/StaveLine.html#__type.arrowhead_angle","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4154,"kind":1024,"name":"text_position_vertical","url":"classes/StaveLine.html#__type.text_position_vertical","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4155,"kind":1024,"name":"text_justification","url":"classes/StaveLine.html#__type.text_justification","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4156,"kind":2048,"name":"setText","url":"classes/StaveLine.html#setText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveLine"},{"id":4157,"kind":2048,"name":"setNotes","url":"classes/StaveLine.html#setNotes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveLine"},{"id":4158,"kind":2048,"name":"applyLineStyle","url":"classes/StaveLine.html#applyLineStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveLine"},{"id":4159,"kind":2048,"name":"applyFontStyle","url":"classes/StaveLine.html#applyFontStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveLine"},{"id":4160,"kind":2048,"name":"draw","url":"classes/StaveLine.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveLine"},{"id":4161,"kind":2048,"name":"addChildElement","url":"classes/StaveLine.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4162,"kind":2048,"name":"getCategory","url":"classes/StaveLine.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4163,"kind":2048,"name":"setStyle","url":"classes/StaveLine.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4164,"kind":2048,"name":"setGroupStyle","url":"classes/StaveLine.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4165,"kind":2048,"name":"getStyle","url":"classes/StaveLine.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4166,"kind":2048,"name":"applyStyle","url":"classes/StaveLine.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4167,"kind":2048,"name":"restoreStyle","url":"classes/StaveLine.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4168,"kind":2048,"name":"drawWithStyle","url":"classes/StaveLine.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4169,"kind":2048,"name":"hasClass","url":"classes/StaveLine.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4170,"kind":2048,"name":"addClass","url":"classes/StaveLine.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4171,"kind":2048,"name":"removeClass","url":"classes/StaveLine.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4172,"kind":2048,"name":"onRegister","url":"classes/StaveLine.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4173,"kind":2048,"name":"isRendered","url":"classes/StaveLine.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4174,"kind":2048,"name":"setRendered","url":"classes/StaveLine.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4175,"kind":2048,"name":"getAttributes","url":"classes/StaveLine.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4176,"kind":2048,"name":"getAttribute","url":"classes/StaveLine.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4177,"kind":2048,"name":"setAttribute","url":"classes/StaveLine.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4178,"kind":2048,"name":"getBoundingBox","url":"classes/StaveLine.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4179,"kind":2048,"name":"getContext","url":"classes/StaveLine.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4180,"kind":2048,"name":"setContext","url":"classes/StaveLine.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4181,"kind":2048,"name":"checkContext","url":"classes/StaveLine.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4182,"kind":262144,"name":"font","url":"classes/StaveLine.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4183,"kind":2048,"name":"setFont","url":"classes/StaveLine.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4184,"kind":2048,"name":"getFont","url":"classes/StaveLine.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4185,"kind":2048,"name":"resetFont","url":"classes/StaveLine.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4186,"kind":262144,"name":"fontInfo","url":"classes/StaveLine.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4187,"kind":2048,"name":"setFontSize","url":"classes/StaveLine.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4188,"kind":2048,"name":"getFontSize","url":"classes/StaveLine.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4189,"kind":262144,"name":"fontSize","url":"classes/StaveLine.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4190,"kind":262144,"name":"fontSizeInPoints","url":"classes/StaveLine.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4191,"kind":262144,"name":"fontSizeInPixels","url":"classes/StaveLine.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4192,"kind":262144,"name":"fontStyle","url":"classes/StaveLine.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4193,"kind":262144,"name":"fontWeight","url":"classes/StaveLine.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4194,"kind":256,"name":"LayoutMetrics","url":"interfaces/LayoutMetrics.html","classes":"tsd-kind-interface"},{"id":4195,"kind":1024,"name":"xMin","url":"interfaces/LayoutMetrics.html#xMin","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"LayoutMetrics"},{"id":4196,"kind":1024,"name":"xMax","url":"interfaces/LayoutMetrics.html#xMax","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"LayoutMetrics"},{"id":4197,"kind":1024,"name":"paddingLeft","url":"interfaces/LayoutMetrics.html#paddingLeft","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"LayoutMetrics"},{"id":4198,"kind":1024,"name":"paddingRight","url":"interfaces/LayoutMetrics.html#paddingRight","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"LayoutMetrics"},{"id":4199,"kind":8,"name":"StaveModifierPosition","url":"enums/StaveModifierPosition.html","classes":"tsd-kind-enum"},{"id":4200,"kind":16,"name":"CENTER","url":"enums/StaveModifierPosition.html#CENTER","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"StaveModifierPosition"},{"id":4201,"kind":16,"name":"LEFT","url":"enums/StaveModifierPosition.html#LEFT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"StaveModifierPosition"},{"id":4202,"kind":16,"name":"RIGHT","url":"enums/StaveModifierPosition.html#RIGHT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"StaveModifierPosition"},{"id":4203,"kind":16,"name":"ABOVE","url":"enums/StaveModifierPosition.html#ABOVE","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"StaveModifierPosition"},{"id":4204,"kind":16,"name":"BELOW","url":"enums/StaveModifierPosition.html#BELOW","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"StaveModifierPosition"},{"id":4205,"kind":16,"name":"BEGIN","url":"enums/StaveModifierPosition.html#BEGIN","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"StaveModifierPosition"},{"id":4206,"kind":16,"name":"END","url":"enums/StaveModifierPosition.html#END","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"StaveModifierPosition"},{"id":4207,"kind":128,"name":"StaveModifier","url":"classes/StaveModifier.html","classes":"tsd-kind-class"},{"id":4208,"kind":262144,"name":"CATEGORY","url":"classes/StaveModifier.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveModifier"},{"id":4209,"kind":262144,"name":"Position","url":"classes/StaveModifier.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"StaveModifier"},{"id":4210,"kind":1024,"name":"TEXT_FONT","url":"classes/StaveModifier.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"StaveModifier"},{"id":4211,"kind":512,"name":"constructor","url":"classes/StaveModifier.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"StaveModifier"},{"id":4212,"kind":2048,"name":"getPosition","url":"classes/StaveModifier.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4213,"kind":2048,"name":"setPosition","url":"classes/StaveModifier.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4214,"kind":2048,"name":"getStave","url":"classes/StaveModifier.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4215,"kind":2048,"name":"checkStave","url":"classes/StaveModifier.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4216,"kind":2048,"name":"setStave","url":"classes/StaveModifier.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4217,"kind":2048,"name":"getWidth","url":"classes/StaveModifier.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4218,"kind":2048,"name":"setWidth","url":"classes/StaveModifier.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4219,"kind":2048,"name":"getX","url":"classes/StaveModifier.html#getX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4220,"kind":2048,"name":"setX","url":"classes/StaveModifier.html#setX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4221,"kind":2048,"name":"placeGlyphOnLine","url":"classes/StaveModifier.html#placeGlyphOnLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4222,"kind":2048,"name":"getPadding","url":"classes/StaveModifier.html#getPadding","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4223,"kind":2048,"name":"setPadding","url":"classes/StaveModifier.html#setPadding","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4224,"kind":2048,"name":"setLayoutMetrics","url":"classes/StaveModifier.html#setLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4225,"kind":2048,"name":"getLayoutMetrics","url":"classes/StaveModifier.html#getLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4226,"kind":2048,"name":"draw","url":"classes/StaveModifier.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveModifier"},{"id":4227,"kind":2048,"name":"addChildElement","url":"classes/StaveModifier.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4228,"kind":2048,"name":"getCategory","url":"classes/StaveModifier.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4229,"kind":2048,"name":"setStyle","url":"classes/StaveModifier.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4230,"kind":2048,"name":"setGroupStyle","url":"classes/StaveModifier.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4231,"kind":2048,"name":"getStyle","url":"classes/StaveModifier.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4232,"kind":2048,"name":"applyStyle","url":"classes/StaveModifier.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4233,"kind":2048,"name":"restoreStyle","url":"classes/StaveModifier.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4234,"kind":2048,"name":"drawWithStyle","url":"classes/StaveModifier.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4235,"kind":2048,"name":"hasClass","url":"classes/StaveModifier.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4236,"kind":2048,"name":"addClass","url":"classes/StaveModifier.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4237,"kind":2048,"name":"removeClass","url":"classes/StaveModifier.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4238,"kind":2048,"name":"onRegister","url":"classes/StaveModifier.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4239,"kind":2048,"name":"isRendered","url":"classes/StaveModifier.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4240,"kind":2048,"name":"setRendered","url":"classes/StaveModifier.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4241,"kind":2048,"name":"getAttributes","url":"classes/StaveModifier.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4242,"kind":2048,"name":"getAttribute","url":"classes/StaveModifier.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4243,"kind":2048,"name":"setAttribute","url":"classes/StaveModifier.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4244,"kind":2048,"name":"getBoundingBox","url":"classes/StaveModifier.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4245,"kind":2048,"name":"getContext","url":"classes/StaveModifier.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4246,"kind":2048,"name":"setContext","url":"classes/StaveModifier.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4247,"kind":2048,"name":"checkContext","url":"classes/StaveModifier.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4248,"kind":262144,"name":"font","url":"classes/StaveModifier.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4249,"kind":2048,"name":"setFont","url":"classes/StaveModifier.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4250,"kind":2048,"name":"getFont","url":"classes/StaveModifier.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4251,"kind":2048,"name":"resetFont","url":"classes/StaveModifier.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4252,"kind":262144,"name":"fontInfo","url":"classes/StaveModifier.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4253,"kind":2048,"name":"setFontSize","url":"classes/StaveModifier.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4254,"kind":2048,"name":"getFontSize","url":"classes/StaveModifier.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4255,"kind":262144,"name":"fontSize","url":"classes/StaveModifier.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4256,"kind":262144,"name":"fontSizeInPoints","url":"classes/StaveModifier.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4257,"kind":262144,"name":"fontSizeInPixels","url":"classes/StaveModifier.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4258,"kind":262144,"name":"fontStyle","url":"classes/StaveModifier.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4259,"kind":262144,"name":"fontWeight","url":"classes/StaveModifier.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4260,"kind":256,"name":"StaveNoteHeadBounds","url":"interfaces/StaveNoteHeadBounds.html","classes":"tsd-kind-interface"},{"id":4261,"kind":1024,"name":"y_top","url":"interfaces/StaveNoteHeadBounds.html#y_top","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteHeadBounds"},{"id":4262,"kind":1024,"name":"y_bottom","url":"interfaces/StaveNoteHeadBounds.html#y_bottom","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteHeadBounds"},{"id":4263,"kind":1024,"name":"displaced_x","url":"interfaces/StaveNoteHeadBounds.html#displaced_x","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteHeadBounds"},{"id":4264,"kind":1024,"name":"non_displaced_x","url":"interfaces/StaveNoteHeadBounds.html#non_displaced_x","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteHeadBounds"},{"id":4265,"kind":1024,"name":"highest_line","url":"interfaces/StaveNoteHeadBounds.html#highest_line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteHeadBounds"},{"id":4266,"kind":1024,"name":"lowest_line","url":"interfaces/StaveNoteHeadBounds.html#lowest_line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteHeadBounds"},{"id":4267,"kind":1024,"name":"highest_displaced_line","url":"interfaces/StaveNoteHeadBounds.html#highest_displaced_line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteHeadBounds"},{"id":4268,"kind":1024,"name":"lowest_displaced_line","url":"interfaces/StaveNoteHeadBounds.html#lowest_displaced_line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteHeadBounds"},{"id":4269,"kind":1024,"name":"highest_non_displaced_line","url":"interfaces/StaveNoteHeadBounds.html#highest_non_displaced_line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteHeadBounds"},{"id":4270,"kind":1024,"name":"lowest_non_displaced_line","url":"interfaces/StaveNoteHeadBounds.html#lowest_non_displaced_line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteHeadBounds"},{"id":4271,"kind":256,"name":"StaveNoteFormatSettings","url":"interfaces/StaveNoteFormatSettings.html","classes":"tsd-kind-interface"},{"id":4272,"kind":1024,"name":"line","url":"interfaces/StaveNoteFormatSettings.html#line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteFormatSettings"},{"id":4273,"kind":1024,"name":"maxLine","url":"interfaces/StaveNoteFormatSettings.html#maxLine","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteFormatSettings"},{"id":4274,"kind":1024,"name":"minLine","url":"interfaces/StaveNoteFormatSettings.html#minLine","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteFormatSettings"},{"id":4275,"kind":1024,"name":"isrest","url":"interfaces/StaveNoteFormatSettings.html#isrest","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteFormatSettings"},{"id":4276,"kind":1024,"name":"stemDirection","url":"interfaces/StaveNoteFormatSettings.html#stemDirection","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteFormatSettings"},{"id":4277,"kind":1024,"name":"stemMax","url":"interfaces/StaveNoteFormatSettings.html#stemMax","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteFormatSettings"},{"id":4278,"kind":1024,"name":"stemMin","url":"interfaces/StaveNoteFormatSettings.html#stemMin","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteFormatSettings"},{"id":4279,"kind":1024,"name":"voice_shift","url":"interfaces/StaveNoteFormatSettings.html#voice_shift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteFormatSettings"},{"id":4280,"kind":1024,"name":"is_displaced","url":"interfaces/StaveNoteFormatSettings.html#is_displaced","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteFormatSettings"},{"id":4281,"kind":1024,"name":"note","url":"interfaces/StaveNoteFormatSettings.html#note","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteFormatSettings"},{"id":4282,"kind":256,"name":"StaveNoteStruct","url":"interfaces/StaveNoteStruct.html","classes":"tsd-kind-interface"},{"id":4283,"kind":1024,"name":"stem_direction","url":"interfaces/StaveNoteStruct.html#stem_direction","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteStruct"},{"id":4284,"kind":1024,"name":"auto_stem","url":"interfaces/StaveNoteStruct.html#auto_stem","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteStruct"},{"id":4285,"kind":1024,"name":"stem_down_x_offset","url":"interfaces/StaveNoteStruct.html#stem_down_x_offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteStruct"},{"id":4286,"kind":1024,"name":"stem_up_x_offset","url":"interfaces/StaveNoteStruct.html#stem_up_x_offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteStruct"},{"id":4287,"kind":1024,"name":"stroke_px","url":"interfaces/StaveNoteStruct.html#stroke_px","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteStruct"},{"id":4288,"kind":1024,"name":"glyph_font_scale","url":"interfaces/StaveNoteStruct.html#glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteStruct"},{"id":4289,"kind":1024,"name":"octave_shift","url":"interfaces/StaveNoteStruct.html#octave_shift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteStruct"},{"id":4290,"kind":1024,"name":"clef","url":"interfaces/StaveNoteStruct.html#clef","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteStruct"},{"id":4291,"kind":1024,"name":"keys","url":"interfaces/StaveNoteStruct.html#keys","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"StaveNoteStruct"},{"id":4292,"kind":1024,"name":"duration","url":"interfaces/StaveNoteStruct.html#duration","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"StaveNoteStruct"},{"id":4293,"kind":1024,"name":"line","url":"interfaces/StaveNoteStruct.html#line","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"StaveNoteStruct"},{"id":4294,"kind":1024,"name":"dots","url":"interfaces/StaveNoteStruct.html#dots","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"StaveNoteStruct"},{"id":4295,"kind":1024,"name":"type","url":"interfaces/StaveNoteStruct.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"StaveNoteStruct"},{"id":4296,"kind":1024,"name":"align_center","url":"interfaces/StaveNoteStruct.html#align_center","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"StaveNoteStruct"},{"id":4297,"kind":1024,"name":"duration_override","url":"interfaces/StaveNoteStruct.html#duration_override","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"StaveNoteStruct"},{"id":4298,"kind":128,"name":"StaveNote","url":"classes/StaveNote.html","classes":"tsd-kind-class"},{"id":4299,"kind":1024,"name":"DEBUG","url":"classes/StaveNote.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"StaveNote"},{"id":4300,"kind":262144,"name":"CATEGORY","url":"classes/StaveNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveNote"},{"id":4301,"kind":262144,"name":"STEM_UP","url":"classes/StaveNote.html#STEM_UP","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"StaveNote"},{"id":4302,"kind":262144,"name":"STEM_DOWN","url":"classes/StaveNote.html#STEM_DOWN","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"StaveNote"},{"id":4303,"kind":262144,"name":"LEDGER_LINE_OFFSET","url":"classes/StaveNote.html#LEDGER_LINE_OFFSET","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"StaveNote"},{"id":4304,"kind":262144,"name":"minNoteheadPadding","url":"classes/StaveNote.html#minNoteheadPadding","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"StaveNote"},{"id":4305,"kind":2048,"name":"format","url":"classes/StaveNote.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"StaveNote"},{"id":4306,"kind":2048,"name":"postFormat","url":"classes/StaveNote.html#postFormat-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"StaveNote"},{"id":4307,"kind":2048,"name":"plotMetrics","url":"classes/StaveNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"StaveNote"},{"id":4308,"kind":1024,"name":"TEXT_FONT","url":"classes/StaveNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"StaveNote"},{"id":4309,"kind":512,"name":"constructor","url":"classes/StaveNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4310,"kind":1024,"name":"minLine","url":"classes/StaveNote.html#minLine","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StaveNote"},{"id":4311,"kind":1024,"name":"maxLine","url":"classes/StaveNote.html#maxLine","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StaveNote"},{"id":4312,"kind":2048,"name":"reset","url":"classes/StaveNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4313,"kind":2048,"name":"setBeam","url":"classes/StaveNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4314,"kind":2048,"name":"buildStem","url":"classes/StaveNote.html#buildStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4315,"kind":2048,"name":"buildNoteHeads","url":"classes/StaveNote.html#buildNoteHeads","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4316,"kind":2048,"name":"autoStem","url":"classes/StaveNote.html#autoStem","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4317,"kind":2048,"name":"calculateOptimalStemDirection","url":"classes/StaveNote.html#calculateOptimalStemDirection","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4318,"kind":2048,"name":"calculateKeyProps","url":"classes/StaveNote.html#calculateKeyProps","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4319,"kind":2048,"name":"getBoundingBox","url":"classes/StaveNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4320,"kind":2048,"name":"getLineNumber","url":"classes/StaveNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4321,"kind":2048,"name":"isRest","url":"classes/StaveNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4322,"kind":2048,"name":"isChord","url":"classes/StaveNote.html#isChord","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4323,"kind":2048,"name":"hasStem","url":"classes/StaveNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4324,"kind":2048,"name":"hasFlag","url":"classes/StaveNote.html#hasFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4325,"kind":2048,"name":"getStemX","url":"classes/StaveNote.html#getStemX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4326,"kind":2048,"name":"getYForTopText","url":"classes/StaveNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4327,"kind":2048,"name":"getYForBottomText","url":"classes/StaveNote.html#getYForBottomText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4328,"kind":2048,"name":"setStave","url":"classes/StaveNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4329,"kind":2048,"name":"isDisplaced","url":"classes/StaveNote.html#isDisplaced","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4330,"kind":2048,"name":"setNoteDisplaced","url":"classes/StaveNote.html#setNoteDisplaced","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4331,"kind":2048,"name":"getTieRightX","url":"classes/StaveNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4332,"kind":2048,"name":"getTieLeftX","url":"classes/StaveNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4333,"kind":2048,"name":"getLineForRest","url":"classes/StaveNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4334,"kind":2048,"name":"getModifierStartXY","url":"classes/StaveNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4335,"kind":2048,"name":"setStyle","url":"classes/StaveNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4336,"kind":2048,"name":"setStemStyle","url":"classes/StaveNote.html#setStemStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4337,"kind":2048,"name":"getStemStyle","url":"classes/StaveNote.html#getStemStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4338,"kind":2048,"name":"setLedgerLineStyle","url":"classes/StaveNote.html#setLedgerLineStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4339,"kind":2048,"name":"getLedgerLineStyle","url":"classes/StaveNote.html#getLedgerLineStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4340,"kind":2048,"name":"setFlagStyle","url":"classes/StaveNote.html#setFlagStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4341,"kind":2048,"name":"getFlagStyle","url":"classes/StaveNote.html#getFlagStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4342,"kind":2048,"name":"setKeyStyle","url":"classes/StaveNote.html#setKeyStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4343,"kind":2048,"name":"setKeyLine","url":"classes/StaveNote.html#setKeyLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4344,"kind":2048,"name":"getKeyLine","url":"classes/StaveNote.html#getKeyLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4345,"kind":2048,"name":"getVoiceShiftWidth","url":"classes/StaveNote.html#getVoiceShiftWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4346,"kind":2048,"name":"calcNoteDisplacements","url":"classes/StaveNote.html#calcNoteDisplacements","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4347,"kind":2048,"name":"preFormat","url":"classes/StaveNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4348,"kind":2048,"name":"getNoteHeadBounds","url":"classes/StaveNote.html#getNoteHeadBounds","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4349,"kind":2048,"name":"getNoteHeadBeginX","url":"classes/StaveNote.html#getNoteHeadBeginX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4350,"kind":2048,"name":"getNoteHeadEndX","url":"classes/StaveNote.html#getNoteHeadEndX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4351,"kind":262144,"name":"noteHeads","url":"classes/StaveNote.html#noteHeads","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"StaveNote"},{"id":4352,"kind":262144,"name":"note_heads","url":"classes/StaveNote.html#note_heads","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"StaveNote"},{"id":4353,"kind":2048,"name":"drawLedgerLines","url":"classes/StaveNote.html#drawLedgerLines","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4354,"kind":2048,"name":"drawModifiers","url":"classes/StaveNote.html#drawModifiers","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4355,"kind":2048,"name":"shouldDrawFlag","url":"classes/StaveNote.html#shouldDrawFlag","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4356,"kind":2048,"name":"drawFlag","url":"classes/StaveNote.html#drawFlag","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4357,"kind":2048,"name":"drawNoteHeads","url":"classes/StaveNote.html#drawNoteHeads","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4358,"kind":2048,"name":"drawStem","url":"classes/StaveNote.html#drawStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4359,"kind":2048,"name":"getStaveNoteScale","url":"classes/StaveNote.html#getStaveNoteScale","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4360,"kind":2048,"name":"getStemExtension","url":"classes/StaveNote.html#getStemExtension","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4361,"kind":2048,"name":"draw","url":"classes/StaveNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4362,"kind":1024,"name":"stem_direction","url":"classes/StaveNote.html#stem_direction","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4363,"kind":1024,"name":"stem","url":"classes/StaveNote.html#stem","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4364,"kind":2048,"name":"getStem","url":"classes/StaveNote.html#getStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4365,"kind":2048,"name":"checkStem","url":"classes/StaveNote.html#checkStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4366,"kind":2048,"name":"setStem","url":"classes/StaveNote.html#setStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4367,"kind":2048,"name":"buildFlag","url":"classes/StaveNote.html#buildFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4368,"kind":2048,"name":"getBaseCustomNoteHeadGlyph","url":"classes/StaveNote.html#getBaseCustomNoteHeadGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4369,"kind":2048,"name":"getStemLength","url":"classes/StaveNote.html#getStemLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4370,"kind":2048,"name":"getBeamCount","url":"classes/StaveNote.html#getBeamCount","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4371,"kind":2048,"name":"getStemMinimumLength","url":"classes/StaveNote.html#getStemMinimumLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4372,"kind":2048,"name":"getStemDirection","url":"classes/StaveNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4373,"kind":2048,"name":"setStemDirection","url":"classes/StaveNote.html#setStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4374,"kind":2048,"name":"getCenterGlyphX","url":"classes/StaveNote.html#getCenterGlyphX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4375,"kind":2048,"name":"setStemLength","url":"classes/StaveNote.html#setStemLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4376,"kind":2048,"name":"getStemExtents","url":"classes/StaveNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4377,"kind":2048,"name":"postFormat","url":"classes/StaveNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4378,"kind":1024,"name":"glyph","url":"classes/StaveNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4379,"kind":1024,"name":"keys","url":"classes/StaveNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4380,"kind":1024,"name":"keyProps","url":"classes/StaveNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4381,"kind":1024,"name":"render_options","url":"classes/StaveNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4382,"kind":65536,"name":"__type","url":"classes/StaveNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"StaveNote"},{"id":4383,"kind":1024,"name":"draw_stem_through_stave","url":"classes/StaveNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4384,"kind":1024,"name":"draw","url":"classes/StaveNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4385,"kind":1024,"name":"draw_dots","url":"classes/StaveNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4386,"kind":1024,"name":"draw_stem","url":"classes/StaveNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4387,"kind":1024,"name":"y_shift","url":"classes/StaveNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4388,"kind":1024,"name":"extend_left","url":"classes/StaveNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4389,"kind":1024,"name":"extend_right","url":"classes/StaveNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4390,"kind":1024,"name":"glyph_font_scale","url":"classes/StaveNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4391,"kind":1024,"name":"annotation_spacing","url":"classes/StaveNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4392,"kind":1024,"name":"glyph_font_size","url":"classes/StaveNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4393,"kind":1024,"name":"scale","url":"classes/StaveNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4394,"kind":1024,"name":"font","url":"classes/StaveNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4395,"kind":1024,"name":"stroke_px","url":"classes/StaveNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4396,"kind":2048,"name":"getPlayNote","url":"classes/StaveNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4397,"kind":2048,"name":"setPlayNote","url":"classes/StaveNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4398,"kind":2048,"name":"addStroke","url":"classes/StaveNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4399,"kind":2048,"name":"getStave","url":"classes/StaveNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4400,"kind":2048,"name":"checkStave","url":"classes/StaveNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4401,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/StaveNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4402,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/StaveNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4403,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/StaveNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4404,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/StaveNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4405,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/StaveNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4406,"kind":2048,"name":"getGlyph","url":"classes/StaveNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4407,"kind":2048,"name":"getGlyphWidth","url":"classes/StaveNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4408,"kind":2048,"name":"setYs","url":"classes/StaveNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4409,"kind":2048,"name":"getYs","url":"classes/StaveNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4410,"kind":2048,"name":"getVoice","url":"classes/StaveNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4411,"kind":2048,"name":"setVoice","url":"classes/StaveNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4412,"kind":2048,"name":"getTickContext","url":"classes/StaveNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4413,"kind":2048,"name":"setTickContext","url":"classes/StaveNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4414,"kind":2048,"name":"getDuration","url":"classes/StaveNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4415,"kind":2048,"name":"isDotted","url":"classes/StaveNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4416,"kind":2048,"name":"getNoteType","url":"classes/StaveNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4417,"kind":2048,"name":"getBeam","url":"classes/StaveNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4418,"kind":2048,"name":"checkBeam","url":"classes/StaveNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4419,"kind":2048,"name":"hasBeam","url":"classes/StaveNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4420,"kind":2048,"name":"addModifier","url":"classes/StaveNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4421,"kind":2048,"name":"getModifiersByType","url":"classes/StaveNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4422,"kind":2048,"name":"getRightParenthesisPx","url":"classes/StaveNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4423,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/StaveNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4424,"kind":2048,"name":"getFirstDotPx","url":"classes/StaveNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4425,"kind":2048,"name":"getMetrics","url":"classes/StaveNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4426,"kind":2048,"name":"getAbsoluteX","url":"classes/StaveNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4427,"kind":2048,"name":"getKeys","url":"classes/StaveNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4428,"kind":2048,"name":"getKeyProps","url":"classes/StaveNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4429,"kind":2048,"name":"getTicks","url":"classes/StaveNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4430,"kind":2048,"name":"setIgnoreTicks","url":"classes/StaveNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4431,"kind":2048,"name":"setWidth","url":"classes/StaveNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4432,"kind":2048,"name":"getWidth","url":"classes/StaveNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4433,"kind":2048,"name":"setXShift","url":"classes/StaveNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4434,"kind":2048,"name":"getXShift","url":"classes/StaveNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4435,"kind":2048,"name":"getX","url":"classes/StaveNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4436,"kind":2048,"name":"getFormatterMetrics","url":"classes/StaveNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4437,"kind":2048,"name":"getCenterXShift","url":"classes/StaveNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4438,"kind":2048,"name":"setCenterXShift","url":"classes/StaveNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4439,"kind":2048,"name":"isCenterAligned","url":"classes/StaveNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4440,"kind":2048,"name":"setCenterAlignment","url":"classes/StaveNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4441,"kind":2048,"name":"getTuplet","url":"classes/StaveNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4442,"kind":2048,"name":"getTupletStack","url":"classes/StaveNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4443,"kind":2048,"name":"resetTuplet","url":"classes/StaveNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4444,"kind":2048,"name":"setTuplet","url":"classes/StaveNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4445,"kind":2048,"name":"addToModifierContext","url":"classes/StaveNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4446,"kind":2048,"name":"getModifiers","url":"classes/StaveNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4447,"kind":2048,"name":"checkTickContext","url":"classes/StaveNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4448,"kind":262144,"name":"preFormatted","url":"classes/StaveNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4449,"kind":262144,"name":"postFormatted","url":"classes/StaveNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4450,"kind":2048,"name":"getIntrinsicTicks","url":"classes/StaveNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4451,"kind":2048,"name":"setIntrinsicTicks","url":"classes/StaveNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4452,"kind":2048,"name":"getTickMultiplier","url":"classes/StaveNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4453,"kind":2048,"name":"applyTickMultiplier","url":"classes/StaveNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4454,"kind":2048,"name":"setDuration","url":"classes/StaveNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4455,"kind":2048,"name":"setModifierContext","url":"classes/StaveNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4456,"kind":2048,"name":"getModifierContext","url":"classes/StaveNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4457,"kind":2048,"name":"checkModifierContext","url":"classes/StaveNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4458,"kind":2048,"name":"addChildElement","url":"classes/StaveNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4459,"kind":2048,"name":"getCategory","url":"classes/StaveNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4460,"kind":2048,"name":"setGroupStyle","url":"classes/StaveNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4461,"kind":2048,"name":"getStyle","url":"classes/StaveNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4462,"kind":2048,"name":"applyStyle","url":"classes/StaveNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4463,"kind":2048,"name":"restoreStyle","url":"classes/StaveNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4464,"kind":2048,"name":"drawWithStyle","url":"classes/StaveNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4465,"kind":2048,"name":"hasClass","url":"classes/StaveNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4466,"kind":2048,"name":"addClass","url":"classes/StaveNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4467,"kind":2048,"name":"removeClass","url":"classes/StaveNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4468,"kind":2048,"name":"onRegister","url":"classes/StaveNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4469,"kind":2048,"name":"isRendered","url":"classes/StaveNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4470,"kind":2048,"name":"setRendered","url":"classes/StaveNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4471,"kind":2048,"name":"getAttributes","url":"classes/StaveNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4472,"kind":2048,"name":"getAttribute","url":"classes/StaveNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4473,"kind":2048,"name":"setAttribute","url":"classes/StaveNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4474,"kind":2048,"name":"getContext","url":"classes/StaveNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4475,"kind":2048,"name":"setContext","url":"classes/StaveNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4476,"kind":2048,"name":"checkContext","url":"classes/StaveNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4477,"kind":262144,"name":"font","url":"classes/StaveNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4478,"kind":2048,"name":"setFont","url":"classes/StaveNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4479,"kind":2048,"name":"getFont","url":"classes/StaveNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4480,"kind":2048,"name":"resetFont","url":"classes/StaveNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4481,"kind":262144,"name":"fontInfo","url":"classes/StaveNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4482,"kind":2048,"name":"setFontSize","url":"classes/StaveNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4483,"kind":2048,"name":"getFontSize","url":"classes/StaveNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4484,"kind":262144,"name":"fontSize","url":"classes/StaveNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4485,"kind":262144,"name":"fontSizeInPoints","url":"classes/StaveNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4486,"kind":262144,"name":"fontSizeInPixels","url":"classes/StaveNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4487,"kind":262144,"name":"fontStyle","url":"classes/StaveNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4488,"kind":262144,"name":"fontWeight","url":"classes/StaveNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4489,"kind":128,"name":"Repetition","url":"classes/Repetition.html","classes":"tsd-kind-class"},{"id":4490,"kind":262144,"name":"CATEGORY","url":"classes/Repetition.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Repetition"},{"id":4491,"kind":1024,"name":"TEXT_FONT","url":"classes/Repetition.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Repetition"},{"id":4492,"kind":1024,"name":"type","url":"classes/Repetition.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Repetition"},{"id":4493,"kind":65536,"name":"__type","url":"classes/Repetition.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Repetition"},{"id":4494,"kind":1024,"name":"NONE","url":"classes/Repetition.html#__type.NONE","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4495,"kind":1024,"name":"CODA_LEFT","url":"classes/Repetition.html#__type.CODA_LEFT","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4496,"kind":1024,"name":"CODA_RIGHT","url":"classes/Repetition.html#__type.CODA_RIGHT","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4497,"kind":1024,"name":"SEGNO_LEFT","url":"classes/Repetition.html#__type.SEGNO_LEFT","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4498,"kind":1024,"name":"SEGNO_RIGHT","url":"classes/Repetition.html#__type.SEGNO_RIGHT","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4499,"kind":1024,"name":"DC","url":"classes/Repetition.html#__type.DC","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4500,"kind":1024,"name":"DC_AL_CODA","url":"classes/Repetition.html#__type.DC_AL_CODA","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4501,"kind":1024,"name":"DC_AL_FINE","url":"classes/Repetition.html#__type.DC_AL_FINE","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4502,"kind":1024,"name":"DS","url":"classes/Repetition.html#__type.DS","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4503,"kind":1024,"name":"DS_AL_CODA","url":"classes/Repetition.html#__type.DS_AL_CODA","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4504,"kind":1024,"name":"DS_AL_FINE","url":"classes/Repetition.html#__type.DS_AL_FINE","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4505,"kind":1024,"name":"FINE","url":"classes/Repetition.html#__type.FINE","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4506,"kind":1024,"name":"TO_CODA","url":"classes/Repetition.html#__type.TO_CODA","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4507,"kind":262144,"name":"Position","url":"classes/Repetition.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Repetition"},{"id":4508,"kind":512,"name":"constructor","url":"classes/Repetition.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Repetition"},{"id":4509,"kind":2048,"name":"setShiftX","url":"classes/Repetition.html#setShiftX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Repetition"},{"id":4510,"kind":2048,"name":"setShiftY","url":"classes/Repetition.html#setShiftY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Repetition"},{"id":4511,"kind":2048,"name":"draw","url":"classes/Repetition.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Repetition"},{"id":4512,"kind":2048,"name":"drawCodaFixed","url":"classes/Repetition.html#drawCodaFixed","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Repetition"},{"id":4513,"kind":2048,"name":"drawSignoFixed","url":"classes/Repetition.html#drawSignoFixed","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Repetition"},{"id":4514,"kind":2048,"name":"drawSymbolText","url":"classes/Repetition.html#drawSymbolText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Repetition"},{"id":4515,"kind":2048,"name":"getPosition","url":"classes/Repetition.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4516,"kind":2048,"name":"setPosition","url":"classes/Repetition.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4517,"kind":2048,"name":"getStave","url":"classes/Repetition.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4518,"kind":2048,"name":"checkStave","url":"classes/Repetition.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4519,"kind":2048,"name":"setStave","url":"classes/Repetition.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4520,"kind":2048,"name":"getWidth","url":"classes/Repetition.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4521,"kind":2048,"name":"setWidth","url":"classes/Repetition.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4522,"kind":2048,"name":"getX","url":"classes/Repetition.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4523,"kind":2048,"name":"setX","url":"classes/Repetition.html#setX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4524,"kind":2048,"name":"placeGlyphOnLine","url":"classes/Repetition.html#placeGlyphOnLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4525,"kind":2048,"name":"getPadding","url":"classes/Repetition.html#getPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4526,"kind":2048,"name":"setPadding","url":"classes/Repetition.html#setPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4527,"kind":2048,"name":"setLayoutMetrics","url":"classes/Repetition.html#setLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4528,"kind":2048,"name":"getLayoutMetrics","url":"classes/Repetition.html#getLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4529,"kind":2048,"name":"addChildElement","url":"classes/Repetition.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4530,"kind":2048,"name":"getCategory","url":"classes/Repetition.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4531,"kind":2048,"name":"setStyle","url":"classes/Repetition.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4532,"kind":2048,"name":"setGroupStyle","url":"classes/Repetition.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4533,"kind":2048,"name":"getStyle","url":"classes/Repetition.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4534,"kind":2048,"name":"applyStyle","url":"classes/Repetition.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4535,"kind":2048,"name":"restoreStyle","url":"classes/Repetition.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4536,"kind":2048,"name":"drawWithStyle","url":"classes/Repetition.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4537,"kind":2048,"name":"hasClass","url":"classes/Repetition.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4538,"kind":2048,"name":"addClass","url":"classes/Repetition.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4539,"kind":2048,"name":"removeClass","url":"classes/Repetition.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4540,"kind":2048,"name":"onRegister","url":"classes/Repetition.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4541,"kind":2048,"name":"isRendered","url":"classes/Repetition.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4542,"kind":2048,"name":"setRendered","url":"classes/Repetition.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4543,"kind":2048,"name":"getAttributes","url":"classes/Repetition.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4544,"kind":2048,"name":"getAttribute","url":"classes/Repetition.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4545,"kind":2048,"name":"setAttribute","url":"classes/Repetition.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4546,"kind":2048,"name":"getBoundingBox","url":"classes/Repetition.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4547,"kind":2048,"name":"getContext","url":"classes/Repetition.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4548,"kind":2048,"name":"setContext","url":"classes/Repetition.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4549,"kind":2048,"name":"checkContext","url":"classes/Repetition.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4550,"kind":262144,"name":"font","url":"classes/Repetition.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4551,"kind":2048,"name":"setFont","url":"classes/Repetition.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4552,"kind":2048,"name":"getFont","url":"classes/Repetition.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4553,"kind":2048,"name":"resetFont","url":"classes/Repetition.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4554,"kind":262144,"name":"fontInfo","url":"classes/Repetition.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4555,"kind":2048,"name":"setFontSize","url":"classes/Repetition.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4556,"kind":2048,"name":"getFontSize","url":"classes/Repetition.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4557,"kind":262144,"name":"fontSize","url":"classes/Repetition.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4558,"kind":262144,"name":"fontSizeInPoints","url":"classes/Repetition.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4559,"kind":262144,"name":"fontSizeInPixels","url":"classes/Repetition.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4560,"kind":262144,"name":"fontStyle","url":"classes/Repetition.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4561,"kind":262144,"name":"fontWeight","url":"classes/Repetition.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4562,"kind":128,"name":"StaveSection","url":"classes/StaveSection.html","classes":"tsd-kind-class"},{"id":4563,"kind":262144,"name":"CATEGORY","url":"classes/StaveSection.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveSection"},{"id":4564,"kind":1024,"name":"TEXT_FONT","url":"classes/StaveSection.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveSection"},{"id":4565,"kind":262144,"name":"Position","url":"classes/StaveSection.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"StaveSection"},{"id":4566,"kind":512,"name":"constructor","url":"classes/StaveSection.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"StaveSection"},{"id":4567,"kind":2048,"name":"setStaveSection","url":"classes/StaveSection.html#setStaveSection","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveSection"},{"id":4568,"kind":2048,"name":"setShiftX","url":"classes/StaveSection.html#setShiftX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveSection"},{"id":4569,"kind":2048,"name":"setShiftY","url":"classes/StaveSection.html#setShiftY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveSection"},{"id":4570,"kind":2048,"name":"draw","url":"classes/StaveSection.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveSection"},{"id":4571,"kind":2048,"name":"getPosition","url":"classes/StaveSection.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4572,"kind":2048,"name":"setPosition","url":"classes/StaveSection.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4573,"kind":2048,"name":"getStave","url":"classes/StaveSection.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4574,"kind":2048,"name":"checkStave","url":"classes/StaveSection.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4575,"kind":2048,"name":"setStave","url":"classes/StaveSection.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4576,"kind":2048,"name":"getWidth","url":"classes/StaveSection.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4577,"kind":2048,"name":"setWidth","url":"classes/StaveSection.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4578,"kind":2048,"name":"getX","url":"classes/StaveSection.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4579,"kind":2048,"name":"setX","url":"classes/StaveSection.html#setX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4580,"kind":2048,"name":"placeGlyphOnLine","url":"classes/StaveSection.html#placeGlyphOnLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4581,"kind":2048,"name":"getPadding","url":"classes/StaveSection.html#getPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4582,"kind":2048,"name":"setPadding","url":"classes/StaveSection.html#setPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4583,"kind":2048,"name":"setLayoutMetrics","url":"classes/StaveSection.html#setLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4584,"kind":2048,"name":"getLayoutMetrics","url":"classes/StaveSection.html#getLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4585,"kind":2048,"name":"addChildElement","url":"classes/StaveSection.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4586,"kind":2048,"name":"getCategory","url":"classes/StaveSection.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4587,"kind":2048,"name":"setStyle","url":"classes/StaveSection.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4588,"kind":2048,"name":"setGroupStyle","url":"classes/StaveSection.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4589,"kind":2048,"name":"getStyle","url":"classes/StaveSection.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4590,"kind":2048,"name":"applyStyle","url":"classes/StaveSection.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4591,"kind":2048,"name":"restoreStyle","url":"classes/StaveSection.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4592,"kind":2048,"name":"drawWithStyle","url":"classes/StaveSection.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4593,"kind":2048,"name":"hasClass","url":"classes/StaveSection.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4594,"kind":2048,"name":"addClass","url":"classes/StaveSection.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4595,"kind":2048,"name":"removeClass","url":"classes/StaveSection.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4596,"kind":2048,"name":"onRegister","url":"classes/StaveSection.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4597,"kind":2048,"name":"isRendered","url":"classes/StaveSection.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4598,"kind":2048,"name":"setRendered","url":"classes/StaveSection.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4599,"kind":2048,"name":"getAttributes","url":"classes/StaveSection.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4600,"kind":2048,"name":"getAttribute","url":"classes/StaveSection.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4601,"kind":2048,"name":"setAttribute","url":"classes/StaveSection.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4602,"kind":2048,"name":"getBoundingBox","url":"classes/StaveSection.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4603,"kind":2048,"name":"getContext","url":"classes/StaveSection.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4604,"kind":2048,"name":"setContext","url":"classes/StaveSection.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4605,"kind":2048,"name":"checkContext","url":"classes/StaveSection.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4606,"kind":262144,"name":"font","url":"classes/StaveSection.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4607,"kind":2048,"name":"setFont","url":"classes/StaveSection.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4608,"kind":2048,"name":"getFont","url":"classes/StaveSection.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4609,"kind":2048,"name":"resetFont","url":"classes/StaveSection.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4610,"kind":262144,"name":"fontInfo","url":"classes/StaveSection.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4611,"kind":2048,"name":"setFontSize","url":"classes/StaveSection.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4612,"kind":2048,"name":"getFontSize","url":"classes/StaveSection.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4613,"kind":262144,"name":"fontSize","url":"classes/StaveSection.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4614,"kind":262144,"name":"fontSizeInPoints","url":"classes/StaveSection.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4615,"kind":262144,"name":"fontSizeInPixels","url":"classes/StaveSection.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4616,"kind":262144,"name":"fontStyle","url":"classes/StaveSection.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4617,"kind":262144,"name":"fontWeight","url":"classes/StaveSection.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4618,"kind":256,"name":"StaveTempoOptions","url":"interfaces/StaveTempoOptions.html","classes":"tsd-kind-interface"},{"id":4619,"kind":1024,"name":"bpm","url":"interfaces/StaveTempoOptions.html#bpm","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveTempoOptions"},{"id":4620,"kind":1024,"name":"duration","url":"interfaces/StaveTempoOptions.html#duration","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveTempoOptions"},{"id":4621,"kind":1024,"name":"dots","url":"interfaces/StaveTempoOptions.html#dots","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveTempoOptions"},{"id":4622,"kind":1024,"name":"name","url":"interfaces/StaveTempoOptions.html#name","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveTempoOptions"},{"id":4623,"kind":128,"name":"StaveTempo","url":"classes/StaveTempo.html","classes":"tsd-kind-class"},{"id":4624,"kind":262144,"name":"CATEGORY","url":"classes/StaveTempo.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveTempo"},{"id":4625,"kind":1024,"name":"TEXT_FONT","url":"classes/StaveTempo.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveTempo"},{"id":4626,"kind":262144,"name":"Position","url":"classes/StaveTempo.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"StaveTempo"},{"id":4627,"kind":512,"name":"constructor","url":"classes/StaveTempo.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"StaveTempo"},{"id":4628,"kind":1024,"name":"render_options","url":"classes/StaveTempo.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StaveTempo"},{"id":4629,"kind":65536,"name":"__type","url":"classes/StaveTempo.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"StaveTempo"},{"id":4630,"kind":1024,"name":"glyph_font_scale","url":"classes/StaveTempo.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveTempo.__type"},{"id":4631,"kind":2048,"name":"setTempo","url":"classes/StaveTempo.html#setTempo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveTempo"},{"id":4632,"kind":2048,"name":"setShiftX","url":"classes/StaveTempo.html#setShiftX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveTempo"},{"id":4633,"kind":2048,"name":"setShiftY","url":"classes/StaveTempo.html#setShiftY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveTempo"},{"id":4634,"kind":2048,"name":"draw","url":"classes/StaveTempo.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveTempo"},{"id":4635,"kind":2048,"name":"getPosition","url":"classes/StaveTempo.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4636,"kind":2048,"name":"setPosition","url":"classes/StaveTempo.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4637,"kind":2048,"name":"getStave","url":"classes/StaveTempo.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4638,"kind":2048,"name":"checkStave","url":"classes/StaveTempo.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4639,"kind":2048,"name":"setStave","url":"classes/StaveTempo.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4640,"kind":2048,"name":"getWidth","url":"classes/StaveTempo.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4641,"kind":2048,"name":"setWidth","url":"classes/StaveTempo.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4642,"kind":2048,"name":"getX","url":"classes/StaveTempo.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4643,"kind":2048,"name":"setX","url":"classes/StaveTempo.html#setX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4644,"kind":2048,"name":"placeGlyphOnLine","url":"classes/StaveTempo.html#placeGlyphOnLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4645,"kind":2048,"name":"getPadding","url":"classes/StaveTempo.html#getPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4646,"kind":2048,"name":"setPadding","url":"classes/StaveTempo.html#setPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4647,"kind":2048,"name":"setLayoutMetrics","url":"classes/StaveTempo.html#setLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4648,"kind":2048,"name":"getLayoutMetrics","url":"classes/StaveTempo.html#getLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4649,"kind":2048,"name":"addChildElement","url":"classes/StaveTempo.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4650,"kind":2048,"name":"getCategory","url":"classes/StaveTempo.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4651,"kind":2048,"name":"setStyle","url":"classes/StaveTempo.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4652,"kind":2048,"name":"setGroupStyle","url":"classes/StaveTempo.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4653,"kind":2048,"name":"getStyle","url":"classes/StaveTempo.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4654,"kind":2048,"name":"applyStyle","url":"classes/StaveTempo.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4655,"kind":2048,"name":"restoreStyle","url":"classes/StaveTempo.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4656,"kind":2048,"name":"drawWithStyle","url":"classes/StaveTempo.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4657,"kind":2048,"name":"hasClass","url":"classes/StaveTempo.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4658,"kind":2048,"name":"addClass","url":"classes/StaveTempo.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4659,"kind":2048,"name":"removeClass","url":"classes/StaveTempo.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4660,"kind":2048,"name":"onRegister","url":"classes/StaveTempo.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4661,"kind":2048,"name":"isRendered","url":"classes/StaveTempo.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4662,"kind":2048,"name":"setRendered","url":"classes/StaveTempo.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4663,"kind":2048,"name":"getAttributes","url":"classes/StaveTempo.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4664,"kind":2048,"name":"getAttribute","url":"classes/StaveTempo.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4665,"kind":2048,"name":"setAttribute","url":"classes/StaveTempo.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4666,"kind":2048,"name":"getBoundingBox","url":"classes/StaveTempo.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4667,"kind":2048,"name":"getContext","url":"classes/StaveTempo.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4668,"kind":2048,"name":"setContext","url":"classes/StaveTempo.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4669,"kind":2048,"name":"checkContext","url":"classes/StaveTempo.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4670,"kind":262144,"name":"font","url":"classes/StaveTempo.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4671,"kind":2048,"name":"setFont","url":"classes/StaveTempo.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4672,"kind":2048,"name":"getFont","url":"classes/StaveTempo.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4673,"kind":2048,"name":"resetFont","url":"classes/StaveTempo.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4674,"kind":262144,"name":"fontInfo","url":"classes/StaveTempo.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4675,"kind":2048,"name":"setFontSize","url":"classes/StaveTempo.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4676,"kind":2048,"name":"getFontSize","url":"classes/StaveTempo.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4677,"kind":262144,"name":"fontSize","url":"classes/StaveTempo.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4678,"kind":262144,"name":"fontSizeInPoints","url":"classes/StaveTempo.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4679,"kind":262144,"name":"fontSizeInPixels","url":"classes/StaveTempo.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4680,"kind":262144,"name":"fontStyle","url":"classes/StaveTempo.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4681,"kind":262144,"name":"fontWeight","url":"classes/StaveTempo.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4682,"kind":128,"name":"StaveText","url":"classes/StaveText.html","classes":"tsd-kind-class"},{"id":4683,"kind":262144,"name":"CATEGORY","url":"classes/StaveText.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveText"},{"id":4684,"kind":1024,"name":"TEXT_FONT","url":"classes/StaveText.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveText"},{"id":4685,"kind":262144,"name":"Position","url":"classes/StaveText.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"StaveText"},{"id":4686,"kind":512,"name":"constructor","url":"classes/StaveText.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"StaveText"},{"id":4687,"kind":2048,"name":"setStaveText","url":"classes/StaveText.html#setStaveText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveText"},{"id":4688,"kind":2048,"name":"setShiftX","url":"classes/StaveText.html#setShiftX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveText"},{"id":4689,"kind":2048,"name":"setShiftY","url":"classes/StaveText.html#setShiftY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveText"},{"id":4690,"kind":2048,"name":"setText","url":"classes/StaveText.html#setText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveText"},{"id":4691,"kind":2048,"name":"draw","url":"classes/StaveText.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveText"},{"id":4692,"kind":2048,"name":"getPosition","url":"classes/StaveText.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4693,"kind":2048,"name":"setPosition","url":"classes/StaveText.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4694,"kind":2048,"name":"getStave","url":"classes/StaveText.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4695,"kind":2048,"name":"checkStave","url":"classes/StaveText.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4696,"kind":2048,"name":"setStave","url":"classes/StaveText.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4697,"kind":2048,"name":"getWidth","url":"classes/StaveText.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4698,"kind":2048,"name":"setWidth","url":"classes/StaveText.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4699,"kind":2048,"name":"getX","url":"classes/StaveText.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4700,"kind":2048,"name":"setX","url":"classes/StaveText.html#setX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4701,"kind":2048,"name":"placeGlyphOnLine","url":"classes/StaveText.html#placeGlyphOnLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4702,"kind":2048,"name":"getPadding","url":"classes/StaveText.html#getPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4703,"kind":2048,"name":"setPadding","url":"classes/StaveText.html#setPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4704,"kind":2048,"name":"setLayoutMetrics","url":"classes/StaveText.html#setLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4705,"kind":2048,"name":"getLayoutMetrics","url":"classes/StaveText.html#getLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4706,"kind":2048,"name":"addChildElement","url":"classes/StaveText.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4707,"kind":2048,"name":"getCategory","url":"classes/StaveText.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4708,"kind":2048,"name":"setStyle","url":"classes/StaveText.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4709,"kind":2048,"name":"setGroupStyle","url":"classes/StaveText.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4710,"kind":2048,"name":"getStyle","url":"classes/StaveText.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4711,"kind":2048,"name":"applyStyle","url":"classes/StaveText.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4712,"kind":2048,"name":"restoreStyle","url":"classes/StaveText.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4713,"kind":2048,"name":"drawWithStyle","url":"classes/StaveText.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4714,"kind":2048,"name":"hasClass","url":"classes/StaveText.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4715,"kind":2048,"name":"addClass","url":"classes/StaveText.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4716,"kind":2048,"name":"removeClass","url":"classes/StaveText.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4717,"kind":2048,"name":"onRegister","url":"classes/StaveText.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4718,"kind":2048,"name":"isRendered","url":"classes/StaveText.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4719,"kind":2048,"name":"setRendered","url":"classes/StaveText.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4720,"kind":2048,"name":"getAttributes","url":"classes/StaveText.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4721,"kind":2048,"name":"getAttribute","url":"classes/StaveText.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4722,"kind":2048,"name":"setAttribute","url":"classes/StaveText.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4723,"kind":2048,"name":"getBoundingBox","url":"classes/StaveText.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4724,"kind":2048,"name":"getContext","url":"classes/StaveText.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4725,"kind":2048,"name":"setContext","url":"classes/StaveText.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4726,"kind":2048,"name":"checkContext","url":"classes/StaveText.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4727,"kind":262144,"name":"font","url":"classes/StaveText.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4728,"kind":2048,"name":"setFont","url":"classes/StaveText.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4729,"kind":2048,"name":"getFont","url":"classes/StaveText.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4730,"kind":2048,"name":"resetFont","url":"classes/StaveText.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4731,"kind":262144,"name":"fontInfo","url":"classes/StaveText.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4732,"kind":2048,"name":"setFontSize","url":"classes/StaveText.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4733,"kind":2048,"name":"getFontSize","url":"classes/StaveText.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4734,"kind":262144,"name":"fontSize","url":"classes/StaveText.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4735,"kind":262144,"name":"fontSizeInPoints","url":"classes/StaveText.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4736,"kind":262144,"name":"fontSizeInPixels","url":"classes/StaveText.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4737,"kind":262144,"name":"fontStyle","url":"classes/StaveText.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4738,"kind":262144,"name":"fontWeight","url":"classes/StaveText.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4739,"kind":256,"name":"TieNotes","url":"interfaces/TieNotes.html","classes":"tsd-kind-interface"},{"id":4740,"kind":1024,"name":"first_note","url":"interfaces/TieNotes.html#first_note","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TieNotes"},{"id":4741,"kind":1024,"name":"last_note","url":"interfaces/TieNotes.html#last_note","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TieNotes"},{"id":4742,"kind":1024,"name":"first_indices","url":"interfaces/TieNotes.html#first_indices","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TieNotes"},{"id":4743,"kind":1024,"name":"last_indices","url":"interfaces/TieNotes.html#last_indices","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TieNotes"},{"id":4744,"kind":128,"name":"StaveTie","url":"classes/StaveTie.html","classes":"tsd-kind-class"},{"id":4745,"kind":262144,"name":"CATEGORY","url":"classes/StaveTie.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveTie"},{"id":4746,"kind":1024,"name":"TEXT_FONT","url":"classes/StaveTie.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveTie"},{"id":4747,"kind":512,"name":"constructor","url":"classes/StaveTie.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"StaveTie"},{"id":4748,"kind":1024,"name":"render_options","url":"classes/StaveTie.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StaveTie"},{"id":4749,"kind":65536,"name":"__type","url":"classes/StaveTie.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"StaveTie"},{"id":4750,"kind":1024,"name":"cp2","url":"classes/StaveTie.html#__type.cp2","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveTie.__type"},{"id":4751,"kind":1024,"name":"last_x_shift","url":"classes/StaveTie.html#__type.last_x_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveTie.__type"},{"id":4752,"kind":1024,"name":"tie_spacing","url":"classes/StaveTie.html#__type.tie_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveTie.__type"},{"id":4753,"kind":1024,"name":"cp1","url":"classes/StaveTie.html#__type.cp1","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveTie.__type"},{"id":4754,"kind":1024,"name":"first_x_shift","url":"classes/StaveTie.html#__type.first_x_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveTie.__type"},{"id":4755,"kind":1024,"name":"text_shift_x","url":"classes/StaveTie.html#__type.text_shift_x","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveTie.__type"},{"id":4756,"kind":1024,"name":"y_shift","url":"classes/StaveTie.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveTie.__type"},{"id":4757,"kind":2048,"name":"setDirection","url":"classes/StaveTie.html#setDirection","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveTie"},{"id":4758,"kind":2048,"name":"setNotes","url":"classes/StaveTie.html#setNotes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveTie"},{"id":4759,"kind":2048,"name":"isPartial","url":"classes/StaveTie.html#isPartial","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveTie"},{"id":4760,"kind":2048,"name":"renderTie","url":"classes/StaveTie.html#renderTie","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveTie"},{"id":4761,"kind":2048,"name":"renderText","url":"classes/StaveTie.html#renderText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveTie"},{"id":4762,"kind":2048,"name":"draw","url":"classes/StaveTie.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveTie"},{"id":4763,"kind":2048,"name":"addChildElement","url":"classes/StaveTie.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4764,"kind":2048,"name":"getCategory","url":"classes/StaveTie.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4765,"kind":2048,"name":"setStyle","url":"classes/StaveTie.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4766,"kind":2048,"name":"setGroupStyle","url":"classes/StaveTie.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4767,"kind":2048,"name":"getStyle","url":"classes/StaveTie.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4768,"kind":2048,"name":"applyStyle","url":"classes/StaveTie.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4769,"kind":2048,"name":"restoreStyle","url":"classes/StaveTie.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4770,"kind":2048,"name":"drawWithStyle","url":"classes/StaveTie.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4771,"kind":2048,"name":"hasClass","url":"classes/StaveTie.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4772,"kind":2048,"name":"addClass","url":"classes/StaveTie.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4773,"kind":2048,"name":"removeClass","url":"classes/StaveTie.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4774,"kind":2048,"name":"onRegister","url":"classes/StaveTie.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4775,"kind":2048,"name":"isRendered","url":"classes/StaveTie.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4776,"kind":2048,"name":"setRendered","url":"classes/StaveTie.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4777,"kind":2048,"name":"getAttributes","url":"classes/StaveTie.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4778,"kind":2048,"name":"getAttribute","url":"classes/StaveTie.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4779,"kind":2048,"name":"setAttribute","url":"classes/StaveTie.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4780,"kind":2048,"name":"getBoundingBox","url":"classes/StaveTie.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4781,"kind":2048,"name":"getContext","url":"classes/StaveTie.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4782,"kind":2048,"name":"setContext","url":"classes/StaveTie.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4783,"kind":2048,"name":"checkContext","url":"classes/StaveTie.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4784,"kind":262144,"name":"font","url":"classes/StaveTie.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4785,"kind":2048,"name":"setFont","url":"classes/StaveTie.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4786,"kind":2048,"name":"getFont","url":"classes/StaveTie.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4787,"kind":2048,"name":"resetFont","url":"classes/StaveTie.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4788,"kind":262144,"name":"fontInfo","url":"classes/StaveTie.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4789,"kind":2048,"name":"setFontSize","url":"classes/StaveTie.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4790,"kind":2048,"name":"getFontSize","url":"classes/StaveTie.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4791,"kind":262144,"name":"fontSize","url":"classes/StaveTie.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4792,"kind":262144,"name":"fontSizeInPoints","url":"classes/StaveTie.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4793,"kind":262144,"name":"fontSizeInPixels","url":"classes/StaveTie.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4794,"kind":262144,"name":"fontStyle","url":"classes/StaveTie.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4795,"kind":262144,"name":"fontWeight","url":"classes/StaveTie.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4796,"kind":8,"name":"VoltaType","url":"enums/VoltaType.html","classes":"tsd-kind-enum"},{"id":4797,"kind":16,"name":"NONE","url":"enums/VoltaType.html#NONE","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VoltaType"},{"id":4798,"kind":16,"name":"BEGIN","url":"enums/VoltaType.html#BEGIN","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VoltaType"},{"id":4799,"kind":16,"name":"MID","url":"enums/VoltaType.html#MID","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VoltaType"},{"id":4800,"kind":16,"name":"END","url":"enums/VoltaType.html#END","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VoltaType"},{"id":4801,"kind":16,"name":"BEGIN_END","url":"enums/VoltaType.html#BEGIN_END","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VoltaType"},{"id":4802,"kind":128,"name":"Volta","url":"classes/Volta.html","classes":"tsd-kind-class"},{"id":4803,"kind":262144,"name":"CATEGORY","url":"classes/Volta.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Volta"},{"id":4804,"kind":262144,"name":"type","url":"classes/Volta.html#type","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Volta"},{"id":4805,"kind":1024,"name":"TEXT_FONT","url":"classes/Volta.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Volta"},{"id":4806,"kind":262144,"name":"Position","url":"classes/Volta.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Volta"},{"id":4807,"kind":512,"name":"constructor","url":"classes/Volta.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Volta"},{"id":4808,"kind":2048,"name":"setShiftY","url":"classes/Volta.html#setShiftY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Volta"},{"id":4809,"kind":2048,"name":"draw","url":"classes/Volta.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Volta"},{"id":4810,"kind":2048,"name":"getPosition","url":"classes/Volta.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4811,"kind":2048,"name":"setPosition","url":"classes/Volta.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4812,"kind":2048,"name":"getStave","url":"classes/Volta.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4813,"kind":2048,"name":"checkStave","url":"classes/Volta.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4814,"kind":2048,"name":"setStave","url":"classes/Volta.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4815,"kind":2048,"name":"getWidth","url":"classes/Volta.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4816,"kind":2048,"name":"setWidth","url":"classes/Volta.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4817,"kind":2048,"name":"getX","url":"classes/Volta.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4818,"kind":2048,"name":"setX","url":"classes/Volta.html#setX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4819,"kind":2048,"name":"placeGlyphOnLine","url":"classes/Volta.html#placeGlyphOnLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4820,"kind":2048,"name":"getPadding","url":"classes/Volta.html#getPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4821,"kind":2048,"name":"setPadding","url":"classes/Volta.html#setPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4822,"kind":2048,"name":"setLayoutMetrics","url":"classes/Volta.html#setLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4823,"kind":2048,"name":"getLayoutMetrics","url":"classes/Volta.html#getLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4824,"kind":2048,"name":"addChildElement","url":"classes/Volta.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4825,"kind":2048,"name":"getCategory","url":"classes/Volta.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4826,"kind":2048,"name":"setStyle","url":"classes/Volta.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4827,"kind":2048,"name":"setGroupStyle","url":"classes/Volta.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4828,"kind":2048,"name":"getStyle","url":"classes/Volta.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4829,"kind":2048,"name":"applyStyle","url":"classes/Volta.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4830,"kind":2048,"name":"restoreStyle","url":"classes/Volta.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4831,"kind":2048,"name":"drawWithStyle","url":"classes/Volta.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4832,"kind":2048,"name":"hasClass","url":"classes/Volta.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4833,"kind":2048,"name":"addClass","url":"classes/Volta.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4834,"kind":2048,"name":"removeClass","url":"classes/Volta.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4835,"kind":2048,"name":"onRegister","url":"classes/Volta.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4836,"kind":2048,"name":"isRendered","url":"classes/Volta.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4837,"kind":2048,"name":"setRendered","url":"classes/Volta.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4838,"kind":2048,"name":"getAttributes","url":"classes/Volta.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4839,"kind":2048,"name":"getAttribute","url":"classes/Volta.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4840,"kind":2048,"name":"setAttribute","url":"classes/Volta.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4841,"kind":2048,"name":"getBoundingBox","url":"classes/Volta.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4842,"kind":2048,"name":"getContext","url":"classes/Volta.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4843,"kind":2048,"name":"setContext","url":"classes/Volta.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4844,"kind":2048,"name":"checkContext","url":"classes/Volta.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4845,"kind":262144,"name":"font","url":"classes/Volta.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4846,"kind":2048,"name":"setFont","url":"classes/Volta.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4847,"kind":2048,"name":"getFont","url":"classes/Volta.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4848,"kind":2048,"name":"resetFont","url":"classes/Volta.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4849,"kind":262144,"name":"fontInfo","url":"classes/Volta.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4850,"kind":2048,"name":"setFontSize","url":"classes/Volta.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4851,"kind":2048,"name":"getFontSize","url":"classes/Volta.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4852,"kind":262144,"name":"fontSize","url":"classes/Volta.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4853,"kind":262144,"name":"fontSizeInPoints","url":"classes/Volta.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4854,"kind":262144,"name":"fontSizeInPixels","url":"classes/Volta.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4855,"kind":262144,"name":"fontStyle","url":"classes/Volta.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4856,"kind":262144,"name":"fontWeight","url":"classes/Volta.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4857,"kind":256,"name":"StemOptions","url":"interfaces/StemOptions.html","classes":"tsd-kind-interface"},{"id":4858,"kind":1024,"name":"stem_down_y_base_offset","url":"interfaces/StemOptions.html#stem_down_y_base_offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4859,"kind":1024,"name":"stem_up_y_base_offset","url":"interfaces/StemOptions.html#stem_up_y_base_offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4860,"kind":1024,"name":"stem_down_y_offset","url":"interfaces/StemOptions.html#stem_down_y_offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4861,"kind":1024,"name":"stem_up_y_offset","url":"interfaces/StemOptions.html#stem_up_y_offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4862,"kind":1024,"name":"stemletHeight","url":"interfaces/StemOptions.html#stemletHeight","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4863,"kind":1024,"name":"isStemlet","url":"interfaces/StemOptions.html#isStemlet","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4864,"kind":1024,"name":"hide","url":"interfaces/StemOptions.html#hide","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4865,"kind":1024,"name":"stem_direction","url":"interfaces/StemOptions.html#stem_direction","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4866,"kind":1024,"name":"stem_extension","url":"interfaces/StemOptions.html#stem_extension","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4867,"kind":1024,"name":"y_bottom","url":"interfaces/StemOptions.html#y_bottom","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4868,"kind":1024,"name":"y_top","url":"interfaces/StemOptions.html#y_top","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4869,"kind":1024,"name":"x_end","url":"interfaces/StemOptions.html#x_end","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4870,"kind":1024,"name":"x_begin","url":"interfaces/StemOptions.html#x_begin","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4871,"kind":128,"name":"Stem","url":"classes/Stem.html","classes":"tsd-kind-class"},{"id":4872,"kind":1024,"name":"DEBUG","url":"classes/Stem.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Stem"},{"id":4873,"kind":262144,"name":"CATEGORY","url":"classes/Stem.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Stem"},{"id":4874,"kind":262144,"name":"UP","url":"classes/Stem.html#UP","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Stem"},{"id":4875,"kind":262144,"name":"DOWN","url":"classes/Stem.html#DOWN","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Stem"},{"id":4876,"kind":262144,"name":"WIDTH","url":"classes/Stem.html#WIDTH","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Stem"},{"id":4877,"kind":262144,"name":"HEIGHT","url":"classes/Stem.html#HEIGHT","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Stem"},{"id":4878,"kind":1024,"name":"TEXT_FONT","url":"classes/Stem.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Stem"},{"id":4879,"kind":512,"name":"constructor","url":"classes/Stem.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Stem"},{"id":4880,"kind":2048,"name":"setOptions","url":"classes/Stem.html#setOptions","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4881,"kind":2048,"name":"setNoteHeadXBounds","url":"classes/Stem.html#setNoteHeadXBounds","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4882,"kind":2048,"name":"setDirection","url":"classes/Stem.html#setDirection","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4883,"kind":2048,"name":"setExtension","url":"classes/Stem.html#setExtension","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4884,"kind":2048,"name":"getExtension","url":"classes/Stem.html#getExtension","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4885,"kind":2048,"name":"setYBounds","url":"classes/Stem.html#setYBounds","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4886,"kind":2048,"name":"getHeight","url":"classes/Stem.html#getHeight","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4887,"kind":2048,"name":"getBoundingBox","url":"classes/Stem.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Stem"},{"id":4888,"kind":2048,"name":"getExtents","url":"classes/Stem.html#getExtents","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4889,"kind":2048,"name":"setVisibility","url":"classes/Stem.html#setVisibility","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4890,"kind":2048,"name":"setStemlet","url":"classes/Stem.html#setStemlet","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4891,"kind":2048,"name":"adjustHeightForFlag","url":"classes/Stem.html#adjustHeightForFlag","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4892,"kind":2048,"name":"adjustHeightForBeam","url":"classes/Stem.html#adjustHeightForBeam","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4893,"kind":2048,"name":"draw","url":"classes/Stem.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Stem"},{"id":4894,"kind":2048,"name":"addChildElement","url":"classes/Stem.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4895,"kind":2048,"name":"getCategory","url":"classes/Stem.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4896,"kind":2048,"name":"setStyle","url":"classes/Stem.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4897,"kind":2048,"name":"setGroupStyle","url":"classes/Stem.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4898,"kind":2048,"name":"getStyle","url":"classes/Stem.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4899,"kind":2048,"name":"applyStyle","url":"classes/Stem.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4900,"kind":2048,"name":"restoreStyle","url":"classes/Stem.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4901,"kind":2048,"name":"drawWithStyle","url":"classes/Stem.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4902,"kind":2048,"name":"hasClass","url":"classes/Stem.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4903,"kind":2048,"name":"addClass","url":"classes/Stem.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4904,"kind":2048,"name":"removeClass","url":"classes/Stem.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4905,"kind":2048,"name":"onRegister","url":"classes/Stem.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4906,"kind":2048,"name":"isRendered","url":"classes/Stem.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4907,"kind":2048,"name":"setRendered","url":"classes/Stem.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4908,"kind":2048,"name":"getAttributes","url":"classes/Stem.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4909,"kind":2048,"name":"getAttribute","url":"classes/Stem.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4910,"kind":2048,"name":"setAttribute","url":"classes/Stem.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4911,"kind":2048,"name":"getContext","url":"classes/Stem.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4912,"kind":2048,"name":"setContext","url":"classes/Stem.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4913,"kind":2048,"name":"checkContext","url":"classes/Stem.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4914,"kind":262144,"name":"font","url":"classes/Stem.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4915,"kind":2048,"name":"setFont","url":"classes/Stem.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4916,"kind":2048,"name":"getFont","url":"classes/Stem.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4917,"kind":2048,"name":"resetFont","url":"classes/Stem.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4918,"kind":262144,"name":"fontInfo","url":"classes/Stem.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4919,"kind":2048,"name":"setFontSize","url":"classes/Stem.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4920,"kind":2048,"name":"getFontSize","url":"classes/Stem.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4921,"kind":262144,"name":"fontSize","url":"classes/Stem.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4922,"kind":262144,"name":"fontSizeInPoints","url":"classes/Stem.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4923,"kind":262144,"name":"fontSizeInPixels","url":"classes/Stem.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4924,"kind":262144,"name":"fontStyle","url":"classes/Stem.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4925,"kind":262144,"name":"fontWeight","url":"classes/Stem.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4926,"kind":128,"name":"StemmableNote","url":"classes/StemmableNote.html","classes":"tsd-kind-class"},{"id":4927,"kind":262144,"name":"CATEGORY","url":"classes/StemmableNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StemmableNote"},{"id":4928,"kind":2048,"name":"plotMetrics","url":"classes/StemmableNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"StemmableNote"},{"id":4929,"kind":1024,"name":"TEXT_FONT","url":"classes/StemmableNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"StemmableNote"},{"id":4930,"kind":512,"name":"constructor","url":"classes/StemmableNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"StemmableNote"},{"id":4931,"kind":1024,"name":"stem_direction","url":"classes/StemmableNote.html#stem_direction","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StemmableNote"},{"id":4932,"kind":1024,"name":"stem","url":"classes/StemmableNote.html#stem","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StemmableNote"},{"id":4933,"kind":2048,"name":"getStem","url":"classes/StemmableNote.html#getStem","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4934,"kind":2048,"name":"checkStem","url":"classes/StemmableNote.html#checkStem","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4935,"kind":2048,"name":"setStem","url":"classes/StemmableNote.html#setStem","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4936,"kind":2048,"name":"buildStem","url":"classes/StemmableNote.html#buildStem","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4937,"kind":2048,"name":"buildFlag","url":"classes/StemmableNote.html#buildFlag","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4938,"kind":2048,"name":"getBaseCustomNoteHeadGlyph","url":"classes/StemmableNote.html#getBaseCustomNoteHeadGlyph","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4939,"kind":2048,"name":"getStemLength","url":"classes/StemmableNote.html#getStemLength","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4940,"kind":2048,"name":"getBeamCount","url":"classes/StemmableNote.html#getBeamCount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4941,"kind":2048,"name":"getStemMinimumLength","url":"classes/StemmableNote.html#getStemMinimumLength","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4942,"kind":2048,"name":"getStemDirection","url":"classes/StemmableNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StemmableNote"},{"id":4943,"kind":2048,"name":"setStemDirection","url":"classes/StemmableNote.html#setStemDirection","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4944,"kind":2048,"name":"getStemX","url":"classes/StemmableNote.html#getStemX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4945,"kind":2048,"name":"getCenterGlyphX","url":"classes/StemmableNote.html#getCenterGlyphX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4946,"kind":2048,"name":"getStemExtension","url":"classes/StemmableNote.html#getStemExtension","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4947,"kind":2048,"name":"setStemLength","url":"classes/StemmableNote.html#setStemLength","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4948,"kind":2048,"name":"getStemExtents","url":"classes/StemmableNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StemmableNote"},{"id":4949,"kind":2048,"name":"getYForTopText","url":"classes/StemmableNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StemmableNote"},{"id":4950,"kind":2048,"name":"getYForBottomText","url":"classes/StemmableNote.html#getYForBottomText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4951,"kind":2048,"name":"hasFlag","url":"classes/StemmableNote.html#hasFlag","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4952,"kind":2048,"name":"postFormat","url":"classes/StemmableNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StemmableNote"},{"id":4953,"kind":2048,"name":"drawStem","url":"classes/StemmableNote.html#drawStem","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4954,"kind":1024,"name":"glyph","url":"classes/StemmableNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4955,"kind":1024,"name":"keys","url":"classes/StemmableNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4956,"kind":1024,"name":"keyProps","url":"classes/StemmableNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4957,"kind":1024,"name":"render_options","url":"classes/StemmableNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4958,"kind":65536,"name":"__type","url":"classes/StemmableNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"StemmableNote"},{"id":4959,"kind":1024,"name":"draw_stem_through_stave","url":"classes/StemmableNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":4960,"kind":1024,"name":"draw","url":"classes/StemmableNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":4961,"kind":1024,"name":"draw_dots","url":"classes/StemmableNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":4962,"kind":1024,"name":"draw_stem","url":"classes/StemmableNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":4963,"kind":1024,"name":"y_shift","url":"classes/StemmableNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":4964,"kind":1024,"name":"extend_left","url":"classes/StemmableNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":4965,"kind":1024,"name":"extend_right","url":"classes/StemmableNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":4966,"kind":1024,"name":"glyph_font_scale","url":"classes/StemmableNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":4967,"kind":1024,"name":"annotation_spacing","url":"classes/StemmableNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":4968,"kind":1024,"name":"glyph_font_size","url":"classes/StemmableNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":4969,"kind":1024,"name":"scale","url":"classes/StemmableNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":4970,"kind":1024,"name":"font","url":"classes/StemmableNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":4971,"kind":1024,"name":"stroke_px","url":"classes/StemmableNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":4972,"kind":2048,"name":"getPlayNote","url":"classes/StemmableNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4973,"kind":2048,"name":"setPlayNote","url":"classes/StemmableNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4974,"kind":2048,"name":"isRest","url":"classes/StemmableNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4975,"kind":2048,"name":"addStroke","url":"classes/StemmableNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4976,"kind":2048,"name":"getStave","url":"classes/StemmableNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4977,"kind":2048,"name":"checkStave","url":"classes/StemmableNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4978,"kind":2048,"name":"setStave","url":"classes/StemmableNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4979,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/StemmableNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4980,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/StemmableNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4981,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/StemmableNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4982,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/StemmableNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4983,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/StemmableNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4984,"kind":2048,"name":"getLineNumber","url":"classes/StemmableNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4985,"kind":2048,"name":"getLineForRest","url":"classes/StemmableNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4986,"kind":2048,"name":"getGlyph","url":"classes/StemmableNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4987,"kind":2048,"name":"getGlyphWidth","url":"classes/StemmableNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4988,"kind":2048,"name":"setYs","url":"classes/StemmableNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4989,"kind":2048,"name":"getYs","url":"classes/StemmableNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4990,"kind":2048,"name":"getVoice","url":"classes/StemmableNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4991,"kind":2048,"name":"setVoice","url":"classes/StemmableNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4992,"kind":2048,"name":"getTickContext","url":"classes/StemmableNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4993,"kind":2048,"name":"setTickContext","url":"classes/StemmableNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4994,"kind":2048,"name":"getDuration","url":"classes/StemmableNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4995,"kind":2048,"name":"isDotted","url":"classes/StemmableNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4996,"kind":2048,"name":"hasStem","url":"classes/StemmableNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4997,"kind":2048,"name":"getNoteType","url":"classes/StemmableNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4998,"kind":2048,"name":"getBeam","url":"classes/StemmableNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":4999,"kind":2048,"name":"checkBeam","url":"classes/StemmableNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5000,"kind":2048,"name":"hasBeam","url":"classes/StemmableNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5001,"kind":2048,"name":"setBeam","url":"classes/StemmableNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5002,"kind":2048,"name":"addModifier","url":"classes/StemmableNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5003,"kind":2048,"name":"getModifiersByType","url":"classes/StemmableNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5004,"kind":2048,"name":"getModifierStartXY","url":"classes/StemmableNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5005,"kind":2048,"name":"getRightParenthesisPx","url":"classes/StemmableNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5006,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/StemmableNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5007,"kind":2048,"name":"getFirstDotPx","url":"classes/StemmableNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5008,"kind":2048,"name":"getMetrics","url":"classes/StemmableNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5009,"kind":2048,"name":"getAbsoluteX","url":"classes/StemmableNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5010,"kind":2048,"name":"getTieRightX","url":"classes/StemmableNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5011,"kind":2048,"name":"getTieLeftX","url":"classes/StemmableNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5012,"kind":2048,"name":"getKeys","url":"classes/StemmableNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5013,"kind":2048,"name":"getKeyProps","url":"classes/StemmableNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5014,"kind":2048,"name":"reset","url":"classes/StemmableNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5015,"kind":2048,"name":"getTicks","url":"classes/StemmableNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5016,"kind":2048,"name":"setIgnoreTicks","url":"classes/StemmableNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5017,"kind":2048,"name":"setWidth","url":"classes/StemmableNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5018,"kind":2048,"name":"getWidth","url":"classes/StemmableNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5019,"kind":2048,"name":"setXShift","url":"classes/StemmableNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5020,"kind":2048,"name":"getXShift","url":"classes/StemmableNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5021,"kind":2048,"name":"getX","url":"classes/StemmableNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5022,"kind":2048,"name":"getFormatterMetrics","url":"classes/StemmableNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5023,"kind":2048,"name":"getCenterXShift","url":"classes/StemmableNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5024,"kind":2048,"name":"setCenterXShift","url":"classes/StemmableNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5025,"kind":2048,"name":"isCenterAligned","url":"classes/StemmableNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5026,"kind":2048,"name":"setCenterAlignment","url":"classes/StemmableNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5027,"kind":2048,"name":"getTuplet","url":"classes/StemmableNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5028,"kind":2048,"name":"getTupletStack","url":"classes/StemmableNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5029,"kind":2048,"name":"resetTuplet","url":"classes/StemmableNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5030,"kind":2048,"name":"setTuplet","url":"classes/StemmableNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5031,"kind":2048,"name":"addToModifierContext","url":"classes/StemmableNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5032,"kind":2048,"name":"getModifiers","url":"classes/StemmableNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5033,"kind":2048,"name":"checkTickContext","url":"classes/StemmableNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5034,"kind":2048,"name":"preFormat","url":"classes/StemmableNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5035,"kind":262144,"name":"preFormatted","url":"classes/StemmableNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5036,"kind":262144,"name":"postFormatted","url":"classes/StemmableNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5037,"kind":2048,"name":"getIntrinsicTicks","url":"classes/StemmableNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5038,"kind":2048,"name":"setIntrinsicTicks","url":"classes/StemmableNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5039,"kind":2048,"name":"getTickMultiplier","url":"classes/StemmableNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5040,"kind":2048,"name":"applyTickMultiplier","url":"classes/StemmableNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5041,"kind":2048,"name":"setDuration","url":"classes/StemmableNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5042,"kind":2048,"name":"setModifierContext","url":"classes/StemmableNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5043,"kind":2048,"name":"getModifierContext","url":"classes/StemmableNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5044,"kind":2048,"name":"checkModifierContext","url":"classes/StemmableNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5045,"kind":2048,"name":"addChildElement","url":"classes/StemmableNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5046,"kind":2048,"name":"getCategory","url":"classes/StemmableNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5047,"kind":2048,"name":"setStyle","url":"classes/StemmableNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5048,"kind":2048,"name":"setGroupStyle","url":"classes/StemmableNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5049,"kind":2048,"name":"getStyle","url":"classes/StemmableNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5050,"kind":2048,"name":"applyStyle","url":"classes/StemmableNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5051,"kind":2048,"name":"restoreStyle","url":"classes/StemmableNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5052,"kind":2048,"name":"drawWithStyle","url":"classes/StemmableNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5053,"kind":2048,"name":"draw","url":"classes/StemmableNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5054,"kind":2048,"name":"hasClass","url":"classes/StemmableNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5055,"kind":2048,"name":"addClass","url":"classes/StemmableNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5056,"kind":2048,"name":"removeClass","url":"classes/StemmableNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5057,"kind":2048,"name":"onRegister","url":"classes/StemmableNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5058,"kind":2048,"name":"isRendered","url":"classes/StemmableNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5059,"kind":2048,"name":"setRendered","url":"classes/StemmableNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5060,"kind":2048,"name":"getAttributes","url":"classes/StemmableNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5061,"kind":2048,"name":"getAttribute","url":"classes/StemmableNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5062,"kind":2048,"name":"setAttribute","url":"classes/StemmableNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5063,"kind":2048,"name":"getBoundingBox","url":"classes/StemmableNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5064,"kind":2048,"name":"getContext","url":"classes/StemmableNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5065,"kind":2048,"name":"setContext","url":"classes/StemmableNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5066,"kind":2048,"name":"checkContext","url":"classes/StemmableNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5067,"kind":262144,"name":"font","url":"classes/StemmableNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5068,"kind":2048,"name":"setFont","url":"classes/StemmableNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5069,"kind":2048,"name":"getFont","url":"classes/StemmableNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5070,"kind":2048,"name":"resetFont","url":"classes/StemmableNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5071,"kind":262144,"name":"fontInfo","url":"classes/StemmableNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5072,"kind":2048,"name":"setFontSize","url":"classes/StemmableNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5073,"kind":2048,"name":"getFontSize","url":"classes/StemmableNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5074,"kind":262144,"name":"fontSize","url":"classes/StemmableNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5075,"kind":262144,"name":"fontSizeInPoints","url":"classes/StemmableNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5076,"kind":262144,"name":"fontSizeInPixels","url":"classes/StemmableNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5077,"kind":262144,"name":"fontStyle","url":"classes/StemmableNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5078,"kind":262144,"name":"fontWeight","url":"classes/StemmableNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5079,"kind":128,"name":"StringNumber","url":"classes/StringNumber.html","classes":"tsd-kind-class"},{"id":5080,"kind":262144,"name":"CATEGORY","url":"classes/StringNumber.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StringNumber"},{"id":5081,"kind":1024,"name":"TEXT_FONT","url":"classes/StringNumber.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StringNumber"},{"id":5082,"kind":262144,"name":"metrics","url":"classes/StringNumber.html#metrics","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"StringNumber"},{"id":5083,"kind":2048,"name":"format","url":"classes/StringNumber.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"StringNumber"},{"id":5084,"kind":262144,"name":"Position","url":"classes/StringNumber.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"StringNumber"},{"id":5085,"kind":262144,"name":"PositionString","url":"classes/StringNumber.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"StringNumber"},{"id":5086,"kind":512,"name":"constructor","url":"classes/StringNumber.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"StringNumber"},{"id":5087,"kind":2048,"name":"setLineEndType","url":"classes/StringNumber.html#setLineEndType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StringNumber"},{"id":5088,"kind":2048,"name":"setStringNumber","url":"classes/StringNumber.html#setStringNumber","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StringNumber"},{"id":5089,"kind":2048,"name":"setOffsetX","url":"classes/StringNumber.html#setOffsetX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StringNumber"},{"id":5090,"kind":2048,"name":"setOffsetY","url":"classes/StringNumber.html#setOffsetY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StringNumber"},{"id":5091,"kind":2048,"name":"setLastNote","url":"classes/StringNumber.html#setLastNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StringNumber"},{"id":5092,"kind":2048,"name":"setDashed","url":"classes/StringNumber.html#setDashed","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StringNumber"},{"id":5093,"kind":2048,"name":"setDrawCircle","url":"classes/StringNumber.html#setDrawCircle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StringNumber"},{"id":5094,"kind":2048,"name":"draw","url":"classes/StringNumber.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StringNumber"},{"id":5095,"kind":2048,"name":"getWidth","url":"classes/StringNumber.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5096,"kind":2048,"name":"setWidth","url":"classes/StringNumber.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5097,"kind":2048,"name":"getNote","url":"classes/StringNumber.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5098,"kind":2048,"name":"checkAttachedNote","url":"classes/StringNumber.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5099,"kind":2048,"name":"setNote","url":"classes/StringNumber.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5100,"kind":2048,"name":"getIndex","url":"classes/StringNumber.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5101,"kind":2048,"name":"checkIndex","url":"classes/StringNumber.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5102,"kind":2048,"name":"setIndex","url":"classes/StringNumber.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5103,"kind":2048,"name":"getModifierContext","url":"classes/StringNumber.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5104,"kind":2048,"name":"checkModifierContext","url":"classes/StringNumber.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5105,"kind":2048,"name":"setModifierContext","url":"classes/StringNumber.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5106,"kind":2048,"name":"getPosition","url":"classes/StringNumber.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5107,"kind":2048,"name":"setPosition","url":"classes/StringNumber.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5108,"kind":2048,"name":"setTextLine","url":"classes/StringNumber.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5109,"kind":2048,"name":"setYShift","url":"classes/StringNumber.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5110,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/StringNumber.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5111,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/StringNumber.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5112,"kind":2048,"name":"setXShift","url":"classes/StringNumber.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5113,"kind":2048,"name":"getXShift","url":"classes/StringNumber.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5114,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/StringNumber.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5115,"kind":2048,"name":"addChildElement","url":"classes/StringNumber.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5116,"kind":2048,"name":"getCategory","url":"classes/StringNumber.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5117,"kind":2048,"name":"setStyle","url":"classes/StringNumber.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5118,"kind":2048,"name":"setGroupStyle","url":"classes/StringNumber.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5119,"kind":2048,"name":"getStyle","url":"classes/StringNumber.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5120,"kind":2048,"name":"applyStyle","url":"classes/StringNumber.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5121,"kind":2048,"name":"restoreStyle","url":"classes/StringNumber.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5122,"kind":2048,"name":"drawWithStyle","url":"classes/StringNumber.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5123,"kind":2048,"name":"hasClass","url":"classes/StringNumber.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5124,"kind":2048,"name":"addClass","url":"classes/StringNumber.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5125,"kind":2048,"name":"removeClass","url":"classes/StringNumber.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5126,"kind":2048,"name":"onRegister","url":"classes/StringNumber.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5127,"kind":2048,"name":"isRendered","url":"classes/StringNumber.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5128,"kind":2048,"name":"setRendered","url":"classes/StringNumber.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5129,"kind":2048,"name":"getAttributes","url":"classes/StringNumber.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5130,"kind":2048,"name":"getAttribute","url":"classes/StringNumber.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5131,"kind":2048,"name":"setAttribute","url":"classes/StringNumber.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5132,"kind":2048,"name":"getBoundingBox","url":"classes/StringNumber.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5133,"kind":2048,"name":"getContext","url":"classes/StringNumber.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5134,"kind":2048,"name":"setContext","url":"classes/StringNumber.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5135,"kind":2048,"name":"checkContext","url":"classes/StringNumber.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5136,"kind":262144,"name":"font","url":"classes/StringNumber.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5137,"kind":2048,"name":"setFont","url":"classes/StringNumber.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5138,"kind":2048,"name":"getFont","url":"classes/StringNumber.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5139,"kind":2048,"name":"resetFont","url":"classes/StringNumber.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5140,"kind":262144,"name":"fontInfo","url":"classes/StringNumber.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5141,"kind":2048,"name":"setFontSize","url":"classes/StringNumber.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5142,"kind":2048,"name":"getFontSize","url":"classes/StringNumber.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5143,"kind":262144,"name":"fontSize","url":"classes/StringNumber.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5144,"kind":262144,"name":"fontSizeInPoints","url":"classes/StringNumber.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5145,"kind":262144,"name":"fontSizeInPixels","url":"classes/StringNumber.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5146,"kind":262144,"name":"fontStyle","url":"classes/StringNumber.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5147,"kind":262144,"name":"fontWeight","url":"classes/StringNumber.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5148,"kind":128,"name":"Stroke","url":"classes/Stroke.html","classes":"tsd-kind-class"},{"id":5149,"kind":262144,"name":"CATEGORY","url":"classes/Stroke.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Stroke"},{"id":5150,"kind":1024,"name":"Type","url":"classes/Stroke.html#Type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Stroke"},{"id":5151,"kind":65536,"name":"__type","url":"classes/Stroke.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Stroke"},{"id":5152,"kind":1024,"name":"BRUSH_DOWN","url":"classes/Stroke.html#__type-1.BRUSH_DOWN","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Stroke.__type"},{"id":5153,"kind":1024,"name":"BRUSH_UP","url":"classes/Stroke.html#__type-1.BRUSH_UP","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Stroke.__type"},{"id":5154,"kind":1024,"name":"ROLL_DOWN","url":"classes/Stroke.html#__type-1.ROLL_DOWN","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Stroke.__type"},{"id":5155,"kind":1024,"name":"ROLL_UP","url":"classes/Stroke.html#__type-1.ROLL_UP","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Stroke.__type"},{"id":5156,"kind":1024,"name":"RASQUEDO_DOWN","url":"classes/Stroke.html#__type-1.RASQUEDO_DOWN","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Stroke.__type"},{"id":5157,"kind":1024,"name":"RASQUEDO_UP","url":"classes/Stroke.html#__type-1.RASQUEDO_UP","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Stroke.__type"},{"id":5158,"kind":1024,"name":"ARPEGGIO_DIRECTIONLESS","url":"classes/Stroke.html#__type-1.ARPEGGIO_DIRECTIONLESS","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Stroke.__type"},{"id":5159,"kind":1024,"name":"TEXT_FONT","url":"classes/Stroke.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Stroke"},{"id":5160,"kind":2048,"name":"format","url":"classes/Stroke.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Stroke"},{"id":5161,"kind":262144,"name":"Position","url":"classes/Stroke.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Stroke"},{"id":5162,"kind":262144,"name":"PositionString","url":"classes/Stroke.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Stroke"},{"id":5163,"kind":512,"name":"constructor","url":"classes/Stroke.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Stroke"},{"id":5164,"kind":1024,"name":"render_options","url":"classes/Stroke.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Stroke"},{"id":5165,"kind":65536,"name":"__type","url":"classes/Stroke.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Stroke"},{"id":5166,"kind":1024,"name":"font_scale","url":"classes/Stroke.html#__type.font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Stroke.__type"},{"id":5167,"kind":2048,"name":"getPosition","url":"classes/Stroke.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Stroke"},{"id":5168,"kind":2048,"name":"addEndNote","url":"classes/Stroke.html#addEndNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stroke"},{"id":5169,"kind":2048,"name":"draw","url":"classes/Stroke.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Stroke"},{"id":5170,"kind":2048,"name":"getWidth","url":"classes/Stroke.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5171,"kind":2048,"name":"setWidth","url":"classes/Stroke.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5172,"kind":2048,"name":"getNote","url":"classes/Stroke.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5173,"kind":2048,"name":"checkAttachedNote","url":"classes/Stroke.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5174,"kind":2048,"name":"setNote","url":"classes/Stroke.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5175,"kind":2048,"name":"getIndex","url":"classes/Stroke.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5176,"kind":2048,"name":"checkIndex","url":"classes/Stroke.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5177,"kind":2048,"name":"setIndex","url":"classes/Stroke.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5178,"kind":2048,"name":"getModifierContext","url":"classes/Stroke.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5179,"kind":2048,"name":"checkModifierContext","url":"classes/Stroke.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5180,"kind":2048,"name":"setModifierContext","url":"classes/Stroke.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5181,"kind":2048,"name":"setPosition","url":"classes/Stroke.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5182,"kind":2048,"name":"setTextLine","url":"classes/Stroke.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5183,"kind":2048,"name":"setYShift","url":"classes/Stroke.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5184,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/Stroke.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5185,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/Stroke.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5186,"kind":2048,"name":"setXShift","url":"classes/Stroke.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5187,"kind":2048,"name":"getXShift","url":"classes/Stroke.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5188,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/Stroke.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5189,"kind":2048,"name":"addChildElement","url":"classes/Stroke.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5190,"kind":2048,"name":"getCategory","url":"classes/Stroke.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5191,"kind":2048,"name":"setStyle","url":"classes/Stroke.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5192,"kind":2048,"name":"setGroupStyle","url":"classes/Stroke.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5193,"kind":2048,"name":"getStyle","url":"classes/Stroke.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5194,"kind":2048,"name":"applyStyle","url":"classes/Stroke.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5195,"kind":2048,"name":"restoreStyle","url":"classes/Stroke.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5196,"kind":2048,"name":"drawWithStyle","url":"classes/Stroke.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5197,"kind":2048,"name":"hasClass","url":"classes/Stroke.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5198,"kind":2048,"name":"addClass","url":"classes/Stroke.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5199,"kind":2048,"name":"removeClass","url":"classes/Stroke.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5200,"kind":2048,"name":"onRegister","url":"classes/Stroke.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5201,"kind":2048,"name":"isRendered","url":"classes/Stroke.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5202,"kind":2048,"name":"setRendered","url":"classes/Stroke.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5203,"kind":2048,"name":"getAttributes","url":"classes/Stroke.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5204,"kind":2048,"name":"getAttribute","url":"classes/Stroke.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5205,"kind":2048,"name":"setAttribute","url":"classes/Stroke.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5206,"kind":2048,"name":"getBoundingBox","url":"classes/Stroke.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5207,"kind":2048,"name":"getContext","url":"classes/Stroke.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5208,"kind":2048,"name":"setContext","url":"classes/Stroke.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5209,"kind":2048,"name":"checkContext","url":"classes/Stroke.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5210,"kind":262144,"name":"font","url":"classes/Stroke.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5211,"kind":2048,"name":"setFont","url":"classes/Stroke.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5212,"kind":2048,"name":"getFont","url":"classes/Stroke.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5213,"kind":2048,"name":"resetFont","url":"classes/Stroke.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5214,"kind":262144,"name":"fontInfo","url":"classes/Stroke.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5215,"kind":2048,"name":"setFontSize","url":"classes/Stroke.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5216,"kind":2048,"name":"getFontSize","url":"classes/Stroke.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5217,"kind":262144,"name":"fontSize","url":"classes/Stroke.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5218,"kind":262144,"name":"fontSizeInPoints","url":"classes/Stroke.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5219,"kind":262144,"name":"fontSizeInPixels","url":"classes/Stroke.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5220,"kind":262144,"name":"fontStyle","url":"classes/Stroke.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5221,"kind":262144,"name":"fontWeight","url":"classes/Stroke.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5222,"kind":4194304,"name":"Attributes","url":"modules.html#Attributes","classes":"tsd-kind-type-alias"},{"id":5223,"kind":256,"name":"State","url":"interfaces/State.html","classes":"tsd-kind-interface"},{"id":5224,"kind":1024,"name":"state","url":"interfaces/State.html#state","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"State"},{"id":5225,"kind":1024,"name":"attributes","url":"interfaces/State.html#attributes","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"State"},{"id":5226,"kind":1024,"name":"shadow_attributes","url":"interfaces/State.html#shadow_attributes","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"State"},{"id":5227,"kind":1024,"name":"lineWidth","url":"interfaces/State.html#lineWidth","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"State"},{"id":5228,"kind":128,"name":"SVGContext","url":"classes/SVGContext.html","classes":"tsd-kind-class"},{"id":5229,"kind":262144,"name":"CATEGORY","url":"classes/SVGContext.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"SVGContext"},{"id":5230,"kind":512,"name":"constructor","url":"classes/SVGContext.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5231,"kind":1024,"name":"element","url":"classes/SVGContext.html#element","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5232,"kind":1024,"name":"svg","url":"classes/SVGContext.html#svg","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5233,"kind":1024,"name":"width","url":"classes/SVGContext.html#width","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5234,"kind":1024,"name":"height","url":"classes/SVGContext.html#height","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5235,"kind":1024,"name":"path","url":"classes/SVGContext.html#path","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5236,"kind":1024,"name":"pen","url":"classes/SVGContext.html#pen","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5237,"kind":65536,"name":"__type","url":"classes/SVGContext.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"SVGContext"},{"id":5238,"kind":1024,"name":"x","url":"classes/SVGContext.html#__type.x","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"SVGContext.__type"},{"id":5239,"kind":1024,"name":"y","url":"classes/SVGContext.html#__type.y","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"SVGContext.__type"},{"id":5240,"kind":1024,"name":"lineWidth","url":"classes/SVGContext.html#lineWidth","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5241,"kind":1024,"name":"attributes","url":"classes/SVGContext.html#attributes","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5242,"kind":1024,"name":"shadow_attributes","url":"classes/SVGContext.html#shadow_attributes","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5243,"kind":1024,"name":"state","url":"classes/SVGContext.html#state","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5244,"kind":1024,"name":"state_stack","url":"classes/SVGContext.html#state_stack","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5245,"kind":1024,"name":"parent","url":"classes/SVGContext.html#parent","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5246,"kind":1024,"name":"groups","url":"classes/SVGContext.html#groups","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5247,"kind":1024,"name":"backgroundFillStyle","url":"classes/SVGContext.html#backgroundFillStyle","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5248,"kind":2048,"name":"create","url":"classes/SVGContext.html#create","classes":"tsd-kind-method tsd-parent-kind-class","parent":"SVGContext"},{"id":5249,"kind":2048,"name":"openGroup","url":"classes/SVGContext.html#openGroup","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5250,"kind":2048,"name":"closeGroup","url":"classes/SVGContext.html#closeGroup","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5251,"kind":2048,"name":"add","url":"classes/SVGContext.html#add","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5252,"kind":2048,"name":"setFillStyle","url":"classes/SVGContext.html#setFillStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5253,"kind":2048,"name":"setBackgroundFillStyle","url":"classes/SVGContext.html#setBackgroundFillStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5254,"kind":2048,"name":"setStrokeStyle","url":"classes/SVGContext.html#setStrokeStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5255,"kind":2048,"name":"setShadowColor","url":"classes/SVGContext.html#setShadowColor","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5256,"kind":2048,"name":"setShadowBlur","url":"classes/SVGContext.html#setShadowBlur","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5257,"kind":2048,"name":"setLineWidth","url":"classes/SVGContext.html#setLineWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5258,"kind":2048,"name":"setLineDash","url":"classes/SVGContext.html#setLineDash","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5259,"kind":2048,"name":"setLineCap","url":"classes/SVGContext.html#setLineCap","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5260,"kind":2048,"name":"resize","url":"classes/SVGContext.html#resize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5261,"kind":2048,"name":"scale","url":"classes/SVGContext.html#scale","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5262,"kind":2048,"name":"setViewBox","url":"classes/SVGContext.html#setViewBox","classes":"tsd-kind-method tsd-parent-kind-class","parent":"SVGContext"},{"id":5263,"kind":2048,"name":"applyAttributes","url":"classes/SVGContext.html#applyAttributes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"SVGContext"},{"id":5264,"kind":2048,"name":"clear","url":"classes/SVGContext.html#clear","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5265,"kind":2048,"name":"rect","url":"classes/SVGContext.html#rect","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5266,"kind":2048,"name":"fillRect","url":"classes/SVGContext.html#fillRect","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5267,"kind":2048,"name":"clearRect","url":"classes/SVGContext.html#clearRect","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5268,"kind":2048,"name":"beginPath","url":"classes/SVGContext.html#beginPath","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5269,"kind":2048,"name":"moveTo","url":"classes/SVGContext.html#moveTo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5270,"kind":2048,"name":"lineTo","url":"classes/SVGContext.html#lineTo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5271,"kind":2048,"name":"bezierCurveTo","url":"classes/SVGContext.html#bezierCurveTo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5272,"kind":2048,"name":"quadraticCurveTo","url":"classes/SVGContext.html#quadraticCurveTo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5273,"kind":2048,"name":"arc","url":"classes/SVGContext.html#arc","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5274,"kind":2048,"name":"closePath","url":"classes/SVGContext.html#closePath","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5275,"kind":2048,"name":"fill","url":"classes/SVGContext.html#fill","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5276,"kind":2048,"name":"stroke","url":"classes/SVGContext.html#stroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5277,"kind":2048,"name":"measureText","url":"classes/SVGContext.html#measureText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5278,"kind":2048,"name":"fillText","url":"classes/SVGContext.html#fillText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5279,"kind":2048,"name":"save","url":"classes/SVGContext.html#save","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5280,"kind":2048,"name":"restore","url":"classes/SVGContext.html#restore","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5281,"kind":262144,"name":"fillStyle","url":"classes/SVGContext.html#fillStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5282,"kind":262144,"name":"strokeStyle","url":"classes/SVGContext.html#strokeStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5283,"kind":2048,"name":"setFont","url":"classes/SVGContext.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5284,"kind":2048,"name":"getFont","url":"classes/SVGContext.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5285,"kind":262144,"name":"font","url":"classes/SVGContext.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"SVGContext"},{"id":5286,"kind":2048,"name":"setRawFont","url":"classes/SVGContext.html#setRawFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"SVGContext"},{"id":5287,"kind":256,"name":"SystemFormatterOptions","url":"interfaces/SystemFormatterOptions.html","classes":"tsd-kind-interface"},{"id":5288,"kind":1024,"name":"alpha","url":"interfaces/SystemFormatterOptions.html#alpha","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemFormatterOptions"},{"id":5289,"kind":1024,"name":"softmaxFactor","url":"interfaces/SystemFormatterOptions.html#softmaxFactor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"SystemFormatterOptions"},{"id":5290,"kind":1024,"name":"globalSoftmax","url":"interfaces/SystemFormatterOptions.html#globalSoftmax","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"SystemFormatterOptions"},{"id":5291,"kind":1024,"name":"maxIterations","url":"interfaces/SystemFormatterOptions.html#maxIterations","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"SystemFormatterOptions"},{"id":5292,"kind":256,"name":"SystemStave","url":"interfaces/SystemStave.html","classes":"tsd-kind-interface"},{"id":5293,"kind":1024,"name":"voices","url":"interfaces/SystemStave.html#voices","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemStave"},{"id":5294,"kind":1024,"name":"stave","url":"interfaces/SystemStave.html#stave","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemStave"},{"id":5295,"kind":1024,"name":"noJustification","url":"interfaces/SystemStave.html#noJustification","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemStave"},{"id":5296,"kind":1024,"name":"options","url":"interfaces/SystemStave.html#options","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemStave"},{"id":5297,"kind":1024,"name":"spaceAbove","url":"interfaces/SystemStave.html#spaceAbove","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemStave"},{"id":5298,"kind":1024,"name":"spaceBelow","url":"interfaces/SystemStave.html#spaceBelow","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemStave"},{"id":5299,"kind":1024,"name":"debugNoteMetrics","url":"interfaces/SystemStave.html#debugNoteMetrics","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemStave"},{"id":5300,"kind":256,"name":"SystemOptions","url":"interfaces/SystemOptions.html","classes":"tsd-kind-interface"},{"id":5301,"kind":1024,"name":"factory","url":"interfaces/SystemOptions.html#factory","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5302,"kind":1024,"name":"noPadding","url":"interfaces/SystemOptions.html#noPadding","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5303,"kind":1024,"name":"debugFormatter","url":"interfaces/SystemOptions.html#debugFormatter","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5304,"kind":1024,"name":"spaceBetweenStaves","url":"interfaces/SystemOptions.html#spaceBetweenStaves","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5305,"kind":1024,"name":"formatIterations","url":"interfaces/SystemOptions.html#formatIterations","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5306,"kind":1024,"name":"autoWidth","url":"interfaces/SystemOptions.html#autoWidth","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5307,"kind":1024,"name":"x","url":"interfaces/SystemOptions.html#x","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5308,"kind":1024,"name":"width","url":"interfaces/SystemOptions.html#width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5309,"kind":1024,"name":"y","url":"interfaces/SystemOptions.html#y","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5310,"kind":1024,"name":"details","url":"interfaces/SystemOptions.html#details","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5311,"kind":1024,"name":"formatOptions","url":"interfaces/SystemOptions.html#formatOptions","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5312,"kind":1024,"name":"noJustification","url":"interfaces/SystemOptions.html#noJustification","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5313,"kind":128,"name":"System","url":"classes/System.html","classes":"tsd-kind-class"},{"id":5314,"kind":262144,"name":"CATEGORY","url":"classes/System.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"System"},{"id":5315,"kind":1024,"name":"TEXT_FONT","url":"classes/System.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"System"},{"id":5316,"kind":512,"name":"constructor","url":"classes/System.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"System"},{"id":5317,"kind":2048,"name":"setOptions","url":"classes/System.html#setOptions","classes":"tsd-kind-method tsd-parent-kind-class","parent":"System"},{"id":5318,"kind":2048,"name":"setContext","url":"classes/System.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"System"},{"id":5319,"kind":2048,"name":"addConnector","url":"classes/System.html#addConnector","classes":"tsd-kind-method tsd-parent-kind-class","parent":"System"},{"id":5320,"kind":2048,"name":"addStave","url":"classes/System.html#addStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"System"},{"id":5321,"kind":2048,"name":"format","url":"classes/System.html#format","classes":"tsd-kind-method tsd-parent-kind-class","parent":"System"},{"id":5322,"kind":2048,"name":"draw","url":"classes/System.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"System"},{"id":5323,"kind":2048,"name":"addChildElement","url":"classes/System.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5324,"kind":2048,"name":"getCategory","url":"classes/System.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5325,"kind":2048,"name":"setStyle","url":"classes/System.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5326,"kind":2048,"name":"setGroupStyle","url":"classes/System.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5327,"kind":2048,"name":"getStyle","url":"classes/System.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5328,"kind":2048,"name":"applyStyle","url":"classes/System.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5329,"kind":2048,"name":"restoreStyle","url":"classes/System.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5330,"kind":2048,"name":"drawWithStyle","url":"classes/System.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5331,"kind":2048,"name":"hasClass","url":"classes/System.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5332,"kind":2048,"name":"addClass","url":"classes/System.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5333,"kind":2048,"name":"removeClass","url":"classes/System.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5334,"kind":2048,"name":"onRegister","url":"classes/System.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5335,"kind":2048,"name":"isRendered","url":"classes/System.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5336,"kind":2048,"name":"setRendered","url":"classes/System.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5337,"kind":2048,"name":"getAttributes","url":"classes/System.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5338,"kind":2048,"name":"getAttribute","url":"classes/System.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5339,"kind":2048,"name":"setAttribute","url":"classes/System.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5340,"kind":2048,"name":"getBoundingBox","url":"classes/System.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5341,"kind":2048,"name":"getContext","url":"classes/System.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5342,"kind":2048,"name":"checkContext","url":"classes/System.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5343,"kind":262144,"name":"font","url":"classes/System.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5344,"kind":2048,"name":"setFont","url":"classes/System.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5345,"kind":2048,"name":"getFont","url":"classes/System.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5346,"kind":2048,"name":"resetFont","url":"classes/System.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5347,"kind":262144,"name":"fontInfo","url":"classes/System.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5348,"kind":2048,"name":"setFontSize","url":"classes/System.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5349,"kind":2048,"name":"getFontSize","url":"classes/System.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5350,"kind":262144,"name":"fontSize","url":"classes/System.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5351,"kind":262144,"name":"fontSizeInPoints","url":"classes/System.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5352,"kind":262144,"name":"fontSizeInPixels","url":"classes/System.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5353,"kind":262144,"name":"fontStyle","url":"classes/System.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5354,"kind":262144,"name":"fontWeight","url":"classes/System.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5355,"kind":256,"name":"TabNotePosition","url":"interfaces/TabNotePosition.html","classes":"tsd-kind-interface"},{"id":5356,"kind":1024,"name":"str","url":"interfaces/TabNotePosition.html#str","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TabNotePosition"},{"id":5357,"kind":1024,"name":"fret","url":"interfaces/TabNotePosition.html#fret","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TabNotePosition"},{"id":5358,"kind":256,"name":"TabNoteStruct","url":"interfaces/TabNoteStruct.html","classes":"tsd-kind-interface"},{"id":5359,"kind":1024,"name":"positions","url":"interfaces/TabNoteStruct.html#positions","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TabNoteStruct"},{"id":5360,"kind":1024,"name":"stem_direction","url":"interfaces/TabNoteStruct.html#stem_direction","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5361,"kind":1024,"name":"auto_stem","url":"interfaces/TabNoteStruct.html#auto_stem","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5362,"kind":1024,"name":"stem_down_x_offset","url":"interfaces/TabNoteStruct.html#stem_down_x_offset","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5363,"kind":1024,"name":"stem_up_x_offset","url":"interfaces/TabNoteStruct.html#stem_up_x_offset","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5364,"kind":1024,"name":"stroke_px","url":"interfaces/TabNoteStruct.html#stroke_px","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5365,"kind":1024,"name":"glyph_font_scale","url":"interfaces/TabNoteStruct.html#glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5366,"kind":1024,"name":"octave_shift","url":"interfaces/TabNoteStruct.html#octave_shift","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5367,"kind":1024,"name":"clef","url":"interfaces/TabNoteStruct.html#clef","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5368,"kind":1024,"name":"keys","url":"interfaces/TabNoteStruct.html#keys","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5369,"kind":1024,"name":"duration","url":"interfaces/TabNoteStruct.html#duration","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5370,"kind":1024,"name":"line","url":"interfaces/TabNoteStruct.html#line","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5371,"kind":1024,"name":"dots","url":"interfaces/TabNoteStruct.html#dots","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5372,"kind":1024,"name":"type","url":"interfaces/TabNoteStruct.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5373,"kind":1024,"name":"align_center","url":"interfaces/TabNoteStruct.html#align_center","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5374,"kind":1024,"name":"duration_override","url":"interfaces/TabNoteStruct.html#duration_override","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5375,"kind":128,"name":"TabNote","url":"classes/TabNote.html","classes":"tsd-kind-class"},{"id":5376,"kind":262144,"name":"CATEGORY","url":"classes/TabNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TabNote"},{"id":5377,"kind":2048,"name":"plotMetrics","url":"classes/TabNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TabNote"},{"id":5378,"kind":1024,"name":"TEXT_FONT","url":"classes/TabNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TabNote"},{"id":5379,"kind":512,"name":"constructor","url":"classes/TabNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"TabNote"},{"id":5380,"kind":2048,"name":"greatestString","url":"classes/TabNote.html#greatestString","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TabNote"},{"id":5381,"kind":2048,"name":"leastString","url":"classes/TabNote.html#leastString","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TabNote"},{"id":5382,"kind":2048,"name":"reset","url":"classes/TabNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabNote"},{"id":5383,"kind":2048,"name":"setGhost","url":"classes/TabNote.html#setGhost","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TabNote"},{"id":5384,"kind":2048,"name":"hasStem","url":"classes/TabNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabNote"},{"id":5385,"kind":2048,"name":"getStemExtension","url":"classes/TabNote.html#getStemExtension","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabNote"},{"id":5386,"kind":2048,"name":"updateWidth","url":"classes/TabNote.html#updateWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TabNote"},{"id":5387,"kind":2048,"name":"setStave","url":"classes/TabNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabNote"},{"id":5388,"kind":2048,"name":"getPositions","url":"classes/TabNote.html#getPositions","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TabNote"},{"id":5389,"kind":2048,"name":"getModifierStartXY","url":"classes/TabNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabNote"},{"id":5390,"kind":2048,"name":"getLineForRest","url":"classes/TabNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabNote"},{"id":5391,"kind":2048,"name":"preFormat","url":"classes/TabNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabNote"},{"id":5392,"kind":2048,"name":"getStemX","url":"classes/TabNote.html#getStemX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabNote"},{"id":5393,"kind":2048,"name":"getStemY","url":"classes/TabNote.html#getStemY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TabNote"},{"id":5394,"kind":2048,"name":"getStemExtents","url":"classes/TabNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabNote"},{"id":5395,"kind":2048,"name":"drawFlag","url":"classes/TabNote.html#drawFlag","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TabNote"},{"id":5396,"kind":2048,"name":"drawModifiers","url":"classes/TabNote.html#drawModifiers","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TabNote"},{"id":5397,"kind":2048,"name":"drawStemThrough","url":"classes/TabNote.html#drawStemThrough","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TabNote"},{"id":5398,"kind":2048,"name":"drawPositions","url":"classes/TabNote.html#drawPositions","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TabNote"},{"id":5399,"kind":2048,"name":"draw","url":"classes/TabNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabNote"},{"id":5400,"kind":1024,"name":"stem_direction","url":"classes/TabNote.html#stem_direction","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5401,"kind":1024,"name":"stem","url":"classes/TabNote.html#stem","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5402,"kind":2048,"name":"getStem","url":"classes/TabNote.html#getStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5403,"kind":2048,"name":"checkStem","url":"classes/TabNote.html#checkStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5404,"kind":2048,"name":"setStem","url":"classes/TabNote.html#setStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5405,"kind":2048,"name":"buildStem","url":"classes/TabNote.html#buildStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5406,"kind":2048,"name":"buildFlag","url":"classes/TabNote.html#buildFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5407,"kind":2048,"name":"getBaseCustomNoteHeadGlyph","url":"classes/TabNote.html#getBaseCustomNoteHeadGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5408,"kind":2048,"name":"getStemLength","url":"classes/TabNote.html#getStemLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5409,"kind":2048,"name":"getBeamCount","url":"classes/TabNote.html#getBeamCount","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5410,"kind":2048,"name":"getStemMinimumLength","url":"classes/TabNote.html#getStemMinimumLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5411,"kind":2048,"name":"getStemDirection","url":"classes/TabNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5412,"kind":2048,"name":"setStemDirection","url":"classes/TabNote.html#setStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5413,"kind":2048,"name":"getCenterGlyphX","url":"classes/TabNote.html#getCenterGlyphX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5414,"kind":2048,"name":"setStemLength","url":"classes/TabNote.html#setStemLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5415,"kind":2048,"name":"getYForTopText","url":"classes/TabNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5416,"kind":2048,"name":"getYForBottomText","url":"classes/TabNote.html#getYForBottomText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5417,"kind":2048,"name":"hasFlag","url":"classes/TabNote.html#hasFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5418,"kind":2048,"name":"postFormat","url":"classes/TabNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5419,"kind":2048,"name":"drawStem","url":"classes/TabNote.html#drawStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5420,"kind":1024,"name":"glyph","url":"classes/TabNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5421,"kind":1024,"name":"keys","url":"classes/TabNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5422,"kind":1024,"name":"keyProps","url":"classes/TabNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5423,"kind":1024,"name":"render_options","url":"classes/TabNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5424,"kind":65536,"name":"__type","url":"classes/TabNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"TabNote"},{"id":5425,"kind":1024,"name":"draw_stem_through_stave","url":"classes/TabNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5426,"kind":1024,"name":"draw","url":"classes/TabNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5427,"kind":1024,"name":"draw_dots","url":"classes/TabNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5428,"kind":1024,"name":"draw_stem","url":"classes/TabNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5429,"kind":1024,"name":"y_shift","url":"classes/TabNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5430,"kind":1024,"name":"extend_left","url":"classes/TabNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5431,"kind":1024,"name":"extend_right","url":"classes/TabNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5432,"kind":1024,"name":"glyph_font_scale","url":"classes/TabNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5433,"kind":1024,"name":"annotation_spacing","url":"classes/TabNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5434,"kind":1024,"name":"glyph_font_size","url":"classes/TabNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5435,"kind":1024,"name":"scale","url":"classes/TabNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5436,"kind":1024,"name":"font","url":"classes/TabNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5437,"kind":1024,"name":"stroke_px","url":"classes/TabNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5438,"kind":2048,"name":"getPlayNote","url":"classes/TabNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5439,"kind":2048,"name":"setPlayNote","url":"classes/TabNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5440,"kind":2048,"name":"isRest","url":"classes/TabNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5441,"kind":2048,"name":"addStroke","url":"classes/TabNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5442,"kind":2048,"name":"getStave","url":"classes/TabNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5443,"kind":2048,"name":"checkStave","url":"classes/TabNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5444,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/TabNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5445,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/TabNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5446,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/TabNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5447,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/TabNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5448,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/TabNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5449,"kind":2048,"name":"getLineNumber","url":"classes/TabNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5450,"kind":2048,"name":"getGlyph","url":"classes/TabNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5451,"kind":2048,"name":"getGlyphWidth","url":"classes/TabNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5452,"kind":2048,"name":"setYs","url":"classes/TabNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5453,"kind":2048,"name":"getYs","url":"classes/TabNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5454,"kind":2048,"name":"getVoice","url":"classes/TabNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5455,"kind":2048,"name":"setVoice","url":"classes/TabNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5456,"kind":2048,"name":"getTickContext","url":"classes/TabNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5457,"kind":2048,"name":"setTickContext","url":"classes/TabNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5458,"kind":2048,"name":"getDuration","url":"classes/TabNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5459,"kind":2048,"name":"isDotted","url":"classes/TabNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5460,"kind":2048,"name":"getNoteType","url":"classes/TabNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5461,"kind":2048,"name":"getBeam","url":"classes/TabNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5462,"kind":2048,"name":"checkBeam","url":"classes/TabNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5463,"kind":2048,"name":"hasBeam","url":"classes/TabNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5464,"kind":2048,"name":"setBeam","url":"classes/TabNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5465,"kind":2048,"name":"addModifier","url":"classes/TabNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5466,"kind":2048,"name":"getModifiersByType","url":"classes/TabNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5467,"kind":2048,"name":"getRightParenthesisPx","url":"classes/TabNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5468,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/TabNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5469,"kind":2048,"name":"getFirstDotPx","url":"classes/TabNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5470,"kind":2048,"name":"getMetrics","url":"classes/TabNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5471,"kind":2048,"name":"getAbsoluteX","url":"classes/TabNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5472,"kind":2048,"name":"getTieRightX","url":"classes/TabNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5473,"kind":2048,"name":"getTieLeftX","url":"classes/TabNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5474,"kind":2048,"name":"getKeys","url":"classes/TabNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5475,"kind":2048,"name":"getKeyProps","url":"classes/TabNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5476,"kind":2048,"name":"getTicks","url":"classes/TabNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5477,"kind":2048,"name":"setIgnoreTicks","url":"classes/TabNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5478,"kind":2048,"name":"setWidth","url":"classes/TabNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5479,"kind":2048,"name":"getWidth","url":"classes/TabNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5480,"kind":2048,"name":"setXShift","url":"classes/TabNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5481,"kind":2048,"name":"getXShift","url":"classes/TabNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5482,"kind":2048,"name":"getX","url":"classes/TabNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5483,"kind":2048,"name":"getFormatterMetrics","url":"classes/TabNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5484,"kind":2048,"name":"getCenterXShift","url":"classes/TabNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5485,"kind":2048,"name":"setCenterXShift","url":"classes/TabNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5486,"kind":2048,"name":"isCenterAligned","url":"classes/TabNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5487,"kind":2048,"name":"setCenterAlignment","url":"classes/TabNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5488,"kind":2048,"name":"getTuplet","url":"classes/TabNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5489,"kind":2048,"name":"getTupletStack","url":"classes/TabNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5490,"kind":2048,"name":"resetTuplet","url":"classes/TabNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5491,"kind":2048,"name":"setTuplet","url":"classes/TabNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5492,"kind":2048,"name":"addToModifierContext","url":"classes/TabNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5493,"kind":2048,"name":"getModifiers","url":"classes/TabNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5494,"kind":2048,"name":"checkTickContext","url":"classes/TabNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5495,"kind":262144,"name":"preFormatted","url":"classes/TabNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5496,"kind":262144,"name":"postFormatted","url":"classes/TabNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5497,"kind":2048,"name":"getIntrinsicTicks","url":"classes/TabNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5498,"kind":2048,"name":"setIntrinsicTicks","url":"classes/TabNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5499,"kind":2048,"name":"getTickMultiplier","url":"classes/TabNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5500,"kind":2048,"name":"applyTickMultiplier","url":"classes/TabNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5501,"kind":2048,"name":"setDuration","url":"classes/TabNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5502,"kind":2048,"name":"setModifierContext","url":"classes/TabNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5503,"kind":2048,"name":"getModifierContext","url":"classes/TabNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5504,"kind":2048,"name":"checkModifierContext","url":"classes/TabNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5505,"kind":2048,"name":"addChildElement","url":"classes/TabNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5506,"kind":2048,"name":"getCategory","url":"classes/TabNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5507,"kind":2048,"name":"setStyle","url":"classes/TabNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5508,"kind":2048,"name":"setGroupStyle","url":"classes/TabNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5509,"kind":2048,"name":"getStyle","url":"classes/TabNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5510,"kind":2048,"name":"applyStyle","url":"classes/TabNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5511,"kind":2048,"name":"restoreStyle","url":"classes/TabNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5512,"kind":2048,"name":"drawWithStyle","url":"classes/TabNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5513,"kind":2048,"name":"hasClass","url":"classes/TabNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5514,"kind":2048,"name":"addClass","url":"classes/TabNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5515,"kind":2048,"name":"removeClass","url":"classes/TabNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5516,"kind":2048,"name":"onRegister","url":"classes/TabNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5517,"kind":2048,"name":"isRendered","url":"classes/TabNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5518,"kind":2048,"name":"setRendered","url":"classes/TabNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5519,"kind":2048,"name":"getAttributes","url":"classes/TabNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5520,"kind":2048,"name":"getAttribute","url":"classes/TabNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5521,"kind":2048,"name":"setAttribute","url":"classes/TabNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5522,"kind":2048,"name":"getBoundingBox","url":"classes/TabNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5523,"kind":2048,"name":"getContext","url":"classes/TabNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5524,"kind":2048,"name":"setContext","url":"classes/TabNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5525,"kind":2048,"name":"checkContext","url":"classes/TabNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5526,"kind":262144,"name":"font","url":"classes/TabNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5527,"kind":2048,"name":"setFont","url":"classes/TabNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5528,"kind":2048,"name":"getFont","url":"classes/TabNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5529,"kind":2048,"name":"resetFont","url":"classes/TabNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5530,"kind":262144,"name":"fontInfo","url":"classes/TabNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5531,"kind":2048,"name":"setFontSize","url":"classes/TabNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5532,"kind":2048,"name":"getFontSize","url":"classes/TabNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5533,"kind":262144,"name":"fontSize","url":"classes/TabNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5534,"kind":262144,"name":"fontSizeInPoints","url":"classes/TabNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5535,"kind":262144,"name":"fontSizeInPixels","url":"classes/TabNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5536,"kind":262144,"name":"fontStyle","url":"classes/TabNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5537,"kind":262144,"name":"fontWeight","url":"classes/TabNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5538,"kind":128,"name":"TabSlide","url":"classes/TabSlide.html","classes":"tsd-kind-class"},{"id":5539,"kind":262144,"name":"CATEGORY","url":"classes/TabSlide.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TabSlide"},{"id":5540,"kind":1024,"name":"TEXT_FONT","url":"classes/TabSlide.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TabSlide"},{"id":5541,"kind":262144,"name":"SLIDE_UP","url":"classes/TabSlide.html#SLIDE_UP","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"TabSlide"},{"id":5542,"kind":262144,"name":"SLIDE_DOWN","url":"classes/TabSlide.html#SLIDE_DOWN","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"TabSlide"},{"id":5543,"kind":2048,"name":"createSlideUp","url":"classes/TabSlide.html#createSlideUp","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"TabSlide"},{"id":5544,"kind":2048,"name":"createSlideDown","url":"classes/TabSlide.html#createSlideDown","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"TabSlide"},{"id":5545,"kind":2048,"name":"createHammeron","url":"classes/TabSlide.html#createHammeron","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TabSlide"},{"id":5546,"kind":2048,"name":"createPulloff","url":"classes/TabSlide.html#createPulloff","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TabSlide"},{"id":5547,"kind":512,"name":"constructor","url":"classes/TabSlide.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"TabSlide"},{"id":5548,"kind":2048,"name":"renderTie","url":"classes/TabSlide.html#renderTie","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabSlide"},{"id":5549,"kind":1024,"name":"render_options","url":"classes/TabSlide.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5550,"kind":65536,"name":"__type","url":"classes/TabSlide.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"TabSlide"},{"id":5551,"kind":1024,"name":"cp2","url":"classes/TabSlide.html#__type.cp2","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabSlide.__type"},{"id":5552,"kind":1024,"name":"last_x_shift","url":"classes/TabSlide.html#__type.last_x_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabSlide.__type"},{"id":5553,"kind":1024,"name":"tie_spacing","url":"classes/TabSlide.html#__type.tie_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabSlide.__type"},{"id":5554,"kind":1024,"name":"cp1","url":"classes/TabSlide.html#__type.cp1","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabSlide.__type"},{"id":5555,"kind":1024,"name":"first_x_shift","url":"classes/TabSlide.html#__type.first_x_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabSlide.__type"},{"id":5556,"kind":1024,"name":"text_shift_x","url":"classes/TabSlide.html#__type.text_shift_x","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabSlide.__type"},{"id":5557,"kind":1024,"name":"y_shift","url":"classes/TabSlide.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabSlide.__type"},{"id":5558,"kind":2048,"name":"setDirection","url":"classes/TabSlide.html#setDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5559,"kind":2048,"name":"setNotes","url":"classes/TabSlide.html#setNotes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5560,"kind":2048,"name":"isPartial","url":"classes/TabSlide.html#isPartial","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5561,"kind":2048,"name":"renderText","url":"classes/TabSlide.html#renderText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5562,"kind":2048,"name":"draw","url":"classes/TabSlide.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5563,"kind":2048,"name":"addChildElement","url":"classes/TabSlide.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5564,"kind":2048,"name":"getCategory","url":"classes/TabSlide.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5565,"kind":2048,"name":"setStyle","url":"classes/TabSlide.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5566,"kind":2048,"name":"setGroupStyle","url":"classes/TabSlide.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5567,"kind":2048,"name":"getStyle","url":"classes/TabSlide.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5568,"kind":2048,"name":"applyStyle","url":"classes/TabSlide.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5569,"kind":2048,"name":"restoreStyle","url":"classes/TabSlide.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5570,"kind":2048,"name":"drawWithStyle","url":"classes/TabSlide.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5571,"kind":2048,"name":"hasClass","url":"classes/TabSlide.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5572,"kind":2048,"name":"addClass","url":"classes/TabSlide.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5573,"kind":2048,"name":"removeClass","url":"classes/TabSlide.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5574,"kind":2048,"name":"onRegister","url":"classes/TabSlide.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5575,"kind":2048,"name":"isRendered","url":"classes/TabSlide.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5576,"kind":2048,"name":"setRendered","url":"classes/TabSlide.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5577,"kind":2048,"name":"getAttributes","url":"classes/TabSlide.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5578,"kind":2048,"name":"getAttribute","url":"classes/TabSlide.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5579,"kind":2048,"name":"setAttribute","url":"classes/TabSlide.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5580,"kind":2048,"name":"getBoundingBox","url":"classes/TabSlide.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5581,"kind":2048,"name":"getContext","url":"classes/TabSlide.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5582,"kind":2048,"name":"setContext","url":"classes/TabSlide.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5583,"kind":2048,"name":"checkContext","url":"classes/TabSlide.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5584,"kind":262144,"name":"font","url":"classes/TabSlide.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5585,"kind":2048,"name":"setFont","url":"classes/TabSlide.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5586,"kind":2048,"name":"getFont","url":"classes/TabSlide.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5587,"kind":2048,"name":"resetFont","url":"classes/TabSlide.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5588,"kind":262144,"name":"fontInfo","url":"classes/TabSlide.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5589,"kind":2048,"name":"setFontSize","url":"classes/TabSlide.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5590,"kind":2048,"name":"getFontSize","url":"classes/TabSlide.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5591,"kind":262144,"name":"fontSize","url":"classes/TabSlide.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5592,"kind":262144,"name":"fontSizeInPoints","url":"classes/TabSlide.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5593,"kind":262144,"name":"fontSizeInPixels","url":"classes/TabSlide.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5594,"kind":262144,"name":"fontStyle","url":"classes/TabSlide.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5595,"kind":262144,"name":"fontWeight","url":"classes/TabSlide.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5596,"kind":128,"name":"TabStave","url":"classes/TabStave.html","classes":"tsd-kind-class"},{"id":5597,"kind":262144,"name":"CATEGORY","url":"classes/TabStave.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TabStave"},{"id":5598,"kind":1024,"name":"TEXT_FONT","url":"classes/TabStave.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TabStave"},{"id":5599,"kind":262144,"name":"defaultPadding","url":"classes/TabStave.html#defaultPadding","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TabStave"},{"id":5600,"kind":262144,"name":"rightPadding","url":"classes/TabStave.html#rightPadding","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TabStave"},{"id":5601,"kind":2048,"name":"formatBegModifiers","url":"classes/TabStave.html#formatBegModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TabStave"},{"id":5602,"kind":512,"name":"constructor","url":"classes/TabStave.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"TabStave"},{"id":5603,"kind":2048,"name":"getYForGlyphs","url":"classes/TabStave.html#getYForGlyphs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabStave"},{"id":5604,"kind":2048,"name":"addTabGlyph","url":"classes/TabStave.html#addTabGlyph","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TabStave"},{"id":5605,"kind":1024,"name":"options","url":"classes/TabStave.html#options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5606,"kind":2048,"name":"setDefaultLedgerLineStyle","url":"classes/TabStave.html#setDefaultLedgerLineStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5607,"kind":2048,"name":"getDefaultLedgerLineStyle","url":"classes/TabStave.html#getDefaultLedgerLineStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5608,"kind":2048,"name":"space","url":"classes/TabStave.html#space","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5609,"kind":2048,"name":"resetLines","url":"classes/TabStave.html#resetLines","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5610,"kind":2048,"name":"setNoteStartX","url":"classes/TabStave.html#setNoteStartX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5611,"kind":2048,"name":"getNoteStartX","url":"classes/TabStave.html#getNoteStartX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5612,"kind":2048,"name":"getNoteEndX","url":"classes/TabStave.html#getNoteEndX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5613,"kind":2048,"name":"getTieStartX","url":"classes/TabStave.html#getTieStartX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5614,"kind":2048,"name":"getTieEndX","url":"classes/TabStave.html#getTieEndX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5615,"kind":2048,"name":"getX","url":"classes/TabStave.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5616,"kind":2048,"name":"getNumLines","url":"classes/TabStave.html#getNumLines","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5617,"kind":2048,"name":"setNumLines","url":"classes/TabStave.html#setNumLines","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5618,"kind":2048,"name":"setY","url":"classes/TabStave.html#setY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5619,"kind":2048,"name":"getY","url":"classes/TabStave.html#getY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5620,"kind":2048,"name":"getTopLineTopY","url":"classes/TabStave.html#getTopLineTopY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5621,"kind":2048,"name":"getBottomLineBottomY","url":"classes/TabStave.html#getBottomLineBottomY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5622,"kind":2048,"name":"setX","url":"classes/TabStave.html#setX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5623,"kind":2048,"name":"setWidth","url":"classes/TabStave.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5624,"kind":2048,"name":"getWidth","url":"classes/TabStave.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5625,"kind":2048,"name":"getStyle","url":"classes/TabStave.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5626,"kind":2048,"name":"setMeasure","url":"classes/TabStave.html#setMeasure","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5627,"kind":2048,"name":"getModifierXShift","url":"classes/TabStave.html#getModifierXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5628,"kind":2048,"name":"setRepetitionType","url":"classes/TabStave.html#setRepetitionType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5629,"kind":2048,"name":"setVoltaType","url":"classes/TabStave.html#setVoltaType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5630,"kind":2048,"name":"setSection","url":"classes/TabStave.html#setSection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5631,"kind":2048,"name":"setTempo","url":"classes/TabStave.html#setTempo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5632,"kind":2048,"name":"setText","url":"classes/TabStave.html#setText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5633,"kind":2048,"name":"getHeight","url":"classes/TabStave.html#getHeight","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5634,"kind":2048,"name":"getSpacingBetweenLines","url":"classes/TabStave.html#getSpacingBetweenLines","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5635,"kind":2048,"name":"getBoundingBox","url":"classes/TabStave.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5636,"kind":2048,"name":"getBottomY","url":"classes/TabStave.html#getBottomY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5637,"kind":2048,"name":"getBottomLineY","url":"classes/TabStave.html#getBottomLineY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5638,"kind":2048,"name":"getYForLine","url":"classes/TabStave.html#getYForLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5639,"kind":2048,"name":"getLineForY","url":"classes/TabStave.html#getLineForY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5640,"kind":2048,"name":"getYForTopText","url":"classes/TabStave.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5641,"kind":2048,"name":"getYForBottomText","url":"classes/TabStave.html#getYForBottomText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5642,"kind":2048,"name":"getYForNote","url":"classes/TabStave.html#getYForNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5643,"kind":2048,"name":"addModifier","url":"classes/TabStave.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5644,"kind":2048,"name":"addEndModifier","url":"classes/TabStave.html#addEndModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5645,"kind":2048,"name":"setBegBarType","url":"classes/TabStave.html#setBegBarType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5646,"kind":2048,"name":"setEndBarType","url":"classes/TabStave.html#setEndBarType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5647,"kind":2048,"name":"setClef","url":"classes/TabStave.html#setClef","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5648,"kind":2048,"name":"getClef","url":"classes/TabStave.html#getClef","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5649,"kind":2048,"name":"setEndClef","url":"classes/TabStave.html#setEndClef","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5650,"kind":2048,"name":"getEndClef","url":"classes/TabStave.html#getEndClef","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5651,"kind":2048,"name":"setKeySignature","url":"classes/TabStave.html#setKeySignature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5652,"kind":2048,"name":"setEndKeySignature","url":"classes/TabStave.html#setEndKeySignature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5653,"kind":2048,"name":"setTimeSignature","url":"classes/TabStave.html#setTimeSignature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5654,"kind":2048,"name":"setEndTimeSignature","url":"classes/TabStave.html#setEndTimeSignature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5655,"kind":2048,"name":"addKeySignature","url":"classes/TabStave.html#addKeySignature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5656,"kind":2048,"name":"addClef","url":"classes/TabStave.html#addClef","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5657,"kind":2048,"name":"addEndClef","url":"classes/TabStave.html#addEndClef","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5658,"kind":2048,"name":"addTimeSignature","url":"classes/TabStave.html#addTimeSignature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5659,"kind":2048,"name":"addEndTimeSignature","url":"classes/TabStave.html#addEndTimeSignature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5660,"kind":2048,"name":"addTrebleGlyph","url":"classes/TabStave.html#addTrebleGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5661,"kind":2048,"name":"getModifiers","url":"classes/TabStave.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5662,"kind":2048,"name":"sortByCategory","url":"classes/TabStave.html#sortByCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5663,"kind":2048,"name":"format","url":"classes/TabStave.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5664,"kind":2048,"name":"draw","url":"classes/TabStave.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5665,"kind":2048,"name":"getVerticalBarWidth","url":"classes/TabStave.html#getVerticalBarWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5666,"kind":2048,"name":"getConfigForLines","url":"classes/TabStave.html#getConfigForLines","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5667,"kind":2048,"name":"setConfigForLine","url":"classes/TabStave.html#setConfigForLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5668,"kind":2048,"name":"setConfigForLines","url":"classes/TabStave.html#setConfigForLines","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5669,"kind":2048,"name":"addChildElement","url":"classes/TabStave.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5670,"kind":2048,"name":"getCategory","url":"classes/TabStave.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5671,"kind":2048,"name":"setStyle","url":"classes/TabStave.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5672,"kind":2048,"name":"setGroupStyle","url":"classes/TabStave.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5673,"kind":2048,"name":"applyStyle","url":"classes/TabStave.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5674,"kind":2048,"name":"restoreStyle","url":"classes/TabStave.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5675,"kind":2048,"name":"drawWithStyle","url":"classes/TabStave.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5676,"kind":2048,"name":"hasClass","url":"classes/TabStave.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5677,"kind":2048,"name":"addClass","url":"classes/TabStave.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5678,"kind":2048,"name":"removeClass","url":"classes/TabStave.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5679,"kind":2048,"name":"onRegister","url":"classes/TabStave.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5680,"kind":2048,"name":"isRendered","url":"classes/TabStave.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5681,"kind":2048,"name":"setRendered","url":"classes/TabStave.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5682,"kind":2048,"name":"getAttributes","url":"classes/TabStave.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5683,"kind":2048,"name":"getAttribute","url":"classes/TabStave.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5684,"kind":2048,"name":"setAttribute","url":"classes/TabStave.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5685,"kind":2048,"name":"getContext","url":"classes/TabStave.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5686,"kind":2048,"name":"setContext","url":"classes/TabStave.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5687,"kind":2048,"name":"checkContext","url":"classes/TabStave.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5688,"kind":262144,"name":"font","url":"classes/TabStave.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5689,"kind":2048,"name":"setFont","url":"classes/TabStave.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5690,"kind":2048,"name":"getFont","url":"classes/TabStave.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5691,"kind":2048,"name":"resetFont","url":"classes/TabStave.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5692,"kind":262144,"name":"fontInfo","url":"classes/TabStave.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5693,"kind":2048,"name":"setFontSize","url":"classes/TabStave.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5694,"kind":2048,"name":"getFontSize","url":"classes/TabStave.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5695,"kind":262144,"name":"fontSize","url":"classes/TabStave.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5696,"kind":262144,"name":"fontSizeInPoints","url":"classes/TabStave.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5697,"kind":262144,"name":"fontSizeInPixels","url":"classes/TabStave.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5698,"kind":262144,"name":"fontStyle","url":"classes/TabStave.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5699,"kind":262144,"name":"fontWeight","url":"classes/TabStave.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5700,"kind":128,"name":"TabTie","url":"classes/TabTie.html","classes":"tsd-kind-class"},{"id":5701,"kind":262144,"name":"CATEGORY","url":"classes/TabTie.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TabTie"},{"id":5702,"kind":2048,"name":"createHammeron","url":"classes/TabTie.html#createHammeron","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"TabTie"},{"id":5703,"kind":2048,"name":"createPulloff","url":"classes/TabTie.html#createPulloff","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"TabTie"},{"id":5704,"kind":1024,"name":"TEXT_FONT","url":"classes/TabTie.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TabTie"},{"id":5705,"kind":512,"name":"constructor","url":"classes/TabTie.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"TabTie"},{"id":5706,"kind":1024,"name":"render_options","url":"classes/TabTie.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5707,"kind":65536,"name":"__type","url":"classes/TabTie.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"TabTie"},{"id":5708,"kind":1024,"name":"cp2","url":"classes/TabTie.html#__type.cp2","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabTie.__type"},{"id":5709,"kind":1024,"name":"last_x_shift","url":"classes/TabTie.html#__type.last_x_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabTie.__type"},{"id":5710,"kind":1024,"name":"tie_spacing","url":"classes/TabTie.html#__type.tie_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabTie.__type"},{"id":5711,"kind":1024,"name":"cp1","url":"classes/TabTie.html#__type.cp1","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabTie.__type"},{"id":5712,"kind":1024,"name":"first_x_shift","url":"classes/TabTie.html#__type.first_x_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabTie.__type"},{"id":5713,"kind":1024,"name":"text_shift_x","url":"classes/TabTie.html#__type.text_shift_x","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabTie.__type"},{"id":5714,"kind":1024,"name":"y_shift","url":"classes/TabTie.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabTie.__type"},{"id":5715,"kind":2048,"name":"setDirection","url":"classes/TabTie.html#setDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5716,"kind":2048,"name":"setNotes","url":"classes/TabTie.html#setNotes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5717,"kind":2048,"name":"isPartial","url":"classes/TabTie.html#isPartial","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5718,"kind":2048,"name":"renderTie","url":"classes/TabTie.html#renderTie","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5719,"kind":2048,"name":"renderText","url":"classes/TabTie.html#renderText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5720,"kind":2048,"name":"draw","url":"classes/TabTie.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5721,"kind":2048,"name":"addChildElement","url":"classes/TabTie.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5722,"kind":2048,"name":"getCategory","url":"classes/TabTie.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5723,"kind":2048,"name":"setStyle","url":"classes/TabTie.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5724,"kind":2048,"name":"setGroupStyle","url":"classes/TabTie.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5725,"kind":2048,"name":"getStyle","url":"classes/TabTie.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5726,"kind":2048,"name":"applyStyle","url":"classes/TabTie.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5727,"kind":2048,"name":"restoreStyle","url":"classes/TabTie.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5728,"kind":2048,"name":"drawWithStyle","url":"classes/TabTie.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5729,"kind":2048,"name":"hasClass","url":"classes/TabTie.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5730,"kind":2048,"name":"addClass","url":"classes/TabTie.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5731,"kind":2048,"name":"removeClass","url":"classes/TabTie.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5732,"kind":2048,"name":"onRegister","url":"classes/TabTie.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5733,"kind":2048,"name":"isRendered","url":"classes/TabTie.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5734,"kind":2048,"name":"setRendered","url":"classes/TabTie.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5735,"kind":2048,"name":"getAttributes","url":"classes/TabTie.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5736,"kind":2048,"name":"getAttribute","url":"classes/TabTie.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5737,"kind":2048,"name":"setAttribute","url":"classes/TabTie.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5738,"kind":2048,"name":"getBoundingBox","url":"classes/TabTie.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5739,"kind":2048,"name":"getContext","url":"classes/TabTie.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5740,"kind":2048,"name":"setContext","url":"classes/TabTie.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5741,"kind":2048,"name":"checkContext","url":"classes/TabTie.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5742,"kind":262144,"name":"font","url":"classes/TabTie.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5743,"kind":2048,"name":"setFont","url":"classes/TabTie.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5744,"kind":2048,"name":"getFont","url":"classes/TabTie.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5745,"kind":2048,"name":"resetFont","url":"classes/TabTie.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5746,"kind":262144,"name":"fontInfo","url":"classes/TabTie.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5747,"kind":2048,"name":"setFontSize","url":"classes/TabTie.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5748,"kind":2048,"name":"getFontSize","url":"classes/TabTie.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5749,"kind":262144,"name":"fontSize","url":"classes/TabTie.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5750,"kind":262144,"name":"fontSizeInPoints","url":"classes/TabTie.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5751,"kind":262144,"name":"fontSizeInPixels","url":"classes/TabTie.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5752,"kind":262144,"name":"fontStyle","url":"classes/TabTie.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5753,"kind":262144,"name":"fontWeight","url":"classes/TabTie.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5754,"kind":256,"name":"TextBracketParams","url":"interfaces/TextBracketParams.html","classes":"tsd-kind-interface"},{"id":5755,"kind":1024,"name":"start","url":"interfaces/TextBracketParams.html#start","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextBracketParams"},{"id":5756,"kind":1024,"name":"stop","url":"interfaces/TextBracketParams.html#stop","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextBracketParams"},{"id":5757,"kind":1024,"name":"text","url":"interfaces/TextBracketParams.html#text","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextBracketParams"},{"id":5758,"kind":1024,"name":"superscript","url":"interfaces/TextBracketParams.html#superscript","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextBracketParams"},{"id":5759,"kind":1024,"name":"position","url":"interfaces/TextBracketParams.html#position","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextBracketParams"},{"id":5760,"kind":8,"name":"TextBracketPosition","url":"enums/TextBracketPosition.html","classes":"tsd-kind-enum"},{"id":5761,"kind":16,"name":"TOP","url":"enums/TextBracketPosition.html#TOP","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"TextBracketPosition"},{"id":5762,"kind":16,"name":"BOTTOM","url":"enums/TextBracketPosition.html#BOTTOM","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"TextBracketPosition"},{"id":5763,"kind":128,"name":"TextBracket","url":"classes/TextBracket.html","classes":"tsd-kind-class"},{"id":5764,"kind":1024,"name":"DEBUG","url":"classes/TextBracket.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"TextBracket"},{"id":5765,"kind":262144,"name":"CATEGORY","url":"classes/TextBracket.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TextBracket"},{"id":5766,"kind":1024,"name":"TEXT_FONT","url":"classes/TextBracket.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TextBracket"},{"id":5767,"kind":262144,"name":"Position","url":"classes/TextBracket.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"TextBracket"},{"id":5768,"kind":262144,"name":"PositionString","url":"classes/TextBracket.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"TextBracket"},{"id":5769,"kind":262144,"name":"Positions","url":"classes/TextBracket.html#Positions","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"TextBracket"},{"id":5770,"kind":262144,"name":"PositionsString","url":"classes/TextBracket.html#PositionsString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"TextBracket"},{"id":5771,"kind":512,"name":"constructor","url":"classes/TextBracket.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"TextBracket"},{"id":5772,"kind":1024,"name":"render_options","url":"classes/TextBracket.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TextBracket"},{"id":5773,"kind":65536,"name":"__type","url":"classes/TextBracket.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"TextBracket"},{"id":5774,"kind":1024,"name":"dashed","url":"classes/TextBracket.html#__type.dashed","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextBracket.__type"},{"id":5775,"kind":1024,"name":"color","url":"classes/TextBracket.html#__type.color","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextBracket.__type"},{"id":5776,"kind":1024,"name":"line_width","url":"classes/TextBracket.html#__type.line_width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextBracket.__type"},{"id":5777,"kind":1024,"name":"underline_superscript","url":"classes/TextBracket.html#__type.underline_superscript","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextBracket.__type"},{"id":5778,"kind":1024,"name":"show_bracket","url":"classes/TextBracket.html#__type.show_bracket","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextBracket.__type"},{"id":5779,"kind":1024,"name":"dash","url":"classes/TextBracket.html#__type.dash","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextBracket.__type"},{"id":5780,"kind":1024,"name":"bracket_height","url":"classes/TextBracket.html#__type.bracket_height","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextBracket.__type"},{"id":5781,"kind":1024,"name":"position","url":"classes/TextBracket.html#position","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TextBracket"},{"id":5782,"kind":1024,"name":"start","url":"classes/TextBracket.html#start","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TextBracket"},{"id":5783,"kind":1024,"name":"stop","url":"classes/TextBracket.html#stop","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TextBracket"},{"id":5784,"kind":2048,"name":"applyStyle","url":"classes/TextBracket.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TextBracket"},{"id":5785,"kind":2048,"name":"setDashed","url":"classes/TextBracket.html#setDashed","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextBracket"},{"id":5786,"kind":2048,"name":"setLine","url":"classes/TextBracket.html#setLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextBracket"},{"id":5787,"kind":2048,"name":"draw","url":"classes/TextBracket.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TextBracket"},{"id":5788,"kind":2048,"name":"addChildElement","url":"classes/TextBracket.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5789,"kind":2048,"name":"getCategory","url":"classes/TextBracket.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5790,"kind":2048,"name":"setStyle","url":"classes/TextBracket.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5791,"kind":2048,"name":"setGroupStyle","url":"classes/TextBracket.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5792,"kind":2048,"name":"getStyle","url":"classes/TextBracket.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5793,"kind":2048,"name":"restoreStyle","url":"classes/TextBracket.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5794,"kind":2048,"name":"drawWithStyle","url":"classes/TextBracket.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5795,"kind":2048,"name":"hasClass","url":"classes/TextBracket.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5796,"kind":2048,"name":"addClass","url":"classes/TextBracket.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5797,"kind":2048,"name":"removeClass","url":"classes/TextBracket.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5798,"kind":2048,"name":"onRegister","url":"classes/TextBracket.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5799,"kind":2048,"name":"isRendered","url":"classes/TextBracket.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5800,"kind":2048,"name":"setRendered","url":"classes/TextBracket.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5801,"kind":2048,"name":"getAttributes","url":"classes/TextBracket.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5802,"kind":2048,"name":"getAttribute","url":"classes/TextBracket.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5803,"kind":2048,"name":"setAttribute","url":"classes/TextBracket.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5804,"kind":2048,"name":"getBoundingBox","url":"classes/TextBracket.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5805,"kind":2048,"name":"getContext","url":"classes/TextBracket.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5806,"kind":2048,"name":"setContext","url":"classes/TextBracket.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5807,"kind":2048,"name":"checkContext","url":"classes/TextBracket.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5808,"kind":262144,"name":"font","url":"classes/TextBracket.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5809,"kind":2048,"name":"setFont","url":"classes/TextBracket.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5810,"kind":2048,"name":"getFont","url":"classes/TextBracket.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5811,"kind":2048,"name":"resetFont","url":"classes/TextBracket.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5812,"kind":262144,"name":"fontInfo","url":"classes/TextBracket.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5813,"kind":2048,"name":"setFontSize","url":"classes/TextBracket.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5814,"kind":2048,"name":"getFontSize","url":"classes/TextBracket.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5815,"kind":262144,"name":"fontSize","url":"classes/TextBracket.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5816,"kind":262144,"name":"fontSizeInPoints","url":"classes/TextBracket.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5817,"kind":262144,"name":"fontSizeInPixels","url":"classes/TextBracket.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5818,"kind":262144,"name":"fontStyle","url":"classes/TextBracket.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5819,"kind":262144,"name":"fontWeight","url":"classes/TextBracket.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5820,"kind":128,"name":"TextDynamics","url":"classes/TextDynamics.html","classes":"tsd-kind-class"},{"id":5821,"kind":1024,"name":"DEBUG","url":"classes/TextDynamics.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"TextDynamics"},{"id":5822,"kind":262144,"name":"CATEGORY","url":"classes/TextDynamics.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TextDynamics"},{"id":5823,"kind":262144,"name":"GLYPHS","url":"classes/TextDynamics.html#GLYPHS","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"TextDynamics"},{"id":5824,"kind":2048,"name":"plotMetrics","url":"classes/TextDynamics.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TextDynamics"},{"id":5825,"kind":1024,"name":"TEXT_FONT","url":"classes/TextDynamics.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TextDynamics"},{"id":5826,"kind":512,"name":"constructor","url":"classes/TextDynamics.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"TextDynamics"},{"id":5827,"kind":2048,"name":"setLine","url":"classes/TextDynamics.html#setLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextDynamics"},{"id":5828,"kind":2048,"name":"preFormat","url":"classes/TextDynamics.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TextDynamics"},{"id":5829,"kind":2048,"name":"draw","url":"classes/TextDynamics.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TextDynamics"},{"id":5830,"kind":1024,"name":"glyph","url":"classes/TextDynamics.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5831,"kind":1024,"name":"keys","url":"classes/TextDynamics.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5832,"kind":1024,"name":"keyProps","url":"classes/TextDynamics.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5833,"kind":1024,"name":"render_options","url":"classes/TextDynamics.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5834,"kind":65536,"name":"__type","url":"classes/TextDynamics.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"TextDynamics"},{"id":5835,"kind":1024,"name":"draw_stem_through_stave","url":"classes/TextDynamics.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5836,"kind":1024,"name":"draw","url":"classes/TextDynamics.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5837,"kind":1024,"name":"draw_dots","url":"classes/TextDynamics.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5838,"kind":1024,"name":"draw_stem","url":"classes/TextDynamics.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5839,"kind":1024,"name":"y_shift","url":"classes/TextDynamics.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5840,"kind":1024,"name":"extend_left","url":"classes/TextDynamics.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5841,"kind":1024,"name":"extend_right","url":"classes/TextDynamics.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5842,"kind":1024,"name":"glyph_font_scale","url":"classes/TextDynamics.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5843,"kind":1024,"name":"annotation_spacing","url":"classes/TextDynamics.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5844,"kind":1024,"name":"glyph_font_size","url":"classes/TextDynamics.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5845,"kind":1024,"name":"scale","url":"classes/TextDynamics.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5846,"kind":1024,"name":"font","url":"classes/TextDynamics.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5847,"kind":1024,"name":"stroke_px","url":"classes/TextDynamics.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5848,"kind":2048,"name":"getPlayNote","url":"classes/TextDynamics.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5849,"kind":2048,"name":"setPlayNote","url":"classes/TextDynamics.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5850,"kind":2048,"name":"isRest","url":"classes/TextDynamics.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5851,"kind":2048,"name":"addStroke","url":"classes/TextDynamics.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5852,"kind":2048,"name":"getStave","url":"classes/TextDynamics.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5853,"kind":2048,"name":"checkStave","url":"classes/TextDynamics.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5854,"kind":2048,"name":"setStave","url":"classes/TextDynamics.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5855,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/TextDynamics.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5856,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/TextDynamics.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5857,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/TextDynamics.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5858,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/TextDynamics.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5859,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/TextDynamics.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5860,"kind":2048,"name":"getLineNumber","url":"classes/TextDynamics.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5861,"kind":2048,"name":"getLineForRest","url":"classes/TextDynamics.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5862,"kind":2048,"name":"getGlyph","url":"classes/TextDynamics.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5863,"kind":2048,"name":"getGlyphWidth","url":"classes/TextDynamics.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5864,"kind":2048,"name":"setYs","url":"classes/TextDynamics.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5865,"kind":2048,"name":"getYs","url":"classes/TextDynamics.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5866,"kind":2048,"name":"getYForTopText","url":"classes/TextDynamics.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5867,"kind":2048,"name":"getVoice","url":"classes/TextDynamics.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5868,"kind":2048,"name":"setVoice","url":"classes/TextDynamics.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5869,"kind":2048,"name":"getTickContext","url":"classes/TextDynamics.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5870,"kind":2048,"name":"setTickContext","url":"classes/TextDynamics.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5871,"kind":2048,"name":"getDuration","url":"classes/TextDynamics.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5872,"kind":2048,"name":"isDotted","url":"classes/TextDynamics.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5873,"kind":2048,"name":"hasStem","url":"classes/TextDynamics.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5874,"kind":2048,"name":"getNoteType","url":"classes/TextDynamics.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5875,"kind":2048,"name":"getBeam","url":"classes/TextDynamics.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5876,"kind":2048,"name":"checkBeam","url":"classes/TextDynamics.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5877,"kind":2048,"name":"hasBeam","url":"classes/TextDynamics.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5878,"kind":2048,"name":"setBeam","url":"classes/TextDynamics.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5879,"kind":2048,"name":"addModifier","url":"classes/TextDynamics.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5880,"kind":2048,"name":"getModifiersByType","url":"classes/TextDynamics.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5881,"kind":2048,"name":"getModifierStartXY","url":"classes/TextDynamics.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5882,"kind":2048,"name":"getRightParenthesisPx","url":"classes/TextDynamics.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5883,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/TextDynamics.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5884,"kind":2048,"name":"getFirstDotPx","url":"classes/TextDynamics.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5885,"kind":2048,"name":"getMetrics","url":"classes/TextDynamics.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5886,"kind":2048,"name":"getAbsoluteX","url":"classes/TextDynamics.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5887,"kind":2048,"name":"getStemDirection","url":"classes/TextDynamics.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5888,"kind":2048,"name":"getStemExtents","url":"classes/TextDynamics.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5889,"kind":2048,"name":"getTieRightX","url":"classes/TextDynamics.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5890,"kind":2048,"name":"getTieLeftX","url":"classes/TextDynamics.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5891,"kind":2048,"name":"getKeys","url":"classes/TextDynamics.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5892,"kind":2048,"name":"getKeyProps","url":"classes/TextDynamics.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5893,"kind":2048,"name":"reset","url":"classes/TextDynamics.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5894,"kind":2048,"name":"getTicks","url":"classes/TextDynamics.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5895,"kind":2048,"name":"setIgnoreTicks","url":"classes/TextDynamics.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5896,"kind":2048,"name":"setWidth","url":"classes/TextDynamics.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5897,"kind":2048,"name":"getWidth","url":"classes/TextDynamics.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5898,"kind":2048,"name":"setXShift","url":"classes/TextDynamics.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5899,"kind":2048,"name":"getXShift","url":"classes/TextDynamics.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5900,"kind":2048,"name":"getX","url":"classes/TextDynamics.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5901,"kind":2048,"name":"getFormatterMetrics","url":"classes/TextDynamics.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5902,"kind":2048,"name":"getCenterXShift","url":"classes/TextDynamics.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5903,"kind":2048,"name":"setCenterXShift","url":"classes/TextDynamics.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5904,"kind":2048,"name":"isCenterAligned","url":"classes/TextDynamics.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5905,"kind":2048,"name":"setCenterAlignment","url":"classes/TextDynamics.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5906,"kind":2048,"name":"getTuplet","url":"classes/TextDynamics.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5907,"kind":2048,"name":"getTupletStack","url":"classes/TextDynamics.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5908,"kind":2048,"name":"resetTuplet","url":"classes/TextDynamics.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5909,"kind":2048,"name":"setTuplet","url":"classes/TextDynamics.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5910,"kind":2048,"name":"addToModifierContext","url":"classes/TextDynamics.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5911,"kind":2048,"name":"getModifiers","url":"classes/TextDynamics.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5912,"kind":2048,"name":"checkTickContext","url":"classes/TextDynamics.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5913,"kind":262144,"name":"preFormatted","url":"classes/TextDynamics.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5914,"kind":2048,"name":"postFormat","url":"classes/TextDynamics.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5915,"kind":262144,"name":"postFormatted","url":"classes/TextDynamics.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5916,"kind":2048,"name":"getIntrinsicTicks","url":"classes/TextDynamics.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5917,"kind":2048,"name":"setIntrinsicTicks","url":"classes/TextDynamics.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5918,"kind":2048,"name":"getTickMultiplier","url":"classes/TextDynamics.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5919,"kind":2048,"name":"applyTickMultiplier","url":"classes/TextDynamics.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5920,"kind":2048,"name":"setDuration","url":"classes/TextDynamics.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5921,"kind":2048,"name":"setModifierContext","url":"classes/TextDynamics.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5922,"kind":2048,"name":"getModifierContext","url":"classes/TextDynamics.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5923,"kind":2048,"name":"checkModifierContext","url":"classes/TextDynamics.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5924,"kind":2048,"name":"addChildElement","url":"classes/TextDynamics.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5925,"kind":2048,"name":"getCategory","url":"classes/TextDynamics.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5926,"kind":2048,"name":"setStyle","url":"classes/TextDynamics.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5927,"kind":2048,"name":"setGroupStyle","url":"classes/TextDynamics.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5928,"kind":2048,"name":"getStyle","url":"classes/TextDynamics.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5929,"kind":2048,"name":"applyStyle","url":"classes/TextDynamics.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5930,"kind":2048,"name":"restoreStyle","url":"classes/TextDynamics.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5931,"kind":2048,"name":"drawWithStyle","url":"classes/TextDynamics.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5932,"kind":2048,"name":"hasClass","url":"classes/TextDynamics.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5933,"kind":2048,"name":"addClass","url":"classes/TextDynamics.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5934,"kind":2048,"name":"removeClass","url":"classes/TextDynamics.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5935,"kind":2048,"name":"onRegister","url":"classes/TextDynamics.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5936,"kind":2048,"name":"isRendered","url":"classes/TextDynamics.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5937,"kind":2048,"name":"setRendered","url":"classes/TextDynamics.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5938,"kind":2048,"name":"getAttributes","url":"classes/TextDynamics.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5939,"kind":2048,"name":"getAttribute","url":"classes/TextDynamics.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5940,"kind":2048,"name":"setAttribute","url":"classes/TextDynamics.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5941,"kind":2048,"name":"getBoundingBox","url":"classes/TextDynamics.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5942,"kind":2048,"name":"getContext","url":"classes/TextDynamics.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5943,"kind":2048,"name":"setContext","url":"classes/TextDynamics.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5944,"kind":2048,"name":"checkContext","url":"classes/TextDynamics.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5945,"kind":262144,"name":"font","url":"classes/TextDynamics.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5946,"kind":2048,"name":"setFont","url":"classes/TextDynamics.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5947,"kind":2048,"name":"getFont","url":"classes/TextDynamics.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5948,"kind":2048,"name":"resetFont","url":"classes/TextDynamics.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5949,"kind":262144,"name":"fontInfo","url":"classes/TextDynamics.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5950,"kind":2048,"name":"setFontSize","url":"classes/TextDynamics.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5951,"kind":2048,"name":"getFontSize","url":"classes/TextDynamics.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5952,"kind":262144,"name":"fontSize","url":"classes/TextDynamics.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5953,"kind":262144,"name":"fontSizeInPoints","url":"classes/TextDynamics.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5954,"kind":262144,"name":"fontSizeInPixels","url":"classes/TextDynamics.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5955,"kind":262144,"name":"fontStyle","url":"classes/TextDynamics.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5956,"kind":262144,"name":"fontWeight","url":"classes/TextDynamics.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5957,"kind":256,"name":"TextFormatterInfo","url":"interfaces/TextFormatterInfo.html","classes":"tsd-kind-interface"},{"id":5958,"kind":1024,"name":"family","url":"interfaces/TextFormatterInfo.html#family","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextFormatterInfo"},{"id":5959,"kind":1024,"name":"resolution","url":"interfaces/TextFormatterInfo.html#resolution","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextFormatterInfo"},{"id":5960,"kind":1024,"name":"glyphs","url":"interfaces/TextFormatterInfo.html#glyphs","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextFormatterInfo"},{"id":5961,"kind":1024,"name":"serifs","url":"interfaces/TextFormatterInfo.html#serifs","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextFormatterInfo"},{"id":5962,"kind":1024,"name":"monospaced","url":"interfaces/TextFormatterInfo.html#monospaced","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextFormatterInfo"},{"id":5963,"kind":1024,"name":"italic","url":"interfaces/TextFormatterInfo.html#italic","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextFormatterInfo"},{"id":5964,"kind":1024,"name":"bold","url":"interfaces/TextFormatterInfo.html#bold","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextFormatterInfo"},{"id":5965,"kind":1024,"name":"maxSizeGlyph","url":"interfaces/TextFormatterInfo.html#maxSizeGlyph","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextFormatterInfo"},{"id":5966,"kind":1024,"name":"superscriptOffset","url":"interfaces/TextFormatterInfo.html#superscriptOffset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextFormatterInfo"},{"id":5967,"kind":1024,"name":"subscriptOffset","url":"interfaces/TextFormatterInfo.html#subscriptOffset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextFormatterInfo"},{"id":5968,"kind":1024,"name":"description","url":"interfaces/TextFormatterInfo.html#description","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextFormatterInfo"},{"id":5969,"kind":128,"name":"TextFormatter","url":"classes/TextFormatter.html","classes":"tsd-kind-class"},{"id":5970,"kind":1024,"name":"DEBUG","url":"classes/TextFormatter.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"TextFormatter"},{"id":5971,"kind":2048,"name":"getFontFamilies","url":"classes/TextFormatter.html#getFontFamilies","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"TextFormatter"},{"id":5972,"kind":2048,"name":"create","url":"classes/TextFormatter.html#create","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"TextFormatter"},{"id":5973,"kind":2048,"name":"getInfo","url":"classes/TextFormatter.html#getInfo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"TextFormatter"},{"id":5974,"kind":2048,"name":"registerInfo","url":"classes/TextFormatter.html#registerInfo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"TextFormatter"},{"id":5975,"kind":2048,"name":"updateParams","url":"classes/TextFormatter.html#updateParams","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextFormatter"},{"id":5976,"kind":2048,"name":"updateCacheKey","url":"classes/TextFormatter.html#updateCacheKey","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextFormatter"},{"id":5977,"kind":2048,"name":"getGlyphMetrics","url":"classes/TextFormatter.html#getGlyphMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextFormatter"},{"id":5978,"kind":262144,"name":"maxHeight","url":"classes/TextFormatter.html#maxHeight","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"TextFormatter"},{"id":5979,"kind":2048,"name":"getWidthForCharacterInEm","url":"classes/TextFormatter.html#getWidthForCharacterInEm","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextFormatter"},{"id":5980,"kind":2048,"name":"getWidthForTextInEm","url":"classes/TextFormatter.html#getWidthForTextInEm","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextFormatter"},{"id":5981,"kind":2048,"name":"getWidthForTextInPx","url":"classes/TextFormatter.html#getWidthForTextInPx","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextFormatter"},{"id":5982,"kind":2048,"name":"setFontSize","url":"classes/TextFormatter.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextFormatter"},{"id":5983,"kind":262144,"name":"fontSizeInPixels","url":"classes/TextFormatter.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"TextFormatter"},{"id":5984,"kind":2048,"name":"getResolution","url":"classes/TextFormatter.html#getResolution","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextFormatter"},{"id":5985,"kind":8,"name":"TextJustification","url":"enums/TextJustification.html","classes":"tsd-kind-enum"},{"id":5986,"kind":16,"name":"LEFT","url":"enums/TextJustification.html#LEFT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"TextJustification"},{"id":5987,"kind":16,"name":"CENTER","url":"enums/TextJustification.html#CENTER","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"TextJustification"},{"id":5988,"kind":16,"name":"RIGHT","url":"enums/TextJustification.html#RIGHT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"TextJustification"},{"id":5989,"kind":256,"name":"TextNoteStruct","url":"interfaces/TextNoteStruct.html","classes":"tsd-kind-interface"},{"id":5990,"kind":1024,"name":"text","url":"interfaces/TextNoteStruct.html#text","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextNoteStruct"},{"id":5991,"kind":1024,"name":"glyph","url":"interfaces/TextNoteStruct.html#glyph","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextNoteStruct"},{"id":5992,"kind":1024,"name":"ignore_ticks","url":"interfaces/TextNoteStruct.html#ignore_ticks","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextNoteStruct"},{"id":5993,"kind":1024,"name":"smooth","url":"interfaces/TextNoteStruct.html#smooth","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextNoteStruct"},{"id":5994,"kind":1024,"name":"font","url":"interfaces/TextNoteStruct.html#font","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextNoteStruct"},{"id":5995,"kind":1024,"name":"subscript","url":"interfaces/TextNoteStruct.html#subscript","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextNoteStruct"},{"id":5996,"kind":1024,"name":"superscript","url":"interfaces/TextNoteStruct.html#superscript","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextNoteStruct"},{"id":5997,"kind":1024,"name":"keys","url":"interfaces/TextNoteStruct.html#keys","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TextNoteStruct"},{"id":5998,"kind":1024,"name":"duration","url":"interfaces/TextNoteStruct.html#duration","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TextNoteStruct"},{"id":5999,"kind":1024,"name":"line","url":"interfaces/TextNoteStruct.html#line","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TextNoteStruct"},{"id":6000,"kind":1024,"name":"dots","url":"interfaces/TextNoteStruct.html#dots","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TextNoteStruct"},{"id":6001,"kind":1024,"name":"type","url":"interfaces/TextNoteStruct.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TextNoteStruct"},{"id":6002,"kind":1024,"name":"align_center","url":"interfaces/TextNoteStruct.html#align_center","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TextNoteStruct"},{"id":6003,"kind":1024,"name":"duration_override","url":"interfaces/TextNoteStruct.html#duration_override","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TextNoteStruct"},{"id":6004,"kind":128,"name":"TextNote","url":"classes/TextNote.html","classes":"tsd-kind-class"},{"id":6005,"kind":262144,"name":"CATEGORY","url":"classes/TextNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TextNote"},{"id":6006,"kind":1024,"name":"TEXT_FONT","url":"classes/TextNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TextNote"},{"id":6007,"kind":1024,"name":"Justification","url":"classes/TextNote.html#Justification","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"TextNote"},{"id":6008,"kind":262144,"name":"GLYPHS","url":"classes/TextNote.html#GLYPHS","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"TextNote"},{"id":6009,"kind":2048,"name":"plotMetrics","url":"classes/TextNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TextNote"},{"id":6010,"kind":512,"name":"constructor","url":"classes/TextNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"TextNote"},{"id":6011,"kind":2048,"name":"setJustification","url":"classes/TextNote.html#setJustification","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextNote"},{"id":6012,"kind":2048,"name":"setLine","url":"classes/TextNote.html#setLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextNote"},{"id":6013,"kind":2048,"name":"preFormat","url":"classes/TextNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TextNote"},{"id":6014,"kind":2048,"name":"draw","url":"classes/TextNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TextNote"},{"id":6015,"kind":1024,"name":"glyph","url":"classes/TextNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6016,"kind":1024,"name":"keys","url":"classes/TextNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6017,"kind":1024,"name":"keyProps","url":"classes/TextNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6018,"kind":1024,"name":"render_options","url":"classes/TextNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6019,"kind":65536,"name":"__type","url":"classes/TextNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"TextNote"},{"id":6020,"kind":1024,"name":"draw_stem_through_stave","url":"classes/TextNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6021,"kind":1024,"name":"draw","url":"classes/TextNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6022,"kind":1024,"name":"draw_dots","url":"classes/TextNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6023,"kind":1024,"name":"draw_stem","url":"classes/TextNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6024,"kind":1024,"name":"y_shift","url":"classes/TextNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6025,"kind":1024,"name":"extend_left","url":"classes/TextNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6026,"kind":1024,"name":"extend_right","url":"classes/TextNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6027,"kind":1024,"name":"glyph_font_scale","url":"classes/TextNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6028,"kind":1024,"name":"annotation_spacing","url":"classes/TextNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6029,"kind":1024,"name":"glyph_font_size","url":"classes/TextNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6030,"kind":1024,"name":"scale","url":"classes/TextNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6031,"kind":1024,"name":"font","url":"classes/TextNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6032,"kind":1024,"name":"stroke_px","url":"classes/TextNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6033,"kind":2048,"name":"getPlayNote","url":"classes/TextNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6034,"kind":2048,"name":"setPlayNote","url":"classes/TextNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6035,"kind":2048,"name":"isRest","url":"classes/TextNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6036,"kind":2048,"name":"addStroke","url":"classes/TextNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6037,"kind":2048,"name":"getStave","url":"classes/TextNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6038,"kind":2048,"name":"checkStave","url":"classes/TextNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6039,"kind":2048,"name":"setStave","url":"classes/TextNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6040,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/TextNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6041,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/TextNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6042,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/TextNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6043,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/TextNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6044,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/TextNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6045,"kind":2048,"name":"getLineNumber","url":"classes/TextNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6046,"kind":2048,"name":"getLineForRest","url":"classes/TextNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6047,"kind":2048,"name":"getGlyph","url":"classes/TextNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6048,"kind":2048,"name":"getGlyphWidth","url":"classes/TextNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6049,"kind":2048,"name":"setYs","url":"classes/TextNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6050,"kind":2048,"name":"getYs","url":"classes/TextNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6051,"kind":2048,"name":"getYForTopText","url":"classes/TextNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6052,"kind":2048,"name":"getVoice","url":"classes/TextNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6053,"kind":2048,"name":"setVoice","url":"classes/TextNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6054,"kind":2048,"name":"getTickContext","url":"classes/TextNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6055,"kind":2048,"name":"setTickContext","url":"classes/TextNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6056,"kind":2048,"name":"getDuration","url":"classes/TextNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6057,"kind":2048,"name":"isDotted","url":"classes/TextNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6058,"kind":2048,"name":"hasStem","url":"classes/TextNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6059,"kind":2048,"name":"getNoteType","url":"classes/TextNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6060,"kind":2048,"name":"getBeam","url":"classes/TextNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6061,"kind":2048,"name":"checkBeam","url":"classes/TextNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6062,"kind":2048,"name":"hasBeam","url":"classes/TextNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6063,"kind":2048,"name":"setBeam","url":"classes/TextNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6064,"kind":2048,"name":"addModifier","url":"classes/TextNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6065,"kind":2048,"name":"getModifiersByType","url":"classes/TextNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6066,"kind":2048,"name":"getModifierStartXY","url":"classes/TextNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6067,"kind":2048,"name":"getRightParenthesisPx","url":"classes/TextNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6068,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/TextNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6069,"kind":2048,"name":"getFirstDotPx","url":"classes/TextNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6070,"kind":2048,"name":"getMetrics","url":"classes/TextNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6071,"kind":2048,"name":"getAbsoluteX","url":"classes/TextNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6072,"kind":2048,"name":"getStemDirection","url":"classes/TextNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6073,"kind":2048,"name":"getStemExtents","url":"classes/TextNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6074,"kind":2048,"name":"getTieRightX","url":"classes/TextNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6075,"kind":2048,"name":"getTieLeftX","url":"classes/TextNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6076,"kind":2048,"name":"getKeys","url":"classes/TextNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6077,"kind":2048,"name":"getKeyProps","url":"classes/TextNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6078,"kind":2048,"name":"reset","url":"classes/TextNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6079,"kind":2048,"name":"getTicks","url":"classes/TextNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6080,"kind":2048,"name":"setIgnoreTicks","url":"classes/TextNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6081,"kind":2048,"name":"setWidth","url":"classes/TextNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6082,"kind":2048,"name":"getWidth","url":"classes/TextNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6083,"kind":2048,"name":"setXShift","url":"classes/TextNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6084,"kind":2048,"name":"getXShift","url":"classes/TextNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6085,"kind":2048,"name":"getX","url":"classes/TextNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6086,"kind":2048,"name":"getFormatterMetrics","url":"classes/TextNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6087,"kind":2048,"name":"getCenterXShift","url":"classes/TextNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6088,"kind":2048,"name":"setCenterXShift","url":"classes/TextNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6089,"kind":2048,"name":"isCenterAligned","url":"classes/TextNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6090,"kind":2048,"name":"setCenterAlignment","url":"classes/TextNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6091,"kind":2048,"name":"getTuplet","url":"classes/TextNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6092,"kind":2048,"name":"getTupletStack","url":"classes/TextNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6093,"kind":2048,"name":"resetTuplet","url":"classes/TextNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6094,"kind":2048,"name":"setTuplet","url":"classes/TextNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6095,"kind":2048,"name":"addToModifierContext","url":"classes/TextNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6096,"kind":2048,"name":"getModifiers","url":"classes/TextNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6097,"kind":2048,"name":"checkTickContext","url":"classes/TextNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6098,"kind":262144,"name":"preFormatted","url":"classes/TextNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6099,"kind":2048,"name":"postFormat","url":"classes/TextNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6100,"kind":262144,"name":"postFormatted","url":"classes/TextNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6101,"kind":2048,"name":"getIntrinsicTicks","url":"classes/TextNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6102,"kind":2048,"name":"setIntrinsicTicks","url":"classes/TextNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6103,"kind":2048,"name":"getTickMultiplier","url":"classes/TextNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6104,"kind":2048,"name":"applyTickMultiplier","url":"classes/TextNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6105,"kind":2048,"name":"setDuration","url":"classes/TextNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6106,"kind":2048,"name":"setModifierContext","url":"classes/TextNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6107,"kind":2048,"name":"getModifierContext","url":"classes/TextNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6108,"kind":2048,"name":"checkModifierContext","url":"classes/TextNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6109,"kind":2048,"name":"addChildElement","url":"classes/TextNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6110,"kind":2048,"name":"getCategory","url":"classes/TextNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6111,"kind":2048,"name":"setStyle","url":"classes/TextNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6112,"kind":2048,"name":"setGroupStyle","url":"classes/TextNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6113,"kind":2048,"name":"getStyle","url":"classes/TextNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6114,"kind":2048,"name":"applyStyle","url":"classes/TextNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6115,"kind":2048,"name":"restoreStyle","url":"classes/TextNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6116,"kind":2048,"name":"drawWithStyle","url":"classes/TextNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6117,"kind":2048,"name":"hasClass","url":"classes/TextNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6118,"kind":2048,"name":"addClass","url":"classes/TextNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6119,"kind":2048,"name":"removeClass","url":"classes/TextNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6120,"kind":2048,"name":"onRegister","url":"classes/TextNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6121,"kind":2048,"name":"isRendered","url":"classes/TextNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6122,"kind":2048,"name":"setRendered","url":"classes/TextNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6123,"kind":2048,"name":"getAttributes","url":"classes/TextNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6124,"kind":2048,"name":"getAttribute","url":"classes/TextNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6125,"kind":2048,"name":"setAttribute","url":"classes/TextNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6126,"kind":2048,"name":"getBoundingBox","url":"classes/TextNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6127,"kind":2048,"name":"getContext","url":"classes/TextNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6128,"kind":2048,"name":"setContext","url":"classes/TextNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6129,"kind":2048,"name":"checkContext","url":"classes/TextNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6130,"kind":262144,"name":"font","url":"classes/TextNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6131,"kind":2048,"name":"setFont","url":"classes/TextNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6132,"kind":2048,"name":"getFont","url":"classes/TextNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6133,"kind":2048,"name":"resetFont","url":"classes/TextNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6134,"kind":262144,"name":"fontInfo","url":"classes/TextNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6135,"kind":2048,"name":"setFontSize","url":"classes/TextNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6136,"kind":2048,"name":"getFontSize","url":"classes/TextNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6137,"kind":262144,"name":"fontSize","url":"classes/TextNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6138,"kind":262144,"name":"fontSizeInPoints","url":"classes/TextNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6139,"kind":262144,"name":"fontSizeInPixels","url":"classes/TextNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6140,"kind":262144,"name":"fontStyle","url":"classes/TextNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6141,"kind":262144,"name":"fontWeight","url":"classes/TextNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6142,"kind":256,"name":"FormatterMetrics","url":"interfaces/FormatterMetrics.html","classes":"tsd-kind-interface"},{"id":6143,"kind":1024,"name":"duration","url":"interfaces/FormatterMetrics.html#duration","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FormatterMetrics"},{"id":6144,"kind":1024,"name":"freedom","url":"interfaces/FormatterMetrics.html#freedom","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FormatterMetrics"},{"id":6145,"kind":65536,"name":"__type","url":"interfaces/FormatterMetrics.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"FormatterMetrics"},{"id":6146,"kind":1024,"name":"left","url":"interfaces/FormatterMetrics.html#__type.left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FormatterMetrics.__type"},{"id":6147,"kind":1024,"name":"right","url":"interfaces/FormatterMetrics.html#__type.right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FormatterMetrics.__type"},{"id":6148,"kind":1024,"name":"iterations","url":"interfaces/FormatterMetrics.html#iterations","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FormatterMetrics"},{"id":6149,"kind":1024,"name":"space","url":"interfaces/FormatterMetrics.html#space","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FormatterMetrics"},{"id":6150,"kind":65536,"name":"__type","url":"interfaces/FormatterMetrics.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"FormatterMetrics"},{"id":6151,"kind":1024,"name":"used","url":"interfaces/FormatterMetrics.html#__type-1.used","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FormatterMetrics.__type"},{"id":6152,"kind":1024,"name":"mean","url":"interfaces/FormatterMetrics.html#__type-1.mean","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FormatterMetrics.__type"},{"id":6153,"kind":1024,"name":"deviation","url":"interfaces/FormatterMetrics.html#__type-1.deviation","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FormatterMetrics.__type"},{"id":6154,"kind":128,"name":"Tickable","url":"classes/Tickable.html","classes":"tsd-kind-class"},{"id":6155,"kind":262144,"name":"CATEGORY","url":"classes/Tickable.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Tickable"},{"id":6156,"kind":1024,"name":"TEXT_FONT","url":"classes/Tickable.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Tickable"},{"id":6157,"kind":512,"name":"constructor","url":"classes/Tickable.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Tickable"},{"id":6158,"kind":2048,"name":"reset","url":"classes/Tickable.html#reset","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6159,"kind":2048,"name":"getTicks","url":"classes/Tickable.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6160,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/Tickable.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6161,"kind":2048,"name":"setIgnoreTicks","url":"classes/Tickable.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6162,"kind":2048,"name":"setWidth","url":"classes/Tickable.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6163,"kind":2048,"name":"getWidth","url":"classes/Tickable.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6164,"kind":2048,"name":"setXShift","url":"classes/Tickable.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6165,"kind":2048,"name":"getXShift","url":"classes/Tickable.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6166,"kind":2048,"name":"getX","url":"classes/Tickable.html#getX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6167,"kind":2048,"name":"getFormatterMetrics","url":"classes/Tickable.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6168,"kind":2048,"name":"getCenterXShift","url":"classes/Tickable.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6169,"kind":2048,"name":"setCenterXShift","url":"classes/Tickable.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6170,"kind":2048,"name":"isCenterAligned","url":"classes/Tickable.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6171,"kind":2048,"name":"setCenterAlignment","url":"classes/Tickable.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6172,"kind":2048,"name":"getVoice","url":"classes/Tickable.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6173,"kind":2048,"name":"setVoice","url":"classes/Tickable.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6174,"kind":2048,"name":"getTuplet","url":"classes/Tickable.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6175,"kind":2048,"name":"getTupletStack","url":"classes/Tickable.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6176,"kind":2048,"name":"resetTuplet","url":"classes/Tickable.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6177,"kind":2048,"name":"setTuplet","url":"classes/Tickable.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6178,"kind":2048,"name":"addToModifierContext","url":"classes/Tickable.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6179,"kind":2048,"name":"addModifier","url":"classes/Tickable.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6180,"kind":2048,"name":"getModifiers","url":"classes/Tickable.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6181,"kind":2048,"name":"setTickContext","url":"classes/Tickable.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6182,"kind":2048,"name":"checkTickContext","url":"classes/Tickable.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6183,"kind":2048,"name":"preFormat","url":"classes/Tickable.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6184,"kind":262144,"name":"preFormatted","url":"classes/Tickable.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"Tickable"},{"id":6185,"kind":2048,"name":"postFormat","url":"classes/Tickable.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6186,"kind":262144,"name":"postFormatted","url":"classes/Tickable.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"Tickable"},{"id":6187,"kind":2048,"name":"getIntrinsicTicks","url":"classes/Tickable.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6188,"kind":2048,"name":"setIntrinsicTicks","url":"classes/Tickable.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6189,"kind":2048,"name":"getTickMultiplier","url":"classes/Tickable.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6190,"kind":2048,"name":"applyTickMultiplier","url":"classes/Tickable.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6191,"kind":2048,"name":"setDuration","url":"classes/Tickable.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6192,"kind":2048,"name":"getAbsoluteX","url":"classes/Tickable.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6193,"kind":2048,"name":"setModifierContext","url":"classes/Tickable.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6194,"kind":2048,"name":"getModifierContext","url":"classes/Tickable.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6195,"kind":2048,"name":"checkModifierContext","url":"classes/Tickable.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6196,"kind":2048,"name":"getStave","url":"classes/Tickable.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6197,"kind":2048,"name":"setStave","url":"classes/Tickable.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6198,"kind":2048,"name":"getMetrics","url":"classes/Tickable.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6199,"kind":2048,"name":"addChildElement","url":"classes/Tickable.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6200,"kind":2048,"name":"getCategory","url":"classes/Tickable.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6201,"kind":2048,"name":"setStyle","url":"classes/Tickable.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6202,"kind":2048,"name":"setGroupStyle","url":"classes/Tickable.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6203,"kind":2048,"name":"getStyle","url":"classes/Tickable.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6204,"kind":2048,"name":"applyStyle","url":"classes/Tickable.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6205,"kind":2048,"name":"restoreStyle","url":"classes/Tickable.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6206,"kind":2048,"name":"drawWithStyle","url":"classes/Tickable.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6207,"kind":2048,"name":"draw","url":"classes/Tickable.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6208,"kind":2048,"name":"hasClass","url":"classes/Tickable.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6209,"kind":2048,"name":"addClass","url":"classes/Tickable.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6210,"kind":2048,"name":"removeClass","url":"classes/Tickable.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6211,"kind":2048,"name":"onRegister","url":"classes/Tickable.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6212,"kind":2048,"name":"isRendered","url":"classes/Tickable.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6213,"kind":2048,"name":"setRendered","url":"classes/Tickable.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6214,"kind":2048,"name":"getAttributes","url":"classes/Tickable.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6215,"kind":2048,"name":"getAttribute","url":"classes/Tickable.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6216,"kind":2048,"name":"setAttribute","url":"classes/Tickable.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6217,"kind":2048,"name":"getBoundingBox","url":"classes/Tickable.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6218,"kind":2048,"name":"getContext","url":"classes/Tickable.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6219,"kind":2048,"name":"setContext","url":"classes/Tickable.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6220,"kind":2048,"name":"checkContext","url":"classes/Tickable.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6221,"kind":262144,"name":"font","url":"classes/Tickable.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6222,"kind":2048,"name":"setFont","url":"classes/Tickable.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6223,"kind":2048,"name":"getFont","url":"classes/Tickable.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6224,"kind":2048,"name":"resetFont","url":"classes/Tickable.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6225,"kind":262144,"name":"fontInfo","url":"classes/Tickable.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6226,"kind":2048,"name":"setFontSize","url":"classes/Tickable.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6227,"kind":2048,"name":"getFontSize","url":"classes/Tickable.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6228,"kind":262144,"name":"fontSize","url":"classes/Tickable.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6229,"kind":262144,"name":"fontSizeInPoints","url":"classes/Tickable.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6230,"kind":262144,"name":"fontSizeInPixels","url":"classes/Tickable.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6231,"kind":262144,"name":"fontStyle","url":"classes/Tickable.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6232,"kind":262144,"name":"fontWeight","url":"classes/Tickable.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6233,"kind":256,"name":"TickContextMetrics","url":"interfaces/TickContextMetrics.html","classes":"tsd-kind-interface"},{"id":6234,"kind":1024,"name":"totalLeftPx","url":"interfaces/TickContextMetrics.html#totalLeftPx","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TickContextMetrics"},{"id":6235,"kind":1024,"name":"totalRightPx","url":"interfaces/TickContextMetrics.html#totalRightPx","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TickContextMetrics"},{"id":6236,"kind":1024,"name":"width","url":"interfaces/TickContextMetrics.html#width","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TickContextMetrics"},{"id":6237,"kind":1024,"name":"glyphWidth","url":"interfaces/TickContextMetrics.html#glyphWidth","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TickContextMetrics"},{"id":6238,"kind":1024,"name":"notePx","url":"interfaces/TickContextMetrics.html#notePx","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TickContextMetrics"},{"id":6239,"kind":1024,"name":"modLeftPx","url":"interfaces/TickContextMetrics.html#modLeftPx","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TickContextMetrics"},{"id":6240,"kind":1024,"name":"modRightPx","url":"interfaces/TickContextMetrics.html#modRightPx","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TickContextMetrics"},{"id":6241,"kind":1024,"name":"leftDisplacedHeadPx","url":"interfaces/TickContextMetrics.html#leftDisplacedHeadPx","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TickContextMetrics"},{"id":6242,"kind":1024,"name":"glyphPx","url":"interfaces/TickContextMetrics.html#glyphPx","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TickContextMetrics"},{"id":6243,"kind":1024,"name":"rightDisplacedHeadPx","url":"interfaces/TickContextMetrics.html#rightDisplacedHeadPx","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TickContextMetrics"},{"id":6244,"kind":256,"name":"TickContextOptions","url":"interfaces/TickContextOptions.html","classes":"tsd-kind-interface"},{"id":6245,"kind":1024,"name":"tickID","url":"interfaces/TickContextOptions.html#tickID","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TickContextOptions"},{"id":6246,"kind":128,"name":"TickContext","url":"classes/TickContext.html","classes":"tsd-kind-class"},{"id":6247,"kind":2048,"name":"getNextContext","url":"classes/TickContext.html#getNextContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"TickContext"},{"id":6248,"kind":512,"name":"constructor","url":"classes/TickContext.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"TickContext"},{"id":6249,"kind":1024,"name":"tContexts","url":"classes/TickContext.html#tContexts","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TickContext"},{"id":6250,"kind":2048,"name":"getTickID","url":"classes/TickContext.html#getTickID","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6251,"kind":2048,"name":"getX","url":"classes/TickContext.html#getX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6252,"kind":2048,"name":"setX","url":"classes/TickContext.html#setX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6253,"kind":2048,"name":"getXBase","url":"classes/TickContext.html#getXBase","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6254,"kind":2048,"name":"setXBase","url":"classes/TickContext.html#setXBase","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6255,"kind":2048,"name":"getXOffset","url":"classes/TickContext.html#getXOffset","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6256,"kind":2048,"name":"setXOffset","url":"classes/TickContext.html#setXOffset","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6257,"kind":2048,"name":"getWidth","url":"classes/TickContext.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6258,"kind":2048,"name":"setPadding","url":"classes/TickContext.html#setPadding","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6259,"kind":2048,"name":"getMaxTicks","url":"classes/TickContext.html#getMaxTicks","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6260,"kind":2048,"name":"getMinTicks","url":"classes/TickContext.html#getMinTicks","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6261,"kind":2048,"name":"getMaxTickable","url":"classes/TickContext.html#getMaxTickable","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6262,"kind":2048,"name":"getMinTickable","url":"classes/TickContext.html#getMinTickable","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6263,"kind":2048,"name":"getTickables","url":"classes/TickContext.html#getTickables","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6264,"kind":2048,"name":"getTickableForVoice","url":"classes/TickContext.html#getTickableForVoice","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6265,"kind":2048,"name":"getTickablesByVoice","url":"classes/TickContext.html#getTickablesByVoice","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6266,"kind":2048,"name":"getCenterAlignedTickables","url":"classes/TickContext.html#getCenterAlignedTickables","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6267,"kind":2048,"name":"getMetrics","url":"classes/TickContext.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6268,"kind":2048,"name":"getCurrentTick","url":"classes/TickContext.html#getCurrentTick","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6269,"kind":2048,"name":"setCurrentTick","url":"classes/TickContext.html#setCurrentTick","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6270,"kind":2048,"name":"addTickable","url":"classes/TickContext.html#addTickable","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6271,"kind":2048,"name":"preFormat","url":"classes/TickContext.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6272,"kind":2048,"name":"postFormat","url":"classes/TickContext.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6273,"kind":2048,"name":"getFormatterMetrics","url":"classes/TickContext.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6274,"kind":128,"name":"TimeSignatureGlyph","url":"classes/TimeSignatureGlyph.html","classes":"tsd-kind-class"},{"id":6275,"kind":262144,"name":"CATEGORY","url":"classes/TimeSignatureGlyph.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignatureGlyph"},{"id":6276,"kind":1024,"name":"CURRENT_CACHE_KEY","url":"classes/TimeSignatureGlyph.html#CURRENT_CACHE_KEY","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignatureGlyph"},{"id":6277,"kind":1024,"name":"MUSIC_FONT_STACK","url":"classes/TimeSignatureGlyph.html#MUSIC_FONT_STACK","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignatureGlyph"},{"id":6278,"kind":2048,"name":"lookupFontMetric","url":"classes/TimeSignatureGlyph.html#lookupFontMetric","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignatureGlyph"},{"id":6279,"kind":2048,"name":"lookupGlyph","url":"classes/TimeSignatureGlyph.html#lookupGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignatureGlyph"},{"id":6280,"kind":2048,"name":"loadMetrics","url":"classes/TimeSignatureGlyph.html#loadMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignatureGlyph"},{"id":6281,"kind":2048,"name":"renderGlyph","url":"classes/TimeSignatureGlyph.html#renderGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignatureGlyph"},{"id":6282,"kind":2048,"name":"renderOutline","url":"classes/TimeSignatureGlyph.html#renderOutline","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignatureGlyph"},{"id":6283,"kind":2048,"name":"getOutlineBoundingBox","url":"classes/TimeSignatureGlyph.html#getOutlineBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignatureGlyph"},{"id":6284,"kind":2048,"name":"getWidth","url":"classes/TimeSignatureGlyph.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignatureGlyph"},{"id":6285,"kind":1024,"name":"TEXT_FONT","url":"classes/TimeSignatureGlyph.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignatureGlyph"},{"id":6286,"kind":512,"name":"constructor","url":"classes/TimeSignatureGlyph.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"TimeSignatureGlyph"},{"id":6287,"kind":1024,"name":"timeSignature","url":"classes/TimeSignatureGlyph.html#timeSignature","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TimeSignatureGlyph"},{"id":6288,"kind":1024,"name":"topStartX","url":"classes/TimeSignatureGlyph.html#topStartX","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TimeSignatureGlyph"},{"id":6289,"kind":1024,"name":"botStartX","url":"classes/TimeSignatureGlyph.html#botStartX","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TimeSignatureGlyph"},{"id":6290,"kind":1024,"name":"width","url":"classes/TimeSignatureGlyph.html#width","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TimeSignatureGlyph"},{"id":6291,"kind":1024,"name":"xMin","url":"classes/TimeSignatureGlyph.html#xMin","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TimeSignatureGlyph"},{"id":6292,"kind":2048,"name":"getMetrics","url":"classes/TimeSignatureGlyph.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TimeSignatureGlyph"},{"id":6293,"kind":2048,"name":"renderToStave","url":"classes/TimeSignatureGlyph.html#renderToStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TimeSignatureGlyph"},{"id":6294,"kind":1024,"name":"bbox","url":"classes/TimeSignatureGlyph.html#bbox","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6295,"kind":1024,"name":"code","url":"classes/TimeSignatureGlyph.html#code","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6296,"kind":1024,"name":"metrics","url":"classes/TimeSignatureGlyph.html#metrics","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6297,"kind":1024,"name":"topGlyphs","url":"classes/TimeSignatureGlyph.html#topGlyphs","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6298,"kind":1024,"name":"botGlyphs","url":"classes/TimeSignatureGlyph.html#botGlyphs","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6299,"kind":1024,"name":"scale","url":"classes/TimeSignatureGlyph.html#scale","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6300,"kind":2048,"name":"draw","url":"classes/TimeSignatureGlyph.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6301,"kind":2048,"name":"getCode","url":"classes/TimeSignatureGlyph.html#getCode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6302,"kind":2048,"name":"setOptions","url":"classes/TimeSignatureGlyph.html#setOptions","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6303,"kind":2048,"name":"setPoint","url":"classes/TimeSignatureGlyph.html#setPoint","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6304,"kind":2048,"name":"setStave","url":"classes/TimeSignatureGlyph.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6305,"kind":2048,"name":"getXShift","url":"classes/TimeSignatureGlyph.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6306,"kind":2048,"name":"setXShift","url":"classes/TimeSignatureGlyph.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6307,"kind":2048,"name":"getYshift","url":"classes/TimeSignatureGlyph.html#getYshift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6308,"kind":2048,"name":"setYShift","url":"classes/TimeSignatureGlyph.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6309,"kind":2048,"name":"reset","url":"classes/TimeSignatureGlyph.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6310,"kind":2048,"name":"checkMetrics","url":"classes/TimeSignatureGlyph.html#checkMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6311,"kind":2048,"name":"setOriginX","url":"classes/TimeSignatureGlyph.html#setOriginX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6312,"kind":2048,"name":"setOriginY","url":"classes/TimeSignatureGlyph.html#setOriginY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6313,"kind":2048,"name":"setOrigin","url":"classes/TimeSignatureGlyph.html#setOrigin","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6314,"kind":2048,"name":"render","url":"classes/TimeSignatureGlyph.html#render","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6315,"kind":2048,"name":"checkStave","url":"classes/TimeSignatureGlyph.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6316,"kind":2048,"name":"addChildElement","url":"classes/TimeSignatureGlyph.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6317,"kind":2048,"name":"getCategory","url":"classes/TimeSignatureGlyph.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6318,"kind":2048,"name":"setStyle","url":"classes/TimeSignatureGlyph.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6319,"kind":2048,"name":"setGroupStyle","url":"classes/TimeSignatureGlyph.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6320,"kind":2048,"name":"getStyle","url":"classes/TimeSignatureGlyph.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6321,"kind":2048,"name":"applyStyle","url":"classes/TimeSignatureGlyph.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6322,"kind":2048,"name":"restoreStyle","url":"classes/TimeSignatureGlyph.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6323,"kind":2048,"name":"drawWithStyle","url":"classes/TimeSignatureGlyph.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6324,"kind":2048,"name":"hasClass","url":"classes/TimeSignatureGlyph.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6325,"kind":2048,"name":"addClass","url":"classes/TimeSignatureGlyph.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6326,"kind":2048,"name":"removeClass","url":"classes/TimeSignatureGlyph.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6327,"kind":2048,"name":"onRegister","url":"classes/TimeSignatureGlyph.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6328,"kind":2048,"name":"isRendered","url":"classes/TimeSignatureGlyph.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6329,"kind":2048,"name":"setRendered","url":"classes/TimeSignatureGlyph.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6330,"kind":2048,"name":"getAttributes","url":"classes/TimeSignatureGlyph.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6331,"kind":2048,"name":"getAttribute","url":"classes/TimeSignatureGlyph.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6332,"kind":2048,"name":"setAttribute","url":"classes/TimeSignatureGlyph.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6333,"kind":2048,"name":"getBoundingBox","url":"classes/TimeSignatureGlyph.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6334,"kind":2048,"name":"getContext","url":"classes/TimeSignatureGlyph.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6335,"kind":2048,"name":"setContext","url":"classes/TimeSignatureGlyph.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6336,"kind":2048,"name":"checkContext","url":"classes/TimeSignatureGlyph.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6337,"kind":262144,"name":"font","url":"classes/TimeSignatureGlyph.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6338,"kind":2048,"name":"setFont","url":"classes/TimeSignatureGlyph.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6339,"kind":2048,"name":"getFont","url":"classes/TimeSignatureGlyph.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6340,"kind":2048,"name":"resetFont","url":"classes/TimeSignatureGlyph.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6341,"kind":262144,"name":"fontInfo","url":"classes/TimeSignatureGlyph.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6342,"kind":2048,"name":"setFontSize","url":"classes/TimeSignatureGlyph.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6343,"kind":2048,"name":"getFontSize","url":"classes/TimeSignatureGlyph.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6344,"kind":262144,"name":"fontSize","url":"classes/TimeSignatureGlyph.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6345,"kind":262144,"name":"fontSizeInPoints","url":"classes/TimeSignatureGlyph.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6346,"kind":262144,"name":"fontSizeInPixels","url":"classes/TimeSignatureGlyph.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6347,"kind":262144,"name":"fontStyle","url":"classes/TimeSignatureGlyph.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6348,"kind":262144,"name":"fontWeight","url":"classes/TimeSignatureGlyph.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6349,"kind":256,"name":"TimeSignatureInfo","url":"interfaces/TimeSignatureInfo.html","classes":"tsd-kind-interface"},{"id":6350,"kind":1024,"name":"glyph","url":"interfaces/TimeSignatureInfo.html#glyph","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TimeSignatureInfo"},{"id":6351,"kind":1024,"name":"line","url":"interfaces/TimeSignatureInfo.html#line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TimeSignatureInfo"},{"id":6352,"kind":1024,"name":"num","url":"interfaces/TimeSignatureInfo.html#num","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TimeSignatureInfo"},{"id":6353,"kind":128,"name":"TimeSignature","url":"classes/TimeSignature.html","classes":"tsd-kind-class"},{"id":6354,"kind":262144,"name":"CATEGORY","url":"classes/TimeSignature.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TimeSignature"},{"id":6355,"kind":262144,"name":"glyphs","url":"classes/TimeSignature.html#glyphs","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"TimeSignature"},{"id":6356,"kind":262144,"name":"Position","url":"classes/TimeSignature.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignature"},{"id":6357,"kind":1024,"name":"TEXT_FONT","url":"classes/TimeSignature.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignature"},{"id":6358,"kind":512,"name":"constructor","url":"classes/TimeSignature.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"TimeSignature"},{"id":6359,"kind":1024,"name":"point","url":"classes/TimeSignature.html#point","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TimeSignature"},{"id":6360,"kind":1024,"name":"bottomLine","url":"classes/TimeSignature.html#bottomLine","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TimeSignature"},{"id":6361,"kind":1024,"name":"topLine","url":"classes/TimeSignature.html#topLine","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TimeSignature"},{"id":6362,"kind":2048,"name":"parseTimeSpec","url":"classes/TimeSignature.html#parseTimeSpec","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TimeSignature"},{"id":6363,"kind":2048,"name":"makeTimeSignatureGlyph","url":"classes/TimeSignature.html#makeTimeSignatureGlyph","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TimeSignature"},{"id":6364,"kind":2048,"name":"getInfo","url":"classes/TimeSignature.html#getInfo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TimeSignature"},{"id":6365,"kind":2048,"name":"setTimeSig","url":"classes/TimeSignature.html#setTimeSig","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TimeSignature"},{"id":6366,"kind":2048,"name":"draw","url":"classes/TimeSignature.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TimeSignature"},{"id":6367,"kind":2048,"name":"getPosition","url":"classes/TimeSignature.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6368,"kind":2048,"name":"setPosition","url":"classes/TimeSignature.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6369,"kind":2048,"name":"getStave","url":"classes/TimeSignature.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6370,"kind":2048,"name":"checkStave","url":"classes/TimeSignature.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6371,"kind":2048,"name":"setStave","url":"classes/TimeSignature.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6372,"kind":2048,"name":"getWidth","url":"classes/TimeSignature.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6373,"kind":2048,"name":"setWidth","url":"classes/TimeSignature.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6374,"kind":2048,"name":"getX","url":"classes/TimeSignature.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6375,"kind":2048,"name":"setX","url":"classes/TimeSignature.html#setX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6376,"kind":2048,"name":"placeGlyphOnLine","url":"classes/TimeSignature.html#placeGlyphOnLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6377,"kind":2048,"name":"getPadding","url":"classes/TimeSignature.html#getPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6378,"kind":2048,"name":"setPadding","url":"classes/TimeSignature.html#setPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6379,"kind":2048,"name":"setLayoutMetrics","url":"classes/TimeSignature.html#setLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6380,"kind":2048,"name":"getLayoutMetrics","url":"classes/TimeSignature.html#getLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6381,"kind":2048,"name":"addChildElement","url":"classes/TimeSignature.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6382,"kind":2048,"name":"getCategory","url":"classes/TimeSignature.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6383,"kind":2048,"name":"setStyle","url":"classes/TimeSignature.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6384,"kind":2048,"name":"setGroupStyle","url":"classes/TimeSignature.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6385,"kind":2048,"name":"getStyle","url":"classes/TimeSignature.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6386,"kind":2048,"name":"applyStyle","url":"classes/TimeSignature.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6387,"kind":2048,"name":"restoreStyle","url":"classes/TimeSignature.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6388,"kind":2048,"name":"drawWithStyle","url":"classes/TimeSignature.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6389,"kind":2048,"name":"hasClass","url":"classes/TimeSignature.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6390,"kind":2048,"name":"addClass","url":"classes/TimeSignature.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6391,"kind":2048,"name":"removeClass","url":"classes/TimeSignature.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6392,"kind":2048,"name":"onRegister","url":"classes/TimeSignature.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6393,"kind":2048,"name":"isRendered","url":"classes/TimeSignature.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6394,"kind":2048,"name":"setRendered","url":"classes/TimeSignature.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6395,"kind":2048,"name":"getAttributes","url":"classes/TimeSignature.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6396,"kind":2048,"name":"getAttribute","url":"classes/TimeSignature.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6397,"kind":2048,"name":"setAttribute","url":"classes/TimeSignature.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6398,"kind":2048,"name":"getBoundingBox","url":"classes/TimeSignature.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6399,"kind":2048,"name":"getContext","url":"classes/TimeSignature.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6400,"kind":2048,"name":"setContext","url":"classes/TimeSignature.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6401,"kind":2048,"name":"checkContext","url":"classes/TimeSignature.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6402,"kind":262144,"name":"font","url":"classes/TimeSignature.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6403,"kind":2048,"name":"setFont","url":"classes/TimeSignature.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6404,"kind":2048,"name":"getFont","url":"classes/TimeSignature.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6405,"kind":2048,"name":"resetFont","url":"classes/TimeSignature.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6406,"kind":262144,"name":"fontInfo","url":"classes/TimeSignature.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6407,"kind":2048,"name":"setFontSize","url":"classes/TimeSignature.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6408,"kind":2048,"name":"getFontSize","url":"classes/TimeSignature.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6409,"kind":262144,"name":"fontSize","url":"classes/TimeSignature.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6410,"kind":262144,"name":"fontSizeInPoints","url":"classes/TimeSignature.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6411,"kind":262144,"name":"fontSizeInPixels","url":"classes/TimeSignature.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6412,"kind":262144,"name":"fontStyle","url":"classes/TimeSignature.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6413,"kind":262144,"name":"fontWeight","url":"classes/TimeSignature.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6414,"kind":128,"name":"TimeSigNote","url":"classes/TimeSigNote.html","classes":"tsd-kind-class"},{"id":6415,"kind":262144,"name":"CATEGORY","url":"classes/TimeSigNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TimeSigNote"},{"id":6416,"kind":2048,"name":"plotMetrics","url":"classes/TimeSigNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSigNote"},{"id":6417,"kind":1024,"name":"TEXT_FONT","url":"classes/TimeSigNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSigNote"},{"id":6418,"kind":512,"name":"constructor","url":"classes/TimeSigNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"TimeSigNote"},{"id":6419,"kind":2048,"name":"addToModifierContext","url":"classes/TimeSigNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TimeSigNote"},{"id":6420,"kind":2048,"name":"preFormat","url":"classes/TimeSigNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TimeSigNote"},{"id":6421,"kind":2048,"name":"draw","url":"classes/TimeSigNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TimeSigNote"},{"id":6422,"kind":1024,"name":"glyph","url":"classes/TimeSigNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6423,"kind":1024,"name":"keys","url":"classes/TimeSigNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6424,"kind":1024,"name":"keyProps","url":"classes/TimeSigNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6425,"kind":1024,"name":"render_options","url":"classes/TimeSigNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6426,"kind":65536,"name":"__type","url":"classes/TimeSigNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"TimeSigNote"},{"id":6427,"kind":1024,"name":"draw_stem_through_stave","url":"classes/TimeSigNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6428,"kind":1024,"name":"draw","url":"classes/TimeSigNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6429,"kind":1024,"name":"draw_dots","url":"classes/TimeSigNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6430,"kind":1024,"name":"draw_stem","url":"classes/TimeSigNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6431,"kind":1024,"name":"y_shift","url":"classes/TimeSigNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6432,"kind":1024,"name":"extend_left","url":"classes/TimeSigNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6433,"kind":1024,"name":"extend_right","url":"classes/TimeSigNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6434,"kind":1024,"name":"glyph_font_scale","url":"classes/TimeSigNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6435,"kind":1024,"name":"annotation_spacing","url":"classes/TimeSigNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6436,"kind":1024,"name":"glyph_font_size","url":"classes/TimeSigNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6437,"kind":1024,"name":"scale","url":"classes/TimeSigNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6438,"kind":1024,"name":"font","url":"classes/TimeSigNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6439,"kind":1024,"name":"stroke_px","url":"classes/TimeSigNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6440,"kind":2048,"name":"getPlayNote","url":"classes/TimeSigNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6441,"kind":2048,"name":"setPlayNote","url":"classes/TimeSigNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6442,"kind":2048,"name":"isRest","url":"classes/TimeSigNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6443,"kind":2048,"name":"addStroke","url":"classes/TimeSigNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6444,"kind":2048,"name":"getStave","url":"classes/TimeSigNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6445,"kind":2048,"name":"checkStave","url":"classes/TimeSigNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6446,"kind":2048,"name":"setStave","url":"classes/TimeSigNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6447,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/TimeSigNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6448,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/TimeSigNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6449,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/TimeSigNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6450,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/TimeSigNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6451,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/TimeSigNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6452,"kind":2048,"name":"getLineNumber","url":"classes/TimeSigNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6453,"kind":2048,"name":"getLineForRest","url":"classes/TimeSigNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6454,"kind":2048,"name":"getGlyph","url":"classes/TimeSigNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6455,"kind":2048,"name":"getGlyphWidth","url":"classes/TimeSigNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6456,"kind":2048,"name":"setYs","url":"classes/TimeSigNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6457,"kind":2048,"name":"getYs","url":"classes/TimeSigNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6458,"kind":2048,"name":"getYForTopText","url":"classes/TimeSigNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6459,"kind":2048,"name":"getVoice","url":"classes/TimeSigNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6460,"kind":2048,"name":"setVoice","url":"classes/TimeSigNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6461,"kind":2048,"name":"getTickContext","url":"classes/TimeSigNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6462,"kind":2048,"name":"setTickContext","url":"classes/TimeSigNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6463,"kind":2048,"name":"getDuration","url":"classes/TimeSigNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6464,"kind":2048,"name":"isDotted","url":"classes/TimeSigNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6465,"kind":2048,"name":"hasStem","url":"classes/TimeSigNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6466,"kind":2048,"name":"getNoteType","url":"classes/TimeSigNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6467,"kind":2048,"name":"getBeam","url":"classes/TimeSigNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6468,"kind":2048,"name":"checkBeam","url":"classes/TimeSigNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6469,"kind":2048,"name":"hasBeam","url":"classes/TimeSigNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6470,"kind":2048,"name":"setBeam","url":"classes/TimeSigNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6471,"kind":2048,"name":"addModifier","url":"classes/TimeSigNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6472,"kind":2048,"name":"getModifiersByType","url":"classes/TimeSigNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6473,"kind":2048,"name":"getModifierStartXY","url":"classes/TimeSigNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6474,"kind":2048,"name":"getRightParenthesisPx","url":"classes/TimeSigNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6475,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/TimeSigNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6476,"kind":2048,"name":"getFirstDotPx","url":"classes/TimeSigNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6477,"kind":2048,"name":"getMetrics","url":"classes/TimeSigNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6478,"kind":2048,"name":"getAbsoluteX","url":"classes/TimeSigNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6479,"kind":2048,"name":"getStemDirection","url":"classes/TimeSigNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6480,"kind":2048,"name":"getStemExtents","url":"classes/TimeSigNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6481,"kind":2048,"name":"getTieRightX","url":"classes/TimeSigNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6482,"kind":2048,"name":"getTieLeftX","url":"classes/TimeSigNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6483,"kind":2048,"name":"getKeys","url":"classes/TimeSigNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6484,"kind":2048,"name":"getKeyProps","url":"classes/TimeSigNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6485,"kind":2048,"name":"reset","url":"classes/TimeSigNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6486,"kind":2048,"name":"getTicks","url":"classes/TimeSigNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6487,"kind":2048,"name":"setIgnoreTicks","url":"classes/TimeSigNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6488,"kind":2048,"name":"setWidth","url":"classes/TimeSigNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6489,"kind":2048,"name":"getWidth","url":"classes/TimeSigNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6490,"kind":2048,"name":"setXShift","url":"classes/TimeSigNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6491,"kind":2048,"name":"getXShift","url":"classes/TimeSigNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6492,"kind":2048,"name":"getX","url":"classes/TimeSigNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6493,"kind":2048,"name":"getFormatterMetrics","url":"classes/TimeSigNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6494,"kind":2048,"name":"getCenterXShift","url":"classes/TimeSigNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6495,"kind":2048,"name":"setCenterXShift","url":"classes/TimeSigNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6496,"kind":2048,"name":"isCenterAligned","url":"classes/TimeSigNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6497,"kind":2048,"name":"setCenterAlignment","url":"classes/TimeSigNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6498,"kind":2048,"name":"getTuplet","url":"classes/TimeSigNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6499,"kind":2048,"name":"getTupletStack","url":"classes/TimeSigNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6500,"kind":2048,"name":"resetTuplet","url":"classes/TimeSigNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6501,"kind":2048,"name":"setTuplet","url":"classes/TimeSigNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6502,"kind":2048,"name":"getModifiers","url":"classes/TimeSigNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6503,"kind":2048,"name":"checkTickContext","url":"classes/TimeSigNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6504,"kind":262144,"name":"preFormatted","url":"classes/TimeSigNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6505,"kind":2048,"name":"postFormat","url":"classes/TimeSigNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6506,"kind":262144,"name":"postFormatted","url":"classes/TimeSigNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6507,"kind":2048,"name":"getIntrinsicTicks","url":"classes/TimeSigNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6508,"kind":2048,"name":"setIntrinsicTicks","url":"classes/TimeSigNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6509,"kind":2048,"name":"getTickMultiplier","url":"classes/TimeSigNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6510,"kind":2048,"name":"applyTickMultiplier","url":"classes/TimeSigNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6511,"kind":2048,"name":"setDuration","url":"classes/TimeSigNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6512,"kind":2048,"name":"setModifierContext","url":"classes/TimeSigNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6513,"kind":2048,"name":"getModifierContext","url":"classes/TimeSigNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6514,"kind":2048,"name":"checkModifierContext","url":"classes/TimeSigNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6515,"kind":2048,"name":"addChildElement","url":"classes/TimeSigNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6516,"kind":2048,"name":"getCategory","url":"classes/TimeSigNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6517,"kind":2048,"name":"setStyle","url":"classes/TimeSigNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6518,"kind":2048,"name":"setGroupStyle","url":"classes/TimeSigNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6519,"kind":2048,"name":"getStyle","url":"classes/TimeSigNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6520,"kind":2048,"name":"applyStyle","url":"classes/TimeSigNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6521,"kind":2048,"name":"restoreStyle","url":"classes/TimeSigNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6522,"kind":2048,"name":"drawWithStyle","url":"classes/TimeSigNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6523,"kind":2048,"name":"hasClass","url":"classes/TimeSigNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6524,"kind":2048,"name":"addClass","url":"classes/TimeSigNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6525,"kind":2048,"name":"removeClass","url":"classes/TimeSigNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6526,"kind":2048,"name":"onRegister","url":"classes/TimeSigNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6527,"kind":2048,"name":"isRendered","url":"classes/TimeSigNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6528,"kind":2048,"name":"setRendered","url":"classes/TimeSigNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6529,"kind":2048,"name":"getAttributes","url":"classes/TimeSigNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6530,"kind":2048,"name":"getAttribute","url":"classes/TimeSigNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6531,"kind":2048,"name":"setAttribute","url":"classes/TimeSigNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6532,"kind":2048,"name":"getBoundingBox","url":"classes/TimeSigNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6533,"kind":2048,"name":"getContext","url":"classes/TimeSigNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6534,"kind":2048,"name":"setContext","url":"classes/TimeSigNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6535,"kind":2048,"name":"checkContext","url":"classes/TimeSigNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6536,"kind":262144,"name":"font","url":"classes/TimeSigNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6537,"kind":2048,"name":"setFont","url":"classes/TimeSigNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6538,"kind":2048,"name":"getFont","url":"classes/TimeSigNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6539,"kind":2048,"name":"resetFont","url":"classes/TimeSigNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6540,"kind":262144,"name":"fontInfo","url":"classes/TimeSigNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6541,"kind":2048,"name":"setFontSize","url":"classes/TimeSigNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6542,"kind":2048,"name":"getFontSize","url":"classes/TimeSigNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6543,"kind":262144,"name":"fontSize","url":"classes/TimeSigNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6544,"kind":262144,"name":"fontSizeInPoints","url":"classes/TimeSigNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6545,"kind":262144,"name":"fontSizeInPixels","url":"classes/TimeSigNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6546,"kind":262144,"name":"fontStyle","url":"classes/TimeSigNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6547,"kind":262144,"name":"fontWeight","url":"classes/TimeSigNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6548,"kind":128,"name":"Tremolo","url":"classes/Tremolo.html","classes":"tsd-kind-class"},{"id":6549,"kind":262144,"name":"CATEGORY","url":"classes/Tremolo.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Tremolo"},{"id":6550,"kind":262144,"name":"Position","url":"classes/Tremolo.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Tremolo"},{"id":6551,"kind":262144,"name":"PositionString","url":"classes/Tremolo.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Tremolo"},{"id":6552,"kind":1024,"name":"TEXT_FONT","url":"classes/Tremolo.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Tremolo"},{"id":6553,"kind":512,"name":"constructor","url":"classes/Tremolo.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Tremolo"},{"id":6554,"kind":1024,"name":"y_spacing_scale","url":"classes/Tremolo.html#y_spacing_scale","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Tremolo"},{"id":6555,"kind":1024,"name":"extra_stroke_scale","url":"classes/Tremolo.html#extra_stroke_scale","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Tremolo"},{"id":6556,"kind":2048,"name":"draw","url":"classes/Tremolo.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Tremolo"},{"id":6557,"kind":2048,"name":"getWidth","url":"classes/Tremolo.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6558,"kind":2048,"name":"setWidth","url":"classes/Tremolo.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6559,"kind":2048,"name":"getNote","url":"classes/Tremolo.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6560,"kind":2048,"name":"checkAttachedNote","url":"classes/Tremolo.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6561,"kind":2048,"name":"setNote","url":"classes/Tremolo.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6562,"kind":2048,"name":"getIndex","url":"classes/Tremolo.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6563,"kind":2048,"name":"checkIndex","url":"classes/Tremolo.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6564,"kind":2048,"name":"setIndex","url":"classes/Tremolo.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6565,"kind":2048,"name":"getModifierContext","url":"classes/Tremolo.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6566,"kind":2048,"name":"checkModifierContext","url":"classes/Tremolo.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6567,"kind":2048,"name":"setModifierContext","url":"classes/Tremolo.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6568,"kind":2048,"name":"getPosition","url":"classes/Tremolo.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6569,"kind":2048,"name":"setPosition","url":"classes/Tremolo.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6570,"kind":2048,"name":"setTextLine","url":"classes/Tremolo.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6571,"kind":2048,"name":"setYShift","url":"classes/Tremolo.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6572,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/Tremolo.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6573,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/Tremolo.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6574,"kind":2048,"name":"setXShift","url":"classes/Tremolo.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6575,"kind":2048,"name":"getXShift","url":"classes/Tremolo.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6576,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/Tremolo.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6577,"kind":2048,"name":"addChildElement","url":"classes/Tremolo.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6578,"kind":2048,"name":"getCategory","url":"classes/Tremolo.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6579,"kind":2048,"name":"setStyle","url":"classes/Tremolo.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6580,"kind":2048,"name":"setGroupStyle","url":"classes/Tremolo.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6581,"kind":2048,"name":"getStyle","url":"classes/Tremolo.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6582,"kind":2048,"name":"applyStyle","url":"classes/Tremolo.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6583,"kind":2048,"name":"restoreStyle","url":"classes/Tremolo.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6584,"kind":2048,"name":"drawWithStyle","url":"classes/Tremolo.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6585,"kind":2048,"name":"hasClass","url":"classes/Tremolo.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6586,"kind":2048,"name":"addClass","url":"classes/Tremolo.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6587,"kind":2048,"name":"removeClass","url":"classes/Tremolo.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6588,"kind":2048,"name":"onRegister","url":"classes/Tremolo.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6589,"kind":2048,"name":"isRendered","url":"classes/Tremolo.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6590,"kind":2048,"name":"setRendered","url":"classes/Tremolo.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6591,"kind":2048,"name":"getAttributes","url":"classes/Tremolo.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6592,"kind":2048,"name":"getAttribute","url":"classes/Tremolo.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6593,"kind":2048,"name":"setAttribute","url":"classes/Tremolo.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6594,"kind":2048,"name":"getBoundingBox","url":"classes/Tremolo.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6595,"kind":2048,"name":"getContext","url":"classes/Tremolo.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6596,"kind":2048,"name":"setContext","url":"classes/Tremolo.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6597,"kind":2048,"name":"checkContext","url":"classes/Tremolo.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6598,"kind":262144,"name":"font","url":"classes/Tremolo.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6599,"kind":2048,"name":"setFont","url":"classes/Tremolo.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6600,"kind":2048,"name":"getFont","url":"classes/Tremolo.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6601,"kind":2048,"name":"resetFont","url":"classes/Tremolo.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6602,"kind":262144,"name":"fontInfo","url":"classes/Tremolo.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6603,"kind":2048,"name":"setFontSize","url":"classes/Tremolo.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6604,"kind":2048,"name":"getFontSize","url":"classes/Tremolo.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6605,"kind":262144,"name":"fontSize","url":"classes/Tremolo.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6606,"kind":262144,"name":"fontSizeInPoints","url":"classes/Tremolo.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6607,"kind":262144,"name":"fontSizeInPixels","url":"classes/Tremolo.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6608,"kind":262144,"name":"fontStyle","url":"classes/Tremolo.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6609,"kind":262144,"name":"fontWeight","url":"classes/Tremolo.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6610,"kind":128,"name":"Tuning","url":"classes/Tuning.html","classes":"tsd-kind-class"},{"id":6611,"kind":262144,"name":"names","url":"classes/Tuning.html#names","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Tuning"},{"id":6612,"kind":512,"name":"constructor","url":"classes/Tuning.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Tuning"},{"id":6613,"kind":2048,"name":"noteToInteger","url":"classes/Tuning.html#noteToInteger","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuning"},{"id":6614,"kind":2048,"name":"setTuning","url":"classes/Tuning.html#setTuning","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuning"},{"id":6615,"kind":2048,"name":"getValueForString","url":"classes/Tuning.html#getValueForString","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuning"},{"id":6616,"kind":2048,"name":"getValueForFret","url":"classes/Tuning.html#getValueForFret","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuning"},{"id":6617,"kind":2048,"name":"getNoteForFret","url":"classes/Tuning.html#getNoteForFret","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuning"},{"id":6618,"kind":256,"name":"TupletOptions","url":"interfaces/TupletOptions.html","classes":"tsd-kind-interface"},{"id":6619,"kind":1024,"name":"beats_occupied","url":"interfaces/TupletOptions.html#beats_occupied","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TupletOptions"},{"id":6620,"kind":1024,"name":"bracketed","url":"interfaces/TupletOptions.html#bracketed","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TupletOptions"},{"id":6621,"kind":1024,"name":"location","url":"interfaces/TupletOptions.html#location","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TupletOptions"},{"id":6622,"kind":1024,"name":"notes_occupied","url":"interfaces/TupletOptions.html#notes_occupied","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TupletOptions"},{"id":6623,"kind":1024,"name":"num_notes","url":"interfaces/TupletOptions.html#num_notes","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TupletOptions"},{"id":6624,"kind":1024,"name":"ratioed","url":"interfaces/TupletOptions.html#ratioed","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TupletOptions"},{"id":6625,"kind":1024,"name":"y_offset","url":"interfaces/TupletOptions.html#y_offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TupletOptions"},{"id":6626,"kind":8,"name":"TupletLocation","url":"enums/TupletLocation.html","classes":"tsd-kind-enum"},{"id":6627,"kind":16,"name":"BOTTOM","url":"enums/TupletLocation.html#BOTTOM","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"TupletLocation"},{"id":6628,"kind":16,"name":"TOP","url":"enums/TupletLocation.html#TOP","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"TupletLocation"},{"id":6629,"kind":128,"name":"Tuplet","url":"classes/Tuplet.html","classes":"tsd-kind-class"},{"id":6630,"kind":262144,"name":"CATEGORY","url":"classes/Tuplet.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Tuplet"},{"id":6631,"kind":262144,"name":"LOCATION_TOP","url":"classes/Tuplet.html#LOCATION_TOP","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Tuplet"},{"id":6632,"kind":262144,"name":"LOCATION_BOTTOM","url":"classes/Tuplet.html#LOCATION_BOTTOM","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Tuplet"},{"id":6633,"kind":262144,"name":"NESTING_OFFSET","url":"classes/Tuplet.html#NESTING_OFFSET","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Tuplet"},{"id":6634,"kind":262144,"name":"metrics","url":"classes/Tuplet.html#metrics","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Tuplet"},{"id":6635,"kind":1024,"name":"TEXT_FONT","url":"classes/Tuplet.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Tuplet"},{"id":6636,"kind":512,"name":"constructor","url":"classes/Tuplet.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Tuplet"},{"id":6637,"kind":1024,"name":"notes","url":"classes/Tuplet.html#notes","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Tuplet"},{"id":6638,"kind":2048,"name":"attach","url":"classes/Tuplet.html#attach","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6639,"kind":2048,"name":"detach","url":"classes/Tuplet.html#detach","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6640,"kind":2048,"name":"setBracketed","url":"classes/Tuplet.html#setBracketed","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6641,"kind":2048,"name":"setRatioed","url":"classes/Tuplet.html#setRatioed","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6642,"kind":2048,"name":"setTupletLocation","url":"classes/Tuplet.html#setTupletLocation","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6643,"kind":2048,"name":"getNotes","url":"classes/Tuplet.html#getNotes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6644,"kind":2048,"name":"getNoteCount","url":"classes/Tuplet.html#getNoteCount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6645,"kind":2048,"name":"beatsOccupiedDeprecationWarning","url":"classes/Tuplet.html#beatsOccupiedDeprecationWarning","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6646,"kind":2048,"name":"getBeatsOccupied","url":"classes/Tuplet.html#getBeatsOccupied","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6647,"kind":2048,"name":"setBeatsOccupied","url":"classes/Tuplet.html#setBeatsOccupied","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6648,"kind":2048,"name":"getNotesOccupied","url":"classes/Tuplet.html#getNotesOccupied","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6649,"kind":2048,"name":"setNotesOccupied","url":"classes/Tuplet.html#setNotesOccupied","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6650,"kind":2048,"name":"resolveGlyphs","url":"classes/Tuplet.html#resolveGlyphs","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6651,"kind":2048,"name":"getNestedTupletCount","url":"classes/Tuplet.html#getNestedTupletCount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6652,"kind":2048,"name":"getYPosition","url":"classes/Tuplet.html#getYPosition","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6653,"kind":2048,"name":"draw","url":"classes/Tuplet.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Tuplet"},{"id":6654,"kind":2048,"name":"addChildElement","url":"classes/Tuplet.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6655,"kind":2048,"name":"getCategory","url":"classes/Tuplet.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6656,"kind":2048,"name":"setStyle","url":"classes/Tuplet.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6657,"kind":2048,"name":"setGroupStyle","url":"classes/Tuplet.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6658,"kind":2048,"name":"getStyle","url":"classes/Tuplet.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6659,"kind":2048,"name":"applyStyle","url":"classes/Tuplet.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6660,"kind":2048,"name":"restoreStyle","url":"classes/Tuplet.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6661,"kind":2048,"name":"drawWithStyle","url":"classes/Tuplet.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6662,"kind":2048,"name":"hasClass","url":"classes/Tuplet.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6663,"kind":2048,"name":"addClass","url":"classes/Tuplet.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6664,"kind":2048,"name":"removeClass","url":"classes/Tuplet.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6665,"kind":2048,"name":"onRegister","url":"classes/Tuplet.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6666,"kind":2048,"name":"isRendered","url":"classes/Tuplet.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6667,"kind":2048,"name":"setRendered","url":"classes/Tuplet.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6668,"kind":2048,"name":"getAttributes","url":"classes/Tuplet.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6669,"kind":2048,"name":"getAttribute","url":"classes/Tuplet.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6670,"kind":2048,"name":"setAttribute","url":"classes/Tuplet.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6671,"kind":2048,"name":"getBoundingBox","url":"classes/Tuplet.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6672,"kind":2048,"name":"getContext","url":"classes/Tuplet.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6673,"kind":2048,"name":"setContext","url":"classes/Tuplet.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6674,"kind":2048,"name":"checkContext","url":"classes/Tuplet.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6675,"kind":262144,"name":"font","url":"classes/Tuplet.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6676,"kind":2048,"name":"setFont","url":"classes/Tuplet.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6677,"kind":2048,"name":"getFont","url":"classes/Tuplet.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6678,"kind":2048,"name":"resetFont","url":"classes/Tuplet.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6679,"kind":262144,"name":"fontInfo","url":"classes/Tuplet.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6680,"kind":2048,"name":"setFontSize","url":"classes/Tuplet.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6681,"kind":2048,"name":"getFontSize","url":"classes/Tuplet.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6682,"kind":262144,"name":"fontSize","url":"classes/Tuplet.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6683,"kind":262144,"name":"fontSizeInPoints","url":"classes/Tuplet.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6684,"kind":262144,"name":"fontSizeInPixels","url":"classes/Tuplet.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6685,"kind":262144,"name":"fontStyle","url":"classes/Tuplet.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6686,"kind":262144,"name":"fontWeight","url":"classes/Tuplet.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6687,"kind":64,"name":"isCategory","url":"modules.html#isCategory","classes":"tsd-kind-function tsd-has-type-parameter"},{"id":6688,"kind":64,"name":"isAccidental","url":"modules.html#isAccidental","classes":"tsd-kind-function"},{"id":6689,"kind":64,"name":"isAnnotation","url":"modules.html#isAnnotation","classes":"tsd-kind-function"},{"id":6690,"kind":64,"name":"isBarline","url":"modules.html#isBarline","classes":"tsd-kind-function"},{"id":6691,"kind":64,"name":"isDot","url":"modules.html#isDot","classes":"tsd-kind-function"},{"id":6692,"kind":64,"name":"isGraceNote","url":"modules.html#isGraceNote","classes":"tsd-kind-function"},{"id":6693,"kind":64,"name":"isGraceNoteGroup","url":"modules.html#isGraceNoteGroup","classes":"tsd-kind-function"},{"id":6694,"kind":64,"name":"isNote","url":"modules.html#isNote","classes":"tsd-kind-function"},{"id":6695,"kind":64,"name":"isRenderContext","url":"modules.html#isRenderContext","classes":"tsd-kind-function"},{"id":6696,"kind":64,"name":"isStaveNote","url":"modules.html#isStaveNote","classes":"tsd-kind-function"},{"id":6697,"kind":64,"name":"isStemmableNote","url":"modules.html#isStemmableNote","classes":"tsd-kind-function"},{"id":6698,"kind":64,"name":"isTabNote","url":"modules.html#isTabNote","classes":"tsd-kind-function"},{"id":6699,"kind":8,"name":"Category","url":"enums/Category.html","classes":"tsd-kind-enum"},{"id":6700,"kind":16,"name":"Accidental","url":"enums/Category.html#Accidental","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6701,"kind":16,"name":"Annotation","url":"enums/Category.html#Annotation","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6702,"kind":16,"name":"Articulation","url":"enums/Category.html#Articulation","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6703,"kind":16,"name":"Barline","url":"enums/Category.html#Barline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6704,"kind":16,"name":"BarNote","url":"enums/Category.html#BarNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6705,"kind":16,"name":"Beam","url":"enums/Category.html#Beam","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6706,"kind":16,"name":"Bend","url":"enums/Category.html#Bend","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6707,"kind":16,"name":"ChordSymbol","url":"enums/Category.html#ChordSymbol","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6708,"kind":16,"name":"Clef","url":"enums/Category.html#Clef","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6709,"kind":16,"name":"ClefNote","url":"enums/Category.html#ClefNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6710,"kind":16,"name":"Crescendo","url":"enums/Category.html#Crescendo","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6711,"kind":16,"name":"Curve","url":"enums/Category.html#Curve","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6712,"kind":16,"name":"Dot","url":"enums/Category.html#Dot","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6713,"kind":16,"name":"Element","url":"enums/Category.html#Element","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6714,"kind":16,"name":"Fraction","url":"enums/Category.html#Fraction","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6715,"kind":16,"name":"FretHandFinger","url":"enums/Category.html#FretHandFinger","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6716,"kind":16,"name":"GhostNote","url":"enums/Category.html#GhostNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6717,"kind":16,"name":"Glyph","url":"enums/Category.html#Glyph","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6718,"kind":16,"name":"GlyphNote","url":"enums/Category.html#GlyphNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6719,"kind":16,"name":"GraceNote","url":"enums/Category.html#GraceNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6720,"kind":16,"name":"GraceNoteGroup","url":"enums/Category.html#GraceNoteGroup","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6721,"kind":16,"name":"GraceTabNote","url":"enums/Category.html#GraceTabNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6722,"kind":16,"name":"KeySignature","url":"enums/Category.html#KeySignature","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6723,"kind":16,"name":"KeySigNote","url":"enums/Category.html#KeySigNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6724,"kind":16,"name":"Modifier","url":"enums/Category.html#Modifier","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6725,"kind":16,"name":"MultiMeasureRest","url":"enums/Category.html#MultiMeasureRest","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6726,"kind":16,"name":"Note","url":"enums/Category.html#Note","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6727,"kind":16,"name":"NoteHead","url":"enums/Category.html#NoteHead","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6728,"kind":16,"name":"NoteSubGroup","url":"enums/Category.html#NoteSubGroup","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6729,"kind":16,"name":"Ornament","url":"enums/Category.html#Ornament","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6730,"kind":16,"name":"Parenthesis","url":"enums/Category.html#Parenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6731,"kind":16,"name":"PedalMarking","url":"enums/Category.html#PedalMarking","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6732,"kind":16,"name":"RenderContext","url":"enums/Category.html#RenderContext","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6733,"kind":16,"name":"RepeatNote","url":"enums/Category.html#RepeatNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6734,"kind":16,"name":"Repetition","url":"enums/Category.html#Repetition","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6735,"kind":16,"name":"Stave","url":"enums/Category.html#Stave","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6736,"kind":16,"name":"StaveConnector","url":"enums/Category.html#StaveConnector","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6737,"kind":16,"name":"StaveHairpin","url":"enums/Category.html#StaveHairpin","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6738,"kind":16,"name":"StaveLine","url":"enums/Category.html#StaveLine","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6739,"kind":16,"name":"StaveModifier","url":"enums/Category.html#StaveModifier","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6740,"kind":16,"name":"StaveNote","url":"enums/Category.html#StaveNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6741,"kind":16,"name":"StaveSection","url":"enums/Category.html#StaveSection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6742,"kind":16,"name":"StaveTempo","url":"enums/Category.html#StaveTempo","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6743,"kind":16,"name":"StaveText","url":"enums/Category.html#StaveText","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6744,"kind":16,"name":"StaveTie","url":"enums/Category.html#StaveTie","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6745,"kind":16,"name":"Stem","url":"enums/Category.html#Stem","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6746,"kind":16,"name":"StemmableNote","url":"enums/Category.html#StemmableNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6747,"kind":16,"name":"StringNumber","url":"enums/Category.html#StringNumber","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6748,"kind":16,"name":"Stroke","url":"enums/Category.html#Stroke","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6749,"kind":16,"name":"System","url":"enums/Category.html#System","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6750,"kind":16,"name":"TabNote","url":"enums/Category.html#TabNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6751,"kind":16,"name":"TabSlide","url":"enums/Category.html#TabSlide","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6752,"kind":16,"name":"TabStave","url":"enums/Category.html#TabStave","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6753,"kind":16,"name":"TabTie","url":"enums/Category.html#TabTie","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6754,"kind":16,"name":"TextBracket","url":"enums/Category.html#TextBracket","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6755,"kind":16,"name":"TextDynamics","url":"enums/Category.html#TextDynamics","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6756,"kind":16,"name":"TextNote","url":"enums/Category.html#TextNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6757,"kind":16,"name":"Tickable","url":"enums/Category.html#Tickable","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6758,"kind":16,"name":"TimeSignature","url":"enums/Category.html#TimeSignature","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6759,"kind":16,"name":"TimeSigNote","url":"enums/Category.html#TimeSigNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6760,"kind":16,"name":"Tremolo","url":"enums/Category.html#Tremolo","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6761,"kind":16,"name":"Tuplet","url":"enums/Category.html#Tuplet","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6762,"kind":16,"name":"Vibrato","url":"enums/Category.html#Vibrato","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6763,"kind":16,"name":"VibratoBracket","url":"enums/Category.html#VibratoBracket","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6764,"kind":16,"name":"Voice","url":"enums/Category.html#Voice","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6765,"kind":16,"name":"Volta","url":"enums/Category.html#Volta","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6766,"kind":64,"name":"globalObject","url":"modules.html#globalObject","classes":"tsd-kind-function"},{"id":6767,"kind":64,"name":"defined","url":"modules.html#defined","classes":"tsd-kind-function tsd-has-type-parameter"},{"id":6768,"kind":64,"name":"log","url":"modules.html#log","classes":"tsd-kind-function"},{"id":6769,"kind":64,"name":"warn","url":"modules.html#warn","classes":"tsd-kind-function"},{"id":6770,"kind":64,"name":"midLine","url":"modules.html#midLine","classes":"tsd-kind-function"},{"id":6771,"kind":64,"name":"prefix","url":"modules.html#prefix","classes":"tsd-kind-function"},{"id":6772,"kind":64,"name":"normalizeAngle","url":"modules.html#normalizeAngle","classes":"tsd-kind-function"},{"id":6773,"kind":128,"name":"RuntimeError","url":"classes/RuntimeError.html","classes":"tsd-kind-class"},{"id":6774,"kind":65536,"name":"__type","url":"classes/RuntimeError.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"RuntimeError"},{"id":6775,"kind":512,"name":"constructor","url":"classes/RuntimeError.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"RuntimeError"},{"id":6776,"kind":1024,"name":"code","url":"classes/RuntimeError.html#code","classes":"tsd-kind-property tsd-parent-kind-class","parent":"RuntimeError"},{"id":6777,"kind":128,"name":"Vex","url":"classes/Vex.html","classes":"tsd-kind-class"},{"id":6778,"kind":1024,"name":"Flow","url":"classes/Vex.html#Flow","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Vex"},{"id":6779,"kind":2048,"name":"sortAndUnique","url":"classes/Vex.html#sortAndUnique","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Vex"},{"id":6780,"kind":2048,"name":"contains","url":"classes/Vex.html#contains","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Vex"},{"id":6781,"kind":2048,"name":"getCanvasContext","url":"classes/Vex.html#getCanvasContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Vex"},{"id":6782,"kind":2048,"name":"benchmark","url":"classes/Vex.html#benchmark","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Vex"},{"id":6783,"kind":2048,"name":"stackTrace","url":"classes/Vex.html#stackTrace","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Vex"},{"id":6784,"kind":1024,"name":"RERR","url":"classes/Vex.html#RERR","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Vex"},{"id":6785,"kind":1024,"name":"RuntimeError","url":"classes/Vex.html#RuntimeError","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Vex"},{"id":6786,"kind":512,"name":"constructor","url":"classes/Vex.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Vex"},{"id":6787,"kind":256,"name":"VibratoRenderOptions","url":"interfaces/VibratoRenderOptions.html","classes":"tsd-kind-interface"},{"id":6788,"kind":1024,"name":"wave_height","url":"interfaces/VibratoRenderOptions.html#wave_height","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"VibratoRenderOptions"},{"id":6789,"kind":1024,"name":"wave_girth","url":"interfaces/VibratoRenderOptions.html#wave_girth","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"VibratoRenderOptions"},{"id":6790,"kind":1024,"name":"vibrato_width","url":"interfaces/VibratoRenderOptions.html#vibrato_width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"VibratoRenderOptions"},{"id":6791,"kind":1024,"name":"harsh","url":"interfaces/VibratoRenderOptions.html#harsh","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"VibratoRenderOptions"},{"id":6792,"kind":1024,"name":"wave_width","url":"interfaces/VibratoRenderOptions.html#wave_width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"VibratoRenderOptions"},{"id":6793,"kind":128,"name":"Vibrato","url":"classes/Vibrato.html","classes":"tsd-kind-class"},{"id":6794,"kind":262144,"name":"CATEGORY","url":"classes/Vibrato.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Vibrato"},{"id":6795,"kind":2048,"name":"format","url":"classes/Vibrato.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Vibrato"},{"id":6796,"kind":2048,"name":"renderVibrato","url":"classes/Vibrato.html#renderVibrato","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Vibrato"},{"id":6797,"kind":262144,"name":"Position","url":"classes/Vibrato.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Vibrato"},{"id":6798,"kind":262144,"name":"PositionString","url":"classes/Vibrato.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Vibrato"},{"id":6799,"kind":1024,"name":"TEXT_FONT","url":"classes/Vibrato.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Vibrato"},{"id":6800,"kind":512,"name":"constructor","url":"classes/Vibrato.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Vibrato"},{"id":6801,"kind":1024,"name":"render_options","url":"classes/Vibrato.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Vibrato"},{"id":6802,"kind":2048,"name":"setHarsh","url":"classes/Vibrato.html#setHarsh","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Vibrato"},{"id":6803,"kind":2048,"name":"setVibratoWidth","url":"classes/Vibrato.html#setVibratoWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Vibrato"},{"id":6804,"kind":2048,"name":"draw","url":"classes/Vibrato.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Vibrato"},{"id":6805,"kind":2048,"name":"getWidth","url":"classes/Vibrato.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6806,"kind":2048,"name":"setWidth","url":"classes/Vibrato.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6807,"kind":2048,"name":"getNote","url":"classes/Vibrato.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6808,"kind":2048,"name":"checkAttachedNote","url":"classes/Vibrato.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6809,"kind":2048,"name":"setNote","url":"classes/Vibrato.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6810,"kind":2048,"name":"getIndex","url":"classes/Vibrato.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6811,"kind":2048,"name":"checkIndex","url":"classes/Vibrato.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6812,"kind":2048,"name":"setIndex","url":"classes/Vibrato.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6813,"kind":2048,"name":"getModifierContext","url":"classes/Vibrato.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6814,"kind":2048,"name":"checkModifierContext","url":"classes/Vibrato.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6815,"kind":2048,"name":"setModifierContext","url":"classes/Vibrato.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6816,"kind":2048,"name":"getPosition","url":"classes/Vibrato.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6817,"kind":2048,"name":"setPosition","url":"classes/Vibrato.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6818,"kind":2048,"name":"setTextLine","url":"classes/Vibrato.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6819,"kind":2048,"name":"setYShift","url":"classes/Vibrato.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6820,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/Vibrato.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6821,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/Vibrato.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6822,"kind":2048,"name":"setXShift","url":"classes/Vibrato.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6823,"kind":2048,"name":"getXShift","url":"classes/Vibrato.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6824,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/Vibrato.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6825,"kind":2048,"name":"addChildElement","url":"classes/Vibrato.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6826,"kind":2048,"name":"getCategory","url":"classes/Vibrato.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6827,"kind":2048,"name":"setStyle","url":"classes/Vibrato.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6828,"kind":2048,"name":"setGroupStyle","url":"classes/Vibrato.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6829,"kind":2048,"name":"getStyle","url":"classes/Vibrato.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6830,"kind":2048,"name":"applyStyle","url":"classes/Vibrato.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6831,"kind":2048,"name":"restoreStyle","url":"classes/Vibrato.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6832,"kind":2048,"name":"drawWithStyle","url":"classes/Vibrato.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6833,"kind":2048,"name":"hasClass","url":"classes/Vibrato.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6834,"kind":2048,"name":"addClass","url":"classes/Vibrato.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6835,"kind":2048,"name":"removeClass","url":"classes/Vibrato.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6836,"kind":2048,"name":"onRegister","url":"classes/Vibrato.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6837,"kind":2048,"name":"isRendered","url":"classes/Vibrato.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6838,"kind":2048,"name":"setRendered","url":"classes/Vibrato.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6839,"kind":2048,"name":"getAttributes","url":"classes/Vibrato.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6840,"kind":2048,"name":"getAttribute","url":"classes/Vibrato.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6841,"kind":2048,"name":"setAttribute","url":"classes/Vibrato.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6842,"kind":2048,"name":"getBoundingBox","url":"classes/Vibrato.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6843,"kind":2048,"name":"getContext","url":"classes/Vibrato.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6844,"kind":2048,"name":"setContext","url":"classes/Vibrato.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6845,"kind":2048,"name":"checkContext","url":"classes/Vibrato.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6846,"kind":262144,"name":"font","url":"classes/Vibrato.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6847,"kind":2048,"name":"setFont","url":"classes/Vibrato.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6848,"kind":2048,"name":"getFont","url":"classes/Vibrato.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6849,"kind":2048,"name":"resetFont","url":"classes/Vibrato.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6850,"kind":262144,"name":"fontInfo","url":"classes/Vibrato.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6851,"kind":2048,"name":"setFontSize","url":"classes/Vibrato.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6852,"kind":2048,"name":"getFontSize","url":"classes/Vibrato.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6853,"kind":262144,"name":"fontSize","url":"classes/Vibrato.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6854,"kind":262144,"name":"fontSizeInPoints","url":"classes/Vibrato.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6855,"kind":262144,"name":"fontSizeInPixels","url":"classes/Vibrato.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6856,"kind":262144,"name":"fontStyle","url":"classes/Vibrato.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6857,"kind":262144,"name":"fontWeight","url":"classes/Vibrato.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6858,"kind":128,"name":"VibratoBracket","url":"classes/VibratoBracket.html","classes":"tsd-kind-class"},{"id":6859,"kind":1024,"name":"DEBUG","url":"classes/VibratoBracket.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"VibratoBracket"},{"id":6860,"kind":262144,"name":"CATEGORY","url":"classes/VibratoBracket.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"VibratoBracket"},{"id":6861,"kind":1024,"name":"TEXT_FONT","url":"classes/VibratoBracket.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"VibratoBracket"},{"id":6862,"kind":512,"name":"constructor","url":"classes/VibratoBracket.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"VibratoBracket"},{"id":6863,"kind":1024,"name":"render_options","url":"classes/VibratoBracket.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"VibratoBracket"},{"id":6864,"kind":65536,"name":"__type","url":"classes/VibratoBracket.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"VibratoBracket"},{"id":6865,"kind":1024,"name":"vibrato_width","url":"classes/VibratoBracket.html#__type.vibrato_width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"VibratoBracket.__type"},{"id":6866,"kind":1024,"name":"wave_height","url":"classes/VibratoBracket.html#__type.wave_height","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"VibratoBracket.__type"},{"id":6867,"kind":1024,"name":"wave_girth","url":"classes/VibratoBracket.html#__type.wave_girth","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"VibratoBracket.__type"},{"id":6868,"kind":1024,"name":"harsh","url":"classes/VibratoBracket.html#__type.harsh","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"VibratoBracket.__type"},{"id":6869,"kind":1024,"name":"wave_width","url":"classes/VibratoBracket.html#__type.wave_width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"VibratoBracket.__type"},{"id":6870,"kind":2048,"name":"setLine","url":"classes/VibratoBracket.html#setLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"VibratoBracket"},{"id":6871,"kind":2048,"name":"setHarsh","url":"classes/VibratoBracket.html#setHarsh","classes":"tsd-kind-method tsd-parent-kind-class","parent":"VibratoBracket"},{"id":6872,"kind":2048,"name":"draw","url":"classes/VibratoBracket.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"VibratoBracket"},{"id":6873,"kind":2048,"name":"addChildElement","url":"classes/VibratoBracket.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6874,"kind":2048,"name":"getCategory","url":"classes/VibratoBracket.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6875,"kind":2048,"name":"setStyle","url":"classes/VibratoBracket.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6876,"kind":2048,"name":"setGroupStyle","url":"classes/VibratoBracket.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6877,"kind":2048,"name":"getStyle","url":"classes/VibratoBracket.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6878,"kind":2048,"name":"applyStyle","url":"classes/VibratoBracket.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6879,"kind":2048,"name":"restoreStyle","url":"classes/VibratoBracket.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6880,"kind":2048,"name":"drawWithStyle","url":"classes/VibratoBracket.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6881,"kind":2048,"name":"hasClass","url":"classes/VibratoBracket.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6882,"kind":2048,"name":"addClass","url":"classes/VibratoBracket.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6883,"kind":2048,"name":"removeClass","url":"classes/VibratoBracket.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6884,"kind":2048,"name":"onRegister","url":"classes/VibratoBracket.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6885,"kind":2048,"name":"isRendered","url":"classes/VibratoBracket.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6886,"kind":2048,"name":"setRendered","url":"classes/VibratoBracket.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6887,"kind":2048,"name":"getAttributes","url":"classes/VibratoBracket.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6888,"kind":2048,"name":"getAttribute","url":"classes/VibratoBracket.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6889,"kind":2048,"name":"setAttribute","url":"classes/VibratoBracket.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6890,"kind":2048,"name":"getBoundingBox","url":"classes/VibratoBracket.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6891,"kind":2048,"name":"getContext","url":"classes/VibratoBracket.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6892,"kind":2048,"name":"setContext","url":"classes/VibratoBracket.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6893,"kind":2048,"name":"checkContext","url":"classes/VibratoBracket.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6894,"kind":262144,"name":"font","url":"classes/VibratoBracket.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6895,"kind":2048,"name":"setFont","url":"classes/VibratoBracket.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6896,"kind":2048,"name":"getFont","url":"classes/VibratoBracket.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6897,"kind":2048,"name":"resetFont","url":"classes/VibratoBracket.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6898,"kind":262144,"name":"fontInfo","url":"classes/VibratoBracket.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6899,"kind":2048,"name":"setFontSize","url":"classes/VibratoBracket.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6900,"kind":2048,"name":"getFontSize","url":"classes/VibratoBracket.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6901,"kind":262144,"name":"fontSize","url":"classes/VibratoBracket.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6902,"kind":262144,"name":"fontSizeInPoints","url":"classes/VibratoBracket.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6903,"kind":262144,"name":"fontSizeInPixels","url":"classes/VibratoBracket.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6904,"kind":262144,"name":"fontStyle","url":"classes/VibratoBracket.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6905,"kind":262144,"name":"fontWeight","url":"classes/VibratoBracket.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6906,"kind":256,"name":"VoiceTime","url":"interfaces/VoiceTime.html","classes":"tsd-kind-interface"},{"id":6907,"kind":1024,"name":"num_beats","url":"interfaces/VoiceTime.html#num_beats","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"VoiceTime"},{"id":6908,"kind":1024,"name":"beat_value","url":"interfaces/VoiceTime.html#beat_value","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"VoiceTime"},{"id":6909,"kind":1024,"name":"resolution","url":"interfaces/VoiceTime.html#resolution","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"VoiceTime"},{"id":6910,"kind":8,"name":"VoiceMode","url":"enums/VoiceMode.html","classes":"tsd-kind-enum"},{"id":6911,"kind":16,"name":"STRICT","url":"enums/VoiceMode.html#STRICT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VoiceMode"},{"id":6912,"kind":16,"name":"SOFT","url":"enums/VoiceMode.html#SOFT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VoiceMode"},{"id":6913,"kind":16,"name":"FULL","url":"enums/VoiceMode.html#FULL","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VoiceMode"},{"id":6914,"kind":128,"name":"Voice","url":"classes/Voice.html","classes":"tsd-kind-class"},{"id":6915,"kind":262144,"name":"CATEGORY","url":"classes/Voice.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Voice"},{"id":6916,"kind":262144,"name":"Mode","url":"classes/Voice.html#Mode","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Voice"},{"id":6917,"kind":1024,"name":"TEXT_FONT","url":"classes/Voice.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Voice"},{"id":6918,"kind":512,"name":"constructor","url":"classes/Voice.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Voice"},{"id":6919,"kind":2048,"name":"getTotalTicks","url":"classes/Voice.html#getTotalTicks","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":6920,"kind":2048,"name":"getTicksUsed","url":"classes/Voice.html#getTicksUsed","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":6921,"kind":2048,"name":"getLargestTickWidth","url":"classes/Voice.html#getLargestTickWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":6922,"kind":2048,"name":"getSmallestTickCount","url":"classes/Voice.html#getSmallestTickCount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":6923,"kind":2048,"name":"getTickables","url":"classes/Voice.html#getTickables","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":6924,"kind":2048,"name":"getMode","url":"classes/Voice.html#getMode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":6925,"kind":2048,"name":"setMode","url":"classes/Voice.html#setMode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":6926,"kind":2048,"name":"getResolutionMultiplier","url":"classes/Voice.html#getResolutionMultiplier","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":6927,"kind":2048,"name":"getActualResolution","url":"classes/Voice.html#getActualResolution","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":6928,"kind":2048,"name":"setStave","url":"classes/Voice.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":6929,"kind":2048,"name":"getStave","url":"classes/Voice.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":6930,"kind":2048,"name":"getBoundingBox","url":"classes/Voice.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Voice"},{"id":6931,"kind":2048,"name":"setStrict","url":"classes/Voice.html#setStrict","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":6932,"kind":2048,"name":"isComplete","url":"classes/Voice.html#isComplete","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":6933,"kind":2048,"name":"setSoftmaxFactor","url":"classes/Voice.html#setSoftmaxFactor","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":6934,"kind":2048,"name":"softmax","url":"classes/Voice.html#softmax","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":6935,"kind":2048,"name":"addTickable","url":"classes/Voice.html#addTickable","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":6936,"kind":2048,"name":"addTickables","url":"classes/Voice.html#addTickables","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":6937,"kind":2048,"name":"preFormat","url":"classes/Voice.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":6938,"kind":2048,"name":"checkStave","url":"classes/Voice.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":6939,"kind":2048,"name":"draw","url":"classes/Voice.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Voice"},{"id":6940,"kind":2048,"name":"addChildElement","url":"classes/Voice.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6941,"kind":2048,"name":"getCategory","url":"classes/Voice.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6942,"kind":2048,"name":"setStyle","url":"classes/Voice.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6943,"kind":2048,"name":"setGroupStyle","url":"classes/Voice.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6944,"kind":2048,"name":"getStyle","url":"classes/Voice.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6945,"kind":2048,"name":"applyStyle","url":"classes/Voice.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6946,"kind":2048,"name":"restoreStyle","url":"classes/Voice.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6947,"kind":2048,"name":"drawWithStyle","url":"classes/Voice.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6948,"kind":2048,"name":"hasClass","url":"classes/Voice.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6949,"kind":2048,"name":"addClass","url":"classes/Voice.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6950,"kind":2048,"name":"removeClass","url":"classes/Voice.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6951,"kind":2048,"name":"onRegister","url":"classes/Voice.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6952,"kind":2048,"name":"isRendered","url":"classes/Voice.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6953,"kind":2048,"name":"setRendered","url":"classes/Voice.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6954,"kind":2048,"name":"getAttributes","url":"classes/Voice.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6955,"kind":2048,"name":"getAttribute","url":"classes/Voice.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6956,"kind":2048,"name":"setAttribute","url":"classes/Voice.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6957,"kind":2048,"name":"getContext","url":"classes/Voice.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6958,"kind":2048,"name":"setContext","url":"classes/Voice.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6959,"kind":2048,"name":"checkContext","url":"classes/Voice.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6960,"kind":262144,"name":"font","url":"classes/Voice.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6961,"kind":2048,"name":"setFont","url":"classes/Voice.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6962,"kind":2048,"name":"getFont","url":"classes/Voice.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6963,"kind":2048,"name":"resetFont","url":"classes/Voice.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6964,"kind":262144,"name":"fontInfo","url":"classes/Voice.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6965,"kind":2048,"name":"setFontSize","url":"classes/Voice.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6966,"kind":2048,"name":"getFontSize","url":"classes/Voice.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6967,"kind":262144,"name":"fontSize","url":"classes/Voice.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6968,"kind":262144,"name":"fontSizeInPoints","url":"classes/Voice.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6969,"kind":262144,"name":"fontSizeInPixels","url":"classes/Voice.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6970,"kind":262144,"name":"fontStyle","url":"classes/Voice.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6971,"kind":262144,"name":"fontWeight","url":"classes/Voice.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":6972,"kind":64,"name":"isHTMLCanvas","url":"modules.html#isHTMLCanvas","classes":"tsd-kind-function"},{"id":6973,"kind":64,"name":"isHTMLDiv","url":"modules.html#isHTMLDiv","classes":"tsd-kind-function"}],"index":{"version":"2.3.9","fields":["name","parent"],"fieldVectors":[["name/0",[0,58.797]],["parent/0",[]],["name/1",[1,49.281]],["parent/1",[0,5.801]],["name/2",[2,84.446]],["parent/2",[3,6.885]],["name/3",[0,58.797]],["parent/3",[3,6.885]],["name/4",[4,84.446]],["parent/4",[3,6.885]],["name/5",[5,84.446]],["parent/5",[3,6.885]],["name/6",[6,84.446]],["parent/6",[3,6.885]],["name/7",[7,60.467]],["parent/7",[3,6.885]],["name/8",[8,44.998]],["parent/8",[]],["name/9",[9,56.931]],["parent/9",[8,4.44]],["name/10",[10,39.265]],["parent/10",[8,4.44]],["name/11",[11,57.82]],["parent/11",[8,4.44]],["name/12",[12,84.446]],["parent/12",[8,4.44]],["name/13",[13,84.446]],["parent/13",[8,4.44]],["name/14",[14,53.688]],["parent/14",[8,4.44]],["name/15",[15,59.323]],["parent/15",[8,4.44]],["name/16",[16,46.529]],["parent/16",[8,4.44]],["name/17",[17,43.671]],["parent/17",[8,4.44]],["name/18",[18,57.366]],["parent/18",[8,4.44]],["name/19",[19,52.528]],["parent/19",[8,4.44]],["name/20",[1,49.281]],["parent/20",[8,4.44]],["name/21",[20,84.446]],["parent/21",[21,7.496]],["name/22",[22,73.46]],["parent/22",[21,7.496]],["name/23",[23,84.446]],["parent/23",[21,7.496]],["name/24",[24,49.085]],["parent/24",[8,4.44]],["name/25",[25,60.467]],["parent/25",[8,4.44]],["name/26",[26,84.446]],["parent/26",[8,4.44]],["name/27",[27,44.252]],["parent/27",[8,4.44]],["name/28",[28,50.106]],["parent/28",[8,4.44]],["name/29",[29,60.467]],["parent/29",[8,4.44]],["name/30",[30,60.467]],["parent/30",[8,4.44]],["name/31",[31,60.467]],["parent/31",[8,4.44]],["name/32",[32,60.467]],["parent/32",[8,4.44]],["name/33",[33,60.467]],["parent/33",[8,4.44]],["name/34",[34,53.091]],["parent/34",[8,4.44]],["name/35",[35,53.091]],["parent/35",[8,4.44]],["name/36",[36,53.091]],["parent/36",[8,4.44]],["name/37",[37,55.729]],["parent/37",[8,4.44]],["name/38",[38,55.359]],["parent/38",[8,4.44]],["name/39",[39,60.467]],["parent/39",[8,4.44]],["name/40",[40,59.323]],["parent/40",[8,4.44]],["name/41",[41,60.467]],["parent/41",[8,4.44]],["name/42",[42,60.467]],["parent/42",[8,4.44]],["name/43",[43,52.257]],["parent/43",[8,4.44]],["name/44",[44,52.257]],["parent/44",[8,4.44]],["name/45",[45,60.467]],["parent/45",[8,4.44]],["name/46",[46,46.68]],["parent/46",[8,4.44]],["name/47",[47,46.68]],["parent/47",[8,4.44]],["name/48",[48,46.68]],["parent/48",[8,4.44]],["name/49",[49,46.68]],["parent/49",[8,4.44]],["name/50",[50,46.68]],["parent/50",[8,4.44]],["name/51",[51,46.68]],["parent/51",[8,4.44]],["name/52",[52,46.68]],["parent/52",[8,4.44]],["name/53",[53,46.68]],["parent/53",[8,4.44]],["name/54",[54,46.68]],["parent/54",[8,4.44]],["name/55",[55,46.68]],["parent/55",[8,4.44]],["name/56",[56,46.68]],["parent/56",[8,4.44]],["name/57",[57,46.68]],["parent/57",[8,4.44]],["name/58",[58,46.68]],["parent/58",[8,4.44]],["name/59",[59,46.68]],["parent/59",[8,4.44]],["name/60",[60,46.68]],["parent/60",[8,4.44]],["name/61",[61,46.68]],["parent/61",[8,4.44]],["name/62",[62,46.68]],["parent/62",[8,4.44]],["name/63",[63,46.68]],["parent/63",[8,4.44]],["name/64",[64,46.38]],["parent/64",[8,4.44]],["name/65",[65,46.38]],["parent/65",[8,4.44]],["name/66",[66,46.68]],["parent/66",[8,4.44]],["name/67",[67,40.836]],["parent/67",[8,4.44]],["name/68",[68,46.233]],["parent/68",[8,4.44]],["name/69",[69,46.233]],["parent/69",[8,4.44]],["name/70",[70,46.68]],["parent/70",[8,4.44]],["name/71",[71,45.945]],["parent/71",[8,4.44]],["name/72",[72,46.529]],["parent/72",[8,4.44]],["name/73",[73,46.68]],["parent/73",[8,4.44]],["name/74",[74,46.68]],["parent/74",[8,4.44]],["name/75",[75,46.68]],["parent/75",[8,4.44]],["name/76",[76,46.529]],["parent/76",[8,4.44]],["name/77",[77,46.088]],["parent/77",[8,4.44]],["name/78",[78,46.088]],["parent/78",[8,4.44]],["name/79",[79,69.783]],["parent/79",[]],["name/80",[80,69.783]],["parent/80",[79,6.885]],["name/81",[81,69.783]],["parent/81",[79,6.885]],["name/82",[82,69.783]],["parent/82",[79,6.885]],["name/83",[83,75.973]],["parent/83",[79,6.885]],["name/84",[84,69.783]],["parent/84",[]],["name/85",[85,71.453]],["parent/85",[84,6.885]],["name/86",[81,69.783]],["parent/86",[84,6.885]],["name/87",[86,71.453]],["parent/87",[84,6.885]],["name/88",[83,75.973]],["parent/88",[84,6.885]],["name/89",[87,45.393]],["parent/89",[]],["name/90",[9,56.931]],["parent/90",[87,4.478]],["name/91",[10,39.265]],["parent/91",[87,4.478]],["name/92",[16,46.529]],["parent/92",[87,4.478]],["name/93",[88,79.338]],["parent/93",[87,4.478]],["name/94",[89,79.338]],["parent/94",[87,4.478]],["name/95",[90,79.338]],["parent/95",[87,4.478]],["name/96",[91,79.338]],["parent/96",[87,4.478]],["name/97",[92,84.446]],["parent/97",[87,4.478]],["name/98",[11,57.82]],["parent/98",[87,4.478]],["name/99",[14,53.688]],["parent/99",[87,4.478]],["name/100",[15,59.323]],["parent/100",[87,4.478]],["name/101",[17,43.671]],["parent/101",[87,4.478]],["name/102",[93,84.446]],["parent/102",[87,4.478]],["name/103",[94,84.446]],["parent/103",[87,4.478]],["name/104",[95,79.338]],["parent/104",[87,4.478]],["name/105",[27,44.252]],["parent/105",[87,4.478]],["name/106",[24,49.085]],["parent/106",[87,4.478]],["name/107",[28,50.106]],["parent/107",[87,4.478]],["name/108",[29,60.467]],["parent/108",[87,4.478]],["name/109",[30,60.467]],["parent/109",[87,4.478]],["name/110",[25,60.467]],["parent/110",[87,4.478]],["name/111",[31,60.467]],["parent/111",[87,4.478]],["name/112",[32,60.467]],["parent/112",[87,4.478]],["name/113",[33,60.467]],["parent/113",[87,4.478]],["name/114",[34,53.091]],["parent/114",[87,4.478]],["name/115",[35,53.091]],["parent/115",[87,4.478]],["name/116",[36,53.091]],["parent/116",[87,4.478]],["name/117",[37,55.729]],["parent/117",[87,4.478]],["name/118",[38,55.359]],["parent/118",[87,4.478]],["name/119",[39,60.467]],["parent/119",[87,4.478]],["name/120",[40,59.323]],["parent/120",[87,4.478]],["name/121",[41,60.467]],["parent/121",[87,4.478]],["name/122",[42,60.467]],["parent/122",[87,4.478]],["name/123",[43,52.257]],["parent/123",[87,4.478]],["name/124",[44,52.257]],["parent/124",[87,4.478]],["name/125",[45,60.467]],["parent/125",[87,4.478]],["name/126",[46,46.68]],["parent/126",[87,4.478]],["name/127",[47,46.68]],["parent/127",[87,4.478]],["name/128",[48,46.68]],["parent/128",[87,4.478]],["name/129",[49,46.68]],["parent/129",[87,4.478]],["name/130",[50,46.68]],["parent/130",[87,4.478]],["name/131",[51,46.68]],["parent/131",[87,4.478]],["name/132",[52,46.68]],["parent/132",[87,4.478]],["name/133",[53,46.68]],["parent/133",[87,4.478]],["name/134",[54,46.68]],["parent/134",[87,4.478]],["name/135",[55,46.68]],["parent/135",[87,4.478]],["name/136",[56,46.68]],["parent/136",[87,4.478]],["name/137",[57,46.68]],["parent/137",[87,4.478]],["name/138",[58,46.68]],["parent/138",[87,4.478]],["name/139",[59,46.68]],["parent/139",[87,4.478]],["name/140",[60,46.68]],["parent/140",[87,4.478]],["name/141",[61,46.68]],["parent/141",[87,4.478]],["name/142",[62,46.68]],["parent/142",[87,4.478]],["name/143",[63,46.68]],["parent/143",[87,4.478]],["name/144",[64,46.38]],["parent/144",[87,4.478]],["name/145",[65,46.38]],["parent/145",[87,4.478]],["name/146",[66,46.68]],["parent/146",[87,4.478]],["name/147",[67,40.836]],["parent/147",[87,4.478]],["name/148",[68,46.233]],["parent/148",[87,4.478]],["name/149",[69,46.233]],["parent/149",[87,4.478]],["name/150",[70,46.68]],["parent/150",[87,4.478]],["name/151",[71,45.945]],["parent/151",[87,4.478]],["name/152",[72,46.529]],["parent/152",[87,4.478]],["name/153",[73,46.68]],["parent/153",[87,4.478]],["name/154",[74,46.68]],["parent/154",[87,4.478]],["name/155",[75,46.68]],["parent/155",[87,4.478]],["name/156",[76,46.529]],["parent/156",[87,4.478]],["name/157",[77,46.088]],["parent/157",[87,4.478]],["name/158",[78,46.088]],["parent/158",[87,4.478]],["name/159",[96,71.453]],["parent/159",[]],["name/160",[97,67.1]],["parent/160",[96,7.05]],["name/161",[98,84.446]],["parent/161",[96,7.05]],["name/162",[99,84.446]],["parent/162",[96,7.05]],["name/163",[100,84.446]],["parent/163",[96,7.05]],["name/164",[101,45.945]],["parent/164",[]],["name/165",[9,56.931]],["parent/165",[101,4.533]],["name/166",[10,39.265]],["parent/166",[101,4.533]],["name/167",[11,57.82]],["parent/167",[101,4.533]],["name/168",[102,79.338]],["parent/168",[101,4.533]],["name/169",[14,53.688]],["parent/169",[101,4.533]],["name/170",[15,59.323]],["parent/170",[101,4.533]],["name/171",[16,46.529]],["parent/171",[101,4.533]],["name/172",[17,43.671]],["parent/172",[101,4.533]],["name/173",[18,57.366]],["parent/173",[101,4.533]],["name/174",[19,52.528]],["parent/174",[101,4.533]],["name/175",[1,49.281]],["parent/175",[101,4.533]],["name/176",[22,73.46]],["parent/176",[103,8.332]],["name/177",[27,44.252]],["parent/177",[101,4.533]],["name/178",[24,49.085]],["parent/178",[101,4.533]],["name/179",[28,50.106]],["parent/179",[101,4.533]],["name/180",[29,60.467]],["parent/180",[101,4.533]],["name/181",[30,60.467]],["parent/181",[101,4.533]],["name/182",[25,60.467]],["parent/182",[101,4.533]],["name/183",[31,60.467]],["parent/183",[101,4.533]],["name/184",[32,60.467]],["parent/184",[101,4.533]],["name/185",[33,60.467]],["parent/185",[101,4.533]],["name/186",[34,53.091]],["parent/186",[101,4.533]],["name/187",[35,53.091]],["parent/187",[101,4.533]],["name/188",[36,53.091]],["parent/188",[101,4.533]],["name/189",[37,55.729]],["parent/189",[101,4.533]],["name/190",[38,55.359]],["parent/190",[101,4.533]],["name/191",[39,60.467]],["parent/191",[101,4.533]],["name/192",[40,59.323]],["parent/192",[101,4.533]],["name/193",[41,60.467]],["parent/193",[101,4.533]],["name/194",[42,60.467]],["parent/194",[101,4.533]],["name/195",[43,52.257]],["parent/195",[101,4.533]],["name/196",[44,52.257]],["parent/196",[101,4.533]],["name/197",[45,60.467]],["parent/197",[101,4.533]],["name/198",[46,46.68]],["parent/198",[101,4.533]],["name/199",[47,46.68]],["parent/199",[101,4.533]],["name/200",[48,46.68]],["parent/200",[101,4.533]],["name/201",[49,46.68]],["parent/201",[101,4.533]],["name/202",[50,46.68]],["parent/202",[101,4.533]],["name/203",[51,46.68]],["parent/203",[101,4.533]],["name/204",[52,46.68]],["parent/204",[101,4.533]],["name/205",[53,46.68]],["parent/205",[101,4.533]],["name/206",[54,46.68]],["parent/206",[101,4.533]],["name/207",[55,46.68]],["parent/207",[101,4.533]],["name/208",[56,46.68]],["parent/208",[101,4.533]],["name/209",[57,46.68]],["parent/209",[101,4.533]],["name/210",[58,46.68]],["parent/210",[101,4.533]],["name/211",[59,46.68]],["parent/211",[101,4.533]],["name/212",[60,46.68]],["parent/212",[101,4.533]],["name/213",[61,46.68]],["parent/213",[101,4.533]],["name/214",[62,46.68]],["parent/214",[101,4.533]],["name/215",[63,46.68]],["parent/215",[101,4.533]],["name/216",[64,46.38]],["parent/216",[101,4.533]],["name/217",[65,46.38]],["parent/217",[101,4.533]],["name/218",[66,46.68]],["parent/218",[101,4.533]],["name/219",[67,40.836]],["parent/219",[101,4.533]],["name/220",[68,46.233]],["parent/220",[101,4.533]],["name/221",[69,46.233]],["parent/221",[101,4.533]],["name/222",[70,46.68]],["parent/222",[101,4.533]],["name/223",[71,45.945]],["parent/223",[101,4.533]],["name/224",[72,46.529]],["parent/224",[101,4.533]],["name/225",[73,46.68]],["parent/225",[101,4.533]],["name/226",[74,46.68]],["parent/226",[101,4.533]],["name/227",[75,46.68]],["parent/227",[101,4.533]],["name/228",[76,46.529]],["parent/228",[101,4.533]],["name/229",[77,46.088]],["parent/229",[101,4.533]],["name/230",[78,46.088]],["parent/230",[101,4.533]],["name/231",[104,40.02]],["parent/231",[]],["name/232",[9,56.931]],["parent/232",[104,3.948]],["name/233",[10,39.265]],["parent/233",[104,3.948]],["name/234",[105,59.879]],["parent/234",[104,3.948]],["name/235",[16,46.529]],["parent/235",[104,3.948]],["name/236",[17,43.671]],["parent/236",[104,3.948]],["name/237",[106,75.973]],["parent/237",[104,3.948]],["name/238",[107,69.783]],["parent/238",[104,3.948]],["name/239",[108,59.323]],["parent/239",[104,3.948]],["name/240",[109,56.114]],["parent/240",[104,3.948]],["name/241",[27,44.252]],["parent/241",[104,3.948]],["name/242",[110,43.121]],["parent/242",[104,3.948]],["name/243",[111,56.931]],["parent/243",[104,3.948]],["name/244",[112,54.657]],["parent/244",[104,3.948]],["name/245",[19,52.528]],["parent/245",[104,3.948]],["name/246",[1,49.281]],["parent/246",[104,3.948]],["name/247",[113,59.879]],["parent/247",[114,6.164]],["name/248",[27,44.252]],["parent/248",[114,6.164]],["name/249",[115,59.879]],["parent/249",[114,6.164]],["name/250",[116,59.879]],["parent/250",[114,6.164]],["name/251",[117,56.931]],["parent/251",[114,6.164]],["name/252",[118,59.879]],["parent/252",[114,6.164]],["name/253",[119,59.879]],["parent/253",[114,6.164]],["name/254",[120,57.366]],["parent/254",[114,6.164]],["name/255",[121,59.879]],["parent/255",[114,6.164]],["name/256",[122,59.879]],["parent/256",[114,6.164]],["name/257",[123,56.514]],["parent/257",[114,6.164]],["name/258",[67,40.836]],["parent/258",[114,6.164]],["name/259",[124,58.297]],["parent/259",[114,6.164]],["name/260",[125,59.879]],["parent/260",[104,3.948]],["name/261",[126,59.879]],["parent/261",[104,3.948]],["name/262",[127,59.323]],["parent/262",[104,3.948]],["name/263",[128,59.879]],["parent/263",[104,3.948]],["name/264",[129,54.001]],["parent/264",[104,3.948]],["name/265",[130,54.001]],["parent/265",[104,3.948]],["name/266",[131,53.688]],["parent/266",[104,3.948]],["name/267",[132,59.879]],["parent/267",[104,3.948]],["name/268",[133,59.879]],["parent/268",[104,3.948]],["name/269",[134,59.879]],["parent/269",[104,3.948]],["name/270",[135,59.879]],["parent/270",[104,3.948]],["name/271",[136,59.323]],["parent/271",[104,3.948]],["name/272",[137,59.879]],["parent/272",[104,3.948]],["name/273",[138,59.879]],["parent/273",[104,3.948]],["name/274",[139,59.879]],["parent/274",[104,3.948]],["name/275",[140,59.879]],["parent/275",[104,3.948]],["name/276",[141,59.879]],["parent/276",[104,3.948]],["name/277",[142,59.879]],["parent/277",[104,3.948]],["name/278",[143,58.797]],["parent/278",[104,3.948]],["name/279",[144,59.323]],["parent/279",[104,3.948]],["name/280",[145,59.323]],["parent/280",[104,3.948]],["name/281",[146,59.323]],["parent/281",[104,3.948]],["name/282",[147,59.323]],["parent/282",[104,3.948]],["name/283",[148,59.879]],["parent/283",[104,3.948]],["name/284",[149,59.879]],["parent/284",[104,3.948]],["name/285",[150,59.879]],["parent/285",[104,3.948]],["name/286",[151,59.879]],["parent/286",[104,3.948]],["name/287",[152,59.879]],["parent/287",[104,3.948]],["name/288",[153,59.879]],["parent/288",[104,3.948]],["name/289",[154,59.879]],["parent/289",[104,3.948]],["name/290",[155,59.879]],["parent/290",[104,3.948]],["name/291",[156,57.82]],["parent/291",[104,3.948]],["name/292",[157,59.879]],["parent/292",[104,3.948]],["name/293",[158,59.879]],["parent/293",[104,3.948]],["name/294",[159,59.879]],["parent/294",[104,3.948]],["name/295",[160,59.879]],["parent/295",[104,3.948]],["name/296",[161,59.879]],["parent/296",[104,3.948]],["name/297",[162,56.114]],["parent/297",[104,3.948]],["name/298",[163,59.323]],["parent/298",[104,3.948]],["name/299",[164,59.323]],["parent/299",[104,3.948]],["name/300",[165,59.879]],["parent/300",[104,3.948]],["name/301",[166,59.879]],["parent/301",[104,3.948]],["name/302",[167,59.879]],["parent/302",[104,3.948]],["name/303",[168,59.879]],["parent/303",[104,3.948]],["name/304",[169,59.879]],["parent/304",[104,3.948]],["name/305",[170,56.931]],["parent/305",[104,3.948]],["name/306",[171,59.323]],["parent/306",[104,3.948]],["name/307",[172,59.323]],["parent/307",[104,3.948]],["name/308",[28,50.106]],["parent/308",[104,3.948]],["name/309",[24,49.085]],["parent/309",[104,3.948]],["name/310",[43,52.257]],["parent/310",[104,3.948]],["name/311",[44,52.257]],["parent/311",[104,3.948]],["name/312",[173,53.688]],["parent/312",[104,3.948]],["name/313",[174,58.797]],["parent/313",[104,3.948]],["name/314",[175,59.323]],["parent/314",[104,3.948]],["name/315",[176,59.323]],["parent/315",[104,3.948]],["name/316",[177,59.323]],["parent/316",[104,3.948]],["name/317",[178,59.323]],["parent/317",[104,3.948]],["name/318",[179,59.323]],["parent/318",[104,3.948]],["name/319",[180,59.323]],["parent/319",[104,3.948]],["name/320",[181,59.323]],["parent/320",[104,3.948]],["name/321",[182,59.323]],["parent/321",[104,3.948]],["name/322",[183,57.82]],["parent/322",[104,3.948]],["name/323",[184,59.323]],["parent/323",[104,3.948]],["name/324",[185,59.323]],["parent/324",[104,3.948]],["name/325",[186,56.514]],["parent/325",[104,3.948]],["name/326",[187,58.797]],["parent/326",[104,3.948]],["name/327",[188,59.323]],["parent/327",[104,3.948]],["name/328",[189,59.323]],["parent/328",[104,3.948]],["name/329",[190,59.323]],["parent/329",[104,3.948]],["name/330",[191,59.323]],["parent/330",[104,3.948]],["name/331",[192,59.323]],["parent/331",[104,3.948]],["name/332",[36,53.091]],["parent/332",[104,3.948]],["name/333",[34,53.091]],["parent/333",[104,3.948]],["name/334",[35,53.091]],["parent/334",[104,3.948]],["name/335",[46,46.68]],["parent/335",[104,3.948]],["name/336",[47,46.68]],["parent/336",[104,3.948]],["name/337",[48,46.68]],["parent/337",[104,3.948]],["name/338",[49,46.68]],["parent/338",[104,3.948]],["name/339",[50,46.68]],["parent/339",[104,3.948]],["name/340",[51,46.68]],["parent/340",[104,3.948]],["name/341",[52,46.68]],["parent/341",[104,3.948]],["name/342",[53,46.68]],["parent/342",[104,3.948]],["name/343",[54,46.68]],["parent/343",[104,3.948]],["name/344",[55,46.68]],["parent/344",[104,3.948]],["name/345",[56,46.68]],["parent/345",[104,3.948]],["name/346",[57,46.68]],["parent/346",[104,3.948]],["name/347",[58,46.68]],["parent/347",[104,3.948]],["name/348",[59,46.68]],["parent/348",[104,3.948]],["name/349",[60,46.68]],["parent/349",[104,3.948]],["name/350",[61,46.68]],["parent/350",[104,3.948]],["name/351",[62,46.68]],["parent/351",[104,3.948]],["name/352",[63,46.68]],["parent/352",[104,3.948]],["name/353",[64,46.38]],["parent/353",[104,3.948]],["name/354",[65,46.38]],["parent/354",[104,3.948]],["name/355",[66,46.68]],["parent/355",[104,3.948]],["name/356",[67,40.836]],["parent/356",[104,3.948]],["name/357",[68,46.233]],["parent/357",[104,3.948]],["name/358",[69,46.233]],["parent/358",[104,3.948]],["name/359",[70,46.68]],["parent/359",[104,3.948]],["name/360",[71,45.945]],["parent/360",[104,3.948]],["name/361",[72,46.529]],["parent/361",[104,3.948]],["name/362",[73,46.68]],["parent/362",[104,3.948]],["name/363",[74,46.68]],["parent/363",[104,3.948]],["name/364",[75,46.68]],["parent/364",[104,3.948]],["name/365",[76,46.529]],["parent/365",[104,3.948]],["name/366",[77,46.088]],["parent/366",[104,3.948]],["name/367",[78,46.088]],["parent/367",[104,3.948]],["name/368",[193,84.446]],["parent/368",[]],["name/369",[194,84.446]],["parent/369",[]],["name/370",[195,84.446]],["parent/370",[]],["name/371",[196,84.446]],["parent/371",[]],["name/372",[197,46.68]],["parent/372",[]],["name/373",[10,39.265]],["parent/373",[197,4.606]],["name/374",[198,84.446]],["parent/374",[197,4.606]],["name/375",[199,84.446]],["parent/375",[197,4.606]],["name/376",[200,84.446]],["parent/376",[197,4.606]],["name/377",[16,46.529]],["parent/377",[197,4.606]],["name/378",[17,43.671]],["parent/378",[197,4.606]],["name/379",[19,52.528]],["parent/379",[197,4.606]],["name/380",[1,49.281]],["parent/380",[197,4.606]],["name/381",[201,84.446]],["parent/381",[202,6.24]],["name/382",[203,84.446]],["parent/382",[202,6.24]],["name/383",[204,84.446]],["parent/383",[202,6.24]],["name/384",[205,84.446]],["parent/384",[202,6.24]],["name/385",[206,84.446]],["parent/385",[202,6.24]],["name/386",[207,84.446]],["parent/386",[202,6.24]],["name/387",[208,84.446]],["parent/387",[202,6.24]],["name/388",[209,84.446]],["parent/388",[202,6.24]],["name/389",[210,84.446]],["parent/389",[202,6.24]],["name/390",[211,84.446]],["parent/390",[202,6.24]],["name/391",[212,84.446]],["parent/391",[202,6.24]],["name/392",[213,84.446]],["parent/392",[202,6.24]],["name/393",[214,71.453]],["parent/393",[197,4.606]],["name/394",[187,58.797]],["parent/394",[197,4.606]],["name/395",[215,84.446]],["parent/395",[197,4.606]],["name/396",[164,59.323]],["parent/396",[197,4.606]],["name/397",[216,79.338]],["parent/397",[197,4.606]],["name/398",[217,68.352]],["parent/398",[197,4.606]],["name/399",[218,84.446]],["parent/399",[197,4.606]],["name/400",[219,84.446]],["parent/400",[197,4.606]],["name/401",[220,84.446]],["parent/401",[197,4.606]],["name/402",[221,84.446]],["parent/402",[197,4.606]],["name/403",[222,84.446]],["parent/403",[197,4.606]],["name/404",[223,84.446]],["parent/404",[197,4.606]],["name/405",[224,84.446]],["parent/405",[197,4.606]],["name/406",[225,84.446]],["parent/406",[197,4.606]],["name/407",[226,84.446]],["parent/407",[197,4.606]],["name/408",[227,84.446]],["parent/408",[197,4.606]],["name/409",[109,56.114]],["parent/409",[197,4.606]],["name/410",[186,56.514]],["parent/410",[197,4.606]],["name/411",[27,44.252]],["parent/411",[197,4.606]],["name/412",[46,46.68]],["parent/412",[197,4.606]],["name/413",[47,46.68]],["parent/413",[197,4.606]],["name/414",[48,46.68]],["parent/414",[197,4.606]],["name/415",[49,46.68]],["parent/415",[197,4.606]],["name/416",[50,46.68]],["parent/416",[197,4.606]],["name/417",[51,46.68]],["parent/417",[197,4.606]],["name/418",[52,46.68]],["parent/418",[197,4.606]],["name/419",[53,46.68]],["parent/419",[197,4.606]],["name/420",[54,46.68]],["parent/420",[197,4.606]],["name/421",[55,46.68]],["parent/421",[197,4.606]],["name/422",[56,46.68]],["parent/422",[197,4.606]],["name/423",[57,46.68]],["parent/423",[197,4.606]],["name/424",[58,46.68]],["parent/424",[197,4.606]],["name/425",[59,46.68]],["parent/425",[197,4.606]],["name/426",[60,46.68]],["parent/426",[197,4.606]],["name/427",[61,46.68]],["parent/427",[197,4.606]],["name/428",[62,46.68]],["parent/428",[197,4.606]],["name/429",[63,46.68]],["parent/429",[197,4.606]],["name/430",[64,46.38]],["parent/430",[197,4.606]],["name/431",[65,46.38]],["parent/431",[197,4.606]],["name/432",[66,46.68]],["parent/432",[197,4.606]],["name/433",[67,40.836]],["parent/433",[197,4.606]],["name/434",[68,46.233]],["parent/434",[197,4.606]],["name/435",[69,46.233]],["parent/435",[197,4.606]],["name/436",[70,46.68]],["parent/436",[197,4.606]],["name/437",[71,45.945]],["parent/437",[197,4.606]],["name/438",[72,46.529]],["parent/438",[197,4.606]],["name/439",[73,46.68]],["parent/439",[197,4.606]],["name/440",[74,46.68]],["parent/440",[197,4.606]],["name/441",[75,46.68]],["parent/441",[197,4.606]],["name/442",[76,46.529]],["parent/442",[197,4.606]],["name/443",[77,46.088]],["parent/443",[197,4.606]],["name/444",[78,46.088]],["parent/444",[197,4.606]],["name/445",[228,69.783]],["parent/445",[]],["name/446",[229,68.352]],["parent/446",[228,6.885]],["name/447",[18,57.366]],["parent/447",[228,6.885]],["name/448",[230,68.352]],["parent/448",[228,6.885]],["name/449",[7,60.467]],["parent/449",[228,6.885]],["name/450",[231,84.446]],["parent/450",[228,6.885]],["name/451",[232,45.945]],["parent/451",[]],["name/452",[10,39.265]],["parent/452",[232,4.533]],["name/453",[233,75.973]],["parent/453",[232,4.533]],["name/454",[234,75.973]],["parent/454",[232,4.533]],["name/455",[16,46.529]],["parent/455",[232,4.533]],["name/456",[11,57.82]],["parent/456",[232,4.533]],["name/457",[14,53.688]],["parent/457",[232,4.533]],["name/458",[15,59.323]],["parent/458",[232,4.533]],["name/459",[17,43.671]],["parent/459",[232,4.533]],["name/460",[19,52.528]],["parent/460",[232,4.533]],["name/461",[1,49.281]],["parent/461",[232,4.533]],["name/462",[235,75.973]],["parent/462",[236,7.248]],["name/463",[237,84.446]],["parent/463",[236,7.248]],["name/464",[238,84.446]],["parent/464",[236,7.248]],["name/465",[239,84.446]],["parent/465",[236,7.248]],["name/466",[43,52.257]],["parent/466",[232,4.533]],["name/467",[240,84.446]],["parent/467",[232,4.533]],["name/468",[241,84.446]],["parent/468",[232,4.533]],["name/469",[242,84.446]],["parent/469",[232,4.533]],["name/470",[27,44.252]],["parent/470",[232,4.533]],["name/471",[24,49.085]],["parent/471",[232,4.533]],["name/472",[28,50.106]],["parent/472",[232,4.533]],["name/473",[29,60.467]],["parent/473",[232,4.533]],["name/474",[30,60.467]],["parent/474",[232,4.533]],["name/475",[25,60.467]],["parent/475",[232,4.533]],["name/476",[31,60.467]],["parent/476",[232,4.533]],["name/477",[32,60.467]],["parent/477",[232,4.533]],["name/478",[33,60.467]],["parent/478",[232,4.533]],["name/479",[34,53.091]],["parent/479",[232,4.533]],["name/480",[35,53.091]],["parent/480",[232,4.533]],["name/481",[36,53.091]],["parent/481",[232,4.533]],["name/482",[37,55.729]],["parent/482",[232,4.533]],["name/483",[38,55.359]],["parent/483",[232,4.533]],["name/484",[39,60.467]],["parent/484",[232,4.533]],["name/485",[40,59.323]],["parent/485",[232,4.533]],["name/486",[41,60.467]],["parent/486",[232,4.533]],["name/487",[42,60.467]],["parent/487",[232,4.533]],["name/488",[44,52.257]],["parent/488",[232,4.533]],["name/489",[45,60.467]],["parent/489",[232,4.533]],["name/490",[46,46.68]],["parent/490",[232,4.533]],["name/491",[47,46.68]],["parent/491",[232,4.533]],["name/492",[48,46.68]],["parent/492",[232,4.533]],["name/493",[49,46.68]],["parent/493",[232,4.533]],["name/494",[50,46.68]],["parent/494",[232,4.533]],["name/495",[51,46.68]],["parent/495",[232,4.533]],["name/496",[52,46.68]],["parent/496",[232,4.533]],["name/497",[53,46.68]],["parent/497",[232,4.533]],["name/498",[54,46.68]],["parent/498",[232,4.533]],["name/499",[55,46.68]],["parent/499",[232,4.533]],["name/500",[56,46.68]],["parent/500",[232,4.533]],["name/501",[57,46.68]],["parent/501",[232,4.533]],["name/502",[58,46.68]],["parent/502",[232,4.533]],["name/503",[59,46.68]],["parent/503",[232,4.533]],["name/504",[60,46.68]],["parent/504",[232,4.533]],["name/505",[61,46.68]],["parent/505",[232,4.533]],["name/506",[62,46.68]],["parent/506",[232,4.533]],["name/507",[63,46.68]],["parent/507",[232,4.533]],["name/508",[64,46.38]],["parent/508",[232,4.533]],["name/509",[65,46.38]],["parent/509",[232,4.533]],["name/510",[66,46.68]],["parent/510",[232,4.533]],["name/511",[67,40.836]],["parent/511",[232,4.533]],["name/512",[68,46.233]],["parent/512",[232,4.533]],["name/513",[69,46.233]],["parent/513",[232,4.533]],["name/514",[70,46.68]],["parent/514",[232,4.533]],["name/515",[71,45.945]],["parent/515",[232,4.533]],["name/516",[72,46.529]],["parent/516",[232,4.533]],["name/517",[73,46.68]],["parent/517",[232,4.533]],["name/518",[74,46.68]],["parent/518",[232,4.533]],["name/519",[75,46.68]],["parent/519",[232,4.533]],["name/520",[76,46.529]],["parent/520",[232,4.533]],["name/521",[77,46.088]],["parent/521",[232,4.533]],["name/522",[78,46.088]],["parent/522",[232,4.533]],["name/523",[243,71.453]],["parent/523",[]],["name/524",[229,68.352]],["parent/524",[243,7.05]],["name/525",[244,68.352]],["parent/525",[243,7.05]],["name/526",[245,79.338]],["parent/526",[243,7.05]],["name/527",[246,79.338]],["parent/527",[243,7.05]],["name/528",[247,58.797]],["parent/528",[]],["name/529",[248,79.338]],["parent/529",[247,5.801]],["name/530",[17,43.671]],["parent/530",[247,5.801]],["name/531",[229,68.352]],["parent/531",[247,5.801]],["name/532",[244,68.352]],["parent/532",[247,5.801]],["name/533",[245,79.338]],["parent/533",[247,5.801]],["name/534",[246,79.338]],["parent/534",[247,5.801]],["name/535",[173,53.688]],["parent/535",[247,5.801]],["name/536",[249,73.46]],["parent/536",[247,5.801]],["name/537",[250,84.446]],["parent/537",[247,5.801]],["name/538",[251,84.446]],["parent/538",[247,5.801]],["name/539",[252,61.092]],["parent/539",[247,5.801]],["name/540",[253,73.46]],["parent/540",[247,5.801]],["name/541",[254,84.446]],["parent/541",[247,5.801]],["name/542",[255,84.446]],["parent/542",[247,5.801]],["name/543",[256,79.338]],["parent/543",[247,5.801]],["name/544",[257,79.338]],["parent/544",[247,5.801]],["name/545",[258,84.446]],["parent/545",[247,5.801]],["name/546",[259,63.244]],["parent/546",[]],["name/547",[17,43.671]],["parent/547",[259,6.24]],["name/548",[260,84.446]],["parent/548",[259,6.24]],["name/549",[261,84.446]],["parent/549",[259,6.24]],["name/550",[7,60.467]],["parent/550",[259,6.24]],["name/551",[262,65.988]],["parent/551",[259,6.24]],["name/552",[263,84.446]],["parent/552",[259,6.24]],["name/553",[264,84.446]],["parent/553",[259,6.24]],["name/554",[265,84.446]],["parent/554",[259,6.24]],["name/555",[266,84.446]],["parent/555",[259,6.24]],["name/556",[267,84.446]],["parent/556",[259,6.24]],["name/557",[268,49.894]],["parent/557",[]],["name/558",[7,60.467]],["parent/558",[268,4.923]],["name/559",[262,65.988]],["parent/559",[268,4.923]],["name/560",[269,84.446]],["parent/560",[268,4.923]],["name/561",[270,84.446]],["parent/561",[268,4.923]],["name/562",[10,39.265]],["parent/562",[268,4.923]],["name/563",[17,43.671]],["parent/563",[268,4.923]],["name/564",[271,84.446]],["parent/564",[268,4.923]],["name/565",[272,79.338]],["parent/565",[268,4.923]],["name/566",[273,84.446]],["parent/566",[268,4.923]],["name/567",[274,73.46]],["parent/567",[268,4.923]],["name/568",[275,75.973]],["parent/568",[268,4.923]],["name/569",[276,75.973]],["parent/569",[268,4.923]],["name/570",[277,73.46]],["parent/570",[268,4.923]],["name/571",[278,75.973]],["parent/571",[268,4.923]],["name/572",[279,75.973]],["parent/572",[268,4.923]],["name/573",[280,75.973]],["parent/573",[268,4.923]],["name/574",[281,75.973]],["parent/574",[268,4.923]],["name/575",[282,75.973]],["parent/575",[268,4.923]],["name/576",[283,75.973]],["parent/576",[268,4.923]],["name/577",[284,75.973]],["parent/577",[268,4.923]],["name/578",[285,75.973]],["parent/578",[268,4.923]],["name/579",[123,56.514]],["parent/579",[268,4.923]],["name/580",[286,73.46]],["parent/580",[268,4.923]],["name/581",[287,75.973]],["parent/581",[268,4.923]],["name/582",[288,75.973]],["parent/582",[268,4.923]],["name/583",[289,75.973]],["parent/583",[268,4.923]],["name/584",[290,75.973]],["parent/584",[268,4.923]],["name/585",[291,75.973]],["parent/585",[268,4.923]],["name/586",[292,75.973]],["parent/586",[268,4.923]],["name/587",[293,75.973]],["parent/587",[268,4.923]],["name/588",[294,75.973]],["parent/588",[268,4.923]],["name/589",[295,75.973]],["parent/589",[268,4.923]],["name/590",[296,75.973]],["parent/590",[268,4.923]],["name/591",[297,45.665]],["parent/591",[268,4.923]],["name/592",[298,75.973]],["parent/592",[268,4.923]],["name/593",[299,75.973]],["parent/593",[268,4.923]],["name/594",[300,75.973]],["parent/594",[268,4.923]],["name/595",[301,75.973]],["parent/595",[268,4.923]],["name/596",[302,75.973]],["parent/596",[268,4.923]],["name/597",[303,73.46]],["parent/597",[268,4.923]],["name/598",[304,73.46]],["parent/598",[268,4.923]],["name/599",[68,46.233]],["parent/599",[268,4.923]],["name/600",[69,46.233]],["parent/600",[268,4.923]],["name/601",[67,40.836]],["parent/601",[268,4.923]],["name/602",[305,75.973]],["parent/602",[268,4.923]],["name/603",[306,65.988]],["parent/603",[]],["name/604",[230,68.352]],["parent/604",[306,6.51]],["name/605",[307,84.446]],["parent/605",[306,6.51]],["name/606",[308,84.446]],["parent/606",[306,6.51]],["name/607",[309,84.446]],["parent/607",[306,6.51]],["name/608",[310,84.446]],["parent/608",[306,6.51]],["name/609",[311,84.446]],["parent/609",[306,6.51]],["name/610",[7,60.467]],["parent/610",[306,6.51]],["name/611",[110,43.121]],["parent/611",[306,6.51]],["name/612",[312,69.783]],["parent/612",[]],["name/613",[80,69.783]],["parent/613",[312,6.885]],["name/614",[81,69.783]],["parent/614",[312,6.885]],["name/615",[82,69.783]],["parent/615",[312,6.885]],["name/616",[83,75.973]],["parent/616",[312,6.885]],["name/617",[313,73.46]],["parent/617",[]],["name/618",[85,71.453]],["parent/618",[313,7.248]],["name/619",[86,71.453]],["parent/619",[313,7.248]],["name/620",[314,69.783]],["parent/620",[]],["name/621",[110,43.121]],["parent/621",[314,6.885]],["name/622",[230,68.352]],["parent/622",[314,6.885]],["name/623",[0,58.797]],["parent/623",[314,6.885]],["name/624",[315,69.783]],["parent/624",[]],["name/625",[316,71.453]],["parent/625",[315,6.885]],["name/626",[317,79.338]],["parent/626",[315,6.885]],["name/627",[318,75.973]],["parent/627",[315,6.885]],["name/628",[319,41.361]],["parent/628",[]],["name/629",[9,56.931]],["parent/629",[319,4.081]],["name/630",[10,39.265]],["parent/630",[319,4.081]],["name/631",[88,79.338]],["parent/631",[319,4.081]],["name/632",[89,79.338]],["parent/632",[319,4.081]],["name/633",[90,79.338]],["parent/633",[319,4.081]],["name/634",[91,79.338]],["parent/634",[319,4.081]],["name/635",[320,84.446]],["parent/635",[319,4.081]],["name/636",[321,84.446]],["parent/636",[319,4.081]],["name/637",[322,84.446]],["parent/637",[319,4.081]],["name/638",[323,84.446]],["parent/638",[319,4.081]],["name/639",[324,84.446]],["parent/639",[319,4.081]],["name/640",[325,84.446]],["parent/640",[319,4.081]],["name/641",[326,84.446]],["parent/641",[319,4.081]],["name/642",[327,84.446]],["parent/642",[319,4.081]],["name/643",[328,75.973]],["parent/643",[319,4.081]],["name/644",[329,75.973]],["parent/644",[319,4.081]],["name/645",[330,84.446]],["parent/645",[319,4.081]],["name/646",[331,67.1]],["parent/646",[319,4.081]],["name/647",[314,69.783]],["parent/647",[319,4.081]],["name/648",[315,69.783]],["parent/648",[319,4.081]],["name/649",[332,69.783]],["parent/649",[319,4.081]],["name/650",[333,84.446]],["parent/650",[319,4.081]],["name/651",[334,84.446]],["parent/651",[319,4.081]],["name/652",[335,84.446]],["parent/652",[319,4.081]],["name/653",[336,84.446]],["parent/653",[319,4.081]],["name/654",[337,79.338]],["parent/654",[319,4.081]],["name/655",[11,57.82]],["parent/655",[319,4.081]],["name/656",[16,46.529]],["parent/656",[319,4.081]],["name/657",[14,53.688]],["parent/657",[319,4.081]],["name/658",[15,59.323]],["parent/658",[319,4.081]],["name/659",[17,43.671]],["parent/659",[319,4.081]],["name/660",[328,75.973]],["parent/660",[319,4.081]],["name/661",[329,75.973]],["parent/661",[319,4.081]],["name/662",[338,84.446]],["parent/662",[319,4.081]],["name/663",[339,84.446]],["parent/663",[319,4.081]],["name/664",[340,84.446]],["parent/664",[319,4.081]],["name/665",[341,84.446]],["parent/665",[319,4.081]],["name/666",[342,84.446]],["parent/666",[319,4.081]],["name/667",[343,84.446]],["parent/667",[319,4.081]],["name/668",[344,84.446]],["parent/668",[319,4.081]],["name/669",[345,84.446]],["parent/669",[319,4.081]],["name/670",[346,84.446]],["parent/670",[319,4.081]],["name/671",[347,84.446]],["parent/671",[319,4.081]],["name/672",[348,84.446]],["parent/672",[319,4.081]],["name/673",[349,84.446]],["parent/673",[319,4.081]],["name/674",[350,84.446]],["parent/674",[319,4.081]],["name/675",[351,84.446]],["parent/675",[319,4.081]],["name/676",[68,46.233]],["parent/676",[319,4.081]],["name/677",[352,84.446]],["parent/677",[319,4.081]],["name/678",[353,84.446]],["parent/678",[319,4.081]],["name/679",[354,84.446]],["parent/679",[319,4.081]],["name/680",[355,84.446]],["parent/680",[319,4.081]],["name/681",[356,84.446]],["parent/681",[319,4.081]],["name/682",[24,49.085]],["parent/682",[319,4.081]],["name/683",[357,84.446]],["parent/683",[319,4.081]],["name/684",[27,44.252]],["parent/684",[319,4.081]],["name/685",[28,50.106]],["parent/685",[319,4.081]],["name/686",[29,60.467]],["parent/686",[319,4.081]],["name/687",[30,60.467]],["parent/687",[319,4.081]],["name/688",[25,60.467]],["parent/688",[319,4.081]],["name/689",[31,60.467]],["parent/689",[319,4.081]],["name/690",[32,60.467]],["parent/690",[319,4.081]],["name/691",[33,60.467]],["parent/691",[319,4.081]],["name/692",[34,53.091]],["parent/692",[319,4.081]],["name/693",[35,53.091]],["parent/693",[319,4.081]],["name/694",[36,53.091]],["parent/694",[319,4.081]],["name/695",[37,55.729]],["parent/695",[319,4.081]],["name/696",[38,55.359]],["parent/696",[319,4.081]],["name/697",[39,60.467]],["parent/697",[319,4.081]],["name/698",[40,59.323]],["parent/698",[319,4.081]],["name/699",[41,60.467]],["parent/699",[319,4.081]],["name/700",[42,60.467]],["parent/700",[319,4.081]],["name/701",[43,52.257]],["parent/701",[319,4.081]],["name/702",[44,52.257]],["parent/702",[319,4.081]],["name/703",[45,60.467]],["parent/703",[319,4.081]],["name/704",[46,46.68]],["parent/704",[319,4.081]],["name/705",[47,46.68]],["parent/705",[319,4.081]],["name/706",[48,46.68]],["parent/706",[319,4.081]],["name/707",[49,46.68]],["parent/707",[319,4.081]],["name/708",[50,46.68]],["parent/708",[319,4.081]],["name/709",[51,46.68]],["parent/709",[319,4.081]],["name/710",[52,46.68]],["parent/710",[319,4.081]],["name/711",[53,46.68]],["parent/711",[319,4.081]],["name/712",[54,46.68]],["parent/712",[319,4.081]],["name/713",[55,46.68]],["parent/713",[319,4.081]],["name/714",[56,46.68]],["parent/714",[319,4.081]],["name/715",[57,46.68]],["parent/715",[319,4.081]],["name/716",[58,46.68]],["parent/716",[319,4.081]],["name/717",[59,46.68]],["parent/717",[319,4.081]],["name/718",[60,46.68]],["parent/718",[319,4.081]],["name/719",[61,46.68]],["parent/719",[319,4.081]],["name/720",[62,46.68]],["parent/720",[319,4.081]],["name/721",[63,46.68]],["parent/721",[319,4.081]],["name/722",[64,46.38]],["parent/722",[319,4.081]],["name/723",[65,46.38]],["parent/723",[319,4.081]],["name/724",[66,46.68]],["parent/724",[319,4.081]],["name/725",[67,40.836]],["parent/725",[319,4.081]],["name/726",[69,46.233]],["parent/726",[319,4.081]],["name/727",[70,46.68]],["parent/727",[319,4.081]],["name/728",[71,45.945]],["parent/728",[319,4.081]],["name/729",[72,46.529]],["parent/729",[319,4.081]],["name/730",[73,46.68]],["parent/730",[319,4.081]],["name/731",[74,46.68]],["parent/731",[319,4.081]],["name/732",[75,46.68]],["parent/732",[319,4.081]],["name/733",[76,46.529]],["parent/733",[319,4.081]],["name/734",[77,46.088]],["parent/734",[319,4.081]],["name/735",[78,46.088]],["parent/735",[319,4.081]],["name/736",[358,73.46]],["parent/736",[]],["name/737",[359,75.973]],["parent/737",[358,7.248]],["name/738",[97,67.1]],["parent/738",[358,7.248]],["name/739",[0,58.797]],["parent/739",[358,7.248]],["name/740",[360,46.233]],["parent/740",[]],["name/741",[9,56.931]],["parent/741",[360,4.561]],["name/742",[10,39.265]],["parent/742",[360,4.561]],["name/743",[361,79.338]],["parent/743",[360,4.561]],["name/744",[14,53.688]],["parent/744",[360,4.561]],["name/745",[16,46.529]],["parent/745",[360,4.561]],["name/746",[17,43.671]],["parent/746",[360,4.561]],["name/747",[87,45.393]],["parent/747",[360,4.561]],["name/748",[1,49.281]],["parent/748",[360,4.561]],["name/749",[97,67.1]],["parent/749",[362,7.248]],["name/750",[0,58.797]],["parent/750",[362,7.248]],["name/751",[363,73.46]],["parent/751",[362,7.248]],["name/752",[359,75.973]],["parent/752",[362,7.248]],["name/753",[360,46.233]],["parent/753",[360,4.561]],["name/754",[107,69.783]],["parent/754",[360,4.561]],["name/755",[24,49.085]],["parent/755",[360,4.561]],["name/756",[131,53.688]],["parent/756",[360,4.561]],["name/757",[27,44.252]],["parent/757",[360,4.561]],["name/758",[37,55.729]],["parent/758",[360,4.561]],["name/759",[38,55.359]],["parent/759",[360,4.561]],["name/760",[129,54.001]],["parent/760",[360,4.561]],["name/761",[130,54.001]],["parent/761",[360,4.561]],["name/762",[28,50.106]],["parent/762",[360,4.561]],["name/763",[173,53.688]],["parent/763",[360,4.561]],["name/764",[252,61.092]],["parent/764",[360,4.561]],["name/765",[364,64.987]],["parent/765",[360,4.561]],["name/766",[365,64.987]],["parent/766",[360,4.561]],["name/767",[366,64.077]],["parent/767",[360,4.561]],["name/768",[367,64.987]],["parent/768",[360,4.561]],["name/769",[368,64.987]],["parent/769",[360,4.561]],["name/770",[46,46.68]],["parent/770",[360,4.561]],["name/771",[47,46.68]],["parent/771",[360,4.561]],["name/772",[48,46.68]],["parent/772",[360,4.561]],["name/773",[49,46.68]],["parent/773",[360,4.561]],["name/774",[50,46.68]],["parent/774",[360,4.561]],["name/775",[51,46.68]],["parent/775",[360,4.561]],["name/776",[52,46.68]],["parent/776",[360,4.561]],["name/777",[53,46.68]],["parent/777",[360,4.561]],["name/778",[54,46.68]],["parent/778",[360,4.561]],["name/779",[55,46.68]],["parent/779",[360,4.561]],["name/780",[56,46.68]],["parent/780",[360,4.561]],["name/781",[57,46.68]],["parent/781",[360,4.561]],["name/782",[58,46.68]],["parent/782",[360,4.561]],["name/783",[59,46.68]],["parent/783",[360,4.561]],["name/784",[60,46.68]],["parent/784",[360,4.561]],["name/785",[61,46.68]],["parent/785",[360,4.561]],["name/786",[62,46.68]],["parent/786",[360,4.561]],["name/787",[63,46.68]],["parent/787",[360,4.561]],["name/788",[64,46.38]],["parent/788",[360,4.561]],["name/789",[65,46.38]],["parent/789",[360,4.561]],["name/790",[66,46.68]],["parent/790",[360,4.561]],["name/791",[67,40.836]],["parent/791",[360,4.561]],["name/792",[68,46.233]],["parent/792",[360,4.561]],["name/793",[69,46.233]],["parent/793",[360,4.561]],["name/794",[70,46.68]],["parent/794",[360,4.561]],["name/795",[71,45.945]],["parent/795",[360,4.561]],["name/796",[72,46.529]],["parent/796",[360,4.561]],["name/797",[73,46.68]],["parent/797",[360,4.561]],["name/798",[74,46.68]],["parent/798",[360,4.561]],["name/799",[75,46.68]],["parent/799",[360,4.561]],["name/800",[76,46.529]],["parent/800",[360,4.561]],["name/801",[77,46.088]],["parent/801",[360,4.561]],["name/802",[78,46.088]],["parent/802",[360,4.561]],["name/803",[369,40.098]],["parent/803",[]],["name/804",[10,39.265]],["parent/804",[369,3.956]],["name/805",[105,59.879]],["parent/805",[369,3.956]],["name/806",[16,46.529]],["parent/806",[369,3.956]],["name/807",[17,43.671]],["parent/807",[369,3.956]],["name/808",[107,69.783]],["parent/808",[369,3.956]],["name/809",[370,75.973]],["parent/809",[369,3.956]],["name/810",[65,46.38]],["parent/810",[369,3.956]],["name/811",[63,46.68]],["parent/811",[369,3.956]],["name/812",[108,59.323]],["parent/812",[369,3.956]],["name/813",[109,56.114]],["parent/813",[369,3.956]],["name/814",[27,44.252]],["parent/814",[369,3.956]],["name/815",[110,43.121]],["parent/815",[369,3.956]],["name/816",[111,56.931]],["parent/816",[369,3.956]],["name/817",[112,54.657]],["parent/817",[369,3.956]],["name/818",[19,52.528]],["parent/818",[369,3.956]],["name/819",[1,49.281]],["parent/819",[369,3.956]],["name/820",[113,59.879]],["parent/820",[371,6.164]],["name/821",[27,44.252]],["parent/821",[371,6.164]],["name/822",[115,59.879]],["parent/822",[371,6.164]],["name/823",[116,59.879]],["parent/823",[371,6.164]],["name/824",[117,56.931]],["parent/824",[371,6.164]],["name/825",[118,59.879]],["parent/825",[371,6.164]],["name/826",[119,59.879]],["parent/826",[371,6.164]],["name/827",[120,57.366]],["parent/827",[371,6.164]],["name/828",[121,59.879]],["parent/828",[371,6.164]],["name/829",[122,59.879]],["parent/829",[371,6.164]],["name/830",[123,56.514]],["parent/830",[371,6.164]],["name/831",[67,40.836]],["parent/831",[371,6.164]],["name/832",[124,58.297]],["parent/832",[371,6.164]],["name/833",[125,59.879]],["parent/833",[369,3.956]],["name/834",[126,59.879]],["parent/834",[369,3.956]],["name/835",[127,59.323]],["parent/835",[369,3.956]],["name/836",[128,59.879]],["parent/836",[369,3.956]],["name/837",[129,54.001]],["parent/837",[369,3.956]],["name/838",[130,54.001]],["parent/838",[369,3.956]],["name/839",[131,53.688]],["parent/839",[369,3.956]],["name/840",[132,59.879]],["parent/840",[369,3.956]],["name/841",[133,59.879]],["parent/841",[369,3.956]],["name/842",[134,59.879]],["parent/842",[369,3.956]],["name/843",[135,59.879]],["parent/843",[369,3.956]],["name/844",[136,59.323]],["parent/844",[369,3.956]],["name/845",[137,59.879]],["parent/845",[369,3.956]],["name/846",[138,59.879]],["parent/846",[369,3.956]],["name/847",[139,59.879]],["parent/847",[369,3.956]],["name/848",[140,59.879]],["parent/848",[369,3.956]],["name/849",[141,59.879]],["parent/849",[369,3.956]],["name/850",[142,59.879]],["parent/850",[369,3.956]],["name/851",[143,58.797]],["parent/851",[369,3.956]],["name/852",[144,59.323]],["parent/852",[369,3.956]],["name/853",[145,59.323]],["parent/853",[369,3.956]],["name/854",[146,59.323]],["parent/854",[369,3.956]],["name/855",[147,59.323]],["parent/855",[369,3.956]],["name/856",[148,59.879]],["parent/856",[369,3.956]],["name/857",[149,59.879]],["parent/857",[369,3.956]],["name/858",[150,59.879]],["parent/858",[369,3.956]],["name/859",[151,59.879]],["parent/859",[369,3.956]],["name/860",[152,59.879]],["parent/860",[369,3.956]],["name/861",[153,59.879]],["parent/861",[369,3.956]],["name/862",[154,59.879]],["parent/862",[369,3.956]],["name/863",[155,59.879]],["parent/863",[369,3.956]],["name/864",[156,57.82]],["parent/864",[369,3.956]],["name/865",[157,59.879]],["parent/865",[369,3.956]],["name/866",[158,59.879]],["parent/866",[369,3.956]],["name/867",[159,59.879]],["parent/867",[369,3.956]],["name/868",[160,59.879]],["parent/868",[369,3.956]],["name/869",[161,59.879]],["parent/869",[369,3.956]],["name/870",[162,56.114]],["parent/870",[369,3.956]],["name/871",[163,59.323]],["parent/871",[369,3.956]],["name/872",[164,59.323]],["parent/872",[369,3.956]],["name/873",[165,59.879]],["parent/873",[369,3.956]],["name/874",[166,59.879]],["parent/874",[369,3.956]],["name/875",[167,59.879]],["parent/875",[369,3.956]],["name/876",[168,59.879]],["parent/876",[369,3.956]],["name/877",[169,59.879]],["parent/877",[369,3.956]],["name/878",[170,56.931]],["parent/878",[369,3.956]],["name/879",[171,59.323]],["parent/879",[369,3.956]],["name/880",[172,59.323]],["parent/880",[369,3.956]],["name/881",[28,50.106]],["parent/881",[369,3.956]],["name/882",[24,49.085]],["parent/882",[369,3.956]],["name/883",[43,52.257]],["parent/883",[369,3.956]],["name/884",[44,52.257]],["parent/884",[369,3.956]],["name/885",[173,53.688]],["parent/885",[369,3.956]],["name/886",[174,58.797]],["parent/886",[369,3.956]],["name/887",[175,59.323]],["parent/887",[369,3.956]],["name/888",[176,59.323]],["parent/888",[369,3.956]],["name/889",[177,59.323]],["parent/889",[369,3.956]],["name/890",[178,59.323]],["parent/890",[369,3.956]],["name/891",[179,59.323]],["parent/891",[369,3.956]],["name/892",[180,59.323]],["parent/892",[369,3.956]],["name/893",[181,59.323]],["parent/893",[369,3.956]],["name/894",[182,59.323]],["parent/894",[369,3.956]],["name/895",[183,57.82]],["parent/895",[369,3.956]],["name/896",[184,59.323]],["parent/896",[369,3.956]],["name/897",[185,59.323]],["parent/897",[369,3.956]],["name/898",[186,56.514]],["parent/898",[369,3.956]],["name/899",[187,58.797]],["parent/899",[369,3.956]],["name/900",[188,59.323]],["parent/900",[369,3.956]],["name/901",[189,59.323]],["parent/901",[369,3.956]],["name/902",[190,59.323]],["parent/902",[369,3.956]],["name/903",[191,59.323]],["parent/903",[369,3.956]],["name/904",[192,59.323]],["parent/904",[369,3.956]],["name/905",[36,53.091]],["parent/905",[369,3.956]],["name/906",[34,53.091]],["parent/906",[369,3.956]],["name/907",[35,53.091]],["parent/907",[369,3.956]],["name/908",[46,46.68]],["parent/908",[369,3.956]],["name/909",[47,46.68]],["parent/909",[369,3.956]],["name/910",[48,46.68]],["parent/910",[369,3.956]],["name/911",[49,46.68]],["parent/911",[369,3.956]],["name/912",[50,46.68]],["parent/912",[369,3.956]],["name/913",[51,46.68]],["parent/913",[369,3.956]],["name/914",[52,46.68]],["parent/914",[369,3.956]],["name/915",[53,46.68]],["parent/915",[369,3.956]],["name/916",[54,46.68]],["parent/916",[369,3.956]],["name/917",[55,46.68]],["parent/917",[369,3.956]],["name/918",[56,46.68]],["parent/918",[369,3.956]],["name/919",[57,46.68]],["parent/919",[369,3.956]],["name/920",[58,46.68]],["parent/920",[369,3.956]],["name/921",[59,46.68]],["parent/921",[369,3.956]],["name/922",[60,46.68]],["parent/922",[369,3.956]],["name/923",[61,46.68]],["parent/923",[369,3.956]],["name/924",[62,46.68]],["parent/924",[369,3.956]],["name/925",[64,46.38]],["parent/925",[369,3.956]],["name/926",[66,46.68]],["parent/926",[369,3.956]],["name/927",[67,40.836]],["parent/927",[369,3.956]],["name/928",[68,46.233]],["parent/928",[369,3.956]],["name/929",[69,46.233]],["parent/929",[369,3.956]],["name/930",[70,46.68]],["parent/930",[369,3.956]],["name/931",[71,45.945]],["parent/931",[369,3.956]],["name/932",[72,46.529]],["parent/932",[369,3.956]],["name/933",[73,46.68]],["parent/933",[369,3.956]],["name/934",[74,46.68]],["parent/934",[369,3.956]],["name/935",[75,46.68]],["parent/935",[369,3.956]],["name/936",[76,46.529]],["parent/936",[369,3.956]],["name/937",[77,46.088]],["parent/937",[369,3.956]],["name/938",[78,46.088]],["parent/938",[369,3.956]],["name/939",[372,69.783]],["parent/939",[]],["name/940",[373,84.446]],["parent/940",[372,6.885]],["name/941",[262,65.988]],["parent/941",[372,6.885]],["name/942",[244,68.352]],["parent/942",[372,6.885]],["name/943",[374,84.446]],["parent/943",[372,6.885]],["name/944",[375,84.446]],["parent/944",[372,6.885]],["name/945",[376,40.02]],["parent/945",[]],["name/946",[9,56.931]],["parent/946",[376,3.948]],["name/947",[10,39.265]],["parent/947",[376,3.948]],["name/948",[105,59.879]],["parent/948",[376,3.948]],["name/949",[16,46.529]],["parent/949",[376,3.948]],["name/950",[17,43.671]],["parent/950",[376,3.948]],["name/951",[377,68.352]],["parent/951",[376,3.948]],["name/952",[378,84.446]],["parent/952",[376,3.948]],["name/953",[379,84.446]],["parent/953",[376,3.948]],["name/954",[109,56.114]],["parent/954",[376,3.948]],["name/955",[27,44.252]],["parent/955",[376,3.948]],["name/956",[110,43.121]],["parent/956",[376,3.948]],["name/957",[111,56.931]],["parent/957",[376,3.948]],["name/958",[112,54.657]],["parent/958",[376,3.948]],["name/959",[19,52.528]],["parent/959",[376,3.948]],["name/960",[1,49.281]],["parent/960",[376,3.948]],["name/961",[113,59.879]],["parent/961",[380,6.164]],["name/962",[27,44.252]],["parent/962",[380,6.164]],["name/963",[115,59.879]],["parent/963",[380,6.164]],["name/964",[116,59.879]],["parent/964",[380,6.164]],["name/965",[117,56.931]],["parent/965",[380,6.164]],["name/966",[118,59.879]],["parent/966",[380,6.164]],["name/967",[119,59.879]],["parent/967",[380,6.164]],["name/968",[120,57.366]],["parent/968",[380,6.164]],["name/969",[121,59.879]],["parent/969",[380,6.164]],["name/970",[122,59.879]],["parent/970",[380,6.164]],["name/971",[123,56.514]],["parent/971",[380,6.164]],["name/972",[67,40.836]],["parent/972",[380,6.164]],["name/973",[124,58.297]],["parent/973",[380,6.164]],["name/974",[125,59.879]],["parent/974",[376,3.948]],["name/975",[126,59.879]],["parent/975",[376,3.948]],["name/976",[127,59.323]],["parent/976",[376,3.948]],["name/977",[128,59.879]],["parent/977",[376,3.948]],["name/978",[129,54.001]],["parent/978",[376,3.948]],["name/979",[130,54.001]],["parent/979",[376,3.948]],["name/980",[131,53.688]],["parent/980",[376,3.948]],["name/981",[132,59.879]],["parent/981",[376,3.948]],["name/982",[133,59.879]],["parent/982",[376,3.948]],["name/983",[134,59.879]],["parent/983",[376,3.948]],["name/984",[135,59.879]],["parent/984",[376,3.948]],["name/985",[136,59.323]],["parent/985",[376,3.948]],["name/986",[137,59.879]],["parent/986",[376,3.948]],["name/987",[138,59.879]],["parent/987",[376,3.948]],["name/988",[139,59.879]],["parent/988",[376,3.948]],["name/989",[140,59.879]],["parent/989",[376,3.948]],["name/990",[141,59.879]],["parent/990",[376,3.948]],["name/991",[142,59.879]],["parent/991",[376,3.948]],["name/992",[143,58.797]],["parent/992",[376,3.948]],["name/993",[144,59.323]],["parent/993",[376,3.948]],["name/994",[145,59.323]],["parent/994",[376,3.948]],["name/995",[146,59.323]],["parent/995",[376,3.948]],["name/996",[147,59.323]],["parent/996",[376,3.948]],["name/997",[148,59.879]],["parent/997",[376,3.948]],["name/998",[149,59.879]],["parent/998",[376,3.948]],["name/999",[150,59.879]],["parent/999",[376,3.948]],["name/1000",[151,59.879]],["parent/1000",[376,3.948]],["name/1001",[152,59.879]],["parent/1001",[376,3.948]],["name/1002",[153,59.879]],["parent/1002",[376,3.948]],["name/1003",[154,59.879]],["parent/1003",[376,3.948]],["name/1004",[155,59.879]],["parent/1004",[376,3.948]],["name/1005",[156,57.82]],["parent/1005",[376,3.948]],["name/1006",[157,59.879]],["parent/1006",[376,3.948]],["name/1007",[158,59.879]],["parent/1007",[376,3.948]],["name/1008",[159,59.879]],["parent/1008",[376,3.948]],["name/1009",[160,59.879]],["parent/1009",[376,3.948]],["name/1010",[161,59.879]],["parent/1010",[376,3.948]],["name/1011",[162,56.114]],["parent/1011",[376,3.948]],["name/1012",[163,59.323]],["parent/1012",[376,3.948]],["name/1013",[164,59.323]],["parent/1013",[376,3.948]],["name/1014",[165,59.879]],["parent/1014",[376,3.948]],["name/1015",[166,59.879]],["parent/1015",[376,3.948]],["name/1016",[167,59.879]],["parent/1016",[376,3.948]],["name/1017",[168,59.879]],["parent/1017",[376,3.948]],["name/1018",[169,59.879]],["parent/1018",[376,3.948]],["name/1019",[170,56.931]],["parent/1019",[376,3.948]],["name/1020",[171,59.323]],["parent/1020",[376,3.948]],["name/1021",[172,59.323]],["parent/1021",[376,3.948]],["name/1022",[28,50.106]],["parent/1022",[376,3.948]],["name/1023",[24,49.085]],["parent/1023",[376,3.948]],["name/1024",[43,52.257]],["parent/1024",[376,3.948]],["name/1025",[44,52.257]],["parent/1025",[376,3.948]],["name/1026",[173,53.688]],["parent/1026",[376,3.948]],["name/1027",[174,58.797]],["parent/1027",[376,3.948]],["name/1028",[175,59.323]],["parent/1028",[376,3.948]],["name/1029",[176,59.323]],["parent/1029",[376,3.948]],["name/1030",[177,59.323]],["parent/1030",[376,3.948]],["name/1031",[178,59.323]],["parent/1031",[376,3.948]],["name/1032",[179,59.323]],["parent/1032",[376,3.948]],["name/1033",[180,59.323]],["parent/1033",[376,3.948]],["name/1034",[181,59.323]],["parent/1034",[376,3.948]],["name/1035",[182,59.323]],["parent/1035",[376,3.948]],["name/1036",[108,59.323]],["parent/1036",[376,3.948]],["name/1037",[183,57.82]],["parent/1037",[376,3.948]],["name/1038",[184,59.323]],["parent/1038",[376,3.948]],["name/1039",[185,59.323]],["parent/1039",[376,3.948]],["name/1040",[186,56.514]],["parent/1040",[376,3.948]],["name/1041",[187,58.797]],["parent/1041",[376,3.948]],["name/1042",[188,59.323]],["parent/1042",[376,3.948]],["name/1043",[189,59.323]],["parent/1043",[376,3.948]],["name/1044",[190,59.323]],["parent/1044",[376,3.948]],["name/1045",[191,59.323]],["parent/1045",[376,3.948]],["name/1046",[192,59.323]],["parent/1046",[376,3.948]],["name/1047",[36,53.091]],["parent/1047",[376,3.948]],["name/1048",[34,53.091]],["parent/1048",[376,3.948]],["name/1049",[35,53.091]],["parent/1049",[376,3.948]],["name/1050",[46,46.68]],["parent/1050",[376,3.948]],["name/1051",[47,46.68]],["parent/1051",[376,3.948]],["name/1052",[48,46.68]],["parent/1052",[376,3.948]],["name/1053",[49,46.68]],["parent/1053",[376,3.948]],["name/1054",[50,46.68]],["parent/1054",[376,3.948]],["name/1055",[51,46.68]],["parent/1055",[376,3.948]],["name/1056",[52,46.68]],["parent/1056",[376,3.948]],["name/1057",[53,46.68]],["parent/1057",[376,3.948]],["name/1058",[54,46.68]],["parent/1058",[376,3.948]],["name/1059",[55,46.68]],["parent/1059",[376,3.948]],["name/1060",[56,46.68]],["parent/1060",[376,3.948]],["name/1061",[57,46.68]],["parent/1061",[376,3.948]],["name/1062",[58,46.68]],["parent/1062",[376,3.948]],["name/1063",[59,46.68]],["parent/1063",[376,3.948]],["name/1064",[60,46.68]],["parent/1064",[376,3.948]],["name/1065",[61,46.68]],["parent/1065",[376,3.948]],["name/1066",[62,46.68]],["parent/1066",[376,3.948]],["name/1067",[63,46.68]],["parent/1067",[376,3.948]],["name/1068",[64,46.38]],["parent/1068",[376,3.948]],["name/1069",[65,46.38]],["parent/1069",[376,3.948]],["name/1070",[66,46.68]],["parent/1070",[376,3.948]],["name/1071",[67,40.836]],["parent/1071",[376,3.948]],["name/1072",[68,46.233]],["parent/1072",[376,3.948]],["name/1073",[69,46.233]],["parent/1073",[376,3.948]],["name/1074",[70,46.68]],["parent/1074",[376,3.948]],["name/1075",[71,45.945]],["parent/1075",[376,3.948]],["name/1076",[72,46.529]],["parent/1076",[376,3.948]],["name/1077",[73,46.68]],["parent/1077",[376,3.948]],["name/1078",[74,46.68]],["parent/1078",[376,3.948]],["name/1079",[75,46.68]],["parent/1079",[376,3.948]],["name/1080",[76,46.529]],["parent/1080",[376,3.948]],["name/1081",[77,46.088]],["parent/1081",[376,3.948]],["name/1082",[78,46.088]],["parent/1082",[376,3.948]],["name/1083",[381,67.1]],["parent/1083",[]],["name/1084",[382,84.446]],["parent/1084",[381,6.62]],["name/1085",[383,79.338]],["parent/1085",[381,6.62]],["name/1086",[363,73.46]],["parent/1086",[381,6.62]],["name/1087",[117,56.931]],["parent/1087",[381,6.62]],["name/1088",[14,53.688]],["parent/1088",[381,6.62]],["name/1089",[384,84.446]],["parent/1089",[381,6.62]],["name/1090",[385,84.446]],["parent/1090",[381,6.62]],["name/1091",[386,73.46]],["parent/1091",[]],["name/1092",[387,84.446]],["parent/1092",[386,7.248]],["name/1093",[388,84.446]],["parent/1093",[386,7.248]],["name/1094",[389,49.894]],["parent/1094",[]],["name/1095",[10,39.265]],["parent/1095",[389,4.923]],["name/1096",[14,53.688]],["parent/1096",[389,4.923]],["name/1097",[15,59.323]],["parent/1097",[389,4.923]],["name/1098",[16,46.529]],["parent/1098",[389,4.923]],["name/1099",[17,43.671]],["parent/1099",[389,4.923]],["name/1100",[19,52.528]],["parent/1100",[389,4.923]],["name/1101",[390,69.783]],["parent/1101",[389,4.923]],["name/1102",[391,73.46]],["parent/1102",[389,4.923]],["name/1103",[392,84.446]],["parent/1103",[389,4.923]],["name/1104",[27,44.252]],["parent/1104",[389,4.923]],["name/1105",[46,46.68]],["parent/1105",[389,4.923]],["name/1106",[47,46.68]],["parent/1106",[389,4.923]],["name/1107",[48,46.68]],["parent/1107",[389,4.923]],["name/1108",[49,46.68]],["parent/1108",[389,4.923]],["name/1109",[50,46.68]],["parent/1109",[389,4.923]],["name/1110",[51,46.68]],["parent/1110",[389,4.923]],["name/1111",[52,46.68]],["parent/1111",[389,4.923]],["name/1112",[53,46.68]],["parent/1112",[389,4.923]],["name/1113",[54,46.68]],["parent/1113",[389,4.923]],["name/1114",[55,46.68]],["parent/1114",[389,4.923]],["name/1115",[56,46.68]],["parent/1115",[389,4.923]],["name/1116",[57,46.68]],["parent/1116",[389,4.923]],["name/1117",[58,46.68]],["parent/1117",[389,4.923]],["name/1118",[59,46.68]],["parent/1118",[389,4.923]],["name/1119",[60,46.68]],["parent/1119",[389,4.923]],["name/1120",[61,46.68]],["parent/1120",[389,4.923]],["name/1121",[62,46.68]],["parent/1121",[389,4.923]],["name/1122",[63,46.68]],["parent/1122",[389,4.923]],["name/1123",[64,46.38]],["parent/1123",[389,4.923]],["name/1124",[65,46.38]],["parent/1124",[389,4.923]],["name/1125",[66,46.68]],["parent/1125",[389,4.923]],["name/1126",[67,40.836]],["parent/1126",[389,4.923]],["name/1127",[68,46.233]],["parent/1127",[389,4.923]],["name/1128",[69,46.233]],["parent/1128",[389,4.923]],["name/1129",[70,46.68]],["parent/1129",[389,4.923]],["name/1130",[71,45.945]],["parent/1130",[389,4.923]],["name/1131",[72,46.529]],["parent/1131",[389,4.923]],["name/1132",[73,46.68]],["parent/1132",[389,4.923]],["name/1133",[74,46.68]],["parent/1133",[389,4.923]],["name/1134",[75,46.68]],["parent/1134",[389,4.923]],["name/1135",[76,46.529]],["parent/1135",[389,4.923]],["name/1136",[77,46.088]],["parent/1136",[389,4.923]],["name/1137",[78,46.088]],["parent/1137",[389,4.923]],["name/1138",[393,46.38]],["parent/1138",[]],["name/1139",[10,39.265]],["parent/1139",[393,4.576]],["name/1140",[394,84.446]],["parent/1140",[393,4.576]],["name/1141",[395,79.338]],["parent/1141",[393,4.576]],["name/1142",[11,57.82]],["parent/1142",[393,4.576]],["name/1143",[14,53.688]],["parent/1143",[393,4.576]],["name/1144",[15,59.323]],["parent/1144",[393,4.576]],["name/1145",[16,46.529]],["parent/1145",[393,4.576]],["name/1146",[17,43.671]],["parent/1146",[393,4.576]],["name/1147",[25,60.467]],["parent/1147",[393,4.576]],["name/1148",[396,84.446]],["parent/1148",[393,4.576]],["name/1149",[27,44.252]],["parent/1149",[393,4.576]],["name/1150",[24,49.085]],["parent/1150",[393,4.576]],["name/1151",[28,50.106]],["parent/1151",[393,4.576]],["name/1152",[29,60.467]],["parent/1152",[393,4.576]],["name/1153",[30,60.467]],["parent/1153",[393,4.576]],["name/1154",[31,60.467]],["parent/1154",[393,4.576]],["name/1155",[32,60.467]],["parent/1155",[393,4.576]],["name/1156",[33,60.467]],["parent/1156",[393,4.576]],["name/1157",[34,53.091]],["parent/1157",[393,4.576]],["name/1158",[35,53.091]],["parent/1158",[393,4.576]],["name/1159",[36,53.091]],["parent/1159",[393,4.576]],["name/1160",[37,55.729]],["parent/1160",[393,4.576]],["name/1161",[38,55.359]],["parent/1161",[393,4.576]],["name/1162",[39,60.467]],["parent/1162",[393,4.576]],["name/1163",[40,59.323]],["parent/1163",[393,4.576]],["name/1164",[41,60.467]],["parent/1164",[393,4.576]],["name/1165",[42,60.467]],["parent/1165",[393,4.576]],["name/1166",[43,52.257]],["parent/1166",[393,4.576]],["name/1167",[44,52.257]],["parent/1167",[393,4.576]],["name/1168",[45,60.467]],["parent/1168",[393,4.576]],["name/1169",[46,46.68]],["parent/1169",[393,4.576]],["name/1170",[47,46.68]],["parent/1170",[393,4.576]],["name/1171",[48,46.68]],["parent/1171",[393,4.576]],["name/1172",[49,46.68]],["parent/1172",[393,4.576]],["name/1173",[50,46.68]],["parent/1173",[393,4.576]],["name/1174",[51,46.68]],["parent/1174",[393,4.576]],["name/1175",[52,46.68]],["parent/1175",[393,4.576]],["name/1176",[53,46.68]],["parent/1176",[393,4.576]],["name/1177",[54,46.68]],["parent/1177",[393,4.576]],["name/1178",[55,46.68]],["parent/1178",[393,4.576]],["name/1179",[56,46.68]],["parent/1179",[393,4.576]],["name/1180",[57,46.68]],["parent/1180",[393,4.576]],["name/1181",[58,46.68]],["parent/1181",[393,4.576]],["name/1182",[59,46.68]],["parent/1182",[393,4.576]],["name/1183",[60,46.68]],["parent/1183",[393,4.576]],["name/1184",[61,46.68]],["parent/1184",[393,4.576]],["name/1185",[62,46.68]],["parent/1185",[393,4.576]],["name/1186",[63,46.68]],["parent/1186",[393,4.576]],["name/1187",[64,46.38]],["parent/1187",[393,4.576]],["name/1188",[65,46.38]],["parent/1188",[393,4.576]],["name/1189",[66,46.68]],["parent/1189",[393,4.576]],["name/1190",[67,40.836]],["parent/1190",[393,4.576]],["name/1191",[68,46.233]],["parent/1191",[393,4.576]],["name/1192",[69,46.233]],["parent/1192",[393,4.576]],["name/1193",[70,46.68]],["parent/1193",[393,4.576]],["name/1194",[71,45.945]],["parent/1194",[393,4.576]],["name/1195",[72,46.529]],["parent/1195",[393,4.576]],["name/1196",[73,46.68]],["parent/1196",[393,4.576]],["name/1197",[74,46.68]],["parent/1197",[393,4.576]],["name/1198",[75,46.68]],["parent/1198",[393,4.576]],["name/1199",[76,46.529]],["parent/1199",[393,4.576]],["name/1200",[77,46.088]],["parent/1200",[393,4.576]],["name/1201",[78,46.088]],["parent/1201",[393,4.576]],["name/1202",[397,79.338]],["parent/1202",[]],["name/1203",[1,49.281]],["parent/1203",[397,7.828]],["name/1204",[398,51.488]],["parent/1204",[]],["name/1205",[17,43.671]],["parent/1205",[398,5.08]],["name/1206",[399,56.514]],["parent/1206",[398,5.08]],["name/1207",[400,73.46]],["parent/1207",[398,5.08]],["name/1208",[0,58.797]],["parent/1208",[398,5.08]],["name/1209",[401,64.987]],["parent/1209",[398,5.08]],["name/1210",[402,84.446]],["parent/1210",[398,5.08]],["name/1211",[403,84.446]],["parent/1211",[398,5.08]],["name/1212",[404,84.446]],["parent/1212",[398,5.08]],["name/1213",[405,79.338]],["parent/1213",[398,5.08]],["name/1214",[214,71.453]],["parent/1214",[398,5.08]],["name/1215",[406,40.098]],["parent/1215",[398,5.08]],["name/1216",[407,84.446]],["parent/1216",[398,5.08]],["name/1217",[8,44.998]],["parent/1217",[398,5.08]],["name/1218",[408,64.077]],["parent/1218",[398,5.08]],["name/1219",[18,57.366]],["parent/1219",[398,5.08]],["name/1220",[409,63.244]],["parent/1220",[398,5.08]],["name/1221",[410,84.446]],["parent/1221",[398,5.08]],["name/1222",[411,84.446]],["parent/1222",[398,5.08]],["name/1223",[412,84.446]],["parent/1223",[398,5.08]],["name/1224",[413,84.446]],["parent/1224",[398,5.08]],["name/1225",[414,69.783]],["parent/1225",[398,5.08]],["name/1226",[415,84.446]],["parent/1226",[398,5.08]],["name/1227",[416,84.446]],["parent/1227",[398,5.08]],["name/1228",[417,84.446]],["parent/1228",[398,5.08]],["name/1229",[418,75.973]],["parent/1229",[398,5.08]],["name/1230",[419,75.973]],["parent/1230",[398,5.08]],["name/1231",[420,84.446]],["parent/1231",[398,5.08]],["name/1232",[421,84.446]],["parent/1232",[398,5.08]],["name/1233",[361,79.338]],["parent/1233",[398,5.08]],["name/1234",[422,84.446]],["parent/1234",[398,5.08]],["name/1235",[423,84.446]],["parent/1235",[398,5.08]],["name/1236",[424,84.446]],["parent/1236",[398,5.08]],["name/1237",[393,46.38]],["parent/1237",[398,5.08]],["name/1238",[425,79.338]],["parent/1238",[398,5.08]],["name/1239",[426,84.446]],["parent/1239",[398,5.08]],["name/1240",[427,79.338]],["parent/1240",[398,5.08]],["name/1241",[428,84.446]],["parent/1241",[398,5.08]],["name/1242",[429,84.446]],["parent/1242",[398,5.08]],["name/1243",[430,84.446]],["parent/1243",[398,5.08]],["name/1244",[431,73.46]],["parent/1244",[]],["name/1245",[414,69.783]],["parent/1245",[431,7.248]],["name/1246",[432,84.446]],["parent/1246",[431,7.248]],["name/1247",[418,75.973]],["parent/1247",[431,7.248]],["name/1248",[401,64.987]],["parent/1248",[]],["name/1249",[17,43.671]],["parent/1249",[401,6.412]],["name/1250",[405,79.338]],["parent/1250",[401,6.412]],["name/1251",[409,63.244]],["parent/1251",[401,6.412]],["name/1252",[408,64.077]],["parent/1252",[401,6.412]],["name/1253",[18,57.366]],["parent/1253",[401,6.412]],["name/1254",[433,69.783]],["parent/1254",[401,6.412]],["name/1255",[1,49.281]],["parent/1255",[401,6.412]],["name/1256",[434,75.973]],["parent/1256",[]],["name/1257",[214,71.453]],["parent/1257",[434,7.496]],["name/1258",[419,75.973]],["parent/1258",[434,7.496]],["name/1259",[435,75.973]],["parent/1259",[]],["name/1260",[436,46.529]],["parent/1260",[435,7.496]],["name/1261",[360,46.233]],["parent/1261",[435,7.496]],["name/1262",[399,56.514]],["parent/1262",[]],["name/1263",[17,43.671]],["parent/1263",[399,5.576]],["name/1264",[437,47.983]],["parent/1264",[399,5.576]],["name/1265",[438,84.446]],["parent/1265",[399,5.576]],["name/1266",[433,69.783]],["parent/1266",[399,5.576]],["name/1267",[401,64.987]],["parent/1267",[399,5.576]],["name/1268",[439,79.338]],["parent/1268",[399,5.576]],["name/1269",[440,84.446]],["parent/1269",[399,5.576]],["name/1270",[170,56.931]],["parent/1270",[399,5.576]],["name/1271",[441,84.446]],["parent/1271",[399,5.576]],["name/1272",[442,84.446]],["parent/1272",[399,5.576]],["name/1273",[443,79.338]],["parent/1273",[399,5.576]],["name/1274",[444,84.446]],["parent/1274",[399,5.576]],["name/1275",[445,84.446]],["parent/1275",[399,5.576]],["name/1276",[446,84.446]],["parent/1276",[399,5.576]],["name/1277",[447,84.446]],["parent/1277",[399,5.576]],["name/1278",[448,84.446]],["parent/1278",[399,5.576]],["name/1279",[449,84.446]],["parent/1279",[399,5.576]],["name/1280",[450,84.446]],["parent/1280",[399,5.576]],["name/1281",[451,84.446]],["parent/1281",[399,5.576]],["name/1282",[452,84.446]],["parent/1282",[399,5.576]],["name/1283",[453,71.453]],["parent/1283",[]],["name/1284",[437,47.983]],["parent/1284",[453,7.05]],["name/1285",[399,56.514]],["parent/1285",[453,7.05]],["name/1286",[439,79.338]],["parent/1286",[453,7.05]],["name/1287",[454,84.446]],["parent/1287",[453,7.05]],["name/1288",[455,73.46]],["parent/1288",[]],["name/1289",[360,46.233]],["parent/1289",[455,7.248]],["name/1290",[456,84.446]],["parent/1290",[455,7.248]],["name/1291",[436,46.529]],["parent/1291",[455,7.248]],["name/1292",[457,58.297]],["parent/1292",[]],["name/1293",[9,56.931]],["parent/1293",[457,5.752]],["name/1294",[17,43.671]],["parent/1294",[457,5.752]],["name/1295",[458,84.446]],["parent/1295",[457,5.752]],["name/1296",[433,69.783]],["parent/1296",[457,5.752]],["name/1297",[437,47.983]],["parent/1297",[457,5.752]],["name/1298",[399,56.514]],["parent/1298",[457,5.752]],["name/1299",[459,75.973]],["parent/1299",[457,5.752]],["name/1300",[460,62.474]],["parent/1300",[457,5.752]],["name/1301",[461,79.338]],["parent/1301",[457,5.752]],["name/1302",[462,69.783]],["parent/1302",[457,5.752]],["name/1303",[65,46.38]],["parent/1303",[457,5.752]],["name/1304",[463,75.973]],["parent/1304",[457,5.752]],["name/1305",[197,46.68]],["parent/1305",[457,5.752]],["name/1306",[464,47.149]],["parent/1306",[457,5.752]],["name/1307",[214,71.453]],["parent/1307",[457,5.752]],["name/1308",[465,47.149]],["parent/1308",[457,5.752]],["name/1309",[443,79.338]],["parent/1309",[457,5.752]],["name/1310",[466,71.453]],["parent/1310",[]],["name/1311",[467,79.338]],["parent/1311",[466,7.05]],["name/1312",[468,84.446]],["parent/1312",[466,7.05]],["name/1313",[18,57.366]],["parent/1313",[466,7.05]],["name/1314",[469,84.446]],["parent/1314",[466,7.05]],["name/1315",[470,69.783]],["parent/1315",[]],["name/1316",[471,84.446]],["parent/1316",[470,6.885]],["name/1317",[472,84.446]],["parent/1317",[470,6.885]],["name/1318",[303,73.46]],["parent/1318",[470,6.885]],["name/1319",[304,73.46]],["parent/1319",[470,6.885]],["name/1320",[473,75.973]],["parent/1320",[470,6.885]],["name/1321",[474,51.244]],["parent/1321",[]],["name/1322",[10,39.265]],["parent/1322",[474,5.056]],["name/1323",[16,46.529]],["parent/1323",[474,5.056]],["name/1324",[17,43.671]],["parent/1324",[474,5.056]],["name/1325",[46,46.68]],["parent/1325",[474,5.056]],["name/1326",[47,46.68]],["parent/1326",[474,5.056]],["name/1327",[48,46.68]],["parent/1327",[474,5.056]],["name/1328",[49,46.68]],["parent/1328",[474,5.056]],["name/1329",[50,46.68]],["parent/1329",[474,5.056]],["name/1330",[51,46.68]],["parent/1330",[474,5.056]],["name/1331",[52,46.68]],["parent/1331",[474,5.056]],["name/1332",[53,46.68]],["parent/1332",[474,5.056]],["name/1333",[27,44.252]],["parent/1333",[474,5.056]],["name/1334",[54,46.68]],["parent/1334",[474,5.056]],["name/1335",[55,46.68]],["parent/1335",[474,5.056]],["name/1336",[56,46.68]],["parent/1336",[474,5.056]],["name/1337",[57,46.68]],["parent/1337",[474,5.056]],["name/1338",[58,46.68]],["parent/1338",[474,5.056]],["name/1339",[59,46.68]],["parent/1339",[474,5.056]],["name/1340",[60,46.68]],["parent/1340",[474,5.056]],["name/1341",[61,46.68]],["parent/1341",[474,5.056]],["name/1342",[62,46.68]],["parent/1342",[474,5.056]],["name/1343",[63,46.68]],["parent/1343",[474,5.056]],["name/1344",[64,46.38]],["parent/1344",[474,5.056]],["name/1345",[65,46.38]],["parent/1345",[474,5.056]],["name/1346",[66,46.68]],["parent/1346",[474,5.056]],["name/1347",[67,40.836]],["parent/1347",[474,5.056]],["name/1348",[68,46.233]],["parent/1348",[474,5.056]],["name/1349",[69,46.233]],["parent/1349",[474,5.056]],["name/1350",[70,46.68]],["parent/1350",[474,5.056]],["name/1351",[71,45.945]],["parent/1351",[474,5.056]],["name/1352",[72,46.529]],["parent/1352",[474,5.056]],["name/1353",[73,46.68]],["parent/1353",[474,5.056]],["name/1354",[74,46.68]],["parent/1354",[474,5.056]],["name/1355",[75,46.68]],["parent/1355",[474,5.056]],["name/1356",[76,46.529]],["parent/1356",[474,5.056]],["name/1357",[77,46.088]],["parent/1357",[474,5.056]],["name/1358",[78,46.088]],["parent/1358",[474,5.056]],["name/1359",[475,69.783]],["parent/1359",[]],["name/1360",[476,41.451]],["parent/1360",[475,6.885]],["name/1361",[1,49.281]],["parent/1361",[475,6.885]],["name/1362",[477,73.46]],["parent/1362",[478,6.885]],["name/1363",[479,62.474]],["parent/1363",[475,6.885]],["name/1364",[1,49.281]],["parent/1364",[475,6.885]],["name/1365",[480,84.446]],["parent/1365",[478,6.885]],["name/1366",[481,84.446]],["parent/1366",[478,6.885]],["name/1367",[7,60.467]],["parent/1367",[478,6.885]],["name/1368",[262,65.988]],["parent/1368",[478,6.885]],["name/1369",[482,84.446]],["parent/1369",[478,6.885]],["name/1370",[67,40.836]],["parent/1370",[475,6.885]],["name/1371",[437,47.983]],["parent/1371",[]],["name/1372",[9,56.931]],["parent/1372",[437,4.734]],["name/1373",[16,46.529]],["parent/1373",[437,4.734]],["name/1374",[483,84.446]],["parent/1374",[437,4.734]],["name/1375",[17,43.671]],["parent/1375",[437,4.734]],["name/1376",[170,56.931]],["parent/1376",[437,4.734]],["name/1377",[462,69.783]],["parent/1377",[437,4.734]],["name/1378",[484,84.446]],["parent/1378",[437,4.734]],["name/1379",[64,46.38]],["parent/1379",[437,4.734]],["name/1380",[65,46.38]],["parent/1380",[437,4.734]],["name/1381",[129,54.001]],["parent/1381",[437,4.734]],["name/1382",[485,84.446]],["parent/1382",[437,4.734]],["name/1383",[476,41.451]],["parent/1383",[437,4.734]],["name/1384",[486,41.726]],["parent/1384",[437,4.734]],["name/1385",[487,36.488]],["parent/1385",[437,4.734]],["name/1386",[488,40.098]],["parent/1386",[437,4.734]],["name/1387",[489,40.098]],["parent/1387",[437,4.734]],["name/1388",[490,38.838]],["parent/1388",[437,4.734]],["name/1389",[491,39.942]],["parent/1389",[437,4.734]],["name/1390",[104,40.02]],["parent/1390",[437,4.734]],["name/1391",[369,40.098]],["parent/1391",[437,4.734]],["name/1392",[492,40.258]],["parent/1392",[437,4.734]],["name/1393",[493,40.258]],["parent/1393",[437,4.734]],["name/1394",[494,38.164]],["parent/1394",[437,4.734]],["name/1395",[495,36.379]],["parent/1395",[437,4.734]],["name/1396",[496,45.945]],["parent/1396",[437,4.734]],["name/1397",[8,44.998]],["parent/1397",[437,4.734]],["name/1398",[87,45.393]],["parent/1398",[437,4.734]],["name/1399",[319,41.361]],["parent/1399",[437,4.734]],["name/1400",[101,45.945]],["parent/1400",[437,4.734]],["name/1401",[497,44.998]],["parent/1401",[437,4.734]],["name/1402",[498,40.02]],["parent/1402",[437,4.734]],["name/1403",[499,84.446]],["parent/1403",[437,4.734]],["name/1404",[500,45.665]],["parent/1404",[437,4.734]],["name/1405",[501,54.324]],["parent/1405",[437,4.734]],["name/1406",[502,60.467]],["parent/1406",[437,4.734]],["name/1407",[503,49.685]],["parent/1407",[437,4.734]],["name/1408",[465,47.149]],["parent/1408",[437,4.734]],["name/1409",[504,49.085]],["parent/1409",[437,4.734]],["name/1410",[505,56.514]],["parent/1410",[437,4.734]],["name/1411",[464,47.149]],["parent/1411",[437,4.734]],["name/1412",[197,46.68]],["parent/1412",[437,4.734]],["name/1413",[389,49.894]],["parent/1413",[437,4.734]],["name/1414",[506,49.685]],["parent/1414",[437,4.734]],["name/1415",[507,49.281]],["parent/1415",[437,4.734]],["name/1416",[508,50.106]],["parent/1416",[437,4.734]],["name/1417",[509,48.704]],["parent/1417",[437,4.734]],["name/1418",[510,50.324]],["parent/1418",[437,4.734]],["name/1419",[457,58.297]],["parent/1419",[437,4.734]],["name/1420",[511,47.983]],["parent/1420",[437,4.734]],["name/1421",[512,46.68]],["parent/1421",[437,4.734]],["name/1422",[27,44.252]],["parent/1422",[437,4.734]],["name/1423",[513,40.258]],["parent/1423",[]],["name/1424",[514,84.446]],["parent/1424",[513,3.972]],["name/1425",[8,44.998]],["parent/1425",[513,3.972]],["name/1426",[87,45.393]],["parent/1426",[513,3.972]],["name/1427",[101,45.945]],["parent/1427",[513,3.972]],["name/1428",[515,47.149]],["parent/1428",[513,3.972]],["name/1429",[104,40.02]],["parent/1429",[513,3.972]],["name/1430",[197,46.68]],["parent/1430",[513,3.972]],["name/1431",[232,45.945]],["parent/1431",[513,3.972]],["name/1432",[247,58.797]],["parent/1432",[513,3.972]],["name/1433",[259,63.244]],["parent/1433",[513,3.972]],["name/1434",[268,49.894]],["parent/1434",[513,3.972]],["name/1435",[319,41.361]],["parent/1435",[513,3.972]],["name/1436",[360,46.233]],["parent/1436",[513,3.972]],["name/1437",[369,40.098]],["parent/1437",[513,3.972]],["name/1438",[376,40.02]],["parent/1438",[513,3.972]],["name/1439",[389,49.894]],["parent/1439",[513,3.972]],["name/1440",[393,46.38]],["parent/1440",[513,3.972]],["name/1441",[457,58.297]],["parent/1441",[513,3.972]],["name/1442",[474,51.244]],["parent/1442",[513,3.972]],["name/1443",[437,47.983]],["parent/1443",[513,3.972]],["name/1444",[67,40.836]],["parent/1444",[513,3.972]],["name/1445",[505,56.514]],["parent/1445",[513,3.972]],["name/1446",[516,54.001]],["parent/1446",[513,3.972]],["name/1447",[517,46.233]],["parent/1447",[513,3.972]],["name/1448",[490,38.838]],["parent/1448",[513,3.972]],["name/1449",[110,43.121]],["parent/1449",[513,3.972]],["name/1450",[488,40.098]],["parent/1450",[513,3.972]],["name/1451",[495,36.379]],["parent/1451",[513,3.972]],["name/1452",[496,45.945]],["parent/1452",[513,3.972]],["name/1453",[518,38.229]],["parent/1453",[513,3.972]],["name/1454",[519,67.1]],["parent/1454",[513,3.972]],["name/1455",[520,46.529]],["parent/1455",[513,3.972]],["name/1456",[493,40.258]],["parent/1456",[513,3.972]],["name/1457",[521,47.149]],["parent/1457",[513,3.972]],["name/1458",[502,60.467]],["parent/1458",[513,3.972]],["name/1459",[503,49.685]],["parent/1459",[513,3.972]],["name/1460",[522,55.729]],["parent/1460",[513,3.972]],["name/1461",[406,40.098]],["parent/1461",[513,3.972]],["name/1462",[523,39.635]],["parent/1462",[513,3.972]],["name/1463",[512,46.68]],["parent/1463",[513,3.972]],["name/1464",[497,44.998]],["parent/1464",[513,3.972]],["name/1465",[524,46.834]],["parent/1465",[513,3.972]],["name/1466",[460,62.474]],["parent/1466",[513,3.972]],["name/1467",[511,47.983]],["parent/1467",[513,3.972]],["name/1468",[525,61.092]],["parent/1468",[513,3.972]],["name/1469",[526,51.244]],["parent/1469",[513,3.972]],["name/1470",[479,62.474]],["parent/1470",[513,3.972]],["name/1471",[489,40.098]],["parent/1471",[513,3.972]],["name/1472",[527,47.149]],["parent/1472",[513,3.972]],["name/1473",[476,41.451]],["parent/1473",[513,3.972]],["name/1474",[504,49.085]],["parent/1474",[513,3.972]],["name/1475",[528,49.685]],["parent/1475",[513,3.972]],["name/1476",[507,49.281]],["parent/1476",[513,3.972]],["name/1477",[529,48.337]],["parent/1477",[513,3.972]],["name/1478",[487,36.488]],["parent/1478",[513,3.972]],["name/1479",[530,47.474]],["parent/1479",[513,3.972]],["name/1480",[531,47.641]],["parent/1480",[513,3.972]],["name/1481",[506,49.685]],["parent/1481",[513,3.972]],["name/1482",[436,46.529]],["parent/1482",[513,3.972]],["name/1483",[500,45.665]],["parent/1483",[513,3.972]],["name/1484",[297,45.665]],["parent/1484",[513,3.972]],["name/1485",[532,47.811]],["parent/1485",[513,3.972]],["name/1486",[510,50.324]],["parent/1486",[513,3.972]],["name/1487",[494,38.164]],["parent/1487",[513,3.972]],["name/1488",[533,48.704]],["parent/1488",[513,3.972]],["name/1489",[486,41.726]],["parent/1489",[513,3.972]],["name/1490",[534,49.481]],["parent/1490",[513,3.972]],["name/1491",[509,48.704]],["parent/1491",[513,3.972]],["name/1492",[498,40.02]],["parent/1492",[513,3.972]],["name/1493",[535,59.879]],["parent/1493",[513,3.972]],["name/1494",[491,39.942]],["parent/1494",[513,3.972]],["name/1495",[501,54.324]],["parent/1495",[513,3.972]],["name/1496",[536,46.834]],["parent/1496",[513,3.972]],["name/1497",[492,40.258]],["parent/1497",[513,3.972]],["name/1498",[537,46.68]],["parent/1498",[513,3.972]],["name/1499",[538,65.988]],["parent/1499",[513,3.972]],["name/1500",[464,47.149]],["parent/1500",[513,3.972]],["name/1501",[539,46.38]],["parent/1501",[513,3.972]],["name/1502",[508,50.106]],["parent/1502",[513,3.972]],["name/1503",[465,47.149]],["parent/1503",[513,3.972]],["name/1504",[540,47.983]],["parent/1504",[513,3.972]],["name/1505",[79,69.783]],["parent/1505",[513,3.972]],["name/1506",[84,69.783]],["parent/1506",[513,3.972]],["name/1507",[312,69.783]],["parent/1507",[513,3.972]],["name/1508",[313,73.46]],["parent/1508",[513,3.972]],["name/1509",[314,69.783]],["parent/1509",[513,3.972]],["name/1510",[315,69.783]],["parent/1510",[513,3.972]],["name/1511",[386,73.46]],["parent/1511",[513,3.972]],["name/1512",[78,46.088]],["parent/1512",[513,3.972]],["name/1513",[77,46.088]],["parent/1513",[513,3.972]],["name/1514",[541,68.352]],["parent/1514",[513,3.972]],["name/1515",[542,73.46]],["parent/1515",[513,3.972]],["name/1516",[543,71.453]],["parent/1516",[513,3.972]],["name/1517",[544,65.988]],["parent/1517",[513,3.972]],["name/1518",[545,65.988]],["parent/1518",[513,3.972]],["name/1519",[546,68.352]],["parent/1519",[513,3.972]],["name/1520",[547,73.46]],["parent/1520",[513,3.972]],["name/1521",[548,69.783]],["parent/1521",[513,3.972]],["name/1522",[549,71.453]],["parent/1522",[513,3.972]],["name/1523",[550,84.446]],["parent/1523",[513,3.972]],["name/1524",[551,84.446]],["parent/1524",[513,3.972]],["name/1525",[552,84.446]],["parent/1525",[513,3.972]],["name/1526",[553,84.446]],["parent/1526",[513,3.972]],["name/1527",[554,84.446]],["parent/1527",[513,3.972]],["name/1528",[555,84.446]],["parent/1528",[513,3.972]],["name/1529",[556,84.446]],["parent/1529",[513,3.972]],["name/1530",[557,73.46]],["parent/1530",[513,3.972]],["name/1531",[558,84.446]],["parent/1531",[513,3.972]],["name/1532",[559,84.446]],["parent/1532",[513,3.972]],["name/1533",[560,84.446]],["parent/1533",[513,3.972]],["name/1534",[561,84.446]],["parent/1534",[513,3.972]],["name/1535",[562,84.446]],["parent/1535",[513,3.972]],["name/1536",[563,84.446]],["parent/1536",[513,3.972]],["name/1537",[564,84.446]],["parent/1537",[513,3.972]],["name/1538",[565,84.446]],["parent/1538",[513,3.972]],["name/1539",[520,46.529]],["parent/1539",[513,3.972]],["name/1540",[566,84.446]],["parent/1540",[513,3.972]],["name/1541",[567,84.446]],["parent/1541",[513,3.972]],["name/1542",[568,84.446]],["parent/1542",[513,3.972]],["name/1543",[569,84.446]],["parent/1543",[513,3.972]],["name/1544",[570,84.446]],["parent/1544",[513,3.972]],["name/1545",[17,43.671]],["parent/1545",[513,3.972]],["name/1546",[71,45.945]],["parent/1546",[]],["name/1547",[571,79.338]],["parent/1547",[71,4.533]],["name/1548",[572,79.338]],["parent/1548",[71,4.533]],["name/1549",[573,84.446]],["parent/1549",[71,4.533]],["name/1550",[574,79.338]],["parent/1550",[71,4.533]],["name/1551",[575,79.338]],["parent/1551",[]],["name/1552",[1,49.281]],["parent/1552",[575,7.828]],["name/1553",[576,84.446]],["parent/1553",[577,7.828]],["name/1554",[332,69.783]],["parent/1554",[577,7.828]],["name/1555",[578,71.453]],["parent/1555",[]],["name/1556",[331,67.1]],["parent/1556",[578,7.05]],["name/1557",[579,84.446]],["parent/1557",[578,7.05]],["name/1558",[557,73.46]],["parent/1558",[578,7.05]],["name/1559",[580,84.446]],["parent/1559",[578,7.05]],["name/1560",[581,63.244]],["parent/1560",[]],["name/1561",[582,75.973]],["parent/1561",[581,6.24]],["name/1562",[583,84.446]],["parent/1562",[581,6.24]],["name/1563",[476,41.451]],["parent/1563",[581,6.24]],["name/1564",[8,44.998]],["parent/1564",[581,6.24]],["name/1565",[360,46.233]],["parent/1565",[581,6.24]],["name/1566",[511,47.983]],["parent/1566",[581,6.24]],["name/1567",[584,84.446]],["parent/1567",[581,6.24]],["name/1568",[101,45.945]],["parent/1568",[581,6.24]],["name/1569",[537,46.68]],["parent/1569",[581,6.24]],["name/1570",[523,39.635]],["parent/1570",[581,6.24]],["name/1571",[331,67.1]],["parent/1571",[581,6.24]],["name/1572",[585,64.987]],["parent/1572",[]],["name/1573",[586,79.338]],["parent/1573",[585,6.412]],["name/1574",[587,79.338]],["parent/1574",[585,6.412]],["name/1575",[588,84.446]],["parent/1575",[585,6.412]],["name/1576",[589,84.446]],["parent/1576",[585,6.412]],["name/1577",[590,79.338]],["parent/1577",[585,6.412]],["name/1578",[591,84.446]],["parent/1578",[585,6.412]],["name/1579",[592,84.446]],["parent/1579",[585,6.412]],["name/1580",[593,84.446]],["parent/1580",[585,6.412]],["name/1581",[594,84.446]],["parent/1581",[585,6.412]],["name/1582",[78,46.088]],["parent/1582",[]],["name/1583",[595,79.338]],["parent/1583",[78,4.547]],["name/1584",[596,79.338]],["parent/1584",[78,4.547]],["name/1585",[77,46.088]],["parent/1585",[]],["name/1586",[595,79.338]],["parent/1586",[77,4.547]],["name/1587",[597,79.338]],["parent/1587",[77,4.547]],["name/1588",[67,40.836]],["parent/1588",[]],["name/1589",[598,84.446]],["parent/1589",[67,4.029]],["name/1590",[599,84.446]],["parent/1590",[67,4.029]],["name/1591",[572,79.338]],["parent/1591",[67,4.029]],["name/1592",[600,84.446]],["parent/1592",[67,4.029]],["name/1593",[601,84.446]],["parent/1593",[67,4.029]],["name/1594",[602,84.446]],["parent/1594",[67,4.029]],["name/1595",[603,84.446]],["parent/1595",[67,4.029]],["name/1596",[604,84.446]],["parent/1596",[67,4.029]],["name/1597",[605,84.446]],["parent/1597",[67,4.029]],["name/1598",[606,84.446]],["parent/1598",[67,4.029]],["name/1599",[607,84.446]],["parent/1599",[67,4.029]],["name/1600",[608,84.446]],["parent/1600",[67,4.029]],["name/1601",[609,84.446]],["parent/1601",[67,4.029]],["name/1602",[610,84.446]],["parent/1602",[67,4.029]],["name/1603",[611,84.446]],["parent/1603",[67,4.029]],["name/1604",[612,84.446]],["parent/1604",[67,4.029]],["name/1605",[613,84.446]],["parent/1605",[67,4.029]],["name/1606",[614,84.446]],["parent/1606",[67,4.029]],["name/1607",[615,84.446]],["parent/1607",[67,4.029]],["name/1608",[162,56.114]],["parent/1608",[67,4.029]],["name/1609",[616,84.446]],["parent/1609",[67,4.029]],["name/1610",[617,84.446]],["parent/1610",[67,4.029]],["name/1611",[618,84.446]],["parent/1611",[67,4.029]],["name/1612",[619,79.338]],["parent/1612",[67,4.029]],["name/1613",[620,84.446]],["parent/1613",[67,4.029]],["name/1614",[621,84.446]],["parent/1614",[67,4.029]],["name/1615",[622,79.338]],["parent/1615",[67,4.029]],["name/1616",[623,73.46]],["parent/1616",[]],["name/1617",[624,79.338]],["parent/1617",[623,7.248]],["name/1618",[625,79.338]],["parent/1618",[623,7.248]],["name/1619",[626,79.338]],["parent/1619",[623,7.248]],["name/1620",[627,71.453]],["parent/1620",[]],["name/1621",[628,84.446]],["parent/1621",[627,7.05]],["name/1622",[476,41.451]],["parent/1622",[627,7.05]],["name/1623",[629,84.446]],["parent/1623",[627,7.05]],["name/1624",[630,84.446]],["parent/1624",[627,7.05]],["name/1625",[631,71.453]],["parent/1625",[]],["name/1626",[632,84.446]],["parent/1626",[631,7.05]],["name/1627",[633,84.446]],["parent/1627",[631,7.05]],["name/1628",[634,84.446]],["parent/1628",[631,7.05]],["name/1629",[635,84.446]],["parent/1629",[631,7.05]],["name/1630",[505,56.514]],["parent/1630",[]],["name/1631",[9,56.931]],["parent/1631",[505,5.576]],["name/1632",[636,84.446]],["parent/1632",[505,5.576]],["name/1633",[637,84.446]],["parent/1633",[505,5.576]],["name/1634",[638,84.446]],["parent/1634",[505,5.576]],["name/1635",[639,84.446]],["parent/1635",[505,5.576]],["name/1636",[640,84.446]],["parent/1636",[505,5.576]],["name/1637",[641,79.338]],["parent/1637",[505,5.576]],["name/1638",[17,43.671]],["parent/1638",[505,5.576]],["name/1639",[642,84.446]],["parent/1639",[505,5.576]],["name/1640",[643,84.446]],["parent/1640",[505,5.576]],["name/1641",[644,84.446]],["parent/1641",[505,5.576]],["name/1642",[645,84.446]],["parent/1642",[505,5.576]],["name/1643",[646,84.446]],["parent/1643",[505,5.576]],["name/1644",[109,56.114]],["parent/1644",[505,5.576]],["name/1645",[647,84.446]],["parent/1645",[505,5.576]],["name/1646",[648,84.446]],["parent/1646",[505,5.576]],["name/1647",[186,56.514]],["parent/1647",[505,5.576]],["name/1648",[649,84.446]],["parent/1648",[505,5.576]],["name/1649",[11,57.82]],["parent/1649",[505,5.576]],["name/1650",[650,84.446]],["parent/1650",[505,5.576]],["name/1651",[146,59.323]],["parent/1651",[505,5.576]],["name/1652",[516,54.001]],["parent/1652",[]],["name/1653",[10,39.265]],["parent/1653",[516,5.328]],["name/1654",[651,84.446]],["parent/1654",[516,5.328]],["name/1655",[652,84.446]],["parent/1655",[516,5.328]],["name/1656",[653,84.446]],["parent/1656",[516,5.328]],["name/1657",[17,43.671]],["parent/1657",[516,5.328]],["name/1658",[654,84.446]],["parent/1658",[516,5.328]],["name/1659",[655,84.446]],["parent/1659",[516,5.328]],["name/1660",[461,79.338]],["parent/1660",[516,5.328]],["name/1661",[656,79.338]],["parent/1661",[516,5.328]],["name/1662",[657,84.446]],["parent/1662",[516,5.328]],["name/1663",[277,73.46]],["parent/1663",[516,5.328]],["name/1664",[658,84.446]],["parent/1664",[516,5.328]],["name/1665",[659,84.446]],["parent/1665",[516,5.328]],["name/1666",[660,84.446]],["parent/1666",[516,5.328]],["name/1667",[427,79.338]],["parent/1667",[516,5.328]],["name/1668",[661,84.446]],["parent/1668",[516,5.328]],["name/1669",[662,84.446]],["parent/1669",[516,5.328]],["name/1670",[663,84.446]],["parent/1670",[516,5.328]],["name/1671",[664,84.446]],["parent/1671",[516,5.328]],["name/1672",[257,79.338]],["parent/1672",[516,5.328]],["name/1673",[248,79.338]],["parent/1673",[516,5.328]],["name/1674",[665,84.446]],["parent/1674",[516,5.328]],["name/1675",[666,84.446]],["parent/1675",[516,5.328]],["name/1676",[667,84.446]],["parent/1676",[516,5.328]],["name/1677",[622,79.338]],["parent/1677",[516,5.328]],["name/1678",[668,84.446]],["parent/1678",[516,5.328]],["name/1679",[669,84.446]],["parent/1679",[516,5.328]],["name/1680",[463,75.973]],["parent/1680",[516,5.328]],["name/1681",[517,46.233]],["parent/1681",[]],["name/1682",[10,39.265]],["parent/1682",[517,4.561]],["name/1683",[16,46.529]],["parent/1683",[517,4.561]],["name/1684",[11,57.82]],["parent/1684",[517,4.561]],["name/1685",[102,79.338]],["parent/1685",[517,4.561]],["name/1686",[14,53.688]],["parent/1686",[517,4.561]],["name/1687",[15,59.323]],["parent/1687",[517,4.561]],["name/1688",[17,43.671]],["parent/1688",[517,4.561]],["name/1689",[670,84.446]],["parent/1689",[517,4.561]],["name/1690",[671,84.446]],["parent/1690",[517,4.561]],["name/1691",[672,79.338]],["parent/1691",[517,4.561]],["name/1692",[673,79.338]],["parent/1692",[517,4.561]],["name/1693",[27,44.252]],["parent/1693",[517,4.561]],["name/1694",[24,49.085]],["parent/1694",[517,4.561]],["name/1695",[28,50.106]],["parent/1695",[517,4.561]],["name/1696",[29,60.467]],["parent/1696",[517,4.561]],["name/1697",[30,60.467]],["parent/1697",[517,4.561]],["name/1698",[25,60.467]],["parent/1698",[517,4.561]],["name/1699",[31,60.467]],["parent/1699",[517,4.561]],["name/1700",[32,60.467]],["parent/1700",[517,4.561]],["name/1701",[33,60.467]],["parent/1701",[517,4.561]],["name/1702",[34,53.091]],["parent/1702",[517,4.561]],["name/1703",[35,53.091]],["parent/1703",[517,4.561]],["name/1704",[36,53.091]],["parent/1704",[517,4.561]],["name/1705",[37,55.729]],["parent/1705",[517,4.561]],["name/1706",[38,55.359]],["parent/1706",[517,4.561]],["name/1707",[39,60.467]],["parent/1707",[517,4.561]],["name/1708",[40,59.323]],["parent/1708",[517,4.561]],["name/1709",[41,60.467]],["parent/1709",[517,4.561]],["name/1710",[42,60.467]],["parent/1710",[517,4.561]],["name/1711",[43,52.257]],["parent/1711",[517,4.561]],["name/1712",[44,52.257]],["parent/1712",[517,4.561]],["name/1713",[45,60.467]],["parent/1713",[517,4.561]],["name/1714",[46,46.68]],["parent/1714",[517,4.561]],["name/1715",[47,46.68]],["parent/1715",[517,4.561]],["name/1716",[48,46.68]],["parent/1716",[517,4.561]],["name/1717",[49,46.68]],["parent/1717",[517,4.561]],["name/1718",[50,46.68]],["parent/1718",[517,4.561]],["name/1719",[51,46.68]],["parent/1719",[517,4.561]],["name/1720",[52,46.68]],["parent/1720",[517,4.561]],["name/1721",[53,46.68]],["parent/1721",[517,4.561]],["name/1722",[54,46.68]],["parent/1722",[517,4.561]],["name/1723",[55,46.68]],["parent/1723",[517,4.561]],["name/1724",[56,46.68]],["parent/1724",[517,4.561]],["name/1725",[57,46.68]],["parent/1725",[517,4.561]],["name/1726",[58,46.68]],["parent/1726",[517,4.561]],["name/1727",[59,46.68]],["parent/1727",[517,4.561]],["name/1728",[60,46.68]],["parent/1728",[517,4.561]],["name/1729",[61,46.68]],["parent/1729",[517,4.561]],["name/1730",[62,46.68]],["parent/1730",[517,4.561]],["name/1731",[63,46.68]],["parent/1731",[517,4.561]],["name/1732",[64,46.38]],["parent/1732",[517,4.561]],["name/1733",[65,46.38]],["parent/1733",[517,4.561]],["name/1734",[66,46.68]],["parent/1734",[517,4.561]],["name/1735",[67,40.836]],["parent/1735",[517,4.561]],["name/1736",[68,46.233]],["parent/1736",[517,4.561]],["name/1737",[69,46.233]],["parent/1737",[517,4.561]],["name/1738",[70,46.68]],["parent/1738",[517,4.561]],["name/1739",[71,45.945]],["parent/1739",[517,4.561]],["name/1740",[72,46.529]],["parent/1740",[517,4.561]],["name/1741",[73,46.68]],["parent/1741",[517,4.561]],["name/1742",[74,46.68]],["parent/1742",[517,4.561]],["name/1743",[75,46.68]],["parent/1743",[517,4.561]],["name/1744",[76,46.529]],["parent/1744",[517,4.561]],["name/1745",[77,46.088]],["parent/1745",[517,4.561]],["name/1746",[78,46.088]],["parent/1746",[517,4.561]],["name/1747",[490,38.838]],["parent/1747",[]],["name/1748",[10,39.265]],["parent/1748",[490,3.832]],["name/1749",[105,59.879]],["parent/1749",[490,3.832]],["name/1750",[16,46.529]],["parent/1750",[490,3.832]],["name/1751",[17,43.671]],["parent/1751",[490,3.832]],["name/1752",[127,59.323]],["parent/1752",[490,3.832]],["name/1753",[131,53.688]],["parent/1753",[490,3.832]],["name/1754",[108,59.323]],["parent/1754",[490,3.832]],["name/1755",[109,56.114]],["parent/1755",[490,3.832]],["name/1756",[27,44.252]],["parent/1756",[490,3.832]],["name/1757",[674,64.077]],["parent/1757",[490,3.832]],["name/1758",[436,46.529]],["parent/1758",[490,3.832]],["name/1759",[675,69.783]],["parent/1759",[490,3.832]],["name/1760",[676,69.783]],["parent/1760",[490,3.832]],["name/1761",[677,69.783]],["parent/1761",[490,3.832]],["name/1762",[678,69.783]],["parent/1762",[490,3.832]],["name/1763",[679,69.783]],["parent/1763",[490,3.832]],["name/1764",[680,69.783]],["parent/1764",[490,3.832]],["name/1765",[681,69.783]],["parent/1765",[490,3.832]],["name/1766",[217,68.352]],["parent/1766",[490,3.832]],["name/1767",[682,69.783]],["parent/1767",[490,3.832]],["name/1768",[164,59.323]],["parent/1768",[490,3.832]],["name/1769",[683,69.783]],["parent/1769",[490,3.832]],["name/1770",[684,69.783]],["parent/1770",[490,3.832]],["name/1771",[685,69.783]],["parent/1771",[490,3.832]],["name/1772",[686,69.783]],["parent/1772",[490,3.832]],["name/1773",[687,69.783]],["parent/1773",[490,3.832]],["name/1774",[165,59.879]],["parent/1774",[490,3.832]],["name/1775",[143,58.797]],["parent/1775",[490,3.832]],["name/1776",[688,67.1]],["parent/1776",[490,3.832]],["name/1777",[689,69.783]],["parent/1777",[490,3.832]],["name/1778",[186,56.514]],["parent/1778",[490,3.832]],["name/1779",[690,69.783]],["parent/1779",[490,3.832]],["name/1780",[110,43.121]],["parent/1780",[490,3.832]],["name/1781",[111,56.931]],["parent/1781",[490,3.832]],["name/1782",[112,54.657]],["parent/1782",[490,3.832]],["name/1783",[19,52.528]],["parent/1783",[490,3.832]],["name/1784",[1,49.281]],["parent/1784",[490,3.832]],["name/1785",[113,59.879]],["parent/1785",[691,6.164]],["name/1786",[27,44.252]],["parent/1786",[691,6.164]],["name/1787",[115,59.879]],["parent/1787",[691,6.164]],["name/1788",[116,59.879]],["parent/1788",[691,6.164]],["name/1789",[117,56.931]],["parent/1789",[691,6.164]],["name/1790",[118,59.879]],["parent/1790",[691,6.164]],["name/1791",[119,59.879]],["parent/1791",[691,6.164]],["name/1792",[120,57.366]],["parent/1792",[691,6.164]],["name/1793",[121,59.879]],["parent/1793",[691,6.164]],["name/1794",[122,59.879]],["parent/1794",[691,6.164]],["name/1795",[123,56.514]],["parent/1795",[691,6.164]],["name/1796",[67,40.836]],["parent/1796",[691,6.164]],["name/1797",[124,58.297]],["parent/1797",[691,6.164]],["name/1798",[125,59.879]],["parent/1798",[490,3.832]],["name/1799",[126,59.879]],["parent/1799",[490,3.832]],["name/1800",[128,59.879]],["parent/1800",[490,3.832]],["name/1801",[129,54.001]],["parent/1801",[490,3.832]],["name/1802",[130,54.001]],["parent/1802",[490,3.832]],["name/1803",[132,59.879]],["parent/1803",[490,3.832]],["name/1804",[133,59.879]],["parent/1804",[490,3.832]],["name/1805",[134,59.879]],["parent/1805",[490,3.832]],["name/1806",[135,59.879]],["parent/1806",[490,3.832]],["name/1807",[136,59.323]],["parent/1807",[490,3.832]],["name/1808",[137,59.879]],["parent/1808",[490,3.832]],["name/1809",[138,59.879]],["parent/1809",[490,3.832]],["name/1810",[139,59.879]],["parent/1810",[490,3.832]],["name/1811",[140,59.879]],["parent/1811",[490,3.832]],["name/1812",[141,59.879]],["parent/1812",[490,3.832]],["name/1813",[142,59.879]],["parent/1813",[490,3.832]],["name/1814",[144,59.323]],["parent/1814",[490,3.832]],["name/1815",[145,59.323]],["parent/1815",[490,3.832]],["name/1816",[146,59.323]],["parent/1816",[490,3.832]],["name/1817",[147,59.323]],["parent/1817",[490,3.832]],["name/1818",[148,59.879]],["parent/1818",[490,3.832]],["name/1819",[149,59.879]],["parent/1819",[490,3.832]],["name/1820",[150,59.879]],["parent/1820",[490,3.832]],["name/1821",[151,59.879]],["parent/1821",[490,3.832]],["name/1822",[152,59.879]],["parent/1822",[490,3.832]],["name/1823",[153,59.879]],["parent/1823",[490,3.832]],["name/1824",[154,59.879]],["parent/1824",[490,3.832]],["name/1825",[155,59.879]],["parent/1825",[490,3.832]],["name/1826",[156,57.82]],["parent/1826",[490,3.832]],["name/1827",[157,59.879]],["parent/1827",[490,3.832]],["name/1828",[158,59.879]],["parent/1828",[490,3.832]],["name/1829",[159,59.879]],["parent/1829",[490,3.832]],["name/1830",[160,59.879]],["parent/1830",[490,3.832]],["name/1831",[161,59.879]],["parent/1831",[490,3.832]],["name/1832",[162,56.114]],["parent/1832",[490,3.832]],["name/1833",[163,59.323]],["parent/1833",[490,3.832]],["name/1834",[166,59.879]],["parent/1834",[490,3.832]],["name/1835",[167,59.879]],["parent/1835",[490,3.832]],["name/1836",[168,59.879]],["parent/1836",[490,3.832]],["name/1837",[169,59.879]],["parent/1837",[490,3.832]],["name/1838",[170,56.931]],["parent/1838",[490,3.832]],["name/1839",[171,59.323]],["parent/1839",[490,3.832]],["name/1840",[172,59.323]],["parent/1840",[490,3.832]],["name/1841",[28,50.106]],["parent/1841",[490,3.832]],["name/1842",[24,49.085]],["parent/1842",[490,3.832]],["name/1843",[43,52.257]],["parent/1843",[490,3.832]],["name/1844",[44,52.257]],["parent/1844",[490,3.832]],["name/1845",[173,53.688]],["parent/1845",[490,3.832]],["name/1846",[174,58.797]],["parent/1846",[490,3.832]],["name/1847",[175,59.323]],["parent/1847",[490,3.832]],["name/1848",[176,59.323]],["parent/1848",[490,3.832]],["name/1849",[177,59.323]],["parent/1849",[490,3.832]],["name/1850",[178,59.323]],["parent/1850",[490,3.832]],["name/1851",[179,59.323]],["parent/1851",[490,3.832]],["name/1852",[180,59.323]],["parent/1852",[490,3.832]],["name/1853",[181,59.323]],["parent/1853",[490,3.832]],["name/1854",[182,59.323]],["parent/1854",[490,3.832]],["name/1855",[183,57.82]],["parent/1855",[490,3.832]],["name/1856",[184,59.323]],["parent/1856",[490,3.832]],["name/1857",[185,59.323]],["parent/1857",[490,3.832]],["name/1858",[187,58.797]],["parent/1858",[490,3.832]],["name/1859",[188,59.323]],["parent/1859",[490,3.832]],["name/1860",[189,59.323]],["parent/1860",[490,3.832]],["name/1861",[190,59.323]],["parent/1861",[490,3.832]],["name/1862",[191,59.323]],["parent/1862",[490,3.832]],["name/1863",[192,59.323]],["parent/1863",[490,3.832]],["name/1864",[36,53.091]],["parent/1864",[490,3.832]],["name/1865",[34,53.091]],["parent/1865",[490,3.832]],["name/1866",[35,53.091]],["parent/1866",[490,3.832]],["name/1867",[46,46.68]],["parent/1867",[490,3.832]],["name/1868",[47,46.68]],["parent/1868",[490,3.832]],["name/1869",[48,46.68]],["parent/1869",[490,3.832]],["name/1870",[49,46.68]],["parent/1870",[490,3.832]],["name/1871",[50,46.68]],["parent/1871",[490,3.832]],["name/1872",[51,46.68]],["parent/1872",[490,3.832]],["name/1873",[52,46.68]],["parent/1873",[490,3.832]],["name/1874",[53,46.68]],["parent/1874",[490,3.832]],["name/1875",[54,46.68]],["parent/1875",[490,3.832]],["name/1876",[55,46.68]],["parent/1876",[490,3.832]],["name/1877",[56,46.68]],["parent/1877",[490,3.832]],["name/1878",[57,46.68]],["parent/1878",[490,3.832]],["name/1879",[58,46.68]],["parent/1879",[490,3.832]],["name/1880",[59,46.68]],["parent/1880",[490,3.832]],["name/1881",[60,46.68]],["parent/1881",[490,3.832]],["name/1882",[61,46.68]],["parent/1882",[490,3.832]],["name/1883",[62,46.68]],["parent/1883",[490,3.832]],["name/1884",[63,46.68]],["parent/1884",[490,3.832]],["name/1885",[64,46.38]],["parent/1885",[490,3.832]],["name/1886",[65,46.38]],["parent/1886",[490,3.832]],["name/1887",[66,46.68]],["parent/1887",[490,3.832]],["name/1888",[67,40.836]],["parent/1888",[490,3.832]],["name/1889",[68,46.233]],["parent/1889",[490,3.832]],["name/1890",[69,46.233]],["parent/1890",[490,3.832]],["name/1891",[70,46.68]],["parent/1891",[490,3.832]],["name/1892",[71,45.945]],["parent/1892",[490,3.832]],["name/1893",[72,46.529]],["parent/1893",[490,3.832]],["name/1894",[73,46.68]],["parent/1894",[490,3.832]],["name/1895",[74,46.68]],["parent/1895",[490,3.832]],["name/1896",[75,46.68]],["parent/1896",[490,3.832]],["name/1897",[76,46.529]],["parent/1897",[490,3.832]],["name/1898",[77,46.088]],["parent/1898",[490,3.832]],["name/1899",[78,46.088]],["parent/1899",[490,3.832]],["name/1900",[692,56.931]],["parent/1900",[]],["name/1901",[693,84.446]],["parent/1901",[692,5.617]],["name/1902",[694,84.446]],["parent/1902",[692,5.617]],["name/1903",[14,53.688]],["parent/1903",[692,5.617]],["name/1904",[695,84.446]],["parent/1904",[692,5.617]],["name/1905",[696,84.446]],["parent/1905",[692,5.617]],["name/1906",[697,84.446]],["parent/1906",[692,5.617]],["name/1907",[698,84.446]],["parent/1907",[692,5.617]],["name/1908",[699,84.446]],["parent/1908",[692,5.617]],["name/1909",[700,84.446]],["parent/1909",[692,5.617]],["name/1910",[436,46.529]],["parent/1910",[692,5.617]],["name/1911",[97,67.1]],["parent/1911",[692,5.617]],["name/1912",[701,84.446]],["parent/1912",[692,5.617]],["name/1913",[702,84.446]],["parent/1913",[692,5.617]],["name/1914",[703,84.446]],["parent/1914",[692,5.617]],["name/1915",[7,60.467]],["parent/1915",[692,5.617]],["name/1916",[230,68.352]],["parent/1916",[692,5.617]],["name/1917",[704,84.446]],["parent/1917",[692,5.617]],["name/1918",[705,84.446]],["parent/1918",[692,5.617]],["name/1919",[706,84.446]],["parent/1919",[692,5.617]],["name/1920",[707,84.446]],["parent/1920",[692,5.617]],["name/1921",[24,49.085]],["parent/1921",[692,5.617]],["name/1922",[162,56.114]],["parent/1922",[692,5.617]],["name/1923",[708,79.338]],["parent/1923",[]],["name/1924",[10,39.265]],["parent/1924",[708,7.828]],["name/1925",[709,64.077]],["parent/1925",[]],["name/1926",[7,60.467]],["parent/1926",[709,6.322]],["name/1927",[262,65.988]],["parent/1927",[709,6.322]],["name/1928",[586,79.338]],["parent/1928",[709,6.322]],["name/1929",[587,79.338]],["parent/1929",[709,6.322]],["name/1930",[363,73.46]],["parent/1930",[709,6.322]],["name/1931",[117,56.931]],["parent/1931",[709,6.322]],["name/1932",[123,56.514]],["parent/1932",[709,6.322]],["name/1933",[590,79.338]],["parent/1933",[709,6.322]],["name/1934",[710,84.446]],["parent/1934",[709,6.322]],["name/1935",[67,40.836]],["parent/1935",[709,6.322]],["name/1936",[711,71.453]],["parent/1936",[]],["name/1937",[256,79.338]],["parent/1937",[711,7.05]],["name/1938",[0,58.797]],["parent/1938",[711,7.05]],["name/1939",[712,84.446]],["parent/1939",[711,7.05]],["name/1940",[713,84.446]],["parent/1940",[711,7.05]],["name/1941",[110,43.121]],["parent/1941",[]],["name/1942",[10,39.265]],["parent/1942",[110,4.254]],["name/1943",[714,79.338]],["parent/1943",[110,4.254]],["name/1944",[715,79.338]],["parent/1944",[110,4.254]],["name/1945",[716,79.338]],["parent/1945",[110,4.254]],["name/1946",[717,79.338]],["parent/1946",[110,4.254]],["name/1947",[718,79.338]],["parent/1947",[110,4.254]],["name/1948",[719,79.338]],["parent/1948",[110,4.254]],["name/1949",[720,79.338]],["parent/1949",[110,4.254]],["name/1950",[721,79.338]],["parent/1950",[110,4.254]],["name/1951",[24,49.085]],["parent/1951",[110,4.254]],["name/1952",[16,46.529]],["parent/1952",[110,4.254]],["name/1953",[17,43.671]],["parent/1953",[110,4.254]],["name/1954",[722,79.338]],["parent/1954",[110,4.254]],["name/1955",[97,67.1]],["parent/1955",[110,4.254]],["name/1956",[332,69.783]],["parent/1956",[110,4.254]],["name/1957",[723,79.338]],["parent/1957",[110,4.254]],["name/1958",[724,79.338]],["parent/1958",[110,4.254]],["name/1959",[123,56.514]],["parent/1959",[110,4.254]],["name/1960",[27,44.252]],["parent/1960",[110,4.254]],["name/1961",[725,79.338]],["parent/1961",[110,4.254]],["name/1962",[462,69.783]],["parent/1962",[110,4.254]],["name/1963",[726,79.338]],["parent/1963",[110,4.254]],["name/1964",[131,53.688]],["parent/1964",[110,4.254]],["name/1965",[44,52.257]],["parent/1965",[110,4.254]],["name/1966",[43,52.257]],["parent/1966",[110,4.254]],["name/1967",[727,79.338]],["parent/1967",[110,4.254]],["name/1968",[40,59.323]],["parent/1968",[110,4.254]],["name/1969",[170,56.931]],["parent/1969",[110,4.254]],["name/1970",[728,79.338]],["parent/1970",[110,4.254]],["name/1971",[162,56.114]],["parent/1971",[110,4.254]],["name/1972",[729,79.338]],["parent/1972",[110,4.254]],["name/1973",[730,79.338]],["parent/1973",[110,4.254]],["name/1974",[731,79.338]],["parent/1974",[110,4.254]],["name/1975",[732,79.338]],["parent/1975",[110,4.254]],["name/1976",[130,54.001]],["parent/1976",[110,4.254]],["name/1977",[733,79.338]],["parent/1977",[110,4.254]],["name/1978",[46,46.68]],["parent/1978",[110,4.254]],["name/1979",[47,46.68]],["parent/1979",[110,4.254]],["name/1980",[48,46.68]],["parent/1980",[110,4.254]],["name/1981",[49,46.68]],["parent/1981",[110,4.254]],["name/1982",[50,46.68]],["parent/1982",[110,4.254]],["name/1983",[51,46.68]],["parent/1983",[110,4.254]],["name/1984",[52,46.68]],["parent/1984",[110,4.254]],["name/1985",[53,46.68]],["parent/1985",[110,4.254]],["name/1986",[54,46.68]],["parent/1986",[110,4.254]],["name/1987",[55,46.68]],["parent/1987",[110,4.254]],["name/1988",[56,46.68]],["parent/1988",[110,4.254]],["name/1989",[57,46.68]],["parent/1989",[110,4.254]],["name/1990",[58,46.68]],["parent/1990",[110,4.254]],["name/1991",[59,46.68]],["parent/1991",[110,4.254]],["name/1992",[60,46.68]],["parent/1992",[110,4.254]],["name/1993",[61,46.68]],["parent/1993",[110,4.254]],["name/1994",[62,46.68]],["parent/1994",[110,4.254]],["name/1995",[63,46.68]],["parent/1995",[110,4.254]],["name/1996",[64,46.38]],["parent/1996",[110,4.254]],["name/1997",[65,46.38]],["parent/1997",[110,4.254]],["name/1998",[66,46.68]],["parent/1998",[110,4.254]],["name/1999",[67,40.836]],["parent/1999",[110,4.254]],["name/2000",[68,46.233]],["parent/2000",[110,4.254]],["name/2001",[69,46.233]],["parent/2001",[110,4.254]],["name/2002",[70,46.68]],["parent/2002",[110,4.254]],["name/2003",[71,45.945]],["parent/2003",[110,4.254]],["name/2004",[72,46.529]],["parent/2004",[110,4.254]],["name/2005",[73,46.68]],["parent/2005",[110,4.254]],["name/2006",[74,46.68]],["parent/2006",[110,4.254]],["name/2007",[75,46.68]],["parent/2007",[110,4.254]],["name/2008",[76,46.529]],["parent/2008",[110,4.254]],["name/2009",[77,46.088]],["parent/2009",[110,4.254]],["name/2010",[78,46.088]],["parent/2010",[110,4.254]],["name/2011",[734,75.973]],["parent/2011",[]],["name/2012",[735,84.446]],["parent/2012",[734,7.496]],["name/2013",[0,58.797]],["parent/2013",[734,7.496]],["name/2014",[488,40.098]],["parent/2014",[]],["name/2015",[10,39.265]],["parent/2015",[488,3.956]],["name/2016",[105,59.879]],["parent/2016",[488,3.956]],["name/2017",[16,46.529]],["parent/2017",[488,3.956]],["name/2018",[17,43.671]],["parent/2018",[488,3.956]],["name/2019",[736,79.338]],["parent/2019",[488,3.956]],["name/2020",[63,46.68]],["parent/2020",[488,3.956]],["name/2021",[109,56.114]],["parent/2021",[488,3.956]],["name/2022",[737,69.783]],["parent/2022",[488,3.956]],["name/2023",[27,44.252]],["parent/2023",[488,3.956]],["name/2024",[110,43.121]],["parent/2024",[488,3.956]],["name/2025",[111,56.931]],["parent/2025",[488,3.956]],["name/2026",[112,54.657]],["parent/2026",[488,3.956]],["name/2027",[19,52.528]],["parent/2027",[488,3.956]],["name/2028",[1,49.281]],["parent/2028",[488,3.956]],["name/2029",[113,59.879]],["parent/2029",[738,6.164]],["name/2030",[27,44.252]],["parent/2030",[738,6.164]],["name/2031",[115,59.879]],["parent/2031",[738,6.164]],["name/2032",[116,59.879]],["parent/2032",[738,6.164]],["name/2033",[117,56.931]],["parent/2033",[738,6.164]],["name/2034",[118,59.879]],["parent/2034",[738,6.164]],["name/2035",[119,59.879]],["parent/2035",[738,6.164]],["name/2036",[120,57.366]],["parent/2036",[738,6.164]],["name/2037",[121,59.879]],["parent/2037",[738,6.164]],["name/2038",[122,59.879]],["parent/2038",[738,6.164]],["name/2039",[123,56.514]],["parent/2039",[738,6.164]],["name/2040",[67,40.836]],["parent/2040",[738,6.164]],["name/2041",[124,58.297]],["parent/2041",[738,6.164]],["name/2042",[125,59.879]],["parent/2042",[488,3.956]],["name/2043",[126,59.879]],["parent/2043",[488,3.956]],["name/2044",[127,59.323]],["parent/2044",[488,3.956]],["name/2045",[128,59.879]],["parent/2045",[488,3.956]],["name/2046",[129,54.001]],["parent/2046",[488,3.956]],["name/2047",[130,54.001]],["parent/2047",[488,3.956]],["name/2048",[131,53.688]],["parent/2048",[488,3.956]],["name/2049",[132,59.879]],["parent/2049",[488,3.956]],["name/2050",[133,59.879]],["parent/2050",[488,3.956]],["name/2051",[134,59.879]],["parent/2051",[488,3.956]],["name/2052",[135,59.879]],["parent/2052",[488,3.956]],["name/2053",[136,59.323]],["parent/2053",[488,3.956]],["name/2054",[137,59.879]],["parent/2054",[488,3.956]],["name/2055",[138,59.879]],["parent/2055",[488,3.956]],["name/2056",[139,59.879]],["parent/2056",[488,3.956]],["name/2057",[140,59.879]],["parent/2057",[488,3.956]],["name/2058",[141,59.879]],["parent/2058",[488,3.956]],["name/2059",[142,59.879]],["parent/2059",[488,3.956]],["name/2060",[143,58.797]],["parent/2060",[488,3.956]],["name/2061",[144,59.323]],["parent/2061",[488,3.956]],["name/2062",[145,59.323]],["parent/2062",[488,3.956]],["name/2063",[146,59.323]],["parent/2063",[488,3.956]],["name/2064",[147,59.323]],["parent/2064",[488,3.956]],["name/2065",[148,59.879]],["parent/2065",[488,3.956]],["name/2066",[149,59.879]],["parent/2066",[488,3.956]],["name/2067",[150,59.879]],["parent/2067",[488,3.956]],["name/2068",[151,59.879]],["parent/2068",[488,3.956]],["name/2069",[152,59.879]],["parent/2069",[488,3.956]],["name/2070",[153,59.879]],["parent/2070",[488,3.956]],["name/2071",[154,59.879]],["parent/2071",[488,3.956]],["name/2072",[155,59.879]],["parent/2072",[488,3.956]],["name/2073",[156,57.82]],["parent/2073",[488,3.956]],["name/2074",[157,59.879]],["parent/2074",[488,3.956]],["name/2075",[158,59.879]],["parent/2075",[488,3.956]],["name/2076",[159,59.879]],["parent/2076",[488,3.956]],["name/2077",[160,59.879]],["parent/2077",[488,3.956]],["name/2078",[161,59.879]],["parent/2078",[488,3.956]],["name/2079",[162,56.114]],["parent/2079",[488,3.956]],["name/2080",[163,59.323]],["parent/2080",[488,3.956]],["name/2081",[164,59.323]],["parent/2081",[488,3.956]],["name/2082",[165,59.879]],["parent/2082",[488,3.956]],["name/2083",[166,59.879]],["parent/2083",[488,3.956]],["name/2084",[167,59.879]],["parent/2084",[488,3.956]],["name/2085",[168,59.879]],["parent/2085",[488,3.956]],["name/2086",[169,59.879]],["parent/2086",[488,3.956]],["name/2087",[170,56.931]],["parent/2087",[488,3.956]],["name/2088",[171,59.323]],["parent/2088",[488,3.956]],["name/2089",[172,59.323]],["parent/2089",[488,3.956]],["name/2090",[28,50.106]],["parent/2090",[488,3.956]],["name/2091",[24,49.085]],["parent/2091",[488,3.956]],["name/2092",[43,52.257]],["parent/2092",[488,3.956]],["name/2093",[44,52.257]],["parent/2093",[488,3.956]],["name/2094",[173,53.688]],["parent/2094",[488,3.956]],["name/2095",[174,58.797]],["parent/2095",[488,3.956]],["name/2096",[175,59.323]],["parent/2096",[488,3.956]],["name/2097",[176,59.323]],["parent/2097",[488,3.956]],["name/2098",[177,59.323]],["parent/2098",[488,3.956]],["name/2099",[178,59.323]],["parent/2099",[488,3.956]],["name/2100",[179,59.323]],["parent/2100",[488,3.956]],["name/2101",[180,59.323]],["parent/2101",[488,3.956]],["name/2102",[181,59.323]],["parent/2102",[488,3.956]],["name/2103",[182,59.323]],["parent/2103",[488,3.956]],["name/2104",[108,59.323]],["parent/2104",[488,3.956]],["name/2105",[183,57.82]],["parent/2105",[488,3.956]],["name/2106",[184,59.323]],["parent/2106",[488,3.956]],["name/2107",[185,59.323]],["parent/2107",[488,3.956]],["name/2108",[186,56.514]],["parent/2108",[488,3.956]],["name/2109",[187,58.797]],["parent/2109",[488,3.956]],["name/2110",[188,59.323]],["parent/2110",[488,3.956]],["name/2111",[189,59.323]],["parent/2111",[488,3.956]],["name/2112",[190,59.323]],["parent/2112",[488,3.956]],["name/2113",[191,59.323]],["parent/2113",[488,3.956]],["name/2114",[192,59.323]],["parent/2114",[488,3.956]],["name/2115",[36,53.091]],["parent/2115",[488,3.956]],["name/2116",[34,53.091]],["parent/2116",[488,3.956]],["name/2117",[35,53.091]],["parent/2117",[488,3.956]],["name/2118",[46,46.68]],["parent/2118",[488,3.956]],["name/2119",[47,46.68]],["parent/2119",[488,3.956]],["name/2120",[48,46.68]],["parent/2120",[488,3.956]],["name/2121",[49,46.68]],["parent/2121",[488,3.956]],["name/2122",[50,46.68]],["parent/2122",[488,3.956]],["name/2123",[51,46.68]],["parent/2123",[488,3.956]],["name/2124",[52,46.68]],["parent/2124",[488,3.956]],["name/2125",[53,46.68]],["parent/2125",[488,3.956]],["name/2126",[54,46.68]],["parent/2126",[488,3.956]],["name/2127",[55,46.68]],["parent/2127",[488,3.956]],["name/2128",[56,46.68]],["parent/2128",[488,3.956]],["name/2129",[57,46.68]],["parent/2129",[488,3.956]],["name/2130",[58,46.68]],["parent/2130",[488,3.956]],["name/2131",[59,46.68]],["parent/2131",[488,3.956]],["name/2132",[60,46.68]],["parent/2132",[488,3.956]],["name/2133",[61,46.68]],["parent/2133",[488,3.956]],["name/2134",[62,46.68]],["parent/2134",[488,3.956]],["name/2135",[64,46.38]],["parent/2135",[488,3.956]],["name/2136",[65,46.38]],["parent/2136",[488,3.956]],["name/2137",[66,46.68]],["parent/2137",[488,3.956]],["name/2138",[67,40.836]],["parent/2138",[488,3.956]],["name/2139",[68,46.233]],["parent/2139",[488,3.956]],["name/2140",[69,46.233]],["parent/2140",[488,3.956]],["name/2141",[70,46.68]],["parent/2141",[488,3.956]],["name/2142",[71,45.945]],["parent/2142",[488,3.956]],["name/2143",[72,46.529]],["parent/2143",[488,3.956]],["name/2144",[73,46.68]],["parent/2144",[488,3.956]],["name/2145",[74,46.68]],["parent/2145",[488,3.956]],["name/2146",[75,46.68]],["parent/2146",[488,3.956]],["name/2147",[76,46.529]],["parent/2147",[488,3.956]],["name/2148",[77,46.088]],["parent/2148",[488,3.956]],["name/2149",[78,46.088]],["parent/2149",[488,3.956]],["name/2150",[739,59.879]],["parent/2150",[]],["name/2151",[425,79.338]],["parent/2151",[739,5.908]],["name/2152",[674,64.077]],["parent/2152",[739,5.908]],["name/2153",[740,75.973]],["parent/2153",[739,5.908]],["name/2154",[741,71.453]],["parent/2154",[739,5.908]],["name/2155",[742,71.453]],["parent/2155",[739,5.908]],["name/2156",[124,58.297]],["parent/2156",[739,5.908]],["name/2157",[120,57.366]],["parent/2157",[739,5.908]],["name/2158",[743,75.973]],["parent/2158",[739,5.908]],["name/2159",[360,46.233]],["parent/2159",[739,5.908]],["name/2160",[111,56.931]],["parent/2160",[739,5.908]],["name/2161",[409,63.244]],["parent/2161",[739,5.908]],["name/2162",[0,58.797]],["parent/2162",[739,5.908]],["name/2163",[408,64.077]],["parent/2163",[739,5.908]],["name/2164",[18,57.366]],["parent/2164",[739,5.908]],["name/2165",[744,69.783]],["parent/2165",[739,5.908]],["name/2166",[745,69.783]],["parent/2166",[739,5.908]],["name/2167",[495,36.379]],["parent/2167",[]],["name/2168",[10,39.265]],["parent/2168",[495,3.589]],["name/2169",[746,79.338]],["parent/2169",[495,3.589]],["name/2170",[123,56.514]],["parent/2170",[495,3.589]],["name/2171",[9,56.931]],["parent/2171",[495,3.589]],["name/2172",[747,79.338]],["parent/2172",[495,3.589]],["name/2173",[748,79.338]],["parent/2173",[495,3.589]],["name/2174",[749,79.338]],["parent/2174",[495,3.589]],["name/2175",[11,57.82]],["parent/2175",[495,3.589]],["name/2176",[186,56.514]],["parent/2176",[495,3.589]],["name/2177",[105,59.879]],["parent/2177",[495,3.589]],["name/2178",[16,46.529]],["parent/2178",[495,3.589]],["name/2179",[17,43.671]],["parent/2179",[495,3.589]],["name/2180",[686,69.783]],["parent/2180",[495,3.589]],["name/2181",[750,79.338]],["parent/2181",[495,3.589]],["name/2182",[27,44.252]],["parent/2182",[495,3.589]],["name/2183",[751,84.446]],["parent/2183",[495,3.589]],["name/2184",[752,75.973]],["parent/2184",[495,3.589]],["name/2185",[753,75.973]],["parent/2185",[495,3.589]],["name/2186",[170,56.931]],["parent/2186",[495,3.589]],["name/2187",[155,59.879]],["parent/2187",[495,3.589]],["name/2188",[678,69.783]],["parent/2188",[495,3.589]],["name/2189",[754,79.338]],["parent/2189",[495,3.589]],["name/2190",[755,79.338]],["parent/2190",[495,3.589]],["name/2191",[756,79.338]],["parent/2191",[495,3.589]],["name/2192",[757,79.338]],["parent/2192",[495,3.589]],["name/2193",[63,46.68]],["parent/2193",[495,3.589]],["name/2194",[137,59.879]],["parent/2194",[495,3.589]],["name/2195",[127,59.323]],["parent/2195",[495,3.589]],["name/2196",[758,79.338]],["parent/2196",[495,3.589]],["name/2197",[150,59.879]],["parent/2197",[495,3.589]],["name/2198",[689,69.783]],["parent/2198",[495,3.589]],["name/2199",[684,69.783]],["parent/2199",[495,3.589]],["name/2200",[143,58.797]],["parent/2200",[495,3.589]],["name/2201",[688,67.1]],["parent/2201",[495,3.589]],["name/2202",[131,53.688]],["parent/2202",[495,3.589]],["name/2203",[759,75.973]],["parent/2203",[495,3.589]],["name/2204",[760,79.338]],["parent/2204",[495,3.589]],["name/2205",[166,59.879]],["parent/2205",[495,3.589]],["name/2206",[167,59.879]],["parent/2206",[495,3.589]],["name/2207",[138,59.879]],["parent/2207",[495,3.589]],["name/2208",[158,59.879]],["parent/2208",[495,3.589]],["name/2209",[48,46.68]],["parent/2209",[495,3.589]],["name/2210",[761,79.338]],["parent/2210",[495,3.589]],["name/2211",[762,79.338]],["parent/2211",[495,3.589]],["name/2212",[763,79.338]],["parent/2212",[495,3.589]],["name/2213",[764,79.338]],["parent/2213",[495,3.589]],["name/2214",[765,79.338]],["parent/2214",[495,3.589]],["name/2215",[766,79.338]],["parent/2215",[495,3.589]],["name/2216",[767,79.338]],["parent/2216",[495,3.589]],["name/2217",[768,79.338]],["parent/2217",[495,3.589]],["name/2218",[769,79.338]],["parent/2218",[495,3.589]],["name/2219",[770,79.338]],["parent/2219",[495,3.589]],["name/2220",[771,79.338]],["parent/2220",[495,3.589]],["name/2221",[109,56.114]],["parent/2221",[495,3.589]],["name/2222",[772,79.338]],["parent/2222",[495,3.589]],["name/2223",[773,79.338]],["parent/2223",[495,3.589]],["name/2224",[774,79.338]],["parent/2224",[495,3.589]],["name/2225",[775,79.338]],["parent/2225",[495,3.589]],["name/2226",[776,79.338]],["parent/2226",[495,3.589]],["name/2227",[777,79.338]],["parent/2227",[495,3.589]],["name/2228",[737,69.783]],["parent/2228",[495,3.589]],["name/2229",[778,79.338]],["parent/2229",[495,3.589]],["name/2230",[779,73.46]],["parent/2230",[495,3.589]],["name/2231",[780,79.338]],["parent/2231",[495,3.589]],["name/2232",[690,69.783]],["parent/2232",[495,3.589]],["name/2233",[674,64.077]],["parent/2233",[495,3.589]],["name/2234",[436,46.529]],["parent/2234",[495,3.589]],["name/2235",[675,69.783]],["parent/2235",[495,3.589]],["name/2236",[676,69.783]],["parent/2236",[495,3.589]],["name/2237",[677,69.783]],["parent/2237",[495,3.589]],["name/2238",[679,69.783]],["parent/2238",[495,3.589]],["name/2239",[680,69.783]],["parent/2239",[495,3.589]],["name/2240",[681,69.783]],["parent/2240",[495,3.589]],["name/2241",[217,68.352]],["parent/2241",[495,3.589]],["name/2242",[682,69.783]],["parent/2242",[495,3.589]],["name/2243",[164,59.323]],["parent/2243",[495,3.589]],["name/2244",[683,69.783]],["parent/2244",[495,3.589]],["name/2245",[685,69.783]],["parent/2245",[495,3.589]],["name/2246",[687,69.783]],["parent/2246",[495,3.589]],["name/2247",[165,59.879]],["parent/2247",[495,3.589]],["name/2248",[186,56.514]],["parent/2248",[495,3.589]],["name/2249",[110,43.121]],["parent/2249",[495,3.589]],["name/2250",[111,56.931]],["parent/2250",[495,3.589]],["name/2251",[112,54.657]],["parent/2251",[495,3.589]],["name/2252",[19,52.528]],["parent/2252",[495,3.589]],["name/2253",[1,49.281]],["parent/2253",[495,3.589]],["name/2254",[113,59.879]],["parent/2254",[781,6.164]],["name/2255",[27,44.252]],["parent/2255",[781,6.164]],["name/2256",[115,59.879]],["parent/2256",[781,6.164]],["name/2257",[116,59.879]],["parent/2257",[781,6.164]],["name/2258",[117,56.931]],["parent/2258",[781,6.164]],["name/2259",[118,59.879]],["parent/2259",[781,6.164]],["name/2260",[119,59.879]],["parent/2260",[781,6.164]],["name/2261",[120,57.366]],["parent/2261",[781,6.164]],["name/2262",[121,59.879]],["parent/2262",[781,6.164]],["name/2263",[122,59.879]],["parent/2263",[781,6.164]],["name/2264",[123,56.514]],["parent/2264",[781,6.164]],["name/2265",[67,40.836]],["parent/2265",[781,6.164]],["name/2266",[124,58.297]],["parent/2266",[781,6.164]],["name/2267",[125,59.879]],["parent/2267",[495,3.589]],["name/2268",[126,59.879]],["parent/2268",[495,3.589]],["name/2269",[128,59.879]],["parent/2269",[495,3.589]],["name/2270",[129,54.001]],["parent/2270",[495,3.589]],["name/2271",[130,54.001]],["parent/2271",[495,3.589]],["name/2272",[132,59.879]],["parent/2272",[495,3.589]],["name/2273",[133,59.879]],["parent/2273",[495,3.589]],["name/2274",[134,59.879]],["parent/2274",[495,3.589]],["name/2275",[135,59.879]],["parent/2275",[495,3.589]],["name/2276",[136,59.323]],["parent/2276",[495,3.589]],["name/2277",[139,59.879]],["parent/2277",[495,3.589]],["name/2278",[140,59.879]],["parent/2278",[495,3.589]],["name/2279",[141,59.879]],["parent/2279",[495,3.589]],["name/2280",[142,59.879]],["parent/2280",[495,3.589]],["name/2281",[144,59.323]],["parent/2281",[495,3.589]],["name/2282",[145,59.323]],["parent/2282",[495,3.589]],["name/2283",[146,59.323]],["parent/2283",[495,3.589]],["name/2284",[147,59.323]],["parent/2284",[495,3.589]],["name/2285",[148,59.879]],["parent/2285",[495,3.589]],["name/2286",[149,59.879]],["parent/2286",[495,3.589]],["name/2287",[151,59.879]],["parent/2287",[495,3.589]],["name/2288",[152,59.879]],["parent/2288",[495,3.589]],["name/2289",[153,59.879]],["parent/2289",[495,3.589]],["name/2290",[154,59.879]],["parent/2290",[495,3.589]],["name/2291",[156,57.82]],["parent/2291",[495,3.589]],["name/2292",[157,59.879]],["parent/2292",[495,3.589]],["name/2293",[159,59.879]],["parent/2293",[495,3.589]],["name/2294",[160,59.879]],["parent/2294",[495,3.589]],["name/2295",[161,59.879]],["parent/2295",[495,3.589]],["name/2296",[162,56.114]],["parent/2296",[495,3.589]],["name/2297",[163,59.323]],["parent/2297",[495,3.589]],["name/2298",[168,59.879]],["parent/2298",[495,3.589]],["name/2299",[169,59.879]],["parent/2299",[495,3.589]],["name/2300",[171,59.323]],["parent/2300",[495,3.589]],["name/2301",[172,59.323]],["parent/2301",[495,3.589]],["name/2302",[28,50.106]],["parent/2302",[495,3.589]],["name/2303",[24,49.085]],["parent/2303",[495,3.589]],["name/2304",[43,52.257]],["parent/2304",[495,3.589]],["name/2305",[44,52.257]],["parent/2305",[495,3.589]],["name/2306",[173,53.688]],["parent/2306",[495,3.589]],["name/2307",[174,58.797]],["parent/2307",[495,3.589]],["name/2308",[175,59.323]],["parent/2308",[495,3.589]],["name/2309",[176,59.323]],["parent/2309",[495,3.589]],["name/2310",[177,59.323]],["parent/2310",[495,3.589]],["name/2311",[178,59.323]],["parent/2311",[495,3.589]],["name/2312",[179,59.323]],["parent/2312",[495,3.589]],["name/2313",[180,59.323]],["parent/2313",[495,3.589]],["name/2314",[181,59.323]],["parent/2314",[495,3.589]],["name/2315",[182,59.323]],["parent/2315",[495,3.589]],["name/2316",[108,59.323]],["parent/2316",[495,3.589]],["name/2317",[183,57.82]],["parent/2317",[495,3.589]],["name/2318",[184,59.323]],["parent/2318",[495,3.589]],["name/2319",[185,59.323]],["parent/2319",[495,3.589]],["name/2320",[187,58.797]],["parent/2320",[495,3.589]],["name/2321",[188,59.323]],["parent/2321",[495,3.589]],["name/2322",[189,59.323]],["parent/2322",[495,3.589]],["name/2323",[190,59.323]],["parent/2323",[495,3.589]],["name/2324",[191,59.323]],["parent/2324",[495,3.589]],["name/2325",[192,59.323]],["parent/2325",[495,3.589]],["name/2326",[36,53.091]],["parent/2326",[495,3.589]],["name/2327",[34,53.091]],["parent/2327",[495,3.589]],["name/2328",[35,53.091]],["parent/2328",[495,3.589]],["name/2329",[46,46.68]],["parent/2329",[495,3.589]],["name/2330",[47,46.68]],["parent/2330",[495,3.589]],["name/2331",[49,46.68]],["parent/2331",[495,3.589]],["name/2332",[50,46.68]],["parent/2332",[495,3.589]],["name/2333",[51,46.68]],["parent/2333",[495,3.589]],["name/2334",[52,46.68]],["parent/2334",[495,3.589]],["name/2335",[53,46.68]],["parent/2335",[495,3.589]],["name/2336",[54,46.68]],["parent/2336",[495,3.589]],["name/2337",[55,46.68]],["parent/2337",[495,3.589]],["name/2338",[56,46.68]],["parent/2338",[495,3.589]],["name/2339",[57,46.68]],["parent/2339",[495,3.589]],["name/2340",[58,46.68]],["parent/2340",[495,3.589]],["name/2341",[59,46.68]],["parent/2341",[495,3.589]],["name/2342",[60,46.68]],["parent/2342",[495,3.589]],["name/2343",[61,46.68]],["parent/2343",[495,3.589]],["name/2344",[62,46.68]],["parent/2344",[495,3.589]],["name/2345",[64,46.38]],["parent/2345",[495,3.589]],["name/2346",[65,46.38]],["parent/2346",[495,3.589]],["name/2347",[66,46.68]],["parent/2347",[495,3.589]],["name/2348",[67,40.836]],["parent/2348",[495,3.589]],["name/2349",[68,46.233]],["parent/2349",[495,3.589]],["name/2350",[69,46.233]],["parent/2350",[495,3.589]],["name/2351",[70,46.68]],["parent/2351",[495,3.589]],["name/2352",[71,45.945]],["parent/2352",[495,3.589]],["name/2353",[72,46.529]],["parent/2353",[495,3.589]],["name/2354",[73,46.68]],["parent/2354",[495,3.589]],["name/2355",[74,46.68]],["parent/2355",[495,3.589]],["name/2356",[75,46.68]],["parent/2356",[495,3.589]],["name/2357",[76,46.529]],["parent/2357",[495,3.589]],["name/2358",[77,46.088]],["parent/2358",[495,3.589]],["name/2359",[78,46.088]],["parent/2359",[495,3.589]],["name/2360",[496,45.945]],["parent/2360",[]],["name/2361",[9,56.931]],["parent/2361",[496,4.533]],["name/2362",[10,39.265]],["parent/2362",[496,4.533]],["name/2363",[11,57.82]],["parent/2363",[496,4.533]],["name/2364",[14,53.688]],["parent/2364",[496,4.533]],["name/2365",[15,59.323]],["parent/2365",[496,4.533]],["name/2366",[16,46.529]],["parent/2366",[496,4.533]],["name/2367",[17,43.671]],["parent/2367",[496,4.533]],["name/2368",[19,52.528]],["parent/2368",[496,4.533]],["name/2369",[1,49.281]],["parent/2369",[496,4.533]],["name/2370",[782,84.446]],["parent/2370",[783,8.332]],["name/2371",[109,56.114]],["parent/2371",[496,4.533]],["name/2372",[784,84.446]],["parent/2372",[496,4.533]],["name/2373",[28,50.106]],["parent/2373",[496,4.533]],["name/2374",[24,49.085]],["parent/2374",[496,4.533]],["name/2375",[785,84.446]],["parent/2375",[496,4.533]],["name/2376",[27,44.252]],["parent/2376",[496,4.533]],["name/2377",[29,60.467]],["parent/2377",[496,4.533]],["name/2378",[30,60.467]],["parent/2378",[496,4.533]],["name/2379",[25,60.467]],["parent/2379",[496,4.533]],["name/2380",[31,60.467]],["parent/2380",[496,4.533]],["name/2381",[32,60.467]],["parent/2381",[496,4.533]],["name/2382",[33,60.467]],["parent/2382",[496,4.533]],["name/2383",[34,53.091]],["parent/2383",[496,4.533]],["name/2384",[35,53.091]],["parent/2384",[496,4.533]],["name/2385",[36,53.091]],["parent/2385",[496,4.533]],["name/2386",[37,55.729]],["parent/2386",[496,4.533]],["name/2387",[38,55.359]],["parent/2387",[496,4.533]],["name/2388",[39,60.467]],["parent/2388",[496,4.533]],["name/2389",[40,59.323]],["parent/2389",[496,4.533]],["name/2390",[41,60.467]],["parent/2390",[496,4.533]],["name/2391",[42,60.467]],["parent/2391",[496,4.533]],["name/2392",[43,52.257]],["parent/2392",[496,4.533]],["name/2393",[44,52.257]],["parent/2393",[496,4.533]],["name/2394",[45,60.467]],["parent/2394",[496,4.533]],["name/2395",[46,46.68]],["parent/2395",[496,4.533]],["name/2396",[47,46.68]],["parent/2396",[496,4.533]],["name/2397",[48,46.68]],["parent/2397",[496,4.533]],["name/2398",[49,46.68]],["parent/2398",[496,4.533]],["name/2399",[50,46.68]],["parent/2399",[496,4.533]],["name/2400",[51,46.68]],["parent/2400",[496,4.533]],["name/2401",[52,46.68]],["parent/2401",[496,4.533]],["name/2402",[53,46.68]],["parent/2402",[496,4.533]],["name/2403",[54,46.68]],["parent/2403",[496,4.533]],["name/2404",[55,46.68]],["parent/2404",[496,4.533]],["name/2405",[56,46.68]],["parent/2405",[496,4.533]],["name/2406",[57,46.68]],["parent/2406",[496,4.533]],["name/2407",[58,46.68]],["parent/2407",[496,4.533]],["name/2408",[59,46.68]],["parent/2408",[496,4.533]],["name/2409",[60,46.68]],["parent/2409",[496,4.533]],["name/2410",[61,46.68]],["parent/2410",[496,4.533]],["name/2411",[62,46.68]],["parent/2411",[496,4.533]],["name/2412",[63,46.68]],["parent/2412",[496,4.533]],["name/2413",[64,46.38]],["parent/2413",[496,4.533]],["name/2414",[65,46.38]],["parent/2414",[496,4.533]],["name/2415",[66,46.68]],["parent/2415",[496,4.533]],["name/2416",[67,40.836]],["parent/2416",[496,4.533]],["name/2417",[68,46.233]],["parent/2417",[496,4.533]],["name/2418",[69,46.233]],["parent/2418",[496,4.533]],["name/2419",[70,46.68]],["parent/2419",[496,4.533]],["name/2420",[71,45.945]],["parent/2420",[496,4.533]],["name/2421",[72,46.529]],["parent/2421",[496,4.533]],["name/2422",[73,46.68]],["parent/2422",[496,4.533]],["name/2423",[74,46.68]],["parent/2423",[496,4.533]],["name/2424",[75,46.68]],["parent/2424",[496,4.533]],["name/2425",[76,46.529]],["parent/2425",[496,4.533]],["name/2426",[77,46.088]],["parent/2426",[496,4.533]],["name/2427",[78,46.088]],["parent/2427",[496,4.533]],["name/2428",[518,38.229]],["parent/2428",[]],["name/2429",[10,39.265]],["parent/2429",[518,3.772]],["name/2430",[105,59.879]],["parent/2430",[518,3.772]],["name/2431",[16,46.529]],["parent/2431",[518,3.772]],["name/2432",[17,43.671]],["parent/2432",[518,3.772]],["name/2433",[786,79.338]],["parent/2433",[518,3.772]],["name/2434",[787,79.338]],["parent/2434",[518,3.772]],["name/2435",[170,56.931]],["parent/2435",[518,3.772]],["name/2436",[788,79.338]],["parent/2436",[518,3.772]],["name/2437",[150,59.879]],["parent/2437",[518,3.772]],["name/2438",[686,69.783]],["parent/2438",[518,3.772]],["name/2439",[789,79.338]],["parent/2439",[518,3.772]],["name/2440",[131,53.688]],["parent/2440",[518,3.772]],["name/2441",[790,79.338]],["parent/2441",[518,3.772]],["name/2442",[158,59.879]],["parent/2442",[518,3.772]],["name/2443",[138,59.879]],["parent/2443",[518,3.772]],["name/2444",[109,56.114]],["parent/2444",[518,3.772]],["name/2445",[684,69.783]],["parent/2445",[518,3.772]],["name/2446",[791,79.338]],["parent/2446",[518,3.772]],["name/2447",[165,59.879]],["parent/2447",[518,3.772]],["name/2448",[779,73.46]],["parent/2448",[518,3.772]],["name/2449",[737,69.783]],["parent/2449",[518,3.772]],["name/2450",[792,79.338]],["parent/2450",[518,3.772]],["name/2451",[793,79.338]],["parent/2451",[518,3.772]],["name/2452",[27,44.252]],["parent/2452",[518,3.772]],["name/2453",[674,64.077]],["parent/2453",[518,3.772]],["name/2454",[436,46.529]],["parent/2454",[518,3.772]],["name/2455",[675,69.783]],["parent/2455",[518,3.772]],["name/2456",[676,69.783]],["parent/2456",[518,3.772]],["name/2457",[677,69.783]],["parent/2457",[518,3.772]],["name/2458",[678,69.783]],["parent/2458",[518,3.772]],["name/2459",[679,69.783]],["parent/2459",[518,3.772]],["name/2460",[680,69.783]],["parent/2460",[518,3.772]],["name/2461",[681,69.783]],["parent/2461",[518,3.772]],["name/2462",[217,68.352]],["parent/2462",[518,3.772]],["name/2463",[682,69.783]],["parent/2463",[518,3.772]],["name/2464",[164,59.323]],["parent/2464",[518,3.772]],["name/2465",[683,69.783]],["parent/2465",[518,3.772]],["name/2466",[685,69.783]],["parent/2466",[518,3.772]],["name/2467",[687,69.783]],["parent/2467",[518,3.772]],["name/2468",[143,58.797]],["parent/2468",[518,3.772]],["name/2469",[688,67.1]],["parent/2469",[518,3.772]],["name/2470",[689,69.783]],["parent/2470",[518,3.772]],["name/2471",[186,56.514]],["parent/2471",[518,3.772]],["name/2472",[690,69.783]],["parent/2472",[518,3.772]],["name/2473",[110,43.121]],["parent/2473",[518,3.772]],["name/2474",[111,56.931]],["parent/2474",[518,3.772]],["name/2475",[112,54.657]],["parent/2475",[518,3.772]],["name/2476",[19,52.528]],["parent/2476",[518,3.772]],["name/2477",[1,49.281]],["parent/2477",[518,3.772]],["name/2478",[113,59.879]],["parent/2478",[794,6.164]],["name/2479",[27,44.252]],["parent/2479",[794,6.164]],["name/2480",[115,59.879]],["parent/2480",[794,6.164]],["name/2481",[116,59.879]],["parent/2481",[794,6.164]],["name/2482",[117,56.931]],["parent/2482",[794,6.164]],["name/2483",[118,59.879]],["parent/2483",[794,6.164]],["name/2484",[119,59.879]],["parent/2484",[794,6.164]],["name/2485",[120,57.366]],["parent/2485",[794,6.164]],["name/2486",[121,59.879]],["parent/2486",[794,6.164]],["name/2487",[122,59.879]],["parent/2487",[794,6.164]],["name/2488",[123,56.514]],["parent/2488",[794,6.164]],["name/2489",[67,40.836]],["parent/2489",[794,6.164]],["name/2490",[124,58.297]],["parent/2490",[794,6.164]],["name/2491",[125,59.879]],["parent/2491",[518,3.772]],["name/2492",[126,59.879]],["parent/2492",[518,3.772]],["name/2493",[127,59.323]],["parent/2493",[518,3.772]],["name/2494",[128,59.879]],["parent/2494",[518,3.772]],["name/2495",[129,54.001]],["parent/2495",[518,3.772]],["name/2496",[130,54.001]],["parent/2496",[518,3.772]],["name/2497",[132,59.879]],["parent/2497",[518,3.772]],["name/2498",[133,59.879]],["parent/2498",[518,3.772]],["name/2499",[134,59.879]],["parent/2499",[518,3.772]],["name/2500",[135,59.879]],["parent/2500",[518,3.772]],["name/2501",[136,59.323]],["parent/2501",[518,3.772]],["name/2502",[137,59.879]],["parent/2502",[518,3.772]],["name/2503",[139,59.879]],["parent/2503",[518,3.772]],["name/2504",[140,59.879]],["parent/2504",[518,3.772]],["name/2505",[141,59.879]],["parent/2505",[518,3.772]],["name/2506",[142,59.879]],["parent/2506",[518,3.772]],["name/2507",[144,59.323]],["parent/2507",[518,3.772]],["name/2508",[145,59.323]],["parent/2508",[518,3.772]],["name/2509",[146,59.323]],["parent/2509",[518,3.772]],["name/2510",[147,59.323]],["parent/2510",[518,3.772]],["name/2511",[148,59.879]],["parent/2511",[518,3.772]],["name/2512",[149,59.879]],["parent/2512",[518,3.772]],["name/2513",[151,59.879]],["parent/2513",[518,3.772]],["name/2514",[152,59.879]],["parent/2514",[518,3.772]],["name/2515",[153,59.879]],["parent/2515",[518,3.772]],["name/2516",[154,59.879]],["parent/2516",[518,3.772]],["name/2517",[155,59.879]],["parent/2517",[518,3.772]],["name/2518",[156,57.82]],["parent/2518",[518,3.772]],["name/2519",[157,59.879]],["parent/2519",[518,3.772]],["name/2520",[159,59.879]],["parent/2520",[518,3.772]],["name/2521",[160,59.879]],["parent/2521",[518,3.772]],["name/2522",[161,59.879]],["parent/2522",[518,3.772]],["name/2523",[162,56.114]],["parent/2523",[518,3.772]],["name/2524",[163,59.323]],["parent/2524",[518,3.772]],["name/2525",[166,59.879]],["parent/2525",[518,3.772]],["name/2526",[167,59.879]],["parent/2526",[518,3.772]],["name/2527",[168,59.879]],["parent/2527",[518,3.772]],["name/2528",[169,59.879]],["parent/2528",[518,3.772]],["name/2529",[171,59.323]],["parent/2529",[518,3.772]],["name/2530",[172,59.323]],["parent/2530",[518,3.772]],["name/2531",[28,50.106]],["parent/2531",[518,3.772]],["name/2532",[24,49.085]],["parent/2532",[518,3.772]],["name/2533",[43,52.257]],["parent/2533",[518,3.772]],["name/2534",[44,52.257]],["parent/2534",[518,3.772]],["name/2535",[173,53.688]],["parent/2535",[518,3.772]],["name/2536",[174,58.797]],["parent/2536",[518,3.772]],["name/2537",[175,59.323]],["parent/2537",[518,3.772]],["name/2538",[176,59.323]],["parent/2538",[518,3.772]],["name/2539",[177,59.323]],["parent/2539",[518,3.772]],["name/2540",[178,59.323]],["parent/2540",[518,3.772]],["name/2541",[179,59.323]],["parent/2541",[518,3.772]],["name/2542",[180,59.323]],["parent/2542",[518,3.772]],["name/2543",[181,59.323]],["parent/2543",[518,3.772]],["name/2544",[182,59.323]],["parent/2544",[518,3.772]],["name/2545",[108,59.323]],["parent/2545",[518,3.772]],["name/2546",[183,57.82]],["parent/2546",[518,3.772]],["name/2547",[184,59.323]],["parent/2547",[518,3.772]],["name/2548",[185,59.323]],["parent/2548",[518,3.772]],["name/2549",[187,58.797]],["parent/2549",[518,3.772]],["name/2550",[188,59.323]],["parent/2550",[518,3.772]],["name/2551",[189,59.323]],["parent/2551",[518,3.772]],["name/2552",[190,59.323]],["parent/2552",[518,3.772]],["name/2553",[191,59.323]],["parent/2553",[518,3.772]],["name/2554",[192,59.323]],["parent/2554",[518,3.772]],["name/2555",[36,53.091]],["parent/2555",[518,3.772]],["name/2556",[34,53.091]],["parent/2556",[518,3.772]],["name/2557",[35,53.091]],["parent/2557",[518,3.772]],["name/2558",[46,46.68]],["parent/2558",[518,3.772]],["name/2559",[47,46.68]],["parent/2559",[518,3.772]],["name/2560",[48,46.68]],["parent/2560",[518,3.772]],["name/2561",[49,46.68]],["parent/2561",[518,3.772]],["name/2562",[50,46.68]],["parent/2562",[518,3.772]],["name/2563",[51,46.68]],["parent/2563",[518,3.772]],["name/2564",[52,46.68]],["parent/2564",[518,3.772]],["name/2565",[53,46.68]],["parent/2565",[518,3.772]],["name/2566",[54,46.68]],["parent/2566",[518,3.772]],["name/2567",[55,46.68]],["parent/2567",[518,3.772]],["name/2568",[56,46.68]],["parent/2568",[518,3.772]],["name/2569",[57,46.68]],["parent/2569",[518,3.772]],["name/2570",[58,46.68]],["parent/2570",[518,3.772]],["name/2571",[59,46.68]],["parent/2571",[518,3.772]],["name/2572",[60,46.68]],["parent/2572",[518,3.772]],["name/2573",[61,46.68]],["parent/2573",[518,3.772]],["name/2574",[62,46.68]],["parent/2574",[518,3.772]],["name/2575",[63,46.68]],["parent/2575",[518,3.772]],["name/2576",[64,46.38]],["parent/2576",[518,3.772]],["name/2577",[65,46.38]],["parent/2577",[518,3.772]],["name/2578",[66,46.68]],["parent/2578",[518,3.772]],["name/2579",[67,40.836]],["parent/2579",[518,3.772]],["name/2580",[68,46.233]],["parent/2580",[518,3.772]],["name/2581",[69,46.233]],["parent/2581",[518,3.772]],["name/2582",[70,46.68]],["parent/2582",[518,3.772]],["name/2583",[71,45.945]],["parent/2583",[518,3.772]],["name/2584",[72,46.529]],["parent/2584",[518,3.772]],["name/2585",[73,46.68]],["parent/2585",[518,3.772]],["name/2586",[74,46.68]],["parent/2586",[518,3.772]],["name/2587",[75,46.68]],["parent/2587",[518,3.772]],["name/2588",[76,46.529]],["parent/2588",[518,3.772]],["name/2589",[77,46.088]],["parent/2589",[518,3.772]],["name/2590",[78,46.088]],["parent/2590",[518,3.772]],["name/2591",[519,67.1]],["parent/2591",[]],["name/2592",[17,43.671]],["parent/2592",[519,6.62]],["name/2593",[795,84.446]],["parent/2593",[519,6.62]],["name/2594",[796,84.446]],["parent/2594",[519,6.62]],["name/2595",[170,56.931]],["parent/2595",[519,6.62]],["name/2596",[797,84.446]],["parent/2596",[519,6.62]],["name/2597",[798,84.446]],["parent/2597",[519,6.62]],["name/2598",[520,46.529]],["parent/2598",[]],["name/2599",[10,39.265]],["parent/2599",[520,4.591]],["name/2600",[799,84.446]],["parent/2600",[520,4.591]],["name/2601",[14,53.688]],["parent/2601",[520,4.591]],["name/2602",[16,46.529]],["parent/2602",[520,4.591]],["name/2603",[17,43.671]],["parent/2603",[520,4.591]],["name/2604",[800,84.446]],["parent/2604",[520,4.591]],["name/2605",[801,84.446]],["parent/2605",[520,4.591]],["name/2606",[802,84.446]],["parent/2606",[520,4.591]],["name/2607",[803,84.446]],["parent/2607",[520,4.591]],["name/2608",[804,84.446]],["parent/2608",[520,4.591]],["name/2609",[365,64.987]],["parent/2609",[520,4.591]],["name/2610",[24,49.085]],["parent/2610",[520,4.591]],["name/2611",[805,84.446]],["parent/2611",[520,4.591]],["name/2612",[806,84.446]],["parent/2612",[520,4.591]],["name/2613",[807,84.446]],["parent/2613",[520,4.591]],["name/2614",[11,57.82]],["parent/2614",[520,4.591]],["name/2615",[27,44.252]],["parent/2615",[520,4.591]],["name/2616",[37,55.729]],["parent/2616",[520,4.591]],["name/2617",[38,55.359]],["parent/2617",[520,4.591]],["name/2618",[129,54.001]],["parent/2618",[520,4.591]],["name/2619",[130,54.001]],["parent/2619",[520,4.591]],["name/2620",[131,53.688]],["parent/2620",[520,4.591]],["name/2621",[28,50.106]],["parent/2621",[520,4.591]],["name/2622",[173,53.688]],["parent/2622",[520,4.591]],["name/2623",[252,61.092]],["parent/2623",[520,4.591]],["name/2624",[364,64.987]],["parent/2624",[520,4.591]],["name/2625",[366,64.077]],["parent/2625",[520,4.591]],["name/2626",[367,64.987]],["parent/2626",[520,4.591]],["name/2627",[368,64.987]],["parent/2627",[520,4.591]],["name/2628",[46,46.68]],["parent/2628",[520,4.591]],["name/2629",[47,46.68]],["parent/2629",[520,4.591]],["name/2630",[48,46.68]],["parent/2630",[520,4.591]],["name/2631",[49,46.68]],["parent/2631",[520,4.591]],["name/2632",[50,46.68]],["parent/2632",[520,4.591]],["name/2633",[51,46.68]],["parent/2633",[520,4.591]],["name/2634",[52,46.68]],["parent/2634",[520,4.591]],["name/2635",[53,46.68]],["parent/2635",[520,4.591]],["name/2636",[54,46.68]],["parent/2636",[520,4.591]],["name/2637",[55,46.68]],["parent/2637",[520,4.591]],["name/2638",[56,46.68]],["parent/2638",[520,4.591]],["name/2639",[57,46.68]],["parent/2639",[520,4.591]],["name/2640",[58,46.68]],["parent/2640",[520,4.591]],["name/2641",[59,46.68]],["parent/2641",[520,4.591]],["name/2642",[60,46.68]],["parent/2642",[520,4.591]],["name/2643",[61,46.68]],["parent/2643",[520,4.591]],["name/2644",[62,46.68]],["parent/2644",[520,4.591]],["name/2645",[63,46.68]],["parent/2645",[520,4.591]],["name/2646",[64,46.38]],["parent/2646",[520,4.591]],["name/2647",[65,46.38]],["parent/2647",[520,4.591]],["name/2648",[66,46.68]],["parent/2648",[520,4.591]],["name/2649",[67,40.836]],["parent/2649",[520,4.591]],["name/2650",[68,46.233]],["parent/2650",[520,4.591]],["name/2651",[69,46.233]],["parent/2651",[520,4.591]],["name/2652",[70,46.68]],["parent/2652",[520,4.591]],["name/2653",[71,45.945]],["parent/2653",[520,4.591]],["name/2654",[72,46.529]],["parent/2654",[520,4.591]],["name/2655",[73,46.68]],["parent/2655",[520,4.591]],["name/2656",[74,46.68]],["parent/2656",[520,4.591]],["name/2657",[75,46.68]],["parent/2657",[520,4.591]],["name/2658",[76,46.529]],["parent/2658",[520,4.591]],["name/2659",[77,46.088]],["parent/2659",[520,4.591]],["name/2660",[78,46.088]],["parent/2660",[520,4.591]],["name/2661",[493,40.258]],["parent/2661",[]],["name/2662",[10,39.265]],["parent/2662",[493,3.972]],["name/2663",[105,59.879]],["parent/2663",[493,3.972]],["name/2664",[16,46.529]],["parent/2664",[493,3.972]],["name/2665",[17,43.671]],["parent/2665",[493,3.972]],["name/2666",[108,59.323]],["parent/2666",[493,3.972]],["name/2667",[109,56.114]],["parent/2667",[493,3.972]],["name/2668",[27,44.252]],["parent/2668",[493,3.972]],["name/2669",[110,43.121]],["parent/2669",[493,3.972]],["name/2670",[111,56.931]],["parent/2670",[493,3.972]],["name/2671",[112,54.657]],["parent/2671",[493,3.972]],["name/2672",[19,52.528]],["parent/2672",[493,3.972]],["name/2673",[1,49.281]],["parent/2673",[493,3.972]],["name/2674",[113,59.879]],["parent/2674",[808,6.164]],["name/2675",[27,44.252]],["parent/2675",[808,6.164]],["name/2676",[115,59.879]],["parent/2676",[808,6.164]],["name/2677",[116,59.879]],["parent/2677",[808,6.164]],["name/2678",[117,56.931]],["parent/2678",[808,6.164]],["name/2679",[118,59.879]],["parent/2679",[808,6.164]],["name/2680",[119,59.879]],["parent/2680",[808,6.164]],["name/2681",[120,57.366]],["parent/2681",[808,6.164]],["name/2682",[121,59.879]],["parent/2682",[808,6.164]],["name/2683",[122,59.879]],["parent/2683",[808,6.164]],["name/2684",[123,56.514]],["parent/2684",[808,6.164]],["name/2685",[67,40.836]],["parent/2685",[808,6.164]],["name/2686",[124,58.297]],["parent/2686",[808,6.164]],["name/2687",[125,59.879]],["parent/2687",[493,3.972]],["name/2688",[126,59.879]],["parent/2688",[493,3.972]],["name/2689",[127,59.323]],["parent/2689",[493,3.972]],["name/2690",[128,59.879]],["parent/2690",[493,3.972]],["name/2691",[129,54.001]],["parent/2691",[493,3.972]],["name/2692",[130,54.001]],["parent/2692",[493,3.972]],["name/2693",[131,53.688]],["parent/2693",[493,3.972]],["name/2694",[132,59.879]],["parent/2694",[493,3.972]],["name/2695",[133,59.879]],["parent/2695",[493,3.972]],["name/2696",[134,59.879]],["parent/2696",[493,3.972]],["name/2697",[135,59.879]],["parent/2697",[493,3.972]],["name/2698",[136,59.323]],["parent/2698",[493,3.972]],["name/2699",[137,59.879]],["parent/2699",[493,3.972]],["name/2700",[138,59.879]],["parent/2700",[493,3.972]],["name/2701",[139,59.879]],["parent/2701",[493,3.972]],["name/2702",[140,59.879]],["parent/2702",[493,3.972]],["name/2703",[141,59.879]],["parent/2703",[493,3.972]],["name/2704",[142,59.879]],["parent/2704",[493,3.972]],["name/2705",[143,58.797]],["parent/2705",[493,3.972]],["name/2706",[144,59.323]],["parent/2706",[493,3.972]],["name/2707",[145,59.323]],["parent/2707",[493,3.972]],["name/2708",[146,59.323]],["parent/2708",[493,3.972]],["name/2709",[147,59.323]],["parent/2709",[493,3.972]],["name/2710",[148,59.879]],["parent/2710",[493,3.972]],["name/2711",[149,59.879]],["parent/2711",[493,3.972]],["name/2712",[150,59.879]],["parent/2712",[493,3.972]],["name/2713",[151,59.879]],["parent/2713",[493,3.972]],["name/2714",[152,59.879]],["parent/2714",[493,3.972]],["name/2715",[153,59.879]],["parent/2715",[493,3.972]],["name/2716",[154,59.879]],["parent/2716",[493,3.972]],["name/2717",[155,59.879]],["parent/2717",[493,3.972]],["name/2718",[156,57.82]],["parent/2718",[493,3.972]],["name/2719",[157,59.879]],["parent/2719",[493,3.972]],["name/2720",[158,59.879]],["parent/2720",[493,3.972]],["name/2721",[159,59.879]],["parent/2721",[493,3.972]],["name/2722",[160,59.879]],["parent/2722",[493,3.972]],["name/2723",[161,59.879]],["parent/2723",[493,3.972]],["name/2724",[162,56.114]],["parent/2724",[493,3.972]],["name/2725",[163,59.323]],["parent/2725",[493,3.972]],["name/2726",[164,59.323]],["parent/2726",[493,3.972]],["name/2727",[165,59.879]],["parent/2727",[493,3.972]],["name/2728",[166,59.879]],["parent/2728",[493,3.972]],["name/2729",[167,59.879]],["parent/2729",[493,3.972]],["name/2730",[168,59.879]],["parent/2730",[493,3.972]],["name/2731",[169,59.879]],["parent/2731",[493,3.972]],["name/2732",[170,56.931]],["parent/2732",[493,3.972]],["name/2733",[171,59.323]],["parent/2733",[493,3.972]],["name/2734",[172,59.323]],["parent/2734",[493,3.972]],["name/2735",[28,50.106]],["parent/2735",[493,3.972]],["name/2736",[24,49.085]],["parent/2736",[493,3.972]],["name/2737",[43,52.257]],["parent/2737",[493,3.972]],["name/2738",[44,52.257]],["parent/2738",[493,3.972]],["name/2739",[173,53.688]],["parent/2739",[493,3.972]],["name/2740",[174,58.797]],["parent/2740",[493,3.972]],["name/2741",[175,59.323]],["parent/2741",[493,3.972]],["name/2742",[176,59.323]],["parent/2742",[493,3.972]],["name/2743",[177,59.323]],["parent/2743",[493,3.972]],["name/2744",[178,59.323]],["parent/2744",[493,3.972]],["name/2745",[179,59.323]],["parent/2745",[493,3.972]],["name/2746",[180,59.323]],["parent/2746",[493,3.972]],["name/2747",[181,59.323]],["parent/2747",[493,3.972]],["name/2748",[182,59.323]],["parent/2748",[493,3.972]],["name/2749",[183,57.82]],["parent/2749",[493,3.972]],["name/2750",[184,59.323]],["parent/2750",[493,3.972]],["name/2751",[185,59.323]],["parent/2751",[493,3.972]],["name/2752",[186,56.514]],["parent/2752",[493,3.972]],["name/2753",[187,58.797]],["parent/2753",[493,3.972]],["name/2754",[188,59.323]],["parent/2754",[493,3.972]],["name/2755",[189,59.323]],["parent/2755",[493,3.972]],["name/2756",[190,59.323]],["parent/2756",[493,3.972]],["name/2757",[191,59.323]],["parent/2757",[493,3.972]],["name/2758",[192,59.323]],["parent/2758",[493,3.972]],["name/2759",[36,53.091]],["parent/2759",[493,3.972]],["name/2760",[34,53.091]],["parent/2760",[493,3.972]],["name/2761",[35,53.091]],["parent/2761",[493,3.972]],["name/2762",[46,46.68]],["parent/2762",[493,3.972]],["name/2763",[47,46.68]],["parent/2763",[493,3.972]],["name/2764",[48,46.68]],["parent/2764",[493,3.972]],["name/2765",[49,46.68]],["parent/2765",[493,3.972]],["name/2766",[50,46.68]],["parent/2766",[493,3.972]],["name/2767",[51,46.68]],["parent/2767",[493,3.972]],["name/2768",[52,46.68]],["parent/2768",[493,3.972]],["name/2769",[53,46.68]],["parent/2769",[493,3.972]],["name/2770",[54,46.68]],["parent/2770",[493,3.972]],["name/2771",[55,46.68]],["parent/2771",[493,3.972]],["name/2772",[56,46.68]],["parent/2772",[493,3.972]],["name/2773",[57,46.68]],["parent/2773",[493,3.972]],["name/2774",[58,46.68]],["parent/2774",[493,3.972]],["name/2775",[59,46.68]],["parent/2775",[493,3.972]],["name/2776",[60,46.68]],["parent/2776",[493,3.972]],["name/2777",[61,46.68]],["parent/2777",[493,3.972]],["name/2778",[62,46.68]],["parent/2778",[493,3.972]],["name/2779",[63,46.68]],["parent/2779",[493,3.972]],["name/2780",[64,46.38]],["parent/2780",[493,3.972]],["name/2781",[65,46.38]],["parent/2781",[493,3.972]],["name/2782",[66,46.68]],["parent/2782",[493,3.972]],["name/2783",[67,40.836]],["parent/2783",[493,3.972]],["name/2784",[68,46.233]],["parent/2784",[493,3.972]],["name/2785",[69,46.233]],["parent/2785",[493,3.972]],["name/2786",[70,46.68]],["parent/2786",[493,3.972]],["name/2787",[71,45.945]],["parent/2787",[493,3.972]],["name/2788",[72,46.529]],["parent/2788",[493,3.972]],["name/2789",[73,46.68]],["parent/2789",[493,3.972]],["name/2790",[74,46.68]],["parent/2790",[493,3.972]],["name/2791",[75,46.68]],["parent/2791",[493,3.972]],["name/2792",[76,46.529]],["parent/2792",[493,3.972]],["name/2793",[77,46.088]],["parent/2793",[493,3.972]],["name/2794",[78,46.088]],["parent/2794",[493,3.972]],["name/2795",[541,68.352]],["parent/2795",[]],["name/2796",[81,69.783]],["parent/2796",[541,6.744]],["name/2797",[80,69.783]],["parent/2797",[541,6.744]],["name/2798",[82,69.783]],["parent/2798",[541,6.744]],["name/2799",[809,79.338]],["parent/2799",[541,6.744]],["name/2800",[810,79.338]],["parent/2800",[541,6.744]],["name/2801",[521,47.149]],["parent/2801",[]],["name/2802",[10,39.265]],["parent/2802",[521,4.652]],["name/2803",[14,53.688]],["parent/2803",[521,4.652]],["name/2804",[15,59.323]],["parent/2804",[521,4.652]],["name/2805",[16,46.529]],["parent/2805",[521,4.652]],["name/2806",[17,43.671]],["parent/2806",[521,4.652]],["name/2807",[24,49.085]],["parent/2807",[521,4.652]],["name/2808",[28,50.106]],["parent/2808",[521,4.652]],["name/2809",[29,60.467]],["parent/2809",[521,4.652]],["name/2810",[30,60.467]],["parent/2810",[521,4.652]],["name/2811",[25,60.467]],["parent/2811",[521,4.652]],["name/2812",[31,60.467]],["parent/2812",[521,4.652]],["name/2813",[32,60.467]],["parent/2813",[521,4.652]],["name/2814",[33,60.467]],["parent/2814",[521,4.652]],["name/2815",[34,53.091]],["parent/2815",[521,4.652]],["name/2816",[35,53.091]],["parent/2816",[521,4.652]],["name/2817",[36,53.091]],["parent/2817",[521,4.652]],["name/2818",[37,55.729]],["parent/2818",[521,4.652]],["name/2819",[38,55.359]],["parent/2819",[521,4.652]],["name/2820",[39,60.467]],["parent/2820",[521,4.652]],["name/2821",[40,59.323]],["parent/2821",[521,4.652]],["name/2822",[41,60.467]],["parent/2822",[521,4.652]],["name/2823",[42,60.467]],["parent/2823",[521,4.652]],["name/2824",[43,52.257]],["parent/2824",[521,4.652]],["name/2825",[44,52.257]],["parent/2825",[521,4.652]],["name/2826",[27,44.252]],["parent/2826",[521,4.652]],["name/2827",[45,60.467]],["parent/2827",[521,4.652]],["name/2828",[46,46.68]],["parent/2828",[521,4.652]],["name/2829",[47,46.68]],["parent/2829",[521,4.652]],["name/2830",[48,46.68]],["parent/2830",[521,4.652]],["name/2831",[49,46.68]],["parent/2831",[521,4.652]],["name/2832",[50,46.68]],["parent/2832",[521,4.652]],["name/2833",[51,46.68]],["parent/2833",[521,4.652]],["name/2834",[52,46.68]],["parent/2834",[521,4.652]],["name/2835",[53,46.68]],["parent/2835",[521,4.652]],["name/2836",[54,46.68]],["parent/2836",[521,4.652]],["name/2837",[55,46.68]],["parent/2837",[521,4.652]],["name/2838",[56,46.68]],["parent/2838",[521,4.652]],["name/2839",[57,46.68]],["parent/2839",[521,4.652]],["name/2840",[58,46.68]],["parent/2840",[521,4.652]],["name/2841",[59,46.68]],["parent/2841",[521,4.652]],["name/2842",[60,46.68]],["parent/2842",[521,4.652]],["name/2843",[61,46.68]],["parent/2843",[521,4.652]],["name/2844",[62,46.68]],["parent/2844",[521,4.652]],["name/2845",[63,46.68]],["parent/2845",[521,4.652]],["name/2846",[64,46.38]],["parent/2846",[521,4.652]],["name/2847",[65,46.38]],["parent/2847",[521,4.652]],["name/2848",[66,46.68]],["parent/2848",[521,4.652]],["name/2849",[67,40.836]],["parent/2849",[521,4.652]],["name/2850",[68,46.233]],["parent/2850",[521,4.652]],["name/2851",[69,46.233]],["parent/2851",[521,4.652]],["name/2852",[70,46.68]],["parent/2852",[521,4.652]],["name/2853",[71,45.945]],["parent/2853",[521,4.652]],["name/2854",[72,46.529]],["parent/2854",[521,4.652]],["name/2855",[73,46.68]],["parent/2855",[521,4.652]],["name/2856",[74,46.68]],["parent/2856",[521,4.652]],["name/2857",[75,46.68]],["parent/2857",[521,4.652]],["name/2858",[76,46.529]],["parent/2858",[521,4.652]],["name/2859",[77,46.088]],["parent/2859",[521,4.652]],["name/2860",[78,46.088]],["parent/2860",[521,4.652]],["name/2861",[811,71.453]],["parent/2861",[]],["name/2862",[812,84.446]],["parent/2862",[811,7.05]],["name/2863",[813,84.446]],["parent/2863",[811,7.05]],["name/2864",[814,84.446]],["parent/2864",[811,7.05]],["name/2865",[815,84.446]],["parent/2865",[811,7.05]],["name/2866",[816,75.973]],["parent/2866",[]],["name/2867",[7,60.467]],["parent/2867",[816,7.496]],["name/2868",[817,84.446]],["parent/2868",[816,7.496]],["name/2869",[818,84.446]],["parent/2869",[]],["name/2870",[502,60.467]],["parent/2870",[]],["name/2871",[9,56.931]],["parent/2871",[502,5.966]],["name/2872",[17,43.671]],["parent/2872",[502,5.966]],["name/2873",[156,57.82]],["parent/2873",[502,5.966]],["name/2874",[819,84.446]],["parent/2874",[502,5.966]],["name/2875",[183,57.82]],["parent/2875",[502,5.966]],["name/2876",[820,84.446]],["parent/2876",[502,5.966]],["name/2877",[24,49.085]],["parent/2877",[502,5.966]],["name/2878",[821,84.446]],["parent/2878",[502,5.966]],["name/2879",[822,84.446]],["parent/2879",[502,5.966]],["name/2880",[823,84.446]],["parent/2880",[502,5.966]],["name/2881",[162,56.114]],["parent/2881",[502,5.966]],["name/2882",[109,56.114]],["parent/2882",[502,5.966]],["name/2883",[186,56.514]],["parent/2883",[502,5.966]],["name/2884",[824,61.759]],["parent/2884",[]],["name/2885",[825,84.446]],["parent/2885",[824,6.093]],["name/2886",[826,84.446]],["parent/2886",[824,6.093]],["name/2887",[827,84.446]],["parent/2887",[824,6.093]],["name/2888",[828,84.446]],["parent/2888",[824,6.093]],["name/2889",[829,84.446]],["parent/2889",[824,6.093]],["name/2890",[830,84.446]],["parent/2890",[824,6.093]],["name/2891",[831,79.338]],["parent/2891",[824,6.093]],["name/2892",[832,79.338]],["parent/2892",[824,6.093]],["name/2893",[0,58.797]],["parent/2893",[824,6.093]],["name/2894",[833,79.338]],["parent/2894",[824,6.093]],["name/2895",[834,84.446]],["parent/2895",[824,6.093]],["name/2896",[835,84.446]],["parent/2896",[824,6.093]],["name/2897",[836,84.446]],["parent/2897",[824,6.093]],["name/2898",[503,49.685]],["parent/2898",[]],["name/2899",[10,39.265]],["parent/2899",[503,4.902]],["name/2900",[16,46.529]],["parent/2900",[503,4.902]],["name/2901",[17,43.671]],["parent/2901",[503,4.902]],["name/2902",[19,52.528]],["parent/2902",[503,4.902]],["name/2903",[837,84.446]],["parent/2903",[503,4.902]],["name/2904",[131,53.688]],["parent/2904",[503,4.902]],["name/2905",[129,54.001]],["parent/2905",[503,4.902]],["name/2906",[130,54.001]],["parent/2906",[503,4.902]],["name/2907",[838,84.446]],["parent/2907",[503,4.902]],["name/2908",[839,84.446]],["parent/2908",[503,4.902]],["name/2909",[27,44.252]],["parent/2909",[503,4.902]],["name/2910",[46,46.68]],["parent/2910",[503,4.902]],["name/2911",[47,46.68]],["parent/2911",[503,4.902]],["name/2912",[48,46.68]],["parent/2912",[503,4.902]],["name/2913",[49,46.68]],["parent/2913",[503,4.902]],["name/2914",[50,46.68]],["parent/2914",[503,4.902]],["name/2915",[51,46.68]],["parent/2915",[503,4.902]],["name/2916",[52,46.68]],["parent/2916",[503,4.902]],["name/2917",[53,46.68]],["parent/2917",[503,4.902]],["name/2918",[54,46.68]],["parent/2918",[503,4.902]],["name/2919",[55,46.68]],["parent/2919",[503,4.902]],["name/2920",[56,46.68]],["parent/2920",[503,4.902]],["name/2921",[57,46.68]],["parent/2921",[503,4.902]],["name/2922",[58,46.68]],["parent/2922",[503,4.902]],["name/2923",[59,46.68]],["parent/2923",[503,4.902]],["name/2924",[60,46.68]],["parent/2924",[503,4.902]],["name/2925",[61,46.68]],["parent/2925",[503,4.902]],["name/2926",[62,46.68]],["parent/2926",[503,4.902]],["name/2927",[63,46.68]],["parent/2927",[503,4.902]],["name/2928",[64,46.38]],["parent/2928",[503,4.902]],["name/2929",[65,46.38]],["parent/2929",[503,4.902]],["name/2930",[66,46.68]],["parent/2930",[503,4.902]],["name/2931",[67,40.836]],["parent/2931",[503,4.902]],["name/2932",[68,46.233]],["parent/2932",[503,4.902]],["name/2933",[69,46.233]],["parent/2933",[503,4.902]],["name/2934",[70,46.68]],["parent/2934",[503,4.902]],["name/2935",[71,45.945]],["parent/2935",[503,4.902]],["name/2936",[72,46.529]],["parent/2936",[503,4.902]],["name/2937",[73,46.68]],["parent/2937",[503,4.902]],["name/2938",[74,46.68]],["parent/2938",[503,4.902]],["name/2939",[75,46.68]],["parent/2939",[503,4.902]],["name/2940",[76,46.529]],["parent/2940",[503,4.902]],["name/2941",[77,46.088]],["parent/2941",[503,4.902]],["name/2942",[78,46.088]],["parent/2942",[503,4.902]],["name/2943",[840,75.973]],["parent/2943",[]],["name/2944",[406,40.098]],["parent/2944",[840,7.496]],["name/2945",[8,44.998]],["parent/2945",[840,7.496]],["name/2946",[841,75.973]],["parent/2946",[]],["name/2947",[842,79.338]],["parent/2947",[841,7.496]],["name/2948",[8,44.998]],["parent/2948",[841,7.496]],["name/2949",[843,73.46]],["parent/2949",[]],["name/2950",[842,79.338]],["parent/2950",[843,7.248]],["name/2951",[8,44.998]],["parent/2951",[843,7.248]],["name/2952",[18,57.366]],["parent/2952",[843,7.248]],["name/2953",[844,84.446]],["parent/2953",[]],["name/2954",[845,84.446]],["parent/2954",[]],["name/2955",[846,84.446]],["parent/2955",[]],["name/2956",[414,69.783]],["parent/2956",[]],["name/2957",[847,84.446]],["parent/2957",[414,6.885]],["name/2958",[848,84.446]],["parent/2958",[414,6.885]],["name/2959",[522,55.729]],["parent/2959",[]],["name/2960",[849,84.446]],["parent/2960",[522,5.498]],["name/2961",[850,84.446]],["parent/2961",[522,5.498]],["name/2962",[851,84.446]],["parent/2962",[522,5.498]],["name/2963",[852,84.446]],["parent/2963",[522,5.498]],["name/2964",[853,84.446]],["parent/2964",[522,5.498]],["name/2965",[854,84.446]],["parent/2965",[522,5.498]],["name/2966",[855,84.446]],["parent/2966",[522,5.498]],["name/2967",[856,84.446]],["parent/2967",[522,5.498]],["name/2968",[857,84.446]],["parent/2968",[522,5.498]],["name/2969",[858,84.446]],["parent/2969",[522,5.498]],["name/2970",[419,75.973]],["parent/2970",[522,5.498]],["name/2971",[859,84.446]],["parent/2971",[522,5.498]],["name/2972",[17,43.671]],["parent/2972",[522,5.498]],["name/2973",[860,84.446]],["parent/2973",[522,5.498]],["name/2974",[861,84.446]],["parent/2974",[522,5.498]],["name/2975",[862,84.446]],["parent/2975",[522,5.498]],["name/2976",[863,84.446]],["parent/2976",[522,5.498]],["name/2977",[864,84.446]],["parent/2977",[522,5.498]],["name/2978",[865,84.446]],["parent/2978",[522,5.498]],["name/2979",[866,84.446]],["parent/2979",[522,5.498]],["name/2980",[867,84.446]],["parent/2980",[522,5.498]],["name/2981",[868,84.446]],["parent/2981",[522,5.498]],["name/2982",[869,84.446]],["parent/2982",[522,5.498]],["name/2983",[870,84.446]],["parent/2983",[522,5.498]],["name/2984",[112,54.657]],["parent/2984",[]],["name/2985",[741,71.453]],["parent/2985",[112,5.392]],["name/2986",[742,71.453]],["parent/2986",[112,5.392]],["name/2987",[414,69.783]],["parent/2987",[112,5.392]],["name/2988",[418,75.973]],["parent/2988",[112,5.392]],["name/2989",[0,58.797]],["parent/2989",[112,5.392]],["name/2990",[871,84.446]],["parent/2990",[112,5.392]],["name/2991",[8,44.998]],["parent/2991",[112,5.392]],["name/2992",[97,67.1]],["parent/2992",[112,5.392]],["name/2993",[297,45.665]],["parent/2993",[112,5.392]],["name/2994",[872,84.446]],["parent/2994",[112,5.392]],["name/2995",[873,79.338]],["parent/2995",[112,5.392]],["name/2996",[874,65.988]],["parent/2996",[]],["name/2997",[7,60.467]],["parent/2997",[874,6.51]],["name/2998",[875,79.338]],["parent/2998",[874,6.51]],["name/2999",[876,79.338]],["parent/2999",[874,6.51]],["name/3000",[877,79.338]],["parent/3000",[874,6.51]],["name/3001",[878,79.338]],["parent/3001",[874,6.51]],["name/3002",[879,79.338]],["parent/3002",[874,6.51]],["name/3003",[880,79.338]],["parent/3003",[874,6.51]],["name/3004",[881,79.338]],["parent/3004",[874,6.51]],["name/3005",[882,73.46]],["parent/3005",[]],["name/3006",[409,63.244]],["parent/3006",[882,7.248]],["name/3007",[408,64.077]],["parent/3007",[882,7.248]],["name/3008",[18,57.366]],["parent/3008",[882,7.248]],["name/3009",[883,69.783]],["parent/3009",[]],["name/3010",[409,63.244]],["parent/3010",[883,6.885]],["name/3011",[18,57.366]],["parent/3011",[883,6.885]],["name/3012",[884,84.446]],["parent/3012",[883,6.885]],["name/3013",[408,64.077]],["parent/3013",[883,6.885]],["name/3014",[885,84.446]],["parent/3014",[883,6.885]],["name/3015",[886,67.1]],["parent/3015",[]],["name/3016",[111,56.931]],["parent/3016",[886,6.62]],["name/3017",[409,63.244]],["parent/3017",[886,6.62]],["name/3018",[0,58.797]],["parent/3018",[886,6.62]],["name/3019",[408,64.077]],["parent/3019",[886,6.62]],["name/3020",[18,57.366]],["parent/3020",[886,6.62]],["name/3021",[744,69.783]],["parent/3021",[886,6.62]],["name/3022",[745,69.783]],["parent/3022",[886,6.62]],["name/3023",[406,40.098]],["parent/3023",[]],["name/3024",[10,39.265]],["parent/3024",[406,3.956]],["name/3025",[105,59.879]],["parent/3025",[406,3.956]],["name/3026",[16,46.529]],["parent/3026",[406,3.956]],["name/3027",[17,43.671]],["parent/3027",[406,3.956]],["name/3028",[110,43.121]],["parent/3028",[406,3.956]],["name/3029",[111,56.931]],["parent/3029",[406,3.956]],["name/3030",[112,54.657]],["parent/3030",[406,3.956]],["name/3031",[19,52.528]],["parent/3031",[406,3.956]],["name/3032",[1,49.281]],["parent/3032",[406,3.956]],["name/3033",[113,59.879]],["parent/3033",[887,6.164]],["name/3034",[27,44.252]],["parent/3034",[887,6.164]],["name/3035",[115,59.879]],["parent/3035",[887,6.164]],["name/3036",[116,59.879]],["parent/3036",[887,6.164]],["name/3037",[117,56.931]],["parent/3037",[887,6.164]],["name/3038",[118,59.879]],["parent/3038",[887,6.164]],["name/3039",[119,59.879]],["parent/3039",[887,6.164]],["name/3040",[120,57.366]],["parent/3040",[887,6.164]],["name/3041",[121,59.879]],["parent/3041",[887,6.164]],["name/3042",[122,59.879]],["parent/3042",[887,6.164]],["name/3043",[123,56.514]],["parent/3043",[887,6.164]],["name/3044",[67,40.836]],["parent/3044",[887,6.164]],["name/3045",[124,58.297]],["parent/3045",[887,6.164]],["name/3046",[125,59.879]],["parent/3046",[406,3.956]],["name/3047",[126,59.879]],["parent/3047",[406,3.956]],["name/3048",[127,59.323]],["parent/3048",[406,3.956]],["name/3049",[128,59.879]],["parent/3049",[406,3.956]],["name/3050",[129,54.001]],["parent/3050",[406,3.956]],["name/3051",[130,54.001]],["parent/3051",[406,3.956]],["name/3052",[131,53.688]],["parent/3052",[406,3.956]],["name/3053",[132,59.879]],["parent/3053",[406,3.956]],["name/3054",[133,59.879]],["parent/3054",[406,3.956]],["name/3055",[134,59.879]],["parent/3055",[406,3.956]],["name/3056",[135,59.879]],["parent/3056",[406,3.956]],["name/3057",[136,59.323]],["parent/3057",[406,3.956]],["name/3058",[137,59.879]],["parent/3058",[406,3.956]],["name/3059",[138,59.879]],["parent/3059",[406,3.956]],["name/3060",[139,59.879]],["parent/3060",[406,3.956]],["name/3061",[140,59.879]],["parent/3061",[406,3.956]],["name/3062",[141,59.879]],["parent/3062",[406,3.956]],["name/3063",[142,59.879]],["parent/3063",[406,3.956]],["name/3064",[143,58.797]],["parent/3064",[406,3.956]],["name/3065",[144,59.323]],["parent/3065",[406,3.956]],["name/3066",[145,59.323]],["parent/3066",[406,3.956]],["name/3067",[146,59.323]],["parent/3067",[406,3.956]],["name/3068",[147,59.323]],["parent/3068",[406,3.956]],["name/3069",[148,59.879]],["parent/3069",[406,3.956]],["name/3070",[149,59.879]],["parent/3070",[406,3.956]],["name/3071",[150,59.879]],["parent/3071",[406,3.956]],["name/3072",[151,59.879]],["parent/3072",[406,3.956]],["name/3073",[152,59.879]],["parent/3073",[406,3.956]],["name/3074",[153,59.879]],["parent/3074",[406,3.956]],["name/3075",[154,59.879]],["parent/3075",[406,3.956]],["name/3076",[155,59.879]],["parent/3076",[406,3.956]],["name/3077",[156,57.82]],["parent/3077",[406,3.956]],["name/3078",[157,59.879]],["parent/3078",[406,3.956]],["name/3079",[158,59.879]],["parent/3079",[406,3.956]],["name/3080",[159,59.879]],["parent/3080",[406,3.956]],["name/3081",[160,59.879]],["parent/3081",[406,3.956]],["name/3082",[161,59.879]],["parent/3082",[406,3.956]],["name/3083",[162,56.114]],["parent/3083",[406,3.956]],["name/3084",[163,59.323]],["parent/3084",[406,3.956]],["name/3085",[164,59.323]],["parent/3085",[406,3.956]],["name/3086",[165,59.879]],["parent/3086",[406,3.956]],["name/3087",[166,59.879]],["parent/3087",[406,3.956]],["name/3088",[167,59.879]],["parent/3088",[406,3.956]],["name/3089",[168,59.879]],["parent/3089",[406,3.956]],["name/3090",[169,59.879]],["parent/3090",[406,3.956]],["name/3091",[170,56.931]],["parent/3091",[406,3.956]],["name/3092",[171,59.323]],["parent/3092",[406,3.956]],["name/3093",[172,59.323]],["parent/3093",[406,3.956]],["name/3094",[28,50.106]],["parent/3094",[406,3.956]],["name/3095",[24,49.085]],["parent/3095",[406,3.956]],["name/3096",[43,52.257]],["parent/3096",[406,3.956]],["name/3097",[44,52.257]],["parent/3097",[406,3.956]],["name/3098",[173,53.688]],["parent/3098",[406,3.956]],["name/3099",[174,58.797]],["parent/3099",[406,3.956]],["name/3100",[175,59.323]],["parent/3100",[406,3.956]],["name/3101",[176,59.323]],["parent/3101",[406,3.956]],["name/3102",[177,59.323]],["parent/3102",[406,3.956]],["name/3103",[178,59.323]],["parent/3103",[406,3.956]],["name/3104",[179,59.323]],["parent/3104",[406,3.956]],["name/3105",[180,59.323]],["parent/3105",[406,3.956]],["name/3106",[181,59.323]],["parent/3106",[406,3.956]],["name/3107",[182,59.323]],["parent/3107",[406,3.956]],["name/3108",[108,59.323]],["parent/3108",[406,3.956]],["name/3109",[183,57.82]],["parent/3109",[406,3.956]],["name/3110",[184,59.323]],["parent/3110",[406,3.956]],["name/3111",[109,56.114]],["parent/3111",[406,3.956]],["name/3112",[185,59.323]],["parent/3112",[406,3.956]],["name/3113",[186,56.514]],["parent/3113",[406,3.956]],["name/3114",[187,58.797]],["parent/3114",[406,3.956]],["name/3115",[188,59.323]],["parent/3115",[406,3.956]],["name/3116",[189,59.323]],["parent/3116",[406,3.956]],["name/3117",[190,59.323]],["parent/3117",[406,3.956]],["name/3118",[191,59.323]],["parent/3118",[406,3.956]],["name/3119",[192,59.323]],["parent/3119",[406,3.956]],["name/3120",[36,53.091]],["parent/3120",[406,3.956]],["name/3121",[34,53.091]],["parent/3121",[406,3.956]],["name/3122",[35,53.091]],["parent/3122",[406,3.956]],["name/3123",[46,46.68]],["parent/3123",[406,3.956]],["name/3124",[47,46.68]],["parent/3124",[406,3.956]],["name/3125",[48,46.68]],["parent/3125",[406,3.956]],["name/3126",[49,46.68]],["parent/3126",[406,3.956]],["name/3127",[50,46.68]],["parent/3127",[406,3.956]],["name/3128",[51,46.68]],["parent/3128",[406,3.956]],["name/3129",[52,46.68]],["parent/3129",[406,3.956]],["name/3130",[53,46.68]],["parent/3130",[406,3.956]],["name/3131",[27,44.252]],["parent/3131",[406,3.956]],["name/3132",[54,46.68]],["parent/3132",[406,3.956]],["name/3133",[55,46.68]],["parent/3133",[406,3.956]],["name/3134",[56,46.68]],["parent/3134",[406,3.956]],["name/3135",[57,46.68]],["parent/3135",[406,3.956]],["name/3136",[58,46.68]],["parent/3136",[406,3.956]],["name/3137",[59,46.68]],["parent/3137",[406,3.956]],["name/3138",[60,46.68]],["parent/3138",[406,3.956]],["name/3139",[61,46.68]],["parent/3139",[406,3.956]],["name/3140",[62,46.68]],["parent/3140",[406,3.956]],["name/3141",[63,46.68]],["parent/3141",[406,3.956]],["name/3142",[64,46.38]],["parent/3142",[406,3.956]],["name/3143",[65,46.38]],["parent/3143",[406,3.956]],["name/3144",[66,46.68]],["parent/3144",[406,3.956]],["name/3145",[67,40.836]],["parent/3145",[406,3.956]],["name/3146",[68,46.233]],["parent/3146",[406,3.956]],["name/3147",[69,46.233]],["parent/3147",[406,3.956]],["name/3148",[70,46.68]],["parent/3148",[406,3.956]],["name/3149",[71,45.945]],["parent/3149",[406,3.956]],["name/3150",[72,46.529]],["parent/3150",[406,3.956]],["name/3151",[73,46.68]],["parent/3151",[406,3.956]],["name/3152",[74,46.68]],["parent/3152",[406,3.956]],["name/3153",[75,46.68]],["parent/3153",[406,3.956]],["name/3154",[76,46.529]],["parent/3154",[406,3.956]],["name/3155",[77,46.088]],["parent/3155",[406,3.956]],["name/3156",[78,46.088]],["parent/3156",[406,3.956]],["name/3157",[888,57.82]],["parent/3157",[]],["name/3158",[0,58.797]],["parent/3158",[888,5.705]],["name/3159",[120,57.366]],["parent/3159",[888,5.705]],["name/3160",[889,84.446]],["parent/3160",[888,5.705]],["name/3161",[574,79.338]],["parent/3161",[888,5.705]],["name/3162",[741,71.453]],["parent/3162",[888,5.705]],["name/3163",[742,71.453]],["parent/3163",[888,5.705]],["name/3164",[890,84.446]],["parent/3164",[888,5.705]],["name/3165",[363,73.46]],["parent/3165",[888,5.705]],["name/3166",[674,64.077]],["parent/3166",[888,5.705]],["name/3167",[873,79.338]],["parent/3167",[888,5.705]],["name/3168",[891,84.446]],["parent/3168",[888,5.705]],["name/3169",[229,68.352]],["parent/3169",[888,5.705]],["name/3170",[244,68.352]],["parent/3170",[888,5.705]],["name/3171",[892,84.446]],["parent/3171",[888,5.705]],["name/3172",[111,56.931]],["parent/3172",[888,5.705]],["name/3173",[409,63.244]],["parent/3173",[888,5.705]],["name/3174",[408,64.077]],["parent/3174",[888,5.705]],["name/3175",[18,57.366]],["parent/3175",[888,5.705]],["name/3176",[744,69.783]],["parent/3176",[888,5.705]],["name/3177",[745,69.783]],["parent/3177",[888,5.705]],["name/3178",[523,39.635]],["parent/3178",[]],["name/3179",[9,56.931]],["parent/3179",[523,3.91]],["name/3180",[10,39.265]],["parent/3180",[523,3.91]],["name/3181",[105,59.879]],["parent/3181",[523,3.91]],["name/3182",[16,46.529]],["parent/3182",[523,3.91]],["name/3183",[17,43.671]],["parent/3183",[523,3.91]],["name/3184",[893,84.446]],["parent/3184",[523,3.91]],["name/3185",[24,49.085]],["parent/3185",[523,3.91]],["name/3186",[759,75.973]],["parent/3186",[523,3.91]],["name/3187",[139,59.879]],["parent/3187",[523,3.91]],["name/3188",[252,61.092]],["parent/3188",[523,3.91]],["name/3189",[249,73.46]],["parent/3189",[523,3.91]],["name/3190",[253,73.46]],["parent/3190",[523,3.91]],["name/3191",[894,84.446]],["parent/3191",[523,3.91]],["name/3192",[377,68.352]],["parent/3192",[523,3.91]],["name/3193",[163,59.323]],["parent/3193",[523,3.91]],["name/3194",[63,46.68]],["parent/3194",[523,3.91]],["name/3195",[131,53.688]],["parent/3195",[523,3.91]],["name/3196",[109,56.114]],["parent/3196",[523,3.91]],["name/3197",[27,44.252]],["parent/3197",[523,3.91]],["name/3198",[110,43.121]],["parent/3198",[523,3.91]],["name/3199",[111,56.931]],["parent/3199",[523,3.91]],["name/3200",[112,54.657]],["parent/3200",[523,3.91]],["name/3201",[19,52.528]],["parent/3201",[523,3.91]],["name/3202",[1,49.281]],["parent/3202",[523,3.91]],["name/3203",[113,59.879]],["parent/3203",[895,6.164]],["name/3204",[27,44.252]],["parent/3204",[895,6.164]],["name/3205",[115,59.879]],["parent/3205",[895,6.164]],["name/3206",[116,59.879]],["parent/3206",[895,6.164]],["name/3207",[117,56.931]],["parent/3207",[895,6.164]],["name/3208",[118,59.879]],["parent/3208",[895,6.164]],["name/3209",[119,59.879]],["parent/3209",[895,6.164]],["name/3210",[120,57.366]],["parent/3210",[895,6.164]],["name/3211",[121,59.879]],["parent/3211",[895,6.164]],["name/3212",[122,59.879]],["parent/3212",[895,6.164]],["name/3213",[123,56.514]],["parent/3213",[895,6.164]],["name/3214",[67,40.836]],["parent/3214",[895,6.164]],["name/3215",[124,58.297]],["parent/3215",[895,6.164]],["name/3216",[125,59.879]],["parent/3216",[523,3.91]],["name/3217",[126,59.879]],["parent/3217",[523,3.91]],["name/3218",[127,59.323]],["parent/3218",[523,3.91]],["name/3219",[128,59.879]],["parent/3219",[523,3.91]],["name/3220",[129,54.001]],["parent/3220",[523,3.91]],["name/3221",[130,54.001]],["parent/3221",[523,3.91]],["name/3222",[132,59.879]],["parent/3222",[523,3.91]],["name/3223",[133,59.879]],["parent/3223",[523,3.91]],["name/3224",[134,59.879]],["parent/3224",[523,3.91]],["name/3225",[135,59.879]],["parent/3225",[523,3.91]],["name/3226",[136,59.323]],["parent/3226",[523,3.91]],["name/3227",[137,59.879]],["parent/3227",[523,3.91]],["name/3228",[138,59.879]],["parent/3228",[523,3.91]],["name/3229",[140,59.879]],["parent/3229",[523,3.91]],["name/3230",[141,59.879]],["parent/3230",[523,3.91]],["name/3231",[142,59.879]],["parent/3231",[523,3.91]],["name/3232",[143,58.797]],["parent/3232",[523,3.91]],["name/3233",[144,59.323]],["parent/3233",[523,3.91]],["name/3234",[145,59.323]],["parent/3234",[523,3.91]],["name/3235",[146,59.323]],["parent/3235",[523,3.91]],["name/3236",[147,59.323]],["parent/3236",[523,3.91]],["name/3237",[148,59.879]],["parent/3237",[523,3.91]],["name/3238",[149,59.879]],["parent/3238",[523,3.91]],["name/3239",[150,59.879]],["parent/3239",[523,3.91]],["name/3240",[151,59.879]],["parent/3240",[523,3.91]],["name/3241",[152,59.879]],["parent/3241",[523,3.91]],["name/3242",[153,59.879]],["parent/3242",[523,3.91]],["name/3243",[154,59.879]],["parent/3243",[523,3.91]],["name/3244",[155,59.879]],["parent/3244",[523,3.91]],["name/3245",[156,57.82]],["parent/3245",[523,3.91]],["name/3246",[157,59.879]],["parent/3246",[523,3.91]],["name/3247",[158,59.879]],["parent/3247",[523,3.91]],["name/3248",[159,59.879]],["parent/3248",[523,3.91]],["name/3249",[160,59.879]],["parent/3249",[523,3.91]],["name/3250",[161,59.879]],["parent/3250",[523,3.91]],["name/3251",[162,56.114]],["parent/3251",[523,3.91]],["name/3252",[164,59.323]],["parent/3252",[523,3.91]],["name/3253",[165,59.879]],["parent/3253",[523,3.91]],["name/3254",[166,59.879]],["parent/3254",[523,3.91]],["name/3255",[167,59.879]],["parent/3255",[523,3.91]],["name/3256",[168,59.879]],["parent/3256",[523,3.91]],["name/3257",[169,59.879]],["parent/3257",[523,3.91]],["name/3258",[170,56.931]],["parent/3258",[523,3.91]],["name/3259",[171,59.323]],["parent/3259",[523,3.91]],["name/3260",[172,59.323]],["parent/3260",[523,3.91]],["name/3261",[28,50.106]],["parent/3261",[523,3.91]],["name/3262",[43,52.257]],["parent/3262",[523,3.91]],["name/3263",[44,52.257]],["parent/3263",[523,3.91]],["name/3264",[173,53.688]],["parent/3264",[523,3.91]],["name/3265",[174,58.797]],["parent/3265",[523,3.91]],["name/3266",[175,59.323]],["parent/3266",[523,3.91]],["name/3267",[176,59.323]],["parent/3267",[523,3.91]],["name/3268",[177,59.323]],["parent/3268",[523,3.91]],["name/3269",[178,59.323]],["parent/3269",[523,3.91]],["name/3270",[179,59.323]],["parent/3270",[523,3.91]],["name/3271",[180,59.323]],["parent/3271",[523,3.91]],["name/3272",[181,59.323]],["parent/3272",[523,3.91]],["name/3273",[182,59.323]],["parent/3273",[523,3.91]],["name/3274",[108,59.323]],["parent/3274",[523,3.91]],["name/3275",[183,57.82]],["parent/3275",[523,3.91]],["name/3276",[184,59.323]],["parent/3276",[523,3.91]],["name/3277",[185,59.323]],["parent/3277",[523,3.91]],["name/3278",[186,56.514]],["parent/3278",[523,3.91]],["name/3279",[187,58.797]],["parent/3279",[523,3.91]],["name/3280",[188,59.323]],["parent/3280",[523,3.91]],["name/3281",[189,59.323]],["parent/3281",[523,3.91]],["name/3282",[190,59.323]],["parent/3282",[523,3.91]],["name/3283",[191,59.323]],["parent/3283",[523,3.91]],["name/3284",[192,59.323]],["parent/3284",[523,3.91]],["name/3285",[36,53.091]],["parent/3285",[523,3.91]],["name/3286",[34,53.091]],["parent/3286",[523,3.91]],["name/3287",[35,53.091]],["parent/3287",[523,3.91]],["name/3288",[46,46.68]],["parent/3288",[523,3.91]],["name/3289",[47,46.68]],["parent/3289",[523,3.91]],["name/3290",[48,46.68]],["parent/3290",[523,3.91]],["name/3291",[49,46.68]],["parent/3291",[523,3.91]],["name/3292",[50,46.68]],["parent/3292",[523,3.91]],["name/3293",[51,46.68]],["parent/3293",[523,3.91]],["name/3294",[52,46.68]],["parent/3294",[523,3.91]],["name/3295",[53,46.68]],["parent/3295",[523,3.91]],["name/3296",[54,46.68]],["parent/3296",[523,3.91]],["name/3297",[55,46.68]],["parent/3297",[523,3.91]],["name/3298",[56,46.68]],["parent/3298",[523,3.91]],["name/3299",[57,46.68]],["parent/3299",[523,3.91]],["name/3300",[58,46.68]],["parent/3300",[523,3.91]],["name/3301",[59,46.68]],["parent/3301",[523,3.91]],["name/3302",[60,46.68]],["parent/3302",[523,3.91]],["name/3303",[61,46.68]],["parent/3303",[523,3.91]],["name/3304",[62,46.68]],["parent/3304",[523,3.91]],["name/3305",[64,46.38]],["parent/3305",[523,3.91]],["name/3306",[65,46.38]],["parent/3306",[523,3.91]],["name/3307",[66,46.68]],["parent/3307",[523,3.91]],["name/3308",[67,40.836]],["parent/3308",[523,3.91]],["name/3309",[68,46.233]],["parent/3309",[523,3.91]],["name/3310",[69,46.233]],["parent/3310",[523,3.91]],["name/3311",[70,46.68]],["parent/3311",[523,3.91]],["name/3312",[71,45.945]],["parent/3312",[523,3.91]],["name/3313",[72,46.529]],["parent/3313",[523,3.91]],["name/3314",[73,46.68]],["parent/3314",[523,3.91]],["name/3315",[74,46.68]],["parent/3315",[523,3.91]],["name/3316",[75,46.68]],["parent/3316",[523,3.91]],["name/3317",[76,46.529]],["parent/3317",[523,3.91]],["name/3318",[77,46.088]],["parent/3318",[523,3.91]],["name/3319",[78,46.088]],["parent/3319",[523,3.91]],["name/3320",[512,46.68]],["parent/3320",[]],["name/3321",[10,39.265]],["parent/3321",[512,4.606]],["name/3322",[11,57.82]],["parent/3322",[512,4.606]],["name/3323",[14,53.688]],["parent/3323",[512,4.606]],["name/3324",[15,59.323]],["parent/3324",[512,4.606]],["name/3325",[16,46.529]],["parent/3325",[512,4.606]],["name/3326",[17,43.671]],["parent/3326",[512,4.606]],["name/3327",[109,56.114]],["parent/3327",[512,4.606]],["name/3328",[28,50.106]],["parent/3328",[512,4.606]],["name/3329",[24,49.085]],["parent/3329",[512,4.606]],["name/3330",[27,44.252]],["parent/3330",[512,4.606]],["name/3331",[29,60.467]],["parent/3331",[512,4.606]],["name/3332",[30,60.467]],["parent/3332",[512,4.606]],["name/3333",[25,60.467]],["parent/3333",[512,4.606]],["name/3334",[31,60.467]],["parent/3334",[512,4.606]],["name/3335",[32,60.467]],["parent/3335",[512,4.606]],["name/3336",[33,60.467]],["parent/3336",[512,4.606]],["name/3337",[34,53.091]],["parent/3337",[512,4.606]],["name/3338",[35,53.091]],["parent/3338",[512,4.606]],["name/3339",[36,53.091]],["parent/3339",[512,4.606]],["name/3340",[37,55.729]],["parent/3340",[512,4.606]],["name/3341",[38,55.359]],["parent/3341",[512,4.606]],["name/3342",[39,60.467]],["parent/3342",[512,4.606]],["name/3343",[40,59.323]],["parent/3343",[512,4.606]],["name/3344",[41,60.467]],["parent/3344",[512,4.606]],["name/3345",[42,60.467]],["parent/3345",[512,4.606]],["name/3346",[43,52.257]],["parent/3346",[512,4.606]],["name/3347",[44,52.257]],["parent/3347",[512,4.606]],["name/3348",[45,60.467]],["parent/3348",[512,4.606]],["name/3349",[46,46.68]],["parent/3349",[512,4.606]],["name/3350",[47,46.68]],["parent/3350",[512,4.606]],["name/3351",[48,46.68]],["parent/3351",[512,4.606]],["name/3352",[49,46.68]],["parent/3352",[512,4.606]],["name/3353",[50,46.68]],["parent/3353",[512,4.606]],["name/3354",[51,46.68]],["parent/3354",[512,4.606]],["name/3355",[52,46.68]],["parent/3355",[512,4.606]],["name/3356",[53,46.68]],["parent/3356",[512,4.606]],["name/3357",[54,46.68]],["parent/3357",[512,4.606]],["name/3358",[55,46.68]],["parent/3358",[512,4.606]],["name/3359",[56,46.68]],["parent/3359",[512,4.606]],["name/3360",[57,46.68]],["parent/3360",[512,4.606]],["name/3361",[58,46.68]],["parent/3361",[512,4.606]],["name/3362",[59,46.68]],["parent/3362",[512,4.606]],["name/3363",[60,46.68]],["parent/3363",[512,4.606]],["name/3364",[61,46.68]],["parent/3364",[512,4.606]],["name/3365",[62,46.68]],["parent/3365",[512,4.606]],["name/3366",[63,46.68]],["parent/3366",[512,4.606]],["name/3367",[64,46.38]],["parent/3367",[512,4.606]],["name/3368",[65,46.38]],["parent/3368",[512,4.606]],["name/3369",[66,46.68]],["parent/3369",[512,4.606]],["name/3370",[67,40.836]],["parent/3370",[512,4.606]],["name/3371",[68,46.233]],["parent/3371",[512,4.606]],["name/3372",[69,46.233]],["parent/3372",[512,4.606]],["name/3373",[70,46.68]],["parent/3373",[512,4.606]],["name/3374",[71,45.945]],["parent/3374",[512,4.606]],["name/3375",[72,46.529]],["parent/3375",[512,4.606]],["name/3376",[73,46.68]],["parent/3376",[512,4.606]],["name/3377",[74,46.68]],["parent/3377",[512,4.606]],["name/3378",[75,46.68]],["parent/3378",[512,4.606]],["name/3379",[76,46.529]],["parent/3379",[512,4.606]],["name/3380",[77,46.088]],["parent/3380",[512,4.606]],["name/3381",[78,46.088]],["parent/3381",[512,4.606]],["name/3382",[497,44.998]],["parent/3382",[]],["name/3383",[9,56.931]],["parent/3383",[497,4.44]],["name/3384",[10,39.265]],["parent/3384",[497,4.44]],["name/3385",[337,79.338]],["parent/3385",[497,4.44]],["name/3386",[11,57.82]],["parent/3386",[497,4.44]],["name/3387",[896,84.446]],["parent/3387",[497,4.44]],["name/3388",[897,84.446]],["parent/3388",[497,4.44]],["name/3389",[898,84.446]],["parent/3389",[497,4.44]],["name/3390",[899,84.446]],["parent/3390",[497,4.44]],["name/3391",[900,84.446]],["parent/3391",[497,4.44]],["name/3392",[14,53.688]],["parent/3392",[497,4.44]],["name/3393",[15,59.323]],["parent/3393",[497,4.44]],["name/3394",[16,46.529]],["parent/3394",[497,4.44]],["name/3395",[17,43.671]],["parent/3395",[497,4.44]],["name/3396",[19,52.528]],["parent/3396",[497,4.44]],["name/3397",[1,49.281]],["parent/3397",[497,4.44]],["name/3398",[901,84.446]],["parent/3398",[902,7.496]],["name/3399",[903,84.446]],["parent/3399",[902,7.496]],["name/3400",[22,73.46]],["parent/3400",[902,7.496]],["name/3401",[162,56.114]],["parent/3401",[497,4.44]],["name/3402",[904,84.446]],["parent/3402",[497,4.44]],["name/3403",[905,84.446]],["parent/3403",[497,4.44]],["name/3404",[906,84.446]],["parent/3404",[497,4.44]],["name/3405",[27,44.252]],["parent/3405",[497,4.44]],["name/3406",[24,49.085]],["parent/3406",[497,4.44]],["name/3407",[28,50.106]],["parent/3407",[497,4.44]],["name/3408",[29,60.467]],["parent/3408",[497,4.44]],["name/3409",[30,60.467]],["parent/3409",[497,4.44]],["name/3410",[25,60.467]],["parent/3410",[497,4.44]],["name/3411",[31,60.467]],["parent/3411",[497,4.44]],["name/3412",[32,60.467]],["parent/3412",[497,4.44]],["name/3413",[33,60.467]],["parent/3413",[497,4.44]],["name/3414",[34,53.091]],["parent/3414",[497,4.44]],["name/3415",[35,53.091]],["parent/3415",[497,4.44]],["name/3416",[36,53.091]],["parent/3416",[497,4.44]],["name/3417",[37,55.729]],["parent/3417",[497,4.44]],["name/3418",[38,55.359]],["parent/3418",[497,4.44]],["name/3419",[39,60.467]],["parent/3419",[497,4.44]],["name/3420",[40,59.323]],["parent/3420",[497,4.44]],["name/3421",[41,60.467]],["parent/3421",[497,4.44]],["name/3422",[42,60.467]],["parent/3422",[497,4.44]],["name/3423",[43,52.257]],["parent/3423",[497,4.44]],["name/3424",[44,52.257]],["parent/3424",[497,4.44]],["name/3425",[45,60.467]],["parent/3425",[497,4.44]],["name/3426",[46,46.68]],["parent/3426",[497,4.44]],["name/3427",[47,46.68]],["parent/3427",[497,4.44]],["name/3428",[48,46.68]],["parent/3428",[497,4.44]],["name/3429",[49,46.68]],["parent/3429",[497,4.44]],["name/3430",[50,46.68]],["parent/3430",[497,4.44]],["name/3431",[51,46.68]],["parent/3431",[497,4.44]],["name/3432",[52,46.68]],["parent/3432",[497,4.44]],["name/3433",[53,46.68]],["parent/3433",[497,4.44]],["name/3434",[54,46.68]],["parent/3434",[497,4.44]],["name/3435",[55,46.68]],["parent/3435",[497,4.44]],["name/3436",[56,46.68]],["parent/3436",[497,4.44]],["name/3437",[57,46.68]],["parent/3437",[497,4.44]],["name/3438",[58,46.68]],["parent/3438",[497,4.44]],["name/3439",[59,46.68]],["parent/3439",[497,4.44]],["name/3440",[60,46.68]],["parent/3440",[497,4.44]],["name/3441",[61,46.68]],["parent/3441",[497,4.44]],["name/3442",[62,46.68]],["parent/3442",[497,4.44]],["name/3443",[63,46.68]],["parent/3443",[497,4.44]],["name/3444",[64,46.38]],["parent/3444",[497,4.44]],["name/3445",[65,46.38]],["parent/3445",[497,4.44]],["name/3446",[66,46.68]],["parent/3446",[497,4.44]],["name/3447",[67,40.836]],["parent/3447",[497,4.44]],["name/3448",[68,46.233]],["parent/3448",[497,4.44]],["name/3449",[69,46.233]],["parent/3449",[497,4.44]],["name/3450",[70,46.68]],["parent/3450",[497,4.44]],["name/3451",[71,45.945]],["parent/3451",[497,4.44]],["name/3452",[72,46.529]],["parent/3452",[497,4.44]],["name/3453",[73,46.68]],["parent/3453",[497,4.44]],["name/3454",[74,46.68]],["parent/3454",[497,4.44]],["name/3455",[75,46.68]],["parent/3455",[497,4.44]],["name/3456",[76,46.529]],["parent/3456",[497,4.44]],["name/3457",[77,46.088]],["parent/3457",[497,4.44]],["name/3458",[78,46.088]],["parent/3458",[497,4.44]],["name/3459",[524,46.834]],["parent/3459",[]],["name/3460",[10,39.265]],["parent/3460",[524,4.621]],["name/3461",[395,79.338]],["parent/3461",[524,4.621]],["name/3462",[11,57.82]],["parent/3462",[524,4.621]],["name/3463",[14,53.688]],["parent/3463",[524,4.621]],["name/3464",[15,59.323]],["parent/3464",[524,4.621]],["name/3465",[16,46.529]],["parent/3465",[524,4.621]],["name/3466",[17,43.671]],["parent/3466",[524,4.621]],["name/3467",[25,60.467]],["parent/3467",[524,4.621]],["name/3468",[27,44.252]],["parent/3468",[524,4.621]],["name/3469",[24,49.085]],["parent/3469",[524,4.621]],["name/3470",[28,50.106]],["parent/3470",[524,4.621]],["name/3471",[29,60.467]],["parent/3471",[524,4.621]],["name/3472",[30,60.467]],["parent/3472",[524,4.621]],["name/3473",[31,60.467]],["parent/3473",[524,4.621]],["name/3474",[32,60.467]],["parent/3474",[524,4.621]],["name/3475",[33,60.467]],["parent/3475",[524,4.621]],["name/3476",[34,53.091]],["parent/3476",[524,4.621]],["name/3477",[35,53.091]],["parent/3477",[524,4.621]],["name/3478",[36,53.091]],["parent/3478",[524,4.621]],["name/3479",[37,55.729]],["parent/3479",[524,4.621]],["name/3480",[38,55.359]],["parent/3480",[524,4.621]],["name/3481",[39,60.467]],["parent/3481",[524,4.621]],["name/3482",[40,59.323]],["parent/3482",[524,4.621]],["name/3483",[41,60.467]],["parent/3483",[524,4.621]],["name/3484",[42,60.467]],["parent/3484",[524,4.621]],["name/3485",[43,52.257]],["parent/3485",[524,4.621]],["name/3486",[44,52.257]],["parent/3486",[524,4.621]],["name/3487",[45,60.467]],["parent/3487",[524,4.621]],["name/3488",[46,46.68]],["parent/3488",[524,4.621]],["name/3489",[47,46.68]],["parent/3489",[524,4.621]],["name/3490",[48,46.68]],["parent/3490",[524,4.621]],["name/3491",[49,46.68]],["parent/3491",[524,4.621]],["name/3492",[50,46.68]],["parent/3492",[524,4.621]],["name/3493",[51,46.68]],["parent/3493",[524,4.621]],["name/3494",[52,46.68]],["parent/3494",[524,4.621]],["name/3495",[53,46.68]],["parent/3495",[524,4.621]],["name/3496",[54,46.68]],["parent/3496",[524,4.621]],["name/3497",[55,46.68]],["parent/3497",[524,4.621]],["name/3498",[56,46.68]],["parent/3498",[524,4.621]],["name/3499",[57,46.68]],["parent/3499",[524,4.621]],["name/3500",[58,46.68]],["parent/3500",[524,4.621]],["name/3501",[59,46.68]],["parent/3501",[524,4.621]],["name/3502",[60,46.68]],["parent/3502",[524,4.621]],["name/3503",[61,46.68]],["parent/3503",[524,4.621]],["name/3504",[62,46.68]],["parent/3504",[524,4.621]],["name/3505",[63,46.68]],["parent/3505",[524,4.621]],["name/3506",[64,46.38]],["parent/3506",[524,4.621]],["name/3507",[65,46.38]],["parent/3507",[524,4.621]],["name/3508",[66,46.68]],["parent/3508",[524,4.621]],["name/3509",[67,40.836]],["parent/3509",[524,4.621]],["name/3510",[68,46.233]],["parent/3510",[524,4.621]],["name/3511",[69,46.233]],["parent/3511",[524,4.621]],["name/3512",[70,46.68]],["parent/3512",[524,4.621]],["name/3513",[71,45.945]],["parent/3513",[524,4.621]],["name/3514",[72,46.529]],["parent/3514",[524,4.621]],["name/3515",[73,46.68]],["parent/3515",[524,4.621]],["name/3516",[74,46.68]],["parent/3516",[524,4.621]],["name/3517",[75,46.68]],["parent/3517",[524,4.621]],["name/3518",[76,46.529]],["parent/3518",[524,4.621]],["name/3519",[77,46.088]],["parent/3519",[524,4.621]],["name/3520",[78,46.088]],["parent/3520",[524,4.621]],["name/3521",[907,84.446]],["parent/3521",[]],["name/3522",[908,79.338]],["parent/3522",[]],["name/3523",[1,49.281]],["parent/3523",[908,7.828]],["name/3524",[909,79.338]],["parent/3524",[]],["name/3525",[1,49.281]],["parent/3525",[909,7.828]],["name/3526",[910,65.988]],["parent/3526",[]],["name/3527",[911,84.446]],["parent/3527",[910,6.51]],["name/3528",[912,84.446]],["parent/3528",[910,6.51]],["name/3529",[913,79.338]],["parent/3529",[910,6.51]],["name/3530",[914,84.446]],["parent/3530",[910,6.51]],["name/3531",[915,84.446]],["parent/3531",[910,6.51]],["name/3532",[916,84.446]],["parent/3532",[910,6.51]],["name/3533",[917,84.446]],["parent/3533",[910,6.51]],["name/3534",[918,84.446]],["parent/3534",[910,6.51]],["name/3535",[919,65.988]],["parent/3535",[]],["name/3536",[920,84.446]],["parent/3536",[919,6.51]],["name/3537",[921,84.446]],["parent/3537",[919,6.51]],["name/3538",[922,84.446]],["parent/3538",[919,6.51]],["name/3539",[923,84.446]],["parent/3539",[919,6.51]],["name/3540",[924,84.446]],["parent/3540",[919,6.51]],["name/3541",[925,84.446]],["parent/3541",[919,6.51]],["name/3542",[926,84.446]],["parent/3542",[919,6.51]],["name/3543",[927,84.446]],["parent/3543",[919,6.51]],["name/3544",[928,84.446]],["parent/3544",[]],["name/3545",[459,75.973]],["parent/3545",[]],["name/3546",[400,73.46]],["parent/3546",[459,7.496]],["name/3547",[460,62.474]],["parent/3547",[]],["name/3548",[9,56.931]],["parent/3548",[460,6.164]],["name/3549",[17,43.671]],["parent/3549",[460,6.164]],["name/3550",[463,75.973]],["parent/3550",[460,6.164]],["name/3551",[929,84.446]],["parent/3551",[460,6.164]],["name/3552",[930,84.446]],["parent/3552",[460,6.164]],["name/3553",[931,84.446]],["parent/3553",[460,6.164]],["name/3554",[932,84.446]],["parent/3554",[460,6.164]],["name/3555",[933,84.446]],["parent/3555",[460,6.164]],["name/3556",[934,84.446]],["parent/3556",[460,6.164]],["name/3557",[913,79.338]],["parent/3557",[460,6.164]],["name/3558",[511,47.983]],["parent/3558",[]],["name/3559",[9,56.931]],["parent/3559",[511,4.734]],["name/3560",[10,39.265]],["parent/3560",[511,4.734]],["name/3561",[16,46.529]],["parent/3561",[511,4.734]],["name/3562",[331,67.1]],["parent/3562",[511,4.734]],["name/3563",[18,57.366]],["parent/3563",[511,4.734]],["name/3564",[1,49.281]],["parent/3564",[511,4.734]],["name/3565",[230,68.352]],["parent/3565",[935,6.744]],["name/3566",[936,84.446]],["parent/3566",[935,6.744]],["name/3567",[937,84.446]],["parent/3567",[935,6.744]],["name/3568",[938,75.973]],["parent/3568",[511,4.734]],["name/3569",[939,84.446]],["parent/3569",[511,4.734]],["name/3570",[940,84.446]],["parent/3570",[511,4.734]],["name/3571",[941,84.446]],["parent/3571",[511,4.734]],["name/3572",[17,43.671]],["parent/3572",[511,4.734]],["name/3573",[19,52.528]],["parent/3573",[511,4.734]],["name/3574",[1,49.281]],["parent/3574",[511,4.734]],["name/3575",[942,75.973]],["parent/3575",[935,6.744]],["name/3576",[943,79.338]],["parent/3576",[935,6.744]],["name/3577",[944,84.446]],["parent/3577",[935,6.744]],["name/3578",[945,84.446]],["parent/3578",[935,6.744]],["name/3579",[107,69.783]],["parent/3579",[511,4.734]],["name/3580",[946,84.446]],["parent/3580",[511,4.734]],["name/3581",[377,68.352]],["parent/3581",[511,4.734]],["name/3582",[947,84.446]],["parent/3582",[511,4.734]],["name/3583",[948,84.446]],["parent/3583",[511,4.734]],["name/3584",[27,44.252]],["parent/3584",[511,4.734]],["name/3585",[46,46.68]],["parent/3585",[511,4.734]],["name/3586",[47,46.68]],["parent/3586",[511,4.734]],["name/3587",[48,46.68]],["parent/3587",[511,4.734]],["name/3588",[49,46.68]],["parent/3588",[511,4.734]],["name/3589",[50,46.68]],["parent/3589",[511,4.734]],["name/3590",[51,46.68]],["parent/3590",[511,4.734]],["name/3591",[52,46.68]],["parent/3591",[511,4.734]],["name/3592",[53,46.68]],["parent/3592",[511,4.734]],["name/3593",[54,46.68]],["parent/3593",[511,4.734]],["name/3594",[55,46.68]],["parent/3594",[511,4.734]],["name/3595",[56,46.68]],["parent/3595",[511,4.734]],["name/3596",[57,46.68]],["parent/3596",[511,4.734]],["name/3597",[58,46.68]],["parent/3597",[511,4.734]],["name/3598",[59,46.68]],["parent/3598",[511,4.734]],["name/3599",[60,46.68]],["parent/3599",[511,4.734]],["name/3600",[61,46.68]],["parent/3600",[511,4.734]],["name/3601",[62,46.68]],["parent/3601",[511,4.734]],["name/3602",[63,46.68]],["parent/3602",[511,4.734]],["name/3603",[64,46.38]],["parent/3603",[511,4.734]],["name/3604",[65,46.38]],["parent/3604",[511,4.734]],["name/3605",[66,46.68]],["parent/3605",[511,4.734]],["name/3606",[67,40.836]],["parent/3606",[511,4.734]],["name/3607",[68,46.233]],["parent/3607",[511,4.734]],["name/3608",[69,46.233]],["parent/3608",[511,4.734]],["name/3609",[70,46.68]],["parent/3609",[511,4.734]],["name/3610",[71,45.945]],["parent/3610",[511,4.734]],["name/3611",[72,46.529]],["parent/3611",[511,4.734]],["name/3612",[73,46.68]],["parent/3612",[511,4.734]],["name/3613",[74,46.68]],["parent/3613",[511,4.734]],["name/3614",[75,46.68]],["parent/3614",[511,4.734]],["name/3615",[76,46.529]],["parent/3615",[511,4.734]],["name/3616",[77,46.088]],["parent/3616",[511,4.734]],["name/3617",[78,46.088]],["parent/3617",[511,4.734]],["name/3618",[949,71.453]],["parent/3618",[]],["name/3619",[467,79.338]],["parent/3619",[949,7.05]],["name/3620",[582,75.973]],["parent/3620",[949,7.05]],["name/3621",[656,79.338]],["parent/3621",[949,7.05]],["name/3622",[950,84.446]],["parent/3622",[949,7.05]],["name/3623",[525,61.092]],["parent/3623",[]],["name/3624",[951,84.446]],["parent/3624",[525,6.027]],["name/3625",[952,84.446]],["parent/3625",[525,6.027]],["name/3626",[953,84.446]],["parent/3626",[525,6.027]],["name/3627",[17,43.671]],["parent/3627",[525,6.027]],["name/3628",[274,73.46]],["parent/3628",[525,6.027]],["name/3629",[954,84.446]],["parent/3629",[525,6.027]],["name/3630",[955,84.446]],["parent/3630",[525,6.027]],["name/3631",[956,84.446]],["parent/3631",[525,6.027]],["name/3632",[957,84.446]],["parent/3632",[525,6.027]],["name/3633",[958,84.446]],["parent/3633",[525,6.027]],["name/3634",[959,84.446]],["parent/3634",[525,6.027]],["name/3635",[960,84.446]],["parent/3635",[525,6.027]],["name/3636",[961,84.446]],["parent/3636",[525,6.027]],["name/3637",[962,84.446]],["parent/3637",[]],["name/3638",[963,71.453]],["parent/3638",[]],["name/3639",[229,68.352]],["parent/3639",[963,7.05]],["name/3640",[244,68.352]],["parent/3640",[963,7.05]],["name/3641",[7,60.467]],["parent/3641",[963,7.05]],["name/3642",[262,65.988]],["parent/3642",[963,7.05]],["name/3643",[964,79.338]],["parent/3643",[]],["name/3644",[965,84.446]],["parent/3644",[964,7.828]],["name/3645",[526,51.244]],["parent/3645",[]],["name/3646",[10,39.265]],["parent/3646",[526,5.056]],["name/3647",[17,43.671]],["parent/3647",[526,5.056]],["name/3648",[274,73.46]],["parent/3648",[526,5.056]],["name/3649",[278,75.973]],["parent/3649",[526,5.056]],["name/3650",[279,75.973]],["parent/3650",[526,5.056]],["name/3651",[280,75.973]],["parent/3651",[526,5.056]],["name/3652",[281,75.973]],["parent/3652",[526,5.056]],["name/3653",[282,75.973]],["parent/3653",[526,5.056]],["name/3654",[283,75.973]],["parent/3654",[526,5.056]],["name/3655",[284,75.973]],["parent/3655",[526,5.056]],["name/3656",[285,75.973]],["parent/3656",[526,5.056]],["name/3657",[123,56.514]],["parent/3657",[526,5.056]],["name/3658",[287,75.973]],["parent/3658",[526,5.056]],["name/3659",[286,73.46]],["parent/3659",[526,5.056]],["name/3660",[288,75.973]],["parent/3660",[526,5.056]],["name/3661",[289,75.973]],["parent/3661",[526,5.056]],["name/3662",[290,75.973]],["parent/3662",[526,5.056]],["name/3663",[291,75.973]],["parent/3663",[526,5.056]],["name/3664",[292,75.973]],["parent/3664",[526,5.056]],["name/3665",[293,75.973]],["parent/3665",[526,5.056]],["name/3666",[294,75.973]],["parent/3666",[526,5.056]],["name/3667",[295,75.973]],["parent/3667",[526,5.056]],["name/3668",[296,75.973]],["parent/3668",[526,5.056]],["name/3669",[297,45.665]],["parent/3669",[526,5.056]],["name/3670",[298,75.973]],["parent/3670",[526,5.056]],["name/3671",[300,75.973]],["parent/3671",[526,5.056]],["name/3672",[301,75.973]],["parent/3672",[526,5.056]],["name/3673",[302,75.973]],["parent/3673",[526,5.056]],["name/3674",[275,75.973]],["parent/3674",[526,5.056]],["name/3675",[276,75.973]],["parent/3675",[526,5.056]],["name/3676",[277,73.46]],["parent/3676",[526,5.056]],["name/3677",[299,75.973]],["parent/3677",[526,5.056]],["name/3678",[303,73.46]],["parent/3678",[526,5.056]],["name/3679",[304,73.46]],["parent/3679",[526,5.056]],["name/3680",[68,46.233]],["parent/3680",[526,5.056]],["name/3681",[69,46.233]],["parent/3681",[526,5.056]],["name/3682",[67,40.836]],["parent/3682",[526,5.056]],["name/3683",[305,75.973]],["parent/3683",[526,5.056]],["name/3684",[966,84.446]],["parent/3684",[]],["name/3685",[542,73.46]],["parent/3685",[]],["name/3686",[272,79.338]],["parent/3686",[542,7.248]],["name/3687",[967,79.338]],["parent/3687",[542,7.248]],["name/3688",[543,71.453]],["parent/3688",[]],["name/3689",[316,71.453]],["parent/3689",[543,7.05]],["name/3690",[233,75.973]],["parent/3690",[543,7.05]],["name/3691",[234,75.973]],["parent/3691",[543,7.05]],["name/3692",[479,62.474]],["parent/3692",[]],["name/3693",[968,84.446]],["parent/3693",[479,6.164]],["name/3694",[969,84.446]],["parent/3694",[479,6.164]],["name/3695",[970,84.446]],["parent/3695",[479,6.164]],["name/3696",[971,84.446]],["parent/3696",[479,6.164]],["name/3697",[972,79.338]],["parent/3697",[479,6.164]],["name/3698",[973,84.446]],["parent/3698",[479,6.164]],["name/3699",[974,84.446]],["parent/3699",[479,6.164]],["name/3700",[17,43.671]],["parent/3700",[479,6.164]],["name/3701",[286,73.46]],["parent/3701",[479,6.164]],["name/3702",[64,46.38]],["parent/3702",[479,6.164]],["name/3703",[489,40.098]],["parent/3703",[]],["name/3704",[10,39.265]],["parent/3704",[489,3.956]],["name/3705",[105,59.879]],["parent/3705",[489,3.956]],["name/3706",[16,46.529]],["parent/3706",[489,3.956]],["name/3707",[17,43.671]],["parent/3707",[489,3.956]],["name/3708",[736,79.338]],["parent/3708",[489,3.956]],["name/3709",[63,46.68]],["parent/3709",[489,3.956]],["name/3710",[109,56.114]],["parent/3710",[489,3.956]],["name/3711",[737,69.783]],["parent/3711",[489,3.956]],["name/3712",[27,44.252]],["parent/3712",[489,3.956]],["name/3713",[110,43.121]],["parent/3713",[489,3.956]],["name/3714",[111,56.931]],["parent/3714",[489,3.956]],["name/3715",[112,54.657]],["parent/3715",[489,3.956]],["name/3716",[19,52.528]],["parent/3716",[489,3.956]],["name/3717",[1,49.281]],["parent/3717",[489,3.956]],["name/3718",[113,59.879]],["parent/3718",[975,6.164]],["name/3719",[27,44.252]],["parent/3719",[975,6.164]],["name/3720",[115,59.879]],["parent/3720",[975,6.164]],["name/3721",[116,59.879]],["parent/3721",[975,6.164]],["name/3722",[117,56.931]],["parent/3722",[975,6.164]],["name/3723",[118,59.879]],["parent/3723",[975,6.164]],["name/3724",[119,59.879]],["parent/3724",[975,6.164]],["name/3725",[120,57.366]],["parent/3725",[975,6.164]],["name/3726",[121,59.879]],["parent/3726",[975,6.164]],["name/3727",[122,59.879]],["parent/3727",[975,6.164]],["name/3728",[123,56.514]],["parent/3728",[975,6.164]],["name/3729",[67,40.836]],["parent/3729",[975,6.164]],["name/3730",[124,58.297]],["parent/3730",[975,6.164]],["name/3731",[125,59.879]],["parent/3731",[489,3.956]],["name/3732",[126,59.879]],["parent/3732",[489,3.956]],["name/3733",[127,59.323]],["parent/3733",[489,3.956]],["name/3734",[128,59.879]],["parent/3734",[489,3.956]],["name/3735",[129,54.001]],["parent/3735",[489,3.956]],["name/3736",[130,54.001]],["parent/3736",[489,3.956]],["name/3737",[131,53.688]],["parent/3737",[489,3.956]],["name/3738",[132,59.879]],["parent/3738",[489,3.956]],["name/3739",[133,59.879]],["parent/3739",[489,3.956]],["name/3740",[134,59.879]],["parent/3740",[489,3.956]],["name/3741",[135,59.879]],["parent/3741",[489,3.956]],["name/3742",[136,59.323]],["parent/3742",[489,3.956]],["name/3743",[137,59.879]],["parent/3743",[489,3.956]],["name/3744",[138,59.879]],["parent/3744",[489,3.956]],["name/3745",[139,59.879]],["parent/3745",[489,3.956]],["name/3746",[140,59.879]],["parent/3746",[489,3.956]],["name/3747",[141,59.879]],["parent/3747",[489,3.956]],["name/3748",[142,59.879]],["parent/3748",[489,3.956]],["name/3749",[143,58.797]],["parent/3749",[489,3.956]],["name/3750",[144,59.323]],["parent/3750",[489,3.956]],["name/3751",[145,59.323]],["parent/3751",[489,3.956]],["name/3752",[146,59.323]],["parent/3752",[489,3.956]],["name/3753",[147,59.323]],["parent/3753",[489,3.956]],["name/3754",[148,59.879]],["parent/3754",[489,3.956]],["name/3755",[149,59.879]],["parent/3755",[489,3.956]],["name/3756",[150,59.879]],["parent/3756",[489,3.956]],["name/3757",[151,59.879]],["parent/3757",[489,3.956]],["name/3758",[152,59.879]],["parent/3758",[489,3.956]],["name/3759",[153,59.879]],["parent/3759",[489,3.956]],["name/3760",[154,59.879]],["parent/3760",[489,3.956]],["name/3761",[155,59.879]],["parent/3761",[489,3.956]],["name/3762",[156,57.82]],["parent/3762",[489,3.956]],["name/3763",[157,59.879]],["parent/3763",[489,3.956]],["name/3764",[158,59.879]],["parent/3764",[489,3.956]],["name/3765",[159,59.879]],["parent/3765",[489,3.956]],["name/3766",[160,59.879]],["parent/3766",[489,3.956]],["name/3767",[161,59.879]],["parent/3767",[489,3.956]],["name/3768",[162,56.114]],["parent/3768",[489,3.956]],["name/3769",[163,59.323]],["parent/3769",[489,3.956]],["name/3770",[164,59.323]],["parent/3770",[489,3.956]],["name/3771",[165,59.879]],["parent/3771",[489,3.956]],["name/3772",[166,59.879]],["parent/3772",[489,3.956]],["name/3773",[167,59.879]],["parent/3773",[489,3.956]],["name/3774",[168,59.879]],["parent/3774",[489,3.956]],["name/3775",[169,59.879]],["parent/3775",[489,3.956]],["name/3776",[170,56.931]],["parent/3776",[489,3.956]],["name/3777",[171,59.323]],["parent/3777",[489,3.956]],["name/3778",[172,59.323]],["parent/3778",[489,3.956]],["name/3779",[28,50.106]],["parent/3779",[489,3.956]],["name/3780",[24,49.085]],["parent/3780",[489,3.956]],["name/3781",[43,52.257]],["parent/3781",[489,3.956]],["name/3782",[44,52.257]],["parent/3782",[489,3.956]],["name/3783",[173,53.688]],["parent/3783",[489,3.956]],["name/3784",[174,58.797]],["parent/3784",[489,3.956]],["name/3785",[175,59.323]],["parent/3785",[489,3.956]],["name/3786",[176,59.323]],["parent/3786",[489,3.956]],["name/3787",[177,59.323]],["parent/3787",[489,3.956]],["name/3788",[178,59.323]],["parent/3788",[489,3.956]],["name/3789",[179,59.323]],["parent/3789",[489,3.956]],["name/3790",[180,59.323]],["parent/3790",[489,3.956]],["name/3791",[181,59.323]],["parent/3791",[489,3.956]],["name/3792",[182,59.323]],["parent/3792",[489,3.956]],["name/3793",[108,59.323]],["parent/3793",[489,3.956]],["name/3794",[183,57.82]],["parent/3794",[489,3.956]],["name/3795",[184,59.323]],["parent/3795",[489,3.956]],["name/3796",[185,59.323]],["parent/3796",[489,3.956]],["name/3797",[186,56.514]],["parent/3797",[489,3.956]],["name/3798",[187,58.797]],["parent/3798",[489,3.956]],["name/3799",[188,59.323]],["parent/3799",[489,3.956]],["name/3800",[189,59.323]],["parent/3800",[489,3.956]],["name/3801",[190,59.323]],["parent/3801",[489,3.956]],["name/3802",[191,59.323]],["parent/3802",[489,3.956]],["name/3803",[192,59.323]],["parent/3803",[489,3.956]],["name/3804",[36,53.091]],["parent/3804",[489,3.956]],["name/3805",[34,53.091]],["parent/3805",[489,3.956]],["name/3806",[35,53.091]],["parent/3806",[489,3.956]],["name/3807",[46,46.68]],["parent/3807",[489,3.956]],["name/3808",[47,46.68]],["parent/3808",[489,3.956]],["name/3809",[48,46.68]],["parent/3809",[489,3.956]],["name/3810",[49,46.68]],["parent/3810",[489,3.956]],["name/3811",[50,46.68]],["parent/3811",[489,3.956]],["name/3812",[51,46.68]],["parent/3812",[489,3.956]],["name/3813",[52,46.68]],["parent/3813",[489,3.956]],["name/3814",[53,46.68]],["parent/3814",[489,3.956]],["name/3815",[54,46.68]],["parent/3815",[489,3.956]],["name/3816",[55,46.68]],["parent/3816",[489,3.956]],["name/3817",[56,46.68]],["parent/3817",[489,3.956]],["name/3818",[57,46.68]],["parent/3818",[489,3.956]],["name/3819",[58,46.68]],["parent/3819",[489,3.956]],["name/3820",[59,46.68]],["parent/3820",[489,3.956]],["name/3821",[60,46.68]],["parent/3821",[489,3.956]],["name/3822",[61,46.68]],["parent/3822",[489,3.956]],["name/3823",[62,46.68]],["parent/3823",[489,3.956]],["name/3824",[64,46.38]],["parent/3824",[489,3.956]],["name/3825",[65,46.38]],["parent/3825",[489,3.956]],["name/3826",[66,46.68]],["parent/3826",[489,3.956]],["name/3827",[67,40.836]],["parent/3827",[489,3.956]],["name/3828",[68,46.233]],["parent/3828",[489,3.956]],["name/3829",[69,46.233]],["parent/3829",[489,3.956]],["name/3830",[70,46.68]],["parent/3830",[489,3.956]],["name/3831",[71,45.945]],["parent/3831",[489,3.956]],["name/3832",[72,46.529]],["parent/3832",[489,3.956]],["name/3833",[73,46.68]],["parent/3833",[489,3.956]],["name/3834",[74,46.68]],["parent/3834",[489,3.956]],["name/3835",[75,46.68]],["parent/3835",[489,3.956]],["name/3836",[76,46.529]],["parent/3836",[489,3.956]],["name/3837",[77,46.088]],["parent/3837",[489,3.956]],["name/3838",[78,46.088]],["parent/3838",[489,3.956]],["name/3839",[976,79.338]],["parent/3839",[]],["name/3840",[977,84.446]],["parent/3840",[976,7.828]],["name/3841",[978,63.244]],["parent/3841",[]],["name/3842",[979,84.446]],["parent/3842",[978,6.24]],["name/3843",[980,84.446]],["parent/3843",[978,6.24]],["name/3844",[981,84.446]],["parent/3844",[978,6.24]],["name/3845",[982,84.446]],["parent/3845",[978,6.24]],["name/3846",[983,84.446]],["parent/3846",[978,6.24]],["name/3847",[984,84.446]],["parent/3847",[978,6.24]],["name/3848",[985,84.446]],["parent/3848",[978,6.24]],["name/3849",[986,84.446]],["parent/3849",[978,6.24]],["name/3850",[833,79.338]],["parent/3850",[978,6.24]],["name/3851",[987,84.446]],["parent/3851",[978,6.24]],["name/3852",[988,84.446]],["parent/3852",[978,6.24]],["name/3853",[476,41.451]],["parent/3853",[]],["name/3854",[10,39.265]],["parent/3854",[476,4.09]],["name/3855",[16,46.529]],["parent/3855",[476,4.09]],["name/3856",[989,79.338]],["parent/3856",[476,4.09]],["name/3857",[990,79.338]],["parent/3857",[476,4.09]],["name/3858",[991,79.338]],["parent/3858",[476,4.09]],["name/3859",[17,43.671]],["parent/3859",[476,4.09]],["name/3860",[433,69.783]],["parent/3860",[476,4.09]],["name/3861",[992,79.338]],["parent/3861",[476,4.09]],["name/3862",[993,79.338]],["parent/3862",[476,4.09]],["name/3863",[477,73.46]],["parent/3863",[476,4.09]],["name/3864",[994,79.338]],["parent/3864",[476,4.09]],["name/3865",[995,79.338]],["parent/3865",[476,4.09]],["name/3866",[996,79.338]],["parent/3866",[476,4.09]],["name/3867",[997,79.338]],["parent/3867",[476,4.09]],["name/3868",[998,79.338]],["parent/3868",[476,4.09]],["name/3869",[999,79.338]],["parent/3869",[476,4.09]],["name/3870",[173,53.688]],["parent/3870",[476,4.09]],["name/3871",[1000,79.338]],["parent/3871",[476,4.09]],["name/3872",[1001,79.338]],["parent/3872",[476,4.09]],["name/3873",[253,73.46]],["parent/3873",[476,4.09]],["name/3874",[249,73.46]],["parent/3874",[476,4.09]],["name/3875",[1002,79.338]],["parent/3875",[476,4.09]],["name/3876",[1003,79.338]],["parent/3876",[476,4.09]],["name/3877",[252,61.092]],["parent/3877",[476,4.09]],["name/3878",[28,50.106]],["parent/3878",[476,4.09]],["name/3879",[24,49.085]],["parent/3879",[476,4.09]],["name/3880",[50,46.68]],["parent/3880",[476,4.09]],["name/3881",[1004,79.338]],["parent/3881",[476,4.09]],["name/3882",[1005,79.338]],["parent/3882",[476,4.09]],["name/3883",[1006,79.338]],["parent/3883",[476,4.09]],["name/3884",[1007,79.338]],["parent/3884",[476,4.09]],["name/3885",[1008,79.338]],["parent/3885",[476,4.09]],["name/3886",[1009,75.973]],["parent/3886",[476,4.09]],["name/3887",[1010,71.453]],["parent/3887",[476,4.09]],["name/3888",[1011,75.973]],["parent/3888",[476,4.09]],["name/3889",[1012,79.338]],["parent/3889",[476,4.09]],["name/3890",[63,46.68]],["parent/3890",[476,4.09]],["name/3891",[1013,79.338]],["parent/3891",[476,4.09]],["name/3892",[1014,79.338]],["parent/3892",[476,4.09]],["name/3893",[1015,79.338]],["parent/3893",[476,4.09]],["name/3894",[1016,79.338]],["parent/3894",[476,4.09]],["name/3895",[143,58.797]],["parent/3895",[476,4.09]],["name/3896",[688,67.1]],["parent/3896",[476,4.09]],["name/3897",[1017,79.338]],["parent/3897",[476,4.09]],["name/3898",[1018,79.338]],["parent/3898",[476,4.09]],["name/3899",[156,57.82]],["parent/3899",[476,4.09]],["name/3900",[1019,79.338]],["parent/3900",[476,4.09]],["name/3901",[1020,79.338]],["parent/3901",[476,4.09]],["name/3902",[1021,79.338]],["parent/3902",[476,4.09]],["name/3903",[1022,79.338]],["parent/3903",[476,4.09]],["name/3904",[370,75.973]],["parent/3904",[476,4.09]],["name/3905",[1023,79.338]],["parent/3905",[476,4.09]],["name/3906",[1024,79.338]],["parent/3906",[476,4.09]],["name/3907",[1025,79.338]],["parent/3907",[476,4.09]],["name/3908",[1026,79.338]],["parent/3908",[476,4.09]],["name/3909",[1027,79.338]],["parent/3909",[476,4.09]],["name/3910",[1028,79.338]],["parent/3910",[476,4.09]],["name/3911",[1029,79.338]],["parent/3911",[476,4.09]],["name/3912",[1030,79.338]],["parent/3912",[476,4.09]],["name/3913",[1031,79.338]],["parent/3913",[476,4.09]],["name/3914",[1032,79.338]],["parent/3914",[476,4.09]],["name/3915",[1033,79.338]],["parent/3915",[476,4.09]],["name/3916",[1034,79.338]],["parent/3916",[476,4.09]],["name/3917",[183,57.82]],["parent/3917",[476,4.09]],["name/3918",[1035,79.338]],["parent/3918",[476,4.09]],["name/3919",[11,57.82]],["parent/3919",[476,4.09]],["name/3920",[27,44.252]],["parent/3920",[476,4.09]],["name/3921",[1036,79.338]],["parent/3921",[476,4.09]],["name/3922",[1037,79.338]],["parent/3922",[476,4.09]],["name/3923",[1038,79.338]],["parent/3923",[476,4.09]],["name/3924",[1039,79.338]],["parent/3924",[476,4.09]],["name/3925",[46,46.68]],["parent/3925",[476,4.09]],["name/3926",[47,46.68]],["parent/3926",[476,4.09]],["name/3927",[48,46.68]],["parent/3927",[476,4.09]],["name/3928",[49,46.68]],["parent/3928",[476,4.09]],["name/3929",[51,46.68]],["parent/3929",[476,4.09]],["name/3930",[52,46.68]],["parent/3930",[476,4.09]],["name/3931",[53,46.68]],["parent/3931",[476,4.09]],["name/3932",[54,46.68]],["parent/3932",[476,4.09]],["name/3933",[55,46.68]],["parent/3933",[476,4.09]],["name/3934",[56,46.68]],["parent/3934",[476,4.09]],["name/3935",[57,46.68]],["parent/3935",[476,4.09]],["name/3936",[58,46.68]],["parent/3936",[476,4.09]],["name/3937",[59,46.68]],["parent/3937",[476,4.09]],["name/3938",[60,46.68]],["parent/3938",[476,4.09]],["name/3939",[61,46.68]],["parent/3939",[476,4.09]],["name/3940",[62,46.68]],["parent/3940",[476,4.09]],["name/3941",[64,46.38]],["parent/3941",[476,4.09]],["name/3942",[65,46.38]],["parent/3942",[476,4.09]],["name/3943",[66,46.68]],["parent/3943",[476,4.09]],["name/3944",[67,40.836]],["parent/3944",[476,4.09]],["name/3945",[68,46.233]],["parent/3945",[476,4.09]],["name/3946",[69,46.233]],["parent/3946",[476,4.09]],["name/3947",[70,46.68]],["parent/3947",[476,4.09]],["name/3948",[71,45.945]],["parent/3948",[476,4.09]],["name/3949",[72,46.529]],["parent/3949",[476,4.09]],["name/3950",[73,46.68]],["parent/3950",[476,4.09]],["name/3951",[74,46.68]],["parent/3951",[476,4.09]],["name/3952",[75,46.68]],["parent/3952",[476,4.09]],["name/3953",[76,46.529]],["parent/3953",[476,4.09]],["name/3954",[77,46.088]],["parent/3954",[476,4.09]],["name/3955",[78,46.088]],["parent/3955",[476,4.09]],["name/3956",[544,65.988]],["parent/3956",[]],["name/3957",[1040,84.446]],["parent/3957",[544,6.51]],["name/3958",[1041,84.446]],["parent/3958",[544,6.51]],["name/3959",[1042,75.973]],["parent/3959",[544,6.51]],["name/3960",[1043,84.446]],["parent/3960",[544,6.51]],["name/3961",[1044,84.446]],["parent/3961",[544,6.51]],["name/3962",[1045,84.446]],["parent/3962",[544,6.51]],["name/3963",[316,71.453]],["parent/3963",[544,6.51]],["name/3964",[515,47.149]],["parent/3964",[]],["name/3965",[10,39.265]],["parent/3965",[515,4.652]],["name/3966",[18,57.366]],["parent/3966",[515,4.652]],["name/3967",[938,75.973]],["parent/3967",[515,4.652]],["name/3968",[14,53.688]],["parent/3968",[515,4.652]],["name/3969",[16,46.529]],["parent/3969",[515,4.652]],["name/3970",[17,43.671]],["parent/3970",[515,4.652]],["name/3971",[106,75.973]],["parent/3971",[515,4.652]],["name/3972",[107,69.783]],["parent/3972",[515,4.652]],["name/3973",[27,44.252]],["parent/3973",[515,4.652]],["name/3974",[1046,84.446]],["parent/3974",[515,4.652]],["name/3975",[1047,84.446]],["parent/3975",[515,4.652]],["name/3976",[1048,84.446]],["parent/3976",[515,4.652]],["name/3977",[37,55.729]],["parent/3977",[515,4.652]],["name/3978",[38,55.359]],["parent/3978",[515,4.652]],["name/3979",[129,54.001]],["parent/3979",[515,4.652]],["name/3980",[130,54.001]],["parent/3980",[515,4.652]],["name/3981",[131,53.688]],["parent/3981",[515,4.652]],["name/3982",[24,49.085]],["parent/3982",[515,4.652]],["name/3983",[28,50.106]],["parent/3983",[515,4.652]],["name/3984",[173,53.688]],["parent/3984",[515,4.652]],["name/3985",[252,61.092]],["parent/3985",[515,4.652]],["name/3986",[364,64.987]],["parent/3986",[515,4.652]],["name/3987",[365,64.987]],["parent/3987",[515,4.652]],["name/3988",[366,64.077]],["parent/3988",[515,4.652]],["name/3989",[367,64.987]],["parent/3989",[515,4.652]],["name/3990",[368,64.987]],["parent/3990",[515,4.652]],["name/3991",[46,46.68]],["parent/3991",[515,4.652]],["name/3992",[47,46.68]],["parent/3992",[515,4.652]],["name/3993",[48,46.68]],["parent/3993",[515,4.652]],["name/3994",[49,46.68]],["parent/3994",[515,4.652]],["name/3995",[50,46.68]],["parent/3995",[515,4.652]],["name/3996",[51,46.68]],["parent/3996",[515,4.652]],["name/3997",[52,46.68]],["parent/3997",[515,4.652]],["name/3998",[53,46.68]],["parent/3998",[515,4.652]],["name/3999",[54,46.68]],["parent/3999",[515,4.652]],["name/4000",[55,46.68]],["parent/4000",[515,4.652]],["name/4001",[56,46.68]],["parent/4001",[515,4.652]],["name/4002",[57,46.68]],["parent/4002",[515,4.652]],["name/4003",[58,46.68]],["parent/4003",[515,4.652]],["name/4004",[59,46.68]],["parent/4004",[515,4.652]],["name/4005",[60,46.68]],["parent/4005",[515,4.652]],["name/4006",[61,46.68]],["parent/4006",[515,4.652]],["name/4007",[62,46.68]],["parent/4007",[515,4.652]],["name/4008",[63,46.68]],["parent/4008",[515,4.652]],["name/4009",[64,46.38]],["parent/4009",[515,4.652]],["name/4010",[65,46.38]],["parent/4010",[515,4.652]],["name/4011",[66,46.68]],["parent/4011",[515,4.652]],["name/4012",[67,40.836]],["parent/4012",[515,4.652]],["name/4013",[68,46.233]],["parent/4013",[515,4.652]],["name/4014",[69,46.233]],["parent/4014",[515,4.652]],["name/4015",[70,46.68]],["parent/4015",[515,4.652]],["name/4016",[71,45.945]],["parent/4016",[515,4.652]],["name/4017",[72,46.529]],["parent/4017",[515,4.652]],["name/4018",[73,46.68]],["parent/4018",[515,4.652]],["name/4019",[74,46.68]],["parent/4019",[515,4.652]],["name/4020",[75,46.68]],["parent/4020",[515,4.652]],["name/4021",[76,46.529]],["parent/4021",[515,4.652]],["name/4022",[77,46.088]],["parent/4022",[515,4.652]],["name/4023",[78,46.088]],["parent/4023",[515,4.652]],["name/4024",[1049,84.446]],["parent/4024",[]],["name/4025",[504,49.085]],["parent/4025",[]],["name/4026",[10,39.265]],["parent/4026",[504,4.843]],["name/4027",[16,46.529]],["parent/4027",[504,4.843]],["name/4028",[18,57.366]],["parent/4028",[504,4.843]],["name/4029",[938,75.973]],["parent/4029",[504,4.843]],["name/4030",[17,43.671]],["parent/4030",[504,4.843]],["name/4031",[1050,84.446]],["parent/4031",[504,4.843]],["name/4032",[1051,84.446]],["parent/4032",[504,4.843]],["name/4033",[383,79.338]],["parent/4033",[504,4.843]],["name/4034",[107,69.783]],["parent/4034",[504,4.843]],["name/4035",[106,75.973]],["parent/4035",[504,4.843]],["name/4036",[1010,71.453]],["parent/4036",[504,4.843]],["name/4037",[43,52.257]],["parent/4037",[504,4.843]],["name/4038",[44,52.257]],["parent/4038",[504,4.843]],["name/4039",[27,44.252]],["parent/4039",[504,4.843]],["name/4040",[46,46.68]],["parent/4040",[504,4.843]],["name/4041",[47,46.68]],["parent/4041",[504,4.843]],["name/4042",[48,46.68]],["parent/4042",[504,4.843]],["name/4043",[49,46.68]],["parent/4043",[504,4.843]],["name/4044",[50,46.68]],["parent/4044",[504,4.843]],["name/4045",[51,46.68]],["parent/4045",[504,4.843]],["name/4046",[52,46.68]],["parent/4046",[504,4.843]],["name/4047",[53,46.68]],["parent/4047",[504,4.843]],["name/4048",[54,46.68]],["parent/4048",[504,4.843]],["name/4049",[55,46.68]],["parent/4049",[504,4.843]],["name/4050",[56,46.68]],["parent/4050",[504,4.843]],["name/4051",[57,46.68]],["parent/4051",[504,4.843]],["name/4052",[58,46.68]],["parent/4052",[504,4.843]],["name/4053",[59,46.68]],["parent/4053",[504,4.843]],["name/4054",[60,46.68]],["parent/4054",[504,4.843]],["name/4055",[61,46.68]],["parent/4055",[504,4.843]],["name/4056",[62,46.68]],["parent/4056",[504,4.843]],["name/4057",[63,46.68]],["parent/4057",[504,4.843]],["name/4058",[64,46.38]],["parent/4058",[504,4.843]],["name/4059",[65,46.38]],["parent/4059",[504,4.843]],["name/4060",[66,46.68]],["parent/4060",[504,4.843]],["name/4061",[67,40.836]],["parent/4061",[504,4.843]],["name/4062",[68,46.233]],["parent/4062",[504,4.843]],["name/4063",[69,46.233]],["parent/4063",[504,4.843]],["name/4064",[70,46.68]],["parent/4064",[504,4.843]],["name/4065",[71,45.945]],["parent/4065",[504,4.843]],["name/4066",[72,46.529]],["parent/4066",[504,4.843]],["name/4067",[73,46.68]],["parent/4067",[504,4.843]],["name/4068",[74,46.68]],["parent/4068",[504,4.843]],["name/4069",[75,46.68]],["parent/4069",[504,4.843]],["name/4070",[76,46.529]],["parent/4070",[504,4.843]],["name/4071",[77,46.088]],["parent/4071",[504,4.843]],["name/4072",[78,46.088]],["parent/4072",[504,4.843]],["name/4073",[1052,68.352]],["parent/4073",[]],["name/4074",[1053,84.446]],["parent/4074",[1052,6.744]],["name/4075",[1054,84.446]],["parent/4075",[1052,6.744]],["name/4076",[1055,84.446]],["parent/4076",[1052,6.744]],["name/4077",[1056,84.446]],["parent/4077",[1052,6.744]],["name/4078",[262,65.988]],["parent/4078",[1052,6.744]],["name/4079",[117,56.931]],["parent/4079",[1052,6.744]],["name/4080",[528,49.685]],["parent/4080",[]],["name/4081",[10,39.265]],["parent/4081",[528,4.902]],["name/4082",[18,57.366]],["parent/4082",[528,4.902]],["name/4083",[1,49.281]],["parent/4083",[528,4.902]],["name/4084",[1057,84.446]],["parent/4084",[1058,7.828]],["name/4085",[1059,84.446]],["parent/4085",[1058,7.828]],["name/4086",[1060,84.446]],["parent/4086",[528,4.902]],["name/4087",[16,46.529]],["parent/4087",[528,4.902]],["name/4088",[17,43.671]],["parent/4088",[528,4.902]],["name/4089",[19,52.528]],["parent/4089",[528,4.902]],["name/4090",[38,55.359]],["parent/4090",[528,4.902]],["name/4091",[1061,84.446]],["parent/4091",[528,4.902]],["name/4092",[390,69.783]],["parent/4092",[528,4.902]],["name/4093",[1062,84.446]],["parent/4093",[528,4.902]],["name/4094",[27,44.252]],["parent/4094",[528,4.902]],["name/4095",[46,46.68]],["parent/4095",[528,4.902]],["name/4096",[47,46.68]],["parent/4096",[528,4.902]],["name/4097",[48,46.68]],["parent/4097",[528,4.902]],["name/4098",[49,46.68]],["parent/4098",[528,4.902]],["name/4099",[50,46.68]],["parent/4099",[528,4.902]],["name/4100",[51,46.68]],["parent/4100",[528,4.902]],["name/4101",[52,46.68]],["parent/4101",[528,4.902]],["name/4102",[53,46.68]],["parent/4102",[528,4.902]],["name/4103",[54,46.68]],["parent/4103",[528,4.902]],["name/4104",[55,46.68]],["parent/4104",[528,4.902]],["name/4105",[56,46.68]],["parent/4105",[528,4.902]],["name/4106",[57,46.68]],["parent/4106",[528,4.902]],["name/4107",[58,46.68]],["parent/4107",[528,4.902]],["name/4108",[59,46.68]],["parent/4108",[528,4.902]],["name/4109",[60,46.68]],["parent/4109",[528,4.902]],["name/4110",[61,46.68]],["parent/4110",[528,4.902]],["name/4111",[62,46.68]],["parent/4111",[528,4.902]],["name/4112",[63,46.68]],["parent/4112",[528,4.902]],["name/4113",[64,46.38]],["parent/4113",[528,4.902]],["name/4114",[65,46.38]],["parent/4114",[528,4.902]],["name/4115",[66,46.68]],["parent/4115",[528,4.902]],["name/4116",[67,40.836]],["parent/4116",[528,4.902]],["name/4117",[68,46.233]],["parent/4117",[528,4.902]],["name/4118",[69,46.233]],["parent/4118",[528,4.902]],["name/4119",[70,46.68]],["parent/4119",[528,4.902]],["name/4120",[71,45.945]],["parent/4120",[528,4.902]],["name/4121",[72,46.529]],["parent/4121",[528,4.902]],["name/4122",[73,46.68]],["parent/4122",[528,4.902]],["name/4123",[74,46.68]],["parent/4123",[528,4.902]],["name/4124",[75,46.68]],["parent/4124",[528,4.902]],["name/4125",[76,46.529]],["parent/4125",[528,4.902]],["name/4126",[77,46.088]],["parent/4126",[528,4.902]],["name/4127",[78,46.088]],["parent/4127",[528,4.902]],["name/4128",[1063,71.453]],["parent/4128",[]],["name/4129",[1064,79.338]],["parent/4129",[1063,7.05]],["name/4130",[1065,79.338]],["parent/4130",[1063,7.05]],["name/4131",[1066,79.338]],["parent/4131",[1063,7.05]],["name/4132",[1067,79.338]],["parent/4132",[1063,7.05]],["name/4133",[507,49.281]],["parent/4133",[]],["name/4134",[10,39.265]],["parent/4134",[507,4.862]],["name/4135",[16,46.529]],["parent/4135",[507,4.862]],["name/4136",[1068,84.446]],["parent/4136",[507,4.862]],["name/4137",[1,49.281]],["parent/4137",[507,4.862]],["name/4138",[85,71.453]],["parent/4138",[1069,6.093]],["name/4139",[86,71.453]],["parent/4139",[1069,6.093]],["name/4140",[548,69.783]],["parent/4140",[507,4.862]],["name/4141",[17,43.671]],["parent/4141",[507,4.862]],["name/4142",[19,52.528]],["parent/4142",[507,4.862]],["name/4143",[1,49.281]],["parent/4143",[507,4.862]],["name/4144",[831,79.338]],["parent/4144",[1069,6.093]],["name/4145",[832,79.338]],["parent/4145",[1069,6.093]],["name/4146",[235,75.973]],["parent/4146",[1069,6.093]],["name/4147",[1070,84.446]],["parent/4147",[1069,6.093]],["name/4148",[1071,84.446]],["parent/4148",[1069,6.093]],["name/4149",[942,75.973]],["parent/4149",[1069,6.093]],["name/4150",[1072,84.446]],["parent/4150",[1069,6.093]],["name/4151",[1073,84.446]],["parent/4151",[1069,6.093]],["name/4152",[1074,84.446]],["parent/4152",[1069,6.093]],["name/4153",[1075,84.446]],["parent/4153",[1069,6.093]],["name/4154",[1076,84.446]],["parent/4154",[1069,6.093]],["name/4155",[1077,84.446]],["parent/4155",[1069,6.093]],["name/4156",[1010,71.453]],["parent/4156",[507,4.862]],["name/4157",[390,69.783]],["parent/4157",[507,4.862]],["name/4158",[1078,84.446]],["parent/4158",[507,4.862]],["name/4159",[1079,84.446]],["parent/4159",[507,4.862]],["name/4160",[27,44.252]],["parent/4160",[507,4.862]],["name/4161",[46,46.68]],["parent/4161",[507,4.862]],["name/4162",[47,46.68]],["parent/4162",[507,4.862]],["name/4163",[48,46.68]],["parent/4163",[507,4.862]],["name/4164",[49,46.68]],["parent/4164",[507,4.862]],["name/4165",[50,46.68]],["parent/4165",[507,4.862]],["name/4166",[51,46.68]],["parent/4166",[507,4.862]],["name/4167",[52,46.68]],["parent/4167",[507,4.862]],["name/4168",[53,46.68]],["parent/4168",[507,4.862]],["name/4169",[54,46.68]],["parent/4169",[507,4.862]],["name/4170",[55,46.68]],["parent/4170",[507,4.862]],["name/4171",[56,46.68]],["parent/4171",[507,4.862]],["name/4172",[57,46.68]],["parent/4172",[507,4.862]],["name/4173",[58,46.68]],["parent/4173",[507,4.862]],["name/4174",[59,46.68]],["parent/4174",[507,4.862]],["name/4175",[60,46.68]],["parent/4175",[507,4.862]],["name/4176",[61,46.68]],["parent/4176",[507,4.862]],["name/4177",[62,46.68]],["parent/4177",[507,4.862]],["name/4178",[63,46.68]],["parent/4178",[507,4.862]],["name/4179",[64,46.38]],["parent/4179",[507,4.862]],["name/4180",[65,46.38]],["parent/4180",[507,4.862]],["name/4181",[66,46.68]],["parent/4181",[507,4.862]],["name/4182",[67,40.836]],["parent/4182",[507,4.862]],["name/4183",[68,46.233]],["parent/4183",[507,4.862]],["name/4184",[69,46.233]],["parent/4184",[507,4.862]],["name/4185",[70,46.68]],["parent/4185",[507,4.862]],["name/4186",[71,45.945]],["parent/4186",[507,4.862]],["name/4187",[72,46.529]],["parent/4187",[507,4.862]],["name/4188",[73,46.68]],["parent/4188",[507,4.862]],["name/4189",[74,46.68]],["parent/4189",[507,4.862]],["name/4190",[75,46.68]],["parent/4190",[507,4.862]],["name/4191",[76,46.529]],["parent/4191",[507,4.862]],["name/4192",[77,46.088]],["parent/4192",[507,4.862]],["name/4193",[78,46.088]],["parent/4193",[507,4.862]],["name/4194",[1080,71.453]],["parent/4194",[]],["name/4195",[1081,79.338]],["parent/4195",[1080,7.05]],["name/4196",[1082,84.446]],["parent/4196",[1080,7.05]],["name/4197",[1083,84.446]],["parent/4197",[1080,7.05]],["name/4198",[1084,84.446]],["parent/4198",[1080,7.05]],["name/4199",[545,65.988]],["parent/4199",[]],["name/4200",[81,69.783]],["parent/4200",[545,6.51]],["name/4201",[80,69.783]],["parent/4201",[545,6.51]],["name/4202",[82,69.783]],["parent/4202",[545,6.51]],["name/4203",[809,79.338]],["parent/4203",[545,6.51]],["name/4204",[810,79.338]],["parent/4204",[545,6.51]],["name/4205",[400,73.46]],["parent/4205",[545,6.51]],["name/4206",[1042,75.973]],["parent/4206",[545,6.51]],["name/4207",[529,48.337]],["parent/4207",[]],["name/4208",[10,39.265]],["parent/4208",[529,4.769]],["name/4209",[14,53.688]],["parent/4209",[529,4.769]],["name/4210",[16,46.529]],["parent/4210",[529,4.769]],["name/4211",[17,43.671]],["parent/4211",[529,4.769]],["name/4212",[37,55.729]],["parent/4212",[529,4.769]],["name/4213",[38,55.359]],["parent/4213",[529,4.769]],["name/4214",[129,54.001]],["parent/4214",[529,4.769]],["name/4215",[130,54.001]],["parent/4215",[529,4.769]],["name/4216",[131,53.688]],["parent/4216",[529,4.769]],["name/4217",[24,49.085]],["parent/4217",[529,4.769]],["name/4218",[28,50.106]],["parent/4218",[529,4.769]],["name/4219",[173,53.688]],["parent/4219",[529,4.769]],["name/4220",[252,61.092]],["parent/4220",[529,4.769]],["name/4221",[364,64.987]],["parent/4221",[529,4.769]],["name/4222",[365,64.987]],["parent/4222",[529,4.769]],["name/4223",[366,64.077]],["parent/4223",[529,4.769]],["name/4224",[367,64.987]],["parent/4224",[529,4.769]],["name/4225",[368,64.987]],["parent/4225",[529,4.769]],["name/4226",[27,44.252]],["parent/4226",[529,4.769]],["name/4227",[46,46.68]],["parent/4227",[529,4.769]],["name/4228",[47,46.68]],["parent/4228",[529,4.769]],["name/4229",[48,46.68]],["parent/4229",[529,4.769]],["name/4230",[49,46.68]],["parent/4230",[529,4.769]],["name/4231",[50,46.68]],["parent/4231",[529,4.769]],["name/4232",[51,46.68]],["parent/4232",[529,4.769]],["name/4233",[52,46.68]],["parent/4233",[529,4.769]],["name/4234",[53,46.68]],["parent/4234",[529,4.769]],["name/4235",[54,46.68]],["parent/4235",[529,4.769]],["name/4236",[55,46.68]],["parent/4236",[529,4.769]],["name/4237",[56,46.68]],["parent/4237",[529,4.769]],["name/4238",[57,46.68]],["parent/4238",[529,4.769]],["name/4239",[58,46.68]],["parent/4239",[529,4.769]],["name/4240",[59,46.68]],["parent/4240",[529,4.769]],["name/4241",[60,46.68]],["parent/4241",[529,4.769]],["name/4242",[61,46.68]],["parent/4242",[529,4.769]],["name/4243",[62,46.68]],["parent/4243",[529,4.769]],["name/4244",[63,46.68]],["parent/4244",[529,4.769]],["name/4245",[64,46.38]],["parent/4245",[529,4.769]],["name/4246",[65,46.38]],["parent/4246",[529,4.769]],["name/4247",[66,46.68]],["parent/4247",[529,4.769]],["name/4248",[67,40.836]],["parent/4248",[529,4.769]],["name/4249",[68,46.233]],["parent/4249",[529,4.769]],["name/4250",[69,46.233]],["parent/4250",[529,4.769]],["name/4251",[70,46.68]],["parent/4251",[529,4.769]],["name/4252",[71,45.945]],["parent/4252",[529,4.769]],["name/4253",[72,46.529]],["parent/4253",[529,4.769]],["name/4254",[73,46.68]],["parent/4254",[529,4.769]],["name/4255",[74,46.68]],["parent/4255",[529,4.769]],["name/4256",[75,46.68]],["parent/4256",[529,4.769]],["name/4257",[76,46.529]],["parent/4257",[529,4.769]],["name/4258",[77,46.088]],["parent/4258",[529,4.769]],["name/4259",[78,46.088]],["parent/4259",[529,4.769]],["name/4260",[1085,64.077]],["parent/4260",[]],["name/4261",[1086,79.338]],["parent/4261",[1085,6.322]],["name/4262",[1087,79.338]],["parent/4262",[1085,6.322]],["name/4263",[1088,84.446]],["parent/4263",[1085,6.322]],["name/4264",[1089,84.446]],["parent/4264",[1085,6.322]],["name/4265",[1090,84.446]],["parent/4265",[1085,6.322]],["name/4266",[1091,84.446]],["parent/4266",[1085,6.322]],["name/4267",[1092,84.446]],["parent/4267",[1085,6.322]],["name/4268",[1093,84.446]],["parent/4268",[1085,6.322]],["name/4269",[1094,84.446]],["parent/4269",[1085,6.322]],["name/4270",[1095,84.446]],["parent/4270",[1085,6.322]],["name/4271",[1096,64.077]],["parent/4271",[]],["name/4272",[0,58.797]],["parent/4272",[1096,6.322]],["name/4273",[753,75.973]],["parent/4273",[1096,6.322]],["name/4274",[752,75.973]],["parent/4274",[1096,6.322]],["name/4275",[127,59.323]],["parent/4275",[1096,6.322]],["name/4276",[1097,84.446]],["parent/4276",[1096,6.322]],["name/4277",[1098,84.446]],["parent/4277",[1096,6.322]],["name/4278",[1099,84.446]],["parent/4278",[1096,6.322]],["name/4279",[1100,84.446]],["parent/4279",[1096,6.322]],["name/4280",[1101,84.446]],["parent/4280",[1096,6.322]],["name/4281",[406,40.098]],["parent/4281",[1096,6.322]],["name/4282",[1102,60.467]],["parent/4282",[]],["name/4283",[674,64.077]],["parent/4283",[1102,5.966]],["name/4284",[740,75.973]],["parent/4284",[1102,5.966]],["name/4285",[741,71.453]],["parent/4285",[1102,5.966]],["name/4286",[742,71.453]],["parent/4286",[1102,5.966]],["name/4287",[124,58.297]],["parent/4287",[1102,5.966]],["name/4288",[120,57.366]],["parent/4288",[1102,5.966]],["name/4289",[743,75.973]],["parent/4289",[1102,5.966]],["name/4290",[360,46.233]],["parent/4290",[1102,5.966]],["name/4291",[111,56.931]],["parent/4291",[1102,5.966]],["name/4292",[409,63.244]],["parent/4292",[1102,5.966]],["name/4293",[0,58.797]],["parent/4293",[1102,5.966]],["name/4294",[408,64.077]],["parent/4294",[1102,5.966]],["name/4295",[18,57.366]],["parent/4295",[1102,5.966]],["name/4296",[744,69.783]],["parent/4296",[1102,5.966]],["name/4297",[745,69.783]],["parent/4297",[1102,5.966]],["name/4298",[487,36.488]],["parent/4298",[]],["name/4299",[9,56.931]],["parent/4299",[487,3.6]],["name/4300",[10,39.265]],["parent/4300",[487,3.6]],["name/4301",[747,79.338]],["parent/4301",[487,3.6]],["name/4302",[748,79.338]],["parent/4302",[487,3.6]],["name/4303",[746,79.338]],["parent/4303",[487,3.6]],["name/4304",[749,79.338]],["parent/4304",[487,3.6]],["name/4305",[11,57.82]],["parent/4305",[487,3.6]],["name/4306",[186,56.514]],["parent/4306",[487,3.6]],["name/4307",[105,59.879]],["parent/4307",[487,3.6]],["name/4308",[16,46.529]],["parent/4308",[487,3.6]],["name/4309",[17,43.671]],["parent/4309",[487,3.6]],["name/4310",[752,75.973]],["parent/4310",[487,3.6]],["name/4311",[753,75.973]],["parent/4311",[487,3.6]],["name/4312",[170,56.931]],["parent/4312",[487,3.6]],["name/4313",[155,59.879]],["parent/4313",[487,3.6]],["name/4314",[678,69.783]],["parent/4314",[487,3.6]],["name/4315",[754,79.338]],["parent/4315",[487,3.6]],["name/4316",[755,79.338]],["parent/4316",[487,3.6]],["name/4317",[756,79.338]],["parent/4317",[487,3.6]],["name/4318",[757,79.338]],["parent/4318",[487,3.6]],["name/4319",[63,46.68]],["parent/4319",[487,3.6]],["name/4320",[137,59.879]],["parent/4320",[487,3.6]],["name/4321",[127,59.323]],["parent/4321",[487,3.6]],["name/4322",[758,79.338]],["parent/4322",[487,3.6]],["name/4323",[150,59.879]],["parent/4323",[487,3.6]],["name/4324",[689,69.783]],["parent/4324",[487,3.6]],["name/4325",[684,69.783]],["parent/4325",[487,3.6]],["name/4326",[143,58.797]],["parent/4326",[487,3.6]],["name/4327",[688,67.1]],["parent/4327",[487,3.6]],["name/4328",[131,53.688]],["parent/4328",[487,3.6]],["name/4329",[759,75.973]],["parent/4329",[487,3.6]],["name/4330",[760,79.338]],["parent/4330",[487,3.6]],["name/4331",[166,59.879]],["parent/4331",[487,3.6]],["name/4332",[167,59.879]],["parent/4332",[487,3.6]],["name/4333",[138,59.879]],["parent/4333",[487,3.6]],["name/4334",[158,59.879]],["parent/4334",[487,3.6]],["name/4335",[48,46.68]],["parent/4335",[487,3.6]],["name/4336",[761,79.338]],["parent/4336",[487,3.6]],["name/4337",[762,79.338]],["parent/4337",[487,3.6]],["name/4338",[763,79.338]],["parent/4338",[487,3.6]],["name/4339",[764,79.338]],["parent/4339",[487,3.6]],["name/4340",[765,79.338]],["parent/4340",[487,3.6]],["name/4341",[766,79.338]],["parent/4341",[487,3.6]],["name/4342",[767,79.338]],["parent/4342",[487,3.6]],["name/4343",[768,79.338]],["parent/4343",[487,3.6]],["name/4344",[769,79.338]],["parent/4344",[487,3.6]],["name/4345",[770,79.338]],["parent/4345",[487,3.6]],["name/4346",[771,79.338]],["parent/4346",[487,3.6]],["name/4347",[109,56.114]],["parent/4347",[487,3.6]],["name/4348",[772,79.338]],["parent/4348",[487,3.6]],["name/4349",[773,79.338]],["parent/4349",[487,3.6]],["name/4350",[774,79.338]],["parent/4350",[487,3.6]],["name/4351",[775,79.338]],["parent/4351",[487,3.6]],["name/4352",[776,79.338]],["parent/4352",[487,3.6]],["name/4353",[777,79.338]],["parent/4353",[487,3.6]],["name/4354",[737,69.783]],["parent/4354",[487,3.6]],["name/4355",[778,79.338]],["parent/4355",[487,3.6]],["name/4356",[779,73.46]],["parent/4356",[487,3.6]],["name/4357",[780,79.338]],["parent/4357",[487,3.6]],["name/4358",[690,69.783]],["parent/4358",[487,3.6]],["name/4359",[750,79.338]],["parent/4359",[487,3.6]],["name/4360",[686,69.783]],["parent/4360",[487,3.6]],["name/4361",[27,44.252]],["parent/4361",[487,3.6]],["name/4362",[674,64.077]],["parent/4362",[487,3.6]],["name/4363",[436,46.529]],["parent/4363",[487,3.6]],["name/4364",[675,69.783]],["parent/4364",[487,3.6]],["name/4365",[676,69.783]],["parent/4365",[487,3.6]],["name/4366",[677,69.783]],["parent/4366",[487,3.6]],["name/4367",[679,69.783]],["parent/4367",[487,3.6]],["name/4368",[680,69.783]],["parent/4368",[487,3.6]],["name/4369",[681,69.783]],["parent/4369",[487,3.6]],["name/4370",[217,68.352]],["parent/4370",[487,3.6]],["name/4371",[682,69.783]],["parent/4371",[487,3.6]],["name/4372",[164,59.323]],["parent/4372",[487,3.6]],["name/4373",[683,69.783]],["parent/4373",[487,3.6]],["name/4374",[685,69.783]],["parent/4374",[487,3.6]],["name/4375",[687,69.783]],["parent/4375",[487,3.6]],["name/4376",[165,59.879]],["parent/4376",[487,3.6]],["name/4377",[186,56.514]],["parent/4377",[487,3.6]],["name/4378",[110,43.121]],["parent/4378",[487,3.6]],["name/4379",[111,56.931]],["parent/4379",[487,3.6]],["name/4380",[112,54.657]],["parent/4380",[487,3.6]],["name/4381",[19,52.528]],["parent/4381",[487,3.6]],["name/4382",[1,49.281]],["parent/4382",[487,3.6]],["name/4383",[113,59.879]],["parent/4383",[1103,6.164]],["name/4384",[27,44.252]],["parent/4384",[1103,6.164]],["name/4385",[115,59.879]],["parent/4385",[1103,6.164]],["name/4386",[116,59.879]],["parent/4386",[1103,6.164]],["name/4387",[117,56.931]],["parent/4387",[1103,6.164]],["name/4388",[118,59.879]],["parent/4388",[1103,6.164]],["name/4389",[119,59.879]],["parent/4389",[1103,6.164]],["name/4390",[120,57.366]],["parent/4390",[1103,6.164]],["name/4391",[121,59.879]],["parent/4391",[1103,6.164]],["name/4392",[122,59.879]],["parent/4392",[1103,6.164]],["name/4393",[123,56.514]],["parent/4393",[1103,6.164]],["name/4394",[67,40.836]],["parent/4394",[1103,6.164]],["name/4395",[124,58.297]],["parent/4395",[1103,6.164]],["name/4396",[125,59.879]],["parent/4396",[487,3.6]],["name/4397",[126,59.879]],["parent/4397",[487,3.6]],["name/4398",[128,59.879]],["parent/4398",[487,3.6]],["name/4399",[129,54.001]],["parent/4399",[487,3.6]],["name/4400",[130,54.001]],["parent/4400",[487,3.6]],["name/4401",[132,59.879]],["parent/4401",[487,3.6]],["name/4402",[133,59.879]],["parent/4402",[487,3.6]],["name/4403",[134,59.879]],["parent/4403",[487,3.6]],["name/4404",[135,59.879]],["parent/4404",[487,3.6]],["name/4405",[136,59.323]],["parent/4405",[487,3.6]],["name/4406",[139,59.879]],["parent/4406",[487,3.6]],["name/4407",[140,59.879]],["parent/4407",[487,3.6]],["name/4408",[141,59.879]],["parent/4408",[487,3.6]],["name/4409",[142,59.879]],["parent/4409",[487,3.6]],["name/4410",[144,59.323]],["parent/4410",[487,3.6]],["name/4411",[145,59.323]],["parent/4411",[487,3.6]],["name/4412",[146,59.323]],["parent/4412",[487,3.6]],["name/4413",[147,59.323]],["parent/4413",[487,3.6]],["name/4414",[148,59.879]],["parent/4414",[487,3.6]],["name/4415",[149,59.879]],["parent/4415",[487,3.6]],["name/4416",[151,59.879]],["parent/4416",[487,3.6]],["name/4417",[152,59.879]],["parent/4417",[487,3.6]],["name/4418",[153,59.879]],["parent/4418",[487,3.6]],["name/4419",[154,59.879]],["parent/4419",[487,3.6]],["name/4420",[156,57.82]],["parent/4420",[487,3.6]],["name/4421",[157,59.879]],["parent/4421",[487,3.6]],["name/4422",[159,59.879]],["parent/4422",[487,3.6]],["name/4423",[160,59.879]],["parent/4423",[487,3.6]],["name/4424",[161,59.879]],["parent/4424",[487,3.6]],["name/4425",[162,56.114]],["parent/4425",[487,3.6]],["name/4426",[163,59.323]],["parent/4426",[487,3.6]],["name/4427",[168,59.879]],["parent/4427",[487,3.6]],["name/4428",[169,59.879]],["parent/4428",[487,3.6]],["name/4429",[171,59.323]],["parent/4429",[487,3.6]],["name/4430",[172,59.323]],["parent/4430",[487,3.6]],["name/4431",[28,50.106]],["parent/4431",[487,3.6]],["name/4432",[24,49.085]],["parent/4432",[487,3.6]],["name/4433",[43,52.257]],["parent/4433",[487,3.6]],["name/4434",[44,52.257]],["parent/4434",[487,3.6]],["name/4435",[173,53.688]],["parent/4435",[487,3.6]],["name/4436",[174,58.797]],["parent/4436",[487,3.6]],["name/4437",[175,59.323]],["parent/4437",[487,3.6]],["name/4438",[176,59.323]],["parent/4438",[487,3.6]],["name/4439",[177,59.323]],["parent/4439",[487,3.6]],["name/4440",[178,59.323]],["parent/4440",[487,3.6]],["name/4441",[179,59.323]],["parent/4441",[487,3.6]],["name/4442",[180,59.323]],["parent/4442",[487,3.6]],["name/4443",[181,59.323]],["parent/4443",[487,3.6]],["name/4444",[182,59.323]],["parent/4444",[487,3.6]],["name/4445",[108,59.323]],["parent/4445",[487,3.6]],["name/4446",[183,57.82]],["parent/4446",[487,3.6]],["name/4447",[184,59.323]],["parent/4447",[487,3.6]],["name/4448",[185,59.323]],["parent/4448",[487,3.6]],["name/4449",[187,58.797]],["parent/4449",[487,3.6]],["name/4450",[188,59.323]],["parent/4450",[487,3.6]],["name/4451",[189,59.323]],["parent/4451",[487,3.6]],["name/4452",[190,59.323]],["parent/4452",[487,3.6]],["name/4453",[191,59.323]],["parent/4453",[487,3.6]],["name/4454",[192,59.323]],["parent/4454",[487,3.6]],["name/4455",[36,53.091]],["parent/4455",[487,3.6]],["name/4456",[34,53.091]],["parent/4456",[487,3.6]],["name/4457",[35,53.091]],["parent/4457",[487,3.6]],["name/4458",[46,46.68]],["parent/4458",[487,3.6]],["name/4459",[47,46.68]],["parent/4459",[487,3.6]],["name/4460",[49,46.68]],["parent/4460",[487,3.6]],["name/4461",[50,46.68]],["parent/4461",[487,3.6]],["name/4462",[51,46.68]],["parent/4462",[487,3.6]],["name/4463",[52,46.68]],["parent/4463",[487,3.6]],["name/4464",[53,46.68]],["parent/4464",[487,3.6]],["name/4465",[54,46.68]],["parent/4465",[487,3.6]],["name/4466",[55,46.68]],["parent/4466",[487,3.6]],["name/4467",[56,46.68]],["parent/4467",[487,3.6]],["name/4468",[57,46.68]],["parent/4468",[487,3.6]],["name/4469",[58,46.68]],["parent/4469",[487,3.6]],["name/4470",[59,46.68]],["parent/4470",[487,3.6]],["name/4471",[60,46.68]],["parent/4471",[487,3.6]],["name/4472",[61,46.68]],["parent/4472",[487,3.6]],["name/4473",[62,46.68]],["parent/4473",[487,3.6]],["name/4474",[64,46.38]],["parent/4474",[487,3.6]],["name/4475",[65,46.38]],["parent/4475",[487,3.6]],["name/4476",[66,46.68]],["parent/4476",[487,3.6]],["name/4477",[67,40.836]],["parent/4477",[487,3.6]],["name/4478",[68,46.233]],["parent/4478",[487,3.6]],["name/4479",[69,46.233]],["parent/4479",[487,3.6]],["name/4480",[70,46.68]],["parent/4480",[487,3.6]],["name/4481",[71,45.945]],["parent/4481",[487,3.6]],["name/4482",[72,46.529]],["parent/4482",[487,3.6]],["name/4483",[73,46.68]],["parent/4483",[487,3.6]],["name/4484",[74,46.68]],["parent/4484",[487,3.6]],["name/4485",[75,46.68]],["parent/4485",[487,3.6]],["name/4486",[76,46.529]],["parent/4486",[487,3.6]],["name/4487",[77,46.088]],["parent/4487",[487,3.6]],["name/4488",[78,46.088]],["parent/4488",[487,3.6]],["name/4489",[527,47.149]],["parent/4489",[]],["name/4490",[10,39.265]],["parent/4490",[527,4.652]],["name/4491",[16,46.529]],["parent/4491",[527,4.652]],["name/4492",[18,57.366]],["parent/4492",[527,4.652]],["name/4493",[1,49.281]],["parent/4493",[527,4.652]],["name/4494",[316,71.453]],["parent/4494",[1104,6.164]],["name/4495",[1105,84.446]],["parent/4495",[1104,6.164]],["name/4496",[1106,84.446]],["parent/4496",[1104,6.164]],["name/4497",[1107,84.446]],["parent/4497",[1104,6.164]],["name/4498",[1108,84.446]],["parent/4498",[1104,6.164]],["name/4499",[1109,84.446]],["parent/4499",[1104,6.164]],["name/4500",[1110,84.446]],["parent/4500",[1104,6.164]],["name/4501",[1111,84.446]],["parent/4501",[1104,6.164]],["name/4502",[1112,84.446]],["parent/4502",[1104,6.164]],["name/4503",[1113,84.446]],["parent/4503",[1104,6.164]],["name/4504",[1114,84.446]],["parent/4504",[1104,6.164]],["name/4505",[1115,84.446]],["parent/4505",[1104,6.164]],["name/4506",[1116,84.446]],["parent/4506",[1104,6.164]],["name/4507",[14,53.688]],["parent/4507",[527,4.652]],["name/4508",[17,43.671]],["parent/4508",[527,4.652]],["name/4509",[1117,73.46]],["parent/4509",[527,4.652]],["name/4510",[1118,71.453]],["parent/4510",[527,4.652]],["name/4511",[27,44.252]],["parent/4511",[527,4.652]],["name/4512",[1119,84.446]],["parent/4512",[527,4.652]],["name/4513",[1120,84.446]],["parent/4513",[527,4.652]],["name/4514",[1121,84.446]],["parent/4514",[527,4.652]],["name/4515",[37,55.729]],["parent/4515",[527,4.652]],["name/4516",[38,55.359]],["parent/4516",[527,4.652]],["name/4517",[129,54.001]],["parent/4517",[527,4.652]],["name/4518",[130,54.001]],["parent/4518",[527,4.652]],["name/4519",[131,53.688]],["parent/4519",[527,4.652]],["name/4520",[24,49.085]],["parent/4520",[527,4.652]],["name/4521",[28,50.106]],["parent/4521",[527,4.652]],["name/4522",[173,53.688]],["parent/4522",[527,4.652]],["name/4523",[252,61.092]],["parent/4523",[527,4.652]],["name/4524",[364,64.987]],["parent/4524",[527,4.652]],["name/4525",[365,64.987]],["parent/4525",[527,4.652]],["name/4526",[366,64.077]],["parent/4526",[527,4.652]],["name/4527",[367,64.987]],["parent/4527",[527,4.652]],["name/4528",[368,64.987]],["parent/4528",[527,4.652]],["name/4529",[46,46.68]],["parent/4529",[527,4.652]],["name/4530",[47,46.68]],["parent/4530",[527,4.652]],["name/4531",[48,46.68]],["parent/4531",[527,4.652]],["name/4532",[49,46.68]],["parent/4532",[527,4.652]],["name/4533",[50,46.68]],["parent/4533",[527,4.652]],["name/4534",[51,46.68]],["parent/4534",[527,4.652]],["name/4535",[52,46.68]],["parent/4535",[527,4.652]],["name/4536",[53,46.68]],["parent/4536",[527,4.652]],["name/4537",[54,46.68]],["parent/4537",[527,4.652]],["name/4538",[55,46.68]],["parent/4538",[527,4.652]],["name/4539",[56,46.68]],["parent/4539",[527,4.652]],["name/4540",[57,46.68]],["parent/4540",[527,4.652]],["name/4541",[58,46.68]],["parent/4541",[527,4.652]],["name/4542",[59,46.68]],["parent/4542",[527,4.652]],["name/4543",[60,46.68]],["parent/4543",[527,4.652]],["name/4544",[61,46.68]],["parent/4544",[527,4.652]],["name/4545",[62,46.68]],["parent/4545",[527,4.652]],["name/4546",[63,46.68]],["parent/4546",[527,4.652]],["name/4547",[64,46.38]],["parent/4547",[527,4.652]],["name/4548",[65,46.38]],["parent/4548",[527,4.652]],["name/4549",[66,46.68]],["parent/4549",[527,4.652]],["name/4550",[67,40.836]],["parent/4550",[527,4.652]],["name/4551",[68,46.233]],["parent/4551",[527,4.652]],["name/4552",[69,46.233]],["parent/4552",[527,4.652]],["name/4553",[70,46.68]],["parent/4553",[527,4.652]],["name/4554",[71,45.945]],["parent/4554",[527,4.652]],["name/4555",[72,46.529]],["parent/4555",[527,4.652]],["name/4556",[73,46.68]],["parent/4556",[527,4.652]],["name/4557",[74,46.68]],["parent/4557",[527,4.652]],["name/4558",[75,46.68]],["parent/4558",[527,4.652]],["name/4559",[76,46.529]],["parent/4559",[527,4.652]],["name/4560",[77,46.088]],["parent/4560",[527,4.652]],["name/4561",[78,46.088]],["parent/4561",[527,4.652]],["name/4562",[1122,47.983]],["parent/4562",[]],["name/4563",[10,39.265]],["parent/4563",[1122,4.734]],["name/4564",[16,46.529]],["parent/4564",[1122,4.734]],["name/4565",[14,53.688]],["parent/4565",[1122,4.734]],["name/4566",[17,43.671]],["parent/4566",[1122,4.734]],["name/4567",[1123,84.446]],["parent/4567",[1122,4.734]],["name/4568",[1117,73.46]],["parent/4568",[1122,4.734]],["name/4569",[1118,71.453]],["parent/4569",[1122,4.734]],["name/4570",[27,44.252]],["parent/4570",[1122,4.734]],["name/4571",[37,55.729]],["parent/4571",[1122,4.734]],["name/4572",[38,55.359]],["parent/4572",[1122,4.734]],["name/4573",[129,54.001]],["parent/4573",[1122,4.734]],["name/4574",[130,54.001]],["parent/4574",[1122,4.734]],["name/4575",[131,53.688]],["parent/4575",[1122,4.734]],["name/4576",[24,49.085]],["parent/4576",[1122,4.734]],["name/4577",[28,50.106]],["parent/4577",[1122,4.734]],["name/4578",[173,53.688]],["parent/4578",[1122,4.734]],["name/4579",[252,61.092]],["parent/4579",[1122,4.734]],["name/4580",[364,64.987]],["parent/4580",[1122,4.734]],["name/4581",[365,64.987]],["parent/4581",[1122,4.734]],["name/4582",[366,64.077]],["parent/4582",[1122,4.734]],["name/4583",[367,64.987]],["parent/4583",[1122,4.734]],["name/4584",[368,64.987]],["parent/4584",[1122,4.734]],["name/4585",[46,46.68]],["parent/4585",[1122,4.734]],["name/4586",[47,46.68]],["parent/4586",[1122,4.734]],["name/4587",[48,46.68]],["parent/4587",[1122,4.734]],["name/4588",[49,46.68]],["parent/4588",[1122,4.734]],["name/4589",[50,46.68]],["parent/4589",[1122,4.734]],["name/4590",[51,46.68]],["parent/4590",[1122,4.734]],["name/4591",[52,46.68]],["parent/4591",[1122,4.734]],["name/4592",[53,46.68]],["parent/4592",[1122,4.734]],["name/4593",[54,46.68]],["parent/4593",[1122,4.734]],["name/4594",[55,46.68]],["parent/4594",[1122,4.734]],["name/4595",[56,46.68]],["parent/4595",[1122,4.734]],["name/4596",[57,46.68]],["parent/4596",[1122,4.734]],["name/4597",[58,46.68]],["parent/4597",[1122,4.734]],["name/4598",[59,46.68]],["parent/4598",[1122,4.734]],["name/4599",[60,46.68]],["parent/4599",[1122,4.734]],["name/4600",[61,46.68]],["parent/4600",[1122,4.734]],["name/4601",[62,46.68]],["parent/4601",[1122,4.734]],["name/4602",[63,46.68]],["parent/4602",[1122,4.734]],["name/4603",[64,46.38]],["parent/4603",[1122,4.734]],["name/4604",[65,46.38]],["parent/4604",[1122,4.734]],["name/4605",[66,46.68]],["parent/4605",[1122,4.734]],["name/4606",[67,40.836]],["parent/4606",[1122,4.734]],["name/4607",[68,46.233]],["parent/4607",[1122,4.734]],["name/4608",[69,46.233]],["parent/4608",[1122,4.734]],["name/4609",[70,46.68]],["parent/4609",[1122,4.734]],["name/4610",[71,45.945]],["parent/4610",[1122,4.734]],["name/4611",[72,46.529]],["parent/4611",[1122,4.734]],["name/4612",[73,46.68]],["parent/4612",[1122,4.734]],["name/4613",[74,46.68]],["parent/4613",[1122,4.734]],["name/4614",[75,46.68]],["parent/4614",[1122,4.734]],["name/4615",[76,46.529]],["parent/4615",[1122,4.734]],["name/4616",[77,46.088]],["parent/4616",[1122,4.734]],["name/4617",[78,46.088]],["parent/4617",[1122,4.734]],["name/4618",[1124,71.453]],["parent/4618",[]],["name/4619",[1125,84.446]],["parent/4619",[1124,7.05]],["name/4620",[409,63.244]],["parent/4620",[1124,7.05]],["name/4621",[408,64.077]],["parent/4621",[1124,7.05]],["name/4622",[582,75.973]],["parent/4622",[1124,7.05]],["name/4623",[530,47.474]],["parent/4623",[]],["name/4624",[10,39.265]],["parent/4624",[530,4.684]],["name/4625",[16,46.529]],["parent/4625",[530,4.684]],["name/4626",[14,53.688]],["parent/4626",[530,4.684]],["name/4627",[17,43.671]],["parent/4627",[530,4.684]],["name/4628",[19,52.528]],["parent/4628",[530,4.684]],["name/4629",[1,49.281]],["parent/4629",[530,4.684]],["name/4630",[120,57.366]],["parent/4630",[1126,8.332]],["name/4631",[1009,75.973]],["parent/4631",[530,4.684]],["name/4632",[1117,73.46]],["parent/4632",[530,4.684]],["name/4633",[1118,71.453]],["parent/4633",[530,4.684]],["name/4634",[27,44.252]],["parent/4634",[530,4.684]],["name/4635",[37,55.729]],["parent/4635",[530,4.684]],["name/4636",[38,55.359]],["parent/4636",[530,4.684]],["name/4637",[129,54.001]],["parent/4637",[530,4.684]],["name/4638",[130,54.001]],["parent/4638",[530,4.684]],["name/4639",[131,53.688]],["parent/4639",[530,4.684]],["name/4640",[24,49.085]],["parent/4640",[530,4.684]],["name/4641",[28,50.106]],["parent/4641",[530,4.684]],["name/4642",[173,53.688]],["parent/4642",[530,4.684]],["name/4643",[252,61.092]],["parent/4643",[530,4.684]],["name/4644",[364,64.987]],["parent/4644",[530,4.684]],["name/4645",[365,64.987]],["parent/4645",[530,4.684]],["name/4646",[366,64.077]],["parent/4646",[530,4.684]],["name/4647",[367,64.987]],["parent/4647",[530,4.684]],["name/4648",[368,64.987]],["parent/4648",[530,4.684]],["name/4649",[46,46.68]],["parent/4649",[530,4.684]],["name/4650",[47,46.68]],["parent/4650",[530,4.684]],["name/4651",[48,46.68]],["parent/4651",[530,4.684]],["name/4652",[49,46.68]],["parent/4652",[530,4.684]],["name/4653",[50,46.68]],["parent/4653",[530,4.684]],["name/4654",[51,46.68]],["parent/4654",[530,4.684]],["name/4655",[52,46.68]],["parent/4655",[530,4.684]],["name/4656",[53,46.68]],["parent/4656",[530,4.684]],["name/4657",[54,46.68]],["parent/4657",[530,4.684]],["name/4658",[55,46.68]],["parent/4658",[530,4.684]],["name/4659",[56,46.68]],["parent/4659",[530,4.684]],["name/4660",[57,46.68]],["parent/4660",[530,4.684]],["name/4661",[58,46.68]],["parent/4661",[530,4.684]],["name/4662",[59,46.68]],["parent/4662",[530,4.684]],["name/4663",[60,46.68]],["parent/4663",[530,4.684]],["name/4664",[61,46.68]],["parent/4664",[530,4.684]],["name/4665",[62,46.68]],["parent/4665",[530,4.684]],["name/4666",[63,46.68]],["parent/4666",[530,4.684]],["name/4667",[64,46.38]],["parent/4667",[530,4.684]],["name/4668",[65,46.38]],["parent/4668",[530,4.684]],["name/4669",[66,46.68]],["parent/4669",[530,4.684]],["name/4670",[67,40.836]],["parent/4670",[530,4.684]],["name/4671",[68,46.233]],["parent/4671",[530,4.684]],["name/4672",[69,46.233]],["parent/4672",[530,4.684]],["name/4673",[70,46.68]],["parent/4673",[530,4.684]],["name/4674",[71,45.945]],["parent/4674",[530,4.684]],["name/4675",[72,46.529]],["parent/4675",[530,4.684]],["name/4676",[73,46.68]],["parent/4676",[530,4.684]],["name/4677",[74,46.68]],["parent/4677",[530,4.684]],["name/4678",[75,46.68]],["parent/4678",[530,4.684]],["name/4679",[76,46.529]],["parent/4679",[530,4.684]],["name/4680",[77,46.088]],["parent/4680",[530,4.684]],["name/4681",[78,46.088]],["parent/4681",[530,4.684]],["name/4682",[531,47.641]],["parent/4682",[]],["name/4683",[10,39.265]],["parent/4683",[531,4.7]],["name/4684",[16,46.529]],["parent/4684",[531,4.7]],["name/4685",[14,53.688]],["parent/4685",[531,4.7]],["name/4686",[17,43.671]],["parent/4686",[531,4.7]],["name/4687",[1127,84.446]],["parent/4687",[531,4.7]],["name/4688",[1117,73.46]],["parent/4688",[531,4.7]],["name/4689",[1118,71.453]],["parent/4689",[531,4.7]],["name/4690",[1010,71.453]],["parent/4690",[531,4.7]],["name/4691",[27,44.252]],["parent/4691",[531,4.7]],["name/4692",[37,55.729]],["parent/4692",[531,4.7]],["name/4693",[38,55.359]],["parent/4693",[531,4.7]],["name/4694",[129,54.001]],["parent/4694",[531,4.7]],["name/4695",[130,54.001]],["parent/4695",[531,4.7]],["name/4696",[131,53.688]],["parent/4696",[531,4.7]],["name/4697",[24,49.085]],["parent/4697",[531,4.7]],["name/4698",[28,50.106]],["parent/4698",[531,4.7]],["name/4699",[173,53.688]],["parent/4699",[531,4.7]],["name/4700",[252,61.092]],["parent/4700",[531,4.7]],["name/4701",[364,64.987]],["parent/4701",[531,4.7]],["name/4702",[365,64.987]],["parent/4702",[531,4.7]],["name/4703",[366,64.077]],["parent/4703",[531,4.7]],["name/4704",[367,64.987]],["parent/4704",[531,4.7]],["name/4705",[368,64.987]],["parent/4705",[531,4.7]],["name/4706",[46,46.68]],["parent/4706",[531,4.7]],["name/4707",[47,46.68]],["parent/4707",[531,4.7]],["name/4708",[48,46.68]],["parent/4708",[531,4.7]],["name/4709",[49,46.68]],["parent/4709",[531,4.7]],["name/4710",[50,46.68]],["parent/4710",[531,4.7]],["name/4711",[51,46.68]],["parent/4711",[531,4.7]],["name/4712",[52,46.68]],["parent/4712",[531,4.7]],["name/4713",[53,46.68]],["parent/4713",[531,4.7]],["name/4714",[54,46.68]],["parent/4714",[531,4.7]],["name/4715",[55,46.68]],["parent/4715",[531,4.7]],["name/4716",[56,46.68]],["parent/4716",[531,4.7]],["name/4717",[57,46.68]],["parent/4717",[531,4.7]],["name/4718",[58,46.68]],["parent/4718",[531,4.7]],["name/4719",[59,46.68]],["parent/4719",[531,4.7]],["name/4720",[60,46.68]],["parent/4720",[531,4.7]],["name/4721",[61,46.68]],["parent/4721",[531,4.7]],["name/4722",[62,46.68]],["parent/4722",[531,4.7]],["name/4723",[63,46.68]],["parent/4723",[531,4.7]],["name/4724",[64,46.38]],["parent/4724",[531,4.7]],["name/4725",[65,46.38]],["parent/4725",[531,4.7]],["name/4726",[66,46.68]],["parent/4726",[531,4.7]],["name/4727",[67,40.836]],["parent/4727",[531,4.7]],["name/4728",[68,46.233]],["parent/4728",[531,4.7]],["name/4729",[69,46.233]],["parent/4729",[531,4.7]],["name/4730",[70,46.68]],["parent/4730",[531,4.7]],["name/4731",[71,45.945]],["parent/4731",[531,4.7]],["name/4732",[72,46.529]],["parent/4732",[531,4.7]],["name/4733",[73,46.68]],["parent/4733",[531,4.7]],["name/4734",[74,46.68]],["parent/4734",[531,4.7]],["name/4735",[75,46.68]],["parent/4735",[531,4.7]],["name/4736",[76,46.529]],["parent/4736",[531,4.7]],["name/4737",[77,46.088]],["parent/4737",[531,4.7]],["name/4738",[78,46.088]],["parent/4738",[531,4.7]],["name/4739",[1128,71.453]],["parent/4739",[]],["name/4740",[1064,79.338]],["parent/4740",[1128,7.05]],["name/4741",[1066,79.338]],["parent/4741",[1128,7.05]],["name/4742",[1065,79.338]],["parent/4742",[1128,7.05]],["name/4743",[1067,79.338]],["parent/4743",[1128,7.05]],["name/4744",[506,49.685]],["parent/4744",[]],["name/4745",[10,39.265]],["parent/4745",[506,4.902]],["name/4746",[16,46.529]],["parent/4746",[506,4.902]],["name/4747",[17,43.671]],["parent/4747",[506,4.902]],["name/4748",[19,52.528]],["parent/4748",[506,4.902]],["name/4749",[1,49.281]],["parent/4749",[506,4.902]],["name/4750",[1129,75.973]],["parent/4750",[1130,6.744]],["name/4751",[1131,75.973]],["parent/4751",[1130,6.744]],["name/4752",[1132,75.973]],["parent/4752",[1130,6.744]],["name/4753",[1133,75.973]],["parent/4753",[1130,6.744]],["name/4754",[1134,75.973]],["parent/4754",[1130,6.744]],["name/4755",[1135,75.973]],["parent/4755",[1130,6.744]],["name/4756",[117,56.931]],["parent/4756",[1130,6.744]],["name/4757",[1136,73.46]],["parent/4757",[506,4.902]],["name/4758",[390,69.783]],["parent/4758",[506,4.902]],["name/4759",[391,73.46]],["parent/4759",[506,4.902]],["name/4760",[1137,75.973]],["parent/4760",[506,4.902]],["name/4761",[1138,75.973]],["parent/4761",[506,4.902]],["name/4762",[27,44.252]],["parent/4762",[506,4.902]],["name/4763",[46,46.68]],["parent/4763",[506,4.902]],["name/4764",[47,46.68]],["parent/4764",[506,4.902]],["name/4765",[48,46.68]],["parent/4765",[506,4.902]],["name/4766",[49,46.68]],["parent/4766",[506,4.902]],["name/4767",[50,46.68]],["parent/4767",[506,4.902]],["name/4768",[51,46.68]],["parent/4768",[506,4.902]],["name/4769",[52,46.68]],["parent/4769",[506,4.902]],["name/4770",[53,46.68]],["parent/4770",[506,4.902]],["name/4771",[54,46.68]],["parent/4771",[506,4.902]],["name/4772",[55,46.68]],["parent/4772",[506,4.902]],["name/4773",[56,46.68]],["parent/4773",[506,4.902]],["name/4774",[57,46.68]],["parent/4774",[506,4.902]],["name/4775",[58,46.68]],["parent/4775",[506,4.902]],["name/4776",[59,46.68]],["parent/4776",[506,4.902]],["name/4777",[60,46.68]],["parent/4777",[506,4.902]],["name/4778",[61,46.68]],["parent/4778",[506,4.902]],["name/4779",[62,46.68]],["parent/4779",[506,4.902]],["name/4780",[63,46.68]],["parent/4780",[506,4.902]],["name/4781",[64,46.38]],["parent/4781",[506,4.902]],["name/4782",[65,46.38]],["parent/4782",[506,4.902]],["name/4783",[66,46.68]],["parent/4783",[506,4.902]],["name/4784",[67,40.836]],["parent/4784",[506,4.902]],["name/4785",[68,46.233]],["parent/4785",[506,4.902]],["name/4786",[69,46.233]],["parent/4786",[506,4.902]],["name/4787",[70,46.68]],["parent/4787",[506,4.902]],["name/4788",[71,45.945]],["parent/4788",[506,4.902]],["name/4789",[72,46.529]],["parent/4789",[506,4.902]],["name/4790",[73,46.68]],["parent/4790",[506,4.902]],["name/4791",[74,46.68]],["parent/4791",[506,4.902]],["name/4792",[75,46.68]],["parent/4792",[506,4.902]],["name/4793",[76,46.529]],["parent/4793",[506,4.902]],["name/4794",[77,46.088]],["parent/4794",[506,4.902]],["name/4795",[78,46.088]],["parent/4795",[506,4.902]],["name/4796",[546,68.352]],["parent/4796",[]],["name/4797",[316,71.453]],["parent/4797",[546,6.744]],["name/4798",[400,73.46]],["parent/4798",[546,6.744]],["name/4799",[1139,84.446]],["parent/4799",[546,6.744]],["name/4800",[1042,75.973]],["parent/4800",[546,6.744]],["name/4801",[1140,84.446]],["parent/4801",[546,6.744]],["name/4802",[540,47.983]],["parent/4802",[]],["name/4803",[10,39.265]],["parent/4803",[540,4.734]],["name/4804",[18,57.366]],["parent/4804",[540,4.734]],["name/4805",[16,46.529]],["parent/4805",[540,4.734]],["name/4806",[14,53.688]],["parent/4806",[540,4.734]],["name/4807",[17,43.671]],["parent/4807",[540,4.734]],["name/4808",[1118,71.453]],["parent/4808",[540,4.734]],["name/4809",[27,44.252]],["parent/4809",[540,4.734]],["name/4810",[37,55.729]],["parent/4810",[540,4.734]],["name/4811",[38,55.359]],["parent/4811",[540,4.734]],["name/4812",[129,54.001]],["parent/4812",[540,4.734]],["name/4813",[130,54.001]],["parent/4813",[540,4.734]],["name/4814",[131,53.688]],["parent/4814",[540,4.734]],["name/4815",[24,49.085]],["parent/4815",[540,4.734]],["name/4816",[28,50.106]],["parent/4816",[540,4.734]],["name/4817",[173,53.688]],["parent/4817",[540,4.734]],["name/4818",[252,61.092]],["parent/4818",[540,4.734]],["name/4819",[364,64.987]],["parent/4819",[540,4.734]],["name/4820",[365,64.987]],["parent/4820",[540,4.734]],["name/4821",[366,64.077]],["parent/4821",[540,4.734]],["name/4822",[367,64.987]],["parent/4822",[540,4.734]],["name/4823",[368,64.987]],["parent/4823",[540,4.734]],["name/4824",[46,46.68]],["parent/4824",[540,4.734]],["name/4825",[47,46.68]],["parent/4825",[540,4.734]],["name/4826",[48,46.68]],["parent/4826",[540,4.734]],["name/4827",[49,46.68]],["parent/4827",[540,4.734]],["name/4828",[50,46.68]],["parent/4828",[540,4.734]],["name/4829",[51,46.68]],["parent/4829",[540,4.734]],["name/4830",[52,46.68]],["parent/4830",[540,4.734]],["name/4831",[53,46.68]],["parent/4831",[540,4.734]],["name/4832",[54,46.68]],["parent/4832",[540,4.734]],["name/4833",[55,46.68]],["parent/4833",[540,4.734]],["name/4834",[56,46.68]],["parent/4834",[540,4.734]],["name/4835",[57,46.68]],["parent/4835",[540,4.734]],["name/4836",[58,46.68]],["parent/4836",[540,4.734]],["name/4837",[59,46.68]],["parent/4837",[540,4.734]],["name/4838",[60,46.68]],["parent/4838",[540,4.734]],["name/4839",[61,46.68]],["parent/4839",[540,4.734]],["name/4840",[62,46.68]],["parent/4840",[540,4.734]],["name/4841",[63,46.68]],["parent/4841",[540,4.734]],["name/4842",[64,46.38]],["parent/4842",[540,4.734]],["name/4843",[65,46.38]],["parent/4843",[540,4.734]],["name/4844",[66,46.68]],["parent/4844",[540,4.734]],["name/4845",[67,40.836]],["parent/4845",[540,4.734]],["name/4846",[68,46.233]],["parent/4846",[540,4.734]],["name/4847",[69,46.233]],["parent/4847",[540,4.734]],["name/4848",[70,46.68]],["parent/4848",[540,4.734]],["name/4849",[71,45.945]],["parent/4849",[540,4.734]],["name/4850",[72,46.529]],["parent/4850",[540,4.734]],["name/4851",[73,46.68]],["parent/4851",[540,4.734]],["name/4852",[74,46.68]],["parent/4852",[540,4.734]],["name/4853",[75,46.68]],["parent/4853",[540,4.734]],["name/4854",[76,46.529]],["parent/4854",[540,4.734]],["name/4855",[77,46.088]],["parent/4855",[540,4.734]],["name/4856",[78,46.088]],["parent/4856",[540,4.734]],["name/4857",[1141,61.759]],["parent/4857",[]],["name/4858",[1142,84.446]],["parent/4858",[1141,6.093]],["name/4859",[1143,84.446]],["parent/4859",[1141,6.093]],["name/4860",[1144,84.446]],["parent/4860",[1141,6.093]],["name/4861",[1145,84.446]],["parent/4861",[1141,6.093]],["name/4862",[1146,84.446]],["parent/4862",[1141,6.093]],["name/4863",[1147,84.446]],["parent/4863",[1141,6.093]],["name/4864",[1148,84.446]],["parent/4864",[1141,6.093]],["name/4865",[674,64.077]],["parent/4865",[1141,6.093]],["name/4866",[1149,84.446]],["parent/4866",[1141,6.093]],["name/4867",[1087,79.338]],["parent/4867",[1141,6.093]],["name/4868",[1086,79.338]],["parent/4868",[1141,6.093]],["name/4869",[1150,84.446]],["parent/4869",[1141,6.093]],["name/4870",[1151,84.446]],["parent/4870",[1141,6.093]],["name/4871",[436,46.529]],["parent/4871",[]],["name/4872",[9,56.931]],["parent/4872",[436,4.591]],["name/4873",[10,39.265]],["parent/4873",[436,4.591]],["name/4874",[233,75.973]],["parent/4874",[436,4.591]],["name/4875",[234,75.973]],["parent/4875",[436,4.591]],["name/4876",[7,60.467]],["parent/4876",[436,4.591]],["name/4877",[262,65.988]],["parent/4877",[436,4.591]],["name/4878",[16,46.529]],["parent/4878",[436,4.591]],["name/4879",[17,43.671]],["parent/4879",[436,4.591]],["name/4880",[462,69.783]],["parent/4880",[436,4.591]],["name/4881",[1152,84.446]],["parent/4881",[436,4.591]],["name/4882",[1136,73.46]],["parent/4882",[436,4.591]],["name/4883",[1153,84.446]],["parent/4883",[436,4.591]],["name/4884",[1154,84.446]],["parent/4884",[436,4.591]],["name/4885",[1155,84.446]],["parent/4885",[436,4.591]],["name/4886",[1011,75.973]],["parent/4886",[436,4.591]],["name/4887",[63,46.68]],["parent/4887",[436,4.591]],["name/4888",[1156,84.446]],["parent/4888",[436,4.591]],["name/4889",[1157,84.446]],["parent/4889",[436,4.591]],["name/4890",[1158,84.446]],["parent/4890",[436,4.591]],["name/4891",[1159,84.446]],["parent/4891",[436,4.591]],["name/4892",[1160,84.446]],["parent/4892",[436,4.591]],["name/4893",[27,44.252]],["parent/4893",[436,4.591]],["name/4894",[46,46.68]],["parent/4894",[436,4.591]],["name/4895",[47,46.68]],["parent/4895",[436,4.591]],["name/4896",[48,46.68]],["parent/4896",[436,4.591]],["name/4897",[49,46.68]],["parent/4897",[436,4.591]],["name/4898",[50,46.68]],["parent/4898",[436,4.591]],["name/4899",[51,46.68]],["parent/4899",[436,4.591]],["name/4900",[52,46.68]],["parent/4900",[436,4.591]],["name/4901",[53,46.68]],["parent/4901",[436,4.591]],["name/4902",[54,46.68]],["parent/4902",[436,4.591]],["name/4903",[55,46.68]],["parent/4903",[436,4.591]],["name/4904",[56,46.68]],["parent/4904",[436,4.591]],["name/4905",[57,46.68]],["parent/4905",[436,4.591]],["name/4906",[58,46.68]],["parent/4906",[436,4.591]],["name/4907",[59,46.68]],["parent/4907",[436,4.591]],["name/4908",[60,46.68]],["parent/4908",[436,4.591]],["name/4909",[61,46.68]],["parent/4909",[436,4.591]],["name/4910",[62,46.68]],["parent/4910",[436,4.591]],["name/4911",[64,46.38]],["parent/4911",[436,4.591]],["name/4912",[65,46.38]],["parent/4912",[436,4.591]],["name/4913",[66,46.68]],["parent/4913",[436,4.591]],["name/4914",[67,40.836]],["parent/4914",[436,4.591]],["name/4915",[68,46.233]],["parent/4915",[436,4.591]],["name/4916",[69,46.233]],["parent/4916",[436,4.591]],["name/4917",[70,46.68]],["parent/4917",[436,4.591]],["name/4918",[71,45.945]],["parent/4918",[436,4.591]],["name/4919",[72,46.529]],["parent/4919",[436,4.591]],["name/4920",[73,46.68]],["parent/4920",[436,4.591]],["name/4921",[74,46.68]],["parent/4921",[436,4.591]],["name/4922",[75,46.68]],["parent/4922",[436,4.591]],["name/4923",[76,46.529]],["parent/4923",[436,4.591]],["name/4924",[77,46.088]],["parent/4924",[436,4.591]],["name/4925",[78,46.088]],["parent/4925",[436,4.591]],["name/4926",[1161,38.978]],["parent/4926",[]],["name/4927",[10,39.265]],["parent/4927",[1161,3.846]],["name/4928",[105,59.879]],["parent/4928",[1161,3.846]],["name/4929",[16,46.529]],["parent/4929",[1161,3.846]],["name/4930",[17,43.671]],["parent/4930",[1161,3.846]],["name/4931",[674,64.077]],["parent/4931",[1161,3.846]],["name/4932",[436,46.529]],["parent/4932",[1161,3.846]],["name/4933",[675,69.783]],["parent/4933",[1161,3.846]],["name/4934",[676,69.783]],["parent/4934",[1161,3.846]],["name/4935",[677,69.783]],["parent/4935",[1161,3.846]],["name/4936",[678,69.783]],["parent/4936",[1161,3.846]],["name/4937",[679,69.783]],["parent/4937",[1161,3.846]],["name/4938",[680,69.783]],["parent/4938",[1161,3.846]],["name/4939",[681,69.783]],["parent/4939",[1161,3.846]],["name/4940",[217,68.352]],["parent/4940",[1161,3.846]],["name/4941",[682,69.783]],["parent/4941",[1161,3.846]],["name/4942",[164,59.323]],["parent/4942",[1161,3.846]],["name/4943",[683,69.783]],["parent/4943",[1161,3.846]],["name/4944",[684,69.783]],["parent/4944",[1161,3.846]],["name/4945",[685,69.783]],["parent/4945",[1161,3.846]],["name/4946",[686,69.783]],["parent/4946",[1161,3.846]],["name/4947",[687,69.783]],["parent/4947",[1161,3.846]],["name/4948",[165,59.879]],["parent/4948",[1161,3.846]],["name/4949",[143,58.797]],["parent/4949",[1161,3.846]],["name/4950",[688,67.1]],["parent/4950",[1161,3.846]],["name/4951",[689,69.783]],["parent/4951",[1161,3.846]],["name/4952",[186,56.514]],["parent/4952",[1161,3.846]],["name/4953",[690,69.783]],["parent/4953",[1161,3.846]],["name/4954",[110,43.121]],["parent/4954",[1161,3.846]],["name/4955",[111,56.931]],["parent/4955",[1161,3.846]],["name/4956",[112,54.657]],["parent/4956",[1161,3.846]],["name/4957",[19,52.528]],["parent/4957",[1161,3.846]],["name/4958",[1,49.281]],["parent/4958",[1161,3.846]],["name/4959",[113,59.879]],["parent/4959",[1162,6.164]],["name/4960",[27,44.252]],["parent/4960",[1162,6.164]],["name/4961",[115,59.879]],["parent/4961",[1162,6.164]],["name/4962",[116,59.879]],["parent/4962",[1162,6.164]],["name/4963",[117,56.931]],["parent/4963",[1162,6.164]],["name/4964",[118,59.879]],["parent/4964",[1162,6.164]],["name/4965",[119,59.879]],["parent/4965",[1162,6.164]],["name/4966",[120,57.366]],["parent/4966",[1162,6.164]],["name/4967",[121,59.879]],["parent/4967",[1162,6.164]],["name/4968",[122,59.879]],["parent/4968",[1162,6.164]],["name/4969",[123,56.514]],["parent/4969",[1162,6.164]],["name/4970",[67,40.836]],["parent/4970",[1162,6.164]],["name/4971",[124,58.297]],["parent/4971",[1162,6.164]],["name/4972",[125,59.879]],["parent/4972",[1161,3.846]],["name/4973",[126,59.879]],["parent/4973",[1161,3.846]],["name/4974",[127,59.323]],["parent/4974",[1161,3.846]],["name/4975",[128,59.879]],["parent/4975",[1161,3.846]],["name/4976",[129,54.001]],["parent/4976",[1161,3.846]],["name/4977",[130,54.001]],["parent/4977",[1161,3.846]],["name/4978",[131,53.688]],["parent/4978",[1161,3.846]],["name/4979",[132,59.879]],["parent/4979",[1161,3.846]],["name/4980",[133,59.879]],["parent/4980",[1161,3.846]],["name/4981",[134,59.879]],["parent/4981",[1161,3.846]],["name/4982",[135,59.879]],["parent/4982",[1161,3.846]],["name/4983",[136,59.323]],["parent/4983",[1161,3.846]],["name/4984",[137,59.879]],["parent/4984",[1161,3.846]],["name/4985",[138,59.879]],["parent/4985",[1161,3.846]],["name/4986",[139,59.879]],["parent/4986",[1161,3.846]],["name/4987",[140,59.879]],["parent/4987",[1161,3.846]],["name/4988",[141,59.879]],["parent/4988",[1161,3.846]],["name/4989",[142,59.879]],["parent/4989",[1161,3.846]],["name/4990",[144,59.323]],["parent/4990",[1161,3.846]],["name/4991",[145,59.323]],["parent/4991",[1161,3.846]],["name/4992",[146,59.323]],["parent/4992",[1161,3.846]],["name/4993",[147,59.323]],["parent/4993",[1161,3.846]],["name/4994",[148,59.879]],["parent/4994",[1161,3.846]],["name/4995",[149,59.879]],["parent/4995",[1161,3.846]],["name/4996",[150,59.879]],["parent/4996",[1161,3.846]],["name/4997",[151,59.879]],["parent/4997",[1161,3.846]],["name/4998",[152,59.879]],["parent/4998",[1161,3.846]],["name/4999",[153,59.879]],["parent/4999",[1161,3.846]],["name/5000",[154,59.879]],["parent/5000",[1161,3.846]],["name/5001",[155,59.879]],["parent/5001",[1161,3.846]],["name/5002",[156,57.82]],["parent/5002",[1161,3.846]],["name/5003",[157,59.879]],["parent/5003",[1161,3.846]],["name/5004",[158,59.879]],["parent/5004",[1161,3.846]],["name/5005",[159,59.879]],["parent/5005",[1161,3.846]],["name/5006",[160,59.879]],["parent/5006",[1161,3.846]],["name/5007",[161,59.879]],["parent/5007",[1161,3.846]],["name/5008",[162,56.114]],["parent/5008",[1161,3.846]],["name/5009",[163,59.323]],["parent/5009",[1161,3.846]],["name/5010",[166,59.879]],["parent/5010",[1161,3.846]],["name/5011",[167,59.879]],["parent/5011",[1161,3.846]],["name/5012",[168,59.879]],["parent/5012",[1161,3.846]],["name/5013",[169,59.879]],["parent/5013",[1161,3.846]],["name/5014",[170,56.931]],["parent/5014",[1161,3.846]],["name/5015",[171,59.323]],["parent/5015",[1161,3.846]],["name/5016",[172,59.323]],["parent/5016",[1161,3.846]],["name/5017",[28,50.106]],["parent/5017",[1161,3.846]],["name/5018",[24,49.085]],["parent/5018",[1161,3.846]],["name/5019",[43,52.257]],["parent/5019",[1161,3.846]],["name/5020",[44,52.257]],["parent/5020",[1161,3.846]],["name/5021",[173,53.688]],["parent/5021",[1161,3.846]],["name/5022",[174,58.797]],["parent/5022",[1161,3.846]],["name/5023",[175,59.323]],["parent/5023",[1161,3.846]],["name/5024",[176,59.323]],["parent/5024",[1161,3.846]],["name/5025",[177,59.323]],["parent/5025",[1161,3.846]],["name/5026",[178,59.323]],["parent/5026",[1161,3.846]],["name/5027",[179,59.323]],["parent/5027",[1161,3.846]],["name/5028",[180,59.323]],["parent/5028",[1161,3.846]],["name/5029",[181,59.323]],["parent/5029",[1161,3.846]],["name/5030",[182,59.323]],["parent/5030",[1161,3.846]],["name/5031",[108,59.323]],["parent/5031",[1161,3.846]],["name/5032",[183,57.82]],["parent/5032",[1161,3.846]],["name/5033",[184,59.323]],["parent/5033",[1161,3.846]],["name/5034",[109,56.114]],["parent/5034",[1161,3.846]],["name/5035",[185,59.323]],["parent/5035",[1161,3.846]],["name/5036",[187,58.797]],["parent/5036",[1161,3.846]],["name/5037",[188,59.323]],["parent/5037",[1161,3.846]],["name/5038",[189,59.323]],["parent/5038",[1161,3.846]],["name/5039",[190,59.323]],["parent/5039",[1161,3.846]],["name/5040",[191,59.323]],["parent/5040",[1161,3.846]],["name/5041",[192,59.323]],["parent/5041",[1161,3.846]],["name/5042",[36,53.091]],["parent/5042",[1161,3.846]],["name/5043",[34,53.091]],["parent/5043",[1161,3.846]],["name/5044",[35,53.091]],["parent/5044",[1161,3.846]],["name/5045",[46,46.68]],["parent/5045",[1161,3.846]],["name/5046",[47,46.68]],["parent/5046",[1161,3.846]],["name/5047",[48,46.68]],["parent/5047",[1161,3.846]],["name/5048",[49,46.68]],["parent/5048",[1161,3.846]],["name/5049",[50,46.68]],["parent/5049",[1161,3.846]],["name/5050",[51,46.68]],["parent/5050",[1161,3.846]],["name/5051",[52,46.68]],["parent/5051",[1161,3.846]],["name/5052",[53,46.68]],["parent/5052",[1161,3.846]],["name/5053",[27,44.252]],["parent/5053",[1161,3.846]],["name/5054",[54,46.68]],["parent/5054",[1161,3.846]],["name/5055",[55,46.68]],["parent/5055",[1161,3.846]],["name/5056",[56,46.68]],["parent/5056",[1161,3.846]],["name/5057",[57,46.68]],["parent/5057",[1161,3.846]],["name/5058",[58,46.68]],["parent/5058",[1161,3.846]],["name/5059",[59,46.68]],["parent/5059",[1161,3.846]],["name/5060",[60,46.68]],["parent/5060",[1161,3.846]],["name/5061",[61,46.68]],["parent/5061",[1161,3.846]],["name/5062",[62,46.68]],["parent/5062",[1161,3.846]],["name/5063",[63,46.68]],["parent/5063",[1161,3.846]],["name/5064",[64,46.38]],["parent/5064",[1161,3.846]],["name/5065",[65,46.38]],["parent/5065",[1161,3.846]],["name/5066",[66,46.68]],["parent/5066",[1161,3.846]],["name/5067",[67,40.836]],["parent/5067",[1161,3.846]],["name/5068",[68,46.233]],["parent/5068",[1161,3.846]],["name/5069",[69,46.233]],["parent/5069",[1161,3.846]],["name/5070",[70,46.68]],["parent/5070",[1161,3.846]],["name/5071",[71,45.945]],["parent/5071",[1161,3.846]],["name/5072",[72,46.529]],["parent/5072",[1161,3.846]],["name/5073",[73,46.68]],["parent/5073",[1161,3.846]],["name/5074",[74,46.68]],["parent/5074",[1161,3.846]],["name/5075",[75,46.68]],["parent/5075",[1161,3.846]],["name/5076",[76,46.529]],["parent/5076",[1161,3.846]],["name/5077",[77,46.088]],["parent/5077",[1161,3.846]],["name/5078",[78,46.088]],["parent/5078",[1161,3.846]],["name/5079",[500,45.665]],["parent/5079",[]],["name/5080",[10,39.265]],["parent/5080",[500,4.505]],["name/5081",[16,46.529]],["parent/5081",[500,4.505]],["name/5082",[332,69.783]],["parent/5082",[500,4.505]],["name/5083",[11,57.82]],["parent/5083",[500,4.505]],["name/5084",[14,53.688]],["parent/5084",[500,4.505]],["name/5085",[15,59.323]],["parent/5085",[500,4.505]],["name/5086",[17,43.671]],["parent/5086",[500,4.505]],["name/5087",[1163,84.446]],["parent/5087",[500,4.505]],["name/5088",[1164,84.446]],["parent/5088",[500,4.505]],["name/5089",[672,79.338]],["parent/5089",[500,4.505]],["name/5090",[673,79.338]],["parent/5090",[500,4.505]],["name/5091",[1165,84.446]],["parent/5091",[500,4.505]],["name/5092",[1166,79.338]],["parent/5092",[500,4.505]],["name/5093",[1167,84.446]],["parent/5093",[500,4.505]],["name/5094",[27,44.252]],["parent/5094",[500,4.505]],["name/5095",[24,49.085]],["parent/5095",[500,4.505]],["name/5096",[28,50.106]],["parent/5096",[500,4.505]],["name/5097",[29,60.467]],["parent/5097",[500,4.505]],["name/5098",[30,60.467]],["parent/5098",[500,4.505]],["name/5099",[25,60.467]],["parent/5099",[500,4.505]],["name/5100",[31,60.467]],["parent/5100",[500,4.505]],["name/5101",[32,60.467]],["parent/5101",[500,4.505]],["name/5102",[33,60.467]],["parent/5102",[500,4.505]],["name/5103",[34,53.091]],["parent/5103",[500,4.505]],["name/5104",[35,53.091]],["parent/5104",[500,4.505]],["name/5105",[36,53.091]],["parent/5105",[500,4.505]],["name/5106",[37,55.729]],["parent/5106",[500,4.505]],["name/5107",[38,55.359]],["parent/5107",[500,4.505]],["name/5108",[39,60.467]],["parent/5108",[500,4.505]],["name/5109",[40,59.323]],["parent/5109",[500,4.505]],["name/5110",[41,60.467]],["parent/5110",[500,4.505]],["name/5111",[42,60.467]],["parent/5111",[500,4.505]],["name/5112",[43,52.257]],["parent/5112",[500,4.505]],["name/5113",[44,52.257]],["parent/5113",[500,4.505]],["name/5114",[45,60.467]],["parent/5114",[500,4.505]],["name/5115",[46,46.68]],["parent/5115",[500,4.505]],["name/5116",[47,46.68]],["parent/5116",[500,4.505]],["name/5117",[48,46.68]],["parent/5117",[500,4.505]],["name/5118",[49,46.68]],["parent/5118",[500,4.505]],["name/5119",[50,46.68]],["parent/5119",[500,4.505]],["name/5120",[51,46.68]],["parent/5120",[500,4.505]],["name/5121",[52,46.68]],["parent/5121",[500,4.505]],["name/5122",[53,46.68]],["parent/5122",[500,4.505]],["name/5123",[54,46.68]],["parent/5123",[500,4.505]],["name/5124",[55,46.68]],["parent/5124",[500,4.505]],["name/5125",[56,46.68]],["parent/5125",[500,4.505]],["name/5126",[57,46.68]],["parent/5126",[500,4.505]],["name/5127",[58,46.68]],["parent/5127",[500,4.505]],["name/5128",[59,46.68]],["parent/5128",[500,4.505]],["name/5129",[60,46.68]],["parent/5129",[500,4.505]],["name/5130",[61,46.68]],["parent/5130",[500,4.505]],["name/5131",[62,46.68]],["parent/5131",[500,4.505]],["name/5132",[63,46.68]],["parent/5132",[500,4.505]],["name/5133",[64,46.38]],["parent/5133",[500,4.505]],["name/5134",[65,46.38]],["parent/5134",[500,4.505]],["name/5135",[66,46.68]],["parent/5135",[500,4.505]],["name/5136",[67,40.836]],["parent/5136",[500,4.505]],["name/5137",[68,46.233]],["parent/5137",[500,4.505]],["name/5138",[69,46.233]],["parent/5138",[500,4.505]],["name/5139",[70,46.68]],["parent/5139",[500,4.505]],["name/5140",[71,45.945]],["parent/5140",[500,4.505]],["name/5141",[72,46.529]],["parent/5141",[500,4.505]],["name/5142",[73,46.68]],["parent/5142",[500,4.505]],["name/5143",[74,46.68]],["parent/5143",[500,4.505]],["name/5144",[75,46.68]],["parent/5144",[500,4.505]],["name/5145",[76,46.529]],["parent/5145",[500,4.505]],["name/5146",[77,46.088]],["parent/5146",[500,4.505]],["name/5147",[78,46.088]],["parent/5147",[500,4.505]],["name/5148",[297,45.665]],["parent/5148",[]],["name/5149",[10,39.265]],["parent/5149",[297,4.505]],["name/5150",[18,57.366]],["parent/5150",[297,4.505]],["name/5151",[1,49.281]],["parent/5151",[297,4.505]],["name/5152",[1168,84.446]],["parent/5152",[1169,6.62]],["name/5153",[1170,84.446]],["parent/5153",[1169,6.62]],["name/5154",[1171,84.446]],["parent/5154",[1169,6.62]],["name/5155",[1172,84.446]],["parent/5155",[1169,6.62]],["name/5156",[1173,84.446]],["parent/5156",[1169,6.62]],["name/5157",[1174,84.446]],["parent/5157",[1169,6.62]],["name/5158",[1175,84.446]],["parent/5158",[1169,6.62]],["name/5159",[16,46.529]],["parent/5159",[297,4.505]],["name/5160",[11,57.82]],["parent/5160",[297,4.505]],["name/5161",[14,53.688]],["parent/5161",[297,4.505]],["name/5162",[15,59.323]],["parent/5162",[297,4.505]],["name/5163",[17,43.671]],["parent/5163",[297,4.505]],["name/5164",[19,52.528]],["parent/5164",[297,4.505]],["name/5165",[1,49.281]],["parent/5165",[297,4.505]],["name/5166",[22,73.46]],["parent/5166",[1169,6.62]],["name/5167",[37,55.729]],["parent/5167",[297,4.505]],["name/5168",[1176,84.446]],["parent/5168",[297,4.505]],["name/5169",[27,44.252]],["parent/5169",[297,4.505]],["name/5170",[24,49.085]],["parent/5170",[297,4.505]],["name/5171",[28,50.106]],["parent/5171",[297,4.505]],["name/5172",[29,60.467]],["parent/5172",[297,4.505]],["name/5173",[30,60.467]],["parent/5173",[297,4.505]],["name/5174",[25,60.467]],["parent/5174",[297,4.505]],["name/5175",[31,60.467]],["parent/5175",[297,4.505]],["name/5176",[32,60.467]],["parent/5176",[297,4.505]],["name/5177",[33,60.467]],["parent/5177",[297,4.505]],["name/5178",[34,53.091]],["parent/5178",[297,4.505]],["name/5179",[35,53.091]],["parent/5179",[297,4.505]],["name/5180",[36,53.091]],["parent/5180",[297,4.505]],["name/5181",[38,55.359]],["parent/5181",[297,4.505]],["name/5182",[39,60.467]],["parent/5182",[297,4.505]],["name/5183",[40,59.323]],["parent/5183",[297,4.505]],["name/5184",[41,60.467]],["parent/5184",[297,4.505]],["name/5185",[42,60.467]],["parent/5185",[297,4.505]],["name/5186",[43,52.257]],["parent/5186",[297,4.505]],["name/5187",[44,52.257]],["parent/5187",[297,4.505]],["name/5188",[45,60.467]],["parent/5188",[297,4.505]],["name/5189",[46,46.68]],["parent/5189",[297,4.505]],["name/5190",[47,46.68]],["parent/5190",[297,4.505]],["name/5191",[48,46.68]],["parent/5191",[297,4.505]],["name/5192",[49,46.68]],["parent/5192",[297,4.505]],["name/5193",[50,46.68]],["parent/5193",[297,4.505]],["name/5194",[51,46.68]],["parent/5194",[297,4.505]],["name/5195",[52,46.68]],["parent/5195",[297,4.505]],["name/5196",[53,46.68]],["parent/5196",[297,4.505]],["name/5197",[54,46.68]],["parent/5197",[297,4.505]],["name/5198",[55,46.68]],["parent/5198",[297,4.505]],["name/5199",[56,46.68]],["parent/5199",[297,4.505]],["name/5200",[57,46.68]],["parent/5200",[297,4.505]],["name/5201",[58,46.68]],["parent/5201",[297,4.505]],["name/5202",[59,46.68]],["parent/5202",[297,4.505]],["name/5203",[60,46.68]],["parent/5203",[297,4.505]],["name/5204",[61,46.68]],["parent/5204",[297,4.505]],["name/5205",[62,46.68]],["parent/5205",[297,4.505]],["name/5206",[63,46.68]],["parent/5206",[297,4.505]],["name/5207",[64,46.38]],["parent/5207",[297,4.505]],["name/5208",[65,46.38]],["parent/5208",[297,4.505]],["name/5209",[66,46.68]],["parent/5209",[297,4.505]],["name/5210",[67,40.836]],["parent/5210",[297,4.505]],["name/5211",[68,46.233]],["parent/5211",[297,4.505]],["name/5212",[69,46.233]],["parent/5212",[297,4.505]],["name/5213",[70,46.68]],["parent/5213",[297,4.505]],["name/5214",[71,45.945]],["parent/5214",[297,4.505]],["name/5215",[72,46.529]],["parent/5215",[297,4.505]],["name/5216",[73,46.68]],["parent/5216",[297,4.505]],["name/5217",[74,46.68]],["parent/5217",[297,4.505]],["name/5218",[75,46.68]],["parent/5218",[297,4.505]],["name/5219",[76,46.529]],["parent/5219",[297,4.505]],["name/5220",[77,46.088]],["parent/5220",[297,4.505]],["name/5221",[78,46.088]],["parent/5221",[297,4.505]],["name/5222",[1177,75.973]],["parent/5222",[]],["name/5223",[1178,68.352]],["parent/5223",[]],["name/5224",[1178,68.352]],["parent/5224",[1178,6.744]],["name/5225",[1177,75.973]],["parent/5225",[1178,6.744]],["name/5226",[1179,79.338]],["parent/5226",[1178,6.744]],["name/5227",[473,75.973]],["parent/5227",[1178,6.744]],["name/5228",[532,47.811]],["parent/5228",[]],["name/5229",[10,39.265]],["parent/5229",[532,4.717]],["name/5230",[17,43.671]],["parent/5230",[532,4.717]],["name/5231",[474,51.244]],["parent/5231",[532,4.717]],["name/5232",[967,79.338]],["parent/5232",[532,4.717]],["name/5233",[7,60.467]],["parent/5233",[532,4.717]],["name/5234",[262,65.988]],["parent/5234",[532,4.717]],["name/5235",[1180,84.446]],["parent/5235",[532,4.717]],["name/5236",[1181,84.446]],["parent/5236",[532,4.717]],["name/5237",[1,49.281]],["parent/5237",[532,4.717]],["name/5238",[229,68.352]],["parent/5238",[1182,7.828]],["name/5239",[244,68.352]],["parent/5239",[1182,7.828]],["name/5240",[473,75.973]],["parent/5240",[532,4.717]],["name/5241",[1177,75.973]],["parent/5241",[532,4.717]],["name/5242",[1179,79.338]],["parent/5242",[532,4.717]],["name/5243",[1178,68.352]],["parent/5243",[532,4.717]],["name/5244",[1183,84.446]],["parent/5244",[532,4.717]],["name/5245",[1184,84.446]],["parent/5245",[532,4.717]],["name/5246",[1185,84.446]],["parent/5246",[532,4.717]],["name/5247",[1186,84.446]],["parent/5247",[532,4.717]],["name/5248",[1187,79.338]],["parent/5248",[532,4.717]],["name/5249",[275,75.973]],["parent/5249",[532,4.717]],["name/5250",[276,75.973]],["parent/5250",[532,4.717]],["name/5251",[277,73.46]],["parent/5251",[532,4.717]],["name/5252",[278,75.973]],["parent/5252",[532,4.717]],["name/5253",[279,75.973]],["parent/5253",[532,4.717]],["name/5254",[280,75.973]],["parent/5254",[532,4.717]],["name/5255",[281,75.973]],["parent/5255",[532,4.717]],["name/5256",[282,75.973]],["parent/5256",[532,4.717]],["name/5257",[283,75.973]],["parent/5257",[532,4.717]],["name/5258",[285,75.973]],["parent/5258",[532,4.717]],["name/5259",[284,75.973]],["parent/5259",[532,4.717]],["name/5260",[286,73.46]],["parent/5260",[532,4.717]],["name/5261",[123,56.514]],["parent/5261",[532,4.717]],["name/5262",[1188,84.446]],["parent/5262",[532,4.717]],["name/5263",[1189,84.446]],["parent/5263",[532,4.717]],["name/5264",[274,73.46]],["parent/5264",[532,4.717]],["name/5265",[287,75.973]],["parent/5265",[532,4.717]],["name/5266",[288,75.973]],["parent/5266",[532,4.717]],["name/5267",[289,75.973]],["parent/5267",[532,4.717]],["name/5268",[290,75.973]],["parent/5268",[532,4.717]],["name/5269",[291,75.973]],["parent/5269",[532,4.717]],["name/5270",[292,75.973]],["parent/5270",[532,4.717]],["name/5271",[293,75.973]],["parent/5271",[532,4.717]],["name/5272",[294,75.973]],["parent/5272",[532,4.717]],["name/5273",[295,75.973]],["parent/5273",[532,4.717]],["name/5274",[298,75.973]],["parent/5274",[532,4.717]],["name/5275",[296,75.973]],["parent/5275",[532,4.717]],["name/5276",[297,45.665]],["parent/5276",[532,4.717]],["name/5277",[299,75.973]],["parent/5277",[532,4.717]],["name/5278",[300,75.973]],["parent/5278",[532,4.717]],["name/5279",[301,75.973]],["parent/5279",[532,4.717]],["name/5280",[302,75.973]],["parent/5280",[532,4.717]],["name/5281",[303,73.46]],["parent/5281",[532,4.717]],["name/5282",[304,73.46]],["parent/5282",[532,4.717]],["name/5283",[68,46.233]],["parent/5283",[532,4.717]],["name/5284",[69,46.233]],["parent/5284",[532,4.717]],["name/5285",[67,40.836]],["parent/5285",[532,4.717]],["name/5286",[305,75.973]],["parent/5286",[532,4.717]],["name/5287",[1190,71.453]],["parent/5287",[]],["name/5288",[1191,84.446]],["parent/5288",[1190,7.05]],["name/5289",[624,79.338]],["parent/5289",[1190,7.05]],["name/5290",[625,79.338]],["parent/5290",[1190,7.05]],["name/5291",[626,79.338]],["parent/5291",[1190,7.05]],["name/5292",[1192,67.1]],["parent/5292",[]],["name/5293",[1193,84.446]],["parent/5293",[1192,6.62]],["name/5294",[476,41.451]],["parent/5294",[1192,6.62]],["name/5295",[1194,79.338]],["parent/5295",[1192,6.62]],["name/5296",[433,69.783]],["parent/5296",[1192,6.62]],["name/5297",[1195,84.446]],["parent/5297",[1192,6.62]],["name/5298",[1196,84.446]],["parent/5298",[1192,6.62]],["name/5299",[1197,84.446]],["parent/5299",[1192,6.62]],["name/5300",[1198,62.474]],["parent/5300",[]],["name/5301",[437,47.983]],["parent/5301",[1198,6.164]],["name/5302",[1199,84.446]],["parent/5302",[1198,6.164]],["name/5303",[1200,84.446]],["parent/5303",[1198,6.164]],["name/5304",[1201,84.446]],["parent/5304",[1198,6.164]],["name/5305",[1202,84.446]],["parent/5305",[1198,6.164]],["name/5306",[1203,84.446]],["parent/5306",[1198,6.164]],["name/5307",[229,68.352]],["parent/5307",[1198,6.164]],["name/5308",[7,60.467]],["parent/5308",[1198,6.164]],["name/5309",[244,68.352]],["parent/5309",[1198,6.164]],["name/5310",[1204,84.446]],["parent/5310",[1198,6.164]],["name/5311",[1205,84.446]],["parent/5311",[1198,6.164]],["name/5312",[1194,79.338]],["parent/5312",[1198,6.164]],["name/5313",[510,50.324]],["parent/5313",[]],["name/5314",[10,39.265]],["parent/5314",[510,4.965]],["name/5315",[16,46.529]],["parent/5315",[510,4.965]],["name/5316",[17,43.671]],["parent/5316",[510,4.965]],["name/5317",[462,69.783]],["parent/5317",[510,4.965]],["name/5318",[65,46.38]],["parent/5318",[510,4.965]],["name/5319",[1206,84.446]],["parent/5319",[510,4.965]],["name/5320",[1207,84.446]],["parent/5320",[510,4.965]],["name/5321",[11,57.82]],["parent/5321",[510,4.965]],["name/5322",[27,44.252]],["parent/5322",[510,4.965]],["name/5323",[46,46.68]],["parent/5323",[510,4.965]],["name/5324",[47,46.68]],["parent/5324",[510,4.965]],["name/5325",[48,46.68]],["parent/5325",[510,4.965]],["name/5326",[49,46.68]],["parent/5326",[510,4.965]],["name/5327",[50,46.68]],["parent/5327",[510,4.965]],["name/5328",[51,46.68]],["parent/5328",[510,4.965]],["name/5329",[52,46.68]],["parent/5329",[510,4.965]],["name/5330",[53,46.68]],["parent/5330",[510,4.965]],["name/5331",[54,46.68]],["parent/5331",[510,4.965]],["name/5332",[55,46.68]],["parent/5332",[510,4.965]],["name/5333",[56,46.68]],["parent/5333",[510,4.965]],["name/5334",[57,46.68]],["parent/5334",[510,4.965]],["name/5335",[58,46.68]],["parent/5335",[510,4.965]],["name/5336",[59,46.68]],["parent/5336",[510,4.965]],["name/5337",[60,46.68]],["parent/5337",[510,4.965]],["name/5338",[61,46.68]],["parent/5338",[510,4.965]],["name/5339",[62,46.68]],["parent/5339",[510,4.965]],["name/5340",[63,46.68]],["parent/5340",[510,4.965]],["name/5341",[64,46.38]],["parent/5341",[510,4.965]],["name/5342",[66,46.68]],["parent/5342",[510,4.965]],["name/5343",[67,40.836]],["parent/5343",[510,4.965]],["name/5344",[68,46.233]],["parent/5344",[510,4.965]],["name/5345",[69,46.233]],["parent/5345",[510,4.965]],["name/5346",[70,46.68]],["parent/5346",[510,4.965]],["name/5347",[71,45.945]],["parent/5347",[510,4.965]],["name/5348",[72,46.529]],["parent/5348",[510,4.965]],["name/5349",[73,46.68]],["parent/5349",[510,4.965]],["name/5350",[74,46.68]],["parent/5350",[510,4.965]],["name/5351",[75,46.68]],["parent/5351",[510,4.965]],["name/5352",[76,46.529]],["parent/5352",[510,4.965]],["name/5353",[77,46.088]],["parent/5353",[510,4.965]],["name/5354",[78,46.088]],["parent/5354",[510,4.965]],["name/5355",[1208,75.973]],["parent/5355",[]],["name/5356",[1209,84.446]],["parent/5356",[1208,7.496]],["name/5357",[1210,84.446]],["parent/5357",[1208,7.496]],["name/5358",[1211,59.879]],["parent/5358",[]],["name/5359",[1212,79.338]],["parent/5359",[1211,5.908]],["name/5360",[674,64.077]],["parent/5360",[1211,5.908]],["name/5361",[740,75.973]],["parent/5361",[1211,5.908]],["name/5362",[741,71.453]],["parent/5362",[1211,5.908]],["name/5363",[742,71.453]],["parent/5363",[1211,5.908]],["name/5364",[124,58.297]],["parent/5364",[1211,5.908]],["name/5365",[120,57.366]],["parent/5365",[1211,5.908]],["name/5366",[743,75.973]],["parent/5366",[1211,5.908]],["name/5367",[360,46.233]],["parent/5367",[1211,5.908]],["name/5368",[111,56.931]],["parent/5368",[1211,5.908]],["name/5369",[409,63.244]],["parent/5369",[1211,5.908]],["name/5370",[0,58.797]],["parent/5370",[1211,5.908]],["name/5371",[408,64.077]],["parent/5371",[1211,5.908]],["name/5372",[18,57.366]],["parent/5372",[1211,5.908]],["name/5373",[744,69.783]],["parent/5373",[1211,5.908]],["name/5374",[745,69.783]],["parent/5374",[1211,5.908]],["name/5375",[494,38.164]],["parent/5375",[]],["name/5376",[10,39.265]],["parent/5376",[494,3.765]],["name/5377",[105,59.879]],["parent/5377",[494,3.765]],["name/5378",[16,46.529]],["parent/5378",[494,3.765]],["name/5379",[17,43.671]],["parent/5379",[494,3.765]],["name/5380",[786,79.338]],["parent/5380",[494,3.765]],["name/5381",[787,79.338]],["parent/5381",[494,3.765]],["name/5382",[170,56.931]],["parent/5382",[494,3.765]],["name/5383",[788,79.338]],["parent/5383",[494,3.765]],["name/5384",[150,59.879]],["parent/5384",[494,3.765]],["name/5385",[686,69.783]],["parent/5385",[494,3.765]],["name/5386",[789,79.338]],["parent/5386",[494,3.765]],["name/5387",[131,53.688]],["parent/5387",[494,3.765]],["name/5388",[790,79.338]],["parent/5388",[494,3.765]],["name/5389",[158,59.879]],["parent/5389",[494,3.765]],["name/5390",[138,59.879]],["parent/5390",[494,3.765]],["name/5391",[109,56.114]],["parent/5391",[494,3.765]],["name/5392",[684,69.783]],["parent/5392",[494,3.765]],["name/5393",[791,79.338]],["parent/5393",[494,3.765]],["name/5394",[165,59.879]],["parent/5394",[494,3.765]],["name/5395",[779,73.46]],["parent/5395",[494,3.765]],["name/5396",[737,69.783]],["parent/5396",[494,3.765]],["name/5397",[792,79.338]],["parent/5397",[494,3.765]],["name/5398",[793,79.338]],["parent/5398",[494,3.765]],["name/5399",[27,44.252]],["parent/5399",[494,3.765]],["name/5400",[674,64.077]],["parent/5400",[494,3.765]],["name/5401",[436,46.529]],["parent/5401",[494,3.765]],["name/5402",[675,69.783]],["parent/5402",[494,3.765]],["name/5403",[676,69.783]],["parent/5403",[494,3.765]],["name/5404",[677,69.783]],["parent/5404",[494,3.765]],["name/5405",[678,69.783]],["parent/5405",[494,3.765]],["name/5406",[679,69.783]],["parent/5406",[494,3.765]],["name/5407",[680,69.783]],["parent/5407",[494,3.765]],["name/5408",[681,69.783]],["parent/5408",[494,3.765]],["name/5409",[217,68.352]],["parent/5409",[494,3.765]],["name/5410",[682,69.783]],["parent/5410",[494,3.765]],["name/5411",[164,59.323]],["parent/5411",[494,3.765]],["name/5412",[683,69.783]],["parent/5412",[494,3.765]],["name/5413",[685,69.783]],["parent/5413",[494,3.765]],["name/5414",[687,69.783]],["parent/5414",[494,3.765]],["name/5415",[143,58.797]],["parent/5415",[494,3.765]],["name/5416",[688,67.1]],["parent/5416",[494,3.765]],["name/5417",[689,69.783]],["parent/5417",[494,3.765]],["name/5418",[186,56.514]],["parent/5418",[494,3.765]],["name/5419",[690,69.783]],["parent/5419",[494,3.765]],["name/5420",[110,43.121]],["parent/5420",[494,3.765]],["name/5421",[111,56.931]],["parent/5421",[494,3.765]],["name/5422",[112,54.657]],["parent/5422",[494,3.765]],["name/5423",[19,52.528]],["parent/5423",[494,3.765]],["name/5424",[1,49.281]],["parent/5424",[494,3.765]],["name/5425",[113,59.879]],["parent/5425",[1213,6.164]],["name/5426",[27,44.252]],["parent/5426",[1213,6.164]],["name/5427",[115,59.879]],["parent/5427",[1213,6.164]],["name/5428",[116,59.879]],["parent/5428",[1213,6.164]],["name/5429",[117,56.931]],["parent/5429",[1213,6.164]],["name/5430",[118,59.879]],["parent/5430",[1213,6.164]],["name/5431",[119,59.879]],["parent/5431",[1213,6.164]],["name/5432",[120,57.366]],["parent/5432",[1213,6.164]],["name/5433",[121,59.879]],["parent/5433",[1213,6.164]],["name/5434",[122,59.879]],["parent/5434",[1213,6.164]],["name/5435",[123,56.514]],["parent/5435",[1213,6.164]],["name/5436",[67,40.836]],["parent/5436",[1213,6.164]],["name/5437",[124,58.297]],["parent/5437",[1213,6.164]],["name/5438",[125,59.879]],["parent/5438",[494,3.765]],["name/5439",[126,59.879]],["parent/5439",[494,3.765]],["name/5440",[127,59.323]],["parent/5440",[494,3.765]],["name/5441",[128,59.879]],["parent/5441",[494,3.765]],["name/5442",[129,54.001]],["parent/5442",[494,3.765]],["name/5443",[130,54.001]],["parent/5443",[494,3.765]],["name/5444",[132,59.879]],["parent/5444",[494,3.765]],["name/5445",[133,59.879]],["parent/5445",[494,3.765]],["name/5446",[134,59.879]],["parent/5446",[494,3.765]],["name/5447",[135,59.879]],["parent/5447",[494,3.765]],["name/5448",[136,59.323]],["parent/5448",[494,3.765]],["name/5449",[137,59.879]],["parent/5449",[494,3.765]],["name/5450",[139,59.879]],["parent/5450",[494,3.765]],["name/5451",[140,59.879]],["parent/5451",[494,3.765]],["name/5452",[141,59.879]],["parent/5452",[494,3.765]],["name/5453",[142,59.879]],["parent/5453",[494,3.765]],["name/5454",[144,59.323]],["parent/5454",[494,3.765]],["name/5455",[145,59.323]],["parent/5455",[494,3.765]],["name/5456",[146,59.323]],["parent/5456",[494,3.765]],["name/5457",[147,59.323]],["parent/5457",[494,3.765]],["name/5458",[148,59.879]],["parent/5458",[494,3.765]],["name/5459",[149,59.879]],["parent/5459",[494,3.765]],["name/5460",[151,59.879]],["parent/5460",[494,3.765]],["name/5461",[152,59.879]],["parent/5461",[494,3.765]],["name/5462",[153,59.879]],["parent/5462",[494,3.765]],["name/5463",[154,59.879]],["parent/5463",[494,3.765]],["name/5464",[155,59.879]],["parent/5464",[494,3.765]],["name/5465",[156,57.82]],["parent/5465",[494,3.765]],["name/5466",[157,59.879]],["parent/5466",[494,3.765]],["name/5467",[159,59.879]],["parent/5467",[494,3.765]],["name/5468",[160,59.879]],["parent/5468",[494,3.765]],["name/5469",[161,59.879]],["parent/5469",[494,3.765]],["name/5470",[162,56.114]],["parent/5470",[494,3.765]],["name/5471",[163,59.323]],["parent/5471",[494,3.765]],["name/5472",[166,59.879]],["parent/5472",[494,3.765]],["name/5473",[167,59.879]],["parent/5473",[494,3.765]],["name/5474",[168,59.879]],["parent/5474",[494,3.765]],["name/5475",[169,59.879]],["parent/5475",[494,3.765]],["name/5476",[171,59.323]],["parent/5476",[494,3.765]],["name/5477",[172,59.323]],["parent/5477",[494,3.765]],["name/5478",[28,50.106]],["parent/5478",[494,3.765]],["name/5479",[24,49.085]],["parent/5479",[494,3.765]],["name/5480",[43,52.257]],["parent/5480",[494,3.765]],["name/5481",[44,52.257]],["parent/5481",[494,3.765]],["name/5482",[173,53.688]],["parent/5482",[494,3.765]],["name/5483",[174,58.797]],["parent/5483",[494,3.765]],["name/5484",[175,59.323]],["parent/5484",[494,3.765]],["name/5485",[176,59.323]],["parent/5485",[494,3.765]],["name/5486",[177,59.323]],["parent/5486",[494,3.765]],["name/5487",[178,59.323]],["parent/5487",[494,3.765]],["name/5488",[179,59.323]],["parent/5488",[494,3.765]],["name/5489",[180,59.323]],["parent/5489",[494,3.765]],["name/5490",[181,59.323]],["parent/5490",[494,3.765]],["name/5491",[182,59.323]],["parent/5491",[494,3.765]],["name/5492",[108,59.323]],["parent/5492",[494,3.765]],["name/5493",[183,57.82]],["parent/5493",[494,3.765]],["name/5494",[184,59.323]],["parent/5494",[494,3.765]],["name/5495",[185,59.323]],["parent/5495",[494,3.765]],["name/5496",[187,58.797]],["parent/5496",[494,3.765]],["name/5497",[188,59.323]],["parent/5497",[494,3.765]],["name/5498",[189,59.323]],["parent/5498",[494,3.765]],["name/5499",[190,59.323]],["parent/5499",[494,3.765]],["name/5500",[191,59.323]],["parent/5500",[494,3.765]],["name/5501",[192,59.323]],["parent/5501",[494,3.765]],["name/5502",[36,53.091]],["parent/5502",[494,3.765]],["name/5503",[34,53.091]],["parent/5503",[494,3.765]],["name/5504",[35,53.091]],["parent/5504",[494,3.765]],["name/5505",[46,46.68]],["parent/5505",[494,3.765]],["name/5506",[47,46.68]],["parent/5506",[494,3.765]],["name/5507",[48,46.68]],["parent/5507",[494,3.765]],["name/5508",[49,46.68]],["parent/5508",[494,3.765]],["name/5509",[50,46.68]],["parent/5509",[494,3.765]],["name/5510",[51,46.68]],["parent/5510",[494,3.765]],["name/5511",[52,46.68]],["parent/5511",[494,3.765]],["name/5512",[53,46.68]],["parent/5512",[494,3.765]],["name/5513",[54,46.68]],["parent/5513",[494,3.765]],["name/5514",[55,46.68]],["parent/5514",[494,3.765]],["name/5515",[56,46.68]],["parent/5515",[494,3.765]],["name/5516",[57,46.68]],["parent/5516",[494,3.765]],["name/5517",[58,46.68]],["parent/5517",[494,3.765]],["name/5518",[59,46.68]],["parent/5518",[494,3.765]],["name/5519",[60,46.68]],["parent/5519",[494,3.765]],["name/5520",[61,46.68]],["parent/5520",[494,3.765]],["name/5521",[62,46.68]],["parent/5521",[494,3.765]],["name/5522",[63,46.68]],["parent/5522",[494,3.765]],["name/5523",[64,46.38]],["parent/5523",[494,3.765]],["name/5524",[65,46.38]],["parent/5524",[494,3.765]],["name/5525",[66,46.68]],["parent/5525",[494,3.765]],["name/5526",[67,40.836]],["parent/5526",[494,3.765]],["name/5527",[68,46.233]],["parent/5527",[494,3.765]],["name/5528",[69,46.233]],["parent/5528",[494,3.765]],["name/5529",[70,46.68]],["parent/5529",[494,3.765]],["name/5530",[71,45.945]],["parent/5530",[494,3.765]],["name/5531",[72,46.529]],["parent/5531",[494,3.765]],["name/5532",[73,46.68]],["parent/5532",[494,3.765]],["name/5533",[74,46.68]],["parent/5533",[494,3.765]],["name/5534",[75,46.68]],["parent/5534",[494,3.765]],["name/5535",[76,46.529]],["parent/5535",[494,3.765]],["name/5536",[77,46.088]],["parent/5536",[494,3.765]],["name/5537",[78,46.088]],["parent/5537",[494,3.765]],["name/5538",[533,48.704]],["parent/5538",[]],["name/5539",[10,39.265]],["parent/5539",[533,4.805]],["name/5540",[16,46.529]],["parent/5540",[533,4.805]],["name/5541",[1214,84.446]],["parent/5541",[533,4.805]],["name/5542",[1215,84.446]],["parent/5542",[533,4.805]],["name/5543",[1216,84.446]],["parent/5543",[533,4.805]],["name/5544",[1217,84.446]],["parent/5544",[533,4.805]],["name/5545",[1218,79.338]],["parent/5545",[533,4.805]],["name/5546",[1219,79.338]],["parent/5546",[533,4.805]],["name/5547",[17,43.671]],["parent/5547",[533,4.805]],["name/5548",[1137,75.973]],["parent/5548",[533,4.805]],["name/5549",[19,52.528]],["parent/5549",[533,4.805]],["name/5550",[1,49.281]],["parent/5550",[533,4.805]],["name/5551",[1129,75.973]],["parent/5551",[1220,6.744]],["name/5552",[1131,75.973]],["parent/5552",[1220,6.744]],["name/5553",[1132,75.973]],["parent/5553",[1220,6.744]],["name/5554",[1133,75.973]],["parent/5554",[1220,6.744]],["name/5555",[1134,75.973]],["parent/5555",[1220,6.744]],["name/5556",[1135,75.973]],["parent/5556",[1220,6.744]],["name/5557",[117,56.931]],["parent/5557",[1220,6.744]],["name/5558",[1136,73.46]],["parent/5558",[533,4.805]],["name/5559",[390,69.783]],["parent/5559",[533,4.805]],["name/5560",[391,73.46]],["parent/5560",[533,4.805]],["name/5561",[1138,75.973]],["parent/5561",[533,4.805]],["name/5562",[27,44.252]],["parent/5562",[533,4.805]],["name/5563",[46,46.68]],["parent/5563",[533,4.805]],["name/5564",[47,46.68]],["parent/5564",[533,4.805]],["name/5565",[48,46.68]],["parent/5565",[533,4.805]],["name/5566",[49,46.68]],["parent/5566",[533,4.805]],["name/5567",[50,46.68]],["parent/5567",[533,4.805]],["name/5568",[51,46.68]],["parent/5568",[533,4.805]],["name/5569",[52,46.68]],["parent/5569",[533,4.805]],["name/5570",[53,46.68]],["parent/5570",[533,4.805]],["name/5571",[54,46.68]],["parent/5571",[533,4.805]],["name/5572",[55,46.68]],["parent/5572",[533,4.805]],["name/5573",[56,46.68]],["parent/5573",[533,4.805]],["name/5574",[57,46.68]],["parent/5574",[533,4.805]],["name/5575",[58,46.68]],["parent/5575",[533,4.805]],["name/5576",[59,46.68]],["parent/5576",[533,4.805]],["name/5577",[60,46.68]],["parent/5577",[533,4.805]],["name/5578",[61,46.68]],["parent/5578",[533,4.805]],["name/5579",[62,46.68]],["parent/5579",[533,4.805]],["name/5580",[63,46.68]],["parent/5580",[533,4.805]],["name/5581",[64,46.38]],["parent/5581",[533,4.805]],["name/5582",[65,46.38]],["parent/5582",[533,4.805]],["name/5583",[66,46.68]],["parent/5583",[533,4.805]],["name/5584",[67,40.836]],["parent/5584",[533,4.805]],["name/5585",[68,46.233]],["parent/5585",[533,4.805]],["name/5586",[69,46.233]],["parent/5586",[533,4.805]],["name/5587",[70,46.68]],["parent/5587",[533,4.805]],["name/5588",[71,45.945]],["parent/5588",[533,4.805]],["name/5589",[72,46.529]],["parent/5589",[533,4.805]],["name/5590",[73,46.68]],["parent/5590",[533,4.805]],["name/5591",[74,46.68]],["parent/5591",[533,4.805]],["name/5592",[75,46.68]],["parent/5592",[533,4.805]],["name/5593",[76,46.529]],["parent/5593",[533,4.805]],["name/5594",[77,46.088]],["parent/5594",[533,4.805]],["name/5595",[78,46.088]],["parent/5595",[533,4.805]],["name/5596",[486,41.726]],["parent/5596",[]],["name/5597",[10,39.265]],["parent/5597",[486,4.117]],["name/5598",[16,46.529]],["parent/5598",[486,4.117]],["name/5599",[989,79.338]],["parent/5599",[486,4.117]],["name/5600",[990,79.338]],["parent/5600",[486,4.117]],["name/5601",[991,79.338]],["parent/5601",[486,4.117]],["name/5602",[17,43.671]],["parent/5602",[486,4.117]],["name/5603",[1018,79.338]],["parent/5603",[486,4.117]],["name/5604",[1221,84.446]],["parent/5604",[486,4.117]],["name/5605",[433,69.783]],["parent/5605",[486,4.117]],["name/5606",[992,79.338]],["parent/5606",[486,4.117]],["name/5607",[993,79.338]],["parent/5607",[486,4.117]],["name/5608",[477,73.46]],["parent/5608",[486,4.117]],["name/5609",[994,79.338]],["parent/5609",[486,4.117]],["name/5610",[995,79.338]],["parent/5610",[486,4.117]],["name/5611",[996,79.338]],["parent/5611",[486,4.117]],["name/5612",[997,79.338]],["parent/5612",[486,4.117]],["name/5613",[998,79.338]],["parent/5613",[486,4.117]],["name/5614",[999,79.338]],["parent/5614",[486,4.117]],["name/5615",[173,53.688]],["parent/5615",[486,4.117]],["name/5616",[1000,79.338]],["parent/5616",[486,4.117]],["name/5617",[1001,79.338]],["parent/5617",[486,4.117]],["name/5618",[253,73.46]],["parent/5618",[486,4.117]],["name/5619",[249,73.46]],["parent/5619",[486,4.117]],["name/5620",[1002,79.338]],["parent/5620",[486,4.117]],["name/5621",[1003,79.338]],["parent/5621",[486,4.117]],["name/5622",[252,61.092]],["parent/5622",[486,4.117]],["name/5623",[28,50.106]],["parent/5623",[486,4.117]],["name/5624",[24,49.085]],["parent/5624",[486,4.117]],["name/5625",[50,46.68]],["parent/5625",[486,4.117]],["name/5626",[1004,79.338]],["parent/5626",[486,4.117]],["name/5627",[1005,79.338]],["parent/5627",[486,4.117]],["name/5628",[1006,79.338]],["parent/5628",[486,4.117]],["name/5629",[1007,79.338]],["parent/5629",[486,4.117]],["name/5630",[1008,79.338]],["parent/5630",[486,4.117]],["name/5631",[1009,75.973]],["parent/5631",[486,4.117]],["name/5632",[1010,71.453]],["parent/5632",[486,4.117]],["name/5633",[1011,75.973]],["parent/5633",[486,4.117]],["name/5634",[1012,79.338]],["parent/5634",[486,4.117]],["name/5635",[63,46.68]],["parent/5635",[486,4.117]],["name/5636",[1013,79.338]],["parent/5636",[486,4.117]],["name/5637",[1014,79.338]],["parent/5637",[486,4.117]],["name/5638",[1015,79.338]],["parent/5638",[486,4.117]],["name/5639",[1016,79.338]],["parent/5639",[486,4.117]],["name/5640",[143,58.797]],["parent/5640",[486,4.117]],["name/5641",[688,67.1]],["parent/5641",[486,4.117]],["name/5642",[1017,79.338]],["parent/5642",[486,4.117]],["name/5643",[156,57.82]],["parent/5643",[486,4.117]],["name/5644",[1019,79.338]],["parent/5644",[486,4.117]],["name/5645",[1020,79.338]],["parent/5645",[486,4.117]],["name/5646",[1021,79.338]],["parent/5646",[486,4.117]],["name/5647",[1022,79.338]],["parent/5647",[486,4.117]],["name/5648",[370,75.973]],["parent/5648",[486,4.117]],["name/5649",[1023,79.338]],["parent/5649",[486,4.117]],["name/5650",[1024,79.338]],["parent/5650",[486,4.117]],["name/5651",[1025,79.338]],["parent/5651",[486,4.117]],["name/5652",[1026,79.338]],["parent/5652",[486,4.117]],["name/5653",[1027,79.338]],["parent/5653",[486,4.117]],["name/5654",[1028,79.338]],["parent/5654",[486,4.117]],["name/5655",[1029,79.338]],["parent/5655",[486,4.117]],["name/5656",[1030,79.338]],["parent/5656",[486,4.117]],["name/5657",[1031,79.338]],["parent/5657",[486,4.117]],["name/5658",[1032,79.338]],["parent/5658",[486,4.117]],["name/5659",[1033,79.338]],["parent/5659",[486,4.117]],["name/5660",[1034,79.338]],["parent/5660",[486,4.117]],["name/5661",[183,57.82]],["parent/5661",[486,4.117]],["name/5662",[1035,79.338]],["parent/5662",[486,4.117]],["name/5663",[11,57.82]],["parent/5663",[486,4.117]],["name/5664",[27,44.252]],["parent/5664",[486,4.117]],["name/5665",[1036,79.338]],["parent/5665",[486,4.117]],["name/5666",[1037,79.338]],["parent/5666",[486,4.117]],["name/5667",[1038,79.338]],["parent/5667",[486,4.117]],["name/5668",[1039,79.338]],["parent/5668",[486,4.117]],["name/5669",[46,46.68]],["parent/5669",[486,4.117]],["name/5670",[47,46.68]],["parent/5670",[486,4.117]],["name/5671",[48,46.68]],["parent/5671",[486,4.117]],["name/5672",[49,46.68]],["parent/5672",[486,4.117]],["name/5673",[51,46.68]],["parent/5673",[486,4.117]],["name/5674",[52,46.68]],["parent/5674",[486,4.117]],["name/5675",[53,46.68]],["parent/5675",[486,4.117]],["name/5676",[54,46.68]],["parent/5676",[486,4.117]],["name/5677",[55,46.68]],["parent/5677",[486,4.117]],["name/5678",[56,46.68]],["parent/5678",[486,4.117]],["name/5679",[57,46.68]],["parent/5679",[486,4.117]],["name/5680",[58,46.68]],["parent/5680",[486,4.117]],["name/5681",[59,46.68]],["parent/5681",[486,4.117]],["name/5682",[60,46.68]],["parent/5682",[486,4.117]],["name/5683",[61,46.68]],["parent/5683",[486,4.117]],["name/5684",[62,46.68]],["parent/5684",[486,4.117]],["name/5685",[64,46.38]],["parent/5685",[486,4.117]],["name/5686",[65,46.38]],["parent/5686",[486,4.117]],["name/5687",[66,46.68]],["parent/5687",[486,4.117]],["name/5688",[67,40.836]],["parent/5688",[486,4.117]],["name/5689",[68,46.233]],["parent/5689",[486,4.117]],["name/5690",[69,46.233]],["parent/5690",[486,4.117]],["name/5691",[70,46.68]],["parent/5691",[486,4.117]],["name/5692",[71,45.945]],["parent/5692",[486,4.117]],["name/5693",[72,46.529]],["parent/5693",[486,4.117]],["name/5694",[73,46.68]],["parent/5694",[486,4.117]],["name/5695",[74,46.68]],["parent/5695",[486,4.117]],["name/5696",[75,46.68]],["parent/5696",[486,4.117]],["name/5697",[76,46.529]],["parent/5697",[486,4.117]],["name/5698",[77,46.088]],["parent/5698",[486,4.117]],["name/5699",[78,46.088]],["parent/5699",[486,4.117]],["name/5700",[534,49.481]],["parent/5700",[]],["name/5701",[10,39.265]],["parent/5701",[534,4.882]],["name/5702",[1218,79.338]],["parent/5702",[534,4.882]],["name/5703",[1219,79.338]],["parent/5703",[534,4.882]],["name/5704",[16,46.529]],["parent/5704",[534,4.882]],["name/5705",[17,43.671]],["parent/5705",[534,4.882]],["name/5706",[19,52.528]],["parent/5706",[534,4.882]],["name/5707",[1,49.281]],["parent/5707",[534,4.882]],["name/5708",[1129,75.973]],["parent/5708",[1222,6.744]],["name/5709",[1131,75.973]],["parent/5709",[1222,6.744]],["name/5710",[1132,75.973]],["parent/5710",[1222,6.744]],["name/5711",[1133,75.973]],["parent/5711",[1222,6.744]],["name/5712",[1134,75.973]],["parent/5712",[1222,6.744]],["name/5713",[1135,75.973]],["parent/5713",[1222,6.744]],["name/5714",[117,56.931]],["parent/5714",[1222,6.744]],["name/5715",[1136,73.46]],["parent/5715",[534,4.882]],["name/5716",[390,69.783]],["parent/5716",[534,4.882]],["name/5717",[391,73.46]],["parent/5717",[534,4.882]],["name/5718",[1137,75.973]],["parent/5718",[534,4.882]],["name/5719",[1138,75.973]],["parent/5719",[534,4.882]],["name/5720",[27,44.252]],["parent/5720",[534,4.882]],["name/5721",[46,46.68]],["parent/5721",[534,4.882]],["name/5722",[47,46.68]],["parent/5722",[534,4.882]],["name/5723",[48,46.68]],["parent/5723",[534,4.882]],["name/5724",[49,46.68]],["parent/5724",[534,4.882]],["name/5725",[50,46.68]],["parent/5725",[534,4.882]],["name/5726",[51,46.68]],["parent/5726",[534,4.882]],["name/5727",[52,46.68]],["parent/5727",[534,4.882]],["name/5728",[53,46.68]],["parent/5728",[534,4.882]],["name/5729",[54,46.68]],["parent/5729",[534,4.882]],["name/5730",[55,46.68]],["parent/5730",[534,4.882]],["name/5731",[56,46.68]],["parent/5731",[534,4.882]],["name/5732",[57,46.68]],["parent/5732",[534,4.882]],["name/5733",[58,46.68]],["parent/5733",[534,4.882]],["name/5734",[59,46.68]],["parent/5734",[534,4.882]],["name/5735",[60,46.68]],["parent/5735",[534,4.882]],["name/5736",[61,46.68]],["parent/5736",[534,4.882]],["name/5737",[62,46.68]],["parent/5737",[534,4.882]],["name/5738",[63,46.68]],["parent/5738",[534,4.882]],["name/5739",[64,46.38]],["parent/5739",[534,4.882]],["name/5740",[65,46.38]],["parent/5740",[534,4.882]],["name/5741",[66,46.68]],["parent/5741",[534,4.882]],["name/5742",[67,40.836]],["parent/5742",[534,4.882]],["name/5743",[68,46.233]],["parent/5743",[534,4.882]],["name/5744",[69,46.233]],["parent/5744",[534,4.882]],["name/5745",[70,46.68]],["parent/5745",[534,4.882]],["name/5746",[71,45.945]],["parent/5746",[534,4.882]],["name/5747",[72,46.529]],["parent/5747",[534,4.882]],["name/5748",[73,46.68]],["parent/5748",[534,4.882]],["name/5749",[74,46.68]],["parent/5749",[534,4.882]],["name/5750",[75,46.68]],["parent/5750",[534,4.882]],["name/5751",[76,46.529]],["parent/5751",[534,4.882]],["name/5752",[77,46.088]],["parent/5752",[534,4.882]],["name/5753",[78,46.088]],["parent/5753",[534,4.882]],["name/5754",[1223,69.783]],["parent/5754",[]],["name/5755",[1224,79.338]],["parent/5755",[1223,6.885]],["name/5756",[1225,79.338]],["parent/5756",[1223,6.885]],["name/5757",[230,68.352]],["parent/5757",[1223,6.885]],["name/5758",[318,75.973]],["parent/5758",[1223,6.885]],["name/5759",[14,53.688]],["parent/5759",[1223,6.885]],["name/5760",[547,73.46]],["parent/5760",[]],["name/5761",[85,71.453]],["parent/5761",[547,7.248]],["name/5762",[86,71.453]],["parent/5762",[547,7.248]],["name/5763",[509,48.704]],["parent/5763",[]],["name/5764",[9,56.931]],["parent/5764",[509,4.805]],["name/5765",[10,39.265]],["parent/5765",[509,4.805]],["name/5766",[16,46.529]],["parent/5766",[509,4.805]],["name/5767",[14,53.688]],["parent/5767",[509,4.805]],["name/5768",[15,59.323]],["parent/5768",[509,4.805]],["name/5769",[1212,79.338]],["parent/5769",[509,4.805]],["name/5770",[1226,84.446]],["parent/5770",[509,4.805]],["name/5771",[17,43.671]],["parent/5771",[509,4.805]],["name/5772",[19,52.528]],["parent/5772",[509,4.805]],["name/5773",[1,49.281]],["parent/5773",[509,4.805]],["name/5774",[1227,84.446]],["parent/5774",[1228,6.744]],["name/5775",[942,75.973]],["parent/5775",[1228,6.744]],["name/5776",[235,75.973]],["parent/5776",[1228,6.744]],["name/5777",[1229,84.446]],["parent/5777",[1228,6.744]],["name/5778",[1230,84.446]],["parent/5778",[1228,6.744]],["name/5779",[1231,84.446]],["parent/5779",[1228,6.744]],["name/5780",[943,79.338]],["parent/5780",[1228,6.744]],["name/5781",[14,53.688]],["parent/5781",[509,4.805]],["name/5782",[1224,79.338]],["parent/5782",[509,4.805]],["name/5783",[1225,79.338]],["parent/5783",[509,4.805]],["name/5784",[51,46.68]],["parent/5784",[509,4.805]],["name/5785",[1166,79.338]],["parent/5785",[509,4.805]],["name/5786",[377,68.352]],["parent/5786",[509,4.805]],["name/5787",[27,44.252]],["parent/5787",[509,4.805]],["name/5788",[46,46.68]],["parent/5788",[509,4.805]],["name/5789",[47,46.68]],["parent/5789",[509,4.805]],["name/5790",[48,46.68]],["parent/5790",[509,4.805]],["name/5791",[49,46.68]],["parent/5791",[509,4.805]],["name/5792",[50,46.68]],["parent/5792",[509,4.805]],["name/5793",[52,46.68]],["parent/5793",[509,4.805]],["name/5794",[53,46.68]],["parent/5794",[509,4.805]],["name/5795",[54,46.68]],["parent/5795",[509,4.805]],["name/5796",[55,46.68]],["parent/5796",[509,4.805]],["name/5797",[56,46.68]],["parent/5797",[509,4.805]],["name/5798",[57,46.68]],["parent/5798",[509,4.805]],["name/5799",[58,46.68]],["parent/5799",[509,4.805]],["name/5800",[59,46.68]],["parent/5800",[509,4.805]],["name/5801",[60,46.68]],["parent/5801",[509,4.805]],["name/5802",[61,46.68]],["parent/5802",[509,4.805]],["name/5803",[62,46.68]],["parent/5803",[509,4.805]],["name/5804",[63,46.68]],["parent/5804",[509,4.805]],["name/5805",[64,46.38]],["parent/5805",[509,4.805]],["name/5806",[65,46.38]],["parent/5806",[509,4.805]],["name/5807",[66,46.68]],["parent/5807",[509,4.805]],["name/5808",[67,40.836]],["parent/5808",[509,4.805]],["name/5809",[68,46.233]],["parent/5809",[509,4.805]],["name/5810",[69,46.233]],["parent/5810",[509,4.805]],["name/5811",[70,46.68]],["parent/5811",[509,4.805]],["name/5812",[71,45.945]],["parent/5812",[509,4.805]],["name/5813",[72,46.529]],["parent/5813",[509,4.805]],["name/5814",[73,46.68]],["parent/5814",[509,4.805]],["name/5815",[74,46.68]],["parent/5815",[509,4.805]],["name/5816",[75,46.68]],["parent/5816",[509,4.805]],["name/5817",[76,46.529]],["parent/5817",[509,4.805]],["name/5818",[77,46.088]],["parent/5818",[509,4.805]],["name/5819",[78,46.088]],["parent/5819",[509,4.805]],["name/5820",[498,40.02]],["parent/5820",[]],["name/5821",[9,56.931]],["parent/5821",[498,3.948]],["name/5822",[10,39.265]],["parent/5822",[498,3.948]],["name/5823",[331,67.1]],["parent/5823",[498,3.948]],["name/5824",[105,59.879]],["parent/5824",[498,3.948]],["name/5825",[16,46.529]],["parent/5825",[498,3.948]],["name/5826",[17,43.671]],["parent/5826",[498,3.948]],["name/5827",[377,68.352]],["parent/5827",[498,3.948]],["name/5828",[109,56.114]],["parent/5828",[498,3.948]],["name/5829",[27,44.252]],["parent/5829",[498,3.948]],["name/5830",[110,43.121]],["parent/5830",[498,3.948]],["name/5831",[111,56.931]],["parent/5831",[498,3.948]],["name/5832",[112,54.657]],["parent/5832",[498,3.948]],["name/5833",[19,52.528]],["parent/5833",[498,3.948]],["name/5834",[1,49.281]],["parent/5834",[498,3.948]],["name/5835",[113,59.879]],["parent/5835",[1232,6.164]],["name/5836",[27,44.252]],["parent/5836",[1232,6.164]],["name/5837",[115,59.879]],["parent/5837",[1232,6.164]],["name/5838",[116,59.879]],["parent/5838",[1232,6.164]],["name/5839",[117,56.931]],["parent/5839",[1232,6.164]],["name/5840",[118,59.879]],["parent/5840",[1232,6.164]],["name/5841",[119,59.879]],["parent/5841",[1232,6.164]],["name/5842",[120,57.366]],["parent/5842",[1232,6.164]],["name/5843",[121,59.879]],["parent/5843",[1232,6.164]],["name/5844",[122,59.879]],["parent/5844",[1232,6.164]],["name/5845",[123,56.514]],["parent/5845",[1232,6.164]],["name/5846",[67,40.836]],["parent/5846",[1232,6.164]],["name/5847",[124,58.297]],["parent/5847",[1232,6.164]],["name/5848",[125,59.879]],["parent/5848",[498,3.948]],["name/5849",[126,59.879]],["parent/5849",[498,3.948]],["name/5850",[127,59.323]],["parent/5850",[498,3.948]],["name/5851",[128,59.879]],["parent/5851",[498,3.948]],["name/5852",[129,54.001]],["parent/5852",[498,3.948]],["name/5853",[130,54.001]],["parent/5853",[498,3.948]],["name/5854",[131,53.688]],["parent/5854",[498,3.948]],["name/5855",[132,59.879]],["parent/5855",[498,3.948]],["name/5856",[133,59.879]],["parent/5856",[498,3.948]],["name/5857",[134,59.879]],["parent/5857",[498,3.948]],["name/5858",[135,59.879]],["parent/5858",[498,3.948]],["name/5859",[136,59.323]],["parent/5859",[498,3.948]],["name/5860",[137,59.879]],["parent/5860",[498,3.948]],["name/5861",[138,59.879]],["parent/5861",[498,3.948]],["name/5862",[139,59.879]],["parent/5862",[498,3.948]],["name/5863",[140,59.879]],["parent/5863",[498,3.948]],["name/5864",[141,59.879]],["parent/5864",[498,3.948]],["name/5865",[142,59.879]],["parent/5865",[498,3.948]],["name/5866",[143,58.797]],["parent/5866",[498,3.948]],["name/5867",[144,59.323]],["parent/5867",[498,3.948]],["name/5868",[145,59.323]],["parent/5868",[498,3.948]],["name/5869",[146,59.323]],["parent/5869",[498,3.948]],["name/5870",[147,59.323]],["parent/5870",[498,3.948]],["name/5871",[148,59.879]],["parent/5871",[498,3.948]],["name/5872",[149,59.879]],["parent/5872",[498,3.948]],["name/5873",[150,59.879]],["parent/5873",[498,3.948]],["name/5874",[151,59.879]],["parent/5874",[498,3.948]],["name/5875",[152,59.879]],["parent/5875",[498,3.948]],["name/5876",[153,59.879]],["parent/5876",[498,3.948]],["name/5877",[154,59.879]],["parent/5877",[498,3.948]],["name/5878",[155,59.879]],["parent/5878",[498,3.948]],["name/5879",[156,57.82]],["parent/5879",[498,3.948]],["name/5880",[157,59.879]],["parent/5880",[498,3.948]],["name/5881",[158,59.879]],["parent/5881",[498,3.948]],["name/5882",[159,59.879]],["parent/5882",[498,3.948]],["name/5883",[160,59.879]],["parent/5883",[498,3.948]],["name/5884",[161,59.879]],["parent/5884",[498,3.948]],["name/5885",[162,56.114]],["parent/5885",[498,3.948]],["name/5886",[163,59.323]],["parent/5886",[498,3.948]],["name/5887",[164,59.323]],["parent/5887",[498,3.948]],["name/5888",[165,59.879]],["parent/5888",[498,3.948]],["name/5889",[166,59.879]],["parent/5889",[498,3.948]],["name/5890",[167,59.879]],["parent/5890",[498,3.948]],["name/5891",[168,59.879]],["parent/5891",[498,3.948]],["name/5892",[169,59.879]],["parent/5892",[498,3.948]],["name/5893",[170,56.931]],["parent/5893",[498,3.948]],["name/5894",[171,59.323]],["parent/5894",[498,3.948]],["name/5895",[172,59.323]],["parent/5895",[498,3.948]],["name/5896",[28,50.106]],["parent/5896",[498,3.948]],["name/5897",[24,49.085]],["parent/5897",[498,3.948]],["name/5898",[43,52.257]],["parent/5898",[498,3.948]],["name/5899",[44,52.257]],["parent/5899",[498,3.948]],["name/5900",[173,53.688]],["parent/5900",[498,3.948]],["name/5901",[174,58.797]],["parent/5901",[498,3.948]],["name/5902",[175,59.323]],["parent/5902",[498,3.948]],["name/5903",[176,59.323]],["parent/5903",[498,3.948]],["name/5904",[177,59.323]],["parent/5904",[498,3.948]],["name/5905",[178,59.323]],["parent/5905",[498,3.948]],["name/5906",[179,59.323]],["parent/5906",[498,3.948]],["name/5907",[180,59.323]],["parent/5907",[498,3.948]],["name/5908",[181,59.323]],["parent/5908",[498,3.948]],["name/5909",[182,59.323]],["parent/5909",[498,3.948]],["name/5910",[108,59.323]],["parent/5910",[498,3.948]],["name/5911",[183,57.82]],["parent/5911",[498,3.948]],["name/5912",[184,59.323]],["parent/5912",[498,3.948]],["name/5913",[185,59.323]],["parent/5913",[498,3.948]],["name/5914",[186,56.514]],["parent/5914",[498,3.948]],["name/5915",[187,58.797]],["parent/5915",[498,3.948]],["name/5916",[188,59.323]],["parent/5916",[498,3.948]],["name/5917",[189,59.323]],["parent/5917",[498,3.948]],["name/5918",[190,59.323]],["parent/5918",[498,3.948]],["name/5919",[191,59.323]],["parent/5919",[498,3.948]],["name/5920",[192,59.323]],["parent/5920",[498,3.948]],["name/5921",[36,53.091]],["parent/5921",[498,3.948]],["name/5922",[34,53.091]],["parent/5922",[498,3.948]],["name/5923",[35,53.091]],["parent/5923",[498,3.948]],["name/5924",[46,46.68]],["parent/5924",[498,3.948]],["name/5925",[47,46.68]],["parent/5925",[498,3.948]],["name/5926",[48,46.68]],["parent/5926",[498,3.948]],["name/5927",[49,46.68]],["parent/5927",[498,3.948]],["name/5928",[50,46.68]],["parent/5928",[498,3.948]],["name/5929",[51,46.68]],["parent/5929",[498,3.948]],["name/5930",[52,46.68]],["parent/5930",[498,3.948]],["name/5931",[53,46.68]],["parent/5931",[498,3.948]],["name/5932",[54,46.68]],["parent/5932",[498,3.948]],["name/5933",[55,46.68]],["parent/5933",[498,3.948]],["name/5934",[56,46.68]],["parent/5934",[498,3.948]],["name/5935",[57,46.68]],["parent/5935",[498,3.948]],["name/5936",[58,46.68]],["parent/5936",[498,3.948]],["name/5937",[59,46.68]],["parent/5937",[498,3.948]],["name/5938",[60,46.68]],["parent/5938",[498,3.948]],["name/5939",[61,46.68]],["parent/5939",[498,3.948]],["name/5940",[62,46.68]],["parent/5940",[498,3.948]],["name/5941",[63,46.68]],["parent/5941",[498,3.948]],["name/5942",[64,46.38]],["parent/5942",[498,3.948]],["name/5943",[65,46.38]],["parent/5943",[498,3.948]],["name/5944",[66,46.68]],["parent/5944",[498,3.948]],["name/5945",[67,40.836]],["parent/5945",[498,3.948]],["name/5946",[68,46.233]],["parent/5946",[498,3.948]],["name/5947",[69,46.233]],["parent/5947",[498,3.948]],["name/5948",[70,46.68]],["parent/5948",[498,3.948]],["name/5949",[71,45.945]],["parent/5949",[498,3.948]],["name/5950",[72,46.529]],["parent/5950",[498,3.948]],["name/5951",[73,46.68]],["parent/5951",[498,3.948]],["name/5952",[74,46.68]],["parent/5952",[498,3.948]],["name/5953",[75,46.68]],["parent/5953",[498,3.948]],["name/5954",[76,46.529]],["parent/5954",[498,3.948]],["name/5955",[77,46.088]],["parent/5955",[498,3.948]],["name/5956",[78,46.088]],["parent/5956",[498,3.948]],["name/5957",[1233,63.244]],["parent/5957",[]],["name/5958",[571,79.338]],["parent/5958",[1233,6.24]],["name/5959",[557,73.46]],["parent/5959",[1233,6.24]],["name/5960",[331,67.1]],["parent/5960",[1233,6.24]],["name/5961",[1234,84.446]],["parent/5961",[1233,6.24]],["name/5962",[1235,84.446]],["parent/5962",[1233,6.24]],["name/5963",[597,79.338]],["parent/5963",[1233,6.24]],["name/5964",[596,79.338]],["parent/5964",[1233,6.24]],["name/5965",[1236,84.446]],["parent/5965",[1233,6.24]],["name/5966",[328,75.973]],["parent/5966",[1233,6.24]],["name/5967",[329,75.973]],["parent/5967",[1233,6.24]],["name/5968",[1237,84.446]],["parent/5968",[1233,6.24]],["name/5969",[535,59.879]],["parent/5969",[]],["name/5970",[9,56.931]],["parent/5970",[535,5.908]],["name/5971",[1238,84.446]],["parent/5971",[535,5.908]],["name/5972",[1187,79.338]],["parent/5972",[535,5.908]],["name/5973",[1239,79.338]],["parent/5973",[535,5.908]],["name/5974",[1240,84.446]],["parent/5974",[535,5.908]],["name/5975",[1241,84.446]],["parent/5975",[535,5.908]],["name/5976",[1242,84.446]],["parent/5976",[535,5.908]],["name/5977",[1243,84.446]],["parent/5977",[535,5.908]],["name/5978",[1244,84.446]],["parent/5978",[535,5.908]],["name/5979",[1245,84.446]],["parent/5979",[535,5.908]],["name/5980",[1246,84.446]],["parent/5980",[535,5.908]],["name/5981",[1247,84.446]],["parent/5981",[535,5.908]],["name/5982",[72,46.529]],["parent/5982",[535,5.908]],["name/5983",[76,46.529]],["parent/5983",[535,5.908]],["name/5984",[619,79.338]],["parent/5984",[535,5.908]],["name/5985",[548,69.783]],["parent/5985",[]],["name/5986",[80,69.783]],["parent/5986",[548,6.885]],["name/5987",[81,69.783]],["parent/5987",[548,6.885]],["name/5988",[82,69.783]],["parent/5988",[548,6.885]],["name/5989",[1248,61.092]],["parent/5989",[]],["name/5990",[230,68.352]],["parent/5990",[1248,6.027]],["name/5991",[110,43.121]],["parent/5991",[1248,6.027]],["name/5992",[1249,84.446]],["parent/5992",[1248,6.027]],["name/5993",[1250,84.446]],["parent/5993",[1248,6.027]],["name/5994",[67,40.836]],["parent/5994",[1248,6.027]],["name/5995",[317,79.338]],["parent/5995",[1248,6.027]],["name/5996",[318,75.973]],["parent/5996",[1248,6.027]],["name/5997",[111,56.931]],["parent/5997",[1248,6.027]],["name/5998",[409,63.244]],["parent/5998",[1248,6.027]],["name/5999",[0,58.797]],["parent/5999",[1248,6.027]],["name/6000",[408,64.077]],["parent/6000",[1248,6.027]],["name/6001",[18,57.366]],["parent/6001",[1248,6.027]],["name/6002",[744,69.783]],["parent/6002",[1248,6.027]],["name/6003",[745,69.783]],["parent/6003",[1248,6.027]],["name/6004",[491,39.942]],["parent/6004",[]],["name/6005",[10,39.265]],["parent/6005",[491,3.941]],["name/6006",[16,46.529]],["parent/6006",[491,3.941]],["name/6007",[1251,84.446]],["parent/6007",[491,3.941]],["name/6008",[331,67.1]],["parent/6008",[491,3.941]],["name/6009",[105,59.879]],["parent/6009",[491,3.941]],["name/6010",[17,43.671]],["parent/6010",[491,3.941]],["name/6011",[95,79.338]],["parent/6011",[491,3.941]],["name/6012",[377,68.352]],["parent/6012",[491,3.941]],["name/6013",[109,56.114]],["parent/6013",[491,3.941]],["name/6014",[27,44.252]],["parent/6014",[491,3.941]],["name/6015",[110,43.121]],["parent/6015",[491,3.941]],["name/6016",[111,56.931]],["parent/6016",[491,3.941]],["name/6017",[112,54.657]],["parent/6017",[491,3.941]],["name/6018",[19,52.528]],["parent/6018",[491,3.941]],["name/6019",[1,49.281]],["parent/6019",[491,3.941]],["name/6020",[113,59.879]],["parent/6020",[1252,6.164]],["name/6021",[27,44.252]],["parent/6021",[1252,6.164]],["name/6022",[115,59.879]],["parent/6022",[1252,6.164]],["name/6023",[116,59.879]],["parent/6023",[1252,6.164]],["name/6024",[117,56.931]],["parent/6024",[1252,6.164]],["name/6025",[118,59.879]],["parent/6025",[1252,6.164]],["name/6026",[119,59.879]],["parent/6026",[1252,6.164]],["name/6027",[120,57.366]],["parent/6027",[1252,6.164]],["name/6028",[121,59.879]],["parent/6028",[1252,6.164]],["name/6029",[122,59.879]],["parent/6029",[1252,6.164]],["name/6030",[123,56.514]],["parent/6030",[1252,6.164]],["name/6031",[67,40.836]],["parent/6031",[1252,6.164]],["name/6032",[124,58.297]],["parent/6032",[1252,6.164]],["name/6033",[125,59.879]],["parent/6033",[491,3.941]],["name/6034",[126,59.879]],["parent/6034",[491,3.941]],["name/6035",[127,59.323]],["parent/6035",[491,3.941]],["name/6036",[128,59.879]],["parent/6036",[491,3.941]],["name/6037",[129,54.001]],["parent/6037",[491,3.941]],["name/6038",[130,54.001]],["parent/6038",[491,3.941]],["name/6039",[131,53.688]],["parent/6039",[491,3.941]],["name/6040",[132,59.879]],["parent/6040",[491,3.941]],["name/6041",[133,59.879]],["parent/6041",[491,3.941]],["name/6042",[134,59.879]],["parent/6042",[491,3.941]],["name/6043",[135,59.879]],["parent/6043",[491,3.941]],["name/6044",[136,59.323]],["parent/6044",[491,3.941]],["name/6045",[137,59.879]],["parent/6045",[491,3.941]],["name/6046",[138,59.879]],["parent/6046",[491,3.941]],["name/6047",[139,59.879]],["parent/6047",[491,3.941]],["name/6048",[140,59.879]],["parent/6048",[491,3.941]],["name/6049",[141,59.879]],["parent/6049",[491,3.941]],["name/6050",[142,59.879]],["parent/6050",[491,3.941]],["name/6051",[143,58.797]],["parent/6051",[491,3.941]],["name/6052",[144,59.323]],["parent/6052",[491,3.941]],["name/6053",[145,59.323]],["parent/6053",[491,3.941]],["name/6054",[146,59.323]],["parent/6054",[491,3.941]],["name/6055",[147,59.323]],["parent/6055",[491,3.941]],["name/6056",[148,59.879]],["parent/6056",[491,3.941]],["name/6057",[149,59.879]],["parent/6057",[491,3.941]],["name/6058",[150,59.879]],["parent/6058",[491,3.941]],["name/6059",[151,59.879]],["parent/6059",[491,3.941]],["name/6060",[152,59.879]],["parent/6060",[491,3.941]],["name/6061",[153,59.879]],["parent/6061",[491,3.941]],["name/6062",[154,59.879]],["parent/6062",[491,3.941]],["name/6063",[155,59.879]],["parent/6063",[491,3.941]],["name/6064",[156,57.82]],["parent/6064",[491,3.941]],["name/6065",[157,59.879]],["parent/6065",[491,3.941]],["name/6066",[158,59.879]],["parent/6066",[491,3.941]],["name/6067",[159,59.879]],["parent/6067",[491,3.941]],["name/6068",[160,59.879]],["parent/6068",[491,3.941]],["name/6069",[161,59.879]],["parent/6069",[491,3.941]],["name/6070",[162,56.114]],["parent/6070",[491,3.941]],["name/6071",[163,59.323]],["parent/6071",[491,3.941]],["name/6072",[164,59.323]],["parent/6072",[491,3.941]],["name/6073",[165,59.879]],["parent/6073",[491,3.941]],["name/6074",[166,59.879]],["parent/6074",[491,3.941]],["name/6075",[167,59.879]],["parent/6075",[491,3.941]],["name/6076",[168,59.879]],["parent/6076",[491,3.941]],["name/6077",[169,59.879]],["parent/6077",[491,3.941]],["name/6078",[170,56.931]],["parent/6078",[491,3.941]],["name/6079",[171,59.323]],["parent/6079",[491,3.941]],["name/6080",[172,59.323]],["parent/6080",[491,3.941]],["name/6081",[28,50.106]],["parent/6081",[491,3.941]],["name/6082",[24,49.085]],["parent/6082",[491,3.941]],["name/6083",[43,52.257]],["parent/6083",[491,3.941]],["name/6084",[44,52.257]],["parent/6084",[491,3.941]],["name/6085",[173,53.688]],["parent/6085",[491,3.941]],["name/6086",[174,58.797]],["parent/6086",[491,3.941]],["name/6087",[175,59.323]],["parent/6087",[491,3.941]],["name/6088",[176,59.323]],["parent/6088",[491,3.941]],["name/6089",[177,59.323]],["parent/6089",[491,3.941]],["name/6090",[178,59.323]],["parent/6090",[491,3.941]],["name/6091",[179,59.323]],["parent/6091",[491,3.941]],["name/6092",[180,59.323]],["parent/6092",[491,3.941]],["name/6093",[181,59.323]],["parent/6093",[491,3.941]],["name/6094",[182,59.323]],["parent/6094",[491,3.941]],["name/6095",[108,59.323]],["parent/6095",[491,3.941]],["name/6096",[183,57.82]],["parent/6096",[491,3.941]],["name/6097",[184,59.323]],["parent/6097",[491,3.941]],["name/6098",[185,59.323]],["parent/6098",[491,3.941]],["name/6099",[186,56.514]],["parent/6099",[491,3.941]],["name/6100",[187,58.797]],["parent/6100",[491,3.941]],["name/6101",[188,59.323]],["parent/6101",[491,3.941]],["name/6102",[189,59.323]],["parent/6102",[491,3.941]],["name/6103",[190,59.323]],["parent/6103",[491,3.941]],["name/6104",[191,59.323]],["parent/6104",[491,3.941]],["name/6105",[192,59.323]],["parent/6105",[491,3.941]],["name/6106",[36,53.091]],["parent/6106",[491,3.941]],["name/6107",[34,53.091]],["parent/6107",[491,3.941]],["name/6108",[35,53.091]],["parent/6108",[491,3.941]],["name/6109",[46,46.68]],["parent/6109",[491,3.941]],["name/6110",[47,46.68]],["parent/6110",[491,3.941]],["name/6111",[48,46.68]],["parent/6111",[491,3.941]],["name/6112",[49,46.68]],["parent/6112",[491,3.941]],["name/6113",[50,46.68]],["parent/6113",[491,3.941]],["name/6114",[51,46.68]],["parent/6114",[491,3.941]],["name/6115",[52,46.68]],["parent/6115",[491,3.941]],["name/6116",[53,46.68]],["parent/6116",[491,3.941]],["name/6117",[54,46.68]],["parent/6117",[491,3.941]],["name/6118",[55,46.68]],["parent/6118",[491,3.941]],["name/6119",[56,46.68]],["parent/6119",[491,3.941]],["name/6120",[57,46.68]],["parent/6120",[491,3.941]],["name/6121",[58,46.68]],["parent/6121",[491,3.941]],["name/6122",[59,46.68]],["parent/6122",[491,3.941]],["name/6123",[60,46.68]],["parent/6123",[491,3.941]],["name/6124",[61,46.68]],["parent/6124",[491,3.941]],["name/6125",[62,46.68]],["parent/6125",[491,3.941]],["name/6126",[63,46.68]],["parent/6126",[491,3.941]],["name/6127",[64,46.38]],["parent/6127",[491,3.941]],["name/6128",[65,46.38]],["parent/6128",[491,3.941]],["name/6129",[66,46.68]],["parent/6129",[491,3.941]],["name/6130",[67,40.836]],["parent/6130",[491,3.941]],["name/6131",[68,46.233]],["parent/6131",[491,3.941]],["name/6132",[69,46.233]],["parent/6132",[491,3.941]],["name/6133",[70,46.68]],["parent/6133",[491,3.941]],["name/6134",[71,45.945]],["parent/6134",[491,3.941]],["name/6135",[72,46.529]],["parent/6135",[491,3.941]],["name/6136",[73,46.68]],["parent/6136",[491,3.941]],["name/6137",[74,46.68]],["parent/6137",[491,3.941]],["name/6138",[75,46.68]],["parent/6138",[491,3.941]],["name/6139",[76,46.529]],["parent/6139",[491,3.941]],["name/6140",[77,46.088]],["parent/6140",[491,3.941]],["name/6141",[78,46.088]],["parent/6141",[491,3.941]],["name/6142",[1253,68.352]],["parent/6142",[]],["name/6143",[409,63.244]],["parent/6143",[1253,6.744]],["name/6144",[1254,84.446]],["parent/6144",[1253,6.744]],["name/6145",[1,49.281]],["parent/6145",[1253,6.744]],["name/6146",[80,69.783]],["parent/6146",[1255,7.05]],["name/6147",[82,69.783]],["parent/6147",[1255,7.05]],["name/6148",[1256,84.446]],["parent/6148",[1253,6.744]],["name/6149",[477,73.46]],["parent/6149",[1253,6.744]],["name/6150",[1,49.281]],["parent/6150",[1253,6.744]],["name/6151",[1257,84.446]],["parent/6151",[1255,7.05]],["name/6152",[1258,84.446]],["parent/6152",[1255,7.05]],["name/6153",[1259,84.446]],["parent/6153",[1255,7.05]],["name/6154",[1260,44.618]],["parent/6154",[]],["name/6155",[10,39.265]],["parent/6155",[1260,4.402]],["name/6156",[16,46.529]],["parent/6156",[1260,4.402]],["name/6157",[17,43.671]],["parent/6157",[1260,4.402]],["name/6158",[170,56.931]],["parent/6158",[1260,4.402]],["name/6159",[171,59.323]],["parent/6159",[1260,4.402]],["name/6160",[136,59.323]],["parent/6160",[1260,4.402]],["name/6161",[172,59.323]],["parent/6161",[1260,4.402]],["name/6162",[28,50.106]],["parent/6162",[1260,4.402]],["name/6163",[24,49.085]],["parent/6163",[1260,4.402]],["name/6164",[43,52.257]],["parent/6164",[1260,4.402]],["name/6165",[44,52.257]],["parent/6165",[1260,4.402]],["name/6166",[173,53.688]],["parent/6166",[1260,4.402]],["name/6167",[174,58.797]],["parent/6167",[1260,4.402]],["name/6168",[175,59.323]],["parent/6168",[1260,4.402]],["name/6169",[176,59.323]],["parent/6169",[1260,4.402]],["name/6170",[177,59.323]],["parent/6170",[1260,4.402]],["name/6171",[178,59.323]],["parent/6171",[1260,4.402]],["name/6172",[144,59.323]],["parent/6172",[1260,4.402]],["name/6173",[145,59.323]],["parent/6173",[1260,4.402]],["name/6174",[179,59.323]],["parent/6174",[1260,4.402]],["name/6175",[180,59.323]],["parent/6175",[1260,4.402]],["name/6176",[181,59.323]],["parent/6176",[1260,4.402]],["name/6177",[182,59.323]],["parent/6177",[1260,4.402]],["name/6178",[108,59.323]],["parent/6178",[1260,4.402]],["name/6179",[156,57.82]],["parent/6179",[1260,4.402]],["name/6180",[183,57.82]],["parent/6180",[1260,4.402]],["name/6181",[147,59.323]],["parent/6181",[1260,4.402]],["name/6182",[184,59.323]],["parent/6182",[1260,4.402]],["name/6183",[109,56.114]],["parent/6183",[1260,4.402]],["name/6184",[185,59.323]],["parent/6184",[1260,4.402]],["name/6185",[186,56.514]],["parent/6185",[1260,4.402]],["name/6186",[187,58.797]],["parent/6186",[1260,4.402]],["name/6187",[188,59.323]],["parent/6187",[1260,4.402]],["name/6188",[189,59.323]],["parent/6188",[1260,4.402]],["name/6189",[190,59.323]],["parent/6189",[1260,4.402]],["name/6190",[191,59.323]],["parent/6190",[1260,4.402]],["name/6191",[192,59.323]],["parent/6191",[1260,4.402]],["name/6192",[163,59.323]],["parent/6192",[1260,4.402]],["name/6193",[36,53.091]],["parent/6193",[1260,4.402]],["name/6194",[34,53.091]],["parent/6194",[1260,4.402]],["name/6195",[35,53.091]],["parent/6195",[1260,4.402]],["name/6196",[129,54.001]],["parent/6196",[1260,4.402]],["name/6197",[131,53.688]],["parent/6197",[1260,4.402]],["name/6198",[162,56.114]],["parent/6198",[1260,4.402]],["name/6199",[46,46.68]],["parent/6199",[1260,4.402]],["name/6200",[47,46.68]],["parent/6200",[1260,4.402]],["name/6201",[48,46.68]],["parent/6201",[1260,4.402]],["name/6202",[49,46.68]],["parent/6202",[1260,4.402]],["name/6203",[50,46.68]],["parent/6203",[1260,4.402]],["name/6204",[51,46.68]],["parent/6204",[1260,4.402]],["name/6205",[52,46.68]],["parent/6205",[1260,4.402]],["name/6206",[53,46.68]],["parent/6206",[1260,4.402]],["name/6207",[27,44.252]],["parent/6207",[1260,4.402]],["name/6208",[54,46.68]],["parent/6208",[1260,4.402]],["name/6209",[55,46.68]],["parent/6209",[1260,4.402]],["name/6210",[56,46.68]],["parent/6210",[1260,4.402]],["name/6211",[57,46.68]],["parent/6211",[1260,4.402]],["name/6212",[58,46.68]],["parent/6212",[1260,4.402]],["name/6213",[59,46.68]],["parent/6213",[1260,4.402]],["name/6214",[60,46.68]],["parent/6214",[1260,4.402]],["name/6215",[61,46.68]],["parent/6215",[1260,4.402]],["name/6216",[62,46.68]],["parent/6216",[1260,4.402]],["name/6217",[63,46.68]],["parent/6217",[1260,4.402]],["name/6218",[64,46.38]],["parent/6218",[1260,4.402]],["name/6219",[65,46.38]],["parent/6219",[1260,4.402]],["name/6220",[66,46.68]],["parent/6220",[1260,4.402]],["name/6221",[67,40.836]],["parent/6221",[1260,4.402]],["name/6222",[68,46.233]],["parent/6222",[1260,4.402]],["name/6223",[69,46.233]],["parent/6223",[1260,4.402]],["name/6224",[70,46.68]],["parent/6224",[1260,4.402]],["name/6225",[71,45.945]],["parent/6225",[1260,4.402]],["name/6226",[72,46.529]],["parent/6226",[1260,4.402]],["name/6227",[73,46.68]],["parent/6227",[1260,4.402]],["name/6228",[74,46.68]],["parent/6228",[1260,4.402]],["name/6229",[75,46.68]],["parent/6229",[1260,4.402]],["name/6230",[76,46.529]],["parent/6230",[1260,4.402]],["name/6231",[77,46.088]],["parent/6231",[1260,4.402]],["name/6232",[78,46.088]],["parent/6232",[1260,4.402]],["name/6233",[1261,64.077]],["parent/6233",[]],["name/6234",[1262,84.446]],["parent/6234",[1261,6.322]],["name/6235",[1263,84.446]],["parent/6235",[1261,6.322]],["name/6236",[7,60.467]],["parent/6236",[1261,6.322]],["name/6237",[875,79.338]],["parent/6237",[1261,6.322]],["name/6238",[876,79.338]],["parent/6238",[1261,6.322]],["name/6239",[877,79.338]],["parent/6239",[1261,6.322]],["name/6240",[878,79.338]],["parent/6240",[1261,6.322]],["name/6241",[879,79.338]],["parent/6241",[1261,6.322]],["name/6242",[880,79.338]],["parent/6242",[1261,6.322]],["name/6243",[881,79.338]],["parent/6243",[1261,6.322]],["name/6244",[1264,79.338]],["parent/6244",[]],["name/6245",[1265,84.446]],["parent/6245",[1264,7.828]],["name/6246",[501,54.324]],["parent/6246",[]],["name/6247",[1266,84.446]],["parent/6247",[501,5.36]],["name/6248",[17,43.671]],["parent/6248",[501,5.36]],["name/6249",[1267,84.446]],["parent/6249",[501,5.36]],["name/6250",[1268,84.446]],["parent/6250",[501,5.36]],["name/6251",[173,53.688]],["parent/6251",[501,5.36]],["name/6252",[252,61.092]],["parent/6252",[501,5.36]],["name/6253",[1269,84.446]],["parent/6253",[501,5.36]],["name/6254",[1270,84.446]],["parent/6254",[501,5.36]],["name/6255",[1271,84.446]],["parent/6255",[501,5.36]],["name/6256",[1272,84.446]],["parent/6256",[501,5.36]],["name/6257",[24,49.085]],["parent/6257",[501,5.36]],["name/6258",[366,64.077]],["parent/6258",[501,5.36]],["name/6259",[1273,84.446]],["parent/6259",[501,5.36]],["name/6260",[1274,84.446]],["parent/6260",[501,5.36]],["name/6261",[1275,84.446]],["parent/6261",[501,5.36]],["name/6262",[1276,84.446]],["parent/6262",[501,5.36]],["name/6263",[1277,79.338]],["parent/6263",[501,5.36]],["name/6264",[1278,84.446]],["parent/6264",[501,5.36]],["name/6265",[1279,84.446]],["parent/6265",[501,5.36]],["name/6266",[1280,84.446]],["parent/6266",[501,5.36]],["name/6267",[162,56.114]],["parent/6267",[501,5.36]],["name/6268",[1281,84.446]],["parent/6268",[501,5.36]],["name/6269",[1282,84.446]],["parent/6269",[501,5.36]],["name/6270",[1283,79.338]],["parent/6270",[501,5.36]],["name/6271",[109,56.114]],["parent/6271",[501,5.36]],["name/6272",[186,56.514]],["parent/6272",[501,5.36]],["name/6273",[174,58.797]],["parent/6273",[501,5.36]],["name/6274",[1284,45.26]],["parent/6274",[]],["name/6275",[10,39.265]],["parent/6275",[1284,4.465]],["name/6276",[714,79.338]],["parent/6276",[1284,4.465]],["name/6277",[715,79.338]],["parent/6277",[1284,4.465]],["name/6278",[716,79.338]],["parent/6278",[1284,4.465]],["name/6279",[717,79.338]],["parent/6279",[1284,4.465]],["name/6280",[718,79.338]],["parent/6280",[1284,4.465]],["name/6281",[719,79.338]],["parent/6281",[1284,4.465]],["name/6282",[720,79.338]],["parent/6282",[1284,4.465]],["name/6283",[721,79.338]],["parent/6283",[1284,4.465]],["name/6284",[24,49.085]],["parent/6284",[1284,4.465]],["name/6285",[16,46.529]],["parent/6285",[1284,4.465]],["name/6286",[17,43.671]],["parent/6286",[1284,4.465]],["name/6287",[536,46.834]],["parent/6287",[1284,4.465]],["name/6288",[1285,84.446]],["parent/6288",[1284,4.465]],["name/6289",[1286,84.446]],["parent/6289",[1284,4.465]],["name/6290",[7,60.467]],["parent/6290",[1284,4.465]],["name/6291",[1081,79.338]],["parent/6291",[1284,4.465]],["name/6292",[162,56.114]],["parent/6292",[1284,4.465]],["name/6293",[733,79.338]],["parent/6293",[1284,4.465]],["name/6294",[722,79.338]],["parent/6294",[1284,4.465]],["name/6295",[97,67.1]],["parent/6295",[1284,4.465]],["name/6296",[332,69.783]],["parent/6296",[1284,4.465]],["name/6297",[723,79.338]],["parent/6297",[1284,4.465]],["name/6298",[724,79.338]],["parent/6298",[1284,4.465]],["name/6299",[123,56.514]],["parent/6299",[1284,4.465]],["name/6300",[27,44.252]],["parent/6300",[1284,4.465]],["name/6301",[725,79.338]],["parent/6301",[1284,4.465]],["name/6302",[462,69.783]],["parent/6302",[1284,4.465]],["name/6303",[726,79.338]],["parent/6303",[1284,4.465]],["name/6304",[131,53.688]],["parent/6304",[1284,4.465]],["name/6305",[44,52.257]],["parent/6305",[1284,4.465]],["name/6306",[43,52.257]],["parent/6306",[1284,4.465]],["name/6307",[727,79.338]],["parent/6307",[1284,4.465]],["name/6308",[40,59.323]],["parent/6308",[1284,4.465]],["name/6309",[170,56.931]],["parent/6309",[1284,4.465]],["name/6310",[728,79.338]],["parent/6310",[1284,4.465]],["name/6311",[729,79.338]],["parent/6311",[1284,4.465]],["name/6312",[730,79.338]],["parent/6312",[1284,4.465]],["name/6313",[731,79.338]],["parent/6313",[1284,4.465]],["name/6314",[732,79.338]],["parent/6314",[1284,4.465]],["name/6315",[130,54.001]],["parent/6315",[1284,4.465]],["name/6316",[46,46.68]],["parent/6316",[1284,4.465]],["name/6317",[47,46.68]],["parent/6317",[1284,4.465]],["name/6318",[48,46.68]],["parent/6318",[1284,4.465]],["name/6319",[49,46.68]],["parent/6319",[1284,4.465]],["name/6320",[50,46.68]],["parent/6320",[1284,4.465]],["name/6321",[51,46.68]],["parent/6321",[1284,4.465]],["name/6322",[52,46.68]],["parent/6322",[1284,4.465]],["name/6323",[53,46.68]],["parent/6323",[1284,4.465]],["name/6324",[54,46.68]],["parent/6324",[1284,4.465]],["name/6325",[55,46.68]],["parent/6325",[1284,4.465]],["name/6326",[56,46.68]],["parent/6326",[1284,4.465]],["name/6327",[57,46.68]],["parent/6327",[1284,4.465]],["name/6328",[58,46.68]],["parent/6328",[1284,4.465]],["name/6329",[59,46.68]],["parent/6329",[1284,4.465]],["name/6330",[60,46.68]],["parent/6330",[1284,4.465]],["name/6331",[61,46.68]],["parent/6331",[1284,4.465]],["name/6332",[62,46.68]],["parent/6332",[1284,4.465]],["name/6333",[63,46.68]],["parent/6333",[1284,4.465]],["name/6334",[64,46.38]],["parent/6334",[1284,4.465]],["name/6335",[65,46.38]],["parent/6335",[1284,4.465]],["name/6336",[66,46.68]],["parent/6336",[1284,4.465]],["name/6337",[67,40.836]],["parent/6337",[1284,4.465]],["name/6338",[68,46.233]],["parent/6338",[1284,4.465]],["name/6339",[69,46.233]],["parent/6339",[1284,4.465]],["name/6340",[70,46.68]],["parent/6340",[1284,4.465]],["name/6341",[71,45.945]],["parent/6341",[1284,4.465]],["name/6342",[72,46.529]],["parent/6342",[1284,4.465]],["name/6343",[73,46.68]],["parent/6343",[1284,4.465]],["name/6344",[74,46.68]],["parent/6344",[1284,4.465]],["name/6345",[75,46.68]],["parent/6345",[1284,4.465]],["name/6346",[76,46.529]],["parent/6346",[1284,4.465]],["name/6347",[77,46.088]],["parent/6347",[1284,4.465]],["name/6348",[78,46.088]],["parent/6348",[1284,4.465]],["name/6349",[1287,73.46]],["parent/6349",[]],["name/6350",[110,43.121]],["parent/6350",[1287,7.248]],["name/6351",[0,58.797]],["parent/6351",[1287,7.248]],["name/6352",[1288,84.446]],["parent/6352",[1287,7.248]],["name/6353",[536,46.834]],["parent/6353",[]],["name/6354",[10,39.265]],["parent/6354",[536,4.621]],["name/6355",[331,67.1]],["parent/6355",[536,4.621]],["name/6356",[14,53.688]],["parent/6356",[536,4.621]],["name/6357",[16,46.529]],["parent/6357",[536,4.621]],["name/6358",[17,43.671]],["parent/6358",[536,4.621]],["name/6359",[359,75.973]],["parent/6359",[536,4.621]],["name/6360",[1289,84.446]],["parent/6360",[536,4.621]],["name/6361",[1290,84.446]],["parent/6361",[536,4.621]],["name/6362",[1291,84.446]],["parent/6362",[536,4.621]],["name/6363",[1292,84.446]],["parent/6363",[536,4.621]],["name/6364",[1239,79.338]],["parent/6364",[536,4.621]],["name/6365",[1293,84.446]],["parent/6365",[536,4.621]],["name/6366",[27,44.252]],["parent/6366",[536,4.621]],["name/6367",[37,55.729]],["parent/6367",[536,4.621]],["name/6368",[38,55.359]],["parent/6368",[536,4.621]],["name/6369",[129,54.001]],["parent/6369",[536,4.621]],["name/6370",[130,54.001]],["parent/6370",[536,4.621]],["name/6371",[131,53.688]],["parent/6371",[536,4.621]],["name/6372",[24,49.085]],["parent/6372",[536,4.621]],["name/6373",[28,50.106]],["parent/6373",[536,4.621]],["name/6374",[173,53.688]],["parent/6374",[536,4.621]],["name/6375",[252,61.092]],["parent/6375",[536,4.621]],["name/6376",[364,64.987]],["parent/6376",[536,4.621]],["name/6377",[365,64.987]],["parent/6377",[536,4.621]],["name/6378",[366,64.077]],["parent/6378",[536,4.621]],["name/6379",[367,64.987]],["parent/6379",[536,4.621]],["name/6380",[368,64.987]],["parent/6380",[536,4.621]],["name/6381",[46,46.68]],["parent/6381",[536,4.621]],["name/6382",[47,46.68]],["parent/6382",[536,4.621]],["name/6383",[48,46.68]],["parent/6383",[536,4.621]],["name/6384",[49,46.68]],["parent/6384",[536,4.621]],["name/6385",[50,46.68]],["parent/6385",[536,4.621]],["name/6386",[51,46.68]],["parent/6386",[536,4.621]],["name/6387",[52,46.68]],["parent/6387",[536,4.621]],["name/6388",[53,46.68]],["parent/6388",[536,4.621]],["name/6389",[54,46.68]],["parent/6389",[536,4.621]],["name/6390",[55,46.68]],["parent/6390",[536,4.621]],["name/6391",[56,46.68]],["parent/6391",[536,4.621]],["name/6392",[57,46.68]],["parent/6392",[536,4.621]],["name/6393",[58,46.68]],["parent/6393",[536,4.621]],["name/6394",[59,46.68]],["parent/6394",[536,4.621]],["name/6395",[60,46.68]],["parent/6395",[536,4.621]],["name/6396",[61,46.68]],["parent/6396",[536,4.621]],["name/6397",[62,46.68]],["parent/6397",[536,4.621]],["name/6398",[63,46.68]],["parent/6398",[536,4.621]],["name/6399",[64,46.38]],["parent/6399",[536,4.621]],["name/6400",[65,46.38]],["parent/6400",[536,4.621]],["name/6401",[66,46.68]],["parent/6401",[536,4.621]],["name/6402",[67,40.836]],["parent/6402",[536,4.621]],["name/6403",[68,46.233]],["parent/6403",[536,4.621]],["name/6404",[69,46.233]],["parent/6404",[536,4.621]],["name/6405",[70,46.68]],["parent/6405",[536,4.621]],["name/6406",[71,45.945]],["parent/6406",[536,4.621]],["name/6407",[72,46.529]],["parent/6407",[536,4.621]],["name/6408",[73,46.68]],["parent/6408",[536,4.621]],["name/6409",[74,46.68]],["parent/6409",[536,4.621]],["name/6410",[75,46.68]],["parent/6410",[536,4.621]],["name/6411",[76,46.529]],["parent/6411",[536,4.621]],["name/6412",[77,46.088]],["parent/6412",[536,4.621]],["name/6413",[78,46.088]],["parent/6413",[536,4.621]],["name/6414",[492,40.258]],["parent/6414",[]],["name/6415",[10,39.265]],["parent/6415",[492,3.972]],["name/6416",[105,59.879]],["parent/6416",[492,3.972]],["name/6417",[16,46.529]],["parent/6417",[492,3.972]],["name/6418",[17,43.671]],["parent/6418",[492,3.972]],["name/6419",[108,59.323]],["parent/6419",[492,3.972]],["name/6420",[109,56.114]],["parent/6420",[492,3.972]],["name/6421",[27,44.252]],["parent/6421",[492,3.972]],["name/6422",[110,43.121]],["parent/6422",[492,3.972]],["name/6423",[111,56.931]],["parent/6423",[492,3.972]],["name/6424",[112,54.657]],["parent/6424",[492,3.972]],["name/6425",[19,52.528]],["parent/6425",[492,3.972]],["name/6426",[1,49.281]],["parent/6426",[492,3.972]],["name/6427",[113,59.879]],["parent/6427",[1294,6.164]],["name/6428",[27,44.252]],["parent/6428",[1294,6.164]],["name/6429",[115,59.879]],["parent/6429",[1294,6.164]],["name/6430",[116,59.879]],["parent/6430",[1294,6.164]],["name/6431",[117,56.931]],["parent/6431",[1294,6.164]],["name/6432",[118,59.879]],["parent/6432",[1294,6.164]],["name/6433",[119,59.879]],["parent/6433",[1294,6.164]],["name/6434",[120,57.366]],["parent/6434",[1294,6.164]],["name/6435",[121,59.879]],["parent/6435",[1294,6.164]],["name/6436",[122,59.879]],["parent/6436",[1294,6.164]],["name/6437",[123,56.514]],["parent/6437",[1294,6.164]],["name/6438",[67,40.836]],["parent/6438",[1294,6.164]],["name/6439",[124,58.297]],["parent/6439",[1294,6.164]],["name/6440",[125,59.879]],["parent/6440",[492,3.972]],["name/6441",[126,59.879]],["parent/6441",[492,3.972]],["name/6442",[127,59.323]],["parent/6442",[492,3.972]],["name/6443",[128,59.879]],["parent/6443",[492,3.972]],["name/6444",[129,54.001]],["parent/6444",[492,3.972]],["name/6445",[130,54.001]],["parent/6445",[492,3.972]],["name/6446",[131,53.688]],["parent/6446",[492,3.972]],["name/6447",[132,59.879]],["parent/6447",[492,3.972]],["name/6448",[133,59.879]],["parent/6448",[492,3.972]],["name/6449",[134,59.879]],["parent/6449",[492,3.972]],["name/6450",[135,59.879]],["parent/6450",[492,3.972]],["name/6451",[136,59.323]],["parent/6451",[492,3.972]],["name/6452",[137,59.879]],["parent/6452",[492,3.972]],["name/6453",[138,59.879]],["parent/6453",[492,3.972]],["name/6454",[139,59.879]],["parent/6454",[492,3.972]],["name/6455",[140,59.879]],["parent/6455",[492,3.972]],["name/6456",[141,59.879]],["parent/6456",[492,3.972]],["name/6457",[142,59.879]],["parent/6457",[492,3.972]],["name/6458",[143,58.797]],["parent/6458",[492,3.972]],["name/6459",[144,59.323]],["parent/6459",[492,3.972]],["name/6460",[145,59.323]],["parent/6460",[492,3.972]],["name/6461",[146,59.323]],["parent/6461",[492,3.972]],["name/6462",[147,59.323]],["parent/6462",[492,3.972]],["name/6463",[148,59.879]],["parent/6463",[492,3.972]],["name/6464",[149,59.879]],["parent/6464",[492,3.972]],["name/6465",[150,59.879]],["parent/6465",[492,3.972]],["name/6466",[151,59.879]],["parent/6466",[492,3.972]],["name/6467",[152,59.879]],["parent/6467",[492,3.972]],["name/6468",[153,59.879]],["parent/6468",[492,3.972]],["name/6469",[154,59.879]],["parent/6469",[492,3.972]],["name/6470",[155,59.879]],["parent/6470",[492,3.972]],["name/6471",[156,57.82]],["parent/6471",[492,3.972]],["name/6472",[157,59.879]],["parent/6472",[492,3.972]],["name/6473",[158,59.879]],["parent/6473",[492,3.972]],["name/6474",[159,59.879]],["parent/6474",[492,3.972]],["name/6475",[160,59.879]],["parent/6475",[492,3.972]],["name/6476",[161,59.879]],["parent/6476",[492,3.972]],["name/6477",[162,56.114]],["parent/6477",[492,3.972]],["name/6478",[163,59.323]],["parent/6478",[492,3.972]],["name/6479",[164,59.323]],["parent/6479",[492,3.972]],["name/6480",[165,59.879]],["parent/6480",[492,3.972]],["name/6481",[166,59.879]],["parent/6481",[492,3.972]],["name/6482",[167,59.879]],["parent/6482",[492,3.972]],["name/6483",[168,59.879]],["parent/6483",[492,3.972]],["name/6484",[169,59.879]],["parent/6484",[492,3.972]],["name/6485",[170,56.931]],["parent/6485",[492,3.972]],["name/6486",[171,59.323]],["parent/6486",[492,3.972]],["name/6487",[172,59.323]],["parent/6487",[492,3.972]],["name/6488",[28,50.106]],["parent/6488",[492,3.972]],["name/6489",[24,49.085]],["parent/6489",[492,3.972]],["name/6490",[43,52.257]],["parent/6490",[492,3.972]],["name/6491",[44,52.257]],["parent/6491",[492,3.972]],["name/6492",[173,53.688]],["parent/6492",[492,3.972]],["name/6493",[174,58.797]],["parent/6493",[492,3.972]],["name/6494",[175,59.323]],["parent/6494",[492,3.972]],["name/6495",[176,59.323]],["parent/6495",[492,3.972]],["name/6496",[177,59.323]],["parent/6496",[492,3.972]],["name/6497",[178,59.323]],["parent/6497",[492,3.972]],["name/6498",[179,59.323]],["parent/6498",[492,3.972]],["name/6499",[180,59.323]],["parent/6499",[492,3.972]],["name/6500",[181,59.323]],["parent/6500",[492,3.972]],["name/6501",[182,59.323]],["parent/6501",[492,3.972]],["name/6502",[183,57.82]],["parent/6502",[492,3.972]],["name/6503",[184,59.323]],["parent/6503",[492,3.972]],["name/6504",[185,59.323]],["parent/6504",[492,3.972]],["name/6505",[186,56.514]],["parent/6505",[492,3.972]],["name/6506",[187,58.797]],["parent/6506",[492,3.972]],["name/6507",[188,59.323]],["parent/6507",[492,3.972]],["name/6508",[189,59.323]],["parent/6508",[492,3.972]],["name/6509",[190,59.323]],["parent/6509",[492,3.972]],["name/6510",[191,59.323]],["parent/6510",[492,3.972]],["name/6511",[192,59.323]],["parent/6511",[492,3.972]],["name/6512",[36,53.091]],["parent/6512",[492,3.972]],["name/6513",[34,53.091]],["parent/6513",[492,3.972]],["name/6514",[35,53.091]],["parent/6514",[492,3.972]],["name/6515",[46,46.68]],["parent/6515",[492,3.972]],["name/6516",[47,46.68]],["parent/6516",[492,3.972]],["name/6517",[48,46.68]],["parent/6517",[492,3.972]],["name/6518",[49,46.68]],["parent/6518",[492,3.972]],["name/6519",[50,46.68]],["parent/6519",[492,3.972]],["name/6520",[51,46.68]],["parent/6520",[492,3.972]],["name/6521",[52,46.68]],["parent/6521",[492,3.972]],["name/6522",[53,46.68]],["parent/6522",[492,3.972]],["name/6523",[54,46.68]],["parent/6523",[492,3.972]],["name/6524",[55,46.68]],["parent/6524",[492,3.972]],["name/6525",[56,46.68]],["parent/6525",[492,3.972]],["name/6526",[57,46.68]],["parent/6526",[492,3.972]],["name/6527",[58,46.68]],["parent/6527",[492,3.972]],["name/6528",[59,46.68]],["parent/6528",[492,3.972]],["name/6529",[60,46.68]],["parent/6529",[492,3.972]],["name/6530",[61,46.68]],["parent/6530",[492,3.972]],["name/6531",[62,46.68]],["parent/6531",[492,3.972]],["name/6532",[63,46.68]],["parent/6532",[492,3.972]],["name/6533",[64,46.38]],["parent/6533",[492,3.972]],["name/6534",[65,46.38]],["parent/6534",[492,3.972]],["name/6535",[66,46.68]],["parent/6535",[492,3.972]],["name/6536",[67,40.836]],["parent/6536",[492,3.972]],["name/6537",[68,46.233]],["parent/6537",[492,3.972]],["name/6538",[69,46.233]],["parent/6538",[492,3.972]],["name/6539",[70,46.68]],["parent/6539",[492,3.972]],["name/6540",[71,45.945]],["parent/6540",[492,3.972]],["name/6541",[72,46.529]],["parent/6541",[492,3.972]],["name/6542",[73,46.68]],["parent/6542",[492,3.972]],["name/6543",[74,46.68]],["parent/6543",[492,3.972]],["name/6544",[75,46.68]],["parent/6544",[492,3.972]],["name/6545",[76,46.529]],["parent/6545",[492,3.972]],["name/6546",[77,46.088]],["parent/6546",[492,3.972]],["name/6547",[78,46.088]],["parent/6547",[492,3.972]],["name/6548",[537,46.68]],["parent/6548",[]],["name/6549",[10,39.265]],["parent/6549",[537,4.606]],["name/6550",[14,53.688]],["parent/6550",[537,4.606]],["name/6551",[15,59.323]],["parent/6551",[537,4.606]],["name/6552",[16,46.529]],["parent/6552",[537,4.606]],["name/6553",[17,43.671]],["parent/6553",[537,4.606]],["name/6554",[1295,84.446]],["parent/6554",[537,4.606]],["name/6555",[1296,84.446]],["parent/6555",[537,4.606]],["name/6556",[27,44.252]],["parent/6556",[537,4.606]],["name/6557",[24,49.085]],["parent/6557",[537,4.606]],["name/6558",[28,50.106]],["parent/6558",[537,4.606]],["name/6559",[29,60.467]],["parent/6559",[537,4.606]],["name/6560",[30,60.467]],["parent/6560",[537,4.606]],["name/6561",[25,60.467]],["parent/6561",[537,4.606]],["name/6562",[31,60.467]],["parent/6562",[537,4.606]],["name/6563",[32,60.467]],["parent/6563",[537,4.606]],["name/6564",[33,60.467]],["parent/6564",[537,4.606]],["name/6565",[34,53.091]],["parent/6565",[537,4.606]],["name/6566",[35,53.091]],["parent/6566",[537,4.606]],["name/6567",[36,53.091]],["parent/6567",[537,4.606]],["name/6568",[37,55.729]],["parent/6568",[537,4.606]],["name/6569",[38,55.359]],["parent/6569",[537,4.606]],["name/6570",[39,60.467]],["parent/6570",[537,4.606]],["name/6571",[40,59.323]],["parent/6571",[537,4.606]],["name/6572",[41,60.467]],["parent/6572",[537,4.606]],["name/6573",[42,60.467]],["parent/6573",[537,4.606]],["name/6574",[43,52.257]],["parent/6574",[537,4.606]],["name/6575",[44,52.257]],["parent/6575",[537,4.606]],["name/6576",[45,60.467]],["parent/6576",[537,4.606]],["name/6577",[46,46.68]],["parent/6577",[537,4.606]],["name/6578",[47,46.68]],["parent/6578",[537,4.606]],["name/6579",[48,46.68]],["parent/6579",[537,4.606]],["name/6580",[49,46.68]],["parent/6580",[537,4.606]],["name/6581",[50,46.68]],["parent/6581",[537,4.606]],["name/6582",[51,46.68]],["parent/6582",[537,4.606]],["name/6583",[52,46.68]],["parent/6583",[537,4.606]],["name/6584",[53,46.68]],["parent/6584",[537,4.606]],["name/6585",[54,46.68]],["parent/6585",[537,4.606]],["name/6586",[55,46.68]],["parent/6586",[537,4.606]],["name/6587",[56,46.68]],["parent/6587",[537,4.606]],["name/6588",[57,46.68]],["parent/6588",[537,4.606]],["name/6589",[58,46.68]],["parent/6589",[537,4.606]],["name/6590",[59,46.68]],["parent/6590",[537,4.606]],["name/6591",[60,46.68]],["parent/6591",[537,4.606]],["name/6592",[61,46.68]],["parent/6592",[537,4.606]],["name/6593",[62,46.68]],["parent/6593",[537,4.606]],["name/6594",[63,46.68]],["parent/6594",[537,4.606]],["name/6595",[64,46.38]],["parent/6595",[537,4.606]],["name/6596",[65,46.38]],["parent/6596",[537,4.606]],["name/6597",[66,46.68]],["parent/6597",[537,4.606]],["name/6598",[67,40.836]],["parent/6598",[537,4.606]],["name/6599",[68,46.233]],["parent/6599",[537,4.606]],["name/6600",[69,46.233]],["parent/6600",[537,4.606]],["name/6601",[70,46.68]],["parent/6601",[537,4.606]],["name/6602",[71,45.945]],["parent/6602",[537,4.606]],["name/6603",[72,46.529]],["parent/6603",[537,4.606]],["name/6604",[73,46.68]],["parent/6604",[537,4.606]],["name/6605",[74,46.68]],["parent/6605",[537,4.606]],["name/6606",[75,46.68]],["parent/6606",[537,4.606]],["name/6607",[76,46.529]],["parent/6607",[537,4.606]],["name/6608",[77,46.088]],["parent/6608",[537,4.606]],["name/6609",[78,46.088]],["parent/6609",[537,4.606]],["name/6610",[538,65.988]],["parent/6610",[]],["name/6611",[1297,84.446]],["parent/6611",[538,6.51]],["name/6612",[17,43.671]],["parent/6612",[538,6.51]],["name/6613",[1298,84.446]],["parent/6613",[538,6.51]],["name/6614",[1299,84.446]],["parent/6614",[538,6.51]],["name/6615",[1300,84.446]],["parent/6615",[538,6.51]],["name/6616",[1301,84.446]],["parent/6616",[538,6.51]],["name/6617",[1302,84.446]],["parent/6617",[538,6.51]],["name/6618",[1303,67.1]],["parent/6618",[]],["name/6619",[1304,84.446]],["parent/6619",[1303,6.62]],["name/6620",[1305,84.446]],["parent/6620",[1303,6.62]],["name/6621",[1306,84.446]],["parent/6621",[1303,6.62]],["name/6622",[1307,84.446]],["parent/6622",[1303,6.62]],["name/6623",[1308,84.446]],["parent/6623",[1303,6.62]],["name/6624",[1309,84.446]],["parent/6624",[1303,6.62]],["name/6625",[1310,84.446]],["parent/6625",[1303,6.62]],["name/6626",[1311,75.973]],["parent/6626",[]],["name/6627",[86,71.453]],["parent/6627",[1311,7.496]],["name/6628",[85,71.453]],["parent/6628",[1311,7.496]],["name/6629",[464,47.149]],["parent/6629",[]],["name/6630",[10,39.265]],["parent/6630",[464,4.652]],["name/6631",[1312,84.446]],["parent/6631",[464,4.652]],["name/6632",[1313,84.446]],["parent/6632",[464,4.652]],["name/6633",[1314,84.446]],["parent/6633",[464,4.652]],["name/6634",[332,69.783]],["parent/6634",[464,4.652]],["name/6635",[16,46.529]],["parent/6635",[464,4.652]],["name/6636",[17,43.671]],["parent/6636",[464,4.652]],["name/6637",[214,71.453]],["parent/6637",[464,4.652]],["name/6638",[1315,84.446]],["parent/6638",[464,4.652]],["name/6639",[1316,84.446]],["parent/6639",[464,4.652]],["name/6640",[1317,84.446]],["parent/6640",[464,4.652]],["name/6641",[1318,84.446]],["parent/6641",[464,4.652]],["name/6642",[1319,84.446]],["parent/6642",[464,4.652]],["name/6643",[216,79.338]],["parent/6643",[464,4.652]],["name/6644",[1320,84.446]],["parent/6644",[464,4.652]],["name/6645",[1321,84.446]],["parent/6645",[464,4.652]],["name/6646",[1322,84.446]],["parent/6646",[464,4.652]],["name/6647",[1323,84.446]],["parent/6647",[464,4.652]],["name/6648",[1324,84.446]],["parent/6648",[464,4.652]],["name/6649",[1325,84.446]],["parent/6649",[464,4.652]],["name/6650",[1326,84.446]],["parent/6650",[464,4.652]],["name/6651",[1327,84.446]],["parent/6651",[464,4.652]],["name/6652",[1328,84.446]],["parent/6652",[464,4.652]],["name/6653",[27,44.252]],["parent/6653",[464,4.652]],["name/6654",[46,46.68]],["parent/6654",[464,4.652]],["name/6655",[47,46.68]],["parent/6655",[464,4.652]],["name/6656",[48,46.68]],["parent/6656",[464,4.652]],["name/6657",[49,46.68]],["parent/6657",[464,4.652]],["name/6658",[50,46.68]],["parent/6658",[464,4.652]],["name/6659",[51,46.68]],["parent/6659",[464,4.652]],["name/6660",[52,46.68]],["parent/6660",[464,4.652]],["name/6661",[53,46.68]],["parent/6661",[464,4.652]],["name/6662",[54,46.68]],["parent/6662",[464,4.652]],["name/6663",[55,46.68]],["parent/6663",[464,4.652]],["name/6664",[56,46.68]],["parent/6664",[464,4.652]],["name/6665",[57,46.68]],["parent/6665",[464,4.652]],["name/6666",[58,46.68]],["parent/6666",[464,4.652]],["name/6667",[59,46.68]],["parent/6667",[464,4.652]],["name/6668",[60,46.68]],["parent/6668",[464,4.652]],["name/6669",[61,46.68]],["parent/6669",[464,4.652]],["name/6670",[62,46.68]],["parent/6670",[464,4.652]],["name/6671",[63,46.68]],["parent/6671",[464,4.652]],["name/6672",[64,46.38]],["parent/6672",[464,4.652]],["name/6673",[65,46.38]],["parent/6673",[464,4.652]],["name/6674",[66,46.68]],["parent/6674",[464,4.652]],["name/6675",[67,40.836]],["parent/6675",[464,4.652]],["name/6676",[68,46.233]],["parent/6676",[464,4.652]],["name/6677",[69,46.233]],["parent/6677",[464,4.652]],["name/6678",[70,46.68]],["parent/6678",[464,4.652]],["name/6679",[71,45.945]],["parent/6679",[464,4.652]],["name/6680",[72,46.529]],["parent/6680",[464,4.652]],["name/6681",[73,46.68]],["parent/6681",[464,4.652]],["name/6682",[74,46.68]],["parent/6682",[464,4.652]],["name/6683",[75,46.68]],["parent/6683",[464,4.652]],["name/6684",[76,46.529]],["parent/6684",[464,4.652]],["name/6685",[77,46.088]],["parent/6685",[464,4.652]],["name/6686",[78,46.088]],["parent/6686",[464,4.652]],["name/6687",[1329,84.446]],["parent/6687",[]],["name/6688",[1330,84.446]],["parent/6688",[]],["name/6689",[1331,84.446]],["parent/6689",[]],["name/6690",[1332,84.446]],["parent/6690",[]],["name/6691",[1333,84.446]],["parent/6691",[]],["name/6692",[1334,84.446]],["parent/6692",[]],["name/6693",[1335,84.446]],["parent/6693",[]],["name/6694",[1336,84.446]],["parent/6694",[]],["name/6695",[1337,84.446]],["parent/6695",[]],["name/6696",[1338,84.446]],["parent/6696",[]],["name/6697",[1339,84.446]],["parent/6697",[]],["name/6698",[1340,84.446]],["parent/6698",[]],["name/6699",[10,39.265]],["parent/6699",[]],["name/6700",[8,44.998]],["parent/6700",[10,3.874]],["name/6701",[87,45.393]],["parent/6701",[10,3.874]],["name/6702",[101,45.945]],["parent/6702",[10,3.874]],["name/6703",[515,47.149]],["parent/6703",[10,3.874]],["name/6704",[104,40.02]],["parent/6704",[10,3.874]],["name/6705",[197,46.68]],["parent/6705",[10,3.874]],["name/6706",[232,45.945]],["parent/6706",[10,3.874]],["name/6707",[319,41.361]],["parent/6707",[10,3.874]],["name/6708",[360,46.233]],["parent/6708",[10,3.874]],["name/6709",[369,40.098]],["parent/6709",[10,3.874]],["name/6710",[376,40.02]],["parent/6710",[10,3.874]],["name/6711",[389,49.894]],["parent/6711",[10,3.874]],["name/6712",[393,46.38]],["parent/6712",[10,3.874]],["name/6713",[474,51.244]],["parent/6713",[10,3.874]],["name/6714",[516,54.001]],["parent/6714",[10,3.874]],["name/6715",[517,46.233]],["parent/6715",[10,3.874]],["name/6716",[490,38.838]],["parent/6716",[10,3.874]],["name/6717",[110,43.121]],["parent/6717",[10,3.874]],["name/6718",[488,40.098]],["parent/6718",[10,3.874]],["name/6719",[495,36.379]],["parent/6719",[10,3.874]],["name/6720",[496,45.945]],["parent/6720",[10,3.874]],["name/6721",[518,38.229]],["parent/6721",[10,3.874]],["name/6722",[520,46.529]],["parent/6722",[10,3.874]],["name/6723",[493,40.258]],["parent/6723",[10,3.874]],["name/6724",[521,47.149]],["parent/6724",[10,3.874]],["name/6725",[503,49.685]],["parent/6725",[10,3.874]],["name/6726",[406,40.098]],["parent/6726",[10,3.874]],["name/6727",[523,39.635]],["parent/6727",[10,3.874]],["name/6728",[512,46.68]],["parent/6728",[10,3.874]],["name/6729",[497,44.998]],["parent/6729",[10,3.874]],["name/6730",[524,46.834]],["parent/6730",[10,3.874]],["name/6731",[511,47.983]],["parent/6731",[10,3.874]],["name/6732",[526,51.244]],["parent/6732",[10,3.874]],["name/6733",[489,40.098]],["parent/6733",[10,3.874]],["name/6734",[527,47.149]],["parent/6734",[10,3.874]],["name/6735",[476,41.451]],["parent/6735",[10,3.874]],["name/6736",[504,49.085]],["parent/6736",[10,3.874]],["name/6737",[528,49.685]],["parent/6737",[10,3.874]],["name/6738",[507,49.281]],["parent/6738",[10,3.874]],["name/6739",[529,48.337]],["parent/6739",[10,3.874]],["name/6740",[487,36.488]],["parent/6740",[10,3.874]],["name/6741",[1122,47.983]],["parent/6741",[10,3.874]],["name/6742",[530,47.474]],["parent/6742",[10,3.874]],["name/6743",[531,47.641]],["parent/6743",[10,3.874]],["name/6744",[506,49.685]],["parent/6744",[10,3.874]],["name/6745",[436,46.529]],["parent/6745",[10,3.874]],["name/6746",[1161,38.978]],["parent/6746",[10,3.874]],["name/6747",[500,45.665]],["parent/6747",[10,3.874]],["name/6748",[297,45.665]],["parent/6748",[10,3.874]],["name/6749",[510,50.324]],["parent/6749",[10,3.874]],["name/6750",[494,38.164]],["parent/6750",[10,3.874]],["name/6751",[533,48.704]],["parent/6751",[10,3.874]],["name/6752",[486,41.726]],["parent/6752",[10,3.874]],["name/6753",[534,49.481]],["parent/6753",[10,3.874]],["name/6754",[509,48.704]],["parent/6754",[10,3.874]],["name/6755",[498,40.02]],["parent/6755",[10,3.874]],["name/6756",[491,39.942]],["parent/6756",[10,3.874]],["name/6757",[1260,44.618]],["parent/6757",[10,3.874]],["name/6758",[536,46.834]],["parent/6758",[10,3.874]],["name/6759",[492,40.258]],["parent/6759",[10,3.874]],["name/6760",[537,46.68]],["parent/6760",[10,3.874]],["name/6761",[464,47.149]],["parent/6761",[10,3.874]],["name/6762",[539,46.38]],["parent/6762",[10,3.874]],["name/6763",[508,50.106]],["parent/6763",[10,3.874]],["name/6764",[465,47.149]],["parent/6764",[10,3.874]],["name/6765",[540,47.983]],["parent/6765",[10,3.874]],["name/6766",[1341,84.446]],["parent/6766",[]],["name/6767",[1342,84.446]],["parent/6767",[]],["name/6768",[1343,84.446]],["parent/6768",[]],["name/6769",[1344,84.446]],["parent/6769",[]],["name/6770",[1345,84.446]],["parent/6770",[]],["name/6771",[1346,84.446]],["parent/6771",[]],["name/6772",[1347,84.446]],["parent/6772",[]],["name/6773",[1348,71.453]],["parent/6773",[]],["name/6774",[1,49.281]],["parent/6774",[1348,7.05]],["name/6775",[17,43.671]],["parent/6775",[1348,7.05]],["name/6776",[97,67.1]],["parent/6776",[1348,7.05]],["name/6777",[1349,64.987]],["parent/6777",[]],["name/6778",[513,40.258]],["parent/6778",[1349,6.412]],["name/6779",[1350,84.446]],["parent/6779",[1349,6.412]],["name/6780",[1351,84.446]],["parent/6780",[1349,6.412]],["name/6781",[972,79.338]],["parent/6781",[1349,6.412]],["name/6782",[1352,84.446]],["parent/6782",[1349,6.412]],["name/6783",[1353,84.446]],["parent/6783",[1349,6.412]],["name/6784",[1354,84.446]],["parent/6784",[1349,6.412]],["name/6785",[1348,71.453]],["parent/6785",[1349,6.412]],["name/6786",[17,43.671]],["parent/6786",[1349,6.412]],["name/6787",[1355,69.783]],["parent/6787",[]],["name/6788",[1356,79.338]],["parent/6788",[1355,6.885]],["name/6789",[1357,79.338]],["parent/6789",[1355,6.885]],["name/6790",[1358,79.338]],["parent/6790",[1355,6.885]],["name/6791",[1359,79.338]],["parent/6791",[1355,6.885]],["name/6792",[1360,79.338]],["parent/6792",[1355,6.885]],["name/6793",[539,46.38]],["parent/6793",[]],["name/6794",[10,39.265]],["parent/6794",[539,4.576]],["name/6795",[11,57.82]],["parent/6795",[539,4.576]],["name/6796",[1361,84.446]],["parent/6796",[539,4.576]],["name/6797",[14,53.688]],["parent/6797",[539,4.576]],["name/6798",[15,59.323]],["parent/6798",[539,4.576]],["name/6799",[16,46.529]],["parent/6799",[539,4.576]],["name/6800",[17,43.671]],["parent/6800",[539,4.576]],["name/6801",[19,52.528]],["parent/6801",[539,4.576]],["name/6802",[1362,79.338]],["parent/6802",[539,4.576]],["name/6803",[1363,84.446]],["parent/6803",[539,4.576]],["name/6804",[27,44.252]],["parent/6804",[539,4.576]],["name/6805",[24,49.085]],["parent/6805",[539,4.576]],["name/6806",[28,50.106]],["parent/6806",[539,4.576]],["name/6807",[29,60.467]],["parent/6807",[539,4.576]],["name/6808",[30,60.467]],["parent/6808",[539,4.576]],["name/6809",[25,60.467]],["parent/6809",[539,4.576]],["name/6810",[31,60.467]],["parent/6810",[539,4.576]],["name/6811",[32,60.467]],["parent/6811",[539,4.576]],["name/6812",[33,60.467]],["parent/6812",[539,4.576]],["name/6813",[34,53.091]],["parent/6813",[539,4.576]],["name/6814",[35,53.091]],["parent/6814",[539,4.576]],["name/6815",[36,53.091]],["parent/6815",[539,4.576]],["name/6816",[37,55.729]],["parent/6816",[539,4.576]],["name/6817",[38,55.359]],["parent/6817",[539,4.576]],["name/6818",[39,60.467]],["parent/6818",[539,4.576]],["name/6819",[40,59.323]],["parent/6819",[539,4.576]],["name/6820",[41,60.467]],["parent/6820",[539,4.576]],["name/6821",[42,60.467]],["parent/6821",[539,4.576]],["name/6822",[43,52.257]],["parent/6822",[539,4.576]],["name/6823",[44,52.257]],["parent/6823",[539,4.576]],["name/6824",[45,60.467]],["parent/6824",[539,4.576]],["name/6825",[46,46.68]],["parent/6825",[539,4.576]],["name/6826",[47,46.68]],["parent/6826",[539,4.576]],["name/6827",[48,46.68]],["parent/6827",[539,4.576]],["name/6828",[49,46.68]],["parent/6828",[539,4.576]],["name/6829",[50,46.68]],["parent/6829",[539,4.576]],["name/6830",[51,46.68]],["parent/6830",[539,4.576]],["name/6831",[52,46.68]],["parent/6831",[539,4.576]],["name/6832",[53,46.68]],["parent/6832",[539,4.576]],["name/6833",[54,46.68]],["parent/6833",[539,4.576]],["name/6834",[55,46.68]],["parent/6834",[539,4.576]],["name/6835",[56,46.68]],["parent/6835",[539,4.576]],["name/6836",[57,46.68]],["parent/6836",[539,4.576]],["name/6837",[58,46.68]],["parent/6837",[539,4.576]],["name/6838",[59,46.68]],["parent/6838",[539,4.576]],["name/6839",[60,46.68]],["parent/6839",[539,4.576]],["name/6840",[61,46.68]],["parent/6840",[539,4.576]],["name/6841",[62,46.68]],["parent/6841",[539,4.576]],["name/6842",[63,46.68]],["parent/6842",[539,4.576]],["name/6843",[64,46.38]],["parent/6843",[539,4.576]],["name/6844",[65,46.38]],["parent/6844",[539,4.576]],["name/6845",[66,46.68]],["parent/6845",[539,4.576]],["name/6846",[67,40.836]],["parent/6846",[539,4.576]],["name/6847",[68,46.233]],["parent/6847",[539,4.576]],["name/6848",[69,46.233]],["parent/6848",[539,4.576]],["name/6849",[70,46.68]],["parent/6849",[539,4.576]],["name/6850",[71,45.945]],["parent/6850",[539,4.576]],["name/6851",[72,46.529]],["parent/6851",[539,4.576]],["name/6852",[73,46.68]],["parent/6852",[539,4.576]],["name/6853",[74,46.68]],["parent/6853",[539,4.576]],["name/6854",[75,46.68]],["parent/6854",[539,4.576]],["name/6855",[76,46.529]],["parent/6855",[539,4.576]],["name/6856",[77,46.088]],["parent/6856",[539,4.576]],["name/6857",[78,46.088]],["parent/6857",[539,4.576]],["name/6858",[508,50.106]],["parent/6858",[]],["name/6859",[9,56.931]],["parent/6859",[508,4.944]],["name/6860",[10,39.265]],["parent/6860",[508,4.944]],["name/6861",[16,46.529]],["parent/6861",[508,4.944]],["name/6862",[17,43.671]],["parent/6862",[508,4.944]],["name/6863",[19,52.528]],["parent/6863",[508,4.944]],["name/6864",[1,49.281]],["parent/6864",[508,4.944]],["name/6865",[1358,79.338]],["parent/6865",[1364,7.05]],["name/6866",[1356,79.338]],["parent/6866",[1364,7.05]],["name/6867",[1357,79.338]],["parent/6867",[1364,7.05]],["name/6868",[1359,79.338]],["parent/6868",[1364,7.05]],["name/6869",[1360,79.338]],["parent/6869",[1364,7.05]],["name/6870",[377,68.352]],["parent/6870",[508,4.944]],["name/6871",[1362,79.338]],["parent/6871",[508,4.944]],["name/6872",[27,44.252]],["parent/6872",[508,4.944]],["name/6873",[46,46.68]],["parent/6873",[508,4.944]],["name/6874",[47,46.68]],["parent/6874",[508,4.944]],["name/6875",[48,46.68]],["parent/6875",[508,4.944]],["name/6876",[49,46.68]],["parent/6876",[508,4.944]],["name/6877",[50,46.68]],["parent/6877",[508,4.944]],["name/6878",[51,46.68]],["parent/6878",[508,4.944]],["name/6879",[52,46.68]],["parent/6879",[508,4.944]],["name/6880",[53,46.68]],["parent/6880",[508,4.944]],["name/6881",[54,46.68]],["parent/6881",[508,4.944]],["name/6882",[55,46.68]],["parent/6882",[508,4.944]],["name/6883",[56,46.68]],["parent/6883",[508,4.944]],["name/6884",[57,46.68]],["parent/6884",[508,4.944]],["name/6885",[58,46.68]],["parent/6885",[508,4.944]],["name/6886",[59,46.68]],["parent/6886",[508,4.944]],["name/6887",[60,46.68]],["parent/6887",[508,4.944]],["name/6888",[61,46.68]],["parent/6888",[508,4.944]],["name/6889",[62,46.68]],["parent/6889",[508,4.944]],["name/6890",[63,46.68]],["parent/6890",[508,4.944]],["name/6891",[64,46.38]],["parent/6891",[508,4.944]],["name/6892",[65,46.38]],["parent/6892",[508,4.944]],["name/6893",[66,46.68]],["parent/6893",[508,4.944]],["name/6894",[67,40.836]],["parent/6894",[508,4.944]],["name/6895",[68,46.233]],["parent/6895",[508,4.944]],["name/6896",[69,46.233]],["parent/6896",[508,4.944]],["name/6897",[70,46.68]],["parent/6897",[508,4.944]],["name/6898",[71,45.945]],["parent/6898",[508,4.944]],["name/6899",[72,46.529]],["parent/6899",[508,4.944]],["name/6900",[73,46.68]],["parent/6900",[508,4.944]],["name/6901",[74,46.68]],["parent/6901",[508,4.944]],["name/6902",[75,46.68]],["parent/6902",[508,4.944]],["name/6903",[76,46.529]],["parent/6903",[508,4.944]],["name/6904",[77,46.088]],["parent/6904",[508,4.944]],["name/6905",[78,46.088]],["parent/6905",[508,4.944]],["name/6906",[1365,73.46]],["parent/6906",[]],["name/6907",[1366,84.446]],["parent/6907",[1365,7.248]],["name/6908",[1367,84.446]],["parent/6908",[1365,7.248]],["name/6909",[557,73.46]],["parent/6909",[1365,7.248]],["name/6910",[549,71.453]],["parent/6910",[]],["name/6911",[1368,84.446]],["parent/6911",[549,7.05]],["name/6912",[1369,84.446]],["parent/6912",[549,7.05]],["name/6913",[1370,84.446]],["parent/6913",[549,7.05]],["name/6914",[465,47.149]],["parent/6914",[]],["name/6915",[10,39.265]],["parent/6915",[465,4.652]],["name/6916",[1371,84.446]],["parent/6916",[465,4.652]],["name/6917",[16,46.529]],["parent/6917",[465,4.652]],["name/6918",[17,43.671]],["parent/6918",[465,4.652]],["name/6919",[1372,84.446]],["parent/6919",[465,4.652]],["name/6920",[1373,84.446]],["parent/6920",[465,4.652]],["name/6921",[1374,84.446]],["parent/6921",[465,4.652]],["name/6922",[1375,84.446]],["parent/6922",[465,4.652]],["name/6923",[1277,79.338]],["parent/6923",[465,4.652]],["name/6924",[1376,84.446]],["parent/6924",[465,4.652]],["name/6925",[1377,84.446]],["parent/6925",[465,4.652]],["name/6926",[641,79.338]],["parent/6926",[465,4.652]],["name/6927",[1378,84.446]],["parent/6927",[465,4.652]],["name/6928",[131,53.688]],["parent/6928",[465,4.652]],["name/6929",[129,54.001]],["parent/6929",[465,4.652]],["name/6930",[63,46.68]],["parent/6930",[465,4.652]],["name/6931",[1379,84.446]],["parent/6931",[465,4.652]],["name/6932",[1380,84.446]],["parent/6932",[465,4.652]],["name/6933",[1381,84.446]],["parent/6933",[465,4.652]],["name/6934",[1382,84.446]],["parent/6934",[465,4.652]],["name/6935",[1283,79.338]],["parent/6935",[465,4.652]],["name/6936",[1383,84.446]],["parent/6936",[465,4.652]],["name/6937",[109,56.114]],["parent/6937",[465,4.652]],["name/6938",[130,54.001]],["parent/6938",[465,4.652]],["name/6939",[27,44.252]],["parent/6939",[465,4.652]],["name/6940",[46,46.68]],["parent/6940",[465,4.652]],["name/6941",[47,46.68]],["parent/6941",[465,4.652]],["name/6942",[48,46.68]],["parent/6942",[465,4.652]],["name/6943",[49,46.68]],["parent/6943",[465,4.652]],["name/6944",[50,46.68]],["parent/6944",[465,4.652]],["name/6945",[51,46.68]],["parent/6945",[465,4.652]],["name/6946",[52,46.68]],["parent/6946",[465,4.652]],["name/6947",[53,46.68]],["parent/6947",[465,4.652]],["name/6948",[54,46.68]],["parent/6948",[465,4.652]],["name/6949",[55,46.68]],["parent/6949",[465,4.652]],["name/6950",[56,46.68]],["parent/6950",[465,4.652]],["name/6951",[57,46.68]],["parent/6951",[465,4.652]],["name/6952",[58,46.68]],["parent/6952",[465,4.652]],["name/6953",[59,46.68]],["parent/6953",[465,4.652]],["name/6954",[60,46.68]],["parent/6954",[465,4.652]],["name/6955",[61,46.68]],["parent/6955",[465,4.652]],["name/6956",[62,46.68]],["parent/6956",[465,4.652]],["name/6957",[64,46.38]],["parent/6957",[465,4.652]],["name/6958",[65,46.38]],["parent/6958",[465,4.652]],["name/6959",[66,46.68]],["parent/6959",[465,4.652]],["name/6960",[67,40.836]],["parent/6960",[465,4.652]],["name/6961",[68,46.233]],["parent/6961",[465,4.652]],["name/6962",[69,46.233]],["parent/6962",[465,4.652]],["name/6963",[70,46.68]],["parent/6963",[465,4.652]],["name/6964",[71,45.945]],["parent/6964",[465,4.652]],["name/6965",[72,46.529]],["parent/6965",[465,4.652]],["name/6966",[73,46.68]],["parent/6966",[465,4.652]],["name/6967",[74,46.68]],["parent/6967",[465,4.652]],["name/6968",[75,46.68]],["parent/6968",[465,4.652]],["name/6969",[76,46.529]],["parent/6969",[465,4.652]],["name/6970",[77,46.088]],["parent/6970",[465,4.652]],["name/6971",[78,46.088]],["parent/6971",[465,4.652]],["name/6972",[1384,84.446]],["parent/6972",[]],["name/6973",[1385,84.446]],["parent/6973",[]]],"invertedIndex":[["__type",{"_index":1,"name":{"1":{},"20":{},"175":{},"246":{},"380":{},"461":{},"748":{},"819":{},"960":{},"1203":{},"1255":{},"1361":{},"1364":{},"1552":{},"1784":{},"2028":{},"2253":{},"2369":{},"2477":{},"2673":{},"3032":{},"3202":{},"3397":{},"3523":{},"3525":{},"3564":{},"3574":{},"3717":{},"4083":{},"4137":{},"4143":{},"4382":{},"4493":{},"4629":{},"4749":{},"4958":{},"5151":{},"5165":{},"5237":{},"5424":{},"5550":{},"5707":{},"5773":{},"5834":{},"6019":{},"6145":{},"6150":{},"6426":{},"6774":{},"6864":{}},"parent":{}}],["above",{"_index":809,"name":{"2799":{},"4203":{}},"parent":{}}],["abovecode",{"_index":98,"name":{"161":{}},"parent":{}}],["accid",{"_index":432,"name":{"1246":{}},"parent":{}}],["accidental",{"_index":8,"name":{"8":{},"1217":{},"1397":{},"1425":{},"1564":{},"2945":{},"2948":{},"2951":{},"2991":{},"6700":{}},"parent":{"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"18":{},"19":{},"20":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{}}}],["accidental.__type",{"_index":21,"name":{},"parent":{"21":{},"22":{},"23":{}}}],["accidentallowerpadding",{"_index":903,"name":{"3399":{}},"parent":{}}],["accidentalmap",{"_index":564,"name":{"1537":{}},"parent":{}}],["accidentals",{"_index":419,"name":{"1230":{},"1258":{},"2970":{}},"parent":{}}],["accidentalspacing",{"_index":799,"name":{"2600":{}},"parent":{}}],["accidentalupperpadding",{"_index":901,"name":{"3398":{}},"parent":{}}],["accidentalvalue",{"_index":846,"name":{"2955":{}},"parent":{}}],["add",{"_index":277,"name":{"570":{},"1663":{},"3676":{},"5251":{}},"parent":{}}],["addbeziercurve",{"_index":267,"name":{"556":{}},"parent":{}}],["addchildelement",{"_index":46,"name":{"46":{},"126":{},"198":{},"335":{},"412":{},"490":{},"704":{},"770":{},"908":{},"1050":{},"1105":{},"1169":{},"1325":{},"1714":{},"1867":{},"1978":{},"2118":{},"2329":{},"2395":{},"2558":{},"2628":{},"2762":{},"2828":{},"2910":{},"3123":{},"3288":{},"3349":{},"3426":{},"3488":{},"3585":{},"3807":{},"3925":{},"3991":{},"4040":{},"4095":{},"4161":{},"4227":{},"4458":{},"4529":{},"4585":{},"4649":{},"4706":{},"4763":{},"4824":{},"4894":{},"5045":{},"5115":{},"5189":{},"5323":{},"5505":{},"5563":{},"5669":{},"5721":{},"5788":{},"5924":{},"6109":{},"6199":{},"6316":{},"6381":{},"6515":{},"6577":{},"6654":{},"6825":{},"6873":{},"6940":{}},"parent":{}}],["addchord",{"_index":451,"name":{"1281":{}},"parent":{}}],["addclass",{"_index":55,"name":{"55":{},"135":{},"207":{},"344":{},"421":{},"499":{},"713":{},"779":{},"917":{},"1059":{},"1114":{},"1178":{},"1335":{},"1723":{},"1876":{},"1987":{},"2127":{},"2337":{},"2404":{},"2567":{},"2637":{},"2771":{},"2837":{},"2919":{},"3133":{},"3297":{},"3358":{},"3435":{},"3497":{},"3594":{},"3816":{},"3933":{},"4000":{},"4049":{},"4104":{},"4170":{},"4236":{},"4466":{},"4538":{},"4594":{},"4658":{},"4715":{},"4772":{},"4833":{},"4903":{},"5055":{},"5124":{},"5198":{},"5332":{},"5514":{},"5572":{},"5677":{},"5730":{},"5796":{},"5933":{},"6118":{},"6209":{},"6325":{},"6390":{},"6524":{},"6586":{},"6663":{},"6834":{},"6882":{},"6949":{}},"parent":{}}],["addclef",{"_index":1030,"name":{"3912":{},"5656":{}},"parent":{}}],["addcommithook",{"_index":443,"name":{"1273":{},"1309":{}},"parent":{}}],["addconnector",{"_index":1206,"name":{"5319":{}},"parent":{}}],["addendclef",{"_index":1031,"name":{"3913":{},"5657":{}},"parent":{}}],["addendmodifier",{"_index":1019,"name":{"3900":{},"5644":{}},"parent":{}}],["addendnote",{"_index":1176,"name":{"5168":{}},"parent":{}}],["addendtimesignature",{"_index":1033,"name":{"3915":{},"5659":{}},"parent":{}}],["addglyph",{"_index":349,"name":{"673":{}},"parent":{}}],["addglyphortext",{"_index":350,"name":{"674":{}},"parent":{}}],["addglyphsuperscript",{"_index":348,"name":{"672":{}},"parent":{}}],["addkeysignature",{"_index":1029,"name":{"3911":{},"5655":{}},"parent":{}}],["addline",{"_index":351,"name":{"675":{}},"parent":{}}],["addmember",{"_index":819,"name":{"2874":{}},"parent":{}}],["addmodifier",{"_index":156,"name":{"291":{},"864":{},"1005":{},"1826":{},"2073":{},"2291":{},"2518":{},"2718":{},"2873":{},"3077":{},"3245":{},"3762":{},"3899":{},"4420":{},"5002":{},"5465":{},"5643":{},"5879":{},"6064":{},"6179":{},"6471":{}},"parent":{}}],["addnote",{"_index":449,"name":{"1279":{}},"parent":{}}],["addnoteoption",{"_index":448,"name":{"1278":{}},"parent":{}}],["addpoint",{"_index":263,"name":{"552":{}},"parent":{}}],["addquadraticcurve",{"_index":266,"name":{"555":{}},"parent":{}}],["addsinglenote",{"_index":450,"name":{"1280":{}},"parent":{}}],["addstave",{"_index":1207,"name":{"5320":{}},"parent":{}}],["addstroke",{"_index":128,"name":{"263":{},"836":{},"977":{},"1800":{},"2045":{},"2269":{},"2494":{},"2690":{},"3049":{},"3219":{},"3734":{},"4398":{},"4975":{},"5441":{},"5851":{},"6036":{},"6443":{}},"parent":{}}],["addsymbolblock",{"_index":344,"name":{"668":{}},"parent":{}}],["addtabglyph",{"_index":1221,"name":{"5604":{}},"parent":{}}],["addtext",{"_index":345,"name":{"669":{}},"parent":{}}],["addtextsubscript",{"_index":347,"name":{"671":{}},"parent":{}}],["addtextsuperscript",{"_index":346,"name":{"670":{}},"parent":{}}],["addtickable",{"_index":1283,"name":{"6270":{},"6935":{}},"parent":{}}],["addtickables",{"_index":1383,"name":{"6936":{}},"parent":{}}],["addtimesignature",{"_index":1032,"name":{"3914":{},"5658":{}},"parent":{}}],["addtomodifiercontext",{"_index":108,"name":{"239":{},"812":{},"1036":{},"1754":{},"2104":{},"2316":{},"2545":{},"2666":{},"3108":{},"3274":{},"3793":{},"4445":{},"5031":{},"5492":{},"5910":{},"6095":{},"6178":{},"6419":{}},"parent":{}}],["addtostave",{"_index":803,"name":{"2607":{}},"parent":{}}],["addtrebleglyph",{"_index":1034,"name":{"3916":{},"5660":{}},"parent":{}}],["addx",{"_index":264,"name":{"553":{}},"parent":{}}],["addy",{"_index":265,"name":{"554":{}},"parent":{}}],["adjustheightforbeam",{"_index":1160,"name":{"4892":{}},"parent":{}}],["adjustheightforflag",{"_index":1159,"name":{"4891":{}},"parent":{}}],["advancewidth",{"_index":592,"name":{"1579":{}},"parent":{}}],["align_center",{"_index":744,"name":{"2165":{},"3021":{},"3176":{},"4296":{},"5373":{},"6002":{}},"parent":{}}],["align_rests",{"_index":628,"name":{"1621":{}},"parent":{}}],["alignmentcontexts",{"_index":631,"name":{"1625":{}},"parent":{"1626":{},"1627":{},"1628":{},"1629":{}}}],["alignrests",{"_index":642,"name":{"1639":{}},"parent":{}}],["alignreststonotes",{"_index":640,"name":{"1636":{}},"parent":{}}],["alignsubnoteswithnote",{"_index":45,"name":{"45":{},"125":{},"197":{},"489":{},"703":{},"1168":{},"1713":{},"2394":{},"2827":{},"3348":{},"3425":{},"3487":{},"5114":{},"5188":{},"6576":{},"6824":{}},"parent":{}}],["alpha",{"_index":1191,"name":{"5288":{}},"parent":{}}],["alterkey",{"_index":806,"name":{"2612":{}},"parent":{}}],["annotation",{"_index":87,"name":{"89":{},"747":{},"1398":{},"1426":{},"6701":{}},"parent":{"90":{},"91":{},"92":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"134":{},"135":{},"136":{},"137":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{}}}],["annotation_spacing",{"_index":121,"name":{"255":{},"828":{},"969":{},"1793":{},"2037":{},"2262":{},"2486":{},"2682":{},"3041":{},"3211":{},"3726":{},"4391":{},"4967":{},"5433":{},"5843":{},"6028":{},"6435":{}},"parent":{}}],["annotationhorizontaljustify",{"_index":79,"name":{"79":{},"1505":{}},"parent":{"80":{},"81":{},"82":{},"83":{}}}],["annotationverticaljustify",{"_index":84,"name":{"84":{},"1506":{}},"parent":{"85":{},"86":{},"87":{},"88":{}}}],["applyaccidentals",{"_index":13,"name":{"13":{}},"parent":{}}],["applyandgetbeams",{"_index":199,"name":{"375":{}},"parent":{}}],["applyattributes",{"_index":1189,"name":{"5263":{}},"parent":{}}],["applyfontstyle",{"_index":1079,"name":{"4159":{}},"parent":{}}],["applylinestyle",{"_index":1078,"name":{"4158":{}},"parent":{}}],["applystemextensions",{"_index":225,"name":{"406":{}},"parent":{}}],["applystyle",{"_index":51,"name":{"51":{},"131":{},"203":{},"340":{},"417":{},"495":{},"709":{},"775":{},"913":{},"1055":{},"1110":{},"1174":{},"1330":{},"1719":{},"1872":{},"1983":{},"2123":{},"2333":{},"2400":{},"2563":{},"2633":{},"2767":{},"2833":{},"2915":{},"3128":{},"3293":{},"3354":{},"3431":{},"3493":{},"3590":{},"3812":{},"3929":{},"3996":{},"4045":{},"4100":{},"4166":{},"4232":{},"4462":{},"4534":{},"4590":{},"4654":{},"4711":{},"4768":{},"4829":{},"4899":{},"5050":{},"5120":{},"5194":{},"5328":{},"5510":{},"5568":{},"5673":{},"5726":{},"5784":{},"5929":{},"6114":{},"6204":{},"6321":{},"6386":{},"6520":{},"6582":{},"6659":{},"6830":{},"6878":{},"6945":{}},"parent":{}}],["applytickmultiplier",{"_index":191,"name":{"330":{},"903":{},"1045":{},"1862":{},"2113":{},"2324":{},"2553":{},"2757":{},"3118":{},"3283":{},"3802":{},"4453":{},"5040":{},"5500":{},"5919":{},"6104":{},"6190":{},"6510":{}},"parent":{}}],["arc",{"_index":295,"name":{"589":{},"3667":{},"5273":{}},"parent":{}}],["arpeggio_directionless",{"_index":1175,"name":{"5158":{}},"parent":{}}],["array",{"_index":634,"name":{"1628":{}},"parent":{}}],["arrowhead_angle",{"_index":1075,"name":{"4153":{}},"parent":{}}],["arrowhead_length",{"_index":1074,"name":{"4152":{}},"parent":{}}],["articulation",{"_index":101,"name":{"164":{},"1400":{},"1427":{},"1568":{},"6702":{}},"parent":{"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"177":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"190":{},"191":{},"192":{},"193":{},"194":{},"195":{},"196":{},"197":{},"198":{},"199":{},"200":{},"201":{},"202":{},"203":{},"204":{},"205":{},"206":{},"207":{},"208":{},"209":{},"210":{},"211":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{}}}],["articulation.__type",{"_index":103,"name":{},"parent":{"176":{}}}],["articulationstruct",{"_index":96,"name":{"159":{}},"parent":{"160":{},"161":{},"162":{},"163":{}}}],["attach",{"_index":1315,"name":{"6638":{}},"parent":{}}],["attributes",{"_index":1177,"name":{"5222":{},"5225":{},"5241":{}},"parent":{}}],["auto_beam",{"_index":630,"name":{"1624":{}},"parent":{}}],["auto_stem",{"_index":740,"name":{"2153":{},"4284":{},"5361":{}},"parent":{}}],["autostem",{"_index":755,"name":{"2190":{},"4316":{}},"parent":{}}],["autowidth",{"_index":1203,"name":{"5306":{}},"parent":{}}],["backend",{"_index":481,"name":{"1366":{}},"parent":{}}],["backends",{"_index":968,"name":{"3693":{}},"parent":{}}],["background",{"_index":482,"name":{"1369":{}},"parent":{}}],["backgroundfillstyle",{"_index":1186,"name":{"5247":{}},"parent":{}}],["barline",{"_index":515,"name":{"1428":{},"3964":{},"6703":{}},"parent":{"3965":{},"3966":{},"3967":{},"3968":{},"3969":{},"3970":{},"3971":{},"3972":{},"3973":{},"3974":{},"3975":{},"3976":{},"3977":{},"3978":{},"3979":{},"3980":{},"3981":{},"3982":{},"3983":{},"3984":{},"3985":{},"3986":{},"3987":{},"3988":{},"3989":{},"3990":{},"3991":{},"3992":{},"3993":{},"3994":{},"3995":{},"3996":{},"3997":{},"3998":{},"3999":{},"4000":{},"4001":{},"4002":{},"4003":{},"4004":{},"4005":{},"4006":{},"4007":{},"4008":{},"4009":{},"4010":{},"4011":{},"4012":{},"4013":{},"4014":{},"4015":{},"4016":{},"4017":{},"4018":{},"4019":{},"4020":{},"4021":{},"4022":{},"4023":{}}}],["barlinetype",{"_index":544,"name":{"1517":{},"3956":{}},"parent":{"3957":{},"3958":{},"3959":{},"3960":{},"3961":{},"3962":{},"3963":{}}}],["barnote",{"_index":104,"name":{"231":{},"1390":{},"1429":{},"6704":{}},"parent":{"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"260":{},"261":{},"262":{},"263":{},"264":{},"265":{},"266":{},"267":{},"268":{},"269":{},"270":{},"271":{},"272":{},"273":{},"274":{},"275":{},"276":{},"277":{},"278":{},"279":{},"280":{},"281":{},"282":{},"283":{},"284":{},"285":{},"286":{},"287":{},"288":{},"289":{},"290":{},"291":{},"292":{},"293":{},"294":{},"295":{},"296":{},"297":{},"298":{},"299":{},"300":{},"301":{},"302":{},"303":{},"304":{},"305":{},"306":{},"307":{},"308":{},"309":{},"310":{},"311":{},"312":{},"313":{},"314":{},"315":{},"316":{},"317":{},"318":{},"319":{},"320":{},"321":{},"322":{},"323":{},"324":{},"325":{},"326":{},"327":{},"328":{},"329":{},"330":{},"331":{},"332":{},"333":{},"334":{},"335":{},"336":{},"337":{},"338":{},"339":{},"340":{},"341":{},"342":{},"343":{},"344":{},"345":{},"346":{},"347":{},"348":{},"349":{},"350":{},"351":{},"352":{},"353":{},"354":{},"355":{},"356":{},"357":{},"358":{},"359":{},"360":{},"361":{},"362":{},"363":{},"364":{},"365":{},"366":{},"367":{}}}],["barnote.__type",{"_index":114,"name":{},"parent":{"247":{},"248":{},"249":{},"250":{},"251":{},"252":{},"253":{},"254":{},"255":{},"256":{},"257":{},"258":{},"259":{}}}],["bbox",{"_index":722,"name":{"1954":{},"6294":{}},"parent":{}}],["beam",{"_index":197,"name":{"372":{},"1305":{},"1412":{},"1430":{},"6705":{}},"parent":{"373":{},"374":{},"375":{},"376":{},"377":{},"378":{},"379":{},"380":{},"393":{},"394":{},"395":{},"396":{},"397":{},"398":{},"399":{},"400":{},"401":{},"402":{},"403":{},"404":{},"405":{},"406":{},"407":{},"408":{},"409":{},"410":{},"411":{},"412":{},"413":{},"414":{},"415":{},"416":{},"417":{},"418":{},"419":{},"420":{},"421":{},"422":{},"423":{},"424":{},"425":{},"426":{},"427":{},"428":{},"429":{},"430":{},"431":{},"432":{},"433":{},"434":{},"435":{},"436":{},"437":{},"438":{},"439":{},"440":{},"441":{},"442":{},"443":{},"444":{}}}],["beam.__type",{"_index":202,"name":{},"parent":{"381":{},"382":{},"383":{},"384":{},"385":{},"386":{},"387":{},"388":{},"389":{},"390":{},"391":{},"392":{}}}],["beam_both",{"_index":195,"name":{"370":{}},"parent":{}}],["beam_count",{"_index":706,"name":{"1919":{}},"parent":{}}],["beam_left",{"_index":193,"name":{"368":{}},"parent":{}}],["beam_right",{"_index":194,"name":{"369":{}},"parent":{}}],["beam_width",{"_index":206,"name":{"385":{}},"parent":{}}],["beamnotes",{"_index":784,"name":{"2372":{}},"parent":{}}],["beat_value",{"_index":1367,"name":{"6908":{}},"parent":{}}],["beats_occupied",{"_index":1304,"name":{"6619":{}},"parent":{}}],["beatsoccupieddeprecationwarning",{"_index":1321,"name":{"6645":{}},"parent":{}}],["begin",{"_index":400,"name":{"1207":{},"3546":{},"4205":{},"4798":{}},"parent":{}}],["begin_end",{"_index":1140,"name":{"4801":{}},"parent":{}}],["begin_x",{"_index":375,"name":{"944":{}},"parent":{}}],["beginpath",{"_index":290,"name":{"584":{},"3662":{},"5268":{}},"parent":{}}],["below",{"_index":810,"name":{"2800":{},"4204":{}},"parent":{}}],["belowcode",{"_index":99,"name":{"162":{}},"parent":{}}],["benchmark",{"_index":1352,"name":{"6782":{}},"parent":{}}],["bend",{"_index":232,"name":{"451":{},"1431":{},"6706":{}},"parent":{"452":{},"453":{},"454":{},"455":{},"456":{},"457":{},"458":{},"459":{},"460":{},"461":{},"466":{},"467":{},"468":{},"469":{},"470":{},"471":{},"472":{},"473":{},"474":{},"475":{},"476":{},"477":{},"478":{},"479":{},"480":{},"481":{},"482":{},"483":{},"484":{},"485":{},"486":{},"487":{},"488":{},"489":{},"490":{},"491":{},"492":{},"493":{},"494":{},"495":{},"496":{},"497":{},"498":{},"499":{},"500":{},"501":{},"502":{},"503":{},"504":{},"505":{},"506":{},"507":{},"508":{},"509":{},"510":{},"511":{},"512":{},"513":{},"514":{},"515":{},"516":{},"517":{},"518":{},"519":{},"520":{},"521":{},"522":{}}}],["bend.__type",{"_index":236,"name":{},"parent":{"462":{},"463":{},"464":{},"465":{}}}],["bend_width",{"_index":238,"name":{"464":{}},"parent":{}}],["bendphrase",{"_index":228,"name":{"445":{}},"parent":{"446":{},"447":{},"448":{},"449":{},"450":{}}}],["between_lines",{"_index":100,"name":{"163":{}},"parent":{}}],["bezier",{"_index":713,"name":{"1940":{}},"parent":{}}],["beziercurveto",{"_index":293,"name":{"587":{},"3665":{},"5271":{}},"parent":{}}],["bold",{"_index":596,"name":{"1584":{},"5964":{}},"parent":{}}],["botglyphs",{"_index":724,"name":{"1958":{},"6298":{}},"parent":{}}],["botstartx",{"_index":1286,"name":{"6289":{}},"parent":{}}],["bottom",{"_index":86,"name":{"87":{},"619":{},"4139":{},"5762":{},"6627":{}},"parent":{}}],["bottom_stave",{"_index":1051,"name":{"4032":{}},"parent":{}}],["bottom_text_position",{"_index":979,"name":{"3842":{}},"parent":{}}],["bottomline",{"_index":1289,"name":{"6360":{}},"parent":{}}],["boundingbox",{"_index":247,"name":{"528":{},"1432":{}},"parent":{"529":{},"530":{},"531":{},"532":{},"533":{},"534":{},"535":{},"536":{},"537":{},"538":{},"539":{},"540":{},"541":{},"542":{},"543":{},"544":{},"545":{}}}],["boundingboxcomputation",{"_index":259,"name":{"546":{},"1433":{}},"parent":{"547":{},"548":{},"549":{},"550":{},"551":{},"552":{},"553":{},"554":{},"555":{},"556":{}}}],["bounds",{"_index":243,"name":{"523":{}},"parent":{"524":{},"525":{},"526":{},"527":{}}}],["bpm",{"_index":1125,"name":{"4619":{}},"parent":{}}],["bracket",{"_index":936,"name":{"3566":{}},"parent":{}}],["bracket_height",{"_index":943,"name":{"3576":{},"5780":{}},"parent":{}}],["bracket_line_width",{"_index":945,"name":{"3578":{}},"parent":{}}],["bracketed",{"_index":1305,"name":{"6620":{}},"parent":{}}],["breaksecondaryat",{"_index":218,"name":{"399":{}},"parent":{}}],["brush_down",{"_index":1168,"name":{"5152":{}},"parent":{}}],["brush_up",{"_index":1170,"name":{"5153":{}},"parent":{}}],["build",{"_index":514,"name":{"1424":{}},"parent":{}}],["buildandattach",{"_index":395,"name":{"1141":{},"3461":{}},"parent":{}}],["buildcontext",{"_index":971,"name":{"3696":{}},"parent":{}}],["builder",{"_index":399,"name":{"1206":{},"1262":{},"1285":{},"1298":{}},"parent":{"1263":{},"1264":{},"1265":{},"1266":{},"1267":{},"1268":{},"1269":{},"1270":{},"1271":{},"1272":{},"1273":{},"1274":{},"1275":{},"1276":{},"1277":{},"1278":{},"1279":{},"1280":{},"1281":{},"1282":{}}}],["builderelements",{"_index":434,"name":{"1256":{}},"parent":{"1257":{},"1258":{}}}],["builderoptions",{"_index":435,"name":{"1259":{}},"parent":{"1260":{},"1261":{}}}],["buildflag",{"_index":679,"name":{"1763":{},"2238":{},"2459":{},"4367":{},"4937":{},"5406":{}},"parent":{}}],["buildnoteheads",{"_index":754,"name":{"2189":{},"4315":{}},"parent":{}}],["buildstem",{"_index":678,"name":{"1762":{},"2188":{},"2458":{},"4314":{},"4936":{},"5405":{}},"parent":{}}],["cached_outline",{"_index":594,"name":{"1581":{}},"parent":{}}],["calcbeamednotesslashbbox",{"_index":751,"name":{"2183":{}},"parent":{}}],["calcnotedisplacements",{"_index":771,"name":{"2220":{},"4346":{}},"parent":{}}],["calculateflatslope",{"_index":223,"name":{"404":{}},"parent":{}}],["calculatekeyprops",{"_index":757,"name":{"2192":{},"4318":{}},"parent":{}}],["calculateoptimalstemdirection",{"_index":756,"name":{"2191":{},"4317":{}},"parent":{}}],["calculateslope",{"_index":222,"name":{"403":{}},"parent":{}}],["cancelkey",{"_index":801,"name":{"2605":{}},"parent":{}}],["canonical_notes",{"_index":853,"name":{"2964":{}},"parent":{}}],["canvas",{"_index":272,"name":{"565":{},"3686":{}},"parent":{}}],["canvas_browser_size_limit",{"_index":269,"name":{"560":{}},"parent":{}}],["canvascontext",{"_index":268,"name":{"557":{},"1434":{}},"parent":{"558":{},"559":{},"560":{},"561":{},"562":{},"563":{},"564":{},"565":{},"566":{},"567":{},"568":{},"569":{},"570":{},"571":{},"572":{},"573":{},"574":{},"575":{},"576":{},"577":{},"578":{},"579":{},"580":{},"581":{},"582":{},"583":{},"584":{},"585":{},"586":{},"587":{},"588":{},"589":{},"590":{},"591":{},"592":{},"593":{},"594":{},"595":{},"596":{},"597":{},"598":{},"599":{},"600":{},"601":{},"602":{}}}],["category",{"_index":10,"name":{"10":{},"91":{},"166":{},"233":{},"373":{},"452":{},"562":{},"630":{},"742":{},"804":{},"947":{},"1095":{},"1139":{},"1322":{},"1653":{},"1682":{},"1748":{},"1924":{},"1942":{},"2015":{},"2168":{},"2362":{},"2429":{},"2599":{},"2662":{},"2802":{},"2899":{},"3024":{},"3180":{},"3321":{},"3384":{},"3460":{},"3560":{},"3646":{},"3704":{},"3854":{},"3965":{},"4026":{},"4081":{},"4134":{},"4208":{},"4300":{},"4490":{},"4563":{},"4624":{},"4683":{},"4745":{},"4803":{},"4873":{},"4927":{},"5080":{},"5149":{},"5229":{},"5314":{},"5376":{},"5539":{},"5597":{},"5701":{},"5765":{},"5822":{},"6005":{},"6155":{},"6275":{},"6354":{},"6415":{},"6549":{},"6630":{},"6699":{},"6794":{},"6860":{},"6915":{}},"parent":{"6700":{},"6701":{},"6702":{},"6703":{},"6704":{},"6705":{},"6706":{},"6707":{},"6708":{},"6709":{},"6710":{},"6711":{},"6712":{},"6713":{},"6714":{},"6715":{},"6716":{},"6717":{},"6718":{},"6719":{},"6720":{},"6721":{},"6722":{},"6723":{},"6724":{},"6725":{},"6726":{},"6727":{},"6728":{},"6729":{},"6730":{},"6731":{},"6732":{},"6733":{},"6734":{},"6735":{},"6736":{},"6737":{},"6738":{},"6739":{},"6740":{},"6741":{},"6742":{},"6743":{},"6744":{},"6745":{},"6746":{},"6747":{},"6748":{},"6749":{},"6750":{},"6751":{},"6752":{},"6753":{},"6754":{},"6755":{},"6756":{},"6757":{},"6758":{},"6759":{},"6760":{},"6761":{},"6762":{},"6763":{},"6764":{},"6765":{}}}],["center",{"_index":81,"name":{"81":{},"86":{},"614":{},"2796":{},"4200":{},"5987":{}},"parent":{}}],["center_stem",{"_index":83,"name":{"83":{},"88":{},"616":{}},"parent":{}}],["checkattachednote",{"_index":30,"name":{"30":{},"109":{},"181":{},"474":{},"687":{},"1153":{},"1697":{},"2378":{},"2810":{},"3332":{},"3409":{},"3472":{},"5098":{},"5173":{},"6560":{},"6808":{}},"parent":{}}],["checkbeam",{"_index":153,"name":{"288":{},"861":{},"1002":{},"1823":{},"2070":{},"2289":{},"2515":{},"2715":{},"3074":{},"3242":{},"3759":{},"4418":{},"4999":{},"5462":{},"5876":{},"6061":{},"6468":{}},"parent":{}}],["checkcollision",{"_index":12,"name":{"12":{}},"parent":{}}],["checkcontext",{"_index":66,"name":{"66":{},"146":{},"218":{},"355":{},"432":{},"510":{},"724":{},"790":{},"926":{},"1070":{},"1125":{},"1189":{},"1346":{},"1734":{},"1887":{},"1998":{},"2137":{},"2347":{},"2415":{},"2578":{},"2648":{},"2782":{},"2848":{},"2930":{},"3144":{},"3307":{},"3369":{},"3446":{},"3508":{},"3605":{},"3826":{},"3943":{},"4011":{},"4060":{},"4115":{},"4181":{},"4247":{},"4476":{},"4549":{},"4605":{},"4669":{},"4726":{},"4783":{},"4844":{},"4913":{},"5066":{},"5135":{},"5209":{},"5342":{},"5525":{},"5583":{},"5687":{},"5741":{},"5807":{},"5944":{},"6129":{},"6220":{},"6336":{},"6401":{},"6535":{},"6597":{},"6674":{},"6845":{},"6893":{},"6959":{}},"parent":{}}],["checkindex",{"_index":32,"name":{"32":{},"112":{},"184":{},"477":{},"690":{},"1155":{},"1700":{},"2381":{},"2813":{},"3335":{},"3412":{},"3474":{},"5101":{},"5176":{},"6563":{},"6811":{}},"parent":{}}],["checkmetrics",{"_index":728,"name":{"1970":{},"6310":{}},"parent":{}}],["checkmodifiercontext",{"_index":35,"name":{"35":{},"115":{},"187":{},"334":{},"480":{},"693":{},"907":{},"1049":{},"1158":{},"1703":{},"1866":{},"2117":{},"2328":{},"2384":{},"2557":{},"2761":{},"2816":{},"3122":{},"3287":{},"3338":{},"3415":{},"3477":{},"3806":{},"4457":{},"5044":{},"5104":{},"5179":{},"5504":{},"5923":{},"6108":{},"6195":{},"6514":{},"6566":{},"6814":{}},"parent":{}}],["checkstave",{"_index":130,"name":{"265":{},"761":{},"838":{},"979":{},"1802":{},"1976":{},"2047":{},"2271":{},"2496":{},"2619":{},"2692":{},"2906":{},"3051":{},"3221":{},"3736":{},"3980":{},"4215":{},"4400":{},"4518":{},"4574":{},"4638":{},"4695":{},"4813":{},"4977":{},"5443":{},"5853":{},"6038":{},"6315":{},"6370":{},"6445":{},"6938":{}},"parent":{}}],["checkstem",{"_index":676,"name":{"1760":{},"2236":{},"2456":{},"4365":{},"4934":{},"5403":{}},"parent":{}}],["checktickcontext",{"_index":184,"name":{"323":{},"896":{},"1038":{},"1856":{},"2106":{},"2318":{},"2547":{},"2750":{},"3110":{},"3276":{},"3795":{},"4447":{},"5033":{},"5494":{},"5912":{},"6097":{},"6182":{},"6503":{}},"parent":{}}],["chord",{"_index":405,"name":{"1213":{},"1250":{}},"parent":{}}],["chordornote",{"_index":404,"name":{"1212":{}},"parent":{}}],["chordsymbol",{"_index":319,"name":{"628":{},"1399":{},"1435":{},"6707":{}},"parent":{"629":{},"630":{},"631":{},"632":{},"633":{},"634":{},"635":{},"636":{},"637":{},"638":{},"639":{},"640":{},"641":{},"642":{},"643":{},"644":{},"645":{},"646":{},"647":{},"648":{},"649":{},"650":{},"651":{},"652":{},"653":{},"654":{},"655":{},"656":{},"657":{},"658":{},"659":{},"660":{},"661":{},"662":{},"663":{},"664":{},"665":{},"666":{},"667":{},"668":{},"669":{},"670":{},"671":{},"672":{},"673":{},"674":{},"675":{},"676":{},"677":{},"678":{},"679":{},"680":{},"681":{},"682":{},"683":{},"684":{},"685":{},"686":{},"687":{},"688":{},"689":{},"690":{},"691":{},"692":{},"693":{},"694":{},"695":{},"696":{},"697":{},"698":{},"699":{},"700":{},"701":{},"702":{},"703":{},"704":{},"705":{},"706":{},"707":{},"708":{},"709":{},"710":{},"711":{},"712":{},"713":{},"714":{},"715":{},"716":{},"717":{},"718":{},"719":{},"720":{},"721":{},"722":{},"723":{},"724":{},"725":{},"726":{},"727":{},"728":{},"729":{},"730":{},"731":{},"732":{},"733":{},"734":{},"735":{}}}],["chordsymbolblock",{"_index":306,"name":{"603":{}},"parent":{"604":{},"605":{},"606":{},"607":{},"608":{},"609":{},"610":{},"611":{}}}],["chordsymbolhorizontaljustify",{"_index":312,"name":{"612":{},"1507":{}},"parent":{"613":{},"614":{},"615":{},"616":{}}}],["chordsymbolverticaljustify",{"_index":313,"name":{"617":{},"1508":{}},"parent":{"618":{},"619":{}}}],["classes",{"_index":469,"name":{"1314":{}},"parent":{}}],["clear",{"_index":274,"name":{"567":{},"3628":{},"3648":{},"5264":{}},"parent":{}}],["clearrect",{"_index":289,"name":{"583":{},"3661":{},"5267":{}},"parent":{}}],["clef",{"_index":360,"name":{"740":{},"753":{},"1261":{},"1289":{},"1436":{},"1565":{},"2159":{},"4290":{},"5367":{},"6708":{}},"parent":{"741":{},"742":{},"743":{},"744":{},"745":{},"746":{},"747":{},"748":{},"753":{},"754":{},"755":{},"756":{},"757":{},"758":{},"759":{},"760":{},"761":{},"762":{},"763":{},"764":{},"765":{},"766":{},"767":{},"768":{},"769":{},"770":{},"771":{},"772":{},"773":{},"774":{},"775":{},"776":{},"777":{},"778":{},"779":{},"780":{},"781":{},"782":{},"783":{},"784":{},"785":{},"786":{},"787":{},"788":{},"789":{},"790":{},"791":{},"792":{},"793":{},"794":{},"795":{},"796":{},"797":{},"798":{},"799":{},"800":{},"801":{},"802":{}}}],["clef.__type",{"_index":362,"name":{},"parent":{"749":{},"750":{},"751":{},"752":{}}}],["clefnote",{"_index":369,"name":{"803":{},"1391":{},"1437":{},"6709":{}},"parent":{"804":{},"805":{},"806":{},"807":{},"808":{},"809":{},"810":{},"811":{},"812":{},"813":{},"814":{},"815":{},"816":{},"817":{},"818":{},"819":{},"833":{},"834":{},"835":{},"836":{},"837":{},"838":{},"839":{},"840":{},"841":{},"842":{},"843":{},"844":{},"845":{},"846":{},"847":{},"848":{},"849":{},"850":{},"851":{},"852":{},"853":{},"854":{},"855":{},"856":{},"857":{},"858":{},"859":{},"860":{},"861":{},"862":{},"863":{},"864":{},"865":{},"866":{},"867":{},"868":{},"869":{},"870":{},"871":{},"872":{},"873":{},"874":{},"875":{},"876":{},"877":{},"878":{},"879":{},"880":{},"881":{},"882":{},"883":{},"884":{},"885":{},"886":{},"887":{},"888":{},"889":{},"890":{},"891":{},"892":{},"893":{},"894":{},"895":{},"896":{},"897":{},"898":{},"899":{},"900":{},"901":{},"902":{},"903":{},"904":{},"905":{},"906":{},"907":{},"908":{},"909":{},"910":{},"911":{},"912":{},"913":{},"914":{},"915":{},"916":{},"917":{},"918":{},"919":{},"920":{},"921":{},"922":{},"923":{},"924":{},"925":{},"926":{},"927":{},"928":{},"929":{},"930":{},"931":{},"932":{},"933":{},"934":{},"935":{},"936":{},"937":{},"938":{}}}],["clefnote.__type",{"_index":371,"name":{},"parent":{"820":{},"821":{},"822":{},"823":{},"824":{},"825":{},"826":{},"827":{},"828":{},"829":{},"830":{},"831":{},"832":{}}}],["clefproperties",{"_index":568,"name":{"1542":{}},"parent":{}}],["cleftype",{"_index":358,"name":{"736":{}},"parent":{"737":{},"738":{},"739":{}}}],["clone",{"_index":257,"name":{"544":{},"1672":{}},"parent":{}}],["closegroup",{"_index":276,"name":{"569":{},"3675":{},"5250":{}},"parent":{}}],["closepath",{"_index":298,"name":{"592":{},"3670":{},"5274":{}},"parent":{}}],["coda_left",{"_index":1105,"name":{"4495":{}},"parent":{}}],["coda_right",{"_index":1106,"name":{"4496":{}},"parent":{}}],["code",{"_index":97,"name":{"160":{},"738":{},"749":{},"1911":{},"1955":{},"2992":{},"6295":{},"6776":{}},"parent":{}}],["code_flag_downstem",{"_index":702,"name":{"1913":{}},"parent":{}}],["code_flag_upstem",{"_index":701,"name":{"1912":{}},"parent":{}}],["code_head",{"_index":693,"name":{"1901":{}},"parent":{}}],["color",{"_index":942,"name":{"3575":{},"4149":{},"5775":{}},"parent":{}}],["column",{"_index":2,"name":{"2":{}},"parent":{}}],["comma",{"_index":424,"name":{"1236":{}},"parent":{}}],["commithook",{"_index":397,"name":{"1202":{}},"parent":{"1203":{}}}],["commithooks",{"_index":439,"name":{"1268":{},"1286":{}},"parent":{}}],["commitpiece",{"_index":452,"name":{"1282":{}},"parent":{}}],["constructor",{"_index":17,"name":{"17":{},"101":{},"172":{},"236":{},"378":{},"459":{},"530":{},"547":{},"563":{},"659":{},"746":{},"807":{},"950":{},"1099":{},"1146":{},"1205":{},"1249":{},"1263":{},"1294":{},"1324":{},"1375":{},"1545":{},"1638":{},"1657":{},"1688":{},"1751":{},"1953":{},"2018":{},"2179":{},"2367":{},"2432":{},"2592":{},"2603":{},"2665":{},"2806":{},"2872":{},"2901":{},"2972":{},"3027":{},"3183":{},"3326":{},"3395":{},"3466":{},"3549":{},"3572":{},"3627":{},"3647":{},"3700":{},"3707":{},"3859":{},"3970":{},"4030":{},"4088":{},"4141":{},"4211":{},"4309":{},"4508":{},"4566":{},"4627":{},"4686":{},"4747":{},"4807":{},"4879":{},"4930":{},"5086":{},"5163":{},"5230":{},"5316":{},"5379":{},"5547":{},"5602":{},"5705":{},"5771":{},"5826":{},"6010":{},"6157":{},"6248":{},"6286":{},"6358":{},"6418":{},"6553":{},"6612":{},"6636":{},"6775":{},"6786":{},"6800":{},"6862":{},"6918":{}},"parent":{}}],["contains",{"_index":1351,"name":{"6780":{}},"parent":{}}],["context",{"_index":629,"name":{"1623":{}},"parent":{}}],["context2d",{"_index":271,"name":{"564":{}},"parent":{}}],["contextbuilder",{"_index":966,"name":{"3684":{}},"parent":{}}],["convertacclines",{"_index":804,"name":{"2608":{}},"parent":{}}],["convertsizetopixelvalue",{"_index":601,"name":{"1593":{}},"parent":{}}],["convertsizetopointvalue",{"_index":602,"name":{"1594":{}},"parent":{}}],["converttoalteracclist",{"_index":807,"name":{"2613":{}},"parent":{}}],["converttocancelacclist",{"_index":802,"name":{"2606":{}},"parent":{}}],["converttoglyph",{"_index":800,"name":{"2604":{}},"parent":{}}],["copy",{"_index":248,"name":{"529":{},"1673":{}},"parent":{}}],["cp1",{"_index":1133,"name":{"4753":{},"5554":{},"5711":{}},"parent":{}}],["cp2",{"_index":1129,"name":{"4750":{},"5551":{},"5708":{}},"parent":{}}],["cps",{"_index":382,"name":{"1084":{}},"parent":{}}],["create",{"_index":1187,"name":{"5248":{},"5972":{}},"parent":{}}],["createhammeron",{"_index":1218,"name":{"5545":{},"5702":{}},"parent":{}}],["createmodifiercontexts",{"_index":645,"name":{"1642":{}},"parent":{}}],["createpulloff",{"_index":1219,"name":{"5546":{},"5703":{}},"parent":{}}],["createscalemap",{"_index":870,"name":{"2983":{}},"parent":{}}],["createslidedown",{"_index":1217,"name":{"5544":{}},"parent":{}}],["createslideup",{"_index":1216,"name":{"5543":{}},"parent":{}}],["createsostenuto",{"_index":940,"name":{"3570":{}},"parent":{}}],["createsustain",{"_index":939,"name":{"3569":{}},"parent":{}}],["createtickcontexts",{"_index":646,"name":{"1643":{}},"parent":{}}],["createunacorda",{"_index":941,"name":{"3571":{}},"parent":{}}],["cresc",{"_index":1057,"name":{"4084":{}},"parent":{}}],["crescendo",{"_index":376,"name":{"945":{},"1438":{},"6710":{}},"parent":{"946":{},"947":{},"948":{},"949":{},"950":{},"951":{},"952":{},"953":{},"954":{},"955":{},"956":{},"957":{},"958":{},"959":{},"960":{},"974":{},"975":{},"976":{},"977":{},"978":{},"979":{},"980":{},"981":{},"982":{},"983":{},"984":{},"985":{},"986":{},"987":{},"988":{},"989":{},"990":{},"991":{},"992":{},"993":{},"994":{},"995":{},"996":{},"997":{},"998":{},"999":{},"1000":{},"1001":{},"1002":{},"1003":{},"1004":{},"1005":{},"1006":{},"1007":{},"1008":{},"1009":{},"1010":{},"1011":{},"1012":{},"1013":{},"1014":{},"1015":{},"1016":{},"1017":{},"1018":{},"1019":{},"1020":{},"1021":{},"1022":{},"1023":{},"1024":{},"1025":{},"1026":{},"1027":{},"1028":{},"1029":{},"1030":{},"1031":{},"1032":{},"1033":{},"1034":{},"1035":{},"1036":{},"1037":{},"1038":{},"1039":{},"1040":{},"1041":{},"1042":{},"1043":{},"1044":{},"1045":{},"1046":{},"1047":{},"1048":{},"1049":{},"1050":{},"1051":{},"1052":{},"1053":{},"1054":{},"1055":{},"1056":{},"1057":{},"1058":{},"1059":{},"1060":{},"1061":{},"1062":{},"1063":{},"1064":{},"1065":{},"1066":{},"1067":{},"1068":{},"1069":{},"1070":{},"1071":{},"1072":{},"1073":{},"1074":{},"1075":{},"1076":{},"1077":{},"1078":{},"1079":{},"1080":{},"1081":{},"1082":{}}}],["crescendo.__type",{"_index":380,"name":{},"parent":{"961":{},"962":{},"963":{},"964":{},"965":{},"966":{},"967":{},"968":{},"969":{},"970":{},"971":{},"972":{},"973":{}}}],["crescendoparams",{"_index":372,"name":{"939":{}},"parent":{"940":{},"941":{},"942":{},"943":{},"944":{}}}],["current_cache_key",{"_index":714,"name":{"1943":{},"6276":{}},"parent":{}}],["curve",{"_index":389,"name":{"1094":{},"1413":{},"1439":{},"6711":{}},"parent":{"1095":{},"1096":{},"1097":{},"1098":{},"1099":{},"1100":{},"1101":{},"1102":{},"1103":{},"1104":{},"1105":{},"1106":{},"1107":{},"1108":{},"1109":{},"1110":{},"1111":{},"1112":{},"1113":{},"1114":{},"1115":{},"1116":{},"1117":{},"1118":{},"1119":{},"1120":{},"1121":{},"1122":{},"1123":{},"1124":{},"1125":{},"1126":{},"1127":{},"1128":{},"1129":{},"1130":{},"1131":{},"1132":{},"1133":{},"1134":{},"1135":{},"1136":{},"1137":{}}}],["curveoptions",{"_index":381,"name":{"1083":{}},"parent":{"1084":{},"1085":{},"1086":{},"1087":{},"1088":{},"1089":{},"1090":{}}}],["curveposition",{"_index":386,"name":{"1091":{},"1511":{}},"parent":{"1092":{},"1093":{}}}],["custom_glyph_code",{"_index":890,"name":{"3164":{}},"parent":{}}],["customtypes",{"_index":884,"name":{"3012":{}},"parent":{}}],["dash",{"_index":1231,"name":{"5779":{}},"parent":{}}],["dashed",{"_index":1227,"name":{"5774":{}},"parent":{}}],["data",{"_index":576,"name":{"1553":{}},"parent":{}}],["dblsharpline",{"_index":5,"name":{"5":{}},"parent":{}}],["dc",{"_index":1109,"name":{"4499":{}},"parent":{}}],["dc_al_coda",{"_index":1110,"name":{"4500":{}},"parent":{}}],["dc_al_fine",{"_index":1111,"name":{"4501":{}},"parent":{}}],["debug",{"_index":9,"name":{"9":{},"90":{},"165":{},"232":{},"629":{},"741":{},"946":{},"1293":{},"1372":{},"1631":{},"2171":{},"2361":{},"2871":{},"3179":{},"3383":{},"3548":{},"3559":{},"4299":{},"4872":{},"5764":{},"5821":{},"5970":{},"6859":{}},"parent":{}}],["debugformatter",{"_index":1200,"name":{"5303":{}},"parent":{}}],["debugnotemetrics",{"_index":1197,"name":{"5299":{}},"parent":{}}],["decresc",{"_index":1059,"name":{"4085":{}},"parent":{}}],["defaultpadding",{"_index":989,"name":{"3856":{},"5599":{}},"parent":{}}],["defaults",{"_index":458,"name":{"1295":{}},"parent":{}}],["defined",{"_index":1342,"name":{"6767":{}},"parent":{}}],["denominator",{"_index":655,"name":{"1659":{}},"parent":{}}],["description",{"_index":1237,"name":{"5968":{}},"parent":{}}],["detach",{"_index":1316,"name":{"6639":{}},"parent":{}}],["details",{"_index":1204,"name":{"5310":{}},"parent":{}}],["deviation",{"_index":1259,"name":{"6153":{}},"parent":{}}],["diatonic_accidentals",{"_index":855,"name":{"2966":{}},"parent":{}}],["diatonic_intervals",{"_index":854,"name":{"2965":{}},"parent":{}}],["digits",{"_index":584,"name":{"1567":{}},"parent":{}}],["disabledefaultregistry",{"_index":953,"name":{"3626":{}},"parent":{}}],["displaced",{"_index":873,"name":{"2995":{},"3167":{}},"parent":{}}],["displaced_x",{"_index":1088,"name":{"4263":{}},"parent":{}}],["divide",{"_index":660,"name":{"1666":{}},"parent":{}}],["dot",{"_index":393,"name":{"1138":{},"1237":{},"1440":{},"6712":{}},"parent":{"1139":{},"1140":{},"1141":{},"1142":{},"1143":{},"1144":{},"1145":{},"1146":{},"1147":{},"1148":{},"1149":{},"1150":{},"1151":{},"1152":{},"1153":{},"1154":{},"1155":{},"1156":{},"1157":{},"1158":{},"1159":{},"1160":{},"1161":{},"1162":{},"1163":{},"1164":{},"1165":{},"1166":{},"1167":{},"1168":{},"1169":{},"1170":{},"1171":{},"1172":{},"1173":{},"1174":{},"1175":{},"1176":{},"1177":{},"1178":{},"1179":{},"1180":{},"1181":{},"1182":{},"1183":{},"1184":{},"1185":{},"1186":{},"1187":{},"1188":{},"1189":{},"1190":{},"1191":{},"1192":{},"1193":{},"1194":{},"1195":{},"1196":{},"1197":{},"1198":{},"1199":{},"1200":{},"1201":{}}}],["dot_shifty",{"_index":694,"name":{"1902":{}},"parent":{}}],["dots",{"_index":408,"name":{"1218":{},"1252":{},"2163":{},"3007":{},"3013":{},"3019":{},"3174":{},"4294":{},"4621":{},"5371":{},"6000":{}},"parent":{}}],["double",{"_index":1041,"name":{"3958":{}},"parent":{}}],["down",{"_index":234,"name":{"454":{},"3691":{},"4875":{}},"parent":{}}],["draw",{"_index":27,"name":{"27":{},"105":{},"177":{},"241":{},"248":{},"411":{},"470":{},"684":{},"757":{},"814":{},"821":{},"955":{},"962":{},"1104":{},"1149":{},"1333":{},"1422":{},"1693":{},"1756":{},"1786":{},"1960":{},"2023":{},"2030":{},"2182":{},"2255":{},"2376":{},"2452":{},"2479":{},"2615":{},"2668":{},"2675":{},"2826":{},"2909":{},"3034":{},"3131":{},"3197":{},"3204":{},"3330":{},"3405":{},"3468":{},"3584":{},"3712":{},"3719":{},"3920":{},"3973":{},"4039":{},"4094":{},"4160":{},"4226":{},"4361":{},"4384":{},"4511":{},"4570":{},"4634":{},"4691":{},"4762":{},"4809":{},"4893":{},"4960":{},"5053":{},"5094":{},"5169":{},"5322":{},"5399":{},"5426":{},"5562":{},"5664":{},"5720":{},"5787":{},"5829":{},"5836":{},"6014":{},"6021":{},"6207":{},"6300":{},"6366":{},"6421":{},"6428":{},"6556":{},"6653":{},"6804":{},"6872":{},"6939":{}},"parent":{}}],["draw_dots",{"_index":115,"name":{"249":{},"822":{},"963":{},"1787":{},"2031":{},"2256":{},"2480":{},"2676":{},"3035":{},"3205":{},"3720":{},"4385":{},"4961":{},"5427":{},"5837":{},"6022":{},"6429":{}},"parent":{}}],["draw_end_arrow",{"_index":1073,"name":{"4151":{}},"parent":{}}],["draw_start_arrow",{"_index":1072,"name":{"4150":{}},"parent":{}}],["draw_stem",{"_index":116,"name":{"250":{},"823":{},"964":{},"1788":{},"2032":{},"2257":{},"2481":{},"2677":{},"3036":{},"3206":{},"3721":{},"4386":{},"4962":{},"5428":{},"5838":{},"6023":{},"6430":{}},"parent":{}}],["draw_stem_through_stave",{"_index":113,"name":{"247":{},"820":{},"961":{},"1785":{},"2029":{},"2254":{},"2478":{},"2674":{},"3033":{},"3203":{},"3718":{},"4383":{},"4959":{},"5425":{},"5835":{},"6020":{},"6427":{}},"parent":{}}],["draw_width",{"_index":231,"name":{"450":{}},"parent":{}}],["drawbracketed",{"_index":947,"name":{"3582":{}},"parent":{}}],["drawcodafixed",{"_index":1119,"name":{"4512":{}},"parent":{}}],["drawdashedline",{"_index":974,"name":{"3699":{}},"parent":{}}],["drawdot",{"_index":962,"name":{"3637":{}},"parent":{}}],["drawflag",{"_index":779,"name":{"2230":{},"2448":{},"4356":{},"5395":{}},"parent":{}}],["drawledgerlines",{"_index":777,"name":{"2227":{},"4353":{}},"parent":{}}],["drawline",{"_index":838,"name":{"2907":{}},"parent":{}}],["drawmodifiers",{"_index":737,"name":{"2022":{},"2228":{},"2449":{},"3711":{},"4354":{},"5396":{}},"parent":{}}],["drawnoteheads",{"_index":780,"name":{"2231":{},"4357":{}},"parent":{}}],["drawpositions",{"_index":793,"name":{"2451":{},"5398":{}},"parent":{}}],["drawrepeatbar",{"_index":1048,"name":{"3976":{}},"parent":{}}],["drawsignofixed",{"_index":1120,"name":{"4513":{}},"parent":{}}],["drawstem",{"_index":690,"name":{"1779":{},"2232":{},"2472":{},"4358":{},"4953":{},"5419":{}},"parent":{}}],["drawstemthrough",{"_index":792,"name":{"2450":{},"5397":{}},"parent":{}}],["drawsymbols",{"_index":839,"name":{"2908":{}},"parent":{}}],["drawsymboltext",{"_index":1121,"name":{"4514":{}},"parent":{}}],["drawtext",{"_index":948,"name":{"3583":{}},"parent":{}}],["drawverticalbar",{"_index":1046,"name":{"3974":{}},"parent":{}}],["drawverticalendbar",{"_index":1047,"name":{"3975":{}},"parent":{}}],["drawwithstyle",{"_index":53,"name":{"53":{},"133":{},"205":{},"342":{},"419":{},"497":{},"711":{},"777":{},"915":{},"1057":{},"1112":{},"1176":{},"1332":{},"1721":{},"1874":{},"1985":{},"2125":{},"2335":{},"2402":{},"2565":{},"2635":{},"2769":{},"2835":{},"2917":{},"3130":{},"3295":{},"3356":{},"3433":{},"3495":{},"3592":{},"3814":{},"3931":{},"3998":{},"4047":{},"4102":{},"4168":{},"4234":{},"4464":{},"4536":{},"4592":{},"4656":{},"4713":{},"4770":{},"4831":{},"4901":{},"5052":{},"5122":{},"5196":{},"5330":{},"5512":{},"5570":{},"5675":{},"5728":{},"5794":{},"5931":{},"6116":{},"6206":{},"6323":{},"6388":{},"6522":{},"6584":{},"6661":{},"6832":{},"6880":{},"6947":{}},"parent":{}}],["ds",{"_index":1112,"name":{"4502":{}},"parent":{}}],["ds_al_coda",{"_index":1113,"name":{"4503":{}},"parent":{}}],["ds_al_fine",{"_index":1114,"name":{"4504":{}},"parent":{}}],["duration",{"_index":409,"name":{"1220":{},"1251":{},"2161":{},"3006":{},"3010":{},"3017":{},"3173":{},"4292":{},"4620":{},"5369":{},"5998":{},"6143":{}},"parent":{}}],["duration_override",{"_index":745,"name":{"2166":{},"3022":{},"3177":{},"4297":{},"5374":{},"6003":{}},"parent":{}}],["durations",{"_index":421,"name":{"1232":{}},"parent":{}}],["durationtoticks",{"_index":570,"name":{"1544":{}},"parent":{}}],["dval",{"_index":415,"name":{"1226":{}},"parent":{}}],["easyscore",{"_index":457,"name":{"1292":{},"1419":{},"1441":{}},"parent":{"1293":{},"1294":{},"1295":{},"1296":{},"1297":{},"1298":{},"1299":{},"1300":{},"1301":{},"1302":{},"1303":{},"1304":{},"1305":{},"1306":{},"1307":{},"1308":{},"1309":{}}}],["easyscoredefaults",{"_index":455,"name":{"1288":{}},"parent":{"1289":{},"1290":{},"1291":{}}}],["easyscoregrammar",{"_index":398,"name":{"1204":{}},"parent":{"1205":{},"1206":{},"1207":{},"1208":{},"1209":{},"1210":{},"1211":{},"1212":{},"1213":{},"1214":{},"1215":{},"1216":{},"1217":{},"1218":{},"1219":{},"1220":{},"1221":{},"1222":{},"1223":{},"1224":{},"1225":{},"1226":{},"1227":{},"1228":{},"1229":{},"1230":{},"1231":{},"1232":{},"1233":{},"1234":{},"1235":{},"1236":{},"1237":{},"1238":{},"1239":{},"1240":{},"1241":{},"1242":{},"1243":{}}}],["easyscorehook",{"_index":102,"name":{"168":{},"1685":{}},"parent":{}}],["easyscoreoptions",{"_index":453,"name":{"1283":{}},"parent":{"1284":{},"1285":{},"1286":{},"1287":{}}}],["el",{"_index":468,"name":{"1312":{}},"parent":{}}],["element",{"_index":474,"name":{"1321":{},"1442":{},"5231":{},"6713":{}},"parent":{"1322":{},"1323":{},"1324":{},"1325":{},"1326":{},"1327":{},"1328":{},"1329":{},"1330":{},"1331":{},"1332":{},"1333":{},"1334":{},"1335":{},"1336":{},"1337":{},"1338":{},"1339":{},"1340":{},"1341":{},"1342":{},"1343":{},"1344":{},"1345":{},"1346":{},"1347":{},"1348":{},"1349":{},"1350":{},"1351":{},"1352":{},"1353":{},"1354":{},"1355":{},"1356":{},"1357":{},"1358":{}}}],["elementattributes",{"_index":466,"name":{"1310":{}},"parent":{"1311":{},"1312":{},"1313":{},"1314":{}}}],["elementid",{"_index":480,"name":{"1365":{}},"parent":{}}],["elements",{"_index":438,"name":{"1265":{}},"parent":{}}],["elementstyle",{"_index":470,"name":{"1315":{}},"parent":{"1316":{},"1317":{},"1318":{},"1319":{},"1320":{}}}],["enabledefaultregistry",{"_index":952,"name":{"3625":{}},"parent":{}}],["end",{"_index":1042,"name":{"3959":{},"4206":{},"4800":{}},"parent":{}}],["end_x",{"_index":374,"name":{"943":{}},"parent":{}}],["engravingfontresolution",{"_index":323,"name":{"638":{}},"parent":{}}],["eol",{"_index":430,"name":{"1243":{}},"parent":{}}],["equals",{"_index":427,"name":{"1240":{},"1667":{}},"parent":{}}],["errorpos",{"_index":927,"name":{"3543":{}},"parent":{}}],["evaluate",{"_index":647,"name":{"1645":{}},"parent":{}}],["expect",{"_index":913,"name":{"3529":{},"3557":{}},"parent":{}}],["expectone",{"_index":932,"name":{"3554":{}},"parent":{}}],["expectoneormore",{"_index":933,"name":{"3555":{}},"parent":{}}],["expectzeroormore",{"_index":934,"name":{"3556":{}},"parent":{}}],["extend_left",{"_index":118,"name":{"252":{},"825":{},"966":{},"1790":{},"2034":{},"2259":{},"2483":{},"2679":{},"3038":{},"3208":{},"3723":{},"4388":{},"4964":{},"5430":{},"5840":{},"6025":{},"6432":{}},"parent":{}}],["extend_right",{"_index":119,"name":{"253":{},"826":{},"967":{},"1791":{},"2035":{},"2260":{},"2484":{},"2680":{},"3039":{},"3209":{},"3724":{},"4389":{},"4965":{},"5431":{},"5841":{},"6026":{},"6433":{}},"parent":{}}],["extra_stroke_scale",{"_index":1296,"name":{"6555":{}},"parent":{}}],["factory",{"_index":437,"name":{"1264":{},"1284":{},"1297":{},"1371":{},"1443":{},"5301":{}},"parent":{"1372":{},"1373":{},"1374":{},"1375":{},"1376":{},"1377":{},"1378":{},"1379":{},"1380":{},"1381":{},"1382":{},"1383":{},"1384":{},"1385":{},"1386":{},"1387":{},"1388":{},"1389":{},"1390":{},"1391":{},"1392":{},"1393":{},"1394":{},"1395":{},"1396":{},"1397":{},"1398":{},"1399":{},"1400":{},"1401":{},"1402":{},"1403":{},"1404":{},"1405":{},"1406":{},"1407":{},"1408":{},"1409":{},"1410":{},"1411":{},"1412":{},"1413":{},"1414":{},"1415":{},"1416":{},"1417":{},"1418":{},"1419":{},"1420":{},"1421":{},"1422":{}}}],["factoryoptions",{"_index":475,"name":{"1359":{}},"parent":{"1360":{},"1361":{},"1363":{},"1364":{},"1370":{}}}],["factoryoptions.__type",{"_index":478,"name":{},"parent":{"1362":{},"1365":{},"1366":{},"1367":{},"1368":{},"1369":{}}}],["family",{"_index":571,"name":{"1547":{},"5958":{}},"parent":{}}],["fetchmusicfont",{"_index":551,"name":{"1524":{}},"parent":{}}],["fill",{"_index":296,"name":{"590":{},"3668":{},"5275":{}},"parent":{}}],["fill_style",{"_index":984,"name":{"3847":{}},"parent":{}}],["fillrect",{"_index":288,"name":{"582":{},"3660":{},"5266":{}},"parent":{}}],["fillstyle",{"_index":303,"name":{"597":{},"1318":{},"3678":{},"5281":{}},"parent":{}}],["filltext",{"_index":300,"name":{"594":{},"3671":{},"5278":{}},"parent":{}}],["fine",{"_index":1115,"name":{"4505":{}},"parent":{}}],["fingering",{"_index":499,"name":{"1403":{}},"parent":{}}],["first_indices",{"_index":1065,"name":{"4130":{},"4742":{}},"parent":{}}],["first_note",{"_index":1064,"name":{"4129":{},"4740":{}},"parent":{}}],["first_x_shift",{"_index":1134,"name":{"4754":{},"5555":{},"5712":{}},"parent":{}}],["flag",{"_index":703,"name":{"1914":{}},"parent":{}}],["flat_beam_offset",{"_index":201,"name":{"381":{}},"parent":{}}],["flat_beams",{"_index":203,"name":{"382":{}},"parent":{}}],["flatline",{"_index":4,"name":{"4":{}},"parent":{}}],["flow",{"_index":513,"name":{"1423":{},"6778":{}},"parent":{"1424":{},"1425":{},"1426":{},"1427":{},"1428":{},"1429":{},"1430":{},"1431":{},"1432":{},"1433":{},"1434":{},"1435":{},"1436":{},"1437":{},"1438":{},"1439":{},"1440":{},"1441":{},"1442":{},"1443":{},"1444":{},"1445":{},"1446":{},"1447":{},"1448":{},"1449":{},"1450":{},"1451":{},"1452":{},"1453":{},"1454":{},"1455":{},"1456":{},"1457":{},"1458":{},"1459":{},"1460":{},"1461":{},"1462":{},"1463":{},"1464":{},"1465":{},"1466":{},"1467":{},"1468":{},"1469":{},"1470":{},"1471":{},"1472":{},"1473":{},"1474":{},"1475":{},"1476":{},"1477":{},"1478":{},"1479":{},"1480":{},"1481":{},"1482":{},"1483":{},"1484":{},"1485":{},"1486":{},"1487":{},"1488":{},"1489":{},"1490":{},"1491":{},"1492":{},"1493":{},"1494":{},"1495":{},"1496":{},"1497":{},"1498":{},"1499":{},"1500":{},"1501":{},"1502":{},"1503":{},"1504":{},"1505":{},"1506":{},"1507":{},"1508":{},"1509":{},"1510":{},"1511":{},"1512":{},"1513":{},"1514":{},"1515":{},"1516":{},"1517":{},"1518":{},"1519":{},"1520":{},"1521":{},"1522":{},"1523":{},"1524":{},"1525":{},"1526":{},"1527":{},"1528":{},"1529":{},"1530":{},"1531":{},"1532":{},"1533":{},"1534":{},"1535":{},"1536":{},"1537":{},"1538":{},"1539":{},"1540":{},"1541":{},"1542":{},"1543":{},"1544":{},"1545":{}}}],["font",{"_index":67,"name":{"67":{},"147":{},"219":{},"258":{},"356":{},"433":{},"511":{},"601":{},"725":{},"791":{},"831":{},"927":{},"972":{},"1071":{},"1126":{},"1190":{},"1347":{},"1370":{},"1444":{},"1588":{},"1735":{},"1796":{},"1888":{},"1935":{},"1999":{},"2040":{},"2138":{},"2265":{},"2348":{},"2416":{},"2489":{},"2579":{},"2649":{},"2685":{},"2783":{},"2849":{},"2931":{},"3044":{},"3145":{},"3214":{},"3308":{},"3370":{},"3447":{},"3509":{},"3606":{},"3682":{},"3729":{},"3827":{},"3944":{},"4012":{},"4061":{},"4116":{},"4182":{},"4248":{},"4394":{},"4477":{},"4550":{},"4606":{},"4670":{},"4727":{},"4784":{},"4845":{},"4914":{},"4970":{},"5067":{},"5136":{},"5210":{},"5285":{},"5343":{},"5436":{},"5526":{},"5584":{},"5688":{},"5742":{},"5808":{},"5846":{},"5945":{},"5994":{},"6031":{},"6130":{},"6221":{},"6337":{},"6402":{},"6438":{},"6536":{},"6598":{},"6675":{},"6846":{},"6894":{},"6960":{}},"parent":{"1589":{},"1590":{},"1591":{},"1592":{},"1593":{},"1594":{},"1595":{},"1596":{},"1597":{},"1598":{},"1599":{},"1600":{},"1601":{},"1602":{},"1603":{},"1604":{},"1605":{},"1606":{},"1607":{},"1608":{},"1609":{},"1610":{},"1611":{},"1612":{},"1613":{},"1614":{},"1615":{}}}],["font_scale",{"_index":22,"name":{"22":{},"176":{},"3400":{},"5166":{}},"parent":{}}],["fontdata",{"_index":578,"name":{"1555":{}},"parent":{"1556":{},"1557":{},"1558":{},"1559":{}}}],["fontfamily",{"_index":579,"name":{"1557":{}},"parent":{}}],["fontglyph",{"_index":585,"name":{"1572":{}},"parent":{"1573":{},"1574":{},"1575":{},"1576":{},"1577":{},"1578":{},"1579":{},"1580":{},"1581":{}}}],["fontinfo",{"_index":71,"name":{"71":{},"151":{},"223":{},"360":{},"437":{},"515":{},"728":{},"795":{},"931":{},"1075":{},"1130":{},"1194":{},"1351":{},"1546":{},"1739":{},"1892":{},"2003":{},"2142":{},"2352":{},"2420":{},"2583":{},"2653":{},"2787":{},"2853":{},"2935":{},"3149":{},"3312":{},"3374":{},"3451":{},"3513":{},"3610":{},"3831":{},"3948":{},"4016":{},"4065":{},"4120":{},"4186":{},"4252":{},"4481":{},"4554":{},"4610":{},"4674":{},"4731":{},"4788":{},"4849":{},"4918":{},"5071":{},"5140":{},"5214":{},"5347":{},"5530":{},"5588":{},"5692":{},"5746":{},"5812":{},"5949":{},"6134":{},"6225":{},"6341":{},"6406":{},"6540":{},"6602":{},"6679":{},"6850":{},"6898":{},"6964":{}},"parent":{"1547":{},"1548":{},"1549":{},"1550":{}}}],["fontmetrics",{"_index":581,"name":{"1560":{}},"parent":{"1561":{},"1562":{},"1563":{},"1564":{},"1565":{},"1566":{},"1567":{},"1568":{},"1569":{},"1570":{},"1571":{}}}],["fontmodule",{"_index":575,"name":{"1551":{}},"parent":{"1552":{}}}],["fontmodule.__type",{"_index":577,"name":{},"parent":{"1553":{},"1554":{}}}],["fontsize",{"_index":74,"name":{"74":{},"154":{},"226":{},"363":{},"440":{},"518":{},"731":{},"798":{},"934":{},"1078":{},"1133":{},"1197":{},"1354":{},"1742":{},"1895":{},"2006":{},"2145":{},"2355":{},"2423":{},"2586":{},"2656":{},"2790":{},"2856":{},"2938":{},"3152":{},"3315":{},"3377":{},"3454":{},"3516":{},"3613":{},"3834":{},"3951":{},"4019":{},"4068":{},"4123":{},"4189":{},"4255":{},"4484":{},"4557":{},"4613":{},"4677":{},"4734":{},"4791":{},"4852":{},"4921":{},"5074":{},"5143":{},"5217":{},"5350":{},"5533":{},"5591":{},"5695":{},"5749":{},"5815":{},"5952":{},"6137":{},"6228":{},"6344":{},"6409":{},"6543":{},"6605":{},"6682":{},"6853":{},"6901":{},"6967":{}},"parent":{}}],["fontsizeinpixels",{"_index":76,"name":{"76":{},"156":{},"228":{},"365":{},"442":{},"520":{},"733":{},"800":{},"936":{},"1080":{},"1135":{},"1199":{},"1356":{},"1744":{},"1897":{},"2008":{},"2147":{},"2357":{},"2425":{},"2588":{},"2658":{},"2792":{},"2858":{},"2940":{},"3154":{},"3317":{},"3379":{},"3456":{},"3518":{},"3615":{},"3836":{},"3953":{},"4021":{},"4070":{},"4125":{},"4191":{},"4257":{},"4486":{},"4559":{},"4615":{},"4679":{},"4736":{},"4793":{},"4854":{},"4923":{},"5076":{},"5145":{},"5219":{},"5352":{},"5535":{},"5593":{},"5697":{},"5751":{},"5817":{},"5954":{},"5983":{},"6139":{},"6230":{},"6346":{},"6411":{},"6545":{},"6607":{},"6684":{},"6855":{},"6903":{},"6969":{}},"parent":{}}],["fontsizeinpoints",{"_index":75,"name":{"75":{},"155":{},"227":{},"364":{},"441":{},"519":{},"732":{},"799":{},"935":{},"1079":{},"1134":{},"1198":{},"1355":{},"1743":{},"1896":{},"2007":{},"2146":{},"2356":{},"2424":{},"2587":{},"2657":{},"2791":{},"2857":{},"2939":{},"3153":{},"3316":{},"3378":{},"3455":{},"3517":{},"3614":{},"3835":{},"3952":{},"4020":{},"4069":{},"4124":{},"4190":{},"4256":{},"4485":{},"4558":{},"4614":{},"4678":{},"4735":{},"4792":{},"4853":{},"4922":{},"5075":{},"5144":{},"5218":{},"5351":{},"5534":{},"5592":{},"5696":{},"5750":{},"5816":{},"5953":{},"6138":{},"6229":{},"6345":{},"6410":{},"6544":{},"6606":{},"6683":{},"6854":{},"6902":{},"6968":{}},"parent":{}}],["fontstyle",{"_index":77,"name":{"77":{},"157":{},"229":{},"366":{},"443":{},"521":{},"734":{},"801":{},"937":{},"1081":{},"1136":{},"1200":{},"1357":{},"1513":{},"1585":{},"1745":{},"1898":{},"2009":{},"2148":{},"2358":{},"2426":{},"2589":{},"2659":{},"2793":{},"2859":{},"2941":{},"3155":{},"3318":{},"3380":{},"3457":{},"3519":{},"3616":{},"3837":{},"3954":{},"4022":{},"4071":{},"4126":{},"4192":{},"4258":{},"4487":{},"4560":{},"4616":{},"4680":{},"4737":{},"4794":{},"4855":{},"4924":{},"5077":{},"5146":{},"5220":{},"5353":{},"5536":{},"5594":{},"5698":{},"5752":{},"5818":{},"5955":{},"6140":{},"6231":{},"6347":{},"6412":{},"6546":{},"6608":{},"6685":{},"6856":{},"6904":{},"6970":{}},"parent":{"1586":{},"1587":{}}}],["fontweight",{"_index":78,"name":{"78":{},"158":{},"230":{},"367":{},"444":{},"522":{},"735":{},"802":{},"938":{},"1082":{},"1137":{},"1201":{},"1358":{},"1512":{},"1582":{},"1746":{},"1899":{},"2010":{},"2149":{},"2359":{},"2427":{},"2590":{},"2660":{},"2794":{},"2860":{},"2942":{},"3156":{},"3319":{},"3381":{},"3458":{},"3520":{},"3617":{},"3838":{},"3955":{},"4023":{},"4072":{},"4127":{},"4193":{},"4259":{},"4488":{},"4561":{},"4617":{},"4681":{},"4738":{},"4795":{},"4856":{},"4925":{},"5078":{},"5147":{},"5221":{},"5354":{},"5537":{},"5595":{},"5699":{},"5753":{},"5819":{},"5956":{},"6141":{},"6232":{},"6348":{},"6413":{},"6547":{},"6609":{},"6686":{},"6857":{},"6905":{},"6971":{}},"parent":{"1583":{},"1584":{}}}],["format",{"_index":11,"name":{"11":{},"98":{},"167":{},"456":{},"655":{},"1142":{},"1649":{},"1684":{},"2175":{},"2363":{},"2614":{},"3322":{},"3386":{},"3462":{},"3919":{},"4305":{},"5083":{},"5160":{},"5321":{},"5663":{},"6795":{}},"parent":{}}],["formatanddraw",{"_index":638,"name":{"1634":{}},"parent":{}}],["formatanddrawtab",{"_index":639,"name":{"1635":{}},"parent":{}}],["formatbegmodifiers",{"_index":991,"name":{"3858":{},"5601":{}},"parent":{}}],["formatbyticksanddraw",{"_index":1060,"name":{"4086":{}},"parent":{}}],["formatiterations",{"_index":1202,"name":{"5305":{}},"parent":{}}],["formatoptions",{"_index":1205,"name":{"5311":{}},"parent":{}}],["formatparams",{"_index":627,"name":{"1620":{}},"parent":{"1621":{},"1622":{},"1623":{},"1624":{}}}],["formatter",{"_index":505,"name":{"1410":{},"1445":{},"1630":{}},"parent":{"1631":{},"1632":{},"1633":{},"1634":{},"1635":{},"1636":{},"1637":{},"1638":{},"1639":{},"1640":{},"1641":{},"1642":{},"1643":{},"1644":{},"1645":{},"1646":{},"1647":{},"1648":{},"1649":{},"1650":{},"1651":{}}}],["formattermetrics",{"_index":1253,"name":{"6142":{}},"parent":{"6143":{},"6144":{},"6145":{},"6148":{},"6149":{},"6150":{}}}],["formattermetrics.__type",{"_index":1255,"name":{},"parent":{"6146":{},"6147":{},"6151":{},"6152":{},"6153":{}}}],["formatteroptions",{"_index":623,"name":{"1616":{}},"parent":{"1617":{},"1618":{},"1619":{}}}],["formattostave",{"_index":650,"name":{"1650":{}},"parent":{}}],["fraction",{"_index":516,"name":{"1446":{},"1652":{},"6714":{}},"parent":{"1653":{},"1654":{},"1655":{},"1656":{},"1657":{},"1658":{},"1659":{},"1660":{},"1661":{},"1662":{},"1663":{},"1664":{},"1665":{},"1666":{},"1667":{},"1668":{},"1669":{},"1670":{},"1671":{},"1672":{},"1673":{},"1674":{},"1675":{},"1676":{},"1677":{},"1678":{},"1679":{},"1680":{}}}],["freedom",{"_index":1254,"name":{"6144":{}},"parent":{}}],["fret",{"_index":1210,"name":{"5357":{}},"parent":{}}],["frethandfinger",{"_index":517,"name":{"1447":{},"1681":{},"6715":{}},"parent":{"1682":{},"1683":{},"1684":{},"1685":{},"1686":{},"1687":{},"1688":{},"1689":{},"1690":{},"1691":{},"1692":{},"1693":{},"1694":{},"1695":{},"1696":{},"1697":{},"1698":{},"1699":{},"1700":{},"1701":{},"1702":{},"1703":{},"1704":{},"1705":{},"1706":{},"1707":{},"1708":{},"1709":{},"1710":{},"1711":{},"1712":{},"1713":{},"1714":{},"1715":{},"1716":{},"1717":{},"1718":{},"1719":{},"1720":{},"1721":{},"1722":{},"1723":{},"1724":{},"1725":{},"1726":{},"1727":{},"1728":{},"1729":{},"1730":{},"1731":{},"1732":{},"1733":{},"1734":{},"1735":{},"1736":{},"1737":{},"1738":{},"1739":{},"1740":{},"1741":{},"1742":{},"1743":{},"1744":{},"1745":{},"1746":{}}}],["fromcssstring",{"_index":604,"name":{"1596":{}},"parent":{}}],["full",{"_index":1370,"name":{"6913":{}},"parent":{}}],["gcd",{"_index":651,"name":{"1654":{}},"parent":{}}],["generatebeams",{"_index":200,"name":{"376":{}},"parent":{}}],["generatedon",{"_index":580,"name":{"1559":{}},"parent":{}}],["getabsolutex",{"_index":163,"name":{"298":{},"871":{},"1012":{},"1833":{},"2080":{},"2297":{},"2524":{},"2725":{},"3084":{},"3193":{},"3769":{},"4426":{},"5009":{},"5471":{},"5886":{},"6071":{},"6192":{},"6478":{}},"parent":{}}],["getaccidental",{"_index":797,"name":{"2596":{}},"parent":{}}],["getactualresolution",{"_index":1378,"name":{"6927":{}},"parent":{}}],["getattribute",{"_index":61,"name":{"61":{},"141":{},"213":{},"350":{},"427":{},"505":{},"719":{},"785":{},"923":{},"1065":{},"1120":{},"1184":{},"1341":{},"1729":{},"1882":{},"1993":{},"2133":{},"2343":{},"2410":{},"2573":{},"2643":{},"2777":{},"2843":{},"2925":{},"3139":{},"3303":{},"3364":{},"3441":{},"3503":{},"3600":{},"3822":{},"3939":{},"4006":{},"4055":{},"4110":{},"4176":{},"4242":{},"4472":{},"4544":{},"4600":{},"4664":{},"4721":{},"4778":{},"4839":{},"4909":{},"5061":{},"5130":{},"5204":{},"5338":{},"5520":{},"5578":{},"5683":{},"5736":{},"5802":{},"5939":{},"6124":{},"6215":{},"6331":{},"6396":{},"6530":{},"6592":{},"6669":{},"6840":{},"6888":{},"6955":{}},"parent":{}}],["getattributes",{"_index":60,"name":{"60":{},"140":{},"212":{},"349":{},"426":{},"504":{},"718":{},"784":{},"922":{},"1064":{},"1119":{},"1183":{},"1340":{},"1728":{},"1881":{},"1992":{},"2132":{},"2342":{},"2409":{},"2572":{},"2642":{},"2776":{},"2842":{},"2924":{},"3138":{},"3302":{},"3363":{},"3440":{},"3502":{},"3599":{},"3821":{},"3938":{},"4005":{},"4054":{},"4109":{},"4175":{},"4241":{},"4471":{},"4543":{},"4599":{},"4663":{},"4720":{},"4777":{},"4838":{},"4908":{},"5060":{},"5129":{},"5203":{},"5337":{},"5519":{},"5577":{},"5682":{},"5735":{},"5801":{},"5938":{},"6123":{},"6214":{},"6330":{},"6395":{},"6529":{},"6591":{},"6668":{},"6839":{},"6887":{},"6954":{}},"parent":{}}],["getbasecustomnoteheadglyph",{"_index":680,"name":{"1764":{},"2239":{},"2460":{},"4368":{},"4938":{},"5407":{}},"parent":{}}],["getbeam",{"_index":152,"name":{"287":{},"860":{},"1001":{},"1822":{},"2069":{},"2288":{},"2514":{},"2714":{},"3073":{},"3241":{},"3758":{},"4417":{},"4998":{},"5461":{},"5875":{},"6060":{},"6467":{}},"parent":{}}],["getbeamcount",{"_index":217,"name":{"398":{},"1766":{},"2241":{},"2462":{},"4370":{},"4940":{},"5409":{}},"parent":{}}],["getbeamlines",{"_index":227,"name":{"408":{}},"parent":{}}],["getbeamytodraw",{"_index":224,"name":{"405":{}},"parent":{}}],["getbeatsoccupied",{"_index":1322,"name":{"6646":{}},"parent":{}}],["getbottomlinebottomy",{"_index":1003,"name":{"3876":{},"5621":{}},"parent":{}}],["getbottomliney",{"_index":1014,"name":{"3892":{},"5637":{}},"parent":{}}],["getbottomy",{"_index":1013,"name":{"3891":{},"5636":{}},"parent":{}}],["getboundingbox",{"_index":63,"name":{"63":{},"143":{},"215":{},"352":{},"429":{},"507":{},"721":{},"787":{},"811":{},"1067":{},"1122":{},"1186":{},"1343":{},"1731":{},"1884":{},"1995":{},"2020":{},"2193":{},"2412":{},"2575":{},"2645":{},"2779":{},"2845":{},"2927":{},"3141":{},"3194":{},"3366":{},"3443":{},"3505":{},"3602":{},"3709":{},"3890":{},"4008":{},"4057":{},"4112":{},"4178":{},"4244":{},"4319":{},"4546":{},"4602":{},"4666":{},"4723":{},"4780":{},"4841":{},"4887":{},"5063":{},"5132":{},"5206":{},"5340":{},"5522":{},"5580":{},"5635":{},"5738":{},"5804":{},"5941":{},"6126":{},"6217":{},"6333":{},"6398":{},"6532":{},"6594":{},"6671":{},"6842":{},"6890":{},"6930":{}},"parent":{}}],["getcanonicalintervalname",{"_index":865,"name":{"2978":{}},"parent":{}}],["getcanonicalnotename",{"_index":864,"name":{"2977":{}},"parent":{}}],["getcanvascontext",{"_index":972,"name":{"3697":{},"6781":{}},"parent":{}}],["getcategory",{"_index":47,"name":{"47":{},"127":{},"199":{},"336":{},"413":{},"491":{},"705":{},"771":{},"909":{},"1051":{},"1106":{},"1170":{},"1326":{},"1715":{},"1868":{},"1979":{},"2119":{},"2330":{},"2396":{},"2559":{},"2629":{},"2763":{},"2829":{},"2911":{},"3124":{},"3289":{},"3350":{},"3427":{},"3489":{},"3586":{},"3808":{},"3926":{},"3992":{},"4041":{},"4096":{},"4162":{},"4228":{},"4459":{},"4530":{},"4586":{},"4650":{},"4707":{},"4764":{},"4825":{},"4895":{},"5046":{},"5116":{},"5190":{},"5324":{},"5506":{},"5564":{},"5670":{},"5722":{},"5789":{},"5925":{},"6110":{},"6200":{},"6317":{},"6382":{},"6516":{},"6578":{},"6655":{},"6826":{},"6874":{},"6941":{}},"parent":{}}],["getcenteralignedtickables",{"_index":1280,"name":{"6266":{}},"parent":{}}],["getcenterglyphx",{"_index":685,"name":{"1771":{},"2245":{},"2466":{},"4374":{},"4945":{},"5413":{}},"parent":{}}],["getcenterxshift",{"_index":175,"name":{"314":{},"887":{},"1028":{},"1847":{},"2096":{},"2308":{},"2537":{},"2741":{},"3100":{},"3266":{},"3785":{},"4437":{},"5023":{},"5484":{},"5902":{},"6087":{},"6168":{},"6494":{}},"parent":{}}],["getclef",{"_index":370,"name":{"809":{},"3904":{},"5648":{}},"parent":{}}],["getcode",{"_index":725,"name":{"1961":{},"6301":{}},"parent":{}}],["getconfigforlines",{"_index":1037,"name":{"3922":{},"5666":{}},"parent":{}}],["getcontext",{"_index":64,"name":{"64":{},"144":{},"216":{},"353":{},"430":{},"508":{},"722":{},"788":{},"925":{},"1068":{},"1123":{},"1187":{},"1344":{},"1379":{},"1732":{},"1885":{},"1996":{},"2135":{},"2345":{},"2413":{},"2576":{},"2646":{},"2780":{},"2846":{},"2928":{},"3142":{},"3305":{},"3367":{},"3444":{},"3506":{},"3603":{},"3702":{},"3824":{},"3941":{},"4009":{},"4058":{},"4113":{},"4179":{},"4245":{},"4474":{},"4547":{},"4603":{},"4667":{},"4724":{},"4781":{},"4842":{},"4911":{},"5064":{},"5133":{},"5207":{},"5341":{},"5523":{},"5581":{},"5685":{},"5739":{},"5805":{},"5942":{},"6127":{},"6218":{},"6334":{},"6399":{},"6533":{},"6595":{},"6672":{},"6843":{},"6891":{},"6957":{}},"parent":{}}],["getcurrenttick",{"_index":1281,"name":{"6268":{}},"parent":{}}],["getdata",{"_index":615,"name":{"1607":{}},"parent":{}}],["getdefaultbeamgroups",{"_index":198,"name":{"374":{}},"parent":{}}],["getdefaultledgerlinestyle",{"_index":993,"name":{"3862":{},"5607":{}},"parent":{}}],["getdefaultregistry",{"_index":951,"name":{"3624":{}},"parent":{}}],["getdots",{"_index":394,"name":{"1140":{}},"parent":{}}],["getduration",{"_index":148,"name":{"283":{},"856":{},"997":{},"1818":{},"2065":{},"2285":{},"2511":{},"2710":{},"3069":{},"3237":{},"3754":{},"4414":{},"4994":{},"5458":{},"5871":{},"6056":{},"6463":{}},"parent":{}}],["getelementbyid",{"_index":957,"name":{"3632":{}},"parent":{}}],["getelements",{"_index":442,"name":{"1272":{}},"parent":{}}],["getelementsbyattribute",{"_index":958,"name":{"3633":{}},"parent":{}}],["getelementsbyclass",{"_index":960,"name":{"3635":{}},"parent":{}}],["getelementsbytype",{"_index":959,"name":{"3634":{}},"parent":{}}],["getendclef",{"_index":1024,"name":{"3906":{},"5650":{}},"parent":{}}],["getextension",{"_index":1154,"name":{"4884":{}},"parent":{}}],["getextents",{"_index":1156,"name":{"4888":{}},"parent":{}}],["getfactory",{"_index":441,"name":{"1271":{}},"parent":{}}],["getfirstdotpx",{"_index":161,"name":{"296":{},"869":{},"1010":{},"1831":{},"2078":{},"2295":{},"2522":{},"2723":{},"3082":{},"3250":{},"3767":{},"4424":{},"5007":{},"5469":{},"5884":{},"6069":{},"6476":{}},"parent":{}}],["getflagstyle",{"_index":766,"name":{"2215":{},"4341":{}},"parent":{}}],["getfont",{"_index":69,"name":{"69":{},"149":{},"221":{},"358":{},"435":{},"513":{},"600":{},"726":{},"793":{},"929":{},"1073":{},"1128":{},"1192":{},"1349":{},"1737":{},"1890":{},"2001":{},"2140":{},"2350":{},"2418":{},"2581":{},"2651":{},"2785":{},"2851":{},"2933":{},"3147":{},"3310":{},"3372":{},"3449":{},"3511":{},"3608":{},"3681":{},"3829":{},"3946":{},"4014":{},"4063":{},"4118":{},"4184":{},"4250":{},"4479":{},"4552":{},"4608":{},"4672":{},"4729":{},"4786":{},"4847":{},"4916":{},"5069":{},"5138":{},"5212":{},"5284":{},"5345":{},"5528":{},"5586":{},"5690":{},"5744":{},"5810":{},"5947":{},"6132":{},"6223":{},"6339":{},"6404":{},"6538":{},"6600":{},"6677":{},"6848":{},"6896":{},"6962":{}},"parent":{}}],["getfontfamilies",{"_index":1238,"name":{"5971":{}},"parent":{}}],["getfontsize",{"_index":73,"name":{"73":{},"153":{},"225":{},"362":{},"439":{},"517":{},"730":{},"797":{},"933":{},"1077":{},"1132":{},"1196":{},"1353":{},"1741":{},"1894":{},"2005":{},"2144":{},"2354":{},"2422":{},"2585":{},"2655":{},"2789":{},"2855":{},"2937":{},"3151":{},"3314":{},"3376":{},"3453":{},"3515":{},"3612":{},"3833":{},"3950":{},"4018":{},"4067":{},"4122":{},"4188":{},"4254":{},"4483":{},"4556":{},"4612":{},"4676":{},"4733":{},"4790":{},"4851":{},"4920":{},"5073":{},"5142":{},"5216":{},"5349":{},"5532":{},"5590":{},"5694":{},"5748":{},"5814":{},"5951":{},"6136":{},"6227":{},"6343":{},"6408":{},"6542":{},"6604":{},"6681":{},"6852":{},"6900":{},"6966":{}},"parent":{}}],["getformattermetrics",{"_index":174,"name":{"313":{},"886":{},"1027":{},"1846":{},"2095":{},"2307":{},"2536":{},"2740":{},"3099":{},"3265":{},"3784":{},"4436":{},"5022":{},"5483":{},"5901":{},"6086":{},"6167":{},"6273":{},"6493":{}},"parent":{}}],["getfrethandfinger",{"_index":671,"name":{"1690":{}},"parent":{}}],["getglyph",{"_index":139,"name":{"274":{},"847":{},"988":{},"1810":{},"2056":{},"2277":{},"2503":{},"2701":{},"3060":{},"3187":{},"3745":{},"4406":{},"4986":{},"5450":{},"5862":{},"6047":{},"6454":{}},"parent":{}}],["getglyphmetrics",{"_index":1243,"name":{"5977":{}},"parent":{}}],["getglyphs",{"_index":620,"name":{"1613":{}},"parent":{}}],["getglyphwidth",{"_index":140,"name":{"275":{},"848":{},"989":{},"1811":{},"2057":{},"2278":{},"2504":{},"2702":{},"3061":{},"3229":{},"3746":{},"4407":{},"4987":{},"5451":{},"5863":{},"6048":{},"6455":{}},"parent":{}}],["getgracenotes",{"_index":785,"name":{"2375":{}},"parent":{}}],["geth",{"_index":251,"name":{"538":{}},"parent":{}}],["getheight",{"_index":1011,"name":{"3888":{},"4886":{},"5633":{}},"parent":{}}],["gethorizontal",{"_index":356,"name":{"681":{}},"parent":{}}],["getindex",{"_index":31,"name":{"31":{},"111":{},"183":{},"476":{},"689":{},"1154":{},"1699":{},"2380":{},"2812":{},"3334":{},"3411":{},"3473":{},"5100":{},"5175":{},"6562":{},"6810":{}},"parent":{}}],["getinfo",{"_index":1239,"name":{"5973":{},"6364":{}},"parent":{}}],["getintervalbetween",{"_index":869,"name":{"2982":{}},"parent":{}}],["getintervalvalue",{"_index":863,"name":{"2976":{}},"parent":{}}],["getintrinsicticks",{"_index":188,"name":{"327":{},"900":{},"1042":{},"1859":{},"2110":{},"2321":{},"2550":{},"2754":{},"3115":{},"3280":{},"3799":{},"4450":{},"5037":{},"5497":{},"5916":{},"6101":{},"6187":{},"6507":{}},"parent":{}}],["getjustification",{"_index":94,"name":{"103":{}},"parent":{}}],["getkerningadjustment",{"_index":342,"name":{"666":{}},"parent":{}}],["getkey",{"_index":796,"name":{"2594":{}},"parent":{}}],["getkeyline",{"_index":769,"name":{"2218":{},"4344":{}},"parent":{}}],["getkeyparts",{"_index":861,"name":{"2974":{}},"parent":{}}],["getkeyprops",{"_index":169,"name":{"304":{},"877":{},"1018":{},"1837":{},"2086":{},"2299":{},"2528":{},"2731":{},"3090":{},"3257":{},"3775":{},"4428":{},"5013":{},"5475":{},"5892":{},"6077":{},"6484":{}},"parent":{}}],["getkeys",{"_index":168,"name":{"303":{},"876":{},"1017":{},"1836":{},"2085":{},"2298":{},"2527":{},"2730":{},"3089":{},"3256":{},"3774":{},"4427":{},"5012":{},"5474":{},"5891":{},"6076":{},"6483":{}},"parent":{}}],["getkeysignatures",{"_index":567,"name":{"1541":{}},"parent":{}}],["getlargesttickwidth",{"_index":1374,"name":{"6921":{}},"parent":{}}],["getlayoutmetrics",{"_index":368,"name":{"769":{},"2627":{},"3990":{},"4225":{},"4528":{},"4584":{},"4648":{},"4705":{},"4823":{},"6380":{}},"parent":{}}],["getledgerlinestyle",{"_index":764,"name":{"2213":{},"4339":{}},"parent":{}}],["getleftdisplacedheadpx",{"_index":132,"name":{"267":{},"840":{},"981":{},"1803":{},"2049":{},"2272":{},"2497":{},"2694":{},"3053":{},"3222":{},"3738":{},"4401":{},"4979":{},"5444":{},"5855":{},"6040":{},"6447":{}},"parent":{}}],["getleftparenthesispx",{"_index":160,"name":{"295":{},"868":{},"1009":{},"1830":{},"2077":{},"2294":{},"2521":{},"2722":{},"3081":{},"3249":{},"3766":{},"4423":{},"5006":{},"5468":{},"5883":{},"6068":{},"6475":{}},"parent":{}}],["getleftshift",{"_index":821,"name":{"2878":{}},"parent":{}}],["getline",{"_index":894,"name":{"3191":{}},"parent":{}}],["getlineforrest",{"_index":138,"name":{"273":{},"846":{},"987":{},"1809":{},"2055":{},"2207":{},"2443":{},"2700":{},"3059":{},"3228":{},"3744":{},"4333":{},"4985":{},"5390":{},"5861":{},"6046":{},"6453":{}},"parent":{}}],["getlinefory",{"_index":1016,"name":{"3894":{},"5639":{}},"parent":{}}],["getlinenumber",{"_index":137,"name":{"272":{},"845":{},"986":{},"1808":{},"2054":{},"2194":{},"2502":{},"2699":{},"3058":{},"3227":{},"3743":{},"4320":{},"4984":{},"5449":{},"5860":{},"6045":{},"6452":{}},"parent":{}}],["getmaxtickable",{"_index":1275,"name":{"6261":{}},"parent":{}}],["getmaxticks",{"_index":1273,"name":{"6259":{}},"parent":{}}],["getmembers",{"_index":820,"name":{"2876":{}},"parent":{}}],["getmetricforglyph",{"_index":322,"name":{"637":{}},"parent":{}}],["getmetrics",{"_index":162,"name":{"297":{},"870":{},"1011":{},"1608":{},"1832":{},"1922":{},"1971":{},"2079":{},"2296":{},"2523":{},"2724":{},"2881":{},"3083":{},"3251":{},"3401":{},"3768":{},"4425":{},"5008":{},"5470":{},"5885":{},"6070":{},"6198":{},"6267":{},"6292":{},"6477":{}},"parent":{}}],["getmintickable",{"_index":1276,"name":{"6262":{}},"parent":{}}],["getminticks",{"_index":1274,"name":{"6260":{}},"parent":{}}],["getmintotalwidth",{"_index":644,"name":{"1641":{}},"parent":{}}],["getmode",{"_index":1376,"name":{"6924":{}},"parent":{}}],["getmodifiercontext",{"_index":34,"name":{"34":{},"114":{},"186":{},"333":{},"479":{},"692":{},"906":{},"1048":{},"1157":{},"1702":{},"1865":{},"2116":{},"2327":{},"2383":{},"2556":{},"2760":{},"2815":{},"3121":{},"3286":{},"3337":{},"3414":{},"3476":{},"3805":{},"4456":{},"5043":{},"5103":{},"5178":{},"5503":{},"5922":{},"6107":{},"6194":{},"6513":{},"6565":{},"6813":{}},"parent":{}}],["getmodifiers",{"_index":183,"name":{"322":{},"895":{},"1037":{},"1855":{},"2105":{},"2317":{},"2546":{},"2749":{},"2875":{},"3109":{},"3275":{},"3794":{},"3917":{},"4446":{},"5032":{},"5493":{},"5661":{},"5911":{},"6096":{},"6180":{},"6502":{}},"parent":{}}],["getmodifiersbytype",{"_index":157,"name":{"292":{},"865":{},"1006":{},"1827":{},"2074":{},"2292":{},"2519":{},"2719":{},"3078":{},"3246":{},"3763":{},"4421":{},"5003":{},"5466":{},"5880":{},"6065":{},"6472":{}},"parent":{}}],["getmodifierstartxy",{"_index":158,"name":{"293":{},"866":{},"1007":{},"1828":{},"2075":{},"2208":{},"2442":{},"2720":{},"3079":{},"3247":{},"3764":{},"4334":{},"5004":{},"5389":{},"5881":{},"6066":{},"6473":{}},"parent":{}}],["getmodifierxshift",{"_index":1005,"name":{"3882":{},"5627":{}},"parent":{}}],["getmusicfont",{"_index":552,"name":{"1525":{}},"parent":{}}],["getname",{"_index":614,"name":{"1606":{}},"parent":{}}],["getnestedtupletcount",{"_index":1327,"name":{"6651":{}},"parent":{}}],["getnextcontext",{"_index":1266,"name":{"6247":{}},"parent":{}}],["getnote",{"_index":29,"name":{"29":{},"108":{},"180":{},"473":{},"686":{},"1152":{},"1696":{},"2377":{},"2809":{},"3331":{},"3408":{},"3471":{},"5097":{},"5172":{},"6559":{},"6807":{}},"parent":{}}],["getnotecount",{"_index":1320,"name":{"6644":{}},"parent":{}}],["getnoteendx",{"_index":997,"name":{"3867":{},"5612":{}},"parent":{}}],["getnoteforfret",{"_index":1302,"name":{"6617":{}},"parent":{}}],["getnoteheadbeginx",{"_index":773,"name":{"2223":{},"4349":{}},"parent":{}}],["getnoteheadbounds",{"_index":772,"name":{"2222":{},"4348":{}},"parent":{}}],["getnoteheadendx",{"_index":774,"name":{"2224":{},"4350":{}},"parent":{}}],["getnoteparts",{"_index":860,"name":{"2973":{}},"parent":{}}],["getnotes",{"_index":216,"name":{"397":{},"6643":{}},"parent":{}}],["getnotesoccupied",{"_index":1324,"name":{"6648":{}},"parent":{}}],["getnotestartx",{"_index":996,"name":{"3866":{},"5611":{}},"parent":{}}],["getnotetype",{"_index":151,"name":{"286":{},"859":{},"1000":{},"1821":{},"2068":{},"2287":{},"2513":{},"2713":{},"3072":{},"3240":{},"3757":{},"4416":{},"4997":{},"5460":{},"5874":{},"6059":{},"6466":{}},"parent":{}}],["getnotevalue",{"_index":862,"name":{"2975":{}},"parent":{}}],["getnumlines",{"_index":1000,"name":{"3871":{},"5616":{}},"parent":{}}],["getoutlineboundingbox",{"_index":721,"name":{"1950":{},"6283":{}},"parent":{}}],["getpadding",{"_index":365,"name":{"766":{},"2609":{},"3987":{},"4222":{},"4525":{},"4581":{},"4645":{},"4702":{},"4820":{},"6377":{}},"parent":{}}],["getplaynote",{"_index":125,"name":{"260":{},"833":{},"974":{},"1798":{},"2042":{},"2267":{},"2491":{},"2687":{},"3046":{},"3216":{},"3731":{},"4396":{},"4972":{},"5438":{},"5848":{},"6033":{},"6440":{}},"parent":{}}],["getposition",{"_index":37,"name":{"37":{},"117":{},"189":{},"482":{},"695":{},"758":{},"1160":{},"1705":{},"2386":{},"2616":{},"2818":{},"3340":{},"3417":{},"3479":{},"3977":{},"4212":{},"4515":{},"4571":{},"4635":{},"4692":{},"4810":{},"5106":{},"5167":{},"6367":{},"6568":{},"6816":{}},"parent":{}}],["getpositions",{"_index":790,"name":{"2441":{},"5388":{}},"parent":{}}],["getrelativenotename",{"_index":867,"name":{"2980":{}},"parent":{}}],["getrelativenotevalue",{"_index":866,"name":{"2979":{}},"parent":{}}],["getreportwidth",{"_index":339,"name":{"663":{}},"parent":{}}],["getresolution",{"_index":619,"name":{"1612":{},"5984":{}},"parent":{}}],["getresolutionmultiplier",{"_index":641,"name":{"1637":{},"6926":{}},"parent":{}}],["getrightdisplacedheadpx",{"_index":133,"name":{"268":{},"841":{},"982":{},"1804":{},"2050":{},"2273":{},"2498":{},"2695":{},"3054":{},"3223":{},"3739":{},"4402":{},"4980":{},"5445":{},"5856":{},"6041":{},"6448":{}},"parent":{}}],["getrightparenthesispx",{"_index":159,"name":{"294":{},"867":{},"1008":{},"1829":{},"2076":{},"2293":{},"2520":{},"2721":{},"3080":{},"3248":{},"3765":{},"4422":{},"5005":{},"5467":{},"5882":{},"6067":{},"6474":{}},"parent":{}}],["getrightshift",{"_index":822,"name":{"2879":{}},"parent":{}}],["getscaletones",{"_index":868,"name":{"2981":{}},"parent":{}}],["getslopey",{"_index":221,"name":{"402":{}},"parent":{}}],["getsmallesttickcount",{"_index":1375,"name":{"6922":{}},"parent":{}}],["getspacingbetweenlines",{"_index":1012,"name":{"3889":{},"5634":{}},"parent":{}}],["getspacingfromnextmodifier",{"_index":42,"name":{"42":{},"122":{},"194":{},"487":{},"700":{},"1165":{},"1710":{},"2391":{},"2823":{},"3345":{},"3422":{},"3484":{},"5111":{},"5185":{},"6573":{},"6821":{}},"parent":{}}],["getstate",{"_index":823,"name":{"2880":{}},"parent":{}}],["getstave",{"_index":129,"name":{"264":{},"760":{},"837":{},"978":{},"1381":{},"1801":{},"2046":{},"2270":{},"2495":{},"2618":{},"2691":{},"2905":{},"3050":{},"3220":{},"3735":{},"3979":{},"4214":{},"4399":{},"4517":{},"4573":{},"4637":{},"4694":{},"4812":{},"4976":{},"5442":{},"5852":{},"6037":{},"6196":{},"6369":{},"6444":{},"6929":{}},"parent":{}}],["getstavenotescale",{"_index":750,"name":{"2181":{},"4359":{}},"parent":{}}],["getstem",{"_index":675,"name":{"1759":{},"2235":{},"2455":{},"4364":{},"4933":{},"5402":{}},"parent":{}}],["getstemdirection",{"_index":164,"name":{"299":{},"396":{},"872":{},"1013":{},"1768":{},"2081":{},"2243":{},"2464":{},"2726":{},"3085":{},"3252":{},"3770":{},"4372":{},"4942":{},"5411":{},"5887":{},"6072":{},"6479":{}},"parent":{}}],["getstemextension",{"_index":686,"name":{"1772":{},"2180":{},"2438":{},"4360":{},"4946":{},"5385":{}},"parent":{}}],["getstemextents",{"_index":165,"name":{"300":{},"873":{},"1014":{},"1774":{},"2082":{},"2247":{},"2447":{},"2727":{},"3086":{},"3253":{},"3771":{},"4376":{},"4948":{},"5394":{},"5888":{},"6073":{},"6480":{}},"parent":{}}],["getstemlength",{"_index":681,"name":{"1765":{},"2240":{},"2461":{},"4369":{},"4939":{},"5408":{}},"parent":{}}],["getstemminimumlength",{"_index":682,"name":{"1767":{},"2242":{},"2463":{},"4371":{},"4941":{},"5410":{}},"parent":{}}],["getstemstyle",{"_index":762,"name":{"2211":{},"4337":{}},"parent":{}}],["getstemx",{"_index":684,"name":{"1770":{},"2199":{},"2445":{},"4325":{},"4944":{},"5392":{}},"parent":{}}],["getstemy",{"_index":791,"name":{"2446":{},"5393":{}},"parent":{}}],["getstyle",{"_index":50,"name":{"50":{},"130":{},"202":{},"339":{},"416":{},"494":{},"708":{},"774":{},"912":{},"1054":{},"1109":{},"1173":{},"1329":{},"1718":{},"1871":{},"1982":{},"2122":{},"2332":{},"2399":{},"2562":{},"2632":{},"2766":{},"2832":{},"2914":{},"3127":{},"3292":{},"3353":{},"3430":{},"3492":{},"3589":{},"3811":{},"3880":{},"3995":{},"4044":{},"4099":{},"4165":{},"4231":{},"4461":{},"4533":{},"4589":{},"4653":{},"4710":{},"4767":{},"4828":{},"4898":{},"5049":{},"5119":{},"5193":{},"5327":{},"5509":{},"5567":{},"5625":{},"5725":{},"5792":{},"5928":{},"6113":{},"6203":{},"6320":{},"6385":{},"6519":{},"6581":{},"6658":{},"6829":{},"6877":{},"6944":{}},"parent":{}}],["getsvgcontext",{"_index":973,"name":{"3698":{}},"parent":{}}],["getsymbolblock",{"_index":343,"name":{"667":{}},"parent":{}}],["gettext",{"_index":241,"name":{"468":{}},"parent":{}}],["gettextheight",{"_index":242,"name":{"469":{}},"parent":{}}],["gettickableforvoice",{"_index":1278,"name":{"6264":{}},"parent":{}}],["gettickables",{"_index":1277,"name":{"6263":{},"6923":{}},"parent":{}}],["gettickablesbyvoice",{"_index":1279,"name":{"6265":{}},"parent":{}}],["gettickcontext",{"_index":146,"name":{"281":{},"854":{},"995":{},"1651":{},"1816":{},"2063":{},"2283":{},"2509":{},"2708":{},"3067":{},"3235":{},"3752":{},"4412":{},"4992":{},"5456":{},"5869":{},"6054":{},"6461":{}},"parent":{}}],["gettickid",{"_index":1268,"name":{"6250":{}},"parent":{}}],["gettickmultiplier",{"_index":190,"name":{"329":{},"902":{},"1044":{},"1861":{},"2112":{},"2323":{},"2552":{},"2756":{},"3117":{},"3282":{},"3801":{},"4452":{},"5039":{},"5499":{},"5918":{},"6103":{},"6189":{},"6509":{}},"parent":{}}],["getticks",{"_index":171,"name":{"306":{},"879":{},"1020":{},"1839":{},"2088":{},"2300":{},"2529":{},"2733":{},"3092":{},"3259":{},"3777":{},"4429":{},"5015":{},"5476":{},"5894":{},"6079":{},"6159":{},"6486":{}},"parent":{}}],["getticksused",{"_index":1373,"name":{"6920":{}},"parent":{}}],["gettieendx",{"_index":999,"name":{"3869":{},"5614":{}},"parent":{}}],["gettieleftx",{"_index":167,"name":{"302":{},"875":{},"1016":{},"1835":{},"2084":{},"2206":{},"2526":{},"2729":{},"3088":{},"3255":{},"3773":{},"4332":{},"5011":{},"5473":{},"5890":{},"6075":{},"6482":{}},"parent":{}}],["gettierightx",{"_index":166,"name":{"301":{},"874":{},"1015":{},"1834":{},"2083":{},"2205":{},"2525":{},"2728":{},"3087":{},"3254":{},"3772":{},"4331":{},"5010":{},"5472":{},"5889":{},"6074":{},"6481":{}},"parent":{}}],["gettiestartx",{"_index":998,"name":{"3868":{},"5613":{}},"parent":{}}],["gettoplinetopy",{"_index":1002,"name":{"3875":{},"5620":{}},"parent":{}}],["gettotalticks",{"_index":1372,"name":{"6919":{}},"parent":{}}],["gettuplet",{"_index":179,"name":{"318":{},"891":{},"1032":{},"1851":{},"2100":{},"2312":{},"2541":{},"2745":{},"3104":{},"3270":{},"3789":{},"4441":{},"5027":{},"5488":{},"5906":{},"6091":{},"6174":{},"6498":{}},"parent":{}}],["gettupletstack",{"_index":180,"name":{"319":{},"892":{},"1033":{},"1852":{},"2101":{},"2313":{},"2542":{},"2746":{},"3105":{},"3271":{},"3790":{},"4442":{},"5028":{},"5489":{},"5907":{},"6092":{},"6175":{},"6499":{}},"parent":{}}],["gettype",{"_index":106,"name":{"237":{},"3971":{},"4035":{}},"parent":{}}],["getvalueforfret",{"_index":1301,"name":{"6616":{}},"parent":{}}],["getvalueforstring",{"_index":1300,"name":{"6615":{}},"parent":{}}],["getvertical",{"_index":354,"name":{"679":{}},"parent":{}}],["getverticalbarwidth",{"_index":1036,"name":{"3921":{},"5665":{}},"parent":{}}],["getvoice",{"_index":144,"name":{"279":{},"852":{},"993":{},"1814":{},"2061":{},"2281":{},"2507":{},"2706":{},"3065":{},"3233":{},"3750":{},"4410":{},"4990":{},"5454":{},"5867":{},"6052":{},"6172":{},"6459":{}},"parent":{}}],["getvoices",{"_index":485,"name":{"1382":{}},"parent":{}}],["getvoiceshiftwidth",{"_index":770,"name":{"2219":{},"4345":{}},"parent":{}}],["getw",{"_index":250,"name":{"537":{}},"parent":{}}],["getwidth",{"_index":24,"name":{"24":{},"106":{},"178":{},"309":{},"471":{},"682":{},"755":{},"882":{},"1023":{},"1150":{},"1694":{},"1842":{},"1921":{},"1951":{},"2091":{},"2303":{},"2374":{},"2532":{},"2610":{},"2736":{},"2807":{},"2877":{},"3095":{},"3185":{},"3329":{},"3406":{},"3469":{},"3780":{},"3879":{},"3982":{},"4217":{},"4432":{},"4520":{},"4576":{},"4640":{},"4697":{},"4815":{},"5018":{},"5095":{},"5170":{},"5479":{},"5624":{},"5897":{},"6082":{},"6163":{},"6257":{},"6284":{},"6372":{},"6489":{},"6557":{},"6805":{}},"parent":{}}],["getwidthforcharacterinem",{"_index":1245,"name":{"5979":{}},"parent":{}}],["getwidthforglyph",{"_index":325,"name":{"640":{}},"parent":{}}],["getwidthfortextinem",{"_index":1246,"name":{"5980":{}},"parent":{}}],["getwidthfortextinpx",{"_index":1247,"name":{"5981":{}},"parent":{}}],["getx",{"_index":173,"name":{"312":{},"535":{},"763":{},"885":{},"1026":{},"1845":{},"2094":{},"2306":{},"2535":{},"2622":{},"2739":{},"3098":{},"3264":{},"3783":{},"3870":{},"3984":{},"4219":{},"4435":{},"4522":{},"4578":{},"4642":{},"4699":{},"4817":{},"5021":{},"5482":{},"5615":{},"5900":{},"6085":{},"6166":{},"6251":{},"6374":{},"6492":{}},"parent":{}}],["getx1",{"_index":260,"name":{"548":{}},"parent":{}}],["getxbase",{"_index":1269,"name":{"6253":{}},"parent":{}}],["getxoffset",{"_index":1271,"name":{"6255":{}},"parent":{}}],["getxs",{"_index":837,"name":{"2903":{}},"parent":{}}],["getxshift",{"_index":44,"name":{"44":{},"124":{},"196":{},"311":{},"488":{},"702":{},"884":{},"1025":{},"1167":{},"1712":{},"1844":{},"1965":{},"2093":{},"2305":{},"2393":{},"2534":{},"2738":{},"2825":{},"3097":{},"3263":{},"3347":{},"3424":{},"3486":{},"3782":{},"4038":{},"4434":{},"5020":{},"5113":{},"5187":{},"5481":{},"5899":{},"6084":{},"6165":{},"6305":{},"6491":{},"6575":{},"6823":{}},"parent":{}}],["getxshiftforglyph",{"_index":327,"name":{"642":{}},"parent":{}}],["gety",{"_index":249,"name":{"536":{},"3189":{},"3874":{},"5619":{}},"parent":{}}],["gety1",{"_index":261,"name":{"549":{}},"parent":{}}],["getyforbottomtext",{"_index":688,"name":{"1776":{},"2201":{},"2469":{},"3896":{},"4327":{},"4950":{},"5416":{},"5641":{}},"parent":{}}],["getyforglyphs",{"_index":1018,"name":{"3898":{},"5603":{}},"parent":{}}],["getyforline",{"_index":1015,"name":{"3893":{},"5638":{}},"parent":{}}],["getyfornote",{"_index":1017,"name":{"3897":{},"5642":{}},"parent":{}}],["getyfortoptext",{"_index":143,"name":{"278":{},"851":{},"992":{},"1775":{},"2060":{},"2200":{},"2468":{},"2705":{},"3064":{},"3232":{},"3749":{},"3895":{},"4326":{},"4949":{},"5415":{},"5640":{},"5866":{},"6051":{},"6458":{}},"parent":{}}],["getyoffsetfortext",{"_index":357,"name":{"683":{}},"parent":{}}],["getyposition",{"_index":1328,"name":{"6652":{}},"parent":{}}],["getys",{"_index":142,"name":{"277":{},"850":{},"991":{},"1813":{},"2059":{},"2280":{},"2506":{},"2704":{},"3063":{},"3231":{},"3748":{},"4409":{},"4989":{},"5453":{},"5865":{},"6050":{},"6457":{}},"parent":{}}],["getyshift",{"_index":727,"name":{"1967":{},"6307":{}},"parent":{}}],["getyshiftforglyph",{"_index":326,"name":{"641":{}},"parent":{}}],["ghostnote",{"_index":490,"name":{"1388":{},"1448":{},"1747":{},"6716":{}},"parent":{"1748":{},"1749":{},"1750":{},"1751":{},"1752":{},"1753":{},"1754":{},"1755":{},"1756":{},"1757":{},"1758":{},"1759":{},"1760":{},"1761":{},"1762":{},"1763":{},"1764":{},"1765":{},"1766":{},"1767":{},"1768":{},"1769":{},"1770":{},"1771":{},"1772":{},"1773":{},"1774":{},"1775":{},"1776":{},"1777":{},"1778":{},"1779":{},"1780":{},"1781":{},"1782":{},"1783":{},"1784":{},"1798":{},"1799":{},"1800":{},"1801":{},"1802":{},"1803":{},"1804":{},"1805":{},"1806":{},"1807":{},"1808":{},"1809":{},"1810":{},"1811":{},"1812":{},"1813":{},"1814":{},"1815":{},"1816":{},"1817":{},"1818":{},"1819":{},"1820":{},"1821":{},"1822":{},"1823":{},"1824":{},"1825":{},"1826":{},"1827":{},"1828":{},"1829":{},"1830":{},"1831":{},"1832":{},"1833":{},"1834":{},"1835":{},"1836":{},"1837":{},"1838":{},"1839":{},"1840":{},"1841":{},"1842":{},"1843":{},"1844":{},"1845":{},"1846":{},"1847":{},"1848":{},"1849":{},"1850":{},"1851":{},"1852":{},"1853":{},"1854":{},"1855":{},"1856":{},"1857":{},"1858":{},"1859":{},"1860":{},"1861":{},"1862":{},"1863":{},"1864":{},"1865":{},"1866":{},"1867":{},"1868":{},"1869":{},"1870":{},"1871":{},"1872":{},"1873":{},"1874":{},"1875":{},"1876":{},"1877":{},"1878":{},"1879":{},"1880":{},"1881":{},"1882":{},"1883":{},"1884":{},"1885":{},"1886":{},"1887":{},"1888":{},"1889":{},"1890":{},"1891":{},"1892":{},"1893":{},"1894":{},"1895":{},"1896":{},"1897":{},"1898":{},"1899":{}}}],["ghostnote.__type",{"_index":691,"name":{},"parent":{"1785":{},"1786":{},"1787":{},"1788":{},"1789":{},"1790":{},"1791":{},"1792":{},"1793":{},"1794":{},"1795":{},"1796":{},"1797":{}}}],["globalobject",{"_index":1341,"name":{"6766":{}},"parent":{}}],["globalsoftmax",{"_index":625,"name":{"1618":{},"5290":{}},"parent":{}}],["glyph",{"_index":110,"name":{"242":{},"611":{},"621":{},"815":{},"956":{},"1449":{},"1780":{},"1941":{},"2024":{},"2249":{},"2473":{},"2669":{},"3028":{},"3198":{},"3713":{},"4378":{},"4954":{},"5420":{},"5830":{},"5991":{},"6015":{},"6350":{},"6422":{},"6717":{}},"parent":{"1942":{},"1943":{},"1944":{},"1945":{},"1946":{},"1947":{},"1948":{},"1949":{},"1950":{},"1951":{},"1952":{},"1953":{},"1954":{},"1955":{},"1956":{},"1957":{},"1958":{},"1959":{},"1960":{},"1961":{},"1962":{},"1963":{},"1964":{},"1965":{},"1966":{},"1967":{},"1968":{},"1969":{},"1970":{},"1971":{},"1972":{},"1973":{},"1974":{},"1975":{},"1976":{},"1977":{},"1978":{},"1979":{},"1980":{},"1981":{},"1982":{},"1983":{},"1984":{},"1985":{},"1986":{},"1987":{},"1988":{},"1989":{},"1990":{},"1991":{},"1992":{},"1993":{},"1994":{},"1995":{},"1996":{},"1997":{},"1998":{},"1999":{},"2000":{},"2001":{},"2002":{},"2003":{},"2004":{},"2005":{},"2006":{},"2007":{},"2008":{},"2009":{},"2010":{}}}],["glyph_code",{"_index":893,"name":{"3184":{}},"parent":{}}],["glyph_font_scale",{"_index":120,"name":{"254":{},"827":{},"968":{},"1792":{},"2036":{},"2157":{},"2261":{},"2485":{},"2681":{},"3040":{},"3159":{},"3210":{},"3725":{},"4288":{},"4390":{},"4630":{},"4966":{},"5365":{},"5432":{},"5842":{},"6027":{},"6434":{}},"parent":{}}],["glyph_font_size",{"_index":122,"name":{"256":{},"829":{},"970":{},"1794":{},"2038":{},"2263":{},"2487":{},"2683":{},"3042":{},"3212":{},"3727":{},"4392":{},"4968":{},"5434":{},"5844":{},"6029":{},"6436":{}},"parent":{}}],["glyphmetrics",{"_index":709,"name":{"1925":{}},"parent":{"1926":{},"1927":{},"1928":{},"1929":{},"1930":{},"1931":{},"1932":{},"1933":{},"1934":{},"1935":{}}}],["glyphnote",{"_index":488,"name":{"1386":{},"1450":{},"2014":{},"6718":{}},"parent":{"2015":{},"2016":{},"2017":{},"2018":{},"2019":{},"2020":{},"2021":{},"2022":{},"2023":{},"2024":{},"2025":{},"2026":{},"2027":{},"2028":{},"2042":{},"2043":{},"2044":{},"2045":{},"2046":{},"2047":{},"2048":{},"2049":{},"2050":{},"2051":{},"2052":{},"2053":{},"2054":{},"2055":{},"2056":{},"2057":{},"2058":{},"2059":{},"2060":{},"2061":{},"2062":{},"2063":{},"2064":{},"2065":{},"2066":{},"2067":{},"2068":{},"2069":{},"2070":{},"2071":{},"2072":{},"2073":{},"2074":{},"2075":{},"2076":{},"2077":{},"2078":{},"2079":{},"2080":{},"2081":{},"2082":{},"2083":{},"2084":{},"2085":{},"2086":{},"2087":{},"2088":{},"2089":{},"2090":{},"2091":{},"2092":{},"2093":{},"2094":{},"2095":{},"2096":{},"2097":{},"2098":{},"2099":{},"2100":{},"2101":{},"2102":{},"2103":{},"2104":{},"2105":{},"2106":{},"2107":{},"2108":{},"2109":{},"2110":{},"2111":{},"2112":{},"2113":{},"2114":{},"2115":{},"2116":{},"2117":{},"2118":{},"2119":{},"2120":{},"2121":{},"2122":{},"2123":{},"2124":{},"2125":{},"2126":{},"2127":{},"2128":{},"2129":{},"2130":{},"2131":{},"2132":{},"2133":{},"2134":{},"2135":{},"2136":{},"2137":{},"2138":{},"2139":{},"2140":{},"2141":{},"2142":{},"2143":{},"2144":{},"2145":{},"2146":{},"2147":{},"2148":{},"2149":{}}}],["glyphnote.__type",{"_index":738,"name":{},"parent":{"2029":{},"2030":{},"2031":{},"2032":{},"2033":{},"2034":{},"2035":{},"2036":{},"2037":{},"2038":{},"2039":{},"2040":{},"2041":{}}}],["glyphnoteoptions",{"_index":734,"name":{"2011":{}},"parent":{"2012":{},"2013":{}}}],["glyphoptions",{"_index":708,"name":{"1923":{}},"parent":{"1924":{}}}],["glyphprops",{"_index":692,"name":{"1900":{}},"parent":{"1901":{},"1902":{},"1903":{},"1904":{},"1905":{},"1906":{},"1907":{},"1908":{},"1909":{},"1910":{},"1911":{},"1912":{},"1913":{},"1914":{},"1915":{},"1916":{},"1917":{},"1918":{},"1919":{},"1920":{},"1921":{},"1922":{}}}],["glyphpx",{"_index":880,"name":{"3003":{},"6242":{}},"parent":{}}],["glyphs",{"_index":331,"name":{"646":{},"1556":{},"1571":{},"3562":{},"5823":{},"5960":{},"6008":{},"6355":{}},"parent":{}}],["glyphwidth",{"_index":875,"name":{"2998":{},"6237":{}},"parent":{}}],["gracenote",{"_index":495,"name":{"1395":{},"1451":{},"2167":{},"6719":{}},"parent":{"2168":{},"2169":{},"2170":{},"2171":{},"2172":{},"2173":{},"2174":{},"2175":{},"2176":{},"2177":{},"2178":{},"2179":{},"2180":{},"2181":{},"2182":{},"2183":{},"2184":{},"2185":{},"2186":{},"2187":{},"2188":{},"2189":{},"2190":{},"2191":{},"2192":{},"2193":{},"2194":{},"2195":{},"2196":{},"2197":{},"2198":{},"2199":{},"2200":{},"2201":{},"2202":{},"2203":{},"2204":{},"2205":{},"2206":{},"2207":{},"2208":{},"2209":{},"2210":{},"2211":{},"2212":{},"2213":{},"2214":{},"2215":{},"2216":{},"2217":{},"2218":{},"2219":{},"2220":{},"2221":{},"2222":{},"2223":{},"2224":{},"2225":{},"2226":{},"2227":{},"2228":{},"2229":{},"2230":{},"2231":{},"2232":{},"2233":{},"2234":{},"2235":{},"2236":{},"2237":{},"2238":{},"2239":{},"2240":{},"2241":{},"2242":{},"2243":{},"2244":{},"2245":{},"2246":{},"2247":{},"2248":{},"2249":{},"2250":{},"2251":{},"2252":{},"2253":{},"2267":{},"2268":{},"2269":{},"2270":{},"2271":{},"2272":{},"2273":{},"2274":{},"2275":{},"2276":{},"2277":{},"2278":{},"2279":{},"2280":{},"2281":{},"2282":{},"2283":{},"2284":{},"2285":{},"2286":{},"2287":{},"2288":{},"2289":{},"2290":{},"2291":{},"2292":{},"2293":{},"2294":{},"2295":{},"2296":{},"2297":{},"2298":{},"2299":{},"2300":{},"2301":{},"2302":{},"2303":{},"2304":{},"2305":{},"2306":{},"2307":{},"2308":{},"2309":{},"2310":{},"2311":{},"2312":{},"2313":{},"2314":{},"2315":{},"2316":{},"2317":{},"2318":{},"2319":{},"2320":{},"2321":{},"2322":{},"2323":{},"2324":{},"2325":{},"2326":{},"2327":{},"2328":{},"2329":{},"2330":{},"2331":{},"2332":{},"2333":{},"2334":{},"2335":{},"2336":{},"2337":{},"2338":{},"2339":{},"2340":{},"2341":{},"2342":{},"2343":{},"2344":{},"2345":{},"2346":{},"2347":{},"2348":{},"2349":{},"2350":{},"2351":{},"2352":{},"2353":{},"2354":{},"2355":{},"2356":{},"2357":{},"2358":{},"2359":{}}}],["gracenote.__type",{"_index":781,"name":{},"parent":{"2254":{},"2255":{},"2256":{},"2257":{},"2258":{},"2259":{},"2260":{},"2261":{},"2262":{},"2263":{},"2264":{},"2265":{},"2266":{}}}],["gracenotegroup",{"_index":496,"name":{"1396":{},"1452":{},"2360":{},"6720":{}},"parent":{"2361":{},"2362":{},"2363":{},"2364":{},"2365":{},"2366":{},"2367":{},"2368":{},"2369":{},"2371":{},"2372":{},"2373":{},"2374":{},"2375":{},"2376":{},"2377":{},"2378":{},"2379":{},"2380":{},"2381":{},"2382":{},"2383":{},"2384":{},"2385":{},"2386":{},"2387":{},"2388":{},"2389":{},"2390":{},"2391":{},"2392":{},"2393":{},"2394":{},"2395":{},"2396":{},"2397":{},"2398":{},"2399":{},"2400":{},"2401":{},"2402":{},"2403":{},"2404":{},"2405":{},"2406":{},"2407":{},"2408":{},"2409":{},"2410":{},"2411":{},"2412":{},"2413":{},"2414":{},"2415":{},"2416":{},"2417":{},"2418":{},"2419":{},"2420":{},"2421":{},"2422":{},"2423":{},"2424":{},"2425":{},"2426":{},"2427":{}}}],["gracenotegroup.__type",{"_index":783,"name":{},"parent":{"2370":{}}}],["gracenotestruct",{"_index":739,"name":{"2150":{}},"parent":{"2151":{},"2152":{},"2153":{},"2154":{},"2155":{},"2156":{},"2157":{},"2158":{},"2159":{},"2160":{},"2161":{},"2162":{},"2163":{},"2164":{},"2165":{},"2166":{}}}],["gracetabnote",{"_index":518,"name":{"1453":{},"2428":{},"6721":{}},"parent":{"2429":{},"2430":{},"2431":{},"2432":{},"2433":{},"2434":{},"2435":{},"2436":{},"2437":{},"2438":{},"2439":{},"2440":{},"2441":{},"2442":{},"2443":{},"2444":{},"2445":{},"2446":{},"2447":{},"2448":{},"2449":{},"2450":{},"2451":{},"2452":{},"2453":{},"2454":{},"2455":{},"2456":{},"2457":{},"2458":{},"2459":{},"2460":{},"2461":{},"2462":{},"2463":{},"2464":{},"2465":{},"2466":{},"2467":{},"2468":{},"2469":{},"2470":{},"2471":{},"2472":{},"2473":{},"2474":{},"2475":{},"2476":{},"2477":{},"2491":{},"2492":{},"2493":{},"2494":{},"2495":{},"2496":{},"2497":{},"2498":{},"2499":{},"2500":{},"2501":{},"2502":{},"2503":{},"2504":{},"2505":{},"2506":{},"2507":{},"2508":{},"2509":{},"2510":{},"2511":{},"2512":{},"2513":{},"2514":{},"2515":{},"2516":{},"2517":{},"2518":{},"2519":{},"2520":{},"2521":{},"2522":{},"2523":{},"2524":{},"2525":{},"2526":{},"2527":{},"2528":{},"2529":{},"2530":{},"2531":{},"2532":{},"2533":{},"2534":{},"2535":{},"2536":{},"2537":{},"2538":{},"2539":{},"2540":{},"2541":{},"2542":{},"2543":{},"2544":{},"2545":{},"2546":{},"2547":{},"2548":{},"2549":{},"2550":{},"2551":{},"2552":{},"2553":{},"2554":{},"2555":{},"2556":{},"2557":{},"2558":{},"2559":{},"2560":{},"2561":{},"2562":{},"2563":{},"2564":{},"2565":{},"2566":{},"2567":{},"2568":{},"2569":{},"2570":{},"2571":{},"2572":{},"2573":{},"2574":{},"2575":{},"2576":{},"2577":{},"2578":{},"2579":{},"2580":{},"2581":{},"2582":{},"2583":{},"2584":{},"2585":{},"2586":{},"2587":{},"2588":{},"2589":{},"2590":{}}}],["gracetabnote.__type",{"_index":794,"name":{},"parent":{"2478":{},"2479":{},"2480":{},"2481":{},"2482":{},"2483":{},"2484":{},"2485":{},"2486":{},"2487":{},"2488":{},"2489":{},"2490":{}}}],["grammar",{"_index":459,"name":{"1299":{},"3545":{}},"parent":{"3546":{}}}],["greaterthan",{"_index":661,"name":{"1668":{}},"parent":{}}],["greaterthanequals",{"_index":662,"name":{"1669":{}},"parent":{}}],["greateststring",{"_index":786,"name":{"2433":{},"5380":{}},"parent":{}}],["groupattributes",{"_index":964,"name":{"3643":{}},"parent":{"3644":{}}}],["groupedresults",{"_index":928,"name":{"3544":{}},"parent":{}}],["groups",{"_index":1185,"name":{"5246":{}},"parent":{}}],["h",{"_index":246,"name":{"527":{},"534":{}},"parent":{}}],["ha",{"_index":590,"name":{"1577":{},"1933":{}},"parent":{}}],["harsh",{"_index":1359,"name":{"6791":{},"6868":{}},"parent":{}}],["hasbeam",{"_index":154,"name":{"289":{},"862":{},"1003":{},"1824":{},"2071":{},"2290":{},"2516":{},"2716":{},"3075":{},"3243":{},"3760":{},"4419":{},"5000":{},"5463":{},"5877":{},"6062":{},"6469":{}},"parent":{}}],["hasclass",{"_index":54,"name":{"54":{},"134":{},"206":{},"343":{},"420":{},"498":{},"712":{},"778":{},"916":{},"1058":{},"1113":{},"1177":{},"1334":{},"1722":{},"1875":{},"1986":{},"2126":{},"2336":{},"2403":{},"2566":{},"2636":{},"2770":{},"2836":{},"2918":{},"3132":{},"3296":{},"3357":{},"3434":{},"3496":{},"3593":{},"3815":{},"3932":{},"3999":{},"4048":{},"4103":{},"4169":{},"4235":{},"4465":{},"4537":{},"4593":{},"4657":{},"4714":{},"4771":{},"4832":{},"4902":{},"5054":{},"5123":{},"5197":{},"5331":{},"5513":{},"5571":{},"5676":{},"5729":{},"5795":{},"5932":{},"6117":{},"6208":{},"6324":{},"6389":{},"6523":{},"6585":{},"6662":{},"6833":{},"6881":{},"6948":{}},"parent":{}}],["hasdata",{"_index":618,"name":{"1611":{}},"parent":{}}],["hasflag",{"_index":689,"name":{"1777":{},"2198":{},"2470":{},"4324":{},"4951":{},"5417":{}},"parent":{}}],["haskeysignature",{"_index":566,"name":{"1540":{}},"parent":{}}],["hasstem",{"_index":150,"name":{"285":{},"858":{},"999":{},"1820":{},"2067":{},"2197":{},"2437":{},"2712":{},"3071":{},"3239":{},"3756":{},"4323":{},"4996":{},"5384":{},"5873":{},"6058":{},"6465":{}},"parent":{}}],["height",{"_index":262,"name":{"551":{},"559":{},"941":{},"1368":{},"1927":{},"3642":{},"4078":{},"4877":{},"5234":{}},"parent":{}}],["hide",{"_index":1148,"name":{"4864":{}},"parent":{}}],["highest_displaced_line",{"_index":1092,"name":{"4267":{}},"parent":{}}],["highest_line",{"_index":1090,"name":{"4265":{}},"parent":{}}],["highest_non_displaced_line",{"_index":1094,"name":{"4269":{}},"parent":{}}],["horizontaljustify",{"_index":88,"name":{"93":{},"631":{}},"parent":{}}],["horizontaljustifystring",{"_index":89,"name":{"94":{},"632":{}},"parent":{}}],["id",{"_index":467,"name":{"1311":{},"3619":{}},"parent":{}}],["ignore_ticks",{"_index":1249,"name":{"5992":{}},"parent":{}}],["ignoreticks",{"_index":735,"name":{"2012":{}},"parent":{}}],["incrementpos",{"_index":922,"name":{"3538":{}},"parent":{}}],["index",{"_index":892,"name":{"3171":{}},"parent":{}}],["initrenderer",{"_index":484,"name":{"1378":{}},"parent":{}}],["int_val",{"_index":848,"name":{"2958":{}},"parent":{}}],["int_value",{"_index":871,"name":{"2990":{}},"parent":{}}],["intervals",{"_index":856,"name":{"2967":{}},"parent":{}}],["invert",{"_index":385,"name":{"1090":{}},"parent":{}}],["is_displaced",{"_index":1101,"name":{"4280":{}},"parent":{}}],["isaccidental",{"_index":1330,"name":{"6688":{}},"parent":{}}],["isannotation",{"_index":1331,"name":{"6689":{}},"parent":{}}],["isbarline",{"_index":1332,"name":{"6690":{}},"parent":{}}],["isbold",{"_index":607,"name":{"1599":{}},"parent":{}}],["iscategory",{"_index":1329,"name":{"6687":{}},"parent":{}}],["iscenteraligned",{"_index":177,"name":{"316":{},"889":{},"1030":{},"1849":{},"2098":{},"2310":{},"2539":{},"2743":{},"3102":{},"3268":{},"3787":{},"4439":{},"5025":{},"5486":{},"5904":{},"6089":{},"6170":{},"6496":{}},"parent":{}}],["ischord",{"_index":758,"name":{"2196":{},"4322":{}},"parent":{}}],["iscomplete",{"_index":1380,"name":{"6932":{}},"parent":{}}],["isdisplaced",{"_index":759,"name":{"2203":{},"3186":{},"4329":{}},"parent":{}}],["isdot",{"_index":1333,"name":{"6691":{}},"parent":{}}],["isdotted",{"_index":149,"name":{"284":{},"857":{},"998":{},"1819":{},"2066":{},"2286":{},"2512":{},"2711":{},"3070":{},"3238":{},"3755":{},"4415":{},"4995":{},"5459":{},"5872":{},"6057":{},"6464":{}},"parent":{}}],["isgracenote",{"_index":1334,"name":{"6692":{}},"parent":{}}],["isgracenotegroup",{"_index":1335,"name":{"6693":{}},"parent":{}}],["ishtmlcanvas",{"_index":1384,"name":{"6972":{}},"parent":{}}],["ishtmldiv",{"_index":1385,"name":{"6973":{}},"parent":{}}],["isitalic",{"_index":608,"name":{"1600":{}},"parent":{}}],["isnote",{"_index":1336,"name":{"6694":{}},"parent":{}}],["ispartial",{"_index":391,"name":{"1102":{},"4759":{},"5560":{},"5717":{}},"parent":{}}],["isrendercontext",{"_index":1337,"name":{"6695":{}},"parent":{}}],["isrendered",{"_index":58,"name":{"58":{},"138":{},"210":{},"347":{},"424":{},"502":{},"716":{},"782":{},"920":{},"1062":{},"1117":{},"1181":{},"1338":{},"1726":{},"1879":{},"1990":{},"2130":{},"2340":{},"2407":{},"2570":{},"2640":{},"2774":{},"2840":{},"2922":{},"3136":{},"3300":{},"3361":{},"3438":{},"3500":{},"3597":{},"3819":{},"3936":{},"4003":{},"4052":{},"4107":{},"4173":{},"4239":{},"4469":{},"4541":{},"4597":{},"4661":{},"4718":{},"4775":{},"4836":{},"4906":{},"5058":{},"5127":{},"5201":{},"5335":{},"5517":{},"5575":{},"5680":{},"5733":{},"5799":{},"5936":{},"6121":{},"6212":{},"6328":{},"6393":{},"6527":{},"6589":{},"6666":{},"6837":{},"6885":{},"6952":{}},"parent":{}}],["isrest",{"_index":127,"name":{"262":{},"835":{},"976":{},"1752":{},"2044":{},"2195":{},"2493":{},"2689":{},"3048":{},"3218":{},"3733":{},"4275":{},"4321":{},"4974":{},"5440":{},"5850":{},"6035":{},"6442":{}},"parent":{}}],["isstavenote",{"_index":1338,"name":{"6696":{}},"parent":{}}],["isstemlet",{"_index":1147,"name":{"4863":{}},"parent":{}}],["isstemmablenote",{"_index":1339,"name":{"6697":{}},"parent":{}}],["issubscript",{"_index":336,"name":{"653":{}},"parent":{}}],["issuperscript",{"_index":335,"name":{"652":{}},"parent":{}}],["istabnote",{"_index":1340,"name":{"6698":{}},"parent":{}}],["italic",{"_index":597,"name":{"1587":{},"5963":{}},"parent":{}}],["iterations",{"_index":1256,"name":{"6148":{}},"parent":{}}],["joinvoices",{"_index":649,"name":{"1648":{}},"parent":{}}],["justification",{"_index":1251,"name":{"6007":{}},"parent":{}}],["kerningoffset",{"_index":330,"name":{"645":{}},"parent":{}}],["key",{"_index":414,"name":{"1225":{},"1245":{},"2956":{},"2987":{}},"parent":{"2957":{},"2958":{}}}],["keymanager",{"_index":519,"name":{"1454":{},"2591":{}},"parent":{"2592":{},"2593":{},"2594":{},"2595":{},"2596":{},"2597":{}}}],["keyparts",{"_index":843,"name":{"2949":{}},"parent":{"2950":{},"2951":{},"2952":{}}}],["keyproperties",{"_index":569,"name":{"1543":{}},"parent":{}}],["keyprops",{"_index":112,"name":{"244":{},"817":{},"958":{},"1782":{},"2026":{},"2251":{},"2475":{},"2671":{},"2984":{},"3030":{},"3200":{},"3715":{},"4380":{},"4956":{},"5422":{},"5832":{},"6017":{},"6424":{}},"parent":{"2985":{},"2986":{},"2987":{},"2988":{},"2989":{},"2990":{},"2991":{},"2992":{},"2993":{},"2994":{},"2995":{}}}],["keys",{"_index":111,"name":{"243":{},"816":{},"957":{},"1781":{},"2025":{},"2160":{},"2250":{},"2474":{},"2670":{},"3016":{},"3029":{},"3172":{},"3199":{},"3714":{},"4291":{},"4379":{},"4955":{},"5368":{},"5421":{},"5831":{},"5997":{},"6016":{},"6423":{}},"parent":{}}],["keysignature",{"_index":520,"name":{"1455":{},"1539":{},"2598":{},"6722":{}},"parent":{"2599":{},"2600":{},"2601":{},"2602":{},"2603":{},"2604":{},"2605":{},"2606":{},"2607":{},"2608":{},"2609":{},"2610":{},"2611":{},"2612":{},"2613":{},"2614":{},"2615":{},"2616":{},"2617":{},"2618":{},"2619":{},"2620":{},"2621":{},"2622":{},"2623":{},"2624":{},"2625":{},"2626":{},"2627":{},"2628":{},"2629":{},"2630":{},"2631":{},"2632":{},"2633":{},"2634":{},"2635":{},"2636":{},"2637":{},"2638":{},"2639":{},"2640":{},"2641":{},"2642":{},"2643":{},"2644":{},"2645":{},"2646":{},"2647":{},"2648":{},"2649":{},"2650":{},"2651":{},"2652":{},"2653":{},"2654":{},"2655":{},"2656":{},"2657":{},"2658":{},"2659":{},"2660":{}}}],["keysignote",{"_index":493,"name":{"1393":{},"1456":{},"2661":{},"6723":{}},"parent":{"2662":{},"2663":{},"2664":{},"2665":{},"2666":{},"2667":{},"2668":{},"2669":{},"2670":{},"2671":{},"2672":{},"2673":{},"2687":{},"2688":{},"2689":{},"2690":{},"2691":{},"2692":{},"2693":{},"2694":{},"2695":{},"2696":{},"2697":{},"2698":{},"2699":{},"2700":{},"2701":{},"2702":{},"2703":{},"2704":{},"2705":{},"2706":{},"2707":{},"2708":{},"2709":{},"2710":{},"2711":{},"2712":{},"2713":{},"2714":{},"2715":{},"2716":{},"2717":{},"2718":{},"2719":{},"2720":{},"2721":{},"2722":{},"2723":{},"2724":{},"2725":{},"2726":{},"2727":{},"2728":{},"2729":{},"2730":{},"2731":{},"2732":{},"2733":{},"2734":{},"2735":{},"2736":{},"2737":{},"2738":{},"2739":{},"2740":{},"2741":{},"2742":{},"2743":{},"2744":{},"2745":{},"2746":{},"2747":{},"2748":{},"2749":{},"2750":{},"2751":{},"2752":{},"2753":{},"2754":{},"2755":{},"2756":{},"2757":{},"2758":{},"2759":{},"2760":{},"2761":{},"2762":{},"2763":{},"2764":{},"2765":{},"2766":{},"2767":{},"2768":{},"2769":{},"2770":{},"2771":{},"2772":{},"2773":{},"2774":{},"2775":{},"2776":{},"2777":{},"2778":{},"2779":{},"2780":{},"2781":{},"2782":{},"2783":{},"2784":{},"2785":{},"2786":{},"2787":{},"2788":{},"2789":{},"2790":{},"2791":{},"2792":{},"2793":{},"2794":{}}}],["keysignote.__type",{"_index":808,"name":{},"parent":{"2674":{},"2675":{},"2676":{},"2677":{},"2678":{},"2679":{},"2680":{},"2681":{},"2682":{},"2683":{},"2684":{},"2685":{},"2686":{}}}],["keyval",{"_index":412,"name":{"1223":{}},"parent":{}}],["keyvals",{"_index":411,"name":{"1222":{}},"parent":{}}],["keyvalue",{"_index":844,"name":{"2953":{}},"parent":{}}],["last_indices",{"_index":1067,"name":{"4132":{},"4743":{}},"parent":{}}],["last_note",{"_index":1066,"name":{"4131":{},"4741":{}},"parent":{}}],["last_x_shift",{"_index":1131,"name":{"4751":{},"5552":{},"5709":{}},"parent":{}}],["lastcontext",{"_index":970,"name":{"3695":{}},"parent":{}}],["layoutmetrics",{"_index":1080,"name":{"4194":{}},"parent":{"4195":{},"4196":{},"4197":{},"4198":{}}}],["lbracket",{"_index":428,"name":{"1241":{}},"parent":{}}],["lcm",{"_index":652,"name":{"1655":{}},"parent":{}}],["lcmm",{"_index":653,"name":{"1656":{}},"parent":{}}],["leaststring",{"_index":787,"name":{"2434":{},"5381":{}},"parent":{}}],["ledger_line_offset",{"_index":746,"name":{"2169":{},"4303":{}},"parent":{}}],["left",{"_index":80,"name":{"80":{},"613":{},"2797":{},"4201":{},"5986":{},"6146":{}},"parent":{}}],["left_bar",{"_index":985,"name":{"3848":{}},"parent":{}}],["left_shift",{"_index":813,"name":{"2863":{}},"parent":{}}],["left_shift_px",{"_index":1055,"name":{"4076":{}},"parent":{}}],["left_shift_ticks",{"_index":1054,"name":{"4075":{}},"parent":{}}],["leftdisplacedheadpx",{"_index":879,"name":{"3002":{},"6241":{}},"parent":{}}],["leftsidebearing",{"_index":591,"name":{"1578":{}},"parent":{}}],["lessthan",{"_index":663,"name":{"1670":{}},"parent":{}}],["lessthanequals",{"_index":664,"name":{"1671":{}},"parent":{}}],["line",{"_index":0,"name":{"0":{},"3":{},"623":{},"739":{},"750":{},"1208":{},"1938":{},"2013":{},"2162":{},"2893":{},"2989":{},"3018":{},"3158":{},"4272":{},"4293":{},"5370":{},"5999":{},"6351":{}},"parent":{"1":{}}}],["line.__type",{"_index":3,"name":{},"parent":{"2":{},"3":{},"4":{},"5":{},"6":{},"7":{}}}],["line_above",{"_index":697,"name":{"1906":{}},"parent":{}}],["line_below",{"_index":696,"name":{"1905":{}},"parent":{}}],["line_config",{"_index":980,"name":{"3843":{}},"parent":{}}],["line_dash",{"_index":1070,"name":{"4147":{}},"parent":{}}],["line_style",{"_index":239,"name":{"465":{}},"parent":{}}],["line_thickness",{"_index":835,"name":{"2896":{}},"parent":{}}],["line_width",{"_index":235,"name":{"462":{},"4146":{},"5776":{}},"parent":{}}],["lineendtype",{"_index":969,"name":{"3694":{}},"parent":{}}],["lineto",{"_index":292,"name":{"586":{},"3664":{},"5270":{}},"parent":{}}],["linewidth",{"_index":473,"name":{"1320":{},"5227":{},"5240":{}},"parent":{}}],["list",{"_index":632,"name":{"1626":{}},"parent":{}}],["load",{"_index":613,"name":{"1605":{}},"parent":{}}],["loadmetrics",{"_index":718,"name":{"1947":{},"6280":{}},"parent":{}}],["loadwebfont",{"_index":611,"name":{"1603":{}},"parent":{}}],["loadwebfonts",{"_index":612,"name":{"1604":{}},"parent":{}}],["location",{"_index":1306,"name":{"6621":{}},"parent":{}}],["location_bottom",{"_index":1313,"name":{"6632":{}},"parent":{}}],["location_top",{"_index":1312,"name":{"6631":{}},"parent":{}}],["log",{"_index":1343,"name":{"6768":{}},"parent":{}}],["lookupbeamdirection",{"_index":226,"name":{"407":{}},"parent":{}}],["lookupfontmetric",{"_index":716,"name":{"1945":{},"6278":{}},"parent":{}}],["lookupglyph",{"_index":717,"name":{"1946":{},"6279":{}},"parent":{}}],["lookupmetric",{"_index":621,"name":{"1614":{}},"parent":{}}],["lowerkerningtext",{"_index":333,"name":{"650":{}},"parent":{}}],["lowest_displaced_line",{"_index":1093,"name":{"4268":{}},"parent":{}}],["lowest_line",{"_index":1091,"name":{"4266":{}},"parent":{}}],["lowest_non_displaced_line",{"_index":1095,"name":{"4270":{}},"parent":{}}],["lparen",{"_index":422,"name":{"1234":{}},"parent":{}}],["makeabs",{"_index":667,"name":{"1676":{}},"parent":{}}],["maketimesignatureglyph",{"_index":1292,"name":{"6363":{}},"parent":{}}],["map",{"_index":633,"name":{"1627":{}},"parent":{}}],["match",{"_index":907,"name":{"3521":{}},"parent":{}}],["matchedstring",{"_index":923,"name":{"3539":{}},"parent":{}}],["matches",{"_index":924,"name":{"3540":{}},"parent":{}}],["matchfail",{"_index":929,"name":{"3551":{}},"parent":{}}],["matchsuccess",{"_index":930,"name":{"3552":{}},"parent":{}}],["matchtoken",{"_index":931,"name":{"3553":{}},"parent":{}}],["max_slope",{"_index":207,"name":{"386":{}},"parent":{}}],["maxheight",{"_index":1244,"name":{"5978":{}},"parent":{}}],["maxiterations",{"_index":626,"name":{"1619":{},"5291":{}},"parent":{}}],["maxline",{"_index":753,"name":{"2185":{},"4273":{},"4311":{}},"parent":{}}],["maxsizeglyph",{"_index":1236,"name":{"5965":{}},"parent":{}}],["maybe",{"_index":916,"name":{"3532":{}},"parent":{}}],["maybeslash",{"_index":426,"name":{"1239":{}},"parent":{}}],["mean",{"_index":1258,"name":{"6152":{}},"parent":{}}],["measuretext",{"_index":299,"name":{"593":{},"3677":{},"5277":{}},"parent":{}}],["mergewith",{"_index":258,"name":{"545":{}},"parent":{}}],["metrics",{"_index":332,"name":{"649":{},"1554":{},"1956":{},"5082":{},"6296":{},"6634":{}},"parent":{}}],["microtones",{"_index":420,"name":{"1231":{}},"parent":{}}],["mid",{"_index":1139,"name":{"4799":{}},"parent":{}}],["midline",{"_index":1345,"name":{"6770":{}},"parent":{}}],["min_flat_beam_offset",{"_index":213,"name":{"392":{}},"parent":{}}],["min_slope",{"_index":208,"name":{"387":{}},"parent":{}}],["minannotationpadding",{"_index":92,"name":{"97":{}},"parent":{}}],["minline",{"_index":752,"name":{"2184":{},"4274":{},"4310":{}},"parent":{}}],["minnoteheadpadding",{"_index":749,"name":{"2174":{},"4304":{}},"parent":{}}],["minpadding",{"_index":337,"name":{"654":{},"3385":{}},"parent":{}}],["mixed",{"_index":937,"name":{"3567":{}},"parent":{}}],["mode",{"_index":1371,"name":{"6916":{}},"parent":{}}],["modifier",{"_index":521,"name":{"1457":{},"2801":{},"6724":{}},"parent":{"2802":{},"2803":{},"2804":{},"2805":{},"2806":{},"2807":{},"2808":{},"2809":{},"2810":{},"2811":{},"2812":{},"2813":{},"2814":{},"2815":{},"2816":{},"2817":{},"2818":{},"2819":{},"2820":{},"2821":{},"2822":{},"2823":{},"2824":{},"2825":{},"2826":{},"2827":{},"2828":{},"2829":{},"2830":{},"2831":{},"2832":{},"2833":{},"2834":{},"2835":{},"2836":{},"2837":{},"2838":{},"2839":{},"2840":{},"2841":{},"2842":{},"2843":{},"2844":{},"2845":{},"2846":{},"2847":{},"2848":{},"2849":{},"2850":{},"2851":{},"2852":{},"2853":{},"2854":{},"2855":{},"2856":{},"2857":{},"2858":{},"2859":{},"2860":{}}}],["modifiercontext",{"_index":502,"name":{"1406":{},"1458":{},"2870":{}},"parent":{"2871":{},"2872":{},"2873":{},"2874":{},"2875":{},"2876":{},"2877":{},"2878":{},"2879":{},"2880":{},"2881":{},"2882":{},"2883":{}}}],["modifiercontextmember",{"_index":818,"name":{"2869":{}},"parent":{}}],["modifiercontextmetrics",{"_index":816,"name":{"2866":{}},"parent":{"2867":{},"2868":{}}}],["modifiercontextstate",{"_index":811,"name":{"2861":{}},"parent":{"2862":{},"2863":{},"2864":{},"2865":{}}}],["modifierposition",{"_index":541,"name":{"1514":{},"2795":{}},"parent":{"2796":{},"2797":{},"2798":{},"2799":{},"2800":{}}}],["modleftpx",{"_index":877,"name":{"3000":{},"6239":{}},"parent":{}}],["modrightpx",{"_index":878,"name":{"3001":{},"6240":{}},"parent":{}}],["monospaced",{"_index":1235,"name":{"5962":{}},"parent":{}}],["move",{"_index":256,"name":{"543":{},"1937":{}},"parent":{}}],["moveto",{"_index":291,"name":{"585":{},"3663":{},"5269":{}},"parent":{}}],["multimeasurerest",{"_index":503,"name":{"1407":{},"1459":{},"2898":{},"6725":{}},"parent":{"2899":{},"2900":{},"2901":{},"2902":{},"2903":{},"2904":{},"2905":{},"2906":{},"2907":{},"2908":{},"2909":{},"2910":{},"2911":{},"2912":{},"2913":{},"2914":{},"2915":{},"2916":{},"2917":{},"2918":{},"2919":{},"2920":{},"2921":{},"2922":{},"2923":{},"2924":{},"2925":{},"2926":{},"2927":{},"2928":{},"2929":{},"2930":{},"2931":{},"2932":{},"2933":{},"2934":{},"2935":{},"2936":{},"2937":{},"2938":{},"2939":{},"2940":{},"2941":{},"2942":{}}}],["multimeasurerestrenderoptions",{"_index":824,"name":{"2884":{}},"parent":{"2885":{},"2886":{},"2887":{},"2888":{},"2889":{},"2890":{},"2891":{},"2892":{},"2893":{},"2894":{},"2895":{},"2896":{},"2897":{}}}],["multiply",{"_index":659,"name":{"1665":{}},"parent":{}}],["music",{"_index":522,"name":{"1460":{},"2959":{}},"parent":{"2960":{},"2961":{},"2962":{},"2963":{},"2964":{},"2965":{},"2966":{},"2967":{},"2968":{},"2969":{},"2970":{},"2971":{},"2972":{},"2973":{},"2974":{},"2975":{},"2976":{},"2977":{},"2978":{},"2979":{},"2980":{},"2981":{},"2982":{},"2983":{}}}],["music_font_stack",{"_index":715,"name":{"1944":{},"6277":{}},"parent":{}}],["name",{"_index":582,"name":{"1561":{},"3620":{},"4622":{}},"parent":{}}],["names",{"_index":1297,"name":{"6611":{}},"parent":{}}],["near_head",{"_index":387,"name":{"1092":{}},"parent":{}}],["near_top",{"_index":388,"name":{"1093":{}},"parent":{}}],["nesting_offset",{"_index":1314,"name":{"6633":{}},"parent":{}}],["newfromelementid",{"_index":483,"name":{"1374":{}},"parent":{}}],["no_text_format",{"_index":321,"name":{"636":{}},"parent":{}}],["nojustification",{"_index":1194,"name":{"5295":{},"5312":{}},"parent":{}}],["non_displaced_x",{"_index":1089,"name":{"4264":{}},"parent":{}}],["none",{"_index":316,"name":{"625":{},"3689":{},"3963":{},"4494":{},"4797":{}},"parent":{}}],["nopadding",{"_index":1199,"name":{"5302":{}},"parent":{}}],["normal",{"_index":595,"name":{"1583":{},"1586":{}},"parent":{}}],["normalizeangle",{"_index":1347,"name":{"6772":{}},"parent":{}}],["nospace",{"_index":912,"name":{"3528":{}},"parent":{}}],["notation_font_scale",{"_index":555,"name":{"1528":{}},"parent":{}}],["note",{"_index":406,"name":{"1215":{},"1461":{},"2944":{},"3023":{},"4281":{},"6726":{}},"parent":{"3024":{},"3025":{},"3026":{},"3027":{},"3028":{},"3029":{},"3030":{},"3031":{},"3032":{},"3046":{},"3047":{},"3048":{},"3049":{},"3050":{},"3051":{},"3052":{},"3053":{},"3054":{},"3055":{},"3056":{},"3057":{},"3058":{},"3059":{},"3060":{},"3061":{},"3062":{},"3063":{},"3064":{},"3065":{},"3066":{},"3067":{},"3068":{},"3069":{},"3070":{},"3071":{},"3072":{},"3073":{},"3074":{},"3075":{},"3076":{},"3077":{},"3078":{},"3079":{},"3080":{},"3081":{},"3082":{},"3083":{},"3084":{},"3085":{},"3086":{},"3087":{},"3088":{},"3089":{},"3090":{},"3091":{},"3092":{},"3093":{},"3094":{},"3095":{},"3096":{},"3097":{},"3098":{},"3099":{},"3100":{},"3101":{},"3102":{},"3103":{},"3104":{},"3105":{},"3106":{},"3107":{},"3108":{},"3109":{},"3110":{},"3111":{},"3112":{},"3113":{},"3114":{},"3115":{},"3116":{},"3117":{},"3118":{},"3119":{},"3120":{},"3121":{},"3122":{},"3123":{},"3124":{},"3125":{},"3126":{},"3127":{},"3128":{},"3129":{},"3130":{},"3131":{},"3132":{},"3133":{},"3134":{},"3135":{},"3136":{},"3137":{},"3138":{},"3139":{},"3140":{},"3141":{},"3142":{},"3143":{},"3144":{},"3145":{},"3146":{},"3147":{},"3148":{},"3149":{},"3150":{},"3151":{},"3152":{},"3153":{},"3154":{},"3155":{},"3156":{}}}],["note.__type",{"_index":887,"name":{},"parent":{"3033":{},"3034":{},"3035":{},"3036":{},"3037":{},"3038":{},"3039":{},"3040":{},"3041":{},"3042":{},"3043":{},"3044":{},"3045":{}}}],["note_heads",{"_index":776,"name":{"2226":{},"4352":{}},"parent":{}}],["note_type",{"_index":891,"name":{"3168":{}},"parent":{}}],["noteaccidental",{"_index":840,"name":{"2943":{}},"parent":{"2944":{},"2945":{}}}],["noteduration",{"_index":882,"name":{"3005":{}},"parent":{"3006":{},"3007":{},"3008":{}}}],["notehead",{"_index":523,"name":{"1462":{},"1570":{},"3178":{},"6727":{}},"parent":{"3179":{},"3180":{},"3181":{},"3182":{},"3183":{},"3184":{},"3185":{},"3186":{},"3187":{},"3188":{},"3189":{},"3190":{},"3191":{},"3192":{},"3193":{},"3194":{},"3195":{},"3196":{},"3197":{},"3198":{},"3199":{},"3200":{},"3201":{},"3202":{},"3216":{},"3217":{},"3218":{},"3219":{},"3220":{},"3221":{},"3222":{},"3223":{},"3224":{},"3225":{},"3226":{},"3227":{},"3228":{},"3229":{},"3230":{},"3231":{},"3232":{},"3233":{},"3234":{},"3235":{},"3236":{},"3237":{},"3238":{},"3239":{},"3240":{},"3241":{},"3242":{},"3243":{},"3244":{},"3245":{},"3246":{},"3247":{},"3248":{},"3249":{},"3250":{},"3251":{},"3252":{},"3253":{},"3254":{},"3255":{},"3256":{},"3257":{},"3258":{},"3259":{},"3260":{},"3261":{},"3262":{},"3263":{},"3264":{},"3265":{},"3266":{},"3267":{},"3268":{},"3269":{},"3270":{},"3271":{},"3272":{},"3273":{},"3274":{},"3275":{},"3276":{},"3277":{},"3278":{},"3279":{},"3280":{},"3281":{},"3282":{},"3283":{},"3284":{},"3285":{},"3286":{},"3287":{},"3288":{},"3289":{},"3290":{},"3291":{},"3292":{},"3293":{},"3294":{},"3295":{},"3296":{},"3297":{},"3298":{},"3299":{},"3300":{},"3301":{},"3302":{},"3303":{},"3304":{},"3305":{},"3306":{},"3307":{},"3308":{},"3309":{},"3310":{},"3311":{},"3312":{},"3313":{},"3314":{},"3315":{},"3316":{},"3317":{},"3318":{},"3319":{}}}],["notehead.__type",{"_index":895,"name":{},"parent":{"3203":{},"3204":{},"3205":{},"3206":{},"3207":{},"3208":{},"3209":{},"3210":{},"3211":{},"3212":{},"3213":{},"3214":{},"3215":{}}}],["noteheads",{"_index":775,"name":{"2225":{},"4351":{}},"parent":{}}],["noteheadstruct",{"_index":888,"name":{"3157":{}},"parent":{"3158":{},"3159":{},"3160":{},"3161":{},"3162":{},"3163":{},"3164":{},"3165":{},"3166":{},"3167":{},"3168":{},"3169":{},"3170":{},"3171":{},"3172":{},"3173":{},"3174":{},"3175":{},"3176":{},"3177":{}}}],["notemetrics",{"_index":874,"name":{"2996":{}},"parent":{"2997":{},"2998":{},"2999":{},"3000":{},"3001":{},"3002":{},"3003":{},"3004":{}}}],["notename",{"_index":417,"name":{"1228":{}},"parent":{}}],["noteparts",{"_index":841,"name":{"2946":{}},"parent":{"2947":{},"2948":{}}}],["notepiece",{"_index":431,"name":{"1244":{}},"parent":{"1245":{},"1246":{},"1247":{}}}],["notepx",{"_index":876,"name":{"2999":{},"6238":{}},"parent":{}}],["notes",{"_index":214,"name":{"393":{},"1214":{},"1257":{},"1307":{},"6637":{}},"parent":{}}],["notes_occupied",{"_index":1307,"name":{"6622":{}},"parent":{}}],["notestruct",{"_index":886,"name":{"3015":{}},"parent":{"3016":{},"3017":{},"3018":{},"3019":{},"3020":{},"3021":{},"3022":{}}}],["notesubgroup",{"_index":512,"name":{"1421":{},"1463":{},"3320":{},"6728":{}},"parent":{"3321":{},"3322":{},"3323":{},"3324":{},"3325":{},"3326":{},"3327":{},"3328":{},"3329":{},"3330":{},"3331":{},"3332":{},"3333":{},"3334":{},"3335":{},"3336":{},"3337":{},"3338":{},"3339":{},"3340":{},"3341":{},"3342":{},"3343":{},"3344":{},"3345":{},"3346":{},"3347":{},"3348":{},"3349":{},"3350":{},"3351":{},"3352":{},"3353":{},"3354":{},"3355":{},"3356":{},"3357":{},"3358":{},"3359":{},"3360":{},"3361":{},"3362":{},"3363":{},"3364":{},"3365":{},"3366":{},"3367":{},"3368":{},"3369":{},"3370":{},"3371":{},"3372":{},"3373":{},"3374":{},"3375":{},"3376":{},"3377":{},"3378":{},"3379":{},"3380":{},"3381":{}}}],["notetointeger",{"_index":1298,"name":{"6613":{}},"parent":{}}],["notevalues",{"_index":859,"name":{"2971":{}},"parent":{}}],["num",{"_index":1288,"name":{"6352":{}},"parent":{}}],["num_beats",{"_index":1366,"name":{"6907":{}},"parent":{}}],["num_lines",{"_index":988,"name":{"3852":{}},"parent":{}}],["num_notes",{"_index":1308,"name":{"6623":{}},"parent":{}}],["num_tones",{"_index":849,"name":{"2960":{}},"parent":{}}],["numacc",{"_index":6,"name":{"6":{}},"parent":{}}],["number_glyph_point",{"_index":830,"name":{"2890":{}},"parent":{}}],["number_line",{"_index":829,"name":{"2889":{}},"parent":{}}],["number_of_measures",{"_index":825,"name":{"2885":{}},"parent":{}}],["numerator",{"_index":654,"name":{"1658":{}},"parent":{}}],["nummatches",{"_index":925,"name":{"3541":{}},"parent":{}}],["o",{"_index":593,"name":{"1580":{}},"parent":{}}],["octave",{"_index":418,"name":{"1229":{},"1247":{},"2988":{}},"parent":{}}],["octave_shift",{"_index":743,"name":{"2158":{},"4289":{},"5366":{}},"parent":{}}],["oldvalue",{"_index":950,"name":{"3622":{}},"parent":{}}],["oneormore",{"_index":915,"name":{"3531":{}},"parent":{}}],["onregister",{"_index":57,"name":{"57":{},"137":{},"209":{},"346":{},"423":{},"501":{},"715":{},"781":{},"919":{},"1061":{},"1116":{},"1180":{},"1337":{},"1725":{},"1878":{},"1989":{},"2129":{},"2339":{},"2406":{},"2569":{},"2639":{},"2773":{},"2839":{},"2921":{},"3135":{},"3299":{},"3360":{},"3437":{},"3499":{},"3596":{},"3818":{},"3935":{},"4002":{},"4051":{},"4106":{},"4172":{},"4238":{},"4468":{},"4540":{},"4596":{},"4660":{},"4717":{},"4774":{},"4835":{},"4905":{},"5057":{},"5126":{},"5200":{},"5334":{},"5516":{},"5574":{},"5679":{},"5732":{},"5798":{},"5935":{},"6120":{},"6211":{},"6327":{},"6392":{},"6526":{},"6588":{},"6665":{},"6836":{},"6884":{},"6951":{}},"parent":{}}],["onupdate",{"_index":961,"name":{"3636":{}},"parent":{}}],["opengroup",{"_index":275,"name":{"568":{},"3674":{},"5249":{}},"parent":{}}],["options",{"_index":433,"name":{"1254":{},"1266":{},"1296":{},"3860":{},"5296":{},"5605":{}},"parent":{}}],["opts",{"_index":410,"name":{"1221":{}},"parent":{}}],["or",{"_index":917,"name":{"3533":{}},"parent":{}}],["ornament",{"_index":497,"name":{"1401":{},"1464":{},"3382":{},"6729":{}},"parent":{"3383":{},"3384":{},"3385":{},"3386":{},"3387":{},"3388":{},"3389":{},"3390":{},"3391":{},"3392":{},"3393":{},"3394":{},"3395":{},"3396":{},"3397":{},"3401":{},"3402":{},"3403":{},"3404":{},"3405":{},"3406":{},"3407":{},"3408":{},"3409":{},"3410":{},"3411":{},"3412":{},"3413":{},"3414":{},"3415":{},"3416":{},"3417":{},"3418":{},"3419":{},"3420":{},"3421":{},"3422":{},"3423":{},"3424":{},"3425":{},"3426":{},"3427":{},"3428":{},"3429":{},"3430":{},"3431":{},"3432":{},"3433":{},"3434":{},"3435":{},"3436":{},"3437":{},"3438":{},"3439":{},"3440":{},"3441":{},"3442":{},"3443":{},"3444":{},"3445":{},"3446":{},"3447":{},"3448":{},"3449":{},"3450":{},"3451":{},"3452":{},"3453":{},"3454":{},"3455":{},"3456":{},"3457":{},"3458":{}}}],["ornament.__type",{"_index":902,"name":{},"parent":{"3398":{},"3399":{},"3400":{}}}],["ornamentalignwithnotehead",{"_index":898,"name":{"3389":{}},"parent":{}}],["ornamentarticulation",{"_index":900,"name":{"3391":{}},"parent":{}}],["ornamentattack",{"_index":897,"name":{"3388":{}},"parent":{}}],["ornamentnotetransition",{"_index":896,"name":{"3387":{}},"parent":{}}],["ornamentrelease",{"_index":899,"name":{"3390":{}},"parent":{}}],["outline",{"_index":710,"name":{"1934":{}},"parent":{}}],["outlinecode",{"_index":711,"name":{"1936":{}},"parent":{"1937":{},"1938":{},"1939":{},"1940":{}}}],["padding_left",{"_index":831,"name":{"2891":{},"4144":{}},"parent":{}}],["padding_right",{"_index":832,"name":{"2892":{},"4145":{}},"parent":{}}],["paddingleft",{"_index":1083,"name":{"4197":{}},"parent":{}}],["paddingright",{"_index":1084,"name":{"4198":{}},"parent":{}}],["params",{"_index":403,"name":{"1211":{}},"parent":{}}],["parenleftpadding",{"_index":20,"name":{"21":{}},"parent":{}}],["parenrightpadding",{"_index":23,"name":{"23":{}},"parent":{}}],["parent",{"_index":1184,"name":{"5245":{}},"parent":{}}],["parenthesis",{"_index":524,"name":{"1465":{},"3459":{},"6730":{}},"parent":{"3460":{},"3461":{},"3462":{},"3463":{},"3464":{},"3465":{},"3466":{},"3467":{},"3468":{},"3469":{},"3470":{},"3471":{},"3472":{},"3473":{},"3474":{},"3475":{},"3476":{},"3477":{},"3478":{},"3479":{},"3480":{},"3481":{},"3482":{},"3483":{},"3484":{},"3485":{},"3486":{},"3487":{},"3488":{},"3489":{},"3490":{},"3491":{},"3492":{},"3493":{},"3494":{},"3495":{},"3496":{},"3497":{},"3498":{},"3499":{},"3500":{},"3501":{},"3502":{},"3503":{},"3504":{},"3505":{},"3506":{},"3507":{},"3508":{},"3509":{},"3510":{},"3511":{},"3512":{},"3513":{},"3514":{},"3515":{},"3516":{},"3517":{},"3518":{},"3519":{},"3520":{}}}],["parse",{"_index":463,"name":{"1304":{},"1680":{},"3550":{}},"parent":{}}],["parsednote",{"_index":883,"name":{"3009":{}},"parent":{"3010":{},"3011":{},"3012":{},"3013":{},"3014":{}}}],["parser",{"_index":460,"name":{"1300":{},"1466":{},"3547":{}},"parent":{"3548":{},"3549":{},"3550":{},"3551":{},"3552":{},"3553":{},"3554":{},"3555":{},"3556":{},"3557":{}}}],["parsetimespec",{"_index":1291,"name":{"6362":{}},"parent":{}}],["partial_beam_length",{"_index":212,"name":{"391":{}},"parent":{}}],["partialbeamdirection",{"_index":196,"name":{"371":{}},"parent":{}}],["path",{"_index":1180,"name":{"5235":{}},"parent":{}}],["pedalmarking",{"_index":511,"name":{"1420":{},"1467":{},"1566":{},"3558":{},"6731":{}},"parent":{"3559":{},"3560":{},"3561":{},"3562":{},"3563":{},"3564":{},"3568":{},"3569":{},"3570":{},"3571":{},"3572":{},"3573":{},"3574":{},"3579":{},"3580":{},"3581":{},"3582":{},"3583":{},"3584":{},"3585":{},"3586":{},"3587":{},"3588":{},"3589":{},"3590":{},"3591":{},"3592":{},"3593":{},"3594":{},"3595":{},"3596":{},"3597":{},"3598":{},"3599":{},"3600":{},"3601":{},"3602":{},"3603":{},"3604":{},"3605":{},"3606":{},"3607":{},"3608":{},"3609":{},"3610":{},"3611":{},"3612":{},"3613":{},"3614":{},"3615":{},"3616":{},"3617":{}}}],["pedalmarking.__type",{"_index":935,"name":{},"parent":{"3565":{},"3566":{},"3567":{},"3575":{},"3576":{},"3577":{},"3578":{}}}],["pen",{"_index":1181,"name":{"5236":{}},"parent":{}}],["piece",{"_index":401,"name":{"1209":{},"1248":{},"1267":{}},"parent":{"1249":{},"1250":{},"1251":{},"1252":{},"1253":{},"1254":{},"1255":{}}}],["pieces",{"_index":402,"name":{"1210":{}},"parent":{}}],["placeglyphonline",{"_index":364,"name":{"765":{},"2624":{},"3986":{},"4221":{},"4524":{},"4580":{},"4644":{},"4701":{},"4819":{},"6376":{}},"parent":{}}],["plotdebugging",{"_index":637,"name":{"1633":{}},"parent":{}}],["plotmetrics",{"_index":105,"name":{"234":{},"805":{},"948":{},"1749":{},"2016":{},"2177":{},"2430":{},"2663":{},"3025":{},"3181":{},"3705":{},"4307":{},"4928":{},"5377":{},"5824":{},"6009":{},"6416":{}},"parent":{}}],["point",{"_index":359,"name":{"737":{},"752":{},"6359":{}},"parent":{}}],["pointerbbox",{"_index":965,"name":{"3644":{}},"parent":{}}],["pos",{"_index":921,"name":{"3537":{}},"parent":{}}],["position",{"_index":14,"name":{"14":{},"99":{},"169":{},"457":{},"657":{},"744":{},"1088":{},"1096":{},"1143":{},"1686":{},"1903":{},"2364":{},"2601":{},"2803":{},"3323":{},"3392":{},"3463":{},"3968":{},"4209":{},"4507":{},"4565":{},"4626":{},"4685":{},"4806":{},"5084":{},"5161":{},"5759":{},"5767":{},"5781":{},"6356":{},"6550":{},"6797":{}},"parent":{}}],["position_end",{"_index":384,"name":{"1089":{}},"parent":{}}],["positions",{"_index":1212,"name":{"5359":{},"5769":{}},"parent":{}}],["positionsstring",{"_index":1226,"name":{"5770":{}},"parent":{}}],["positionstring",{"_index":15,"name":{"15":{},"100":{},"170":{},"458":{},"658":{},"1097":{},"1144":{},"1687":{},"2365":{},"2804":{},"3324":{},"3393":{},"3464":{},"5085":{},"5162":{},"5768":{},"6551":{},"6798":{}},"parent":{}}],["postformat",{"_index":186,"name":{"325":{},"410":{},"898":{},"1040":{},"1647":{},"1778":{},"2108":{},"2176":{},"2248":{},"2471":{},"2752":{},"2883":{},"3113":{},"3278":{},"3797":{},"4306":{},"4377":{},"4952":{},"5418":{},"5914":{},"6099":{},"6185":{},"6272":{},"6505":{}},"parent":{}}],["postformatted",{"_index":187,"name":{"326":{},"394":{},"899":{},"1041":{},"1858":{},"2109":{},"2320":{},"2549":{},"2753":{},"3114":{},"3279":{},"3798":{},"4449":{},"5036":{},"5496":{},"5915":{},"6100":{},"6186":{},"6506":{}},"parent":{}}],["precalculatemintotalwidth",{"_index":643,"name":{"1640":{}},"parent":{}}],["prefix",{"_index":1346,"name":{"6771":{}},"parent":{}}],["preformat",{"_index":109,"name":{"240":{},"409":{},"813":{},"954":{},"1644":{},"1755":{},"2021":{},"2221":{},"2371":{},"2444":{},"2667":{},"2882":{},"3111":{},"3196":{},"3327":{},"3710":{},"4347":{},"5034":{},"5391":{},"5828":{},"6013":{},"6183":{},"6271":{},"6420":{},"6937":{}},"parent":{}}],["preformatted",{"_index":185,"name":{"324":{},"897":{},"1039":{},"1857":{},"2107":{},"2319":{},"2548":{},"2751":{},"3112":{},"3277":{},"3796":{},"4448":{},"5035":{},"5495":{},"5913":{},"6098":{},"6184":{},"6504":{}},"parent":{}}],["quadratic",{"_index":712,"name":{"1939":{}},"parent":{}}],["quadraticcurveto",{"_index":294,"name":{"588":{},"3666":{},"5272":{}},"parent":{}}],["quotient",{"_index":665,"name":{"1674":{}},"parent":{}}],["rasquedo_down",{"_index":1173,"name":{"5156":{}},"parent":{}}],["rasquedo_up",{"_index":1174,"name":{"5157":{}},"parent":{}}],["ratioed",{"_index":1309,"name":{"6624":{}},"parent":{}}],["rbracket",{"_index":429,"name":{"1242":{}},"parent":{}}],["rect",{"_index":287,"name":{"581":{},"3658":{},"5265":{}},"parent":{}}],["register",{"_index":956,"name":{"3631":{}},"parent":{}}],["registerinfo",{"_index":1240,"name":{"5974":{}},"parent":{}}],["registry",{"_index":525,"name":{"1468":{},"3623":{}},"parent":{"3624":{},"3625":{},"3626":{},"3627":{},"3628":{},"3629":{},"3630":{},"3631":{},"3632":{},"3633":{},"3634":{},"3635":{},"3636":{}}}],["registryupdate",{"_index":949,"name":{"3618":{}},"parent":{"3619":{},"3620":{},"3621":{},"3622":{}}}],["release_width",{"_index":237,"name":{"463":{}},"parent":{}}],["remainder",{"_index":666,"name":{"1675":{}},"parent":{}}],["removeclass",{"_index":56,"name":{"56":{},"136":{},"208":{},"345":{},"422":{},"500":{},"714":{},"780":{},"918":{},"1060":{},"1115":{},"1179":{},"1336":{},"1724":{},"1877":{},"1988":{},"2128":{},"2338":{},"2405":{},"2568":{},"2638":{},"2772":{},"2838":{},"2920":{},"3134":{},"3298":{},"3359":{},"3436":{},"3498":{},"3595":{},"3817":{},"3934":{},"4001":{},"4050":{},"4105":{},"4171":{},"4237":{},"4467":{},"4539":{},"4595":{},"4659":{},"4716":{},"4773":{},"4834":{},"4904":{},"5056":{},"5125":{},"5199":{},"5333":{},"5515":{},"5573":{},"5678":{},"5731":{},"5797":{},"5934":{},"6119":{},"6210":{},"6326":{},"6391":{},"6525":{},"6587":{},"6664":{},"6835":{},"6883":{},"6950":{}},"parent":{}}],["render",{"_index":732,"name":{"1975":{},"6314":{}},"parent":{}}],["render_options",{"_index":19,"name":{"19":{},"174":{},"245":{},"379":{},"460":{},"818":{},"959":{},"1100":{},"1783":{},"2027":{},"2252":{},"2368":{},"2476":{},"2672":{},"2902":{},"3031":{},"3201":{},"3396":{},"3573":{},"3716":{},"4089":{},"4142":{},"4381":{},"4628":{},"4748":{},"4957":{},"5164":{},"5423":{},"5549":{},"5706":{},"5772":{},"5833":{},"6018":{},"6425":{},"6801":{},"6863":{}},"parent":{}}],["render_precision_places",{"_index":553,"name":{"1526":{}},"parent":{}}],["rendercontext",{"_index":526,"name":{"1469":{},"3645":{},"6732":{}},"parent":{"3646":{},"3647":{},"3648":{},"3649":{},"3650":{},"3651":{},"3652":{},"3653":{},"3654":{},"3655":{},"3656":{},"3657":{},"3658":{},"3659":{},"3660":{},"3661":{},"3662":{},"3663":{},"3664":{},"3665":{},"3666":{},"3667":{},"3668":{},"3669":{},"3670":{},"3671":{},"3672":{},"3673":{},"3674":{},"3675":{},"3676":{},"3677":{},"3678":{},"3679":{},"3680":{},"3681":{},"3682":{},"3683":{}}}],["rendercurve",{"_index":392,"name":{"1103":{}},"parent":{}}],["renderer",{"_index":479,"name":{"1363":{},"1470":{},"3692":{}},"parent":{"3693":{},"3694":{},"3695":{},"3696":{},"3697":{},"3698":{},"3699":{},"3700":{},"3701":{},"3702":{}}}],["rendererbackends",{"_index":542,"name":{"1515":{},"3685":{}},"parent":{"3686":{},"3687":{}}}],["rendererlineendtype",{"_index":543,"name":{"1516":{},"3688":{}},"parent":{"3689":{},"3690":{},"3691":{}}}],["renderglyph",{"_index":719,"name":{"1948":{},"6281":{}},"parent":{}}],["renderhairpin",{"_index":1062,"name":{"4093":{}},"parent":{}}],["renderoutline",{"_index":720,"name":{"1949":{},"6282":{}},"parent":{}}],["rendertext",{"_index":1138,"name":{"4761":{},"5561":{},"5719":{}},"parent":{}}],["rendertie",{"_index":1137,"name":{"4760":{},"5548":{},"5718":{}},"parent":{}}],["rendertostave",{"_index":733,"name":{"1977":{},"6293":{}},"parent":{}}],["rendervibrato",{"_index":1361,"name":{"6796":{}},"parent":{}}],["repeat_begin",{"_index":1043,"name":{"3960":{}},"parent":{}}],["repeat_both",{"_index":1045,"name":{"3962":{}},"parent":{}}],["repeat_end",{"_index":1044,"name":{"3961":{}},"parent":{}}],["repeatnote",{"_index":489,"name":{"1387":{},"1471":{},"3703":{},"6733":{}},"parent":{"3704":{},"3705":{},"3706":{},"3707":{},"3708":{},"3709":{},"3710":{},"3711":{},"3712":{},"3713":{},"3714":{},"3715":{},"3716":{},"3717":{},"3731":{},"3732":{},"3733":{},"3734":{},"3735":{},"3736":{},"3737":{},"3738":{},"3739":{},"3740":{},"3741":{},"3742":{},"3743":{},"3744":{},"3745":{},"3746":{},"3747":{},"3748":{},"3749":{},"3750":{},"3751":{},"3752":{},"3753":{},"3754":{},"3755":{},"3756":{},"3757":{},"3758":{},"3759":{},"3760":{},"3761":{},"3762":{},"3763":{},"3764":{},"3765":{},"3766":{},"3767":{},"3768":{},"3769":{},"3770":{},"3771":{},"3772":{},"3773":{},"3774":{},"3775":{},"3776":{},"3777":{},"3778":{},"3779":{},"3780":{},"3781":{},"3782":{},"3783":{},"3784":{},"3785":{},"3786":{},"3787":{},"3788":{},"3789":{},"3790":{},"3791":{},"3792":{},"3793":{},"3794":{},"3795":{},"3796":{},"3797":{},"3798":{},"3799":{},"3800":{},"3801":{},"3802":{},"3803":{},"3804":{},"3805":{},"3806":{},"3807":{},"3808":{},"3809":{},"3810":{},"3811":{},"3812":{},"3813":{},"3814":{},"3815":{},"3816":{},"3817":{},"3818":{},"3819":{},"3820":{},"3821":{},"3822":{},"3823":{},"3824":{},"3825":{},"3826":{},"3827":{},"3828":{},"3829":{},"3830":{},"3831":{},"3832":{},"3833":{},"3834":{},"3835":{},"3836":{},"3837":{},"3838":{}}}],["repeatnote.__type",{"_index":975,"name":{},"parent":{"3718":{},"3719":{},"3720":{},"3721":{},"3722":{},"3723":{},"3724":{},"3725":{},"3726":{},"3727":{},"3728":{},"3729":{},"3730":{}}}],["repetition",{"_index":527,"name":{"1472":{},"4489":{},"6734":{}},"parent":{"4490":{},"4491":{},"4492":{},"4493":{},"4507":{},"4508":{},"4509":{},"4510":{},"4511":{},"4512":{},"4513":{},"4514":{},"4515":{},"4516":{},"4517":{},"4518":{},"4519":{},"4520":{},"4521":{},"4522":{},"4523":{},"4524":{},"4525":{},"4526":{},"4527":{},"4528":{},"4529":{},"4530":{},"4531":{},"4532":{},"4533":{},"4534":{},"4535":{},"4536":{},"4537":{},"4538":{},"4539":{},"4540":{},"4541":{},"4542":{},"4543":{},"4544":{},"4545":{},"4546":{},"4547":{},"4548":{},"4549":{},"4550":{},"4551":{},"4552":{},"4553":{},"4554":{},"4555":{},"4556":{},"4557":{},"4558":{},"4559":{},"4560":{},"4561":{}}}],["repetition.__type",{"_index":1104,"name":{},"parent":{"4494":{},"4495":{},"4496":{},"4497":{},"4498":{},"4499":{},"4500":{},"4501":{},"4502":{},"4503":{},"4504":{},"4505":{},"4506":{}}}],["rerr",{"_index":1354,"name":{"6784":{}},"parent":{}}],["reset",{"_index":170,"name":{"305":{},"878":{},"1019":{},"1270":{},"1376":{},"1838":{},"1969":{},"2087":{},"2186":{},"2435":{},"2595":{},"2732":{},"3091":{},"3258":{},"3776":{},"4312":{},"5014":{},"5382":{},"5893":{},"6078":{},"6158":{},"6309":{},"6485":{}},"parent":{}}],["resetfont",{"_index":70,"name":{"70":{},"150":{},"222":{},"359":{},"436":{},"514":{},"727":{},"794":{},"930":{},"1074":{},"1129":{},"1193":{},"1350":{},"1738":{},"1891":{},"2002":{},"2141":{},"2351":{},"2419":{},"2582":{},"2652":{},"2786":{},"2852":{},"2934":{},"3148":{},"3311":{},"3373":{},"3450":{},"3512":{},"3609":{},"3830":{},"3947":{},"4015":{},"4064":{},"4119":{},"4185":{},"4251":{},"4480":{},"4553":{},"4609":{},"4673":{},"4730":{},"4787":{},"4848":{},"4917":{},"5070":{},"5139":{},"5213":{},"5346":{},"5529":{},"5587":{},"5691":{},"5745":{},"5811":{},"5948":{},"6133":{},"6224":{},"6340":{},"6405":{},"6539":{},"6601":{},"6678":{},"6849":{},"6897":{},"6963":{}},"parent":{}}],["resetlines",{"_index":994,"name":{"3864":{},"5609":{}},"parent":{}}],["resetpiece",{"_index":444,"name":{"1274":{}},"parent":{}}],["resettuplet",{"_index":181,"name":{"320":{},"893":{},"1034":{},"1853":{},"2102":{},"2314":{},"2543":{},"2747":{},"3106":{},"3272":{},"3791":{},"4443":{},"5029":{},"5490":{},"5908":{},"6093":{},"6176":{},"6500":{}},"parent":{}}],["resize",{"_index":286,"name":{"580":{},"3659":{},"3701":{},"5260":{}},"parent":{}}],["resolution",{"_index":557,"name":{"1530":{},"1558":{},"5959":{},"6909":{}},"parent":{}}],["resolutionmultiplier",{"_index":635,"name":{"1629":{}},"parent":{}}],["resolveglyphs",{"_index":1326,"name":{"6650":{}},"parent":{}}],["rest",{"_index":695,"name":{"1904":{}},"parent":{}}],["restore",{"_index":302,"name":{"596":{},"3673":{},"5280":{}},"parent":{}}],["restorestyle",{"_index":52,"name":{"52":{},"132":{},"204":{},"341":{},"418":{},"496":{},"710":{},"776":{},"914":{},"1056":{},"1111":{},"1175":{},"1331":{},"1720":{},"1873":{},"1984":{},"2124":{},"2334":{},"2401":{},"2564":{},"2634":{},"2768":{},"2834":{},"2916":{},"3129":{},"3294":{},"3355":{},"3432":{},"3494":{},"3591":{},"3813":{},"3930":{},"3997":{},"4046":{},"4101":{},"4167":{},"4233":{},"4463":{},"4535":{},"4591":{},"4655":{},"4712":{},"4769":{},"4830":{},"4900":{},"5051":{},"5121":{},"5195":{},"5329":{},"5511":{},"5569":{},"5674":{},"5727":{},"5793":{},"5930":{},"6115":{},"6205":{},"6322":{},"6387":{},"6521":{},"6583":{},"6660":{},"6831":{},"6879":{},"6946":{}},"parent":{}}],["result",{"_index":919,"name":{"3535":{}},"parent":{"3536":{},"3537":{},"3538":{},"3539":{},"3540":{},"3541":{},"3542":{},"3543":{}}}],["results",{"_index":926,"name":{"3542":{}},"parent":{}}],["reverse",{"_index":373,"name":{"940":{}},"parent":{}}],["right",{"_index":82,"name":{"82":{},"615":{},"2798":{},"4202":{},"5988":{},"6147":{}},"parent":{}}],["right_bar",{"_index":986,"name":{"3849":{}},"parent":{}}],["right_shift",{"_index":812,"name":{"2862":{}},"parent":{}}],["right_shift_px",{"_index":1056,"name":{"4077":{}},"parent":{}}],["right_shift_ticks",{"_index":1053,"name":{"4074":{}},"parent":{}}],["rightdisplacedheadpx",{"_index":881,"name":{"3004":{},"6243":{}},"parent":{}}],["rightpadding",{"_index":990,"name":{"3857":{},"5600":{}},"parent":{}}],["roll_down",{"_index":1171,"name":{"5154":{}},"parent":{}}],["roll_up",{"_index":1172,"name":{"5155":{}},"parent":{}}],["rollingduration",{"_index":440,"name":{"1269":{}},"parent":{}}],["root",{"_index":842,"name":{"2947":{},"2950":{}},"parent":{}}],["root_index",{"_index":847,"name":{"2957":{}},"parent":{}}],["root_indices",{"_index":852,"name":{"2963":{}},"parent":{}}],["root_values",{"_index":851,"name":{"2962":{}},"parent":{}}],["roots",{"_index":850,"name":{"2961":{}},"parent":{}}],["rootvalue",{"_index":845,"name":{"2954":{}},"parent":{}}],["rounded_end",{"_index":1071,"name":{"4148":{}},"parent":{}}],["rparen",{"_index":423,"name":{"1235":{}},"parent":{}}],["rule",{"_index":910,"name":{"3526":{}},"parent":{"3527":{},"3528":{},"3529":{},"3530":{},"3531":{},"3532":{},"3533":{},"3534":{}}}],["rulefunction",{"_index":908,"name":{"3522":{}},"parent":{"3523":{}}}],["run",{"_index":918,"name":{"3534":{}},"parent":{}}],["runtimeerror",{"_index":1348,"name":{"6773":{},"6785":{}},"parent":{"6774":{},"6775":{},"6776":{}}}],["sanitizecanvasdims",{"_index":270,"name":{"561":{}},"parent":{}}],["sans_serif",{"_index":598,"name":{"1589":{}},"parent":{}}],["save",{"_index":301,"name":{"595":{},"3672":{},"5279":{}},"parent":{}}],["scale",{"_index":123,"name":{"257":{},"579":{},"830":{},"971":{},"1795":{},"1932":{},"1959":{},"2039":{},"2170":{},"2264":{},"2488":{},"2684":{},"3043":{},"3213":{},"3657":{},"3728":{},"4393":{},"4969":{},"5261":{},"5435":{},"5845":{},"6030":{},"6299":{},"6437":{}},"parent":{}}],["scales",{"_index":857,"name":{"2968":{}},"parent":{}}],["scalesize",{"_index":606,"name":{"1598":{}},"parent":{}}],["scaletopxfrom",{"_index":600,"name":{"1592":{}},"parent":{}}],["scaletypes",{"_index":858,"name":{"2969":{}},"parent":{}}],["secondary_break_ticks",{"_index":204,"name":{"383":{}},"parent":{}}],["segno_left",{"_index":1107,"name":{"4497":{}},"parent":{}}],["segno_right",{"_index":1108,"name":{"4498":{}},"parent":{}}],["selectnote",{"_index":798,"name":{"2597":{}},"parent":{}}],["semibreve_rest_glyph_scale",{"_index":834,"name":{"2895":{}},"parent":{}}],["serif",{"_index":599,"name":{"1590":{}},"parent":{}}],["serif_thickness",{"_index":836,"name":{"2897":{}},"parent":{}}],["serifs",{"_index":1234,"name":{"5961":{}},"parent":{}}],["set",{"_index":461,"name":{"1301":{},"1660":{}},"parent":{}}],["setascautionary",{"_index":26,"name":{"26":{}},"parent":{}}],["setattribute",{"_index":62,"name":{"62":{},"142":{},"214":{},"351":{},"428":{},"506":{},"720":{},"786":{},"924":{},"1066":{},"1121":{},"1185":{},"1342":{},"1730":{},"1883":{},"1994":{},"2134":{},"2344":{},"2411":{},"2574":{},"2644":{},"2778":{},"2844":{},"2926":{},"3140":{},"3304":{},"3365":{},"3442":{},"3504":{},"3601":{},"3823":{},"3940":{},"4007":{},"4056":{},"4111":{},"4177":{},"4243":{},"4473":{},"4545":{},"4601":{},"4665":{},"4722":{},"4779":{},"4840":{},"4910":{},"5062":{},"5131":{},"5205":{},"5339":{},"5521":{},"5579":{},"5684":{},"5737":{},"5803":{},"5940":{},"6125":{},"6216":{},"6332":{},"6397":{},"6531":{},"6593":{},"6670":{},"6841":{},"6889":{},"6956":{}},"parent":{}}],["setbackgroundfillstyle",{"_index":279,"name":{"572":{},"3650":{},"5253":{}},"parent":{}}],["setbeam",{"_index":155,"name":{"290":{},"863":{},"1004":{},"1825":{},"2072":{},"2187":{},"2517":{},"2717":{},"3076":{},"3244":{},"3761":{},"4313":{},"5001":{},"5464":{},"5878":{},"6063":{},"6470":{}},"parent":{}}],["setbeatsoccupied",{"_index":1323,"name":{"6647":{}},"parent":{}}],["setbegbartype",{"_index":1020,"name":{"3901":{},"5645":{}},"parent":{}}],["setbracketed",{"_index":1317,"name":{"6640":{}},"parent":{}}],["setcenteralignment",{"_index":178,"name":{"317":{},"890":{},"1031":{},"1850":{},"2099":{},"2311":{},"2540":{},"2744":{},"3103":{},"3269":{},"3788":{},"4440":{},"5026":{},"5487":{},"5905":{},"6090":{},"6171":{},"6497":{}},"parent":{}}],["setcenterxshift",{"_index":176,"name":{"315":{},"888":{},"1029":{},"1848":{},"2097":{},"2309":{},"2538":{},"2742":{},"3101":{},"3267":{},"3786":{},"4438":{},"5024":{},"5485":{},"5903":{},"6088":{},"6169":{},"6495":{}},"parent":{}}],["setclef",{"_index":1022,"name":{"3903":{},"5647":{}},"parent":{}}],["setconfigforline",{"_index":1038,"name":{"3923":{},"5667":{}},"parent":{}}],["setconfigforlines",{"_index":1039,"name":{"3924":{},"5668":{}},"parent":{}}],["setcontext",{"_index":65,"name":{"65":{},"145":{},"217":{},"354":{},"431":{},"509":{},"723":{},"789":{},"810":{},"1069":{},"1124":{},"1188":{},"1303":{},"1345":{},"1380":{},"1733":{},"1886":{},"1997":{},"2136":{},"2346":{},"2414":{},"2577":{},"2647":{},"2781":{},"2847":{},"2929":{},"3143":{},"3306":{},"3368":{},"3445":{},"3507":{},"3604":{},"3825":{},"3942":{},"4010":{},"4059":{},"4114":{},"4180":{},"4246":{},"4475":{},"4548":{},"4604":{},"4668":{},"4725":{},"4782":{},"4843":{},"4912":{},"5065":{},"5134":{},"5208":{},"5318":{},"5524":{},"5582":{},"5686":{},"5740":{},"5806":{},"5943":{},"6128":{},"6219":{},"6335":{},"6400":{},"6534":{},"6596":{},"6673":{},"6844":{},"6892":{},"6958":{}},"parent":{}}],["setcurrenttick",{"_index":1282,"name":{"6269":{}},"parent":{}}],["setcustomtext",{"_index":946,"name":{"3580":{}},"parent":{}}],["setdashed",{"_index":1166,"name":{"5092":{},"5785":{}},"parent":{}}],["setdata",{"_index":616,"name":{"1609":{}},"parent":{}}],["setdecrescendo",{"_index":379,"name":{"953":{}},"parent":{}}],["setdefaultledgerlinestyle",{"_index":992,"name":{"3861":{},"5606":{}},"parent":{}}],["setdelayed",{"_index":904,"name":{"3402":{}},"parent":{}}],["setdirection",{"_index":1136,"name":{"4757":{},"4882":{},"5558":{},"5715":{}},"parent":{}}],["setdotshifty",{"_index":396,"name":{"1148":{}},"parent":{}}],["setdrawcircle",{"_index":1167,"name":{"5093":{}},"parent":{}}],["setduration",{"_index":192,"name":{"331":{},"904":{},"1046":{},"1863":{},"2114":{},"2325":{},"2554":{},"2758":{},"3119":{},"3284":{},"3803":{},"4454":{},"5041":{},"5501":{},"5920":{},"6105":{},"6191":{},"6511":{}},"parent":{}}],["setenablekerning",{"_index":352,"name":{"677":{}},"parent":{}}],["setendbartype",{"_index":1021,"name":{"3902":{},"5646":{}},"parent":{}}],["setendclef",{"_index":1023,"name":{"3905":{},"5649":{}},"parent":{}}],["setendkeysignature",{"_index":1026,"name":{"3908":{},"5652":{}},"parent":{}}],["setendtimesignature",{"_index":1028,"name":{"3910":{},"5654":{}},"parent":{}}],["setextension",{"_index":1153,"name":{"4883":{}},"parent":{}}],["setfillstyle",{"_index":278,"name":{"571":{},"3649":{},"5252":{}},"parent":{}}],["setflagstyle",{"_index":765,"name":{"2214":{},"4340":{}},"parent":{}}],["setfont",{"_index":68,"name":{"68":{},"148":{},"220":{},"357":{},"434":{},"512":{},"599":{},"676":{},"792":{},"928":{},"1072":{},"1127":{},"1191":{},"1348":{},"1736":{},"1889":{},"2000":{},"2139":{},"2349":{},"2417":{},"2580":{},"2650":{},"2784":{},"2850":{},"2932":{},"3146":{},"3309":{},"3371":{},"3448":{},"3510":{},"3607":{},"3680":{},"3828":{},"3945":{},"4013":{},"4062":{},"4117":{},"4183":{},"4249":{},"4478":{},"4551":{},"4607":{},"4671":{},"4728":{},"4785":{},"4846":{},"4915":{},"5068":{},"5137":{},"5211":{},"5283":{},"5344":{},"5527":{},"5585":{},"5689":{},"5743":{},"5809":{},"5946":{},"6131":{},"6222":{},"6338":{},"6403":{},"6537":{},"6599":{},"6676":{},"6847":{},"6895":{},"6961":{}},"parent":{}}],["setfontsize",{"_index":72,"name":{"72":{},"152":{},"224":{},"361":{},"438":{},"516":{},"729":{},"796":{},"932":{},"1076":{},"1131":{},"1195":{},"1352":{},"1740":{},"1893":{},"2004":{},"2143":{},"2353":{},"2421":{},"2584":{},"2654":{},"2788":{},"2854":{},"2936":{},"3150":{},"3313":{},"3375":{},"3452":{},"3514":{},"3611":{},"3832":{},"3949":{},"4017":{},"4066":{},"4121":{},"4187":{},"4253":{},"4482":{},"4555":{},"4611":{},"4675":{},"4732":{},"4789":{},"4850":{},"4919":{},"5072":{},"5141":{},"5215":{},"5348":{},"5531":{},"5589":{},"5693":{},"5747":{},"5813":{},"5950":{},"5982":{},"6135":{},"6226":{},"6342":{},"6407":{},"6541":{},"6603":{},"6680":{},"6851":{},"6899":{},"6965":{}},"parent":{}}],["setfrethandfinger",{"_index":670,"name":{"1689":{}},"parent":{}}],["setghost",{"_index":788,"name":{"2436":{},"5383":{}},"parent":{}}],["setglyph",{"_index":736,"name":{"2019":{},"3708":{}},"parent":{}}],["setgroupstyle",{"_index":49,"name":{"49":{},"129":{},"201":{},"338":{},"415":{},"493":{},"707":{},"773":{},"911":{},"1053":{},"1108":{},"1172":{},"1328":{},"1717":{},"1870":{},"1981":{},"2121":{},"2331":{},"2398":{},"2561":{},"2631":{},"2765":{},"2831":{},"2913":{},"3126":{},"3291":{},"3352":{},"3429":{},"3491":{},"3588":{},"3810":{},"3928":{},"3994":{},"4043":{},"4098":{},"4164":{},"4230":{},"4460":{},"4532":{},"4588":{},"4652":{},"4709":{},"4766":{},"4827":{},"4897":{},"5048":{},"5118":{},"5192":{},"5326":{},"5508":{},"5566":{},"5672":{},"5724":{},"5791":{},"5927":{},"6112":{},"6202":{},"6319":{},"6384":{},"6518":{},"6580":{},"6657":{},"6828":{},"6876":{},"6943":{}},"parent":{}}],["seth",{"_index":255,"name":{"542":{}},"parent":{}}],["setharsh",{"_index":1362,"name":{"6802":{},"6871":{}},"parent":{}}],["setheight",{"_index":378,"name":{"952":{}},"parent":{}}],["sethorizontal",{"_index":355,"name":{"680":{}},"parent":{}}],["setignoreticks",{"_index":172,"name":{"307":{},"880":{},"1021":{},"1840":{},"2089":{},"2301":{},"2530":{},"2734":{},"3093":{},"3260":{},"3778":{},"4430":{},"5016":{},"5477":{},"5895":{},"6080":{},"6161":{},"6487":{}},"parent":{}}],["setindex",{"_index":33,"name":{"33":{},"113":{},"185":{},"478":{},"691":{},"1156":{},"1701":{},"2382":{},"2814":{},"3336":{},"3413":{},"3475":{},"5102":{},"5177":{},"6564":{},"6812":{}},"parent":{}}],["setindexvalue",{"_index":954,"name":{"3629":{}},"parent":{}}],["setintrinsicticks",{"_index":189,"name":{"328":{},"901":{},"1043":{},"1860":{},"2111":{},"2322":{},"2551":{},"2755":{},"3116":{},"3281":{},"3800":{},"4451":{},"5038":{},"5498":{},"5917":{},"6102":{},"6188":{},"6508":{}},"parent":{}}],["setjustification",{"_index":95,"name":{"104":{},"6011":{}},"parent":{}}],["setkey",{"_index":795,"name":{"2593":{}},"parent":{}}],["setkeyline",{"_index":768,"name":{"2217":{},"4343":{}},"parent":{}}],["setkeysig",{"_index":805,"name":{"2611":{}},"parent":{}}],["setkeysignature",{"_index":1025,"name":{"3907":{},"5651":{}},"parent":{}}],["setkeystyle",{"_index":767,"name":{"2216":{},"4342":{}},"parent":{}}],["setlastnote",{"_index":1165,"name":{"5091":{}},"parent":{}}],["setlayoutmetrics",{"_index":367,"name":{"768":{},"2626":{},"3989":{},"4224":{},"4527":{},"4583":{},"4647":{},"4704":{},"4822":{},"6379":{}},"parent":{}}],["setledgerlinestyle",{"_index":763,"name":{"2212":{},"4338":{}},"parent":{}}],["setleftdisplacedheadpx",{"_index":134,"name":{"269":{},"842":{},"983":{},"1805":{},"2051":{},"2274":{},"2499":{},"2696":{},"3055":{},"3224":{},"3740":{},"4403":{},"4981":{},"5446":{},"5857":{},"6042":{},"6449":{}},"parent":{}}],["setline",{"_index":377,"name":{"951":{},"3192":{},"3581":{},"5786":{},"5827":{},"6012":{},"6870":{}},"parent":{}}],["setlinecap",{"_index":284,"name":{"577":{},"3655":{},"5259":{}},"parent":{}}],["setlinedash",{"_index":285,"name":{"578":{},"3656":{},"5258":{}},"parent":{}}],["setlineendtype",{"_index":1163,"name":{"5087":{}},"parent":{}}],["setlinewidth",{"_index":283,"name":{"576":{},"3654":{},"5257":{}},"parent":{}}],["setloweraccidental",{"_index":906,"name":{"3404":{}},"parent":{}}],["setmeasure",{"_index":1004,"name":{"3881":{},"5626":{}},"parent":{}}],["setmetrics",{"_index":617,"name":{"1610":{}},"parent":{}}],["setmode",{"_index":1377,"name":{"6925":{}},"parent":{}}],["setmodifiercontext",{"_index":36,"name":{"36":{},"116":{},"188":{},"332":{},"481":{},"694":{},"905":{},"1047":{},"1159":{},"1704":{},"1864":{},"2115":{},"2326":{},"2385":{},"2555":{},"2759":{},"2817":{},"3120":{},"3285":{},"3339":{},"3416":{},"3478":{},"3804":{},"4455":{},"5042":{},"5105":{},"5180":{},"5502":{},"5921":{},"6106":{},"6193":{},"6512":{},"6567":{},"6815":{}},"parent":{}}],["setmusicfont",{"_index":550,"name":{"1523":{}},"parent":{}}],["setnote",{"_index":25,"name":{"25":{},"110":{},"182":{},"475":{},"688":{},"1147":{},"1698":{},"2379":{},"2811":{},"3333":{},"3410":{},"3467":{},"5099":{},"5174":{},"6561":{},"6809":{}},"parent":{}}],["setnotedisplaced",{"_index":760,"name":{"2204":{},"4330":{}},"parent":{}}],["setnotedots",{"_index":445,"name":{"1275":{}},"parent":{}}],["setnoteduration",{"_index":446,"name":{"1276":{}},"parent":{}}],["setnoteheadxbounds",{"_index":1152,"name":{"4881":{}},"parent":{}}],["setnotes",{"_index":390,"name":{"1101":{},"4092":{},"4157":{},"4758":{},"5559":{},"5716":{}},"parent":{}}],["setnotesoccupied",{"_index":1325,"name":{"6649":{}},"parent":{}}],["setnotestartx",{"_index":995,"name":{"3865":{},"5610":{}},"parent":{}}],["setnotetype",{"_index":447,"name":{"1277":{}},"parent":{}}],["setnumlines",{"_index":1001,"name":{"3872":{},"5617":{}},"parent":{}}],["setoffsetx",{"_index":672,"name":{"1691":{},"5089":{}},"parent":{}}],["setoffsety",{"_index":673,"name":{"1692":{},"5090":{}},"parent":{}}],["setoptions",{"_index":462,"name":{"1302":{},"1377":{},"1962":{},"4880":{},"5317":{},"6302":{}},"parent":{}}],["setorigin",{"_index":731,"name":{"1974":{},"6313":{}},"parent":{}}],["setoriginx",{"_index":729,"name":{"1972":{},"6311":{}},"parent":{}}],["setoriginy",{"_index":730,"name":{"1973":{},"6312":{}},"parent":{}}],["setpadding",{"_index":366,"name":{"767":{},"2625":{},"3988":{},"4223":{},"4526":{},"4582":{},"4646":{},"4703":{},"4821":{},"6258":{},"6378":{}},"parent":{}}],["setpartialbeamsideat",{"_index":219,"name":{"400":{}},"parent":{}}],["setplaynote",{"_index":126,"name":{"261":{},"834":{},"975":{},"1799":{},"2043":{},"2268":{},"2492":{},"2688":{},"3047":{},"3217":{},"3732":{},"4397":{},"4973":{},"5439":{},"5849":{},"6034":{},"6441":{}},"parent":{}}],["setpoint",{"_index":726,"name":{"1963":{},"6303":{}},"parent":{}}],["setposition",{"_index":38,"name":{"38":{},"118":{},"190":{},"483":{},"696":{},"759":{},"1161":{},"1706":{},"2387":{},"2617":{},"2819":{},"3341":{},"3418":{},"3480":{},"3978":{},"4090":{},"4213":{},"4516":{},"4572":{},"4636":{},"4693":{},"4811":{},"5107":{},"5181":{},"6368":{},"6569":{},"6817":{}},"parent":{}}],["setratioed",{"_index":1318,"name":{"6641":{}},"parent":{}}],["setrawfont",{"_index":305,"name":{"602":{},"3683":{},"5286":{}},"parent":{}}],["setrendered",{"_index":59,"name":{"59":{},"139":{},"211":{},"348":{},"425":{},"503":{},"717":{},"783":{},"921":{},"1063":{},"1118":{},"1182":{},"1339":{},"1727":{},"1880":{},"1991":{},"2131":{},"2341":{},"2408":{},"2571":{},"2641":{},"2775":{},"2841":{},"2923":{},"3137":{},"3301":{},"3362":{},"3439":{},"3501":{},"3598":{},"3820":{},"3937":{},"4004":{},"4053":{},"4108":{},"4174":{},"4240":{},"4470":{},"4542":{},"4598":{},"4662":{},"4719":{},"4776":{},"4837":{},"4907":{},"5059":{},"5128":{},"5202":{},"5336":{},"5518":{},"5576":{},"5681":{},"5734":{},"5800":{},"5937":{},"6122":{},"6213":{},"6329":{},"6394":{},"6528":{},"6590":{},"6667":{},"6838":{},"6886":{},"6953":{}},"parent":{}}],["setrenderoptions",{"_index":1061,"name":{"4091":{}},"parent":{}}],["setrepetitiontype",{"_index":1006,"name":{"3883":{},"5628":{}},"parent":{}}],["setreportwidth",{"_index":338,"name":{"662":{}},"parent":{}}],["setrightdisplacedheadpx",{"_index":135,"name":{"270":{},"843":{},"984":{},"1806":{},"2052":{},"2275":{},"2500":{},"2697":{},"3056":{},"3225":{},"3741":{},"4404":{},"4982":{},"5447":{},"5858":{},"6043":{},"6450":{}},"parent":{}}],["setsection",{"_index":1008,"name":{"3885":{},"5630":{}},"parent":{}}],["setshadowblur",{"_index":282,"name":{"575":{},"3653":{},"5256":{}},"parent":{}}],["setshadowcolor",{"_index":281,"name":{"574":{},"3652":{},"5255":{}},"parent":{}}],["setshiftx",{"_index":1117,"name":{"4509":{},"4568":{},"4632":{},"4688":{}},"parent":{}}],["setshifty",{"_index":1118,"name":{"4510":{},"4569":{},"4633":{},"4689":{},"4808":{}},"parent":{}}],["setsoftmaxfactor",{"_index":1381,"name":{"6933":{}},"parent":{}}],["setspacingfromnextmodifier",{"_index":41,"name":{"41":{},"121":{},"193":{},"486":{},"699":{},"1164":{},"1709":{},"2390":{},"2822":{},"3344":{},"3421":{},"3483":{},"5110":{},"5184":{},"6572":{},"6820":{}},"parent":{}}],["setstave",{"_index":131,"name":{"266":{},"756":{},"839":{},"980":{},"1753":{},"1964":{},"2048":{},"2202":{},"2440":{},"2620":{},"2693":{},"2904":{},"3052":{},"3195":{},"3737":{},"3981":{},"4216":{},"4328":{},"4519":{},"4575":{},"4639":{},"4696":{},"4814":{},"4978":{},"5387":{},"5854":{},"6039":{},"6197":{},"6304":{},"6371":{},"6446":{},"6928":{}},"parent":{}}],["setstavesection",{"_index":1123,"name":{"4567":{}},"parent":{}}],["setstavetext",{"_index":1127,"name":{"4687":{}},"parent":{}}],["setstem",{"_index":677,"name":{"1761":{},"2237":{},"2457":{},"4366":{},"4935":{},"5404":{}},"parent":{}}],["setstemdirection",{"_index":683,"name":{"1769":{},"2244":{},"2465":{},"4373":{},"4943":{},"5412":{}},"parent":{}}],["setstemlength",{"_index":687,"name":{"1773":{},"2246":{},"2467":{},"4375":{},"4947":{},"5414":{}},"parent":{}}],["setstemlet",{"_index":1158,"name":{"4890":{}},"parent":{}}],["setstemstyle",{"_index":761,"name":{"2210":{},"4336":{}},"parent":{}}],["setstrict",{"_index":1379,"name":{"6931":{}},"parent":{}}],["setstringnumber",{"_index":1164,"name":{"5088":{}},"parent":{}}],["setstrokestyle",{"_index":280,"name":{"573":{},"3651":{},"5254":{}},"parent":{}}],["setstyle",{"_index":48,"name":{"48":{},"128":{},"200":{},"337":{},"414":{},"492":{},"706":{},"772":{},"910":{},"1052":{},"1107":{},"1171":{},"1327":{},"1716":{},"1869":{},"1980":{},"2120":{},"2209":{},"2397":{},"2560":{},"2630":{},"2764":{},"2830":{},"2912":{},"3125":{},"3290":{},"3351":{},"3428":{},"3490":{},"3587":{},"3809":{},"3927":{},"3993":{},"4042":{},"4097":{},"4163":{},"4229":{},"4335":{},"4531":{},"4587":{},"4651":{},"4708":{},"4765":{},"4826":{},"4896":{},"5047":{},"5117":{},"5191":{},"5325":{},"5507":{},"5565":{},"5671":{},"5723":{},"5790":{},"5926":{},"6111":{},"6201":{},"6318":{},"6383":{},"6517":{},"6579":{},"6656":{},"6827":{},"6875":{},"6942":{}},"parent":{}}],["settap",{"_index":240,"name":{"467":{}},"parent":{}}],["settempo",{"_index":1009,"name":{"3886":{},"4631":{},"5631":{}},"parent":{}}],["settext",{"_index":1010,"name":{"3887":{},"4036":{},"4156":{},"4690":{},"5632":{}},"parent":{}}],["settextline",{"_index":39,"name":{"39":{},"119":{},"191":{},"484":{},"697":{},"1162":{},"1707":{},"2388":{},"2820":{},"3342":{},"3419":{},"3481":{},"5108":{},"5182":{},"6570":{},"6818":{}},"parent":{}}],["settickcontext",{"_index":147,"name":{"282":{},"855":{},"996":{},"1817":{},"2064":{},"2284":{},"2510":{},"2709":{},"3068":{},"3236":{},"3753":{},"4413":{},"4993":{},"5457":{},"5870":{},"6055":{},"6181":{},"6462":{}},"parent":{}}],["settimesig",{"_index":1293,"name":{"6365":{}},"parent":{}}],["settimesignature",{"_index":1027,"name":{"3909":{},"5653":{}},"parent":{}}],["settuning",{"_index":1299,"name":{"6614":{}},"parent":{}}],["settuplet",{"_index":182,"name":{"321":{},"894":{},"1035":{},"1854":{},"2103":{},"2315":{},"2544":{},"2748":{},"3107":{},"3273":{},"3792":{},"4444":{},"5030":{},"5491":{},"5909":{},"6094":{},"6177":{},"6501":{}},"parent":{}}],["settupletlocation",{"_index":1319,"name":{"6642":{}},"parent":{}}],["settype",{"_index":107,"name":{"238":{},"754":{},"808":{},"3579":{},"3972":{},"4034":{}},"parent":{}}],["setupperaccidental",{"_index":905,"name":{"3403":{}},"parent":{}}],["setvertical",{"_index":353,"name":{"678":{}},"parent":{}}],["setverticaljustification",{"_index":93,"name":{"102":{}},"parent":{}}],["setvibratowidth",{"_index":1363,"name":{"6803":{}},"parent":{}}],["setviewbox",{"_index":1188,"name":{"5262":{}},"parent":{}}],["setvisibility",{"_index":1157,"name":{"4889":{}},"parent":{}}],["setvoice",{"_index":145,"name":{"280":{},"853":{},"994":{},"1815":{},"2062":{},"2282":{},"2508":{},"2707":{},"3066":{},"3234":{},"3751":{},"4411":{},"4991":{},"5455":{},"5868":{},"6053":{},"6173":{},"6460":{}},"parent":{}}],["setvoltatype",{"_index":1007,"name":{"3884":{},"5629":{}},"parent":{}}],["setw",{"_index":254,"name":{"541":{}},"parent":{}}],["setwidth",{"_index":28,"name":{"28":{},"107":{},"179":{},"308":{},"472":{},"685":{},"762":{},"881":{},"1022":{},"1151":{},"1695":{},"1841":{},"2090":{},"2302":{},"2373":{},"2531":{},"2621":{},"2735":{},"2808":{},"3094":{},"3261":{},"3328":{},"3407":{},"3470":{},"3779":{},"3878":{},"3983":{},"4218":{},"4431":{},"4521":{},"4577":{},"4641":{},"4698":{},"4816":{},"5017":{},"5096":{},"5171":{},"5478":{},"5623":{},"5896":{},"6081":{},"6162":{},"6373":{},"6488":{},"6558":{},"6806":{}},"parent":{}}],["setx",{"_index":252,"name":{"539":{},"764":{},"2623":{},"3188":{},"3877":{},"3985":{},"4220":{},"4523":{},"4579":{},"4643":{},"4700":{},"4818":{},"5622":{},"6252":{},"6375":{}},"parent":{}}],["setxbase",{"_index":1270,"name":{"6254":{}},"parent":{}}],["setxoffset",{"_index":1272,"name":{"6256":{}},"parent":{}}],["setxshift",{"_index":43,"name":{"43":{},"123":{},"195":{},"310":{},"466":{},"701":{},"883":{},"1024":{},"1166":{},"1711":{},"1843":{},"1966":{},"2092":{},"2304":{},"2392":{},"2533":{},"2737":{},"2824":{},"3096":{},"3262":{},"3346":{},"3423":{},"3485":{},"3781":{},"4037":{},"4433":{},"5019":{},"5112":{},"5186":{},"5480":{},"5898":{},"6083":{},"6164":{},"6306":{},"6490":{},"6574":{},"6822":{}},"parent":{}}],["sety",{"_index":253,"name":{"540":{},"3190":{},"3873":{},"5618":{}},"parent":{}}],["setybounds",{"_index":1155,"name":{"4885":{}},"parent":{}}],["setys",{"_index":141,"name":{"276":{},"849":{},"990":{},"1812":{},"2058":{},"2279":{},"2505":{},"2703":{},"3062":{},"3230":{},"3747":{},"4408":{},"4988":{},"5452":{},"5864":{},"6049":{},"6456":{}},"parent":{}}],["setyshift",{"_index":40,"name":{"40":{},"120":{},"192":{},"485":{},"698":{},"1163":{},"1708":{},"1968":{},"2389":{},"2821":{},"3343":{},"3420":{},"3482":{},"5109":{},"5183":{},"6308":{},"6571":{},"6819":{}},"parent":{}}],["shadow_attributes",{"_index":1179,"name":{"5226":{},"5242":{}},"parent":{}}],["shadowblur",{"_index":472,"name":{"1317":{}},"parent":{}}],["shadowcolor",{"_index":471,"name":{"1316":{}},"parent":{}}],["shift_right",{"_index":872,"name":{"2994":{}},"parent":{}}],["shift_y",{"_index":707,"name":{"1920":{}},"parent":{}}],["shoulddrawflag",{"_index":778,"name":{"2229":{},"4355":{}},"parent":{}}],["shouldignoreticks",{"_index":136,"name":{"271":{},"844":{},"985":{},"1807":{},"2053":{},"2276":{},"2501":{},"2698":{},"3057":{},"3226":{},"3742":{},"4405":{},"4983":{},"5448":{},"5859":{},"6044":{},"6160":{},"6451":{}},"parent":{}}],["show_bracket",{"_index":1230,"name":{"5778":{}},"parent":{}}],["show_number",{"_index":828,"name":{"2888":{}},"parent":{}}],["show_stemlets",{"_index":205,"name":{"384":{}},"parent":{}}],["simpleformat",{"_index":636,"name":{"1632":{}},"parent":{}}],["simplify",{"_index":657,"name":{"1662":{}},"parent":{}}],["single",{"_index":1040,"name":{"3957":{}},"parent":{}}],["singlenote",{"_index":407,"name":{"1216":{}},"parent":{}}],["size",{"_index":572,"name":{"1548":{},"1591":{}},"parent":{}}],["slash",{"_index":425,"name":{"1238":{},"2151":{}},"parent":{}}],["slash_notehead_width",{"_index":558,"name":{"1531":{}},"parent":{}}],["slashed",{"_index":889,"name":{"3160":{}},"parent":{}}],["slide_down",{"_index":1215,"name":{"5542":{}},"parent":{}}],["slide_up",{"_index":1214,"name":{"5541":{}},"parent":{}}],["slope",{"_index":215,"name":{"395":{}},"parent":{}}],["slope_cost",{"_index":210,"name":{"389":{}},"parent":{}}],["slope_iterations",{"_index":209,"name":{"388":{}},"parent":{}}],["slur_y_shift",{"_index":782,"name":{"2370":{}},"parent":{}}],["smooth",{"_index":1250,"name":{"5993":{}},"parent":{}}],["smufl",{"_index":583,"name":{"1562":{}},"parent":{}}],["soft",{"_index":1369,"name":{"6912":{}},"parent":{}}],["softmax",{"_index":1382,"name":{"6934":{}},"parent":{}}],["softmax_factor",{"_index":554,"name":{"1527":{}},"parent":{}}],["softmaxfactor",{"_index":624,"name":{"1617":{},"5289":{}},"parent":{}}],["sortandunique",{"_index":1350,"name":{"6779":{}},"parent":{}}],["sortbycategory",{"_index":1035,"name":{"3918":{},"5662":{}},"parent":{}}],["space",{"_index":477,"name":{"1362":{},"3863":{},"5608":{},"6149":{}},"parent":{}}],["space_above_staff_ln",{"_index":982,"name":{"3845":{}},"parent":{}}],["space_below_staff_ln",{"_index":981,"name":{"3844":{}},"parent":{}}],["spaceabove",{"_index":1195,"name":{"5297":{}},"parent":{}}],["spacebelow",{"_index":1196,"name":{"5298":{}},"parent":{}}],["spacebetweenstaves",{"_index":1201,"name":{"5304":{}},"parent":{}}],["spacing",{"_index":817,"name":{"2868":{}},"parent":{}}],["spacing_between_lines_px",{"_index":833,"name":{"2894":{},"3850":{}},"parent":{}}],["spacingbetweenblocks",{"_index":324,"name":{"639":{}},"parent":{}}],["stacktrace",{"_index":1353,"name":{"6783":{}},"parent":{}}],["start",{"_index":1224,"name":{"5755":{},"5782":{}},"parent":{}}],["state",{"_index":1178,"name":{"5223":{},"5224":{},"5243":{}},"parent":{"5224":{},"5225":{},"5226":{},"5227":{}}}],["state_stack",{"_index":1183,"name":{"5244":{}},"parent":{}}],["stave",{"_index":476,"name":{"1360":{},"1383":{},"1473":{},"1563":{},"1622":{},"3853":{},"5294":{},"6735":{}},"parent":{"3854":{},"3855":{},"3856":{},"3857":{},"3858":{},"3859":{},"3860":{},"3861":{},"3862":{},"3863":{},"3864":{},"3865":{},"3866":{},"3867":{},"3868":{},"3869":{},"3870":{},"3871":{},"3872":{},"3873":{},"3874":{},"3875":{},"3876":{},"3877":{},"3878":{},"3879":{},"3880":{},"3881":{},"3882":{},"3883":{},"3884":{},"3885":{},"3886":{},"3887":{},"3888":{},"3889":{},"3890":{},"3891":{},"3892":{},"3893":{},"3894":{},"3895":{},"3896":{},"3897":{},"3898":{},"3899":{},"3900":{},"3901":{},"3902":{},"3903":{},"3904":{},"3905":{},"3906":{},"3907":{},"3908":{},"3909":{},"3910":{},"3911":{},"3912":{},"3913":{},"3914":{},"3915":{},"3916":{},"3917":{},"3918":{},"3919":{},"3920":{},"3921":{},"3922":{},"3923":{},"3924":{},"3925":{},"3926":{},"3927":{},"3928":{},"3929":{},"3930":{},"3931":{},"3932":{},"3933":{},"3934":{},"3935":{},"3936":{},"3937":{},"3938":{},"3939":{},"3940":{},"3941":{},"3942":{},"3943":{},"3944":{},"3945":{},"3946":{},"3947":{},"3948":{},"3949":{},"3950":{},"3951":{},"3952":{},"3953":{},"3954":{},"3955":{}}}],["stave_line_distance",{"_index":559,"name":{"1532":{}},"parent":{}}],["stave_line_thickness",{"_index":560,"name":{"1533":{}},"parent":{}}],["staveconnector",{"_index":504,"name":{"1409":{},"1474":{},"4025":{},"6736":{}},"parent":{"4026":{},"4027":{},"4028":{},"4029":{},"4030":{},"4031":{},"4032":{},"4033":{},"4034":{},"4035":{},"4036":{},"4037":{},"4038":{},"4039":{},"4040":{},"4041":{},"4042":{},"4043":{},"4044":{},"4045":{},"4046":{},"4047":{},"4048":{},"4049":{},"4050":{},"4051":{},"4052":{},"4053":{},"4054":{},"4055":{},"4056":{},"4057":{},"4058":{},"4059":{},"4060":{},"4061":{},"4062":{},"4063":{},"4064":{},"4065":{},"4066":{},"4067":{},"4068":{},"4069":{},"4070":{},"4071":{},"4072":{}}}],["staveconnectortype",{"_index":1049,"name":{"4024":{}},"parent":{}}],["stavehairpin",{"_index":528,"name":{"1475":{},"4080":{},"6737":{}},"parent":{"4081":{},"4082":{},"4083":{},"4086":{},"4087":{},"4088":{},"4089":{},"4090":{},"4091":{},"4092":{},"4093":{},"4094":{},"4095":{},"4096":{},"4097":{},"4098":{},"4099":{},"4100":{},"4101":{},"4102":{},"4103":{},"4104":{},"4105":{},"4106":{},"4107":{},"4108":{},"4109":{},"4110":{},"4111":{},"4112":{},"4113":{},"4114":{},"4115":{},"4116":{},"4117":{},"4118":{},"4119":{},"4120":{},"4121":{},"4122":{},"4123":{},"4124":{},"4125":{},"4126":{},"4127":{}}}],["stavehairpin.__type",{"_index":1058,"name":{},"parent":{"4084":{},"4085":{}}}],["stavehairpinrenderoptions",{"_index":1052,"name":{"4073":{}},"parent":{"4074":{},"4075":{},"4076":{},"4077":{},"4078":{},"4079":{}}}],["staveline",{"_index":507,"name":{"1415":{},"1476":{},"4133":{},"6738":{}},"parent":{"4134":{},"4135":{},"4136":{},"4137":{},"4140":{},"4141":{},"4142":{},"4143":{},"4156":{},"4157":{},"4158":{},"4159":{},"4160":{},"4161":{},"4162":{},"4163":{},"4164":{},"4165":{},"4166":{},"4167":{},"4168":{},"4169":{},"4170":{},"4171":{},"4172":{},"4173":{},"4174":{},"4175":{},"4176":{},"4177":{},"4178":{},"4179":{},"4180":{},"4181":{},"4182":{},"4183":{},"4184":{},"4185":{},"4186":{},"4187":{},"4188":{},"4189":{},"4190":{},"4191":{},"4192":{},"4193":{}}}],["staveline.__type",{"_index":1069,"name":{},"parent":{"4138":{},"4139":{},"4144":{},"4145":{},"4146":{},"4147":{},"4148":{},"4149":{},"4150":{},"4151":{},"4152":{},"4153":{},"4154":{},"4155":{}}}],["stavelineconfig",{"_index":976,"name":{"3839":{}},"parent":{"3840":{}}}],["stavelinenotes",{"_index":1063,"name":{"4128":{}},"parent":{"4129":{},"4130":{},"4131":{},"4132":{}}}],["stavemodifier",{"_index":529,"name":{"1477":{},"4207":{},"6739":{}},"parent":{"4208":{},"4209":{},"4210":{},"4211":{},"4212":{},"4213":{},"4214":{},"4215":{},"4216":{},"4217":{},"4218":{},"4219":{},"4220":{},"4221":{},"4222":{},"4223":{},"4224":{},"4225":{},"4226":{},"4227":{},"4228":{},"4229":{},"4230":{},"4231":{},"4232":{},"4233":{},"4234":{},"4235":{},"4236":{},"4237":{},"4238":{},"4239":{},"4240":{},"4241":{},"4242":{},"4243":{},"4244":{},"4245":{},"4246":{},"4247":{},"4248":{},"4249":{},"4250":{},"4251":{},"4252":{},"4253":{},"4254":{},"4255":{},"4256":{},"4257":{},"4258":{},"4259":{}}}],["stavemodifierposition",{"_index":545,"name":{"1518":{},"4199":{}},"parent":{"4200":{},"4201":{},"4202":{},"4203":{},"4204":{},"4205":{},"4206":{}}}],["stavenote",{"_index":487,"name":{"1385":{},"1478":{},"4298":{},"6740":{}},"parent":{"4299":{},"4300":{},"4301":{},"4302":{},"4303":{},"4304":{},"4305":{},"4306":{},"4307":{},"4308":{},"4309":{},"4310":{},"4311":{},"4312":{},"4313":{},"4314":{},"4315":{},"4316":{},"4317":{},"4318":{},"4319":{},"4320":{},"4321":{},"4322":{},"4323":{},"4324":{},"4325":{},"4326":{},"4327":{},"4328":{},"4329":{},"4330":{},"4331":{},"4332":{},"4333":{},"4334":{},"4335":{},"4336":{},"4337":{},"4338":{},"4339":{},"4340":{},"4341":{},"4342":{},"4343":{},"4344":{},"4345":{},"4346":{},"4347":{},"4348":{},"4349":{},"4350":{},"4351":{},"4352":{},"4353":{},"4354":{},"4355":{},"4356":{},"4357":{},"4358":{},"4359":{},"4360":{},"4361":{},"4362":{},"4363":{},"4364":{},"4365":{},"4366":{},"4367":{},"4368":{},"4369":{},"4370":{},"4371":{},"4372":{},"4373":{},"4374":{},"4375":{},"4376":{},"4377":{},"4378":{},"4379":{},"4380":{},"4381":{},"4382":{},"4396":{},"4397":{},"4398":{},"4399":{},"4400":{},"4401":{},"4402":{},"4403":{},"4404":{},"4405":{},"4406":{},"4407":{},"4408":{},"4409":{},"4410":{},"4411":{},"4412":{},"4413":{},"4414":{},"4415":{},"4416":{},"4417":{},"4418":{},"4419":{},"4420":{},"4421":{},"4422":{},"4423":{},"4424":{},"4425":{},"4426":{},"4427":{},"4428":{},"4429":{},"4430":{},"4431":{},"4432":{},"4433":{},"4434":{},"4435":{},"4436":{},"4437":{},"4438":{},"4439":{},"4440":{},"4441":{},"4442":{},"4443":{},"4444":{},"4445":{},"4446":{},"4447":{},"4448":{},"4449":{},"4450":{},"4451":{},"4452":{},"4453":{},"4454":{},"4455":{},"4456":{},"4457":{},"4458":{},"4459":{},"4460":{},"4461":{},"4462":{},"4463":{},"4464":{},"4465":{},"4466":{},"4467":{},"4468":{},"4469":{},"4470":{},"4471":{},"4472":{},"4473":{},"4474":{},"4475":{},"4476":{},"4477":{},"4478":{},"4479":{},"4480":{},"4481":{},"4482":{},"4483":{},"4484":{},"4485":{},"4486":{},"4487":{},"4488":{}}}],["stavenote.__type",{"_index":1103,"name":{},"parent":{"4383":{},"4384":{},"4385":{},"4386":{},"4387":{},"4388":{},"4389":{},"4390":{},"4391":{},"4392":{},"4393":{},"4394":{},"4395":{}}}],["stavenoteformatsettings",{"_index":1096,"name":{"4271":{}},"parent":{"4272":{},"4273":{},"4274":{},"4275":{},"4276":{},"4277":{},"4278":{},"4279":{},"4280":{},"4281":{}}}],["stavenoteheadbounds",{"_index":1085,"name":{"4260":{}},"parent":{"4261":{},"4262":{},"4263":{},"4264":{},"4265":{},"4266":{},"4267":{},"4268":{},"4269":{},"4270":{}}}],["stavenotestruct",{"_index":1102,"name":{"4282":{}},"parent":{"4283":{},"4284":{},"4285":{},"4286":{},"4287":{},"4288":{},"4289":{},"4290":{},"4291":{},"4292":{},"4293":{},"4294":{},"4295":{},"4296":{},"4297":{}}}],["staveoptions",{"_index":978,"name":{"3841":{}},"parent":{"3842":{},"3843":{},"3844":{},"3845":{},"3846":{},"3847":{},"3848":{},"3849":{},"3850":{},"3851":{},"3852":{}}}],["stavesection",{"_index":1122,"name":{"4562":{},"6741":{}},"parent":{"4563":{},"4564":{},"4565":{},"4566":{},"4567":{},"4568":{},"4569":{},"4570":{},"4571":{},"4572":{},"4573":{},"4574":{},"4575":{},"4576":{},"4577":{},"4578":{},"4579":{},"4580":{},"4581":{},"4582":{},"4583":{},"4584":{},"4585":{},"4586":{},"4587":{},"4588":{},"4589":{},"4590":{},"4591":{},"4592":{},"4593":{},"4594":{},"4595":{},"4596":{},"4597":{},"4598":{},"4599":{},"4600":{},"4601":{},"4602":{},"4603":{},"4604":{},"4605":{},"4606":{},"4607":{},"4608":{},"4609":{},"4610":{},"4611":{},"4612":{},"4613":{},"4614":{},"4615":{},"4616":{},"4617":{}}}],["stavetempo",{"_index":530,"name":{"1479":{},"4623":{},"6742":{}},"parent":{"4624":{},"4625":{},"4626":{},"4627":{},"4628":{},"4629":{},"4631":{},"4632":{},"4633":{},"4634":{},"4635":{},"4636":{},"4637":{},"4638":{},"4639":{},"4640":{},"4641":{},"4642":{},"4643":{},"4644":{},"4645":{},"4646":{},"4647":{},"4648":{},"4649":{},"4650":{},"4651":{},"4652":{},"4653":{},"4654":{},"4655":{},"4656":{},"4657":{},"4658":{},"4659":{},"4660":{},"4661":{},"4662":{},"4663":{},"4664":{},"4665":{},"4666":{},"4667":{},"4668":{},"4669":{},"4670":{},"4671":{},"4672":{},"4673":{},"4674":{},"4675":{},"4676":{},"4677":{},"4678":{},"4679":{},"4680":{},"4681":{}}}],["stavetempo.__type",{"_index":1126,"name":{},"parent":{"4630":{}}}],["stavetempooptions",{"_index":1124,"name":{"4618":{}},"parent":{"4619":{},"4620":{},"4621":{},"4622":{}}}],["stavetext",{"_index":531,"name":{"1480":{},"4682":{},"6743":{}},"parent":{"4683":{},"4684":{},"4685":{},"4686":{},"4687":{},"4688":{},"4689":{},"4690":{},"4691":{},"4692":{},"4693":{},"4694":{},"4695":{},"4696":{},"4697":{},"4698":{},"4699":{},"4700":{},"4701":{},"4702":{},"4703":{},"4704":{},"4705":{},"4706":{},"4707":{},"4708":{},"4709":{},"4710":{},"4711":{},"4712":{},"4713":{},"4714":{},"4715":{},"4716":{},"4717":{},"4718":{},"4719":{},"4720":{},"4721":{},"4722":{},"4723":{},"4724":{},"4725":{},"4726":{},"4727":{},"4728":{},"4729":{},"4730":{},"4731":{},"4732":{},"4733":{},"4734":{},"4735":{},"4736":{},"4737":{},"4738":{}}}],["stavetie",{"_index":506,"name":{"1414":{},"1481":{},"4744":{},"6744":{}},"parent":{"4745":{},"4746":{},"4747":{},"4748":{},"4749":{},"4757":{},"4758":{},"4759":{},"4760":{},"4761":{},"4762":{},"4763":{},"4764":{},"4765":{},"4766":{},"4767":{},"4768":{},"4769":{},"4770":{},"4771":{},"4772":{},"4773":{},"4774":{},"4775":{},"4776":{},"4777":{},"4778":{},"4779":{},"4780":{},"4781":{},"4782":{},"4783":{},"4784":{},"4785":{},"4786":{},"4787":{},"4788":{},"4789":{},"4790":{},"4791":{},"4792":{},"4793":{},"4794":{},"4795":{}}}],["stavetie.__type",{"_index":1130,"name":{},"parent":{"4750":{},"4751":{},"4752":{},"4753":{},"4754":{},"4755":{},"4756":{}}}],["stem",{"_index":436,"name":{"1260":{},"1291":{},"1482":{},"1758":{},"1910":{},"2234":{},"2454":{},"4363":{},"4871":{},"4932":{},"5401":{},"6745":{}},"parent":{"4872":{},"4873":{},"4874":{},"4875":{},"4876":{},"4877":{},"4878":{},"4879":{},"4880":{},"4881":{},"4882":{},"4883":{},"4884":{},"4885":{},"4886":{},"4887":{},"4888":{},"4889":{},"4890":{},"4891":{},"4892":{},"4893":{},"4894":{},"4895":{},"4896":{},"4897":{},"4898":{},"4899":{},"4900":{},"4901":{},"4902":{},"4903":{},"4904":{},"4905":{},"4906":{},"4907":{},"4908":{},"4909":{},"4910":{},"4911":{},"4912":{},"4913":{},"4914":{},"4915":{},"4916":{},"4917":{},"4918":{},"4919":{},"4920":{},"4921":{},"4922":{},"4923":{},"4924":{},"4925":{}}}],["stem_beam_extension",{"_index":698,"name":{"1907":{}},"parent":{}}],["stem_direction",{"_index":674,"name":{"1757":{},"2152":{},"2233":{},"2453":{},"3166":{},"4283":{},"4362":{},"4865":{},"4931":{},"5360":{},"5400":{}},"parent":{}}],["stem_down",{"_index":748,"name":{"2173":{},"4302":{}},"parent":{}}],["stem_down_extension",{"_index":700,"name":{"1909":{}},"parent":{}}],["stem_down_x_offset",{"_index":741,"name":{"2154":{},"2985":{},"3162":{},"4285":{},"5362":{}},"parent":{}}],["stem_down_y_base_offset",{"_index":1142,"name":{"4858":{}},"parent":{}}],["stem_down_y_offset",{"_index":1144,"name":{"4860":{}},"parent":{}}],["stem_extension",{"_index":1149,"name":{"4866":{}},"parent":{}}],["stem_height",{"_index":561,"name":{"1534":{}},"parent":{}}],["stem_up",{"_index":747,"name":{"2172":{},"4301":{}},"parent":{}}],["stem_up_extension",{"_index":699,"name":{"1908":{}},"parent":{}}],["stem_up_x_offset",{"_index":742,"name":{"2155":{},"2986":{},"3163":{},"4286":{},"5363":{}},"parent":{}}],["stem_up_y_base_offset",{"_index":1143,"name":{"4859":{}},"parent":{}}],["stem_up_y_offset",{"_index":1145,"name":{"4861":{}},"parent":{}}],["stem_width",{"_index":562,"name":{"1535":{}},"parent":{}}],["stemdirection",{"_index":1097,"name":{"4276":{}},"parent":{}}],["stemlet_extension",{"_index":211,"name":{"390":{}},"parent":{}}],["stemletheight",{"_index":1146,"name":{"4862":{}},"parent":{}}],["stemmablenote",{"_index":1161,"name":{"4926":{},"6746":{}},"parent":{"4927":{},"4928":{},"4929":{},"4930":{},"4931":{},"4932":{},"4933":{},"4934":{},"4935":{},"4936":{},"4937":{},"4938":{},"4939":{},"4940":{},"4941":{},"4942":{},"4943":{},"4944":{},"4945":{},"4946":{},"4947":{},"4948":{},"4949":{},"4950":{},"4951":{},"4952":{},"4953":{},"4954":{},"4955":{},"4956":{},"4957":{},"4958":{},"4972":{},"4973":{},"4974":{},"4975":{},"4976":{},"4977":{},"4978":{},"4979":{},"4980":{},"4981":{},"4982":{},"4983":{},"4984":{},"4985":{},"4986":{},"4987":{},"4988":{},"4989":{},"4990":{},"4991":{},"4992":{},"4993":{},"4994":{},"4995":{},"4996":{},"4997":{},"4998":{},"4999":{},"5000":{},"5001":{},"5002":{},"5003":{},"5004":{},"5005":{},"5006":{},"5007":{},"5008":{},"5009":{},"5010":{},"5011":{},"5012":{},"5013":{},"5014":{},"5015":{},"5016":{},"5017":{},"5018":{},"5019":{},"5020":{},"5021":{},"5022":{},"5023":{},"5024":{},"5025":{},"5026":{},"5027":{},"5028":{},"5029":{},"5030":{},"5031":{},"5032":{},"5033":{},"5034":{},"5035":{},"5036":{},"5037":{},"5038":{},"5039":{},"5040":{},"5041":{},"5042":{},"5043":{},"5044":{},"5045":{},"5046":{},"5047":{},"5048":{},"5049":{},"5050":{},"5051":{},"5052":{},"5053":{},"5054":{},"5055":{},"5056":{},"5057":{},"5058":{},"5059":{},"5060":{},"5061":{},"5062":{},"5063":{},"5064":{},"5065":{},"5066":{},"5067":{},"5068":{},"5069":{},"5070":{},"5071":{},"5072":{},"5073":{},"5074":{},"5075":{},"5076":{},"5077":{},"5078":{}}}],["stemmablenote.__type",{"_index":1162,"name":{},"parent":{"4959":{},"4960":{},"4961":{},"4962":{},"4963":{},"4964":{},"4965":{},"4966":{},"4967":{},"4968":{},"4969":{},"4970":{},"4971":{}}}],["stemmax",{"_index":1098,"name":{"4277":{}},"parent":{}}],["stemmin",{"_index":1099,"name":{"4278":{}},"parent":{}}],["stemoptions",{"_index":1141,"name":{"4857":{}},"parent":{"4858":{},"4859":{},"4860":{},"4861":{},"4862":{},"4863":{},"4864":{},"4865":{},"4866":{},"4867":{},"4868":{},"4869":{},"4870":{}}}],["stop",{"_index":1225,"name":{"5756":{},"5783":{}},"parent":{}}],["str",{"_index":1209,"name":{"5356":{}},"parent":{}}],["strict",{"_index":1368,"name":{"6911":{}},"parent":{}}],["stringnumber",{"_index":500,"name":{"1404":{},"1483":{},"5079":{},"6747":{}},"parent":{"5080":{},"5081":{},"5082":{},"5083":{},"5084":{},"5085":{},"5086":{},"5087":{},"5088":{},"5089":{},"5090":{},"5091":{},"5092":{},"5093":{},"5094":{},"5095":{},"5096":{},"5097":{},"5098":{},"5099":{},"5100":{},"5101":{},"5102":{},"5103":{},"5104":{},"5105":{},"5106":{},"5107":{},"5108":{},"5109":{},"5110":{},"5111":{},"5112":{},"5113":{},"5114":{},"5115":{},"5116":{},"5117":{},"5118":{},"5119":{},"5120":{},"5121":{},"5122":{},"5123":{},"5124":{},"5125":{},"5126":{},"5127":{},"5128":{},"5129":{},"5130":{},"5131":{},"5132":{},"5133":{},"5134":{},"5135":{},"5136":{},"5137":{},"5138":{},"5139":{},"5140":{},"5141":{},"5142":{},"5143":{},"5144":{},"5145":{},"5146":{},"5147":{}}}],["stroke",{"_index":297,"name":{"591":{},"1484":{},"2993":{},"3669":{},"5148":{},"5276":{},"6748":{}},"parent":{"5149":{},"5150":{},"5151":{},"5159":{},"5160":{},"5161":{},"5162":{},"5163":{},"5164":{},"5165":{},"5167":{},"5168":{},"5169":{},"5170":{},"5171":{},"5172":{},"5173":{},"5174":{},"5175":{},"5176":{},"5177":{},"5178":{},"5179":{},"5180":{},"5181":{},"5182":{},"5183":{},"5184":{},"5185":{},"5186":{},"5187":{},"5188":{},"5189":{},"5190":{},"5191":{},"5192":{},"5193":{},"5194":{},"5195":{},"5196":{},"5197":{},"5198":{},"5199":{},"5200":{},"5201":{},"5202":{},"5203":{},"5204":{},"5205":{},"5206":{},"5207":{},"5208":{},"5209":{},"5210":{},"5211":{},"5212":{},"5213":{},"5214":{},"5215":{},"5216":{},"5217":{},"5218":{},"5219":{},"5220":{},"5221":{}}}],["stroke.__type",{"_index":1169,"name":{},"parent":{"5152":{},"5153":{},"5154":{},"5155":{},"5156":{},"5157":{},"5158":{},"5166":{}}}],["stroke_px",{"_index":124,"name":{"259":{},"832":{},"973":{},"1797":{},"2041":{},"2156":{},"2266":{},"2490":{},"2686":{},"3045":{},"3215":{},"3730":{},"4287":{},"4395":{},"4971":{},"5364":{},"5437":{},"5847":{},"6032":{},"6439":{}},"parent":{}}],["strokestyle",{"_index":304,"name":{"598":{},"1319":{},"3679":{},"5282":{}},"parent":{}}],["style",{"_index":574,"name":{"1550":{},"3161":{}},"parent":{}}],["subscript",{"_index":317,"name":{"626":{},"5995":{}},"parent":{}}],["subscriptoffset",{"_index":329,"name":{"644":{},"661":{},"5967":{}},"parent":{}}],["subtract",{"_index":658,"name":{"1664":{}},"parent":{}}],["success",{"_index":920,"name":{"3536":{}},"parent":{}}],["superscript",{"_index":318,"name":{"627":{},"5758":{},"5996":{}},"parent":{}}],["superscriptoffset",{"_index":328,"name":{"643":{},"660":{},"5966":{}},"parent":{}}],["supersubratio",{"_index":320,"name":{"635":{}},"parent":{}}],["sval",{"_index":416,"name":{"1227":{}},"parent":{}}],["svg",{"_index":967,"name":{"3687":{},"5232":{}},"parent":{}}],["svgcontext",{"_index":532,"name":{"1485":{},"5228":{}},"parent":{"5229":{},"5230":{},"5231":{},"5232":{},"5233":{},"5234":{},"5235":{},"5236":{},"5237":{},"5240":{},"5241":{},"5242":{},"5243":{},"5244":{},"5245":{},"5246":{},"5247":{},"5248":{},"5249":{},"5250":{},"5251":{},"5252":{},"5253":{},"5254":{},"5255":{},"5256":{},"5257":{},"5258":{},"5259":{},"5260":{},"5261":{},"5262":{},"5263":{},"5264":{},"5265":{},"5266":{},"5267":{},"5268":{},"5269":{},"5270":{},"5271":{},"5272":{},"5273":{},"5274":{},"5275":{},"5276":{},"5277":{},"5278":{},"5279":{},"5280":{},"5281":{},"5282":{},"5283":{},"5284":{},"5285":{},"5286":{}}}],["svgcontext.__type",{"_index":1182,"name":{},"parent":{"5238":{},"5239":{}}}],["symbol_spacing",{"_index":827,"name":{"2887":{}},"parent":{}}],["symbolmodifier",{"_index":308,"name":{"606":{}},"parent":{}}],["symbolmodifiers",{"_index":315,"name":{"624":{},"648":{},"1510":{}},"parent":{"625":{},"626":{},"627":{}}}],["symboltype",{"_index":307,"name":{"605":{}},"parent":{}}],["symboltypes",{"_index":314,"name":{"620":{},"647":{},"1509":{}},"parent":{"621":{},"622":{},"623":{}}}],["system",{"_index":510,"name":{"1418":{},"1486":{},"5313":{},"6749":{}},"parent":{"5314":{},"5315":{},"5316":{},"5317":{},"5318":{},"5319":{},"5320":{},"5321":{},"5322":{},"5323":{},"5324":{},"5325":{},"5326":{},"5327":{},"5328":{},"5329":{},"5330":{},"5331":{},"5332":{},"5333":{},"5334":{},"5335":{},"5336":{},"5337":{},"5338":{},"5339":{},"5340":{},"5341":{},"5342":{},"5343":{},"5344":{},"5345":{},"5346":{},"5347":{},"5348":{},"5349":{},"5350":{},"5351":{},"5352":{},"5353":{},"5354":{}}}],["systemformatteroptions",{"_index":1190,"name":{"5287":{}},"parent":{"5288":{},"5289":{},"5290":{},"5291":{}}}],["systemoptions",{"_index":1198,"name":{"5300":{}},"parent":{"5301":{},"5302":{},"5303":{},"5304":{},"5305":{},"5306":{},"5307":{},"5308":{},"5309":{},"5310":{},"5311":{},"5312":{}}}],["systemstave",{"_index":1192,"name":{"5292":{}},"parent":{"5293":{},"5294":{},"5295":{},"5296":{},"5297":{},"5298":{},"5299":{}}}],["tablature_font_scale",{"_index":556,"name":{"1529":{}},"parent":{}}],["tabnote",{"_index":494,"name":{"1394":{},"1487":{},"5375":{},"6750":{}},"parent":{"5376":{},"5377":{},"5378":{},"5379":{},"5380":{},"5381":{},"5382":{},"5383":{},"5384":{},"5385":{},"5386":{},"5387":{},"5388":{},"5389":{},"5390":{},"5391":{},"5392":{},"5393":{},"5394":{},"5395":{},"5396":{},"5397":{},"5398":{},"5399":{},"5400":{},"5401":{},"5402":{},"5403":{},"5404":{},"5405":{},"5406":{},"5407":{},"5408":{},"5409":{},"5410":{},"5411":{},"5412":{},"5413":{},"5414":{},"5415":{},"5416":{},"5417":{},"5418":{},"5419":{},"5420":{},"5421":{},"5422":{},"5423":{},"5424":{},"5438":{},"5439":{},"5440":{},"5441":{},"5442":{},"5443":{},"5444":{},"5445":{},"5446":{},"5447":{},"5448":{},"5449":{},"5450":{},"5451":{},"5452":{},"5453":{},"5454":{},"5455":{},"5456":{},"5457":{},"5458":{},"5459":{},"5460":{},"5461":{},"5462":{},"5463":{},"5464":{},"5465":{},"5466":{},"5467":{},"5468":{},"5469":{},"5470":{},"5471":{},"5472":{},"5473":{},"5474":{},"5475":{},"5476":{},"5477":{},"5478":{},"5479":{},"5480":{},"5481":{},"5482":{},"5483":{},"5484":{},"5485":{},"5486":{},"5487":{},"5488":{},"5489":{},"5490":{},"5491":{},"5492":{},"5493":{},"5494":{},"5495":{},"5496":{},"5497":{},"5498":{},"5499":{},"5500":{},"5501":{},"5502":{},"5503":{},"5504":{},"5505":{},"5506":{},"5507":{},"5508":{},"5509":{},"5510":{},"5511":{},"5512":{},"5513":{},"5514":{},"5515":{},"5516":{},"5517":{},"5518":{},"5519":{},"5520":{},"5521":{},"5522":{},"5523":{},"5524":{},"5525":{},"5526":{},"5527":{},"5528":{},"5529":{},"5530":{},"5531":{},"5532":{},"5533":{},"5534":{},"5535":{},"5536":{},"5537":{}}}],["tabnote.__type",{"_index":1213,"name":{},"parent":{"5425":{},"5426":{},"5427":{},"5428":{},"5429":{},"5430":{},"5431":{},"5432":{},"5433":{},"5434":{},"5435":{},"5436":{},"5437":{}}}],["tabnote_stem_down_extension",{"_index":704,"name":{"1917":{}},"parent":{}}],["tabnote_stem_up_extension",{"_index":705,"name":{"1918":{}},"parent":{}}],["tabnoteposition",{"_index":1208,"name":{"5355":{}},"parent":{"5356":{},"5357":{}}}],["tabnotestruct",{"_index":1211,"name":{"5358":{}},"parent":{"5359":{},"5360":{},"5361":{},"5362":{},"5363":{},"5364":{},"5365":{},"5366":{},"5367":{},"5368":{},"5369":{},"5370":{},"5371":{},"5372":{},"5373":{},"5374":{}}}],["tabslide",{"_index":533,"name":{"1488":{},"5538":{},"6751":{}},"parent":{"5539":{},"5540":{},"5541":{},"5542":{},"5543":{},"5544":{},"5545":{},"5546":{},"5547":{},"5548":{},"5549":{},"5550":{},"5558":{},"5559":{},"5560":{},"5561":{},"5562":{},"5563":{},"5564":{},"5565":{},"5566":{},"5567":{},"5568":{},"5569":{},"5570":{},"5571":{},"5572":{},"5573":{},"5574":{},"5575":{},"5576":{},"5577":{},"5578":{},"5579":{},"5580":{},"5581":{},"5582":{},"5583":{},"5584":{},"5585":{},"5586":{},"5587":{},"5588":{},"5589":{},"5590":{},"5591":{},"5592":{},"5593":{},"5594":{},"5595":{}}}],["tabslide.__type",{"_index":1220,"name":{},"parent":{"5551":{},"5552":{},"5553":{},"5554":{},"5555":{},"5556":{},"5557":{}}}],["tabstave",{"_index":486,"name":{"1384":{},"1489":{},"5596":{},"6752":{}},"parent":{"5597":{},"5598":{},"5599":{},"5600":{},"5601":{},"5602":{},"5603":{},"5604":{},"5605":{},"5606":{},"5607":{},"5608":{},"5609":{},"5610":{},"5611":{},"5612":{},"5613":{},"5614":{},"5615":{},"5616":{},"5617":{},"5618":{},"5619":{},"5620":{},"5621":{},"5622":{},"5623":{},"5624":{},"5625":{},"5626":{},"5627":{},"5628":{},"5629":{},"5630":{},"5631":{},"5632":{},"5633":{},"5634":{},"5635":{},"5636":{},"5637":{},"5638":{},"5639":{},"5640":{},"5641":{},"5642":{},"5643":{},"5644":{},"5645":{},"5646":{},"5647":{},"5648":{},"5649":{},"5650":{},"5651":{},"5652":{},"5653":{},"5654":{},"5655":{},"5656":{},"5657":{},"5658":{},"5659":{},"5660":{},"5661":{},"5662":{},"5663":{},"5664":{},"5665":{},"5666":{},"5667":{},"5668":{},"5669":{},"5670":{},"5671":{},"5672":{},"5673":{},"5674":{},"5675":{},"5676":{},"5677":{},"5678":{},"5679":{},"5680":{},"5681":{},"5682":{},"5683":{},"5684":{},"5685":{},"5686":{},"5687":{},"5688":{},"5689":{},"5690":{},"5691":{},"5692":{},"5693":{},"5694":{},"5695":{},"5696":{},"5697":{},"5698":{},"5699":{}}}],["tabtie",{"_index":534,"name":{"1490":{},"5700":{},"6753":{}},"parent":{"5701":{},"5702":{},"5703":{},"5704":{},"5705":{},"5706":{},"5707":{},"5715":{},"5716":{},"5717":{},"5718":{},"5719":{},"5720":{},"5721":{},"5722":{},"5723":{},"5724":{},"5725":{},"5726":{},"5727":{},"5728":{},"5729":{},"5730":{},"5731":{},"5732":{},"5733":{},"5734":{},"5735":{},"5736":{},"5737":{},"5738":{},"5739":{},"5740":{},"5741":{},"5742":{},"5743":{},"5744":{},"5745":{},"5746":{},"5747":{},"5748":{},"5749":{},"5750":{},"5751":{},"5752":{},"5753":{}}}],["tabtie.__type",{"_index":1222,"name":{},"parent":{"5708":{},"5709":{},"5710":{},"5711":{},"5712":{},"5713":{},"5714":{}}}],["tcontexts",{"_index":1267,"name":{"6249":{}},"parent":{}}],["text",{"_index":230,"name":{"448":{},"604":{},"622":{},"1916":{},"3565":{},"5757":{},"5990":{}},"parent":{}}],["text_font",{"_index":16,"name":{"16":{},"92":{},"171":{},"235":{},"377":{},"455":{},"656":{},"745":{},"806":{},"949":{},"1098":{},"1145":{},"1323":{},"1373":{},"1683":{},"1750":{},"1952":{},"2017":{},"2178":{},"2366":{},"2431":{},"2602":{},"2664":{},"2805":{},"2900":{},"3026":{},"3182":{},"3325":{},"3394":{},"3465":{},"3561":{},"3706":{},"3855":{},"3969":{},"4027":{},"4087":{},"4135":{},"4210":{},"4308":{},"4491":{},"4564":{},"4625":{},"4684":{},"4746":{},"4805":{},"4878":{},"4929":{},"5081":{},"5159":{},"5315":{},"5378":{},"5540":{},"5598":{},"5704":{},"5766":{},"5825":{},"6006":{},"6156":{},"6285":{},"6357":{},"6417":{},"6552":{},"6635":{},"6799":{},"6861":{},"6917":{}},"parent":{}}],["text_justification",{"_index":1077,"name":{"4155":{}},"parent":{}}],["text_line",{"_index":814,"name":{"2864":{}},"parent":{}}],["text_margin_right",{"_index":944,"name":{"3577":{}},"parent":{}}],["text_position_vertical",{"_index":1076,"name":{"4154":{}},"parent":{}}],["text_shift_x",{"_index":1135,"name":{"4755":{},"5556":{},"5713":{}},"parent":{}}],["textbracket",{"_index":509,"name":{"1417":{},"1491":{},"5763":{},"6754":{}},"parent":{"5764":{},"5765":{},"5766":{},"5767":{},"5768":{},"5769":{},"5770":{},"5771":{},"5772":{},"5773":{},"5781":{},"5782":{},"5783":{},"5784":{},"5785":{},"5786":{},"5787":{},"5788":{},"5789":{},"5790":{},"5791":{},"5792":{},"5793":{},"5794":{},"5795":{},"5796":{},"5797":{},"5798":{},"5799":{},"5800":{},"5801":{},"5802":{},"5803":{},"5804":{},"5805":{},"5806":{},"5807":{},"5808":{},"5809":{},"5810":{},"5811":{},"5812":{},"5813":{},"5814":{},"5815":{},"5816":{},"5817":{},"5818":{},"5819":{}}}],["textbracket.__type",{"_index":1228,"name":{},"parent":{"5774":{},"5775":{},"5776":{},"5777":{},"5778":{},"5779":{},"5780":{}}}],["textbracketparams",{"_index":1223,"name":{"5754":{}},"parent":{"5755":{},"5756":{},"5757":{},"5758":{},"5759":{}}}],["textbracketposition",{"_index":547,"name":{"1520":{},"5760":{}},"parent":{"5761":{},"5762":{}}}],["textdynamics",{"_index":498,"name":{"1402":{},"1492":{},"5820":{},"6755":{}},"parent":{"5821":{},"5822":{},"5823":{},"5824":{},"5825":{},"5826":{},"5827":{},"5828":{},"5829":{},"5830":{},"5831":{},"5832":{},"5833":{},"5834":{},"5848":{},"5849":{},"5850":{},"5851":{},"5852":{},"5853":{},"5854":{},"5855":{},"5856":{},"5857":{},"5858":{},"5859":{},"5860":{},"5861":{},"5862":{},"5863":{},"5864":{},"5865":{},"5866":{},"5867":{},"5868":{},"5869":{},"5870":{},"5871":{},"5872":{},"5873":{},"5874":{},"5875":{},"5876":{},"5877":{},"5878":{},"5879":{},"5880":{},"5881":{},"5882":{},"5883":{},"5884":{},"5885":{},"5886":{},"5887":{},"5888":{},"5889":{},"5890":{},"5891":{},"5892":{},"5893":{},"5894":{},"5895":{},"5896":{},"5897":{},"5898":{},"5899":{},"5900":{},"5901":{},"5902":{},"5903":{},"5904":{},"5905":{},"5906":{},"5907":{},"5908":{},"5909":{},"5910":{},"5911":{},"5912":{},"5913":{},"5914":{},"5915":{},"5916":{},"5917":{},"5918":{},"5919":{},"5920":{},"5921":{},"5922":{},"5923":{},"5924":{},"5925":{},"5926":{},"5927":{},"5928":{},"5929":{},"5930":{},"5931":{},"5932":{},"5933":{},"5934":{},"5935":{},"5936":{},"5937":{},"5938":{},"5939":{},"5940":{},"5941":{},"5942":{},"5943":{},"5944":{},"5945":{},"5946":{},"5947":{},"5948":{},"5949":{},"5950":{},"5951":{},"5952":{},"5953":{},"5954":{},"5955":{},"5956":{}}}],["textdynamics.__type",{"_index":1232,"name":{},"parent":{"5835":{},"5836":{},"5837":{},"5838":{},"5839":{},"5840":{},"5841":{},"5842":{},"5843":{},"5844":{},"5845":{},"5846":{},"5847":{}}}],["textformatter",{"_index":535,"name":{"1493":{},"5969":{}},"parent":{"5970":{},"5971":{},"5972":{},"5973":{},"5974":{},"5975":{},"5976":{},"5977":{},"5978":{},"5979":{},"5980":{},"5981":{},"5982":{},"5983":{},"5984":{}}}],["textformatterinfo",{"_index":1233,"name":{"5957":{}},"parent":{"5958":{},"5959":{},"5960":{},"5961":{},"5962":{},"5963":{},"5964":{},"5965":{},"5966":{},"5967":{},"5968":{}}}],["textheight",{"_index":273,"name":{"566":{}},"parent":{}}],["textjustification",{"_index":548,"name":{"1521":{},"4140":{},"5985":{}},"parent":{"5986":{},"5987":{},"5988":{}}}],["textmeasure",{"_index":963,"name":{"3638":{}},"parent":{"3639":{},"3640":{},"3641":{},"3642":{}}}],["textnote",{"_index":491,"name":{"1389":{},"1494":{},"6004":{},"6756":{}},"parent":{"6005":{},"6006":{},"6007":{},"6008":{},"6009":{},"6010":{},"6011":{},"6012":{},"6013":{},"6014":{},"6015":{},"6016":{},"6017":{},"6018":{},"6019":{},"6033":{},"6034":{},"6035":{},"6036":{},"6037":{},"6038":{},"6039":{},"6040":{},"6041":{},"6042":{},"6043":{},"6044":{},"6045":{},"6046":{},"6047":{},"6048":{},"6049":{},"6050":{},"6051":{},"6052":{},"6053":{},"6054":{},"6055":{},"6056":{},"6057":{},"6058":{},"6059":{},"6060":{},"6061":{},"6062":{},"6063":{},"6064":{},"6065":{},"6066":{},"6067":{},"6068":{},"6069":{},"6070":{},"6071":{},"6072":{},"6073":{},"6074":{},"6075":{},"6076":{},"6077":{},"6078":{},"6079":{},"6080":{},"6081":{},"6082":{},"6083":{},"6084":{},"6085":{},"6086":{},"6087":{},"6088":{},"6089":{},"6090":{},"6091":{},"6092":{},"6093":{},"6094":{},"6095":{},"6096":{},"6097":{},"6098":{},"6099":{},"6100":{},"6101":{},"6102":{},"6103":{},"6104":{},"6105":{},"6106":{},"6107":{},"6108":{},"6109":{},"6110":{},"6111":{},"6112":{},"6113":{},"6114":{},"6115":{},"6116":{},"6117":{},"6118":{},"6119":{},"6120":{},"6121":{},"6122":{},"6123":{},"6124":{},"6125":{},"6126":{},"6127":{},"6128":{},"6129":{},"6130":{},"6131":{},"6132":{},"6133":{},"6134":{},"6135":{},"6136":{},"6137":{},"6138":{},"6139":{},"6140":{},"6141":{}}}],["textnote.__type",{"_index":1252,"name":{},"parent":{"6020":{},"6021":{},"6022":{},"6023":{},"6024":{},"6025":{},"6026":{},"6027":{},"6028":{},"6029":{},"6030":{},"6031":{},"6032":{}}}],["textnotestruct",{"_index":1248,"name":{"5989":{}},"parent":{"5990":{},"5991":{},"5992":{},"5993":{},"5994":{},"5995":{},"5996":{},"5997":{},"5998":{},"5999":{},"6000":{},"6001":{},"6002":{},"6003":{}}}],["textverticalposition",{"_index":1068,"name":{"4136":{}},"parent":{}}],["thickness",{"_index":383,"name":{"1085":{},"4033":{}},"parent":{}}],["throwonerror",{"_index":454,"name":{"1287":{}},"parent":{}}],["tickable",{"_index":1260,"name":{"6154":{},"6757":{}},"parent":{"6155":{},"6156":{},"6157":{},"6158":{},"6159":{},"6160":{},"6161":{},"6162":{},"6163":{},"6164":{},"6165":{},"6166":{},"6167":{},"6168":{},"6169":{},"6170":{},"6171":{},"6172":{},"6173":{},"6174":{},"6175":{},"6176":{},"6177":{},"6178":{},"6179":{},"6180":{},"6181":{},"6182":{},"6183":{},"6184":{},"6185":{},"6186":{},"6187":{},"6188":{},"6189":{},"6190":{},"6191":{},"6192":{},"6193":{},"6194":{},"6195":{},"6196":{},"6197":{},"6198":{},"6199":{},"6200":{},"6201":{},"6202":{},"6203":{},"6204":{},"6205":{},"6206":{},"6207":{},"6208":{},"6209":{},"6210":{},"6211":{},"6212":{},"6213":{},"6214":{},"6215":{},"6216":{},"6217":{},"6218":{},"6219":{},"6220":{},"6221":{},"6222":{},"6223":{},"6224":{},"6225":{},"6226":{},"6227":{},"6228":{},"6229":{},"6230":{},"6231":{},"6232":{}}}],["tickcontext",{"_index":501,"name":{"1405":{},"1495":{},"6246":{}},"parent":{"6247":{},"6248":{},"6249":{},"6250":{},"6251":{},"6252":{},"6253":{},"6254":{},"6255":{},"6256":{},"6257":{},"6258":{},"6259":{},"6260":{},"6261":{},"6262":{},"6263":{},"6264":{},"6265":{},"6266":{},"6267":{},"6268":{},"6269":{},"6270":{},"6271":{},"6272":{},"6273":{}}}],["tickcontextmetrics",{"_index":1261,"name":{"6233":{}},"parent":{"6234":{},"6235":{},"6236":{},"6237":{},"6238":{},"6239":{},"6240":{},"6241":{},"6242":{},"6243":{}}}],["tickcontextoptions",{"_index":1264,"name":{"6244":{}},"parent":{"6245":{}}}],["tickid",{"_index":1265,"name":{"6245":{}},"parent":{}}],["ticks",{"_index":885,"name":{"3014":{}},"parent":{}}],["tie_spacing",{"_index":1132,"name":{"4752":{},"5553":{},"5710":{}},"parent":{}}],["tienotes",{"_index":1128,"name":{"4739":{}},"parent":{"4740":{},"4741":{},"4742":{},"4743":{}}}],["time",{"_index":456,"name":{"1290":{}},"parent":{}}],["time4_4",{"_index":563,"name":{"1536":{}},"parent":{}}],["timesignature",{"_index":536,"name":{"1496":{},"6287":{},"6353":{},"6758":{}},"parent":{"6354":{},"6355":{},"6356":{},"6357":{},"6358":{},"6359":{},"6360":{},"6361":{},"6362":{},"6363":{},"6364":{},"6365":{},"6366":{},"6367":{},"6368":{},"6369":{},"6370":{},"6371":{},"6372":{},"6373":{},"6374":{},"6375":{},"6376":{},"6377":{},"6378":{},"6379":{},"6380":{},"6381":{},"6382":{},"6383":{},"6384":{},"6385":{},"6386":{},"6387":{},"6388":{},"6389":{},"6390":{},"6391":{},"6392":{},"6393":{},"6394":{},"6395":{},"6396":{},"6397":{},"6398":{},"6399":{},"6400":{},"6401":{},"6402":{},"6403":{},"6404":{},"6405":{},"6406":{},"6407":{},"6408":{},"6409":{},"6410":{},"6411":{},"6412":{},"6413":{}}}],["timesignatureglyph",{"_index":1284,"name":{"6274":{}},"parent":{"6275":{},"6276":{},"6277":{},"6278":{},"6279":{},"6280":{},"6281":{},"6282":{},"6283":{},"6284":{},"6285":{},"6286":{},"6287":{},"6288":{},"6289":{},"6290":{},"6291":{},"6292":{},"6293":{},"6294":{},"6295":{},"6296":{},"6297":{},"6298":{},"6299":{},"6300":{},"6301":{},"6302":{},"6303":{},"6304":{},"6305":{},"6306":{},"6307":{},"6308":{},"6309":{},"6310":{},"6311":{},"6312":{},"6313":{},"6314":{},"6315":{},"6316":{},"6317":{},"6318":{},"6319":{},"6320":{},"6321":{},"6322":{},"6323":{},"6324":{},"6325":{},"6326":{},"6327":{},"6328":{},"6329":{},"6330":{},"6331":{},"6332":{},"6333":{},"6334":{},"6335":{},"6336":{},"6337":{},"6338":{},"6339":{},"6340":{},"6341":{},"6342":{},"6343":{},"6344":{},"6345":{},"6346":{},"6347":{},"6348":{}}}],["timesignatureinfo",{"_index":1287,"name":{"6349":{}},"parent":{"6350":{},"6351":{},"6352":{}}}],["timesignote",{"_index":492,"name":{"1392":{},"1497":{},"6414":{},"6759":{}},"parent":{"6415":{},"6416":{},"6417":{},"6418":{},"6419":{},"6420":{},"6421":{},"6422":{},"6423":{},"6424":{},"6425":{},"6426":{},"6440":{},"6441":{},"6442":{},"6443":{},"6444":{},"6445":{},"6446":{},"6447":{},"6448":{},"6449":{},"6450":{},"6451":{},"6452":{},"6453":{},"6454":{},"6455":{},"6456":{},"6457":{},"6458":{},"6459":{},"6460":{},"6461":{},"6462":{},"6463":{},"6464":{},"6465":{},"6466":{},"6467":{},"6468":{},"6469":{},"6470":{},"6471":{},"6472":{},"6473":{},"6474":{},"6475":{},"6476":{},"6477":{},"6478":{},"6479":{},"6480":{},"6481":{},"6482":{},"6483":{},"6484":{},"6485":{},"6486":{},"6487":{},"6488":{},"6489":{},"6490":{},"6491":{},"6492":{},"6493":{},"6494":{},"6495":{},"6496":{},"6497":{},"6498":{},"6499":{},"6500":{},"6501":{},"6502":{},"6503":{},"6504":{},"6505":{},"6506":{},"6507":{},"6508":{},"6509":{},"6510":{},"6511":{},"6512":{},"6513":{},"6514":{},"6515":{},"6516":{},"6517":{},"6518":{},"6519":{},"6520":{},"6521":{},"6522":{},"6523":{},"6524":{},"6525":{},"6526":{},"6527":{},"6528":{},"6529":{},"6530":{},"6531":{},"6532":{},"6533":{},"6534":{},"6535":{},"6536":{},"6537":{},"6538":{},"6539":{},"6540":{},"6541":{},"6542":{},"6543":{},"6544":{},"6545":{},"6546":{},"6547":{}}}],["timesignote.__type",{"_index":1294,"name":{},"parent":{"6427":{},"6428":{},"6429":{},"6430":{},"6431":{},"6432":{},"6433":{},"6434":{},"6435":{},"6436":{},"6437":{},"6438":{},"6439":{}}}],["to_coda",{"_index":1116,"name":{"4506":{}},"parent":{}}],["tocssstring",{"_index":605,"name":{"1597":{}},"parent":{}}],["token",{"_index":911,"name":{"3527":{}},"parent":{}}],["tomixedstring",{"_index":669,"name":{"1679":{}},"parent":{}}],["top",{"_index":85,"name":{"85":{},"618":{},"4138":{},"5761":{},"6628":{}},"parent":{}}],["top_stave",{"_index":1050,"name":{"4031":{}},"parent":{}}],["top_text_line",{"_index":815,"name":{"2865":{}},"parent":{}}],["top_text_position",{"_index":987,"name":{"3851":{}},"parent":{}}],["topglyphs",{"_index":723,"name":{"1957":{},"6297":{}},"parent":{}}],["topline",{"_index":1290,"name":{"6361":{}},"parent":{}}],["topstartx",{"_index":1285,"name":{"6288":{}},"parent":{}}],["tosimplifiedstring",{"_index":668,"name":{"1678":{}},"parent":{}}],["tostring",{"_index":622,"name":{"1615":{},"1677":{}},"parent":{}}],["totalleftpx",{"_index":1262,"name":{"6234":{}},"parent":{}}],["totalrightpx",{"_index":1263,"name":{"6235":{}},"parent":{}}],["tremolo",{"_index":537,"name":{"1498":{},"1569":{},"6548":{},"6760":{}},"parent":{"6549":{},"6550":{},"6551":{},"6552":{},"6553":{},"6554":{},"6555":{},"6556":{},"6557":{},"6558":{},"6559":{},"6560":{},"6561":{},"6562":{},"6563":{},"6564":{},"6565":{},"6566":{},"6567":{},"6568":{},"6569":{},"6570":{},"6571":{},"6572":{},"6573":{},"6574":{},"6575":{},"6576":{},"6577":{},"6578":{},"6579":{},"6580":{},"6581":{},"6582":{},"6583":{},"6584":{},"6585":{},"6586":{},"6587":{},"6588":{},"6589":{},"6590":{},"6591":{},"6592":{},"6593":{},"6594":{},"6595":{},"6596":{},"6597":{},"6598":{},"6599":{},"6600":{},"6601":{},"6602":{},"6603":{},"6604":{},"6605":{},"6606":{},"6607":{},"6608":{},"6609":{}}}],["triggerfunction",{"_index":909,"name":{"3524":{}},"parent":{"3525":{}}}],["tune",{"_index":648,"name":{"1646":{}},"parent":{}}],["tuning",{"_index":538,"name":{"1499":{},"6610":{}},"parent":{"6611":{},"6612":{},"6613":{},"6614":{},"6615":{},"6616":{},"6617":{}}}],["tuplet",{"_index":464,"name":{"1306":{},"1411":{},"1500":{},"6629":{},"6761":{}},"parent":{"6630":{},"6631":{},"6632":{},"6633":{},"6634":{},"6635":{},"6636":{},"6637":{},"6638":{},"6639":{},"6640":{},"6641":{},"6642":{},"6643":{},"6644":{},"6645":{},"6646":{},"6647":{},"6648":{},"6649":{},"6650":{},"6651":{},"6652":{},"6653":{},"6654":{},"6655":{},"6656":{},"6657":{},"6658":{},"6659":{},"6660":{},"6661":{},"6662":{},"6663":{},"6664":{},"6665":{},"6666":{},"6667":{},"6668":{},"6669":{},"6670":{},"6671":{},"6672":{},"6673":{},"6674":{},"6675":{},"6676":{},"6677":{},"6678":{},"6679":{},"6680":{},"6681":{},"6682":{},"6683":{},"6684":{},"6685":{},"6686":{}}}],["tupletlocation",{"_index":1311,"name":{"6626":{}},"parent":{"6627":{},"6628":{}}}],["tupletoptions",{"_index":1303,"name":{"6618":{}},"parent":{"6619":{},"6620":{},"6621":{},"6622":{},"6623":{},"6624":{},"6625":{}}}],["type",{"_index":18,"name":{"18":{},"173":{},"447":{},"1219":{},"1253":{},"1313":{},"2164":{},"2952":{},"3008":{},"3011":{},"3020":{},"3175":{},"3563":{},"3966":{},"4028":{},"4082":{},"4295":{},"4492":{},"4804":{},"5150":{},"5372":{},"6001":{}},"parent":{}}],["types",{"_index":361,"name":{"743":{},"1233":{}},"parent":{}}],["typestring",{"_index":938,"name":{"3568":{},"3967":{},"4029":{}},"parent":{}}],["underline_superscript",{"_index":1229,"name":{"5777":{}},"parent":{}}],["unicode",{"_index":565,"name":{"1538":{}},"parent":{}}],["unsetpartialbeamsideat",{"_index":220,"name":{"401":{}},"parent":{}}],["up",{"_index":233,"name":{"453":{},"3690":{},"4874":{}},"parent":{}}],["updatecachekey",{"_index":1242,"name":{"5976":{}},"parent":{}}],["updateindex",{"_index":955,"name":{"3630":{}},"parent":{}}],["updatekerningadjustments",{"_index":341,"name":{"665":{}},"parent":{}}],["updateoverbaradjustments",{"_index":340,"name":{"664":{}},"parent":{}}],["updateparams",{"_index":1241,"name":{"5975":{}},"parent":{}}],["updatewidth",{"_index":789,"name":{"2439":{},"5386":{}},"parent":{}}],["upperkerningtext",{"_index":334,"name":{"651":{}},"parent":{}}],["use_symbols",{"_index":826,"name":{"2886":{}},"parent":{}}],["used",{"_index":1257,"name":{"6151":{}},"parent":{}}],["val",{"_index":413,"name":{"1224":{}},"parent":{}}],["validate",{"_index":603,"name":{"1595":{}},"parent":{}}],["valign",{"_index":311,"name":{"609":{}},"parent":{}}],["value",{"_index":656,"name":{"1661":{},"3621":{}},"parent":{}}],["vertical_bar_width",{"_index":983,"name":{"3846":{}},"parent":{}}],["verticaljustify",{"_index":90,"name":{"95":{},"633":{}},"parent":{}}],["verticaljustifystring",{"_index":91,"name":{"96":{},"634":{}},"parent":{}}],["vex",{"_index":1349,"name":{"6777":{}},"parent":{"6778":{},"6779":{},"6780":{},"6781":{},"6782":{},"6783":{},"6784":{},"6785":{},"6786":{}}}],["vibrato",{"_index":539,"name":{"1501":{},"6762":{},"6793":{}},"parent":{"6794":{},"6795":{},"6796":{},"6797":{},"6798":{},"6799":{},"6800":{},"6801":{},"6802":{},"6803":{},"6804":{},"6805":{},"6806":{},"6807":{},"6808":{},"6809":{},"6810":{},"6811":{},"6812":{},"6813":{},"6814":{},"6815":{},"6816":{},"6817":{},"6818":{},"6819":{},"6820":{},"6821":{},"6822":{},"6823":{},"6824":{},"6825":{},"6826":{},"6827":{},"6828":{},"6829":{},"6830":{},"6831":{},"6832":{},"6833":{},"6834":{},"6835":{},"6836":{},"6837":{},"6838":{},"6839":{},"6840":{},"6841":{},"6842":{},"6843":{},"6844":{},"6845":{},"6846":{},"6847":{},"6848":{},"6849":{},"6850":{},"6851":{},"6852":{},"6853":{},"6854":{},"6855":{},"6856":{},"6857":{}}}],["vibrato_width",{"_index":1358,"name":{"6790":{},"6865":{}},"parent":{}}],["vibratobracket",{"_index":508,"name":{"1416":{},"1502":{},"6763":{},"6858":{}},"parent":{"6859":{},"6860":{},"6861":{},"6862":{},"6863":{},"6864":{},"6870":{},"6871":{},"6872":{},"6873":{},"6874":{},"6875":{},"6876":{},"6877":{},"6878":{},"6879":{},"6880":{},"6881":{},"6882":{},"6883":{},"6884":{},"6885":{},"6886":{},"6887":{},"6888":{},"6889":{},"6890":{},"6891":{},"6892":{},"6893":{},"6894":{},"6895":{},"6896":{},"6897":{},"6898":{},"6899":{},"6900":{},"6901":{},"6902":{},"6903":{},"6904":{},"6905":{}}}],["vibratobracket.__type",{"_index":1364,"name":{},"parent":{"6865":{},"6866":{},"6867":{},"6868":{},"6869":{}}}],["vibratorenderoptions",{"_index":1355,"name":{"6787":{}},"parent":{"6788":{},"6789":{},"6790":{},"6791":{},"6792":{}}}],["visible",{"_index":977,"name":{"3840":{}},"parent":{}}],["voice",{"_index":465,"name":{"1308":{},"1408":{},"1503":{},"6764":{},"6914":{}},"parent":{"6915":{},"6916":{},"6917":{},"6918":{},"6919":{},"6920":{},"6921":{},"6922":{},"6923":{},"6924":{},"6925":{},"6926":{},"6927":{},"6928":{},"6929":{},"6930":{},"6931":{},"6932":{},"6933":{},"6934":{},"6935":{},"6936":{},"6937":{},"6938":{},"6939":{},"6940":{},"6941":{},"6942":{},"6943":{},"6944":{},"6945":{},"6946":{},"6947":{},"6948":{},"6949":{},"6950":{},"6951":{},"6952":{},"6953":{},"6954":{},"6955":{},"6956":{},"6957":{},"6958":{},"6959":{},"6960":{},"6961":{},"6962":{},"6963":{},"6964":{},"6965":{},"6966":{},"6967":{},"6968":{},"6969":{},"6970":{},"6971":{}}}],["voice_shift",{"_index":1100,"name":{"4279":{}},"parent":{}}],["voicemode",{"_index":549,"name":{"1522":{},"6910":{}},"parent":{"6911":{},"6912":{},"6913":{}}}],["voices",{"_index":1193,"name":{"5293":{}},"parent":{}}],["voicetime",{"_index":1365,"name":{"6906":{}},"parent":{"6907":{},"6908":{},"6909":{}}}],["volta",{"_index":540,"name":{"1504":{},"4802":{},"6765":{}},"parent":{"4803":{},"4804":{},"4805":{},"4806":{},"4807":{},"4808":{},"4809":{},"4810":{},"4811":{},"4812":{},"4813":{},"4814":{},"4815":{},"4816":{},"4817":{},"4818":{},"4819":{},"4820":{},"4821":{},"4822":{},"4823":{},"4824":{},"4825":{},"4826":{},"4827":{},"4828":{},"4829":{},"4830":{},"4831":{},"4832":{},"4833":{},"4834":{},"4835":{},"4836":{},"4837":{},"4838":{},"4839":{},"4840":{},"4841":{},"4842":{},"4843":{},"4844":{},"4845":{},"4846":{},"4847":{},"4848":{},"4849":{},"4850":{},"4851":{},"4852":{},"4853":{},"4854":{},"4855":{},"4856":{}}}],["voltatype",{"_index":546,"name":{"1519":{},"4796":{}},"parent":{"4797":{},"4798":{},"4799":{},"4800":{},"4801":{}}}],["w",{"_index":245,"name":{"526":{},"533":{}},"parent":{}}],["warn",{"_index":1344,"name":{"6769":{}},"parent":{}}],["wave_girth",{"_index":1357,"name":{"6789":{},"6867":{}},"parent":{}}],["wave_height",{"_index":1356,"name":{"6788":{},"6866":{}},"parent":{}}],["wave_width",{"_index":1360,"name":{"6792":{},"6869":{}},"parent":{}}],["web_font_files",{"_index":610,"name":{"1602":{}},"parent":{}}],["web_font_host",{"_index":609,"name":{"1601":{}},"parent":{}}],["weight",{"_index":573,"name":{"1549":{}},"parent":{}}],["width",{"_index":7,"name":{"7":{},"449":{},"550":{},"558":{},"610":{},"1367":{},"1915":{},"1926":{},"2867":{},"2997":{},"3641":{},"4876":{},"5233":{},"5308":{},"6236":{},"6290":{}},"parent":{}}],["x",{"_index":229,"name":{"446":{},"524":{},"531":{},"3169":{},"3639":{},"5238":{},"5307":{}},"parent":{}}],["x_begin",{"_index":1151,"name":{"4870":{}},"parent":{}}],["x_end",{"_index":1150,"name":{"4869":{}},"parent":{}}],["x_max",{"_index":587,"name":{"1574":{},"1929":{}},"parent":{}}],["x_min",{"_index":586,"name":{"1573":{},"1928":{}},"parent":{}}],["x_shift",{"_index":363,"name":{"751":{},"1086":{},"1930":{},"3165":{}},"parent":{}}],["xmax",{"_index":1082,"name":{"4196":{}},"parent":{}}],["xmin",{"_index":1081,"name":{"4195":{},"6291":{}},"parent":{}}],["xshift",{"_index":309,"name":{"607":{}},"parent":{}}],["y",{"_index":244,"name":{"525":{},"532":{},"942":{},"3170":{},"3640":{},"5239":{},"5309":{}},"parent":{}}],["y_bottom",{"_index":1087,"name":{"4262":{},"4867":{}},"parent":{}}],["y_max",{"_index":589,"name":{"1576":{}},"parent":{}}],["y_min",{"_index":588,"name":{"1575":{}},"parent":{}}],["y_offset",{"_index":1310,"name":{"6625":{}},"parent":{}}],["y_shift",{"_index":117,"name":{"251":{},"824":{},"965":{},"1087":{},"1789":{},"1931":{},"2033":{},"2258":{},"2482":{},"2678":{},"3037":{},"3207":{},"3722":{},"4079":{},"4387":{},"4756":{},"4963":{},"5429":{},"5557":{},"5714":{},"5839":{},"6024":{},"6431":{}},"parent":{}}],["y_spacing_scale",{"_index":1295,"name":{"6554":{}},"parent":{}}],["y_top",{"_index":1086,"name":{"4261":{},"4868":{}},"parent":{}}],["yshift",{"_index":310,"name":{"608":{}},"parent":{}}],["zeroormore",{"_index":914,"name":{"3530":{}},"parent":{}}]],"pipeline":[]}} \ No newline at end of file +window.searchData = {"kinds":{"8":"Enumeration","16":"Enumeration member","32":"Variable","64":"Function","128":"Class","256":"Interface","512":"Constructor","1024":"Property","2048":"Method","65536":"Type literal","262144":"Accessor","4194304":"Type alias"},"rows":[{"id":0,"kind":4194304,"name":"Line","url":"modules.html#Line","classes":"tsd-kind-type-alias"},{"id":1,"kind":65536,"name":"__type","url":"modules.html#Line.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"Line"},{"id":2,"kind":1024,"name":"column","url":"modules.html#Line.__type.column","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Line.__type"},{"id":3,"kind":1024,"name":"line","url":"modules.html#Line.__type.line","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Line.__type"},{"id":4,"kind":1024,"name":"flatLine","url":"modules.html#Line.__type.flatLine","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Line.__type"},{"id":5,"kind":1024,"name":"dblSharpLine","url":"modules.html#Line.__type.dblSharpLine","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Line.__type"},{"id":6,"kind":1024,"name":"numAcc","url":"modules.html#Line.__type.numAcc","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Line.__type"},{"id":7,"kind":1024,"name":"width","url":"modules.html#Line.__type.width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Line.__type"},{"id":8,"kind":128,"name":"Accidental","url":"classes/Accidental.html","classes":"tsd-kind-class"},{"id":9,"kind":1024,"name":"DEBUG","url":"classes/Accidental.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Accidental"},{"id":10,"kind":262144,"name":"CATEGORY","url":"classes/Accidental.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Accidental"},{"id":11,"kind":2048,"name":"format","url":"classes/Accidental.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Accidental"},{"id":12,"kind":2048,"name":"checkCollision","url":"classes/Accidental.html#checkCollision","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Accidental"},{"id":13,"kind":2048,"name":"applyAccidentals","url":"classes/Accidental.html#applyAccidentals","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Accidental"},{"id":14,"kind":262144,"name":"Position","url":"classes/Accidental.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Accidental"},{"id":15,"kind":262144,"name":"PositionString","url":"classes/Accidental.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Accidental"},{"id":16,"kind":1024,"name":"TEXT_FONT","url":"classes/Accidental.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Accidental"},{"id":17,"kind":512,"name":"constructor","url":"classes/Accidental.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Accidental"},{"id":18,"kind":1024,"name":"type","url":"classes/Accidental.html#type","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Accidental"},{"id":19,"kind":1024,"name":"render_options","url":"classes/Accidental.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Accidental"},{"id":20,"kind":65536,"name":"__type","url":"classes/Accidental.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Accidental"},{"id":21,"kind":1024,"name":"parenLeftPadding","url":"classes/Accidental.html#__type.parenLeftPadding","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Accidental.__type"},{"id":22,"kind":1024,"name":"font_scale","url":"classes/Accidental.html#__type.font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Accidental.__type"},{"id":23,"kind":1024,"name":"parenRightPadding","url":"classes/Accidental.html#__type.parenRightPadding","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Accidental.__type"},{"id":24,"kind":2048,"name":"getWidth","url":"classes/Accidental.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Accidental"},{"id":25,"kind":2048,"name":"setNote","url":"classes/Accidental.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Accidental"},{"id":26,"kind":2048,"name":"setAsCautionary","url":"classes/Accidental.html#setAsCautionary","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Accidental"},{"id":27,"kind":2048,"name":"draw","url":"classes/Accidental.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Accidental"},{"id":28,"kind":2048,"name":"setWidth","url":"classes/Accidental.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":29,"kind":2048,"name":"getNote","url":"classes/Accidental.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":30,"kind":2048,"name":"checkAttachedNote","url":"classes/Accidental.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":31,"kind":2048,"name":"getIndex","url":"classes/Accidental.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":32,"kind":2048,"name":"checkIndex","url":"classes/Accidental.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":33,"kind":2048,"name":"setIndex","url":"classes/Accidental.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":34,"kind":2048,"name":"getModifierContext","url":"classes/Accidental.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":35,"kind":2048,"name":"checkModifierContext","url":"classes/Accidental.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":36,"kind":2048,"name":"setModifierContext","url":"classes/Accidental.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":37,"kind":2048,"name":"getPosition","url":"classes/Accidental.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":38,"kind":2048,"name":"setPosition","url":"classes/Accidental.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":39,"kind":2048,"name":"setTextLine","url":"classes/Accidental.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":40,"kind":2048,"name":"setYShift","url":"classes/Accidental.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":41,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/Accidental.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":42,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/Accidental.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":43,"kind":2048,"name":"setXShift","url":"classes/Accidental.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":44,"kind":2048,"name":"getXShift","url":"classes/Accidental.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":45,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/Accidental.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":46,"kind":2048,"name":"addChildElement","url":"classes/Accidental.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":47,"kind":2048,"name":"getCategory","url":"classes/Accidental.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":48,"kind":2048,"name":"setStyle","url":"classes/Accidental.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":49,"kind":2048,"name":"setGroupStyle","url":"classes/Accidental.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":50,"kind":2048,"name":"getStyle","url":"classes/Accidental.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":51,"kind":2048,"name":"applyStyle","url":"classes/Accidental.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":52,"kind":2048,"name":"restoreStyle","url":"classes/Accidental.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":53,"kind":2048,"name":"drawWithStyle","url":"classes/Accidental.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":54,"kind":2048,"name":"hasClass","url":"classes/Accidental.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":55,"kind":2048,"name":"addClass","url":"classes/Accidental.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":56,"kind":2048,"name":"removeClass","url":"classes/Accidental.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":57,"kind":2048,"name":"onRegister","url":"classes/Accidental.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":58,"kind":2048,"name":"isRendered","url":"classes/Accidental.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":59,"kind":2048,"name":"setRendered","url":"classes/Accidental.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":60,"kind":2048,"name":"getAttributes","url":"classes/Accidental.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":61,"kind":2048,"name":"getAttribute","url":"classes/Accidental.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":62,"kind":2048,"name":"getSVGElement","url":"classes/Accidental.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":63,"kind":2048,"name":"setAttribute","url":"classes/Accidental.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":64,"kind":2048,"name":"getBoundingBox","url":"classes/Accidental.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":65,"kind":2048,"name":"getContext","url":"classes/Accidental.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":66,"kind":2048,"name":"setContext","url":"classes/Accidental.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":67,"kind":2048,"name":"checkContext","url":"classes/Accidental.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":68,"kind":262144,"name":"font","url":"classes/Accidental.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":69,"kind":2048,"name":"setFont","url":"classes/Accidental.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":70,"kind":2048,"name":"getFont","url":"classes/Accidental.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":71,"kind":2048,"name":"resetFont","url":"classes/Accidental.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":72,"kind":262144,"name":"fontInfo","url":"classes/Accidental.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":73,"kind":2048,"name":"setFontSize","url":"classes/Accidental.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":74,"kind":2048,"name":"getFontSize","url":"classes/Accidental.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":75,"kind":262144,"name":"fontSize","url":"classes/Accidental.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":76,"kind":262144,"name":"fontSizeInPoints","url":"classes/Accidental.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":77,"kind":262144,"name":"fontSizeInPixels","url":"classes/Accidental.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":78,"kind":262144,"name":"fontStyle","url":"classes/Accidental.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":79,"kind":262144,"name":"fontWeight","url":"classes/Accidental.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Accidental"},{"id":80,"kind":8,"name":"AnnotationHorizontalJustify","url":"enums/AnnotationHorizontalJustify.html","classes":"tsd-kind-enum"},{"id":81,"kind":16,"name":"LEFT","url":"enums/AnnotationHorizontalJustify.html#LEFT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"AnnotationHorizontalJustify"},{"id":82,"kind":16,"name":"CENTER","url":"enums/AnnotationHorizontalJustify.html#CENTER","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"AnnotationHorizontalJustify"},{"id":83,"kind":16,"name":"RIGHT","url":"enums/AnnotationHorizontalJustify.html#RIGHT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"AnnotationHorizontalJustify"},{"id":84,"kind":16,"name":"CENTER_STEM","url":"enums/AnnotationHorizontalJustify.html#CENTER_STEM","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"AnnotationHorizontalJustify"},{"id":85,"kind":8,"name":"AnnotationVerticalJustify","url":"enums/AnnotationVerticalJustify.html","classes":"tsd-kind-enum"},{"id":86,"kind":16,"name":"TOP","url":"enums/AnnotationVerticalJustify.html#TOP","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"AnnotationVerticalJustify"},{"id":87,"kind":16,"name":"CENTER","url":"enums/AnnotationVerticalJustify.html#CENTER","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"AnnotationVerticalJustify"},{"id":88,"kind":16,"name":"BOTTOM","url":"enums/AnnotationVerticalJustify.html#BOTTOM","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"AnnotationVerticalJustify"},{"id":89,"kind":16,"name":"CENTER_STEM","url":"enums/AnnotationVerticalJustify.html#CENTER_STEM","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"AnnotationVerticalJustify"},{"id":90,"kind":128,"name":"Annotation","url":"classes/Annotation.html","classes":"tsd-kind-class"},{"id":91,"kind":1024,"name":"DEBUG","url":"classes/Annotation.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Annotation"},{"id":92,"kind":262144,"name":"CATEGORY","url":"classes/Annotation.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Annotation"},{"id":93,"kind":1024,"name":"TEXT_FONT","url":"classes/Annotation.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Annotation"},{"id":94,"kind":1024,"name":"HorizontalJustify","url":"classes/Annotation.html#HorizontalJustify","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Annotation"},{"id":95,"kind":1024,"name":"HorizontalJustifyString","url":"classes/Annotation.html#HorizontalJustifyString","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Annotation"},{"id":96,"kind":1024,"name":"VerticalJustify","url":"classes/Annotation.html#VerticalJustify","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Annotation"},{"id":97,"kind":1024,"name":"VerticalJustifyString","url":"classes/Annotation.html#VerticalJustifyString","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Annotation"},{"id":98,"kind":262144,"name":"minAnnotationPadding","url":"classes/Annotation.html#minAnnotationPadding","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Annotation"},{"id":99,"kind":2048,"name":"format","url":"classes/Annotation.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Annotation"},{"id":100,"kind":262144,"name":"Position","url":"classes/Annotation.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Annotation"},{"id":101,"kind":262144,"name":"PositionString","url":"classes/Annotation.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Annotation"},{"id":102,"kind":512,"name":"constructor","url":"classes/Annotation.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Annotation"},{"id":103,"kind":2048,"name":"setVerticalJustification","url":"classes/Annotation.html#setVerticalJustification","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Annotation"},{"id":104,"kind":2048,"name":"getJustification","url":"classes/Annotation.html#getJustification","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Annotation"},{"id":105,"kind":2048,"name":"setJustification","url":"classes/Annotation.html#setJustification","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Annotation"},{"id":106,"kind":2048,"name":"draw","url":"classes/Annotation.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Annotation"},{"id":107,"kind":2048,"name":"getWidth","url":"classes/Annotation.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":108,"kind":2048,"name":"setWidth","url":"classes/Annotation.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":109,"kind":2048,"name":"getNote","url":"classes/Annotation.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":110,"kind":2048,"name":"checkAttachedNote","url":"classes/Annotation.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":111,"kind":2048,"name":"setNote","url":"classes/Annotation.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":112,"kind":2048,"name":"getIndex","url":"classes/Annotation.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":113,"kind":2048,"name":"checkIndex","url":"classes/Annotation.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":114,"kind":2048,"name":"setIndex","url":"classes/Annotation.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":115,"kind":2048,"name":"getModifierContext","url":"classes/Annotation.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":116,"kind":2048,"name":"checkModifierContext","url":"classes/Annotation.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":117,"kind":2048,"name":"setModifierContext","url":"classes/Annotation.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":118,"kind":2048,"name":"getPosition","url":"classes/Annotation.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":119,"kind":2048,"name":"setPosition","url":"classes/Annotation.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":120,"kind":2048,"name":"setTextLine","url":"classes/Annotation.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":121,"kind":2048,"name":"setYShift","url":"classes/Annotation.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":122,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/Annotation.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":123,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/Annotation.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":124,"kind":2048,"name":"setXShift","url":"classes/Annotation.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":125,"kind":2048,"name":"getXShift","url":"classes/Annotation.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":126,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/Annotation.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":127,"kind":2048,"name":"addChildElement","url":"classes/Annotation.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":128,"kind":2048,"name":"getCategory","url":"classes/Annotation.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":129,"kind":2048,"name":"setStyle","url":"classes/Annotation.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":130,"kind":2048,"name":"setGroupStyle","url":"classes/Annotation.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":131,"kind":2048,"name":"getStyle","url":"classes/Annotation.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":132,"kind":2048,"name":"applyStyle","url":"classes/Annotation.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":133,"kind":2048,"name":"restoreStyle","url":"classes/Annotation.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":134,"kind":2048,"name":"drawWithStyle","url":"classes/Annotation.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":135,"kind":2048,"name":"hasClass","url":"classes/Annotation.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":136,"kind":2048,"name":"addClass","url":"classes/Annotation.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":137,"kind":2048,"name":"removeClass","url":"classes/Annotation.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":138,"kind":2048,"name":"onRegister","url":"classes/Annotation.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":139,"kind":2048,"name":"isRendered","url":"classes/Annotation.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":140,"kind":2048,"name":"setRendered","url":"classes/Annotation.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":141,"kind":2048,"name":"getAttributes","url":"classes/Annotation.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":142,"kind":2048,"name":"getAttribute","url":"classes/Annotation.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":143,"kind":2048,"name":"getSVGElement","url":"classes/Annotation.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":144,"kind":2048,"name":"setAttribute","url":"classes/Annotation.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":145,"kind":2048,"name":"getBoundingBox","url":"classes/Annotation.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":146,"kind":2048,"name":"getContext","url":"classes/Annotation.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":147,"kind":2048,"name":"setContext","url":"classes/Annotation.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":148,"kind":2048,"name":"checkContext","url":"classes/Annotation.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":149,"kind":262144,"name":"font","url":"classes/Annotation.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":150,"kind":2048,"name":"setFont","url":"classes/Annotation.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":151,"kind":2048,"name":"getFont","url":"classes/Annotation.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":152,"kind":2048,"name":"resetFont","url":"classes/Annotation.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":153,"kind":262144,"name":"fontInfo","url":"classes/Annotation.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":154,"kind":2048,"name":"setFontSize","url":"classes/Annotation.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":155,"kind":2048,"name":"getFontSize","url":"classes/Annotation.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":156,"kind":262144,"name":"fontSize","url":"classes/Annotation.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":157,"kind":262144,"name":"fontSizeInPoints","url":"classes/Annotation.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":158,"kind":262144,"name":"fontSizeInPixels","url":"classes/Annotation.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":159,"kind":262144,"name":"fontStyle","url":"classes/Annotation.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":160,"kind":262144,"name":"fontWeight","url":"classes/Annotation.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Annotation"},{"id":161,"kind":256,"name":"ArticulationStruct","url":"interfaces/ArticulationStruct.html","classes":"tsd-kind-interface"},{"id":162,"kind":1024,"name":"code","url":"interfaces/ArticulationStruct.html#code","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ArticulationStruct"},{"id":163,"kind":1024,"name":"aboveCode","url":"interfaces/ArticulationStruct.html#aboveCode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ArticulationStruct"},{"id":164,"kind":1024,"name":"belowCode","url":"interfaces/ArticulationStruct.html#belowCode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ArticulationStruct"},{"id":165,"kind":1024,"name":"between_lines","url":"interfaces/ArticulationStruct.html#between_lines","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ArticulationStruct"},{"id":166,"kind":128,"name":"Articulation","url":"classes/Articulation.html","classes":"tsd-kind-class"},{"id":167,"kind":1024,"name":"DEBUG","url":"classes/Articulation.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Articulation"},{"id":168,"kind":262144,"name":"CATEGORY","url":"classes/Articulation.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Articulation"},{"id":169,"kind":2048,"name":"format","url":"classes/Articulation.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Articulation"},{"id":170,"kind":2048,"name":"easyScoreHook","url":"classes/Articulation.html#easyScoreHook","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Articulation"},{"id":171,"kind":262144,"name":"Position","url":"classes/Articulation.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Articulation"},{"id":172,"kind":262144,"name":"PositionString","url":"classes/Articulation.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Articulation"},{"id":173,"kind":1024,"name":"TEXT_FONT","url":"classes/Articulation.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Articulation"},{"id":174,"kind":512,"name":"constructor","url":"classes/Articulation.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Articulation"},{"id":175,"kind":1024,"name":"type","url":"classes/Articulation.html#type","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Articulation"},{"id":176,"kind":1024,"name":"render_options","url":"classes/Articulation.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Articulation"},{"id":177,"kind":65536,"name":"__type","url":"classes/Articulation.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Articulation"},{"id":178,"kind":1024,"name":"font_scale","url":"classes/Articulation.html#__type.font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Articulation.__type"},{"id":179,"kind":2048,"name":"draw","url":"classes/Articulation.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Articulation"},{"id":180,"kind":2048,"name":"getWidth","url":"classes/Articulation.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":181,"kind":2048,"name":"setWidth","url":"classes/Articulation.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":182,"kind":2048,"name":"getNote","url":"classes/Articulation.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":183,"kind":2048,"name":"checkAttachedNote","url":"classes/Articulation.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":184,"kind":2048,"name":"setNote","url":"classes/Articulation.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":185,"kind":2048,"name":"getIndex","url":"classes/Articulation.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":186,"kind":2048,"name":"checkIndex","url":"classes/Articulation.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":187,"kind":2048,"name":"setIndex","url":"classes/Articulation.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":188,"kind":2048,"name":"getModifierContext","url":"classes/Articulation.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":189,"kind":2048,"name":"checkModifierContext","url":"classes/Articulation.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":190,"kind":2048,"name":"setModifierContext","url":"classes/Articulation.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":191,"kind":2048,"name":"getPosition","url":"classes/Articulation.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":192,"kind":2048,"name":"setPosition","url":"classes/Articulation.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":193,"kind":2048,"name":"setTextLine","url":"classes/Articulation.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":194,"kind":2048,"name":"setYShift","url":"classes/Articulation.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":195,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/Articulation.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":196,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/Articulation.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":197,"kind":2048,"name":"setXShift","url":"classes/Articulation.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":198,"kind":2048,"name":"getXShift","url":"classes/Articulation.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":199,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/Articulation.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":200,"kind":2048,"name":"addChildElement","url":"classes/Articulation.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":201,"kind":2048,"name":"getCategory","url":"classes/Articulation.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":202,"kind":2048,"name":"setStyle","url":"classes/Articulation.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":203,"kind":2048,"name":"setGroupStyle","url":"classes/Articulation.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":204,"kind":2048,"name":"getStyle","url":"classes/Articulation.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":205,"kind":2048,"name":"applyStyle","url":"classes/Articulation.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":206,"kind":2048,"name":"restoreStyle","url":"classes/Articulation.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":207,"kind":2048,"name":"drawWithStyle","url":"classes/Articulation.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":208,"kind":2048,"name":"hasClass","url":"classes/Articulation.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":209,"kind":2048,"name":"addClass","url":"classes/Articulation.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":210,"kind":2048,"name":"removeClass","url":"classes/Articulation.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":211,"kind":2048,"name":"onRegister","url":"classes/Articulation.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":212,"kind":2048,"name":"isRendered","url":"classes/Articulation.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":213,"kind":2048,"name":"setRendered","url":"classes/Articulation.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":214,"kind":2048,"name":"getAttributes","url":"classes/Articulation.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":215,"kind":2048,"name":"getAttribute","url":"classes/Articulation.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":216,"kind":2048,"name":"getSVGElement","url":"classes/Articulation.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":217,"kind":2048,"name":"setAttribute","url":"classes/Articulation.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":218,"kind":2048,"name":"getBoundingBox","url":"classes/Articulation.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":219,"kind":2048,"name":"getContext","url":"classes/Articulation.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":220,"kind":2048,"name":"setContext","url":"classes/Articulation.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":221,"kind":2048,"name":"checkContext","url":"classes/Articulation.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":222,"kind":262144,"name":"font","url":"classes/Articulation.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":223,"kind":2048,"name":"setFont","url":"classes/Articulation.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":224,"kind":2048,"name":"getFont","url":"classes/Articulation.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":225,"kind":2048,"name":"resetFont","url":"classes/Articulation.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":226,"kind":262144,"name":"fontInfo","url":"classes/Articulation.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":227,"kind":2048,"name":"setFontSize","url":"classes/Articulation.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":228,"kind":2048,"name":"getFontSize","url":"classes/Articulation.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":229,"kind":262144,"name":"fontSize","url":"classes/Articulation.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":230,"kind":262144,"name":"fontSizeInPoints","url":"classes/Articulation.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":231,"kind":262144,"name":"fontSizeInPixels","url":"classes/Articulation.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":232,"kind":262144,"name":"fontStyle","url":"classes/Articulation.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":233,"kind":262144,"name":"fontWeight","url":"classes/Articulation.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Articulation"},{"id":234,"kind":128,"name":"BarNote","url":"classes/BarNote.html","classes":"tsd-kind-class"},{"id":235,"kind":1024,"name":"DEBUG","url":"classes/BarNote.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"BarNote"},{"id":236,"kind":262144,"name":"CATEGORY","url":"classes/BarNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"BarNote"},{"id":237,"kind":2048,"name":"plotMetrics","url":"classes/BarNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"BarNote"},{"id":238,"kind":1024,"name":"TEXT_FONT","url":"classes/BarNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"BarNote"},{"id":239,"kind":512,"name":"constructor","url":"classes/BarNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"BarNote"},{"id":240,"kind":2048,"name":"getType","url":"classes/BarNote.html#getType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BarNote"},{"id":241,"kind":2048,"name":"setType","url":"classes/BarNote.html#setType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BarNote"},{"id":242,"kind":2048,"name":"addToModifierContext","url":"classes/BarNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"BarNote"},{"id":243,"kind":2048,"name":"preFormat","url":"classes/BarNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"BarNote"},{"id":244,"kind":2048,"name":"draw","url":"classes/BarNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"BarNote"},{"id":245,"kind":1024,"name":"glyph","url":"classes/BarNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":246,"kind":1024,"name":"keys","url":"classes/BarNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":247,"kind":1024,"name":"keyProps","url":"classes/BarNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":248,"kind":1024,"name":"render_options","url":"classes/BarNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":249,"kind":65536,"name":"__type","url":"classes/BarNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"BarNote"},{"id":250,"kind":1024,"name":"draw_stem_through_stave","url":"classes/BarNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":251,"kind":1024,"name":"draw","url":"classes/BarNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":252,"kind":1024,"name":"draw_dots","url":"classes/BarNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":253,"kind":1024,"name":"draw_stem","url":"classes/BarNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":254,"kind":1024,"name":"y_shift","url":"classes/BarNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":255,"kind":1024,"name":"extend_left","url":"classes/BarNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":256,"kind":1024,"name":"extend_right","url":"classes/BarNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":257,"kind":1024,"name":"glyph_font_scale","url":"classes/BarNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":258,"kind":1024,"name":"annotation_spacing","url":"classes/BarNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":259,"kind":1024,"name":"glyph_font_size","url":"classes/BarNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":260,"kind":1024,"name":"scale","url":"classes/BarNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":261,"kind":1024,"name":"font","url":"classes/BarNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":262,"kind":1024,"name":"stroke_px","url":"classes/BarNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"BarNote.__type"},{"id":263,"kind":2048,"name":"getPlayNote","url":"classes/BarNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":264,"kind":2048,"name":"setPlayNote","url":"classes/BarNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":265,"kind":2048,"name":"isRest","url":"classes/BarNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":266,"kind":2048,"name":"addStroke","url":"classes/BarNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":267,"kind":2048,"name":"getStave","url":"classes/BarNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":268,"kind":2048,"name":"checkStave","url":"classes/BarNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":269,"kind":2048,"name":"setStave","url":"classes/BarNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":270,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/BarNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":271,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/BarNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":272,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/BarNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":273,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/BarNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":274,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/BarNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":275,"kind":2048,"name":"getLineNumber","url":"classes/BarNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":276,"kind":2048,"name":"getLineForRest","url":"classes/BarNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":277,"kind":2048,"name":"getGlyph","url":"classes/BarNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":278,"kind":2048,"name":"getGlyphWidth","url":"classes/BarNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":279,"kind":2048,"name":"setYs","url":"classes/BarNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":280,"kind":2048,"name":"getYs","url":"classes/BarNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":281,"kind":2048,"name":"getYForTopText","url":"classes/BarNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":282,"kind":2048,"name":"getVoice","url":"classes/BarNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":283,"kind":2048,"name":"setVoice","url":"classes/BarNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":284,"kind":2048,"name":"getTickContext","url":"classes/BarNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":285,"kind":2048,"name":"setTickContext","url":"classes/BarNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":286,"kind":2048,"name":"getDuration","url":"classes/BarNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":287,"kind":2048,"name":"isDotted","url":"classes/BarNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":288,"kind":2048,"name":"hasStem","url":"classes/BarNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":289,"kind":2048,"name":"getNoteType","url":"classes/BarNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":290,"kind":2048,"name":"getBeam","url":"classes/BarNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":291,"kind":2048,"name":"checkBeam","url":"classes/BarNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":292,"kind":2048,"name":"hasBeam","url":"classes/BarNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":293,"kind":2048,"name":"setBeam","url":"classes/BarNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":294,"kind":2048,"name":"addModifier","url":"classes/BarNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":295,"kind":2048,"name":"getModifiersByType","url":"classes/BarNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":296,"kind":2048,"name":"getModifierStartXY","url":"classes/BarNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":297,"kind":2048,"name":"getRightParenthesisPx","url":"classes/BarNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":298,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/BarNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":299,"kind":2048,"name":"getFirstDotPx","url":"classes/BarNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":300,"kind":2048,"name":"getMetrics","url":"classes/BarNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":301,"kind":2048,"name":"getAbsoluteX","url":"classes/BarNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":302,"kind":2048,"name":"getStemDirection","url":"classes/BarNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":303,"kind":2048,"name":"getStemExtents","url":"classes/BarNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":304,"kind":2048,"name":"getTieRightX","url":"classes/BarNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":305,"kind":2048,"name":"getTieLeftX","url":"classes/BarNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":306,"kind":2048,"name":"getKeys","url":"classes/BarNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":307,"kind":2048,"name":"getKeyProps","url":"classes/BarNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":308,"kind":2048,"name":"reset","url":"classes/BarNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":309,"kind":2048,"name":"getTicks","url":"classes/BarNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":310,"kind":2048,"name":"setIgnoreTicks","url":"classes/BarNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":311,"kind":2048,"name":"setWidth","url":"classes/BarNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":312,"kind":2048,"name":"getWidth","url":"classes/BarNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":313,"kind":2048,"name":"setXShift","url":"classes/BarNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":314,"kind":2048,"name":"getXShift","url":"classes/BarNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":315,"kind":2048,"name":"getX","url":"classes/BarNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":316,"kind":2048,"name":"getFormatterMetrics","url":"classes/BarNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":317,"kind":2048,"name":"getCenterXShift","url":"classes/BarNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":318,"kind":2048,"name":"setCenterXShift","url":"classes/BarNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":319,"kind":2048,"name":"isCenterAligned","url":"classes/BarNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":320,"kind":2048,"name":"setCenterAlignment","url":"classes/BarNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":321,"kind":2048,"name":"getTuplet","url":"classes/BarNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":322,"kind":2048,"name":"getTupletStack","url":"classes/BarNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":323,"kind":2048,"name":"resetTuplet","url":"classes/BarNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":324,"kind":2048,"name":"setTuplet","url":"classes/BarNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":325,"kind":2048,"name":"getModifiers","url":"classes/BarNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":326,"kind":2048,"name":"checkTickContext","url":"classes/BarNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":327,"kind":262144,"name":"preFormatted","url":"classes/BarNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":328,"kind":2048,"name":"postFormat","url":"classes/BarNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":329,"kind":262144,"name":"postFormatted","url":"classes/BarNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":330,"kind":2048,"name":"getIntrinsicTicks","url":"classes/BarNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":331,"kind":2048,"name":"setIntrinsicTicks","url":"classes/BarNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":332,"kind":2048,"name":"getTickMultiplier","url":"classes/BarNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":333,"kind":2048,"name":"applyTickMultiplier","url":"classes/BarNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":334,"kind":2048,"name":"setDuration","url":"classes/BarNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":335,"kind":2048,"name":"setModifierContext","url":"classes/BarNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":336,"kind":2048,"name":"getModifierContext","url":"classes/BarNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":337,"kind":2048,"name":"checkModifierContext","url":"classes/BarNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":338,"kind":2048,"name":"addChildElement","url":"classes/BarNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":339,"kind":2048,"name":"getCategory","url":"classes/BarNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":340,"kind":2048,"name":"setStyle","url":"classes/BarNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":341,"kind":2048,"name":"setGroupStyle","url":"classes/BarNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":342,"kind":2048,"name":"getStyle","url":"classes/BarNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":343,"kind":2048,"name":"applyStyle","url":"classes/BarNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":344,"kind":2048,"name":"restoreStyle","url":"classes/BarNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":345,"kind":2048,"name":"drawWithStyle","url":"classes/BarNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":346,"kind":2048,"name":"hasClass","url":"classes/BarNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":347,"kind":2048,"name":"addClass","url":"classes/BarNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":348,"kind":2048,"name":"removeClass","url":"classes/BarNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":349,"kind":2048,"name":"onRegister","url":"classes/BarNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":350,"kind":2048,"name":"isRendered","url":"classes/BarNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":351,"kind":2048,"name":"setRendered","url":"classes/BarNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":352,"kind":2048,"name":"getAttributes","url":"classes/BarNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":353,"kind":2048,"name":"getAttribute","url":"classes/BarNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":354,"kind":2048,"name":"getSVGElement","url":"classes/BarNote.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":355,"kind":2048,"name":"setAttribute","url":"classes/BarNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":356,"kind":2048,"name":"getBoundingBox","url":"classes/BarNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":357,"kind":2048,"name":"getContext","url":"classes/BarNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":358,"kind":2048,"name":"setContext","url":"classes/BarNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":359,"kind":2048,"name":"checkContext","url":"classes/BarNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":360,"kind":262144,"name":"font","url":"classes/BarNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":361,"kind":2048,"name":"setFont","url":"classes/BarNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":362,"kind":2048,"name":"getFont","url":"classes/BarNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":363,"kind":2048,"name":"resetFont","url":"classes/BarNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":364,"kind":262144,"name":"fontInfo","url":"classes/BarNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":365,"kind":2048,"name":"setFontSize","url":"classes/BarNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":366,"kind":2048,"name":"getFontSize","url":"classes/BarNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":367,"kind":262144,"name":"fontSize","url":"classes/BarNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":368,"kind":262144,"name":"fontSizeInPoints","url":"classes/BarNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":369,"kind":262144,"name":"fontSizeInPixels","url":"classes/BarNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":370,"kind":262144,"name":"fontStyle","url":"classes/BarNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":371,"kind":262144,"name":"fontWeight","url":"classes/BarNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"BarNote"},{"id":372,"kind":32,"name":"BEAM_LEFT","url":"modules.html#BEAM_LEFT","classes":"tsd-kind-variable"},{"id":373,"kind":32,"name":"BEAM_RIGHT","url":"modules.html#BEAM_RIGHT","classes":"tsd-kind-variable"},{"id":374,"kind":32,"name":"BEAM_BOTH","url":"modules.html#BEAM_BOTH","classes":"tsd-kind-variable"},{"id":375,"kind":4194304,"name":"PartialBeamDirection","url":"modules.html#PartialBeamDirection","classes":"tsd-kind-type-alias"},{"id":376,"kind":128,"name":"Beam","url":"classes/Beam.html","classes":"tsd-kind-class"},{"id":377,"kind":262144,"name":"CATEGORY","url":"classes/Beam.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Beam"},{"id":378,"kind":2048,"name":"getDefaultBeamGroups","url":"classes/Beam.html#getDefaultBeamGroups","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Beam"},{"id":379,"kind":2048,"name":"applyAndGetBeams","url":"classes/Beam.html#applyAndGetBeams","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Beam"},{"id":380,"kind":2048,"name":"generateBeams","url":"classes/Beam.html#generateBeams","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Beam"},{"id":381,"kind":1024,"name":"TEXT_FONT","url":"classes/Beam.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Beam"},{"id":382,"kind":512,"name":"constructor","url":"classes/Beam.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Beam"},{"id":383,"kind":1024,"name":"render_options","url":"classes/Beam.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Beam"},{"id":384,"kind":65536,"name":"__type","url":"classes/Beam.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Beam"},{"id":385,"kind":1024,"name":"flat_beam_offset","url":"classes/Beam.html#__type.flat_beam_offset","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":386,"kind":1024,"name":"flat_beams","url":"classes/Beam.html#__type.flat_beams","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":387,"kind":1024,"name":"secondary_break_ticks","url":"classes/Beam.html#__type.secondary_break_ticks","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":388,"kind":1024,"name":"show_stemlets","url":"classes/Beam.html#__type.show_stemlets","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":389,"kind":1024,"name":"beam_width","url":"classes/Beam.html#__type.beam_width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":390,"kind":1024,"name":"max_slope","url":"classes/Beam.html#__type.max_slope","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":391,"kind":1024,"name":"min_slope","url":"classes/Beam.html#__type.min_slope","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":392,"kind":1024,"name":"slope_iterations","url":"classes/Beam.html#__type.slope_iterations","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":393,"kind":1024,"name":"slope_cost","url":"classes/Beam.html#__type.slope_cost","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":394,"kind":1024,"name":"stemlet_extension","url":"classes/Beam.html#__type.stemlet_extension","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":395,"kind":1024,"name":"partial_beam_length","url":"classes/Beam.html#__type.partial_beam_length","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":396,"kind":1024,"name":"min_flat_beam_offset","url":"classes/Beam.html#__type.min_flat_beam_offset","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Beam.__type"},{"id":397,"kind":1024,"name":"notes","url":"classes/Beam.html#notes","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Beam"},{"id":398,"kind":1024,"name":"postFormatted","url":"classes/Beam.html#postFormatted","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Beam"},{"id":399,"kind":1024,"name":"slope","url":"classes/Beam.html#slope","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Beam"},{"id":400,"kind":2048,"name":"getStemDirection","url":"classes/Beam.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":401,"kind":2048,"name":"getNotes","url":"classes/Beam.html#getNotes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":402,"kind":2048,"name":"getBeamCount","url":"classes/Beam.html#getBeamCount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":403,"kind":2048,"name":"breakSecondaryAt","url":"classes/Beam.html#breakSecondaryAt","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":404,"kind":2048,"name":"setPartialBeamSideAt","url":"classes/Beam.html#setPartialBeamSideAt","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":405,"kind":2048,"name":"unsetPartialBeamSideAt","url":"classes/Beam.html#unsetPartialBeamSideAt","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":406,"kind":2048,"name":"getSlopeY","url":"classes/Beam.html#getSlopeY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":407,"kind":2048,"name":"calculateSlope","url":"classes/Beam.html#calculateSlope","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":408,"kind":2048,"name":"calculateFlatSlope","url":"classes/Beam.html#calculateFlatSlope","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":409,"kind":2048,"name":"getBeamYToDraw","url":"classes/Beam.html#getBeamYToDraw","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":410,"kind":2048,"name":"applyStemExtensions","url":"classes/Beam.html#applyStemExtensions","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":411,"kind":2048,"name":"lookupBeamDirection","url":"classes/Beam.html#lookupBeamDirection","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":412,"kind":2048,"name":"getBeamLines","url":"classes/Beam.html#getBeamLines","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":413,"kind":2048,"name":"preFormat","url":"classes/Beam.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":414,"kind":2048,"name":"postFormat","url":"classes/Beam.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Beam"},{"id":415,"kind":2048,"name":"draw","url":"classes/Beam.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Beam"},{"id":416,"kind":2048,"name":"addChildElement","url":"classes/Beam.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":417,"kind":2048,"name":"getCategory","url":"classes/Beam.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":418,"kind":2048,"name":"setStyle","url":"classes/Beam.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":419,"kind":2048,"name":"setGroupStyle","url":"classes/Beam.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":420,"kind":2048,"name":"getStyle","url":"classes/Beam.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":421,"kind":2048,"name":"applyStyle","url":"classes/Beam.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":422,"kind":2048,"name":"restoreStyle","url":"classes/Beam.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":423,"kind":2048,"name":"drawWithStyle","url":"classes/Beam.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":424,"kind":2048,"name":"hasClass","url":"classes/Beam.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":425,"kind":2048,"name":"addClass","url":"classes/Beam.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":426,"kind":2048,"name":"removeClass","url":"classes/Beam.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":427,"kind":2048,"name":"onRegister","url":"classes/Beam.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":428,"kind":2048,"name":"isRendered","url":"classes/Beam.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":429,"kind":2048,"name":"setRendered","url":"classes/Beam.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":430,"kind":2048,"name":"getAttributes","url":"classes/Beam.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":431,"kind":2048,"name":"getAttribute","url":"classes/Beam.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":432,"kind":2048,"name":"getSVGElement","url":"classes/Beam.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":433,"kind":2048,"name":"setAttribute","url":"classes/Beam.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":434,"kind":2048,"name":"getBoundingBox","url":"classes/Beam.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":435,"kind":2048,"name":"getContext","url":"classes/Beam.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":436,"kind":2048,"name":"setContext","url":"classes/Beam.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":437,"kind":2048,"name":"checkContext","url":"classes/Beam.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":438,"kind":262144,"name":"font","url":"classes/Beam.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":439,"kind":2048,"name":"setFont","url":"classes/Beam.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":440,"kind":2048,"name":"getFont","url":"classes/Beam.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":441,"kind":2048,"name":"resetFont","url":"classes/Beam.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":442,"kind":262144,"name":"fontInfo","url":"classes/Beam.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":443,"kind":2048,"name":"setFontSize","url":"classes/Beam.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":444,"kind":2048,"name":"getFontSize","url":"classes/Beam.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":445,"kind":262144,"name":"fontSize","url":"classes/Beam.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":446,"kind":262144,"name":"fontSizeInPoints","url":"classes/Beam.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":447,"kind":262144,"name":"fontSizeInPixels","url":"classes/Beam.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":448,"kind":262144,"name":"fontStyle","url":"classes/Beam.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":449,"kind":262144,"name":"fontWeight","url":"classes/Beam.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Beam"},{"id":450,"kind":256,"name":"BendPhrase","url":"interfaces/BendPhrase.html","classes":"tsd-kind-interface"},{"id":451,"kind":1024,"name":"x","url":"interfaces/BendPhrase.html#x","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"BendPhrase"},{"id":452,"kind":1024,"name":"type","url":"interfaces/BendPhrase.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"BendPhrase"},{"id":453,"kind":1024,"name":"text","url":"interfaces/BendPhrase.html#text","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"BendPhrase"},{"id":454,"kind":1024,"name":"width","url":"interfaces/BendPhrase.html#width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"BendPhrase"},{"id":455,"kind":1024,"name":"draw_width","url":"interfaces/BendPhrase.html#draw_width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"BendPhrase"},{"id":456,"kind":128,"name":"Bend","url":"classes/Bend.html","classes":"tsd-kind-class"},{"id":457,"kind":262144,"name":"CATEGORY","url":"classes/Bend.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Bend"},{"id":458,"kind":262144,"name":"UP","url":"classes/Bend.html#UP","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Bend"},{"id":459,"kind":262144,"name":"DOWN","url":"classes/Bend.html#DOWN","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Bend"},{"id":460,"kind":1024,"name":"TEXT_FONT","url":"classes/Bend.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Bend"},{"id":461,"kind":2048,"name":"format","url":"classes/Bend.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Bend"},{"id":462,"kind":262144,"name":"Position","url":"classes/Bend.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Bend"},{"id":463,"kind":262144,"name":"PositionString","url":"classes/Bend.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Bend"},{"id":464,"kind":512,"name":"constructor","url":"classes/Bend.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Bend"},{"id":465,"kind":1024,"name":"render_options","url":"classes/Bend.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Bend"},{"id":466,"kind":65536,"name":"__type","url":"classes/Bend.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Bend"},{"id":467,"kind":1024,"name":"line_width","url":"classes/Bend.html#__type.line_width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Bend.__type"},{"id":468,"kind":1024,"name":"release_width","url":"classes/Bend.html#__type.release_width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Bend.__type"},{"id":469,"kind":1024,"name":"bend_width","url":"classes/Bend.html#__type.bend_width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Bend.__type"},{"id":470,"kind":1024,"name":"line_style","url":"classes/Bend.html#__type.line_style","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Bend.__type"},{"id":471,"kind":2048,"name":"setXShift","url":"classes/Bend.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Bend"},{"id":472,"kind":2048,"name":"setTap","url":"classes/Bend.html#setTap","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Bend"},{"id":473,"kind":2048,"name":"getText","url":"classes/Bend.html#getText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Bend"},{"id":474,"kind":2048,"name":"getTextHeight","url":"classes/Bend.html#getTextHeight","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Bend"},{"id":475,"kind":2048,"name":"draw","url":"classes/Bend.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Bend"},{"id":476,"kind":2048,"name":"getWidth","url":"classes/Bend.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":477,"kind":2048,"name":"setWidth","url":"classes/Bend.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":478,"kind":2048,"name":"getNote","url":"classes/Bend.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":479,"kind":2048,"name":"checkAttachedNote","url":"classes/Bend.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":480,"kind":2048,"name":"setNote","url":"classes/Bend.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":481,"kind":2048,"name":"getIndex","url":"classes/Bend.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":482,"kind":2048,"name":"checkIndex","url":"classes/Bend.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":483,"kind":2048,"name":"setIndex","url":"classes/Bend.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":484,"kind":2048,"name":"getModifierContext","url":"classes/Bend.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":485,"kind":2048,"name":"checkModifierContext","url":"classes/Bend.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":486,"kind":2048,"name":"setModifierContext","url":"classes/Bend.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":487,"kind":2048,"name":"getPosition","url":"classes/Bend.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":488,"kind":2048,"name":"setPosition","url":"classes/Bend.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":489,"kind":2048,"name":"setTextLine","url":"classes/Bend.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":490,"kind":2048,"name":"setYShift","url":"classes/Bend.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":491,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/Bend.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":492,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/Bend.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":493,"kind":2048,"name":"getXShift","url":"classes/Bend.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":494,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/Bend.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":495,"kind":2048,"name":"addChildElement","url":"classes/Bend.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":496,"kind":2048,"name":"getCategory","url":"classes/Bend.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":497,"kind":2048,"name":"setStyle","url":"classes/Bend.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":498,"kind":2048,"name":"setGroupStyle","url":"classes/Bend.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":499,"kind":2048,"name":"getStyle","url":"classes/Bend.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":500,"kind":2048,"name":"applyStyle","url":"classes/Bend.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":501,"kind":2048,"name":"restoreStyle","url":"classes/Bend.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":502,"kind":2048,"name":"drawWithStyle","url":"classes/Bend.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":503,"kind":2048,"name":"hasClass","url":"classes/Bend.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":504,"kind":2048,"name":"addClass","url":"classes/Bend.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":505,"kind":2048,"name":"removeClass","url":"classes/Bend.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":506,"kind":2048,"name":"onRegister","url":"classes/Bend.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":507,"kind":2048,"name":"isRendered","url":"classes/Bend.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":508,"kind":2048,"name":"setRendered","url":"classes/Bend.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":509,"kind":2048,"name":"getAttributes","url":"classes/Bend.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":510,"kind":2048,"name":"getAttribute","url":"classes/Bend.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":511,"kind":2048,"name":"getSVGElement","url":"classes/Bend.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":512,"kind":2048,"name":"setAttribute","url":"classes/Bend.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":513,"kind":2048,"name":"getBoundingBox","url":"classes/Bend.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":514,"kind":2048,"name":"getContext","url":"classes/Bend.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":515,"kind":2048,"name":"setContext","url":"classes/Bend.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":516,"kind":2048,"name":"checkContext","url":"classes/Bend.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":517,"kind":262144,"name":"font","url":"classes/Bend.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":518,"kind":2048,"name":"setFont","url":"classes/Bend.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":519,"kind":2048,"name":"getFont","url":"classes/Bend.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":520,"kind":2048,"name":"resetFont","url":"classes/Bend.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":521,"kind":262144,"name":"fontInfo","url":"classes/Bend.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":522,"kind":2048,"name":"setFontSize","url":"classes/Bend.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":523,"kind":2048,"name":"getFontSize","url":"classes/Bend.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":524,"kind":262144,"name":"fontSize","url":"classes/Bend.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":525,"kind":262144,"name":"fontSizeInPoints","url":"classes/Bend.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":526,"kind":262144,"name":"fontSizeInPixels","url":"classes/Bend.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":527,"kind":262144,"name":"fontStyle","url":"classes/Bend.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":528,"kind":262144,"name":"fontWeight","url":"classes/Bend.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Bend"},{"id":529,"kind":256,"name":"Bounds","url":"interfaces/Bounds.html","classes":"tsd-kind-interface"},{"id":530,"kind":1024,"name":"x","url":"interfaces/Bounds.html#x","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Bounds"},{"id":531,"kind":1024,"name":"y","url":"interfaces/Bounds.html#y","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Bounds"},{"id":532,"kind":1024,"name":"w","url":"interfaces/Bounds.html#w","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Bounds"},{"id":533,"kind":1024,"name":"h","url":"interfaces/Bounds.html#h","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Bounds"},{"id":534,"kind":128,"name":"BoundingBox","url":"classes/BoundingBox.html","classes":"tsd-kind-class"},{"id":535,"kind":2048,"name":"copy","url":"classes/BoundingBox.html#copy","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"BoundingBox"},{"id":536,"kind":512,"name":"constructor","url":"classes/BoundingBox.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"BoundingBox"},{"id":537,"kind":1024,"name":"x","url":"classes/BoundingBox.html#x","classes":"tsd-kind-property tsd-parent-kind-class","parent":"BoundingBox"},{"id":538,"kind":1024,"name":"y","url":"classes/BoundingBox.html#y","classes":"tsd-kind-property tsd-parent-kind-class","parent":"BoundingBox"},{"id":539,"kind":1024,"name":"w","url":"classes/BoundingBox.html#w","classes":"tsd-kind-property tsd-parent-kind-class","parent":"BoundingBox"},{"id":540,"kind":1024,"name":"h","url":"classes/BoundingBox.html#h","classes":"tsd-kind-property tsd-parent-kind-class","parent":"BoundingBox"},{"id":541,"kind":2048,"name":"getX","url":"classes/BoundingBox.html#getX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBox"},{"id":542,"kind":2048,"name":"getY","url":"classes/BoundingBox.html#getY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBox"},{"id":543,"kind":2048,"name":"getW","url":"classes/BoundingBox.html#getW","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBox"},{"id":544,"kind":2048,"name":"getH","url":"classes/BoundingBox.html#getH","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBox"},{"id":545,"kind":2048,"name":"setX","url":"classes/BoundingBox.html#setX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBox"},{"id":546,"kind":2048,"name":"setY","url":"classes/BoundingBox.html#setY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBox"},{"id":547,"kind":2048,"name":"setW","url":"classes/BoundingBox.html#setW","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBox"},{"id":548,"kind":2048,"name":"setH","url":"classes/BoundingBox.html#setH","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBox"},{"id":549,"kind":2048,"name":"move","url":"classes/BoundingBox.html#move","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBox"},{"id":550,"kind":2048,"name":"clone","url":"classes/BoundingBox.html#clone","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBox"},{"id":551,"kind":2048,"name":"mergeWith","url":"classes/BoundingBox.html#mergeWith","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBox"},{"id":552,"kind":128,"name":"BoundingBoxComputation","url":"classes/BoundingBoxComputation.html","classes":"tsd-kind-class"},{"id":553,"kind":512,"name":"constructor","url":"classes/BoundingBoxComputation.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"BoundingBoxComputation"},{"id":554,"kind":2048,"name":"getX1","url":"classes/BoundingBoxComputation.html#getX1","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBoxComputation"},{"id":555,"kind":2048,"name":"getY1","url":"classes/BoundingBoxComputation.html#getY1","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBoxComputation"},{"id":556,"kind":2048,"name":"width","url":"classes/BoundingBoxComputation.html#width","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBoxComputation"},{"id":557,"kind":2048,"name":"height","url":"classes/BoundingBoxComputation.html#height","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBoxComputation"},{"id":558,"kind":2048,"name":"addPoint","url":"classes/BoundingBoxComputation.html#addPoint","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBoxComputation"},{"id":559,"kind":2048,"name":"addX","url":"classes/BoundingBoxComputation.html#addX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBoxComputation"},{"id":560,"kind":2048,"name":"addY","url":"classes/BoundingBoxComputation.html#addY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBoxComputation"},{"id":561,"kind":2048,"name":"addQuadraticCurve","url":"classes/BoundingBoxComputation.html#addQuadraticCurve","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBoxComputation"},{"id":562,"kind":2048,"name":"addBezierCurve","url":"classes/BoundingBoxComputation.html#addBezierCurve","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BoundingBoxComputation"},{"id":563,"kind":128,"name":"CanvasContext","url":"classes/CanvasContext.html","classes":"tsd-kind-class"},{"id":564,"kind":262144,"name":"WIDTH","url":"classes/CanvasContext.html#WIDTH","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"CanvasContext"},{"id":565,"kind":262144,"name":"HEIGHT","url":"classes/CanvasContext.html#HEIGHT","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"CanvasContext"},{"id":566,"kind":262144,"name":"CANVAS_BROWSER_SIZE_LIMIT","url":"classes/CanvasContext.html#CANVAS_BROWSER_SIZE_LIMIT","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"CanvasContext"},{"id":567,"kind":2048,"name":"sanitizeCanvasDims","url":"classes/CanvasContext.html#sanitizeCanvasDims","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"CanvasContext"},{"id":568,"kind":262144,"name":"CATEGORY","url":"classes/CanvasContext.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"CanvasContext"},{"id":569,"kind":512,"name":"constructor","url":"classes/CanvasContext.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":570,"kind":1024,"name":"context2D","url":"classes/CanvasContext.html#context2D","classes":"tsd-kind-property tsd-parent-kind-class","parent":"CanvasContext"},{"id":571,"kind":1024,"name":"canvas","url":"classes/CanvasContext.html#canvas","classes":"tsd-kind-property tsd-parent-kind-class","parent":"CanvasContext"},{"id":572,"kind":1024,"name":"textHeight","url":"classes/CanvasContext.html#textHeight","classes":"tsd-kind-property tsd-parent-kind-class","parent":"CanvasContext"},{"id":573,"kind":2048,"name":"clear","url":"classes/CanvasContext.html#clear","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":574,"kind":2048,"name":"openGroup","url":"classes/CanvasContext.html#openGroup","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":575,"kind":2048,"name":"closeGroup","url":"classes/CanvasContext.html#closeGroup","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":576,"kind":2048,"name":"add","url":"classes/CanvasContext.html#add","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":577,"kind":2048,"name":"setFillStyle","url":"classes/CanvasContext.html#setFillStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":578,"kind":2048,"name":"setBackgroundFillStyle","url":"classes/CanvasContext.html#setBackgroundFillStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":579,"kind":2048,"name":"setStrokeStyle","url":"classes/CanvasContext.html#setStrokeStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":580,"kind":2048,"name":"setShadowColor","url":"classes/CanvasContext.html#setShadowColor","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":581,"kind":2048,"name":"setShadowBlur","url":"classes/CanvasContext.html#setShadowBlur","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":582,"kind":2048,"name":"setLineWidth","url":"classes/CanvasContext.html#setLineWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":583,"kind":2048,"name":"setLineCap","url":"classes/CanvasContext.html#setLineCap","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":584,"kind":2048,"name":"setLineDash","url":"classes/CanvasContext.html#setLineDash","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":585,"kind":2048,"name":"scale","url":"classes/CanvasContext.html#scale","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":586,"kind":2048,"name":"resize","url":"classes/CanvasContext.html#resize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":587,"kind":2048,"name":"rect","url":"classes/CanvasContext.html#rect","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":588,"kind":2048,"name":"fillRect","url":"classes/CanvasContext.html#fillRect","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":589,"kind":2048,"name":"clearRect","url":"classes/CanvasContext.html#clearRect","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":590,"kind":2048,"name":"beginPath","url":"classes/CanvasContext.html#beginPath","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":591,"kind":2048,"name":"moveTo","url":"classes/CanvasContext.html#moveTo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":592,"kind":2048,"name":"lineTo","url":"classes/CanvasContext.html#lineTo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":593,"kind":2048,"name":"bezierCurveTo","url":"classes/CanvasContext.html#bezierCurveTo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":594,"kind":2048,"name":"quadraticCurveTo","url":"classes/CanvasContext.html#quadraticCurveTo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":595,"kind":2048,"name":"arc","url":"classes/CanvasContext.html#arc","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":596,"kind":2048,"name":"fill","url":"classes/CanvasContext.html#fill","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":597,"kind":2048,"name":"stroke","url":"classes/CanvasContext.html#stroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":598,"kind":2048,"name":"closePath","url":"classes/CanvasContext.html#closePath","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":599,"kind":2048,"name":"measureText","url":"classes/CanvasContext.html#measureText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":600,"kind":2048,"name":"fillText","url":"classes/CanvasContext.html#fillText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":601,"kind":2048,"name":"save","url":"classes/CanvasContext.html#save","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":602,"kind":2048,"name":"restore","url":"classes/CanvasContext.html#restore","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":603,"kind":262144,"name":"fillStyle","url":"classes/CanvasContext.html#fillStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":604,"kind":262144,"name":"strokeStyle","url":"classes/CanvasContext.html#strokeStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":605,"kind":2048,"name":"setFont","url":"classes/CanvasContext.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":606,"kind":2048,"name":"getFont","url":"classes/CanvasContext.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"CanvasContext"},{"id":607,"kind":262144,"name":"font","url":"classes/CanvasContext.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"CanvasContext"},{"id":608,"kind":2048,"name":"setRawFont","url":"classes/CanvasContext.html#setRawFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"CanvasContext"},{"id":609,"kind":256,"name":"ChordSymbolBlock","url":"interfaces/ChordSymbolBlock.html","classes":"tsd-kind-interface"},{"id":610,"kind":1024,"name":"text","url":"interfaces/ChordSymbolBlock.html#text","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ChordSymbolBlock"},{"id":611,"kind":1024,"name":"symbolType","url":"interfaces/ChordSymbolBlock.html#symbolType","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ChordSymbolBlock"},{"id":612,"kind":1024,"name":"symbolModifier","url":"interfaces/ChordSymbolBlock.html#symbolModifier","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ChordSymbolBlock"},{"id":613,"kind":1024,"name":"xShift","url":"interfaces/ChordSymbolBlock.html#xShift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ChordSymbolBlock"},{"id":614,"kind":1024,"name":"yShift","url":"interfaces/ChordSymbolBlock.html#yShift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ChordSymbolBlock"},{"id":615,"kind":1024,"name":"vAlign","url":"interfaces/ChordSymbolBlock.html#vAlign","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ChordSymbolBlock"},{"id":616,"kind":1024,"name":"width","url":"interfaces/ChordSymbolBlock.html#width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ChordSymbolBlock"},{"id":617,"kind":1024,"name":"glyph","url":"interfaces/ChordSymbolBlock.html#glyph","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ChordSymbolBlock"},{"id":618,"kind":8,"name":"ChordSymbolHorizontalJustify","url":"enums/ChordSymbolHorizontalJustify.html","classes":"tsd-kind-enum"},{"id":619,"kind":16,"name":"LEFT","url":"enums/ChordSymbolHorizontalJustify.html#LEFT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ChordSymbolHorizontalJustify"},{"id":620,"kind":16,"name":"CENTER","url":"enums/ChordSymbolHorizontalJustify.html#CENTER","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ChordSymbolHorizontalJustify"},{"id":621,"kind":16,"name":"RIGHT","url":"enums/ChordSymbolHorizontalJustify.html#RIGHT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ChordSymbolHorizontalJustify"},{"id":622,"kind":16,"name":"CENTER_STEM","url":"enums/ChordSymbolHorizontalJustify.html#CENTER_STEM","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ChordSymbolHorizontalJustify"},{"id":623,"kind":8,"name":"ChordSymbolVerticalJustify","url":"enums/ChordSymbolVerticalJustify.html","classes":"tsd-kind-enum"},{"id":624,"kind":16,"name":"TOP","url":"enums/ChordSymbolVerticalJustify.html#TOP","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ChordSymbolVerticalJustify"},{"id":625,"kind":16,"name":"BOTTOM","url":"enums/ChordSymbolVerticalJustify.html#BOTTOM","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ChordSymbolVerticalJustify"},{"id":626,"kind":8,"name":"SymbolTypes","url":"enums/SymbolTypes.html","classes":"tsd-kind-enum"},{"id":627,"kind":16,"name":"GLYPH","url":"enums/SymbolTypes.html#GLYPH","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"SymbolTypes"},{"id":628,"kind":16,"name":"TEXT","url":"enums/SymbolTypes.html#TEXT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"SymbolTypes"},{"id":629,"kind":16,"name":"LINE","url":"enums/SymbolTypes.html#LINE","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"SymbolTypes"},{"id":630,"kind":8,"name":"SymbolModifiers","url":"enums/SymbolModifiers.html","classes":"tsd-kind-enum"},{"id":631,"kind":16,"name":"NONE","url":"enums/SymbolModifiers.html#NONE","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"SymbolModifiers"},{"id":632,"kind":16,"name":"SUBSCRIPT","url":"enums/SymbolModifiers.html#SUBSCRIPT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"SymbolModifiers"},{"id":633,"kind":16,"name":"SUPERSCRIPT","url":"enums/SymbolModifiers.html#SUPERSCRIPT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"SymbolModifiers"},{"id":634,"kind":128,"name":"ChordSymbol","url":"classes/ChordSymbol.html","classes":"tsd-kind-class"},{"id":635,"kind":1024,"name":"DEBUG","url":"classes/ChordSymbol.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":636,"kind":262144,"name":"CATEGORY","url":"classes/ChordSymbol.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"ChordSymbol"},{"id":637,"kind":1024,"name":"HorizontalJustify","url":"classes/ChordSymbol.html#HorizontalJustify","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":638,"kind":1024,"name":"HorizontalJustifyString","url":"classes/ChordSymbol.html#HorizontalJustifyString","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":639,"kind":1024,"name":"VerticalJustify","url":"classes/ChordSymbol.html#VerticalJustify","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":640,"kind":1024,"name":"VerticalJustifyString","url":"classes/ChordSymbol.html#VerticalJustifyString","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":641,"kind":262144,"name":"superSubRatio","url":"classes/ChordSymbol.html#superSubRatio","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":642,"kind":262144,"name":"NO_TEXT_FORMAT","url":"classes/ChordSymbol.html#NO_TEXT_FORMAT","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":643,"kind":2048,"name":"getMetricForGlyph","url":"classes/ChordSymbol.html#getMetricForGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":644,"kind":262144,"name":"engravingFontResolution","url":"classes/ChordSymbol.html#engravingFontResolution","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":645,"kind":262144,"name":"spacingBetweenBlocks","url":"classes/ChordSymbol.html#spacingBetweenBlocks","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":646,"kind":2048,"name":"getWidthForGlyph","url":"classes/ChordSymbol.html#getWidthForGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":647,"kind":2048,"name":"getYShiftForGlyph","url":"classes/ChordSymbol.html#getYShiftForGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":648,"kind":2048,"name":"getXShiftForGlyph","url":"classes/ChordSymbol.html#getXShiftForGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":649,"kind":262144,"name":"superscriptOffset","url":"classes/ChordSymbol.html#superscriptOffset-1","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":650,"kind":262144,"name":"subscriptOffset","url":"classes/ChordSymbol.html#subscriptOffset-1","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":651,"kind":262144,"name":"kerningOffset","url":"classes/ChordSymbol.html#kerningOffset","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":652,"kind":1024,"name":"glyphs","url":"classes/ChordSymbol.html#glyphs","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":653,"kind":1024,"name":"symbolTypes","url":"classes/ChordSymbol.html#symbolTypes","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":654,"kind":1024,"name":"symbolModifiers","url":"classes/ChordSymbol.html#symbolModifiers","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":655,"kind":262144,"name":"metrics","url":"classes/ChordSymbol.html#metrics","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":656,"kind":262144,"name":"lowerKerningText","url":"classes/ChordSymbol.html#lowerKerningText","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":657,"kind":262144,"name":"upperKerningText","url":"classes/ChordSymbol.html#upperKerningText","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":658,"kind":2048,"name":"isSuperscript","url":"classes/ChordSymbol.html#isSuperscript","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":659,"kind":2048,"name":"isSubscript","url":"classes/ChordSymbol.html#isSubscript","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":660,"kind":262144,"name":"minPadding","url":"classes/ChordSymbol.html#minPadding","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":661,"kind":2048,"name":"format","url":"classes/ChordSymbol.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"ChordSymbol"},{"id":662,"kind":262144,"name":"TEXT_FONT","url":"classes/ChordSymbol.html#TEXT_FONT","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"ChordSymbol"},{"id":663,"kind":262144,"name":"Position","url":"classes/ChordSymbol.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"ChordSymbol"},{"id":664,"kind":262144,"name":"PositionString","url":"classes/ChordSymbol.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"ChordSymbol"},{"id":665,"kind":512,"name":"constructor","url":"classes/ChordSymbol.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"ChordSymbol"},{"id":666,"kind":262144,"name":"superscriptOffset","url":"classes/ChordSymbol.html#superscriptOffset","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"ChordSymbol"},{"id":667,"kind":262144,"name":"subscriptOffset","url":"classes/ChordSymbol.html#subscriptOffset","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"ChordSymbol"},{"id":668,"kind":2048,"name":"setReportWidth","url":"classes/ChordSymbol.html#setReportWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":669,"kind":2048,"name":"getReportWidth","url":"classes/ChordSymbol.html#getReportWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":670,"kind":2048,"name":"updateOverBarAdjustments","url":"classes/ChordSymbol.html#updateOverBarAdjustments","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":671,"kind":2048,"name":"updateKerningAdjustments","url":"classes/ChordSymbol.html#updateKerningAdjustments","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":672,"kind":2048,"name":"getKerningAdjustment","url":"classes/ChordSymbol.html#getKerningAdjustment","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":673,"kind":2048,"name":"getSymbolBlock","url":"classes/ChordSymbol.html#getSymbolBlock","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":674,"kind":2048,"name":"addSymbolBlock","url":"classes/ChordSymbol.html#addSymbolBlock","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":675,"kind":2048,"name":"addText","url":"classes/ChordSymbol.html#addText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":676,"kind":2048,"name":"addTextSuperscript","url":"classes/ChordSymbol.html#addTextSuperscript","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":677,"kind":2048,"name":"addTextSubscript","url":"classes/ChordSymbol.html#addTextSubscript","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":678,"kind":2048,"name":"addGlyphSuperscript","url":"classes/ChordSymbol.html#addGlyphSuperscript","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":679,"kind":2048,"name":"addGlyph","url":"classes/ChordSymbol.html#addGlyph","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":680,"kind":2048,"name":"addGlyphOrText","url":"classes/ChordSymbol.html#addGlyphOrText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":681,"kind":2048,"name":"addLine","url":"classes/ChordSymbol.html#addLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":682,"kind":2048,"name":"setFont","url":"classes/ChordSymbol.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"ChordSymbol"},{"id":683,"kind":2048,"name":"setEnableKerning","url":"classes/ChordSymbol.html#setEnableKerning","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":684,"kind":2048,"name":"setVertical","url":"classes/ChordSymbol.html#setVertical","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":685,"kind":2048,"name":"getVertical","url":"classes/ChordSymbol.html#getVertical","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":686,"kind":2048,"name":"setHorizontal","url":"classes/ChordSymbol.html#setHorizontal","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":687,"kind":2048,"name":"getHorizontal","url":"classes/ChordSymbol.html#getHorizontal","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":688,"kind":2048,"name":"getWidth","url":"classes/ChordSymbol.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"ChordSymbol"},{"id":689,"kind":2048,"name":"getYOffsetForText","url":"classes/ChordSymbol.html#getYOffsetForText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ChordSymbol"},{"id":690,"kind":2048,"name":"draw","url":"classes/ChordSymbol.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"ChordSymbol"},{"id":691,"kind":2048,"name":"setWidth","url":"classes/ChordSymbol.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":692,"kind":2048,"name":"getNote","url":"classes/ChordSymbol.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":693,"kind":2048,"name":"checkAttachedNote","url":"classes/ChordSymbol.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":694,"kind":2048,"name":"setNote","url":"classes/ChordSymbol.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":695,"kind":2048,"name":"getIndex","url":"classes/ChordSymbol.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":696,"kind":2048,"name":"checkIndex","url":"classes/ChordSymbol.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":697,"kind":2048,"name":"setIndex","url":"classes/ChordSymbol.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":698,"kind":2048,"name":"getModifierContext","url":"classes/ChordSymbol.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":699,"kind":2048,"name":"checkModifierContext","url":"classes/ChordSymbol.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":700,"kind":2048,"name":"setModifierContext","url":"classes/ChordSymbol.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":701,"kind":2048,"name":"getPosition","url":"classes/ChordSymbol.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":702,"kind":2048,"name":"setPosition","url":"classes/ChordSymbol.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":703,"kind":2048,"name":"setTextLine","url":"classes/ChordSymbol.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":704,"kind":2048,"name":"setYShift","url":"classes/ChordSymbol.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":705,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/ChordSymbol.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":706,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/ChordSymbol.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":707,"kind":2048,"name":"setXShift","url":"classes/ChordSymbol.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":708,"kind":2048,"name":"getXShift","url":"classes/ChordSymbol.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":709,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/ChordSymbol.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":710,"kind":2048,"name":"addChildElement","url":"classes/ChordSymbol.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":711,"kind":2048,"name":"getCategory","url":"classes/ChordSymbol.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":712,"kind":2048,"name":"setStyle","url":"classes/ChordSymbol.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":713,"kind":2048,"name":"setGroupStyle","url":"classes/ChordSymbol.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":714,"kind":2048,"name":"getStyle","url":"classes/ChordSymbol.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":715,"kind":2048,"name":"applyStyle","url":"classes/ChordSymbol.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":716,"kind":2048,"name":"restoreStyle","url":"classes/ChordSymbol.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":717,"kind":2048,"name":"drawWithStyle","url":"classes/ChordSymbol.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":718,"kind":2048,"name":"hasClass","url":"classes/ChordSymbol.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":719,"kind":2048,"name":"addClass","url":"classes/ChordSymbol.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":720,"kind":2048,"name":"removeClass","url":"classes/ChordSymbol.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":721,"kind":2048,"name":"onRegister","url":"classes/ChordSymbol.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":722,"kind":2048,"name":"isRendered","url":"classes/ChordSymbol.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":723,"kind":2048,"name":"setRendered","url":"classes/ChordSymbol.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":724,"kind":2048,"name":"getAttributes","url":"classes/ChordSymbol.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":725,"kind":2048,"name":"getAttribute","url":"classes/ChordSymbol.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":726,"kind":2048,"name":"getSVGElement","url":"classes/ChordSymbol.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":727,"kind":2048,"name":"setAttribute","url":"classes/ChordSymbol.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":728,"kind":2048,"name":"getBoundingBox","url":"classes/ChordSymbol.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":729,"kind":2048,"name":"getContext","url":"classes/ChordSymbol.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":730,"kind":2048,"name":"setContext","url":"classes/ChordSymbol.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":731,"kind":2048,"name":"checkContext","url":"classes/ChordSymbol.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":732,"kind":262144,"name":"font","url":"classes/ChordSymbol.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":733,"kind":2048,"name":"getFont","url":"classes/ChordSymbol.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":734,"kind":2048,"name":"resetFont","url":"classes/ChordSymbol.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":735,"kind":262144,"name":"fontInfo","url":"classes/ChordSymbol.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":736,"kind":2048,"name":"setFontSize","url":"classes/ChordSymbol.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":737,"kind":2048,"name":"getFontSize","url":"classes/ChordSymbol.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":738,"kind":262144,"name":"fontSize","url":"classes/ChordSymbol.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":739,"kind":262144,"name":"fontSizeInPoints","url":"classes/ChordSymbol.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":740,"kind":262144,"name":"fontSizeInPixels","url":"classes/ChordSymbol.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":741,"kind":262144,"name":"fontStyle","url":"classes/ChordSymbol.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":742,"kind":262144,"name":"fontWeight","url":"classes/ChordSymbol.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ChordSymbol"},{"id":743,"kind":256,"name":"ClefType","url":"interfaces/ClefType.html","classes":"tsd-kind-interface"},{"id":744,"kind":1024,"name":"point","url":"interfaces/ClefType.html#point","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ClefType"},{"id":745,"kind":1024,"name":"code","url":"interfaces/ClefType.html#code","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ClefType"},{"id":746,"kind":1024,"name":"line","url":"interfaces/ClefType.html#line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ClefType"},{"id":747,"kind":128,"name":"Clef","url":"classes/Clef.html","classes":"tsd-kind-class"},{"id":748,"kind":1024,"name":"DEBUG","url":"classes/Clef.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Clef"},{"id":749,"kind":262144,"name":"CATEGORY","url":"classes/Clef.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Clef"},{"id":750,"kind":262144,"name":"types","url":"classes/Clef.html#types","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Clef"},{"id":751,"kind":262144,"name":"Position","url":"classes/Clef.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Clef"},{"id":752,"kind":1024,"name":"TEXT_FONT","url":"classes/Clef.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Clef"},{"id":753,"kind":512,"name":"constructor","url":"classes/Clef.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Clef"},{"id":754,"kind":1024,"name":"annotation","url":"classes/Clef.html#annotation","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Clef"},{"id":755,"kind":65536,"name":"__type","url":"classes/Clef.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Clef"},{"id":756,"kind":1024,"name":"code","url":"classes/Clef.html#__type.code","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Clef.__type"},{"id":757,"kind":1024,"name":"line","url":"classes/Clef.html#__type.line","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Clef.__type"},{"id":758,"kind":1024,"name":"x_shift","url":"classes/Clef.html#__type.x_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Clef.__type"},{"id":759,"kind":1024,"name":"point","url":"classes/Clef.html#__type.point","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Clef.__type"},{"id":760,"kind":1024,"name":"clef","url":"classes/Clef.html#clef","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Clef"},{"id":761,"kind":2048,"name":"setType","url":"classes/Clef.html#setType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Clef"},{"id":762,"kind":2048,"name":"getWidth","url":"classes/Clef.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Clef"},{"id":763,"kind":2048,"name":"setStave","url":"classes/Clef.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Clef"},{"id":764,"kind":2048,"name":"draw","url":"classes/Clef.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Clef"},{"id":765,"kind":2048,"name":"getPosition","url":"classes/Clef.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":766,"kind":2048,"name":"setPosition","url":"classes/Clef.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":767,"kind":2048,"name":"getStave","url":"classes/Clef.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":768,"kind":2048,"name":"checkStave","url":"classes/Clef.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":769,"kind":2048,"name":"setWidth","url":"classes/Clef.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":770,"kind":2048,"name":"getX","url":"classes/Clef.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":771,"kind":2048,"name":"setX","url":"classes/Clef.html#setX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":772,"kind":2048,"name":"placeGlyphOnLine","url":"classes/Clef.html#placeGlyphOnLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":773,"kind":2048,"name":"getPadding","url":"classes/Clef.html#getPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":774,"kind":2048,"name":"setPadding","url":"classes/Clef.html#setPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":775,"kind":2048,"name":"setLayoutMetrics","url":"classes/Clef.html#setLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":776,"kind":2048,"name":"getLayoutMetrics","url":"classes/Clef.html#getLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":777,"kind":2048,"name":"addChildElement","url":"classes/Clef.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":778,"kind":2048,"name":"getCategory","url":"classes/Clef.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":779,"kind":2048,"name":"setStyle","url":"classes/Clef.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":780,"kind":2048,"name":"setGroupStyle","url":"classes/Clef.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":781,"kind":2048,"name":"getStyle","url":"classes/Clef.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":782,"kind":2048,"name":"applyStyle","url":"classes/Clef.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":783,"kind":2048,"name":"restoreStyle","url":"classes/Clef.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":784,"kind":2048,"name":"drawWithStyle","url":"classes/Clef.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":785,"kind":2048,"name":"hasClass","url":"classes/Clef.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":786,"kind":2048,"name":"addClass","url":"classes/Clef.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":787,"kind":2048,"name":"removeClass","url":"classes/Clef.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":788,"kind":2048,"name":"onRegister","url":"classes/Clef.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":789,"kind":2048,"name":"isRendered","url":"classes/Clef.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":790,"kind":2048,"name":"setRendered","url":"classes/Clef.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":791,"kind":2048,"name":"getAttributes","url":"classes/Clef.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":792,"kind":2048,"name":"getAttribute","url":"classes/Clef.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":793,"kind":2048,"name":"getSVGElement","url":"classes/Clef.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":794,"kind":2048,"name":"setAttribute","url":"classes/Clef.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":795,"kind":2048,"name":"getBoundingBox","url":"classes/Clef.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":796,"kind":2048,"name":"getContext","url":"classes/Clef.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":797,"kind":2048,"name":"setContext","url":"classes/Clef.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":798,"kind":2048,"name":"checkContext","url":"classes/Clef.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":799,"kind":262144,"name":"font","url":"classes/Clef.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":800,"kind":2048,"name":"setFont","url":"classes/Clef.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":801,"kind":2048,"name":"getFont","url":"classes/Clef.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":802,"kind":2048,"name":"resetFont","url":"classes/Clef.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":803,"kind":262144,"name":"fontInfo","url":"classes/Clef.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":804,"kind":2048,"name":"setFontSize","url":"classes/Clef.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":805,"kind":2048,"name":"getFontSize","url":"classes/Clef.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":806,"kind":262144,"name":"fontSize","url":"classes/Clef.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":807,"kind":262144,"name":"fontSizeInPoints","url":"classes/Clef.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":808,"kind":262144,"name":"fontSizeInPixels","url":"classes/Clef.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":809,"kind":262144,"name":"fontStyle","url":"classes/Clef.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":810,"kind":262144,"name":"fontWeight","url":"classes/Clef.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Clef"},{"id":811,"kind":128,"name":"ClefNote","url":"classes/ClefNote.html","classes":"tsd-kind-class"},{"id":812,"kind":262144,"name":"CATEGORY","url":"classes/ClefNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"ClefNote"},{"id":813,"kind":2048,"name":"plotMetrics","url":"classes/ClefNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"ClefNote"},{"id":814,"kind":1024,"name":"TEXT_FONT","url":"classes/ClefNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"ClefNote"},{"id":815,"kind":512,"name":"constructor","url":"classes/ClefNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"ClefNote"},{"id":816,"kind":2048,"name":"setType","url":"classes/ClefNote.html#setType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ClefNote"},{"id":817,"kind":2048,"name":"getClef","url":"classes/ClefNote.html#getClef","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ClefNote"},{"id":818,"kind":2048,"name":"setContext","url":"classes/ClefNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"ClefNote"},{"id":819,"kind":2048,"name":"getBoundingBox","url":"classes/ClefNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"ClefNote"},{"id":820,"kind":2048,"name":"addToModifierContext","url":"classes/ClefNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"ClefNote"},{"id":821,"kind":2048,"name":"preFormat","url":"classes/ClefNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"ClefNote"},{"id":822,"kind":2048,"name":"draw","url":"classes/ClefNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"ClefNote"},{"id":823,"kind":1024,"name":"glyph","url":"classes/ClefNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":824,"kind":1024,"name":"keys","url":"classes/ClefNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":825,"kind":1024,"name":"keyProps","url":"classes/ClefNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":826,"kind":1024,"name":"render_options","url":"classes/ClefNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":827,"kind":65536,"name":"__type","url":"classes/ClefNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"ClefNote"},{"id":828,"kind":1024,"name":"draw_stem_through_stave","url":"classes/ClefNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":829,"kind":1024,"name":"draw","url":"classes/ClefNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":830,"kind":1024,"name":"draw_dots","url":"classes/ClefNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":831,"kind":1024,"name":"draw_stem","url":"classes/ClefNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":832,"kind":1024,"name":"y_shift","url":"classes/ClefNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":833,"kind":1024,"name":"extend_left","url":"classes/ClefNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":834,"kind":1024,"name":"extend_right","url":"classes/ClefNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":835,"kind":1024,"name":"glyph_font_scale","url":"classes/ClefNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":836,"kind":1024,"name":"annotation_spacing","url":"classes/ClefNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":837,"kind":1024,"name":"glyph_font_size","url":"classes/ClefNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":838,"kind":1024,"name":"scale","url":"classes/ClefNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":839,"kind":1024,"name":"font","url":"classes/ClefNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":840,"kind":1024,"name":"stroke_px","url":"classes/ClefNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ClefNote.__type"},{"id":841,"kind":2048,"name":"getPlayNote","url":"classes/ClefNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":842,"kind":2048,"name":"setPlayNote","url":"classes/ClefNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":843,"kind":2048,"name":"isRest","url":"classes/ClefNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":844,"kind":2048,"name":"addStroke","url":"classes/ClefNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":845,"kind":2048,"name":"getStave","url":"classes/ClefNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":846,"kind":2048,"name":"checkStave","url":"classes/ClefNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":847,"kind":2048,"name":"setStave","url":"classes/ClefNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":848,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/ClefNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":849,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/ClefNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":850,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/ClefNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":851,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/ClefNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":852,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/ClefNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":853,"kind":2048,"name":"getLineNumber","url":"classes/ClefNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":854,"kind":2048,"name":"getLineForRest","url":"classes/ClefNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":855,"kind":2048,"name":"getGlyph","url":"classes/ClefNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":856,"kind":2048,"name":"getGlyphWidth","url":"classes/ClefNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":857,"kind":2048,"name":"setYs","url":"classes/ClefNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":858,"kind":2048,"name":"getYs","url":"classes/ClefNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":859,"kind":2048,"name":"getYForTopText","url":"classes/ClefNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":860,"kind":2048,"name":"getVoice","url":"classes/ClefNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":861,"kind":2048,"name":"setVoice","url":"classes/ClefNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":862,"kind":2048,"name":"getTickContext","url":"classes/ClefNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":863,"kind":2048,"name":"setTickContext","url":"classes/ClefNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":864,"kind":2048,"name":"getDuration","url":"classes/ClefNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":865,"kind":2048,"name":"isDotted","url":"classes/ClefNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":866,"kind":2048,"name":"hasStem","url":"classes/ClefNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":867,"kind":2048,"name":"getNoteType","url":"classes/ClefNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":868,"kind":2048,"name":"getBeam","url":"classes/ClefNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":869,"kind":2048,"name":"checkBeam","url":"classes/ClefNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":870,"kind":2048,"name":"hasBeam","url":"classes/ClefNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":871,"kind":2048,"name":"setBeam","url":"classes/ClefNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":872,"kind":2048,"name":"addModifier","url":"classes/ClefNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":873,"kind":2048,"name":"getModifiersByType","url":"classes/ClefNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":874,"kind":2048,"name":"getModifierStartXY","url":"classes/ClefNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":875,"kind":2048,"name":"getRightParenthesisPx","url":"classes/ClefNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":876,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/ClefNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":877,"kind":2048,"name":"getFirstDotPx","url":"classes/ClefNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":878,"kind":2048,"name":"getMetrics","url":"classes/ClefNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":879,"kind":2048,"name":"getAbsoluteX","url":"classes/ClefNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":880,"kind":2048,"name":"getStemDirection","url":"classes/ClefNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":881,"kind":2048,"name":"getStemExtents","url":"classes/ClefNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":882,"kind":2048,"name":"getTieRightX","url":"classes/ClefNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":883,"kind":2048,"name":"getTieLeftX","url":"classes/ClefNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":884,"kind":2048,"name":"getKeys","url":"classes/ClefNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":885,"kind":2048,"name":"getKeyProps","url":"classes/ClefNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":886,"kind":2048,"name":"reset","url":"classes/ClefNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":887,"kind":2048,"name":"getTicks","url":"classes/ClefNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":888,"kind":2048,"name":"setIgnoreTicks","url":"classes/ClefNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":889,"kind":2048,"name":"setWidth","url":"classes/ClefNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":890,"kind":2048,"name":"getWidth","url":"classes/ClefNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":891,"kind":2048,"name":"setXShift","url":"classes/ClefNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":892,"kind":2048,"name":"getXShift","url":"classes/ClefNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":893,"kind":2048,"name":"getX","url":"classes/ClefNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":894,"kind":2048,"name":"getFormatterMetrics","url":"classes/ClefNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":895,"kind":2048,"name":"getCenterXShift","url":"classes/ClefNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":896,"kind":2048,"name":"setCenterXShift","url":"classes/ClefNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":897,"kind":2048,"name":"isCenterAligned","url":"classes/ClefNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":898,"kind":2048,"name":"setCenterAlignment","url":"classes/ClefNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":899,"kind":2048,"name":"getTuplet","url":"classes/ClefNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":900,"kind":2048,"name":"getTupletStack","url":"classes/ClefNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":901,"kind":2048,"name":"resetTuplet","url":"classes/ClefNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":902,"kind":2048,"name":"setTuplet","url":"classes/ClefNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":903,"kind":2048,"name":"getModifiers","url":"classes/ClefNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":904,"kind":2048,"name":"checkTickContext","url":"classes/ClefNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":905,"kind":262144,"name":"preFormatted","url":"classes/ClefNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":906,"kind":2048,"name":"postFormat","url":"classes/ClefNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":907,"kind":262144,"name":"postFormatted","url":"classes/ClefNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":908,"kind":2048,"name":"getIntrinsicTicks","url":"classes/ClefNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":909,"kind":2048,"name":"setIntrinsicTicks","url":"classes/ClefNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":910,"kind":2048,"name":"getTickMultiplier","url":"classes/ClefNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":911,"kind":2048,"name":"applyTickMultiplier","url":"classes/ClefNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":912,"kind":2048,"name":"setDuration","url":"classes/ClefNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":913,"kind":2048,"name":"setModifierContext","url":"classes/ClefNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":914,"kind":2048,"name":"getModifierContext","url":"classes/ClefNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":915,"kind":2048,"name":"checkModifierContext","url":"classes/ClefNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":916,"kind":2048,"name":"addChildElement","url":"classes/ClefNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":917,"kind":2048,"name":"getCategory","url":"classes/ClefNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":918,"kind":2048,"name":"setStyle","url":"classes/ClefNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":919,"kind":2048,"name":"setGroupStyle","url":"classes/ClefNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":920,"kind":2048,"name":"getStyle","url":"classes/ClefNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":921,"kind":2048,"name":"applyStyle","url":"classes/ClefNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":922,"kind":2048,"name":"restoreStyle","url":"classes/ClefNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":923,"kind":2048,"name":"drawWithStyle","url":"classes/ClefNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":924,"kind":2048,"name":"hasClass","url":"classes/ClefNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":925,"kind":2048,"name":"addClass","url":"classes/ClefNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":926,"kind":2048,"name":"removeClass","url":"classes/ClefNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":927,"kind":2048,"name":"onRegister","url":"classes/ClefNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":928,"kind":2048,"name":"isRendered","url":"classes/ClefNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":929,"kind":2048,"name":"setRendered","url":"classes/ClefNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":930,"kind":2048,"name":"getAttributes","url":"classes/ClefNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":931,"kind":2048,"name":"getAttribute","url":"classes/ClefNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":932,"kind":2048,"name":"getSVGElement","url":"classes/ClefNote.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":933,"kind":2048,"name":"setAttribute","url":"classes/ClefNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":934,"kind":2048,"name":"getContext","url":"classes/ClefNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":935,"kind":2048,"name":"checkContext","url":"classes/ClefNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":936,"kind":262144,"name":"font","url":"classes/ClefNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":937,"kind":2048,"name":"setFont","url":"classes/ClefNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":938,"kind":2048,"name":"getFont","url":"classes/ClefNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":939,"kind":2048,"name":"resetFont","url":"classes/ClefNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":940,"kind":262144,"name":"fontInfo","url":"classes/ClefNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":941,"kind":2048,"name":"setFontSize","url":"classes/ClefNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":942,"kind":2048,"name":"getFontSize","url":"classes/ClefNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":943,"kind":262144,"name":"fontSize","url":"classes/ClefNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":944,"kind":262144,"name":"fontSizeInPoints","url":"classes/ClefNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":945,"kind":262144,"name":"fontSizeInPixels","url":"classes/ClefNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":946,"kind":262144,"name":"fontStyle","url":"classes/ClefNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":947,"kind":262144,"name":"fontWeight","url":"classes/ClefNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"ClefNote"},{"id":948,"kind":256,"name":"CrescendoParams","url":"interfaces/CrescendoParams.html","classes":"tsd-kind-interface"},{"id":949,"kind":1024,"name":"reverse","url":"interfaces/CrescendoParams.html#reverse","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CrescendoParams"},{"id":950,"kind":1024,"name":"height","url":"interfaces/CrescendoParams.html#height","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CrescendoParams"},{"id":951,"kind":1024,"name":"y","url":"interfaces/CrescendoParams.html#y","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CrescendoParams"},{"id":952,"kind":1024,"name":"end_x","url":"interfaces/CrescendoParams.html#end_x","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CrescendoParams"},{"id":953,"kind":1024,"name":"begin_x","url":"interfaces/CrescendoParams.html#begin_x","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CrescendoParams"},{"id":954,"kind":128,"name":"Crescendo","url":"classes/Crescendo.html","classes":"tsd-kind-class"},{"id":955,"kind":1024,"name":"DEBUG","url":"classes/Crescendo.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Crescendo"},{"id":956,"kind":262144,"name":"CATEGORY","url":"classes/Crescendo.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Crescendo"},{"id":957,"kind":2048,"name":"plotMetrics","url":"classes/Crescendo.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Crescendo"},{"id":958,"kind":1024,"name":"TEXT_FONT","url":"classes/Crescendo.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Crescendo"},{"id":959,"kind":512,"name":"constructor","url":"classes/Crescendo.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Crescendo"},{"id":960,"kind":2048,"name":"setLine","url":"classes/Crescendo.html#setLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Crescendo"},{"id":961,"kind":2048,"name":"setHeight","url":"classes/Crescendo.html#setHeight","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Crescendo"},{"id":962,"kind":2048,"name":"setDecrescendo","url":"classes/Crescendo.html#setDecrescendo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Crescendo"},{"id":963,"kind":2048,"name":"preFormat","url":"classes/Crescendo.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Crescendo"},{"id":964,"kind":2048,"name":"draw","url":"classes/Crescendo.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Crescendo"},{"id":965,"kind":1024,"name":"glyph","url":"classes/Crescendo.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":966,"kind":1024,"name":"keys","url":"classes/Crescendo.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":967,"kind":1024,"name":"keyProps","url":"classes/Crescendo.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":968,"kind":1024,"name":"render_options","url":"classes/Crescendo.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":969,"kind":65536,"name":"__type","url":"classes/Crescendo.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Crescendo"},{"id":970,"kind":1024,"name":"draw_stem_through_stave","url":"classes/Crescendo.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":971,"kind":1024,"name":"draw","url":"classes/Crescendo.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":972,"kind":1024,"name":"draw_dots","url":"classes/Crescendo.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":973,"kind":1024,"name":"draw_stem","url":"classes/Crescendo.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":974,"kind":1024,"name":"y_shift","url":"classes/Crescendo.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":975,"kind":1024,"name":"extend_left","url":"classes/Crescendo.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":976,"kind":1024,"name":"extend_right","url":"classes/Crescendo.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":977,"kind":1024,"name":"glyph_font_scale","url":"classes/Crescendo.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":978,"kind":1024,"name":"annotation_spacing","url":"classes/Crescendo.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":979,"kind":1024,"name":"glyph_font_size","url":"classes/Crescendo.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":980,"kind":1024,"name":"scale","url":"classes/Crescendo.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":981,"kind":1024,"name":"font","url":"classes/Crescendo.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":982,"kind":1024,"name":"stroke_px","url":"classes/Crescendo.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Crescendo.__type"},{"id":983,"kind":2048,"name":"getPlayNote","url":"classes/Crescendo.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":984,"kind":2048,"name":"setPlayNote","url":"classes/Crescendo.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":985,"kind":2048,"name":"isRest","url":"classes/Crescendo.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":986,"kind":2048,"name":"addStroke","url":"classes/Crescendo.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":987,"kind":2048,"name":"getStave","url":"classes/Crescendo.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":988,"kind":2048,"name":"checkStave","url":"classes/Crescendo.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":989,"kind":2048,"name":"setStave","url":"classes/Crescendo.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":990,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/Crescendo.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":991,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/Crescendo.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":992,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/Crescendo.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":993,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/Crescendo.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":994,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/Crescendo.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":995,"kind":2048,"name":"getLineNumber","url":"classes/Crescendo.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":996,"kind":2048,"name":"getLineForRest","url":"classes/Crescendo.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":997,"kind":2048,"name":"getGlyph","url":"classes/Crescendo.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":998,"kind":2048,"name":"getGlyphWidth","url":"classes/Crescendo.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":999,"kind":2048,"name":"setYs","url":"classes/Crescendo.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1000,"kind":2048,"name":"getYs","url":"classes/Crescendo.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1001,"kind":2048,"name":"getYForTopText","url":"classes/Crescendo.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1002,"kind":2048,"name":"getVoice","url":"classes/Crescendo.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1003,"kind":2048,"name":"setVoice","url":"classes/Crescendo.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1004,"kind":2048,"name":"getTickContext","url":"classes/Crescendo.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1005,"kind":2048,"name":"setTickContext","url":"classes/Crescendo.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1006,"kind":2048,"name":"getDuration","url":"classes/Crescendo.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1007,"kind":2048,"name":"isDotted","url":"classes/Crescendo.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1008,"kind":2048,"name":"hasStem","url":"classes/Crescendo.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1009,"kind":2048,"name":"getNoteType","url":"classes/Crescendo.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1010,"kind":2048,"name":"getBeam","url":"classes/Crescendo.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1011,"kind":2048,"name":"checkBeam","url":"classes/Crescendo.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1012,"kind":2048,"name":"hasBeam","url":"classes/Crescendo.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1013,"kind":2048,"name":"setBeam","url":"classes/Crescendo.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1014,"kind":2048,"name":"addModifier","url":"classes/Crescendo.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1015,"kind":2048,"name":"getModifiersByType","url":"classes/Crescendo.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1016,"kind":2048,"name":"getModifierStartXY","url":"classes/Crescendo.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1017,"kind":2048,"name":"getRightParenthesisPx","url":"classes/Crescendo.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1018,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/Crescendo.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1019,"kind":2048,"name":"getFirstDotPx","url":"classes/Crescendo.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1020,"kind":2048,"name":"getMetrics","url":"classes/Crescendo.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1021,"kind":2048,"name":"getAbsoluteX","url":"classes/Crescendo.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1022,"kind":2048,"name":"getStemDirection","url":"classes/Crescendo.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1023,"kind":2048,"name":"getStemExtents","url":"classes/Crescendo.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1024,"kind":2048,"name":"getTieRightX","url":"classes/Crescendo.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1025,"kind":2048,"name":"getTieLeftX","url":"classes/Crescendo.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1026,"kind":2048,"name":"getKeys","url":"classes/Crescendo.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1027,"kind":2048,"name":"getKeyProps","url":"classes/Crescendo.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1028,"kind":2048,"name":"reset","url":"classes/Crescendo.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1029,"kind":2048,"name":"getTicks","url":"classes/Crescendo.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1030,"kind":2048,"name":"setIgnoreTicks","url":"classes/Crescendo.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1031,"kind":2048,"name":"setWidth","url":"classes/Crescendo.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1032,"kind":2048,"name":"getWidth","url":"classes/Crescendo.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1033,"kind":2048,"name":"setXShift","url":"classes/Crescendo.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1034,"kind":2048,"name":"getXShift","url":"classes/Crescendo.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1035,"kind":2048,"name":"getX","url":"classes/Crescendo.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1036,"kind":2048,"name":"getFormatterMetrics","url":"classes/Crescendo.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1037,"kind":2048,"name":"getCenterXShift","url":"classes/Crescendo.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1038,"kind":2048,"name":"setCenterXShift","url":"classes/Crescendo.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1039,"kind":2048,"name":"isCenterAligned","url":"classes/Crescendo.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1040,"kind":2048,"name":"setCenterAlignment","url":"classes/Crescendo.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1041,"kind":2048,"name":"getTuplet","url":"classes/Crescendo.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1042,"kind":2048,"name":"getTupletStack","url":"classes/Crescendo.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1043,"kind":2048,"name":"resetTuplet","url":"classes/Crescendo.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1044,"kind":2048,"name":"setTuplet","url":"classes/Crescendo.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1045,"kind":2048,"name":"addToModifierContext","url":"classes/Crescendo.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1046,"kind":2048,"name":"getModifiers","url":"classes/Crescendo.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1047,"kind":2048,"name":"checkTickContext","url":"classes/Crescendo.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1048,"kind":262144,"name":"preFormatted","url":"classes/Crescendo.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1049,"kind":2048,"name":"postFormat","url":"classes/Crescendo.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1050,"kind":262144,"name":"postFormatted","url":"classes/Crescendo.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1051,"kind":2048,"name":"getIntrinsicTicks","url":"classes/Crescendo.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1052,"kind":2048,"name":"setIntrinsicTicks","url":"classes/Crescendo.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1053,"kind":2048,"name":"getTickMultiplier","url":"classes/Crescendo.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1054,"kind":2048,"name":"applyTickMultiplier","url":"classes/Crescendo.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1055,"kind":2048,"name":"setDuration","url":"classes/Crescendo.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1056,"kind":2048,"name":"setModifierContext","url":"classes/Crescendo.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1057,"kind":2048,"name":"getModifierContext","url":"classes/Crescendo.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1058,"kind":2048,"name":"checkModifierContext","url":"classes/Crescendo.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1059,"kind":2048,"name":"addChildElement","url":"classes/Crescendo.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1060,"kind":2048,"name":"getCategory","url":"classes/Crescendo.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1061,"kind":2048,"name":"setStyle","url":"classes/Crescendo.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1062,"kind":2048,"name":"setGroupStyle","url":"classes/Crescendo.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1063,"kind":2048,"name":"getStyle","url":"classes/Crescendo.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1064,"kind":2048,"name":"applyStyle","url":"classes/Crescendo.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1065,"kind":2048,"name":"restoreStyle","url":"classes/Crescendo.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1066,"kind":2048,"name":"drawWithStyle","url":"classes/Crescendo.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1067,"kind":2048,"name":"hasClass","url":"classes/Crescendo.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1068,"kind":2048,"name":"addClass","url":"classes/Crescendo.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1069,"kind":2048,"name":"removeClass","url":"classes/Crescendo.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1070,"kind":2048,"name":"onRegister","url":"classes/Crescendo.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1071,"kind":2048,"name":"isRendered","url":"classes/Crescendo.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1072,"kind":2048,"name":"setRendered","url":"classes/Crescendo.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1073,"kind":2048,"name":"getAttributes","url":"classes/Crescendo.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1074,"kind":2048,"name":"getAttribute","url":"classes/Crescendo.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1075,"kind":2048,"name":"getSVGElement","url":"classes/Crescendo.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1076,"kind":2048,"name":"setAttribute","url":"classes/Crescendo.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1077,"kind":2048,"name":"getBoundingBox","url":"classes/Crescendo.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1078,"kind":2048,"name":"getContext","url":"classes/Crescendo.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1079,"kind":2048,"name":"setContext","url":"classes/Crescendo.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1080,"kind":2048,"name":"checkContext","url":"classes/Crescendo.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1081,"kind":262144,"name":"font","url":"classes/Crescendo.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1082,"kind":2048,"name":"setFont","url":"classes/Crescendo.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1083,"kind":2048,"name":"getFont","url":"classes/Crescendo.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1084,"kind":2048,"name":"resetFont","url":"classes/Crescendo.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1085,"kind":262144,"name":"fontInfo","url":"classes/Crescendo.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1086,"kind":2048,"name":"setFontSize","url":"classes/Crescendo.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1087,"kind":2048,"name":"getFontSize","url":"classes/Crescendo.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1088,"kind":262144,"name":"fontSize","url":"classes/Crescendo.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1089,"kind":262144,"name":"fontSizeInPoints","url":"classes/Crescendo.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1090,"kind":262144,"name":"fontSizeInPixels","url":"classes/Crescendo.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1091,"kind":262144,"name":"fontStyle","url":"classes/Crescendo.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1092,"kind":262144,"name":"fontWeight","url":"classes/Crescendo.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Crescendo"},{"id":1093,"kind":256,"name":"CurveOptions","url":"interfaces/CurveOptions.html","classes":"tsd-kind-interface"},{"id":1094,"kind":1024,"name":"cps","url":"interfaces/CurveOptions.html#cps","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CurveOptions"},{"id":1095,"kind":1024,"name":"thickness","url":"interfaces/CurveOptions.html#thickness","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CurveOptions"},{"id":1096,"kind":1024,"name":"x_shift","url":"interfaces/CurveOptions.html#x_shift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CurveOptions"},{"id":1097,"kind":1024,"name":"y_shift","url":"interfaces/CurveOptions.html#y_shift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CurveOptions"},{"id":1098,"kind":1024,"name":"position","url":"interfaces/CurveOptions.html#position","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CurveOptions"},{"id":1099,"kind":1024,"name":"position_end","url":"interfaces/CurveOptions.html#position_end","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CurveOptions"},{"id":1100,"kind":1024,"name":"invert","url":"interfaces/CurveOptions.html#invert","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CurveOptions"},{"id":1101,"kind":8,"name":"CurvePosition","url":"enums/CurvePosition.html","classes":"tsd-kind-enum"},{"id":1102,"kind":16,"name":"NEAR_HEAD","url":"enums/CurvePosition.html#NEAR_HEAD","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"CurvePosition"},{"id":1103,"kind":16,"name":"NEAR_TOP","url":"enums/CurvePosition.html#NEAR_TOP","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"CurvePosition"},{"id":1104,"kind":128,"name":"Curve","url":"classes/Curve.html","classes":"tsd-kind-class"},{"id":1105,"kind":262144,"name":"CATEGORY","url":"classes/Curve.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Curve"},{"id":1106,"kind":262144,"name":"Position","url":"classes/Curve.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Curve"},{"id":1107,"kind":262144,"name":"PositionString","url":"classes/Curve.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Curve"},{"id":1108,"kind":1024,"name":"TEXT_FONT","url":"classes/Curve.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Curve"},{"id":1109,"kind":512,"name":"constructor","url":"classes/Curve.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Curve"},{"id":1110,"kind":1024,"name":"render_options","url":"classes/Curve.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Curve"},{"id":1111,"kind":2048,"name":"setNotes","url":"classes/Curve.html#setNotes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Curve"},{"id":1112,"kind":2048,"name":"isPartial","url":"classes/Curve.html#isPartial","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Curve"},{"id":1113,"kind":2048,"name":"renderCurve","url":"classes/Curve.html#renderCurve","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Curve"},{"id":1114,"kind":2048,"name":"draw","url":"classes/Curve.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Curve"},{"id":1115,"kind":2048,"name":"addChildElement","url":"classes/Curve.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1116,"kind":2048,"name":"getCategory","url":"classes/Curve.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1117,"kind":2048,"name":"setStyle","url":"classes/Curve.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1118,"kind":2048,"name":"setGroupStyle","url":"classes/Curve.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1119,"kind":2048,"name":"getStyle","url":"classes/Curve.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1120,"kind":2048,"name":"applyStyle","url":"classes/Curve.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1121,"kind":2048,"name":"restoreStyle","url":"classes/Curve.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1122,"kind":2048,"name":"drawWithStyle","url":"classes/Curve.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1123,"kind":2048,"name":"hasClass","url":"classes/Curve.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1124,"kind":2048,"name":"addClass","url":"classes/Curve.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1125,"kind":2048,"name":"removeClass","url":"classes/Curve.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1126,"kind":2048,"name":"onRegister","url":"classes/Curve.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1127,"kind":2048,"name":"isRendered","url":"classes/Curve.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1128,"kind":2048,"name":"setRendered","url":"classes/Curve.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1129,"kind":2048,"name":"getAttributes","url":"classes/Curve.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1130,"kind":2048,"name":"getAttribute","url":"classes/Curve.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1131,"kind":2048,"name":"getSVGElement","url":"classes/Curve.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1132,"kind":2048,"name":"setAttribute","url":"classes/Curve.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1133,"kind":2048,"name":"getBoundingBox","url":"classes/Curve.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1134,"kind":2048,"name":"getContext","url":"classes/Curve.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1135,"kind":2048,"name":"setContext","url":"classes/Curve.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1136,"kind":2048,"name":"checkContext","url":"classes/Curve.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1137,"kind":262144,"name":"font","url":"classes/Curve.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1138,"kind":2048,"name":"setFont","url":"classes/Curve.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1139,"kind":2048,"name":"getFont","url":"classes/Curve.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1140,"kind":2048,"name":"resetFont","url":"classes/Curve.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1141,"kind":262144,"name":"fontInfo","url":"classes/Curve.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1142,"kind":2048,"name":"setFontSize","url":"classes/Curve.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1143,"kind":2048,"name":"getFontSize","url":"classes/Curve.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1144,"kind":262144,"name":"fontSize","url":"classes/Curve.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1145,"kind":262144,"name":"fontSizeInPoints","url":"classes/Curve.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1146,"kind":262144,"name":"fontSizeInPixels","url":"classes/Curve.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1147,"kind":262144,"name":"fontStyle","url":"classes/Curve.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1148,"kind":262144,"name":"fontWeight","url":"classes/Curve.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Curve"},{"id":1149,"kind":128,"name":"Dot","url":"classes/Dot.html","classes":"tsd-kind-class"},{"id":1150,"kind":262144,"name":"CATEGORY","url":"classes/Dot.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Dot"},{"id":1151,"kind":2048,"name":"getDots","url":"classes/Dot.html#getDots","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Dot"},{"id":1152,"kind":2048,"name":"buildAndAttach","url":"classes/Dot.html#buildAndAttach","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Dot"},{"id":1153,"kind":2048,"name":"format","url":"classes/Dot.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Dot"},{"id":1154,"kind":262144,"name":"Position","url":"classes/Dot.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Dot"},{"id":1155,"kind":262144,"name":"PositionString","url":"classes/Dot.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Dot"},{"id":1156,"kind":1024,"name":"TEXT_FONT","url":"classes/Dot.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Dot"},{"id":1157,"kind":512,"name":"constructor","url":"classes/Dot.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Dot"},{"id":1158,"kind":2048,"name":"setNote","url":"classes/Dot.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Dot"},{"id":1159,"kind":2048,"name":"setDotShiftY","url":"classes/Dot.html#setDotShiftY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Dot"},{"id":1160,"kind":2048,"name":"draw","url":"classes/Dot.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Dot"},{"id":1161,"kind":2048,"name":"getWidth","url":"classes/Dot.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1162,"kind":2048,"name":"setWidth","url":"classes/Dot.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1163,"kind":2048,"name":"getNote","url":"classes/Dot.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1164,"kind":2048,"name":"checkAttachedNote","url":"classes/Dot.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1165,"kind":2048,"name":"getIndex","url":"classes/Dot.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1166,"kind":2048,"name":"checkIndex","url":"classes/Dot.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1167,"kind":2048,"name":"setIndex","url":"classes/Dot.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1168,"kind":2048,"name":"getModifierContext","url":"classes/Dot.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1169,"kind":2048,"name":"checkModifierContext","url":"classes/Dot.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1170,"kind":2048,"name":"setModifierContext","url":"classes/Dot.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1171,"kind":2048,"name":"getPosition","url":"classes/Dot.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1172,"kind":2048,"name":"setPosition","url":"classes/Dot.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1173,"kind":2048,"name":"setTextLine","url":"classes/Dot.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1174,"kind":2048,"name":"setYShift","url":"classes/Dot.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1175,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/Dot.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1176,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/Dot.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1177,"kind":2048,"name":"setXShift","url":"classes/Dot.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1178,"kind":2048,"name":"getXShift","url":"classes/Dot.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1179,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/Dot.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1180,"kind":2048,"name":"addChildElement","url":"classes/Dot.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1181,"kind":2048,"name":"getCategory","url":"classes/Dot.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1182,"kind":2048,"name":"setStyle","url":"classes/Dot.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1183,"kind":2048,"name":"setGroupStyle","url":"classes/Dot.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1184,"kind":2048,"name":"getStyle","url":"classes/Dot.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1185,"kind":2048,"name":"applyStyle","url":"classes/Dot.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1186,"kind":2048,"name":"restoreStyle","url":"classes/Dot.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1187,"kind":2048,"name":"drawWithStyle","url":"classes/Dot.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1188,"kind":2048,"name":"hasClass","url":"classes/Dot.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1189,"kind":2048,"name":"addClass","url":"classes/Dot.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1190,"kind":2048,"name":"removeClass","url":"classes/Dot.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1191,"kind":2048,"name":"onRegister","url":"classes/Dot.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1192,"kind":2048,"name":"isRendered","url":"classes/Dot.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1193,"kind":2048,"name":"setRendered","url":"classes/Dot.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1194,"kind":2048,"name":"getAttributes","url":"classes/Dot.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1195,"kind":2048,"name":"getAttribute","url":"classes/Dot.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1196,"kind":2048,"name":"getSVGElement","url":"classes/Dot.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1197,"kind":2048,"name":"setAttribute","url":"classes/Dot.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1198,"kind":2048,"name":"getBoundingBox","url":"classes/Dot.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1199,"kind":2048,"name":"getContext","url":"classes/Dot.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1200,"kind":2048,"name":"setContext","url":"classes/Dot.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1201,"kind":2048,"name":"checkContext","url":"classes/Dot.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1202,"kind":262144,"name":"font","url":"classes/Dot.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1203,"kind":2048,"name":"setFont","url":"classes/Dot.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1204,"kind":2048,"name":"getFont","url":"classes/Dot.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1205,"kind":2048,"name":"resetFont","url":"classes/Dot.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1206,"kind":262144,"name":"fontInfo","url":"classes/Dot.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1207,"kind":2048,"name":"setFontSize","url":"classes/Dot.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1208,"kind":2048,"name":"getFontSize","url":"classes/Dot.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1209,"kind":262144,"name":"fontSize","url":"classes/Dot.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1210,"kind":262144,"name":"fontSizeInPoints","url":"classes/Dot.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1211,"kind":262144,"name":"fontSizeInPixels","url":"classes/Dot.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1212,"kind":262144,"name":"fontStyle","url":"classes/Dot.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1213,"kind":262144,"name":"fontWeight","url":"classes/Dot.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Dot"},{"id":1214,"kind":4194304,"name":"CommitHook","url":"modules.html#CommitHook","classes":"tsd-kind-type-alias"},{"id":1215,"kind":65536,"name":"__type","url":"modules.html#CommitHook.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"CommitHook"},{"id":1216,"kind":128,"name":"EasyScoreGrammar","url":"classes/EasyScoreGrammar.html","classes":"tsd-kind-class"},{"id":1217,"kind":512,"name":"constructor","url":"classes/EasyScoreGrammar.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1218,"kind":1024,"name":"builder","url":"classes/EasyScoreGrammar.html#builder","classes":"tsd-kind-property tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1219,"kind":2048,"name":"begin","url":"classes/EasyScoreGrammar.html#begin","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1220,"kind":2048,"name":"LINE","url":"classes/EasyScoreGrammar.html#LINE","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1221,"kind":2048,"name":"PIECE","url":"classes/EasyScoreGrammar.html#PIECE","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1222,"kind":2048,"name":"PIECES","url":"classes/EasyScoreGrammar.html#PIECES","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1223,"kind":2048,"name":"PARAMS","url":"classes/EasyScoreGrammar.html#PARAMS","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1224,"kind":2048,"name":"CHORDORNOTE","url":"classes/EasyScoreGrammar.html#CHORDORNOTE","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1225,"kind":2048,"name":"CHORD","url":"classes/EasyScoreGrammar.html#CHORD","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1226,"kind":2048,"name":"NOTES","url":"classes/EasyScoreGrammar.html#NOTES","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1227,"kind":2048,"name":"NOTE","url":"classes/EasyScoreGrammar.html#NOTE","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1228,"kind":2048,"name":"SINGLENOTE","url":"classes/EasyScoreGrammar.html#SINGLENOTE","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1229,"kind":2048,"name":"ACCIDENTAL","url":"classes/EasyScoreGrammar.html#ACCIDENTAL","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1230,"kind":2048,"name":"DOTS","url":"classes/EasyScoreGrammar.html#DOTS","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1231,"kind":2048,"name":"TYPE","url":"classes/EasyScoreGrammar.html#TYPE","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1232,"kind":2048,"name":"DURATION","url":"classes/EasyScoreGrammar.html#DURATION","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1233,"kind":2048,"name":"OPTS","url":"classes/EasyScoreGrammar.html#OPTS","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1234,"kind":2048,"name":"KEYVALS","url":"classes/EasyScoreGrammar.html#KEYVALS","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1235,"kind":2048,"name":"KEYVAL","url":"classes/EasyScoreGrammar.html#KEYVAL","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1236,"kind":2048,"name":"VAL","url":"classes/EasyScoreGrammar.html#VAL","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1237,"kind":2048,"name":"KEY","url":"classes/EasyScoreGrammar.html#KEY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1238,"kind":2048,"name":"DVAL","url":"classes/EasyScoreGrammar.html#DVAL","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1239,"kind":2048,"name":"SVAL","url":"classes/EasyScoreGrammar.html#SVAL","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1240,"kind":2048,"name":"NOTENAME","url":"classes/EasyScoreGrammar.html#NOTENAME","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1241,"kind":2048,"name":"OCTAVE","url":"classes/EasyScoreGrammar.html#OCTAVE","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1242,"kind":2048,"name":"ACCIDENTALS","url":"classes/EasyScoreGrammar.html#ACCIDENTALS","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1243,"kind":2048,"name":"MICROTONES","url":"classes/EasyScoreGrammar.html#MICROTONES","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1244,"kind":2048,"name":"DURATIONS","url":"classes/EasyScoreGrammar.html#DURATIONS","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1245,"kind":2048,"name":"TYPES","url":"classes/EasyScoreGrammar.html#TYPES","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1246,"kind":2048,"name":"LPAREN","url":"classes/EasyScoreGrammar.html#LPAREN","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1247,"kind":2048,"name":"RPAREN","url":"classes/EasyScoreGrammar.html#RPAREN","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1248,"kind":2048,"name":"COMMA","url":"classes/EasyScoreGrammar.html#COMMA","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1249,"kind":2048,"name":"DOT","url":"classes/EasyScoreGrammar.html#DOT","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1250,"kind":2048,"name":"SLASH","url":"classes/EasyScoreGrammar.html#SLASH","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1251,"kind":2048,"name":"MAYBESLASH","url":"classes/EasyScoreGrammar.html#MAYBESLASH","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1252,"kind":2048,"name":"EQUALS","url":"classes/EasyScoreGrammar.html#EQUALS","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1253,"kind":2048,"name":"LBRACKET","url":"classes/EasyScoreGrammar.html#LBRACKET","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1254,"kind":2048,"name":"RBRACKET","url":"classes/EasyScoreGrammar.html#RBRACKET","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1255,"kind":2048,"name":"EOL","url":"classes/EasyScoreGrammar.html#EOL","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScoreGrammar"},{"id":1256,"kind":256,"name":"NotePiece","url":"interfaces/NotePiece.html","classes":"tsd-kind-interface"},{"id":1257,"kind":1024,"name":"key","url":"interfaces/NotePiece.html#key","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NotePiece"},{"id":1258,"kind":1024,"name":"accid","url":"interfaces/NotePiece.html#accid","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NotePiece"},{"id":1259,"kind":1024,"name":"octave","url":"interfaces/NotePiece.html#octave","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NotePiece"},{"id":1260,"kind":128,"name":"Piece","url":"classes/Piece.html","classes":"tsd-kind-class"},{"id":1261,"kind":512,"name":"constructor","url":"classes/Piece.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Piece"},{"id":1262,"kind":1024,"name":"chord","url":"classes/Piece.html#chord","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Piece"},{"id":1263,"kind":1024,"name":"duration","url":"classes/Piece.html#duration","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Piece"},{"id":1264,"kind":1024,"name":"dots","url":"classes/Piece.html#dots","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Piece"},{"id":1265,"kind":1024,"name":"type","url":"classes/Piece.html#type","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Piece"},{"id":1266,"kind":1024,"name":"options","url":"classes/Piece.html#options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Piece"},{"id":1267,"kind":65536,"name":"__type","url":"classes/Piece.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Piece"},{"id":1268,"kind":256,"name":"BuilderElements","url":"interfaces/BuilderElements.html","classes":"tsd-kind-interface"},{"id":1269,"kind":1024,"name":"notes","url":"interfaces/BuilderElements.html#notes","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"BuilderElements"},{"id":1270,"kind":1024,"name":"accidentals","url":"interfaces/BuilderElements.html#accidentals","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"BuilderElements"},{"id":1271,"kind":256,"name":"BuilderOptions","url":"interfaces/BuilderOptions.html","classes":"tsd-kind-interface"},{"id":1272,"kind":1024,"name":"stem","url":"interfaces/BuilderOptions.html#stem","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"BuilderOptions"},{"id":1273,"kind":1024,"name":"clef","url":"interfaces/BuilderOptions.html#clef","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"BuilderOptions"},{"id":1274,"kind":128,"name":"Builder","url":"classes/Builder.html","classes":"tsd-kind-class"},{"id":1275,"kind":512,"name":"constructor","url":"classes/Builder.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Builder"},{"id":1276,"kind":1024,"name":"factory","url":"classes/Builder.html#factory","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Builder"},{"id":1277,"kind":1024,"name":"elements","url":"classes/Builder.html#elements","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Builder"},{"id":1278,"kind":1024,"name":"options","url":"classes/Builder.html#options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Builder"},{"id":1279,"kind":1024,"name":"piece","url":"classes/Builder.html#piece","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Builder"},{"id":1280,"kind":1024,"name":"commitHooks","url":"classes/Builder.html#commitHooks","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Builder"},{"id":1281,"kind":1024,"name":"rollingDuration","url":"classes/Builder.html#rollingDuration","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Builder"},{"id":1282,"kind":2048,"name":"reset","url":"classes/Builder.html#reset","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1283,"kind":2048,"name":"getFactory","url":"classes/Builder.html#getFactory","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1284,"kind":2048,"name":"getElements","url":"classes/Builder.html#getElements","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1285,"kind":2048,"name":"addCommitHook","url":"classes/Builder.html#addCommitHook","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1286,"kind":2048,"name":"resetPiece","url":"classes/Builder.html#resetPiece","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1287,"kind":2048,"name":"setNoteDots","url":"classes/Builder.html#setNoteDots","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1288,"kind":2048,"name":"setNoteDuration","url":"classes/Builder.html#setNoteDuration","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1289,"kind":2048,"name":"setNoteType","url":"classes/Builder.html#setNoteType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1290,"kind":2048,"name":"addNoteOption","url":"classes/Builder.html#addNoteOption","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1291,"kind":2048,"name":"addNote","url":"classes/Builder.html#addNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1292,"kind":2048,"name":"addSingleNote","url":"classes/Builder.html#addSingleNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1293,"kind":2048,"name":"addChord","url":"classes/Builder.html#addChord","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1294,"kind":2048,"name":"commitPiece","url":"classes/Builder.html#commitPiece","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Builder"},{"id":1295,"kind":256,"name":"EasyScoreOptions","url":"interfaces/EasyScoreOptions.html","classes":"tsd-kind-interface"},{"id":1296,"kind":1024,"name":"factory","url":"interfaces/EasyScoreOptions.html#factory","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"EasyScoreOptions"},{"id":1297,"kind":1024,"name":"builder","url":"interfaces/EasyScoreOptions.html#builder","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"EasyScoreOptions"},{"id":1298,"kind":1024,"name":"commitHooks","url":"interfaces/EasyScoreOptions.html#commitHooks","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"EasyScoreOptions"},{"id":1299,"kind":1024,"name":"throwOnError","url":"interfaces/EasyScoreOptions.html#throwOnError","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"EasyScoreOptions"},{"id":1300,"kind":256,"name":"EasyScoreDefaults","url":"interfaces/EasyScoreDefaults.html","classes":"tsd-kind-interface"},{"id":1301,"kind":1024,"name":"clef","url":"interfaces/EasyScoreDefaults.html#clef","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"EasyScoreDefaults"},{"id":1302,"kind":1024,"name":"time","url":"interfaces/EasyScoreDefaults.html#time","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"EasyScoreDefaults"},{"id":1303,"kind":1024,"name":"stem","url":"interfaces/EasyScoreDefaults.html#stem","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"EasyScoreDefaults"},{"id":1304,"kind":128,"name":"EasyScore","url":"classes/EasyScore.html","classes":"tsd-kind-class"},{"id":1305,"kind":1024,"name":"DEBUG","url":"classes/EasyScore.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"EasyScore"},{"id":1306,"kind":512,"name":"constructor","url":"classes/EasyScore.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"EasyScore"},{"id":1307,"kind":1024,"name":"defaults","url":"classes/EasyScore.html#defaults","classes":"tsd-kind-property tsd-parent-kind-class","parent":"EasyScore"},{"id":1308,"kind":1024,"name":"options","url":"classes/EasyScore.html#options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"EasyScore"},{"id":1309,"kind":1024,"name":"factory","url":"classes/EasyScore.html#factory","classes":"tsd-kind-property tsd-parent-kind-class","parent":"EasyScore"},{"id":1310,"kind":1024,"name":"builder","url":"classes/EasyScore.html#builder","classes":"tsd-kind-property tsd-parent-kind-class","parent":"EasyScore"},{"id":1311,"kind":1024,"name":"grammar","url":"classes/EasyScore.html#grammar","classes":"tsd-kind-property tsd-parent-kind-class","parent":"EasyScore"},{"id":1312,"kind":1024,"name":"parser","url":"classes/EasyScore.html#parser","classes":"tsd-kind-property tsd-parent-kind-class","parent":"EasyScore"},{"id":1313,"kind":2048,"name":"set","url":"classes/EasyScore.html#set","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScore"},{"id":1314,"kind":2048,"name":"setOptions","url":"classes/EasyScore.html#setOptions","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScore"},{"id":1315,"kind":2048,"name":"setContext","url":"classes/EasyScore.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScore"},{"id":1316,"kind":2048,"name":"parse","url":"classes/EasyScore.html#parse","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScore"},{"id":1317,"kind":2048,"name":"beam","url":"classes/EasyScore.html#beam","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScore"},{"id":1318,"kind":2048,"name":"tuplet","url":"classes/EasyScore.html#tuplet","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScore"},{"id":1319,"kind":2048,"name":"notes","url":"classes/EasyScore.html#notes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScore"},{"id":1320,"kind":2048,"name":"voice","url":"classes/EasyScore.html#voice","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScore"},{"id":1321,"kind":2048,"name":"addCommitHook","url":"classes/EasyScore.html#addCommitHook","classes":"tsd-kind-method tsd-parent-kind-class","parent":"EasyScore"},{"id":1322,"kind":256,"name":"ElementAttributes","url":"interfaces/ElementAttributes.html","classes":"tsd-kind-interface"},{"id":1323,"kind":1024,"name":"id","url":"interfaces/ElementAttributes.html#id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ElementAttributes"},{"id":1324,"kind":1024,"name":"el","url":"interfaces/ElementAttributes.html#el","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ElementAttributes"},{"id":1325,"kind":1024,"name":"type","url":"interfaces/ElementAttributes.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ElementAttributes"},{"id":1326,"kind":1024,"name":"classes","url":"interfaces/ElementAttributes.html#classes","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ElementAttributes"},{"id":1327,"kind":256,"name":"ElementStyle","url":"interfaces/ElementStyle.html","classes":"tsd-kind-interface"},{"id":1328,"kind":1024,"name":"shadowColor","url":"interfaces/ElementStyle.html#shadowColor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ElementStyle"},{"id":1329,"kind":1024,"name":"shadowBlur","url":"interfaces/ElementStyle.html#shadowBlur","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ElementStyle"},{"id":1330,"kind":1024,"name":"fillStyle","url":"interfaces/ElementStyle.html#fillStyle","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ElementStyle"},{"id":1331,"kind":1024,"name":"strokeStyle","url":"interfaces/ElementStyle.html#strokeStyle","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ElementStyle"},{"id":1332,"kind":1024,"name":"lineWidth","url":"interfaces/ElementStyle.html#lineWidth","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ElementStyle"},{"id":1333,"kind":128,"name":"Element","url":"classes/Element.html","classes":"tsd-kind-class"},{"id":1334,"kind":262144,"name":"CATEGORY","url":"classes/Element.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Element"},{"id":1335,"kind":1024,"name":"TEXT_FONT","url":"classes/Element.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Element"},{"id":1336,"kind":512,"name":"constructor","url":"classes/Element.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Element"},{"id":1337,"kind":2048,"name":"addChildElement","url":"classes/Element.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1338,"kind":2048,"name":"getCategory","url":"classes/Element.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1339,"kind":2048,"name":"setStyle","url":"classes/Element.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1340,"kind":2048,"name":"setGroupStyle","url":"classes/Element.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1341,"kind":2048,"name":"getStyle","url":"classes/Element.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1342,"kind":2048,"name":"applyStyle","url":"classes/Element.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1343,"kind":2048,"name":"restoreStyle","url":"classes/Element.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1344,"kind":2048,"name":"drawWithStyle","url":"classes/Element.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1345,"kind":2048,"name":"draw","url":"classes/Element.html#draw","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1346,"kind":2048,"name":"hasClass","url":"classes/Element.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1347,"kind":2048,"name":"addClass","url":"classes/Element.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1348,"kind":2048,"name":"removeClass","url":"classes/Element.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1349,"kind":2048,"name":"onRegister","url":"classes/Element.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1350,"kind":2048,"name":"isRendered","url":"classes/Element.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1351,"kind":2048,"name":"setRendered","url":"classes/Element.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1352,"kind":2048,"name":"getAttributes","url":"classes/Element.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1353,"kind":2048,"name":"getAttribute","url":"classes/Element.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1354,"kind":2048,"name":"getSVGElement","url":"classes/Element.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1355,"kind":2048,"name":"setAttribute","url":"classes/Element.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1356,"kind":2048,"name":"getBoundingBox","url":"classes/Element.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1357,"kind":2048,"name":"getContext","url":"classes/Element.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1358,"kind":2048,"name":"setContext","url":"classes/Element.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1359,"kind":2048,"name":"checkContext","url":"classes/Element.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1360,"kind":262144,"name":"font","url":"classes/Element.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"Element"},{"id":1361,"kind":2048,"name":"setFont","url":"classes/Element.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1362,"kind":2048,"name":"getFont","url":"classes/Element.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1363,"kind":2048,"name":"resetFont","url":"classes/Element.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1364,"kind":262144,"name":"fontInfo","url":"classes/Element.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"Element"},{"id":1365,"kind":2048,"name":"setFontSize","url":"classes/Element.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1366,"kind":2048,"name":"getFontSize","url":"classes/Element.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Element"},{"id":1367,"kind":262144,"name":"fontSize","url":"classes/Element.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"Element"},{"id":1368,"kind":262144,"name":"fontSizeInPoints","url":"classes/Element.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"Element"},{"id":1369,"kind":262144,"name":"fontSizeInPixels","url":"classes/Element.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"Element"},{"id":1370,"kind":262144,"name":"fontStyle","url":"classes/Element.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"Element"},{"id":1371,"kind":262144,"name":"fontWeight","url":"classes/Element.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"Element"},{"id":1372,"kind":256,"name":"FactoryOptions","url":"interfaces/FactoryOptions.html","classes":"tsd-kind-interface"},{"id":1373,"kind":1024,"name":"stave","url":"interfaces/FactoryOptions.html#stave","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FactoryOptions"},{"id":1374,"kind":65536,"name":"__type","url":"interfaces/FactoryOptions.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"FactoryOptions"},{"id":1375,"kind":1024,"name":"space","url":"interfaces/FactoryOptions.html#__type-1.space","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FactoryOptions.__type"},{"id":1376,"kind":1024,"name":"renderer","url":"interfaces/FactoryOptions.html#renderer","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FactoryOptions"},{"id":1377,"kind":65536,"name":"__type","url":"interfaces/FactoryOptions.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"FactoryOptions"},{"id":1378,"kind":1024,"name":"elementId","url":"interfaces/FactoryOptions.html#__type.elementId","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FactoryOptions.__type"},{"id":1379,"kind":1024,"name":"backend","url":"interfaces/FactoryOptions.html#__type.backend","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FactoryOptions.__type"},{"id":1380,"kind":1024,"name":"width","url":"interfaces/FactoryOptions.html#__type.width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FactoryOptions.__type"},{"id":1381,"kind":1024,"name":"height","url":"interfaces/FactoryOptions.html#__type.height","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FactoryOptions.__type"},{"id":1382,"kind":1024,"name":"background","url":"interfaces/FactoryOptions.html#__type.background","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FactoryOptions.__type"},{"id":1383,"kind":1024,"name":"font","url":"interfaces/FactoryOptions.html#font","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FactoryOptions"},{"id":1384,"kind":128,"name":"Factory","url":"classes/Factory.html","classes":"tsd-kind-class"},{"id":1385,"kind":1024,"name":"DEBUG","url":"classes/Factory.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Factory"},{"id":1386,"kind":1024,"name":"TEXT_FONT","url":"classes/Factory.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Factory"},{"id":1387,"kind":2048,"name":"newFromElementId","url":"classes/Factory.html#newFromElementId","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Factory"},{"id":1388,"kind":512,"name":"constructor","url":"classes/Factory.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Factory"},{"id":1389,"kind":2048,"name":"reset","url":"classes/Factory.html#reset","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1390,"kind":2048,"name":"setOptions","url":"classes/Factory.html#setOptions","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1391,"kind":2048,"name":"initRenderer","url":"classes/Factory.html#initRenderer","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1392,"kind":2048,"name":"getContext","url":"classes/Factory.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1393,"kind":2048,"name":"setContext","url":"classes/Factory.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1394,"kind":2048,"name":"getStave","url":"classes/Factory.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1395,"kind":2048,"name":"getVoices","url":"classes/Factory.html#getVoices","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1396,"kind":2048,"name":"Stave","url":"classes/Factory.html#Stave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1397,"kind":2048,"name":"TabStave","url":"classes/Factory.html#TabStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1398,"kind":2048,"name":"StaveNote","url":"classes/Factory.html#StaveNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1399,"kind":2048,"name":"GlyphNote","url":"classes/Factory.html#GlyphNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1400,"kind":2048,"name":"RepeatNote","url":"classes/Factory.html#RepeatNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1401,"kind":2048,"name":"GhostNote","url":"classes/Factory.html#GhostNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1402,"kind":2048,"name":"TextNote","url":"classes/Factory.html#TextNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1403,"kind":2048,"name":"BarNote","url":"classes/Factory.html#BarNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1404,"kind":2048,"name":"ClefNote","url":"classes/Factory.html#ClefNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1405,"kind":2048,"name":"TimeSigNote","url":"classes/Factory.html#TimeSigNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1406,"kind":2048,"name":"KeySigNote","url":"classes/Factory.html#KeySigNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1407,"kind":2048,"name":"TabNote","url":"classes/Factory.html#TabNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1408,"kind":2048,"name":"GraceNote","url":"classes/Factory.html#GraceNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1409,"kind":2048,"name":"GraceNoteGroup","url":"classes/Factory.html#GraceNoteGroup","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1410,"kind":2048,"name":"Accidental","url":"classes/Factory.html#Accidental","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1411,"kind":2048,"name":"Annotation","url":"classes/Factory.html#Annotation","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1412,"kind":2048,"name":"ChordSymbol","url":"classes/Factory.html#ChordSymbol","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1413,"kind":2048,"name":"Articulation","url":"classes/Factory.html#Articulation","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1414,"kind":2048,"name":"Ornament","url":"classes/Factory.html#Ornament","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1415,"kind":2048,"name":"TextDynamics","url":"classes/Factory.html#TextDynamics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1416,"kind":2048,"name":"Fingering","url":"classes/Factory.html#Fingering","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1417,"kind":2048,"name":"StringNumber","url":"classes/Factory.html#StringNumber","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1418,"kind":2048,"name":"TickContext","url":"classes/Factory.html#TickContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1419,"kind":2048,"name":"ModifierContext","url":"classes/Factory.html#ModifierContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1420,"kind":2048,"name":"MultiMeasureRest","url":"classes/Factory.html#MultiMeasureRest","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1421,"kind":2048,"name":"Voice","url":"classes/Factory.html#Voice","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1422,"kind":2048,"name":"StaveConnector","url":"classes/Factory.html#StaveConnector","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1423,"kind":2048,"name":"Formatter","url":"classes/Factory.html#Formatter","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1424,"kind":2048,"name":"Tuplet","url":"classes/Factory.html#Tuplet","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1425,"kind":2048,"name":"Beam","url":"classes/Factory.html#Beam","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1426,"kind":2048,"name":"Curve","url":"classes/Factory.html#Curve","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1427,"kind":2048,"name":"StaveTie","url":"classes/Factory.html#StaveTie","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1428,"kind":2048,"name":"StaveLine","url":"classes/Factory.html#StaveLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1429,"kind":2048,"name":"VibratoBracket","url":"classes/Factory.html#VibratoBracket","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1430,"kind":2048,"name":"TextBracket","url":"classes/Factory.html#TextBracket","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1431,"kind":2048,"name":"System","url":"classes/Factory.html#System","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1432,"kind":2048,"name":"EasyScore","url":"classes/Factory.html#EasyScore","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1433,"kind":2048,"name":"PedalMarking","url":"classes/Factory.html#PedalMarking","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1434,"kind":2048,"name":"NoteSubGroup","url":"classes/Factory.html#NoteSubGroup","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1435,"kind":2048,"name":"draw","url":"classes/Factory.html#draw","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Factory"},{"id":1436,"kind":128,"name":"Flow","url":"classes/Flow.html","classes":"tsd-kind-class"},{"id":1437,"kind":262144,"name":"BUILD","url":"classes/Flow.html#BUILD","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1438,"kind":1024,"name":"Accidental","url":"classes/Flow.html#Accidental","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1439,"kind":1024,"name":"Annotation","url":"classes/Flow.html#Annotation","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1440,"kind":1024,"name":"Articulation","url":"classes/Flow.html#Articulation","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1441,"kind":1024,"name":"Barline","url":"classes/Flow.html#Barline","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1442,"kind":1024,"name":"BarNote","url":"classes/Flow.html#BarNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1443,"kind":1024,"name":"Beam","url":"classes/Flow.html#Beam","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1444,"kind":1024,"name":"Bend","url":"classes/Flow.html#Bend","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1445,"kind":1024,"name":"BoundingBox","url":"classes/Flow.html#BoundingBox","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1446,"kind":1024,"name":"BoundingBoxComputation","url":"classes/Flow.html#BoundingBoxComputation","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1447,"kind":1024,"name":"CanvasContext","url":"classes/Flow.html#CanvasContext","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1448,"kind":1024,"name":"ChordSymbol","url":"classes/Flow.html#ChordSymbol","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1449,"kind":1024,"name":"Clef","url":"classes/Flow.html#Clef","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1450,"kind":1024,"name":"ClefNote","url":"classes/Flow.html#ClefNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1451,"kind":1024,"name":"Crescendo","url":"classes/Flow.html#Crescendo","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1452,"kind":1024,"name":"Curve","url":"classes/Flow.html#Curve","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1453,"kind":1024,"name":"Dot","url":"classes/Flow.html#Dot","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1454,"kind":1024,"name":"EasyScore","url":"classes/Flow.html#EasyScore","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1455,"kind":1024,"name":"Element","url":"classes/Flow.html#Element","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1456,"kind":1024,"name":"Factory","url":"classes/Flow.html#Factory","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1457,"kind":1024,"name":"Font","url":"classes/Flow.html#Font","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1458,"kind":1024,"name":"Formatter","url":"classes/Flow.html#Formatter","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1459,"kind":1024,"name":"Fraction","url":"classes/Flow.html#Fraction","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1460,"kind":1024,"name":"FretHandFinger","url":"classes/Flow.html#FretHandFinger","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1461,"kind":1024,"name":"GhostNote","url":"classes/Flow.html#GhostNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1462,"kind":1024,"name":"Glyph","url":"classes/Flow.html#Glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1463,"kind":1024,"name":"GlyphNote","url":"classes/Flow.html#GlyphNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1464,"kind":1024,"name":"GraceNote","url":"classes/Flow.html#GraceNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1465,"kind":1024,"name":"GraceNoteGroup","url":"classes/Flow.html#GraceNoteGroup","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1466,"kind":1024,"name":"GraceTabNote","url":"classes/Flow.html#GraceTabNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1467,"kind":1024,"name":"KeyManager","url":"classes/Flow.html#KeyManager","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1468,"kind":1024,"name":"KeySignature","url":"classes/Flow.html#KeySignature","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1469,"kind":1024,"name":"KeySigNote","url":"classes/Flow.html#KeySigNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1470,"kind":1024,"name":"Modifier","url":"classes/Flow.html#Modifier","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1471,"kind":1024,"name":"ModifierContext","url":"classes/Flow.html#ModifierContext","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1472,"kind":1024,"name":"MultiMeasureRest","url":"classes/Flow.html#MultiMeasureRest","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1473,"kind":1024,"name":"Music","url":"classes/Flow.html#Music","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1474,"kind":1024,"name":"Note","url":"classes/Flow.html#Note","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1475,"kind":1024,"name":"NoteHead","url":"classes/Flow.html#NoteHead","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1476,"kind":1024,"name":"NoteSubGroup","url":"classes/Flow.html#NoteSubGroup","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1477,"kind":1024,"name":"Ornament","url":"classes/Flow.html#Ornament","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1478,"kind":1024,"name":"Parenthesis","url":"classes/Flow.html#Parenthesis","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1479,"kind":1024,"name":"Parser","url":"classes/Flow.html#Parser","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1480,"kind":1024,"name":"PedalMarking","url":"classes/Flow.html#PedalMarking","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1481,"kind":1024,"name":"Registry","url":"classes/Flow.html#Registry","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1482,"kind":1024,"name":"RenderContext","url":"classes/Flow.html#RenderContext","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1483,"kind":1024,"name":"Renderer","url":"classes/Flow.html#Renderer","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1484,"kind":1024,"name":"RepeatNote","url":"classes/Flow.html#RepeatNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1485,"kind":1024,"name":"Repetition","url":"classes/Flow.html#Repetition","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1486,"kind":1024,"name":"Stave","url":"classes/Flow.html#Stave","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1487,"kind":1024,"name":"StaveConnector","url":"classes/Flow.html#StaveConnector","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1488,"kind":1024,"name":"StaveHairpin","url":"classes/Flow.html#StaveHairpin","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1489,"kind":1024,"name":"StaveLine","url":"classes/Flow.html#StaveLine","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1490,"kind":1024,"name":"StaveModifier","url":"classes/Flow.html#StaveModifier","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1491,"kind":1024,"name":"StaveNote","url":"classes/Flow.html#StaveNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1492,"kind":1024,"name":"StaveTempo","url":"classes/Flow.html#StaveTempo","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1493,"kind":1024,"name":"StaveText","url":"classes/Flow.html#StaveText","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1494,"kind":1024,"name":"StaveTie","url":"classes/Flow.html#StaveTie","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1495,"kind":1024,"name":"Stem","url":"classes/Flow.html#Stem","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1496,"kind":1024,"name":"StringNumber","url":"classes/Flow.html#StringNumber","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1497,"kind":1024,"name":"Stroke","url":"classes/Flow.html#Stroke","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1498,"kind":1024,"name":"SVGContext","url":"classes/Flow.html#SVGContext","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1499,"kind":1024,"name":"System","url":"classes/Flow.html#System","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1500,"kind":1024,"name":"TabNote","url":"classes/Flow.html#TabNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1501,"kind":1024,"name":"TabSlide","url":"classes/Flow.html#TabSlide","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1502,"kind":1024,"name":"TabStave","url":"classes/Flow.html#TabStave","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1503,"kind":1024,"name":"TabTie","url":"classes/Flow.html#TabTie","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1504,"kind":1024,"name":"TextBracket","url":"classes/Flow.html#TextBracket","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1505,"kind":1024,"name":"TextDynamics","url":"classes/Flow.html#TextDynamics","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1506,"kind":1024,"name":"TextFormatter","url":"classes/Flow.html#TextFormatter","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1507,"kind":1024,"name":"TextNote","url":"classes/Flow.html#TextNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1508,"kind":1024,"name":"TickContext","url":"classes/Flow.html#TickContext","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1509,"kind":1024,"name":"TimeSignature","url":"classes/Flow.html#TimeSignature","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1510,"kind":1024,"name":"TimeSigNote","url":"classes/Flow.html#TimeSigNote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1511,"kind":1024,"name":"Tremolo","url":"classes/Flow.html#Tremolo","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1512,"kind":1024,"name":"Tuning","url":"classes/Flow.html#Tuning","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1513,"kind":1024,"name":"Tuplet","url":"classes/Flow.html#Tuplet","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1514,"kind":1024,"name":"Vibrato","url":"classes/Flow.html#Vibrato","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1515,"kind":1024,"name":"VibratoBracket","url":"classes/Flow.html#VibratoBracket","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1516,"kind":1024,"name":"Voice","url":"classes/Flow.html#Voice","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1517,"kind":1024,"name":"Volta","url":"classes/Flow.html#Volta","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1518,"kind":1024,"name":"AnnotationHorizontalJustify","url":"classes/Flow.html#AnnotationHorizontalJustify","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1519,"kind":1024,"name":"AnnotationVerticalJustify","url":"classes/Flow.html#AnnotationVerticalJustify","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1520,"kind":1024,"name":"ChordSymbolHorizontalJustify","url":"classes/Flow.html#ChordSymbolHorizontalJustify","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1521,"kind":1024,"name":"ChordSymbolVerticalJustify","url":"classes/Flow.html#ChordSymbolVerticalJustify","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1522,"kind":1024,"name":"SymbolTypes","url":"classes/Flow.html#SymbolTypes","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1523,"kind":1024,"name":"SymbolModifiers","url":"classes/Flow.html#SymbolModifiers","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1524,"kind":1024,"name":"CurvePosition","url":"classes/Flow.html#CurvePosition","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1525,"kind":1024,"name":"FontWeight","url":"classes/Flow.html#FontWeight","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1526,"kind":1024,"name":"FontStyle","url":"classes/Flow.html#FontStyle","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1527,"kind":1024,"name":"ModifierPosition","url":"classes/Flow.html#ModifierPosition","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1528,"kind":1024,"name":"RendererBackends","url":"classes/Flow.html#RendererBackends","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1529,"kind":1024,"name":"RendererLineEndType","url":"classes/Flow.html#RendererLineEndType","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1530,"kind":1024,"name":"BarlineType","url":"classes/Flow.html#BarlineType","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1531,"kind":1024,"name":"StaveModifierPosition","url":"classes/Flow.html#StaveModifierPosition","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1532,"kind":1024,"name":"VoltaType","url":"classes/Flow.html#VoltaType","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1533,"kind":1024,"name":"TextBracketPosition","url":"classes/Flow.html#TextBracketPosition","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1534,"kind":1024,"name":"TextJustification","url":"classes/Flow.html#TextJustification","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1535,"kind":1024,"name":"VoiceMode","url":"classes/Flow.html#VoiceMode","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1536,"kind":2048,"name":"setMusicFont","url":"classes/Flow.html#setMusicFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1537,"kind":2048,"name":"fetchMusicFont","url":"classes/Flow.html#fetchMusicFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1538,"kind":2048,"name":"getMusicFont","url":"classes/Flow.html#getMusicFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1539,"kind":262144,"name":"RENDER_PRECISION_PLACES","url":"classes/Flow.html#RENDER_PRECISION_PLACES","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1540,"kind":262144,"name":"SOFTMAX_FACTOR","url":"classes/Flow.html#SOFTMAX_FACTOR","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1541,"kind":262144,"name":"NOTATION_FONT_SCALE","url":"classes/Flow.html#NOTATION_FONT_SCALE","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1542,"kind":262144,"name":"TABLATURE_FONT_SCALE","url":"classes/Flow.html#TABLATURE_FONT_SCALE","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1543,"kind":262144,"name":"RESOLUTION","url":"classes/Flow.html#RESOLUTION","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1544,"kind":262144,"name":"SLASH_NOTEHEAD_WIDTH","url":"classes/Flow.html#SLASH_NOTEHEAD_WIDTH","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1545,"kind":262144,"name":"STAVE_LINE_DISTANCE","url":"classes/Flow.html#STAVE_LINE_DISTANCE","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1546,"kind":262144,"name":"STAVE_LINE_THICKNESS","url":"classes/Flow.html#STAVE_LINE_THICKNESS","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1547,"kind":262144,"name":"STEM_HEIGHT","url":"classes/Flow.html#STEM_HEIGHT","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1548,"kind":262144,"name":"STEM_WIDTH","url":"classes/Flow.html#STEM_WIDTH","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1549,"kind":262144,"name":"TIME4_4","url":"classes/Flow.html#TIME4_4","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1550,"kind":262144,"name":"accidentalMap","url":"classes/Flow.html#accidentalMap","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1551,"kind":262144,"name":"unicode","url":"classes/Flow.html#unicode","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1552,"kind":2048,"name":"keySignature","url":"classes/Flow.html#keySignature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1553,"kind":2048,"name":"hasKeySignature","url":"classes/Flow.html#hasKeySignature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1554,"kind":2048,"name":"getKeySignatures","url":"classes/Flow.html#getKeySignatures","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1555,"kind":2048,"name":"clefProperties","url":"classes/Flow.html#clefProperties","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1556,"kind":2048,"name":"keyProperties","url":"classes/Flow.html#keyProperties","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1557,"kind":2048,"name":"durationToTicks","url":"classes/Flow.html#durationToTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Flow"},{"id":1558,"kind":512,"name":"constructor","url":"classes/Flow.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Flow"},{"id":1559,"kind":256,"name":"FontInfo","url":"interfaces/FontInfo.html","classes":"tsd-kind-interface"},{"id":1560,"kind":1024,"name":"family","url":"interfaces/FontInfo.html#family","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontInfo"},{"id":1561,"kind":1024,"name":"size","url":"interfaces/FontInfo.html#size","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontInfo"},{"id":1562,"kind":1024,"name":"weight","url":"interfaces/FontInfo.html#weight","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontInfo"},{"id":1563,"kind":1024,"name":"style","url":"interfaces/FontInfo.html#style","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontInfo"},{"id":1564,"kind":4194304,"name":"FontModule","url":"modules.html#FontModule","classes":"tsd-kind-type-alias"},{"id":1565,"kind":65536,"name":"__type","url":"modules.html#FontModule.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"FontModule"},{"id":1566,"kind":1024,"name":"data","url":"modules.html#FontModule.__type.data","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FontModule.__type"},{"id":1567,"kind":1024,"name":"metrics","url":"modules.html#FontModule.__type.metrics","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FontModule.__type"},{"id":1568,"kind":256,"name":"FontData","url":"interfaces/FontData.html","classes":"tsd-kind-interface"},{"id":1569,"kind":1024,"name":"glyphs","url":"interfaces/FontData.html#glyphs","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontData"},{"id":1570,"kind":1024,"name":"fontFamily","url":"interfaces/FontData.html#fontFamily","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontData"},{"id":1571,"kind":1024,"name":"resolution","url":"interfaces/FontData.html#resolution","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontData"},{"id":1572,"kind":1024,"name":"generatedOn","url":"interfaces/FontData.html#generatedOn","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontData"},{"id":1573,"kind":256,"name":"FontMetrics","url":"interfaces/FontMetrics.html","classes":"tsd-kind-interface"},{"id":1574,"kind":1024,"name":"name","url":"interfaces/FontMetrics.html#name","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontMetrics"},{"id":1575,"kind":1024,"name":"smufl","url":"interfaces/FontMetrics.html#smufl","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontMetrics"},{"id":1576,"kind":1024,"name":"stave","url":"interfaces/FontMetrics.html#stave","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontMetrics"},{"id":1577,"kind":1024,"name":"accidental","url":"interfaces/FontMetrics.html#accidental","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontMetrics"},{"id":1578,"kind":1024,"name":"clef","url":"interfaces/FontMetrics.html#clef","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontMetrics"},{"id":1579,"kind":1024,"name":"pedalMarking","url":"interfaces/FontMetrics.html#pedalMarking","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontMetrics"},{"id":1580,"kind":1024,"name":"digits","url":"interfaces/FontMetrics.html#digits","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontMetrics"},{"id":1581,"kind":1024,"name":"articulation","url":"interfaces/FontMetrics.html#articulation","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontMetrics"},{"id":1582,"kind":1024,"name":"tremolo","url":"interfaces/FontMetrics.html#tremolo","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontMetrics"},{"id":1583,"kind":1024,"name":"noteHead","url":"interfaces/FontMetrics.html#noteHead","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontMetrics"},{"id":1584,"kind":1024,"name":"glyphs","url":"interfaces/FontMetrics.html#glyphs","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontMetrics"},{"id":1585,"kind":256,"name":"FontGlyph","url":"interfaces/FontGlyph.html","classes":"tsd-kind-interface"},{"id":1586,"kind":1024,"name":"x_min","url":"interfaces/FontGlyph.html#x_min","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontGlyph"},{"id":1587,"kind":1024,"name":"x_max","url":"interfaces/FontGlyph.html#x_max","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontGlyph"},{"id":1588,"kind":1024,"name":"y_min","url":"interfaces/FontGlyph.html#y_min","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontGlyph"},{"id":1589,"kind":1024,"name":"y_max","url":"interfaces/FontGlyph.html#y_max","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontGlyph"},{"id":1590,"kind":1024,"name":"ha","url":"interfaces/FontGlyph.html#ha","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontGlyph"},{"id":1591,"kind":1024,"name":"leftSideBearing","url":"interfaces/FontGlyph.html#leftSideBearing","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontGlyph"},{"id":1592,"kind":1024,"name":"advanceWidth","url":"interfaces/FontGlyph.html#advanceWidth","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontGlyph"},{"id":1593,"kind":1024,"name":"o","url":"interfaces/FontGlyph.html#o","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontGlyph"},{"id":1594,"kind":1024,"name":"cached_outline","url":"interfaces/FontGlyph.html#cached_outline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FontGlyph"},{"id":1595,"kind":8,"name":"FontWeight","url":"enums/FontWeight.html","classes":"tsd-kind-enum"},{"id":1596,"kind":16,"name":"NORMAL","url":"enums/FontWeight.html#NORMAL","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"FontWeight"},{"id":1597,"kind":16,"name":"BOLD","url":"enums/FontWeight.html#BOLD","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"FontWeight"},{"id":1598,"kind":8,"name":"FontStyle","url":"enums/FontStyle.html","classes":"tsd-kind-enum"},{"id":1599,"kind":16,"name":"NORMAL","url":"enums/FontStyle.html#NORMAL","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"FontStyle"},{"id":1600,"kind":16,"name":"ITALIC","url":"enums/FontStyle.html#ITALIC","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"FontStyle"},{"id":1601,"kind":128,"name":"Font","url":"classes/Font.html","classes":"tsd-kind-class"},{"id":1602,"kind":1024,"name":"SANS_SERIF","url":"classes/Font.html#SANS_SERIF","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1603,"kind":1024,"name":"SERIF","url":"classes/Font.html#SERIF","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1604,"kind":1024,"name":"SIZE","url":"classes/Font.html#SIZE","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1605,"kind":1024,"name":"scaleToPxFrom","url":"classes/Font.html#scaleToPxFrom","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1606,"kind":2048,"name":"convertSizeToPixelValue","url":"classes/Font.html#convertSizeToPixelValue","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1607,"kind":2048,"name":"convertSizeToPointValue","url":"classes/Font.html#convertSizeToPointValue","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1608,"kind":2048,"name":"validate","url":"classes/Font.html#validate","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1609,"kind":2048,"name":"fromCSSString","url":"classes/Font.html#fromCSSString","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1610,"kind":2048,"name":"toCSSString","url":"classes/Font.html#toCSSString","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1611,"kind":2048,"name":"scaleSize","url":"classes/Font.html#scaleSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static","parent":"Font"},{"id":1612,"kind":2048,"name":"isBold","url":"classes/Font.html#isBold","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1613,"kind":2048,"name":"isItalic","url":"classes/Font.html#isItalic","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1614,"kind":1024,"name":"WEB_FONT_HOST","url":"classes/Font.html#WEB_FONT_HOST","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1615,"kind":1024,"name":"WEB_FONT_FILES","url":"classes/Font.html#WEB_FONT_FILES","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1616,"kind":2048,"name":"loadWebFont","url":"classes/Font.html#loadWebFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1617,"kind":2048,"name":"loadWebFonts","url":"classes/Font.html#loadWebFonts","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1618,"kind":2048,"name":"load","url":"classes/Font.html#load","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Font"},{"id":1619,"kind":2048,"name":"getName","url":"classes/Font.html#getName","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Font"},{"id":1620,"kind":2048,"name":"getData","url":"classes/Font.html#getData","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Font"},{"id":1621,"kind":2048,"name":"getMetrics","url":"classes/Font.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Font"},{"id":1622,"kind":2048,"name":"setData","url":"classes/Font.html#setData","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Font"},{"id":1623,"kind":2048,"name":"setMetrics","url":"classes/Font.html#setMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Font"},{"id":1624,"kind":2048,"name":"hasData","url":"classes/Font.html#hasData","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Font"},{"id":1625,"kind":2048,"name":"getResolution","url":"classes/Font.html#getResolution","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Font"},{"id":1626,"kind":2048,"name":"getGlyphs","url":"classes/Font.html#getGlyphs","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Font"},{"id":1627,"kind":2048,"name":"lookupMetric","url":"classes/Font.html#lookupMetric","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Font"},{"id":1628,"kind":2048,"name":"toString","url":"classes/Font.html#toString","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Font"},{"id":1629,"kind":256,"name":"FormatterOptions","url":"interfaces/FormatterOptions.html","classes":"tsd-kind-interface"},{"id":1630,"kind":1024,"name":"softmaxFactor","url":"interfaces/FormatterOptions.html#softmaxFactor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FormatterOptions"},{"id":1631,"kind":1024,"name":"globalSoftmax","url":"interfaces/FormatterOptions.html#globalSoftmax","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FormatterOptions"},{"id":1632,"kind":1024,"name":"maxIterations","url":"interfaces/FormatterOptions.html#maxIterations","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FormatterOptions"},{"id":1633,"kind":256,"name":"FormatParams","url":"interfaces/FormatParams.html","classes":"tsd-kind-interface"},{"id":1634,"kind":1024,"name":"align_rests","url":"interfaces/FormatParams.html#align_rests","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FormatParams"},{"id":1635,"kind":1024,"name":"stave","url":"interfaces/FormatParams.html#stave","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FormatParams"},{"id":1636,"kind":1024,"name":"context","url":"interfaces/FormatParams.html#context","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FormatParams"},{"id":1637,"kind":1024,"name":"auto_beam","url":"interfaces/FormatParams.html#auto_beam","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FormatParams"},{"id":1638,"kind":256,"name":"AlignmentContexts","url":"interfaces/AlignmentContexts.html","classes":"tsd-kind-interface tsd-has-type-parameter"},{"id":1639,"kind":1024,"name":"list","url":"interfaces/AlignmentContexts.html#list","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"AlignmentContexts"},{"id":1640,"kind":1024,"name":"map","url":"interfaces/AlignmentContexts.html#map","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"AlignmentContexts"},{"id":1641,"kind":1024,"name":"array","url":"interfaces/AlignmentContexts.html#array","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"AlignmentContexts"},{"id":1642,"kind":1024,"name":"resolutionMultiplier","url":"interfaces/AlignmentContexts.html#resolutionMultiplier","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"AlignmentContexts"},{"id":1643,"kind":256,"name":"AlignmentModifierContexts","url":"interfaces/AlignmentModifierContexts.html","classes":"tsd-kind-interface"},{"id":1644,"kind":1024,"name":"map","url":"interfaces/AlignmentModifierContexts.html#map","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"AlignmentModifierContexts"},{"id":1645,"kind":1024,"name":"array","url":"interfaces/AlignmentModifierContexts.html#array","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"AlignmentModifierContexts"},{"id":1646,"kind":1024,"name":"resolutionMultiplier","url":"interfaces/AlignmentModifierContexts.html#resolutionMultiplier","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"AlignmentModifierContexts"},{"id":1647,"kind":128,"name":"Formatter","url":"classes/Formatter.html","classes":"tsd-kind-class"},{"id":1648,"kind":1024,"name":"DEBUG","url":"classes/Formatter.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Formatter"},{"id":1649,"kind":2048,"name":"SimpleFormat","url":"classes/Formatter.html#SimpleFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Formatter"},{"id":1650,"kind":2048,"name":"plotDebugging","url":"classes/Formatter.html#plotDebugging","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Formatter"},{"id":1651,"kind":2048,"name":"FormatAndDraw","url":"classes/Formatter.html#FormatAndDraw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Formatter"},{"id":1652,"kind":2048,"name":"FormatAndDrawTab","url":"classes/Formatter.html#FormatAndDrawTab","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Formatter"},{"id":1653,"kind":2048,"name":"AlignRestsToNotes","url":"classes/Formatter.html#AlignRestsToNotes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Formatter"},{"id":1654,"kind":2048,"name":"getResolutionMultiplier","url":"classes/Formatter.html#getResolutionMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Formatter"},{"id":1655,"kind":512,"name":"constructor","url":"classes/Formatter.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Formatter"},{"id":1656,"kind":2048,"name":"alignRests","url":"classes/Formatter.html#alignRests","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1657,"kind":2048,"name":"preCalculateMinTotalWidth","url":"classes/Formatter.html#preCalculateMinTotalWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1658,"kind":2048,"name":"getMinTotalWidth","url":"classes/Formatter.html#getMinTotalWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1659,"kind":2048,"name":"createModifierContexts","url":"classes/Formatter.html#createModifierContexts","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1660,"kind":2048,"name":"createTickContexts","url":"classes/Formatter.html#createTickContexts","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1661,"kind":2048,"name":"getTickContexts","url":"classes/Formatter.html#getTickContexts","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1662,"kind":2048,"name":"preFormat","url":"classes/Formatter.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1663,"kind":2048,"name":"evaluate","url":"classes/Formatter.html#evaluate","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1664,"kind":2048,"name":"tune","url":"classes/Formatter.html#tune","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1665,"kind":2048,"name":"postFormat","url":"classes/Formatter.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1666,"kind":2048,"name":"joinVoices","url":"classes/Formatter.html#joinVoices","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1667,"kind":2048,"name":"format","url":"classes/Formatter.html#format","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1668,"kind":2048,"name":"formatToStave","url":"classes/Formatter.html#formatToStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1669,"kind":2048,"name":"getTickContext","url":"classes/Formatter.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Formatter"},{"id":1670,"kind":128,"name":"Fraction","url":"classes/Fraction.html","classes":"tsd-kind-class"},{"id":1671,"kind":262144,"name":"CATEGORY","url":"classes/Fraction.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Fraction"},{"id":1672,"kind":2048,"name":"GCD","url":"classes/Fraction.html#GCD","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Fraction"},{"id":1673,"kind":2048,"name":"LCM","url":"classes/Fraction.html#LCM","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Fraction"},{"id":1674,"kind":2048,"name":"LCMM","url":"classes/Fraction.html#LCMM","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Fraction"},{"id":1675,"kind":512,"name":"constructor","url":"classes/Fraction.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Fraction"},{"id":1676,"kind":1024,"name":"numerator","url":"classes/Fraction.html#numerator","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Fraction"},{"id":1677,"kind":1024,"name":"denominator","url":"classes/Fraction.html#denominator","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Fraction"},{"id":1678,"kind":2048,"name":"set","url":"classes/Fraction.html#set","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1679,"kind":2048,"name":"value","url":"classes/Fraction.html#value","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1680,"kind":2048,"name":"simplify","url":"classes/Fraction.html#simplify","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1681,"kind":2048,"name":"add","url":"classes/Fraction.html#add","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1682,"kind":2048,"name":"subtract","url":"classes/Fraction.html#subtract","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1683,"kind":2048,"name":"multiply","url":"classes/Fraction.html#multiply","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1684,"kind":2048,"name":"divide","url":"classes/Fraction.html#divide","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1685,"kind":2048,"name":"equals","url":"classes/Fraction.html#equals","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1686,"kind":2048,"name":"greaterThan","url":"classes/Fraction.html#greaterThan","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1687,"kind":2048,"name":"greaterThanEquals","url":"classes/Fraction.html#greaterThanEquals","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1688,"kind":2048,"name":"lessThan","url":"classes/Fraction.html#lessThan","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1689,"kind":2048,"name":"lessThanEquals","url":"classes/Fraction.html#lessThanEquals","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1690,"kind":2048,"name":"clone","url":"classes/Fraction.html#clone","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1691,"kind":2048,"name":"copy","url":"classes/Fraction.html#copy","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1692,"kind":2048,"name":"quotient","url":"classes/Fraction.html#quotient","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1693,"kind":2048,"name":"remainder","url":"classes/Fraction.html#remainder","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1694,"kind":2048,"name":"makeAbs","url":"classes/Fraction.html#makeAbs","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1695,"kind":2048,"name":"toString","url":"classes/Fraction.html#toString","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1696,"kind":2048,"name":"toSimplifiedString","url":"classes/Fraction.html#toSimplifiedString","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1697,"kind":2048,"name":"toMixedString","url":"classes/Fraction.html#toMixedString","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1698,"kind":2048,"name":"parse","url":"classes/Fraction.html#parse","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Fraction"},{"id":1699,"kind":128,"name":"FretHandFinger","url":"classes/FretHandFinger.html","classes":"tsd-kind-class"},{"id":1700,"kind":262144,"name":"CATEGORY","url":"classes/FretHandFinger.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"FretHandFinger"},{"id":1701,"kind":1024,"name":"TEXT_FONT","url":"classes/FretHandFinger.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"FretHandFinger"},{"id":1702,"kind":2048,"name":"format","url":"classes/FretHandFinger.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"FretHandFinger"},{"id":1703,"kind":2048,"name":"easyScoreHook","url":"classes/FretHandFinger.html#easyScoreHook","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"FretHandFinger"},{"id":1704,"kind":262144,"name":"Position","url":"classes/FretHandFinger.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"FretHandFinger"},{"id":1705,"kind":262144,"name":"PositionString","url":"classes/FretHandFinger.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"FretHandFinger"},{"id":1706,"kind":512,"name":"constructor","url":"classes/FretHandFinger.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"FretHandFinger"},{"id":1707,"kind":2048,"name":"setFretHandFinger","url":"classes/FretHandFinger.html#setFretHandFinger","classes":"tsd-kind-method tsd-parent-kind-class","parent":"FretHandFinger"},{"id":1708,"kind":2048,"name":"getFretHandFinger","url":"classes/FretHandFinger.html#getFretHandFinger","classes":"tsd-kind-method tsd-parent-kind-class","parent":"FretHandFinger"},{"id":1709,"kind":2048,"name":"setOffsetX","url":"classes/FretHandFinger.html#setOffsetX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"FretHandFinger"},{"id":1710,"kind":2048,"name":"setOffsetY","url":"classes/FretHandFinger.html#setOffsetY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"FretHandFinger"},{"id":1711,"kind":2048,"name":"draw","url":"classes/FretHandFinger.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"FretHandFinger"},{"id":1712,"kind":2048,"name":"getWidth","url":"classes/FretHandFinger.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1713,"kind":2048,"name":"setWidth","url":"classes/FretHandFinger.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1714,"kind":2048,"name":"getNote","url":"classes/FretHandFinger.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1715,"kind":2048,"name":"checkAttachedNote","url":"classes/FretHandFinger.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1716,"kind":2048,"name":"setNote","url":"classes/FretHandFinger.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1717,"kind":2048,"name":"getIndex","url":"classes/FretHandFinger.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1718,"kind":2048,"name":"checkIndex","url":"classes/FretHandFinger.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1719,"kind":2048,"name":"setIndex","url":"classes/FretHandFinger.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1720,"kind":2048,"name":"getModifierContext","url":"classes/FretHandFinger.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1721,"kind":2048,"name":"checkModifierContext","url":"classes/FretHandFinger.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1722,"kind":2048,"name":"setModifierContext","url":"classes/FretHandFinger.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1723,"kind":2048,"name":"getPosition","url":"classes/FretHandFinger.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1724,"kind":2048,"name":"setPosition","url":"classes/FretHandFinger.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1725,"kind":2048,"name":"setTextLine","url":"classes/FretHandFinger.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1726,"kind":2048,"name":"setYShift","url":"classes/FretHandFinger.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1727,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/FretHandFinger.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1728,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/FretHandFinger.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1729,"kind":2048,"name":"setXShift","url":"classes/FretHandFinger.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1730,"kind":2048,"name":"getXShift","url":"classes/FretHandFinger.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1731,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/FretHandFinger.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1732,"kind":2048,"name":"addChildElement","url":"classes/FretHandFinger.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1733,"kind":2048,"name":"getCategory","url":"classes/FretHandFinger.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1734,"kind":2048,"name":"setStyle","url":"classes/FretHandFinger.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1735,"kind":2048,"name":"setGroupStyle","url":"classes/FretHandFinger.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1736,"kind":2048,"name":"getStyle","url":"classes/FretHandFinger.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1737,"kind":2048,"name":"applyStyle","url":"classes/FretHandFinger.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1738,"kind":2048,"name":"restoreStyle","url":"classes/FretHandFinger.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1739,"kind":2048,"name":"drawWithStyle","url":"classes/FretHandFinger.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1740,"kind":2048,"name":"hasClass","url":"classes/FretHandFinger.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1741,"kind":2048,"name":"addClass","url":"classes/FretHandFinger.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1742,"kind":2048,"name":"removeClass","url":"classes/FretHandFinger.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1743,"kind":2048,"name":"onRegister","url":"classes/FretHandFinger.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1744,"kind":2048,"name":"isRendered","url":"classes/FretHandFinger.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1745,"kind":2048,"name":"setRendered","url":"classes/FretHandFinger.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1746,"kind":2048,"name":"getAttributes","url":"classes/FretHandFinger.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1747,"kind":2048,"name":"getAttribute","url":"classes/FretHandFinger.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1748,"kind":2048,"name":"getSVGElement","url":"classes/FretHandFinger.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1749,"kind":2048,"name":"setAttribute","url":"classes/FretHandFinger.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1750,"kind":2048,"name":"getBoundingBox","url":"classes/FretHandFinger.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1751,"kind":2048,"name":"getContext","url":"classes/FretHandFinger.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1752,"kind":2048,"name":"setContext","url":"classes/FretHandFinger.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1753,"kind":2048,"name":"checkContext","url":"classes/FretHandFinger.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1754,"kind":262144,"name":"font","url":"classes/FretHandFinger.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1755,"kind":2048,"name":"setFont","url":"classes/FretHandFinger.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1756,"kind":2048,"name":"getFont","url":"classes/FretHandFinger.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1757,"kind":2048,"name":"resetFont","url":"classes/FretHandFinger.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1758,"kind":262144,"name":"fontInfo","url":"classes/FretHandFinger.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1759,"kind":2048,"name":"setFontSize","url":"classes/FretHandFinger.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1760,"kind":2048,"name":"getFontSize","url":"classes/FretHandFinger.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1761,"kind":262144,"name":"fontSize","url":"classes/FretHandFinger.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1762,"kind":262144,"name":"fontSizeInPoints","url":"classes/FretHandFinger.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1763,"kind":262144,"name":"fontSizeInPixels","url":"classes/FretHandFinger.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1764,"kind":262144,"name":"fontStyle","url":"classes/FretHandFinger.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1765,"kind":262144,"name":"fontWeight","url":"classes/FretHandFinger.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"FretHandFinger"},{"id":1766,"kind":128,"name":"GhostNote","url":"classes/GhostNote.html","classes":"tsd-kind-class"},{"id":1767,"kind":262144,"name":"CATEGORY","url":"classes/GhostNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"GhostNote"},{"id":1768,"kind":2048,"name":"plotMetrics","url":"classes/GhostNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GhostNote"},{"id":1769,"kind":1024,"name":"TEXT_FONT","url":"classes/GhostNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GhostNote"},{"id":1770,"kind":512,"name":"constructor","url":"classes/GhostNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"GhostNote"},{"id":1771,"kind":2048,"name":"isRest","url":"classes/GhostNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GhostNote"},{"id":1772,"kind":2048,"name":"setStave","url":"classes/GhostNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GhostNote"},{"id":1773,"kind":2048,"name":"addToModifierContext","url":"classes/GhostNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GhostNote"},{"id":1774,"kind":2048,"name":"preFormat","url":"classes/GhostNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GhostNote"},{"id":1775,"kind":2048,"name":"draw","url":"classes/GhostNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GhostNote"},{"id":1776,"kind":1024,"name":"stem_direction","url":"classes/GhostNote.html#stem_direction","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1777,"kind":1024,"name":"stem","url":"classes/GhostNote.html#stem","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1778,"kind":2048,"name":"getStem","url":"classes/GhostNote.html#getStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1779,"kind":2048,"name":"checkStem","url":"classes/GhostNote.html#checkStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1780,"kind":2048,"name":"setStem","url":"classes/GhostNote.html#setStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1781,"kind":2048,"name":"buildStem","url":"classes/GhostNote.html#buildStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1782,"kind":2048,"name":"buildFlag","url":"classes/GhostNote.html#buildFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1783,"kind":2048,"name":"getBaseCustomNoteHeadGlyph","url":"classes/GhostNote.html#getBaseCustomNoteHeadGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1784,"kind":2048,"name":"getStemLength","url":"classes/GhostNote.html#getStemLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1785,"kind":2048,"name":"getBeamCount","url":"classes/GhostNote.html#getBeamCount","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1786,"kind":2048,"name":"getStemMinimumLength","url":"classes/GhostNote.html#getStemMinimumLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1787,"kind":2048,"name":"getStemDirection","url":"classes/GhostNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1788,"kind":2048,"name":"setStemDirection","url":"classes/GhostNote.html#setStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1789,"kind":2048,"name":"getStemX","url":"classes/GhostNote.html#getStemX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1790,"kind":2048,"name":"getCenterGlyphX","url":"classes/GhostNote.html#getCenterGlyphX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1791,"kind":2048,"name":"getStemExtension","url":"classes/GhostNote.html#getStemExtension","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1792,"kind":2048,"name":"setStemLength","url":"classes/GhostNote.html#setStemLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1793,"kind":2048,"name":"getStemExtents","url":"classes/GhostNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1794,"kind":2048,"name":"getYForTopText","url":"classes/GhostNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1795,"kind":2048,"name":"getYForBottomText","url":"classes/GhostNote.html#getYForBottomText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1796,"kind":2048,"name":"hasFlag","url":"classes/GhostNote.html#hasFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1797,"kind":2048,"name":"postFormat","url":"classes/GhostNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1798,"kind":2048,"name":"drawStem","url":"classes/GhostNote.html#drawStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1799,"kind":1024,"name":"glyph","url":"classes/GhostNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1800,"kind":1024,"name":"keys","url":"classes/GhostNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1801,"kind":1024,"name":"keyProps","url":"classes/GhostNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1802,"kind":1024,"name":"render_options","url":"classes/GhostNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1803,"kind":65536,"name":"__type","url":"classes/GhostNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"GhostNote"},{"id":1804,"kind":1024,"name":"draw_stem_through_stave","url":"classes/GhostNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1805,"kind":1024,"name":"draw","url":"classes/GhostNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1806,"kind":1024,"name":"draw_dots","url":"classes/GhostNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1807,"kind":1024,"name":"draw_stem","url":"classes/GhostNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1808,"kind":1024,"name":"y_shift","url":"classes/GhostNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1809,"kind":1024,"name":"extend_left","url":"classes/GhostNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1810,"kind":1024,"name":"extend_right","url":"classes/GhostNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1811,"kind":1024,"name":"glyph_font_scale","url":"classes/GhostNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1812,"kind":1024,"name":"annotation_spacing","url":"classes/GhostNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1813,"kind":1024,"name":"glyph_font_size","url":"classes/GhostNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1814,"kind":1024,"name":"scale","url":"classes/GhostNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1815,"kind":1024,"name":"font","url":"classes/GhostNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1816,"kind":1024,"name":"stroke_px","url":"classes/GhostNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GhostNote.__type"},{"id":1817,"kind":2048,"name":"getPlayNote","url":"classes/GhostNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1818,"kind":2048,"name":"setPlayNote","url":"classes/GhostNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1819,"kind":2048,"name":"addStroke","url":"classes/GhostNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1820,"kind":2048,"name":"getStave","url":"classes/GhostNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1821,"kind":2048,"name":"checkStave","url":"classes/GhostNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1822,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/GhostNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1823,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/GhostNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1824,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/GhostNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1825,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/GhostNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1826,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/GhostNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1827,"kind":2048,"name":"getLineNumber","url":"classes/GhostNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1828,"kind":2048,"name":"getLineForRest","url":"classes/GhostNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1829,"kind":2048,"name":"getGlyph","url":"classes/GhostNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1830,"kind":2048,"name":"getGlyphWidth","url":"classes/GhostNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1831,"kind":2048,"name":"setYs","url":"classes/GhostNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1832,"kind":2048,"name":"getYs","url":"classes/GhostNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1833,"kind":2048,"name":"getVoice","url":"classes/GhostNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1834,"kind":2048,"name":"setVoice","url":"classes/GhostNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1835,"kind":2048,"name":"getTickContext","url":"classes/GhostNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1836,"kind":2048,"name":"setTickContext","url":"classes/GhostNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1837,"kind":2048,"name":"getDuration","url":"classes/GhostNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1838,"kind":2048,"name":"isDotted","url":"classes/GhostNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1839,"kind":2048,"name":"hasStem","url":"classes/GhostNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1840,"kind":2048,"name":"getNoteType","url":"classes/GhostNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1841,"kind":2048,"name":"getBeam","url":"classes/GhostNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1842,"kind":2048,"name":"checkBeam","url":"classes/GhostNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1843,"kind":2048,"name":"hasBeam","url":"classes/GhostNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1844,"kind":2048,"name":"setBeam","url":"classes/GhostNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1845,"kind":2048,"name":"addModifier","url":"classes/GhostNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1846,"kind":2048,"name":"getModifiersByType","url":"classes/GhostNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1847,"kind":2048,"name":"getModifierStartXY","url":"classes/GhostNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1848,"kind":2048,"name":"getRightParenthesisPx","url":"classes/GhostNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1849,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/GhostNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1850,"kind":2048,"name":"getFirstDotPx","url":"classes/GhostNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1851,"kind":2048,"name":"getMetrics","url":"classes/GhostNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1852,"kind":2048,"name":"getAbsoluteX","url":"classes/GhostNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1853,"kind":2048,"name":"getTieRightX","url":"classes/GhostNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1854,"kind":2048,"name":"getTieLeftX","url":"classes/GhostNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1855,"kind":2048,"name":"getKeys","url":"classes/GhostNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1856,"kind":2048,"name":"getKeyProps","url":"classes/GhostNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1857,"kind":2048,"name":"reset","url":"classes/GhostNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1858,"kind":2048,"name":"getTicks","url":"classes/GhostNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1859,"kind":2048,"name":"setIgnoreTicks","url":"classes/GhostNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1860,"kind":2048,"name":"setWidth","url":"classes/GhostNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1861,"kind":2048,"name":"getWidth","url":"classes/GhostNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1862,"kind":2048,"name":"setXShift","url":"classes/GhostNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1863,"kind":2048,"name":"getXShift","url":"classes/GhostNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1864,"kind":2048,"name":"getX","url":"classes/GhostNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1865,"kind":2048,"name":"getFormatterMetrics","url":"classes/GhostNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1866,"kind":2048,"name":"getCenterXShift","url":"classes/GhostNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1867,"kind":2048,"name":"setCenterXShift","url":"classes/GhostNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1868,"kind":2048,"name":"isCenterAligned","url":"classes/GhostNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1869,"kind":2048,"name":"setCenterAlignment","url":"classes/GhostNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1870,"kind":2048,"name":"getTuplet","url":"classes/GhostNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1871,"kind":2048,"name":"getTupletStack","url":"classes/GhostNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1872,"kind":2048,"name":"resetTuplet","url":"classes/GhostNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1873,"kind":2048,"name":"setTuplet","url":"classes/GhostNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1874,"kind":2048,"name":"getModifiers","url":"classes/GhostNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1875,"kind":2048,"name":"checkTickContext","url":"classes/GhostNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1876,"kind":262144,"name":"preFormatted","url":"classes/GhostNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1877,"kind":262144,"name":"postFormatted","url":"classes/GhostNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1878,"kind":2048,"name":"getIntrinsicTicks","url":"classes/GhostNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1879,"kind":2048,"name":"setIntrinsicTicks","url":"classes/GhostNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1880,"kind":2048,"name":"getTickMultiplier","url":"classes/GhostNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1881,"kind":2048,"name":"applyTickMultiplier","url":"classes/GhostNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1882,"kind":2048,"name":"setDuration","url":"classes/GhostNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1883,"kind":2048,"name":"setModifierContext","url":"classes/GhostNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1884,"kind":2048,"name":"getModifierContext","url":"classes/GhostNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1885,"kind":2048,"name":"checkModifierContext","url":"classes/GhostNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1886,"kind":2048,"name":"addChildElement","url":"classes/GhostNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1887,"kind":2048,"name":"getCategory","url":"classes/GhostNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1888,"kind":2048,"name":"setStyle","url":"classes/GhostNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1889,"kind":2048,"name":"setGroupStyle","url":"classes/GhostNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1890,"kind":2048,"name":"getStyle","url":"classes/GhostNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1891,"kind":2048,"name":"applyStyle","url":"classes/GhostNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1892,"kind":2048,"name":"restoreStyle","url":"classes/GhostNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1893,"kind":2048,"name":"drawWithStyle","url":"classes/GhostNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1894,"kind":2048,"name":"hasClass","url":"classes/GhostNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1895,"kind":2048,"name":"addClass","url":"classes/GhostNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1896,"kind":2048,"name":"removeClass","url":"classes/GhostNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1897,"kind":2048,"name":"onRegister","url":"classes/GhostNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1898,"kind":2048,"name":"isRendered","url":"classes/GhostNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1899,"kind":2048,"name":"setRendered","url":"classes/GhostNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1900,"kind":2048,"name":"getAttributes","url":"classes/GhostNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1901,"kind":2048,"name":"getAttribute","url":"classes/GhostNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1902,"kind":2048,"name":"getSVGElement","url":"classes/GhostNote.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1903,"kind":2048,"name":"setAttribute","url":"classes/GhostNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1904,"kind":2048,"name":"getBoundingBox","url":"classes/GhostNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1905,"kind":2048,"name":"getContext","url":"classes/GhostNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1906,"kind":2048,"name":"setContext","url":"classes/GhostNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1907,"kind":2048,"name":"checkContext","url":"classes/GhostNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1908,"kind":262144,"name":"font","url":"classes/GhostNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1909,"kind":2048,"name":"setFont","url":"classes/GhostNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1910,"kind":2048,"name":"getFont","url":"classes/GhostNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1911,"kind":2048,"name":"resetFont","url":"classes/GhostNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1912,"kind":262144,"name":"fontInfo","url":"classes/GhostNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1913,"kind":2048,"name":"setFontSize","url":"classes/GhostNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1914,"kind":2048,"name":"getFontSize","url":"classes/GhostNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1915,"kind":262144,"name":"fontSize","url":"classes/GhostNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1916,"kind":262144,"name":"fontSizeInPoints","url":"classes/GhostNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1917,"kind":262144,"name":"fontSizeInPixels","url":"classes/GhostNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1918,"kind":262144,"name":"fontStyle","url":"classes/GhostNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1919,"kind":262144,"name":"fontWeight","url":"classes/GhostNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GhostNote"},{"id":1920,"kind":256,"name":"GlyphProps","url":"interfaces/GlyphProps.html","classes":"tsd-kind-interface"},{"id":1921,"kind":1024,"name":"code_head","url":"interfaces/GlyphProps.html#code_head","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1922,"kind":1024,"name":"dot_shiftY","url":"interfaces/GlyphProps.html#dot_shiftY","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1923,"kind":1024,"name":"position","url":"interfaces/GlyphProps.html#position","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1924,"kind":1024,"name":"rest","url":"interfaces/GlyphProps.html#rest","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1925,"kind":1024,"name":"line_below","url":"interfaces/GlyphProps.html#line_below","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1926,"kind":1024,"name":"line_above","url":"interfaces/GlyphProps.html#line_above","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1927,"kind":1024,"name":"stem_beam_extension","url":"interfaces/GlyphProps.html#stem_beam_extension","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1928,"kind":1024,"name":"stem_up_extension","url":"interfaces/GlyphProps.html#stem_up_extension","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1929,"kind":1024,"name":"stem_down_extension","url":"interfaces/GlyphProps.html#stem_down_extension","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1930,"kind":1024,"name":"stem","url":"interfaces/GlyphProps.html#stem","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1931,"kind":1024,"name":"code","url":"interfaces/GlyphProps.html#code","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1932,"kind":1024,"name":"code_flag_upstem","url":"interfaces/GlyphProps.html#code_flag_upstem","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1933,"kind":1024,"name":"code_flag_downstem","url":"interfaces/GlyphProps.html#code_flag_downstem","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1934,"kind":1024,"name":"flag","url":"interfaces/GlyphProps.html#flag","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1935,"kind":1024,"name":"width","url":"interfaces/GlyphProps.html#width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1936,"kind":1024,"name":"text","url":"interfaces/GlyphProps.html#text","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1937,"kind":1024,"name":"tabnote_stem_down_extension","url":"interfaces/GlyphProps.html#tabnote_stem_down_extension","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1938,"kind":1024,"name":"tabnote_stem_up_extension","url":"interfaces/GlyphProps.html#tabnote_stem_up_extension","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1939,"kind":1024,"name":"beam_count","url":"interfaces/GlyphProps.html#beam_count","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1940,"kind":1024,"name":"shift_y","url":"interfaces/GlyphProps.html#shift_y","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1941,"kind":2048,"name":"getWidth","url":"interfaces/GlyphProps.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1942,"kind":2048,"name":"getMetrics","url":"interfaces/GlyphProps.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"GlyphProps"},{"id":1943,"kind":256,"name":"GlyphOptions","url":"interfaces/GlyphOptions.html","classes":"tsd-kind-interface"},{"id":1944,"kind":1024,"name":"category","url":"interfaces/GlyphOptions.html#category","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphOptions"},{"id":1945,"kind":256,"name":"GlyphMetrics","url":"interfaces/GlyphMetrics.html","classes":"tsd-kind-interface"},{"id":1946,"kind":1024,"name":"width","url":"interfaces/GlyphMetrics.html#width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphMetrics"},{"id":1947,"kind":1024,"name":"height","url":"interfaces/GlyphMetrics.html#height","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphMetrics"},{"id":1948,"kind":1024,"name":"x_min","url":"interfaces/GlyphMetrics.html#x_min","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphMetrics"},{"id":1949,"kind":1024,"name":"x_max","url":"interfaces/GlyphMetrics.html#x_max","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphMetrics"},{"id":1950,"kind":1024,"name":"x_shift","url":"interfaces/GlyphMetrics.html#x_shift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphMetrics"},{"id":1951,"kind":1024,"name":"y_shift","url":"interfaces/GlyphMetrics.html#y_shift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphMetrics"},{"id":1952,"kind":1024,"name":"scale","url":"interfaces/GlyphMetrics.html#scale","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphMetrics"},{"id":1953,"kind":1024,"name":"ha","url":"interfaces/GlyphMetrics.html#ha","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphMetrics"},{"id":1954,"kind":1024,"name":"outline","url":"interfaces/GlyphMetrics.html#outline","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphMetrics"},{"id":1955,"kind":1024,"name":"font","url":"interfaces/GlyphMetrics.html#font","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphMetrics"},{"id":1956,"kind":8,"name":"OutlineCode","url":"enums/OutlineCode.html","classes":"tsd-kind-enum"},{"id":1957,"kind":16,"name":"MOVE","url":"enums/OutlineCode.html#MOVE","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OutlineCode"},{"id":1958,"kind":16,"name":"LINE","url":"enums/OutlineCode.html#LINE","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OutlineCode"},{"id":1959,"kind":16,"name":"QUADRATIC","url":"enums/OutlineCode.html#QUADRATIC","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OutlineCode"},{"id":1960,"kind":16,"name":"BEZIER","url":"enums/OutlineCode.html#BEZIER","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OutlineCode"},{"id":1961,"kind":128,"name":"Glyph","url":"classes/Glyph.html","classes":"tsd-kind-class"},{"id":1962,"kind":262144,"name":"CATEGORY","url":"classes/Glyph.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Glyph"},{"id":1963,"kind":1024,"name":"CURRENT_CACHE_KEY","url":"classes/Glyph.html#CURRENT_CACHE_KEY","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Glyph"},{"id":1964,"kind":1024,"name":"MUSIC_FONT_STACK","url":"classes/Glyph.html#MUSIC_FONT_STACK","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Glyph"},{"id":1965,"kind":2048,"name":"lookupFontMetric","url":"classes/Glyph.html#lookupFontMetric","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Glyph"},{"id":1966,"kind":2048,"name":"lookupGlyph","url":"classes/Glyph.html#lookupGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Glyph"},{"id":1967,"kind":2048,"name":"loadMetrics","url":"classes/Glyph.html#loadMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Glyph"},{"id":1968,"kind":2048,"name":"renderGlyph","url":"classes/Glyph.html#renderGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Glyph"},{"id":1969,"kind":2048,"name":"renderOutline","url":"classes/Glyph.html#renderOutline","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Glyph"},{"id":1970,"kind":2048,"name":"getOutlineBoundingBox","url":"classes/Glyph.html#getOutlineBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Glyph"},{"id":1971,"kind":2048,"name":"getWidth","url":"classes/Glyph.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Glyph"},{"id":1972,"kind":1024,"name":"TEXT_FONT","url":"classes/Glyph.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Glyph"},{"id":1973,"kind":512,"name":"constructor","url":"classes/Glyph.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Glyph"},{"id":1974,"kind":1024,"name":"bbox","url":"classes/Glyph.html#bbox","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Glyph"},{"id":1975,"kind":1024,"name":"code","url":"classes/Glyph.html#code","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Glyph"},{"id":1976,"kind":1024,"name":"metrics","url":"classes/Glyph.html#metrics","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Glyph"},{"id":1977,"kind":1024,"name":"topGlyphs","url":"classes/Glyph.html#topGlyphs","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Glyph"},{"id":1978,"kind":1024,"name":"botGlyphs","url":"classes/Glyph.html#botGlyphs","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Glyph"},{"id":1979,"kind":1024,"name":"scale","url":"classes/Glyph.html#scale","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Glyph"},{"id":1980,"kind":2048,"name":"draw","url":"classes/Glyph.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Glyph"},{"id":1981,"kind":2048,"name":"getCode","url":"classes/Glyph.html#getCode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1982,"kind":2048,"name":"setOptions","url":"classes/Glyph.html#setOptions","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1983,"kind":2048,"name":"setPoint","url":"classes/Glyph.html#setPoint","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1984,"kind":2048,"name":"setStave","url":"classes/Glyph.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1985,"kind":2048,"name":"getXShift","url":"classes/Glyph.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1986,"kind":2048,"name":"setXShift","url":"classes/Glyph.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1987,"kind":2048,"name":"getYshift","url":"classes/Glyph.html#getYshift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1988,"kind":2048,"name":"setYShift","url":"classes/Glyph.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1989,"kind":2048,"name":"reset","url":"classes/Glyph.html#reset","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1990,"kind":2048,"name":"checkMetrics","url":"classes/Glyph.html#checkMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1991,"kind":2048,"name":"getMetrics","url":"classes/Glyph.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1992,"kind":2048,"name":"setOriginX","url":"classes/Glyph.html#setOriginX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1993,"kind":2048,"name":"setOriginY","url":"classes/Glyph.html#setOriginY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1994,"kind":2048,"name":"setOrigin","url":"classes/Glyph.html#setOrigin","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1995,"kind":2048,"name":"render","url":"classes/Glyph.html#render","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1996,"kind":2048,"name":"checkStave","url":"classes/Glyph.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1997,"kind":2048,"name":"renderToStave","url":"classes/Glyph.html#renderToStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Glyph"},{"id":1998,"kind":2048,"name":"addChildElement","url":"classes/Glyph.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":1999,"kind":2048,"name":"getCategory","url":"classes/Glyph.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2000,"kind":2048,"name":"setStyle","url":"classes/Glyph.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2001,"kind":2048,"name":"setGroupStyle","url":"classes/Glyph.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2002,"kind":2048,"name":"getStyle","url":"classes/Glyph.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2003,"kind":2048,"name":"applyStyle","url":"classes/Glyph.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2004,"kind":2048,"name":"restoreStyle","url":"classes/Glyph.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2005,"kind":2048,"name":"drawWithStyle","url":"classes/Glyph.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2006,"kind":2048,"name":"hasClass","url":"classes/Glyph.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2007,"kind":2048,"name":"addClass","url":"classes/Glyph.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2008,"kind":2048,"name":"removeClass","url":"classes/Glyph.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2009,"kind":2048,"name":"onRegister","url":"classes/Glyph.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2010,"kind":2048,"name":"isRendered","url":"classes/Glyph.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2011,"kind":2048,"name":"setRendered","url":"classes/Glyph.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2012,"kind":2048,"name":"getAttributes","url":"classes/Glyph.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2013,"kind":2048,"name":"getAttribute","url":"classes/Glyph.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2014,"kind":2048,"name":"getSVGElement","url":"classes/Glyph.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2015,"kind":2048,"name":"setAttribute","url":"classes/Glyph.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2016,"kind":2048,"name":"getBoundingBox","url":"classes/Glyph.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2017,"kind":2048,"name":"getContext","url":"classes/Glyph.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2018,"kind":2048,"name":"setContext","url":"classes/Glyph.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2019,"kind":2048,"name":"checkContext","url":"classes/Glyph.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2020,"kind":262144,"name":"font","url":"classes/Glyph.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2021,"kind":2048,"name":"setFont","url":"classes/Glyph.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2022,"kind":2048,"name":"getFont","url":"classes/Glyph.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2023,"kind":2048,"name":"resetFont","url":"classes/Glyph.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2024,"kind":262144,"name":"fontInfo","url":"classes/Glyph.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2025,"kind":2048,"name":"setFontSize","url":"classes/Glyph.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2026,"kind":2048,"name":"getFontSize","url":"classes/Glyph.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2027,"kind":262144,"name":"fontSize","url":"classes/Glyph.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2028,"kind":262144,"name":"fontSizeInPoints","url":"classes/Glyph.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2029,"kind":262144,"name":"fontSizeInPixels","url":"classes/Glyph.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2030,"kind":262144,"name":"fontStyle","url":"classes/Glyph.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2031,"kind":262144,"name":"fontWeight","url":"classes/Glyph.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Glyph"},{"id":2032,"kind":256,"name":"GlyphNoteOptions","url":"interfaces/GlyphNoteOptions.html","classes":"tsd-kind-interface"},{"id":2033,"kind":1024,"name":"ignoreTicks","url":"interfaces/GlyphNoteOptions.html#ignoreTicks","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphNoteOptions"},{"id":2034,"kind":1024,"name":"line","url":"interfaces/GlyphNoteOptions.html#line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GlyphNoteOptions"},{"id":2035,"kind":128,"name":"GlyphNote","url":"classes/GlyphNote.html","classes":"tsd-kind-class"},{"id":2036,"kind":262144,"name":"CATEGORY","url":"classes/GlyphNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"GlyphNote"},{"id":2037,"kind":2048,"name":"plotMetrics","url":"classes/GlyphNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GlyphNote"},{"id":2038,"kind":1024,"name":"TEXT_FONT","url":"classes/GlyphNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GlyphNote"},{"id":2039,"kind":512,"name":"constructor","url":"classes/GlyphNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"GlyphNote"},{"id":2040,"kind":2048,"name":"setGlyph","url":"classes/GlyphNote.html#setGlyph","classes":"tsd-kind-method tsd-parent-kind-class","parent":"GlyphNote"},{"id":2041,"kind":2048,"name":"getBoundingBox","url":"classes/GlyphNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GlyphNote"},{"id":2042,"kind":2048,"name":"preFormat","url":"classes/GlyphNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GlyphNote"},{"id":2043,"kind":2048,"name":"drawModifiers","url":"classes/GlyphNote.html#drawModifiers","classes":"tsd-kind-method tsd-parent-kind-class","parent":"GlyphNote"},{"id":2044,"kind":2048,"name":"draw","url":"classes/GlyphNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GlyphNote"},{"id":2045,"kind":1024,"name":"glyph","url":"classes/GlyphNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2046,"kind":1024,"name":"keys","url":"classes/GlyphNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2047,"kind":1024,"name":"keyProps","url":"classes/GlyphNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2048,"kind":1024,"name":"render_options","url":"classes/GlyphNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2049,"kind":65536,"name":"__type","url":"classes/GlyphNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"GlyphNote"},{"id":2050,"kind":1024,"name":"draw_stem_through_stave","url":"classes/GlyphNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2051,"kind":1024,"name":"draw","url":"classes/GlyphNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2052,"kind":1024,"name":"draw_dots","url":"classes/GlyphNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2053,"kind":1024,"name":"draw_stem","url":"classes/GlyphNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2054,"kind":1024,"name":"y_shift","url":"classes/GlyphNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2055,"kind":1024,"name":"extend_left","url":"classes/GlyphNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2056,"kind":1024,"name":"extend_right","url":"classes/GlyphNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2057,"kind":1024,"name":"glyph_font_scale","url":"classes/GlyphNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2058,"kind":1024,"name":"annotation_spacing","url":"classes/GlyphNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2059,"kind":1024,"name":"glyph_font_size","url":"classes/GlyphNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2060,"kind":1024,"name":"scale","url":"classes/GlyphNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2061,"kind":1024,"name":"font","url":"classes/GlyphNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2062,"kind":1024,"name":"stroke_px","url":"classes/GlyphNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GlyphNote.__type"},{"id":2063,"kind":2048,"name":"getPlayNote","url":"classes/GlyphNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2064,"kind":2048,"name":"setPlayNote","url":"classes/GlyphNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2065,"kind":2048,"name":"isRest","url":"classes/GlyphNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2066,"kind":2048,"name":"addStroke","url":"classes/GlyphNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2067,"kind":2048,"name":"getStave","url":"classes/GlyphNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2068,"kind":2048,"name":"checkStave","url":"classes/GlyphNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2069,"kind":2048,"name":"setStave","url":"classes/GlyphNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2070,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/GlyphNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2071,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/GlyphNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2072,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/GlyphNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2073,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/GlyphNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2074,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/GlyphNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2075,"kind":2048,"name":"getLineNumber","url":"classes/GlyphNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2076,"kind":2048,"name":"getLineForRest","url":"classes/GlyphNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2077,"kind":2048,"name":"getGlyph","url":"classes/GlyphNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2078,"kind":2048,"name":"getGlyphWidth","url":"classes/GlyphNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2079,"kind":2048,"name":"setYs","url":"classes/GlyphNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2080,"kind":2048,"name":"getYs","url":"classes/GlyphNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2081,"kind":2048,"name":"getYForTopText","url":"classes/GlyphNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2082,"kind":2048,"name":"getVoice","url":"classes/GlyphNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2083,"kind":2048,"name":"setVoice","url":"classes/GlyphNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2084,"kind":2048,"name":"getTickContext","url":"classes/GlyphNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2085,"kind":2048,"name":"setTickContext","url":"classes/GlyphNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2086,"kind":2048,"name":"getDuration","url":"classes/GlyphNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2087,"kind":2048,"name":"isDotted","url":"classes/GlyphNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2088,"kind":2048,"name":"hasStem","url":"classes/GlyphNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2089,"kind":2048,"name":"getNoteType","url":"classes/GlyphNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2090,"kind":2048,"name":"getBeam","url":"classes/GlyphNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2091,"kind":2048,"name":"checkBeam","url":"classes/GlyphNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2092,"kind":2048,"name":"hasBeam","url":"classes/GlyphNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2093,"kind":2048,"name":"setBeam","url":"classes/GlyphNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2094,"kind":2048,"name":"addModifier","url":"classes/GlyphNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2095,"kind":2048,"name":"getModifiersByType","url":"classes/GlyphNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2096,"kind":2048,"name":"getModifierStartXY","url":"classes/GlyphNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2097,"kind":2048,"name":"getRightParenthesisPx","url":"classes/GlyphNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2098,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/GlyphNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2099,"kind":2048,"name":"getFirstDotPx","url":"classes/GlyphNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2100,"kind":2048,"name":"getMetrics","url":"classes/GlyphNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2101,"kind":2048,"name":"getAbsoluteX","url":"classes/GlyphNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2102,"kind":2048,"name":"getStemDirection","url":"classes/GlyphNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2103,"kind":2048,"name":"getStemExtents","url":"classes/GlyphNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2104,"kind":2048,"name":"getTieRightX","url":"classes/GlyphNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2105,"kind":2048,"name":"getTieLeftX","url":"classes/GlyphNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2106,"kind":2048,"name":"getKeys","url":"classes/GlyphNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2107,"kind":2048,"name":"getKeyProps","url":"classes/GlyphNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2108,"kind":2048,"name":"reset","url":"classes/GlyphNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2109,"kind":2048,"name":"getTicks","url":"classes/GlyphNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2110,"kind":2048,"name":"setIgnoreTicks","url":"classes/GlyphNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2111,"kind":2048,"name":"setWidth","url":"classes/GlyphNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2112,"kind":2048,"name":"getWidth","url":"classes/GlyphNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2113,"kind":2048,"name":"setXShift","url":"classes/GlyphNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2114,"kind":2048,"name":"getXShift","url":"classes/GlyphNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2115,"kind":2048,"name":"getX","url":"classes/GlyphNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2116,"kind":2048,"name":"getFormatterMetrics","url":"classes/GlyphNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2117,"kind":2048,"name":"getCenterXShift","url":"classes/GlyphNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2118,"kind":2048,"name":"setCenterXShift","url":"classes/GlyphNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2119,"kind":2048,"name":"isCenterAligned","url":"classes/GlyphNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2120,"kind":2048,"name":"setCenterAlignment","url":"classes/GlyphNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2121,"kind":2048,"name":"getTuplet","url":"classes/GlyphNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2122,"kind":2048,"name":"getTupletStack","url":"classes/GlyphNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2123,"kind":2048,"name":"resetTuplet","url":"classes/GlyphNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2124,"kind":2048,"name":"setTuplet","url":"classes/GlyphNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2125,"kind":2048,"name":"addToModifierContext","url":"classes/GlyphNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2126,"kind":2048,"name":"getModifiers","url":"classes/GlyphNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2127,"kind":2048,"name":"checkTickContext","url":"classes/GlyphNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2128,"kind":262144,"name":"preFormatted","url":"classes/GlyphNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2129,"kind":2048,"name":"postFormat","url":"classes/GlyphNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2130,"kind":262144,"name":"postFormatted","url":"classes/GlyphNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2131,"kind":2048,"name":"getIntrinsicTicks","url":"classes/GlyphNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2132,"kind":2048,"name":"setIntrinsicTicks","url":"classes/GlyphNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2133,"kind":2048,"name":"getTickMultiplier","url":"classes/GlyphNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2134,"kind":2048,"name":"applyTickMultiplier","url":"classes/GlyphNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2135,"kind":2048,"name":"setDuration","url":"classes/GlyphNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2136,"kind":2048,"name":"setModifierContext","url":"classes/GlyphNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2137,"kind":2048,"name":"getModifierContext","url":"classes/GlyphNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2138,"kind":2048,"name":"checkModifierContext","url":"classes/GlyphNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2139,"kind":2048,"name":"addChildElement","url":"classes/GlyphNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2140,"kind":2048,"name":"getCategory","url":"classes/GlyphNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2141,"kind":2048,"name":"setStyle","url":"classes/GlyphNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2142,"kind":2048,"name":"setGroupStyle","url":"classes/GlyphNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2143,"kind":2048,"name":"getStyle","url":"classes/GlyphNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2144,"kind":2048,"name":"applyStyle","url":"classes/GlyphNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2145,"kind":2048,"name":"restoreStyle","url":"classes/GlyphNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2146,"kind":2048,"name":"drawWithStyle","url":"classes/GlyphNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2147,"kind":2048,"name":"hasClass","url":"classes/GlyphNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2148,"kind":2048,"name":"addClass","url":"classes/GlyphNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2149,"kind":2048,"name":"removeClass","url":"classes/GlyphNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2150,"kind":2048,"name":"onRegister","url":"classes/GlyphNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2151,"kind":2048,"name":"isRendered","url":"classes/GlyphNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2152,"kind":2048,"name":"setRendered","url":"classes/GlyphNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2153,"kind":2048,"name":"getAttributes","url":"classes/GlyphNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2154,"kind":2048,"name":"getAttribute","url":"classes/GlyphNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2155,"kind":2048,"name":"getSVGElement","url":"classes/GlyphNote.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2156,"kind":2048,"name":"setAttribute","url":"classes/GlyphNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2157,"kind":2048,"name":"getContext","url":"classes/GlyphNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2158,"kind":2048,"name":"setContext","url":"classes/GlyphNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2159,"kind":2048,"name":"checkContext","url":"classes/GlyphNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2160,"kind":262144,"name":"font","url":"classes/GlyphNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2161,"kind":2048,"name":"setFont","url":"classes/GlyphNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2162,"kind":2048,"name":"getFont","url":"classes/GlyphNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2163,"kind":2048,"name":"resetFont","url":"classes/GlyphNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2164,"kind":262144,"name":"fontInfo","url":"classes/GlyphNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2165,"kind":2048,"name":"setFontSize","url":"classes/GlyphNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2166,"kind":2048,"name":"getFontSize","url":"classes/GlyphNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2167,"kind":262144,"name":"fontSize","url":"classes/GlyphNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2168,"kind":262144,"name":"fontSizeInPoints","url":"classes/GlyphNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2169,"kind":262144,"name":"fontSizeInPixels","url":"classes/GlyphNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2170,"kind":262144,"name":"fontStyle","url":"classes/GlyphNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2171,"kind":262144,"name":"fontWeight","url":"classes/GlyphNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GlyphNote"},{"id":2172,"kind":256,"name":"GraceNoteStruct","url":"interfaces/GraceNoteStruct.html","classes":"tsd-kind-interface"},{"id":2173,"kind":1024,"name":"slash","url":"interfaces/GraceNoteStruct.html#slash","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GraceNoteStruct"},{"id":2174,"kind":1024,"name":"stem_direction","url":"interfaces/GraceNoteStruct.html#stem_direction","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2175,"kind":1024,"name":"auto_stem","url":"interfaces/GraceNoteStruct.html#auto_stem","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2176,"kind":1024,"name":"stem_down_x_offset","url":"interfaces/GraceNoteStruct.html#stem_down_x_offset","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2177,"kind":1024,"name":"stem_up_x_offset","url":"interfaces/GraceNoteStruct.html#stem_up_x_offset","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2178,"kind":1024,"name":"stroke_px","url":"interfaces/GraceNoteStruct.html#stroke_px","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2179,"kind":1024,"name":"glyph_font_scale","url":"interfaces/GraceNoteStruct.html#glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2180,"kind":1024,"name":"octave_shift","url":"interfaces/GraceNoteStruct.html#octave_shift","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2181,"kind":1024,"name":"clef","url":"interfaces/GraceNoteStruct.html#clef","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2182,"kind":1024,"name":"keys","url":"interfaces/GraceNoteStruct.html#keys","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2183,"kind":1024,"name":"duration","url":"interfaces/GraceNoteStruct.html#duration","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2184,"kind":1024,"name":"line","url":"interfaces/GraceNoteStruct.html#line","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2185,"kind":1024,"name":"dots","url":"interfaces/GraceNoteStruct.html#dots","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2186,"kind":1024,"name":"type","url":"interfaces/GraceNoteStruct.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2187,"kind":1024,"name":"align_center","url":"interfaces/GraceNoteStruct.html#align_center","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2188,"kind":1024,"name":"duration_override","url":"interfaces/GraceNoteStruct.html#duration_override","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"GraceNoteStruct"},{"id":2189,"kind":128,"name":"GraceNote","url":"classes/GraceNote.html","classes":"tsd-kind-class"},{"id":2190,"kind":262144,"name":"CATEGORY","url":"classes/GraceNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"GraceNote"},{"id":2191,"kind":262144,"name":"LEDGER_LINE_OFFSET","url":"classes/GraceNote.html#LEDGER_LINE_OFFSET","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"GraceNote"},{"id":2192,"kind":262144,"name":"SCALE","url":"classes/GraceNote.html#SCALE","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"GraceNote"},{"id":2193,"kind":1024,"name":"DEBUG","url":"classes/GraceNote.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceNote"},{"id":2194,"kind":262144,"name":"STEM_UP","url":"classes/GraceNote.html#STEM_UP","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceNote"},{"id":2195,"kind":262144,"name":"STEM_DOWN","url":"classes/GraceNote.html#STEM_DOWN","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceNote"},{"id":2196,"kind":262144,"name":"minNoteheadPadding","url":"classes/GraceNote.html#minNoteheadPadding","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceNote"},{"id":2197,"kind":2048,"name":"format","url":"classes/GraceNote.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceNote"},{"id":2198,"kind":2048,"name":"postFormat","url":"classes/GraceNote.html#postFormat-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceNote"},{"id":2199,"kind":2048,"name":"plotMetrics","url":"classes/GraceNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceNote"},{"id":2200,"kind":1024,"name":"TEXT_FONT","url":"classes/GraceNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceNote"},{"id":2201,"kind":512,"name":"constructor","url":"classes/GraceNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"GraceNote"},{"id":2202,"kind":2048,"name":"getStemExtension","url":"classes/GraceNote.html#getStemExtension","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GraceNote"},{"id":2203,"kind":2048,"name":"getStaveNoteScale","url":"classes/GraceNote.html#getStaveNoteScale","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GraceNote"},{"id":2204,"kind":2048,"name":"draw","url":"classes/GraceNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GraceNote"},{"id":2205,"kind":2048,"name":"calcBeamedNotesSlashBBox","url":"classes/GraceNote.html#calcBeamedNotesSlashBBox","classes":"tsd-kind-method tsd-parent-kind-class","parent":"GraceNote"},{"id":2206,"kind":1024,"name":"minLine","url":"classes/GraceNote.html#minLine","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2207,"kind":1024,"name":"maxLine","url":"classes/GraceNote.html#maxLine","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2208,"kind":2048,"name":"reset","url":"classes/GraceNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2209,"kind":2048,"name":"setBeam","url":"classes/GraceNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2210,"kind":2048,"name":"buildStem","url":"classes/GraceNote.html#buildStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2211,"kind":2048,"name":"buildNoteHeads","url":"classes/GraceNote.html#buildNoteHeads","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2212,"kind":2048,"name":"autoStem","url":"classes/GraceNote.html#autoStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2213,"kind":2048,"name":"calculateOptimalStemDirection","url":"classes/GraceNote.html#calculateOptimalStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2214,"kind":2048,"name":"calculateKeyProps","url":"classes/GraceNote.html#calculateKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2215,"kind":2048,"name":"getBoundingBox","url":"classes/GraceNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2216,"kind":2048,"name":"getLineNumber","url":"classes/GraceNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2217,"kind":2048,"name":"isRest","url":"classes/GraceNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2218,"kind":2048,"name":"isChord","url":"classes/GraceNote.html#isChord","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2219,"kind":2048,"name":"hasStem","url":"classes/GraceNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2220,"kind":2048,"name":"hasFlag","url":"classes/GraceNote.html#hasFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2221,"kind":2048,"name":"getStemX","url":"classes/GraceNote.html#getStemX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2222,"kind":2048,"name":"getYForTopText","url":"classes/GraceNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2223,"kind":2048,"name":"getYForBottomText","url":"classes/GraceNote.html#getYForBottomText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2224,"kind":2048,"name":"setStave","url":"classes/GraceNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2225,"kind":2048,"name":"isDisplaced","url":"classes/GraceNote.html#isDisplaced","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2226,"kind":2048,"name":"setNoteDisplaced","url":"classes/GraceNote.html#setNoteDisplaced","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2227,"kind":2048,"name":"getTieRightX","url":"classes/GraceNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2228,"kind":2048,"name":"getTieLeftX","url":"classes/GraceNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2229,"kind":2048,"name":"getLineForRest","url":"classes/GraceNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2230,"kind":2048,"name":"getModifierStartXY","url":"classes/GraceNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2231,"kind":2048,"name":"setStyle","url":"classes/GraceNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2232,"kind":2048,"name":"setStemStyle","url":"classes/GraceNote.html#setStemStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2233,"kind":2048,"name":"getStemStyle","url":"classes/GraceNote.html#getStemStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2234,"kind":2048,"name":"setLedgerLineStyle","url":"classes/GraceNote.html#setLedgerLineStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2235,"kind":2048,"name":"getLedgerLineStyle","url":"classes/GraceNote.html#getLedgerLineStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2236,"kind":2048,"name":"setFlagStyle","url":"classes/GraceNote.html#setFlagStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2237,"kind":2048,"name":"getFlagStyle","url":"classes/GraceNote.html#getFlagStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2238,"kind":2048,"name":"setKeyStyle","url":"classes/GraceNote.html#setKeyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2239,"kind":2048,"name":"setKeyLine","url":"classes/GraceNote.html#setKeyLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2240,"kind":2048,"name":"getKeyLine","url":"classes/GraceNote.html#getKeyLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2241,"kind":2048,"name":"getVoiceShiftWidth","url":"classes/GraceNote.html#getVoiceShiftWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2242,"kind":2048,"name":"calcNoteDisplacements","url":"classes/GraceNote.html#calcNoteDisplacements","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2243,"kind":2048,"name":"preFormat","url":"classes/GraceNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2244,"kind":2048,"name":"getNoteHeadBounds","url":"classes/GraceNote.html#getNoteHeadBounds","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2245,"kind":2048,"name":"getNoteHeadBeginX","url":"classes/GraceNote.html#getNoteHeadBeginX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2246,"kind":2048,"name":"getNoteHeadEndX","url":"classes/GraceNote.html#getNoteHeadEndX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2247,"kind":262144,"name":"noteHeads","url":"classes/GraceNote.html#noteHeads","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2248,"kind":262144,"name":"note_heads","url":"classes/GraceNote.html#note_heads","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2249,"kind":2048,"name":"drawLedgerLines","url":"classes/GraceNote.html#drawLedgerLines","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2250,"kind":2048,"name":"drawModifiers","url":"classes/GraceNote.html#drawModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2251,"kind":2048,"name":"shouldDrawFlag","url":"classes/GraceNote.html#shouldDrawFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2252,"kind":2048,"name":"drawFlag","url":"classes/GraceNote.html#drawFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2253,"kind":2048,"name":"drawNoteHeads","url":"classes/GraceNote.html#drawNoteHeads","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2254,"kind":2048,"name":"drawStem","url":"classes/GraceNote.html#drawStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2255,"kind":1024,"name":"stem_direction","url":"classes/GraceNote.html#stem_direction","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2256,"kind":1024,"name":"stem","url":"classes/GraceNote.html#stem","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2257,"kind":2048,"name":"getStem","url":"classes/GraceNote.html#getStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2258,"kind":2048,"name":"checkStem","url":"classes/GraceNote.html#checkStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2259,"kind":2048,"name":"setStem","url":"classes/GraceNote.html#setStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2260,"kind":2048,"name":"buildFlag","url":"classes/GraceNote.html#buildFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2261,"kind":2048,"name":"getBaseCustomNoteHeadGlyph","url":"classes/GraceNote.html#getBaseCustomNoteHeadGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2262,"kind":2048,"name":"getStemLength","url":"classes/GraceNote.html#getStemLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2263,"kind":2048,"name":"getBeamCount","url":"classes/GraceNote.html#getBeamCount","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2264,"kind":2048,"name":"getStemMinimumLength","url":"classes/GraceNote.html#getStemMinimumLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2265,"kind":2048,"name":"getStemDirection","url":"classes/GraceNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2266,"kind":2048,"name":"setStemDirection","url":"classes/GraceNote.html#setStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2267,"kind":2048,"name":"getCenterGlyphX","url":"classes/GraceNote.html#getCenterGlyphX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2268,"kind":2048,"name":"setStemLength","url":"classes/GraceNote.html#setStemLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2269,"kind":2048,"name":"getStemExtents","url":"classes/GraceNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2270,"kind":2048,"name":"postFormat","url":"classes/GraceNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2271,"kind":1024,"name":"glyph","url":"classes/GraceNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2272,"kind":1024,"name":"keys","url":"classes/GraceNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2273,"kind":1024,"name":"keyProps","url":"classes/GraceNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2274,"kind":1024,"name":"render_options","url":"classes/GraceNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2275,"kind":65536,"name":"__type","url":"classes/GraceNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"GraceNote"},{"id":2276,"kind":1024,"name":"draw_stem_through_stave","url":"classes/GraceNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2277,"kind":1024,"name":"draw","url":"classes/GraceNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2278,"kind":1024,"name":"draw_dots","url":"classes/GraceNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2279,"kind":1024,"name":"draw_stem","url":"classes/GraceNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2280,"kind":1024,"name":"y_shift","url":"classes/GraceNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2281,"kind":1024,"name":"extend_left","url":"classes/GraceNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2282,"kind":1024,"name":"extend_right","url":"classes/GraceNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2283,"kind":1024,"name":"glyph_font_scale","url":"classes/GraceNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2284,"kind":1024,"name":"annotation_spacing","url":"classes/GraceNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2285,"kind":1024,"name":"glyph_font_size","url":"classes/GraceNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2286,"kind":1024,"name":"scale","url":"classes/GraceNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2287,"kind":1024,"name":"font","url":"classes/GraceNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2288,"kind":1024,"name":"stroke_px","url":"classes/GraceNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNote.__type"},{"id":2289,"kind":2048,"name":"getPlayNote","url":"classes/GraceNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2290,"kind":2048,"name":"setPlayNote","url":"classes/GraceNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2291,"kind":2048,"name":"addStroke","url":"classes/GraceNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2292,"kind":2048,"name":"getStave","url":"classes/GraceNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2293,"kind":2048,"name":"checkStave","url":"classes/GraceNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2294,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/GraceNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2295,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/GraceNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2296,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/GraceNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2297,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/GraceNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2298,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/GraceNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2299,"kind":2048,"name":"getGlyph","url":"classes/GraceNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2300,"kind":2048,"name":"getGlyphWidth","url":"classes/GraceNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2301,"kind":2048,"name":"setYs","url":"classes/GraceNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2302,"kind":2048,"name":"getYs","url":"classes/GraceNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2303,"kind":2048,"name":"getVoice","url":"classes/GraceNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2304,"kind":2048,"name":"setVoice","url":"classes/GraceNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2305,"kind":2048,"name":"getTickContext","url":"classes/GraceNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2306,"kind":2048,"name":"setTickContext","url":"classes/GraceNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2307,"kind":2048,"name":"getDuration","url":"classes/GraceNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2308,"kind":2048,"name":"isDotted","url":"classes/GraceNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2309,"kind":2048,"name":"getNoteType","url":"classes/GraceNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2310,"kind":2048,"name":"getBeam","url":"classes/GraceNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2311,"kind":2048,"name":"checkBeam","url":"classes/GraceNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2312,"kind":2048,"name":"hasBeam","url":"classes/GraceNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2313,"kind":2048,"name":"addModifier","url":"classes/GraceNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2314,"kind":2048,"name":"getModifiersByType","url":"classes/GraceNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2315,"kind":2048,"name":"getRightParenthesisPx","url":"classes/GraceNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2316,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/GraceNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2317,"kind":2048,"name":"getFirstDotPx","url":"classes/GraceNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2318,"kind":2048,"name":"getMetrics","url":"classes/GraceNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2319,"kind":2048,"name":"getAbsoluteX","url":"classes/GraceNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2320,"kind":2048,"name":"getKeys","url":"classes/GraceNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2321,"kind":2048,"name":"getKeyProps","url":"classes/GraceNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2322,"kind":2048,"name":"getTicks","url":"classes/GraceNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2323,"kind":2048,"name":"setIgnoreTicks","url":"classes/GraceNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2324,"kind":2048,"name":"setWidth","url":"classes/GraceNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2325,"kind":2048,"name":"getWidth","url":"classes/GraceNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2326,"kind":2048,"name":"setXShift","url":"classes/GraceNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2327,"kind":2048,"name":"getXShift","url":"classes/GraceNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2328,"kind":2048,"name":"getX","url":"classes/GraceNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2329,"kind":2048,"name":"getFormatterMetrics","url":"classes/GraceNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2330,"kind":2048,"name":"getCenterXShift","url":"classes/GraceNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2331,"kind":2048,"name":"setCenterXShift","url":"classes/GraceNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2332,"kind":2048,"name":"isCenterAligned","url":"classes/GraceNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2333,"kind":2048,"name":"setCenterAlignment","url":"classes/GraceNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2334,"kind":2048,"name":"getTuplet","url":"classes/GraceNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2335,"kind":2048,"name":"getTupletStack","url":"classes/GraceNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2336,"kind":2048,"name":"resetTuplet","url":"classes/GraceNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2337,"kind":2048,"name":"setTuplet","url":"classes/GraceNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2338,"kind":2048,"name":"addToModifierContext","url":"classes/GraceNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2339,"kind":2048,"name":"getModifiers","url":"classes/GraceNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2340,"kind":2048,"name":"checkTickContext","url":"classes/GraceNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2341,"kind":262144,"name":"preFormatted","url":"classes/GraceNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2342,"kind":262144,"name":"postFormatted","url":"classes/GraceNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2343,"kind":2048,"name":"getIntrinsicTicks","url":"classes/GraceNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2344,"kind":2048,"name":"setIntrinsicTicks","url":"classes/GraceNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2345,"kind":2048,"name":"getTickMultiplier","url":"classes/GraceNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2346,"kind":2048,"name":"applyTickMultiplier","url":"classes/GraceNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2347,"kind":2048,"name":"setDuration","url":"classes/GraceNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2348,"kind":2048,"name":"setModifierContext","url":"classes/GraceNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2349,"kind":2048,"name":"getModifierContext","url":"classes/GraceNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2350,"kind":2048,"name":"checkModifierContext","url":"classes/GraceNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2351,"kind":2048,"name":"addChildElement","url":"classes/GraceNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2352,"kind":2048,"name":"getCategory","url":"classes/GraceNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2353,"kind":2048,"name":"setGroupStyle","url":"classes/GraceNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2354,"kind":2048,"name":"getStyle","url":"classes/GraceNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2355,"kind":2048,"name":"applyStyle","url":"classes/GraceNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2356,"kind":2048,"name":"restoreStyle","url":"classes/GraceNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2357,"kind":2048,"name":"drawWithStyle","url":"classes/GraceNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2358,"kind":2048,"name":"hasClass","url":"classes/GraceNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2359,"kind":2048,"name":"addClass","url":"classes/GraceNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2360,"kind":2048,"name":"removeClass","url":"classes/GraceNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2361,"kind":2048,"name":"onRegister","url":"classes/GraceNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2362,"kind":2048,"name":"isRendered","url":"classes/GraceNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2363,"kind":2048,"name":"setRendered","url":"classes/GraceNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2364,"kind":2048,"name":"getAttributes","url":"classes/GraceNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2365,"kind":2048,"name":"getAttribute","url":"classes/GraceNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2366,"kind":2048,"name":"getSVGElement","url":"classes/GraceNote.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2367,"kind":2048,"name":"setAttribute","url":"classes/GraceNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2368,"kind":2048,"name":"getContext","url":"classes/GraceNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2369,"kind":2048,"name":"setContext","url":"classes/GraceNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2370,"kind":2048,"name":"checkContext","url":"classes/GraceNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2371,"kind":262144,"name":"font","url":"classes/GraceNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2372,"kind":2048,"name":"setFont","url":"classes/GraceNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2373,"kind":2048,"name":"getFont","url":"classes/GraceNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2374,"kind":2048,"name":"resetFont","url":"classes/GraceNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2375,"kind":262144,"name":"fontInfo","url":"classes/GraceNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2376,"kind":2048,"name":"setFontSize","url":"classes/GraceNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2377,"kind":2048,"name":"getFontSize","url":"classes/GraceNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2378,"kind":262144,"name":"fontSize","url":"classes/GraceNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2379,"kind":262144,"name":"fontSizeInPoints","url":"classes/GraceNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2380,"kind":262144,"name":"fontSizeInPixels","url":"classes/GraceNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2381,"kind":262144,"name":"fontStyle","url":"classes/GraceNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2382,"kind":262144,"name":"fontWeight","url":"classes/GraceNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNote"},{"id":2383,"kind":128,"name":"GraceNoteGroup","url":"classes/GraceNoteGroup.html","classes":"tsd-kind-class"},{"id":2384,"kind":1024,"name":"DEBUG","url":"classes/GraceNoteGroup.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"GraceNoteGroup"},{"id":2385,"kind":262144,"name":"CATEGORY","url":"classes/GraceNoteGroup.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"GraceNoteGroup"},{"id":2386,"kind":2048,"name":"format","url":"classes/GraceNoteGroup.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"GraceNoteGroup"},{"id":2387,"kind":262144,"name":"Position","url":"classes/GraceNoteGroup.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceNoteGroup"},{"id":2388,"kind":262144,"name":"PositionString","url":"classes/GraceNoteGroup.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceNoteGroup"},{"id":2389,"kind":1024,"name":"TEXT_FONT","url":"classes/GraceNoteGroup.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceNoteGroup"},{"id":2390,"kind":512,"name":"constructor","url":"classes/GraceNoteGroup.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"GraceNoteGroup"},{"id":2391,"kind":1024,"name":"render_options","url":"classes/GraceNoteGroup.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"GraceNoteGroup"},{"id":2392,"kind":65536,"name":"__type","url":"classes/GraceNoteGroup.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"GraceNoteGroup"},{"id":2393,"kind":1024,"name":"slur_y_shift","url":"classes/GraceNoteGroup.html#__type.slur_y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceNoteGroup.__type"},{"id":2394,"kind":2048,"name":"preFormat","url":"classes/GraceNoteGroup.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"GraceNoteGroup"},{"id":2395,"kind":2048,"name":"beamNotes","url":"classes/GraceNoteGroup.html#beamNotes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"GraceNoteGroup"},{"id":2396,"kind":2048,"name":"setWidth","url":"classes/GraceNoteGroup.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GraceNoteGroup"},{"id":2397,"kind":2048,"name":"getWidth","url":"classes/GraceNoteGroup.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GraceNoteGroup"},{"id":2398,"kind":2048,"name":"getGraceNotes","url":"classes/GraceNoteGroup.html#getGraceNotes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"GraceNoteGroup"},{"id":2399,"kind":2048,"name":"draw","url":"classes/GraceNoteGroup.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"GraceNoteGroup"},{"id":2400,"kind":2048,"name":"getNote","url":"classes/GraceNoteGroup.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2401,"kind":2048,"name":"checkAttachedNote","url":"classes/GraceNoteGroup.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2402,"kind":2048,"name":"setNote","url":"classes/GraceNoteGroup.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2403,"kind":2048,"name":"getIndex","url":"classes/GraceNoteGroup.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2404,"kind":2048,"name":"checkIndex","url":"classes/GraceNoteGroup.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2405,"kind":2048,"name":"setIndex","url":"classes/GraceNoteGroup.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2406,"kind":2048,"name":"getModifierContext","url":"classes/GraceNoteGroup.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2407,"kind":2048,"name":"checkModifierContext","url":"classes/GraceNoteGroup.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2408,"kind":2048,"name":"setModifierContext","url":"classes/GraceNoteGroup.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2409,"kind":2048,"name":"getPosition","url":"classes/GraceNoteGroup.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2410,"kind":2048,"name":"setPosition","url":"classes/GraceNoteGroup.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2411,"kind":2048,"name":"setTextLine","url":"classes/GraceNoteGroup.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2412,"kind":2048,"name":"setYShift","url":"classes/GraceNoteGroup.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2413,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/GraceNoteGroup.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2414,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/GraceNoteGroup.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2415,"kind":2048,"name":"setXShift","url":"classes/GraceNoteGroup.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2416,"kind":2048,"name":"getXShift","url":"classes/GraceNoteGroup.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2417,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/GraceNoteGroup.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2418,"kind":2048,"name":"addChildElement","url":"classes/GraceNoteGroup.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2419,"kind":2048,"name":"getCategory","url":"classes/GraceNoteGroup.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2420,"kind":2048,"name":"setStyle","url":"classes/GraceNoteGroup.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2421,"kind":2048,"name":"setGroupStyle","url":"classes/GraceNoteGroup.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2422,"kind":2048,"name":"getStyle","url":"classes/GraceNoteGroup.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2423,"kind":2048,"name":"applyStyle","url":"classes/GraceNoteGroup.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2424,"kind":2048,"name":"restoreStyle","url":"classes/GraceNoteGroup.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2425,"kind":2048,"name":"drawWithStyle","url":"classes/GraceNoteGroup.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2426,"kind":2048,"name":"hasClass","url":"classes/GraceNoteGroup.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2427,"kind":2048,"name":"addClass","url":"classes/GraceNoteGroup.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2428,"kind":2048,"name":"removeClass","url":"classes/GraceNoteGroup.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2429,"kind":2048,"name":"onRegister","url":"classes/GraceNoteGroup.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2430,"kind":2048,"name":"isRendered","url":"classes/GraceNoteGroup.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2431,"kind":2048,"name":"setRendered","url":"classes/GraceNoteGroup.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2432,"kind":2048,"name":"getAttributes","url":"classes/GraceNoteGroup.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2433,"kind":2048,"name":"getAttribute","url":"classes/GraceNoteGroup.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2434,"kind":2048,"name":"getSVGElement","url":"classes/GraceNoteGroup.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2435,"kind":2048,"name":"setAttribute","url":"classes/GraceNoteGroup.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2436,"kind":2048,"name":"getBoundingBox","url":"classes/GraceNoteGroup.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2437,"kind":2048,"name":"getContext","url":"classes/GraceNoteGroup.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2438,"kind":2048,"name":"setContext","url":"classes/GraceNoteGroup.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2439,"kind":2048,"name":"checkContext","url":"classes/GraceNoteGroup.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2440,"kind":262144,"name":"font","url":"classes/GraceNoteGroup.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2441,"kind":2048,"name":"setFont","url":"classes/GraceNoteGroup.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2442,"kind":2048,"name":"getFont","url":"classes/GraceNoteGroup.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2443,"kind":2048,"name":"resetFont","url":"classes/GraceNoteGroup.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2444,"kind":262144,"name":"fontInfo","url":"classes/GraceNoteGroup.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2445,"kind":2048,"name":"setFontSize","url":"classes/GraceNoteGroup.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2446,"kind":2048,"name":"getFontSize","url":"classes/GraceNoteGroup.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2447,"kind":262144,"name":"fontSize","url":"classes/GraceNoteGroup.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2448,"kind":262144,"name":"fontSizeInPoints","url":"classes/GraceNoteGroup.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2449,"kind":262144,"name":"fontSizeInPixels","url":"classes/GraceNoteGroup.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2450,"kind":262144,"name":"fontStyle","url":"classes/GraceNoteGroup.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2451,"kind":262144,"name":"fontWeight","url":"classes/GraceNoteGroup.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceNoteGroup"},{"id":2452,"kind":128,"name":"GraceTabNote","url":"classes/GraceTabNote.html","classes":"tsd-kind-class"},{"id":2453,"kind":262144,"name":"CATEGORY","url":"classes/GraceTabNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"GraceTabNote"},{"id":2454,"kind":2048,"name":"plotMetrics","url":"classes/GraceTabNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceTabNote"},{"id":2455,"kind":1024,"name":"TEXT_FONT","url":"classes/GraceTabNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"GraceTabNote"},{"id":2456,"kind":512,"name":"constructor","url":"classes/GraceTabNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"GraceTabNote"},{"id":2457,"kind":2048,"name":"greatestString","url":"classes/GraceTabNote.html#greatestString","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2458,"kind":2048,"name":"leastString","url":"classes/GraceTabNote.html#leastString","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2459,"kind":2048,"name":"reset","url":"classes/GraceTabNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2460,"kind":2048,"name":"setGhost","url":"classes/GraceTabNote.html#setGhost","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2461,"kind":2048,"name":"hasStem","url":"classes/GraceTabNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2462,"kind":2048,"name":"getStemExtension","url":"classes/GraceTabNote.html#getStemExtension","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2463,"kind":2048,"name":"updateWidth","url":"classes/GraceTabNote.html#updateWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2464,"kind":2048,"name":"setStave","url":"classes/GraceTabNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2465,"kind":2048,"name":"getPositions","url":"classes/GraceTabNote.html#getPositions","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2466,"kind":2048,"name":"getModifierStartXY","url":"classes/GraceTabNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2467,"kind":2048,"name":"getLineForRest","url":"classes/GraceTabNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2468,"kind":2048,"name":"preFormat","url":"classes/GraceTabNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2469,"kind":2048,"name":"getStemX","url":"classes/GraceTabNote.html#getStemX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2470,"kind":2048,"name":"getStemY","url":"classes/GraceTabNote.html#getStemY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2471,"kind":2048,"name":"getStemExtents","url":"classes/GraceTabNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2472,"kind":2048,"name":"drawFlag","url":"classes/GraceTabNote.html#drawFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2473,"kind":2048,"name":"drawModifiers","url":"classes/GraceTabNote.html#drawModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2474,"kind":2048,"name":"drawStemThrough","url":"classes/GraceTabNote.html#drawStemThrough","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2475,"kind":2048,"name":"drawPositions","url":"classes/GraceTabNote.html#drawPositions","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2476,"kind":2048,"name":"draw","url":"classes/GraceTabNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2477,"kind":1024,"name":"stem_direction","url":"classes/GraceTabNote.html#stem_direction","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2478,"kind":1024,"name":"stem","url":"classes/GraceTabNote.html#stem","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2479,"kind":2048,"name":"getStem","url":"classes/GraceTabNote.html#getStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2480,"kind":2048,"name":"checkStem","url":"classes/GraceTabNote.html#checkStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2481,"kind":2048,"name":"setStem","url":"classes/GraceTabNote.html#setStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2482,"kind":2048,"name":"buildStem","url":"classes/GraceTabNote.html#buildStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2483,"kind":2048,"name":"buildFlag","url":"classes/GraceTabNote.html#buildFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2484,"kind":2048,"name":"getBaseCustomNoteHeadGlyph","url":"classes/GraceTabNote.html#getBaseCustomNoteHeadGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2485,"kind":2048,"name":"getStemLength","url":"classes/GraceTabNote.html#getStemLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2486,"kind":2048,"name":"getBeamCount","url":"classes/GraceTabNote.html#getBeamCount","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2487,"kind":2048,"name":"getStemMinimumLength","url":"classes/GraceTabNote.html#getStemMinimumLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2488,"kind":2048,"name":"getStemDirection","url":"classes/GraceTabNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2489,"kind":2048,"name":"setStemDirection","url":"classes/GraceTabNote.html#setStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2490,"kind":2048,"name":"getCenterGlyphX","url":"classes/GraceTabNote.html#getCenterGlyphX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2491,"kind":2048,"name":"setStemLength","url":"classes/GraceTabNote.html#setStemLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2492,"kind":2048,"name":"getYForTopText","url":"classes/GraceTabNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2493,"kind":2048,"name":"getYForBottomText","url":"classes/GraceTabNote.html#getYForBottomText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2494,"kind":2048,"name":"hasFlag","url":"classes/GraceTabNote.html#hasFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2495,"kind":2048,"name":"postFormat","url":"classes/GraceTabNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2496,"kind":2048,"name":"drawStem","url":"classes/GraceTabNote.html#drawStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2497,"kind":1024,"name":"glyph","url":"classes/GraceTabNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2498,"kind":1024,"name":"keys","url":"classes/GraceTabNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2499,"kind":1024,"name":"keyProps","url":"classes/GraceTabNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2500,"kind":1024,"name":"render_options","url":"classes/GraceTabNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2501,"kind":65536,"name":"__type","url":"classes/GraceTabNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"GraceTabNote"},{"id":2502,"kind":1024,"name":"draw_stem_through_stave","url":"classes/GraceTabNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2503,"kind":1024,"name":"draw","url":"classes/GraceTabNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2504,"kind":1024,"name":"draw_dots","url":"classes/GraceTabNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2505,"kind":1024,"name":"draw_stem","url":"classes/GraceTabNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2506,"kind":1024,"name":"y_shift","url":"classes/GraceTabNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2507,"kind":1024,"name":"extend_left","url":"classes/GraceTabNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2508,"kind":1024,"name":"extend_right","url":"classes/GraceTabNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2509,"kind":1024,"name":"glyph_font_scale","url":"classes/GraceTabNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2510,"kind":1024,"name":"annotation_spacing","url":"classes/GraceTabNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2511,"kind":1024,"name":"glyph_font_size","url":"classes/GraceTabNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2512,"kind":1024,"name":"scale","url":"classes/GraceTabNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2513,"kind":1024,"name":"font","url":"classes/GraceTabNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2514,"kind":1024,"name":"stroke_px","url":"classes/GraceTabNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"GraceTabNote.__type"},{"id":2515,"kind":2048,"name":"getPlayNote","url":"classes/GraceTabNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2516,"kind":2048,"name":"setPlayNote","url":"classes/GraceTabNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2517,"kind":2048,"name":"isRest","url":"classes/GraceTabNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2518,"kind":2048,"name":"addStroke","url":"classes/GraceTabNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2519,"kind":2048,"name":"getStave","url":"classes/GraceTabNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2520,"kind":2048,"name":"checkStave","url":"classes/GraceTabNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2521,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/GraceTabNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2522,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/GraceTabNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2523,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/GraceTabNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2524,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/GraceTabNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2525,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/GraceTabNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2526,"kind":2048,"name":"getLineNumber","url":"classes/GraceTabNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2527,"kind":2048,"name":"getGlyph","url":"classes/GraceTabNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2528,"kind":2048,"name":"getGlyphWidth","url":"classes/GraceTabNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2529,"kind":2048,"name":"setYs","url":"classes/GraceTabNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2530,"kind":2048,"name":"getYs","url":"classes/GraceTabNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2531,"kind":2048,"name":"getVoice","url":"classes/GraceTabNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2532,"kind":2048,"name":"setVoice","url":"classes/GraceTabNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2533,"kind":2048,"name":"getTickContext","url":"classes/GraceTabNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2534,"kind":2048,"name":"setTickContext","url":"classes/GraceTabNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2535,"kind":2048,"name":"getDuration","url":"classes/GraceTabNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2536,"kind":2048,"name":"isDotted","url":"classes/GraceTabNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2537,"kind":2048,"name":"getNoteType","url":"classes/GraceTabNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2538,"kind":2048,"name":"getBeam","url":"classes/GraceTabNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2539,"kind":2048,"name":"checkBeam","url":"classes/GraceTabNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2540,"kind":2048,"name":"hasBeam","url":"classes/GraceTabNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2541,"kind":2048,"name":"setBeam","url":"classes/GraceTabNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2542,"kind":2048,"name":"addModifier","url":"classes/GraceTabNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2543,"kind":2048,"name":"getModifiersByType","url":"classes/GraceTabNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2544,"kind":2048,"name":"getRightParenthesisPx","url":"classes/GraceTabNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2545,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/GraceTabNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2546,"kind":2048,"name":"getFirstDotPx","url":"classes/GraceTabNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2547,"kind":2048,"name":"getMetrics","url":"classes/GraceTabNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2548,"kind":2048,"name":"getAbsoluteX","url":"classes/GraceTabNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2549,"kind":2048,"name":"getTieRightX","url":"classes/GraceTabNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2550,"kind":2048,"name":"getTieLeftX","url":"classes/GraceTabNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2551,"kind":2048,"name":"getKeys","url":"classes/GraceTabNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2552,"kind":2048,"name":"getKeyProps","url":"classes/GraceTabNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2553,"kind":2048,"name":"getTicks","url":"classes/GraceTabNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2554,"kind":2048,"name":"setIgnoreTicks","url":"classes/GraceTabNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2555,"kind":2048,"name":"setWidth","url":"classes/GraceTabNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2556,"kind":2048,"name":"getWidth","url":"classes/GraceTabNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2557,"kind":2048,"name":"setXShift","url":"classes/GraceTabNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2558,"kind":2048,"name":"getXShift","url":"classes/GraceTabNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2559,"kind":2048,"name":"getX","url":"classes/GraceTabNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2560,"kind":2048,"name":"getFormatterMetrics","url":"classes/GraceTabNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2561,"kind":2048,"name":"getCenterXShift","url":"classes/GraceTabNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2562,"kind":2048,"name":"setCenterXShift","url":"classes/GraceTabNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2563,"kind":2048,"name":"isCenterAligned","url":"classes/GraceTabNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2564,"kind":2048,"name":"setCenterAlignment","url":"classes/GraceTabNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2565,"kind":2048,"name":"getTuplet","url":"classes/GraceTabNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2566,"kind":2048,"name":"getTupletStack","url":"classes/GraceTabNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2567,"kind":2048,"name":"resetTuplet","url":"classes/GraceTabNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2568,"kind":2048,"name":"setTuplet","url":"classes/GraceTabNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2569,"kind":2048,"name":"addToModifierContext","url":"classes/GraceTabNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2570,"kind":2048,"name":"getModifiers","url":"classes/GraceTabNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2571,"kind":2048,"name":"checkTickContext","url":"classes/GraceTabNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2572,"kind":262144,"name":"preFormatted","url":"classes/GraceTabNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2573,"kind":262144,"name":"postFormatted","url":"classes/GraceTabNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2574,"kind":2048,"name":"getIntrinsicTicks","url":"classes/GraceTabNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2575,"kind":2048,"name":"setIntrinsicTicks","url":"classes/GraceTabNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2576,"kind":2048,"name":"getTickMultiplier","url":"classes/GraceTabNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2577,"kind":2048,"name":"applyTickMultiplier","url":"classes/GraceTabNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2578,"kind":2048,"name":"setDuration","url":"classes/GraceTabNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2579,"kind":2048,"name":"setModifierContext","url":"classes/GraceTabNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2580,"kind":2048,"name":"getModifierContext","url":"classes/GraceTabNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2581,"kind":2048,"name":"checkModifierContext","url":"classes/GraceTabNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2582,"kind":2048,"name":"addChildElement","url":"classes/GraceTabNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2583,"kind":2048,"name":"getCategory","url":"classes/GraceTabNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2584,"kind":2048,"name":"setStyle","url":"classes/GraceTabNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2585,"kind":2048,"name":"setGroupStyle","url":"classes/GraceTabNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2586,"kind":2048,"name":"getStyle","url":"classes/GraceTabNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2587,"kind":2048,"name":"applyStyle","url":"classes/GraceTabNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2588,"kind":2048,"name":"restoreStyle","url":"classes/GraceTabNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2589,"kind":2048,"name":"drawWithStyle","url":"classes/GraceTabNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2590,"kind":2048,"name":"hasClass","url":"classes/GraceTabNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2591,"kind":2048,"name":"addClass","url":"classes/GraceTabNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2592,"kind":2048,"name":"removeClass","url":"classes/GraceTabNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2593,"kind":2048,"name":"onRegister","url":"classes/GraceTabNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2594,"kind":2048,"name":"isRendered","url":"classes/GraceTabNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2595,"kind":2048,"name":"setRendered","url":"classes/GraceTabNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2596,"kind":2048,"name":"getAttributes","url":"classes/GraceTabNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2597,"kind":2048,"name":"getAttribute","url":"classes/GraceTabNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2598,"kind":2048,"name":"getSVGElement","url":"classes/GraceTabNote.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2599,"kind":2048,"name":"setAttribute","url":"classes/GraceTabNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2600,"kind":2048,"name":"getBoundingBox","url":"classes/GraceTabNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2601,"kind":2048,"name":"getContext","url":"classes/GraceTabNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2602,"kind":2048,"name":"setContext","url":"classes/GraceTabNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2603,"kind":2048,"name":"checkContext","url":"classes/GraceTabNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2604,"kind":262144,"name":"font","url":"classes/GraceTabNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2605,"kind":2048,"name":"setFont","url":"classes/GraceTabNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2606,"kind":2048,"name":"getFont","url":"classes/GraceTabNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2607,"kind":2048,"name":"resetFont","url":"classes/GraceTabNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2608,"kind":262144,"name":"fontInfo","url":"classes/GraceTabNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2609,"kind":2048,"name":"setFontSize","url":"classes/GraceTabNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2610,"kind":2048,"name":"getFontSize","url":"classes/GraceTabNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2611,"kind":262144,"name":"fontSize","url":"classes/GraceTabNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2612,"kind":262144,"name":"fontSizeInPoints","url":"classes/GraceTabNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2613,"kind":262144,"name":"fontSizeInPixels","url":"classes/GraceTabNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2614,"kind":262144,"name":"fontStyle","url":"classes/GraceTabNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2615,"kind":262144,"name":"fontWeight","url":"classes/GraceTabNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"GraceTabNote"},{"id":2616,"kind":128,"name":"KeyManager","url":"classes/KeyManager.html","classes":"tsd-kind-class"},{"id":2617,"kind":512,"name":"constructor","url":"classes/KeyManager.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"KeyManager"},{"id":2618,"kind":2048,"name":"setKey","url":"classes/KeyManager.html#setKey","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeyManager"},{"id":2619,"kind":2048,"name":"getKey","url":"classes/KeyManager.html#getKey","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeyManager"},{"id":2620,"kind":2048,"name":"reset","url":"classes/KeyManager.html#reset","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeyManager"},{"id":2621,"kind":2048,"name":"getAccidental","url":"classes/KeyManager.html#getAccidental","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeyManager"},{"id":2622,"kind":2048,"name":"selectNote","url":"classes/KeyManager.html#selectNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeyManager"},{"id":2623,"kind":128,"name":"KeySignature","url":"classes/KeySignature.html","classes":"tsd-kind-class"},{"id":2624,"kind":262144,"name":"CATEGORY","url":"classes/KeySignature.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"KeySignature"},{"id":2625,"kind":1024,"name":"accidentalSpacing","url":"classes/KeySignature.html#accidentalSpacing","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"KeySignature"},{"id":2626,"kind":262144,"name":"Position","url":"classes/KeySignature.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"KeySignature"},{"id":2627,"kind":1024,"name":"TEXT_FONT","url":"classes/KeySignature.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"KeySignature"},{"id":2628,"kind":512,"name":"constructor","url":"classes/KeySignature.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"KeySignature"},{"id":2629,"kind":2048,"name":"convertToGlyph","url":"classes/KeySignature.html#convertToGlyph","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeySignature"},{"id":2630,"kind":2048,"name":"cancelKey","url":"classes/KeySignature.html#cancelKey","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeySignature"},{"id":2631,"kind":2048,"name":"convertToCancelAccList","url":"classes/KeySignature.html#convertToCancelAccList","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeySignature"},{"id":2632,"kind":2048,"name":"addToStave","url":"classes/KeySignature.html#addToStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeySignature"},{"id":2633,"kind":2048,"name":"convertAccLines","url":"classes/KeySignature.html#convertAccLines","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeySignature"},{"id":2634,"kind":2048,"name":"getPadding","url":"classes/KeySignature.html#getPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"KeySignature"},{"id":2635,"kind":2048,"name":"getWidth","url":"classes/KeySignature.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"KeySignature"},{"id":2636,"kind":2048,"name":"setKeySig","url":"classes/KeySignature.html#setKeySig","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeySignature"},{"id":2637,"kind":2048,"name":"alterKey","url":"classes/KeySignature.html#alterKey","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeySignature"},{"id":2638,"kind":2048,"name":"convertToAlterAccList","url":"classes/KeySignature.html#convertToAlterAccList","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeySignature"},{"id":2639,"kind":2048,"name":"format","url":"classes/KeySignature.html#format","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeySignature"},{"id":2640,"kind":2048,"name":"getGlyphs","url":"classes/KeySignature.html#getGlyphs","classes":"tsd-kind-method tsd-parent-kind-class","parent":"KeySignature"},{"id":2641,"kind":2048,"name":"draw","url":"classes/KeySignature.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"KeySignature"},{"id":2642,"kind":2048,"name":"getPosition","url":"classes/KeySignature.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2643,"kind":2048,"name":"setPosition","url":"classes/KeySignature.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2644,"kind":2048,"name":"getStave","url":"classes/KeySignature.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2645,"kind":2048,"name":"checkStave","url":"classes/KeySignature.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2646,"kind":2048,"name":"setStave","url":"classes/KeySignature.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2647,"kind":2048,"name":"setWidth","url":"classes/KeySignature.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2648,"kind":2048,"name":"getX","url":"classes/KeySignature.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2649,"kind":2048,"name":"setX","url":"classes/KeySignature.html#setX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2650,"kind":2048,"name":"placeGlyphOnLine","url":"classes/KeySignature.html#placeGlyphOnLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2651,"kind":2048,"name":"setPadding","url":"classes/KeySignature.html#setPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2652,"kind":2048,"name":"setLayoutMetrics","url":"classes/KeySignature.html#setLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2653,"kind":2048,"name":"getLayoutMetrics","url":"classes/KeySignature.html#getLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2654,"kind":2048,"name":"addChildElement","url":"classes/KeySignature.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2655,"kind":2048,"name":"getCategory","url":"classes/KeySignature.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2656,"kind":2048,"name":"setStyle","url":"classes/KeySignature.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2657,"kind":2048,"name":"setGroupStyle","url":"classes/KeySignature.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2658,"kind":2048,"name":"getStyle","url":"classes/KeySignature.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2659,"kind":2048,"name":"applyStyle","url":"classes/KeySignature.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2660,"kind":2048,"name":"restoreStyle","url":"classes/KeySignature.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2661,"kind":2048,"name":"drawWithStyle","url":"classes/KeySignature.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2662,"kind":2048,"name":"hasClass","url":"classes/KeySignature.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2663,"kind":2048,"name":"addClass","url":"classes/KeySignature.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2664,"kind":2048,"name":"removeClass","url":"classes/KeySignature.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2665,"kind":2048,"name":"onRegister","url":"classes/KeySignature.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2666,"kind":2048,"name":"isRendered","url":"classes/KeySignature.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2667,"kind":2048,"name":"setRendered","url":"classes/KeySignature.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2668,"kind":2048,"name":"getAttributes","url":"classes/KeySignature.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2669,"kind":2048,"name":"getAttribute","url":"classes/KeySignature.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2670,"kind":2048,"name":"getSVGElement","url":"classes/KeySignature.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2671,"kind":2048,"name":"setAttribute","url":"classes/KeySignature.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2672,"kind":2048,"name":"getBoundingBox","url":"classes/KeySignature.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2673,"kind":2048,"name":"getContext","url":"classes/KeySignature.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2674,"kind":2048,"name":"setContext","url":"classes/KeySignature.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2675,"kind":2048,"name":"checkContext","url":"classes/KeySignature.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2676,"kind":262144,"name":"font","url":"classes/KeySignature.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2677,"kind":2048,"name":"setFont","url":"classes/KeySignature.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2678,"kind":2048,"name":"getFont","url":"classes/KeySignature.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2679,"kind":2048,"name":"resetFont","url":"classes/KeySignature.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2680,"kind":262144,"name":"fontInfo","url":"classes/KeySignature.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2681,"kind":2048,"name":"setFontSize","url":"classes/KeySignature.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2682,"kind":2048,"name":"getFontSize","url":"classes/KeySignature.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2683,"kind":262144,"name":"fontSize","url":"classes/KeySignature.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2684,"kind":262144,"name":"fontSizeInPoints","url":"classes/KeySignature.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2685,"kind":262144,"name":"fontSizeInPixels","url":"classes/KeySignature.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2686,"kind":262144,"name":"fontStyle","url":"classes/KeySignature.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2687,"kind":262144,"name":"fontWeight","url":"classes/KeySignature.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySignature"},{"id":2688,"kind":128,"name":"KeySigNote","url":"classes/KeySigNote.html","classes":"tsd-kind-class"},{"id":2689,"kind":262144,"name":"CATEGORY","url":"classes/KeySigNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"KeySigNote"},{"id":2690,"kind":2048,"name":"plotMetrics","url":"classes/KeySigNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"KeySigNote"},{"id":2691,"kind":1024,"name":"TEXT_FONT","url":"classes/KeySigNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"KeySigNote"},{"id":2692,"kind":512,"name":"constructor","url":"classes/KeySigNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"KeySigNote"},{"id":2693,"kind":2048,"name":"addToModifierContext","url":"classes/KeySigNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"KeySigNote"},{"id":2694,"kind":2048,"name":"preFormat","url":"classes/KeySigNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"KeySigNote"},{"id":2695,"kind":2048,"name":"draw","url":"classes/KeySigNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"KeySigNote"},{"id":2696,"kind":1024,"name":"glyph","url":"classes/KeySigNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2697,"kind":1024,"name":"keys","url":"classes/KeySigNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2698,"kind":1024,"name":"keyProps","url":"classes/KeySigNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2699,"kind":1024,"name":"render_options","url":"classes/KeySigNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2700,"kind":65536,"name":"__type","url":"classes/KeySigNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"KeySigNote"},{"id":2701,"kind":1024,"name":"draw_stem_through_stave","url":"classes/KeySigNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2702,"kind":1024,"name":"draw","url":"classes/KeySigNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2703,"kind":1024,"name":"draw_dots","url":"classes/KeySigNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2704,"kind":1024,"name":"draw_stem","url":"classes/KeySigNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2705,"kind":1024,"name":"y_shift","url":"classes/KeySigNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2706,"kind":1024,"name":"extend_left","url":"classes/KeySigNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2707,"kind":1024,"name":"extend_right","url":"classes/KeySigNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2708,"kind":1024,"name":"glyph_font_scale","url":"classes/KeySigNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2709,"kind":1024,"name":"annotation_spacing","url":"classes/KeySigNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2710,"kind":1024,"name":"glyph_font_size","url":"classes/KeySigNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2711,"kind":1024,"name":"scale","url":"classes/KeySigNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2712,"kind":1024,"name":"font","url":"classes/KeySigNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2713,"kind":1024,"name":"stroke_px","url":"classes/KeySigNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"KeySigNote.__type"},{"id":2714,"kind":2048,"name":"getPlayNote","url":"classes/KeySigNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2715,"kind":2048,"name":"setPlayNote","url":"classes/KeySigNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2716,"kind":2048,"name":"isRest","url":"classes/KeySigNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2717,"kind":2048,"name":"addStroke","url":"classes/KeySigNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2718,"kind":2048,"name":"getStave","url":"classes/KeySigNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2719,"kind":2048,"name":"checkStave","url":"classes/KeySigNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2720,"kind":2048,"name":"setStave","url":"classes/KeySigNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2721,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/KeySigNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2722,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/KeySigNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2723,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/KeySigNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2724,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/KeySigNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2725,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/KeySigNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2726,"kind":2048,"name":"getLineNumber","url":"classes/KeySigNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2727,"kind":2048,"name":"getLineForRest","url":"classes/KeySigNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2728,"kind":2048,"name":"getGlyph","url":"classes/KeySigNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2729,"kind":2048,"name":"getGlyphWidth","url":"classes/KeySigNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2730,"kind":2048,"name":"setYs","url":"classes/KeySigNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2731,"kind":2048,"name":"getYs","url":"classes/KeySigNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2732,"kind":2048,"name":"getYForTopText","url":"classes/KeySigNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2733,"kind":2048,"name":"getVoice","url":"classes/KeySigNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2734,"kind":2048,"name":"setVoice","url":"classes/KeySigNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2735,"kind":2048,"name":"getTickContext","url":"classes/KeySigNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2736,"kind":2048,"name":"setTickContext","url":"classes/KeySigNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2737,"kind":2048,"name":"getDuration","url":"classes/KeySigNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2738,"kind":2048,"name":"isDotted","url":"classes/KeySigNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2739,"kind":2048,"name":"hasStem","url":"classes/KeySigNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2740,"kind":2048,"name":"getNoteType","url":"classes/KeySigNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2741,"kind":2048,"name":"getBeam","url":"classes/KeySigNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2742,"kind":2048,"name":"checkBeam","url":"classes/KeySigNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2743,"kind":2048,"name":"hasBeam","url":"classes/KeySigNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2744,"kind":2048,"name":"setBeam","url":"classes/KeySigNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2745,"kind":2048,"name":"addModifier","url":"classes/KeySigNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2746,"kind":2048,"name":"getModifiersByType","url":"classes/KeySigNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2747,"kind":2048,"name":"getModifierStartXY","url":"classes/KeySigNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2748,"kind":2048,"name":"getRightParenthesisPx","url":"classes/KeySigNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2749,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/KeySigNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2750,"kind":2048,"name":"getFirstDotPx","url":"classes/KeySigNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2751,"kind":2048,"name":"getMetrics","url":"classes/KeySigNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2752,"kind":2048,"name":"getAbsoluteX","url":"classes/KeySigNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2753,"kind":2048,"name":"getStemDirection","url":"classes/KeySigNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2754,"kind":2048,"name":"getStemExtents","url":"classes/KeySigNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2755,"kind":2048,"name":"getTieRightX","url":"classes/KeySigNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2756,"kind":2048,"name":"getTieLeftX","url":"classes/KeySigNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2757,"kind":2048,"name":"getKeys","url":"classes/KeySigNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2758,"kind":2048,"name":"getKeyProps","url":"classes/KeySigNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2759,"kind":2048,"name":"reset","url":"classes/KeySigNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2760,"kind":2048,"name":"getTicks","url":"classes/KeySigNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2761,"kind":2048,"name":"setIgnoreTicks","url":"classes/KeySigNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2762,"kind":2048,"name":"setWidth","url":"classes/KeySigNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2763,"kind":2048,"name":"getWidth","url":"classes/KeySigNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2764,"kind":2048,"name":"setXShift","url":"classes/KeySigNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2765,"kind":2048,"name":"getXShift","url":"classes/KeySigNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2766,"kind":2048,"name":"getX","url":"classes/KeySigNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2767,"kind":2048,"name":"getFormatterMetrics","url":"classes/KeySigNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2768,"kind":2048,"name":"getCenterXShift","url":"classes/KeySigNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2769,"kind":2048,"name":"setCenterXShift","url":"classes/KeySigNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2770,"kind":2048,"name":"isCenterAligned","url":"classes/KeySigNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2771,"kind":2048,"name":"setCenterAlignment","url":"classes/KeySigNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2772,"kind":2048,"name":"getTuplet","url":"classes/KeySigNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2773,"kind":2048,"name":"getTupletStack","url":"classes/KeySigNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2774,"kind":2048,"name":"resetTuplet","url":"classes/KeySigNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2775,"kind":2048,"name":"setTuplet","url":"classes/KeySigNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2776,"kind":2048,"name":"getModifiers","url":"classes/KeySigNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2777,"kind":2048,"name":"checkTickContext","url":"classes/KeySigNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2778,"kind":262144,"name":"preFormatted","url":"classes/KeySigNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2779,"kind":2048,"name":"postFormat","url":"classes/KeySigNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2780,"kind":262144,"name":"postFormatted","url":"classes/KeySigNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2781,"kind":2048,"name":"getIntrinsicTicks","url":"classes/KeySigNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2782,"kind":2048,"name":"setIntrinsicTicks","url":"classes/KeySigNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2783,"kind":2048,"name":"getTickMultiplier","url":"classes/KeySigNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2784,"kind":2048,"name":"applyTickMultiplier","url":"classes/KeySigNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2785,"kind":2048,"name":"setDuration","url":"classes/KeySigNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2786,"kind":2048,"name":"setModifierContext","url":"classes/KeySigNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2787,"kind":2048,"name":"getModifierContext","url":"classes/KeySigNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2788,"kind":2048,"name":"checkModifierContext","url":"classes/KeySigNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2789,"kind":2048,"name":"addChildElement","url":"classes/KeySigNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2790,"kind":2048,"name":"getCategory","url":"classes/KeySigNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2791,"kind":2048,"name":"setStyle","url":"classes/KeySigNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2792,"kind":2048,"name":"setGroupStyle","url":"classes/KeySigNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2793,"kind":2048,"name":"getStyle","url":"classes/KeySigNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2794,"kind":2048,"name":"applyStyle","url":"classes/KeySigNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2795,"kind":2048,"name":"restoreStyle","url":"classes/KeySigNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2796,"kind":2048,"name":"drawWithStyle","url":"classes/KeySigNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2797,"kind":2048,"name":"hasClass","url":"classes/KeySigNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2798,"kind":2048,"name":"addClass","url":"classes/KeySigNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2799,"kind":2048,"name":"removeClass","url":"classes/KeySigNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2800,"kind":2048,"name":"onRegister","url":"classes/KeySigNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2801,"kind":2048,"name":"isRendered","url":"classes/KeySigNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2802,"kind":2048,"name":"setRendered","url":"classes/KeySigNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2803,"kind":2048,"name":"getAttributes","url":"classes/KeySigNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2804,"kind":2048,"name":"getAttribute","url":"classes/KeySigNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2805,"kind":2048,"name":"getSVGElement","url":"classes/KeySigNote.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2806,"kind":2048,"name":"setAttribute","url":"classes/KeySigNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2807,"kind":2048,"name":"getBoundingBox","url":"classes/KeySigNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2808,"kind":2048,"name":"getContext","url":"classes/KeySigNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2809,"kind":2048,"name":"setContext","url":"classes/KeySigNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2810,"kind":2048,"name":"checkContext","url":"classes/KeySigNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2811,"kind":262144,"name":"font","url":"classes/KeySigNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2812,"kind":2048,"name":"setFont","url":"classes/KeySigNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2813,"kind":2048,"name":"getFont","url":"classes/KeySigNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2814,"kind":2048,"name":"resetFont","url":"classes/KeySigNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2815,"kind":262144,"name":"fontInfo","url":"classes/KeySigNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2816,"kind":2048,"name":"setFontSize","url":"classes/KeySigNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2817,"kind":2048,"name":"getFontSize","url":"classes/KeySigNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2818,"kind":262144,"name":"fontSize","url":"classes/KeySigNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2819,"kind":262144,"name":"fontSizeInPoints","url":"classes/KeySigNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2820,"kind":262144,"name":"fontSizeInPixels","url":"classes/KeySigNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2821,"kind":262144,"name":"fontStyle","url":"classes/KeySigNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2822,"kind":262144,"name":"fontWeight","url":"classes/KeySigNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"KeySigNote"},{"id":2823,"kind":8,"name":"ModifierPosition","url":"enums/ModifierPosition.html","classes":"tsd-kind-enum"},{"id":2824,"kind":16,"name":"CENTER","url":"enums/ModifierPosition.html#CENTER","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ModifierPosition"},{"id":2825,"kind":16,"name":"LEFT","url":"enums/ModifierPosition.html#LEFT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ModifierPosition"},{"id":2826,"kind":16,"name":"RIGHT","url":"enums/ModifierPosition.html#RIGHT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ModifierPosition"},{"id":2827,"kind":16,"name":"ABOVE","url":"enums/ModifierPosition.html#ABOVE","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ModifierPosition"},{"id":2828,"kind":16,"name":"BELOW","url":"enums/ModifierPosition.html#BELOW","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ModifierPosition"},{"id":2829,"kind":128,"name":"Modifier","url":"classes/Modifier.html","classes":"tsd-kind-class"},{"id":2830,"kind":262144,"name":"CATEGORY","url":"classes/Modifier.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Modifier"},{"id":2831,"kind":262144,"name":"Position","url":"classes/Modifier.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Modifier"},{"id":2832,"kind":262144,"name":"PositionString","url":"classes/Modifier.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Modifier"},{"id":2833,"kind":1024,"name":"TEXT_FONT","url":"classes/Modifier.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Modifier"},{"id":2834,"kind":512,"name":"constructor","url":"classes/Modifier.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Modifier"},{"id":2835,"kind":2048,"name":"getWidth","url":"classes/Modifier.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2836,"kind":2048,"name":"setWidth","url":"classes/Modifier.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2837,"kind":2048,"name":"getNote","url":"classes/Modifier.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2838,"kind":2048,"name":"checkAttachedNote","url":"classes/Modifier.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2839,"kind":2048,"name":"setNote","url":"classes/Modifier.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2840,"kind":2048,"name":"getIndex","url":"classes/Modifier.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2841,"kind":2048,"name":"checkIndex","url":"classes/Modifier.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2842,"kind":2048,"name":"setIndex","url":"classes/Modifier.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2843,"kind":2048,"name":"getModifierContext","url":"classes/Modifier.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2844,"kind":2048,"name":"checkModifierContext","url":"classes/Modifier.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2845,"kind":2048,"name":"setModifierContext","url":"classes/Modifier.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2846,"kind":2048,"name":"getPosition","url":"classes/Modifier.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2847,"kind":2048,"name":"setPosition","url":"classes/Modifier.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2848,"kind":2048,"name":"setTextLine","url":"classes/Modifier.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2849,"kind":2048,"name":"setYShift","url":"classes/Modifier.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2850,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/Modifier.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2851,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/Modifier.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2852,"kind":2048,"name":"setXShift","url":"classes/Modifier.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2853,"kind":2048,"name":"getXShift","url":"classes/Modifier.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2854,"kind":2048,"name":"draw","url":"classes/Modifier.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Modifier"},{"id":2855,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/Modifier.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Modifier"},{"id":2856,"kind":2048,"name":"addChildElement","url":"classes/Modifier.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2857,"kind":2048,"name":"getCategory","url":"classes/Modifier.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2858,"kind":2048,"name":"setStyle","url":"classes/Modifier.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2859,"kind":2048,"name":"setGroupStyle","url":"classes/Modifier.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2860,"kind":2048,"name":"getStyle","url":"classes/Modifier.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2861,"kind":2048,"name":"applyStyle","url":"classes/Modifier.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2862,"kind":2048,"name":"restoreStyle","url":"classes/Modifier.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2863,"kind":2048,"name":"drawWithStyle","url":"classes/Modifier.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2864,"kind":2048,"name":"hasClass","url":"classes/Modifier.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2865,"kind":2048,"name":"addClass","url":"classes/Modifier.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2866,"kind":2048,"name":"removeClass","url":"classes/Modifier.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2867,"kind":2048,"name":"onRegister","url":"classes/Modifier.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2868,"kind":2048,"name":"isRendered","url":"classes/Modifier.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2869,"kind":2048,"name":"setRendered","url":"classes/Modifier.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2870,"kind":2048,"name":"getAttributes","url":"classes/Modifier.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2871,"kind":2048,"name":"getAttribute","url":"classes/Modifier.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2872,"kind":2048,"name":"getSVGElement","url":"classes/Modifier.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2873,"kind":2048,"name":"setAttribute","url":"classes/Modifier.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2874,"kind":2048,"name":"getBoundingBox","url":"classes/Modifier.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2875,"kind":2048,"name":"getContext","url":"classes/Modifier.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2876,"kind":2048,"name":"setContext","url":"classes/Modifier.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2877,"kind":2048,"name":"checkContext","url":"classes/Modifier.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2878,"kind":262144,"name":"font","url":"classes/Modifier.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2879,"kind":2048,"name":"setFont","url":"classes/Modifier.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2880,"kind":2048,"name":"getFont","url":"classes/Modifier.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2881,"kind":2048,"name":"resetFont","url":"classes/Modifier.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2882,"kind":262144,"name":"fontInfo","url":"classes/Modifier.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2883,"kind":2048,"name":"setFontSize","url":"classes/Modifier.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2884,"kind":2048,"name":"getFontSize","url":"classes/Modifier.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2885,"kind":262144,"name":"fontSize","url":"classes/Modifier.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2886,"kind":262144,"name":"fontSizeInPoints","url":"classes/Modifier.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2887,"kind":262144,"name":"fontSizeInPixels","url":"classes/Modifier.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2888,"kind":262144,"name":"fontStyle","url":"classes/Modifier.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2889,"kind":262144,"name":"fontWeight","url":"classes/Modifier.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Modifier"},{"id":2890,"kind":256,"name":"ModifierContextState","url":"interfaces/ModifierContextState.html","classes":"tsd-kind-interface"},{"id":2891,"kind":1024,"name":"right_shift","url":"interfaces/ModifierContextState.html#right_shift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ModifierContextState"},{"id":2892,"kind":1024,"name":"left_shift","url":"interfaces/ModifierContextState.html#left_shift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ModifierContextState"},{"id":2893,"kind":1024,"name":"text_line","url":"interfaces/ModifierContextState.html#text_line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ModifierContextState"},{"id":2894,"kind":1024,"name":"top_text_line","url":"interfaces/ModifierContextState.html#top_text_line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ModifierContextState"},{"id":2895,"kind":256,"name":"ModifierContextMetrics","url":"interfaces/ModifierContextMetrics.html","classes":"tsd-kind-interface"},{"id":2896,"kind":1024,"name":"width","url":"interfaces/ModifierContextMetrics.html#width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ModifierContextMetrics"},{"id":2897,"kind":1024,"name":"spacing","url":"interfaces/ModifierContextMetrics.html#spacing","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ModifierContextMetrics"},{"id":2898,"kind":4194304,"name":"ModifierContextMember","url":"modules.html#ModifierContextMember","classes":"tsd-kind-type-alias"},{"id":2899,"kind":128,"name":"ModifierContext","url":"classes/ModifierContext.html","classes":"tsd-kind-class"},{"id":2900,"kind":1024,"name":"DEBUG","url":"classes/ModifierContext.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"ModifierContext"},{"id":2901,"kind":512,"name":"constructor","url":"classes/ModifierContext.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"ModifierContext"},{"id":2902,"kind":2048,"name":"addModifier","url":"classes/ModifierContext.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ModifierContext"},{"id":2903,"kind":2048,"name":"addMember","url":"classes/ModifierContext.html#addMember","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ModifierContext"},{"id":2904,"kind":2048,"name":"getModifiers","url":"classes/ModifierContext.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ModifierContext"},{"id":2905,"kind":2048,"name":"getMembers","url":"classes/ModifierContext.html#getMembers","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ModifierContext"},{"id":2906,"kind":2048,"name":"getWidth","url":"classes/ModifierContext.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ModifierContext"},{"id":2907,"kind":2048,"name":"getLeftShift","url":"classes/ModifierContext.html#getLeftShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ModifierContext"},{"id":2908,"kind":2048,"name":"getRightShift","url":"classes/ModifierContext.html#getRightShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ModifierContext"},{"id":2909,"kind":2048,"name":"getState","url":"classes/ModifierContext.html#getState","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ModifierContext"},{"id":2910,"kind":2048,"name":"getMetrics","url":"classes/ModifierContext.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ModifierContext"},{"id":2911,"kind":2048,"name":"preFormat","url":"classes/ModifierContext.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ModifierContext"},{"id":2912,"kind":2048,"name":"postFormat","url":"classes/ModifierContext.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"ModifierContext"},{"id":2913,"kind":256,"name":"MultimeasureRestRenderOptions","url":"interfaces/MultimeasureRestRenderOptions.html","classes":"tsd-kind-interface"},{"id":2914,"kind":1024,"name":"number_of_measures","url":"interfaces/MultimeasureRestRenderOptions.html#number_of_measures","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2915,"kind":1024,"name":"use_symbols","url":"interfaces/MultimeasureRestRenderOptions.html#use_symbols","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2916,"kind":1024,"name":"symbol_spacing","url":"interfaces/MultimeasureRestRenderOptions.html#symbol_spacing","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2917,"kind":1024,"name":"show_number","url":"interfaces/MultimeasureRestRenderOptions.html#show_number","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2918,"kind":1024,"name":"number_line","url":"interfaces/MultimeasureRestRenderOptions.html#number_line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2919,"kind":1024,"name":"number_glyph_point","url":"interfaces/MultimeasureRestRenderOptions.html#number_glyph_point","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2920,"kind":1024,"name":"padding_left","url":"interfaces/MultimeasureRestRenderOptions.html#padding_left","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2921,"kind":1024,"name":"padding_right","url":"interfaces/MultimeasureRestRenderOptions.html#padding_right","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2922,"kind":1024,"name":"line","url":"interfaces/MultimeasureRestRenderOptions.html#line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2923,"kind":1024,"name":"spacing_between_lines_px","url":"interfaces/MultimeasureRestRenderOptions.html#spacing_between_lines_px","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2924,"kind":1024,"name":"semibreve_rest_glyph_scale","url":"interfaces/MultimeasureRestRenderOptions.html#semibreve_rest_glyph_scale","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2925,"kind":1024,"name":"line_thickness","url":"interfaces/MultimeasureRestRenderOptions.html#line_thickness","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2926,"kind":1024,"name":"serif_thickness","url":"interfaces/MultimeasureRestRenderOptions.html#serif_thickness","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"MultimeasureRestRenderOptions"},{"id":2927,"kind":128,"name":"MultiMeasureRest","url":"classes/MultiMeasureRest.html","classes":"tsd-kind-class"},{"id":2928,"kind":262144,"name":"CATEGORY","url":"classes/MultiMeasureRest.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"MultiMeasureRest"},{"id":2929,"kind":1024,"name":"TEXT_FONT","url":"classes/MultiMeasureRest.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"MultiMeasureRest"},{"id":2930,"kind":512,"name":"constructor","url":"classes/MultiMeasureRest.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"MultiMeasureRest"},{"id":2931,"kind":1024,"name":"render_options","url":"classes/MultiMeasureRest.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"MultiMeasureRest"},{"id":2932,"kind":2048,"name":"getXs","url":"classes/MultiMeasureRest.html#getXs","classes":"tsd-kind-method tsd-parent-kind-class","parent":"MultiMeasureRest"},{"id":2933,"kind":2048,"name":"setStave","url":"classes/MultiMeasureRest.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"MultiMeasureRest"},{"id":2934,"kind":2048,"name":"getStave","url":"classes/MultiMeasureRest.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"MultiMeasureRest"},{"id":2935,"kind":2048,"name":"checkStave","url":"classes/MultiMeasureRest.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"MultiMeasureRest"},{"id":2936,"kind":2048,"name":"drawLine","url":"classes/MultiMeasureRest.html#drawLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"MultiMeasureRest"},{"id":2937,"kind":2048,"name":"drawSymbols","url":"classes/MultiMeasureRest.html#drawSymbols","classes":"tsd-kind-method tsd-parent-kind-class","parent":"MultiMeasureRest"},{"id":2938,"kind":2048,"name":"draw","url":"classes/MultiMeasureRest.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"MultiMeasureRest"},{"id":2939,"kind":2048,"name":"addChildElement","url":"classes/MultiMeasureRest.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2940,"kind":2048,"name":"getCategory","url":"classes/MultiMeasureRest.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2941,"kind":2048,"name":"setStyle","url":"classes/MultiMeasureRest.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2942,"kind":2048,"name":"setGroupStyle","url":"classes/MultiMeasureRest.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2943,"kind":2048,"name":"getStyle","url":"classes/MultiMeasureRest.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2944,"kind":2048,"name":"applyStyle","url":"classes/MultiMeasureRest.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2945,"kind":2048,"name":"restoreStyle","url":"classes/MultiMeasureRest.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2946,"kind":2048,"name":"drawWithStyle","url":"classes/MultiMeasureRest.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2947,"kind":2048,"name":"hasClass","url":"classes/MultiMeasureRest.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2948,"kind":2048,"name":"addClass","url":"classes/MultiMeasureRest.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2949,"kind":2048,"name":"removeClass","url":"classes/MultiMeasureRest.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2950,"kind":2048,"name":"onRegister","url":"classes/MultiMeasureRest.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2951,"kind":2048,"name":"isRendered","url":"classes/MultiMeasureRest.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2952,"kind":2048,"name":"setRendered","url":"classes/MultiMeasureRest.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2953,"kind":2048,"name":"getAttributes","url":"classes/MultiMeasureRest.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2954,"kind":2048,"name":"getAttribute","url":"classes/MultiMeasureRest.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2955,"kind":2048,"name":"getSVGElement","url":"classes/MultiMeasureRest.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2956,"kind":2048,"name":"setAttribute","url":"classes/MultiMeasureRest.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2957,"kind":2048,"name":"getBoundingBox","url":"classes/MultiMeasureRest.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2958,"kind":2048,"name":"getContext","url":"classes/MultiMeasureRest.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2959,"kind":2048,"name":"setContext","url":"classes/MultiMeasureRest.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2960,"kind":2048,"name":"checkContext","url":"classes/MultiMeasureRest.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2961,"kind":262144,"name":"font","url":"classes/MultiMeasureRest.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2962,"kind":2048,"name":"setFont","url":"classes/MultiMeasureRest.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2963,"kind":2048,"name":"getFont","url":"classes/MultiMeasureRest.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2964,"kind":2048,"name":"resetFont","url":"classes/MultiMeasureRest.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2965,"kind":262144,"name":"fontInfo","url":"classes/MultiMeasureRest.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2966,"kind":2048,"name":"setFontSize","url":"classes/MultiMeasureRest.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2967,"kind":2048,"name":"getFontSize","url":"classes/MultiMeasureRest.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2968,"kind":262144,"name":"fontSize","url":"classes/MultiMeasureRest.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2969,"kind":262144,"name":"fontSizeInPoints","url":"classes/MultiMeasureRest.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2970,"kind":262144,"name":"fontSizeInPixels","url":"classes/MultiMeasureRest.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2971,"kind":262144,"name":"fontStyle","url":"classes/MultiMeasureRest.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2972,"kind":262144,"name":"fontWeight","url":"classes/MultiMeasureRest.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"MultiMeasureRest"},{"id":2973,"kind":256,"name":"NoteAccidental","url":"interfaces/NoteAccidental.html","classes":"tsd-kind-interface"},{"id":2974,"kind":1024,"name":"note","url":"interfaces/NoteAccidental.html#note","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteAccidental"},{"id":2975,"kind":1024,"name":"accidental","url":"interfaces/NoteAccidental.html#accidental","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteAccidental"},{"id":2976,"kind":256,"name":"NoteParts","url":"interfaces/NoteParts.html","classes":"tsd-kind-interface"},{"id":2977,"kind":1024,"name":"root","url":"interfaces/NoteParts.html#root","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteParts"},{"id":2978,"kind":1024,"name":"accidental","url":"interfaces/NoteParts.html#accidental","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteParts"},{"id":2979,"kind":256,"name":"KeyParts","url":"interfaces/KeyParts.html","classes":"tsd-kind-interface"},{"id":2980,"kind":1024,"name":"root","url":"interfaces/KeyParts.html#root","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyParts"},{"id":2981,"kind":1024,"name":"accidental","url":"interfaces/KeyParts.html#accidental","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyParts"},{"id":2982,"kind":1024,"name":"type","url":"interfaces/KeyParts.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyParts"},{"id":2983,"kind":4194304,"name":"KeyValue","url":"modules.html#KeyValue","classes":"tsd-kind-type-alias"},{"id":2984,"kind":4194304,"name":"RootValue","url":"modules.html#RootValue","classes":"tsd-kind-type-alias"},{"id":2985,"kind":4194304,"name":"AccidentalValue","url":"modules.html#AccidentalValue","classes":"tsd-kind-type-alias"},{"id":2986,"kind":256,"name":"Key","url":"interfaces/Key.html","classes":"tsd-kind-interface"},{"id":2987,"kind":1024,"name":"root_index","url":"interfaces/Key.html#root_index","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Key"},{"id":2988,"kind":1024,"name":"int_val","url":"interfaces/Key.html#int_val","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Key"},{"id":2989,"kind":128,"name":"Music","url":"classes/Music.html","classes":"tsd-kind-class"},{"id":2990,"kind":262144,"name":"NUM_TONES","url":"classes/Music.html#NUM_TONES","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":2991,"kind":262144,"name":"roots","url":"classes/Music.html#roots","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":2992,"kind":262144,"name":"root_values","url":"classes/Music.html#root_values","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":2993,"kind":262144,"name":"root_indices","url":"classes/Music.html#root_indices","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":2994,"kind":262144,"name":"canonical_notes","url":"classes/Music.html#canonical_notes","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":2995,"kind":262144,"name":"diatonic_intervals","url":"classes/Music.html#diatonic_intervals","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":2996,"kind":262144,"name":"diatonic_accidentals","url":"classes/Music.html#diatonic_accidentals","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":2997,"kind":262144,"name":"intervals","url":"classes/Music.html#intervals","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":2998,"kind":262144,"name":"scales","url":"classes/Music.html#scales","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":2999,"kind":262144,"name":"scaleTypes","url":"classes/Music.html#scaleTypes","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":3000,"kind":262144,"name":"accidentals","url":"classes/Music.html#accidentals","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":3001,"kind":262144,"name":"noteValues","url":"classes/Music.html#noteValues","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Music"},{"id":3002,"kind":512,"name":"constructor","url":"classes/Music.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Music"},{"id":3003,"kind":2048,"name":"getNoteParts","url":"classes/Music.html#getNoteParts","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Music"},{"id":3004,"kind":2048,"name":"getKeyParts","url":"classes/Music.html#getKeyParts","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Music"},{"id":3005,"kind":2048,"name":"getNoteValue","url":"classes/Music.html#getNoteValue","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Music"},{"id":3006,"kind":2048,"name":"getIntervalValue","url":"classes/Music.html#getIntervalValue","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Music"},{"id":3007,"kind":2048,"name":"getCanonicalNoteName","url":"classes/Music.html#getCanonicalNoteName","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Music"},{"id":3008,"kind":2048,"name":"getCanonicalIntervalName","url":"classes/Music.html#getCanonicalIntervalName","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Music"},{"id":3009,"kind":2048,"name":"getRelativeNoteValue","url":"classes/Music.html#getRelativeNoteValue","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Music"},{"id":3010,"kind":2048,"name":"getRelativeNoteName","url":"classes/Music.html#getRelativeNoteName","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Music"},{"id":3011,"kind":2048,"name":"getScaleTones","url":"classes/Music.html#getScaleTones","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Music"},{"id":3012,"kind":2048,"name":"getIntervalBetween","url":"classes/Music.html#getIntervalBetween","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Music"},{"id":3013,"kind":2048,"name":"createScaleMap","url":"classes/Music.html#createScaleMap","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Music"},{"id":3014,"kind":256,"name":"KeyProps","url":"interfaces/KeyProps.html","classes":"tsd-kind-interface"},{"id":3015,"kind":1024,"name":"stem_down_x_offset","url":"interfaces/KeyProps.html#stem_down_x_offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyProps"},{"id":3016,"kind":1024,"name":"stem_up_x_offset","url":"interfaces/KeyProps.html#stem_up_x_offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyProps"},{"id":3017,"kind":1024,"name":"key","url":"interfaces/KeyProps.html#key","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyProps"},{"id":3018,"kind":1024,"name":"octave","url":"interfaces/KeyProps.html#octave","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyProps"},{"id":3019,"kind":1024,"name":"line","url":"interfaces/KeyProps.html#line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyProps"},{"id":3020,"kind":1024,"name":"int_value","url":"interfaces/KeyProps.html#int_value","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyProps"},{"id":3021,"kind":1024,"name":"accidental","url":"interfaces/KeyProps.html#accidental","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyProps"},{"id":3022,"kind":1024,"name":"code","url":"interfaces/KeyProps.html#code","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyProps"},{"id":3023,"kind":1024,"name":"stroke","url":"interfaces/KeyProps.html#stroke","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyProps"},{"id":3024,"kind":1024,"name":"shift_right","url":"interfaces/KeyProps.html#shift_right","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyProps"},{"id":3025,"kind":1024,"name":"displaced","url":"interfaces/KeyProps.html#displaced","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"KeyProps"},{"id":3026,"kind":256,"name":"NoteMetrics","url":"interfaces/NoteMetrics.html","classes":"tsd-kind-interface"},{"id":3027,"kind":1024,"name":"width","url":"interfaces/NoteMetrics.html#width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteMetrics"},{"id":3028,"kind":1024,"name":"glyphWidth","url":"interfaces/NoteMetrics.html#glyphWidth","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteMetrics"},{"id":3029,"kind":1024,"name":"notePx","url":"interfaces/NoteMetrics.html#notePx","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteMetrics"},{"id":3030,"kind":1024,"name":"modLeftPx","url":"interfaces/NoteMetrics.html#modLeftPx","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteMetrics"},{"id":3031,"kind":1024,"name":"modRightPx","url":"interfaces/NoteMetrics.html#modRightPx","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteMetrics"},{"id":3032,"kind":1024,"name":"leftDisplacedHeadPx","url":"interfaces/NoteMetrics.html#leftDisplacedHeadPx","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteMetrics"},{"id":3033,"kind":1024,"name":"glyphPx","url":"interfaces/NoteMetrics.html#glyphPx","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteMetrics"},{"id":3034,"kind":1024,"name":"rightDisplacedHeadPx","url":"interfaces/NoteMetrics.html#rightDisplacedHeadPx","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteMetrics"},{"id":3035,"kind":256,"name":"NoteDuration","url":"interfaces/NoteDuration.html","classes":"tsd-kind-interface"},{"id":3036,"kind":1024,"name":"duration","url":"interfaces/NoteDuration.html#duration","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteDuration"},{"id":3037,"kind":1024,"name":"dots","url":"interfaces/NoteDuration.html#dots","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteDuration"},{"id":3038,"kind":1024,"name":"type","url":"interfaces/NoteDuration.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteDuration"},{"id":3039,"kind":256,"name":"ParsedNote","url":"interfaces/ParsedNote.html","classes":"tsd-kind-interface"},{"id":3040,"kind":1024,"name":"duration","url":"interfaces/ParsedNote.html#duration","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ParsedNote"},{"id":3041,"kind":1024,"name":"type","url":"interfaces/ParsedNote.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ParsedNote"},{"id":3042,"kind":1024,"name":"customTypes","url":"interfaces/ParsedNote.html#customTypes","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ParsedNote"},{"id":3043,"kind":1024,"name":"dots","url":"interfaces/ParsedNote.html#dots","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ParsedNote"},{"id":3044,"kind":1024,"name":"ticks","url":"interfaces/ParsedNote.html#ticks","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ParsedNote"},{"id":3045,"kind":256,"name":"NoteStruct","url":"interfaces/NoteStruct.html","classes":"tsd-kind-interface"},{"id":3046,"kind":1024,"name":"keys","url":"interfaces/NoteStruct.html#keys","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteStruct"},{"id":3047,"kind":1024,"name":"duration","url":"interfaces/NoteStruct.html#duration","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteStruct"},{"id":3048,"kind":1024,"name":"line","url":"interfaces/NoteStruct.html#line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteStruct"},{"id":3049,"kind":1024,"name":"dots","url":"interfaces/NoteStruct.html#dots","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteStruct"},{"id":3050,"kind":1024,"name":"type","url":"interfaces/NoteStruct.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteStruct"},{"id":3051,"kind":1024,"name":"align_center","url":"interfaces/NoteStruct.html#align_center","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteStruct"},{"id":3052,"kind":1024,"name":"duration_override","url":"interfaces/NoteStruct.html#duration_override","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteStruct"},{"id":3053,"kind":128,"name":"Note","url":"classes/Note.html","classes":"tsd-kind-class"},{"id":3054,"kind":262144,"name":"CATEGORY","url":"classes/Note.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Note"},{"id":3055,"kind":2048,"name":"plotMetrics","url":"classes/Note.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Note"},{"id":3056,"kind":1024,"name":"TEXT_FONT","url":"classes/Note.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Note"},{"id":3057,"kind":512,"name":"constructor","url":"classes/Note.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Note"},{"id":3058,"kind":1024,"name":"glyph","url":"classes/Note.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Note"},{"id":3059,"kind":1024,"name":"keys","url":"classes/Note.html#keys","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Note"},{"id":3060,"kind":1024,"name":"keyProps","url":"classes/Note.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Note"},{"id":3061,"kind":1024,"name":"render_options","url":"classes/Note.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Note"},{"id":3062,"kind":65536,"name":"__type","url":"classes/Note.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Note"},{"id":3063,"kind":1024,"name":"draw_stem_through_stave","url":"classes/Note.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3064,"kind":1024,"name":"draw","url":"classes/Note.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3065,"kind":1024,"name":"draw_dots","url":"classes/Note.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3066,"kind":1024,"name":"draw_stem","url":"classes/Note.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3067,"kind":1024,"name":"y_shift","url":"classes/Note.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3068,"kind":1024,"name":"extend_left","url":"classes/Note.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3069,"kind":1024,"name":"extend_right","url":"classes/Note.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3070,"kind":1024,"name":"glyph_font_scale","url":"classes/Note.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3071,"kind":1024,"name":"annotation_spacing","url":"classes/Note.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3072,"kind":1024,"name":"glyph_font_size","url":"classes/Note.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3073,"kind":1024,"name":"scale","url":"classes/Note.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3074,"kind":1024,"name":"font","url":"classes/Note.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3075,"kind":1024,"name":"stroke_px","url":"classes/Note.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Note.__type"},{"id":3076,"kind":2048,"name":"getPlayNote","url":"classes/Note.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3077,"kind":2048,"name":"setPlayNote","url":"classes/Note.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3078,"kind":2048,"name":"isRest","url":"classes/Note.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3079,"kind":2048,"name":"addStroke","url":"classes/Note.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3080,"kind":2048,"name":"getStave","url":"classes/Note.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Note"},{"id":3081,"kind":2048,"name":"checkStave","url":"classes/Note.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3082,"kind":2048,"name":"setStave","url":"classes/Note.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Note"},{"id":3083,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/Note.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3084,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/Note.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3085,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/Note.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3086,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/Note.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3087,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/Note.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Note"},{"id":3088,"kind":2048,"name":"getLineNumber","url":"classes/Note.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3089,"kind":2048,"name":"getLineForRest","url":"classes/Note.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3090,"kind":2048,"name":"getGlyph","url":"classes/Note.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3091,"kind":2048,"name":"getGlyphWidth","url":"classes/Note.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3092,"kind":2048,"name":"setYs","url":"classes/Note.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3093,"kind":2048,"name":"getYs","url":"classes/Note.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3094,"kind":2048,"name":"getYForTopText","url":"classes/Note.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3095,"kind":2048,"name":"getVoice","url":"classes/Note.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Note"},{"id":3096,"kind":2048,"name":"setVoice","url":"classes/Note.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Note"},{"id":3097,"kind":2048,"name":"getTickContext","url":"classes/Note.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3098,"kind":2048,"name":"setTickContext","url":"classes/Note.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Note"},{"id":3099,"kind":2048,"name":"getDuration","url":"classes/Note.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3100,"kind":2048,"name":"isDotted","url":"classes/Note.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3101,"kind":2048,"name":"hasStem","url":"classes/Note.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3102,"kind":2048,"name":"getNoteType","url":"classes/Note.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3103,"kind":2048,"name":"getBeam","url":"classes/Note.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3104,"kind":2048,"name":"checkBeam","url":"classes/Note.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3105,"kind":2048,"name":"hasBeam","url":"classes/Note.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3106,"kind":2048,"name":"setBeam","url":"classes/Note.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3107,"kind":2048,"name":"addModifier","url":"classes/Note.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Note"},{"id":3108,"kind":2048,"name":"getModifiersByType","url":"classes/Note.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3109,"kind":2048,"name":"getModifierStartXY","url":"classes/Note.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3110,"kind":2048,"name":"getRightParenthesisPx","url":"classes/Note.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3111,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/Note.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3112,"kind":2048,"name":"getFirstDotPx","url":"classes/Note.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3113,"kind":2048,"name":"getMetrics","url":"classes/Note.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Note"},{"id":3114,"kind":2048,"name":"getAbsoluteX","url":"classes/Note.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Note"},{"id":3115,"kind":2048,"name":"getStemDirection","url":"classes/Note.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3116,"kind":2048,"name":"getStemExtents","url":"classes/Note.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3117,"kind":2048,"name":"getTieRightX","url":"classes/Note.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3118,"kind":2048,"name":"getTieLeftX","url":"classes/Note.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3119,"kind":2048,"name":"getKeys","url":"classes/Note.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3120,"kind":2048,"name":"getKeyProps","url":"classes/Note.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Note"},{"id":3121,"kind":2048,"name":"reset","url":"classes/Note.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3122,"kind":2048,"name":"getTicks","url":"classes/Note.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3123,"kind":2048,"name":"setIgnoreTicks","url":"classes/Note.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3124,"kind":2048,"name":"setWidth","url":"classes/Note.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3125,"kind":2048,"name":"getWidth","url":"classes/Note.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3126,"kind":2048,"name":"setXShift","url":"classes/Note.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3127,"kind":2048,"name":"getXShift","url":"classes/Note.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3128,"kind":2048,"name":"getX","url":"classes/Note.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3129,"kind":2048,"name":"getFormatterMetrics","url":"classes/Note.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3130,"kind":2048,"name":"getCenterXShift","url":"classes/Note.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3131,"kind":2048,"name":"setCenterXShift","url":"classes/Note.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3132,"kind":2048,"name":"isCenterAligned","url":"classes/Note.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3133,"kind":2048,"name":"setCenterAlignment","url":"classes/Note.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3134,"kind":2048,"name":"getTuplet","url":"classes/Note.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3135,"kind":2048,"name":"getTupletStack","url":"classes/Note.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3136,"kind":2048,"name":"resetTuplet","url":"classes/Note.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3137,"kind":2048,"name":"setTuplet","url":"classes/Note.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3138,"kind":2048,"name":"addToModifierContext","url":"classes/Note.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3139,"kind":2048,"name":"getModifiers","url":"classes/Note.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3140,"kind":2048,"name":"checkTickContext","url":"classes/Note.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3141,"kind":2048,"name":"preFormat","url":"classes/Note.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3142,"kind":262144,"name":"preFormatted","url":"classes/Note.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3143,"kind":2048,"name":"postFormat","url":"classes/Note.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3144,"kind":262144,"name":"postFormatted","url":"classes/Note.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3145,"kind":2048,"name":"getIntrinsicTicks","url":"classes/Note.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3146,"kind":2048,"name":"setIntrinsicTicks","url":"classes/Note.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3147,"kind":2048,"name":"getTickMultiplier","url":"classes/Note.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3148,"kind":2048,"name":"applyTickMultiplier","url":"classes/Note.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3149,"kind":2048,"name":"setDuration","url":"classes/Note.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3150,"kind":2048,"name":"setModifierContext","url":"classes/Note.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3151,"kind":2048,"name":"getModifierContext","url":"classes/Note.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3152,"kind":2048,"name":"checkModifierContext","url":"classes/Note.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3153,"kind":2048,"name":"addChildElement","url":"classes/Note.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3154,"kind":2048,"name":"getCategory","url":"classes/Note.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3155,"kind":2048,"name":"setStyle","url":"classes/Note.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3156,"kind":2048,"name":"setGroupStyle","url":"classes/Note.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3157,"kind":2048,"name":"getStyle","url":"classes/Note.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3158,"kind":2048,"name":"applyStyle","url":"classes/Note.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3159,"kind":2048,"name":"restoreStyle","url":"classes/Note.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3160,"kind":2048,"name":"drawWithStyle","url":"classes/Note.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3161,"kind":2048,"name":"draw","url":"classes/Note.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3162,"kind":2048,"name":"hasClass","url":"classes/Note.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3163,"kind":2048,"name":"addClass","url":"classes/Note.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3164,"kind":2048,"name":"removeClass","url":"classes/Note.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3165,"kind":2048,"name":"onRegister","url":"classes/Note.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3166,"kind":2048,"name":"isRendered","url":"classes/Note.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3167,"kind":2048,"name":"setRendered","url":"classes/Note.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3168,"kind":2048,"name":"getAttributes","url":"classes/Note.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3169,"kind":2048,"name":"getAttribute","url":"classes/Note.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3170,"kind":2048,"name":"getSVGElement","url":"classes/Note.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3171,"kind":2048,"name":"setAttribute","url":"classes/Note.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3172,"kind":2048,"name":"getBoundingBox","url":"classes/Note.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3173,"kind":2048,"name":"getContext","url":"classes/Note.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3174,"kind":2048,"name":"setContext","url":"classes/Note.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3175,"kind":2048,"name":"checkContext","url":"classes/Note.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3176,"kind":262144,"name":"font","url":"classes/Note.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3177,"kind":2048,"name":"setFont","url":"classes/Note.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3178,"kind":2048,"name":"getFont","url":"classes/Note.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3179,"kind":2048,"name":"resetFont","url":"classes/Note.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3180,"kind":262144,"name":"fontInfo","url":"classes/Note.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3181,"kind":2048,"name":"setFontSize","url":"classes/Note.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3182,"kind":2048,"name":"getFontSize","url":"classes/Note.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3183,"kind":262144,"name":"fontSize","url":"classes/Note.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3184,"kind":262144,"name":"fontSizeInPoints","url":"classes/Note.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3185,"kind":262144,"name":"fontSizeInPixels","url":"classes/Note.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3186,"kind":262144,"name":"fontStyle","url":"classes/Note.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3187,"kind":262144,"name":"fontWeight","url":"classes/Note.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Note"},{"id":3188,"kind":256,"name":"NoteHeadStruct","url":"interfaces/NoteHeadStruct.html","classes":"tsd-kind-interface"},{"id":3189,"kind":1024,"name":"line","url":"interfaces/NoteHeadStruct.html#line","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite","parent":"NoteHeadStruct"},{"id":3190,"kind":1024,"name":"glyph_font_scale","url":"interfaces/NoteHeadStruct.html#glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3191,"kind":1024,"name":"slashed","url":"interfaces/NoteHeadStruct.html#slashed","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3192,"kind":1024,"name":"style","url":"interfaces/NoteHeadStruct.html#style","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3193,"kind":1024,"name":"stem_down_x_offset","url":"interfaces/NoteHeadStruct.html#stem_down_x_offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3194,"kind":1024,"name":"stem_up_x_offset","url":"interfaces/NoteHeadStruct.html#stem_up_x_offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3195,"kind":1024,"name":"custom_glyph_code","url":"interfaces/NoteHeadStruct.html#custom_glyph_code","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3196,"kind":1024,"name":"x_shift","url":"interfaces/NoteHeadStruct.html#x_shift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3197,"kind":1024,"name":"stem_direction","url":"interfaces/NoteHeadStruct.html#stem_direction","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3198,"kind":1024,"name":"displaced","url":"interfaces/NoteHeadStruct.html#displaced","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3199,"kind":1024,"name":"note_type","url":"interfaces/NoteHeadStruct.html#note_type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3200,"kind":1024,"name":"x","url":"interfaces/NoteHeadStruct.html#x","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3201,"kind":1024,"name":"y","url":"interfaces/NoteHeadStruct.html#y","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3202,"kind":1024,"name":"index","url":"interfaces/NoteHeadStruct.html#index","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"NoteHeadStruct"},{"id":3203,"kind":1024,"name":"keys","url":"interfaces/NoteHeadStruct.html#keys","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"NoteHeadStruct"},{"id":3204,"kind":1024,"name":"duration","url":"interfaces/NoteHeadStruct.html#duration","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"NoteHeadStruct"},{"id":3205,"kind":1024,"name":"dots","url":"interfaces/NoteHeadStruct.html#dots","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"NoteHeadStruct"},{"id":3206,"kind":1024,"name":"type","url":"interfaces/NoteHeadStruct.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"NoteHeadStruct"},{"id":3207,"kind":1024,"name":"align_center","url":"interfaces/NoteHeadStruct.html#align_center","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"NoteHeadStruct"},{"id":3208,"kind":1024,"name":"duration_override","url":"interfaces/NoteHeadStruct.html#duration_override","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"NoteHeadStruct"},{"id":3209,"kind":128,"name":"NoteHead","url":"classes/NoteHead.html","classes":"tsd-kind-class"},{"id":3210,"kind":1024,"name":"DEBUG","url":"classes/NoteHead.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NoteHead"},{"id":3211,"kind":262144,"name":"CATEGORY","url":"classes/NoteHead.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"NoteHead"},{"id":3212,"kind":2048,"name":"plotMetrics","url":"classes/NoteHead.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"NoteHead"},{"id":3213,"kind":1024,"name":"TEXT_FONT","url":"classes/NoteHead.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"NoteHead"},{"id":3214,"kind":512,"name":"constructor","url":"classes/NoteHead.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"NoteHead"},{"id":3215,"kind":1024,"name":"glyph_code","url":"classes/NoteHead.html#glyph_code","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NoteHead"},{"id":3216,"kind":2048,"name":"getWidth","url":"classes/NoteHead.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"NoteHead"},{"id":3217,"kind":2048,"name":"isDisplaced","url":"classes/NoteHead.html#isDisplaced","classes":"tsd-kind-method tsd-parent-kind-class","parent":"NoteHead"},{"id":3218,"kind":2048,"name":"getGlyph","url":"classes/NoteHead.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"NoteHead"},{"id":3219,"kind":2048,"name":"setX","url":"classes/NoteHead.html#setX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"NoteHead"},{"id":3220,"kind":2048,"name":"getY","url":"classes/NoteHead.html#getY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"NoteHead"},{"id":3221,"kind":2048,"name":"setY","url":"classes/NoteHead.html#setY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"NoteHead"},{"id":3222,"kind":2048,"name":"getLine","url":"classes/NoteHead.html#getLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"NoteHead"},{"id":3223,"kind":2048,"name":"setLine","url":"classes/NoteHead.html#setLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"NoteHead"},{"id":3224,"kind":2048,"name":"getAbsoluteX","url":"classes/NoteHead.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"NoteHead"},{"id":3225,"kind":2048,"name":"getBoundingBox","url":"classes/NoteHead.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"NoteHead"},{"id":3226,"kind":2048,"name":"setStave","url":"classes/NoteHead.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"NoteHead"},{"id":3227,"kind":2048,"name":"preFormat","url":"classes/NoteHead.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"NoteHead"},{"id":3228,"kind":2048,"name":"draw","url":"classes/NoteHead.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"NoteHead"},{"id":3229,"kind":1024,"name":"glyph","url":"classes/NoteHead.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3230,"kind":1024,"name":"keys","url":"classes/NoteHead.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3231,"kind":1024,"name":"keyProps","url":"classes/NoteHead.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3232,"kind":1024,"name":"render_options","url":"classes/NoteHead.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3233,"kind":65536,"name":"__type","url":"classes/NoteHead.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"NoteHead"},{"id":3234,"kind":1024,"name":"draw_stem_through_stave","url":"classes/NoteHead.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3235,"kind":1024,"name":"draw","url":"classes/NoteHead.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3236,"kind":1024,"name":"draw_dots","url":"classes/NoteHead.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3237,"kind":1024,"name":"draw_stem","url":"classes/NoteHead.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3238,"kind":1024,"name":"y_shift","url":"classes/NoteHead.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3239,"kind":1024,"name":"extend_left","url":"classes/NoteHead.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3240,"kind":1024,"name":"extend_right","url":"classes/NoteHead.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3241,"kind":1024,"name":"glyph_font_scale","url":"classes/NoteHead.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3242,"kind":1024,"name":"annotation_spacing","url":"classes/NoteHead.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3243,"kind":1024,"name":"glyph_font_size","url":"classes/NoteHead.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3244,"kind":1024,"name":"scale","url":"classes/NoteHead.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3245,"kind":1024,"name":"font","url":"classes/NoteHead.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3246,"kind":1024,"name":"stroke_px","url":"classes/NoteHead.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"NoteHead.__type"},{"id":3247,"kind":2048,"name":"getPlayNote","url":"classes/NoteHead.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3248,"kind":2048,"name":"setPlayNote","url":"classes/NoteHead.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3249,"kind":2048,"name":"isRest","url":"classes/NoteHead.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3250,"kind":2048,"name":"addStroke","url":"classes/NoteHead.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3251,"kind":2048,"name":"getStave","url":"classes/NoteHead.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3252,"kind":2048,"name":"checkStave","url":"classes/NoteHead.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3253,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/NoteHead.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3254,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/NoteHead.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3255,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/NoteHead.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3256,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/NoteHead.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3257,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/NoteHead.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3258,"kind":2048,"name":"getLineNumber","url":"classes/NoteHead.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3259,"kind":2048,"name":"getLineForRest","url":"classes/NoteHead.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3260,"kind":2048,"name":"getGlyphWidth","url":"classes/NoteHead.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3261,"kind":2048,"name":"setYs","url":"classes/NoteHead.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3262,"kind":2048,"name":"getYs","url":"classes/NoteHead.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3263,"kind":2048,"name":"getYForTopText","url":"classes/NoteHead.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3264,"kind":2048,"name":"getVoice","url":"classes/NoteHead.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3265,"kind":2048,"name":"setVoice","url":"classes/NoteHead.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3266,"kind":2048,"name":"getTickContext","url":"classes/NoteHead.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3267,"kind":2048,"name":"setTickContext","url":"classes/NoteHead.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3268,"kind":2048,"name":"getDuration","url":"classes/NoteHead.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3269,"kind":2048,"name":"isDotted","url":"classes/NoteHead.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3270,"kind":2048,"name":"hasStem","url":"classes/NoteHead.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3271,"kind":2048,"name":"getNoteType","url":"classes/NoteHead.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3272,"kind":2048,"name":"getBeam","url":"classes/NoteHead.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3273,"kind":2048,"name":"checkBeam","url":"classes/NoteHead.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3274,"kind":2048,"name":"hasBeam","url":"classes/NoteHead.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3275,"kind":2048,"name":"setBeam","url":"classes/NoteHead.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3276,"kind":2048,"name":"addModifier","url":"classes/NoteHead.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3277,"kind":2048,"name":"getModifiersByType","url":"classes/NoteHead.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3278,"kind":2048,"name":"getModifierStartXY","url":"classes/NoteHead.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3279,"kind":2048,"name":"getRightParenthesisPx","url":"classes/NoteHead.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3280,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/NoteHead.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3281,"kind":2048,"name":"getFirstDotPx","url":"classes/NoteHead.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3282,"kind":2048,"name":"getMetrics","url":"classes/NoteHead.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3283,"kind":2048,"name":"getStemDirection","url":"classes/NoteHead.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3284,"kind":2048,"name":"getStemExtents","url":"classes/NoteHead.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3285,"kind":2048,"name":"getTieRightX","url":"classes/NoteHead.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3286,"kind":2048,"name":"getTieLeftX","url":"classes/NoteHead.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3287,"kind":2048,"name":"getKeys","url":"classes/NoteHead.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3288,"kind":2048,"name":"getKeyProps","url":"classes/NoteHead.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3289,"kind":2048,"name":"reset","url":"classes/NoteHead.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3290,"kind":2048,"name":"getTicks","url":"classes/NoteHead.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3291,"kind":2048,"name":"setIgnoreTicks","url":"classes/NoteHead.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3292,"kind":2048,"name":"setWidth","url":"classes/NoteHead.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3293,"kind":2048,"name":"setXShift","url":"classes/NoteHead.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3294,"kind":2048,"name":"getXShift","url":"classes/NoteHead.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3295,"kind":2048,"name":"getX","url":"classes/NoteHead.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3296,"kind":2048,"name":"getFormatterMetrics","url":"classes/NoteHead.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3297,"kind":2048,"name":"getCenterXShift","url":"classes/NoteHead.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3298,"kind":2048,"name":"setCenterXShift","url":"classes/NoteHead.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3299,"kind":2048,"name":"isCenterAligned","url":"classes/NoteHead.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3300,"kind":2048,"name":"setCenterAlignment","url":"classes/NoteHead.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3301,"kind":2048,"name":"getTuplet","url":"classes/NoteHead.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3302,"kind":2048,"name":"getTupletStack","url":"classes/NoteHead.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3303,"kind":2048,"name":"resetTuplet","url":"classes/NoteHead.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3304,"kind":2048,"name":"setTuplet","url":"classes/NoteHead.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3305,"kind":2048,"name":"addToModifierContext","url":"classes/NoteHead.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3306,"kind":2048,"name":"getModifiers","url":"classes/NoteHead.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3307,"kind":2048,"name":"checkTickContext","url":"classes/NoteHead.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3308,"kind":262144,"name":"preFormatted","url":"classes/NoteHead.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3309,"kind":2048,"name":"postFormat","url":"classes/NoteHead.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3310,"kind":262144,"name":"postFormatted","url":"classes/NoteHead.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3311,"kind":2048,"name":"getIntrinsicTicks","url":"classes/NoteHead.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3312,"kind":2048,"name":"setIntrinsicTicks","url":"classes/NoteHead.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3313,"kind":2048,"name":"getTickMultiplier","url":"classes/NoteHead.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3314,"kind":2048,"name":"applyTickMultiplier","url":"classes/NoteHead.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3315,"kind":2048,"name":"setDuration","url":"classes/NoteHead.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3316,"kind":2048,"name":"setModifierContext","url":"classes/NoteHead.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3317,"kind":2048,"name":"getModifierContext","url":"classes/NoteHead.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3318,"kind":2048,"name":"checkModifierContext","url":"classes/NoteHead.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3319,"kind":2048,"name":"addChildElement","url":"classes/NoteHead.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3320,"kind":2048,"name":"getCategory","url":"classes/NoteHead.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3321,"kind":2048,"name":"setStyle","url":"classes/NoteHead.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3322,"kind":2048,"name":"setGroupStyle","url":"classes/NoteHead.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3323,"kind":2048,"name":"getStyle","url":"classes/NoteHead.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3324,"kind":2048,"name":"applyStyle","url":"classes/NoteHead.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3325,"kind":2048,"name":"restoreStyle","url":"classes/NoteHead.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3326,"kind":2048,"name":"drawWithStyle","url":"classes/NoteHead.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3327,"kind":2048,"name":"hasClass","url":"classes/NoteHead.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3328,"kind":2048,"name":"addClass","url":"classes/NoteHead.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3329,"kind":2048,"name":"removeClass","url":"classes/NoteHead.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3330,"kind":2048,"name":"onRegister","url":"classes/NoteHead.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3331,"kind":2048,"name":"isRendered","url":"classes/NoteHead.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3332,"kind":2048,"name":"setRendered","url":"classes/NoteHead.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3333,"kind":2048,"name":"getAttributes","url":"classes/NoteHead.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3334,"kind":2048,"name":"getAttribute","url":"classes/NoteHead.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3335,"kind":2048,"name":"getSVGElement","url":"classes/NoteHead.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3336,"kind":2048,"name":"setAttribute","url":"classes/NoteHead.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3337,"kind":2048,"name":"getContext","url":"classes/NoteHead.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3338,"kind":2048,"name":"setContext","url":"classes/NoteHead.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3339,"kind":2048,"name":"checkContext","url":"classes/NoteHead.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3340,"kind":262144,"name":"font","url":"classes/NoteHead.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3341,"kind":2048,"name":"setFont","url":"classes/NoteHead.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3342,"kind":2048,"name":"getFont","url":"classes/NoteHead.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3343,"kind":2048,"name":"resetFont","url":"classes/NoteHead.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3344,"kind":262144,"name":"fontInfo","url":"classes/NoteHead.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3345,"kind":2048,"name":"setFontSize","url":"classes/NoteHead.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3346,"kind":2048,"name":"getFontSize","url":"classes/NoteHead.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3347,"kind":262144,"name":"fontSize","url":"classes/NoteHead.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3348,"kind":262144,"name":"fontSizeInPoints","url":"classes/NoteHead.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3349,"kind":262144,"name":"fontSizeInPixels","url":"classes/NoteHead.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3350,"kind":262144,"name":"fontStyle","url":"classes/NoteHead.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3351,"kind":262144,"name":"fontWeight","url":"classes/NoteHead.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteHead"},{"id":3352,"kind":128,"name":"NoteSubGroup","url":"classes/NoteSubGroup.html","classes":"tsd-kind-class"},{"id":3353,"kind":262144,"name":"CATEGORY","url":"classes/NoteSubGroup.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"NoteSubGroup"},{"id":3354,"kind":2048,"name":"format","url":"classes/NoteSubGroup.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"NoteSubGroup"},{"id":3355,"kind":262144,"name":"Position","url":"classes/NoteSubGroup.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"NoteSubGroup"},{"id":3356,"kind":262144,"name":"PositionString","url":"classes/NoteSubGroup.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"NoteSubGroup"},{"id":3357,"kind":1024,"name":"TEXT_FONT","url":"classes/NoteSubGroup.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"NoteSubGroup"},{"id":3358,"kind":512,"name":"constructor","url":"classes/NoteSubGroup.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"NoteSubGroup"},{"id":3359,"kind":2048,"name":"preFormat","url":"classes/NoteSubGroup.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"NoteSubGroup"},{"id":3360,"kind":2048,"name":"setWidth","url":"classes/NoteSubGroup.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"NoteSubGroup"},{"id":3361,"kind":2048,"name":"getWidth","url":"classes/NoteSubGroup.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"NoteSubGroup"},{"id":3362,"kind":2048,"name":"draw","url":"classes/NoteSubGroup.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"NoteSubGroup"},{"id":3363,"kind":2048,"name":"getNote","url":"classes/NoteSubGroup.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3364,"kind":2048,"name":"checkAttachedNote","url":"classes/NoteSubGroup.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3365,"kind":2048,"name":"setNote","url":"classes/NoteSubGroup.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3366,"kind":2048,"name":"getIndex","url":"classes/NoteSubGroup.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3367,"kind":2048,"name":"checkIndex","url":"classes/NoteSubGroup.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3368,"kind":2048,"name":"setIndex","url":"classes/NoteSubGroup.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3369,"kind":2048,"name":"getModifierContext","url":"classes/NoteSubGroup.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3370,"kind":2048,"name":"checkModifierContext","url":"classes/NoteSubGroup.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3371,"kind":2048,"name":"setModifierContext","url":"classes/NoteSubGroup.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3372,"kind":2048,"name":"getPosition","url":"classes/NoteSubGroup.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3373,"kind":2048,"name":"setPosition","url":"classes/NoteSubGroup.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3374,"kind":2048,"name":"setTextLine","url":"classes/NoteSubGroup.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3375,"kind":2048,"name":"setYShift","url":"classes/NoteSubGroup.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3376,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/NoteSubGroup.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3377,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/NoteSubGroup.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3378,"kind":2048,"name":"setXShift","url":"classes/NoteSubGroup.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3379,"kind":2048,"name":"getXShift","url":"classes/NoteSubGroup.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3380,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/NoteSubGroup.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3381,"kind":2048,"name":"addChildElement","url":"classes/NoteSubGroup.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3382,"kind":2048,"name":"getCategory","url":"classes/NoteSubGroup.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3383,"kind":2048,"name":"setStyle","url":"classes/NoteSubGroup.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3384,"kind":2048,"name":"setGroupStyle","url":"classes/NoteSubGroup.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3385,"kind":2048,"name":"getStyle","url":"classes/NoteSubGroup.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3386,"kind":2048,"name":"applyStyle","url":"classes/NoteSubGroup.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3387,"kind":2048,"name":"restoreStyle","url":"classes/NoteSubGroup.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3388,"kind":2048,"name":"drawWithStyle","url":"classes/NoteSubGroup.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3389,"kind":2048,"name":"hasClass","url":"classes/NoteSubGroup.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3390,"kind":2048,"name":"addClass","url":"classes/NoteSubGroup.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3391,"kind":2048,"name":"removeClass","url":"classes/NoteSubGroup.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3392,"kind":2048,"name":"onRegister","url":"classes/NoteSubGroup.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3393,"kind":2048,"name":"isRendered","url":"classes/NoteSubGroup.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3394,"kind":2048,"name":"setRendered","url":"classes/NoteSubGroup.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3395,"kind":2048,"name":"getAttributes","url":"classes/NoteSubGroup.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3396,"kind":2048,"name":"getAttribute","url":"classes/NoteSubGroup.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3397,"kind":2048,"name":"getSVGElement","url":"classes/NoteSubGroup.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3398,"kind":2048,"name":"setAttribute","url":"classes/NoteSubGroup.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3399,"kind":2048,"name":"getBoundingBox","url":"classes/NoteSubGroup.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3400,"kind":2048,"name":"getContext","url":"classes/NoteSubGroup.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3401,"kind":2048,"name":"setContext","url":"classes/NoteSubGroup.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3402,"kind":2048,"name":"checkContext","url":"classes/NoteSubGroup.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3403,"kind":262144,"name":"font","url":"classes/NoteSubGroup.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3404,"kind":2048,"name":"setFont","url":"classes/NoteSubGroup.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3405,"kind":2048,"name":"getFont","url":"classes/NoteSubGroup.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3406,"kind":2048,"name":"resetFont","url":"classes/NoteSubGroup.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3407,"kind":262144,"name":"fontInfo","url":"classes/NoteSubGroup.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3408,"kind":2048,"name":"setFontSize","url":"classes/NoteSubGroup.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3409,"kind":2048,"name":"getFontSize","url":"classes/NoteSubGroup.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3410,"kind":262144,"name":"fontSize","url":"classes/NoteSubGroup.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3411,"kind":262144,"name":"fontSizeInPoints","url":"classes/NoteSubGroup.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3412,"kind":262144,"name":"fontSizeInPixels","url":"classes/NoteSubGroup.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3413,"kind":262144,"name":"fontStyle","url":"classes/NoteSubGroup.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3414,"kind":262144,"name":"fontWeight","url":"classes/NoteSubGroup.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"NoteSubGroup"},{"id":3415,"kind":128,"name":"Ornament","url":"classes/Ornament.html","classes":"tsd-kind-class"},{"id":3416,"kind":1024,"name":"DEBUG","url":"classes/Ornament.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Ornament"},{"id":3417,"kind":262144,"name":"CATEGORY","url":"classes/Ornament.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Ornament"},{"id":3418,"kind":262144,"name":"minPadding","url":"classes/Ornament.html#minPadding","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Ornament"},{"id":3419,"kind":2048,"name":"format","url":"classes/Ornament.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Ornament"},{"id":3420,"kind":262144,"name":"ornamentNoteTransition","url":"classes/Ornament.html#ornamentNoteTransition","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Ornament"},{"id":3421,"kind":262144,"name":"ornamentAttack","url":"classes/Ornament.html#ornamentAttack","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Ornament"},{"id":3422,"kind":262144,"name":"ornamentAlignWithNoteHead","url":"classes/Ornament.html#ornamentAlignWithNoteHead","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Ornament"},{"id":3423,"kind":262144,"name":"ornamentRelease","url":"classes/Ornament.html#ornamentRelease","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Ornament"},{"id":3424,"kind":262144,"name":"ornamentArticulation","url":"classes/Ornament.html#ornamentArticulation","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Ornament"},{"id":3425,"kind":262144,"name":"Position","url":"classes/Ornament.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Ornament"},{"id":3426,"kind":262144,"name":"PositionString","url":"classes/Ornament.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Ornament"},{"id":3427,"kind":1024,"name":"TEXT_FONT","url":"classes/Ornament.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Ornament"},{"id":3428,"kind":512,"name":"constructor","url":"classes/Ornament.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Ornament"},{"id":3429,"kind":1024,"name":"render_options","url":"classes/Ornament.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Ornament"},{"id":3430,"kind":65536,"name":"__type","url":"classes/Ornament.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Ornament"},{"id":3431,"kind":1024,"name":"accidentalUpperPadding","url":"classes/Ornament.html#__type.accidentalUpperPadding","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Ornament.__type"},{"id":3432,"kind":1024,"name":"accidentalLowerPadding","url":"classes/Ornament.html#__type.accidentalLowerPadding","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Ornament.__type"},{"id":3433,"kind":1024,"name":"font_scale","url":"classes/Ornament.html#__type.font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Ornament.__type"},{"id":3434,"kind":2048,"name":"getMetrics","url":"classes/Ornament.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Ornament"},{"id":3435,"kind":2048,"name":"setDelayed","url":"classes/Ornament.html#setDelayed","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Ornament"},{"id":3436,"kind":2048,"name":"setUpperAccidental","url":"classes/Ornament.html#setUpperAccidental","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Ornament"},{"id":3437,"kind":2048,"name":"setLowerAccidental","url":"classes/Ornament.html#setLowerAccidental","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Ornament"},{"id":3438,"kind":2048,"name":"draw","url":"classes/Ornament.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Ornament"},{"id":3439,"kind":2048,"name":"getWidth","url":"classes/Ornament.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3440,"kind":2048,"name":"setWidth","url":"classes/Ornament.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3441,"kind":2048,"name":"getNote","url":"classes/Ornament.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3442,"kind":2048,"name":"checkAttachedNote","url":"classes/Ornament.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3443,"kind":2048,"name":"setNote","url":"classes/Ornament.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3444,"kind":2048,"name":"getIndex","url":"classes/Ornament.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3445,"kind":2048,"name":"checkIndex","url":"classes/Ornament.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3446,"kind":2048,"name":"setIndex","url":"classes/Ornament.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3447,"kind":2048,"name":"getModifierContext","url":"classes/Ornament.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3448,"kind":2048,"name":"checkModifierContext","url":"classes/Ornament.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3449,"kind":2048,"name":"setModifierContext","url":"classes/Ornament.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3450,"kind":2048,"name":"getPosition","url":"classes/Ornament.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3451,"kind":2048,"name":"setPosition","url":"classes/Ornament.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3452,"kind":2048,"name":"setTextLine","url":"classes/Ornament.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3453,"kind":2048,"name":"setYShift","url":"classes/Ornament.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3454,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/Ornament.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3455,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/Ornament.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3456,"kind":2048,"name":"setXShift","url":"classes/Ornament.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3457,"kind":2048,"name":"getXShift","url":"classes/Ornament.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3458,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/Ornament.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3459,"kind":2048,"name":"addChildElement","url":"classes/Ornament.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3460,"kind":2048,"name":"getCategory","url":"classes/Ornament.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3461,"kind":2048,"name":"setStyle","url":"classes/Ornament.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3462,"kind":2048,"name":"setGroupStyle","url":"classes/Ornament.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3463,"kind":2048,"name":"getStyle","url":"classes/Ornament.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3464,"kind":2048,"name":"applyStyle","url":"classes/Ornament.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3465,"kind":2048,"name":"restoreStyle","url":"classes/Ornament.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3466,"kind":2048,"name":"drawWithStyle","url":"classes/Ornament.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3467,"kind":2048,"name":"hasClass","url":"classes/Ornament.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3468,"kind":2048,"name":"addClass","url":"classes/Ornament.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3469,"kind":2048,"name":"removeClass","url":"classes/Ornament.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3470,"kind":2048,"name":"onRegister","url":"classes/Ornament.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3471,"kind":2048,"name":"isRendered","url":"classes/Ornament.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3472,"kind":2048,"name":"setRendered","url":"classes/Ornament.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3473,"kind":2048,"name":"getAttributes","url":"classes/Ornament.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3474,"kind":2048,"name":"getAttribute","url":"classes/Ornament.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3475,"kind":2048,"name":"getSVGElement","url":"classes/Ornament.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3476,"kind":2048,"name":"setAttribute","url":"classes/Ornament.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3477,"kind":2048,"name":"getBoundingBox","url":"classes/Ornament.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3478,"kind":2048,"name":"getContext","url":"classes/Ornament.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3479,"kind":2048,"name":"setContext","url":"classes/Ornament.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3480,"kind":2048,"name":"checkContext","url":"classes/Ornament.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3481,"kind":262144,"name":"font","url":"classes/Ornament.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3482,"kind":2048,"name":"setFont","url":"classes/Ornament.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3483,"kind":2048,"name":"getFont","url":"classes/Ornament.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3484,"kind":2048,"name":"resetFont","url":"classes/Ornament.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3485,"kind":262144,"name":"fontInfo","url":"classes/Ornament.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3486,"kind":2048,"name":"setFontSize","url":"classes/Ornament.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3487,"kind":2048,"name":"getFontSize","url":"classes/Ornament.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3488,"kind":262144,"name":"fontSize","url":"classes/Ornament.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3489,"kind":262144,"name":"fontSizeInPoints","url":"classes/Ornament.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3490,"kind":262144,"name":"fontSizeInPixels","url":"classes/Ornament.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3491,"kind":262144,"name":"fontStyle","url":"classes/Ornament.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3492,"kind":262144,"name":"fontWeight","url":"classes/Ornament.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Ornament"},{"id":3493,"kind":128,"name":"Parenthesis","url":"classes/Parenthesis.html","classes":"tsd-kind-class"},{"id":3494,"kind":262144,"name":"CATEGORY","url":"classes/Parenthesis.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Parenthesis"},{"id":3495,"kind":2048,"name":"buildAndAttach","url":"classes/Parenthesis.html#buildAndAttach","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Parenthesis"},{"id":3496,"kind":2048,"name":"format","url":"classes/Parenthesis.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Parenthesis"},{"id":3497,"kind":262144,"name":"Position","url":"classes/Parenthesis.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Parenthesis"},{"id":3498,"kind":262144,"name":"PositionString","url":"classes/Parenthesis.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Parenthesis"},{"id":3499,"kind":1024,"name":"TEXT_FONT","url":"classes/Parenthesis.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Parenthesis"},{"id":3500,"kind":512,"name":"constructor","url":"classes/Parenthesis.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Parenthesis"},{"id":3501,"kind":2048,"name":"setNote","url":"classes/Parenthesis.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Parenthesis"},{"id":3502,"kind":2048,"name":"draw","url":"classes/Parenthesis.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Parenthesis"},{"id":3503,"kind":2048,"name":"getWidth","url":"classes/Parenthesis.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3504,"kind":2048,"name":"setWidth","url":"classes/Parenthesis.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3505,"kind":2048,"name":"getNote","url":"classes/Parenthesis.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3506,"kind":2048,"name":"checkAttachedNote","url":"classes/Parenthesis.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3507,"kind":2048,"name":"getIndex","url":"classes/Parenthesis.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3508,"kind":2048,"name":"checkIndex","url":"classes/Parenthesis.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3509,"kind":2048,"name":"setIndex","url":"classes/Parenthesis.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3510,"kind":2048,"name":"getModifierContext","url":"classes/Parenthesis.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3511,"kind":2048,"name":"checkModifierContext","url":"classes/Parenthesis.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3512,"kind":2048,"name":"setModifierContext","url":"classes/Parenthesis.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3513,"kind":2048,"name":"getPosition","url":"classes/Parenthesis.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3514,"kind":2048,"name":"setPosition","url":"classes/Parenthesis.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3515,"kind":2048,"name":"setTextLine","url":"classes/Parenthesis.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3516,"kind":2048,"name":"setYShift","url":"classes/Parenthesis.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3517,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/Parenthesis.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3518,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/Parenthesis.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3519,"kind":2048,"name":"setXShift","url":"classes/Parenthesis.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3520,"kind":2048,"name":"getXShift","url":"classes/Parenthesis.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3521,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/Parenthesis.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3522,"kind":2048,"name":"addChildElement","url":"classes/Parenthesis.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3523,"kind":2048,"name":"getCategory","url":"classes/Parenthesis.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3524,"kind":2048,"name":"setStyle","url":"classes/Parenthesis.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3525,"kind":2048,"name":"setGroupStyle","url":"classes/Parenthesis.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3526,"kind":2048,"name":"getStyle","url":"classes/Parenthesis.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3527,"kind":2048,"name":"applyStyle","url":"classes/Parenthesis.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3528,"kind":2048,"name":"restoreStyle","url":"classes/Parenthesis.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3529,"kind":2048,"name":"drawWithStyle","url":"classes/Parenthesis.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3530,"kind":2048,"name":"hasClass","url":"classes/Parenthesis.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3531,"kind":2048,"name":"addClass","url":"classes/Parenthesis.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3532,"kind":2048,"name":"removeClass","url":"classes/Parenthesis.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3533,"kind":2048,"name":"onRegister","url":"classes/Parenthesis.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3534,"kind":2048,"name":"isRendered","url":"classes/Parenthesis.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3535,"kind":2048,"name":"setRendered","url":"classes/Parenthesis.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3536,"kind":2048,"name":"getAttributes","url":"classes/Parenthesis.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3537,"kind":2048,"name":"getAttribute","url":"classes/Parenthesis.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3538,"kind":2048,"name":"getSVGElement","url":"classes/Parenthesis.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3539,"kind":2048,"name":"setAttribute","url":"classes/Parenthesis.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3540,"kind":2048,"name":"getBoundingBox","url":"classes/Parenthesis.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3541,"kind":2048,"name":"getContext","url":"classes/Parenthesis.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3542,"kind":2048,"name":"setContext","url":"classes/Parenthesis.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3543,"kind":2048,"name":"checkContext","url":"classes/Parenthesis.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3544,"kind":262144,"name":"font","url":"classes/Parenthesis.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3545,"kind":2048,"name":"setFont","url":"classes/Parenthesis.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3546,"kind":2048,"name":"getFont","url":"classes/Parenthesis.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3547,"kind":2048,"name":"resetFont","url":"classes/Parenthesis.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3548,"kind":262144,"name":"fontInfo","url":"classes/Parenthesis.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3549,"kind":2048,"name":"setFontSize","url":"classes/Parenthesis.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3550,"kind":2048,"name":"getFontSize","url":"classes/Parenthesis.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3551,"kind":262144,"name":"fontSize","url":"classes/Parenthesis.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3552,"kind":262144,"name":"fontSizeInPoints","url":"classes/Parenthesis.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3553,"kind":262144,"name":"fontSizeInPixels","url":"classes/Parenthesis.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3554,"kind":262144,"name":"fontStyle","url":"classes/Parenthesis.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3555,"kind":262144,"name":"fontWeight","url":"classes/Parenthesis.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Parenthesis"},{"id":3556,"kind":4194304,"name":"Match","url":"modules.html#Match","classes":"tsd-kind-type-alias"},{"id":3557,"kind":4194304,"name":"RuleFunction","url":"modules.html#RuleFunction","classes":"tsd-kind-type-alias"},{"id":3558,"kind":65536,"name":"__type","url":"modules.html#RuleFunction.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"RuleFunction"},{"id":3559,"kind":4194304,"name":"TriggerFunction","url":"modules.html#TriggerFunction","classes":"tsd-kind-type-alias"},{"id":3560,"kind":65536,"name":"__type","url":"modules.html#TriggerFunction.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"TriggerFunction"},{"id":3561,"kind":256,"name":"Rule","url":"interfaces/Rule.html","classes":"tsd-kind-interface"},{"id":3562,"kind":1024,"name":"token","url":"interfaces/Rule.html#token","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Rule"},{"id":3563,"kind":1024,"name":"noSpace","url":"interfaces/Rule.html#noSpace","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Rule"},{"id":3564,"kind":1024,"name":"expect","url":"interfaces/Rule.html#expect","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Rule"},{"id":3565,"kind":1024,"name":"zeroOrMore","url":"interfaces/Rule.html#zeroOrMore","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Rule"},{"id":3566,"kind":1024,"name":"oneOrMore","url":"interfaces/Rule.html#oneOrMore","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Rule"},{"id":3567,"kind":1024,"name":"maybe","url":"interfaces/Rule.html#maybe","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Rule"},{"id":3568,"kind":1024,"name":"or","url":"interfaces/Rule.html#or","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Rule"},{"id":3569,"kind":1024,"name":"run","url":"interfaces/Rule.html#run","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Rule"},{"id":3570,"kind":256,"name":"Result","url":"interfaces/Result.html","classes":"tsd-kind-interface"},{"id":3571,"kind":1024,"name":"success","url":"interfaces/Result.html#success","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Result"},{"id":3572,"kind":1024,"name":"pos","url":"interfaces/Result.html#pos","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Result"},{"id":3573,"kind":1024,"name":"incrementPos","url":"interfaces/Result.html#incrementPos","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Result"},{"id":3574,"kind":1024,"name":"matchedString","url":"interfaces/Result.html#matchedString","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Result"},{"id":3575,"kind":1024,"name":"matches","url":"interfaces/Result.html#matches","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Result"},{"id":3576,"kind":1024,"name":"numMatches","url":"interfaces/Result.html#numMatches","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Result"},{"id":3577,"kind":1024,"name":"results","url":"interfaces/Result.html#results","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Result"},{"id":3578,"kind":1024,"name":"errorPos","url":"interfaces/Result.html#errorPos","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Result"},{"id":3579,"kind":4194304,"name":"GroupedResults","url":"modules.html#GroupedResults","classes":"tsd-kind-type-alias"},{"id":3580,"kind":256,"name":"Grammar","url":"interfaces/Grammar.html","classes":"tsd-kind-interface"},{"id":3581,"kind":2048,"name":"begin","url":"interfaces/Grammar.html#begin","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Grammar"},{"id":3582,"kind":128,"name":"Parser","url":"classes/Parser.html","classes":"tsd-kind-class"},{"id":3583,"kind":1024,"name":"DEBUG","url":"classes/Parser.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Parser"},{"id":3584,"kind":512,"name":"constructor","url":"classes/Parser.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Parser"},{"id":3585,"kind":2048,"name":"parse","url":"classes/Parser.html#parse","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Parser"},{"id":3586,"kind":2048,"name":"matchFail","url":"classes/Parser.html#matchFail","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Parser"},{"id":3587,"kind":2048,"name":"matchSuccess","url":"classes/Parser.html#matchSuccess","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Parser"},{"id":3588,"kind":2048,"name":"matchToken","url":"classes/Parser.html#matchToken","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Parser"},{"id":3589,"kind":2048,"name":"expectOne","url":"classes/Parser.html#expectOne","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Parser"},{"id":3590,"kind":2048,"name":"expectOneOrMore","url":"classes/Parser.html#expectOneOrMore","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Parser"},{"id":3591,"kind":2048,"name":"expectZeroOrMore","url":"classes/Parser.html#expectZeroOrMore","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Parser"},{"id":3592,"kind":2048,"name":"expect","url":"classes/Parser.html#expect","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Parser"},{"id":3593,"kind":128,"name":"PedalMarking","url":"classes/PedalMarking.html","classes":"tsd-kind-class"},{"id":3594,"kind":1024,"name":"DEBUG","url":"classes/PedalMarking.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"PedalMarking"},{"id":3595,"kind":262144,"name":"CATEGORY","url":"classes/PedalMarking.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"PedalMarking"},{"id":3596,"kind":1024,"name":"TEXT_FONT","url":"classes/PedalMarking.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"PedalMarking"},{"id":3597,"kind":1024,"name":"GLYPHS","url":"classes/PedalMarking.html#GLYPHS","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"PedalMarking"},{"id":3598,"kind":1024,"name":"type","url":"classes/PedalMarking.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"PedalMarking"},{"id":3599,"kind":65536,"name":"__type","url":"classes/PedalMarking.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"PedalMarking"},{"id":3600,"kind":1024,"name":"TEXT","url":"classes/PedalMarking.html#__type-1.TEXT","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"PedalMarking.__type"},{"id":3601,"kind":1024,"name":"BRACKET","url":"classes/PedalMarking.html#__type-1.BRACKET","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"PedalMarking.__type"},{"id":3602,"kind":1024,"name":"MIXED","url":"classes/PedalMarking.html#__type-1.MIXED","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"PedalMarking.__type"},{"id":3603,"kind":1024,"name":"typeString","url":"classes/PedalMarking.html#typeString","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"PedalMarking"},{"id":3604,"kind":2048,"name":"createSustain","url":"classes/PedalMarking.html#createSustain","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"PedalMarking"},{"id":3605,"kind":2048,"name":"createSostenuto","url":"classes/PedalMarking.html#createSostenuto","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"PedalMarking"},{"id":3606,"kind":2048,"name":"createUnaCorda","url":"classes/PedalMarking.html#createUnaCorda","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"PedalMarking"},{"id":3607,"kind":512,"name":"constructor","url":"classes/PedalMarking.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"PedalMarking"},{"id":3608,"kind":1024,"name":"render_options","url":"classes/PedalMarking.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"PedalMarking"},{"id":3609,"kind":65536,"name":"__type","url":"classes/PedalMarking.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"PedalMarking"},{"id":3610,"kind":1024,"name":"color","url":"classes/PedalMarking.html#__type.color","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"PedalMarking.__type"},{"id":3611,"kind":1024,"name":"bracket_height","url":"classes/PedalMarking.html#__type.bracket_height","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"PedalMarking.__type"},{"id":3612,"kind":1024,"name":"text_margin_right","url":"classes/PedalMarking.html#__type.text_margin_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"PedalMarking.__type"},{"id":3613,"kind":1024,"name":"bracket_line_width","url":"classes/PedalMarking.html#__type.bracket_line_width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"PedalMarking.__type"},{"id":3614,"kind":2048,"name":"setType","url":"classes/PedalMarking.html#setType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"PedalMarking"},{"id":3615,"kind":2048,"name":"setCustomText","url":"classes/PedalMarking.html#setCustomText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"PedalMarking"},{"id":3616,"kind":2048,"name":"setLine","url":"classes/PedalMarking.html#setLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"PedalMarking"},{"id":3617,"kind":2048,"name":"drawBracketed","url":"classes/PedalMarking.html#drawBracketed","classes":"tsd-kind-method tsd-parent-kind-class","parent":"PedalMarking"},{"id":3618,"kind":2048,"name":"drawText","url":"classes/PedalMarking.html#drawText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"PedalMarking"},{"id":3619,"kind":2048,"name":"draw","url":"classes/PedalMarking.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"PedalMarking"},{"id":3620,"kind":2048,"name":"addChildElement","url":"classes/PedalMarking.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3621,"kind":2048,"name":"getCategory","url":"classes/PedalMarking.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3622,"kind":2048,"name":"setStyle","url":"classes/PedalMarking.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3623,"kind":2048,"name":"setGroupStyle","url":"classes/PedalMarking.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3624,"kind":2048,"name":"getStyle","url":"classes/PedalMarking.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3625,"kind":2048,"name":"applyStyle","url":"classes/PedalMarking.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3626,"kind":2048,"name":"restoreStyle","url":"classes/PedalMarking.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3627,"kind":2048,"name":"drawWithStyle","url":"classes/PedalMarking.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3628,"kind":2048,"name":"hasClass","url":"classes/PedalMarking.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3629,"kind":2048,"name":"addClass","url":"classes/PedalMarking.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3630,"kind":2048,"name":"removeClass","url":"classes/PedalMarking.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3631,"kind":2048,"name":"onRegister","url":"classes/PedalMarking.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3632,"kind":2048,"name":"isRendered","url":"classes/PedalMarking.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3633,"kind":2048,"name":"setRendered","url":"classes/PedalMarking.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3634,"kind":2048,"name":"getAttributes","url":"classes/PedalMarking.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3635,"kind":2048,"name":"getAttribute","url":"classes/PedalMarking.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3636,"kind":2048,"name":"getSVGElement","url":"classes/PedalMarking.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3637,"kind":2048,"name":"setAttribute","url":"classes/PedalMarking.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3638,"kind":2048,"name":"getBoundingBox","url":"classes/PedalMarking.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3639,"kind":2048,"name":"getContext","url":"classes/PedalMarking.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3640,"kind":2048,"name":"setContext","url":"classes/PedalMarking.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3641,"kind":2048,"name":"checkContext","url":"classes/PedalMarking.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3642,"kind":262144,"name":"font","url":"classes/PedalMarking.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3643,"kind":2048,"name":"setFont","url":"classes/PedalMarking.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3644,"kind":2048,"name":"getFont","url":"classes/PedalMarking.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3645,"kind":2048,"name":"resetFont","url":"classes/PedalMarking.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3646,"kind":262144,"name":"fontInfo","url":"classes/PedalMarking.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3647,"kind":2048,"name":"setFontSize","url":"classes/PedalMarking.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3648,"kind":2048,"name":"getFontSize","url":"classes/PedalMarking.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3649,"kind":262144,"name":"fontSize","url":"classes/PedalMarking.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3650,"kind":262144,"name":"fontSizeInPoints","url":"classes/PedalMarking.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3651,"kind":262144,"name":"fontSizeInPixels","url":"classes/PedalMarking.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3652,"kind":262144,"name":"fontStyle","url":"classes/PedalMarking.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3653,"kind":262144,"name":"fontWeight","url":"classes/PedalMarking.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"PedalMarking"},{"id":3654,"kind":256,"name":"RegistryUpdate","url":"interfaces/RegistryUpdate.html","classes":"tsd-kind-interface"},{"id":3655,"kind":1024,"name":"id","url":"interfaces/RegistryUpdate.html#id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"RegistryUpdate"},{"id":3656,"kind":1024,"name":"name","url":"interfaces/RegistryUpdate.html#name","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"RegistryUpdate"},{"id":3657,"kind":1024,"name":"value","url":"interfaces/RegistryUpdate.html#value","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"RegistryUpdate"},{"id":3658,"kind":1024,"name":"oldValue","url":"interfaces/RegistryUpdate.html#oldValue","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"RegistryUpdate"},{"id":3659,"kind":128,"name":"Registry","url":"classes/Registry.html","classes":"tsd-kind-class"},{"id":3660,"kind":2048,"name":"getDefaultRegistry","url":"classes/Registry.html#getDefaultRegistry","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Registry"},{"id":3661,"kind":2048,"name":"enableDefaultRegistry","url":"classes/Registry.html#enableDefaultRegistry","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Registry"},{"id":3662,"kind":2048,"name":"disableDefaultRegistry","url":"classes/Registry.html#disableDefaultRegistry","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Registry"},{"id":3663,"kind":512,"name":"constructor","url":"classes/Registry.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Registry"},{"id":3664,"kind":2048,"name":"clear","url":"classes/Registry.html#clear","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Registry"},{"id":3665,"kind":2048,"name":"setIndexValue","url":"classes/Registry.html#setIndexValue","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Registry"},{"id":3666,"kind":2048,"name":"updateIndex","url":"classes/Registry.html#updateIndex","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Registry"},{"id":3667,"kind":2048,"name":"register","url":"classes/Registry.html#register","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Registry"},{"id":3668,"kind":2048,"name":"getElementById","url":"classes/Registry.html#getElementById","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Registry"},{"id":3669,"kind":2048,"name":"getElementsByAttribute","url":"classes/Registry.html#getElementsByAttribute","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Registry"},{"id":3670,"kind":2048,"name":"getElementsByType","url":"classes/Registry.html#getElementsByType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Registry"},{"id":3671,"kind":2048,"name":"getElementsByClass","url":"classes/Registry.html#getElementsByClass","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Registry"},{"id":3672,"kind":2048,"name":"onUpdate","url":"classes/Registry.html#onUpdate","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Registry"},{"id":3673,"kind":64,"name":"drawDot","url":"modules.html#drawDot","classes":"tsd-kind-function"},{"id":3674,"kind":256,"name":"TextMeasure","url":"interfaces/TextMeasure.html","classes":"tsd-kind-interface"},{"id":3675,"kind":1024,"name":"x","url":"interfaces/TextMeasure.html#x","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextMeasure"},{"id":3676,"kind":1024,"name":"y","url":"interfaces/TextMeasure.html#y","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextMeasure"},{"id":3677,"kind":1024,"name":"width","url":"interfaces/TextMeasure.html#width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextMeasure"},{"id":3678,"kind":1024,"name":"height","url":"interfaces/TextMeasure.html#height","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextMeasure"},{"id":3679,"kind":256,"name":"GroupAttributes","url":"interfaces/GroupAttributes.html","classes":"tsd-kind-interface"},{"id":3680,"kind":1024,"name":"pointerBBox","url":"interfaces/GroupAttributes.html#pointerBBox","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"GroupAttributes"},{"id":3681,"kind":128,"name":"RenderContext","url":"classes/RenderContext.html","classes":"tsd-kind-class"},{"id":3682,"kind":262144,"name":"CATEGORY","url":"classes/RenderContext.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"RenderContext"},{"id":3683,"kind":512,"name":"constructor","url":"classes/RenderContext.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"RenderContext"},{"id":3684,"kind":2048,"name":"clear","url":"classes/RenderContext.html#clear","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3685,"kind":2048,"name":"setFillStyle","url":"classes/RenderContext.html#setFillStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3686,"kind":2048,"name":"setBackgroundFillStyle","url":"classes/RenderContext.html#setBackgroundFillStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3687,"kind":2048,"name":"setStrokeStyle","url":"classes/RenderContext.html#setStrokeStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3688,"kind":2048,"name":"setShadowColor","url":"classes/RenderContext.html#setShadowColor","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3689,"kind":2048,"name":"setShadowBlur","url":"classes/RenderContext.html#setShadowBlur","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3690,"kind":2048,"name":"setLineWidth","url":"classes/RenderContext.html#setLineWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3691,"kind":2048,"name":"setLineCap","url":"classes/RenderContext.html#setLineCap","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3692,"kind":2048,"name":"setLineDash","url":"classes/RenderContext.html#setLineDash","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3693,"kind":2048,"name":"scale","url":"classes/RenderContext.html#scale","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3694,"kind":2048,"name":"rect","url":"classes/RenderContext.html#rect","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3695,"kind":2048,"name":"resize","url":"classes/RenderContext.html#resize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3696,"kind":2048,"name":"fillRect","url":"classes/RenderContext.html#fillRect","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3697,"kind":2048,"name":"clearRect","url":"classes/RenderContext.html#clearRect","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3698,"kind":2048,"name":"beginPath","url":"classes/RenderContext.html#beginPath","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3699,"kind":2048,"name":"moveTo","url":"classes/RenderContext.html#moveTo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3700,"kind":2048,"name":"lineTo","url":"classes/RenderContext.html#lineTo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3701,"kind":2048,"name":"bezierCurveTo","url":"classes/RenderContext.html#bezierCurveTo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3702,"kind":2048,"name":"quadraticCurveTo","url":"classes/RenderContext.html#quadraticCurveTo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3703,"kind":2048,"name":"arc","url":"classes/RenderContext.html#arc","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3704,"kind":2048,"name":"fill","url":"classes/RenderContext.html#fill","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3705,"kind":2048,"name":"stroke","url":"classes/RenderContext.html#stroke","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3706,"kind":2048,"name":"closePath","url":"classes/RenderContext.html#closePath","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3707,"kind":2048,"name":"fillText","url":"classes/RenderContext.html#fillText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3708,"kind":2048,"name":"save","url":"classes/RenderContext.html#save","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3709,"kind":2048,"name":"restore","url":"classes/RenderContext.html#restore","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3710,"kind":2048,"name":"openGroup","url":"classes/RenderContext.html#openGroup","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3711,"kind":2048,"name":"closeGroup","url":"classes/RenderContext.html#closeGroup","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3712,"kind":2048,"name":"add","url":"classes/RenderContext.html#add","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3713,"kind":2048,"name":"measureText","url":"classes/RenderContext.html#measureText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3714,"kind":262144,"name":"fillStyle","url":"classes/RenderContext.html#fillStyle","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"RenderContext"},{"id":3715,"kind":262144,"name":"strokeStyle","url":"classes/RenderContext.html#strokeStyle","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"RenderContext"},{"id":3716,"kind":2048,"name":"setFont","url":"classes/RenderContext.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3717,"kind":2048,"name":"getFont","url":"classes/RenderContext.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3718,"kind":262144,"name":"font","url":"classes/RenderContext.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"RenderContext"},{"id":3719,"kind":2048,"name":"setRawFont","url":"classes/RenderContext.html#setRawFont","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RenderContext"},{"id":3720,"kind":4194304,"name":"ContextBuilder","url":"modules.html#ContextBuilder","classes":"tsd-kind-type-alias"},{"id":3721,"kind":8,"name":"RendererBackends","url":"enums/RendererBackends.html","classes":"tsd-kind-enum"},{"id":3722,"kind":16,"name":"CANVAS","url":"enums/RendererBackends.html#CANVAS","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"RendererBackends"},{"id":3723,"kind":16,"name":"SVG","url":"enums/RendererBackends.html#SVG","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"RendererBackends"},{"id":3724,"kind":8,"name":"RendererLineEndType","url":"enums/RendererLineEndType.html","classes":"tsd-kind-enum"},{"id":3725,"kind":16,"name":"NONE","url":"enums/RendererLineEndType.html#NONE","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"RendererLineEndType"},{"id":3726,"kind":16,"name":"UP","url":"enums/RendererLineEndType.html#UP","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"RendererLineEndType"},{"id":3727,"kind":16,"name":"DOWN","url":"enums/RendererLineEndType.html#DOWN","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"RendererLineEndType"},{"id":3728,"kind":128,"name":"Renderer","url":"classes/Renderer.html","classes":"tsd-kind-class"},{"id":3729,"kind":1024,"name":"Backends","url":"classes/Renderer.html#Backends","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Renderer"},{"id":3730,"kind":1024,"name":"LineEndType","url":"classes/Renderer.html#LineEndType","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Renderer"},{"id":3731,"kind":1024,"name":"lastContext","url":"classes/Renderer.html#lastContext","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Renderer"},{"id":3732,"kind":2048,"name":"buildContext","url":"classes/Renderer.html#buildContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Renderer"},{"id":3733,"kind":2048,"name":"getCanvasContext","url":"classes/Renderer.html#getCanvasContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Renderer"},{"id":3734,"kind":2048,"name":"getSVGContext","url":"classes/Renderer.html#getSVGContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Renderer"},{"id":3735,"kind":2048,"name":"drawDashedLine","url":"classes/Renderer.html#drawDashedLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Renderer"},{"id":3736,"kind":512,"name":"constructor","url":"classes/Renderer.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Renderer"},{"id":3737,"kind":2048,"name":"resize","url":"classes/Renderer.html#resize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Renderer"},{"id":3738,"kind":2048,"name":"getContext","url":"classes/Renderer.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Renderer"},{"id":3739,"kind":128,"name":"RepeatNote","url":"classes/RepeatNote.html","classes":"tsd-kind-class"},{"id":3740,"kind":262144,"name":"CATEGORY","url":"classes/RepeatNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"RepeatNote"},{"id":3741,"kind":2048,"name":"plotMetrics","url":"classes/RepeatNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"RepeatNote"},{"id":3742,"kind":1024,"name":"TEXT_FONT","url":"classes/RepeatNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"RepeatNote"},{"id":3743,"kind":512,"name":"constructor","url":"classes/RepeatNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"RepeatNote"},{"id":3744,"kind":2048,"name":"setGlyph","url":"classes/RepeatNote.html#setGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3745,"kind":2048,"name":"getBoundingBox","url":"classes/RepeatNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3746,"kind":2048,"name":"preFormat","url":"classes/RepeatNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3747,"kind":2048,"name":"drawModifiers","url":"classes/RepeatNote.html#drawModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3748,"kind":2048,"name":"draw","url":"classes/RepeatNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3749,"kind":1024,"name":"glyph","url":"classes/RepeatNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3750,"kind":1024,"name":"keys","url":"classes/RepeatNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3751,"kind":1024,"name":"keyProps","url":"classes/RepeatNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3752,"kind":1024,"name":"render_options","url":"classes/RepeatNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3753,"kind":65536,"name":"__type","url":"classes/RepeatNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"RepeatNote"},{"id":3754,"kind":1024,"name":"draw_stem_through_stave","url":"classes/RepeatNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3755,"kind":1024,"name":"draw","url":"classes/RepeatNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3756,"kind":1024,"name":"draw_dots","url":"classes/RepeatNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3757,"kind":1024,"name":"draw_stem","url":"classes/RepeatNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3758,"kind":1024,"name":"y_shift","url":"classes/RepeatNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3759,"kind":1024,"name":"extend_left","url":"classes/RepeatNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3760,"kind":1024,"name":"extend_right","url":"classes/RepeatNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3761,"kind":1024,"name":"glyph_font_scale","url":"classes/RepeatNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3762,"kind":1024,"name":"annotation_spacing","url":"classes/RepeatNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3763,"kind":1024,"name":"glyph_font_size","url":"classes/RepeatNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3764,"kind":1024,"name":"scale","url":"classes/RepeatNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3765,"kind":1024,"name":"font","url":"classes/RepeatNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3766,"kind":1024,"name":"stroke_px","url":"classes/RepeatNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RepeatNote.__type"},{"id":3767,"kind":2048,"name":"getPlayNote","url":"classes/RepeatNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3768,"kind":2048,"name":"setPlayNote","url":"classes/RepeatNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3769,"kind":2048,"name":"isRest","url":"classes/RepeatNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3770,"kind":2048,"name":"addStroke","url":"classes/RepeatNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3771,"kind":2048,"name":"getStave","url":"classes/RepeatNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3772,"kind":2048,"name":"checkStave","url":"classes/RepeatNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3773,"kind":2048,"name":"setStave","url":"classes/RepeatNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3774,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/RepeatNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3775,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/RepeatNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3776,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/RepeatNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3777,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/RepeatNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3778,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/RepeatNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3779,"kind":2048,"name":"getLineNumber","url":"classes/RepeatNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3780,"kind":2048,"name":"getLineForRest","url":"classes/RepeatNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3781,"kind":2048,"name":"getGlyph","url":"classes/RepeatNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3782,"kind":2048,"name":"getGlyphWidth","url":"classes/RepeatNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3783,"kind":2048,"name":"setYs","url":"classes/RepeatNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3784,"kind":2048,"name":"getYs","url":"classes/RepeatNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3785,"kind":2048,"name":"getYForTopText","url":"classes/RepeatNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3786,"kind":2048,"name":"getVoice","url":"classes/RepeatNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3787,"kind":2048,"name":"setVoice","url":"classes/RepeatNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3788,"kind":2048,"name":"getTickContext","url":"classes/RepeatNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3789,"kind":2048,"name":"setTickContext","url":"classes/RepeatNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3790,"kind":2048,"name":"getDuration","url":"classes/RepeatNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3791,"kind":2048,"name":"isDotted","url":"classes/RepeatNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3792,"kind":2048,"name":"hasStem","url":"classes/RepeatNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3793,"kind":2048,"name":"getNoteType","url":"classes/RepeatNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3794,"kind":2048,"name":"getBeam","url":"classes/RepeatNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3795,"kind":2048,"name":"checkBeam","url":"classes/RepeatNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3796,"kind":2048,"name":"hasBeam","url":"classes/RepeatNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3797,"kind":2048,"name":"setBeam","url":"classes/RepeatNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3798,"kind":2048,"name":"addModifier","url":"classes/RepeatNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3799,"kind":2048,"name":"getModifiersByType","url":"classes/RepeatNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3800,"kind":2048,"name":"getModifierStartXY","url":"classes/RepeatNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3801,"kind":2048,"name":"getRightParenthesisPx","url":"classes/RepeatNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3802,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/RepeatNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3803,"kind":2048,"name":"getFirstDotPx","url":"classes/RepeatNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3804,"kind":2048,"name":"getMetrics","url":"classes/RepeatNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3805,"kind":2048,"name":"getAbsoluteX","url":"classes/RepeatNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3806,"kind":2048,"name":"getStemDirection","url":"classes/RepeatNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3807,"kind":2048,"name":"getStemExtents","url":"classes/RepeatNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3808,"kind":2048,"name":"getTieRightX","url":"classes/RepeatNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3809,"kind":2048,"name":"getTieLeftX","url":"classes/RepeatNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3810,"kind":2048,"name":"getKeys","url":"classes/RepeatNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3811,"kind":2048,"name":"getKeyProps","url":"classes/RepeatNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3812,"kind":2048,"name":"reset","url":"classes/RepeatNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3813,"kind":2048,"name":"getTicks","url":"classes/RepeatNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3814,"kind":2048,"name":"setIgnoreTicks","url":"classes/RepeatNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3815,"kind":2048,"name":"setWidth","url":"classes/RepeatNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3816,"kind":2048,"name":"getWidth","url":"classes/RepeatNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3817,"kind":2048,"name":"setXShift","url":"classes/RepeatNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3818,"kind":2048,"name":"getXShift","url":"classes/RepeatNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3819,"kind":2048,"name":"getX","url":"classes/RepeatNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3820,"kind":2048,"name":"getFormatterMetrics","url":"classes/RepeatNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3821,"kind":2048,"name":"getCenterXShift","url":"classes/RepeatNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3822,"kind":2048,"name":"setCenterXShift","url":"classes/RepeatNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3823,"kind":2048,"name":"isCenterAligned","url":"classes/RepeatNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3824,"kind":2048,"name":"setCenterAlignment","url":"classes/RepeatNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3825,"kind":2048,"name":"getTuplet","url":"classes/RepeatNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3826,"kind":2048,"name":"getTupletStack","url":"classes/RepeatNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3827,"kind":2048,"name":"resetTuplet","url":"classes/RepeatNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3828,"kind":2048,"name":"setTuplet","url":"classes/RepeatNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3829,"kind":2048,"name":"addToModifierContext","url":"classes/RepeatNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3830,"kind":2048,"name":"getModifiers","url":"classes/RepeatNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3831,"kind":2048,"name":"checkTickContext","url":"classes/RepeatNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3832,"kind":262144,"name":"preFormatted","url":"classes/RepeatNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3833,"kind":2048,"name":"postFormat","url":"classes/RepeatNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3834,"kind":262144,"name":"postFormatted","url":"classes/RepeatNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3835,"kind":2048,"name":"getIntrinsicTicks","url":"classes/RepeatNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3836,"kind":2048,"name":"setIntrinsicTicks","url":"classes/RepeatNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3837,"kind":2048,"name":"getTickMultiplier","url":"classes/RepeatNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3838,"kind":2048,"name":"applyTickMultiplier","url":"classes/RepeatNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3839,"kind":2048,"name":"setDuration","url":"classes/RepeatNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3840,"kind":2048,"name":"setModifierContext","url":"classes/RepeatNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3841,"kind":2048,"name":"getModifierContext","url":"classes/RepeatNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3842,"kind":2048,"name":"checkModifierContext","url":"classes/RepeatNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3843,"kind":2048,"name":"addChildElement","url":"classes/RepeatNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3844,"kind":2048,"name":"getCategory","url":"classes/RepeatNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3845,"kind":2048,"name":"setStyle","url":"classes/RepeatNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3846,"kind":2048,"name":"setGroupStyle","url":"classes/RepeatNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3847,"kind":2048,"name":"getStyle","url":"classes/RepeatNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3848,"kind":2048,"name":"applyStyle","url":"classes/RepeatNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3849,"kind":2048,"name":"restoreStyle","url":"classes/RepeatNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3850,"kind":2048,"name":"drawWithStyle","url":"classes/RepeatNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3851,"kind":2048,"name":"hasClass","url":"classes/RepeatNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3852,"kind":2048,"name":"addClass","url":"classes/RepeatNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3853,"kind":2048,"name":"removeClass","url":"classes/RepeatNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3854,"kind":2048,"name":"onRegister","url":"classes/RepeatNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3855,"kind":2048,"name":"isRendered","url":"classes/RepeatNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3856,"kind":2048,"name":"setRendered","url":"classes/RepeatNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3857,"kind":2048,"name":"getAttributes","url":"classes/RepeatNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3858,"kind":2048,"name":"getAttribute","url":"classes/RepeatNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3859,"kind":2048,"name":"getSVGElement","url":"classes/RepeatNote.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3860,"kind":2048,"name":"setAttribute","url":"classes/RepeatNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3861,"kind":2048,"name":"getContext","url":"classes/RepeatNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3862,"kind":2048,"name":"setContext","url":"classes/RepeatNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3863,"kind":2048,"name":"checkContext","url":"classes/RepeatNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3864,"kind":262144,"name":"font","url":"classes/RepeatNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3865,"kind":2048,"name":"setFont","url":"classes/RepeatNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3866,"kind":2048,"name":"getFont","url":"classes/RepeatNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3867,"kind":2048,"name":"resetFont","url":"classes/RepeatNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3868,"kind":262144,"name":"fontInfo","url":"classes/RepeatNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3869,"kind":2048,"name":"setFontSize","url":"classes/RepeatNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3870,"kind":2048,"name":"getFontSize","url":"classes/RepeatNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3871,"kind":262144,"name":"fontSize","url":"classes/RepeatNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3872,"kind":262144,"name":"fontSizeInPoints","url":"classes/RepeatNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3873,"kind":262144,"name":"fontSizeInPixels","url":"classes/RepeatNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3874,"kind":262144,"name":"fontStyle","url":"classes/RepeatNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3875,"kind":262144,"name":"fontWeight","url":"classes/RepeatNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"RepeatNote"},{"id":3876,"kind":256,"name":"StaveLineConfig","url":"interfaces/StaveLineConfig.html","classes":"tsd-kind-interface"},{"id":3877,"kind":1024,"name":"visible","url":"interfaces/StaveLineConfig.html#visible","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveLineConfig"},{"id":3878,"kind":256,"name":"StaveOptions","url":"interfaces/StaveOptions.html","classes":"tsd-kind-interface"},{"id":3879,"kind":1024,"name":"bottom_text_position","url":"interfaces/StaveOptions.html#bottom_text_position","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveOptions"},{"id":3880,"kind":1024,"name":"line_config","url":"interfaces/StaveOptions.html#line_config","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveOptions"},{"id":3881,"kind":1024,"name":"space_below_staff_ln","url":"interfaces/StaveOptions.html#space_below_staff_ln","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveOptions"},{"id":3882,"kind":1024,"name":"space_above_staff_ln","url":"interfaces/StaveOptions.html#space_above_staff_ln","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveOptions"},{"id":3883,"kind":1024,"name":"vertical_bar_width","url":"interfaces/StaveOptions.html#vertical_bar_width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveOptions"},{"id":3884,"kind":1024,"name":"fill_style","url":"interfaces/StaveOptions.html#fill_style","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveOptions"},{"id":3885,"kind":1024,"name":"left_bar","url":"interfaces/StaveOptions.html#left_bar","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveOptions"},{"id":3886,"kind":1024,"name":"right_bar","url":"interfaces/StaveOptions.html#right_bar","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveOptions"},{"id":3887,"kind":1024,"name":"spacing_between_lines_px","url":"interfaces/StaveOptions.html#spacing_between_lines_px","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveOptions"},{"id":3888,"kind":1024,"name":"top_text_position","url":"interfaces/StaveOptions.html#top_text_position","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveOptions"},{"id":3889,"kind":1024,"name":"num_lines","url":"interfaces/StaveOptions.html#num_lines","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveOptions"},{"id":3890,"kind":128,"name":"Stave","url":"classes/Stave.html","classes":"tsd-kind-class"},{"id":3891,"kind":262144,"name":"CATEGORY","url":"classes/Stave.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Stave"},{"id":3892,"kind":1024,"name":"TEXT_FONT","url":"classes/Stave.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Stave"},{"id":3893,"kind":262144,"name":"defaultPadding","url":"classes/Stave.html#defaultPadding","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Stave"},{"id":3894,"kind":262144,"name":"rightPadding","url":"classes/Stave.html#rightPadding","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Stave"},{"id":3895,"kind":2048,"name":"formatBegModifiers","url":"classes/Stave.html#formatBegModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Stave"},{"id":3896,"kind":512,"name":"constructor","url":"classes/Stave.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Stave"},{"id":3897,"kind":1024,"name":"options","url":"classes/Stave.html#options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Stave"},{"id":3898,"kind":2048,"name":"setDefaultLedgerLineStyle","url":"classes/Stave.html#setDefaultLedgerLineStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3899,"kind":2048,"name":"getDefaultLedgerLineStyle","url":"classes/Stave.html#getDefaultLedgerLineStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3900,"kind":2048,"name":"space","url":"classes/Stave.html#space","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3901,"kind":2048,"name":"resetLines","url":"classes/Stave.html#resetLines","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3902,"kind":2048,"name":"setNoteStartX","url":"classes/Stave.html#setNoteStartX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3903,"kind":2048,"name":"getNoteStartX","url":"classes/Stave.html#getNoteStartX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3904,"kind":2048,"name":"getNoteEndX","url":"classes/Stave.html#getNoteEndX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3905,"kind":2048,"name":"getTieStartX","url":"classes/Stave.html#getTieStartX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3906,"kind":2048,"name":"getTieEndX","url":"classes/Stave.html#getTieEndX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3907,"kind":2048,"name":"getX","url":"classes/Stave.html#getX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3908,"kind":2048,"name":"getNumLines","url":"classes/Stave.html#getNumLines","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3909,"kind":2048,"name":"setNumLines","url":"classes/Stave.html#setNumLines","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3910,"kind":2048,"name":"setY","url":"classes/Stave.html#setY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3911,"kind":2048,"name":"getY","url":"classes/Stave.html#getY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3912,"kind":2048,"name":"getTopLineTopY","url":"classes/Stave.html#getTopLineTopY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3913,"kind":2048,"name":"getBottomLineBottomY","url":"classes/Stave.html#getBottomLineBottomY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3914,"kind":2048,"name":"setX","url":"classes/Stave.html#setX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3915,"kind":2048,"name":"setWidth","url":"classes/Stave.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3916,"kind":2048,"name":"getWidth","url":"classes/Stave.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3917,"kind":2048,"name":"getStyle","url":"classes/Stave.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Stave"},{"id":3918,"kind":2048,"name":"setMeasure","url":"classes/Stave.html#setMeasure","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3919,"kind":2048,"name":"getMeasure","url":"classes/Stave.html#getMeasure","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3920,"kind":2048,"name":"getModifierXShift","url":"classes/Stave.html#getModifierXShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3921,"kind":2048,"name":"setRepetitionType","url":"classes/Stave.html#setRepetitionType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3922,"kind":2048,"name":"setVoltaType","url":"classes/Stave.html#setVoltaType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3923,"kind":2048,"name":"setSection","url":"classes/Stave.html#setSection","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3924,"kind":2048,"name":"setTempo","url":"classes/Stave.html#setTempo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3925,"kind":2048,"name":"setText","url":"classes/Stave.html#setText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3926,"kind":2048,"name":"getHeight","url":"classes/Stave.html#getHeight","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3927,"kind":2048,"name":"getSpacingBetweenLines","url":"classes/Stave.html#getSpacingBetweenLines","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3928,"kind":2048,"name":"getBoundingBox","url":"classes/Stave.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Stave"},{"id":3929,"kind":2048,"name":"getBottomY","url":"classes/Stave.html#getBottomY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3930,"kind":2048,"name":"getBottomLineY","url":"classes/Stave.html#getBottomLineY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3931,"kind":2048,"name":"getYForLine","url":"classes/Stave.html#getYForLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3932,"kind":2048,"name":"getLineForY","url":"classes/Stave.html#getLineForY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3933,"kind":2048,"name":"getYForTopText","url":"classes/Stave.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3934,"kind":2048,"name":"getYForBottomText","url":"classes/Stave.html#getYForBottomText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3935,"kind":2048,"name":"getYForNote","url":"classes/Stave.html#getYForNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3936,"kind":2048,"name":"getYForGlyphs","url":"classes/Stave.html#getYForGlyphs","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3937,"kind":2048,"name":"addModifier","url":"classes/Stave.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3938,"kind":2048,"name":"addEndModifier","url":"classes/Stave.html#addEndModifier","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3939,"kind":2048,"name":"setBegBarType","url":"classes/Stave.html#setBegBarType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3940,"kind":2048,"name":"setEndBarType","url":"classes/Stave.html#setEndBarType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3941,"kind":2048,"name":"setClef","url":"classes/Stave.html#setClef","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3942,"kind":2048,"name":"getClef","url":"classes/Stave.html#getClef","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3943,"kind":2048,"name":"setEndClef","url":"classes/Stave.html#setEndClef","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3944,"kind":2048,"name":"getEndClef","url":"classes/Stave.html#getEndClef","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3945,"kind":2048,"name":"setKeySignature","url":"classes/Stave.html#setKeySignature","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3946,"kind":2048,"name":"setEndKeySignature","url":"classes/Stave.html#setEndKeySignature","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3947,"kind":2048,"name":"setTimeSignature","url":"classes/Stave.html#setTimeSignature","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3948,"kind":2048,"name":"setEndTimeSignature","url":"classes/Stave.html#setEndTimeSignature","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3949,"kind":2048,"name":"addKeySignature","url":"classes/Stave.html#addKeySignature","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3950,"kind":2048,"name":"addClef","url":"classes/Stave.html#addClef","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3951,"kind":2048,"name":"addEndClef","url":"classes/Stave.html#addEndClef","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3952,"kind":2048,"name":"addTimeSignature","url":"classes/Stave.html#addTimeSignature","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3953,"kind":2048,"name":"addEndTimeSignature","url":"classes/Stave.html#addEndTimeSignature","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3954,"kind":2048,"name":"addTrebleGlyph","url":"classes/Stave.html#addTrebleGlyph","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3955,"kind":2048,"name":"getModifiers","url":"classes/Stave.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3956,"kind":2048,"name":"sortByCategory","url":"classes/Stave.html#sortByCategory","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3957,"kind":2048,"name":"format","url":"classes/Stave.html#format","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3958,"kind":2048,"name":"draw","url":"classes/Stave.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Stave"},{"id":3959,"kind":2048,"name":"getVerticalBarWidth","url":"classes/Stave.html#getVerticalBarWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3960,"kind":2048,"name":"getConfigForLines","url":"classes/Stave.html#getConfigForLines","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3961,"kind":2048,"name":"setConfigForLine","url":"classes/Stave.html#setConfigForLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3962,"kind":2048,"name":"setConfigForLines","url":"classes/Stave.html#setConfigForLines","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stave"},{"id":3963,"kind":2048,"name":"addChildElement","url":"classes/Stave.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3964,"kind":2048,"name":"getCategory","url":"classes/Stave.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3965,"kind":2048,"name":"setStyle","url":"classes/Stave.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3966,"kind":2048,"name":"setGroupStyle","url":"classes/Stave.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3967,"kind":2048,"name":"applyStyle","url":"classes/Stave.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3968,"kind":2048,"name":"restoreStyle","url":"classes/Stave.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3969,"kind":2048,"name":"drawWithStyle","url":"classes/Stave.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3970,"kind":2048,"name":"hasClass","url":"classes/Stave.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3971,"kind":2048,"name":"addClass","url":"classes/Stave.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3972,"kind":2048,"name":"removeClass","url":"classes/Stave.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3973,"kind":2048,"name":"onRegister","url":"classes/Stave.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3974,"kind":2048,"name":"isRendered","url":"classes/Stave.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3975,"kind":2048,"name":"setRendered","url":"classes/Stave.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3976,"kind":2048,"name":"getAttributes","url":"classes/Stave.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3977,"kind":2048,"name":"getAttribute","url":"classes/Stave.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3978,"kind":2048,"name":"getSVGElement","url":"classes/Stave.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3979,"kind":2048,"name":"setAttribute","url":"classes/Stave.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3980,"kind":2048,"name":"getContext","url":"classes/Stave.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3981,"kind":2048,"name":"setContext","url":"classes/Stave.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3982,"kind":2048,"name":"checkContext","url":"classes/Stave.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3983,"kind":262144,"name":"font","url":"classes/Stave.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3984,"kind":2048,"name":"setFont","url":"classes/Stave.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3985,"kind":2048,"name":"getFont","url":"classes/Stave.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3986,"kind":2048,"name":"resetFont","url":"classes/Stave.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3987,"kind":262144,"name":"fontInfo","url":"classes/Stave.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3988,"kind":2048,"name":"setFontSize","url":"classes/Stave.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3989,"kind":2048,"name":"getFontSize","url":"classes/Stave.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3990,"kind":262144,"name":"fontSize","url":"classes/Stave.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3991,"kind":262144,"name":"fontSizeInPoints","url":"classes/Stave.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3992,"kind":262144,"name":"fontSizeInPixels","url":"classes/Stave.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3993,"kind":262144,"name":"fontStyle","url":"classes/Stave.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3994,"kind":262144,"name":"fontWeight","url":"classes/Stave.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stave"},{"id":3995,"kind":8,"name":"BarlineType","url":"enums/BarlineType.html","classes":"tsd-kind-enum"},{"id":3996,"kind":16,"name":"SINGLE","url":"enums/BarlineType.html#SINGLE","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"BarlineType"},{"id":3997,"kind":16,"name":"DOUBLE","url":"enums/BarlineType.html#DOUBLE","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"BarlineType"},{"id":3998,"kind":16,"name":"END","url":"enums/BarlineType.html#END","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"BarlineType"},{"id":3999,"kind":16,"name":"REPEAT_BEGIN","url":"enums/BarlineType.html#REPEAT_BEGIN","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"BarlineType"},{"id":4000,"kind":16,"name":"REPEAT_END","url":"enums/BarlineType.html#REPEAT_END","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"BarlineType"},{"id":4001,"kind":16,"name":"REPEAT_BOTH","url":"enums/BarlineType.html#REPEAT_BOTH","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"BarlineType"},{"id":4002,"kind":16,"name":"NONE","url":"enums/BarlineType.html#NONE","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"BarlineType"},{"id":4003,"kind":128,"name":"Barline","url":"classes/Barline.html","classes":"tsd-kind-class"},{"id":4004,"kind":262144,"name":"CATEGORY","url":"classes/Barline.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Barline"},{"id":4005,"kind":262144,"name":"type","url":"classes/Barline.html#type","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Barline"},{"id":4006,"kind":262144,"name":"typeString","url":"classes/Barline.html#typeString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Barline"},{"id":4007,"kind":262144,"name":"Position","url":"classes/Barline.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Barline"},{"id":4008,"kind":1024,"name":"TEXT_FONT","url":"classes/Barline.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Barline"},{"id":4009,"kind":512,"name":"constructor","url":"classes/Barline.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Barline"},{"id":4010,"kind":2048,"name":"getType","url":"classes/Barline.html#getType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Barline"},{"id":4011,"kind":2048,"name":"setType","url":"classes/Barline.html#setType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Barline"},{"id":4012,"kind":2048,"name":"draw","url":"classes/Barline.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Barline"},{"id":4013,"kind":2048,"name":"drawVerticalBar","url":"classes/Barline.html#drawVerticalBar","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Barline"},{"id":4014,"kind":2048,"name":"drawVerticalEndBar","url":"classes/Barline.html#drawVerticalEndBar","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Barline"},{"id":4015,"kind":2048,"name":"drawRepeatBar","url":"classes/Barline.html#drawRepeatBar","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Barline"},{"id":4016,"kind":2048,"name":"getPosition","url":"classes/Barline.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4017,"kind":2048,"name":"setPosition","url":"classes/Barline.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4018,"kind":2048,"name":"getStave","url":"classes/Barline.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4019,"kind":2048,"name":"checkStave","url":"classes/Barline.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4020,"kind":2048,"name":"setStave","url":"classes/Barline.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4021,"kind":2048,"name":"getWidth","url":"classes/Barline.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4022,"kind":2048,"name":"setWidth","url":"classes/Barline.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4023,"kind":2048,"name":"getX","url":"classes/Barline.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4024,"kind":2048,"name":"setX","url":"classes/Barline.html#setX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4025,"kind":2048,"name":"placeGlyphOnLine","url":"classes/Barline.html#placeGlyphOnLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4026,"kind":2048,"name":"getPadding","url":"classes/Barline.html#getPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4027,"kind":2048,"name":"setPadding","url":"classes/Barline.html#setPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4028,"kind":2048,"name":"setLayoutMetrics","url":"classes/Barline.html#setLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4029,"kind":2048,"name":"getLayoutMetrics","url":"classes/Barline.html#getLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4030,"kind":2048,"name":"addChildElement","url":"classes/Barline.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4031,"kind":2048,"name":"getCategory","url":"classes/Barline.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4032,"kind":2048,"name":"setStyle","url":"classes/Barline.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4033,"kind":2048,"name":"setGroupStyle","url":"classes/Barline.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4034,"kind":2048,"name":"getStyle","url":"classes/Barline.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4035,"kind":2048,"name":"applyStyle","url":"classes/Barline.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4036,"kind":2048,"name":"restoreStyle","url":"classes/Barline.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4037,"kind":2048,"name":"drawWithStyle","url":"classes/Barline.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4038,"kind":2048,"name":"hasClass","url":"classes/Barline.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4039,"kind":2048,"name":"addClass","url":"classes/Barline.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4040,"kind":2048,"name":"removeClass","url":"classes/Barline.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4041,"kind":2048,"name":"onRegister","url":"classes/Barline.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4042,"kind":2048,"name":"isRendered","url":"classes/Barline.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4043,"kind":2048,"name":"setRendered","url":"classes/Barline.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4044,"kind":2048,"name":"getAttributes","url":"classes/Barline.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4045,"kind":2048,"name":"getAttribute","url":"classes/Barline.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4046,"kind":2048,"name":"getSVGElement","url":"classes/Barline.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4047,"kind":2048,"name":"setAttribute","url":"classes/Barline.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4048,"kind":2048,"name":"getBoundingBox","url":"classes/Barline.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4049,"kind":2048,"name":"getContext","url":"classes/Barline.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4050,"kind":2048,"name":"setContext","url":"classes/Barline.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4051,"kind":2048,"name":"checkContext","url":"classes/Barline.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4052,"kind":262144,"name":"font","url":"classes/Barline.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4053,"kind":2048,"name":"setFont","url":"classes/Barline.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4054,"kind":2048,"name":"getFont","url":"classes/Barline.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4055,"kind":2048,"name":"resetFont","url":"classes/Barline.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4056,"kind":262144,"name":"fontInfo","url":"classes/Barline.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4057,"kind":2048,"name":"setFontSize","url":"classes/Barline.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4058,"kind":2048,"name":"getFontSize","url":"classes/Barline.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4059,"kind":262144,"name":"fontSize","url":"classes/Barline.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4060,"kind":262144,"name":"fontSizeInPoints","url":"classes/Barline.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4061,"kind":262144,"name":"fontSizeInPixels","url":"classes/Barline.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4062,"kind":262144,"name":"fontStyle","url":"classes/Barline.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4063,"kind":262144,"name":"fontWeight","url":"classes/Barline.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Barline"},{"id":4064,"kind":4194304,"name":"StaveConnectorType","url":"modules.html#StaveConnectorType","classes":"tsd-kind-type-alias"},{"id":4065,"kind":128,"name":"StaveConnector","url":"classes/StaveConnector.html","classes":"tsd-kind-class"},{"id":4066,"kind":262144,"name":"CATEGORY","url":"classes/StaveConnector.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveConnector"},{"id":4067,"kind":1024,"name":"TEXT_FONT","url":"classes/StaveConnector.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveConnector"},{"id":4068,"kind":1024,"name":"type","url":"classes/StaveConnector.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"StaveConnector"},{"id":4069,"kind":1024,"name":"typeString","url":"classes/StaveConnector.html#typeString","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"StaveConnector"},{"id":4070,"kind":512,"name":"constructor","url":"classes/StaveConnector.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"StaveConnector"},{"id":4071,"kind":1024,"name":"top_stave","url":"classes/StaveConnector.html#top_stave","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StaveConnector"},{"id":4072,"kind":1024,"name":"bottom_stave","url":"classes/StaveConnector.html#bottom_stave","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StaveConnector"},{"id":4073,"kind":1024,"name":"thickness","url":"classes/StaveConnector.html#thickness","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StaveConnector"},{"id":4074,"kind":2048,"name":"setType","url":"classes/StaveConnector.html#setType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveConnector"},{"id":4075,"kind":2048,"name":"getType","url":"classes/StaveConnector.html#getType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveConnector"},{"id":4076,"kind":2048,"name":"setText","url":"classes/StaveConnector.html#setText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveConnector"},{"id":4077,"kind":2048,"name":"setXShift","url":"classes/StaveConnector.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveConnector"},{"id":4078,"kind":2048,"name":"getXShift","url":"classes/StaveConnector.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveConnector"},{"id":4079,"kind":2048,"name":"draw","url":"classes/StaveConnector.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveConnector"},{"id":4080,"kind":2048,"name":"addChildElement","url":"classes/StaveConnector.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4081,"kind":2048,"name":"getCategory","url":"classes/StaveConnector.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4082,"kind":2048,"name":"setStyle","url":"classes/StaveConnector.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4083,"kind":2048,"name":"setGroupStyle","url":"classes/StaveConnector.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4084,"kind":2048,"name":"getStyle","url":"classes/StaveConnector.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4085,"kind":2048,"name":"applyStyle","url":"classes/StaveConnector.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4086,"kind":2048,"name":"restoreStyle","url":"classes/StaveConnector.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4087,"kind":2048,"name":"drawWithStyle","url":"classes/StaveConnector.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4088,"kind":2048,"name":"hasClass","url":"classes/StaveConnector.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4089,"kind":2048,"name":"addClass","url":"classes/StaveConnector.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4090,"kind":2048,"name":"removeClass","url":"classes/StaveConnector.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4091,"kind":2048,"name":"onRegister","url":"classes/StaveConnector.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4092,"kind":2048,"name":"isRendered","url":"classes/StaveConnector.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4093,"kind":2048,"name":"setRendered","url":"classes/StaveConnector.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4094,"kind":2048,"name":"getAttributes","url":"classes/StaveConnector.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4095,"kind":2048,"name":"getAttribute","url":"classes/StaveConnector.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4096,"kind":2048,"name":"getSVGElement","url":"classes/StaveConnector.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4097,"kind":2048,"name":"setAttribute","url":"classes/StaveConnector.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4098,"kind":2048,"name":"getBoundingBox","url":"classes/StaveConnector.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4099,"kind":2048,"name":"getContext","url":"classes/StaveConnector.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4100,"kind":2048,"name":"setContext","url":"classes/StaveConnector.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4101,"kind":2048,"name":"checkContext","url":"classes/StaveConnector.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4102,"kind":262144,"name":"font","url":"classes/StaveConnector.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4103,"kind":2048,"name":"setFont","url":"classes/StaveConnector.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4104,"kind":2048,"name":"getFont","url":"classes/StaveConnector.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4105,"kind":2048,"name":"resetFont","url":"classes/StaveConnector.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4106,"kind":262144,"name":"fontInfo","url":"classes/StaveConnector.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4107,"kind":2048,"name":"setFontSize","url":"classes/StaveConnector.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4108,"kind":2048,"name":"getFontSize","url":"classes/StaveConnector.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4109,"kind":262144,"name":"fontSize","url":"classes/StaveConnector.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4110,"kind":262144,"name":"fontSizeInPoints","url":"classes/StaveConnector.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4111,"kind":262144,"name":"fontSizeInPixels","url":"classes/StaveConnector.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4112,"kind":262144,"name":"fontStyle","url":"classes/StaveConnector.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4113,"kind":262144,"name":"fontWeight","url":"classes/StaveConnector.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveConnector"},{"id":4114,"kind":256,"name":"StaveHairpinRenderOptions","url":"interfaces/StaveHairpinRenderOptions.html","classes":"tsd-kind-interface"},{"id":4115,"kind":1024,"name":"right_shift_ticks","url":"interfaces/StaveHairpinRenderOptions.html#right_shift_ticks","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveHairpinRenderOptions"},{"id":4116,"kind":1024,"name":"left_shift_ticks","url":"interfaces/StaveHairpinRenderOptions.html#left_shift_ticks","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveHairpinRenderOptions"},{"id":4117,"kind":1024,"name":"left_shift_px","url":"interfaces/StaveHairpinRenderOptions.html#left_shift_px","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveHairpinRenderOptions"},{"id":4118,"kind":1024,"name":"right_shift_px","url":"interfaces/StaveHairpinRenderOptions.html#right_shift_px","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveHairpinRenderOptions"},{"id":4119,"kind":1024,"name":"height","url":"interfaces/StaveHairpinRenderOptions.html#height","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveHairpinRenderOptions"},{"id":4120,"kind":1024,"name":"y_shift","url":"interfaces/StaveHairpinRenderOptions.html#y_shift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveHairpinRenderOptions"},{"id":4121,"kind":128,"name":"StaveHairpin","url":"classes/StaveHairpin.html","classes":"tsd-kind-class"},{"id":4122,"kind":262144,"name":"CATEGORY","url":"classes/StaveHairpin.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveHairpin"},{"id":4123,"kind":1024,"name":"type","url":"classes/StaveHairpin.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"StaveHairpin"},{"id":4124,"kind":65536,"name":"__type","url":"classes/StaveHairpin.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"StaveHairpin"},{"id":4125,"kind":1024,"name":"CRESC","url":"classes/StaveHairpin.html#__type.CRESC","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveHairpin.__type"},{"id":4126,"kind":1024,"name":"DECRESC","url":"classes/StaveHairpin.html#__type.DECRESC","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveHairpin.__type"},{"id":4127,"kind":2048,"name":"FormatByTicksAndDraw","url":"classes/StaveHairpin.html#FormatByTicksAndDraw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"StaveHairpin"},{"id":4128,"kind":1024,"name":"TEXT_FONT","url":"classes/StaveHairpin.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"StaveHairpin"},{"id":4129,"kind":512,"name":"constructor","url":"classes/StaveHairpin.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"StaveHairpin"},{"id":4130,"kind":1024,"name":"render_options","url":"classes/StaveHairpin.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StaveHairpin"},{"id":4131,"kind":2048,"name":"setPosition","url":"classes/StaveHairpin.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveHairpin"},{"id":4132,"kind":2048,"name":"setRenderOptions","url":"classes/StaveHairpin.html#setRenderOptions","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveHairpin"},{"id":4133,"kind":2048,"name":"setNotes","url":"classes/StaveHairpin.html#setNotes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveHairpin"},{"id":4134,"kind":2048,"name":"renderHairpin","url":"classes/StaveHairpin.html#renderHairpin","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveHairpin"},{"id":4135,"kind":2048,"name":"draw","url":"classes/StaveHairpin.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveHairpin"},{"id":4136,"kind":2048,"name":"addChildElement","url":"classes/StaveHairpin.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4137,"kind":2048,"name":"getCategory","url":"classes/StaveHairpin.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4138,"kind":2048,"name":"setStyle","url":"classes/StaveHairpin.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4139,"kind":2048,"name":"setGroupStyle","url":"classes/StaveHairpin.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4140,"kind":2048,"name":"getStyle","url":"classes/StaveHairpin.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4141,"kind":2048,"name":"applyStyle","url":"classes/StaveHairpin.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4142,"kind":2048,"name":"restoreStyle","url":"classes/StaveHairpin.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4143,"kind":2048,"name":"drawWithStyle","url":"classes/StaveHairpin.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4144,"kind":2048,"name":"hasClass","url":"classes/StaveHairpin.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4145,"kind":2048,"name":"addClass","url":"classes/StaveHairpin.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4146,"kind":2048,"name":"removeClass","url":"classes/StaveHairpin.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4147,"kind":2048,"name":"onRegister","url":"classes/StaveHairpin.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4148,"kind":2048,"name":"isRendered","url":"classes/StaveHairpin.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4149,"kind":2048,"name":"setRendered","url":"classes/StaveHairpin.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4150,"kind":2048,"name":"getAttributes","url":"classes/StaveHairpin.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4151,"kind":2048,"name":"getAttribute","url":"classes/StaveHairpin.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4152,"kind":2048,"name":"getSVGElement","url":"classes/StaveHairpin.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4153,"kind":2048,"name":"setAttribute","url":"classes/StaveHairpin.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4154,"kind":2048,"name":"getBoundingBox","url":"classes/StaveHairpin.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4155,"kind":2048,"name":"getContext","url":"classes/StaveHairpin.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4156,"kind":2048,"name":"setContext","url":"classes/StaveHairpin.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4157,"kind":2048,"name":"checkContext","url":"classes/StaveHairpin.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4158,"kind":262144,"name":"font","url":"classes/StaveHairpin.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4159,"kind":2048,"name":"setFont","url":"classes/StaveHairpin.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4160,"kind":2048,"name":"getFont","url":"classes/StaveHairpin.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4161,"kind":2048,"name":"resetFont","url":"classes/StaveHairpin.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4162,"kind":262144,"name":"fontInfo","url":"classes/StaveHairpin.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4163,"kind":2048,"name":"setFontSize","url":"classes/StaveHairpin.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4164,"kind":2048,"name":"getFontSize","url":"classes/StaveHairpin.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4165,"kind":262144,"name":"fontSize","url":"classes/StaveHairpin.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4166,"kind":262144,"name":"fontSizeInPoints","url":"classes/StaveHairpin.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4167,"kind":262144,"name":"fontSizeInPixels","url":"classes/StaveHairpin.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4168,"kind":262144,"name":"fontStyle","url":"classes/StaveHairpin.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4169,"kind":262144,"name":"fontWeight","url":"classes/StaveHairpin.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveHairpin"},{"id":4170,"kind":256,"name":"StaveLineNotes","url":"interfaces/StaveLineNotes.html","classes":"tsd-kind-interface"},{"id":4171,"kind":1024,"name":"first_note","url":"interfaces/StaveLineNotes.html#first_note","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveLineNotes"},{"id":4172,"kind":1024,"name":"first_indices","url":"interfaces/StaveLineNotes.html#first_indices","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveLineNotes"},{"id":4173,"kind":1024,"name":"last_note","url":"interfaces/StaveLineNotes.html#last_note","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveLineNotes"},{"id":4174,"kind":1024,"name":"last_indices","url":"interfaces/StaveLineNotes.html#last_indices","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveLineNotes"},{"id":4175,"kind":128,"name":"StaveLine","url":"classes/StaveLine.html","classes":"tsd-kind-class"},{"id":4176,"kind":262144,"name":"CATEGORY","url":"classes/StaveLine.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveLine"},{"id":4177,"kind":1024,"name":"TEXT_FONT","url":"classes/StaveLine.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveLine"},{"id":4178,"kind":1024,"name":"TextVerticalPosition","url":"classes/StaveLine.html#TextVerticalPosition","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"StaveLine"},{"id":4179,"kind":65536,"name":"__type","url":"classes/StaveLine.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"StaveLine"},{"id":4180,"kind":1024,"name":"TOP","url":"classes/StaveLine.html#__type-1.TOP","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4181,"kind":1024,"name":"BOTTOM","url":"classes/StaveLine.html#__type-1.BOTTOM","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4182,"kind":1024,"name":"TextJustification","url":"classes/StaveLine.html#TextJustification","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"StaveLine"},{"id":4183,"kind":512,"name":"constructor","url":"classes/StaveLine.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"StaveLine"},{"id":4184,"kind":1024,"name":"render_options","url":"classes/StaveLine.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StaveLine"},{"id":4185,"kind":65536,"name":"__type","url":"classes/StaveLine.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"StaveLine"},{"id":4186,"kind":1024,"name":"padding_left","url":"classes/StaveLine.html#__type.padding_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4187,"kind":1024,"name":"padding_right","url":"classes/StaveLine.html#__type.padding_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4188,"kind":1024,"name":"line_width","url":"classes/StaveLine.html#__type.line_width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4189,"kind":1024,"name":"line_dash","url":"classes/StaveLine.html#__type.line_dash","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4190,"kind":1024,"name":"rounded_end","url":"classes/StaveLine.html#__type.rounded_end","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4191,"kind":1024,"name":"color","url":"classes/StaveLine.html#__type.color","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4192,"kind":1024,"name":"draw_start_arrow","url":"classes/StaveLine.html#__type.draw_start_arrow","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4193,"kind":1024,"name":"draw_end_arrow","url":"classes/StaveLine.html#__type.draw_end_arrow","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4194,"kind":1024,"name":"arrowhead_length","url":"classes/StaveLine.html#__type.arrowhead_length","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4195,"kind":1024,"name":"arrowhead_angle","url":"classes/StaveLine.html#__type.arrowhead_angle","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4196,"kind":1024,"name":"text_position_vertical","url":"classes/StaveLine.html#__type.text_position_vertical","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4197,"kind":1024,"name":"text_justification","url":"classes/StaveLine.html#__type.text_justification","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveLine.__type"},{"id":4198,"kind":2048,"name":"setText","url":"classes/StaveLine.html#setText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveLine"},{"id":4199,"kind":2048,"name":"setNotes","url":"classes/StaveLine.html#setNotes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveLine"},{"id":4200,"kind":2048,"name":"applyLineStyle","url":"classes/StaveLine.html#applyLineStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveLine"},{"id":4201,"kind":2048,"name":"applyFontStyle","url":"classes/StaveLine.html#applyFontStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveLine"},{"id":4202,"kind":2048,"name":"draw","url":"classes/StaveLine.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveLine"},{"id":4203,"kind":2048,"name":"addChildElement","url":"classes/StaveLine.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4204,"kind":2048,"name":"getCategory","url":"classes/StaveLine.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4205,"kind":2048,"name":"setStyle","url":"classes/StaveLine.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4206,"kind":2048,"name":"setGroupStyle","url":"classes/StaveLine.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4207,"kind":2048,"name":"getStyle","url":"classes/StaveLine.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4208,"kind":2048,"name":"applyStyle","url":"classes/StaveLine.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4209,"kind":2048,"name":"restoreStyle","url":"classes/StaveLine.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4210,"kind":2048,"name":"drawWithStyle","url":"classes/StaveLine.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4211,"kind":2048,"name":"hasClass","url":"classes/StaveLine.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4212,"kind":2048,"name":"addClass","url":"classes/StaveLine.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4213,"kind":2048,"name":"removeClass","url":"classes/StaveLine.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4214,"kind":2048,"name":"onRegister","url":"classes/StaveLine.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4215,"kind":2048,"name":"isRendered","url":"classes/StaveLine.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4216,"kind":2048,"name":"setRendered","url":"classes/StaveLine.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4217,"kind":2048,"name":"getAttributes","url":"classes/StaveLine.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4218,"kind":2048,"name":"getAttribute","url":"classes/StaveLine.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4219,"kind":2048,"name":"getSVGElement","url":"classes/StaveLine.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4220,"kind":2048,"name":"setAttribute","url":"classes/StaveLine.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4221,"kind":2048,"name":"getBoundingBox","url":"classes/StaveLine.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4222,"kind":2048,"name":"getContext","url":"classes/StaveLine.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4223,"kind":2048,"name":"setContext","url":"classes/StaveLine.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4224,"kind":2048,"name":"checkContext","url":"classes/StaveLine.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4225,"kind":262144,"name":"font","url":"classes/StaveLine.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4226,"kind":2048,"name":"setFont","url":"classes/StaveLine.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4227,"kind":2048,"name":"getFont","url":"classes/StaveLine.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4228,"kind":2048,"name":"resetFont","url":"classes/StaveLine.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4229,"kind":262144,"name":"fontInfo","url":"classes/StaveLine.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4230,"kind":2048,"name":"setFontSize","url":"classes/StaveLine.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4231,"kind":2048,"name":"getFontSize","url":"classes/StaveLine.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4232,"kind":262144,"name":"fontSize","url":"classes/StaveLine.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4233,"kind":262144,"name":"fontSizeInPoints","url":"classes/StaveLine.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4234,"kind":262144,"name":"fontSizeInPixels","url":"classes/StaveLine.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4235,"kind":262144,"name":"fontStyle","url":"classes/StaveLine.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4236,"kind":262144,"name":"fontWeight","url":"classes/StaveLine.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveLine"},{"id":4237,"kind":256,"name":"LayoutMetrics","url":"interfaces/LayoutMetrics.html","classes":"tsd-kind-interface"},{"id":4238,"kind":1024,"name":"xMin","url":"interfaces/LayoutMetrics.html#xMin","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"LayoutMetrics"},{"id":4239,"kind":1024,"name":"xMax","url":"interfaces/LayoutMetrics.html#xMax","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"LayoutMetrics"},{"id":4240,"kind":1024,"name":"paddingLeft","url":"interfaces/LayoutMetrics.html#paddingLeft","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"LayoutMetrics"},{"id":4241,"kind":1024,"name":"paddingRight","url":"interfaces/LayoutMetrics.html#paddingRight","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"LayoutMetrics"},{"id":4242,"kind":8,"name":"StaveModifierPosition","url":"enums/StaveModifierPosition.html","classes":"tsd-kind-enum"},{"id":4243,"kind":16,"name":"CENTER","url":"enums/StaveModifierPosition.html#CENTER","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"StaveModifierPosition"},{"id":4244,"kind":16,"name":"LEFT","url":"enums/StaveModifierPosition.html#LEFT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"StaveModifierPosition"},{"id":4245,"kind":16,"name":"RIGHT","url":"enums/StaveModifierPosition.html#RIGHT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"StaveModifierPosition"},{"id":4246,"kind":16,"name":"ABOVE","url":"enums/StaveModifierPosition.html#ABOVE","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"StaveModifierPosition"},{"id":4247,"kind":16,"name":"BELOW","url":"enums/StaveModifierPosition.html#BELOW","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"StaveModifierPosition"},{"id":4248,"kind":16,"name":"BEGIN","url":"enums/StaveModifierPosition.html#BEGIN","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"StaveModifierPosition"},{"id":4249,"kind":16,"name":"END","url":"enums/StaveModifierPosition.html#END","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"StaveModifierPosition"},{"id":4250,"kind":128,"name":"StaveModifier","url":"classes/StaveModifier.html","classes":"tsd-kind-class"},{"id":4251,"kind":262144,"name":"CATEGORY","url":"classes/StaveModifier.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveModifier"},{"id":4252,"kind":262144,"name":"Position","url":"classes/StaveModifier.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"StaveModifier"},{"id":4253,"kind":1024,"name":"TEXT_FONT","url":"classes/StaveModifier.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"StaveModifier"},{"id":4254,"kind":512,"name":"constructor","url":"classes/StaveModifier.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"StaveModifier"},{"id":4255,"kind":2048,"name":"getPosition","url":"classes/StaveModifier.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4256,"kind":2048,"name":"setPosition","url":"classes/StaveModifier.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4257,"kind":2048,"name":"getStave","url":"classes/StaveModifier.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4258,"kind":2048,"name":"checkStave","url":"classes/StaveModifier.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4259,"kind":2048,"name":"setStave","url":"classes/StaveModifier.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4260,"kind":2048,"name":"getWidth","url":"classes/StaveModifier.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4261,"kind":2048,"name":"setWidth","url":"classes/StaveModifier.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4262,"kind":2048,"name":"getX","url":"classes/StaveModifier.html#getX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4263,"kind":2048,"name":"setX","url":"classes/StaveModifier.html#setX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4264,"kind":2048,"name":"placeGlyphOnLine","url":"classes/StaveModifier.html#placeGlyphOnLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4265,"kind":2048,"name":"getPadding","url":"classes/StaveModifier.html#getPadding","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4266,"kind":2048,"name":"setPadding","url":"classes/StaveModifier.html#setPadding","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4267,"kind":2048,"name":"setLayoutMetrics","url":"classes/StaveModifier.html#setLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4268,"kind":2048,"name":"getLayoutMetrics","url":"classes/StaveModifier.html#getLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveModifier"},{"id":4269,"kind":2048,"name":"draw","url":"classes/StaveModifier.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveModifier"},{"id":4270,"kind":2048,"name":"addChildElement","url":"classes/StaveModifier.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4271,"kind":2048,"name":"getCategory","url":"classes/StaveModifier.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4272,"kind":2048,"name":"setStyle","url":"classes/StaveModifier.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4273,"kind":2048,"name":"setGroupStyle","url":"classes/StaveModifier.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4274,"kind":2048,"name":"getStyle","url":"classes/StaveModifier.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4275,"kind":2048,"name":"applyStyle","url":"classes/StaveModifier.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4276,"kind":2048,"name":"restoreStyle","url":"classes/StaveModifier.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4277,"kind":2048,"name":"drawWithStyle","url":"classes/StaveModifier.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4278,"kind":2048,"name":"hasClass","url":"classes/StaveModifier.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4279,"kind":2048,"name":"addClass","url":"classes/StaveModifier.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4280,"kind":2048,"name":"removeClass","url":"classes/StaveModifier.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4281,"kind":2048,"name":"onRegister","url":"classes/StaveModifier.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4282,"kind":2048,"name":"isRendered","url":"classes/StaveModifier.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4283,"kind":2048,"name":"setRendered","url":"classes/StaveModifier.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4284,"kind":2048,"name":"getAttributes","url":"classes/StaveModifier.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4285,"kind":2048,"name":"getAttribute","url":"classes/StaveModifier.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4286,"kind":2048,"name":"getSVGElement","url":"classes/StaveModifier.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4287,"kind":2048,"name":"setAttribute","url":"classes/StaveModifier.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4288,"kind":2048,"name":"getBoundingBox","url":"classes/StaveModifier.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4289,"kind":2048,"name":"getContext","url":"classes/StaveModifier.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4290,"kind":2048,"name":"setContext","url":"classes/StaveModifier.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4291,"kind":2048,"name":"checkContext","url":"classes/StaveModifier.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4292,"kind":262144,"name":"font","url":"classes/StaveModifier.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4293,"kind":2048,"name":"setFont","url":"classes/StaveModifier.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4294,"kind":2048,"name":"getFont","url":"classes/StaveModifier.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4295,"kind":2048,"name":"resetFont","url":"classes/StaveModifier.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4296,"kind":262144,"name":"fontInfo","url":"classes/StaveModifier.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4297,"kind":2048,"name":"setFontSize","url":"classes/StaveModifier.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4298,"kind":2048,"name":"getFontSize","url":"classes/StaveModifier.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4299,"kind":262144,"name":"fontSize","url":"classes/StaveModifier.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4300,"kind":262144,"name":"fontSizeInPoints","url":"classes/StaveModifier.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4301,"kind":262144,"name":"fontSizeInPixels","url":"classes/StaveModifier.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4302,"kind":262144,"name":"fontStyle","url":"classes/StaveModifier.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4303,"kind":262144,"name":"fontWeight","url":"classes/StaveModifier.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveModifier"},{"id":4304,"kind":256,"name":"StaveNoteHeadBounds","url":"interfaces/StaveNoteHeadBounds.html","classes":"tsd-kind-interface"},{"id":4305,"kind":1024,"name":"y_top","url":"interfaces/StaveNoteHeadBounds.html#y_top","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteHeadBounds"},{"id":4306,"kind":1024,"name":"y_bottom","url":"interfaces/StaveNoteHeadBounds.html#y_bottom","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteHeadBounds"},{"id":4307,"kind":1024,"name":"displaced_x","url":"interfaces/StaveNoteHeadBounds.html#displaced_x","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteHeadBounds"},{"id":4308,"kind":1024,"name":"non_displaced_x","url":"interfaces/StaveNoteHeadBounds.html#non_displaced_x","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteHeadBounds"},{"id":4309,"kind":1024,"name":"highest_line","url":"interfaces/StaveNoteHeadBounds.html#highest_line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteHeadBounds"},{"id":4310,"kind":1024,"name":"lowest_line","url":"interfaces/StaveNoteHeadBounds.html#lowest_line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteHeadBounds"},{"id":4311,"kind":1024,"name":"highest_displaced_line","url":"interfaces/StaveNoteHeadBounds.html#highest_displaced_line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteHeadBounds"},{"id":4312,"kind":1024,"name":"lowest_displaced_line","url":"interfaces/StaveNoteHeadBounds.html#lowest_displaced_line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteHeadBounds"},{"id":4313,"kind":1024,"name":"highest_non_displaced_line","url":"interfaces/StaveNoteHeadBounds.html#highest_non_displaced_line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteHeadBounds"},{"id":4314,"kind":1024,"name":"lowest_non_displaced_line","url":"interfaces/StaveNoteHeadBounds.html#lowest_non_displaced_line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteHeadBounds"},{"id":4315,"kind":256,"name":"StaveNoteFormatSettings","url":"interfaces/StaveNoteFormatSettings.html","classes":"tsd-kind-interface"},{"id":4316,"kind":1024,"name":"line","url":"interfaces/StaveNoteFormatSettings.html#line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteFormatSettings"},{"id":4317,"kind":1024,"name":"maxLine","url":"interfaces/StaveNoteFormatSettings.html#maxLine","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteFormatSettings"},{"id":4318,"kind":1024,"name":"minLine","url":"interfaces/StaveNoteFormatSettings.html#minLine","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteFormatSettings"},{"id":4319,"kind":1024,"name":"isrest","url":"interfaces/StaveNoteFormatSettings.html#isrest","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteFormatSettings"},{"id":4320,"kind":1024,"name":"stemDirection","url":"interfaces/StaveNoteFormatSettings.html#stemDirection","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteFormatSettings"},{"id":4321,"kind":1024,"name":"stemMax","url":"interfaces/StaveNoteFormatSettings.html#stemMax","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteFormatSettings"},{"id":4322,"kind":1024,"name":"stemMin","url":"interfaces/StaveNoteFormatSettings.html#stemMin","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteFormatSettings"},{"id":4323,"kind":1024,"name":"voice_shift","url":"interfaces/StaveNoteFormatSettings.html#voice_shift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteFormatSettings"},{"id":4324,"kind":1024,"name":"is_displaced","url":"interfaces/StaveNoteFormatSettings.html#is_displaced","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteFormatSettings"},{"id":4325,"kind":1024,"name":"note","url":"interfaces/StaveNoteFormatSettings.html#note","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteFormatSettings"},{"id":4326,"kind":256,"name":"StaveNoteStruct","url":"interfaces/StaveNoteStruct.html","classes":"tsd-kind-interface"},{"id":4327,"kind":1024,"name":"stem_direction","url":"interfaces/StaveNoteStruct.html#stem_direction","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteStruct"},{"id":4328,"kind":1024,"name":"auto_stem","url":"interfaces/StaveNoteStruct.html#auto_stem","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteStruct"},{"id":4329,"kind":1024,"name":"stem_down_x_offset","url":"interfaces/StaveNoteStruct.html#stem_down_x_offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteStruct"},{"id":4330,"kind":1024,"name":"stem_up_x_offset","url":"interfaces/StaveNoteStruct.html#stem_up_x_offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteStruct"},{"id":4331,"kind":1024,"name":"stroke_px","url":"interfaces/StaveNoteStruct.html#stroke_px","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteStruct"},{"id":4332,"kind":1024,"name":"glyph_font_scale","url":"interfaces/StaveNoteStruct.html#glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteStruct"},{"id":4333,"kind":1024,"name":"octave_shift","url":"interfaces/StaveNoteStruct.html#octave_shift","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteStruct"},{"id":4334,"kind":1024,"name":"clef","url":"interfaces/StaveNoteStruct.html#clef","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveNoteStruct"},{"id":4335,"kind":1024,"name":"keys","url":"interfaces/StaveNoteStruct.html#keys","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"StaveNoteStruct"},{"id":4336,"kind":1024,"name":"duration","url":"interfaces/StaveNoteStruct.html#duration","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"StaveNoteStruct"},{"id":4337,"kind":1024,"name":"line","url":"interfaces/StaveNoteStruct.html#line","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"StaveNoteStruct"},{"id":4338,"kind":1024,"name":"dots","url":"interfaces/StaveNoteStruct.html#dots","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"StaveNoteStruct"},{"id":4339,"kind":1024,"name":"type","url":"interfaces/StaveNoteStruct.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"StaveNoteStruct"},{"id":4340,"kind":1024,"name":"align_center","url":"interfaces/StaveNoteStruct.html#align_center","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"StaveNoteStruct"},{"id":4341,"kind":1024,"name":"duration_override","url":"interfaces/StaveNoteStruct.html#duration_override","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"StaveNoteStruct"},{"id":4342,"kind":128,"name":"StaveNote","url":"classes/StaveNote.html","classes":"tsd-kind-class"},{"id":4343,"kind":1024,"name":"DEBUG","url":"classes/StaveNote.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"StaveNote"},{"id":4344,"kind":262144,"name":"CATEGORY","url":"classes/StaveNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveNote"},{"id":4345,"kind":262144,"name":"STEM_UP","url":"classes/StaveNote.html#STEM_UP","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"StaveNote"},{"id":4346,"kind":262144,"name":"STEM_DOWN","url":"classes/StaveNote.html#STEM_DOWN","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"StaveNote"},{"id":4347,"kind":262144,"name":"LEDGER_LINE_OFFSET","url":"classes/StaveNote.html#LEDGER_LINE_OFFSET","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"StaveNote"},{"id":4348,"kind":262144,"name":"minNoteheadPadding","url":"classes/StaveNote.html#minNoteheadPadding","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"StaveNote"},{"id":4349,"kind":2048,"name":"format","url":"classes/StaveNote.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"StaveNote"},{"id":4350,"kind":2048,"name":"postFormat","url":"classes/StaveNote.html#postFormat-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"StaveNote"},{"id":4351,"kind":2048,"name":"plotMetrics","url":"classes/StaveNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"StaveNote"},{"id":4352,"kind":1024,"name":"TEXT_FONT","url":"classes/StaveNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"StaveNote"},{"id":4353,"kind":512,"name":"constructor","url":"classes/StaveNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4354,"kind":1024,"name":"minLine","url":"classes/StaveNote.html#minLine","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StaveNote"},{"id":4355,"kind":1024,"name":"maxLine","url":"classes/StaveNote.html#maxLine","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StaveNote"},{"id":4356,"kind":2048,"name":"reset","url":"classes/StaveNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4357,"kind":2048,"name":"setBeam","url":"classes/StaveNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4358,"kind":2048,"name":"buildStem","url":"classes/StaveNote.html#buildStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4359,"kind":2048,"name":"buildNoteHeads","url":"classes/StaveNote.html#buildNoteHeads","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4360,"kind":2048,"name":"autoStem","url":"classes/StaveNote.html#autoStem","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4361,"kind":2048,"name":"calculateOptimalStemDirection","url":"classes/StaveNote.html#calculateOptimalStemDirection","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4362,"kind":2048,"name":"calculateKeyProps","url":"classes/StaveNote.html#calculateKeyProps","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4363,"kind":2048,"name":"getBoundingBox","url":"classes/StaveNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4364,"kind":2048,"name":"getLineNumber","url":"classes/StaveNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4365,"kind":2048,"name":"isRest","url":"classes/StaveNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4366,"kind":2048,"name":"isChord","url":"classes/StaveNote.html#isChord","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4367,"kind":2048,"name":"hasStem","url":"classes/StaveNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4368,"kind":2048,"name":"hasFlag","url":"classes/StaveNote.html#hasFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4369,"kind":2048,"name":"getStemX","url":"classes/StaveNote.html#getStemX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4370,"kind":2048,"name":"getYForTopText","url":"classes/StaveNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4371,"kind":2048,"name":"getYForBottomText","url":"classes/StaveNote.html#getYForBottomText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4372,"kind":2048,"name":"setStave","url":"classes/StaveNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4373,"kind":2048,"name":"isDisplaced","url":"classes/StaveNote.html#isDisplaced","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4374,"kind":2048,"name":"setNoteDisplaced","url":"classes/StaveNote.html#setNoteDisplaced","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4375,"kind":2048,"name":"getTieRightX","url":"classes/StaveNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4376,"kind":2048,"name":"getTieLeftX","url":"classes/StaveNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4377,"kind":2048,"name":"getLineForRest","url":"classes/StaveNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4378,"kind":2048,"name":"getModifierStartXY","url":"classes/StaveNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4379,"kind":2048,"name":"setStyle","url":"classes/StaveNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4380,"kind":2048,"name":"setStemStyle","url":"classes/StaveNote.html#setStemStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4381,"kind":2048,"name":"getStemStyle","url":"classes/StaveNote.html#getStemStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4382,"kind":2048,"name":"setLedgerLineStyle","url":"classes/StaveNote.html#setLedgerLineStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4383,"kind":2048,"name":"getLedgerLineStyle","url":"classes/StaveNote.html#getLedgerLineStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4384,"kind":2048,"name":"setFlagStyle","url":"classes/StaveNote.html#setFlagStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4385,"kind":2048,"name":"getFlagStyle","url":"classes/StaveNote.html#getFlagStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4386,"kind":2048,"name":"setKeyStyle","url":"classes/StaveNote.html#setKeyStyle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4387,"kind":2048,"name":"setKeyLine","url":"classes/StaveNote.html#setKeyLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4388,"kind":2048,"name":"getKeyLine","url":"classes/StaveNote.html#getKeyLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4389,"kind":2048,"name":"getVoiceShiftWidth","url":"classes/StaveNote.html#getVoiceShiftWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4390,"kind":2048,"name":"calcNoteDisplacements","url":"classes/StaveNote.html#calcNoteDisplacements","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4391,"kind":2048,"name":"preFormat","url":"classes/StaveNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4392,"kind":2048,"name":"getNoteHeadBounds","url":"classes/StaveNote.html#getNoteHeadBounds","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4393,"kind":2048,"name":"getNoteHeadBeginX","url":"classes/StaveNote.html#getNoteHeadBeginX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4394,"kind":2048,"name":"getNoteHeadEndX","url":"classes/StaveNote.html#getNoteHeadEndX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4395,"kind":262144,"name":"noteHeads","url":"classes/StaveNote.html#noteHeads","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"StaveNote"},{"id":4396,"kind":262144,"name":"note_heads","url":"classes/StaveNote.html#note_heads","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"StaveNote"},{"id":4397,"kind":2048,"name":"drawLedgerLines","url":"classes/StaveNote.html#drawLedgerLines","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4398,"kind":2048,"name":"drawModifiers","url":"classes/StaveNote.html#drawModifiers","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4399,"kind":2048,"name":"shouldDrawFlag","url":"classes/StaveNote.html#shouldDrawFlag","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4400,"kind":2048,"name":"drawFlag","url":"classes/StaveNote.html#drawFlag","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4401,"kind":2048,"name":"drawNoteHeads","url":"classes/StaveNote.html#drawNoteHeads","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4402,"kind":2048,"name":"drawStem","url":"classes/StaveNote.html#drawStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4403,"kind":2048,"name":"getStaveNoteScale","url":"classes/StaveNote.html#getStaveNoteScale","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveNote"},{"id":4404,"kind":2048,"name":"getStemExtension","url":"classes/StaveNote.html#getStemExtension","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4405,"kind":2048,"name":"draw","url":"classes/StaveNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveNote"},{"id":4406,"kind":1024,"name":"stem_direction","url":"classes/StaveNote.html#stem_direction","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4407,"kind":1024,"name":"stem","url":"classes/StaveNote.html#stem","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4408,"kind":2048,"name":"getStem","url":"classes/StaveNote.html#getStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4409,"kind":2048,"name":"checkStem","url":"classes/StaveNote.html#checkStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4410,"kind":2048,"name":"setStem","url":"classes/StaveNote.html#setStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4411,"kind":2048,"name":"buildFlag","url":"classes/StaveNote.html#buildFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4412,"kind":2048,"name":"getBaseCustomNoteHeadGlyph","url":"classes/StaveNote.html#getBaseCustomNoteHeadGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4413,"kind":2048,"name":"getStemLength","url":"classes/StaveNote.html#getStemLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4414,"kind":2048,"name":"getBeamCount","url":"classes/StaveNote.html#getBeamCount","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4415,"kind":2048,"name":"getStemMinimumLength","url":"classes/StaveNote.html#getStemMinimumLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4416,"kind":2048,"name":"getStemDirection","url":"classes/StaveNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4417,"kind":2048,"name":"setStemDirection","url":"classes/StaveNote.html#setStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4418,"kind":2048,"name":"getCenterGlyphX","url":"classes/StaveNote.html#getCenterGlyphX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4419,"kind":2048,"name":"setStemLength","url":"classes/StaveNote.html#setStemLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4420,"kind":2048,"name":"getStemExtents","url":"classes/StaveNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4421,"kind":2048,"name":"postFormat","url":"classes/StaveNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4422,"kind":1024,"name":"glyph","url":"classes/StaveNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4423,"kind":1024,"name":"keys","url":"classes/StaveNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4424,"kind":1024,"name":"keyProps","url":"classes/StaveNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4425,"kind":1024,"name":"render_options","url":"classes/StaveNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4426,"kind":65536,"name":"__type","url":"classes/StaveNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"StaveNote"},{"id":4427,"kind":1024,"name":"draw_stem_through_stave","url":"classes/StaveNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4428,"kind":1024,"name":"draw","url":"classes/StaveNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4429,"kind":1024,"name":"draw_dots","url":"classes/StaveNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4430,"kind":1024,"name":"draw_stem","url":"classes/StaveNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4431,"kind":1024,"name":"y_shift","url":"classes/StaveNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4432,"kind":1024,"name":"extend_left","url":"classes/StaveNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4433,"kind":1024,"name":"extend_right","url":"classes/StaveNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4434,"kind":1024,"name":"glyph_font_scale","url":"classes/StaveNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4435,"kind":1024,"name":"annotation_spacing","url":"classes/StaveNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4436,"kind":1024,"name":"glyph_font_size","url":"classes/StaveNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4437,"kind":1024,"name":"scale","url":"classes/StaveNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4438,"kind":1024,"name":"font","url":"classes/StaveNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4439,"kind":1024,"name":"stroke_px","url":"classes/StaveNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveNote.__type"},{"id":4440,"kind":2048,"name":"getPlayNote","url":"classes/StaveNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4441,"kind":2048,"name":"setPlayNote","url":"classes/StaveNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4442,"kind":2048,"name":"addStroke","url":"classes/StaveNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4443,"kind":2048,"name":"getStave","url":"classes/StaveNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4444,"kind":2048,"name":"checkStave","url":"classes/StaveNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4445,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/StaveNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4446,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/StaveNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4447,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/StaveNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4448,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/StaveNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4449,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/StaveNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4450,"kind":2048,"name":"getGlyph","url":"classes/StaveNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4451,"kind":2048,"name":"getGlyphWidth","url":"classes/StaveNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4452,"kind":2048,"name":"setYs","url":"classes/StaveNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4453,"kind":2048,"name":"getYs","url":"classes/StaveNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4454,"kind":2048,"name":"getVoice","url":"classes/StaveNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4455,"kind":2048,"name":"setVoice","url":"classes/StaveNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4456,"kind":2048,"name":"getTickContext","url":"classes/StaveNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4457,"kind":2048,"name":"setTickContext","url":"classes/StaveNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4458,"kind":2048,"name":"getDuration","url":"classes/StaveNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4459,"kind":2048,"name":"isDotted","url":"classes/StaveNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4460,"kind":2048,"name":"getNoteType","url":"classes/StaveNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4461,"kind":2048,"name":"getBeam","url":"classes/StaveNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4462,"kind":2048,"name":"checkBeam","url":"classes/StaveNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4463,"kind":2048,"name":"hasBeam","url":"classes/StaveNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4464,"kind":2048,"name":"addModifier","url":"classes/StaveNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4465,"kind":2048,"name":"getModifiersByType","url":"classes/StaveNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4466,"kind":2048,"name":"getRightParenthesisPx","url":"classes/StaveNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4467,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/StaveNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4468,"kind":2048,"name":"getFirstDotPx","url":"classes/StaveNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4469,"kind":2048,"name":"getMetrics","url":"classes/StaveNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4470,"kind":2048,"name":"getAbsoluteX","url":"classes/StaveNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4471,"kind":2048,"name":"getKeys","url":"classes/StaveNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4472,"kind":2048,"name":"getKeyProps","url":"classes/StaveNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4473,"kind":2048,"name":"getTicks","url":"classes/StaveNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4474,"kind":2048,"name":"setIgnoreTicks","url":"classes/StaveNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4475,"kind":2048,"name":"setWidth","url":"classes/StaveNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4476,"kind":2048,"name":"getWidth","url":"classes/StaveNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4477,"kind":2048,"name":"setXShift","url":"classes/StaveNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4478,"kind":2048,"name":"getXShift","url":"classes/StaveNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4479,"kind":2048,"name":"getX","url":"classes/StaveNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4480,"kind":2048,"name":"getFormatterMetrics","url":"classes/StaveNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4481,"kind":2048,"name":"getCenterXShift","url":"classes/StaveNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4482,"kind":2048,"name":"setCenterXShift","url":"classes/StaveNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4483,"kind":2048,"name":"isCenterAligned","url":"classes/StaveNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4484,"kind":2048,"name":"setCenterAlignment","url":"classes/StaveNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4485,"kind":2048,"name":"getTuplet","url":"classes/StaveNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4486,"kind":2048,"name":"getTupletStack","url":"classes/StaveNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4487,"kind":2048,"name":"resetTuplet","url":"classes/StaveNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4488,"kind":2048,"name":"setTuplet","url":"classes/StaveNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4489,"kind":2048,"name":"addToModifierContext","url":"classes/StaveNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4490,"kind":2048,"name":"getModifiers","url":"classes/StaveNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4491,"kind":2048,"name":"checkTickContext","url":"classes/StaveNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4492,"kind":262144,"name":"preFormatted","url":"classes/StaveNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4493,"kind":262144,"name":"postFormatted","url":"classes/StaveNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4494,"kind":2048,"name":"getIntrinsicTicks","url":"classes/StaveNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4495,"kind":2048,"name":"setIntrinsicTicks","url":"classes/StaveNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4496,"kind":2048,"name":"getTickMultiplier","url":"classes/StaveNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4497,"kind":2048,"name":"applyTickMultiplier","url":"classes/StaveNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4498,"kind":2048,"name":"setDuration","url":"classes/StaveNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4499,"kind":2048,"name":"setModifierContext","url":"classes/StaveNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4500,"kind":2048,"name":"getModifierContext","url":"classes/StaveNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4501,"kind":2048,"name":"checkModifierContext","url":"classes/StaveNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4502,"kind":2048,"name":"addChildElement","url":"classes/StaveNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4503,"kind":2048,"name":"getCategory","url":"classes/StaveNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4504,"kind":2048,"name":"setGroupStyle","url":"classes/StaveNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4505,"kind":2048,"name":"getStyle","url":"classes/StaveNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4506,"kind":2048,"name":"applyStyle","url":"classes/StaveNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4507,"kind":2048,"name":"restoreStyle","url":"classes/StaveNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4508,"kind":2048,"name":"drawWithStyle","url":"classes/StaveNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4509,"kind":2048,"name":"hasClass","url":"classes/StaveNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4510,"kind":2048,"name":"addClass","url":"classes/StaveNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4511,"kind":2048,"name":"removeClass","url":"classes/StaveNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4512,"kind":2048,"name":"onRegister","url":"classes/StaveNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4513,"kind":2048,"name":"isRendered","url":"classes/StaveNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4514,"kind":2048,"name":"setRendered","url":"classes/StaveNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4515,"kind":2048,"name":"getAttributes","url":"classes/StaveNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4516,"kind":2048,"name":"getAttribute","url":"classes/StaveNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4517,"kind":2048,"name":"getSVGElement","url":"classes/StaveNote.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4518,"kind":2048,"name":"setAttribute","url":"classes/StaveNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4519,"kind":2048,"name":"getContext","url":"classes/StaveNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4520,"kind":2048,"name":"setContext","url":"classes/StaveNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4521,"kind":2048,"name":"checkContext","url":"classes/StaveNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4522,"kind":262144,"name":"font","url":"classes/StaveNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4523,"kind":2048,"name":"setFont","url":"classes/StaveNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4524,"kind":2048,"name":"getFont","url":"classes/StaveNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4525,"kind":2048,"name":"resetFont","url":"classes/StaveNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4526,"kind":262144,"name":"fontInfo","url":"classes/StaveNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4527,"kind":2048,"name":"setFontSize","url":"classes/StaveNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4528,"kind":2048,"name":"getFontSize","url":"classes/StaveNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4529,"kind":262144,"name":"fontSize","url":"classes/StaveNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4530,"kind":262144,"name":"fontSizeInPoints","url":"classes/StaveNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4531,"kind":262144,"name":"fontSizeInPixels","url":"classes/StaveNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4532,"kind":262144,"name":"fontStyle","url":"classes/StaveNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4533,"kind":262144,"name":"fontWeight","url":"classes/StaveNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveNote"},{"id":4534,"kind":128,"name":"Repetition","url":"classes/Repetition.html","classes":"tsd-kind-class"},{"id":4535,"kind":262144,"name":"CATEGORY","url":"classes/Repetition.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Repetition"},{"id":4536,"kind":1024,"name":"TEXT_FONT","url":"classes/Repetition.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Repetition"},{"id":4537,"kind":1024,"name":"type","url":"classes/Repetition.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Repetition"},{"id":4538,"kind":65536,"name":"__type","url":"classes/Repetition.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Repetition"},{"id":4539,"kind":1024,"name":"NONE","url":"classes/Repetition.html#__type.NONE","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4540,"kind":1024,"name":"CODA_LEFT","url":"classes/Repetition.html#__type.CODA_LEFT","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4541,"kind":1024,"name":"CODA_RIGHT","url":"classes/Repetition.html#__type.CODA_RIGHT","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4542,"kind":1024,"name":"SEGNO_LEFT","url":"classes/Repetition.html#__type.SEGNO_LEFT","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4543,"kind":1024,"name":"SEGNO_RIGHT","url":"classes/Repetition.html#__type.SEGNO_RIGHT","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4544,"kind":1024,"name":"DC","url":"classes/Repetition.html#__type.DC","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4545,"kind":1024,"name":"DC_AL_CODA","url":"classes/Repetition.html#__type.DC_AL_CODA","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4546,"kind":1024,"name":"DC_AL_FINE","url":"classes/Repetition.html#__type.DC_AL_FINE","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4547,"kind":1024,"name":"DS","url":"classes/Repetition.html#__type.DS","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4548,"kind":1024,"name":"DS_AL_CODA","url":"classes/Repetition.html#__type.DS_AL_CODA","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4549,"kind":1024,"name":"DS_AL_FINE","url":"classes/Repetition.html#__type.DS_AL_FINE","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4550,"kind":1024,"name":"FINE","url":"classes/Repetition.html#__type.FINE","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4551,"kind":1024,"name":"TO_CODA","url":"classes/Repetition.html#__type.TO_CODA","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Repetition.__type"},{"id":4552,"kind":262144,"name":"Position","url":"classes/Repetition.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Repetition"},{"id":4553,"kind":512,"name":"constructor","url":"classes/Repetition.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Repetition"},{"id":4554,"kind":2048,"name":"setShiftX","url":"classes/Repetition.html#setShiftX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Repetition"},{"id":4555,"kind":2048,"name":"setShiftY","url":"classes/Repetition.html#setShiftY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Repetition"},{"id":4556,"kind":2048,"name":"draw","url":"classes/Repetition.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Repetition"},{"id":4557,"kind":2048,"name":"drawCodaFixed","url":"classes/Repetition.html#drawCodaFixed","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Repetition"},{"id":4558,"kind":2048,"name":"drawSignoFixed","url":"classes/Repetition.html#drawSignoFixed","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Repetition"},{"id":4559,"kind":2048,"name":"drawSymbolText","url":"classes/Repetition.html#drawSymbolText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Repetition"},{"id":4560,"kind":2048,"name":"getPosition","url":"classes/Repetition.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4561,"kind":2048,"name":"setPosition","url":"classes/Repetition.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4562,"kind":2048,"name":"getStave","url":"classes/Repetition.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4563,"kind":2048,"name":"checkStave","url":"classes/Repetition.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4564,"kind":2048,"name":"setStave","url":"classes/Repetition.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4565,"kind":2048,"name":"getWidth","url":"classes/Repetition.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4566,"kind":2048,"name":"setWidth","url":"classes/Repetition.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4567,"kind":2048,"name":"getX","url":"classes/Repetition.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4568,"kind":2048,"name":"setX","url":"classes/Repetition.html#setX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4569,"kind":2048,"name":"placeGlyphOnLine","url":"classes/Repetition.html#placeGlyphOnLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4570,"kind":2048,"name":"getPadding","url":"classes/Repetition.html#getPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4571,"kind":2048,"name":"setPadding","url":"classes/Repetition.html#setPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4572,"kind":2048,"name":"setLayoutMetrics","url":"classes/Repetition.html#setLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4573,"kind":2048,"name":"getLayoutMetrics","url":"classes/Repetition.html#getLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4574,"kind":2048,"name":"addChildElement","url":"classes/Repetition.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4575,"kind":2048,"name":"getCategory","url":"classes/Repetition.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4576,"kind":2048,"name":"setStyle","url":"classes/Repetition.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4577,"kind":2048,"name":"setGroupStyle","url":"classes/Repetition.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4578,"kind":2048,"name":"getStyle","url":"classes/Repetition.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4579,"kind":2048,"name":"applyStyle","url":"classes/Repetition.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4580,"kind":2048,"name":"restoreStyle","url":"classes/Repetition.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4581,"kind":2048,"name":"drawWithStyle","url":"classes/Repetition.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4582,"kind":2048,"name":"hasClass","url":"classes/Repetition.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4583,"kind":2048,"name":"addClass","url":"classes/Repetition.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4584,"kind":2048,"name":"removeClass","url":"classes/Repetition.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4585,"kind":2048,"name":"onRegister","url":"classes/Repetition.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4586,"kind":2048,"name":"isRendered","url":"classes/Repetition.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4587,"kind":2048,"name":"setRendered","url":"classes/Repetition.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4588,"kind":2048,"name":"getAttributes","url":"classes/Repetition.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4589,"kind":2048,"name":"getAttribute","url":"classes/Repetition.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4590,"kind":2048,"name":"getSVGElement","url":"classes/Repetition.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4591,"kind":2048,"name":"setAttribute","url":"classes/Repetition.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4592,"kind":2048,"name":"getBoundingBox","url":"classes/Repetition.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4593,"kind":2048,"name":"getContext","url":"classes/Repetition.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4594,"kind":2048,"name":"setContext","url":"classes/Repetition.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4595,"kind":2048,"name":"checkContext","url":"classes/Repetition.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4596,"kind":262144,"name":"font","url":"classes/Repetition.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4597,"kind":2048,"name":"setFont","url":"classes/Repetition.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4598,"kind":2048,"name":"getFont","url":"classes/Repetition.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4599,"kind":2048,"name":"resetFont","url":"classes/Repetition.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4600,"kind":262144,"name":"fontInfo","url":"classes/Repetition.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4601,"kind":2048,"name":"setFontSize","url":"classes/Repetition.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4602,"kind":2048,"name":"getFontSize","url":"classes/Repetition.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4603,"kind":262144,"name":"fontSize","url":"classes/Repetition.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4604,"kind":262144,"name":"fontSizeInPoints","url":"classes/Repetition.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4605,"kind":262144,"name":"fontSizeInPixels","url":"classes/Repetition.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4606,"kind":262144,"name":"fontStyle","url":"classes/Repetition.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4607,"kind":262144,"name":"fontWeight","url":"classes/Repetition.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Repetition"},{"id":4608,"kind":128,"name":"StaveSection","url":"classes/StaveSection.html","classes":"tsd-kind-class"},{"id":4609,"kind":262144,"name":"CATEGORY","url":"classes/StaveSection.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveSection"},{"id":4610,"kind":1024,"name":"TEXT_FONT","url":"classes/StaveSection.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveSection"},{"id":4611,"kind":262144,"name":"Position","url":"classes/StaveSection.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"StaveSection"},{"id":4612,"kind":512,"name":"constructor","url":"classes/StaveSection.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"StaveSection"},{"id":4613,"kind":2048,"name":"setStaveSection","url":"classes/StaveSection.html#setStaveSection","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveSection"},{"id":4614,"kind":2048,"name":"setShiftX","url":"classes/StaveSection.html#setShiftX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveSection"},{"id":4615,"kind":2048,"name":"setShiftY","url":"classes/StaveSection.html#setShiftY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveSection"},{"id":4616,"kind":2048,"name":"draw","url":"classes/StaveSection.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveSection"},{"id":4617,"kind":2048,"name":"getPosition","url":"classes/StaveSection.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4618,"kind":2048,"name":"setPosition","url":"classes/StaveSection.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4619,"kind":2048,"name":"getStave","url":"classes/StaveSection.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4620,"kind":2048,"name":"checkStave","url":"classes/StaveSection.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4621,"kind":2048,"name":"setStave","url":"classes/StaveSection.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4622,"kind":2048,"name":"getWidth","url":"classes/StaveSection.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4623,"kind":2048,"name":"setWidth","url":"classes/StaveSection.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4624,"kind":2048,"name":"getX","url":"classes/StaveSection.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4625,"kind":2048,"name":"setX","url":"classes/StaveSection.html#setX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4626,"kind":2048,"name":"placeGlyphOnLine","url":"classes/StaveSection.html#placeGlyphOnLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4627,"kind":2048,"name":"getPadding","url":"classes/StaveSection.html#getPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4628,"kind":2048,"name":"setPadding","url":"classes/StaveSection.html#setPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4629,"kind":2048,"name":"setLayoutMetrics","url":"classes/StaveSection.html#setLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4630,"kind":2048,"name":"getLayoutMetrics","url":"classes/StaveSection.html#getLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4631,"kind":2048,"name":"addChildElement","url":"classes/StaveSection.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4632,"kind":2048,"name":"getCategory","url":"classes/StaveSection.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4633,"kind":2048,"name":"setStyle","url":"classes/StaveSection.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4634,"kind":2048,"name":"setGroupStyle","url":"classes/StaveSection.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4635,"kind":2048,"name":"getStyle","url":"classes/StaveSection.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4636,"kind":2048,"name":"applyStyle","url":"classes/StaveSection.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4637,"kind":2048,"name":"restoreStyle","url":"classes/StaveSection.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4638,"kind":2048,"name":"drawWithStyle","url":"classes/StaveSection.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4639,"kind":2048,"name":"hasClass","url":"classes/StaveSection.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4640,"kind":2048,"name":"addClass","url":"classes/StaveSection.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4641,"kind":2048,"name":"removeClass","url":"classes/StaveSection.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4642,"kind":2048,"name":"onRegister","url":"classes/StaveSection.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4643,"kind":2048,"name":"isRendered","url":"classes/StaveSection.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4644,"kind":2048,"name":"setRendered","url":"classes/StaveSection.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4645,"kind":2048,"name":"getAttributes","url":"classes/StaveSection.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4646,"kind":2048,"name":"getAttribute","url":"classes/StaveSection.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4647,"kind":2048,"name":"getSVGElement","url":"classes/StaveSection.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4648,"kind":2048,"name":"setAttribute","url":"classes/StaveSection.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4649,"kind":2048,"name":"getBoundingBox","url":"classes/StaveSection.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4650,"kind":2048,"name":"getContext","url":"classes/StaveSection.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4651,"kind":2048,"name":"setContext","url":"classes/StaveSection.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4652,"kind":2048,"name":"checkContext","url":"classes/StaveSection.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4653,"kind":262144,"name":"font","url":"classes/StaveSection.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4654,"kind":2048,"name":"setFont","url":"classes/StaveSection.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4655,"kind":2048,"name":"getFont","url":"classes/StaveSection.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4656,"kind":2048,"name":"resetFont","url":"classes/StaveSection.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4657,"kind":262144,"name":"fontInfo","url":"classes/StaveSection.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4658,"kind":2048,"name":"setFontSize","url":"classes/StaveSection.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4659,"kind":2048,"name":"getFontSize","url":"classes/StaveSection.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4660,"kind":262144,"name":"fontSize","url":"classes/StaveSection.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4661,"kind":262144,"name":"fontSizeInPoints","url":"classes/StaveSection.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4662,"kind":262144,"name":"fontSizeInPixels","url":"classes/StaveSection.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4663,"kind":262144,"name":"fontStyle","url":"classes/StaveSection.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4664,"kind":262144,"name":"fontWeight","url":"classes/StaveSection.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveSection"},{"id":4665,"kind":256,"name":"StaveTempoOptions","url":"interfaces/StaveTempoOptions.html","classes":"tsd-kind-interface"},{"id":4666,"kind":1024,"name":"bpm","url":"interfaces/StaveTempoOptions.html#bpm","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveTempoOptions"},{"id":4667,"kind":1024,"name":"duration","url":"interfaces/StaveTempoOptions.html#duration","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveTempoOptions"},{"id":4668,"kind":1024,"name":"dots","url":"interfaces/StaveTempoOptions.html#dots","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveTempoOptions"},{"id":4669,"kind":1024,"name":"name","url":"interfaces/StaveTempoOptions.html#name","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StaveTempoOptions"},{"id":4670,"kind":128,"name":"StaveTempo","url":"classes/StaveTempo.html","classes":"tsd-kind-class"},{"id":4671,"kind":262144,"name":"CATEGORY","url":"classes/StaveTempo.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveTempo"},{"id":4672,"kind":1024,"name":"TEXT_FONT","url":"classes/StaveTempo.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveTempo"},{"id":4673,"kind":262144,"name":"Position","url":"classes/StaveTempo.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"StaveTempo"},{"id":4674,"kind":512,"name":"constructor","url":"classes/StaveTempo.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"StaveTempo"},{"id":4675,"kind":1024,"name":"render_options","url":"classes/StaveTempo.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StaveTempo"},{"id":4676,"kind":65536,"name":"__type","url":"classes/StaveTempo.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"StaveTempo"},{"id":4677,"kind":1024,"name":"glyph_font_scale","url":"classes/StaveTempo.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveTempo.__type"},{"id":4678,"kind":2048,"name":"setTempo","url":"classes/StaveTempo.html#setTempo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveTempo"},{"id":4679,"kind":2048,"name":"setShiftX","url":"classes/StaveTempo.html#setShiftX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveTempo"},{"id":4680,"kind":2048,"name":"setShiftY","url":"classes/StaveTempo.html#setShiftY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveTempo"},{"id":4681,"kind":2048,"name":"draw","url":"classes/StaveTempo.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveTempo"},{"id":4682,"kind":2048,"name":"getPosition","url":"classes/StaveTempo.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4683,"kind":2048,"name":"setPosition","url":"classes/StaveTempo.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4684,"kind":2048,"name":"getStave","url":"classes/StaveTempo.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4685,"kind":2048,"name":"checkStave","url":"classes/StaveTempo.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4686,"kind":2048,"name":"setStave","url":"classes/StaveTempo.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4687,"kind":2048,"name":"getWidth","url":"classes/StaveTempo.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4688,"kind":2048,"name":"setWidth","url":"classes/StaveTempo.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4689,"kind":2048,"name":"getX","url":"classes/StaveTempo.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4690,"kind":2048,"name":"setX","url":"classes/StaveTempo.html#setX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4691,"kind":2048,"name":"placeGlyphOnLine","url":"classes/StaveTempo.html#placeGlyphOnLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4692,"kind":2048,"name":"getPadding","url":"classes/StaveTempo.html#getPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4693,"kind":2048,"name":"setPadding","url":"classes/StaveTempo.html#setPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4694,"kind":2048,"name":"setLayoutMetrics","url":"classes/StaveTempo.html#setLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4695,"kind":2048,"name":"getLayoutMetrics","url":"classes/StaveTempo.html#getLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4696,"kind":2048,"name":"addChildElement","url":"classes/StaveTempo.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4697,"kind":2048,"name":"getCategory","url":"classes/StaveTempo.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4698,"kind":2048,"name":"setStyle","url":"classes/StaveTempo.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4699,"kind":2048,"name":"setGroupStyle","url":"classes/StaveTempo.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4700,"kind":2048,"name":"getStyle","url":"classes/StaveTempo.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4701,"kind":2048,"name":"applyStyle","url":"classes/StaveTempo.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4702,"kind":2048,"name":"restoreStyle","url":"classes/StaveTempo.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4703,"kind":2048,"name":"drawWithStyle","url":"classes/StaveTempo.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4704,"kind":2048,"name":"hasClass","url":"classes/StaveTempo.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4705,"kind":2048,"name":"addClass","url":"classes/StaveTempo.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4706,"kind":2048,"name":"removeClass","url":"classes/StaveTempo.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4707,"kind":2048,"name":"onRegister","url":"classes/StaveTempo.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4708,"kind":2048,"name":"isRendered","url":"classes/StaveTempo.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4709,"kind":2048,"name":"setRendered","url":"classes/StaveTempo.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4710,"kind":2048,"name":"getAttributes","url":"classes/StaveTempo.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4711,"kind":2048,"name":"getAttribute","url":"classes/StaveTempo.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4712,"kind":2048,"name":"getSVGElement","url":"classes/StaveTempo.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4713,"kind":2048,"name":"setAttribute","url":"classes/StaveTempo.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4714,"kind":2048,"name":"getBoundingBox","url":"classes/StaveTempo.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4715,"kind":2048,"name":"getContext","url":"classes/StaveTempo.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4716,"kind":2048,"name":"setContext","url":"classes/StaveTempo.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4717,"kind":2048,"name":"checkContext","url":"classes/StaveTempo.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4718,"kind":262144,"name":"font","url":"classes/StaveTempo.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4719,"kind":2048,"name":"setFont","url":"classes/StaveTempo.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4720,"kind":2048,"name":"getFont","url":"classes/StaveTempo.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4721,"kind":2048,"name":"resetFont","url":"classes/StaveTempo.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4722,"kind":262144,"name":"fontInfo","url":"classes/StaveTempo.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4723,"kind":2048,"name":"setFontSize","url":"classes/StaveTempo.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4724,"kind":2048,"name":"getFontSize","url":"classes/StaveTempo.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4725,"kind":262144,"name":"fontSize","url":"classes/StaveTempo.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4726,"kind":262144,"name":"fontSizeInPoints","url":"classes/StaveTempo.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4727,"kind":262144,"name":"fontSizeInPixels","url":"classes/StaveTempo.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4728,"kind":262144,"name":"fontStyle","url":"classes/StaveTempo.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4729,"kind":262144,"name":"fontWeight","url":"classes/StaveTempo.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveTempo"},{"id":4730,"kind":128,"name":"StaveText","url":"classes/StaveText.html","classes":"tsd-kind-class"},{"id":4731,"kind":262144,"name":"CATEGORY","url":"classes/StaveText.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveText"},{"id":4732,"kind":1024,"name":"TEXT_FONT","url":"classes/StaveText.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveText"},{"id":4733,"kind":262144,"name":"Position","url":"classes/StaveText.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"StaveText"},{"id":4734,"kind":512,"name":"constructor","url":"classes/StaveText.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"StaveText"},{"id":4735,"kind":2048,"name":"setStaveText","url":"classes/StaveText.html#setStaveText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveText"},{"id":4736,"kind":2048,"name":"setShiftX","url":"classes/StaveText.html#setShiftX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveText"},{"id":4737,"kind":2048,"name":"setShiftY","url":"classes/StaveText.html#setShiftY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveText"},{"id":4738,"kind":2048,"name":"setText","url":"classes/StaveText.html#setText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveText"},{"id":4739,"kind":2048,"name":"draw","url":"classes/StaveText.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveText"},{"id":4740,"kind":2048,"name":"getPosition","url":"classes/StaveText.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4741,"kind":2048,"name":"setPosition","url":"classes/StaveText.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4742,"kind":2048,"name":"getStave","url":"classes/StaveText.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4743,"kind":2048,"name":"checkStave","url":"classes/StaveText.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4744,"kind":2048,"name":"setStave","url":"classes/StaveText.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4745,"kind":2048,"name":"getWidth","url":"classes/StaveText.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4746,"kind":2048,"name":"setWidth","url":"classes/StaveText.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4747,"kind":2048,"name":"getX","url":"classes/StaveText.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4748,"kind":2048,"name":"setX","url":"classes/StaveText.html#setX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4749,"kind":2048,"name":"placeGlyphOnLine","url":"classes/StaveText.html#placeGlyphOnLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4750,"kind":2048,"name":"getPadding","url":"classes/StaveText.html#getPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4751,"kind":2048,"name":"setPadding","url":"classes/StaveText.html#setPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4752,"kind":2048,"name":"setLayoutMetrics","url":"classes/StaveText.html#setLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4753,"kind":2048,"name":"getLayoutMetrics","url":"classes/StaveText.html#getLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4754,"kind":2048,"name":"addChildElement","url":"classes/StaveText.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4755,"kind":2048,"name":"getCategory","url":"classes/StaveText.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4756,"kind":2048,"name":"setStyle","url":"classes/StaveText.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4757,"kind":2048,"name":"setGroupStyle","url":"classes/StaveText.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4758,"kind":2048,"name":"getStyle","url":"classes/StaveText.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4759,"kind":2048,"name":"applyStyle","url":"classes/StaveText.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4760,"kind":2048,"name":"restoreStyle","url":"classes/StaveText.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4761,"kind":2048,"name":"drawWithStyle","url":"classes/StaveText.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4762,"kind":2048,"name":"hasClass","url":"classes/StaveText.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4763,"kind":2048,"name":"addClass","url":"classes/StaveText.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4764,"kind":2048,"name":"removeClass","url":"classes/StaveText.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4765,"kind":2048,"name":"onRegister","url":"classes/StaveText.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4766,"kind":2048,"name":"isRendered","url":"classes/StaveText.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4767,"kind":2048,"name":"setRendered","url":"classes/StaveText.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4768,"kind":2048,"name":"getAttributes","url":"classes/StaveText.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4769,"kind":2048,"name":"getAttribute","url":"classes/StaveText.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4770,"kind":2048,"name":"getSVGElement","url":"classes/StaveText.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4771,"kind":2048,"name":"setAttribute","url":"classes/StaveText.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4772,"kind":2048,"name":"getBoundingBox","url":"classes/StaveText.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4773,"kind":2048,"name":"getContext","url":"classes/StaveText.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4774,"kind":2048,"name":"setContext","url":"classes/StaveText.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4775,"kind":2048,"name":"checkContext","url":"classes/StaveText.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4776,"kind":262144,"name":"font","url":"classes/StaveText.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4777,"kind":2048,"name":"setFont","url":"classes/StaveText.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4778,"kind":2048,"name":"getFont","url":"classes/StaveText.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4779,"kind":2048,"name":"resetFont","url":"classes/StaveText.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4780,"kind":262144,"name":"fontInfo","url":"classes/StaveText.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4781,"kind":2048,"name":"setFontSize","url":"classes/StaveText.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4782,"kind":2048,"name":"getFontSize","url":"classes/StaveText.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4783,"kind":262144,"name":"fontSize","url":"classes/StaveText.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4784,"kind":262144,"name":"fontSizeInPoints","url":"classes/StaveText.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4785,"kind":262144,"name":"fontSizeInPixels","url":"classes/StaveText.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4786,"kind":262144,"name":"fontStyle","url":"classes/StaveText.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4787,"kind":262144,"name":"fontWeight","url":"classes/StaveText.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveText"},{"id":4788,"kind":256,"name":"TieNotes","url":"interfaces/TieNotes.html","classes":"tsd-kind-interface"},{"id":4789,"kind":1024,"name":"first_note","url":"interfaces/TieNotes.html#first_note","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TieNotes"},{"id":4790,"kind":1024,"name":"last_note","url":"interfaces/TieNotes.html#last_note","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TieNotes"},{"id":4791,"kind":1024,"name":"first_indices","url":"interfaces/TieNotes.html#first_indices","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TieNotes"},{"id":4792,"kind":1024,"name":"last_indices","url":"interfaces/TieNotes.html#last_indices","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TieNotes"},{"id":4793,"kind":128,"name":"StaveTie","url":"classes/StaveTie.html","classes":"tsd-kind-class"},{"id":4794,"kind":262144,"name":"CATEGORY","url":"classes/StaveTie.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveTie"},{"id":4795,"kind":1024,"name":"TEXT_FONT","url":"classes/StaveTie.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StaveTie"},{"id":4796,"kind":512,"name":"constructor","url":"classes/StaveTie.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"StaveTie"},{"id":4797,"kind":1024,"name":"render_options","url":"classes/StaveTie.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StaveTie"},{"id":4798,"kind":65536,"name":"__type","url":"classes/StaveTie.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"StaveTie"},{"id":4799,"kind":1024,"name":"cp2","url":"classes/StaveTie.html#__type.cp2","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveTie.__type"},{"id":4800,"kind":1024,"name":"last_x_shift","url":"classes/StaveTie.html#__type.last_x_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveTie.__type"},{"id":4801,"kind":1024,"name":"tie_spacing","url":"classes/StaveTie.html#__type.tie_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveTie.__type"},{"id":4802,"kind":1024,"name":"cp1","url":"classes/StaveTie.html#__type.cp1","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveTie.__type"},{"id":4803,"kind":1024,"name":"first_x_shift","url":"classes/StaveTie.html#__type.first_x_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveTie.__type"},{"id":4804,"kind":1024,"name":"text_shift_x","url":"classes/StaveTie.html#__type.text_shift_x","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveTie.__type"},{"id":4805,"kind":1024,"name":"y_shift","url":"classes/StaveTie.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StaveTie.__type"},{"id":4806,"kind":2048,"name":"setDirection","url":"classes/StaveTie.html#setDirection","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveTie"},{"id":4807,"kind":2048,"name":"setNotes","url":"classes/StaveTie.html#setNotes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveTie"},{"id":4808,"kind":2048,"name":"isPartial","url":"classes/StaveTie.html#isPartial","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveTie"},{"id":4809,"kind":2048,"name":"renderTie","url":"classes/StaveTie.html#renderTie","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveTie"},{"id":4810,"kind":2048,"name":"renderText","url":"classes/StaveTie.html#renderText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveTie"},{"id":4811,"kind":2048,"name":"getNotes","url":"classes/StaveTie.html#getNotes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StaveTie"},{"id":4812,"kind":2048,"name":"draw","url":"classes/StaveTie.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StaveTie"},{"id":4813,"kind":2048,"name":"addChildElement","url":"classes/StaveTie.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4814,"kind":2048,"name":"getCategory","url":"classes/StaveTie.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4815,"kind":2048,"name":"setStyle","url":"classes/StaveTie.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4816,"kind":2048,"name":"setGroupStyle","url":"classes/StaveTie.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4817,"kind":2048,"name":"getStyle","url":"classes/StaveTie.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4818,"kind":2048,"name":"applyStyle","url":"classes/StaveTie.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4819,"kind":2048,"name":"restoreStyle","url":"classes/StaveTie.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4820,"kind":2048,"name":"drawWithStyle","url":"classes/StaveTie.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4821,"kind":2048,"name":"hasClass","url":"classes/StaveTie.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4822,"kind":2048,"name":"addClass","url":"classes/StaveTie.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4823,"kind":2048,"name":"removeClass","url":"classes/StaveTie.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4824,"kind":2048,"name":"onRegister","url":"classes/StaveTie.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4825,"kind":2048,"name":"isRendered","url":"classes/StaveTie.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4826,"kind":2048,"name":"setRendered","url":"classes/StaveTie.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4827,"kind":2048,"name":"getAttributes","url":"classes/StaveTie.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4828,"kind":2048,"name":"getAttribute","url":"classes/StaveTie.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4829,"kind":2048,"name":"getSVGElement","url":"classes/StaveTie.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4830,"kind":2048,"name":"setAttribute","url":"classes/StaveTie.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4831,"kind":2048,"name":"getBoundingBox","url":"classes/StaveTie.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4832,"kind":2048,"name":"getContext","url":"classes/StaveTie.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4833,"kind":2048,"name":"setContext","url":"classes/StaveTie.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4834,"kind":2048,"name":"checkContext","url":"classes/StaveTie.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4835,"kind":262144,"name":"font","url":"classes/StaveTie.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4836,"kind":2048,"name":"setFont","url":"classes/StaveTie.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4837,"kind":2048,"name":"getFont","url":"classes/StaveTie.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4838,"kind":2048,"name":"resetFont","url":"classes/StaveTie.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4839,"kind":262144,"name":"fontInfo","url":"classes/StaveTie.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4840,"kind":2048,"name":"setFontSize","url":"classes/StaveTie.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4841,"kind":2048,"name":"getFontSize","url":"classes/StaveTie.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4842,"kind":262144,"name":"fontSize","url":"classes/StaveTie.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4843,"kind":262144,"name":"fontSizeInPoints","url":"classes/StaveTie.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4844,"kind":262144,"name":"fontSizeInPixels","url":"classes/StaveTie.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4845,"kind":262144,"name":"fontStyle","url":"classes/StaveTie.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4846,"kind":262144,"name":"fontWeight","url":"classes/StaveTie.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StaveTie"},{"id":4847,"kind":8,"name":"VoltaType","url":"enums/VoltaType.html","classes":"tsd-kind-enum"},{"id":4848,"kind":16,"name":"NONE","url":"enums/VoltaType.html#NONE","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VoltaType"},{"id":4849,"kind":16,"name":"BEGIN","url":"enums/VoltaType.html#BEGIN","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VoltaType"},{"id":4850,"kind":16,"name":"MID","url":"enums/VoltaType.html#MID","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VoltaType"},{"id":4851,"kind":16,"name":"END","url":"enums/VoltaType.html#END","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VoltaType"},{"id":4852,"kind":16,"name":"BEGIN_END","url":"enums/VoltaType.html#BEGIN_END","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VoltaType"},{"id":4853,"kind":128,"name":"Volta","url":"classes/Volta.html","classes":"tsd-kind-class"},{"id":4854,"kind":262144,"name":"CATEGORY","url":"classes/Volta.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Volta"},{"id":4855,"kind":262144,"name":"type","url":"classes/Volta.html#type","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Volta"},{"id":4856,"kind":1024,"name":"TEXT_FONT","url":"classes/Volta.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Volta"},{"id":4857,"kind":262144,"name":"Position","url":"classes/Volta.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Volta"},{"id":4858,"kind":512,"name":"constructor","url":"classes/Volta.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Volta"},{"id":4859,"kind":2048,"name":"setShiftY","url":"classes/Volta.html#setShiftY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Volta"},{"id":4860,"kind":2048,"name":"draw","url":"classes/Volta.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Volta"},{"id":4861,"kind":2048,"name":"getPosition","url":"classes/Volta.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4862,"kind":2048,"name":"setPosition","url":"classes/Volta.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4863,"kind":2048,"name":"getStave","url":"classes/Volta.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4864,"kind":2048,"name":"checkStave","url":"classes/Volta.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4865,"kind":2048,"name":"setStave","url":"classes/Volta.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4866,"kind":2048,"name":"getWidth","url":"classes/Volta.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4867,"kind":2048,"name":"setWidth","url":"classes/Volta.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4868,"kind":2048,"name":"getX","url":"classes/Volta.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4869,"kind":2048,"name":"setX","url":"classes/Volta.html#setX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4870,"kind":2048,"name":"placeGlyphOnLine","url":"classes/Volta.html#placeGlyphOnLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4871,"kind":2048,"name":"getPadding","url":"classes/Volta.html#getPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4872,"kind":2048,"name":"setPadding","url":"classes/Volta.html#setPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4873,"kind":2048,"name":"setLayoutMetrics","url":"classes/Volta.html#setLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4874,"kind":2048,"name":"getLayoutMetrics","url":"classes/Volta.html#getLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4875,"kind":2048,"name":"addChildElement","url":"classes/Volta.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4876,"kind":2048,"name":"getCategory","url":"classes/Volta.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4877,"kind":2048,"name":"setStyle","url":"classes/Volta.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4878,"kind":2048,"name":"setGroupStyle","url":"classes/Volta.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4879,"kind":2048,"name":"getStyle","url":"classes/Volta.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4880,"kind":2048,"name":"applyStyle","url":"classes/Volta.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4881,"kind":2048,"name":"restoreStyle","url":"classes/Volta.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4882,"kind":2048,"name":"drawWithStyle","url":"classes/Volta.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4883,"kind":2048,"name":"hasClass","url":"classes/Volta.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4884,"kind":2048,"name":"addClass","url":"classes/Volta.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4885,"kind":2048,"name":"removeClass","url":"classes/Volta.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4886,"kind":2048,"name":"onRegister","url":"classes/Volta.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4887,"kind":2048,"name":"isRendered","url":"classes/Volta.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4888,"kind":2048,"name":"setRendered","url":"classes/Volta.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4889,"kind":2048,"name":"getAttributes","url":"classes/Volta.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4890,"kind":2048,"name":"getAttribute","url":"classes/Volta.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4891,"kind":2048,"name":"getSVGElement","url":"classes/Volta.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4892,"kind":2048,"name":"setAttribute","url":"classes/Volta.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4893,"kind":2048,"name":"getBoundingBox","url":"classes/Volta.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4894,"kind":2048,"name":"getContext","url":"classes/Volta.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4895,"kind":2048,"name":"setContext","url":"classes/Volta.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4896,"kind":2048,"name":"checkContext","url":"classes/Volta.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4897,"kind":262144,"name":"font","url":"classes/Volta.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4898,"kind":2048,"name":"setFont","url":"classes/Volta.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4899,"kind":2048,"name":"getFont","url":"classes/Volta.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4900,"kind":2048,"name":"resetFont","url":"classes/Volta.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4901,"kind":262144,"name":"fontInfo","url":"classes/Volta.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4902,"kind":2048,"name":"setFontSize","url":"classes/Volta.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4903,"kind":2048,"name":"getFontSize","url":"classes/Volta.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4904,"kind":262144,"name":"fontSize","url":"classes/Volta.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4905,"kind":262144,"name":"fontSizeInPoints","url":"classes/Volta.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4906,"kind":262144,"name":"fontSizeInPixels","url":"classes/Volta.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4907,"kind":262144,"name":"fontStyle","url":"classes/Volta.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4908,"kind":262144,"name":"fontWeight","url":"classes/Volta.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Volta"},{"id":4909,"kind":256,"name":"StemOptions","url":"interfaces/StemOptions.html","classes":"tsd-kind-interface"},{"id":4910,"kind":1024,"name":"stem_down_y_base_offset","url":"interfaces/StemOptions.html#stem_down_y_base_offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4911,"kind":1024,"name":"stem_up_y_base_offset","url":"interfaces/StemOptions.html#stem_up_y_base_offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4912,"kind":1024,"name":"stem_down_y_offset","url":"interfaces/StemOptions.html#stem_down_y_offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4913,"kind":1024,"name":"stem_up_y_offset","url":"interfaces/StemOptions.html#stem_up_y_offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4914,"kind":1024,"name":"stemletHeight","url":"interfaces/StemOptions.html#stemletHeight","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4915,"kind":1024,"name":"isStemlet","url":"interfaces/StemOptions.html#isStemlet","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4916,"kind":1024,"name":"hide","url":"interfaces/StemOptions.html#hide","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4917,"kind":1024,"name":"stem_direction","url":"interfaces/StemOptions.html#stem_direction","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4918,"kind":1024,"name":"stem_extension","url":"interfaces/StemOptions.html#stem_extension","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4919,"kind":1024,"name":"y_bottom","url":"interfaces/StemOptions.html#y_bottom","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4920,"kind":1024,"name":"y_top","url":"interfaces/StemOptions.html#y_top","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4921,"kind":1024,"name":"x_end","url":"interfaces/StemOptions.html#x_end","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4922,"kind":1024,"name":"x_begin","url":"interfaces/StemOptions.html#x_begin","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StemOptions"},{"id":4923,"kind":128,"name":"Stem","url":"classes/Stem.html","classes":"tsd-kind-class"},{"id":4924,"kind":1024,"name":"DEBUG","url":"classes/Stem.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Stem"},{"id":4925,"kind":262144,"name":"CATEGORY","url":"classes/Stem.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Stem"},{"id":4926,"kind":262144,"name":"UP","url":"classes/Stem.html#UP","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Stem"},{"id":4927,"kind":262144,"name":"DOWN","url":"classes/Stem.html#DOWN","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Stem"},{"id":4928,"kind":262144,"name":"WIDTH","url":"classes/Stem.html#WIDTH","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Stem"},{"id":4929,"kind":262144,"name":"HEIGHT","url":"classes/Stem.html#HEIGHT","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Stem"},{"id":4930,"kind":1024,"name":"TEXT_FONT","url":"classes/Stem.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Stem"},{"id":4931,"kind":512,"name":"constructor","url":"classes/Stem.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Stem"},{"id":4932,"kind":2048,"name":"setOptions","url":"classes/Stem.html#setOptions","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4933,"kind":2048,"name":"setNoteHeadXBounds","url":"classes/Stem.html#setNoteHeadXBounds","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4934,"kind":2048,"name":"setDirection","url":"classes/Stem.html#setDirection","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4935,"kind":2048,"name":"setExtension","url":"classes/Stem.html#setExtension","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4936,"kind":2048,"name":"getExtension","url":"classes/Stem.html#getExtension","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4937,"kind":2048,"name":"setYBounds","url":"classes/Stem.html#setYBounds","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4938,"kind":2048,"name":"getHeight","url":"classes/Stem.html#getHeight","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4939,"kind":2048,"name":"getBoundingBox","url":"classes/Stem.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Stem"},{"id":4940,"kind":2048,"name":"getExtents","url":"classes/Stem.html#getExtents","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4941,"kind":2048,"name":"setVisibility","url":"classes/Stem.html#setVisibility","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4942,"kind":2048,"name":"setStemlet","url":"classes/Stem.html#setStemlet","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4943,"kind":2048,"name":"adjustHeightForFlag","url":"classes/Stem.html#adjustHeightForFlag","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4944,"kind":2048,"name":"adjustHeightForBeam","url":"classes/Stem.html#adjustHeightForBeam","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stem"},{"id":4945,"kind":2048,"name":"draw","url":"classes/Stem.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Stem"},{"id":4946,"kind":2048,"name":"addChildElement","url":"classes/Stem.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4947,"kind":2048,"name":"getCategory","url":"classes/Stem.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4948,"kind":2048,"name":"setStyle","url":"classes/Stem.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4949,"kind":2048,"name":"setGroupStyle","url":"classes/Stem.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4950,"kind":2048,"name":"getStyle","url":"classes/Stem.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4951,"kind":2048,"name":"applyStyle","url":"classes/Stem.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4952,"kind":2048,"name":"restoreStyle","url":"classes/Stem.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4953,"kind":2048,"name":"drawWithStyle","url":"classes/Stem.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4954,"kind":2048,"name":"hasClass","url":"classes/Stem.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4955,"kind":2048,"name":"addClass","url":"classes/Stem.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4956,"kind":2048,"name":"removeClass","url":"classes/Stem.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4957,"kind":2048,"name":"onRegister","url":"classes/Stem.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4958,"kind":2048,"name":"isRendered","url":"classes/Stem.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4959,"kind":2048,"name":"setRendered","url":"classes/Stem.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4960,"kind":2048,"name":"getAttributes","url":"classes/Stem.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4961,"kind":2048,"name":"getAttribute","url":"classes/Stem.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4962,"kind":2048,"name":"getSVGElement","url":"classes/Stem.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4963,"kind":2048,"name":"setAttribute","url":"classes/Stem.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4964,"kind":2048,"name":"getContext","url":"classes/Stem.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4965,"kind":2048,"name":"setContext","url":"classes/Stem.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4966,"kind":2048,"name":"checkContext","url":"classes/Stem.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4967,"kind":262144,"name":"font","url":"classes/Stem.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4968,"kind":2048,"name":"setFont","url":"classes/Stem.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4969,"kind":2048,"name":"getFont","url":"classes/Stem.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4970,"kind":2048,"name":"resetFont","url":"classes/Stem.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4971,"kind":262144,"name":"fontInfo","url":"classes/Stem.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4972,"kind":2048,"name":"setFontSize","url":"classes/Stem.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4973,"kind":2048,"name":"getFontSize","url":"classes/Stem.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4974,"kind":262144,"name":"fontSize","url":"classes/Stem.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4975,"kind":262144,"name":"fontSizeInPoints","url":"classes/Stem.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4976,"kind":262144,"name":"fontSizeInPixels","url":"classes/Stem.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4977,"kind":262144,"name":"fontStyle","url":"classes/Stem.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4978,"kind":262144,"name":"fontWeight","url":"classes/Stem.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stem"},{"id":4979,"kind":128,"name":"StemmableNote","url":"classes/StemmableNote.html","classes":"tsd-kind-class"},{"id":4980,"kind":262144,"name":"CATEGORY","url":"classes/StemmableNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StemmableNote"},{"id":4981,"kind":2048,"name":"plotMetrics","url":"classes/StemmableNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"StemmableNote"},{"id":4982,"kind":1024,"name":"TEXT_FONT","url":"classes/StemmableNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"StemmableNote"},{"id":4983,"kind":512,"name":"constructor","url":"classes/StemmableNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"StemmableNote"},{"id":4984,"kind":1024,"name":"stem_direction","url":"classes/StemmableNote.html#stem_direction","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StemmableNote"},{"id":4985,"kind":1024,"name":"stem","url":"classes/StemmableNote.html#stem","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StemmableNote"},{"id":4986,"kind":2048,"name":"getStem","url":"classes/StemmableNote.html#getStem","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4987,"kind":2048,"name":"checkStem","url":"classes/StemmableNote.html#checkStem","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4988,"kind":2048,"name":"setStem","url":"classes/StemmableNote.html#setStem","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4989,"kind":2048,"name":"buildStem","url":"classes/StemmableNote.html#buildStem","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4990,"kind":2048,"name":"buildFlag","url":"classes/StemmableNote.html#buildFlag","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4991,"kind":2048,"name":"getBaseCustomNoteHeadGlyph","url":"classes/StemmableNote.html#getBaseCustomNoteHeadGlyph","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4992,"kind":2048,"name":"getStemLength","url":"classes/StemmableNote.html#getStemLength","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4993,"kind":2048,"name":"getBeamCount","url":"classes/StemmableNote.html#getBeamCount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4994,"kind":2048,"name":"getStemMinimumLength","url":"classes/StemmableNote.html#getStemMinimumLength","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4995,"kind":2048,"name":"getStemDirection","url":"classes/StemmableNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StemmableNote"},{"id":4996,"kind":2048,"name":"setStemDirection","url":"classes/StemmableNote.html#setStemDirection","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4997,"kind":2048,"name":"getStemX","url":"classes/StemmableNote.html#getStemX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4998,"kind":2048,"name":"getCenterGlyphX","url":"classes/StemmableNote.html#getCenterGlyphX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":4999,"kind":2048,"name":"getStemExtension","url":"classes/StemmableNote.html#getStemExtension","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":5000,"kind":2048,"name":"setStemLength","url":"classes/StemmableNote.html#setStemLength","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":5001,"kind":2048,"name":"getStemExtents","url":"classes/StemmableNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StemmableNote"},{"id":5002,"kind":2048,"name":"getYForTopText","url":"classes/StemmableNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StemmableNote"},{"id":5003,"kind":2048,"name":"getYForBottomText","url":"classes/StemmableNote.html#getYForBottomText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":5004,"kind":2048,"name":"hasFlag","url":"classes/StemmableNote.html#hasFlag","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":5005,"kind":2048,"name":"postFormat","url":"classes/StemmableNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StemmableNote"},{"id":5006,"kind":2048,"name":"drawStem","url":"classes/StemmableNote.html#drawStem","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StemmableNote"},{"id":5007,"kind":1024,"name":"glyph","url":"classes/StemmableNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5008,"kind":1024,"name":"keys","url":"classes/StemmableNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5009,"kind":1024,"name":"keyProps","url":"classes/StemmableNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5010,"kind":1024,"name":"render_options","url":"classes/StemmableNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5011,"kind":65536,"name":"__type","url":"classes/StemmableNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"StemmableNote"},{"id":5012,"kind":1024,"name":"draw_stem_through_stave","url":"classes/StemmableNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":5013,"kind":1024,"name":"draw","url":"classes/StemmableNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":5014,"kind":1024,"name":"draw_dots","url":"classes/StemmableNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":5015,"kind":1024,"name":"draw_stem","url":"classes/StemmableNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":5016,"kind":1024,"name":"y_shift","url":"classes/StemmableNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":5017,"kind":1024,"name":"extend_left","url":"classes/StemmableNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":5018,"kind":1024,"name":"extend_right","url":"classes/StemmableNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":5019,"kind":1024,"name":"glyph_font_scale","url":"classes/StemmableNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":5020,"kind":1024,"name":"annotation_spacing","url":"classes/StemmableNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":5021,"kind":1024,"name":"glyph_font_size","url":"classes/StemmableNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":5022,"kind":1024,"name":"scale","url":"classes/StemmableNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":5023,"kind":1024,"name":"font","url":"classes/StemmableNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":5024,"kind":1024,"name":"stroke_px","url":"classes/StemmableNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"StemmableNote.__type"},{"id":5025,"kind":2048,"name":"getPlayNote","url":"classes/StemmableNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5026,"kind":2048,"name":"setPlayNote","url":"classes/StemmableNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5027,"kind":2048,"name":"isRest","url":"classes/StemmableNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5028,"kind":2048,"name":"addStroke","url":"classes/StemmableNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5029,"kind":2048,"name":"getStave","url":"classes/StemmableNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5030,"kind":2048,"name":"checkStave","url":"classes/StemmableNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5031,"kind":2048,"name":"setStave","url":"classes/StemmableNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5032,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/StemmableNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5033,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/StemmableNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5034,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/StemmableNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5035,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/StemmableNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5036,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/StemmableNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5037,"kind":2048,"name":"getLineNumber","url":"classes/StemmableNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5038,"kind":2048,"name":"getLineForRest","url":"classes/StemmableNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5039,"kind":2048,"name":"getGlyph","url":"classes/StemmableNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5040,"kind":2048,"name":"getGlyphWidth","url":"classes/StemmableNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5041,"kind":2048,"name":"setYs","url":"classes/StemmableNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5042,"kind":2048,"name":"getYs","url":"classes/StemmableNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5043,"kind":2048,"name":"getVoice","url":"classes/StemmableNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5044,"kind":2048,"name":"setVoice","url":"classes/StemmableNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5045,"kind":2048,"name":"getTickContext","url":"classes/StemmableNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5046,"kind":2048,"name":"setTickContext","url":"classes/StemmableNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5047,"kind":2048,"name":"getDuration","url":"classes/StemmableNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5048,"kind":2048,"name":"isDotted","url":"classes/StemmableNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5049,"kind":2048,"name":"hasStem","url":"classes/StemmableNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5050,"kind":2048,"name":"getNoteType","url":"classes/StemmableNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5051,"kind":2048,"name":"getBeam","url":"classes/StemmableNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5052,"kind":2048,"name":"checkBeam","url":"classes/StemmableNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5053,"kind":2048,"name":"hasBeam","url":"classes/StemmableNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5054,"kind":2048,"name":"setBeam","url":"classes/StemmableNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5055,"kind":2048,"name":"addModifier","url":"classes/StemmableNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5056,"kind":2048,"name":"getModifiersByType","url":"classes/StemmableNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5057,"kind":2048,"name":"getModifierStartXY","url":"classes/StemmableNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5058,"kind":2048,"name":"getRightParenthesisPx","url":"classes/StemmableNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5059,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/StemmableNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5060,"kind":2048,"name":"getFirstDotPx","url":"classes/StemmableNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5061,"kind":2048,"name":"getMetrics","url":"classes/StemmableNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5062,"kind":2048,"name":"getAbsoluteX","url":"classes/StemmableNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5063,"kind":2048,"name":"getTieRightX","url":"classes/StemmableNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5064,"kind":2048,"name":"getTieLeftX","url":"classes/StemmableNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5065,"kind":2048,"name":"getKeys","url":"classes/StemmableNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5066,"kind":2048,"name":"getKeyProps","url":"classes/StemmableNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5067,"kind":2048,"name":"reset","url":"classes/StemmableNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5068,"kind":2048,"name":"getTicks","url":"classes/StemmableNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5069,"kind":2048,"name":"setIgnoreTicks","url":"classes/StemmableNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5070,"kind":2048,"name":"setWidth","url":"classes/StemmableNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5071,"kind":2048,"name":"getWidth","url":"classes/StemmableNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5072,"kind":2048,"name":"setXShift","url":"classes/StemmableNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5073,"kind":2048,"name":"getXShift","url":"classes/StemmableNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5074,"kind":2048,"name":"getX","url":"classes/StemmableNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5075,"kind":2048,"name":"getFormatterMetrics","url":"classes/StemmableNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5076,"kind":2048,"name":"getCenterXShift","url":"classes/StemmableNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5077,"kind":2048,"name":"setCenterXShift","url":"classes/StemmableNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5078,"kind":2048,"name":"isCenterAligned","url":"classes/StemmableNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5079,"kind":2048,"name":"setCenterAlignment","url":"classes/StemmableNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5080,"kind":2048,"name":"getTuplet","url":"classes/StemmableNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5081,"kind":2048,"name":"getTupletStack","url":"classes/StemmableNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5082,"kind":2048,"name":"resetTuplet","url":"classes/StemmableNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5083,"kind":2048,"name":"setTuplet","url":"classes/StemmableNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5084,"kind":2048,"name":"addToModifierContext","url":"classes/StemmableNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5085,"kind":2048,"name":"getModifiers","url":"classes/StemmableNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5086,"kind":2048,"name":"checkTickContext","url":"classes/StemmableNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5087,"kind":2048,"name":"preFormat","url":"classes/StemmableNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5088,"kind":262144,"name":"preFormatted","url":"classes/StemmableNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5089,"kind":262144,"name":"postFormatted","url":"classes/StemmableNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5090,"kind":2048,"name":"getIntrinsicTicks","url":"classes/StemmableNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5091,"kind":2048,"name":"setIntrinsicTicks","url":"classes/StemmableNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5092,"kind":2048,"name":"getTickMultiplier","url":"classes/StemmableNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5093,"kind":2048,"name":"applyTickMultiplier","url":"classes/StemmableNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5094,"kind":2048,"name":"setDuration","url":"classes/StemmableNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5095,"kind":2048,"name":"setModifierContext","url":"classes/StemmableNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5096,"kind":2048,"name":"getModifierContext","url":"classes/StemmableNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5097,"kind":2048,"name":"checkModifierContext","url":"classes/StemmableNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5098,"kind":2048,"name":"addChildElement","url":"classes/StemmableNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5099,"kind":2048,"name":"getCategory","url":"classes/StemmableNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5100,"kind":2048,"name":"setStyle","url":"classes/StemmableNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5101,"kind":2048,"name":"setGroupStyle","url":"classes/StemmableNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5102,"kind":2048,"name":"getStyle","url":"classes/StemmableNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5103,"kind":2048,"name":"applyStyle","url":"classes/StemmableNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5104,"kind":2048,"name":"restoreStyle","url":"classes/StemmableNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5105,"kind":2048,"name":"drawWithStyle","url":"classes/StemmableNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5106,"kind":2048,"name":"draw","url":"classes/StemmableNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5107,"kind":2048,"name":"hasClass","url":"classes/StemmableNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5108,"kind":2048,"name":"addClass","url":"classes/StemmableNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5109,"kind":2048,"name":"removeClass","url":"classes/StemmableNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5110,"kind":2048,"name":"onRegister","url":"classes/StemmableNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5111,"kind":2048,"name":"isRendered","url":"classes/StemmableNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5112,"kind":2048,"name":"setRendered","url":"classes/StemmableNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5113,"kind":2048,"name":"getAttributes","url":"classes/StemmableNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5114,"kind":2048,"name":"getAttribute","url":"classes/StemmableNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5115,"kind":2048,"name":"getSVGElement","url":"classes/StemmableNote.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5116,"kind":2048,"name":"setAttribute","url":"classes/StemmableNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5117,"kind":2048,"name":"getBoundingBox","url":"classes/StemmableNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5118,"kind":2048,"name":"getContext","url":"classes/StemmableNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5119,"kind":2048,"name":"setContext","url":"classes/StemmableNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5120,"kind":2048,"name":"checkContext","url":"classes/StemmableNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5121,"kind":262144,"name":"font","url":"classes/StemmableNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5122,"kind":2048,"name":"setFont","url":"classes/StemmableNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5123,"kind":2048,"name":"getFont","url":"classes/StemmableNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5124,"kind":2048,"name":"resetFont","url":"classes/StemmableNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5125,"kind":262144,"name":"fontInfo","url":"classes/StemmableNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5126,"kind":2048,"name":"setFontSize","url":"classes/StemmableNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5127,"kind":2048,"name":"getFontSize","url":"classes/StemmableNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5128,"kind":262144,"name":"fontSize","url":"classes/StemmableNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5129,"kind":262144,"name":"fontSizeInPoints","url":"classes/StemmableNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5130,"kind":262144,"name":"fontSizeInPixels","url":"classes/StemmableNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5131,"kind":262144,"name":"fontStyle","url":"classes/StemmableNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5132,"kind":262144,"name":"fontWeight","url":"classes/StemmableNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StemmableNote"},{"id":5133,"kind":128,"name":"StringNumber","url":"classes/StringNumber.html","classes":"tsd-kind-class"},{"id":5134,"kind":262144,"name":"CATEGORY","url":"classes/StringNumber.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StringNumber"},{"id":5135,"kind":1024,"name":"TEXT_FONT","url":"classes/StringNumber.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"StringNumber"},{"id":5136,"kind":262144,"name":"metrics","url":"classes/StringNumber.html#metrics","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"StringNumber"},{"id":5137,"kind":2048,"name":"format","url":"classes/StringNumber.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"StringNumber"},{"id":5138,"kind":262144,"name":"Position","url":"classes/StringNumber.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"StringNumber"},{"id":5139,"kind":262144,"name":"PositionString","url":"classes/StringNumber.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"StringNumber"},{"id":5140,"kind":512,"name":"constructor","url":"classes/StringNumber.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"StringNumber"},{"id":5141,"kind":2048,"name":"setLineEndType","url":"classes/StringNumber.html#setLineEndType","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StringNumber"},{"id":5142,"kind":2048,"name":"setStringNumber","url":"classes/StringNumber.html#setStringNumber","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StringNumber"},{"id":5143,"kind":2048,"name":"setOffsetX","url":"classes/StringNumber.html#setOffsetX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StringNumber"},{"id":5144,"kind":2048,"name":"setOffsetY","url":"classes/StringNumber.html#setOffsetY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StringNumber"},{"id":5145,"kind":2048,"name":"setLastNote","url":"classes/StringNumber.html#setLastNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StringNumber"},{"id":5146,"kind":2048,"name":"setDashed","url":"classes/StringNumber.html#setDashed","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StringNumber"},{"id":5147,"kind":2048,"name":"setDrawCircle","url":"classes/StringNumber.html#setDrawCircle","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StringNumber"},{"id":5148,"kind":2048,"name":"draw","url":"classes/StringNumber.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"StringNumber"},{"id":5149,"kind":2048,"name":"getWidth","url":"classes/StringNumber.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5150,"kind":2048,"name":"setWidth","url":"classes/StringNumber.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5151,"kind":2048,"name":"getNote","url":"classes/StringNumber.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5152,"kind":2048,"name":"checkAttachedNote","url":"classes/StringNumber.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5153,"kind":2048,"name":"setNote","url":"classes/StringNumber.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5154,"kind":2048,"name":"getIndex","url":"classes/StringNumber.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5155,"kind":2048,"name":"checkIndex","url":"classes/StringNumber.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5156,"kind":2048,"name":"setIndex","url":"classes/StringNumber.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5157,"kind":2048,"name":"getModifierContext","url":"classes/StringNumber.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5158,"kind":2048,"name":"checkModifierContext","url":"classes/StringNumber.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5159,"kind":2048,"name":"setModifierContext","url":"classes/StringNumber.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5160,"kind":2048,"name":"getPosition","url":"classes/StringNumber.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5161,"kind":2048,"name":"setPosition","url":"classes/StringNumber.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5162,"kind":2048,"name":"setTextLine","url":"classes/StringNumber.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5163,"kind":2048,"name":"setYShift","url":"classes/StringNumber.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5164,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/StringNumber.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5165,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/StringNumber.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5166,"kind":2048,"name":"setXShift","url":"classes/StringNumber.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5167,"kind":2048,"name":"getXShift","url":"classes/StringNumber.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5168,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/StringNumber.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5169,"kind":2048,"name":"addChildElement","url":"classes/StringNumber.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5170,"kind":2048,"name":"getCategory","url":"classes/StringNumber.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5171,"kind":2048,"name":"setStyle","url":"classes/StringNumber.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5172,"kind":2048,"name":"setGroupStyle","url":"classes/StringNumber.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5173,"kind":2048,"name":"getStyle","url":"classes/StringNumber.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5174,"kind":2048,"name":"applyStyle","url":"classes/StringNumber.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5175,"kind":2048,"name":"restoreStyle","url":"classes/StringNumber.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5176,"kind":2048,"name":"drawWithStyle","url":"classes/StringNumber.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5177,"kind":2048,"name":"hasClass","url":"classes/StringNumber.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5178,"kind":2048,"name":"addClass","url":"classes/StringNumber.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5179,"kind":2048,"name":"removeClass","url":"classes/StringNumber.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5180,"kind":2048,"name":"onRegister","url":"classes/StringNumber.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5181,"kind":2048,"name":"isRendered","url":"classes/StringNumber.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5182,"kind":2048,"name":"setRendered","url":"classes/StringNumber.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5183,"kind":2048,"name":"getAttributes","url":"classes/StringNumber.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5184,"kind":2048,"name":"getAttribute","url":"classes/StringNumber.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5185,"kind":2048,"name":"getSVGElement","url":"classes/StringNumber.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5186,"kind":2048,"name":"setAttribute","url":"classes/StringNumber.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5187,"kind":2048,"name":"getBoundingBox","url":"classes/StringNumber.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5188,"kind":2048,"name":"getContext","url":"classes/StringNumber.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5189,"kind":2048,"name":"setContext","url":"classes/StringNumber.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5190,"kind":2048,"name":"checkContext","url":"classes/StringNumber.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5191,"kind":262144,"name":"font","url":"classes/StringNumber.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5192,"kind":2048,"name":"setFont","url":"classes/StringNumber.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5193,"kind":2048,"name":"getFont","url":"classes/StringNumber.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5194,"kind":2048,"name":"resetFont","url":"classes/StringNumber.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5195,"kind":262144,"name":"fontInfo","url":"classes/StringNumber.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5196,"kind":2048,"name":"setFontSize","url":"classes/StringNumber.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5197,"kind":2048,"name":"getFontSize","url":"classes/StringNumber.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5198,"kind":262144,"name":"fontSize","url":"classes/StringNumber.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5199,"kind":262144,"name":"fontSizeInPoints","url":"classes/StringNumber.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5200,"kind":262144,"name":"fontSizeInPixels","url":"classes/StringNumber.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5201,"kind":262144,"name":"fontStyle","url":"classes/StringNumber.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5202,"kind":262144,"name":"fontWeight","url":"classes/StringNumber.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"StringNumber"},{"id":5203,"kind":128,"name":"Stroke","url":"classes/Stroke.html","classes":"tsd-kind-class"},{"id":5204,"kind":262144,"name":"CATEGORY","url":"classes/Stroke.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Stroke"},{"id":5205,"kind":1024,"name":"Type","url":"classes/Stroke.html#Type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Stroke"},{"id":5206,"kind":65536,"name":"__type","url":"classes/Stroke.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Stroke"},{"id":5207,"kind":1024,"name":"BRUSH_DOWN","url":"classes/Stroke.html#__type-1.BRUSH_DOWN","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Stroke.__type"},{"id":5208,"kind":1024,"name":"BRUSH_UP","url":"classes/Stroke.html#__type-1.BRUSH_UP","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Stroke.__type"},{"id":5209,"kind":1024,"name":"ROLL_DOWN","url":"classes/Stroke.html#__type-1.ROLL_DOWN","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Stroke.__type"},{"id":5210,"kind":1024,"name":"ROLL_UP","url":"classes/Stroke.html#__type-1.ROLL_UP","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Stroke.__type"},{"id":5211,"kind":1024,"name":"RASQUEDO_DOWN","url":"classes/Stroke.html#__type-1.RASQUEDO_DOWN","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Stroke.__type"},{"id":5212,"kind":1024,"name":"RASQUEDO_UP","url":"classes/Stroke.html#__type-1.RASQUEDO_UP","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Stroke.__type"},{"id":5213,"kind":1024,"name":"ARPEGGIO_DIRECTIONLESS","url":"classes/Stroke.html#__type-1.ARPEGGIO_DIRECTIONLESS","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Stroke.__type"},{"id":5214,"kind":1024,"name":"TEXT_FONT","url":"classes/Stroke.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Stroke"},{"id":5215,"kind":2048,"name":"format","url":"classes/Stroke.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Stroke"},{"id":5216,"kind":262144,"name":"Position","url":"classes/Stroke.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Stroke"},{"id":5217,"kind":262144,"name":"PositionString","url":"classes/Stroke.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Stroke"},{"id":5218,"kind":512,"name":"constructor","url":"classes/Stroke.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Stroke"},{"id":5219,"kind":1024,"name":"render_options","url":"classes/Stroke.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Stroke"},{"id":5220,"kind":65536,"name":"__type","url":"classes/Stroke.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"Stroke"},{"id":5221,"kind":1024,"name":"font_scale","url":"classes/Stroke.html#__type.font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Stroke.__type"},{"id":5222,"kind":2048,"name":"getPosition","url":"classes/Stroke.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Stroke"},{"id":5223,"kind":2048,"name":"addEndNote","url":"classes/Stroke.html#addEndNote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Stroke"},{"id":5224,"kind":2048,"name":"draw","url":"classes/Stroke.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Stroke"},{"id":5225,"kind":2048,"name":"getWidth","url":"classes/Stroke.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5226,"kind":2048,"name":"setWidth","url":"classes/Stroke.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5227,"kind":2048,"name":"getNote","url":"classes/Stroke.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5228,"kind":2048,"name":"checkAttachedNote","url":"classes/Stroke.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5229,"kind":2048,"name":"setNote","url":"classes/Stroke.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5230,"kind":2048,"name":"getIndex","url":"classes/Stroke.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5231,"kind":2048,"name":"checkIndex","url":"classes/Stroke.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5232,"kind":2048,"name":"setIndex","url":"classes/Stroke.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5233,"kind":2048,"name":"getModifierContext","url":"classes/Stroke.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5234,"kind":2048,"name":"checkModifierContext","url":"classes/Stroke.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5235,"kind":2048,"name":"setModifierContext","url":"classes/Stroke.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5236,"kind":2048,"name":"setPosition","url":"classes/Stroke.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5237,"kind":2048,"name":"setTextLine","url":"classes/Stroke.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5238,"kind":2048,"name":"setYShift","url":"classes/Stroke.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5239,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/Stroke.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5240,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/Stroke.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5241,"kind":2048,"name":"setXShift","url":"classes/Stroke.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5242,"kind":2048,"name":"getXShift","url":"classes/Stroke.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5243,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/Stroke.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5244,"kind":2048,"name":"addChildElement","url":"classes/Stroke.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5245,"kind":2048,"name":"getCategory","url":"classes/Stroke.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5246,"kind":2048,"name":"setStyle","url":"classes/Stroke.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5247,"kind":2048,"name":"setGroupStyle","url":"classes/Stroke.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5248,"kind":2048,"name":"getStyle","url":"classes/Stroke.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5249,"kind":2048,"name":"applyStyle","url":"classes/Stroke.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5250,"kind":2048,"name":"restoreStyle","url":"classes/Stroke.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5251,"kind":2048,"name":"drawWithStyle","url":"classes/Stroke.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5252,"kind":2048,"name":"hasClass","url":"classes/Stroke.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5253,"kind":2048,"name":"addClass","url":"classes/Stroke.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5254,"kind":2048,"name":"removeClass","url":"classes/Stroke.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5255,"kind":2048,"name":"onRegister","url":"classes/Stroke.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5256,"kind":2048,"name":"isRendered","url":"classes/Stroke.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5257,"kind":2048,"name":"setRendered","url":"classes/Stroke.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5258,"kind":2048,"name":"getAttributes","url":"classes/Stroke.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5259,"kind":2048,"name":"getAttribute","url":"classes/Stroke.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5260,"kind":2048,"name":"getSVGElement","url":"classes/Stroke.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5261,"kind":2048,"name":"setAttribute","url":"classes/Stroke.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5262,"kind":2048,"name":"getBoundingBox","url":"classes/Stroke.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5263,"kind":2048,"name":"getContext","url":"classes/Stroke.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5264,"kind":2048,"name":"setContext","url":"classes/Stroke.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5265,"kind":2048,"name":"checkContext","url":"classes/Stroke.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5266,"kind":262144,"name":"font","url":"classes/Stroke.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5267,"kind":2048,"name":"setFont","url":"classes/Stroke.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5268,"kind":2048,"name":"getFont","url":"classes/Stroke.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5269,"kind":2048,"name":"resetFont","url":"classes/Stroke.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5270,"kind":262144,"name":"fontInfo","url":"classes/Stroke.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5271,"kind":2048,"name":"setFontSize","url":"classes/Stroke.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5272,"kind":2048,"name":"getFontSize","url":"classes/Stroke.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5273,"kind":262144,"name":"fontSize","url":"classes/Stroke.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5274,"kind":262144,"name":"fontSizeInPoints","url":"classes/Stroke.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5275,"kind":262144,"name":"fontSizeInPixels","url":"classes/Stroke.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5276,"kind":262144,"name":"fontStyle","url":"classes/Stroke.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5277,"kind":262144,"name":"fontWeight","url":"classes/Stroke.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Stroke"},{"id":5278,"kind":4194304,"name":"Attributes","url":"modules.html#Attributes","classes":"tsd-kind-type-alias"},{"id":5279,"kind":256,"name":"State","url":"interfaces/State.html","classes":"tsd-kind-interface"},{"id":5280,"kind":1024,"name":"state","url":"interfaces/State.html#state","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"State"},{"id":5281,"kind":1024,"name":"attributes","url":"interfaces/State.html#attributes","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"State"},{"id":5282,"kind":1024,"name":"shadow_attributes","url":"interfaces/State.html#shadow_attributes","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"State"},{"id":5283,"kind":1024,"name":"lineWidth","url":"interfaces/State.html#lineWidth","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"State"},{"id":5284,"kind":128,"name":"SVGContext","url":"classes/SVGContext.html","classes":"tsd-kind-class"},{"id":5285,"kind":262144,"name":"CATEGORY","url":"classes/SVGContext.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"SVGContext"},{"id":5286,"kind":512,"name":"constructor","url":"classes/SVGContext.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5287,"kind":1024,"name":"element","url":"classes/SVGContext.html#element","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5288,"kind":1024,"name":"svg","url":"classes/SVGContext.html#svg","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5289,"kind":1024,"name":"width","url":"classes/SVGContext.html#width","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5290,"kind":1024,"name":"height","url":"classes/SVGContext.html#height","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5291,"kind":1024,"name":"path","url":"classes/SVGContext.html#path","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5292,"kind":1024,"name":"pen","url":"classes/SVGContext.html#pen","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5293,"kind":65536,"name":"__type","url":"classes/SVGContext.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"SVGContext"},{"id":5294,"kind":1024,"name":"x","url":"classes/SVGContext.html#__type.x","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"SVGContext.__type"},{"id":5295,"kind":1024,"name":"y","url":"classes/SVGContext.html#__type.y","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"SVGContext.__type"},{"id":5296,"kind":1024,"name":"lineWidth","url":"classes/SVGContext.html#lineWidth","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5297,"kind":1024,"name":"attributes","url":"classes/SVGContext.html#attributes","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5298,"kind":1024,"name":"shadow_attributes","url":"classes/SVGContext.html#shadow_attributes","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5299,"kind":1024,"name":"state","url":"classes/SVGContext.html#state","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5300,"kind":1024,"name":"state_stack","url":"classes/SVGContext.html#state_stack","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5301,"kind":1024,"name":"parent","url":"classes/SVGContext.html#parent","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5302,"kind":1024,"name":"groups","url":"classes/SVGContext.html#groups","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5303,"kind":1024,"name":"backgroundFillStyle","url":"classes/SVGContext.html#backgroundFillStyle","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SVGContext"},{"id":5304,"kind":2048,"name":"create","url":"classes/SVGContext.html#create","classes":"tsd-kind-method tsd-parent-kind-class","parent":"SVGContext"},{"id":5305,"kind":2048,"name":"openGroup","url":"classes/SVGContext.html#openGroup","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5306,"kind":2048,"name":"closeGroup","url":"classes/SVGContext.html#closeGroup","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5307,"kind":2048,"name":"add","url":"classes/SVGContext.html#add","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5308,"kind":2048,"name":"setFillStyle","url":"classes/SVGContext.html#setFillStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5309,"kind":2048,"name":"setBackgroundFillStyle","url":"classes/SVGContext.html#setBackgroundFillStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5310,"kind":2048,"name":"setStrokeStyle","url":"classes/SVGContext.html#setStrokeStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5311,"kind":2048,"name":"setShadowColor","url":"classes/SVGContext.html#setShadowColor","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5312,"kind":2048,"name":"setShadowBlur","url":"classes/SVGContext.html#setShadowBlur","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5313,"kind":2048,"name":"setLineWidth","url":"classes/SVGContext.html#setLineWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5314,"kind":2048,"name":"setLineDash","url":"classes/SVGContext.html#setLineDash","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5315,"kind":2048,"name":"setLineCap","url":"classes/SVGContext.html#setLineCap","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5316,"kind":2048,"name":"resize","url":"classes/SVGContext.html#resize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5317,"kind":2048,"name":"scale","url":"classes/SVGContext.html#scale","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5318,"kind":2048,"name":"setViewBox","url":"classes/SVGContext.html#setViewBox","classes":"tsd-kind-method tsd-parent-kind-class","parent":"SVGContext"},{"id":5319,"kind":2048,"name":"applyAttributes","url":"classes/SVGContext.html#applyAttributes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"SVGContext"},{"id":5320,"kind":2048,"name":"clear","url":"classes/SVGContext.html#clear","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5321,"kind":2048,"name":"rect","url":"classes/SVGContext.html#rect","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5322,"kind":2048,"name":"fillRect","url":"classes/SVGContext.html#fillRect","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5323,"kind":2048,"name":"clearRect","url":"classes/SVGContext.html#clearRect","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5324,"kind":2048,"name":"beginPath","url":"classes/SVGContext.html#beginPath","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5325,"kind":2048,"name":"moveTo","url":"classes/SVGContext.html#moveTo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5326,"kind":2048,"name":"lineTo","url":"classes/SVGContext.html#lineTo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5327,"kind":2048,"name":"bezierCurveTo","url":"classes/SVGContext.html#bezierCurveTo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5328,"kind":2048,"name":"quadraticCurveTo","url":"classes/SVGContext.html#quadraticCurveTo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5329,"kind":2048,"name":"arc","url":"classes/SVGContext.html#arc","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5330,"kind":2048,"name":"closePath","url":"classes/SVGContext.html#closePath","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5331,"kind":2048,"name":"fill","url":"classes/SVGContext.html#fill","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5332,"kind":2048,"name":"stroke","url":"classes/SVGContext.html#stroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5333,"kind":2048,"name":"measureText","url":"classes/SVGContext.html#measureText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5334,"kind":2048,"name":"fillText","url":"classes/SVGContext.html#fillText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5335,"kind":2048,"name":"save","url":"classes/SVGContext.html#save","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5336,"kind":2048,"name":"restore","url":"classes/SVGContext.html#restore","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5337,"kind":262144,"name":"fillStyle","url":"classes/SVGContext.html#fillStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5338,"kind":262144,"name":"strokeStyle","url":"classes/SVGContext.html#strokeStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5339,"kind":2048,"name":"setFont","url":"classes/SVGContext.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5340,"kind":2048,"name":"getFont","url":"classes/SVGContext.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"SVGContext"},{"id":5341,"kind":262144,"name":"font","url":"classes/SVGContext.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"SVGContext"},{"id":5342,"kind":2048,"name":"setRawFont","url":"classes/SVGContext.html#setRawFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"SVGContext"},{"id":5343,"kind":256,"name":"SystemFormatterOptions","url":"interfaces/SystemFormatterOptions.html","classes":"tsd-kind-interface"},{"id":5344,"kind":1024,"name":"alpha","url":"interfaces/SystemFormatterOptions.html#alpha","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemFormatterOptions"},{"id":5345,"kind":1024,"name":"softmaxFactor","url":"interfaces/SystemFormatterOptions.html#softmaxFactor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"SystemFormatterOptions"},{"id":5346,"kind":1024,"name":"globalSoftmax","url":"interfaces/SystemFormatterOptions.html#globalSoftmax","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"SystemFormatterOptions"},{"id":5347,"kind":1024,"name":"maxIterations","url":"interfaces/SystemFormatterOptions.html#maxIterations","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"SystemFormatterOptions"},{"id":5348,"kind":256,"name":"SystemStave","url":"interfaces/SystemStave.html","classes":"tsd-kind-interface"},{"id":5349,"kind":1024,"name":"voices","url":"interfaces/SystemStave.html#voices","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemStave"},{"id":5350,"kind":1024,"name":"stave","url":"interfaces/SystemStave.html#stave","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemStave"},{"id":5351,"kind":1024,"name":"noJustification","url":"interfaces/SystemStave.html#noJustification","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemStave"},{"id":5352,"kind":1024,"name":"options","url":"interfaces/SystemStave.html#options","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemStave"},{"id":5353,"kind":1024,"name":"spaceAbove","url":"interfaces/SystemStave.html#spaceAbove","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemStave"},{"id":5354,"kind":1024,"name":"spaceBelow","url":"interfaces/SystemStave.html#spaceBelow","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemStave"},{"id":5355,"kind":1024,"name":"debugNoteMetrics","url":"interfaces/SystemStave.html#debugNoteMetrics","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemStave"},{"id":5356,"kind":256,"name":"SystemOptions","url":"interfaces/SystemOptions.html","classes":"tsd-kind-interface"},{"id":5357,"kind":1024,"name":"factory","url":"interfaces/SystemOptions.html#factory","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5358,"kind":1024,"name":"noPadding","url":"interfaces/SystemOptions.html#noPadding","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5359,"kind":1024,"name":"debugFormatter","url":"interfaces/SystemOptions.html#debugFormatter","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5360,"kind":1024,"name":"spaceBetweenStaves","url":"interfaces/SystemOptions.html#spaceBetweenStaves","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5361,"kind":1024,"name":"formatIterations","url":"interfaces/SystemOptions.html#formatIterations","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5362,"kind":1024,"name":"autoWidth","url":"interfaces/SystemOptions.html#autoWidth","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5363,"kind":1024,"name":"x","url":"interfaces/SystemOptions.html#x","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5364,"kind":1024,"name":"width","url":"interfaces/SystemOptions.html#width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5365,"kind":1024,"name":"y","url":"interfaces/SystemOptions.html#y","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5366,"kind":1024,"name":"details","url":"interfaces/SystemOptions.html#details","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5367,"kind":1024,"name":"formatOptions","url":"interfaces/SystemOptions.html#formatOptions","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5368,"kind":1024,"name":"noJustification","url":"interfaces/SystemOptions.html#noJustification","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SystemOptions"},{"id":5369,"kind":128,"name":"System","url":"classes/System.html","classes":"tsd-kind-class"},{"id":5370,"kind":262144,"name":"CATEGORY","url":"classes/System.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"System"},{"id":5371,"kind":1024,"name":"TEXT_FONT","url":"classes/System.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"System"},{"id":5372,"kind":512,"name":"constructor","url":"classes/System.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"System"},{"id":5373,"kind":2048,"name":"setOptions","url":"classes/System.html#setOptions","classes":"tsd-kind-method tsd-parent-kind-class","parent":"System"},{"id":5374,"kind":2048,"name":"setContext","url":"classes/System.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"System"},{"id":5375,"kind":2048,"name":"addConnector","url":"classes/System.html#addConnector","classes":"tsd-kind-method tsd-parent-kind-class","parent":"System"},{"id":5376,"kind":2048,"name":"addStave","url":"classes/System.html#addStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"System"},{"id":5377,"kind":2048,"name":"format","url":"classes/System.html#format","classes":"tsd-kind-method tsd-parent-kind-class","parent":"System"},{"id":5378,"kind":2048,"name":"draw","url":"classes/System.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"System"},{"id":5379,"kind":2048,"name":"addChildElement","url":"classes/System.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5380,"kind":2048,"name":"getCategory","url":"classes/System.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5381,"kind":2048,"name":"setStyle","url":"classes/System.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5382,"kind":2048,"name":"setGroupStyle","url":"classes/System.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5383,"kind":2048,"name":"getStyle","url":"classes/System.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5384,"kind":2048,"name":"applyStyle","url":"classes/System.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5385,"kind":2048,"name":"restoreStyle","url":"classes/System.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5386,"kind":2048,"name":"drawWithStyle","url":"classes/System.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5387,"kind":2048,"name":"hasClass","url":"classes/System.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5388,"kind":2048,"name":"addClass","url":"classes/System.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5389,"kind":2048,"name":"removeClass","url":"classes/System.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5390,"kind":2048,"name":"onRegister","url":"classes/System.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5391,"kind":2048,"name":"isRendered","url":"classes/System.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5392,"kind":2048,"name":"setRendered","url":"classes/System.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5393,"kind":2048,"name":"getAttributes","url":"classes/System.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5394,"kind":2048,"name":"getAttribute","url":"classes/System.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5395,"kind":2048,"name":"getSVGElement","url":"classes/System.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5396,"kind":2048,"name":"setAttribute","url":"classes/System.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5397,"kind":2048,"name":"getBoundingBox","url":"classes/System.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5398,"kind":2048,"name":"getContext","url":"classes/System.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5399,"kind":2048,"name":"checkContext","url":"classes/System.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5400,"kind":262144,"name":"font","url":"classes/System.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5401,"kind":2048,"name":"setFont","url":"classes/System.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5402,"kind":2048,"name":"getFont","url":"classes/System.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5403,"kind":2048,"name":"resetFont","url":"classes/System.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5404,"kind":262144,"name":"fontInfo","url":"classes/System.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5405,"kind":2048,"name":"setFontSize","url":"classes/System.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5406,"kind":2048,"name":"getFontSize","url":"classes/System.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5407,"kind":262144,"name":"fontSize","url":"classes/System.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5408,"kind":262144,"name":"fontSizeInPoints","url":"classes/System.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5409,"kind":262144,"name":"fontSizeInPixels","url":"classes/System.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5410,"kind":262144,"name":"fontStyle","url":"classes/System.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5411,"kind":262144,"name":"fontWeight","url":"classes/System.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"System"},{"id":5412,"kind":256,"name":"TabNotePosition","url":"interfaces/TabNotePosition.html","classes":"tsd-kind-interface"},{"id":5413,"kind":1024,"name":"str","url":"interfaces/TabNotePosition.html#str","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TabNotePosition"},{"id":5414,"kind":1024,"name":"fret","url":"interfaces/TabNotePosition.html#fret","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TabNotePosition"},{"id":5415,"kind":256,"name":"TabNoteStruct","url":"interfaces/TabNoteStruct.html","classes":"tsd-kind-interface"},{"id":5416,"kind":1024,"name":"positions","url":"interfaces/TabNoteStruct.html#positions","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TabNoteStruct"},{"id":5417,"kind":1024,"name":"stem_direction","url":"interfaces/TabNoteStruct.html#stem_direction","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5418,"kind":1024,"name":"auto_stem","url":"interfaces/TabNoteStruct.html#auto_stem","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5419,"kind":1024,"name":"stem_down_x_offset","url":"interfaces/TabNoteStruct.html#stem_down_x_offset","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5420,"kind":1024,"name":"stem_up_x_offset","url":"interfaces/TabNoteStruct.html#stem_up_x_offset","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5421,"kind":1024,"name":"stroke_px","url":"interfaces/TabNoteStruct.html#stroke_px","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5422,"kind":1024,"name":"glyph_font_scale","url":"interfaces/TabNoteStruct.html#glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5423,"kind":1024,"name":"octave_shift","url":"interfaces/TabNoteStruct.html#octave_shift","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5424,"kind":1024,"name":"clef","url":"interfaces/TabNoteStruct.html#clef","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5425,"kind":1024,"name":"keys","url":"interfaces/TabNoteStruct.html#keys","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5426,"kind":1024,"name":"duration","url":"interfaces/TabNoteStruct.html#duration","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5427,"kind":1024,"name":"line","url":"interfaces/TabNoteStruct.html#line","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5428,"kind":1024,"name":"dots","url":"interfaces/TabNoteStruct.html#dots","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5429,"kind":1024,"name":"type","url":"interfaces/TabNoteStruct.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5430,"kind":1024,"name":"align_center","url":"interfaces/TabNoteStruct.html#align_center","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5431,"kind":1024,"name":"duration_override","url":"interfaces/TabNoteStruct.html#duration_override","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TabNoteStruct"},{"id":5432,"kind":128,"name":"TabNote","url":"classes/TabNote.html","classes":"tsd-kind-class"},{"id":5433,"kind":262144,"name":"CATEGORY","url":"classes/TabNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TabNote"},{"id":5434,"kind":2048,"name":"plotMetrics","url":"classes/TabNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TabNote"},{"id":5435,"kind":1024,"name":"TEXT_FONT","url":"classes/TabNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TabNote"},{"id":5436,"kind":512,"name":"constructor","url":"classes/TabNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"TabNote"},{"id":5437,"kind":2048,"name":"greatestString","url":"classes/TabNote.html#greatestString","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TabNote"},{"id":5438,"kind":2048,"name":"leastString","url":"classes/TabNote.html#leastString","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TabNote"},{"id":5439,"kind":2048,"name":"reset","url":"classes/TabNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabNote"},{"id":5440,"kind":2048,"name":"setGhost","url":"classes/TabNote.html#setGhost","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TabNote"},{"id":5441,"kind":2048,"name":"hasStem","url":"classes/TabNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabNote"},{"id":5442,"kind":2048,"name":"getStemExtension","url":"classes/TabNote.html#getStemExtension","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabNote"},{"id":5443,"kind":2048,"name":"updateWidth","url":"classes/TabNote.html#updateWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TabNote"},{"id":5444,"kind":2048,"name":"setStave","url":"classes/TabNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabNote"},{"id":5445,"kind":2048,"name":"getPositions","url":"classes/TabNote.html#getPositions","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TabNote"},{"id":5446,"kind":2048,"name":"getModifierStartXY","url":"classes/TabNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabNote"},{"id":5447,"kind":2048,"name":"getLineForRest","url":"classes/TabNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabNote"},{"id":5448,"kind":2048,"name":"preFormat","url":"classes/TabNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabNote"},{"id":5449,"kind":2048,"name":"getStemX","url":"classes/TabNote.html#getStemX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabNote"},{"id":5450,"kind":2048,"name":"getStemY","url":"classes/TabNote.html#getStemY","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TabNote"},{"id":5451,"kind":2048,"name":"getStemExtents","url":"classes/TabNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabNote"},{"id":5452,"kind":2048,"name":"drawFlag","url":"classes/TabNote.html#drawFlag","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TabNote"},{"id":5453,"kind":2048,"name":"drawModifiers","url":"classes/TabNote.html#drawModifiers","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TabNote"},{"id":5454,"kind":2048,"name":"drawStemThrough","url":"classes/TabNote.html#drawStemThrough","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TabNote"},{"id":5455,"kind":2048,"name":"drawPositions","url":"classes/TabNote.html#drawPositions","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TabNote"},{"id":5456,"kind":2048,"name":"draw","url":"classes/TabNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabNote"},{"id":5457,"kind":1024,"name":"stem_direction","url":"classes/TabNote.html#stem_direction","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5458,"kind":1024,"name":"stem","url":"classes/TabNote.html#stem","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5459,"kind":2048,"name":"getStem","url":"classes/TabNote.html#getStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5460,"kind":2048,"name":"checkStem","url":"classes/TabNote.html#checkStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5461,"kind":2048,"name":"setStem","url":"classes/TabNote.html#setStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5462,"kind":2048,"name":"buildStem","url":"classes/TabNote.html#buildStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5463,"kind":2048,"name":"buildFlag","url":"classes/TabNote.html#buildFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5464,"kind":2048,"name":"getBaseCustomNoteHeadGlyph","url":"classes/TabNote.html#getBaseCustomNoteHeadGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5465,"kind":2048,"name":"getStemLength","url":"classes/TabNote.html#getStemLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5466,"kind":2048,"name":"getBeamCount","url":"classes/TabNote.html#getBeamCount","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5467,"kind":2048,"name":"getStemMinimumLength","url":"classes/TabNote.html#getStemMinimumLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5468,"kind":2048,"name":"getStemDirection","url":"classes/TabNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5469,"kind":2048,"name":"setStemDirection","url":"classes/TabNote.html#setStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5470,"kind":2048,"name":"getCenterGlyphX","url":"classes/TabNote.html#getCenterGlyphX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5471,"kind":2048,"name":"setStemLength","url":"classes/TabNote.html#setStemLength","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5472,"kind":2048,"name":"getYForTopText","url":"classes/TabNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5473,"kind":2048,"name":"getYForBottomText","url":"classes/TabNote.html#getYForBottomText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5474,"kind":2048,"name":"hasFlag","url":"classes/TabNote.html#hasFlag","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5475,"kind":2048,"name":"postFormat","url":"classes/TabNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5476,"kind":2048,"name":"drawStem","url":"classes/TabNote.html#drawStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5477,"kind":1024,"name":"glyph","url":"classes/TabNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5478,"kind":1024,"name":"keys","url":"classes/TabNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5479,"kind":1024,"name":"keyProps","url":"classes/TabNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5480,"kind":1024,"name":"render_options","url":"classes/TabNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5481,"kind":65536,"name":"__type","url":"classes/TabNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"TabNote"},{"id":5482,"kind":1024,"name":"draw_stem_through_stave","url":"classes/TabNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5483,"kind":1024,"name":"draw","url":"classes/TabNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5484,"kind":1024,"name":"draw_dots","url":"classes/TabNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5485,"kind":1024,"name":"draw_stem","url":"classes/TabNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5486,"kind":1024,"name":"y_shift","url":"classes/TabNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5487,"kind":1024,"name":"extend_left","url":"classes/TabNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5488,"kind":1024,"name":"extend_right","url":"classes/TabNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5489,"kind":1024,"name":"glyph_font_scale","url":"classes/TabNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5490,"kind":1024,"name":"annotation_spacing","url":"classes/TabNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5491,"kind":1024,"name":"glyph_font_size","url":"classes/TabNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5492,"kind":1024,"name":"scale","url":"classes/TabNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5493,"kind":1024,"name":"font","url":"classes/TabNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5494,"kind":1024,"name":"stroke_px","url":"classes/TabNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabNote.__type"},{"id":5495,"kind":2048,"name":"getPlayNote","url":"classes/TabNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5496,"kind":2048,"name":"setPlayNote","url":"classes/TabNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5497,"kind":2048,"name":"isRest","url":"classes/TabNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5498,"kind":2048,"name":"addStroke","url":"classes/TabNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5499,"kind":2048,"name":"getStave","url":"classes/TabNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5500,"kind":2048,"name":"checkStave","url":"classes/TabNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5501,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/TabNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5502,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/TabNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5503,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/TabNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5504,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/TabNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5505,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/TabNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5506,"kind":2048,"name":"getLineNumber","url":"classes/TabNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5507,"kind":2048,"name":"getGlyph","url":"classes/TabNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5508,"kind":2048,"name":"getGlyphWidth","url":"classes/TabNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5509,"kind":2048,"name":"setYs","url":"classes/TabNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5510,"kind":2048,"name":"getYs","url":"classes/TabNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5511,"kind":2048,"name":"getVoice","url":"classes/TabNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5512,"kind":2048,"name":"setVoice","url":"classes/TabNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5513,"kind":2048,"name":"getTickContext","url":"classes/TabNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5514,"kind":2048,"name":"setTickContext","url":"classes/TabNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5515,"kind":2048,"name":"getDuration","url":"classes/TabNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5516,"kind":2048,"name":"isDotted","url":"classes/TabNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5517,"kind":2048,"name":"getNoteType","url":"classes/TabNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5518,"kind":2048,"name":"getBeam","url":"classes/TabNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5519,"kind":2048,"name":"checkBeam","url":"classes/TabNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5520,"kind":2048,"name":"hasBeam","url":"classes/TabNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5521,"kind":2048,"name":"setBeam","url":"classes/TabNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5522,"kind":2048,"name":"addModifier","url":"classes/TabNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5523,"kind":2048,"name":"getModifiersByType","url":"classes/TabNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5524,"kind":2048,"name":"getRightParenthesisPx","url":"classes/TabNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5525,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/TabNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5526,"kind":2048,"name":"getFirstDotPx","url":"classes/TabNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5527,"kind":2048,"name":"getMetrics","url":"classes/TabNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5528,"kind":2048,"name":"getAbsoluteX","url":"classes/TabNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5529,"kind":2048,"name":"getTieRightX","url":"classes/TabNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5530,"kind":2048,"name":"getTieLeftX","url":"classes/TabNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5531,"kind":2048,"name":"getKeys","url":"classes/TabNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5532,"kind":2048,"name":"getKeyProps","url":"classes/TabNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5533,"kind":2048,"name":"getTicks","url":"classes/TabNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5534,"kind":2048,"name":"setIgnoreTicks","url":"classes/TabNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5535,"kind":2048,"name":"setWidth","url":"classes/TabNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5536,"kind":2048,"name":"getWidth","url":"classes/TabNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5537,"kind":2048,"name":"setXShift","url":"classes/TabNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5538,"kind":2048,"name":"getXShift","url":"classes/TabNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5539,"kind":2048,"name":"getX","url":"classes/TabNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5540,"kind":2048,"name":"getFormatterMetrics","url":"classes/TabNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5541,"kind":2048,"name":"getCenterXShift","url":"classes/TabNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5542,"kind":2048,"name":"setCenterXShift","url":"classes/TabNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5543,"kind":2048,"name":"isCenterAligned","url":"classes/TabNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5544,"kind":2048,"name":"setCenterAlignment","url":"classes/TabNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5545,"kind":2048,"name":"getTuplet","url":"classes/TabNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5546,"kind":2048,"name":"getTupletStack","url":"classes/TabNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5547,"kind":2048,"name":"resetTuplet","url":"classes/TabNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5548,"kind":2048,"name":"setTuplet","url":"classes/TabNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5549,"kind":2048,"name":"addToModifierContext","url":"classes/TabNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5550,"kind":2048,"name":"getModifiers","url":"classes/TabNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5551,"kind":2048,"name":"checkTickContext","url":"classes/TabNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5552,"kind":262144,"name":"preFormatted","url":"classes/TabNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5553,"kind":262144,"name":"postFormatted","url":"classes/TabNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5554,"kind":2048,"name":"getIntrinsicTicks","url":"classes/TabNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5555,"kind":2048,"name":"setIntrinsicTicks","url":"classes/TabNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5556,"kind":2048,"name":"getTickMultiplier","url":"classes/TabNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5557,"kind":2048,"name":"applyTickMultiplier","url":"classes/TabNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5558,"kind":2048,"name":"setDuration","url":"classes/TabNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5559,"kind":2048,"name":"setModifierContext","url":"classes/TabNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5560,"kind":2048,"name":"getModifierContext","url":"classes/TabNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5561,"kind":2048,"name":"checkModifierContext","url":"classes/TabNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5562,"kind":2048,"name":"addChildElement","url":"classes/TabNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5563,"kind":2048,"name":"getCategory","url":"classes/TabNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5564,"kind":2048,"name":"setStyle","url":"classes/TabNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5565,"kind":2048,"name":"setGroupStyle","url":"classes/TabNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5566,"kind":2048,"name":"getStyle","url":"classes/TabNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5567,"kind":2048,"name":"applyStyle","url":"classes/TabNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5568,"kind":2048,"name":"restoreStyle","url":"classes/TabNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5569,"kind":2048,"name":"drawWithStyle","url":"classes/TabNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5570,"kind":2048,"name":"hasClass","url":"classes/TabNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5571,"kind":2048,"name":"addClass","url":"classes/TabNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5572,"kind":2048,"name":"removeClass","url":"classes/TabNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5573,"kind":2048,"name":"onRegister","url":"classes/TabNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5574,"kind":2048,"name":"isRendered","url":"classes/TabNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5575,"kind":2048,"name":"setRendered","url":"classes/TabNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5576,"kind":2048,"name":"getAttributes","url":"classes/TabNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5577,"kind":2048,"name":"getAttribute","url":"classes/TabNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5578,"kind":2048,"name":"getSVGElement","url":"classes/TabNote.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5579,"kind":2048,"name":"setAttribute","url":"classes/TabNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5580,"kind":2048,"name":"getBoundingBox","url":"classes/TabNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5581,"kind":2048,"name":"getContext","url":"classes/TabNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5582,"kind":2048,"name":"setContext","url":"classes/TabNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5583,"kind":2048,"name":"checkContext","url":"classes/TabNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5584,"kind":262144,"name":"font","url":"classes/TabNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5585,"kind":2048,"name":"setFont","url":"classes/TabNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5586,"kind":2048,"name":"getFont","url":"classes/TabNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5587,"kind":2048,"name":"resetFont","url":"classes/TabNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5588,"kind":262144,"name":"fontInfo","url":"classes/TabNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5589,"kind":2048,"name":"setFontSize","url":"classes/TabNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5590,"kind":2048,"name":"getFontSize","url":"classes/TabNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5591,"kind":262144,"name":"fontSize","url":"classes/TabNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5592,"kind":262144,"name":"fontSizeInPoints","url":"classes/TabNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5593,"kind":262144,"name":"fontSizeInPixels","url":"classes/TabNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5594,"kind":262144,"name":"fontStyle","url":"classes/TabNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5595,"kind":262144,"name":"fontWeight","url":"classes/TabNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabNote"},{"id":5596,"kind":128,"name":"TabSlide","url":"classes/TabSlide.html","classes":"tsd-kind-class"},{"id":5597,"kind":262144,"name":"CATEGORY","url":"classes/TabSlide.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TabSlide"},{"id":5598,"kind":1024,"name":"TEXT_FONT","url":"classes/TabSlide.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TabSlide"},{"id":5599,"kind":262144,"name":"SLIDE_UP","url":"classes/TabSlide.html#SLIDE_UP","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"TabSlide"},{"id":5600,"kind":262144,"name":"SLIDE_DOWN","url":"classes/TabSlide.html#SLIDE_DOWN","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"TabSlide"},{"id":5601,"kind":2048,"name":"createSlideUp","url":"classes/TabSlide.html#createSlideUp","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"TabSlide"},{"id":5602,"kind":2048,"name":"createSlideDown","url":"classes/TabSlide.html#createSlideDown","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"TabSlide"},{"id":5603,"kind":2048,"name":"createHammeron","url":"classes/TabSlide.html#createHammeron","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TabSlide"},{"id":5604,"kind":2048,"name":"createPulloff","url":"classes/TabSlide.html#createPulloff","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TabSlide"},{"id":5605,"kind":512,"name":"constructor","url":"classes/TabSlide.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"TabSlide"},{"id":5606,"kind":2048,"name":"renderTie","url":"classes/TabSlide.html#renderTie","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabSlide"},{"id":5607,"kind":1024,"name":"render_options","url":"classes/TabSlide.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5608,"kind":65536,"name":"__type","url":"classes/TabSlide.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"TabSlide"},{"id":5609,"kind":1024,"name":"cp2","url":"classes/TabSlide.html#__type.cp2","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabSlide.__type"},{"id":5610,"kind":1024,"name":"last_x_shift","url":"classes/TabSlide.html#__type.last_x_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabSlide.__type"},{"id":5611,"kind":1024,"name":"tie_spacing","url":"classes/TabSlide.html#__type.tie_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabSlide.__type"},{"id":5612,"kind":1024,"name":"cp1","url":"classes/TabSlide.html#__type.cp1","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabSlide.__type"},{"id":5613,"kind":1024,"name":"first_x_shift","url":"classes/TabSlide.html#__type.first_x_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabSlide.__type"},{"id":5614,"kind":1024,"name":"text_shift_x","url":"classes/TabSlide.html#__type.text_shift_x","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabSlide.__type"},{"id":5615,"kind":1024,"name":"y_shift","url":"classes/TabSlide.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabSlide.__type"},{"id":5616,"kind":2048,"name":"setDirection","url":"classes/TabSlide.html#setDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5617,"kind":2048,"name":"setNotes","url":"classes/TabSlide.html#setNotes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5618,"kind":2048,"name":"isPartial","url":"classes/TabSlide.html#isPartial","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5619,"kind":2048,"name":"renderText","url":"classes/TabSlide.html#renderText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5620,"kind":2048,"name":"getNotes","url":"classes/TabSlide.html#getNotes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5621,"kind":2048,"name":"draw","url":"classes/TabSlide.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5622,"kind":2048,"name":"addChildElement","url":"classes/TabSlide.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5623,"kind":2048,"name":"getCategory","url":"classes/TabSlide.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5624,"kind":2048,"name":"setStyle","url":"classes/TabSlide.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5625,"kind":2048,"name":"setGroupStyle","url":"classes/TabSlide.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5626,"kind":2048,"name":"getStyle","url":"classes/TabSlide.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5627,"kind":2048,"name":"applyStyle","url":"classes/TabSlide.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5628,"kind":2048,"name":"restoreStyle","url":"classes/TabSlide.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5629,"kind":2048,"name":"drawWithStyle","url":"classes/TabSlide.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5630,"kind":2048,"name":"hasClass","url":"classes/TabSlide.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5631,"kind":2048,"name":"addClass","url":"classes/TabSlide.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5632,"kind":2048,"name":"removeClass","url":"classes/TabSlide.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5633,"kind":2048,"name":"onRegister","url":"classes/TabSlide.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5634,"kind":2048,"name":"isRendered","url":"classes/TabSlide.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5635,"kind":2048,"name":"setRendered","url":"classes/TabSlide.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5636,"kind":2048,"name":"getAttributes","url":"classes/TabSlide.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5637,"kind":2048,"name":"getAttribute","url":"classes/TabSlide.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5638,"kind":2048,"name":"getSVGElement","url":"classes/TabSlide.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5639,"kind":2048,"name":"setAttribute","url":"classes/TabSlide.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5640,"kind":2048,"name":"getBoundingBox","url":"classes/TabSlide.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5641,"kind":2048,"name":"getContext","url":"classes/TabSlide.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5642,"kind":2048,"name":"setContext","url":"classes/TabSlide.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5643,"kind":2048,"name":"checkContext","url":"classes/TabSlide.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5644,"kind":262144,"name":"font","url":"classes/TabSlide.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5645,"kind":2048,"name":"setFont","url":"classes/TabSlide.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5646,"kind":2048,"name":"getFont","url":"classes/TabSlide.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5647,"kind":2048,"name":"resetFont","url":"classes/TabSlide.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5648,"kind":262144,"name":"fontInfo","url":"classes/TabSlide.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5649,"kind":2048,"name":"setFontSize","url":"classes/TabSlide.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5650,"kind":2048,"name":"getFontSize","url":"classes/TabSlide.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5651,"kind":262144,"name":"fontSize","url":"classes/TabSlide.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5652,"kind":262144,"name":"fontSizeInPoints","url":"classes/TabSlide.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5653,"kind":262144,"name":"fontSizeInPixels","url":"classes/TabSlide.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5654,"kind":262144,"name":"fontStyle","url":"classes/TabSlide.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5655,"kind":262144,"name":"fontWeight","url":"classes/TabSlide.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabSlide"},{"id":5656,"kind":128,"name":"TabStave","url":"classes/TabStave.html","classes":"tsd-kind-class"},{"id":5657,"kind":262144,"name":"CATEGORY","url":"classes/TabStave.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TabStave"},{"id":5658,"kind":1024,"name":"TEXT_FONT","url":"classes/TabStave.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TabStave"},{"id":5659,"kind":262144,"name":"defaultPadding","url":"classes/TabStave.html#defaultPadding","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TabStave"},{"id":5660,"kind":262144,"name":"rightPadding","url":"classes/TabStave.html#rightPadding","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TabStave"},{"id":5661,"kind":2048,"name":"formatBegModifiers","url":"classes/TabStave.html#formatBegModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TabStave"},{"id":5662,"kind":512,"name":"constructor","url":"classes/TabStave.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"TabStave"},{"id":5663,"kind":2048,"name":"getYForGlyphs","url":"classes/TabStave.html#getYForGlyphs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TabStave"},{"id":5664,"kind":2048,"name":"addTabGlyph","url":"classes/TabStave.html#addTabGlyph","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TabStave"},{"id":5665,"kind":1024,"name":"options","url":"classes/TabStave.html#options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5666,"kind":2048,"name":"setDefaultLedgerLineStyle","url":"classes/TabStave.html#setDefaultLedgerLineStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5667,"kind":2048,"name":"getDefaultLedgerLineStyle","url":"classes/TabStave.html#getDefaultLedgerLineStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5668,"kind":2048,"name":"space","url":"classes/TabStave.html#space","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5669,"kind":2048,"name":"resetLines","url":"classes/TabStave.html#resetLines","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5670,"kind":2048,"name":"setNoteStartX","url":"classes/TabStave.html#setNoteStartX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5671,"kind":2048,"name":"getNoteStartX","url":"classes/TabStave.html#getNoteStartX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5672,"kind":2048,"name":"getNoteEndX","url":"classes/TabStave.html#getNoteEndX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5673,"kind":2048,"name":"getTieStartX","url":"classes/TabStave.html#getTieStartX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5674,"kind":2048,"name":"getTieEndX","url":"classes/TabStave.html#getTieEndX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5675,"kind":2048,"name":"getX","url":"classes/TabStave.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5676,"kind":2048,"name":"getNumLines","url":"classes/TabStave.html#getNumLines","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5677,"kind":2048,"name":"setNumLines","url":"classes/TabStave.html#setNumLines","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5678,"kind":2048,"name":"setY","url":"classes/TabStave.html#setY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5679,"kind":2048,"name":"getY","url":"classes/TabStave.html#getY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5680,"kind":2048,"name":"getTopLineTopY","url":"classes/TabStave.html#getTopLineTopY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5681,"kind":2048,"name":"getBottomLineBottomY","url":"classes/TabStave.html#getBottomLineBottomY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5682,"kind":2048,"name":"setX","url":"classes/TabStave.html#setX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5683,"kind":2048,"name":"setWidth","url":"classes/TabStave.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5684,"kind":2048,"name":"getWidth","url":"classes/TabStave.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5685,"kind":2048,"name":"getStyle","url":"classes/TabStave.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5686,"kind":2048,"name":"setMeasure","url":"classes/TabStave.html#setMeasure","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5687,"kind":2048,"name":"getMeasure","url":"classes/TabStave.html#getMeasure","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5688,"kind":2048,"name":"getModifierXShift","url":"classes/TabStave.html#getModifierXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5689,"kind":2048,"name":"setRepetitionType","url":"classes/TabStave.html#setRepetitionType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5690,"kind":2048,"name":"setVoltaType","url":"classes/TabStave.html#setVoltaType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5691,"kind":2048,"name":"setSection","url":"classes/TabStave.html#setSection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5692,"kind":2048,"name":"setTempo","url":"classes/TabStave.html#setTempo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5693,"kind":2048,"name":"setText","url":"classes/TabStave.html#setText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5694,"kind":2048,"name":"getHeight","url":"classes/TabStave.html#getHeight","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5695,"kind":2048,"name":"getSpacingBetweenLines","url":"classes/TabStave.html#getSpacingBetweenLines","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5696,"kind":2048,"name":"getBoundingBox","url":"classes/TabStave.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5697,"kind":2048,"name":"getBottomY","url":"classes/TabStave.html#getBottomY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5698,"kind":2048,"name":"getBottomLineY","url":"classes/TabStave.html#getBottomLineY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5699,"kind":2048,"name":"getYForLine","url":"classes/TabStave.html#getYForLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5700,"kind":2048,"name":"getLineForY","url":"classes/TabStave.html#getLineForY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5701,"kind":2048,"name":"getYForTopText","url":"classes/TabStave.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5702,"kind":2048,"name":"getYForBottomText","url":"classes/TabStave.html#getYForBottomText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5703,"kind":2048,"name":"getYForNote","url":"classes/TabStave.html#getYForNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5704,"kind":2048,"name":"addModifier","url":"classes/TabStave.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5705,"kind":2048,"name":"addEndModifier","url":"classes/TabStave.html#addEndModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5706,"kind":2048,"name":"setBegBarType","url":"classes/TabStave.html#setBegBarType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5707,"kind":2048,"name":"setEndBarType","url":"classes/TabStave.html#setEndBarType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5708,"kind":2048,"name":"setClef","url":"classes/TabStave.html#setClef","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5709,"kind":2048,"name":"getClef","url":"classes/TabStave.html#getClef","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5710,"kind":2048,"name":"setEndClef","url":"classes/TabStave.html#setEndClef","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5711,"kind":2048,"name":"getEndClef","url":"classes/TabStave.html#getEndClef","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5712,"kind":2048,"name":"setKeySignature","url":"classes/TabStave.html#setKeySignature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5713,"kind":2048,"name":"setEndKeySignature","url":"classes/TabStave.html#setEndKeySignature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5714,"kind":2048,"name":"setTimeSignature","url":"classes/TabStave.html#setTimeSignature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5715,"kind":2048,"name":"setEndTimeSignature","url":"classes/TabStave.html#setEndTimeSignature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5716,"kind":2048,"name":"addKeySignature","url":"classes/TabStave.html#addKeySignature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5717,"kind":2048,"name":"addClef","url":"classes/TabStave.html#addClef","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5718,"kind":2048,"name":"addEndClef","url":"classes/TabStave.html#addEndClef","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5719,"kind":2048,"name":"addTimeSignature","url":"classes/TabStave.html#addTimeSignature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5720,"kind":2048,"name":"addEndTimeSignature","url":"classes/TabStave.html#addEndTimeSignature","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5721,"kind":2048,"name":"addTrebleGlyph","url":"classes/TabStave.html#addTrebleGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5722,"kind":2048,"name":"getModifiers","url":"classes/TabStave.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5723,"kind":2048,"name":"sortByCategory","url":"classes/TabStave.html#sortByCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5724,"kind":2048,"name":"format","url":"classes/TabStave.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5725,"kind":2048,"name":"draw","url":"classes/TabStave.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5726,"kind":2048,"name":"getVerticalBarWidth","url":"classes/TabStave.html#getVerticalBarWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5727,"kind":2048,"name":"getConfigForLines","url":"classes/TabStave.html#getConfigForLines","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5728,"kind":2048,"name":"setConfigForLine","url":"classes/TabStave.html#setConfigForLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5729,"kind":2048,"name":"setConfigForLines","url":"classes/TabStave.html#setConfigForLines","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5730,"kind":2048,"name":"addChildElement","url":"classes/TabStave.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5731,"kind":2048,"name":"getCategory","url":"classes/TabStave.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5732,"kind":2048,"name":"setStyle","url":"classes/TabStave.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5733,"kind":2048,"name":"setGroupStyle","url":"classes/TabStave.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5734,"kind":2048,"name":"applyStyle","url":"classes/TabStave.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5735,"kind":2048,"name":"restoreStyle","url":"classes/TabStave.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5736,"kind":2048,"name":"drawWithStyle","url":"classes/TabStave.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5737,"kind":2048,"name":"hasClass","url":"classes/TabStave.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5738,"kind":2048,"name":"addClass","url":"classes/TabStave.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5739,"kind":2048,"name":"removeClass","url":"classes/TabStave.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5740,"kind":2048,"name":"onRegister","url":"classes/TabStave.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5741,"kind":2048,"name":"isRendered","url":"classes/TabStave.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5742,"kind":2048,"name":"setRendered","url":"classes/TabStave.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5743,"kind":2048,"name":"getAttributes","url":"classes/TabStave.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5744,"kind":2048,"name":"getAttribute","url":"classes/TabStave.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5745,"kind":2048,"name":"getSVGElement","url":"classes/TabStave.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5746,"kind":2048,"name":"setAttribute","url":"classes/TabStave.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5747,"kind":2048,"name":"getContext","url":"classes/TabStave.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5748,"kind":2048,"name":"setContext","url":"classes/TabStave.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5749,"kind":2048,"name":"checkContext","url":"classes/TabStave.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5750,"kind":262144,"name":"font","url":"classes/TabStave.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5751,"kind":2048,"name":"setFont","url":"classes/TabStave.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5752,"kind":2048,"name":"getFont","url":"classes/TabStave.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5753,"kind":2048,"name":"resetFont","url":"classes/TabStave.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5754,"kind":262144,"name":"fontInfo","url":"classes/TabStave.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5755,"kind":2048,"name":"setFontSize","url":"classes/TabStave.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5756,"kind":2048,"name":"getFontSize","url":"classes/TabStave.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5757,"kind":262144,"name":"fontSize","url":"classes/TabStave.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5758,"kind":262144,"name":"fontSizeInPoints","url":"classes/TabStave.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5759,"kind":262144,"name":"fontSizeInPixels","url":"classes/TabStave.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5760,"kind":262144,"name":"fontStyle","url":"classes/TabStave.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5761,"kind":262144,"name":"fontWeight","url":"classes/TabStave.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabStave"},{"id":5762,"kind":128,"name":"TabTie","url":"classes/TabTie.html","classes":"tsd-kind-class"},{"id":5763,"kind":262144,"name":"CATEGORY","url":"classes/TabTie.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TabTie"},{"id":5764,"kind":2048,"name":"createHammeron","url":"classes/TabTie.html#createHammeron","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"TabTie"},{"id":5765,"kind":2048,"name":"createPulloff","url":"classes/TabTie.html#createPulloff","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"TabTie"},{"id":5766,"kind":1024,"name":"TEXT_FONT","url":"classes/TabTie.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TabTie"},{"id":5767,"kind":512,"name":"constructor","url":"classes/TabTie.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"TabTie"},{"id":5768,"kind":1024,"name":"render_options","url":"classes/TabTie.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5769,"kind":65536,"name":"__type","url":"classes/TabTie.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"TabTie"},{"id":5770,"kind":1024,"name":"cp2","url":"classes/TabTie.html#__type.cp2","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabTie.__type"},{"id":5771,"kind":1024,"name":"last_x_shift","url":"classes/TabTie.html#__type.last_x_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabTie.__type"},{"id":5772,"kind":1024,"name":"tie_spacing","url":"classes/TabTie.html#__type.tie_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabTie.__type"},{"id":5773,"kind":1024,"name":"cp1","url":"classes/TabTie.html#__type.cp1","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabTie.__type"},{"id":5774,"kind":1024,"name":"first_x_shift","url":"classes/TabTie.html#__type.first_x_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabTie.__type"},{"id":5775,"kind":1024,"name":"text_shift_x","url":"classes/TabTie.html#__type.text_shift_x","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabTie.__type"},{"id":5776,"kind":1024,"name":"y_shift","url":"classes/TabTie.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TabTie.__type"},{"id":5777,"kind":2048,"name":"setDirection","url":"classes/TabTie.html#setDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5778,"kind":2048,"name":"setNotes","url":"classes/TabTie.html#setNotes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5779,"kind":2048,"name":"isPartial","url":"classes/TabTie.html#isPartial","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5780,"kind":2048,"name":"renderTie","url":"classes/TabTie.html#renderTie","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5781,"kind":2048,"name":"renderText","url":"classes/TabTie.html#renderText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5782,"kind":2048,"name":"getNotes","url":"classes/TabTie.html#getNotes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5783,"kind":2048,"name":"draw","url":"classes/TabTie.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5784,"kind":2048,"name":"addChildElement","url":"classes/TabTie.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5785,"kind":2048,"name":"getCategory","url":"classes/TabTie.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5786,"kind":2048,"name":"setStyle","url":"classes/TabTie.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5787,"kind":2048,"name":"setGroupStyle","url":"classes/TabTie.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5788,"kind":2048,"name":"getStyle","url":"classes/TabTie.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5789,"kind":2048,"name":"applyStyle","url":"classes/TabTie.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5790,"kind":2048,"name":"restoreStyle","url":"classes/TabTie.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5791,"kind":2048,"name":"drawWithStyle","url":"classes/TabTie.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5792,"kind":2048,"name":"hasClass","url":"classes/TabTie.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5793,"kind":2048,"name":"addClass","url":"classes/TabTie.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5794,"kind":2048,"name":"removeClass","url":"classes/TabTie.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5795,"kind":2048,"name":"onRegister","url":"classes/TabTie.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5796,"kind":2048,"name":"isRendered","url":"classes/TabTie.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5797,"kind":2048,"name":"setRendered","url":"classes/TabTie.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5798,"kind":2048,"name":"getAttributes","url":"classes/TabTie.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5799,"kind":2048,"name":"getAttribute","url":"classes/TabTie.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5800,"kind":2048,"name":"getSVGElement","url":"classes/TabTie.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5801,"kind":2048,"name":"setAttribute","url":"classes/TabTie.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5802,"kind":2048,"name":"getBoundingBox","url":"classes/TabTie.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5803,"kind":2048,"name":"getContext","url":"classes/TabTie.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5804,"kind":2048,"name":"setContext","url":"classes/TabTie.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5805,"kind":2048,"name":"checkContext","url":"classes/TabTie.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5806,"kind":262144,"name":"font","url":"classes/TabTie.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5807,"kind":2048,"name":"setFont","url":"classes/TabTie.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5808,"kind":2048,"name":"getFont","url":"classes/TabTie.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5809,"kind":2048,"name":"resetFont","url":"classes/TabTie.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5810,"kind":262144,"name":"fontInfo","url":"classes/TabTie.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5811,"kind":2048,"name":"setFontSize","url":"classes/TabTie.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5812,"kind":2048,"name":"getFontSize","url":"classes/TabTie.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5813,"kind":262144,"name":"fontSize","url":"classes/TabTie.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5814,"kind":262144,"name":"fontSizeInPoints","url":"classes/TabTie.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5815,"kind":262144,"name":"fontSizeInPixels","url":"classes/TabTie.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5816,"kind":262144,"name":"fontStyle","url":"classes/TabTie.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5817,"kind":262144,"name":"fontWeight","url":"classes/TabTie.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TabTie"},{"id":5818,"kind":256,"name":"TextBracketParams","url":"interfaces/TextBracketParams.html","classes":"tsd-kind-interface"},{"id":5819,"kind":1024,"name":"start","url":"interfaces/TextBracketParams.html#start","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextBracketParams"},{"id":5820,"kind":1024,"name":"stop","url":"interfaces/TextBracketParams.html#stop","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextBracketParams"},{"id":5821,"kind":1024,"name":"text","url":"interfaces/TextBracketParams.html#text","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextBracketParams"},{"id":5822,"kind":1024,"name":"superscript","url":"interfaces/TextBracketParams.html#superscript","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextBracketParams"},{"id":5823,"kind":1024,"name":"position","url":"interfaces/TextBracketParams.html#position","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextBracketParams"},{"id":5824,"kind":8,"name":"TextBracketPosition","url":"enums/TextBracketPosition.html","classes":"tsd-kind-enum"},{"id":5825,"kind":16,"name":"TOP","url":"enums/TextBracketPosition.html#TOP","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"TextBracketPosition"},{"id":5826,"kind":16,"name":"BOTTOM","url":"enums/TextBracketPosition.html#BOTTOM","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"TextBracketPosition"},{"id":5827,"kind":128,"name":"TextBracket","url":"classes/TextBracket.html","classes":"tsd-kind-class"},{"id":5828,"kind":1024,"name":"DEBUG","url":"classes/TextBracket.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"TextBracket"},{"id":5829,"kind":262144,"name":"CATEGORY","url":"classes/TextBracket.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TextBracket"},{"id":5830,"kind":1024,"name":"TEXT_FONT","url":"classes/TextBracket.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TextBracket"},{"id":5831,"kind":262144,"name":"Position","url":"classes/TextBracket.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"TextBracket"},{"id":5832,"kind":262144,"name":"PositionString","url":"classes/TextBracket.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"TextBracket"},{"id":5833,"kind":262144,"name":"Positions","url":"classes/TextBracket.html#Positions","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"TextBracket"},{"id":5834,"kind":262144,"name":"PositionsString","url":"classes/TextBracket.html#PositionsString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"TextBracket"},{"id":5835,"kind":512,"name":"constructor","url":"classes/TextBracket.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"TextBracket"},{"id":5836,"kind":1024,"name":"render_options","url":"classes/TextBracket.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TextBracket"},{"id":5837,"kind":65536,"name":"__type","url":"classes/TextBracket.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"TextBracket"},{"id":5838,"kind":1024,"name":"dashed","url":"classes/TextBracket.html#__type.dashed","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextBracket.__type"},{"id":5839,"kind":1024,"name":"color","url":"classes/TextBracket.html#__type.color","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextBracket.__type"},{"id":5840,"kind":1024,"name":"line_width","url":"classes/TextBracket.html#__type.line_width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextBracket.__type"},{"id":5841,"kind":1024,"name":"underline_superscript","url":"classes/TextBracket.html#__type.underline_superscript","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextBracket.__type"},{"id":5842,"kind":1024,"name":"show_bracket","url":"classes/TextBracket.html#__type.show_bracket","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextBracket.__type"},{"id":5843,"kind":1024,"name":"dash","url":"classes/TextBracket.html#__type.dash","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextBracket.__type"},{"id":5844,"kind":1024,"name":"bracket_height","url":"classes/TextBracket.html#__type.bracket_height","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextBracket.__type"},{"id":5845,"kind":1024,"name":"position","url":"classes/TextBracket.html#position","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TextBracket"},{"id":5846,"kind":1024,"name":"start","url":"classes/TextBracket.html#start","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TextBracket"},{"id":5847,"kind":1024,"name":"stop","url":"classes/TextBracket.html#stop","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TextBracket"},{"id":5848,"kind":2048,"name":"applyStyle","url":"classes/TextBracket.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TextBracket"},{"id":5849,"kind":2048,"name":"setDashed","url":"classes/TextBracket.html#setDashed","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextBracket"},{"id":5850,"kind":2048,"name":"setLine","url":"classes/TextBracket.html#setLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextBracket"},{"id":5851,"kind":2048,"name":"draw","url":"classes/TextBracket.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TextBracket"},{"id":5852,"kind":2048,"name":"addChildElement","url":"classes/TextBracket.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5853,"kind":2048,"name":"getCategory","url":"classes/TextBracket.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5854,"kind":2048,"name":"setStyle","url":"classes/TextBracket.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5855,"kind":2048,"name":"setGroupStyle","url":"classes/TextBracket.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5856,"kind":2048,"name":"getStyle","url":"classes/TextBracket.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5857,"kind":2048,"name":"restoreStyle","url":"classes/TextBracket.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5858,"kind":2048,"name":"drawWithStyle","url":"classes/TextBracket.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5859,"kind":2048,"name":"hasClass","url":"classes/TextBracket.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5860,"kind":2048,"name":"addClass","url":"classes/TextBracket.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5861,"kind":2048,"name":"removeClass","url":"classes/TextBracket.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5862,"kind":2048,"name":"onRegister","url":"classes/TextBracket.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5863,"kind":2048,"name":"isRendered","url":"classes/TextBracket.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5864,"kind":2048,"name":"setRendered","url":"classes/TextBracket.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5865,"kind":2048,"name":"getAttributes","url":"classes/TextBracket.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5866,"kind":2048,"name":"getAttribute","url":"classes/TextBracket.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5867,"kind":2048,"name":"getSVGElement","url":"classes/TextBracket.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5868,"kind":2048,"name":"setAttribute","url":"classes/TextBracket.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5869,"kind":2048,"name":"getBoundingBox","url":"classes/TextBracket.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5870,"kind":2048,"name":"getContext","url":"classes/TextBracket.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5871,"kind":2048,"name":"setContext","url":"classes/TextBracket.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5872,"kind":2048,"name":"checkContext","url":"classes/TextBracket.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5873,"kind":262144,"name":"font","url":"classes/TextBracket.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5874,"kind":2048,"name":"setFont","url":"classes/TextBracket.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5875,"kind":2048,"name":"getFont","url":"classes/TextBracket.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5876,"kind":2048,"name":"resetFont","url":"classes/TextBracket.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5877,"kind":262144,"name":"fontInfo","url":"classes/TextBracket.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5878,"kind":2048,"name":"setFontSize","url":"classes/TextBracket.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5879,"kind":2048,"name":"getFontSize","url":"classes/TextBracket.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5880,"kind":262144,"name":"fontSize","url":"classes/TextBracket.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5881,"kind":262144,"name":"fontSizeInPoints","url":"classes/TextBracket.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5882,"kind":262144,"name":"fontSizeInPixels","url":"classes/TextBracket.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5883,"kind":262144,"name":"fontStyle","url":"classes/TextBracket.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5884,"kind":262144,"name":"fontWeight","url":"classes/TextBracket.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextBracket"},{"id":5885,"kind":128,"name":"TextDynamics","url":"classes/TextDynamics.html","classes":"tsd-kind-class"},{"id":5886,"kind":1024,"name":"DEBUG","url":"classes/TextDynamics.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"TextDynamics"},{"id":5887,"kind":262144,"name":"CATEGORY","url":"classes/TextDynamics.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TextDynamics"},{"id":5888,"kind":262144,"name":"GLYPHS","url":"classes/TextDynamics.html#GLYPHS","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"TextDynamics"},{"id":5889,"kind":2048,"name":"plotMetrics","url":"classes/TextDynamics.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TextDynamics"},{"id":5890,"kind":1024,"name":"TEXT_FONT","url":"classes/TextDynamics.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TextDynamics"},{"id":5891,"kind":512,"name":"constructor","url":"classes/TextDynamics.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"TextDynamics"},{"id":5892,"kind":2048,"name":"setLine","url":"classes/TextDynamics.html#setLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextDynamics"},{"id":5893,"kind":2048,"name":"preFormat","url":"classes/TextDynamics.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TextDynamics"},{"id":5894,"kind":2048,"name":"draw","url":"classes/TextDynamics.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TextDynamics"},{"id":5895,"kind":1024,"name":"glyph","url":"classes/TextDynamics.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5896,"kind":1024,"name":"keys","url":"classes/TextDynamics.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5897,"kind":1024,"name":"keyProps","url":"classes/TextDynamics.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5898,"kind":1024,"name":"render_options","url":"classes/TextDynamics.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5899,"kind":65536,"name":"__type","url":"classes/TextDynamics.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"TextDynamics"},{"id":5900,"kind":1024,"name":"draw_stem_through_stave","url":"classes/TextDynamics.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5901,"kind":1024,"name":"draw","url":"classes/TextDynamics.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5902,"kind":1024,"name":"draw_dots","url":"classes/TextDynamics.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5903,"kind":1024,"name":"draw_stem","url":"classes/TextDynamics.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5904,"kind":1024,"name":"y_shift","url":"classes/TextDynamics.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5905,"kind":1024,"name":"extend_left","url":"classes/TextDynamics.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5906,"kind":1024,"name":"extend_right","url":"classes/TextDynamics.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5907,"kind":1024,"name":"glyph_font_scale","url":"classes/TextDynamics.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5908,"kind":1024,"name":"annotation_spacing","url":"classes/TextDynamics.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5909,"kind":1024,"name":"glyph_font_size","url":"classes/TextDynamics.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5910,"kind":1024,"name":"scale","url":"classes/TextDynamics.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5911,"kind":1024,"name":"font","url":"classes/TextDynamics.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5912,"kind":1024,"name":"stroke_px","url":"classes/TextDynamics.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextDynamics.__type"},{"id":5913,"kind":2048,"name":"getPlayNote","url":"classes/TextDynamics.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5914,"kind":2048,"name":"setPlayNote","url":"classes/TextDynamics.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5915,"kind":2048,"name":"isRest","url":"classes/TextDynamics.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5916,"kind":2048,"name":"addStroke","url":"classes/TextDynamics.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5917,"kind":2048,"name":"getStave","url":"classes/TextDynamics.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5918,"kind":2048,"name":"checkStave","url":"classes/TextDynamics.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5919,"kind":2048,"name":"setStave","url":"classes/TextDynamics.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5920,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/TextDynamics.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5921,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/TextDynamics.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5922,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/TextDynamics.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5923,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/TextDynamics.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5924,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/TextDynamics.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5925,"kind":2048,"name":"getLineNumber","url":"classes/TextDynamics.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5926,"kind":2048,"name":"getLineForRest","url":"classes/TextDynamics.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5927,"kind":2048,"name":"getGlyph","url":"classes/TextDynamics.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5928,"kind":2048,"name":"getGlyphWidth","url":"classes/TextDynamics.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5929,"kind":2048,"name":"setYs","url":"classes/TextDynamics.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5930,"kind":2048,"name":"getYs","url":"classes/TextDynamics.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5931,"kind":2048,"name":"getYForTopText","url":"classes/TextDynamics.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5932,"kind":2048,"name":"getVoice","url":"classes/TextDynamics.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5933,"kind":2048,"name":"setVoice","url":"classes/TextDynamics.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5934,"kind":2048,"name":"getTickContext","url":"classes/TextDynamics.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5935,"kind":2048,"name":"setTickContext","url":"classes/TextDynamics.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5936,"kind":2048,"name":"getDuration","url":"classes/TextDynamics.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5937,"kind":2048,"name":"isDotted","url":"classes/TextDynamics.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5938,"kind":2048,"name":"hasStem","url":"classes/TextDynamics.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5939,"kind":2048,"name":"getNoteType","url":"classes/TextDynamics.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5940,"kind":2048,"name":"getBeam","url":"classes/TextDynamics.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5941,"kind":2048,"name":"checkBeam","url":"classes/TextDynamics.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5942,"kind":2048,"name":"hasBeam","url":"classes/TextDynamics.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5943,"kind":2048,"name":"setBeam","url":"classes/TextDynamics.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5944,"kind":2048,"name":"addModifier","url":"classes/TextDynamics.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5945,"kind":2048,"name":"getModifiersByType","url":"classes/TextDynamics.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5946,"kind":2048,"name":"getModifierStartXY","url":"classes/TextDynamics.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5947,"kind":2048,"name":"getRightParenthesisPx","url":"classes/TextDynamics.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5948,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/TextDynamics.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5949,"kind":2048,"name":"getFirstDotPx","url":"classes/TextDynamics.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5950,"kind":2048,"name":"getMetrics","url":"classes/TextDynamics.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5951,"kind":2048,"name":"getAbsoluteX","url":"classes/TextDynamics.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5952,"kind":2048,"name":"getStemDirection","url":"classes/TextDynamics.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5953,"kind":2048,"name":"getStemExtents","url":"classes/TextDynamics.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5954,"kind":2048,"name":"getTieRightX","url":"classes/TextDynamics.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5955,"kind":2048,"name":"getTieLeftX","url":"classes/TextDynamics.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5956,"kind":2048,"name":"getKeys","url":"classes/TextDynamics.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5957,"kind":2048,"name":"getKeyProps","url":"classes/TextDynamics.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5958,"kind":2048,"name":"reset","url":"classes/TextDynamics.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5959,"kind":2048,"name":"getTicks","url":"classes/TextDynamics.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5960,"kind":2048,"name":"setIgnoreTicks","url":"classes/TextDynamics.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5961,"kind":2048,"name":"setWidth","url":"classes/TextDynamics.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5962,"kind":2048,"name":"getWidth","url":"classes/TextDynamics.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5963,"kind":2048,"name":"setXShift","url":"classes/TextDynamics.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5964,"kind":2048,"name":"getXShift","url":"classes/TextDynamics.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5965,"kind":2048,"name":"getX","url":"classes/TextDynamics.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5966,"kind":2048,"name":"getFormatterMetrics","url":"classes/TextDynamics.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5967,"kind":2048,"name":"getCenterXShift","url":"classes/TextDynamics.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5968,"kind":2048,"name":"setCenterXShift","url":"classes/TextDynamics.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5969,"kind":2048,"name":"isCenterAligned","url":"classes/TextDynamics.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5970,"kind":2048,"name":"setCenterAlignment","url":"classes/TextDynamics.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5971,"kind":2048,"name":"getTuplet","url":"classes/TextDynamics.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5972,"kind":2048,"name":"getTupletStack","url":"classes/TextDynamics.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5973,"kind":2048,"name":"resetTuplet","url":"classes/TextDynamics.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5974,"kind":2048,"name":"setTuplet","url":"classes/TextDynamics.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5975,"kind":2048,"name":"addToModifierContext","url":"classes/TextDynamics.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5976,"kind":2048,"name":"getModifiers","url":"classes/TextDynamics.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5977,"kind":2048,"name":"checkTickContext","url":"classes/TextDynamics.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5978,"kind":262144,"name":"preFormatted","url":"classes/TextDynamics.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5979,"kind":2048,"name":"postFormat","url":"classes/TextDynamics.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5980,"kind":262144,"name":"postFormatted","url":"classes/TextDynamics.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5981,"kind":2048,"name":"getIntrinsicTicks","url":"classes/TextDynamics.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5982,"kind":2048,"name":"setIntrinsicTicks","url":"classes/TextDynamics.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5983,"kind":2048,"name":"getTickMultiplier","url":"classes/TextDynamics.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5984,"kind":2048,"name":"applyTickMultiplier","url":"classes/TextDynamics.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5985,"kind":2048,"name":"setDuration","url":"classes/TextDynamics.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5986,"kind":2048,"name":"setModifierContext","url":"classes/TextDynamics.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5987,"kind":2048,"name":"getModifierContext","url":"classes/TextDynamics.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5988,"kind":2048,"name":"checkModifierContext","url":"classes/TextDynamics.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5989,"kind":2048,"name":"addChildElement","url":"classes/TextDynamics.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5990,"kind":2048,"name":"getCategory","url":"classes/TextDynamics.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5991,"kind":2048,"name":"setStyle","url":"classes/TextDynamics.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5992,"kind":2048,"name":"setGroupStyle","url":"classes/TextDynamics.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5993,"kind":2048,"name":"getStyle","url":"classes/TextDynamics.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5994,"kind":2048,"name":"applyStyle","url":"classes/TextDynamics.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5995,"kind":2048,"name":"restoreStyle","url":"classes/TextDynamics.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5996,"kind":2048,"name":"drawWithStyle","url":"classes/TextDynamics.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5997,"kind":2048,"name":"hasClass","url":"classes/TextDynamics.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5998,"kind":2048,"name":"addClass","url":"classes/TextDynamics.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":5999,"kind":2048,"name":"removeClass","url":"classes/TextDynamics.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6000,"kind":2048,"name":"onRegister","url":"classes/TextDynamics.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6001,"kind":2048,"name":"isRendered","url":"classes/TextDynamics.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6002,"kind":2048,"name":"setRendered","url":"classes/TextDynamics.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6003,"kind":2048,"name":"getAttributes","url":"classes/TextDynamics.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6004,"kind":2048,"name":"getAttribute","url":"classes/TextDynamics.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6005,"kind":2048,"name":"getSVGElement","url":"classes/TextDynamics.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6006,"kind":2048,"name":"setAttribute","url":"classes/TextDynamics.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6007,"kind":2048,"name":"getBoundingBox","url":"classes/TextDynamics.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6008,"kind":2048,"name":"getContext","url":"classes/TextDynamics.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6009,"kind":2048,"name":"setContext","url":"classes/TextDynamics.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6010,"kind":2048,"name":"checkContext","url":"classes/TextDynamics.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6011,"kind":262144,"name":"font","url":"classes/TextDynamics.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6012,"kind":2048,"name":"setFont","url":"classes/TextDynamics.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6013,"kind":2048,"name":"getFont","url":"classes/TextDynamics.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6014,"kind":2048,"name":"resetFont","url":"classes/TextDynamics.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6015,"kind":262144,"name":"fontInfo","url":"classes/TextDynamics.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6016,"kind":2048,"name":"setFontSize","url":"classes/TextDynamics.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6017,"kind":2048,"name":"getFontSize","url":"classes/TextDynamics.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6018,"kind":262144,"name":"fontSize","url":"classes/TextDynamics.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6019,"kind":262144,"name":"fontSizeInPoints","url":"classes/TextDynamics.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6020,"kind":262144,"name":"fontSizeInPixels","url":"classes/TextDynamics.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6021,"kind":262144,"name":"fontStyle","url":"classes/TextDynamics.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6022,"kind":262144,"name":"fontWeight","url":"classes/TextDynamics.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextDynamics"},{"id":6023,"kind":256,"name":"TextFormatterInfo","url":"interfaces/TextFormatterInfo.html","classes":"tsd-kind-interface"},{"id":6024,"kind":1024,"name":"family","url":"interfaces/TextFormatterInfo.html#family","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextFormatterInfo"},{"id":6025,"kind":1024,"name":"resolution","url":"interfaces/TextFormatterInfo.html#resolution","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextFormatterInfo"},{"id":6026,"kind":1024,"name":"glyphs","url":"interfaces/TextFormatterInfo.html#glyphs","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextFormatterInfo"},{"id":6027,"kind":1024,"name":"serifs","url":"interfaces/TextFormatterInfo.html#serifs","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextFormatterInfo"},{"id":6028,"kind":1024,"name":"monospaced","url":"interfaces/TextFormatterInfo.html#monospaced","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextFormatterInfo"},{"id":6029,"kind":1024,"name":"italic","url":"interfaces/TextFormatterInfo.html#italic","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextFormatterInfo"},{"id":6030,"kind":1024,"name":"bold","url":"interfaces/TextFormatterInfo.html#bold","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextFormatterInfo"},{"id":6031,"kind":1024,"name":"maxSizeGlyph","url":"interfaces/TextFormatterInfo.html#maxSizeGlyph","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextFormatterInfo"},{"id":6032,"kind":1024,"name":"superscriptOffset","url":"interfaces/TextFormatterInfo.html#superscriptOffset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextFormatterInfo"},{"id":6033,"kind":1024,"name":"subscriptOffset","url":"interfaces/TextFormatterInfo.html#subscriptOffset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextFormatterInfo"},{"id":6034,"kind":1024,"name":"description","url":"interfaces/TextFormatterInfo.html#description","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextFormatterInfo"},{"id":6035,"kind":128,"name":"TextFormatter","url":"classes/TextFormatter.html","classes":"tsd-kind-class"},{"id":6036,"kind":1024,"name":"DEBUG","url":"classes/TextFormatter.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"TextFormatter"},{"id":6037,"kind":2048,"name":"getFontFamilies","url":"classes/TextFormatter.html#getFontFamilies","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"TextFormatter"},{"id":6038,"kind":2048,"name":"create","url":"classes/TextFormatter.html#create","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"TextFormatter"},{"id":6039,"kind":2048,"name":"getInfo","url":"classes/TextFormatter.html#getInfo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"TextFormatter"},{"id":6040,"kind":2048,"name":"registerInfo","url":"classes/TextFormatter.html#registerInfo","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"TextFormatter"},{"id":6041,"kind":2048,"name":"updateParams","url":"classes/TextFormatter.html#updateParams","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextFormatter"},{"id":6042,"kind":2048,"name":"updateCacheKey","url":"classes/TextFormatter.html#updateCacheKey","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextFormatter"},{"id":6043,"kind":2048,"name":"getGlyphMetrics","url":"classes/TextFormatter.html#getGlyphMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextFormatter"},{"id":6044,"kind":262144,"name":"maxHeight","url":"classes/TextFormatter.html#maxHeight","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"TextFormatter"},{"id":6045,"kind":2048,"name":"getWidthForCharacterInEm","url":"classes/TextFormatter.html#getWidthForCharacterInEm","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextFormatter"},{"id":6046,"kind":2048,"name":"getWidthForTextInEm","url":"classes/TextFormatter.html#getWidthForTextInEm","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextFormatter"},{"id":6047,"kind":2048,"name":"getWidthForTextInPx","url":"classes/TextFormatter.html#getWidthForTextInPx","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextFormatter"},{"id":6048,"kind":2048,"name":"setFontSize","url":"classes/TextFormatter.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextFormatter"},{"id":6049,"kind":262144,"name":"fontSizeInPixels","url":"classes/TextFormatter.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"TextFormatter"},{"id":6050,"kind":2048,"name":"getResolution","url":"classes/TextFormatter.html#getResolution","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextFormatter"},{"id":6051,"kind":8,"name":"TextJustification","url":"enums/TextJustification.html","classes":"tsd-kind-enum"},{"id":6052,"kind":16,"name":"LEFT","url":"enums/TextJustification.html#LEFT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"TextJustification"},{"id":6053,"kind":16,"name":"CENTER","url":"enums/TextJustification.html#CENTER","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"TextJustification"},{"id":6054,"kind":16,"name":"RIGHT","url":"enums/TextJustification.html#RIGHT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"TextJustification"},{"id":6055,"kind":256,"name":"TextNoteStruct","url":"interfaces/TextNoteStruct.html","classes":"tsd-kind-interface"},{"id":6056,"kind":1024,"name":"text","url":"interfaces/TextNoteStruct.html#text","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextNoteStruct"},{"id":6057,"kind":1024,"name":"glyph","url":"interfaces/TextNoteStruct.html#glyph","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextNoteStruct"},{"id":6058,"kind":1024,"name":"ignore_ticks","url":"interfaces/TextNoteStruct.html#ignore_ticks","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextNoteStruct"},{"id":6059,"kind":1024,"name":"smooth","url":"interfaces/TextNoteStruct.html#smooth","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextNoteStruct"},{"id":6060,"kind":1024,"name":"font","url":"interfaces/TextNoteStruct.html#font","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextNoteStruct"},{"id":6061,"kind":1024,"name":"subscript","url":"interfaces/TextNoteStruct.html#subscript","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextNoteStruct"},{"id":6062,"kind":1024,"name":"superscript","url":"interfaces/TextNoteStruct.html#superscript","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TextNoteStruct"},{"id":6063,"kind":1024,"name":"keys","url":"interfaces/TextNoteStruct.html#keys","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TextNoteStruct"},{"id":6064,"kind":1024,"name":"duration","url":"interfaces/TextNoteStruct.html#duration","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TextNoteStruct"},{"id":6065,"kind":1024,"name":"line","url":"interfaces/TextNoteStruct.html#line","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TextNoteStruct"},{"id":6066,"kind":1024,"name":"dots","url":"interfaces/TextNoteStruct.html#dots","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TextNoteStruct"},{"id":6067,"kind":1024,"name":"type","url":"interfaces/TextNoteStruct.html#type","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TextNoteStruct"},{"id":6068,"kind":1024,"name":"align_center","url":"interfaces/TextNoteStruct.html#align_center","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TextNoteStruct"},{"id":6069,"kind":1024,"name":"duration_override","url":"interfaces/TextNoteStruct.html#duration_override","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TextNoteStruct"},{"id":6070,"kind":128,"name":"TextNote","url":"classes/TextNote.html","classes":"tsd-kind-class"},{"id":6071,"kind":262144,"name":"CATEGORY","url":"classes/TextNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TextNote"},{"id":6072,"kind":1024,"name":"TEXT_FONT","url":"classes/TextNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TextNote"},{"id":6073,"kind":1024,"name":"Justification","url":"classes/TextNote.html#Justification","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"TextNote"},{"id":6074,"kind":262144,"name":"GLYPHS","url":"classes/TextNote.html#GLYPHS","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"TextNote"},{"id":6075,"kind":2048,"name":"plotMetrics","url":"classes/TextNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TextNote"},{"id":6076,"kind":512,"name":"constructor","url":"classes/TextNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"TextNote"},{"id":6077,"kind":2048,"name":"setJustification","url":"classes/TextNote.html#setJustification","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextNote"},{"id":6078,"kind":2048,"name":"setLine","url":"classes/TextNote.html#setLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextNote"},{"id":6079,"kind":2048,"name":"getLine","url":"classes/TextNote.html#getLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextNote"},{"id":6080,"kind":2048,"name":"getText","url":"classes/TextNote.html#getText","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TextNote"},{"id":6081,"kind":2048,"name":"preFormat","url":"classes/TextNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TextNote"},{"id":6082,"kind":2048,"name":"draw","url":"classes/TextNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TextNote"},{"id":6083,"kind":1024,"name":"glyph","url":"classes/TextNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6084,"kind":1024,"name":"keys","url":"classes/TextNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6085,"kind":1024,"name":"keyProps","url":"classes/TextNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6086,"kind":1024,"name":"render_options","url":"classes/TextNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6087,"kind":65536,"name":"__type","url":"classes/TextNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"TextNote"},{"id":6088,"kind":1024,"name":"draw_stem_through_stave","url":"classes/TextNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6089,"kind":1024,"name":"draw","url":"classes/TextNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6090,"kind":1024,"name":"draw_dots","url":"classes/TextNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6091,"kind":1024,"name":"draw_stem","url":"classes/TextNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6092,"kind":1024,"name":"y_shift","url":"classes/TextNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6093,"kind":1024,"name":"extend_left","url":"classes/TextNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6094,"kind":1024,"name":"extend_right","url":"classes/TextNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6095,"kind":1024,"name":"glyph_font_scale","url":"classes/TextNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6096,"kind":1024,"name":"annotation_spacing","url":"classes/TextNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6097,"kind":1024,"name":"glyph_font_size","url":"classes/TextNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6098,"kind":1024,"name":"scale","url":"classes/TextNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6099,"kind":1024,"name":"font","url":"classes/TextNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6100,"kind":1024,"name":"stroke_px","url":"classes/TextNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TextNote.__type"},{"id":6101,"kind":2048,"name":"getPlayNote","url":"classes/TextNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6102,"kind":2048,"name":"setPlayNote","url":"classes/TextNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6103,"kind":2048,"name":"isRest","url":"classes/TextNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6104,"kind":2048,"name":"addStroke","url":"classes/TextNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6105,"kind":2048,"name":"getStave","url":"classes/TextNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6106,"kind":2048,"name":"checkStave","url":"classes/TextNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6107,"kind":2048,"name":"setStave","url":"classes/TextNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6108,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/TextNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6109,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/TextNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6110,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/TextNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6111,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/TextNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6112,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/TextNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6113,"kind":2048,"name":"getLineNumber","url":"classes/TextNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6114,"kind":2048,"name":"getLineForRest","url":"classes/TextNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6115,"kind":2048,"name":"getGlyph","url":"classes/TextNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6116,"kind":2048,"name":"getGlyphWidth","url":"classes/TextNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6117,"kind":2048,"name":"setYs","url":"classes/TextNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6118,"kind":2048,"name":"getYs","url":"classes/TextNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6119,"kind":2048,"name":"getYForTopText","url":"classes/TextNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6120,"kind":2048,"name":"getVoice","url":"classes/TextNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6121,"kind":2048,"name":"setVoice","url":"classes/TextNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6122,"kind":2048,"name":"getTickContext","url":"classes/TextNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6123,"kind":2048,"name":"setTickContext","url":"classes/TextNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6124,"kind":2048,"name":"getDuration","url":"classes/TextNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6125,"kind":2048,"name":"isDotted","url":"classes/TextNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6126,"kind":2048,"name":"hasStem","url":"classes/TextNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6127,"kind":2048,"name":"getNoteType","url":"classes/TextNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6128,"kind":2048,"name":"getBeam","url":"classes/TextNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6129,"kind":2048,"name":"checkBeam","url":"classes/TextNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6130,"kind":2048,"name":"hasBeam","url":"classes/TextNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6131,"kind":2048,"name":"setBeam","url":"classes/TextNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6132,"kind":2048,"name":"addModifier","url":"classes/TextNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6133,"kind":2048,"name":"getModifiersByType","url":"classes/TextNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6134,"kind":2048,"name":"getModifierStartXY","url":"classes/TextNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6135,"kind":2048,"name":"getRightParenthesisPx","url":"classes/TextNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6136,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/TextNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6137,"kind":2048,"name":"getFirstDotPx","url":"classes/TextNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6138,"kind":2048,"name":"getMetrics","url":"classes/TextNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6139,"kind":2048,"name":"getAbsoluteX","url":"classes/TextNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6140,"kind":2048,"name":"getStemDirection","url":"classes/TextNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6141,"kind":2048,"name":"getStemExtents","url":"classes/TextNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6142,"kind":2048,"name":"getTieRightX","url":"classes/TextNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6143,"kind":2048,"name":"getTieLeftX","url":"classes/TextNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6144,"kind":2048,"name":"getKeys","url":"classes/TextNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6145,"kind":2048,"name":"getKeyProps","url":"classes/TextNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6146,"kind":2048,"name":"reset","url":"classes/TextNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6147,"kind":2048,"name":"getTicks","url":"classes/TextNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6148,"kind":2048,"name":"setIgnoreTicks","url":"classes/TextNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6149,"kind":2048,"name":"setWidth","url":"classes/TextNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6150,"kind":2048,"name":"getWidth","url":"classes/TextNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6151,"kind":2048,"name":"setXShift","url":"classes/TextNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6152,"kind":2048,"name":"getXShift","url":"classes/TextNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6153,"kind":2048,"name":"getX","url":"classes/TextNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6154,"kind":2048,"name":"getFormatterMetrics","url":"classes/TextNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6155,"kind":2048,"name":"getCenterXShift","url":"classes/TextNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6156,"kind":2048,"name":"setCenterXShift","url":"classes/TextNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6157,"kind":2048,"name":"isCenterAligned","url":"classes/TextNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6158,"kind":2048,"name":"setCenterAlignment","url":"classes/TextNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6159,"kind":2048,"name":"getTuplet","url":"classes/TextNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6160,"kind":2048,"name":"getTupletStack","url":"classes/TextNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6161,"kind":2048,"name":"resetTuplet","url":"classes/TextNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6162,"kind":2048,"name":"setTuplet","url":"classes/TextNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6163,"kind":2048,"name":"addToModifierContext","url":"classes/TextNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6164,"kind":2048,"name":"getModifiers","url":"classes/TextNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6165,"kind":2048,"name":"checkTickContext","url":"classes/TextNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6166,"kind":262144,"name":"preFormatted","url":"classes/TextNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6167,"kind":2048,"name":"postFormat","url":"classes/TextNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6168,"kind":262144,"name":"postFormatted","url":"classes/TextNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6169,"kind":2048,"name":"getIntrinsicTicks","url":"classes/TextNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6170,"kind":2048,"name":"setIntrinsicTicks","url":"classes/TextNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6171,"kind":2048,"name":"getTickMultiplier","url":"classes/TextNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6172,"kind":2048,"name":"applyTickMultiplier","url":"classes/TextNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6173,"kind":2048,"name":"setDuration","url":"classes/TextNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6174,"kind":2048,"name":"setModifierContext","url":"classes/TextNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6175,"kind":2048,"name":"getModifierContext","url":"classes/TextNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6176,"kind":2048,"name":"checkModifierContext","url":"classes/TextNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6177,"kind":2048,"name":"addChildElement","url":"classes/TextNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6178,"kind":2048,"name":"getCategory","url":"classes/TextNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6179,"kind":2048,"name":"setStyle","url":"classes/TextNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6180,"kind":2048,"name":"setGroupStyle","url":"classes/TextNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6181,"kind":2048,"name":"getStyle","url":"classes/TextNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6182,"kind":2048,"name":"applyStyle","url":"classes/TextNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6183,"kind":2048,"name":"restoreStyle","url":"classes/TextNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6184,"kind":2048,"name":"drawWithStyle","url":"classes/TextNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6185,"kind":2048,"name":"hasClass","url":"classes/TextNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6186,"kind":2048,"name":"addClass","url":"classes/TextNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6187,"kind":2048,"name":"removeClass","url":"classes/TextNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6188,"kind":2048,"name":"onRegister","url":"classes/TextNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6189,"kind":2048,"name":"isRendered","url":"classes/TextNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6190,"kind":2048,"name":"setRendered","url":"classes/TextNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6191,"kind":2048,"name":"getAttributes","url":"classes/TextNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6192,"kind":2048,"name":"getAttribute","url":"classes/TextNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6193,"kind":2048,"name":"getSVGElement","url":"classes/TextNote.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6194,"kind":2048,"name":"setAttribute","url":"classes/TextNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6195,"kind":2048,"name":"getBoundingBox","url":"classes/TextNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6196,"kind":2048,"name":"getContext","url":"classes/TextNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6197,"kind":2048,"name":"setContext","url":"classes/TextNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6198,"kind":2048,"name":"checkContext","url":"classes/TextNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6199,"kind":262144,"name":"font","url":"classes/TextNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6200,"kind":2048,"name":"setFont","url":"classes/TextNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6201,"kind":2048,"name":"getFont","url":"classes/TextNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6202,"kind":2048,"name":"resetFont","url":"classes/TextNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6203,"kind":262144,"name":"fontInfo","url":"classes/TextNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6204,"kind":2048,"name":"setFontSize","url":"classes/TextNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6205,"kind":2048,"name":"getFontSize","url":"classes/TextNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6206,"kind":262144,"name":"fontSize","url":"classes/TextNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6207,"kind":262144,"name":"fontSizeInPoints","url":"classes/TextNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6208,"kind":262144,"name":"fontSizeInPixels","url":"classes/TextNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6209,"kind":262144,"name":"fontStyle","url":"classes/TextNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6210,"kind":262144,"name":"fontWeight","url":"classes/TextNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TextNote"},{"id":6211,"kind":256,"name":"FormatterMetrics","url":"interfaces/FormatterMetrics.html","classes":"tsd-kind-interface"},{"id":6212,"kind":1024,"name":"duration","url":"interfaces/FormatterMetrics.html#duration","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FormatterMetrics"},{"id":6213,"kind":1024,"name":"freedom","url":"interfaces/FormatterMetrics.html#freedom","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FormatterMetrics"},{"id":6214,"kind":65536,"name":"__type","url":"interfaces/FormatterMetrics.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"FormatterMetrics"},{"id":6215,"kind":1024,"name":"left","url":"interfaces/FormatterMetrics.html#__type.left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FormatterMetrics.__type"},{"id":6216,"kind":1024,"name":"right","url":"interfaces/FormatterMetrics.html#__type.right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FormatterMetrics.__type"},{"id":6217,"kind":1024,"name":"iterations","url":"interfaces/FormatterMetrics.html#iterations","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FormatterMetrics"},{"id":6218,"kind":1024,"name":"space","url":"interfaces/FormatterMetrics.html#space","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"FormatterMetrics"},{"id":6219,"kind":65536,"name":"__type","url":"interfaces/FormatterMetrics.html#__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"FormatterMetrics"},{"id":6220,"kind":1024,"name":"used","url":"interfaces/FormatterMetrics.html#__type-1.used","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FormatterMetrics.__type"},{"id":6221,"kind":1024,"name":"mean","url":"interfaces/FormatterMetrics.html#__type-1.mean","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FormatterMetrics.__type"},{"id":6222,"kind":1024,"name":"deviation","url":"interfaces/FormatterMetrics.html#__type-1.deviation","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"FormatterMetrics.__type"},{"id":6223,"kind":128,"name":"Tickable","url":"classes/Tickable.html","classes":"tsd-kind-class"},{"id":6224,"kind":262144,"name":"CATEGORY","url":"classes/Tickable.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Tickable"},{"id":6225,"kind":1024,"name":"TEXT_FONT","url":"classes/Tickable.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Tickable"},{"id":6226,"kind":512,"name":"constructor","url":"classes/Tickable.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Tickable"},{"id":6227,"kind":2048,"name":"reset","url":"classes/Tickable.html#reset","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6228,"kind":2048,"name":"getTicks","url":"classes/Tickable.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6229,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/Tickable.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6230,"kind":2048,"name":"setIgnoreTicks","url":"classes/Tickable.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6231,"kind":2048,"name":"setWidth","url":"classes/Tickable.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6232,"kind":2048,"name":"getWidth","url":"classes/Tickable.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6233,"kind":2048,"name":"setXShift","url":"classes/Tickable.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6234,"kind":2048,"name":"getXShift","url":"classes/Tickable.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6235,"kind":2048,"name":"getX","url":"classes/Tickable.html#getX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6236,"kind":2048,"name":"getFormatterMetrics","url":"classes/Tickable.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6237,"kind":2048,"name":"getCenterXShift","url":"classes/Tickable.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6238,"kind":2048,"name":"setCenterXShift","url":"classes/Tickable.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6239,"kind":2048,"name":"isCenterAligned","url":"classes/Tickable.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6240,"kind":2048,"name":"setCenterAlignment","url":"classes/Tickable.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6241,"kind":2048,"name":"getVoice","url":"classes/Tickable.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6242,"kind":2048,"name":"setVoice","url":"classes/Tickable.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6243,"kind":2048,"name":"getTuplet","url":"classes/Tickable.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6244,"kind":2048,"name":"getTupletStack","url":"classes/Tickable.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6245,"kind":2048,"name":"resetTuplet","url":"classes/Tickable.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6246,"kind":2048,"name":"setTuplet","url":"classes/Tickable.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6247,"kind":2048,"name":"addToModifierContext","url":"classes/Tickable.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6248,"kind":2048,"name":"addModifier","url":"classes/Tickable.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6249,"kind":2048,"name":"getModifiers","url":"classes/Tickable.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6250,"kind":2048,"name":"setTickContext","url":"classes/Tickable.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6251,"kind":2048,"name":"checkTickContext","url":"classes/Tickable.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6252,"kind":2048,"name":"preFormat","url":"classes/Tickable.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6253,"kind":262144,"name":"preFormatted","url":"classes/Tickable.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"Tickable"},{"id":6254,"kind":2048,"name":"postFormat","url":"classes/Tickable.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6255,"kind":262144,"name":"postFormatted","url":"classes/Tickable.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"Tickable"},{"id":6256,"kind":2048,"name":"getIntrinsicTicks","url":"classes/Tickable.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6257,"kind":2048,"name":"setIntrinsicTicks","url":"classes/Tickable.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6258,"kind":2048,"name":"getTickMultiplier","url":"classes/Tickable.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6259,"kind":2048,"name":"applyTickMultiplier","url":"classes/Tickable.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6260,"kind":2048,"name":"setDuration","url":"classes/Tickable.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6261,"kind":2048,"name":"getAbsoluteX","url":"classes/Tickable.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6262,"kind":2048,"name":"setModifierContext","url":"classes/Tickable.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6263,"kind":2048,"name":"getModifierContext","url":"classes/Tickable.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6264,"kind":2048,"name":"checkModifierContext","url":"classes/Tickable.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6265,"kind":2048,"name":"getStave","url":"classes/Tickable.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6266,"kind":2048,"name":"setStave","url":"classes/Tickable.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6267,"kind":2048,"name":"getMetrics","url":"classes/Tickable.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tickable"},{"id":6268,"kind":2048,"name":"addChildElement","url":"classes/Tickable.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6269,"kind":2048,"name":"getCategory","url":"classes/Tickable.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6270,"kind":2048,"name":"setStyle","url":"classes/Tickable.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6271,"kind":2048,"name":"setGroupStyle","url":"classes/Tickable.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6272,"kind":2048,"name":"getStyle","url":"classes/Tickable.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6273,"kind":2048,"name":"applyStyle","url":"classes/Tickable.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6274,"kind":2048,"name":"restoreStyle","url":"classes/Tickable.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6275,"kind":2048,"name":"drawWithStyle","url":"classes/Tickable.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6276,"kind":2048,"name":"draw","url":"classes/Tickable.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6277,"kind":2048,"name":"hasClass","url":"classes/Tickable.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6278,"kind":2048,"name":"addClass","url":"classes/Tickable.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6279,"kind":2048,"name":"removeClass","url":"classes/Tickable.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6280,"kind":2048,"name":"onRegister","url":"classes/Tickable.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6281,"kind":2048,"name":"isRendered","url":"classes/Tickable.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6282,"kind":2048,"name":"setRendered","url":"classes/Tickable.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6283,"kind":2048,"name":"getAttributes","url":"classes/Tickable.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6284,"kind":2048,"name":"getAttribute","url":"classes/Tickable.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6285,"kind":2048,"name":"getSVGElement","url":"classes/Tickable.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6286,"kind":2048,"name":"setAttribute","url":"classes/Tickable.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6287,"kind":2048,"name":"getBoundingBox","url":"classes/Tickable.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6288,"kind":2048,"name":"getContext","url":"classes/Tickable.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6289,"kind":2048,"name":"setContext","url":"classes/Tickable.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6290,"kind":2048,"name":"checkContext","url":"classes/Tickable.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6291,"kind":262144,"name":"font","url":"classes/Tickable.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6292,"kind":2048,"name":"setFont","url":"classes/Tickable.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6293,"kind":2048,"name":"getFont","url":"classes/Tickable.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6294,"kind":2048,"name":"resetFont","url":"classes/Tickable.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6295,"kind":262144,"name":"fontInfo","url":"classes/Tickable.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6296,"kind":2048,"name":"setFontSize","url":"classes/Tickable.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6297,"kind":2048,"name":"getFontSize","url":"classes/Tickable.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6298,"kind":262144,"name":"fontSize","url":"classes/Tickable.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6299,"kind":262144,"name":"fontSizeInPoints","url":"classes/Tickable.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6300,"kind":262144,"name":"fontSizeInPixels","url":"classes/Tickable.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6301,"kind":262144,"name":"fontStyle","url":"classes/Tickable.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6302,"kind":262144,"name":"fontWeight","url":"classes/Tickable.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tickable"},{"id":6303,"kind":256,"name":"TickContextMetrics","url":"interfaces/TickContextMetrics.html","classes":"tsd-kind-interface"},{"id":6304,"kind":1024,"name":"totalLeftPx","url":"interfaces/TickContextMetrics.html#totalLeftPx","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TickContextMetrics"},{"id":6305,"kind":1024,"name":"totalRightPx","url":"interfaces/TickContextMetrics.html#totalRightPx","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TickContextMetrics"},{"id":6306,"kind":1024,"name":"width","url":"interfaces/TickContextMetrics.html#width","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TickContextMetrics"},{"id":6307,"kind":1024,"name":"glyphWidth","url":"interfaces/TickContextMetrics.html#glyphWidth","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TickContextMetrics"},{"id":6308,"kind":1024,"name":"notePx","url":"interfaces/TickContextMetrics.html#notePx","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TickContextMetrics"},{"id":6309,"kind":1024,"name":"modLeftPx","url":"interfaces/TickContextMetrics.html#modLeftPx","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TickContextMetrics"},{"id":6310,"kind":1024,"name":"modRightPx","url":"interfaces/TickContextMetrics.html#modRightPx","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TickContextMetrics"},{"id":6311,"kind":1024,"name":"leftDisplacedHeadPx","url":"interfaces/TickContextMetrics.html#leftDisplacedHeadPx","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TickContextMetrics"},{"id":6312,"kind":1024,"name":"glyphPx","url":"interfaces/TickContextMetrics.html#glyphPx","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TickContextMetrics"},{"id":6313,"kind":1024,"name":"rightDisplacedHeadPx","url":"interfaces/TickContextMetrics.html#rightDisplacedHeadPx","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"TickContextMetrics"},{"id":6314,"kind":256,"name":"TickContextOptions","url":"interfaces/TickContextOptions.html","classes":"tsd-kind-interface"},{"id":6315,"kind":1024,"name":"tickID","url":"interfaces/TickContextOptions.html#tickID","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TickContextOptions"},{"id":6316,"kind":128,"name":"TickContext","url":"classes/TickContext.html","classes":"tsd-kind-class"},{"id":6317,"kind":2048,"name":"getNextContext","url":"classes/TickContext.html#getNextContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"TickContext"},{"id":6318,"kind":512,"name":"constructor","url":"classes/TickContext.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"TickContext"},{"id":6319,"kind":1024,"name":"tContexts","url":"classes/TickContext.html#tContexts","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TickContext"},{"id":6320,"kind":2048,"name":"getTickID","url":"classes/TickContext.html#getTickID","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6321,"kind":2048,"name":"getX","url":"classes/TickContext.html#getX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6322,"kind":2048,"name":"setX","url":"classes/TickContext.html#setX","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6323,"kind":2048,"name":"getXBase","url":"classes/TickContext.html#getXBase","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6324,"kind":2048,"name":"setXBase","url":"classes/TickContext.html#setXBase","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6325,"kind":2048,"name":"getXOffset","url":"classes/TickContext.html#getXOffset","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6326,"kind":2048,"name":"setXOffset","url":"classes/TickContext.html#setXOffset","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6327,"kind":2048,"name":"getWidth","url":"classes/TickContext.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6328,"kind":2048,"name":"setPadding","url":"classes/TickContext.html#setPadding","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6329,"kind":2048,"name":"getMaxTicks","url":"classes/TickContext.html#getMaxTicks","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6330,"kind":2048,"name":"getMinTicks","url":"classes/TickContext.html#getMinTicks","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6331,"kind":2048,"name":"getMaxTickable","url":"classes/TickContext.html#getMaxTickable","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6332,"kind":2048,"name":"getMinTickable","url":"classes/TickContext.html#getMinTickable","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6333,"kind":2048,"name":"getTickables","url":"classes/TickContext.html#getTickables","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6334,"kind":2048,"name":"getTickableForVoice","url":"classes/TickContext.html#getTickableForVoice","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6335,"kind":2048,"name":"getTickablesByVoice","url":"classes/TickContext.html#getTickablesByVoice","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6336,"kind":2048,"name":"getCenterAlignedTickables","url":"classes/TickContext.html#getCenterAlignedTickables","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6337,"kind":2048,"name":"getMetrics","url":"classes/TickContext.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6338,"kind":2048,"name":"getCurrentTick","url":"classes/TickContext.html#getCurrentTick","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6339,"kind":2048,"name":"setCurrentTick","url":"classes/TickContext.html#setCurrentTick","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6340,"kind":2048,"name":"addTickable","url":"classes/TickContext.html#addTickable","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6341,"kind":2048,"name":"preFormat","url":"classes/TickContext.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6342,"kind":2048,"name":"postFormat","url":"classes/TickContext.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6343,"kind":2048,"name":"getFormatterMetrics","url":"classes/TickContext.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TickContext"},{"id":6344,"kind":128,"name":"TimeSignatureGlyph","url":"classes/TimeSignatureGlyph.html","classes":"tsd-kind-class"},{"id":6345,"kind":262144,"name":"CATEGORY","url":"classes/TimeSignatureGlyph.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignatureGlyph"},{"id":6346,"kind":1024,"name":"CURRENT_CACHE_KEY","url":"classes/TimeSignatureGlyph.html#CURRENT_CACHE_KEY","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignatureGlyph"},{"id":6347,"kind":1024,"name":"MUSIC_FONT_STACK","url":"classes/TimeSignatureGlyph.html#MUSIC_FONT_STACK","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignatureGlyph"},{"id":6348,"kind":2048,"name":"lookupFontMetric","url":"classes/TimeSignatureGlyph.html#lookupFontMetric","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignatureGlyph"},{"id":6349,"kind":2048,"name":"lookupGlyph","url":"classes/TimeSignatureGlyph.html#lookupGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignatureGlyph"},{"id":6350,"kind":2048,"name":"loadMetrics","url":"classes/TimeSignatureGlyph.html#loadMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignatureGlyph"},{"id":6351,"kind":2048,"name":"renderGlyph","url":"classes/TimeSignatureGlyph.html#renderGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignatureGlyph"},{"id":6352,"kind":2048,"name":"renderOutline","url":"classes/TimeSignatureGlyph.html#renderOutline","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignatureGlyph"},{"id":6353,"kind":2048,"name":"getOutlineBoundingBox","url":"classes/TimeSignatureGlyph.html#getOutlineBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignatureGlyph"},{"id":6354,"kind":2048,"name":"getWidth","url":"classes/TimeSignatureGlyph.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignatureGlyph"},{"id":6355,"kind":1024,"name":"TEXT_FONT","url":"classes/TimeSignatureGlyph.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignatureGlyph"},{"id":6356,"kind":512,"name":"constructor","url":"classes/TimeSignatureGlyph.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"TimeSignatureGlyph"},{"id":6357,"kind":1024,"name":"timeSignature","url":"classes/TimeSignatureGlyph.html#timeSignature","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TimeSignatureGlyph"},{"id":6358,"kind":1024,"name":"topStartX","url":"classes/TimeSignatureGlyph.html#topStartX","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TimeSignatureGlyph"},{"id":6359,"kind":1024,"name":"botStartX","url":"classes/TimeSignatureGlyph.html#botStartX","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TimeSignatureGlyph"},{"id":6360,"kind":1024,"name":"width","url":"classes/TimeSignatureGlyph.html#width","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TimeSignatureGlyph"},{"id":6361,"kind":1024,"name":"xMin","url":"classes/TimeSignatureGlyph.html#xMin","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TimeSignatureGlyph"},{"id":6362,"kind":2048,"name":"getMetrics","url":"classes/TimeSignatureGlyph.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TimeSignatureGlyph"},{"id":6363,"kind":2048,"name":"renderToStave","url":"classes/TimeSignatureGlyph.html#renderToStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TimeSignatureGlyph"},{"id":6364,"kind":1024,"name":"bbox","url":"classes/TimeSignatureGlyph.html#bbox","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6365,"kind":1024,"name":"code","url":"classes/TimeSignatureGlyph.html#code","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6366,"kind":1024,"name":"metrics","url":"classes/TimeSignatureGlyph.html#metrics","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6367,"kind":1024,"name":"topGlyphs","url":"classes/TimeSignatureGlyph.html#topGlyphs","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6368,"kind":1024,"name":"botGlyphs","url":"classes/TimeSignatureGlyph.html#botGlyphs","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6369,"kind":1024,"name":"scale","url":"classes/TimeSignatureGlyph.html#scale","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6370,"kind":2048,"name":"draw","url":"classes/TimeSignatureGlyph.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6371,"kind":2048,"name":"getCode","url":"classes/TimeSignatureGlyph.html#getCode","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6372,"kind":2048,"name":"setOptions","url":"classes/TimeSignatureGlyph.html#setOptions","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6373,"kind":2048,"name":"setPoint","url":"classes/TimeSignatureGlyph.html#setPoint","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6374,"kind":2048,"name":"setStave","url":"classes/TimeSignatureGlyph.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6375,"kind":2048,"name":"getXShift","url":"classes/TimeSignatureGlyph.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6376,"kind":2048,"name":"setXShift","url":"classes/TimeSignatureGlyph.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6377,"kind":2048,"name":"getYshift","url":"classes/TimeSignatureGlyph.html#getYshift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6378,"kind":2048,"name":"setYShift","url":"classes/TimeSignatureGlyph.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6379,"kind":2048,"name":"reset","url":"classes/TimeSignatureGlyph.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6380,"kind":2048,"name":"checkMetrics","url":"classes/TimeSignatureGlyph.html#checkMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6381,"kind":2048,"name":"setOriginX","url":"classes/TimeSignatureGlyph.html#setOriginX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6382,"kind":2048,"name":"setOriginY","url":"classes/TimeSignatureGlyph.html#setOriginY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6383,"kind":2048,"name":"setOrigin","url":"classes/TimeSignatureGlyph.html#setOrigin","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6384,"kind":2048,"name":"render","url":"classes/TimeSignatureGlyph.html#render","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6385,"kind":2048,"name":"checkStave","url":"classes/TimeSignatureGlyph.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6386,"kind":2048,"name":"addChildElement","url":"classes/TimeSignatureGlyph.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6387,"kind":2048,"name":"getCategory","url":"classes/TimeSignatureGlyph.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6388,"kind":2048,"name":"setStyle","url":"classes/TimeSignatureGlyph.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6389,"kind":2048,"name":"setGroupStyle","url":"classes/TimeSignatureGlyph.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6390,"kind":2048,"name":"getStyle","url":"classes/TimeSignatureGlyph.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6391,"kind":2048,"name":"applyStyle","url":"classes/TimeSignatureGlyph.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6392,"kind":2048,"name":"restoreStyle","url":"classes/TimeSignatureGlyph.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6393,"kind":2048,"name":"drawWithStyle","url":"classes/TimeSignatureGlyph.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6394,"kind":2048,"name":"hasClass","url":"classes/TimeSignatureGlyph.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6395,"kind":2048,"name":"addClass","url":"classes/TimeSignatureGlyph.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6396,"kind":2048,"name":"removeClass","url":"classes/TimeSignatureGlyph.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6397,"kind":2048,"name":"onRegister","url":"classes/TimeSignatureGlyph.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6398,"kind":2048,"name":"isRendered","url":"classes/TimeSignatureGlyph.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6399,"kind":2048,"name":"setRendered","url":"classes/TimeSignatureGlyph.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6400,"kind":2048,"name":"getAttributes","url":"classes/TimeSignatureGlyph.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6401,"kind":2048,"name":"getAttribute","url":"classes/TimeSignatureGlyph.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6402,"kind":2048,"name":"getSVGElement","url":"classes/TimeSignatureGlyph.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6403,"kind":2048,"name":"setAttribute","url":"classes/TimeSignatureGlyph.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6404,"kind":2048,"name":"getBoundingBox","url":"classes/TimeSignatureGlyph.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6405,"kind":2048,"name":"getContext","url":"classes/TimeSignatureGlyph.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6406,"kind":2048,"name":"setContext","url":"classes/TimeSignatureGlyph.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6407,"kind":2048,"name":"checkContext","url":"classes/TimeSignatureGlyph.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6408,"kind":262144,"name":"font","url":"classes/TimeSignatureGlyph.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6409,"kind":2048,"name":"setFont","url":"classes/TimeSignatureGlyph.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6410,"kind":2048,"name":"getFont","url":"classes/TimeSignatureGlyph.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6411,"kind":2048,"name":"resetFont","url":"classes/TimeSignatureGlyph.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6412,"kind":262144,"name":"fontInfo","url":"classes/TimeSignatureGlyph.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6413,"kind":2048,"name":"setFontSize","url":"classes/TimeSignatureGlyph.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6414,"kind":2048,"name":"getFontSize","url":"classes/TimeSignatureGlyph.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6415,"kind":262144,"name":"fontSize","url":"classes/TimeSignatureGlyph.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6416,"kind":262144,"name":"fontSizeInPoints","url":"classes/TimeSignatureGlyph.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6417,"kind":262144,"name":"fontSizeInPixels","url":"classes/TimeSignatureGlyph.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6418,"kind":262144,"name":"fontStyle","url":"classes/TimeSignatureGlyph.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6419,"kind":262144,"name":"fontWeight","url":"classes/TimeSignatureGlyph.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignatureGlyph"},{"id":6420,"kind":256,"name":"TimeSignatureInfo","url":"interfaces/TimeSignatureInfo.html","classes":"tsd-kind-interface"},{"id":6421,"kind":1024,"name":"glyph","url":"interfaces/TimeSignatureInfo.html#glyph","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TimeSignatureInfo"},{"id":6422,"kind":1024,"name":"line","url":"interfaces/TimeSignatureInfo.html#line","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TimeSignatureInfo"},{"id":6423,"kind":1024,"name":"num","url":"interfaces/TimeSignatureInfo.html#num","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TimeSignatureInfo"},{"id":6424,"kind":128,"name":"TimeSignature","url":"classes/TimeSignature.html","classes":"tsd-kind-class"},{"id":6425,"kind":262144,"name":"CATEGORY","url":"classes/TimeSignature.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TimeSignature"},{"id":6426,"kind":262144,"name":"glyphs","url":"classes/TimeSignature.html#glyphs","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"TimeSignature"},{"id":6427,"kind":262144,"name":"Position","url":"classes/TimeSignature.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignature"},{"id":6428,"kind":1024,"name":"TEXT_FONT","url":"classes/TimeSignature.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSignature"},{"id":6429,"kind":512,"name":"constructor","url":"classes/TimeSignature.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"TimeSignature"},{"id":6430,"kind":1024,"name":"point","url":"classes/TimeSignature.html#point","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TimeSignature"},{"id":6431,"kind":1024,"name":"bottomLine","url":"classes/TimeSignature.html#bottomLine","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TimeSignature"},{"id":6432,"kind":1024,"name":"topLine","url":"classes/TimeSignature.html#topLine","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TimeSignature"},{"id":6433,"kind":2048,"name":"parseTimeSpec","url":"classes/TimeSignature.html#parseTimeSpec","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TimeSignature"},{"id":6434,"kind":2048,"name":"makeTimeSignatureGlyph","url":"classes/TimeSignature.html#makeTimeSignatureGlyph","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TimeSignature"},{"id":6435,"kind":2048,"name":"getInfo","url":"classes/TimeSignature.html#getInfo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TimeSignature"},{"id":6436,"kind":2048,"name":"setTimeSig","url":"classes/TimeSignature.html#setTimeSig","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TimeSignature"},{"id":6437,"kind":2048,"name":"draw","url":"classes/TimeSignature.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TimeSignature"},{"id":6438,"kind":2048,"name":"getPosition","url":"classes/TimeSignature.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6439,"kind":2048,"name":"setPosition","url":"classes/TimeSignature.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6440,"kind":2048,"name":"getStave","url":"classes/TimeSignature.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6441,"kind":2048,"name":"checkStave","url":"classes/TimeSignature.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6442,"kind":2048,"name":"setStave","url":"classes/TimeSignature.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6443,"kind":2048,"name":"getWidth","url":"classes/TimeSignature.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6444,"kind":2048,"name":"setWidth","url":"classes/TimeSignature.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6445,"kind":2048,"name":"getX","url":"classes/TimeSignature.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6446,"kind":2048,"name":"setX","url":"classes/TimeSignature.html#setX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6447,"kind":2048,"name":"placeGlyphOnLine","url":"classes/TimeSignature.html#placeGlyphOnLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6448,"kind":2048,"name":"getPadding","url":"classes/TimeSignature.html#getPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6449,"kind":2048,"name":"setPadding","url":"classes/TimeSignature.html#setPadding","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6450,"kind":2048,"name":"setLayoutMetrics","url":"classes/TimeSignature.html#setLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6451,"kind":2048,"name":"getLayoutMetrics","url":"classes/TimeSignature.html#getLayoutMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6452,"kind":2048,"name":"addChildElement","url":"classes/TimeSignature.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6453,"kind":2048,"name":"getCategory","url":"classes/TimeSignature.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6454,"kind":2048,"name":"setStyle","url":"classes/TimeSignature.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6455,"kind":2048,"name":"setGroupStyle","url":"classes/TimeSignature.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6456,"kind":2048,"name":"getStyle","url":"classes/TimeSignature.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6457,"kind":2048,"name":"applyStyle","url":"classes/TimeSignature.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6458,"kind":2048,"name":"restoreStyle","url":"classes/TimeSignature.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6459,"kind":2048,"name":"drawWithStyle","url":"classes/TimeSignature.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6460,"kind":2048,"name":"hasClass","url":"classes/TimeSignature.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6461,"kind":2048,"name":"addClass","url":"classes/TimeSignature.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6462,"kind":2048,"name":"removeClass","url":"classes/TimeSignature.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6463,"kind":2048,"name":"onRegister","url":"classes/TimeSignature.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6464,"kind":2048,"name":"isRendered","url":"classes/TimeSignature.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6465,"kind":2048,"name":"setRendered","url":"classes/TimeSignature.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6466,"kind":2048,"name":"getAttributes","url":"classes/TimeSignature.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6467,"kind":2048,"name":"getAttribute","url":"classes/TimeSignature.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6468,"kind":2048,"name":"getSVGElement","url":"classes/TimeSignature.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6469,"kind":2048,"name":"setAttribute","url":"classes/TimeSignature.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6470,"kind":2048,"name":"getBoundingBox","url":"classes/TimeSignature.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6471,"kind":2048,"name":"getContext","url":"classes/TimeSignature.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6472,"kind":2048,"name":"setContext","url":"classes/TimeSignature.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6473,"kind":2048,"name":"checkContext","url":"classes/TimeSignature.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6474,"kind":262144,"name":"font","url":"classes/TimeSignature.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6475,"kind":2048,"name":"setFont","url":"classes/TimeSignature.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6476,"kind":2048,"name":"getFont","url":"classes/TimeSignature.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6477,"kind":2048,"name":"resetFont","url":"classes/TimeSignature.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6478,"kind":262144,"name":"fontInfo","url":"classes/TimeSignature.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6479,"kind":2048,"name":"setFontSize","url":"classes/TimeSignature.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6480,"kind":2048,"name":"getFontSize","url":"classes/TimeSignature.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6481,"kind":262144,"name":"fontSize","url":"classes/TimeSignature.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6482,"kind":262144,"name":"fontSizeInPoints","url":"classes/TimeSignature.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6483,"kind":262144,"name":"fontSizeInPixels","url":"classes/TimeSignature.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6484,"kind":262144,"name":"fontStyle","url":"classes/TimeSignature.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6485,"kind":262144,"name":"fontWeight","url":"classes/TimeSignature.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSignature"},{"id":6486,"kind":128,"name":"TimeSigNote","url":"classes/TimeSigNote.html","classes":"tsd-kind-class"},{"id":6487,"kind":262144,"name":"CATEGORY","url":"classes/TimeSigNote.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"TimeSigNote"},{"id":6488,"kind":2048,"name":"plotMetrics","url":"classes/TimeSigNote.html#plotMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSigNote"},{"id":6489,"kind":1024,"name":"TEXT_FONT","url":"classes/TimeSigNote.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"TimeSigNote"},{"id":6490,"kind":512,"name":"constructor","url":"classes/TimeSigNote.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"TimeSigNote"},{"id":6491,"kind":2048,"name":"addToModifierContext","url":"classes/TimeSigNote.html#addToModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TimeSigNote"},{"id":6492,"kind":2048,"name":"preFormat","url":"classes/TimeSigNote.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TimeSigNote"},{"id":6493,"kind":2048,"name":"draw","url":"classes/TimeSigNote.html#draw-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"TimeSigNote"},{"id":6494,"kind":1024,"name":"glyph","url":"classes/TimeSigNote.html#glyph","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6495,"kind":1024,"name":"keys","url":"classes/TimeSigNote.html#keys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6496,"kind":1024,"name":"keyProps","url":"classes/TimeSigNote.html#keyProps","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6497,"kind":1024,"name":"render_options","url":"classes/TimeSigNote.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6498,"kind":65536,"name":"__type","url":"classes/TimeSigNote.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"TimeSigNote"},{"id":6499,"kind":1024,"name":"draw_stem_through_stave","url":"classes/TimeSigNote.html#__type.draw_stem_through_stave","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6500,"kind":1024,"name":"draw","url":"classes/TimeSigNote.html#__type.draw","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6501,"kind":1024,"name":"draw_dots","url":"classes/TimeSigNote.html#__type.draw_dots","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6502,"kind":1024,"name":"draw_stem","url":"classes/TimeSigNote.html#__type.draw_stem","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6503,"kind":1024,"name":"y_shift","url":"classes/TimeSigNote.html#__type.y_shift","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6504,"kind":1024,"name":"extend_left","url":"classes/TimeSigNote.html#__type.extend_left","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6505,"kind":1024,"name":"extend_right","url":"classes/TimeSigNote.html#__type.extend_right","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6506,"kind":1024,"name":"glyph_font_scale","url":"classes/TimeSigNote.html#__type.glyph_font_scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6507,"kind":1024,"name":"annotation_spacing","url":"classes/TimeSigNote.html#__type.annotation_spacing","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6508,"kind":1024,"name":"glyph_font_size","url":"classes/TimeSigNote.html#__type.glyph_font_size","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6509,"kind":1024,"name":"scale","url":"classes/TimeSigNote.html#__type.scale","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6510,"kind":1024,"name":"font","url":"classes/TimeSigNote.html#__type.font","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6511,"kind":1024,"name":"stroke_px","url":"classes/TimeSigNote.html#__type.stroke_px","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"TimeSigNote.__type"},{"id":6512,"kind":2048,"name":"getPlayNote","url":"classes/TimeSigNote.html#getPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6513,"kind":2048,"name":"setPlayNote","url":"classes/TimeSigNote.html#setPlayNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6514,"kind":2048,"name":"isRest","url":"classes/TimeSigNote.html#isRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6515,"kind":2048,"name":"addStroke","url":"classes/TimeSigNote.html#addStroke","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6516,"kind":2048,"name":"getStave","url":"classes/TimeSigNote.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6517,"kind":2048,"name":"checkStave","url":"classes/TimeSigNote.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6518,"kind":2048,"name":"setStave","url":"classes/TimeSigNote.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6519,"kind":2048,"name":"getLeftDisplacedHeadPx","url":"classes/TimeSigNote.html#getLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6520,"kind":2048,"name":"getRightDisplacedHeadPx","url":"classes/TimeSigNote.html#getRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6521,"kind":2048,"name":"setLeftDisplacedHeadPx","url":"classes/TimeSigNote.html#setLeftDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6522,"kind":2048,"name":"setRightDisplacedHeadPx","url":"classes/TimeSigNote.html#setRightDisplacedHeadPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6523,"kind":2048,"name":"shouldIgnoreTicks","url":"classes/TimeSigNote.html#shouldIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6524,"kind":2048,"name":"getLineNumber","url":"classes/TimeSigNote.html#getLineNumber","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6525,"kind":2048,"name":"getLineForRest","url":"classes/TimeSigNote.html#getLineForRest","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6526,"kind":2048,"name":"getGlyph","url":"classes/TimeSigNote.html#getGlyph","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6527,"kind":2048,"name":"getGlyphWidth","url":"classes/TimeSigNote.html#getGlyphWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6528,"kind":2048,"name":"setYs","url":"classes/TimeSigNote.html#setYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6529,"kind":2048,"name":"getYs","url":"classes/TimeSigNote.html#getYs","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6530,"kind":2048,"name":"getYForTopText","url":"classes/TimeSigNote.html#getYForTopText","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6531,"kind":2048,"name":"getVoice","url":"classes/TimeSigNote.html#getVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6532,"kind":2048,"name":"setVoice","url":"classes/TimeSigNote.html#setVoice","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6533,"kind":2048,"name":"getTickContext","url":"classes/TimeSigNote.html#getTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6534,"kind":2048,"name":"setTickContext","url":"classes/TimeSigNote.html#setTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6535,"kind":2048,"name":"getDuration","url":"classes/TimeSigNote.html#getDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6536,"kind":2048,"name":"isDotted","url":"classes/TimeSigNote.html#isDotted","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6537,"kind":2048,"name":"hasStem","url":"classes/TimeSigNote.html#hasStem","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6538,"kind":2048,"name":"getNoteType","url":"classes/TimeSigNote.html#getNoteType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6539,"kind":2048,"name":"getBeam","url":"classes/TimeSigNote.html#getBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6540,"kind":2048,"name":"checkBeam","url":"classes/TimeSigNote.html#checkBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6541,"kind":2048,"name":"hasBeam","url":"classes/TimeSigNote.html#hasBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6542,"kind":2048,"name":"setBeam","url":"classes/TimeSigNote.html#setBeam","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6543,"kind":2048,"name":"addModifier","url":"classes/TimeSigNote.html#addModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6544,"kind":2048,"name":"getModifiersByType","url":"classes/TimeSigNote.html#getModifiersByType","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6545,"kind":2048,"name":"getModifierStartXY","url":"classes/TimeSigNote.html#getModifierStartXY","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6546,"kind":2048,"name":"getRightParenthesisPx","url":"classes/TimeSigNote.html#getRightParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6547,"kind":2048,"name":"getLeftParenthesisPx","url":"classes/TimeSigNote.html#getLeftParenthesisPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6548,"kind":2048,"name":"getFirstDotPx","url":"classes/TimeSigNote.html#getFirstDotPx","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6549,"kind":2048,"name":"getMetrics","url":"classes/TimeSigNote.html#getMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6550,"kind":2048,"name":"getAbsoluteX","url":"classes/TimeSigNote.html#getAbsoluteX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6551,"kind":2048,"name":"getStemDirection","url":"classes/TimeSigNote.html#getStemDirection","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6552,"kind":2048,"name":"getStemExtents","url":"classes/TimeSigNote.html#getStemExtents","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6553,"kind":2048,"name":"getTieRightX","url":"classes/TimeSigNote.html#getTieRightX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6554,"kind":2048,"name":"getTieLeftX","url":"classes/TimeSigNote.html#getTieLeftX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6555,"kind":2048,"name":"getKeys","url":"classes/TimeSigNote.html#getKeys","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6556,"kind":2048,"name":"getKeyProps","url":"classes/TimeSigNote.html#getKeyProps","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6557,"kind":2048,"name":"reset","url":"classes/TimeSigNote.html#reset","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6558,"kind":2048,"name":"getTicks","url":"classes/TimeSigNote.html#getTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6559,"kind":2048,"name":"setIgnoreTicks","url":"classes/TimeSigNote.html#setIgnoreTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6560,"kind":2048,"name":"setWidth","url":"classes/TimeSigNote.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6561,"kind":2048,"name":"getWidth","url":"classes/TimeSigNote.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6562,"kind":2048,"name":"setXShift","url":"classes/TimeSigNote.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6563,"kind":2048,"name":"getXShift","url":"classes/TimeSigNote.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6564,"kind":2048,"name":"getX","url":"classes/TimeSigNote.html#getX","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6565,"kind":2048,"name":"getFormatterMetrics","url":"classes/TimeSigNote.html#getFormatterMetrics","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6566,"kind":2048,"name":"getCenterXShift","url":"classes/TimeSigNote.html#getCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6567,"kind":2048,"name":"setCenterXShift","url":"classes/TimeSigNote.html#setCenterXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6568,"kind":2048,"name":"isCenterAligned","url":"classes/TimeSigNote.html#isCenterAligned","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6569,"kind":2048,"name":"setCenterAlignment","url":"classes/TimeSigNote.html#setCenterAlignment","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6570,"kind":2048,"name":"getTuplet","url":"classes/TimeSigNote.html#getTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6571,"kind":2048,"name":"getTupletStack","url":"classes/TimeSigNote.html#getTupletStack","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6572,"kind":2048,"name":"resetTuplet","url":"classes/TimeSigNote.html#resetTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6573,"kind":2048,"name":"setTuplet","url":"classes/TimeSigNote.html#setTuplet","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6574,"kind":2048,"name":"getModifiers","url":"classes/TimeSigNote.html#getModifiers","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6575,"kind":2048,"name":"checkTickContext","url":"classes/TimeSigNote.html#checkTickContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6576,"kind":262144,"name":"preFormatted","url":"classes/TimeSigNote.html#preFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6577,"kind":2048,"name":"postFormat","url":"classes/TimeSigNote.html#postFormat","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6578,"kind":262144,"name":"postFormatted","url":"classes/TimeSigNote.html#postFormatted","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6579,"kind":2048,"name":"getIntrinsicTicks","url":"classes/TimeSigNote.html#getIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6580,"kind":2048,"name":"setIntrinsicTicks","url":"classes/TimeSigNote.html#setIntrinsicTicks","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6581,"kind":2048,"name":"getTickMultiplier","url":"classes/TimeSigNote.html#getTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6582,"kind":2048,"name":"applyTickMultiplier","url":"classes/TimeSigNote.html#applyTickMultiplier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6583,"kind":2048,"name":"setDuration","url":"classes/TimeSigNote.html#setDuration","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6584,"kind":2048,"name":"setModifierContext","url":"classes/TimeSigNote.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6585,"kind":2048,"name":"getModifierContext","url":"classes/TimeSigNote.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6586,"kind":2048,"name":"checkModifierContext","url":"classes/TimeSigNote.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6587,"kind":2048,"name":"addChildElement","url":"classes/TimeSigNote.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6588,"kind":2048,"name":"getCategory","url":"classes/TimeSigNote.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6589,"kind":2048,"name":"setStyle","url":"classes/TimeSigNote.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6590,"kind":2048,"name":"setGroupStyle","url":"classes/TimeSigNote.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6591,"kind":2048,"name":"getStyle","url":"classes/TimeSigNote.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6592,"kind":2048,"name":"applyStyle","url":"classes/TimeSigNote.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6593,"kind":2048,"name":"restoreStyle","url":"classes/TimeSigNote.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6594,"kind":2048,"name":"drawWithStyle","url":"classes/TimeSigNote.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6595,"kind":2048,"name":"hasClass","url":"classes/TimeSigNote.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6596,"kind":2048,"name":"addClass","url":"classes/TimeSigNote.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6597,"kind":2048,"name":"removeClass","url":"classes/TimeSigNote.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6598,"kind":2048,"name":"onRegister","url":"classes/TimeSigNote.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6599,"kind":2048,"name":"isRendered","url":"classes/TimeSigNote.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6600,"kind":2048,"name":"setRendered","url":"classes/TimeSigNote.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6601,"kind":2048,"name":"getAttributes","url":"classes/TimeSigNote.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6602,"kind":2048,"name":"getAttribute","url":"classes/TimeSigNote.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6603,"kind":2048,"name":"getSVGElement","url":"classes/TimeSigNote.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6604,"kind":2048,"name":"setAttribute","url":"classes/TimeSigNote.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6605,"kind":2048,"name":"getBoundingBox","url":"classes/TimeSigNote.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6606,"kind":2048,"name":"getContext","url":"classes/TimeSigNote.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6607,"kind":2048,"name":"setContext","url":"classes/TimeSigNote.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6608,"kind":2048,"name":"checkContext","url":"classes/TimeSigNote.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6609,"kind":262144,"name":"font","url":"classes/TimeSigNote.html#font-1","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6610,"kind":2048,"name":"setFont","url":"classes/TimeSigNote.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6611,"kind":2048,"name":"getFont","url":"classes/TimeSigNote.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6612,"kind":2048,"name":"resetFont","url":"classes/TimeSigNote.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6613,"kind":262144,"name":"fontInfo","url":"classes/TimeSigNote.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6614,"kind":2048,"name":"setFontSize","url":"classes/TimeSigNote.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6615,"kind":2048,"name":"getFontSize","url":"classes/TimeSigNote.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6616,"kind":262144,"name":"fontSize","url":"classes/TimeSigNote.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6617,"kind":262144,"name":"fontSizeInPoints","url":"classes/TimeSigNote.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6618,"kind":262144,"name":"fontSizeInPixels","url":"classes/TimeSigNote.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6619,"kind":262144,"name":"fontStyle","url":"classes/TimeSigNote.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6620,"kind":262144,"name":"fontWeight","url":"classes/TimeSigNote.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"TimeSigNote"},{"id":6621,"kind":128,"name":"Tremolo","url":"classes/Tremolo.html","classes":"tsd-kind-class"},{"id":6622,"kind":262144,"name":"CATEGORY","url":"classes/Tremolo.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Tremolo"},{"id":6623,"kind":262144,"name":"Position","url":"classes/Tremolo.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Tremolo"},{"id":6624,"kind":262144,"name":"PositionString","url":"classes/Tremolo.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Tremolo"},{"id":6625,"kind":1024,"name":"TEXT_FONT","url":"classes/Tremolo.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Tremolo"},{"id":6626,"kind":512,"name":"constructor","url":"classes/Tremolo.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Tremolo"},{"id":6627,"kind":1024,"name":"y_spacing_scale","url":"classes/Tremolo.html#y_spacing_scale","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Tremolo"},{"id":6628,"kind":1024,"name":"extra_stroke_scale","url":"classes/Tremolo.html#extra_stroke_scale","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Tremolo"},{"id":6629,"kind":2048,"name":"draw","url":"classes/Tremolo.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Tremolo"},{"id":6630,"kind":2048,"name":"getWidth","url":"classes/Tremolo.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6631,"kind":2048,"name":"setWidth","url":"classes/Tremolo.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6632,"kind":2048,"name":"getNote","url":"classes/Tremolo.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6633,"kind":2048,"name":"checkAttachedNote","url":"classes/Tremolo.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6634,"kind":2048,"name":"setNote","url":"classes/Tremolo.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6635,"kind":2048,"name":"getIndex","url":"classes/Tremolo.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6636,"kind":2048,"name":"checkIndex","url":"classes/Tremolo.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6637,"kind":2048,"name":"setIndex","url":"classes/Tremolo.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6638,"kind":2048,"name":"getModifierContext","url":"classes/Tremolo.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6639,"kind":2048,"name":"checkModifierContext","url":"classes/Tremolo.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6640,"kind":2048,"name":"setModifierContext","url":"classes/Tremolo.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6641,"kind":2048,"name":"getPosition","url":"classes/Tremolo.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6642,"kind":2048,"name":"setPosition","url":"classes/Tremolo.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6643,"kind":2048,"name":"setTextLine","url":"classes/Tremolo.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6644,"kind":2048,"name":"setYShift","url":"classes/Tremolo.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6645,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/Tremolo.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6646,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/Tremolo.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6647,"kind":2048,"name":"setXShift","url":"classes/Tremolo.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6648,"kind":2048,"name":"getXShift","url":"classes/Tremolo.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6649,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/Tremolo.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6650,"kind":2048,"name":"addChildElement","url":"classes/Tremolo.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6651,"kind":2048,"name":"getCategory","url":"classes/Tremolo.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6652,"kind":2048,"name":"setStyle","url":"classes/Tremolo.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6653,"kind":2048,"name":"setGroupStyle","url":"classes/Tremolo.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6654,"kind":2048,"name":"getStyle","url":"classes/Tremolo.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6655,"kind":2048,"name":"applyStyle","url":"classes/Tremolo.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6656,"kind":2048,"name":"restoreStyle","url":"classes/Tremolo.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6657,"kind":2048,"name":"drawWithStyle","url":"classes/Tremolo.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6658,"kind":2048,"name":"hasClass","url":"classes/Tremolo.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6659,"kind":2048,"name":"addClass","url":"classes/Tremolo.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6660,"kind":2048,"name":"removeClass","url":"classes/Tremolo.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6661,"kind":2048,"name":"onRegister","url":"classes/Tremolo.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6662,"kind":2048,"name":"isRendered","url":"classes/Tremolo.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6663,"kind":2048,"name":"setRendered","url":"classes/Tremolo.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6664,"kind":2048,"name":"getAttributes","url":"classes/Tremolo.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6665,"kind":2048,"name":"getAttribute","url":"classes/Tremolo.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6666,"kind":2048,"name":"getSVGElement","url":"classes/Tremolo.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6667,"kind":2048,"name":"setAttribute","url":"classes/Tremolo.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6668,"kind":2048,"name":"getBoundingBox","url":"classes/Tremolo.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6669,"kind":2048,"name":"getContext","url":"classes/Tremolo.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6670,"kind":2048,"name":"setContext","url":"classes/Tremolo.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6671,"kind":2048,"name":"checkContext","url":"classes/Tremolo.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6672,"kind":262144,"name":"font","url":"classes/Tremolo.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6673,"kind":2048,"name":"setFont","url":"classes/Tremolo.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6674,"kind":2048,"name":"getFont","url":"classes/Tremolo.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6675,"kind":2048,"name":"resetFont","url":"classes/Tremolo.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6676,"kind":262144,"name":"fontInfo","url":"classes/Tremolo.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6677,"kind":2048,"name":"setFontSize","url":"classes/Tremolo.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6678,"kind":2048,"name":"getFontSize","url":"classes/Tremolo.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6679,"kind":262144,"name":"fontSize","url":"classes/Tremolo.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6680,"kind":262144,"name":"fontSizeInPoints","url":"classes/Tremolo.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6681,"kind":262144,"name":"fontSizeInPixels","url":"classes/Tremolo.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6682,"kind":262144,"name":"fontStyle","url":"classes/Tremolo.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6683,"kind":262144,"name":"fontWeight","url":"classes/Tremolo.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tremolo"},{"id":6684,"kind":128,"name":"Tuning","url":"classes/Tuning.html","classes":"tsd-kind-class"},{"id":6685,"kind":262144,"name":"names","url":"classes/Tuning.html#names","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Tuning"},{"id":6686,"kind":512,"name":"constructor","url":"classes/Tuning.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Tuning"},{"id":6687,"kind":2048,"name":"noteToInteger","url":"classes/Tuning.html#noteToInteger","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuning"},{"id":6688,"kind":2048,"name":"setTuning","url":"classes/Tuning.html#setTuning","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuning"},{"id":6689,"kind":2048,"name":"getValueForString","url":"classes/Tuning.html#getValueForString","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuning"},{"id":6690,"kind":2048,"name":"getValueForFret","url":"classes/Tuning.html#getValueForFret","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuning"},{"id":6691,"kind":2048,"name":"getNoteForFret","url":"classes/Tuning.html#getNoteForFret","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuning"},{"id":6692,"kind":256,"name":"TupletOptions","url":"interfaces/TupletOptions.html","classes":"tsd-kind-interface"},{"id":6693,"kind":1024,"name":"beats_occupied","url":"interfaces/TupletOptions.html#beats_occupied","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TupletOptions"},{"id":6694,"kind":1024,"name":"bracketed","url":"interfaces/TupletOptions.html#bracketed","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TupletOptions"},{"id":6695,"kind":1024,"name":"location","url":"interfaces/TupletOptions.html#location","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TupletOptions"},{"id":6696,"kind":1024,"name":"notes_occupied","url":"interfaces/TupletOptions.html#notes_occupied","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TupletOptions"},{"id":6697,"kind":1024,"name":"num_notes","url":"interfaces/TupletOptions.html#num_notes","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TupletOptions"},{"id":6698,"kind":1024,"name":"ratioed","url":"interfaces/TupletOptions.html#ratioed","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TupletOptions"},{"id":6699,"kind":1024,"name":"y_offset","url":"interfaces/TupletOptions.html#y_offset","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"TupletOptions"},{"id":6700,"kind":8,"name":"TupletLocation","url":"enums/TupletLocation.html","classes":"tsd-kind-enum"},{"id":6701,"kind":16,"name":"BOTTOM","url":"enums/TupletLocation.html#BOTTOM","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"TupletLocation"},{"id":6702,"kind":16,"name":"TOP","url":"enums/TupletLocation.html#TOP","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"TupletLocation"},{"id":6703,"kind":128,"name":"Tuplet","url":"classes/Tuplet.html","classes":"tsd-kind-class"},{"id":6704,"kind":262144,"name":"CATEGORY","url":"classes/Tuplet.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Tuplet"},{"id":6705,"kind":262144,"name":"LOCATION_TOP","url":"classes/Tuplet.html#LOCATION_TOP","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Tuplet"},{"id":6706,"kind":262144,"name":"LOCATION_BOTTOM","url":"classes/Tuplet.html#LOCATION_BOTTOM","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Tuplet"},{"id":6707,"kind":262144,"name":"NESTING_OFFSET","url":"classes/Tuplet.html#NESTING_OFFSET","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Tuplet"},{"id":6708,"kind":262144,"name":"metrics","url":"classes/Tuplet.html#metrics","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Tuplet"},{"id":6709,"kind":1024,"name":"TEXT_FONT","url":"classes/Tuplet.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Tuplet"},{"id":6710,"kind":512,"name":"constructor","url":"classes/Tuplet.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Tuplet"},{"id":6711,"kind":1024,"name":"notes","url":"classes/Tuplet.html#notes","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Tuplet"},{"id":6712,"kind":2048,"name":"attach","url":"classes/Tuplet.html#attach","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6713,"kind":2048,"name":"detach","url":"classes/Tuplet.html#detach","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6714,"kind":2048,"name":"setBracketed","url":"classes/Tuplet.html#setBracketed","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6715,"kind":2048,"name":"setRatioed","url":"classes/Tuplet.html#setRatioed","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6716,"kind":2048,"name":"setTupletLocation","url":"classes/Tuplet.html#setTupletLocation","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6717,"kind":2048,"name":"getNotes","url":"classes/Tuplet.html#getNotes","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6718,"kind":2048,"name":"getNoteCount","url":"classes/Tuplet.html#getNoteCount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6719,"kind":2048,"name":"beatsOccupiedDeprecationWarning","url":"classes/Tuplet.html#beatsOccupiedDeprecationWarning","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6720,"kind":2048,"name":"getBeatsOccupied","url":"classes/Tuplet.html#getBeatsOccupied","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6721,"kind":2048,"name":"setBeatsOccupied","url":"classes/Tuplet.html#setBeatsOccupied","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6722,"kind":2048,"name":"getNotesOccupied","url":"classes/Tuplet.html#getNotesOccupied","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6723,"kind":2048,"name":"setNotesOccupied","url":"classes/Tuplet.html#setNotesOccupied","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6724,"kind":2048,"name":"resolveGlyphs","url":"classes/Tuplet.html#resolveGlyphs","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6725,"kind":2048,"name":"getNestedTupletCount","url":"classes/Tuplet.html#getNestedTupletCount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6726,"kind":2048,"name":"getYPosition","url":"classes/Tuplet.html#getYPosition","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Tuplet"},{"id":6727,"kind":2048,"name":"draw","url":"classes/Tuplet.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Tuplet"},{"id":6728,"kind":2048,"name":"addChildElement","url":"classes/Tuplet.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6729,"kind":2048,"name":"getCategory","url":"classes/Tuplet.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6730,"kind":2048,"name":"setStyle","url":"classes/Tuplet.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6731,"kind":2048,"name":"setGroupStyle","url":"classes/Tuplet.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6732,"kind":2048,"name":"getStyle","url":"classes/Tuplet.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6733,"kind":2048,"name":"applyStyle","url":"classes/Tuplet.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6734,"kind":2048,"name":"restoreStyle","url":"classes/Tuplet.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6735,"kind":2048,"name":"drawWithStyle","url":"classes/Tuplet.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6736,"kind":2048,"name":"hasClass","url":"classes/Tuplet.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6737,"kind":2048,"name":"addClass","url":"classes/Tuplet.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6738,"kind":2048,"name":"removeClass","url":"classes/Tuplet.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6739,"kind":2048,"name":"onRegister","url":"classes/Tuplet.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6740,"kind":2048,"name":"isRendered","url":"classes/Tuplet.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6741,"kind":2048,"name":"setRendered","url":"classes/Tuplet.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6742,"kind":2048,"name":"getAttributes","url":"classes/Tuplet.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6743,"kind":2048,"name":"getAttribute","url":"classes/Tuplet.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6744,"kind":2048,"name":"getSVGElement","url":"classes/Tuplet.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6745,"kind":2048,"name":"setAttribute","url":"classes/Tuplet.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6746,"kind":2048,"name":"getBoundingBox","url":"classes/Tuplet.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6747,"kind":2048,"name":"getContext","url":"classes/Tuplet.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6748,"kind":2048,"name":"setContext","url":"classes/Tuplet.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6749,"kind":2048,"name":"checkContext","url":"classes/Tuplet.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6750,"kind":262144,"name":"font","url":"classes/Tuplet.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6751,"kind":2048,"name":"setFont","url":"classes/Tuplet.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6752,"kind":2048,"name":"getFont","url":"classes/Tuplet.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6753,"kind":2048,"name":"resetFont","url":"classes/Tuplet.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6754,"kind":262144,"name":"fontInfo","url":"classes/Tuplet.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6755,"kind":2048,"name":"setFontSize","url":"classes/Tuplet.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6756,"kind":2048,"name":"getFontSize","url":"classes/Tuplet.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6757,"kind":262144,"name":"fontSize","url":"classes/Tuplet.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6758,"kind":262144,"name":"fontSizeInPoints","url":"classes/Tuplet.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6759,"kind":262144,"name":"fontSizeInPixels","url":"classes/Tuplet.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6760,"kind":262144,"name":"fontStyle","url":"classes/Tuplet.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6761,"kind":262144,"name":"fontWeight","url":"classes/Tuplet.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Tuplet"},{"id":6762,"kind":64,"name":"isCategory","url":"modules.html#isCategory","classes":"tsd-kind-function tsd-has-type-parameter"},{"id":6763,"kind":64,"name":"isAccidental","url":"modules.html#isAccidental","classes":"tsd-kind-function"},{"id":6764,"kind":64,"name":"isAnnotation","url":"modules.html#isAnnotation","classes":"tsd-kind-function"},{"id":6765,"kind":64,"name":"isBarline","url":"modules.html#isBarline","classes":"tsd-kind-function"},{"id":6766,"kind":64,"name":"isDot","url":"modules.html#isDot","classes":"tsd-kind-function"},{"id":6767,"kind":64,"name":"isGraceNote","url":"modules.html#isGraceNote","classes":"tsd-kind-function"},{"id":6768,"kind":64,"name":"isGraceNoteGroup","url":"modules.html#isGraceNoteGroup","classes":"tsd-kind-function"},{"id":6769,"kind":64,"name":"isNote","url":"modules.html#isNote","classes":"tsd-kind-function"},{"id":6770,"kind":64,"name":"isRenderContext","url":"modules.html#isRenderContext","classes":"tsd-kind-function"},{"id":6771,"kind":64,"name":"isStaveNote","url":"modules.html#isStaveNote","classes":"tsd-kind-function"},{"id":6772,"kind":64,"name":"isStemmableNote","url":"modules.html#isStemmableNote","classes":"tsd-kind-function"},{"id":6773,"kind":64,"name":"isTabNote","url":"modules.html#isTabNote","classes":"tsd-kind-function"},{"id":6774,"kind":8,"name":"Category","url":"enums/Category.html","classes":"tsd-kind-enum"},{"id":6775,"kind":16,"name":"Accidental","url":"enums/Category.html#Accidental","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6776,"kind":16,"name":"Annotation","url":"enums/Category.html#Annotation","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6777,"kind":16,"name":"Articulation","url":"enums/Category.html#Articulation","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6778,"kind":16,"name":"Barline","url":"enums/Category.html#Barline","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6779,"kind":16,"name":"BarNote","url":"enums/Category.html#BarNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6780,"kind":16,"name":"Beam","url":"enums/Category.html#Beam","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6781,"kind":16,"name":"Bend","url":"enums/Category.html#Bend","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6782,"kind":16,"name":"ChordSymbol","url":"enums/Category.html#ChordSymbol","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6783,"kind":16,"name":"Clef","url":"enums/Category.html#Clef","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6784,"kind":16,"name":"ClefNote","url":"enums/Category.html#ClefNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6785,"kind":16,"name":"Crescendo","url":"enums/Category.html#Crescendo","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6786,"kind":16,"name":"Curve","url":"enums/Category.html#Curve","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6787,"kind":16,"name":"Dot","url":"enums/Category.html#Dot","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6788,"kind":16,"name":"Element","url":"enums/Category.html#Element","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6789,"kind":16,"name":"Fraction","url":"enums/Category.html#Fraction","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6790,"kind":16,"name":"FretHandFinger","url":"enums/Category.html#FretHandFinger","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6791,"kind":16,"name":"GhostNote","url":"enums/Category.html#GhostNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6792,"kind":16,"name":"Glyph","url":"enums/Category.html#Glyph","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6793,"kind":16,"name":"GlyphNote","url":"enums/Category.html#GlyphNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6794,"kind":16,"name":"GraceNote","url":"enums/Category.html#GraceNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6795,"kind":16,"name":"GraceNoteGroup","url":"enums/Category.html#GraceNoteGroup","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6796,"kind":16,"name":"GraceTabNote","url":"enums/Category.html#GraceTabNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6797,"kind":16,"name":"KeySignature","url":"enums/Category.html#KeySignature","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6798,"kind":16,"name":"KeySigNote","url":"enums/Category.html#KeySigNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6799,"kind":16,"name":"Modifier","url":"enums/Category.html#Modifier","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6800,"kind":16,"name":"MultiMeasureRest","url":"enums/Category.html#MultiMeasureRest","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6801,"kind":16,"name":"Note","url":"enums/Category.html#Note","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6802,"kind":16,"name":"NoteHead","url":"enums/Category.html#NoteHead","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6803,"kind":16,"name":"NoteSubGroup","url":"enums/Category.html#NoteSubGroup","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6804,"kind":16,"name":"Ornament","url":"enums/Category.html#Ornament","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6805,"kind":16,"name":"Parenthesis","url":"enums/Category.html#Parenthesis","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6806,"kind":16,"name":"PedalMarking","url":"enums/Category.html#PedalMarking","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6807,"kind":16,"name":"RenderContext","url":"enums/Category.html#RenderContext","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6808,"kind":16,"name":"RepeatNote","url":"enums/Category.html#RepeatNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6809,"kind":16,"name":"Repetition","url":"enums/Category.html#Repetition","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6810,"kind":16,"name":"Stave","url":"enums/Category.html#Stave","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6811,"kind":16,"name":"StaveConnector","url":"enums/Category.html#StaveConnector","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6812,"kind":16,"name":"StaveHairpin","url":"enums/Category.html#StaveHairpin","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6813,"kind":16,"name":"StaveLine","url":"enums/Category.html#StaveLine","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6814,"kind":16,"name":"StaveModifier","url":"enums/Category.html#StaveModifier","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6815,"kind":16,"name":"StaveNote","url":"enums/Category.html#StaveNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6816,"kind":16,"name":"StaveSection","url":"enums/Category.html#StaveSection","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6817,"kind":16,"name":"StaveTempo","url":"enums/Category.html#StaveTempo","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6818,"kind":16,"name":"StaveText","url":"enums/Category.html#StaveText","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6819,"kind":16,"name":"StaveTie","url":"enums/Category.html#StaveTie","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6820,"kind":16,"name":"Stem","url":"enums/Category.html#Stem","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6821,"kind":16,"name":"StemmableNote","url":"enums/Category.html#StemmableNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6822,"kind":16,"name":"StringNumber","url":"enums/Category.html#StringNumber","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6823,"kind":16,"name":"Stroke","url":"enums/Category.html#Stroke","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6824,"kind":16,"name":"System","url":"enums/Category.html#System","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6825,"kind":16,"name":"TabNote","url":"enums/Category.html#TabNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6826,"kind":16,"name":"TabSlide","url":"enums/Category.html#TabSlide","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6827,"kind":16,"name":"TabStave","url":"enums/Category.html#TabStave","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6828,"kind":16,"name":"TabTie","url":"enums/Category.html#TabTie","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6829,"kind":16,"name":"TextBracket","url":"enums/Category.html#TextBracket","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6830,"kind":16,"name":"TextDynamics","url":"enums/Category.html#TextDynamics","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6831,"kind":16,"name":"TextNote","url":"enums/Category.html#TextNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6832,"kind":16,"name":"Tickable","url":"enums/Category.html#Tickable","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6833,"kind":16,"name":"TimeSignature","url":"enums/Category.html#TimeSignature","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6834,"kind":16,"name":"TimeSigNote","url":"enums/Category.html#TimeSigNote","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6835,"kind":16,"name":"Tremolo","url":"enums/Category.html#Tremolo","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6836,"kind":16,"name":"Tuplet","url":"enums/Category.html#Tuplet","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6837,"kind":16,"name":"Vibrato","url":"enums/Category.html#Vibrato","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6838,"kind":16,"name":"VibratoBracket","url":"enums/Category.html#VibratoBracket","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6839,"kind":16,"name":"Voice","url":"enums/Category.html#Voice","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6840,"kind":16,"name":"Volta","url":"enums/Category.html#Volta","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"Category"},{"id":6841,"kind":64,"name":"globalObject","url":"modules.html#globalObject","classes":"tsd-kind-function"},{"id":6842,"kind":64,"name":"defined","url":"modules.html#defined","classes":"tsd-kind-function tsd-has-type-parameter"},{"id":6843,"kind":64,"name":"log","url":"modules.html#log","classes":"tsd-kind-function"},{"id":6844,"kind":64,"name":"warn","url":"modules.html#warn","classes":"tsd-kind-function"},{"id":6845,"kind":64,"name":"midLine","url":"modules.html#midLine","classes":"tsd-kind-function"},{"id":6846,"kind":64,"name":"prefix","url":"modules.html#prefix","classes":"tsd-kind-function"},{"id":6847,"kind":64,"name":"normalizeAngle","url":"modules.html#normalizeAngle","classes":"tsd-kind-function"},{"id":6848,"kind":128,"name":"RuntimeError","url":"classes/RuntimeError.html","classes":"tsd-kind-class"},{"id":6849,"kind":65536,"name":"__type","url":"classes/RuntimeError.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"RuntimeError"},{"id":6850,"kind":512,"name":"constructor","url":"classes/RuntimeError.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"RuntimeError"},{"id":6851,"kind":1024,"name":"code","url":"classes/RuntimeError.html#code","classes":"tsd-kind-property tsd-parent-kind-class","parent":"RuntimeError"},{"id":6852,"kind":128,"name":"Vex","url":"classes/Vex.html","classes":"tsd-kind-class"},{"id":6853,"kind":1024,"name":"Flow","url":"classes/Vex.html#Flow","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Vex"},{"id":6854,"kind":2048,"name":"sortAndUnique","url":"classes/Vex.html#sortAndUnique","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Vex"},{"id":6855,"kind":2048,"name":"contains","url":"classes/Vex.html#contains","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Vex"},{"id":6856,"kind":2048,"name":"getCanvasContext","url":"classes/Vex.html#getCanvasContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Vex"},{"id":6857,"kind":2048,"name":"benchmark","url":"classes/Vex.html#benchmark","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Vex"},{"id":6858,"kind":2048,"name":"stackTrace","url":"classes/Vex.html#stackTrace","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Vex"},{"id":6859,"kind":1024,"name":"RERR","url":"classes/Vex.html#RERR","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Vex"},{"id":6860,"kind":1024,"name":"RuntimeError","url":"classes/Vex.html#RuntimeError","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"Vex"},{"id":6861,"kind":512,"name":"constructor","url":"classes/Vex.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Vex"},{"id":6862,"kind":256,"name":"VibratoRenderOptions","url":"interfaces/VibratoRenderOptions.html","classes":"tsd-kind-interface"},{"id":6863,"kind":1024,"name":"wave_height","url":"interfaces/VibratoRenderOptions.html#wave_height","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"VibratoRenderOptions"},{"id":6864,"kind":1024,"name":"wave_girth","url":"interfaces/VibratoRenderOptions.html#wave_girth","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"VibratoRenderOptions"},{"id":6865,"kind":1024,"name":"vibrato_width","url":"interfaces/VibratoRenderOptions.html#vibrato_width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"VibratoRenderOptions"},{"id":6866,"kind":1024,"name":"harsh","url":"interfaces/VibratoRenderOptions.html#harsh","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"VibratoRenderOptions"},{"id":6867,"kind":1024,"name":"wave_width","url":"interfaces/VibratoRenderOptions.html#wave_width","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"VibratoRenderOptions"},{"id":6868,"kind":128,"name":"Vibrato","url":"classes/Vibrato.html","classes":"tsd-kind-class"},{"id":6869,"kind":262144,"name":"CATEGORY","url":"classes/Vibrato.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Vibrato"},{"id":6870,"kind":2048,"name":"format","url":"classes/Vibrato.html#format","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Vibrato"},{"id":6871,"kind":2048,"name":"renderVibrato","url":"classes/Vibrato.html#renderVibrato","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"Vibrato"},{"id":6872,"kind":262144,"name":"Position","url":"classes/Vibrato.html#Position","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Vibrato"},{"id":6873,"kind":262144,"name":"PositionString","url":"classes/Vibrato.html#PositionString","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Vibrato"},{"id":6874,"kind":1024,"name":"TEXT_FONT","url":"classes/Vibrato.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Vibrato"},{"id":6875,"kind":512,"name":"constructor","url":"classes/Vibrato.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Vibrato"},{"id":6876,"kind":1024,"name":"render_options","url":"classes/Vibrato.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Vibrato"},{"id":6877,"kind":2048,"name":"setHarsh","url":"classes/Vibrato.html#setHarsh","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Vibrato"},{"id":6878,"kind":2048,"name":"setVibratoWidth","url":"classes/Vibrato.html#setVibratoWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Vibrato"},{"id":6879,"kind":2048,"name":"draw","url":"classes/Vibrato.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Vibrato"},{"id":6880,"kind":2048,"name":"getWidth","url":"classes/Vibrato.html#getWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6881,"kind":2048,"name":"setWidth","url":"classes/Vibrato.html#setWidth","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6882,"kind":2048,"name":"getNote","url":"classes/Vibrato.html#getNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6883,"kind":2048,"name":"checkAttachedNote","url":"classes/Vibrato.html#checkAttachedNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6884,"kind":2048,"name":"setNote","url":"classes/Vibrato.html#setNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6885,"kind":2048,"name":"getIndex","url":"classes/Vibrato.html#getIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6886,"kind":2048,"name":"checkIndex","url":"classes/Vibrato.html#checkIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6887,"kind":2048,"name":"setIndex","url":"classes/Vibrato.html#setIndex","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6888,"kind":2048,"name":"getModifierContext","url":"classes/Vibrato.html#getModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6889,"kind":2048,"name":"checkModifierContext","url":"classes/Vibrato.html#checkModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6890,"kind":2048,"name":"setModifierContext","url":"classes/Vibrato.html#setModifierContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6891,"kind":2048,"name":"getPosition","url":"classes/Vibrato.html#getPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6892,"kind":2048,"name":"setPosition","url":"classes/Vibrato.html#setPosition","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6893,"kind":2048,"name":"setTextLine","url":"classes/Vibrato.html#setTextLine","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6894,"kind":2048,"name":"setYShift","url":"classes/Vibrato.html#setYShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6895,"kind":2048,"name":"setSpacingFromNextModifier","url":"classes/Vibrato.html#setSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6896,"kind":2048,"name":"getSpacingFromNextModifier","url":"classes/Vibrato.html#getSpacingFromNextModifier","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6897,"kind":2048,"name":"setXShift","url":"classes/Vibrato.html#setXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6898,"kind":2048,"name":"getXShift","url":"classes/Vibrato.html#getXShift","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6899,"kind":2048,"name":"alignSubNotesWithNote","url":"classes/Vibrato.html#alignSubNotesWithNote","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6900,"kind":2048,"name":"addChildElement","url":"classes/Vibrato.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6901,"kind":2048,"name":"getCategory","url":"classes/Vibrato.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6902,"kind":2048,"name":"setStyle","url":"classes/Vibrato.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6903,"kind":2048,"name":"setGroupStyle","url":"classes/Vibrato.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6904,"kind":2048,"name":"getStyle","url":"classes/Vibrato.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6905,"kind":2048,"name":"applyStyle","url":"classes/Vibrato.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6906,"kind":2048,"name":"restoreStyle","url":"classes/Vibrato.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6907,"kind":2048,"name":"drawWithStyle","url":"classes/Vibrato.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6908,"kind":2048,"name":"hasClass","url":"classes/Vibrato.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6909,"kind":2048,"name":"addClass","url":"classes/Vibrato.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6910,"kind":2048,"name":"removeClass","url":"classes/Vibrato.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6911,"kind":2048,"name":"onRegister","url":"classes/Vibrato.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6912,"kind":2048,"name":"isRendered","url":"classes/Vibrato.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6913,"kind":2048,"name":"setRendered","url":"classes/Vibrato.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6914,"kind":2048,"name":"getAttributes","url":"classes/Vibrato.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6915,"kind":2048,"name":"getAttribute","url":"classes/Vibrato.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6916,"kind":2048,"name":"getSVGElement","url":"classes/Vibrato.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6917,"kind":2048,"name":"setAttribute","url":"classes/Vibrato.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6918,"kind":2048,"name":"getBoundingBox","url":"classes/Vibrato.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6919,"kind":2048,"name":"getContext","url":"classes/Vibrato.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6920,"kind":2048,"name":"setContext","url":"classes/Vibrato.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6921,"kind":2048,"name":"checkContext","url":"classes/Vibrato.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6922,"kind":262144,"name":"font","url":"classes/Vibrato.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6923,"kind":2048,"name":"setFont","url":"classes/Vibrato.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6924,"kind":2048,"name":"getFont","url":"classes/Vibrato.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6925,"kind":2048,"name":"resetFont","url":"classes/Vibrato.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6926,"kind":262144,"name":"fontInfo","url":"classes/Vibrato.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6927,"kind":2048,"name":"setFontSize","url":"classes/Vibrato.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6928,"kind":2048,"name":"getFontSize","url":"classes/Vibrato.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6929,"kind":262144,"name":"fontSize","url":"classes/Vibrato.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6930,"kind":262144,"name":"fontSizeInPoints","url":"classes/Vibrato.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6931,"kind":262144,"name":"fontSizeInPixels","url":"classes/Vibrato.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6932,"kind":262144,"name":"fontStyle","url":"classes/Vibrato.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6933,"kind":262144,"name":"fontWeight","url":"classes/Vibrato.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Vibrato"},{"id":6934,"kind":128,"name":"VibratoBracket","url":"classes/VibratoBracket.html","classes":"tsd-kind-class"},{"id":6935,"kind":1024,"name":"DEBUG","url":"classes/VibratoBracket.html#DEBUG","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"VibratoBracket"},{"id":6936,"kind":262144,"name":"CATEGORY","url":"classes/VibratoBracket.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"VibratoBracket"},{"id":6937,"kind":1024,"name":"TEXT_FONT","url":"classes/VibratoBracket.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"VibratoBracket"},{"id":6938,"kind":512,"name":"constructor","url":"classes/VibratoBracket.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"VibratoBracket"},{"id":6939,"kind":1024,"name":"render_options","url":"classes/VibratoBracket.html#render_options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"VibratoBracket"},{"id":6940,"kind":65536,"name":"__type","url":"classes/VibratoBracket.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-class","parent":"VibratoBracket"},{"id":6941,"kind":1024,"name":"vibrato_width","url":"classes/VibratoBracket.html#__type.vibrato_width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"VibratoBracket.__type"},{"id":6942,"kind":1024,"name":"wave_height","url":"classes/VibratoBracket.html#__type.wave_height","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"VibratoBracket.__type"},{"id":6943,"kind":1024,"name":"wave_girth","url":"classes/VibratoBracket.html#__type.wave_girth","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"VibratoBracket.__type"},{"id":6944,"kind":1024,"name":"harsh","url":"classes/VibratoBracket.html#__type.harsh","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"VibratoBracket.__type"},{"id":6945,"kind":1024,"name":"wave_width","url":"classes/VibratoBracket.html#__type.wave_width","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"VibratoBracket.__type"},{"id":6946,"kind":2048,"name":"setLine","url":"classes/VibratoBracket.html#setLine","classes":"tsd-kind-method tsd-parent-kind-class","parent":"VibratoBracket"},{"id":6947,"kind":2048,"name":"setHarsh","url":"classes/VibratoBracket.html#setHarsh","classes":"tsd-kind-method tsd-parent-kind-class","parent":"VibratoBracket"},{"id":6948,"kind":2048,"name":"draw","url":"classes/VibratoBracket.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"VibratoBracket"},{"id":6949,"kind":2048,"name":"addChildElement","url":"classes/VibratoBracket.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6950,"kind":2048,"name":"getCategory","url":"classes/VibratoBracket.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6951,"kind":2048,"name":"setStyle","url":"classes/VibratoBracket.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6952,"kind":2048,"name":"setGroupStyle","url":"classes/VibratoBracket.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6953,"kind":2048,"name":"getStyle","url":"classes/VibratoBracket.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6954,"kind":2048,"name":"applyStyle","url":"classes/VibratoBracket.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6955,"kind":2048,"name":"restoreStyle","url":"classes/VibratoBracket.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6956,"kind":2048,"name":"drawWithStyle","url":"classes/VibratoBracket.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6957,"kind":2048,"name":"hasClass","url":"classes/VibratoBracket.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6958,"kind":2048,"name":"addClass","url":"classes/VibratoBracket.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6959,"kind":2048,"name":"removeClass","url":"classes/VibratoBracket.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6960,"kind":2048,"name":"onRegister","url":"classes/VibratoBracket.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6961,"kind":2048,"name":"isRendered","url":"classes/VibratoBracket.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6962,"kind":2048,"name":"setRendered","url":"classes/VibratoBracket.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6963,"kind":2048,"name":"getAttributes","url":"classes/VibratoBracket.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6964,"kind":2048,"name":"getAttribute","url":"classes/VibratoBracket.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6965,"kind":2048,"name":"getSVGElement","url":"classes/VibratoBracket.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6966,"kind":2048,"name":"setAttribute","url":"classes/VibratoBracket.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6967,"kind":2048,"name":"getBoundingBox","url":"classes/VibratoBracket.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6968,"kind":2048,"name":"getContext","url":"classes/VibratoBracket.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6969,"kind":2048,"name":"setContext","url":"classes/VibratoBracket.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6970,"kind":2048,"name":"checkContext","url":"classes/VibratoBracket.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6971,"kind":262144,"name":"font","url":"classes/VibratoBracket.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6972,"kind":2048,"name":"setFont","url":"classes/VibratoBracket.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6973,"kind":2048,"name":"getFont","url":"classes/VibratoBracket.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6974,"kind":2048,"name":"resetFont","url":"classes/VibratoBracket.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6975,"kind":262144,"name":"fontInfo","url":"classes/VibratoBracket.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6976,"kind":2048,"name":"setFontSize","url":"classes/VibratoBracket.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6977,"kind":2048,"name":"getFontSize","url":"classes/VibratoBracket.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6978,"kind":262144,"name":"fontSize","url":"classes/VibratoBracket.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6979,"kind":262144,"name":"fontSizeInPoints","url":"classes/VibratoBracket.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6980,"kind":262144,"name":"fontSizeInPixels","url":"classes/VibratoBracket.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6981,"kind":262144,"name":"fontStyle","url":"classes/VibratoBracket.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6982,"kind":262144,"name":"fontWeight","url":"classes/VibratoBracket.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"VibratoBracket"},{"id":6983,"kind":256,"name":"VoiceTime","url":"interfaces/VoiceTime.html","classes":"tsd-kind-interface"},{"id":6984,"kind":1024,"name":"num_beats","url":"interfaces/VoiceTime.html#num_beats","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"VoiceTime"},{"id":6985,"kind":1024,"name":"beat_value","url":"interfaces/VoiceTime.html#beat_value","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"VoiceTime"},{"id":6986,"kind":1024,"name":"resolution","url":"interfaces/VoiceTime.html#resolution","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"VoiceTime"},{"id":6987,"kind":8,"name":"VoiceMode","url":"enums/VoiceMode.html","classes":"tsd-kind-enum"},{"id":6988,"kind":16,"name":"STRICT","url":"enums/VoiceMode.html#STRICT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VoiceMode"},{"id":6989,"kind":16,"name":"SOFT","url":"enums/VoiceMode.html#SOFT","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VoiceMode"},{"id":6990,"kind":16,"name":"FULL","url":"enums/VoiceMode.html#FULL","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VoiceMode"},{"id":6991,"kind":128,"name":"Voice","url":"classes/Voice.html","classes":"tsd-kind-class"},{"id":6992,"kind":262144,"name":"CATEGORY","url":"classes/Voice.html#CATEGORY","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite tsd-is-static","parent":"Voice"},{"id":6993,"kind":262144,"name":"Mode","url":"classes/Voice.html#Mode","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-static","parent":"Voice"},{"id":6994,"kind":1024,"name":"TEXT_FONT","url":"classes/Voice.html#TEXT_FONT","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static","parent":"Voice"},{"id":6995,"kind":512,"name":"constructor","url":"classes/Voice.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"Voice"},{"id":6996,"kind":2048,"name":"getTotalTicks","url":"classes/Voice.html#getTotalTicks","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":6997,"kind":2048,"name":"getTicksUsed","url":"classes/Voice.html#getTicksUsed","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":6998,"kind":2048,"name":"getLargestTickWidth","url":"classes/Voice.html#getLargestTickWidth","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":6999,"kind":2048,"name":"getSmallestTickCount","url":"classes/Voice.html#getSmallestTickCount","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":7000,"kind":2048,"name":"getTickables","url":"classes/Voice.html#getTickables","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":7001,"kind":2048,"name":"getMode","url":"classes/Voice.html#getMode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":7002,"kind":2048,"name":"setMode","url":"classes/Voice.html#setMode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":7003,"kind":2048,"name":"getResolutionMultiplier","url":"classes/Voice.html#getResolutionMultiplier","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":7004,"kind":2048,"name":"getActualResolution","url":"classes/Voice.html#getActualResolution","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":7005,"kind":2048,"name":"setStave","url":"classes/Voice.html#setStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":7006,"kind":2048,"name":"getStave","url":"classes/Voice.html#getStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":7007,"kind":2048,"name":"getBoundingBox","url":"classes/Voice.html#getBoundingBox","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Voice"},{"id":7008,"kind":2048,"name":"setStrict","url":"classes/Voice.html#setStrict","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":7009,"kind":2048,"name":"isComplete","url":"classes/Voice.html#isComplete","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":7010,"kind":2048,"name":"setSoftmaxFactor","url":"classes/Voice.html#setSoftmaxFactor","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":7011,"kind":2048,"name":"softmax","url":"classes/Voice.html#softmax","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":7012,"kind":2048,"name":"addTickable","url":"classes/Voice.html#addTickable","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":7013,"kind":2048,"name":"addTickables","url":"classes/Voice.html#addTickables","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":7014,"kind":2048,"name":"preFormat","url":"classes/Voice.html#preFormat","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":7015,"kind":2048,"name":"checkStave","url":"classes/Voice.html#checkStave","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Voice"},{"id":7016,"kind":2048,"name":"draw","url":"classes/Voice.html#draw","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Voice"},{"id":7017,"kind":2048,"name":"addChildElement","url":"classes/Voice.html#addChildElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7018,"kind":2048,"name":"getCategory","url":"classes/Voice.html#getCategory","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7019,"kind":2048,"name":"setStyle","url":"classes/Voice.html#setStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7020,"kind":2048,"name":"setGroupStyle","url":"classes/Voice.html#setGroupStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7021,"kind":2048,"name":"getStyle","url":"classes/Voice.html#getStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7022,"kind":2048,"name":"applyStyle","url":"classes/Voice.html#applyStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7023,"kind":2048,"name":"restoreStyle","url":"classes/Voice.html#restoreStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7024,"kind":2048,"name":"drawWithStyle","url":"classes/Voice.html#drawWithStyle","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7025,"kind":2048,"name":"hasClass","url":"classes/Voice.html#hasClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7026,"kind":2048,"name":"addClass","url":"classes/Voice.html#addClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7027,"kind":2048,"name":"removeClass","url":"classes/Voice.html#removeClass","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7028,"kind":2048,"name":"onRegister","url":"classes/Voice.html#onRegister","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7029,"kind":2048,"name":"isRendered","url":"classes/Voice.html#isRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7030,"kind":2048,"name":"setRendered","url":"classes/Voice.html#setRendered","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7031,"kind":2048,"name":"getAttributes","url":"classes/Voice.html#getAttributes","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7032,"kind":2048,"name":"getAttribute","url":"classes/Voice.html#getAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7033,"kind":2048,"name":"getSVGElement","url":"classes/Voice.html#getSVGElement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7034,"kind":2048,"name":"setAttribute","url":"classes/Voice.html#setAttribute","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7035,"kind":2048,"name":"getContext","url":"classes/Voice.html#getContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7036,"kind":2048,"name":"setContext","url":"classes/Voice.html#setContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7037,"kind":2048,"name":"checkContext","url":"classes/Voice.html#checkContext","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7038,"kind":262144,"name":"font","url":"classes/Voice.html#font","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7039,"kind":2048,"name":"setFont","url":"classes/Voice.html#setFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7040,"kind":2048,"name":"getFont","url":"classes/Voice.html#getFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7041,"kind":2048,"name":"resetFont","url":"classes/Voice.html#resetFont","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7042,"kind":262144,"name":"fontInfo","url":"classes/Voice.html#fontInfo","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7043,"kind":2048,"name":"setFontSize","url":"classes/Voice.html#setFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7044,"kind":2048,"name":"getFontSize","url":"classes/Voice.html#getFontSize","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7045,"kind":262144,"name":"fontSize","url":"classes/Voice.html#fontSize","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7046,"kind":262144,"name":"fontSizeInPoints","url":"classes/Voice.html#fontSizeInPoints","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7047,"kind":262144,"name":"fontSizeInPixels","url":"classes/Voice.html#fontSizeInPixels","classes":"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7048,"kind":262144,"name":"fontStyle","url":"classes/Voice.html#fontStyle","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7049,"kind":262144,"name":"fontWeight","url":"classes/Voice.html#fontWeight","classes":"tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited","parent":"Voice"},{"id":7050,"kind":64,"name":"isHTMLCanvas","url":"modules.html#isHTMLCanvas","classes":"tsd-kind-function"},{"id":7051,"kind":64,"name":"isHTMLDiv","url":"modules.html#isHTMLDiv","classes":"tsd-kind-function"}],"index":{"version":"2.3.9","fields":["name","parent"],"fieldVectors":[["name/0",[0,58.908]],["parent/0",[]],["name/1",[1,49.392]],["parent/1",[0,5.812]],["name/2",[2,84.557]],["parent/2",[3,6.896]],["name/3",[0,58.908]],["parent/3",[3,6.896]],["name/4",[4,84.557]],["parent/4",[3,6.896]],["name/5",[5,84.557]],["parent/5",[3,6.896]],["name/6",[6,84.557]],["parent/6",[3,6.896]],["name/7",[7,60.578]],["parent/7",[3,6.896]],["name/8",[8,44.981]],["parent/8",[]],["name/9",[9,57.042]],["parent/9",[8,4.438]],["name/10",[10,39.376]],["parent/10",[8,4.438]],["name/11",[11,57.932]],["parent/11",[8,4.438]],["name/12",[12,84.557]],["parent/12",[8,4.438]],["name/13",[13,84.557]],["parent/13",[8,4.438]],["name/14",[14,53.8]],["parent/14",[8,4.438]],["name/15",[15,59.434]],["parent/15",[8,4.438]],["name/16",[16,46.64]],["parent/16",[8,4.438]],["name/17",[17,43.782]],["parent/17",[8,4.438]],["name/18",[18,57.477]],["parent/18",[8,4.438]],["name/19",[19,52.639]],["parent/19",[8,4.438]],["name/20",[1,49.392]],["parent/20",[8,4.438]],["name/21",[20,84.557]],["parent/21",[21,7.507]],["name/22",[22,73.571]],["parent/22",[21,7.507]],["name/23",[23,84.557]],["parent/23",[21,7.507]],["name/24",[24,49.196]],["parent/24",[8,4.438]],["name/25",[25,60.578]],["parent/25",[8,4.438]],["name/26",[26,84.557]],["parent/26",[8,4.438]],["name/27",[27,44.364]],["parent/27",[8,4.438]],["name/28",[28,50.218]],["parent/28",[8,4.438]],["name/29",[29,60.578]],["parent/29",[8,4.438]],["name/30",[30,60.578]],["parent/30",[8,4.438]],["name/31",[31,60.578]],["parent/31",[8,4.438]],["name/32",[32,60.578]],["parent/32",[8,4.438]],["name/33",[33,60.578]],["parent/33",[8,4.438]],["name/34",[34,53.202]],["parent/34",[8,4.438]],["name/35",[35,53.202]],["parent/35",[8,4.438]],["name/36",[36,53.202]],["parent/36",[8,4.438]],["name/37",[37,55.841]],["parent/37",[8,4.438]],["name/38",[38,55.47]],["parent/38",[8,4.438]],["name/39",[39,60.578]],["parent/39",[8,4.438]],["name/40",[40,59.434]],["parent/40",[8,4.438]],["name/41",[41,60.578]],["parent/41",[8,4.438]],["name/42",[42,60.578]],["parent/42",[8,4.438]],["name/43",[43,52.369]],["parent/43",[8,4.438]],["name/44",[44,52.369]],["parent/44",[8,4.438]],["name/45",[45,60.578]],["parent/45",[8,4.438]],["name/46",[46,46.792]],["parent/46",[8,4.438]],["name/47",[47,46.792]],["parent/47",[8,4.438]],["name/48",[48,46.792]],["parent/48",[8,4.438]],["name/49",[49,46.792]],["parent/49",[8,4.438]],["name/50",[50,46.792]],["parent/50",[8,4.438]],["name/51",[51,46.792]],["parent/51",[8,4.438]],["name/52",[52,46.792]],["parent/52",[8,4.438]],["name/53",[53,46.792]],["parent/53",[8,4.438]],["name/54",[54,46.792]],["parent/54",[8,4.438]],["name/55",[55,46.792]],["parent/55",[8,4.438]],["name/56",[56,46.792]],["parent/56",[8,4.438]],["name/57",[57,46.792]],["parent/57",[8,4.438]],["name/58",[58,46.792]],["parent/58",[8,4.438]],["name/59",[59,46.792]],["parent/59",[8,4.438]],["name/60",[60,46.792]],["parent/60",[8,4.438]],["name/61",[61,46.792]],["parent/61",[8,4.438]],["name/62",[62,46.792]],["parent/62",[8,4.438]],["name/63",[63,46.792]],["parent/63",[8,4.438]],["name/64",[64,46.792]],["parent/64",[8,4.438]],["name/65",[65,46.491]],["parent/65",[8,4.438]],["name/66",[66,46.491]],["parent/66",[8,4.438]],["name/67",[67,46.792]],["parent/67",[8,4.438]],["name/68",[68,40.948]],["parent/68",[8,4.438]],["name/69",[69,46.344]],["parent/69",[8,4.438]],["name/70",[70,46.344]],["parent/70",[8,4.438]],["name/71",[71,46.792]],["parent/71",[8,4.438]],["name/72",[72,46.056]],["parent/72",[8,4.438]],["name/73",[73,46.64]],["parent/73",[8,4.438]],["name/74",[74,46.792]],["parent/74",[8,4.438]],["name/75",[75,46.792]],["parent/75",[8,4.438]],["name/76",[76,46.792]],["parent/76",[8,4.438]],["name/77",[77,46.64]],["parent/77",[8,4.438]],["name/78",[78,46.199]],["parent/78",[8,4.438]],["name/79",[79,46.199]],["parent/79",[8,4.438]],["name/80",[80,69.894]],["parent/80",[]],["name/81",[81,69.894]],["parent/81",[80,6.896]],["name/82",[82,69.894]],["parent/82",[80,6.896]],["name/83",[83,69.894]],["parent/83",[80,6.896]],["name/84",[84,76.084]],["parent/84",[80,6.896]],["name/85",[85,69.894]],["parent/85",[]],["name/86",[86,71.565]],["parent/86",[85,6.896]],["name/87",[82,69.894]],["parent/87",[85,6.896]],["name/88",[87,71.565]],["parent/88",[85,6.896]],["name/89",[84,76.084]],["parent/89",[85,6.896]],["name/90",[88,45.371]],["parent/90",[]],["name/91",[9,57.042]],["parent/91",[88,4.477]],["name/92",[10,39.376]],["parent/92",[88,4.477]],["name/93",[16,46.64]],["parent/93",[88,4.477]],["name/94",[89,79.449]],["parent/94",[88,4.477]],["name/95",[90,79.449]],["parent/95",[88,4.477]],["name/96",[91,79.449]],["parent/96",[88,4.477]],["name/97",[92,79.449]],["parent/97",[88,4.477]],["name/98",[93,84.557]],["parent/98",[88,4.477]],["name/99",[11,57.932]],["parent/99",[88,4.477]],["name/100",[14,53.8]],["parent/100",[88,4.477]],["name/101",[15,59.434]],["parent/101",[88,4.477]],["name/102",[17,43.782]],["parent/102",[88,4.477]],["name/103",[94,84.557]],["parent/103",[88,4.477]],["name/104",[95,84.557]],["parent/104",[88,4.477]],["name/105",[96,79.449]],["parent/105",[88,4.477]],["name/106",[27,44.364]],["parent/106",[88,4.477]],["name/107",[24,49.196]],["parent/107",[88,4.477]],["name/108",[28,50.218]],["parent/108",[88,4.477]],["name/109",[29,60.578]],["parent/109",[88,4.477]],["name/110",[30,60.578]],["parent/110",[88,4.477]],["name/111",[25,60.578]],["parent/111",[88,4.477]],["name/112",[31,60.578]],["parent/112",[88,4.477]],["name/113",[32,60.578]],["parent/113",[88,4.477]],["name/114",[33,60.578]],["parent/114",[88,4.477]],["name/115",[34,53.202]],["parent/115",[88,4.477]],["name/116",[35,53.202]],["parent/116",[88,4.477]],["name/117",[36,53.202]],["parent/117",[88,4.477]],["name/118",[37,55.841]],["parent/118",[88,4.477]],["name/119",[38,55.47]],["parent/119",[88,4.477]],["name/120",[39,60.578]],["parent/120",[88,4.477]],["name/121",[40,59.434]],["parent/121",[88,4.477]],["name/122",[41,60.578]],["parent/122",[88,4.477]],["name/123",[42,60.578]],["parent/123",[88,4.477]],["name/124",[43,52.369]],["parent/124",[88,4.477]],["name/125",[44,52.369]],["parent/125",[88,4.477]],["name/126",[45,60.578]],["parent/126",[88,4.477]],["name/127",[46,46.792]],["parent/127",[88,4.477]],["name/128",[47,46.792]],["parent/128",[88,4.477]],["name/129",[48,46.792]],["parent/129",[88,4.477]],["name/130",[49,46.792]],["parent/130",[88,4.477]],["name/131",[50,46.792]],["parent/131",[88,4.477]],["name/132",[51,46.792]],["parent/132",[88,4.477]],["name/133",[52,46.792]],["parent/133",[88,4.477]],["name/134",[53,46.792]],["parent/134",[88,4.477]],["name/135",[54,46.792]],["parent/135",[88,4.477]],["name/136",[55,46.792]],["parent/136",[88,4.477]],["name/137",[56,46.792]],["parent/137",[88,4.477]],["name/138",[57,46.792]],["parent/138",[88,4.477]],["name/139",[58,46.792]],["parent/139",[88,4.477]],["name/140",[59,46.792]],["parent/140",[88,4.477]],["name/141",[60,46.792]],["parent/141",[88,4.477]],["name/142",[61,46.792]],["parent/142",[88,4.477]],["name/143",[62,46.792]],["parent/143",[88,4.477]],["name/144",[63,46.792]],["parent/144",[88,4.477]],["name/145",[64,46.792]],["parent/145",[88,4.477]],["name/146",[65,46.491]],["parent/146",[88,4.477]],["name/147",[66,46.491]],["parent/147",[88,4.477]],["name/148",[67,46.792]],["parent/148",[88,4.477]],["name/149",[68,40.948]],["parent/149",[88,4.477]],["name/150",[69,46.344]],["parent/150",[88,4.477]],["name/151",[70,46.344]],["parent/151",[88,4.477]],["name/152",[71,46.792]],["parent/152",[88,4.477]],["name/153",[72,46.056]],["parent/153",[88,4.477]],["name/154",[73,46.64]],["parent/154",[88,4.477]],["name/155",[74,46.792]],["parent/155",[88,4.477]],["name/156",[75,46.792]],["parent/156",[88,4.477]],["name/157",[76,46.792]],["parent/157",[88,4.477]],["name/158",[77,46.64]],["parent/158",[88,4.477]],["name/159",[78,46.199]],["parent/159",[88,4.477]],["name/160",[79,46.199]],["parent/160",[88,4.477]],["name/161",[97,71.565]],["parent/161",[]],["name/162",[98,67.211]],["parent/162",[97,7.061]],["name/163",[99,84.557]],["parent/163",[97,7.061]],["name/164",[100,84.557]],["parent/164",[97,7.061]],["name/165",[101,84.557]],["parent/165",[97,7.061]],["name/166",[102,45.915]],["parent/166",[]],["name/167",[9,57.042]],["parent/167",[102,4.53]],["name/168",[10,39.376]],["parent/168",[102,4.53]],["name/169",[11,57.932]],["parent/169",[102,4.53]],["name/170",[103,79.449]],["parent/170",[102,4.53]],["name/171",[14,53.8]],["parent/171",[102,4.53]],["name/172",[15,59.434]],["parent/172",[102,4.53]],["name/173",[16,46.64]],["parent/173",[102,4.53]],["name/174",[17,43.782]],["parent/174",[102,4.53]],["name/175",[18,57.477]],["parent/175",[102,4.53]],["name/176",[19,52.639]],["parent/176",[102,4.53]],["name/177",[1,49.392]],["parent/177",[102,4.53]],["name/178",[22,73.571]],["parent/178",[104,8.343]],["name/179",[27,44.364]],["parent/179",[102,4.53]],["name/180",[24,49.196]],["parent/180",[102,4.53]],["name/181",[28,50.218]],["parent/181",[102,4.53]],["name/182",[29,60.578]],["parent/182",[102,4.53]],["name/183",[30,60.578]],["parent/183",[102,4.53]],["name/184",[25,60.578]],["parent/184",[102,4.53]],["name/185",[31,60.578]],["parent/185",[102,4.53]],["name/186",[32,60.578]],["parent/186",[102,4.53]],["name/187",[33,60.578]],["parent/187",[102,4.53]],["name/188",[34,53.202]],["parent/188",[102,4.53]],["name/189",[35,53.202]],["parent/189",[102,4.53]],["name/190",[36,53.202]],["parent/190",[102,4.53]],["name/191",[37,55.841]],["parent/191",[102,4.53]],["name/192",[38,55.47]],["parent/192",[102,4.53]],["name/193",[39,60.578]],["parent/193",[102,4.53]],["name/194",[40,59.434]],["parent/194",[102,4.53]],["name/195",[41,60.578]],["parent/195",[102,4.53]],["name/196",[42,60.578]],["parent/196",[102,4.53]],["name/197",[43,52.369]],["parent/197",[102,4.53]],["name/198",[44,52.369]],["parent/198",[102,4.53]],["name/199",[45,60.578]],["parent/199",[102,4.53]],["name/200",[46,46.792]],["parent/200",[102,4.53]],["name/201",[47,46.792]],["parent/201",[102,4.53]],["name/202",[48,46.792]],["parent/202",[102,4.53]],["name/203",[49,46.792]],["parent/203",[102,4.53]],["name/204",[50,46.792]],["parent/204",[102,4.53]],["name/205",[51,46.792]],["parent/205",[102,4.53]],["name/206",[52,46.792]],["parent/206",[102,4.53]],["name/207",[53,46.792]],["parent/207",[102,4.53]],["name/208",[54,46.792]],["parent/208",[102,4.53]],["name/209",[55,46.792]],["parent/209",[102,4.53]],["name/210",[56,46.792]],["parent/210",[102,4.53]],["name/211",[57,46.792]],["parent/211",[102,4.53]],["name/212",[58,46.792]],["parent/212",[102,4.53]],["name/213",[59,46.792]],["parent/213",[102,4.53]],["name/214",[60,46.792]],["parent/214",[102,4.53]],["name/215",[61,46.792]],["parent/215",[102,4.53]],["name/216",[62,46.792]],["parent/216",[102,4.53]],["name/217",[63,46.792]],["parent/217",[102,4.53]],["name/218",[64,46.792]],["parent/218",[102,4.53]],["name/219",[65,46.491]],["parent/219",[102,4.53]],["name/220",[66,46.491]],["parent/220",[102,4.53]],["name/221",[67,46.792]],["parent/221",[102,4.53]],["name/222",[68,40.948]],["parent/222",[102,4.53]],["name/223",[69,46.344]],["parent/223",[102,4.53]],["name/224",[70,46.344]],["parent/224",[102,4.53]],["name/225",[71,46.792]],["parent/225",[102,4.53]],["name/226",[72,46.056]],["parent/226",[102,4.53]],["name/227",[73,46.64]],["parent/227",[102,4.53]],["name/228",[74,46.792]],["parent/228",[102,4.53]],["name/229",[75,46.792]],["parent/229",[102,4.53]],["name/230",[76,46.792]],["parent/230",[102,4.53]],["name/231",[77,46.64]],["parent/231",[102,4.53]],["name/232",[78,46.199]],["parent/232",[102,4.53]],["name/233",[79,46.199]],["parent/233",[102,4.53]],["name/234",[105,40.053]],["parent/234",[]],["name/235",[9,57.042]],["parent/235",[105,3.952]],["name/236",[10,39.376]],["parent/236",[105,3.952]],["name/237",[106,59.99]],["parent/237",[105,3.952]],["name/238",[16,46.64]],["parent/238",[105,3.952]],["name/239",[17,43.782]],["parent/239",[105,3.952]],["name/240",[107,76.084]],["parent/240",[105,3.952]],["name/241",[108,69.894]],["parent/241",[105,3.952]],["name/242",[109,59.434]],["parent/242",[105,3.952]],["name/243",[110,56.225]],["parent/243",[105,3.952]],["name/244",[27,44.364]],["parent/244",[105,3.952]],["name/245",[111,43.126]],["parent/245",[105,3.952]],["name/246",[112,57.042]],["parent/246",[105,3.952]],["name/247",[113,54.768]],["parent/247",[105,3.952]],["name/248",[19,52.639]],["parent/248",[105,3.952]],["name/249",[1,49.392]],["parent/249",[105,3.952]],["name/250",[114,59.99]],["parent/250",[115,6.175]],["name/251",[27,44.364]],["parent/251",[115,6.175]],["name/252",[116,59.99]],["parent/252",[115,6.175]],["name/253",[117,59.99]],["parent/253",[115,6.175]],["name/254",[118,57.042]],["parent/254",[115,6.175]],["name/255",[119,59.99]],["parent/255",[115,6.175]],["name/256",[120,59.99]],["parent/256",[115,6.175]],["name/257",[121,57.477]],["parent/257",[115,6.175]],["name/258",[122,59.99]],["parent/258",[115,6.175]],["name/259",[123,59.99]],["parent/259",[115,6.175]],["name/260",[124,56.625]],["parent/260",[115,6.175]],["name/261",[68,40.948]],["parent/261",[115,6.175]],["name/262",[125,58.408]],["parent/262",[115,6.175]],["name/263",[126,59.99]],["parent/263",[105,3.952]],["name/264",[127,59.99]],["parent/264",[105,3.952]],["name/265",[128,59.434]],["parent/265",[105,3.952]],["name/266",[129,59.99]],["parent/266",[105,3.952]],["name/267",[130,54.112]],["parent/267",[105,3.952]],["name/268",[131,54.112]],["parent/268",[105,3.952]],["name/269",[132,53.8]],["parent/269",[105,3.952]],["name/270",[133,59.99]],["parent/270",[105,3.952]],["name/271",[134,59.99]],["parent/271",[105,3.952]],["name/272",[135,59.99]],["parent/272",[105,3.952]],["name/273",[136,59.99]],["parent/273",[105,3.952]],["name/274",[137,59.434]],["parent/274",[105,3.952]],["name/275",[138,59.99]],["parent/275",[105,3.952]],["name/276",[139,59.99]],["parent/276",[105,3.952]],["name/277",[140,59.99]],["parent/277",[105,3.952]],["name/278",[141,59.99]],["parent/278",[105,3.952]],["name/279",[142,59.99]],["parent/279",[105,3.952]],["name/280",[143,59.99]],["parent/280",[105,3.952]],["name/281",[144,58.908]],["parent/281",[105,3.952]],["name/282",[145,59.434]],["parent/282",[105,3.952]],["name/283",[146,59.434]],["parent/283",[105,3.952]],["name/284",[147,59.434]],["parent/284",[105,3.952]],["name/285",[148,59.434]],["parent/285",[105,3.952]],["name/286",[149,59.99]],["parent/286",[105,3.952]],["name/287",[150,59.99]],["parent/287",[105,3.952]],["name/288",[151,59.99]],["parent/288",[105,3.952]],["name/289",[152,59.99]],["parent/289",[105,3.952]],["name/290",[153,59.99]],["parent/290",[105,3.952]],["name/291",[154,59.99]],["parent/291",[105,3.952]],["name/292",[155,59.99]],["parent/292",[105,3.952]],["name/293",[156,59.99]],["parent/293",[105,3.952]],["name/294",[157,57.932]],["parent/294",[105,3.952]],["name/295",[158,59.99]],["parent/295",[105,3.952]],["name/296",[159,59.99]],["parent/296",[105,3.952]],["name/297",[160,59.99]],["parent/297",[105,3.952]],["name/298",[161,59.99]],["parent/298",[105,3.952]],["name/299",[162,59.99]],["parent/299",[105,3.952]],["name/300",[163,56.225]],["parent/300",[105,3.952]],["name/301",[164,59.434]],["parent/301",[105,3.952]],["name/302",[165,59.434]],["parent/302",[105,3.952]],["name/303",[166,59.99]],["parent/303",[105,3.952]],["name/304",[167,59.99]],["parent/304",[105,3.952]],["name/305",[168,59.99]],["parent/305",[105,3.952]],["name/306",[169,59.99]],["parent/306",[105,3.952]],["name/307",[170,59.99]],["parent/307",[105,3.952]],["name/308",[171,57.042]],["parent/308",[105,3.952]],["name/309",[172,59.434]],["parent/309",[105,3.952]],["name/310",[173,59.434]],["parent/310",[105,3.952]],["name/311",[28,50.218]],["parent/311",[105,3.952]],["name/312",[24,49.196]],["parent/312",[105,3.952]],["name/313",[43,52.369]],["parent/313",[105,3.952]],["name/314",[44,52.369]],["parent/314",[105,3.952]],["name/315",[174,53.8]],["parent/315",[105,3.952]],["name/316",[175,58.908]],["parent/316",[105,3.952]],["name/317",[176,59.434]],["parent/317",[105,3.952]],["name/318",[177,59.434]],["parent/318",[105,3.952]],["name/319",[178,59.434]],["parent/319",[105,3.952]],["name/320",[179,59.434]],["parent/320",[105,3.952]],["name/321",[180,59.434]],["parent/321",[105,3.952]],["name/322",[181,59.434]],["parent/322",[105,3.952]],["name/323",[182,59.434]],["parent/323",[105,3.952]],["name/324",[183,59.434]],["parent/324",[105,3.952]],["name/325",[184,57.932]],["parent/325",[105,3.952]],["name/326",[185,59.434]],["parent/326",[105,3.952]],["name/327",[186,59.434]],["parent/327",[105,3.952]],["name/328",[187,56.625]],["parent/328",[105,3.952]],["name/329",[188,58.908]],["parent/329",[105,3.952]],["name/330",[189,59.434]],["parent/330",[105,3.952]],["name/331",[190,59.434]],["parent/331",[105,3.952]],["name/332",[191,59.434]],["parent/332",[105,3.952]],["name/333",[192,59.434]],["parent/333",[105,3.952]],["name/334",[193,59.434]],["parent/334",[105,3.952]],["name/335",[36,53.202]],["parent/335",[105,3.952]],["name/336",[34,53.202]],["parent/336",[105,3.952]],["name/337",[35,53.202]],["parent/337",[105,3.952]],["name/338",[46,46.792]],["parent/338",[105,3.952]],["name/339",[47,46.792]],["parent/339",[105,3.952]],["name/340",[48,46.792]],["parent/340",[105,3.952]],["name/341",[49,46.792]],["parent/341",[105,3.952]],["name/342",[50,46.792]],["parent/342",[105,3.952]],["name/343",[51,46.792]],["parent/343",[105,3.952]],["name/344",[52,46.792]],["parent/344",[105,3.952]],["name/345",[53,46.792]],["parent/345",[105,3.952]],["name/346",[54,46.792]],["parent/346",[105,3.952]],["name/347",[55,46.792]],["parent/347",[105,3.952]],["name/348",[56,46.792]],["parent/348",[105,3.952]],["name/349",[57,46.792]],["parent/349",[105,3.952]],["name/350",[58,46.792]],["parent/350",[105,3.952]],["name/351",[59,46.792]],["parent/351",[105,3.952]],["name/352",[60,46.792]],["parent/352",[105,3.952]],["name/353",[61,46.792]],["parent/353",[105,3.952]],["name/354",[62,46.792]],["parent/354",[105,3.952]],["name/355",[63,46.792]],["parent/355",[105,3.952]],["name/356",[64,46.792]],["parent/356",[105,3.952]],["name/357",[65,46.491]],["parent/357",[105,3.952]],["name/358",[66,46.491]],["parent/358",[105,3.952]],["name/359",[67,46.792]],["parent/359",[105,3.952]],["name/360",[68,40.948]],["parent/360",[105,3.952]],["name/361",[69,46.344]],["parent/361",[105,3.952]],["name/362",[70,46.344]],["parent/362",[105,3.952]],["name/363",[71,46.792]],["parent/363",[105,3.952]],["name/364",[72,46.056]],["parent/364",[105,3.952]],["name/365",[73,46.64]],["parent/365",[105,3.952]],["name/366",[74,46.792]],["parent/366",[105,3.952]],["name/367",[75,46.792]],["parent/367",[105,3.952]],["name/368",[76,46.792]],["parent/368",[105,3.952]],["name/369",[77,46.64]],["parent/369",[105,3.952]],["name/370",[78,46.199]],["parent/370",[105,3.952]],["name/371",[79,46.199]],["parent/371",[105,3.952]],["name/372",[194,84.557]],["parent/372",[]],["name/373",[195,84.557]],["parent/373",[]],["name/374",[196,84.557]],["parent/374",[]],["name/375",[197,84.557]],["parent/375",[]],["name/376",[198,46.64]],["parent/376",[]],["name/377",[10,39.376]],["parent/377",[198,4.602]],["name/378",[199,84.557]],["parent/378",[198,4.602]],["name/379",[200,84.557]],["parent/379",[198,4.602]],["name/380",[201,84.557]],["parent/380",[198,4.602]],["name/381",[16,46.64]],["parent/381",[198,4.602]],["name/382",[17,43.782]],["parent/382",[198,4.602]],["name/383",[19,52.639]],["parent/383",[198,4.602]],["name/384",[1,49.392]],["parent/384",[198,4.602]],["name/385",[202,84.557]],["parent/385",[203,6.251]],["name/386",[204,84.557]],["parent/386",[203,6.251]],["name/387",[205,84.557]],["parent/387",[203,6.251]],["name/388",[206,84.557]],["parent/388",[203,6.251]],["name/389",[207,84.557]],["parent/389",[203,6.251]],["name/390",[208,84.557]],["parent/390",[203,6.251]],["name/391",[209,84.557]],["parent/391",[203,6.251]],["name/392",[210,84.557]],["parent/392",[203,6.251]],["name/393",[211,84.557]],["parent/393",[203,6.251]],["name/394",[212,84.557]],["parent/394",[203,6.251]],["name/395",[213,84.557]],["parent/395",[203,6.251]],["name/396",[214,84.557]],["parent/396",[203,6.251]],["name/397",[215,71.565]],["parent/397",[198,4.602]],["name/398",[188,58.908]],["parent/398",[198,4.602]],["name/399",[216,84.557]],["parent/399",[198,4.602]],["name/400",[165,59.434]],["parent/400",[198,4.602]],["name/401",[217,71.565]],["parent/401",[198,4.602]],["name/402",[218,68.463]],["parent/402",[198,4.602]],["name/403",[219,84.557]],["parent/403",[198,4.602]],["name/404",[220,84.557]],["parent/404",[198,4.602]],["name/405",[221,84.557]],["parent/405",[198,4.602]],["name/406",[222,84.557]],["parent/406",[198,4.602]],["name/407",[223,84.557]],["parent/407",[198,4.602]],["name/408",[224,84.557]],["parent/408",[198,4.602]],["name/409",[225,84.557]],["parent/409",[198,4.602]],["name/410",[226,84.557]],["parent/410",[198,4.602]],["name/411",[227,84.557]],["parent/411",[198,4.602]],["name/412",[228,84.557]],["parent/412",[198,4.602]],["name/413",[110,56.225]],["parent/413",[198,4.602]],["name/414",[187,56.625]],["parent/414",[198,4.602]],["name/415",[27,44.364]],["parent/415",[198,4.602]],["name/416",[46,46.792]],["parent/416",[198,4.602]],["name/417",[47,46.792]],["parent/417",[198,4.602]],["name/418",[48,46.792]],["parent/418",[198,4.602]],["name/419",[49,46.792]],["parent/419",[198,4.602]],["name/420",[50,46.792]],["parent/420",[198,4.602]],["name/421",[51,46.792]],["parent/421",[198,4.602]],["name/422",[52,46.792]],["parent/422",[198,4.602]],["name/423",[53,46.792]],["parent/423",[198,4.602]],["name/424",[54,46.792]],["parent/424",[198,4.602]],["name/425",[55,46.792]],["parent/425",[198,4.602]],["name/426",[56,46.792]],["parent/426",[198,4.602]],["name/427",[57,46.792]],["parent/427",[198,4.602]],["name/428",[58,46.792]],["parent/428",[198,4.602]],["name/429",[59,46.792]],["parent/429",[198,4.602]],["name/430",[60,46.792]],["parent/430",[198,4.602]],["name/431",[61,46.792]],["parent/431",[198,4.602]],["name/432",[62,46.792]],["parent/432",[198,4.602]],["name/433",[63,46.792]],["parent/433",[198,4.602]],["name/434",[64,46.792]],["parent/434",[198,4.602]],["name/435",[65,46.491]],["parent/435",[198,4.602]],["name/436",[66,46.491]],["parent/436",[198,4.602]],["name/437",[67,46.792]],["parent/437",[198,4.602]],["name/438",[68,40.948]],["parent/438",[198,4.602]],["name/439",[69,46.344]],["parent/439",[198,4.602]],["name/440",[70,46.344]],["parent/440",[198,4.602]],["name/441",[71,46.792]],["parent/441",[198,4.602]],["name/442",[72,46.056]],["parent/442",[198,4.602]],["name/443",[73,46.64]],["parent/443",[198,4.602]],["name/444",[74,46.792]],["parent/444",[198,4.602]],["name/445",[75,46.792]],["parent/445",[198,4.602]],["name/446",[76,46.792]],["parent/446",[198,4.602]],["name/447",[77,46.64]],["parent/447",[198,4.602]],["name/448",[78,46.199]],["parent/448",[198,4.602]],["name/449",[79,46.199]],["parent/449",[198,4.602]],["name/450",[229,69.894]],["parent/450",[]],["name/451",[230,68.463]],["parent/451",[229,6.896]],["name/452",[18,57.477]],["parent/452",[229,6.896]],["name/453",[231,68.463]],["parent/453",[229,6.896]],["name/454",[7,60.578]],["parent/454",[229,6.896]],["name/455",[232,84.557]],["parent/455",[229,6.896]],["name/456",[233,45.915]],["parent/456",[]],["name/457",[10,39.376]],["parent/457",[233,4.53]],["name/458",[234,76.084]],["parent/458",[233,4.53]],["name/459",[235,76.084]],["parent/459",[233,4.53]],["name/460",[16,46.64]],["parent/460",[233,4.53]],["name/461",[11,57.932]],["parent/461",[233,4.53]],["name/462",[14,53.8]],["parent/462",[233,4.53]],["name/463",[15,59.434]],["parent/463",[233,4.53]],["name/464",[17,43.782]],["parent/464",[233,4.53]],["name/465",[19,52.639]],["parent/465",[233,4.53]],["name/466",[1,49.392]],["parent/466",[233,4.53]],["name/467",[236,76.084]],["parent/467",[237,7.259]],["name/468",[238,84.557]],["parent/468",[237,7.259]],["name/469",[239,84.557]],["parent/469",[237,7.259]],["name/470",[240,84.557]],["parent/470",[237,7.259]],["name/471",[43,52.369]],["parent/471",[233,4.53]],["name/472",[241,84.557]],["parent/472",[233,4.53]],["name/473",[242,79.449]],["parent/473",[233,4.53]],["name/474",[243,84.557]],["parent/474",[233,4.53]],["name/475",[27,44.364]],["parent/475",[233,4.53]],["name/476",[24,49.196]],["parent/476",[233,4.53]],["name/477",[28,50.218]],["parent/477",[233,4.53]],["name/478",[29,60.578]],["parent/478",[233,4.53]],["name/479",[30,60.578]],["parent/479",[233,4.53]],["name/480",[25,60.578]],["parent/480",[233,4.53]],["name/481",[31,60.578]],["parent/481",[233,4.53]],["name/482",[32,60.578]],["parent/482",[233,4.53]],["name/483",[33,60.578]],["parent/483",[233,4.53]],["name/484",[34,53.202]],["parent/484",[233,4.53]],["name/485",[35,53.202]],["parent/485",[233,4.53]],["name/486",[36,53.202]],["parent/486",[233,4.53]],["name/487",[37,55.841]],["parent/487",[233,4.53]],["name/488",[38,55.47]],["parent/488",[233,4.53]],["name/489",[39,60.578]],["parent/489",[233,4.53]],["name/490",[40,59.434]],["parent/490",[233,4.53]],["name/491",[41,60.578]],["parent/491",[233,4.53]],["name/492",[42,60.578]],["parent/492",[233,4.53]],["name/493",[44,52.369]],["parent/493",[233,4.53]],["name/494",[45,60.578]],["parent/494",[233,4.53]],["name/495",[46,46.792]],["parent/495",[233,4.53]],["name/496",[47,46.792]],["parent/496",[233,4.53]],["name/497",[48,46.792]],["parent/497",[233,4.53]],["name/498",[49,46.792]],["parent/498",[233,4.53]],["name/499",[50,46.792]],["parent/499",[233,4.53]],["name/500",[51,46.792]],["parent/500",[233,4.53]],["name/501",[52,46.792]],["parent/501",[233,4.53]],["name/502",[53,46.792]],["parent/502",[233,4.53]],["name/503",[54,46.792]],["parent/503",[233,4.53]],["name/504",[55,46.792]],["parent/504",[233,4.53]],["name/505",[56,46.792]],["parent/505",[233,4.53]],["name/506",[57,46.792]],["parent/506",[233,4.53]],["name/507",[58,46.792]],["parent/507",[233,4.53]],["name/508",[59,46.792]],["parent/508",[233,4.53]],["name/509",[60,46.792]],["parent/509",[233,4.53]],["name/510",[61,46.792]],["parent/510",[233,4.53]],["name/511",[62,46.792]],["parent/511",[233,4.53]],["name/512",[63,46.792]],["parent/512",[233,4.53]],["name/513",[64,46.792]],["parent/513",[233,4.53]],["name/514",[65,46.491]],["parent/514",[233,4.53]],["name/515",[66,46.491]],["parent/515",[233,4.53]],["name/516",[67,46.792]],["parent/516",[233,4.53]],["name/517",[68,40.948]],["parent/517",[233,4.53]],["name/518",[69,46.344]],["parent/518",[233,4.53]],["name/519",[70,46.344]],["parent/519",[233,4.53]],["name/520",[71,46.792]],["parent/520",[233,4.53]],["name/521",[72,46.056]],["parent/521",[233,4.53]],["name/522",[73,46.64]],["parent/522",[233,4.53]],["name/523",[74,46.792]],["parent/523",[233,4.53]],["name/524",[75,46.792]],["parent/524",[233,4.53]],["name/525",[76,46.792]],["parent/525",[233,4.53]],["name/526",[77,46.64]],["parent/526",[233,4.53]],["name/527",[78,46.199]],["parent/527",[233,4.53]],["name/528",[79,46.199]],["parent/528",[233,4.53]],["name/529",[244,71.565]],["parent/529",[]],["name/530",[230,68.463]],["parent/530",[244,7.061]],["name/531",[245,68.463]],["parent/531",[244,7.061]],["name/532",[246,79.449]],["parent/532",[244,7.061]],["name/533",[247,79.449]],["parent/533",[244,7.061]],["name/534",[248,58.908]],["parent/534",[]],["name/535",[249,79.449]],["parent/535",[248,5.812]],["name/536",[17,43.782]],["parent/536",[248,5.812]],["name/537",[230,68.463]],["parent/537",[248,5.812]],["name/538",[245,68.463]],["parent/538",[248,5.812]],["name/539",[246,79.449]],["parent/539",[248,5.812]],["name/540",[247,79.449]],["parent/540",[248,5.812]],["name/541",[174,53.8]],["parent/541",[248,5.812]],["name/542",[250,73.571]],["parent/542",[248,5.812]],["name/543",[251,84.557]],["parent/543",[248,5.812]],["name/544",[252,84.557]],["parent/544",[248,5.812]],["name/545",[253,61.204]],["parent/545",[248,5.812]],["name/546",[254,73.571]],["parent/546",[248,5.812]],["name/547",[255,84.557]],["parent/547",[248,5.812]],["name/548",[256,84.557]],["parent/548",[248,5.812]],["name/549",[257,79.449]],["parent/549",[248,5.812]],["name/550",[258,79.449]],["parent/550",[248,5.812]],["name/551",[259,84.557]],["parent/551",[248,5.812]],["name/552",[260,63.355]],["parent/552",[]],["name/553",[17,43.782]],["parent/553",[260,6.251]],["name/554",[261,84.557]],["parent/554",[260,6.251]],["name/555",[262,84.557]],["parent/555",[260,6.251]],["name/556",[7,60.578]],["parent/556",[260,6.251]],["name/557",[263,66.099]],["parent/557",[260,6.251]],["name/558",[264,84.557]],["parent/558",[260,6.251]],["name/559",[265,84.557]],["parent/559",[260,6.251]],["name/560",[266,84.557]],["parent/560",[260,6.251]],["name/561",[267,84.557]],["parent/561",[260,6.251]],["name/562",[268,84.557]],["parent/562",[260,6.251]],["name/563",[269,50.005]],["parent/563",[]],["name/564",[7,60.578]],["parent/564",[269,4.934]],["name/565",[263,66.099]],["parent/565",[269,4.934]],["name/566",[270,84.557]],["parent/566",[269,4.934]],["name/567",[271,84.557]],["parent/567",[269,4.934]],["name/568",[10,39.376]],["parent/568",[269,4.934]],["name/569",[17,43.782]],["parent/569",[269,4.934]],["name/570",[272,84.557]],["parent/570",[269,4.934]],["name/571",[273,79.449]],["parent/571",[269,4.934]],["name/572",[274,84.557]],["parent/572",[269,4.934]],["name/573",[275,73.571]],["parent/573",[269,4.934]],["name/574",[276,76.084]],["parent/574",[269,4.934]],["name/575",[277,76.084]],["parent/575",[269,4.934]],["name/576",[278,73.571]],["parent/576",[269,4.934]],["name/577",[279,76.084]],["parent/577",[269,4.934]],["name/578",[280,76.084]],["parent/578",[269,4.934]],["name/579",[281,76.084]],["parent/579",[269,4.934]],["name/580",[282,76.084]],["parent/580",[269,4.934]],["name/581",[283,76.084]],["parent/581",[269,4.934]],["name/582",[284,76.084]],["parent/582",[269,4.934]],["name/583",[285,76.084]],["parent/583",[269,4.934]],["name/584",[286,76.084]],["parent/584",[269,4.934]],["name/585",[124,56.625]],["parent/585",[269,4.934]],["name/586",[287,73.571]],["parent/586",[269,4.934]],["name/587",[288,76.084]],["parent/587",[269,4.934]],["name/588",[289,76.084]],["parent/588",[269,4.934]],["name/589",[290,76.084]],["parent/589",[269,4.934]],["name/590",[291,76.084]],["parent/590",[269,4.934]],["name/591",[292,76.084]],["parent/591",[269,4.934]],["name/592",[293,76.084]],["parent/592",[269,4.934]],["name/593",[294,76.084]],["parent/593",[269,4.934]],["name/594",[295,76.084]],["parent/594",[269,4.934]],["name/595",[296,76.084]],["parent/595",[269,4.934]],["name/596",[297,76.084]],["parent/596",[269,4.934]],["name/597",[298,45.639]],["parent/597",[269,4.934]],["name/598",[299,76.084]],["parent/598",[269,4.934]],["name/599",[300,76.084]],["parent/599",[269,4.934]],["name/600",[301,76.084]],["parent/600",[269,4.934]],["name/601",[302,76.084]],["parent/601",[269,4.934]],["name/602",[303,76.084]],["parent/602",[269,4.934]],["name/603",[304,73.571]],["parent/603",[269,4.934]],["name/604",[305,73.571]],["parent/604",[269,4.934]],["name/605",[69,46.344]],["parent/605",[269,4.934]],["name/606",[70,46.344]],["parent/606",[269,4.934]],["name/607",[68,40.948]],["parent/607",[269,4.934]],["name/608",[306,76.084]],["parent/608",[269,4.934]],["name/609",[307,66.099]],["parent/609",[]],["name/610",[231,68.463]],["parent/610",[307,6.522]],["name/611",[308,84.557]],["parent/611",[307,6.522]],["name/612",[309,84.557]],["parent/612",[307,6.522]],["name/613",[310,84.557]],["parent/613",[307,6.522]],["name/614",[311,84.557]],["parent/614",[307,6.522]],["name/615",[312,84.557]],["parent/615",[307,6.522]],["name/616",[7,60.578]],["parent/616",[307,6.522]],["name/617",[111,43.126]],["parent/617",[307,6.522]],["name/618",[313,69.894]],["parent/618",[]],["name/619",[81,69.894]],["parent/619",[313,6.896]],["name/620",[82,69.894]],["parent/620",[313,6.896]],["name/621",[83,69.894]],["parent/621",[313,6.896]],["name/622",[84,76.084]],["parent/622",[313,6.896]],["name/623",[314,73.571]],["parent/623",[]],["name/624",[86,71.565]],["parent/624",[314,7.259]],["name/625",[87,71.565]],["parent/625",[314,7.259]],["name/626",[315,69.894]],["parent/626",[]],["name/627",[111,43.126]],["parent/627",[315,6.896]],["name/628",[231,68.463]],["parent/628",[315,6.896]],["name/629",[0,58.908]],["parent/629",[315,6.896]],["name/630",[316,69.894]],["parent/630",[]],["name/631",[317,71.565]],["parent/631",[316,6.896]],["name/632",[318,79.449]],["parent/632",[316,6.896]],["name/633",[319,76.084]],["parent/633",[316,6.896]],["name/634",[320,41.383]],["parent/634",[]],["name/635",[9,57.042]],["parent/635",[320,4.083]],["name/636",[10,39.376]],["parent/636",[320,4.083]],["name/637",[89,79.449]],["parent/637",[320,4.083]],["name/638",[90,79.449]],["parent/638",[320,4.083]],["name/639",[91,79.449]],["parent/639",[320,4.083]],["name/640",[92,79.449]],["parent/640",[320,4.083]],["name/641",[321,84.557]],["parent/641",[320,4.083]],["name/642",[322,84.557]],["parent/642",[320,4.083]],["name/643",[323,84.557]],["parent/643",[320,4.083]],["name/644",[324,84.557]],["parent/644",[320,4.083]],["name/645",[325,84.557]],["parent/645",[320,4.083]],["name/646",[326,84.557]],["parent/646",[320,4.083]],["name/647",[327,84.557]],["parent/647",[320,4.083]],["name/648",[328,84.557]],["parent/648",[320,4.083]],["name/649",[329,76.084]],["parent/649",[320,4.083]],["name/650",[330,76.084]],["parent/650",[320,4.083]],["name/651",[331,84.557]],["parent/651",[320,4.083]],["name/652",[332,67.211]],["parent/652",[320,4.083]],["name/653",[315,69.894]],["parent/653",[320,4.083]],["name/654",[316,69.894]],["parent/654",[320,4.083]],["name/655",[333,69.894]],["parent/655",[320,4.083]],["name/656",[334,84.557]],["parent/656",[320,4.083]],["name/657",[335,84.557]],["parent/657",[320,4.083]],["name/658",[336,84.557]],["parent/658",[320,4.083]],["name/659",[337,84.557]],["parent/659",[320,4.083]],["name/660",[338,79.449]],["parent/660",[320,4.083]],["name/661",[11,57.932]],["parent/661",[320,4.083]],["name/662",[16,46.64]],["parent/662",[320,4.083]],["name/663",[14,53.8]],["parent/663",[320,4.083]],["name/664",[15,59.434]],["parent/664",[320,4.083]],["name/665",[17,43.782]],["parent/665",[320,4.083]],["name/666",[329,76.084]],["parent/666",[320,4.083]],["name/667",[330,76.084]],["parent/667",[320,4.083]],["name/668",[339,84.557]],["parent/668",[320,4.083]],["name/669",[340,84.557]],["parent/669",[320,4.083]],["name/670",[341,84.557]],["parent/670",[320,4.083]],["name/671",[342,84.557]],["parent/671",[320,4.083]],["name/672",[343,84.557]],["parent/672",[320,4.083]],["name/673",[344,84.557]],["parent/673",[320,4.083]],["name/674",[345,84.557]],["parent/674",[320,4.083]],["name/675",[346,84.557]],["parent/675",[320,4.083]],["name/676",[347,84.557]],["parent/676",[320,4.083]],["name/677",[348,84.557]],["parent/677",[320,4.083]],["name/678",[349,84.557]],["parent/678",[320,4.083]],["name/679",[350,84.557]],["parent/679",[320,4.083]],["name/680",[351,84.557]],["parent/680",[320,4.083]],["name/681",[352,84.557]],["parent/681",[320,4.083]],["name/682",[69,46.344]],["parent/682",[320,4.083]],["name/683",[353,84.557]],["parent/683",[320,4.083]],["name/684",[354,84.557]],["parent/684",[320,4.083]],["name/685",[355,84.557]],["parent/685",[320,4.083]],["name/686",[356,84.557]],["parent/686",[320,4.083]],["name/687",[357,84.557]],["parent/687",[320,4.083]],["name/688",[24,49.196]],["parent/688",[320,4.083]],["name/689",[358,84.557]],["parent/689",[320,4.083]],["name/690",[27,44.364]],["parent/690",[320,4.083]],["name/691",[28,50.218]],["parent/691",[320,4.083]],["name/692",[29,60.578]],["parent/692",[320,4.083]],["name/693",[30,60.578]],["parent/693",[320,4.083]],["name/694",[25,60.578]],["parent/694",[320,4.083]],["name/695",[31,60.578]],["parent/695",[320,4.083]],["name/696",[32,60.578]],["parent/696",[320,4.083]],["name/697",[33,60.578]],["parent/697",[320,4.083]],["name/698",[34,53.202]],["parent/698",[320,4.083]],["name/699",[35,53.202]],["parent/699",[320,4.083]],["name/700",[36,53.202]],["parent/700",[320,4.083]],["name/701",[37,55.841]],["parent/701",[320,4.083]],["name/702",[38,55.47]],["parent/702",[320,4.083]],["name/703",[39,60.578]],["parent/703",[320,4.083]],["name/704",[40,59.434]],["parent/704",[320,4.083]],["name/705",[41,60.578]],["parent/705",[320,4.083]],["name/706",[42,60.578]],["parent/706",[320,4.083]],["name/707",[43,52.369]],["parent/707",[320,4.083]],["name/708",[44,52.369]],["parent/708",[320,4.083]],["name/709",[45,60.578]],["parent/709",[320,4.083]],["name/710",[46,46.792]],["parent/710",[320,4.083]],["name/711",[47,46.792]],["parent/711",[320,4.083]],["name/712",[48,46.792]],["parent/712",[320,4.083]],["name/713",[49,46.792]],["parent/713",[320,4.083]],["name/714",[50,46.792]],["parent/714",[320,4.083]],["name/715",[51,46.792]],["parent/715",[320,4.083]],["name/716",[52,46.792]],["parent/716",[320,4.083]],["name/717",[53,46.792]],["parent/717",[320,4.083]],["name/718",[54,46.792]],["parent/718",[320,4.083]],["name/719",[55,46.792]],["parent/719",[320,4.083]],["name/720",[56,46.792]],["parent/720",[320,4.083]],["name/721",[57,46.792]],["parent/721",[320,4.083]],["name/722",[58,46.792]],["parent/722",[320,4.083]],["name/723",[59,46.792]],["parent/723",[320,4.083]],["name/724",[60,46.792]],["parent/724",[320,4.083]],["name/725",[61,46.792]],["parent/725",[320,4.083]],["name/726",[62,46.792]],["parent/726",[320,4.083]],["name/727",[63,46.792]],["parent/727",[320,4.083]],["name/728",[64,46.792]],["parent/728",[320,4.083]],["name/729",[65,46.491]],["parent/729",[320,4.083]],["name/730",[66,46.491]],["parent/730",[320,4.083]],["name/731",[67,46.792]],["parent/731",[320,4.083]],["name/732",[68,40.948]],["parent/732",[320,4.083]],["name/733",[70,46.344]],["parent/733",[320,4.083]],["name/734",[71,46.792]],["parent/734",[320,4.083]],["name/735",[72,46.056]],["parent/735",[320,4.083]],["name/736",[73,46.64]],["parent/736",[320,4.083]],["name/737",[74,46.792]],["parent/737",[320,4.083]],["name/738",[75,46.792]],["parent/738",[320,4.083]],["name/739",[76,46.792]],["parent/739",[320,4.083]],["name/740",[77,46.64]],["parent/740",[320,4.083]],["name/741",[78,46.199]],["parent/741",[320,4.083]],["name/742",[79,46.199]],["parent/742",[320,4.083]],["name/743",[359,73.571]],["parent/743",[]],["name/744",[360,76.084]],["parent/744",[359,7.259]],["name/745",[98,67.211]],["parent/745",[359,7.259]],["name/746",[0,58.908]],["parent/746",[359,7.259]],["name/747",[361,46.199]],["parent/747",[]],["name/748",[9,57.042]],["parent/748",[361,4.558]],["name/749",[10,39.376]],["parent/749",[361,4.558]],["name/750",[362,79.449]],["parent/750",[361,4.558]],["name/751",[14,53.8]],["parent/751",[361,4.558]],["name/752",[16,46.64]],["parent/752",[361,4.558]],["name/753",[17,43.782]],["parent/753",[361,4.558]],["name/754",[88,45.371]],["parent/754",[361,4.558]],["name/755",[1,49.392]],["parent/755",[361,4.558]],["name/756",[98,67.211]],["parent/756",[363,7.259]],["name/757",[0,58.908]],["parent/757",[363,7.259]],["name/758",[364,73.571]],["parent/758",[363,7.259]],["name/759",[360,76.084]],["parent/759",[363,7.259]],["name/760",[361,46.199]],["parent/760",[361,4.558]],["name/761",[108,69.894]],["parent/761",[361,4.558]],["name/762",[24,49.196]],["parent/762",[361,4.558]],["name/763",[132,53.8]],["parent/763",[361,4.558]],["name/764",[27,44.364]],["parent/764",[361,4.558]],["name/765",[37,55.841]],["parent/765",[361,4.558]],["name/766",[38,55.47]],["parent/766",[361,4.558]],["name/767",[130,54.112]],["parent/767",[361,4.558]],["name/768",[131,54.112]],["parent/768",[361,4.558]],["name/769",[28,50.218]],["parent/769",[361,4.558]],["name/770",[174,53.8]],["parent/770",[361,4.558]],["name/771",[253,61.204]],["parent/771",[361,4.558]],["name/772",[365,65.098]],["parent/772",[361,4.558]],["name/773",[366,65.098]],["parent/773",[361,4.558]],["name/774",[367,64.189]],["parent/774",[361,4.558]],["name/775",[368,65.098]],["parent/775",[361,4.558]],["name/776",[369,65.098]],["parent/776",[361,4.558]],["name/777",[46,46.792]],["parent/777",[361,4.558]],["name/778",[47,46.792]],["parent/778",[361,4.558]],["name/779",[48,46.792]],["parent/779",[361,4.558]],["name/780",[49,46.792]],["parent/780",[361,4.558]],["name/781",[50,46.792]],["parent/781",[361,4.558]],["name/782",[51,46.792]],["parent/782",[361,4.558]],["name/783",[52,46.792]],["parent/783",[361,4.558]],["name/784",[53,46.792]],["parent/784",[361,4.558]],["name/785",[54,46.792]],["parent/785",[361,4.558]],["name/786",[55,46.792]],["parent/786",[361,4.558]],["name/787",[56,46.792]],["parent/787",[361,4.558]],["name/788",[57,46.792]],["parent/788",[361,4.558]],["name/789",[58,46.792]],["parent/789",[361,4.558]],["name/790",[59,46.792]],["parent/790",[361,4.558]],["name/791",[60,46.792]],["parent/791",[361,4.558]],["name/792",[61,46.792]],["parent/792",[361,4.558]],["name/793",[62,46.792]],["parent/793",[361,4.558]],["name/794",[63,46.792]],["parent/794",[361,4.558]],["name/795",[64,46.792]],["parent/795",[361,4.558]],["name/796",[65,46.491]],["parent/796",[361,4.558]],["name/797",[66,46.491]],["parent/797",[361,4.558]],["name/798",[67,46.792]],["parent/798",[361,4.558]],["name/799",[68,40.948]],["parent/799",[361,4.558]],["name/800",[69,46.344]],["parent/800",[361,4.558]],["name/801",[70,46.344]],["parent/801",[361,4.558]],["name/802",[71,46.792]],["parent/802",[361,4.558]],["name/803",[72,46.056]],["parent/803",[361,4.558]],["name/804",[73,46.64]],["parent/804",[361,4.558]],["name/805",[74,46.792]],["parent/805",[361,4.558]],["name/806",[75,46.792]],["parent/806",[361,4.558]],["name/807",[76,46.792]],["parent/807",[361,4.558]],["name/808",[77,46.64]],["parent/808",[361,4.558]],["name/809",[78,46.199]],["parent/809",[361,4.558]],["name/810",[79,46.199]],["parent/810",[361,4.558]],["name/811",[370,40.131]],["parent/811",[]],["name/812",[10,39.376]],["parent/812",[370,3.96]],["name/813",[106,59.99]],["parent/813",[370,3.96]],["name/814",[16,46.64]],["parent/814",[370,3.96]],["name/815",[17,43.782]],["parent/815",[370,3.96]],["name/816",[108,69.894]],["parent/816",[370,3.96]],["name/817",[371,76.084]],["parent/817",[370,3.96]],["name/818",[66,46.491]],["parent/818",[370,3.96]],["name/819",[64,46.792]],["parent/819",[370,3.96]],["name/820",[109,59.434]],["parent/820",[370,3.96]],["name/821",[110,56.225]],["parent/821",[370,3.96]],["name/822",[27,44.364]],["parent/822",[370,3.96]],["name/823",[111,43.126]],["parent/823",[370,3.96]],["name/824",[112,57.042]],["parent/824",[370,3.96]],["name/825",[113,54.768]],["parent/825",[370,3.96]],["name/826",[19,52.639]],["parent/826",[370,3.96]],["name/827",[1,49.392]],["parent/827",[370,3.96]],["name/828",[114,59.99]],["parent/828",[372,6.175]],["name/829",[27,44.364]],["parent/829",[372,6.175]],["name/830",[116,59.99]],["parent/830",[372,6.175]],["name/831",[117,59.99]],["parent/831",[372,6.175]],["name/832",[118,57.042]],["parent/832",[372,6.175]],["name/833",[119,59.99]],["parent/833",[372,6.175]],["name/834",[120,59.99]],["parent/834",[372,6.175]],["name/835",[121,57.477]],["parent/835",[372,6.175]],["name/836",[122,59.99]],["parent/836",[372,6.175]],["name/837",[123,59.99]],["parent/837",[372,6.175]],["name/838",[124,56.625]],["parent/838",[372,6.175]],["name/839",[68,40.948]],["parent/839",[372,6.175]],["name/840",[125,58.408]],["parent/840",[372,6.175]],["name/841",[126,59.99]],["parent/841",[370,3.96]],["name/842",[127,59.99]],["parent/842",[370,3.96]],["name/843",[128,59.434]],["parent/843",[370,3.96]],["name/844",[129,59.99]],["parent/844",[370,3.96]],["name/845",[130,54.112]],["parent/845",[370,3.96]],["name/846",[131,54.112]],["parent/846",[370,3.96]],["name/847",[132,53.8]],["parent/847",[370,3.96]],["name/848",[133,59.99]],["parent/848",[370,3.96]],["name/849",[134,59.99]],["parent/849",[370,3.96]],["name/850",[135,59.99]],["parent/850",[370,3.96]],["name/851",[136,59.99]],["parent/851",[370,3.96]],["name/852",[137,59.434]],["parent/852",[370,3.96]],["name/853",[138,59.99]],["parent/853",[370,3.96]],["name/854",[139,59.99]],["parent/854",[370,3.96]],["name/855",[140,59.99]],["parent/855",[370,3.96]],["name/856",[141,59.99]],["parent/856",[370,3.96]],["name/857",[142,59.99]],["parent/857",[370,3.96]],["name/858",[143,59.99]],["parent/858",[370,3.96]],["name/859",[144,58.908]],["parent/859",[370,3.96]],["name/860",[145,59.434]],["parent/860",[370,3.96]],["name/861",[146,59.434]],["parent/861",[370,3.96]],["name/862",[147,59.434]],["parent/862",[370,3.96]],["name/863",[148,59.434]],["parent/863",[370,3.96]],["name/864",[149,59.99]],["parent/864",[370,3.96]],["name/865",[150,59.99]],["parent/865",[370,3.96]],["name/866",[151,59.99]],["parent/866",[370,3.96]],["name/867",[152,59.99]],["parent/867",[370,3.96]],["name/868",[153,59.99]],["parent/868",[370,3.96]],["name/869",[154,59.99]],["parent/869",[370,3.96]],["name/870",[155,59.99]],["parent/870",[370,3.96]],["name/871",[156,59.99]],["parent/871",[370,3.96]],["name/872",[157,57.932]],["parent/872",[370,3.96]],["name/873",[158,59.99]],["parent/873",[370,3.96]],["name/874",[159,59.99]],["parent/874",[370,3.96]],["name/875",[160,59.99]],["parent/875",[370,3.96]],["name/876",[161,59.99]],["parent/876",[370,3.96]],["name/877",[162,59.99]],["parent/877",[370,3.96]],["name/878",[163,56.225]],["parent/878",[370,3.96]],["name/879",[164,59.434]],["parent/879",[370,3.96]],["name/880",[165,59.434]],["parent/880",[370,3.96]],["name/881",[166,59.99]],["parent/881",[370,3.96]],["name/882",[167,59.99]],["parent/882",[370,3.96]],["name/883",[168,59.99]],["parent/883",[370,3.96]],["name/884",[169,59.99]],["parent/884",[370,3.96]],["name/885",[170,59.99]],["parent/885",[370,3.96]],["name/886",[171,57.042]],["parent/886",[370,3.96]],["name/887",[172,59.434]],["parent/887",[370,3.96]],["name/888",[173,59.434]],["parent/888",[370,3.96]],["name/889",[28,50.218]],["parent/889",[370,3.96]],["name/890",[24,49.196]],["parent/890",[370,3.96]],["name/891",[43,52.369]],["parent/891",[370,3.96]],["name/892",[44,52.369]],["parent/892",[370,3.96]],["name/893",[174,53.8]],["parent/893",[370,3.96]],["name/894",[175,58.908]],["parent/894",[370,3.96]],["name/895",[176,59.434]],["parent/895",[370,3.96]],["name/896",[177,59.434]],["parent/896",[370,3.96]],["name/897",[178,59.434]],["parent/897",[370,3.96]],["name/898",[179,59.434]],["parent/898",[370,3.96]],["name/899",[180,59.434]],["parent/899",[370,3.96]],["name/900",[181,59.434]],["parent/900",[370,3.96]],["name/901",[182,59.434]],["parent/901",[370,3.96]],["name/902",[183,59.434]],["parent/902",[370,3.96]],["name/903",[184,57.932]],["parent/903",[370,3.96]],["name/904",[185,59.434]],["parent/904",[370,3.96]],["name/905",[186,59.434]],["parent/905",[370,3.96]],["name/906",[187,56.625]],["parent/906",[370,3.96]],["name/907",[188,58.908]],["parent/907",[370,3.96]],["name/908",[189,59.434]],["parent/908",[370,3.96]],["name/909",[190,59.434]],["parent/909",[370,3.96]],["name/910",[191,59.434]],["parent/910",[370,3.96]],["name/911",[192,59.434]],["parent/911",[370,3.96]],["name/912",[193,59.434]],["parent/912",[370,3.96]],["name/913",[36,53.202]],["parent/913",[370,3.96]],["name/914",[34,53.202]],["parent/914",[370,3.96]],["name/915",[35,53.202]],["parent/915",[370,3.96]],["name/916",[46,46.792]],["parent/916",[370,3.96]],["name/917",[47,46.792]],["parent/917",[370,3.96]],["name/918",[48,46.792]],["parent/918",[370,3.96]],["name/919",[49,46.792]],["parent/919",[370,3.96]],["name/920",[50,46.792]],["parent/920",[370,3.96]],["name/921",[51,46.792]],["parent/921",[370,3.96]],["name/922",[52,46.792]],["parent/922",[370,3.96]],["name/923",[53,46.792]],["parent/923",[370,3.96]],["name/924",[54,46.792]],["parent/924",[370,3.96]],["name/925",[55,46.792]],["parent/925",[370,3.96]],["name/926",[56,46.792]],["parent/926",[370,3.96]],["name/927",[57,46.792]],["parent/927",[370,3.96]],["name/928",[58,46.792]],["parent/928",[370,3.96]],["name/929",[59,46.792]],["parent/929",[370,3.96]],["name/930",[60,46.792]],["parent/930",[370,3.96]],["name/931",[61,46.792]],["parent/931",[370,3.96]],["name/932",[62,46.792]],["parent/932",[370,3.96]],["name/933",[63,46.792]],["parent/933",[370,3.96]],["name/934",[65,46.491]],["parent/934",[370,3.96]],["name/935",[67,46.792]],["parent/935",[370,3.96]],["name/936",[68,40.948]],["parent/936",[370,3.96]],["name/937",[69,46.344]],["parent/937",[370,3.96]],["name/938",[70,46.344]],["parent/938",[370,3.96]],["name/939",[71,46.792]],["parent/939",[370,3.96]],["name/940",[72,46.056]],["parent/940",[370,3.96]],["name/941",[73,46.64]],["parent/941",[370,3.96]],["name/942",[74,46.792]],["parent/942",[370,3.96]],["name/943",[75,46.792]],["parent/943",[370,3.96]],["name/944",[76,46.792]],["parent/944",[370,3.96]],["name/945",[77,46.64]],["parent/945",[370,3.96]],["name/946",[78,46.199]],["parent/946",[370,3.96]],["name/947",[79,46.199]],["parent/947",[370,3.96]],["name/948",[373,69.894]],["parent/948",[]],["name/949",[374,84.557]],["parent/949",[373,6.896]],["name/950",[263,66.099]],["parent/950",[373,6.896]],["name/951",[245,68.463]],["parent/951",[373,6.896]],["name/952",[375,84.557]],["parent/952",[373,6.896]],["name/953",[376,84.557]],["parent/953",[373,6.896]],["name/954",[377,40.053]],["parent/954",[]],["name/955",[9,57.042]],["parent/955",[377,3.952]],["name/956",[10,39.376]],["parent/956",[377,3.952]],["name/957",[106,59.99]],["parent/957",[377,3.952]],["name/958",[16,46.64]],["parent/958",[377,3.952]],["name/959",[17,43.782]],["parent/959",[377,3.952]],["name/960",[378,68.463]],["parent/960",[377,3.952]],["name/961",[379,84.557]],["parent/961",[377,3.952]],["name/962",[380,84.557]],["parent/962",[377,3.952]],["name/963",[110,56.225]],["parent/963",[377,3.952]],["name/964",[27,44.364]],["parent/964",[377,3.952]],["name/965",[111,43.126]],["parent/965",[377,3.952]],["name/966",[112,57.042]],["parent/966",[377,3.952]],["name/967",[113,54.768]],["parent/967",[377,3.952]],["name/968",[19,52.639]],["parent/968",[377,3.952]],["name/969",[1,49.392]],["parent/969",[377,3.952]],["name/970",[114,59.99]],["parent/970",[381,6.175]],["name/971",[27,44.364]],["parent/971",[381,6.175]],["name/972",[116,59.99]],["parent/972",[381,6.175]],["name/973",[117,59.99]],["parent/973",[381,6.175]],["name/974",[118,57.042]],["parent/974",[381,6.175]],["name/975",[119,59.99]],["parent/975",[381,6.175]],["name/976",[120,59.99]],["parent/976",[381,6.175]],["name/977",[121,57.477]],["parent/977",[381,6.175]],["name/978",[122,59.99]],["parent/978",[381,6.175]],["name/979",[123,59.99]],["parent/979",[381,6.175]],["name/980",[124,56.625]],["parent/980",[381,6.175]],["name/981",[68,40.948]],["parent/981",[381,6.175]],["name/982",[125,58.408]],["parent/982",[381,6.175]],["name/983",[126,59.99]],["parent/983",[377,3.952]],["name/984",[127,59.99]],["parent/984",[377,3.952]],["name/985",[128,59.434]],["parent/985",[377,3.952]],["name/986",[129,59.99]],["parent/986",[377,3.952]],["name/987",[130,54.112]],["parent/987",[377,3.952]],["name/988",[131,54.112]],["parent/988",[377,3.952]],["name/989",[132,53.8]],["parent/989",[377,3.952]],["name/990",[133,59.99]],["parent/990",[377,3.952]],["name/991",[134,59.99]],["parent/991",[377,3.952]],["name/992",[135,59.99]],["parent/992",[377,3.952]],["name/993",[136,59.99]],["parent/993",[377,3.952]],["name/994",[137,59.434]],["parent/994",[377,3.952]],["name/995",[138,59.99]],["parent/995",[377,3.952]],["name/996",[139,59.99]],["parent/996",[377,3.952]],["name/997",[140,59.99]],["parent/997",[377,3.952]],["name/998",[141,59.99]],["parent/998",[377,3.952]],["name/999",[142,59.99]],["parent/999",[377,3.952]],["name/1000",[143,59.99]],["parent/1000",[377,3.952]],["name/1001",[144,58.908]],["parent/1001",[377,3.952]],["name/1002",[145,59.434]],["parent/1002",[377,3.952]],["name/1003",[146,59.434]],["parent/1003",[377,3.952]],["name/1004",[147,59.434]],["parent/1004",[377,3.952]],["name/1005",[148,59.434]],["parent/1005",[377,3.952]],["name/1006",[149,59.99]],["parent/1006",[377,3.952]],["name/1007",[150,59.99]],["parent/1007",[377,3.952]],["name/1008",[151,59.99]],["parent/1008",[377,3.952]],["name/1009",[152,59.99]],["parent/1009",[377,3.952]],["name/1010",[153,59.99]],["parent/1010",[377,3.952]],["name/1011",[154,59.99]],["parent/1011",[377,3.952]],["name/1012",[155,59.99]],["parent/1012",[377,3.952]],["name/1013",[156,59.99]],["parent/1013",[377,3.952]],["name/1014",[157,57.932]],["parent/1014",[377,3.952]],["name/1015",[158,59.99]],["parent/1015",[377,3.952]],["name/1016",[159,59.99]],["parent/1016",[377,3.952]],["name/1017",[160,59.99]],["parent/1017",[377,3.952]],["name/1018",[161,59.99]],["parent/1018",[377,3.952]],["name/1019",[162,59.99]],["parent/1019",[377,3.952]],["name/1020",[163,56.225]],["parent/1020",[377,3.952]],["name/1021",[164,59.434]],["parent/1021",[377,3.952]],["name/1022",[165,59.434]],["parent/1022",[377,3.952]],["name/1023",[166,59.99]],["parent/1023",[377,3.952]],["name/1024",[167,59.99]],["parent/1024",[377,3.952]],["name/1025",[168,59.99]],["parent/1025",[377,3.952]],["name/1026",[169,59.99]],["parent/1026",[377,3.952]],["name/1027",[170,59.99]],["parent/1027",[377,3.952]],["name/1028",[171,57.042]],["parent/1028",[377,3.952]],["name/1029",[172,59.434]],["parent/1029",[377,3.952]],["name/1030",[173,59.434]],["parent/1030",[377,3.952]],["name/1031",[28,50.218]],["parent/1031",[377,3.952]],["name/1032",[24,49.196]],["parent/1032",[377,3.952]],["name/1033",[43,52.369]],["parent/1033",[377,3.952]],["name/1034",[44,52.369]],["parent/1034",[377,3.952]],["name/1035",[174,53.8]],["parent/1035",[377,3.952]],["name/1036",[175,58.908]],["parent/1036",[377,3.952]],["name/1037",[176,59.434]],["parent/1037",[377,3.952]],["name/1038",[177,59.434]],["parent/1038",[377,3.952]],["name/1039",[178,59.434]],["parent/1039",[377,3.952]],["name/1040",[179,59.434]],["parent/1040",[377,3.952]],["name/1041",[180,59.434]],["parent/1041",[377,3.952]],["name/1042",[181,59.434]],["parent/1042",[377,3.952]],["name/1043",[182,59.434]],["parent/1043",[377,3.952]],["name/1044",[183,59.434]],["parent/1044",[377,3.952]],["name/1045",[109,59.434]],["parent/1045",[377,3.952]],["name/1046",[184,57.932]],["parent/1046",[377,3.952]],["name/1047",[185,59.434]],["parent/1047",[377,3.952]],["name/1048",[186,59.434]],["parent/1048",[377,3.952]],["name/1049",[187,56.625]],["parent/1049",[377,3.952]],["name/1050",[188,58.908]],["parent/1050",[377,3.952]],["name/1051",[189,59.434]],["parent/1051",[377,3.952]],["name/1052",[190,59.434]],["parent/1052",[377,3.952]],["name/1053",[191,59.434]],["parent/1053",[377,3.952]],["name/1054",[192,59.434]],["parent/1054",[377,3.952]],["name/1055",[193,59.434]],["parent/1055",[377,3.952]],["name/1056",[36,53.202]],["parent/1056",[377,3.952]],["name/1057",[34,53.202]],["parent/1057",[377,3.952]],["name/1058",[35,53.202]],["parent/1058",[377,3.952]],["name/1059",[46,46.792]],["parent/1059",[377,3.952]],["name/1060",[47,46.792]],["parent/1060",[377,3.952]],["name/1061",[48,46.792]],["parent/1061",[377,3.952]],["name/1062",[49,46.792]],["parent/1062",[377,3.952]],["name/1063",[50,46.792]],["parent/1063",[377,3.952]],["name/1064",[51,46.792]],["parent/1064",[377,3.952]],["name/1065",[52,46.792]],["parent/1065",[377,3.952]],["name/1066",[53,46.792]],["parent/1066",[377,3.952]],["name/1067",[54,46.792]],["parent/1067",[377,3.952]],["name/1068",[55,46.792]],["parent/1068",[377,3.952]],["name/1069",[56,46.792]],["parent/1069",[377,3.952]],["name/1070",[57,46.792]],["parent/1070",[377,3.952]],["name/1071",[58,46.792]],["parent/1071",[377,3.952]],["name/1072",[59,46.792]],["parent/1072",[377,3.952]],["name/1073",[60,46.792]],["parent/1073",[377,3.952]],["name/1074",[61,46.792]],["parent/1074",[377,3.952]],["name/1075",[62,46.792]],["parent/1075",[377,3.952]],["name/1076",[63,46.792]],["parent/1076",[377,3.952]],["name/1077",[64,46.792]],["parent/1077",[377,3.952]],["name/1078",[65,46.491]],["parent/1078",[377,3.952]],["name/1079",[66,46.491]],["parent/1079",[377,3.952]],["name/1080",[67,46.792]],["parent/1080",[377,3.952]],["name/1081",[68,40.948]],["parent/1081",[377,3.952]],["name/1082",[69,46.344]],["parent/1082",[377,3.952]],["name/1083",[70,46.344]],["parent/1083",[377,3.952]],["name/1084",[71,46.792]],["parent/1084",[377,3.952]],["name/1085",[72,46.056]],["parent/1085",[377,3.952]],["name/1086",[73,46.64]],["parent/1086",[377,3.952]],["name/1087",[74,46.792]],["parent/1087",[377,3.952]],["name/1088",[75,46.792]],["parent/1088",[377,3.952]],["name/1089",[76,46.792]],["parent/1089",[377,3.952]],["name/1090",[77,46.64]],["parent/1090",[377,3.952]],["name/1091",[78,46.199]],["parent/1091",[377,3.952]],["name/1092",[79,46.199]],["parent/1092",[377,3.952]],["name/1093",[382,67.211]],["parent/1093",[]],["name/1094",[383,84.557]],["parent/1094",[382,6.632]],["name/1095",[384,79.449]],["parent/1095",[382,6.632]],["name/1096",[364,73.571]],["parent/1096",[382,6.632]],["name/1097",[118,57.042]],["parent/1097",[382,6.632]],["name/1098",[14,53.8]],["parent/1098",[382,6.632]],["name/1099",[385,84.557]],["parent/1099",[382,6.632]],["name/1100",[386,84.557]],["parent/1100",[382,6.632]],["name/1101",[387,73.571]],["parent/1101",[]],["name/1102",[388,84.557]],["parent/1102",[387,7.259]],["name/1103",[389,84.557]],["parent/1103",[387,7.259]],["name/1104",[390,49.796]],["parent/1104",[]],["name/1105",[10,39.376]],["parent/1105",[390,4.913]],["name/1106",[14,53.8]],["parent/1106",[390,4.913]],["name/1107",[15,59.434]],["parent/1107",[390,4.913]],["name/1108",[16,46.64]],["parent/1108",[390,4.913]],["name/1109",[17,43.782]],["parent/1109",[390,4.913]],["name/1110",[19,52.639]],["parent/1110",[390,4.913]],["name/1111",[391,69.894]],["parent/1111",[390,4.913]],["name/1112",[392,73.571]],["parent/1112",[390,4.913]],["name/1113",[393,84.557]],["parent/1113",[390,4.913]],["name/1114",[27,44.364]],["parent/1114",[390,4.913]],["name/1115",[46,46.792]],["parent/1115",[390,4.913]],["name/1116",[47,46.792]],["parent/1116",[390,4.913]],["name/1117",[48,46.792]],["parent/1117",[390,4.913]],["name/1118",[49,46.792]],["parent/1118",[390,4.913]],["name/1119",[50,46.792]],["parent/1119",[390,4.913]],["name/1120",[51,46.792]],["parent/1120",[390,4.913]],["name/1121",[52,46.792]],["parent/1121",[390,4.913]],["name/1122",[53,46.792]],["parent/1122",[390,4.913]],["name/1123",[54,46.792]],["parent/1123",[390,4.913]],["name/1124",[55,46.792]],["parent/1124",[390,4.913]],["name/1125",[56,46.792]],["parent/1125",[390,4.913]],["name/1126",[57,46.792]],["parent/1126",[390,4.913]],["name/1127",[58,46.792]],["parent/1127",[390,4.913]],["name/1128",[59,46.792]],["parent/1128",[390,4.913]],["name/1129",[60,46.792]],["parent/1129",[390,4.913]],["name/1130",[61,46.792]],["parent/1130",[390,4.913]],["name/1131",[62,46.792]],["parent/1131",[390,4.913]],["name/1132",[63,46.792]],["parent/1132",[390,4.913]],["name/1133",[64,46.792]],["parent/1133",[390,4.913]],["name/1134",[65,46.491]],["parent/1134",[390,4.913]],["name/1135",[66,46.491]],["parent/1135",[390,4.913]],["name/1136",[67,46.792]],["parent/1136",[390,4.913]],["name/1137",[68,40.948]],["parent/1137",[390,4.913]],["name/1138",[69,46.344]],["parent/1138",[390,4.913]],["name/1139",[70,46.344]],["parent/1139",[390,4.913]],["name/1140",[71,46.792]],["parent/1140",[390,4.913]],["name/1141",[72,46.056]],["parent/1141",[390,4.913]],["name/1142",[73,46.64]],["parent/1142",[390,4.913]],["name/1143",[74,46.792]],["parent/1143",[390,4.913]],["name/1144",[75,46.792]],["parent/1144",[390,4.913]],["name/1145",[76,46.792]],["parent/1145",[390,4.913]],["name/1146",[77,46.64]],["parent/1146",[390,4.913]],["name/1147",[78,46.199]],["parent/1147",[390,4.913]],["name/1148",[79,46.199]],["parent/1148",[390,4.913]],["name/1149",[394,46.344]],["parent/1149",[]],["name/1150",[10,39.376]],["parent/1150",[394,4.573]],["name/1151",[395,84.557]],["parent/1151",[394,4.573]],["name/1152",[396,79.449]],["parent/1152",[394,4.573]],["name/1153",[11,57.932]],["parent/1153",[394,4.573]],["name/1154",[14,53.8]],["parent/1154",[394,4.573]],["name/1155",[15,59.434]],["parent/1155",[394,4.573]],["name/1156",[16,46.64]],["parent/1156",[394,4.573]],["name/1157",[17,43.782]],["parent/1157",[394,4.573]],["name/1158",[25,60.578]],["parent/1158",[394,4.573]],["name/1159",[397,84.557]],["parent/1159",[394,4.573]],["name/1160",[27,44.364]],["parent/1160",[394,4.573]],["name/1161",[24,49.196]],["parent/1161",[394,4.573]],["name/1162",[28,50.218]],["parent/1162",[394,4.573]],["name/1163",[29,60.578]],["parent/1163",[394,4.573]],["name/1164",[30,60.578]],["parent/1164",[394,4.573]],["name/1165",[31,60.578]],["parent/1165",[394,4.573]],["name/1166",[32,60.578]],["parent/1166",[394,4.573]],["name/1167",[33,60.578]],["parent/1167",[394,4.573]],["name/1168",[34,53.202]],["parent/1168",[394,4.573]],["name/1169",[35,53.202]],["parent/1169",[394,4.573]],["name/1170",[36,53.202]],["parent/1170",[394,4.573]],["name/1171",[37,55.841]],["parent/1171",[394,4.573]],["name/1172",[38,55.47]],["parent/1172",[394,4.573]],["name/1173",[39,60.578]],["parent/1173",[394,4.573]],["name/1174",[40,59.434]],["parent/1174",[394,4.573]],["name/1175",[41,60.578]],["parent/1175",[394,4.573]],["name/1176",[42,60.578]],["parent/1176",[394,4.573]],["name/1177",[43,52.369]],["parent/1177",[394,4.573]],["name/1178",[44,52.369]],["parent/1178",[394,4.573]],["name/1179",[45,60.578]],["parent/1179",[394,4.573]],["name/1180",[46,46.792]],["parent/1180",[394,4.573]],["name/1181",[47,46.792]],["parent/1181",[394,4.573]],["name/1182",[48,46.792]],["parent/1182",[394,4.573]],["name/1183",[49,46.792]],["parent/1183",[394,4.573]],["name/1184",[50,46.792]],["parent/1184",[394,4.573]],["name/1185",[51,46.792]],["parent/1185",[394,4.573]],["name/1186",[52,46.792]],["parent/1186",[394,4.573]],["name/1187",[53,46.792]],["parent/1187",[394,4.573]],["name/1188",[54,46.792]],["parent/1188",[394,4.573]],["name/1189",[55,46.792]],["parent/1189",[394,4.573]],["name/1190",[56,46.792]],["parent/1190",[394,4.573]],["name/1191",[57,46.792]],["parent/1191",[394,4.573]],["name/1192",[58,46.792]],["parent/1192",[394,4.573]],["name/1193",[59,46.792]],["parent/1193",[394,4.573]],["name/1194",[60,46.792]],["parent/1194",[394,4.573]],["name/1195",[61,46.792]],["parent/1195",[394,4.573]],["name/1196",[62,46.792]],["parent/1196",[394,4.573]],["name/1197",[63,46.792]],["parent/1197",[394,4.573]],["name/1198",[64,46.792]],["parent/1198",[394,4.573]],["name/1199",[65,46.491]],["parent/1199",[394,4.573]],["name/1200",[66,46.491]],["parent/1200",[394,4.573]],["name/1201",[67,46.792]],["parent/1201",[394,4.573]],["name/1202",[68,40.948]],["parent/1202",[394,4.573]],["name/1203",[69,46.344]],["parent/1203",[394,4.573]],["name/1204",[70,46.344]],["parent/1204",[394,4.573]],["name/1205",[71,46.792]],["parent/1205",[394,4.573]],["name/1206",[72,46.056]],["parent/1206",[394,4.573]],["name/1207",[73,46.64]],["parent/1207",[394,4.573]],["name/1208",[74,46.792]],["parent/1208",[394,4.573]],["name/1209",[75,46.792]],["parent/1209",[394,4.573]],["name/1210",[76,46.792]],["parent/1210",[394,4.573]],["name/1211",[77,46.64]],["parent/1211",[394,4.573]],["name/1212",[78,46.199]],["parent/1212",[394,4.573]],["name/1213",[79,46.199]],["parent/1213",[394,4.573]],["name/1214",[398,79.449]],["parent/1214",[]],["name/1215",[1,49.392]],["parent/1215",[398,7.839]],["name/1216",[399,51.599]],["parent/1216",[]],["name/1217",[17,43.782]],["parent/1217",[399,5.091]],["name/1218",[400,56.625]],["parent/1218",[399,5.091]],["name/1219",[401,73.571]],["parent/1219",[399,5.091]],["name/1220",[0,58.908]],["parent/1220",[399,5.091]],["name/1221",[402,65.098]],["parent/1221",[399,5.091]],["name/1222",[403,84.557]],["parent/1222",[399,5.091]],["name/1223",[404,84.557]],["parent/1223",[399,5.091]],["name/1224",[405,84.557]],["parent/1224",[399,5.091]],["name/1225",[406,79.449]],["parent/1225",[399,5.091]],["name/1226",[215,71.565]],["parent/1226",[399,5.091]],["name/1227",[407,40.131]],["parent/1227",[399,5.091]],["name/1228",[408,84.557]],["parent/1228",[399,5.091]],["name/1229",[8,44.981]],["parent/1229",[399,5.091]],["name/1230",[409,64.189]],["parent/1230",[399,5.091]],["name/1231",[18,57.477]],["parent/1231",[399,5.091]],["name/1232",[410,63.355]],["parent/1232",[399,5.091]],["name/1233",[411,84.557]],["parent/1233",[399,5.091]],["name/1234",[412,84.557]],["parent/1234",[399,5.091]],["name/1235",[413,84.557]],["parent/1235",[399,5.091]],["name/1236",[414,84.557]],["parent/1236",[399,5.091]],["name/1237",[415,69.894]],["parent/1237",[399,5.091]],["name/1238",[416,84.557]],["parent/1238",[399,5.091]],["name/1239",[417,84.557]],["parent/1239",[399,5.091]],["name/1240",[418,84.557]],["parent/1240",[399,5.091]],["name/1241",[419,76.084]],["parent/1241",[399,5.091]],["name/1242",[420,76.084]],["parent/1242",[399,5.091]],["name/1243",[421,84.557]],["parent/1243",[399,5.091]],["name/1244",[422,84.557]],["parent/1244",[399,5.091]],["name/1245",[362,79.449]],["parent/1245",[399,5.091]],["name/1246",[423,84.557]],["parent/1246",[399,5.091]],["name/1247",[424,84.557]],["parent/1247",[399,5.091]],["name/1248",[425,84.557]],["parent/1248",[399,5.091]],["name/1249",[394,46.344]],["parent/1249",[399,5.091]],["name/1250",[426,79.449]],["parent/1250",[399,5.091]],["name/1251",[427,84.557]],["parent/1251",[399,5.091]],["name/1252",[428,79.449]],["parent/1252",[399,5.091]],["name/1253",[429,84.557]],["parent/1253",[399,5.091]],["name/1254",[430,84.557]],["parent/1254",[399,5.091]],["name/1255",[431,84.557]],["parent/1255",[399,5.091]],["name/1256",[432,73.571]],["parent/1256",[]],["name/1257",[415,69.894]],["parent/1257",[432,7.259]],["name/1258",[433,84.557]],["parent/1258",[432,7.259]],["name/1259",[419,76.084]],["parent/1259",[432,7.259]],["name/1260",[402,65.098]],["parent/1260",[]],["name/1261",[17,43.782]],["parent/1261",[402,6.423]],["name/1262",[406,79.449]],["parent/1262",[402,6.423]],["name/1263",[410,63.355]],["parent/1263",[402,6.423]],["name/1264",[409,64.189]],["parent/1264",[402,6.423]],["name/1265",[18,57.477]],["parent/1265",[402,6.423]],["name/1266",[434,69.894]],["parent/1266",[402,6.423]],["name/1267",[1,49.392]],["parent/1267",[402,6.423]],["name/1268",[435,76.084]],["parent/1268",[]],["name/1269",[215,71.565]],["parent/1269",[435,7.507]],["name/1270",[420,76.084]],["parent/1270",[435,7.507]],["name/1271",[436,76.084]],["parent/1271",[]],["name/1272",[437,46.491]],["parent/1272",[436,7.507]],["name/1273",[361,46.199]],["parent/1273",[436,7.507]],["name/1274",[400,56.625]],["parent/1274",[]],["name/1275",[17,43.782]],["parent/1275",[400,5.587]],["name/1276",[438,48.094]],["parent/1276",[400,5.587]],["name/1277",[439,84.557]],["parent/1277",[400,5.587]],["name/1278",[434,69.894]],["parent/1278",[400,5.587]],["name/1279",[402,65.098]],["parent/1279",[400,5.587]],["name/1280",[440,79.449]],["parent/1280",[400,5.587]],["name/1281",[441,84.557]],["parent/1281",[400,5.587]],["name/1282",[171,57.042]],["parent/1282",[400,5.587]],["name/1283",[442,84.557]],["parent/1283",[400,5.587]],["name/1284",[443,84.557]],["parent/1284",[400,5.587]],["name/1285",[444,79.449]],["parent/1285",[400,5.587]],["name/1286",[445,84.557]],["parent/1286",[400,5.587]],["name/1287",[446,84.557]],["parent/1287",[400,5.587]],["name/1288",[447,84.557]],["parent/1288",[400,5.587]],["name/1289",[448,84.557]],["parent/1289",[400,5.587]],["name/1290",[449,84.557]],["parent/1290",[400,5.587]],["name/1291",[450,84.557]],["parent/1291",[400,5.587]],["name/1292",[451,84.557]],["parent/1292",[400,5.587]],["name/1293",[452,84.557]],["parent/1293",[400,5.587]],["name/1294",[453,84.557]],["parent/1294",[400,5.587]],["name/1295",[454,71.565]],["parent/1295",[]],["name/1296",[438,48.094]],["parent/1296",[454,7.061]],["name/1297",[400,56.625]],["parent/1297",[454,7.061]],["name/1298",[440,79.449]],["parent/1298",[454,7.061]],["name/1299",[455,84.557]],["parent/1299",[454,7.061]],["name/1300",[456,73.571]],["parent/1300",[]],["name/1301",[361,46.199]],["parent/1301",[456,7.259]],["name/1302",[457,84.557]],["parent/1302",[456,7.259]],["name/1303",[437,46.491]],["parent/1303",[456,7.259]],["name/1304",[458,58.408]],["parent/1304",[]],["name/1305",[9,57.042]],["parent/1305",[458,5.763]],["name/1306",[17,43.782]],["parent/1306",[458,5.763]],["name/1307",[459,84.557]],["parent/1307",[458,5.763]],["name/1308",[434,69.894]],["parent/1308",[458,5.763]],["name/1309",[438,48.094]],["parent/1309",[458,5.763]],["name/1310",[400,56.625]],["parent/1310",[458,5.763]],["name/1311",[460,76.084]],["parent/1311",[458,5.763]],["name/1312",[461,62.585]],["parent/1312",[458,5.763]],["name/1313",[462,79.449]],["parent/1313",[458,5.763]],["name/1314",[463,69.894]],["parent/1314",[458,5.763]],["name/1315",[66,46.491]],["parent/1315",[458,5.763]],["name/1316",[464,76.084]],["parent/1316",[458,5.763]],["name/1317",[198,46.64]],["parent/1317",[458,5.763]],["name/1318",[465,47.102]],["parent/1318",[458,5.763]],["name/1319",[215,71.565]],["parent/1319",[458,5.763]],["name/1320",[466,47.102]],["parent/1320",[458,5.763]],["name/1321",[444,79.449]],["parent/1321",[458,5.763]],["name/1322",[467,71.565]],["parent/1322",[]],["name/1323",[468,79.449]],["parent/1323",[467,7.061]],["name/1324",[469,84.557]],["parent/1324",[467,7.061]],["name/1325",[18,57.477]],["parent/1325",[467,7.061]],["name/1326",[470,84.557]],["parent/1326",[467,7.061]],["name/1327",[471,69.894]],["parent/1327",[]],["name/1328",[472,84.557]],["parent/1328",[471,6.896]],["name/1329",[473,84.557]],["parent/1329",[471,6.896]],["name/1330",[304,73.571]],["parent/1330",[471,6.896]],["name/1331",[305,73.571]],["parent/1331",[471,6.896]],["name/1332",[474,76.084]],["parent/1332",[471,6.896]],["name/1333",[475,51.117]],["parent/1333",[]],["name/1334",[10,39.376]],["parent/1334",[475,5.044]],["name/1335",[16,46.64]],["parent/1335",[475,5.044]],["name/1336",[17,43.782]],["parent/1336",[475,5.044]],["name/1337",[46,46.792]],["parent/1337",[475,5.044]],["name/1338",[47,46.792]],["parent/1338",[475,5.044]],["name/1339",[48,46.792]],["parent/1339",[475,5.044]],["name/1340",[49,46.792]],["parent/1340",[475,5.044]],["name/1341",[50,46.792]],["parent/1341",[475,5.044]],["name/1342",[51,46.792]],["parent/1342",[475,5.044]],["name/1343",[52,46.792]],["parent/1343",[475,5.044]],["name/1344",[53,46.792]],["parent/1344",[475,5.044]],["name/1345",[27,44.364]],["parent/1345",[475,5.044]],["name/1346",[54,46.792]],["parent/1346",[475,5.044]],["name/1347",[55,46.792]],["parent/1347",[475,5.044]],["name/1348",[56,46.792]],["parent/1348",[475,5.044]],["name/1349",[57,46.792]],["parent/1349",[475,5.044]],["name/1350",[58,46.792]],["parent/1350",[475,5.044]],["name/1351",[59,46.792]],["parent/1351",[475,5.044]],["name/1352",[60,46.792]],["parent/1352",[475,5.044]],["name/1353",[61,46.792]],["parent/1353",[475,5.044]],["name/1354",[62,46.792]],["parent/1354",[475,5.044]],["name/1355",[63,46.792]],["parent/1355",[475,5.044]],["name/1356",[64,46.792]],["parent/1356",[475,5.044]],["name/1357",[65,46.491]],["parent/1357",[475,5.044]],["name/1358",[66,46.491]],["parent/1358",[475,5.044]],["name/1359",[67,46.792]],["parent/1359",[475,5.044]],["name/1360",[68,40.948]],["parent/1360",[475,5.044]],["name/1361",[69,46.344]],["parent/1361",[475,5.044]],["name/1362",[70,46.344]],["parent/1362",[475,5.044]],["name/1363",[71,46.792]],["parent/1363",[475,5.044]],["name/1364",[72,46.056]],["parent/1364",[475,5.044]],["name/1365",[73,46.64]],["parent/1365",[475,5.044]],["name/1366",[74,46.792]],["parent/1366",[475,5.044]],["name/1367",[75,46.792]],["parent/1367",[475,5.044]],["name/1368",[76,46.792]],["parent/1368",[475,5.044]],["name/1369",[77,46.64]],["parent/1369",[475,5.044]],["name/1370",[78,46.199]],["parent/1370",[475,5.044]],["name/1371",[79,46.199]],["parent/1371",[475,5.044]],["name/1372",[476,69.894]],["parent/1372",[]],["name/1373",[477,41.383]],["parent/1373",[476,6.896]],["name/1374",[1,49.392]],["parent/1374",[476,6.896]],["name/1375",[478,73.571]],["parent/1375",[479,6.896]],["name/1376",[480,62.585]],["parent/1376",[476,6.896]],["name/1377",[1,49.392]],["parent/1377",[476,6.896]],["name/1378",[481,84.557]],["parent/1378",[479,6.896]],["name/1379",[482,84.557]],["parent/1379",[479,6.896]],["name/1380",[7,60.578]],["parent/1380",[479,6.896]],["name/1381",[263,66.099]],["parent/1381",[479,6.896]],["name/1382",[483,84.557]],["parent/1382",[479,6.896]],["name/1383",[68,40.948]],["parent/1383",[476,6.896]],["name/1384",[438,48.094]],["parent/1384",[]],["name/1385",[9,57.042]],["parent/1385",[438,4.745]],["name/1386",[16,46.64]],["parent/1386",[438,4.745]],["name/1387",[484,84.557]],["parent/1387",[438,4.745]],["name/1388",[17,43.782]],["parent/1388",[438,4.745]],["name/1389",[171,57.042]],["parent/1389",[438,4.745]],["name/1390",[463,69.894]],["parent/1390",[438,4.745]],["name/1391",[485,84.557]],["parent/1391",[438,4.745]],["name/1392",[65,46.491]],["parent/1392",[438,4.745]],["name/1393",[66,46.491]],["parent/1393",[438,4.745]],["name/1394",[130,54.112]],["parent/1394",[438,4.745]],["name/1395",[486,84.557]],["parent/1395",[438,4.745]],["name/1396",[477,41.383]],["parent/1396",[438,4.745]],["name/1397",[487,41.653]],["parent/1397",[438,4.745]],["name/1398",[488,36.545]],["parent/1398",[438,4.745]],["name/1399",[489,40.131]],["parent/1399",[438,4.745]],["name/1400",[490,40.131]],["parent/1400",[438,4.745]],["name/1401",[491,38.879]],["parent/1401",[438,4.745]],["name/1402",[492,39.822]],["parent/1402",[438,4.745]],["name/1403",[105,40.053]],["parent/1403",[438,4.745]],["name/1404",[370,40.131]],["parent/1404",[438,4.745]],["name/1405",[493,40.289]],["parent/1405",[438,4.745]],["name/1406",[494,40.289]],["parent/1406",[438,4.745]],["name/1407",[495,38.21]],["parent/1407",[438,4.745]],["name/1408",[496,36.436]],["parent/1408",[438,4.745]],["name/1409",[497,45.915]],["parent/1409",[438,4.745]],["name/1410",[8,44.981]],["parent/1410",[438,4.745]],["name/1411",[88,45.371]],["parent/1411",[438,4.745]],["name/1412",[320,41.383]],["parent/1412",[438,4.745]],["name/1413",[102,45.915]],["parent/1413",[438,4.745]],["name/1414",[498,44.981]],["parent/1414",[438,4.745]],["name/1415",[499,40.053]],["parent/1415",[438,4.745]],["name/1416",[500,84.557]],["parent/1416",[438,4.745]],["name/1417",[501,45.639]],["parent/1417",[438,4.745]],["name/1418",[502,54.435]],["parent/1418",[438,4.745]],["name/1419",[503,60.578]],["parent/1419",[438,4.745]],["name/1420",[504,49.592]],["parent/1420",[438,4.745]],["name/1421",[466,47.102]],["parent/1421",[438,4.745]],["name/1422",[505,49.004]],["parent/1422",[438,4.745]],["name/1423",[506,56.225]],["parent/1423",[438,4.745]],["name/1424",[465,47.102]],["parent/1424",[438,4.745]],["name/1425",[198,46.64]],["parent/1425",[438,4.745]],["name/1426",[390,49.796]],["parent/1426",[438,4.745]],["name/1427",[507,49.392]],["parent/1427",[438,4.745]],["name/1428",[508,49.196]],["parent/1428",[438,4.745]],["name/1429",[509,50.005]],["parent/1429",[438,4.745]],["name/1430",[510,48.63]],["parent/1430",[438,4.745]],["name/1431",[511,50.218]],["parent/1431",[438,4.745]],["name/1432",[458,58.408]],["parent/1432",[438,4.745]],["name/1433",[512,47.922]],["parent/1433",[438,4.745]],["name/1434",[513,46.64]],["parent/1434",[438,4.745]],["name/1435",[27,44.364]],["parent/1435",[438,4.745]],["name/1436",[514,40.369]],["parent/1436",[]],["name/1437",[515,84.557]],["parent/1437",[514,3.983]],["name/1438",[8,44.981]],["parent/1438",[514,3.983]],["name/1439",[88,45.371]],["parent/1439",[514,3.983]],["name/1440",[102,45.915]],["parent/1440",[514,3.983]],["name/1441",[516,47.102]],["parent/1441",[514,3.983]],["name/1442",[105,40.053]],["parent/1442",[514,3.983]],["name/1443",[198,46.64]],["parent/1443",[514,3.983]],["name/1444",[233,45.915]],["parent/1444",[514,3.983]],["name/1445",[248,58.908]],["parent/1445",[514,3.983]],["name/1446",[260,63.355]],["parent/1446",[514,3.983]],["name/1447",[269,50.005]],["parent/1447",[514,3.983]],["name/1448",[320,41.383]],["parent/1448",[514,3.983]],["name/1449",[361,46.199]],["parent/1449",[514,3.983]],["name/1450",[370,40.131]],["parent/1450",[514,3.983]],["name/1451",[377,40.053]],["parent/1451",[514,3.983]],["name/1452",[390,49.796]],["parent/1452",[514,3.983]],["name/1453",[394,46.344]],["parent/1453",[514,3.983]],["name/1454",[458,58.408]],["parent/1454",[514,3.983]],["name/1455",[475,51.117]],["parent/1455",[514,3.983]],["name/1456",[438,48.094]],["parent/1456",[514,3.983]],["name/1457",[68,40.948]],["parent/1457",[514,3.983]],["name/1458",[506,56.225]],["parent/1458",[514,3.983]],["name/1459",[517,54.112]],["parent/1459",[514,3.983]],["name/1460",[518,46.199]],["parent/1460",[514,3.983]],["name/1461",[491,38.879]],["parent/1461",[514,3.983]],["name/1462",[111,43.126]],["parent/1462",[514,3.983]],["name/1463",[489,40.131]],["parent/1463",[514,3.983]],["name/1464",[496,36.436]],["parent/1464",[514,3.983]],["name/1465",[497,45.915]],["parent/1465",[514,3.983]],["name/1466",[519,38.275]],["parent/1466",[514,3.983]],["name/1467",[520,67.211]],["parent/1467",[514,3.983]],["name/1468",[521,46.344]],["parent/1468",[514,3.983]],["name/1469",[494,40.289]],["parent/1469",[514,3.983]],["name/1470",[522,47.102]],["parent/1470",[514,3.983]],["name/1471",[503,60.578]],["parent/1471",[514,3.983]],["name/1472",[504,49.592]],["parent/1472",[514,3.983]],["name/1473",[523,55.841]],["parent/1473",[514,3.983]],["name/1474",[407,40.131]],["parent/1474",[514,3.983]],["name/1475",[524,39.671]],["parent/1475",[514,3.983]],["name/1476",[513,46.64]],["parent/1476",[514,3.983]],["name/1477",[498,44.981]],["parent/1477",[514,3.983]],["name/1478",[525,46.792]],["parent/1478",[514,3.983]],["name/1479",[461,62.585]],["parent/1479",[514,3.983]],["name/1480",[512,47.922]],["parent/1480",[514,3.983]],["name/1481",[526,61.204]],["parent/1481",[514,3.983]],["name/1482",[527,51.355]],["parent/1482",[514,3.983]],["name/1483",[480,62.585]],["parent/1483",[514,3.983]],["name/1484",[490,40.131]],["parent/1484",[514,3.983]],["name/1485",[528,47.102]],["parent/1485",[514,3.983]],["name/1486",[477,41.383]],["parent/1486",[514,3.983]],["name/1487",[505,49.004]],["parent/1487",[514,3.983]],["name/1488",[529,49.592]],["parent/1488",[514,3.983]],["name/1489",[508,49.196]],["parent/1489",[514,3.983]],["name/1490",[530,48.27]],["parent/1490",[514,3.983]],["name/1491",[488,36.545]],["parent/1491",[514,3.983]],["name/1492",[531,47.422]],["parent/1492",[514,3.983]],["name/1493",[532,47.586]],["parent/1493",[514,3.983]],["name/1494",[507,49.392]],["parent/1494",[514,3.983]],["name/1495",[437,46.491]],["parent/1495",[514,3.983]],["name/1496",[501,45.639]],["parent/1496",[514,3.983]],["name/1497",[298,45.639]],["parent/1497",[514,3.983]],["name/1498",[533,47.922]],["parent/1498",[514,3.983]],["name/1499",[511,50.218]],["parent/1499",[514,3.983]],["name/1500",[495,38.21]],["parent/1500",[514,3.983]],["name/1501",[534,48.448]],["parent/1501",[514,3.983]],["name/1502",[487,41.653]],["parent/1502",[514,3.983]],["name/1503",[535,49.196]],["parent/1503",[514,3.983]],["name/1504",[510,48.63]],["parent/1504",[514,3.983]],["name/1505",[499,40.053]],["parent/1505",[514,3.983]],["name/1506",[536,59.99]],["parent/1506",[514,3.983]],["name/1507",[492,39.822]],["parent/1507",[514,3.983]],["name/1508",[502,54.435]],["parent/1508",[514,3.983]],["name/1509",[537,46.792]],["parent/1509",[514,3.983]],["name/1510",[493,40.289]],["parent/1510",[514,3.983]],["name/1511",[538,46.64]],["parent/1511",[514,3.983]],["name/1512",[539,66.099]],["parent/1512",[514,3.983]],["name/1513",[465,47.102]],["parent/1513",[514,3.983]],["name/1514",[540,46.344]],["parent/1514",[514,3.983]],["name/1515",[509,50.005]],["parent/1515",[514,3.983]],["name/1516",[466,47.102]],["parent/1516",[514,3.983]],["name/1517",[541,47.922]],["parent/1517",[514,3.983]],["name/1518",[80,69.894]],["parent/1518",[514,3.983]],["name/1519",[85,69.894]],["parent/1519",[514,3.983]],["name/1520",[313,69.894]],["parent/1520",[514,3.983]],["name/1521",[314,73.571]],["parent/1521",[514,3.983]],["name/1522",[315,69.894]],["parent/1522",[514,3.983]],["name/1523",[316,69.894]],["parent/1523",[514,3.983]],["name/1524",[387,73.571]],["parent/1524",[514,3.983]],["name/1525",[79,46.199]],["parent/1525",[514,3.983]],["name/1526",[78,46.199]],["parent/1526",[514,3.983]],["name/1527",[542,68.463]],["parent/1527",[514,3.983]],["name/1528",[543,73.571]],["parent/1528",[514,3.983]],["name/1529",[544,71.565]],["parent/1529",[514,3.983]],["name/1530",[545,66.099]],["parent/1530",[514,3.983]],["name/1531",[546,66.099]],["parent/1531",[514,3.983]],["name/1532",[547,68.463]],["parent/1532",[514,3.983]],["name/1533",[548,73.571]],["parent/1533",[514,3.983]],["name/1534",[549,69.894]],["parent/1534",[514,3.983]],["name/1535",[550,71.565]],["parent/1535",[514,3.983]],["name/1536",[551,84.557]],["parent/1536",[514,3.983]],["name/1537",[552,84.557]],["parent/1537",[514,3.983]],["name/1538",[553,84.557]],["parent/1538",[514,3.983]],["name/1539",[554,84.557]],["parent/1539",[514,3.983]],["name/1540",[555,84.557]],["parent/1540",[514,3.983]],["name/1541",[556,84.557]],["parent/1541",[514,3.983]],["name/1542",[557,84.557]],["parent/1542",[514,3.983]],["name/1543",[558,73.571]],["parent/1543",[514,3.983]],["name/1544",[559,84.557]],["parent/1544",[514,3.983]],["name/1545",[560,84.557]],["parent/1545",[514,3.983]],["name/1546",[561,84.557]],["parent/1546",[514,3.983]],["name/1547",[562,84.557]],["parent/1547",[514,3.983]],["name/1548",[563,84.557]],["parent/1548",[514,3.983]],["name/1549",[564,84.557]],["parent/1549",[514,3.983]],["name/1550",[565,84.557]],["parent/1550",[514,3.983]],["name/1551",[566,84.557]],["parent/1551",[514,3.983]],["name/1552",[521,46.344]],["parent/1552",[514,3.983]],["name/1553",[567,84.557]],["parent/1553",[514,3.983]],["name/1554",[568,84.557]],["parent/1554",[514,3.983]],["name/1555",[569,84.557]],["parent/1555",[514,3.983]],["name/1556",[570,84.557]],["parent/1556",[514,3.983]],["name/1557",[571,84.557]],["parent/1557",[514,3.983]],["name/1558",[17,43.782]],["parent/1558",[514,3.983]],["name/1559",[72,46.056]],["parent/1559",[]],["name/1560",[572,79.449]],["parent/1560",[72,4.544]],["name/1561",[573,79.449]],["parent/1561",[72,4.544]],["name/1562",[574,84.557]],["parent/1562",[72,4.544]],["name/1563",[575,79.449]],["parent/1563",[72,4.544]],["name/1564",[576,79.449]],["parent/1564",[]],["name/1565",[1,49.392]],["parent/1565",[576,7.839]],["name/1566",[577,84.557]],["parent/1566",[578,7.839]],["name/1567",[333,69.894]],["parent/1567",[578,7.839]],["name/1568",[579,71.565]],["parent/1568",[]],["name/1569",[332,67.211]],["parent/1569",[579,7.061]],["name/1570",[580,84.557]],["parent/1570",[579,7.061]],["name/1571",[558,73.571]],["parent/1571",[579,7.061]],["name/1572",[581,84.557]],["parent/1572",[579,7.061]],["name/1573",[582,63.355]],["parent/1573",[]],["name/1574",[583,76.084]],["parent/1574",[582,6.251]],["name/1575",[584,84.557]],["parent/1575",[582,6.251]],["name/1576",[477,41.383]],["parent/1576",[582,6.251]],["name/1577",[8,44.981]],["parent/1577",[582,6.251]],["name/1578",[361,46.199]],["parent/1578",[582,6.251]],["name/1579",[512,47.922]],["parent/1579",[582,6.251]],["name/1580",[585,84.557]],["parent/1580",[582,6.251]],["name/1581",[102,45.915]],["parent/1581",[582,6.251]],["name/1582",[538,46.64]],["parent/1582",[582,6.251]],["name/1583",[524,39.671]],["parent/1583",[582,6.251]],["name/1584",[332,67.211]],["parent/1584",[582,6.251]],["name/1585",[586,65.098]],["parent/1585",[]],["name/1586",[587,79.449]],["parent/1586",[586,6.423]],["name/1587",[588,79.449]],["parent/1587",[586,6.423]],["name/1588",[589,84.557]],["parent/1588",[586,6.423]],["name/1589",[590,84.557]],["parent/1589",[586,6.423]],["name/1590",[591,79.449]],["parent/1590",[586,6.423]],["name/1591",[592,84.557]],["parent/1591",[586,6.423]],["name/1592",[593,84.557]],["parent/1592",[586,6.423]],["name/1593",[594,84.557]],["parent/1593",[586,6.423]],["name/1594",[595,84.557]],["parent/1594",[586,6.423]],["name/1595",[79,46.199]],["parent/1595",[]],["name/1596",[596,79.449]],["parent/1596",[79,4.558]],["name/1597",[597,79.449]],["parent/1597",[79,4.558]],["name/1598",[78,46.199]],["parent/1598",[]],["name/1599",[596,79.449]],["parent/1599",[78,4.558]],["name/1600",[598,79.449]],["parent/1600",[78,4.558]],["name/1601",[68,40.948]],["parent/1601",[]],["name/1602",[599,84.557]],["parent/1602",[68,4.04]],["name/1603",[600,84.557]],["parent/1603",[68,4.04]],["name/1604",[573,79.449]],["parent/1604",[68,4.04]],["name/1605",[601,84.557]],["parent/1605",[68,4.04]],["name/1606",[602,84.557]],["parent/1606",[68,4.04]],["name/1607",[603,84.557]],["parent/1607",[68,4.04]],["name/1608",[604,84.557]],["parent/1608",[68,4.04]],["name/1609",[605,84.557]],["parent/1609",[68,4.04]],["name/1610",[606,84.557]],["parent/1610",[68,4.04]],["name/1611",[607,84.557]],["parent/1611",[68,4.04]],["name/1612",[608,84.557]],["parent/1612",[68,4.04]],["name/1613",[609,84.557]],["parent/1613",[68,4.04]],["name/1614",[610,84.557]],["parent/1614",[68,4.04]],["name/1615",[611,84.557]],["parent/1615",[68,4.04]],["name/1616",[612,84.557]],["parent/1616",[68,4.04]],["name/1617",[613,84.557]],["parent/1617",[68,4.04]],["name/1618",[614,84.557]],["parent/1618",[68,4.04]],["name/1619",[615,84.557]],["parent/1619",[68,4.04]],["name/1620",[616,84.557]],["parent/1620",[68,4.04]],["name/1621",[163,56.225]],["parent/1621",[68,4.04]],["name/1622",[617,84.557]],["parent/1622",[68,4.04]],["name/1623",[618,84.557]],["parent/1623",[68,4.04]],["name/1624",[619,84.557]],["parent/1624",[68,4.04]],["name/1625",[620,79.449]],["parent/1625",[68,4.04]],["name/1626",[621,79.449]],["parent/1626",[68,4.04]],["name/1627",[622,84.557]],["parent/1627",[68,4.04]],["name/1628",[623,79.449]],["parent/1628",[68,4.04]],["name/1629",[624,73.571]],["parent/1629",[]],["name/1630",[625,79.449]],["parent/1630",[624,7.259]],["name/1631",[626,79.449]],["parent/1631",[624,7.259]],["name/1632",[627,79.449]],["parent/1632",[624,7.259]],["name/1633",[628,71.565]],["parent/1633",[]],["name/1634",[629,84.557]],["parent/1634",[628,7.061]],["name/1635",[477,41.383]],["parent/1635",[628,7.061]],["name/1636",[630,84.557]],["parent/1636",[628,7.061]],["name/1637",[631,84.557]],["parent/1637",[628,7.061]],["name/1638",[632,71.565]],["parent/1638",[]],["name/1639",[633,84.557]],["parent/1639",[632,7.061]],["name/1640",[634,79.449]],["parent/1640",[632,7.061]],["name/1641",[635,79.449]],["parent/1641",[632,7.061]],["name/1642",[636,79.449]],["parent/1642",[632,7.061]],["name/1643",[637,73.571]],["parent/1643",[]],["name/1644",[634,79.449]],["parent/1644",[637,7.259]],["name/1645",[635,79.449]],["parent/1645",[637,7.259]],["name/1646",[636,79.449]],["parent/1646",[637,7.259]],["name/1647",[506,56.225]],["parent/1647",[]],["name/1648",[9,57.042]],["parent/1648",[506,5.548]],["name/1649",[638,84.557]],["parent/1649",[506,5.548]],["name/1650",[639,84.557]],["parent/1650",[506,5.548]],["name/1651",[640,84.557]],["parent/1651",[506,5.548]],["name/1652",[641,84.557]],["parent/1652",[506,5.548]],["name/1653",[642,84.557]],["parent/1653",[506,5.548]],["name/1654",[643,79.449]],["parent/1654",[506,5.548]],["name/1655",[17,43.782]],["parent/1655",[506,5.548]],["name/1656",[644,84.557]],["parent/1656",[506,5.548]],["name/1657",[645,84.557]],["parent/1657",[506,5.548]],["name/1658",[646,84.557]],["parent/1658",[506,5.548]],["name/1659",[647,84.557]],["parent/1659",[506,5.548]],["name/1660",[648,84.557]],["parent/1660",[506,5.548]],["name/1661",[649,84.557]],["parent/1661",[506,5.548]],["name/1662",[110,56.225]],["parent/1662",[506,5.548]],["name/1663",[650,84.557]],["parent/1663",[506,5.548]],["name/1664",[651,84.557]],["parent/1664",[506,5.548]],["name/1665",[187,56.625]],["parent/1665",[506,5.548]],["name/1666",[652,84.557]],["parent/1666",[506,5.548]],["name/1667",[11,57.932]],["parent/1667",[506,5.548]],["name/1668",[653,84.557]],["parent/1668",[506,5.548]],["name/1669",[147,59.434]],["parent/1669",[506,5.548]],["name/1670",[517,54.112]],["parent/1670",[]],["name/1671",[10,39.376]],["parent/1671",[517,5.339]],["name/1672",[654,84.557]],["parent/1672",[517,5.339]],["name/1673",[655,84.557]],["parent/1673",[517,5.339]],["name/1674",[656,84.557]],["parent/1674",[517,5.339]],["name/1675",[17,43.782]],["parent/1675",[517,5.339]],["name/1676",[657,84.557]],["parent/1676",[517,5.339]],["name/1677",[658,84.557]],["parent/1677",[517,5.339]],["name/1678",[462,79.449]],["parent/1678",[517,5.339]],["name/1679",[659,79.449]],["parent/1679",[517,5.339]],["name/1680",[660,84.557]],["parent/1680",[517,5.339]],["name/1681",[278,73.571]],["parent/1681",[517,5.339]],["name/1682",[661,84.557]],["parent/1682",[517,5.339]],["name/1683",[662,84.557]],["parent/1683",[517,5.339]],["name/1684",[663,84.557]],["parent/1684",[517,5.339]],["name/1685",[428,79.449]],["parent/1685",[517,5.339]],["name/1686",[664,84.557]],["parent/1686",[517,5.339]],["name/1687",[665,84.557]],["parent/1687",[517,5.339]],["name/1688",[666,84.557]],["parent/1688",[517,5.339]],["name/1689",[667,84.557]],["parent/1689",[517,5.339]],["name/1690",[258,79.449]],["parent/1690",[517,5.339]],["name/1691",[249,79.449]],["parent/1691",[517,5.339]],["name/1692",[668,84.557]],["parent/1692",[517,5.339]],["name/1693",[669,84.557]],["parent/1693",[517,5.339]],["name/1694",[670,84.557]],["parent/1694",[517,5.339]],["name/1695",[623,79.449]],["parent/1695",[517,5.339]],["name/1696",[671,84.557]],["parent/1696",[517,5.339]],["name/1697",[672,84.557]],["parent/1697",[517,5.339]],["name/1698",[464,76.084]],["parent/1698",[517,5.339]],["name/1699",[518,46.199]],["parent/1699",[]],["name/1700",[10,39.376]],["parent/1700",[518,4.558]],["name/1701",[16,46.64]],["parent/1701",[518,4.558]],["name/1702",[11,57.932]],["parent/1702",[518,4.558]],["name/1703",[103,79.449]],["parent/1703",[518,4.558]],["name/1704",[14,53.8]],["parent/1704",[518,4.558]],["name/1705",[15,59.434]],["parent/1705",[518,4.558]],["name/1706",[17,43.782]],["parent/1706",[518,4.558]],["name/1707",[673,84.557]],["parent/1707",[518,4.558]],["name/1708",[674,84.557]],["parent/1708",[518,4.558]],["name/1709",[675,79.449]],["parent/1709",[518,4.558]],["name/1710",[676,79.449]],["parent/1710",[518,4.558]],["name/1711",[27,44.364]],["parent/1711",[518,4.558]],["name/1712",[24,49.196]],["parent/1712",[518,4.558]],["name/1713",[28,50.218]],["parent/1713",[518,4.558]],["name/1714",[29,60.578]],["parent/1714",[518,4.558]],["name/1715",[30,60.578]],["parent/1715",[518,4.558]],["name/1716",[25,60.578]],["parent/1716",[518,4.558]],["name/1717",[31,60.578]],["parent/1717",[518,4.558]],["name/1718",[32,60.578]],["parent/1718",[518,4.558]],["name/1719",[33,60.578]],["parent/1719",[518,4.558]],["name/1720",[34,53.202]],["parent/1720",[518,4.558]],["name/1721",[35,53.202]],["parent/1721",[518,4.558]],["name/1722",[36,53.202]],["parent/1722",[518,4.558]],["name/1723",[37,55.841]],["parent/1723",[518,4.558]],["name/1724",[38,55.47]],["parent/1724",[518,4.558]],["name/1725",[39,60.578]],["parent/1725",[518,4.558]],["name/1726",[40,59.434]],["parent/1726",[518,4.558]],["name/1727",[41,60.578]],["parent/1727",[518,4.558]],["name/1728",[42,60.578]],["parent/1728",[518,4.558]],["name/1729",[43,52.369]],["parent/1729",[518,4.558]],["name/1730",[44,52.369]],["parent/1730",[518,4.558]],["name/1731",[45,60.578]],["parent/1731",[518,4.558]],["name/1732",[46,46.792]],["parent/1732",[518,4.558]],["name/1733",[47,46.792]],["parent/1733",[518,4.558]],["name/1734",[48,46.792]],["parent/1734",[518,4.558]],["name/1735",[49,46.792]],["parent/1735",[518,4.558]],["name/1736",[50,46.792]],["parent/1736",[518,4.558]],["name/1737",[51,46.792]],["parent/1737",[518,4.558]],["name/1738",[52,46.792]],["parent/1738",[518,4.558]],["name/1739",[53,46.792]],["parent/1739",[518,4.558]],["name/1740",[54,46.792]],["parent/1740",[518,4.558]],["name/1741",[55,46.792]],["parent/1741",[518,4.558]],["name/1742",[56,46.792]],["parent/1742",[518,4.558]],["name/1743",[57,46.792]],["parent/1743",[518,4.558]],["name/1744",[58,46.792]],["parent/1744",[518,4.558]],["name/1745",[59,46.792]],["parent/1745",[518,4.558]],["name/1746",[60,46.792]],["parent/1746",[518,4.558]],["name/1747",[61,46.792]],["parent/1747",[518,4.558]],["name/1748",[62,46.792]],["parent/1748",[518,4.558]],["name/1749",[63,46.792]],["parent/1749",[518,4.558]],["name/1750",[64,46.792]],["parent/1750",[518,4.558]],["name/1751",[65,46.491]],["parent/1751",[518,4.558]],["name/1752",[66,46.491]],["parent/1752",[518,4.558]],["name/1753",[67,46.792]],["parent/1753",[518,4.558]],["name/1754",[68,40.948]],["parent/1754",[518,4.558]],["name/1755",[69,46.344]],["parent/1755",[518,4.558]],["name/1756",[70,46.344]],["parent/1756",[518,4.558]],["name/1757",[71,46.792]],["parent/1757",[518,4.558]],["name/1758",[72,46.056]],["parent/1758",[518,4.558]],["name/1759",[73,46.64]],["parent/1759",[518,4.558]],["name/1760",[74,46.792]],["parent/1760",[518,4.558]],["name/1761",[75,46.792]],["parent/1761",[518,4.558]],["name/1762",[76,46.792]],["parent/1762",[518,4.558]],["name/1763",[77,46.64]],["parent/1763",[518,4.558]],["name/1764",[78,46.199]],["parent/1764",[518,4.558]],["name/1765",[79,46.199]],["parent/1765",[518,4.558]],["name/1766",[491,38.879]],["parent/1766",[]],["name/1767",[10,39.376]],["parent/1767",[491,3.836]],["name/1768",[106,59.99]],["parent/1768",[491,3.836]],["name/1769",[16,46.64]],["parent/1769",[491,3.836]],["name/1770",[17,43.782]],["parent/1770",[491,3.836]],["name/1771",[128,59.434]],["parent/1771",[491,3.836]],["name/1772",[132,53.8]],["parent/1772",[491,3.836]],["name/1773",[109,59.434]],["parent/1773",[491,3.836]],["name/1774",[110,56.225]],["parent/1774",[491,3.836]],["name/1775",[27,44.364]],["parent/1775",[491,3.836]],["name/1776",[677,64.189]],["parent/1776",[491,3.836]],["name/1777",[437,46.491]],["parent/1777",[491,3.836]],["name/1778",[678,69.894]],["parent/1778",[491,3.836]],["name/1779",[679,69.894]],["parent/1779",[491,3.836]],["name/1780",[680,69.894]],["parent/1780",[491,3.836]],["name/1781",[681,69.894]],["parent/1781",[491,3.836]],["name/1782",[682,69.894]],["parent/1782",[491,3.836]],["name/1783",[683,69.894]],["parent/1783",[491,3.836]],["name/1784",[684,69.894]],["parent/1784",[491,3.836]],["name/1785",[218,68.463]],["parent/1785",[491,3.836]],["name/1786",[685,69.894]],["parent/1786",[491,3.836]],["name/1787",[165,59.434]],["parent/1787",[491,3.836]],["name/1788",[686,69.894]],["parent/1788",[491,3.836]],["name/1789",[687,69.894]],["parent/1789",[491,3.836]],["name/1790",[688,69.894]],["parent/1790",[491,3.836]],["name/1791",[689,69.894]],["parent/1791",[491,3.836]],["name/1792",[690,69.894]],["parent/1792",[491,3.836]],["name/1793",[166,59.99]],["parent/1793",[491,3.836]],["name/1794",[144,58.908]],["parent/1794",[491,3.836]],["name/1795",[691,67.211]],["parent/1795",[491,3.836]],["name/1796",[692,69.894]],["parent/1796",[491,3.836]],["name/1797",[187,56.625]],["parent/1797",[491,3.836]],["name/1798",[693,69.894]],["parent/1798",[491,3.836]],["name/1799",[111,43.126]],["parent/1799",[491,3.836]],["name/1800",[112,57.042]],["parent/1800",[491,3.836]],["name/1801",[113,54.768]],["parent/1801",[491,3.836]],["name/1802",[19,52.639]],["parent/1802",[491,3.836]],["name/1803",[1,49.392]],["parent/1803",[491,3.836]],["name/1804",[114,59.99]],["parent/1804",[694,6.175]],["name/1805",[27,44.364]],["parent/1805",[694,6.175]],["name/1806",[116,59.99]],["parent/1806",[694,6.175]],["name/1807",[117,59.99]],["parent/1807",[694,6.175]],["name/1808",[118,57.042]],["parent/1808",[694,6.175]],["name/1809",[119,59.99]],["parent/1809",[694,6.175]],["name/1810",[120,59.99]],["parent/1810",[694,6.175]],["name/1811",[121,57.477]],["parent/1811",[694,6.175]],["name/1812",[122,59.99]],["parent/1812",[694,6.175]],["name/1813",[123,59.99]],["parent/1813",[694,6.175]],["name/1814",[124,56.625]],["parent/1814",[694,6.175]],["name/1815",[68,40.948]],["parent/1815",[694,6.175]],["name/1816",[125,58.408]],["parent/1816",[694,6.175]],["name/1817",[126,59.99]],["parent/1817",[491,3.836]],["name/1818",[127,59.99]],["parent/1818",[491,3.836]],["name/1819",[129,59.99]],["parent/1819",[491,3.836]],["name/1820",[130,54.112]],["parent/1820",[491,3.836]],["name/1821",[131,54.112]],["parent/1821",[491,3.836]],["name/1822",[133,59.99]],["parent/1822",[491,3.836]],["name/1823",[134,59.99]],["parent/1823",[491,3.836]],["name/1824",[135,59.99]],["parent/1824",[491,3.836]],["name/1825",[136,59.99]],["parent/1825",[491,3.836]],["name/1826",[137,59.434]],["parent/1826",[491,3.836]],["name/1827",[138,59.99]],["parent/1827",[491,3.836]],["name/1828",[139,59.99]],["parent/1828",[491,3.836]],["name/1829",[140,59.99]],["parent/1829",[491,3.836]],["name/1830",[141,59.99]],["parent/1830",[491,3.836]],["name/1831",[142,59.99]],["parent/1831",[491,3.836]],["name/1832",[143,59.99]],["parent/1832",[491,3.836]],["name/1833",[145,59.434]],["parent/1833",[491,3.836]],["name/1834",[146,59.434]],["parent/1834",[491,3.836]],["name/1835",[147,59.434]],["parent/1835",[491,3.836]],["name/1836",[148,59.434]],["parent/1836",[491,3.836]],["name/1837",[149,59.99]],["parent/1837",[491,3.836]],["name/1838",[150,59.99]],["parent/1838",[491,3.836]],["name/1839",[151,59.99]],["parent/1839",[491,3.836]],["name/1840",[152,59.99]],["parent/1840",[491,3.836]],["name/1841",[153,59.99]],["parent/1841",[491,3.836]],["name/1842",[154,59.99]],["parent/1842",[491,3.836]],["name/1843",[155,59.99]],["parent/1843",[491,3.836]],["name/1844",[156,59.99]],["parent/1844",[491,3.836]],["name/1845",[157,57.932]],["parent/1845",[491,3.836]],["name/1846",[158,59.99]],["parent/1846",[491,3.836]],["name/1847",[159,59.99]],["parent/1847",[491,3.836]],["name/1848",[160,59.99]],["parent/1848",[491,3.836]],["name/1849",[161,59.99]],["parent/1849",[491,3.836]],["name/1850",[162,59.99]],["parent/1850",[491,3.836]],["name/1851",[163,56.225]],["parent/1851",[491,3.836]],["name/1852",[164,59.434]],["parent/1852",[491,3.836]],["name/1853",[167,59.99]],["parent/1853",[491,3.836]],["name/1854",[168,59.99]],["parent/1854",[491,3.836]],["name/1855",[169,59.99]],["parent/1855",[491,3.836]],["name/1856",[170,59.99]],["parent/1856",[491,3.836]],["name/1857",[171,57.042]],["parent/1857",[491,3.836]],["name/1858",[172,59.434]],["parent/1858",[491,3.836]],["name/1859",[173,59.434]],["parent/1859",[491,3.836]],["name/1860",[28,50.218]],["parent/1860",[491,3.836]],["name/1861",[24,49.196]],["parent/1861",[491,3.836]],["name/1862",[43,52.369]],["parent/1862",[491,3.836]],["name/1863",[44,52.369]],["parent/1863",[491,3.836]],["name/1864",[174,53.8]],["parent/1864",[491,3.836]],["name/1865",[175,58.908]],["parent/1865",[491,3.836]],["name/1866",[176,59.434]],["parent/1866",[491,3.836]],["name/1867",[177,59.434]],["parent/1867",[491,3.836]],["name/1868",[178,59.434]],["parent/1868",[491,3.836]],["name/1869",[179,59.434]],["parent/1869",[491,3.836]],["name/1870",[180,59.434]],["parent/1870",[491,3.836]],["name/1871",[181,59.434]],["parent/1871",[491,3.836]],["name/1872",[182,59.434]],["parent/1872",[491,3.836]],["name/1873",[183,59.434]],["parent/1873",[491,3.836]],["name/1874",[184,57.932]],["parent/1874",[491,3.836]],["name/1875",[185,59.434]],["parent/1875",[491,3.836]],["name/1876",[186,59.434]],["parent/1876",[491,3.836]],["name/1877",[188,58.908]],["parent/1877",[491,3.836]],["name/1878",[189,59.434]],["parent/1878",[491,3.836]],["name/1879",[190,59.434]],["parent/1879",[491,3.836]],["name/1880",[191,59.434]],["parent/1880",[491,3.836]],["name/1881",[192,59.434]],["parent/1881",[491,3.836]],["name/1882",[193,59.434]],["parent/1882",[491,3.836]],["name/1883",[36,53.202]],["parent/1883",[491,3.836]],["name/1884",[34,53.202]],["parent/1884",[491,3.836]],["name/1885",[35,53.202]],["parent/1885",[491,3.836]],["name/1886",[46,46.792]],["parent/1886",[491,3.836]],["name/1887",[47,46.792]],["parent/1887",[491,3.836]],["name/1888",[48,46.792]],["parent/1888",[491,3.836]],["name/1889",[49,46.792]],["parent/1889",[491,3.836]],["name/1890",[50,46.792]],["parent/1890",[491,3.836]],["name/1891",[51,46.792]],["parent/1891",[491,3.836]],["name/1892",[52,46.792]],["parent/1892",[491,3.836]],["name/1893",[53,46.792]],["parent/1893",[491,3.836]],["name/1894",[54,46.792]],["parent/1894",[491,3.836]],["name/1895",[55,46.792]],["parent/1895",[491,3.836]],["name/1896",[56,46.792]],["parent/1896",[491,3.836]],["name/1897",[57,46.792]],["parent/1897",[491,3.836]],["name/1898",[58,46.792]],["parent/1898",[491,3.836]],["name/1899",[59,46.792]],["parent/1899",[491,3.836]],["name/1900",[60,46.792]],["parent/1900",[491,3.836]],["name/1901",[61,46.792]],["parent/1901",[491,3.836]],["name/1902",[62,46.792]],["parent/1902",[491,3.836]],["name/1903",[63,46.792]],["parent/1903",[491,3.836]],["name/1904",[64,46.792]],["parent/1904",[491,3.836]],["name/1905",[65,46.491]],["parent/1905",[491,3.836]],["name/1906",[66,46.491]],["parent/1906",[491,3.836]],["name/1907",[67,46.792]],["parent/1907",[491,3.836]],["name/1908",[68,40.948]],["parent/1908",[491,3.836]],["name/1909",[69,46.344]],["parent/1909",[491,3.836]],["name/1910",[70,46.344]],["parent/1910",[491,3.836]],["name/1911",[71,46.792]],["parent/1911",[491,3.836]],["name/1912",[72,46.056]],["parent/1912",[491,3.836]],["name/1913",[73,46.64]],["parent/1913",[491,3.836]],["name/1914",[74,46.792]],["parent/1914",[491,3.836]],["name/1915",[75,46.792]],["parent/1915",[491,3.836]],["name/1916",[76,46.792]],["parent/1916",[491,3.836]],["name/1917",[77,46.64]],["parent/1917",[491,3.836]],["name/1918",[78,46.199]],["parent/1918",[491,3.836]],["name/1919",[79,46.199]],["parent/1919",[491,3.836]],["name/1920",[695,57.042]],["parent/1920",[]],["name/1921",[696,84.557]],["parent/1921",[695,5.628]],["name/1922",[697,84.557]],["parent/1922",[695,5.628]],["name/1923",[14,53.8]],["parent/1923",[695,5.628]],["name/1924",[698,84.557]],["parent/1924",[695,5.628]],["name/1925",[699,84.557]],["parent/1925",[695,5.628]],["name/1926",[700,84.557]],["parent/1926",[695,5.628]],["name/1927",[701,84.557]],["parent/1927",[695,5.628]],["name/1928",[702,84.557]],["parent/1928",[695,5.628]],["name/1929",[703,84.557]],["parent/1929",[695,5.628]],["name/1930",[437,46.491]],["parent/1930",[695,5.628]],["name/1931",[98,67.211]],["parent/1931",[695,5.628]],["name/1932",[704,84.557]],["parent/1932",[695,5.628]],["name/1933",[705,84.557]],["parent/1933",[695,5.628]],["name/1934",[706,84.557]],["parent/1934",[695,5.628]],["name/1935",[7,60.578]],["parent/1935",[695,5.628]],["name/1936",[231,68.463]],["parent/1936",[695,5.628]],["name/1937",[707,84.557]],["parent/1937",[695,5.628]],["name/1938",[708,84.557]],["parent/1938",[695,5.628]],["name/1939",[709,84.557]],["parent/1939",[695,5.628]],["name/1940",[710,84.557]],["parent/1940",[695,5.628]],["name/1941",[24,49.196]],["parent/1941",[695,5.628]],["name/1942",[163,56.225]],["parent/1942",[695,5.628]],["name/1943",[711,79.449]],["parent/1943",[]],["name/1944",[10,39.376]],["parent/1944",[711,7.839]],["name/1945",[712,64.189]],["parent/1945",[]],["name/1946",[7,60.578]],["parent/1946",[712,6.333]],["name/1947",[263,66.099]],["parent/1947",[712,6.333]],["name/1948",[587,79.449]],["parent/1948",[712,6.333]],["name/1949",[588,79.449]],["parent/1949",[712,6.333]],["name/1950",[364,73.571]],["parent/1950",[712,6.333]],["name/1951",[118,57.042]],["parent/1951",[712,6.333]],["name/1952",[124,56.625]],["parent/1952",[712,6.333]],["name/1953",[591,79.449]],["parent/1953",[712,6.333]],["name/1954",[713,84.557]],["parent/1954",[712,6.333]],["name/1955",[68,40.948]],["parent/1955",[712,6.333]],["name/1956",[714,71.565]],["parent/1956",[]],["name/1957",[257,79.449]],["parent/1957",[714,7.061]],["name/1958",[0,58.908]],["parent/1958",[714,7.061]],["name/1959",[715,84.557]],["parent/1959",[714,7.061]],["name/1960",[716,84.557]],["parent/1960",[714,7.061]],["name/1961",[111,43.126]],["parent/1961",[]],["name/1962",[10,39.376]],["parent/1962",[111,4.255]],["name/1963",[717,79.449]],["parent/1963",[111,4.255]],["name/1964",[718,79.449]],["parent/1964",[111,4.255]],["name/1965",[719,79.449]],["parent/1965",[111,4.255]],["name/1966",[720,79.449]],["parent/1966",[111,4.255]],["name/1967",[721,79.449]],["parent/1967",[111,4.255]],["name/1968",[722,79.449]],["parent/1968",[111,4.255]],["name/1969",[723,79.449]],["parent/1969",[111,4.255]],["name/1970",[724,79.449]],["parent/1970",[111,4.255]],["name/1971",[24,49.196]],["parent/1971",[111,4.255]],["name/1972",[16,46.64]],["parent/1972",[111,4.255]],["name/1973",[17,43.782]],["parent/1973",[111,4.255]],["name/1974",[725,79.449]],["parent/1974",[111,4.255]],["name/1975",[98,67.211]],["parent/1975",[111,4.255]],["name/1976",[333,69.894]],["parent/1976",[111,4.255]],["name/1977",[726,79.449]],["parent/1977",[111,4.255]],["name/1978",[727,79.449]],["parent/1978",[111,4.255]],["name/1979",[124,56.625]],["parent/1979",[111,4.255]],["name/1980",[27,44.364]],["parent/1980",[111,4.255]],["name/1981",[728,79.449]],["parent/1981",[111,4.255]],["name/1982",[463,69.894]],["parent/1982",[111,4.255]],["name/1983",[729,79.449]],["parent/1983",[111,4.255]],["name/1984",[132,53.8]],["parent/1984",[111,4.255]],["name/1985",[44,52.369]],["parent/1985",[111,4.255]],["name/1986",[43,52.369]],["parent/1986",[111,4.255]],["name/1987",[730,79.449]],["parent/1987",[111,4.255]],["name/1988",[40,59.434]],["parent/1988",[111,4.255]],["name/1989",[171,57.042]],["parent/1989",[111,4.255]],["name/1990",[731,79.449]],["parent/1990",[111,4.255]],["name/1991",[163,56.225]],["parent/1991",[111,4.255]],["name/1992",[732,79.449]],["parent/1992",[111,4.255]],["name/1993",[733,79.449]],["parent/1993",[111,4.255]],["name/1994",[734,79.449]],["parent/1994",[111,4.255]],["name/1995",[735,79.449]],["parent/1995",[111,4.255]],["name/1996",[131,54.112]],["parent/1996",[111,4.255]],["name/1997",[736,79.449]],["parent/1997",[111,4.255]],["name/1998",[46,46.792]],["parent/1998",[111,4.255]],["name/1999",[47,46.792]],["parent/1999",[111,4.255]],["name/2000",[48,46.792]],["parent/2000",[111,4.255]],["name/2001",[49,46.792]],["parent/2001",[111,4.255]],["name/2002",[50,46.792]],["parent/2002",[111,4.255]],["name/2003",[51,46.792]],["parent/2003",[111,4.255]],["name/2004",[52,46.792]],["parent/2004",[111,4.255]],["name/2005",[53,46.792]],["parent/2005",[111,4.255]],["name/2006",[54,46.792]],["parent/2006",[111,4.255]],["name/2007",[55,46.792]],["parent/2007",[111,4.255]],["name/2008",[56,46.792]],["parent/2008",[111,4.255]],["name/2009",[57,46.792]],["parent/2009",[111,4.255]],["name/2010",[58,46.792]],["parent/2010",[111,4.255]],["name/2011",[59,46.792]],["parent/2011",[111,4.255]],["name/2012",[60,46.792]],["parent/2012",[111,4.255]],["name/2013",[61,46.792]],["parent/2013",[111,4.255]],["name/2014",[62,46.792]],["parent/2014",[111,4.255]],["name/2015",[63,46.792]],["parent/2015",[111,4.255]],["name/2016",[64,46.792]],["parent/2016",[111,4.255]],["name/2017",[65,46.491]],["parent/2017",[111,4.255]],["name/2018",[66,46.491]],["parent/2018",[111,4.255]],["name/2019",[67,46.792]],["parent/2019",[111,4.255]],["name/2020",[68,40.948]],["parent/2020",[111,4.255]],["name/2021",[69,46.344]],["parent/2021",[111,4.255]],["name/2022",[70,46.344]],["parent/2022",[111,4.255]],["name/2023",[71,46.792]],["parent/2023",[111,4.255]],["name/2024",[72,46.056]],["parent/2024",[111,4.255]],["name/2025",[73,46.64]],["parent/2025",[111,4.255]],["name/2026",[74,46.792]],["parent/2026",[111,4.255]],["name/2027",[75,46.792]],["parent/2027",[111,4.255]],["name/2028",[76,46.792]],["parent/2028",[111,4.255]],["name/2029",[77,46.64]],["parent/2029",[111,4.255]],["name/2030",[78,46.199]],["parent/2030",[111,4.255]],["name/2031",[79,46.199]],["parent/2031",[111,4.255]],["name/2032",[737,76.084]],["parent/2032",[]],["name/2033",[738,84.557]],["parent/2033",[737,7.507]],["name/2034",[0,58.908]],["parent/2034",[737,7.507]],["name/2035",[489,40.131]],["parent/2035",[]],["name/2036",[10,39.376]],["parent/2036",[489,3.96]],["name/2037",[106,59.99]],["parent/2037",[489,3.96]],["name/2038",[16,46.64]],["parent/2038",[489,3.96]],["name/2039",[17,43.782]],["parent/2039",[489,3.96]],["name/2040",[739,79.449]],["parent/2040",[489,3.96]],["name/2041",[64,46.792]],["parent/2041",[489,3.96]],["name/2042",[110,56.225]],["parent/2042",[489,3.96]],["name/2043",[740,69.894]],["parent/2043",[489,3.96]],["name/2044",[27,44.364]],["parent/2044",[489,3.96]],["name/2045",[111,43.126]],["parent/2045",[489,3.96]],["name/2046",[112,57.042]],["parent/2046",[489,3.96]],["name/2047",[113,54.768]],["parent/2047",[489,3.96]],["name/2048",[19,52.639]],["parent/2048",[489,3.96]],["name/2049",[1,49.392]],["parent/2049",[489,3.96]],["name/2050",[114,59.99]],["parent/2050",[741,6.175]],["name/2051",[27,44.364]],["parent/2051",[741,6.175]],["name/2052",[116,59.99]],["parent/2052",[741,6.175]],["name/2053",[117,59.99]],["parent/2053",[741,6.175]],["name/2054",[118,57.042]],["parent/2054",[741,6.175]],["name/2055",[119,59.99]],["parent/2055",[741,6.175]],["name/2056",[120,59.99]],["parent/2056",[741,6.175]],["name/2057",[121,57.477]],["parent/2057",[741,6.175]],["name/2058",[122,59.99]],["parent/2058",[741,6.175]],["name/2059",[123,59.99]],["parent/2059",[741,6.175]],["name/2060",[124,56.625]],["parent/2060",[741,6.175]],["name/2061",[68,40.948]],["parent/2061",[741,6.175]],["name/2062",[125,58.408]],["parent/2062",[741,6.175]],["name/2063",[126,59.99]],["parent/2063",[489,3.96]],["name/2064",[127,59.99]],["parent/2064",[489,3.96]],["name/2065",[128,59.434]],["parent/2065",[489,3.96]],["name/2066",[129,59.99]],["parent/2066",[489,3.96]],["name/2067",[130,54.112]],["parent/2067",[489,3.96]],["name/2068",[131,54.112]],["parent/2068",[489,3.96]],["name/2069",[132,53.8]],["parent/2069",[489,3.96]],["name/2070",[133,59.99]],["parent/2070",[489,3.96]],["name/2071",[134,59.99]],["parent/2071",[489,3.96]],["name/2072",[135,59.99]],["parent/2072",[489,3.96]],["name/2073",[136,59.99]],["parent/2073",[489,3.96]],["name/2074",[137,59.434]],["parent/2074",[489,3.96]],["name/2075",[138,59.99]],["parent/2075",[489,3.96]],["name/2076",[139,59.99]],["parent/2076",[489,3.96]],["name/2077",[140,59.99]],["parent/2077",[489,3.96]],["name/2078",[141,59.99]],["parent/2078",[489,3.96]],["name/2079",[142,59.99]],["parent/2079",[489,3.96]],["name/2080",[143,59.99]],["parent/2080",[489,3.96]],["name/2081",[144,58.908]],["parent/2081",[489,3.96]],["name/2082",[145,59.434]],["parent/2082",[489,3.96]],["name/2083",[146,59.434]],["parent/2083",[489,3.96]],["name/2084",[147,59.434]],["parent/2084",[489,3.96]],["name/2085",[148,59.434]],["parent/2085",[489,3.96]],["name/2086",[149,59.99]],["parent/2086",[489,3.96]],["name/2087",[150,59.99]],["parent/2087",[489,3.96]],["name/2088",[151,59.99]],["parent/2088",[489,3.96]],["name/2089",[152,59.99]],["parent/2089",[489,3.96]],["name/2090",[153,59.99]],["parent/2090",[489,3.96]],["name/2091",[154,59.99]],["parent/2091",[489,3.96]],["name/2092",[155,59.99]],["parent/2092",[489,3.96]],["name/2093",[156,59.99]],["parent/2093",[489,3.96]],["name/2094",[157,57.932]],["parent/2094",[489,3.96]],["name/2095",[158,59.99]],["parent/2095",[489,3.96]],["name/2096",[159,59.99]],["parent/2096",[489,3.96]],["name/2097",[160,59.99]],["parent/2097",[489,3.96]],["name/2098",[161,59.99]],["parent/2098",[489,3.96]],["name/2099",[162,59.99]],["parent/2099",[489,3.96]],["name/2100",[163,56.225]],["parent/2100",[489,3.96]],["name/2101",[164,59.434]],["parent/2101",[489,3.96]],["name/2102",[165,59.434]],["parent/2102",[489,3.96]],["name/2103",[166,59.99]],["parent/2103",[489,3.96]],["name/2104",[167,59.99]],["parent/2104",[489,3.96]],["name/2105",[168,59.99]],["parent/2105",[489,3.96]],["name/2106",[169,59.99]],["parent/2106",[489,3.96]],["name/2107",[170,59.99]],["parent/2107",[489,3.96]],["name/2108",[171,57.042]],["parent/2108",[489,3.96]],["name/2109",[172,59.434]],["parent/2109",[489,3.96]],["name/2110",[173,59.434]],["parent/2110",[489,3.96]],["name/2111",[28,50.218]],["parent/2111",[489,3.96]],["name/2112",[24,49.196]],["parent/2112",[489,3.96]],["name/2113",[43,52.369]],["parent/2113",[489,3.96]],["name/2114",[44,52.369]],["parent/2114",[489,3.96]],["name/2115",[174,53.8]],["parent/2115",[489,3.96]],["name/2116",[175,58.908]],["parent/2116",[489,3.96]],["name/2117",[176,59.434]],["parent/2117",[489,3.96]],["name/2118",[177,59.434]],["parent/2118",[489,3.96]],["name/2119",[178,59.434]],["parent/2119",[489,3.96]],["name/2120",[179,59.434]],["parent/2120",[489,3.96]],["name/2121",[180,59.434]],["parent/2121",[489,3.96]],["name/2122",[181,59.434]],["parent/2122",[489,3.96]],["name/2123",[182,59.434]],["parent/2123",[489,3.96]],["name/2124",[183,59.434]],["parent/2124",[489,3.96]],["name/2125",[109,59.434]],["parent/2125",[489,3.96]],["name/2126",[184,57.932]],["parent/2126",[489,3.96]],["name/2127",[185,59.434]],["parent/2127",[489,3.96]],["name/2128",[186,59.434]],["parent/2128",[489,3.96]],["name/2129",[187,56.625]],["parent/2129",[489,3.96]],["name/2130",[188,58.908]],["parent/2130",[489,3.96]],["name/2131",[189,59.434]],["parent/2131",[489,3.96]],["name/2132",[190,59.434]],["parent/2132",[489,3.96]],["name/2133",[191,59.434]],["parent/2133",[489,3.96]],["name/2134",[192,59.434]],["parent/2134",[489,3.96]],["name/2135",[193,59.434]],["parent/2135",[489,3.96]],["name/2136",[36,53.202]],["parent/2136",[489,3.96]],["name/2137",[34,53.202]],["parent/2137",[489,3.96]],["name/2138",[35,53.202]],["parent/2138",[489,3.96]],["name/2139",[46,46.792]],["parent/2139",[489,3.96]],["name/2140",[47,46.792]],["parent/2140",[489,3.96]],["name/2141",[48,46.792]],["parent/2141",[489,3.96]],["name/2142",[49,46.792]],["parent/2142",[489,3.96]],["name/2143",[50,46.792]],["parent/2143",[489,3.96]],["name/2144",[51,46.792]],["parent/2144",[489,3.96]],["name/2145",[52,46.792]],["parent/2145",[489,3.96]],["name/2146",[53,46.792]],["parent/2146",[489,3.96]],["name/2147",[54,46.792]],["parent/2147",[489,3.96]],["name/2148",[55,46.792]],["parent/2148",[489,3.96]],["name/2149",[56,46.792]],["parent/2149",[489,3.96]],["name/2150",[57,46.792]],["parent/2150",[489,3.96]],["name/2151",[58,46.792]],["parent/2151",[489,3.96]],["name/2152",[59,46.792]],["parent/2152",[489,3.96]],["name/2153",[60,46.792]],["parent/2153",[489,3.96]],["name/2154",[61,46.792]],["parent/2154",[489,3.96]],["name/2155",[62,46.792]],["parent/2155",[489,3.96]],["name/2156",[63,46.792]],["parent/2156",[489,3.96]],["name/2157",[65,46.491]],["parent/2157",[489,3.96]],["name/2158",[66,46.491]],["parent/2158",[489,3.96]],["name/2159",[67,46.792]],["parent/2159",[489,3.96]],["name/2160",[68,40.948]],["parent/2160",[489,3.96]],["name/2161",[69,46.344]],["parent/2161",[489,3.96]],["name/2162",[70,46.344]],["parent/2162",[489,3.96]],["name/2163",[71,46.792]],["parent/2163",[489,3.96]],["name/2164",[72,46.056]],["parent/2164",[489,3.96]],["name/2165",[73,46.64]],["parent/2165",[489,3.96]],["name/2166",[74,46.792]],["parent/2166",[489,3.96]],["name/2167",[75,46.792]],["parent/2167",[489,3.96]],["name/2168",[76,46.792]],["parent/2168",[489,3.96]],["name/2169",[77,46.64]],["parent/2169",[489,3.96]],["name/2170",[78,46.199]],["parent/2170",[489,3.96]],["name/2171",[79,46.199]],["parent/2171",[489,3.96]],["name/2172",[742,59.99]],["parent/2172",[]],["name/2173",[426,79.449]],["parent/2173",[742,5.919]],["name/2174",[677,64.189]],["parent/2174",[742,5.919]],["name/2175",[743,76.084]],["parent/2175",[742,5.919]],["name/2176",[744,71.565]],["parent/2176",[742,5.919]],["name/2177",[745,71.565]],["parent/2177",[742,5.919]],["name/2178",[125,58.408]],["parent/2178",[742,5.919]],["name/2179",[121,57.477]],["parent/2179",[742,5.919]],["name/2180",[746,76.084]],["parent/2180",[742,5.919]],["name/2181",[361,46.199]],["parent/2181",[742,5.919]],["name/2182",[112,57.042]],["parent/2182",[742,5.919]],["name/2183",[410,63.355]],["parent/2183",[742,5.919]],["name/2184",[0,58.908]],["parent/2184",[742,5.919]],["name/2185",[409,64.189]],["parent/2185",[742,5.919]],["name/2186",[18,57.477]],["parent/2186",[742,5.919]],["name/2187",[747,69.894]],["parent/2187",[742,5.919]],["name/2188",[748,69.894]],["parent/2188",[742,5.919]],["name/2189",[496,36.436]],["parent/2189",[]],["name/2190",[10,39.376]],["parent/2190",[496,3.595]],["name/2191",[749,79.449]],["parent/2191",[496,3.595]],["name/2192",[124,56.625]],["parent/2192",[496,3.595]],["name/2193",[9,57.042]],["parent/2193",[496,3.595]],["name/2194",[750,79.449]],["parent/2194",[496,3.595]],["name/2195",[751,79.449]],["parent/2195",[496,3.595]],["name/2196",[752,79.449]],["parent/2196",[496,3.595]],["name/2197",[11,57.932]],["parent/2197",[496,3.595]],["name/2198",[187,56.625]],["parent/2198",[496,3.595]],["name/2199",[106,59.99]],["parent/2199",[496,3.595]],["name/2200",[16,46.64]],["parent/2200",[496,3.595]],["name/2201",[17,43.782]],["parent/2201",[496,3.595]],["name/2202",[689,69.894]],["parent/2202",[496,3.595]],["name/2203",[753,79.449]],["parent/2203",[496,3.595]],["name/2204",[27,44.364]],["parent/2204",[496,3.595]],["name/2205",[754,84.557]],["parent/2205",[496,3.595]],["name/2206",[755,76.084]],["parent/2206",[496,3.595]],["name/2207",[756,76.084]],["parent/2207",[496,3.595]],["name/2208",[171,57.042]],["parent/2208",[496,3.595]],["name/2209",[156,59.99]],["parent/2209",[496,3.595]],["name/2210",[681,69.894]],["parent/2210",[496,3.595]],["name/2211",[757,79.449]],["parent/2211",[496,3.595]],["name/2212",[758,79.449]],["parent/2212",[496,3.595]],["name/2213",[759,79.449]],["parent/2213",[496,3.595]],["name/2214",[760,79.449]],["parent/2214",[496,3.595]],["name/2215",[64,46.792]],["parent/2215",[496,3.595]],["name/2216",[138,59.99]],["parent/2216",[496,3.595]],["name/2217",[128,59.434]],["parent/2217",[496,3.595]],["name/2218",[761,79.449]],["parent/2218",[496,3.595]],["name/2219",[151,59.99]],["parent/2219",[496,3.595]],["name/2220",[692,69.894]],["parent/2220",[496,3.595]],["name/2221",[687,69.894]],["parent/2221",[496,3.595]],["name/2222",[144,58.908]],["parent/2222",[496,3.595]],["name/2223",[691,67.211]],["parent/2223",[496,3.595]],["name/2224",[132,53.8]],["parent/2224",[496,3.595]],["name/2225",[762,76.084]],["parent/2225",[496,3.595]],["name/2226",[763,79.449]],["parent/2226",[496,3.595]],["name/2227",[167,59.99]],["parent/2227",[496,3.595]],["name/2228",[168,59.99]],["parent/2228",[496,3.595]],["name/2229",[139,59.99]],["parent/2229",[496,3.595]],["name/2230",[159,59.99]],["parent/2230",[496,3.595]],["name/2231",[48,46.792]],["parent/2231",[496,3.595]],["name/2232",[764,79.449]],["parent/2232",[496,3.595]],["name/2233",[765,79.449]],["parent/2233",[496,3.595]],["name/2234",[766,79.449]],["parent/2234",[496,3.595]],["name/2235",[767,79.449]],["parent/2235",[496,3.595]],["name/2236",[768,79.449]],["parent/2236",[496,3.595]],["name/2237",[769,79.449]],["parent/2237",[496,3.595]],["name/2238",[770,79.449]],["parent/2238",[496,3.595]],["name/2239",[771,79.449]],["parent/2239",[496,3.595]],["name/2240",[772,79.449]],["parent/2240",[496,3.595]],["name/2241",[773,79.449]],["parent/2241",[496,3.595]],["name/2242",[774,79.449]],["parent/2242",[496,3.595]],["name/2243",[110,56.225]],["parent/2243",[496,3.595]],["name/2244",[775,79.449]],["parent/2244",[496,3.595]],["name/2245",[776,79.449]],["parent/2245",[496,3.595]],["name/2246",[777,79.449]],["parent/2246",[496,3.595]],["name/2247",[778,79.449]],["parent/2247",[496,3.595]],["name/2248",[779,79.449]],["parent/2248",[496,3.595]],["name/2249",[780,79.449]],["parent/2249",[496,3.595]],["name/2250",[740,69.894]],["parent/2250",[496,3.595]],["name/2251",[781,79.449]],["parent/2251",[496,3.595]],["name/2252",[782,73.571]],["parent/2252",[496,3.595]],["name/2253",[783,79.449]],["parent/2253",[496,3.595]],["name/2254",[693,69.894]],["parent/2254",[496,3.595]],["name/2255",[677,64.189]],["parent/2255",[496,3.595]],["name/2256",[437,46.491]],["parent/2256",[496,3.595]],["name/2257",[678,69.894]],["parent/2257",[496,3.595]],["name/2258",[679,69.894]],["parent/2258",[496,3.595]],["name/2259",[680,69.894]],["parent/2259",[496,3.595]],["name/2260",[682,69.894]],["parent/2260",[496,3.595]],["name/2261",[683,69.894]],["parent/2261",[496,3.595]],["name/2262",[684,69.894]],["parent/2262",[496,3.595]],["name/2263",[218,68.463]],["parent/2263",[496,3.595]],["name/2264",[685,69.894]],["parent/2264",[496,3.595]],["name/2265",[165,59.434]],["parent/2265",[496,3.595]],["name/2266",[686,69.894]],["parent/2266",[496,3.595]],["name/2267",[688,69.894]],["parent/2267",[496,3.595]],["name/2268",[690,69.894]],["parent/2268",[496,3.595]],["name/2269",[166,59.99]],["parent/2269",[496,3.595]],["name/2270",[187,56.625]],["parent/2270",[496,3.595]],["name/2271",[111,43.126]],["parent/2271",[496,3.595]],["name/2272",[112,57.042]],["parent/2272",[496,3.595]],["name/2273",[113,54.768]],["parent/2273",[496,3.595]],["name/2274",[19,52.639]],["parent/2274",[496,3.595]],["name/2275",[1,49.392]],["parent/2275",[496,3.595]],["name/2276",[114,59.99]],["parent/2276",[784,6.175]],["name/2277",[27,44.364]],["parent/2277",[784,6.175]],["name/2278",[116,59.99]],["parent/2278",[784,6.175]],["name/2279",[117,59.99]],["parent/2279",[784,6.175]],["name/2280",[118,57.042]],["parent/2280",[784,6.175]],["name/2281",[119,59.99]],["parent/2281",[784,6.175]],["name/2282",[120,59.99]],["parent/2282",[784,6.175]],["name/2283",[121,57.477]],["parent/2283",[784,6.175]],["name/2284",[122,59.99]],["parent/2284",[784,6.175]],["name/2285",[123,59.99]],["parent/2285",[784,6.175]],["name/2286",[124,56.625]],["parent/2286",[784,6.175]],["name/2287",[68,40.948]],["parent/2287",[784,6.175]],["name/2288",[125,58.408]],["parent/2288",[784,6.175]],["name/2289",[126,59.99]],["parent/2289",[496,3.595]],["name/2290",[127,59.99]],["parent/2290",[496,3.595]],["name/2291",[129,59.99]],["parent/2291",[496,3.595]],["name/2292",[130,54.112]],["parent/2292",[496,3.595]],["name/2293",[131,54.112]],["parent/2293",[496,3.595]],["name/2294",[133,59.99]],["parent/2294",[496,3.595]],["name/2295",[134,59.99]],["parent/2295",[496,3.595]],["name/2296",[135,59.99]],["parent/2296",[496,3.595]],["name/2297",[136,59.99]],["parent/2297",[496,3.595]],["name/2298",[137,59.434]],["parent/2298",[496,3.595]],["name/2299",[140,59.99]],["parent/2299",[496,3.595]],["name/2300",[141,59.99]],["parent/2300",[496,3.595]],["name/2301",[142,59.99]],["parent/2301",[496,3.595]],["name/2302",[143,59.99]],["parent/2302",[496,3.595]],["name/2303",[145,59.434]],["parent/2303",[496,3.595]],["name/2304",[146,59.434]],["parent/2304",[496,3.595]],["name/2305",[147,59.434]],["parent/2305",[496,3.595]],["name/2306",[148,59.434]],["parent/2306",[496,3.595]],["name/2307",[149,59.99]],["parent/2307",[496,3.595]],["name/2308",[150,59.99]],["parent/2308",[496,3.595]],["name/2309",[152,59.99]],["parent/2309",[496,3.595]],["name/2310",[153,59.99]],["parent/2310",[496,3.595]],["name/2311",[154,59.99]],["parent/2311",[496,3.595]],["name/2312",[155,59.99]],["parent/2312",[496,3.595]],["name/2313",[157,57.932]],["parent/2313",[496,3.595]],["name/2314",[158,59.99]],["parent/2314",[496,3.595]],["name/2315",[160,59.99]],["parent/2315",[496,3.595]],["name/2316",[161,59.99]],["parent/2316",[496,3.595]],["name/2317",[162,59.99]],["parent/2317",[496,3.595]],["name/2318",[163,56.225]],["parent/2318",[496,3.595]],["name/2319",[164,59.434]],["parent/2319",[496,3.595]],["name/2320",[169,59.99]],["parent/2320",[496,3.595]],["name/2321",[170,59.99]],["parent/2321",[496,3.595]],["name/2322",[172,59.434]],["parent/2322",[496,3.595]],["name/2323",[173,59.434]],["parent/2323",[496,3.595]],["name/2324",[28,50.218]],["parent/2324",[496,3.595]],["name/2325",[24,49.196]],["parent/2325",[496,3.595]],["name/2326",[43,52.369]],["parent/2326",[496,3.595]],["name/2327",[44,52.369]],["parent/2327",[496,3.595]],["name/2328",[174,53.8]],["parent/2328",[496,3.595]],["name/2329",[175,58.908]],["parent/2329",[496,3.595]],["name/2330",[176,59.434]],["parent/2330",[496,3.595]],["name/2331",[177,59.434]],["parent/2331",[496,3.595]],["name/2332",[178,59.434]],["parent/2332",[496,3.595]],["name/2333",[179,59.434]],["parent/2333",[496,3.595]],["name/2334",[180,59.434]],["parent/2334",[496,3.595]],["name/2335",[181,59.434]],["parent/2335",[496,3.595]],["name/2336",[182,59.434]],["parent/2336",[496,3.595]],["name/2337",[183,59.434]],["parent/2337",[496,3.595]],["name/2338",[109,59.434]],["parent/2338",[496,3.595]],["name/2339",[184,57.932]],["parent/2339",[496,3.595]],["name/2340",[185,59.434]],["parent/2340",[496,3.595]],["name/2341",[186,59.434]],["parent/2341",[496,3.595]],["name/2342",[188,58.908]],["parent/2342",[496,3.595]],["name/2343",[189,59.434]],["parent/2343",[496,3.595]],["name/2344",[190,59.434]],["parent/2344",[496,3.595]],["name/2345",[191,59.434]],["parent/2345",[496,3.595]],["name/2346",[192,59.434]],["parent/2346",[496,3.595]],["name/2347",[193,59.434]],["parent/2347",[496,3.595]],["name/2348",[36,53.202]],["parent/2348",[496,3.595]],["name/2349",[34,53.202]],["parent/2349",[496,3.595]],["name/2350",[35,53.202]],["parent/2350",[496,3.595]],["name/2351",[46,46.792]],["parent/2351",[496,3.595]],["name/2352",[47,46.792]],["parent/2352",[496,3.595]],["name/2353",[49,46.792]],["parent/2353",[496,3.595]],["name/2354",[50,46.792]],["parent/2354",[496,3.595]],["name/2355",[51,46.792]],["parent/2355",[496,3.595]],["name/2356",[52,46.792]],["parent/2356",[496,3.595]],["name/2357",[53,46.792]],["parent/2357",[496,3.595]],["name/2358",[54,46.792]],["parent/2358",[496,3.595]],["name/2359",[55,46.792]],["parent/2359",[496,3.595]],["name/2360",[56,46.792]],["parent/2360",[496,3.595]],["name/2361",[57,46.792]],["parent/2361",[496,3.595]],["name/2362",[58,46.792]],["parent/2362",[496,3.595]],["name/2363",[59,46.792]],["parent/2363",[496,3.595]],["name/2364",[60,46.792]],["parent/2364",[496,3.595]],["name/2365",[61,46.792]],["parent/2365",[496,3.595]],["name/2366",[62,46.792]],["parent/2366",[496,3.595]],["name/2367",[63,46.792]],["parent/2367",[496,3.595]],["name/2368",[65,46.491]],["parent/2368",[496,3.595]],["name/2369",[66,46.491]],["parent/2369",[496,3.595]],["name/2370",[67,46.792]],["parent/2370",[496,3.595]],["name/2371",[68,40.948]],["parent/2371",[496,3.595]],["name/2372",[69,46.344]],["parent/2372",[496,3.595]],["name/2373",[70,46.344]],["parent/2373",[496,3.595]],["name/2374",[71,46.792]],["parent/2374",[496,3.595]],["name/2375",[72,46.056]],["parent/2375",[496,3.595]],["name/2376",[73,46.64]],["parent/2376",[496,3.595]],["name/2377",[74,46.792]],["parent/2377",[496,3.595]],["name/2378",[75,46.792]],["parent/2378",[496,3.595]],["name/2379",[76,46.792]],["parent/2379",[496,3.595]],["name/2380",[77,46.64]],["parent/2380",[496,3.595]],["name/2381",[78,46.199]],["parent/2381",[496,3.595]],["name/2382",[79,46.199]],["parent/2382",[496,3.595]],["name/2383",[497,45.915]],["parent/2383",[]],["name/2384",[9,57.042]],["parent/2384",[497,4.53]],["name/2385",[10,39.376]],["parent/2385",[497,4.53]],["name/2386",[11,57.932]],["parent/2386",[497,4.53]],["name/2387",[14,53.8]],["parent/2387",[497,4.53]],["name/2388",[15,59.434]],["parent/2388",[497,4.53]],["name/2389",[16,46.64]],["parent/2389",[497,4.53]],["name/2390",[17,43.782]],["parent/2390",[497,4.53]],["name/2391",[19,52.639]],["parent/2391",[497,4.53]],["name/2392",[1,49.392]],["parent/2392",[497,4.53]],["name/2393",[785,84.557]],["parent/2393",[786,8.343]],["name/2394",[110,56.225]],["parent/2394",[497,4.53]],["name/2395",[787,84.557]],["parent/2395",[497,4.53]],["name/2396",[28,50.218]],["parent/2396",[497,4.53]],["name/2397",[24,49.196]],["parent/2397",[497,4.53]],["name/2398",[788,84.557]],["parent/2398",[497,4.53]],["name/2399",[27,44.364]],["parent/2399",[497,4.53]],["name/2400",[29,60.578]],["parent/2400",[497,4.53]],["name/2401",[30,60.578]],["parent/2401",[497,4.53]],["name/2402",[25,60.578]],["parent/2402",[497,4.53]],["name/2403",[31,60.578]],["parent/2403",[497,4.53]],["name/2404",[32,60.578]],["parent/2404",[497,4.53]],["name/2405",[33,60.578]],["parent/2405",[497,4.53]],["name/2406",[34,53.202]],["parent/2406",[497,4.53]],["name/2407",[35,53.202]],["parent/2407",[497,4.53]],["name/2408",[36,53.202]],["parent/2408",[497,4.53]],["name/2409",[37,55.841]],["parent/2409",[497,4.53]],["name/2410",[38,55.47]],["parent/2410",[497,4.53]],["name/2411",[39,60.578]],["parent/2411",[497,4.53]],["name/2412",[40,59.434]],["parent/2412",[497,4.53]],["name/2413",[41,60.578]],["parent/2413",[497,4.53]],["name/2414",[42,60.578]],["parent/2414",[497,4.53]],["name/2415",[43,52.369]],["parent/2415",[497,4.53]],["name/2416",[44,52.369]],["parent/2416",[497,4.53]],["name/2417",[45,60.578]],["parent/2417",[497,4.53]],["name/2418",[46,46.792]],["parent/2418",[497,4.53]],["name/2419",[47,46.792]],["parent/2419",[497,4.53]],["name/2420",[48,46.792]],["parent/2420",[497,4.53]],["name/2421",[49,46.792]],["parent/2421",[497,4.53]],["name/2422",[50,46.792]],["parent/2422",[497,4.53]],["name/2423",[51,46.792]],["parent/2423",[497,4.53]],["name/2424",[52,46.792]],["parent/2424",[497,4.53]],["name/2425",[53,46.792]],["parent/2425",[497,4.53]],["name/2426",[54,46.792]],["parent/2426",[497,4.53]],["name/2427",[55,46.792]],["parent/2427",[497,4.53]],["name/2428",[56,46.792]],["parent/2428",[497,4.53]],["name/2429",[57,46.792]],["parent/2429",[497,4.53]],["name/2430",[58,46.792]],["parent/2430",[497,4.53]],["name/2431",[59,46.792]],["parent/2431",[497,4.53]],["name/2432",[60,46.792]],["parent/2432",[497,4.53]],["name/2433",[61,46.792]],["parent/2433",[497,4.53]],["name/2434",[62,46.792]],["parent/2434",[497,4.53]],["name/2435",[63,46.792]],["parent/2435",[497,4.53]],["name/2436",[64,46.792]],["parent/2436",[497,4.53]],["name/2437",[65,46.491]],["parent/2437",[497,4.53]],["name/2438",[66,46.491]],["parent/2438",[497,4.53]],["name/2439",[67,46.792]],["parent/2439",[497,4.53]],["name/2440",[68,40.948]],["parent/2440",[497,4.53]],["name/2441",[69,46.344]],["parent/2441",[497,4.53]],["name/2442",[70,46.344]],["parent/2442",[497,4.53]],["name/2443",[71,46.792]],["parent/2443",[497,4.53]],["name/2444",[72,46.056]],["parent/2444",[497,4.53]],["name/2445",[73,46.64]],["parent/2445",[497,4.53]],["name/2446",[74,46.792]],["parent/2446",[497,4.53]],["name/2447",[75,46.792]],["parent/2447",[497,4.53]],["name/2448",[76,46.792]],["parent/2448",[497,4.53]],["name/2449",[77,46.64]],["parent/2449",[497,4.53]],["name/2450",[78,46.199]],["parent/2450",[497,4.53]],["name/2451",[79,46.199]],["parent/2451",[497,4.53]],["name/2452",[519,38.275]],["parent/2452",[]],["name/2453",[10,39.376]],["parent/2453",[519,3.777]],["name/2454",[106,59.99]],["parent/2454",[519,3.777]],["name/2455",[16,46.64]],["parent/2455",[519,3.777]],["name/2456",[17,43.782]],["parent/2456",[519,3.777]],["name/2457",[789,79.449]],["parent/2457",[519,3.777]],["name/2458",[790,79.449]],["parent/2458",[519,3.777]],["name/2459",[171,57.042]],["parent/2459",[519,3.777]],["name/2460",[791,79.449]],["parent/2460",[519,3.777]],["name/2461",[151,59.99]],["parent/2461",[519,3.777]],["name/2462",[689,69.894]],["parent/2462",[519,3.777]],["name/2463",[792,79.449]],["parent/2463",[519,3.777]],["name/2464",[132,53.8]],["parent/2464",[519,3.777]],["name/2465",[793,79.449]],["parent/2465",[519,3.777]],["name/2466",[159,59.99]],["parent/2466",[519,3.777]],["name/2467",[139,59.99]],["parent/2467",[519,3.777]],["name/2468",[110,56.225]],["parent/2468",[519,3.777]],["name/2469",[687,69.894]],["parent/2469",[519,3.777]],["name/2470",[794,79.449]],["parent/2470",[519,3.777]],["name/2471",[166,59.99]],["parent/2471",[519,3.777]],["name/2472",[782,73.571]],["parent/2472",[519,3.777]],["name/2473",[740,69.894]],["parent/2473",[519,3.777]],["name/2474",[795,79.449]],["parent/2474",[519,3.777]],["name/2475",[796,79.449]],["parent/2475",[519,3.777]],["name/2476",[27,44.364]],["parent/2476",[519,3.777]],["name/2477",[677,64.189]],["parent/2477",[519,3.777]],["name/2478",[437,46.491]],["parent/2478",[519,3.777]],["name/2479",[678,69.894]],["parent/2479",[519,3.777]],["name/2480",[679,69.894]],["parent/2480",[519,3.777]],["name/2481",[680,69.894]],["parent/2481",[519,3.777]],["name/2482",[681,69.894]],["parent/2482",[519,3.777]],["name/2483",[682,69.894]],["parent/2483",[519,3.777]],["name/2484",[683,69.894]],["parent/2484",[519,3.777]],["name/2485",[684,69.894]],["parent/2485",[519,3.777]],["name/2486",[218,68.463]],["parent/2486",[519,3.777]],["name/2487",[685,69.894]],["parent/2487",[519,3.777]],["name/2488",[165,59.434]],["parent/2488",[519,3.777]],["name/2489",[686,69.894]],["parent/2489",[519,3.777]],["name/2490",[688,69.894]],["parent/2490",[519,3.777]],["name/2491",[690,69.894]],["parent/2491",[519,3.777]],["name/2492",[144,58.908]],["parent/2492",[519,3.777]],["name/2493",[691,67.211]],["parent/2493",[519,3.777]],["name/2494",[692,69.894]],["parent/2494",[519,3.777]],["name/2495",[187,56.625]],["parent/2495",[519,3.777]],["name/2496",[693,69.894]],["parent/2496",[519,3.777]],["name/2497",[111,43.126]],["parent/2497",[519,3.777]],["name/2498",[112,57.042]],["parent/2498",[519,3.777]],["name/2499",[113,54.768]],["parent/2499",[519,3.777]],["name/2500",[19,52.639]],["parent/2500",[519,3.777]],["name/2501",[1,49.392]],["parent/2501",[519,3.777]],["name/2502",[114,59.99]],["parent/2502",[797,6.175]],["name/2503",[27,44.364]],["parent/2503",[797,6.175]],["name/2504",[116,59.99]],["parent/2504",[797,6.175]],["name/2505",[117,59.99]],["parent/2505",[797,6.175]],["name/2506",[118,57.042]],["parent/2506",[797,6.175]],["name/2507",[119,59.99]],["parent/2507",[797,6.175]],["name/2508",[120,59.99]],["parent/2508",[797,6.175]],["name/2509",[121,57.477]],["parent/2509",[797,6.175]],["name/2510",[122,59.99]],["parent/2510",[797,6.175]],["name/2511",[123,59.99]],["parent/2511",[797,6.175]],["name/2512",[124,56.625]],["parent/2512",[797,6.175]],["name/2513",[68,40.948]],["parent/2513",[797,6.175]],["name/2514",[125,58.408]],["parent/2514",[797,6.175]],["name/2515",[126,59.99]],["parent/2515",[519,3.777]],["name/2516",[127,59.99]],["parent/2516",[519,3.777]],["name/2517",[128,59.434]],["parent/2517",[519,3.777]],["name/2518",[129,59.99]],["parent/2518",[519,3.777]],["name/2519",[130,54.112]],["parent/2519",[519,3.777]],["name/2520",[131,54.112]],["parent/2520",[519,3.777]],["name/2521",[133,59.99]],["parent/2521",[519,3.777]],["name/2522",[134,59.99]],["parent/2522",[519,3.777]],["name/2523",[135,59.99]],["parent/2523",[519,3.777]],["name/2524",[136,59.99]],["parent/2524",[519,3.777]],["name/2525",[137,59.434]],["parent/2525",[519,3.777]],["name/2526",[138,59.99]],["parent/2526",[519,3.777]],["name/2527",[140,59.99]],["parent/2527",[519,3.777]],["name/2528",[141,59.99]],["parent/2528",[519,3.777]],["name/2529",[142,59.99]],["parent/2529",[519,3.777]],["name/2530",[143,59.99]],["parent/2530",[519,3.777]],["name/2531",[145,59.434]],["parent/2531",[519,3.777]],["name/2532",[146,59.434]],["parent/2532",[519,3.777]],["name/2533",[147,59.434]],["parent/2533",[519,3.777]],["name/2534",[148,59.434]],["parent/2534",[519,3.777]],["name/2535",[149,59.99]],["parent/2535",[519,3.777]],["name/2536",[150,59.99]],["parent/2536",[519,3.777]],["name/2537",[152,59.99]],["parent/2537",[519,3.777]],["name/2538",[153,59.99]],["parent/2538",[519,3.777]],["name/2539",[154,59.99]],["parent/2539",[519,3.777]],["name/2540",[155,59.99]],["parent/2540",[519,3.777]],["name/2541",[156,59.99]],["parent/2541",[519,3.777]],["name/2542",[157,57.932]],["parent/2542",[519,3.777]],["name/2543",[158,59.99]],["parent/2543",[519,3.777]],["name/2544",[160,59.99]],["parent/2544",[519,3.777]],["name/2545",[161,59.99]],["parent/2545",[519,3.777]],["name/2546",[162,59.99]],["parent/2546",[519,3.777]],["name/2547",[163,56.225]],["parent/2547",[519,3.777]],["name/2548",[164,59.434]],["parent/2548",[519,3.777]],["name/2549",[167,59.99]],["parent/2549",[519,3.777]],["name/2550",[168,59.99]],["parent/2550",[519,3.777]],["name/2551",[169,59.99]],["parent/2551",[519,3.777]],["name/2552",[170,59.99]],["parent/2552",[519,3.777]],["name/2553",[172,59.434]],["parent/2553",[519,3.777]],["name/2554",[173,59.434]],["parent/2554",[519,3.777]],["name/2555",[28,50.218]],["parent/2555",[519,3.777]],["name/2556",[24,49.196]],["parent/2556",[519,3.777]],["name/2557",[43,52.369]],["parent/2557",[519,3.777]],["name/2558",[44,52.369]],["parent/2558",[519,3.777]],["name/2559",[174,53.8]],["parent/2559",[519,3.777]],["name/2560",[175,58.908]],["parent/2560",[519,3.777]],["name/2561",[176,59.434]],["parent/2561",[519,3.777]],["name/2562",[177,59.434]],["parent/2562",[519,3.777]],["name/2563",[178,59.434]],["parent/2563",[519,3.777]],["name/2564",[179,59.434]],["parent/2564",[519,3.777]],["name/2565",[180,59.434]],["parent/2565",[519,3.777]],["name/2566",[181,59.434]],["parent/2566",[519,3.777]],["name/2567",[182,59.434]],["parent/2567",[519,3.777]],["name/2568",[183,59.434]],["parent/2568",[519,3.777]],["name/2569",[109,59.434]],["parent/2569",[519,3.777]],["name/2570",[184,57.932]],["parent/2570",[519,3.777]],["name/2571",[185,59.434]],["parent/2571",[519,3.777]],["name/2572",[186,59.434]],["parent/2572",[519,3.777]],["name/2573",[188,58.908]],["parent/2573",[519,3.777]],["name/2574",[189,59.434]],["parent/2574",[519,3.777]],["name/2575",[190,59.434]],["parent/2575",[519,3.777]],["name/2576",[191,59.434]],["parent/2576",[519,3.777]],["name/2577",[192,59.434]],["parent/2577",[519,3.777]],["name/2578",[193,59.434]],["parent/2578",[519,3.777]],["name/2579",[36,53.202]],["parent/2579",[519,3.777]],["name/2580",[34,53.202]],["parent/2580",[519,3.777]],["name/2581",[35,53.202]],["parent/2581",[519,3.777]],["name/2582",[46,46.792]],["parent/2582",[519,3.777]],["name/2583",[47,46.792]],["parent/2583",[519,3.777]],["name/2584",[48,46.792]],["parent/2584",[519,3.777]],["name/2585",[49,46.792]],["parent/2585",[519,3.777]],["name/2586",[50,46.792]],["parent/2586",[519,3.777]],["name/2587",[51,46.792]],["parent/2587",[519,3.777]],["name/2588",[52,46.792]],["parent/2588",[519,3.777]],["name/2589",[53,46.792]],["parent/2589",[519,3.777]],["name/2590",[54,46.792]],["parent/2590",[519,3.777]],["name/2591",[55,46.792]],["parent/2591",[519,3.777]],["name/2592",[56,46.792]],["parent/2592",[519,3.777]],["name/2593",[57,46.792]],["parent/2593",[519,3.777]],["name/2594",[58,46.792]],["parent/2594",[519,3.777]],["name/2595",[59,46.792]],["parent/2595",[519,3.777]],["name/2596",[60,46.792]],["parent/2596",[519,3.777]],["name/2597",[61,46.792]],["parent/2597",[519,3.777]],["name/2598",[62,46.792]],["parent/2598",[519,3.777]],["name/2599",[63,46.792]],["parent/2599",[519,3.777]],["name/2600",[64,46.792]],["parent/2600",[519,3.777]],["name/2601",[65,46.491]],["parent/2601",[519,3.777]],["name/2602",[66,46.491]],["parent/2602",[519,3.777]],["name/2603",[67,46.792]],["parent/2603",[519,3.777]],["name/2604",[68,40.948]],["parent/2604",[519,3.777]],["name/2605",[69,46.344]],["parent/2605",[519,3.777]],["name/2606",[70,46.344]],["parent/2606",[519,3.777]],["name/2607",[71,46.792]],["parent/2607",[519,3.777]],["name/2608",[72,46.056]],["parent/2608",[519,3.777]],["name/2609",[73,46.64]],["parent/2609",[519,3.777]],["name/2610",[74,46.792]],["parent/2610",[519,3.777]],["name/2611",[75,46.792]],["parent/2611",[519,3.777]],["name/2612",[76,46.792]],["parent/2612",[519,3.777]],["name/2613",[77,46.64]],["parent/2613",[519,3.777]],["name/2614",[78,46.199]],["parent/2614",[519,3.777]],["name/2615",[79,46.199]],["parent/2615",[519,3.777]],["name/2616",[520,67.211]],["parent/2616",[]],["name/2617",[17,43.782]],["parent/2617",[520,6.632]],["name/2618",[798,84.557]],["parent/2618",[520,6.632]],["name/2619",[799,84.557]],["parent/2619",[520,6.632]],["name/2620",[171,57.042]],["parent/2620",[520,6.632]],["name/2621",[800,84.557]],["parent/2621",[520,6.632]],["name/2622",[801,84.557]],["parent/2622",[520,6.632]],["name/2623",[521,46.344]],["parent/2623",[]],["name/2624",[10,39.376]],["parent/2624",[521,4.573]],["name/2625",[802,84.557]],["parent/2625",[521,4.573]],["name/2626",[14,53.8]],["parent/2626",[521,4.573]],["name/2627",[16,46.64]],["parent/2627",[521,4.573]],["name/2628",[17,43.782]],["parent/2628",[521,4.573]],["name/2629",[803,84.557]],["parent/2629",[521,4.573]],["name/2630",[804,84.557]],["parent/2630",[521,4.573]],["name/2631",[805,84.557]],["parent/2631",[521,4.573]],["name/2632",[806,84.557]],["parent/2632",[521,4.573]],["name/2633",[807,84.557]],["parent/2633",[521,4.573]],["name/2634",[366,65.098]],["parent/2634",[521,4.573]],["name/2635",[24,49.196]],["parent/2635",[521,4.573]],["name/2636",[808,84.557]],["parent/2636",[521,4.573]],["name/2637",[809,84.557]],["parent/2637",[521,4.573]],["name/2638",[810,84.557]],["parent/2638",[521,4.573]],["name/2639",[11,57.932]],["parent/2639",[521,4.573]],["name/2640",[621,79.449]],["parent/2640",[521,4.573]],["name/2641",[27,44.364]],["parent/2641",[521,4.573]],["name/2642",[37,55.841]],["parent/2642",[521,4.573]],["name/2643",[38,55.47]],["parent/2643",[521,4.573]],["name/2644",[130,54.112]],["parent/2644",[521,4.573]],["name/2645",[131,54.112]],["parent/2645",[521,4.573]],["name/2646",[132,53.8]],["parent/2646",[521,4.573]],["name/2647",[28,50.218]],["parent/2647",[521,4.573]],["name/2648",[174,53.8]],["parent/2648",[521,4.573]],["name/2649",[253,61.204]],["parent/2649",[521,4.573]],["name/2650",[365,65.098]],["parent/2650",[521,4.573]],["name/2651",[367,64.189]],["parent/2651",[521,4.573]],["name/2652",[368,65.098]],["parent/2652",[521,4.573]],["name/2653",[369,65.098]],["parent/2653",[521,4.573]],["name/2654",[46,46.792]],["parent/2654",[521,4.573]],["name/2655",[47,46.792]],["parent/2655",[521,4.573]],["name/2656",[48,46.792]],["parent/2656",[521,4.573]],["name/2657",[49,46.792]],["parent/2657",[521,4.573]],["name/2658",[50,46.792]],["parent/2658",[521,4.573]],["name/2659",[51,46.792]],["parent/2659",[521,4.573]],["name/2660",[52,46.792]],["parent/2660",[521,4.573]],["name/2661",[53,46.792]],["parent/2661",[521,4.573]],["name/2662",[54,46.792]],["parent/2662",[521,4.573]],["name/2663",[55,46.792]],["parent/2663",[521,4.573]],["name/2664",[56,46.792]],["parent/2664",[521,4.573]],["name/2665",[57,46.792]],["parent/2665",[521,4.573]],["name/2666",[58,46.792]],["parent/2666",[521,4.573]],["name/2667",[59,46.792]],["parent/2667",[521,4.573]],["name/2668",[60,46.792]],["parent/2668",[521,4.573]],["name/2669",[61,46.792]],["parent/2669",[521,4.573]],["name/2670",[62,46.792]],["parent/2670",[521,4.573]],["name/2671",[63,46.792]],["parent/2671",[521,4.573]],["name/2672",[64,46.792]],["parent/2672",[521,4.573]],["name/2673",[65,46.491]],["parent/2673",[521,4.573]],["name/2674",[66,46.491]],["parent/2674",[521,4.573]],["name/2675",[67,46.792]],["parent/2675",[521,4.573]],["name/2676",[68,40.948]],["parent/2676",[521,4.573]],["name/2677",[69,46.344]],["parent/2677",[521,4.573]],["name/2678",[70,46.344]],["parent/2678",[521,4.573]],["name/2679",[71,46.792]],["parent/2679",[521,4.573]],["name/2680",[72,46.056]],["parent/2680",[521,4.573]],["name/2681",[73,46.64]],["parent/2681",[521,4.573]],["name/2682",[74,46.792]],["parent/2682",[521,4.573]],["name/2683",[75,46.792]],["parent/2683",[521,4.573]],["name/2684",[76,46.792]],["parent/2684",[521,4.573]],["name/2685",[77,46.64]],["parent/2685",[521,4.573]],["name/2686",[78,46.199]],["parent/2686",[521,4.573]],["name/2687",[79,46.199]],["parent/2687",[521,4.573]],["name/2688",[494,40.289]],["parent/2688",[]],["name/2689",[10,39.376]],["parent/2689",[494,3.975]],["name/2690",[106,59.99]],["parent/2690",[494,3.975]],["name/2691",[16,46.64]],["parent/2691",[494,3.975]],["name/2692",[17,43.782]],["parent/2692",[494,3.975]],["name/2693",[109,59.434]],["parent/2693",[494,3.975]],["name/2694",[110,56.225]],["parent/2694",[494,3.975]],["name/2695",[27,44.364]],["parent/2695",[494,3.975]],["name/2696",[111,43.126]],["parent/2696",[494,3.975]],["name/2697",[112,57.042]],["parent/2697",[494,3.975]],["name/2698",[113,54.768]],["parent/2698",[494,3.975]],["name/2699",[19,52.639]],["parent/2699",[494,3.975]],["name/2700",[1,49.392]],["parent/2700",[494,3.975]],["name/2701",[114,59.99]],["parent/2701",[811,6.175]],["name/2702",[27,44.364]],["parent/2702",[811,6.175]],["name/2703",[116,59.99]],["parent/2703",[811,6.175]],["name/2704",[117,59.99]],["parent/2704",[811,6.175]],["name/2705",[118,57.042]],["parent/2705",[811,6.175]],["name/2706",[119,59.99]],["parent/2706",[811,6.175]],["name/2707",[120,59.99]],["parent/2707",[811,6.175]],["name/2708",[121,57.477]],["parent/2708",[811,6.175]],["name/2709",[122,59.99]],["parent/2709",[811,6.175]],["name/2710",[123,59.99]],["parent/2710",[811,6.175]],["name/2711",[124,56.625]],["parent/2711",[811,6.175]],["name/2712",[68,40.948]],["parent/2712",[811,6.175]],["name/2713",[125,58.408]],["parent/2713",[811,6.175]],["name/2714",[126,59.99]],["parent/2714",[494,3.975]],["name/2715",[127,59.99]],["parent/2715",[494,3.975]],["name/2716",[128,59.434]],["parent/2716",[494,3.975]],["name/2717",[129,59.99]],["parent/2717",[494,3.975]],["name/2718",[130,54.112]],["parent/2718",[494,3.975]],["name/2719",[131,54.112]],["parent/2719",[494,3.975]],["name/2720",[132,53.8]],["parent/2720",[494,3.975]],["name/2721",[133,59.99]],["parent/2721",[494,3.975]],["name/2722",[134,59.99]],["parent/2722",[494,3.975]],["name/2723",[135,59.99]],["parent/2723",[494,3.975]],["name/2724",[136,59.99]],["parent/2724",[494,3.975]],["name/2725",[137,59.434]],["parent/2725",[494,3.975]],["name/2726",[138,59.99]],["parent/2726",[494,3.975]],["name/2727",[139,59.99]],["parent/2727",[494,3.975]],["name/2728",[140,59.99]],["parent/2728",[494,3.975]],["name/2729",[141,59.99]],["parent/2729",[494,3.975]],["name/2730",[142,59.99]],["parent/2730",[494,3.975]],["name/2731",[143,59.99]],["parent/2731",[494,3.975]],["name/2732",[144,58.908]],["parent/2732",[494,3.975]],["name/2733",[145,59.434]],["parent/2733",[494,3.975]],["name/2734",[146,59.434]],["parent/2734",[494,3.975]],["name/2735",[147,59.434]],["parent/2735",[494,3.975]],["name/2736",[148,59.434]],["parent/2736",[494,3.975]],["name/2737",[149,59.99]],["parent/2737",[494,3.975]],["name/2738",[150,59.99]],["parent/2738",[494,3.975]],["name/2739",[151,59.99]],["parent/2739",[494,3.975]],["name/2740",[152,59.99]],["parent/2740",[494,3.975]],["name/2741",[153,59.99]],["parent/2741",[494,3.975]],["name/2742",[154,59.99]],["parent/2742",[494,3.975]],["name/2743",[155,59.99]],["parent/2743",[494,3.975]],["name/2744",[156,59.99]],["parent/2744",[494,3.975]],["name/2745",[157,57.932]],["parent/2745",[494,3.975]],["name/2746",[158,59.99]],["parent/2746",[494,3.975]],["name/2747",[159,59.99]],["parent/2747",[494,3.975]],["name/2748",[160,59.99]],["parent/2748",[494,3.975]],["name/2749",[161,59.99]],["parent/2749",[494,3.975]],["name/2750",[162,59.99]],["parent/2750",[494,3.975]],["name/2751",[163,56.225]],["parent/2751",[494,3.975]],["name/2752",[164,59.434]],["parent/2752",[494,3.975]],["name/2753",[165,59.434]],["parent/2753",[494,3.975]],["name/2754",[166,59.99]],["parent/2754",[494,3.975]],["name/2755",[167,59.99]],["parent/2755",[494,3.975]],["name/2756",[168,59.99]],["parent/2756",[494,3.975]],["name/2757",[169,59.99]],["parent/2757",[494,3.975]],["name/2758",[170,59.99]],["parent/2758",[494,3.975]],["name/2759",[171,57.042]],["parent/2759",[494,3.975]],["name/2760",[172,59.434]],["parent/2760",[494,3.975]],["name/2761",[173,59.434]],["parent/2761",[494,3.975]],["name/2762",[28,50.218]],["parent/2762",[494,3.975]],["name/2763",[24,49.196]],["parent/2763",[494,3.975]],["name/2764",[43,52.369]],["parent/2764",[494,3.975]],["name/2765",[44,52.369]],["parent/2765",[494,3.975]],["name/2766",[174,53.8]],["parent/2766",[494,3.975]],["name/2767",[175,58.908]],["parent/2767",[494,3.975]],["name/2768",[176,59.434]],["parent/2768",[494,3.975]],["name/2769",[177,59.434]],["parent/2769",[494,3.975]],["name/2770",[178,59.434]],["parent/2770",[494,3.975]],["name/2771",[179,59.434]],["parent/2771",[494,3.975]],["name/2772",[180,59.434]],["parent/2772",[494,3.975]],["name/2773",[181,59.434]],["parent/2773",[494,3.975]],["name/2774",[182,59.434]],["parent/2774",[494,3.975]],["name/2775",[183,59.434]],["parent/2775",[494,3.975]],["name/2776",[184,57.932]],["parent/2776",[494,3.975]],["name/2777",[185,59.434]],["parent/2777",[494,3.975]],["name/2778",[186,59.434]],["parent/2778",[494,3.975]],["name/2779",[187,56.625]],["parent/2779",[494,3.975]],["name/2780",[188,58.908]],["parent/2780",[494,3.975]],["name/2781",[189,59.434]],["parent/2781",[494,3.975]],["name/2782",[190,59.434]],["parent/2782",[494,3.975]],["name/2783",[191,59.434]],["parent/2783",[494,3.975]],["name/2784",[192,59.434]],["parent/2784",[494,3.975]],["name/2785",[193,59.434]],["parent/2785",[494,3.975]],["name/2786",[36,53.202]],["parent/2786",[494,3.975]],["name/2787",[34,53.202]],["parent/2787",[494,3.975]],["name/2788",[35,53.202]],["parent/2788",[494,3.975]],["name/2789",[46,46.792]],["parent/2789",[494,3.975]],["name/2790",[47,46.792]],["parent/2790",[494,3.975]],["name/2791",[48,46.792]],["parent/2791",[494,3.975]],["name/2792",[49,46.792]],["parent/2792",[494,3.975]],["name/2793",[50,46.792]],["parent/2793",[494,3.975]],["name/2794",[51,46.792]],["parent/2794",[494,3.975]],["name/2795",[52,46.792]],["parent/2795",[494,3.975]],["name/2796",[53,46.792]],["parent/2796",[494,3.975]],["name/2797",[54,46.792]],["parent/2797",[494,3.975]],["name/2798",[55,46.792]],["parent/2798",[494,3.975]],["name/2799",[56,46.792]],["parent/2799",[494,3.975]],["name/2800",[57,46.792]],["parent/2800",[494,3.975]],["name/2801",[58,46.792]],["parent/2801",[494,3.975]],["name/2802",[59,46.792]],["parent/2802",[494,3.975]],["name/2803",[60,46.792]],["parent/2803",[494,3.975]],["name/2804",[61,46.792]],["parent/2804",[494,3.975]],["name/2805",[62,46.792]],["parent/2805",[494,3.975]],["name/2806",[63,46.792]],["parent/2806",[494,3.975]],["name/2807",[64,46.792]],["parent/2807",[494,3.975]],["name/2808",[65,46.491]],["parent/2808",[494,3.975]],["name/2809",[66,46.491]],["parent/2809",[494,3.975]],["name/2810",[67,46.792]],["parent/2810",[494,3.975]],["name/2811",[68,40.948]],["parent/2811",[494,3.975]],["name/2812",[69,46.344]],["parent/2812",[494,3.975]],["name/2813",[70,46.344]],["parent/2813",[494,3.975]],["name/2814",[71,46.792]],["parent/2814",[494,3.975]],["name/2815",[72,46.056]],["parent/2815",[494,3.975]],["name/2816",[73,46.64]],["parent/2816",[494,3.975]],["name/2817",[74,46.792]],["parent/2817",[494,3.975]],["name/2818",[75,46.792]],["parent/2818",[494,3.975]],["name/2819",[76,46.792]],["parent/2819",[494,3.975]],["name/2820",[77,46.64]],["parent/2820",[494,3.975]],["name/2821",[78,46.199]],["parent/2821",[494,3.975]],["name/2822",[79,46.199]],["parent/2822",[494,3.975]],["name/2823",[542,68.463]],["parent/2823",[]],["name/2824",[82,69.894]],["parent/2824",[542,6.755]],["name/2825",[81,69.894]],["parent/2825",[542,6.755]],["name/2826",[83,69.894]],["parent/2826",[542,6.755]],["name/2827",[812,79.449]],["parent/2827",[542,6.755]],["name/2828",[813,79.449]],["parent/2828",[542,6.755]],["name/2829",[522,47.102]],["parent/2829",[]],["name/2830",[10,39.376]],["parent/2830",[522,4.648]],["name/2831",[14,53.8]],["parent/2831",[522,4.648]],["name/2832",[15,59.434]],["parent/2832",[522,4.648]],["name/2833",[16,46.64]],["parent/2833",[522,4.648]],["name/2834",[17,43.782]],["parent/2834",[522,4.648]],["name/2835",[24,49.196]],["parent/2835",[522,4.648]],["name/2836",[28,50.218]],["parent/2836",[522,4.648]],["name/2837",[29,60.578]],["parent/2837",[522,4.648]],["name/2838",[30,60.578]],["parent/2838",[522,4.648]],["name/2839",[25,60.578]],["parent/2839",[522,4.648]],["name/2840",[31,60.578]],["parent/2840",[522,4.648]],["name/2841",[32,60.578]],["parent/2841",[522,4.648]],["name/2842",[33,60.578]],["parent/2842",[522,4.648]],["name/2843",[34,53.202]],["parent/2843",[522,4.648]],["name/2844",[35,53.202]],["parent/2844",[522,4.648]],["name/2845",[36,53.202]],["parent/2845",[522,4.648]],["name/2846",[37,55.841]],["parent/2846",[522,4.648]],["name/2847",[38,55.47]],["parent/2847",[522,4.648]],["name/2848",[39,60.578]],["parent/2848",[522,4.648]],["name/2849",[40,59.434]],["parent/2849",[522,4.648]],["name/2850",[41,60.578]],["parent/2850",[522,4.648]],["name/2851",[42,60.578]],["parent/2851",[522,4.648]],["name/2852",[43,52.369]],["parent/2852",[522,4.648]],["name/2853",[44,52.369]],["parent/2853",[522,4.648]],["name/2854",[27,44.364]],["parent/2854",[522,4.648]],["name/2855",[45,60.578]],["parent/2855",[522,4.648]],["name/2856",[46,46.792]],["parent/2856",[522,4.648]],["name/2857",[47,46.792]],["parent/2857",[522,4.648]],["name/2858",[48,46.792]],["parent/2858",[522,4.648]],["name/2859",[49,46.792]],["parent/2859",[522,4.648]],["name/2860",[50,46.792]],["parent/2860",[522,4.648]],["name/2861",[51,46.792]],["parent/2861",[522,4.648]],["name/2862",[52,46.792]],["parent/2862",[522,4.648]],["name/2863",[53,46.792]],["parent/2863",[522,4.648]],["name/2864",[54,46.792]],["parent/2864",[522,4.648]],["name/2865",[55,46.792]],["parent/2865",[522,4.648]],["name/2866",[56,46.792]],["parent/2866",[522,4.648]],["name/2867",[57,46.792]],["parent/2867",[522,4.648]],["name/2868",[58,46.792]],["parent/2868",[522,4.648]],["name/2869",[59,46.792]],["parent/2869",[522,4.648]],["name/2870",[60,46.792]],["parent/2870",[522,4.648]],["name/2871",[61,46.792]],["parent/2871",[522,4.648]],["name/2872",[62,46.792]],["parent/2872",[522,4.648]],["name/2873",[63,46.792]],["parent/2873",[522,4.648]],["name/2874",[64,46.792]],["parent/2874",[522,4.648]],["name/2875",[65,46.491]],["parent/2875",[522,4.648]],["name/2876",[66,46.491]],["parent/2876",[522,4.648]],["name/2877",[67,46.792]],["parent/2877",[522,4.648]],["name/2878",[68,40.948]],["parent/2878",[522,4.648]],["name/2879",[69,46.344]],["parent/2879",[522,4.648]],["name/2880",[70,46.344]],["parent/2880",[522,4.648]],["name/2881",[71,46.792]],["parent/2881",[522,4.648]],["name/2882",[72,46.056]],["parent/2882",[522,4.648]],["name/2883",[73,46.64]],["parent/2883",[522,4.648]],["name/2884",[74,46.792]],["parent/2884",[522,4.648]],["name/2885",[75,46.792]],["parent/2885",[522,4.648]],["name/2886",[76,46.792]],["parent/2886",[522,4.648]],["name/2887",[77,46.64]],["parent/2887",[522,4.648]],["name/2888",[78,46.199]],["parent/2888",[522,4.648]],["name/2889",[79,46.199]],["parent/2889",[522,4.648]],["name/2890",[814,71.565]],["parent/2890",[]],["name/2891",[815,84.557]],["parent/2891",[814,7.061]],["name/2892",[816,84.557]],["parent/2892",[814,7.061]],["name/2893",[817,84.557]],["parent/2893",[814,7.061]],["name/2894",[818,84.557]],["parent/2894",[814,7.061]],["name/2895",[819,76.084]],["parent/2895",[]],["name/2896",[7,60.578]],["parent/2896",[819,7.507]],["name/2897",[820,84.557]],["parent/2897",[819,7.507]],["name/2898",[821,84.557]],["parent/2898",[]],["name/2899",[503,60.578]],["parent/2899",[]],["name/2900",[9,57.042]],["parent/2900",[503,5.977]],["name/2901",[17,43.782]],["parent/2901",[503,5.977]],["name/2902",[157,57.932]],["parent/2902",[503,5.977]],["name/2903",[822,84.557]],["parent/2903",[503,5.977]],["name/2904",[184,57.932]],["parent/2904",[503,5.977]],["name/2905",[823,84.557]],["parent/2905",[503,5.977]],["name/2906",[24,49.196]],["parent/2906",[503,5.977]],["name/2907",[824,84.557]],["parent/2907",[503,5.977]],["name/2908",[825,84.557]],["parent/2908",[503,5.977]],["name/2909",[826,84.557]],["parent/2909",[503,5.977]],["name/2910",[163,56.225]],["parent/2910",[503,5.977]],["name/2911",[110,56.225]],["parent/2911",[503,5.977]],["name/2912",[187,56.625]],["parent/2912",[503,5.977]],["name/2913",[827,61.871]],["parent/2913",[]],["name/2914",[828,84.557]],["parent/2914",[827,6.105]],["name/2915",[829,84.557]],["parent/2915",[827,6.105]],["name/2916",[830,84.557]],["parent/2916",[827,6.105]],["name/2917",[831,84.557]],["parent/2917",[827,6.105]],["name/2918",[832,84.557]],["parent/2918",[827,6.105]],["name/2919",[833,84.557]],["parent/2919",[827,6.105]],["name/2920",[834,79.449]],["parent/2920",[827,6.105]],["name/2921",[835,79.449]],["parent/2921",[827,6.105]],["name/2922",[0,58.908]],["parent/2922",[827,6.105]],["name/2923",[836,79.449]],["parent/2923",[827,6.105]],["name/2924",[837,84.557]],["parent/2924",[827,6.105]],["name/2925",[838,84.557]],["parent/2925",[827,6.105]],["name/2926",[839,84.557]],["parent/2926",[827,6.105]],["name/2927",[504,49.592]],["parent/2927",[]],["name/2928",[10,39.376]],["parent/2928",[504,4.893]],["name/2929",[16,46.64]],["parent/2929",[504,4.893]],["name/2930",[17,43.782]],["parent/2930",[504,4.893]],["name/2931",[19,52.639]],["parent/2931",[504,4.893]],["name/2932",[840,84.557]],["parent/2932",[504,4.893]],["name/2933",[132,53.8]],["parent/2933",[504,4.893]],["name/2934",[130,54.112]],["parent/2934",[504,4.893]],["name/2935",[131,54.112]],["parent/2935",[504,4.893]],["name/2936",[841,84.557]],["parent/2936",[504,4.893]],["name/2937",[842,84.557]],["parent/2937",[504,4.893]],["name/2938",[27,44.364]],["parent/2938",[504,4.893]],["name/2939",[46,46.792]],["parent/2939",[504,4.893]],["name/2940",[47,46.792]],["parent/2940",[504,4.893]],["name/2941",[48,46.792]],["parent/2941",[504,4.893]],["name/2942",[49,46.792]],["parent/2942",[504,4.893]],["name/2943",[50,46.792]],["parent/2943",[504,4.893]],["name/2944",[51,46.792]],["parent/2944",[504,4.893]],["name/2945",[52,46.792]],["parent/2945",[504,4.893]],["name/2946",[53,46.792]],["parent/2946",[504,4.893]],["name/2947",[54,46.792]],["parent/2947",[504,4.893]],["name/2948",[55,46.792]],["parent/2948",[504,4.893]],["name/2949",[56,46.792]],["parent/2949",[504,4.893]],["name/2950",[57,46.792]],["parent/2950",[504,4.893]],["name/2951",[58,46.792]],["parent/2951",[504,4.893]],["name/2952",[59,46.792]],["parent/2952",[504,4.893]],["name/2953",[60,46.792]],["parent/2953",[504,4.893]],["name/2954",[61,46.792]],["parent/2954",[504,4.893]],["name/2955",[62,46.792]],["parent/2955",[504,4.893]],["name/2956",[63,46.792]],["parent/2956",[504,4.893]],["name/2957",[64,46.792]],["parent/2957",[504,4.893]],["name/2958",[65,46.491]],["parent/2958",[504,4.893]],["name/2959",[66,46.491]],["parent/2959",[504,4.893]],["name/2960",[67,46.792]],["parent/2960",[504,4.893]],["name/2961",[68,40.948]],["parent/2961",[504,4.893]],["name/2962",[69,46.344]],["parent/2962",[504,4.893]],["name/2963",[70,46.344]],["parent/2963",[504,4.893]],["name/2964",[71,46.792]],["parent/2964",[504,4.893]],["name/2965",[72,46.056]],["parent/2965",[504,4.893]],["name/2966",[73,46.64]],["parent/2966",[504,4.893]],["name/2967",[74,46.792]],["parent/2967",[504,4.893]],["name/2968",[75,46.792]],["parent/2968",[504,4.893]],["name/2969",[76,46.792]],["parent/2969",[504,4.893]],["name/2970",[77,46.64]],["parent/2970",[504,4.893]],["name/2971",[78,46.199]],["parent/2971",[504,4.893]],["name/2972",[79,46.199]],["parent/2972",[504,4.893]],["name/2973",[843,76.084]],["parent/2973",[]],["name/2974",[407,40.131]],["parent/2974",[843,7.507]],["name/2975",[8,44.981]],["parent/2975",[843,7.507]],["name/2976",[844,76.084]],["parent/2976",[]],["name/2977",[845,79.449]],["parent/2977",[844,7.507]],["name/2978",[8,44.981]],["parent/2978",[844,7.507]],["name/2979",[846,73.571]],["parent/2979",[]],["name/2980",[845,79.449]],["parent/2980",[846,7.259]],["name/2981",[8,44.981]],["parent/2981",[846,7.259]],["name/2982",[18,57.477]],["parent/2982",[846,7.259]],["name/2983",[847,84.557]],["parent/2983",[]],["name/2984",[848,84.557]],["parent/2984",[]],["name/2985",[849,84.557]],["parent/2985",[]],["name/2986",[415,69.894]],["parent/2986",[]],["name/2987",[850,84.557]],["parent/2987",[415,6.896]],["name/2988",[851,84.557]],["parent/2988",[415,6.896]],["name/2989",[523,55.841]],["parent/2989",[]],["name/2990",[852,84.557]],["parent/2990",[523,5.51]],["name/2991",[853,84.557]],["parent/2991",[523,5.51]],["name/2992",[854,84.557]],["parent/2992",[523,5.51]],["name/2993",[855,84.557]],["parent/2993",[523,5.51]],["name/2994",[856,84.557]],["parent/2994",[523,5.51]],["name/2995",[857,84.557]],["parent/2995",[523,5.51]],["name/2996",[858,84.557]],["parent/2996",[523,5.51]],["name/2997",[859,84.557]],["parent/2997",[523,5.51]],["name/2998",[860,84.557]],["parent/2998",[523,5.51]],["name/2999",[861,84.557]],["parent/2999",[523,5.51]],["name/3000",[420,76.084]],["parent/3000",[523,5.51]],["name/3001",[862,84.557]],["parent/3001",[523,5.51]],["name/3002",[17,43.782]],["parent/3002",[523,5.51]],["name/3003",[863,84.557]],["parent/3003",[523,5.51]],["name/3004",[864,84.557]],["parent/3004",[523,5.51]],["name/3005",[865,84.557]],["parent/3005",[523,5.51]],["name/3006",[866,84.557]],["parent/3006",[523,5.51]],["name/3007",[867,84.557]],["parent/3007",[523,5.51]],["name/3008",[868,84.557]],["parent/3008",[523,5.51]],["name/3009",[869,84.557]],["parent/3009",[523,5.51]],["name/3010",[870,84.557]],["parent/3010",[523,5.51]],["name/3011",[871,84.557]],["parent/3011",[523,5.51]],["name/3012",[872,84.557]],["parent/3012",[523,5.51]],["name/3013",[873,84.557]],["parent/3013",[523,5.51]],["name/3014",[113,54.768]],["parent/3014",[]],["name/3015",[744,71.565]],["parent/3015",[113,5.404]],["name/3016",[745,71.565]],["parent/3016",[113,5.404]],["name/3017",[415,69.894]],["parent/3017",[113,5.404]],["name/3018",[419,76.084]],["parent/3018",[113,5.404]],["name/3019",[0,58.908]],["parent/3019",[113,5.404]],["name/3020",[874,84.557]],["parent/3020",[113,5.404]],["name/3021",[8,44.981]],["parent/3021",[113,5.404]],["name/3022",[98,67.211]],["parent/3022",[113,5.404]],["name/3023",[298,45.639]],["parent/3023",[113,5.404]],["name/3024",[875,84.557]],["parent/3024",[113,5.404]],["name/3025",[876,79.449]],["parent/3025",[113,5.404]],["name/3026",[877,66.099]],["parent/3026",[]],["name/3027",[7,60.578]],["parent/3027",[877,6.522]],["name/3028",[878,79.449]],["parent/3028",[877,6.522]],["name/3029",[879,79.449]],["parent/3029",[877,6.522]],["name/3030",[880,79.449]],["parent/3030",[877,6.522]],["name/3031",[881,79.449]],["parent/3031",[877,6.522]],["name/3032",[882,79.449]],["parent/3032",[877,6.522]],["name/3033",[883,79.449]],["parent/3033",[877,6.522]],["name/3034",[884,79.449]],["parent/3034",[877,6.522]],["name/3035",[885,73.571]],["parent/3035",[]],["name/3036",[410,63.355]],["parent/3036",[885,7.259]],["name/3037",[409,64.189]],["parent/3037",[885,7.259]],["name/3038",[18,57.477]],["parent/3038",[885,7.259]],["name/3039",[886,69.894]],["parent/3039",[]],["name/3040",[410,63.355]],["parent/3040",[886,6.896]],["name/3041",[18,57.477]],["parent/3041",[886,6.896]],["name/3042",[887,84.557]],["parent/3042",[886,6.896]],["name/3043",[409,64.189]],["parent/3043",[886,6.896]],["name/3044",[888,84.557]],["parent/3044",[886,6.896]],["name/3045",[889,67.211]],["parent/3045",[]],["name/3046",[112,57.042]],["parent/3046",[889,6.632]],["name/3047",[410,63.355]],["parent/3047",[889,6.632]],["name/3048",[0,58.908]],["parent/3048",[889,6.632]],["name/3049",[409,64.189]],["parent/3049",[889,6.632]],["name/3050",[18,57.477]],["parent/3050",[889,6.632]],["name/3051",[747,69.894]],["parent/3051",[889,6.632]],["name/3052",[748,69.894]],["parent/3052",[889,6.632]],["name/3053",[407,40.131]],["parent/3053",[]],["name/3054",[10,39.376]],["parent/3054",[407,3.96]],["name/3055",[106,59.99]],["parent/3055",[407,3.96]],["name/3056",[16,46.64]],["parent/3056",[407,3.96]],["name/3057",[17,43.782]],["parent/3057",[407,3.96]],["name/3058",[111,43.126]],["parent/3058",[407,3.96]],["name/3059",[112,57.042]],["parent/3059",[407,3.96]],["name/3060",[113,54.768]],["parent/3060",[407,3.96]],["name/3061",[19,52.639]],["parent/3061",[407,3.96]],["name/3062",[1,49.392]],["parent/3062",[407,3.96]],["name/3063",[114,59.99]],["parent/3063",[890,6.175]],["name/3064",[27,44.364]],["parent/3064",[890,6.175]],["name/3065",[116,59.99]],["parent/3065",[890,6.175]],["name/3066",[117,59.99]],["parent/3066",[890,6.175]],["name/3067",[118,57.042]],["parent/3067",[890,6.175]],["name/3068",[119,59.99]],["parent/3068",[890,6.175]],["name/3069",[120,59.99]],["parent/3069",[890,6.175]],["name/3070",[121,57.477]],["parent/3070",[890,6.175]],["name/3071",[122,59.99]],["parent/3071",[890,6.175]],["name/3072",[123,59.99]],["parent/3072",[890,6.175]],["name/3073",[124,56.625]],["parent/3073",[890,6.175]],["name/3074",[68,40.948]],["parent/3074",[890,6.175]],["name/3075",[125,58.408]],["parent/3075",[890,6.175]],["name/3076",[126,59.99]],["parent/3076",[407,3.96]],["name/3077",[127,59.99]],["parent/3077",[407,3.96]],["name/3078",[128,59.434]],["parent/3078",[407,3.96]],["name/3079",[129,59.99]],["parent/3079",[407,3.96]],["name/3080",[130,54.112]],["parent/3080",[407,3.96]],["name/3081",[131,54.112]],["parent/3081",[407,3.96]],["name/3082",[132,53.8]],["parent/3082",[407,3.96]],["name/3083",[133,59.99]],["parent/3083",[407,3.96]],["name/3084",[134,59.99]],["parent/3084",[407,3.96]],["name/3085",[135,59.99]],["parent/3085",[407,3.96]],["name/3086",[136,59.99]],["parent/3086",[407,3.96]],["name/3087",[137,59.434]],["parent/3087",[407,3.96]],["name/3088",[138,59.99]],["parent/3088",[407,3.96]],["name/3089",[139,59.99]],["parent/3089",[407,3.96]],["name/3090",[140,59.99]],["parent/3090",[407,3.96]],["name/3091",[141,59.99]],["parent/3091",[407,3.96]],["name/3092",[142,59.99]],["parent/3092",[407,3.96]],["name/3093",[143,59.99]],["parent/3093",[407,3.96]],["name/3094",[144,58.908]],["parent/3094",[407,3.96]],["name/3095",[145,59.434]],["parent/3095",[407,3.96]],["name/3096",[146,59.434]],["parent/3096",[407,3.96]],["name/3097",[147,59.434]],["parent/3097",[407,3.96]],["name/3098",[148,59.434]],["parent/3098",[407,3.96]],["name/3099",[149,59.99]],["parent/3099",[407,3.96]],["name/3100",[150,59.99]],["parent/3100",[407,3.96]],["name/3101",[151,59.99]],["parent/3101",[407,3.96]],["name/3102",[152,59.99]],["parent/3102",[407,3.96]],["name/3103",[153,59.99]],["parent/3103",[407,3.96]],["name/3104",[154,59.99]],["parent/3104",[407,3.96]],["name/3105",[155,59.99]],["parent/3105",[407,3.96]],["name/3106",[156,59.99]],["parent/3106",[407,3.96]],["name/3107",[157,57.932]],["parent/3107",[407,3.96]],["name/3108",[158,59.99]],["parent/3108",[407,3.96]],["name/3109",[159,59.99]],["parent/3109",[407,3.96]],["name/3110",[160,59.99]],["parent/3110",[407,3.96]],["name/3111",[161,59.99]],["parent/3111",[407,3.96]],["name/3112",[162,59.99]],["parent/3112",[407,3.96]],["name/3113",[163,56.225]],["parent/3113",[407,3.96]],["name/3114",[164,59.434]],["parent/3114",[407,3.96]],["name/3115",[165,59.434]],["parent/3115",[407,3.96]],["name/3116",[166,59.99]],["parent/3116",[407,3.96]],["name/3117",[167,59.99]],["parent/3117",[407,3.96]],["name/3118",[168,59.99]],["parent/3118",[407,3.96]],["name/3119",[169,59.99]],["parent/3119",[407,3.96]],["name/3120",[170,59.99]],["parent/3120",[407,3.96]],["name/3121",[171,57.042]],["parent/3121",[407,3.96]],["name/3122",[172,59.434]],["parent/3122",[407,3.96]],["name/3123",[173,59.434]],["parent/3123",[407,3.96]],["name/3124",[28,50.218]],["parent/3124",[407,3.96]],["name/3125",[24,49.196]],["parent/3125",[407,3.96]],["name/3126",[43,52.369]],["parent/3126",[407,3.96]],["name/3127",[44,52.369]],["parent/3127",[407,3.96]],["name/3128",[174,53.8]],["parent/3128",[407,3.96]],["name/3129",[175,58.908]],["parent/3129",[407,3.96]],["name/3130",[176,59.434]],["parent/3130",[407,3.96]],["name/3131",[177,59.434]],["parent/3131",[407,3.96]],["name/3132",[178,59.434]],["parent/3132",[407,3.96]],["name/3133",[179,59.434]],["parent/3133",[407,3.96]],["name/3134",[180,59.434]],["parent/3134",[407,3.96]],["name/3135",[181,59.434]],["parent/3135",[407,3.96]],["name/3136",[182,59.434]],["parent/3136",[407,3.96]],["name/3137",[183,59.434]],["parent/3137",[407,3.96]],["name/3138",[109,59.434]],["parent/3138",[407,3.96]],["name/3139",[184,57.932]],["parent/3139",[407,3.96]],["name/3140",[185,59.434]],["parent/3140",[407,3.96]],["name/3141",[110,56.225]],["parent/3141",[407,3.96]],["name/3142",[186,59.434]],["parent/3142",[407,3.96]],["name/3143",[187,56.625]],["parent/3143",[407,3.96]],["name/3144",[188,58.908]],["parent/3144",[407,3.96]],["name/3145",[189,59.434]],["parent/3145",[407,3.96]],["name/3146",[190,59.434]],["parent/3146",[407,3.96]],["name/3147",[191,59.434]],["parent/3147",[407,3.96]],["name/3148",[192,59.434]],["parent/3148",[407,3.96]],["name/3149",[193,59.434]],["parent/3149",[407,3.96]],["name/3150",[36,53.202]],["parent/3150",[407,3.96]],["name/3151",[34,53.202]],["parent/3151",[407,3.96]],["name/3152",[35,53.202]],["parent/3152",[407,3.96]],["name/3153",[46,46.792]],["parent/3153",[407,3.96]],["name/3154",[47,46.792]],["parent/3154",[407,3.96]],["name/3155",[48,46.792]],["parent/3155",[407,3.96]],["name/3156",[49,46.792]],["parent/3156",[407,3.96]],["name/3157",[50,46.792]],["parent/3157",[407,3.96]],["name/3158",[51,46.792]],["parent/3158",[407,3.96]],["name/3159",[52,46.792]],["parent/3159",[407,3.96]],["name/3160",[53,46.792]],["parent/3160",[407,3.96]],["name/3161",[27,44.364]],["parent/3161",[407,3.96]],["name/3162",[54,46.792]],["parent/3162",[407,3.96]],["name/3163",[55,46.792]],["parent/3163",[407,3.96]],["name/3164",[56,46.792]],["parent/3164",[407,3.96]],["name/3165",[57,46.792]],["parent/3165",[407,3.96]],["name/3166",[58,46.792]],["parent/3166",[407,3.96]],["name/3167",[59,46.792]],["parent/3167",[407,3.96]],["name/3168",[60,46.792]],["parent/3168",[407,3.96]],["name/3169",[61,46.792]],["parent/3169",[407,3.96]],["name/3170",[62,46.792]],["parent/3170",[407,3.96]],["name/3171",[63,46.792]],["parent/3171",[407,3.96]],["name/3172",[64,46.792]],["parent/3172",[407,3.96]],["name/3173",[65,46.491]],["parent/3173",[407,3.96]],["name/3174",[66,46.491]],["parent/3174",[407,3.96]],["name/3175",[67,46.792]],["parent/3175",[407,3.96]],["name/3176",[68,40.948]],["parent/3176",[407,3.96]],["name/3177",[69,46.344]],["parent/3177",[407,3.96]],["name/3178",[70,46.344]],["parent/3178",[407,3.96]],["name/3179",[71,46.792]],["parent/3179",[407,3.96]],["name/3180",[72,46.056]],["parent/3180",[407,3.96]],["name/3181",[73,46.64]],["parent/3181",[407,3.96]],["name/3182",[74,46.792]],["parent/3182",[407,3.96]],["name/3183",[75,46.792]],["parent/3183",[407,3.96]],["name/3184",[76,46.792]],["parent/3184",[407,3.96]],["name/3185",[77,46.64]],["parent/3185",[407,3.96]],["name/3186",[78,46.199]],["parent/3186",[407,3.96]],["name/3187",[79,46.199]],["parent/3187",[407,3.96]],["name/3188",[891,57.932]],["parent/3188",[]],["name/3189",[0,58.908]],["parent/3189",[891,5.716]],["name/3190",[121,57.477]],["parent/3190",[891,5.716]],["name/3191",[892,84.557]],["parent/3191",[891,5.716]],["name/3192",[575,79.449]],["parent/3192",[891,5.716]],["name/3193",[744,71.565]],["parent/3193",[891,5.716]],["name/3194",[745,71.565]],["parent/3194",[891,5.716]],["name/3195",[893,84.557]],["parent/3195",[891,5.716]],["name/3196",[364,73.571]],["parent/3196",[891,5.716]],["name/3197",[677,64.189]],["parent/3197",[891,5.716]],["name/3198",[876,79.449]],["parent/3198",[891,5.716]],["name/3199",[894,84.557]],["parent/3199",[891,5.716]],["name/3200",[230,68.463]],["parent/3200",[891,5.716]],["name/3201",[245,68.463]],["parent/3201",[891,5.716]],["name/3202",[895,84.557]],["parent/3202",[891,5.716]],["name/3203",[112,57.042]],["parent/3203",[891,5.716]],["name/3204",[410,63.355]],["parent/3204",[891,5.716]],["name/3205",[409,64.189]],["parent/3205",[891,5.716]],["name/3206",[18,57.477]],["parent/3206",[891,5.716]],["name/3207",[747,69.894]],["parent/3207",[891,5.716]],["name/3208",[748,69.894]],["parent/3208",[891,5.716]],["name/3209",[524,39.671]],["parent/3209",[]],["name/3210",[9,57.042]],["parent/3210",[524,3.914]],["name/3211",[10,39.376]],["parent/3211",[524,3.914]],["name/3212",[106,59.99]],["parent/3212",[524,3.914]],["name/3213",[16,46.64]],["parent/3213",[524,3.914]],["name/3214",[17,43.782]],["parent/3214",[524,3.914]],["name/3215",[896,84.557]],["parent/3215",[524,3.914]],["name/3216",[24,49.196]],["parent/3216",[524,3.914]],["name/3217",[762,76.084]],["parent/3217",[524,3.914]],["name/3218",[140,59.99]],["parent/3218",[524,3.914]],["name/3219",[253,61.204]],["parent/3219",[524,3.914]],["name/3220",[250,73.571]],["parent/3220",[524,3.914]],["name/3221",[254,73.571]],["parent/3221",[524,3.914]],["name/3222",[897,79.449]],["parent/3222",[524,3.914]],["name/3223",[378,68.463]],["parent/3223",[524,3.914]],["name/3224",[164,59.434]],["parent/3224",[524,3.914]],["name/3225",[64,46.792]],["parent/3225",[524,3.914]],["name/3226",[132,53.8]],["parent/3226",[524,3.914]],["name/3227",[110,56.225]],["parent/3227",[524,3.914]],["name/3228",[27,44.364]],["parent/3228",[524,3.914]],["name/3229",[111,43.126]],["parent/3229",[524,3.914]],["name/3230",[112,57.042]],["parent/3230",[524,3.914]],["name/3231",[113,54.768]],["parent/3231",[524,3.914]],["name/3232",[19,52.639]],["parent/3232",[524,3.914]],["name/3233",[1,49.392]],["parent/3233",[524,3.914]],["name/3234",[114,59.99]],["parent/3234",[898,6.175]],["name/3235",[27,44.364]],["parent/3235",[898,6.175]],["name/3236",[116,59.99]],["parent/3236",[898,6.175]],["name/3237",[117,59.99]],["parent/3237",[898,6.175]],["name/3238",[118,57.042]],["parent/3238",[898,6.175]],["name/3239",[119,59.99]],["parent/3239",[898,6.175]],["name/3240",[120,59.99]],["parent/3240",[898,6.175]],["name/3241",[121,57.477]],["parent/3241",[898,6.175]],["name/3242",[122,59.99]],["parent/3242",[898,6.175]],["name/3243",[123,59.99]],["parent/3243",[898,6.175]],["name/3244",[124,56.625]],["parent/3244",[898,6.175]],["name/3245",[68,40.948]],["parent/3245",[898,6.175]],["name/3246",[125,58.408]],["parent/3246",[898,6.175]],["name/3247",[126,59.99]],["parent/3247",[524,3.914]],["name/3248",[127,59.99]],["parent/3248",[524,3.914]],["name/3249",[128,59.434]],["parent/3249",[524,3.914]],["name/3250",[129,59.99]],["parent/3250",[524,3.914]],["name/3251",[130,54.112]],["parent/3251",[524,3.914]],["name/3252",[131,54.112]],["parent/3252",[524,3.914]],["name/3253",[133,59.99]],["parent/3253",[524,3.914]],["name/3254",[134,59.99]],["parent/3254",[524,3.914]],["name/3255",[135,59.99]],["parent/3255",[524,3.914]],["name/3256",[136,59.99]],["parent/3256",[524,3.914]],["name/3257",[137,59.434]],["parent/3257",[524,3.914]],["name/3258",[138,59.99]],["parent/3258",[524,3.914]],["name/3259",[139,59.99]],["parent/3259",[524,3.914]],["name/3260",[141,59.99]],["parent/3260",[524,3.914]],["name/3261",[142,59.99]],["parent/3261",[524,3.914]],["name/3262",[143,59.99]],["parent/3262",[524,3.914]],["name/3263",[144,58.908]],["parent/3263",[524,3.914]],["name/3264",[145,59.434]],["parent/3264",[524,3.914]],["name/3265",[146,59.434]],["parent/3265",[524,3.914]],["name/3266",[147,59.434]],["parent/3266",[524,3.914]],["name/3267",[148,59.434]],["parent/3267",[524,3.914]],["name/3268",[149,59.99]],["parent/3268",[524,3.914]],["name/3269",[150,59.99]],["parent/3269",[524,3.914]],["name/3270",[151,59.99]],["parent/3270",[524,3.914]],["name/3271",[152,59.99]],["parent/3271",[524,3.914]],["name/3272",[153,59.99]],["parent/3272",[524,3.914]],["name/3273",[154,59.99]],["parent/3273",[524,3.914]],["name/3274",[155,59.99]],["parent/3274",[524,3.914]],["name/3275",[156,59.99]],["parent/3275",[524,3.914]],["name/3276",[157,57.932]],["parent/3276",[524,3.914]],["name/3277",[158,59.99]],["parent/3277",[524,3.914]],["name/3278",[159,59.99]],["parent/3278",[524,3.914]],["name/3279",[160,59.99]],["parent/3279",[524,3.914]],["name/3280",[161,59.99]],["parent/3280",[524,3.914]],["name/3281",[162,59.99]],["parent/3281",[524,3.914]],["name/3282",[163,56.225]],["parent/3282",[524,3.914]],["name/3283",[165,59.434]],["parent/3283",[524,3.914]],["name/3284",[166,59.99]],["parent/3284",[524,3.914]],["name/3285",[167,59.99]],["parent/3285",[524,3.914]],["name/3286",[168,59.99]],["parent/3286",[524,3.914]],["name/3287",[169,59.99]],["parent/3287",[524,3.914]],["name/3288",[170,59.99]],["parent/3288",[524,3.914]],["name/3289",[171,57.042]],["parent/3289",[524,3.914]],["name/3290",[172,59.434]],["parent/3290",[524,3.914]],["name/3291",[173,59.434]],["parent/3291",[524,3.914]],["name/3292",[28,50.218]],["parent/3292",[524,3.914]],["name/3293",[43,52.369]],["parent/3293",[524,3.914]],["name/3294",[44,52.369]],["parent/3294",[524,3.914]],["name/3295",[174,53.8]],["parent/3295",[524,3.914]],["name/3296",[175,58.908]],["parent/3296",[524,3.914]],["name/3297",[176,59.434]],["parent/3297",[524,3.914]],["name/3298",[177,59.434]],["parent/3298",[524,3.914]],["name/3299",[178,59.434]],["parent/3299",[524,3.914]],["name/3300",[179,59.434]],["parent/3300",[524,3.914]],["name/3301",[180,59.434]],["parent/3301",[524,3.914]],["name/3302",[181,59.434]],["parent/3302",[524,3.914]],["name/3303",[182,59.434]],["parent/3303",[524,3.914]],["name/3304",[183,59.434]],["parent/3304",[524,3.914]],["name/3305",[109,59.434]],["parent/3305",[524,3.914]],["name/3306",[184,57.932]],["parent/3306",[524,3.914]],["name/3307",[185,59.434]],["parent/3307",[524,3.914]],["name/3308",[186,59.434]],["parent/3308",[524,3.914]],["name/3309",[187,56.625]],["parent/3309",[524,3.914]],["name/3310",[188,58.908]],["parent/3310",[524,3.914]],["name/3311",[189,59.434]],["parent/3311",[524,3.914]],["name/3312",[190,59.434]],["parent/3312",[524,3.914]],["name/3313",[191,59.434]],["parent/3313",[524,3.914]],["name/3314",[192,59.434]],["parent/3314",[524,3.914]],["name/3315",[193,59.434]],["parent/3315",[524,3.914]],["name/3316",[36,53.202]],["parent/3316",[524,3.914]],["name/3317",[34,53.202]],["parent/3317",[524,3.914]],["name/3318",[35,53.202]],["parent/3318",[524,3.914]],["name/3319",[46,46.792]],["parent/3319",[524,3.914]],["name/3320",[47,46.792]],["parent/3320",[524,3.914]],["name/3321",[48,46.792]],["parent/3321",[524,3.914]],["name/3322",[49,46.792]],["parent/3322",[524,3.914]],["name/3323",[50,46.792]],["parent/3323",[524,3.914]],["name/3324",[51,46.792]],["parent/3324",[524,3.914]],["name/3325",[52,46.792]],["parent/3325",[524,3.914]],["name/3326",[53,46.792]],["parent/3326",[524,3.914]],["name/3327",[54,46.792]],["parent/3327",[524,3.914]],["name/3328",[55,46.792]],["parent/3328",[524,3.914]],["name/3329",[56,46.792]],["parent/3329",[524,3.914]],["name/3330",[57,46.792]],["parent/3330",[524,3.914]],["name/3331",[58,46.792]],["parent/3331",[524,3.914]],["name/3332",[59,46.792]],["parent/3332",[524,3.914]],["name/3333",[60,46.792]],["parent/3333",[524,3.914]],["name/3334",[61,46.792]],["parent/3334",[524,3.914]],["name/3335",[62,46.792]],["parent/3335",[524,3.914]],["name/3336",[63,46.792]],["parent/3336",[524,3.914]],["name/3337",[65,46.491]],["parent/3337",[524,3.914]],["name/3338",[66,46.491]],["parent/3338",[524,3.914]],["name/3339",[67,46.792]],["parent/3339",[524,3.914]],["name/3340",[68,40.948]],["parent/3340",[524,3.914]],["name/3341",[69,46.344]],["parent/3341",[524,3.914]],["name/3342",[70,46.344]],["parent/3342",[524,3.914]],["name/3343",[71,46.792]],["parent/3343",[524,3.914]],["name/3344",[72,46.056]],["parent/3344",[524,3.914]],["name/3345",[73,46.64]],["parent/3345",[524,3.914]],["name/3346",[74,46.792]],["parent/3346",[524,3.914]],["name/3347",[75,46.792]],["parent/3347",[524,3.914]],["name/3348",[76,46.792]],["parent/3348",[524,3.914]],["name/3349",[77,46.64]],["parent/3349",[524,3.914]],["name/3350",[78,46.199]],["parent/3350",[524,3.914]],["name/3351",[79,46.199]],["parent/3351",[524,3.914]],["name/3352",[513,46.64]],["parent/3352",[]],["name/3353",[10,39.376]],["parent/3353",[513,4.602]],["name/3354",[11,57.932]],["parent/3354",[513,4.602]],["name/3355",[14,53.8]],["parent/3355",[513,4.602]],["name/3356",[15,59.434]],["parent/3356",[513,4.602]],["name/3357",[16,46.64]],["parent/3357",[513,4.602]],["name/3358",[17,43.782]],["parent/3358",[513,4.602]],["name/3359",[110,56.225]],["parent/3359",[513,4.602]],["name/3360",[28,50.218]],["parent/3360",[513,4.602]],["name/3361",[24,49.196]],["parent/3361",[513,4.602]],["name/3362",[27,44.364]],["parent/3362",[513,4.602]],["name/3363",[29,60.578]],["parent/3363",[513,4.602]],["name/3364",[30,60.578]],["parent/3364",[513,4.602]],["name/3365",[25,60.578]],["parent/3365",[513,4.602]],["name/3366",[31,60.578]],["parent/3366",[513,4.602]],["name/3367",[32,60.578]],["parent/3367",[513,4.602]],["name/3368",[33,60.578]],["parent/3368",[513,4.602]],["name/3369",[34,53.202]],["parent/3369",[513,4.602]],["name/3370",[35,53.202]],["parent/3370",[513,4.602]],["name/3371",[36,53.202]],["parent/3371",[513,4.602]],["name/3372",[37,55.841]],["parent/3372",[513,4.602]],["name/3373",[38,55.47]],["parent/3373",[513,4.602]],["name/3374",[39,60.578]],["parent/3374",[513,4.602]],["name/3375",[40,59.434]],["parent/3375",[513,4.602]],["name/3376",[41,60.578]],["parent/3376",[513,4.602]],["name/3377",[42,60.578]],["parent/3377",[513,4.602]],["name/3378",[43,52.369]],["parent/3378",[513,4.602]],["name/3379",[44,52.369]],["parent/3379",[513,4.602]],["name/3380",[45,60.578]],["parent/3380",[513,4.602]],["name/3381",[46,46.792]],["parent/3381",[513,4.602]],["name/3382",[47,46.792]],["parent/3382",[513,4.602]],["name/3383",[48,46.792]],["parent/3383",[513,4.602]],["name/3384",[49,46.792]],["parent/3384",[513,4.602]],["name/3385",[50,46.792]],["parent/3385",[513,4.602]],["name/3386",[51,46.792]],["parent/3386",[513,4.602]],["name/3387",[52,46.792]],["parent/3387",[513,4.602]],["name/3388",[53,46.792]],["parent/3388",[513,4.602]],["name/3389",[54,46.792]],["parent/3389",[513,4.602]],["name/3390",[55,46.792]],["parent/3390",[513,4.602]],["name/3391",[56,46.792]],["parent/3391",[513,4.602]],["name/3392",[57,46.792]],["parent/3392",[513,4.602]],["name/3393",[58,46.792]],["parent/3393",[513,4.602]],["name/3394",[59,46.792]],["parent/3394",[513,4.602]],["name/3395",[60,46.792]],["parent/3395",[513,4.602]],["name/3396",[61,46.792]],["parent/3396",[513,4.602]],["name/3397",[62,46.792]],["parent/3397",[513,4.602]],["name/3398",[63,46.792]],["parent/3398",[513,4.602]],["name/3399",[64,46.792]],["parent/3399",[513,4.602]],["name/3400",[65,46.491]],["parent/3400",[513,4.602]],["name/3401",[66,46.491]],["parent/3401",[513,4.602]],["name/3402",[67,46.792]],["parent/3402",[513,4.602]],["name/3403",[68,40.948]],["parent/3403",[513,4.602]],["name/3404",[69,46.344]],["parent/3404",[513,4.602]],["name/3405",[70,46.344]],["parent/3405",[513,4.602]],["name/3406",[71,46.792]],["parent/3406",[513,4.602]],["name/3407",[72,46.056]],["parent/3407",[513,4.602]],["name/3408",[73,46.64]],["parent/3408",[513,4.602]],["name/3409",[74,46.792]],["parent/3409",[513,4.602]],["name/3410",[75,46.792]],["parent/3410",[513,4.602]],["name/3411",[76,46.792]],["parent/3411",[513,4.602]],["name/3412",[77,46.64]],["parent/3412",[513,4.602]],["name/3413",[78,46.199]],["parent/3413",[513,4.602]],["name/3414",[79,46.199]],["parent/3414",[513,4.602]],["name/3415",[498,44.981]],["parent/3415",[]],["name/3416",[9,57.042]],["parent/3416",[498,4.438]],["name/3417",[10,39.376]],["parent/3417",[498,4.438]],["name/3418",[338,79.449]],["parent/3418",[498,4.438]],["name/3419",[11,57.932]],["parent/3419",[498,4.438]],["name/3420",[899,84.557]],["parent/3420",[498,4.438]],["name/3421",[900,84.557]],["parent/3421",[498,4.438]],["name/3422",[901,84.557]],["parent/3422",[498,4.438]],["name/3423",[902,84.557]],["parent/3423",[498,4.438]],["name/3424",[903,84.557]],["parent/3424",[498,4.438]],["name/3425",[14,53.8]],["parent/3425",[498,4.438]],["name/3426",[15,59.434]],["parent/3426",[498,4.438]],["name/3427",[16,46.64]],["parent/3427",[498,4.438]],["name/3428",[17,43.782]],["parent/3428",[498,4.438]],["name/3429",[19,52.639]],["parent/3429",[498,4.438]],["name/3430",[1,49.392]],["parent/3430",[498,4.438]],["name/3431",[904,84.557]],["parent/3431",[905,7.507]],["name/3432",[906,84.557]],["parent/3432",[905,7.507]],["name/3433",[22,73.571]],["parent/3433",[905,7.507]],["name/3434",[163,56.225]],["parent/3434",[498,4.438]],["name/3435",[907,84.557]],["parent/3435",[498,4.438]],["name/3436",[908,84.557]],["parent/3436",[498,4.438]],["name/3437",[909,84.557]],["parent/3437",[498,4.438]],["name/3438",[27,44.364]],["parent/3438",[498,4.438]],["name/3439",[24,49.196]],["parent/3439",[498,4.438]],["name/3440",[28,50.218]],["parent/3440",[498,4.438]],["name/3441",[29,60.578]],["parent/3441",[498,4.438]],["name/3442",[30,60.578]],["parent/3442",[498,4.438]],["name/3443",[25,60.578]],["parent/3443",[498,4.438]],["name/3444",[31,60.578]],["parent/3444",[498,4.438]],["name/3445",[32,60.578]],["parent/3445",[498,4.438]],["name/3446",[33,60.578]],["parent/3446",[498,4.438]],["name/3447",[34,53.202]],["parent/3447",[498,4.438]],["name/3448",[35,53.202]],["parent/3448",[498,4.438]],["name/3449",[36,53.202]],["parent/3449",[498,4.438]],["name/3450",[37,55.841]],["parent/3450",[498,4.438]],["name/3451",[38,55.47]],["parent/3451",[498,4.438]],["name/3452",[39,60.578]],["parent/3452",[498,4.438]],["name/3453",[40,59.434]],["parent/3453",[498,4.438]],["name/3454",[41,60.578]],["parent/3454",[498,4.438]],["name/3455",[42,60.578]],["parent/3455",[498,4.438]],["name/3456",[43,52.369]],["parent/3456",[498,4.438]],["name/3457",[44,52.369]],["parent/3457",[498,4.438]],["name/3458",[45,60.578]],["parent/3458",[498,4.438]],["name/3459",[46,46.792]],["parent/3459",[498,4.438]],["name/3460",[47,46.792]],["parent/3460",[498,4.438]],["name/3461",[48,46.792]],["parent/3461",[498,4.438]],["name/3462",[49,46.792]],["parent/3462",[498,4.438]],["name/3463",[50,46.792]],["parent/3463",[498,4.438]],["name/3464",[51,46.792]],["parent/3464",[498,4.438]],["name/3465",[52,46.792]],["parent/3465",[498,4.438]],["name/3466",[53,46.792]],["parent/3466",[498,4.438]],["name/3467",[54,46.792]],["parent/3467",[498,4.438]],["name/3468",[55,46.792]],["parent/3468",[498,4.438]],["name/3469",[56,46.792]],["parent/3469",[498,4.438]],["name/3470",[57,46.792]],["parent/3470",[498,4.438]],["name/3471",[58,46.792]],["parent/3471",[498,4.438]],["name/3472",[59,46.792]],["parent/3472",[498,4.438]],["name/3473",[60,46.792]],["parent/3473",[498,4.438]],["name/3474",[61,46.792]],["parent/3474",[498,4.438]],["name/3475",[62,46.792]],["parent/3475",[498,4.438]],["name/3476",[63,46.792]],["parent/3476",[498,4.438]],["name/3477",[64,46.792]],["parent/3477",[498,4.438]],["name/3478",[65,46.491]],["parent/3478",[498,4.438]],["name/3479",[66,46.491]],["parent/3479",[498,4.438]],["name/3480",[67,46.792]],["parent/3480",[498,4.438]],["name/3481",[68,40.948]],["parent/3481",[498,4.438]],["name/3482",[69,46.344]],["parent/3482",[498,4.438]],["name/3483",[70,46.344]],["parent/3483",[498,4.438]],["name/3484",[71,46.792]],["parent/3484",[498,4.438]],["name/3485",[72,46.056]],["parent/3485",[498,4.438]],["name/3486",[73,46.64]],["parent/3486",[498,4.438]],["name/3487",[74,46.792]],["parent/3487",[498,4.438]],["name/3488",[75,46.792]],["parent/3488",[498,4.438]],["name/3489",[76,46.792]],["parent/3489",[498,4.438]],["name/3490",[77,46.64]],["parent/3490",[498,4.438]],["name/3491",[78,46.199]],["parent/3491",[498,4.438]],["name/3492",[79,46.199]],["parent/3492",[498,4.438]],["name/3493",[525,46.792]],["parent/3493",[]],["name/3494",[10,39.376]],["parent/3494",[525,4.617]],["name/3495",[396,79.449]],["parent/3495",[525,4.617]],["name/3496",[11,57.932]],["parent/3496",[525,4.617]],["name/3497",[14,53.8]],["parent/3497",[525,4.617]],["name/3498",[15,59.434]],["parent/3498",[525,4.617]],["name/3499",[16,46.64]],["parent/3499",[525,4.617]],["name/3500",[17,43.782]],["parent/3500",[525,4.617]],["name/3501",[25,60.578]],["parent/3501",[525,4.617]],["name/3502",[27,44.364]],["parent/3502",[525,4.617]],["name/3503",[24,49.196]],["parent/3503",[525,4.617]],["name/3504",[28,50.218]],["parent/3504",[525,4.617]],["name/3505",[29,60.578]],["parent/3505",[525,4.617]],["name/3506",[30,60.578]],["parent/3506",[525,4.617]],["name/3507",[31,60.578]],["parent/3507",[525,4.617]],["name/3508",[32,60.578]],["parent/3508",[525,4.617]],["name/3509",[33,60.578]],["parent/3509",[525,4.617]],["name/3510",[34,53.202]],["parent/3510",[525,4.617]],["name/3511",[35,53.202]],["parent/3511",[525,4.617]],["name/3512",[36,53.202]],["parent/3512",[525,4.617]],["name/3513",[37,55.841]],["parent/3513",[525,4.617]],["name/3514",[38,55.47]],["parent/3514",[525,4.617]],["name/3515",[39,60.578]],["parent/3515",[525,4.617]],["name/3516",[40,59.434]],["parent/3516",[525,4.617]],["name/3517",[41,60.578]],["parent/3517",[525,4.617]],["name/3518",[42,60.578]],["parent/3518",[525,4.617]],["name/3519",[43,52.369]],["parent/3519",[525,4.617]],["name/3520",[44,52.369]],["parent/3520",[525,4.617]],["name/3521",[45,60.578]],["parent/3521",[525,4.617]],["name/3522",[46,46.792]],["parent/3522",[525,4.617]],["name/3523",[47,46.792]],["parent/3523",[525,4.617]],["name/3524",[48,46.792]],["parent/3524",[525,4.617]],["name/3525",[49,46.792]],["parent/3525",[525,4.617]],["name/3526",[50,46.792]],["parent/3526",[525,4.617]],["name/3527",[51,46.792]],["parent/3527",[525,4.617]],["name/3528",[52,46.792]],["parent/3528",[525,4.617]],["name/3529",[53,46.792]],["parent/3529",[525,4.617]],["name/3530",[54,46.792]],["parent/3530",[525,4.617]],["name/3531",[55,46.792]],["parent/3531",[525,4.617]],["name/3532",[56,46.792]],["parent/3532",[525,4.617]],["name/3533",[57,46.792]],["parent/3533",[525,4.617]],["name/3534",[58,46.792]],["parent/3534",[525,4.617]],["name/3535",[59,46.792]],["parent/3535",[525,4.617]],["name/3536",[60,46.792]],["parent/3536",[525,4.617]],["name/3537",[61,46.792]],["parent/3537",[525,4.617]],["name/3538",[62,46.792]],["parent/3538",[525,4.617]],["name/3539",[63,46.792]],["parent/3539",[525,4.617]],["name/3540",[64,46.792]],["parent/3540",[525,4.617]],["name/3541",[65,46.491]],["parent/3541",[525,4.617]],["name/3542",[66,46.491]],["parent/3542",[525,4.617]],["name/3543",[67,46.792]],["parent/3543",[525,4.617]],["name/3544",[68,40.948]],["parent/3544",[525,4.617]],["name/3545",[69,46.344]],["parent/3545",[525,4.617]],["name/3546",[70,46.344]],["parent/3546",[525,4.617]],["name/3547",[71,46.792]],["parent/3547",[525,4.617]],["name/3548",[72,46.056]],["parent/3548",[525,4.617]],["name/3549",[73,46.64]],["parent/3549",[525,4.617]],["name/3550",[74,46.792]],["parent/3550",[525,4.617]],["name/3551",[75,46.792]],["parent/3551",[525,4.617]],["name/3552",[76,46.792]],["parent/3552",[525,4.617]],["name/3553",[77,46.64]],["parent/3553",[525,4.617]],["name/3554",[78,46.199]],["parent/3554",[525,4.617]],["name/3555",[79,46.199]],["parent/3555",[525,4.617]],["name/3556",[910,84.557]],["parent/3556",[]],["name/3557",[911,79.449]],["parent/3557",[]],["name/3558",[1,49.392]],["parent/3558",[911,7.839]],["name/3559",[912,79.449]],["parent/3559",[]],["name/3560",[1,49.392]],["parent/3560",[912,7.839]],["name/3561",[913,66.099]],["parent/3561",[]],["name/3562",[914,84.557]],["parent/3562",[913,6.522]],["name/3563",[915,84.557]],["parent/3563",[913,6.522]],["name/3564",[916,79.449]],["parent/3564",[913,6.522]],["name/3565",[917,84.557]],["parent/3565",[913,6.522]],["name/3566",[918,84.557]],["parent/3566",[913,6.522]],["name/3567",[919,84.557]],["parent/3567",[913,6.522]],["name/3568",[920,84.557]],["parent/3568",[913,6.522]],["name/3569",[921,84.557]],["parent/3569",[913,6.522]],["name/3570",[922,66.099]],["parent/3570",[]],["name/3571",[923,84.557]],["parent/3571",[922,6.522]],["name/3572",[924,84.557]],["parent/3572",[922,6.522]],["name/3573",[925,84.557]],["parent/3573",[922,6.522]],["name/3574",[926,84.557]],["parent/3574",[922,6.522]],["name/3575",[927,84.557]],["parent/3575",[922,6.522]],["name/3576",[928,84.557]],["parent/3576",[922,6.522]],["name/3577",[929,84.557]],["parent/3577",[922,6.522]],["name/3578",[930,84.557]],["parent/3578",[922,6.522]],["name/3579",[931,84.557]],["parent/3579",[]],["name/3580",[460,76.084]],["parent/3580",[]],["name/3581",[401,73.571]],["parent/3581",[460,7.507]],["name/3582",[461,62.585]],["parent/3582",[]],["name/3583",[9,57.042]],["parent/3583",[461,6.175]],["name/3584",[17,43.782]],["parent/3584",[461,6.175]],["name/3585",[464,76.084]],["parent/3585",[461,6.175]],["name/3586",[932,84.557]],["parent/3586",[461,6.175]],["name/3587",[933,84.557]],["parent/3587",[461,6.175]],["name/3588",[934,84.557]],["parent/3588",[461,6.175]],["name/3589",[935,84.557]],["parent/3589",[461,6.175]],["name/3590",[936,84.557]],["parent/3590",[461,6.175]],["name/3591",[937,84.557]],["parent/3591",[461,6.175]],["name/3592",[916,79.449]],["parent/3592",[461,6.175]],["name/3593",[512,47.922]],["parent/3593",[]],["name/3594",[9,57.042]],["parent/3594",[512,4.728]],["name/3595",[10,39.376]],["parent/3595",[512,4.728]],["name/3596",[16,46.64]],["parent/3596",[512,4.728]],["name/3597",[332,67.211]],["parent/3597",[512,4.728]],["name/3598",[18,57.477]],["parent/3598",[512,4.728]],["name/3599",[1,49.392]],["parent/3599",[512,4.728]],["name/3600",[231,68.463]],["parent/3600",[938,6.755]],["name/3601",[939,84.557]],["parent/3601",[938,6.755]],["name/3602",[940,84.557]],["parent/3602",[938,6.755]],["name/3603",[941,76.084]],["parent/3603",[512,4.728]],["name/3604",[942,84.557]],["parent/3604",[512,4.728]],["name/3605",[943,84.557]],["parent/3605",[512,4.728]],["name/3606",[944,84.557]],["parent/3606",[512,4.728]],["name/3607",[17,43.782]],["parent/3607",[512,4.728]],["name/3608",[19,52.639]],["parent/3608",[512,4.728]],["name/3609",[1,49.392]],["parent/3609",[512,4.728]],["name/3610",[945,76.084]],["parent/3610",[938,6.755]],["name/3611",[946,79.449]],["parent/3611",[938,6.755]],["name/3612",[947,84.557]],["parent/3612",[938,6.755]],["name/3613",[948,84.557]],["parent/3613",[938,6.755]],["name/3614",[108,69.894]],["parent/3614",[512,4.728]],["name/3615",[949,84.557]],["parent/3615",[512,4.728]],["name/3616",[378,68.463]],["parent/3616",[512,4.728]],["name/3617",[950,84.557]],["parent/3617",[512,4.728]],["name/3618",[951,84.557]],["parent/3618",[512,4.728]],["name/3619",[27,44.364]],["parent/3619",[512,4.728]],["name/3620",[46,46.792]],["parent/3620",[512,4.728]],["name/3621",[47,46.792]],["parent/3621",[512,4.728]],["name/3622",[48,46.792]],["parent/3622",[512,4.728]],["name/3623",[49,46.792]],["parent/3623",[512,4.728]],["name/3624",[50,46.792]],["parent/3624",[512,4.728]],["name/3625",[51,46.792]],["parent/3625",[512,4.728]],["name/3626",[52,46.792]],["parent/3626",[512,4.728]],["name/3627",[53,46.792]],["parent/3627",[512,4.728]],["name/3628",[54,46.792]],["parent/3628",[512,4.728]],["name/3629",[55,46.792]],["parent/3629",[512,4.728]],["name/3630",[56,46.792]],["parent/3630",[512,4.728]],["name/3631",[57,46.792]],["parent/3631",[512,4.728]],["name/3632",[58,46.792]],["parent/3632",[512,4.728]],["name/3633",[59,46.792]],["parent/3633",[512,4.728]],["name/3634",[60,46.792]],["parent/3634",[512,4.728]],["name/3635",[61,46.792]],["parent/3635",[512,4.728]],["name/3636",[62,46.792]],["parent/3636",[512,4.728]],["name/3637",[63,46.792]],["parent/3637",[512,4.728]],["name/3638",[64,46.792]],["parent/3638",[512,4.728]],["name/3639",[65,46.491]],["parent/3639",[512,4.728]],["name/3640",[66,46.491]],["parent/3640",[512,4.728]],["name/3641",[67,46.792]],["parent/3641",[512,4.728]],["name/3642",[68,40.948]],["parent/3642",[512,4.728]],["name/3643",[69,46.344]],["parent/3643",[512,4.728]],["name/3644",[70,46.344]],["parent/3644",[512,4.728]],["name/3645",[71,46.792]],["parent/3645",[512,4.728]],["name/3646",[72,46.056]],["parent/3646",[512,4.728]],["name/3647",[73,46.64]],["parent/3647",[512,4.728]],["name/3648",[74,46.792]],["parent/3648",[512,4.728]],["name/3649",[75,46.792]],["parent/3649",[512,4.728]],["name/3650",[76,46.792]],["parent/3650",[512,4.728]],["name/3651",[77,46.64]],["parent/3651",[512,4.728]],["name/3652",[78,46.199]],["parent/3652",[512,4.728]],["name/3653",[79,46.199]],["parent/3653",[512,4.728]],["name/3654",[952,71.565]],["parent/3654",[]],["name/3655",[468,79.449]],["parent/3655",[952,7.061]],["name/3656",[583,76.084]],["parent/3656",[952,7.061]],["name/3657",[659,79.449]],["parent/3657",[952,7.061]],["name/3658",[953,84.557]],["parent/3658",[952,7.061]],["name/3659",[526,61.204]],["parent/3659",[]],["name/3660",[954,84.557]],["parent/3660",[526,6.039]],["name/3661",[955,84.557]],["parent/3661",[526,6.039]],["name/3662",[956,84.557]],["parent/3662",[526,6.039]],["name/3663",[17,43.782]],["parent/3663",[526,6.039]],["name/3664",[275,73.571]],["parent/3664",[526,6.039]],["name/3665",[957,84.557]],["parent/3665",[526,6.039]],["name/3666",[958,84.557]],["parent/3666",[526,6.039]],["name/3667",[959,84.557]],["parent/3667",[526,6.039]],["name/3668",[960,84.557]],["parent/3668",[526,6.039]],["name/3669",[961,84.557]],["parent/3669",[526,6.039]],["name/3670",[962,84.557]],["parent/3670",[526,6.039]],["name/3671",[963,84.557]],["parent/3671",[526,6.039]],["name/3672",[964,84.557]],["parent/3672",[526,6.039]],["name/3673",[965,84.557]],["parent/3673",[]],["name/3674",[966,71.565]],["parent/3674",[]],["name/3675",[230,68.463]],["parent/3675",[966,7.061]],["name/3676",[245,68.463]],["parent/3676",[966,7.061]],["name/3677",[7,60.578]],["parent/3677",[966,7.061]],["name/3678",[263,66.099]],["parent/3678",[966,7.061]],["name/3679",[967,79.449]],["parent/3679",[]],["name/3680",[968,84.557]],["parent/3680",[967,7.839]],["name/3681",[527,51.355]],["parent/3681",[]],["name/3682",[10,39.376]],["parent/3682",[527,5.067]],["name/3683",[17,43.782]],["parent/3683",[527,5.067]],["name/3684",[275,73.571]],["parent/3684",[527,5.067]],["name/3685",[279,76.084]],["parent/3685",[527,5.067]],["name/3686",[280,76.084]],["parent/3686",[527,5.067]],["name/3687",[281,76.084]],["parent/3687",[527,5.067]],["name/3688",[282,76.084]],["parent/3688",[527,5.067]],["name/3689",[283,76.084]],["parent/3689",[527,5.067]],["name/3690",[284,76.084]],["parent/3690",[527,5.067]],["name/3691",[285,76.084]],["parent/3691",[527,5.067]],["name/3692",[286,76.084]],["parent/3692",[527,5.067]],["name/3693",[124,56.625]],["parent/3693",[527,5.067]],["name/3694",[288,76.084]],["parent/3694",[527,5.067]],["name/3695",[287,73.571]],["parent/3695",[527,5.067]],["name/3696",[289,76.084]],["parent/3696",[527,5.067]],["name/3697",[290,76.084]],["parent/3697",[527,5.067]],["name/3698",[291,76.084]],["parent/3698",[527,5.067]],["name/3699",[292,76.084]],["parent/3699",[527,5.067]],["name/3700",[293,76.084]],["parent/3700",[527,5.067]],["name/3701",[294,76.084]],["parent/3701",[527,5.067]],["name/3702",[295,76.084]],["parent/3702",[527,5.067]],["name/3703",[296,76.084]],["parent/3703",[527,5.067]],["name/3704",[297,76.084]],["parent/3704",[527,5.067]],["name/3705",[298,45.639]],["parent/3705",[527,5.067]],["name/3706",[299,76.084]],["parent/3706",[527,5.067]],["name/3707",[301,76.084]],["parent/3707",[527,5.067]],["name/3708",[302,76.084]],["parent/3708",[527,5.067]],["name/3709",[303,76.084]],["parent/3709",[527,5.067]],["name/3710",[276,76.084]],["parent/3710",[527,5.067]],["name/3711",[277,76.084]],["parent/3711",[527,5.067]],["name/3712",[278,73.571]],["parent/3712",[527,5.067]],["name/3713",[300,76.084]],["parent/3713",[527,5.067]],["name/3714",[304,73.571]],["parent/3714",[527,5.067]],["name/3715",[305,73.571]],["parent/3715",[527,5.067]],["name/3716",[69,46.344]],["parent/3716",[527,5.067]],["name/3717",[70,46.344]],["parent/3717",[527,5.067]],["name/3718",[68,40.948]],["parent/3718",[527,5.067]],["name/3719",[306,76.084]],["parent/3719",[527,5.067]],["name/3720",[969,84.557]],["parent/3720",[]],["name/3721",[543,73.571]],["parent/3721",[]],["name/3722",[273,79.449]],["parent/3722",[543,7.259]],["name/3723",[970,79.449]],["parent/3723",[543,7.259]],["name/3724",[544,71.565]],["parent/3724",[]],["name/3725",[317,71.565]],["parent/3725",[544,7.061]],["name/3726",[234,76.084]],["parent/3726",[544,7.061]],["name/3727",[235,76.084]],["parent/3727",[544,7.061]],["name/3728",[480,62.585]],["parent/3728",[]],["name/3729",[971,84.557]],["parent/3729",[480,6.175]],["name/3730",[972,84.557]],["parent/3730",[480,6.175]],["name/3731",[973,84.557]],["parent/3731",[480,6.175]],["name/3732",[974,84.557]],["parent/3732",[480,6.175]],["name/3733",[975,79.449]],["parent/3733",[480,6.175]],["name/3734",[976,84.557]],["parent/3734",[480,6.175]],["name/3735",[977,84.557]],["parent/3735",[480,6.175]],["name/3736",[17,43.782]],["parent/3736",[480,6.175]],["name/3737",[287,73.571]],["parent/3737",[480,6.175]],["name/3738",[65,46.491]],["parent/3738",[480,6.175]],["name/3739",[490,40.131]],["parent/3739",[]],["name/3740",[10,39.376]],["parent/3740",[490,3.96]],["name/3741",[106,59.99]],["parent/3741",[490,3.96]],["name/3742",[16,46.64]],["parent/3742",[490,3.96]],["name/3743",[17,43.782]],["parent/3743",[490,3.96]],["name/3744",[739,79.449]],["parent/3744",[490,3.96]],["name/3745",[64,46.792]],["parent/3745",[490,3.96]],["name/3746",[110,56.225]],["parent/3746",[490,3.96]],["name/3747",[740,69.894]],["parent/3747",[490,3.96]],["name/3748",[27,44.364]],["parent/3748",[490,3.96]],["name/3749",[111,43.126]],["parent/3749",[490,3.96]],["name/3750",[112,57.042]],["parent/3750",[490,3.96]],["name/3751",[113,54.768]],["parent/3751",[490,3.96]],["name/3752",[19,52.639]],["parent/3752",[490,3.96]],["name/3753",[1,49.392]],["parent/3753",[490,3.96]],["name/3754",[114,59.99]],["parent/3754",[978,6.175]],["name/3755",[27,44.364]],["parent/3755",[978,6.175]],["name/3756",[116,59.99]],["parent/3756",[978,6.175]],["name/3757",[117,59.99]],["parent/3757",[978,6.175]],["name/3758",[118,57.042]],["parent/3758",[978,6.175]],["name/3759",[119,59.99]],["parent/3759",[978,6.175]],["name/3760",[120,59.99]],["parent/3760",[978,6.175]],["name/3761",[121,57.477]],["parent/3761",[978,6.175]],["name/3762",[122,59.99]],["parent/3762",[978,6.175]],["name/3763",[123,59.99]],["parent/3763",[978,6.175]],["name/3764",[124,56.625]],["parent/3764",[978,6.175]],["name/3765",[68,40.948]],["parent/3765",[978,6.175]],["name/3766",[125,58.408]],["parent/3766",[978,6.175]],["name/3767",[126,59.99]],["parent/3767",[490,3.96]],["name/3768",[127,59.99]],["parent/3768",[490,3.96]],["name/3769",[128,59.434]],["parent/3769",[490,3.96]],["name/3770",[129,59.99]],["parent/3770",[490,3.96]],["name/3771",[130,54.112]],["parent/3771",[490,3.96]],["name/3772",[131,54.112]],["parent/3772",[490,3.96]],["name/3773",[132,53.8]],["parent/3773",[490,3.96]],["name/3774",[133,59.99]],["parent/3774",[490,3.96]],["name/3775",[134,59.99]],["parent/3775",[490,3.96]],["name/3776",[135,59.99]],["parent/3776",[490,3.96]],["name/3777",[136,59.99]],["parent/3777",[490,3.96]],["name/3778",[137,59.434]],["parent/3778",[490,3.96]],["name/3779",[138,59.99]],["parent/3779",[490,3.96]],["name/3780",[139,59.99]],["parent/3780",[490,3.96]],["name/3781",[140,59.99]],["parent/3781",[490,3.96]],["name/3782",[141,59.99]],["parent/3782",[490,3.96]],["name/3783",[142,59.99]],["parent/3783",[490,3.96]],["name/3784",[143,59.99]],["parent/3784",[490,3.96]],["name/3785",[144,58.908]],["parent/3785",[490,3.96]],["name/3786",[145,59.434]],["parent/3786",[490,3.96]],["name/3787",[146,59.434]],["parent/3787",[490,3.96]],["name/3788",[147,59.434]],["parent/3788",[490,3.96]],["name/3789",[148,59.434]],["parent/3789",[490,3.96]],["name/3790",[149,59.99]],["parent/3790",[490,3.96]],["name/3791",[150,59.99]],["parent/3791",[490,3.96]],["name/3792",[151,59.99]],["parent/3792",[490,3.96]],["name/3793",[152,59.99]],["parent/3793",[490,3.96]],["name/3794",[153,59.99]],["parent/3794",[490,3.96]],["name/3795",[154,59.99]],["parent/3795",[490,3.96]],["name/3796",[155,59.99]],["parent/3796",[490,3.96]],["name/3797",[156,59.99]],["parent/3797",[490,3.96]],["name/3798",[157,57.932]],["parent/3798",[490,3.96]],["name/3799",[158,59.99]],["parent/3799",[490,3.96]],["name/3800",[159,59.99]],["parent/3800",[490,3.96]],["name/3801",[160,59.99]],["parent/3801",[490,3.96]],["name/3802",[161,59.99]],["parent/3802",[490,3.96]],["name/3803",[162,59.99]],["parent/3803",[490,3.96]],["name/3804",[163,56.225]],["parent/3804",[490,3.96]],["name/3805",[164,59.434]],["parent/3805",[490,3.96]],["name/3806",[165,59.434]],["parent/3806",[490,3.96]],["name/3807",[166,59.99]],["parent/3807",[490,3.96]],["name/3808",[167,59.99]],["parent/3808",[490,3.96]],["name/3809",[168,59.99]],["parent/3809",[490,3.96]],["name/3810",[169,59.99]],["parent/3810",[490,3.96]],["name/3811",[170,59.99]],["parent/3811",[490,3.96]],["name/3812",[171,57.042]],["parent/3812",[490,3.96]],["name/3813",[172,59.434]],["parent/3813",[490,3.96]],["name/3814",[173,59.434]],["parent/3814",[490,3.96]],["name/3815",[28,50.218]],["parent/3815",[490,3.96]],["name/3816",[24,49.196]],["parent/3816",[490,3.96]],["name/3817",[43,52.369]],["parent/3817",[490,3.96]],["name/3818",[44,52.369]],["parent/3818",[490,3.96]],["name/3819",[174,53.8]],["parent/3819",[490,3.96]],["name/3820",[175,58.908]],["parent/3820",[490,3.96]],["name/3821",[176,59.434]],["parent/3821",[490,3.96]],["name/3822",[177,59.434]],["parent/3822",[490,3.96]],["name/3823",[178,59.434]],["parent/3823",[490,3.96]],["name/3824",[179,59.434]],["parent/3824",[490,3.96]],["name/3825",[180,59.434]],["parent/3825",[490,3.96]],["name/3826",[181,59.434]],["parent/3826",[490,3.96]],["name/3827",[182,59.434]],["parent/3827",[490,3.96]],["name/3828",[183,59.434]],["parent/3828",[490,3.96]],["name/3829",[109,59.434]],["parent/3829",[490,3.96]],["name/3830",[184,57.932]],["parent/3830",[490,3.96]],["name/3831",[185,59.434]],["parent/3831",[490,3.96]],["name/3832",[186,59.434]],["parent/3832",[490,3.96]],["name/3833",[187,56.625]],["parent/3833",[490,3.96]],["name/3834",[188,58.908]],["parent/3834",[490,3.96]],["name/3835",[189,59.434]],["parent/3835",[490,3.96]],["name/3836",[190,59.434]],["parent/3836",[490,3.96]],["name/3837",[191,59.434]],["parent/3837",[490,3.96]],["name/3838",[192,59.434]],["parent/3838",[490,3.96]],["name/3839",[193,59.434]],["parent/3839",[490,3.96]],["name/3840",[36,53.202]],["parent/3840",[490,3.96]],["name/3841",[34,53.202]],["parent/3841",[490,3.96]],["name/3842",[35,53.202]],["parent/3842",[490,3.96]],["name/3843",[46,46.792]],["parent/3843",[490,3.96]],["name/3844",[47,46.792]],["parent/3844",[490,3.96]],["name/3845",[48,46.792]],["parent/3845",[490,3.96]],["name/3846",[49,46.792]],["parent/3846",[490,3.96]],["name/3847",[50,46.792]],["parent/3847",[490,3.96]],["name/3848",[51,46.792]],["parent/3848",[490,3.96]],["name/3849",[52,46.792]],["parent/3849",[490,3.96]],["name/3850",[53,46.792]],["parent/3850",[490,3.96]],["name/3851",[54,46.792]],["parent/3851",[490,3.96]],["name/3852",[55,46.792]],["parent/3852",[490,3.96]],["name/3853",[56,46.792]],["parent/3853",[490,3.96]],["name/3854",[57,46.792]],["parent/3854",[490,3.96]],["name/3855",[58,46.792]],["parent/3855",[490,3.96]],["name/3856",[59,46.792]],["parent/3856",[490,3.96]],["name/3857",[60,46.792]],["parent/3857",[490,3.96]],["name/3858",[61,46.792]],["parent/3858",[490,3.96]],["name/3859",[62,46.792]],["parent/3859",[490,3.96]],["name/3860",[63,46.792]],["parent/3860",[490,3.96]],["name/3861",[65,46.491]],["parent/3861",[490,3.96]],["name/3862",[66,46.491]],["parent/3862",[490,3.96]],["name/3863",[67,46.792]],["parent/3863",[490,3.96]],["name/3864",[68,40.948]],["parent/3864",[490,3.96]],["name/3865",[69,46.344]],["parent/3865",[490,3.96]],["name/3866",[70,46.344]],["parent/3866",[490,3.96]],["name/3867",[71,46.792]],["parent/3867",[490,3.96]],["name/3868",[72,46.056]],["parent/3868",[490,3.96]],["name/3869",[73,46.64]],["parent/3869",[490,3.96]],["name/3870",[74,46.792]],["parent/3870",[490,3.96]],["name/3871",[75,46.792]],["parent/3871",[490,3.96]],["name/3872",[76,46.792]],["parent/3872",[490,3.96]],["name/3873",[77,46.64]],["parent/3873",[490,3.96]],["name/3874",[78,46.199]],["parent/3874",[490,3.96]],["name/3875",[79,46.199]],["parent/3875",[490,3.96]],["name/3876",[979,79.449]],["parent/3876",[]],["name/3877",[980,84.557]],["parent/3877",[979,7.839]],["name/3878",[981,63.355]],["parent/3878",[]],["name/3879",[982,84.557]],["parent/3879",[981,6.251]],["name/3880",[983,84.557]],["parent/3880",[981,6.251]],["name/3881",[984,84.557]],["parent/3881",[981,6.251]],["name/3882",[985,84.557]],["parent/3882",[981,6.251]],["name/3883",[986,84.557]],["parent/3883",[981,6.251]],["name/3884",[987,84.557]],["parent/3884",[981,6.251]],["name/3885",[988,84.557]],["parent/3885",[981,6.251]],["name/3886",[989,84.557]],["parent/3886",[981,6.251]],["name/3887",[836,79.449]],["parent/3887",[981,6.251]],["name/3888",[990,84.557]],["parent/3888",[981,6.251]],["name/3889",[991,84.557]],["parent/3889",[981,6.251]],["name/3890",[477,41.383]],["parent/3890",[]],["name/3891",[10,39.376]],["parent/3891",[477,4.083]],["name/3892",[16,46.64]],["parent/3892",[477,4.083]],["name/3893",[992,79.449]],["parent/3893",[477,4.083]],["name/3894",[993,79.449]],["parent/3894",[477,4.083]],["name/3895",[994,79.449]],["parent/3895",[477,4.083]],["name/3896",[17,43.782]],["parent/3896",[477,4.083]],["name/3897",[434,69.894]],["parent/3897",[477,4.083]],["name/3898",[995,79.449]],["parent/3898",[477,4.083]],["name/3899",[996,79.449]],["parent/3899",[477,4.083]],["name/3900",[478,73.571]],["parent/3900",[477,4.083]],["name/3901",[997,79.449]],["parent/3901",[477,4.083]],["name/3902",[998,79.449]],["parent/3902",[477,4.083]],["name/3903",[999,79.449]],["parent/3903",[477,4.083]],["name/3904",[1000,79.449]],["parent/3904",[477,4.083]],["name/3905",[1001,79.449]],["parent/3905",[477,4.083]],["name/3906",[1002,79.449]],["parent/3906",[477,4.083]],["name/3907",[174,53.8]],["parent/3907",[477,4.083]],["name/3908",[1003,79.449]],["parent/3908",[477,4.083]],["name/3909",[1004,79.449]],["parent/3909",[477,4.083]],["name/3910",[254,73.571]],["parent/3910",[477,4.083]],["name/3911",[250,73.571]],["parent/3911",[477,4.083]],["name/3912",[1005,79.449]],["parent/3912",[477,4.083]],["name/3913",[1006,79.449]],["parent/3913",[477,4.083]],["name/3914",[253,61.204]],["parent/3914",[477,4.083]],["name/3915",[28,50.218]],["parent/3915",[477,4.083]],["name/3916",[24,49.196]],["parent/3916",[477,4.083]],["name/3917",[50,46.792]],["parent/3917",[477,4.083]],["name/3918",[1007,79.449]],["parent/3918",[477,4.083]],["name/3919",[1008,79.449]],["parent/3919",[477,4.083]],["name/3920",[1009,79.449]],["parent/3920",[477,4.083]],["name/3921",[1010,79.449]],["parent/3921",[477,4.083]],["name/3922",[1011,79.449]],["parent/3922",[477,4.083]],["name/3923",[1012,79.449]],["parent/3923",[477,4.083]],["name/3924",[1013,76.084]],["parent/3924",[477,4.083]],["name/3925",[1014,71.565]],["parent/3925",[477,4.083]],["name/3926",[1015,76.084]],["parent/3926",[477,4.083]],["name/3927",[1016,79.449]],["parent/3927",[477,4.083]],["name/3928",[64,46.792]],["parent/3928",[477,4.083]],["name/3929",[1017,79.449]],["parent/3929",[477,4.083]],["name/3930",[1018,79.449]],["parent/3930",[477,4.083]],["name/3931",[1019,79.449]],["parent/3931",[477,4.083]],["name/3932",[1020,79.449]],["parent/3932",[477,4.083]],["name/3933",[144,58.908]],["parent/3933",[477,4.083]],["name/3934",[691,67.211]],["parent/3934",[477,4.083]],["name/3935",[1021,79.449]],["parent/3935",[477,4.083]],["name/3936",[1022,79.449]],["parent/3936",[477,4.083]],["name/3937",[157,57.932]],["parent/3937",[477,4.083]],["name/3938",[1023,79.449]],["parent/3938",[477,4.083]],["name/3939",[1024,79.449]],["parent/3939",[477,4.083]],["name/3940",[1025,79.449]],["parent/3940",[477,4.083]],["name/3941",[1026,79.449]],["parent/3941",[477,4.083]],["name/3942",[371,76.084]],["parent/3942",[477,4.083]],["name/3943",[1027,79.449]],["parent/3943",[477,4.083]],["name/3944",[1028,79.449]],["parent/3944",[477,4.083]],["name/3945",[1029,79.449]],["parent/3945",[477,4.083]],["name/3946",[1030,79.449]],["parent/3946",[477,4.083]],["name/3947",[1031,79.449]],["parent/3947",[477,4.083]],["name/3948",[1032,79.449]],["parent/3948",[477,4.083]],["name/3949",[1033,79.449]],["parent/3949",[477,4.083]],["name/3950",[1034,79.449]],["parent/3950",[477,4.083]],["name/3951",[1035,79.449]],["parent/3951",[477,4.083]],["name/3952",[1036,79.449]],["parent/3952",[477,4.083]],["name/3953",[1037,79.449]],["parent/3953",[477,4.083]],["name/3954",[1038,79.449]],["parent/3954",[477,4.083]],["name/3955",[184,57.932]],["parent/3955",[477,4.083]],["name/3956",[1039,79.449]],["parent/3956",[477,4.083]],["name/3957",[11,57.932]],["parent/3957",[477,4.083]],["name/3958",[27,44.364]],["parent/3958",[477,4.083]],["name/3959",[1040,79.449]],["parent/3959",[477,4.083]],["name/3960",[1041,79.449]],["parent/3960",[477,4.083]],["name/3961",[1042,79.449]],["parent/3961",[477,4.083]],["name/3962",[1043,79.449]],["parent/3962",[477,4.083]],["name/3963",[46,46.792]],["parent/3963",[477,4.083]],["name/3964",[47,46.792]],["parent/3964",[477,4.083]],["name/3965",[48,46.792]],["parent/3965",[477,4.083]],["name/3966",[49,46.792]],["parent/3966",[477,4.083]],["name/3967",[51,46.792]],["parent/3967",[477,4.083]],["name/3968",[52,46.792]],["parent/3968",[477,4.083]],["name/3969",[53,46.792]],["parent/3969",[477,4.083]],["name/3970",[54,46.792]],["parent/3970",[477,4.083]],["name/3971",[55,46.792]],["parent/3971",[477,4.083]],["name/3972",[56,46.792]],["parent/3972",[477,4.083]],["name/3973",[57,46.792]],["parent/3973",[477,4.083]],["name/3974",[58,46.792]],["parent/3974",[477,4.083]],["name/3975",[59,46.792]],["parent/3975",[477,4.083]],["name/3976",[60,46.792]],["parent/3976",[477,4.083]],["name/3977",[61,46.792]],["parent/3977",[477,4.083]],["name/3978",[62,46.792]],["parent/3978",[477,4.083]],["name/3979",[63,46.792]],["parent/3979",[477,4.083]],["name/3980",[65,46.491]],["parent/3980",[477,4.083]],["name/3981",[66,46.491]],["parent/3981",[477,4.083]],["name/3982",[67,46.792]],["parent/3982",[477,4.083]],["name/3983",[68,40.948]],["parent/3983",[477,4.083]],["name/3984",[69,46.344]],["parent/3984",[477,4.083]],["name/3985",[70,46.344]],["parent/3985",[477,4.083]],["name/3986",[71,46.792]],["parent/3986",[477,4.083]],["name/3987",[72,46.056]],["parent/3987",[477,4.083]],["name/3988",[73,46.64]],["parent/3988",[477,4.083]],["name/3989",[74,46.792]],["parent/3989",[477,4.083]],["name/3990",[75,46.792]],["parent/3990",[477,4.083]],["name/3991",[76,46.792]],["parent/3991",[477,4.083]],["name/3992",[77,46.64]],["parent/3992",[477,4.083]],["name/3993",[78,46.199]],["parent/3993",[477,4.083]],["name/3994",[79,46.199]],["parent/3994",[477,4.083]],["name/3995",[545,66.099]],["parent/3995",[]],["name/3996",[1044,84.557]],["parent/3996",[545,6.522]],["name/3997",[1045,84.557]],["parent/3997",[545,6.522]],["name/3998",[1046,76.084]],["parent/3998",[545,6.522]],["name/3999",[1047,84.557]],["parent/3999",[545,6.522]],["name/4000",[1048,84.557]],["parent/4000",[545,6.522]],["name/4001",[1049,84.557]],["parent/4001",[545,6.522]],["name/4002",[317,71.565]],["parent/4002",[545,6.522]],["name/4003",[516,47.102]],["parent/4003",[]],["name/4004",[10,39.376]],["parent/4004",[516,4.648]],["name/4005",[18,57.477]],["parent/4005",[516,4.648]],["name/4006",[941,76.084]],["parent/4006",[516,4.648]],["name/4007",[14,53.8]],["parent/4007",[516,4.648]],["name/4008",[16,46.64]],["parent/4008",[516,4.648]],["name/4009",[17,43.782]],["parent/4009",[516,4.648]],["name/4010",[107,76.084]],["parent/4010",[516,4.648]],["name/4011",[108,69.894]],["parent/4011",[516,4.648]],["name/4012",[27,44.364]],["parent/4012",[516,4.648]],["name/4013",[1050,84.557]],["parent/4013",[516,4.648]],["name/4014",[1051,84.557]],["parent/4014",[516,4.648]],["name/4015",[1052,84.557]],["parent/4015",[516,4.648]],["name/4016",[37,55.841]],["parent/4016",[516,4.648]],["name/4017",[38,55.47]],["parent/4017",[516,4.648]],["name/4018",[130,54.112]],["parent/4018",[516,4.648]],["name/4019",[131,54.112]],["parent/4019",[516,4.648]],["name/4020",[132,53.8]],["parent/4020",[516,4.648]],["name/4021",[24,49.196]],["parent/4021",[516,4.648]],["name/4022",[28,50.218]],["parent/4022",[516,4.648]],["name/4023",[174,53.8]],["parent/4023",[516,4.648]],["name/4024",[253,61.204]],["parent/4024",[516,4.648]],["name/4025",[365,65.098]],["parent/4025",[516,4.648]],["name/4026",[366,65.098]],["parent/4026",[516,4.648]],["name/4027",[367,64.189]],["parent/4027",[516,4.648]],["name/4028",[368,65.098]],["parent/4028",[516,4.648]],["name/4029",[369,65.098]],["parent/4029",[516,4.648]],["name/4030",[46,46.792]],["parent/4030",[516,4.648]],["name/4031",[47,46.792]],["parent/4031",[516,4.648]],["name/4032",[48,46.792]],["parent/4032",[516,4.648]],["name/4033",[49,46.792]],["parent/4033",[516,4.648]],["name/4034",[50,46.792]],["parent/4034",[516,4.648]],["name/4035",[51,46.792]],["parent/4035",[516,4.648]],["name/4036",[52,46.792]],["parent/4036",[516,4.648]],["name/4037",[53,46.792]],["parent/4037",[516,4.648]],["name/4038",[54,46.792]],["parent/4038",[516,4.648]],["name/4039",[55,46.792]],["parent/4039",[516,4.648]],["name/4040",[56,46.792]],["parent/4040",[516,4.648]],["name/4041",[57,46.792]],["parent/4041",[516,4.648]],["name/4042",[58,46.792]],["parent/4042",[516,4.648]],["name/4043",[59,46.792]],["parent/4043",[516,4.648]],["name/4044",[60,46.792]],["parent/4044",[516,4.648]],["name/4045",[61,46.792]],["parent/4045",[516,4.648]],["name/4046",[62,46.792]],["parent/4046",[516,4.648]],["name/4047",[63,46.792]],["parent/4047",[516,4.648]],["name/4048",[64,46.792]],["parent/4048",[516,4.648]],["name/4049",[65,46.491]],["parent/4049",[516,4.648]],["name/4050",[66,46.491]],["parent/4050",[516,4.648]],["name/4051",[67,46.792]],["parent/4051",[516,4.648]],["name/4052",[68,40.948]],["parent/4052",[516,4.648]],["name/4053",[69,46.344]],["parent/4053",[516,4.648]],["name/4054",[70,46.344]],["parent/4054",[516,4.648]],["name/4055",[71,46.792]],["parent/4055",[516,4.648]],["name/4056",[72,46.056]],["parent/4056",[516,4.648]],["name/4057",[73,46.64]],["parent/4057",[516,4.648]],["name/4058",[74,46.792]],["parent/4058",[516,4.648]],["name/4059",[75,46.792]],["parent/4059",[516,4.648]],["name/4060",[76,46.792]],["parent/4060",[516,4.648]],["name/4061",[77,46.64]],["parent/4061",[516,4.648]],["name/4062",[78,46.199]],["parent/4062",[516,4.648]],["name/4063",[79,46.199]],["parent/4063",[516,4.648]],["name/4064",[1053,84.557]],["parent/4064",[]],["name/4065",[505,49.004]],["parent/4065",[]],["name/4066",[10,39.376]],["parent/4066",[505,4.835]],["name/4067",[16,46.64]],["parent/4067",[505,4.835]],["name/4068",[18,57.477]],["parent/4068",[505,4.835]],["name/4069",[941,76.084]],["parent/4069",[505,4.835]],["name/4070",[17,43.782]],["parent/4070",[505,4.835]],["name/4071",[1054,84.557]],["parent/4071",[505,4.835]],["name/4072",[1055,84.557]],["parent/4072",[505,4.835]],["name/4073",[384,79.449]],["parent/4073",[505,4.835]],["name/4074",[108,69.894]],["parent/4074",[505,4.835]],["name/4075",[107,76.084]],["parent/4075",[505,4.835]],["name/4076",[1014,71.565]],["parent/4076",[505,4.835]],["name/4077",[43,52.369]],["parent/4077",[505,4.835]],["name/4078",[44,52.369]],["parent/4078",[505,4.835]],["name/4079",[27,44.364]],["parent/4079",[505,4.835]],["name/4080",[46,46.792]],["parent/4080",[505,4.835]],["name/4081",[47,46.792]],["parent/4081",[505,4.835]],["name/4082",[48,46.792]],["parent/4082",[505,4.835]],["name/4083",[49,46.792]],["parent/4083",[505,4.835]],["name/4084",[50,46.792]],["parent/4084",[505,4.835]],["name/4085",[51,46.792]],["parent/4085",[505,4.835]],["name/4086",[52,46.792]],["parent/4086",[505,4.835]],["name/4087",[53,46.792]],["parent/4087",[505,4.835]],["name/4088",[54,46.792]],["parent/4088",[505,4.835]],["name/4089",[55,46.792]],["parent/4089",[505,4.835]],["name/4090",[56,46.792]],["parent/4090",[505,4.835]],["name/4091",[57,46.792]],["parent/4091",[505,4.835]],["name/4092",[58,46.792]],["parent/4092",[505,4.835]],["name/4093",[59,46.792]],["parent/4093",[505,4.835]],["name/4094",[60,46.792]],["parent/4094",[505,4.835]],["name/4095",[61,46.792]],["parent/4095",[505,4.835]],["name/4096",[62,46.792]],["parent/4096",[505,4.835]],["name/4097",[63,46.792]],["parent/4097",[505,4.835]],["name/4098",[64,46.792]],["parent/4098",[505,4.835]],["name/4099",[65,46.491]],["parent/4099",[505,4.835]],["name/4100",[66,46.491]],["parent/4100",[505,4.835]],["name/4101",[67,46.792]],["parent/4101",[505,4.835]],["name/4102",[68,40.948]],["parent/4102",[505,4.835]],["name/4103",[69,46.344]],["parent/4103",[505,4.835]],["name/4104",[70,46.344]],["parent/4104",[505,4.835]],["name/4105",[71,46.792]],["parent/4105",[505,4.835]],["name/4106",[72,46.056]],["parent/4106",[505,4.835]],["name/4107",[73,46.64]],["parent/4107",[505,4.835]],["name/4108",[74,46.792]],["parent/4108",[505,4.835]],["name/4109",[75,46.792]],["parent/4109",[505,4.835]],["name/4110",[76,46.792]],["parent/4110",[505,4.835]],["name/4111",[77,46.64]],["parent/4111",[505,4.835]],["name/4112",[78,46.199]],["parent/4112",[505,4.835]],["name/4113",[79,46.199]],["parent/4113",[505,4.835]],["name/4114",[1056,68.463]],["parent/4114",[]],["name/4115",[1057,84.557]],["parent/4115",[1056,6.755]],["name/4116",[1058,84.557]],["parent/4116",[1056,6.755]],["name/4117",[1059,84.557]],["parent/4117",[1056,6.755]],["name/4118",[1060,84.557]],["parent/4118",[1056,6.755]],["name/4119",[263,66.099]],["parent/4119",[1056,6.755]],["name/4120",[118,57.042]],["parent/4120",[1056,6.755]],["name/4121",[529,49.592]],["parent/4121",[]],["name/4122",[10,39.376]],["parent/4122",[529,4.893]],["name/4123",[18,57.477]],["parent/4123",[529,4.893]],["name/4124",[1,49.392]],["parent/4124",[529,4.893]],["name/4125",[1061,84.557]],["parent/4125",[1062,7.839]],["name/4126",[1063,84.557]],["parent/4126",[1062,7.839]],["name/4127",[1064,84.557]],["parent/4127",[529,4.893]],["name/4128",[16,46.64]],["parent/4128",[529,4.893]],["name/4129",[17,43.782]],["parent/4129",[529,4.893]],["name/4130",[19,52.639]],["parent/4130",[529,4.893]],["name/4131",[38,55.47]],["parent/4131",[529,4.893]],["name/4132",[1065,84.557]],["parent/4132",[529,4.893]],["name/4133",[391,69.894]],["parent/4133",[529,4.893]],["name/4134",[1066,84.557]],["parent/4134",[529,4.893]],["name/4135",[27,44.364]],["parent/4135",[529,4.893]],["name/4136",[46,46.792]],["parent/4136",[529,4.893]],["name/4137",[47,46.792]],["parent/4137",[529,4.893]],["name/4138",[48,46.792]],["parent/4138",[529,4.893]],["name/4139",[49,46.792]],["parent/4139",[529,4.893]],["name/4140",[50,46.792]],["parent/4140",[529,4.893]],["name/4141",[51,46.792]],["parent/4141",[529,4.893]],["name/4142",[52,46.792]],["parent/4142",[529,4.893]],["name/4143",[53,46.792]],["parent/4143",[529,4.893]],["name/4144",[54,46.792]],["parent/4144",[529,4.893]],["name/4145",[55,46.792]],["parent/4145",[529,4.893]],["name/4146",[56,46.792]],["parent/4146",[529,4.893]],["name/4147",[57,46.792]],["parent/4147",[529,4.893]],["name/4148",[58,46.792]],["parent/4148",[529,4.893]],["name/4149",[59,46.792]],["parent/4149",[529,4.893]],["name/4150",[60,46.792]],["parent/4150",[529,4.893]],["name/4151",[61,46.792]],["parent/4151",[529,4.893]],["name/4152",[62,46.792]],["parent/4152",[529,4.893]],["name/4153",[63,46.792]],["parent/4153",[529,4.893]],["name/4154",[64,46.792]],["parent/4154",[529,4.893]],["name/4155",[65,46.491]],["parent/4155",[529,4.893]],["name/4156",[66,46.491]],["parent/4156",[529,4.893]],["name/4157",[67,46.792]],["parent/4157",[529,4.893]],["name/4158",[68,40.948]],["parent/4158",[529,4.893]],["name/4159",[69,46.344]],["parent/4159",[529,4.893]],["name/4160",[70,46.344]],["parent/4160",[529,4.893]],["name/4161",[71,46.792]],["parent/4161",[529,4.893]],["name/4162",[72,46.056]],["parent/4162",[529,4.893]],["name/4163",[73,46.64]],["parent/4163",[529,4.893]],["name/4164",[74,46.792]],["parent/4164",[529,4.893]],["name/4165",[75,46.792]],["parent/4165",[529,4.893]],["name/4166",[76,46.792]],["parent/4166",[529,4.893]],["name/4167",[77,46.64]],["parent/4167",[529,4.893]],["name/4168",[78,46.199]],["parent/4168",[529,4.893]],["name/4169",[79,46.199]],["parent/4169",[529,4.893]],["name/4170",[1067,71.565]],["parent/4170",[]],["name/4171",[1068,79.449]],["parent/4171",[1067,7.061]],["name/4172",[1069,79.449]],["parent/4172",[1067,7.061]],["name/4173",[1070,79.449]],["parent/4173",[1067,7.061]],["name/4174",[1071,79.449]],["parent/4174",[1067,7.061]],["name/4175",[508,49.196]],["parent/4175",[]],["name/4176",[10,39.376]],["parent/4176",[508,4.854]],["name/4177",[16,46.64]],["parent/4177",[508,4.854]],["name/4178",[1072,84.557]],["parent/4178",[508,4.854]],["name/4179",[1,49.392]],["parent/4179",[508,4.854]],["name/4180",[86,71.565]],["parent/4180",[1073,6.105]],["name/4181",[87,71.565]],["parent/4181",[1073,6.105]],["name/4182",[549,69.894]],["parent/4182",[508,4.854]],["name/4183",[17,43.782]],["parent/4183",[508,4.854]],["name/4184",[19,52.639]],["parent/4184",[508,4.854]],["name/4185",[1,49.392]],["parent/4185",[508,4.854]],["name/4186",[834,79.449]],["parent/4186",[1073,6.105]],["name/4187",[835,79.449]],["parent/4187",[1073,6.105]],["name/4188",[236,76.084]],["parent/4188",[1073,6.105]],["name/4189",[1074,84.557]],["parent/4189",[1073,6.105]],["name/4190",[1075,84.557]],["parent/4190",[1073,6.105]],["name/4191",[945,76.084]],["parent/4191",[1073,6.105]],["name/4192",[1076,84.557]],["parent/4192",[1073,6.105]],["name/4193",[1077,84.557]],["parent/4193",[1073,6.105]],["name/4194",[1078,84.557]],["parent/4194",[1073,6.105]],["name/4195",[1079,84.557]],["parent/4195",[1073,6.105]],["name/4196",[1080,84.557]],["parent/4196",[1073,6.105]],["name/4197",[1081,84.557]],["parent/4197",[1073,6.105]],["name/4198",[1014,71.565]],["parent/4198",[508,4.854]],["name/4199",[391,69.894]],["parent/4199",[508,4.854]],["name/4200",[1082,84.557]],["parent/4200",[508,4.854]],["name/4201",[1083,84.557]],["parent/4201",[508,4.854]],["name/4202",[27,44.364]],["parent/4202",[508,4.854]],["name/4203",[46,46.792]],["parent/4203",[508,4.854]],["name/4204",[47,46.792]],["parent/4204",[508,4.854]],["name/4205",[48,46.792]],["parent/4205",[508,4.854]],["name/4206",[49,46.792]],["parent/4206",[508,4.854]],["name/4207",[50,46.792]],["parent/4207",[508,4.854]],["name/4208",[51,46.792]],["parent/4208",[508,4.854]],["name/4209",[52,46.792]],["parent/4209",[508,4.854]],["name/4210",[53,46.792]],["parent/4210",[508,4.854]],["name/4211",[54,46.792]],["parent/4211",[508,4.854]],["name/4212",[55,46.792]],["parent/4212",[508,4.854]],["name/4213",[56,46.792]],["parent/4213",[508,4.854]],["name/4214",[57,46.792]],["parent/4214",[508,4.854]],["name/4215",[58,46.792]],["parent/4215",[508,4.854]],["name/4216",[59,46.792]],["parent/4216",[508,4.854]],["name/4217",[60,46.792]],["parent/4217",[508,4.854]],["name/4218",[61,46.792]],["parent/4218",[508,4.854]],["name/4219",[62,46.792]],["parent/4219",[508,4.854]],["name/4220",[63,46.792]],["parent/4220",[508,4.854]],["name/4221",[64,46.792]],["parent/4221",[508,4.854]],["name/4222",[65,46.491]],["parent/4222",[508,4.854]],["name/4223",[66,46.491]],["parent/4223",[508,4.854]],["name/4224",[67,46.792]],["parent/4224",[508,4.854]],["name/4225",[68,40.948]],["parent/4225",[508,4.854]],["name/4226",[69,46.344]],["parent/4226",[508,4.854]],["name/4227",[70,46.344]],["parent/4227",[508,4.854]],["name/4228",[71,46.792]],["parent/4228",[508,4.854]],["name/4229",[72,46.056]],["parent/4229",[508,4.854]],["name/4230",[73,46.64]],["parent/4230",[508,4.854]],["name/4231",[74,46.792]],["parent/4231",[508,4.854]],["name/4232",[75,46.792]],["parent/4232",[508,4.854]],["name/4233",[76,46.792]],["parent/4233",[508,4.854]],["name/4234",[77,46.64]],["parent/4234",[508,4.854]],["name/4235",[78,46.199]],["parent/4235",[508,4.854]],["name/4236",[79,46.199]],["parent/4236",[508,4.854]],["name/4237",[1084,71.565]],["parent/4237",[]],["name/4238",[1085,79.449]],["parent/4238",[1084,7.061]],["name/4239",[1086,84.557]],["parent/4239",[1084,7.061]],["name/4240",[1087,84.557]],["parent/4240",[1084,7.061]],["name/4241",[1088,84.557]],["parent/4241",[1084,7.061]],["name/4242",[546,66.099]],["parent/4242",[]],["name/4243",[82,69.894]],["parent/4243",[546,6.522]],["name/4244",[81,69.894]],["parent/4244",[546,6.522]],["name/4245",[83,69.894]],["parent/4245",[546,6.522]],["name/4246",[812,79.449]],["parent/4246",[546,6.522]],["name/4247",[813,79.449]],["parent/4247",[546,6.522]],["name/4248",[401,73.571]],["parent/4248",[546,6.522]],["name/4249",[1046,76.084]],["parent/4249",[546,6.522]],["name/4250",[530,48.27]],["parent/4250",[]],["name/4251",[10,39.376]],["parent/4251",[530,4.763]],["name/4252",[14,53.8]],["parent/4252",[530,4.763]],["name/4253",[16,46.64]],["parent/4253",[530,4.763]],["name/4254",[17,43.782]],["parent/4254",[530,4.763]],["name/4255",[37,55.841]],["parent/4255",[530,4.763]],["name/4256",[38,55.47]],["parent/4256",[530,4.763]],["name/4257",[130,54.112]],["parent/4257",[530,4.763]],["name/4258",[131,54.112]],["parent/4258",[530,4.763]],["name/4259",[132,53.8]],["parent/4259",[530,4.763]],["name/4260",[24,49.196]],["parent/4260",[530,4.763]],["name/4261",[28,50.218]],["parent/4261",[530,4.763]],["name/4262",[174,53.8]],["parent/4262",[530,4.763]],["name/4263",[253,61.204]],["parent/4263",[530,4.763]],["name/4264",[365,65.098]],["parent/4264",[530,4.763]],["name/4265",[366,65.098]],["parent/4265",[530,4.763]],["name/4266",[367,64.189]],["parent/4266",[530,4.763]],["name/4267",[368,65.098]],["parent/4267",[530,4.763]],["name/4268",[369,65.098]],["parent/4268",[530,4.763]],["name/4269",[27,44.364]],["parent/4269",[530,4.763]],["name/4270",[46,46.792]],["parent/4270",[530,4.763]],["name/4271",[47,46.792]],["parent/4271",[530,4.763]],["name/4272",[48,46.792]],["parent/4272",[530,4.763]],["name/4273",[49,46.792]],["parent/4273",[530,4.763]],["name/4274",[50,46.792]],["parent/4274",[530,4.763]],["name/4275",[51,46.792]],["parent/4275",[530,4.763]],["name/4276",[52,46.792]],["parent/4276",[530,4.763]],["name/4277",[53,46.792]],["parent/4277",[530,4.763]],["name/4278",[54,46.792]],["parent/4278",[530,4.763]],["name/4279",[55,46.792]],["parent/4279",[530,4.763]],["name/4280",[56,46.792]],["parent/4280",[530,4.763]],["name/4281",[57,46.792]],["parent/4281",[530,4.763]],["name/4282",[58,46.792]],["parent/4282",[530,4.763]],["name/4283",[59,46.792]],["parent/4283",[530,4.763]],["name/4284",[60,46.792]],["parent/4284",[530,4.763]],["name/4285",[61,46.792]],["parent/4285",[530,4.763]],["name/4286",[62,46.792]],["parent/4286",[530,4.763]],["name/4287",[63,46.792]],["parent/4287",[530,4.763]],["name/4288",[64,46.792]],["parent/4288",[530,4.763]],["name/4289",[65,46.491]],["parent/4289",[530,4.763]],["name/4290",[66,46.491]],["parent/4290",[530,4.763]],["name/4291",[67,46.792]],["parent/4291",[530,4.763]],["name/4292",[68,40.948]],["parent/4292",[530,4.763]],["name/4293",[69,46.344]],["parent/4293",[530,4.763]],["name/4294",[70,46.344]],["parent/4294",[530,4.763]],["name/4295",[71,46.792]],["parent/4295",[530,4.763]],["name/4296",[72,46.056]],["parent/4296",[530,4.763]],["name/4297",[73,46.64]],["parent/4297",[530,4.763]],["name/4298",[74,46.792]],["parent/4298",[530,4.763]],["name/4299",[75,46.792]],["parent/4299",[530,4.763]],["name/4300",[76,46.792]],["parent/4300",[530,4.763]],["name/4301",[77,46.64]],["parent/4301",[530,4.763]],["name/4302",[78,46.199]],["parent/4302",[530,4.763]],["name/4303",[79,46.199]],["parent/4303",[530,4.763]],["name/4304",[1089,64.189]],["parent/4304",[]],["name/4305",[1090,79.449]],["parent/4305",[1089,6.333]],["name/4306",[1091,79.449]],["parent/4306",[1089,6.333]],["name/4307",[1092,84.557]],["parent/4307",[1089,6.333]],["name/4308",[1093,84.557]],["parent/4308",[1089,6.333]],["name/4309",[1094,84.557]],["parent/4309",[1089,6.333]],["name/4310",[1095,84.557]],["parent/4310",[1089,6.333]],["name/4311",[1096,84.557]],["parent/4311",[1089,6.333]],["name/4312",[1097,84.557]],["parent/4312",[1089,6.333]],["name/4313",[1098,84.557]],["parent/4313",[1089,6.333]],["name/4314",[1099,84.557]],["parent/4314",[1089,6.333]],["name/4315",[1100,64.189]],["parent/4315",[]],["name/4316",[0,58.908]],["parent/4316",[1100,6.333]],["name/4317",[756,76.084]],["parent/4317",[1100,6.333]],["name/4318",[755,76.084]],["parent/4318",[1100,6.333]],["name/4319",[128,59.434]],["parent/4319",[1100,6.333]],["name/4320",[1101,84.557]],["parent/4320",[1100,6.333]],["name/4321",[1102,84.557]],["parent/4321",[1100,6.333]],["name/4322",[1103,84.557]],["parent/4322",[1100,6.333]],["name/4323",[1104,84.557]],["parent/4323",[1100,6.333]],["name/4324",[1105,84.557]],["parent/4324",[1100,6.333]],["name/4325",[407,40.131]],["parent/4325",[1100,6.333]],["name/4326",[1106,60.578]],["parent/4326",[]],["name/4327",[677,64.189]],["parent/4327",[1106,5.977]],["name/4328",[743,76.084]],["parent/4328",[1106,5.977]],["name/4329",[744,71.565]],["parent/4329",[1106,5.977]],["name/4330",[745,71.565]],["parent/4330",[1106,5.977]],["name/4331",[125,58.408]],["parent/4331",[1106,5.977]],["name/4332",[121,57.477]],["parent/4332",[1106,5.977]],["name/4333",[746,76.084]],["parent/4333",[1106,5.977]],["name/4334",[361,46.199]],["parent/4334",[1106,5.977]],["name/4335",[112,57.042]],["parent/4335",[1106,5.977]],["name/4336",[410,63.355]],["parent/4336",[1106,5.977]],["name/4337",[0,58.908]],["parent/4337",[1106,5.977]],["name/4338",[409,64.189]],["parent/4338",[1106,5.977]],["name/4339",[18,57.477]],["parent/4339",[1106,5.977]],["name/4340",[747,69.894]],["parent/4340",[1106,5.977]],["name/4341",[748,69.894]],["parent/4341",[1106,5.977]],["name/4342",[488,36.545]],["parent/4342",[]],["name/4343",[9,57.042]],["parent/4343",[488,3.606]],["name/4344",[10,39.376]],["parent/4344",[488,3.606]],["name/4345",[750,79.449]],["parent/4345",[488,3.606]],["name/4346",[751,79.449]],["parent/4346",[488,3.606]],["name/4347",[749,79.449]],["parent/4347",[488,3.606]],["name/4348",[752,79.449]],["parent/4348",[488,3.606]],["name/4349",[11,57.932]],["parent/4349",[488,3.606]],["name/4350",[187,56.625]],["parent/4350",[488,3.606]],["name/4351",[106,59.99]],["parent/4351",[488,3.606]],["name/4352",[16,46.64]],["parent/4352",[488,3.606]],["name/4353",[17,43.782]],["parent/4353",[488,3.606]],["name/4354",[755,76.084]],["parent/4354",[488,3.606]],["name/4355",[756,76.084]],["parent/4355",[488,3.606]],["name/4356",[171,57.042]],["parent/4356",[488,3.606]],["name/4357",[156,59.99]],["parent/4357",[488,3.606]],["name/4358",[681,69.894]],["parent/4358",[488,3.606]],["name/4359",[757,79.449]],["parent/4359",[488,3.606]],["name/4360",[758,79.449]],["parent/4360",[488,3.606]],["name/4361",[759,79.449]],["parent/4361",[488,3.606]],["name/4362",[760,79.449]],["parent/4362",[488,3.606]],["name/4363",[64,46.792]],["parent/4363",[488,3.606]],["name/4364",[138,59.99]],["parent/4364",[488,3.606]],["name/4365",[128,59.434]],["parent/4365",[488,3.606]],["name/4366",[761,79.449]],["parent/4366",[488,3.606]],["name/4367",[151,59.99]],["parent/4367",[488,3.606]],["name/4368",[692,69.894]],["parent/4368",[488,3.606]],["name/4369",[687,69.894]],["parent/4369",[488,3.606]],["name/4370",[144,58.908]],["parent/4370",[488,3.606]],["name/4371",[691,67.211]],["parent/4371",[488,3.606]],["name/4372",[132,53.8]],["parent/4372",[488,3.606]],["name/4373",[762,76.084]],["parent/4373",[488,3.606]],["name/4374",[763,79.449]],["parent/4374",[488,3.606]],["name/4375",[167,59.99]],["parent/4375",[488,3.606]],["name/4376",[168,59.99]],["parent/4376",[488,3.606]],["name/4377",[139,59.99]],["parent/4377",[488,3.606]],["name/4378",[159,59.99]],["parent/4378",[488,3.606]],["name/4379",[48,46.792]],["parent/4379",[488,3.606]],["name/4380",[764,79.449]],["parent/4380",[488,3.606]],["name/4381",[765,79.449]],["parent/4381",[488,3.606]],["name/4382",[766,79.449]],["parent/4382",[488,3.606]],["name/4383",[767,79.449]],["parent/4383",[488,3.606]],["name/4384",[768,79.449]],["parent/4384",[488,3.606]],["name/4385",[769,79.449]],["parent/4385",[488,3.606]],["name/4386",[770,79.449]],["parent/4386",[488,3.606]],["name/4387",[771,79.449]],["parent/4387",[488,3.606]],["name/4388",[772,79.449]],["parent/4388",[488,3.606]],["name/4389",[773,79.449]],["parent/4389",[488,3.606]],["name/4390",[774,79.449]],["parent/4390",[488,3.606]],["name/4391",[110,56.225]],["parent/4391",[488,3.606]],["name/4392",[775,79.449]],["parent/4392",[488,3.606]],["name/4393",[776,79.449]],["parent/4393",[488,3.606]],["name/4394",[777,79.449]],["parent/4394",[488,3.606]],["name/4395",[778,79.449]],["parent/4395",[488,3.606]],["name/4396",[779,79.449]],["parent/4396",[488,3.606]],["name/4397",[780,79.449]],["parent/4397",[488,3.606]],["name/4398",[740,69.894]],["parent/4398",[488,3.606]],["name/4399",[781,79.449]],["parent/4399",[488,3.606]],["name/4400",[782,73.571]],["parent/4400",[488,3.606]],["name/4401",[783,79.449]],["parent/4401",[488,3.606]],["name/4402",[693,69.894]],["parent/4402",[488,3.606]],["name/4403",[753,79.449]],["parent/4403",[488,3.606]],["name/4404",[689,69.894]],["parent/4404",[488,3.606]],["name/4405",[27,44.364]],["parent/4405",[488,3.606]],["name/4406",[677,64.189]],["parent/4406",[488,3.606]],["name/4407",[437,46.491]],["parent/4407",[488,3.606]],["name/4408",[678,69.894]],["parent/4408",[488,3.606]],["name/4409",[679,69.894]],["parent/4409",[488,3.606]],["name/4410",[680,69.894]],["parent/4410",[488,3.606]],["name/4411",[682,69.894]],["parent/4411",[488,3.606]],["name/4412",[683,69.894]],["parent/4412",[488,3.606]],["name/4413",[684,69.894]],["parent/4413",[488,3.606]],["name/4414",[218,68.463]],["parent/4414",[488,3.606]],["name/4415",[685,69.894]],["parent/4415",[488,3.606]],["name/4416",[165,59.434]],["parent/4416",[488,3.606]],["name/4417",[686,69.894]],["parent/4417",[488,3.606]],["name/4418",[688,69.894]],["parent/4418",[488,3.606]],["name/4419",[690,69.894]],["parent/4419",[488,3.606]],["name/4420",[166,59.99]],["parent/4420",[488,3.606]],["name/4421",[187,56.625]],["parent/4421",[488,3.606]],["name/4422",[111,43.126]],["parent/4422",[488,3.606]],["name/4423",[112,57.042]],["parent/4423",[488,3.606]],["name/4424",[113,54.768]],["parent/4424",[488,3.606]],["name/4425",[19,52.639]],["parent/4425",[488,3.606]],["name/4426",[1,49.392]],["parent/4426",[488,3.606]],["name/4427",[114,59.99]],["parent/4427",[1107,6.175]],["name/4428",[27,44.364]],["parent/4428",[1107,6.175]],["name/4429",[116,59.99]],["parent/4429",[1107,6.175]],["name/4430",[117,59.99]],["parent/4430",[1107,6.175]],["name/4431",[118,57.042]],["parent/4431",[1107,6.175]],["name/4432",[119,59.99]],["parent/4432",[1107,6.175]],["name/4433",[120,59.99]],["parent/4433",[1107,6.175]],["name/4434",[121,57.477]],["parent/4434",[1107,6.175]],["name/4435",[122,59.99]],["parent/4435",[1107,6.175]],["name/4436",[123,59.99]],["parent/4436",[1107,6.175]],["name/4437",[124,56.625]],["parent/4437",[1107,6.175]],["name/4438",[68,40.948]],["parent/4438",[1107,6.175]],["name/4439",[125,58.408]],["parent/4439",[1107,6.175]],["name/4440",[126,59.99]],["parent/4440",[488,3.606]],["name/4441",[127,59.99]],["parent/4441",[488,3.606]],["name/4442",[129,59.99]],["parent/4442",[488,3.606]],["name/4443",[130,54.112]],["parent/4443",[488,3.606]],["name/4444",[131,54.112]],["parent/4444",[488,3.606]],["name/4445",[133,59.99]],["parent/4445",[488,3.606]],["name/4446",[134,59.99]],["parent/4446",[488,3.606]],["name/4447",[135,59.99]],["parent/4447",[488,3.606]],["name/4448",[136,59.99]],["parent/4448",[488,3.606]],["name/4449",[137,59.434]],["parent/4449",[488,3.606]],["name/4450",[140,59.99]],["parent/4450",[488,3.606]],["name/4451",[141,59.99]],["parent/4451",[488,3.606]],["name/4452",[142,59.99]],["parent/4452",[488,3.606]],["name/4453",[143,59.99]],["parent/4453",[488,3.606]],["name/4454",[145,59.434]],["parent/4454",[488,3.606]],["name/4455",[146,59.434]],["parent/4455",[488,3.606]],["name/4456",[147,59.434]],["parent/4456",[488,3.606]],["name/4457",[148,59.434]],["parent/4457",[488,3.606]],["name/4458",[149,59.99]],["parent/4458",[488,3.606]],["name/4459",[150,59.99]],["parent/4459",[488,3.606]],["name/4460",[152,59.99]],["parent/4460",[488,3.606]],["name/4461",[153,59.99]],["parent/4461",[488,3.606]],["name/4462",[154,59.99]],["parent/4462",[488,3.606]],["name/4463",[155,59.99]],["parent/4463",[488,3.606]],["name/4464",[157,57.932]],["parent/4464",[488,3.606]],["name/4465",[158,59.99]],["parent/4465",[488,3.606]],["name/4466",[160,59.99]],["parent/4466",[488,3.606]],["name/4467",[161,59.99]],["parent/4467",[488,3.606]],["name/4468",[162,59.99]],["parent/4468",[488,3.606]],["name/4469",[163,56.225]],["parent/4469",[488,3.606]],["name/4470",[164,59.434]],["parent/4470",[488,3.606]],["name/4471",[169,59.99]],["parent/4471",[488,3.606]],["name/4472",[170,59.99]],["parent/4472",[488,3.606]],["name/4473",[172,59.434]],["parent/4473",[488,3.606]],["name/4474",[173,59.434]],["parent/4474",[488,3.606]],["name/4475",[28,50.218]],["parent/4475",[488,3.606]],["name/4476",[24,49.196]],["parent/4476",[488,3.606]],["name/4477",[43,52.369]],["parent/4477",[488,3.606]],["name/4478",[44,52.369]],["parent/4478",[488,3.606]],["name/4479",[174,53.8]],["parent/4479",[488,3.606]],["name/4480",[175,58.908]],["parent/4480",[488,3.606]],["name/4481",[176,59.434]],["parent/4481",[488,3.606]],["name/4482",[177,59.434]],["parent/4482",[488,3.606]],["name/4483",[178,59.434]],["parent/4483",[488,3.606]],["name/4484",[179,59.434]],["parent/4484",[488,3.606]],["name/4485",[180,59.434]],["parent/4485",[488,3.606]],["name/4486",[181,59.434]],["parent/4486",[488,3.606]],["name/4487",[182,59.434]],["parent/4487",[488,3.606]],["name/4488",[183,59.434]],["parent/4488",[488,3.606]],["name/4489",[109,59.434]],["parent/4489",[488,3.606]],["name/4490",[184,57.932]],["parent/4490",[488,3.606]],["name/4491",[185,59.434]],["parent/4491",[488,3.606]],["name/4492",[186,59.434]],["parent/4492",[488,3.606]],["name/4493",[188,58.908]],["parent/4493",[488,3.606]],["name/4494",[189,59.434]],["parent/4494",[488,3.606]],["name/4495",[190,59.434]],["parent/4495",[488,3.606]],["name/4496",[191,59.434]],["parent/4496",[488,3.606]],["name/4497",[192,59.434]],["parent/4497",[488,3.606]],["name/4498",[193,59.434]],["parent/4498",[488,3.606]],["name/4499",[36,53.202]],["parent/4499",[488,3.606]],["name/4500",[34,53.202]],["parent/4500",[488,3.606]],["name/4501",[35,53.202]],["parent/4501",[488,3.606]],["name/4502",[46,46.792]],["parent/4502",[488,3.606]],["name/4503",[47,46.792]],["parent/4503",[488,3.606]],["name/4504",[49,46.792]],["parent/4504",[488,3.606]],["name/4505",[50,46.792]],["parent/4505",[488,3.606]],["name/4506",[51,46.792]],["parent/4506",[488,3.606]],["name/4507",[52,46.792]],["parent/4507",[488,3.606]],["name/4508",[53,46.792]],["parent/4508",[488,3.606]],["name/4509",[54,46.792]],["parent/4509",[488,3.606]],["name/4510",[55,46.792]],["parent/4510",[488,3.606]],["name/4511",[56,46.792]],["parent/4511",[488,3.606]],["name/4512",[57,46.792]],["parent/4512",[488,3.606]],["name/4513",[58,46.792]],["parent/4513",[488,3.606]],["name/4514",[59,46.792]],["parent/4514",[488,3.606]],["name/4515",[60,46.792]],["parent/4515",[488,3.606]],["name/4516",[61,46.792]],["parent/4516",[488,3.606]],["name/4517",[62,46.792]],["parent/4517",[488,3.606]],["name/4518",[63,46.792]],["parent/4518",[488,3.606]],["name/4519",[65,46.491]],["parent/4519",[488,3.606]],["name/4520",[66,46.491]],["parent/4520",[488,3.606]],["name/4521",[67,46.792]],["parent/4521",[488,3.606]],["name/4522",[68,40.948]],["parent/4522",[488,3.606]],["name/4523",[69,46.344]],["parent/4523",[488,3.606]],["name/4524",[70,46.344]],["parent/4524",[488,3.606]],["name/4525",[71,46.792]],["parent/4525",[488,3.606]],["name/4526",[72,46.056]],["parent/4526",[488,3.606]],["name/4527",[73,46.64]],["parent/4527",[488,3.606]],["name/4528",[74,46.792]],["parent/4528",[488,3.606]],["name/4529",[75,46.792]],["parent/4529",[488,3.606]],["name/4530",[76,46.792]],["parent/4530",[488,3.606]],["name/4531",[77,46.64]],["parent/4531",[488,3.606]],["name/4532",[78,46.199]],["parent/4532",[488,3.606]],["name/4533",[79,46.199]],["parent/4533",[488,3.606]],["name/4534",[528,47.102]],["parent/4534",[]],["name/4535",[10,39.376]],["parent/4535",[528,4.648]],["name/4536",[16,46.64]],["parent/4536",[528,4.648]],["name/4537",[18,57.477]],["parent/4537",[528,4.648]],["name/4538",[1,49.392]],["parent/4538",[528,4.648]],["name/4539",[317,71.565]],["parent/4539",[1108,6.175]],["name/4540",[1109,84.557]],["parent/4540",[1108,6.175]],["name/4541",[1110,84.557]],["parent/4541",[1108,6.175]],["name/4542",[1111,84.557]],["parent/4542",[1108,6.175]],["name/4543",[1112,84.557]],["parent/4543",[1108,6.175]],["name/4544",[1113,84.557]],["parent/4544",[1108,6.175]],["name/4545",[1114,84.557]],["parent/4545",[1108,6.175]],["name/4546",[1115,84.557]],["parent/4546",[1108,6.175]],["name/4547",[1116,84.557]],["parent/4547",[1108,6.175]],["name/4548",[1117,84.557]],["parent/4548",[1108,6.175]],["name/4549",[1118,84.557]],["parent/4549",[1108,6.175]],["name/4550",[1119,84.557]],["parent/4550",[1108,6.175]],["name/4551",[1120,84.557]],["parent/4551",[1108,6.175]],["name/4552",[14,53.8]],["parent/4552",[528,4.648]],["name/4553",[17,43.782]],["parent/4553",[528,4.648]],["name/4554",[1121,73.571]],["parent/4554",[528,4.648]],["name/4555",[1122,71.565]],["parent/4555",[528,4.648]],["name/4556",[27,44.364]],["parent/4556",[528,4.648]],["name/4557",[1123,84.557]],["parent/4557",[528,4.648]],["name/4558",[1124,84.557]],["parent/4558",[528,4.648]],["name/4559",[1125,84.557]],["parent/4559",[528,4.648]],["name/4560",[37,55.841]],["parent/4560",[528,4.648]],["name/4561",[38,55.47]],["parent/4561",[528,4.648]],["name/4562",[130,54.112]],["parent/4562",[528,4.648]],["name/4563",[131,54.112]],["parent/4563",[528,4.648]],["name/4564",[132,53.8]],["parent/4564",[528,4.648]],["name/4565",[24,49.196]],["parent/4565",[528,4.648]],["name/4566",[28,50.218]],["parent/4566",[528,4.648]],["name/4567",[174,53.8]],["parent/4567",[528,4.648]],["name/4568",[253,61.204]],["parent/4568",[528,4.648]],["name/4569",[365,65.098]],["parent/4569",[528,4.648]],["name/4570",[366,65.098]],["parent/4570",[528,4.648]],["name/4571",[367,64.189]],["parent/4571",[528,4.648]],["name/4572",[368,65.098]],["parent/4572",[528,4.648]],["name/4573",[369,65.098]],["parent/4573",[528,4.648]],["name/4574",[46,46.792]],["parent/4574",[528,4.648]],["name/4575",[47,46.792]],["parent/4575",[528,4.648]],["name/4576",[48,46.792]],["parent/4576",[528,4.648]],["name/4577",[49,46.792]],["parent/4577",[528,4.648]],["name/4578",[50,46.792]],["parent/4578",[528,4.648]],["name/4579",[51,46.792]],["parent/4579",[528,4.648]],["name/4580",[52,46.792]],["parent/4580",[528,4.648]],["name/4581",[53,46.792]],["parent/4581",[528,4.648]],["name/4582",[54,46.792]],["parent/4582",[528,4.648]],["name/4583",[55,46.792]],["parent/4583",[528,4.648]],["name/4584",[56,46.792]],["parent/4584",[528,4.648]],["name/4585",[57,46.792]],["parent/4585",[528,4.648]],["name/4586",[58,46.792]],["parent/4586",[528,4.648]],["name/4587",[59,46.792]],["parent/4587",[528,4.648]],["name/4588",[60,46.792]],["parent/4588",[528,4.648]],["name/4589",[61,46.792]],["parent/4589",[528,4.648]],["name/4590",[62,46.792]],["parent/4590",[528,4.648]],["name/4591",[63,46.792]],["parent/4591",[528,4.648]],["name/4592",[64,46.792]],["parent/4592",[528,4.648]],["name/4593",[65,46.491]],["parent/4593",[528,4.648]],["name/4594",[66,46.491]],["parent/4594",[528,4.648]],["name/4595",[67,46.792]],["parent/4595",[528,4.648]],["name/4596",[68,40.948]],["parent/4596",[528,4.648]],["name/4597",[69,46.344]],["parent/4597",[528,4.648]],["name/4598",[70,46.344]],["parent/4598",[528,4.648]],["name/4599",[71,46.792]],["parent/4599",[528,4.648]],["name/4600",[72,46.056]],["parent/4600",[528,4.648]],["name/4601",[73,46.64]],["parent/4601",[528,4.648]],["name/4602",[74,46.792]],["parent/4602",[528,4.648]],["name/4603",[75,46.792]],["parent/4603",[528,4.648]],["name/4604",[76,46.792]],["parent/4604",[528,4.648]],["name/4605",[77,46.64]],["parent/4605",[528,4.648]],["name/4606",[78,46.199]],["parent/4606",[528,4.648]],["name/4607",[79,46.199]],["parent/4607",[528,4.648]],["name/4608",[1126,47.922]],["parent/4608",[]],["name/4609",[10,39.376]],["parent/4609",[1126,4.728]],["name/4610",[16,46.64]],["parent/4610",[1126,4.728]],["name/4611",[14,53.8]],["parent/4611",[1126,4.728]],["name/4612",[17,43.782]],["parent/4612",[1126,4.728]],["name/4613",[1127,84.557]],["parent/4613",[1126,4.728]],["name/4614",[1121,73.571]],["parent/4614",[1126,4.728]],["name/4615",[1122,71.565]],["parent/4615",[1126,4.728]],["name/4616",[27,44.364]],["parent/4616",[1126,4.728]],["name/4617",[37,55.841]],["parent/4617",[1126,4.728]],["name/4618",[38,55.47]],["parent/4618",[1126,4.728]],["name/4619",[130,54.112]],["parent/4619",[1126,4.728]],["name/4620",[131,54.112]],["parent/4620",[1126,4.728]],["name/4621",[132,53.8]],["parent/4621",[1126,4.728]],["name/4622",[24,49.196]],["parent/4622",[1126,4.728]],["name/4623",[28,50.218]],["parent/4623",[1126,4.728]],["name/4624",[174,53.8]],["parent/4624",[1126,4.728]],["name/4625",[253,61.204]],["parent/4625",[1126,4.728]],["name/4626",[365,65.098]],["parent/4626",[1126,4.728]],["name/4627",[366,65.098]],["parent/4627",[1126,4.728]],["name/4628",[367,64.189]],["parent/4628",[1126,4.728]],["name/4629",[368,65.098]],["parent/4629",[1126,4.728]],["name/4630",[369,65.098]],["parent/4630",[1126,4.728]],["name/4631",[46,46.792]],["parent/4631",[1126,4.728]],["name/4632",[47,46.792]],["parent/4632",[1126,4.728]],["name/4633",[48,46.792]],["parent/4633",[1126,4.728]],["name/4634",[49,46.792]],["parent/4634",[1126,4.728]],["name/4635",[50,46.792]],["parent/4635",[1126,4.728]],["name/4636",[51,46.792]],["parent/4636",[1126,4.728]],["name/4637",[52,46.792]],["parent/4637",[1126,4.728]],["name/4638",[53,46.792]],["parent/4638",[1126,4.728]],["name/4639",[54,46.792]],["parent/4639",[1126,4.728]],["name/4640",[55,46.792]],["parent/4640",[1126,4.728]],["name/4641",[56,46.792]],["parent/4641",[1126,4.728]],["name/4642",[57,46.792]],["parent/4642",[1126,4.728]],["name/4643",[58,46.792]],["parent/4643",[1126,4.728]],["name/4644",[59,46.792]],["parent/4644",[1126,4.728]],["name/4645",[60,46.792]],["parent/4645",[1126,4.728]],["name/4646",[61,46.792]],["parent/4646",[1126,4.728]],["name/4647",[62,46.792]],["parent/4647",[1126,4.728]],["name/4648",[63,46.792]],["parent/4648",[1126,4.728]],["name/4649",[64,46.792]],["parent/4649",[1126,4.728]],["name/4650",[65,46.491]],["parent/4650",[1126,4.728]],["name/4651",[66,46.491]],["parent/4651",[1126,4.728]],["name/4652",[67,46.792]],["parent/4652",[1126,4.728]],["name/4653",[68,40.948]],["parent/4653",[1126,4.728]],["name/4654",[69,46.344]],["parent/4654",[1126,4.728]],["name/4655",[70,46.344]],["parent/4655",[1126,4.728]],["name/4656",[71,46.792]],["parent/4656",[1126,4.728]],["name/4657",[72,46.056]],["parent/4657",[1126,4.728]],["name/4658",[73,46.64]],["parent/4658",[1126,4.728]],["name/4659",[74,46.792]],["parent/4659",[1126,4.728]],["name/4660",[75,46.792]],["parent/4660",[1126,4.728]],["name/4661",[76,46.792]],["parent/4661",[1126,4.728]],["name/4662",[77,46.64]],["parent/4662",[1126,4.728]],["name/4663",[78,46.199]],["parent/4663",[1126,4.728]],["name/4664",[79,46.199]],["parent/4664",[1126,4.728]],["name/4665",[1128,71.565]],["parent/4665",[]],["name/4666",[1129,84.557]],["parent/4666",[1128,7.061]],["name/4667",[410,63.355]],["parent/4667",[1128,7.061]],["name/4668",[409,64.189]],["parent/4668",[1128,7.061]],["name/4669",[583,76.084]],["parent/4669",[1128,7.061]],["name/4670",[531,47.422]],["parent/4670",[]],["name/4671",[10,39.376]],["parent/4671",[531,4.679]],["name/4672",[16,46.64]],["parent/4672",[531,4.679]],["name/4673",[14,53.8]],["parent/4673",[531,4.679]],["name/4674",[17,43.782]],["parent/4674",[531,4.679]],["name/4675",[19,52.639]],["parent/4675",[531,4.679]],["name/4676",[1,49.392]],["parent/4676",[531,4.679]],["name/4677",[121,57.477]],["parent/4677",[1130,8.343]],["name/4678",[1013,76.084]],["parent/4678",[531,4.679]],["name/4679",[1121,73.571]],["parent/4679",[531,4.679]],["name/4680",[1122,71.565]],["parent/4680",[531,4.679]],["name/4681",[27,44.364]],["parent/4681",[531,4.679]],["name/4682",[37,55.841]],["parent/4682",[531,4.679]],["name/4683",[38,55.47]],["parent/4683",[531,4.679]],["name/4684",[130,54.112]],["parent/4684",[531,4.679]],["name/4685",[131,54.112]],["parent/4685",[531,4.679]],["name/4686",[132,53.8]],["parent/4686",[531,4.679]],["name/4687",[24,49.196]],["parent/4687",[531,4.679]],["name/4688",[28,50.218]],["parent/4688",[531,4.679]],["name/4689",[174,53.8]],["parent/4689",[531,4.679]],["name/4690",[253,61.204]],["parent/4690",[531,4.679]],["name/4691",[365,65.098]],["parent/4691",[531,4.679]],["name/4692",[366,65.098]],["parent/4692",[531,4.679]],["name/4693",[367,64.189]],["parent/4693",[531,4.679]],["name/4694",[368,65.098]],["parent/4694",[531,4.679]],["name/4695",[369,65.098]],["parent/4695",[531,4.679]],["name/4696",[46,46.792]],["parent/4696",[531,4.679]],["name/4697",[47,46.792]],["parent/4697",[531,4.679]],["name/4698",[48,46.792]],["parent/4698",[531,4.679]],["name/4699",[49,46.792]],["parent/4699",[531,4.679]],["name/4700",[50,46.792]],["parent/4700",[531,4.679]],["name/4701",[51,46.792]],["parent/4701",[531,4.679]],["name/4702",[52,46.792]],["parent/4702",[531,4.679]],["name/4703",[53,46.792]],["parent/4703",[531,4.679]],["name/4704",[54,46.792]],["parent/4704",[531,4.679]],["name/4705",[55,46.792]],["parent/4705",[531,4.679]],["name/4706",[56,46.792]],["parent/4706",[531,4.679]],["name/4707",[57,46.792]],["parent/4707",[531,4.679]],["name/4708",[58,46.792]],["parent/4708",[531,4.679]],["name/4709",[59,46.792]],["parent/4709",[531,4.679]],["name/4710",[60,46.792]],["parent/4710",[531,4.679]],["name/4711",[61,46.792]],["parent/4711",[531,4.679]],["name/4712",[62,46.792]],["parent/4712",[531,4.679]],["name/4713",[63,46.792]],["parent/4713",[531,4.679]],["name/4714",[64,46.792]],["parent/4714",[531,4.679]],["name/4715",[65,46.491]],["parent/4715",[531,4.679]],["name/4716",[66,46.491]],["parent/4716",[531,4.679]],["name/4717",[67,46.792]],["parent/4717",[531,4.679]],["name/4718",[68,40.948]],["parent/4718",[531,4.679]],["name/4719",[69,46.344]],["parent/4719",[531,4.679]],["name/4720",[70,46.344]],["parent/4720",[531,4.679]],["name/4721",[71,46.792]],["parent/4721",[531,4.679]],["name/4722",[72,46.056]],["parent/4722",[531,4.679]],["name/4723",[73,46.64]],["parent/4723",[531,4.679]],["name/4724",[74,46.792]],["parent/4724",[531,4.679]],["name/4725",[75,46.792]],["parent/4725",[531,4.679]],["name/4726",[76,46.792]],["parent/4726",[531,4.679]],["name/4727",[77,46.64]],["parent/4727",[531,4.679]],["name/4728",[78,46.199]],["parent/4728",[531,4.679]],["name/4729",[79,46.199]],["parent/4729",[531,4.679]],["name/4730",[532,47.586]],["parent/4730",[]],["name/4731",[10,39.376]],["parent/4731",[532,4.695]],["name/4732",[16,46.64]],["parent/4732",[532,4.695]],["name/4733",[14,53.8]],["parent/4733",[532,4.695]],["name/4734",[17,43.782]],["parent/4734",[532,4.695]],["name/4735",[1131,84.557]],["parent/4735",[532,4.695]],["name/4736",[1121,73.571]],["parent/4736",[532,4.695]],["name/4737",[1122,71.565]],["parent/4737",[532,4.695]],["name/4738",[1014,71.565]],["parent/4738",[532,4.695]],["name/4739",[27,44.364]],["parent/4739",[532,4.695]],["name/4740",[37,55.841]],["parent/4740",[532,4.695]],["name/4741",[38,55.47]],["parent/4741",[532,4.695]],["name/4742",[130,54.112]],["parent/4742",[532,4.695]],["name/4743",[131,54.112]],["parent/4743",[532,4.695]],["name/4744",[132,53.8]],["parent/4744",[532,4.695]],["name/4745",[24,49.196]],["parent/4745",[532,4.695]],["name/4746",[28,50.218]],["parent/4746",[532,4.695]],["name/4747",[174,53.8]],["parent/4747",[532,4.695]],["name/4748",[253,61.204]],["parent/4748",[532,4.695]],["name/4749",[365,65.098]],["parent/4749",[532,4.695]],["name/4750",[366,65.098]],["parent/4750",[532,4.695]],["name/4751",[367,64.189]],["parent/4751",[532,4.695]],["name/4752",[368,65.098]],["parent/4752",[532,4.695]],["name/4753",[369,65.098]],["parent/4753",[532,4.695]],["name/4754",[46,46.792]],["parent/4754",[532,4.695]],["name/4755",[47,46.792]],["parent/4755",[532,4.695]],["name/4756",[48,46.792]],["parent/4756",[532,4.695]],["name/4757",[49,46.792]],["parent/4757",[532,4.695]],["name/4758",[50,46.792]],["parent/4758",[532,4.695]],["name/4759",[51,46.792]],["parent/4759",[532,4.695]],["name/4760",[52,46.792]],["parent/4760",[532,4.695]],["name/4761",[53,46.792]],["parent/4761",[532,4.695]],["name/4762",[54,46.792]],["parent/4762",[532,4.695]],["name/4763",[55,46.792]],["parent/4763",[532,4.695]],["name/4764",[56,46.792]],["parent/4764",[532,4.695]],["name/4765",[57,46.792]],["parent/4765",[532,4.695]],["name/4766",[58,46.792]],["parent/4766",[532,4.695]],["name/4767",[59,46.792]],["parent/4767",[532,4.695]],["name/4768",[60,46.792]],["parent/4768",[532,4.695]],["name/4769",[61,46.792]],["parent/4769",[532,4.695]],["name/4770",[62,46.792]],["parent/4770",[532,4.695]],["name/4771",[63,46.792]],["parent/4771",[532,4.695]],["name/4772",[64,46.792]],["parent/4772",[532,4.695]],["name/4773",[65,46.491]],["parent/4773",[532,4.695]],["name/4774",[66,46.491]],["parent/4774",[532,4.695]],["name/4775",[67,46.792]],["parent/4775",[532,4.695]],["name/4776",[68,40.948]],["parent/4776",[532,4.695]],["name/4777",[69,46.344]],["parent/4777",[532,4.695]],["name/4778",[70,46.344]],["parent/4778",[532,4.695]],["name/4779",[71,46.792]],["parent/4779",[532,4.695]],["name/4780",[72,46.056]],["parent/4780",[532,4.695]],["name/4781",[73,46.64]],["parent/4781",[532,4.695]],["name/4782",[74,46.792]],["parent/4782",[532,4.695]],["name/4783",[75,46.792]],["parent/4783",[532,4.695]],["name/4784",[76,46.792]],["parent/4784",[532,4.695]],["name/4785",[77,46.64]],["parent/4785",[532,4.695]],["name/4786",[78,46.199]],["parent/4786",[532,4.695]],["name/4787",[79,46.199]],["parent/4787",[532,4.695]],["name/4788",[1132,71.565]],["parent/4788",[]],["name/4789",[1068,79.449]],["parent/4789",[1132,7.061]],["name/4790",[1070,79.449]],["parent/4790",[1132,7.061]],["name/4791",[1069,79.449]],["parent/4791",[1132,7.061]],["name/4792",[1071,79.449]],["parent/4792",[1132,7.061]],["name/4793",[507,49.392]],["parent/4793",[]],["name/4794",[10,39.376]],["parent/4794",[507,4.874]],["name/4795",[16,46.64]],["parent/4795",[507,4.874]],["name/4796",[17,43.782]],["parent/4796",[507,4.874]],["name/4797",[19,52.639]],["parent/4797",[507,4.874]],["name/4798",[1,49.392]],["parent/4798",[507,4.874]],["name/4799",[1133,76.084]],["parent/4799",[1134,6.755]],["name/4800",[1135,76.084]],["parent/4800",[1134,6.755]],["name/4801",[1136,76.084]],["parent/4801",[1134,6.755]],["name/4802",[1137,76.084]],["parent/4802",[1134,6.755]],["name/4803",[1138,76.084]],["parent/4803",[1134,6.755]],["name/4804",[1139,76.084]],["parent/4804",[1134,6.755]],["name/4805",[118,57.042]],["parent/4805",[1134,6.755]],["name/4806",[1140,73.571]],["parent/4806",[507,4.874]],["name/4807",[391,69.894]],["parent/4807",[507,4.874]],["name/4808",[392,73.571]],["parent/4808",[507,4.874]],["name/4809",[1141,76.084]],["parent/4809",[507,4.874]],["name/4810",[1142,76.084]],["parent/4810",[507,4.874]],["name/4811",[217,71.565]],["parent/4811",[507,4.874]],["name/4812",[27,44.364]],["parent/4812",[507,4.874]],["name/4813",[46,46.792]],["parent/4813",[507,4.874]],["name/4814",[47,46.792]],["parent/4814",[507,4.874]],["name/4815",[48,46.792]],["parent/4815",[507,4.874]],["name/4816",[49,46.792]],["parent/4816",[507,4.874]],["name/4817",[50,46.792]],["parent/4817",[507,4.874]],["name/4818",[51,46.792]],["parent/4818",[507,4.874]],["name/4819",[52,46.792]],["parent/4819",[507,4.874]],["name/4820",[53,46.792]],["parent/4820",[507,4.874]],["name/4821",[54,46.792]],["parent/4821",[507,4.874]],["name/4822",[55,46.792]],["parent/4822",[507,4.874]],["name/4823",[56,46.792]],["parent/4823",[507,4.874]],["name/4824",[57,46.792]],["parent/4824",[507,4.874]],["name/4825",[58,46.792]],["parent/4825",[507,4.874]],["name/4826",[59,46.792]],["parent/4826",[507,4.874]],["name/4827",[60,46.792]],["parent/4827",[507,4.874]],["name/4828",[61,46.792]],["parent/4828",[507,4.874]],["name/4829",[62,46.792]],["parent/4829",[507,4.874]],["name/4830",[63,46.792]],["parent/4830",[507,4.874]],["name/4831",[64,46.792]],["parent/4831",[507,4.874]],["name/4832",[65,46.491]],["parent/4832",[507,4.874]],["name/4833",[66,46.491]],["parent/4833",[507,4.874]],["name/4834",[67,46.792]],["parent/4834",[507,4.874]],["name/4835",[68,40.948]],["parent/4835",[507,4.874]],["name/4836",[69,46.344]],["parent/4836",[507,4.874]],["name/4837",[70,46.344]],["parent/4837",[507,4.874]],["name/4838",[71,46.792]],["parent/4838",[507,4.874]],["name/4839",[72,46.056]],["parent/4839",[507,4.874]],["name/4840",[73,46.64]],["parent/4840",[507,4.874]],["name/4841",[74,46.792]],["parent/4841",[507,4.874]],["name/4842",[75,46.792]],["parent/4842",[507,4.874]],["name/4843",[76,46.792]],["parent/4843",[507,4.874]],["name/4844",[77,46.64]],["parent/4844",[507,4.874]],["name/4845",[78,46.199]],["parent/4845",[507,4.874]],["name/4846",[79,46.199]],["parent/4846",[507,4.874]],["name/4847",[547,68.463]],["parent/4847",[]],["name/4848",[317,71.565]],["parent/4848",[547,6.755]],["name/4849",[401,73.571]],["parent/4849",[547,6.755]],["name/4850",[1143,84.557]],["parent/4850",[547,6.755]],["name/4851",[1046,76.084]],["parent/4851",[547,6.755]],["name/4852",[1144,84.557]],["parent/4852",[547,6.755]],["name/4853",[541,47.922]],["parent/4853",[]],["name/4854",[10,39.376]],["parent/4854",[541,4.728]],["name/4855",[18,57.477]],["parent/4855",[541,4.728]],["name/4856",[16,46.64]],["parent/4856",[541,4.728]],["name/4857",[14,53.8]],["parent/4857",[541,4.728]],["name/4858",[17,43.782]],["parent/4858",[541,4.728]],["name/4859",[1122,71.565]],["parent/4859",[541,4.728]],["name/4860",[27,44.364]],["parent/4860",[541,4.728]],["name/4861",[37,55.841]],["parent/4861",[541,4.728]],["name/4862",[38,55.47]],["parent/4862",[541,4.728]],["name/4863",[130,54.112]],["parent/4863",[541,4.728]],["name/4864",[131,54.112]],["parent/4864",[541,4.728]],["name/4865",[132,53.8]],["parent/4865",[541,4.728]],["name/4866",[24,49.196]],["parent/4866",[541,4.728]],["name/4867",[28,50.218]],["parent/4867",[541,4.728]],["name/4868",[174,53.8]],["parent/4868",[541,4.728]],["name/4869",[253,61.204]],["parent/4869",[541,4.728]],["name/4870",[365,65.098]],["parent/4870",[541,4.728]],["name/4871",[366,65.098]],["parent/4871",[541,4.728]],["name/4872",[367,64.189]],["parent/4872",[541,4.728]],["name/4873",[368,65.098]],["parent/4873",[541,4.728]],["name/4874",[369,65.098]],["parent/4874",[541,4.728]],["name/4875",[46,46.792]],["parent/4875",[541,4.728]],["name/4876",[47,46.792]],["parent/4876",[541,4.728]],["name/4877",[48,46.792]],["parent/4877",[541,4.728]],["name/4878",[49,46.792]],["parent/4878",[541,4.728]],["name/4879",[50,46.792]],["parent/4879",[541,4.728]],["name/4880",[51,46.792]],["parent/4880",[541,4.728]],["name/4881",[52,46.792]],["parent/4881",[541,4.728]],["name/4882",[53,46.792]],["parent/4882",[541,4.728]],["name/4883",[54,46.792]],["parent/4883",[541,4.728]],["name/4884",[55,46.792]],["parent/4884",[541,4.728]],["name/4885",[56,46.792]],["parent/4885",[541,4.728]],["name/4886",[57,46.792]],["parent/4886",[541,4.728]],["name/4887",[58,46.792]],["parent/4887",[541,4.728]],["name/4888",[59,46.792]],["parent/4888",[541,4.728]],["name/4889",[60,46.792]],["parent/4889",[541,4.728]],["name/4890",[61,46.792]],["parent/4890",[541,4.728]],["name/4891",[62,46.792]],["parent/4891",[541,4.728]],["name/4892",[63,46.792]],["parent/4892",[541,4.728]],["name/4893",[64,46.792]],["parent/4893",[541,4.728]],["name/4894",[65,46.491]],["parent/4894",[541,4.728]],["name/4895",[66,46.491]],["parent/4895",[541,4.728]],["name/4896",[67,46.792]],["parent/4896",[541,4.728]],["name/4897",[68,40.948]],["parent/4897",[541,4.728]],["name/4898",[69,46.344]],["parent/4898",[541,4.728]],["name/4899",[70,46.344]],["parent/4899",[541,4.728]],["name/4900",[71,46.792]],["parent/4900",[541,4.728]],["name/4901",[72,46.056]],["parent/4901",[541,4.728]],["name/4902",[73,46.64]],["parent/4902",[541,4.728]],["name/4903",[74,46.792]],["parent/4903",[541,4.728]],["name/4904",[75,46.792]],["parent/4904",[541,4.728]],["name/4905",[76,46.792]],["parent/4905",[541,4.728]],["name/4906",[77,46.64]],["parent/4906",[541,4.728]],["name/4907",[78,46.199]],["parent/4907",[541,4.728]],["name/4908",[79,46.199]],["parent/4908",[541,4.728]],["name/4909",[1145,61.871]],["parent/4909",[]],["name/4910",[1146,84.557]],["parent/4910",[1145,6.105]],["name/4911",[1147,84.557]],["parent/4911",[1145,6.105]],["name/4912",[1148,84.557]],["parent/4912",[1145,6.105]],["name/4913",[1149,84.557]],["parent/4913",[1145,6.105]],["name/4914",[1150,84.557]],["parent/4914",[1145,6.105]],["name/4915",[1151,84.557]],["parent/4915",[1145,6.105]],["name/4916",[1152,84.557]],["parent/4916",[1145,6.105]],["name/4917",[677,64.189]],["parent/4917",[1145,6.105]],["name/4918",[1153,84.557]],["parent/4918",[1145,6.105]],["name/4919",[1091,79.449]],["parent/4919",[1145,6.105]],["name/4920",[1090,79.449]],["parent/4920",[1145,6.105]],["name/4921",[1154,84.557]],["parent/4921",[1145,6.105]],["name/4922",[1155,84.557]],["parent/4922",[1145,6.105]],["name/4923",[437,46.491]],["parent/4923",[]],["name/4924",[9,57.042]],["parent/4924",[437,4.587]],["name/4925",[10,39.376]],["parent/4925",[437,4.587]],["name/4926",[234,76.084]],["parent/4926",[437,4.587]],["name/4927",[235,76.084]],["parent/4927",[437,4.587]],["name/4928",[7,60.578]],["parent/4928",[437,4.587]],["name/4929",[263,66.099]],["parent/4929",[437,4.587]],["name/4930",[16,46.64]],["parent/4930",[437,4.587]],["name/4931",[17,43.782]],["parent/4931",[437,4.587]],["name/4932",[463,69.894]],["parent/4932",[437,4.587]],["name/4933",[1156,84.557]],["parent/4933",[437,4.587]],["name/4934",[1140,73.571]],["parent/4934",[437,4.587]],["name/4935",[1157,84.557]],["parent/4935",[437,4.587]],["name/4936",[1158,84.557]],["parent/4936",[437,4.587]],["name/4937",[1159,84.557]],["parent/4937",[437,4.587]],["name/4938",[1015,76.084]],["parent/4938",[437,4.587]],["name/4939",[64,46.792]],["parent/4939",[437,4.587]],["name/4940",[1160,84.557]],["parent/4940",[437,4.587]],["name/4941",[1161,84.557]],["parent/4941",[437,4.587]],["name/4942",[1162,84.557]],["parent/4942",[437,4.587]],["name/4943",[1163,84.557]],["parent/4943",[437,4.587]],["name/4944",[1164,84.557]],["parent/4944",[437,4.587]],["name/4945",[27,44.364]],["parent/4945",[437,4.587]],["name/4946",[46,46.792]],["parent/4946",[437,4.587]],["name/4947",[47,46.792]],["parent/4947",[437,4.587]],["name/4948",[48,46.792]],["parent/4948",[437,4.587]],["name/4949",[49,46.792]],["parent/4949",[437,4.587]],["name/4950",[50,46.792]],["parent/4950",[437,4.587]],["name/4951",[51,46.792]],["parent/4951",[437,4.587]],["name/4952",[52,46.792]],["parent/4952",[437,4.587]],["name/4953",[53,46.792]],["parent/4953",[437,4.587]],["name/4954",[54,46.792]],["parent/4954",[437,4.587]],["name/4955",[55,46.792]],["parent/4955",[437,4.587]],["name/4956",[56,46.792]],["parent/4956",[437,4.587]],["name/4957",[57,46.792]],["parent/4957",[437,4.587]],["name/4958",[58,46.792]],["parent/4958",[437,4.587]],["name/4959",[59,46.792]],["parent/4959",[437,4.587]],["name/4960",[60,46.792]],["parent/4960",[437,4.587]],["name/4961",[61,46.792]],["parent/4961",[437,4.587]],["name/4962",[62,46.792]],["parent/4962",[437,4.587]],["name/4963",[63,46.792]],["parent/4963",[437,4.587]],["name/4964",[65,46.491]],["parent/4964",[437,4.587]],["name/4965",[66,46.491]],["parent/4965",[437,4.587]],["name/4966",[67,46.792]],["parent/4966",[437,4.587]],["name/4967",[68,40.948]],["parent/4967",[437,4.587]],["name/4968",[69,46.344]],["parent/4968",[437,4.587]],["name/4969",[70,46.344]],["parent/4969",[437,4.587]],["name/4970",[71,46.792]],["parent/4970",[437,4.587]],["name/4971",[72,46.056]],["parent/4971",[437,4.587]],["name/4972",[73,46.64]],["parent/4972",[437,4.587]],["name/4973",[74,46.792]],["parent/4973",[437,4.587]],["name/4974",[75,46.792]],["parent/4974",[437,4.587]],["name/4975",[76,46.792]],["parent/4975",[437,4.587]],["name/4976",[77,46.64]],["parent/4976",[437,4.587]],["name/4977",[78,46.199]],["parent/4977",[437,4.587]],["name/4978",[79,46.199]],["parent/4978",[437,4.587]],["name/4979",[1165,39.019]],["parent/4979",[]],["name/4980",[10,39.376]],["parent/4980",[1165,3.85]],["name/4981",[106,59.99]],["parent/4981",[1165,3.85]],["name/4982",[16,46.64]],["parent/4982",[1165,3.85]],["name/4983",[17,43.782]],["parent/4983",[1165,3.85]],["name/4984",[677,64.189]],["parent/4984",[1165,3.85]],["name/4985",[437,46.491]],["parent/4985",[1165,3.85]],["name/4986",[678,69.894]],["parent/4986",[1165,3.85]],["name/4987",[679,69.894]],["parent/4987",[1165,3.85]],["name/4988",[680,69.894]],["parent/4988",[1165,3.85]],["name/4989",[681,69.894]],["parent/4989",[1165,3.85]],["name/4990",[682,69.894]],["parent/4990",[1165,3.85]],["name/4991",[683,69.894]],["parent/4991",[1165,3.85]],["name/4992",[684,69.894]],["parent/4992",[1165,3.85]],["name/4993",[218,68.463]],["parent/4993",[1165,3.85]],["name/4994",[685,69.894]],["parent/4994",[1165,3.85]],["name/4995",[165,59.434]],["parent/4995",[1165,3.85]],["name/4996",[686,69.894]],["parent/4996",[1165,3.85]],["name/4997",[687,69.894]],["parent/4997",[1165,3.85]],["name/4998",[688,69.894]],["parent/4998",[1165,3.85]],["name/4999",[689,69.894]],["parent/4999",[1165,3.85]],["name/5000",[690,69.894]],["parent/5000",[1165,3.85]],["name/5001",[166,59.99]],["parent/5001",[1165,3.85]],["name/5002",[144,58.908]],["parent/5002",[1165,3.85]],["name/5003",[691,67.211]],["parent/5003",[1165,3.85]],["name/5004",[692,69.894]],["parent/5004",[1165,3.85]],["name/5005",[187,56.625]],["parent/5005",[1165,3.85]],["name/5006",[693,69.894]],["parent/5006",[1165,3.85]],["name/5007",[111,43.126]],["parent/5007",[1165,3.85]],["name/5008",[112,57.042]],["parent/5008",[1165,3.85]],["name/5009",[113,54.768]],["parent/5009",[1165,3.85]],["name/5010",[19,52.639]],["parent/5010",[1165,3.85]],["name/5011",[1,49.392]],["parent/5011",[1165,3.85]],["name/5012",[114,59.99]],["parent/5012",[1166,6.175]],["name/5013",[27,44.364]],["parent/5013",[1166,6.175]],["name/5014",[116,59.99]],["parent/5014",[1166,6.175]],["name/5015",[117,59.99]],["parent/5015",[1166,6.175]],["name/5016",[118,57.042]],["parent/5016",[1166,6.175]],["name/5017",[119,59.99]],["parent/5017",[1166,6.175]],["name/5018",[120,59.99]],["parent/5018",[1166,6.175]],["name/5019",[121,57.477]],["parent/5019",[1166,6.175]],["name/5020",[122,59.99]],["parent/5020",[1166,6.175]],["name/5021",[123,59.99]],["parent/5021",[1166,6.175]],["name/5022",[124,56.625]],["parent/5022",[1166,6.175]],["name/5023",[68,40.948]],["parent/5023",[1166,6.175]],["name/5024",[125,58.408]],["parent/5024",[1166,6.175]],["name/5025",[126,59.99]],["parent/5025",[1165,3.85]],["name/5026",[127,59.99]],["parent/5026",[1165,3.85]],["name/5027",[128,59.434]],["parent/5027",[1165,3.85]],["name/5028",[129,59.99]],["parent/5028",[1165,3.85]],["name/5029",[130,54.112]],["parent/5029",[1165,3.85]],["name/5030",[131,54.112]],["parent/5030",[1165,3.85]],["name/5031",[132,53.8]],["parent/5031",[1165,3.85]],["name/5032",[133,59.99]],["parent/5032",[1165,3.85]],["name/5033",[134,59.99]],["parent/5033",[1165,3.85]],["name/5034",[135,59.99]],["parent/5034",[1165,3.85]],["name/5035",[136,59.99]],["parent/5035",[1165,3.85]],["name/5036",[137,59.434]],["parent/5036",[1165,3.85]],["name/5037",[138,59.99]],["parent/5037",[1165,3.85]],["name/5038",[139,59.99]],["parent/5038",[1165,3.85]],["name/5039",[140,59.99]],["parent/5039",[1165,3.85]],["name/5040",[141,59.99]],["parent/5040",[1165,3.85]],["name/5041",[142,59.99]],["parent/5041",[1165,3.85]],["name/5042",[143,59.99]],["parent/5042",[1165,3.85]],["name/5043",[145,59.434]],["parent/5043",[1165,3.85]],["name/5044",[146,59.434]],["parent/5044",[1165,3.85]],["name/5045",[147,59.434]],["parent/5045",[1165,3.85]],["name/5046",[148,59.434]],["parent/5046",[1165,3.85]],["name/5047",[149,59.99]],["parent/5047",[1165,3.85]],["name/5048",[150,59.99]],["parent/5048",[1165,3.85]],["name/5049",[151,59.99]],["parent/5049",[1165,3.85]],["name/5050",[152,59.99]],["parent/5050",[1165,3.85]],["name/5051",[153,59.99]],["parent/5051",[1165,3.85]],["name/5052",[154,59.99]],["parent/5052",[1165,3.85]],["name/5053",[155,59.99]],["parent/5053",[1165,3.85]],["name/5054",[156,59.99]],["parent/5054",[1165,3.85]],["name/5055",[157,57.932]],["parent/5055",[1165,3.85]],["name/5056",[158,59.99]],["parent/5056",[1165,3.85]],["name/5057",[159,59.99]],["parent/5057",[1165,3.85]],["name/5058",[160,59.99]],["parent/5058",[1165,3.85]],["name/5059",[161,59.99]],["parent/5059",[1165,3.85]],["name/5060",[162,59.99]],["parent/5060",[1165,3.85]],["name/5061",[163,56.225]],["parent/5061",[1165,3.85]],["name/5062",[164,59.434]],["parent/5062",[1165,3.85]],["name/5063",[167,59.99]],["parent/5063",[1165,3.85]],["name/5064",[168,59.99]],["parent/5064",[1165,3.85]],["name/5065",[169,59.99]],["parent/5065",[1165,3.85]],["name/5066",[170,59.99]],["parent/5066",[1165,3.85]],["name/5067",[171,57.042]],["parent/5067",[1165,3.85]],["name/5068",[172,59.434]],["parent/5068",[1165,3.85]],["name/5069",[173,59.434]],["parent/5069",[1165,3.85]],["name/5070",[28,50.218]],["parent/5070",[1165,3.85]],["name/5071",[24,49.196]],["parent/5071",[1165,3.85]],["name/5072",[43,52.369]],["parent/5072",[1165,3.85]],["name/5073",[44,52.369]],["parent/5073",[1165,3.85]],["name/5074",[174,53.8]],["parent/5074",[1165,3.85]],["name/5075",[175,58.908]],["parent/5075",[1165,3.85]],["name/5076",[176,59.434]],["parent/5076",[1165,3.85]],["name/5077",[177,59.434]],["parent/5077",[1165,3.85]],["name/5078",[178,59.434]],["parent/5078",[1165,3.85]],["name/5079",[179,59.434]],["parent/5079",[1165,3.85]],["name/5080",[180,59.434]],["parent/5080",[1165,3.85]],["name/5081",[181,59.434]],["parent/5081",[1165,3.85]],["name/5082",[182,59.434]],["parent/5082",[1165,3.85]],["name/5083",[183,59.434]],["parent/5083",[1165,3.85]],["name/5084",[109,59.434]],["parent/5084",[1165,3.85]],["name/5085",[184,57.932]],["parent/5085",[1165,3.85]],["name/5086",[185,59.434]],["parent/5086",[1165,3.85]],["name/5087",[110,56.225]],["parent/5087",[1165,3.85]],["name/5088",[186,59.434]],["parent/5088",[1165,3.85]],["name/5089",[188,58.908]],["parent/5089",[1165,3.85]],["name/5090",[189,59.434]],["parent/5090",[1165,3.85]],["name/5091",[190,59.434]],["parent/5091",[1165,3.85]],["name/5092",[191,59.434]],["parent/5092",[1165,3.85]],["name/5093",[192,59.434]],["parent/5093",[1165,3.85]],["name/5094",[193,59.434]],["parent/5094",[1165,3.85]],["name/5095",[36,53.202]],["parent/5095",[1165,3.85]],["name/5096",[34,53.202]],["parent/5096",[1165,3.85]],["name/5097",[35,53.202]],["parent/5097",[1165,3.85]],["name/5098",[46,46.792]],["parent/5098",[1165,3.85]],["name/5099",[47,46.792]],["parent/5099",[1165,3.85]],["name/5100",[48,46.792]],["parent/5100",[1165,3.85]],["name/5101",[49,46.792]],["parent/5101",[1165,3.85]],["name/5102",[50,46.792]],["parent/5102",[1165,3.85]],["name/5103",[51,46.792]],["parent/5103",[1165,3.85]],["name/5104",[52,46.792]],["parent/5104",[1165,3.85]],["name/5105",[53,46.792]],["parent/5105",[1165,3.85]],["name/5106",[27,44.364]],["parent/5106",[1165,3.85]],["name/5107",[54,46.792]],["parent/5107",[1165,3.85]],["name/5108",[55,46.792]],["parent/5108",[1165,3.85]],["name/5109",[56,46.792]],["parent/5109",[1165,3.85]],["name/5110",[57,46.792]],["parent/5110",[1165,3.85]],["name/5111",[58,46.792]],["parent/5111",[1165,3.85]],["name/5112",[59,46.792]],["parent/5112",[1165,3.85]],["name/5113",[60,46.792]],["parent/5113",[1165,3.85]],["name/5114",[61,46.792]],["parent/5114",[1165,3.85]],["name/5115",[62,46.792]],["parent/5115",[1165,3.85]],["name/5116",[63,46.792]],["parent/5116",[1165,3.85]],["name/5117",[64,46.792]],["parent/5117",[1165,3.85]],["name/5118",[65,46.491]],["parent/5118",[1165,3.85]],["name/5119",[66,46.491]],["parent/5119",[1165,3.85]],["name/5120",[67,46.792]],["parent/5120",[1165,3.85]],["name/5121",[68,40.948]],["parent/5121",[1165,3.85]],["name/5122",[69,46.344]],["parent/5122",[1165,3.85]],["name/5123",[70,46.344]],["parent/5123",[1165,3.85]],["name/5124",[71,46.792]],["parent/5124",[1165,3.85]],["name/5125",[72,46.056]],["parent/5125",[1165,3.85]],["name/5126",[73,46.64]],["parent/5126",[1165,3.85]],["name/5127",[74,46.792]],["parent/5127",[1165,3.85]],["name/5128",[75,46.792]],["parent/5128",[1165,3.85]],["name/5129",[76,46.792]],["parent/5129",[1165,3.85]],["name/5130",[77,46.64]],["parent/5130",[1165,3.85]],["name/5131",[78,46.199]],["parent/5131",[1165,3.85]],["name/5132",[79,46.199]],["parent/5132",[1165,3.85]],["name/5133",[501,45.639]],["parent/5133",[]],["name/5134",[10,39.376]],["parent/5134",[501,4.503]],["name/5135",[16,46.64]],["parent/5135",[501,4.503]],["name/5136",[333,69.894]],["parent/5136",[501,4.503]],["name/5137",[11,57.932]],["parent/5137",[501,4.503]],["name/5138",[14,53.8]],["parent/5138",[501,4.503]],["name/5139",[15,59.434]],["parent/5139",[501,4.503]],["name/5140",[17,43.782]],["parent/5140",[501,4.503]],["name/5141",[1167,84.557]],["parent/5141",[501,4.503]],["name/5142",[1168,84.557]],["parent/5142",[501,4.503]],["name/5143",[675,79.449]],["parent/5143",[501,4.503]],["name/5144",[676,79.449]],["parent/5144",[501,4.503]],["name/5145",[1169,84.557]],["parent/5145",[501,4.503]],["name/5146",[1170,79.449]],["parent/5146",[501,4.503]],["name/5147",[1171,84.557]],["parent/5147",[501,4.503]],["name/5148",[27,44.364]],["parent/5148",[501,4.503]],["name/5149",[24,49.196]],["parent/5149",[501,4.503]],["name/5150",[28,50.218]],["parent/5150",[501,4.503]],["name/5151",[29,60.578]],["parent/5151",[501,4.503]],["name/5152",[30,60.578]],["parent/5152",[501,4.503]],["name/5153",[25,60.578]],["parent/5153",[501,4.503]],["name/5154",[31,60.578]],["parent/5154",[501,4.503]],["name/5155",[32,60.578]],["parent/5155",[501,4.503]],["name/5156",[33,60.578]],["parent/5156",[501,4.503]],["name/5157",[34,53.202]],["parent/5157",[501,4.503]],["name/5158",[35,53.202]],["parent/5158",[501,4.503]],["name/5159",[36,53.202]],["parent/5159",[501,4.503]],["name/5160",[37,55.841]],["parent/5160",[501,4.503]],["name/5161",[38,55.47]],["parent/5161",[501,4.503]],["name/5162",[39,60.578]],["parent/5162",[501,4.503]],["name/5163",[40,59.434]],["parent/5163",[501,4.503]],["name/5164",[41,60.578]],["parent/5164",[501,4.503]],["name/5165",[42,60.578]],["parent/5165",[501,4.503]],["name/5166",[43,52.369]],["parent/5166",[501,4.503]],["name/5167",[44,52.369]],["parent/5167",[501,4.503]],["name/5168",[45,60.578]],["parent/5168",[501,4.503]],["name/5169",[46,46.792]],["parent/5169",[501,4.503]],["name/5170",[47,46.792]],["parent/5170",[501,4.503]],["name/5171",[48,46.792]],["parent/5171",[501,4.503]],["name/5172",[49,46.792]],["parent/5172",[501,4.503]],["name/5173",[50,46.792]],["parent/5173",[501,4.503]],["name/5174",[51,46.792]],["parent/5174",[501,4.503]],["name/5175",[52,46.792]],["parent/5175",[501,4.503]],["name/5176",[53,46.792]],["parent/5176",[501,4.503]],["name/5177",[54,46.792]],["parent/5177",[501,4.503]],["name/5178",[55,46.792]],["parent/5178",[501,4.503]],["name/5179",[56,46.792]],["parent/5179",[501,4.503]],["name/5180",[57,46.792]],["parent/5180",[501,4.503]],["name/5181",[58,46.792]],["parent/5181",[501,4.503]],["name/5182",[59,46.792]],["parent/5182",[501,4.503]],["name/5183",[60,46.792]],["parent/5183",[501,4.503]],["name/5184",[61,46.792]],["parent/5184",[501,4.503]],["name/5185",[62,46.792]],["parent/5185",[501,4.503]],["name/5186",[63,46.792]],["parent/5186",[501,4.503]],["name/5187",[64,46.792]],["parent/5187",[501,4.503]],["name/5188",[65,46.491]],["parent/5188",[501,4.503]],["name/5189",[66,46.491]],["parent/5189",[501,4.503]],["name/5190",[67,46.792]],["parent/5190",[501,4.503]],["name/5191",[68,40.948]],["parent/5191",[501,4.503]],["name/5192",[69,46.344]],["parent/5192",[501,4.503]],["name/5193",[70,46.344]],["parent/5193",[501,4.503]],["name/5194",[71,46.792]],["parent/5194",[501,4.503]],["name/5195",[72,46.056]],["parent/5195",[501,4.503]],["name/5196",[73,46.64]],["parent/5196",[501,4.503]],["name/5197",[74,46.792]],["parent/5197",[501,4.503]],["name/5198",[75,46.792]],["parent/5198",[501,4.503]],["name/5199",[76,46.792]],["parent/5199",[501,4.503]],["name/5200",[77,46.64]],["parent/5200",[501,4.503]],["name/5201",[78,46.199]],["parent/5201",[501,4.503]],["name/5202",[79,46.199]],["parent/5202",[501,4.503]],["name/5203",[298,45.639]],["parent/5203",[]],["name/5204",[10,39.376]],["parent/5204",[298,4.503]],["name/5205",[18,57.477]],["parent/5205",[298,4.503]],["name/5206",[1,49.392]],["parent/5206",[298,4.503]],["name/5207",[1172,84.557]],["parent/5207",[1173,6.632]],["name/5208",[1174,84.557]],["parent/5208",[1173,6.632]],["name/5209",[1175,84.557]],["parent/5209",[1173,6.632]],["name/5210",[1176,84.557]],["parent/5210",[1173,6.632]],["name/5211",[1177,84.557]],["parent/5211",[1173,6.632]],["name/5212",[1178,84.557]],["parent/5212",[1173,6.632]],["name/5213",[1179,84.557]],["parent/5213",[1173,6.632]],["name/5214",[16,46.64]],["parent/5214",[298,4.503]],["name/5215",[11,57.932]],["parent/5215",[298,4.503]],["name/5216",[14,53.8]],["parent/5216",[298,4.503]],["name/5217",[15,59.434]],["parent/5217",[298,4.503]],["name/5218",[17,43.782]],["parent/5218",[298,4.503]],["name/5219",[19,52.639]],["parent/5219",[298,4.503]],["name/5220",[1,49.392]],["parent/5220",[298,4.503]],["name/5221",[22,73.571]],["parent/5221",[1173,6.632]],["name/5222",[37,55.841]],["parent/5222",[298,4.503]],["name/5223",[1180,84.557]],["parent/5223",[298,4.503]],["name/5224",[27,44.364]],["parent/5224",[298,4.503]],["name/5225",[24,49.196]],["parent/5225",[298,4.503]],["name/5226",[28,50.218]],["parent/5226",[298,4.503]],["name/5227",[29,60.578]],["parent/5227",[298,4.503]],["name/5228",[30,60.578]],["parent/5228",[298,4.503]],["name/5229",[25,60.578]],["parent/5229",[298,4.503]],["name/5230",[31,60.578]],["parent/5230",[298,4.503]],["name/5231",[32,60.578]],["parent/5231",[298,4.503]],["name/5232",[33,60.578]],["parent/5232",[298,4.503]],["name/5233",[34,53.202]],["parent/5233",[298,4.503]],["name/5234",[35,53.202]],["parent/5234",[298,4.503]],["name/5235",[36,53.202]],["parent/5235",[298,4.503]],["name/5236",[38,55.47]],["parent/5236",[298,4.503]],["name/5237",[39,60.578]],["parent/5237",[298,4.503]],["name/5238",[40,59.434]],["parent/5238",[298,4.503]],["name/5239",[41,60.578]],["parent/5239",[298,4.503]],["name/5240",[42,60.578]],["parent/5240",[298,4.503]],["name/5241",[43,52.369]],["parent/5241",[298,4.503]],["name/5242",[44,52.369]],["parent/5242",[298,4.503]],["name/5243",[45,60.578]],["parent/5243",[298,4.503]],["name/5244",[46,46.792]],["parent/5244",[298,4.503]],["name/5245",[47,46.792]],["parent/5245",[298,4.503]],["name/5246",[48,46.792]],["parent/5246",[298,4.503]],["name/5247",[49,46.792]],["parent/5247",[298,4.503]],["name/5248",[50,46.792]],["parent/5248",[298,4.503]],["name/5249",[51,46.792]],["parent/5249",[298,4.503]],["name/5250",[52,46.792]],["parent/5250",[298,4.503]],["name/5251",[53,46.792]],["parent/5251",[298,4.503]],["name/5252",[54,46.792]],["parent/5252",[298,4.503]],["name/5253",[55,46.792]],["parent/5253",[298,4.503]],["name/5254",[56,46.792]],["parent/5254",[298,4.503]],["name/5255",[57,46.792]],["parent/5255",[298,4.503]],["name/5256",[58,46.792]],["parent/5256",[298,4.503]],["name/5257",[59,46.792]],["parent/5257",[298,4.503]],["name/5258",[60,46.792]],["parent/5258",[298,4.503]],["name/5259",[61,46.792]],["parent/5259",[298,4.503]],["name/5260",[62,46.792]],["parent/5260",[298,4.503]],["name/5261",[63,46.792]],["parent/5261",[298,4.503]],["name/5262",[64,46.792]],["parent/5262",[298,4.503]],["name/5263",[65,46.491]],["parent/5263",[298,4.503]],["name/5264",[66,46.491]],["parent/5264",[298,4.503]],["name/5265",[67,46.792]],["parent/5265",[298,4.503]],["name/5266",[68,40.948]],["parent/5266",[298,4.503]],["name/5267",[69,46.344]],["parent/5267",[298,4.503]],["name/5268",[70,46.344]],["parent/5268",[298,4.503]],["name/5269",[71,46.792]],["parent/5269",[298,4.503]],["name/5270",[72,46.056]],["parent/5270",[298,4.503]],["name/5271",[73,46.64]],["parent/5271",[298,4.503]],["name/5272",[74,46.792]],["parent/5272",[298,4.503]],["name/5273",[75,46.792]],["parent/5273",[298,4.503]],["name/5274",[76,46.792]],["parent/5274",[298,4.503]],["name/5275",[77,46.64]],["parent/5275",[298,4.503]],["name/5276",[78,46.199]],["parent/5276",[298,4.503]],["name/5277",[79,46.199]],["parent/5277",[298,4.503]],["name/5278",[1181,76.084]],["parent/5278",[]],["name/5279",[1182,68.463]],["parent/5279",[]],["name/5280",[1182,68.463]],["parent/5280",[1182,6.755]],["name/5281",[1181,76.084]],["parent/5281",[1182,6.755]],["name/5282",[1183,79.449]],["parent/5282",[1182,6.755]],["name/5283",[474,76.084]],["parent/5283",[1182,6.755]],["name/5284",[533,47.922]],["parent/5284",[]],["name/5285",[10,39.376]],["parent/5285",[533,4.728]],["name/5286",[17,43.782]],["parent/5286",[533,4.728]],["name/5287",[475,51.117]],["parent/5287",[533,4.728]],["name/5288",[970,79.449]],["parent/5288",[533,4.728]],["name/5289",[7,60.578]],["parent/5289",[533,4.728]],["name/5290",[263,66.099]],["parent/5290",[533,4.728]],["name/5291",[1184,84.557]],["parent/5291",[533,4.728]],["name/5292",[1185,84.557]],["parent/5292",[533,4.728]],["name/5293",[1,49.392]],["parent/5293",[533,4.728]],["name/5294",[230,68.463]],["parent/5294",[1186,7.839]],["name/5295",[245,68.463]],["parent/5295",[1186,7.839]],["name/5296",[474,76.084]],["parent/5296",[533,4.728]],["name/5297",[1181,76.084]],["parent/5297",[533,4.728]],["name/5298",[1183,79.449]],["parent/5298",[533,4.728]],["name/5299",[1182,68.463]],["parent/5299",[533,4.728]],["name/5300",[1187,84.557]],["parent/5300",[533,4.728]],["name/5301",[1188,84.557]],["parent/5301",[533,4.728]],["name/5302",[1189,84.557]],["parent/5302",[533,4.728]],["name/5303",[1190,84.557]],["parent/5303",[533,4.728]],["name/5304",[1191,79.449]],["parent/5304",[533,4.728]],["name/5305",[276,76.084]],["parent/5305",[533,4.728]],["name/5306",[277,76.084]],["parent/5306",[533,4.728]],["name/5307",[278,73.571]],["parent/5307",[533,4.728]],["name/5308",[279,76.084]],["parent/5308",[533,4.728]],["name/5309",[280,76.084]],["parent/5309",[533,4.728]],["name/5310",[281,76.084]],["parent/5310",[533,4.728]],["name/5311",[282,76.084]],["parent/5311",[533,4.728]],["name/5312",[283,76.084]],["parent/5312",[533,4.728]],["name/5313",[284,76.084]],["parent/5313",[533,4.728]],["name/5314",[286,76.084]],["parent/5314",[533,4.728]],["name/5315",[285,76.084]],["parent/5315",[533,4.728]],["name/5316",[287,73.571]],["parent/5316",[533,4.728]],["name/5317",[124,56.625]],["parent/5317",[533,4.728]],["name/5318",[1192,84.557]],["parent/5318",[533,4.728]],["name/5319",[1193,84.557]],["parent/5319",[533,4.728]],["name/5320",[275,73.571]],["parent/5320",[533,4.728]],["name/5321",[288,76.084]],["parent/5321",[533,4.728]],["name/5322",[289,76.084]],["parent/5322",[533,4.728]],["name/5323",[290,76.084]],["parent/5323",[533,4.728]],["name/5324",[291,76.084]],["parent/5324",[533,4.728]],["name/5325",[292,76.084]],["parent/5325",[533,4.728]],["name/5326",[293,76.084]],["parent/5326",[533,4.728]],["name/5327",[294,76.084]],["parent/5327",[533,4.728]],["name/5328",[295,76.084]],["parent/5328",[533,4.728]],["name/5329",[296,76.084]],["parent/5329",[533,4.728]],["name/5330",[299,76.084]],["parent/5330",[533,4.728]],["name/5331",[297,76.084]],["parent/5331",[533,4.728]],["name/5332",[298,45.639]],["parent/5332",[533,4.728]],["name/5333",[300,76.084]],["parent/5333",[533,4.728]],["name/5334",[301,76.084]],["parent/5334",[533,4.728]],["name/5335",[302,76.084]],["parent/5335",[533,4.728]],["name/5336",[303,76.084]],["parent/5336",[533,4.728]],["name/5337",[304,73.571]],["parent/5337",[533,4.728]],["name/5338",[305,73.571]],["parent/5338",[533,4.728]],["name/5339",[69,46.344]],["parent/5339",[533,4.728]],["name/5340",[70,46.344]],["parent/5340",[533,4.728]],["name/5341",[68,40.948]],["parent/5341",[533,4.728]],["name/5342",[306,76.084]],["parent/5342",[533,4.728]],["name/5343",[1194,71.565]],["parent/5343",[]],["name/5344",[1195,84.557]],["parent/5344",[1194,7.061]],["name/5345",[625,79.449]],["parent/5345",[1194,7.061]],["name/5346",[626,79.449]],["parent/5346",[1194,7.061]],["name/5347",[627,79.449]],["parent/5347",[1194,7.061]],["name/5348",[1196,67.211]],["parent/5348",[]],["name/5349",[1197,84.557]],["parent/5349",[1196,6.632]],["name/5350",[477,41.383]],["parent/5350",[1196,6.632]],["name/5351",[1198,79.449]],["parent/5351",[1196,6.632]],["name/5352",[434,69.894]],["parent/5352",[1196,6.632]],["name/5353",[1199,84.557]],["parent/5353",[1196,6.632]],["name/5354",[1200,84.557]],["parent/5354",[1196,6.632]],["name/5355",[1201,84.557]],["parent/5355",[1196,6.632]],["name/5356",[1202,62.585]],["parent/5356",[]],["name/5357",[438,48.094]],["parent/5357",[1202,6.175]],["name/5358",[1203,84.557]],["parent/5358",[1202,6.175]],["name/5359",[1204,84.557]],["parent/5359",[1202,6.175]],["name/5360",[1205,84.557]],["parent/5360",[1202,6.175]],["name/5361",[1206,84.557]],["parent/5361",[1202,6.175]],["name/5362",[1207,84.557]],["parent/5362",[1202,6.175]],["name/5363",[230,68.463]],["parent/5363",[1202,6.175]],["name/5364",[7,60.578]],["parent/5364",[1202,6.175]],["name/5365",[245,68.463]],["parent/5365",[1202,6.175]],["name/5366",[1208,84.557]],["parent/5366",[1202,6.175]],["name/5367",[1209,84.557]],["parent/5367",[1202,6.175]],["name/5368",[1198,79.449]],["parent/5368",[1202,6.175]],["name/5369",[511,50.218]],["parent/5369",[]],["name/5370",[10,39.376]],["parent/5370",[511,4.955]],["name/5371",[16,46.64]],["parent/5371",[511,4.955]],["name/5372",[17,43.782]],["parent/5372",[511,4.955]],["name/5373",[463,69.894]],["parent/5373",[511,4.955]],["name/5374",[66,46.491]],["parent/5374",[511,4.955]],["name/5375",[1210,84.557]],["parent/5375",[511,4.955]],["name/5376",[1211,84.557]],["parent/5376",[511,4.955]],["name/5377",[11,57.932]],["parent/5377",[511,4.955]],["name/5378",[27,44.364]],["parent/5378",[511,4.955]],["name/5379",[46,46.792]],["parent/5379",[511,4.955]],["name/5380",[47,46.792]],["parent/5380",[511,4.955]],["name/5381",[48,46.792]],["parent/5381",[511,4.955]],["name/5382",[49,46.792]],["parent/5382",[511,4.955]],["name/5383",[50,46.792]],["parent/5383",[511,4.955]],["name/5384",[51,46.792]],["parent/5384",[511,4.955]],["name/5385",[52,46.792]],["parent/5385",[511,4.955]],["name/5386",[53,46.792]],["parent/5386",[511,4.955]],["name/5387",[54,46.792]],["parent/5387",[511,4.955]],["name/5388",[55,46.792]],["parent/5388",[511,4.955]],["name/5389",[56,46.792]],["parent/5389",[511,4.955]],["name/5390",[57,46.792]],["parent/5390",[511,4.955]],["name/5391",[58,46.792]],["parent/5391",[511,4.955]],["name/5392",[59,46.792]],["parent/5392",[511,4.955]],["name/5393",[60,46.792]],["parent/5393",[511,4.955]],["name/5394",[61,46.792]],["parent/5394",[511,4.955]],["name/5395",[62,46.792]],["parent/5395",[511,4.955]],["name/5396",[63,46.792]],["parent/5396",[511,4.955]],["name/5397",[64,46.792]],["parent/5397",[511,4.955]],["name/5398",[65,46.491]],["parent/5398",[511,4.955]],["name/5399",[67,46.792]],["parent/5399",[511,4.955]],["name/5400",[68,40.948]],["parent/5400",[511,4.955]],["name/5401",[69,46.344]],["parent/5401",[511,4.955]],["name/5402",[70,46.344]],["parent/5402",[511,4.955]],["name/5403",[71,46.792]],["parent/5403",[511,4.955]],["name/5404",[72,46.056]],["parent/5404",[511,4.955]],["name/5405",[73,46.64]],["parent/5405",[511,4.955]],["name/5406",[74,46.792]],["parent/5406",[511,4.955]],["name/5407",[75,46.792]],["parent/5407",[511,4.955]],["name/5408",[76,46.792]],["parent/5408",[511,4.955]],["name/5409",[77,46.64]],["parent/5409",[511,4.955]],["name/5410",[78,46.199]],["parent/5410",[511,4.955]],["name/5411",[79,46.199]],["parent/5411",[511,4.955]],["name/5412",[1212,76.084]],["parent/5412",[]],["name/5413",[1213,84.557]],["parent/5413",[1212,7.507]],["name/5414",[1214,84.557]],["parent/5414",[1212,7.507]],["name/5415",[1215,59.99]],["parent/5415",[]],["name/5416",[1216,79.449]],["parent/5416",[1215,5.919]],["name/5417",[677,64.189]],["parent/5417",[1215,5.919]],["name/5418",[743,76.084]],["parent/5418",[1215,5.919]],["name/5419",[744,71.565]],["parent/5419",[1215,5.919]],["name/5420",[745,71.565]],["parent/5420",[1215,5.919]],["name/5421",[125,58.408]],["parent/5421",[1215,5.919]],["name/5422",[121,57.477]],["parent/5422",[1215,5.919]],["name/5423",[746,76.084]],["parent/5423",[1215,5.919]],["name/5424",[361,46.199]],["parent/5424",[1215,5.919]],["name/5425",[112,57.042]],["parent/5425",[1215,5.919]],["name/5426",[410,63.355]],["parent/5426",[1215,5.919]],["name/5427",[0,58.908]],["parent/5427",[1215,5.919]],["name/5428",[409,64.189]],["parent/5428",[1215,5.919]],["name/5429",[18,57.477]],["parent/5429",[1215,5.919]],["name/5430",[747,69.894]],["parent/5430",[1215,5.919]],["name/5431",[748,69.894]],["parent/5431",[1215,5.919]],["name/5432",[495,38.21]],["parent/5432",[]],["name/5433",[10,39.376]],["parent/5433",[495,3.77]],["name/5434",[106,59.99]],["parent/5434",[495,3.77]],["name/5435",[16,46.64]],["parent/5435",[495,3.77]],["name/5436",[17,43.782]],["parent/5436",[495,3.77]],["name/5437",[789,79.449]],["parent/5437",[495,3.77]],["name/5438",[790,79.449]],["parent/5438",[495,3.77]],["name/5439",[171,57.042]],["parent/5439",[495,3.77]],["name/5440",[791,79.449]],["parent/5440",[495,3.77]],["name/5441",[151,59.99]],["parent/5441",[495,3.77]],["name/5442",[689,69.894]],["parent/5442",[495,3.77]],["name/5443",[792,79.449]],["parent/5443",[495,3.77]],["name/5444",[132,53.8]],["parent/5444",[495,3.77]],["name/5445",[793,79.449]],["parent/5445",[495,3.77]],["name/5446",[159,59.99]],["parent/5446",[495,3.77]],["name/5447",[139,59.99]],["parent/5447",[495,3.77]],["name/5448",[110,56.225]],["parent/5448",[495,3.77]],["name/5449",[687,69.894]],["parent/5449",[495,3.77]],["name/5450",[794,79.449]],["parent/5450",[495,3.77]],["name/5451",[166,59.99]],["parent/5451",[495,3.77]],["name/5452",[782,73.571]],["parent/5452",[495,3.77]],["name/5453",[740,69.894]],["parent/5453",[495,3.77]],["name/5454",[795,79.449]],["parent/5454",[495,3.77]],["name/5455",[796,79.449]],["parent/5455",[495,3.77]],["name/5456",[27,44.364]],["parent/5456",[495,3.77]],["name/5457",[677,64.189]],["parent/5457",[495,3.77]],["name/5458",[437,46.491]],["parent/5458",[495,3.77]],["name/5459",[678,69.894]],["parent/5459",[495,3.77]],["name/5460",[679,69.894]],["parent/5460",[495,3.77]],["name/5461",[680,69.894]],["parent/5461",[495,3.77]],["name/5462",[681,69.894]],["parent/5462",[495,3.77]],["name/5463",[682,69.894]],["parent/5463",[495,3.77]],["name/5464",[683,69.894]],["parent/5464",[495,3.77]],["name/5465",[684,69.894]],["parent/5465",[495,3.77]],["name/5466",[218,68.463]],["parent/5466",[495,3.77]],["name/5467",[685,69.894]],["parent/5467",[495,3.77]],["name/5468",[165,59.434]],["parent/5468",[495,3.77]],["name/5469",[686,69.894]],["parent/5469",[495,3.77]],["name/5470",[688,69.894]],["parent/5470",[495,3.77]],["name/5471",[690,69.894]],["parent/5471",[495,3.77]],["name/5472",[144,58.908]],["parent/5472",[495,3.77]],["name/5473",[691,67.211]],["parent/5473",[495,3.77]],["name/5474",[692,69.894]],["parent/5474",[495,3.77]],["name/5475",[187,56.625]],["parent/5475",[495,3.77]],["name/5476",[693,69.894]],["parent/5476",[495,3.77]],["name/5477",[111,43.126]],["parent/5477",[495,3.77]],["name/5478",[112,57.042]],["parent/5478",[495,3.77]],["name/5479",[113,54.768]],["parent/5479",[495,3.77]],["name/5480",[19,52.639]],["parent/5480",[495,3.77]],["name/5481",[1,49.392]],["parent/5481",[495,3.77]],["name/5482",[114,59.99]],["parent/5482",[1217,6.175]],["name/5483",[27,44.364]],["parent/5483",[1217,6.175]],["name/5484",[116,59.99]],["parent/5484",[1217,6.175]],["name/5485",[117,59.99]],["parent/5485",[1217,6.175]],["name/5486",[118,57.042]],["parent/5486",[1217,6.175]],["name/5487",[119,59.99]],["parent/5487",[1217,6.175]],["name/5488",[120,59.99]],["parent/5488",[1217,6.175]],["name/5489",[121,57.477]],["parent/5489",[1217,6.175]],["name/5490",[122,59.99]],["parent/5490",[1217,6.175]],["name/5491",[123,59.99]],["parent/5491",[1217,6.175]],["name/5492",[124,56.625]],["parent/5492",[1217,6.175]],["name/5493",[68,40.948]],["parent/5493",[1217,6.175]],["name/5494",[125,58.408]],["parent/5494",[1217,6.175]],["name/5495",[126,59.99]],["parent/5495",[495,3.77]],["name/5496",[127,59.99]],["parent/5496",[495,3.77]],["name/5497",[128,59.434]],["parent/5497",[495,3.77]],["name/5498",[129,59.99]],["parent/5498",[495,3.77]],["name/5499",[130,54.112]],["parent/5499",[495,3.77]],["name/5500",[131,54.112]],["parent/5500",[495,3.77]],["name/5501",[133,59.99]],["parent/5501",[495,3.77]],["name/5502",[134,59.99]],["parent/5502",[495,3.77]],["name/5503",[135,59.99]],["parent/5503",[495,3.77]],["name/5504",[136,59.99]],["parent/5504",[495,3.77]],["name/5505",[137,59.434]],["parent/5505",[495,3.77]],["name/5506",[138,59.99]],["parent/5506",[495,3.77]],["name/5507",[140,59.99]],["parent/5507",[495,3.77]],["name/5508",[141,59.99]],["parent/5508",[495,3.77]],["name/5509",[142,59.99]],["parent/5509",[495,3.77]],["name/5510",[143,59.99]],["parent/5510",[495,3.77]],["name/5511",[145,59.434]],["parent/5511",[495,3.77]],["name/5512",[146,59.434]],["parent/5512",[495,3.77]],["name/5513",[147,59.434]],["parent/5513",[495,3.77]],["name/5514",[148,59.434]],["parent/5514",[495,3.77]],["name/5515",[149,59.99]],["parent/5515",[495,3.77]],["name/5516",[150,59.99]],["parent/5516",[495,3.77]],["name/5517",[152,59.99]],["parent/5517",[495,3.77]],["name/5518",[153,59.99]],["parent/5518",[495,3.77]],["name/5519",[154,59.99]],["parent/5519",[495,3.77]],["name/5520",[155,59.99]],["parent/5520",[495,3.77]],["name/5521",[156,59.99]],["parent/5521",[495,3.77]],["name/5522",[157,57.932]],["parent/5522",[495,3.77]],["name/5523",[158,59.99]],["parent/5523",[495,3.77]],["name/5524",[160,59.99]],["parent/5524",[495,3.77]],["name/5525",[161,59.99]],["parent/5525",[495,3.77]],["name/5526",[162,59.99]],["parent/5526",[495,3.77]],["name/5527",[163,56.225]],["parent/5527",[495,3.77]],["name/5528",[164,59.434]],["parent/5528",[495,3.77]],["name/5529",[167,59.99]],["parent/5529",[495,3.77]],["name/5530",[168,59.99]],["parent/5530",[495,3.77]],["name/5531",[169,59.99]],["parent/5531",[495,3.77]],["name/5532",[170,59.99]],["parent/5532",[495,3.77]],["name/5533",[172,59.434]],["parent/5533",[495,3.77]],["name/5534",[173,59.434]],["parent/5534",[495,3.77]],["name/5535",[28,50.218]],["parent/5535",[495,3.77]],["name/5536",[24,49.196]],["parent/5536",[495,3.77]],["name/5537",[43,52.369]],["parent/5537",[495,3.77]],["name/5538",[44,52.369]],["parent/5538",[495,3.77]],["name/5539",[174,53.8]],["parent/5539",[495,3.77]],["name/5540",[175,58.908]],["parent/5540",[495,3.77]],["name/5541",[176,59.434]],["parent/5541",[495,3.77]],["name/5542",[177,59.434]],["parent/5542",[495,3.77]],["name/5543",[178,59.434]],["parent/5543",[495,3.77]],["name/5544",[179,59.434]],["parent/5544",[495,3.77]],["name/5545",[180,59.434]],["parent/5545",[495,3.77]],["name/5546",[181,59.434]],["parent/5546",[495,3.77]],["name/5547",[182,59.434]],["parent/5547",[495,3.77]],["name/5548",[183,59.434]],["parent/5548",[495,3.77]],["name/5549",[109,59.434]],["parent/5549",[495,3.77]],["name/5550",[184,57.932]],["parent/5550",[495,3.77]],["name/5551",[185,59.434]],["parent/5551",[495,3.77]],["name/5552",[186,59.434]],["parent/5552",[495,3.77]],["name/5553",[188,58.908]],["parent/5553",[495,3.77]],["name/5554",[189,59.434]],["parent/5554",[495,3.77]],["name/5555",[190,59.434]],["parent/5555",[495,3.77]],["name/5556",[191,59.434]],["parent/5556",[495,3.77]],["name/5557",[192,59.434]],["parent/5557",[495,3.77]],["name/5558",[193,59.434]],["parent/5558",[495,3.77]],["name/5559",[36,53.202]],["parent/5559",[495,3.77]],["name/5560",[34,53.202]],["parent/5560",[495,3.77]],["name/5561",[35,53.202]],["parent/5561",[495,3.77]],["name/5562",[46,46.792]],["parent/5562",[495,3.77]],["name/5563",[47,46.792]],["parent/5563",[495,3.77]],["name/5564",[48,46.792]],["parent/5564",[495,3.77]],["name/5565",[49,46.792]],["parent/5565",[495,3.77]],["name/5566",[50,46.792]],["parent/5566",[495,3.77]],["name/5567",[51,46.792]],["parent/5567",[495,3.77]],["name/5568",[52,46.792]],["parent/5568",[495,3.77]],["name/5569",[53,46.792]],["parent/5569",[495,3.77]],["name/5570",[54,46.792]],["parent/5570",[495,3.77]],["name/5571",[55,46.792]],["parent/5571",[495,3.77]],["name/5572",[56,46.792]],["parent/5572",[495,3.77]],["name/5573",[57,46.792]],["parent/5573",[495,3.77]],["name/5574",[58,46.792]],["parent/5574",[495,3.77]],["name/5575",[59,46.792]],["parent/5575",[495,3.77]],["name/5576",[60,46.792]],["parent/5576",[495,3.77]],["name/5577",[61,46.792]],["parent/5577",[495,3.77]],["name/5578",[62,46.792]],["parent/5578",[495,3.77]],["name/5579",[63,46.792]],["parent/5579",[495,3.77]],["name/5580",[64,46.792]],["parent/5580",[495,3.77]],["name/5581",[65,46.491]],["parent/5581",[495,3.77]],["name/5582",[66,46.491]],["parent/5582",[495,3.77]],["name/5583",[67,46.792]],["parent/5583",[495,3.77]],["name/5584",[68,40.948]],["parent/5584",[495,3.77]],["name/5585",[69,46.344]],["parent/5585",[495,3.77]],["name/5586",[70,46.344]],["parent/5586",[495,3.77]],["name/5587",[71,46.792]],["parent/5587",[495,3.77]],["name/5588",[72,46.056]],["parent/5588",[495,3.77]],["name/5589",[73,46.64]],["parent/5589",[495,3.77]],["name/5590",[74,46.792]],["parent/5590",[495,3.77]],["name/5591",[75,46.792]],["parent/5591",[495,3.77]],["name/5592",[76,46.792]],["parent/5592",[495,3.77]],["name/5593",[77,46.64]],["parent/5593",[495,3.77]],["name/5594",[78,46.199]],["parent/5594",[495,3.77]],["name/5595",[79,46.199]],["parent/5595",[495,3.77]],["name/5596",[534,48.448]],["parent/5596",[]],["name/5597",[10,39.376]],["parent/5597",[534,4.78]],["name/5598",[16,46.64]],["parent/5598",[534,4.78]],["name/5599",[1218,84.557]],["parent/5599",[534,4.78]],["name/5600",[1219,84.557]],["parent/5600",[534,4.78]],["name/5601",[1220,84.557]],["parent/5601",[534,4.78]],["name/5602",[1221,84.557]],["parent/5602",[534,4.78]],["name/5603",[1222,79.449]],["parent/5603",[534,4.78]],["name/5604",[1223,79.449]],["parent/5604",[534,4.78]],["name/5605",[17,43.782]],["parent/5605",[534,4.78]],["name/5606",[1141,76.084]],["parent/5606",[534,4.78]],["name/5607",[19,52.639]],["parent/5607",[534,4.78]],["name/5608",[1,49.392]],["parent/5608",[534,4.78]],["name/5609",[1133,76.084]],["parent/5609",[1224,6.755]],["name/5610",[1135,76.084]],["parent/5610",[1224,6.755]],["name/5611",[1136,76.084]],["parent/5611",[1224,6.755]],["name/5612",[1137,76.084]],["parent/5612",[1224,6.755]],["name/5613",[1138,76.084]],["parent/5613",[1224,6.755]],["name/5614",[1139,76.084]],["parent/5614",[1224,6.755]],["name/5615",[118,57.042]],["parent/5615",[1224,6.755]],["name/5616",[1140,73.571]],["parent/5616",[534,4.78]],["name/5617",[391,69.894]],["parent/5617",[534,4.78]],["name/5618",[392,73.571]],["parent/5618",[534,4.78]],["name/5619",[1142,76.084]],["parent/5619",[534,4.78]],["name/5620",[217,71.565]],["parent/5620",[534,4.78]],["name/5621",[27,44.364]],["parent/5621",[534,4.78]],["name/5622",[46,46.792]],["parent/5622",[534,4.78]],["name/5623",[47,46.792]],["parent/5623",[534,4.78]],["name/5624",[48,46.792]],["parent/5624",[534,4.78]],["name/5625",[49,46.792]],["parent/5625",[534,4.78]],["name/5626",[50,46.792]],["parent/5626",[534,4.78]],["name/5627",[51,46.792]],["parent/5627",[534,4.78]],["name/5628",[52,46.792]],["parent/5628",[534,4.78]],["name/5629",[53,46.792]],["parent/5629",[534,4.78]],["name/5630",[54,46.792]],["parent/5630",[534,4.78]],["name/5631",[55,46.792]],["parent/5631",[534,4.78]],["name/5632",[56,46.792]],["parent/5632",[534,4.78]],["name/5633",[57,46.792]],["parent/5633",[534,4.78]],["name/5634",[58,46.792]],["parent/5634",[534,4.78]],["name/5635",[59,46.792]],["parent/5635",[534,4.78]],["name/5636",[60,46.792]],["parent/5636",[534,4.78]],["name/5637",[61,46.792]],["parent/5637",[534,4.78]],["name/5638",[62,46.792]],["parent/5638",[534,4.78]],["name/5639",[63,46.792]],["parent/5639",[534,4.78]],["name/5640",[64,46.792]],["parent/5640",[534,4.78]],["name/5641",[65,46.491]],["parent/5641",[534,4.78]],["name/5642",[66,46.491]],["parent/5642",[534,4.78]],["name/5643",[67,46.792]],["parent/5643",[534,4.78]],["name/5644",[68,40.948]],["parent/5644",[534,4.78]],["name/5645",[69,46.344]],["parent/5645",[534,4.78]],["name/5646",[70,46.344]],["parent/5646",[534,4.78]],["name/5647",[71,46.792]],["parent/5647",[534,4.78]],["name/5648",[72,46.056]],["parent/5648",[534,4.78]],["name/5649",[73,46.64]],["parent/5649",[534,4.78]],["name/5650",[74,46.792]],["parent/5650",[534,4.78]],["name/5651",[75,46.792]],["parent/5651",[534,4.78]],["name/5652",[76,46.792]],["parent/5652",[534,4.78]],["name/5653",[77,46.64]],["parent/5653",[534,4.78]],["name/5654",[78,46.199]],["parent/5654",[534,4.78]],["name/5655",[79,46.199]],["parent/5655",[534,4.78]],["name/5656",[487,41.653]],["parent/5656",[]],["name/5657",[10,39.376]],["parent/5657",[487,4.11]],["name/5658",[16,46.64]],["parent/5658",[487,4.11]],["name/5659",[992,79.449]],["parent/5659",[487,4.11]],["name/5660",[993,79.449]],["parent/5660",[487,4.11]],["name/5661",[994,79.449]],["parent/5661",[487,4.11]],["name/5662",[17,43.782]],["parent/5662",[487,4.11]],["name/5663",[1022,79.449]],["parent/5663",[487,4.11]],["name/5664",[1225,84.557]],["parent/5664",[487,4.11]],["name/5665",[434,69.894]],["parent/5665",[487,4.11]],["name/5666",[995,79.449]],["parent/5666",[487,4.11]],["name/5667",[996,79.449]],["parent/5667",[487,4.11]],["name/5668",[478,73.571]],["parent/5668",[487,4.11]],["name/5669",[997,79.449]],["parent/5669",[487,4.11]],["name/5670",[998,79.449]],["parent/5670",[487,4.11]],["name/5671",[999,79.449]],["parent/5671",[487,4.11]],["name/5672",[1000,79.449]],["parent/5672",[487,4.11]],["name/5673",[1001,79.449]],["parent/5673",[487,4.11]],["name/5674",[1002,79.449]],["parent/5674",[487,4.11]],["name/5675",[174,53.8]],["parent/5675",[487,4.11]],["name/5676",[1003,79.449]],["parent/5676",[487,4.11]],["name/5677",[1004,79.449]],["parent/5677",[487,4.11]],["name/5678",[254,73.571]],["parent/5678",[487,4.11]],["name/5679",[250,73.571]],["parent/5679",[487,4.11]],["name/5680",[1005,79.449]],["parent/5680",[487,4.11]],["name/5681",[1006,79.449]],["parent/5681",[487,4.11]],["name/5682",[253,61.204]],["parent/5682",[487,4.11]],["name/5683",[28,50.218]],["parent/5683",[487,4.11]],["name/5684",[24,49.196]],["parent/5684",[487,4.11]],["name/5685",[50,46.792]],["parent/5685",[487,4.11]],["name/5686",[1007,79.449]],["parent/5686",[487,4.11]],["name/5687",[1008,79.449]],["parent/5687",[487,4.11]],["name/5688",[1009,79.449]],["parent/5688",[487,4.11]],["name/5689",[1010,79.449]],["parent/5689",[487,4.11]],["name/5690",[1011,79.449]],["parent/5690",[487,4.11]],["name/5691",[1012,79.449]],["parent/5691",[487,4.11]],["name/5692",[1013,76.084]],["parent/5692",[487,4.11]],["name/5693",[1014,71.565]],["parent/5693",[487,4.11]],["name/5694",[1015,76.084]],["parent/5694",[487,4.11]],["name/5695",[1016,79.449]],["parent/5695",[487,4.11]],["name/5696",[64,46.792]],["parent/5696",[487,4.11]],["name/5697",[1017,79.449]],["parent/5697",[487,4.11]],["name/5698",[1018,79.449]],["parent/5698",[487,4.11]],["name/5699",[1019,79.449]],["parent/5699",[487,4.11]],["name/5700",[1020,79.449]],["parent/5700",[487,4.11]],["name/5701",[144,58.908]],["parent/5701",[487,4.11]],["name/5702",[691,67.211]],["parent/5702",[487,4.11]],["name/5703",[1021,79.449]],["parent/5703",[487,4.11]],["name/5704",[157,57.932]],["parent/5704",[487,4.11]],["name/5705",[1023,79.449]],["parent/5705",[487,4.11]],["name/5706",[1024,79.449]],["parent/5706",[487,4.11]],["name/5707",[1025,79.449]],["parent/5707",[487,4.11]],["name/5708",[1026,79.449]],["parent/5708",[487,4.11]],["name/5709",[371,76.084]],["parent/5709",[487,4.11]],["name/5710",[1027,79.449]],["parent/5710",[487,4.11]],["name/5711",[1028,79.449]],["parent/5711",[487,4.11]],["name/5712",[1029,79.449]],["parent/5712",[487,4.11]],["name/5713",[1030,79.449]],["parent/5713",[487,4.11]],["name/5714",[1031,79.449]],["parent/5714",[487,4.11]],["name/5715",[1032,79.449]],["parent/5715",[487,4.11]],["name/5716",[1033,79.449]],["parent/5716",[487,4.11]],["name/5717",[1034,79.449]],["parent/5717",[487,4.11]],["name/5718",[1035,79.449]],["parent/5718",[487,4.11]],["name/5719",[1036,79.449]],["parent/5719",[487,4.11]],["name/5720",[1037,79.449]],["parent/5720",[487,4.11]],["name/5721",[1038,79.449]],["parent/5721",[487,4.11]],["name/5722",[184,57.932]],["parent/5722",[487,4.11]],["name/5723",[1039,79.449]],["parent/5723",[487,4.11]],["name/5724",[11,57.932]],["parent/5724",[487,4.11]],["name/5725",[27,44.364]],["parent/5725",[487,4.11]],["name/5726",[1040,79.449]],["parent/5726",[487,4.11]],["name/5727",[1041,79.449]],["parent/5727",[487,4.11]],["name/5728",[1042,79.449]],["parent/5728",[487,4.11]],["name/5729",[1043,79.449]],["parent/5729",[487,4.11]],["name/5730",[46,46.792]],["parent/5730",[487,4.11]],["name/5731",[47,46.792]],["parent/5731",[487,4.11]],["name/5732",[48,46.792]],["parent/5732",[487,4.11]],["name/5733",[49,46.792]],["parent/5733",[487,4.11]],["name/5734",[51,46.792]],["parent/5734",[487,4.11]],["name/5735",[52,46.792]],["parent/5735",[487,4.11]],["name/5736",[53,46.792]],["parent/5736",[487,4.11]],["name/5737",[54,46.792]],["parent/5737",[487,4.11]],["name/5738",[55,46.792]],["parent/5738",[487,4.11]],["name/5739",[56,46.792]],["parent/5739",[487,4.11]],["name/5740",[57,46.792]],["parent/5740",[487,4.11]],["name/5741",[58,46.792]],["parent/5741",[487,4.11]],["name/5742",[59,46.792]],["parent/5742",[487,4.11]],["name/5743",[60,46.792]],["parent/5743",[487,4.11]],["name/5744",[61,46.792]],["parent/5744",[487,4.11]],["name/5745",[62,46.792]],["parent/5745",[487,4.11]],["name/5746",[63,46.792]],["parent/5746",[487,4.11]],["name/5747",[65,46.491]],["parent/5747",[487,4.11]],["name/5748",[66,46.491]],["parent/5748",[487,4.11]],["name/5749",[67,46.792]],["parent/5749",[487,4.11]],["name/5750",[68,40.948]],["parent/5750",[487,4.11]],["name/5751",[69,46.344]],["parent/5751",[487,4.11]],["name/5752",[70,46.344]],["parent/5752",[487,4.11]],["name/5753",[71,46.792]],["parent/5753",[487,4.11]],["name/5754",[72,46.056]],["parent/5754",[487,4.11]],["name/5755",[73,46.64]],["parent/5755",[487,4.11]],["name/5756",[74,46.792]],["parent/5756",[487,4.11]],["name/5757",[75,46.792]],["parent/5757",[487,4.11]],["name/5758",[76,46.792]],["parent/5758",[487,4.11]],["name/5759",[77,46.64]],["parent/5759",[487,4.11]],["name/5760",[78,46.199]],["parent/5760",[487,4.11]],["name/5761",[79,46.199]],["parent/5761",[487,4.11]],["name/5762",[535,49.196]],["parent/5762",[]],["name/5763",[10,39.376]],["parent/5763",[535,4.854]],["name/5764",[1222,79.449]],["parent/5764",[535,4.854]],["name/5765",[1223,79.449]],["parent/5765",[535,4.854]],["name/5766",[16,46.64]],["parent/5766",[535,4.854]],["name/5767",[17,43.782]],["parent/5767",[535,4.854]],["name/5768",[19,52.639]],["parent/5768",[535,4.854]],["name/5769",[1,49.392]],["parent/5769",[535,4.854]],["name/5770",[1133,76.084]],["parent/5770",[1226,6.755]],["name/5771",[1135,76.084]],["parent/5771",[1226,6.755]],["name/5772",[1136,76.084]],["parent/5772",[1226,6.755]],["name/5773",[1137,76.084]],["parent/5773",[1226,6.755]],["name/5774",[1138,76.084]],["parent/5774",[1226,6.755]],["name/5775",[1139,76.084]],["parent/5775",[1226,6.755]],["name/5776",[118,57.042]],["parent/5776",[1226,6.755]],["name/5777",[1140,73.571]],["parent/5777",[535,4.854]],["name/5778",[391,69.894]],["parent/5778",[535,4.854]],["name/5779",[392,73.571]],["parent/5779",[535,4.854]],["name/5780",[1141,76.084]],["parent/5780",[535,4.854]],["name/5781",[1142,76.084]],["parent/5781",[535,4.854]],["name/5782",[217,71.565]],["parent/5782",[535,4.854]],["name/5783",[27,44.364]],["parent/5783",[535,4.854]],["name/5784",[46,46.792]],["parent/5784",[535,4.854]],["name/5785",[47,46.792]],["parent/5785",[535,4.854]],["name/5786",[48,46.792]],["parent/5786",[535,4.854]],["name/5787",[49,46.792]],["parent/5787",[535,4.854]],["name/5788",[50,46.792]],["parent/5788",[535,4.854]],["name/5789",[51,46.792]],["parent/5789",[535,4.854]],["name/5790",[52,46.792]],["parent/5790",[535,4.854]],["name/5791",[53,46.792]],["parent/5791",[535,4.854]],["name/5792",[54,46.792]],["parent/5792",[535,4.854]],["name/5793",[55,46.792]],["parent/5793",[535,4.854]],["name/5794",[56,46.792]],["parent/5794",[535,4.854]],["name/5795",[57,46.792]],["parent/5795",[535,4.854]],["name/5796",[58,46.792]],["parent/5796",[535,4.854]],["name/5797",[59,46.792]],["parent/5797",[535,4.854]],["name/5798",[60,46.792]],["parent/5798",[535,4.854]],["name/5799",[61,46.792]],["parent/5799",[535,4.854]],["name/5800",[62,46.792]],["parent/5800",[535,4.854]],["name/5801",[63,46.792]],["parent/5801",[535,4.854]],["name/5802",[64,46.792]],["parent/5802",[535,4.854]],["name/5803",[65,46.491]],["parent/5803",[535,4.854]],["name/5804",[66,46.491]],["parent/5804",[535,4.854]],["name/5805",[67,46.792]],["parent/5805",[535,4.854]],["name/5806",[68,40.948]],["parent/5806",[535,4.854]],["name/5807",[69,46.344]],["parent/5807",[535,4.854]],["name/5808",[70,46.344]],["parent/5808",[535,4.854]],["name/5809",[71,46.792]],["parent/5809",[535,4.854]],["name/5810",[72,46.056]],["parent/5810",[535,4.854]],["name/5811",[73,46.64]],["parent/5811",[535,4.854]],["name/5812",[74,46.792]],["parent/5812",[535,4.854]],["name/5813",[75,46.792]],["parent/5813",[535,4.854]],["name/5814",[76,46.792]],["parent/5814",[535,4.854]],["name/5815",[77,46.64]],["parent/5815",[535,4.854]],["name/5816",[78,46.199]],["parent/5816",[535,4.854]],["name/5817",[79,46.199]],["parent/5817",[535,4.854]],["name/5818",[1227,69.894]],["parent/5818",[]],["name/5819",[1228,79.449]],["parent/5819",[1227,6.896]],["name/5820",[1229,79.449]],["parent/5820",[1227,6.896]],["name/5821",[231,68.463]],["parent/5821",[1227,6.896]],["name/5822",[319,76.084]],["parent/5822",[1227,6.896]],["name/5823",[14,53.8]],["parent/5823",[1227,6.896]],["name/5824",[548,73.571]],["parent/5824",[]],["name/5825",[86,71.565]],["parent/5825",[548,7.259]],["name/5826",[87,71.565]],["parent/5826",[548,7.259]],["name/5827",[510,48.63]],["parent/5827",[]],["name/5828",[9,57.042]],["parent/5828",[510,4.798]],["name/5829",[10,39.376]],["parent/5829",[510,4.798]],["name/5830",[16,46.64]],["parent/5830",[510,4.798]],["name/5831",[14,53.8]],["parent/5831",[510,4.798]],["name/5832",[15,59.434]],["parent/5832",[510,4.798]],["name/5833",[1216,79.449]],["parent/5833",[510,4.798]],["name/5834",[1230,84.557]],["parent/5834",[510,4.798]],["name/5835",[17,43.782]],["parent/5835",[510,4.798]],["name/5836",[19,52.639]],["parent/5836",[510,4.798]],["name/5837",[1,49.392]],["parent/5837",[510,4.798]],["name/5838",[1231,84.557]],["parent/5838",[1232,6.755]],["name/5839",[945,76.084]],["parent/5839",[1232,6.755]],["name/5840",[236,76.084]],["parent/5840",[1232,6.755]],["name/5841",[1233,84.557]],["parent/5841",[1232,6.755]],["name/5842",[1234,84.557]],["parent/5842",[1232,6.755]],["name/5843",[1235,84.557]],["parent/5843",[1232,6.755]],["name/5844",[946,79.449]],["parent/5844",[1232,6.755]],["name/5845",[14,53.8]],["parent/5845",[510,4.798]],["name/5846",[1228,79.449]],["parent/5846",[510,4.798]],["name/5847",[1229,79.449]],["parent/5847",[510,4.798]],["name/5848",[51,46.792]],["parent/5848",[510,4.798]],["name/5849",[1170,79.449]],["parent/5849",[510,4.798]],["name/5850",[378,68.463]],["parent/5850",[510,4.798]],["name/5851",[27,44.364]],["parent/5851",[510,4.798]],["name/5852",[46,46.792]],["parent/5852",[510,4.798]],["name/5853",[47,46.792]],["parent/5853",[510,4.798]],["name/5854",[48,46.792]],["parent/5854",[510,4.798]],["name/5855",[49,46.792]],["parent/5855",[510,4.798]],["name/5856",[50,46.792]],["parent/5856",[510,4.798]],["name/5857",[52,46.792]],["parent/5857",[510,4.798]],["name/5858",[53,46.792]],["parent/5858",[510,4.798]],["name/5859",[54,46.792]],["parent/5859",[510,4.798]],["name/5860",[55,46.792]],["parent/5860",[510,4.798]],["name/5861",[56,46.792]],["parent/5861",[510,4.798]],["name/5862",[57,46.792]],["parent/5862",[510,4.798]],["name/5863",[58,46.792]],["parent/5863",[510,4.798]],["name/5864",[59,46.792]],["parent/5864",[510,4.798]],["name/5865",[60,46.792]],["parent/5865",[510,4.798]],["name/5866",[61,46.792]],["parent/5866",[510,4.798]],["name/5867",[62,46.792]],["parent/5867",[510,4.798]],["name/5868",[63,46.792]],["parent/5868",[510,4.798]],["name/5869",[64,46.792]],["parent/5869",[510,4.798]],["name/5870",[65,46.491]],["parent/5870",[510,4.798]],["name/5871",[66,46.491]],["parent/5871",[510,4.798]],["name/5872",[67,46.792]],["parent/5872",[510,4.798]],["name/5873",[68,40.948]],["parent/5873",[510,4.798]],["name/5874",[69,46.344]],["parent/5874",[510,4.798]],["name/5875",[70,46.344]],["parent/5875",[510,4.798]],["name/5876",[71,46.792]],["parent/5876",[510,4.798]],["name/5877",[72,46.056]],["parent/5877",[510,4.798]],["name/5878",[73,46.64]],["parent/5878",[510,4.798]],["name/5879",[74,46.792]],["parent/5879",[510,4.798]],["name/5880",[75,46.792]],["parent/5880",[510,4.798]],["name/5881",[76,46.792]],["parent/5881",[510,4.798]],["name/5882",[77,46.64]],["parent/5882",[510,4.798]],["name/5883",[78,46.199]],["parent/5883",[510,4.798]],["name/5884",[79,46.199]],["parent/5884",[510,4.798]],["name/5885",[499,40.053]],["parent/5885",[]],["name/5886",[9,57.042]],["parent/5886",[499,3.952]],["name/5887",[10,39.376]],["parent/5887",[499,3.952]],["name/5888",[332,67.211]],["parent/5888",[499,3.952]],["name/5889",[106,59.99]],["parent/5889",[499,3.952]],["name/5890",[16,46.64]],["parent/5890",[499,3.952]],["name/5891",[17,43.782]],["parent/5891",[499,3.952]],["name/5892",[378,68.463]],["parent/5892",[499,3.952]],["name/5893",[110,56.225]],["parent/5893",[499,3.952]],["name/5894",[27,44.364]],["parent/5894",[499,3.952]],["name/5895",[111,43.126]],["parent/5895",[499,3.952]],["name/5896",[112,57.042]],["parent/5896",[499,3.952]],["name/5897",[113,54.768]],["parent/5897",[499,3.952]],["name/5898",[19,52.639]],["parent/5898",[499,3.952]],["name/5899",[1,49.392]],["parent/5899",[499,3.952]],["name/5900",[114,59.99]],["parent/5900",[1236,6.175]],["name/5901",[27,44.364]],["parent/5901",[1236,6.175]],["name/5902",[116,59.99]],["parent/5902",[1236,6.175]],["name/5903",[117,59.99]],["parent/5903",[1236,6.175]],["name/5904",[118,57.042]],["parent/5904",[1236,6.175]],["name/5905",[119,59.99]],["parent/5905",[1236,6.175]],["name/5906",[120,59.99]],["parent/5906",[1236,6.175]],["name/5907",[121,57.477]],["parent/5907",[1236,6.175]],["name/5908",[122,59.99]],["parent/5908",[1236,6.175]],["name/5909",[123,59.99]],["parent/5909",[1236,6.175]],["name/5910",[124,56.625]],["parent/5910",[1236,6.175]],["name/5911",[68,40.948]],["parent/5911",[1236,6.175]],["name/5912",[125,58.408]],["parent/5912",[1236,6.175]],["name/5913",[126,59.99]],["parent/5913",[499,3.952]],["name/5914",[127,59.99]],["parent/5914",[499,3.952]],["name/5915",[128,59.434]],["parent/5915",[499,3.952]],["name/5916",[129,59.99]],["parent/5916",[499,3.952]],["name/5917",[130,54.112]],["parent/5917",[499,3.952]],["name/5918",[131,54.112]],["parent/5918",[499,3.952]],["name/5919",[132,53.8]],["parent/5919",[499,3.952]],["name/5920",[133,59.99]],["parent/5920",[499,3.952]],["name/5921",[134,59.99]],["parent/5921",[499,3.952]],["name/5922",[135,59.99]],["parent/5922",[499,3.952]],["name/5923",[136,59.99]],["parent/5923",[499,3.952]],["name/5924",[137,59.434]],["parent/5924",[499,3.952]],["name/5925",[138,59.99]],["parent/5925",[499,3.952]],["name/5926",[139,59.99]],["parent/5926",[499,3.952]],["name/5927",[140,59.99]],["parent/5927",[499,3.952]],["name/5928",[141,59.99]],["parent/5928",[499,3.952]],["name/5929",[142,59.99]],["parent/5929",[499,3.952]],["name/5930",[143,59.99]],["parent/5930",[499,3.952]],["name/5931",[144,58.908]],["parent/5931",[499,3.952]],["name/5932",[145,59.434]],["parent/5932",[499,3.952]],["name/5933",[146,59.434]],["parent/5933",[499,3.952]],["name/5934",[147,59.434]],["parent/5934",[499,3.952]],["name/5935",[148,59.434]],["parent/5935",[499,3.952]],["name/5936",[149,59.99]],["parent/5936",[499,3.952]],["name/5937",[150,59.99]],["parent/5937",[499,3.952]],["name/5938",[151,59.99]],["parent/5938",[499,3.952]],["name/5939",[152,59.99]],["parent/5939",[499,3.952]],["name/5940",[153,59.99]],["parent/5940",[499,3.952]],["name/5941",[154,59.99]],["parent/5941",[499,3.952]],["name/5942",[155,59.99]],["parent/5942",[499,3.952]],["name/5943",[156,59.99]],["parent/5943",[499,3.952]],["name/5944",[157,57.932]],["parent/5944",[499,3.952]],["name/5945",[158,59.99]],["parent/5945",[499,3.952]],["name/5946",[159,59.99]],["parent/5946",[499,3.952]],["name/5947",[160,59.99]],["parent/5947",[499,3.952]],["name/5948",[161,59.99]],["parent/5948",[499,3.952]],["name/5949",[162,59.99]],["parent/5949",[499,3.952]],["name/5950",[163,56.225]],["parent/5950",[499,3.952]],["name/5951",[164,59.434]],["parent/5951",[499,3.952]],["name/5952",[165,59.434]],["parent/5952",[499,3.952]],["name/5953",[166,59.99]],["parent/5953",[499,3.952]],["name/5954",[167,59.99]],["parent/5954",[499,3.952]],["name/5955",[168,59.99]],["parent/5955",[499,3.952]],["name/5956",[169,59.99]],["parent/5956",[499,3.952]],["name/5957",[170,59.99]],["parent/5957",[499,3.952]],["name/5958",[171,57.042]],["parent/5958",[499,3.952]],["name/5959",[172,59.434]],["parent/5959",[499,3.952]],["name/5960",[173,59.434]],["parent/5960",[499,3.952]],["name/5961",[28,50.218]],["parent/5961",[499,3.952]],["name/5962",[24,49.196]],["parent/5962",[499,3.952]],["name/5963",[43,52.369]],["parent/5963",[499,3.952]],["name/5964",[44,52.369]],["parent/5964",[499,3.952]],["name/5965",[174,53.8]],["parent/5965",[499,3.952]],["name/5966",[175,58.908]],["parent/5966",[499,3.952]],["name/5967",[176,59.434]],["parent/5967",[499,3.952]],["name/5968",[177,59.434]],["parent/5968",[499,3.952]],["name/5969",[178,59.434]],["parent/5969",[499,3.952]],["name/5970",[179,59.434]],["parent/5970",[499,3.952]],["name/5971",[180,59.434]],["parent/5971",[499,3.952]],["name/5972",[181,59.434]],["parent/5972",[499,3.952]],["name/5973",[182,59.434]],["parent/5973",[499,3.952]],["name/5974",[183,59.434]],["parent/5974",[499,3.952]],["name/5975",[109,59.434]],["parent/5975",[499,3.952]],["name/5976",[184,57.932]],["parent/5976",[499,3.952]],["name/5977",[185,59.434]],["parent/5977",[499,3.952]],["name/5978",[186,59.434]],["parent/5978",[499,3.952]],["name/5979",[187,56.625]],["parent/5979",[499,3.952]],["name/5980",[188,58.908]],["parent/5980",[499,3.952]],["name/5981",[189,59.434]],["parent/5981",[499,3.952]],["name/5982",[190,59.434]],["parent/5982",[499,3.952]],["name/5983",[191,59.434]],["parent/5983",[499,3.952]],["name/5984",[192,59.434]],["parent/5984",[499,3.952]],["name/5985",[193,59.434]],["parent/5985",[499,3.952]],["name/5986",[36,53.202]],["parent/5986",[499,3.952]],["name/5987",[34,53.202]],["parent/5987",[499,3.952]],["name/5988",[35,53.202]],["parent/5988",[499,3.952]],["name/5989",[46,46.792]],["parent/5989",[499,3.952]],["name/5990",[47,46.792]],["parent/5990",[499,3.952]],["name/5991",[48,46.792]],["parent/5991",[499,3.952]],["name/5992",[49,46.792]],["parent/5992",[499,3.952]],["name/5993",[50,46.792]],["parent/5993",[499,3.952]],["name/5994",[51,46.792]],["parent/5994",[499,3.952]],["name/5995",[52,46.792]],["parent/5995",[499,3.952]],["name/5996",[53,46.792]],["parent/5996",[499,3.952]],["name/5997",[54,46.792]],["parent/5997",[499,3.952]],["name/5998",[55,46.792]],["parent/5998",[499,3.952]],["name/5999",[56,46.792]],["parent/5999",[499,3.952]],["name/6000",[57,46.792]],["parent/6000",[499,3.952]],["name/6001",[58,46.792]],["parent/6001",[499,3.952]],["name/6002",[59,46.792]],["parent/6002",[499,3.952]],["name/6003",[60,46.792]],["parent/6003",[499,3.952]],["name/6004",[61,46.792]],["parent/6004",[499,3.952]],["name/6005",[62,46.792]],["parent/6005",[499,3.952]],["name/6006",[63,46.792]],["parent/6006",[499,3.952]],["name/6007",[64,46.792]],["parent/6007",[499,3.952]],["name/6008",[65,46.491]],["parent/6008",[499,3.952]],["name/6009",[66,46.491]],["parent/6009",[499,3.952]],["name/6010",[67,46.792]],["parent/6010",[499,3.952]],["name/6011",[68,40.948]],["parent/6011",[499,3.952]],["name/6012",[69,46.344]],["parent/6012",[499,3.952]],["name/6013",[70,46.344]],["parent/6013",[499,3.952]],["name/6014",[71,46.792]],["parent/6014",[499,3.952]],["name/6015",[72,46.056]],["parent/6015",[499,3.952]],["name/6016",[73,46.64]],["parent/6016",[499,3.952]],["name/6017",[74,46.792]],["parent/6017",[499,3.952]],["name/6018",[75,46.792]],["parent/6018",[499,3.952]],["name/6019",[76,46.792]],["parent/6019",[499,3.952]],["name/6020",[77,46.64]],["parent/6020",[499,3.952]],["name/6021",[78,46.199]],["parent/6021",[499,3.952]],["name/6022",[79,46.199]],["parent/6022",[499,3.952]],["name/6023",[1237,63.355]],["parent/6023",[]],["name/6024",[572,79.449]],["parent/6024",[1237,6.251]],["name/6025",[558,73.571]],["parent/6025",[1237,6.251]],["name/6026",[332,67.211]],["parent/6026",[1237,6.251]],["name/6027",[1238,84.557]],["parent/6027",[1237,6.251]],["name/6028",[1239,84.557]],["parent/6028",[1237,6.251]],["name/6029",[598,79.449]],["parent/6029",[1237,6.251]],["name/6030",[597,79.449]],["parent/6030",[1237,6.251]],["name/6031",[1240,84.557]],["parent/6031",[1237,6.251]],["name/6032",[329,76.084]],["parent/6032",[1237,6.251]],["name/6033",[330,76.084]],["parent/6033",[1237,6.251]],["name/6034",[1241,84.557]],["parent/6034",[1237,6.251]],["name/6035",[536,59.99]],["parent/6035",[]],["name/6036",[9,57.042]],["parent/6036",[536,5.919]],["name/6037",[1242,84.557]],["parent/6037",[536,5.919]],["name/6038",[1191,79.449]],["parent/6038",[536,5.919]],["name/6039",[1243,79.449]],["parent/6039",[536,5.919]],["name/6040",[1244,84.557]],["parent/6040",[536,5.919]],["name/6041",[1245,84.557]],["parent/6041",[536,5.919]],["name/6042",[1246,84.557]],["parent/6042",[536,5.919]],["name/6043",[1247,84.557]],["parent/6043",[536,5.919]],["name/6044",[1248,84.557]],["parent/6044",[536,5.919]],["name/6045",[1249,84.557]],["parent/6045",[536,5.919]],["name/6046",[1250,84.557]],["parent/6046",[536,5.919]],["name/6047",[1251,84.557]],["parent/6047",[536,5.919]],["name/6048",[73,46.64]],["parent/6048",[536,5.919]],["name/6049",[77,46.64]],["parent/6049",[536,5.919]],["name/6050",[620,79.449]],["parent/6050",[536,5.919]],["name/6051",[549,69.894]],["parent/6051",[]],["name/6052",[81,69.894]],["parent/6052",[549,6.896]],["name/6053",[82,69.894]],["parent/6053",[549,6.896]],["name/6054",[83,69.894]],["parent/6054",[549,6.896]],["name/6055",[1252,61.204]],["parent/6055",[]],["name/6056",[231,68.463]],["parent/6056",[1252,6.039]],["name/6057",[111,43.126]],["parent/6057",[1252,6.039]],["name/6058",[1253,84.557]],["parent/6058",[1252,6.039]],["name/6059",[1254,84.557]],["parent/6059",[1252,6.039]],["name/6060",[68,40.948]],["parent/6060",[1252,6.039]],["name/6061",[318,79.449]],["parent/6061",[1252,6.039]],["name/6062",[319,76.084]],["parent/6062",[1252,6.039]],["name/6063",[112,57.042]],["parent/6063",[1252,6.039]],["name/6064",[410,63.355]],["parent/6064",[1252,6.039]],["name/6065",[0,58.908]],["parent/6065",[1252,6.039]],["name/6066",[409,64.189]],["parent/6066",[1252,6.039]],["name/6067",[18,57.477]],["parent/6067",[1252,6.039]],["name/6068",[747,69.894]],["parent/6068",[1252,6.039]],["name/6069",[748,69.894]],["parent/6069",[1252,6.039]],["name/6070",[492,39.822]],["parent/6070",[]],["name/6071",[10,39.376]],["parent/6071",[492,3.929]],["name/6072",[16,46.64]],["parent/6072",[492,3.929]],["name/6073",[1255,84.557]],["parent/6073",[492,3.929]],["name/6074",[332,67.211]],["parent/6074",[492,3.929]],["name/6075",[106,59.99]],["parent/6075",[492,3.929]],["name/6076",[17,43.782]],["parent/6076",[492,3.929]],["name/6077",[96,79.449]],["parent/6077",[492,3.929]],["name/6078",[378,68.463]],["parent/6078",[492,3.929]],["name/6079",[897,79.449]],["parent/6079",[492,3.929]],["name/6080",[242,79.449]],["parent/6080",[492,3.929]],["name/6081",[110,56.225]],["parent/6081",[492,3.929]],["name/6082",[27,44.364]],["parent/6082",[492,3.929]],["name/6083",[111,43.126]],["parent/6083",[492,3.929]],["name/6084",[112,57.042]],["parent/6084",[492,3.929]],["name/6085",[113,54.768]],["parent/6085",[492,3.929]],["name/6086",[19,52.639]],["parent/6086",[492,3.929]],["name/6087",[1,49.392]],["parent/6087",[492,3.929]],["name/6088",[114,59.99]],["parent/6088",[1256,6.175]],["name/6089",[27,44.364]],["parent/6089",[1256,6.175]],["name/6090",[116,59.99]],["parent/6090",[1256,6.175]],["name/6091",[117,59.99]],["parent/6091",[1256,6.175]],["name/6092",[118,57.042]],["parent/6092",[1256,6.175]],["name/6093",[119,59.99]],["parent/6093",[1256,6.175]],["name/6094",[120,59.99]],["parent/6094",[1256,6.175]],["name/6095",[121,57.477]],["parent/6095",[1256,6.175]],["name/6096",[122,59.99]],["parent/6096",[1256,6.175]],["name/6097",[123,59.99]],["parent/6097",[1256,6.175]],["name/6098",[124,56.625]],["parent/6098",[1256,6.175]],["name/6099",[68,40.948]],["parent/6099",[1256,6.175]],["name/6100",[125,58.408]],["parent/6100",[1256,6.175]],["name/6101",[126,59.99]],["parent/6101",[492,3.929]],["name/6102",[127,59.99]],["parent/6102",[492,3.929]],["name/6103",[128,59.434]],["parent/6103",[492,3.929]],["name/6104",[129,59.99]],["parent/6104",[492,3.929]],["name/6105",[130,54.112]],["parent/6105",[492,3.929]],["name/6106",[131,54.112]],["parent/6106",[492,3.929]],["name/6107",[132,53.8]],["parent/6107",[492,3.929]],["name/6108",[133,59.99]],["parent/6108",[492,3.929]],["name/6109",[134,59.99]],["parent/6109",[492,3.929]],["name/6110",[135,59.99]],["parent/6110",[492,3.929]],["name/6111",[136,59.99]],["parent/6111",[492,3.929]],["name/6112",[137,59.434]],["parent/6112",[492,3.929]],["name/6113",[138,59.99]],["parent/6113",[492,3.929]],["name/6114",[139,59.99]],["parent/6114",[492,3.929]],["name/6115",[140,59.99]],["parent/6115",[492,3.929]],["name/6116",[141,59.99]],["parent/6116",[492,3.929]],["name/6117",[142,59.99]],["parent/6117",[492,3.929]],["name/6118",[143,59.99]],["parent/6118",[492,3.929]],["name/6119",[144,58.908]],["parent/6119",[492,3.929]],["name/6120",[145,59.434]],["parent/6120",[492,3.929]],["name/6121",[146,59.434]],["parent/6121",[492,3.929]],["name/6122",[147,59.434]],["parent/6122",[492,3.929]],["name/6123",[148,59.434]],["parent/6123",[492,3.929]],["name/6124",[149,59.99]],["parent/6124",[492,3.929]],["name/6125",[150,59.99]],["parent/6125",[492,3.929]],["name/6126",[151,59.99]],["parent/6126",[492,3.929]],["name/6127",[152,59.99]],["parent/6127",[492,3.929]],["name/6128",[153,59.99]],["parent/6128",[492,3.929]],["name/6129",[154,59.99]],["parent/6129",[492,3.929]],["name/6130",[155,59.99]],["parent/6130",[492,3.929]],["name/6131",[156,59.99]],["parent/6131",[492,3.929]],["name/6132",[157,57.932]],["parent/6132",[492,3.929]],["name/6133",[158,59.99]],["parent/6133",[492,3.929]],["name/6134",[159,59.99]],["parent/6134",[492,3.929]],["name/6135",[160,59.99]],["parent/6135",[492,3.929]],["name/6136",[161,59.99]],["parent/6136",[492,3.929]],["name/6137",[162,59.99]],["parent/6137",[492,3.929]],["name/6138",[163,56.225]],["parent/6138",[492,3.929]],["name/6139",[164,59.434]],["parent/6139",[492,3.929]],["name/6140",[165,59.434]],["parent/6140",[492,3.929]],["name/6141",[166,59.99]],["parent/6141",[492,3.929]],["name/6142",[167,59.99]],["parent/6142",[492,3.929]],["name/6143",[168,59.99]],["parent/6143",[492,3.929]],["name/6144",[169,59.99]],["parent/6144",[492,3.929]],["name/6145",[170,59.99]],["parent/6145",[492,3.929]],["name/6146",[171,57.042]],["parent/6146",[492,3.929]],["name/6147",[172,59.434]],["parent/6147",[492,3.929]],["name/6148",[173,59.434]],["parent/6148",[492,3.929]],["name/6149",[28,50.218]],["parent/6149",[492,3.929]],["name/6150",[24,49.196]],["parent/6150",[492,3.929]],["name/6151",[43,52.369]],["parent/6151",[492,3.929]],["name/6152",[44,52.369]],["parent/6152",[492,3.929]],["name/6153",[174,53.8]],["parent/6153",[492,3.929]],["name/6154",[175,58.908]],["parent/6154",[492,3.929]],["name/6155",[176,59.434]],["parent/6155",[492,3.929]],["name/6156",[177,59.434]],["parent/6156",[492,3.929]],["name/6157",[178,59.434]],["parent/6157",[492,3.929]],["name/6158",[179,59.434]],["parent/6158",[492,3.929]],["name/6159",[180,59.434]],["parent/6159",[492,3.929]],["name/6160",[181,59.434]],["parent/6160",[492,3.929]],["name/6161",[182,59.434]],["parent/6161",[492,3.929]],["name/6162",[183,59.434]],["parent/6162",[492,3.929]],["name/6163",[109,59.434]],["parent/6163",[492,3.929]],["name/6164",[184,57.932]],["parent/6164",[492,3.929]],["name/6165",[185,59.434]],["parent/6165",[492,3.929]],["name/6166",[186,59.434]],["parent/6166",[492,3.929]],["name/6167",[187,56.625]],["parent/6167",[492,3.929]],["name/6168",[188,58.908]],["parent/6168",[492,3.929]],["name/6169",[189,59.434]],["parent/6169",[492,3.929]],["name/6170",[190,59.434]],["parent/6170",[492,3.929]],["name/6171",[191,59.434]],["parent/6171",[492,3.929]],["name/6172",[192,59.434]],["parent/6172",[492,3.929]],["name/6173",[193,59.434]],["parent/6173",[492,3.929]],["name/6174",[36,53.202]],["parent/6174",[492,3.929]],["name/6175",[34,53.202]],["parent/6175",[492,3.929]],["name/6176",[35,53.202]],["parent/6176",[492,3.929]],["name/6177",[46,46.792]],["parent/6177",[492,3.929]],["name/6178",[47,46.792]],["parent/6178",[492,3.929]],["name/6179",[48,46.792]],["parent/6179",[492,3.929]],["name/6180",[49,46.792]],["parent/6180",[492,3.929]],["name/6181",[50,46.792]],["parent/6181",[492,3.929]],["name/6182",[51,46.792]],["parent/6182",[492,3.929]],["name/6183",[52,46.792]],["parent/6183",[492,3.929]],["name/6184",[53,46.792]],["parent/6184",[492,3.929]],["name/6185",[54,46.792]],["parent/6185",[492,3.929]],["name/6186",[55,46.792]],["parent/6186",[492,3.929]],["name/6187",[56,46.792]],["parent/6187",[492,3.929]],["name/6188",[57,46.792]],["parent/6188",[492,3.929]],["name/6189",[58,46.792]],["parent/6189",[492,3.929]],["name/6190",[59,46.792]],["parent/6190",[492,3.929]],["name/6191",[60,46.792]],["parent/6191",[492,3.929]],["name/6192",[61,46.792]],["parent/6192",[492,3.929]],["name/6193",[62,46.792]],["parent/6193",[492,3.929]],["name/6194",[63,46.792]],["parent/6194",[492,3.929]],["name/6195",[64,46.792]],["parent/6195",[492,3.929]],["name/6196",[65,46.491]],["parent/6196",[492,3.929]],["name/6197",[66,46.491]],["parent/6197",[492,3.929]],["name/6198",[67,46.792]],["parent/6198",[492,3.929]],["name/6199",[68,40.948]],["parent/6199",[492,3.929]],["name/6200",[69,46.344]],["parent/6200",[492,3.929]],["name/6201",[70,46.344]],["parent/6201",[492,3.929]],["name/6202",[71,46.792]],["parent/6202",[492,3.929]],["name/6203",[72,46.056]],["parent/6203",[492,3.929]],["name/6204",[73,46.64]],["parent/6204",[492,3.929]],["name/6205",[74,46.792]],["parent/6205",[492,3.929]],["name/6206",[75,46.792]],["parent/6206",[492,3.929]],["name/6207",[76,46.792]],["parent/6207",[492,3.929]],["name/6208",[77,46.64]],["parent/6208",[492,3.929]],["name/6209",[78,46.199]],["parent/6209",[492,3.929]],["name/6210",[79,46.199]],["parent/6210",[492,3.929]],["name/6211",[1257,68.463]],["parent/6211",[]],["name/6212",[410,63.355]],["parent/6212",[1257,6.755]],["name/6213",[1258,84.557]],["parent/6213",[1257,6.755]],["name/6214",[1,49.392]],["parent/6214",[1257,6.755]],["name/6215",[81,69.894]],["parent/6215",[1259,7.061]],["name/6216",[83,69.894]],["parent/6216",[1259,7.061]],["name/6217",[1260,84.557]],["parent/6217",[1257,6.755]],["name/6218",[478,73.571]],["parent/6218",[1257,6.755]],["name/6219",[1,49.392]],["parent/6219",[1257,6.755]],["name/6220",[1261,84.557]],["parent/6220",[1259,7.061]],["name/6221",[1262,84.557]],["parent/6221",[1259,7.061]],["name/6222",[1263,84.557]],["parent/6222",[1259,7.061]],["name/6223",[1264,44.606]],["parent/6223",[]],["name/6224",[10,39.376]],["parent/6224",[1264,4.401]],["name/6225",[16,46.64]],["parent/6225",[1264,4.401]],["name/6226",[17,43.782]],["parent/6226",[1264,4.401]],["name/6227",[171,57.042]],["parent/6227",[1264,4.401]],["name/6228",[172,59.434]],["parent/6228",[1264,4.401]],["name/6229",[137,59.434]],["parent/6229",[1264,4.401]],["name/6230",[173,59.434]],["parent/6230",[1264,4.401]],["name/6231",[28,50.218]],["parent/6231",[1264,4.401]],["name/6232",[24,49.196]],["parent/6232",[1264,4.401]],["name/6233",[43,52.369]],["parent/6233",[1264,4.401]],["name/6234",[44,52.369]],["parent/6234",[1264,4.401]],["name/6235",[174,53.8]],["parent/6235",[1264,4.401]],["name/6236",[175,58.908]],["parent/6236",[1264,4.401]],["name/6237",[176,59.434]],["parent/6237",[1264,4.401]],["name/6238",[177,59.434]],["parent/6238",[1264,4.401]],["name/6239",[178,59.434]],["parent/6239",[1264,4.401]],["name/6240",[179,59.434]],["parent/6240",[1264,4.401]],["name/6241",[145,59.434]],["parent/6241",[1264,4.401]],["name/6242",[146,59.434]],["parent/6242",[1264,4.401]],["name/6243",[180,59.434]],["parent/6243",[1264,4.401]],["name/6244",[181,59.434]],["parent/6244",[1264,4.401]],["name/6245",[182,59.434]],["parent/6245",[1264,4.401]],["name/6246",[183,59.434]],["parent/6246",[1264,4.401]],["name/6247",[109,59.434]],["parent/6247",[1264,4.401]],["name/6248",[157,57.932]],["parent/6248",[1264,4.401]],["name/6249",[184,57.932]],["parent/6249",[1264,4.401]],["name/6250",[148,59.434]],["parent/6250",[1264,4.401]],["name/6251",[185,59.434]],["parent/6251",[1264,4.401]],["name/6252",[110,56.225]],["parent/6252",[1264,4.401]],["name/6253",[186,59.434]],["parent/6253",[1264,4.401]],["name/6254",[187,56.625]],["parent/6254",[1264,4.401]],["name/6255",[188,58.908]],["parent/6255",[1264,4.401]],["name/6256",[189,59.434]],["parent/6256",[1264,4.401]],["name/6257",[190,59.434]],["parent/6257",[1264,4.401]],["name/6258",[191,59.434]],["parent/6258",[1264,4.401]],["name/6259",[192,59.434]],["parent/6259",[1264,4.401]],["name/6260",[193,59.434]],["parent/6260",[1264,4.401]],["name/6261",[164,59.434]],["parent/6261",[1264,4.401]],["name/6262",[36,53.202]],["parent/6262",[1264,4.401]],["name/6263",[34,53.202]],["parent/6263",[1264,4.401]],["name/6264",[35,53.202]],["parent/6264",[1264,4.401]],["name/6265",[130,54.112]],["parent/6265",[1264,4.401]],["name/6266",[132,53.8]],["parent/6266",[1264,4.401]],["name/6267",[163,56.225]],["parent/6267",[1264,4.401]],["name/6268",[46,46.792]],["parent/6268",[1264,4.401]],["name/6269",[47,46.792]],["parent/6269",[1264,4.401]],["name/6270",[48,46.792]],["parent/6270",[1264,4.401]],["name/6271",[49,46.792]],["parent/6271",[1264,4.401]],["name/6272",[50,46.792]],["parent/6272",[1264,4.401]],["name/6273",[51,46.792]],["parent/6273",[1264,4.401]],["name/6274",[52,46.792]],["parent/6274",[1264,4.401]],["name/6275",[53,46.792]],["parent/6275",[1264,4.401]],["name/6276",[27,44.364]],["parent/6276",[1264,4.401]],["name/6277",[54,46.792]],["parent/6277",[1264,4.401]],["name/6278",[55,46.792]],["parent/6278",[1264,4.401]],["name/6279",[56,46.792]],["parent/6279",[1264,4.401]],["name/6280",[57,46.792]],["parent/6280",[1264,4.401]],["name/6281",[58,46.792]],["parent/6281",[1264,4.401]],["name/6282",[59,46.792]],["parent/6282",[1264,4.401]],["name/6283",[60,46.792]],["parent/6283",[1264,4.401]],["name/6284",[61,46.792]],["parent/6284",[1264,4.401]],["name/6285",[62,46.792]],["parent/6285",[1264,4.401]],["name/6286",[63,46.792]],["parent/6286",[1264,4.401]],["name/6287",[64,46.792]],["parent/6287",[1264,4.401]],["name/6288",[65,46.491]],["parent/6288",[1264,4.401]],["name/6289",[66,46.491]],["parent/6289",[1264,4.401]],["name/6290",[67,46.792]],["parent/6290",[1264,4.401]],["name/6291",[68,40.948]],["parent/6291",[1264,4.401]],["name/6292",[69,46.344]],["parent/6292",[1264,4.401]],["name/6293",[70,46.344]],["parent/6293",[1264,4.401]],["name/6294",[71,46.792]],["parent/6294",[1264,4.401]],["name/6295",[72,46.056]],["parent/6295",[1264,4.401]],["name/6296",[73,46.64]],["parent/6296",[1264,4.401]],["name/6297",[74,46.792]],["parent/6297",[1264,4.401]],["name/6298",[75,46.792]],["parent/6298",[1264,4.401]],["name/6299",[76,46.792]],["parent/6299",[1264,4.401]],["name/6300",[77,46.64]],["parent/6300",[1264,4.401]],["name/6301",[78,46.199]],["parent/6301",[1264,4.401]],["name/6302",[79,46.199]],["parent/6302",[1264,4.401]],["name/6303",[1265,64.189]],["parent/6303",[]],["name/6304",[1266,84.557]],["parent/6304",[1265,6.333]],["name/6305",[1267,84.557]],["parent/6305",[1265,6.333]],["name/6306",[7,60.578]],["parent/6306",[1265,6.333]],["name/6307",[878,79.449]],["parent/6307",[1265,6.333]],["name/6308",[879,79.449]],["parent/6308",[1265,6.333]],["name/6309",[880,79.449]],["parent/6309",[1265,6.333]],["name/6310",[881,79.449]],["parent/6310",[1265,6.333]],["name/6311",[882,79.449]],["parent/6311",[1265,6.333]],["name/6312",[883,79.449]],["parent/6312",[1265,6.333]],["name/6313",[884,79.449]],["parent/6313",[1265,6.333]],["name/6314",[1268,79.449]],["parent/6314",[]],["name/6315",[1269,84.557]],["parent/6315",[1268,7.839]],["name/6316",[502,54.435]],["parent/6316",[]],["name/6317",[1270,84.557]],["parent/6317",[502,5.371]],["name/6318",[17,43.782]],["parent/6318",[502,5.371]],["name/6319",[1271,84.557]],["parent/6319",[502,5.371]],["name/6320",[1272,84.557]],["parent/6320",[502,5.371]],["name/6321",[174,53.8]],["parent/6321",[502,5.371]],["name/6322",[253,61.204]],["parent/6322",[502,5.371]],["name/6323",[1273,84.557]],["parent/6323",[502,5.371]],["name/6324",[1274,84.557]],["parent/6324",[502,5.371]],["name/6325",[1275,84.557]],["parent/6325",[502,5.371]],["name/6326",[1276,84.557]],["parent/6326",[502,5.371]],["name/6327",[24,49.196]],["parent/6327",[502,5.371]],["name/6328",[367,64.189]],["parent/6328",[502,5.371]],["name/6329",[1277,84.557]],["parent/6329",[502,5.371]],["name/6330",[1278,84.557]],["parent/6330",[502,5.371]],["name/6331",[1279,84.557]],["parent/6331",[502,5.371]],["name/6332",[1280,84.557]],["parent/6332",[502,5.371]],["name/6333",[1281,79.449]],["parent/6333",[502,5.371]],["name/6334",[1282,84.557]],["parent/6334",[502,5.371]],["name/6335",[1283,84.557]],["parent/6335",[502,5.371]],["name/6336",[1284,84.557]],["parent/6336",[502,5.371]],["name/6337",[163,56.225]],["parent/6337",[502,5.371]],["name/6338",[1285,84.557]],["parent/6338",[502,5.371]],["name/6339",[1286,84.557]],["parent/6339",[502,5.371]],["name/6340",[1287,79.449]],["parent/6340",[502,5.371]],["name/6341",[110,56.225]],["parent/6341",[502,5.371]],["name/6342",[187,56.625]],["parent/6342",[502,5.371]],["name/6343",[175,58.908]],["parent/6343",[502,5.371]],["name/6344",[1288,45.239]],["parent/6344",[]],["name/6345",[10,39.376]],["parent/6345",[1288,4.464]],["name/6346",[717,79.449]],["parent/6346",[1288,4.464]],["name/6347",[718,79.449]],["parent/6347",[1288,4.464]],["name/6348",[719,79.449]],["parent/6348",[1288,4.464]],["name/6349",[720,79.449]],["parent/6349",[1288,4.464]],["name/6350",[721,79.449]],["parent/6350",[1288,4.464]],["name/6351",[722,79.449]],["parent/6351",[1288,4.464]],["name/6352",[723,79.449]],["parent/6352",[1288,4.464]],["name/6353",[724,79.449]],["parent/6353",[1288,4.464]],["name/6354",[24,49.196]],["parent/6354",[1288,4.464]],["name/6355",[16,46.64]],["parent/6355",[1288,4.464]],["name/6356",[17,43.782]],["parent/6356",[1288,4.464]],["name/6357",[537,46.792]],["parent/6357",[1288,4.464]],["name/6358",[1289,84.557]],["parent/6358",[1288,4.464]],["name/6359",[1290,84.557]],["parent/6359",[1288,4.464]],["name/6360",[7,60.578]],["parent/6360",[1288,4.464]],["name/6361",[1085,79.449]],["parent/6361",[1288,4.464]],["name/6362",[163,56.225]],["parent/6362",[1288,4.464]],["name/6363",[736,79.449]],["parent/6363",[1288,4.464]],["name/6364",[725,79.449]],["parent/6364",[1288,4.464]],["name/6365",[98,67.211]],["parent/6365",[1288,4.464]],["name/6366",[333,69.894]],["parent/6366",[1288,4.464]],["name/6367",[726,79.449]],["parent/6367",[1288,4.464]],["name/6368",[727,79.449]],["parent/6368",[1288,4.464]],["name/6369",[124,56.625]],["parent/6369",[1288,4.464]],["name/6370",[27,44.364]],["parent/6370",[1288,4.464]],["name/6371",[728,79.449]],["parent/6371",[1288,4.464]],["name/6372",[463,69.894]],["parent/6372",[1288,4.464]],["name/6373",[729,79.449]],["parent/6373",[1288,4.464]],["name/6374",[132,53.8]],["parent/6374",[1288,4.464]],["name/6375",[44,52.369]],["parent/6375",[1288,4.464]],["name/6376",[43,52.369]],["parent/6376",[1288,4.464]],["name/6377",[730,79.449]],["parent/6377",[1288,4.464]],["name/6378",[40,59.434]],["parent/6378",[1288,4.464]],["name/6379",[171,57.042]],["parent/6379",[1288,4.464]],["name/6380",[731,79.449]],["parent/6380",[1288,4.464]],["name/6381",[732,79.449]],["parent/6381",[1288,4.464]],["name/6382",[733,79.449]],["parent/6382",[1288,4.464]],["name/6383",[734,79.449]],["parent/6383",[1288,4.464]],["name/6384",[735,79.449]],["parent/6384",[1288,4.464]],["name/6385",[131,54.112]],["parent/6385",[1288,4.464]],["name/6386",[46,46.792]],["parent/6386",[1288,4.464]],["name/6387",[47,46.792]],["parent/6387",[1288,4.464]],["name/6388",[48,46.792]],["parent/6388",[1288,4.464]],["name/6389",[49,46.792]],["parent/6389",[1288,4.464]],["name/6390",[50,46.792]],["parent/6390",[1288,4.464]],["name/6391",[51,46.792]],["parent/6391",[1288,4.464]],["name/6392",[52,46.792]],["parent/6392",[1288,4.464]],["name/6393",[53,46.792]],["parent/6393",[1288,4.464]],["name/6394",[54,46.792]],["parent/6394",[1288,4.464]],["name/6395",[55,46.792]],["parent/6395",[1288,4.464]],["name/6396",[56,46.792]],["parent/6396",[1288,4.464]],["name/6397",[57,46.792]],["parent/6397",[1288,4.464]],["name/6398",[58,46.792]],["parent/6398",[1288,4.464]],["name/6399",[59,46.792]],["parent/6399",[1288,4.464]],["name/6400",[60,46.792]],["parent/6400",[1288,4.464]],["name/6401",[61,46.792]],["parent/6401",[1288,4.464]],["name/6402",[62,46.792]],["parent/6402",[1288,4.464]],["name/6403",[63,46.792]],["parent/6403",[1288,4.464]],["name/6404",[64,46.792]],["parent/6404",[1288,4.464]],["name/6405",[65,46.491]],["parent/6405",[1288,4.464]],["name/6406",[66,46.491]],["parent/6406",[1288,4.464]],["name/6407",[67,46.792]],["parent/6407",[1288,4.464]],["name/6408",[68,40.948]],["parent/6408",[1288,4.464]],["name/6409",[69,46.344]],["parent/6409",[1288,4.464]],["name/6410",[70,46.344]],["parent/6410",[1288,4.464]],["name/6411",[71,46.792]],["parent/6411",[1288,4.464]],["name/6412",[72,46.056]],["parent/6412",[1288,4.464]],["name/6413",[73,46.64]],["parent/6413",[1288,4.464]],["name/6414",[74,46.792]],["parent/6414",[1288,4.464]],["name/6415",[75,46.792]],["parent/6415",[1288,4.464]],["name/6416",[76,46.792]],["parent/6416",[1288,4.464]],["name/6417",[77,46.64]],["parent/6417",[1288,4.464]],["name/6418",[78,46.199]],["parent/6418",[1288,4.464]],["name/6419",[79,46.199]],["parent/6419",[1288,4.464]],["name/6420",[1291,73.571]],["parent/6420",[]],["name/6421",[111,43.126]],["parent/6421",[1291,7.259]],["name/6422",[0,58.908]],["parent/6422",[1291,7.259]],["name/6423",[1292,84.557]],["parent/6423",[1291,7.259]],["name/6424",[537,46.792]],["parent/6424",[]],["name/6425",[10,39.376]],["parent/6425",[537,4.617]],["name/6426",[332,67.211]],["parent/6426",[537,4.617]],["name/6427",[14,53.8]],["parent/6427",[537,4.617]],["name/6428",[16,46.64]],["parent/6428",[537,4.617]],["name/6429",[17,43.782]],["parent/6429",[537,4.617]],["name/6430",[360,76.084]],["parent/6430",[537,4.617]],["name/6431",[1293,84.557]],["parent/6431",[537,4.617]],["name/6432",[1294,84.557]],["parent/6432",[537,4.617]],["name/6433",[1295,84.557]],["parent/6433",[537,4.617]],["name/6434",[1296,84.557]],["parent/6434",[537,4.617]],["name/6435",[1243,79.449]],["parent/6435",[537,4.617]],["name/6436",[1297,84.557]],["parent/6436",[537,4.617]],["name/6437",[27,44.364]],["parent/6437",[537,4.617]],["name/6438",[37,55.841]],["parent/6438",[537,4.617]],["name/6439",[38,55.47]],["parent/6439",[537,4.617]],["name/6440",[130,54.112]],["parent/6440",[537,4.617]],["name/6441",[131,54.112]],["parent/6441",[537,4.617]],["name/6442",[132,53.8]],["parent/6442",[537,4.617]],["name/6443",[24,49.196]],["parent/6443",[537,4.617]],["name/6444",[28,50.218]],["parent/6444",[537,4.617]],["name/6445",[174,53.8]],["parent/6445",[537,4.617]],["name/6446",[253,61.204]],["parent/6446",[537,4.617]],["name/6447",[365,65.098]],["parent/6447",[537,4.617]],["name/6448",[366,65.098]],["parent/6448",[537,4.617]],["name/6449",[367,64.189]],["parent/6449",[537,4.617]],["name/6450",[368,65.098]],["parent/6450",[537,4.617]],["name/6451",[369,65.098]],["parent/6451",[537,4.617]],["name/6452",[46,46.792]],["parent/6452",[537,4.617]],["name/6453",[47,46.792]],["parent/6453",[537,4.617]],["name/6454",[48,46.792]],["parent/6454",[537,4.617]],["name/6455",[49,46.792]],["parent/6455",[537,4.617]],["name/6456",[50,46.792]],["parent/6456",[537,4.617]],["name/6457",[51,46.792]],["parent/6457",[537,4.617]],["name/6458",[52,46.792]],["parent/6458",[537,4.617]],["name/6459",[53,46.792]],["parent/6459",[537,4.617]],["name/6460",[54,46.792]],["parent/6460",[537,4.617]],["name/6461",[55,46.792]],["parent/6461",[537,4.617]],["name/6462",[56,46.792]],["parent/6462",[537,4.617]],["name/6463",[57,46.792]],["parent/6463",[537,4.617]],["name/6464",[58,46.792]],["parent/6464",[537,4.617]],["name/6465",[59,46.792]],["parent/6465",[537,4.617]],["name/6466",[60,46.792]],["parent/6466",[537,4.617]],["name/6467",[61,46.792]],["parent/6467",[537,4.617]],["name/6468",[62,46.792]],["parent/6468",[537,4.617]],["name/6469",[63,46.792]],["parent/6469",[537,4.617]],["name/6470",[64,46.792]],["parent/6470",[537,4.617]],["name/6471",[65,46.491]],["parent/6471",[537,4.617]],["name/6472",[66,46.491]],["parent/6472",[537,4.617]],["name/6473",[67,46.792]],["parent/6473",[537,4.617]],["name/6474",[68,40.948]],["parent/6474",[537,4.617]],["name/6475",[69,46.344]],["parent/6475",[537,4.617]],["name/6476",[70,46.344]],["parent/6476",[537,4.617]],["name/6477",[71,46.792]],["parent/6477",[537,4.617]],["name/6478",[72,46.056]],["parent/6478",[537,4.617]],["name/6479",[73,46.64]],["parent/6479",[537,4.617]],["name/6480",[74,46.792]],["parent/6480",[537,4.617]],["name/6481",[75,46.792]],["parent/6481",[537,4.617]],["name/6482",[76,46.792]],["parent/6482",[537,4.617]],["name/6483",[77,46.64]],["parent/6483",[537,4.617]],["name/6484",[78,46.199]],["parent/6484",[537,4.617]],["name/6485",[79,46.199]],["parent/6485",[537,4.617]],["name/6486",[493,40.289]],["parent/6486",[]],["name/6487",[10,39.376]],["parent/6487",[493,3.975]],["name/6488",[106,59.99]],["parent/6488",[493,3.975]],["name/6489",[16,46.64]],["parent/6489",[493,3.975]],["name/6490",[17,43.782]],["parent/6490",[493,3.975]],["name/6491",[109,59.434]],["parent/6491",[493,3.975]],["name/6492",[110,56.225]],["parent/6492",[493,3.975]],["name/6493",[27,44.364]],["parent/6493",[493,3.975]],["name/6494",[111,43.126]],["parent/6494",[493,3.975]],["name/6495",[112,57.042]],["parent/6495",[493,3.975]],["name/6496",[113,54.768]],["parent/6496",[493,3.975]],["name/6497",[19,52.639]],["parent/6497",[493,3.975]],["name/6498",[1,49.392]],["parent/6498",[493,3.975]],["name/6499",[114,59.99]],["parent/6499",[1298,6.175]],["name/6500",[27,44.364]],["parent/6500",[1298,6.175]],["name/6501",[116,59.99]],["parent/6501",[1298,6.175]],["name/6502",[117,59.99]],["parent/6502",[1298,6.175]],["name/6503",[118,57.042]],["parent/6503",[1298,6.175]],["name/6504",[119,59.99]],["parent/6504",[1298,6.175]],["name/6505",[120,59.99]],["parent/6505",[1298,6.175]],["name/6506",[121,57.477]],["parent/6506",[1298,6.175]],["name/6507",[122,59.99]],["parent/6507",[1298,6.175]],["name/6508",[123,59.99]],["parent/6508",[1298,6.175]],["name/6509",[124,56.625]],["parent/6509",[1298,6.175]],["name/6510",[68,40.948]],["parent/6510",[1298,6.175]],["name/6511",[125,58.408]],["parent/6511",[1298,6.175]],["name/6512",[126,59.99]],["parent/6512",[493,3.975]],["name/6513",[127,59.99]],["parent/6513",[493,3.975]],["name/6514",[128,59.434]],["parent/6514",[493,3.975]],["name/6515",[129,59.99]],["parent/6515",[493,3.975]],["name/6516",[130,54.112]],["parent/6516",[493,3.975]],["name/6517",[131,54.112]],["parent/6517",[493,3.975]],["name/6518",[132,53.8]],["parent/6518",[493,3.975]],["name/6519",[133,59.99]],["parent/6519",[493,3.975]],["name/6520",[134,59.99]],["parent/6520",[493,3.975]],["name/6521",[135,59.99]],["parent/6521",[493,3.975]],["name/6522",[136,59.99]],["parent/6522",[493,3.975]],["name/6523",[137,59.434]],["parent/6523",[493,3.975]],["name/6524",[138,59.99]],["parent/6524",[493,3.975]],["name/6525",[139,59.99]],["parent/6525",[493,3.975]],["name/6526",[140,59.99]],["parent/6526",[493,3.975]],["name/6527",[141,59.99]],["parent/6527",[493,3.975]],["name/6528",[142,59.99]],["parent/6528",[493,3.975]],["name/6529",[143,59.99]],["parent/6529",[493,3.975]],["name/6530",[144,58.908]],["parent/6530",[493,3.975]],["name/6531",[145,59.434]],["parent/6531",[493,3.975]],["name/6532",[146,59.434]],["parent/6532",[493,3.975]],["name/6533",[147,59.434]],["parent/6533",[493,3.975]],["name/6534",[148,59.434]],["parent/6534",[493,3.975]],["name/6535",[149,59.99]],["parent/6535",[493,3.975]],["name/6536",[150,59.99]],["parent/6536",[493,3.975]],["name/6537",[151,59.99]],["parent/6537",[493,3.975]],["name/6538",[152,59.99]],["parent/6538",[493,3.975]],["name/6539",[153,59.99]],["parent/6539",[493,3.975]],["name/6540",[154,59.99]],["parent/6540",[493,3.975]],["name/6541",[155,59.99]],["parent/6541",[493,3.975]],["name/6542",[156,59.99]],["parent/6542",[493,3.975]],["name/6543",[157,57.932]],["parent/6543",[493,3.975]],["name/6544",[158,59.99]],["parent/6544",[493,3.975]],["name/6545",[159,59.99]],["parent/6545",[493,3.975]],["name/6546",[160,59.99]],["parent/6546",[493,3.975]],["name/6547",[161,59.99]],["parent/6547",[493,3.975]],["name/6548",[162,59.99]],["parent/6548",[493,3.975]],["name/6549",[163,56.225]],["parent/6549",[493,3.975]],["name/6550",[164,59.434]],["parent/6550",[493,3.975]],["name/6551",[165,59.434]],["parent/6551",[493,3.975]],["name/6552",[166,59.99]],["parent/6552",[493,3.975]],["name/6553",[167,59.99]],["parent/6553",[493,3.975]],["name/6554",[168,59.99]],["parent/6554",[493,3.975]],["name/6555",[169,59.99]],["parent/6555",[493,3.975]],["name/6556",[170,59.99]],["parent/6556",[493,3.975]],["name/6557",[171,57.042]],["parent/6557",[493,3.975]],["name/6558",[172,59.434]],["parent/6558",[493,3.975]],["name/6559",[173,59.434]],["parent/6559",[493,3.975]],["name/6560",[28,50.218]],["parent/6560",[493,3.975]],["name/6561",[24,49.196]],["parent/6561",[493,3.975]],["name/6562",[43,52.369]],["parent/6562",[493,3.975]],["name/6563",[44,52.369]],["parent/6563",[493,3.975]],["name/6564",[174,53.8]],["parent/6564",[493,3.975]],["name/6565",[175,58.908]],["parent/6565",[493,3.975]],["name/6566",[176,59.434]],["parent/6566",[493,3.975]],["name/6567",[177,59.434]],["parent/6567",[493,3.975]],["name/6568",[178,59.434]],["parent/6568",[493,3.975]],["name/6569",[179,59.434]],["parent/6569",[493,3.975]],["name/6570",[180,59.434]],["parent/6570",[493,3.975]],["name/6571",[181,59.434]],["parent/6571",[493,3.975]],["name/6572",[182,59.434]],["parent/6572",[493,3.975]],["name/6573",[183,59.434]],["parent/6573",[493,3.975]],["name/6574",[184,57.932]],["parent/6574",[493,3.975]],["name/6575",[185,59.434]],["parent/6575",[493,3.975]],["name/6576",[186,59.434]],["parent/6576",[493,3.975]],["name/6577",[187,56.625]],["parent/6577",[493,3.975]],["name/6578",[188,58.908]],["parent/6578",[493,3.975]],["name/6579",[189,59.434]],["parent/6579",[493,3.975]],["name/6580",[190,59.434]],["parent/6580",[493,3.975]],["name/6581",[191,59.434]],["parent/6581",[493,3.975]],["name/6582",[192,59.434]],["parent/6582",[493,3.975]],["name/6583",[193,59.434]],["parent/6583",[493,3.975]],["name/6584",[36,53.202]],["parent/6584",[493,3.975]],["name/6585",[34,53.202]],["parent/6585",[493,3.975]],["name/6586",[35,53.202]],["parent/6586",[493,3.975]],["name/6587",[46,46.792]],["parent/6587",[493,3.975]],["name/6588",[47,46.792]],["parent/6588",[493,3.975]],["name/6589",[48,46.792]],["parent/6589",[493,3.975]],["name/6590",[49,46.792]],["parent/6590",[493,3.975]],["name/6591",[50,46.792]],["parent/6591",[493,3.975]],["name/6592",[51,46.792]],["parent/6592",[493,3.975]],["name/6593",[52,46.792]],["parent/6593",[493,3.975]],["name/6594",[53,46.792]],["parent/6594",[493,3.975]],["name/6595",[54,46.792]],["parent/6595",[493,3.975]],["name/6596",[55,46.792]],["parent/6596",[493,3.975]],["name/6597",[56,46.792]],["parent/6597",[493,3.975]],["name/6598",[57,46.792]],["parent/6598",[493,3.975]],["name/6599",[58,46.792]],["parent/6599",[493,3.975]],["name/6600",[59,46.792]],["parent/6600",[493,3.975]],["name/6601",[60,46.792]],["parent/6601",[493,3.975]],["name/6602",[61,46.792]],["parent/6602",[493,3.975]],["name/6603",[62,46.792]],["parent/6603",[493,3.975]],["name/6604",[63,46.792]],["parent/6604",[493,3.975]],["name/6605",[64,46.792]],["parent/6605",[493,3.975]],["name/6606",[65,46.491]],["parent/6606",[493,3.975]],["name/6607",[66,46.491]],["parent/6607",[493,3.975]],["name/6608",[67,46.792]],["parent/6608",[493,3.975]],["name/6609",[68,40.948]],["parent/6609",[493,3.975]],["name/6610",[69,46.344]],["parent/6610",[493,3.975]],["name/6611",[70,46.344]],["parent/6611",[493,3.975]],["name/6612",[71,46.792]],["parent/6612",[493,3.975]],["name/6613",[72,46.056]],["parent/6613",[493,3.975]],["name/6614",[73,46.64]],["parent/6614",[493,3.975]],["name/6615",[74,46.792]],["parent/6615",[493,3.975]],["name/6616",[75,46.792]],["parent/6616",[493,3.975]],["name/6617",[76,46.792]],["parent/6617",[493,3.975]],["name/6618",[77,46.64]],["parent/6618",[493,3.975]],["name/6619",[78,46.199]],["parent/6619",[493,3.975]],["name/6620",[79,46.199]],["parent/6620",[493,3.975]],["name/6621",[538,46.64]],["parent/6621",[]],["name/6622",[10,39.376]],["parent/6622",[538,4.602]],["name/6623",[14,53.8]],["parent/6623",[538,4.602]],["name/6624",[15,59.434]],["parent/6624",[538,4.602]],["name/6625",[16,46.64]],["parent/6625",[538,4.602]],["name/6626",[17,43.782]],["parent/6626",[538,4.602]],["name/6627",[1299,84.557]],["parent/6627",[538,4.602]],["name/6628",[1300,84.557]],["parent/6628",[538,4.602]],["name/6629",[27,44.364]],["parent/6629",[538,4.602]],["name/6630",[24,49.196]],["parent/6630",[538,4.602]],["name/6631",[28,50.218]],["parent/6631",[538,4.602]],["name/6632",[29,60.578]],["parent/6632",[538,4.602]],["name/6633",[30,60.578]],["parent/6633",[538,4.602]],["name/6634",[25,60.578]],["parent/6634",[538,4.602]],["name/6635",[31,60.578]],["parent/6635",[538,4.602]],["name/6636",[32,60.578]],["parent/6636",[538,4.602]],["name/6637",[33,60.578]],["parent/6637",[538,4.602]],["name/6638",[34,53.202]],["parent/6638",[538,4.602]],["name/6639",[35,53.202]],["parent/6639",[538,4.602]],["name/6640",[36,53.202]],["parent/6640",[538,4.602]],["name/6641",[37,55.841]],["parent/6641",[538,4.602]],["name/6642",[38,55.47]],["parent/6642",[538,4.602]],["name/6643",[39,60.578]],["parent/6643",[538,4.602]],["name/6644",[40,59.434]],["parent/6644",[538,4.602]],["name/6645",[41,60.578]],["parent/6645",[538,4.602]],["name/6646",[42,60.578]],["parent/6646",[538,4.602]],["name/6647",[43,52.369]],["parent/6647",[538,4.602]],["name/6648",[44,52.369]],["parent/6648",[538,4.602]],["name/6649",[45,60.578]],["parent/6649",[538,4.602]],["name/6650",[46,46.792]],["parent/6650",[538,4.602]],["name/6651",[47,46.792]],["parent/6651",[538,4.602]],["name/6652",[48,46.792]],["parent/6652",[538,4.602]],["name/6653",[49,46.792]],["parent/6653",[538,4.602]],["name/6654",[50,46.792]],["parent/6654",[538,4.602]],["name/6655",[51,46.792]],["parent/6655",[538,4.602]],["name/6656",[52,46.792]],["parent/6656",[538,4.602]],["name/6657",[53,46.792]],["parent/6657",[538,4.602]],["name/6658",[54,46.792]],["parent/6658",[538,4.602]],["name/6659",[55,46.792]],["parent/6659",[538,4.602]],["name/6660",[56,46.792]],["parent/6660",[538,4.602]],["name/6661",[57,46.792]],["parent/6661",[538,4.602]],["name/6662",[58,46.792]],["parent/6662",[538,4.602]],["name/6663",[59,46.792]],["parent/6663",[538,4.602]],["name/6664",[60,46.792]],["parent/6664",[538,4.602]],["name/6665",[61,46.792]],["parent/6665",[538,4.602]],["name/6666",[62,46.792]],["parent/6666",[538,4.602]],["name/6667",[63,46.792]],["parent/6667",[538,4.602]],["name/6668",[64,46.792]],["parent/6668",[538,4.602]],["name/6669",[65,46.491]],["parent/6669",[538,4.602]],["name/6670",[66,46.491]],["parent/6670",[538,4.602]],["name/6671",[67,46.792]],["parent/6671",[538,4.602]],["name/6672",[68,40.948]],["parent/6672",[538,4.602]],["name/6673",[69,46.344]],["parent/6673",[538,4.602]],["name/6674",[70,46.344]],["parent/6674",[538,4.602]],["name/6675",[71,46.792]],["parent/6675",[538,4.602]],["name/6676",[72,46.056]],["parent/6676",[538,4.602]],["name/6677",[73,46.64]],["parent/6677",[538,4.602]],["name/6678",[74,46.792]],["parent/6678",[538,4.602]],["name/6679",[75,46.792]],["parent/6679",[538,4.602]],["name/6680",[76,46.792]],["parent/6680",[538,4.602]],["name/6681",[77,46.64]],["parent/6681",[538,4.602]],["name/6682",[78,46.199]],["parent/6682",[538,4.602]],["name/6683",[79,46.199]],["parent/6683",[538,4.602]],["name/6684",[539,66.099]],["parent/6684",[]],["name/6685",[1301,84.557]],["parent/6685",[539,6.522]],["name/6686",[17,43.782]],["parent/6686",[539,6.522]],["name/6687",[1302,84.557]],["parent/6687",[539,6.522]],["name/6688",[1303,84.557]],["parent/6688",[539,6.522]],["name/6689",[1304,84.557]],["parent/6689",[539,6.522]],["name/6690",[1305,84.557]],["parent/6690",[539,6.522]],["name/6691",[1306,84.557]],["parent/6691",[539,6.522]],["name/6692",[1307,67.211]],["parent/6692",[]],["name/6693",[1308,84.557]],["parent/6693",[1307,6.632]],["name/6694",[1309,84.557]],["parent/6694",[1307,6.632]],["name/6695",[1310,84.557]],["parent/6695",[1307,6.632]],["name/6696",[1311,84.557]],["parent/6696",[1307,6.632]],["name/6697",[1312,84.557]],["parent/6697",[1307,6.632]],["name/6698",[1313,84.557]],["parent/6698",[1307,6.632]],["name/6699",[1314,84.557]],["parent/6699",[1307,6.632]],["name/6700",[1315,76.084]],["parent/6700",[]],["name/6701",[87,71.565]],["parent/6701",[1315,7.507]],["name/6702",[86,71.565]],["parent/6702",[1315,7.507]],["name/6703",[465,47.102]],["parent/6703",[]],["name/6704",[10,39.376]],["parent/6704",[465,4.648]],["name/6705",[1316,84.557]],["parent/6705",[465,4.648]],["name/6706",[1317,84.557]],["parent/6706",[465,4.648]],["name/6707",[1318,84.557]],["parent/6707",[465,4.648]],["name/6708",[333,69.894]],["parent/6708",[465,4.648]],["name/6709",[16,46.64]],["parent/6709",[465,4.648]],["name/6710",[17,43.782]],["parent/6710",[465,4.648]],["name/6711",[215,71.565]],["parent/6711",[465,4.648]],["name/6712",[1319,84.557]],["parent/6712",[465,4.648]],["name/6713",[1320,84.557]],["parent/6713",[465,4.648]],["name/6714",[1321,84.557]],["parent/6714",[465,4.648]],["name/6715",[1322,84.557]],["parent/6715",[465,4.648]],["name/6716",[1323,84.557]],["parent/6716",[465,4.648]],["name/6717",[217,71.565]],["parent/6717",[465,4.648]],["name/6718",[1324,84.557]],["parent/6718",[465,4.648]],["name/6719",[1325,84.557]],["parent/6719",[465,4.648]],["name/6720",[1326,84.557]],["parent/6720",[465,4.648]],["name/6721",[1327,84.557]],["parent/6721",[465,4.648]],["name/6722",[1328,84.557]],["parent/6722",[465,4.648]],["name/6723",[1329,84.557]],["parent/6723",[465,4.648]],["name/6724",[1330,84.557]],["parent/6724",[465,4.648]],["name/6725",[1331,84.557]],["parent/6725",[465,4.648]],["name/6726",[1332,84.557]],["parent/6726",[465,4.648]],["name/6727",[27,44.364]],["parent/6727",[465,4.648]],["name/6728",[46,46.792]],["parent/6728",[465,4.648]],["name/6729",[47,46.792]],["parent/6729",[465,4.648]],["name/6730",[48,46.792]],["parent/6730",[465,4.648]],["name/6731",[49,46.792]],["parent/6731",[465,4.648]],["name/6732",[50,46.792]],["parent/6732",[465,4.648]],["name/6733",[51,46.792]],["parent/6733",[465,4.648]],["name/6734",[52,46.792]],["parent/6734",[465,4.648]],["name/6735",[53,46.792]],["parent/6735",[465,4.648]],["name/6736",[54,46.792]],["parent/6736",[465,4.648]],["name/6737",[55,46.792]],["parent/6737",[465,4.648]],["name/6738",[56,46.792]],["parent/6738",[465,4.648]],["name/6739",[57,46.792]],["parent/6739",[465,4.648]],["name/6740",[58,46.792]],["parent/6740",[465,4.648]],["name/6741",[59,46.792]],["parent/6741",[465,4.648]],["name/6742",[60,46.792]],["parent/6742",[465,4.648]],["name/6743",[61,46.792]],["parent/6743",[465,4.648]],["name/6744",[62,46.792]],["parent/6744",[465,4.648]],["name/6745",[63,46.792]],["parent/6745",[465,4.648]],["name/6746",[64,46.792]],["parent/6746",[465,4.648]],["name/6747",[65,46.491]],["parent/6747",[465,4.648]],["name/6748",[66,46.491]],["parent/6748",[465,4.648]],["name/6749",[67,46.792]],["parent/6749",[465,4.648]],["name/6750",[68,40.948]],["parent/6750",[465,4.648]],["name/6751",[69,46.344]],["parent/6751",[465,4.648]],["name/6752",[70,46.344]],["parent/6752",[465,4.648]],["name/6753",[71,46.792]],["parent/6753",[465,4.648]],["name/6754",[72,46.056]],["parent/6754",[465,4.648]],["name/6755",[73,46.64]],["parent/6755",[465,4.648]],["name/6756",[74,46.792]],["parent/6756",[465,4.648]],["name/6757",[75,46.792]],["parent/6757",[465,4.648]],["name/6758",[76,46.792]],["parent/6758",[465,4.648]],["name/6759",[77,46.64]],["parent/6759",[465,4.648]],["name/6760",[78,46.199]],["parent/6760",[465,4.648]],["name/6761",[79,46.199]],["parent/6761",[465,4.648]],["name/6762",[1333,84.557]],["parent/6762",[]],["name/6763",[1334,84.557]],["parent/6763",[]],["name/6764",[1335,84.557]],["parent/6764",[]],["name/6765",[1336,84.557]],["parent/6765",[]],["name/6766",[1337,84.557]],["parent/6766",[]],["name/6767",[1338,84.557]],["parent/6767",[]],["name/6768",[1339,84.557]],["parent/6768",[]],["name/6769",[1340,84.557]],["parent/6769",[]],["name/6770",[1341,84.557]],["parent/6770",[]],["name/6771",[1342,84.557]],["parent/6771",[]],["name/6772",[1343,84.557]],["parent/6772",[]],["name/6773",[1344,84.557]],["parent/6773",[]],["name/6774",[10,39.376]],["parent/6774",[]],["name/6775",[8,44.981]],["parent/6775",[10,3.885]],["name/6776",[88,45.371]],["parent/6776",[10,3.885]],["name/6777",[102,45.915]],["parent/6777",[10,3.885]],["name/6778",[516,47.102]],["parent/6778",[10,3.885]],["name/6779",[105,40.053]],["parent/6779",[10,3.885]],["name/6780",[198,46.64]],["parent/6780",[10,3.885]],["name/6781",[233,45.915]],["parent/6781",[10,3.885]],["name/6782",[320,41.383]],["parent/6782",[10,3.885]],["name/6783",[361,46.199]],["parent/6783",[10,3.885]],["name/6784",[370,40.131]],["parent/6784",[10,3.885]],["name/6785",[377,40.053]],["parent/6785",[10,3.885]],["name/6786",[390,49.796]],["parent/6786",[10,3.885]],["name/6787",[394,46.344]],["parent/6787",[10,3.885]],["name/6788",[475,51.117]],["parent/6788",[10,3.885]],["name/6789",[517,54.112]],["parent/6789",[10,3.885]],["name/6790",[518,46.199]],["parent/6790",[10,3.885]],["name/6791",[491,38.879]],["parent/6791",[10,3.885]],["name/6792",[111,43.126]],["parent/6792",[10,3.885]],["name/6793",[489,40.131]],["parent/6793",[10,3.885]],["name/6794",[496,36.436]],["parent/6794",[10,3.885]],["name/6795",[497,45.915]],["parent/6795",[10,3.885]],["name/6796",[519,38.275]],["parent/6796",[10,3.885]],["name/6797",[521,46.344]],["parent/6797",[10,3.885]],["name/6798",[494,40.289]],["parent/6798",[10,3.885]],["name/6799",[522,47.102]],["parent/6799",[10,3.885]],["name/6800",[504,49.592]],["parent/6800",[10,3.885]],["name/6801",[407,40.131]],["parent/6801",[10,3.885]],["name/6802",[524,39.671]],["parent/6802",[10,3.885]],["name/6803",[513,46.64]],["parent/6803",[10,3.885]],["name/6804",[498,44.981]],["parent/6804",[10,3.885]],["name/6805",[525,46.792]],["parent/6805",[10,3.885]],["name/6806",[512,47.922]],["parent/6806",[10,3.885]],["name/6807",[527,51.355]],["parent/6807",[10,3.885]],["name/6808",[490,40.131]],["parent/6808",[10,3.885]],["name/6809",[528,47.102]],["parent/6809",[10,3.885]],["name/6810",[477,41.383]],["parent/6810",[10,3.885]],["name/6811",[505,49.004]],["parent/6811",[10,3.885]],["name/6812",[529,49.592]],["parent/6812",[10,3.885]],["name/6813",[508,49.196]],["parent/6813",[10,3.885]],["name/6814",[530,48.27]],["parent/6814",[10,3.885]],["name/6815",[488,36.545]],["parent/6815",[10,3.885]],["name/6816",[1126,47.922]],["parent/6816",[10,3.885]],["name/6817",[531,47.422]],["parent/6817",[10,3.885]],["name/6818",[532,47.586]],["parent/6818",[10,3.885]],["name/6819",[507,49.392]],["parent/6819",[10,3.885]],["name/6820",[437,46.491]],["parent/6820",[10,3.885]],["name/6821",[1165,39.019]],["parent/6821",[10,3.885]],["name/6822",[501,45.639]],["parent/6822",[10,3.885]],["name/6823",[298,45.639]],["parent/6823",[10,3.885]],["name/6824",[511,50.218]],["parent/6824",[10,3.885]],["name/6825",[495,38.21]],["parent/6825",[10,3.885]],["name/6826",[534,48.448]],["parent/6826",[10,3.885]],["name/6827",[487,41.653]],["parent/6827",[10,3.885]],["name/6828",[535,49.196]],["parent/6828",[10,3.885]],["name/6829",[510,48.63]],["parent/6829",[10,3.885]],["name/6830",[499,40.053]],["parent/6830",[10,3.885]],["name/6831",[492,39.822]],["parent/6831",[10,3.885]],["name/6832",[1264,44.606]],["parent/6832",[10,3.885]],["name/6833",[537,46.792]],["parent/6833",[10,3.885]],["name/6834",[493,40.289]],["parent/6834",[10,3.885]],["name/6835",[538,46.64]],["parent/6835",[10,3.885]],["name/6836",[465,47.102]],["parent/6836",[10,3.885]],["name/6837",[540,46.344]],["parent/6837",[10,3.885]],["name/6838",[509,50.005]],["parent/6838",[10,3.885]],["name/6839",[466,47.102]],["parent/6839",[10,3.885]],["name/6840",[541,47.922]],["parent/6840",[10,3.885]],["name/6841",[1345,84.557]],["parent/6841",[]],["name/6842",[1346,84.557]],["parent/6842",[]],["name/6843",[1347,84.557]],["parent/6843",[]],["name/6844",[1348,84.557]],["parent/6844",[]],["name/6845",[1349,84.557]],["parent/6845",[]],["name/6846",[1350,84.557]],["parent/6846",[]],["name/6847",[1351,84.557]],["parent/6847",[]],["name/6848",[1352,71.565]],["parent/6848",[]],["name/6849",[1,49.392]],["parent/6849",[1352,7.061]],["name/6850",[17,43.782]],["parent/6850",[1352,7.061]],["name/6851",[98,67.211]],["parent/6851",[1352,7.061]],["name/6852",[1353,65.098]],["parent/6852",[]],["name/6853",[514,40.369]],["parent/6853",[1353,6.423]],["name/6854",[1354,84.557]],["parent/6854",[1353,6.423]],["name/6855",[1355,84.557]],["parent/6855",[1353,6.423]],["name/6856",[975,79.449]],["parent/6856",[1353,6.423]],["name/6857",[1356,84.557]],["parent/6857",[1353,6.423]],["name/6858",[1357,84.557]],["parent/6858",[1353,6.423]],["name/6859",[1358,84.557]],["parent/6859",[1353,6.423]],["name/6860",[1352,71.565]],["parent/6860",[1353,6.423]],["name/6861",[17,43.782]],["parent/6861",[1353,6.423]],["name/6862",[1359,69.894]],["parent/6862",[]],["name/6863",[1360,79.449]],["parent/6863",[1359,6.896]],["name/6864",[1361,79.449]],["parent/6864",[1359,6.896]],["name/6865",[1362,79.449]],["parent/6865",[1359,6.896]],["name/6866",[1363,79.449]],["parent/6866",[1359,6.896]],["name/6867",[1364,79.449]],["parent/6867",[1359,6.896]],["name/6868",[540,46.344]],["parent/6868",[]],["name/6869",[10,39.376]],["parent/6869",[540,4.573]],["name/6870",[11,57.932]],["parent/6870",[540,4.573]],["name/6871",[1365,84.557]],["parent/6871",[540,4.573]],["name/6872",[14,53.8]],["parent/6872",[540,4.573]],["name/6873",[15,59.434]],["parent/6873",[540,4.573]],["name/6874",[16,46.64]],["parent/6874",[540,4.573]],["name/6875",[17,43.782]],["parent/6875",[540,4.573]],["name/6876",[19,52.639]],["parent/6876",[540,4.573]],["name/6877",[1366,79.449]],["parent/6877",[540,4.573]],["name/6878",[1367,84.557]],["parent/6878",[540,4.573]],["name/6879",[27,44.364]],["parent/6879",[540,4.573]],["name/6880",[24,49.196]],["parent/6880",[540,4.573]],["name/6881",[28,50.218]],["parent/6881",[540,4.573]],["name/6882",[29,60.578]],["parent/6882",[540,4.573]],["name/6883",[30,60.578]],["parent/6883",[540,4.573]],["name/6884",[25,60.578]],["parent/6884",[540,4.573]],["name/6885",[31,60.578]],["parent/6885",[540,4.573]],["name/6886",[32,60.578]],["parent/6886",[540,4.573]],["name/6887",[33,60.578]],["parent/6887",[540,4.573]],["name/6888",[34,53.202]],["parent/6888",[540,4.573]],["name/6889",[35,53.202]],["parent/6889",[540,4.573]],["name/6890",[36,53.202]],["parent/6890",[540,4.573]],["name/6891",[37,55.841]],["parent/6891",[540,4.573]],["name/6892",[38,55.47]],["parent/6892",[540,4.573]],["name/6893",[39,60.578]],["parent/6893",[540,4.573]],["name/6894",[40,59.434]],["parent/6894",[540,4.573]],["name/6895",[41,60.578]],["parent/6895",[540,4.573]],["name/6896",[42,60.578]],["parent/6896",[540,4.573]],["name/6897",[43,52.369]],["parent/6897",[540,4.573]],["name/6898",[44,52.369]],["parent/6898",[540,4.573]],["name/6899",[45,60.578]],["parent/6899",[540,4.573]],["name/6900",[46,46.792]],["parent/6900",[540,4.573]],["name/6901",[47,46.792]],["parent/6901",[540,4.573]],["name/6902",[48,46.792]],["parent/6902",[540,4.573]],["name/6903",[49,46.792]],["parent/6903",[540,4.573]],["name/6904",[50,46.792]],["parent/6904",[540,4.573]],["name/6905",[51,46.792]],["parent/6905",[540,4.573]],["name/6906",[52,46.792]],["parent/6906",[540,4.573]],["name/6907",[53,46.792]],["parent/6907",[540,4.573]],["name/6908",[54,46.792]],["parent/6908",[540,4.573]],["name/6909",[55,46.792]],["parent/6909",[540,4.573]],["name/6910",[56,46.792]],["parent/6910",[540,4.573]],["name/6911",[57,46.792]],["parent/6911",[540,4.573]],["name/6912",[58,46.792]],["parent/6912",[540,4.573]],["name/6913",[59,46.792]],["parent/6913",[540,4.573]],["name/6914",[60,46.792]],["parent/6914",[540,4.573]],["name/6915",[61,46.792]],["parent/6915",[540,4.573]],["name/6916",[62,46.792]],["parent/6916",[540,4.573]],["name/6917",[63,46.792]],["parent/6917",[540,4.573]],["name/6918",[64,46.792]],["parent/6918",[540,4.573]],["name/6919",[65,46.491]],["parent/6919",[540,4.573]],["name/6920",[66,46.491]],["parent/6920",[540,4.573]],["name/6921",[67,46.792]],["parent/6921",[540,4.573]],["name/6922",[68,40.948]],["parent/6922",[540,4.573]],["name/6923",[69,46.344]],["parent/6923",[540,4.573]],["name/6924",[70,46.344]],["parent/6924",[540,4.573]],["name/6925",[71,46.792]],["parent/6925",[540,4.573]],["name/6926",[72,46.056]],["parent/6926",[540,4.573]],["name/6927",[73,46.64]],["parent/6927",[540,4.573]],["name/6928",[74,46.792]],["parent/6928",[540,4.573]],["name/6929",[75,46.792]],["parent/6929",[540,4.573]],["name/6930",[76,46.792]],["parent/6930",[540,4.573]],["name/6931",[77,46.64]],["parent/6931",[540,4.573]],["name/6932",[78,46.199]],["parent/6932",[540,4.573]],["name/6933",[79,46.199]],["parent/6933",[540,4.573]],["name/6934",[509,50.005]],["parent/6934",[]],["name/6935",[9,57.042]],["parent/6935",[509,4.934]],["name/6936",[10,39.376]],["parent/6936",[509,4.934]],["name/6937",[16,46.64]],["parent/6937",[509,4.934]],["name/6938",[17,43.782]],["parent/6938",[509,4.934]],["name/6939",[19,52.639]],["parent/6939",[509,4.934]],["name/6940",[1,49.392]],["parent/6940",[509,4.934]],["name/6941",[1362,79.449]],["parent/6941",[1368,7.061]],["name/6942",[1360,79.449]],["parent/6942",[1368,7.061]],["name/6943",[1361,79.449]],["parent/6943",[1368,7.061]],["name/6944",[1363,79.449]],["parent/6944",[1368,7.061]],["name/6945",[1364,79.449]],["parent/6945",[1368,7.061]],["name/6946",[378,68.463]],["parent/6946",[509,4.934]],["name/6947",[1366,79.449]],["parent/6947",[509,4.934]],["name/6948",[27,44.364]],["parent/6948",[509,4.934]],["name/6949",[46,46.792]],["parent/6949",[509,4.934]],["name/6950",[47,46.792]],["parent/6950",[509,4.934]],["name/6951",[48,46.792]],["parent/6951",[509,4.934]],["name/6952",[49,46.792]],["parent/6952",[509,4.934]],["name/6953",[50,46.792]],["parent/6953",[509,4.934]],["name/6954",[51,46.792]],["parent/6954",[509,4.934]],["name/6955",[52,46.792]],["parent/6955",[509,4.934]],["name/6956",[53,46.792]],["parent/6956",[509,4.934]],["name/6957",[54,46.792]],["parent/6957",[509,4.934]],["name/6958",[55,46.792]],["parent/6958",[509,4.934]],["name/6959",[56,46.792]],["parent/6959",[509,4.934]],["name/6960",[57,46.792]],["parent/6960",[509,4.934]],["name/6961",[58,46.792]],["parent/6961",[509,4.934]],["name/6962",[59,46.792]],["parent/6962",[509,4.934]],["name/6963",[60,46.792]],["parent/6963",[509,4.934]],["name/6964",[61,46.792]],["parent/6964",[509,4.934]],["name/6965",[62,46.792]],["parent/6965",[509,4.934]],["name/6966",[63,46.792]],["parent/6966",[509,4.934]],["name/6967",[64,46.792]],["parent/6967",[509,4.934]],["name/6968",[65,46.491]],["parent/6968",[509,4.934]],["name/6969",[66,46.491]],["parent/6969",[509,4.934]],["name/6970",[67,46.792]],["parent/6970",[509,4.934]],["name/6971",[68,40.948]],["parent/6971",[509,4.934]],["name/6972",[69,46.344]],["parent/6972",[509,4.934]],["name/6973",[70,46.344]],["parent/6973",[509,4.934]],["name/6974",[71,46.792]],["parent/6974",[509,4.934]],["name/6975",[72,46.056]],["parent/6975",[509,4.934]],["name/6976",[73,46.64]],["parent/6976",[509,4.934]],["name/6977",[74,46.792]],["parent/6977",[509,4.934]],["name/6978",[75,46.792]],["parent/6978",[509,4.934]],["name/6979",[76,46.792]],["parent/6979",[509,4.934]],["name/6980",[77,46.64]],["parent/6980",[509,4.934]],["name/6981",[78,46.199]],["parent/6981",[509,4.934]],["name/6982",[79,46.199]],["parent/6982",[509,4.934]],["name/6983",[1369,73.571]],["parent/6983",[]],["name/6984",[1370,84.557]],["parent/6984",[1369,7.259]],["name/6985",[1371,84.557]],["parent/6985",[1369,7.259]],["name/6986",[558,73.571]],["parent/6986",[1369,7.259]],["name/6987",[550,71.565]],["parent/6987",[]],["name/6988",[1372,84.557]],["parent/6988",[550,7.061]],["name/6989",[1373,84.557]],["parent/6989",[550,7.061]],["name/6990",[1374,84.557]],["parent/6990",[550,7.061]],["name/6991",[466,47.102]],["parent/6991",[]],["name/6992",[10,39.376]],["parent/6992",[466,4.648]],["name/6993",[1375,84.557]],["parent/6993",[466,4.648]],["name/6994",[16,46.64]],["parent/6994",[466,4.648]],["name/6995",[17,43.782]],["parent/6995",[466,4.648]],["name/6996",[1376,84.557]],["parent/6996",[466,4.648]],["name/6997",[1377,84.557]],["parent/6997",[466,4.648]],["name/6998",[1378,84.557]],["parent/6998",[466,4.648]],["name/6999",[1379,84.557]],["parent/6999",[466,4.648]],["name/7000",[1281,79.449]],["parent/7000",[466,4.648]],["name/7001",[1380,84.557]],["parent/7001",[466,4.648]],["name/7002",[1381,84.557]],["parent/7002",[466,4.648]],["name/7003",[643,79.449]],["parent/7003",[466,4.648]],["name/7004",[1382,84.557]],["parent/7004",[466,4.648]],["name/7005",[132,53.8]],["parent/7005",[466,4.648]],["name/7006",[130,54.112]],["parent/7006",[466,4.648]],["name/7007",[64,46.792]],["parent/7007",[466,4.648]],["name/7008",[1383,84.557]],["parent/7008",[466,4.648]],["name/7009",[1384,84.557]],["parent/7009",[466,4.648]],["name/7010",[1385,84.557]],["parent/7010",[466,4.648]],["name/7011",[1386,84.557]],["parent/7011",[466,4.648]],["name/7012",[1287,79.449]],["parent/7012",[466,4.648]],["name/7013",[1387,84.557]],["parent/7013",[466,4.648]],["name/7014",[110,56.225]],["parent/7014",[466,4.648]],["name/7015",[131,54.112]],["parent/7015",[466,4.648]],["name/7016",[27,44.364]],["parent/7016",[466,4.648]],["name/7017",[46,46.792]],["parent/7017",[466,4.648]],["name/7018",[47,46.792]],["parent/7018",[466,4.648]],["name/7019",[48,46.792]],["parent/7019",[466,4.648]],["name/7020",[49,46.792]],["parent/7020",[466,4.648]],["name/7021",[50,46.792]],["parent/7021",[466,4.648]],["name/7022",[51,46.792]],["parent/7022",[466,4.648]],["name/7023",[52,46.792]],["parent/7023",[466,4.648]],["name/7024",[53,46.792]],["parent/7024",[466,4.648]],["name/7025",[54,46.792]],["parent/7025",[466,4.648]],["name/7026",[55,46.792]],["parent/7026",[466,4.648]],["name/7027",[56,46.792]],["parent/7027",[466,4.648]],["name/7028",[57,46.792]],["parent/7028",[466,4.648]],["name/7029",[58,46.792]],["parent/7029",[466,4.648]],["name/7030",[59,46.792]],["parent/7030",[466,4.648]],["name/7031",[60,46.792]],["parent/7031",[466,4.648]],["name/7032",[61,46.792]],["parent/7032",[466,4.648]],["name/7033",[62,46.792]],["parent/7033",[466,4.648]],["name/7034",[63,46.792]],["parent/7034",[466,4.648]],["name/7035",[65,46.491]],["parent/7035",[466,4.648]],["name/7036",[66,46.491]],["parent/7036",[466,4.648]],["name/7037",[67,46.792]],["parent/7037",[466,4.648]],["name/7038",[68,40.948]],["parent/7038",[466,4.648]],["name/7039",[69,46.344]],["parent/7039",[466,4.648]],["name/7040",[70,46.344]],["parent/7040",[466,4.648]],["name/7041",[71,46.792]],["parent/7041",[466,4.648]],["name/7042",[72,46.056]],["parent/7042",[466,4.648]],["name/7043",[73,46.64]],["parent/7043",[466,4.648]],["name/7044",[74,46.792]],["parent/7044",[466,4.648]],["name/7045",[75,46.792]],["parent/7045",[466,4.648]],["name/7046",[76,46.792]],["parent/7046",[466,4.648]],["name/7047",[77,46.64]],["parent/7047",[466,4.648]],["name/7048",[78,46.199]],["parent/7048",[466,4.648]],["name/7049",[79,46.199]],["parent/7049",[466,4.648]],["name/7050",[1388,84.557]],["parent/7050",[]],["name/7051",[1389,84.557]],["parent/7051",[]]],"invertedIndex":[["__type",{"_index":1,"name":{"1":{},"20":{},"177":{},"249":{},"384":{},"466":{},"755":{},"827":{},"969":{},"1215":{},"1267":{},"1374":{},"1377":{},"1565":{},"1803":{},"2049":{},"2275":{},"2392":{},"2501":{},"2700":{},"3062":{},"3233":{},"3430":{},"3558":{},"3560":{},"3599":{},"3609":{},"3753":{},"4124":{},"4179":{},"4185":{},"4426":{},"4538":{},"4676":{},"4798":{},"5011":{},"5206":{},"5220":{},"5293":{},"5481":{},"5608":{},"5769":{},"5837":{},"5899":{},"6087":{},"6214":{},"6219":{},"6498":{},"6849":{},"6940":{}},"parent":{}}],["above",{"_index":812,"name":{"2827":{},"4246":{}},"parent":{}}],["abovecode",{"_index":99,"name":{"163":{}},"parent":{}}],["accid",{"_index":433,"name":{"1258":{}},"parent":{}}],["accidental",{"_index":8,"name":{"8":{},"1229":{},"1410":{},"1438":{},"1577":{},"2975":{},"2978":{},"2981":{},"3021":{},"6775":{}},"parent":{"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"18":{},"19":{},"20":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{}}}],["accidental.__type",{"_index":21,"name":{},"parent":{"21":{},"22":{},"23":{}}}],["accidentallowerpadding",{"_index":906,"name":{"3432":{}},"parent":{}}],["accidentalmap",{"_index":565,"name":{"1550":{}},"parent":{}}],["accidentals",{"_index":420,"name":{"1242":{},"1270":{},"3000":{}},"parent":{}}],["accidentalspacing",{"_index":802,"name":{"2625":{}},"parent":{}}],["accidentalupperpadding",{"_index":904,"name":{"3431":{}},"parent":{}}],["accidentalvalue",{"_index":849,"name":{"2985":{}},"parent":{}}],["add",{"_index":278,"name":{"576":{},"1681":{},"3712":{},"5307":{}},"parent":{}}],["addbeziercurve",{"_index":268,"name":{"562":{}},"parent":{}}],["addchildelement",{"_index":46,"name":{"46":{},"127":{},"200":{},"338":{},"416":{},"495":{},"710":{},"777":{},"916":{},"1059":{},"1115":{},"1180":{},"1337":{},"1732":{},"1886":{},"1998":{},"2139":{},"2351":{},"2418":{},"2582":{},"2654":{},"2789":{},"2856":{},"2939":{},"3153":{},"3319":{},"3381":{},"3459":{},"3522":{},"3620":{},"3843":{},"3963":{},"4030":{},"4080":{},"4136":{},"4203":{},"4270":{},"4502":{},"4574":{},"4631":{},"4696":{},"4754":{},"4813":{},"4875":{},"4946":{},"5098":{},"5169":{},"5244":{},"5379":{},"5562":{},"5622":{},"5730":{},"5784":{},"5852":{},"5989":{},"6177":{},"6268":{},"6386":{},"6452":{},"6587":{},"6650":{},"6728":{},"6900":{},"6949":{},"7017":{}},"parent":{}}],["addchord",{"_index":452,"name":{"1293":{}},"parent":{}}],["addclass",{"_index":55,"name":{"55":{},"136":{},"209":{},"347":{},"425":{},"504":{},"719":{},"786":{},"925":{},"1068":{},"1124":{},"1189":{},"1347":{},"1741":{},"1895":{},"2007":{},"2148":{},"2359":{},"2427":{},"2591":{},"2663":{},"2798":{},"2865":{},"2948":{},"3163":{},"3328":{},"3390":{},"3468":{},"3531":{},"3629":{},"3852":{},"3971":{},"4039":{},"4089":{},"4145":{},"4212":{},"4279":{},"4510":{},"4583":{},"4640":{},"4705":{},"4763":{},"4822":{},"4884":{},"4955":{},"5108":{},"5178":{},"5253":{},"5388":{},"5571":{},"5631":{},"5738":{},"5793":{},"5860":{},"5998":{},"6186":{},"6278":{},"6395":{},"6461":{},"6596":{},"6659":{},"6737":{},"6909":{},"6958":{},"7026":{}},"parent":{}}],["addclef",{"_index":1034,"name":{"3950":{},"5717":{}},"parent":{}}],["addcommithook",{"_index":444,"name":{"1285":{},"1321":{}},"parent":{}}],["addconnector",{"_index":1210,"name":{"5375":{}},"parent":{}}],["addendclef",{"_index":1035,"name":{"3951":{},"5718":{}},"parent":{}}],["addendmodifier",{"_index":1023,"name":{"3938":{},"5705":{}},"parent":{}}],["addendnote",{"_index":1180,"name":{"5223":{}},"parent":{}}],["addendtimesignature",{"_index":1037,"name":{"3953":{},"5720":{}},"parent":{}}],["addglyph",{"_index":350,"name":{"679":{}},"parent":{}}],["addglyphortext",{"_index":351,"name":{"680":{}},"parent":{}}],["addglyphsuperscript",{"_index":349,"name":{"678":{}},"parent":{}}],["addkeysignature",{"_index":1033,"name":{"3949":{},"5716":{}},"parent":{}}],["addline",{"_index":352,"name":{"681":{}},"parent":{}}],["addmember",{"_index":822,"name":{"2903":{}},"parent":{}}],["addmodifier",{"_index":157,"name":{"294":{},"872":{},"1014":{},"1845":{},"2094":{},"2313":{},"2542":{},"2745":{},"2902":{},"3107":{},"3276":{},"3798":{},"3937":{},"4464":{},"5055":{},"5522":{},"5704":{},"5944":{},"6132":{},"6248":{},"6543":{}},"parent":{}}],["addnote",{"_index":450,"name":{"1291":{}},"parent":{}}],["addnoteoption",{"_index":449,"name":{"1290":{}},"parent":{}}],["addpoint",{"_index":264,"name":{"558":{}},"parent":{}}],["addquadraticcurve",{"_index":267,"name":{"561":{}},"parent":{}}],["addsinglenote",{"_index":451,"name":{"1292":{}},"parent":{}}],["addstave",{"_index":1211,"name":{"5376":{}},"parent":{}}],["addstroke",{"_index":129,"name":{"266":{},"844":{},"986":{},"1819":{},"2066":{},"2291":{},"2518":{},"2717":{},"3079":{},"3250":{},"3770":{},"4442":{},"5028":{},"5498":{},"5916":{},"6104":{},"6515":{}},"parent":{}}],["addsymbolblock",{"_index":345,"name":{"674":{}},"parent":{}}],["addtabglyph",{"_index":1225,"name":{"5664":{}},"parent":{}}],["addtext",{"_index":346,"name":{"675":{}},"parent":{}}],["addtextsubscript",{"_index":348,"name":{"677":{}},"parent":{}}],["addtextsuperscript",{"_index":347,"name":{"676":{}},"parent":{}}],["addtickable",{"_index":1287,"name":{"6340":{},"7012":{}},"parent":{}}],["addtickables",{"_index":1387,"name":{"7013":{}},"parent":{}}],["addtimesignature",{"_index":1036,"name":{"3952":{},"5719":{}},"parent":{}}],["addtomodifiercontext",{"_index":109,"name":{"242":{},"820":{},"1045":{},"1773":{},"2125":{},"2338":{},"2569":{},"2693":{},"3138":{},"3305":{},"3829":{},"4489":{},"5084":{},"5549":{},"5975":{},"6163":{},"6247":{},"6491":{}},"parent":{}}],["addtostave",{"_index":806,"name":{"2632":{}},"parent":{}}],["addtrebleglyph",{"_index":1038,"name":{"3954":{},"5721":{}},"parent":{}}],["addx",{"_index":265,"name":{"559":{}},"parent":{}}],["addy",{"_index":266,"name":{"560":{}},"parent":{}}],["adjustheightforbeam",{"_index":1164,"name":{"4944":{}},"parent":{}}],["adjustheightforflag",{"_index":1163,"name":{"4943":{}},"parent":{}}],["advancewidth",{"_index":593,"name":{"1592":{}},"parent":{}}],["align_center",{"_index":747,"name":{"2187":{},"3051":{},"3207":{},"4340":{},"5430":{},"6068":{}},"parent":{}}],["align_rests",{"_index":629,"name":{"1634":{}},"parent":{}}],["alignmentcontexts",{"_index":632,"name":{"1638":{}},"parent":{"1639":{},"1640":{},"1641":{},"1642":{}}}],["alignmentmodifiercontexts",{"_index":637,"name":{"1643":{}},"parent":{"1644":{},"1645":{},"1646":{}}}],["alignrests",{"_index":644,"name":{"1656":{}},"parent":{}}],["alignreststonotes",{"_index":642,"name":{"1653":{}},"parent":{}}],["alignsubnoteswithnote",{"_index":45,"name":{"45":{},"126":{},"199":{},"494":{},"709":{},"1179":{},"1731":{},"2417":{},"2855":{},"3380":{},"3458":{},"3521":{},"5168":{},"5243":{},"6649":{},"6899":{}},"parent":{}}],["alpha",{"_index":1195,"name":{"5344":{}},"parent":{}}],["alterkey",{"_index":809,"name":{"2637":{}},"parent":{}}],["annotation",{"_index":88,"name":{"90":{},"754":{},"1411":{},"1439":{},"6776":{}},"parent":{"91":{},"92":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"134":{},"135":{},"136":{},"137":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"159":{},"160":{}}}],["annotation_spacing",{"_index":122,"name":{"258":{},"836":{},"978":{},"1812":{},"2058":{},"2284":{},"2510":{},"2709":{},"3071":{},"3242":{},"3762":{},"4435":{},"5020":{},"5490":{},"5908":{},"6096":{},"6507":{}},"parent":{}}],["annotationhorizontaljustify",{"_index":80,"name":{"80":{},"1518":{}},"parent":{"81":{},"82":{},"83":{},"84":{}}}],["annotationverticaljustify",{"_index":85,"name":{"85":{},"1519":{}},"parent":{"86":{},"87":{},"88":{},"89":{}}}],["applyaccidentals",{"_index":13,"name":{"13":{}},"parent":{}}],["applyandgetbeams",{"_index":200,"name":{"379":{}},"parent":{}}],["applyattributes",{"_index":1193,"name":{"5319":{}},"parent":{}}],["applyfontstyle",{"_index":1083,"name":{"4201":{}},"parent":{}}],["applylinestyle",{"_index":1082,"name":{"4200":{}},"parent":{}}],["applystemextensions",{"_index":226,"name":{"410":{}},"parent":{}}],["applystyle",{"_index":51,"name":{"51":{},"132":{},"205":{},"343":{},"421":{},"500":{},"715":{},"782":{},"921":{},"1064":{},"1120":{},"1185":{},"1342":{},"1737":{},"1891":{},"2003":{},"2144":{},"2355":{},"2423":{},"2587":{},"2659":{},"2794":{},"2861":{},"2944":{},"3158":{},"3324":{},"3386":{},"3464":{},"3527":{},"3625":{},"3848":{},"3967":{},"4035":{},"4085":{},"4141":{},"4208":{},"4275":{},"4506":{},"4579":{},"4636":{},"4701":{},"4759":{},"4818":{},"4880":{},"4951":{},"5103":{},"5174":{},"5249":{},"5384":{},"5567":{},"5627":{},"5734":{},"5789":{},"5848":{},"5994":{},"6182":{},"6273":{},"6391":{},"6457":{},"6592":{},"6655":{},"6733":{},"6905":{},"6954":{},"7022":{}},"parent":{}}],["applytickmultiplier",{"_index":192,"name":{"333":{},"911":{},"1054":{},"1881":{},"2134":{},"2346":{},"2577":{},"2784":{},"3148":{},"3314":{},"3838":{},"4497":{},"5093":{},"5557":{},"5984":{},"6172":{},"6259":{},"6582":{}},"parent":{}}],["arc",{"_index":296,"name":{"595":{},"3703":{},"5329":{}},"parent":{}}],["arpeggio_directionless",{"_index":1179,"name":{"5213":{}},"parent":{}}],["array",{"_index":635,"name":{"1641":{},"1645":{}},"parent":{}}],["arrowhead_angle",{"_index":1079,"name":{"4195":{}},"parent":{}}],["arrowhead_length",{"_index":1078,"name":{"4194":{}},"parent":{}}],["articulation",{"_index":102,"name":{"166":{},"1413":{},"1440":{},"1581":{},"6777":{}},"parent":{"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"190":{},"191":{},"192":{},"193":{},"194":{},"195":{},"196":{},"197":{},"198":{},"199":{},"200":{},"201":{},"202":{},"203":{},"204":{},"205":{},"206":{},"207":{},"208":{},"209":{},"210":{},"211":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{}}}],["articulation.__type",{"_index":104,"name":{},"parent":{"178":{}}}],["articulationstruct",{"_index":97,"name":{"161":{}},"parent":{"162":{},"163":{},"164":{},"165":{}}}],["attach",{"_index":1319,"name":{"6712":{}},"parent":{}}],["attributes",{"_index":1181,"name":{"5278":{},"5281":{},"5297":{}},"parent":{}}],["auto_beam",{"_index":631,"name":{"1637":{}},"parent":{}}],["auto_stem",{"_index":743,"name":{"2175":{},"4328":{},"5418":{}},"parent":{}}],["autostem",{"_index":758,"name":{"2212":{},"4360":{}},"parent":{}}],["autowidth",{"_index":1207,"name":{"5362":{}},"parent":{}}],["backend",{"_index":482,"name":{"1379":{}},"parent":{}}],["backends",{"_index":971,"name":{"3729":{}},"parent":{}}],["background",{"_index":483,"name":{"1382":{}},"parent":{}}],["backgroundfillstyle",{"_index":1190,"name":{"5303":{}},"parent":{}}],["barline",{"_index":516,"name":{"1441":{},"4003":{},"6778":{}},"parent":{"4004":{},"4005":{},"4006":{},"4007":{},"4008":{},"4009":{},"4010":{},"4011":{},"4012":{},"4013":{},"4014":{},"4015":{},"4016":{},"4017":{},"4018":{},"4019":{},"4020":{},"4021":{},"4022":{},"4023":{},"4024":{},"4025":{},"4026":{},"4027":{},"4028":{},"4029":{},"4030":{},"4031":{},"4032":{},"4033":{},"4034":{},"4035":{},"4036":{},"4037":{},"4038":{},"4039":{},"4040":{},"4041":{},"4042":{},"4043":{},"4044":{},"4045":{},"4046":{},"4047":{},"4048":{},"4049":{},"4050":{},"4051":{},"4052":{},"4053":{},"4054":{},"4055":{},"4056":{},"4057":{},"4058":{},"4059":{},"4060":{},"4061":{},"4062":{},"4063":{}}}],["barlinetype",{"_index":545,"name":{"1530":{},"3995":{}},"parent":{"3996":{},"3997":{},"3998":{},"3999":{},"4000":{},"4001":{},"4002":{}}}],["barnote",{"_index":105,"name":{"234":{},"1403":{},"1442":{},"6779":{}},"parent":{"235":{},"236":{},"237":{},"238":{},"239":{},"240":{},"241":{},"242":{},"243":{},"244":{},"245":{},"246":{},"247":{},"248":{},"249":{},"263":{},"264":{},"265":{},"266":{},"267":{},"268":{},"269":{},"270":{},"271":{},"272":{},"273":{},"274":{},"275":{},"276":{},"277":{},"278":{},"279":{},"280":{},"281":{},"282":{},"283":{},"284":{},"285":{},"286":{},"287":{},"288":{},"289":{},"290":{},"291":{},"292":{},"293":{},"294":{},"295":{},"296":{},"297":{},"298":{},"299":{},"300":{},"301":{},"302":{},"303":{},"304":{},"305":{},"306":{},"307":{},"308":{},"309":{},"310":{},"311":{},"312":{},"313":{},"314":{},"315":{},"316":{},"317":{},"318":{},"319":{},"320":{},"321":{},"322":{},"323":{},"324":{},"325":{},"326":{},"327":{},"328":{},"329":{},"330":{},"331":{},"332":{},"333":{},"334":{},"335":{},"336":{},"337":{},"338":{},"339":{},"340":{},"341":{},"342":{},"343":{},"344":{},"345":{},"346":{},"347":{},"348":{},"349":{},"350":{},"351":{},"352":{},"353":{},"354":{},"355":{},"356":{},"357":{},"358":{},"359":{},"360":{},"361":{},"362":{},"363":{},"364":{},"365":{},"366":{},"367":{},"368":{},"369":{},"370":{},"371":{}}}],["barnote.__type",{"_index":115,"name":{},"parent":{"250":{},"251":{},"252":{},"253":{},"254":{},"255":{},"256":{},"257":{},"258":{},"259":{},"260":{},"261":{},"262":{}}}],["bbox",{"_index":725,"name":{"1974":{},"6364":{}},"parent":{}}],["beam",{"_index":198,"name":{"376":{},"1317":{},"1425":{},"1443":{},"6780":{}},"parent":{"377":{},"378":{},"379":{},"380":{},"381":{},"382":{},"383":{},"384":{},"397":{},"398":{},"399":{},"400":{},"401":{},"402":{},"403":{},"404":{},"405":{},"406":{},"407":{},"408":{},"409":{},"410":{},"411":{},"412":{},"413":{},"414":{},"415":{},"416":{},"417":{},"418":{},"419":{},"420":{},"421":{},"422":{},"423":{},"424":{},"425":{},"426":{},"427":{},"428":{},"429":{},"430":{},"431":{},"432":{},"433":{},"434":{},"435":{},"436":{},"437":{},"438":{},"439":{},"440":{},"441":{},"442":{},"443":{},"444":{},"445":{},"446":{},"447":{},"448":{},"449":{}}}],["beam.__type",{"_index":203,"name":{},"parent":{"385":{},"386":{},"387":{},"388":{},"389":{},"390":{},"391":{},"392":{},"393":{},"394":{},"395":{},"396":{}}}],["beam_both",{"_index":196,"name":{"374":{}},"parent":{}}],["beam_count",{"_index":709,"name":{"1939":{}},"parent":{}}],["beam_left",{"_index":194,"name":{"372":{}},"parent":{}}],["beam_right",{"_index":195,"name":{"373":{}},"parent":{}}],["beam_width",{"_index":207,"name":{"389":{}},"parent":{}}],["beamnotes",{"_index":787,"name":{"2395":{}},"parent":{}}],["beat_value",{"_index":1371,"name":{"6985":{}},"parent":{}}],["beats_occupied",{"_index":1308,"name":{"6693":{}},"parent":{}}],["beatsoccupieddeprecationwarning",{"_index":1325,"name":{"6719":{}},"parent":{}}],["begin",{"_index":401,"name":{"1219":{},"3581":{},"4248":{},"4849":{}},"parent":{}}],["begin_end",{"_index":1144,"name":{"4852":{}},"parent":{}}],["begin_x",{"_index":376,"name":{"953":{}},"parent":{}}],["beginpath",{"_index":291,"name":{"590":{},"3698":{},"5324":{}},"parent":{}}],["below",{"_index":813,"name":{"2828":{},"4247":{}},"parent":{}}],["belowcode",{"_index":100,"name":{"164":{}},"parent":{}}],["benchmark",{"_index":1356,"name":{"6857":{}},"parent":{}}],["bend",{"_index":233,"name":{"456":{},"1444":{},"6781":{}},"parent":{"457":{},"458":{},"459":{},"460":{},"461":{},"462":{},"463":{},"464":{},"465":{},"466":{},"471":{},"472":{},"473":{},"474":{},"475":{},"476":{},"477":{},"478":{},"479":{},"480":{},"481":{},"482":{},"483":{},"484":{},"485":{},"486":{},"487":{},"488":{},"489":{},"490":{},"491":{},"492":{},"493":{},"494":{},"495":{},"496":{},"497":{},"498":{},"499":{},"500":{},"501":{},"502":{},"503":{},"504":{},"505":{},"506":{},"507":{},"508":{},"509":{},"510":{},"511":{},"512":{},"513":{},"514":{},"515":{},"516":{},"517":{},"518":{},"519":{},"520":{},"521":{},"522":{},"523":{},"524":{},"525":{},"526":{},"527":{},"528":{}}}],["bend.__type",{"_index":237,"name":{},"parent":{"467":{},"468":{},"469":{},"470":{}}}],["bend_width",{"_index":239,"name":{"469":{}},"parent":{}}],["bendphrase",{"_index":229,"name":{"450":{}},"parent":{"451":{},"452":{},"453":{},"454":{},"455":{}}}],["between_lines",{"_index":101,"name":{"165":{}},"parent":{}}],["bezier",{"_index":716,"name":{"1960":{}},"parent":{}}],["beziercurveto",{"_index":294,"name":{"593":{},"3701":{},"5327":{}},"parent":{}}],["bold",{"_index":597,"name":{"1597":{},"6030":{}},"parent":{}}],["botglyphs",{"_index":727,"name":{"1978":{},"6368":{}},"parent":{}}],["botstartx",{"_index":1290,"name":{"6359":{}},"parent":{}}],["bottom",{"_index":87,"name":{"88":{},"625":{},"4181":{},"5826":{},"6701":{}},"parent":{}}],["bottom_stave",{"_index":1055,"name":{"4072":{}},"parent":{}}],["bottom_text_position",{"_index":982,"name":{"3879":{}},"parent":{}}],["bottomline",{"_index":1293,"name":{"6431":{}},"parent":{}}],["boundingbox",{"_index":248,"name":{"534":{},"1445":{}},"parent":{"535":{},"536":{},"537":{},"538":{},"539":{},"540":{},"541":{},"542":{},"543":{},"544":{},"545":{},"546":{},"547":{},"548":{},"549":{},"550":{},"551":{}}}],["boundingboxcomputation",{"_index":260,"name":{"552":{},"1446":{}},"parent":{"553":{},"554":{},"555":{},"556":{},"557":{},"558":{},"559":{},"560":{},"561":{},"562":{}}}],["bounds",{"_index":244,"name":{"529":{}},"parent":{"530":{},"531":{},"532":{},"533":{}}}],["bpm",{"_index":1129,"name":{"4666":{}},"parent":{}}],["bracket",{"_index":939,"name":{"3601":{}},"parent":{}}],["bracket_height",{"_index":946,"name":{"3611":{},"5844":{}},"parent":{}}],["bracket_line_width",{"_index":948,"name":{"3613":{}},"parent":{}}],["bracketed",{"_index":1309,"name":{"6694":{}},"parent":{}}],["breaksecondaryat",{"_index":219,"name":{"403":{}},"parent":{}}],["brush_down",{"_index":1172,"name":{"5207":{}},"parent":{}}],["brush_up",{"_index":1174,"name":{"5208":{}},"parent":{}}],["build",{"_index":515,"name":{"1437":{}},"parent":{}}],["buildandattach",{"_index":396,"name":{"1152":{},"3495":{}},"parent":{}}],["buildcontext",{"_index":974,"name":{"3732":{}},"parent":{}}],["builder",{"_index":400,"name":{"1218":{},"1274":{},"1297":{},"1310":{}},"parent":{"1275":{},"1276":{},"1277":{},"1278":{},"1279":{},"1280":{},"1281":{},"1282":{},"1283":{},"1284":{},"1285":{},"1286":{},"1287":{},"1288":{},"1289":{},"1290":{},"1291":{},"1292":{},"1293":{},"1294":{}}}],["builderelements",{"_index":435,"name":{"1268":{}},"parent":{"1269":{},"1270":{}}}],["builderoptions",{"_index":436,"name":{"1271":{}},"parent":{"1272":{},"1273":{}}}],["buildflag",{"_index":682,"name":{"1782":{},"2260":{},"2483":{},"4411":{},"4990":{},"5463":{}},"parent":{}}],["buildnoteheads",{"_index":757,"name":{"2211":{},"4359":{}},"parent":{}}],["buildstem",{"_index":681,"name":{"1781":{},"2210":{},"2482":{},"4358":{},"4989":{},"5462":{}},"parent":{}}],["cached_outline",{"_index":595,"name":{"1594":{}},"parent":{}}],["calcbeamednotesslashbbox",{"_index":754,"name":{"2205":{}},"parent":{}}],["calcnotedisplacements",{"_index":774,"name":{"2242":{},"4390":{}},"parent":{}}],["calculateflatslope",{"_index":224,"name":{"408":{}},"parent":{}}],["calculatekeyprops",{"_index":760,"name":{"2214":{},"4362":{}},"parent":{}}],["calculateoptimalstemdirection",{"_index":759,"name":{"2213":{},"4361":{}},"parent":{}}],["calculateslope",{"_index":223,"name":{"407":{}},"parent":{}}],["cancelkey",{"_index":804,"name":{"2630":{}},"parent":{}}],["canonical_notes",{"_index":856,"name":{"2994":{}},"parent":{}}],["canvas",{"_index":273,"name":{"571":{},"3722":{}},"parent":{}}],["canvas_browser_size_limit",{"_index":270,"name":{"566":{}},"parent":{}}],["canvascontext",{"_index":269,"name":{"563":{},"1447":{}},"parent":{"564":{},"565":{},"566":{},"567":{},"568":{},"569":{},"570":{},"571":{},"572":{},"573":{},"574":{},"575":{},"576":{},"577":{},"578":{},"579":{},"580":{},"581":{},"582":{},"583":{},"584":{},"585":{},"586":{},"587":{},"588":{},"589":{},"590":{},"591":{},"592":{},"593":{},"594":{},"595":{},"596":{},"597":{},"598":{},"599":{},"600":{},"601":{},"602":{},"603":{},"604":{},"605":{},"606":{},"607":{},"608":{}}}],["category",{"_index":10,"name":{"10":{},"92":{},"168":{},"236":{},"377":{},"457":{},"568":{},"636":{},"749":{},"812":{},"956":{},"1105":{},"1150":{},"1334":{},"1671":{},"1700":{},"1767":{},"1944":{},"1962":{},"2036":{},"2190":{},"2385":{},"2453":{},"2624":{},"2689":{},"2830":{},"2928":{},"3054":{},"3211":{},"3353":{},"3417":{},"3494":{},"3595":{},"3682":{},"3740":{},"3891":{},"4004":{},"4066":{},"4122":{},"4176":{},"4251":{},"4344":{},"4535":{},"4609":{},"4671":{},"4731":{},"4794":{},"4854":{},"4925":{},"4980":{},"5134":{},"5204":{},"5285":{},"5370":{},"5433":{},"5597":{},"5657":{},"5763":{},"5829":{},"5887":{},"6071":{},"6224":{},"6345":{},"6425":{},"6487":{},"6622":{},"6704":{},"6774":{},"6869":{},"6936":{},"6992":{}},"parent":{"6775":{},"6776":{},"6777":{},"6778":{},"6779":{},"6780":{},"6781":{},"6782":{},"6783":{},"6784":{},"6785":{},"6786":{},"6787":{},"6788":{},"6789":{},"6790":{},"6791":{},"6792":{},"6793":{},"6794":{},"6795":{},"6796":{},"6797":{},"6798":{},"6799":{},"6800":{},"6801":{},"6802":{},"6803":{},"6804":{},"6805":{},"6806":{},"6807":{},"6808":{},"6809":{},"6810":{},"6811":{},"6812":{},"6813":{},"6814":{},"6815":{},"6816":{},"6817":{},"6818":{},"6819":{},"6820":{},"6821":{},"6822":{},"6823":{},"6824":{},"6825":{},"6826":{},"6827":{},"6828":{},"6829":{},"6830":{},"6831":{},"6832":{},"6833":{},"6834":{},"6835":{},"6836":{},"6837":{},"6838":{},"6839":{},"6840":{}}}],["center",{"_index":82,"name":{"82":{},"87":{},"620":{},"2824":{},"4243":{},"6053":{}},"parent":{}}],["center_stem",{"_index":84,"name":{"84":{},"89":{},"622":{}},"parent":{}}],["checkattachednote",{"_index":30,"name":{"30":{},"110":{},"183":{},"479":{},"693":{},"1164":{},"1715":{},"2401":{},"2838":{},"3364":{},"3442":{},"3506":{},"5152":{},"5228":{},"6633":{},"6883":{}},"parent":{}}],["checkbeam",{"_index":154,"name":{"291":{},"869":{},"1011":{},"1842":{},"2091":{},"2311":{},"2539":{},"2742":{},"3104":{},"3273":{},"3795":{},"4462":{},"5052":{},"5519":{},"5941":{},"6129":{},"6540":{}},"parent":{}}],["checkcollision",{"_index":12,"name":{"12":{}},"parent":{}}],["checkcontext",{"_index":67,"name":{"67":{},"148":{},"221":{},"359":{},"437":{},"516":{},"731":{},"798":{},"935":{},"1080":{},"1136":{},"1201":{},"1359":{},"1753":{},"1907":{},"2019":{},"2159":{},"2370":{},"2439":{},"2603":{},"2675":{},"2810":{},"2877":{},"2960":{},"3175":{},"3339":{},"3402":{},"3480":{},"3543":{},"3641":{},"3863":{},"3982":{},"4051":{},"4101":{},"4157":{},"4224":{},"4291":{},"4521":{},"4595":{},"4652":{},"4717":{},"4775":{},"4834":{},"4896":{},"4966":{},"5120":{},"5190":{},"5265":{},"5399":{},"5583":{},"5643":{},"5749":{},"5805":{},"5872":{},"6010":{},"6198":{},"6290":{},"6407":{},"6473":{},"6608":{},"6671":{},"6749":{},"6921":{},"6970":{},"7037":{}},"parent":{}}],["checkindex",{"_index":32,"name":{"32":{},"113":{},"186":{},"482":{},"696":{},"1166":{},"1718":{},"2404":{},"2841":{},"3367":{},"3445":{},"3508":{},"5155":{},"5231":{},"6636":{},"6886":{}},"parent":{}}],["checkmetrics",{"_index":731,"name":{"1990":{},"6380":{}},"parent":{}}],["checkmodifiercontext",{"_index":35,"name":{"35":{},"116":{},"189":{},"337":{},"485":{},"699":{},"915":{},"1058":{},"1169":{},"1721":{},"1885":{},"2138":{},"2350":{},"2407":{},"2581":{},"2788":{},"2844":{},"3152":{},"3318":{},"3370":{},"3448":{},"3511":{},"3842":{},"4501":{},"5097":{},"5158":{},"5234":{},"5561":{},"5988":{},"6176":{},"6264":{},"6586":{},"6639":{},"6889":{}},"parent":{}}],["checkstave",{"_index":131,"name":{"268":{},"768":{},"846":{},"988":{},"1821":{},"1996":{},"2068":{},"2293":{},"2520":{},"2645":{},"2719":{},"2935":{},"3081":{},"3252":{},"3772":{},"4019":{},"4258":{},"4444":{},"4563":{},"4620":{},"4685":{},"4743":{},"4864":{},"5030":{},"5500":{},"5918":{},"6106":{},"6385":{},"6441":{},"6517":{},"7015":{}},"parent":{}}],["checkstem",{"_index":679,"name":{"1779":{},"2258":{},"2480":{},"4409":{},"4987":{},"5460":{}},"parent":{}}],["checktickcontext",{"_index":185,"name":{"326":{},"904":{},"1047":{},"1875":{},"2127":{},"2340":{},"2571":{},"2777":{},"3140":{},"3307":{},"3831":{},"4491":{},"5086":{},"5551":{},"5977":{},"6165":{},"6251":{},"6575":{}},"parent":{}}],["chord",{"_index":406,"name":{"1225":{},"1262":{}},"parent":{}}],["chordornote",{"_index":405,"name":{"1224":{}},"parent":{}}],["chordsymbol",{"_index":320,"name":{"634":{},"1412":{},"1448":{},"6782":{}},"parent":{"635":{},"636":{},"637":{},"638":{},"639":{},"640":{},"641":{},"642":{},"643":{},"644":{},"645":{},"646":{},"647":{},"648":{},"649":{},"650":{},"651":{},"652":{},"653":{},"654":{},"655":{},"656":{},"657":{},"658":{},"659":{},"660":{},"661":{},"662":{},"663":{},"664":{},"665":{},"666":{},"667":{},"668":{},"669":{},"670":{},"671":{},"672":{},"673":{},"674":{},"675":{},"676":{},"677":{},"678":{},"679":{},"680":{},"681":{},"682":{},"683":{},"684":{},"685":{},"686":{},"687":{},"688":{},"689":{},"690":{},"691":{},"692":{},"693":{},"694":{},"695":{},"696":{},"697":{},"698":{},"699":{},"700":{},"701":{},"702":{},"703":{},"704":{},"705":{},"706":{},"707":{},"708":{},"709":{},"710":{},"711":{},"712":{},"713":{},"714":{},"715":{},"716":{},"717":{},"718":{},"719":{},"720":{},"721":{},"722":{},"723":{},"724":{},"725":{},"726":{},"727":{},"728":{},"729":{},"730":{},"731":{},"732":{},"733":{},"734":{},"735":{},"736":{},"737":{},"738":{},"739":{},"740":{},"741":{},"742":{}}}],["chordsymbolblock",{"_index":307,"name":{"609":{}},"parent":{"610":{},"611":{},"612":{},"613":{},"614":{},"615":{},"616":{},"617":{}}}],["chordsymbolhorizontaljustify",{"_index":313,"name":{"618":{},"1520":{}},"parent":{"619":{},"620":{},"621":{},"622":{}}}],["chordsymbolverticaljustify",{"_index":314,"name":{"623":{},"1521":{}},"parent":{"624":{},"625":{}}}],["classes",{"_index":470,"name":{"1326":{}},"parent":{}}],["clear",{"_index":275,"name":{"573":{},"3664":{},"3684":{},"5320":{}},"parent":{}}],["clearrect",{"_index":290,"name":{"589":{},"3697":{},"5323":{}},"parent":{}}],["clef",{"_index":361,"name":{"747":{},"760":{},"1273":{},"1301":{},"1449":{},"1578":{},"2181":{},"4334":{},"5424":{},"6783":{}},"parent":{"748":{},"749":{},"750":{},"751":{},"752":{},"753":{},"754":{},"755":{},"760":{},"761":{},"762":{},"763":{},"764":{},"765":{},"766":{},"767":{},"768":{},"769":{},"770":{},"771":{},"772":{},"773":{},"774":{},"775":{},"776":{},"777":{},"778":{},"779":{},"780":{},"781":{},"782":{},"783":{},"784":{},"785":{},"786":{},"787":{},"788":{},"789":{},"790":{},"791":{},"792":{},"793":{},"794":{},"795":{},"796":{},"797":{},"798":{},"799":{},"800":{},"801":{},"802":{},"803":{},"804":{},"805":{},"806":{},"807":{},"808":{},"809":{},"810":{}}}],["clef.__type",{"_index":363,"name":{},"parent":{"756":{},"757":{},"758":{},"759":{}}}],["clefnote",{"_index":370,"name":{"811":{},"1404":{},"1450":{},"6784":{}},"parent":{"812":{},"813":{},"814":{},"815":{},"816":{},"817":{},"818":{},"819":{},"820":{},"821":{},"822":{},"823":{},"824":{},"825":{},"826":{},"827":{},"841":{},"842":{},"843":{},"844":{},"845":{},"846":{},"847":{},"848":{},"849":{},"850":{},"851":{},"852":{},"853":{},"854":{},"855":{},"856":{},"857":{},"858":{},"859":{},"860":{},"861":{},"862":{},"863":{},"864":{},"865":{},"866":{},"867":{},"868":{},"869":{},"870":{},"871":{},"872":{},"873":{},"874":{},"875":{},"876":{},"877":{},"878":{},"879":{},"880":{},"881":{},"882":{},"883":{},"884":{},"885":{},"886":{},"887":{},"888":{},"889":{},"890":{},"891":{},"892":{},"893":{},"894":{},"895":{},"896":{},"897":{},"898":{},"899":{},"900":{},"901":{},"902":{},"903":{},"904":{},"905":{},"906":{},"907":{},"908":{},"909":{},"910":{},"911":{},"912":{},"913":{},"914":{},"915":{},"916":{},"917":{},"918":{},"919":{},"920":{},"921":{},"922":{},"923":{},"924":{},"925":{},"926":{},"927":{},"928":{},"929":{},"930":{},"931":{},"932":{},"933":{},"934":{},"935":{},"936":{},"937":{},"938":{},"939":{},"940":{},"941":{},"942":{},"943":{},"944":{},"945":{},"946":{},"947":{}}}],["clefnote.__type",{"_index":372,"name":{},"parent":{"828":{},"829":{},"830":{},"831":{},"832":{},"833":{},"834":{},"835":{},"836":{},"837":{},"838":{},"839":{},"840":{}}}],["clefproperties",{"_index":569,"name":{"1555":{}},"parent":{}}],["cleftype",{"_index":359,"name":{"743":{}},"parent":{"744":{},"745":{},"746":{}}}],["clone",{"_index":258,"name":{"550":{},"1690":{}},"parent":{}}],["closegroup",{"_index":277,"name":{"575":{},"3711":{},"5306":{}},"parent":{}}],["closepath",{"_index":299,"name":{"598":{},"3706":{},"5330":{}},"parent":{}}],["coda_left",{"_index":1109,"name":{"4540":{}},"parent":{}}],["coda_right",{"_index":1110,"name":{"4541":{}},"parent":{}}],["code",{"_index":98,"name":{"162":{},"745":{},"756":{},"1931":{},"1975":{},"3022":{},"6365":{},"6851":{}},"parent":{}}],["code_flag_downstem",{"_index":705,"name":{"1933":{}},"parent":{}}],["code_flag_upstem",{"_index":704,"name":{"1932":{}},"parent":{}}],["code_head",{"_index":696,"name":{"1921":{}},"parent":{}}],["color",{"_index":945,"name":{"3610":{},"4191":{},"5839":{}},"parent":{}}],["column",{"_index":2,"name":{"2":{}},"parent":{}}],["comma",{"_index":425,"name":{"1248":{}},"parent":{}}],["commithook",{"_index":398,"name":{"1214":{}},"parent":{"1215":{}}}],["commithooks",{"_index":440,"name":{"1280":{},"1298":{}},"parent":{}}],["commitpiece",{"_index":453,"name":{"1294":{}},"parent":{}}],["constructor",{"_index":17,"name":{"17":{},"102":{},"174":{},"239":{},"382":{},"464":{},"536":{},"553":{},"569":{},"665":{},"753":{},"815":{},"959":{},"1109":{},"1157":{},"1217":{},"1261":{},"1275":{},"1306":{},"1336":{},"1388":{},"1558":{},"1655":{},"1675":{},"1706":{},"1770":{},"1973":{},"2039":{},"2201":{},"2390":{},"2456":{},"2617":{},"2628":{},"2692":{},"2834":{},"2901":{},"2930":{},"3002":{},"3057":{},"3214":{},"3358":{},"3428":{},"3500":{},"3584":{},"3607":{},"3663":{},"3683":{},"3736":{},"3743":{},"3896":{},"4009":{},"4070":{},"4129":{},"4183":{},"4254":{},"4353":{},"4553":{},"4612":{},"4674":{},"4734":{},"4796":{},"4858":{},"4931":{},"4983":{},"5140":{},"5218":{},"5286":{},"5372":{},"5436":{},"5605":{},"5662":{},"5767":{},"5835":{},"5891":{},"6076":{},"6226":{},"6318":{},"6356":{},"6429":{},"6490":{},"6626":{},"6686":{},"6710":{},"6850":{},"6861":{},"6875":{},"6938":{},"6995":{}},"parent":{}}],["contains",{"_index":1355,"name":{"6855":{}},"parent":{}}],["context",{"_index":630,"name":{"1636":{}},"parent":{}}],["context2d",{"_index":272,"name":{"570":{}},"parent":{}}],["contextbuilder",{"_index":969,"name":{"3720":{}},"parent":{}}],["convertacclines",{"_index":807,"name":{"2633":{}},"parent":{}}],["convertsizetopixelvalue",{"_index":602,"name":{"1606":{}},"parent":{}}],["convertsizetopointvalue",{"_index":603,"name":{"1607":{}},"parent":{}}],["converttoalteracclist",{"_index":810,"name":{"2638":{}},"parent":{}}],["converttocancelacclist",{"_index":805,"name":{"2631":{}},"parent":{}}],["converttoglyph",{"_index":803,"name":{"2629":{}},"parent":{}}],["copy",{"_index":249,"name":{"535":{},"1691":{}},"parent":{}}],["cp1",{"_index":1137,"name":{"4802":{},"5612":{},"5773":{}},"parent":{}}],["cp2",{"_index":1133,"name":{"4799":{},"5609":{},"5770":{}},"parent":{}}],["cps",{"_index":383,"name":{"1094":{}},"parent":{}}],["create",{"_index":1191,"name":{"5304":{},"6038":{}},"parent":{}}],["createhammeron",{"_index":1222,"name":{"5603":{},"5764":{}},"parent":{}}],["createmodifiercontexts",{"_index":647,"name":{"1659":{}},"parent":{}}],["createpulloff",{"_index":1223,"name":{"5604":{},"5765":{}},"parent":{}}],["createscalemap",{"_index":873,"name":{"3013":{}},"parent":{}}],["createslidedown",{"_index":1221,"name":{"5602":{}},"parent":{}}],["createslideup",{"_index":1220,"name":{"5601":{}},"parent":{}}],["createsostenuto",{"_index":943,"name":{"3605":{}},"parent":{}}],["createsustain",{"_index":942,"name":{"3604":{}},"parent":{}}],["createtickcontexts",{"_index":648,"name":{"1660":{}},"parent":{}}],["createunacorda",{"_index":944,"name":{"3606":{}},"parent":{}}],["cresc",{"_index":1061,"name":{"4125":{}},"parent":{}}],["crescendo",{"_index":377,"name":{"954":{},"1451":{},"6785":{}},"parent":{"955":{},"956":{},"957":{},"958":{},"959":{},"960":{},"961":{},"962":{},"963":{},"964":{},"965":{},"966":{},"967":{},"968":{},"969":{},"983":{},"984":{},"985":{},"986":{},"987":{},"988":{},"989":{},"990":{},"991":{},"992":{},"993":{},"994":{},"995":{},"996":{},"997":{},"998":{},"999":{},"1000":{},"1001":{},"1002":{},"1003":{},"1004":{},"1005":{},"1006":{},"1007":{},"1008":{},"1009":{},"1010":{},"1011":{},"1012":{},"1013":{},"1014":{},"1015":{},"1016":{},"1017":{},"1018":{},"1019":{},"1020":{},"1021":{},"1022":{},"1023":{},"1024":{},"1025":{},"1026":{},"1027":{},"1028":{},"1029":{},"1030":{},"1031":{},"1032":{},"1033":{},"1034":{},"1035":{},"1036":{},"1037":{},"1038":{},"1039":{},"1040":{},"1041":{},"1042":{},"1043":{},"1044":{},"1045":{},"1046":{},"1047":{},"1048":{},"1049":{},"1050":{},"1051":{},"1052":{},"1053":{},"1054":{},"1055":{},"1056":{},"1057":{},"1058":{},"1059":{},"1060":{},"1061":{},"1062":{},"1063":{},"1064":{},"1065":{},"1066":{},"1067":{},"1068":{},"1069":{},"1070":{},"1071":{},"1072":{},"1073":{},"1074":{},"1075":{},"1076":{},"1077":{},"1078":{},"1079":{},"1080":{},"1081":{},"1082":{},"1083":{},"1084":{},"1085":{},"1086":{},"1087":{},"1088":{},"1089":{},"1090":{},"1091":{},"1092":{}}}],["crescendo.__type",{"_index":381,"name":{},"parent":{"970":{},"971":{},"972":{},"973":{},"974":{},"975":{},"976":{},"977":{},"978":{},"979":{},"980":{},"981":{},"982":{}}}],["crescendoparams",{"_index":373,"name":{"948":{}},"parent":{"949":{},"950":{},"951":{},"952":{},"953":{}}}],["current_cache_key",{"_index":717,"name":{"1963":{},"6346":{}},"parent":{}}],["curve",{"_index":390,"name":{"1104":{},"1426":{},"1452":{},"6786":{}},"parent":{"1105":{},"1106":{},"1107":{},"1108":{},"1109":{},"1110":{},"1111":{},"1112":{},"1113":{},"1114":{},"1115":{},"1116":{},"1117":{},"1118":{},"1119":{},"1120":{},"1121":{},"1122":{},"1123":{},"1124":{},"1125":{},"1126":{},"1127":{},"1128":{},"1129":{},"1130":{},"1131":{},"1132":{},"1133":{},"1134":{},"1135":{},"1136":{},"1137":{},"1138":{},"1139":{},"1140":{},"1141":{},"1142":{},"1143":{},"1144":{},"1145":{},"1146":{},"1147":{},"1148":{}}}],["curveoptions",{"_index":382,"name":{"1093":{}},"parent":{"1094":{},"1095":{},"1096":{},"1097":{},"1098":{},"1099":{},"1100":{}}}],["curveposition",{"_index":387,"name":{"1101":{},"1524":{}},"parent":{"1102":{},"1103":{}}}],["custom_glyph_code",{"_index":893,"name":{"3195":{}},"parent":{}}],["customtypes",{"_index":887,"name":{"3042":{}},"parent":{}}],["dash",{"_index":1235,"name":{"5843":{}},"parent":{}}],["dashed",{"_index":1231,"name":{"5838":{}},"parent":{}}],["data",{"_index":577,"name":{"1566":{}},"parent":{}}],["dblsharpline",{"_index":5,"name":{"5":{}},"parent":{}}],["dc",{"_index":1113,"name":{"4544":{}},"parent":{}}],["dc_al_coda",{"_index":1114,"name":{"4545":{}},"parent":{}}],["dc_al_fine",{"_index":1115,"name":{"4546":{}},"parent":{}}],["debug",{"_index":9,"name":{"9":{},"91":{},"167":{},"235":{},"635":{},"748":{},"955":{},"1305":{},"1385":{},"1648":{},"2193":{},"2384":{},"2900":{},"3210":{},"3416":{},"3583":{},"3594":{},"4343":{},"4924":{},"5828":{},"5886":{},"6036":{},"6935":{}},"parent":{}}],["debugformatter",{"_index":1204,"name":{"5359":{}},"parent":{}}],["debugnotemetrics",{"_index":1201,"name":{"5355":{}},"parent":{}}],["decresc",{"_index":1063,"name":{"4126":{}},"parent":{}}],["defaultpadding",{"_index":992,"name":{"3893":{},"5659":{}},"parent":{}}],["defaults",{"_index":459,"name":{"1307":{}},"parent":{}}],["defined",{"_index":1346,"name":{"6842":{}},"parent":{}}],["denominator",{"_index":658,"name":{"1677":{}},"parent":{}}],["description",{"_index":1241,"name":{"6034":{}},"parent":{}}],["detach",{"_index":1320,"name":{"6713":{}},"parent":{}}],["details",{"_index":1208,"name":{"5366":{}},"parent":{}}],["deviation",{"_index":1263,"name":{"6222":{}},"parent":{}}],["diatonic_accidentals",{"_index":858,"name":{"2996":{}},"parent":{}}],["diatonic_intervals",{"_index":857,"name":{"2995":{}},"parent":{}}],["digits",{"_index":585,"name":{"1580":{}},"parent":{}}],["disabledefaultregistry",{"_index":956,"name":{"3662":{}},"parent":{}}],["displaced",{"_index":876,"name":{"3025":{},"3198":{}},"parent":{}}],["displaced_x",{"_index":1092,"name":{"4307":{}},"parent":{}}],["divide",{"_index":663,"name":{"1684":{}},"parent":{}}],["dot",{"_index":394,"name":{"1149":{},"1249":{},"1453":{},"6787":{}},"parent":{"1150":{},"1151":{},"1152":{},"1153":{},"1154":{},"1155":{},"1156":{},"1157":{},"1158":{},"1159":{},"1160":{},"1161":{},"1162":{},"1163":{},"1164":{},"1165":{},"1166":{},"1167":{},"1168":{},"1169":{},"1170":{},"1171":{},"1172":{},"1173":{},"1174":{},"1175":{},"1176":{},"1177":{},"1178":{},"1179":{},"1180":{},"1181":{},"1182":{},"1183":{},"1184":{},"1185":{},"1186":{},"1187":{},"1188":{},"1189":{},"1190":{},"1191":{},"1192":{},"1193":{},"1194":{},"1195":{},"1196":{},"1197":{},"1198":{},"1199":{},"1200":{},"1201":{},"1202":{},"1203":{},"1204":{},"1205":{},"1206":{},"1207":{},"1208":{},"1209":{},"1210":{},"1211":{},"1212":{},"1213":{}}}],["dot_shifty",{"_index":697,"name":{"1922":{}},"parent":{}}],["dots",{"_index":409,"name":{"1230":{},"1264":{},"2185":{},"3037":{},"3043":{},"3049":{},"3205":{},"4338":{},"4668":{},"5428":{},"6066":{}},"parent":{}}],["double",{"_index":1045,"name":{"3997":{}},"parent":{}}],["down",{"_index":235,"name":{"459":{},"3727":{},"4927":{}},"parent":{}}],["draw",{"_index":27,"name":{"27":{},"106":{},"179":{},"244":{},"251":{},"415":{},"475":{},"690":{},"764":{},"822":{},"829":{},"964":{},"971":{},"1114":{},"1160":{},"1345":{},"1435":{},"1711":{},"1775":{},"1805":{},"1980":{},"2044":{},"2051":{},"2204":{},"2277":{},"2399":{},"2476":{},"2503":{},"2641":{},"2695":{},"2702":{},"2854":{},"2938":{},"3064":{},"3161":{},"3228":{},"3235":{},"3362":{},"3438":{},"3502":{},"3619":{},"3748":{},"3755":{},"3958":{},"4012":{},"4079":{},"4135":{},"4202":{},"4269":{},"4405":{},"4428":{},"4556":{},"4616":{},"4681":{},"4739":{},"4812":{},"4860":{},"4945":{},"5013":{},"5106":{},"5148":{},"5224":{},"5378":{},"5456":{},"5483":{},"5621":{},"5725":{},"5783":{},"5851":{},"5894":{},"5901":{},"6082":{},"6089":{},"6276":{},"6370":{},"6437":{},"6493":{},"6500":{},"6629":{},"6727":{},"6879":{},"6948":{},"7016":{}},"parent":{}}],["draw_dots",{"_index":116,"name":{"252":{},"830":{},"972":{},"1806":{},"2052":{},"2278":{},"2504":{},"2703":{},"3065":{},"3236":{},"3756":{},"4429":{},"5014":{},"5484":{},"5902":{},"6090":{},"6501":{}},"parent":{}}],["draw_end_arrow",{"_index":1077,"name":{"4193":{}},"parent":{}}],["draw_start_arrow",{"_index":1076,"name":{"4192":{}},"parent":{}}],["draw_stem",{"_index":117,"name":{"253":{},"831":{},"973":{},"1807":{},"2053":{},"2279":{},"2505":{},"2704":{},"3066":{},"3237":{},"3757":{},"4430":{},"5015":{},"5485":{},"5903":{},"6091":{},"6502":{}},"parent":{}}],["draw_stem_through_stave",{"_index":114,"name":{"250":{},"828":{},"970":{},"1804":{},"2050":{},"2276":{},"2502":{},"2701":{},"3063":{},"3234":{},"3754":{},"4427":{},"5012":{},"5482":{},"5900":{},"6088":{},"6499":{}},"parent":{}}],["draw_width",{"_index":232,"name":{"455":{}},"parent":{}}],["drawbracketed",{"_index":950,"name":{"3617":{}},"parent":{}}],["drawcodafixed",{"_index":1123,"name":{"4557":{}},"parent":{}}],["drawdashedline",{"_index":977,"name":{"3735":{}},"parent":{}}],["drawdot",{"_index":965,"name":{"3673":{}},"parent":{}}],["drawflag",{"_index":782,"name":{"2252":{},"2472":{},"4400":{},"5452":{}},"parent":{}}],["drawledgerlines",{"_index":780,"name":{"2249":{},"4397":{}},"parent":{}}],["drawline",{"_index":841,"name":{"2936":{}},"parent":{}}],["drawmodifiers",{"_index":740,"name":{"2043":{},"2250":{},"2473":{},"3747":{},"4398":{},"5453":{}},"parent":{}}],["drawnoteheads",{"_index":783,"name":{"2253":{},"4401":{}},"parent":{}}],["drawpositions",{"_index":796,"name":{"2475":{},"5455":{}},"parent":{}}],["drawrepeatbar",{"_index":1052,"name":{"4015":{}},"parent":{}}],["drawsignofixed",{"_index":1124,"name":{"4558":{}},"parent":{}}],["drawstem",{"_index":693,"name":{"1798":{},"2254":{},"2496":{},"4402":{},"5006":{},"5476":{}},"parent":{}}],["drawstemthrough",{"_index":795,"name":{"2474":{},"5454":{}},"parent":{}}],["drawsymbols",{"_index":842,"name":{"2937":{}},"parent":{}}],["drawsymboltext",{"_index":1125,"name":{"4559":{}},"parent":{}}],["drawtext",{"_index":951,"name":{"3618":{}},"parent":{}}],["drawverticalbar",{"_index":1050,"name":{"4013":{}},"parent":{}}],["drawverticalendbar",{"_index":1051,"name":{"4014":{}},"parent":{}}],["drawwithstyle",{"_index":53,"name":{"53":{},"134":{},"207":{},"345":{},"423":{},"502":{},"717":{},"784":{},"923":{},"1066":{},"1122":{},"1187":{},"1344":{},"1739":{},"1893":{},"2005":{},"2146":{},"2357":{},"2425":{},"2589":{},"2661":{},"2796":{},"2863":{},"2946":{},"3160":{},"3326":{},"3388":{},"3466":{},"3529":{},"3627":{},"3850":{},"3969":{},"4037":{},"4087":{},"4143":{},"4210":{},"4277":{},"4508":{},"4581":{},"4638":{},"4703":{},"4761":{},"4820":{},"4882":{},"4953":{},"5105":{},"5176":{},"5251":{},"5386":{},"5569":{},"5629":{},"5736":{},"5791":{},"5858":{},"5996":{},"6184":{},"6275":{},"6393":{},"6459":{},"6594":{},"6657":{},"6735":{},"6907":{},"6956":{},"7024":{}},"parent":{}}],["ds",{"_index":1116,"name":{"4547":{}},"parent":{}}],["ds_al_coda",{"_index":1117,"name":{"4548":{}},"parent":{}}],["ds_al_fine",{"_index":1118,"name":{"4549":{}},"parent":{}}],["duration",{"_index":410,"name":{"1232":{},"1263":{},"2183":{},"3036":{},"3040":{},"3047":{},"3204":{},"4336":{},"4667":{},"5426":{},"6064":{},"6212":{}},"parent":{}}],["duration_override",{"_index":748,"name":{"2188":{},"3052":{},"3208":{},"4341":{},"5431":{},"6069":{}},"parent":{}}],["durations",{"_index":422,"name":{"1244":{}},"parent":{}}],["durationtoticks",{"_index":571,"name":{"1557":{}},"parent":{}}],["dval",{"_index":416,"name":{"1238":{}},"parent":{}}],["easyscore",{"_index":458,"name":{"1304":{},"1432":{},"1454":{}},"parent":{"1305":{},"1306":{},"1307":{},"1308":{},"1309":{},"1310":{},"1311":{},"1312":{},"1313":{},"1314":{},"1315":{},"1316":{},"1317":{},"1318":{},"1319":{},"1320":{},"1321":{}}}],["easyscoredefaults",{"_index":456,"name":{"1300":{}},"parent":{"1301":{},"1302":{},"1303":{}}}],["easyscoregrammar",{"_index":399,"name":{"1216":{}},"parent":{"1217":{},"1218":{},"1219":{},"1220":{},"1221":{},"1222":{},"1223":{},"1224":{},"1225":{},"1226":{},"1227":{},"1228":{},"1229":{},"1230":{},"1231":{},"1232":{},"1233":{},"1234":{},"1235":{},"1236":{},"1237":{},"1238":{},"1239":{},"1240":{},"1241":{},"1242":{},"1243":{},"1244":{},"1245":{},"1246":{},"1247":{},"1248":{},"1249":{},"1250":{},"1251":{},"1252":{},"1253":{},"1254":{},"1255":{}}}],["easyscorehook",{"_index":103,"name":{"170":{},"1703":{}},"parent":{}}],["easyscoreoptions",{"_index":454,"name":{"1295":{}},"parent":{"1296":{},"1297":{},"1298":{},"1299":{}}}],["el",{"_index":469,"name":{"1324":{}},"parent":{}}],["element",{"_index":475,"name":{"1333":{},"1455":{},"5287":{},"6788":{}},"parent":{"1334":{},"1335":{},"1336":{},"1337":{},"1338":{},"1339":{},"1340":{},"1341":{},"1342":{},"1343":{},"1344":{},"1345":{},"1346":{},"1347":{},"1348":{},"1349":{},"1350":{},"1351":{},"1352":{},"1353":{},"1354":{},"1355":{},"1356":{},"1357":{},"1358":{},"1359":{},"1360":{},"1361":{},"1362":{},"1363":{},"1364":{},"1365":{},"1366":{},"1367":{},"1368":{},"1369":{},"1370":{},"1371":{}}}],["elementattributes",{"_index":467,"name":{"1322":{}},"parent":{"1323":{},"1324":{},"1325":{},"1326":{}}}],["elementid",{"_index":481,"name":{"1378":{}},"parent":{}}],["elements",{"_index":439,"name":{"1277":{}},"parent":{}}],["elementstyle",{"_index":471,"name":{"1327":{}},"parent":{"1328":{},"1329":{},"1330":{},"1331":{},"1332":{}}}],["enabledefaultregistry",{"_index":955,"name":{"3661":{}},"parent":{}}],["end",{"_index":1046,"name":{"3998":{},"4249":{},"4851":{}},"parent":{}}],["end_x",{"_index":375,"name":{"952":{}},"parent":{}}],["engravingfontresolution",{"_index":324,"name":{"644":{}},"parent":{}}],["eol",{"_index":431,"name":{"1255":{}},"parent":{}}],["equals",{"_index":428,"name":{"1252":{},"1685":{}},"parent":{}}],["errorpos",{"_index":930,"name":{"3578":{}},"parent":{}}],["evaluate",{"_index":650,"name":{"1663":{}},"parent":{}}],["expect",{"_index":916,"name":{"3564":{},"3592":{}},"parent":{}}],["expectone",{"_index":935,"name":{"3589":{}},"parent":{}}],["expectoneormore",{"_index":936,"name":{"3590":{}},"parent":{}}],["expectzeroormore",{"_index":937,"name":{"3591":{}},"parent":{}}],["extend_left",{"_index":119,"name":{"255":{},"833":{},"975":{},"1809":{},"2055":{},"2281":{},"2507":{},"2706":{},"3068":{},"3239":{},"3759":{},"4432":{},"5017":{},"5487":{},"5905":{},"6093":{},"6504":{}},"parent":{}}],["extend_right",{"_index":120,"name":{"256":{},"834":{},"976":{},"1810":{},"2056":{},"2282":{},"2508":{},"2707":{},"3069":{},"3240":{},"3760":{},"4433":{},"5018":{},"5488":{},"5906":{},"6094":{},"6505":{}},"parent":{}}],["extra_stroke_scale",{"_index":1300,"name":{"6628":{}},"parent":{}}],["factory",{"_index":438,"name":{"1276":{},"1296":{},"1309":{},"1384":{},"1456":{},"5357":{}},"parent":{"1385":{},"1386":{},"1387":{},"1388":{},"1389":{},"1390":{},"1391":{},"1392":{},"1393":{},"1394":{},"1395":{},"1396":{},"1397":{},"1398":{},"1399":{},"1400":{},"1401":{},"1402":{},"1403":{},"1404":{},"1405":{},"1406":{},"1407":{},"1408":{},"1409":{},"1410":{},"1411":{},"1412":{},"1413":{},"1414":{},"1415":{},"1416":{},"1417":{},"1418":{},"1419":{},"1420":{},"1421":{},"1422":{},"1423":{},"1424":{},"1425":{},"1426":{},"1427":{},"1428":{},"1429":{},"1430":{},"1431":{},"1432":{},"1433":{},"1434":{},"1435":{}}}],["factoryoptions",{"_index":476,"name":{"1372":{}},"parent":{"1373":{},"1374":{},"1376":{},"1377":{},"1383":{}}}],["factoryoptions.__type",{"_index":479,"name":{},"parent":{"1375":{},"1378":{},"1379":{},"1380":{},"1381":{},"1382":{}}}],["family",{"_index":572,"name":{"1560":{},"6024":{}},"parent":{}}],["fetchmusicfont",{"_index":552,"name":{"1537":{}},"parent":{}}],["fill",{"_index":297,"name":{"596":{},"3704":{},"5331":{}},"parent":{}}],["fill_style",{"_index":987,"name":{"3884":{}},"parent":{}}],["fillrect",{"_index":289,"name":{"588":{},"3696":{},"5322":{}},"parent":{}}],["fillstyle",{"_index":304,"name":{"603":{},"1330":{},"3714":{},"5337":{}},"parent":{}}],["filltext",{"_index":301,"name":{"600":{},"3707":{},"5334":{}},"parent":{}}],["fine",{"_index":1119,"name":{"4550":{}},"parent":{}}],["fingering",{"_index":500,"name":{"1416":{}},"parent":{}}],["first_indices",{"_index":1069,"name":{"4172":{},"4791":{}},"parent":{}}],["first_note",{"_index":1068,"name":{"4171":{},"4789":{}},"parent":{}}],["first_x_shift",{"_index":1138,"name":{"4803":{},"5613":{},"5774":{}},"parent":{}}],["flag",{"_index":706,"name":{"1934":{}},"parent":{}}],["flat_beam_offset",{"_index":202,"name":{"385":{}},"parent":{}}],["flat_beams",{"_index":204,"name":{"386":{}},"parent":{}}],["flatline",{"_index":4,"name":{"4":{}},"parent":{}}],["flow",{"_index":514,"name":{"1436":{},"6853":{}},"parent":{"1437":{},"1438":{},"1439":{},"1440":{},"1441":{},"1442":{},"1443":{},"1444":{},"1445":{},"1446":{},"1447":{},"1448":{},"1449":{},"1450":{},"1451":{},"1452":{},"1453":{},"1454":{},"1455":{},"1456":{},"1457":{},"1458":{},"1459":{},"1460":{},"1461":{},"1462":{},"1463":{},"1464":{},"1465":{},"1466":{},"1467":{},"1468":{},"1469":{},"1470":{},"1471":{},"1472":{},"1473":{},"1474":{},"1475":{},"1476":{},"1477":{},"1478":{},"1479":{},"1480":{},"1481":{},"1482":{},"1483":{},"1484":{},"1485":{},"1486":{},"1487":{},"1488":{},"1489":{},"1490":{},"1491":{},"1492":{},"1493":{},"1494":{},"1495":{},"1496":{},"1497":{},"1498":{},"1499":{},"1500":{},"1501":{},"1502":{},"1503":{},"1504":{},"1505":{},"1506":{},"1507":{},"1508":{},"1509":{},"1510":{},"1511":{},"1512":{},"1513":{},"1514":{},"1515":{},"1516":{},"1517":{},"1518":{},"1519":{},"1520":{},"1521":{},"1522":{},"1523":{},"1524":{},"1525":{},"1526":{},"1527":{},"1528":{},"1529":{},"1530":{},"1531":{},"1532":{},"1533":{},"1534":{},"1535":{},"1536":{},"1537":{},"1538":{},"1539":{},"1540":{},"1541":{},"1542":{},"1543":{},"1544":{},"1545":{},"1546":{},"1547":{},"1548":{},"1549":{},"1550":{},"1551":{},"1552":{},"1553":{},"1554":{},"1555":{},"1556":{},"1557":{},"1558":{}}}],["font",{"_index":68,"name":{"68":{},"149":{},"222":{},"261":{},"360":{},"438":{},"517":{},"607":{},"732":{},"799":{},"839":{},"936":{},"981":{},"1081":{},"1137":{},"1202":{},"1360":{},"1383":{},"1457":{},"1601":{},"1754":{},"1815":{},"1908":{},"1955":{},"2020":{},"2061":{},"2160":{},"2287":{},"2371":{},"2440":{},"2513":{},"2604":{},"2676":{},"2712":{},"2811":{},"2878":{},"2961":{},"3074":{},"3176":{},"3245":{},"3340":{},"3403":{},"3481":{},"3544":{},"3642":{},"3718":{},"3765":{},"3864":{},"3983":{},"4052":{},"4102":{},"4158":{},"4225":{},"4292":{},"4438":{},"4522":{},"4596":{},"4653":{},"4718":{},"4776":{},"4835":{},"4897":{},"4967":{},"5023":{},"5121":{},"5191":{},"5266":{},"5341":{},"5400":{},"5493":{},"5584":{},"5644":{},"5750":{},"5806":{},"5873":{},"5911":{},"6011":{},"6060":{},"6099":{},"6199":{},"6291":{},"6408":{},"6474":{},"6510":{},"6609":{},"6672":{},"6750":{},"6922":{},"6971":{},"7038":{}},"parent":{"1602":{},"1603":{},"1604":{},"1605":{},"1606":{},"1607":{},"1608":{},"1609":{},"1610":{},"1611":{},"1612":{},"1613":{},"1614":{},"1615":{},"1616":{},"1617":{},"1618":{},"1619":{},"1620":{},"1621":{},"1622":{},"1623":{},"1624":{},"1625":{},"1626":{},"1627":{},"1628":{}}}],["font_scale",{"_index":22,"name":{"22":{},"178":{},"3433":{},"5221":{}},"parent":{}}],["fontdata",{"_index":579,"name":{"1568":{}},"parent":{"1569":{},"1570":{},"1571":{},"1572":{}}}],["fontfamily",{"_index":580,"name":{"1570":{}},"parent":{}}],["fontglyph",{"_index":586,"name":{"1585":{}},"parent":{"1586":{},"1587":{},"1588":{},"1589":{},"1590":{},"1591":{},"1592":{},"1593":{},"1594":{}}}],["fontinfo",{"_index":72,"name":{"72":{},"153":{},"226":{},"364":{},"442":{},"521":{},"735":{},"803":{},"940":{},"1085":{},"1141":{},"1206":{},"1364":{},"1559":{},"1758":{},"1912":{},"2024":{},"2164":{},"2375":{},"2444":{},"2608":{},"2680":{},"2815":{},"2882":{},"2965":{},"3180":{},"3344":{},"3407":{},"3485":{},"3548":{},"3646":{},"3868":{},"3987":{},"4056":{},"4106":{},"4162":{},"4229":{},"4296":{},"4526":{},"4600":{},"4657":{},"4722":{},"4780":{},"4839":{},"4901":{},"4971":{},"5125":{},"5195":{},"5270":{},"5404":{},"5588":{},"5648":{},"5754":{},"5810":{},"5877":{},"6015":{},"6203":{},"6295":{},"6412":{},"6478":{},"6613":{},"6676":{},"6754":{},"6926":{},"6975":{},"7042":{}},"parent":{"1560":{},"1561":{},"1562":{},"1563":{}}}],["fontmetrics",{"_index":582,"name":{"1573":{}},"parent":{"1574":{},"1575":{},"1576":{},"1577":{},"1578":{},"1579":{},"1580":{},"1581":{},"1582":{},"1583":{},"1584":{}}}],["fontmodule",{"_index":576,"name":{"1564":{}},"parent":{"1565":{}}}],["fontmodule.__type",{"_index":578,"name":{},"parent":{"1566":{},"1567":{}}}],["fontsize",{"_index":75,"name":{"75":{},"156":{},"229":{},"367":{},"445":{},"524":{},"738":{},"806":{},"943":{},"1088":{},"1144":{},"1209":{},"1367":{},"1761":{},"1915":{},"2027":{},"2167":{},"2378":{},"2447":{},"2611":{},"2683":{},"2818":{},"2885":{},"2968":{},"3183":{},"3347":{},"3410":{},"3488":{},"3551":{},"3649":{},"3871":{},"3990":{},"4059":{},"4109":{},"4165":{},"4232":{},"4299":{},"4529":{},"4603":{},"4660":{},"4725":{},"4783":{},"4842":{},"4904":{},"4974":{},"5128":{},"5198":{},"5273":{},"5407":{},"5591":{},"5651":{},"5757":{},"5813":{},"5880":{},"6018":{},"6206":{},"6298":{},"6415":{},"6481":{},"6616":{},"6679":{},"6757":{},"6929":{},"6978":{},"7045":{}},"parent":{}}],["fontsizeinpixels",{"_index":77,"name":{"77":{},"158":{},"231":{},"369":{},"447":{},"526":{},"740":{},"808":{},"945":{},"1090":{},"1146":{},"1211":{},"1369":{},"1763":{},"1917":{},"2029":{},"2169":{},"2380":{},"2449":{},"2613":{},"2685":{},"2820":{},"2887":{},"2970":{},"3185":{},"3349":{},"3412":{},"3490":{},"3553":{},"3651":{},"3873":{},"3992":{},"4061":{},"4111":{},"4167":{},"4234":{},"4301":{},"4531":{},"4605":{},"4662":{},"4727":{},"4785":{},"4844":{},"4906":{},"4976":{},"5130":{},"5200":{},"5275":{},"5409":{},"5593":{},"5653":{},"5759":{},"5815":{},"5882":{},"6020":{},"6049":{},"6208":{},"6300":{},"6417":{},"6483":{},"6618":{},"6681":{},"6759":{},"6931":{},"6980":{},"7047":{}},"parent":{}}],["fontsizeinpoints",{"_index":76,"name":{"76":{},"157":{},"230":{},"368":{},"446":{},"525":{},"739":{},"807":{},"944":{},"1089":{},"1145":{},"1210":{},"1368":{},"1762":{},"1916":{},"2028":{},"2168":{},"2379":{},"2448":{},"2612":{},"2684":{},"2819":{},"2886":{},"2969":{},"3184":{},"3348":{},"3411":{},"3489":{},"3552":{},"3650":{},"3872":{},"3991":{},"4060":{},"4110":{},"4166":{},"4233":{},"4300":{},"4530":{},"4604":{},"4661":{},"4726":{},"4784":{},"4843":{},"4905":{},"4975":{},"5129":{},"5199":{},"5274":{},"5408":{},"5592":{},"5652":{},"5758":{},"5814":{},"5881":{},"6019":{},"6207":{},"6299":{},"6416":{},"6482":{},"6617":{},"6680":{},"6758":{},"6930":{},"6979":{},"7046":{}},"parent":{}}],["fontstyle",{"_index":78,"name":{"78":{},"159":{},"232":{},"370":{},"448":{},"527":{},"741":{},"809":{},"946":{},"1091":{},"1147":{},"1212":{},"1370":{},"1526":{},"1598":{},"1764":{},"1918":{},"2030":{},"2170":{},"2381":{},"2450":{},"2614":{},"2686":{},"2821":{},"2888":{},"2971":{},"3186":{},"3350":{},"3413":{},"3491":{},"3554":{},"3652":{},"3874":{},"3993":{},"4062":{},"4112":{},"4168":{},"4235":{},"4302":{},"4532":{},"4606":{},"4663":{},"4728":{},"4786":{},"4845":{},"4907":{},"4977":{},"5131":{},"5201":{},"5276":{},"5410":{},"5594":{},"5654":{},"5760":{},"5816":{},"5883":{},"6021":{},"6209":{},"6301":{},"6418":{},"6484":{},"6619":{},"6682":{},"6760":{},"6932":{},"6981":{},"7048":{}},"parent":{"1599":{},"1600":{}}}],["fontweight",{"_index":79,"name":{"79":{},"160":{},"233":{},"371":{},"449":{},"528":{},"742":{},"810":{},"947":{},"1092":{},"1148":{},"1213":{},"1371":{},"1525":{},"1595":{},"1765":{},"1919":{},"2031":{},"2171":{},"2382":{},"2451":{},"2615":{},"2687":{},"2822":{},"2889":{},"2972":{},"3187":{},"3351":{},"3414":{},"3492":{},"3555":{},"3653":{},"3875":{},"3994":{},"4063":{},"4113":{},"4169":{},"4236":{},"4303":{},"4533":{},"4607":{},"4664":{},"4729":{},"4787":{},"4846":{},"4908":{},"4978":{},"5132":{},"5202":{},"5277":{},"5411":{},"5595":{},"5655":{},"5761":{},"5817":{},"5884":{},"6022":{},"6210":{},"6302":{},"6419":{},"6485":{},"6620":{},"6683":{},"6761":{},"6933":{},"6982":{},"7049":{}},"parent":{"1596":{},"1597":{}}}],["format",{"_index":11,"name":{"11":{},"99":{},"169":{},"461":{},"661":{},"1153":{},"1667":{},"1702":{},"2197":{},"2386":{},"2639":{},"3354":{},"3419":{},"3496":{},"3957":{},"4349":{},"5137":{},"5215":{},"5377":{},"5724":{},"6870":{}},"parent":{}}],["formatanddraw",{"_index":640,"name":{"1651":{}},"parent":{}}],["formatanddrawtab",{"_index":641,"name":{"1652":{}},"parent":{}}],["formatbegmodifiers",{"_index":994,"name":{"3895":{},"5661":{}},"parent":{}}],["formatbyticksanddraw",{"_index":1064,"name":{"4127":{}},"parent":{}}],["formatiterations",{"_index":1206,"name":{"5361":{}},"parent":{}}],["formatoptions",{"_index":1209,"name":{"5367":{}},"parent":{}}],["formatparams",{"_index":628,"name":{"1633":{}},"parent":{"1634":{},"1635":{},"1636":{},"1637":{}}}],["formatter",{"_index":506,"name":{"1423":{},"1458":{},"1647":{}},"parent":{"1648":{},"1649":{},"1650":{},"1651":{},"1652":{},"1653":{},"1654":{},"1655":{},"1656":{},"1657":{},"1658":{},"1659":{},"1660":{},"1661":{},"1662":{},"1663":{},"1664":{},"1665":{},"1666":{},"1667":{},"1668":{},"1669":{}}}],["formattermetrics",{"_index":1257,"name":{"6211":{}},"parent":{"6212":{},"6213":{},"6214":{},"6217":{},"6218":{},"6219":{}}}],["formattermetrics.__type",{"_index":1259,"name":{},"parent":{"6215":{},"6216":{},"6220":{},"6221":{},"6222":{}}}],["formatteroptions",{"_index":624,"name":{"1629":{}},"parent":{"1630":{},"1631":{},"1632":{}}}],["formattostave",{"_index":653,"name":{"1668":{}},"parent":{}}],["fraction",{"_index":517,"name":{"1459":{},"1670":{},"6789":{}},"parent":{"1671":{},"1672":{},"1673":{},"1674":{},"1675":{},"1676":{},"1677":{},"1678":{},"1679":{},"1680":{},"1681":{},"1682":{},"1683":{},"1684":{},"1685":{},"1686":{},"1687":{},"1688":{},"1689":{},"1690":{},"1691":{},"1692":{},"1693":{},"1694":{},"1695":{},"1696":{},"1697":{},"1698":{}}}],["freedom",{"_index":1258,"name":{"6213":{}},"parent":{}}],["fret",{"_index":1214,"name":{"5414":{}},"parent":{}}],["frethandfinger",{"_index":518,"name":{"1460":{},"1699":{},"6790":{}},"parent":{"1700":{},"1701":{},"1702":{},"1703":{},"1704":{},"1705":{},"1706":{},"1707":{},"1708":{},"1709":{},"1710":{},"1711":{},"1712":{},"1713":{},"1714":{},"1715":{},"1716":{},"1717":{},"1718":{},"1719":{},"1720":{},"1721":{},"1722":{},"1723":{},"1724":{},"1725":{},"1726":{},"1727":{},"1728":{},"1729":{},"1730":{},"1731":{},"1732":{},"1733":{},"1734":{},"1735":{},"1736":{},"1737":{},"1738":{},"1739":{},"1740":{},"1741":{},"1742":{},"1743":{},"1744":{},"1745":{},"1746":{},"1747":{},"1748":{},"1749":{},"1750":{},"1751":{},"1752":{},"1753":{},"1754":{},"1755":{},"1756":{},"1757":{},"1758":{},"1759":{},"1760":{},"1761":{},"1762":{},"1763":{},"1764":{},"1765":{}}}],["fromcssstring",{"_index":605,"name":{"1609":{}},"parent":{}}],["full",{"_index":1374,"name":{"6990":{}},"parent":{}}],["gcd",{"_index":654,"name":{"1672":{}},"parent":{}}],["generatebeams",{"_index":201,"name":{"380":{}},"parent":{}}],["generatedon",{"_index":581,"name":{"1572":{}},"parent":{}}],["getabsolutex",{"_index":164,"name":{"301":{},"879":{},"1021":{},"1852":{},"2101":{},"2319":{},"2548":{},"2752":{},"3114":{},"3224":{},"3805":{},"4470":{},"5062":{},"5528":{},"5951":{},"6139":{},"6261":{},"6550":{}},"parent":{}}],["getaccidental",{"_index":800,"name":{"2621":{}},"parent":{}}],["getactualresolution",{"_index":1382,"name":{"7004":{}},"parent":{}}],["getattribute",{"_index":61,"name":{"61":{},"142":{},"215":{},"353":{},"431":{},"510":{},"725":{},"792":{},"931":{},"1074":{},"1130":{},"1195":{},"1353":{},"1747":{},"1901":{},"2013":{},"2154":{},"2365":{},"2433":{},"2597":{},"2669":{},"2804":{},"2871":{},"2954":{},"3169":{},"3334":{},"3396":{},"3474":{},"3537":{},"3635":{},"3858":{},"3977":{},"4045":{},"4095":{},"4151":{},"4218":{},"4285":{},"4516":{},"4589":{},"4646":{},"4711":{},"4769":{},"4828":{},"4890":{},"4961":{},"5114":{},"5184":{},"5259":{},"5394":{},"5577":{},"5637":{},"5744":{},"5799":{},"5866":{},"6004":{},"6192":{},"6284":{},"6401":{},"6467":{},"6602":{},"6665":{},"6743":{},"6915":{},"6964":{},"7032":{}},"parent":{}}],["getattributes",{"_index":60,"name":{"60":{},"141":{},"214":{},"352":{},"430":{},"509":{},"724":{},"791":{},"930":{},"1073":{},"1129":{},"1194":{},"1352":{},"1746":{},"1900":{},"2012":{},"2153":{},"2364":{},"2432":{},"2596":{},"2668":{},"2803":{},"2870":{},"2953":{},"3168":{},"3333":{},"3395":{},"3473":{},"3536":{},"3634":{},"3857":{},"3976":{},"4044":{},"4094":{},"4150":{},"4217":{},"4284":{},"4515":{},"4588":{},"4645":{},"4710":{},"4768":{},"4827":{},"4889":{},"4960":{},"5113":{},"5183":{},"5258":{},"5393":{},"5576":{},"5636":{},"5743":{},"5798":{},"5865":{},"6003":{},"6191":{},"6283":{},"6400":{},"6466":{},"6601":{},"6664":{},"6742":{},"6914":{},"6963":{},"7031":{}},"parent":{}}],["getbasecustomnoteheadglyph",{"_index":683,"name":{"1783":{},"2261":{},"2484":{},"4412":{},"4991":{},"5464":{}},"parent":{}}],["getbeam",{"_index":153,"name":{"290":{},"868":{},"1010":{},"1841":{},"2090":{},"2310":{},"2538":{},"2741":{},"3103":{},"3272":{},"3794":{},"4461":{},"5051":{},"5518":{},"5940":{},"6128":{},"6539":{}},"parent":{}}],["getbeamcount",{"_index":218,"name":{"402":{},"1785":{},"2263":{},"2486":{},"4414":{},"4993":{},"5466":{}},"parent":{}}],["getbeamlines",{"_index":228,"name":{"412":{}},"parent":{}}],["getbeamytodraw",{"_index":225,"name":{"409":{}},"parent":{}}],["getbeatsoccupied",{"_index":1326,"name":{"6720":{}},"parent":{}}],["getbottomlinebottomy",{"_index":1006,"name":{"3913":{},"5681":{}},"parent":{}}],["getbottomliney",{"_index":1018,"name":{"3930":{},"5698":{}},"parent":{}}],["getbottomy",{"_index":1017,"name":{"3929":{},"5697":{}},"parent":{}}],["getboundingbox",{"_index":64,"name":{"64":{},"145":{},"218":{},"356":{},"434":{},"513":{},"728":{},"795":{},"819":{},"1077":{},"1133":{},"1198":{},"1356":{},"1750":{},"1904":{},"2016":{},"2041":{},"2215":{},"2436":{},"2600":{},"2672":{},"2807":{},"2874":{},"2957":{},"3172":{},"3225":{},"3399":{},"3477":{},"3540":{},"3638":{},"3745":{},"3928":{},"4048":{},"4098":{},"4154":{},"4221":{},"4288":{},"4363":{},"4592":{},"4649":{},"4714":{},"4772":{},"4831":{},"4893":{},"4939":{},"5117":{},"5187":{},"5262":{},"5397":{},"5580":{},"5640":{},"5696":{},"5802":{},"5869":{},"6007":{},"6195":{},"6287":{},"6404":{},"6470":{},"6605":{},"6668":{},"6746":{},"6918":{},"6967":{},"7007":{}},"parent":{}}],["getcanonicalintervalname",{"_index":868,"name":{"3008":{}},"parent":{}}],["getcanonicalnotename",{"_index":867,"name":{"3007":{}},"parent":{}}],["getcanvascontext",{"_index":975,"name":{"3733":{},"6856":{}},"parent":{}}],["getcategory",{"_index":47,"name":{"47":{},"128":{},"201":{},"339":{},"417":{},"496":{},"711":{},"778":{},"917":{},"1060":{},"1116":{},"1181":{},"1338":{},"1733":{},"1887":{},"1999":{},"2140":{},"2352":{},"2419":{},"2583":{},"2655":{},"2790":{},"2857":{},"2940":{},"3154":{},"3320":{},"3382":{},"3460":{},"3523":{},"3621":{},"3844":{},"3964":{},"4031":{},"4081":{},"4137":{},"4204":{},"4271":{},"4503":{},"4575":{},"4632":{},"4697":{},"4755":{},"4814":{},"4876":{},"4947":{},"5099":{},"5170":{},"5245":{},"5380":{},"5563":{},"5623":{},"5731":{},"5785":{},"5853":{},"5990":{},"6178":{},"6269":{},"6387":{},"6453":{},"6588":{},"6651":{},"6729":{},"6901":{},"6950":{},"7018":{}},"parent":{}}],["getcenteralignedtickables",{"_index":1284,"name":{"6336":{}},"parent":{}}],["getcenterglyphx",{"_index":688,"name":{"1790":{},"2267":{},"2490":{},"4418":{},"4998":{},"5470":{}},"parent":{}}],["getcenterxshift",{"_index":176,"name":{"317":{},"895":{},"1037":{},"1866":{},"2117":{},"2330":{},"2561":{},"2768":{},"3130":{},"3297":{},"3821":{},"4481":{},"5076":{},"5541":{},"5967":{},"6155":{},"6237":{},"6566":{}},"parent":{}}],["getclef",{"_index":371,"name":{"817":{},"3942":{},"5709":{}},"parent":{}}],["getcode",{"_index":728,"name":{"1981":{},"6371":{}},"parent":{}}],["getconfigforlines",{"_index":1041,"name":{"3960":{},"5727":{}},"parent":{}}],["getcontext",{"_index":65,"name":{"65":{},"146":{},"219":{},"357":{},"435":{},"514":{},"729":{},"796":{},"934":{},"1078":{},"1134":{},"1199":{},"1357":{},"1392":{},"1751":{},"1905":{},"2017":{},"2157":{},"2368":{},"2437":{},"2601":{},"2673":{},"2808":{},"2875":{},"2958":{},"3173":{},"3337":{},"3400":{},"3478":{},"3541":{},"3639":{},"3738":{},"3861":{},"3980":{},"4049":{},"4099":{},"4155":{},"4222":{},"4289":{},"4519":{},"4593":{},"4650":{},"4715":{},"4773":{},"4832":{},"4894":{},"4964":{},"5118":{},"5188":{},"5263":{},"5398":{},"5581":{},"5641":{},"5747":{},"5803":{},"5870":{},"6008":{},"6196":{},"6288":{},"6405":{},"6471":{},"6606":{},"6669":{},"6747":{},"6919":{},"6968":{},"7035":{}},"parent":{}}],["getcurrenttick",{"_index":1285,"name":{"6338":{}},"parent":{}}],["getdata",{"_index":616,"name":{"1620":{}},"parent":{}}],["getdefaultbeamgroups",{"_index":199,"name":{"378":{}},"parent":{}}],["getdefaultledgerlinestyle",{"_index":996,"name":{"3899":{},"5667":{}},"parent":{}}],["getdefaultregistry",{"_index":954,"name":{"3660":{}},"parent":{}}],["getdots",{"_index":395,"name":{"1151":{}},"parent":{}}],["getduration",{"_index":149,"name":{"286":{},"864":{},"1006":{},"1837":{},"2086":{},"2307":{},"2535":{},"2737":{},"3099":{},"3268":{},"3790":{},"4458":{},"5047":{},"5515":{},"5936":{},"6124":{},"6535":{}},"parent":{}}],["getelementbyid",{"_index":960,"name":{"3668":{}},"parent":{}}],["getelements",{"_index":443,"name":{"1284":{}},"parent":{}}],["getelementsbyattribute",{"_index":961,"name":{"3669":{}},"parent":{}}],["getelementsbyclass",{"_index":963,"name":{"3671":{}},"parent":{}}],["getelementsbytype",{"_index":962,"name":{"3670":{}},"parent":{}}],["getendclef",{"_index":1028,"name":{"3944":{},"5711":{}},"parent":{}}],["getextension",{"_index":1158,"name":{"4936":{}},"parent":{}}],["getextents",{"_index":1160,"name":{"4940":{}},"parent":{}}],["getfactory",{"_index":442,"name":{"1283":{}},"parent":{}}],["getfirstdotpx",{"_index":162,"name":{"299":{},"877":{},"1019":{},"1850":{},"2099":{},"2317":{},"2546":{},"2750":{},"3112":{},"3281":{},"3803":{},"4468":{},"5060":{},"5526":{},"5949":{},"6137":{},"6548":{}},"parent":{}}],["getflagstyle",{"_index":769,"name":{"2237":{},"4385":{}},"parent":{}}],["getfont",{"_index":70,"name":{"70":{},"151":{},"224":{},"362":{},"440":{},"519":{},"606":{},"733":{},"801":{},"938":{},"1083":{},"1139":{},"1204":{},"1362":{},"1756":{},"1910":{},"2022":{},"2162":{},"2373":{},"2442":{},"2606":{},"2678":{},"2813":{},"2880":{},"2963":{},"3178":{},"3342":{},"3405":{},"3483":{},"3546":{},"3644":{},"3717":{},"3866":{},"3985":{},"4054":{},"4104":{},"4160":{},"4227":{},"4294":{},"4524":{},"4598":{},"4655":{},"4720":{},"4778":{},"4837":{},"4899":{},"4969":{},"5123":{},"5193":{},"5268":{},"5340":{},"5402":{},"5586":{},"5646":{},"5752":{},"5808":{},"5875":{},"6013":{},"6201":{},"6293":{},"6410":{},"6476":{},"6611":{},"6674":{},"6752":{},"6924":{},"6973":{},"7040":{}},"parent":{}}],["getfontfamilies",{"_index":1242,"name":{"6037":{}},"parent":{}}],["getfontsize",{"_index":74,"name":{"74":{},"155":{},"228":{},"366":{},"444":{},"523":{},"737":{},"805":{},"942":{},"1087":{},"1143":{},"1208":{},"1366":{},"1760":{},"1914":{},"2026":{},"2166":{},"2377":{},"2446":{},"2610":{},"2682":{},"2817":{},"2884":{},"2967":{},"3182":{},"3346":{},"3409":{},"3487":{},"3550":{},"3648":{},"3870":{},"3989":{},"4058":{},"4108":{},"4164":{},"4231":{},"4298":{},"4528":{},"4602":{},"4659":{},"4724":{},"4782":{},"4841":{},"4903":{},"4973":{},"5127":{},"5197":{},"5272":{},"5406":{},"5590":{},"5650":{},"5756":{},"5812":{},"5879":{},"6017":{},"6205":{},"6297":{},"6414":{},"6480":{},"6615":{},"6678":{},"6756":{},"6928":{},"6977":{},"7044":{}},"parent":{}}],["getformattermetrics",{"_index":175,"name":{"316":{},"894":{},"1036":{},"1865":{},"2116":{},"2329":{},"2560":{},"2767":{},"3129":{},"3296":{},"3820":{},"4480":{},"5075":{},"5540":{},"5966":{},"6154":{},"6236":{},"6343":{},"6565":{}},"parent":{}}],["getfrethandfinger",{"_index":674,"name":{"1708":{}},"parent":{}}],["getglyph",{"_index":140,"name":{"277":{},"855":{},"997":{},"1829":{},"2077":{},"2299":{},"2527":{},"2728":{},"3090":{},"3218":{},"3781":{},"4450":{},"5039":{},"5507":{},"5927":{},"6115":{},"6526":{}},"parent":{}}],["getglyphmetrics",{"_index":1247,"name":{"6043":{}},"parent":{}}],["getglyphs",{"_index":621,"name":{"1626":{},"2640":{}},"parent":{}}],["getglyphwidth",{"_index":141,"name":{"278":{},"856":{},"998":{},"1830":{},"2078":{},"2300":{},"2528":{},"2729":{},"3091":{},"3260":{},"3782":{},"4451":{},"5040":{},"5508":{},"5928":{},"6116":{},"6527":{}},"parent":{}}],["getgracenotes",{"_index":788,"name":{"2398":{}},"parent":{}}],["geth",{"_index":252,"name":{"544":{}},"parent":{}}],["getheight",{"_index":1015,"name":{"3926":{},"4938":{},"5694":{}},"parent":{}}],["gethorizontal",{"_index":357,"name":{"687":{}},"parent":{}}],["getindex",{"_index":31,"name":{"31":{},"112":{},"185":{},"481":{},"695":{},"1165":{},"1717":{},"2403":{},"2840":{},"3366":{},"3444":{},"3507":{},"5154":{},"5230":{},"6635":{},"6885":{}},"parent":{}}],["getinfo",{"_index":1243,"name":{"6039":{},"6435":{}},"parent":{}}],["getintervalbetween",{"_index":872,"name":{"3012":{}},"parent":{}}],["getintervalvalue",{"_index":866,"name":{"3006":{}},"parent":{}}],["getintrinsicticks",{"_index":189,"name":{"330":{},"908":{},"1051":{},"1878":{},"2131":{},"2343":{},"2574":{},"2781":{},"3145":{},"3311":{},"3835":{},"4494":{},"5090":{},"5554":{},"5981":{},"6169":{},"6256":{},"6579":{}},"parent":{}}],["getjustification",{"_index":95,"name":{"104":{}},"parent":{}}],["getkerningadjustment",{"_index":343,"name":{"672":{}},"parent":{}}],["getkey",{"_index":799,"name":{"2619":{}},"parent":{}}],["getkeyline",{"_index":772,"name":{"2240":{},"4388":{}},"parent":{}}],["getkeyparts",{"_index":864,"name":{"3004":{}},"parent":{}}],["getkeyprops",{"_index":170,"name":{"307":{},"885":{},"1027":{},"1856":{},"2107":{},"2321":{},"2552":{},"2758":{},"3120":{},"3288":{},"3811":{},"4472":{},"5066":{},"5532":{},"5957":{},"6145":{},"6556":{}},"parent":{}}],["getkeys",{"_index":169,"name":{"306":{},"884":{},"1026":{},"1855":{},"2106":{},"2320":{},"2551":{},"2757":{},"3119":{},"3287":{},"3810":{},"4471":{},"5065":{},"5531":{},"5956":{},"6144":{},"6555":{}},"parent":{}}],["getkeysignatures",{"_index":568,"name":{"1554":{}},"parent":{}}],["getlargesttickwidth",{"_index":1378,"name":{"6998":{}},"parent":{}}],["getlayoutmetrics",{"_index":369,"name":{"776":{},"2653":{},"4029":{},"4268":{},"4573":{},"4630":{},"4695":{},"4753":{},"4874":{},"6451":{}},"parent":{}}],["getledgerlinestyle",{"_index":767,"name":{"2235":{},"4383":{}},"parent":{}}],["getleftdisplacedheadpx",{"_index":133,"name":{"270":{},"848":{},"990":{},"1822":{},"2070":{},"2294":{},"2521":{},"2721":{},"3083":{},"3253":{},"3774":{},"4445":{},"5032":{},"5501":{},"5920":{},"6108":{},"6519":{}},"parent":{}}],["getleftparenthesispx",{"_index":161,"name":{"298":{},"876":{},"1018":{},"1849":{},"2098":{},"2316":{},"2545":{},"2749":{},"3111":{},"3280":{},"3802":{},"4467":{},"5059":{},"5525":{},"5948":{},"6136":{},"6547":{}},"parent":{}}],["getleftshift",{"_index":824,"name":{"2907":{}},"parent":{}}],["getline",{"_index":897,"name":{"3222":{},"6079":{}},"parent":{}}],["getlineforrest",{"_index":139,"name":{"276":{},"854":{},"996":{},"1828":{},"2076":{},"2229":{},"2467":{},"2727":{},"3089":{},"3259":{},"3780":{},"4377":{},"5038":{},"5447":{},"5926":{},"6114":{},"6525":{}},"parent":{}}],["getlinefory",{"_index":1020,"name":{"3932":{},"5700":{}},"parent":{}}],["getlinenumber",{"_index":138,"name":{"275":{},"853":{},"995":{},"1827":{},"2075":{},"2216":{},"2526":{},"2726":{},"3088":{},"3258":{},"3779":{},"4364":{},"5037":{},"5506":{},"5925":{},"6113":{},"6524":{}},"parent":{}}],["getmaxtickable",{"_index":1279,"name":{"6331":{}},"parent":{}}],["getmaxticks",{"_index":1277,"name":{"6329":{}},"parent":{}}],["getmeasure",{"_index":1008,"name":{"3919":{},"5687":{}},"parent":{}}],["getmembers",{"_index":823,"name":{"2905":{}},"parent":{}}],["getmetricforglyph",{"_index":323,"name":{"643":{}},"parent":{}}],["getmetrics",{"_index":163,"name":{"300":{},"878":{},"1020":{},"1621":{},"1851":{},"1942":{},"1991":{},"2100":{},"2318":{},"2547":{},"2751":{},"2910":{},"3113":{},"3282":{},"3434":{},"3804":{},"4469":{},"5061":{},"5527":{},"5950":{},"6138":{},"6267":{},"6337":{},"6362":{},"6549":{}},"parent":{}}],["getmintickable",{"_index":1280,"name":{"6332":{}},"parent":{}}],["getminticks",{"_index":1278,"name":{"6330":{}},"parent":{}}],["getmintotalwidth",{"_index":646,"name":{"1658":{}},"parent":{}}],["getmode",{"_index":1380,"name":{"7001":{}},"parent":{}}],["getmodifiercontext",{"_index":34,"name":{"34":{},"115":{},"188":{},"336":{},"484":{},"698":{},"914":{},"1057":{},"1168":{},"1720":{},"1884":{},"2137":{},"2349":{},"2406":{},"2580":{},"2787":{},"2843":{},"3151":{},"3317":{},"3369":{},"3447":{},"3510":{},"3841":{},"4500":{},"5096":{},"5157":{},"5233":{},"5560":{},"5987":{},"6175":{},"6263":{},"6585":{},"6638":{},"6888":{}},"parent":{}}],["getmodifiers",{"_index":184,"name":{"325":{},"903":{},"1046":{},"1874":{},"2126":{},"2339":{},"2570":{},"2776":{},"2904":{},"3139":{},"3306":{},"3830":{},"3955":{},"4490":{},"5085":{},"5550":{},"5722":{},"5976":{},"6164":{},"6249":{},"6574":{}},"parent":{}}],["getmodifiersbytype",{"_index":158,"name":{"295":{},"873":{},"1015":{},"1846":{},"2095":{},"2314":{},"2543":{},"2746":{},"3108":{},"3277":{},"3799":{},"4465":{},"5056":{},"5523":{},"5945":{},"6133":{},"6544":{}},"parent":{}}],["getmodifierstartxy",{"_index":159,"name":{"296":{},"874":{},"1016":{},"1847":{},"2096":{},"2230":{},"2466":{},"2747":{},"3109":{},"3278":{},"3800":{},"4378":{},"5057":{},"5446":{},"5946":{},"6134":{},"6545":{}},"parent":{}}],["getmodifierxshift",{"_index":1009,"name":{"3920":{},"5688":{}},"parent":{}}],["getmusicfont",{"_index":553,"name":{"1538":{}},"parent":{}}],["getname",{"_index":615,"name":{"1619":{}},"parent":{}}],["getnestedtupletcount",{"_index":1331,"name":{"6725":{}},"parent":{}}],["getnextcontext",{"_index":1270,"name":{"6317":{}},"parent":{}}],["getnote",{"_index":29,"name":{"29":{},"109":{},"182":{},"478":{},"692":{},"1163":{},"1714":{},"2400":{},"2837":{},"3363":{},"3441":{},"3505":{},"5151":{},"5227":{},"6632":{},"6882":{}},"parent":{}}],["getnotecount",{"_index":1324,"name":{"6718":{}},"parent":{}}],["getnoteendx",{"_index":1000,"name":{"3904":{},"5672":{}},"parent":{}}],["getnoteforfret",{"_index":1306,"name":{"6691":{}},"parent":{}}],["getnoteheadbeginx",{"_index":776,"name":{"2245":{},"4393":{}},"parent":{}}],["getnoteheadbounds",{"_index":775,"name":{"2244":{},"4392":{}},"parent":{}}],["getnoteheadendx",{"_index":777,"name":{"2246":{},"4394":{}},"parent":{}}],["getnoteparts",{"_index":863,"name":{"3003":{}},"parent":{}}],["getnotes",{"_index":217,"name":{"401":{},"4811":{},"5620":{},"5782":{},"6717":{}},"parent":{}}],["getnotesoccupied",{"_index":1328,"name":{"6722":{}},"parent":{}}],["getnotestartx",{"_index":999,"name":{"3903":{},"5671":{}},"parent":{}}],["getnotetype",{"_index":152,"name":{"289":{},"867":{},"1009":{},"1840":{},"2089":{},"2309":{},"2537":{},"2740":{},"3102":{},"3271":{},"3793":{},"4460":{},"5050":{},"5517":{},"5939":{},"6127":{},"6538":{}},"parent":{}}],["getnotevalue",{"_index":865,"name":{"3005":{}},"parent":{}}],["getnumlines",{"_index":1003,"name":{"3908":{},"5676":{}},"parent":{}}],["getoutlineboundingbox",{"_index":724,"name":{"1970":{},"6353":{}},"parent":{}}],["getpadding",{"_index":366,"name":{"773":{},"2634":{},"4026":{},"4265":{},"4570":{},"4627":{},"4692":{},"4750":{},"4871":{},"6448":{}},"parent":{}}],["getplaynote",{"_index":126,"name":{"263":{},"841":{},"983":{},"1817":{},"2063":{},"2289":{},"2515":{},"2714":{},"3076":{},"3247":{},"3767":{},"4440":{},"5025":{},"5495":{},"5913":{},"6101":{},"6512":{}},"parent":{}}],["getposition",{"_index":37,"name":{"37":{},"118":{},"191":{},"487":{},"701":{},"765":{},"1171":{},"1723":{},"2409":{},"2642":{},"2846":{},"3372":{},"3450":{},"3513":{},"4016":{},"4255":{},"4560":{},"4617":{},"4682":{},"4740":{},"4861":{},"5160":{},"5222":{},"6438":{},"6641":{},"6891":{}},"parent":{}}],["getpositions",{"_index":793,"name":{"2465":{},"5445":{}},"parent":{}}],["getrelativenotename",{"_index":870,"name":{"3010":{}},"parent":{}}],["getrelativenotevalue",{"_index":869,"name":{"3009":{}},"parent":{}}],["getreportwidth",{"_index":340,"name":{"669":{}},"parent":{}}],["getresolution",{"_index":620,"name":{"1625":{},"6050":{}},"parent":{}}],["getresolutionmultiplier",{"_index":643,"name":{"1654":{},"7003":{}},"parent":{}}],["getrightdisplacedheadpx",{"_index":134,"name":{"271":{},"849":{},"991":{},"1823":{},"2071":{},"2295":{},"2522":{},"2722":{},"3084":{},"3254":{},"3775":{},"4446":{},"5033":{},"5502":{},"5921":{},"6109":{},"6520":{}},"parent":{}}],["getrightparenthesispx",{"_index":160,"name":{"297":{},"875":{},"1017":{},"1848":{},"2097":{},"2315":{},"2544":{},"2748":{},"3110":{},"3279":{},"3801":{},"4466":{},"5058":{},"5524":{},"5947":{},"6135":{},"6546":{}},"parent":{}}],["getrightshift",{"_index":825,"name":{"2908":{}},"parent":{}}],["getscaletones",{"_index":871,"name":{"3011":{}},"parent":{}}],["getslopey",{"_index":222,"name":{"406":{}},"parent":{}}],["getsmallesttickcount",{"_index":1379,"name":{"6999":{}},"parent":{}}],["getspacingbetweenlines",{"_index":1016,"name":{"3927":{},"5695":{}},"parent":{}}],["getspacingfromnextmodifier",{"_index":42,"name":{"42":{},"123":{},"196":{},"492":{},"706":{},"1176":{},"1728":{},"2414":{},"2851":{},"3377":{},"3455":{},"3518":{},"5165":{},"5240":{},"6646":{},"6896":{}},"parent":{}}],["getstate",{"_index":826,"name":{"2909":{}},"parent":{}}],["getstave",{"_index":130,"name":{"267":{},"767":{},"845":{},"987":{},"1394":{},"1820":{},"2067":{},"2292":{},"2519":{},"2644":{},"2718":{},"2934":{},"3080":{},"3251":{},"3771":{},"4018":{},"4257":{},"4443":{},"4562":{},"4619":{},"4684":{},"4742":{},"4863":{},"5029":{},"5499":{},"5917":{},"6105":{},"6265":{},"6440":{},"6516":{},"7006":{}},"parent":{}}],["getstavenotescale",{"_index":753,"name":{"2203":{},"4403":{}},"parent":{}}],["getstem",{"_index":678,"name":{"1778":{},"2257":{},"2479":{},"4408":{},"4986":{},"5459":{}},"parent":{}}],["getstemdirection",{"_index":165,"name":{"302":{},"400":{},"880":{},"1022":{},"1787":{},"2102":{},"2265":{},"2488":{},"2753":{},"3115":{},"3283":{},"3806":{},"4416":{},"4995":{},"5468":{},"5952":{},"6140":{},"6551":{}},"parent":{}}],["getstemextension",{"_index":689,"name":{"1791":{},"2202":{},"2462":{},"4404":{},"4999":{},"5442":{}},"parent":{}}],["getstemextents",{"_index":166,"name":{"303":{},"881":{},"1023":{},"1793":{},"2103":{},"2269":{},"2471":{},"2754":{},"3116":{},"3284":{},"3807":{},"4420":{},"5001":{},"5451":{},"5953":{},"6141":{},"6552":{}},"parent":{}}],["getstemlength",{"_index":684,"name":{"1784":{},"2262":{},"2485":{},"4413":{},"4992":{},"5465":{}},"parent":{}}],["getstemminimumlength",{"_index":685,"name":{"1786":{},"2264":{},"2487":{},"4415":{},"4994":{},"5467":{}},"parent":{}}],["getstemstyle",{"_index":765,"name":{"2233":{},"4381":{}},"parent":{}}],["getstemx",{"_index":687,"name":{"1789":{},"2221":{},"2469":{},"4369":{},"4997":{},"5449":{}},"parent":{}}],["getstemy",{"_index":794,"name":{"2470":{},"5450":{}},"parent":{}}],["getstyle",{"_index":50,"name":{"50":{},"131":{},"204":{},"342":{},"420":{},"499":{},"714":{},"781":{},"920":{},"1063":{},"1119":{},"1184":{},"1341":{},"1736":{},"1890":{},"2002":{},"2143":{},"2354":{},"2422":{},"2586":{},"2658":{},"2793":{},"2860":{},"2943":{},"3157":{},"3323":{},"3385":{},"3463":{},"3526":{},"3624":{},"3847":{},"3917":{},"4034":{},"4084":{},"4140":{},"4207":{},"4274":{},"4505":{},"4578":{},"4635":{},"4700":{},"4758":{},"4817":{},"4879":{},"4950":{},"5102":{},"5173":{},"5248":{},"5383":{},"5566":{},"5626":{},"5685":{},"5788":{},"5856":{},"5993":{},"6181":{},"6272":{},"6390":{},"6456":{},"6591":{},"6654":{},"6732":{},"6904":{},"6953":{},"7021":{}},"parent":{}}],["getsvgcontext",{"_index":976,"name":{"3734":{}},"parent":{}}],["getsvgelement",{"_index":62,"name":{"62":{},"143":{},"216":{},"354":{},"432":{},"511":{},"726":{},"793":{},"932":{},"1075":{},"1131":{},"1196":{},"1354":{},"1748":{},"1902":{},"2014":{},"2155":{},"2366":{},"2434":{},"2598":{},"2670":{},"2805":{},"2872":{},"2955":{},"3170":{},"3335":{},"3397":{},"3475":{},"3538":{},"3636":{},"3859":{},"3978":{},"4046":{},"4096":{},"4152":{},"4219":{},"4286":{},"4517":{},"4590":{},"4647":{},"4712":{},"4770":{},"4829":{},"4891":{},"4962":{},"5115":{},"5185":{},"5260":{},"5395":{},"5578":{},"5638":{},"5745":{},"5800":{},"5867":{},"6005":{},"6193":{},"6285":{},"6402":{},"6468":{},"6603":{},"6666":{},"6744":{},"6916":{},"6965":{},"7033":{}},"parent":{}}],["getsymbolblock",{"_index":344,"name":{"673":{}},"parent":{}}],["gettext",{"_index":242,"name":{"473":{},"6080":{}},"parent":{}}],["gettextheight",{"_index":243,"name":{"474":{}},"parent":{}}],["gettickableforvoice",{"_index":1282,"name":{"6334":{}},"parent":{}}],["gettickables",{"_index":1281,"name":{"6333":{},"7000":{}},"parent":{}}],["gettickablesbyvoice",{"_index":1283,"name":{"6335":{}},"parent":{}}],["gettickcontext",{"_index":147,"name":{"284":{},"862":{},"1004":{},"1669":{},"1835":{},"2084":{},"2305":{},"2533":{},"2735":{},"3097":{},"3266":{},"3788":{},"4456":{},"5045":{},"5513":{},"5934":{},"6122":{},"6533":{}},"parent":{}}],["gettickcontexts",{"_index":649,"name":{"1661":{}},"parent":{}}],["gettickid",{"_index":1272,"name":{"6320":{}},"parent":{}}],["gettickmultiplier",{"_index":191,"name":{"332":{},"910":{},"1053":{},"1880":{},"2133":{},"2345":{},"2576":{},"2783":{},"3147":{},"3313":{},"3837":{},"4496":{},"5092":{},"5556":{},"5983":{},"6171":{},"6258":{},"6581":{}},"parent":{}}],["getticks",{"_index":172,"name":{"309":{},"887":{},"1029":{},"1858":{},"2109":{},"2322":{},"2553":{},"2760":{},"3122":{},"3290":{},"3813":{},"4473":{},"5068":{},"5533":{},"5959":{},"6147":{},"6228":{},"6558":{}},"parent":{}}],["getticksused",{"_index":1377,"name":{"6997":{}},"parent":{}}],["gettieendx",{"_index":1002,"name":{"3906":{},"5674":{}},"parent":{}}],["gettieleftx",{"_index":168,"name":{"305":{},"883":{},"1025":{},"1854":{},"2105":{},"2228":{},"2550":{},"2756":{},"3118":{},"3286":{},"3809":{},"4376":{},"5064":{},"5530":{},"5955":{},"6143":{},"6554":{}},"parent":{}}],["gettierightx",{"_index":167,"name":{"304":{},"882":{},"1024":{},"1853":{},"2104":{},"2227":{},"2549":{},"2755":{},"3117":{},"3285":{},"3808":{},"4375":{},"5063":{},"5529":{},"5954":{},"6142":{},"6553":{}},"parent":{}}],["gettiestartx",{"_index":1001,"name":{"3905":{},"5673":{}},"parent":{}}],["gettoplinetopy",{"_index":1005,"name":{"3912":{},"5680":{}},"parent":{}}],["gettotalticks",{"_index":1376,"name":{"6996":{}},"parent":{}}],["gettuplet",{"_index":180,"name":{"321":{},"899":{},"1041":{},"1870":{},"2121":{},"2334":{},"2565":{},"2772":{},"3134":{},"3301":{},"3825":{},"4485":{},"5080":{},"5545":{},"5971":{},"6159":{},"6243":{},"6570":{}},"parent":{}}],["gettupletstack",{"_index":181,"name":{"322":{},"900":{},"1042":{},"1871":{},"2122":{},"2335":{},"2566":{},"2773":{},"3135":{},"3302":{},"3826":{},"4486":{},"5081":{},"5546":{},"5972":{},"6160":{},"6244":{},"6571":{}},"parent":{}}],["gettype",{"_index":107,"name":{"240":{},"4010":{},"4075":{}},"parent":{}}],["getvalueforfret",{"_index":1305,"name":{"6690":{}},"parent":{}}],["getvalueforstring",{"_index":1304,"name":{"6689":{}},"parent":{}}],["getvertical",{"_index":355,"name":{"685":{}},"parent":{}}],["getverticalbarwidth",{"_index":1040,"name":{"3959":{},"5726":{}},"parent":{}}],["getvoice",{"_index":145,"name":{"282":{},"860":{},"1002":{},"1833":{},"2082":{},"2303":{},"2531":{},"2733":{},"3095":{},"3264":{},"3786":{},"4454":{},"5043":{},"5511":{},"5932":{},"6120":{},"6241":{},"6531":{}},"parent":{}}],["getvoices",{"_index":486,"name":{"1395":{}},"parent":{}}],["getvoiceshiftwidth",{"_index":773,"name":{"2241":{},"4389":{}},"parent":{}}],["getw",{"_index":251,"name":{"543":{}},"parent":{}}],["getwidth",{"_index":24,"name":{"24":{},"107":{},"180":{},"312":{},"476":{},"688":{},"762":{},"890":{},"1032":{},"1161":{},"1712":{},"1861":{},"1941":{},"1971":{},"2112":{},"2325":{},"2397":{},"2556":{},"2635":{},"2763":{},"2835":{},"2906":{},"3125":{},"3216":{},"3361":{},"3439":{},"3503":{},"3816":{},"3916":{},"4021":{},"4260":{},"4476":{},"4565":{},"4622":{},"4687":{},"4745":{},"4866":{},"5071":{},"5149":{},"5225":{},"5536":{},"5684":{},"5962":{},"6150":{},"6232":{},"6327":{},"6354":{},"6443":{},"6561":{},"6630":{},"6880":{}},"parent":{}}],["getwidthforcharacterinem",{"_index":1249,"name":{"6045":{}},"parent":{}}],["getwidthforglyph",{"_index":326,"name":{"646":{}},"parent":{}}],["getwidthfortextinem",{"_index":1250,"name":{"6046":{}},"parent":{}}],["getwidthfortextinpx",{"_index":1251,"name":{"6047":{}},"parent":{}}],["getx",{"_index":174,"name":{"315":{},"541":{},"770":{},"893":{},"1035":{},"1864":{},"2115":{},"2328":{},"2559":{},"2648":{},"2766":{},"3128":{},"3295":{},"3819":{},"3907":{},"4023":{},"4262":{},"4479":{},"4567":{},"4624":{},"4689":{},"4747":{},"4868":{},"5074":{},"5539":{},"5675":{},"5965":{},"6153":{},"6235":{},"6321":{},"6445":{},"6564":{}},"parent":{}}],["getx1",{"_index":261,"name":{"554":{}},"parent":{}}],["getxbase",{"_index":1273,"name":{"6323":{}},"parent":{}}],["getxoffset",{"_index":1275,"name":{"6325":{}},"parent":{}}],["getxs",{"_index":840,"name":{"2932":{}},"parent":{}}],["getxshift",{"_index":44,"name":{"44":{},"125":{},"198":{},"314":{},"493":{},"708":{},"892":{},"1034":{},"1178":{},"1730":{},"1863":{},"1985":{},"2114":{},"2327":{},"2416":{},"2558":{},"2765":{},"2853":{},"3127":{},"3294":{},"3379":{},"3457":{},"3520":{},"3818":{},"4078":{},"4478":{},"5073":{},"5167":{},"5242":{},"5538":{},"5964":{},"6152":{},"6234":{},"6375":{},"6563":{},"6648":{},"6898":{}},"parent":{}}],["getxshiftforglyph",{"_index":328,"name":{"648":{}},"parent":{}}],["gety",{"_index":250,"name":{"542":{},"3220":{},"3911":{},"5679":{}},"parent":{}}],["gety1",{"_index":262,"name":{"555":{}},"parent":{}}],["getyforbottomtext",{"_index":691,"name":{"1795":{},"2223":{},"2493":{},"3934":{},"4371":{},"5003":{},"5473":{},"5702":{}},"parent":{}}],["getyforglyphs",{"_index":1022,"name":{"3936":{},"5663":{}},"parent":{}}],["getyforline",{"_index":1019,"name":{"3931":{},"5699":{}},"parent":{}}],["getyfornote",{"_index":1021,"name":{"3935":{},"5703":{}},"parent":{}}],["getyfortoptext",{"_index":144,"name":{"281":{},"859":{},"1001":{},"1794":{},"2081":{},"2222":{},"2492":{},"2732":{},"3094":{},"3263":{},"3785":{},"3933":{},"4370":{},"5002":{},"5472":{},"5701":{},"5931":{},"6119":{},"6530":{}},"parent":{}}],["getyoffsetfortext",{"_index":358,"name":{"689":{}},"parent":{}}],["getyposition",{"_index":1332,"name":{"6726":{}},"parent":{}}],["getys",{"_index":143,"name":{"280":{},"858":{},"1000":{},"1832":{},"2080":{},"2302":{},"2530":{},"2731":{},"3093":{},"3262":{},"3784":{},"4453":{},"5042":{},"5510":{},"5930":{},"6118":{},"6529":{}},"parent":{}}],["getyshift",{"_index":730,"name":{"1987":{},"6377":{}},"parent":{}}],["getyshiftforglyph",{"_index":327,"name":{"647":{}},"parent":{}}],["ghostnote",{"_index":491,"name":{"1401":{},"1461":{},"1766":{},"6791":{}},"parent":{"1767":{},"1768":{},"1769":{},"1770":{},"1771":{},"1772":{},"1773":{},"1774":{},"1775":{},"1776":{},"1777":{},"1778":{},"1779":{},"1780":{},"1781":{},"1782":{},"1783":{},"1784":{},"1785":{},"1786":{},"1787":{},"1788":{},"1789":{},"1790":{},"1791":{},"1792":{},"1793":{},"1794":{},"1795":{},"1796":{},"1797":{},"1798":{},"1799":{},"1800":{},"1801":{},"1802":{},"1803":{},"1817":{},"1818":{},"1819":{},"1820":{},"1821":{},"1822":{},"1823":{},"1824":{},"1825":{},"1826":{},"1827":{},"1828":{},"1829":{},"1830":{},"1831":{},"1832":{},"1833":{},"1834":{},"1835":{},"1836":{},"1837":{},"1838":{},"1839":{},"1840":{},"1841":{},"1842":{},"1843":{},"1844":{},"1845":{},"1846":{},"1847":{},"1848":{},"1849":{},"1850":{},"1851":{},"1852":{},"1853":{},"1854":{},"1855":{},"1856":{},"1857":{},"1858":{},"1859":{},"1860":{},"1861":{},"1862":{},"1863":{},"1864":{},"1865":{},"1866":{},"1867":{},"1868":{},"1869":{},"1870":{},"1871":{},"1872":{},"1873":{},"1874":{},"1875":{},"1876":{},"1877":{},"1878":{},"1879":{},"1880":{},"1881":{},"1882":{},"1883":{},"1884":{},"1885":{},"1886":{},"1887":{},"1888":{},"1889":{},"1890":{},"1891":{},"1892":{},"1893":{},"1894":{},"1895":{},"1896":{},"1897":{},"1898":{},"1899":{},"1900":{},"1901":{},"1902":{},"1903":{},"1904":{},"1905":{},"1906":{},"1907":{},"1908":{},"1909":{},"1910":{},"1911":{},"1912":{},"1913":{},"1914":{},"1915":{},"1916":{},"1917":{},"1918":{},"1919":{}}}],["ghostnote.__type",{"_index":694,"name":{},"parent":{"1804":{},"1805":{},"1806":{},"1807":{},"1808":{},"1809":{},"1810":{},"1811":{},"1812":{},"1813":{},"1814":{},"1815":{},"1816":{}}}],["globalobject",{"_index":1345,"name":{"6841":{}},"parent":{}}],["globalsoftmax",{"_index":626,"name":{"1631":{},"5346":{}},"parent":{}}],["glyph",{"_index":111,"name":{"245":{},"617":{},"627":{},"823":{},"965":{},"1462":{},"1799":{},"1961":{},"2045":{},"2271":{},"2497":{},"2696":{},"3058":{},"3229":{},"3749":{},"4422":{},"5007":{},"5477":{},"5895":{},"6057":{},"6083":{},"6421":{},"6494":{},"6792":{}},"parent":{"1962":{},"1963":{},"1964":{},"1965":{},"1966":{},"1967":{},"1968":{},"1969":{},"1970":{},"1971":{},"1972":{},"1973":{},"1974":{},"1975":{},"1976":{},"1977":{},"1978":{},"1979":{},"1980":{},"1981":{},"1982":{},"1983":{},"1984":{},"1985":{},"1986":{},"1987":{},"1988":{},"1989":{},"1990":{},"1991":{},"1992":{},"1993":{},"1994":{},"1995":{},"1996":{},"1997":{},"1998":{},"1999":{},"2000":{},"2001":{},"2002":{},"2003":{},"2004":{},"2005":{},"2006":{},"2007":{},"2008":{},"2009":{},"2010":{},"2011":{},"2012":{},"2013":{},"2014":{},"2015":{},"2016":{},"2017":{},"2018":{},"2019":{},"2020":{},"2021":{},"2022":{},"2023":{},"2024":{},"2025":{},"2026":{},"2027":{},"2028":{},"2029":{},"2030":{},"2031":{}}}],["glyph_code",{"_index":896,"name":{"3215":{}},"parent":{}}],["glyph_font_scale",{"_index":121,"name":{"257":{},"835":{},"977":{},"1811":{},"2057":{},"2179":{},"2283":{},"2509":{},"2708":{},"3070":{},"3190":{},"3241":{},"3761":{},"4332":{},"4434":{},"4677":{},"5019":{},"5422":{},"5489":{},"5907":{},"6095":{},"6506":{}},"parent":{}}],["glyph_font_size",{"_index":123,"name":{"259":{},"837":{},"979":{},"1813":{},"2059":{},"2285":{},"2511":{},"2710":{},"3072":{},"3243":{},"3763":{},"4436":{},"5021":{},"5491":{},"5909":{},"6097":{},"6508":{}},"parent":{}}],["glyphmetrics",{"_index":712,"name":{"1945":{}},"parent":{"1946":{},"1947":{},"1948":{},"1949":{},"1950":{},"1951":{},"1952":{},"1953":{},"1954":{},"1955":{}}}],["glyphnote",{"_index":489,"name":{"1399":{},"1463":{},"2035":{},"6793":{}},"parent":{"2036":{},"2037":{},"2038":{},"2039":{},"2040":{},"2041":{},"2042":{},"2043":{},"2044":{},"2045":{},"2046":{},"2047":{},"2048":{},"2049":{},"2063":{},"2064":{},"2065":{},"2066":{},"2067":{},"2068":{},"2069":{},"2070":{},"2071":{},"2072":{},"2073":{},"2074":{},"2075":{},"2076":{},"2077":{},"2078":{},"2079":{},"2080":{},"2081":{},"2082":{},"2083":{},"2084":{},"2085":{},"2086":{},"2087":{},"2088":{},"2089":{},"2090":{},"2091":{},"2092":{},"2093":{},"2094":{},"2095":{},"2096":{},"2097":{},"2098":{},"2099":{},"2100":{},"2101":{},"2102":{},"2103":{},"2104":{},"2105":{},"2106":{},"2107":{},"2108":{},"2109":{},"2110":{},"2111":{},"2112":{},"2113":{},"2114":{},"2115":{},"2116":{},"2117":{},"2118":{},"2119":{},"2120":{},"2121":{},"2122":{},"2123":{},"2124":{},"2125":{},"2126":{},"2127":{},"2128":{},"2129":{},"2130":{},"2131":{},"2132":{},"2133":{},"2134":{},"2135":{},"2136":{},"2137":{},"2138":{},"2139":{},"2140":{},"2141":{},"2142":{},"2143":{},"2144":{},"2145":{},"2146":{},"2147":{},"2148":{},"2149":{},"2150":{},"2151":{},"2152":{},"2153":{},"2154":{},"2155":{},"2156":{},"2157":{},"2158":{},"2159":{},"2160":{},"2161":{},"2162":{},"2163":{},"2164":{},"2165":{},"2166":{},"2167":{},"2168":{},"2169":{},"2170":{},"2171":{}}}],["glyphnote.__type",{"_index":741,"name":{},"parent":{"2050":{},"2051":{},"2052":{},"2053":{},"2054":{},"2055":{},"2056":{},"2057":{},"2058":{},"2059":{},"2060":{},"2061":{},"2062":{}}}],["glyphnoteoptions",{"_index":737,"name":{"2032":{}},"parent":{"2033":{},"2034":{}}}],["glyphoptions",{"_index":711,"name":{"1943":{}},"parent":{"1944":{}}}],["glyphprops",{"_index":695,"name":{"1920":{}},"parent":{"1921":{},"1922":{},"1923":{},"1924":{},"1925":{},"1926":{},"1927":{},"1928":{},"1929":{},"1930":{},"1931":{},"1932":{},"1933":{},"1934":{},"1935":{},"1936":{},"1937":{},"1938":{},"1939":{},"1940":{},"1941":{},"1942":{}}}],["glyphpx",{"_index":883,"name":{"3033":{},"6312":{}},"parent":{}}],["glyphs",{"_index":332,"name":{"652":{},"1569":{},"1584":{},"3597":{},"5888":{},"6026":{},"6074":{},"6426":{}},"parent":{}}],["glyphwidth",{"_index":878,"name":{"3028":{},"6307":{}},"parent":{}}],["gracenote",{"_index":496,"name":{"1408":{},"1464":{},"2189":{},"6794":{}},"parent":{"2190":{},"2191":{},"2192":{},"2193":{},"2194":{},"2195":{},"2196":{},"2197":{},"2198":{},"2199":{},"2200":{},"2201":{},"2202":{},"2203":{},"2204":{},"2205":{},"2206":{},"2207":{},"2208":{},"2209":{},"2210":{},"2211":{},"2212":{},"2213":{},"2214":{},"2215":{},"2216":{},"2217":{},"2218":{},"2219":{},"2220":{},"2221":{},"2222":{},"2223":{},"2224":{},"2225":{},"2226":{},"2227":{},"2228":{},"2229":{},"2230":{},"2231":{},"2232":{},"2233":{},"2234":{},"2235":{},"2236":{},"2237":{},"2238":{},"2239":{},"2240":{},"2241":{},"2242":{},"2243":{},"2244":{},"2245":{},"2246":{},"2247":{},"2248":{},"2249":{},"2250":{},"2251":{},"2252":{},"2253":{},"2254":{},"2255":{},"2256":{},"2257":{},"2258":{},"2259":{},"2260":{},"2261":{},"2262":{},"2263":{},"2264":{},"2265":{},"2266":{},"2267":{},"2268":{},"2269":{},"2270":{},"2271":{},"2272":{},"2273":{},"2274":{},"2275":{},"2289":{},"2290":{},"2291":{},"2292":{},"2293":{},"2294":{},"2295":{},"2296":{},"2297":{},"2298":{},"2299":{},"2300":{},"2301":{},"2302":{},"2303":{},"2304":{},"2305":{},"2306":{},"2307":{},"2308":{},"2309":{},"2310":{},"2311":{},"2312":{},"2313":{},"2314":{},"2315":{},"2316":{},"2317":{},"2318":{},"2319":{},"2320":{},"2321":{},"2322":{},"2323":{},"2324":{},"2325":{},"2326":{},"2327":{},"2328":{},"2329":{},"2330":{},"2331":{},"2332":{},"2333":{},"2334":{},"2335":{},"2336":{},"2337":{},"2338":{},"2339":{},"2340":{},"2341":{},"2342":{},"2343":{},"2344":{},"2345":{},"2346":{},"2347":{},"2348":{},"2349":{},"2350":{},"2351":{},"2352":{},"2353":{},"2354":{},"2355":{},"2356":{},"2357":{},"2358":{},"2359":{},"2360":{},"2361":{},"2362":{},"2363":{},"2364":{},"2365":{},"2366":{},"2367":{},"2368":{},"2369":{},"2370":{},"2371":{},"2372":{},"2373":{},"2374":{},"2375":{},"2376":{},"2377":{},"2378":{},"2379":{},"2380":{},"2381":{},"2382":{}}}],["gracenote.__type",{"_index":784,"name":{},"parent":{"2276":{},"2277":{},"2278":{},"2279":{},"2280":{},"2281":{},"2282":{},"2283":{},"2284":{},"2285":{},"2286":{},"2287":{},"2288":{}}}],["gracenotegroup",{"_index":497,"name":{"1409":{},"1465":{},"2383":{},"6795":{}},"parent":{"2384":{},"2385":{},"2386":{},"2387":{},"2388":{},"2389":{},"2390":{},"2391":{},"2392":{},"2394":{},"2395":{},"2396":{},"2397":{},"2398":{},"2399":{},"2400":{},"2401":{},"2402":{},"2403":{},"2404":{},"2405":{},"2406":{},"2407":{},"2408":{},"2409":{},"2410":{},"2411":{},"2412":{},"2413":{},"2414":{},"2415":{},"2416":{},"2417":{},"2418":{},"2419":{},"2420":{},"2421":{},"2422":{},"2423":{},"2424":{},"2425":{},"2426":{},"2427":{},"2428":{},"2429":{},"2430":{},"2431":{},"2432":{},"2433":{},"2434":{},"2435":{},"2436":{},"2437":{},"2438":{},"2439":{},"2440":{},"2441":{},"2442":{},"2443":{},"2444":{},"2445":{},"2446":{},"2447":{},"2448":{},"2449":{},"2450":{},"2451":{}}}],["gracenotegroup.__type",{"_index":786,"name":{},"parent":{"2393":{}}}],["gracenotestruct",{"_index":742,"name":{"2172":{}},"parent":{"2173":{},"2174":{},"2175":{},"2176":{},"2177":{},"2178":{},"2179":{},"2180":{},"2181":{},"2182":{},"2183":{},"2184":{},"2185":{},"2186":{},"2187":{},"2188":{}}}],["gracetabnote",{"_index":519,"name":{"1466":{},"2452":{},"6796":{}},"parent":{"2453":{},"2454":{},"2455":{},"2456":{},"2457":{},"2458":{},"2459":{},"2460":{},"2461":{},"2462":{},"2463":{},"2464":{},"2465":{},"2466":{},"2467":{},"2468":{},"2469":{},"2470":{},"2471":{},"2472":{},"2473":{},"2474":{},"2475":{},"2476":{},"2477":{},"2478":{},"2479":{},"2480":{},"2481":{},"2482":{},"2483":{},"2484":{},"2485":{},"2486":{},"2487":{},"2488":{},"2489":{},"2490":{},"2491":{},"2492":{},"2493":{},"2494":{},"2495":{},"2496":{},"2497":{},"2498":{},"2499":{},"2500":{},"2501":{},"2515":{},"2516":{},"2517":{},"2518":{},"2519":{},"2520":{},"2521":{},"2522":{},"2523":{},"2524":{},"2525":{},"2526":{},"2527":{},"2528":{},"2529":{},"2530":{},"2531":{},"2532":{},"2533":{},"2534":{},"2535":{},"2536":{},"2537":{},"2538":{},"2539":{},"2540":{},"2541":{},"2542":{},"2543":{},"2544":{},"2545":{},"2546":{},"2547":{},"2548":{},"2549":{},"2550":{},"2551":{},"2552":{},"2553":{},"2554":{},"2555":{},"2556":{},"2557":{},"2558":{},"2559":{},"2560":{},"2561":{},"2562":{},"2563":{},"2564":{},"2565":{},"2566":{},"2567":{},"2568":{},"2569":{},"2570":{},"2571":{},"2572":{},"2573":{},"2574":{},"2575":{},"2576":{},"2577":{},"2578":{},"2579":{},"2580":{},"2581":{},"2582":{},"2583":{},"2584":{},"2585":{},"2586":{},"2587":{},"2588":{},"2589":{},"2590":{},"2591":{},"2592":{},"2593":{},"2594":{},"2595":{},"2596":{},"2597":{},"2598":{},"2599":{},"2600":{},"2601":{},"2602":{},"2603":{},"2604":{},"2605":{},"2606":{},"2607":{},"2608":{},"2609":{},"2610":{},"2611":{},"2612":{},"2613":{},"2614":{},"2615":{}}}],["gracetabnote.__type",{"_index":797,"name":{},"parent":{"2502":{},"2503":{},"2504":{},"2505":{},"2506":{},"2507":{},"2508":{},"2509":{},"2510":{},"2511":{},"2512":{},"2513":{},"2514":{}}}],["grammar",{"_index":460,"name":{"1311":{},"3580":{}},"parent":{"3581":{}}}],["greaterthan",{"_index":664,"name":{"1686":{}},"parent":{}}],["greaterthanequals",{"_index":665,"name":{"1687":{}},"parent":{}}],["greateststring",{"_index":789,"name":{"2457":{},"5437":{}},"parent":{}}],["groupattributes",{"_index":967,"name":{"3679":{}},"parent":{"3680":{}}}],["groupedresults",{"_index":931,"name":{"3579":{}},"parent":{}}],["groups",{"_index":1189,"name":{"5302":{}},"parent":{}}],["h",{"_index":247,"name":{"533":{},"540":{}},"parent":{}}],["ha",{"_index":591,"name":{"1590":{},"1953":{}},"parent":{}}],["harsh",{"_index":1363,"name":{"6866":{},"6944":{}},"parent":{}}],["hasbeam",{"_index":155,"name":{"292":{},"870":{},"1012":{},"1843":{},"2092":{},"2312":{},"2540":{},"2743":{},"3105":{},"3274":{},"3796":{},"4463":{},"5053":{},"5520":{},"5942":{},"6130":{},"6541":{}},"parent":{}}],["hasclass",{"_index":54,"name":{"54":{},"135":{},"208":{},"346":{},"424":{},"503":{},"718":{},"785":{},"924":{},"1067":{},"1123":{},"1188":{},"1346":{},"1740":{},"1894":{},"2006":{},"2147":{},"2358":{},"2426":{},"2590":{},"2662":{},"2797":{},"2864":{},"2947":{},"3162":{},"3327":{},"3389":{},"3467":{},"3530":{},"3628":{},"3851":{},"3970":{},"4038":{},"4088":{},"4144":{},"4211":{},"4278":{},"4509":{},"4582":{},"4639":{},"4704":{},"4762":{},"4821":{},"4883":{},"4954":{},"5107":{},"5177":{},"5252":{},"5387":{},"5570":{},"5630":{},"5737":{},"5792":{},"5859":{},"5997":{},"6185":{},"6277":{},"6394":{},"6460":{},"6595":{},"6658":{},"6736":{},"6908":{},"6957":{},"7025":{}},"parent":{}}],["hasdata",{"_index":619,"name":{"1624":{}},"parent":{}}],["hasflag",{"_index":692,"name":{"1796":{},"2220":{},"2494":{},"4368":{},"5004":{},"5474":{}},"parent":{}}],["haskeysignature",{"_index":567,"name":{"1553":{}},"parent":{}}],["hasstem",{"_index":151,"name":{"288":{},"866":{},"1008":{},"1839":{},"2088":{},"2219":{},"2461":{},"2739":{},"3101":{},"3270":{},"3792":{},"4367":{},"5049":{},"5441":{},"5938":{},"6126":{},"6537":{}},"parent":{}}],["height",{"_index":263,"name":{"557":{},"565":{},"950":{},"1381":{},"1947":{},"3678":{},"4119":{},"4929":{},"5290":{}},"parent":{}}],["hide",{"_index":1152,"name":{"4916":{}},"parent":{}}],["highest_displaced_line",{"_index":1096,"name":{"4311":{}},"parent":{}}],["highest_line",{"_index":1094,"name":{"4309":{}},"parent":{}}],["highest_non_displaced_line",{"_index":1098,"name":{"4313":{}},"parent":{}}],["horizontaljustify",{"_index":89,"name":{"94":{},"637":{}},"parent":{}}],["horizontaljustifystring",{"_index":90,"name":{"95":{},"638":{}},"parent":{}}],["id",{"_index":468,"name":{"1323":{},"3655":{}},"parent":{}}],["ignore_ticks",{"_index":1253,"name":{"6058":{}},"parent":{}}],["ignoreticks",{"_index":738,"name":{"2033":{}},"parent":{}}],["incrementpos",{"_index":925,"name":{"3573":{}},"parent":{}}],["index",{"_index":895,"name":{"3202":{}},"parent":{}}],["initrenderer",{"_index":485,"name":{"1391":{}},"parent":{}}],["int_val",{"_index":851,"name":{"2988":{}},"parent":{}}],["int_value",{"_index":874,"name":{"3020":{}},"parent":{}}],["intervals",{"_index":859,"name":{"2997":{}},"parent":{}}],["invert",{"_index":386,"name":{"1100":{}},"parent":{}}],["is_displaced",{"_index":1105,"name":{"4324":{}},"parent":{}}],["isaccidental",{"_index":1334,"name":{"6763":{}},"parent":{}}],["isannotation",{"_index":1335,"name":{"6764":{}},"parent":{}}],["isbarline",{"_index":1336,"name":{"6765":{}},"parent":{}}],["isbold",{"_index":608,"name":{"1612":{}},"parent":{}}],["iscategory",{"_index":1333,"name":{"6762":{}},"parent":{}}],["iscenteraligned",{"_index":178,"name":{"319":{},"897":{},"1039":{},"1868":{},"2119":{},"2332":{},"2563":{},"2770":{},"3132":{},"3299":{},"3823":{},"4483":{},"5078":{},"5543":{},"5969":{},"6157":{},"6239":{},"6568":{}},"parent":{}}],["ischord",{"_index":761,"name":{"2218":{},"4366":{}},"parent":{}}],["iscomplete",{"_index":1384,"name":{"7009":{}},"parent":{}}],["isdisplaced",{"_index":762,"name":{"2225":{},"3217":{},"4373":{}},"parent":{}}],["isdot",{"_index":1337,"name":{"6766":{}},"parent":{}}],["isdotted",{"_index":150,"name":{"287":{},"865":{},"1007":{},"1838":{},"2087":{},"2308":{},"2536":{},"2738":{},"3100":{},"3269":{},"3791":{},"4459":{},"5048":{},"5516":{},"5937":{},"6125":{},"6536":{}},"parent":{}}],["isgracenote",{"_index":1338,"name":{"6767":{}},"parent":{}}],["isgracenotegroup",{"_index":1339,"name":{"6768":{}},"parent":{}}],["ishtmlcanvas",{"_index":1388,"name":{"7050":{}},"parent":{}}],["ishtmldiv",{"_index":1389,"name":{"7051":{}},"parent":{}}],["isitalic",{"_index":609,"name":{"1613":{}},"parent":{}}],["isnote",{"_index":1340,"name":{"6769":{}},"parent":{}}],["ispartial",{"_index":392,"name":{"1112":{},"4808":{},"5618":{},"5779":{}},"parent":{}}],["isrendercontext",{"_index":1341,"name":{"6770":{}},"parent":{}}],["isrendered",{"_index":58,"name":{"58":{},"139":{},"212":{},"350":{},"428":{},"507":{},"722":{},"789":{},"928":{},"1071":{},"1127":{},"1192":{},"1350":{},"1744":{},"1898":{},"2010":{},"2151":{},"2362":{},"2430":{},"2594":{},"2666":{},"2801":{},"2868":{},"2951":{},"3166":{},"3331":{},"3393":{},"3471":{},"3534":{},"3632":{},"3855":{},"3974":{},"4042":{},"4092":{},"4148":{},"4215":{},"4282":{},"4513":{},"4586":{},"4643":{},"4708":{},"4766":{},"4825":{},"4887":{},"4958":{},"5111":{},"5181":{},"5256":{},"5391":{},"5574":{},"5634":{},"5741":{},"5796":{},"5863":{},"6001":{},"6189":{},"6281":{},"6398":{},"6464":{},"6599":{},"6662":{},"6740":{},"6912":{},"6961":{},"7029":{}},"parent":{}}],["isrest",{"_index":128,"name":{"265":{},"843":{},"985":{},"1771":{},"2065":{},"2217":{},"2517":{},"2716":{},"3078":{},"3249":{},"3769":{},"4319":{},"4365":{},"5027":{},"5497":{},"5915":{},"6103":{},"6514":{}},"parent":{}}],["isstavenote",{"_index":1342,"name":{"6771":{}},"parent":{}}],["isstemlet",{"_index":1151,"name":{"4915":{}},"parent":{}}],["isstemmablenote",{"_index":1343,"name":{"6772":{}},"parent":{}}],["issubscript",{"_index":337,"name":{"659":{}},"parent":{}}],["issuperscript",{"_index":336,"name":{"658":{}},"parent":{}}],["istabnote",{"_index":1344,"name":{"6773":{}},"parent":{}}],["italic",{"_index":598,"name":{"1600":{},"6029":{}},"parent":{}}],["iterations",{"_index":1260,"name":{"6217":{}},"parent":{}}],["joinvoices",{"_index":652,"name":{"1666":{}},"parent":{}}],["justification",{"_index":1255,"name":{"6073":{}},"parent":{}}],["kerningoffset",{"_index":331,"name":{"651":{}},"parent":{}}],["key",{"_index":415,"name":{"1237":{},"1257":{},"2986":{},"3017":{}},"parent":{"2987":{},"2988":{}}}],["keymanager",{"_index":520,"name":{"1467":{},"2616":{}},"parent":{"2617":{},"2618":{},"2619":{},"2620":{},"2621":{},"2622":{}}}],["keyparts",{"_index":846,"name":{"2979":{}},"parent":{"2980":{},"2981":{},"2982":{}}}],["keyproperties",{"_index":570,"name":{"1556":{}},"parent":{}}],["keyprops",{"_index":113,"name":{"247":{},"825":{},"967":{},"1801":{},"2047":{},"2273":{},"2499":{},"2698":{},"3014":{},"3060":{},"3231":{},"3751":{},"4424":{},"5009":{},"5479":{},"5897":{},"6085":{},"6496":{}},"parent":{"3015":{},"3016":{},"3017":{},"3018":{},"3019":{},"3020":{},"3021":{},"3022":{},"3023":{},"3024":{},"3025":{}}}],["keys",{"_index":112,"name":{"246":{},"824":{},"966":{},"1800":{},"2046":{},"2182":{},"2272":{},"2498":{},"2697":{},"3046":{},"3059":{},"3203":{},"3230":{},"3750":{},"4335":{},"4423":{},"5008":{},"5425":{},"5478":{},"5896":{},"6063":{},"6084":{},"6495":{}},"parent":{}}],["keysignature",{"_index":521,"name":{"1468":{},"1552":{},"2623":{},"6797":{}},"parent":{"2624":{},"2625":{},"2626":{},"2627":{},"2628":{},"2629":{},"2630":{},"2631":{},"2632":{},"2633":{},"2634":{},"2635":{},"2636":{},"2637":{},"2638":{},"2639":{},"2640":{},"2641":{},"2642":{},"2643":{},"2644":{},"2645":{},"2646":{},"2647":{},"2648":{},"2649":{},"2650":{},"2651":{},"2652":{},"2653":{},"2654":{},"2655":{},"2656":{},"2657":{},"2658":{},"2659":{},"2660":{},"2661":{},"2662":{},"2663":{},"2664":{},"2665":{},"2666":{},"2667":{},"2668":{},"2669":{},"2670":{},"2671":{},"2672":{},"2673":{},"2674":{},"2675":{},"2676":{},"2677":{},"2678":{},"2679":{},"2680":{},"2681":{},"2682":{},"2683":{},"2684":{},"2685":{},"2686":{},"2687":{}}}],["keysignote",{"_index":494,"name":{"1406":{},"1469":{},"2688":{},"6798":{}},"parent":{"2689":{},"2690":{},"2691":{},"2692":{},"2693":{},"2694":{},"2695":{},"2696":{},"2697":{},"2698":{},"2699":{},"2700":{},"2714":{},"2715":{},"2716":{},"2717":{},"2718":{},"2719":{},"2720":{},"2721":{},"2722":{},"2723":{},"2724":{},"2725":{},"2726":{},"2727":{},"2728":{},"2729":{},"2730":{},"2731":{},"2732":{},"2733":{},"2734":{},"2735":{},"2736":{},"2737":{},"2738":{},"2739":{},"2740":{},"2741":{},"2742":{},"2743":{},"2744":{},"2745":{},"2746":{},"2747":{},"2748":{},"2749":{},"2750":{},"2751":{},"2752":{},"2753":{},"2754":{},"2755":{},"2756":{},"2757":{},"2758":{},"2759":{},"2760":{},"2761":{},"2762":{},"2763":{},"2764":{},"2765":{},"2766":{},"2767":{},"2768":{},"2769":{},"2770":{},"2771":{},"2772":{},"2773":{},"2774":{},"2775":{},"2776":{},"2777":{},"2778":{},"2779":{},"2780":{},"2781":{},"2782":{},"2783":{},"2784":{},"2785":{},"2786":{},"2787":{},"2788":{},"2789":{},"2790":{},"2791":{},"2792":{},"2793":{},"2794":{},"2795":{},"2796":{},"2797":{},"2798":{},"2799":{},"2800":{},"2801":{},"2802":{},"2803":{},"2804":{},"2805":{},"2806":{},"2807":{},"2808":{},"2809":{},"2810":{},"2811":{},"2812":{},"2813":{},"2814":{},"2815":{},"2816":{},"2817":{},"2818":{},"2819":{},"2820":{},"2821":{},"2822":{}}}],["keysignote.__type",{"_index":811,"name":{},"parent":{"2701":{},"2702":{},"2703":{},"2704":{},"2705":{},"2706":{},"2707":{},"2708":{},"2709":{},"2710":{},"2711":{},"2712":{},"2713":{}}}],["keyval",{"_index":413,"name":{"1235":{}},"parent":{}}],["keyvals",{"_index":412,"name":{"1234":{}},"parent":{}}],["keyvalue",{"_index":847,"name":{"2983":{}},"parent":{}}],["last_indices",{"_index":1071,"name":{"4174":{},"4792":{}},"parent":{}}],["last_note",{"_index":1070,"name":{"4173":{},"4790":{}},"parent":{}}],["last_x_shift",{"_index":1135,"name":{"4800":{},"5610":{},"5771":{}},"parent":{}}],["lastcontext",{"_index":973,"name":{"3731":{}},"parent":{}}],["layoutmetrics",{"_index":1084,"name":{"4237":{}},"parent":{"4238":{},"4239":{},"4240":{},"4241":{}}}],["lbracket",{"_index":429,"name":{"1253":{}},"parent":{}}],["lcm",{"_index":655,"name":{"1673":{}},"parent":{}}],["lcmm",{"_index":656,"name":{"1674":{}},"parent":{}}],["leaststring",{"_index":790,"name":{"2458":{},"5438":{}},"parent":{}}],["ledger_line_offset",{"_index":749,"name":{"2191":{},"4347":{}},"parent":{}}],["left",{"_index":81,"name":{"81":{},"619":{},"2825":{},"4244":{},"6052":{},"6215":{}},"parent":{}}],["left_bar",{"_index":988,"name":{"3885":{}},"parent":{}}],["left_shift",{"_index":816,"name":{"2892":{}},"parent":{}}],["left_shift_px",{"_index":1059,"name":{"4117":{}},"parent":{}}],["left_shift_ticks",{"_index":1058,"name":{"4116":{}},"parent":{}}],["leftdisplacedheadpx",{"_index":882,"name":{"3032":{},"6311":{}},"parent":{}}],["leftsidebearing",{"_index":592,"name":{"1591":{}},"parent":{}}],["lessthan",{"_index":666,"name":{"1688":{}},"parent":{}}],["lessthanequals",{"_index":667,"name":{"1689":{}},"parent":{}}],["line",{"_index":0,"name":{"0":{},"3":{},"629":{},"746":{},"757":{},"1220":{},"1958":{},"2034":{},"2184":{},"2922":{},"3019":{},"3048":{},"3189":{},"4316":{},"4337":{},"5427":{},"6065":{},"6422":{}},"parent":{"1":{}}}],["line.__type",{"_index":3,"name":{},"parent":{"2":{},"3":{},"4":{},"5":{},"6":{},"7":{}}}],["line_above",{"_index":700,"name":{"1926":{}},"parent":{}}],["line_below",{"_index":699,"name":{"1925":{}},"parent":{}}],["line_config",{"_index":983,"name":{"3880":{}},"parent":{}}],["line_dash",{"_index":1074,"name":{"4189":{}},"parent":{}}],["line_style",{"_index":240,"name":{"470":{}},"parent":{}}],["line_thickness",{"_index":838,"name":{"2925":{}},"parent":{}}],["line_width",{"_index":236,"name":{"467":{},"4188":{},"5840":{}},"parent":{}}],["lineendtype",{"_index":972,"name":{"3730":{}},"parent":{}}],["lineto",{"_index":293,"name":{"592":{},"3700":{},"5326":{}},"parent":{}}],["linewidth",{"_index":474,"name":{"1332":{},"5283":{},"5296":{}},"parent":{}}],["list",{"_index":633,"name":{"1639":{}},"parent":{}}],["load",{"_index":614,"name":{"1618":{}},"parent":{}}],["loadmetrics",{"_index":721,"name":{"1967":{},"6350":{}},"parent":{}}],["loadwebfont",{"_index":612,"name":{"1616":{}},"parent":{}}],["loadwebfonts",{"_index":613,"name":{"1617":{}},"parent":{}}],["location",{"_index":1310,"name":{"6695":{}},"parent":{}}],["location_bottom",{"_index":1317,"name":{"6706":{}},"parent":{}}],["location_top",{"_index":1316,"name":{"6705":{}},"parent":{}}],["log",{"_index":1347,"name":{"6843":{}},"parent":{}}],["lookupbeamdirection",{"_index":227,"name":{"411":{}},"parent":{}}],["lookupfontmetric",{"_index":719,"name":{"1965":{},"6348":{}},"parent":{}}],["lookupglyph",{"_index":720,"name":{"1966":{},"6349":{}},"parent":{}}],["lookupmetric",{"_index":622,"name":{"1627":{}},"parent":{}}],["lowerkerningtext",{"_index":334,"name":{"656":{}},"parent":{}}],["lowest_displaced_line",{"_index":1097,"name":{"4312":{}},"parent":{}}],["lowest_line",{"_index":1095,"name":{"4310":{}},"parent":{}}],["lowest_non_displaced_line",{"_index":1099,"name":{"4314":{}},"parent":{}}],["lparen",{"_index":423,"name":{"1246":{}},"parent":{}}],["makeabs",{"_index":670,"name":{"1694":{}},"parent":{}}],["maketimesignatureglyph",{"_index":1296,"name":{"6434":{}},"parent":{}}],["map",{"_index":634,"name":{"1640":{},"1644":{}},"parent":{}}],["match",{"_index":910,"name":{"3556":{}},"parent":{}}],["matchedstring",{"_index":926,"name":{"3574":{}},"parent":{}}],["matches",{"_index":927,"name":{"3575":{}},"parent":{}}],["matchfail",{"_index":932,"name":{"3586":{}},"parent":{}}],["matchsuccess",{"_index":933,"name":{"3587":{}},"parent":{}}],["matchtoken",{"_index":934,"name":{"3588":{}},"parent":{}}],["max_slope",{"_index":208,"name":{"390":{}},"parent":{}}],["maxheight",{"_index":1248,"name":{"6044":{}},"parent":{}}],["maxiterations",{"_index":627,"name":{"1632":{},"5347":{}},"parent":{}}],["maxline",{"_index":756,"name":{"2207":{},"4317":{},"4355":{}},"parent":{}}],["maxsizeglyph",{"_index":1240,"name":{"6031":{}},"parent":{}}],["maybe",{"_index":919,"name":{"3567":{}},"parent":{}}],["maybeslash",{"_index":427,"name":{"1251":{}},"parent":{}}],["mean",{"_index":1262,"name":{"6221":{}},"parent":{}}],["measuretext",{"_index":300,"name":{"599":{},"3713":{},"5333":{}},"parent":{}}],["mergewith",{"_index":259,"name":{"551":{}},"parent":{}}],["metrics",{"_index":333,"name":{"655":{},"1567":{},"1976":{},"5136":{},"6366":{},"6708":{}},"parent":{}}],["microtones",{"_index":421,"name":{"1243":{}},"parent":{}}],["mid",{"_index":1143,"name":{"4850":{}},"parent":{}}],["midline",{"_index":1349,"name":{"6845":{}},"parent":{}}],["min_flat_beam_offset",{"_index":214,"name":{"396":{}},"parent":{}}],["min_slope",{"_index":209,"name":{"391":{}},"parent":{}}],["minannotationpadding",{"_index":93,"name":{"98":{}},"parent":{}}],["minline",{"_index":755,"name":{"2206":{},"4318":{},"4354":{}},"parent":{}}],["minnoteheadpadding",{"_index":752,"name":{"2196":{},"4348":{}},"parent":{}}],["minpadding",{"_index":338,"name":{"660":{},"3418":{}},"parent":{}}],["mixed",{"_index":940,"name":{"3602":{}},"parent":{}}],["mode",{"_index":1375,"name":{"6993":{}},"parent":{}}],["modifier",{"_index":522,"name":{"1470":{},"2829":{},"6799":{}},"parent":{"2830":{},"2831":{},"2832":{},"2833":{},"2834":{},"2835":{},"2836":{},"2837":{},"2838":{},"2839":{},"2840":{},"2841":{},"2842":{},"2843":{},"2844":{},"2845":{},"2846":{},"2847":{},"2848":{},"2849":{},"2850":{},"2851":{},"2852":{},"2853":{},"2854":{},"2855":{},"2856":{},"2857":{},"2858":{},"2859":{},"2860":{},"2861":{},"2862":{},"2863":{},"2864":{},"2865":{},"2866":{},"2867":{},"2868":{},"2869":{},"2870":{},"2871":{},"2872":{},"2873":{},"2874":{},"2875":{},"2876":{},"2877":{},"2878":{},"2879":{},"2880":{},"2881":{},"2882":{},"2883":{},"2884":{},"2885":{},"2886":{},"2887":{},"2888":{},"2889":{}}}],["modifiercontext",{"_index":503,"name":{"1419":{},"1471":{},"2899":{}},"parent":{"2900":{},"2901":{},"2902":{},"2903":{},"2904":{},"2905":{},"2906":{},"2907":{},"2908":{},"2909":{},"2910":{},"2911":{},"2912":{}}}],["modifiercontextmember",{"_index":821,"name":{"2898":{}},"parent":{}}],["modifiercontextmetrics",{"_index":819,"name":{"2895":{}},"parent":{"2896":{},"2897":{}}}],["modifiercontextstate",{"_index":814,"name":{"2890":{}},"parent":{"2891":{},"2892":{},"2893":{},"2894":{}}}],["modifierposition",{"_index":542,"name":{"1527":{},"2823":{}},"parent":{"2824":{},"2825":{},"2826":{},"2827":{},"2828":{}}}],["modleftpx",{"_index":880,"name":{"3030":{},"6309":{}},"parent":{}}],["modrightpx",{"_index":881,"name":{"3031":{},"6310":{}},"parent":{}}],["monospaced",{"_index":1239,"name":{"6028":{}},"parent":{}}],["move",{"_index":257,"name":{"549":{},"1957":{}},"parent":{}}],["moveto",{"_index":292,"name":{"591":{},"3699":{},"5325":{}},"parent":{}}],["multimeasurerest",{"_index":504,"name":{"1420":{},"1472":{},"2927":{},"6800":{}},"parent":{"2928":{},"2929":{},"2930":{},"2931":{},"2932":{},"2933":{},"2934":{},"2935":{},"2936":{},"2937":{},"2938":{},"2939":{},"2940":{},"2941":{},"2942":{},"2943":{},"2944":{},"2945":{},"2946":{},"2947":{},"2948":{},"2949":{},"2950":{},"2951":{},"2952":{},"2953":{},"2954":{},"2955":{},"2956":{},"2957":{},"2958":{},"2959":{},"2960":{},"2961":{},"2962":{},"2963":{},"2964":{},"2965":{},"2966":{},"2967":{},"2968":{},"2969":{},"2970":{},"2971":{},"2972":{}}}],["multimeasurerestrenderoptions",{"_index":827,"name":{"2913":{}},"parent":{"2914":{},"2915":{},"2916":{},"2917":{},"2918":{},"2919":{},"2920":{},"2921":{},"2922":{},"2923":{},"2924":{},"2925":{},"2926":{}}}],["multiply",{"_index":662,"name":{"1683":{}},"parent":{}}],["music",{"_index":523,"name":{"1473":{},"2989":{}},"parent":{"2990":{},"2991":{},"2992":{},"2993":{},"2994":{},"2995":{},"2996":{},"2997":{},"2998":{},"2999":{},"3000":{},"3001":{},"3002":{},"3003":{},"3004":{},"3005":{},"3006":{},"3007":{},"3008":{},"3009":{},"3010":{},"3011":{},"3012":{},"3013":{}}}],["music_font_stack",{"_index":718,"name":{"1964":{},"6347":{}},"parent":{}}],["name",{"_index":583,"name":{"1574":{},"3656":{},"4669":{}},"parent":{}}],["names",{"_index":1301,"name":{"6685":{}},"parent":{}}],["near_head",{"_index":388,"name":{"1102":{}},"parent":{}}],["near_top",{"_index":389,"name":{"1103":{}},"parent":{}}],["nesting_offset",{"_index":1318,"name":{"6707":{}},"parent":{}}],["newfromelementid",{"_index":484,"name":{"1387":{}},"parent":{}}],["no_text_format",{"_index":322,"name":{"642":{}},"parent":{}}],["nojustification",{"_index":1198,"name":{"5351":{},"5368":{}},"parent":{}}],["non_displaced_x",{"_index":1093,"name":{"4308":{}},"parent":{}}],["none",{"_index":317,"name":{"631":{},"3725":{},"4002":{},"4539":{},"4848":{}},"parent":{}}],["nopadding",{"_index":1203,"name":{"5358":{}},"parent":{}}],["normal",{"_index":596,"name":{"1596":{},"1599":{}},"parent":{}}],["normalizeangle",{"_index":1351,"name":{"6847":{}},"parent":{}}],["nospace",{"_index":915,"name":{"3563":{}},"parent":{}}],["notation_font_scale",{"_index":556,"name":{"1541":{}},"parent":{}}],["note",{"_index":407,"name":{"1227":{},"1474":{},"2974":{},"3053":{},"4325":{},"6801":{}},"parent":{"3054":{},"3055":{},"3056":{},"3057":{},"3058":{},"3059":{},"3060":{},"3061":{},"3062":{},"3076":{},"3077":{},"3078":{},"3079":{},"3080":{},"3081":{},"3082":{},"3083":{},"3084":{},"3085":{},"3086":{},"3087":{},"3088":{},"3089":{},"3090":{},"3091":{},"3092":{},"3093":{},"3094":{},"3095":{},"3096":{},"3097":{},"3098":{},"3099":{},"3100":{},"3101":{},"3102":{},"3103":{},"3104":{},"3105":{},"3106":{},"3107":{},"3108":{},"3109":{},"3110":{},"3111":{},"3112":{},"3113":{},"3114":{},"3115":{},"3116":{},"3117":{},"3118":{},"3119":{},"3120":{},"3121":{},"3122":{},"3123":{},"3124":{},"3125":{},"3126":{},"3127":{},"3128":{},"3129":{},"3130":{},"3131":{},"3132":{},"3133":{},"3134":{},"3135":{},"3136":{},"3137":{},"3138":{},"3139":{},"3140":{},"3141":{},"3142":{},"3143":{},"3144":{},"3145":{},"3146":{},"3147":{},"3148":{},"3149":{},"3150":{},"3151":{},"3152":{},"3153":{},"3154":{},"3155":{},"3156":{},"3157":{},"3158":{},"3159":{},"3160":{},"3161":{},"3162":{},"3163":{},"3164":{},"3165":{},"3166":{},"3167":{},"3168":{},"3169":{},"3170":{},"3171":{},"3172":{},"3173":{},"3174":{},"3175":{},"3176":{},"3177":{},"3178":{},"3179":{},"3180":{},"3181":{},"3182":{},"3183":{},"3184":{},"3185":{},"3186":{},"3187":{}}}],["note.__type",{"_index":890,"name":{},"parent":{"3063":{},"3064":{},"3065":{},"3066":{},"3067":{},"3068":{},"3069":{},"3070":{},"3071":{},"3072":{},"3073":{},"3074":{},"3075":{}}}],["note_heads",{"_index":779,"name":{"2248":{},"4396":{}},"parent":{}}],["note_type",{"_index":894,"name":{"3199":{}},"parent":{}}],["noteaccidental",{"_index":843,"name":{"2973":{}},"parent":{"2974":{},"2975":{}}}],["noteduration",{"_index":885,"name":{"3035":{}},"parent":{"3036":{},"3037":{},"3038":{}}}],["notehead",{"_index":524,"name":{"1475":{},"1583":{},"3209":{},"6802":{}},"parent":{"3210":{},"3211":{},"3212":{},"3213":{},"3214":{},"3215":{},"3216":{},"3217":{},"3218":{},"3219":{},"3220":{},"3221":{},"3222":{},"3223":{},"3224":{},"3225":{},"3226":{},"3227":{},"3228":{},"3229":{},"3230":{},"3231":{},"3232":{},"3233":{},"3247":{},"3248":{},"3249":{},"3250":{},"3251":{},"3252":{},"3253":{},"3254":{},"3255":{},"3256":{},"3257":{},"3258":{},"3259":{},"3260":{},"3261":{},"3262":{},"3263":{},"3264":{},"3265":{},"3266":{},"3267":{},"3268":{},"3269":{},"3270":{},"3271":{},"3272":{},"3273":{},"3274":{},"3275":{},"3276":{},"3277":{},"3278":{},"3279":{},"3280":{},"3281":{},"3282":{},"3283":{},"3284":{},"3285":{},"3286":{},"3287":{},"3288":{},"3289":{},"3290":{},"3291":{},"3292":{},"3293":{},"3294":{},"3295":{},"3296":{},"3297":{},"3298":{},"3299":{},"3300":{},"3301":{},"3302":{},"3303":{},"3304":{},"3305":{},"3306":{},"3307":{},"3308":{},"3309":{},"3310":{},"3311":{},"3312":{},"3313":{},"3314":{},"3315":{},"3316":{},"3317":{},"3318":{},"3319":{},"3320":{},"3321":{},"3322":{},"3323":{},"3324":{},"3325":{},"3326":{},"3327":{},"3328":{},"3329":{},"3330":{},"3331":{},"3332":{},"3333":{},"3334":{},"3335":{},"3336":{},"3337":{},"3338":{},"3339":{},"3340":{},"3341":{},"3342":{},"3343":{},"3344":{},"3345":{},"3346":{},"3347":{},"3348":{},"3349":{},"3350":{},"3351":{}}}],["notehead.__type",{"_index":898,"name":{},"parent":{"3234":{},"3235":{},"3236":{},"3237":{},"3238":{},"3239":{},"3240":{},"3241":{},"3242":{},"3243":{},"3244":{},"3245":{},"3246":{}}}],["noteheads",{"_index":778,"name":{"2247":{},"4395":{}},"parent":{}}],["noteheadstruct",{"_index":891,"name":{"3188":{}},"parent":{"3189":{},"3190":{},"3191":{},"3192":{},"3193":{},"3194":{},"3195":{},"3196":{},"3197":{},"3198":{},"3199":{},"3200":{},"3201":{},"3202":{},"3203":{},"3204":{},"3205":{},"3206":{},"3207":{},"3208":{}}}],["notemetrics",{"_index":877,"name":{"3026":{}},"parent":{"3027":{},"3028":{},"3029":{},"3030":{},"3031":{},"3032":{},"3033":{},"3034":{}}}],["notename",{"_index":418,"name":{"1240":{}},"parent":{}}],["noteparts",{"_index":844,"name":{"2976":{}},"parent":{"2977":{},"2978":{}}}],["notepiece",{"_index":432,"name":{"1256":{}},"parent":{"1257":{},"1258":{},"1259":{}}}],["notepx",{"_index":879,"name":{"3029":{},"6308":{}},"parent":{}}],["notes",{"_index":215,"name":{"397":{},"1226":{},"1269":{},"1319":{},"6711":{}},"parent":{}}],["notes_occupied",{"_index":1311,"name":{"6696":{}},"parent":{}}],["notestruct",{"_index":889,"name":{"3045":{}},"parent":{"3046":{},"3047":{},"3048":{},"3049":{},"3050":{},"3051":{},"3052":{}}}],["notesubgroup",{"_index":513,"name":{"1434":{},"1476":{},"3352":{},"6803":{}},"parent":{"3353":{},"3354":{},"3355":{},"3356":{},"3357":{},"3358":{},"3359":{},"3360":{},"3361":{},"3362":{},"3363":{},"3364":{},"3365":{},"3366":{},"3367":{},"3368":{},"3369":{},"3370":{},"3371":{},"3372":{},"3373":{},"3374":{},"3375":{},"3376":{},"3377":{},"3378":{},"3379":{},"3380":{},"3381":{},"3382":{},"3383":{},"3384":{},"3385":{},"3386":{},"3387":{},"3388":{},"3389":{},"3390":{},"3391":{},"3392":{},"3393":{},"3394":{},"3395":{},"3396":{},"3397":{},"3398":{},"3399":{},"3400":{},"3401":{},"3402":{},"3403":{},"3404":{},"3405":{},"3406":{},"3407":{},"3408":{},"3409":{},"3410":{},"3411":{},"3412":{},"3413":{},"3414":{}}}],["notetointeger",{"_index":1302,"name":{"6687":{}},"parent":{}}],["notevalues",{"_index":862,"name":{"3001":{}},"parent":{}}],["num",{"_index":1292,"name":{"6423":{}},"parent":{}}],["num_beats",{"_index":1370,"name":{"6984":{}},"parent":{}}],["num_lines",{"_index":991,"name":{"3889":{}},"parent":{}}],["num_notes",{"_index":1312,"name":{"6697":{}},"parent":{}}],["num_tones",{"_index":852,"name":{"2990":{}},"parent":{}}],["numacc",{"_index":6,"name":{"6":{}},"parent":{}}],["number_glyph_point",{"_index":833,"name":{"2919":{}},"parent":{}}],["number_line",{"_index":832,"name":{"2918":{}},"parent":{}}],["number_of_measures",{"_index":828,"name":{"2914":{}},"parent":{}}],["numerator",{"_index":657,"name":{"1676":{}},"parent":{}}],["nummatches",{"_index":928,"name":{"3576":{}},"parent":{}}],["o",{"_index":594,"name":{"1593":{}},"parent":{}}],["octave",{"_index":419,"name":{"1241":{},"1259":{},"3018":{}},"parent":{}}],["octave_shift",{"_index":746,"name":{"2180":{},"4333":{},"5423":{}},"parent":{}}],["oldvalue",{"_index":953,"name":{"3658":{}},"parent":{}}],["oneormore",{"_index":918,"name":{"3566":{}},"parent":{}}],["onregister",{"_index":57,"name":{"57":{},"138":{},"211":{},"349":{},"427":{},"506":{},"721":{},"788":{},"927":{},"1070":{},"1126":{},"1191":{},"1349":{},"1743":{},"1897":{},"2009":{},"2150":{},"2361":{},"2429":{},"2593":{},"2665":{},"2800":{},"2867":{},"2950":{},"3165":{},"3330":{},"3392":{},"3470":{},"3533":{},"3631":{},"3854":{},"3973":{},"4041":{},"4091":{},"4147":{},"4214":{},"4281":{},"4512":{},"4585":{},"4642":{},"4707":{},"4765":{},"4824":{},"4886":{},"4957":{},"5110":{},"5180":{},"5255":{},"5390":{},"5573":{},"5633":{},"5740":{},"5795":{},"5862":{},"6000":{},"6188":{},"6280":{},"6397":{},"6463":{},"6598":{},"6661":{},"6739":{},"6911":{},"6960":{},"7028":{}},"parent":{}}],["onupdate",{"_index":964,"name":{"3672":{}},"parent":{}}],["opengroup",{"_index":276,"name":{"574":{},"3710":{},"5305":{}},"parent":{}}],["options",{"_index":434,"name":{"1266":{},"1278":{},"1308":{},"3897":{},"5352":{},"5665":{}},"parent":{}}],["opts",{"_index":411,"name":{"1233":{}},"parent":{}}],["or",{"_index":920,"name":{"3568":{}},"parent":{}}],["ornament",{"_index":498,"name":{"1414":{},"1477":{},"3415":{},"6804":{}},"parent":{"3416":{},"3417":{},"3418":{},"3419":{},"3420":{},"3421":{},"3422":{},"3423":{},"3424":{},"3425":{},"3426":{},"3427":{},"3428":{},"3429":{},"3430":{},"3434":{},"3435":{},"3436":{},"3437":{},"3438":{},"3439":{},"3440":{},"3441":{},"3442":{},"3443":{},"3444":{},"3445":{},"3446":{},"3447":{},"3448":{},"3449":{},"3450":{},"3451":{},"3452":{},"3453":{},"3454":{},"3455":{},"3456":{},"3457":{},"3458":{},"3459":{},"3460":{},"3461":{},"3462":{},"3463":{},"3464":{},"3465":{},"3466":{},"3467":{},"3468":{},"3469":{},"3470":{},"3471":{},"3472":{},"3473":{},"3474":{},"3475":{},"3476":{},"3477":{},"3478":{},"3479":{},"3480":{},"3481":{},"3482":{},"3483":{},"3484":{},"3485":{},"3486":{},"3487":{},"3488":{},"3489":{},"3490":{},"3491":{},"3492":{}}}],["ornament.__type",{"_index":905,"name":{},"parent":{"3431":{},"3432":{},"3433":{}}}],["ornamentalignwithnotehead",{"_index":901,"name":{"3422":{}},"parent":{}}],["ornamentarticulation",{"_index":903,"name":{"3424":{}},"parent":{}}],["ornamentattack",{"_index":900,"name":{"3421":{}},"parent":{}}],["ornamentnotetransition",{"_index":899,"name":{"3420":{}},"parent":{}}],["ornamentrelease",{"_index":902,"name":{"3423":{}},"parent":{}}],["outline",{"_index":713,"name":{"1954":{}},"parent":{}}],["outlinecode",{"_index":714,"name":{"1956":{}},"parent":{"1957":{},"1958":{},"1959":{},"1960":{}}}],["padding_left",{"_index":834,"name":{"2920":{},"4186":{}},"parent":{}}],["padding_right",{"_index":835,"name":{"2921":{},"4187":{}},"parent":{}}],["paddingleft",{"_index":1087,"name":{"4240":{}},"parent":{}}],["paddingright",{"_index":1088,"name":{"4241":{}},"parent":{}}],["params",{"_index":404,"name":{"1223":{}},"parent":{}}],["parenleftpadding",{"_index":20,"name":{"21":{}},"parent":{}}],["parenrightpadding",{"_index":23,"name":{"23":{}},"parent":{}}],["parent",{"_index":1188,"name":{"5301":{}},"parent":{}}],["parenthesis",{"_index":525,"name":{"1478":{},"3493":{},"6805":{}},"parent":{"3494":{},"3495":{},"3496":{},"3497":{},"3498":{},"3499":{},"3500":{},"3501":{},"3502":{},"3503":{},"3504":{},"3505":{},"3506":{},"3507":{},"3508":{},"3509":{},"3510":{},"3511":{},"3512":{},"3513":{},"3514":{},"3515":{},"3516":{},"3517":{},"3518":{},"3519":{},"3520":{},"3521":{},"3522":{},"3523":{},"3524":{},"3525":{},"3526":{},"3527":{},"3528":{},"3529":{},"3530":{},"3531":{},"3532":{},"3533":{},"3534":{},"3535":{},"3536":{},"3537":{},"3538":{},"3539":{},"3540":{},"3541":{},"3542":{},"3543":{},"3544":{},"3545":{},"3546":{},"3547":{},"3548":{},"3549":{},"3550":{},"3551":{},"3552":{},"3553":{},"3554":{},"3555":{}}}],["parse",{"_index":464,"name":{"1316":{},"1698":{},"3585":{}},"parent":{}}],["parsednote",{"_index":886,"name":{"3039":{}},"parent":{"3040":{},"3041":{},"3042":{},"3043":{},"3044":{}}}],["parser",{"_index":461,"name":{"1312":{},"1479":{},"3582":{}},"parent":{"3583":{},"3584":{},"3585":{},"3586":{},"3587":{},"3588":{},"3589":{},"3590":{},"3591":{},"3592":{}}}],["parsetimespec",{"_index":1295,"name":{"6433":{}},"parent":{}}],["partial_beam_length",{"_index":213,"name":{"395":{}},"parent":{}}],["partialbeamdirection",{"_index":197,"name":{"375":{}},"parent":{}}],["path",{"_index":1184,"name":{"5291":{}},"parent":{}}],["pedalmarking",{"_index":512,"name":{"1433":{},"1480":{},"1579":{},"3593":{},"6806":{}},"parent":{"3594":{},"3595":{},"3596":{},"3597":{},"3598":{},"3599":{},"3603":{},"3604":{},"3605":{},"3606":{},"3607":{},"3608":{},"3609":{},"3614":{},"3615":{},"3616":{},"3617":{},"3618":{},"3619":{},"3620":{},"3621":{},"3622":{},"3623":{},"3624":{},"3625":{},"3626":{},"3627":{},"3628":{},"3629":{},"3630":{},"3631":{},"3632":{},"3633":{},"3634":{},"3635":{},"3636":{},"3637":{},"3638":{},"3639":{},"3640":{},"3641":{},"3642":{},"3643":{},"3644":{},"3645":{},"3646":{},"3647":{},"3648":{},"3649":{},"3650":{},"3651":{},"3652":{},"3653":{}}}],["pedalmarking.__type",{"_index":938,"name":{},"parent":{"3600":{},"3601":{},"3602":{},"3610":{},"3611":{},"3612":{},"3613":{}}}],["pen",{"_index":1185,"name":{"5292":{}},"parent":{}}],["piece",{"_index":402,"name":{"1221":{},"1260":{},"1279":{}},"parent":{"1261":{},"1262":{},"1263":{},"1264":{},"1265":{},"1266":{},"1267":{}}}],["pieces",{"_index":403,"name":{"1222":{}},"parent":{}}],["placeglyphonline",{"_index":365,"name":{"772":{},"2650":{},"4025":{},"4264":{},"4569":{},"4626":{},"4691":{},"4749":{},"4870":{},"6447":{}},"parent":{}}],["plotdebugging",{"_index":639,"name":{"1650":{}},"parent":{}}],["plotmetrics",{"_index":106,"name":{"237":{},"813":{},"957":{},"1768":{},"2037":{},"2199":{},"2454":{},"2690":{},"3055":{},"3212":{},"3741":{},"4351":{},"4981":{},"5434":{},"5889":{},"6075":{},"6488":{}},"parent":{}}],["point",{"_index":360,"name":{"744":{},"759":{},"6430":{}},"parent":{}}],["pointerbbox",{"_index":968,"name":{"3680":{}},"parent":{}}],["pos",{"_index":924,"name":{"3572":{}},"parent":{}}],["position",{"_index":14,"name":{"14":{},"100":{},"171":{},"462":{},"663":{},"751":{},"1098":{},"1106":{},"1154":{},"1704":{},"1923":{},"2387":{},"2626":{},"2831":{},"3355":{},"3425":{},"3497":{},"4007":{},"4252":{},"4552":{},"4611":{},"4673":{},"4733":{},"4857":{},"5138":{},"5216":{},"5823":{},"5831":{},"5845":{},"6427":{},"6623":{},"6872":{}},"parent":{}}],["position_end",{"_index":385,"name":{"1099":{}},"parent":{}}],["positions",{"_index":1216,"name":{"5416":{},"5833":{}},"parent":{}}],["positionsstring",{"_index":1230,"name":{"5834":{}},"parent":{}}],["positionstring",{"_index":15,"name":{"15":{},"101":{},"172":{},"463":{},"664":{},"1107":{},"1155":{},"1705":{},"2388":{},"2832":{},"3356":{},"3426":{},"3498":{},"5139":{},"5217":{},"5832":{},"6624":{},"6873":{}},"parent":{}}],["postformat",{"_index":187,"name":{"328":{},"414":{},"906":{},"1049":{},"1665":{},"1797":{},"2129":{},"2198":{},"2270":{},"2495":{},"2779":{},"2912":{},"3143":{},"3309":{},"3833":{},"4350":{},"4421":{},"5005":{},"5475":{},"5979":{},"6167":{},"6254":{},"6342":{},"6577":{}},"parent":{}}],["postformatted",{"_index":188,"name":{"329":{},"398":{},"907":{},"1050":{},"1877":{},"2130":{},"2342":{},"2573":{},"2780":{},"3144":{},"3310":{},"3834":{},"4493":{},"5089":{},"5553":{},"5980":{},"6168":{},"6255":{},"6578":{}},"parent":{}}],["precalculatemintotalwidth",{"_index":645,"name":{"1657":{}},"parent":{}}],["prefix",{"_index":1350,"name":{"6846":{}},"parent":{}}],["preformat",{"_index":110,"name":{"243":{},"413":{},"821":{},"963":{},"1662":{},"1774":{},"2042":{},"2243":{},"2394":{},"2468":{},"2694":{},"2911":{},"3141":{},"3227":{},"3359":{},"3746":{},"4391":{},"5087":{},"5448":{},"5893":{},"6081":{},"6252":{},"6341":{},"6492":{},"7014":{}},"parent":{}}],["preformatted",{"_index":186,"name":{"327":{},"905":{},"1048":{},"1876":{},"2128":{},"2341":{},"2572":{},"2778":{},"3142":{},"3308":{},"3832":{},"4492":{},"5088":{},"5552":{},"5978":{},"6166":{},"6253":{},"6576":{}},"parent":{}}],["quadratic",{"_index":715,"name":{"1959":{}},"parent":{}}],["quadraticcurveto",{"_index":295,"name":{"594":{},"3702":{},"5328":{}},"parent":{}}],["quotient",{"_index":668,"name":{"1692":{}},"parent":{}}],["rasquedo_down",{"_index":1177,"name":{"5211":{}},"parent":{}}],["rasquedo_up",{"_index":1178,"name":{"5212":{}},"parent":{}}],["ratioed",{"_index":1313,"name":{"6698":{}},"parent":{}}],["rbracket",{"_index":430,"name":{"1254":{}},"parent":{}}],["rect",{"_index":288,"name":{"587":{},"3694":{},"5321":{}},"parent":{}}],["register",{"_index":959,"name":{"3667":{}},"parent":{}}],["registerinfo",{"_index":1244,"name":{"6040":{}},"parent":{}}],["registry",{"_index":526,"name":{"1481":{},"3659":{}},"parent":{"3660":{},"3661":{},"3662":{},"3663":{},"3664":{},"3665":{},"3666":{},"3667":{},"3668":{},"3669":{},"3670":{},"3671":{},"3672":{}}}],["registryupdate",{"_index":952,"name":{"3654":{}},"parent":{"3655":{},"3656":{},"3657":{},"3658":{}}}],["release_width",{"_index":238,"name":{"468":{}},"parent":{}}],["remainder",{"_index":669,"name":{"1693":{}},"parent":{}}],["removeclass",{"_index":56,"name":{"56":{},"137":{},"210":{},"348":{},"426":{},"505":{},"720":{},"787":{},"926":{},"1069":{},"1125":{},"1190":{},"1348":{},"1742":{},"1896":{},"2008":{},"2149":{},"2360":{},"2428":{},"2592":{},"2664":{},"2799":{},"2866":{},"2949":{},"3164":{},"3329":{},"3391":{},"3469":{},"3532":{},"3630":{},"3853":{},"3972":{},"4040":{},"4090":{},"4146":{},"4213":{},"4280":{},"4511":{},"4584":{},"4641":{},"4706":{},"4764":{},"4823":{},"4885":{},"4956":{},"5109":{},"5179":{},"5254":{},"5389":{},"5572":{},"5632":{},"5739":{},"5794":{},"5861":{},"5999":{},"6187":{},"6279":{},"6396":{},"6462":{},"6597":{},"6660":{},"6738":{},"6910":{},"6959":{},"7027":{}},"parent":{}}],["render",{"_index":735,"name":{"1995":{},"6384":{}},"parent":{}}],["render_options",{"_index":19,"name":{"19":{},"176":{},"248":{},"383":{},"465":{},"826":{},"968":{},"1110":{},"1802":{},"2048":{},"2274":{},"2391":{},"2500":{},"2699":{},"2931":{},"3061":{},"3232":{},"3429":{},"3608":{},"3752":{},"4130":{},"4184":{},"4425":{},"4675":{},"4797":{},"5010":{},"5219":{},"5480":{},"5607":{},"5768":{},"5836":{},"5898":{},"6086":{},"6497":{},"6876":{},"6939":{}},"parent":{}}],["render_precision_places",{"_index":554,"name":{"1539":{}},"parent":{}}],["rendercontext",{"_index":527,"name":{"1482":{},"3681":{},"6807":{}},"parent":{"3682":{},"3683":{},"3684":{},"3685":{},"3686":{},"3687":{},"3688":{},"3689":{},"3690":{},"3691":{},"3692":{},"3693":{},"3694":{},"3695":{},"3696":{},"3697":{},"3698":{},"3699":{},"3700":{},"3701":{},"3702":{},"3703":{},"3704":{},"3705":{},"3706":{},"3707":{},"3708":{},"3709":{},"3710":{},"3711":{},"3712":{},"3713":{},"3714":{},"3715":{},"3716":{},"3717":{},"3718":{},"3719":{}}}],["rendercurve",{"_index":393,"name":{"1113":{}},"parent":{}}],["renderer",{"_index":480,"name":{"1376":{},"1483":{},"3728":{}},"parent":{"3729":{},"3730":{},"3731":{},"3732":{},"3733":{},"3734":{},"3735":{},"3736":{},"3737":{},"3738":{}}}],["rendererbackends",{"_index":543,"name":{"1528":{},"3721":{}},"parent":{"3722":{},"3723":{}}}],["rendererlineendtype",{"_index":544,"name":{"1529":{},"3724":{}},"parent":{"3725":{},"3726":{},"3727":{}}}],["renderglyph",{"_index":722,"name":{"1968":{},"6351":{}},"parent":{}}],["renderhairpin",{"_index":1066,"name":{"4134":{}},"parent":{}}],["renderoutline",{"_index":723,"name":{"1969":{},"6352":{}},"parent":{}}],["rendertext",{"_index":1142,"name":{"4810":{},"5619":{},"5781":{}},"parent":{}}],["rendertie",{"_index":1141,"name":{"4809":{},"5606":{},"5780":{}},"parent":{}}],["rendertostave",{"_index":736,"name":{"1997":{},"6363":{}},"parent":{}}],["rendervibrato",{"_index":1365,"name":{"6871":{}},"parent":{}}],["repeat_begin",{"_index":1047,"name":{"3999":{}},"parent":{}}],["repeat_both",{"_index":1049,"name":{"4001":{}},"parent":{}}],["repeat_end",{"_index":1048,"name":{"4000":{}},"parent":{}}],["repeatnote",{"_index":490,"name":{"1400":{},"1484":{},"3739":{},"6808":{}},"parent":{"3740":{},"3741":{},"3742":{},"3743":{},"3744":{},"3745":{},"3746":{},"3747":{},"3748":{},"3749":{},"3750":{},"3751":{},"3752":{},"3753":{},"3767":{},"3768":{},"3769":{},"3770":{},"3771":{},"3772":{},"3773":{},"3774":{},"3775":{},"3776":{},"3777":{},"3778":{},"3779":{},"3780":{},"3781":{},"3782":{},"3783":{},"3784":{},"3785":{},"3786":{},"3787":{},"3788":{},"3789":{},"3790":{},"3791":{},"3792":{},"3793":{},"3794":{},"3795":{},"3796":{},"3797":{},"3798":{},"3799":{},"3800":{},"3801":{},"3802":{},"3803":{},"3804":{},"3805":{},"3806":{},"3807":{},"3808":{},"3809":{},"3810":{},"3811":{},"3812":{},"3813":{},"3814":{},"3815":{},"3816":{},"3817":{},"3818":{},"3819":{},"3820":{},"3821":{},"3822":{},"3823":{},"3824":{},"3825":{},"3826":{},"3827":{},"3828":{},"3829":{},"3830":{},"3831":{},"3832":{},"3833":{},"3834":{},"3835":{},"3836":{},"3837":{},"3838":{},"3839":{},"3840":{},"3841":{},"3842":{},"3843":{},"3844":{},"3845":{},"3846":{},"3847":{},"3848":{},"3849":{},"3850":{},"3851":{},"3852":{},"3853":{},"3854":{},"3855":{},"3856":{},"3857":{},"3858":{},"3859":{},"3860":{},"3861":{},"3862":{},"3863":{},"3864":{},"3865":{},"3866":{},"3867":{},"3868":{},"3869":{},"3870":{},"3871":{},"3872":{},"3873":{},"3874":{},"3875":{}}}],["repeatnote.__type",{"_index":978,"name":{},"parent":{"3754":{},"3755":{},"3756":{},"3757":{},"3758":{},"3759":{},"3760":{},"3761":{},"3762":{},"3763":{},"3764":{},"3765":{},"3766":{}}}],["repetition",{"_index":528,"name":{"1485":{},"4534":{},"6809":{}},"parent":{"4535":{},"4536":{},"4537":{},"4538":{},"4552":{},"4553":{},"4554":{},"4555":{},"4556":{},"4557":{},"4558":{},"4559":{},"4560":{},"4561":{},"4562":{},"4563":{},"4564":{},"4565":{},"4566":{},"4567":{},"4568":{},"4569":{},"4570":{},"4571":{},"4572":{},"4573":{},"4574":{},"4575":{},"4576":{},"4577":{},"4578":{},"4579":{},"4580":{},"4581":{},"4582":{},"4583":{},"4584":{},"4585":{},"4586":{},"4587":{},"4588":{},"4589":{},"4590":{},"4591":{},"4592":{},"4593":{},"4594":{},"4595":{},"4596":{},"4597":{},"4598":{},"4599":{},"4600":{},"4601":{},"4602":{},"4603":{},"4604":{},"4605":{},"4606":{},"4607":{}}}],["repetition.__type",{"_index":1108,"name":{},"parent":{"4539":{},"4540":{},"4541":{},"4542":{},"4543":{},"4544":{},"4545":{},"4546":{},"4547":{},"4548":{},"4549":{},"4550":{},"4551":{}}}],["rerr",{"_index":1358,"name":{"6859":{}},"parent":{}}],["reset",{"_index":171,"name":{"308":{},"886":{},"1028":{},"1282":{},"1389":{},"1857":{},"1989":{},"2108":{},"2208":{},"2459":{},"2620":{},"2759":{},"3121":{},"3289":{},"3812":{},"4356":{},"5067":{},"5439":{},"5958":{},"6146":{},"6227":{},"6379":{},"6557":{}},"parent":{}}],["resetfont",{"_index":71,"name":{"71":{},"152":{},"225":{},"363":{},"441":{},"520":{},"734":{},"802":{},"939":{},"1084":{},"1140":{},"1205":{},"1363":{},"1757":{},"1911":{},"2023":{},"2163":{},"2374":{},"2443":{},"2607":{},"2679":{},"2814":{},"2881":{},"2964":{},"3179":{},"3343":{},"3406":{},"3484":{},"3547":{},"3645":{},"3867":{},"3986":{},"4055":{},"4105":{},"4161":{},"4228":{},"4295":{},"4525":{},"4599":{},"4656":{},"4721":{},"4779":{},"4838":{},"4900":{},"4970":{},"5124":{},"5194":{},"5269":{},"5403":{},"5587":{},"5647":{},"5753":{},"5809":{},"5876":{},"6014":{},"6202":{},"6294":{},"6411":{},"6477":{},"6612":{},"6675":{},"6753":{},"6925":{},"6974":{},"7041":{}},"parent":{}}],["resetlines",{"_index":997,"name":{"3901":{},"5669":{}},"parent":{}}],["resetpiece",{"_index":445,"name":{"1286":{}},"parent":{}}],["resettuplet",{"_index":182,"name":{"323":{},"901":{},"1043":{},"1872":{},"2123":{},"2336":{},"2567":{},"2774":{},"3136":{},"3303":{},"3827":{},"4487":{},"5082":{},"5547":{},"5973":{},"6161":{},"6245":{},"6572":{}},"parent":{}}],["resize",{"_index":287,"name":{"586":{},"3695":{},"3737":{},"5316":{}},"parent":{}}],["resolution",{"_index":558,"name":{"1543":{},"1571":{},"6025":{},"6986":{}},"parent":{}}],["resolutionmultiplier",{"_index":636,"name":{"1642":{},"1646":{}},"parent":{}}],["resolveglyphs",{"_index":1330,"name":{"6724":{}},"parent":{}}],["rest",{"_index":698,"name":{"1924":{}},"parent":{}}],["restore",{"_index":303,"name":{"602":{},"3709":{},"5336":{}},"parent":{}}],["restorestyle",{"_index":52,"name":{"52":{},"133":{},"206":{},"344":{},"422":{},"501":{},"716":{},"783":{},"922":{},"1065":{},"1121":{},"1186":{},"1343":{},"1738":{},"1892":{},"2004":{},"2145":{},"2356":{},"2424":{},"2588":{},"2660":{},"2795":{},"2862":{},"2945":{},"3159":{},"3325":{},"3387":{},"3465":{},"3528":{},"3626":{},"3849":{},"3968":{},"4036":{},"4086":{},"4142":{},"4209":{},"4276":{},"4507":{},"4580":{},"4637":{},"4702":{},"4760":{},"4819":{},"4881":{},"4952":{},"5104":{},"5175":{},"5250":{},"5385":{},"5568":{},"5628":{},"5735":{},"5790":{},"5857":{},"5995":{},"6183":{},"6274":{},"6392":{},"6458":{},"6593":{},"6656":{},"6734":{},"6906":{},"6955":{},"7023":{}},"parent":{}}],["result",{"_index":922,"name":{"3570":{}},"parent":{"3571":{},"3572":{},"3573":{},"3574":{},"3575":{},"3576":{},"3577":{},"3578":{}}}],["results",{"_index":929,"name":{"3577":{}},"parent":{}}],["reverse",{"_index":374,"name":{"949":{}},"parent":{}}],["right",{"_index":83,"name":{"83":{},"621":{},"2826":{},"4245":{},"6054":{},"6216":{}},"parent":{}}],["right_bar",{"_index":989,"name":{"3886":{}},"parent":{}}],["right_shift",{"_index":815,"name":{"2891":{}},"parent":{}}],["right_shift_px",{"_index":1060,"name":{"4118":{}},"parent":{}}],["right_shift_ticks",{"_index":1057,"name":{"4115":{}},"parent":{}}],["rightdisplacedheadpx",{"_index":884,"name":{"3034":{},"6313":{}},"parent":{}}],["rightpadding",{"_index":993,"name":{"3894":{},"5660":{}},"parent":{}}],["roll_down",{"_index":1175,"name":{"5209":{}},"parent":{}}],["roll_up",{"_index":1176,"name":{"5210":{}},"parent":{}}],["rollingduration",{"_index":441,"name":{"1281":{}},"parent":{}}],["root",{"_index":845,"name":{"2977":{},"2980":{}},"parent":{}}],["root_index",{"_index":850,"name":{"2987":{}},"parent":{}}],["root_indices",{"_index":855,"name":{"2993":{}},"parent":{}}],["root_values",{"_index":854,"name":{"2992":{}},"parent":{}}],["roots",{"_index":853,"name":{"2991":{}},"parent":{}}],["rootvalue",{"_index":848,"name":{"2984":{}},"parent":{}}],["rounded_end",{"_index":1075,"name":{"4190":{}},"parent":{}}],["rparen",{"_index":424,"name":{"1247":{}},"parent":{}}],["rule",{"_index":913,"name":{"3561":{}},"parent":{"3562":{},"3563":{},"3564":{},"3565":{},"3566":{},"3567":{},"3568":{},"3569":{}}}],["rulefunction",{"_index":911,"name":{"3557":{}},"parent":{"3558":{}}}],["run",{"_index":921,"name":{"3569":{}},"parent":{}}],["runtimeerror",{"_index":1352,"name":{"6848":{},"6860":{}},"parent":{"6849":{},"6850":{},"6851":{}}}],["sanitizecanvasdims",{"_index":271,"name":{"567":{}},"parent":{}}],["sans_serif",{"_index":599,"name":{"1602":{}},"parent":{}}],["save",{"_index":302,"name":{"601":{},"3708":{},"5335":{}},"parent":{}}],["scale",{"_index":124,"name":{"260":{},"585":{},"838":{},"980":{},"1814":{},"1952":{},"1979":{},"2060":{},"2192":{},"2286":{},"2512":{},"2711":{},"3073":{},"3244":{},"3693":{},"3764":{},"4437":{},"5022":{},"5317":{},"5492":{},"5910":{},"6098":{},"6369":{},"6509":{}},"parent":{}}],["scales",{"_index":860,"name":{"2998":{}},"parent":{}}],["scalesize",{"_index":607,"name":{"1611":{}},"parent":{}}],["scaletopxfrom",{"_index":601,"name":{"1605":{}},"parent":{}}],["scaletypes",{"_index":861,"name":{"2999":{}},"parent":{}}],["secondary_break_ticks",{"_index":205,"name":{"387":{}},"parent":{}}],["segno_left",{"_index":1111,"name":{"4542":{}},"parent":{}}],["segno_right",{"_index":1112,"name":{"4543":{}},"parent":{}}],["selectnote",{"_index":801,"name":{"2622":{}},"parent":{}}],["semibreve_rest_glyph_scale",{"_index":837,"name":{"2924":{}},"parent":{}}],["serif",{"_index":600,"name":{"1603":{}},"parent":{}}],["serif_thickness",{"_index":839,"name":{"2926":{}},"parent":{}}],["serifs",{"_index":1238,"name":{"6027":{}},"parent":{}}],["set",{"_index":462,"name":{"1313":{},"1678":{}},"parent":{}}],["setascautionary",{"_index":26,"name":{"26":{}},"parent":{}}],["setattribute",{"_index":63,"name":{"63":{},"144":{},"217":{},"355":{},"433":{},"512":{},"727":{},"794":{},"933":{},"1076":{},"1132":{},"1197":{},"1355":{},"1749":{},"1903":{},"2015":{},"2156":{},"2367":{},"2435":{},"2599":{},"2671":{},"2806":{},"2873":{},"2956":{},"3171":{},"3336":{},"3398":{},"3476":{},"3539":{},"3637":{},"3860":{},"3979":{},"4047":{},"4097":{},"4153":{},"4220":{},"4287":{},"4518":{},"4591":{},"4648":{},"4713":{},"4771":{},"4830":{},"4892":{},"4963":{},"5116":{},"5186":{},"5261":{},"5396":{},"5579":{},"5639":{},"5746":{},"5801":{},"5868":{},"6006":{},"6194":{},"6286":{},"6403":{},"6469":{},"6604":{},"6667":{},"6745":{},"6917":{},"6966":{},"7034":{}},"parent":{}}],["setbackgroundfillstyle",{"_index":280,"name":{"578":{},"3686":{},"5309":{}},"parent":{}}],["setbeam",{"_index":156,"name":{"293":{},"871":{},"1013":{},"1844":{},"2093":{},"2209":{},"2541":{},"2744":{},"3106":{},"3275":{},"3797":{},"4357":{},"5054":{},"5521":{},"5943":{},"6131":{},"6542":{}},"parent":{}}],["setbeatsoccupied",{"_index":1327,"name":{"6721":{}},"parent":{}}],["setbegbartype",{"_index":1024,"name":{"3939":{},"5706":{}},"parent":{}}],["setbracketed",{"_index":1321,"name":{"6714":{}},"parent":{}}],["setcenteralignment",{"_index":179,"name":{"320":{},"898":{},"1040":{},"1869":{},"2120":{},"2333":{},"2564":{},"2771":{},"3133":{},"3300":{},"3824":{},"4484":{},"5079":{},"5544":{},"5970":{},"6158":{},"6240":{},"6569":{}},"parent":{}}],["setcenterxshift",{"_index":177,"name":{"318":{},"896":{},"1038":{},"1867":{},"2118":{},"2331":{},"2562":{},"2769":{},"3131":{},"3298":{},"3822":{},"4482":{},"5077":{},"5542":{},"5968":{},"6156":{},"6238":{},"6567":{}},"parent":{}}],["setclef",{"_index":1026,"name":{"3941":{},"5708":{}},"parent":{}}],["setconfigforline",{"_index":1042,"name":{"3961":{},"5728":{}},"parent":{}}],["setconfigforlines",{"_index":1043,"name":{"3962":{},"5729":{}},"parent":{}}],["setcontext",{"_index":66,"name":{"66":{},"147":{},"220":{},"358":{},"436":{},"515":{},"730":{},"797":{},"818":{},"1079":{},"1135":{},"1200":{},"1315":{},"1358":{},"1393":{},"1752":{},"1906":{},"2018":{},"2158":{},"2369":{},"2438":{},"2602":{},"2674":{},"2809":{},"2876":{},"2959":{},"3174":{},"3338":{},"3401":{},"3479":{},"3542":{},"3640":{},"3862":{},"3981":{},"4050":{},"4100":{},"4156":{},"4223":{},"4290":{},"4520":{},"4594":{},"4651":{},"4716":{},"4774":{},"4833":{},"4895":{},"4965":{},"5119":{},"5189":{},"5264":{},"5374":{},"5582":{},"5642":{},"5748":{},"5804":{},"5871":{},"6009":{},"6197":{},"6289":{},"6406":{},"6472":{},"6607":{},"6670":{},"6748":{},"6920":{},"6969":{},"7036":{}},"parent":{}}],["setcurrenttick",{"_index":1286,"name":{"6339":{}},"parent":{}}],["setcustomtext",{"_index":949,"name":{"3615":{}},"parent":{}}],["setdashed",{"_index":1170,"name":{"5146":{},"5849":{}},"parent":{}}],["setdata",{"_index":617,"name":{"1622":{}},"parent":{}}],["setdecrescendo",{"_index":380,"name":{"962":{}},"parent":{}}],["setdefaultledgerlinestyle",{"_index":995,"name":{"3898":{},"5666":{}},"parent":{}}],["setdelayed",{"_index":907,"name":{"3435":{}},"parent":{}}],["setdirection",{"_index":1140,"name":{"4806":{},"4934":{},"5616":{},"5777":{}},"parent":{}}],["setdotshifty",{"_index":397,"name":{"1159":{}},"parent":{}}],["setdrawcircle",{"_index":1171,"name":{"5147":{}},"parent":{}}],["setduration",{"_index":193,"name":{"334":{},"912":{},"1055":{},"1882":{},"2135":{},"2347":{},"2578":{},"2785":{},"3149":{},"3315":{},"3839":{},"4498":{},"5094":{},"5558":{},"5985":{},"6173":{},"6260":{},"6583":{}},"parent":{}}],["setenablekerning",{"_index":353,"name":{"683":{}},"parent":{}}],["setendbartype",{"_index":1025,"name":{"3940":{},"5707":{}},"parent":{}}],["setendclef",{"_index":1027,"name":{"3943":{},"5710":{}},"parent":{}}],["setendkeysignature",{"_index":1030,"name":{"3946":{},"5713":{}},"parent":{}}],["setendtimesignature",{"_index":1032,"name":{"3948":{},"5715":{}},"parent":{}}],["setextension",{"_index":1157,"name":{"4935":{}},"parent":{}}],["setfillstyle",{"_index":279,"name":{"577":{},"3685":{},"5308":{}},"parent":{}}],["setflagstyle",{"_index":768,"name":{"2236":{},"4384":{}},"parent":{}}],["setfont",{"_index":69,"name":{"69":{},"150":{},"223":{},"361":{},"439":{},"518":{},"605":{},"682":{},"800":{},"937":{},"1082":{},"1138":{},"1203":{},"1361":{},"1755":{},"1909":{},"2021":{},"2161":{},"2372":{},"2441":{},"2605":{},"2677":{},"2812":{},"2879":{},"2962":{},"3177":{},"3341":{},"3404":{},"3482":{},"3545":{},"3643":{},"3716":{},"3865":{},"3984":{},"4053":{},"4103":{},"4159":{},"4226":{},"4293":{},"4523":{},"4597":{},"4654":{},"4719":{},"4777":{},"4836":{},"4898":{},"4968":{},"5122":{},"5192":{},"5267":{},"5339":{},"5401":{},"5585":{},"5645":{},"5751":{},"5807":{},"5874":{},"6012":{},"6200":{},"6292":{},"6409":{},"6475":{},"6610":{},"6673":{},"6751":{},"6923":{},"6972":{},"7039":{}},"parent":{}}],["setfontsize",{"_index":73,"name":{"73":{},"154":{},"227":{},"365":{},"443":{},"522":{},"736":{},"804":{},"941":{},"1086":{},"1142":{},"1207":{},"1365":{},"1759":{},"1913":{},"2025":{},"2165":{},"2376":{},"2445":{},"2609":{},"2681":{},"2816":{},"2883":{},"2966":{},"3181":{},"3345":{},"3408":{},"3486":{},"3549":{},"3647":{},"3869":{},"3988":{},"4057":{},"4107":{},"4163":{},"4230":{},"4297":{},"4527":{},"4601":{},"4658":{},"4723":{},"4781":{},"4840":{},"4902":{},"4972":{},"5126":{},"5196":{},"5271":{},"5405":{},"5589":{},"5649":{},"5755":{},"5811":{},"5878":{},"6016":{},"6048":{},"6204":{},"6296":{},"6413":{},"6479":{},"6614":{},"6677":{},"6755":{},"6927":{},"6976":{},"7043":{}},"parent":{}}],["setfrethandfinger",{"_index":673,"name":{"1707":{}},"parent":{}}],["setghost",{"_index":791,"name":{"2460":{},"5440":{}},"parent":{}}],["setglyph",{"_index":739,"name":{"2040":{},"3744":{}},"parent":{}}],["setgroupstyle",{"_index":49,"name":{"49":{},"130":{},"203":{},"341":{},"419":{},"498":{},"713":{},"780":{},"919":{},"1062":{},"1118":{},"1183":{},"1340":{},"1735":{},"1889":{},"2001":{},"2142":{},"2353":{},"2421":{},"2585":{},"2657":{},"2792":{},"2859":{},"2942":{},"3156":{},"3322":{},"3384":{},"3462":{},"3525":{},"3623":{},"3846":{},"3966":{},"4033":{},"4083":{},"4139":{},"4206":{},"4273":{},"4504":{},"4577":{},"4634":{},"4699":{},"4757":{},"4816":{},"4878":{},"4949":{},"5101":{},"5172":{},"5247":{},"5382":{},"5565":{},"5625":{},"5733":{},"5787":{},"5855":{},"5992":{},"6180":{},"6271":{},"6389":{},"6455":{},"6590":{},"6653":{},"6731":{},"6903":{},"6952":{},"7020":{}},"parent":{}}],["seth",{"_index":256,"name":{"548":{}},"parent":{}}],["setharsh",{"_index":1366,"name":{"6877":{},"6947":{}},"parent":{}}],["setheight",{"_index":379,"name":{"961":{}},"parent":{}}],["sethorizontal",{"_index":356,"name":{"686":{}},"parent":{}}],["setignoreticks",{"_index":173,"name":{"310":{},"888":{},"1030":{},"1859":{},"2110":{},"2323":{},"2554":{},"2761":{},"3123":{},"3291":{},"3814":{},"4474":{},"5069":{},"5534":{},"5960":{},"6148":{},"6230":{},"6559":{}},"parent":{}}],["setindex",{"_index":33,"name":{"33":{},"114":{},"187":{},"483":{},"697":{},"1167":{},"1719":{},"2405":{},"2842":{},"3368":{},"3446":{},"3509":{},"5156":{},"5232":{},"6637":{},"6887":{}},"parent":{}}],["setindexvalue",{"_index":957,"name":{"3665":{}},"parent":{}}],["setintrinsicticks",{"_index":190,"name":{"331":{},"909":{},"1052":{},"1879":{},"2132":{},"2344":{},"2575":{},"2782":{},"3146":{},"3312":{},"3836":{},"4495":{},"5091":{},"5555":{},"5982":{},"6170":{},"6257":{},"6580":{}},"parent":{}}],["setjustification",{"_index":96,"name":{"105":{},"6077":{}},"parent":{}}],["setkey",{"_index":798,"name":{"2618":{}},"parent":{}}],["setkeyline",{"_index":771,"name":{"2239":{},"4387":{}},"parent":{}}],["setkeysig",{"_index":808,"name":{"2636":{}},"parent":{}}],["setkeysignature",{"_index":1029,"name":{"3945":{},"5712":{}},"parent":{}}],["setkeystyle",{"_index":770,"name":{"2238":{},"4386":{}},"parent":{}}],["setlastnote",{"_index":1169,"name":{"5145":{}},"parent":{}}],["setlayoutmetrics",{"_index":368,"name":{"775":{},"2652":{},"4028":{},"4267":{},"4572":{},"4629":{},"4694":{},"4752":{},"4873":{},"6450":{}},"parent":{}}],["setledgerlinestyle",{"_index":766,"name":{"2234":{},"4382":{}},"parent":{}}],["setleftdisplacedheadpx",{"_index":135,"name":{"272":{},"850":{},"992":{},"1824":{},"2072":{},"2296":{},"2523":{},"2723":{},"3085":{},"3255":{},"3776":{},"4447":{},"5034":{},"5503":{},"5922":{},"6110":{},"6521":{}},"parent":{}}],["setline",{"_index":378,"name":{"960":{},"3223":{},"3616":{},"5850":{},"5892":{},"6078":{},"6946":{}},"parent":{}}],["setlinecap",{"_index":285,"name":{"583":{},"3691":{},"5315":{}},"parent":{}}],["setlinedash",{"_index":286,"name":{"584":{},"3692":{},"5314":{}},"parent":{}}],["setlineendtype",{"_index":1167,"name":{"5141":{}},"parent":{}}],["setlinewidth",{"_index":284,"name":{"582":{},"3690":{},"5313":{}},"parent":{}}],["setloweraccidental",{"_index":909,"name":{"3437":{}},"parent":{}}],["setmeasure",{"_index":1007,"name":{"3918":{},"5686":{}},"parent":{}}],["setmetrics",{"_index":618,"name":{"1623":{}},"parent":{}}],["setmode",{"_index":1381,"name":{"7002":{}},"parent":{}}],["setmodifiercontext",{"_index":36,"name":{"36":{},"117":{},"190":{},"335":{},"486":{},"700":{},"913":{},"1056":{},"1170":{},"1722":{},"1883":{},"2136":{},"2348":{},"2408":{},"2579":{},"2786":{},"2845":{},"3150":{},"3316":{},"3371":{},"3449":{},"3512":{},"3840":{},"4499":{},"5095":{},"5159":{},"5235":{},"5559":{},"5986":{},"6174":{},"6262":{},"6584":{},"6640":{},"6890":{}},"parent":{}}],["setmusicfont",{"_index":551,"name":{"1536":{}},"parent":{}}],["setnote",{"_index":25,"name":{"25":{},"111":{},"184":{},"480":{},"694":{},"1158":{},"1716":{},"2402":{},"2839":{},"3365":{},"3443":{},"3501":{},"5153":{},"5229":{},"6634":{},"6884":{}},"parent":{}}],["setnotedisplaced",{"_index":763,"name":{"2226":{},"4374":{}},"parent":{}}],["setnotedots",{"_index":446,"name":{"1287":{}},"parent":{}}],["setnoteduration",{"_index":447,"name":{"1288":{}},"parent":{}}],["setnoteheadxbounds",{"_index":1156,"name":{"4933":{}},"parent":{}}],["setnotes",{"_index":391,"name":{"1111":{},"4133":{},"4199":{},"4807":{},"5617":{},"5778":{}},"parent":{}}],["setnotesoccupied",{"_index":1329,"name":{"6723":{}},"parent":{}}],["setnotestartx",{"_index":998,"name":{"3902":{},"5670":{}},"parent":{}}],["setnotetype",{"_index":448,"name":{"1289":{}},"parent":{}}],["setnumlines",{"_index":1004,"name":{"3909":{},"5677":{}},"parent":{}}],["setoffsetx",{"_index":675,"name":{"1709":{},"5143":{}},"parent":{}}],["setoffsety",{"_index":676,"name":{"1710":{},"5144":{}},"parent":{}}],["setoptions",{"_index":463,"name":{"1314":{},"1390":{},"1982":{},"4932":{},"5373":{},"6372":{}},"parent":{}}],["setorigin",{"_index":734,"name":{"1994":{},"6383":{}},"parent":{}}],["setoriginx",{"_index":732,"name":{"1992":{},"6381":{}},"parent":{}}],["setoriginy",{"_index":733,"name":{"1993":{},"6382":{}},"parent":{}}],["setpadding",{"_index":367,"name":{"774":{},"2651":{},"4027":{},"4266":{},"4571":{},"4628":{},"4693":{},"4751":{},"4872":{},"6328":{},"6449":{}},"parent":{}}],["setpartialbeamsideat",{"_index":220,"name":{"404":{}},"parent":{}}],["setplaynote",{"_index":127,"name":{"264":{},"842":{},"984":{},"1818":{},"2064":{},"2290":{},"2516":{},"2715":{},"3077":{},"3248":{},"3768":{},"4441":{},"5026":{},"5496":{},"5914":{},"6102":{},"6513":{}},"parent":{}}],["setpoint",{"_index":729,"name":{"1983":{},"6373":{}},"parent":{}}],["setposition",{"_index":38,"name":{"38":{},"119":{},"192":{},"488":{},"702":{},"766":{},"1172":{},"1724":{},"2410":{},"2643":{},"2847":{},"3373":{},"3451":{},"3514":{},"4017":{},"4131":{},"4256":{},"4561":{},"4618":{},"4683":{},"4741":{},"4862":{},"5161":{},"5236":{},"6439":{},"6642":{},"6892":{}},"parent":{}}],["setratioed",{"_index":1322,"name":{"6715":{}},"parent":{}}],["setrawfont",{"_index":306,"name":{"608":{},"3719":{},"5342":{}},"parent":{}}],["setrendered",{"_index":59,"name":{"59":{},"140":{},"213":{},"351":{},"429":{},"508":{},"723":{},"790":{},"929":{},"1072":{},"1128":{},"1193":{},"1351":{},"1745":{},"1899":{},"2011":{},"2152":{},"2363":{},"2431":{},"2595":{},"2667":{},"2802":{},"2869":{},"2952":{},"3167":{},"3332":{},"3394":{},"3472":{},"3535":{},"3633":{},"3856":{},"3975":{},"4043":{},"4093":{},"4149":{},"4216":{},"4283":{},"4514":{},"4587":{},"4644":{},"4709":{},"4767":{},"4826":{},"4888":{},"4959":{},"5112":{},"5182":{},"5257":{},"5392":{},"5575":{},"5635":{},"5742":{},"5797":{},"5864":{},"6002":{},"6190":{},"6282":{},"6399":{},"6465":{},"6600":{},"6663":{},"6741":{},"6913":{},"6962":{},"7030":{}},"parent":{}}],["setrenderoptions",{"_index":1065,"name":{"4132":{}},"parent":{}}],["setrepetitiontype",{"_index":1010,"name":{"3921":{},"5689":{}},"parent":{}}],["setreportwidth",{"_index":339,"name":{"668":{}},"parent":{}}],["setrightdisplacedheadpx",{"_index":136,"name":{"273":{},"851":{},"993":{},"1825":{},"2073":{},"2297":{},"2524":{},"2724":{},"3086":{},"3256":{},"3777":{},"4448":{},"5035":{},"5504":{},"5923":{},"6111":{},"6522":{}},"parent":{}}],["setsection",{"_index":1012,"name":{"3923":{},"5691":{}},"parent":{}}],["setshadowblur",{"_index":283,"name":{"581":{},"3689":{},"5312":{}},"parent":{}}],["setshadowcolor",{"_index":282,"name":{"580":{},"3688":{},"5311":{}},"parent":{}}],["setshiftx",{"_index":1121,"name":{"4554":{},"4614":{},"4679":{},"4736":{}},"parent":{}}],["setshifty",{"_index":1122,"name":{"4555":{},"4615":{},"4680":{},"4737":{},"4859":{}},"parent":{}}],["setsoftmaxfactor",{"_index":1385,"name":{"7010":{}},"parent":{}}],["setspacingfromnextmodifier",{"_index":41,"name":{"41":{},"122":{},"195":{},"491":{},"705":{},"1175":{},"1727":{},"2413":{},"2850":{},"3376":{},"3454":{},"3517":{},"5164":{},"5239":{},"6645":{},"6895":{}},"parent":{}}],["setstave",{"_index":132,"name":{"269":{},"763":{},"847":{},"989":{},"1772":{},"1984":{},"2069":{},"2224":{},"2464":{},"2646":{},"2720":{},"2933":{},"3082":{},"3226":{},"3773":{},"4020":{},"4259":{},"4372":{},"4564":{},"4621":{},"4686":{},"4744":{},"4865":{},"5031":{},"5444":{},"5919":{},"6107":{},"6266":{},"6374":{},"6442":{},"6518":{},"7005":{}},"parent":{}}],["setstavesection",{"_index":1127,"name":{"4613":{}},"parent":{}}],["setstavetext",{"_index":1131,"name":{"4735":{}},"parent":{}}],["setstem",{"_index":680,"name":{"1780":{},"2259":{},"2481":{},"4410":{},"4988":{},"5461":{}},"parent":{}}],["setstemdirection",{"_index":686,"name":{"1788":{},"2266":{},"2489":{},"4417":{},"4996":{},"5469":{}},"parent":{}}],["setstemlength",{"_index":690,"name":{"1792":{},"2268":{},"2491":{},"4419":{},"5000":{},"5471":{}},"parent":{}}],["setstemlet",{"_index":1162,"name":{"4942":{}},"parent":{}}],["setstemstyle",{"_index":764,"name":{"2232":{},"4380":{}},"parent":{}}],["setstrict",{"_index":1383,"name":{"7008":{}},"parent":{}}],["setstringnumber",{"_index":1168,"name":{"5142":{}},"parent":{}}],["setstrokestyle",{"_index":281,"name":{"579":{},"3687":{},"5310":{}},"parent":{}}],["setstyle",{"_index":48,"name":{"48":{},"129":{},"202":{},"340":{},"418":{},"497":{},"712":{},"779":{},"918":{},"1061":{},"1117":{},"1182":{},"1339":{},"1734":{},"1888":{},"2000":{},"2141":{},"2231":{},"2420":{},"2584":{},"2656":{},"2791":{},"2858":{},"2941":{},"3155":{},"3321":{},"3383":{},"3461":{},"3524":{},"3622":{},"3845":{},"3965":{},"4032":{},"4082":{},"4138":{},"4205":{},"4272":{},"4379":{},"4576":{},"4633":{},"4698":{},"4756":{},"4815":{},"4877":{},"4948":{},"5100":{},"5171":{},"5246":{},"5381":{},"5564":{},"5624":{},"5732":{},"5786":{},"5854":{},"5991":{},"6179":{},"6270":{},"6388":{},"6454":{},"6589":{},"6652":{},"6730":{},"6902":{},"6951":{},"7019":{}},"parent":{}}],["settap",{"_index":241,"name":{"472":{}},"parent":{}}],["settempo",{"_index":1013,"name":{"3924":{},"4678":{},"5692":{}},"parent":{}}],["settext",{"_index":1014,"name":{"3925":{},"4076":{},"4198":{},"4738":{},"5693":{}},"parent":{}}],["settextline",{"_index":39,"name":{"39":{},"120":{},"193":{},"489":{},"703":{},"1173":{},"1725":{},"2411":{},"2848":{},"3374":{},"3452":{},"3515":{},"5162":{},"5237":{},"6643":{},"6893":{}},"parent":{}}],["settickcontext",{"_index":148,"name":{"285":{},"863":{},"1005":{},"1836":{},"2085":{},"2306":{},"2534":{},"2736":{},"3098":{},"3267":{},"3789":{},"4457":{},"5046":{},"5514":{},"5935":{},"6123":{},"6250":{},"6534":{}},"parent":{}}],["settimesig",{"_index":1297,"name":{"6436":{}},"parent":{}}],["settimesignature",{"_index":1031,"name":{"3947":{},"5714":{}},"parent":{}}],["settuning",{"_index":1303,"name":{"6688":{}},"parent":{}}],["settuplet",{"_index":183,"name":{"324":{},"902":{},"1044":{},"1873":{},"2124":{},"2337":{},"2568":{},"2775":{},"3137":{},"3304":{},"3828":{},"4488":{},"5083":{},"5548":{},"5974":{},"6162":{},"6246":{},"6573":{}},"parent":{}}],["settupletlocation",{"_index":1323,"name":{"6716":{}},"parent":{}}],["settype",{"_index":108,"name":{"241":{},"761":{},"816":{},"3614":{},"4011":{},"4074":{}},"parent":{}}],["setupperaccidental",{"_index":908,"name":{"3436":{}},"parent":{}}],["setvertical",{"_index":354,"name":{"684":{}},"parent":{}}],["setverticaljustification",{"_index":94,"name":{"103":{}},"parent":{}}],["setvibratowidth",{"_index":1367,"name":{"6878":{}},"parent":{}}],["setviewbox",{"_index":1192,"name":{"5318":{}},"parent":{}}],["setvisibility",{"_index":1161,"name":{"4941":{}},"parent":{}}],["setvoice",{"_index":146,"name":{"283":{},"861":{},"1003":{},"1834":{},"2083":{},"2304":{},"2532":{},"2734":{},"3096":{},"3265":{},"3787":{},"4455":{},"5044":{},"5512":{},"5933":{},"6121":{},"6242":{},"6532":{}},"parent":{}}],["setvoltatype",{"_index":1011,"name":{"3922":{},"5690":{}},"parent":{}}],["setw",{"_index":255,"name":{"547":{}},"parent":{}}],["setwidth",{"_index":28,"name":{"28":{},"108":{},"181":{},"311":{},"477":{},"691":{},"769":{},"889":{},"1031":{},"1162":{},"1713":{},"1860":{},"2111":{},"2324":{},"2396":{},"2555":{},"2647":{},"2762":{},"2836":{},"3124":{},"3292":{},"3360":{},"3440":{},"3504":{},"3815":{},"3915":{},"4022":{},"4261":{},"4475":{},"4566":{},"4623":{},"4688":{},"4746":{},"4867":{},"5070":{},"5150":{},"5226":{},"5535":{},"5683":{},"5961":{},"6149":{},"6231":{},"6444":{},"6560":{},"6631":{},"6881":{}},"parent":{}}],["setx",{"_index":253,"name":{"545":{},"771":{},"2649":{},"3219":{},"3914":{},"4024":{},"4263":{},"4568":{},"4625":{},"4690":{},"4748":{},"4869":{},"5682":{},"6322":{},"6446":{}},"parent":{}}],["setxbase",{"_index":1274,"name":{"6324":{}},"parent":{}}],["setxoffset",{"_index":1276,"name":{"6326":{}},"parent":{}}],["setxshift",{"_index":43,"name":{"43":{},"124":{},"197":{},"313":{},"471":{},"707":{},"891":{},"1033":{},"1177":{},"1729":{},"1862":{},"1986":{},"2113":{},"2326":{},"2415":{},"2557":{},"2764":{},"2852":{},"3126":{},"3293":{},"3378":{},"3456":{},"3519":{},"3817":{},"4077":{},"4477":{},"5072":{},"5166":{},"5241":{},"5537":{},"5963":{},"6151":{},"6233":{},"6376":{},"6562":{},"6647":{},"6897":{}},"parent":{}}],["sety",{"_index":254,"name":{"546":{},"3221":{},"3910":{},"5678":{}},"parent":{}}],["setybounds",{"_index":1159,"name":{"4937":{}},"parent":{}}],["setys",{"_index":142,"name":{"279":{},"857":{},"999":{},"1831":{},"2079":{},"2301":{},"2529":{},"2730":{},"3092":{},"3261":{},"3783":{},"4452":{},"5041":{},"5509":{},"5929":{},"6117":{},"6528":{}},"parent":{}}],["setyshift",{"_index":40,"name":{"40":{},"121":{},"194":{},"490":{},"704":{},"1174":{},"1726":{},"1988":{},"2412":{},"2849":{},"3375":{},"3453":{},"3516":{},"5163":{},"5238":{},"6378":{},"6644":{},"6894":{}},"parent":{}}],["shadow_attributes",{"_index":1183,"name":{"5282":{},"5298":{}},"parent":{}}],["shadowblur",{"_index":473,"name":{"1329":{}},"parent":{}}],["shadowcolor",{"_index":472,"name":{"1328":{}},"parent":{}}],["shift_right",{"_index":875,"name":{"3024":{}},"parent":{}}],["shift_y",{"_index":710,"name":{"1940":{}},"parent":{}}],["shoulddrawflag",{"_index":781,"name":{"2251":{},"4399":{}},"parent":{}}],["shouldignoreticks",{"_index":137,"name":{"274":{},"852":{},"994":{},"1826":{},"2074":{},"2298":{},"2525":{},"2725":{},"3087":{},"3257":{},"3778":{},"4449":{},"5036":{},"5505":{},"5924":{},"6112":{},"6229":{},"6523":{}},"parent":{}}],["show_bracket",{"_index":1234,"name":{"5842":{}},"parent":{}}],["show_number",{"_index":831,"name":{"2917":{}},"parent":{}}],["show_stemlets",{"_index":206,"name":{"388":{}},"parent":{}}],["simpleformat",{"_index":638,"name":{"1649":{}},"parent":{}}],["simplify",{"_index":660,"name":{"1680":{}},"parent":{}}],["single",{"_index":1044,"name":{"3996":{}},"parent":{}}],["singlenote",{"_index":408,"name":{"1228":{}},"parent":{}}],["size",{"_index":573,"name":{"1561":{},"1604":{}},"parent":{}}],["slash",{"_index":426,"name":{"1250":{},"2173":{}},"parent":{}}],["slash_notehead_width",{"_index":559,"name":{"1544":{}},"parent":{}}],["slashed",{"_index":892,"name":{"3191":{}},"parent":{}}],["slide_down",{"_index":1219,"name":{"5600":{}},"parent":{}}],["slide_up",{"_index":1218,"name":{"5599":{}},"parent":{}}],["slope",{"_index":216,"name":{"399":{}},"parent":{}}],["slope_cost",{"_index":211,"name":{"393":{}},"parent":{}}],["slope_iterations",{"_index":210,"name":{"392":{}},"parent":{}}],["slur_y_shift",{"_index":785,"name":{"2393":{}},"parent":{}}],["smooth",{"_index":1254,"name":{"6059":{}},"parent":{}}],["smufl",{"_index":584,"name":{"1575":{}},"parent":{}}],["soft",{"_index":1373,"name":{"6989":{}},"parent":{}}],["softmax",{"_index":1386,"name":{"7011":{}},"parent":{}}],["softmax_factor",{"_index":555,"name":{"1540":{}},"parent":{}}],["softmaxfactor",{"_index":625,"name":{"1630":{},"5345":{}},"parent":{}}],["sortandunique",{"_index":1354,"name":{"6854":{}},"parent":{}}],["sortbycategory",{"_index":1039,"name":{"3956":{},"5723":{}},"parent":{}}],["space",{"_index":478,"name":{"1375":{},"3900":{},"5668":{},"6218":{}},"parent":{}}],["space_above_staff_ln",{"_index":985,"name":{"3882":{}},"parent":{}}],["space_below_staff_ln",{"_index":984,"name":{"3881":{}},"parent":{}}],["spaceabove",{"_index":1199,"name":{"5353":{}},"parent":{}}],["spacebelow",{"_index":1200,"name":{"5354":{}},"parent":{}}],["spacebetweenstaves",{"_index":1205,"name":{"5360":{}},"parent":{}}],["spacing",{"_index":820,"name":{"2897":{}},"parent":{}}],["spacing_between_lines_px",{"_index":836,"name":{"2923":{},"3887":{}},"parent":{}}],["spacingbetweenblocks",{"_index":325,"name":{"645":{}},"parent":{}}],["stacktrace",{"_index":1357,"name":{"6858":{}},"parent":{}}],["start",{"_index":1228,"name":{"5819":{},"5846":{}},"parent":{}}],["state",{"_index":1182,"name":{"5279":{},"5280":{},"5299":{}},"parent":{"5280":{},"5281":{},"5282":{},"5283":{}}}],["state_stack",{"_index":1187,"name":{"5300":{}},"parent":{}}],["stave",{"_index":477,"name":{"1373":{},"1396":{},"1486":{},"1576":{},"1635":{},"3890":{},"5350":{},"6810":{}},"parent":{"3891":{},"3892":{},"3893":{},"3894":{},"3895":{},"3896":{},"3897":{},"3898":{},"3899":{},"3900":{},"3901":{},"3902":{},"3903":{},"3904":{},"3905":{},"3906":{},"3907":{},"3908":{},"3909":{},"3910":{},"3911":{},"3912":{},"3913":{},"3914":{},"3915":{},"3916":{},"3917":{},"3918":{},"3919":{},"3920":{},"3921":{},"3922":{},"3923":{},"3924":{},"3925":{},"3926":{},"3927":{},"3928":{},"3929":{},"3930":{},"3931":{},"3932":{},"3933":{},"3934":{},"3935":{},"3936":{},"3937":{},"3938":{},"3939":{},"3940":{},"3941":{},"3942":{},"3943":{},"3944":{},"3945":{},"3946":{},"3947":{},"3948":{},"3949":{},"3950":{},"3951":{},"3952":{},"3953":{},"3954":{},"3955":{},"3956":{},"3957":{},"3958":{},"3959":{},"3960":{},"3961":{},"3962":{},"3963":{},"3964":{},"3965":{},"3966":{},"3967":{},"3968":{},"3969":{},"3970":{},"3971":{},"3972":{},"3973":{},"3974":{},"3975":{},"3976":{},"3977":{},"3978":{},"3979":{},"3980":{},"3981":{},"3982":{},"3983":{},"3984":{},"3985":{},"3986":{},"3987":{},"3988":{},"3989":{},"3990":{},"3991":{},"3992":{},"3993":{},"3994":{}}}],["stave_line_distance",{"_index":560,"name":{"1545":{}},"parent":{}}],["stave_line_thickness",{"_index":561,"name":{"1546":{}},"parent":{}}],["staveconnector",{"_index":505,"name":{"1422":{},"1487":{},"4065":{},"6811":{}},"parent":{"4066":{},"4067":{},"4068":{},"4069":{},"4070":{},"4071":{},"4072":{},"4073":{},"4074":{},"4075":{},"4076":{},"4077":{},"4078":{},"4079":{},"4080":{},"4081":{},"4082":{},"4083":{},"4084":{},"4085":{},"4086":{},"4087":{},"4088":{},"4089":{},"4090":{},"4091":{},"4092":{},"4093":{},"4094":{},"4095":{},"4096":{},"4097":{},"4098":{},"4099":{},"4100":{},"4101":{},"4102":{},"4103":{},"4104":{},"4105":{},"4106":{},"4107":{},"4108":{},"4109":{},"4110":{},"4111":{},"4112":{},"4113":{}}}],["staveconnectortype",{"_index":1053,"name":{"4064":{}},"parent":{}}],["stavehairpin",{"_index":529,"name":{"1488":{},"4121":{},"6812":{}},"parent":{"4122":{},"4123":{},"4124":{},"4127":{},"4128":{},"4129":{},"4130":{},"4131":{},"4132":{},"4133":{},"4134":{},"4135":{},"4136":{},"4137":{},"4138":{},"4139":{},"4140":{},"4141":{},"4142":{},"4143":{},"4144":{},"4145":{},"4146":{},"4147":{},"4148":{},"4149":{},"4150":{},"4151":{},"4152":{},"4153":{},"4154":{},"4155":{},"4156":{},"4157":{},"4158":{},"4159":{},"4160":{},"4161":{},"4162":{},"4163":{},"4164":{},"4165":{},"4166":{},"4167":{},"4168":{},"4169":{}}}],["stavehairpin.__type",{"_index":1062,"name":{},"parent":{"4125":{},"4126":{}}}],["stavehairpinrenderoptions",{"_index":1056,"name":{"4114":{}},"parent":{"4115":{},"4116":{},"4117":{},"4118":{},"4119":{},"4120":{}}}],["staveline",{"_index":508,"name":{"1428":{},"1489":{},"4175":{},"6813":{}},"parent":{"4176":{},"4177":{},"4178":{},"4179":{},"4182":{},"4183":{},"4184":{},"4185":{},"4198":{},"4199":{},"4200":{},"4201":{},"4202":{},"4203":{},"4204":{},"4205":{},"4206":{},"4207":{},"4208":{},"4209":{},"4210":{},"4211":{},"4212":{},"4213":{},"4214":{},"4215":{},"4216":{},"4217":{},"4218":{},"4219":{},"4220":{},"4221":{},"4222":{},"4223":{},"4224":{},"4225":{},"4226":{},"4227":{},"4228":{},"4229":{},"4230":{},"4231":{},"4232":{},"4233":{},"4234":{},"4235":{},"4236":{}}}],["staveline.__type",{"_index":1073,"name":{},"parent":{"4180":{},"4181":{},"4186":{},"4187":{},"4188":{},"4189":{},"4190":{},"4191":{},"4192":{},"4193":{},"4194":{},"4195":{},"4196":{},"4197":{}}}],["stavelineconfig",{"_index":979,"name":{"3876":{}},"parent":{"3877":{}}}],["stavelinenotes",{"_index":1067,"name":{"4170":{}},"parent":{"4171":{},"4172":{},"4173":{},"4174":{}}}],["stavemodifier",{"_index":530,"name":{"1490":{},"4250":{},"6814":{}},"parent":{"4251":{},"4252":{},"4253":{},"4254":{},"4255":{},"4256":{},"4257":{},"4258":{},"4259":{},"4260":{},"4261":{},"4262":{},"4263":{},"4264":{},"4265":{},"4266":{},"4267":{},"4268":{},"4269":{},"4270":{},"4271":{},"4272":{},"4273":{},"4274":{},"4275":{},"4276":{},"4277":{},"4278":{},"4279":{},"4280":{},"4281":{},"4282":{},"4283":{},"4284":{},"4285":{},"4286":{},"4287":{},"4288":{},"4289":{},"4290":{},"4291":{},"4292":{},"4293":{},"4294":{},"4295":{},"4296":{},"4297":{},"4298":{},"4299":{},"4300":{},"4301":{},"4302":{},"4303":{}}}],["stavemodifierposition",{"_index":546,"name":{"1531":{},"4242":{}},"parent":{"4243":{},"4244":{},"4245":{},"4246":{},"4247":{},"4248":{},"4249":{}}}],["stavenote",{"_index":488,"name":{"1398":{},"1491":{},"4342":{},"6815":{}},"parent":{"4343":{},"4344":{},"4345":{},"4346":{},"4347":{},"4348":{},"4349":{},"4350":{},"4351":{},"4352":{},"4353":{},"4354":{},"4355":{},"4356":{},"4357":{},"4358":{},"4359":{},"4360":{},"4361":{},"4362":{},"4363":{},"4364":{},"4365":{},"4366":{},"4367":{},"4368":{},"4369":{},"4370":{},"4371":{},"4372":{},"4373":{},"4374":{},"4375":{},"4376":{},"4377":{},"4378":{},"4379":{},"4380":{},"4381":{},"4382":{},"4383":{},"4384":{},"4385":{},"4386":{},"4387":{},"4388":{},"4389":{},"4390":{},"4391":{},"4392":{},"4393":{},"4394":{},"4395":{},"4396":{},"4397":{},"4398":{},"4399":{},"4400":{},"4401":{},"4402":{},"4403":{},"4404":{},"4405":{},"4406":{},"4407":{},"4408":{},"4409":{},"4410":{},"4411":{},"4412":{},"4413":{},"4414":{},"4415":{},"4416":{},"4417":{},"4418":{},"4419":{},"4420":{},"4421":{},"4422":{},"4423":{},"4424":{},"4425":{},"4426":{},"4440":{},"4441":{},"4442":{},"4443":{},"4444":{},"4445":{},"4446":{},"4447":{},"4448":{},"4449":{},"4450":{},"4451":{},"4452":{},"4453":{},"4454":{},"4455":{},"4456":{},"4457":{},"4458":{},"4459":{},"4460":{},"4461":{},"4462":{},"4463":{},"4464":{},"4465":{},"4466":{},"4467":{},"4468":{},"4469":{},"4470":{},"4471":{},"4472":{},"4473":{},"4474":{},"4475":{},"4476":{},"4477":{},"4478":{},"4479":{},"4480":{},"4481":{},"4482":{},"4483":{},"4484":{},"4485":{},"4486":{},"4487":{},"4488":{},"4489":{},"4490":{},"4491":{},"4492":{},"4493":{},"4494":{},"4495":{},"4496":{},"4497":{},"4498":{},"4499":{},"4500":{},"4501":{},"4502":{},"4503":{},"4504":{},"4505":{},"4506":{},"4507":{},"4508":{},"4509":{},"4510":{},"4511":{},"4512":{},"4513":{},"4514":{},"4515":{},"4516":{},"4517":{},"4518":{},"4519":{},"4520":{},"4521":{},"4522":{},"4523":{},"4524":{},"4525":{},"4526":{},"4527":{},"4528":{},"4529":{},"4530":{},"4531":{},"4532":{},"4533":{}}}],["stavenote.__type",{"_index":1107,"name":{},"parent":{"4427":{},"4428":{},"4429":{},"4430":{},"4431":{},"4432":{},"4433":{},"4434":{},"4435":{},"4436":{},"4437":{},"4438":{},"4439":{}}}],["stavenoteformatsettings",{"_index":1100,"name":{"4315":{}},"parent":{"4316":{},"4317":{},"4318":{},"4319":{},"4320":{},"4321":{},"4322":{},"4323":{},"4324":{},"4325":{}}}],["stavenoteheadbounds",{"_index":1089,"name":{"4304":{}},"parent":{"4305":{},"4306":{},"4307":{},"4308":{},"4309":{},"4310":{},"4311":{},"4312":{},"4313":{},"4314":{}}}],["stavenotestruct",{"_index":1106,"name":{"4326":{}},"parent":{"4327":{},"4328":{},"4329":{},"4330":{},"4331":{},"4332":{},"4333":{},"4334":{},"4335":{},"4336":{},"4337":{},"4338":{},"4339":{},"4340":{},"4341":{}}}],["staveoptions",{"_index":981,"name":{"3878":{}},"parent":{"3879":{},"3880":{},"3881":{},"3882":{},"3883":{},"3884":{},"3885":{},"3886":{},"3887":{},"3888":{},"3889":{}}}],["stavesection",{"_index":1126,"name":{"4608":{},"6816":{}},"parent":{"4609":{},"4610":{},"4611":{},"4612":{},"4613":{},"4614":{},"4615":{},"4616":{},"4617":{},"4618":{},"4619":{},"4620":{},"4621":{},"4622":{},"4623":{},"4624":{},"4625":{},"4626":{},"4627":{},"4628":{},"4629":{},"4630":{},"4631":{},"4632":{},"4633":{},"4634":{},"4635":{},"4636":{},"4637":{},"4638":{},"4639":{},"4640":{},"4641":{},"4642":{},"4643":{},"4644":{},"4645":{},"4646":{},"4647":{},"4648":{},"4649":{},"4650":{},"4651":{},"4652":{},"4653":{},"4654":{},"4655":{},"4656":{},"4657":{},"4658":{},"4659":{},"4660":{},"4661":{},"4662":{},"4663":{},"4664":{}}}],["stavetempo",{"_index":531,"name":{"1492":{},"4670":{},"6817":{}},"parent":{"4671":{},"4672":{},"4673":{},"4674":{},"4675":{},"4676":{},"4678":{},"4679":{},"4680":{},"4681":{},"4682":{},"4683":{},"4684":{},"4685":{},"4686":{},"4687":{},"4688":{},"4689":{},"4690":{},"4691":{},"4692":{},"4693":{},"4694":{},"4695":{},"4696":{},"4697":{},"4698":{},"4699":{},"4700":{},"4701":{},"4702":{},"4703":{},"4704":{},"4705":{},"4706":{},"4707":{},"4708":{},"4709":{},"4710":{},"4711":{},"4712":{},"4713":{},"4714":{},"4715":{},"4716":{},"4717":{},"4718":{},"4719":{},"4720":{},"4721":{},"4722":{},"4723":{},"4724":{},"4725":{},"4726":{},"4727":{},"4728":{},"4729":{}}}],["stavetempo.__type",{"_index":1130,"name":{},"parent":{"4677":{}}}],["stavetempooptions",{"_index":1128,"name":{"4665":{}},"parent":{"4666":{},"4667":{},"4668":{},"4669":{}}}],["stavetext",{"_index":532,"name":{"1493":{},"4730":{},"6818":{}},"parent":{"4731":{},"4732":{},"4733":{},"4734":{},"4735":{},"4736":{},"4737":{},"4738":{},"4739":{},"4740":{},"4741":{},"4742":{},"4743":{},"4744":{},"4745":{},"4746":{},"4747":{},"4748":{},"4749":{},"4750":{},"4751":{},"4752":{},"4753":{},"4754":{},"4755":{},"4756":{},"4757":{},"4758":{},"4759":{},"4760":{},"4761":{},"4762":{},"4763":{},"4764":{},"4765":{},"4766":{},"4767":{},"4768":{},"4769":{},"4770":{},"4771":{},"4772":{},"4773":{},"4774":{},"4775":{},"4776":{},"4777":{},"4778":{},"4779":{},"4780":{},"4781":{},"4782":{},"4783":{},"4784":{},"4785":{},"4786":{},"4787":{}}}],["stavetie",{"_index":507,"name":{"1427":{},"1494":{},"4793":{},"6819":{}},"parent":{"4794":{},"4795":{},"4796":{},"4797":{},"4798":{},"4806":{},"4807":{},"4808":{},"4809":{},"4810":{},"4811":{},"4812":{},"4813":{},"4814":{},"4815":{},"4816":{},"4817":{},"4818":{},"4819":{},"4820":{},"4821":{},"4822":{},"4823":{},"4824":{},"4825":{},"4826":{},"4827":{},"4828":{},"4829":{},"4830":{},"4831":{},"4832":{},"4833":{},"4834":{},"4835":{},"4836":{},"4837":{},"4838":{},"4839":{},"4840":{},"4841":{},"4842":{},"4843":{},"4844":{},"4845":{},"4846":{}}}],["stavetie.__type",{"_index":1134,"name":{},"parent":{"4799":{},"4800":{},"4801":{},"4802":{},"4803":{},"4804":{},"4805":{}}}],["stem",{"_index":437,"name":{"1272":{},"1303":{},"1495":{},"1777":{},"1930":{},"2256":{},"2478":{},"4407":{},"4923":{},"4985":{},"5458":{},"6820":{}},"parent":{"4924":{},"4925":{},"4926":{},"4927":{},"4928":{},"4929":{},"4930":{},"4931":{},"4932":{},"4933":{},"4934":{},"4935":{},"4936":{},"4937":{},"4938":{},"4939":{},"4940":{},"4941":{},"4942":{},"4943":{},"4944":{},"4945":{},"4946":{},"4947":{},"4948":{},"4949":{},"4950":{},"4951":{},"4952":{},"4953":{},"4954":{},"4955":{},"4956":{},"4957":{},"4958":{},"4959":{},"4960":{},"4961":{},"4962":{},"4963":{},"4964":{},"4965":{},"4966":{},"4967":{},"4968":{},"4969":{},"4970":{},"4971":{},"4972":{},"4973":{},"4974":{},"4975":{},"4976":{},"4977":{},"4978":{}}}],["stem_beam_extension",{"_index":701,"name":{"1927":{}},"parent":{}}],["stem_direction",{"_index":677,"name":{"1776":{},"2174":{},"2255":{},"2477":{},"3197":{},"4327":{},"4406":{},"4917":{},"4984":{},"5417":{},"5457":{}},"parent":{}}],["stem_down",{"_index":751,"name":{"2195":{},"4346":{}},"parent":{}}],["stem_down_extension",{"_index":703,"name":{"1929":{}},"parent":{}}],["stem_down_x_offset",{"_index":744,"name":{"2176":{},"3015":{},"3193":{},"4329":{},"5419":{}},"parent":{}}],["stem_down_y_base_offset",{"_index":1146,"name":{"4910":{}},"parent":{}}],["stem_down_y_offset",{"_index":1148,"name":{"4912":{}},"parent":{}}],["stem_extension",{"_index":1153,"name":{"4918":{}},"parent":{}}],["stem_height",{"_index":562,"name":{"1547":{}},"parent":{}}],["stem_up",{"_index":750,"name":{"2194":{},"4345":{}},"parent":{}}],["stem_up_extension",{"_index":702,"name":{"1928":{}},"parent":{}}],["stem_up_x_offset",{"_index":745,"name":{"2177":{},"3016":{},"3194":{},"4330":{},"5420":{}},"parent":{}}],["stem_up_y_base_offset",{"_index":1147,"name":{"4911":{}},"parent":{}}],["stem_up_y_offset",{"_index":1149,"name":{"4913":{}},"parent":{}}],["stem_width",{"_index":563,"name":{"1548":{}},"parent":{}}],["stemdirection",{"_index":1101,"name":{"4320":{}},"parent":{}}],["stemlet_extension",{"_index":212,"name":{"394":{}},"parent":{}}],["stemletheight",{"_index":1150,"name":{"4914":{}},"parent":{}}],["stemmablenote",{"_index":1165,"name":{"4979":{},"6821":{}},"parent":{"4980":{},"4981":{},"4982":{},"4983":{},"4984":{},"4985":{},"4986":{},"4987":{},"4988":{},"4989":{},"4990":{},"4991":{},"4992":{},"4993":{},"4994":{},"4995":{},"4996":{},"4997":{},"4998":{},"4999":{},"5000":{},"5001":{},"5002":{},"5003":{},"5004":{},"5005":{},"5006":{},"5007":{},"5008":{},"5009":{},"5010":{},"5011":{},"5025":{},"5026":{},"5027":{},"5028":{},"5029":{},"5030":{},"5031":{},"5032":{},"5033":{},"5034":{},"5035":{},"5036":{},"5037":{},"5038":{},"5039":{},"5040":{},"5041":{},"5042":{},"5043":{},"5044":{},"5045":{},"5046":{},"5047":{},"5048":{},"5049":{},"5050":{},"5051":{},"5052":{},"5053":{},"5054":{},"5055":{},"5056":{},"5057":{},"5058":{},"5059":{},"5060":{},"5061":{},"5062":{},"5063":{},"5064":{},"5065":{},"5066":{},"5067":{},"5068":{},"5069":{},"5070":{},"5071":{},"5072":{},"5073":{},"5074":{},"5075":{},"5076":{},"5077":{},"5078":{},"5079":{},"5080":{},"5081":{},"5082":{},"5083":{},"5084":{},"5085":{},"5086":{},"5087":{},"5088":{},"5089":{},"5090":{},"5091":{},"5092":{},"5093":{},"5094":{},"5095":{},"5096":{},"5097":{},"5098":{},"5099":{},"5100":{},"5101":{},"5102":{},"5103":{},"5104":{},"5105":{},"5106":{},"5107":{},"5108":{},"5109":{},"5110":{},"5111":{},"5112":{},"5113":{},"5114":{},"5115":{},"5116":{},"5117":{},"5118":{},"5119":{},"5120":{},"5121":{},"5122":{},"5123":{},"5124":{},"5125":{},"5126":{},"5127":{},"5128":{},"5129":{},"5130":{},"5131":{},"5132":{}}}],["stemmablenote.__type",{"_index":1166,"name":{},"parent":{"5012":{},"5013":{},"5014":{},"5015":{},"5016":{},"5017":{},"5018":{},"5019":{},"5020":{},"5021":{},"5022":{},"5023":{},"5024":{}}}],["stemmax",{"_index":1102,"name":{"4321":{}},"parent":{}}],["stemmin",{"_index":1103,"name":{"4322":{}},"parent":{}}],["stemoptions",{"_index":1145,"name":{"4909":{}},"parent":{"4910":{},"4911":{},"4912":{},"4913":{},"4914":{},"4915":{},"4916":{},"4917":{},"4918":{},"4919":{},"4920":{},"4921":{},"4922":{}}}],["stop",{"_index":1229,"name":{"5820":{},"5847":{}},"parent":{}}],["str",{"_index":1213,"name":{"5413":{}},"parent":{}}],["strict",{"_index":1372,"name":{"6988":{}},"parent":{}}],["stringnumber",{"_index":501,"name":{"1417":{},"1496":{},"5133":{},"6822":{}},"parent":{"5134":{},"5135":{},"5136":{},"5137":{},"5138":{},"5139":{},"5140":{},"5141":{},"5142":{},"5143":{},"5144":{},"5145":{},"5146":{},"5147":{},"5148":{},"5149":{},"5150":{},"5151":{},"5152":{},"5153":{},"5154":{},"5155":{},"5156":{},"5157":{},"5158":{},"5159":{},"5160":{},"5161":{},"5162":{},"5163":{},"5164":{},"5165":{},"5166":{},"5167":{},"5168":{},"5169":{},"5170":{},"5171":{},"5172":{},"5173":{},"5174":{},"5175":{},"5176":{},"5177":{},"5178":{},"5179":{},"5180":{},"5181":{},"5182":{},"5183":{},"5184":{},"5185":{},"5186":{},"5187":{},"5188":{},"5189":{},"5190":{},"5191":{},"5192":{},"5193":{},"5194":{},"5195":{},"5196":{},"5197":{},"5198":{},"5199":{},"5200":{},"5201":{},"5202":{}}}],["stroke",{"_index":298,"name":{"597":{},"1497":{},"3023":{},"3705":{},"5203":{},"5332":{},"6823":{}},"parent":{"5204":{},"5205":{},"5206":{},"5214":{},"5215":{},"5216":{},"5217":{},"5218":{},"5219":{},"5220":{},"5222":{},"5223":{},"5224":{},"5225":{},"5226":{},"5227":{},"5228":{},"5229":{},"5230":{},"5231":{},"5232":{},"5233":{},"5234":{},"5235":{},"5236":{},"5237":{},"5238":{},"5239":{},"5240":{},"5241":{},"5242":{},"5243":{},"5244":{},"5245":{},"5246":{},"5247":{},"5248":{},"5249":{},"5250":{},"5251":{},"5252":{},"5253":{},"5254":{},"5255":{},"5256":{},"5257":{},"5258":{},"5259":{},"5260":{},"5261":{},"5262":{},"5263":{},"5264":{},"5265":{},"5266":{},"5267":{},"5268":{},"5269":{},"5270":{},"5271":{},"5272":{},"5273":{},"5274":{},"5275":{},"5276":{},"5277":{}}}],["stroke.__type",{"_index":1173,"name":{},"parent":{"5207":{},"5208":{},"5209":{},"5210":{},"5211":{},"5212":{},"5213":{},"5221":{}}}],["stroke_px",{"_index":125,"name":{"262":{},"840":{},"982":{},"1816":{},"2062":{},"2178":{},"2288":{},"2514":{},"2713":{},"3075":{},"3246":{},"3766":{},"4331":{},"4439":{},"5024":{},"5421":{},"5494":{},"5912":{},"6100":{},"6511":{}},"parent":{}}],["strokestyle",{"_index":305,"name":{"604":{},"1331":{},"3715":{},"5338":{}},"parent":{}}],["style",{"_index":575,"name":{"1563":{},"3192":{}},"parent":{}}],["subscript",{"_index":318,"name":{"632":{},"6061":{}},"parent":{}}],["subscriptoffset",{"_index":330,"name":{"650":{},"667":{},"6033":{}},"parent":{}}],["subtract",{"_index":661,"name":{"1682":{}},"parent":{}}],["success",{"_index":923,"name":{"3571":{}},"parent":{}}],["superscript",{"_index":319,"name":{"633":{},"5822":{},"6062":{}},"parent":{}}],["superscriptoffset",{"_index":329,"name":{"649":{},"666":{},"6032":{}},"parent":{}}],["supersubratio",{"_index":321,"name":{"641":{}},"parent":{}}],["sval",{"_index":417,"name":{"1239":{}},"parent":{}}],["svg",{"_index":970,"name":{"3723":{},"5288":{}},"parent":{}}],["svgcontext",{"_index":533,"name":{"1498":{},"5284":{}},"parent":{"5285":{},"5286":{},"5287":{},"5288":{},"5289":{},"5290":{},"5291":{},"5292":{},"5293":{},"5296":{},"5297":{},"5298":{},"5299":{},"5300":{},"5301":{},"5302":{},"5303":{},"5304":{},"5305":{},"5306":{},"5307":{},"5308":{},"5309":{},"5310":{},"5311":{},"5312":{},"5313":{},"5314":{},"5315":{},"5316":{},"5317":{},"5318":{},"5319":{},"5320":{},"5321":{},"5322":{},"5323":{},"5324":{},"5325":{},"5326":{},"5327":{},"5328":{},"5329":{},"5330":{},"5331":{},"5332":{},"5333":{},"5334":{},"5335":{},"5336":{},"5337":{},"5338":{},"5339":{},"5340":{},"5341":{},"5342":{}}}],["svgcontext.__type",{"_index":1186,"name":{},"parent":{"5294":{},"5295":{}}}],["symbol_spacing",{"_index":830,"name":{"2916":{}},"parent":{}}],["symbolmodifier",{"_index":309,"name":{"612":{}},"parent":{}}],["symbolmodifiers",{"_index":316,"name":{"630":{},"654":{},"1523":{}},"parent":{"631":{},"632":{},"633":{}}}],["symboltype",{"_index":308,"name":{"611":{}},"parent":{}}],["symboltypes",{"_index":315,"name":{"626":{},"653":{},"1522":{}},"parent":{"627":{},"628":{},"629":{}}}],["system",{"_index":511,"name":{"1431":{},"1499":{},"5369":{},"6824":{}},"parent":{"5370":{},"5371":{},"5372":{},"5373":{},"5374":{},"5375":{},"5376":{},"5377":{},"5378":{},"5379":{},"5380":{},"5381":{},"5382":{},"5383":{},"5384":{},"5385":{},"5386":{},"5387":{},"5388":{},"5389":{},"5390":{},"5391":{},"5392":{},"5393":{},"5394":{},"5395":{},"5396":{},"5397":{},"5398":{},"5399":{},"5400":{},"5401":{},"5402":{},"5403":{},"5404":{},"5405":{},"5406":{},"5407":{},"5408":{},"5409":{},"5410":{},"5411":{}}}],["systemformatteroptions",{"_index":1194,"name":{"5343":{}},"parent":{"5344":{},"5345":{},"5346":{},"5347":{}}}],["systemoptions",{"_index":1202,"name":{"5356":{}},"parent":{"5357":{},"5358":{},"5359":{},"5360":{},"5361":{},"5362":{},"5363":{},"5364":{},"5365":{},"5366":{},"5367":{},"5368":{}}}],["systemstave",{"_index":1196,"name":{"5348":{}},"parent":{"5349":{},"5350":{},"5351":{},"5352":{},"5353":{},"5354":{},"5355":{}}}],["tablature_font_scale",{"_index":557,"name":{"1542":{}},"parent":{}}],["tabnote",{"_index":495,"name":{"1407":{},"1500":{},"5432":{},"6825":{}},"parent":{"5433":{},"5434":{},"5435":{},"5436":{},"5437":{},"5438":{},"5439":{},"5440":{},"5441":{},"5442":{},"5443":{},"5444":{},"5445":{},"5446":{},"5447":{},"5448":{},"5449":{},"5450":{},"5451":{},"5452":{},"5453":{},"5454":{},"5455":{},"5456":{},"5457":{},"5458":{},"5459":{},"5460":{},"5461":{},"5462":{},"5463":{},"5464":{},"5465":{},"5466":{},"5467":{},"5468":{},"5469":{},"5470":{},"5471":{},"5472":{},"5473":{},"5474":{},"5475":{},"5476":{},"5477":{},"5478":{},"5479":{},"5480":{},"5481":{},"5495":{},"5496":{},"5497":{},"5498":{},"5499":{},"5500":{},"5501":{},"5502":{},"5503":{},"5504":{},"5505":{},"5506":{},"5507":{},"5508":{},"5509":{},"5510":{},"5511":{},"5512":{},"5513":{},"5514":{},"5515":{},"5516":{},"5517":{},"5518":{},"5519":{},"5520":{},"5521":{},"5522":{},"5523":{},"5524":{},"5525":{},"5526":{},"5527":{},"5528":{},"5529":{},"5530":{},"5531":{},"5532":{},"5533":{},"5534":{},"5535":{},"5536":{},"5537":{},"5538":{},"5539":{},"5540":{},"5541":{},"5542":{},"5543":{},"5544":{},"5545":{},"5546":{},"5547":{},"5548":{},"5549":{},"5550":{},"5551":{},"5552":{},"5553":{},"5554":{},"5555":{},"5556":{},"5557":{},"5558":{},"5559":{},"5560":{},"5561":{},"5562":{},"5563":{},"5564":{},"5565":{},"5566":{},"5567":{},"5568":{},"5569":{},"5570":{},"5571":{},"5572":{},"5573":{},"5574":{},"5575":{},"5576":{},"5577":{},"5578":{},"5579":{},"5580":{},"5581":{},"5582":{},"5583":{},"5584":{},"5585":{},"5586":{},"5587":{},"5588":{},"5589":{},"5590":{},"5591":{},"5592":{},"5593":{},"5594":{},"5595":{}}}],["tabnote.__type",{"_index":1217,"name":{},"parent":{"5482":{},"5483":{},"5484":{},"5485":{},"5486":{},"5487":{},"5488":{},"5489":{},"5490":{},"5491":{},"5492":{},"5493":{},"5494":{}}}],["tabnote_stem_down_extension",{"_index":707,"name":{"1937":{}},"parent":{}}],["tabnote_stem_up_extension",{"_index":708,"name":{"1938":{}},"parent":{}}],["tabnoteposition",{"_index":1212,"name":{"5412":{}},"parent":{"5413":{},"5414":{}}}],["tabnotestruct",{"_index":1215,"name":{"5415":{}},"parent":{"5416":{},"5417":{},"5418":{},"5419":{},"5420":{},"5421":{},"5422":{},"5423":{},"5424":{},"5425":{},"5426":{},"5427":{},"5428":{},"5429":{},"5430":{},"5431":{}}}],["tabslide",{"_index":534,"name":{"1501":{},"5596":{},"6826":{}},"parent":{"5597":{},"5598":{},"5599":{},"5600":{},"5601":{},"5602":{},"5603":{},"5604":{},"5605":{},"5606":{},"5607":{},"5608":{},"5616":{},"5617":{},"5618":{},"5619":{},"5620":{},"5621":{},"5622":{},"5623":{},"5624":{},"5625":{},"5626":{},"5627":{},"5628":{},"5629":{},"5630":{},"5631":{},"5632":{},"5633":{},"5634":{},"5635":{},"5636":{},"5637":{},"5638":{},"5639":{},"5640":{},"5641":{},"5642":{},"5643":{},"5644":{},"5645":{},"5646":{},"5647":{},"5648":{},"5649":{},"5650":{},"5651":{},"5652":{},"5653":{},"5654":{},"5655":{}}}],["tabslide.__type",{"_index":1224,"name":{},"parent":{"5609":{},"5610":{},"5611":{},"5612":{},"5613":{},"5614":{},"5615":{}}}],["tabstave",{"_index":487,"name":{"1397":{},"1502":{},"5656":{},"6827":{}},"parent":{"5657":{},"5658":{},"5659":{},"5660":{},"5661":{},"5662":{},"5663":{},"5664":{},"5665":{},"5666":{},"5667":{},"5668":{},"5669":{},"5670":{},"5671":{},"5672":{},"5673":{},"5674":{},"5675":{},"5676":{},"5677":{},"5678":{},"5679":{},"5680":{},"5681":{},"5682":{},"5683":{},"5684":{},"5685":{},"5686":{},"5687":{},"5688":{},"5689":{},"5690":{},"5691":{},"5692":{},"5693":{},"5694":{},"5695":{},"5696":{},"5697":{},"5698":{},"5699":{},"5700":{},"5701":{},"5702":{},"5703":{},"5704":{},"5705":{},"5706":{},"5707":{},"5708":{},"5709":{},"5710":{},"5711":{},"5712":{},"5713":{},"5714":{},"5715":{},"5716":{},"5717":{},"5718":{},"5719":{},"5720":{},"5721":{},"5722":{},"5723":{},"5724":{},"5725":{},"5726":{},"5727":{},"5728":{},"5729":{},"5730":{},"5731":{},"5732":{},"5733":{},"5734":{},"5735":{},"5736":{},"5737":{},"5738":{},"5739":{},"5740":{},"5741":{},"5742":{},"5743":{},"5744":{},"5745":{},"5746":{},"5747":{},"5748":{},"5749":{},"5750":{},"5751":{},"5752":{},"5753":{},"5754":{},"5755":{},"5756":{},"5757":{},"5758":{},"5759":{},"5760":{},"5761":{}}}],["tabtie",{"_index":535,"name":{"1503":{},"5762":{},"6828":{}},"parent":{"5763":{},"5764":{},"5765":{},"5766":{},"5767":{},"5768":{},"5769":{},"5777":{},"5778":{},"5779":{},"5780":{},"5781":{},"5782":{},"5783":{},"5784":{},"5785":{},"5786":{},"5787":{},"5788":{},"5789":{},"5790":{},"5791":{},"5792":{},"5793":{},"5794":{},"5795":{},"5796":{},"5797":{},"5798":{},"5799":{},"5800":{},"5801":{},"5802":{},"5803":{},"5804":{},"5805":{},"5806":{},"5807":{},"5808":{},"5809":{},"5810":{},"5811":{},"5812":{},"5813":{},"5814":{},"5815":{},"5816":{},"5817":{}}}],["tabtie.__type",{"_index":1226,"name":{},"parent":{"5770":{},"5771":{},"5772":{},"5773":{},"5774":{},"5775":{},"5776":{}}}],["tcontexts",{"_index":1271,"name":{"6319":{}},"parent":{}}],["text",{"_index":231,"name":{"453":{},"610":{},"628":{},"1936":{},"3600":{},"5821":{},"6056":{}},"parent":{}}],["text_font",{"_index":16,"name":{"16":{},"93":{},"173":{},"238":{},"381":{},"460":{},"662":{},"752":{},"814":{},"958":{},"1108":{},"1156":{},"1335":{},"1386":{},"1701":{},"1769":{},"1972":{},"2038":{},"2200":{},"2389":{},"2455":{},"2627":{},"2691":{},"2833":{},"2929":{},"3056":{},"3213":{},"3357":{},"3427":{},"3499":{},"3596":{},"3742":{},"3892":{},"4008":{},"4067":{},"4128":{},"4177":{},"4253":{},"4352":{},"4536":{},"4610":{},"4672":{},"4732":{},"4795":{},"4856":{},"4930":{},"4982":{},"5135":{},"5214":{},"5371":{},"5435":{},"5598":{},"5658":{},"5766":{},"5830":{},"5890":{},"6072":{},"6225":{},"6355":{},"6428":{},"6489":{},"6625":{},"6709":{},"6874":{},"6937":{},"6994":{}},"parent":{}}],["text_justification",{"_index":1081,"name":{"4197":{}},"parent":{}}],["text_line",{"_index":817,"name":{"2893":{}},"parent":{}}],["text_margin_right",{"_index":947,"name":{"3612":{}},"parent":{}}],["text_position_vertical",{"_index":1080,"name":{"4196":{}},"parent":{}}],["text_shift_x",{"_index":1139,"name":{"4804":{},"5614":{},"5775":{}},"parent":{}}],["textbracket",{"_index":510,"name":{"1430":{},"1504":{},"5827":{},"6829":{}},"parent":{"5828":{},"5829":{},"5830":{},"5831":{},"5832":{},"5833":{},"5834":{},"5835":{},"5836":{},"5837":{},"5845":{},"5846":{},"5847":{},"5848":{},"5849":{},"5850":{},"5851":{},"5852":{},"5853":{},"5854":{},"5855":{},"5856":{},"5857":{},"5858":{},"5859":{},"5860":{},"5861":{},"5862":{},"5863":{},"5864":{},"5865":{},"5866":{},"5867":{},"5868":{},"5869":{},"5870":{},"5871":{},"5872":{},"5873":{},"5874":{},"5875":{},"5876":{},"5877":{},"5878":{},"5879":{},"5880":{},"5881":{},"5882":{},"5883":{},"5884":{}}}],["textbracket.__type",{"_index":1232,"name":{},"parent":{"5838":{},"5839":{},"5840":{},"5841":{},"5842":{},"5843":{},"5844":{}}}],["textbracketparams",{"_index":1227,"name":{"5818":{}},"parent":{"5819":{},"5820":{},"5821":{},"5822":{},"5823":{}}}],["textbracketposition",{"_index":548,"name":{"1533":{},"5824":{}},"parent":{"5825":{},"5826":{}}}],["textdynamics",{"_index":499,"name":{"1415":{},"1505":{},"5885":{},"6830":{}},"parent":{"5886":{},"5887":{},"5888":{},"5889":{},"5890":{},"5891":{},"5892":{},"5893":{},"5894":{},"5895":{},"5896":{},"5897":{},"5898":{},"5899":{},"5913":{},"5914":{},"5915":{},"5916":{},"5917":{},"5918":{},"5919":{},"5920":{},"5921":{},"5922":{},"5923":{},"5924":{},"5925":{},"5926":{},"5927":{},"5928":{},"5929":{},"5930":{},"5931":{},"5932":{},"5933":{},"5934":{},"5935":{},"5936":{},"5937":{},"5938":{},"5939":{},"5940":{},"5941":{},"5942":{},"5943":{},"5944":{},"5945":{},"5946":{},"5947":{},"5948":{},"5949":{},"5950":{},"5951":{},"5952":{},"5953":{},"5954":{},"5955":{},"5956":{},"5957":{},"5958":{},"5959":{},"5960":{},"5961":{},"5962":{},"5963":{},"5964":{},"5965":{},"5966":{},"5967":{},"5968":{},"5969":{},"5970":{},"5971":{},"5972":{},"5973":{},"5974":{},"5975":{},"5976":{},"5977":{},"5978":{},"5979":{},"5980":{},"5981":{},"5982":{},"5983":{},"5984":{},"5985":{},"5986":{},"5987":{},"5988":{},"5989":{},"5990":{},"5991":{},"5992":{},"5993":{},"5994":{},"5995":{},"5996":{},"5997":{},"5998":{},"5999":{},"6000":{},"6001":{},"6002":{},"6003":{},"6004":{},"6005":{},"6006":{},"6007":{},"6008":{},"6009":{},"6010":{},"6011":{},"6012":{},"6013":{},"6014":{},"6015":{},"6016":{},"6017":{},"6018":{},"6019":{},"6020":{},"6021":{},"6022":{}}}],["textdynamics.__type",{"_index":1236,"name":{},"parent":{"5900":{},"5901":{},"5902":{},"5903":{},"5904":{},"5905":{},"5906":{},"5907":{},"5908":{},"5909":{},"5910":{},"5911":{},"5912":{}}}],["textformatter",{"_index":536,"name":{"1506":{},"6035":{}},"parent":{"6036":{},"6037":{},"6038":{},"6039":{},"6040":{},"6041":{},"6042":{},"6043":{},"6044":{},"6045":{},"6046":{},"6047":{},"6048":{},"6049":{},"6050":{}}}],["textformatterinfo",{"_index":1237,"name":{"6023":{}},"parent":{"6024":{},"6025":{},"6026":{},"6027":{},"6028":{},"6029":{},"6030":{},"6031":{},"6032":{},"6033":{},"6034":{}}}],["textheight",{"_index":274,"name":{"572":{}},"parent":{}}],["textjustification",{"_index":549,"name":{"1534":{},"4182":{},"6051":{}},"parent":{"6052":{},"6053":{},"6054":{}}}],["textmeasure",{"_index":966,"name":{"3674":{}},"parent":{"3675":{},"3676":{},"3677":{},"3678":{}}}],["textnote",{"_index":492,"name":{"1402":{},"1507":{},"6070":{},"6831":{}},"parent":{"6071":{},"6072":{},"6073":{},"6074":{},"6075":{},"6076":{},"6077":{},"6078":{},"6079":{},"6080":{},"6081":{},"6082":{},"6083":{},"6084":{},"6085":{},"6086":{},"6087":{},"6101":{},"6102":{},"6103":{},"6104":{},"6105":{},"6106":{},"6107":{},"6108":{},"6109":{},"6110":{},"6111":{},"6112":{},"6113":{},"6114":{},"6115":{},"6116":{},"6117":{},"6118":{},"6119":{},"6120":{},"6121":{},"6122":{},"6123":{},"6124":{},"6125":{},"6126":{},"6127":{},"6128":{},"6129":{},"6130":{},"6131":{},"6132":{},"6133":{},"6134":{},"6135":{},"6136":{},"6137":{},"6138":{},"6139":{},"6140":{},"6141":{},"6142":{},"6143":{},"6144":{},"6145":{},"6146":{},"6147":{},"6148":{},"6149":{},"6150":{},"6151":{},"6152":{},"6153":{},"6154":{},"6155":{},"6156":{},"6157":{},"6158":{},"6159":{},"6160":{},"6161":{},"6162":{},"6163":{},"6164":{},"6165":{},"6166":{},"6167":{},"6168":{},"6169":{},"6170":{},"6171":{},"6172":{},"6173":{},"6174":{},"6175":{},"6176":{},"6177":{},"6178":{},"6179":{},"6180":{},"6181":{},"6182":{},"6183":{},"6184":{},"6185":{},"6186":{},"6187":{},"6188":{},"6189":{},"6190":{},"6191":{},"6192":{},"6193":{},"6194":{},"6195":{},"6196":{},"6197":{},"6198":{},"6199":{},"6200":{},"6201":{},"6202":{},"6203":{},"6204":{},"6205":{},"6206":{},"6207":{},"6208":{},"6209":{},"6210":{}}}],["textnote.__type",{"_index":1256,"name":{},"parent":{"6088":{},"6089":{},"6090":{},"6091":{},"6092":{},"6093":{},"6094":{},"6095":{},"6096":{},"6097":{},"6098":{},"6099":{},"6100":{}}}],["textnotestruct",{"_index":1252,"name":{"6055":{}},"parent":{"6056":{},"6057":{},"6058":{},"6059":{},"6060":{},"6061":{},"6062":{},"6063":{},"6064":{},"6065":{},"6066":{},"6067":{},"6068":{},"6069":{}}}],["textverticalposition",{"_index":1072,"name":{"4178":{}},"parent":{}}],["thickness",{"_index":384,"name":{"1095":{},"4073":{}},"parent":{}}],["throwonerror",{"_index":455,"name":{"1299":{}},"parent":{}}],["tickable",{"_index":1264,"name":{"6223":{},"6832":{}},"parent":{"6224":{},"6225":{},"6226":{},"6227":{},"6228":{},"6229":{},"6230":{},"6231":{},"6232":{},"6233":{},"6234":{},"6235":{},"6236":{},"6237":{},"6238":{},"6239":{},"6240":{},"6241":{},"6242":{},"6243":{},"6244":{},"6245":{},"6246":{},"6247":{},"6248":{},"6249":{},"6250":{},"6251":{},"6252":{},"6253":{},"6254":{},"6255":{},"6256":{},"6257":{},"6258":{},"6259":{},"6260":{},"6261":{},"6262":{},"6263":{},"6264":{},"6265":{},"6266":{},"6267":{},"6268":{},"6269":{},"6270":{},"6271":{},"6272":{},"6273":{},"6274":{},"6275":{},"6276":{},"6277":{},"6278":{},"6279":{},"6280":{},"6281":{},"6282":{},"6283":{},"6284":{},"6285":{},"6286":{},"6287":{},"6288":{},"6289":{},"6290":{},"6291":{},"6292":{},"6293":{},"6294":{},"6295":{},"6296":{},"6297":{},"6298":{},"6299":{},"6300":{},"6301":{},"6302":{}}}],["tickcontext",{"_index":502,"name":{"1418":{},"1508":{},"6316":{}},"parent":{"6317":{},"6318":{},"6319":{},"6320":{},"6321":{},"6322":{},"6323":{},"6324":{},"6325":{},"6326":{},"6327":{},"6328":{},"6329":{},"6330":{},"6331":{},"6332":{},"6333":{},"6334":{},"6335":{},"6336":{},"6337":{},"6338":{},"6339":{},"6340":{},"6341":{},"6342":{},"6343":{}}}],["tickcontextmetrics",{"_index":1265,"name":{"6303":{}},"parent":{"6304":{},"6305":{},"6306":{},"6307":{},"6308":{},"6309":{},"6310":{},"6311":{},"6312":{},"6313":{}}}],["tickcontextoptions",{"_index":1268,"name":{"6314":{}},"parent":{"6315":{}}}],["tickid",{"_index":1269,"name":{"6315":{}},"parent":{}}],["ticks",{"_index":888,"name":{"3044":{}},"parent":{}}],["tie_spacing",{"_index":1136,"name":{"4801":{},"5611":{},"5772":{}},"parent":{}}],["tienotes",{"_index":1132,"name":{"4788":{}},"parent":{"4789":{},"4790":{},"4791":{},"4792":{}}}],["time",{"_index":457,"name":{"1302":{}},"parent":{}}],["time4_4",{"_index":564,"name":{"1549":{}},"parent":{}}],["timesignature",{"_index":537,"name":{"1509":{},"6357":{},"6424":{},"6833":{}},"parent":{"6425":{},"6426":{},"6427":{},"6428":{},"6429":{},"6430":{},"6431":{},"6432":{},"6433":{},"6434":{},"6435":{},"6436":{},"6437":{},"6438":{},"6439":{},"6440":{},"6441":{},"6442":{},"6443":{},"6444":{},"6445":{},"6446":{},"6447":{},"6448":{},"6449":{},"6450":{},"6451":{},"6452":{},"6453":{},"6454":{},"6455":{},"6456":{},"6457":{},"6458":{},"6459":{},"6460":{},"6461":{},"6462":{},"6463":{},"6464":{},"6465":{},"6466":{},"6467":{},"6468":{},"6469":{},"6470":{},"6471":{},"6472":{},"6473":{},"6474":{},"6475":{},"6476":{},"6477":{},"6478":{},"6479":{},"6480":{},"6481":{},"6482":{},"6483":{},"6484":{},"6485":{}}}],["timesignatureglyph",{"_index":1288,"name":{"6344":{}},"parent":{"6345":{},"6346":{},"6347":{},"6348":{},"6349":{},"6350":{},"6351":{},"6352":{},"6353":{},"6354":{},"6355":{},"6356":{},"6357":{},"6358":{},"6359":{},"6360":{},"6361":{},"6362":{},"6363":{},"6364":{},"6365":{},"6366":{},"6367":{},"6368":{},"6369":{},"6370":{},"6371":{},"6372":{},"6373":{},"6374":{},"6375":{},"6376":{},"6377":{},"6378":{},"6379":{},"6380":{},"6381":{},"6382":{},"6383":{},"6384":{},"6385":{},"6386":{},"6387":{},"6388":{},"6389":{},"6390":{},"6391":{},"6392":{},"6393":{},"6394":{},"6395":{},"6396":{},"6397":{},"6398":{},"6399":{},"6400":{},"6401":{},"6402":{},"6403":{},"6404":{},"6405":{},"6406":{},"6407":{},"6408":{},"6409":{},"6410":{},"6411":{},"6412":{},"6413":{},"6414":{},"6415":{},"6416":{},"6417":{},"6418":{},"6419":{}}}],["timesignatureinfo",{"_index":1291,"name":{"6420":{}},"parent":{"6421":{},"6422":{},"6423":{}}}],["timesignote",{"_index":493,"name":{"1405":{},"1510":{},"6486":{},"6834":{}},"parent":{"6487":{},"6488":{},"6489":{},"6490":{},"6491":{},"6492":{},"6493":{},"6494":{},"6495":{},"6496":{},"6497":{},"6498":{},"6512":{},"6513":{},"6514":{},"6515":{},"6516":{},"6517":{},"6518":{},"6519":{},"6520":{},"6521":{},"6522":{},"6523":{},"6524":{},"6525":{},"6526":{},"6527":{},"6528":{},"6529":{},"6530":{},"6531":{},"6532":{},"6533":{},"6534":{},"6535":{},"6536":{},"6537":{},"6538":{},"6539":{},"6540":{},"6541":{},"6542":{},"6543":{},"6544":{},"6545":{},"6546":{},"6547":{},"6548":{},"6549":{},"6550":{},"6551":{},"6552":{},"6553":{},"6554":{},"6555":{},"6556":{},"6557":{},"6558":{},"6559":{},"6560":{},"6561":{},"6562":{},"6563":{},"6564":{},"6565":{},"6566":{},"6567":{},"6568":{},"6569":{},"6570":{},"6571":{},"6572":{},"6573":{},"6574":{},"6575":{},"6576":{},"6577":{},"6578":{},"6579":{},"6580":{},"6581":{},"6582":{},"6583":{},"6584":{},"6585":{},"6586":{},"6587":{},"6588":{},"6589":{},"6590":{},"6591":{},"6592":{},"6593":{},"6594":{},"6595":{},"6596":{},"6597":{},"6598":{},"6599":{},"6600":{},"6601":{},"6602":{},"6603":{},"6604":{},"6605":{},"6606":{},"6607":{},"6608":{},"6609":{},"6610":{},"6611":{},"6612":{},"6613":{},"6614":{},"6615":{},"6616":{},"6617":{},"6618":{},"6619":{},"6620":{}}}],["timesignote.__type",{"_index":1298,"name":{},"parent":{"6499":{},"6500":{},"6501":{},"6502":{},"6503":{},"6504":{},"6505":{},"6506":{},"6507":{},"6508":{},"6509":{},"6510":{},"6511":{}}}],["to_coda",{"_index":1120,"name":{"4551":{}},"parent":{}}],["tocssstring",{"_index":606,"name":{"1610":{}},"parent":{}}],["token",{"_index":914,"name":{"3562":{}},"parent":{}}],["tomixedstring",{"_index":672,"name":{"1697":{}},"parent":{}}],["top",{"_index":86,"name":{"86":{},"624":{},"4180":{},"5825":{},"6702":{}},"parent":{}}],["top_stave",{"_index":1054,"name":{"4071":{}},"parent":{}}],["top_text_line",{"_index":818,"name":{"2894":{}},"parent":{}}],["top_text_position",{"_index":990,"name":{"3888":{}},"parent":{}}],["topglyphs",{"_index":726,"name":{"1977":{},"6367":{}},"parent":{}}],["topline",{"_index":1294,"name":{"6432":{}},"parent":{}}],["topstartx",{"_index":1289,"name":{"6358":{}},"parent":{}}],["tosimplifiedstring",{"_index":671,"name":{"1696":{}},"parent":{}}],["tostring",{"_index":623,"name":{"1628":{},"1695":{}},"parent":{}}],["totalleftpx",{"_index":1266,"name":{"6304":{}},"parent":{}}],["totalrightpx",{"_index":1267,"name":{"6305":{}},"parent":{}}],["tremolo",{"_index":538,"name":{"1511":{},"1582":{},"6621":{},"6835":{}},"parent":{"6622":{},"6623":{},"6624":{},"6625":{},"6626":{},"6627":{},"6628":{},"6629":{},"6630":{},"6631":{},"6632":{},"6633":{},"6634":{},"6635":{},"6636":{},"6637":{},"6638":{},"6639":{},"6640":{},"6641":{},"6642":{},"6643":{},"6644":{},"6645":{},"6646":{},"6647":{},"6648":{},"6649":{},"6650":{},"6651":{},"6652":{},"6653":{},"6654":{},"6655":{},"6656":{},"6657":{},"6658":{},"6659":{},"6660":{},"6661":{},"6662":{},"6663":{},"6664":{},"6665":{},"6666":{},"6667":{},"6668":{},"6669":{},"6670":{},"6671":{},"6672":{},"6673":{},"6674":{},"6675":{},"6676":{},"6677":{},"6678":{},"6679":{},"6680":{},"6681":{},"6682":{},"6683":{}}}],["triggerfunction",{"_index":912,"name":{"3559":{}},"parent":{"3560":{}}}],["tune",{"_index":651,"name":{"1664":{}},"parent":{}}],["tuning",{"_index":539,"name":{"1512":{},"6684":{}},"parent":{"6685":{},"6686":{},"6687":{},"6688":{},"6689":{},"6690":{},"6691":{}}}],["tuplet",{"_index":465,"name":{"1318":{},"1424":{},"1513":{},"6703":{},"6836":{}},"parent":{"6704":{},"6705":{},"6706":{},"6707":{},"6708":{},"6709":{},"6710":{},"6711":{},"6712":{},"6713":{},"6714":{},"6715":{},"6716":{},"6717":{},"6718":{},"6719":{},"6720":{},"6721":{},"6722":{},"6723":{},"6724":{},"6725":{},"6726":{},"6727":{},"6728":{},"6729":{},"6730":{},"6731":{},"6732":{},"6733":{},"6734":{},"6735":{},"6736":{},"6737":{},"6738":{},"6739":{},"6740":{},"6741":{},"6742":{},"6743":{},"6744":{},"6745":{},"6746":{},"6747":{},"6748":{},"6749":{},"6750":{},"6751":{},"6752":{},"6753":{},"6754":{},"6755":{},"6756":{},"6757":{},"6758":{},"6759":{},"6760":{},"6761":{}}}],["tupletlocation",{"_index":1315,"name":{"6700":{}},"parent":{"6701":{},"6702":{}}}],["tupletoptions",{"_index":1307,"name":{"6692":{}},"parent":{"6693":{},"6694":{},"6695":{},"6696":{},"6697":{},"6698":{},"6699":{}}}],["type",{"_index":18,"name":{"18":{},"175":{},"452":{},"1231":{},"1265":{},"1325":{},"2186":{},"2982":{},"3038":{},"3041":{},"3050":{},"3206":{},"3598":{},"4005":{},"4068":{},"4123":{},"4339":{},"4537":{},"4855":{},"5205":{},"5429":{},"6067":{}},"parent":{}}],["types",{"_index":362,"name":{"750":{},"1245":{}},"parent":{}}],["typestring",{"_index":941,"name":{"3603":{},"4006":{},"4069":{}},"parent":{}}],["underline_superscript",{"_index":1233,"name":{"5841":{}},"parent":{}}],["unicode",{"_index":566,"name":{"1551":{}},"parent":{}}],["unsetpartialbeamsideat",{"_index":221,"name":{"405":{}},"parent":{}}],["up",{"_index":234,"name":{"458":{},"3726":{},"4926":{}},"parent":{}}],["updatecachekey",{"_index":1246,"name":{"6042":{}},"parent":{}}],["updateindex",{"_index":958,"name":{"3666":{}},"parent":{}}],["updatekerningadjustments",{"_index":342,"name":{"671":{}},"parent":{}}],["updateoverbaradjustments",{"_index":341,"name":{"670":{}},"parent":{}}],["updateparams",{"_index":1245,"name":{"6041":{}},"parent":{}}],["updatewidth",{"_index":792,"name":{"2463":{},"5443":{}},"parent":{}}],["upperkerningtext",{"_index":335,"name":{"657":{}},"parent":{}}],["use_symbols",{"_index":829,"name":{"2915":{}},"parent":{}}],["used",{"_index":1261,"name":{"6220":{}},"parent":{}}],["val",{"_index":414,"name":{"1236":{}},"parent":{}}],["validate",{"_index":604,"name":{"1608":{}},"parent":{}}],["valign",{"_index":312,"name":{"615":{}},"parent":{}}],["value",{"_index":659,"name":{"1679":{},"3657":{}},"parent":{}}],["vertical_bar_width",{"_index":986,"name":{"3883":{}},"parent":{}}],["verticaljustify",{"_index":91,"name":{"96":{},"639":{}},"parent":{}}],["verticaljustifystring",{"_index":92,"name":{"97":{},"640":{}},"parent":{}}],["vex",{"_index":1353,"name":{"6852":{}},"parent":{"6853":{},"6854":{},"6855":{},"6856":{},"6857":{},"6858":{},"6859":{},"6860":{},"6861":{}}}],["vibrato",{"_index":540,"name":{"1514":{},"6837":{},"6868":{}},"parent":{"6869":{},"6870":{},"6871":{},"6872":{},"6873":{},"6874":{},"6875":{},"6876":{},"6877":{},"6878":{},"6879":{},"6880":{},"6881":{},"6882":{},"6883":{},"6884":{},"6885":{},"6886":{},"6887":{},"6888":{},"6889":{},"6890":{},"6891":{},"6892":{},"6893":{},"6894":{},"6895":{},"6896":{},"6897":{},"6898":{},"6899":{},"6900":{},"6901":{},"6902":{},"6903":{},"6904":{},"6905":{},"6906":{},"6907":{},"6908":{},"6909":{},"6910":{},"6911":{},"6912":{},"6913":{},"6914":{},"6915":{},"6916":{},"6917":{},"6918":{},"6919":{},"6920":{},"6921":{},"6922":{},"6923":{},"6924":{},"6925":{},"6926":{},"6927":{},"6928":{},"6929":{},"6930":{},"6931":{},"6932":{},"6933":{}}}],["vibrato_width",{"_index":1362,"name":{"6865":{},"6941":{}},"parent":{}}],["vibratobracket",{"_index":509,"name":{"1429":{},"1515":{},"6838":{},"6934":{}},"parent":{"6935":{},"6936":{},"6937":{},"6938":{},"6939":{},"6940":{},"6946":{},"6947":{},"6948":{},"6949":{},"6950":{},"6951":{},"6952":{},"6953":{},"6954":{},"6955":{},"6956":{},"6957":{},"6958":{},"6959":{},"6960":{},"6961":{},"6962":{},"6963":{},"6964":{},"6965":{},"6966":{},"6967":{},"6968":{},"6969":{},"6970":{},"6971":{},"6972":{},"6973":{},"6974":{},"6975":{},"6976":{},"6977":{},"6978":{},"6979":{},"6980":{},"6981":{},"6982":{}}}],["vibratobracket.__type",{"_index":1368,"name":{},"parent":{"6941":{},"6942":{},"6943":{},"6944":{},"6945":{}}}],["vibratorenderoptions",{"_index":1359,"name":{"6862":{}},"parent":{"6863":{},"6864":{},"6865":{},"6866":{},"6867":{}}}],["visible",{"_index":980,"name":{"3877":{}},"parent":{}}],["voice",{"_index":466,"name":{"1320":{},"1421":{},"1516":{},"6839":{},"6991":{}},"parent":{"6992":{},"6993":{},"6994":{},"6995":{},"6996":{},"6997":{},"6998":{},"6999":{},"7000":{},"7001":{},"7002":{},"7003":{},"7004":{},"7005":{},"7006":{},"7007":{},"7008":{},"7009":{},"7010":{},"7011":{},"7012":{},"7013":{},"7014":{},"7015":{},"7016":{},"7017":{},"7018":{},"7019":{},"7020":{},"7021":{},"7022":{},"7023":{},"7024":{},"7025":{},"7026":{},"7027":{},"7028":{},"7029":{},"7030":{},"7031":{},"7032":{},"7033":{},"7034":{},"7035":{},"7036":{},"7037":{},"7038":{},"7039":{},"7040":{},"7041":{},"7042":{},"7043":{},"7044":{},"7045":{},"7046":{},"7047":{},"7048":{},"7049":{}}}],["voice_shift",{"_index":1104,"name":{"4323":{}},"parent":{}}],["voicemode",{"_index":550,"name":{"1535":{},"6987":{}},"parent":{"6988":{},"6989":{},"6990":{}}}],["voices",{"_index":1197,"name":{"5349":{}},"parent":{}}],["voicetime",{"_index":1369,"name":{"6983":{}},"parent":{"6984":{},"6985":{},"6986":{}}}],["volta",{"_index":541,"name":{"1517":{},"4853":{},"6840":{}},"parent":{"4854":{},"4855":{},"4856":{},"4857":{},"4858":{},"4859":{},"4860":{},"4861":{},"4862":{},"4863":{},"4864":{},"4865":{},"4866":{},"4867":{},"4868":{},"4869":{},"4870":{},"4871":{},"4872":{},"4873":{},"4874":{},"4875":{},"4876":{},"4877":{},"4878":{},"4879":{},"4880":{},"4881":{},"4882":{},"4883":{},"4884":{},"4885":{},"4886":{},"4887":{},"4888":{},"4889":{},"4890":{},"4891":{},"4892":{},"4893":{},"4894":{},"4895":{},"4896":{},"4897":{},"4898":{},"4899":{},"4900":{},"4901":{},"4902":{},"4903":{},"4904":{},"4905":{},"4906":{},"4907":{},"4908":{}}}],["voltatype",{"_index":547,"name":{"1532":{},"4847":{}},"parent":{"4848":{},"4849":{},"4850":{},"4851":{},"4852":{}}}],["w",{"_index":246,"name":{"532":{},"539":{}},"parent":{}}],["warn",{"_index":1348,"name":{"6844":{}},"parent":{}}],["wave_girth",{"_index":1361,"name":{"6864":{},"6943":{}},"parent":{}}],["wave_height",{"_index":1360,"name":{"6863":{},"6942":{}},"parent":{}}],["wave_width",{"_index":1364,"name":{"6867":{},"6945":{}},"parent":{}}],["web_font_files",{"_index":611,"name":{"1615":{}},"parent":{}}],["web_font_host",{"_index":610,"name":{"1614":{}},"parent":{}}],["weight",{"_index":574,"name":{"1562":{}},"parent":{}}],["width",{"_index":7,"name":{"7":{},"454":{},"556":{},"564":{},"616":{},"1380":{},"1935":{},"1946":{},"2896":{},"3027":{},"3677":{},"4928":{},"5289":{},"5364":{},"6306":{},"6360":{}},"parent":{}}],["x",{"_index":230,"name":{"451":{},"530":{},"537":{},"3200":{},"3675":{},"5294":{},"5363":{}},"parent":{}}],["x_begin",{"_index":1155,"name":{"4922":{}},"parent":{}}],["x_end",{"_index":1154,"name":{"4921":{}},"parent":{}}],["x_max",{"_index":588,"name":{"1587":{},"1949":{}},"parent":{}}],["x_min",{"_index":587,"name":{"1586":{},"1948":{}},"parent":{}}],["x_shift",{"_index":364,"name":{"758":{},"1096":{},"1950":{},"3196":{}},"parent":{}}],["xmax",{"_index":1086,"name":{"4239":{}},"parent":{}}],["xmin",{"_index":1085,"name":{"4238":{},"6361":{}},"parent":{}}],["xshift",{"_index":310,"name":{"613":{}},"parent":{}}],["y",{"_index":245,"name":{"531":{},"538":{},"951":{},"3201":{},"3676":{},"5295":{},"5365":{}},"parent":{}}],["y_bottom",{"_index":1091,"name":{"4306":{},"4919":{}},"parent":{}}],["y_max",{"_index":590,"name":{"1589":{}},"parent":{}}],["y_min",{"_index":589,"name":{"1588":{}},"parent":{}}],["y_offset",{"_index":1314,"name":{"6699":{}},"parent":{}}],["y_shift",{"_index":118,"name":{"254":{},"832":{},"974":{},"1097":{},"1808":{},"1951":{},"2054":{},"2280":{},"2506":{},"2705":{},"3067":{},"3238":{},"3758":{},"4120":{},"4431":{},"4805":{},"5016":{},"5486":{},"5615":{},"5776":{},"5904":{},"6092":{},"6503":{}},"parent":{}}],["y_spacing_scale",{"_index":1299,"name":{"6627":{}},"parent":{}}],["y_top",{"_index":1090,"name":{"4305":{},"4920":{}},"parent":{}}],["yshift",{"_index":311,"name":{"614":{}},"parent":{}}],["zeroormore",{"_index":917,"name":{"3565":{}},"parent":{}}]],"pipeline":[]}} \ No newline at end of file diff --git a/docs/api/classes/Accidental.html b/docs/api/classes/Accidental.html index 21bb6bd6bd..edc1278700 100644 --- a/docs/api/classes/Accidental.html +++ b/docs/api/classes/Accidental.html @@ -3,7 +3,7 @@ ModifierContext. Accidentals are modifiers that can be attached to notes. Support is included for both western and microtonal accidentals.

      See tests/accidental_tests.ts for usage examples.

      -

      Hierarchy

      Index

      Constructors

      constructor

      Hierarchy

      Index

      Constructors

      constructor

      • Create accidental.

        Parameters

        • type: string

          value from Vex.Flow.accidentalCodes.accidentals table in tables.ts. @@ -78,7 +78,9 @@

          Get attached note (StaveNote, TabNote, etc.)

          Returns Note

      getPosition

      • getPosition(): number

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getStyle

      • Get the element style used for rendering.

        @@ -137,7 +139,7 @@

        Set the rendered status.

        Parameters

        • rendered: boolean = true

        Returns Accidental

      setSpacingFromNextModifier

      • setSpacingFromNextModifier(x: number): void

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -149,7 +151,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Accidental

      setTextLine

      setTextLine

      setWidth

      • Set modifier widths.

        @@ -166,4 +168,4 @@

        Helper function to determine whether two lines of accidentals collide vertically

        Parameters

        Returns boolean

      Static format

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Annotation.html b/docs/api/classes/Annotation.html index f59ba9a50e..ddf281f5fb 100644 --- a/docs/api/classes/Annotation.html +++ b/docs/api/classes/Annotation.html @@ -2,7 +2,7 @@

      Annotations are modifiers that can be attached to notes.

      See tests/annotation_tests.ts for usage examples.

      -

      Hierarchy

      Index

      Constructors

      constructor

      Hierarchy

      Index

      Constructors

      constructor

      • Annotations inherit from Modifier and is positioned correctly when in a ModifierContext. Create a new Annotation with the string text.

        @@ -78,7 +78,9 @@

        Get attached note (StaveNote, TabNote, etc.)

        Returns Note

      getPosition

      • getPosition(): number

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getStyle

      • Get the element style used for rendering.

        @@ -139,7 +141,7 @@

        Set the rendered status.

        Parameters

        • rendered: boolean = true

        Returns Annotation

      setSpacingFromNextModifier

      • setSpacingFromNextModifier(x: number): void

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -151,7 +153,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Annotation

      setTextLine

      setTextLine

      setVerticalJustification

      • Set vertical position of text (above or below stave).

        @@ -166,4 +168,4 @@

        Shift modifier down y pixels. Negative values shift up.

        Parameters

        • y: number

        Returns Annotation

      Static format

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns boolean

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Articulation.html b/docs/api/classes/Articulation.html index 3164c25471..e3c4c65e6e 100644 --- a/docs/api/classes/Articulation.html +++ b/docs/api/classes/Articulation.html @@ -3,7 +3,7 @@ attached to notes. The complete list of articulations is available in tables.ts under Vex.Flow.articulationCodes.

      See tests/articulation_tests.ts for usage examples.

      -

      Hierarchy

      Index

      Constructors

      constructor

      Hierarchy

      Index

      Constructors

      constructor

      • Create a new articulation.

        Parameters

        • type: string

          entry in Vex.Flow.articulationCodes in tables.ts

          @@ -77,7 +77,9 @@

          Get attached note (StaveNote, TabNote, etc.)

          Returns Note

      getPosition

      • getPosition(): number

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getStyle

      • Get the element style used for rendering.

        @@ -136,7 +138,7 @@

        Set the rendered status.

        Parameters

        • rendered: boolean = true

        Returns Articulation

      setSpacingFromNextModifier

      • setSpacingFromNextModifier(x: number): void

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -148,7 +150,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Articulation

      setTextLine

      setTextLine

      setWidth

      • Set modifier widths.

        @@ -171,4 +173,4 @@

        Ideally, when this function has completed, the vertical articulation positions should be ready to render without further adjustment. But the current state is far from this ideal.

        -

        Parameters

        Returns boolean

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns boolean

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/BarNote.html b/docs/api/classes/BarNote.html index 596d0f0059..fc8c7db775 100644 --- a/docs/api/classes/BarNote.html +++ b/docs/api/classes/BarNote.html @@ -3,7 +3,7 @@ be added to a voice and rendered in the middle of a stave. Since it has no duration, it consumes no ticks, and is dealt with appropriately by the formatter.

      See tests/barnote_tests.ts for usage examples.

      -

      Hierarchy

      Index

      Constructors

      constructor

      Hierarchy

      Index

      Constructors

      constructor

      • Every note is a tickable, i.e., it can be mutated by the Formatter class for positioning and layout.

        Parameters

        Returns BarNote

      Properties

      Optional glyph

      glyph?: any

      keyProps

      keyProps: KeyProps[]

      keys

      keys: string[]

      render_options

      render_options: { annotation_spacing: number; draw?: boolean; draw_dots?: boolean; draw_stem?: boolean; draw_stem_through_stave?: boolean; extend_left?: number; extend_right?: number; font: string; glyph_font_scale: number; glyph_font_size?: number; scale: number; stroke_px: number; y_shift: number }

      Type declaration

      • annotation_spacing: number
      • Optional draw?: boolean
      • Optional draw_dots?: boolean
      • Optional draw_stem?: boolean
      • Optional draw_stem_through_stave?: boolean
      • Optional extend_left?: number
      • Optional extend_right?: number
      • font: string
      • glyph_font_scale: number
      • Optional glyph_font_size?: number
      • scale: number
      • stroke_px: number
      • y_shift: number

      Static DEBUG

      DEBUG: boolean = false
      @@ -125,7 +125,9 @@ audio player.

      Returns undefined | Note

      getRightDisplacedHeadPx

      • getRightDisplacedHeadPx(): number

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getStave

      • getStave(): undefined | Stave

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStemDirection

      • getStemDirection(): number
      • Get the direction of the stem.

        @@ -240,7 +242,7 @@

        Set spacing to the right of the notes.

        Parameters

        • x: number

        Returns BarNote

      setStave

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -252,7 +254,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns BarNote

      setTickContext

      setTickContext

      setTuplet

      • Attach to new tuplet.

        @@ -271,4 +273,4 @@

        True if this note has no duration (e.g., bar notes, spacers, etc.).

        Returns boolean

      Static plotMetrics

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Barline.html b/docs/api/classes/Barline.html index 06fb0a05a2..397cdc15ea 100644 --- a/docs/api/classes/Barline.html +++ b/docs/api/classes/Barline.html @@ -1,4 +1,4 @@ -Barline | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Barline

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +Barline | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Barline

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -45,7 +45,9 @@

        Return the context.

        Returns undefined | RenderContext

      getFont

      • getFont(): string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getLayoutMetrics

      getPadding

      • getPadding(index: number): number

      getPosition

      • getPosition(): number

      getStave

      • getStave(): undefined | Stave

      getStyle

      getLayoutMetrics

      getPadding

      • getPadding(index: number): number

      getPosition

      • getPosition(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStyle

      getType

      • getType(): number
      • Returns number

      getWidth

      • getWidth(): number

      getX

      • getX(): number

      hasClass

      • hasClass(className: string): boolean
      • Check if it has a class label (An element can have multiple class labels).

        @@ -84,7 +86,7 @@

        Set the element & associated children style used for rendering.

        Parameters

        Returns Barline

      setLayoutMetrics

      setPadding

      • setPadding(padding: number): Barline

      setPosition

      • setPosition(position: number): Barline

      setRendered

      • setRendered(rendered?: boolean): Barline

      setStave

      setStyle

      setStave

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -96,4 +98,4 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Barline

      setType

      • setType(type: string | number): Barline
      • Parameters

        • type: string | number

        Returns Barline

      setWidth

      setX

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns Barline

      setType

      • setType(type: string | number): Barline
      • Parameters

        • type: string | number

        Returns Barline

      setWidth

      setX

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Beam.html b/docs/api/classes/Beam.html index 3ee8a876b4..907e902b92 100644 --- a/docs/api/classes/Beam.html +++ b/docs/api/classes/Beam.html @@ -1,6 +1,6 @@ Beam | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Beam

      Beams span over a set of StemmableNotes.

      -

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      notes

      notes: StemmableNote[]

      postFormatted

      postFormatted: boolean

      render_options

      render_options: { beam_width: number; flat_beam_offset?: number; flat_beams: boolean; max_slope: number; min_flat_beam_offset: number; min_slope: number; partial_beam_length: number; secondary_break_ticks?: number; show_stemlets: boolean; slope_cost: number; slope_iterations: number; stemlet_extension: number }

      Type declaration

      • beam_width: number
      • Optional flat_beam_offset?: number
      • flat_beams: boolean
      • max_slope: number
      • min_flat_beam_offset: number
      • min_slope: number
      • partial_beam_length: number
      • Optional secondary_break_ticks?: number
      • show_stemlets: boolean
      • slope_cost: number
      • slope_iterations: number
      • stemlet_extension: number

      slope

      slope: number = 0

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      notes

      notes: StemmableNote[]

      postFormatted

      postFormatted: boolean

      render_options

      render_options: { beam_width: number; flat_beam_offset?: number; flat_beams: boolean; max_slope: number; min_flat_beam_offset: number; min_slope: number; partial_beam_length: number; secondary_break_ticks?: number; show_stemlets: boolean; slope_cost: number; slope_iterations: number; stemlet_extension: number }

      Type declaration

      • beam_width: number
      • Optional flat_beam_offset?: number
      • flat_beams: boolean
      • max_slope: number
      • min_flat_beam_offset: number
      • min_slope: number
      • partial_beam_length: number
      • Optional secondary_break_ticks?: number
      • show_stemlets: boolean
      • slope_cost: number
      • slope_iterations: number
      • stemlet_extension: number

      slope

      slope: number = 0

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -64,7 +64,9 @@ See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

      getNotes

      getSlopeY

      • getSlopeY(x: number, first_x_px: number, first_y_px: number, slope: number): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getSlopeY

      • getSlopeY(x: number, first_x_px: number, first_y_px: number, slope: number): number
      • Return the y coordinate for linear function.

        Parameters

        • x: number
        • first_x_px: number
        • first_y_px: number
        • slope: number

        Returns number

      getStemDirection

      • getStemDirection(): number

      setRendered

      • setRendered(rendered?: boolean): Beam

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -136,7 +138,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Beam

      unsetPartialBeamSideAt

      • unsetPartialBeamSideAt(noteIndex: number): Beam

      unsetPartialBeamSideAt

      • unsetPartialBeamSideAt(noteIndex: number): Beam
      • Restore the default direction of a partial beam (a secondary-level beam that does not connect to any other notes).

        Parameters

        • noteIndex: number

        Returns Beam

      Static applyAndGetBeams

      • @@ -174,4 +176,4 @@

        Get the default beam groups for a provided time signature. Attempt to guess if the time signature is not found in table. Currently this is fairly naive.

        -

        Parameters

        • time_sig: string

        Returns Fraction[]

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      • time_sig: string

      Returns Fraction[]

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Bend.html b/docs/api/classes/Bend.html index 9c3ab5f239..12c00223ee 100644 --- a/docs/api/classes/Bend.html +++ b/docs/api/classes/Bend.html @@ -1,6 +1,6 @@ Bend | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Bend

      Bend implements tablature bends.

      -

      Hierarchy

      Index

      Constructors

      constructor

      • new Bend(text: string, release?: boolean, phrase?: BendPhrase[]): Bend

      Hierarchy

      Index

      Constructors

      constructor

      • new Bend(text: string, release?: boolean, phrase?: BendPhrase[]): Bend
      • Example of a phrase:

           [{
        type: UP,
        text: "whole"
        width: 8;
        },
        {
        type: DOWN,
        text: "whole"
        width: 8;
        },
        {
        type: UP,
        text: "half"
        width: 8;
        },
        {
        type: UP,
        text: "whole"
        width: 8;
        },
        {
        type: DOWN,
        text: "1 1/2"
        width: 8;
        }]
        @@ -73,7 +73,9 @@

        Get attached note (StaveNote, TabNote, etc.)

        Returns Note

      getPosition

      • getPosition(): number

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getStyle

      • Get the element style used for rendering.

        @@ -134,7 +136,7 @@

        Set the rendered status.

        Parameters

        • rendered: boolean = true

        Returns Bend

      setSpacingFromNextModifier

      • setSpacingFromNextModifier(x: number): void

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -146,7 +148,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Bend

      setTap

      • setTap(value: string): Bend
      • Parameters

        • value: string

        Returns Bend

      setTextLine

      • setTextLine(line: number): Bend

      setTap

      • setTap(value: string): Bend
      • Parameters

        • value: string

        Returns Bend

      setTextLine

      • setTextLine(line: number): Bend

      setWidth

      • setWidth(width: number): Bend
      • Set modifier widths.

        @@ -154,4 +156,4 @@

        Set horizontal shift in pixels.

        Parameters

        • value: number

        Returns Bend

      setYShift

      • setYShift(y: number): Bend
      • Shift modifier down y pixels. Negative values shift up.

        -

        Parameters

        • y: number

        Returns Bend

      Static format

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      • y: number

      Returns Bend

      Static format

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/ChordSymbol.html b/docs/api/classes/ChordSymbol.html index d1aeda96cc..5cd95433c2 100644 --- a/docs/api/classes/ChordSymbol.html +++ b/docs/api/classes/ChordSymbol.html @@ -1,7 +1,7 @@ ChordSymbol | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class ChordSymbol

      ChordSymbol is a modifier that creates a chord symbol above/below a chord. As a modifier, it is attached to an existing note.

      -

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static DEBUG

      DEBUG: boolean = false

      Static Readonly HorizontalJustify

      HorizontalJustify: typeof ChordSymbolHorizontalJustify = ChordSymbolHorizontalJustify

      Static Readonly HorizontalJustifyString

      HorizontalJustifyString: Record<string, ChordSymbolHorizontalJustify> = ...

      Static Readonly VerticalJustify

      VerticalJustify: typeof ChordSymbolVerticalJustify = ChordSymbolVerticalJustify

      Static Readonly VerticalJustifyString

      VerticalJustifyString: Record<string, ChordSymbolVerticalJustify> = ...

      Static Readonly glyphs

      glyphs: Record<string, { code: string }> = ...

      Static Readonly symbolModifiers

      symbolModifiers: typeof SymbolModifiers = SymbolModifiers

      Static Readonly symbolTypes

      symbolTypes: typeof SymbolTypes = SymbolTypes

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • +

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static DEBUG

      DEBUG: boolean = false

      Static Readonly HorizontalJustify

      HorizontalJustify: typeof ChordSymbolHorizontalJustify = ChordSymbolHorizontalJustify

      Static Readonly HorizontalJustifyString

      HorizontalJustifyString: Record<string, ChordSymbolHorizontalJustify> = ...

      Static Readonly VerticalJustify

      VerticalJustify: typeof ChordSymbolVerticalJustify = ChordSymbolVerticalJustify

      Static Readonly VerticalJustifyString

      VerticalJustifyString: Record<string, ChordSymbolVerticalJustify> = ...

      Static Readonly glyphs

      glyphs: Record<string, { code: string }> = ...

      Static Readonly symbolModifiers

      symbolModifiers: typeof SymbolModifiers = SymbolModifiers

      Static Readonly symbolTypes

      symbolTypes: typeof SymbolTypes = SymbolTypes

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • Returns the CSS compatible font string.

        Returns string

      • Provide a CSS compatible font string (e.g., 'bold 16px Arial').

        @@ -91,7 +91,9 @@

        Get attached note (StaveNote, TabNote, etc.)

        Returns Note

      getPosition

      • getPosition(): number

      getReportWidth

      • getReportWidth(): boolean
      • Returns boolean

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getReportWidth

      • getReportWidth(): boolean
      • Returns boolean

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getStyle

      • Get the element style used for rendering.

        @@ -154,7 +156,7 @@

        Set the rendered status.

        Parameters

        • rendered: boolean = true

        Returns ChordSymbol

      setReportWidth

      setSpacingFromNextModifier

      • setSpacingFromNextModifier(x: number): void

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -166,7 +168,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns ChordSymbol

      setTextLine

      setTextLine

      setVertical

      • Set vertical position of text (above or below stave).

        @@ -180,4 +182,4 @@

        Parameters

        • y: number

        Returns ChordSymbol

      updateKerningAdjustments

      • updateKerningAdjustments(): void
      • Returns void

      updateOverBarAdjustments

      • updateOverBarAdjustments(): void
      • Returns void

      Static format

      • Estimate the width of the whole chord symbol, based on the sum of the widths of the individual blocks. Estimate how many lines above/below the staff we need.

        -

        Parameters

        Returns boolean

      Static getMetricForGlyph

      • getMetricForGlyph(glyphCode: string): any
      • Parameters

        • glyphCode: string

        Returns any

      Static getWidthForGlyph

      • getWidthForGlyph(glyph: Glyph): number
      • Parameters

        Returns number

      Static getXShiftForGlyph

      • getXShiftForGlyph(glyph: Glyph): number
      • Parameters

        Returns number

      Static getYShiftForGlyph

      • getYShiftForGlyph(glyph: Glyph): number
      • Parameters

        Returns number

      Static isSubscript

      Static isSuperscript

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns boolean

      Static getMetricForGlyph

      • getMetricForGlyph(glyphCode: string): any
      • Parameters

        • glyphCode: string

        Returns any

      Static getWidthForGlyph

      • getWidthForGlyph(glyph: Glyph): number
      • Parameters

        Returns number

      Static getXShiftForGlyph

      • getXShiftForGlyph(glyph: Glyph): number
      • Parameters

        Returns number

      Static getYShiftForGlyph

      • getYShiftForGlyph(glyph: Glyph): number
      • Parameters

        Returns number

      Static isSubscript

      Static isSuperscript

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Clef.html b/docs/api/classes/Clef.html index b620919a2b..79549f02b2 100644 --- a/docs/api/classes/Clef.html +++ b/docs/api/classes/Clef.html @@ -1,7 +1,7 @@ Clef | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Clef

      Clef implements various types of clefs that can be rendered on a stave.

      See tests/clef_tests.ts for usage examples.

      -

      Hierarchy

      Index

      Constructors

      constructor

      • new Clef(type: string, size?: string, annotation?: string): Clef

      Hierarchy

      Index

      Constructors

      constructor

      • new Clef(type: string, size?: string, annotation?: string): Clef

      Properties

      Optional annotation

      annotation?: { code: string; line: number; point: number; x_shift: number }

      Type declaration

      • code: string
      • line: number
      • point: number
      • x_shift: number

      clef

      clef: ClefType = ...

      The attribute clef must be a key from @@ -58,7 +58,9 @@

      Return the context.

      Returns undefined | RenderContext

      getFont

      • getFont(): string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getLayoutMetrics

      getPadding

      • getPadding(index: number): number

      getPosition

      • getPosition(): number

      getStave

      • getStave(): undefined | Stave

      getStyle

      getLayoutMetrics

      getPadding

      • getPadding(index: number): number

      getPosition

      • getPosition(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStyle

      getWidth

      • getWidth(): number
      • Get clef width.

        @@ -101,7 +103,7 @@

        Set the rendered status.

        Parameters

        • rendered: boolean = true

        Returns Clef

      setStave

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -113,6 +115,6 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Clef

      setType

      • setType(type: string, size?: string, annotation?: string): Clef

      setType

      • setType(type: string, size?: string, annotation?: string): Clef
      • Set clef type, size and annotation.

        -

        Parameters

        • type: string
        • Optional size: string
        • Optional annotation: string

        Returns Clef

      setWidth

      • setWidth(width: number): Clef

      setX

      • setX(x: number): Clef

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      • type: string
      • Optional size: string
      • Optional annotation: string

      Returns Clef

      setWidth

      • setWidth(width: number): Clef

      setX

      • setX(x: number): Clef

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/ClefNote.html b/docs/api/classes/ClefNote.html index da8140110e..574b3a510c 100644 --- a/docs/api/classes/ClefNote.html +++ b/docs/api/classes/ClefNote.html @@ -1,6 +1,6 @@ ClefNote | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class ClefNote

      ClefNote implements clef annotations in measures.

      -

      Hierarchy

      Index

      Constructors

      constructor

      • new ClefNote(type: string, size?: string, annotation?: string): ClefNote

      Hierarchy

      Index

      Constructors

      constructor

      • new ClefNote(type: string, size?: string, annotation?: string): ClefNote
      • Every note is a tickable, i.e., it can be mutated by the Formatter class for positioning and layout.

        Parameters

        • type: string
        • Optional size: string
        • Optional annotation: string

        Returns ClefNote

      Properties

      Optional glyph

      glyph?: any

      keyProps

      keyProps: KeyProps[]

      keys

      keys: string[]

      render_options

      render_options: { annotation_spacing: number; draw?: boolean; draw_dots?: boolean; draw_stem?: boolean; draw_stem_through_stave?: boolean; extend_left?: number; extend_right?: number; font: string; glyph_font_scale: number; glyph_font_size?: number; scale: number; stroke_px: number; y_shift: number }

      Type declaration

      • annotation_spacing: number
      • Optional draw?: boolean
      • Optional draw_dots?: boolean
      • Optional draw_stem?: boolean
      • Optional draw_stem_through_stave?: boolean
      • Optional extend_left?: number
      • Optional extend_right?: number
      • font: string
      • glyph_font_scale: number
      • Optional glyph_font_size?: number
      • scale: number
      • stroke_px: number
      • y_shift: number

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      @@ -122,7 +122,9 @@ audio player.

      Returns undefined | Note

      getRightDisplacedHeadPx

      • getRightDisplacedHeadPx(): number

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getStave

      • getStave(): undefined | Stave

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStemDirection

      • getStemDirection(): number
      • Get the direction of the stem.

        @@ -235,7 +237,7 @@

        Set spacing to the right of the notes.

        Parameters

        • x: number

        Returns ClefNote

      setStave

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -247,7 +249,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns ClefNote

      setTickContext

      setTickContext

      setTuplet

      • Attach to new tuplet.

        @@ -266,4 +268,4 @@

        True if this note has no duration (e.g., bar notes, spacers, etc.).

        Returns boolean

      Static plotMetrics

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Crescendo.html b/docs/api/classes/Crescendo.html index f31a9a567e..7445aaf35d 100644 --- a/docs/api/classes/Crescendo.html +++ b/docs/api/classes/Crescendo.html @@ -1,4 +1,4 @@ -Crescendo | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Crescendo

      Hierarchy

      Index

      Constructors

      constructor

      getRightDisplacedHeadPx

      • getRightDisplacedHeadPx(): number

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getStave

      • getStave(): undefined | Stave

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStemDirection

      • getStemDirection(): number
      • Get the direction of the stem.

        @@ -233,7 +235,7 @@

        Set spacing to the right of the notes.

        Parameters

        • x: number

        Returns Crescendo

      setStave

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -245,7 +247,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Crescendo

      setTickContext

      setTickContext

      setTuplet

      • Attach to new tuplet.

        @@ -262,4 +264,4 @@

        True if this note has no duration (e.g., bar notes, spacers, etc.).

        Returns boolean

      Static plotMetrics

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Curve.html b/docs/api/classes/Curve.html index aa98b06deb..cef39bdd06 100644 --- a/docs/api/classes/Curve.html +++ b/docs/api/classes/Curve.html @@ -1,4 +1,4 @@ -Curve | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Curve

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      render_options

      render_options: Required<CurveOptions>

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +Curve | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Curve

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      render_options

      render_options: Required<CurveOptions>

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -45,7 +45,9 @@

        Return the context.

        Returns undefined | RenderContext

      getFont

      • getFont(): string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getStyle

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStyle

      hasClass

      • hasClass(className: string): boolean
      • Check if it has a class label (An element can have multiple class labels).

        @@ -85,7 +87,7 @@

        Set the element & associated children style used for rendering.

        Parameters

        Returns Curve

      setNotes

      setRendered

      • setRendered(rendered?: boolean): Curve

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -97,4 +99,4 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Curve

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns Curve

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Dot.html b/docs/api/classes/Dot.html index 699fea5227..74e411696b 100644 --- a/docs/api/classes/Dot.html +++ b/docs/api/classes/Dot.html @@ -1,4 +1,4 @@ -Dot | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Dot

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +Dot | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Dot

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -62,7 +62,9 @@

        Get attached note (StaveNote, TabNote, etc.)

        Returns Note

      getPosition

      • getPosition(): number

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getStyle

      • Get the element style used for rendering.

        @@ -119,7 +121,7 @@

        Set the rendered status.

        Parameters

        • rendered: boolean = true

        Returns Dot

      setSpacingFromNextModifier

      • setSpacingFromNextModifier(x: number): void

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -131,7 +133,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Dot

      setTextLine

      • setTextLine(line: number): Dot

      setTextLine

      • setTextLine(line: number): Dot

      setWidth

      • setWidth(width: number): Dot
      • Set modifier widths.

        @@ -144,4 +146,4 @@

        Add a dot on the specified keys to the notes.

        Parameters

        • notes: Note[]
        • Optional options: { all?: boolean; index?: number }
          • Optional all?: boolean
          • Optional index?: number

        Returns void

      Static format

      Static getDots

      • Returns the dots associated to a Note.

        -

        Parameters

        Returns Dot[]

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns Dot[]

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Element.html b/docs/api/classes/Element.html index 48b321ccab..1203659648 100644 --- a/docs/api/classes/Element.html +++ b/docs/api/classes/Element.html @@ -1,7 +1,7 @@ Element | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Element

      Element implements a generic base class for VexFlow, with implementations of general functions and properties that can be inherited by all VexFlow elements.

      -

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -48,7 +48,9 @@

        Return the context.

        Returns undefined | RenderContext

      getFont

      • getFont(): string
      • Returns string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getStyle

      • +

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStyle

      • Get the element style used for rendering.

        Returns undefined | ElementStyle

      hasClass

      • hasClass(className: string): boolean
      • Check if it has a class label (An element can have multiple class labels).

        @@ -87,7 +89,7 @@

        Set the element & associated children style used for rendering.

        Parameters

        Returns Element

      setRendered

      • setRendered(rendered?: boolean): Element
      • Set the rendered status.

        -

        Parameters

        • rendered: boolean = true

        Returns Element

      setStyle

      • +

        Parameters

        • rendered: boolean = true

        Returns Element

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -99,4 +101,4 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Element

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns Element

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Formatter.html b/docs/api/classes/Formatter.html index 324372e240..c37ea021eb 100644 --- a/docs/api/classes/Formatter.html +++ b/docs/api/classes/Formatter.html @@ -10,13 +10,13 @@ all the ticks, setting the x values of the notes in each tick.

      See tests/formatter_tests.ts for usage examples. The helper functions included here (FormatAndDraw, FormatAndDrawTab) also serve as useful usage examples.

      -

      Hierarchy

      • Formatter

      Index

      Constructors

      constructor

      Properties

      Static DEBUG

      DEBUG: boolean = false

      Methods

      alignRests

      • alignRests(voices: Voice[], alignAllNotes: boolean): void
      • +

      Hierarchy

      • Formatter

      Index

      Constructors

      constructor

      Properties

      Static DEBUG

      DEBUG: boolean = false

      Methods

      alignRests

      • alignRests(voices: Voice[], alignAllNotes: boolean): void
      • Find all the rests in each of the voices and align them to neighboring notes.

        Parameters

        • voices: Voice[]
        • alignAllNotes: boolean

          If false, only align rests within beamed groups of notes. If true, align all rests.

          -

        Returns void

      createModifierContexts

      • +

      Returns void

      createModifierContexts

      • createModifierContexts(voices: Voice[]): void

      createTickContexts

      • +

        Parameters

        Returns void

      createTickContexts

      evaluate

      • evaluate(): number

      formatToStave

      getMinTotalWidth

      • getMinTotalWidth(): number
      • Get minimum width required to render all voices. Either format or preCalculateMinTotalWidth must be called before this method.

        -

        Returns number

      getTickContext

      joinVoices

      • +

        Returns number

      getTickContext

      getTickContexts

      • +

        Get the AlignmentContexts of TickContexts that were created by createTickContexts. +Returns undefined if createTickContexts has not yet been run.

        +

        Returns undefined | AlignmentContexts<TickContext>

      joinVoices

      • Take all voices and create ModifierContexts out of them. This tells the formatters that the voices belong on a single stave.

        Parameters

        Returns Formatter

      postFormat

      • @@ -60,7 +63,7 @@

      preFormat

      • This is the core formatter logic. Format voices and justify them to justifyWidth pixels. renderingContext is required to justify elements -that can't retreive widths without a canvas. This method sets the x positions +that can't retrieve widths without a canvas. This method sets the x positions of all the tickables/notes in the formatter.

        Parameters

        Returns number

      tune

      • tune(options?: { alpha?: number }): number
      • Run a single iteration of rejustification. At a high level, this method calculates @@ -122,4 +125,4 @@

        Calculate the resolution multiplier for voices.

        Parameters

        Returns number

      Static plotDebugging

      • plotDebugging(ctx: RenderContext, formatter: Formatter, xPos: number, y1: number, y2: number, options?: { stavePadding: number }): void
      • Helper function to plot formatter debug info.

        -

        Parameters

        • ctx: RenderContext
        • formatter: Formatter
        • xPos: number
        • y1: number
        • y2: number
        • Optional options: { stavePadding: number }
          • stavePadding: number

        Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      • ctx: RenderContext
      • formatter: Formatter
      • xPos: number
      • y1: number
      • y2: number
      • Optional options: { stavePadding: number }
        • stavePadding: number

      Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/FretHandFinger.html b/docs/api/classes/FretHandFinger.html index f117bd0066..637b4526c8 100644 --- a/docs/api/classes/FretHandFinger.html +++ b/docs/api/classes/FretHandFinger.html @@ -1,4 +1,4 @@ -FretHandFinger | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class FretHandFinger

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +FretHandFinger | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class FretHandFinger

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -62,7 +62,9 @@

        Get attached note (StaveNote, TabNote, etc.)

        Returns Note

      getPosition

      • getPosition(): number

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getStyle

      • Get the element style used for rendering.

        @@ -121,7 +123,7 @@

        Set the rendered status.

        Parameters

        • rendered: boolean = true

        Returns FretHandFinger

      setSpacingFromNextModifier

      • setSpacingFromNextModifier(x: number): void

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -133,7 +135,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns FretHandFinger

      setTextLine

      setTextLine

      setWidth

      setYShift

      Static easyScoreHook

      • easyScoreHook(__namedParameters?: { fingerings?: string }, note: StemmableNote, builder: Builder): void
      • Parameters

        • __namedParameters: { fingerings?: string } = {}
          • Optional fingerings?: string
        • note: StemmableNote
        • builder: Builder

        Returns void

      Static format

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      • y: number

      Returns FretHandFinger

      Static easyScoreHook

      • easyScoreHook(__namedParameters?: { fingerings?: string }, note: StemmableNote, builder: Builder): void
      • Parameters

        • __namedParameters: { fingerings?: string } = {}
          • Optional fingerings?: string
        • note: StemmableNote
        • builder: Builder

        Returns void

      Static format

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/GhostNote.html b/docs/api/classes/GhostNote.html index 95d59f4c3d..5b506c99d2 100644 --- a/docs/api/classes/GhostNote.html +++ b/docs/api/classes/GhostNote.html @@ -1,4 +1,4 @@ -GhostNote | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class GhostNote

      Hierarchy

      Index

      Constructors

      Properties

      Accessors

      Methods

      Constructors

      constructor

      getRightDisplacedHeadPx

      • getRightDisplacedHeadPx(): number

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getStave

      • getStave(): undefined | Stave

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStem

      • getStem(): undefined | Stem

      getStemDirection

      • getStemDirection(): number

      setStave

      setStem

      setStemDirection

      • setStemDirection(direction?: number): GhostNote

      setStemLength

      setStyle

      setStem

      setStemDirection

      • setStemDirection(direction?: number): GhostNote

      setStemLength

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -244,7 +246,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns GhostNote

      setTickContext

      setTickContext

      setTuplet

      • Attach to new tuplet.

        @@ -261,4 +263,4 @@

        True if this note has no duration (e.g., bar notes, spacers, etc.).

        Returns boolean

      Static plotMetrics

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Glyph.html b/docs/api/classes/Glyph.html index c3608981c5..22c27e4dc5 100644 --- a/docs/api/classes/Glyph.html +++ b/docs/api/classes/Glyph.html @@ -1,4 +1,4 @@ -Glyph | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Glyph

      Hierarchy

      Index

      Constructors

      constructor

      getFont

      • getFont(): string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getMetrics

      getStyle

      getMetrics

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStyle

      getXShift

      • getXShift(): number
      • Returns number

      getYshift

      • getYshift(): number
      • Returns number

      hasClass

      • hasClass(className: string): boolean
      • Check if it has a class label (An element can have multiple class labels).

        @@ -85,7 +87,7 @@

        Set the element & associated children style used for rendering.

        Parameters

        Returns Glyph

      setOptions

      • setOptions(options: any): void
      • Parameters

        • options: any

        Returns void

      setOrigin

      • setOrigin(x: number, y: number): void
      • Parameters

        • x: number
        • y: number

        Returns void

      setOriginX

      • setOriginX(x: number): void
      • Parameters

        • x: number

        Returns void

      setOriginY

      • setOriginY(y: number): void
      • Parameters

        • y: number

        Returns void

      setPoint

      • setPoint(point: number): Glyph
      • Parameters

        • point: number

        Returns Glyph

      setRendered

      • setRendered(rendered?: boolean): Glyph

      setStave

      setStyle

      setStave

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -97,7 +99,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Glyph

      setXShift

      • setXShift(x_shift: number): Glyph
      • Parameters

        • x_shift: number

        Returns Glyph

      setYShift

      • setYShift(y_shift: number): Glyph
      • Parameters

        • y_shift: number

        Returns Glyph

      Static getOutlineBoundingBox

      • getOutlineBoundingBox(outline: number[], scale: number, x_pos: number, y_pos: number): BoundingBox
      • Parameters

        • outline: number[]
        • scale: number
        • x_pos: number
        • y_pos: number

        Returns BoundingBox

      Static getWidth

      • getWidth(code: string, point: number, category?: string): number
      • Parameters

        • code: string
        • point: number
        • Optional category: string

        Returns number

      Static loadMetrics

      • Parameters

        • fontStack: Font[]
        • code: string
        • Optional category: string

        Returns GlyphMetrics

      Static lookupFontMetric

      • lookupFontMetric(font: Font, category: string, code: string, key: string, defaultValue: number): number

      setXShift

      • setXShift(x_shift: number): Glyph
      • Parameters

        • x_shift: number

        Returns Glyph

      setYShift

      • setYShift(y_shift: number): Glyph
      • Parameters

        • y_shift: number

        Returns Glyph

      Static getOutlineBoundingBox

      • getOutlineBoundingBox(outline: number[], scale: number, x_pos: number, y_pos: number): BoundingBox
      • Parameters

        • outline: number[]
        • scale: number
        • x_pos: number
        • y_pos: number

        Returns BoundingBox

      Static getWidth

      • getWidth(code: string, point: number, category?: string): number
      • Parameters

        • code: string
        • point: number
        • Optional category: string

        Returns number

      Static loadMetrics

      • Parameters

        • fontStack: Font[]
        • code: string
        • Optional category: string

        Returns GlyphMetrics

      Static lookupFontMetric

      • lookupFontMetric(font: Font, category: string, code: string, key: string, defaultValue: number): number
      • Pass a key of the form glyphs.{category}.{code}.{key} to Font.lookupMetric(). If the initial lookup fails, try again with the path glyphs.{category}.{key}. If the second lookup fails, return the defaultValue.

        Parameters

        • font: Font
        • category: string
          @@ -115,4 +117,4 @@

          the point size of the font

        • code: string

          the glyph code in font.getGlyphs()

          -
        • Optional options: { category?: string; scale?: number }
          • Optional category?: string
          • Optional scale?: number

        Returns GlyphMetrics

      Static renderOutline

      • renderOutline(ctx: RenderContext, outline: number[], scale: number, x_pos: number, y_pos: number): void
      • Parameters

        • ctx: RenderContext
        • outline: number[]
        • scale: number
        • x_pos: number
        • y_pos: number

        Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +
    1. Optional options: { category?: string; scale?: number }
      • Optional category?: string
      • Optional scale?: number
    2. Returns GlyphMetrics

      Static renderOutline

      • renderOutline(ctx: RenderContext, outline: number[], scale: number, x_pos: number, y_pos: number): void
      • Parameters

        • ctx: RenderContext
        • outline: number[]
        • scale: number
        • x_pos: number
        • y_pos: number

        Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/GlyphNote.html b/docs/api/classes/GlyphNote.html index 93133eb03a..7691552da7 100644 --- a/docs/api/classes/GlyphNote.html +++ b/docs/api/classes/GlyphNote.html @@ -1,4 +1,4 @@ -GlyphNote | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class GlyphNote

      Hierarchy

      Index

      Constructors

      constructor

      getRightDisplacedHeadPx

      • getRightDisplacedHeadPx(): number

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getStave

      • getStave(): undefined | Stave

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStemDirection

      • getStemDirection(): number
      • Get the direction of the stem.

        @@ -231,7 +233,7 @@

        Set spacing to the right of the notes.

        Parameters

        • x: number

        Returns GlyphNote

      setStave

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -243,7 +245,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns GlyphNote

      setTickContext

      setTickContext

      setTuplet

      • Attach to new tuplet.

        @@ -260,4 +262,4 @@

        True if this note has no duration (e.g., bar notes, spacers, etc.).

        Returns boolean

      Static plotMetrics

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/GraceNote.html b/docs/api/classes/GraceNote.html index 836de86ae4..cf596b49b4 100644 --- a/docs/api/classes/GraceNote.html +++ b/docs/api/classes/GraceNote.html @@ -1,4 +1,4 @@ -GraceNote | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class GraceNote

      Hierarchy

      Index

      Constructors

      Properties

      Accessors

      Methods

      Constructors

      constructor

      checkStem

      checkTickContext

      draw

      • draw(): void

      drawFlag

      • drawFlag(): void

      drawLedgerLines

      • drawLedgerLines(): void

      drawModifiers

      • drawModifiers(): void

      drawNoteHeads

      • drawNoteHeads(): void

      drawStem

      drawFlag

      • drawFlag(): void

      drawLedgerLines

      • drawLedgerLines(): void

      drawModifiers

      • drawModifiers(noteheadParam: NoteHead): void

      drawNoteHeads

      • drawNoteHeads(): void

      drawStem

      drawWithStyle

      • drawWithStyle(): void
      • Draw the element and all its sub-elements (ie.: Modifiers in a Stave) @@ -125,7 +125,9 @@ audio player.

        Returns undefined | Note

      getRightDisplacedHeadPx

      • getRightDisplacedHeadPx(): number

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getStave

      • getStave(): undefined | Stave

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStaveNoteScale

      • getStaveNoteScale(): number

      Static plotMetrics

      Static postFormat

      • postFormat(notes: Note[]): boolean

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns void

      Static postFormat

      • postFormat(notes: Note[]): boolean

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/GraceNoteGroup.html b/docs/api/classes/GraceNoteGroup.html index e5e90d3210..a47e992dac 100644 --- a/docs/api/classes/GraceNoteGroup.html +++ b/docs/api/classes/GraceNoteGroup.html @@ -1,6 +1,6 @@ GraceNoteGroup | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class GraceNoteGroup

      GraceNoteGroup is used to format and render grace notes.

      -

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      render_options

      render_options: { slur_y_shift: number }

      Type declaration

      • slur_y_shift: number

      Static DEBUG

      DEBUG: boolean = false

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      render_options

      render_options: { slur_y_shift: number }

      Type declaration

      • slur_y_shift: number

      Static DEBUG

      DEBUG: boolean = false

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -64,7 +64,9 @@

        Get attached note (StaveNote, TabNote, etc.)

        Returns Note

      getPosition

      • getPosition(): number

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getStyle

      • Get the element style used for rendering.

        @@ -123,7 +125,7 @@

        Set the rendered status.

        Parameters

        • rendered: boolean = true

        Returns GraceNoteGroup

      setSpacingFromNextModifier

      • setSpacingFromNextModifier(x: number): void

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -135,7 +137,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns GraceNoteGroup

      setTextLine

      setTextLine

      setWidth

      • Set modifier widths.

        @@ -146,4 +148,4 @@

        Shift modifier down y pixels. Negative values shift up.

        Parameters

        • y: number

        Returns GraceNoteGroup

      Static format

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns boolean

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/GraceTabNote.html b/docs/api/classes/GraceTabNote.html index 60c1b4d1c1..2c5b382000 100644 --- a/docs/api/classes/GraceTabNote.html +++ b/docs/api/classes/GraceTabNote.html @@ -1,4 +1,4 @@ -GraceTabNote | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class GraceTabNote

      Hierarchy

      Index

      Constructors

      Properties

      Accessors

      Methods

      Constructors

      constructor

      getPositions

      getRightDisplacedHeadPx

      • getRightDisplacedHeadPx(): number

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getStave

      • getStave(): undefined | Stave

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStem

      • getStem(): undefined | Stem

      getStemDirection

      • getStemDirection(): number

      setStave

      setStem

      setStemDirection

      setStemLength

      setStyle

      setStem

      setStemDirection

      setStemLength

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -246,7 +248,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns GraceTabNote

      setTickContext

      setTickContext

      setTuplet

      • Attach to new tuplet.

        @@ -263,4 +265,4 @@

        True if this note has no duration (e.g., bar notes, spacers, etc.).

        Returns boolean

      updateWidth

      • updateWidth(): void

      Static plotMetrics

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/KeySigNote.html b/docs/api/classes/KeySigNote.html index 6ee5415cb0..ecb2a4c0ed 100644 --- a/docs/api/classes/KeySigNote.html +++ b/docs/api/classes/KeySigNote.html @@ -1,4 +1,4 @@ -KeySigNote | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class KeySigNote

      Hierarchy

      Index

      Constructors

      constructor

      • new KeySigNote(keySpec: string, cancelKeySpec?: string, alterKeySpec?: string[]): KeySigNote

      getRightDisplacedHeadPx

      • getRightDisplacedHeadPx(): number

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getStave

      • getStave(): undefined | Stave

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStemDirection

      • getStemDirection(): number
      • Get the direction of the stem.

        @@ -231,7 +233,7 @@

        Set spacing to the right of the notes.

        Parameters

        • x: number

        Returns KeySigNote

      setStave

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -243,7 +245,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns KeySigNote

      setTickContext

      setTickContext

      setTuplet

      • Attach to new tuplet.

        @@ -260,4 +262,4 @@

        True if this note has no duration (e.g., bar notes, spacers, etc.).

        Returns boolean

      Static plotMetrics

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/KeySignature.html b/docs/api/classes/KeySignature.html index e1d434f109..4bb4060737 100644 --- a/docs/api/classes/KeySignature.html +++ b/docs/api/classes/KeySignature.html @@ -1,4 +1,4 @@ -KeySignature | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class KeySignature

      Hierarchy

      Index

      Constructors

      constructor

      • new KeySignature(keySpec: string, cancelKeySpec?: string, alterKeySpec?: string[]): KeySignature

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +KeySignature | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class KeySignature

      Hierarchy

      Index

      Constructors

      constructor

      • new KeySignature(keySpec: string, cancelKeySpec?: string, alterKeySpec?: string[]): KeySignature

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Static accidentalSpacing

      accidentalSpacing: Record<string, { above: number; below: number }> = ...

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -45,7 +45,11 @@

        Return the context.

        Returns undefined | RenderContext

      getFont

      • getFont(): string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getLayoutMetrics

      getPadding

      • getPadding(index: number): number

      getPosition

      • getPosition(): number

      getStave

      • getStave(): undefined | Stave

      getStyle

      getGlyphs

      • +

        Return the Glyph objects making up this KeySignature.

        +

        Returns Glyph[]

      getLayoutMetrics

      getPadding

      • getPadding(index: number): number

      getPosition

      • getPosition(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStyle

      getWidth

      • getWidth(): number

      getX

      • getX(): number

      hasClass

      • hasClass(className: string): boolean
      • Check if it has a class label (An element can have multiple class labels).

        @@ -84,7 +88,7 @@

        Set the element & associated children style used for rendering.

        Parameters

        Returns KeySignature

      setKeySig

      • setKeySig(keySpec: string, cancelKeySpec?: string, alterKeySpec?: string[]): KeySignature
      • Parameters

        • keySpec: string
        • Optional cancelKeySpec: string
        • Optional alterKeySpec: string[]

        Returns KeySignature

      setLayoutMetrics

      setPadding

      setPosition

      setRendered

      setStave

      setStyle

      setStave

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -96,4 +100,4 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns KeySignature

      setWidth

      setX

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns KeySignature

      setWidth

      setX

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Modifier.html b/docs/api/classes/Modifier.html index ea9936fd6a..3ad4d6de18 100644 --- a/docs/api/classes/Modifier.html +++ b/docs/api/classes/Modifier.html @@ -7,7 +7,7 @@

      Typically, all modifiers to a note are part of the same ModifierContext instance. Also, in multi-voice staves, all modifiers to notes on the same tick are part of the same ModifierContext. This ensures that multiple voices don't trample all over each other.

      -

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -74,7 +74,9 @@

        Get attached note (StaveNote, TabNote, etc.)

        Returns Note

      getPosition

      • getPosition(): number
      • Get position.

        -

        Returns number

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number
      • +

        Returns number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number
      • Get spacing from next modifier.

        Returns number

      getStyle

      • Get the element style used for rendering.

        @@ -133,7 +135,7 @@

        Set the rendered status.

        Parameters

        • rendered: boolean = true

        Returns Modifier

      setSpacingFromNextModifier

      • setSpacingFromNextModifier(x: number): void
      • Set spacing from next modifier.

        -

        Parameters

        • x: number

        Returns void

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -145,7 +147,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Modifier

      setTextLine

      setTextLine

      • Set the text_line for the modifier.

        Parameters

        • line: number

        Returns Modifier

      setWidth

      • Set modifier widths.

        @@ -154,4 +156,4 @@ shift reverse.

        Parameters

        • x: number

        Returns Modifier

      setYShift

      • Shift modifier down y pixels. Negative values shift up.

        -

        Parameters

        • y: number

        Returns Modifier

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      • y: number

      Returns Modifier

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/MultiMeasureRest.html b/docs/api/classes/MultiMeasureRest.html index 2b475f708e..1c440e9517 100644 --- a/docs/api/classes/MultiMeasureRest.html +++ b/docs/api/classes/MultiMeasureRest.html @@ -1,4 +1,4 @@ -MultiMeasureRest | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class MultiMeasureRest

      Hierarchy

      Index

      Constructors

      constructor

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Note.html b/docs/api/classes/Note.html index 9cd216815f..3a91156ef2 100644 --- a/docs/api/classes/Note.html +++ b/docs/api/classes/Note.html @@ -5,7 +5,7 @@

      Some notes have stems, heads, dots, etc. Most notational elements that surround a note are called modifiers, and every note has an associated array of them. All notes also have a rendering context and belong to a stave.

      -

      Hierarchy

      Index

      Constructors

      constructor

      Hierarchy

      Index

      Constructors

      constructor

      • Every note is a tickable, i.e., it can be mutated by the Formatter class for positioning and layout.

        Parameters

        • noteStruct: NoteStruct
          @@ -127,7 +127,9 @@ audio player.

          Returns undefined | Note

      getRightDisplacedHeadPx

      • getRightDisplacedHeadPx(): number
      • Get spacing to the right of the notes.

        -

        Returns number

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number
      • Parameters

        • index: number

        Returns number

      getStave

      • getStave(): undefined | Stave

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number
      • Parameters

        • index: number

        Returns number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStemDirection

      • getStemDirection(): number
      • Get the direction of the stem.

        @@ -240,7 +242,7 @@

        Set spacing to the right of the notes.

        Parameters

        • x: number

        Returns Note

      setStave

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -252,7 +254,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Note

      setTickContext

      setTickContext

      setTuplet

      • Attach to new tuplet.

        @@ -269,4 +271,4 @@

        True if this note has no duration (e.g., bar notes, spacers, etc.).

        Returns boolean

      Static plotMetrics

      • Debug helper. Displays various note metrics for the given note.

        -

        Parameters

        Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/NoteHead.html b/docs/api/classes/NoteHead.html index 081f3dcc1b..71cc7ce155 100644 --- a/docs/api/classes/NoteHead.html +++ b/docs/api/classes/NoteHead.html @@ -2,7 +2,7 @@

      NoteHeads are typically not manipulated directly, but used internally in StaveNote.

      See tests/notehead_tests.ts for usage examples.

      -

      Hierarchy

      Index

      Constructors

      constructor

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Optional glyph

      glyph?: any

      glyph_code

      glyph_code: string

      keyProps

      keyProps: KeyProps[]

      keys

      keys: string[]

      render_options

      render_options: { annotation_spacing: number; draw?: boolean; draw_dots?: boolean; draw_stem?: boolean; draw_stem_through_stave?: boolean; extend_left?: number; extend_right?: number; font: string; glyph_font_scale: number; glyph_font_size?: number; scale: number; stroke_px: number; y_shift: number }

      Type declaration

      • annotation_spacing: number
      • Optional draw?: boolean
      • Optional draw_dots?: boolean
      • Optional draw_stem?: boolean
      • Optional draw_stem_through_stave?: boolean
      • Optional extend_left?: number
      • Optional extend_right?: number
      • font: string
      • glyph_font_scale: number
      • Optional glyph_font_size?: number
      • scale: number
      • stroke_px: number
      • y_shift: number

      Static DEBUG

      DEBUG: boolean = false
      @@ -124,7 +124,9 @@ audio player.

      Returns undefined | Note

      getRightDisplacedHeadPx

      • getRightDisplacedHeadPx(): number

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getStave

      • getStave(): undefined | Stave

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStemDirection

      • getStemDirection(): number
      • Get the direction of the stem.

        @@ -243,7 +245,7 @@

        Set spacing to the right of the notes.

        Parameters

        • x: number

        Returns NoteHead

      setStave

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -255,7 +257,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns NoteHead

      setTickContext

      setTickContext

      setTuplet

      • Attach to new tuplet.

        @@ -276,4 +278,4 @@

        True if this note has no duration (e.g., bar notes, spacers, etc.).

        Returns boolean

      Static plotMetrics

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/NoteSubGroup.html b/docs/api/classes/NoteSubGroup.html index 1e9a51c698..ba5a83e8cd 100644 --- a/docs/api/classes/NoteSubGroup.html +++ b/docs/api/classes/NoteSubGroup.html @@ -1,4 +1,4 @@ -NoteSubGroup | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class NoteSubGroup

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +NoteSubGroup | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class NoteSubGroup

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -62,7 +62,9 @@

        Get attached note (StaveNote, TabNote, etc.)

        Returns Note

      getPosition

      • getPosition(): number

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getStyle

      • Get the element style used for rendering.

        @@ -121,7 +123,7 @@

        Set the rendered status.

        Parameters

        • rendered: boolean = true

        Returns NoteSubGroup

      setSpacingFromNextModifier

      • setSpacingFromNextModifier(x: number): void

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -133,7 +135,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns NoteSubGroup

      setTextLine

      setTextLine

      setWidth

      setYShift

      Static format

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      • y: number

      Returns NoteSubGroup

      Static format

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Ornament.html b/docs/api/classes/Ornament.html index 5f38aaf3c0..50d0e3a604 100644 --- a/docs/api/classes/Ornament.html +++ b/docs/api/classes/Ornament.html @@ -3,7 +3,7 @@ attached to notes. The complete list of ornaments is available in tables.ts under Vex.Flow.ornamentCodes.

      See tests/ornament_tests.ts for usage examples.

      -

      Hierarchy

      Index

      Constructors

      constructor

      Hierarchy

      Index

      Constructors

      constructor

      • Create a new ornament of type type, which is an entry in Vex.Flow.ornamentCodes in tables.ts.

        Parameters

        • type: string

        Returns Ornament

      Properties

      render_options

      render_options: { accidentalLowerPadding: number; accidentalUpperPadding: number; font_scale: number }

      Type declaration

      • accidentalLowerPadding: number
      • accidentalUpperPadding: number
      • font_scale: number

      Static DEBUG

      DEBUG: boolean = false
      @@ -91,7 +91,9 @@

      Get attached note (StaveNote, TabNote, etc.)

      Returns Note

      getPosition

      • getPosition(): number

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getStyle

      • Get the element style used for rendering.

        @@ -154,7 +156,7 @@

        Set the rendered status.

        Parameters

        • rendered: boolean = true

        Returns Ornament

      setSpacingFromNextModifier

      • setSpacingFromNextModifier(x: number): void

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -166,7 +168,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Ornament

      setTextLine

      setTextLine

      setUpperAccidental

      • setUpperAccidental(accid: string): Ornament
      • Set the upper accidental for the ornament.

        @@ -179,4 +181,4 @@

        Shift modifier down y pixels. Negative values shift up.

        Parameters

        • y: number

        Returns Ornament

      Static format

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns boolean

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Parenthesis.html b/docs/api/classes/Parenthesis.html index 25f2b6d8a4..5ed649f119 100644 --- a/docs/api/classes/Parenthesis.html +++ b/docs/api/classes/Parenthesis.html @@ -1,6 +1,6 @@ Parenthesis | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Parenthesis

      Parenthesis implements parenthesis modifiers for notes.

      -

      Hierarchy

      Index

      Constructors

      constructor

      Hierarchy

      Index

      Constructors

      constructor

      • Constructor

        Parameters

        • position: ModifierPosition

          Modifier.Position.LEFT (default) or Modifier.Position.RIGHT

          @@ -68,7 +68,9 @@

          Get attached note (StaveNote, TabNote, etc.)

          Returns Note

      getPosition

      • getPosition(): number

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getStyle

      • Get the element style used for rendering.

        @@ -125,7 +127,7 @@

        Set the rendered status.

        Parameters

        • rendered: boolean = true

        Returns Parenthesis

      setSpacingFromNextModifier

      • setSpacingFromNextModifier(x: number): void

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -137,7 +139,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Parenthesis

      setTextLine

      setTextLine

      setWidth

      • Set modifier widths.

        @@ -150,4 +152,4 @@

        Add parentheses to the notes.

        Parameters

        Returns void

      Static format

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns boolean

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/PedalMarking.html b/docs/api/classes/PedalMarking.html index 1278bdf067..82482283a8 100644 --- a/docs/api/classes/PedalMarking.html +++ b/docs/api/classes/PedalMarking.html @@ -3,7 +3,7 @@ elements indicate to the performer when to depress and release the a pedal.

      In order to create "Sostenuto", and "una corda" markings, you must set custom text for the release/depress pedal markings.

      -

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      render_options

      render_options: { bracket_height: number; bracket_line_width: number; color: string; text_margin_right: number }

      Type declaration

      • bracket_height: number
      • bracket_line_width: number
      • color: string
      • text_margin_right: number

      Static DEBUG

      DEBUG: boolean = false
      +

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      render_options

      render_options: { bracket_height: number; bracket_line_width: number; color: string; text_margin_right: number }

      Type declaration

      • bracket_height: number
      • bracket_line_width: number
      • color: string
      • text_margin_right: number

      Static DEBUG

      DEBUG: boolean = false

      To enable logging for this class. Set Vex.Flow.PedalMarking.DEBUG to true.

      Static Readonly GLYPHS

      GLYPHS: Record<string, { code: string; x_shift: number; y_shift: number }> = ...

      Glyph data

      @@ -63,7 +63,9 @@

      Return the context.

      Returns undefined | RenderContext

      getFont

      • getFont(): string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getStyle

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStyle

      hasClass

      • hasClass(className: string): boolean
      • Check if it has a class label (An element can have multiple class labels).

        @@ -107,7 +109,7 @@

        Set the staff line to render the markings on.

        Parameters

        • line: number

        Returns PedalMarking

      setRendered

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -119,7 +121,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns PedalMarking

      setType

      setType

      • Set pedal type.

        Parameters

        • type: string | number

        Returns PedalMarking

      Static createSostenuto

      • Create a sostenuto pedal marking

        @@ -128,4 +130,4 @@ Which uses the traditional "Ped" and "*"" markings.

        Parameters

        Returns PedalMarking

      Static createUnaCorda

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns PedalMarking

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/RepeatNote.html b/docs/api/classes/RepeatNote.html index 9b435a551d..8b7fbd60cf 100644 --- a/docs/api/classes/RepeatNote.html +++ b/docs/api/classes/RepeatNote.html @@ -1,4 +1,4 @@ -RepeatNote | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class RepeatNote

      Hierarchy

      Index

      Constructors

      constructor

      getRightDisplacedHeadPx

      • getRightDisplacedHeadPx(): number

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getStave

      • getStave(): undefined | Stave

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStemDirection

      • getStemDirection(): number

      setStave

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -243,7 +245,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns RepeatNote

      setTickContext

      setTickContext

      setTuplet

      • Attach to new tuplet.

        @@ -260,4 +262,4 @@

        True if this note has no duration (e.g., bar notes, spacers, etc.).

        Returns boolean

      Static plotMetrics

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Repetition.html b/docs/api/classes/Repetition.html index 6b1fb881c9..6663e05dea 100644 --- a/docs/api/classes/Repetition.html +++ b/docs/api/classes/Repetition.html @@ -1,4 +1,4 @@ -Repetition | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Repetition

      Hierarchy

      Index

      Constructors

      constructor

      • new Repetition(type: number, x: number, y_shift: number): Repetition

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +Repetition | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Repetition

      Hierarchy

      Index

      Constructors

      constructor

      • new Repetition(type: number, x: number, y_shift: number): Repetition

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Static Readonly type

      type: { CODA_LEFT: number; CODA_RIGHT: number; DC: number; DC_AL_CODA: number; DC_AL_FINE: number; DS: number; DS_AL_CODA: number; DS_AL_FINE: number; FINE: number; NONE: number; SEGNO_LEFT: number; SEGNO_RIGHT: number; TO_CODA: number } = ...

      Type declaration

      • CODA_LEFT: number
      • CODA_RIGHT: number
      • DC: number
      • DC_AL_CODA: number
      • DC_AL_FINE: number
      • DS: number
      • DS_AL_CODA: number
      • DS_AL_FINE: number
      • FINE: number
      • NONE: number
      • SEGNO_LEFT: number
      • SEGNO_RIGHT: number
      • TO_CODA: number

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -45,7 +45,9 @@

        Return the context.

        Returns undefined | RenderContext

      getFont

      • getFont(): string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getLayoutMetrics

      getPadding

      • getPadding(index: number): number

      getPosition

      • getPosition(): number

      getStave

      • getStave(): undefined | Stave

      getStyle

      getLayoutMetrics

      getPadding

      • getPadding(index: number): number

      getPosition

      • getPosition(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStyle

      getWidth

      • getWidth(): number

      getX

      • getX(): number

      hasClass

      • hasClass(className: string): boolean
      • Check if it has a class label (An element can have multiple class labels).

        @@ -84,7 +86,7 @@

        Set the element & associated children style used for rendering.

        Parameters

        Returns Repetition

      setLayoutMetrics

      setPadding

      setPosition

      setRendered

      setShiftX

      setShiftY

      setStave

      setStyle

      setShiftX

      setShiftY

      setStave

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -96,4 +98,4 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Repetition

      setWidth

      setX

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns Repetition

      setWidth

      setX

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Stave.html b/docs/api/classes/Stave.html index 3f54be82a4..4bd17fd91c 100644 --- a/docs/api/classes/Stave.html +++ b/docs/api/classes/Stave.html @@ -1,4 +1,4 @@ -Stave | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Stave

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Readonly options

      options: Required<StaveOptions>

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +Stave | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Stave

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Readonly options

      options: Required<StaveOptions>

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -68,14 +68,18 @@

        Get default style for ledger lines.

        Returns ElementStyle

      getEndClef

      • getEndClef(): undefined | string
      • Returns undefined | string

      getFont

      • getFont(): string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getHeight

      • getHeight(): number
      • Returns number

      getLineForY

      • getLineForY(y: number): number
      • Parameters

        • y: number

        Returns number

      getModifierXShift

      • getModifierXShift(index?: number): number
      • +

      getHeight

      • getHeight(): number
      • Returns number

      getLineForY

      • getLineForY(y: number): number
      • Parameters

        • y: number

        Returns number

      getMeasure

      • getMeasure(): number
      • +

        Return the measure number of this Stave.

        +

        Returns number

      getModifierXShift

      • getModifierXShift(index?: number): number
      • Gets the pixels to shift from the beginning of the stave following the modifier at the provided index

        Parameters

        • index: number = 0

          The index from which to determine the shift

        Returns number

        The amount of pixels shifted

      getModifiers

      • getModifiers(position?: number, category?: string): StaveModifier[]
      • Parameters

        • Optional position: number
        • Optional category: string

        Returns StaveModifier[]

        array of StaveModifiers that match the provided position and category.

        -

      getNoteEndX

      • getNoteEndX(): number
      • Returns number

      getNoteStartX

      • getNoteStartX(): number
      • Returns number

      getNumLines

      • getNumLines(): number
      • Returns number

      getSpacingBetweenLines

      • getSpacingBetweenLines(): number
      • Returns number

      getStyle

      getNoteEndX

      • getNoteEndX(): number
      • Returns number

      getNoteStartX

      • getNoteStartX(): number
      • Returns number

      getNumLines

      • getNumLines(): number
      • Returns number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getSpacingBetweenLines

      • getSpacingBetweenLines(): number
      • Returns number

      getStyle

      getTieEndX

      • getTieEndX(): number
      • Returns number

      getTieStartX

      • getTieStartX(): number
      • Returns number

      getTopLineTopY

      • getTopLineTopY(): number
      • Returns number

      getVerticalBarWidth

      • getVerticalBarWidth(): number
      • Returns number

      getWidth

      • getWidth(): number
      • Returns number

      getX

      • getX(): number
      • Returns number

      getY

      • getY(): number
      • Returns number

      getYForBottomText

      • getYForBottomText(line?: number): number
      • Parameters

        • line: number = 0

        Returns number

      getYForGlyphs

      • getYForGlyphs(): number
      • Returns number

      getYForLine

      • getYForLine(line: number): number
      • Parameters

        • line: number

        Returns number

        the y for the center of a staff line

      getYForNote

      • getYForNote(line: number): number
      • Parameters

        • line: number

        Returns number

      getYForTopText

      • getYForTopText(line?: number): number
      • Parameters

        • line: number = 0

        Returns number

      hasClass

      • hasClass(className: string): boolean
      • @@ -132,11 +136,13 @@

        Change the font size, while keeping everything else the same.

        Parameters

        • Optional size: string | number

        Returns Stave

      setGroupStyle

      setKeySignature

      • setKeySignature(keySpec: string, cancelKeySpec?: string, position?: number): Stave
      • Parameters

        • keySpec: string
        • Optional cancelKeySpec: string
        • Optional position: number

        Returns Stave

      setMeasure

      • setMeasure(measure: number): Stave
      • Parameters

        • measure: number

        Returns Stave

      setNoteStartX

      • setNoteStartX(x: number): Stave
      • Parameters

        • x: number

        Returns Stave

      setNumLines

      • setNumLines(n: number): Stave
      • Parameters

        • n: number

        Returns Stave

      setRendered

      • setRendered(rendered?: boolean): Stave

      setKeySignature

      • setKeySignature(keySpec: string, cancelKeySpec?: string, position?: number): Stave
      • Parameters

        • keySpec: string
        • Optional cancelKeySpec: string
        • Optional position: number

        Returns Stave

      setMeasure

      • setMeasure(measure: number): Stave
      • +

        Set the measure number of this Stave.

        +

        Parameters

        • measure: number

        Returns Stave

      setNoteStartX

      • setNoteStartX(x: number): Stave
      • Parameters

        • x: number

        Returns Stave

      setNumLines

      • setNumLines(n: number): Stave
      • Parameters

        • n: number

        Returns Stave

      setRendered

      • setRendered(rendered?: boolean): Stave

      setRepetitionType

      • setRepetitionType(type: number, yShift?: number): Stave
      • Coda & Segno Symbol functions

        -

        Parameters

        • type: number
        • yShift: number = 0

        Returns Stave

      setSection

      • setSection(section: string, y: number, xOffset?: number, fontSize?: number, drawRect?: boolean): Stave
      • Parameters

        • section: string
        • y: number
        • xOffset: number = 0
        • Optional fontSize: number
        • drawRect: boolean = true

        Returns Stave

      setStyle

      setSection

      • setSection(section: string, y: number, xOffset?: number, fontSize?: number, drawRect?: boolean): Stave
      • Parameters

        • section: string
        • y: number
        • xOffset: number = 0
        • Optional fontSize: number
        • drawRect: boolean = true

        Returns Stave

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -148,7 +154,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Stave

      setTempo

      setText

      • setText(text: string, position: number, options?: { justification?: number; shift_x?: number; shift_y?: number }): Stave
      • Parameters

        • text: string
        • position: number
        • options: { justification?: number; shift_x?: number; shift_y?: number } = {}
          • Optional justification?: number
          • Optional shift_x?: number
          • Optional shift_y?: number

        Returns Stave

      setTimeSignature

      • setTimeSignature(timeSpec: string, customPadding?: number, position?: number): Stave
      • Parameters

        • timeSpec: string
        • Optional customPadding: number
        • Optional position: number

        Returns Stave

      setVoltaType

      • setVoltaType(type: number, number_t: string, y: number): Stave
      • Parameters

        • type: number
        • number_t: string
        • y: number

        Returns Stave

      setWidth

      • setWidth(width: number): Stave
      • Parameters

        • width: number

        Returns Stave

      setX

      • Parameters

        • x: number

        Returns Stave

      setY

      • Parameters

        • y: number

        Returns Stave

      sortByCategory

      • sortByCategory(items: StaveModifier[], order: Record<string, number>): void

      setTempo

      setText

      • setText(text: string, position: number, options?: { justification?: number; shift_x?: number; shift_y?: number }): Stave
      • Parameters

        • text: string
        • position: number
        • options: { justification?: number; shift_x?: number; shift_y?: number } = {}
          • Optional justification?: number
          • Optional shift_x?: number
          • Optional shift_y?: number

        Returns Stave

      setTimeSignature

      • setTimeSignature(timeSpec: string, customPadding?: number, position?: number): Stave
      • Parameters

        • timeSpec: string
        • Optional customPadding: number
        • Optional position: number

        Returns Stave

      setVoltaType

      • setVoltaType(type: number, number_t: string, y: number): Stave
      • Parameters

        • type: number
        • number_t: string
        • y: number

        Returns Stave

      setWidth

      • setWidth(width: number): Stave
      • Parameters

        • width: number

        Returns Stave

      setX

      • Parameters

        • x: number

        Returns Stave

      setY

      • Parameters

        • y: number

        Returns Stave

      sortByCategory

      • sortByCategory(items: StaveModifier[], order: Record<string, number>): void
      • Use the modifier's getCategory() as a key for the order array. The retrieved value is used to sort modifiers from left to right (0 to to 3).

        -

        Parameters

        Returns void

      space

      • space(spacing: number): number
      • Parameters

        • spacing: number

        Returns number

      Static formatBegModifiers

      • formatBegModifiers(staves: Stave[]): void
      • Parameters

        Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns void

      space

      • space(spacing: number): number
      • Parameters

        • spacing: number

        Returns number

      Static formatBegModifiers

      • formatBegModifiers(staves: Stave[]): void
      • Parameters

        Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/StaveConnector.html b/docs/api/classes/StaveConnector.html index 217893aa43..64f895f130 100644 --- a/docs/api/classes/StaveConnector.html +++ b/docs/api/classes/StaveConnector.html @@ -1,6 +1,6 @@ StaveConnector | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class StaveConnector

      StaveConnector implements the connector lines between staves of a system.

      -

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Readonly bottom_stave

      bottom_stave: Stave

      Readonly thickness

      thickness: number

      Readonly top_stave

      top_stave: Stave

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Readonly bottom_stave

      bottom_stave: Stave

      Readonly thickness

      thickness: number

      Readonly top_stave

      top_stave: Stave

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Static Readonly type

      type: Record<string, 0 | 2 | 1 | 3 | 4 | 5 | 6 | 7 | 8> = ...
      @@ -65,7 +65,9 @@

      Return the context.

      Returns undefined | RenderContext

      getFont

      • getFont(): string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getStyle

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStyle

      getType

      • getType(): number
      • Get type.

        @@ -107,7 +109,7 @@

        Set the element & associated children style used for rendering.

        Parameters

        Returns StaveConnector

      setRendered

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -119,10 +121,10 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns StaveConnector

      setText

      • setText(text: string, options?: { shift_x?: number; shift_y?: number }): StaveConnector

      setText

      • setText(text: string, options?: { shift_x?: number; shift_y?: number }): StaveConnector
      • Set optional associated Text.

        Parameters

        • text: string
        • options: { shift_x?: number; shift_y?: number } = {}
          • Optional shift_x?: number
          • Optional shift_y?: number

        Returns StaveConnector

      setType

      setXShift

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Returns StaveConnector

      setXShift

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/StaveHairpin.html b/docs/api/classes/StaveHairpin.html index 165aab7562..9e45f18dbf 100644 --- a/docs/api/classes/StaveHairpin.html +++ b/docs/api/classes/StaveHairpin.html @@ -1,4 +1,4 @@ -StaveHairpin | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class StaveHairpin

      Hierarchy

      Index

      Constructors

      constructor

      setPosition

      setRenderOptions

      setRendered

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -111,4 +113,4 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns StaveHairpin

      Static FormatByTicksAndDraw

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns StaveHairpin

      Static FormatByTicksAndDraw

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/StaveLine.html b/docs/api/classes/StaveLine.html index 4a466a4ab0..b1e42eb26a 100644 --- a/docs/api/classes/StaveLine.html +++ b/docs/api/classes/StaveLine.html @@ -1,4 +1,4 @@ -StaveLine | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class StaveLine

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      render_options

      render_options: { arrowhead_angle: number; arrowhead_length: number; color?: string; draw_end_arrow: boolean; draw_start_arrow: boolean; line_dash?: number[]; line_width: number; padding_left: number; padding_right: number; rounded_end: boolean; text_justification: number; text_position_vertical: number }

      Type declaration

      • arrowhead_angle: number
      • arrowhead_length: number
      • Optional color?: string
      • draw_end_arrow: boolean
      • draw_start_arrow: boolean
      • Optional line_dash?: number[]
      • line_width: number
      • padding_left: number
      • padding_right: number
      • rounded_end: boolean
      • text_justification: number
      • text_position_vertical: number

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +StaveLine | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class StaveLine

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      render_options

      render_options: { arrowhead_angle: number; arrowhead_length: number; color?: string; draw_end_arrow: boolean; draw_start_arrow: boolean; line_dash?: number[]; line_width: number; padding_left: number; padding_right: number; rounded_end: boolean; text_justification: number; text_position_vertical: number }

      Type declaration

      • arrowhead_angle: number
      • arrowhead_length: number
      • Optional color?: string
      • draw_end_arrow: boolean
      • draw_start_arrow: boolean
      • Optional line_dash?: number[]
      • line_width: number
      • padding_left: number
      • padding_right: number
      • rounded_end: boolean
      • text_justification: number
      • text_position_vertical: number

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default text font.

      Static Readonly TextJustification

      TextJustification: typeof TextJustification = TextJustification

      Static Readonly TextVerticalPosition

      TextVerticalPosition: { BOTTOM: number; TOP: number } = ...

      Type declaration

      • BOTTOM: number
      • TOP: number

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • Returns the CSS compatible font string.

        @@ -44,7 +44,9 @@

        Return the context.

        Returns undefined | RenderContext

      getFont

      • getFont(): string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getStyle

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStyle

      hasClass

      • hasClass(className: string): boolean
      • Check if it has a class label (An element can have multiple class labels).

        @@ -83,7 +85,7 @@

        Set the element & associated children style used for rendering.

        Parameters

        Returns StaveLine

      setNotes

      setRendered

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -95,4 +97,4 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns StaveLine

      setText

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns StaveLine

      setText

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/StaveModifier.html b/docs/api/classes/StaveModifier.html index a9788dbb76..74f7d776c5 100644 --- a/docs/api/classes/StaveModifier.html +++ b/docs/api/classes/StaveModifier.html @@ -1,4 +1,4 @@ -StaveModifier | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class StaveModifier

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +StaveModifier | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class StaveModifier

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -45,7 +45,9 @@

        Return the context.

        Returns undefined | RenderContext

      getFont

      • getFont(): string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getLayoutMetrics

      getPadding

      • getPadding(index: number): number
      • Parameters

        • index: number

        Returns number

      getPosition

      • getPosition(): number
      • Returns number

      getStave

      • getStave(): undefined | Stave
      • Returns undefined | Stave

      getStyle

      getLayoutMetrics

      getPadding

      • getPadding(index: number): number
      • Parameters

        • index: number

        Returns number

      getPosition

      • getPosition(): number
      • Returns number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave
      • Returns undefined | Stave

      getStyle

      getWidth

      • getWidth(): number
      • Returns number

      getX

      • getX(): number
      • Returns number

      hasClass

      • hasClass(className: string): boolean
      • Check if it has a class label (An element can have multiple class labels).

        @@ -84,7 +86,7 @@

        Set the element & associated children style used for rendering.

        Parameters

        Returns StaveModifier

      setLayoutMetrics

      setPadding

      setPosition

      setRendered

      setStave

      setStyle

      setStave

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -96,4 +98,4 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns StaveModifier

      setWidth

      setX

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns StaveModifier

      setWidth

      setX

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/StaveNote.html b/docs/api/classes/StaveNote.html index d8ae731928..babb9095d9 100644 --- a/docs/api/classes/StaveNote.html +++ b/docs/api/classes/StaveNote.html @@ -1,4 +1,4 @@ -StaveNote | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class StaveNote

      Hierarchy

      Index

      Constructors

      Properties

      Accessors

      Methods

      Constructors

      constructor

      checkStem

      checkTickContext

      draw

      • draw(): void

      drawFlag

      • drawFlag(): void
      • Returns void

      drawLedgerLines

      • drawLedgerLines(): void
      • Returns void

      drawModifiers

      • drawModifiers(): void
      • Returns void

      drawNoteHeads

      • drawNoteHeads(): void
      • Returns void

      drawStem

      drawFlag

      • drawFlag(): void
      • Returns void

      drawLedgerLines

      • drawLedgerLines(): void
      • Returns void

      drawModifiers

      • drawModifiers(noteheadParam: NoteHead): void
      • Parameters

        Returns void

      drawNoteHeads

      • drawNoteHeads(): void
      • Returns void

      drawStem

      drawWithStyle

      • drawWithStyle(): void
      • Draw the element and all its sub-elements (ie.: Modifiers in a Stave) @@ -125,7 +125,9 @@ audio player.

        Returns undefined | Note

      getRightDisplacedHeadPx

      • getRightDisplacedHeadPx(): number

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getStave

      • getStave(): undefined | Stave

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStaveNoteScale

      • getStaveNoteScale(): number
      • Primarily used as the scaling factor for grace notes, GraceNote will return the required scale.

        @@ -272,4 +274,4 @@

        Format notes inside a ModifierContext.

        Parameters

        Returns boolean

      Static plotMetrics

      Static postFormat

      • postFormat(notes: Note[]): boolean
      • Parameters

        Returns boolean

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns void

      Static postFormat

      • postFormat(notes: Note[]): boolean
      • Parameters

        Returns boolean

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/StaveSection.html b/docs/api/classes/StaveSection.html index b68b3c8624..d50a8817d1 100644 --- a/docs/api/classes/StaveSection.html +++ b/docs/api/classes/StaveSection.html @@ -1,4 +1,4 @@ -StaveSection | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class StaveSection

      Hierarchy

      Index

      Constructors

      constructor

      • new StaveSection(section: string, x: number, shift_y: number, drawRect?: boolean): StaveSection

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +StaveSection | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class StaveSection

      Hierarchy

      Index

      Constructors

      constructor

      • new StaveSection(section: string, x: number, shift_y: number, drawRect?: boolean): StaveSection

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -45,7 +45,9 @@

        Return the context.

        Returns undefined | RenderContext

      getFont

      • getFont(): string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getLayoutMetrics

      getPadding

      • getPadding(index: number): number

      getPosition

      • getPosition(): number

      getStave

      • getStave(): undefined | Stave

      getStyle

      getLayoutMetrics

      getPadding

      • getPadding(index: number): number

      getPosition

      • getPosition(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStyle

      getWidth

      • getWidth(): number

      getX

      • getX(): number

      hasClass

      • hasClass(className: string): boolean
      • Check if it has a class label (An element can have multiple class labels).

        @@ -84,7 +86,7 @@

        Set the element & associated children style used for rendering.

        Parameters

        Returns StaveSection

      setLayoutMetrics

      setPadding

      setPosition

      setRendered

      setShiftX

      setShiftY

      setStave

      setStaveSection

      setStyle

      setShiftX

      setShiftY

      setStave

      setStaveSection

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -96,4 +98,4 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns StaveSection

      setWidth

      setX

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns StaveSection

      setWidth

      setX

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/StaveTempo.html b/docs/api/classes/StaveTempo.html index 3cb59ec9cf..55eceafc22 100644 --- a/docs/api/classes/StaveTempo.html +++ b/docs/api/classes/StaveTempo.html @@ -1,4 +1,4 @@ -StaveTempo | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class StaveTempo

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      render_options

      render_options: { glyph_font_scale: number } = ...
      +StaveTempo | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class StaveTempo

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      render_options

      render_options: { glyph_font_scale: number } = ...

      Font size for note.

      Type declaration

      • glyph_font_scale: number

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) @@ -47,7 +47,9 @@

      Return the context.

      Returns undefined | RenderContext

      getFont

      • getFont(): string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getLayoutMetrics

      getPadding

      • getPadding(index: number): number

      getPosition

      • getPosition(): number

      getStave

      • getStave(): undefined | Stave

      getStyle

      getLayoutMetrics

      getPadding

      • getPadding(index: number): number

      getPosition

      • getPosition(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStyle

      getWidth

      • getWidth(): number

      getX

      • getX(): number

      hasClass

      • hasClass(className: string): boolean
      • Check if it has a class label (An element can have multiple class labels).

        @@ -86,7 +88,7 @@

        Set the element & associated children style used for rendering.

        Parameters

        Returns StaveTempo

      setLayoutMetrics

      setPadding

      setPosition

      setRendered

      setShiftX

      setShiftY

      setStave

      setStyle

      setShiftX

      setShiftY

      setStave

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -98,4 +100,4 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns StaveTempo

      setTempo

      setWidth

      setX

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns StaveTempo

      setTempo

      setWidth

      setX

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/StaveText.html b/docs/api/classes/StaveText.html index e7c95c51ea..2c6b4b0e82 100644 --- a/docs/api/classes/StaveText.html +++ b/docs/api/classes/StaveText.html @@ -1,4 +1,4 @@ -StaveText | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class StaveText

      Hierarchy

      Index

      Constructors

      constructor

      • new StaveText(text: string, position: number, options?: { justification?: number; shift_x?: number; shift_y?: number }): StaveText
      • Parameters

        • text: string
        • position: number
        • options: { justification?: number; shift_x?: number; shift_y?: number } = {}
          • Optional justification?: number
          • Optional shift_x?: number
          • Optional shift_y?: number

        Returns StaveText

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +StaveText | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class StaveText

      Hierarchy

      Index

      Constructors

      constructor

      • new StaveText(text: string, position: number, options?: { justification?: number; shift_x?: number; shift_y?: number }): StaveText
      • Parameters

        • text: string
        • position: number
        • options: { justification?: number; shift_x?: number; shift_y?: number } = {}
          • Optional justification?: number
          • Optional shift_x?: number
          • Optional shift_y?: number

        Returns StaveText

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -45,7 +45,9 @@

        Return the context.

        Returns undefined | RenderContext

      getFont

      • getFont(): string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getLayoutMetrics

      getPadding

      • getPadding(index: number): number

      getPosition

      • getPosition(): number

      getStave

      • getStave(): undefined | Stave

      getStyle

      getLayoutMetrics

      getPadding

      • getPadding(index: number): number

      getPosition

      • getPosition(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStyle

      getWidth

      • getWidth(): number

      getX

      • getX(): number

      hasClass

      • hasClass(className: string): boolean
      • Check if it has a class label (An element can have multiple class labels).

        @@ -84,7 +86,7 @@

        Set the element & associated children style used for rendering.

        Parameters

        Returns StaveText

      setLayoutMetrics

      setPadding

      setPosition

      setRendered

      setShiftX

      setShiftY

      setStave

      setStaveText

      setStyle

      setShiftX

      setShiftY

      setStave

      setStaveText

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -96,4 +98,4 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns StaveText

      setText

      setWidth

      setX

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns StaveText

      setText

      setWidth

      setX

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/StaveTie.html b/docs/api/classes/StaveTie.html index efc76640bb..1730dfe52d 100644 --- a/docs/api/classes/StaveTie.html +++ b/docs/api/classes/StaveTie.html @@ -1,4 +1,4 @@ -StaveTie | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class StaveTie

      Hierarchy

      Index

      Constructors

      constructor

      setRendered

      • setRendered(rendered?: boolean): StaveTie

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -109,4 +113,4 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns StaveTie

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns StaveTie

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Stem.html b/docs/api/classes/Stem.html index 856cb3d626..05a3a955c0 100644 --- a/docs/api/classes/Stem.html +++ b/docs/api/classes/Stem.html @@ -1,4 +1,4 @@ -Stem | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Stem

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static DEBUG

      DEBUG: boolean = false
      +Stem | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Stem

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static DEBUG

      DEBUG: boolean = false

      To enable logging for this class. Set Vex.Flow.Stem.DEBUG to true.

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) @@ -47,7 +47,9 @@

      Return the context.

      Returns undefined | RenderContext

      getExtension

      • getExtension(): number
      • Returns number

      getExtents

      • getExtents(): { baseY: number; topY: number }
      • Returns { baseY: number; topY: number }

        • baseY: number
        • topY: number

      getFont

      • getFont(): string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getHeight

      • getHeight(): number
      • Returns number

      getStyle

      getHeight

      • getHeight(): number
      • Returns number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStyle

      hasClass

      • hasClass(className: string): boolean
      • Check if it has a class label (An element can have multiple class labels).

        @@ -86,7 +88,7 @@

        Set the element & associated children style used for rendering.

        Parameters

        Returns Stem

      setNoteHeadXBounds

      • setNoteHeadXBounds(x_begin: number, x_end: number): Stem
      • Parameters

        • x_begin: number
        • x_end: number

        Returns Stem

      setOptions

      setRendered

      • setRendered(rendered?: boolean): Stem

      setStemlet

      • setStemlet(isStemlet: boolean, stemletHeight: number): Stem
      • Parameters

        • isStemlet: boolean
        • stemletHeight: number

        Returns Stem

      setStyle

      setStemlet

      • setStemlet(isStemlet: boolean, stemletHeight: number): Stem
      • Parameters

        • isStemlet: boolean
        • stemletHeight: number

        Returns Stem

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -98,4 +100,4 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Stem

      setVisibility

      • setVisibility(isVisible: boolean): Stem
      • Parameters

        • isVisible: boolean

        Returns Stem

      setYBounds

      • setYBounds(y_top: number, y_bottom: number): void
      • Parameters

        • y_top: number
        • y_bottom: number

        Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns Stem

      setVisibility

      • setVisibility(isVisible: boolean): Stem
      • Parameters

        • isVisible: boolean

        Returns Stem

      setYBounds

      • setYBounds(y_top: number, y_bottom: number): void
      • Parameters

        • y_top: number
        • y_bottom: number

        Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/StemmableNote.html b/docs/api/classes/StemmableNote.html index 73703749f0..dfe629fdb4 100644 --- a/docs/api/classes/StemmableNote.html +++ b/docs/api/classes/StemmableNote.html @@ -1,4 +1,4 @@ -StemmableNote | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class StemmableNote

      Hierarchy

      Index

      Constructors

      Properties

      Accessors

      Methods

      Constructors

      constructor

      getRightDisplacedHeadPx

      • getRightDisplacedHeadPx(): number

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getStave

      • getStave(): undefined | Stave

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStem

      • getStem(): undefined | Stem
      • Returns undefined | Stem

      getStemDirection

      • getStemDirection(): number

      setStave

      setStem

      setStemDirection

      setStemLength

      setStyle

      setStem

      setStemDirection

      setStemLength

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -246,7 +248,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns StemmableNote

      setTickContext

      setTickContext

      setTuplet

      • Attach to new tuplet.

        @@ -263,4 +265,4 @@

        True if this note has no duration (e.g., bar notes, spacers, etc.).

        Returns boolean

      Static plotMetrics

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/StringNumber.html b/docs/api/classes/StringNumber.html index 7ba7d467fe..87b23d5830 100644 --- a/docs/api/classes/StringNumber.html +++ b/docs/api/classes/StringNumber.html @@ -1,4 +1,4 @@ -StringNumber | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class StringNumber

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +StringNumber | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class StringNumber

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -62,7 +62,9 @@

        Get attached note (StaveNote, TabNote, etc.)

        Returns Note

      getPosition

      • getPosition(): number

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getStyle

      • Get the element style used for rendering.

        @@ -121,7 +123,7 @@

        Set the rendered status.

        Parameters

        • rendered: boolean = true

        Returns StringNumber

      setSpacingFromNextModifier

      • setSpacingFromNextModifier(x: number): void

      setStringNumber

      setStyle

      setStringNumber

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -133,7 +135,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns StringNumber

      setTextLine

      setTextLine

      setWidth

      setYShift

      Static format

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      • y: number

      Returns StringNumber

      Static format

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Stroke.html b/docs/api/classes/Stroke.html index 47182e8488..94289bfd3a 100644 --- a/docs/api/classes/Stroke.html +++ b/docs/api/classes/Stroke.html @@ -1,4 +1,4 @@ -Stroke | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Stroke

      Hierarchy

      Index

      Constructors

      constructor

      • new Stroke(type: number, options?: { all_voices: boolean }): Stroke
      • Parameters

        • type: number
        • Optional options: { all_voices: boolean }
          • all_voices: boolean

        Returns Stroke

      Properties

      render_options

      render_options: { font_scale: number }

      Type declaration

      • font_scale: number

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +Stroke | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Stroke

      Hierarchy

      Index

      Constructors

      constructor

      • new Stroke(type: number, options?: { all_voices: boolean }): Stroke
      • Parameters

        • type: number
        • Optional options: { all_voices: boolean }
          • all_voices: boolean

        Returns Stroke

      Properties

      render_options

      render_options: { font_scale: number }

      Type declaration

      • font_scale: number

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Static Readonly Type

      Type: { ARPEGGIO_DIRECTIONLESS: number; BRUSH_DOWN: number; BRUSH_UP: number; RASQUEDO_DOWN: number; RASQUEDO_UP: number; ROLL_DOWN: number; ROLL_UP: number } = ...

      Type declaration

      • ARPEGGIO_DIRECTIONLESS: number
      • BRUSH_DOWN: number
      • BRUSH_UP: number
      • RASQUEDO_DOWN: number
      • RASQUEDO_UP: number
      • ROLL_DOWN: number
      • ROLL_UP: number

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -62,7 +62,9 @@

        Get attached note (StaveNote, TabNote, etc.)

        Returns Note

      getPosition

      • getPosition(): number

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getStyle

      • Get the element style used for rendering.

        @@ -121,7 +123,7 @@

        Set the rendered status.

        Parameters

        • rendered: boolean = true

        Returns Stroke

      setSpacingFromNextModifier

      • setSpacingFromNextModifier(x: number): void

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -133,7 +135,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Stroke

      setTextLine

      • setTextLine(line: number): Stroke

      setTextLine

      • setTextLine(line: number): Stroke

      setWidth

      • setWidth(width: number): Stroke
      • Set modifier widths.

        @@ -142,4 +144,4 @@ shift reverse.

        Parameters

        • x: number

        Returns Stroke

      setYShift

      • Shift modifier down y pixels. Negative values shift up.

        -

        Parameters

        • y: number

        Returns Stroke

      Static format

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      • y: number

      Returns Stroke

      Static format

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/System.html b/docs/api/classes/System.html index d49d46ce02..1264e01ef4 100644 --- a/docs/api/classes/System.html +++ b/docs/api/classes/System.html @@ -2,7 +2,7 @@

      System implements a musical system, which is a collection of staves, each which can have one or more voices. All voices across all staves in the system are formatted together.

      -

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -64,7 +64,9 @@

        Return the context.

        Returns undefined | RenderContext

      getFont

      • getFont(): string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getStyle

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStyle

      hasClass

      • hasClass(className: string): boolean
      • Check if it has a class label (An element can have multiple class labels).

        @@ -105,7 +107,7 @@

        Set formatting options.

        Parameters

        Returns void

      setRendered

      • setRendered(rendered?: boolean): System

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -117,4 +119,4 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns System

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns System

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/TabNote.html b/docs/api/classes/TabNote.html index 22b7be66f6..9d0b10fc62 100644 --- a/docs/api/classes/TabNote.html +++ b/docs/api/classes/TabNote.html @@ -1,4 +1,4 @@ -TabNote | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class TabNote

      Hierarchy

      Index

      Constructors

      Properties

      Accessors

      Methods

      Constructors

      constructor

      getPositions

      getRightDisplacedHeadPx

      • getRightDisplacedHeadPx(): number

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getStave

      • getStave(): undefined | Stave

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStem

      • getStem(): undefined | Stem

      getStemDirection

      • getStemDirection(): number

      setStave

      setStem

      setStemDirection

      • setStemDirection(direction?: number): TabNote

      setStemLength

      • setStemLength(height: number): TabNote

      setStyle

      setStem

      setStemDirection

      • setStemDirection(direction?: number): TabNote

      setStemLength

      • setStemLength(height: number): TabNote

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -246,7 +248,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns TabNote

      setTickContext

      setTickContext

      setTuplet

      • Attach to new tuplet.

        @@ -263,4 +265,4 @@

        True if this note has no duration (e.g., bar notes, spacers, etc.).

        Returns boolean

      updateWidth

      • updateWidth(): void
      • Returns void

      Static plotMetrics

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/TabSlide.html b/docs/api/classes/TabSlide.html index 0d0abdc34c..14419d67f2 100644 --- a/docs/api/classes/TabSlide.html +++ b/docs/api/classes/TabSlide.html @@ -1,4 +1,4 @@ -TabSlide | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class TabSlide

      Hierarchy

      Index

      Constructors

      constructor

      setRendered

      • setRendered(rendered?: boolean): TabSlide

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -110,4 +114,4 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns TabSlide

      Static createHammeron

      Static createPulloff

      Static createSlideDown

      Static createSlideUp

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns TabSlide

      Static createHammeron

      Static createPulloff

      Static createSlideDown

      Static createSlideUp

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/TabStave.html b/docs/api/classes/TabStave.html index 7d01a53b3c..35a679d69a 100644 --- a/docs/api/classes/TabStave.html +++ b/docs/api/classes/TabStave.html @@ -1,4 +1,4 @@ -TabStave | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class TabStave

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Readonly options

      options: Required<StaveOptions>

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +TabStave | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class TabStave

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Readonly options

      options: Required<StaveOptions>

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -68,14 +68,18 @@

        Get default style for ledger lines.

        Returns ElementStyle

      getEndClef

      • getEndClef(): undefined | string

      getFont

      • getFont(): string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getHeight

      • getHeight(): number

      getLineForY

      • getLineForY(y: number): number

      getModifierXShift

      • getModifierXShift(index?: number): number

      getHeight

      • getHeight(): number

      getLineForY

      • getLineForY(y: number): number

      getMeasure

      • getMeasure(): number
      • +

        Return the measure number of this Stave.

        +

        Returns number

      getModifierXShift

      • getModifierXShift(index?: number): number
      • Gets the pixels to shift from the beginning of the stave following the modifier at the provided index

        Parameters

        • index: number = 0

          The index from which to determine the shift

        Returns number

        The amount of pixels shifted

      getModifiers

      • getModifiers(position?: number, category?: string): StaveModifier[]
      • Parameters

        • Optional position: number
        • Optional category: string

        Returns StaveModifier[]

        array of StaveModifiers that match the provided position and category.

        -

      getNoteEndX

      • getNoteEndX(): number

      getNoteStartX

      • getNoteStartX(): number

      getNumLines

      • getNumLines(): number

      getSpacingBetweenLines

      • getSpacingBetweenLines(): number

      getStyle

      getNoteEndX

      • getNoteEndX(): number

      getNoteStartX

      • getNoteStartX(): number

      getNumLines

      • getNumLines(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getSpacingBetweenLines

      • getSpacingBetweenLines(): number

      getStyle

      getTieEndX

      • getTieEndX(): number

      getTieStartX

      • getTieStartX(): number

      getTopLineTopY

      • getTopLineTopY(): number

      getVerticalBarWidth

      • getVerticalBarWidth(): number

      getWidth

      • getWidth(): number

      getX

      • getX(): number

      getY

      • getY(): number

      getYForBottomText

      • getYForBottomText(line?: number): number

      getYForGlyphs

      • getYForGlyphs(): number

      getYForLine

      • getYForLine(line: number): number
      • Parameters

        • line: number

        Returns number

        the y for the center of a staff line

      getYForNote

      • getYForNote(line: number): number

      getYForTopText

      • getYForTopText(line?: number): number

      hasClass

      • hasClass(className: string): boolean
      • @@ -132,11 +136,13 @@

        Change the font size, while keeping everything else the same.

        Parameters

        • Optional size: string | number

        Returns TabStave

      setGroupStyle

      setKeySignature

      • setKeySignature(keySpec: string, cancelKeySpec?: string, position?: number): TabStave

      setMeasure

      setNoteStartX

      setNumLines

      setRendered

      • setRendered(rendered?: boolean): TabStave

      setKeySignature

      • setKeySignature(keySpec: string, cancelKeySpec?: string, position?: number): TabStave

      setMeasure

      setNoteStartX

      setNumLines

      setRendered

      • setRendered(rendered?: boolean): TabStave

      setRepetitionType

      • setRepetitionType(type: number, yShift?: number): TabStave

      setSection

      • setSection(section: string, y: number, xOffset?: number, fontSize?: number, drawRect?: boolean): TabStave
      • Parameters

        • section: string
        • y: number
        • xOffset: number = 0
        • Optional fontSize: number
        • drawRect: boolean = true

        Returns TabStave

      setStyle

      setSection

      • setSection(section: string, y: number, xOffset?: number, fontSize?: number, drawRect?: boolean): TabStave
      • Parameters

        • section: string
        • y: number
        • xOffset: number = 0
        • Optional fontSize: number
        • drawRect: boolean = true

        Returns TabStave

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -148,7 +154,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns TabStave

      setTempo

      setText

      • setText(text: string, position: number, options?: { justification?: number; shift_x?: number; shift_y?: number }): TabStave
      • Parameters

        • text: string
        • position: number
        • options: { justification?: number; shift_x?: number; shift_y?: number } = {}
          • Optional justification?: number
          • Optional shift_x?: number
          • Optional shift_y?: number

        Returns TabStave

      setTimeSignature

      • setTimeSignature(timeSpec: string, customPadding?: number, position?: number): TabStave

      setVoltaType

      • setVoltaType(type: number, number_t: string, y: number): TabStave

      setWidth

      setX

      setY

      sortByCategory

      • sortByCategory(items: StaveModifier[], order: Record<string, number>): void

      setTempo

      setText

      • setText(text: string, position: number, options?: { justification?: number; shift_x?: number; shift_y?: number }): TabStave
      • Parameters

        • text: string
        • position: number
        • options: { justification?: number; shift_x?: number; shift_y?: number } = {}
          • Optional justification?: number
          • Optional shift_x?: number
          • Optional shift_y?: number

        Returns TabStave

      setTimeSignature

      • setTimeSignature(timeSpec: string, customPadding?: number, position?: number): TabStave

      setVoltaType

      • setVoltaType(type: number, number_t: string, y: number): TabStave

      setWidth

      setX

      setY

      sortByCategory

      • sortByCategory(items: StaveModifier[], order: Record<string, number>): void
      • Use the modifier's getCategory() as a key for the order array. The retrieved value is used to sort modifiers from left to right (0 to to 3).

        -

        Parameters

        Returns void

      space

      • space(spacing: number): number
      • Parameters

        • spacing: number

        Returns number

      Static formatBegModifiers

      • formatBegModifiers(staves: Stave[]): void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns void

      space

      • space(spacing: number): number
      • Parameters

        • spacing: number

        Returns number

      Static formatBegModifiers

      • formatBegModifiers(staves: Stave[]): void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/TabTie.html b/docs/api/classes/TabTie.html index c098c72c66..b0b344c7e3 100644 --- a/docs/api/classes/TabTie.html +++ b/docs/api/classes/TabTie.html @@ -1,4 +1,4 @@ -TabTie | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class TabTie

      Hierarchy

      Index

      Constructors

      constructor

      setRendered

      • setRendered(rendered?: boolean): TabTie

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -109,4 +113,4 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns TabTie

      Static createHammeron

      Static createPulloff

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns TabTie

      Static createHammeron

      Static createPulloff

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/TextBracket.html b/docs/api/classes/TextBracket.html index 36b4d09581..c55e076847 100644 --- a/docs/api/classes/TextBracket.html +++ b/docs/api/classes/TextBracket.html @@ -1,4 +1,4 @@ -TextBracket | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class TextBracket

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Readonly position

      render_options

      render_options: { bracket_height: number; color: string; dash: number[]; dashed: boolean; line_width: number; show_bracket: boolean; underline_superscript: boolean }

      Type declaration

      • bracket_height: number
      • color: string
      • dash: number[]
      • dashed: boolean
      • line_width: number
      • show_bracket: boolean
      • underline_superscript: boolean

      Readonly start

      start: Note

      Readonly stop

      stop: Note

      Static DEBUG

      DEBUG: boolean = false

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +TextBracket | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class TextBracket

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Readonly position

      render_options

      render_options: { bracket_height: number; color: string; dash: number[]; dashed: boolean; line_width: number; show_bracket: boolean; underline_superscript: boolean }

      Type declaration

      • bracket_height: number
      • color: string
      • dash: number[]
      • dashed: boolean
      • line_width: number
      • show_bracket: boolean
      • underline_superscript: boolean

      Readonly start

      start: Note

      Readonly stop

      stop: Note

      Static DEBUG

      DEBUG: boolean = false

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -48,7 +48,9 @@

        Return the context.

        Returns undefined | RenderContext

      getFont

      • getFont(): string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getStyle

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStyle

      hasClass

      • hasClass(className: string): boolean
      • Check if it has a class label (An element can have multiple class labels).

        @@ -87,7 +89,7 @@

        Set the element & associated children style used for rendering.

        Parameters

        Returns TextBracket

      setLine

      setRendered

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -99,4 +101,4 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns TextBracket

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns TextBracket

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/TextDynamics.html b/docs/api/classes/TextDynamics.html index 2a88814575..f7de2da413 100644 --- a/docs/api/classes/TextDynamics.html +++ b/docs/api/classes/TextDynamics.html @@ -3,7 +3,7 @@ text dynamics markings, ie: p, f, sfz, rfz, ppp

      You can render any dynamics string that contains a combination of the following letters: P, M, F, Z, R, S

      -

      Hierarchy

      Index

      Constructors

      constructor

      Hierarchy

      Index

      Constructors

      constructor

      • Create the dynamics marking.

        A TextDynamics object inherits from Note so that it can be formatted within a Voice.

        @@ -131,7 +131,9 @@ audio player.

        Returns undefined | Note

      getRightDisplacedHeadPx

      • getRightDisplacedHeadPx(): number

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getStave

      • getStave(): undefined | Stave

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStemDirection

      • getStemDirection(): number
      • Get the direction of the stem.

        @@ -246,7 +248,7 @@

        Set spacing to the right of the notes.

        Parameters

        • x: number

        Returns TextDynamics

      setStave

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -258,7 +260,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns TextDynamics

      setTickContext

      setTickContext

      setTuplet

      • Attach to new tuplet.

        @@ -275,4 +277,4 @@

        True if this note has no duration (e.g., bar notes, spacers, etc.).

        Returns boolean

      Static plotMetrics

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/TextNote.html b/docs/api/classes/TextNote.html index 70f191e744..cd5a00bfd2 100644 --- a/docs/api/classes/TextNote.html +++ b/docs/api/classes/TextNote.html @@ -3,7 +3,7 @@ meant for objects that sit above/below the staff and inline with each other. TextNote has to be assigned to a Stave before rendering by means of setStave. Examples of this would be such as dynamics, lyrics, chord changes, etc.

      -

      Hierarchy

      Index

      Constructors

      constructor

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Optional glyph

      glyph?: any

      keyProps

      keyProps: KeyProps[]

      keys

      keys: string[]

      render_options

      render_options: { annotation_spacing: number; draw?: boolean; draw_dots?: boolean; draw_stem?: boolean; draw_stem_through_stave?: boolean; extend_left?: number; extend_right?: number; font: string; glyph_font_scale: number; glyph_font_size?: number; scale: number; stroke_px: number; y_shift: number }

      Type declaration

      • annotation_spacing: number
      • Optional draw?: boolean
      • Optional draw_dots?: boolean
      • Optional draw_stem?: boolean
      • Optional draw_stem_through_stave?: boolean
      • Optional extend_left?: number
      • Optional extend_right?: number
      • font: string
      • glyph_font_scale: number
      • Optional glyph_font_size?: number
      • scale: number
      • stroke_px: number
      • y_shift: number

      Static Readonly Justification

      Justification: typeof TextJustification = TextJustification

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      @@ -105,7 +105,9 @@

      Return the intrinsic ticks.

      Returns number

      getKeyProps

      getKeys

      • getKeys(): string[]

      getLeftDisplacedHeadPx

      • getLeftDisplacedHeadPx(): number

      getLeftParenthesisPx

      • getLeftParenthesisPx(index: number): number

      getLineForRest

      • getLineForRest(): number

      getLeftParenthesisPx

      • getLeftParenthesisPx(index: number): number

      getLine

      • getLine(): number
      • +

        Return the Stave line on which the TextNote is placed.

        +

        Returns number

      getLineForRest

      • getLineForRest(): number

      getLineNumber

      • getLineNumber(isTopNote?: boolean): number
      • Get the stave line number for the note.

        @@ -126,7 +128,9 @@ audio player.

        Returns undefined | Note

      getRightDisplacedHeadPx

      • getRightDisplacedHeadPx(): number

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getStave

      • getStave(): undefined | Stave

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStemDirection

      • getStemDirection(): number
      • Get the direction of the stem.

        @@ -134,7 +138,9 @@

        Get the top and bottom y values of the stem.

        Returns Record<string, number>

      getStyle

      getTickContext

      getText

      • getText(): string
      • +

        Return the unformatted text of this TextNote.

        +

        Returns string

      getTickContext

      getTickMultiplier

      • Get the tick multiplier.

        @@ -243,7 +249,7 @@

        Set spacing to the right of the notes.

        Parameters

        • x: number

        Returns TextNote

      setStave

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -255,7 +261,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns TextNote

      setTickContext

      setTickContext

      setTuplet

      • Attach to new tuplet.

        @@ -272,4 +278,4 @@

        True if this note has no duration (e.g., bar notes, spacers, etc.).

        Returns boolean

      Static plotMetrics

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Tickable.html b/docs/api/classes/Tickable.html index 360a70a113..68c9deb1ed 100644 --- a/docs/api/classes/Tickable.html +++ b/docs/api/classes/Tickable.html @@ -1,7 +1,7 @@ Tickable | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Tickable

      Tickable represents a element that sit on a score and has a duration, i.e., Tickables occupy space in the musical rendering dimension.

      -

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -76,7 +76,9 @@

        Get ModifierContext.

        Returns undefined | ModifierContext

      getModifiers

      • Get the list of associated modifiers.

        -

        Returns Modifier[]

      Abstract getStave

      • getStave(): undefined | Stave

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      Abstract getStave

      • getStave(): undefined | Stave
      • Get the target stave.

        Returns undefined | Stave

      getStyle

      • Get the element style used for rendering.

        @@ -156,7 +158,7 @@

        Set the rendered status.

        Parameters

        • rendered: boolean = true

        Returns Tickable

      Abstract setStave

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -168,7 +170,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Tickable

      setTickContext

      setTickContext

      • Set the Tick Context.

        Parameters

        Returns void

      setTuplet

      • Attach to new tuplet.

        @@ -180,4 +182,4 @@

        Displace note by x pixels. Used by the formatter.

        Parameters

        • x: number

        Returns Tickable

      shouldIgnoreTicks

      • shouldIgnoreTicks(): boolean
      • Check if it ignores the ticks.

        -

        Returns boolean

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Returns boolean

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/TimeSigNote.html b/docs/api/classes/TimeSigNote.html index 8512275a09..5db05f9467 100644 --- a/docs/api/classes/TimeSigNote.html +++ b/docs/api/classes/TimeSigNote.html @@ -1,4 +1,4 @@ -TimeSigNote | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class TimeSigNote

      Hierarchy

      Index

      Constructors

      constructor

      • new TimeSigNote(timeSpec: string, customPadding?: number): TimeSigNote

      getRightDisplacedHeadPx

      • getRightDisplacedHeadPx(): number

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getStave

      • getStave(): undefined | Stave

      getRightParenthesisPx

      • getRightParenthesisPx(index: number): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStemDirection

      • getStemDirection(): number
      • Get the direction of the stem.

        @@ -231,7 +233,7 @@

        Set spacing to the right of the notes.

        Parameters

        • x: number

        Returns TimeSigNote

      setStave

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -243,7 +245,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns TimeSigNote

      setTickContext

      setTickContext

      setTuplet

      • Attach to new tuplet.

        @@ -260,4 +262,4 @@

        True if this note has no duration (e.g., bar notes, spacers, etc.).

        Returns boolean

      Static plotMetrics

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/TimeSignature.html b/docs/api/classes/TimeSignature.html index dbf26af5c9..0fba7a5af6 100644 --- a/docs/api/classes/TimeSignature.html +++ b/docs/api/classes/TimeSignature.html @@ -1,4 +1,4 @@ -TimeSignature | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class TimeSignature

      Hierarchy

      Index

      Constructors

      constructor

      • new TimeSignature(timeSpec?: string, customPadding?: number, validate_args?: boolean): TimeSignature

      Properties

      bottomLine

      bottomLine: number

      point

      point: number

      topLine

      topLine: number

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +TimeSignature | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class TimeSignature

      Hierarchy

      Index

      Constructors

      constructor

      • new TimeSignature(timeSpec?: string, customPadding?: number, validate_args?: boolean): TimeSignature

      Properties

      bottomLine

      bottomLine: number

      point

      point: number

      topLine

      topLine: number

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -45,7 +45,9 @@

        Return the context.

        Returns undefined | RenderContext

      getFont

      • getFont(): string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getInfo

      getLayoutMetrics

      getPadding

      • getPadding(index: number): number

      getPosition

      • getPosition(): number

      getStave

      • getStave(): undefined | Stave

      getStyle

      getInfo

      getLayoutMetrics

      getPadding

      • getPadding(index: number): number

      getPosition

      • getPosition(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStyle

      getWidth

      • getWidth(): number

      getX

      • getX(): number

      hasClass

      • hasClass(className: string): boolean
      • Check if it has a class label (An element can have multiple class labels).

        @@ -84,7 +86,7 @@

        Set the element & associated children style used for rendering.

        Parameters

        Returns TimeSignature

      setLayoutMetrics

      setPadding

      setPosition

      setRendered

      setStave

      setStyle

      setStave

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -96,4 +98,4 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns TimeSignature

      setTimeSig

      setWidth

      setX

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns TimeSignature

      setTimeSig

      setWidth

      setX

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/TimeSignatureGlyph.html b/docs/api/classes/TimeSignatureGlyph.html index 1279c40c19..7169e0b8e2 100644 --- a/docs/api/classes/TimeSignatureGlyph.html +++ b/docs/api/classes/TimeSignatureGlyph.html @@ -1,4 +1,4 @@ -TimeSignatureGlyph | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class TimeSignatureGlyph

      Hierarchy

      Index

      Constructors

      constructor

      • new TimeSignatureGlyph(timeSignature: TimeSignature, topDigits: string, botDigits: string, code: string, point: number, options?: { category: string }): TimeSignatureGlyph

      Properties

      bbox

      bbox: BoundingBox = ...

      botGlyphs

      botGlyphs: Glyph[] = []

      botStartX

      botStartX: number

      code

      code: string

      metrics

      metrics: GlyphMetrics

      scale

      scale: number = 1

      timeSignature

      timeSignature: TimeSignature

      topGlyphs

      topGlyphs: Glyph[] = []

      topStartX

      topStartX: number

      width

      width: number

      xMin

      xMin: number

      Static CURRENT_CACHE_KEY

      CURRENT_CACHE_KEY: string = ''

      Static MUSIC_FONT_STACK

      MUSIC_FONT_STACK: Font[] = []

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +TimeSignatureGlyph | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class TimeSignatureGlyph

      Hierarchy

      Index

      Constructors

      constructor

      • new TimeSignatureGlyph(timeSignature: TimeSignature, topDigits: string, botDigits: string, code: string, point: number, options?: { category: string }): TimeSignatureGlyph

      Properties

      bbox

      bbox: BoundingBox = ...

      botGlyphs

      botGlyphs: Glyph[] = []

      botStartX

      botStartX: number

      code

      code: string

      metrics

      metrics: GlyphMetrics

      scale

      scale: number = 1

      timeSignature

      timeSignature: TimeSignature

      topGlyphs

      topGlyphs: Glyph[] = []

      topStartX

      topStartX: number

      width

      width: number

      xMin

      xMin: number

      Static CURRENT_CACHE_KEY

      CURRENT_CACHE_KEY: string = ''

      Static MUSIC_FONT_STACK

      MUSIC_FONT_STACK: Font[] = []

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -45,7 +45,9 @@

        Return the context.

        Returns undefined | RenderContext

      getFont

      • getFont(): string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getMetrics

      getStyle

      getMetrics

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStyle

      getXShift

      • getXShift(): number

      getYshift

      • getYshift(): number

      hasClass

      • hasClass(className: string): boolean
      • Check if it has a class label (An element can have multiple class labels).

        @@ -84,7 +86,7 @@

        Set the element & associated children style used for rendering.

        Parameters

        Returns TimeSignatureGlyph

      setOptions

      • setOptions(options: any): void

      setOrigin

      • setOrigin(x: number, y: number): void
      • Parameters

        • x: number
        • y: number

        Returns void

      setOriginX

      • setOriginX(x: number): void

      setOriginY

      • setOriginY(y: number): void

      setPoint

      setRendered

      setStave

      setStyle

      setStave

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -96,7 +98,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns TimeSignatureGlyph

      setXShift

      setYShift

      Static getOutlineBoundingBox

      • getOutlineBoundingBox(outline: number[], scale: number, x_pos: number, y_pos: number): BoundingBox

      Static getWidth

      • getWidth(code: string, point: number, category?: string): number
      • Parameters

        • code: string
        • point: number
        • Optional category: string

        Returns number

      Static loadMetrics

      Static lookupFontMetric

      • lookupFontMetric(font: Font, category: string, code: string, key: string, defaultValue: number): number

      setXShift

      setYShift

      Static getOutlineBoundingBox

      • getOutlineBoundingBox(outline: number[], scale: number, x_pos: number, y_pos: number): BoundingBox

      Static getWidth

      • getWidth(code: string, point: number, category?: string): number
      • Parameters

        • code: string
        • point: number
        • Optional category: string

        Returns number

      Static loadMetrics

      Static lookupFontMetric

      • lookupFontMetric(font: Font, category: string, code: string, key: string, defaultValue: number): number
      • Pass a key of the form glyphs.{category}.{code}.{key} to Font.lookupMetric(). If the initial lookup fails, try again with the path glyphs.{category}.{key}. If the second lookup fails, return the defaultValue.

        Parameters

        • font: Font
        • category: string
          @@ -114,4 +116,4 @@

          the point size of the font

        • code: string

          the glyph code in font.getGlyphs()

          -
        • Optional options: { category?: string; scale?: number }
          • Optional category?: string
          • Optional scale?: number

        Returns GlyphMetrics

      Static renderOutline

      • renderOutline(ctx: RenderContext, outline: number[], scale: number, x_pos: number, y_pos: number): void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +
    3. Optional options: { category?: string; scale?: number }
      • Optional category?: string
      • Optional scale?: number
    4. Returns GlyphMetrics

      Static renderOutline

      • renderOutline(ctx: RenderContext, outline: number[], scale: number, x_pos: number, y_pos: number): void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Tremolo.html b/docs/api/classes/Tremolo.html index 0e3942ed7d..08c351b1e4 100644 --- a/docs/api/classes/Tremolo.html +++ b/docs/api/classes/Tremolo.html @@ -1,6 +1,6 @@ Tremolo | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Tremolo

      Tremolo implements tremolo notation.

      -

      Hierarchy

      Index

      Constructors

      constructor

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      extra_stroke_scale

      extra_stroke_scale: number

      Font scaling for big strokes.

      @@ -70,7 +70,9 @@

      Get attached note (StaveNote, TabNote, etc.)

      Returns Note

      getPosition

      • getPosition(): number

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getStyle

      • Get the element style used for rendering.

        @@ -129,7 +131,7 @@

        Set the rendered status.

        Parameters

        • rendered: boolean = true

        Returns Tremolo

      setSpacingFromNextModifier

      • setSpacingFromNextModifier(x: number): void

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -141,7 +143,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Tremolo

      setTextLine

      setTextLine

      setWidth

      • Set modifier widths.

        @@ -150,4 +152,4 @@ shift reverse.

        Parameters

        • x: number

        Returns Tremolo

      setYShift

      • Shift modifier down y pixels. Negative values shift up.

        -

        Parameters

        • y: number

        Returns Tremolo

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      • y: number

      Returns Tremolo

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Tuplet.html b/docs/api/classes/Tuplet.html index 5328fbc97c..10d2ce4eea 100644 --- a/docs/api/classes/Tuplet.html +++ b/docs/api/classes/Tuplet.html @@ -1,4 +1,4 @@ -Tuplet | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Tuplet

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      notes

      notes: Note[]

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +Tuplet | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Tuplet

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      notes

      notes: Note[]

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -45,7 +45,9 @@

        Return the context.

        Returns undefined | RenderContext

      getFont

      • getFont(): string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getNestedTupletCount

      • getNestedTupletCount(): number
      • Returns number

      getNoteCount

      • getNoteCount(): number
      • Returns number

      getNotes

      getNotesOccupied

      • getNotesOccupied(): number
      • Returns number

      getStyle

      getNestedTupletCount

      • getNestedTupletCount(): number
      • Returns number

      getNoteCount

      • getNoteCount(): number
      • Returns number

      getNotes

      getNotesOccupied

      • getNotesOccupied(): number
      • Returns number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStyle

      getYPosition

      • getYPosition(): number
      • Returns number

      hasClass

      • hasClass(className: string): boolean
      • Check if it has a class label (An element can have multiple class labels).

        @@ -88,7 +90,7 @@

        Set whether or not the ratio is shown.

        Parameters

        • ratioed: boolean

        Returns Tuplet

      setRendered

      • setRendered(rendered?: boolean): Tuplet

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -100,6 +102,6 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Tuplet

      setTupletLocation

      • setTupletLocation(location: number): Tuplet

      setTupletLocation

      • setTupletLocation(location: number): Tuplet
      • Set the tuplet indicator to be displayed either on the top or bottom of the stave.

        -

        Parameters

        • location: number

        Returns Tuplet

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      • location: number

      Returns Tuplet

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Vibrato.html b/docs/api/classes/Vibrato.html index 2d58f257ed..8b84fa084d 100644 --- a/docs/api/classes/Vibrato.html +++ b/docs/api/classes/Vibrato.html @@ -1,6 +1,6 @@ Vibrato | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Vibrato

      Vibrato implements diverse vibratos.

      -

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      render_options

      render_options: VibratoRenderOptions

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      render_options

      render_options: VibratoRenderOptions

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -64,7 +64,9 @@

        Get attached note (StaveNote, TabNote, etc.)

        Returns Note

      getPosition

      • getPosition(): number

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getSpacingFromNextModifier

      • getSpacingFromNextModifier(): number

      getStyle

      • Get the element style used for rendering.

        @@ -125,7 +127,7 @@

        Set the rendered status.

        Parameters

        • rendered: boolean = true

        Returns Vibrato

      setSpacingFromNextModifier

      • setSpacingFromNextModifier(x: number): void

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -137,7 +139,7 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Vibrato

      setTextLine

      setTextLine

      setVibratoWidth

      • setVibratoWidth(width: number): Vibrato

      Static renderVibrato

      • Static rendering method that can be called from other classes (e.g. VibratoBracket).

        -

        Parameters

        Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/VibratoBracket.html b/docs/api/classes/VibratoBracket.html index ba62e645d4..0dd3965cee 100644 --- a/docs/api/classes/VibratoBracket.html +++ b/docs/api/classes/VibratoBracket.html @@ -1,6 +1,6 @@ VibratoBracket | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class VibratoBracket

      VibratoBracket renders vibrato effect between two notes.

      -

      Hierarchy

      Index

      Constructors

      constructor

      Hierarchy

      Index

      Constructors

      constructor

      • Either the stop or start note must be set, or both of them. An undefined value for the start or stop note indicates that the vibrato is drawn from the beginning or until the end of the stave accordingly.

        @@ -53,7 +53,9 @@

        Return the context.

        Returns undefined | RenderContext

      getFont

      • getFont(): string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getStyle

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStyle

      hasClass

      • hasClass(className: string): boolean
      • Check if it has a class label (An element can have multiple class labels).

        @@ -96,7 +98,7 @@

        Set line position of the vibrato bracket.

        Parameters

        • line: number

        Returns VibratoBracket

      setRendered

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -108,4 +110,4 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns VibratoBracket

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns VibratoBracket

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Voice.html b/docs/api/classes/Voice.html index d6be34f5e5..135e3a3990 100644 --- a/docs/api/classes/Voice.html +++ b/docs/api/classes/Voice.html @@ -1,6 +1,6 @@ Voice | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Voice

      Voice is mainly a container object to group Tickables for formatting.

      -

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +

      Hierarchy

      Index

      Constructors

      constructor

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -70,7 +70,9 @@

        Get the voice mode.

        Returns number

      getResolutionMultiplier

      • getResolutionMultiplier(): number
      • Get the resolution multiplier for the voice.

        -

        Returns number

      getSmallestTickCount

      • +

        Returns number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getSmallestTickCount

      • Get the tick count for the shortest tickable

        Returns Fraction

      getStave

      • getStave(): undefined | Stave
      • Returns undefined | Stave

      getStyle

      • Get the element style used for rendering.

        @@ -134,7 +136,7 @@

        Set the voice's stave.

        Parameters

        Returns Voice

      setStrict

      • setStrict(strict: boolean): Voice
      • Set the voice mode to strict or soft.

        -

        Parameters

        • strict: boolean

        Returns Voice

      setStyle

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -146,6 +148,6 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Voice

      softmax

      • softmax(tickValue: number): number

      softmax

      • softmax(tickValue: number): number
      • Get the softmax-scaled value of a tick duration. 'tickValue' is a number.

        -

        Parameters

        • tickValue: number

        Returns number

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      • tickValue: number

      Returns number

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/classes/Volta.html b/docs/api/classes/Volta.html index 02f47c990f..880ab5c574 100644 --- a/docs/api/classes/Volta.html +++ b/docs/api/classes/Volta.html @@ -1,4 +1,4 @@ -Volta | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Volta

      Hierarchy

      Index

      Constructors

      constructor

      • new Volta(type: number, number: string, x: number, y_shift: number): Volta

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...
      +Volta | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Class Volta

      Hierarchy

      Index

      Constructors

      constructor

      • new Volta(type: number, number: string, x: number, y_shift: number): Volta

      Properties

      Static TEXT_FONT

      TEXT_FONT: Required<FontInfo> = ...

      Default font for text. This is not related to music engraving. Instead, see Flow.setMusicFont(...fontNames) to customize the font for musical symbols placed on the score.

      Accessors

      font

      • get font(): string
      • set font(f: string): void
      • @@ -45,7 +45,9 @@

        Return the context.

        Returns undefined | RenderContext

      getFont

      • getFont(): string

      getFontSize

      • getFontSize(): string
      • Returns string

        a CSS font-size string (e.g., '18pt', '12px', '1em'). See Element.fontSizeInPixels or Element.fontSizeInPoints if you need to get a number for calculation purposes.

        -

      getLayoutMetrics

      getPadding

      • getPadding(index: number): number

      getPosition

      • getPosition(): number

      getStave

      • getStave(): undefined | Stave

      getStyle

      getLayoutMetrics

      getPadding

      • getPadding(index: number): number

      getPosition

      • getPosition(): number

      getSVGElement

      • getSVGElement(suffix?: string): undefined | SVGElement
      • +

        Return associated SVGElement.

        +

        Parameters

        • suffix: string = ''

        Returns undefined | SVGElement

      getStave

      • getStave(): undefined | Stave

      getStyle

      getWidth

      • getWidth(): number

      getX

      • getX(): number

      hasClass

      • hasClass(className: string): boolean
      • Check if it has a class label (An element can have multiple class labels).

        @@ -84,7 +86,7 @@

        Set the element & associated children style used for rendering.

        Parameters

        Returns Volta

      setLayoutMetrics

      setPadding

      • setPadding(padding: number): Volta

      setPosition

      • setPosition(position: number): Volta

      setRendered

      • setRendered(rendered?: boolean): Volta

      setShiftY

      • setShiftY(y: number): Volta
      • Parameters

        • y: number

        Returns Volta

      setStave

      setStyle

      setShiftY

      • setShiftY(y: number): Volta
      • Parameters

        • y: number

        Returns Volta

      setStave

      setStyle

      • Set the element style used to render.

        Example:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.draw(); @@ -96,4 +98,4 @@

        or using drawWithStyle:

        element.setStyle({ fillStyle: 'red', strokeStyle: 'red' });
        element.drawWithStyle();
        -

        Parameters

        Returns Volta

      setWidth

      • setWidth(width: number): Volta

      setX

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      Returns Volta

      setWidth

      • setWidth(width: number): Volta

      setX

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/index.html b/docs/api/index.html index 68e2187d67..a9287a5ed6 100644 --- a/docs/api/index.html +++ b/docs/api/index.html @@ -84,4 +84,4 @@

      MIT License

      LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

      -

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/docs/api/interfaces/GraceNoteStruct.html b/docs/api/interfaces/GraceNoteStruct.html index 2d8599f129..8149967541 100644 --- a/docs/api/interfaces/GraceNoteStruct.html +++ b/docs/api/interfaces/GraceNoteStruct.html @@ -1,6 +1,6 @@ GraceNoteStruct | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Interface GraceNoteStruct

      Hierarchy

      Index

      Properties

      Optional align_center

      align_center?: boolean

      Optional auto_stem

      auto_stem?: boolean

      Optional clef

      clef?: string

      Optional dots

      dots?: number

      The number of dots, which affects the duration.

      -

      Optional duration

      duration?: string
      +

      duration

      duration: string

      The time length (e.g., q for quarter, h for half, 8 for eighth etc.).

      Optional duration_override

      duration_override?: Fraction

      Optional glyph_font_scale

      glyph_font_scale?: number

      Optional keys

      keys?: string[]

      Array of pitches, e.g: ['c/4', 'e/4', 'g/4']

      diff --git a/docs/api/interfaces/NoteHeadStruct.html b/docs/api/interfaces/NoteHeadStruct.html index 4b7450578e..1c08233ee9 100644 --- a/docs/api/interfaces/NoteHeadStruct.html +++ b/docs/api/interfaces/NoteHeadStruct.html @@ -1,6 +1,6 @@ NoteHeadStruct | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Interface NoteHeadStruct

      Hierarchy

      Index

      Properties

      Optional align_center

      align_center?: boolean

      Optional custom_glyph_code

      custom_glyph_code?: string

      Optional displaced

      displaced?: boolean

      Optional dots

      dots?: number

      The number of dots, which affects the duration.

      -

      Optional duration

      duration?: string
      +

      duration

      duration: string

      The time length (e.g., q for quarter, h for half, 8 for eighth etc.).

      Optional duration_override

      duration_override?: Fraction

      Optional glyph_font_scale

      glyph_font_scale?: number

      Optional index

      index?: number

      Optional keys

      keys?: string[]

      Array of pitches, e.g: ['c/4', 'e/4', 'g/4']

      diff --git a/docs/api/interfaces/NoteStruct.html b/docs/api/interfaces/NoteStruct.html index 1e8309649d..288b99e689 100644 --- a/docs/api/interfaces/NoteStruct.html +++ b/docs/api/interfaces/NoteStruct.html @@ -1,6 +1,6 @@ NoteStruct | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Interface NoteStruct

      Hierarchy

      Index

      Properties

      Optional align_center

      align_center?: boolean

      Optional dots

      dots?: number

      The number of dots, which affects the duration.

      -

      Optional duration

      duration?: string
      +

      duration

      duration: string

      The time length (e.g., q for quarter, h for half, 8 for eighth etc.).

      Optional duration_override

      duration_override?: Fraction

      Optional keys

      keys?: string[]

      Array of pitches, e.g: ['c/4', 'e/4', 'g/4']

      diff --git a/docs/api/interfaces/StaveNoteStruct.html b/docs/api/interfaces/StaveNoteStruct.html index 307a81df08..595fe9ae88 100644 --- a/docs/api/interfaces/StaveNoteStruct.html +++ b/docs/api/interfaces/StaveNoteStruct.html @@ -1,6 +1,6 @@ StaveNoteStruct | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Interface StaveNoteStruct

      Hierarchy

      Index

      Properties

      Optional align_center

      align_center?: boolean

      Optional auto_stem

      auto_stem?: boolean

      Optional clef

      clef?: string

      Optional dots

      dots?: number

      The number of dots, which affects the duration.

      -

      Optional duration

      duration?: string
      +

      duration

      duration: string

      The time length (e.g., q for quarter, h for half, 8 for eighth etc.).

      Optional duration_override

      duration_override?: Fraction

      Optional glyph_font_scale

      glyph_font_scale?: number

      Optional keys

      keys?: string[]

      Array of pitches, e.g: ['c/4', 'e/4', 'g/4']

      diff --git a/docs/api/interfaces/TabNoteStruct.html b/docs/api/interfaces/TabNoteStruct.html index 4aa12766b9..b2c74d79b1 100644 --- a/docs/api/interfaces/TabNoteStruct.html +++ b/docs/api/interfaces/TabNoteStruct.html @@ -1,6 +1,6 @@ TabNoteStruct | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Interface TabNoteStruct

      Hierarchy

      Index

      Properties

      Optional align_center

      align_center?: boolean

      Optional auto_stem

      auto_stem?: boolean

      Optional clef

      clef?: string

      Optional dots

      dots?: number

      The number of dots, which affects the duration.

      -

      Optional duration

      duration?: string
      +

      duration

      duration: string

      The time length (e.g., q for quarter, h for half, 8 for eighth etc.).

      Optional duration_override

      duration_override?: Fraction

      Optional glyph_font_scale

      glyph_font_scale?: number

      Optional keys

      keys?: string[]

      Array of pitches, e.g: ['c/4', 'e/4', 'g/4']

      diff --git a/docs/api/interfaces/TextNoteStruct.html b/docs/api/interfaces/TextNoteStruct.html index 275f4e8cc1..b63daa0dd7 100644 --- a/docs/api/interfaces/TextNoteStruct.html +++ b/docs/api/interfaces/TextNoteStruct.html @@ -1,6 +1,6 @@ TextNoteStruct | vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      Interface TextNoteStruct

      Hierarchy

      Index

      Properties

      Optional align_center

      align_center?: boolean

      Optional dots

      dots?: number

      The number of dots, which affects the duration.

      -

      Optional duration

      duration?: string
      +

      duration

      duration: string

      The time length (e.g., q for quarter, h for half, 8 for eighth etc.).

      Optional duration_override

      duration_override?: Fraction

      Optional font

      font?: FontInfo

      Optional glyph

      glyph?: string

      Optional ignore_ticks

      ignore_ticks?: boolean

      Optional keys

      keys?: string[]

      Array of pitches, e.g: ['c/4', 'e/4', 'g/4']

      diff --git a/docs/api/modules.html b/docs/api/modules.html index 34b2aada7e..cdd94d08e8 100644 --- a/docs/api/modules.html +++ b/docs/api/modules.html @@ -1,4 +1,4 @@ -vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      vexflow

      Index

      Enumerations

      Classes

      Interfaces

      Type aliases

      Variables

      Functions

      Type aliases

      AccidentalValue

      AccidentalValue: -2 | -1 | 0 | 1 | 2

      Attributes

      Attributes: Record<string, any>

      CommitHook

      CommitHook: (obj: any, note: StemmableNote, builder: Builder) => void

      Type declaration

      ContextBuilder

      ContextBuilder: typeof getSVGContext | typeof getCanvasContext

      FontModule

      FontModule: { data: FontData; metrics: FontMetrics }

      Type declaration

      GroupedResults

      GroupedResults: (Result | Result[])[]

      KeyValue

      KeyValue: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11

      Line

      Line: { column: number; dblSharpLine: boolean; flatLine: boolean; line: number; numAcc: number; width: number }

      Type declaration

      • column: number
      • dblSharpLine: boolean
      • flatLine: boolean
      • line: number
      • numAcc: number
      • width: number

      Match

      Match: string | Match[] | null

      ModifierContextMember

      ModifierContextMember: Tickable | Modifier | StaveNote | TabNote

      PartialBeamDirection

      PartialBeamDirection: typeof BEAM_LEFT | typeof BEAM_RIGHT | typeof BEAM_BOTH

      RootValue

      RootValue: 0 | 1 | 2 | 3 | 4 | 5 | 6

      RuleFunction

      RuleFunction: () => Rule

      Type declaration

      StaveConnectorType

      StaveConnectorType: "singleRight" | "singleLeft" | "single" | "double" | "brace" | "bracket" | "boldDoubleLeft" | "boldDoubleRight" | "thinDouble" | "none" | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8
      +vexflow
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      vexflow

      Index

      Enumerations

      Classes

      Interfaces

      Type aliases

      Variables

      Functions

      Type aliases

      AccidentalValue

      AccidentalValue: -2 | -1 | 0 | 1 | 2

      Attributes

      Attributes: Record<string, any>

      CommitHook

      CommitHook: (obj: any, note: StemmableNote, builder: Builder) => void

      Type declaration

      ContextBuilder

      ContextBuilder: typeof getSVGContext | typeof getCanvasContext

      FontModule

      FontModule: { data: FontData; metrics: FontMetrics }

      Type declaration

      GroupedResults

      GroupedResults: (Result | Result[])[]

      KeyValue

      KeyValue: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11

      Line

      Line: { column: number; dblSharpLine: boolean; flatLine: boolean; line: number; numAcc: number; width: number }

      Type declaration

      • column: number
      • dblSharpLine: boolean
      • flatLine: boolean
      • line: number
      • numAcc: number
      • width: number

      Match

      Match: string | Match[] | null

      ModifierContextMember

      ModifierContextMember: Tickable | Modifier | StaveNote | TabNote

      PartialBeamDirection

      PartialBeamDirection: typeof BEAM_LEFT | typeof BEAM_RIGHT | typeof BEAM_BOTH

      RootValue

      RootValue: 0 | 1 | 2 | 3 | 4 | 5 | 6

      RuleFunction

      RuleFunction: () => Rule

      Type declaration

      StaveConnectorType

      StaveConnectorType: "singleRight" | "singleLeft" | "single" | "double" | "brace" | "bracket" | "boldDoubleLeft" | "boldDoubleRight" | "thinDouble" | "none" | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8

      TriggerFunction

      TriggerFunction: (state?: { matches: Match[] }) => void

      Type declaration

        • (state?: { matches: Match[] }): void
        • Parameters

          • Optional state: { matches: Match[] }

          Returns void

      Variables

      BEAM_BOTH

      BEAM_BOTH: "B" = 'B'

      BEAM_LEFT

      BEAM_LEFT: "L" = 'L'

      BEAM_RIGHT

      BEAM_RIGHT: "R" = 'R'

      Functions

      defined

      • defined<T>(x?: T, code?: string, message?: string): T
      • Check that x is of type T and not undefined. @@ -35,4 +35,4 @@ unique prefix to element names (or other keys in shared namespaces).

        Parameters

        • text: string

        Returns string

      warn

      • warn(...args: any[]): void
      • Dump warning to console.

        -

        Parameters

        • Rest ...args: any[]

        Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file +

      Parameters

      • Rest ...args: any[]

      Returns void

      Legend

      • Constructor
      • Property
      • Method
      • Accessor
      • Inherited property
      • Inherited method
      • Inherited accessor
      • Property
      • Method
      • Static property
      • Static method

      Settings

      Theme

      \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index d68a29c6de..77d55aa138 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "vexflow", - "version": "4.0.3", + "version": "4.1.0-alpha.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vexflow", - "version": "4.0.3", + "version": "4.1.0-alpha.0", "license": "MIT", "devDependencies": { "@typescript-eslint/eslint-plugin": "^5.8.1", diff --git a/package.json b/package.json index a09d7f3137..f85078b417 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vexflow", - "version": "4.0.3", + "version": "4.1.0-alpha.0", "description": "A JavaScript library for rendering music notation and guitar tablature.", "exports": { ".": { diff --git a/releases/vexflow-debug.js b/releases/vexflow-debug.js new file mode 100644 index 0000000000..a149f4d674 --- /dev/null +++ b/releases/vexflow-debug.js @@ -0,0 +1,30441 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["Vex"] = factory(); + else + root["Vex"] = factory(); +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = "./src/index.js"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./src/accidental.js": +/*!***************************!*\ + !*** ./src/accidental.js ***! + \***************************/ +/*! exports provided: Accidental */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Accidental", function() { return Accidental; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fraction */ "./src/fraction.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _music__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./music */ "./src/music.js"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modifier */ "./src/modifier.js"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./glyph */ "./src/glyph.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + +function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + +function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// @author Mohit Cheppudira +// @author Greg Ristow (modifications) +// +// ## Description +// +// This file implements accidentals as modifiers that can be attached to +// notes. Support is included for both western and microtonal accidentals. +// +// See `tests/accidental_tests.js` for usage examples. + + + + + + // To enable logging for this class. Set `Vex.Flow.Accidental.DEBUG` to `true`. + +function L() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (Accidental.DEBUG) _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].L('Vex.Flow.Accidental', args); +} + +var getGlyphWidth = function getGlyphWidth(glyph) { + return glyph.getMetrics().width; +}; // An `Accidental` inherits from `Modifier`, and is formatted within a +// `ModifierContext`. + + +var Accidental = +/*#__PURE__*/ +function (_Modifier) { + _inherits(Accidental, _Modifier); + + _createClass(Accidental, null, [{ + key: "format", + // Arrange accidentals inside a ModifierContext. + value: function format(accidentals, state) { + var _this2 = this; + + var noteheadAccidentalPadding = 1; + var leftShift = state.left_shift + noteheadAccidentalPadding; + var accidentalSpacing = 3; // If there are no accidentals, we needn't format their positions + + if (!accidentals || accidentals.length === 0) return; + var accList = []; + var prevNote = null; + var shiftL = 0; // First determine the accidentals' Y positions from the note.keys + + for (var i = 0; i < accidentals.length; ++i) { + var acc = accidentals[i]; + var note = acc.getNote(); + var stave = note.getStave(); + var props = note.getKeyProps()[acc.getIndex()]; + + if (note !== prevNote) { + // Iterate through all notes to get the displaced pixels + for (var n = 0; n < note.keys.length; ++n) { + shiftL = Math.max(note.getLeftDisplacedHeadPx(), shiftL); + } + + prevNote = note; + } + + if (stave !== null) { + var lineSpace = stave.options.spacing_between_lines_px; + var y = stave.getYForLine(props.line); + var accLine = Math.round(y / lineSpace * 2) / 2; + accList.push({ + y: y, + line: accLine, + shift: shiftL, + acc: acc, + lineSpace: lineSpace + }); + } else { + accList.push({ + line: props.line, + shift: shiftL, + acc: acc + }); + } + } // Sort accidentals by line number. + + + accList.sort(function (a, b) { + return b.line - a.line; + }); // FIXME: Confusing name. Each object in this array has a property called `line`. + // So if this is a list of lines, you end up with: `line.line` which is very awkward. + + var lineList = []; // amount by which all accidentals must be shifted right or left for + // stem flipping, notehead shifting concerns. + + var accShift = 0; + var previousLine = null; // Create an array of unique line numbers (lineList) from accList + + for (var _i = 0; _i < accList.length; _i++) { + var _acc = accList[_i]; // if this is the first line, or a new line, add a lineList + + if (previousLine === null || previousLine !== _acc.line) { + lineList.push({ + line: _acc.line, + flatLine: true, + dblSharpLine: true, + numAcc: 0, + width: 0 + }); + } // if this accidental is not a flat, the accidental needs 3.0 lines lower + // clearance instead of 2.5 lines for b or bb. + // FIXME: Naming could use work. acc.acc is very awkward + + + if (_acc.acc.type !== 'b' && _acc.acc.type !== 'bb') { + lineList[lineList.length - 1].flatLine = false; + } // if this accidental is not a double sharp, the accidental needs 3.0 lines above + + + if (_acc.acc.type !== '##') { + lineList[lineList.length - 1].dblSharpLine = false; + } // Track how many accidentals are on this line: + + + lineList[lineList.length - 1].numAcc++; // Track the total x_offset needed for this line which will be needed + // for formatting lines w/ multiple accidentals: + // width = accidental width + universal spacing between accidentals + + lineList[lineList.length - 1].width += _acc.acc.getWidth() + accidentalSpacing; // if this accShift is larger, use it to keep first column accidentals in the same line + + accShift = _acc.shift > accShift ? _acc.shift : accShift; + previousLine = _acc.line; + } // ### Place Accidentals in Columns + // + // Default to a classic triangular layout (middle accidental farthest left), + // but follow exceptions as outlined in G. Read's _Music Notation_ and + // Elaine Gould's _Behind Bars_. + // + // Additionally, this implements different vertical collision rules for + // flats (only need 2.5 lines clearance below) and double sharps (only + // need 2.5 lines of clearance above or below). + // + // Classic layouts and exception patterns are found in the 'tables.js' + // in 'Vex.Flow.accidentalColumnsTable' + // + // Beyond 6 vertical accidentals, default to the parallel ascending lines approach, + // using as few columns as possible for the verticle structure. + // + // TODO (?): Allow column to be specified for an accidental at run-time? + + + var totalColumns = 0; // establish the boundaries for a group of notes with clashing accidentals: + + var _loop = function _loop(_i3) { + var noFurtherConflicts = false; + var groupStart = _i3; + var groupEnd = _i3; + + while (groupEnd + 1 < lineList.length && !noFurtherConflicts) { + // if this note conflicts with the next: + if (_this2.checkCollision(lineList[groupEnd], lineList[groupEnd + 1])) { + // include the next note in the group: + groupEnd++; + } else { + noFurtherConflicts = true; + } + } // Gets an a line from the `lineList`, relative to the current group + + + var getGroupLine = function getGroupLine(index) { + return lineList[groupStart + index]; + }; + + var getGroupLines = function getGroupLines(indexes) { + return indexes.map(getGroupLine); + }; + + var lineDifference = function lineDifference(indexA, indexB) { + var _getGroupLines$map = getGroupLines([indexA, indexB]).map(function (item) { + return item.line; + }), + _getGroupLines$map2 = _slicedToArray(_getGroupLines$map, 2), + a = _getGroupLines$map2[0], + b = _getGroupLines$map2[1]; + + _i2 = _i3; + return a - b; + }; + + var notColliding = function notColliding() { + for (var _len2 = arguments.length, indexPairs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + indexPairs[_key2] = arguments[_key2]; + } + + return indexPairs.map(getGroupLines).every(function (lines) { + return !_this2.checkCollision.apply(_this2, _toConsumableArray(lines)); + }); + }; // Set columns for the lines in this group: + + + var groupLength = groupEnd - groupStart + 1; // Set the accidental column for each line of the group + + var endCase = _this2.checkCollision(lineList[groupStart], lineList[groupEnd]) ? 'a' : 'b'; + + switch (groupLength) { + case 3: + if (endCase === 'a' && lineDifference(1, 2) === 0.5 && lineDifference(0, 1) !== 0.5) { + endCase = 'second_on_bottom'; + } + + break; + + case 4: + if (notColliding([0, 2], [1, 3])) { + endCase = 'spaced_out_tetrachord'; + } + + break; + + case 5: + if (endCase === 'b' && notColliding([1, 3])) { + endCase = 'spaced_out_pentachord'; + + if (notColliding([0, 2], [2, 4])) { + endCase = 'very_spaced_out_pentachord'; + } + } + + break; + + case 6: + if (notColliding([0, 3], [1, 4], [2, 5])) { + endCase = 'spaced_out_hexachord'; + } + + if (notColliding([0, 2], [2, 4], [1, 3], [3, 5])) { + endCase = 'very_spaced_out_hexachord'; + } + + break; + + default: + break; + } + + var groupMember = void 0; + var column = void 0; // If the group contains more than seven members, use ascending parallel lines + // of accidentals, using as few columns as possible while avoiding collisions. + + if (groupLength >= 7) { + // First, determine how many columns to use: + var patternLength = 2; + var collisionDetected = true; + + while (collisionDetected === true) { + collisionDetected = false; + + for (var line = 0; line + patternLength < lineList.length; line++) { + if (_this2.checkCollision(lineList[line], lineList[line + patternLength])) { + collisionDetected = true; + patternLength++; + break; + } + } + } // Then, assign a column to each line of accidentals + + + for (groupMember = _i3; groupMember <= groupEnd; groupMember++) { + column = (groupMember - _i3) % patternLength + 1; + lineList[groupMember].column = column; + totalColumns = totalColumns > column ? totalColumns : column; + } // Otherwise, if the group contains fewer than seven members, use the layouts from + // the accidentalsColumnsTable housed in tables.js. + + } else { + for (groupMember = _i3; groupMember <= groupEnd; groupMember++) { + column = _tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].accidentalColumnsTable[groupLength][endCase][groupMember - _i3]; + lineList[groupMember].column = column; + totalColumns = totalColumns > column ? totalColumns : column; + } + } // Increment i to the last note that was set, so that if a lower set of notes + // does not conflict at all with this group, it can have its own classic shape. + + + _i3 = groupEnd; + _i2 = _i3; + }; + + for (var _i2 = 0; _i2 < lineList.length; _i2++) { + _loop(_i2); + } // ### Convert Columns to x_offsets + // + // This keeps columns aligned, even if they have different accidentals within them + // which sometimes results in a larger x_offset than is an accidental might need + // to preserve the symmetry of the accidental shape. + // + // Neither A.C. Vinci nor G. Read address this, and it typically only happens in + // music with complex chord clusters. + // + // TODO (?): Optionally allow closer compression of accidentals, instead of forcing + // parallel columns. + // track each column's max width, which will be used as initial shift of later columns: + + + var columnWidths = []; + var columnXOffsets = []; + + for (var _i4 = 0; _i4 <= totalColumns; _i4++) { + columnWidths[_i4] = 0; + columnXOffsets[_i4] = 0; + } + + columnWidths[0] = accShift + leftShift; + columnXOffsets[0] = accShift + leftShift; // Fill columnWidths with widest needed x-space; + // this is what keeps the columns parallel. + + lineList.forEach(function (line) { + if (line.width > columnWidths[line.column]) columnWidths[line.column] = line.width; + }); + + for (var _i5 = 1; _i5 < columnWidths.length; _i5++) { + // this column's offset = this column's width + previous column's offset + columnXOffsets[_i5] = columnWidths[_i5] + columnXOffsets[_i5 - 1]; + } + + var totalShift = columnXOffsets[columnXOffsets.length - 1]; // Set the xShift for each accidental according to column offsets: + + var accCount = 0; + lineList.forEach(function (line) { + var lineWidth = 0; + var lastAccOnLine = accCount + line.numAcc; // handle all of the accidentals on a given line: + + for (accCount; accCount < lastAccOnLine; accCount++) { + var xShift = columnXOffsets[line.column - 1] + lineWidth; + accList[accCount].acc.setXShift(xShift); // keep track of the width of accidentals we've added so far, so that when + // we loop, we add space for them. + + lineWidth += accList[accCount].acc.getWidth() + accidentalSpacing; + L('Line, accCount, shift: ', line.line, accCount, xShift); + } + }); // update the overall layout with the full width of the accidental shapes: + + state.left_shift += totalShift; + } // Helper function to determine whether two lines of accidentals collide vertically + + }, { + key: "checkCollision", + value: function checkCollision(line1, line2) { + var clearance = line2.line - line1.line; + var clearanceRequired = 3; // But less clearance is required for certain accidentals: b, bb and ##. + + if (clearance > 0) { + // then line 2 is on top + clearanceRequired = line2.flatLine || line2.dblSharpLine ? 2.5 : 3.0; + if (line1.dblSharpLine) clearance -= 0.5; + } else { + // line 1 is on top + clearanceRequired = line1.flatLine || line1.dblSharpLine ? 2.5 : 3.0; + if (line2.dblSharpLine) clearance -= 0.5; + } + + var collision = Math.abs(clearance) < clearanceRequired; + L('Line_1, Line_2, Collision: ', line1.line, line2.line, collision); + return collision; + } // Use this method to automatically apply accidentals to a set of `voices`. + // The accidentals will be remembered between all the voices provided. + // Optionally, you can also provide an initial `keySignature`. + + }, { + key: "applyAccidentals", + value: function applyAccidentals(voices, keySignature) { + var tickPositions = []; + var tickNoteMap = {}; // Sort the tickables in each voice by their tick position in the voice + + voices.forEach(function (voice) { + var tickPosition = new _fraction__WEBPACK_IMPORTED_MODULE_1__["Fraction"](0, 1); + var notes = voice.getTickables(); + notes.forEach(function (note) { + if (note.shouldIgnoreTicks()) return; + var notesAtPosition = tickNoteMap[tickPosition.value()]; + + if (!notesAtPosition) { + tickPositions.push(tickPosition.value()); + tickNoteMap[tickPosition.value()] = [note]; + } else { + notesAtPosition.push(note); + } + + tickPosition.add(note.getTicks()); + }); + }); + var music = new _music__WEBPACK_IMPORTED_MODULE_3__["Music"](); // Default key signature is C major + + if (!keySignature) keySignature = 'C'; // Get the scale map, which represents the current state of each pitch + + var scaleMap = music.createScaleMap(keySignature); + tickPositions.forEach(function (tick) { + var notes = tickNoteMap[tick]; // Array to store all pitches that modified accidental states + // at this tick position + + var modifiedPitches = []; + + var processNote = function processNote(note) { + if (note.isRest() || note.shouldIgnoreTicks()) return; // Go through each key and determine if an accidental should be + // applied + + note.keys.forEach(function (keyString, keyIndex) { + var key = music.getNoteParts(keyString.split('/')[0]); // Force a natural for every key without an accidental + + var accidentalString = key.accidental || 'n'; + var pitch = key.root + accidentalString; // Determine if the current pitch has the same accidental + // as the scale state + + var sameAccidental = scaleMap[key.root] === pitch; // Determine if an identical pitch in the chord already + // modified the accidental state + + var previouslyModified = modifiedPitches.indexOf(pitch) > -1; // Add the accidental to the StaveNote + + if (!sameAccidental || sameAccidental && previouslyModified) { + // Modify the scale map so that the root pitch has an + // updated state + scaleMap[key.root] = pitch; // Create the accidental + + var accidental = new Accidental(accidentalString); // Attach the accidental to the StaveNote + + note.addAccidental(keyIndex, accidental); // Add the pitch to list of pitches that modified accidentals + + modifiedPitches.push(pitch); + } + }); // process grace notes + + note.getModifiers().forEach(function (modifier) { + if (modifier.getCategory() === 'gracenotegroups') { + modifier.getGraceNotes().forEach(processNote); + } + }); + }; + + notes.forEach(processNote); + }); + } // Create accidental. `type` can be a value from the + // `Vex.Flow.accidentalCodes.accidentals` table in `tables.js`. For + // example: `#`, `##`, `b`, `n`, etc. + + }, { + key: "CATEGORY", + get: function get() { + return 'accidentals'; + } + }]); + + function Accidental() { + var _this; + + var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + + _classCallCheck(this, Accidental); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Accidental).call(this)); + + _this.setAttribute('type', 'Accidental'); + + L('New accidental: ', type); + _this.note = null; // The `index` points to a specific note in a chord. + + _this.index = null; + _this.type = type; + _this.position = _modifier__WEBPACK_IMPORTED_MODULE_4__["Modifier"].Position.LEFT; + _this.render_options = { + // Font size for glyphs + font_scale: 38, + // Length of stroke across heads above or below the stave. + stroke_px: 3, + // Padding between accidental and parentheses on each side + parenLeftPadding: 2, + parenRightPadding: 2 + }; + _this.accidental = _tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].accidentalCodes(_this.type); + + if (!_this.accidental) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('ArgumentError', "Unknown accidental type: ".concat(type)); + } // Cautionary accidentals have parentheses around them + + + _this.cautionary = false; + _this.parenLeft = null; + _this.parenRight = null; + + _this.reset(); + + return _this; + } + + _createClass(Accidental, [{ + key: "reset", + value: function reset() { + var fontScale = this.render_options.font_scale; + this.glyph = new _glyph__WEBPACK_IMPORTED_MODULE_5__["Glyph"](this.accidental.code, fontScale); + this.glyph.setOriginX(1.0); + + if (this.cautionary) { + this.parenLeft = new _glyph__WEBPACK_IMPORTED_MODULE_5__["Glyph"](_tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].accidentalCodes('{').code, fontScale); + this.parenRight = new _glyph__WEBPACK_IMPORTED_MODULE_5__["Glyph"](_tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].accidentalCodes('}').code, fontScale); + this.parenLeft.setOriginX(1.0); + this.parenRight.setOriginX(1.0); + } + } + }, { + key: "getCategory", + value: function getCategory() { + return Accidental.CATEGORY; + } + }, { + key: "getWidth", + value: function getWidth() { + var parenWidth = this.cautionary ? getGlyphWidth(this.parenLeft) + getGlyphWidth(this.parenRight) + this.render_options.parenLeftPadding + this.render_options.parenRightPadding : 0; + return getGlyphWidth(this.glyph) + parenWidth; + } // Attach this accidental to `note`, which must be a `StaveNote`. + + }, { + key: "setNote", + value: function setNote(note) { + if (!note) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('ArgumentError', "Bad note value: ".concat(note)); + } + + this.note = note; // Accidentals attached to grace notes are rendered smaller. + + if (this.note.getCategory() === 'gracenotes') { + this.render_options.font_scale = 25; + this.reset(); + } + } // If called, draws parenthesis around accidental. + + }, { + key: "setAsCautionary", + value: function setAsCautionary() { + this.cautionary = true; + this.render_options.font_scale = 28; + this.reset(); + return this; + } // Render accidental onto canvas. + + }, { + key: "draw", + value: function draw() { + var context = this.context, + type = this.type, + position = this.position, + note = this.note, + index = this.index, + cautionary = this.cautionary, + x_shift = this.x_shift, + y_shift = this.y_shift, + glyph = this.glyph, + parenLeft = this.parenLeft, + parenRight = this.parenRight, + _this$render_options = this.render_options, + parenLeftPadding = _this$render_options.parenLeftPadding, + parenRightPadding = _this$render_options.parenRightPadding; + this.checkContext(); + + if (!(note && index != null)) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoAttachedNote', "Can't draw accidental without a note and index."); + } // Figure out the start `x` and `y` coordinates for note and index. + + + var start = note.getModifierStartXY(position, index); + var accX = start.x + x_shift; + var accY = start.y + y_shift; + L('Rendering: ', type, accX, accY); + + if (!cautionary) { + glyph.render(context, accX, accY); + } else { + // Render the accidental in parentheses. + parenRight.render(context, accX, accY); + accX -= getGlyphWidth(parenRight); + accX -= parenRightPadding; + accX -= this.accidental.parenRightPaddingAdjustment; + glyph.render(context, accX, accY); + accX -= getGlyphWidth(glyph); + accX -= parenLeftPadding; + parenLeft.render(context, accX, accY); + } + + this.setRendered(); + } + }]); + + return Accidental; +}(_modifier__WEBPACK_IMPORTED_MODULE_4__["Modifier"]); + +/***/ }), + +/***/ "./src/annotation.js": +/*!***************************!*\ + !*** ./src/annotation.js ***! + \***************************/ +/*! exports provided: Annotation */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Annotation", function() { return Annotation; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifier */ "./src/modifier.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// This file implements text annotations as modifiers that can be attached to +// notes. +// +// See `tests/annotation_tests.js` for usage examples. + + + // To enable logging for this class. Set `Vex.Flow.Annotation.DEBUG` to `true`. + +function L() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (Annotation.DEBUG) _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].L('Vex.Flow.Annotation', args); +} + +var Annotation = +/*#__PURE__*/ +function (_Modifier) { + _inherits(Annotation, _Modifier); + + _createClass(Annotation, null, [{ + key: "format", + // Arrange annotations within a `ModifierContext` + value: function format(annotations, state) { + if (!annotations || annotations.length === 0) return false; + var width = 0; + + for (var i = 0; i < annotations.length; ++i) { + var annotation = annotations[i]; + width = Math.max(annotation.getWidth(), width); + + if (annotation.getPosition() === _modifier__WEBPACK_IMPORTED_MODULE_2__["Modifier"].Position.ABOVE) { + annotation.setTextLine(state.top_text_line); + state.top_text_line++; + } else { + annotation.setTextLine(state.text_line); + state.text_line++; + } + } + + state.left_shift += width / 2; + state.right_shift += width / 2; + return true; + } // ## Prototype Methods + // + // Annotations inherit from `Modifier` and is positioned correctly when + // in a `ModifierContext`. + // Create a new `Annotation` with the string `text`. + + }, { + key: "CATEGORY", + get: function get() { + return 'annotations'; + } // Text annotations can be positioned and justified relative to the note. + + }, { + key: "Justify", + get: function get() { + return { + LEFT: 1, + CENTER: 2, + RIGHT: 3, + CENTER_STEM: 4 + }; + } + }, { + key: "JustifyString", + get: function get() { + return { + left: Annotation.Justify.LEFT, + right: Annotation.Justify.RIGHT, + center: Annotation.Justify.CENTER, + centerStem: Annotation.Justify.CENTER_STEM + }; + } + }, { + key: "VerticalJustify", + get: function get() { + return { + TOP: 1, + CENTER: 2, + BOTTOM: 3, + CENTER_STEM: 4 + }; + } + }, { + key: "VerticalJustifyString", + get: function get() { + return { + above: Annotation.VerticalJustify.TOP, + top: Annotation.VerticalJustify.TOP, + below: Annotation.VerticalJustify.BOTTOM, + bottom: Annotation.VerticalJustify.BOTTOM, + center: Annotation.VerticalJustify.CENTER, + centerStem: Annotation.VerticalJustify.CENTER_STEM + }; + } + }]); + + function Annotation(text) { + var _this; + + _classCallCheck(this, Annotation); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Annotation).call(this)); + + _this.setAttribute('type', 'Annotation'); + + _this.note = null; + _this.index = null; + _this.text = text; + _this.justification = Annotation.Justify.CENTER; + _this.vert_justification = Annotation.VerticalJustify.TOP; + _this.font = { + family: 'Arial', + size: 10, + weight: '' + }; // The default width is calculated from the text. + + _this.setWidth(_tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].textWidth(text)); + + return _this; + } + + _createClass(Annotation, [{ + key: "getCategory", + value: function getCategory() { + return Annotation.CATEGORY; + } // Set font family, size, and weight. E.g., `Arial`, `10pt`, `Bold`. + + }, { + key: "setFont", + value: function setFont(family, size, weight) { + this.font = { + family: family, + size: size, + weight: weight + }; + return this; + } // Set vertical position of text (above or below stave). `just` must be + // a value in `Annotation.VerticalJustify`. + + }, { + key: "setVerticalJustification", + value: function setVerticalJustification(just) { + this.vert_justification = typeof just === 'string' ? Annotation.VerticalJustifyString[just] : just; + return this; + } // Get and set horizontal justification. `justification` is a value in + // `Annotation.Justify`. + + }, { + key: "getJustification", + value: function getJustification() { + return this.justification; + } + }, { + key: "setJustification", + value: function setJustification(just) { + this.justification = typeof just === 'string' ? Annotation.JustifyString[just] : just; + return this; + } // Render text beside the note. + + }, { + key: "draw", + value: function draw() { + this.checkContext(); + + if (!this.note) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoNoteForAnnotation', "Can't draw text annotation without an attached note."); + } + + this.setRendered(); + var start = this.note.getModifierStartXY(_modifier__WEBPACK_IMPORTED_MODULE_2__["Modifier"].Position.ABOVE, this.index); // We're changing context parameters. Save current state. + + this.context.save(); + this.context.setFont(this.font.family, this.font.size, this.font.weight); + var text_width = this.context.measureText(this.text).width; // Estimate text height to be the same as the width of an 'm'. + // + // This is a hack to work around the inability to measure text height + // in HTML5 Canvas (and SVG). + + var text_height = this.context.measureText('m').width; + var x; + var y; + + if (this.justification === Annotation.Justify.LEFT) { + x = start.x; + } else if (this.justification === Annotation.Justify.RIGHT) { + x = start.x - text_width; + } else if (this.justification === Annotation.Justify.CENTER) { + x = start.x - text_width / 2; + } else + /* CENTER_STEM */ + { + x = this.note.getStemX() - text_width / 2; + } + + var stem_ext; + var spacing; + var has_stem = this.note.hasStem(); + var stave = this.note.getStave(); // The position of the text varies based on whether or not the note + // has a stem. + + if (has_stem) { + stem_ext = this.note.getStem().getExtents(); + spacing = stave.getSpacingBetweenLines(); + } + + if (this.vert_justification === Annotation.VerticalJustify.BOTTOM) { + // HACK: We need to compensate for the text's height since its origin + // is bottom-right. + y = stave.getYForBottomText(this.text_line + _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].TEXT_HEIGHT_OFFSET_HACK); + + if (has_stem) { + var stem_base = this.note.getStemDirection() === 1 ? stem_ext.baseY : stem_ext.topY; + y = Math.max(y, stem_base + spacing * (this.text_line + 2)); + } + } else if (this.vert_justification === Annotation.VerticalJustify.CENTER) { + var yt = this.note.getYForTopText(this.text_line) - 1; + var yb = stave.getYForBottomText(this.text_line); + y = yt + (yb - yt) / 2 + text_height / 2; + } else if (this.vert_justification === Annotation.VerticalJustify.TOP) { + y = Math.min(stave.getYForTopText(this.text_line), this.note.getYs()[0] - 10); + + if (has_stem) { + y = Math.min(y, stem_ext.topY - 5 - spacing * this.text_line); + } + } else + /* CENTER_STEM */ + { + var extents = this.note.getStemExtents(); + y = extents.topY + (extents.baseY - extents.topY) / 2 + text_height / 2; + } + + L('Rendering annotation: ', this.text, x, y); + this.context.fillText(this.text, x, y); + this.context.restore(); + } + }]); + + return Annotation; +}(_modifier__WEBPACK_IMPORTED_MODULE_2__["Modifier"]); + +/***/ }), + +/***/ "./src/articulation.js": +/*!*****************************!*\ + !*** ./src/articulation.js ***! + \*****************************/ +/*! exports provided: Articulation */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Articulation", function() { return Articulation; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifier */ "./src/modifier.js"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./glyph */ "./src/glyph.js"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stem */ "./src/stem.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + +function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + +function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Larry Kuhns. +// +// ## Description +// +// This file implements articulations and accents as modifiers that can be +// attached to notes. The complete list of articulations is available in +// `tables.js` under `Vex.Flow.articulationCodes`. +// +// See `tests/articulation_tests.js` for usage examples. + + + + + // To enable logging for this class. Set `Vex.Flow.Articulation.DEBUG` to `true`. + +function L() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (Articulation.DEBUG) _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].L('Vex.Flow.Articulation', args); +} + +var _Modifier$Position = _modifier__WEBPACK_IMPORTED_MODULE_2__["Modifier"].Position, + ABOVE = _Modifier$Position.ABOVE, + BELOW = _Modifier$Position.BELOW; + +var roundToNearestHalf = function roundToNearestHalf(mathFn, value) { + return mathFn(value / 0.5) * 0.5; +}; // This includes both staff and ledger lines + + +var isWithinLines = function isWithinLines(line, position) { + return position === ABOVE ? line <= 5 : line >= 1; +}; + +var getRoundingFunction = function getRoundingFunction(line, position) { + if (isWithinLines(line, position)) { + if (position === ABOVE) { + return Math.ceil; + } else { + return Math.floor; + } + } else { + return Math.round; + } +}; + +var snapLineToStaff = function snapLineToStaff(canSitBetweenLines, line, position, offsetDirection) { + // Initially, snap to nearest staff line or space + var snappedLine = roundToNearestHalf(getRoundingFunction(line, position), line); + var canSnapToStaffSpace = canSitBetweenLines && isWithinLines(snappedLine, position); + var onStaffLine = snappedLine % 1 === 0; + + if (canSnapToStaffSpace && onStaffLine) { + var HALF_STAFF_SPACE = 0.5; + return snappedLine + HALF_STAFF_SPACE * -offsetDirection; + } else { + return snappedLine; + } +}; + +var isStaveNote = function isStaveNote(note) { + var noteCategory = note.getCategory(); + return noteCategory === 'stavenotes' || noteCategory === 'gracenotes'; +}; + +var getTopY = function getTopY(note, textLine) { + var stave = note.getStave(); + var stemDirection = note.getStemDirection(); + + var _note$getStemExtents = note.getStemExtents(), + stemTipY = _note$getStemExtents.topY, + stemBaseY = _note$getStemExtents.baseY; + + if (isStaveNote(note)) { + if (note.hasStem()) { + if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_4__["Stem"].UP) { + return stemTipY; + } else { + return stemBaseY; + } + } else { + return Math.min.apply(Math, _toConsumableArray(note.getYs())); + } + } else if (note.getCategory() === 'tabnotes') { + if (note.hasStem()) { + if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_4__["Stem"].UP) { + return stemTipY; + } else { + return stave.getYForTopText(textLine); + } + } else { + return stave.getYForTopText(textLine); + } + } else { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes'); + } +}; + +var getBottomY = function getBottomY(note, textLine) { + var stave = note.getStave(); + var stemDirection = note.getStemDirection(); + + var _note$getStemExtents2 = note.getStemExtents(), + stemTipY = _note$getStemExtents2.topY, + stemBaseY = _note$getStemExtents2.baseY; + + if (isStaveNote(note)) { + if (note.hasStem()) { + if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_4__["Stem"].UP) { + return stemBaseY; + } else { + return stemTipY; + } + } else { + return Math.max.apply(Math, _toConsumableArray(note.getYs())); + } + } else if (note.getCategory() === 'tabnotes') { + if (note.hasStem()) { + if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_4__["Stem"].UP) { + return stave.getYForBottomText(textLine); + } else { + return stemTipY; + } + } else { + return stave.getYForBottomText(textLine); + } + } else { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('UnknownCategory', 'Only can get the top and bottom ys of stavenotes and tabnotes'); + } +}; // Gets the initial offset of the articulation from the y value of the starting position. +// This is required because the top/bottom text positions already have spacing applied to +// provide a "visually pleasent" default position. However the y values provided from +// the stavenote's top/bottom do *not* have any pre-applied spacing. This function +// normalizes this asymmetry. + + +var getInitialOffset = function getInitialOffset(note, position) { + var isOnStemTip = position === ABOVE && note.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_4__["Stem"].UP || position === BELOW && note.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_4__["Stem"].DOWN; + + if (isStaveNote(note)) { + if (note.hasStem() && isOnStemTip) { + return 0.5; + } else { + // this amount is larger than the stem-tip offset because we start from + // the center of the notehead + return 1; + } + } else { + if (note.hasStem() && isOnStemTip) { + return 1; + } else { + return 0; + } + } +}; + +var Articulation = +/*#__PURE__*/ +function (_Modifier) { + _inherits(Articulation, _Modifier); + + _createClass(Articulation, null, [{ + key: "format", + // FIXME: + // Most of the complex formatting logic (ie: snapping to space) is + // actually done in .render(). But that logic belongs in this method. + // + // Unfortunately, this isn't possible because, by this point, stem lengths + // have not yet been finalized. Finalized stem lengths are required to determine the + // initial position of any stem-side articulation. + // + // This indicates that all objects should have their stave set before being + // formatted. It can't be an optional if you want accurate vertical positioning. + // Consistently positioned articulations that play nice with other modifiers + // won't be possible until we stop relying on render-time formatting. + // + // Ideally, when this function has completed, the vertical articulation positions + // should be ready to render without further adjustment. But the current state + // is far from this ideal. + value: function format(articulations, state) { + if (!articulations || articulations.length === 0) return false; + + var isAbove = function isAbove(artic) { + return artic.getPosition() === ABOVE; + }; + + var isBelow = function isBelow(artic) { + return artic.getPosition() === BELOW; + }; + + var margin = 0.5; + + var getIncrement = function getIncrement(articulation, line, position) { + return roundToNearestHalf(getRoundingFunction(line, position), articulation.glyph.getMetrics().height / 10 + margin); + }; + + articulations.filter(isAbove).forEach(function (articulation) { + articulation.setTextLine(state.top_text_line); + state.top_text_line += getIncrement(articulation, state.top_text_line, ABOVE); + }); + articulations.filter(isBelow).forEach(function (articulation) { + articulation.setTextLine(state.text_line); + state.text_line += getIncrement(articulation, state.text_line, BELOW); + }); + var width = articulations.map(function (articulation) { + return articulation.getWidth(); + }).reduce(function (maxWidth, articWidth) { + return Math.max(articWidth, maxWidth); + }); + state.left_shift += width / 2; + state.right_shift += width / 2; + return true; + } + }, { + key: "easyScoreHook", + value: function easyScoreHook(_ref, note, builder) { + var articulations = _ref.articulations; + if (!articulations) return; + var articNameToCode = { + staccato: 'a.', + tenuto: 'a-' + }; + articulations.split(',').map(function (articString) { + return articString.trim().split('.'); + }).map(function (_ref2) { + var _ref3 = _slicedToArray(_ref2, 2), + name = _ref3[0], + position = _ref3[1]; + + var artic = { + type: articNameToCode[name] + }; + if (position) artic.position = _modifier__WEBPACK_IMPORTED_MODULE_2__["Modifier"].PositionString[position]; + return builder.getFactory().Articulation(artic); + }).map(function (artic) { + return note.addModifier(0, artic); + }); + } // Create a new articulation of type `type`, which is an entry in + // `Vex.Flow.articulationCodes` in `tables.js`. + + }, { + key: "CATEGORY", + get: function get() { + return 'articulations'; + } + }, { + key: "INITIAL_OFFSET", + get: function get() { + return -0.5; + } + }]); + + function Articulation(type) { + var _this; + + _classCallCheck(this, Articulation); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Articulation).call(this)); + + _this.setAttribute('type', 'Articulation'); + + _this.note = null; + _this.index = null; + _this.type = type; + _this.position = BELOW; + _this.render_options = { + font_scale: 38 + }; + + _this.reset(); + + return _this; + } + + _createClass(Articulation, [{ + key: "reset", + value: function reset() { + this.articulation = _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].articulationCodes(this.type); + + if (!this.articulation) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('ArgumentError', "Articulation not found: ".concat(this.type)); + } + + var code = (this.position === ABOVE ? this.articulation.aboveCode : this.articulation.belowCode) || this.articulation.code; + this.glyph = new _glyph__WEBPACK_IMPORTED_MODULE_3__["Glyph"](code, this.render_options.font_scale); + this.setWidth(this.glyph.getMetrics().width); + } + }, { + key: "getCategory", + value: function getCategory() { + return Articulation.CATEGORY; + } // Render articulation in position next to note. + + }, { + key: "draw", + value: function draw() { + var _ABOVE$BELOW$position; + + var note = this.note, + index = this.index, + position = this.position, + glyph = this.glyph, + canSitBetweenLines = this.articulation.between_lines, + textLine = this.text_line, + ctx = this.context; + this.checkContext(); + + if (!note || index == null) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoAttachedNote', "Can't draw Articulation without a note and index."); + } + + this.setRendered(); + var stave = note.getStave(); + var staffSpace = stave.getSpacingBetweenLines(); + var isTab = note.getCategory() === 'tabnotes'; // Articulations are centered over/under the note head. + + var _note$getModifierStar = note.getModifierStartXY(position, index), + x = _note$getModifierStar.x; + + var shouldSitOutsideStaff = !canSitBetweenLines || isTab; + var initialOffset = getInitialOffset(note, position); + var padding = this.musicFont.lookupMetric("articulation.".concat(glyph.getCode(), ".padding"), 0); + var y = (_ABOVE$BELOW$position = {}, _defineProperty(_ABOVE$BELOW$position, ABOVE, function () { + glyph.setOrigin(0.5, 1); + var y = getTopY(note, textLine) - (textLine + initialOffset) * staffSpace; + return shouldSitOutsideStaff ? Math.min(stave.getYForTopText(Articulation.INITIAL_OFFSET), y) : y; + }), _defineProperty(_ABOVE$BELOW$position, BELOW, function () { + glyph.setOrigin(0.5, 0); + var y = getBottomY(note, textLine) + (textLine + initialOffset) * staffSpace; + return shouldSitOutsideStaff ? Math.max(stave.getYForBottomText(Articulation.INITIAL_OFFSET), y) : y; + }), _ABOVE$BELOW$position)[position](); + + if (!isTab) { + var offsetDirection = position === ABOVE ? -1 : +1; + var noteLine = isTab ? note.positions[index].str : note.getKeyProps()[index].line; + var distanceFromNote = (note.getYs()[index] - y) / staffSpace; + var articLine = distanceFromNote + noteLine; + var snappedLine = snapLineToStaff(canSitBetweenLines, articLine, position, offsetDirection); + if (isWithinLines(snappedLine, position)) glyph.setOrigin(0.5, 0.5); + y += Math.abs(snappedLine - articLine) * staffSpace * offsetDirection + padding * offsetDirection; + } + + L("Rendering articulation at (x: ".concat(x, ", y: ").concat(y, ")")); + glyph.render(ctx, x, y); + } + }]); + + return Articulation; +}(_modifier__WEBPACK_IMPORTED_MODULE_2__["Modifier"]); + +/***/ }), + +/***/ "./src/barnote.js": +/*!************************!*\ + !*** ./src/barnote.js ***! + \************************/ +/*! exports provided: BarNote */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BarNote", function() { return BarNote; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./note */ "./src/note.js"); +/* harmony import */ var _stavebarline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stavebarline */ "./src/stavebarline.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// A `BarNote` is used to render bar lines (from `barline.js`). `BarNote`s can +// be added to a voice and rendered in the middle of a stave. Since it has no +// duration, it consumes no `tick`s, and is dealt with appropriately by the formatter. +// +// See `tests/barnote_tests.js` for usage examples. + + + // To enable logging for this class. Set `Vex.Flow.BarNote.DEBUG` to `true`. + +function L() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (BarNote.DEBUG) _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].L('Vex.Flow.BarNote', args); +} + +var BarNote = +/*#__PURE__*/ +function (_Note) { + _inherits(BarNote, _Note); + + function BarNote() { + var _this$metrics$widths; + + var _this; + + var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _stavebarline__WEBPACK_IMPORTED_MODULE_2__["Barline"].type.SINGLE; + + _classCallCheck(this, BarNote); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(BarNote).call(this, { + duration: 'b' + })); + + _this.setAttribute('type', 'BarNote'); + + _this.metrics = { + widths: {} + }; + var TYPE = _stavebarline__WEBPACK_IMPORTED_MODULE_2__["Barline"].type; + _this.metrics.widths = (_this$metrics$widths = {}, _defineProperty(_this$metrics$widths, TYPE.SINGLE, 8), _defineProperty(_this$metrics$widths, TYPE.DOUBLE, 12), _defineProperty(_this$metrics$widths, TYPE.END, 15), _defineProperty(_this$metrics$widths, TYPE.REPEAT_BEGIN, 14), _defineProperty(_this$metrics$widths, TYPE.REPEAT_END, 14), _defineProperty(_this$metrics$widths, TYPE.REPEAT_BOTH, 18), _defineProperty(_this$metrics$widths, TYPE.NONE, 0), _this$metrics$widths); // Tell the formatter that bar notes have no duration. + + _this.ignore_ticks = true; + + _this.setType(type); + + return _this; + } // Get and set the type of Bar note. `type` must be one of `Vex.Flow.Barline.type`. + + + _createClass(BarNote, [{ + key: "getType", + value: function getType() { + return this.type; + } + }, { + key: "setType", + value: function setType(type) { + this.type = typeof type === 'string' ? _stavebarline__WEBPACK_IMPORTED_MODULE_2__["Barline"].typeString[type] : type; // Set width to width of relevant `Barline`. + + this.setWidth(this.metrics.widths[this.type]); + return this; + } + }, { + key: "getBoundingBox", + value: function getBoundingBox() { + return _get(_getPrototypeOf(BarNote.prototype), "getBoundingBox", this).call(this); + } + }, { + key: "addToModifierContext", + value: function addToModifierContext() { + /* overridden to ignore */ + return this; + } + }, { + key: "preFormat", + value: function preFormat() { + /* overridden to ignore */ + this.setPreFormatted(true); + return this; + } // Render note to stave. + + }, { + key: "draw", + value: function draw() { + this.checkContext(); + if (!this.stave) throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoStave', "Can't draw without a stave."); + L('Rendering bar line at: ', this.getAbsoluteX()); + var barline = new _stavebarline__WEBPACK_IMPORTED_MODULE_2__["Barline"](this.type); + barline.setX(this.getAbsoluteX()); + barline.draw(this.stave); + this.setRendered(); + } + }]); + + return BarNote; +}(_note__WEBPACK_IMPORTED_MODULE_1__["Note"]); + +/***/ }), + +/***/ "./src/beam.js": +/*!*********************!*\ + !*** ./src/beam.js ***! + \*********************/ +/*! exports provided: Beam */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Beam", function() { return Beam; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element */ "./src/element.js"); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fraction */ "./src/fraction.js"); +/* harmony import */ var _tuplet__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tuplet */ "./src/tuplet.js"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./stem */ "./src/stem.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + +function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// This file implements `Beams` that span over a set of `StemmableNotes`. + + + + + + + +function calculateStemDirection(notes) { + var lineSum = 0; + notes.forEach(function (note) { + if (note.keyProps) { + note.keyProps.forEach(function (keyProp) { + lineSum += keyProp.line - 3; + }); + } + }); + + if (lineSum >= 0) { + return _stem__WEBPACK_IMPORTED_MODULE_5__["Stem"].DOWN; + } + + return _stem__WEBPACK_IMPORTED_MODULE_5__["Stem"].UP; +} + +var getStemSlope = function getStemSlope(firstNote, lastNote) { + var firstStemTipY = firstNote.getStemExtents().topY; + var firstStemX = firstNote.getStemX(); + var lastStemTipY = lastNote.getStemExtents().topY; + var lastStemX = lastNote.getStemX(); + return (lastStemTipY - firstStemTipY) / (lastStemX - firstStemX); +}; + +var BEAM_LEFT = 'L'; +var BEAM_RIGHT = 'R'; +var BEAM_BOTH = 'B'; +var Beam = +/*#__PURE__*/ +function (_Element) { + _inherits(Beam, _Element); + + _createClass(Beam, null, [{ + key: "getDefaultBeamGroups", + // Gets the default beam groups for a provided time signature. + // Attempts to guess if the time signature is not found in table. + // Currently this is fairly naive. + value: function getDefaultBeamGroups(time_sig) { + if (!time_sig || time_sig === 'c') { + time_sig = '4/4'; + } + + var defaults = { + '1/2': ['1/2'], + '2/2': ['1/2'], + '3/2': ['1/2'], + '4/2': ['1/2'], + '1/4': ['1/4'], + '2/4': ['1/4'], + '3/4': ['1/4'], + '4/4': ['1/4'], + '1/8': ['1/8'], + '2/8': ['2/8'], + '3/8': ['3/8'], + '4/8': ['2/8'], + '1/16': ['1/16'], + '2/16': ['2/16'], + '3/16': ['3/16'], + '4/16': ['2/16'] + }; + var groups = defaults[time_sig]; + + if (groups === undefined) { + // If no beam groups found, naively determine + // the beam groupings from the time signature + var beatTotal = parseInt(time_sig.split('/')[0], 10); + var beatValue = parseInt(time_sig.split('/')[1], 10); + var tripleMeter = beatTotal % 3 === 0; + + if (tripleMeter) { + return [new _fraction__WEBPACK_IMPORTED_MODULE_3__["Fraction"](3, beatValue)]; + } else if (beatValue > 4) { + return [new _fraction__WEBPACK_IMPORTED_MODULE_3__["Fraction"](2, beatValue)]; + } else if (beatValue <= 4) { + return [new _fraction__WEBPACK_IMPORTED_MODULE_3__["Fraction"](1, beatValue)]; + } + } else { + return groups.map(function (group) { + return new _fraction__WEBPACK_IMPORTED_MODULE_3__["Fraction"]().parse(group); + }); + } + + return [new _fraction__WEBPACK_IMPORTED_MODULE_3__["Fraction"](1, 4)]; + } // A helper function to automatically build basic beams for a voice. For more + // complex auto-beaming use `Beam.generateBeams()`. + // + // Parameters: + // * `voice` - The voice to generate the beams for + // * `stem_direction` - A stem direction to apply to the entire voice + // * `groups` - An array of `Fraction` representing beat groupings for the beam + + }, { + key: "applyAndGetBeams", + value: function applyAndGetBeams(voice, stem_direction, groups) { + return Beam.generateBeams(voice.getTickables(), { + groups: groups, + stem_direction: stem_direction + }); + } // A helper function to autimatically build beams for a voice with + // configuration options. + // + // Example configuration object: + // + // ``` + // config = { + // groups: [new Vex.Flow.Fraction(2, 8)], + // stem_direction: -1, + // beam_rests: true, + // beam_middle_only: true, + // show_stemlets: false + // }; + // ``` + // + // Parameters: + // * `notes` - An array of notes to create the beams for + // * `config` - The configuration object + // * `groups` - Array of `Fractions` that represent the beat structure to beam the notes + // * `stem_direction` - Set to apply the same direction to all notes + // * `beam_rests` - Set to `true` to include rests in the beams + // * `beam_middle_only` - Set to `true` to only beam rests in the middle of the beat + // * `show_stemlets` - Set to `true` to draw stemlets for rests + // * `maintain_stem_directions` - Set to `true` to not apply new stem directions + // + + }, { + key: "generateBeams", + value: function generateBeams(notes, config) { + if (!config) config = {}; + + if (!config.groups || !config.groups.length) { + config.groups = [new _fraction__WEBPACK_IMPORTED_MODULE_3__["Fraction"](2, 8)]; + } // Convert beam groups to tick amounts + + + var tickGroups = config.groups.map(function (group) { + if (!group.multiply) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('InvalidBeamGroups', 'The beam groups must be an array of Vex.Flow.Fractions'); + } + + return group.clone().multiply(_tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].RESOLUTION, 1); + }); + var unprocessedNotes = notes; + var currentTickGroup = 0; + var noteGroups = []; + var currentGroup = []; + + function getTotalTicks(vf_notes) { + return vf_notes.reduce(function (memo, note) { + return note.getTicks().clone().add(memo); + }, new _fraction__WEBPACK_IMPORTED_MODULE_3__["Fraction"](0, 1)); + } + + function nextTickGroup() { + if (tickGroups.length - 1 > currentTickGroup) { + currentTickGroup += 1; + } else { + currentTickGroup = 0; + } + } + + function createGroups() { + var nextGroup = []; + unprocessedNotes.forEach(function (unprocessedNote) { + nextGroup = []; + + if (unprocessedNote.shouldIgnoreTicks()) { + noteGroups.push(currentGroup); + currentGroup = nextGroup; + return; // Ignore untickables (like bar notes) + } + + currentGroup.push(unprocessedNote); + var ticksPerGroup = tickGroups[currentTickGroup].clone(); + var totalTicks = getTotalTicks(currentGroup); // Double the amount of ticks in a group, if it's an unbeamable tuplet + + var unbeamable = _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].durationToNumber(unprocessedNote.duration) < 8; + + if (unbeamable && unprocessedNote.tuplet) { + ticksPerGroup.numerator *= 2; + } // If the note that was just added overflows the group tick total + + + if (totalTicks.greaterThan(ticksPerGroup)) { + // If the overflow note can be beamed, start the next group + // with it. Unbeamable notes leave the group overflowed. + if (!unbeamable) { + nextGroup.push(currentGroup.pop()); + } + + noteGroups.push(currentGroup); + currentGroup = nextGroup; + nextTickGroup(); + } else if (totalTicks.equals(ticksPerGroup)) { + noteGroups.push(currentGroup); + currentGroup = nextGroup; + nextTickGroup(); + } + }); // Adds any remainder notes + + if (currentGroup.length > 0) { + noteGroups.push(currentGroup); + } + } + + function getBeamGroups() { + return noteGroups.filter(function (group) { + if (group.length > 1) { + var beamable = true; + group.forEach(function (note) { + if (note.getIntrinsicTicks() >= _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].durationToTicks('4')) { + beamable = false; + } + }); + return beamable; + } + + return false; + }); + } // Splits up groups by Rest + + + function sanitizeGroups() { + var sanitizedGroups = []; + noteGroups.forEach(function (group) { + var tempGroup = []; + group.forEach(function (note, index, group) { + var isFirstOrLast = index === 0 || index === group.length - 1; + var prevNote = group[index - 1]; + var breaksOnEachRest = !config.beam_rests && note.isRest(); + var breaksOnFirstOrLastRest = config.beam_rests && config.beam_middle_only && note.isRest() && isFirstOrLast; + var breakOnStemChange = false; + + if (config.maintain_stem_directions && prevNote && !note.isRest() && !prevNote.isRest()) { + var prevDirection = prevNote.getStemDirection(); + var currentDirection = note.getStemDirection(); + breakOnStemChange = currentDirection !== prevDirection; + } + + var isUnbeamableDuration = parseInt(note.duration, 10) < 8; // Determine if the group should be broken at this note + + var shouldBreak = breaksOnEachRest || breaksOnFirstOrLastRest || breakOnStemChange || isUnbeamableDuration; + + if (shouldBreak) { + // Add current group + if (tempGroup.length > 0) { + sanitizedGroups.push(tempGroup); + } // Start a new group. Include the current note if the group + // was broken up by stem direction, as that note needs to start + // the next group of notes + + + tempGroup = breakOnStemChange ? [note] : []; + } else { + // Add note to group + tempGroup.push(note); + } + }); // If there is a remaining group, add it as well + + if (tempGroup.length > 0) { + sanitizedGroups.push(tempGroup); + } + }); + noteGroups = sanitizedGroups; + } + + function formatStems() { + noteGroups.forEach(function (group) { + var stemDirection; + + if (config.maintain_stem_directions) { + var _note = findFirstNote(group); + + stemDirection = _note ? _note.getStemDirection() : _stem__WEBPACK_IMPORTED_MODULE_5__["Stem"].UP; + } else { + if (config.stem_direction) { + stemDirection = config.stem_direction; + } else { + stemDirection = calculateStemDirection(group); + } + } + + applyStemDirection(group, stemDirection); + }); + } + + function findFirstNote(group) { + for (var _i = 0; _i < group.length; _i++) { + var _note2 = group[_i]; + + if (!_note2.isRest()) { + return _note2; + } + } + + return false; + } + + function applyStemDirection(group, direction) { + group.forEach(function (note) { + note.setStemDirection(direction); + }); + } // Get all of the tuplets in all of the note groups + + + function getTuplets() { + var uniqueTuplets = []; // Go through all of the note groups and inspect for tuplets + + noteGroups.forEach(function (group) { + var tuplet = null; + group.forEach(function (note) { + if (note.tuplet && tuplet !== note.tuplet) { + tuplet = note.tuplet; + uniqueTuplets.push(tuplet); + } + }); + }); + return uniqueTuplets; + } // Using closures to store the variables throughout the various functions + // IMO Keeps it this process lot cleaner - but not super consistent with + // the rest of the API's style - Silverwolf90 (Cyril) + + + createGroups(); + sanitizeGroups(); + formatStems(); // Get the notes to be beamed + + var beamedNoteGroups = getBeamGroups(); // Get the tuplets in order to format them accurately + + var allTuplets = getTuplets(); // Create a Vex.Flow.Beam from each group of notes to be beamed + + var beams = []; + beamedNoteGroups.forEach(function (group) { + var beam = new Beam(group); + + if (config.show_stemlets) { + beam.render_options.show_stemlets = true; + } + + if (config.secondary_breaks) { + beam.render_options.secondary_break_ticks = _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].durationToTicks(config.secondary_breaks); + } + + if (config.flat_beams === true) { + beam.render_options.flat_beams = true; + beam.render_options.flat_beam_offset = config.flat_beam_offset; + } + + beams.push(beam); + }); // Reformat tuplets + + allTuplets.forEach(function (tuplet) { + // Set the tuplet location based on the stem direction + var direction = tuplet.notes[0].stem_direction === _stem__WEBPACK_IMPORTED_MODULE_5__["Stem"].DOWN ? _tuplet__WEBPACK_IMPORTED_MODULE_4__["Tuplet"].LOCATION_BOTTOM : _tuplet__WEBPACK_IMPORTED_MODULE_4__["Tuplet"].LOCATION_TOP; + tuplet.setTupletLocation(direction); // If any of the notes in the tuplet are not beamed, draw a bracket. + + var bracketed = false; + + for (var _i2 = 0; _i2 < tuplet.notes.length; _i2++) { + var _note3 = tuplet.notes[_i2]; + + if (_note3.beam === null) { + bracketed = true; + break; + } + } + + tuplet.setBracketed(bracketed); + }); + return beams; + } + }]); + + function Beam(notes, auto_stem) { + var _this; + + _classCallCheck(this, Beam); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Beam).call(this)); + + _this.setAttribute('type', 'Beam'); + + if (!notes || notes === []) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('BadArguments', 'No notes provided for beam.'); + } + + if (notes.length === 1) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('BadArguments', 'Too few notes for beam.'); + } // Validate beam line, direction and ticks. + + + _this.ticks = notes[0].getIntrinsicTicks(); + + if (_this.ticks >= _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].durationToTicks('4')) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('BadArguments', 'Beams can only be applied to notes shorter than a quarter note.'); + } + + var i; // shared iterator + + var note; + _this.stem_direction = _stem__WEBPACK_IMPORTED_MODULE_5__["Stem"].UP; + + for (i = 0; i < notes.length; ++i) { + note = notes[i]; + + if (note.hasStem()) { + _this.stem_direction = note.getStemDirection(); + break; + } + } + + var stem_direction = _this.stem_direction; // Figure out optimal stem direction based on given notes + + if (auto_stem && notes[0].getCategory() === 'stavenotes') { + stem_direction = calculateStemDirection(notes); + } else if (auto_stem && notes[0].getCategory() === 'tabnotes') { + // Auto Stem TabNotes + var stem_weight = notes.reduce(function (memo, note) { + return memo + note.stem_direction; + }, 0); + stem_direction = stem_weight > -1 ? _stem__WEBPACK_IMPORTED_MODULE_5__["Stem"].UP : _stem__WEBPACK_IMPORTED_MODULE_5__["Stem"].DOWN; + } // Apply stem directions and attach beam to notes + + + for (i = 0; i < notes.length; ++i) { + note = notes[i]; + + if (auto_stem) { + note.setStemDirection(stem_direction); + _this.stem_direction = stem_direction; + } + + note.setBeam(_assertThisInitialized(_this)); + } + + _this.postFormatted = false; + _this.notes = notes; + _this.beam_count = _this.getBeamCount(); + _this.break_on_indices = []; + _this.render_options = { + beam_width: 5, + max_slope: 0.25, + min_slope: -0.25, + slope_iterations: 20, + slope_cost: 100, + show_stemlets: false, + stemlet_extension: 7, + partial_beam_length: 10, + flat_beams: false, + min_flat_beam_offset: 15 + }; + return _this; + } // Get the notes in this beam + + + _createClass(Beam, [{ + key: "getNotes", + value: function getNotes() { + return this.notes; + } // Get the max number of beams in the set of notes + + }, { + key: "getBeamCount", + value: function getBeamCount() { + var beamCounts = this.notes.map(function (note) { + return note.getGlyph().beam_count; + }); + var maxBeamCount = beamCounts.reduce(function (max, beamCount) { + return beamCount > max ? beamCount : max; + }); + return maxBeamCount; + } // Set which note `indices` to break the secondary beam at + + }, { + key: "breakSecondaryAt", + value: function breakSecondaryAt(indices) { + this.break_on_indices = indices; + return this; + } // Return the y coordinate for linear function + + }, { + key: "getSlopeY", + value: function getSlopeY(x, first_x_px, first_y_px, slope) { + return first_y_px + (x - first_x_px) * slope; + } // Calculate the best possible slope for the provided notes + + }, { + key: "calculateSlope", + value: function calculateSlope() { + var notes = this.notes, + stemDirection = this.stem_direction, + _this$render_options = this.render_options, + max_slope = _this$render_options.max_slope, + min_slope = _this$render_options.min_slope, + slope_iterations = _this$render_options.slope_iterations, + slope_cost = _this$render_options.slope_cost; + var firstNote = notes[0]; + var initialSlope = getStemSlope(firstNote, notes[notes.length - 1]); + var increment = (max_slope - min_slope) / slope_iterations; + var minCost = Number.MAX_VALUE; + var bestSlope = 0; + var yShift = 0; // iterate through slope values to find best weighted fit + + for (var slope = min_slope; slope <= max_slope; slope += increment) { + var totalStemExtension = 0; + var yShiftTemp = 0; // iterate through notes, calculating y shift and stem extension + + for (var _i3 = 1; _i3 < notes.length; ++_i3) { + var _note4 = notes[_i3]; + var adjustedStemTipY = this.getSlopeY(_note4.getStemX(), firstNote.getStemX(), firstNote.getStemExtents().topY, slope) + yShiftTemp; + + var stemTipY = _note4.getStemExtents().topY; // beam needs to be shifted up to accommodate note + + + if (stemTipY * stemDirection < adjustedStemTipY * stemDirection) { + var diff = Math.abs(stemTipY - adjustedStemTipY); + yShiftTemp += diff * -stemDirection; + totalStemExtension += diff * _i3; + } else { + // beam overshoots note, account for the difference + totalStemExtension += (stemTipY - adjustedStemTipY) * stemDirection; + } + } // most engraving books suggest aiming for a slope about half the angle of the + // difference between the first and last notes' stem length; + + + var idealSlope = initialSlope / 2; + var distanceFromIdeal = Math.abs(idealSlope - slope); // This tries to align most beams to something closer to the idealSlope, but + // doesn't go crazy. To disable, set this.render_options.slope_cost = 0 + + var cost = slope_cost * distanceFromIdeal + Math.abs(totalStemExtension); // update state when a more ideal slope is found + + if (cost < minCost) { + minCost = cost; + bestSlope = slope; + yShift = yShiftTemp; + } + } + + this.slope = bestSlope; + this.y_shift = yShift; + } // Calculate a slope and y-shift for flat beams + + }, { + key: "calculateFlatSlope", + value: function calculateFlatSlope() { + var notes = this.notes, + stem_direction = this.stem_direction, + _this$render_options2 = this.render_options, + beam_width = _this$render_options2.beam_width, + min_flat_beam_offset = _this$render_options2.min_flat_beam_offset, + flat_beam_offset = _this$render_options2.flat_beam_offset; // If a flat beam offset has not yet been supplied or calculated, + // generate one based on the notes in this particular note group + + var total = 0; + var extremeY = 0; // Store the highest or lowest note here + + var extremeBeamCount = 0; // The beam count of the extreme note + + var currentExtreme = 0; + + for (var _i4 = 0; _i4 < notes.length; _i4++) { + // Total up all of the offsets so we can average them out later + var _note5 = notes[_i4]; + + var stemTipY = _note5.getStemExtents().topY; + + total += stemTipY; // Store the highest (stems-up) or lowest (stems-down) note so the + // offset can be adjusted in case the average isn't enough + + if (stem_direction === _stem__WEBPACK_IMPORTED_MODULE_5__["Stem"].DOWN && currentExtreme < stemTipY) { + currentExtreme = stemTipY; + extremeY = Math.max.apply(Math, _toConsumableArray(_note5.getYs())); + extremeBeamCount = _note5.getBeamCount(); + } else if (stem_direction === _stem__WEBPACK_IMPORTED_MODULE_5__["Stem"].UP && (currentExtreme === 0 || currentExtreme > stemTipY)) { + currentExtreme = stemTipY; + extremeY = Math.min.apply(Math, _toConsumableArray(_note5.getYs())); + extremeBeamCount = _note5.getBeamCount(); + } + } // Average the offsets to try and come up with a reasonable one that + // works for all of the notes in the beam group. + + + var offset = total / notes.length; // In case the average isn't long enough, add or subtract some more + // based on the highest or lowest note (again, based on the stem + // direction). This also takes into account the added height due to + // the width of the beams. + + var beamWidth = beam_width * 1.5; + var extremeTest = min_flat_beam_offset + extremeBeamCount * beamWidth; + var newOffset = extremeY + extremeTest * -stem_direction; + + if (stem_direction === _stem__WEBPACK_IMPORTED_MODULE_5__["Stem"].DOWN && offset < newOffset) { + offset = extremeY + extremeTest; + } else if (stem_direction === _stem__WEBPACK_IMPORTED_MODULE_5__["Stem"].UP && offset > newOffset) { + offset = extremeY - extremeTest; + } + + if (!flat_beam_offset) { + // Set the offset for the group based on the calculations above. + this.render_options.flat_beam_offset = offset; + } else if (stem_direction === _stem__WEBPACK_IMPORTED_MODULE_5__["Stem"].DOWN && offset > flat_beam_offset) { + this.render_options.flat_beam_offset = offset; + } else if (stem_direction === _stem__WEBPACK_IMPORTED_MODULE_5__["Stem"].UP && offset < flat_beam_offset) { + this.render_options.flat_beam_offset = offset; + } // for flat beams, the slope and y_shift are simply 0 + + + this.slope = 0; + this.y_shift = 0; + } + }, { + key: "getBeamYToDraw", + value: function getBeamYToDraw() { + var firstNote = this.notes[0]; + var firstStemTipY = firstNote.getStemExtents().topY; + var beamY = firstStemTipY; // For flat beams, set the first and last Y to the offset, rather than + // using the note's stem extents. + + if (this.render_options.flat_beams && this.render_options.flat_beam_offset) { + beamY = this.render_options.flat_beam_offset; + } + + return beamY; + } // Create new stems for the notes in the beam, so that each stem + // extends into the beams. + + }, { + key: "applyStemExtensions", + value: function applyStemExtensions() { + var notes = this.notes, + slope = this.slope, + y_shift = this.y_shift, + stem_direction = this.stem_direction, + beam_count = this.beam_count, + _this$render_options3 = this.render_options, + show_stemlets = _this$render_options3.show_stemlets, + stemlet_extension = _this$render_options3.stemlet_extension, + beam_width = _this$render_options3.beam_width; + var firstNote = notes[0]; + var firstStemTipY = this.getBeamYToDraw(); + var firstStemX = firstNote.getStemX(); + + for (var _i5 = 0; _i5 < notes.length; ++_i5) { + var _note6 = notes[_i5]; + + var stemX = _note6.getStemX(); + + var _note6$getStemExtents = _note6.getStemExtents(), + stemTipY = _note6$getStemExtents.topY; + + var beamedStemTipY = this.getSlopeY(stemX, firstStemX, firstStemTipY, slope) + y_shift; + + var preBeamExtension = _note6.getStem().getExtension(); + + var beamExtension = stem_direction === _stem__WEBPACK_IMPORTED_MODULE_5__["Stem"].UP ? stemTipY - beamedStemTipY : beamedStemTipY - stemTipY; + + _note6.stem.setExtension(preBeamExtension + beamExtension); + + _note6.stem.renderHeightAdjustment = -_stem__WEBPACK_IMPORTED_MODULE_5__["Stem"].WIDTH / 2; + + if (_note6.isRest() && show_stemlets) { + var beamWidth = beam_width; + var totalBeamWidth = (beam_count - 1) * beamWidth * 1.5 + beamWidth; + + _note6.stem.setVisibility(true).setStemlet(true, totalBeamWidth + stemlet_extension); + } + } + } // return upper level beam direction. + + }, { + key: "lookupBeamDirection", + value: function lookupBeamDirection(duration, prev_tick, tick, next_tick) { + if (duration === '4') { + return BEAM_LEFT; + } + + var lookup_duration = "".concat(_tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].durationToNumber(duration) / 2); + var prev_note_gets_beam = prev_tick < _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].durationToTicks(lookup_duration); + var next_note_gets_beam = next_tick < _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].durationToTicks(lookup_duration); + var note_gets_beam = tick < _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].durationToTicks(lookup_duration); + + if (prev_note_gets_beam && next_note_gets_beam && note_gets_beam) { + return BEAM_BOTH; + } else if (prev_note_gets_beam && !next_note_gets_beam && note_gets_beam) { + return BEAM_LEFT; + } else if (!prev_note_gets_beam && next_note_gets_beam && note_gets_beam) { + return BEAM_RIGHT; + } + + return this.lookupBeamDirection(lookup_duration, prev_tick, tick, next_tick); + } // Get the x coordinates for the beam lines of specific `duration` + + }, { + key: "getBeamLines", + value: function getBeamLines(duration) { + var tick_of_duration = _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].durationToTicks(duration); + var beam_lines = []; + var beam_started = false; + var current_beam = null; + var partial_beam_length = this.render_options.partial_beam_length; + var previous_should_break = false; + var tick_tally = 0; + + for (var _i6 = 0; _i6 < this.notes.length; ++_i6) { + var _note7 = this.notes[_i6]; // See if we need to break secondary beams on this note. + + var ticks = _note7.ticks.value(); + + tick_tally += ticks; + var should_break = false; // 8th note beams are always drawn. + + if (parseInt(duration, 10) >= 8) { + // First, check to see if any indices were set up through breakSecondaryAt() + should_break = this.break_on_indices.indexOf(_i6) !== -1; // If the secondary breaks were auto-configured in the render options, + // handle that as well. + + if (this.render_options.secondary_break_ticks && tick_tally >= this.render_options.secondary_break_ticks) { + tick_tally = 0; + should_break = true; + } + } + + var note_gets_beam = _note7.getIntrinsicTicks() < tick_of_duration; + var stem_x = _note7.getStemX() - _stem__WEBPACK_IMPORTED_MODULE_5__["Stem"].WIDTH / 2; // Check to see if the next note in the group will get a beam at this + // level. This will help to inform the partial beam logic below. + + var prev_note = this.notes[_i6 - 1]; + var next_note = this.notes[_i6 + 1]; + var next_note_gets_beam = next_note && next_note.getIntrinsicTicks() < tick_of_duration; + var prev_note_gets_beam = prev_note && prev_note.getIntrinsicTicks() < tick_of_duration; + var beam_alone = prev_note && next_note && note_gets_beam && !prev_note_gets_beam && !next_note_gets_beam; // const beam_alone = note_gets_beam && !prev_note_gets_beam && !next_note_gets_beam; + + if (note_gets_beam) { + // This note gets a beam at the current level + if (beam_started) { + // We're currently in the middle of a beam. Just continue it on to + // the stem X of the current note. + current_beam = beam_lines[beam_lines.length - 1]; + current_beam.end = stem_x; // If a secondary beam break is set up, end the beam right now. + + if (should_break) { + beam_started = false; + + if (next_note && !next_note_gets_beam && current_beam.end === null) { + // This note gets a beam,.but the next one does not. This means + // we need a partial pointing right. + current_beam.end = current_beam.start - partial_beam_length; + } + } + } else { + // No beam started yet. Start a new one. + current_beam = { + start: stem_x, + end: null + }; + beam_started = true; + + if (beam_alone) { + // previous and next beam exists and does not get a beam but current gets it. + var prev_tick = prev_note.getIntrinsicTicks(); + var next_tick = next_note.getIntrinsicTicks(); + + var tick = _note7.getIntrinsicTicks(); + + var beam_direction = this.lookupBeamDirection(duration, prev_tick, tick, next_tick); + + if ([BEAM_LEFT, BEAM_BOTH].includes(beam_direction)) { + current_beam.end = current_beam.start - partial_beam_length; + } else { + current_beam.end = current_beam.start + partial_beam_length; + } + } else if (!next_note_gets_beam) { + // The next note doesn't get a beam. Draw a partial. + if ((previous_should_break || _i6 === 0) && next_note) { + // This is the first note (but not the last one), or it is + // following a secondary break. Draw a partial to the right. + current_beam.end = current_beam.start + partial_beam_length; + } else { + // By default, draw a partial to the left. + current_beam.end = current_beam.start - partial_beam_length; + } + } else if (should_break) { + // This note should have a secondary break after it. Even though + // we just started a beam, it needs to end immediately. + current_beam.end = current_beam.start - partial_beam_length; + beam_started = false; + } + + beam_lines.push(current_beam); + } + } else { + // The current note does not get a beam. + beam_started = false; + } // Store the secondary break flag to inform the partial beam logic in + // the next iteration of the loop. + + + previous_should_break = should_break; + } // Add a partial beam pointing left if this is the last note in the group + + + var last_beam = beam_lines[beam_lines.length - 1]; + + if (last_beam && last_beam.end === null) { + last_beam.end = last_beam.start - partial_beam_length; + } + + return beam_lines; + } // Render the stems for each notes + + }, { + key: "drawStems", + value: function drawStems() { + var _this2 = this; + + this.notes.forEach(function (note) { + if (note.getStem()) { + note.getStem().setContext(_this2.context).draw(); + } + }, this); + } // Render the beam lines + + }, { + key: "drawBeamLines", + value: function drawBeamLines() { + this.checkContext(); + var valid_beam_durations = ['4', '8', '16', '32', '64']; + var firstNote = this.notes[0]; + var beamY = this.getBeamYToDraw(); + var firstStemX = firstNote.getStemX(); + var beamThickness = this.render_options.beam_width * this.stem_direction; // Draw the beams. + + for (var _i7 = 0; _i7 < valid_beam_durations.length; ++_i7) { + var duration = valid_beam_durations[_i7]; + var beamLines = this.getBeamLines(duration); + + for (var j = 0; j < beamLines.length; ++j) { + var beam_line = beamLines[j]; + var startBeamX = beam_line.start; + var startBeamY = this.getSlopeY(startBeamX, firstStemX, beamY, this.slope); + var lastBeamX = beam_line.end; + var lastBeamY = this.getSlopeY(lastBeamX, firstStemX, beamY, this.slope); + this.context.beginPath(); + this.context.moveTo(startBeamX, startBeamY); + this.context.lineTo(startBeamX, startBeamY + beamThickness); + this.context.lineTo(lastBeamX + 1, lastBeamY + beamThickness); + this.context.lineTo(lastBeamX + 1, lastBeamY); + this.context.closePath(); + this.context.fill(); + } + + beamY += beamThickness * 1.5; + } + } // Pre-format the beam + + }, { + key: "preFormat", + value: function preFormat() { + return this; + } // Post-format the beam. This can only be called after + // the notes in the beam have both `x` and `y` values. ie: they've + // been formatted and have staves + + }, { + key: "postFormat", + value: function postFormat() { + if (this.postFormatted) return; // Calculate a smart slope if we're not forcing the beams to be flat. + + if (this.notes[0].getCategory() === 'tabnotes' || this.render_options.flat_beams) { + this.calculateFlatSlope(); + } else { + this.calculateSlope(); + } + + this.applyStemExtensions(); + this.postFormatted = true; + } // Render the beam to the canvas context + + }, { + key: "draw", + value: function draw() { + this.checkContext(); + this.setRendered(); + if (this.unbeamable) return; + + if (!this.postFormatted) { + this.postFormat(); + } + + this.drawStems(); + this.applyStyle(); + this.drawBeamLines(); + this.restoreStyle(); + } + }]); + + return Beam; +}(_element__WEBPACK_IMPORTED_MODULE_2__["Element"]); + +/***/ }), + +/***/ "./src/bend.js": +/*!*********************!*\ + !*** ./src/bend.js ***! + \*********************/ +/*! exports provided: Bend */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Bend", function() { return Bend; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifier */ "./src/modifier.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// This file implements tablature bends. + + + +/** + @param text Text for bend ("Full", "Half", etc.) (DEPRECATED) + @param release If true, render a release. (DEPRECATED) + @param phrase If set, ignore "text" and "release", and use the more + sophisticated phrase specified. + + Example of a phrase: + + [{ + type: UP, + text: "whole" + width: 8; + }, + { + type: DOWN, + text: "whole" + width: 8; + }, + { + type: UP, + text: "half" + width: 8; + }, + { + type: UP, + text: "whole" + width: 8; + }, + { + type: DOWN, + text: "1 1/2" + width: 8; + }] + */ + +var Bend = +/*#__PURE__*/ +function (_Modifier) { + _inherits(Bend, _Modifier); + + _createClass(Bend, null, [{ + key: "format", + // ## Static Methods + // Arrange bends in `ModifierContext` + value: function format(bends, state) { + if (!bends || bends.length === 0) return false; + var last_width = 0; // Bends are always on top. + + var text_line = state.top_text_line; // Format Bends + + for (var i = 0; i < bends.length; ++i) { + var bend = bends[i]; + bend.setXShift(last_width); + last_width = bend.getWidth(); + bend.setTextLine(text_line); + } + + state.right_shift += last_width; + state.top_text_line += 1; + return true; + } // ## Prototype Methods + + }, { + key: "CATEGORY", + get: function get() { + return 'bends'; + } + }, { + key: "UP", + get: function get() { + return 0; + } + }, { + key: "DOWN", + get: function get() { + return 1; + } + }]); + + function Bend(text, release, phrase) { + var _this; + + _classCallCheck(this, Bend); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Bend).call(this)); + + _this.setAttribute('type', 'Bend'); + + _this.text = text; + _this.x_shift = 0; + _this.release = release || false; + _this.font = '10pt Arial'; + _this.render_options = { + line_width: 1.5, + line_style: '#777777', + bend_width: 8, + release_width: 8 + }; + + if (phrase) { + _this.phrase = phrase; + } else { + // Backward compatibility + _this.phrase = [{ + type: Bend.UP, + text: _this.text + }]; + if (_this.release) _this.phrase.push({ + type: Bend.DOWN, + text: '' + }); + } + + _this.updateWidth(); + + return _this; + } + + _createClass(Bend, [{ + key: "getCategory", + value: function getCategory() { + return Bend.CATEGORY; + } + }, { + key: "setXShift", + value: function setXShift(value) { + this.x_shift = value; + this.updateWidth(); + } + }, { + key: "setFont", + value: function setFont(font) { + this.font = font; + return this; + } + }, { + key: "getText", + value: function getText() { + return this.text; + } + }, { + key: "updateWidth", + value: function updateWidth() { + var that = this; + + function measure_text(text) { + var text_width; + + if (that.context) { + text_width = that.context.measureText(text).width; + } else { + text_width = _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].textWidth(text); + } + + return text_width; + } + + var total_width = 0; + + for (var i = 0; i < this.phrase.length; ++i) { + var bend = this.phrase[i]; + + if ('width' in bend) { + total_width += bend.width; + } else { + var additional_width = bend.type === Bend.UP ? this.render_options.bend_width : this.render_options.release_width; + bend.width = _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Max(additional_width, measure_text(bend.text)) + 3; + bend.draw_width = bend.width / 2; + total_width += bend.width; + } + } + + this.setWidth(total_width + this.x_shift); + return this; + } + }, { + key: "draw", + value: function draw() { + this.checkContext(); + + if (!(this.note && this.index != null)) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoNoteForBend', "Can't draw bend without a note or index."); + } + + this.setRendered(); + var start = this.note.getModifierStartXY(_modifier__WEBPACK_IMPORTED_MODULE_2__["Modifier"].Position.RIGHT, this.index); + start.x += 3; + start.y += 0.5; + var x_shift = this.x_shift; + var ctx = this.context; + var bend_height = this.note.getStave().getYForTopText(this.text_line) + 3; + var annotation_y = this.note.getStave().getYForTopText(this.text_line) - 1; + var that = this; + + function renderBend(x, y, width, height) { + var cp_x = x + width; + var cp_y = y; + ctx.save(); + ctx.beginPath(); + ctx.setLineWidth(that.render_options.line_width); + ctx.setStrokeStyle(that.render_options.line_style); + ctx.setFillStyle(that.render_options.line_style); + ctx.moveTo(x, y); + ctx.quadraticCurveTo(cp_x, cp_y, x + width, height); + ctx.stroke(); + ctx.restore(); + } + + function renderRelease(x, y, width, height) { + ctx.save(); + ctx.beginPath(); + ctx.setLineWidth(that.render_options.line_width); + ctx.setStrokeStyle(that.render_options.line_style); + ctx.setFillStyle(that.render_options.line_style); + ctx.moveTo(x, height); + ctx.quadraticCurveTo(x + width, height, x + width, y); + ctx.stroke(); + ctx.restore(); + } + + function renderArrowHead(x, y, direction) { + var width = 4; + var dir = direction || 1; + ctx.beginPath(); + ctx.moveTo(x, y); + ctx.lineTo(x - width, y + width * dir); + ctx.lineTo(x + width, y + width * dir); + ctx.closePath(); + ctx.fill(); + } + + function renderText(x, text) { + ctx.save(); + ctx.setRawFont(that.font); + var render_x = x - ctx.measureText(text).width / 2; + ctx.fillText(text, render_x, annotation_y); + ctx.restore(); + } + + var last_bend = null; + var last_drawn_width = 0; + + for (var i = 0; i < this.phrase.length; ++i) { + var bend = this.phrase[i]; + if (i === 0) bend.draw_width += x_shift; + last_drawn_width = bend.draw_width + (last_bend ? last_bend.draw_width : 0) - (i === 1 ? x_shift : 0); + + if (bend.type === Bend.UP) { + if (last_bend && last_bend.type === Bend.UP) { + renderArrowHead(start.x, bend_height); + } + + renderBend(start.x, start.y, last_drawn_width, bend_height); + } + + if (bend.type === Bend.DOWN) { + if (last_bend && last_bend.type === Bend.UP) { + renderRelease(start.x, start.y, last_drawn_width, bend_height); + } + + if (last_bend && last_bend.type === Bend.DOWN) { + renderArrowHead(start.x, start.y, -1); + renderRelease(start.x, start.y, last_drawn_width, bend_height); + } + + if (last_bend === null) { + last_drawn_width = bend.draw_width; + renderRelease(start.x, start.y, last_drawn_width, bend_height); + } + } + + renderText(start.x + last_drawn_width, bend.text); + last_bend = bend; + last_bend.x = start.x; + start.x += last_drawn_width; + } // Final arrowhead and text + + + if (last_bend.type === Bend.UP) { + renderArrowHead(last_bend.x + last_drawn_width, bend_height); + } else if (last_bend.type === Bend.DOWN) { + renderArrowHead(last_bend.x + last_drawn_width, start.y, -1); + } + } + }]); + + return Bend; +}(_modifier__WEBPACK_IMPORTED_MODULE_2__["Modifier"]); + +/***/ }), + +/***/ "./src/boundingbox.js": +/*!****************************!*\ + !*** ./src/boundingbox.js ***! + \****************************/ +/*! exports provided: BoundingBox */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BoundingBox", function() { return BoundingBox; }); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +// Vex Music Notation +// Mohit Muthanna +// +// Copyright Mohit Muthanna 2010 +// Bounding boxes for interactive notation +var BoundingBox = +/*#__PURE__*/ +function () { + _createClass(BoundingBox, null, [{ + key: "copy", + value: function copy(that) { + return new BoundingBox(that.x, that.y, that.w, that.h); + } + }]); + + function BoundingBox(x, y, w, h) { + _classCallCheck(this, BoundingBox); + + this.x = x; + this.y = y; + this.w = w; + this.h = h; + } + + _createClass(BoundingBox, [{ + key: "getX", + value: function getX() { + return this.x; + } + }, { + key: "getY", + value: function getY() { + return this.y; + } + }, { + key: "getW", + value: function getW() { + return this.w; + } + }, { + key: "getH", + value: function getH() { + return this.h; + } + }, { + key: "setX", + value: function setX(x) { + this.x = x; + return this; + } + }, { + key: "setY", + value: function setY(y) { + this.y = y; + return this; + } + }, { + key: "setW", + value: function setW(w) { + this.w = w; + return this; + } + }, { + key: "setH", + value: function setH(h) { + this.h = h; + return this; + } + }, { + key: "move", + value: function move(x, y) { + this.x += x; + this.y += y; + } + }, { + key: "clone", + value: function clone() { + return BoundingBox.copy(this); + } // Merge my box with given box. Creates a bigger bounding box unless + // the given box is contained in this one. + + }, { + key: "mergeWith", + value: function mergeWith(boundingBox, ctx) { + var that = boundingBox; + var new_x = this.x < that.x ? this.x : that.x; + var new_y = this.y < that.y ? this.y : that.y; + var new_w = Math.max(this.x + this.w, that.x + that.w) - new_x; + var new_h = Math.max(this.y + this.h, that.y + that.h) - new_y; + this.x = new_x; + this.y = new_y; + this.w = new_w; + this.h = new_h; + if (ctx) this.draw(ctx); + return this; + } + }, { + key: "draw", + value: function draw(ctx, x, y) { + if (!x) x = 0; + if (!y) y = 0; + ctx.rect(this.x + x, this.y + y, this.w, this.h); + ctx.stroke(); + } + }]); + + return BoundingBox; +}(); + +/***/ }), + +/***/ "./src/boundingboxcomputation.js": +/*!***************************************!*\ + !*** ./src/boundingboxcomputation.js ***! + \***************************************/ +/*! exports provided: BoundingBoxComputation */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BoundingBoxComputation", function() { return BoundingBoxComputation; }); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +// ## Description +// +// Object which computes metrics for a bounding box by continuously +// taking canvas path commands +// Warning: This file is merely a crutch to get bounding box information without +// explicit metadata. This is likely to get deprecated following SMuFL support. +// +// taken from: https://github.com/gabelerner/canvg/blob/860e418aca67b9a41e858a223d74d375793ec364/ca +// nvg.js#L449 +var BoundingBoxComputation = +/*#__PURE__*/ +function () { + function BoundingBoxComputation(x1, y1, x2, y2) { + _classCallCheck(this, BoundingBoxComputation); + + // pass in initial points if you want + this.x1 = Number.NaN; + this.y1 = Number.NaN; + this.x2 = Number.NaN; + this.y2 = Number.NaN; + this.addPoint(x1, y1); + this.addPoint(x2, y2); + } + + _createClass(BoundingBoxComputation, [{ + key: "width", + value: function width() { + return this.x2 - this.x1; + } + }, { + key: "height", + value: function height() { + return this.y2 - this.y1; + } + }, { + key: "noOp", + value: function noOp() {// do nothing + } + }, { + key: "addPoint", + value: function addPoint(x, y) { + if (x != null) { + if (isNaN(this.x1) || isNaN(this.x2)) { + this.x1 = x; + this.x2 = x; + } + + if (x < this.x1) this.x1 = x; + if (x > this.x2) this.x2 = x; + } + + if (y != null) { + if (isNaN(this.y1) || isNaN(this.y2)) { + this.y1 = y; + this.y2 = y; + } + + if (y < this.y1) this.y1 = y; + if (y > this.y2) this.y2 = y; + } + } + }, { + key: "addX", + value: function addX(x) { + this.addPoint(x, null); + } + }, { + key: "addY", + value: function addY(y) { + this.addPoint(null, y); + } + }, { + key: "addQuadraticCurve", + value: function addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) { + var cp1x = p0x + 2 / 3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0) + + var cp1y = p0y + 2 / 3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0) + + var cp2x = cp1x + 1 / 3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0) + + var cp2y = cp1y + 1 / 3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0) + + this.addBezierCurve(p0x, p0y, cp1x, cp1y, cp2x, cp2y, p2x, p2y); + } + }, { + key: "addBezierCurve", + value: function addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) { + // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html + var p0 = [p0x, p0y]; + var p1 = [p1x, p1y]; + var p2 = [p2x, p2y]; + var p3 = [p3x, p3y]; + var i; + this.addPoint(p0[0], p0[1]); + this.addPoint(p3[0], p3[1]); + + var f = function f(t, i) { + return Math.pow(1 - t, 3) * p0[i] + 3 * Math.pow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * Math.pow(t, 2) * p2[i] + Math.pow(t, 3) * p3[i]; + }; + + for (i = 0; i <= 1; i++) { + var b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i]; + var a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i]; + var c = 3 * p1[i] - 3 * p0[i]; + + if (a === 0) { + if (b === 0) continue; + var t = -c / b; + + if (0 < t && t < 1) { + if (i === 0) this.addX(f(t, i)); + if (i === 1) this.addY(f(t, i)); + } + + continue; + } + + var b2ac = Math.pow(b, 2) - 4 * c * a; + if (b2ac < 0) continue; + var t1 = (-b + Math.sqrt(b2ac)) / (2 * a); + + if (0 < t1 && t1 < 1) { + if (i === 0) this.addX(f(t1, i)); + if (i === 1) this.addY(f(t1, i)); + } + + var t2 = (-b - Math.sqrt(b2ac)) / (2 * a); + + if (0 < t2 && t2 < 1) { + if (i === 0) this.addX(f(t2, i)); + if (i === 1) this.addY(f(t2, i)); + } + } + } + }]); + + return BoundingBoxComputation; +}(); + +/***/ }), + +/***/ "./src/canvascontext.js": +/*!******************************!*\ + !*** ./src/canvascontext.js ***! + \******************************/ +/*! exports provided: CanvasContext */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CanvasContext", function() { return CanvasContext; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + +function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Mohit Muthanna +// +// A rendering context for the Raphael backend. +// +// Copyright Mohit Cheppudira 2010 + +/** @constructor */ + +var CanvasContext = +/*#__PURE__*/ +function () { + _createClass(CanvasContext, null, [{ + key: "SanitizeCanvasDims", + value: function SanitizeCanvasDims(width, height) { + if (Math.max(width, height) > this.CANVAS_BROWSER_SIZE_LIMIT) { + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].W('Canvas dimensions exceed browser limit. Cropping to ' + this.CANVAS_BROWSER_SIZE_LIMIT); + + if (width > this.CANVAS_BROWSER_SIZE_LIMIT) { + width = this.CANVAS_BROWSER_SIZE_LIMIT; // note: Math.min return 0 for undefined, NaN for null. Would change inputs. + } + + if (height > this.CANVAS_BROWSER_SIZE_LIMIT) { + height = this.CANVAS_BROWSER_SIZE_LIMIT; + } + } + + return [width, height]; + } + }, { + key: "WIDTH", + get: function get() { + return 600; + } + }, { + key: "HEIGHT", + get: function get() { + return 400; + } + }, { + key: "CANVAS_BROWSER_SIZE_LIMIT", + get: function get() { + return 32767; // Chrome/Firefox. Could be determined more precisely by npm module canvas-size + } + }]); + + function CanvasContext(context) { + _classCallCheck(this, CanvasContext); + + // Use a name that is unlikely to clash with a canvas context + // property + this.vexFlowCanvasContext = context; + + if (!context.canvas) { + this.canvas = { + width: CanvasContext.WIDTH, + height: CanvasContext.HEIGHT + }; + } else { + this.canvas = context.canvas; + } + } + + _createClass(CanvasContext, [{ + key: "clear", + value: function clear() { + this.vexFlowCanvasContext.clearRect(0, 0, this.canvas.width, this.canvas.height); + } // Containers not implemented + + }, { + key: "openGroup", + value: function openGroup() {} + }, { + key: "closeGroup", + value: function closeGroup() {} + }, { + key: "add", + value: function add() {} + }, { + key: "setFont", + value: function setFont(family, size, weight) { + this.vexFlowCanvasContext.font = (weight || '') + ' ' + size + 'pt ' + family; + return this; + } + }, { + key: "setRawFont", + value: function setRawFont(font) { + this.vexFlowCanvasContext.font = font; + return this; + } + }, { + key: "setFillStyle", + value: function setFillStyle(style) { + this.vexFlowCanvasContext.fillStyle = style; + return this; + } + }, { + key: "setBackgroundFillStyle", + value: function setBackgroundFillStyle(style) { + this.background_fillStyle = style; + return this; + } + }, { + key: "setStrokeStyle", + value: function setStrokeStyle(style) { + this.vexFlowCanvasContext.strokeStyle = style; + return this; + } + }, { + key: "setShadowColor", + value: function setShadowColor(style) { + this.vexFlowCanvasContext.shadowColor = style; + return this; + } + }, { + key: "setShadowBlur", + value: function setShadowBlur(blur) { + this.vexFlowCanvasContext.shadowBlur = blur; + return this; + } + }, { + key: "setLineWidth", + value: function setLineWidth(width) { + this.vexFlowCanvasContext.lineWidth = width; + return this; + } + }, { + key: "setLineCap", + value: function setLineCap(cap_type) { + this.vexFlowCanvasContext.lineCap = cap_type; + return this; + } // setLineDash: is the one native method in a canvas context + // that begins with set, therefore we don't bolster the method + // if it already exists (see renderer.bolsterCanvasContext). + // If it doesn't exist, we bolster it and assume it's looking for + // a ctx.lineDash method, as previous versions of VexFlow + // expected. + + }, { + key: "setLineDash", + value: function setLineDash(dash) { + this.vexFlowCanvasContext.lineDash = dash; + return this; + } + }, { + key: "scale", + value: function scale(x, y) { + return this.vexFlowCanvasContext.scale(parseFloat(x), parseFloat(y)); + } + }, { + key: "resize", + value: function resize(width, height) { + var _this$SanitizeCanvasD = this.SanitizeCanvasDims(parseInt(width, 10), parseInt(height, 10)); + + var _this$SanitizeCanvasD2 = _slicedToArray(_this$SanitizeCanvasD, 2); + + width = _this$SanitizeCanvasD2[0]; + height = _this$SanitizeCanvasD2[1]; + return this.vexFlowCanvasContext.resize(width, height); + } + }, { + key: "rect", + value: function rect(x, y, width, height) { + return this.vexFlowCanvasContext.rect(x, y, width, height); + } + }, { + key: "fillRect", + value: function fillRect(x, y, width, height) { + return this.vexFlowCanvasContext.fillRect(x, y, width, height); + } + }, { + key: "clearRect", + value: function clearRect(x, y, width, height) { + return this.vexFlowCanvasContext.clearRect(x, y, width, height); + } + }, { + key: "beginPath", + value: function beginPath() { + return this.vexFlowCanvasContext.beginPath(); + } + }, { + key: "moveTo", + value: function moveTo(x, y) { + return this.vexFlowCanvasContext.moveTo(x, y); + } + }, { + key: "lineTo", + value: function lineTo(x, y) { + return this.vexFlowCanvasContext.lineTo(x, y); + } + }, { + key: "bezierCurveTo", + value: function bezierCurveTo(x1, y1, x2, y2, x, y) { + return this.vexFlowCanvasContext.bezierCurveTo(x1, y1, x2, y2, x, y); + } + }, { + key: "quadraticCurveTo", + value: function quadraticCurveTo(x1, y1, x, y) { + return this.vexFlowCanvasContext.quadraticCurveTo(x1, y1, x, y); + } // This is an attempt (hack) to simulate the HTML5 canvas + // arc method. + + }, { + key: "arc", + value: function arc(x, y, radius, startAngle, endAngle, antiClockwise) { + return this.vexFlowCanvasContext.arc(x, y, radius, startAngle, endAngle, antiClockwise); + } // Adapted from the source for Raphael's Element.glow + + }, { + key: "glow", + value: function glow() { + return this.vexFlowCanvasContext.glow(); + } + }, { + key: "fill", + value: function fill() { + return this.vexFlowCanvasContext.fill(); + } + }, { + key: "stroke", + value: function stroke() { + return this.vexFlowCanvasContext.stroke(); + } + }, { + key: "closePath", + value: function closePath() { + return this.vexFlowCanvasContext.closePath(); + } + }, { + key: "measureText", + value: function measureText(text) { + return this.vexFlowCanvasContext.measureText(text); + } + }, { + key: "fillText", + value: function fillText(text, x, y) { + return this.vexFlowCanvasContext.fillText(text, x, y); + } + }, { + key: "save", + value: function save() { + return this.vexFlowCanvasContext.save(); + } + }, { + key: "restore", + value: function restore() { + return this.vexFlowCanvasContext.restore(); + } + }]); + + return CanvasContext; +}(); + +/***/ }), + +/***/ "./src/clef.js": +/*!*********************!*\ + !*** ./src/clef.js ***! + \*********************/ +/*! exports provided: Clef */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Clef", function() { return Clef; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.js"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./glyph */ "./src/glyph.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna Cheppudira 2013. +// Co-author: Benjamin W. Bohl +// +// ## Description +// +// This file implements various types of clefs that can be rendered on a stave. +// +// See `tests/clef_tests.js` for usage examples. + + + // To enable logging for this class, set `Vex.Flow.Clef.DEBUG` to `true`. + +function L() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (Clef.DEBUG) _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].L('Vex.Flow.Clef', args); +} + +var Clef = +/*#__PURE__*/ +function (_StaveModifier) { + _inherits(Clef, _StaveModifier); + + _createClass(Clef, null, [{ + key: "CATEGORY", + get: function get() { + return 'clefs'; + } // Every clef name is associated with a glyph code from the font file + // and a default stave line number. + + }, { + key: "types", + get: function get() { + return { + 'treble': { + code: 'gClef', + line: 3 + }, + 'bass': { + code: 'fClef', + line: 1 + }, + 'alto': { + code: 'cClef', + line: 2 + }, + 'tenor': { + code: 'cClef', + line: 1 + }, + 'percussion': { + code: 'restMaxima', + line: 2 + }, + 'soprano': { + code: 'cClef', + line: 4 + }, + 'mezzo-soprano': { + code: 'cClef', + line: 3 + }, + 'baritone-c': { + code: 'cClef', + line: 0 + }, + 'baritone-f': { + code: 'fClef', + line: 2 + }, + 'subbass': { + code: 'fClef', + line: 0 + }, + 'french': { + code: 'gClef', + line: 4 + }, + 'tab': { + code: '6stringTabClef' + } + }; + } // Create a new clef. The parameter `clef` must be a key from + // `Clef.types`. + + }]); + + function Clef(type, size, annotation) { + var _this; + + _classCallCheck(this, Clef); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Clef).call(this)); + + _this.setAttribute('type', 'Clef'); + + _this.setPosition(_stavemodifier__WEBPACK_IMPORTED_MODULE_1__["StaveModifier"].Position.BEGIN); + + _this.setType(type, size, annotation); + + _this.setWidth(_this.musicFont.lookupMetric("clef.".concat(_this.size, ".width"))); + + L('Creating clef:', type); + return _this; + } + + _createClass(Clef, [{ + key: "getCategory", + value: function getCategory() { + return Clef.CATEGORY; + } + }, { + key: "setType", + value: function setType(type, size, annotation) { + this.type = type; + this.clef = Clef.types[type]; + + if (size === undefined) { + this.size = 'default'; + } else { + this.size = size; + } + + this.clef.point = this.musicFont.lookupMetric("clef.".concat(this.size, ".point"), 0); + this.glyph = new _glyph__WEBPACK_IMPORTED_MODULE_2__["Glyph"](this.clef.code, this.clef.point, { + category: "clef.".concat(this.clef.code, ".").concat(this.size) + }); // If an annotation, such as 8va, is specified, add it to the Clef object. + + if (annotation !== undefined) { + var code = this.musicFont.lookupMetric("clef.annotations.".concat(annotation, ".smuflCode")); + var point = this.musicFont.lookupMetric("clef.annotations.".concat(annotation, ".").concat(this.size, ".point")); + var line = this.musicFont.lookupMetric("clef.annotations.".concat(annotation, ".").concat(this.size, ".").concat(this.type, ".line")); + var x_shift = this.musicFont.lookupMetric("clef.annotations.".concat(annotation, ".").concat(this.size, ".").concat(this.type, ".shiftX")); + this.annotation = { + code: code, + point: point, + line: line, + x_shift: x_shift + }; + this.attachment = new _glyph__WEBPACK_IMPORTED_MODULE_2__["Glyph"](this.annotation.code, this.annotation.point); + this.attachment.metrics.x_max = 0; + this.attachment.setXShift(this.annotation.x_shift); + } else { + this.annotation = undefined; + } + + return this; + } + }, { + key: "getWidth", + value: function getWidth() { + if (this.type === 'tab' && !this.stave) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('ClefError', "Can't get width without stave."); + } + + return this.width; + } + }, { + key: "setStave", + value: function setStave(stave) { + this.stave = stave; + if (this.type !== 'tab') return this; + var numLines = this.stave.getOptions().num_lines; + var point = this.musicFont.lookupMetric("clef.lineCount.".concat(numLines, ".point")); + var shiftY = this.musicFont.lookupMetric("clef.lineCount.".concat(numLines, ".shiftY")); + this.glyph.setPoint(point); + this.glyph.setYShift(shiftY); + return this; + } + }, { + key: "draw", + value: function draw() { + if (!this.x) throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('ClefError', "Can't draw clef without x."); + if (!this.stave) throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('ClefError', "Can't draw clef without stave."); + this.setRendered(); + this.glyph.setStave(this.stave); + this.glyph.setContext(this.stave.context); + + if (this.clef.line !== undefined) { + this.placeGlyphOnLine(this.glyph, this.stave, this.clef.line); + } + + this.glyph.renderToStave(this.x); + + if (this.annotation !== undefined) { + this.placeGlyphOnLine(this.attachment, this.stave, this.annotation.line); + this.attachment.setStave(this.stave); + this.attachment.setContext(this.stave.context); + this.attachment.renderToStave(this.x); + } + } + }]); + + return Clef; +}(_stavemodifier__WEBPACK_IMPORTED_MODULE_1__["StaveModifier"]); + +/***/ }), + +/***/ "./src/clefnote.js": +/*!*************************!*\ + !*** ./src/clefnote.js ***! + \*************************/ +/*! exports provided: ClefNote */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ClefNote", function() { return ClefNote; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./note */ "./src/note.js"); +/* harmony import */ var _clef__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./clef */ "./src/clef.js"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./glyph */ "./src/glyph.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Copyright Mohit Muthanna 2010 +// +// Author Taehoon Moon 2014 + + + + +/** @constructor */ + +var ClefNote = +/*#__PURE__*/ +function (_Note) { + _inherits(ClefNote, _Note); + + _createClass(ClefNote, null, [{ + key: "CATEGORY", + get: function get() { + return 'clefnote'; + } + }]); + + function ClefNote(type, size, annotation) { + var _this; + + _classCallCheck(this, ClefNote); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(ClefNote).call(this, { + duration: 'b' + })); + + _this.setAttribute('type', 'ClefNote'); + + _this.setType(type, size, annotation); // Note properties + + + _this.ignore_ticks = true; + return _this; + } + + _createClass(ClefNote, [{ + key: "setType", + value: function setType(type, size, annotation) { + this.type = type; + this.clef_obj = new _clef__WEBPACK_IMPORTED_MODULE_2__["Clef"](type, size, annotation); + this.clef = this.clef_obj.clef; + this.glyph = new _glyph__WEBPACK_IMPORTED_MODULE_3__["Glyph"](this.clef.code, this.clef.point); + this.setWidth(this.glyph.getMetrics().width); + return this; + } + }, { + key: "getClef", + value: function getClef() { + return this.clef; + } + }, { + key: "setContext", + value: function setContext(context) { + this.context = context; + this.glyph.setContext(this.context); + return this; + } + }, { + key: "getBoundingBox", + value: function getBoundingBox() { + return _get(_getPrototypeOf(ClefNote.prototype), "getBoundingBox", this).call(this); + } + }, { + key: "addToModifierContext", + value: function addToModifierContext() { + /* overridden to ignore */ + return this; + } + }, { + key: "getCategory", + value: function getCategory() { + return ClefNote.CATEGORY; + } + }, { + key: "preFormat", + value: function preFormat() { + this.setPreFormatted(true); + return this; + } + }, { + key: "draw", + value: function draw() { + if (!this.stave) throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoStave', "Can't draw without a stave."); + + if (!this.glyph.getContext()) { + this.glyph.setContext(this.context); + } + + this.setRendered(); + var abs_x = this.getAbsoluteX(); + this.glyph.setStave(this.stave); + this.glyph.setYShift(this.stave.getYForLine(this.clef.line) - this.stave.getYForGlyphs()); + this.glyph.renderToStave(abs_x); // If the Vex.Flow.Clef has an annotation, such as 8va, draw it. + + if (this.clef_obj.annotation !== undefined) { + var attachment = new _glyph__WEBPACK_IMPORTED_MODULE_3__["Glyph"](this.clef_obj.annotation.code, this.clef_obj.annotation.point); + + if (!attachment.getContext()) { + attachment.setContext(this.context); + } + + attachment.setStave(this.stave); + attachment.setYShift(this.stave.getYForLine(this.clef_obj.annotation.line) - this.stave.getYForGlyphs()); + attachment.setXShift(this.clef_obj.annotation.x_shift); + attachment.renderToStave(abs_x); + } + } + }]); + + return ClefNote; +}(_note__WEBPACK_IMPORTED_MODULE_1__["Note"]); + +/***/ }), + +/***/ "./src/crescendo.js": +/*!**************************!*\ + !*** ./src/crescendo.js ***! + \**************************/ +/*! exports provided: Crescendo */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Crescendo", function() { return Crescendo; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./note */ "./src/note.js"); +/* harmony import */ var _tickcontext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tickcontext */ "./src/tickcontext.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// This file implements the `Crescendo` object which draws crescendos and +// decrescendo dynamics markings. A `Crescendo` is initialized with a +// duration and formatted as part of a `Voice` like any other `Note` +// type in VexFlow. This object would most likely be formatted in a Voice +// with `TextNotes` - which are used to represent other dynamics markings. + + + // To enable logging for this class. Set `Vex.Flow.Crescendo.DEBUG` to `true`. + +function L() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (Crescendo.DEBUG) _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].L('Vex.Flow.Crescendo', args); +} // Private helper to draw the hairpin + + +function renderHairpin(ctx, params) { + var begin_x = params.begin_x; + var end_x = params.end_x; + var y = params.y; + var half_height = params.height / 2; + ctx.beginPath(); + + if (params.reverse) { + ctx.moveTo(begin_x, y - half_height); + ctx.lineTo(end_x, y); + ctx.lineTo(begin_x, y + half_height); + } else { + ctx.moveTo(end_x, y - half_height); + ctx.lineTo(begin_x, y); + ctx.lineTo(end_x, y + half_height); + } + + ctx.stroke(); + ctx.closePath(); +} + +var Crescendo = +/*#__PURE__*/ +function (_Note) { + _inherits(Crescendo, _Note); + + // Initialize the crescendo's properties + function Crescendo(note_struct) { + var _this; + + _classCallCheck(this, Crescendo); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Crescendo).call(this, note_struct)); + + _this.setAttribute('type', 'Crescendo'); // Whether the object is a decrescendo + + + _this.decrescendo = false; // The staff line to be placed on + + _this.line = note_struct.line || 0; // The height at the open end of the cresc/decresc + + _this.height = 15; + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(_this.render_options, { + // Extensions to the length of the crescendo on either side + extend_left: 0, + extend_right: 0, + // Vertical shift + y_shift: 0 + }); + return _this; + } // Set the line to center the element on + + + _createClass(Crescendo, [{ + key: "setLine", + value: function setLine(line) { + this.line = line; + return this; + } // Set the full height at the open end + + }, { + key: "setHeight", + value: function setHeight(height) { + this.height = height; + return this; + } // Set whether the sign should be a descresendo by passing a bool + // to `decresc` + + }, { + key: "setDecrescendo", + value: function setDecrescendo(decresc) { + this.decrescendo = decresc; + return this; + } // Preformat the note + + }, { + key: "preFormat", + value: function preFormat() { + this.preFormatted = true; + return this; + } // Render the Crescendo object onto the canvas + + }, { + key: "draw", + value: function draw() { + this.checkContext(); + this.setRendered(); + var tick_context = this.getTickContext(); + var next_context = _tickcontext__WEBPACK_IMPORTED_MODULE_2__["TickContext"].getNextContext(tick_context); + var begin_x = this.getAbsoluteX(); + var end_x = next_context ? next_context.getX() : this.stave.x + this.stave.width; + var y = this.stave.getYForLine(this.line + -3) + 1; + L('Drawing ', this.decrescendo ? 'decrescendo ' : 'crescendo ', this.height, 'x', begin_x - end_x); + renderHairpin(this.context, { + begin_x: begin_x - this.render_options.extend_left, + end_x: end_x + this.render_options.extend_right, + y: y + this.render_options.y_shift, + height: this.height, + reverse: this.decrescendo + }); + } + }]); + + return Crescendo; +}(_note__WEBPACK_IMPORTED_MODULE_1__["Note"]); + +/***/ }), + +/***/ "./src/curve.js": +/*!**********************!*\ + !*** ./src/curve.js ***! + \**********************/ +/*! exports provided: Curve */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Curve", function() { return Curve; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element */ "./src/element.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// VexFlow - Music Engraving for HTML5 +// Copyright Mohit Muthanna 2010 +// +// This class implements curves (for slurs) + + +var Curve = +/*#__PURE__*/ +function (_Element) { + _inherits(Curve, _Element); + + _createClass(Curve, null, [{ + key: "Position", + get: function get() { + return { + NEAR_HEAD: 1, + NEAR_TOP: 2 + }; + } + }, { + key: "PositionString", + get: function get() { + return { + nearHead: Curve.Position.NEAR_HEAD, + nearTop: Curve.Position.NEAR_TOP + }; + } // from: Start note + // to: End note + // options: + // cps: List of control points + // x_shift: pixels to shift + // y_shift: pixels to shift + + }]); + + function Curve(from, to, options) { + var _this; + + _classCallCheck(this, Curve); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Curve).call(this)); + + _this.setAttribute('type', 'Curve'); + + _this.render_options = { + spacing: 2, + thickness: 2, + x_shift: 0, + y_shift: 10, + position: Curve.Position.NEAR_HEAD, + position_end: Curve.Position.NEAR_HEAD, + invert: false, + cps: [{ + x: 0, + y: 10 + }, { + x: 0, + y: 10 + }] + }; + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(_this.render_options, options); + + _this.setNotes(from, to); + + return _this; + } + + _createClass(Curve, [{ + key: "setNotes", + value: function setNotes(from, to) { + if (!from && !to) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('BadArguments', 'Curve needs to have either first_note or last_note set.'); + } + + this.from = from; + this.to = to; + return this; + } + /** + * @return {boolean} Returns true if this is a partial bar. + */ + + }, { + key: "isPartial", + value: function isPartial() { + return !this.from || !this.to; + } + }, { + key: "renderCurve", + value: function renderCurve(params) { + var ctx = this.context; + var cps = this.render_options.cps; + var x_shift = this.render_options.x_shift; + var y_shift = this.render_options.y_shift * params.direction; + var first_x = params.first_x + x_shift; + var first_y = params.first_y + y_shift; + var last_x = params.last_x - x_shift; + var last_y = params.last_y + y_shift; + var thickness = this.render_options.thickness; + var cp_spacing = (last_x - first_x) / (cps.length + 2); + ctx.beginPath(); + ctx.moveTo(first_x, first_y); + ctx.bezierCurveTo(first_x + cp_spacing + cps[0].x, first_y + cps[0].y * params.direction, last_x - cp_spacing + cps[1].x, last_y + cps[1].y * params.direction, last_x, last_y); + ctx.bezierCurveTo(last_x - cp_spacing + cps[1].x, last_y + (cps[1].y + thickness) * params.direction, first_x + cp_spacing + cps[0].x, first_y + (cps[0].y + thickness) * params.direction, first_x, first_y); + ctx.stroke(); + ctx.closePath(); + ctx.fill(); + } + }, { + key: "draw", + value: function draw() { + this.checkContext(); + this.setRendered(); + var first_note = this.from; + var last_note = this.to; + var first_x; + var last_x; + var first_y; + var last_y; + var stem_direction; + var metric = 'baseY'; + var end_metric = 'baseY'; + + function getPosition(position) { + return typeof position === 'string' ? Curve.PositionString[position] : position; + } + + var position = getPosition(this.render_options.position); + var position_end = getPosition(this.render_options.position_end); + + if (position === Curve.Position.NEAR_TOP) { + metric = 'topY'; + end_metric = 'topY'; + } + + if (position_end === Curve.Position.NEAR_HEAD) { + end_metric = 'baseY'; + } else if (position_end === Curve.Position.NEAR_TOP) { + end_metric = 'topY'; + } + + if (first_note) { + first_x = first_note.getTieRightX(); + stem_direction = first_note.getStemDirection(); + first_y = first_note.getStemExtents()[metric]; + } else { + first_x = last_note.getStave().getTieStartX(); + first_y = last_note.getStemExtents()[metric]; + } + + if (last_note) { + last_x = last_note.getTieLeftX(); + stem_direction = last_note.getStemDirection(); + last_y = last_note.getStemExtents()[end_metric]; + } else { + last_x = first_note.getStave().getTieEndX(); + last_y = first_note.getStemExtents()[end_metric]; + } + + this.renderCurve({ + first_x: first_x, + last_x: last_x, + first_y: first_y, + last_y: last_y, + direction: stem_direction * (this.render_options.invert === true ? -1 : 1) + }); + return true; + } + }]); + + return Curve; +}(_element__WEBPACK_IMPORTED_MODULE_1__["Element"]); + +/***/ }), + +/***/ "./src/dot.js": +/*!********************!*\ + !*** ./src/dot.js ***! + \********************/ +/*! exports provided: Dot */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Dot", function() { return Dot; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// VexFlow - Music Engraving for HTML5 +// Copyright Mohit Muthanna 2010 +// +// This class implements dot modifiers for notes. + + +var Dot = +/*#__PURE__*/ +function (_Modifier) { + _inherits(Dot, _Modifier); + + _createClass(Dot, null, [{ + key: "format", + // Arrange dots inside a ModifierContext. + value: function format(dots, state) { + var right_shift = state.right_shift; + var dot_spacing = 1; + if (!dots || dots.length === 0) return false; + var dot_list = []; + var max_shift_map = {}; + + for (var i = 0; i < dots.length; ++i) { + var dot = dots[i]; + var note = dot.getNote(); + var props = void 0; + var shift = void 0; // Only StaveNote has .getKeyProps() + + if (typeof note.getKeyProps === 'function') { + props = note.getKeyProps()[dot.getIndex()]; + shift = note.getRightDisplacedHeadPx(); + } else { + // Else it's a TabNote + props = { + line: 0.5 + }; // Shim key props for dot placement + + shift = 0; + } + + var note_id = note.getAttribute('id'); + dot_list.push({ + line: props.line, + note: note, + note_id: note_id, + dot: dot + }); + max_shift_map[note_id] = Math.max(max_shift_map[note_id] || shift, shift); + } // Sort dots by line number. + + + dot_list.sort(function (a, b) { + return b.line - a.line; + }); + var dot_shift = right_shift; + var x_width = 0; + var last_line = null; + var last_note = null; + var prev_dotted_space = null; + var half_shiftY = 0; + + for (var _i = 0; _i < dot_list.length; ++_i) { + var _dot_list$_i = dot_list[_i], + _dot = _dot_list$_i.dot, + _note = _dot_list$_i.note, + _note_id = _dot_list$_i.note_id, + line = _dot_list$_i.line; // Reset the position of the dot every line. + + if (line !== last_line || _note !== last_note) { + dot_shift = max_shift_map[_note_id]; + } + + if (!_note.isRest() && line !== last_line) { + if (Math.abs(line % 1) === 0.5) { + // note is on a space, so no dot shift + half_shiftY = 0; + } else { + // note is on a line, so shift dot to space above the line + half_shiftY = 0.5; + + if (last_note != null && !last_note.isRest() && last_line - line === 0.5) { + // previous note on a space, so shift dot to space below the line + half_shiftY = -0.5; + } else if (line + half_shiftY === prev_dotted_space) { + // previous space is dotted, so shift dot to space below the line + half_shiftY = -0.5; + } + } + } // convert half_shiftY to a multiplier for dots.draw() + + + if (_note.isRest()) { + _dot.dot_shiftY += -half_shiftY; + } else { + _dot.dot_shiftY = -half_shiftY; + } + + prev_dotted_space = line + half_shiftY; + + _dot.setXShift(dot_shift); + + dot_shift += _dot.getWidth() + dot_spacing; // spacing + + x_width = dot_shift > x_width ? dot_shift : x_width; + last_line = line; + last_note = _note; + } // Update state. + + + state.right_shift += x_width; + return true; + } + /** + * @constructor + */ + + }, { + key: "CATEGORY", + get: function get() { + return 'dots'; + } + }]); + + function Dot() { + var _this; + + _classCallCheck(this, Dot); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Dot).call(this)); + + _this.setAttribute('type', 'Dot'); + + _this.note = null; + _this.index = null; + _this.position = _modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"].Position.RIGHT; + _this.radius = 2; + + _this.setWidth(5); + + _this.dot_shiftY = 0; + return _this; + } + + _createClass(Dot, [{ + key: "getCategory", + value: function getCategory() { + return Dot.CATEGORY; + } + }, { + key: "setNote", + value: function setNote(note) { + this.note = note; + + if (this.note.getCategory() === 'gracenotes') { + this.radius *= 0.50; + this.setWidth(3); + } + } + }, { + key: "setDotShiftY", + value: function setDotShiftY(y) { + this.dot_shiftY = y; + return this; + } + }, { + key: "draw", + value: function draw() { + this.checkContext(); + this.setRendered(); + + if (!this.note || this.index === null) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoAttachedNote', "Can't draw dot without a note and index."); + } + + var lineSpace = this.note.stave.options.spacing_between_lines_px; + var start = this.note.getModifierStartXY(this.position, this.index, { + forceFlagRight: true + }); // Set the starting y coordinate to the base of the stem for TabNotes + + if (this.note.getCategory() === 'tabnotes') { + start.y = this.note.getStemExtents().baseY; + } + + var x = start.x + this.x_shift + this.width - this.radius; + var y = start.y + this.y_shift + this.dot_shiftY * lineSpace; + var ctx = this.context; + ctx.beginPath(); + ctx.arc(x, y, this.radius, 0, Math.PI * 2, false); + ctx.fill(); + } + }]); + + return Dot; +}(_modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"]); + +/***/ }), + +/***/ "./src/easyscore.js": +/*!**************************!*\ + !*** ./src/easyscore.js ***! + \**************************/ +/*! exports provided: X, EasyScore */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "X", function() { return X; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EasyScore", function() { return EasyScore; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _stavenote__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stavenote */ "./src/stavenote.js"); +/* harmony import */ var _parser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./parser */ "./src/parser.js"); +/* harmony import */ var _articulation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./articulation */ "./src/articulation.js"); +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + +function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// This class implements a parser for a simple language to generate +// VexFlow objects. + +/* eslint max-classes-per-file: "off" */ + + + + // To enable logging for this class. Set `Vex.Flow.EasyScore.DEBUG` to `true`. + +function L() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (EasyScore.DEBUG) _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].L('Vex.Flow.EasyScore', args); +} + +var X = _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].MakeException('EasyScoreError'); + +var Grammar = +/*#__PURE__*/ +function () { + function Grammar(builder) { + _classCallCheck(this, Grammar); + + this.builder = builder; + } + + _createClass(Grammar, [{ + key: "begin", + value: function begin() { + return this.LINE; + } + }, { + key: "LINE", + value: function LINE() { + return { + expect: [this.PIECE, this.PIECES, this.EOL] + }; + } + }, { + key: "PIECE", + value: function PIECE() { + var _this = this; + + return { + expect: [this.CHORDORNOTE, this.PARAMS], + run: function run() { + return _this.builder.commitPiece(); + } + }; + } + }, { + key: "PIECES", + value: function PIECES() { + return { + expect: [this.COMMA, this.PIECE], + zeroOrMore: true + }; + } + }, { + key: "PARAMS", + value: function PARAMS() { + return { + expect: [this.DURATION, this.TYPE, this.DOTS, this.OPTS] + }; + } + }, { + key: "CHORDORNOTE", + value: function CHORDORNOTE() { + return { + expect: [this.CHORD, this.SINGLENOTE], + or: true + }; + } + }, { + key: "CHORD", + value: function CHORD() { + var _this2 = this; + + return { + expect: [this.LPAREN, this.NOTES, this.RPAREN], + run: function run(state) { + return _this2.builder.addChord(state.matches[1]); + } + }; + } + }, { + key: "NOTES", + value: function NOTES() { + return { + expect: [this.NOTE], + oneOrMore: true + }; + } + }, { + key: "NOTE", + value: function NOTE() { + return { + expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE] + }; + } + }, { + key: "SINGLENOTE", + value: function SINGLENOTE() { + var _this3 = this; + + return { + expect: [this.NOTENAME, this.ACCIDENTAL, this.OCTAVE], + run: function run(state) { + return _this3.builder.addSingleNote(state.matches[0], state.matches[1], state.matches[2]); + } + }; + } + }, { + key: "ACCIDENTAL", + value: function ACCIDENTAL() { + return { + expect: [this.ACCIDENTALS], + maybe: true + }; + } + }, { + key: "DOTS", + value: function DOTS() { + var _this4 = this; + + return { + expect: [this.DOT], + zeroOrMore: true, + run: function run(state) { + return _this4.builder.setNoteDots(state.matches[0]); + } + }; + } + }, { + key: "TYPE", + value: function TYPE() { + var _this5 = this; + + return { + expect: [this.SLASH, this.MAYBESLASH, this.TYPES], + maybe: true, + run: function run(state) { + return _this5.builder.setNoteType(state.matches[2]); + } + }; + } + }, { + key: "DURATION", + value: function DURATION() { + var _this6 = this; + + return { + expect: [this.SLASH, this.DURATIONS], + maybe: true, + run: function run(state) { + return _this6.builder.setNoteDuration(state.matches[1]); + } + }; + } + }, { + key: "OPTS", + value: function OPTS() { + return { + expect: [this.LBRACKET, this.KEYVAL, this.KEYVALS, this.RBRACKET], + maybe: true + }; + } + }, { + key: "KEYVALS", + value: function KEYVALS() { + return { + expect: [this.COMMA, this.KEYVAL], + zeroOrMore: true + }; + } + }, { + key: "KEYVAL", + value: function KEYVAL() { + var _this7 = this; + + var unquote = function unquote(str) { + return str.slice(1, -1); + }; + + return { + expect: [this.KEY, this.EQUALS, this.VAL], + run: function run(state) { + return _this7.builder.addNoteOption(state.matches[0], unquote(state.matches[2])); + } + }; + } + }, { + key: "VAL", + value: function VAL() { + return { + expect: [this.SVAL, this.DVAL], + or: true + }; + } + }, { + key: "KEY", + value: function KEY() { + return { + token: '[a-zA-Z][a-zA-Z0-9]*' + }; + } + }, { + key: "DVAL", + value: function DVAL() { + return { + token: '["][^"]*["]' + }; + } + }, { + key: "SVAL", + value: function SVAL() { + return { + token: "['][^']*[']" + }; + } + }, { + key: "NOTENAME", + value: function NOTENAME() { + return { + token: '[a-gA-G]' + }; + } + }, { + key: "OCTAVE", + value: function OCTAVE() { + return { + token: '[0-9]+' + }; + } + }, { + key: "ACCIDENTALS", + value: function ACCIDENTALS() { + return { + token: 'bbs|bb|bss|bs|b|db|d|##|#|n|\\+\\+-|\\+-|\\+\\+|\\+|k|o' + }; + } + }, { + key: "DURATIONS", + value: function DURATIONS() { + return { + token: '[0-9whq]+' + }; + } + }, { + key: "TYPES", + value: function TYPES() { + return { + token: '[rRsSxX]' + }; + } + }, { + key: "LPAREN", + value: function LPAREN() { + return { + token: '[(]' + }; + } + }, { + key: "RPAREN", + value: function RPAREN() { + return { + token: '[)]' + }; + } + }, { + key: "COMMA", + value: function COMMA() { + return { + token: '[,]' + }; + } + }, { + key: "DOT", + value: function DOT() { + return { + token: '[.]' + }; + } + }, { + key: "SLASH", + value: function SLASH() { + return { + token: '[/]' + }; + } + }, { + key: "MAYBESLASH", + value: function MAYBESLASH() { + return { + token: '[/]?' + }; + } + }, { + key: "EQUALS", + value: function EQUALS() { + return { + token: '[=]' + }; + } + }, { + key: "LBRACKET", + value: function LBRACKET() { + return { + token: '\\[' + }; + } + }, { + key: "RBRACKET", + value: function RBRACKET() { + return { + token: '\\]' + }; + } + }, { + key: "EOL", + value: function EOL() { + return { + token: '$' + }; + } + }]); + + return Grammar; +}(); + +var Builder = +/*#__PURE__*/ +function () { + function Builder(factory) { + _classCallCheck(this, Builder); + + this.factory = factory; + this.commitHooks = []; + this.reset(); + } + + _createClass(Builder, [{ + key: "reset", + value: function reset() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + this.options = { + stem: 'auto', + clef: 'treble' + }; + this.elements = { + notes: [], + accidentals: [] + }; + this.rollingDuration = '8'; + this.resetPiece(); + + _extends(this.options, options); + } + }, { + key: "getFactory", + value: function getFactory() { + return this.factory; + } + }, { + key: "getElements", + value: function getElements() { + return this.elements; + } + }, { + key: "addCommitHook", + value: function addCommitHook(commitHook) { + this.commitHooks.push(commitHook); + } + }, { + key: "resetPiece", + value: function resetPiece() { + L('resetPiece'); + this.piece = { + chord: [], + duration: this.rollingDuration, + dots: 0, + type: undefined, + options: {} + }; + } + }, { + key: "setNoteDots", + value: function setNoteDots(dots) { + L('setNoteDots:', dots); + if (dots) this.piece.dots = dots.length; + } + }, { + key: "setNoteDuration", + value: function setNoteDuration(duration) { + L('setNoteDuration:', duration); + this.rollingDuration = this.piece.duration = duration || this.rollingDuration; + } + }, { + key: "setNoteType", + value: function setNoteType(type) { + L('setNoteType:', type); + if (type) this.piece.type = type; + } + }, { + key: "addNoteOption", + value: function addNoteOption(key, value) { + L('addNoteOption: key:', key, 'value:', value); + this.piece.options[key] = value; + } + }, { + key: "addNote", + value: function addNote(key, accid, octave) { + L('addNote:', key, accid, octave); + this.piece.chord.push({ + key: key, + accid: accid, + octave: octave + }); + } + }, { + key: "addSingleNote", + value: function addSingleNote(key, accid, octave) { + L('addSingleNote:', key, accid, octave); + this.addNote(key, accid, octave); + } + }, { + key: "addChord", + value: function addChord(notes) { + var _this8 = this; + + L('startChord'); + + if (_typeof(notes[0]) !== 'object') { + this.addSingleNote(notes[0]); + } else { + notes.forEach(function (n) { + if (n) _this8.addNote.apply(_this8, _toConsumableArray(n)); + }); + } + + L('endChord'); + } + }, { + key: "commitPiece", + value: function commitPiece() { + var _this9 = this; + + L('commitPiece'); + var factory = this.factory; + if (!factory) return; + + var options = _objectSpread({}, this.options, {}, this.piece.options); + + var stem = options.stem, + clef = options.clef; + var autoStem = stem.toLowerCase() === 'auto'; + var stemDirection = !autoStem && stem.toLowerCase() === 'up' ? _stavenote__WEBPACK_IMPORTED_MODULE_1__["StaveNote"].STEM_UP : _stavenote__WEBPACK_IMPORTED_MODULE_1__["StaveNote"].STEM_DOWN; // Build StaveNotes. + + var _this$piece = this.piece, + chord = _this$piece.chord, + duration = _this$piece.duration, + dots = _this$piece.dots, + type = _this$piece.type; + var keys = chord.map(function (note) { + return note.key + '/' + note.octave; + }); + var note = factory.StaveNote({ + keys: keys, + duration: duration, + dots: dots, + type: type, + clef: clef, + auto_stem: autoStem + }); + if (!autoStem) note.setStemDirection(stemDirection); // Attach accidentals. + + var accids = chord.map(function (note) { + return note.accid || null; + }); + accids.forEach(function (accid, i) { + if (accid) note.addAccidental(i, factory.Accidental({ + type: accid + })); + }); // Attach dots. + + for (var i = 0; i < dots; i++) { + note.addDotToAll(); + } + + this.commitHooks.forEach(function (fn) { + return fn(options, note, _this9); + }); + this.elements.notes.push(note); + this.elements.accidentals.concat(accids); + this.resetPiece(); + } + }]); + + return Builder; +}(); + +function setId(_ref, note) { + var id = _ref.id; + if (id === undefined) return; + note.setAttribute('id', id); +} + +function setClass(options, note) { + if (!options["class"]) return; + var commaSeparatedRegex = /\s*,\s*/; + options["class"].split(commaSeparatedRegex).forEach(function (className) { + return note.addClass(className); + }); +} + +var EasyScore = +/*#__PURE__*/ +function () { + function EasyScore() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + _classCallCheck(this, EasyScore); + + this.setOptions(options); + this.defaults = { + clef: 'treble', + time: '4/4', + stem: 'auto' + }; + } + + _createClass(EasyScore, [{ + key: "set", + value: function set(defaults) { + _extends(this.defaults, defaults); + + return this; + } + }, { + key: "setOptions", + value: function setOptions(options) { + var _this10 = this; + + this.options = _objectSpread({ + factory: null, + builder: null, + commitHooks: [setId, setClass, _articulation__WEBPACK_IMPORTED_MODULE_3__["Articulation"].easyScoreHook], + throwOnError: false + }, options); + this.factory = this.options.factory; + this.builder = this.options.builder || new Builder(this.factory); + this.grammar = new Grammar(this.builder); + this.parser = new _parser__WEBPACK_IMPORTED_MODULE_2__["Parser"](this.grammar); + this.options.commitHooks.forEach(function (commitHook) { + return _this10.addCommitHook(commitHook); + }); + return this; + } + }, { + key: "setContext", + value: function setContext(context) { + if (this.factory) this.factory.setContext(context); + return this; + } + }, { + key: "parse", + value: function parse(line) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + this.builder.reset(options); + var result = this.parser.parse(line); + + if (!result.success && this.options.throwOnError) { + throw new X('Error parsing line: ' + line, result); + } + + return result; + } + }, { + key: "beam", + value: function beam(notes) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + this.factory.Beam({ + notes: notes, + options: options + }); + return notes; + } + }, { + key: "tuplet", + value: function tuplet(notes) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + this.factory.Tuplet({ + notes: notes, + options: options + }); + return notes; + } + }, { + key: "notes", + value: function notes(line) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + options = _objectSpread({ + clef: this.defaults.clef, + stem: this.defaults.stem + }, options); + this.parse(line, options); + return this.builder.getElements().notes; + } + }, { + key: "voice", + value: function voice(notes, voiceOptions) { + voiceOptions = _objectSpread({ + time: this.defaults.time + }, voiceOptions); + return this.factory.Voice(voiceOptions).addTickables(notes); + } + }, { + key: "addCommitHook", + value: function addCommitHook(commitHook) { + return this.builder.addCommitHook(commitHook); + } + }]); + + return EasyScore; +}(); + +/***/ }), + +/***/ "./src/element.js": +/*!************************!*\ + !*** ./src/element.js ***! + \************************/ +/*! exports provided: Element */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Element", function() { return Element; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _registry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./registry */ "./src/registry.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// @author Mohit Cheppudira +// +// ## Description +// +// This file implements a generic base class for VexFlow, with implementations +// of general functions and properties that can be inherited by all VexFlow elements. + + + +var Element = +/*#__PURE__*/ +function () { + _createClass(Element, null, [{ + key: "newID", + value: function newID() { + return 'auto' + Element.ID++; + } + }]); + + function Element() { + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + type = _ref.type; + + _classCallCheck(this, Element); + + this.attrs = { + id: Element.newID(), + el: null, + type: type || 'Base', + classes: {} + }; + this.boundingBox = null; + this.context = null; + this.rendered = false; + this.fontStack = _tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].DEFAULT_FONT_STACK; + this.musicFont = _tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].DEFAULT_FONT_STACK[0]; // If a default registry exist, then register with it right away. + + if (_registry__WEBPACK_IMPORTED_MODULE_1__["Registry"].getDefaultRegistry()) { + _registry__WEBPACK_IMPORTED_MODULE_1__["Registry"].getDefaultRegistry().register(this); + } + } // set music font + + + _createClass(Element, [{ + key: "setFontStack", + value: function setFontStack(fontStack) { + this.fontStack = fontStack; + this.musicFont = fontStack[0]; + return this; + } + }, { + key: "getFontStack", + value: function getFontStack() { + return this.fontStack; + } // set the draw style of a stemmable note: + + }, { + key: "setStyle", + value: function setStyle(style) { + this.style = style; + return this; + } + }, { + key: "getStyle", + value: function getStyle() { + return this.style; + } // Apply current style to Canvas `context` + + }, { + key: "applyStyle", + value: function applyStyle() { + var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.context; + var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getStyle(); + if (!style) return this; + context.save(); + if (style.shadowColor) context.setShadowColor(style.shadowColor); + if (style.shadowBlur) context.setShadowBlur(style.shadowBlur); + if (style.fillStyle) context.setFillStyle(style.fillStyle); + if (style.strokeStyle) context.setStrokeStyle(style.strokeStyle); + if (style.lineWidth) context.setLineWidth(style.lineWidth); + return this; + } + }, { + key: "restoreStyle", + value: function restoreStyle() { + var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.context; + var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getStyle(); + if (!style) return this; + context.restore(); + return this; + } // draw with style of an element. + + }, { + key: "drawWithStyle", + value: function drawWithStyle() { + this.checkContext(); + this.applyStyle(); + this.draw(); + this.restoreStyle(); + } // An element can have multiple class labels. + + }, { + key: "hasClass", + value: function hasClass(className) { + return this.attrs.classes[className] === true; + } + }, { + key: "addClass", + value: function addClass(className) { + this.attrs.classes[className] = true; + + if (this.registry) { + this.registry.onUpdate({ + id: this.getAttribute('id'), + name: 'class', + value: className, + oldValue: null + }); + } + + return this; + } + }, { + key: "removeClass", + value: function removeClass(className) { + delete this.attrs.classes[className]; + + if (this.registry) { + this.registry.onUpdate({ + id: this.getAttribute('id'), + name: 'class', + value: null, + oldValue: className + }); + } + + return this; + } // This is called by the registry after the element is registered. + + }, { + key: "onRegister", + value: function onRegister(registry) { + this.registry = registry; + return this; + } + }, { + key: "isRendered", + value: function isRendered() { + return this.rendered; + } + }, { + key: "setRendered", + value: function setRendered() { + var rendered = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; + this.rendered = rendered; + return this; + } + }, { + key: "getAttributes", + value: function getAttributes() { + return this.attrs; + } + }, { + key: "getAttribute", + value: function getAttribute(name) { + return this.attrs[name]; + } + }, { + key: "setAttribute", + value: function setAttribute(name, value) { + var id = this.attrs.id; + var oldValue = this.attrs[name]; + this.attrs[name] = value; + + if (this.registry) { + // Register with old id to support id changes. + this.registry.onUpdate({ + id: id, + name: name, + value: value, + oldValue: oldValue + }); + } + + return this; + } + }, { + key: "getContext", + value: function getContext() { + return this.context; + } + }, { + key: "setContext", + value: function setContext(context) { + this.context = context; + return this; + } + }, { + key: "getBoundingBox", + value: function getBoundingBox() { + return this.boundingBox; + } // Validators + + }, { + key: "checkContext", + value: function checkContext() { + if (!this.context) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoContext', 'No rendering context attached to instance'); + } + + return this.context; + } + }]); + + return Element; +}(); +Element.ID = 1000; + +/***/ }), + +/***/ "./src/factory.js": +/*!************************!*\ + !*** ./src/factory.js ***! + \************************/ +/*! exports provided: X, Factory */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "X", function() { return X; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Factory", function() { return Factory; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _accidental__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./accidental */ "./src/accidental.js"); +/* harmony import */ var _articulation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./articulation */ "./src/articulation.js"); +/* harmony import */ var _annotation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./annotation */ "./src/annotation.js"); +/* harmony import */ var _formatter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./formatter */ "./src/formatter.js"); +/* harmony import */ var _frethandfinger__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./frethandfinger */ "./src/frethandfinger.js"); +/* harmony import */ var _stringnumber__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./stringnumber */ "./src/stringnumber.js"); +/* harmony import */ var _textdynamics__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./textdynamics */ "./src/textdynamics.js"); +/* harmony import */ var _modifiercontext__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modifiercontext */ "./src/modifiercontext.js"); +/* harmony import */ var _multimeasurerest__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./multimeasurerest */ "./src/multimeasurerest.js"); +/* harmony import */ var _renderer__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./renderer */ "./src/renderer.js"); +/* harmony import */ var _stave__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./stave */ "./src/stave.js"); +/* harmony import */ var _stavetie__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./stavetie */ "./src/stavetie.js"); +/* harmony import */ var _staveline__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./staveline */ "./src/staveline.js"); +/* harmony import */ var _stavenote__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./stavenote */ "./src/stavenote.js"); +/* harmony import */ var _glyphnote__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./glyphnote */ "./src/glyphnote.js"); +/* harmony import */ var _repeatnote__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./repeatnote */ "./src/repeatnote.js"); +/* harmony import */ var _staveconnector__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./staveconnector */ "./src/staveconnector.js"); +/* harmony import */ var _system__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./system */ "./src/system.js"); +/* harmony import */ var _tickcontext__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./tickcontext */ "./src/tickcontext.js"); +/* harmony import */ var _tuplet__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./tuplet */ "./src/tuplet.js"); +/* harmony import */ var _voice__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./voice */ "./src/voice.js"); +/* harmony import */ var _beam__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./beam */ "./src/beam.js"); +/* harmony import */ var _curve__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./curve */ "./src/curve.js"); +/* harmony import */ var _gracenote__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./gracenote */ "./src/gracenote.js"); +/* harmony import */ var _gracenotegroup__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./gracenotegroup */ "./src/gracenotegroup.js"); +/* harmony import */ var _notesubgroup__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./notesubgroup */ "./src/notesubgroup.js"); +/* harmony import */ var _easyscore__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./easyscore */ "./src/easyscore.js"); +/* harmony import */ var _timesignote__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./timesignote */ "./src/timesignote.js"); +/* harmony import */ var _keysignote__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./keysignote */ "./src/keysignote.js"); +/* harmony import */ var _clefnote__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./clefnote */ "./src/clefnote.js"); +/* harmony import */ var _pedalmarking__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./pedalmarking */ "./src/pedalmarking.js"); +/* harmony import */ var _textbracket__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./textbracket */ "./src/textbracket.js"); +/* harmony import */ var _vibratobracket__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./vibratobracket */ "./src/vibratobracket.js"); +/* harmony import */ var _ghostnote__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./ghostnote */ "./src/ghostnote.js"); +/* harmony import */ var _barnote__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./barnote */ "./src/barnote.js"); +/* harmony import */ var _tabnote__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./tabnote */ "./src/tabnote.js"); +/* harmony import */ var _tabstave__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./tabstave */ "./src/tabstave.js"); +/* harmony import */ var _textnote__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./textnote */ "./src/textnote.js"); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// @author Mohit Cheppudira +// +// ## Description +// +// This file implements a high level API around VexFlow. It will eventually +// become the canonical way to use VexFlow. +// +// *This API is currently DRAFT* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + // To enable logging for this class. Set `Vex.Flow.Factory.DEBUG` to `true`. + +function L() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (Factory.DEBUG) _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].L('Vex.Flow.Factory', args); +} + +var X = _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].MakeException('FactoryError'); + +function setDefaults() { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var defaults = arguments.length > 1 ? arguments[1] : undefined; + var default_options = defaults.options; + params = _extends(defaults, params); + params.options = _extends(default_options, params.options); + return params; +} + +var Factory = +/*#__PURE__*/ +function () { + function Factory(options) { + _classCallCheck(this, Factory); + + L('New factory: ', options); + var defaults = { + stave: { + space: 10 + }, + renderer: { + context: null, + elementId: '', + backend: _renderer__WEBPACK_IMPORTED_MODULE_10__["Renderer"].Backends.SVG, + width: 500, + height: 200, + background: '#FFF' + }, + font: { + face: 'Arial', + point: 10, + style: '' + } + }; + this.options = defaults; + this.setOptions(options); + } + + _createClass(Factory, [{ + key: "reset", + value: function reset() { + this.renderQ = []; + this.systems = []; + this.staves = []; + this.voices = []; + this.stave = null; // current stave + } + }, { + key: "getOptions", + value: function getOptions() { + return this.options; + } + }, { + key: "setOptions", + value: function setOptions(options) { + for (var _i = 0, _arr = ['stave', 'renderer', 'font']; _i < _arr.length; _i++) { + var key = _arr[_i]; + + _extends(this.options[key], options[key]); + } + + if (this.options.renderer.elementId !== null || this.options.renderer.context) { + this.initRenderer(); + } + + this.reset(); + } + }, { + key: "initRenderer", + value: function initRenderer() { + var _this$options$rendere = this.options.renderer, + elementId = _this$options$rendere.elementId, + backend = _this$options$rendere.backend, + width = _this$options$rendere.width, + height = _this$options$rendere.height, + background = _this$options$rendere.background; + + if (elementId === '') { + throw new X('HTML DOM element not set in Factory'); + } + + this.context = _renderer__WEBPACK_IMPORTED_MODULE_10__["Renderer"].buildContext(elementId, backend, width, height, background); + } + }, { + key: "getContext", + value: function getContext() { + return this.context; + } + }, { + key: "setContext", + value: function setContext(context) { + this.context = context; + return this; + } + }, { + key: "getStave", + value: function getStave() { + return this.stave; + } + }, { + key: "getVoices", + value: function getVoices() { + return this.voices; + } // Returns pixels from current stave spacing. + + }, { + key: "space", + value: function space(spacing) { + return this.options.stave.space * spacing; + } + }, { + key: "Stave", + value: function Stave(params) { + params = setDefaults(params, { + x: 0, + y: 0, + width: this.options.renderer.width - this.space(1), + options: { + spacing_between_lines_px: this.options.stave.space + } + }); + var stave = new _stave__WEBPACK_IMPORTED_MODULE_11__["Stave"](params.x, params.y, params.width, params.options); + this.staves.push(stave); + stave.setContext(this.context); + this.stave = stave; + return stave; + } + }, { + key: "TabStave", + value: function TabStave(params) { + params = setDefaults(params, { + x: 0, + y: 0, + width: this.options.renderer.width - this.space(1), + options: { + spacing_between_lines_px: this.options.stave.space * 1.3 + } + }); + var stave = new _tabstave__WEBPACK_IMPORTED_MODULE_37__["TabStave"](params.x, params.y, params.width, params.options); + this.staves.push(stave); + stave.setContext(this.context); + this.stave = stave; + return stave; + } + }, { + key: "StaveNote", + value: function StaveNote(noteStruct) { + var note = new _stavenote__WEBPACK_IMPORTED_MODULE_14__["StaveNote"](noteStruct); + if (this.stave) note.setStave(this.stave); + note.setContext(this.context); + this.renderQ.push(note); + return note; + } + }, { + key: "GlyphNote", + value: function GlyphNote(glyph, noteStruct, options) { + var note = new _glyphnote__WEBPACK_IMPORTED_MODULE_15__["GlyphNote"](glyph, noteStruct, options); + if (this.stave) note.setStave(this.stave); + note.setContext(this.context); + this.renderQ.push(note); + return note; + } + }, { + key: "RepeatNote", + value: function RepeatNote(type, noteStruct, options) { + var note = new _repeatnote__WEBPACK_IMPORTED_MODULE_16__["RepeatNote"](type, noteStruct, options); + if (this.stave) note.setStave(this.stave); + note.setContext(this.context); + this.renderQ.push(note); + return note; + } + }, { + key: "GhostNote", + value: function GhostNote(noteStruct) { + var ghostNote = new _ghostnote__WEBPACK_IMPORTED_MODULE_34__["GhostNote"](noteStruct); + if (this.stave) ghostNote.setStave(this.stave); + ghostNote.setContext(this.context); + this.renderQ.push(ghostNote); + return ghostNote; + } + }, { + key: "TextNote", + value: function TextNote(textNoteStruct) { + var textNote = new _textnote__WEBPACK_IMPORTED_MODULE_38__["TextNote"](textNoteStruct); + if (this.stave) textNote.setStave(this.stave); + textNote.setContext(this.context); + this.renderQ.push(textNote); + return textNote; + } + }, { + key: "BarNote", + value: function BarNote(params) { + params = setDefaults(params, { + type: 'single', + options: {} + }); + var barNote = new _barnote__WEBPACK_IMPORTED_MODULE_35__["BarNote"](params.type); + if (this.stave) barNote.setStave(this.stave); + barNote.setContext(this.context); + this.renderQ.push(barNote); + return barNote; + } + }, { + key: "ClefNote", + value: function ClefNote(params) { + params = setDefaults(params, { + type: 'treble', + options: { + size: 'default' + } + }); + var clefNote = new _clefnote__WEBPACK_IMPORTED_MODULE_30__["ClefNote"](params.type, params.options.size, params.options.annotation); + if (this.stave) clefNote.setStave(this.stave); + clefNote.setContext(this.context); + this.renderQ.push(clefNote); + return clefNote; + } + }, { + key: "TimeSigNote", + value: function TimeSigNote(params) { + params = setDefaults(params, { + time: '4/4', + options: {} + }); + var timeSigNote = new _timesignote__WEBPACK_IMPORTED_MODULE_28__["TimeSigNote"](params.time); + if (this.stave) timeSigNote.setStave(this.stave); + timeSigNote.setContext(this.context); + this.renderQ.push(timeSigNote); + return timeSigNote; + } + }, { + key: "KeySigNote", + value: function KeySigNote(params) { + var keySigNote = new _keysignote__WEBPACK_IMPORTED_MODULE_29__["KeySigNote"](params.key, params.cancelKey, params.alterKey); + if (this.stave) keySigNote.setStave(this.stave); + keySigNote.setContext(this.context); + this.renderQ.push(keySigNote); + return keySigNote; + } + }, { + key: "TabNote", + value: function TabNote(noteStruct) { + var note = new _tabnote__WEBPACK_IMPORTED_MODULE_36__["TabNote"](noteStruct); + if (this.stave) note.setStave(this.stave); + note.setContext(this.context); + this.renderQ.push(note); + return note; + } + }, { + key: "GraceNote", + value: function GraceNote(noteStruct) { + var note = new _gracenote__WEBPACK_IMPORTED_MODULE_24__["GraceNote"](noteStruct); + if (this.stave) note.setStave(this.stave); + note.setContext(this.context); + return note; + } + }, { + key: "GraceNoteGroup", + value: function GraceNoteGroup(params) { + var group = new _gracenotegroup__WEBPACK_IMPORTED_MODULE_25__["GraceNoteGroup"](params.notes, params.slur); + group.setContext(this.context); + return group; + } + }, { + key: "Accidental", + value: function Accidental(params) { + params = setDefaults(params, { + type: null, + options: {} + }); + var accid = new _accidental__WEBPACK_IMPORTED_MODULE_1__["Accidental"](params.type); + accid.setContext(this.context); + return accid; + } + }, { + key: "Annotation", + value: function Annotation(params) { + params = setDefaults(params, { + text: 'p', + vJustify: 'below', + hJustify: 'center', + fontFamily: 'Times', + fontSize: 14, + fontWeight: 'bold italic', + options: {} + }); + var annotation = new _annotation__WEBPACK_IMPORTED_MODULE_3__["Annotation"](params.text); + annotation.setJustification(params.hJustify); + annotation.setVerticalJustification(params.vJustify); + annotation.setFont(params.fontFamily, params.fontSize, params.fontWeight); + annotation.setContext(this.context); + return annotation; + } + }, { + key: "Articulation", + value: function Articulation(params) { + params = setDefaults(params, { + type: 'a.', + position: 'above', + options: {} + }); + var articulation = new _articulation__WEBPACK_IMPORTED_MODULE_2__["Articulation"](params.type); + articulation.setPosition(params.position); + articulation.setContext(this.context); + return articulation; + } + }, { + key: "TextDynamics", + value: function TextDynamics(params) { + params = setDefaults(params, { + text: 'p', + duration: 'q', + dots: 0, + line: 0, + options: {} + }); + var text = new _textdynamics__WEBPACK_IMPORTED_MODULE_7__["TextDynamics"]({ + text: params.text, + line: params.line, + duration: params.duration, + dots: params.dots + }); + if (this.stave) text.setStave(this.stave); + text.setContext(this.context); + this.renderQ.push(text); + return text; + } + }, { + key: "Fingering", + value: function Fingering(params) { + params = setDefaults(params, { + number: '0', + position: 'left', + options: {} + }); + var fingering = new _frethandfinger__WEBPACK_IMPORTED_MODULE_5__["FretHandFinger"](params.number); + fingering.setPosition(params.position); + fingering.setContext(this.context); + return fingering; + } + }, { + key: "StringNumber", + value: function StringNumber(params) { + params = setDefaults(params, { + number: '0', + position: 'left', + options: {} + }); + var stringNumber = new _stringnumber__WEBPACK_IMPORTED_MODULE_6__["StringNumber"](params.number); + stringNumber.setPosition(params.position); + stringNumber.setContext(this.context); + return stringNumber; + } + }, { + key: "TickContext", + value: function TickContext() { + return new _tickcontext__WEBPACK_IMPORTED_MODULE_19__["TickContext"]().setContext(this.context); + } + }, { + key: "ModifierContext", + value: function ModifierContext() { + return new _modifiercontext__WEBPACK_IMPORTED_MODULE_8__["ModifierContext"](); + } + }, { + key: "MultiMeasureRest", + value: function MultiMeasureRest(params) { + var multimeasurerest = new _multimeasurerest__WEBPACK_IMPORTED_MODULE_9__["MultiMeasureRest"](params.number_of_measures, params); + multimeasurerest.setContext(this.context); + this.renderQ.push(multimeasurerest); + return multimeasurerest; + } + }, { + key: "Voice", + value: function Voice(params) { + params = setDefaults(params, { + time: '4/4', + options: {} + }); + var voice = new _voice__WEBPACK_IMPORTED_MODULE_21__["Voice"](params.time, params.options); + this.voices.push(voice); + return voice; + } + }, { + key: "StaveConnector", + value: function StaveConnector(params) { + params = setDefaults(params, { + top_stave: null, + bottom_stave: null, + type: 'double', + options: {} + }); + var connector = new _staveconnector__WEBPACK_IMPORTED_MODULE_17__["StaveConnector"](params.top_stave, params.bottom_stave); + connector.setType(params.type).setContext(this.context); + this.renderQ.push(connector); + return connector; + } + }, { + key: "Formatter", + value: function Formatter() { + return new _formatter__WEBPACK_IMPORTED_MODULE_4__["Formatter"](); + } + }, { + key: "Tuplet", + value: function Tuplet(params) { + params = setDefaults(params, { + notes: [], + options: {} + }); + var tuplet = new _tuplet__WEBPACK_IMPORTED_MODULE_20__["Tuplet"](params.notes, params.options).setContext(this.context); + this.renderQ.push(tuplet); + return tuplet; + } + }, { + key: "Beam", + value: function Beam(params) { + params = setDefaults(params, { + notes: [], + options: { + autoStem: false, + secondaryBeamBreaks: [] + } + }); + var beam = new _beam__WEBPACK_IMPORTED_MODULE_22__["Beam"](params.notes, params.options.autoStem).setContext(this.context); + beam.breakSecondaryAt(params.options.secondaryBeamBreaks); + this.renderQ.push(beam); + return beam; + } + }, { + key: "Curve", + value: function Curve(params) { + params = setDefaults(params, { + from: null, + to: null, + options: {} + }); + var curve = new _curve__WEBPACK_IMPORTED_MODULE_23__["Curve"](params.from, params.to, params.options).setContext(this.context); + this.renderQ.push(curve); + return curve; + } + }, { + key: "StaveTie", + value: function StaveTie(params) { + params = setDefaults(params, { + from: null, + to: null, + first_indices: [0], + last_indices: [0], + text: null, + options: { + direction: undefined + } + }); + var tie = new _stavetie__WEBPACK_IMPORTED_MODULE_12__["StaveTie"]({ + first_note: params.from, + last_note: params.to, + first_indices: params.first_indices, + last_indices: params.last_indices + }, params.text); + if (params.options.direction) tie.setDirection(params.options.direction); + tie.setContext(this.context); + this.renderQ.push(tie); + return tie; + } + }, { + key: "StaveLine", + value: function StaveLine(params) { + params = setDefaults(params, { + from: null, + to: null, + first_indices: [0], + last_indices: [0], + options: {} + }); + var line = new _staveline__WEBPACK_IMPORTED_MODULE_13__["StaveLine"]({ + first_note: params.from, + last_note: params.to, + first_indices: params.first_indices, + last_indices: params.last_indices + }); + if (params.options.text) line.setText(params.options.text); + if (params.options.font) line.setFont(params.options.font); + line.setContext(this.context); + this.renderQ.push(line); + return line; + } + }, { + key: "VibratoBracket", + value: function VibratoBracket(params) { + params = setDefaults(params, { + from: null, + to: null, + options: { + harsh: false + } + }); + var vibratoBracket = new _vibratobracket__WEBPACK_IMPORTED_MODULE_33__["VibratoBracket"]({ + start: params.from, + stop: params.to + }); + if (params.options.line) vibratoBracket.setLine(params.options.line); + if (params.options.harsh) vibratoBracket.setHarsh(params.options.harsh); + vibratoBracket.setContext(this.context); + this.renderQ.push(vibratoBracket); + return vibratoBracket; + } + }, { + key: "TextBracket", + value: function TextBracket(params) { + params = setDefaults(params, { + from: null, + to: null, + text: '', + options: { + superscript: '', + position: 1 + } + }); + var textBracket = new _textbracket__WEBPACK_IMPORTED_MODULE_32__["TextBracket"]({ + start: params.from, + stop: params.to, + text: params.text, + superscript: params.options.superscript, + position: params.options.position + }); + if (params.options.line) textBracket.setLine(params.options.line); + if (params.options.font) textBracket.setFont(params.options.font); + textBracket.setContext(this.context); + this.renderQ.push(textBracket); + return textBracket; + } + }, { + key: "System", + value: function System() { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + params.factory = this; + var system = new _system__WEBPACK_IMPORTED_MODULE_18__["System"](params).setContext(this.context); + this.systems.push(system); + return system; + } + }, { + key: "EasyScore", + value: function EasyScore() { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + params.factory = this; + return new _easyscore__WEBPACK_IMPORTED_MODULE_27__["EasyScore"](params); + } + }, { + key: "PedalMarking", + value: function PedalMarking() { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + params = setDefaults(params, { + notes: [], + options: { + style: 'mixed' + } + }); + var pedal = new _pedalmarking__WEBPACK_IMPORTED_MODULE_31__["PedalMarking"](params.notes); + pedal.setStyle(_pedalmarking__WEBPACK_IMPORTED_MODULE_31__["PedalMarking"].StylesString[params.options.style]); + pedal.setContext(this.context); + this.renderQ.push(pedal); + return pedal; + } + }, { + key: "NoteSubGroup", + value: function NoteSubGroup() { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + params = setDefaults(params, { + notes: [], + options: {} + }); + var group = new _notesubgroup__WEBPACK_IMPORTED_MODULE_26__["NoteSubGroup"](params.notes); + group.setContext(this.context); + return group; + } + }, { + key: "draw", + value: function draw() { + var _this = this; + + this.systems.forEach(function (i) { + return i.setContext(_this.context).format(); + }); + this.staves.forEach(function (i) { + return i.setContext(_this.context).draw(); + }); + this.voices.forEach(function (i) { + return i.setContext(_this.context).draw(); + }); + this.renderQ.forEach(function (i) { + if (!i.isRendered()) i.setContext(_this.context).draw(); + }); + this.systems.forEach(function (i) { + return i.setContext(_this.context).draw(); + }); + this.reset(); + } + }], [{ + key: "newFromElementId", + value: function newFromElementId(elementId) { + var width = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 500; + var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200; + return new Factory({ + renderer: { + elementId: elementId, + width: width, + height: height + } + }); + } + }]); + + return Factory; +}(); + +/***/ }), + +/***/ "./src/fonts/bravura_glyphs.js": +/*!*************************************!*\ + !*** ./src/fonts/bravura_glyphs.js ***! + \*************************************/ +/*! exports provided: BravuraFont */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BravuraFont", function() { return BravuraFont; }); +var BravuraFont = { + 'glyphs': { + 'bracketTop': { + 'x_min': 0, + 'x_max': 469, + 'y_min': 0, + 'y_max': 295, + 'ha': 295, + 'o': 'm 0 168 l 0 0 l 180 0 b 674 390 410 43 616 150 b 675 405 675 396 675 400 b 664 425 675 416 671 422 b 628 405 651 425 635 415 b 157 179 613 389 432 199 l 12 179 b 0 168 3 179 0 177 z' + }, + 'bracketBottom': { + 'x_min': 0, + 'x_max': 469, + 'y_min': -295, + 'y_max': 0, + 'ha': 295, + 'o': 'm 0 0 l 0 -168 b 12 -179 0 -177 3 -179 l 157 -179 b 628 -405 432 -199 613 -389 b 664 -425 635 -415 651 -425 b 675 -405 671 -422 675 -416 b 674 -390 675 -400 675 -396 b 180 0 616 -150 410 -43 z' + }, + 'barlineTick': { + 'x_min': 0, + 'x_max': 36, + 'y_min': 868, + 'y_max': 1120, + 'ha': 252, + 'o': 'm 52 1250 l 52 1613 l 0 1613 l 0 1250 z' + }, + 'breathMarkTick': { + 'x_min': 0, + 'x_max': 500, + 'y_min': 0, + 'y_max': 502, + 'ha': 502, + 'o': 'm 0 374 b 9 334 0 367 0 343 b 179 19 40 312 164 121 b 192 0 179 3 186 0 b 210 19 197 0 207 6 b 698 701 245 197 507 658 b 720 714 714 704 720 711 b 698 723 720 720 711 723 b 197 186 455 714 210 202 b 186 176 194 179 189 176 b 176 186 179 176 176 186 b 9 367 143 266 27 359 b 0 374 6 372 3 374 z' + }, + 'segno': { + 'x_min': 4, + 'x_max': 550, + 'y_min': -27, + 'y_max': 759, + 'ha': 786, + 'o': 'm 29 687 b 295 449 75 582 284 454 b 304 438 301 446 304 444 b 295 415 304 432 301 425 b 78 22 285 395 78 22 b 73 3 75 16 73 9 b 114 -39 73 -20 91 -39 b 150 -17 128 -39 143 -30 b 377 395 150 -17 373 386 b 395 402 377 393 389 402 b 704 176 416 397 704 312 b 624 75 704 120 670 82 b 613 73 621 75 616 73 b 562 138 586 73 562 94 l 562 154 b 485 249 562 209 526 249 b 468 246 480 249 474 248 b 366 153 415 233 366 210 b 540 -12 366 65 455 -12 b 600 -1 559 -12 579 -9 b 792 251 716 37 792 131 b 789 292 792 264 791 278 b 523 588 768 451 540 579 b 498 611 505 598 498 603 b 501 619 498 613 500 616 b 732 1032 508 631 732 1032 b 737 1053 736 1040 737 1045 b 697 1093 737 1076 719 1093 b 661 1073 683 1093 668 1086 b 423 647 661 1073 432 660 b 410 635 419 639 416 635 b 396 639 406 635 402 636 b 128 792 383 644 166 727 b 108 868 120 808 108 838 b 186 958 108 907 125 948 l 194 958 b 217 939 203 958 213 955 l 220 929 b 325 805 230 890 252 805 b 425 901 384 805 425 840 b 413 969 425 923 420 946 b 220 1060 390 1035 294 1060 b 6 793 120 1060 6 936 b 29 687 6 759 13 723 z m 680 589 b 762 671 726 589 762 626 b 680 753 762 717 726 753 b 598 671 635 753 598 717 b 680 589 598 626 635 589 z m 120 298 b 202 380 166 298 202 334 b 120 462 202 425 166 462 b 37 380 75 462 37 425 b 120 298 37 334 75 298 z' + }, + 'coda': { + 'x_min': -4, + 'x_max': 955, + 'y_min': -158, + 'y_max': 898, + 'ha': 1056, + 'o': 'm -6 541 b 20 507 -6 523 0 507 l 210 507 b 660 0 226 238 426 19 l 660 -202 b 694 -228 660 -222 675 -228 b 729 -202 713 -228 729 -222 l 729 0 b 1178 507 962 19 1164 238 l 1349 507 b 1375 541 1369 507 1375 523 b 1349 576 1375 560 1369 576 l 1178 576 b 729 1083 1164 847 962 1064 l 729 1269 b 694 1293 729 1287 713 1293 b 660 1269 675 1293 660 1287 l 660 1083 b 210 576 426 1064 226 848 l 20 576 b -6 541 0 576 -6 560 z m 940 576 l 729 576 l 729 1002 b 940 576 930 985 940 809 z m 729 507 l 940 507 b 729 69 936 287 909 91 z m 455 576 b 660 1002 455 809 455 985 l 660 576 z m 660 507 l 660 69 b 455 507 474 91 456 285 z' + }, + 'gClef': { + 'x_min': 0, + 'x_max': 671, + 'y_min': -658, + 'y_max': 1098, + 'ha': 1756, + 'o': 'm 524 -363 b 624 -354 557 -363 595 -360 b 645 -367 639 -351 642 -350 b 684 -657 662 -464 684 -589 b 455 -896 684 -870 540 -896 b 340 -854 377 -896 340 -873 b 386 -829 340 -844 353 -840 b 482 -694 431 -816 482 -778 b 344 -547 482 -615 432 -547 b 190 -713 248 -547 190 -624 b 464 -948 190 -806 246 -948 b 747 -660 560 -948 747 -904 b 706 -351 747 -577 721 -441 b 724 -327 703 -334 704 -336 b 966 16 870 -269 966 -147 b 619 363 966 200 831 363 b 577 389 582 363 582 363 l 541 598 b 550 625 539 615 541 616 b 824 1174 706 770 824 953 b 730 1509 824 1299 789 1423 b 655 1581 708 1541 671 1581 b 562 1512 635 1581 590 1544 b 420 1064 455 1394 420 1214 b 441 828 420 981 431 887 b 428 793 444 811 445 808 b 0 125 220 622 0 416 b 524 -363 0 -125 171 -363 z m 115 29 b 249 363 115 114 130 228 b 469 567 336 459 402 513 b 490 562 484 579 487 577 l 520 377 b 498 343 524 350 524 351 b 289 63 372 300 289 186 b 455 -192 289 -66 357 -158 b 494 -200 467 -196 484 -200 b 511 -184 505 -200 511 -193 b 490 -166 511 -174 500 -170 b 386 -12 429 -140 386 -78 b 530 157 386 71 442 132 b 559 145 553 163 556 161 l 631 -284 b 611 -304 634 -300 632 -300 b 530 -311 588 -308 559 -311 b 115 29 278 -311 115 -171 z m 677 1358 b 763 1240 724 1358 763 1319 b 513 851 763 1080 626 950 b 494 863 503 842 497 844 b 485 995 488 900 485 949 b 677 1358 485 1220 589 1358 z m 635 168 b 848 -66 752 158 848 60 b 713 -271 848 -157 793 -230 b 690 -262 696 -279 693 -279 l 619 148 b 635 168 616 166 618 170 z' + }, + 'cClef': { + 'x_min': 0, + 'x_max': 699, + 'y_min': -506, + 'y_max': 506, + 'ha': 1012, + 'o': 'm 269 -694 b 300 -724 269 -714 279 -724 l 301 -724 b 331 -694 321 -724 331 -714 l 331 -63 b 344 -55 331 -52 338 -53 b 472 -265 382 -65 442 -102 b 500 -301 477 -288 485 -301 b 530 -262 516 -301 523 -287 b 684 -128 549 -199 582 -128 b 804 -409 778 -128 804 -220 b 651 -683 804 -598 770 -683 b 528 -644 631 -683 528 -674 b 567 -622 528 -636 552 -628 b 625 -528 596 -612 625 -583 b 527 -429 625 -465 583 -429 b 416 -547 465 -429 416 -471 b 667 -729 416 -638 495 -729 b 1007 -413 903 -729 1007 -563 b 706 -76 1007 -215 897 -76 b 618 -89 664 -76 636 -84 b 576 -88 603 -94 589 -96 b 524 0 556 -75 524 -29 b 576 88 524 29 556 75 b 618 89 589 96 603 94 b 706 76 636 84 664 76 b 1007 413 897 76 1007 215 b 667 729 1007 563 903 729 b 416 547 495 729 416 638 b 527 429 416 471 465 429 b 625 528 583 429 625 465 b 567 622 625 583 596 612 b 528 644 552 628 528 636 b 651 683 528 674 631 683 b 804 409 770 683 804 598 b 684 128 804 220 778 128 b 530 262 582 128 549 199 b 500 301 523 287 516 301 b 472 265 485 301 477 288 b 344 55 442 102 382 65 b 331 63 338 53 331 52 l 331 694 b 301 724 331 714 321 724 l 300 724 b 269 694 279 724 269 714 z m 30 -724 l 154 -724 b 184 -694 174 -724 184 -714 l 184 694 b 154 724 184 714 174 724 l 30 724 b 0 694 10 724 0 714 l 0 -694 b 30 -724 0 -714 10 -724 z' + }, + 'fClef': { + 'x_min': -5, + 'x_max': 684, + 'y_min': -635, + 'y_max': 262, + 'ha': 897, + 'o': 'm 12 -914 b 36 -907 19 -914 27 -912 b 765 -40 390 -734 765 -478 b 363 377 765 210 612 377 b 0 56 112 377 0 194 b 177 -158 0 -59 60 -158 b 330 -6 268 -158 330 -95 b 192 144 330 86 262 144 b 120 134 153 144 138 134 b 96 160 101 134 96 145 b 330 323 96 217 183 323 b 549 -53 482 323 549 173 b 14 -871 549 -455 350 -680 b -7 -897 1 -878 -7 -886 b 12 -914 -7 -906 -1 -914 z m 906 101 b 985 180 950 101 985 135 b 906 259 985 225 950 259 b 827 180 861 259 827 225 b 906 101 827 135 861 101 z m 907 -258 b 985 -180 952 -258 985 -225 b 907 -102 985 -135 952 -102 b 829 -180 863 -102 829 -135 b 907 -258 829 -225 863 -258 z' + }, + 'unpitchedPercussionClef1': { + 'x_min': 0, + 'x_max': 382, + 'y_min': -250, + 'y_max': 250, + 'ha': 500, + 'o': 'm 320 338 l 320 -338 b 340 -360 320 -350 328 -360 l 530 -360 b 550 -338 541 -360 550 -350 l 550 338 b 530 360 550 350 541 360 l 340 360 b 320 338 328 360 320 350 z m 20 -360 l 210 -360 b 230 -338 222 -360 230 -350 l 230 338 b 210 360 230 350 222 360 l 20 360 b 0 338 9 360 0 350 l 0 -338 b 20 -360 0 -350 9 -360 z' + }, + '6stringTabClef': { + 'x_min': -3, + 'x_max': 408, + 'y_min': -748, + 'y_max': 764, + 'ha': 1512, + 'o': 'm 39 -399 l 39 -1077 l 344 -1077 b 544 -883 467 -1077 544 -995 b 420 -719 544 -802 507 -752 b 514 -572 482 -690 514 -639 b 314 -399 514 -472 442 -399 z m 88 -328 l 160 -125 l 420 -125 l 491 -328 l 588 -328 l 350 348 l 238 348 l -4 -328 z m 26 1100 l 26 1024 l 249 1024 l 249 422 l 336 422 l 336 1024 l 557 1024 l 557 1100 z m 125 -768 l 337 -768 b 458 -884 418 -768 458 -818 b 337 -1001 458 -949 418 -1001 l 125 -1001 z m 292 -475 b 428 -583 389 -475 428 -514 b 292 -691 428 -652 389 -691 l 125 -691 l 125 -475 z m 292 256 l 397 -52 l 181 -52 z' + }, + 'timeSig0': { + 'x_min': 20, + 'x_max': 450, + 'y_min': -250, + 'y_max': 251, + 'ha': 501, + 'o': 'm 338 -360 b 648 0 510 -360 648 -199 b 338 361 648 200 510 361 b 29 0 167 361 29 200 b 338 -360 29 -199 167 -360 z m 230 10 b 338 317 230 180 278 317 b 446 10 397 317 446 180 b 338 -295 446 -158 397 -295 b 230 10 278 -295 230 -158 z' + }, + 'timeSig1': { + 'x_min': 20, + 'x_max': 314, + 'y_min': -250, + 'y_max': 251, + 'ha': 501, + 'o': 'm 29 0 b 45 -20 29 -7 33 -16 b 58 -23 50 -22 56 -23 b 78 -10 72 -23 78 -10 b 156 117 78 -10 140 89 b 170 131 161 127 167 131 b 179 111 176 131 179 120 l 179 -261 b 115 -315 179 -294 145 -315 b 91 -337 105 -315 91 -320 b 122 -360 91 -353 104 -360 l 429 -360 b 452 -337 452 -360 452 -337 b 431 -315 452 -337 452 -315 b 384 -265 410 -315 384 -289 l 384 328 b 356 361 384 351 376 360 b 281 356 336 361 300 356 b 206 360 253 356 228 357 b 199 361 203 360 200 361 b 173 334 184 361 179 347 l 35 19 b 29 0 35 19 29 10 z' + }, + 'timeSig2': { + 'x_min': 20, + 'x_max': 426, + 'y_min': -257, + 'y_max': 254, + 'ha': 511, + 'o': 'm 29 170 b 42 108 29 150 33 130 b 160 29 63 63 108 29 b 261 156 248 29 261 120 b 161 275 261 242 161 246 b 275 330 164 295 190 330 b 405 192 403 330 405 233 b 193 -102 405 60 297 -39 b 33 -314 114 -153 58 -223 b 69 -370 33 -336 40 -370 b 203 -282 101 -370 118 -282 b 410 -360 261 -282 282 -360 b 606 -131 472 -360 583 -354 b 589 -111 606 -114 599 -111 b 570 -125 577 -111 573 -117 b 569 -130 570 -127 569 -128 b 513 -192 554 -164 543 -192 b 488 -187 505 -192 498 -190 b 445 -171 469 -180 459 -179 b 289 -137 416 -160 348 -137 b 236 -145 271 -137 252 -140 b 422 -42 268 -94 390 -50 b 613 147 523 -14 613 27 b 330 366 613 300 464 366 b 69 275 229 366 140 357 b 29 170 45 245 29 209 z' + }, + 'timeSig3': { + 'x_min': 20, + 'x_max': 401, + 'y_min': -251, + 'y_max': 249, + 'ha': 500, + 'o': 'm 29 -203 b 275 -361 32 -315 134 -359 l 288 -361 b 577 -161 431 -361 577 -288 l 577 -151 b 537 -50 575 -109 564 -82 b 503 -20 528 -39 517 -29 l 472 -3 l 425 10 b 410 17 418 12 413 12 b 409 24 409 20 409 22 b 415 37 409 30 410 36 b 459 50 431 42 446 43 b 547 181 517 78 547 115 b 307 357 547 314 367 353 b 285 359 300 357 292 359 b 37 200 161 359 37 276 b 154 84 37 153 65 89 l 161 84 b 256 177 225 84 256 130 l 256 189 b 209 248 252 242 216 245 b 180 268 202 251 180 248 l 180 274 b 240 310 183 298 228 310 b 374 199 363 310 374 233 l 374 189 b 199 36 374 82 289 40 b 164 12 184 35 164 27 b 200 -6 164 -6 189 -6 b 379 -137 366 -6 379 -118 b 269 -307 379 -289 301 -307 b 256 -305 264 -307 258 -305 b 216 -282 245 -304 217 -304 l 216 -275 b 249 -180 216 -243 248 -222 b 145 -76 249 -120 207 -76 b 130 -78 140 -76 135 -76 b 60 -115 105 -82 78 -96 b 29 -203 36 -137 29 -171 z' + }, + 'timeSig4': { + 'x_min': 20, + 'x_max': 450, + 'y_min': -250, + 'y_max': 251, + 'ha': 501, + 'o': 'm 58 -161 l 325 -161 l 325 -252 b 268 -302 325 -291 294 -302 b 235 -330 245 -302 235 -315 b 262 -360 235 -344 240 -360 l 569 -360 b 598 -330 583 -360 598 -350 b 566 -301 598 -310 580 -301 b 521 -246 552 -301 521 -292 l 521 -161 l 626 -161 b 648 -134 641 -161 648 -151 b 626 -107 648 -117 642 -107 l 521 -107 l 521 202 b 504 226 521 213 520 226 b 475 213 491 226 484 223 l 338 48 b 325 14 333 40 325 32 l 325 -107 l 131 -107 b 481 334 246 -9 477 318 b 482 341 481 337 482 338 b 461 361 482 353 472 361 b 363 359 448 361 389 359 b 261 361 337 359 272 361 b 228 334 248 361 228 357 b 43 -105 228 156 86 -45 l 35 -117 b 33 -121 35 -118 33 -120 b 29 -137 30 -127 29 -132 b 58 -161 29 -151 40 -161 z' + }, + 'timeSig5': { + 'x_min': 20, + 'x_max': 383, + 'y_min': -251, + 'y_max': 246, + 'ha': 497, + 'o': 'm 29 -183 b 284 -361 29 -302 107 -361 b 552 -125 456 -361 552 -255 b 314 112 552 6 445 112 b 122 71 230 112 168 98 b 115 69 120 69 117 69 b 109 79 109 69 109 75 l 109 85 b 117 179 109 85 115 166 b 138 197 118 190 125 197 l 144 197 b 285 184 158 194 226 184 b 492 323 485 184 492 300 b 472 353 492 341 488 353 b 295 340 454 353 341 340 b 101 354 249 340 125 351 b 66 330 75 354 68 341 l 50 10 l 50 7 b 79 -14 50 -12 65 -14 b 111 14 94 -14 95 -1 b 209 62 125 29 160 62 b 357 -125 258 62 357 35 b 235 -304 357 -284 272 -304 b 202 -300 223 -304 212 -304 b 184 -279 194 -295 186 -289 b 202 -259 184 -269 194 -264 b 256 -163 235 -239 256 -203 b 144 -50 256 -99 206 -50 b 30 -157 66 -50 35 -107 b 29 -183 29 -166 29 -174 z' + }, + 'timeSig6': { + 'x_min': 20, + 'x_max': 414, + 'y_min': -249, + 'y_max': 251, + 'ha': 500, + 'o': 'm 29 4 l 29 -1 b 73 -200 30 -68 42 -143 b 324 -359 132 -307 203 -359 b 513 -307 389 -359 461 -348 b 596 -137 563 -266 596 -202 b 379 72 596 -24 490 72 b 248 22 333 72 285 55 b 239 19 245 19 242 19 b 226 53 230 19 226 30 b 346 327 230 320 315 327 b 393 305 374 327 393 320 b 357 251 393 285 366 268 b 347 209 350 238 347 223 b 369 150 347 187 354 166 b 439 120 379 131 420 120 b 554 229 500 120 554 167 b 553 245 554 235 554 239 b 348 361 539 337 426 361 b 85 209 239 360 137 307 b 29 4 53 148 29 72 z m 320 3 b 405 -158 366 3 405 -69 b 320 -320 405 -248 366 -320 b 236 -158 274 -320 236 -248 b 320 3 236 -69 274 3 z' + }, + 'timeSig7': { + 'x_min': 20, + 'x_max': 421, + 'y_min': -250, + 'y_max': 249, + 'ha': 499, + 'o': 'm 29 71 b 45 48 29 71 30 48 b 66 76 56 48 60 60 b 164 196 81 112 99 196 b 374 88 222 196 291 88 b 446 118 415 88 435 109 b 459 124 451 121 456 124 b 469 111 465 124 468 120 b 272 -112 469 71 359 -10 b 173 -315 217 -176 173 -259 b 200 -360 173 -346 173 -360 b 294 -347 226 -360 258 -347 b 412 -360 330 -347 397 -360 b 435 -307 426 -360 435 -348 b 606 288 435 -66 606 140 l 606 294 b 582 351 606 333 606 351 b 552 336 580 351 557 346 b 485 236 541 318 521 236 b 262 359 449 236 382 359 b 137 307 179 359 157 325 b 98 281 117 288 108 282 b 60 315 86 281 68 301 b 43 325 58 321 50 325 b 29 308 36 325 29 321 z' + }, + 'timeSig8': { + 'x_min': 20, + 'x_max': 416, + 'y_min': -259, + 'y_max': 259, + 'ha': 518, + 'o': 'm 29 -190 b 301 -373 29 -315 158 -373 b 599 -117 445 -373 599 -311 b 481 52 599 -30 549 17 b 567 204 533 85 567 132 b 317 373 567 351 356 373 b 36 176 150 373 36 297 b 161 -16 36 76 92 23 b 29 -190 86 -52 29 -99 z m 111 -183 b 225 -48 111 -125 161 -72 b 436 -219 330 -94 436 -124 b 295 -325 436 -276 392 -325 b 111 -183 199 -325 111 -276 z m 314 331 b 482 207 360 331 482 308 b 406 85 482 150 454 112 b 168 240 291 125 168 150 b 314 331 168 301 251 331 z' + }, + 'timeSig9': { + 'x_min': 20, + 'x_max': 414, + 'y_min': -249, + 'y_max': 251, + 'ha': 500, + 'o': 'm 246 -69 b 377 -19 292 -69 340 -52 b 386 -16 380 -16 383 -16 b 399 -50 395 -16 399 -27 b 279 -324 395 -317 310 -324 b 232 -302 251 -324 232 -317 b 268 -248 232 -282 259 -265 b 278 -206 275 -235 278 -220 b 256 -147 278 -184 271 -163 b 186 -117 246 -128 204 -117 b 71 -226 125 -117 71 -164 b 72 -242 71 -232 71 -236 b 276 -359 86 -334 199 -359 b 540 -206 386 -357 488 -304 b 596 -1 572 -145 596 -69 l 596 4 b 552 203 595 71 583 145 b 301 361 492 310 422 361 b 112 310 236 361 164 351 b 29 140 62 269 29 204 b 246 -69 29 27 135 -69 z m 220 161 b 305 323 220 251 259 323 b 389 161 351 323 389 251 b 305 0 389 72 351 0 b 220 161 259 0 220 72 z' + }, + 'timeSigCommon': { + 'x_min': 5, + 'x_max': 424, + 'y_min': -249, + 'y_max': 251, + 'ha': 500, + 'o': 'm 101 -262 b 321 -359 156 -328 235 -359 b 611 -88 573 -359 611 -130 b 589 -56 611 -56 595 -56 b 567 -82 577 -56 567 -58 b 363 -311 567 -268 409 -311 b 184 40 246 -311 184 -197 b 372 327 184 278 294 327 b 477 278 446 327 477 292 b 451 246 477 265 472 246 b 360 140 393 246 360 184 b 471 32 360 58 431 32 b 580 156 471 32 580 36 b 336 361 580 344 363 361 b 7 -14 131 361 7 180 b 101 -262 7 -108 42 -190 z' + }, + 'timeSigCutCommon': { + 'x_min': 0, + 'x_max': 418, + 'y_min': -359, + 'y_max': 361, + 'ha': 720, + 'o': 'm 225 -346 b 252 -382 235 -350 252 -369 l 252 -492 b 276 -517 252 -505 265 -517 b 302 -492 292 -517 302 -505 l 302 -379 b 318 -359 302 -370 308 -363 b 602 -85 563 -354 602 -130 b 579 -58 600 -58 586 -58 l 573 -58 b 559 -82 567 -58 559 -60 b 354 -310 559 -266 400 -310 b 317 -305 340 -310 328 -308 b 302 -284 311 -304 302 -295 l 302 287 b 338 323 302 297 328 321 b 363 324 347 324 356 324 b 468 275 436 324 468 289 b 442 243 468 264 464 243 b 351 137 384 243 351 181 b 462 30 351 56 422 30 b 572 154 462 30 572 35 b 318 357 572 295 441 357 b 302 390 310 359 302 383 l 302 495 b 276 520 302 507 292 520 b 252 495 265 520 252 507 l 252 369 b 235 346 252 359 238 346 l 196 331 b 0 -14 66 275 0 122 b 225 -346 0 -150 86 -310 z m 232 259 b 236 262 233 262 235 262 b 252 239 243 262 252 251 l 252 -235 b 243 -252 252 -248 248 -252 b 236 -248 240 -252 238 -251 b 177 37 197 -193 177 -96 b 232 259 177 147 200 215 z' + }, + 'noteheadDoubleWhole': { + 'x_min': 0, + 'x_max': 599, + 'y_min': -155, + 'y_max': 155, + 'ha': 310, + 'o': 'm 423 -180 b 733 1 657 -180 733 -98 l 733 -213 b 747 -223 733 -219 740 -223 l 766 -223 b 780 -213 773 -223 780 -219 l 780 212 b 766 223 780 217 773 223 l 747 223 b 733 212 740 223 733 217 l 733 1 b 438 180 733 104 572 180 b 130 1 248 180 130 101 b 423 -180 130 -92 210 -180 z m 284 58 b 400 147 284 131 333 147 b 577 -45 498 147 577 42 b 469 -145 577 -115 533 -145 b 331 -71 409 -145 369 -112 b 284 58 305 -37 284 12 z m 815 -213 b 829 -223 815 -219 824 -223 l 848 -223 b 863 -213 857 -223 863 -219 l 863 212 b 848 223 863 217 857 223 l 829 223 b 815 212 824 223 815 217 z m 82 212 l 82 -213 b 96 -223 82 -219 88 -223 l 114 -223 b 128 -213 121 -223 128 -219 l 128 212 b 114 223 128 217 121 223 l 96 223 b 82 212 88 223 82 217 z m 13 -223 l 32 -223 b 45 -213 39 -223 45 -219 l 45 212 b 32 223 45 217 39 223 l 13 223 b 0 212 4 223 0 217 l 0 -213 b 13 -223 0 -219 4 -223 z' + }, + 'noteheadWhole': { + 'x_min': 0, + 'x_max': 422, + 'y_min': -125, + 'y_max': 125, + 'ha': 250, + 'o': 'm 0 3 b 297 -180 0 -94 82 -180 b 608 3 533 -180 608 -98 b 311 180 608 105 445 180 b 0 3 120 180 0 101 z m 156 56 b 160 91 156 68 157 79 b 274 148 176 141 229 148 b 452 -45 373 148 452 42 b 386 -141 452 -89 433 -130 b 341 -147 372 -145 356 -147 b 206 -72 289 -147 236 -112 b 156 56 177 -39 156 10 z' + }, + 'noteheadHalf': { + 'x_min': 0, + 'x_max': 295, + 'y_min': -125, + 'y_max': 125, + 'ha': 250, + 'o': 'm 140 -180 b 425 60 377 -180 425 13 b 282 180 425 134 366 180 b 0 -60 68 180 0 14 b 140 -180 0 -137 60 -180 z m 42 -63 b 318 121 42 7 251 121 b 372 91 346 121 361 108 b 380 63 376 82 380 73 b 108 -125 380 1 177 -125 b 50 -92 78 -125 60 -109 b 42 -63 46 -84 42 -73 z' + }, + 'noteheadBlack': { + 'x_min': 0, + 'x_max': 295, + 'y_min': -125, + 'y_max': 125, + 'ha': 250, + 'o': 'm 0 -60 b 140 -180 0 -135 62 -180 b 425 60 268 -180 425 -62 b 285 180 425 134 367 180 b 0 -60 127 180 0 63 z' + }, + 'noteheadXWhole': { + 'x_min': 0, + 'x_max': 377, + 'y_min': -125, + 'y_max': 125, + 'ha': 250, + 'o': 'm 0 148 b 12 124 0 140 4 131 l 132 0 l 12 -124 b 1 -148 4 -131 1 -140 b 32 -180 1 -164 14 -180 l 158 -180 b 179 -171 166 -180 173 -177 l 272 -95 l 364 -171 b 384 -180 370 -177 377 -180 l 511 -180 b 543 -148 528 -180 543 -164 b 531 -124 543 -140 539 -131 l 412 0 l 531 124 b 541 148 539 131 541 140 b 513 180 541 164 528 180 l 384 180 b 364 171 377 180 370 177 l 272 94 l 179 171 b 158 180 173 177 166 180 l 30 180 b 0 148 16 180 0 164 z m 245 0 l 88 141 l 157 141 l 272 45 l 386 141 l 456 141 l 300 0 l 456 -141 l 386 -141 l 272 -45 l 157 -141 l 88 -141 z' + }, + 'noteheadXHalf': { + 'x_min': 0, + 'x_max': 334, + 'y_min': -125, + 'y_max': 125, + 'ha': 250, + 'o': 'm 32 -180 l 184 -180 b 209 -170 193 -180 203 -177 l 271 -99 l 363 -171 b 384 -180 370 -176 377 -180 l 445 -180 b 478 -147 461 -180 478 -163 b 465 -125 478 -138 474 -131 l 341 -22 l 474 127 b 481 148 480 131 481 138 b 448 180 481 166 468 180 l 295 180 b 271 170 287 180 278 177 l 209 98 l 115 171 b 95 180 109 177 104 180 l 36 180 b 4 148 19 180 4 164 b 14 124 4 140 7 132 l 140 22 l 7 -127 b 0 -148 3 -131 0 -138 b 32 -180 0 -166 14 -180 z m 95 148 l 233 33 l 334 148 l 410 148 l 274 -6 l 445 -148 l 384 -148 l 248 -35 l 147 -148 l 71 -148 l 206 4 l 36 148 z' + }, + 'noteheadXBlack': { + 'x_min': 0, + 'x_max': 290, + 'y_min': -125, + 'y_max': 125, + 'ha': 250, + 'o': 'm 0 -158 b 19 -180 0 -170 7 -180 b 29 -176 23 -180 26 -179 l 207 -24 l 389 -176 b 399 -180 392 -179 396 -180 b 418 -160 410 -180 418 -168 b 410 -143 418 -153 415 -147 l 239 0 l 410 144 b 418 160 415 147 418 154 b 399 180 418 171 408 180 b 389 177 396 180 392 179 l 207 26 l 29 177 b 17 180 26 179 22 180 b 0 161 7 180 0 170 b 7 144 0 156 3 148 l 179 0 l 7 -143 b 0 -158 1 -147 0 -153 z' + }, + 'noteheadCircleX': { + 'x_min': 0, + 'x_max': 249, + 'y_min': -125, + 'y_max': 125, + 'ha': 250, + 'o': 'm 0 0 b 179 -180 0 -99 81 -180 b 359 0 278 -180 359 -99 b 179 180 359 99 278 180 b 0 0 81 180 0 99 z m 69 84 l 151 1 l 68 -84 b 40 0 49 -60 40 -30 b 69 84 40 32 50 60 z m 180 -27 l 262 -111 b 179 -138 239 -128 210 -138 b 95 -111 148 -138 120 -128 z m 209 1 l 291 84 b 317 0 307 60 317 30 b 292 -82 317 -30 308 -59 z m 179 138 b 261 112 210 138 238 128 l 180 30 l 98 112 b 179 138 121 128 148 138 z' + }, + 'noteheadTriangleUpWhole': { + 'x_min': 0, + 'x_max': 319, + 'y_min': -125, + 'y_max': 125, + 'ha': 250, + 'o': 'm 0 -166 b 14 -180 0 -173 6 -180 l 445 -180 b 459 -166 454 -180 459 -173 b 458 -158 459 -163 458 -160 l 239 173 b 228 180 238 177 233 180 b 216 173 225 180 219 177 l 1 -158 b 0 -166 1 -160 0 -163 z m 145 -96 b 228 108 145 -17 197 56 b 310 -98 259 55 310 -17 b 288 -137 310 -111 301 -137 l 170 -137 b 145 -96 157 -137 145 -109 z' + }, + 'noteheadTriangleUpHalf': { + 'x_min': 0, + 'x_max': 285, + 'y_min': -125, + 'y_max': 125, + 'ha': 250, + 'o': 'm 14 -180 l 396 -180 b 410 -166 406 -180 410 -173 b 409 -158 410 -163 410 -161 l 228 173 b 215 180 226 174 220 180 b 202 173 210 180 204 177 l 3 -157 b 0 -166 1 -160 0 -163 b 14 -180 0 -173 7 -180 z m 115 -138 l 232 76 l 297 -37 l 246 -138 z' + }, + 'noteheadTriangleUpBlack': { + 'x_min': 0, + 'x_max': 293, + 'y_min': -125, + 'y_max': 125, + 'ha': 250, + 'o': 'm 422 -180 l 207 180 l 0 -180 z' + }, + 'noteheadDiamondWhole': { + 'x_min': 0, + 'x_max': 270, + 'y_min': -125, + 'y_max': 125, + 'ha': 250, + 'o': 'm 4 7 l 258 -179 b 264 -180 261 -179 262 -180 b 272 -176 268 -180 271 -179 l 386 -23 b 389 -16 387 -20 389 -19 b 383 -7 389 -13 386 -9 l 130 179 b 122 180 128 180 125 180 b 115 177 120 180 117 180 l 3 23 b 0 17 1 20 0 19 b 4 7 0 16 3 10 z m 109 111 b 112 112 109 112 111 112 b 118 111 115 112 117 111 l 320 -37 b 324 -46 323 -39 324 -42 b 275 -111 278 -111 276 -111 b 268 -108 272 -111 271 -109 l 66 40 b 62 48 65 42 62 45 z' + }, + 'noteheadDiamondHalf': { + 'x_min': 0, + 'x_max': 251, + 'y_min': -125, + 'y_max': 125, + 'ha': 250, + 'o': 'm 4 -7 l 174 -177 b 180 -180 176 -180 179 -180 b 189 -177 183 -180 186 -180 l 359 -7 b 361 0 360 -6 361 -3 b 359 7 361 3 360 4 l 189 177 b 180 180 186 179 183 180 b 174 177 179 180 176 179 l 4 7 b 0 0 1 4 0 3 b 4 -7 0 -3 1 -6 z m 215 73 b 266 26 238 73 266 50 b 138 -71 266 -12 176 -71 b 96 -50 121 -71 108 -63 b 88 -24 89 -43 88 -32 b 215 73 88 13 177 73 z' + }, + 'noteheadDiamondBlack': { + 'x_min': 0, + 'x_max': 250, + 'y_min': -125, + 'y_max': 125, + 'ha': 250, + 'o': 'm 4 -7 l 173 -177 b 180 -180 176 -180 177 -180 b 187 -177 181 -180 184 -180 l 357 -6 b 360 1 359 -4 360 -1 b 357 9 360 4 359 7 l 189 177 b 180 180 187 179 184 180 b 171 177 177 180 173 179 l 3 9 b 0 1 0 6 0 4 b 4 -7 0 -1 1 -4 z' + }, + 'noteheadSquareWhite': { + 'x_min': 0, + 'x_max': 313, + 'y_min': -125, + 'y_max': 125, + 'ha': 250, + 'o': 'm 451 -180 l 451 180 l 0 180 l 0 -180 z m 40 -138 l 40 140 l 410 140 l 410 -138 z' + }, + 'noteheadSquareBlack': { + 'x_min': 0, + 'x_max': 313, + 'y_min': -125, + 'y_max': 125, + 'ha': 250, + 'o': 'm 451 -180 l 451 180 l 0 180 l 0 -180 z' + }, + 'augmentationDot': { + 'x_min': 0, + 'x_max': 100, + 'y_min': -50, + 'y_max': 50, + 'ha': 100, + 'o': 'm 72 -72 b 144 0 112 -72 144 -40 b 72 72 144 40 112 72 b 0 0 32 72 0 40 b 72 -72 0 -40 32 -72 z' + }, + 'tremolo1': { + 'x_min': -150, + 'x_max': 150, + 'y_min': -93, + 'y_max': 94, + 'ha': 187, + 'o': 'm 216 -45 l 216 135 l -216 46 l -216 -134 z' + }, + 'flag8thUp': { + 'x_min': 0, + 'x_max': 264, + 'y_min': -810.1921176545985, + 'y_max': 9, + 'ha': 819.1921176545985, + 'o': 'm 284 -688 b 318 -904 305 -737 318 -819 b 284 -1102 318 -969 308 -1037 b 279 -1123 281 -1110 279 -1117 b 302 -1165 279 -1146 294 -1159 b 343 -1138 311 -1171 336 -1162 b 380 -888 343 -1138 380 -1001 b 215 -395 380 -708 305 -539 b 58 -19 141 -281 81 -157 b 14 13 53 4 42 13 b 0 -9 6 13 0 9 l 0 -353 b 284 -688 95 -370 232 -566 z' + }, + 'flag8thDown': { + 'x_min': 0, + 'x_max': 306, + 'y_min': -14, + 'y_max': 808, + 'ha': 822, + 'o': 'm 16 -20 b 58 12 43 -20 55 -12 b 262 387 82 148 189 274 b 441 881 353 530 441 701 b 400 1142 441 994 412 1096 b 377 1164 396 1158 387 1164 b 346 1094 356 1164 331 1136 b 376 897 366 1034 376 962 b 318 642 376 812 340 691 b 0 340 265 521 193 405 l 0 1 b 16 -20 0 -16 7 -20 z' + }, + 'flag16thUp': { + 'x_min': 0, + 'x_max': 279, + 'y_min': -813, + 'y_max': 2, + 'ha': 815, + 'o': 'm 7 -570 b 298 -778 96 -573 199 -576 b 344 -992 331 -847 344 -917 b 333 -1120 344 -1034 340 -1077 b 331 -1133 331 -1126 331 -1129 b 363 -1171 331 -1152 343 -1171 b 392 -1146 373 -1171 383 -1165 b 402 -988 397 -1139 402 -1057 l 402 -956 b 360 -783 402 -896 386 -837 b 359 -770 360 -779 359 -776 b 360 -760 359 -768 359 -765 b 396 -577 364 -752 396 -665 b 392 -526 396 -559 395 -543 b 236 -275 377 -428 340 -387 b 53 -16 158 -192 78 -168 b 24 3 50 0 33 3 b 0 1 16 3 0 1 l 0 -570 z m 78 -312 l 89 -312 b 302 -464 177 -312 255 -393 b 341 -592 328 -501 341 -546 b 340 -621 341 -602 341 -611 b 330 -658 337 -632 337 -647 b 311 -667 328 -662 318 -667 b 301 -661 307 -667 304 -665 b 223 -562 278 -625 253 -596 b 59 -331 156 -484 89 -449 b 58 -327 58 -330 58 -328 b 78 -312 58 -321 66 -312 z' + }, + 'flag16thDown': { + 'x_min': 0, + 'x_max': 290.8951581511223, + 'y_min': -9, + 'y_max': 812.0064, + 'ha': 821.0064, + 'o': 'm 0 -12 b 24 -13 0 -12 16 -13 b 53 6 33 -13 50 -10 b 406 516 88 228 372 289 b 410 567 409 531 410 549 b 374 750 410 655 379 742 b 373 760 373 753 373 756 b 374 773 373 766 374 769 b 405 1138 426 881 428 1022 b 370 1169 397 1171 387 1169 b 346 1132 353 1168 341 1156 b 312 768 367 1011 367 880 b 7 559 213 566 96 562 l 0 559 z m 58 317 b 59 321 58 318 58 320 b 238 552 89 439 170 472 b 315 651 268 585 292 613 b 325 657 318 655 321 657 b 344 647 333 657 343 652 b 354 611 351 636 351 622 b 356 582 356 600 356 590 b 317 454 356 534 343 491 b 89 302 269 383 177 302 l 78 302 b 58 317 66 302 58 310 z' + }, + 'flag32ndUp': { + 'x_min': 0, + 'x_max': 261, + 'y_min': -812, + 'y_max': 149, + 'ha': 961, + 'o': 'm 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 366 -289 369 -315 369 -302 b 220 -58 350 -202 317 -163 b 46 187 148 20 71 43 b 17 215 45 200 26 215 b 0 197 9 215 0 197 l 0 -609 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 55 -386 b 73 -367 55 -384 65 -369 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 z' + }, + 'flag32ndDown': { + 'x_min': 0, + 'x_max': 273, + 'y_min': -172, + 'y_max': 812, + 'ha': 984, + 'o': 'm 17 -248 b 48 -219 27 -248 46 -232 b 229 36 72 -69 154 -46 b 380 278 330 145 364 186 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 351 793 356 785 351 789 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 l 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -229 b 17 -248 0 -229 9 -248 z m 56 76 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 z m 56 386 b 217 609 86 501 153 533 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 z' + }, + 'flag64thUp': { + 'x_min': 0, + 'x_max': 261, + 'y_min': -812, + 'y_max': 347, + 'ha': 1159, + 'o': 'm 0 -609 l 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 220 228 350 84 317 122 b 46 472 148 305 71 328 b 17 500 45 485 26 500 b 0 482 9 500 0 482 z m 56 193 b 300 24 138 193 220 157 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 58 187 148 20 82 43 b 56 193 58 189 58 192 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 55 -386 b 73 -367 55 -384 65 -369 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 z' + }, + 'flag64thDown': { + 'x_min': 0, + 'x_max': 273, + 'y_min': -376, + 'y_max': 812, + 'ha': 1188, + 'o': 'm 17 -541 b 48 -513 27 -541 46 -526 b 229 -258 72 -363 154 -340 b 380 -16 330 -148 364 -108 b 384 27 383 -1 384 13 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 351 793 356 785 351 789 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 l 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -523 b 17 -541 0 -523 9 -541 z m 56 76 b 229 331 81 226 154 249 b 310 423 264 369 289 397 b 330 350 318 396 325 366 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 z m 229 36 b 311 128 264 73 289 102 l 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 b 229 36 75 -86 145 -55 z m 217 609 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 b 217 609 86 501 153 533 z' + }, + 'flag128thUp': { + 'x_min': 0, + 'x_max': 261, + 'y_min': -812, + 'y_max': 533, + 'ha': 1345, + 'o': 'm 7 -609 b 278 -802 91 -612 186 -615 b 323 -999 310 -865 323 -930 b 311 -1122 323 -1040 318 -1080 b 310 -1132 311 -1126 310 -1129 b 328 -1166 310 -1149 318 -1162 b 337 -1169 331 -1168 334 -1169 b 366 -1146 346 -1169 356 -1162 b 376 -1009 370 -1138 376 -1071 b 374 -969 376 -995 374 -982 b 337 -806 372 -913 359 -858 b 336 -796 336 -804 336 -801 b 337 -788 336 -793 336 -791 b 370 -616 340 -778 370 -698 b 340 -482 370 -570 360 -524 b 369 -330 353 -445 369 -386 b 337 -203 369 -287 359 -242 b 369 -43 350 -167 369 -104 b 366 -4 369 -30 367 -17 b 341 75 360 26 353 50 b 369 222 354 111 369 167 b 366 264 369 236 369 251 b 220 495 350 351 317 390 b 46 740 148 573 71 596 b 17 768 45 753 26 768 b 0 750 9 768 0 750 l 0 -609 z m 300 24 b 321 -45 315 -4 321 -26 b 317 -75 321 -56 318 -65 l 298 -145 b 220 -58 278 -121 253 -94 b 56 187 148 20 81 43 b 55 193 56 189 56 192 b 300 24 137 193 220 157 z m 300 -261 b 321 -330 315 -289 321 -311 b 317 -360 321 -341 318 -350 b 300 -423 314 -374 307 -399 b 220 -334 279 -397 253 -370 b 56 -92 150 -256 79 -232 b 300 -261 135 -92 220 -127 z m 55 -386 b 73 -367 55 -384 65 -369 b 318 -622 189 -367 318 -505 b 315 -657 318 -634 317 -645 b 308 -690 312 -668 312 -680 b 292 -698 307 -694 300 -698 b 282 -693 288 -698 284 -697 b 216 -608 261 -661 240 -636 l 209 -600 b 55 -386 147 -527 84 -497 z m 300 292 b 321 223 315 264 321 242 b 317 193 321 212 318 203 b 301 135 314 180 308 158 b 220 228 281 161 255 190 b 55 461 151 304 79 327 b 300 292 134 461 220 426 z' + }, + 'flag128thDown': { + 'x_min': 0, + 'x_max': 273, + 'y_min': -580, + 'y_max': 812, + 'ha': 1392, + 'o': 'm 17 -835 b 48 -806 27 -835 46 -819 b 229 -552 72 -657 154 -634 b 380 -310 330 -442 364 -402 b 384 -266 383 -295 384 -281 b 351 -105 384 -206 366 -143 b 384 27 372 -66 384 -16 b 351 189 384 88 366 151 b 380 278 366 216 374 243 b 383 320 383 291 383 305 b 351 484 383 382 364 445 b 384 629 374 526 384 580 b 356 780 384 704 361 766 b 351 793 356 785 351 789 b 356 804 351 796 353 799 l 361 814 b 393 958 380 850 387 865 l 393 973 b 333 1169 393 1002 383 1169 b 324 1168 330 1169 327 1169 b 304 1130 314 1164 304 1149 b 305 1120 304 1128 305 1125 b 334 962 317 1056 334 1011 b 289 821 334 922 323 880 b 0 619 180 625 88 622 l 0 -816 b 17 -835 0 -816 9 -835 z m 229 331 b 310 423 264 369 289 397 b 330 350 318 396 325 366 b 334 320 331 340 334 331 b 311 248 334 301 328 278 b 59 72 229 109 141 72 b 56 76 56 73 56 75 b 229 331 81 226 154 249 z m 56 -516 b 229 -258 75 -380 145 -348 b 311 -166 264 -220 289 -192 l 330 -238 b 334 -268 331 -248 334 -256 b 311 -340 334 -287 328 -310 b 56 -516 229 -478 137 -516 z m 56 -222 b 229 36 75 -86 145 -55 b 311 128 264 73 289 102 l 330 56 b 334 26 331 46 334 37 b 311 -46 334 7 328 -16 b 56 -222 229 -184 137 -222 z m 217 609 b 292 706 246 642 269 670 b 304 711 295 710 300 711 b 321 703 311 711 320 707 b 328 670 325 693 325 681 b 331 634 330 658 331 645 b 82 367 331 516 199 367 l 75 367 b 56 386 62 367 56 379 b 217 609 86 501 153 533 z' + }, + 'accidentalFlat': { + 'x_min': 0, + 'x_max': 226, + 'y_min': -175, + 'y_max': 439, + 'ha': 614, + 'o': 'm 17 -245 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 82 -225 117 -186 b 325 82 281 -72 325 16 b 196 220 325 164 262 216 b 117 196 171 220 137 209 b 85 176 108 189 92 176 b 78 177 82 176 81 176 b 62 202 68 181 62 192 b 72 608 63 233 72 579 b 45 632 72 624 59 632 b 0 592 24 632 1 618 b 17 -245 0 592 6 -230 z m 66 73 b 167 144 76 102 134 144 b 226 60 209 144 226 96 b 98 -134 226 -17 160 -95 b 84 -138 92 -137 88 -138 b 68 -117 71 -138 68 -124 b 63 27 68 -117 63 -30 b 66 73 63 50 65 68 z' + }, + 'accidentalNatural': { + 'x_min': 0, + 'x_max': 168, + 'y_min': -335, + 'y_max': 341, + 'ha': 676, + 'o': 'm 0 -268 b 12 -281 0 -276 4 -281 b 22 -278 13 -281 20 -279 b 164 -235 42 -269 122 -235 b 189 -251 179 -235 189 -239 l 189 -465 b 206 -482 189 -475 196 -482 l 225 -482 b 242 -465 233 -482 242 -475 l 242 258 b 230 269 242 265 236 269 b 225 268 229 269 226 269 l 203 261 b 197 259 200 261 199 259 b 68 226 197 259 105 226 b 53 233 59 226 53 228 l 53 474 b 36 491 53 484 45 491 l 17 491 b 0 474 7 491 0 484 z m 176 114 b 189 107 184 114 189 112 l 189 -42 b 71 -101 189 -68 107 -101 b 53 -92 60 -101 53 -98 l 53 56 b 176 114 53 76 141 114 z' + }, + 'accidentalSharp': { + 'x_min': 0, + 'x_max': 249, + 'y_min': -348, + 'y_max': 350, + 'ha': 698, + 'o': 'm 12 37 b 49 53 17 37 45 50 b 53 55 50 53 52 55 b 72 29 63 55 72 40 l 72 -114 b 56 -147 72 -130 65 -143 b 17 -163 48 -150 17 -163 b 0 -186 7 -166 0 -177 l 0 -288 b 12 -301 0 -297 4 -301 b 17 -300 13 -301 16 -300 b 50 -287 17 -300 37 -291 b 55 -285 52 -285 53 -285 b 72 -308 65 -285 72 -301 l 72 -485 b 91 -501 72 -494 81 -501 b 115 -485 105 -501 115 -494 l 115 -285 b 130 -253 115 -266 122 -256 l 217 -217 b 223 -216 219 -217 222 -216 b 242 -242 235 -216 242 -233 l 242 -422 b 261 -438 242 -431 251 -438 b 285 -422 276 -438 285 -431 l 285 -217 b 301 -184 285 -206 291 -189 b 341 -168 311 -180 341 -168 b 359 -144 351 -164 359 -153 l 359 -42 b 348 -30 359 -35 354 -30 b 341 -32 346 -30 344 -30 l 304 -46 b 285 -20 295 -46 285 -37 l 285 114 b 304 156 285 124 292 151 l 341 170 b 359 194 351 174 359 186 l 359 297 b 348 308 359 304 354 308 b 341 307 346 308 344 308 b 305 294 341 307 312 295 b 285 312 295 294 285 301 l 285 488 b 265 504 285 497 276 504 b 242 488 251 504 242 497 l 242 301 b 223 259 240 287 236 268 b 132 223 206 249 157 229 b 115 252 120 223 115 240 l 115 425 b 95 441 115 433 105 441 b 72 425 81 441 72 433 l 72 230 b 55 192 72 210 63 196 b 17 176 46 187 17 176 b 0 153 7 173 0 161 l 0 50 b 12 37 0 42 4 37 z m 111 -43 b 115 63 111 1 112 52 b 220 118 118 88 184 118 b 242 109 230 118 239 115 b 248 27 245 102 248 66 b 242 -65 248 -12 245 -52 b 132 -122 233 -94 166 -122 b 115 -115 124 -122 117 -120 b 111 -43 112 -109 111 -78 z' + }, + 'accidentalDoubleSharp': { + 'x_min': 0, + 'x_max': 247, + 'y_min': -125, + 'y_max': 127, + 'ha': 252, + 'o': 'm 0 -111 b 7 -166 0 -137 3 -163 b 65 -180 17 -174 40 -180 b 118 -166 86 -180 109 -176 b 130 -111 127 -158 130 -134 b 132 -105 130 -109 131 -107 b 177 -45 141 -85 158 -45 b 226 -111 196 -45 220 -91 b 233 -166 226 -137 228 -161 b 291 -180 243 -174 266 -180 b 356 -114 346 -180 356 -166 b 346 -56 356 -89 351 -63 b 288 -46 338 -49 312 -46 l 274 -46 b 206 1 258 -37 206 -9 b 274 50 206 22 253 43 b 291 49 279 50 285 49 b 346 63 314 49 336 55 b 356 115 353 71 356 92 b 292 183 356 174 351 183 b 233 173 266 183 240 180 b 226 117 228 168 226 143 b 179 49 219 101 196 49 b 130 117 158 49 135 96 b 118 173 130 141 125 167 b 66 183 112 180 89 183 b 7 173 42 183 16 180 b 0 120 3 170 0 145 b 7 63 0 94 3 68 b 68 49 17 55 43 49 b 82 50 73 49 78 50 b 150 3 98 42 150 13 b 84 -46 150 -16 104 -39 l 69 -46 b 7 -56 43 -46 16 -49 b 0 -111 3 -60 0 -85 z' + }, + 'accidentalDoubleFlat': { + 'x_min': 0, + 'x_max': 411, + 'y_min': -175, + 'y_max': 437, + 'ha': 612, + 'o': 'm 17 -245 b 30 -252 22 -251 26 -252 b 39 -249 35 -252 39 -249 b 153 -161 84 -226 120 -186 b 274 -50 206 -124 246 -85 b 284 -245 276 -158 279 -240 b 295 -252 288 -251 292 -252 b 304 -249 300 -252 304 -249 b 416 -163 348 -226 383 -186 b 592 82 546 -72 592 16 b 461 217 592 163 528 216 l 452 217 b 384 194 426 217 408 207 b 350 176 374 189 363 176 b 343 177 347 176 344 176 b 328 202 333 180 328 190 b 337 606 328 232 337 579 b 310 629 337 622 324 629 b 265 592 291 629 268 616 b 269 194 265 592 266 395 b 196 217 248 209 223 217 l 187 217 b 120 194 160 217 143 207 b 85 176 108 189 98 176 b 78 177 82 176 81 176 b 62 202 68 180 62 190 b 72 606 62 232 72 579 b 45 629 72 622 59 629 b 0 592 24 629 1 616 b 17 -245 0 592 7 -232 z m 66 72 b 168 144 75 101 134 144 b 226 59 212 144 226 95 b 96 -134 226 -22 161 -94 b 84 -138 92 -137 86 -138 b 68 -115 72 -138 68 -124 b 63 26 68 -115 63 -30 b 66 72 63 49 65 66 z m 328 39 b 330 72 328 55 328 68 b 433 144 338 101 399 144 b 468 130 448 144 459 140 b 490 59 481 112 490 88 b 361 -134 490 -22 426 -94 b 348 -138 356 -137 351 -138 b 333 -115 337 -138 333 -124 b 328 39 333 -115 328 -16 z' + }, + 'accidentalParensLeft': { + 'x_min': 0, + 'x_max': 141, + 'y_min': -248, + 'y_max': 247, + 'ha': 495, + 'o': 'm 199 -357 b 203 -354 200 -357 203 -356 l 203 -333 b 200 -327 203 -330 202 -328 b 86 0 118 -253 86 -160 b 200 324 86 158 120 251 b 203 331 202 325 203 327 l 203 351 b 202 356 203 354 203 356 b 0 0 60 281 0 140 b 199 -357 0 -144 60 -269 z' + }, + 'accidentalParensRight': { + 'x_min': 0, + 'x_max': 141, + 'y_min': -248, + 'y_max': 247, + 'ha': 495, + 'o': 'm 0 331 b 3 324 0 327 1 325 b 117 0 84 251 117 158 b 3 -327 117 -160 85 -253 b 0 -333 1 -328 0 -330 l 0 -354 b 4 -357 0 -356 3 -357 b 203 0 143 -269 203 -144 b 1 356 203 140 143 281 b 0 351 0 356 0 354 z' + }, + 'accidentalQuarterToneFlatStein': { + 'x_min': 1, + 'x_max': 227, + 'y_min': -175, + 'y_max': 439, + 'ha': 614, + 'o': 'm 174 -161 b 288 -249 210 -186 245 -225 b 297 -252 288 -249 292 -252 b 310 -245 301 -252 305 -251 b 327 592 321 -230 327 592 b 282 632 325 618 302 632 b 255 608 268 632 255 624 b 265 202 255 579 264 233 b 249 177 265 192 259 181 b 242 176 246 176 245 176 b 210 196 235 176 219 189 b 131 220 190 209 156 220 b 1 85 65 216 1 164 b 174 -161 1 16 46 -72 z m 101 60 b 160 144 101 96 118 144 b 261 73 193 144 251 102 b 264 27 262 68 264 50 b 259 -117 264 -30 259 -117 b 243 -138 259 -124 256 -138 b 229 -134 239 -138 235 -137 b 101 60 167 -95 101 -17 z' + }, + 'accidentalThreeQuarterTonesFlatZimmermann': { + 'x_min': 1, + 'x_max': 466, + 'y_min': -175, + 'y_max': 439, + 'ha': 614, + 'o': 'm 363 -245 b 376 -252 367 -251 372 -252 b 384 -249 380 -252 384 -249 b 497 -161 428 -226 464 -186 b 671 84 625 -72 671 16 b 541 220 671 164 606 217 b 513 217 531 220 523 219 b 464 196 495 212 480 206 b 431 176 452 189 442 176 b 423 177 428 176 426 176 b 408 202 413 180 408 190 l 419 608 b 392 632 419 625 406 632 b 346 592 372 632 347 618 b 363 -245 346 592 351 -230 z m 177 -163 b 289 -249 210 -186 245 -226 b 297 -252 289 -249 292 -252 b 310 -245 300 -252 305 -251 b 328 592 321 -230 328 592 b 282 631 327 618 302 631 b 255 608 268 631 255 624 l 266 202 b 251 177 266 190 261 180 b 243 176 248 176 246 176 b 210 196 232 176 222 189 b 166 216 196 204 180 210 b 161 217 164 216 163 217 b 132 220 151 219 143 220 b 1 84 65 217 1 163 b 177 -163 1 16 48 -72 z m 102 60 b 124 128 102 88 111 112 b 161 144 134 138 147 144 b 199 134 173 144 184 141 b 262 72 219 122 256 92 b 265 26 264 66 265 49 b 261 -115 265 -30 261 -115 b 245 -138 261 -124 258 -138 b 230 -134 240 -138 236 -137 b 102 60 166 -92 102 -20 z m 409 26 b 412 72 409 49 410 66 b 514 144 420 102 480 144 b 570 60 557 144 570 96 b 442 -134 570 -23 508 -91 b 429 -138 436 -137 433 -138 b 413 -115 418 -138 413 -124 b 409 26 413 -115 409 -30 z' + }, + 'accidentalQuarterToneSharpStein': { + 'x_min': 0, + 'x_max': 179, + 'y_min': -353, + 'y_max': 307, + 'ha': 660, + 'o': 'm 12 -315 b 85 -285 17 -315 76 -289 b 105 -312 92 -282 105 -301 l 105 -492 b 125 -508 105 -501 114 -508 b 150 -484 147 -508 150 -498 l 150 -285 b 151 -274 150 -281 150 -278 b 164 -253 153 -265 158 -256 b 240 -225 176 -251 240 -225 b 258 -202 249 -222 258 -210 l 258 -99 b 246 -86 258 -91 253 -86 b 240 -88 245 -86 242 -88 l 240 -86 b 168 -115 240 -86 174 -114 b 148 -91 158 -115 148 -107 l 148 43 b 167 85 148 55 156 81 b 240 114 180 91 240 114 b 258 138 249 118 258 128 l 258 240 b 246 252 258 248 252 252 b 240 251 245 252 242 252 b 168 225 240 251 171 225 b 150 253 156 225 150 240 l 150 426 b 130 442 150 435 141 442 b 105 418 108 442 105 429 l 105 230 b 91 193 105 219 101 202 b 17 161 65 183 42 171 b 0 138 9 158 0 147 l 0 36 b 12 23 0 27 4 23 b 17 24 13 23 16 24 b 85 53 17 24 73 49 b 89 55 86 53 88 55 b 107 30 98 55 107 42 l 107 -114 b 92 -145 107 -130 101 -143 l 17 -177 b 0 -200 9 -180 0 -192 l 0 -302 b 12 -315 0 -311 4 -315 z' + }, + 'accidentalThreeQuarterTonesSharpStein': { + 'x_min': 3, + 'x_max': 317, + 'y_min': -347, + 'y_max': 369, + 'ha': 716, + 'o': 'm 14 -301 b 53 -287 16 -301 40 -291 b 62 -285 56 -285 59 -285 b 72 -298 69 -285 72 -289 l 72 -477 b 95 -500 72 -495 76 -500 b 118 -477 114 -500 118 -495 l 118 -278 b 127 -259 118 -269 121 -261 l 196 -232 b 207 -243 204 -232 207 -235 l 207 -432 b 230 -455 207 -452 212 -455 b 253 -432 249 -455 253 -451 l 253 -228 b 268 -204 253 -216 259 -207 l 320 -186 b 328 -183 323 -184 325 -183 b 337 -194 334 -183 337 -187 l 337 -387 b 360 -410 337 -408 341 -410 b 383 -387 379 -410 383 -406 l 383 -174 b 395 -157 383 -166 390 -158 l 445 -138 b 456 -127 452 -135 456 -132 l 456 -14 b 448 -3 456 -10 454 -3 b 399 -22 445 -3 408 -17 b 383 -6 387 -22 383 -22 l 383 163 b 392 181 383 173 384 179 b 445 202 397 183 445 202 b 456 213 452 203 456 207 l 456 324 b 448 336 456 330 454 336 b 393 317 445 336 400 320 b 389 315 392 315 390 315 b 383 325 386 315 383 318 l 383 508 b 360 531 383 528 379 531 b 337 508 341 531 337 527 l 337 318 b 325 291 337 300 334 294 b 268 268 320 288 287 276 b 253 281 256 268 253 274 l 253 464 b 230 487 253 484 249 487 b 207 464 212 487 207 482 l 207 264 b 194 240 207 253 204 245 l 132 217 b 128 216 131 217 130 216 b 118 229 122 216 118 220 l 118 420 b 95 444 118 439 114 444 b 72 420 76 444 72 439 l 72 212 b 60 190 72 197 68 193 l 16 173 b 4 161 9 170 4 167 l 4 50 b 13 39 4 45 9 39 b 58 55 16 39 46 49 b 63 56 60 56 62 56 b 72 42 71 56 72 50 l 72 -125 b 58 -150 72 -137 65 -147 l 16 -166 b 4 -177 9 -168 4 -171 l 4 -289 b 14 -301 4 -295 9 -301 z m 114 -48 b 118 78 114 6 115 68 b 200 114 122 91 180 114 b 207 111 204 114 206 112 b 212 22 210 107 212 66 b 207 -94 212 -29 210 -85 b 127 -130 203 -108 148 -130 b 118 -127 122 -130 120 -128 b 114 -48 114 -121 114 -86 z m 253 19 b 258 130 253 69 255 122 b 333 163 264 141 315 163 b 337 161 334 163 337 161 b 341 78 340 157 341 120 b 337 -45 341 24 340 -37 b 266 -78 333 -56 287 -78 b 258 -75 262 -78 259 -76 b 253 19 255 -71 253 -27 z' + }, + 'accidentalBuyukMucennebFlat': { + 'x_min': 1, + 'x_max': 287, + 'y_min': -174, + 'y_max': 438, + 'ha': 612, + 'o': 'm 1 480 l 1 406 b 12 395 1 400 4 395 b 79 419 14 395 76 418 b 89 412 86 419 89 415 b 91 376 89 399 89 386 b 82 359 91 364 89 361 b 16 331 76 356 16 331 b 1 321 6 331 1 328 l 1 248 b 13 236 1 242 4 236 b 79 262 16 236 71 258 b 92 251 89 262 92 256 b 107 -242 95 23 101 -236 b 120 -251 111 -249 115 -251 b 128 -248 124 -251 128 -248 b 240 -160 171 -225 207 -184 b 413 84 367 -71 413 16 b 284 220 413 166 350 216 b 207 196 259 220 229 209 b 171 176 196 190 184 176 b 167 177 170 176 168 177 b 151 203 157 181 151 192 b 153 269 151 210 151 236 b 163 292 153 275 153 289 b 366 367 173 297 366 367 b 379 383 374 370 379 376 l 379 452 b 370 464 379 458 377 464 b 164 389 366 464 170 392 b 156 396 163 389 156 393 b 157 436 157 409 157 428 b 167 452 157 445 161 449 b 366 526 173 455 366 526 b 379 540 374 528 379 534 l 379 611 b 370 622 379 616 377 622 b 170 550 366 622 174 552 b 160 557 163 550 160 554 b 161 608 160 585 161 602 b 134 631 161 624 148 631 b 89 590 114 631 91 616 l 89 528 b 81 517 89 526 88 518 b 16 491 76 514 16 491 b 1 480 6 490 1 485 z m 154 73 b 219 135 160 92 197 124 b 255 144 232 141 243 144 b 292 130 269 144 282 140 b 314 62 305 114 314 91 b 186 -132 314 -17 251 -94 b 173 -137 180 -135 176 -137 b 157 -114 161 -137 157 -122 b 153 35 157 -114 153 -22 b 154 73 153 53 153 68 z' + }, + 'accidentalBakiyeFlat': { + 'x_min': -1, + 'x_max': 286, + 'y_min': -175, + 'y_max': 439, + 'ha': 614, + 'o': 'm -1 248 b 9 236 -1 242 1 236 b 81 264 12 236 78 261 b 89 258 86 264 89 261 b 104 -245 92 30 96 -236 b 115 -252 108 -251 112 -252 b 124 -249 120 -252 124 -249 b 239 -161 167 -226 203 -186 b 412 84 367 -72 412 17 b 282 220 412 166 348 216 b 255 216 274 220 264 219 b 203 196 238 212 222 206 b 171 177 193 189 177 177 b 163 179 168 177 166 177 b 147 202 153 181 147 192 b 150 276 147 210 150 268 b 158 291 150 287 154 289 b 363 370 163 292 363 370 b 377 384 373 373 377 379 l 377 454 b 369 467 377 458 376 467 b 363 465 367 467 364 467 b 161 390 363 465 167 393 b 153 399 154 390 153 395 b 157 608 154 494 157 593 b 130 632 157 624 144 632 b 86 592 111 632 88 618 b 88 377 86 592 86 501 b 76 356 88 373 88 360 l 12 331 b -1 320 3 330 -1 327 z m 148 27 b 151 73 148 50 150 68 b 255 144 161 105 219 144 b 312 62 298 144 312 99 b 181 -134 312 -19 249 -96 b 167 -138 176 -137 171 -138 b 153 -117 156 -138 153 -125 b 148 27 153 -117 148 -30 z' + }, + 'accidentalKomaSharp': { + 'x_min': 0, + 'x_max': 229, + 'y_min': -337, + 'y_max': 322, + 'ha': 659, + 'o': 'm 10 39 b 17 40 13 39 14 39 l 128 81 b 138 52 138 81 138 63 l 138 -91 b 124 -124 138 -107 132 -120 b 17 -167 115 -127 17 -167 b 0 -192 7 -171 0 -181 l 0 -294 b 10 -305 0 -301 4 -305 b 17 -304 13 -305 14 -305 b 127 -261 17 -304 117 -264 b 138 -276 138 -261 138 -262 l 138 -469 b 157 -485 138 -478 147 -485 b 181 -462 179 -485 181 -475 l 181 -262 b 183 -252 181 -258 181 -255 b 197 -232 186 -243 190 -235 b 312 -187 207 -228 312 -187 b 330 -163 323 -183 330 -173 l 330 -60 b 320 -49 330 -53 327 -49 b 312 -50 318 -49 315 -49 l 200 -94 b 193 -95 197 -95 194 -95 b 181 -68 183 -95 181 -85 l 181 66 b 200 108 181 92 189 104 l 312 151 b 330 176 323 156 330 166 l 330 278 b 320 289 330 285 327 289 b 312 288 318 289 315 289 b 200 246 312 288 203 248 b 181 275 187 246 181 264 l 181 448 b 163 464 181 456 173 464 b 138 441 140 464 138 452 l 138 253 b 122 215 137 240 132 225 b 17 177 92 203 45 177 b 0 153 7 173 0 163 l 0 50 b 10 39 0 43 4 39 z' + }, + 'accidentalKucukMucennebSharp': { + 'x_min': -1, + 'x_max': 339, + 'y_min': -338, + 'y_max': 321, + 'ha': 659, + 'o': 'm -1 -45 l -1 -138 b 12 -154 -1 -145 3 -154 l 215 -79 b 220 -84 219 -79 220 -81 l 220 -105 b 210 -122 220 -115 219 -120 b 99 -168 202 -127 99 -168 b 82 -193 89 -173 82 -183 l 82 -295 b 92 -307 82 -302 86 -307 b 99 -305 95 -307 96 -307 b 209 -262 99 -305 199 -265 b 220 -278 220 -262 220 -264 l 220 -471 b 239 -487 220 -480 229 -487 b 264 -464 261 -487 264 -477 l 264 -264 b 265 -253 264 -259 264 -256 b 279 -233 268 -245 272 -236 b 395 -189 289 -229 395 -189 b 412 -164 405 -184 412 -174 l 412 -62 b 402 -50 412 -55 409 -50 b 395 -52 400 -50 397 -50 l 278 -96 b 264 -86 268 -96 264 -94 l 264 -68 b 269 -59 264 -62 265 -60 b 471 17 274 -58 471 17 b 488 36 484 22 488 27 l 488 127 b 477 144 488 134 487 144 b 471 141 475 144 472 141 l 471 143 b 274 68 471 143 282 71 b 268 66 272 68 269 66 b 264 71 264 66 264 69 l 264 92 b 271 102 264 98 265 99 l 395 150 b 412 174 405 154 412 164 l 412 276 b 402 288 412 284 409 288 b 395 287 400 288 397 288 b 282 245 395 287 285 246 b 264 274 269 245 264 262 l 264 446 b 245 462 264 455 255 462 b 220 439 222 462 220 451 l 220 252 b 204 213 219 239 215 223 b 99 176 174 202 127 176 b 82 151 89 171 82 161 l 82 49 b 92 37 82 42 86 37 b 99 39 95 37 96 37 l 210 79 b 216 81 212 81 215 81 b 220 78 219 81 220 79 l 220 56 b 216 46 220 52 220 48 b 16 -29 210 45 16 -29 b -1 -45 4 -32 -1 -36 z' + }, + 'accidentalKoron': { + 'x_min': 0, + 'x_max': 300, + 'y_min': -472, + 'y_max': 157, + 'ha': 629, + 'o': 'm 0 -672 b 7 -680 0 -677 3 -680 l 45 -680 b 52 -672 49 -680 52 -677 l 52 -193 l 415 -22 b 432 -4 418 -20 432 -13 b 415 10 432 1 418 9 l 4 226 b 0 223 1 226 0 225 z m 327 -7 l 52 -137 l 52 144 z' + }, + 'accidentalSori': { + 'x_min': 0, + 'x_max': 421, + 'y_min': -318, + 'y_max': 328, + 'ha': 646, + 'o': 'm 0 265 l 0 223 b 3 213 0 216 0 215 l 131 160 l 131 -150 l 3 -203 b 0 -212 0 -204 0 -206 l 0 -255 b 3 -259 0 -258 1 -259 l 131 -204 l 131 -451 b 138 -458 131 -455 134 -458 l 176 -458 b 183 -451 180 -458 183 -455 l 183 -183 l 330 -120 l 330 -410 b 337 -418 330 -415 333 -418 l 374 -418 b 382 -410 379 -418 382 -415 l 382 -98 l 589 -9 b 606 10 592 -9 606 0 b 589 23 606 16 592 22 l 382 109 l 382 465 b 374 472 382 469 379 472 l 337 472 b 330 465 333 472 330 469 l 330 132 l 183 194 l 183 425 b 176 432 183 429 180 432 l 138 432 b 131 425 134 432 131 429 l 131 216 l 3 269 b 0 265 0 269 0 266 z m 183 138 l 330 76 l 330 -66 l 183 -128 z m 501 6 l 382 -45 l 382 55 z' + }, + 'articAccentAbove': { + 'x_min': 0, + 'x_max': 339, + 'y_min': 1, + 'y_max': 245, + 'ha': 244, + 'o': 'm 0 318 b 20 298 0 311 4 304 b 346 187 20 298 331 193 b 356 177 353 186 356 181 b 344 167 356 173 353 170 b 20 58 328 163 20 58 b 0 36 4 50 0 43 b 3 23 0 32 1 27 b 23 1 7 13 13 1 b 29 3 24 1 27 1 l 469 151 b 488 177 488 156 488 166 b 469 203 488 189 488 197 l 37 350 b 24 353 32 351 26 353 b 3 333 12 353 7 344 b 0 318 1 327 0 323 z' + }, + 'articAccentBelow': { + 'x_min': 0, + 'x_max': 339, + 'y_min': -244, + 'y_max': 0, + 'ha': 244, + 'o': 'm 0 -35 b 20 -55 0 -42 4 -49 b 346 -166 20 -55 331 -160 b 356 -176 353 -167 356 -171 b 344 -186 356 -180 353 -183 b 20 -295 328 -190 20 -295 b 0 -317 4 -302 0 -310 b 3 -330 0 -321 1 -325 b 23 -351 7 -340 13 -351 b 29 -350 24 -351 27 -351 l 469 -202 b 488 -176 488 -197 488 -187 b 469 -150 488 -164 488 -156 l 37 -3 b 24 0 32 -1 26 0 b 3 -20 12 0 7 -9 b 0 -35 1 -26 0 -30 z' + }, + 'articTenutoAbove': { + 'x_min': -1, + 'x_max': 338, + 'y_min': 0, + 'y_max': 48, + 'ha': 48, + 'o': 'm 33 0 l 452 0 b 487 35 485 0 487 16 b 452 69 487 53 487 69 l 33 69 b -1 35 -1 69 -1 53 b 33 0 -1 16 -1 0 z' + }, + 'articTenutoBelow': { + 'x_min': -1, + 'x_max': 338, + 'y_min': -48, + 'y_max': 0, + 'ha': 48, + 'o': 'm 33 -69 l 452 -69 b 487 -35 485 -69 487 -53 b 452 0 487 -16 487 0 l 33 0 b -1 -35 -1 0 -1 -16 b 33 -69 -1 -53 -1 -69 z' + }, + 'articStaccatoAbove': { + 'x_min': 0, + 'x_max': 84, + 'y_min': 0, + 'y_max': 84, + 'ha': 84, + 'o': 'm 60 0 b 121 60 94 0 121 27 b 60 121 121 94 94 121 b 0 60 27 121 0 94 b 60 0 0 27 27 0 z' + }, + 'articStaccatoBelow': { + 'x_min': 0, + 'x_max': 84, + 'y_min': -84, + 'y_max': 0, + 'ha': 84, + 'o': 'm 60 -121 b 121 -60 94 -121 121 -94 b 60 0 121 -27 94 0 b 0 -60 27 0 0 -27 b 60 -121 0 -94 27 -121 z' + }, + 'articStaccatissimoAbove': { + 'x_min': 1, + 'x_max': 100, + 'y_min': -2, + 'y_max': 293, + 'ha': 295, + 'o': 'm 1 390 b 72 -3 1 369 39 -3 b 144 389 108 -3 144 356 b 72 422 144 410 111 422 b 1 390 35 422 3 409 z' + }, + 'articStaccatissimoBelow': { + 'x_min': 1, + 'x_max': 100, + 'y_min': -295, + 'y_max': 0, + 'ha': 295, + 'o': 'm 1 -393 b 72 -425 3 -412 35 -425 b 144 -392 111 -425 144 -413 b 72 0 144 -359 108 0 b 1 -393 39 0 1 -372 z' + }, + 'articMarcatoAbove': { + 'x_min': -1, + 'x_max': 235, + 'y_min': -1, + 'y_max': 253, + 'ha': 254, + 'o': 'm -1 16 b 9 0 -1 9 1 1 b 16 -1 10 -1 14 -1 b 32 9 22 -1 29 1 b 112 186 32 9 109 180 b 118 190 114 189 115 190 b 127 186 121 190 124 189 b 209 9 128 180 209 9 b 225 0 213 3 219 0 l 323 0 b 338 16 333 1 338 7 b 337 23 338 19 338 22 l 181 356 b 167 364 177 361 173 364 b 153 356 157 364 153 356 l 0 23 b -1 16 -1 20 -1 19 z' + }, + 'articMarcatoBelow': { + 'x_min': -1, + 'x_max': 235, + 'y_min': -254, + 'y_max': 0, + 'ha': 254, + 'o': 'm -1 -17 b 0 -24 -1 -20 -1 -23 l 156 -357 b 170 -366 160 -363 164 -366 b 184 -357 180 -366 184 -357 l 337 -24 b 338 -17 338 -22 338 -20 b 328 -1 338 -10 336 -3 b 321 0 327 0 323 0 b 305 -10 315 0 308 -3 b 225 -187 305 -10 228 -181 b 219 -192 223 -190 222 -192 b 210 -187 216 -192 213 -190 b 128 -10 209 -181 128 -10 b 112 -1 124 -4 118 -1 l 14 -1 b -1 -17 4 -3 -1 -9 z' + }, + 'fermataAbove': { + 'x_min': 3, + 'x_max': 605, + 'y_min': -3, + 'y_max': 329, + 'ha': 332, + 'o': 'm 4 14 b 23 -4 4 0 12 -4 b 52 26 36 -4 43 6 b 56 39 53 27 55 33 b 435 318 73 98 138 318 b 818 36 742 318 804 91 b 821 26 819 32 819 27 b 851 -4 831 6 837 -4 b 871 16 864 -4 871 1 b 870 30 871 20 871 24 b 438 474 780 471 480 474 b 6 30 392 474 94 471 b 4 14 4 24 4 19 z m 359 75 b 436 -4 359 32 395 -4 b 516 75 480 -4 516 32 b 436 153 516 117 480 153 b 359 75 395 153 359 117 z' + }, + 'fermataBelow': { + 'x_min': 3, + 'x_max': 605, + 'y_min': -332, + 'y_max': 0, + 'ha': 332, + 'o': 'm 6 -35 b 438 -478 94 -475 392 -478 b 870 -35 480 -478 780 -475 b 871 -20 871 -29 871 -24 b 851 0 871 -6 864 0 b 821 -30 837 0 831 -10 b 818 -40 819 -32 819 -36 b 435 -323 804 -95 742 -323 b 56 -43 138 -323 73 -102 b 52 -30 55 -37 53 -32 b 23 0 43 -10 36 0 b 4 -19 12 0 4 -4 b 6 -35 4 -23 4 -29 z m 436 -157 b 516 -79 480 -157 516 -121 b 436 0 516 -36 480 0 b 359 -79 395 0 359 -36 b 436 -157 359 -121 395 -157 z' + }, + 'breathMarkComma': { + 'x_min': 1, + 'x_max': 152, + 'y_min': 2, + 'y_max': 251, + 'ha': 249, + 'o': 'm 1 271 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 19 32 29 26 26 b 27 14 26 17 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 b 1 271 42 361 1 321 z' + }, + 'breathMarkUpbow': { + 'x_min': 1, + 'x_max': 249, + 'y_min': 1, + 'y_max': 495, + 'ha': 494, + 'o': 'm 1 690 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 z' + }, + 'caesura': { + 'x_min': 0, + 'x_max': 384, + 'y_min': -1, + 'y_max': 532, + 'ha': 533, + 'o': 'm 258 1 b 271 -1 262 -1 266 -1 b 308 26 287 -1 302 9 l 552 713 b 553 726 553 717 553 721 b 513 766 553 747 534 766 b 475 739 495 766 481 756 l 232 52 b 230 39 230 48 230 43 b 258 1 230 23 240 7 z m 27 1 b 40 -1 32 -1 36 -1 b 78 26 58 -1 72 9 l 321 713 b 323 726 323 717 323 721 b 282 766 323 747 304 766 b 245 739 265 766 251 756 l 3 52 b 0 37 1 48 0 42 b 27 1 0 22 10 7 z' + }, + 'caesuraCurved': { + 'x_min': 0, + 'x_max': 373, + 'y_min': 0, + 'y_max': 530, + 'ha': 530, + 'o': 'm 0 29 b 29 0 0 14 12 0 b 53 16 39 0 48 6 l 82 69 b 314 716 187 264 314 498 b 268 763 314 742 295 763 b 222 719 245 763 223 744 b 29 98 209 507 117 295 l 3 39 b 0 29 1 36 0 33 z m 223 27 b 252 0 223 13 233 0 b 276 16 262 0 272 6 b 537 716 386 230 537 478 b 491 763 537 742 518 763 b 445 719 468 763 446 744 b 252 98 432 507 340 295 l 226 39 b 223 27 225 35 223 32 z' + }, + 'restMaxima': { + 'x_min': 0, + 'x_max': 381, + 'y_min': -249, + 'y_max': 250, + 'ha': 499, + 'o': 'm 369 331 l 369 -330 b 392 -359 369 -354 379 -359 l 524 -359 b 549 -330 539 -359 549 -354 l 549 331 b 524 360 549 356 539 360 l 392 360 b 369 331 379 360 369 356 z m 23 -359 l 156 -359 b 180 -330 170 -359 180 -354 l 180 331 b 156 360 180 356 170 360 l 23 360 b 0 331 10 360 0 356 l 0 -330 b 23 -359 0 -354 10 -359 z' + }, + 'restDoubleWhole': { + 'x_min': 0, + 'x_max': 125, + 'y_min': 0, + 'y_max': 250, + 'ha': 250, + 'o': 'm 23 0 l 156 0 b 180 22 170 0 180 10 l 180 338 b 156 360 180 350 170 360 l 23 360 b 0 338 10 360 0 350 l 0 22 b 23 0 0 10 10 0 z' + }, + 'restWhole': { + 'x_min': 0, + 'x_max': 282, + 'y_min': -135, + 'y_max': 9, + 'ha': 144, + 'o': 'm 37 -194 l 369 -194 b 406 -157 389 -194 406 -177 l 406 -24 b 369 13 406 -3 389 13 l 37 13 b 0 -24 16 13 0 -3 l 0 -157 b 37 -194 0 -177 16 -194 z' + }, + 'restHalf': { + 'x_min': 0, + 'x_max': 282, + 'y_min': -2, + 'y_max': 142, + 'ha': 144, + 'o': 'm 37 -3 l 369 -3 b 406 35 389 -3 406 14 l 406 167 b 369 204 406 189 389 204 l 37 204 b 0 167 16 204 0 189 l 0 35 b 37 -3 0 14 16 -3 z' + }, + 'restQuarter': { + 'x_min': 1, + 'x_max': 270, + 'y_min': -375, + 'y_max': 373, + 'ha': 748, + 'o': 'm 168 -527 b 206 -540 180 -536 194 -540 b 228 -531 216 -540 226 -537 b 230 -521 229 -527 230 -524 b 207 -487 230 -508 219 -497 b 170 -435 189 -487 173 -448 b 164 -397 166 -423 164 -410 b 255 -292 164 -338 194 -292 b 367 -317 297 -292 344 -308 b 372 -318 369 -317 370 -318 b 382 -320 376 -320 379 -320 b 389 -314 386 -320 389 -318 b 336 -232 389 -297 351 -249 b 236 -32 281 -166 236 -112 b 238 -13 236 -26 238 -19 b 333 199 243 71 295 140 b 338 220 337 206 338 213 b 333 248 338 235 333 248 b 95 526 333 248 120 501 b 69 537 88 533 78 537 b 40 507 55 537 40 527 b 46 484 40 500 42 492 b 134 291 52 468 134 395 b 48 108 134 238 112 176 b 27 66 33 94 27 78 b 42 32 27 46 42 32 l 112 -55 b 174 -141 135 -84 156 -111 b 183 -161 177 -147 183 -158 b 181 -167 183 -163 183 -166 b 166 -174 179 -173 173 -174 b 143 -170 160 -174 148 -171 b 120 -166 135 -170 127 -166 b 1 -304 58 -166 1 -228 b 168 -527 1 -376 63 -446 z' + }, + 'rest8th': { + 'x_min': 0, + 'x_max': 247, + 'y_min': -251, + 'y_max': 174, + 'ha': 425, + 'o': 'm 39 81 b 117 56 62 65 89 56 b 173 66 137 56 157 60 b 225 88 193 72 206 78 b 232 89 228 89 230 89 b 239 76 238 89 239 84 b 238 60 239 72 239 66 b 104 -343 233 39 130 -248 b 145 -361 104 -360 137 -361 b 196 -347 161 -361 181 -359 b 341 161 200 -344 341 161 b 356 217 347 187 354 210 b 338 240 356 232 341 239 b 323 235 336 240 331 240 b 193 140 312 226 240 140 l 193 154 b 96 251 193 207 150 251 b 0 154 43 251 0 207 b 39 81 0 124 17 98 z' + }, + 'rest16th': { + 'x_min': 0, + 'x_max': 320, + 'y_min': -500, + 'y_max': 179, + 'ha': 679, + 'o': 'm 115 -301 b 223 -271 153 -301 190 -288 b 229 -278 226 -271 229 -274 b 228 -282 229 -279 228 -281 l 91 -690 b 89 -694 91 -691 89 -693 b 134 -720 89 -706 102 -720 b 189 -687 176 -720 183 -703 l 356 -138 b 420 81 393 -16 420 81 b 459 226 420 81 456 207 b 461 232 459 229 461 230 b 446 248 461 240 449 246 b 431 242 439 248 435 245 b 300 145 420 233 348 147 l 300 160 b 202 258 300 215 256 258 b 104 160 148 258 104 215 b 219 62 104 101 164 62 b 331 94 258 62 298 75 b 341 96 336 95 338 96 b 348 86 346 96 348 94 b 265 -173 348 63 275 -151 b 194 -217 253 -200 215 -217 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 151 -105 b 0 -203 43 -105 0 -148 b 115 -301 0 -262 60 -301 z' + }, + 'rest32nd': { + 'x_min': 0, + 'x_max': 363, + 'y_min': -500, + 'y_max': 426, + 'ha': 926, + 'o': 'm 0 -203 b 115 -301 0 -262 60 -301 b 228 -269 154 -301 194 -288 b 232 -268 229 -268 230 -268 b 240 -276 236 -268 240 -272 b 138 -688 240 -282 141 -678 b 137 -697 137 -691 137 -694 b 176 -720 137 -708 145 -720 b 232 -690 222 -720 226 -706 b 484 436 236 -672 484 436 b 521 582 484 436 518 564 b 523 588 521 585 523 586 b 508 603 523 600 511 603 b 492 598 501 603 497 600 b 361 503 482 590 410 503 l 361 516 b 264 613 361 570 318 613 b 166 516 210 613 166 570 b 206 444 166 487 183 461 b 246 423 217 433 232 428 b 284 418 258 420 269 418 b 393 449 321 418 360 432 b 399 451 395 451 397 451 b 415 428 409 451 415 436 b 413 422 415 426 413 423 l 357 192 b 279 140 350 168 302 140 b 281 153 281 144 281 148 b 183 251 281 207 236 251 b 85 153 128 251 85 207 b 125 81 85 124 102 98 b 164 60 137 71 150 65 b 203 55 176 58 189 55 b 311 86 240 55 278 69 b 315 88 312 88 314 88 b 325 69 323 88 325 76 l 268 -167 b 194 -217 261 -197 216 -216 b 196 -203 196 -212 196 -207 b 98 -105 196 -148 153 -105 b 0 -203 45 -105 0 -148 z' + }, + 'rest64th': { + 'x_min': 0, + 'x_max': 423, + 'y_min': -753, + 'y_max': 430, + 'ha': 1183, + 'o': 'm 0 -554 b 40 -626 0 -583 17 -609 b 118 -652 60 -644 92 -652 b 210 -629 145 -652 186 -642 b 216 -628 213 -628 215 -628 b 228 -644 223 -628 228 -635 b 226 -652 228 -647 226 -649 l 122 -1054 b 121 -1064 121 -1058 121 -1061 b 167 -1084 121 -1077 134 -1084 b 215 -1060 202 -1084 209 -1076 b 402 -278 217 -1047 229 -1021 b 436 -135 403 -278 431 -161 l 570 441 b 609 588 570 441 605 569 b 596 609 609 603 602 608 b 580 603 589 609 585 606 b 448 507 569 595 497 507 b 449 521 449 511 449 516 b 351 619 449 575 405 619 b 253 521 297 619 253 575 b 372 422 253 461 317 422 b 481 454 410 422 446 438 b 491 456 484 455 488 456 b 504 441 498 456 504 451 b 501 426 504 436 503 432 b 445 202 500 422 451 217 b 359 144 435 174 383 144 l 359 158 b 261 256 359 212 315 256 b 163 158 207 256 163 212 b 243 65 163 112 202 78 b 279 60 255 62 266 60 b 397 91 320 60 360 73 b 403 92 400 92 402 92 b 412 79 409 92 412 86 b 410 72 412 76 412 75 b 351 -161 408 59 356 -150 b 281 -212 340 -199 301 -212 l 281 -197 b 183 -99 281 -144 238 -99 b 85 -197 130 -99 85 -144 b 125 -271 85 -228 102 -253 b 166 -291 138 -279 151 -287 b 204 -297 177 -294 192 -297 b 262 -287 225 -297 245 -292 b 305 -265 282 -279 287 -274 b 310 -264 307 -264 308 -264 b 318 -284 317 -264 318 -275 b 317 -295 318 -288 317 -294 b 259 -524 315 -302 265 -508 b 194 -567 251 -554 213 -567 b 196 -554 196 -563 196 -559 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 z' + }, + 'rest128th': { + 'x_min': 0, + 'x_max': 485, + 'y_min': -750, + 'y_max': 689, + 'ha': 1439, + 'o': 'm 118 -652 b 176 -642 138 -652 160 -648 b 180 -641 177 -642 179 -641 b 228 -621 197 -635 210 -629 b 232 -619 229 -621 230 -619 b 239 -626 236 -619 239 -622 b 238 -632 239 -628 239 -631 b 131 -1057 235 -642 134 -1050 b 173 -1080 131 -1071 140 -1080 b 230 -1057 219 -1080 225 -1074 l 658 815 b 697 960 658 815 694 942 b 698 966 697 963 698 965 b 684 982 698 975 687 981 b 668 976 677 982 672 979 b 537 880 658 969 586 881 l 537 894 b 439 992 537 949 494 992 b 341 894 386 992 341 949 b 382 822 341 865 359 840 b 459 796 402 805 433 796 b 517 806 480 796 501 801 b 521 808 518 806 520 808 b 569 828 539 814 552 819 b 580 831 572 829 577 831 b 598 812 589 831 598 825 b 596 801 598 809 598 805 b 540 575 590 773 546 595 b 448 510 534 553 475 510 l 448 524 b 350 622 448 577 405 622 b 252 524 297 622 252 577 b 292 451 252 494 269 468 b 369 426 318 433 337 426 b 429 435 389 426 412 429 b 494 464 449 442 475 455 b 498 465 495 465 497 465 b 505 446 504 465 505 456 b 503 426 505 439 504 432 l 446 202 b 366 144 439 173 389 144 l 366 158 b 268 256 366 212 323 256 b 170 158 215 256 170 212 b 289 59 170 98 235 59 b 347 69 310 59 330 63 b 397 91 367 76 379 82 b 406 94 400 92 403 94 b 415 79 412 94 415 88 b 412 63 415 75 413 69 b 357 -157 408 42 364 -134 b 281 -212 346 -196 302 -212 b 282 -197 281 -207 282 -203 b 184 -99 282 -144 238 -99 b 86 -197 130 -99 86 -144 b 204 -297 86 -258 150 -297 b 262 -287 225 -297 245 -292 b 312 -265 282 -279 294 -274 b 318 -264 314 -264 317 -264 b 327 -275 324 -264 327 -269 b 266 -517 324 -287 278 -490 b 200 -569 248 -566 220 -567 l 196 -554 b 98 -456 196 -500 153 -456 b 0 -554 45 -456 0 -500 b 118 -652 0 -615 63 -652 z' + }, + 'dynamicPiano': { + 'x_min': -89, + 'x_max': 366, + 'y_min': -142, + 'y_max': 274, + 'ha': 416, + 'o': 'm -128 -187 b -111 -204 -128 -199 -122 -204 l 167 -204 b 186 -186 180 -204 186 -199 b 168 -168 186 -174 180 -168 l 111 -168 b 98 -164 102 -168 98 -168 b 101 -154 98 -163 99 -158 l 166 7 b 179 24 168 14 171 24 b 213 -1 186 24 190 10 b 276 -14 233 -12 252 -14 b 527 266 415 -14 527 130 b 395 395 527 350 475 395 b 292 357 350 395 318 380 b 262 328 272 340 268 328 b 246 363 255 328 259 338 b 177 393 236 380 215 393 b 1 251 92 393 46 333 b -9 223 -6 238 -9 230 b 7 207 -9 213 -1 207 b 30 229 17 207 23 216 b 127 338 72 301 101 338 b 143 321 138 338 143 331 b 134 285 143 310 138 295 l -43 -154 b -65 -168 -48 -166 -50 -168 l -109 -168 b -128 -187 -122 -168 -128 -174 z m 207 81 b 235 180 207 111 219 140 l 264 251 b 356 341 284 300 321 341 b 389 288 380 341 389 320 b 243 35 389 217 312 35 b 207 81 219 35 207 50 z' + }, + 'dynamicMezzo': { + 'x_min': -20, + 'x_max': 446, + 'y_min': -10, + 'y_max': 274, + 'ha': 284, + 'o': 'm -29 223 b -13 207 -29 213 -22 207 b 9 226 -3 207 1 215 b 107 338 52 300 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 287 323 225 292 255 323 b 308 302 304 323 308 314 b 294 249 308 285 302 269 b 203 24 294 248 292 248 b 199 9 200 17 199 13 b 215 0 199 3 203 0 l 285 0 b 308 17 298 0 302 3 l 402 251 b 481 323 419 292 449 323 b 503 302 498 323 503 314 b 413 43 503 252 413 104 b 478 -14 413 6 436 -14 b 629 102 533 -14 583 26 b 642 132 638 117 642 125 b 629 145 642 141 636 145 b 608 127 619 145 615 138 b 534 49 580 84 553 49 b 523 62 526 49 523 53 b 606 317 523 112 606 238 b 528 395 606 353 588 395 b 431 350 487 395 454 374 b 409 330 416 336 415 330 b 397 360 402 330 406 341 b 334 395 389 379 370 395 b 236 350 292 395 259 374 b 215 330 222 336 220 330 b 203 360 207 330 212 340 b 147 393 194 379 174 393 b -19 251 71 393 26 331 b -29 223 -26 238 -29 230 z' + }, + 'dynamicForte': { + 'x_min': -141, + 'x_max': 364, + 'y_min': -152, + 'y_max': 444, + 'ha': 596, + 'o': 'm -203 -122 b -95 -219 -203 -186 -156 -219 b 161 17 14 -219 82 -145 b 269 315 203 105 235 194 b 289 336 269 323 284 336 l 383 336 b 406 359 399 336 406 343 b 384 380 406 373 399 380 l 298 380 b 284 387 288 380 284 380 b 287 405 284 392 285 396 b 419 606 315 530 347 606 b 442 595 431 606 442 603 b 419 580 442 586 435 588 b 389 526 400 572 389 552 b 454 465 389 485 418 465 b 524 543 491 465 524 490 b 400 639 524 596 491 639 b 135 402 261 639 183 540 b 107 380 128 380 127 380 l 23 380 b 0 357 7 380 0 373 b 22 336 0 343 7 336 l 105 336 b 117 330 114 336 117 336 b 114 315 117 327 115 323 l 23 0 b -101 -187 -17 -141 -43 -187 b -127 -174 -120 -187 -127 -181 b -92 -156 -127 -163 -114 -170 b -63 -102 -75 -144 -63 -125 b -128 -43 -63 -65 -89 -43 b -203 -122 -171 -43 -203 -78 z' + }, + 'dynamicRinforzando': { + 'x_min': -20, + 'x_max': 277, + 'y_min': 0, + 'y_max': 274, + 'ha': 274, + 'o': 'm -13 207 b 9 226 -3 207 3 215 b 107 338 52 301 81 338 b 122 321 118 338 122 331 b 114 285 122 310 118 295 l 9 24 b 4 9 6 17 4 13 b 20 0 4 3 9 0 l 91 0 b 114 17 104 0 108 3 l 207 251 b 304 351 226 298 272 351 b 318 343 312 351 318 348 b 287 285 318 330 287 325 b 338 239 287 256 308 239 b 399 318 373 239 399 268 b 324 395 399 360 377 395 b 235 350 287 395 256 374 b 215 330 222 336 220 330 b 203 360 207 330 213 337 b 145 393 194 379 174 393 b -19 251 75 393 27 337 b -29 223 -26 238 -29 230 b -13 207 -29 213 -22 207 z' + }, + 'dynamicSforzando': { + 'x_min': 0, + 'x_max': 229, + 'y_min': -10, + 'y_max': 273, + 'ha': 283, + 'o': 'm 125 -14 b 291 120 219 -14 291 36 b 220 232 291 160 276 190 b 151 314 168 271 151 287 b 213 361 151 337 168 361 b 258 346 238 361 258 356 b 240 333 258 340 251 340 b 226 298 232 325 226 314 b 276 252 226 269 248 252 b 330 307 311 252 330 279 b 212 393 330 360 285 393 b 68 274 127 393 68 350 b 145 161 68 223 95 196 b 200 85 187 132 200 114 b 127 20 200 53 173 20 b 66 42 91 20 66 32 b 91 56 66 49 75 46 b 111 98 104 65 111 79 b 59 145 111 127 86 145 b 0 78 24 145 0 117 b 125 -14 0 30 49 -14 z' + }, + 'dynamicZ': { + 'x_min': -30, + 'x_max': 244, + 'y_min': -10, + 'y_max': 268, + 'ha': 278, + 'o': 'm -24 -1 b 4 16 -12 -1 -3 10 b 39 30 16 24 27 30 b 179 -14 79 30 108 -14 b 297 102 259 -14 297 43 b 245 166 297 147 271 166 b 197 115 219 166 197 145 b 236 72 197 88 216 72 b 259 79 251 72 255 79 b 264 75 262 79 264 78 b 258 60 264 72 261 66 b 229 45 252 50 242 45 b 117 95 186 45 173 95 b 85 86 98 95 89 86 b 102 111 85 86 95 104 l 333 338 b 351 370 344 350 351 359 b 333 386 351 380 343 386 b 298 377 321 386 314 382 b 239 370 282 373 259 370 b 94 383 153 370 111 383 b 68 364 79 383 72 377 l 33 264 b 29 242 30 255 29 248 b 45 228 29 232 36 228 b 66 249 55 228 60 236 l 81 279 b 96 297 85 288 88 297 b 168 292 102 297 127 292 b 223 302 194 292 215 302 b 196 269 229 302 197 271 l -26 45 b -43 16 -37 33 -43 27 b -24 -1 -43 6 -36 -1 z' + }, + 'ornamentTrill': { + 'x_min': 0, + 'x_max': 521, + 'y_min': -10, + 'y_max': 390, + 'ha': 400, + 'o': 'm 95 210 b 140 213 112 210 131 213 b 144 209 143 213 144 212 b 140 194 144 206 143 202 l 124 156 b 96 58 108 117 96 88 b 179 -14 96 17 124 -14 b 325 153 253 -14 325 46 b 307 251 325 187 320 219 b 302 265 304 258 302 261 b 334 294 302 274 311 281 l 343 298 b 455 348 393 328 428 348 b 474 327 468 348 474 344 b 465 285 474 312 469 295 l 360 24 b 356 9 357 17 356 13 b 372 0 356 3 360 0 l 442 0 b 465 17 455 0 459 3 l 559 251 b 655 351 577 298 624 351 b 670 343 664 351 670 348 b 638 285 670 330 638 325 b 690 239 638 256 660 239 b 750 318 724 239 750 268 b 675 395 750 360 729 395 b 586 350 638 395 608 374 b 566 330 573 336 572 330 b 553 361 559 330 564 340 b 490 393 543 380 521 393 b 347 348 432 393 377 364 b 312 333 328 338 320 333 b 308 337 310 333 308 334 b 315 359 308 343 312 351 l 387 537 b 392 553 390 544 392 549 b 383 562 392 559 389 562 b 364 557 377 562 369 559 l 294 534 b 269 511 281 530 275 526 l 217 384 b 206 367 212 370 210 367 b 179 380 200 367 192 374 b 118 393 158 389 140 393 b 0 292 50 393 0 353 b 95 210 0 248 30 210 z m 118 360 b 192 325 134 360 192 347 b 186 307 192 321 189 314 l 180 292 b 148 265 173 274 167 269 b 98 258 130 261 112 258 b 39 301 50 258 39 281 b 118 360 39 327 60 360 z m 196 48 b 207 92 196 59 202 78 b 264 230 207 94 209 94 b 272 240 266 238 268 240 b 279 229 276 240 276 236 b 292 151 279 204 292 177 b 212 30 292 88 253 30 b 196 48 200 30 196 37 z' + }, + 'ornamentTurn': { + 'x_min': 0, + 'x_max': 460, + 'y_min': 0, + 'y_max': 218, + 'ha': 218, + 'o': 'm 0 148 b 128 0 0 45 66 0 b 209 63 173 0 209 20 b 157 115 209 95 187 115 b 84 82 115 115 114 82 b 36 150 59 82 36 112 b 130 242 36 212 79 242 b 285 134 176 242 223 203 b 513 1 356 56 419 1 b 662 166 608 1 662 73 b 534 314 662 269 596 314 b 454 251 490 314 454 294 b 505 199 454 219 475 199 b 579 232 547 199 549 232 b 626 164 603 232 626 202 b 533 72 626 102 583 72 b 377 180 487 72 439 111 b 150 312 307 258 243 312 b 0 148 55 312 0 240 z' + }, + 'ornamentTurnSlash': { + 'x_min': 0, + 'x_max': 460, + 'y_min': -90, + 'y_max': 306, + 'ha': 396, + 'o': 'm 0 147 b 128 -1 0 43 66 -1 b 209 62 173 -1 209 19 b 157 114 209 94 187 114 b 84 81 115 114 114 81 b 36 148 59 81 36 111 b 130 240 36 210 79 240 b 285 128 176 240 222 197 b 307 79 304 108 307 105 l 307 -107 b 330 -130 307 -122 312 -130 b 353 -107 347 -130 353 -122 l 353 37 b 360 59 353 53 353 59 b 402 33 369 59 376 49 b 513 0 435 13 471 0 b 662 164 608 0 662 72 b 534 312 662 268 596 312 b 454 249 490 312 454 292 b 505 197 454 217 475 197 b 579 230 547 197 549 230 b 626 163 603 230 626 200 b 533 71 626 101 583 71 b 377 183 487 71 441 114 b 356 232 359 203 356 206 l 356 418 b 333 441 356 433 350 441 b 310 418 315 441 310 433 l 310 274 b 302 252 310 258 308 252 b 261 278 294 252 287 262 b 150 311 228 298 192 311 b 0 147 55 311 0 239 z' + }, + 'ornamentMordent': { + 'x_min': 1, + 'x_max': 729, + 'y_min': -73, + 'y_max': 319, + 'ha': 392, + 'o': 'm 30 59 b 88 94 53 59 73 79 b 144 143 107 109 124 127 b 176 161 158 154 168 161 b 197 144 183 161 189 156 l 323 10 b 351 0 328 3 340 0 b 377 9 361 0 372 3 b 498 114 392 17 475 94 l 498 -105 l 544 -105 l 544 153 b 562 160 550 157 556 160 b 585 144 569 160 576 156 b 710 10 590 135 697 24 b 737 0 716 3 727 0 b 765 9 749 0 759 3 b 1030 295 776 17 1011 274 l 1032 300 b 1050 328 1041 308 1050 318 b 1012 353 1050 343 1024 353 b 986 343 1002 353 994 348 b 854 190 971 330 871 206 b 828 176 842 180 835 176 b 802 190 818 176 809 183 b 681 333 791 202 696 320 b 645 353 668 344 657 353 b 613 340 634 353 626 350 b 580 304 600 330 590 315 l 546 265 l 546 459 l 501 459 l 501 216 l 459 167 b 449 156 455 164 452 160 b 302 327 397 216 310 317 b 258 353 291 338 282 351 b 226 340 245 353 238 348 b 193 304 213 330 203 317 l 187 298 b 72 167 148 255 109 212 l 20 107 b 1 73 12 98 1 84 b 30 59 1 65 9 59 z' + }, + 'ornamentShortTrill': { + 'x_min': 0, + 'x_max': 725, + 'y_min': 0, + 'y_max': 245, + 'ha': 245, + 'o': 'm 0 72 b 29 58 0 63 7 58 b 88 92 50 58 72 78 b 143 141 105 109 124 125 b 147 144 144 143 145 144 b 174 160 158 153 168 160 b 197 143 181 160 187 154 b 321 10 203 135 310 24 b 350 0 327 3 338 0 b 377 7 361 0 372 3 l 436 65 b 469 92 449 72 459 84 b 524 141 487 109 505 125 l 528 145 b 533 148 531 147 531 148 b 554 160 541 154 550 160 b 577 143 562 160 569 154 b 703 10 585 135 691 24 b 732 0 708 3 720 0 b 759 7 743 0 753 3 b 1024 294 769 16 1005 272 b 1044 327 1032 305 1044 321 b 1005 353 1044 341 1018 353 b 979 343 996 353 988 348 b 848 189 963 330 864 204 b 821 174 837 179 828 174 b 796 189 811 174 804 181 b 674 331 783 202 688 318 b 641 351 662 343 651 351 b 606 340 628 351 619 350 b 573 304 593 328 583 315 b 452 167 533 258 491 213 l 445 158 l 301 325 b 256 353 291 338 282 350 b 225 340 246 353 238 350 b 192 304 212 328 203 315 l 17 107 b 0 72 12 96 0 76 z' + }, + 'ornamentTremblement': { + 'x_min': 1, + 'x_max': 985, + 'y_min': 0, + 'y_max': 244, + 'ha': 244, + 'o': 'm 1 72 b 30 58 1 63 9 58 b 89 92 52 58 73 78 l 144 141 b 148 144 147 143 147 144 b 176 160 160 153 170 160 b 199 143 183 160 189 154 b 324 10 204 134 311 23 b 351 0 330 3 340 0 b 379 7 363 0 373 3 b 488 111 386 13 446 72 b 520 141 498 122 508 132 b 524 144 521 143 523 144 b 552 160 536 153 546 160 b 575 143 559 160 564 154 b 698 10 580 134 687 23 b 727 0 704 3 716 0 b 755 7 739 0 749 3 l 899 141 b 930 160 913 153 923 160 b 952 143 937 160 943 154 l 1077 10 b 1107 0 1084 3 1096 0 b 1133 7 1117 0 1128 3 b 1398 294 1143 16 1380 272 b 1418 327 1407 305 1418 321 b 1381 351 1418 343 1394 351 b 1354 341 1371 351 1362 348 b 1223 189 1338 328 1238 204 b 1195 174 1211 179 1202 174 b 1171 189 1185 174 1178 181 b 1048 331 1158 200 1063 318 b 1012 351 1035 343 1024 351 b 981 338 1002 351 994 350 b 948 304 968 328 958 315 b 827 166 907 258 865 212 b 821 160 825 164 822 163 l 678 325 b 634 351 667 338 657 350 b 602 338 621 351 613 348 b 569 304 590 328 580 315 l 444 161 b 302 325 392 222 311 317 b 258 351 291 338 281 350 b 228 338 245 351 238 348 b 193 304 215 328 204 315 l 19 107 b 1 72 13 96 1 76 z' + }, + 'ornamentPrecompAppoggTrill': { + 'x_min': 0, + 'x_max': 1119, + 'y_min': 0, + 'y_max': 481, + 'ha': 481, + 'o': 'm 121 0 b 249 68 168 0 232 53 b 279 94 262 75 271 86 b 336 144 298 111 315 128 b 367 163 350 156 360 163 b 389 145 374 163 380 157 b 514 12 395 137 501 26 b 543 1 520 4 531 1 b 569 9 553 1 563 4 b 636 73 576 14 605 43 l 658 94 b 714 144 677 111 694 128 b 746 163 729 156 739 163 b 768 145 753 163 759 157 b 893 12 773 137 880 26 b 922 1 899 4 910 1 b 948 9 932 1 942 4 l 1012 71 b 1037 94 1022 78 1030 86 b 1092 144 1054 111 1073 128 b 1123 161 1106 156 1115 161 b 1146 145 1130 161 1136 157 b 1270 12 1152 137 1259 26 b 1299 1 1276 4 1287 1 b 1326 9 1310 1 1320 4 b 1591 297 1336 19 1572 275 b 1611 328 1600 307 1611 320 b 1574 354 1611 343 1585 354 b 1548 344 1565 354 1555 350 b 1416 192 1532 331 1431 206 b 1388 177 1404 181 1395 177 b 1365 190 1380 177 1371 184 b 1243 333 1352 203 1256 321 b 1205 354 1228 346 1217 354 b 1174 341 1195 354 1187 351 b 1140 305 1161 330 1152 317 l 1015 163 b 873 328 963 223 880 318 b 828 354 860 344 847 353 b 796 341 816 354 809 351 b 763 305 783 331 773 317 b 642 168 721 261 681 215 b 636 163 641 167 639 164 b 494 328 585 223 501 318 b 449 354 481 344 468 353 b 418 341 438 354 431 351 b 384 305 405 331 395 317 b 264 168 343 261 302 215 l 242 144 b 144 88 232 124 171 88 b 79 197 81 88 79 189 l 79 648 b 60 693 79 683 71 693 b 52 691 58 693 55 693 b 0 616 3 672 0 625 l 0 207 b 121 0 0 40 68 0 z' + }, + 'ornamentPrecompSlideTrillDAnglebert': { + 'x_min': 2, + 'x_max': 1150, + 'y_min': -367, + 'y_max': 245, + 'ha': 612, + 'o': 'm 3 -144 b 4 -168 3 -153 3 -160 b 246 -482 24 -315 99 -422 b 458 -528 340 -521 410 -528 b 514 -526 485 -528 504 -526 b 552 -508 531 -526 552 -517 b 514 -497 552 -503 541 -498 l 503 -497 b 194 -390 432 -494 298 -488 b 69 -151 194 -390 69 -279 b 184 96 69 -60 128 27 b 328 183 202 118 258 183 b 477 96 413 183 454 118 b 559 10 510 62 552 19 b 588 0 566 3 576 0 b 613 7 598 0 609 3 b 723 112 622 14 681 73 b 789 161 733 122 776 161 b 811 144 796 161 802 156 b 936 10 816 135 923 24 b 965 0 942 3 953 0 b 991 7 975 0 985 3 b 1051 66 996 12 1022 37 b 1081 92 1063 73 1073 84 b 1136 143 1099 109 1117 127 b 1168 160 1151 154 1159 160 b 1191 144 1175 160 1181 156 b 1315 10 1197 135 1303 24 b 1344 0 1320 3 1332 0 b 1371 7 1355 0 1365 3 b 1636 295 1381 17 1617 274 b 1656 327 1644 305 1656 318 b 1619 353 1656 341 1630 353 b 1593 343 1610 353 1600 348 b 1460 190 1577 330 1476 204 b 1433 176 1449 180 1440 176 b 1410 189 1424 176 1416 183 b 1287 331 1397 202 1300 320 b 1250 353 1273 344 1261 353 b 1218 340 1240 353 1231 350 b 1185 304 1205 328 1197 315 l 1058 160 b 916 327 1007 220 923 317 b 871 353 903 343 890 351 b 840 340 860 353 852 350 b 806 304 827 330 816 315 b 685 167 765 259 724 213 l 680 160 l 615 235 b 419 344 582 275 523 344 b 3 -144 258 344 3 26 z' + }, + 'ornamentPrecompSlideTrillBach': { + 'x_min': 0, + 'x_max': 1048, + 'y_min': -367, + 'y_max': 331, + 'ha': 698, + 'o': 'm 0 -144 b 1 -168 0 -153 0 -160 b 243 -482 22 -315 96 -422 b 455 -528 337 -521 408 -528 b 511 -526 482 -528 501 -526 b 549 -508 528 -526 549 -517 b 511 -497 549 -503 539 -498 l 500 -497 b 192 -390 429 -494 295 -488 b 66 -151 127 -336 66 -238 b 189 105 66 -58 127 35 b 232 143 203 118 216 131 b 264 161 246 154 256 161 b 285 144 271 161 276 156 b 410 10 291 135 397 24 b 439 0 416 3 428 0 b 465 7 449 0 459 3 l 531 72 b 554 92 540 78 547 86 b 611 143 573 109 590 127 b 642 161 625 154 635 161 b 664 144 649 161 655 156 b 789 10 670 135 776 24 b 818 0 795 3 806 0 b 844 7 828 0 838 3 b 904 66 850 12 876 37 b 935 92 916 73 924 84 b 979 134 949 107 963 121 l 979 -88 l 1037 -88 l 1037 151 l 1044 144 b 1168 10 1050 135 1156 24 b 1197 0 1174 3 1185 0 b 1224 7 1208 0 1218 3 b 1489 295 1234 17 1470 274 b 1509 327 1498 305 1509 318 b 1472 353 1509 341 1483 353 b 1446 343 1463 353 1453 348 b 1313 190 1430 330 1329 204 b 1286 176 1302 180 1293 176 b 1263 189 1277 176 1269 183 b 1140 331 1250 202 1153 320 b 1103 353 1126 344 1115 353 b 1071 340 1093 353 1084 350 b 1038 304 1058 328 1050 315 l 1038 477 l 979 477 l 979 238 l 912 160 b 769 327 858 220 775 317 b 724 353 756 343 743 351 b 693 340 713 353 706 350 b 660 304 680 330 670 315 b 539 167 618 259 577 213 b 533 161 536 166 534 163 b 390 327 480 220 396 317 b 346 353 377 343 364 351 l 340 353 b 308 340 330 353 321 350 b 275 304 295 330 285 315 b 117 122 220 243 168 186 b 0 -144 68 62 0 -48 z' + }, + 'ornamentPrecompTrillSuffixDandrieu': { + 'x_min': 0, + 'x_max': 949, + 'y_min': 0, + 'y_max': 381, + 'ha': 381, + 'o': 'm 0 73 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 174 161 157 154 167 161 b 196 144 181 161 187 156 b 321 10 202 135 308 24 b 350 0 327 3 338 0 b 376 7 360 0 370 3 b 485 112 384 14 444 73 b 552 161 495 122 539 161 b 573 144 559 161 564 156 b 698 10 579 135 685 24 b 727 0 704 3 716 0 b 753 7 737 0 747 3 b 863 112 762 14 821 73 b 929 161 873 122 916 161 b 950 144 936 161 942 156 b 1076 10 956 135 1063 24 b 1104 0 1081 3 1093 0 b 1130 7 1115 0 1125 3 b 1236 108 1139 14 1195 69 b 1367 314 1297 160 1367 233 b 1250 521 1367 419 1318 482 b 1107 549 1211 537 1145 549 b 1083 546 1096 549 1087 549 b 1066 528 1071 540 1066 534 b 1079 520 1066 524 1070 520 b 1323 351 1187 517 1323 487 b 1201 171 1323 269 1260 219 b 1194 166 1201 171 1198 168 b 1056 327 1142 226 1063 317 b 1011 353 1043 343 1030 351 b 979 340 999 353 992 350 b 946 304 966 330 956 315 b 825 167 904 259 864 213 l 821 161 b 678 327 768 222 685 317 b 634 353 665 343 652 351 b 602 340 622 353 615 350 b 569 304 589 330 579 315 b 448 167 527 259 487 213 l 444 161 b 301 327 390 222 308 317 b 256 353 288 343 275 351 b 225 340 245 353 238 350 b 192 304 212 330 202 315 b 71 167 150 259 109 213 b 17 105 52 147 36 127 b 0 73 10 98 0 84 z' + }, + 'ornamentPrecompDoubleCadenceUpperPrefix': { + 'x_min': 0, + 'x_max': 1278, + 'y_min': 0, + 'y_max': 247, + 'ha': 247, + 'o': 'm 1 285 b 308 0 42 190 157 0 b 530 120 415 1 482 63 b 559 144 539 128 549 137 b 590 163 573 156 583 163 b 612 145 598 163 603 157 b 739 10 618 137 724 24 b 768 0 744 3 756 0 b 793 7 778 0 788 3 b 903 114 802 14 861 75 l 939 144 b 971 163 953 156 963 163 b 992 145 978 163 984 157 b 1119 10 998 137 1106 24 b 1148 0 1125 3 1136 0 b 1174 7 1158 0 1168 3 b 1284 114 1182 14 1241 75 b 1316 144 1282 115 1312 141 b 1348 161 1331 156 1339 161 b 1371 145 1355 161 1361 157 b 1496 10 1377 137 1485 24 b 1525 0 1502 3 1513 0 b 1552 7 1536 0 1547 3 b 1819 298 1562 17 1800 276 b 1840 330 1829 308 1840 320 b 1832 344 1840 334 1837 340 b 1801 356 1820 351 1810 356 b 1776 346 1793 356 1783 351 b 1642 192 1760 333 1659 206 b 1614 177 1630 181 1621 177 b 1591 190 1606 177 1597 184 b 1469 334 1578 203 1482 323 b 1430 356 1453 347 1441 356 b 1398 343 1420 356 1411 353 b 1365 307 1385 331 1377 318 l 1240 164 b 1097 330 1187 226 1104 320 b 1053 356 1084 346 1071 354 b 1021 343 1041 356 1034 353 b 988 307 1008 333 998 318 b 865 168 946 262 904 216 l 861 163 b 717 330 808 223 724 320 b 672 356 704 346 691 354 b 641 343 661 356 654 353 b 608 307 628 333 618 318 b 485 168 566 262 524 216 l 455 134 b 284 46 409 88 351 46 b 16 285 148 46 32 265 b 3 295 9 292 4 295 b 0 291 1 295 0 292 b 1 285 0 288 1 285 z' + }, + 'ornamentPrecompDoubleCadenceUpperPrefixTurn': { + 'x_min': 0, + 'x_max': 1277, + 'y_min': -62, + 'y_max': 333, + 'ha': 395, + 'o': 'm 0 289 b 1 284 0 287 1 284 b 308 -1 42 189 157 -1 b 530 118 415 0 481 62 b 557 143 539 127 547 135 b 590 161 572 154 582 161 b 612 144 598 161 603 156 b 737 9 618 135 724 24 b 768 -1 743 1 755 -1 b 793 6 778 -1 788 1 b 903 112 802 13 861 73 l 937 143 b 971 161 953 154 963 161 b 992 144 978 161 984 156 b 1117 9 998 135 1104 24 b 1148 -1 1123 1 1136 -1 b 1174 6 1158 -1 1168 1 l 1230 60 l 1230 -89 l 1273 -89 l 1273 102 l 1283 112 b 1348 160 1295 125 1332 160 b 1371 144 1355 160 1361 156 b 1496 9 1377 135 1483 24 b 1525 -1 1502 1 1513 -1 b 1552 6 1536 -1 1547 1 b 1819 297 1562 16 1800 275 b 1839 328 1827 307 1839 320 b 1801 354 1839 343 1813 354 b 1776 344 1793 354 1783 350 b 1642 190 1760 331 1657 206 b 1614 176 1630 180 1621 176 b 1591 189 1606 176 1597 183 b 1467 333 1578 203 1480 321 b 1430 354 1453 346 1441 354 b 1398 341 1420 354 1411 351 b 1365 305 1385 330 1377 317 l 1273 202 l 1273 480 l 1230 480 l 1230 174 l 1097 328 b 1053 354 1084 344 1071 353 b 1021 341 1041 354 1034 351 b 988 305 1008 331 998 317 b 865 167 945 261 904 215 l 861 161 b 717 328 808 222 724 318 b 672 354 704 344 691 353 b 641 341 661 354 654 351 b 608 305 628 331 618 317 b 485 167 564 261 524 215 b 455 132 474 156 465 144 b 284 45 410 88 350 45 b 14 284 148 45 30 264 b 3 294 9 291 4 294 b 0 289 1 294 0 291 z' + }, + 'ornamentPrecompTrillLowerSuffix': { + 'x_min': 0, + 'x_max': 859, + 'y_min': -222, + 'y_max': 246, + 'ha': 468, + 'o': 'm 0 73 b 29 58 0 65 7 58 b 86 92 56 59 72 79 b 143 143 105 109 122 127 b 176 161 157 154 168 161 b 197 144 183 161 189 156 b 323 9 203 135 310 23 b 353 -1 328 1 340 -1 b 379 6 363 -1 373 1 b 488 112 387 13 446 73 l 523 143 b 556 161 539 154 549 161 b 577 144 563 161 569 156 b 703 9 583 135 690 23 b 733 -1 708 1 721 -1 b 759 6 743 -1 753 1 b 868 112 768 13 827 73 b 955 183 878 122 943 183 b 1081 107 965 183 1031 153 b 1156 -89 1128 63 1156 6 l 1156 -102 b 948 -297 1156 -204 1048 -297 b 806 -271 904 -297 850 -282 l 792 -266 b 801 -288 792 -268 795 -282 b 948 -320 809 -297 880 -320 b 1237 -50 1092 -320 1237 -199 b 1164 217 1237 75 1218 122 b 1031 351 1138 259 1063 351 b 1011 337 1020 351 1024 347 b 828 167 952 291 886 217 l 824 164 b 683 328 772 225 690 318 b 638 354 670 344 657 353 b 606 341 626 354 619 351 b 573 305 593 331 583 317 b 451 167 530 261 490 215 l 446 161 b 302 328 393 222 310 318 b 258 354 289 344 276 353 b 226 341 246 354 239 351 b 193 305 213 331 203 317 b 71 167 150 261 109 215 b 17 105 52 147 36 127 b 0 73 10 98 0 84 z' + }, + 'stringsDownBow': { + 'x_min': 0, + 'x_max': 312, + 'y_min': 0, + 'y_max': 318, + 'ha': 318, + 'o': 'm 17 0 l 37 0 b 55 17 46 0 55 7 l 55 253 b 225 278 55 269 140 278 b 395 253 310 278 395 269 l 395 17 b 413 0 395 7 403 0 l 432 0 b 449 17 441 0 449 7 l 449 420 b 412 458 449 441 432 458 l 37 458 b 0 420 17 458 0 441 l 0 17 b 17 0 0 7 9 0 z' + }, + 'stringsUpBow': { + 'x_min': 1, + 'x_max': 249, + 'y_min': 1, + 'y_max': 495, + 'ha': 494, + 'o': 'm 1 690 b 3 683 1 687 1 685 l 154 22 b 181 1 157 10 167 1 b 206 22 193 1 203 10 l 359 683 l 359 688 b 338 713 359 700 351 710 l 333 713 b 308 694 321 713 311 706 l 180 140 l 53 694 b 27 713 49 706 39 713 l 22 713 b 1 690 10 710 1 700 z' + }, + 'stringsHarmonic': { + 'x_min': 0, + 'x_max': 200, + 'y_min': 0, + 'y_max': 200, + 'ha': 200, + 'o': 'm 144 0 b 288 144 223 0 288 65 b 144 288 288 225 223 288 b 0 144 65 288 0 225 b 144 0 0 65 65 0 z m 39 144 b 144 249 39 203 86 249 b 249 144 203 249 249 203 b 144 39 249 86 203 39 b 39 144 86 39 39 86 z' + }, + 'pluckedSnapPizzicatoAbove': { + 'x_min': 0, + 'x_max': 200, + 'y_min': 0, + 'y_max': 300, + 'ha': 300, + 'o': 'm 144 0 b 288 144 223 0 288 63 b 167 285 288 215 235 275 l 167 432 l 121 432 l 121 285 b 0 144 52 275 0 215 b 144 0 0 63 65 0 z m 39 144 b 121 246 39 193 73 236 l 121 144 l 167 144 l 167 246 b 249 144 213 236 249 193 b 144 39 249 85 202 39 b 39 144 85 39 39 85 z' + }, + 'pluckedSnapPizzicatoBelow': { + 'x_min': 0, + 'x_max': 200, + 'y_min': 0, + 'y_max': 300, + 'ha': 300, + 'o': 'm 121 145 l 121 0 l 167 0 l 167 145 b 288 288 235 157 288 216 b 144 432 288 369 223 432 b 0 288 65 432 0 369 b 121 145 0 216 52 157 z m 39 288 b 144 393 39 347 86 393 b 249 288 203 393 249 347 b 167 186 249 238 215 196 l 167 288 l 121 288 l 121 186 b 39 288 75 196 39 238 z' + }, + 'pluckedLeftHandPizzicato': { + 'x_min': 0, + 'x_max': 272, + 'y_min': 0, + 'y_max': 272, + 'ha': 272, + 'o': 'm 0 219 l 0 173 l 173 173 l 173 0 l 219 0 l 219 173 l 392 173 l 392 219 l 219 219 l 219 392 l 173 392 l 173 219 z' + }, + 'keyboardPedalPed': { + 'x_min': 0, + 'x_max': 1019, + 'y_min': -8, + 'y_max': 555, + 'ha': 563, + 'o': 'm 122 376 b 240 540 189 376 240 452 b 225 586 240 579 233 586 b 204 549 213 586 212 573 b 138 480 199 527 181 480 b 85 549 96 480 85 517 l 85 554 b 353 762 89 690 230 762 b 373 752 364 762 373 760 b 351 708 373 740 360 723 b 274 546 330 675 274 585 b 353 416 274 508 333 444 b 412 304 372 390 412 351 b 382 228 412 275 403 256 b 334 190 363 202 361 200 b 147 29 271 167 147 88 b 196 -12 147 4 171 -12 b 343 108 239 -12 279 33 l 363 132 b 387 150 370 141 376 150 b 543 -4 445 150 467 -4 b 631 42 567 -4 586 0 l 668 78 b 685 89 674 84 680 89 b 696 75 688 89 690 86 b 809 -9 717 29 753 -9 b 946 66 854 -9 894 13 b 988 107 971 92 981 107 b 1002 89 994 107 996 99 b 1152 -4 1030 36 1077 -4 b 1329 248 1238 -4 1329 82 b 792 717 1329 556 1047 665 b 766 720 785 719 775 720 b 747 703 752 720 747 711 b 780 680 747 693 756 685 b 1223 222 1028 621 1223 504 b 1152 39 1223 122 1205 39 b 1073 229 1104 39 1073 132 b 1132 423 1073 314 1086 377 b 1142 442 1140 432 1142 436 b 1126 458 1142 451 1136 458 b 1093 446 1119 458 1109 455 b 975 216 1022 408 975 337 l 975 190 b 943 121 975 160 972 150 b 852 69 899 76 877 69 b 776 148 816 69 786 117 b 773 163 775 154 773 158 b 786 177 773 167 776 170 l 801 187 b 937 366 867 235 937 284 b 844 454 937 422 900 454 b 665 217 711 454 665 331 b 671 153 665 197 667 176 l 671 147 b 662 134 671 143 670 140 b 605 111 639 118 625 111 b 521 160 572 111 546 135 b 451 203 497 184 474 197 b 426 212 435 207 426 206 b 436 230 426 216 429 220 b 510 389 464 269 510 340 b 429 521 510 435 480 462 b 369 629 387 570 369 599 b 402 720 369 648 384 691 b 462 763 425 759 446 763 b 611 624 540 763 611 704 b 564 575 611 592 590 575 b 501 602 540 575 520 582 b 474 622 492 611 487 622 b 459 603 465 622 459 615 b 603 471 459 570 510 471 b 711 588 670 471 711 524 b 422 799 711 742 554 799 l 413 799 b 179 749 327 798 261 789 b 0 517 107 713 0 632 b 122 376 0 454 37 376 z m 1405 0 b 1467 62 1441 0 1467 26 b 1405 124 1467 98 1441 124 b 1344 62 1369 124 1344 98 b 1405 0 1344 26 1369 0 z m 756 282 b 815 403 756 346 772 403 b 848 343 838 403 848 383 b 780 226 848 295 824 261 b 765 217 773 220 768 217 b 759 228 762 217 759 220 b 756 282 757 245 756 262 z' + }, + 'keyboardPedalUp': { + 'x_min': 0, + 'x_max': 450, + 'y_min': 0, + 'y_max': 450, + 'ha': 450, + 'o': 'm 66 252 b 132 281 94 252 115 264 b 183 308 153 301 161 308 l 190 308 b 236 271 216 308 236 300 b 216 239 236 261 229 252 l 210 233 b 158 219 197 220 184 219 b 73 147 114 219 73 196 b 147 73 73 107 107 73 b 219 158 196 73 219 114 b 233 210 219 184 220 197 l 239 216 b 271 236 252 229 261 236 b 308 190 300 236 308 216 l 308 183 b 281 132 308 161 301 153 b 252 66 264 115 252 94 b 324 0 252 23 285 0 b 396 66 363 0 396 23 b 367 132 396 94 384 115 b 340 183 347 153 340 161 l 340 190 b 377 236 340 216 348 236 b 409 216 387 236 396 229 l 415 210 b 429 158 428 197 429 184 b 501 73 429 114 452 73 b 575 147 541 73 575 107 b 490 219 575 196 534 219 b 438 233 464 219 451 220 l 432 239 b 412 271 419 252 412 261 b 458 308 412 300 432 308 l 465 308 b 516 281 487 308 495 301 b 582 252 533 264 554 252 b 648 324 625 252 648 285 b 582 396 648 363 625 396 b 516 367 554 396 533 384 b 465 340 495 347 487 340 l 458 340 b 412 377 432 340 412 348 b 432 409 412 387 419 396 l 438 415 b 490 429 451 428 464 429 b 575 501 534 429 575 452 b 501 575 575 541 541 575 b 429 490 452 575 429 534 b 415 438 429 464 428 451 l 409 432 b 377 412 396 419 387 412 b 340 458 348 412 340 432 l 340 465 b 367 516 340 487 347 495 b 396 582 384 533 396 554 b 324 648 396 625 363 648 b 252 582 285 648 252 625 b 281 516 252 554 264 533 b 308 465 301 495 308 487 l 308 458 b 271 412 308 432 300 412 b 239 432 261 412 252 419 l 233 438 b 219 490 220 451 219 464 b 147 575 219 534 196 575 b 73 501 107 575 73 541 b 158 429 73 452 114 429 b 210 415 184 429 197 428 l 216 409 b 236 377 229 396 236 387 b 190 340 236 348 216 340 l 183 340 b 132 367 161 340 153 347 b 66 396 115 384 94 396 b 0 324 23 396 0 363 b 66 252 0 285 23 252 z m 271 324 b 324 377 271 357 291 377 b 377 324 357 377 377 357 b 324 271 377 291 357 271 b 271 324 291 271 271 291 z' + }, + 'pictChokeCymbal': { + 'x_min': 1, + 'x_max': 152, + 'y_min': 2, + 'y_max': 251, + 'ha': 249, + 'o': 'm 1 271 b 82 190 1 222 35 190 b 122 160 118 190 122 160 b 125 144 124 154 125 150 b 102 88 125 124 115 105 b 37 32 78 56 40 35 b 26 19 32 29 26 26 b 27 14 26 17 27 16 b 37 3 29 6 33 3 b 181 102 85 3 158 66 b 219 239 210 147 219 197 l 219 249 b 104 361 219 317 170 361 b 1 271 42 361 1 321 z' + }, + 'wiggleArpeggiatoUp': { + 'x_min': -33, + 'x_max': 292, + 'y_min': 0, + 'y_max': 119, + 'ha': 119, + 'o': 'm -29 42 b -10 46 -23 42 -16 43 b 56 63 12 56 29 63 b 248 0 121 63 135 0 b 419 127 361 0 410 104 b 420 132 420 130 420 131 b 412 140 420 137 416 140 b 386 130 403 140 392 134 b 334 107 367 117 353 107 b 318 108 330 107 324 107 b 240 138 289 112 265 128 b 130 171 209 153 168 171 b -39 68 16 171 -14 91 b -48 53 -45 62 -48 58 b -29 42 -48 46 -39 42 z' + }, + 'arrowheadBlackUp': { + 'x_min': 0, + 'x_max': 228, + 'y_min': 0, + 'y_max': 299, + 'ha': 299, + 'o': 'm 0 20 b 19 1 0 4 7 1 b 166 50 43 16 160 50 b 308 1 171 50 289 13 b 312 0 310 1 311 0 b 328 20 321 0 328 12 b 166 431 328 30 220 274 b 0 20 111 274 0 30 z' + }, + 'arrowheadBlackDown': { + 'x_min': 0, + 'x_max': 228, + 'y_min': 0, + 'y_max': 299, + 'ha': 299, + 'o': 'm 166 0 b 328 410 220 157 328 400 b 312 431 328 419 321 431 b 308 429 311 431 310 429 b 166 380 289 418 171 380 b 19 429 160 380 43 415 b 0 410 7 429 0 426 b 166 0 0 400 111 157 z' + }, + 'arpeggiatoUp': { + 'x_min': 1, + 'x_max': 229, + 'y_min': 7, + 'y_max': 1511, + 'ha': 1504, + 'o': 'm 121 1848 b 92 1778 115 1822 101 1800 l 89 1773 b 59 1668 75 1741 59 1702 b 96 1555 59 1614 76 1580 b 99 1551 98 1554 99 1551 l 102 1547 b 124 1496 115 1531 124 1515 b 122 1482 124 1492 124 1488 b 92 1404 118 1453 102 1428 b 59 1293 78 1372 59 1332 b 105 1172 59 1234 81 1198 b 124 1123 115 1158 124 1145 b 122 1110 124 1119 122 1115 b 92 1032 118 1081 102 1057 b 59 922 78 1001 59 960 b 115 792 59 855 86 816 b 124 760 121 782 124 773 b 122 744 124 756 124 750 b 92 667 118 716 102 693 b 59 556 78 635 59 595 b 108 433 59 495 82 458 b 124 389 117 420 124 408 b 122 374 124 384 124 379 b 92 298 118 346 102 323 l 89 292 b 59 186 75 261 59 222 b 163 19 59 73 140 42 b 177 10 168 13 173 10 b 189 29 184 10 189 19 b 184 48 189 35 187 42 b 167 114 174 69 167 85 b 230 305 167 179 229 193 b 181 423 230 357 209 396 b 167 484 173 442 167 458 b 230 675 167 547 229 563 b 179 796 230 729 206 769 b 167 850 171 812 167 827 b 230 1040 167 913 229 929 b 183 1158 230 1092 209 1130 b 167 1220 173 1178 167 1194 b 230 1411 167 1284 229 1300 b 186 1526 230 1462 210 1499 b 167 1594 176 1529 167 1584 b 230 1786 167 1659 229 1673 b 219 1848 230 1809 226 1829 l 330 1848 l 164 2176 l 1 1848 z' + }, + 'arpeggiatoDown': { + 'x_min': 1, + 'x_max': 229, + 'y_min': -4, + 'y_max': 1500, + 'ha': 1504, + 'o': 'm 1 323 l 164 -6 l 330 323 l 219 323 b 230 384 226 341 230 361 b 167 576 229 497 167 511 b 186 644 167 586 176 641 b 230 759 210 671 230 708 b 167 950 229 870 167 886 b 183 1012 167 976 173 992 b 230 1130 209 1040 230 1079 b 167 1320 229 1241 167 1257 b 179 1374 167 1344 171 1358 b 230 1495 206 1401 230 1441 b 167 1686 229 1607 167 1623 b 181 1747 167 1712 173 1728 b 230 1865 209 1774 230 1813 b 167 2056 229 1977 167 1992 b 184 2123 167 2085 174 2101 b 189 2141 187 2128 189 2136 b 177 2160 189 2151 184 2160 b 163 2151 173 2160 168 2157 b 59 1984 140 2128 59 2097 b 89 1878 59 1948 75 1909 l 92 1872 b 122 1796 102 1848 118 1824 b 124 1781 124 1791 124 1786 b 108 1737 124 1763 117 1750 b 59 1614 82 1712 59 1675 b 92 1503 59 1575 78 1535 b 122 1426 102 1477 118 1454 b 124 1410 124 1420 124 1414 b 115 1378 124 1397 121 1388 b 59 1248 86 1354 59 1315 b 92 1138 59 1210 78 1169 b 122 1060 102 1113 118 1089 b 124 1047 122 1056 124 1051 b 105 998 124 1025 115 1012 b 59 877 81 972 59 936 b 92 766 59 838 78 798 b 122 688 102 742 118 717 b 124 674 124 683 124 678 b 102 624 124 655 115 639 l 99 619 b 96 615 99 619 98 616 b 59 503 76 590 59 556 b 89 397 59 468 75 429 l 92 392 b 121 323 101 370 115 348 z' + }, + 'repeat1Bar': { + 'x_min': 0, + 'x_max': 532, + 'y_min': -250, + 'y_max': 279, + 'ha': 529, + 'o': 'm 0 -350 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 l 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 z m 586 -161 b 675 -251 586 -210 626 -251 b 766 -161 726 -251 766 -210 b 675 -71 766 -111 726 -71 b 586 -161 626 -71 586 -111 z m 0 197 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 b 0 197 40 288 0 248 z' + }, + 'repeat2Bars': { + 'x_min': 0, + 'x_max': 762, + 'y_min': -250, + 'y_max': 279, + 'ha': 529, + 'o': 'm 0 -350 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 l 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 z m 343 -360 l 485 -360 b 516 -340 498 -360 508 -348 l 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 b 343 -360 331 -356 336 -360 z m 917 -161 b 1007 -251 917 -210 958 -251 b 1097 -161 1057 -251 1097 -210 b 1007 -71 1097 -111 1057 -71 b 917 -161 958 -71 917 -111 z m 89 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 b 0 197 40 288 0 248 b 89 108 0 148 40 108 z' + }, + 'repeat4Bars': { + 'x_min': 0, + 'x_max': 1232, + 'y_min': -250, + 'y_max': 279, + 'ha': 529, + 'o': 'm 331 -350 b 343 -360 331 -356 336 -360 l 485 -360 b 516 -340 498 -360 508 -348 l 1090 380 b 1097 395 1094 386 1097 390 b 1089 402 1097 399 1094 402 l 936 402 b 910 380 927 402 920 393 l 336 -340 b 331 -350 333 -343 331 -347 z m 1008 -350 b 1020 -360 1008 -356 1012 -360 l 1162 -360 b 1192 -340 1175 -360 1185 -348 l 1767 380 b 1774 395 1771 386 1774 390 b 1765 402 1774 399 1771 402 l 1613 402 b 1587 380 1604 402 1597 393 l 1012 -340 b 1008 -350 1009 -343 1008 -347 z m 688 -360 l 831 -360 b 861 -340 844 -360 854 -348 l 1436 380 b 1443 395 1440 386 1443 390 b 1434 402 1443 399 1440 402 l 1282 402 b 1256 380 1273 402 1266 393 l 681 -340 b 677 -350 678 -343 677 -347 b 688 -360 677 -356 681 -360 z m 0 -350 b 12 -360 0 -356 4 -360 l 154 -360 b 184 -340 167 -360 177 -348 l 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 z m 1683 -251 b 1774 -161 1734 -251 1774 -210 b 1683 -71 1774 -111 1734 -71 b 1594 -161 1634 -71 1594 -111 b 1683 -251 1594 -210 1634 -251 z m 0 197 b 89 108 0 148 40 108 b 180 197 140 108 180 148 b 89 288 180 248 140 288 b 0 197 40 288 0 248 z' + }, + 'repeatBarSlash': { + 'x_min': 0, + 'x_max': 532, + 'y_min': -250, + 'y_max': 279, + 'ha': 529, + 'o': 'm 12 -360 l 154 -360 b 184 -340 167 -360 177 -348 l 759 380 b 766 395 763 386 766 390 b 757 402 766 399 763 402 l 605 402 b 579 380 596 402 589 393 l 4 -340 b 0 -350 1 -343 0 -347 b 12 -360 0 -356 4 -360 z' + } + }, + 'fontFamily': 'Bravura', + 'resolution': 1000, + 'generatedOn': '2020-04-13T11:57:57.152Z' +}; + +/***/ }), + +/***/ "./src/fonts/bravura_metrics.js": +/*!**************************************!*\ + !*** ./src/fonts/bravura_metrics.js ***! + \**************************************/ +/*! exports provided: BravuraMetrics */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BravuraMetrics", function() { return BravuraMetrics; }); +var BravuraMetrics = { + name: 'Bravura', + smufl: true, + stave: { + padding: 12 + }, + clef: { + "default": { + point: 32, + width: 26 + }, + small: { + point: 26, + width: 20 + }, + annotations: { + '8va': { + smuflCode: 'timeSig8', + "default": { + point: 18, + treble: { + line: -1.4, + shiftX: 12 + } + }, + small: { + point: 16, + treble: { + line: -0.2, + shiftX: 8 + } + } + }, + '8vb': { + smuflCode: 'timeSig8', + "default": { + point: 18, + treble: { + line: 6, + shiftX: 10 + }, + bass: { + line: 3.5, + shiftX: 1 + } + }, + small: { + point: 16, + treble: { + line: 5.3, + shiftX: 6 + }, + bass: { + line: 3.1, + shiftX: 0.5 + } + } + } + }, + // These may no longer be necessary + lineCount: { + '8': { + point: 55, + shiftY: 14 + }, + '7': { + point: 47, + shiftY: 8 + }, + '6': { + point: 32, + shiftY: 1 + }, + '5': { + point: 30, + shiftY: -6 + }, + '4': { + point: 23, + shiftY: -12 + } + } + }, + pedalMarking: { + up: { + point: 40 + }, + down: { + point: 34 + } + }, + // These are for numeric digits, such as in time signatures + digits: { + // used by timesig + shiftLine: -1, + point: 34, + // used by tuplets + tupletPoint: 22, + shiftY: -6 + }, + articulation: { + articStaccatissimoAbove: { + padding: 2 + }, + articStaccatissimoBelow: { + padding: 2 + } + }, + tremolo: { + "default": { + point: 25, + spacing: 5, + offsetYStemUp: -5, + offsetYStemDown: 5, + offsetXStemUp: 11, + offsetXStemDown: 1 + }, + grace: { + point: 18, + spacing: 4, + offsetYStemUp: -5, + offsetYStemDown: 5, + offsetXStemUp: 7, + offsetXStemDown: 1 + } + }, + stem: { + // These are stem (Y) offsets to the note heads. To shift the + // noteheads (x-position) themselves, see glyphs.notehead.custom. + noteHead: { + noteheadTriangleUpHalf: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4 + }, + noteheadTriangleUpBlack: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4 + }, + noteheadTriangleUpWhole: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4 + }, + noteheadXHalf: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4 + }, + noteheadXBlack: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4 + }, + noteheadXWhole: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4 + }, + noteheadBlack: { + offsetYBaseStemDown: 2 + }, + noteheadSquareWhite: { + offsetYBaseStemDown: -5, + offsetYBaseStemUp: 5 + } + } + }, + // Values under here are used by the Glyph class to reposition and rescale + // glyphs based on their category. This should be the first stop for + // custom font glyph repositioning. + // + // The glyph loader first looks up a specific set of settings based on the + // glyph code, and if not found, uses the defaults from the category. See + // glyphs.textNote for an example of this. + // + // Details in Glyph.lookupFontMetrics. + glyphs: { + coda: { + point: 20, + shiftX: -7, + shiftY: 8 + }, + segno: { + shiftX: -7 + }, + flag: { + shiftX: -0.75, + tabStem: { + shiftX: -1.75 + }, + staveTempo: { + shiftX: -1 + } + }, + clef: { + gClef: { + "default": { + scale: 1.1, + shiftY: 1 + }, + small: { + shiftY: 1.5 + } + }, + fClef: { + "default": { + shiftY: -0.5 + } + } + }, + ornament: { + ornamentTurn: { + scale: 1.2 + }, + ornamentTurnSlash: { + scale: 1.2 + } + }, + stroke: { + arrowheadBlackDown: { + straight: { + shiftX: -4.5 + }, + wiggly: { + shiftX: -1, + shiftY: 1 + } + }, + arrowheadBlackUp: { + straight: { + shiftX: -0.85 + }, + wiggly: { + shiftX: -1, + shiftY: 1 + } + } + }, + textNote: { + point: 34, + breathMarkTick: { + point: 36, + shiftY: 9 + }, + breathMarkComma: { + point: 36 + }, + segno: { + point: 30, + shiftX: -7, + shiftY: 8 + }, + coda: { + point: 20, + shiftX: -7, + shiftY: 8 + }, + ornamentTrill: { + shiftX: -8, + shiftY: 8 + }, + ornamentTurn: { + point: 42 + }, + ornamentTurnSlash: { + point: 42 + }, + ornamentMordent: { + shiftX: -8 + }, + ornamentShortTrill: { + shiftX: -8 + } + }, + noteHead: { + standard: { + restQuarterStemUp: { + point: 35 + }, + restQuarterStemDown: { + point: 35 + } + }, + custom: { + 'noteheadCircleXStemUp': { + shiftX: 1.5 + }, + 'noteheadCircleXStemDown': { + shiftX: 0.25 + }, + 'noteheadDiamondHalfStemUp': { + shiftX: 1.5 + }, + 'noteheadDiamondBlackStemUp': { + shiftX: 1.5 + }, + 'noteheadDiamondWholeStemUp': { + shiftX: 1 + }, + 'noteheadXHalfStemUp': { + shiftX: -2 + }, + 'noteheadXHalfStemDown': { + shiftX: 1 + }, + 'noteheadXWholeStemUp': { + shiftX: -4 + }, + 'noteheadXWholeStemDown': { + shiftX: 1 + }, + 'noteheadSquareWhiteStemDown': { + shiftX: 0.25 + }, + 'noteheadSquareWhiteStemUp': { + shiftX: -0.75 + }, + 'noteheadSquareBlackStemUp': { + shiftX: -0.75 + }, + 'noteheadTriangleUpWholeStemUp': { + shiftX: -0.75 + } + } + } + } +}; + +/***/ }), + +/***/ "./src/fonts/custom_glyphs.js": +/*!************************************!*\ + !*** ./src/fonts/custom_glyphs.js ***! + \************************************/ +/*! exports provided: CustomFont */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CustomFont", function() { return CustomFont; }); +var CustomFont = { + 'resolution': 1000, + 'familyName': 'VexflowCustom', + 'glyphs': { + 'noteheadSquareWhite': { + 'x_min': 0, + 'x_max': 430.75, + 'ha': 386, + 'o': 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 l 50 150 l 380 150 l 380 -150 l 50 -150 l 50 150 ' + }, + 'noteheadSquareBlack': { + 'x_min': 0, + 'x_max': 430.75, + 'ha': 386, + 'o': 'm 0 200 l 0 -200 l 430 -200 l 430 200 l 0 200 ' + }, + 'accidentalBuyukMucennebFlat': { + 'x_min': -171.5, + 'x_max': 251.8125, + 'ha': 257, + 'o': 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ' + }, + 'accidentalBakiyeFlat': { + 'x_min': -176.9375, + 'x_max': 251.8125, + 'ha': 257, + 'o': 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ' + }, + 'accidentalKucukMucennebSharp': { + 'x_min': -1.359375, + 'x_max': 255.890625, + 'ha': 261, + 'o': 'm 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 ' + }, + 'accidentalKoron': { + 'x_min': -20, + 'x_max': 320, + 'ha': 257, + 'o': 'm -8 200 b -8 210 8 200 16 200 l 20 148 -199 l 23 -615 b 0 -629 9 -629 6 -629 l -21 -612 l -21 -201 l -21 216 l -20 200 m 16 200 l 310 0 l 240 0 l 16 140 l 16 -120 l 240 0 l 310 0 l 16 -200 ' + }, + 'accidentalSori': { + 'x_min': -10.890625, + 'x_max': 299.4375, + 'ha': 294, + 'o': 'm 44 174 b 51 174 47 174 49 174 b 68 173 55 174 61 174 l 287 112 l 551 40 b 615 20 617 22 609 23 b 626 0 622 16 626 8 b 615 -22 626 -9 622 -18 b 613 -23 613 -23 613 -23 b 613 -23 613 -23 613 -23 b 287 -113 613 -24 597 -29 l 68 -174 b 53 -176 61 -176 57 -176 b 39 -172 47 -176 43 -174 b 27 -151 31 -167 27 -159 b 39 -129 27 -141 31 -133 b 230 -74 43 -124 20 -131 l 370 -36 l 468 -9 b 498 0 484 -4 498 -1 b 468 8 498 0 484 2 l 370 34 l 230 73 b 40 126 28 129 43 124 b 27 149 31 131 27 140 b 44 174 27 161 34 170 m 205 110 l 205 300 b 205 330 245 330 245 300 l 245 300 l 245 -300 b 245 -330 205 -330 205 -300 l 205 -300 l 205 110 l 345 90 m 345 90 l 345 330 b 345 360 385 360 385 330 l 385 330 l 385 -270 b 385 -300 345 -300 345 -270 l 345 -270 l 345 90 ' + }, + 'vexAccidentalMicrotonal2': { + 'x_min': -1.359375, + 'x_max': 386.5625, + 'ha': 394, + 'o': 'm 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 ' + }, + 'vexAccidentalMicrotonal3': { + 'x_min': 0, + 'x_max': 430.75, + 'ha': 360, + 'o': 'm -146 537 b -138 538 -143 538 -141 538 b -118 525 -129 538 -121 533 b -117 390 -117 522 -117 521 b -115 259 -117 268 -117 259 b -115 259 -115 259 -115 259 b -59 272 -104 263 -62 272 b -39 259 -50 272 -42 267 b -37 209 -38 257 -37 233 b -39 159 -37 185 -38 162 b -85 138 -43 149 -44 149 l -117 131 l -117 21 b -115 -88 -117 -80 -117 -88 b -115 -88 -115 -88 -115 -88 b -59 -75 -104 -84 -62 -75 b -44 -81 -52 -75 -48 -77 b -38 -124 -38 -87 -38 -85 b -38 -138 -38 -124 -38 -138 b -38 -152 -38 -138 -38 -152 b -44 -195 -38 -191 -38 -190 b -85 -209 -48 -200 -48 -200 l -117 -217 l -117 -349 b -118 -486 -117 -481 -117 -482 b -138 -499 -121 -494 -129 -499 b -153 -493 -143 -499 -149 -497 b -159 -415 -158 -487 -159 -496 b -159 -355 -159 -398 -159 -379 b -159 -227 -159 -284 -159 -227 b -205 -238 -159 -227 -180 -232 b -250 -249 -230 -244 -250 -249 b -251 -386 -251 -249 -251 -311 b -252 -525 -251 -521 -251 -522 b -272 -538 -255 -534 -264 -538 b -287 -532 -277 -538 -283 -536 b -293 -452 -292 -527 -293 -536 b -293 -391 -293 -436 -293 -415 b -294 -260 -293 -269 -293 -260 b -294 -260 -294 -260 -294 -260 b -348 -272 -306 -264 -345 -272 b -368 -259 -357 -272 -365 -267 b -369 -209 -369 -257 -369 -233 b -368 -159 -369 -185 -369 -162 b -323 -139 -364 -149 -362 -148 l -293 -131 l -293 -22 b -294 87 -293 80 -293 87 b -294 87 -294 87 -294 87 b -348 75 -306 84 -345 75 b -368 88 -357 75 -365 80 b -369 138 -369 91 -369 114 b -368 188 -369 162 -369 186 b -323 209 -364 198 -362 199 l -293 216 l -293 349 b -292 486 -293 481 -293 482 b -272 499 -288 494 -280 499 b -257 493 -266 499 -261 497 b -251 414 -251 487 -251 496 b -251 354 -251 398 -251 378 b -251 226 -251 284 -251 226 b -205 238 -250 226 -230 231 b -159 249 -180 244 -159 249 b -159 385 -159 249 -159 310 b -157 525 -159 521 -159 522 b -146 537 -156 530 -151 535 z m -159 11 b -159 120 -159 98 -159 120 l -159 120 b -175 116 -160 120 -167 119 b -221 105 -184 114 -204 109 l -251 98 l -251 -12 b -251 -121 -251 -72 -251 -121 b -205 -110 -250 -121 -230 -116 b -159 -99 -180 -104 -159 -99 b -159 11 -159 -99 -159 -49 z m 89 517 b 97 519 92 518 94 519 b 117 505 106 519 114 513 b 119 376 119 502 119 501 l 119 249 l 145 258 b 176 267 169 266 172 267 b 177 267 176 267 177 267 b 196 255 186 267 192 263 l 197 252 l 197 205 b 197 181 197 195 197 187 b 193 149 197 153 197 153 b 152 131 190 144 187 143 l 119 120 l 119 10 b 119 -100 119 -62 119 -100 b 145 -91 120 -100 131 -96 b 173 -82 159 -86 171 -82 b 176 -81 174 -81 175 -81 b 196 -94 185 -81 193 -87 b 198 -151 197 -97 198 -125 b 197 -194 198 -172 197 -192 b 153 -218 193 -203 192 -204 l 119 -230 l 119 -367 l 118 -504 l 117 -507 b 97 -519 113 -514 105 -519 b 82 -512 92 -519 87 -517 b 76 -434 77 -507 76 -516 b 76 -374 76 -418 76 -398 b 76 -245 76 -303 76 -245 b 52 -254 76 -245 65 -249 b 19 -263 34 -260 25 -263 b 6 -257 13 -263 10 -261 b 0 -214 0 -251 0 -253 b 0 -200 0 -210 0 -205 b 0 -188 0 -196 0 -192 b 6 -143 0 -147 0 -149 b 46 -126 10 -139 10 -139 l 76 -115 l 76 -5 b 76 106 76 56 76 106 b 51 98 76 106 64 102 b 18 89 34 92 25 89 b 6 95 13 89 10 91 b 0 139 0 101 0 99 b 0 153 0 143 0 148 b 0 179 0 163 0 172 b 44 225 0 215 3 211 l 76 236 l 76 369 b 78 505 76 501 76 502 b 89 517 80 510 85 515 z ' + }, + 'vexAccidentalMicrotonal4': { + 'x_min': 0, + 'x_max': 430.75, + 'ha': 360, + 'o': 'm 283 633 b 291 634 286 634 289 634 b 311 621 300 634 308 629 b 313 505 313 618 313 617 b 313 393 313 443 313 393 b 378 425 313 393 343 407 l 443 458 l 448 458 b 449 458 449 458 449 458 b 471 437 462 458 471 448 b 469 429 471 434 470 432 b 387 382 466 421 469 423 l 313 344 l 313 247 l 313 150 l 315 152 b 433 201 353 184 394 201 b 479 193 448 201 464 198 b 549 86 524 177 549 135 b 526 1 549 59 541 29 b 395 -143 504 -39 475 -71 b 316 -214 351 -182 341 -191 b 292 -229 302 -228 300 -229 b 272 -216 283 -229 275 -224 b 271 55 271 -212 271 -212 b 270 323 271 203 270 323 b 205 291 270 323 241 308 l 140 258 l 135 258 b 134 258 135 258 134 258 b 112 279 121 258 112 267 b 114 287 112 281 113 284 b 196 334 117 295 114 293 l 271 371 l 271 495 b 272 621 271 617 271 618 b 283 633 274 626 279 631 z m 404 133 b 391 134 400 134 395 134 b 384 134 388 134 386 134 b 318 88 358 130 335 114 l 313 81 l 313 -37 l 313 -156 l 316 -152 b 439 83 391 -71 439 22 l 439 84 b 404 133 439 115 430 128 z m -8 633 l -8 633 b 0 634 -6 634 -3 634 b 20 621 8 634 17 629 b 21 384 21 618 21 617 l 21 150 l 24 152 b 141 201 62 184 102 201 b 187 193 157 201 172 198 b 257 86 232 177 257 135 b 234 1 257 59 250 29 b 103 -143 212 -39 183 -71 b 24 -214 60 -182 49 -191 b 0 -229 10 -228 8 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 203 l -21 618 l -20 621 b -8 633 -18 626 -13 631 z m 113 133 l 113 133 b 99 134 109 134 103 134 b 93 134 97 134 94 134 b 26 88 66 130 43 114 l 21 81 l 21 -37 l 21 -156 l 25 -152 b 148 83 99 -71 148 22 l 148 84 b 113 133 148 115 138 128 z ' + }, + 'vexNoteHeadRectBlack': { + 'x_min': 0, + 'x_max': 430.75, + 'ha': 360, + 'o': 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 ' + }, + 'vexNoteHeadRectWhite': { + 'x_min': 0, + 'x_max': 430.75, + 'ha': 360, + 'o': 'm 0 150 l 0 -150 l 430 -150 l 430 150 l 0 150 l 50 100 l 380 100 l 380 -100 l 50 -100 l 50 100' + } + } +}; + +/***/ }), + +/***/ "./src/fonts/custom_metrics.js": +/*!*************************************!*\ + !*** ./src/fonts/custom_metrics.js ***! + \*************************************/ +/*! exports provided: CustomMetrics */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CustomMetrics", function() { return CustomMetrics; }); +var CustomMetrics = { + name: 'Vexflow-Custom', + smufl: false, + glyphs: {} +}; + +/***/ }), + +/***/ "./src/fonts/gonville_glyphs.js": +/*!**************************************!*\ + !*** ./src/fonts/gonville_glyphs.js ***! + \**************************************/ +/*! exports provided: GonvilleFont */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GonvilleFont", function() { return GonvilleFont; }); +var GonvilleFont = { + 'glyphs': { + 'bracketTop': { + 'x_min': 0, + 'x_max': 559.421875, + 'ha': 571, + 'o': 'm 544 204 b 548 204 545 204 547 204 b 559 194 555 204 559 199 b 559 190 559 192 559 191 b 530 156 559 188 556 184 b 462 86 510 134 481 104 b 453 76 458 81 454 77 l 446 70 l 441 65 b 434 59 439 63 436 61 l 427 54 b 409 37 426 51 416 44 b 392 23 398 29 394 26 b 387 19 389 22 387 20 b 379 13 386 19 383 16 l 371 8 l 367 5 l 359 -1 l 337 -16 b 285 -48 319 -29 298 -41 l 279 -52 b 186 -95 255 -66 210 -87 l 175 -99 b 23 -129 127 -117 68 -129 b 17 -129 20 -129 19 -129 b 1 -123 2 -129 2 -129 b 0 -49 0 -122 0 -83 b 0 4 0 -22 0 1 b 27 11 2 9 4 9 b 185 31 78 12 145 20 b 198 34 186 31 193 33 b 314 73 234 44 277 58 b 349 88 328 79 340 84 b 353 90 352 90 353 90 b 363 94 353 90 357 93 b 371 98 367 97 371 98 b 428 129 372 98 413 120 b 461 148 441 136 454 144 b 468 151 464 149 466 151 b 472 154 469 152 470 154 b 481 161 473 155 477 158 b 525 190 490 166 518 186 l 534 197 b 540 201 536 198 539 199 b 544 204 541 202 544 204 ' + }, + 'bracketBottom': { + 'x_min': 0, + 'x_max': 559.421875, + 'ha': 571, + 'o': 'm 5 127 b 14 127 6 127 9 127 b 51 126 25 127 43 127 b 175 98 93 122 138 112 l 186 94 b 279 51 210 86 255 65 b 285 47 280 51 283 48 b 319 27 291 44 311 31 l 326 22 b 359 0 332 19 352 4 l 367 -6 b 371 -9 368 -6 370 -8 l 379 -15 b 387 -22 383 -18 386 -20 l 398 -30 l 411 -40 l 417 -47 l 427 -55 l 434 -61 b 441 -66 436 -62 439 -65 l 446 -72 l 453 -77 l 462 -87 b 558 -188 490 -113 549 -176 b 559 -195 559 -191 559 -194 b 548 -205 559 -201 555 -205 b 541 -204 547 -205 544 -205 b 534 -198 539 -201 536 -199 l 525 -191 b 481 -162 518 -187 490 -167 b 472 -155 477 -159 472 -156 b 468 -152 470 -155 469 -154 b 461 -149 466 -152 464 -151 b 428 -130 454 -145 441 -137 b 371 -99 413 -122 372 -99 b 363 -95 371 -99 367 -98 b 353 -91 357 -94 353 -91 b 348 -90 353 -91 352 -91 b 332 -81 343 -87 341 -86 b 27 -12 230 -37 127 -13 b 0 -5 4 -11 2 -11 b 0 58 0 -2 0 27 b 0 122 0 88 0 120 b 5 127 1 124 4 126 ' + }, + 'barlineTick': { + 'x_min': -80.3125, + 'x_max': 78.9375, + 'ha': 81, + 'o': 'm 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 ' + }, + 'breathMarkTick': { + 'x_min': -80.3125, + 'x_max': 78.9375, + 'ha': 81, + 'o': 'm 63 191 b 69 192 65 192 66 192 b 77 188 72 192 76 191 b 78 183 78 187 78 186 b 74 158 78 179 77 172 l 66 115 b 9 -161 49 30 10 -158 b -10 -187 6 -172 -1 -181 b -34 -194 -17 -191 -25 -194 b -80 -147 -58 -194 -80 -174 b -80 -141 -80 -144 -80 -142 b 9 70 -80 -134 -73 -117 l 49 163 b 63 191 59 188 61 190 ' + }, + 'segno': { + 'x_min': -330.75, + 'x_max': 329.390625, + 'ha': 336, + 'o': 'm -133 483 b -117 484 -127 484 -122 484 b 31 373 -51 484 9 440 b 35 348 34 365 35 356 b -25 285 35 313 10 285 b -87 331 -55 285 -76 302 b -167 402 -100 376 -133 402 b -191 398 -175 402 -183 401 b -227 341 -215 388 -227 369 b -225 320 -227 334 -227 327 b -13 74 -209 230 -125 133 b 6 65 -4 70 5 66 l 9 63 l 10 65 b 117 231 12 68 40 112 l 189 341 l 242 424 b 268 460 262 456 264 458 b 283 464 273 463 277 464 b 308 438 296 464 308 453 l 308 437 b 287 396 308 430 308 428 l 95 98 l 59 43 l 58 41 l 65 37 b 253 -156 151 -8 217 -77 b 281 -285 272 -199 281 -244 b 148 -481 281 -381 231 -463 b 115 -485 137 -484 126 -485 b -32 -376 51 -485 -9 -442 b -36 -349 -35 -366 -36 -358 b 25 -287 -36 -315 -12 -287 b 85 -333 54 -287 74 -302 b 166 -403 99 -377 133 -403 b 190 -399 174 -403 182 -402 b 225 -342 215 -390 225 -370 b 224 -322 225 -335 225 -328 b 12 -76 208 -231 125 -134 b -8 -66 2 -72 -6 -68 l -10 -65 l -12 -66 b -118 -231 -13 -68 -42 -113 l -190 -342 l -243 -426 b -269 -462 -264 -458 -265 -458 b -284 -466 -274 -464 -279 -466 b -310 -440 -298 -466 -310 -455 l -310 -438 b -288 -398 -310 -430 -308 -430 l -96 -99 l -59 -44 l -59 -43 l -66 -38 b -281 284 -198 33 -281 158 l -281 284 b -133 483 -281 392 -220 474 m 254 177 b 266 179 258 177 262 179 b 319 149 287 179 307 167 b 329 115 326 140 329 127 b 319 79 329 102 326 90 b 268 51 307 61 287 51 b 221 72 250 51 234 58 b 205 115 210 84 205 99 b 254 177 205 142 223 170 m -281 -54 b -269 -52 -277 -52 -273 -52 b -223 -73 -253 -52 -235 -59 b -206 -116 -212 -84 -206 -101 b -216 -151 -206 -129 -209 -141 b -269 -179 -228 -170 -249 -179 b -314 -159 -285 -179 -302 -173 b -330 -116 -325 -147 -330 -131 b -281 -54 -330 -88 -313 -61 ' + }, + 'coda': { + 'x_min': -311.6875, + 'x_max': 310.328125, + 'ha': 317, + 'o': 'm -9 388 b -2 390 -8 390 -5 390 b 5 388 1 390 4 390 b 19 378 10 387 16 383 b 23 333 23 371 23 371 b 24 298 23 299 24 298 b 81 276 34 298 65 285 b 213 91 145 240 190 177 b 224 24 217 76 224 36 b 257 24 224 24 235 24 b 299 19 292 24 292 24 b 310 -1 306 15 310 6 b 299 -23 310 -11 306 -19 b 257 -27 292 -27 292 -27 b 224 -29 235 -27 224 -29 b 213 -95 224 -40 217 -80 b 81 -280 190 -181 145 -244 b 24 -301 65 -290 34 -301 b 23 -335 24 -301 23 -303 l 23 -340 b 17 -381 23 -374 23 -374 b -1 -391 13 -388 5 -391 b -21 -381 -9 -391 -17 -388 b -27 -340 -27 -374 -27 -374 l -27 -335 b -28 -301 -27 -303 -27 -301 b -85 -280 -38 -301 -69 -290 b -217 -95 -149 -244 -194 -181 b -228 -29 -221 -80 -228 -40 b -259 -27 -228 -29 -238 -27 b -300 -23 -294 -27 -294 -27 b -311 -2 -307 -19 -311 -11 b -294 23 -311 8 -304 19 b -259 24 -291 23 -284 24 b -228 24 -239 24 -228 24 b -217 91 -228 36 -221 76 b -85 276 -194 177 -149 240 b -28 298 -69 285 -38 298 b -27 333 -27 298 -27 299 b -27 371 -27 362 -27 369 b -9 388 -24 378 -17 385 m -27 136 b -28 247 -27 197 -28 247 b -61 216 -31 247 -53 226 b -123 33 -95 172 -121 98 l -125 24 l -76 24 l -27 24 l -27 136 m 29 242 b 24 247 27 245 24 247 b 23 136 24 247 23 197 l 23 24 l 72 24 l 121 24 l 119 33 b 29 242 115 116 77 206 m -27 -140 l -27 -27 l -76 -27 l -125 -27 l -123 -36 b -61 -220 -121 -102 -95 -176 b -28 -251 -53 -230 -31 -251 b -27 -140 -28 -251 -27 -201 m 119 -36 l 121 -27 l 72 -27 l 23 -27 l 23 -140 b 24 -251 23 -201 24 -251 b 57 -220 27 -251 49 -230 b 119 -36 91 -176 117 -102 ' + }, + 'gClef': { + 'x_min': -1.359375, + 'x_max': 847.96875, + 'ha': 865, + 'o': 'm 488 1499 b 495 1500 490 1500 492 1500 b 541 1465 507 1500 521 1490 b 679 1078 622 1372 679 1210 b 677 1050 679 1068 677 1060 b 477 642 668 893 604 764 l 443 609 l 431 596 l 431 592 l 438 562 l 449 508 l 460 458 b 481 355 475 390 481 355 b 481 355 481 355 481 355 b 490 356 481 355 485 355 b 528 358 495 356 511 358 b 558 356 540 358 552 356 b 839 95 699 338 808 237 b 847 22 845 72 847 47 b 631 -303 847 -113 766 -242 b 620 -309 623 -308 620 -309 l 620 -310 b 631 -359 620 -310 626 -333 l 646 -435 l 660 -496 b 672 -588 668 -535 672 -563 b 664 -653 672 -610 669 -630 b 383 -875 630 -792 509 -875 b 201 -810 321 -875 257 -855 b 129 -680 151 -768 129 -730 b 274 -530 129 -592 200 -530 b 351 -553 300 -530 326 -538 b 412 -669 393 -582 412 -626 b 287 -805 412 -735 366 -800 l 279 -805 l 285 -809 b 383 -830 318 -823 351 -830 b 586 -718 464 -830 540 -789 b 626 -584 612 -678 626 -631 b 619 -528 626 -566 623 -548 b 612 -495 619 -526 616 -510 b 577 -324 590 -387 577 -324 b 577 -324 577 -324 577 -324 b 568 -326 575 -324 571 -324 b 528 -334 558 -328 537 -333 b 465 -338 506 -337 485 -338 b 24 -11 269 -338 87 -206 b -1 145 8 41 -1 93 b 96 442 -1 249 32 351 b 322 714 166 541 236 626 l 352 745 l 345 782 l 332 843 l 315 921 b 303 984 310 950 304 978 b 295 1082 298 1017 295 1049 b 413 1426 295 1208 336 1329 b 488 1499 436 1456 477 1496 m 549 1301 b 541 1301 547 1301 544 1301 b 411 1207 500 1301 447 1263 b 355 1004 374 1152 355 1079 b 359 942 355 984 356 963 b 371 881 362 927 363 917 l 385 818 b 392 782 389 799 392 784 l 392 782 b 434 828 393 782 424 816 b 607 1165 534 941 594 1060 b 608 1193 608 1175 608 1183 b 597 1270 608 1224 604 1254 b 549 1301 589 1286 571 1299 m 398 528 b 393 555 396 542 393 553 b 392 555 393 555 393 555 b 317 470 390 555 347 505 b 190 298 266 408 212 334 b 127 70 148 227 127 148 b 155 -77 127 19 137 -30 b 468 -303 209 -216 333 -303 b 519 -299 484 -303 502 -302 b 568 -284 541 -295 568 -287 l 568 -284 b 563 -263 568 -284 566 -274 l 534 -120 l 511 -13 l 496 61 l 480 133 b 469 187 472 176 469 187 b 468 188 469 187 469 188 b 416 162 462 188 430 172 b 337 13 364 126 337 69 b 413 -124 337 -40 363 -93 b 428 -144 424 -131 428 -137 b 428 -149 428 -145 428 -148 b 409 -166 426 -161 419 -166 b 394 -162 405 -166 400 -165 b 240 77 302 -122 240 -27 l 240 77 b 430 342 240 197 315 301 l 436 344 l 426 394 l 398 528 m 548 194 b 526 195 540 195 532 195 b 519 195 524 195 521 195 l 514 195 l 518 177 l 539 79 l 552 15 l 566 -48 l 594 -187 l 605 -240 b 612 -266 609 -254 611 -266 b 612 -266 612 -266 612 -266 b 641 -248 613 -266 630 -256 b 744 -98 692 -212 730 -156 b 751 -40 749 -79 751 -59 b 548 194 751 76 665 181 ' + }, + 'cClef': { + 'x_min': 0, + 'x_max': 873.828125, + 'ha': 892, + 'o': 'm 0 0 l 0 703 l 81 703 l 164 703 l 164 0 l 164 -705 l 81 -705 l 0 -705 l 0 0 m 225 0 l 225 703 l 246 703 l 268 703 l 268 366 l 268 30 l 274 36 b 314 79 284 44 302 63 b 413 302 357 137 392 213 b 432 327 419 324 421 327 b 449 306 443 327 447 322 b 611 115 457 195 529 115 b 651 122 624 115 638 117 b 728 316 705 140 724 188 b 729 388 728 342 729 366 b 671 635 729 533 711 602 b 581 662 649 652 616 662 b 477 637 545 662 510 653 l 475 635 l 477 634 b 503 627 488 632 495 631 b 545 556 532 612 545 584 b 491 480 545 524 526 491 b 465 474 481 476 473 474 b 379 563 417 474 379 516 b 389 602 379 576 382 588 b 541 691 409 641 479 681 b 582 694 555 692 568 694 b 865 462 714 694 834 598 b 873 392 871 440 873 416 b 865 317 873 367 871 341 b 639 84 839 194 748 101 b 612 83 630 83 620 83 b 511 116 577 83 543 94 b 504 120 509 119 506 120 b 504 120 504 120 504 120 b 469 59 504 120 488 93 l 432 -1 l 469 -61 b 504 -122 488 -94 504 -122 b 504 -122 504 -122 504 -122 b 511 -117 506 -122 509 -120 b 612 -84 543 -95 577 -84 b 665 -91 630 -84 647 -87 b 869 -338 771 -122 850 -216 b 873 -392 872 -356 873 -374 b 798 -595 873 -469 847 -539 b 581 -695 741 -662 660 -695 b 406 -626 517 -695 454 -671 b 381 -563 389 -607 381 -585 b 465 -477 381 -519 413 -477 b 545 -559 514 -477 545 -519 b 503 -628 545 -587 532 -613 b 477 -635 495 -632 488 -634 l 475 -637 l 477 -638 b 581 -663 510 -655 545 -663 b 671 -637 616 -663 649 -653 b 729 -391 711 -603 729 -534 b 728 -317 729 -367 728 -344 b 623 -117 722 -173 698 -124 b 611 -116 619 -116 615 -116 b 449 -308 528 -116 457 -198 b 432 -328 447 -323 443 -328 b 413 -303 421 -328 419 -326 b 314 -80 392 -215 357 -138 b 274 -37 302 -65 284 -45 l 268 -31 l 268 -367 l 268 -705 l 246 -705 l 225 -705 l 225 0 ' + }, + 'fClef': { + 'x_min': -1.359375, + 'x_max': 899.703125, + 'ha': 918, + 'o': 'm 307 349 b 332 351 315 351 323 351 b 443 340 367 351 408 347 b 741 47 607 306 720 195 b 744 0 743 31 744 16 b 660 -303 744 -90 713 -206 b 28 -755 534 -531 304 -695 b 14 -756 23 -755 19 -756 b -1 -741 4 -756 -1 -750 b 21 -720 -1 -731 1 -728 b 567 -56 337 -601 548 -344 b 568 -11 568 -41 568 -24 b 442 285 568 129 525 233 b 325 319 406 308 367 319 b 93 177 232 319 137 266 b 84 154 91 170 84 155 b 84 154 84 154 84 154 b 88 156 84 154 85 155 b 159 177 110 170 134 177 b 257 134 194 177 231 162 b 294 41 281 108 294 73 b 171 -97 294 -24 246 -90 b 156 -98 166 -97 161 -98 b 6 74 73 -98 6 -22 b 6 80 6 76 6 79 b 307 349 10 223 141 340 m 839 215 b 845 216 841 216 842 216 b 862 213 852 216 860 215 b 899 163 887 206 899 184 b 872 117 899 145 890 127 b 847 111 865 112 856 111 b 808 130 833 111 818 117 b 796 162 800 140 796 151 b 839 215 796 187 812 212 m 839 -112 b 845 -112 841 -112 842 -112 b 862 -115 852 -112 860 -113 b 899 -165 887 -122 899 -144 b 872 -210 899 -183 890 -201 b 847 -217 865 -215 856 -217 b 808 -198 833 -217 818 -210 b 796 -165 800 -188 796 -177 b 839 -112 796 -140 812 -116 ' + }, + 'unpitchedPercussionClef1': { + 'x_min': 0, + 'x_max': 464.140625, + 'ha': 474, + 'o': 'm 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 ' + }, + '6stringTabClef': { + 'x_min': -1.359375, + 'x_max': 680.5625, + 'ha': 694, + 'o': 'm 597 1042 b 604 1042 600 1042 602 1042 b 642 1002 627 1042 642 1022 b 619 966 642 988 635 974 b 439 927 574 942 503 927 l 426 927 l 426 921 b 430 838 428 893 430 866 b 345 480 430 696 398 560 b 179 391 307 423 249 391 b 156 392 171 391 164 392 b 138 394 149 394 142 394 b 103 434 115 396 103 416 b 129 471 103 451 111 466 b 141 474 133 473 137 474 b 172 459 153 474 164 469 b 181 455 175 456 176 455 b 187 456 182 455 185 455 b 253 520 212 460 234 483 b 315 836 294 605 315 714 b 311 928 315 867 314 898 b 302 945 310 943 311 942 b 245 953 283 950 262 953 b 130 891 193 953 149 931 b 84 860 119 870 102 860 b 36 905 61 860 39 877 b 36 910 36 907 36 909 b 80 970 36 931 50 949 b 249 1017 125 1000 187 1017 b 322 1009 273 1017 299 1014 l 341 1003 b 436 991 372 995 406 991 b 577 1031 495 991 545 1004 b 597 1042 583 1038 590 1041 m 416 360 b 424 360 419 360 421 360 b 481 309 454 360 479 338 b 503 145 484 280 495 199 b 585 -185 525 16 555 -106 b 630 -245 596 -213 613 -237 l 634 -247 l 638 -245 b 647 -244 641 -245 645 -244 b 680 -278 666 -244 680 -262 b 664 -308 680 -290 675 -301 b 638 -312 658 -310 650 -312 b 613 -309 631 -312 623 -310 b 477 -201 555 -303 502 -260 b 417 -2 460 -159 434 -72 b 416 5 417 1 416 5 b 416 5 416 5 416 5 b 411 -5 415 5 413 0 b 359 -97 397 -33 377 -70 b 353 -106 355 -102 353 -105 b 359 -112 353 -108 355 -109 b 409 -130 375 -123 390 -129 b 426 -134 420 -130 421 -131 b 431 -147 428 -137 431 -141 b 420 -162 431 -152 427 -159 b 382 -169 409 -166 396 -169 b 323 -155 363 -169 341 -165 l 317 -152 l 314 -155 b 62 -303 240 -240 148 -295 b 36 -305 55 -305 44 -305 b 23 -303 29 -305 24 -305 b -1 -273 6 -299 -1 -287 b 31 -240 -1 -256 10 -240 b 36 -240 32 -240 34 -240 b 42 -241 38 -241 39 -241 b 134 -204 63 -241 99 -226 b 367 288 265 -115 357 81 b 375 330 368 313 370 320 b 416 360 383 347 400 358 m 360 -359 b 379 -359 363 -359 371 -359 b 424 -360 396 -359 416 -359 b 646 -502 536 -373 624 -430 b 649 -527 649 -510 649 -519 b 530 -673 649 -578 604 -635 l 521 -677 l 529 -681 b 653 -811 592 -714 637 -762 b 660 -853 658 -827 660 -839 b 645 -911 660 -873 656 -892 b 426 -1021 608 -981 519 -1021 b 283 -989 377 -1021 328 -1011 b 235 -949 249 -972 239 -964 b 234 -936 234 -946 234 -941 b 234 -928 234 -934 234 -931 l 235 -925 l 234 -927 l 225 -934 b 87 -982 186 -966 138 -982 b 80 -982 85 -982 83 -982 b 55 -981 70 -981 58 -981 b 17 -943 32 -981 17 -964 b 54 -904 17 -921 35 -904 b 78 -914 62 -904 72 -909 l 83 -918 l 88 -918 b 190 -831 122 -918 166 -881 b 269 -506 242 -727 269 -612 b 268 -462 269 -492 269 -477 b 266 -449 266 -458 266 -452 b 265 -444 266 -445 266 -444 b 257 -446 264 -444 261 -445 b 132 -545 196 -470 152 -505 b 88 -573 122 -563 104 -573 b 39 -523 63 -573 39 -553 b 63 -476 39 -505 44 -494 b 360 -359 136 -408 235 -369 m 419 -424 b 393 -423 411 -423 406 -423 l 375 -423 l 377 -426 b 379 -439 377 -427 378 -434 b 383 -510 382 -463 383 -487 b 314 -811 383 -609 360 -710 b 266 -893 296 -850 285 -870 b 264 -898 265 -896 264 -898 l 264 -898 b 264 -898 264 -898 264 -898 b 268 -898 264 -898 266 -898 b 273 -898 270 -898 272 -898 b 300 -909 283 -898 291 -900 b 426 -957 340 -941 385 -957 b 476 -949 443 -957 460 -954 b 547 -853 522 -931 547 -893 b 485 -745 547 -816 526 -775 b 397 -707 460 -727 432 -714 b 366 -675 375 -703 366 -692 b 396 -642 366 -657 377 -645 b 530 -557 455 -637 511 -601 b 536 -527 534 -548 536 -537 b 419 -424 536 -480 490 -437 ' + }, + 'timeSig0': { + 'x_min': 0, + 'x_max': 514.5, + 'ha': 525, + 'o': 'm 236 648 b 246 648 238 648 242 648 b 288 646 261 648 283 648 b 472 513 364 634 428 587 b 514 347 502 464 514 413 b 462 163 514 272 499 217 b 257 44 409 83 333 44 b 50 163 181 44 103 83 b 0 347 14 217 0 272 b 40 513 0 413 12 464 b 236 648 87 591 155 638 m 277 614 b 253 616 273 616 261 616 b 242 616 247 616 243 616 b 170 499 193 609 181 589 b 159 348 163 446 159 398 b 166 222 159 308 161 266 b 201 91 174 138 183 106 b 257 76 215 81 235 76 b 311 91 277 76 299 81 b 347 222 330 106 338 138 b 353 348 352 266 353 308 b 344 499 353 398 351 446 b 277 614 333 587 322 606 m 257 -1 l 258 -1 l 255 -1 l 257 -1 m 257 673 l 258 673 l 255 673 l 257 673 ' + }, + 'timeSig1': { + 'x_min': -1.359375, + 'x_max': 344.359375, + 'ha': 351, + 'o': 'm 126 637 l 129 638 l 198 638 l 266 638 l 269 635 b 274 631 272 634 273 632 l 277 627 l 277 395 b 279 156 277 230 277 161 b 329 88 281 123 295 106 b 344 69 341 81 344 79 b 337 55 344 62 343 59 l 333 54 l 197 54 l 61 54 l 58 55 b 50 69 53 59 50 62 b 65 88 50 79 53 81 b 80 97 72 91 74 93 b 117 156 103 113 112 129 b 117 345 117 161 117 222 l 117 528 l 100 503 l 38 406 b 14 383 24 384 23 383 b -1 398 5 383 -1 390 b 4 415 -1 403 1 409 b 16 437 5 416 10 426 l 72 539 l 100 596 b 121 632 119 631 119 631 b 126 637 122 634 125 635 m 171 -1 l 172 -1 l 170 -1 l 171 -1 m 171 673 l 172 673 l 170 673 l 171 673 ' + }, + 'timeSig2': { + 'x_min': -1.359375, + 'x_max': 458.6875, + 'ha': 468, + 'o': 'm 197 648 b 216 648 201 648 208 648 b 258 646 232 648 253 648 b 419 546 333 637 393 599 b 432 489 428 528 432 509 b 356 342 432 440 405 384 b 235 278 322 313 288 295 b 69 170 166 256 107 217 b 69 169 69 170 69 169 b 69 169 69 169 69 169 b 74 173 69 169 72 170 b 209 222 112 204 163 222 b 310 195 247 222 274 215 b 371 179 332 184 352 179 b 396 181 379 179 387 179 b 428 202 409 184 423 194 b 442 212 431 209 436 212 b 458 197 450 212 458 206 b 441 148 458 190 449 165 b 299 44 409 84 353 44 b 288 45 295 44 292 44 b 250 61 274 45 268 49 b 122 99 212 86 164 99 b 73 91 104 99 88 97 b 28 63 53 84 34 72 b 14 54 25 56 20 54 b 1 62 9 54 4 56 l -1 65 l -1 79 b 0 99 -1 91 0 95 b 2 113 1 102 2 108 b 164 309 20 197 81 272 b 285 470 232 341 277 398 b 287 487 287 476 287 481 b 171 595 287 551 239 595 b 155 595 166 595 160 595 b 142 592 145 594 142 594 b 145 589 142 592 142 591 b 179 527 168 576 179 551 b 132 455 179 496 163 467 b 104 451 122 452 112 451 b 27 530 62 451 27 487 b 29 555 27 538 27 546 b 197 648 44 601 115 639 m 228 -1 l 230 -1 l 227 -1 l 228 -1 m 228 673 l 230 673 l 227 673 l 228 673 ' + }, + 'timeSig3': { + 'x_min': -1.359375, + 'x_max': 409.6875, + 'ha': 418, + 'o': 'm 174 648 b 191 648 176 648 183 648 b 225 648 204 648 220 648 b 402 523 317 638 389 588 b 404 503 404 517 404 510 b 402 484 404 495 404 488 b 264 373 389 437 334 394 b 257 370 259 371 257 371 b 257 370 257 370 257 370 b 264 369 258 370 261 369 b 409 202 359 334 409 267 b 318 72 409 152 381 104 b 200 43 281 52 240 43 b 23 113 134 43 69 68 b 0 169 6 129 0 149 b 77 249 0 210 29 249 l 77 249 b 152 174 125 249 152 212 b 103 102 152 145 137 116 b 103 102 103 102 103 102 b 147 94 103 101 132 95 b 153 94 149 94 151 94 b 265 206 219 94 265 141 b 264 226 265 213 265 219 b 147 355 253 299 204 353 b 126 371 133 356 126 362 b 147 388 126 383 132 388 b 254 474 196 391 238 424 b 259 502 258 484 259 494 b 182 592 259 544 228 582 b 156 595 175 595 166 595 b 115 592 142 595 129 594 l 111 591 l 115 588 b 152 524 141 574 152 549 b 92 449 152 491 130 458 b 76 448 87 448 81 448 b -1 530 32 448 -1 488 b 20 581 -1 548 5 566 b 174 648 55 619 108 641 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 ' + }, + 'timeSig4': { + 'x_min': 0, + 'x_max': 468.21875, + 'ha': 478, + 'o': 'm 174 637 b 232 638 175 638 189 638 b 277 638 245 638 259 638 l 378 638 l 381 635 b 389 623 386 632 389 627 b 382 609 389 617 386 613 b 366 589 381 606 372 598 l 313 528 l 245 451 l 209 410 l 155 348 l 84 267 b 59 240 72 252 59 240 b 59 240 59 240 59 240 b 151 238 59 238 68 238 l 242 238 l 242 303 b 243 371 242 369 242 370 b 289 426 245 374 254 385 l 303 441 l 317 456 l 338 483 l 360 506 l 371 520 b 386 527 375 526 381 527 b 400 519 392 527 397 524 b 401 440 401 516 401 514 b 401 377 401 423 401 402 l 401 238 l 426 238 b 453 237 449 238 450 238 b 465 217 461 234 465 226 b 460 202 465 212 464 206 b 426 197 454 197 453 197 l 401 197 l 401 180 b 451 88 402 129 412 109 b 468 69 465 81 468 79 b 461 55 468 62 466 59 l 458 54 l 321 54 l 185 54 l 182 55 b 175 69 176 59 175 62 b 191 88 175 79 176 81 b 240 180 230 109 240 129 l 240 197 l 125 197 b 73 195 104 195 87 195 b 8 197 10 195 9 197 b 0 212 2 199 0 205 b 0 212 0 212 0 212 b 20 242 0 219 0 219 b 163 610 104 344 163 492 b 174 637 163 628 166 634 m 234 -1 l 235 -1 l 232 -1 l 234 -1 m 234 673 l 235 673 l 232 673 l 234 673 ' + }, + 'timeSig5': { + 'x_min': 0, + 'x_max': 409.6875, + 'ha': 418, + 'o': 'm 47 637 b 53 638 49 638 50 638 b 69 634 55 638 61 637 b 210 610 114 619 161 610 b 363 634 259 610 311 619 b 382 638 372 637 378 638 b 392 634 386 638 389 637 b 397 623 396 630 397 627 b 393 610 397 620 396 616 b 298 505 368 552 338 520 b 212 494 277 498 246 494 b 65 517 163 494 106 502 b 61 517 62 517 61 517 b 61 517 61 517 61 517 b 51 408 61 517 51 412 b 51 408 51 408 51 408 b 51 408 51 408 51 408 b 61 412 53 408 55 409 b 125 434 80 421 103 430 b 185 441 145 440 166 441 b 409 244 310 441 409 353 b 401 191 409 227 406 209 b 197 43 375 105 287 43 b 159 47 183 43 171 44 b 23 123 112 56 61 86 b 0 180 6 140 0 159 b 76 260 0 220 31 260 b 92 259 81 260 87 259 b 152 183 132 251 152 216 b 100 112 152 152 134 122 b 95 111 98 112 95 111 b 95 111 95 111 95 111 b 129 98 95 109 119 101 b 148 97 136 97 141 97 b 264 235 206 97 261 158 b 265 248 265 240 265 244 b 210 398 265 312 243 373 b 179 408 201 406 194 408 b 174 408 178 408 176 408 b 53 369 130 408 88 394 b 34 359 39 359 38 359 b 17 374 24 359 17 365 b 39 628 17 384 38 625 b 47 637 40 631 43 635 m 204 -1 l 205 -1 l 202 -1 l 204 -1 m 204 673 l 205 673 l 202 673 l 204 673 ' + }, + 'timeSig6': { + 'x_min': 0, + 'x_max': 475.03125, + 'ha': 485, + 'o': 'm 255 648 b 274 648 259 648 266 648 b 314 646 288 648 307 648 b 450 555 374 637 438 594 b 454 530 453 546 454 538 b 375 451 454 485 416 451 b 328 467 359 451 343 455 b 300 526 310 483 300 503 b 352 598 300 557 319 589 b 356 599 355 598 356 599 b 352 602 356 599 355 601 b 288 616 330 612 308 616 b 210 584 257 616 230 605 b 164 433 189 559 174 508 b 160 374 163 415 160 381 b 160 374 160 374 160 374 b 160 374 160 374 160 374 b 168 377 160 374 164 376 b 258 395 200 390 228 395 b 366 367 294 395 328 387 b 475 223 436 333 475 283 b 472 197 475 215 473 206 b 349 65 462 141 419 95 b 259 43 317 51 288 43 b 167 69 230 43 200 52 b 4 290 80 113 20 195 b 0 349 1 309 0 328 b 20 467 0 391 6 433 b 255 648 58 563 155 637 m 269 363 b 257 363 265 363 261 363 b 210 345 236 363 220 356 b 186 226 196 324 186 272 b 187 198 186 216 186 206 b 213 95 191 151 202 112 b 257 76 221 83 238 76 b 270 77 261 76 266 76 b 321 156 299 81 310 99 b 329 229 326 183 329 206 b 321 301 329 252 326 274 b 269 363 311 342 298 359 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 ' + }, + 'timeSig7': { + 'x_min': 0, + 'x_max': 442.359375, + 'ha': 451, + 'o': 'm 147 648 b 166 649 153 649 160 649 b 313 598 217 649 273 630 b 340 587 323 588 328 587 l 341 587 b 412 628 367 587 390 601 b 427 638 416 635 421 638 b 439 632 431 638 435 637 b 442 623 441 630 442 628 b 430 569 442 616 439 603 b 352 369 408 492 377 410 b 300 259 325 324 313 298 b 273 84 283 205 273 140 b 265 55 273 65 272 59 l 261 54 l 181 54 l 99 54 l 96 55 b 91 61 95 56 92 59 l 89 63 l 89 77 b 147 263 89 133 111 202 b 261 401 176 313 212 355 b 378 541 315 449 349 489 l 382 548 l 375 544 b 240 495 333 512 285 495 b 129 535 198 495 160 509 b 84 560 108 552 95 560 b 76 559 81 560 78 560 b 31 487 59 555 43 530 b 14 470 27 473 24 470 b 1 477 8 470 4 471 l 0 480 l 0 553 l 0 627 l 1 630 b 16 638 4 635 9 638 b 23 635 17 638 20 637 b 49 626 36 626 39 626 b 96 638 59 626 80 630 b 104 639 99 638 102 639 b 117 644 107 641 112 642 b 147 648 125 645 137 648 m 220 -1 l 221 -1 l 219 -1 l 220 -1 m 220 673 l 221 673 l 219 673 l 220 673 ' + }, + 'timeSig8': { + 'x_min': 0, + 'x_max': 488.640625, + 'ha': 499, + 'o': 'm 217 648 b 245 649 225 648 235 649 b 453 516 343 649 430 595 b 458 478 455 503 458 491 b 412 370 458 440 441 398 b 411 369 412 369 411 369 b 415 365 411 367 412 367 b 488 231 462 331 488 281 b 472 165 488 208 483 186 b 243 43 434 86 338 43 b 63 104 178 43 112 62 b 0 233 20 140 0 186 b 73 365 0 283 24 331 l 77 369 l 72 374 b 29 476 42 406 29 441 b 217 648 29 557 103 635 m 258 605 b 242 606 253 605 247 606 b 157 552 198 606 157 580 b 160 541 157 548 159 544 b 319 413 176 503 242 452 l 337 403 l 338 406 b 359 476 352 428 359 452 b 258 605 359 537 318 595 m 138 326 b 130 330 134 328 130 330 b 130 330 130 330 130 330 b 107 305 127 330 112 313 b 84 231 91 281 84 256 b 243 86 84 156 151 86 b 249 87 245 86 246 87 b 347 156 303 88 347 120 b 344 172 347 162 345 167 b 156 319 325 227 257 281 b 138 326 151 322 144 324 m 243 -1 l 245 -1 l 242 -1 l 243 -1 m 243 673 l 245 673 l 242 673 l 243 673 ' + }, + 'timeSig9': { + 'x_min': 0, + 'x_max': 475.03125, + 'ha': 485, + 'o': 'm 191 646 b 212 649 198 648 205 649 b 255 644 227 649 243 646 b 458 448 348 616 428 539 b 475 342 469 415 475 378 b 460 244 475 308 469 274 b 193 44 421 124 303 44 b 91 69 157 44 122 51 b 19 161 43 97 19 126 b 21 181 19 167 20 174 b 98 241 32 220 65 241 b 170 186 129 241 160 223 b 172 166 171 179 172 173 b 121 94 172 134 152 102 b 117 93 118 94 117 93 b 121 90 117 93 118 91 b 185 76 142 80 164 76 b 270 119 220 76 251 91 b 308 259 287 145 300 194 b 313 317 310 277 313 310 b 313 317 313 317 313 317 b 313 317 313 317 313 317 b 304 315 313 317 308 316 b 216 295 273 302 245 295 b 145 308 193 295 170 299 b 19 398 88 327 42 360 b 0 469 5 420 0 444 b 24 551 0 496 8 526 b 191 646 54 596 125 637 m 227 614 b 215 616 224 616 220 616 b 202 614 210 616 206 616 b 152 535 174 610 163 592 b 144 463 147 509 144 485 b 152 391 144 440 147 417 b 216 328 163 344 179 328 b 280 391 253 328 269 344 b 288 463 285 417 288 440 b 280 535 288 485 285 509 b 227 614 269 594 258 610 m 236 -1 l 238 -1 l 235 -1 l 236 -1 m 236 673 l 238 673 l 235 673 l 236 673 ' + }, + 'timeSigCommon': { + 'x_min': -1.359375, + 'x_max': 556.6875, + 'ha': 568, + 'o': 'm 294 322 b 318 323 299 322 308 323 b 360 320 334 323 352 322 b 526 217 430 310 490 273 b 543 166 537 202 543 184 b 447 70 543 117 503 70 b 445 70 447 70 446 70 b 359 159 394 72 359 113 b 368 201 359 173 362 187 b 442 245 382 229 412 245 b 455 244 446 245 451 245 b 460 244 458 244 460 244 b 460 244 460 244 460 244 b 454 248 460 244 458 245 b 325 291 417 276 372 291 b 285 287 313 291 299 290 b 144 -2 183 269 144 190 b 281 -290 144 -208 179 -280 b 304 -291 289 -291 298 -291 b 524 -105 412 -291 506 -212 b 541 -84 526 -88 530 -84 b 556 -101 551 -84 556 -90 b 549 -138 556 -111 553 -122 b 334 -322 521 -237 435 -310 b 302 -324 323 -323 313 -324 b 13 -101 172 -324 54 -234 b -1 -1 4 -68 -1 -34 b 294 322 -1 161 121 303 ' + }, + 'timeSigCutCommon': { + 'x_min': 0, + 'x_max': 556.6875, + 'ha': 568, + 'o': 'm 289 545 b 298 546 292 545 295 546 b 318 533 306 546 315 541 b 319 428 319 530 319 528 l 319 327 l 334 327 b 526 223 412 326 485 285 b 543 172 537 206 543 190 b 447 76 543 122 503 76 b 445 76 446 76 446 76 b 359 165 394 77 359 119 b 368 205 359 179 362 192 b 441 251 382 233 412 251 b 455 249 446 251 451 251 b 460 248 458 249 460 248 b 460 248 460 248 460 248 b 454 254 460 249 458 251 b 334 295 419 280 378 294 l 319 295 l 319 4 l 319 -287 l 321 -285 b 328 -285 322 -285 325 -285 b 524 -99 424 -277 507 -198 b 541 -79 526 -84 530 -79 b 556 -97 551 -79 556 -84 b 548 -133 556 -105 553 -117 b 334 -317 521 -233 434 -306 b 322 -319 329 -317 323 -317 l 319 -319 l 319 -424 b 319 -471 319 -444 319 -459 b 313 -541 319 -544 318 -535 b 298 -548 308 -545 303 -548 b 279 -534 289 -548 281 -542 b 277 -424 277 -531 277 -530 l 277 -317 l 273 -317 b 13 -95 153 -305 51 -217 b 0 2 4 -62 0 -29 b 182 295 0 126 66 238 b 274 324 210 309 249 320 l 277 324 l 277 427 b 279 533 277 528 277 530 b 289 545 281 538 285 542 m 277 2 b 277 291 277 161 277 291 b 268 288 277 291 273 290 b 144 1 179 265 144 184 b 276 -284 144 -199 175 -267 l 277 -285 l 277 2 ' + }, + 'noteheadDoubleWhole': { + 'x_min': 0, + 'x_max': 902.421875, + 'ha': 921, + 'o': 'm 17 240 b 24 241 19 241 21 241 b 32 240 28 241 31 241 b 46 229 38 238 43 234 b 50 88 50 223 50 237 b 50 -1 50 63 50 34 b 50 -90 50 -36 50 -65 b 46 -231 50 -238 50 -224 b 25 -242 42 -238 34 -242 b 0 -224 14 -242 4 -235 b 0 2 0 -222 0 -108 b 0 223 0 112 0 220 b 17 240 2 230 9 237 m 110 240 b 118 241 111 241 114 241 b 126 240 121 241 123 241 b 142 223 133 237 140 230 b 144 123 144 220 144 205 b 144 29 144 45 144 29 b 144 29 144 29 144 29 b 393 183 166 106 264 167 b 450 186 412 184 431 186 b 756 29 600 186 732 120 b 756 29 756 29 756 29 b 758 123 758 29 758 45 b 760 227 758 226 758 223 b 784 241 766 237 774 241 b 804 229 792 241 800 237 b 809 88 808 223 809 237 l 809 -1 l 809 -90 b 804 -231 809 -238 808 -224 b 784 -242 800 -238 792 -242 b 762 -231 775 -242 766 -238 b 758 -124 756 -224 758 -231 b 756 -30 758 -47 758 -30 b 756 -30 756 -30 756 -30 b 509 -184 736 -108 637 -169 b 450 -187 488 -187 469 -187 b 144 -30 300 -187 168 -122 b 144 -30 144 -30 144 -30 b 144 -124 144 -30 144 -47 b 140 -231 144 -231 144 -224 b 118 -242 134 -238 126 -242 b 92 -224 107 -242 96 -235 b 92 2 92 -222 92 -108 b 92 223 92 112 92 220 b 110 240 95 230 102 237 m 432 161 b 413 162 426 162 420 162 b 313 41 351 162 313 109 b 347 -73 313 5 323 -34 b 487 -163 385 -133 439 -163 b 578 -97 526 -163 562 -142 b 588 -43 585 -80 588 -62 b 432 161 588 47 518 147 m 868 240 b 876 241 869 241 872 241 b 884 240 879 241 882 241 b 898 229 890 238 894 234 b 902 88 902 223 902 237 l 902 -1 l 902 -90 b 898 -231 902 -238 902 -224 b 876 -242 892 -238 884 -242 b 852 -224 865 -242 854 -235 b 850 2 850 -222 850 -108 b 852 223 850 112 850 220 b 868 240 853 230 860 237 ' + }, + 'noteheadWhole': { + 'x_min': 0, + 'x_max': 619.3125, + 'ha': 632, + 'o': 'm 274 184 b 307 186 285 186 296 186 b 616 22 465 186 597 116 b 619 -1 617 13 619 5 b 308 -187 619 -104 483 -187 b 0 -1 133 -187 0 -102 b 5 36 0 11 1 23 b 274 184 29 115 141 176 m 289 161 b 272 162 284 162 277 162 b 171 41 209 162 171 108 b 205 -73 171 5 182 -34 b 345 -163 243 -133 298 -163 b 436 -98 385 -163 420 -142 b 446 -43 443 -80 446 -62 b 289 161 446 47 377 147 ' + }, + 'noteheadHalf': { + 'x_min': 0, + 'x_max': 428.75, + 'ha': 438, + 'o': 'm 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 m 366 131 b 352 134 362 133 357 134 b 219 81 321 134 269 115 b 47 -111 126 23 50 -62 b 47 -112 47 -111 47 -112 b 77 -136 47 -129 58 -136 b 264 -45 118 -136 194 -101 b 382 109 336 12 382 76 b 366 131 382 120 377 129 ' + }, + 'noteheadBlack': { + 'x_min': 0, + 'x_max': 428.75, + 'ha': 438, + 'o': 'm 262 186 b 273 186 266 186 272 186 b 274 186 273 186 274 186 b 285 186 274 186 280 186 b 428 48 375 181 428 122 b 386 -68 428 12 416 -29 b 155 -187 329 -145 236 -187 b 12 -111 92 -187 38 -162 b 0 -51 4 -91 0 -72 b 262 186 0 58 122 179 ' + }, + 'noteheadXWhole': { + 'x_min': 0, + 'x_max': 598.890625, + 'ha': 611, + 'o': 'm 62 181 b 77 183 66 183 72 183 b 91 181 83 183 88 183 b 202 131 100 180 106 177 l 299 87 l 394 131 b 517 183 499 181 502 183 b 519 183 517 183 518 183 b 598 104 567 183 598 144 b 577 49 598 84 592 65 b 518 15 567 38 563 37 b 484 0 499 6 484 0 b 518 -16 484 -1 499 -8 b 577 -51 563 -38 567 -40 b 598 -105 592 -66 598 -86 b 519 -184 598 -145 567 -184 b 517 -184 518 -184 517 -184 b 394 -133 502 -184 499 -183 l 299 -88 l 202 -133 b 81 -184 99 -183 95 -184 b 77 -184 80 -184 78 -184 b 0 -105 29 -184 0 -145 b 20 -51 0 -86 5 -66 b 80 -16 29 -40 34 -38 b 114 -1 98 -8 114 -1 b 80 15 114 0 98 6 b 20 49 34 37 29 38 b 0 104 6 65 0 84 b 62 181 0 140 23 174 m 88 134 b 74 136 85 134 80 136 b 68 134 72 136 69 136 b 46 104 54 130 46 117 b 55 81 46 95 49 88 b 149 34 59 76 53 80 b 224 -1 190 15 224 0 b 144 -38 224 -1 187 -18 b 54 -84 59 -79 58 -79 b 46 -105 49 -90 46 -98 b 76 -137 46 -122 58 -137 b 78 -137 77 -137 77 -137 b 194 -86 87 -137 76 -141 b 298 -36 250 -58 298 -36 b 298 -36 298 -36 298 -36 b 402 -84 299 -36 345 -58 b 518 -137 522 -141 510 -137 b 521 -137 519 -137 519 -137 b 551 -105 539 -137 551 -122 b 541 -83 551 -98 548 -90 b 447 -36 537 -77 544 -81 b 374 -1 406 -16 374 -1 b 447 34 374 0 406 15 b 541 81 544 80 537 76 b 551 104 548 88 551 97 b 521 136 551 120 539 136 b 518 136 519 136 519 136 b 517 136 518 136 517 136 l 517 136 b 402 83 511 136 511 136 b 298 34 345 56 299 34 b 298 34 298 34 298 34 b 194 84 298 34 250 56 b 88 134 137 111 89 133 ' + }, + 'noteheadXHalf': { + 'x_min': 0, + 'x_max': 406.96875, + 'ha': 415, + 'o': 'm 55 181 b 70 183 61 183 66 183 b 111 170 85 183 99 179 b 160 130 115 167 137 149 l 202 95 l 245 130 b 319 181 299 176 302 179 b 334 183 325 183 330 183 b 406 109 375 183 406 148 b 401 81 406 99 405 91 b 348 24 394 65 390 59 b 318 -1 332 11 318 0 b 348 -26 318 -1 332 -12 b 401 -83 390 -61 394 -66 b 406 -111 405 -93 406 -101 b 334 -184 406 -149 375 -184 b 319 -183 330 -184 325 -184 b 245 -131 302 -180 299 -177 l 202 -97 l 160 -131 b 85 -183 107 -177 103 -180 b 70 -184 80 -184 76 -184 b 0 -111 31 -184 0 -149 b 4 -83 0 -101 1 -93 b 58 -26 10 -66 16 -61 b 88 -1 74 -12 88 -1 b 58 24 88 0 74 11 b 10 69 23 54 17 59 b 0 109 2 81 0 95 b 55 181 0 142 21 173 m 83 133 b 72 136 78 136 76 136 b 57 131 66 136 61 134 b 46 109 49 126 46 117 b 50 93 46 104 47 98 b 107 45 51 91 77 70 b 160 0 137 20 160 0 b 107 -47 160 -1 137 -22 b 50 -94 77 -72 51 -93 b 46 -111 47 -99 46 -105 b 59 -134 46 -120 50 -130 b 72 -137 62 -136 68 -137 b 83 -136 76 -137 80 -136 b 144 -84 84 -134 107 -116 b 202 -36 176 -58 202 -36 b 261 -84 202 -36 230 -58 b 323 -136 299 -116 321 -134 b 334 -137 326 -136 330 -137 b 345 -134 338 -137 343 -136 b 360 -111 355 -130 360 -120 b 355 -94 360 -105 359 -99 b 299 -47 353 -93 329 -72 b 245 0 269 -22 245 -1 b 299 45 245 0 269 20 b 355 93 329 70 353 91 b 360 109 359 98 360 104 b 345 133 360 119 355 129 b 334 136 343 134 338 136 b 323 134 330 136 326 134 b 261 83 321 133 299 115 b 202 34 230 56 202 34 b 144 83 202 34 176 56 b 83 133 106 115 84 133 ' + }, + 'noteheadXBlack': { + 'x_min': 0, + 'x_max': 406.96875, + 'ha': 415, + 'o': 'm 21 183 b 28 183 24 183 25 183 b 42 181 34 183 39 183 b 127 108 47 179 47 179 b 202 41 168 72 202 41 b 279 108 204 41 238 72 b 357 177 321 145 356 176 b 375 183 363 181 370 183 b 406 151 392 183 406 169 b 404 137 406 147 405 141 b 322 62 401 131 398 129 b 251 0 284 27 251 0 b 322 -63 251 -1 284 -29 b 404 -138 398 -130 401 -133 b 406 -152 405 -142 406 -148 b 375 -184 406 -170 392 -184 b 357 -179 370 -184 363 -183 b 279 -109 356 -177 321 -147 b 202 -43 238 -73 204 -43 b 127 -109 202 -43 168 -73 b 49 -179 85 -147 50 -177 b 31 -184 43 -183 36 -184 b 0 -152 13 -184 0 -170 b 2 -138 0 -148 0 -142 b 83 -63 5 -133 8 -130 b 155 0 122 -29 155 -1 b 83 62 155 0 122 27 b 8 129 43 97 10 127 b 0 151 2 136 0 144 b 21 183 0 165 8 177 ' + }, + 'noteheadCircleX': { + 'x_min': 0, + 'x_max': 484.5625, + 'ha': 494, + 'o': 'm 228 245 b 239 247 234 247 239 247 b 243 247 240 247 242 247 b 303 238 257 247 287 242 b 484 -2 417 208 484 104 b 412 -177 484 -65 461 -127 b 243 -248 363 -226 303 -248 b 6 -63 138 -248 36 -180 b 0 -1 1 -41 0 -20 b 228 245 0 127 98 240 m 255 181 b 240 183 247 183 245 183 b 232 181 238 183 235 183 b 142 152 200 180 168 170 l 138 149 l 190 97 l 242 44 l 294 97 l 345 149 l 340 152 b 255 181 315 169 284 180 m 147 -54 l 197 -1 l 147 51 l 95 104 l 91 99 b 62 -1 72 70 62 34 b 66 -43 62 -15 63 -29 b 91 -101 72 -63 80 -84 l 95 -106 l 147 -54 m 393 99 b 389 104 390 102 389 104 b 337 51 389 104 366 80 l 285 -1 l 337 -54 l 389 -106 l 393 -101 b 421 -1 412 -72 421 -36 b 393 99 421 34 412 69 m 294 -98 b 242 -45 265 -69 242 -45 b 190 -98 242 -45 219 -69 l 138 -151 l 142 -154 b 242 -184 172 -174 206 -184 b 340 -154 276 -184 311 -174 l 345 -151 l 294 -98 ' + }, + 'noteheadTriangleUpWhole': { + 'x_min': 0, + 'x_max': 630.203125, + 'ha': 643, + 'o': 'm 308 204 b 314 205 310 205 313 205 b 326 201 319 205 323 204 b 355 154 328 199 338 180 b 401 83 362 142 392 95 l 409 72 b 431 41 412 66 424 49 b 619 -174 498 -51 570 -134 b 630 -192 626 -180 630 -186 b 626 -202 630 -195 628 -199 b 616 -206 623 -205 620 -206 b 552 -188 608 -206 592 -202 b 310 -155 488 -169 392 -155 b 268 -156 295 -155 281 -155 b 77 -188 197 -161 126 -173 b 13 -206 35 -202 20 -206 b 9 -206 12 -206 10 -206 b 0 -191 2 -202 0 -197 b 8 -176 0 -186 2 -180 b 204 49 58 -136 138 -43 l 220 72 l 227 83 b 295 188 245 108 281 166 b 308 204 299 197 304 202 m 315 147 b 314 147 315 147 314 147 b 314 147 314 147 314 147 b 306 129 314 145 310 138 l 296 105 b 281 72 292 97 284 77 l 274 56 b 181 -123 247 -4 212 -72 l 174 -134 l 176 -133 b 314 -123 215 -127 272 -123 b 451 -133 356 -123 413 -127 l 454 -134 l 449 -123 b 353 56 417 -72 381 -4 l 347 72 b 332 105 344 77 336 97 l 322 129 b 315 147 318 138 315 145 ' + }, + 'noteheadTriangleUpHalf': { + 'x_min': 0, + 'x_max': 438.28125, + 'ha': 447, + 'o': 'm 212 205 b 219 205 213 205 216 205 b 239 183 228 205 231 204 b 421 -163 298 40 363 -83 b 438 -191 434 -180 438 -186 b 436 -197 438 -192 438 -195 b 424 -206 434 -204 431 -206 b 406 -201 420 -206 415 -205 b 216 -156 347 -172 281 -156 b 23 -205 148 -156 80 -173 b 14 -206 20 -206 17 -206 b 0 -191 6 -206 0 -201 b 6 -176 0 -187 1 -183 b 202 192 63 -104 142 45 b 212 205 205 199 208 202 m 264 48 l 249 81 l 243 94 l 242 91 b 89 -126 208 36 137 -66 b 81 -138 85 -133 81 -138 b 81 -138 81 -138 81 -138 b 81 -138 81 -138 81 -138 b 95 -133 81 -138 87 -136 b 280 -94 156 -108 221 -94 b 334 -98 299 -94 317 -95 b 343 -99 338 -99 343 -99 b 343 -99 343 -99 343 -99 b 338 -94 343 -99 341 -97 b 264 48 318 -58 287 1 ' + }, + 'noteheadTriangleUpBlack': { + 'x_min': -1.359375, + 'x_max': 436.921875, + 'ha': 446, + 'o': 'm 213 205 b 217 205 215 205 216 205 b 234 194 224 205 234 199 b 236 187 234 194 235 190 l 245 167 l 261 129 l 270 106 b 355 -61 294 54 329 -13 b 420 -163 381 -105 402 -138 b 436 -188 435 -184 436 -184 b 436 -191 436 -190 436 -190 b 421 -206 436 -201 431 -206 l 421 -206 l 416 -206 l 405 -201 b 217 -158 347 -172 283 -158 b 31 -201 153 -158 88 -172 l 20 -206 l 14 -206 l 14 -206 b 0 -191 5 -206 0 -201 b -1 -188 0 -190 -1 -190 b 14 -163 -1 -186 0 -184 b 95 -34 36 -136 72 -77 b 166 106 119 8 148 68 l 175 129 l 183 148 l 200 188 b 213 205 205 199 208 202 ' + }, + 'noteheadDiamondWhole': { + 'x_min': 0, + 'x_max': 627.46875, + 'ha': 640, + 'o': 'm 306 190 b 314 191 308 191 311 191 b 326 184 318 191 322 190 l 336 173 b 510 52 377 127 442 80 b 515 49 513 51 515 49 b 611 16 537 40 579 24 b 627 0 624 13 627 9 b 607 -18 627 -11 624 -13 b 330 -181 490 -49 389 -109 b 314 -192 323 -190 319 -192 b 306 -191 311 -192 308 -192 b 294 -177 302 -188 302 -188 b 257 -140 287 -170 265 -148 b 19 -18 193 -84 114 -44 b 0 0 2 -13 0 -11 b 16 16 0 9 2 13 b 110 49 47 24 89 40 b 117 52 111 49 114 51 b 145 65 126 56 130 58 b 281 163 200 93 245 124 b 300 186 288 170 291 174 b 306 190 300 187 303 188 m 317 137 b 313 142 315 141 314 142 b 308 137 313 142 311 141 b 161 4 276 84 220 33 b 155 0 159 1 155 0 b 163 -4 155 0 159 -2 b 308 -138 220 -34 276 -84 b 313 -142 311 -141 313 -142 b 317 -138 314 -142 315 -141 b 464 -4 351 -84 406 -34 b 470 0 468 -2 470 0 b 464 4 470 0 468 1 b 317 137 406 33 351 84 ' + }, + 'noteheadDiamondHalf': { + 'x_min': 0, + 'x_max': 438.28125, + 'ha': 447, + 'o': 'm 212 190 b 219 191 213 191 216 191 b 236 176 225 191 228 190 b 419 18 277 105 341 49 b 436 5 431 13 434 11 b 438 -1 438 4 438 1 b 424 -16 438 -8 432 -13 b 356 -49 409 -20 379 -36 b 234 -180 306 -83 258 -133 b 219 -192 230 -188 224 -192 b 200 -176 213 -192 206 -187 b 9 -15 157 -102 89 -45 b 0 0 2 -12 0 -6 b 16 18 0 9 2 12 b 200 176 93 48 159 104 b 212 190 205 186 208 188 m 239 113 b 236 117 238 116 238 117 b 230 108 235 117 234 115 b 92 -15 196 58 140 8 b 88 -18 91 -16 88 -18 b 92 -20 88 -18 91 -19 b 198 -116 130 -43 166 -74 b 200 -117 200 -117 200 -117 b 201 -117 200 -117 201 -117 b 264 -43 212 -98 242 -62 b 345 15 288 -19 321 4 b 348 18 347 16 348 16 b 344 20 348 18 347 19 b 239 113 307 41 266 79 ' + }, + 'noteheadDiamondBlack': { + 'x_min': 0, + 'x_max': 432.828125, + 'ha': 442, + 'o': 'm 209 186 b 213 187 210 187 212 187 b 216 187 215 187 216 187 b 224 174 216 186 220 180 b 420 -1 269 105 338 43 b 432 -12 431 -8 432 -9 b 421 -23 432 -15 432 -16 b 228 -180 345 -70 264 -137 b 219 -188 221 -188 221 -188 l 219 -188 b 208 -177 215 -188 215 -188 b 10 1 163 -106 93 -44 b 0 11 0 6 0 8 b 10 22 0 13 0 15 b 202 179 87 69 167 136 b 209 186 206 183 209 186 ' + }, + 'augmentationDot': { + 'x_min': 0, + 'x_max': 133.390625, + 'ha': 136, + 'o': 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ' + }, + 'tremolo1': { + 'x_min': -206.890625, + 'x_max': 428.75, + 'ha': 438, + 'o': 'm 389 -351 b 394 -351 390 -351 393 -351 b 428 -385 413 -351 428 -367 b 428 -394 428 -388 428 -391 b 394 -428 426 -406 421 -410 l 332 -473 l 269 -516 l 205 -560 l 141 -603 l 77 -648 l 13 -692 l -50 -737 l -114 -780 l -145 -802 b -171 -813 -157 -810 -163 -813 b -175 -813 -172 -813 -174 -813 b -206 -777 -194 -811 -206 -795 b -202 -760 -206 -771 -205 -766 b -87 -675 -197 -752 -206 -757 l -34 -639 l 83 -557 l 145 -514 l 209 -470 l 272 -427 b 389 -351 375 -356 381 -352 ' + }, + 'flag8thUp': { + 'x_min': -24.5, + 'x_max': 317.140625, + 'ha': 324, + 'o': 'm -24 -161 l -24 -5 l -20 -5 b 0 -24 -9 -5 -2 -12 b 171 -315 21 -124 84 -233 b 317 -660 268 -406 317 -531 b 187 -1014 317 -782 274 -909 b 161 -1034 172 -1034 171 -1034 b 141 -1013 149 -1034 141 -1025 b 152 -991 141 -1004 142 -1002 b 266 -682 228 -899 266 -788 b 174 -430 266 -588 236 -498 b -23 -317 136 -388 66 -348 b -24 -161 -23 -316 -24 -285 ' + }, + 'flag8thDown': { + 'x_min': -21.78125, + 'x_max': 367.5, + 'ha': 375, + 'o': 'm 230 1031 b 238 1032 232 1032 235 1032 b 259 1014 245 1032 251 1027 b 367 662 330 906 367 782 b 364 602 367 641 367 621 b 232 317 352 488 304 384 b 57 120 155 245 103 187 b -1 18 31 84 6 40 b -19 4 -4 11 -12 4 l -21 4 l -21 159 l -21 315 l -16 315 b 96 335 10 315 62 324 b 315 695 227 380 315 527 b 313 738 315 709 314 724 b 224 991 304 825 273 916 b 216 1013 219 999 216 1007 b 230 1031 216 1021 220 1028 ' + }, + 'flag16thUp': { + 'x_min': -24.5, + 'x_max': 317.140625, + 'ha': 324, + 'o': 'm -24 -147 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 58 -123 6 -43 31 -86 b 196 -278 93 -173 134 -219 b 317 -570 274 -356 317 -460 b 294 -713 317 -617 308 -666 l 289 -724 l 294 -735 b 317 -873 308 -780 317 -827 b 235 -1132 317 -963 288 -1054 b 209 -1165 228 -1140 224 -1146 b 189 -1177 204 -1172 196 -1177 b 171 -1164 182 -1177 175 -1172 b 168 -1154 170 -1161 168 -1159 b 181 -1132 168 -1149 172 -1142 b 269 -891 238 -1064 269 -975 b 269 -881 269 -886 269 -884 b 262 -814 269 -857 265 -827 b 258 -800 261 -811 259 -806 b 142 -628 240 -731 198 -667 b -8 -589 112 -606 47 -589 b -20 -589 -13 -589 -19 -589 l -24 -589 l -24 -449 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 58 -424 6 -345 31 -388 b 194 -580 93 -476 136 -523 b 259 -660 221 -606 245 -635 b 261 -663 259 -662 261 -663 b 264 -656 262 -663 262 -660 b 269 -587 268 -632 269 -610 b 264 -521 269 -566 268 -544 b 262 -512 264 -517 262 -513 b 258 -498 261 -509 259 -503 b 142 -326 240 -428 198 -365 b -8 -287 112 -303 47 -288 b -20 -287 -13 -287 -19 -287 l -24 -287 l -24 -147 ' + }, + 'flag16thDown': { + 'x_min': -21.78125, + 'x_max': 362.0625, + 'ha': 369, + 'o': 'm 302 1031 b 308 1032 304 1032 307 1032 b 330 1016 318 1032 325 1027 b 362 867 351 970 362 920 b 340 738 362 824 353 780 l 336 727 l 340 717 b 362 591 355 677 362 634 b 257 323 362 496 325 401 b 204 272 243 306 227 290 b 20 56 129 206 66 133 b -1 18 12 44 0 22 b -19 4 -4 9 -12 4 l -21 4 l -21 140 l -21 276 l -12 277 b 167 333 61 288 127 309 b 319 598 262 388 319 491 b 311 664 319 620 317 642 l 310 673 l 304 664 b 204 548 279 620 250 587 b 20 333 129 483 66 409 b -1 292 12 320 0 298 b -19 280 -4 285 -12 280 l -21 280 l -21 416 l -21 552 l -12 553 b 167 609 61 564 127 585 b 319 874 264 666 319 770 b 294 992 319 914 311 954 b 288 1011 288 1004 288 1007 b 302 1031 288 1021 294 1028 ' + }, + 'flag32ndUp': { + 'x_min': -24.5, + 'x_max': 315.78125, + 'ha': 322, + 'o': 'm -24 -145 l -24 -5 l -20 -5 b 1 -26 -10 -5 -6 -9 b 175 -241 31 -86 96 -166 b 314 -548 259 -323 304 -420 b 315 -589 315 -555 315 -571 b 314 -630 315 -606 315 -623 b 298 -730 311 -664 306 -699 l 295 -742 l 296 -748 b 314 -850 304 -778 311 -813 b 315 -892 315 -857 315 -874 b 314 -932 315 -909 315 -925 b 298 -1032 311 -967 306 -1002 l 295 -1045 l 296 -1050 b 314 -1153 304 -1081 311 -1115 b 315 -1193 315 -1160 315 -1177 b 314 -1235 315 -1211 315 -1228 b 217 -1526 306 -1338 270 -1444 b 201 -1533 213 -1532 208 -1533 b 182 -1522 193 -1533 185 -1529 b 179 -1514 181 -1518 179 -1517 b 189 -1489 179 -1508 182 -1501 b 266 -1217 240 -1403 266 -1308 b 262 -1156 266 -1196 265 -1177 b 110 -907 247 -1043 190 -950 b 0 -889 87 -895 50 -889 l -1 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 1 -631 -10 -610 -6 -614 b 175 -846 31 -691 96 -771 b 259 -956 213 -884 236 -914 b 265 -966 262 -961 264 -966 b 265 -966 265 -966 265 -966 b 265 -953 265 -964 265 -959 b 266 -920 266 -943 266 -932 b 262 -853 266 -898 265 -873 b 110 -605 247 -741 190 -648 b 0 -587 87 -592 50 -587 l -1 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 1 -328 -10 -308 -6 -312 b 175 -544 31 -388 96 -469 b 259 -655 213 -581 236 -612 b 265 -663 262 -659 264 -663 b 265 -663 265 -663 265 -663 b 265 -650 265 -663 265 -657 b 266 -617 266 -641 266 -630 b 262 -551 266 -595 265 -570 b 110 -303 247 -438 190 -345 b 0 -284 87 -290 50 -284 l -1 -284 l -24 -284 l -24 -145 ' + }, + 'flag32ndDown': { + 'x_min': -21.78125, + 'x_max': 366.140625, + 'ha': 374, + 'o': 'm 276 1378 b 284 1379 279 1379 281 1379 b 306 1360 292 1379 298 1374 b 352 1247 326 1326 343 1286 b 366 1139 362 1213 366 1175 b 347 1009 366 1093 359 1049 l 344 1002 l 347 992 b 352 971 348 986 351 977 b 366 863 362 936 366 899 b 347 732 366 818 359 773 l 344 725 l 347 716 b 352 695 348 710 351 700 b 366 588 362 659 366 623 b 223 262 366 464 314 345 b 189 233 212 252 212 252 b 35 76 126 183 73 129 b -1 16 20 56 2 27 b -19 4 -4 9 -12 4 l -21 4 l -21 137 l -21 270 l -17 270 b 186 344 59 281 134 308 b 319 606 270 399 319 499 b 317 650 319 620 319 635 l 315 659 l 314 655 b 223 537 288 607 258 570 b 189 509 212 528 212 528 b 35 352 126 459 73 405 b -1 292 20 333 2 303 b -19 280 -4 285 -12 280 l -21 280 l -21 413 l -21 546 l -17 546 b 186 620 59 557 134 584 b 319 882 270 675 319 775 b 317 925 319 896 319 911 l 315 935 l 314 931 b 223 813 288 884 258 846 b 189 785 212 805 212 805 b 35 628 126 735 73 681 b -1 569 20 609 2 580 b -19 556 -4 562 -12 556 l -21 556 l -21 689 l -21 823 l -17 823 b 202 907 68 835 152 867 b 319 1157 280 968 319 1061 b 270 1338 319 1218 303 1281 b 262 1358 264 1349 262 1353 b 262 1364 262 1360 262 1363 b 276 1378 265 1371 269 1376 ' + }, + 'flag64thUp': { + 'x_min': -24.5, + 'x_max': 314.421875, + 'ha': 321, + 'o': 'm -24 -145 l -24 -5 l -20 -5 b 0 -23 -9 -5 -2 -12 b 27 -87 4 -38 14 -66 b 138 -220 53 -136 88 -177 b 235 -328 179 -255 208 -288 b 314 -592 287 -409 314 -501 b 292 -732 314 -639 307 -687 l 289 -742 l 294 -756 b 314 -896 307 -802 314 -849 b 292 -1035 314 -943 307 -991 l 289 -1045 l 294 -1057 b 314 -1197 307 -1104 314 -1152 b 292 -1338 314 -1246 307 -1292 l 289 -1347 l 294 -1360 b 314 -1500 307 -1407 314 -1454 b 273 -1689 314 -1565 300 -1628 b 250 -1712 265 -1710 261 -1712 b 228 -1691 236 -1712 228 -1704 l 228 -1685 l 234 -1675 b 270 -1507 258 -1621 270 -1564 b 98 -1193 270 -1381 209 -1261 b 40 -1174 76 -1179 58 -1174 b -10 -1189 24 -1174 8 -1178 b -20 -1192 -14 -1192 -16 -1192 l -24 -1192 l -24 -1052 l -24 -913 l -20 -913 b 0 -931 -9 -913 -2 -920 b 27 -995 4 -946 14 -974 b 138 -1128 53 -1043 88 -1085 b 257 -1275 190 -1172 228 -1220 b 262 -1283 259 -1279 262 -1283 l 262 -1283 b 269 -1249 264 -1282 268 -1260 b 270 -1206 270 -1233 270 -1220 b 98 -891 270 -1075 206 -957 b 40 -871 76 -877 58 -871 b -10 -886 24 -871 8 -875 b -20 -889 -14 -889 -16 -889 l -24 -889 l -24 -749 l -24 -610 l -20 -610 b 0 -628 -9 -610 -2 -617 b 27 -692 4 -644 14 -671 b 138 -825 53 -741 88 -782 b 257 -973 190 -870 228 -917 b 262 -981 259 -977 262 -981 l 262 -981 b 269 -946 264 -979 268 -957 b 270 -903 270 -931 270 -917 b 98 -588 270 -774 206 -655 b 40 -569 76 -574 58 -569 b -10 -584 24 -569 8 -574 b -20 -587 -14 -587 -16 -587 l -24 -587 l -24 -448 l -24 -308 l -20 -308 b 0 -326 -9 -308 -2 -315 b 27 -390 4 -341 14 -369 b 138 -523 53 -438 88 -480 b 257 -670 190 -567 228 -614 b 262 -678 259 -674 262 -678 b 262 -678 262 -678 262 -678 b 269 -644 264 -677 268 -656 b 270 -601 270 -628 270 -614 b 98 -285 270 -471 206 -352 b 40 -266 76 -273 58 -266 b -10 -281 24 -266 8 -272 b -20 -284 -14 -284 -16 -284 l -24 -284 l -24 -145 ' + }, + 'flag64thDown': { + 'x_min': -21.78125, + 'x_max': 367.5, + 'ha': 375, + 'o': 'm 259 1553 b 265 1553 261 1553 264 1553 b 288 1540 272 1553 277 1550 b 367 1351 340 1493 367 1424 b 336 1221 367 1308 357 1263 l 332 1211 l 333 1208 b 367 1077 356 1170 367 1124 b 336 945 367 1032 357 986 l 332 935 l 333 932 b 367 800 356 893 367 848 b 336 669 367 756 357 710 l 332 659 l 333 656 b 367 523 356 617 367 571 b 345 412 367 485 360 446 b 231 273 322 356 284 310 b -1 19 121 195 27 93 b -17 4 -4 11 -10 5 l -21 4 l -21 134 l -21 265 l -17 265 b 133 291 20 265 96 278 b 318 537 245 328 318 433 b 307 603 318 559 315 582 b 303 614 304 612 304 614 b 298 609 302 614 300 613 b 231 549 281 589 258 567 b -1 295 121 471 27 369 b -17 280 -4 287 -10 281 l -21 280 l -21 410 l -21 541 l -17 541 b 133 567 20 541 96 555 b 318 813 245 605 318 709 b 307 880 318 835 315 859 b 303 891 304 888 304 891 b 298 885 302 891 300 888 b 231 825 281 866 258 843 b -1 571 121 748 27 645 b -17 556 -4 563 -10 557 l -21 556 l -21 687 l -21 817 l -17 817 b 133 843 20 817 96 830 b 318 1089 245 881 318 985 b 307 1156 318 1111 315 1134 b 303 1167 304 1164 304 1167 b 298 1161 302 1167 300 1164 b 231 1102 281 1140 258 1120 b -1 848 121 1024 27 921 b -17 832 -4 839 -10 834 l -21 832 l -21 963 l -21 1093 l -17 1093 b 114 1113 12 1093 78 1103 b 313 1314 215 1142 289 1218 b 318 1364 317 1331 318 1347 b 255 1511 318 1422 295 1478 b 243 1532 247 1519 243 1525 b 259 1553 243 1540 250 1550 ' + }, + 'flag128thUp': { + 'x_min': -24.5, + 'x_max': 313.0625, + 'ha': 319, + 'o': 'm -24 -133 l -24 -5 l -20 -5 b -1 -19 -12 -5 -4 -11 b 142 -213 13 -61 74 -144 b 258 -376 196 -269 230 -315 b 313 -605 295 -449 313 -528 b 292 -742 313 -652 306 -699 b 288 -752 289 -748 288 -752 b 288 -752 288 -752 288 -752 b 292 -764 289 -753 291 -757 b 313 -907 306 -811 313 -860 b 292 -1045 313 -954 306 -1002 b 288 -1054 289 -1050 288 -1054 b 288 -1054 288 -1054 288 -1054 b 292 -1067 289 -1054 291 -1060 b 313 -1210 306 -1113 313 -1161 b 292 -1346 313 -1257 306 -1304 b 288 -1357 289 -1353 288 -1357 b 288 -1357 288 -1357 288 -1357 b 292 -1368 289 -1357 291 -1363 b 313 -1512 306 -1415 313 -1464 b 292 -1648 313 -1560 306 -1605 b 288 -1660 289 -1654 288 -1660 b 288 -1660 288 -1660 288 -1660 b 292 -1671 289 -1660 291 -1665 b 313 -1814 306 -1719 313 -1766 b 250 -2040 313 -1897 291 -1977 b 232 -2062 238 -2057 236 -2059 b 221 -2065 230 -2063 225 -2065 b 200 -2045 210 -2065 201 -2057 b 200 -2043 200 -2044 200 -2044 b 208 -2026 200 -2037 202 -2034 b 269 -1826 249 -1966 269 -1897 b 153 -1544 269 -1726 230 -1625 b -9 -1472 115 -1506 58 -1481 b -21 -1471 -14 -1471 -19 -1471 l -24 -1471 l -24 -1343 l -24 -1215 l -20 -1215 b -1 -1229 -12 -1215 -4 -1221 b 142 -1424 13 -1270 74 -1353 b 257 -1582 196 -1478 228 -1524 b 264 -1594 261 -1589 264 -1594 l 264 -1594 b 265 -1582 264 -1594 264 -1589 b 270 -1525 268 -1562 270 -1544 b 153 -1243 270 -1424 228 -1321 b -9 -1170 115 -1203 58 -1178 b -21 -1168 -14 -1170 -19 -1168 l -24 -1168 l -24 -1041 l -24 -913 l -20 -913 b -1 -927 -12 -913 -4 -918 b 142 -1121 13 -967 74 -1050 b 257 -1281 196 -1175 228 -1221 b 264 -1292 261 -1286 264 -1292 l 264 -1292 b 265 -1279 264 -1292 264 -1286 b 270 -1222 268 -1261 270 -1242 b 153 -941 270 -1121 228 -1018 b -9 -867 115 -900 58 -875 b -21 -866 -14 -867 -19 -866 l -24 -866 l -24 -738 l -24 -610 l -20 -610 b -1 -624 -12 -610 -4 -616 b 142 -818 13 -664 74 -749 b 257 -978 196 -873 228 -918 b 264 -989 261 -984 264 -989 l 264 -989 b 265 -977 264 -989 264 -984 b 270 -920 268 -959 270 -939 b 153 -638 270 -818 228 -716 b -9 -564 115 -598 58 -573 b -21 -563 -14 -564 -19 -563 l -24 -563 l -24 -435 l -24 -308 l -20 -308 b -1 -322 -12 -308 -4 -313 b 142 -516 13 -363 74 -446 b 257 -675 196 -571 228 -616 b 264 -687 261 -681 264 -687 l 264 -687 b 265 -674 264 -687 264 -681 b 270 -617 268 -656 270 -637 b 153 -335 270 -516 228 -413 b -9 -262 115 -295 58 -270 b -21 -260 -14 -262 -19 -260 l -24 -260 l -24 -133 ' + }, + 'flag128thDown': { + 'x_min': -21.78125, + 'x_max': 367.5, + 'ha': 375, + 'o': 'm 276 1900 b 284 1901 279 1900 281 1901 b 306 1883 291 1901 298 1896 b 367 1686 347 1825 367 1757 b 343 1558 367 1643 359 1600 l 338 1549 l 343 1537 b 367 1411 359 1497 367 1454 b 343 1282 367 1367 359 1324 l 338 1272 l 343 1261 b 367 1135 359 1221 367 1178 b 343 1007 367 1090 359 1047 l 338 996 l 343 985 b 367 859 359 945 367 902 b 343 731 367 814 359 771 l 338 720 l 343 709 b 367 582 359 667 367 626 b 289 362 367 503 340 426 b 239 312 276 345 259 330 b 29 77 152 237 76 152 b -1 18 14 54 2 30 b -19 4 -4 11 -12 4 l -21 4 l -21 133 l -20 260 l -13 262 b 98 299 17 269 62 284 b 111 305 103 302 110 305 b 167 334 123 310 156 327 b 319 595 264 391 319 491 b 313 659 319 616 318 638 b 310 667 311 664 311 667 b 307 663 310 667 308 666 b 240 588 289 637 269 614 b 16 331 141 505 62 413 b -1 294 8 316 1 302 b -19 280 -4 287 -12 280 l -21 280 l -21 408 l -20 537 l -13 538 b 98 576 17 545 62 560 b 111 581 103 578 110 581 b 167 610 123 587 156 603 b 319 871 264 667 319 767 b 313 935 319 892 318 913 b 310 942 311 941 311 942 b 307 939 310 942 308 941 b 240 864 289 913 269 889 b 16 607 141 781 62 689 b -1 570 8 592 1 578 b -19 556 -4 563 -12 556 l -21 556 l -21 684 l -20 813 l -13 814 b 98 852 17 821 62 836 b 111 857 103 855 110 857 b 167 886 123 863 156 880 b 319 1147 264 943 319 1043 b 313 1211 319 1168 318 1189 b 310 1218 311 1217 311 1218 b 307 1215 310 1218 308 1217 b 240 1140 289 1188 269 1165 b 16 884 141 1057 62 966 b -1 846 8 868 1 855 b -19 832 -4 839 -12 832 l -21 832 l -21 960 l -20 1089 l -13 1090 b 98 1128 17 1097 62 1111 b 111 1134 103 1131 110 1134 b 167 1163 123 1139 156 1156 b 319 1424 264 1220 319 1320 b 313 1486 319 1444 318 1465 b 310 1494 311 1493 311 1494 b 307 1492 310 1494 308 1493 b 240 1417 289 1464 269 1442 b 16 1160 141 1333 62 1242 b -1 1121 8 1145 1 1131 b -19 1109 -4 1115 -12 1109 l -21 1109 l -21 1236 l -20 1365 l -13 1367 b 98 1404 17 1374 62 1388 b 111 1410 103 1407 110 1410 b 250 1508 172 1437 215 1467 b 319 1701 296 1564 319 1633 b 270 1859 319 1757 303 1814 b 262 1882 265 1868 262 1875 b 276 1900 262 1890 266 1896 ' + }, + 'accidentalFlat': { + 'x_min': -21.78125, + 'x_max': 251.8125, + 'ha': 257, + 'o': 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ' + }, + 'accidentalNatural': { + 'x_min': 0, + 'x_max': 239.5625, + 'ha': 244, + 'o': 'm 10 460 b 20 462 13 462 14 462 b 39 449 28 462 35 458 l 40 446 l 40 326 b 40 205 40 259 40 205 b 127 227 40 205 80 215 b 220 249 196 244 213 249 b 227 247 224 249 225 248 b 238 237 231 245 235 241 l 239 233 l 239 -106 l 239 -448 l 238 -451 b 219 -463 234 -459 225 -463 b 198 -451 210 -463 202 -459 l 197 -448 l 197 -324 b 197 -201 197 -248 197 -201 b 110 -223 196 -201 157 -210 b 17 -245 42 -240 24 -245 b 10 -242 13 -245 13 -244 b 0 -233 6 -241 2 -237 l 0 -230 l 0 108 l 0 446 l 0 449 b 10 460 2 453 6 458 m 197 22 b 197 70 197 41 197 58 b 196 116 197 113 197 116 l 196 116 b 118 97 196 116 160 106 l 40 77 l 40 -18 b 40 -112 40 -69 40 -112 l 119 -93 l 197 -73 l 197 22 ' + }, + 'accidentalSharp': { + 'x_min': 0, + 'x_max': 323.9375, + 'ha': 331, + 'o': 'm 217 535 b 225 537 220 537 221 537 b 245 524 235 537 242 533 l 246 521 l 247 390 l 247 258 l 273 265 b 306 270 288 269 299 270 b 322 259 315 270 319 267 b 323 208 323 256 323 233 b 322 158 323 184 323 159 b 288 140 318 148 315 147 b 247 130 254 131 247 130 b 247 65 247 130 247 104 b 247 20 247 51 247 36 l 247 -88 l 273 -81 b 306 -76 289 -77 299 -76 b 318 -81 311 -76 315 -77 b 323 -123 323 -87 323 -86 l 323 -138 l 323 -154 b 318 -195 323 -191 323 -190 b 269 -210 314 -199 315 -199 b 249 -216 259 -213 250 -216 l 247 -216 l 247 -349 l 246 -483 l 245 -487 b 225 -499 242 -495 234 -499 b 206 -487 219 -499 210 -495 l 205 -483 l 205 -355 l 205 -227 l 204 -227 l 181 -233 l 138 -244 b 117 -249 127 -247 117 -249 b 115 -385 115 -249 115 -256 l 115 -523 l 114 -526 b 95 -538 110 -534 102 -538 b 74 -526 87 -538 78 -534 l 73 -523 l 73 -391 b 72 -260 73 -269 73 -260 b 72 -260 72 -260 72 -260 b 19 -273 61 -263 23 -273 b 0 -260 10 -273 4 -267 b 0 -209 0 -256 0 -256 l 0 -162 l 1 -158 b 61 -134 5 -148 5 -148 l 73 -131 l 73 -22 b 72 86 73 79 73 86 b 72 86 72 86 72 86 b 19 74 61 83 23 74 b 0 86 10 74 4 79 b 0 137 0 90 0 90 l 0 184 l 1 188 b 61 212 5 198 5 198 l 73 215 l 73 348 l 73 481 l 74 485 b 95 498 78 492 87 498 b 103 495 98 498 100 496 b 114 485 107 494 111 489 l 115 481 l 115 353 l 115 226 l 121 226 b 159 235 123 227 141 231 l 198 247 l 205 248 l 205 384 l 205 521 l 206 524 b 217 535 209 528 212 533 m 205 9 b 205 119 205 70 205 119 l 205 119 b 182 113 204 119 194 116 l 138 102 b 117 97 127 99 117 97 b 115 -12 115 97 115 91 l 115 -122 l 121 -120 b 159 -111 123 -119 141 -115 l 198 -101 l 205 -98 l 205 9 ' + }, + 'accidentalDoubleSharp': { + 'x_min': 0, + 'x_max': 367.5, + 'ha': 375, + 'o': 'm 0 124 l 0 187 l 61 187 l 122 187 l 122 138 l 122 91 l 153 61 l 183 30 l 213 61 l 243 91 l 243 138 l 243 187 l 306 187 l 367 187 l 367 124 l 367 61 l 321 61 l 274 61 l 243 30 l 213 0 l 243 -31 l 274 -62 l 321 -62 l 367 -62 l 367 -124 l 367 -188 l 306 -188 l 243 -188 l 243 -140 l 243 -93 l 213 -62 l 183 -31 l 153 -62 l 122 -93 l 122 -140 l 122 -188 l 61 -188 l 0 -188 l 0 -124 l 0 -62 l 46 -62 l 92 -62 l 123 -31 l 153 0 l 123 30 l 92 61 l 46 61 l 0 61 l 0 124 ' + }, + 'accidentalDoubleFlat': { + 'x_min': -21.78125, + 'x_max': 483.1875, + 'ha': 493, + 'o': 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 383 20 616 20 616 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 179 164 199 187 192 l 210 176 l 210 396 l 210 617 l 212 621 b 231 632 216 628 223 632 b 250 620 239 632 247 628 b 251 383 251 616 251 616 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 l -21 -212 l -21 201 l -21 616 l -20 620 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 ' + }, + 'accidentalParensLeft': { + 'x_min': -166.0625, + 'x_max': -25.859375, + 'ha': 0, + 'o': 'm -49 369 b -42 370 -46 369 -44 370 b -27 360 -36 370 -29 366 b -25 355 -27 359 -25 358 b -32 335 -25 351 -28 347 b -92 52 -66 248 -87 159 b -93 -1 -93 43 -93 20 b -92 -54 -93 -23 -93 -45 b -32 -337 -85 -162 -66 -251 b -25 -355 -27 -349 -25 -352 b -42 -371 -25 -365 -32 -371 b -61 -353 -50 -371 -51 -369 b -163 -63 -119 -262 -153 -165 b -166 -1 -166 -37 -166 -31 b -163 62 -166 30 -166 36 b -61 352 -153 163 -119 260 b -49 369 -54 365 -51 366 ' + }, + 'accidentalParensRight': { + 'x_min': 25.859375, + 'x_max': 164.6875, + 'ha': 168, + 'o': 'm 34 369 b 40 370 35 370 38 370 b 59 353 49 370 50 367 b 164 40 122 254 155 158 b 164 0 164 33 164 16 b 164 -40 164 -16 164 -34 b 59 -353 155 -158 122 -254 b 40 -371 53 -366 47 -371 b 34 -370 38 -371 36 -370 b 25 -358 28 -367 25 -363 b 31 -337 25 -352 27 -347 b 92 0 72 -234 92 -117 b 31 335 92 116 72 233 b 25 356 27 345 25 352 b 34 369 25 363 28 366 ' + }, + 'accidentalQuarterToneFlatStein': { + 'x_min': 0, + 'x_max': 272.21875, + 'ha': 278, + 'o': 'm 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 ' + }, + 'accidentalThreeQuarterTonesFlatZimmermann': { + 'x_min': 0, + 'x_max': 607.0625, + 'ha': 619, + 'o': 'm 243 631 b 250 632 246 632 249 632 b 270 620 259 632 268 628 l 272 616 l 272 201 l 272 -212 l 270 -216 b 251 -229 268 -224 259 -229 b 227 -215 243 -229 240 -229 l 151 -142 b 32 -16 81 -80 53 -49 b 0 84 9 18 0 52 b 111 199 0 149 42 199 b 137 197 119 199 127 198 b 228 151 168 191 197 177 l 231 148 l 231 383 b 232 620 231 616 231 616 b 243 631 234 624 238 630 m 168 131 b 152 133 163 133 157 133 b 107 102 130 133 111 120 b 106 86 107 97 106 91 b 111 41 106 73 108 56 b 227 -152 125 -13 171 -90 l 231 -156 l 231 -37 l 231 80 l 225 87 b 168 131 210 111 190 126 m 347 631 b 353 632 348 632 351 632 b 374 620 363 632 371 628 b 375 383 375 616 375 616 l 375 148 l 377 151 b 492 199 415 183 454 199 b 537 191 507 199 522 197 b 607 84 582 176 607 134 b 583 0 607 58 598 29 b 455 -142 562 -40 533 -72 l 378 -215 b 355 -229 364 -229 362 -229 b 334 -216 345 -229 337 -224 l 333 -212 l 333 201 l 333 616 l 334 620 b 347 631 337 624 341 630 m 465 131 b 451 133 461 133 455 133 b 445 133 449 133 446 133 b 379 87 419 129 396 113 l 375 80 l 375 -37 l 375 -156 l 378 -152 b 499 81 451 -72 499 20 l 499 83 b 465 131 499 113 490 126 ' + }, + 'accidentalQuarterToneSharpStein': { + 'x_min': 0, + 'x_max': 193.28125, + 'ha': 197, + 'o': 'm 85 514 b 95 517 88 517 89 517 b 114 505 103 517 110 513 l 115 502 l 115 376 b 115 249 115 306 115 249 b 141 258 117 249 127 252 l 167 266 l 172 266 b 190 254 181 265 187 262 l 193 251 l 193 202 l 193 188 b 187 147 193 149 191 152 b 147 130 183 142 182 141 l 115 119 l 115 9 b 115 -99 115 -51 115 -99 b 141 -91 115 -99 127 -95 b 171 -81 166 -81 167 -81 l 171 -81 b 191 -94 181 -81 189 -87 b 193 -142 191 -97 193 -120 b 191 -195 193 -167 191 -194 b 125 -227 187 -205 187 -204 l 115 -230 l 115 -366 l 115 -503 l 114 -506 b 95 -519 110 -514 102 -519 b 74 -506 87 -519 78 -514 l 73 -503 l 73 -374 b 73 -245 73 -260 73 -245 b 73 -245 73 -245 73 -245 b 55 -252 72 -245 63 -249 l 32 -260 b 19 -263 27 -262 23 -263 b 4 -256 13 -263 8 -260 b 0 -215 0 -251 0 -254 b 0 -199 0 -210 0 -206 l 0 -152 l 1 -149 b 8 -140 2 -145 5 -141 b 42 -127 9 -140 24 -133 l 73 -116 l 73 -5 b 73 23 73 4 73 15 b 73 105 73 70 73 105 b 49 97 73 105 61 101 b 17 88 32 91 23 88 b 4 95 10 88 8 91 b 0 137 0 101 0 98 b 0 151 0 141 0 145 l 0 199 l 1 202 b 43 224 5 212 5 212 l 73 234 l 73 367 l 73 502 l 74 505 b 85 514 77 509 81 513 ' + }, + 'accidentalThreeQuarterTonesSharpStein': { + 'x_min': -1.359375, + 'x_max': 455.96875, + 'ha': 465, + 'o': 'm 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 ' + }, + 'accidentalBuyukMucennebFlat': { + 'x_min': -171.5, + 'x_max': 251.8125, + 'ha': 257, + 'o': 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 553 20 616 20 614 b 20 491 20 503 20 491 l 20 491 b 153 535 47 501 149 535 b 174 514 167 535 174 524 b 164 496 174 508 171 501 b 92 470 164 495 132 484 l 20 445 l 20 390 b 20 363 20 378 20 370 b 20 333 20 340 20 333 l 20 333 b 153 377 47 344 149 377 b 174 356 167 377 174 367 b 164 338 174 349 171 342 b 92 312 164 338 132 326 l 20 288 l 20 219 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b -1 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 30 -21 -212 -21 -212 b -21 273 -21 163 -21 273 b -84 252 -21 273 -50 263 b -152 230 -133 234 -145 230 b -157 231 -155 230 -156 231 b -171 252 -166 234 -171 244 b -160 270 -171 259 -167 266 b -27 316 -159 270 -93 294 l -21 319 l -21 374 b -21 431 -21 406 -21 431 b -84 409 -21 431 -50 421 b -152 388 -133 392 -145 388 b -157 390 -155 388 -156 388 b -171 409 -166 392 -171 401 b -160 428 -171 417 -167 424 b -27 474 -159 428 -93 451 l -21 476 l -21 546 b -20 620 -21 614 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ' + }, + 'accidentalBakiyeFlat': { + 'x_min': -176.9375, + 'x_max': 251.8125, + 'ha': 257, + 'o': 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 503 20 616 20 614 b 20 391 20 442 20 391 b 84 424 20 391 49 406 l 147 456 l 152 456 b 153 456 153 456 153 456 b 175 435 166 456 175 446 b 172 427 175 433 174 430 b 92 380 170 420 172 421 l 20 342 l 20 245 l 20 148 l 21 151 b 137 199 59 183 99 199 b 182 191 152 199 167 197 b 251 84 227 176 251 134 b 228 0 251 58 243 29 b 100 -142 206 -40 178 -72 l 23 -215 b 0 -229 9 -229 6 -229 b -20 -216 -9 -229 -17 -224 b -21 54 -21 -212 -21 -212 b -21 322 -21 201 -21 322 b -85 290 -21 322 -50 308 l -148 256 l -153 256 b -155 256 -155 256 -155 256 b -176 277 -167 256 -176 266 b -174 285 -176 280 -175 283 b -93 333 -171 294 -174 292 l -21 370 l -21 494 b -20 620 -21 616 -21 616 b -8 631 -17 624 -13 630 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 ' + }, + 'accidentalKomaSharp': { + 'x_min': -1.359375, + 'x_max': 455.96875, + 'ha': 465, + 'o': 'm 352 541 b 357 542 353 542 355 542 b 377 530 364 542 372 537 l 378 526 l 378 394 l 379 262 l 404 266 b 436 270 420 269 430 270 b 450 265 443 270 446 269 b 455 220 455 259 455 260 l 455 208 l 455 161 l 454 156 b 411 140 449 147 447 147 b 378 133 393 137 379 134 b 378 68 378 133 378 106 b 378 22 378 54 378 38 l 379 -87 l 404 -83 b 436 -79 420 -80 430 -79 b 450 -84 443 -79 446 -80 b 455 -129 455 -90 455 -88 l 455 -141 l 455 -188 l 454 -192 b 413 -209 449 -202 447 -202 b 382 -215 398 -212 383 -215 l 378 -215 l 378 -345 l 378 -380 b 375 -485 378 -484 378 -480 b 357 -494 371 -491 364 -494 b 340 -485 351 -494 344 -491 b 336 -383 337 -480 336 -484 l 336 -349 l 336 -223 l 334 -223 b 291 -231 334 -223 314 -227 l 247 -240 l 247 -371 l 246 -503 l 245 -506 b 225 -519 242 -514 234 -519 b 206 -506 219 -519 210 -514 l 205 -503 l 205 -376 l 205 -248 l 160 -256 l 115 -265 l 115 -396 l 115 -527 l 114 -531 b 95 -544 110 -539 102 -544 b 76 -531 87 -544 78 -539 l 73 -527 l 73 -399 b 73 -273 73 -330 73 -273 b 49 -277 73 -273 61 -274 b 17 -281 32 -280 24 -281 b 4 -276 10 -281 8 -280 b -1 -234 0 -269 -1 -272 b 0 -219 -1 -229 0 -224 l 0 -170 l 1 -167 b 10 -158 2 -163 6 -159 b 49 -149 13 -156 16 -155 l 73 -145 l 73 -34 b 73 76 73 26 73 76 b 49 72 73 76 61 74 b 17 68 32 69 24 68 b 4 73 10 68 8 69 b -1 115 0 80 -1 77 b 0 130 -1 120 0 124 l 0 179 l 1 181 b 10 191 2 186 6 190 b 49 199 13 192 16 194 l 73 204 l 73 338 b 73 374 73 352 73 365 b 77 483 73 484 73 477 b 95 492 81 489 88 492 b 111 483 100 492 107 489 b 115 378 115 477 115 483 l 115 342 b 117 212 115 223 115 212 b 204 229 117 212 200 227 l 205 229 l 205 365 l 205 502 l 206 505 b 225 517 210 513 219 517 b 245 505 234 517 242 513 l 246 502 l 247 369 l 247 237 l 249 237 b 336 254 253 238 336 254 b 337 390 336 254 337 302 l 337 526 l 338 530 b 352 541 341 535 347 539 m 336 15 b 336 126 336 102 336 126 l 336 126 b 291 117 336 126 315 122 l 247 109 l 247 -1 l 247 -112 l 249 -112 b 336 -95 253 -111 336 -95 b 336 15 336 -95 336 -56 m 205 -120 b 205 -55 205 -120 205 -93 b 205 -9 205 -41 205 -24 l 205 101 l 160 93 l 115 84 l 115 -26 b 115 -83 115 -49 115 -69 b 117 -137 115 -133 115 -137 b 205 -120 118 -137 204 -120 ' + }, + 'accidentalKucukMucennebSharp': { + 'x_min': -1.359375, + 'x_max': 255.890625, + 'ha': 261, + 'o': 'm 118 514 b 127 517 121 517 122 517 b 147 505 136 517 142 513 l 148 502 l 148 403 b 148 306 148 351 148 306 b 174 315 149 306 160 310 l 200 324 l 205 323 b 223 312 213 323 220 319 l 225 308 l 225 260 b 225 245 225 255 225 249 b 220 204 225 208 224 209 b 179 188 216 199 215 199 l 148 177 l 148 124 l 148 70 l 189 84 b 236 98 219 94 230 98 b 247 94 240 98 243 97 b 255 52 254 88 255 87 b 255 33 255 47 255 40 l 254 -12 l 253 -15 b 249 -22 253 -18 250 -20 l 245 -24 l 196 -41 l 148 -58 l 148 -108 b 148 -158 148 -136 148 -158 b 174 -148 148 -158 160 -154 b 204 -140 198 -140 200 -140 l 204 -140 b 224 -152 213 -140 221 -145 b 225 -201 224 -155 225 -177 b 224 -254 225 -226 224 -251 b 157 -284 220 -262 220 -262 l 148 -288 l 148 -395 l 148 -503 l 147 -506 b 127 -519 142 -514 134 -519 b 107 -506 119 -519 111 -514 l 106 -503 l 106 -403 b 106 -303 106 -316 106 -303 b 104 -303 104 -303 104 -303 b 88 -310 104 -303 96 -306 l 63 -319 b 51 -322 59 -320 55 -322 b 36 -315 46 -322 40 -319 b 31 -273 32 -309 31 -312 b 31 -258 31 -269 31 -263 l 31 -210 l 34 -206 b 40 -198 35 -204 38 -199 b 74 -186 42 -197 57 -191 l 106 -173 l 106 -123 b 106 -97 106 -112 106 -104 b 106 -72 106 -76 106 -72 b 104 -72 106 -72 106 -72 b 20 -99 89 -79 23 -99 b 0 -84 10 -99 2 -93 b -1 -37 0 -81 -1 -59 b 0 11 -1 -15 0 9 b 58 40 4 22 2 22 l 106 56 l 106 109 b 106 123 106 115 106 119 b 106 162 106 147 106 162 b 81 155 106 162 93 159 b 50 147 65 149 55 147 b 36 152 43 147 40 148 b 31 194 32 158 31 156 b 31 209 31 198 31 204 l 31 256 l 34 260 b 76 281 38 269 38 269 l 106 292 l 106 396 l 106 502 l 107 505 b 118 514 110 509 114 513 ' + }, + 'articAccentAbove': { + 'x_min': -348.4375, + 'x_max': 24.5, + 'ha': 25, + 'o': 'm -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 ' + }, + 'articAccentBelow': { + 'x_min': -348.4375, + 'x_max': 24.5, + 'ha': 25, + 'o': 'm -330 155 b -322 156 -329 156 -326 156 b -315 156 -319 156 -317 156 b -298 147 -311 155 -308 154 b -19 30 -224 98 -122 55 l 2 26 b 24 -1 17 22 24 13 b 2 -27 24 -15 17 -23 l -19 -31 b -298 -148 -122 -56 -224 -99 b -322 -158 -313 -158 -315 -158 b -348 -131 -338 -158 -348 -145 b -344 -117 -348 -127 -347 -122 b -328 -104 -341 -112 -338 -111 b -127 -8 -269 -65 -202 -33 b -106 0 -115 -4 -106 -1 b -127 6 -106 0 -115 2 b -328 102 -202 31 -269 63 b -344 116 -338 109 -341 111 b -348 130 -347 120 -348 124 b -330 155 -348 141 -341 152 ' + }, + 'articTenutoAbove': { + 'x_min': 0, + 'x_max': 318.5, + 'ha': 325, + 'o': 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ' + }, + 'articTenutoBelow': { + 'x_min': 0, + 'x_max': 318.5, + 'ha': 325, + 'o': 'm 20 376 b 167 377 23 377 96 377 b 296 376 231 377 294 377 b 318 347 311 371 318 359 b 296 316 318 333 311 320 b 159 315 294 315 227 315 b 21 316 91 315 24 315 b 0 345 6 320 0 333 b 20 376 0 359 6 371 ' + }, + 'articStaccatoAbove': { + 'x_min': 0, + 'x_max': 133.390625, + 'ha': 136, + 'o': 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ' + }, + 'articStaccatoBelow': { + 'x_min': 0, + 'x_max': 133.390625, + 'ha': 136, + 'o': 'm 54 66 b 65 68 58 68 61 68 b 122 37 88 68 110 56 b 133 -1 130 26 133 12 b 104 -58 133 -23 123 -44 b 66 -69 92 -65 78 -69 b 10 -38 44 -69 23 -58 b 0 -1 2 -27 0 -13 b 54 66 0 30 20 61 ' + }, + 'articStaccatissimoAbove': { + 'x_min': -73.5, + 'x_max': 72.140625, + 'ha': 74, + 'o': 'm -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 ' + }, + 'articStaccatissimoBelow': { + 'x_min': -73.5, + 'x_max': 72.140625, + 'ha': 74, + 'o': 'm -72 252 l -73 254 l 0 254 l 72 254 l 70 252 b 0 -1 70 248 0 -1 b -72 252 -1 -1 -72 248 ' + }, + 'articMarcatoAbove': { + 'x_min': -149.71875, + 'x_max': 148.359375, + 'ha': 151, + 'o': 'm -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 ' + }, + 'articMarcatoBelow': { + 'x_min': -149.71875, + 'x_max': 148.359375, + 'ha': 151, + 'o': 'm -8 -1 b -1 0 -5 -1 -4 0 b 16 -11 5 0 13 -4 b 83 -186 17 -12 47 -90 l 148 -358 l 148 -363 b 127 -385 148 -376 138 -385 b 112 -378 122 -385 118 -383 b 54 -226 110 -374 114 -385 b 0 -81 24 -147 0 -81 b -55 -226 -1 -81 -25 -147 b -114 -378 -115 -385 -111 -374 b -129 -385 -119 -383 -123 -385 b -149 -363 -140 -385 -149 -376 l -149 -358 l -84 -186 b -19 -11 -49 -90 -19 -12 b -8 -1 -17 -8 -12 -4 ' + }, + 'fermataAbove': { + 'x_min': -442.359375, + 'x_max': 441, + 'ha': 450, + 'o': 'm -31 487 b -1 488 -21 488 -10 488 b 434 104 216 488 397 330 b 441 27 438 79 441 47 b 439 12 441 20 439 15 b 419 0 435 4 427 0 b 404 5 413 0 408 1 b 398 30 400 11 398 13 b 0 351 390 213 213 351 b -59 348 -20 351 -39 349 b -400 30 -251 324 -393 191 b -405 5 -400 13 -401 11 b -420 0 -409 1 -415 0 b -441 12 -428 0 -436 4 b -442 27 -441 15 -442 20 b -435 104 -442 47 -439 79 b -31 487 -401 316 -235 474 m -13 131 b -1 133 -9 133 -5 133 b 51 105 19 133 39 123 b 61 70 58 95 61 83 b 51 34 61 58 58 45 b -1 6 39 16 19 6 b -46 27 -17 6 -34 13 b -62 69 -57 38 -62 54 b -13 131 -62 98 -44 124 ' + }, + 'fermataBelow': { + 'x_min': -441, + 'x_max': 439.640625, + 'ha': 449, + 'o': 'm -428 -2 b -421 0 -427 -1 -424 0 b -406 -6 -416 0 -409 -2 b -400 -31 -401 -12 -400 -15 b -1 -352 -392 -215 -215 -352 b 58 -349 19 -352 38 -351 b 398 -31 250 -326 392 -192 b 404 -6 398 -15 400 -12 b 419 -1 408 -2 413 -1 b 439 -13 427 -1 435 -5 b 439 -29 439 -16 439 -22 b 434 -105 439 -48 438 -80 b 0 -489 397 -333 213 -489 b -68 -484 -23 -489 -44 -488 b -441 -36 -280 -452 -436 -263 b -441 -30 -441 -34 -441 -31 b -428 -2 -441 -11 -439 -5 m -13 -9 b -1 -8 -9 -8 -5 -8 b 50 -36 19 -8 39 -19 b 61 -72 57 -47 61 -59 b 50 -106 61 -84 57 -97 b -1 -134 39 -124 19 -134 b -46 -115 -17 -134 -34 -129 b -62 -72 -57 -102 -62 -87 b -13 -9 -62 -44 -44 -16 ' + }, + 'breathMarkComma': { + 'x_min': -1.359375, + 'x_max': 193.28125, + 'ha': 197, + 'o': 'm 78 233 b 87 233 81 233 84 233 b 187 140 132 233 174 195 b 193 102 190 127 193 115 b 43 -113 193 22 136 -62 b 27 -119 36 -116 31 -119 b 19 -108 21 -119 19 -115 b 29 -97 19 -102 20 -101 b 102 13 73 -72 102 -27 b 92 51 102 26 98 40 l 91 54 l 84 54 b 8 104 53 54 21 74 b -1 142 1 116 -1 130 b 78 233 -1 187 31 227 ' + }, + 'breathMarkUpbow': { + 'x_min': -170.140625, + 'x_max': 168.78125, + 'ha': 172, + 'o': 'm -160 567 b -122 567 -159 567 -149 567 l -87 567 l -84 566 b -74 553 -78 563 -77 560 b -20 366 -73 551 -49 466 b 31 186 8 267 31 186 b 85 371 31 186 55 269 b 140 559 114 473 138 557 b 153 567 141 564 148 567 b 168 559 159 567 166 564 b 168 555 168 557 168 557 b 92 281 168 548 159 513 b 14 13 50 134 14 13 b 0 0 14 6 6 0 b -17 15 -8 0 -17 8 b -93 283 -17 15 -51 136 b -170 552 -166 533 -170 548 b -170 553 -170 552 -170 552 b -160 567 -170 560 -167 564 ' + }, + 'caesura': { + 'x_min': 0, + 'x_max': 622.03125, + 'ha': 635, + 'o': 'm 398 417 b 406 419 401 419 404 419 b 427 398 417 419 427 409 b 427 391 427 395 427 392 b 34 -274 424 385 38 -272 b 20 -280 29 -278 25 -280 b 0 -259 9 -280 0 -270 b 0 -252 0 -256 0 -254 b 393 413 2 -247 389 410 b 398 417 394 415 397 416 m 592 417 b 600 419 594 419 597 419 b 622 398 611 419 622 409 b 620 391 622 395 620 392 b 227 -274 617 385 231 -272 b 213 -280 223 -278 219 -280 b 193 -259 202 -280 193 -270 b 194 -252 193 -256 193 -254 b 586 413 196 -247 582 410 b 592 417 588 415 590 416 ' + }, + 'caesuraCurved': { + 'x_min': 0, + 'x_max': 503.609375, + 'ha': 514, + 'o': 'm 274 430 b 277 430 276 430 277 430 b 310 394 296 430 310 415 b 308 383 310 391 308 387 b 306 367 307 381 307 374 b 236 120 298 305 272 210 b 40 -273 189 -5 125 -134 b 20 -287 35 -283 27 -287 b 5 -281 14 -287 9 -285 b 0 -267 1 -277 0 -273 b 9 -242 0 -262 2 -255 b 246 395 137 -12 232 242 b 274 430 249 416 257 427 m 468 430 b 472 430 469 430 470 430 b 503 394 490 430 503 415 b 502 383 503 391 503 387 b 499 367 502 381 500 374 b 431 120 491 305 465 210 b 234 -273 382 -5 318 -134 b 213 -287 228 -283 220 -287 b 198 -281 208 -287 202 -285 b 193 -267 194 -277 193 -273 b 202 -242 193 -262 196 -255 b 439 395 330 -12 426 242 b 468 430 442 416 451 427 ' + }, + 'restMaxima': { + 'x_min': 0, + 'x_max': 464.140625, + 'ha': 474, + 'o': 'm 0 0 l 0 347 l 76 347 l 153 347 l 153 0 l 153 -348 l 76 -348 l 0 -348 l 0 0 m 308 -1 l 308 347 l 386 347 l 464 347 l 464 -1 l 464 -348 l 386 -348 l 308 -348 l 308 -1 ' + }, + 'restDoubleWhole': { + 'x_min': 0, + 'x_max': 386.5625, + 'ha': 394, + 'o': 'm 0 173 l 0 347 l 193 347 l 386 347 l 386 173 l 386 0 l 193 0 l 0 0 l 0 173 ' + }, + 'restWhole': { + 'x_min': 0, + 'x_max': 447.8125, + 'ha': 457, + 'o': 'm 0 -87 l 0 0 l 223 0 l 447 0 l 447 -87 l 447 -174 l 223 -174 l 0 -174 l 0 -87 ' + }, + 'restHalf': { + 'x_min': 0, + 'x_max': 447.8125, + 'ha': 457, + 'o': 'm 0 86 l 0 173 l 223 173 l 447 173 l 447 86 l 447 0 l 223 0 l 0 0 l 0 86 ' + }, + 'restQuarter': { + 'x_min': 0, + 'x_max': 300.8125, + 'ha': 307, + 'o': 'm 49 505 b 53 506 50 505 51 506 b 70 496 58 506 62 503 b 81 485 73 492 78 488 l 96 473 l 111 459 l 122 449 l 134 438 l 182 396 l 255 330 b 292 291 292 298 292 298 l 292 290 l 292 284 l 283 270 b 209 36 234 197 209 113 b 288 -170 209 -44 235 -119 b 299 -184 295 -179 299 -181 b 300 -191 300 -187 300 -188 b 285 -206 300 -199 294 -206 b 280 -206 283 -206 281 -206 b 247 -201 270 -202 259 -201 b 176 -222 223 -201 197 -208 b 114 -340 136 -249 114 -292 b 172 -471 114 -384 134 -433 b 185 -492 182 -481 185 -487 b 181 -502 185 -496 183 -499 b 171 -508 176 -505 174 -508 b 152 -498 166 -508 160 -503 b 0 -284 65 -428 12 -352 b 0 -260 0 -278 0 -270 b 1 -238 0 -252 0 -242 b 148 -140 16 -177 73 -140 b 209 -148 167 -140 189 -142 b 215 -149 212 -148 215 -149 b 215 -149 215 -149 215 -149 l 215 -149 b 201 -136 215 -148 209 -142 l 157 -97 l 96 -41 b 17 34 21 24 17 29 b 17 37 17 36 17 36 b 17 38 17 37 17 38 b 25 56 17 44 17 44 b 110 298 81 131 110 219 b 46 474 110 367 88 431 b 38 491 40 480 38 487 b 49 505 38 498 42 502 ' + }, + 'rest8th': { + 'x_min': 0, + 'x_max': 349.8125, + 'ha': 357, + 'o': 'm 88 302 b 103 303 93 302 98 303 b 202 224 149 303 191 270 b 205 199 204 216 205 208 b 178 129 205 173 196 147 l 175 126 l 182 127 b 307 249 236 142 284 190 b 313 259 308 254 311 258 b 329 267 317 265 323 267 b 349 247 340 267 349 259 b 201 -263 349 242 204 -258 b 182 -273 197 -270 190 -273 b 163 -260 174 -273 166 -269 b 161 -256 161 -259 161 -258 b 217 -59 161 -248 170 -220 b 272 129 247 43 272 127 b 272 129 272 129 272 129 b 264 122 272 129 268 126 b 140 80 227 94 183 80 b 36 115 102 80 65 91 b 0 194 10 136 0 165 b 88 302 0 244 32 292 ' + }, + 'rest16th': { + 'x_min': 0, + 'x_max': 450.53125, + 'ha': 460, + 'o': 'm 189 302 b 204 303 193 302 198 303 b 303 224 250 303 292 270 b 306 199 304 216 306 208 b 279 129 306 173 296 147 l 276 126 l 281 127 b 408 249 337 142 385 190 b 412 259 409 254 412 258 b 430 267 417 265 423 267 b 450 247 441 267 450 259 b 200 -605 450 242 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 194 111 136 99 165 b 189 302 99 244 133 292 ' + }, + 'rest32nd': { + 'x_min': 0, + 'x_max': 551.25, + 'ha': 563, + 'o': 'm 289 644 b 304 645 294 645 299 645 b 404 566 349 645 392 613 b 406 541 405 557 406 549 b 379 471 406 514 397 489 l 377 467 l 382 470 b 509 591 438 485 485 531 b 513 601 510 595 513 599 b 530 609 518 607 524 609 b 551 588 540 609 551 602 b 200 -605 551 584 204 -599 b 182 -616 197 -612 190 -616 b 163 -602 174 -616 166 -610 b 161 -598 161 -601 161 -601 b 217 -402 161 -589 170 -562 b 272 -213 247 -298 272 -213 b 272 -213 272 -213 272 -213 b 264 -219 272 -213 268 -216 b 140 -262 227 -247 182 -262 b 36 -226 102 -262 65 -249 b 0 -145 12 -206 0 -176 b 17 -84 0 -124 5 -104 b 103 -38 38 -54 70 -38 b 191 -91 137 -38 172 -56 b 205 -141 201 -106 205 -124 b 178 -212 205 -167 196 -194 l 175 -215 l 182 -213 b 307 -93 236 -198 284 -151 b 372 129 308 -88 372 127 b 372 129 372 129 372 129 b 364 122 372 129 368 126 b 240 80 328 94 283 80 b 137 115 202 80 166 91 b 99 195 112 136 99 165 b 118 256 99 217 106 238 b 204 303 138 287 171 303 b 292 249 238 303 273 285 b 306 199 302 234 306 217 b 279 129 306 173 296 148 l 276 126 l 281 127 b 408 248 336 142 385 190 b 473 470 409 254 473 469 b 473 470 473 470 473 470 b 465 464 473 470 469 467 b 341 421 428 435 383 421 b 236 458 303 421 266 433 b 200 537 212 478 200 508 b 289 644 200 585 234 635 ' + }, + 'rest64th': { + 'x_min': -1.359375, + 'x_max': 651.96875, + 'ha': 665, + 'o': 'm 389 644 b 405 645 394 645 400 645 b 504 566 450 645 492 613 b 507 541 506 557 507 549 b 480 471 507 514 498 489 l 477 467 l 483 470 b 609 591 539 485 586 531 b 613 601 611 595 613 599 b 631 609 619 607 624 609 b 651 588 641 609 651 602 b 200 -946 651 584 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 537 313 478 300 508 b 389 644 300 585 334 635 ' + }, + 'rest128th': { + 'x_min': -1.359375, + 'x_max': 752.703125, + 'ha': 768, + 'o': 'm 490 985 b 504 986 495 986 500 986 b 604 907 551 986 593 954 b 607 884 607 900 607 892 b 581 813 607 857 597 831 l 578 810 l 583 811 b 710 932 638 827 687 873 b 714 943 711 936 713 942 b 730 952 720 949 725 952 b 752 931 741 952 752 943 b 200 -946 752 927 204 -941 b 182 -957 197 -953 190 -957 b 163 -945 174 -957 166 -953 b 161 -939 161 -942 161 -942 b 217 -743 161 -931 170 -904 b 272 -555 247 -639 272 -555 b 272 -555 272 -555 272 -555 b 264 -560 272 -555 268 -557 b 140 -603 227 -589 182 -603 b 36 -567 102 -603 65 -592 b -1 -487 12 -548 -1 -517 b 17 -427 -1 -466 5 -445 b 103 -380 38 -395 70 -380 b 191 -433 137 -380 172 -398 b 205 -484 201 -448 205 -466 b 178 -553 205 -509 196 -535 l 175 -557 l 182 -555 b 307 -435 236 -539 284 -494 b 372 -213 308 -430 372 -215 b 372 -213 372 -213 372 -213 b 364 -219 372 -213 368 -216 b 240 -262 328 -247 283 -262 b 137 -226 202 -262 166 -249 b 99 -145 112 -206 99 -176 b 118 -84 99 -124 106 -104 b 204 -38 138 -54 171 -38 b 292 -91 238 -38 273 -56 b 306 -141 302 -106 306 -124 b 279 -212 306 -167 296 -194 l 276 -215 l 281 -213 b 408 -93 336 -198 385 -151 b 473 129 409 -88 473 127 b 473 129 473 129 473 129 b 465 122 473 129 469 126 b 341 80 428 94 383 80 b 236 115 303 80 266 91 b 200 195 213 136 200 165 b 217 256 200 217 206 238 b 304 303 239 287 272 303 b 393 249 338 303 374 285 b 406 199 402 234 406 217 b 379 129 406 173 397 148 l 377 126 l 382 127 b 509 248 436 142 485 190 b 574 470 510 254 574 469 b 574 470 574 470 574 470 b 566 464 574 470 570 467 b 442 421 529 435 484 421 b 337 458 404 421 367 433 b 300 538 314 477 300 508 b 318 598 300 559 306 580 b 404 645 340 630 372 645 b 494 592 439 645 475 627 b 507 541 502 577 507 559 b 480 471 507 516 498 489 l 477 467 l 483 470 b 608 589 537 485 586 531 b 675 811 611 595 675 810 b 675 811 675 811 675 811 b 666 806 675 811 671 809 b 543 763 628 777 585 763 b 438 799 504 763 468 775 b 401 878 412 820 401 849 b 490 985 401 928 434 977 ' + }, + 'dynamicPiano': { + 'x_min': -53.078125, + 'x_max': 513.140625, + 'ha': 485, + 'o': 'm 185 383 b 196 384 187 383 191 384 b 277 334 230 384 259 365 b 288 301 281 324 288 306 b 288 297 288 298 288 297 b 294 302 289 297 291 299 b 394 370 323 338 367 367 b 404 371 398 370 401 371 b 510 272 453 371 498 328 b 513 237 513 262 513 251 b 507 172 513 217 511 192 b 326 -34 487 59 412 -26 b 314 -36 322 -36 318 -36 b 274 -24 298 -36 283 -31 l 265 -16 b 224 44 246 -1 232 20 b 223 49 224 47 223 49 b 223 49 223 49 223 49 b 149 -197 221 48 149 -194 b 149 -198 149 -197 149 -198 b 170 -210 149 -202 155 -205 b 187 -215 174 -210 175 -212 b 204 -231 201 -219 204 -222 b 197 -245 204 -240 202 -242 l 194 -248 l 76 -248 l -42 -248 l -46 -245 b -53 -231 -51 -242 -53 -240 b -35 -215 -53 -222 -49 -217 b -13 -210 -21 -212 -20 -212 b -6 -208 -10 -209 -8 -208 b 0 -206 -6 -208 -2 -206 b 25 -188 13 -201 21 -195 b 163 280 28 -183 163 276 b 166 291 163 283 164 287 b 167 302 167 295 167 299 b 155 324 167 315 161 324 b 155 324 155 324 155 324 b 65 230 125 322 85 280 b 53 215 61 217 58 215 b 51 215 53 215 51 215 b 42 224 46 215 42 217 b 57 263 42 231 47 244 b 140 360 77 305 104 337 b 152 370 144 365 149 369 b 185 383 157 376 172 381 m 374 306 b 366 308 371 308 368 308 b 300 273 348 308 321 294 b 284 254 288 262 287 259 b 280 242 283 249 281 245 b 257 169 279 240 270 213 l 236 98 l 236 93 b 251 48 238 77 243 61 b 279 27 258 37 272 27 b 281 27 279 27 280 27 b 291 31 281 27 287 30 b 396 170 334 52 378 109 b 406 247 402 197 406 224 b 401 277 406 259 405 270 b 374 306 397 290 383 303 ' + }, + 'dynamicMezzo': { + 'x_min': 46.28125, + 'x_max': 669.671875, + 'ha': 563, + 'o': 'm 183 376 b 189 376 185 376 187 376 b 212 374 197 376 208 376 b 265 337 234 369 253 355 b 274 317 268 331 273 320 b 274 316 274 317 274 316 b 280 323 276 316 276 319 b 311 358 288 337 299 348 b 319 366 315 360 318 365 b 356 376 326 373 340 376 b 382 371 364 376 374 374 b 428 337 400 366 417 352 b 436 317 431 331 436 320 b 438 316 436 317 436 316 b 442 323 438 316 439 319 b 475 358 451 337 462 348 b 483 366 477 360 481 365 b 518 376 488 373 503 376 b 544 373 528 376 536 376 b 604 285 579 360 604 326 b 597 249 604 273 601 258 b 543 63 596 247 544 70 b 541 54 543 61 541 55 b 540 44 540 51 540 47 b 552 23 540 33 545 23 b 552 23 552 23 552 23 b 647 126 586 29 627 72 b 658 138 651 136 653 138 b 660 138 660 138 660 138 b 669 129 666 137 669 136 b 654 88 669 122 665 109 b 562 -12 631 43 602 9 l 549 -19 b 521 -27 540 -24 530 -27 b 447 30 490 -27 458 -4 b 443 58 445 38 443 48 b 450 93 443 72 446 84 b 504 278 453 97 504 272 b 507 288 506 283 506 287 b 509 298 507 292 509 295 b 491 326 509 310 502 320 b 487 327 490 327 488 327 b 479 324 484 327 483 326 b 441 270 462 316 443 288 b 435 249 441 265 436 254 b 398 127 434 248 419 195 b 362 4 379 61 362 5 b 328 -1 359 -1 362 -1 b 314 -1 323 -1 319 -1 b 302 -1 310 -1 306 -1 b 266 4 266 -1 269 -1 b 265 6 265 5 265 5 b 303 144 265 13 272 34 b 343 278 325 216 343 276 b 344 288 343 281 344 285 b 345 298 345 291 345 295 b 330 326 345 310 340 320 b 323 327 328 327 325 327 b 317 324 322 327 321 326 b 279 270 300 316 281 288 b 273 249 279 265 274 254 b 236 127 272 248 255 195 b 200 4 216 61 200 5 b 164 -1 197 -1 198 -1 b 151 -1 161 -1 156 -1 b 140 -1 147 -1 142 -1 b 103 4 104 -1 106 -1 b 103 6 103 5 103 5 b 141 144 103 13 108 34 b 181 278 161 216 179 276 b 182 288 181 281 181 285 b 183 298 182 291 183 295 b 168 324 183 310 178 320 b 160 327 166 326 163 327 b 141 320 156 327 151 324 b 69 230 112 305 85 272 b 57 215 65 217 62 215 b 55 215 57 215 55 215 b 46 224 49 215 46 217 b 59 260 46 231 50 242 b 151 363 81 306 112 341 b 161 369 155 365 160 367 b 183 376 166 371 174 374 ' + }, + 'dynamicForte': { + 'x_min': -118.421875, + 'x_max': 597.53125, + 'ha': 381, + 'o': 'm 460 574 b 464 574 461 574 462 574 b 488 574 470 574 481 574 b 500 573 491 574 498 574 b 594 503 543 570 588 538 b 597 488 596 498 597 494 b 528 417 597 449 564 417 b 502 423 519 417 510 419 b 465 481 477 434 465 458 b 488 528 465 499 472 516 b 490 530 490 530 490 530 b 490 530 490 530 490 530 b 468 517 488 530 475 523 b 349 340 419 485 377 420 b 347 330 348 334 347 330 b 383 328 347 328 363 328 b 428 326 423 328 424 328 b 442 302 438 320 442 312 b 430 281 442 294 438 285 b 385 276 424 277 426 276 l 377 276 l 332 276 l 330 269 b 178 -117 303 126 250 -9 b 1 -249 129 -194 69 -237 b -20 -251 -6 -251 -13 -251 b -114 -187 -65 -251 -100 -227 b -118 -156 -117 -177 -118 -166 b -51 -84 -118 -116 -91 -84 b -31 -87 -46 -84 -39 -86 b 16 -152 0 -95 16 -124 b -12 -205 16 -173 8 -194 b -16 -208 -14 -206 -16 -208 b -14 -208 -16 -208 -14 -208 b -9 -206 -14 -208 -12 -208 b 74 -124 23 -197 54 -166 b 172 224 98 -79 125 22 b 185 276 178 252 183 274 b 185 276 185 276 185 276 b 141 276 185 276 181 276 b 91 280 96 276 96 276 b 77 302 83 285 77 294 b 91 326 77 312 83 320 b 148 328 95 328 96 328 l 198 330 l 202 341 b 460 574 249 473 351 566 ' + }, + 'dynamicRinforzando': { + 'x_min': 78.9375, + 'x_max': 485.921875, + 'ha': 417, + 'o': 'm 362 378 b 378 380 367 380 372 380 b 472 348 415 380 453 367 b 485 315 481 338 485 327 b 462 273 485 298 477 281 b 439 267 454 269 446 267 b 398 290 424 267 409 274 b 344 319 385 309 364 319 b 281 269 315 319 289 301 b 279 262 280 266 279 262 b 276 256 279 260 277 258 b 274 249 276 254 274 251 b 238 127 273 248 257 192 b 201 4 217 61 201 5 b 166 -1 198 -1 200 -1 b 153 -1 163 -1 157 -1 b 141 -1 148 -1 144 -1 b 104 4 106 -1 107 -1 b 104 6 104 5 104 5 b 142 144 104 13 110 34 b 182 278 164 219 181 276 b 183 288 182 281 182 285 b 185 302 185 292 185 298 b 164 330 185 317 176 328 b 159 330 163 330 161 330 b 102 302 140 330 119 320 b 91 294 95 295 93 294 b 88 294 91 294 89 294 b 78 303 83 294 78 298 b 81 312 78 306 78 309 b 200 373 106 347 160 373 b 215 371 205 373 209 371 b 266 335 235 367 254 353 b 269 331 268 333 269 331 b 269 331 269 331 269 331 b 273 335 269 331 270 334 b 362 378 298 359 330 376 ' + }, + 'dynamicSforzando': { + 'x_min': 70.78125, + 'x_max': 378.390625, + 'ha': 315, + 'o': 'm 246 373 b 254 373 249 373 251 373 b 372 324 303 373 360 351 b 378 302 377 317 378 309 b 338 251 378 278 362 255 b 328 249 334 249 332 249 b 283 294 303 249 283 270 b 288 315 283 301 284 308 b 289 319 289 317 289 319 b 289 319 289 319 289 319 b 283 320 289 320 287 320 b 270 322 279 322 274 322 b 206 288 242 322 215 308 b 206 283 206 287 206 285 b 257 223 206 267 230 238 b 284 206 272 213 277 210 b 351 90 328 173 351 130 b 340 47 351 74 348 59 b 205 -30 314 -2 264 -30 b 182 -29 198 -30 190 -30 b 84 15 147 -24 103 -5 b 70 48 74 24 70 36 b 108 99 70 70 85 94 b 121 102 112 101 117 102 b 167 56 147 102 167 80 b 159 31 167 48 164 40 l 156 26 l 157 26 b 190 20 167 22 178 20 b 220 26 201 20 212 22 b 258 65 243 34 258 51 b 257 70 258 66 258 69 b 204 126 249 94 234 109 b 114 258 148 158 114 209 b 125 302 114 273 118 288 b 246 373 147 342 193 370 ' + }, + 'dynamicZ': { + 'x_min': 29.9375, + 'x_max': 420.578125, + 'ha': 371, + 'o': 'm 115 345 b 221 347 117 345 166 347 b 411 345 306 347 409 345 b 420 330 416 342 420 335 b 415 319 420 326 419 321 b 178 118 397 303 179 118 b 178 117 178 118 178 117 b 181 117 178 117 178 117 b 189 117 182 117 185 117 b 193 117 190 117 191 117 b 247 98 215 117 232 111 b 296 75 266 83 280 76 b 302 75 299 75 300 75 b 322 91 311 75 315 79 b 322 91 322 91 322 91 b 322 91 322 91 322 91 b 319 91 322 91 321 91 b 313 90 318 90 315 90 b 283 107 300 90 288 97 b 277 126 279 114 277 121 b 319 167 277 149 295 167 b 319 167 319 167 319 167 b 362 118 347 167 362 147 b 355 82 362 108 359 96 b 311 33 349 65 340 55 b 224 1 284 12 253 1 b 194 5 213 1 204 2 b 168 18 183 8 178 11 b 110 36 151 30 130 36 b 57 15 88 36 68 29 b 47 11 54 12 51 11 b 31 20 40 11 34 13 b 29 26 31 22 29 25 b 68 66 29 36 39 45 b 285 250 73 71 281 248 b 285 250 285 250 285 250 b 231 252 285 252 261 252 b 137 250 190 252 141 250 b 93 227 122 248 110 241 b 78 220 88 222 83 220 b 66 227 74 220 70 222 b 63 234 65 229 63 231 b 85 291 63 241 69 252 b 115 345 108 342 108 344 ' + }, + 'ornamentTrill': { + 'x_min': -340.28125, + 'x_max': 338.921875, + 'ha': 346, + 'o': 'm -32 520 b -29 521 -31 520 -31 521 b -23 519 -27 521 -24 520 b -20 513 -21 517 -20 516 b -21 506 -20 512 -20 509 b -31 474 -23 502 -27 488 l -53 402 l -66 352 l -68 349 l -57 349 b -32 351 -51 349 -40 351 b 123 370 19 352 74 359 b 137 371 127 370 133 371 b 170 356 152 371 164 366 b 171 355 170 355 170 355 b 216 366 174 355 183 358 b 280 378 268 377 266 377 b 287 378 283 378 284 378 b 332 349 307 378 322 369 b 338 319 336 341 338 330 b 332 301 338 310 336 302 b 242 280 329 299 246 280 b 242 280 242 280 242 280 b 235 288 236 280 235 283 b 235 292 235 290 235 291 b 236 302 236 297 236 299 b 220 337 236 316 230 330 l 216 340 l 210 335 b 159 276 189 322 172 301 b 118 149 152 265 156 274 b 81 34 84 36 85 36 b -8 13 78 33 -4 13 b -8 13 -8 13 -8 13 b -14 20 -12 15 -14 15 b -8 44 -14 24 -12 31 b -2 66 -5 55 -2 65 b -2 66 -2 66 -2 66 l -2 66 b -43 41 -2 66 -21 55 b -114 4 -98 8 -98 8 b -144 0 -123 0 -134 0 b -242 99 -197 0 -242 43 b -242 109 -242 102 -242 105 b -212 219 -240 122 -242 116 b -185 312 -197 270 -185 312 l -185 312 b -189 312 -185 312 -186 312 b -259 312 -200 312 -227 312 b -321 310 -291 312 -310 310 b -334 312 -330 310 -334 312 b -340 319 -338 313 -340 316 b -336 326 -340 322 -338 324 b -291 337 -334 326 -314 331 l -247 347 l -210 348 b -172 348 -190 348 -172 348 b -168 363 -172 348 -171 355 b -145 442 -151 424 -145 441 b -133 452 -144 444 -140 446 l -77 489 b -32 520 -53 506 -32 520 m 57 334 b 53 335 55 335 54 335 b 44 334 50 335 49 335 b -70 316 8 326 -28 320 b -78 309 -78 316 -78 316 b -108 202 -80 305 -88 274 b -141 81 -136 112 -141 93 b -140 74 -141 79 -141 77 b -117 49 -137 59 -127 49 b -107 52 -114 49 -110 51 b 16 127 -106 54 14 126 b 42 217 16 127 42 215 b 49 241 42 222 44 229 b 73 320 53 251 73 317 b 57 334 73 327 65 333 ' + }, + 'ornamentTurn': { + 'x_min': -423.3125, + 'x_max': 421.9375, + 'ha': 431, + 'o': 'm -262 197 b -247 197 -257 197 -253 197 b -118 162 -210 197 -163 184 b 40 45 -61 134 -13 98 b 277 -95 119 -33 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -55 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 201 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 136 b 421 22 421 37 421 29 b 245 -199 421 -93 338 -199 b 238 -198 243 -199 240 -199 b -44 -47 148 -194 50 -141 b -250 86 -114 22 -183 66 b -295 94 -270 91 -283 94 b -315 91 -302 94 -307 94 b -381 4 -356 81 -381 43 b -355 -56 -381 -18 -372 -40 b -298 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -178 -69 -200 -58 -189 -62 b -151 -122 -160 -81 -151 -101 b -171 -167 -151 -138 -157 -155 b -239 -195 -185 -181 -213 -192 b -257 -197 -245 -197 -250 -197 b -423 -5 -352 -197 -423 -109 b -412 65 -423 16 -419 40 b -262 197 -389 137 -329 188 ' + }, + 'ornamentTurnSlash': { + 'x_min': -423.3125, + 'x_max': 421.9375, + 'ha': 431, + 'o': 'm -10 276 b -2 277 -8 277 -5 277 b 17 265 5 277 13 273 b 19 163 19 260 19 260 l 19 68 l 39 45 b 277 -95 122 -34 200 -81 b 289 -97 281 -97 285 -97 b 378 0 332 -97 371 -54 b 378 11 378 4 378 6 b 302 83 378 55 345 83 b 242 66 283 83 262 77 b 208 56 231 59 219 56 b 148 120 175 56 148 81 b 200 186 148 151 164 172 b 261 198 220 194 240 198 b 420 45 341 198 411 137 b 421 22 421 37 421 29 b 257 -198 421 -86 347 -188 b 242 -198 251 -198 247 -198 b 20 -105 181 -198 95 -163 l 19 -104 l 19 -183 b 19 -216 19 -195 19 -206 b 12 -273 19 -272 17 -267 b -2 -278 8 -277 2 -278 b -21 -266 -10 -278 -19 -274 b -23 -165 -23 -263 -23 -262 l -23 -69 l -44 -47 b -250 86 -117 23 -183 66 b -295 94 -270 93 -284 94 b -315 91 -302 94 -308 94 b -381 5 -356 81 -381 43 b -355 -56 -381 -16 -372 -40 b -299 -81 -338 -73 -319 -81 b -246 -68 -283 -81 -265 -77 b -212 -58 -234 -61 -223 -58 b -168 -77 -196 -58 -179 -65 b -151 -122 -156 -90 -151 -105 b -179 -174 -151 -141 -160 -162 b -239 -195 -194 -184 -217 -192 b -257 -197 -245 -195 -250 -197 b -423 -5 -349 -197 -423 -113 b -423 0 -423 -4 -423 -1 b -277 194 -420 97 -362 173 b -247 197 -268 197 -258 197 b -24 104 -185 197 -100 162 l -23 102 l -23 181 b -21 265 -23 260 -23 260 b -10 276 -20 269 -14 274 ' + }, + 'ornamentMordent': { + 'x_min': -402.890625, + 'x_max': 401.53125, + 'ha': 410, + 'o': 'm -10 273 b -4 274 -9 273 -6 274 b 16 262 4 274 12 269 b 17 158 17 259 17 259 l 17 56 l 62 112 b 117 174 110 172 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b 21 -6 27 0 24 -2 l 17 -12 l 17 -147 b 17 -210 17 -173 17 -194 b 10 -292 17 -297 16 -287 b -2 -299 6 -297 2 -299 b -21 -287 -10 -299 -19 -295 b -24 -174 -23 -284 -23 -284 l -24 -63 l -66 -117 b -121 -176 -110 -170 -114 -176 b -125 -176 -122 -176 -123 -176 b -296 -12 -134 -174 -125 -184 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 170 -398 -43 -231 165 b -212 174 -221 173 -216 174 b -202 173 -208 174 -205 174 b -39 11 -200 172 -151 122 l -28 -1 l -25 1 l -24 4 l -24 130 b -23 260 -24 256 -24 258 b -10 273 -20 266 -16 270 ' + }, + 'ornamentShortTrill': { + 'x_min': -402.890625, + 'x_max': 401.53125, + 'ha': 410, + 'o': 'm -219 173 b -213 174 -217 174 -215 174 b -202 173 -209 174 -205 173 b -114 86 -200 172 -179 151 b -28 0 -66 37 -28 0 b 40 84 -28 0 2 37 b 117 174 111 173 110 172 b 122 174 118 174 119 174 b 132 173 125 174 129 173 b 295 11 134 172 171 134 l 307 -1 l 336 34 b 374 76 366 72 368 74 b 381 77 375 77 378 77 b 401 56 392 77 401 68 b 400 48 401 54 401 51 b 223 -172 397 41 230 -166 b 210 -176 220 -174 215 -176 b 201 -174 206 -176 204 -176 b 112 -87 198 -173 178 -152 b 27 0 65 -38 27 0 b -42 -86 27 0 -4 -38 b -118 -174 -112 -174 -111 -173 b -123 -176 -119 -176 -121 -176 b -133 -174 -126 -176 -130 -174 b -296 -12 -136 -173 -172 -137 l -308 0 l -337 -34 b -375 -77 -367 -73 -370 -76 b -382 -79 -377 -79 -379 -79 b -402 -58 -393 -79 -402 -69 b -401 -49 -402 -55 -402 -52 b -224 172 -398 -43 -228 167 b -219 173 -223 172 -220 173 ' + }, + 'ornamentTremblement': { + 'x_min': -571.671875, + 'x_max': 570.3125, + 'ha': 582, + 'o': 'm -386 173 b -381 174 -385 174 -383 174 b -370 173 -377 174 -372 173 b -281 86 -367 172 -347 151 b -196 0 -235 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 277 172 b 289 174 285 174 288 174 b 299 173 294 174 298 173 b 462 11 303 172 338 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 374 -176 371 -176 b 280 -87 367 -173 345 -152 b 194 0 234 -38 194 0 b 125 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 43 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -141 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -289 -176 b -300 -174 -295 -176 -299 -174 b -464 -12 -304 -173 -340 -137 l -476 0 l -504 -34 b -543 -77 -534 -73 -537 -76 b -549 -79 -545 -79 -547 -79 b -571 -58 -562 -79 -571 -69 b -568 -49 -571 -55 -570 -52 b -392 172 -566 -43 -396 167 b -386 173 -390 172 -387 173 ' + }, + 'ornamentPrecompAppoggTrill': { + 'x_min': -571.671875, + 'x_max': 570.3125, + 'ha': 582, + 'o': 'm -559 351 b -551 352 -556 352 -553 352 b -530 338 -543 352 -533 348 b -529 169 -530 337 -529 291 l -529 1 l -507 27 l -441 112 b -382 174 -394 169 -390 174 b -378 174 -381 174 -379 174 b -281 86 -370 174 -375 179 b -196 0 -234 37 -196 0 b -126 84 -196 0 -164 37 b -50 174 -55 173 -57 172 b -44 174 -49 174 -47 174 b -35 173 -42 174 -38 173 b 53 86 -32 172 -12 151 b 138 0 100 37 138 0 b 208 84 140 0 170 37 b 284 174 279 173 279 172 b 289 174 285 174 288 174 b 300 173 294 174 298 173 b 462 11 303 172 340 134 l 475 -1 l 503 34 b 541 76 534 72 536 74 b 548 77 544 77 545 77 b 570 56 560 77 570 68 b 567 48 570 54 568 51 b 392 -172 564 41 397 -166 b 378 -176 387 -174 382 -176 b 368 -174 375 -176 371 -176 b 280 -87 367 -173 347 -152 b 194 0 234 -38 194 0 b 126 -86 194 0 163 -38 b 49 -174 54 -174 55 -173 b 44 -176 47 -176 46 -176 b 34 -174 40 -176 36 -174 b -54 -87 31 -173 10 -152 b -140 0 -102 -38 -140 0 b -209 -86 -140 0 -171 -38 b -285 -174 -280 -174 -279 -173 b -291 -176 -287 -176 -288 -176 b -300 -174 -294 -176 -298 -174 b -464 -11 -303 -173 -374 -102 l -476 0 l -506 -37 b -539 -76 -528 -65 -537 -74 b -551 -80 -543 -79 -547 -80 b -570 -68 -558 -80 -566 -76 l -571 -65 l -571 136 b -570 340 -571 331 -571 337 b -559 351 -568 344 -564 348 ' + }, + 'ornamentPrecompSlideTrillDAnglebert': { + 'x_min': -590.71875, + 'x_max': 589.359375, + 'ha': 601, + 'o': 'm -367 173 b -362 174 -366 174 -364 174 b -351 173 -357 174 -353 173 b -262 86 -348 172 -328 151 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 72 86 -13 172 6 151 b 157 0 119 37 157 0 b 227 84 159 0 189 37 b 303 174 298 173 296 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 144 -86 213 0 182 -38 b 68 -174 73 -174 74 -173 b 62 -176 66 -176 65 -176 b 53 -174 59 -176 55 -174 b -35 -87 50 -173 29 -152 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -367 173 -375 169 -372 172 ' + }, + 'ornamentPrecompSlideTrillBach': { + 'x_min': -590.71875, + 'x_max': 589.359375, + 'ha': 601, + 'o': 'm 175 273 b 182 274 178 273 181 274 b 202 262 190 274 198 269 b 204 158 204 259 204 259 l 204 56 l 250 112 b 303 174 296 172 298 172 b 308 174 304 174 307 174 b 318 173 313 174 317 173 b 481 11 322 172 357 134 l 494 -1 l 522 34 b 560 76 553 72 555 74 b 567 77 563 77 564 77 b 589 56 579 77 589 68 b 586 48 589 54 588 51 b 411 -172 583 41 416 -166 b 397 -176 406 -174 401 -176 b 387 -174 393 -176 390 -176 b 299 -87 386 -173 366 -152 b 213 0 253 -38 213 0 b 208 -6 213 0 210 -2 l 204 -12 l 204 -147 b 204 -210 204 -173 204 -194 b 198 -292 204 -297 204 -287 b 183 -299 194 -297 189 -299 b 164 -287 175 -299 167 -295 b 163 -174 163 -284 163 -284 l 161 -63 l 119 -117 b 65 -176 76 -170 73 -176 b 61 -176 63 -176 62 -176 b -35 -87 51 -174 57 -180 b -121 0 -83 -38 -121 0 b -190 -86 -122 0 -152 -38 b -266 -174 -261 -174 -259 -173 b -272 -176 -268 -176 -270 -176 b -281 -174 -276 -176 -280 -174 b -371 -86 -284 -173 -304 -152 b -457 0 -417 -38 -457 0 l -457 0 b -477 -26 -457 0 -470 -16 b -548 -227 -524 -88 -548 -161 b -536 -303 -548 -254 -544 -280 b -533 -317 -534 -309 -533 -313 b -553 -338 -533 -330 -541 -338 b -577 -315 -566 -338 -571 -333 b -590 -227 -586 -287 -590 -258 b -518 -9 -590 -154 -564 -77 b -465 56 -509 2 -504 8 l -402 134 b -363 174 -374 170 -371 174 b -359 174 -362 174 -360 174 b -262 86 -351 174 -356 179 b -176 0 -216 37 -176 0 b -107 84 -176 0 -145 37 b -31 174 -36 173 -38 172 b -25 174 -29 174 -28 174 b -16 173 -23 174 -19 173 b 147 11 -13 172 35 123 l 157 -1 l 160 1 l 163 4 l 163 130 b 164 260 163 256 163 258 b 175 273 166 266 170 270 ' + }, + 'ornamentPrecompTrillSuffixDandrieu': { + 'x_min': -590.71875, + 'x_max': 589.359375, + 'ha': 601, + 'o': 'm 544 335 b 553 337 548 337 551 337 b 575 313 563 337 570 330 b 589 226 583 285 589 256 b 517 8 589 152 563 76 b 464 -58 507 -4 503 -9 l 401 -136 b 362 -176 372 -172 370 -176 b 357 -176 360 -176 359 -176 b 261 -87 349 -174 355 -180 b 175 0 215 -38 175 0 b 106 -86 175 0 144 -38 b 29 -174 35 -174 36 -173 b 24 -176 28 -176 27 -176 b 14 -174 21 -176 17 -174 b -73 -87 12 -173 -8 -152 b -159 0 -121 -38 -159 0 b -228 -86 -160 0 -190 -38 b -304 -174 -299 -174 -298 -173 b -310 -176 -306 -176 -308 -176 b -319 -174 -314 -176 -318 -174 b -483 -12 -323 -173 -359 -137 l -495 0 l -524 -34 b -562 -77 -553 -73 -556 -76 b -568 -79 -564 -79 -566 -79 b -590 -58 -581 -79 -590 -69 b -588 -49 -590 -55 -589 -52 b -412 170 -585 -43 -417 165 b -398 174 -408 173 -402 174 b -389 173 -394 174 -392 174 b -300 86 -387 172 -366 151 b -215 -1 -254 37 -215 -1 b -145 84 -215 -1 -183 37 b -69 173 -74 173 -76 172 b -63 174 -68 174 -66 174 b -54 173 -61 174 -57 173 b 34 86 -51 172 -31 151 b 119 -1 81 37 119 -1 b 189 84 121 -1 151 37 b 265 173 259 173 258 172 b 270 174 266 174 269 174 b 280 173 274 174 279 173 b 370 84 283 172 303 151 b 455 -1 416 37 455 -1 l 455 -1 b 476 24 455 -1 469 15 b 547 226 522 87 547 159 b 534 302 547 252 543 278 b 532 317 533 308 532 313 b 544 335 532 326 536 333 ' + }, + 'ornamentPrecompDoubleCadenceUpperPrefix': { + 'x_min': -597.53125, + 'x_max': 596.171875, + 'ha': 608, + 'o': 'm -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 80 86 -5 172 13 151 b 166 -1 127 37 166 -1 b 235 84 166 -1 197 37 b 311 173 306 173 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 152 -86 221 -1 190 -38 b 76 -176 81 -174 83 -173 b 70 -176 74 -176 73 -176 b 61 -174 66 -176 62 -174 b -27 -87 58 -173 38 -152 b -114 -1 -74 -38 -112 -1 b -182 -86 -114 -1 -145 -38 b -258 -176 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 ' + }, + 'ornamentPrecompDoubleCadenceUpperPrefixTurn': { + 'x_min': -597.53125, + 'x_max': 596.171875, + 'ha': 608, + 'o': 'm -533 324 b -525 327 -530 326 -528 327 b -504 305 -514 327 -504 317 b -504 305 -504 305 -504 305 b -513 284 -504 299 -504 299 b -556 112 -541 226 -556 167 b -545 33 -556 84 -552 58 b -524 -20 -541 15 -532 -9 l -522 -23 l -491 15 l -413 111 b -355 174 -367 169 -363 174 b -351 174 -353 174 -352 174 b -254 86 -343 174 -348 179 b -168 -1 -208 37 -168 -1 b -100 84 -168 -1 -137 37 b -23 173 -28 173 -29 172 b -19 174 -21 174 -20 174 b -8 173 -14 174 -10 173 b 155 11 -5 172 43 123 l 166 -1 l 168 1 l 170 4 l 170 130 b 171 260 170 256 170 258 b 191 274 175 269 183 274 b 205 267 196 274 201 272 b 212 158 212 262 210 273 l 212 56 l 257 112 b 311 173 304 172 304 172 b 317 174 313 174 314 174 b 326 173 319 174 323 173 b 490 11 329 172 366 134 l 502 -1 l 530 34 b 568 76 560 72 563 74 b 575 77 570 77 573 77 b 596 56 586 77 596 68 b 594 48 596 54 596 51 b 417 -172 592 41 424 -166 b 405 -176 415 -174 409 -176 b 396 -174 401 -176 398 -176 b 307 -87 393 -173 372 -152 b 221 -1 259 -38 221 -1 b 216 -6 221 -1 219 -2 l 212 -12 l 212 -147 b 212 -210 212 -173 212 -194 b 205 -292 212 -297 210 -287 b 191 -299 201 -297 196 -299 b 172 -287 183 -299 175 -295 b 170 -174 171 -284 171 -284 l 170 -63 l 127 -117 b 73 -176 84 -170 80 -176 b 68 -176 72 -176 70 -176 b -27 -87 59 -174 65 -180 b -114 0 -74 -38 -112 0 b -182 -86 -114 0 -145 -38 b -258 -174 -253 -174 -253 -173 b -264 -176 -259 -176 -262 -176 b -274 -174 -268 -176 -272 -174 b -438 -11 -277 -173 -348 -102 l -449 0 l -479 -37 b -524 -80 -513 -80 -514 -80 l -524 -80 b -553 -52 -534 -80 -540 -74 b -597 109 -583 -8 -597 48 b -560 280 -597 165 -585 224 b -533 324 -548 310 -540 322 ' + }, + 'ornamentPrecompTrillLowerSuffix': { + 'x_min': -597.53125, + 'x_max': 596.171875, + 'ha': 608, + 'o': 'm -413 173 b -408 174 -412 174 -409 174 b -397 173 -404 174 -400 173 b -308 86 -394 172 -374 151 b -223 0 -261 37 -223 0 b -153 84 -223 0 -191 37 b -77 174 -83 173 -84 172 b -72 174 -76 174 -74 174 b -62 173 -68 174 -63 173 b 25 86 -59 172 -39 151 b 112 0 73 37 111 0 b 181 84 112 0 144 37 b 257 174 251 173 251 172 b 262 174 258 174 261 174 b 273 173 266 174 270 173 b 436 9 276 172 347 101 l 447 -1 l 477 36 b 522 79 511 79 513 79 l 522 79 b 552 51 533 79 539 73 b 596 -112 582 6 596 -51 b 567 -262 596 -161 586 -213 b 539 -322 558 -287 544 -316 b 524 -327 534 -326 529 -327 b 504 -315 515 -327 507 -323 b 503 -308 503 -312 503 -309 b 511 -285 503 -302 504 -297 b 555 -113 540 -227 555 -169 b 544 -34 555 -86 551 -59 b 522 19 540 -16 530 8 l 521 22 l 481 -26 l 405 -122 b 353 -176 366 -172 362 -176 b 349 -176 352 -176 351 -176 b 253 -87 341 -176 347 -180 b 167 0 206 -38 167 0 b 99 -86 167 0 136 -38 b 21 -174 27 -174 28 -173 b 17 -176 20 -176 19 -176 b 6 -174 13 -176 9 -174 b -81 -87 4 -173 -14 -152 b -167 0 -129 -38 -167 0 b -236 -86 -167 0 -198 -38 b -313 -174 -307 -174 -306 -173 b -318 -176 -314 -176 -315 -176 b -328 -174 -321 -176 -325 -174 b -491 -12 -330 -173 -367 -137 l -503 0 l -530 -34 b -570 -77 -562 -73 -564 -76 b -577 -79 -571 -79 -574 -79 b -597 -58 -588 -79 -597 -69 b -596 -49 -597 -55 -597 -52 b -417 172 -593 -43 -423 167 b -413 173 -417 172 -415 173 ' + }, + 'stringsDownBow': { + 'x_min': -149.71875, + 'x_max': 148.359375, + 'ha': 151, + 'o': 'm -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 ' + }, + 'stringsUpBow': { + 'x_min': -149.71875, + 'x_max': 148.359375, + 'ha': 151, + 'o': 'm -137 381 b -130 383 -134 383 -133 383 b -111 371 -122 383 -114 378 b -55 224 -110 370 -85 305 b 0 80 -25 145 -1 80 b 54 224 0 80 24 145 b 112 377 114 384 110 373 b 127 384 118 381 122 384 b 148 362 138 384 148 374 l 148 356 l 83 183 b 16 9 47 88 17 11 b -1 0 12 2 5 0 b -14 5 -5 0 -10 1 b -84 183 -19 9 -13 -6 l -149 356 l -149 362 b -137 381 -149 371 -145 378 ' + }, + 'stringsHarmonic': { + 'x_min': -122.5, + 'x_max': 121.140625, + 'ha': 124, + 'o': 'm -16 145 b 0 147 -10 147 -5 147 b 121 -1 66 147 121 77 b 114 -49 121 -16 118 -33 b -1 -148 95 -112 47 -148 b -85 -106 -31 -148 -61 -134 b -122 -1 -110 -76 -122 -38 b -16 145 -122 68 -81 134 m 12 111 b 0 113 8 113 4 113 b -68 22 -29 113 -61 73 b -70 0 -69 15 -70 6 b -13 -113 -70 -49 -47 -98 b -1 -115 -9 -115 -5 -115 b 63 -40 24 -115 53 -83 b 68 -1 66 -27 68 -15 b 12 111 68 48 46 97 ' + }, + 'pluckedSnapPizzicatoAbove': { + 'x_min': -149.71875, + 'x_max': 148.359375, + 'ha': 151, + 'o': 'm -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 ' + }, + 'pluckedSnapPizzicatoBelow': { + 'x_min': -149.71875, + 'x_max': 148.359375, + 'ha': 151, + 'o': 'm -9 215 b 0 217 -6 217 -4 217 b 19 205 8 217 14 213 b 20 142 20 202 20 201 l 20 84 l 23 84 b 144 -27 81 74 129 30 b 148 -66 147 -40 148 -54 b 36 -213 148 -134 103 -197 b 0 -219 24 -217 12 -219 b -145 -104 -68 -219 -129 -173 b -149 -68 -148 -91 -149 -79 b -24 84 -149 6 -98 74 l -21 84 l -21 142 b -19 205 -20 201 -20 202 b -9 215 -17 209 -13 213 m -21 -15 b -23 41 -21 37 -21 41 b -23 41 -23 41 -23 41 b -76 11 -35 40 -62 26 b -108 -65 -98 -11 -108 -38 b -1 -176 -108 -122 -65 -176 b 107 -65 63 -176 107 -122 b 74 11 107 -38 96 -11 b 20 41 61 26 32 41 b 20 -15 20 41 20 15 b 19 -74 20 -72 20 -72 b 0 -87 14 -83 6 -87 b -19 -74 -8 -87 -16 -83 b -21 -15 -20 -72 -20 -72 ' + }, + 'pluckedLeftHandPizzicato': { + 'x_min': 0, + 'x_max': 319.859375, + 'ha': 326, + 'o': 'm 149 508 b 159 509 152 509 155 509 b 186 494 170 509 181 503 b 190 440 190 487 190 488 l 190 430 l 190 377 l 242 377 l 251 377 b 303 373 298 377 296 377 b 319 345 314 367 319 356 b 304 319 319 335 314 324 b 250 315 296 315 299 315 l 242 315 l 190 315 l 190 262 l 190 252 b 186 198 190 204 190 205 b 159 183 179 188 170 183 b 132 198 148 183 138 188 b 127 252 127 205 127 204 l 127 262 l 127 315 l 76 315 l 68 315 b 14 319 20 315 21 315 b 0 347 4 324 0 335 b 14 373 0 356 4 367 b 68 377 21 377 20 377 l 76 377 l 127 377 l 127 430 l 127 440 b 132 494 127 488 127 487 b 149 508 136 501 142 505 ' + }, + 'keyboardPedalPed': { + 'x_min': -1.359375, + 'x_max': 1064.390625, + 'ha': 1086, + 'o': 'm 296 692 b 314 694 302 694 307 694 b 386 685 337 694 366 689 b 548 498 480 660 548 580 b 548 481 548 492 548 487 b 455 395 541 426 499 395 b 370 462 420 395 383 417 b 362 496 364 477 362 488 b 377 514 362 509 367 514 b 393 501 386 514 390 510 b 432 474 397 484 413 474 b 470 487 445 474 458 478 b 491 530 484 496 491 510 b 490 544 491 534 491 539 b 333 660 479 606 411 657 l 323 662 l 315 646 b 269 524 285 591 269 556 b 321 431 269 492 287 466 b 349 395 338 413 343 408 b 363 342 359 378 363 362 b 359 312 363 333 362 322 b 285 158 348 266 318 206 b 281 152 283 155 281 152 b 281 152 281 152 281 152 b 287 154 283 152 284 152 b 318 155 298 154 308 155 b 461 98 371 155 419 136 l 464 97 l 483 112 b 503 129 494 120 503 127 b 504 130 503 129 504 129 b 503 138 504 131 503 134 b 500 180 500 152 500 166 b 553 326 500 238 518 288 b 604 366 560 331 592 358 b 649 381 617 376 632 381 b 696 362 665 381 681 374 b 724 302 714 347 724 324 b 695 238 724 278 714 255 b 660 210 691 234 662 212 b 579 148 658 209 582 151 b 579 148 579 148 579 148 b 596 106 579 144 589 119 b 622 77 604 88 609 83 b 657 69 632 72 645 69 b 748 112 688 69 721 84 b 755 123 754 117 755 120 b 755 127 755 124 755 126 b 751 165 752 137 751 151 b 758 219 751 183 754 202 b 894 387 774 290 820 347 b 896 390 896 388 896 388 b 891 398 896 391 895 392 b 622 560 827 477 730 535 b 600 580 605 564 600 569 b 617 596 600 591 607 596 b 628 595 622 596 624 596 b 1057 248 846 552 1020 412 b 1064 191 1061 229 1064 209 b 922 0 1064 94 1005 9 b 902 -1 916 -1 909 -1 b 774 76 847 -1 800 26 b 769 83 770 81 770 83 b 769 81 769 83 769 83 b 627 -1 733 29 677 -1 b 548 27 597 -1 570 8 b 515 88 537 37 525 61 l 513 95 l 510 93 l 453 45 b 390 0 396 0 396 0 b 390 0 390 0 390 0 b 374 15 381 0 377 4 b 268 105 359 69 314 105 b 250 104 262 105 257 105 l 243 102 l 234 90 b 155 1 201 49 159 2 b 147 -1 152 0 149 -1 b 130 15 138 -1 130 6 b 132 20 130 18 132 19 b 136 31 133 22 134 27 b 220 131 149 74 178 109 b 231 137 225 134 230 136 b 302 278 280 202 302 244 b 265 335 302 299 295 309 b 209 442 234 363 213 402 b 209 455 209 446 209 451 b 279 648 209 502 232 564 l 285 659 l 283 659 b 176 627 238 653 210 645 b 57 477 111 594 66 538 b 55 459 55 471 55 464 b 72 409 55 437 61 415 b 93 403 78 405 87 403 b 152 467 123 403 151 431 b 168 488 153 483 157 488 b 185 462 181 488 185 483 l 185 460 b 137 344 183 409 168 369 b 78 322 119 328 98 322 b 13 360 50 322 25 335 b -1 426 4 380 -1 402 b 89 610 -1 488 32 559 b 296 692 147 659 210 685 m 926 348 b 921 353 924 351 922 353 b 914 348 920 353 918 351 b 823 167 857 306 823 237 b 828 124 823 154 826 138 b 890 31 837 79 862 40 b 896 31 892 31 894 31 b 956 104 916 31 940 59 b 970 191 965 129 970 159 b 966 241 970 208 969 224 b 926 348 959 277 945 313 m 627 326 b 619 326 624 326 622 326 b 598 316 611 326 604 323 b 568 215 579 288 568 255 b 568 208 568 213 568 210 b 571 183 570 195 570 184 l 571 183 b 594 201 571 183 582 191 l 634 231 b 660 259 653 247 656 248 b 664 278 662 266 664 272 b 627 326 664 299 649 320 ' + }, + 'keyboardPedalUp': { + 'x_min': -1.359375, + 'x_max': 592.078125, + 'ha': 604, + 'o': 'm 280 692 b 295 694 283 692 289 694 b 310 692 300 694 307 692 b 357 630 340 684 357 657 b 336 580 357 612 351 594 b 311 538 321 566 311 549 b 352 492 311 512 330 492 b 366 495 357 492 362 492 b 397 553 390 503 397 517 b 415 603 397 576 402 591 b 460 623 427 617 443 623 b 509 599 479 623 498 614 b 522 559 518 587 522 573 b 494 506 522 538 513 519 b 451 495 481 498 473 496 b 415 488 432 495 426 494 b 394 449 404 483 394 464 b 394 448 394 448 394 448 l 394 440 l 397 433 b 428 409 404 420 413 413 b 438 408 431 408 435 408 b 479 431 450 408 462 415 b 528 455 495 448 510 455 b 548 452 534 455 541 453 b 592 391 577 442 592 416 b 549 331 592 365 577 340 b 528 327 541 328 534 327 b 479 351 510 327 495 335 b 438 374 464 367 450 374 b 417 369 431 374 424 373 b 394 333 402 360 394 348 b 400 312 394 326 396 319 b 451 287 408 294 420 288 b 513 258 484 285 499 278 b 522 223 519 247 522 234 b 461 159 522 190 496 159 b 449 161 457 159 453 159 b 397 229 416 167 397 191 b 366 288 397 265 390 278 b 352 290 362 290 357 290 b 315 262 336 290 321 280 b 311 245 313 256 311 251 b 334 204 311 233 318 220 b 355 170 348 190 351 184 b 357 152 356 166 357 159 b 355 136 357 147 356 140 b 295 88 345 104 321 88 b 232 152 264 88 232 112 b 255 204 232 174 238 186 b 279 244 273 222 279 231 l 279 245 b 238 290 279 270 259 290 b 224 288 234 290 228 290 b 193 229 200 278 193 265 b 141 161 193 191 174 167 b 129 159 137 159 133 159 b 68 223 93 159 68 190 b 77 258 68 234 70 247 b 138 287 91 278 106 285 b 185 302 166 287 175 291 b 196 333 193 312 196 323 b 174 369 196 347 187 360 b 152 374 166 373 159 374 b 111 351 140 374 126 367 b 62 327 95 335 80 327 b 51 328 58 327 54 327 b -1 391 16 334 -1 363 b 53 455 -1 420 17 449 b 62 455 57 455 59 455 b 111 431 80 455 95 448 b 152 408 127 415 140 408 b 161 409 155 408 159 408 b 193 433 176 413 186 420 l 196 440 l 196 448 b 196 451 196 449 196 449 b 190 471 196 459 194 463 b 137 495 182 489 167 495 l 134 495 l 134 495 b 68 560 95 495 68 521 b 129 623 68 596 95 623 b 144 621 134 623 138 623 b 193 553 175 614 193 589 b 224 495 193 517 200 503 b 238 492 228 492 234 492 b 279 538 259 492 279 512 b 254 580 279 549 269 566 b 232 630 239 594 232 612 b 280 692 232 657 250 684 m 307 456 b 295 458 303 458 299 458 b 230 391 258 458 230 426 b 236 360 230 381 231 371 b 295 324 249 337 272 324 b 353 360 318 324 341 337 b 360 391 357 370 360 381 b 307 456 360 421 340 451 ' + }, + 'pictChokeCymbal': { + 'x_min': 0, + 'x_max': 227.3125, + 'ha': 232, + 'o': 'm 91 213 b 100 215 93 215 96 215 b 227 58 167 215 224 144 b 227 52 227 56 227 54 b 61 -201 227 -43 164 -138 b 29 -216 44 -212 36 -216 b 23 -210 27 -216 24 -213 b 21 -205 21 -208 21 -206 b 34 -192 21 -201 25 -197 b 122 -55 89 -161 122 -106 b 104 6 122 -33 117 -12 l 103 9 l 96 9 b 4 79 57 9 17 38 b 0 112 1 90 0 101 b 91 213 0 163 36 209 ' + }, + 'wiggleArpeggiatoUp': { + 'x_min': 58.53125, + 'x_max': 228.671875, + 'ha': 294, + 'o': 'm 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 ' + }, + 'arrowheadBlackUp': { + 'x_min': -10.890625, + 'x_max': 299.4375, + 'ha': 294, + 'o': 'm 136 460 b 142 462 137 462 140 462 b 166 449 152 462 161 456 b 171 428 168 446 168 445 b 288 131 194 322 238 209 b 298 115 295 120 296 117 b 299 106 298 112 299 109 b 273 81 299 91 287 81 b 255 86 268 81 261 83 b 155 116 225 104 183 116 l 152 116 l 149 108 b 141 83 148 102 144 91 b 134 48 137 69 134 58 b 149 9 134 34 140 24 b 153 -1 152 5 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 147 -11 b 122 2 138 -11 133 -6 b 95 61 104 20 95 38 b 107 108 95 74 99 90 b 108 113 107 111 108 112 b 107 113 108 113 108 113 b 102 113 106 113 104 113 b 31 86 76 108 53 98 b 14 80 24 81 20 80 b -10 106 0 80 -10 91 b 0 131 -10 115 -9 116 b 115 430 49 209 91 317 b 136 460 119 451 123 456 ' + }, + 'arrowheadBlackDown': { + 'x_min': -10.890625, + 'x_max': 298.078125, + 'ha': 294, + 'o': 'm 138 473 b 142 474 140 473 141 474 b 164 459 148 474 153 470 b 191 402 183 442 191 423 b 181 353 191 388 187 371 b 178 349 179 352 178 349 b 179 348 178 348 179 348 b 185 349 181 348 182 348 b 255 376 210 355 234 363 b 272 381 264 381 266 381 b 298 355 287 381 298 370 b 288 330 298 348 298 345 b 171 34 238 254 194 141 b 166 13 168 16 168 16 b 144 1 161 5 152 1 b 121 15 134 1 125 5 b 115 33 119 18 117 24 b 0 330 91 145 49 252 b -10 355 -9 345 -10 348 b 13 381 -10 371 0 381 b 31 376 19 381 25 380 b 132 345 61 358 103 345 l 136 345 l 137 355 b 145 378 138 359 142 370 b 152 415 149 394 152 405 b 137 452 152 427 148 438 b 133 464 134 458 133 460 b 138 473 133 467 134 470 ' + }, + 'vexAccidentalMicrotonal1': { + 'x_min': -171.5, + 'x_max': 483.1875, + 'ha': 493, + 'o': 'm -8 631 b -1 632 -6 632 -4 632 b 19 620 8 632 16 628 b 20 495 20 616 20 616 b 20 373 20 427 20 373 b 115 410 20 373 63 390 l 210 448 l 210 531 b 212 620 210 614 210 616 b 231 632 215 628 223 632 b 246 627 236 632 242 631 b 251 541 251 620 251 628 l 251 463 l 315 489 b 387 514 368 509 381 514 b 393 513 390 514 392 514 b 406 494 402 510 406 502 b 397 476 406 487 404 480 b 323 446 396 474 363 462 l 251 417 l 251 283 l 251 148 l 254 151 b 370 199 291 183 332 199 b 415 191 385 199 400 197 b 483 84 458 176 483 134 b 461 0 483 58 476 29 b 332 -142 439 -40 411 -72 l 255 -215 b 231 -229 240 -229 239 -229 b 216 -223 224 -229 220 -227 b 210 -158 210 -217 210 -223 b 210 -120 210 -148 210 -136 l 210 -29 l 205 -34 b 100 -142 182 -65 159 -88 l 23 -215 b -1 -229 9 -229 6 -229 b -19 -217 -9 -229 -16 -224 l -20 -215 l -21 48 l -21 310 l -83 287 b -152 262 -133 266 -145 262 b -157 263 -153 262 -155 262 b -171 283 -166 266 -171 274 b -161 301 -171 290 -167 297 b -91 328 -160 302 -129 315 l -21 356 l -21 487 l -20 617 l -19 621 b -8 631 -17 626 -12 630 m 210 288 b 210 401 210 351 210 401 b 114 365 209 401 167 384 l 20 327 l 20 238 l 20 148 l 21 151 b 140 199 59 183 102 199 b 206 180 164 199 187 192 l 209 177 b 209 177 209 177 209 177 b 210 288 210 177 210 199 m 110 131 b 96 133 106 133 100 133 b 89 133 93 133 91 133 b 24 87 63 129 40 113 l 20 80 l 20 -37 l 20 -156 l 23 -152 b 144 81 96 -72 144 20 l 144 83 b 110 131 144 113 134 126 m 341 131 b 328 133 337 133 332 133 b 322 133 326 133 323 133 b 257 87 296 129 273 113 l 251 80 l 251 -37 l 251 -156 l 255 -152 b 375 81 328 -72 375 20 l 375 83 b 341 131 375 113 367 126 ' + }, + 'vexAccidentalMicrotonal2': { + 'x_min': -1.359375, + 'x_max': 386.5625, + 'ha': 394, + 'o': 'm 249 535 b 257 537 251 537 253 537 b 276 524 266 537 273 533 l 277 521 l 279 419 l 279 316 l 304 323 b 337 328 319 326 330 328 b 353 316 347 328 349 324 b 355 266 355 315 355 290 b 353 215 355 241 355 217 b 319 198 349 206 347 205 b 279 187 284 190 279 188 b 279 156 279 187 279 174 b 279 136 279 151 279 144 l 279 84 l 289 87 l 330 98 b 367 105 352 102 362 105 b 378 101 372 105 375 104 b 386 61 385 95 386 94 b 386 40 386 55 386 48 l 386 -5 l 385 -8 b 374 -19 383 -12 378 -18 b 291 -40 372 -19 347 -26 b 279 -43 284 -41 279 -43 b 279 -83 279 -43 279 -59 b 279 -95 279 -87 279 -91 l 279 -145 l 304 -140 b 337 -133 321 -136 330 -133 b 349 -140 343 -133 347 -136 b 355 -181 355 -145 355 -142 l 355 -197 l 355 -210 b 349 -252 355 -249 355 -247 b 300 -269 345 -258 347 -258 b 280 -274 291 -272 281 -273 l 279 -274 l 277 -378 l 277 -483 l 276 -487 b 257 -499 273 -495 265 -499 b 238 -487 249 -499 242 -495 l 236 -483 l 236 -384 l 236 -285 l 235 -285 l 212 -291 l 170 -301 b 148 -308 159 -305 148 -306 b 147 -415 147 -308 147 -313 l 147 -523 l 145 -526 b 126 -538 141 -534 133 -538 b 106 -526 118 -538 110 -534 l 104 -523 l 104 -420 b 103 -317 104 -326 104 -317 b 103 -317 103 -317 103 -317 b 50 -330 92 -322 54 -330 b 31 -317 42 -330 35 -326 b 29 -267 29 -315 29 -315 l 29 -219 l 32 -216 b 92 -192 36 -206 36 -206 l 104 -190 l 104 -138 b 103 -87 104 -91 104 -87 b 103 -87 103 -87 103 -87 b 88 -91 103 -87 96 -88 l 49 -101 b 17 -106 32 -105 23 -106 b 6 -102 13 -106 10 -105 b -1 -62 0 -97 -1 -95 b 0 -41 -1 -56 0 -49 l 0 4 l 1 6 b 10 16 2 11 6 15 b 91 37 12 18 38 24 l 104 41 l 104 93 b 103 144 104 140 104 144 b 103 144 103 144 103 144 b 50 131 92 141 54 131 b 31 144 42 131 35 137 b 29 195 29 147 29 148 l 29 242 l 32 245 b 92 269 36 255 36 255 l 104 273 l 104 377 l 104 481 l 106 485 b 126 498 110 492 118 498 b 134 495 129 498 132 496 b 145 485 138 494 142 489 l 147 481 l 147 383 l 147 283 l 152 284 b 190 294 155 285 171 290 l 230 303 l 236 305 l 236 413 l 236 521 l 238 524 b 249 535 240 528 243 533 m 236 126 b 235 177 236 154 236 177 l 235 177 b 213 172 235 177 225 174 l 170 161 b 147 155 157 158 147 155 b 147 124 147 155 147 142 b 147 102 147 117 147 111 l 147 52 l 153 54 l 228 72 l 236 74 l 236 126 m 236 -105 b 235 -54 236 -65 236 -54 l 235 -54 b 231 -55 235 -54 234 -54 b 172 -69 227 -55 204 -62 l 149 -76 l 147 -76 l 147 -127 l 147 -179 l 152 -177 b 190 -167 155 -177 171 -173 l 230 -158 l 236 -156 l 236 -105 ' + }, + 'vexWiggleArpeggioUp': { + 'x_min': 58.53125, + 'x_max': 228.671875, + 'ha': 294, + 'o': 'm 138 371 b 142 373 140 371 141 373 b 178 342 149 373 156 366 b 228 251 217 297 228 278 b 228 244 228 248 228 247 b 176 147 227 212 212 184 b 123 73 152 122 132 93 b 121 62 122 70 121 66 b 145 13 121 48 129 31 b 153 -2 151 6 153 1 b 149 -9 153 -5 152 -6 b 144 -11 148 -11 145 -11 b 129 -1 140 -11 136 -8 b 61 87 89 37 68 68 b 58 113 59 95 58 105 b 110 215 58 144 74 177 b 163 287 134 240 155 269 b 166 299 166 291 166 295 b 141 348 166 313 157 330 b 133 360 134 356 133 358 b 133 363 133 362 133 362 b 138 371 133 367 136 370 ' + }, + 'vexNoteHeadMutedBreve': { + 'x_min': 0, + 'x_max': 370.21875, + 'ha': 378, + 'o': 'm 0 0 l 0 277 l 61 277 l 122 277 l 122 0 l 122 -278 l 61 -278 l 0 -278 l 0 0 m 246 -1 l 246 277 l 308 277 l 370 277 l 370 -1 l 370 -278 l 308 -278 l 246 -278 l 246 -1 ' + } + }, + 'cssFontWeight': 'normal', + 'ascender': 1903, + 'underlinePosition': -125, + 'cssFontStyle': 'normal', + 'boundingBox': { + 'yMin': -2065.375, + 'xMin': -695.53125, + 'yMax': 1901.578125, + 'xMax': 1159.671875 + }, + 'resolution': 1000, + 'original_font_information': { + 'postscript_name': 'Gonville-18', + 'version_string': 'Version 0.1.8904 ', + 'vendor_url': '', + 'full_font_name': 'Gonville-18', + 'font_family_name': 'Gonville-18', + 'copyright': 'No copyright is claimed on this font file.', + 'description': '', + 'trademark': '', + 'designer': '', + 'designer_url': '', + 'unique_font_identifier': 'FontForge 2.0 : Gonville-18 : 17-3-2010', + 'license_url': '', + 'license_description': '', + 'manufacturer_name': '', + 'font_sub_family_name': '18' + }, + 'descender': -2066, + 'familyName': 'Gonville-18', + 'lineHeight': 4093, + 'underlineThickness': 50 +}; + +/***/ }), + +/***/ "./src/fonts/gonville_metrics.js": +/*!***************************************!*\ + !*** ./src/fonts/gonville_metrics.js ***! + \***************************************/ +/*! exports provided: GonvilleMetrics */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GonvilleMetrics", function() { return GonvilleMetrics; }); +var GonvilleMetrics = { + name: 'Gonville', + smufl: false, + stave: { + padding: 12 + }, + clef: { + 'default': { + point: 40, + width: 26 + }, + 'small': { + point: 32, + width: 20 + }, + annotations: { + '8va': { + smuflCode: 'timeSig8', + "default": { + point: 20, + treble: { + line: -1.2, + shiftX: 11 + } + }, + small: { + point: 18, + treble: { + line: -0.4, + shiftX: 8 + } + } + }, + '8vb': { + smuflCode: 'timeSig8', + "default": { + point: 20, + treble: { + line: 6.3, + shiftX: 10 + }, + bass: { + line: 4, + shiftX: 1 + } + }, + small: { + point: 18, + treble: { + line: 5.8, + shiftX: 6 + }, + bass: { + line: 3.5, + shiftX: 0.5 + } + } + } + }, + // May not need these anymore + lineCount: { + '8': { + point: 55, + shiftY: 14 + }, + '7': { + point: 47, + shiftY: 8 + }, + '6': { + point: 40, + shiftY: 1 + }, + '5': { + point: 30, + shiftY: -6 + }, + '4': { + point: 23, + shiftY: -12 + } + } + }, + pedalMarking: { + up: { + point: 40 + }, + down: { + point: 40 + } + }, + tremolo: { + "default": { + point: 40, + spacing: 4, + offsetYStemUp: -9, + offsetYStemDown: -21, + offsetXStemUp: 6, + offsetXStemDown: -2 + }, + grace: { + point: 30, + spacing: 4, + offsetYStemUp: -9, + offsetYStemDown: -21, + offsetXStemUp: 6, + offsetXStemDown: -2 + } + }, + // These are for numeric digits, such as in time signatures + digits: { + point: 40, + tupletPoint: 28 + }, + stem: { + // These are stem (Y) offsets to the note heads. To shift the + // noteheads (x-position) themselves, see glyphs.notehead.custom. + noteHead: { + noteheadTriangleUpHalf: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4 + }, + noteheadTriangleUpBlack: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4 + }, + noteheadTriangleUpWhole: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4 + }, + noteheadXHalf: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4 + }, + noteheadXBlack: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4 + }, + noteheadXWhole: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4 + }, + noteheadBlack: { + offsetYBaseStemDown: 2 + }, + noteheadSquareWhite: { + offsetYBaseStemDown: -5, + offsetYBaseStemUp: 5 + } + } + }, + glyphs: { + textNote: { + point: 40, + "default": {}, + ornamentTrill: { + shiftX: -5, + shiftY: 4 + } + }, + noteHead: { + custom: { + 'noteheadDiamondWholeStemUp': { + shiftX: -6 + }, + 'noteheadCircleXStemUp': { + shiftX: -1.5 + }, + 'noteheadXWholeStemUp': { + shiftX: -5 + }, + 'noteheadTriangleUpWholeStemUp': { + shiftX: -6 + } + } + } + } +}; + +/***/ }), + +/***/ "./src/fonts/petaluma_glyphs.js": +/*!**************************************!*\ + !*** ./src/fonts/petaluma_glyphs.js ***! + \**************************************/ +/*! exports provided: PetalumaFont */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PetalumaFont", function() { return PetalumaFont; }); +var PetalumaFont = { + 'glyphs': { + 'bracketTop': { + 'x_min': 0, + 'x_max': 508, + 'y_min': 0, + 'y_max': 370, + 'ha': 370, + 'o': 'm 22 0 b 122 0 55 1 89 0 l 157 0 b 713 376 425 0 622 137 b 732 467 724 406 732 436 b 726 514 732 482 730 498 b 711 533 723 528 719 533 b 693 526 707 533 700 530 b 674 498 683 520 678 508 b 635 406 662 467 652 435 b 310 164 560 281 458 193 b 154 151 258 154 206 151 b 39 154 117 151 78 154 b 1 120 17 154 4 145 b 0 84 0 108 0 96 b 0 20 0 63 1 40 b 22 0 0 4 7 0 z' + }, + 'bracketBottom': { + 'x_min': 0, + 'x_max': 496, + 'y_min': -393, + 'y_max': 0, + 'ha': 393, + 'o': 'm 696 -566 b 711 -539 713 -566 708 -549 b 714 -521 713 -533 714 -527 b 713 -508 714 -517 713 -513 b 661 -327 706 -445 688 -384 b 392 -42 603 -203 513 -109 b 206 0 331 -7 266 0 b 160 -1 190 0 174 -1 b 26 -1 107 -1 66 -3 b 0 -19 12 -1 0 -4 l 0 -23 b 3 -50 1 -32 3 -42 b 1 -86 3 -62 1 -73 b 4 -118 1 -96 1 -108 b 45 -151 10 -145 23 -154 b 180 -143 89 -144 135 -145 b 621 -419 392 -135 523 -236 b 662 -539 641 -456 655 -497 b 696 -566 667 -557 680 -566 z' + }, + 'barlineTick': { + 'x_min': 0, + 'x_max': 56.036101509664164, + 'y_min': 876.905249806889, + 'y_max': 1121.5430338167066, + 'ha': 244.63778400981766, + 'o': 'm 42 1263 b 66 1287 62 1261 66 1272 b 81 1583 65 1387 72 1485 b 35 1614 82 1610 53 1610 b 14 1591 17 1619 16 1604 b 0 1408 7 1525 0 1459 l 0 1292 b 42 1263 1 1263 23 1266 z' + }, + 'breathMarkTick': { + 'x_min': 0, + 'x_max': 568, + 'y_min': 0, + 'y_max': 621, + 'ha': 621, + 'o': 'm 258 0 b 278 39 276 0 274 24 b 279 56 279 45 279 50 l 279 73 b 278 117 279 88 278 102 b 281 148 278 127 279 138 b 536 600 312 330 387 487 b 744 719 600 651 670 690 b 815 779 775 730 808 740 b 818 824 818 793 818 808 b 815 868 818 838 818 852 b 796 894 814 881 808 894 b 779 888 791 894 786 893 b 719 864 760 878 739 871 b 372 602 580 806 459 724 b 229 252 298 498 251 383 b 220 268 225 262 222 264 b 209 302 217 279 213 291 b 75 527 181 387 143 467 b 16 563 58 543 39 573 b 0 539 3 557 0 549 b 12 492 0 524 9 507 b 56 400 19 459 22 425 b 163 269 104 367 138 323 b 238 36 197 194 216 115 b 258 0 242 22 243 0 z' + }, + 'segno': { + 'x_min': 0, + 'x_max': 798, + 'y_min': -65, + 'y_max': 806, + 'ha': 871, + 'o': 'm 16 -94 b 66 -69 39 -92 53 -85 b 177 59 102 -26 138 17 b 543 456 298 192 420 324 b 726 300 615 420 680 373 b 753 217 744 271 753 243 b 655 112 753 170 719 131 b 599 104 636 107 618 104 b 461 173 544 104 495 128 b 432 190 454 183 444 190 b 409 179 425 190 418 187 b 359 118 390 160 373 141 b 341 72 347 101 341 86 b 373 24 341 56 351 40 b 409 6 384 17 396 10 b 550 -13 454 -12 501 -14 b 599 -6 566 -12 583 -10 b 864 213 720 27 806 104 b 886 300 878 242 886 271 b 857 395 886 331 877 363 b 799 467 840 420 821 445 b 648 572 755 513 704 546 b 1110 1083 802 743 955 914 b 1140 1129 1123 1097 1136 1110 b 1149 1148 1142 1135 1149 1142 b 1145 1153 1149 1149 1148 1152 b 1123 1161 1139 1158 1130 1161 b 1109 1156 1119 1161 1113 1159 b 1089 1138 1102 1151 1094 1145 b 946 988 1040 1089 989 1041 b 595 602 834 855 711 732 l 590 598 l 549 615 b 432 793 462 647 432 723 b 534 888 432 851 474 888 b 671 834 588 888 631 864 b 710 818 684 824 696 818 b 724 821 714 818 719 819 b 809 883 757 834 788 852 b 816 901 814 890 816 896 b 802 923 816 910 812 916 b 706 984 770 945 742 971 b 593 1011 668 998 631 1011 b 516 991 567 1011 541 1005 b 333 799 433 949 380 876 b 302 693 312 765 302 729 b 330 589 302 658 311 624 b 469 488 360 533 415 511 b 485 482 475 487 480 485 b 266 249 412 405 338 327 b 121 88 217 196 170 141 b 9 -65 78 40 37 -7 b 0 -85 4 -72 0 -79 b 16 -94 0 -91 4 -94 z m 251 350 b 363 436 285 348 353 403 b 354 456 366 448 360 452 b 271 518 327 477 298 497 b 243 528 261 526 252 528 b 210 513 232 528 222 523 b 157 454 190 494 176 472 b 141 428 147 444 141 436 b 158 406 141 420 147 413 b 216 361 180 393 197 376 b 245 350 225 356 235 350 b 251 350 246 350 249 350 z m 861 536 b 927 575 890 539 909 557 b 965 628 952 598 965 613 b 926 680 965 644 952 658 b 865 713 900 701 883 713 b 805 667 845 713 828 698 b 768 611 791 649 770 631 b 812 564 766 589 798 582 b 861 536 824 550 840 537 z' + }, + 'coda': { + 'x_min': 0, + 'x_max': 1380, + 'y_min': -196, + 'y_max': 1037, + 'ha': 1233, + 'o': 'm 1028 -282 b 1057 -245 1045 -282 1053 -261 b 1060 -203 1060 -232 1060 -217 b 1063 9 1060 -132 1061 -62 b 1390 194 1192 22 1303 81 b 1531 543 1467 298 1512 415 b 1532 556 1531 547 1532 552 b 1904 559 1656 557 1780 559 b 1950 582 1920 559 1941 569 b 1987 674 1970 609 1987 638 b 1984 698 1987 681 1986 690 b 1950 700 1973 698 1961 700 l 1941 700 l 1545 696 b 1535 776 1545 723 1541 749 b 1103 1113 1477 996 1326 1107 b 1080 1115 1096 1115 1087 1115 b 1081 1322 1080 1184 1080 1253 b 1079 1467 1083 1371 1081 1418 b 1061 1493 1079 1476 1080 1493 l 1060 1493 b 1028 1467 1044 1490 1031 1485 b 1020 1403 1025 1446 1020 1424 b 1017 1110 1020 1305 1018 1208 l 962 1106 b 569 914 808 1087 671 1035 b 451 683 510 844 472 766 l 161 678 b 118 680 148 678 132 680 b 79 670 101 680 86 678 b 0 544 48 636 29 592 l 37 544 l 429 549 b 428 518 428 539 428 528 b 488 285 428 435 458 360 b 681 81 526 192 593 124 b 946 9 763 40 854 19 b 1008 6 966 7 988 6 b 1005 -137 1008 -42 1005 -89 b 1012 -243 1005 -173 1005 -209 b 1028 -282 1015 -258 1011 -282 z m 1008 180 b 660 264 886 181 770 212 b 524 471 570 305 524 374 b 528 524 524 488 526 505 l 533 549 b 792 552 619 550 706 550 b 1009 553 865 553 937 552 b 1008 180 1009 428 1008 288 z m 577 684 b 766 874 618 763 678 828 b 989 932 837 912 913 923 b 1015 933 998 932 1007 933 b 1014 822 1015 896 1014 860 b 1011 688 1012 791 1012 743 z m 1067 184 b 1071 553 1070 307 1068 429 b 1439 556 1194 553 1316 554 b 1437 554 1439 554 1437 554 b 1341 337 1413 478 1387 402 b 1119 192 1286 261 1211 212 b 1067 184 1102 189 1084 186 z m 1074 690 b 1079 935 1077 772 1077 852 b 1326 855 1166 932 1250 909 b 1446 694 1385 814 1426 759 b 1269 693 1387 694 1328 693 b 1074 690 1204 693 1139 691 z' + }, + 'gClef': { + 'x_min': 0, + 'x_max': 664, + 'y_min': -559, + 'y_max': 1009, + 'ha': 1568, + 'o': 'm 343 -805 b 366 -801 350 -805 357 -804 b 409 -773 383 -795 397 -786 b 582 -328 528 -648 577 -497 b 583 -294 582 -315 583 -294 b 612 -279 583 -294 603 -282 b 747 -197 660 -256 706 -230 b 949 143 857 -109 920 10 b 956 206 955 164 956 186 b 791 384 956 297 906 363 b 704 393 762 390 733 393 b 498 336 632 393 563 374 b 481 325 490 331 481 325 l 444 465 b 442 485 442 472 442 485 b 609 880 442 485 589 746 b 619 996 616 919 619 958 b 613 1084 619 1027 618 1056 b 534 1387 599 1188 560 1286 b 482 1453 527 1417 517 1453 b 422 1407 456 1453 438 1428 b 305 1063 348 1305 312 1188 b 304 1002 304 1043 304 1022 b 338 654 304 886 323 769 b 343 629 338 645 341 636 b 144 356 278 537 206 451 b 23 144 101 288 53 220 b 0 20 7 107 0 63 b 82 -210 0 -69 30 -160 b 207 -288 112 -239 160 -271 b 410 -328 274 -312 340 -328 b 474 -324 431 -328 452 -327 l 491 -321 b 491 -341 491 -321 492 -334 b 402 -585 475 -428 454 -513 b 294 -668 374 -622 348 -664 b 271 -693 278 -670 271 -680 b 274 -708 271 -698 272 -703 b 302 -775 282 -730 292 -753 b 343 -805 311 -795 325 -805 z m 410 -160 b 311 -147 360 -160 311 -147 b 307 -98 311 -147 307 -127 b 314 -33 307 -79 308 -56 b 429 131 328 36 377 85 b 441 138 433 135 438 138 b 449 122 446 138 448 132 b 490 -131 462 37 484 -46 b 490 -153 491 -140 490 -153 b 410 -160 490 -153 452 -163 z m 252 -135 b 196 -121 232 -134 215 -127 b 117 -69 158 -108 127 -94 b 111 -32 112 -58 111 -45 b 117 19 111 -16 114 1 b 130 56 118 27 127 52 b 324 337 186 156 253 246 l 384 416 l 395 384 b 416 291 406 348 416 291 b 350 213 416 291 376 239 b 243 -42 278 143 243 55 b 251 -117 243 -66 246 -91 b 252 -135 252 -122 252 -127 z m 569 -131 l 563 -91 b 510 168 552 3 530 78 b 513 192 508 179 508 186 b 624 202 550 199 586 202 b 730 192 660 202 694 199 b 850 141 773 183 816 176 b 858 134 852 138 855 135 b 595 -121 801 19 716 -68 z m 400 717 b 382 922 389 786 382 854 b 481 1286 382 1047 408 1169 b 507 1125 498 1233 507 1179 b 500 1040 507 1097 504 1068 b 400 717 481 927 455 818 z' + }, + 'cClef': { + 'x_min': 0, + 'x_max': 731, + 'y_min': -543, + 'y_max': 543, + 'ha': 1086, + 'o': 'm 615 -770 b 881 -684 710 -770 801 -739 b 1020 -395 986 -612 1020 -510 b 1017 -334 1020 -374 1018 -354 b 769 -62 1007 -209 896 -75 b 746 -60 762 -60 755 -60 b 639 -73 710 -60 675 -69 b 524 -109 598 -79 560 -92 b 528 -36 526 -85 528 -60 b 527 -4 528 -26 528 -14 b 528 39 527 10 528 24 b 526 99 528 59 527 79 b 592 94 549 95 570 94 b 648 99 611 94 629 95 b 912 157 744 94 844 117 b 1053 377 1009 215 1053 284 b 1050 425 1053 393 1053 409 b 914 665 1037 521 986 602 b 717 753 855 717 791 753 b 626 734 688 753 658 747 l 462 665 b 347 500 374 628 347 580 b 350 449 347 484 348 468 b 392 419 353 428 367 416 b 492 438 425 425 459 428 b 541 498 524 448 541 468 b 540 514 541 503 541 508 b 537 546 537 524 537 536 b 573 639 537 580 550 611 b 606 657 582 649 593 657 l 609 657 b 716 622 647 652 684 647 b 834 372 801 556 834 469 b 831 323 834 356 832 338 b 743 187 825 266 795 217 b 710 176 732 180 720 176 b 694 179 704 176 700 177 b 527 223 638 193 582 206 b 495 229 516 228 505 229 b 454 220 481 229 468 225 b 395 189 432 213 415 200 b 363 180 384 186 374 181 b 348 168 356 179 348 176 b 340 161 343 167 340 164 b 347 150 340 157 343 154 b 356 147 348 148 353 147 b 364 92 361 130 363 111 b 369 -37 367 49 369 6 b 363 -154 369 -76 367 -115 b 357 -236 360 -183 357 -210 b 376 -264 357 -253 361 -259 b 456 -289 402 -284 429 -289 b 521 -282 478 -289 500 -285 b 549 -255 537 -279 546 -271 b 598 -177 556 -225 577 -202 b 622 -164 605 -168 613 -164 b 636 -167 626 -164 631 -166 b 749 -225 678 -177 714 -199 b 848 -405 814 -276 848 -337 b 824 -507 848 -436 840 -471 b 657 -657 792 -582 730 -625 b 608 -668 638 -664 622 -668 b 534 -602 572 -668 547 -645 b 513 -575 530 -589 523 -575 b 507 -576 510 -575 508 -575 b 478 -582 497 -580 488 -582 b 405 -570 454 -582 428 -570 b 389 -572 399 -570 395 -570 l 363 -572 b 321 -575 348 -572 333 -569 l 321 631 b 323 662 323 641 323 652 b 315 716 323 681 321 698 b 304 736 314 723 317 736 l 302 736 b 281 716 294 734 285 729 b 275 665 276 700 275 683 l 275 382 b 276 99 275 288 275 193 b 279 -170 278 10 276 -81 b 284 -399 282 -246 284 -323 b 282 -629 284 -475 282 -553 b 289 -721 282 -660 289 -690 b 300 -736 289 -727 291 -736 b 312 -724 307 -736 310 -730 b 321 -667 323 -706 321 -687 l 321 -632 l 328 -644 l 340 -657 b 510 -757 386 -707 445 -740 b 615 -770 546 -766 580 -770 z m 131 -782 b 141 -755 138 -782 140 -773 b 147 -490 143 -667 145 -577 b 160 207 150 -258 153 -24 b 168 618 164 344 158 481 b 81 768 173 690 132 732 b 45 782 66 778 55 782 b 3 740 26 782 13 768 b 0 724 1 736 0 730 l 1 710 b 4 596 4 672 4 634 l 4 382 b 9 102 4 288 4 196 b 17 -301 13 -32 10 -166 l 17 -672 b 50 -736 17 -701 27 -720 b 109 -772 69 -749 91 -759 b 131 -782 120 -778 127 -782 z' + }, + 'fClef': { + 'x_min': 0, + 'x_max': 776, + 'y_min': -496, + 'y_max': 216, + 'ha': 712, + 'o': 'm 402 -706 b 804 -405 592 -678 716 -566 b 876 -53 861 -298 874 -183 b 868 33 876 -32 873 1 b 560 311 845 217 723 311 b 524 310 549 311 536 311 b 131 134 373 297 239 242 b 17 -29 84 86 37 39 b 9 -89 12 -50 9 -71 b 112 -238 9 -154 43 -206 b 124 -243 117 -239 120 -242 b 186 -261 145 -255 166 -261 b 268 -228 215 -261 242 -249 b 351 -59 325 -181 351 -124 b 343 10 351 -36 348 -13 b 340 36 341 19 340 27 b 409 105 340 75 363 102 b 441 107 420 107 431 107 b 624 36 510 107 573 86 b 744 -200 688 -27 724 -109 b 747 -230 747 -210 747 -222 b 717 -323 747 -264 736 -292 b 608 -445 688 -370 654 -410 b 307 -541 518 -513 415 -541 b 213 -541 275 -541 245 -541 b 39 -521 154 -541 96 -539 b 0 -552 17 -514 0 -531 b 1 -564 0 -556 0 -560 b 17 -611 6 -580 10 -596 b 101 -694 35 -648 50 -684 b 288 -714 164 -707 225 -714 b 402 -706 325 -714 363 -711 z m 972 -281 b 1070 -148 1024 -279 1070 -210 b 1025 -105 1070 -105 1045 -112 b 989 -127 1004 -96 998 -114 b 949 -249 963 -164 963 -209 b 969 -281 943 -265 949 -281 b 972 -281 971 -281 971 -281 z m 1018 92 b 1080 118 1041 91 1068 96 b 1117 219 1099 150 1117 180 b 1113 252 1117 229 1116 240 b 1045 288 1102 297 1068 276 b 1017 262 1028 297 1024 274 b 984 124 989 220 996 170 b 1008 91 979 108 986 91 b 1018 92 1011 91 1015 92 z' + }, + 'unpitchedPercussionClef1': { + 'x_min': 0, + 'x_max': 379.13761966945304, + 'y_min': -250, + 'y_max': 250, + 'ha': 500, + 'o': 'm 144 -341 b 207 -320 167 -341 189 -331 b 217 -301 215 -315 217 -308 b 210 -262 217 -289 210 -275 b 228 187 212 -112 209 37 b 228 287 228 220 229 253 b 174 353 228 336 222 343 b 120 359 157 357 138 359 b 48 357 96 359 72 356 b 17 323 29 357 19 344 b 7 120 16 255 9 187 b 6 -109 6 43 6 -33 l 6 -204 b 0 -251 6 -220 0 -235 b 3 -269 0 -256 0 -262 b 127 -340 24 -330 79 -328 b 144 -341 132 -341 138 -341 z m 481 -360 b 507 -357 491 -360 500 -360 b 546 -295 541 -346 547 -325 b 536 79 543 -170 540 -46 b 523 311 533 157 534 235 b 475 359 518 340 508 359 b 425 360 459 359 442 360 b 400 359 416 360 409 360 b 337 294 348 353 340 347 l 337 -73 b 336 -264 337 -137 337 -200 b 343 -294 336 -274 338 -284 b 481 -360 359 -330 431 -360 z' + }, + '6stringTabClef': { + 'x_min': 0, + 'x_max': 438, + 'y_min': -768, + 'y_max': 767, + 'ha': 1535, + 'o': 'm 114 -320 b 127 -304 120 -320 124 -315 b 171 -174 141 -261 158 -219 b 222 -135 179 -147 196 -137 b 426 -122 289 -131 359 -128 b 498 -164 462 -120 482 -127 b 628 -301 521 -226 575 -264 b 631 -288 631 -295 631 -291 b 628 -269 631 -281 629 -276 b 569 -134 616 -220 589 -179 b 408 225 514 -14 462 107 b 314 357 384 274 351 318 b 278 380 298 372 288 379 b 251 351 268 380 261 372 b 4 -209 156 171 75 -17 b 0 -228 1 -215 0 -222 b 19 -258 0 -240 7 -249 b 102 -314 45 -279 75 -294 b 114 -320 107 -318 111 -320 z m 154 -953 b 130 -933 135 -953 130 -948 l 130 -865 l 128 -865 b 135 -788 130 -838 124 -808 b 203 -769 145 -769 180 -776 b 259 -762 223 -765 242 -762 b 441 -852 330 -762 386 -805 b 449 -867 446 -858 449 -863 b 436 -884 449 -874 444 -878 b 318 -942 402 -914 363 -935 b 154 -953 264 -950 209 -953 z m 245 -1106 b 281 -1104 256 -1106 269 -1106 b 511 -888 400 -1094 511 -1035 b 454 -688 511 -814 504 -744 b 448 -678 449 -685 448 -681 b 454 -667 448 -675 449 -671 b 504 -497 503 -619 507 -559 b 324 -288 500 -383 436 -308 b 295 -287 314 -287 304 -287 b 282 -287 291 -287 287 -287 b 115 -330 223 -287 168 -307 b 94 -366 102 -336 94 -348 l 94 -370 b 96 -435 96 -392 96 -413 b 73 -858 89 -576 71 -717 b 78 -919 73 -878 78 -899 b 72 -950 78 -930 76 -940 b 63 -992 66 -965 63 -978 b 66 -1015 63 -999 65 -1008 b 173 -1104 84 -1106 84 -1106 b 245 -1106 197 -1104 220 -1104 z m 161 -622 b 147 -618 156 -622 151 -621 b 140 -600 141 -612 140 -606 b 144 -564 140 -589 144 -575 b 143 -554 144 -560 144 -557 l 143 -546 b 220 -451 144 -467 143 -465 b 278 -445 239 -446 259 -444 b 418 -497 328 -445 376 -461 b 429 -516 426 -504 429 -510 b 415 -533 429 -521 423 -527 b 219 -608 357 -579 287 -590 b 215 -609 217 -608 216 -609 b 161 -622 197 -609 177 -622 z m 425 6 b 360 20 403 17 382 20 b 274 14 331 20 302 14 l 246 14 l 340 206 b 425 6 369 137 395 75 z m 369 438 b 374 439 370 438 372 438 b 384 462 383 444 384 452 l 384 474 b 390 697 386 547 390 622 b 373 1002 390 799 390 901 l 533 1002 b 560 1001 541 1004 552 1001 b 573 1007 567 1001 572 1002 b 546 1050 579 1025 559 1038 b 536 1056 543 1053 539 1053 b 324 1104 472 1102 397 1104 b 72 1090 238 1104 154 1099 b 55 1093 66 1090 60 1092 b 37 1073 46 1093 37 1089 b 60 1045 37 1061 48 1051 b 203 1001 105 1022 151 1001 b 233 1004 213 1001 223 1002 b 246 1005 238 1004 243 1005 b 272 975 264 1005 272 996 b 272 965 272 972 272 969 b 258 596 264 842 265 719 b 315 474 253 540 272 504 l 343 455 b 369 438 351 448 357 438 z' + }, + 'timeSig0': { + 'x_min': 20, + 'x_max': 513, + 'y_min': -358.159536277652, + 'y_max': 359, + 'ha': 717.159536277652, + 'o': 'm 341 -516 b 420 -510 367 -516 395 -514 b 675 -338 533 -494 622 -448 b 737 -92 716 -256 734 -171 b 739 -35 739 -73 739 -53 b 680 305 739 86 720 207 b 400 517 622 449 537 517 b 337 514 380 517 359 517 b 289 507 321 511 305 513 b 91 317 192 477 127 412 b 29 9 50 212 29 108 b 217 -458 29 -157 88 -312 b 341 -516 251 -494 291 -518 z m 412 -452 b 359 -425 393 -452 376 -444 b 187 14 242 -301 179 -158 b 268 334 193 127 212 235 b 387 448 295 383 330 428 b 406 452 395 451 400 452 b 428 444 413 452 420 449 b 517 324 471 413 497 372 b 586 -29 560 222 586 86 b 556 -271 586 -112 585 -193 b 468 -422 536 -327 508 -377 b 412 -452 449 -442 431 -452 z' + }, + 'timeSig1': { + 'x_min': 20, + 'x_max': 283, + 'y_min': -364, + 'y_max': 366, + 'ha': 730, + 'o': 'm 264 -524 b 357 -510 297 -524 325 -516 b 374 -490 369 -508 374 -501 b 380 -438 376 -472 380 -455 l 406 246 b 408 301 408 265 408 282 b 400 445 408 348 405 396 b 288 527 395 491 338 527 b 253 520 276 527 264 526 b 240 508 249 517 245 513 b 49 409 192 445 127 413 b 29 396 33 408 29 403 b 32 380 29 392 30 386 b 59 363 36 366 49 364 b 164 348 95 356 130 348 b 222 357 183 348 203 351 b 238 361 228 360 233 360 b 252 334 248 361 252 353 b 243 59 252 242 249 150 b 219 -490 229 -124 233 -307 b 264 -524 217 -516 232 -524 z' + }, + 'timeSig2': { + 'x_min': 20, + 'x_max': 660.4636303241031, + 'y_min': -378.7201231608281, + 'y_max': 382, + 'ha': 760.720123160828, + 'o': 'm 99 -543 b 130 -533 111 -550 121 -540 b 255 -448 168 -501 213 -475 b 338 -425 282 -431 310 -425 b 392 -431 356 -425 374 -426 b 485 -462 423 -438 454 -451 b 648 -497 540 -482 595 -497 b 834 -441 711 -497 773 -480 b 950 -242 906 -395 958 -334 b 942 -210 950 -230 950 -215 b 912 -220 932 -204 920 -213 b 861 -264 894 -235 877 -248 b 775 -317 835 -289 808 -305 b 675 -334 742 -328 708 -334 b 510 -295 619 -334 563 -318 b 372 -264 465 -278 420 -264 b 305 -272 350 -264 328 -266 b 331 -242 318 -256 324 -249 b 490 -73 386 -187 438 -131 b 675 340 595 43 664 180 b 677 369 677 350 677 360 b 556 536 677 461 638 508 b 468 550 526 546 497 550 b 297 508 409 550 353 533 b 111 354 220 475 168 412 b 29 197 65 308 29 261 b 32 164 29 187 29 176 b 29 140 33 157 29 147 b 43 125 29 132 32 125 b 73 147 55 125 65 138 b 86 163 79 153 82 158 b 238 320 134 219 183 272 b 425 389 292 367 360 389 b 575 341 480 389 531 373 b 606 298 590 330 606 317 b 600 278 606 292 603 285 b 501 107 576 217 544 158 b 304 -104 439 33 372 -35 b 111 -356 230 -180 167 -265 b 84 -446 92 -386 84 -415 b 86 -481 84 -458 85 -469 b 88 -514 88 -491 88 -503 b 99 -543 89 -526 91 -537 z' + }, + 'timeSig3': { + 'x_min': 19.824321427094187, + 'x_max': 540, + 'y_min': -392, + 'y_max': 392, + 'ha': 784, + 'o': 'm 216 -540 b 354 -564 264 -556 310 -564 b 605 -465 445 -564 530 -530 b 729 -161 697 -383 729 -275 b 724 -82 729 -135 727 -108 b 589 95 716 -1 670 62 b 523 114 567 102 546 108 b 750 418 606 213 677 315 b 778 503 769 444 778 472 b 773 540 778 514 776 527 b 750 564 769 557 762 564 b 736 562 746 564 742 563 b 641 552 704 553 672 552 b 402 554 562 552 481 554 l 346 554 b 84 546 258 554 170 554 b 36 501 55 543 40 531 b 29 412 30 472 32 442 b 52 384 27 393 32 384 l 56 384 b 210 392 107 389 158 392 l 602 392 b 354 108 523 285 445 192 b 246 -65 300 58 246 12 b 252 -108 246 -78 248 -92 l 252 -111 b 264 -141 251 -122 251 -135 b 291 -132 274 -145 284 -140 b 425 -72 328 -95 377 -84 b 475 -65 442 -68 459 -65 b 592 -108 517 -65 557 -79 b 645 -179 615 -125 645 -147 b 642 -194 645 -184 644 -189 b 485 -376 616 -278 569 -344 b 361 -399 444 -392 402 -399 b 151 -340 289 -399 219 -376 b 88 -275 122 -323 98 -310 b 71 -249 86 -268 85 -249 b 63 -251 68 -249 66 -249 b 36 -288 48 -255 36 -266 b 55 -423 33 -336 45 -377 b 101 -482 60 -448 78 -468 b 216 -540 138 -504 174 -526 z' + }, + 'timeSig4': { + 'x_min': 20, + 'x_max': 633.0785282750762, + 'y_min': -489.59088556716864, + 'y_max': 491.18559127100053, + 'ha': 980.7764768381692, + 'o': 'm 608 -704 b 641 -684 622 -708 634 -696 b 667 -602 660 -660 662 -631 b 685 -190 683 -465 680 -327 l 685 -176 b 831 -127 736 -166 783 -148 b 912 0 901 -94 913 -76 b 886 53 912 36 904 52 b 848 40 877 53 864 49 l 838 36 b 687 -13 789 14 739 -3 b 681 177 687 50 684 114 b 672 338 678 230 677 285 b 654 373 671 350 672 373 b 622 340 636 373 624 361 b 615 262 621 314 613 288 b 619 -22 616 167 619 72 b 569 -22 602 -23 585 -23 b 305 -3 481 -16 395 -1 b 210 -9 274 -3 242 -4 b 301 163 242 52 268 108 b 513 552 377 288 459 412 b 536 652 526 585 536 618 b 533 683 536 662 534 672 b 520 707 531 691 531 707 b 487 693 508 708 494 704 b 474 668 482 684 477 677 b 384 490 454 603 418 547 b 253 281 343 419 295 351 b 73 -13 194 181 145 78 b 29 -108 50 -42 29 -72 b 37 -147 29 -121 32 -134 b 50 -186 43 -160 50 -173 b 68 -216 52 -207 56 -215 b 92 -207 73 -216 82 -213 b 288 -166 156 -180 220 -166 b 556 -186 377 -166 467 -180 b 586 -189 566 -187 576 -187 b 616 -186 596 -189 606 -189 b 606 -432 613 -268 612 -350 b 596 -625 603 -495 596 -559 b 598 -670 596 -641 596 -655 b 608 -704 598 -683 596 -700 z' + }, + 'timeSig5': { + 'x_min': 19.663871085403297, + 'x_max': 583, + 'y_min': -389, + 'y_max': 389, + 'ha': 778, + 'o': 'm 132 -536 b 249 -560 168 -553 209 -559 b 507 -462 351 -560 454 -514 b 677 -183 588 -384 642 -289 b 694 -85 688 -150 694 -117 b 540 138 694 12 642 94 b 422 173 501 154 462 167 b 400 187 408 174 400 177 b 405 202 400 190 402 196 b 428 284 416 228 426 255 b 469 312 431 307 442 312 b 757 372 569 312 662 343 b 840 490 821 392 840 432 b 812 560 840 540 834 560 b 763 546 801 560 785 556 b 757 543 762 546 759 544 b 465 484 665 505 570 484 b 396 484 452 484 425 487 b 353 454 377 482 366 474 b 281 300 323 405 304 351 b 245 164 262 255 245 212 b 246 144 245 158 246 151 b 233 63 249 115 243 89 b 225 35 228 50 225 40 b 264 14 225 22 236 19 b 445 -26 325 7 387 0 b 569 -151 501 -52 547 -89 b 575 -180 573 -161 575 -170 b 527 -275 575 -217 547 -245 b 347 -367 484 -334 419 -367 b 261 -351 318 -367 289 -363 b 95 -300 206 -333 154 -307 b 55 -321 73 -297 65 -302 b 29 -468 29 -367 40 -419 b 56 -505 26 -482 36 -500 b 132 -536 82 -514 108 -524 z' + }, + 'timeSig6': { + 'x_min': 20, + 'x_max': 565, + 'y_min': -363, + 'y_max': 363, + 'ha': 726, + 'o': 'm 390 -518 b 621 -458 469 -507 549 -494 b 814 -134 753 -390 814 -281 b 652 59 814 -16 750 58 b 580 48 629 59 606 55 b 233 -334 392 -9 276 -138 b 115 -228 181 -314 143 -278 b 98 -160 104 -206 98 -183 b 107 -109 98 -144 101 -127 b 167 37 124 -59 145 -12 b 508 340 236 189 347 292 b 575 353 530 347 553 353 b 648 327 600 353 625 346 b 665 320 654 321 661 320 b 687 336 674 320 681 325 b 703 405 697 359 703 382 b 684 472 703 429 697 451 b 593 523 664 504 631 521 b 576 521 588 523 582 523 b 297 403 472 508 380 465 b 115 177 217 344 164 264 b 29 -121 60 82 29 -17 b 53 -278 29 -173 36 -225 b 226 -497 82 -374 131 -454 b 347 -523 265 -514 305 -523 b 390 -518 361 -523 376 -521 z m 351 -357 b 312 -351 337 -356 320 -363 b 325 -315 304 -340 320 -327 b 543 -120 373 -222 448 -158 b 622 -104 570 -108 596 -102 b 717 -132 655 -104 687 -112 b 740 -167 732 -143 740 -153 b 730 -196 740 -176 737 -184 b 563 -321 690 -258 634 -300 b 359 -357 497 -341 428 -354 z' + }, + 'timeSig7': { + 'x_min': 20.3617407597707, + 'x_max': 592, + 'y_min': -345, + 'y_max': 345, + 'ha': 690, + 'o': 'm 253 -497 b 318 -485 276 -497 297 -487 b 366 -441 348 -482 360 -468 b 487 -104 390 -323 433 -210 b 835 403 580 82 701 246 b 852 436 847 416 852 428 b 815 467 852 451 840 461 b 762 474 798 471 779 474 b 674 445 732 474 701 465 b 603 410 652 431 628 420 b 383 360 533 379 459 360 b 200 435 315 360 249 382 b 88 494 168 469 131 485 b 66 497 81 495 73 497 b 33 484 52 497 39 492 b 50 436 22 469 39 451 b 295 310 114 360 199 324 b 406 301 331 304 369 301 b 593 324 468 301 530 308 b 585 307 589 314 588 310 b 265 -249 451 137 338 -46 b 207 -442 242 -312 223 -377 b 204 -462 206 -449 204 -456 b 253 -497 204 -487 220 -497 z' + }, + 'timeSig8': { + 'x_min': 20, + 'x_max': 504.15101530718516, + 'y_min': -428, + 'y_max': 428, + 'ha': 856, + 'o': 'm 265 -616 b 289 -615 274 -616 281 -616 b 710 -271 492 -592 657 -485 b 726 -148 721 -229 727 -187 b 585 108 726 -48 687 42 b 572 127 576 114 573 120 b 576 144 572 132 575 138 b 598 301 590 196 598 249 b 586 413 598 338 593 376 b 356 616 559 531 467 616 b 233 582 317 616 275 606 b 29 233 101 505 29 384 b 104 9 29 153 46 72 b 189 -48 127 -16 160 -27 b 92 -158 141 -73 114 -114 b 37 -343 63 -217 50 -279 b 33 -390 35 -359 33 -374 b 265 -616 33 -524 148 -616 z m 328 -438 b 158 -276 233 -436 160 -359 b 166 -239 158 -264 161 -252 b 230 -157 176 -203 202 -179 b 367 -72 274 -125 320 -98 b 448 -49 396 -56 423 -49 b 562 -118 491 -49 528 -72 b 611 -251 590 -157 611 -199 b 569 -341 611 -288 595 -318 b 328 -438 500 -402 416 -432 z m 258 105 b 124 148 215 105 167 117 b 96 196 105 163 96 177 b 99 217 96 202 96 209 b 197 384 120 281 151 337 b 350 451 242 429 297 451 b 516 364 412 451 472 422 b 530 331 523 354 530 343 b 530 327 530 330 530 328 l 530 320 b 468 151 520 261 507 200 b 419 122 455 135 442 125 b 258 105 370 117 320 105 z' + }, + 'timeSig9': { + 'x_min': 20, + 'x_max': 494, + 'y_min': -421, + 'y_max': 421, + 'ha': 842, + 'o': 'm 235 -606 b 361 -564 275 -606 318 -593 b 619 -229 487 -482 566 -366 b 706 127 664 -114 694 4 b 711 233 708 163 711 197 b 700 346 711 271 708 308 b 389 606 658 517 530 606 b 351 605 376 606 364 606 b 56 272 171 586 56 441 b 96 98 56 216 69 156 b 334 -53 144 -3 238 -53 b 544 36 408 -53 484 -24 b 652 176 586 78 622 124 b 631 71 645 141 639 105 b 467 -302 599 -63 562 -196 b 271 -442 412 -364 354 -422 b 225 -448 255 -446 239 -448 b 95 -305 148 -448 98 -395 b 89 -255 95 -288 94 -271 b 73 -233 86 -246 85 -233 b 52 -248 65 -233 56 -239 b 29 -317 42 -271 30 -291 b 49 -448 29 -361 40 -405 b 235 -606 69 -541 144 -606 z m 340 104 b 144 209 264 108 194 141 b 127 258 132 225 127 240 b 137 297 127 271 130 284 b 366 449 184 396 269 449 b 517 408 415 449 467 436 b 595 348 546 392 572 372 b 616 305 608 336 616 321 b 609 281 616 298 613 289 b 340 104 557 184 477 104 z' + }, + 'timeSigCommon': { + 'x_min': 20, + 'x_max': 585, + 'y_min': -298, + 'y_max': 294.49658092772603, + 'ha': 592.496580927726, + 'o': 'm 444 -405 b 829 -45 626 -346 740 -207 b 842 26 842 -23 842 1 b 821 58 842 39 841 58 b 795 40 811 58 802 48 b 765 3 785 29 773 16 b 469 -223 690 -104 596 -183 b 354 -242 431 -235 392 -242 b 180 -177 292 -242 235 -223 b 135 -99 154 -157 140 -131 b 132 -59 134 -85 132 -72 b 141 7 132 -37 135 -16 b 449 274 189 160 297 243 b 477 278 459 276 468 276 b 546 203 517 278 539 253 b 517 157 550 177 533 166 b 485 143 507 153 497 143 l 482 143 b 467 148 478 143 472 144 b 374 183 438 170 406 181 b 264 118 333 183 292 161 b 238 48 246 92 238 69 b 261 -9 238 29 245 10 b 383 -73 287 -39 337 -73 b 412 -68 392 -73 402 -72 b 631 164 526 -27 586 59 b 649 252 644 193 649 222 b 636 328 649 278 645 304 b 504 423 615 400 579 429 b 242 318 408 415 317 387 b 29 -158 104 190 29 33 b 30 -176 29 -164 29 -170 b 115 -364 42 -246 52 -315 b 307 -429 177 -410 240 -429 b 444 -405 351 -429 397 -420 z' + }, + 'timeSigCutCommon': { + 'x_min': 20, + 'x_max': 695, + 'y_min': -687.0379164869064, + 'y_max': 687, + 'ha': 1374.0379164869064, + 'o': 'm 564 -989 b 595 -945 585 -991 589 -963 l 599 -922 b 605 -628 600 -824 603 -726 l 609 -399 b 878 -251 706 -363 798 -320 b 996 -85 932 -204 976 -153 b 1001 -63 998 -78 1001 -71 b 989 -46 1001 -56 998 -49 b 978 -43 985 -45 982 -43 b 950 -59 968 -43 959 -49 b 733 -216 894 -132 815 -177 b 611 -259 694 -235 652 -249 b 616 -20 612 -179 615 -99 b 680 29 642 -7 665 9 b 698 43 685 36 690 40 b 870 251 792 82 840 160 b 877 294 874 265 877 279 b 818 410 877 338 855 382 b 683 458 779 442 730 448 b 625 468 664 462 644 465 l 625 514 b 638 958 626 662 636 811 b 626 989 638 979 635 989 b 603 981 621 989 613 986 b 422 840 534 945 481 888 b 412 805 412 832 413 818 b 426 713 410 773 420 743 b 445 678 429 690 435 678 b 474 691 452 678 461 683 b 563 755 503 710 530 732 b 564 724 564 740 564 733 b 559 469 563 639 560 554 b 462 454 526 469 494 464 b 112 143 302 399 199 281 b 33 -94 66 71 45 -10 b 29 -148 30 -112 29 -131 b 105 -351 29 -223 52 -291 b 359 -455 171 -426 258 -451 b 517 -431 409 -451 464 -446 b 539 -422 524 -428 531 -425 l 539 -477 b 533 -739 536 -563 539 -651 b 530 -824 531 -768 530 -795 b 546 -948 530 -865 533 -907 b 564 -989 552 -962 543 -989 z m 410 -288 b 193 -197 328 -288 253 -264 b 141 -60 160 -161 141 -108 b 157 6 141 -35 147 -12 b 259 158 189 58 217 112 b 438 291 311 215 364 266 b 528 305 468 301 498 305 b 554 304 537 305 546 304 b 553 212 554 274 554 242 b 426 115 498 199 446 164 b 416 68 419 99 416 84 b 425 12 416 49 420 30 b 474 -39 432 -17 448 -32 b 513 -43 487 -42 498 -43 b 547 -40 524 -43 536 -42 l 543 -272 b 461 -285 516 -278 488 -281 b 410 -288 444 -287 426 -288 z m 694 197 b 668 203 685 197 677 199 b 621 216 654 210 638 215 b 622 294 622 242 622 268 b 706 268 651 287 678 278 b 746 235 721 261 734 249 b 752 222 749 230 752 226 b 743 213 752 219 749 215 b 694 197 727 206 711 197 z' + }, + 'noteheadDoubleWhole': { + 'x_min': -0.4444444444444444, + 'x_max': 614.1875, + 'y_min': -223.03296670127517, + 'y_max': 223, + 'ha': 446.0329667012752, + 'o': 'm 488 -242 b 693 -79 595 -249 685 -166 l 693 -55 b 690 0 693 -36 691 -17 b 540 187 684 84 621 164 b 449 200 508 196 480 200 b 210 104 363 200 282 163 b 186 56 196 92 186 76 b 207 -82 186 9 192 -37 b 300 -204 225 -132 248 -181 b 488 -242 356 -229 415 -240 z m 35 -321 b 62 -266 58 -318 58 -288 l 62 -194 b 63 50 62 -114 63 -32 b 60 189 63 96 63 143 b 43 300 59 226 60 265 b 29 321 40 308 39 321 l 26 321 b 0 292 13 318 0 310 b 0 248 0 278 -1 262 b 6 147 4 215 6 181 b 4 48 6 114 4 81 b 6 0 4 32 6 16 b 7 -36 7 -12 7 -24 l 7 -52 b 6 -156 7 -86 6 -121 b 19 -275 6 -196 9 -236 b 35 -321 23 -291 16 -323 z m 128 -261 b 144 -251 135 -264 141 -256 b 158 -203 156 -236 157 -220 b 161 -137 161 -181 161 -158 b 157 30 161 -81 157 -26 b 158 76 157 45 157 60 l 158 101 b 156 225 158 141 158 183 b 137 253 156 235 154 253 l 134 253 b 109 222 120 251 109 242 b 104 91 108 179 104 134 b 108 -58 104 42 109 -9 b 107 -105 108 -73 108 -89 b 105 -127 107 -112 107 -120 b 118 -245 105 -167 114 -204 b 128 -261 118 -252 121 -259 z m 490 -88 b 449 -86 477 -88 464 -88 b 287 -56 399 -85 341 -78 b 258 -33 275 -52 258 -48 b 282 -7 258 -20 272 -13 b 458 43 340 23 399 43 b 580 14 497 43 537 35 b 618 -20 606 1 619 -9 b 592 -58 618 -30 609 -42 b 490 -88 562 -82 528 -88 z m 757 -291 b 793 -171 796 -255 792 -212 b 795 -49 795 -131 795 -91 b 786 207 795 36 791 121 b 779 240 786 217 783 229 b 766 258 776 246 776 258 b 762 256 765 258 763 256 b 739 236 752 253 740 252 b 733 177 737 216 732 197 b 737 20 737 125 739 73 l 737 -107 b 740 -202 737 -138 739 -170 b 757 -291 740 -230 743 -261 z m 847 -314 b 871 -288 860 -315 867 -300 b 884 -187 881 -255 886 -222 b 876 115 878 -86 876 14 b 877 255 876 161 876 209 b 868 291 877 268 873 279 b 855 304 867 301 863 304 b 844 301 852 304 848 304 b 822 265 825 292 822 278 b 824 251 822 259 822 255 b 822 170 822 225 822 197 l 822 -20 b 835 -284 827 -86 825 -186 b 847 -314 837 -295 835 -311 z' + }, + 'noteheadWhole': { + 'x_min': 0, + 'x_max': 380.16649762501584, + 'y_min': -186.17102907059297, + 'y_max': 165, + 'ha': 351.17102907059297, + 'o': 'm 547 40 b 223 -268 543 -151 367 -259 b 102 -233 180 -271 143 -248 l 62 -216 b 0 -127 22 -197 0 -166 b 6 -91 0 -115 1 -104 b 122 141 33 -9 69 71 b 327 238 170 204 249 238 b 514 158 397 238 467 212 b 547 40 544 125 549 84 z m 248 -107 b 384 -63 295 -102 341 -88 b 426 -23 402 -53 415 -40 b 435 3 432 -14 435 -6 b 413 32 435 14 428 24 b 301 73 376 49 343 73 b 272 69 291 73 282 72 b 121 -35 207 53 157 20 b 111 -58 117 -42 111 -50 b 125 -75 111 -65 115 -71 b 248 -107 164 -89 202 -107 z' + }, + 'noteheadHalf': { + 'x_min': 0, + 'x_max': 334, + 'y_min': -174, + 'y_max': 175, + 'ha': 349, + 'o': 'm 480 56 b 167 -251 478 -115 331 -251 b 94 -242 143 -251 118 -248 b 9 -141 43 -229 20 -192 b 0 -68 3 -115 0 -91 b 284 249 0 95 127 200 b 304 252 289 251 297 252 b 481 78 374 252 481 170 b 480 56 481 71 481 63 z m 213 -102 b 399 6 274 -81 341 -48 b 402 17 400 7 402 13 b 399 27 402 22 400 26 b 311 94 373 53 353 88 b 292 95 305 95 300 95 b 130 27 230 95 181 55 b 69 -62 98 9 62 -29 b 161 -98 76 -98 128 -91 b 213 -102 174 -101 186 -101 z' + }, + 'noteheadBlack': { + 'x_min': 0, + 'x_max': 334.04644433966797, + 'y_min': -164, + 'y_max': 164, + 'ha': 328, + 'o': 'm 112 -233 b 141 -236 122 -235 131 -236 b 481 104 279 -236 485 -48 b 403 222 477 141 478 192 b 334 236 382 232 359 236 b 1 -59 180 236 13 59 b 0 -85 1 -68 0 -76 b 112 -233 0 -157 32 -215 z' + }, + 'noteheadXWhole': { + 'x_min': 0, + 'x_max': 506, + 'y_min': -143.0823320899293, + 'y_max': 144, + 'ha': 287.0823320899293, + 'o': 'm 53 -206 b 219 -163 117 -207 170 -196 b 314 -102 249 -141 282 -122 b 377 -63 334 -89 356 -76 b 514 -161 422 -96 468 -128 b 576 -196 534 -174 552 -196 b 589 -193 580 -196 585 -196 b 688 -174 625 -194 657 -181 b 711 -158 698 -171 711 -173 b 696 -143 711 -151 701 -147 b 503 -9 632 -98 567 -52 b 485 4 497 -4 491 0 b 704 145 559 49 634 95 b 729 164 711 150 729 151 l 729 168 b 696 196 726 183 710 193 b 621 207 671 202 645 207 b 528 177 589 207 557 200 b 373 76 480 140 426 108 b 246 164 330 104 287 132 b 122 206 207 193 167 203 b 66 192 102 207 72 207 b 99 147 58 173 85 158 b 274 14 157 102 215 58 b 16 -164 184 -42 96 -98 b 0 -179 12 -168 0 -170 b 1 -183 0 -180 0 -183 b 26 -204 6 -193 12 -204 b 53 -206 37 -206 49 -206 z m 611 -177 b 376 -9 530 -118 452 -63 b 164 -143 305 -53 235 -98 b 104 -164 147 -154 130 -164 b 82 -161 96 -164 89 -164 b 230 -65 137 -125 183 -95 l 347 12 b 327 26 341 16 334 22 b 196 121 284 58 239 89 b 163 147 184 128 173 137 b 140 173 154 154 140 163 b 143 180 140 176 141 177 b 179 166 154 194 167 174 b 372 27 243 120 307 73 l 566 153 b 613 171 580 161 596 170 b 635 160 624 171 635 174 b 621 147 635 153 626 150 l 429 24 b 400 6 419 19 409 13 b 569 -117 456 -35 513 -75 b 611 -177 588 -130 608 -143 z' + }, + 'noteheadXHalf': { + 'x_min': 0, + 'x_max': 421, + 'y_min': -145.51844828189743, + 'y_max': 151, + 'ha': 296.51844828189746, + 'o': 'm 490 -209 b 539 -207 505 -207 521 -207 b 606 -209 560 -207 583 -209 b 598 -196 602 -203 600 -199 b 406 -19 533 -135 469 -78 l 540 130 b 547 144 546 135 547 140 b 536 156 547 148 543 153 b 488 192 518 166 503 176 b 416 217 471 209 444 217 b 323 180 380 217 344 204 l 264 115 b 239 138 256 122 248 131 b 33 197 180 196 108 200 b 3 186 23 197 6 193 b 19 154 -1 174 10 163 b 171 12 69 107 120 59 b 19 -157 120 -45 69 -101 b 0 -177 14 -163 0 -166 b 1 -181 0 -179 0 -180 b 39 -203 9 -197 22 -203 l 186 -203 b 197 -202 190 -202 193 -200 b 213 -202 203 -202 207 -202 b 262 -180 228 -202 246 -199 b 314 -122 279 -161 297 -141 b 490 -209 363 -170 412 -216 z m 435 -148 b 291 -30 379 -112 337 -69 l 213 -118 b 190 -137 207 -125 202 -137 b 145 -111 173 -130 154 -127 b 160 -79 137 -98 151 -88 b 238 16 184 -48 212 -16 b 141 99 204 43 173 72 b 124 117 135 105 130 111 b 115 132 121 121 115 127 b 118 137 115 134 117 137 b 141 132 127 147 135 138 l 253 36 b 347 150 285 75 315 112 b 370 164 354 160 363 163 b 403 145 382 164 393 156 b 416 127 412 140 416 132 b 405 102 416 118 412 111 l 307 -10 b 413 -105 343 -42 379 -73 b 435 -148 425 -115 436 -125 z' + }, + 'noteheadXBlack': { + 'x_min': 0, + 'x_max': 289, + 'y_min': -156, + 'y_max': 157, + 'ha': 313, + 'o': 'm 23 -225 b 69 -204 40 -223 56 -219 b 137 -131 92 -180 115 -157 l 209 -50 b 377 -197 264 -101 321 -148 b 403 -210 384 -203 393 -210 b 408 -210 405 -210 406 -210 b 416 -192 416 -207 416 -199 b 416 -186 416 -190 416 -187 b 403 -148 416 -171 413 -158 b 344 -81 384 -125 367 -101 b 252 -1 312 -55 282 -29 b 377 157 297 49 340 101 b 402 202 387 170 402 187 b 395 217 402 207 400 213 b 376 226 389 223 382 226 b 334 192 360 226 346 204 b 206 42 289 143 248 94 b 96 161 167 81 131 120 b 60 193 86 174 76 189 b 33 206 52 196 42 206 b 22 199 29 206 26 204 b 10 173 14 190 10 181 b 22 147 10 166 14 157 b 148 7 62 98 104 52 b 164 -7 154 1 158 -3 b 10 -189 111 -66 55 -122 b 0 -212 6 -197 0 -203 b 1 -217 0 -213 0 -216 b 23 -225 4 -226 14 -222 z' + }, + 'noteheadCircleX': { + 'x_min': 0, + 'x_max': 344, + 'y_min': -179, + 'y_max': 175.12551922594866, + 'ha': 354.12551922594866, + 'o': 'm 99 -210 b 236 -258 137 -242 186 -258 b 418 -183 305 -258 374 -230 b 495 33 475 -120 495 -48 b 494 66 495 45 494 55 b 302 252 487 183 405 256 b 181 243 262 249 222 248 b 46 171 128 236 79 219 b 0 19 14 127 0 73 b 99 -210 0 -68 35 -156 z m 89 -120 b 48 0 56 -82 48 -42 b 89 112 48 35 59 76 b 109 101 96 111 102 108 l 210 7 l 187 -17 b 89 -120 151 -53 125 -82 z m 176 -183 b 127 -163 158 -179 141 -171 l 252 -32 l 372 -144 b 233 -189 334 -173 285 -189 b 176 -183 215 -189 196 -187 z m 245 42 b 124 156 204 79 164 118 b 200 176 145 166 170 173 b 337 183 245 181 291 184 b 377 176 351 183 364 180 b 245 42 333 131 288 86 z m 405 -112 l 392 -99 l 285 3 l 400 121 b 418 154 409 131 418 140 b 465 50 448 130 465 94 b 405 -112 462 -17 439 -73 z' + }, + 'noteheadTriangleUpWhole': { + 'x_min': 0, + 'x_max': 366, + 'y_min': -145, + 'y_max': 138, + 'ha': 283, + 'o': 'm 55 -209 l 504 -209 b 527 -199 520 -209 527 -206 b 520 -180 527 -193 524 -187 b 459 -94 501 -151 480 -122 b 279 170 400 -6 341 82 b 242 199 266 190 253 199 b 206 167 230 199 219 189 b 10 -145 140 63 76 -42 b 0 -171 3 -156 0 -164 b 23 -200 0 -183 9 -192 b 55 -209 33 -206 45 -209 z m 202 -161 b 176 -137 183 -163 176 -156 b 187 -62 176 -111 179 -86 b 253 95 206 -10 228 42 b 337 -132 307 24 334 -49 b 311 -161 338 -153 334 -161 b 256 -160 294 -161 275 -160 b 202 -161 238 -160 220 -161 z' + }, + 'noteheadTriangleUpHalf': { + 'x_min': 0, + 'x_max': 341.0833130378007, + 'y_min': -159, + 'y_max': 159, + 'ha': 318, + 'o': 'm 458 -226 b 478 -229 462 -223 469 -229 b 490 -222 482 -229 487 -228 b 477 -184 495 -207 484 -196 b 281 176 410 -65 346 56 b 238 225 269 194 261 213 b 225 229 232 226 228 228 b 209 215 217 229 213 225 b 4 -153 141 92 73 -30 b 0 -170 1 -158 0 -164 b 12 -189 0 -177 4 -183 b 66 -215 27 -202 43 -213 b 458 -226 194 -217 323 -222 z m 278 -170 l 151 -167 b 298 75 204 -89 240 -1 b 301 82 300 76 301 79 b 357 -22 320 48 338 13 b 344 -43 353 -27 350 -37 b 285 -163 317 -79 312 -127 b 278 -170 282 -166 279 -167 z' + }, + 'noteheadTriangleUpBlack': { + 'x_min': 0, + 'x_max': 346, + 'y_min': -149, + 'y_max': 149, + 'ha': 298, + 'o': 'm 481 -215 b 498 -209 487 -215 492 -215 b 482 -173 498 -194 488 -184 l 284 173 b 259 202 278 184 269 194 b 229 215 248 210 238 215 b 196 189 216 215 206 206 l 13 -150 b 3 -168 9 -156 6 -163 b 0 -180 1 -173 0 -177 b 12 -197 0 -187 4 -193 b 63 -213 29 -206 45 -213 b 481 -215 203 -213 343 -215 z' + }, + 'noteheadDiamondWhole': { + 'x_min': 0, + 'x_max': 271, + 'y_min': -132, + 'y_max': 132, + 'ha': 264, + 'o': 'm 230 -177 b 256 -190 240 -186 249 -190 b 281 -173 265 -190 272 -184 b 382 -29 314 -124 347 -76 b 390 -10 387 -22 390 -14 b 376 12 390 -3 386 4 b 173 177 308 66 240 121 b 144 190 166 183 160 190 b 98 153 127 186 112 170 b 13 40 69 115 42 76 b 0 13 4 29 0 20 b 22 -19 0 3 7 -9 b 230 -177 92 -69 163 -122 z m 279 -128 b 261 -122 274 -134 266 -127 l 66 30 b 56 45 59 35 56 39 b 62 56 56 48 59 52 b 122 122 91 101 105 122 b 194 76 138 122 158 107 l 320 -26 b 336 -50 325 -32 336 -35 b 279 -128 318 -75 300 -102 z' + }, + 'noteheadDiamondHalf': { + 'x_min': 0, + 'x_max': 295, + 'y_min': -148, + 'y_max': 148, + 'ha': 296, + 'o': 'm 228 -207 b 245 -213 235 -210 240 -213 b 264 -203 252 -213 258 -210 b 415 -46 314 -150 364 -98 b 425 -27 420 -40 425 -35 b 416 -10 425 -22 422 -16 b 217 200 350 60 284 131 b 194 213 212 207 204 213 b 170 196 181 213 177 203 b 14 33 118 143 68 86 b 0 7 4 23 0 16 b 17 -20 0 -1 6 -10 b 118 -114 52 -50 82 -85 b 228 -207 156 -144 184 -184 z m 209 -157 b 134 -69 177 -138 141 -115 b 130 -26 131 -55 130 -40 b 215 148 130 42 160 99 b 225 156 217 151 220 156 b 230 153 226 156 228 156 b 323 -26 276 104 321 55 b 298 -75 324 -42 315 -59 b 265 -109 287 -86 276 -99 b 209 -157 245 -125 228 -167 z' + }, + 'noteheadDiamondBlack': { + 'x_min': 0, + 'x_max': 310, + 'y_min': -146, + 'y_max': 146, + 'ha': 292, + 'o': 'm 266 -210 b 289 -194 278 -209 284 -200 b 406 -76 330 -156 367 -115 b 446 -23 433 -49 446 -36 b 412 29 446 -10 435 3 b 405 36 409 30 408 33 b 252 196 354 89 304 143 b 225 210 243 204 235 210 b 204 202 219 210 212 209 b 10 24 141 141 75 82 b 0 9 4 19 0 14 b 9 -6 0 4 3 0 l 232 -192 b 266 -210 242 -200 256 -204 z' + }, + 'noteheadSquareWhite': { + 'x_min': 0, + 'x_max': 350, + 'y_min': -131, + 'y_max': 131, + 'ha': 262, + 'o': 'm 468 -189 b 485 -187 474 -189 480 -189 b 500 -176 495 -187 500 -183 b 498 -168 500 -174 498 -171 b 497 -166 498 -167 497 -167 l 498 -164 b 504 -154 503 -163 504 -158 b 503 -138 504 -150 503 -144 b 503 -135 503 -137 503 -137 l 503 -94 b 492 66 500 -45 494 10 b 488 135 492 89 488 112 b 484 150 488 141 485 145 b 482 154 482 151 482 153 b 429 189 472 177 456 189 b 53 184 304 186 179 186 l 39 184 b 33 181 36 183 35 183 b 12 160 20 181 12 177 b 0 -109 9 71 4 -19 b 19 -137 0 -125 7 -134 b 23 -151 19 -141 20 -145 b 85 -187 37 -173 55 -187 b 468 -189 212 -187 340 -187 z m 246 -127 l 246 -125 l 63 -125 b 66 -111 65 -122 66 -117 b 73 72 69 -50 71 10 l 73 130 b 88 128 78 128 82 128 b 148 130 108 130 128 130 b 271 128 190 130 230 128 l 271 130 l 420 130 b 428 20 425 92 425 56 l 436 -127 z' + }, + 'noteheadSquareBlack': { + 'x_min': 0, + 'x_max': 342, + 'y_min': -129.98961937716263, + 'y_max': 132.44444444444446, + 'ha': 262.4340638216071, + 'o': 'm 217 190 b 439 186 304 190 372 190 b 467 180 448 184 458 183 b 492 145 484 176 492 167 b 490 -124 490 56 490 -33 b 488 -141 490 -130 488 -135 b 456 -170 488 -163 478 -168 b 118 -183 344 -176 230 -181 b 29 -184 89 -183 60 -192 b 0 -148 4 -180 0 -168 b 1 29 1 -89 1 -30 b 1 156 1 71 1 114 b 36 190 3 187 4 190 b 217 190 102 192 168 190 z' + }, + 'augmentationDot': { + 'x_min': 0, + 'x_max': 96, + 'y_min': -57, + 'y_max': 57, + 'ha': 114, + 'o': 'm 13 -82 b 16 -81 14 -82 14 -82 b 105 -73 46 -76 75 -76 b 131 -48 121 -72 131 -60 b 138 26 134 -24 138 0 b 137 48 138 33 138 40 b 108 82 134 71 125 82 b 95 81 104 82 99 82 b 33 71 75 78 53 75 b 4 46 20 68 6 62 b 0 -66 1 9 0 -29 b 13 -82 0 -73 1 -82 z' + }, + 'tremolo1': { + 'x_min': -158, + 'x_max': 156.19381479578487, + 'y_min': -88, + 'y_max': 88, + 'ha': 176, + 'o': 'm -206 -127 b -194 -125 -203 -127 -199 -127 b 173 -36 -72 -94 50 -65 b 220 16 202 -29 215 -12 b 225 50 223 30 225 45 b 216 107 226 76 222 91 b 194 127 210 120 204 127 b 183 124 192 127 189 127 l -192 33 b -226 -9 -213 27 -222 14 b -228 -32 -226 -16 -228 -23 b -222 -108 -228 -58 -222 -82 b -206 -127 -222 -120 -217 -127 z' + }, + 'flag8thUp': { + 'x_min': 0, + 'x_max': 261, + 'y_min': -819, + 'y_max': 0, + 'ha': 819, + 'o': 'm 265 -1171 b 351 -1035 301 -1130 336 -1087 b 376 -867 369 -979 376 -923 b 367 -755 376 -829 373 -792 b 233 -422 350 -632 311 -520 b 131 -291 199 -379 166 -334 b 65 -125 91 -239 66 -192 b 62 -75 65 -112 62 -91 b 42 0 62 -49 52 -24 l 35 0 b 0 -63 6 -13 0 -36 l 0 -144 b 96 -445 0 -255 29 -356 b 177 -547 124 -478 150 -514 b 308 -831 246 -629 298 -721 b 317 -890 310 -851 317 -871 b 311 -919 317 -900 315 -910 b 256 -1005 297 -950 282 -984 b 228 -1068 233 -1024 228 -1045 b 230 -1106 228 -1080 229 -1093 b 240 -1162 232 -1125 239 -1143 b 251 -1179 242 -1174 246 -1179 b 265 -1171 255 -1179 259 -1176 z' + }, + 'flag8thDown': { + 'x_min': 0, + 'x_max': 261, + 'y_min': 0, + 'y_max': 819, + 'ha': 819, + 'o': 'm 265 1171 b 251 1179 259 1176 255 1179 b 240 1162 246 1179 242 1174 b 230 1106 239 1143 232 1125 b 228 1068 229 1093 228 1080 b 256 1005 228 1045 233 1024 b 311 919 282 984 297 950 b 317 890 315 910 317 900 b 308 831 317 871 310 851 b 177 547 298 721 246 629 b 96 445 150 514 124 478 b 0 144 29 356 0 255 l 0 63 b 35 0 0 36 6 13 l 42 0 b 62 75 52 24 62 49 b 59 117 62 91 59 104 b 131 291 60 183 91 239 b 233 422 166 334 199 379 b 367 755 311 520 350 632 b 376 867 373 792 376 829 b 351 1035 376 923 369 979 b 265 1171 336 1087 301 1130 z' + }, + 'flag16thUp': { + 'x_min': 0, + 'x_max': 327.1591498636094, + 'y_min': -819.3972596310256, + 'y_max': 0, + 'ha': 819.3972596310256, + 'o': 'm 415 -1179 b 435 -1168 423 -1182 429 -1174 b 451 -1138 442 -1159 446 -1149 b 465 -1020 464 -1102 467 -1064 b 461 -962 464 -1004 464 -984 b 471 -821 467 -916 472 -870 b 465 -721 472 -791 467 -756 b 415 -520 459 -651 441 -585 b 200 -245 370 -408 284 -327 b 96 -114 160 -206 118 -168 b 75 -24 84 -85 85 -53 b 59 0 72 -16 72 0 b 53 -1 58 0 56 -1 b 27 -32 40 -6 27 -10 b 29 -68 27 -43 29 -55 b 10 -79 20 -69 13 -72 b 1 -109 6 -89 1 -99 b 0 -170 0 -130 0 -148 b 35 -410 0 -252 12 -333 b 258 -793 76 -557 156 -681 b 409 -1158 350 -896 410 -1014 b 415 -1179 409 -1165 405 -1175 z m 413 -816 b 331 -681 392 -769 364 -723 b 145 -420 266 -596 189 -521 b 86 -281 125 -374 102 -330 b 156 -370 105 -312 128 -343 b 318 -539 210 -425 269 -478 b 413 -816 383 -621 420 -713 z' + }, + 'flag16thDown': { + 'x_min': 0, + 'x_max': 327.1591498636094, + 'y_min': 0, + 'y_max': 819, + 'ha': 819, + 'o': 'm 59 0 b 75 24 72 0 72 16 b 96 114 85 53 84 85 b 200 245 118 168 160 206 b 415 520 284 327 370 408 b 465 721 441 585 459 651 b 471 821 467 756 472 791 b 461 962 472 870 467 916 b 465 1020 464 984 464 1004 b 451 1138 467 1064 464 1102 b 435 1168 446 1149 442 1159 b 418 1179 431 1172 425 1179 b 415 1179 418 1179 416 1179 b 408 1169 409 1176 408 1174 b 409 1158 408 1165 409 1161 b 258 793 410 1014 350 896 b 35 410 156 681 76 557 b 0 170 12 333 0 252 b 0 88 0 148 0 108 b 29 7 0 71 6 23 b 59 0 33 4 58 0 z m 86 281 b 145 420 102 330 125 374 b 331 681 189 521 266 596 b 413 816 364 723 392 769 b 415 791 413 808 415 799 b 318 539 415 698 377 613 b 156 370 269 478 210 425 b 86 281 128 343 105 312 z' + }, + 'flag32ndUp': { + 'x_min': -0.19862981551275186, + 'x_max': 268.0942440943661, + 'y_min': -849.4710740978672, + 'y_max': 149.0769891455102, + 'ha': 998.5480632433774, + 'o': 'm 323 -1223 b 351 -1198 337 -1227 344 -1210 b 359 -1184 354 -1194 356 -1188 b 386 -999 377 -1122 387 -1060 b 341 -783 386 -927 372 -855 b 330 -736 334 -769 330 -753 b 333 -708 330 -727 330 -717 b 344 -621 340 -678 344 -649 b 341 -579 344 -608 343 -593 b 328 -500 338 -553 328 -526 b 331 -475 328 -491 328 -484 b 347 -370 343 -438 348 -402 b 151 27 348 -212 288 -56 b 53 176 98 59 50 102 b 45 197 53 183 48 192 b 33 215 40 203 40 216 l 30 215 b 6 194 22 212 9 209 b 0 120 3 170 -1 145 b 0 -43 4 65 0 13 b 0 -98 0 -60 1 -79 b 4 -276 0 -157 6 -216 b 7 -456 4 -337 7 -397 b 66 -638 7 -523 22 -585 b 158 -724 94 -671 127 -697 b 318 -1011 246 -801 295 -899 b 321 -1044 321 -1021 321 -1032 b 312 -1152 321 -1080 312 -1116 b 317 -1192 312 -1165 314 -1179 b 323 -1223 320 -1202 311 -1220 z m 275 -657 b 111 -492 226 -589 163 -547 b 65 -376 78 -456 66 -418 b 71 -323 65 -360 68 -341 b 275 -657 164 -418 265 -504 z m 285 -376 b 121 -180 249 -289 173 -245 b 91 -105 104 -158 92 -135 b 288 -354 181 -144 288 -269 b 285 -376 288 -363 287 -370 z' + }, + 'flag32ndDown': { + 'x_min': -2.800802874905624, + 'x_max': 268.09424409436605, + 'y_min': -169.07698914551014, + 'y_max': 829.4710740978672, + 'ha': 998.5480632433773, + 'o': 'm 323 1194 b 317 1164 311 1191 320 1174 b 312 1123 314 1151 312 1136 b 321 1015 312 1087 321 1051 b 318 982 321 1004 321 992 b 158 696 295 870 246 772 b 66 609 127 668 94 642 b 7 428 22 556 7 494 b 4 248 7 369 4 308 b -1 78 6 187 -10 137 b 0 14 0 59 0 32 b 0 -148 0 -42 0 -94 b 6 -223 0 -174 3 -199 b 30 -243 9 -238 22 -240 l 33 -243 b 45 -226 40 -245 40 -232 b 53 -204 48 -220 53 -212 b 151 -56 50 -131 98 -88 b 347 341 288 27 348 183 b 331 446 348 373 343 409 b 328 471 328 455 328 462 b 341 550 328 497 338 524 b 344 592 343 564 344 579 b 333 680 344 621 340 649 b 330 707 330 688 330 698 b 341 755 330 724 334 740 b 386 971 372 827 386 899 b 359 1155 387 1031 377 1093 b 351 1169 356 1159 354 1165 b 323 1194 344 1181 337 1198 z m 275 628 b 71 294 265 475 164 389 b 65 347 68 312 65 331 b 111 464 66 389 78 428 b 275 628 163 518 226 560 z m 285 347 b 288 325 287 341 288 334 b 91 76 288 240 181 115 b 121 151 92 107 104 130 b 285 347 173 216 249 261 z' + }, + 'flag64thUp': { + 'x_min': -4, + 'x_max': 282, + 'y_min': -823.5430338167067, + 'y_max': 347, + 'ha': 1170.5430338167066, + 'o': 'm 350 -1185 b 380 -1162 364 -1189 374 -1175 b 406 -1022 399 -1119 406 -1071 b 359 -798 406 -945 384 -871 b 348 -756 353 -785 348 -772 b 350 -744 348 -753 350 -749 b 363 -621 356 -704 363 -664 b 360 -580 363 -608 363 -593 b 359 -560 359 -573 359 -567 b 373 -490 359 -536 366 -513 b 393 -346 386 -444 393 -395 b 387 -269 393 -320 390 -294 b 348 -127 382 -219 348 -173 b 351 -104 348 -120 348 -111 b 353 -65 351 -91 353 -78 b 341 37 353 -26 348 6 b 226 215 323 108 278 164 b 86 336 181 258 127 288 b 62 395 72 353 62 370 b 42 481 62 423 55 454 b 27 500 37 488 36 500 b 24 498 26 500 26 500 b -1 480 14 497 1 492 b -6 444 -4 467 -6 455 l -6 435 b -1 341 -1 403 -1 372 l -1 266 b 6 156 -1 230 0 193 b 13 35 12 117 13 75 l 13 -35 b 14 -85 13 -52 14 -68 b 29 -276 19 -150 33 -213 b 20 -448 24 -334 20 -392 b 24 -534 20 -477 22 -505 b 114 -708 30 -605 59 -664 b 197 -780 143 -732 171 -755 b 344 -1153 301 -884 341 -1011 b 343 -1172 344 -1159 343 -1166 b 350 -1185 343 -1176 344 -1182 z m 300 -691 b 117 -508 243 -616 168 -575 b 82 -408 94 -480 82 -448 b 84 -379 82 -397 82 -387 b 259 -553 135 -451 206 -492 b 301 -667 287 -583 301 -619 b 300 -691 301 -674 301 -683 z m 298 -410 b 118 -235 238 -351 176 -295 b 76 -88 82 -197 78 -147 b 268 -252 137 -153 203 -202 b 330 -360 304 -279 330 -315 b 323 -402 330 -373 327 -387 b 311 -418 318 -413 315 -418 b 298 -410 307 -418 302 -415 z m 287 -88 b 62 193 186 -17 79 48 b 229 52 121 144 174 98 b 289 -33 256 29 274 -3 b 295 -56 294 -42 295 -49 b 287 -88 295 -66 292 -76 z' + }, + 'flag64thDown': { + 'x_min': -5, + 'x_max': 281, + 'y_min': -375, + 'y_max': 795.5430338167066, + 'ha': 1170.5430338167066, + 'o': 'm 348 1145 b 341 1132 343 1142 341 1136 b 343 1113 341 1126 343 1119 b 196 740 340 971 300 844 b 112 668 170 714 141 691 b 23 494 58 624 29 564 b 19 408 20 465 19 436 b 27 236 19 351 23 294 b 13 45 32 173 17 109 b 12 -6 13 27 12 12 l 12 -75 b 4 -196 12 -115 10 -157 b -3 -307 -1 -233 -3 -271 l -3 -382 b -7 -475 -3 -412 -3 -444 l -7 -484 b -3 -520 -7 -495 -6 -507 b 23 -539 0 -533 13 -537 b 26 -540 24 -540 24 -540 b 40 -521 35 -540 36 -528 b 60 -435 53 -494 60 -464 b 85 -376 60 -410 71 -393 b 225 -255 125 -328 180 -298 b 340 -78 276 -204 321 -148 b 351 24 347 -46 351 -14 b 350 63 351 37 350 50 b 347 86 347 71 347 79 b 386 229 347 132 380 179 b 392 305 389 253 392 279 b 372 449 392 354 384 403 b 357 520 364 472 357 495 b 359 540 357 527 357 533 b 361 580 361 553 361 567 b 348 704 361 624 354 664 b 347 716 348 708 347 713 b 357 757 347 732 351 744 b 405 982 383 831 405 904 b 379 1122 405 1031 397 1079 b 348 1145 373 1135 363 1149 z m 298 651 b 300 626 300 642 300 634 b 258 513 300 579 285 543 b 82 338 204 452 134 410 b 81 367 81 347 81 357 b 115 468 81 408 92 439 b 298 651 167 534 242 576 z m 297 370 b 310 377 301 374 305 377 b 321 361 314 377 317 373 b 328 320 325 347 328 333 b 266 212 328 275 302 239 b 75 48 202 161 135 112 b 117 194 76 107 81 157 b 297 370 174 255 236 311 z m 285 48 b 294 16 291 36 294 26 b 288 -7 294 9 292 1 b 228 -92 272 -37 255 -69 b 60 -233 173 -138 120 -184 b 285 48 78 -88 184 -23 z' + }, + 'flag128thUp': { + 'x_min': 0, + 'x_max': 252, + 'y_min': -804, + 'y_max': 530, + 'ha': 1334, + 'o': 'm 298 -1158 b 328 -1126 312 -1158 320 -1139 b 330 -1116 330 -1123 330 -1119 b 347 -996 343 -1076 347 -1037 b 328 -837 347 -943 338 -890 b 320 -778 324 -816 320 -798 b 330 -733 320 -763 323 -749 b 340 -665 338 -714 337 -688 b 341 -645 340 -660 341 -652 b 333 -534 341 -609 333 -572 b 343 -471 333 -513 334 -492 b 361 -366 356 -436 361 -402 b 331 -202 361 -311 348 -256 b 328 -187 330 -197 328 -193 b 331 -179 328 -184 328 -181 b 363 -55 353 -137 363 -96 b 337 79 363 -12 351 33 b 327 114 333 92 327 104 b 344 144 327 124 331 132 b 359 174 353 150 357 163 b 361 228 360 193 361 210 b 243 517 361 337 325 435 b 147 596 213 546 179 569 b 75 708 111 626 75 655 b 62 744 75 723 68 733 b 50 763 58 752 58 763 b 46 762 49 763 48 762 b 17 742 36 757 22 757 b 0 697 14 726 0 711 b 1 595 0 662 3 631 b 0 469 0 552 0 511 b 1 429 0 456 0 442 b 22 289 6 382 22 337 b 24 128 22 238 24 184 b 22 66 24 108 23 86 b 19 -19 20 37 19 10 b 20 -132 19 -56 20 -95 b 13 -276 20 -180 19 -229 b 9 -359 10 -304 9 -330 b 12 -487 9 -402 12 -445 b 56 -582 12 -526 29 -554 b 197 -742 107 -632 160 -681 b 288 -1100 265 -851 276 -976 b 288 -1122 288 -1107 287 -1115 b 287 -1145 289 -1129 287 -1138 b 298 -1158 287 -1153 288 -1158 z m 249 -609 b 69 -357 197 -520 88 -471 b 249 -609 131 -441 229 -498 z m 279 -396 b 132 -223 233 -330 180 -279 b 81 -112 104 -192 81 -156 b 82 -91 81 -105 81 -98 b 279 -396 167 -125 269 -281 z m 271 -73 b 127 72 233 -14 179 26 b 81 167 96 98 81 127 b 84 194 81 176 82 184 b 271 -73 148 102 242 39 z m 304 150 b 75 475 229 256 112 334 b 304 150 233 357 305 287 z' + }, + 'flag128thDown': { + 'x_min': -0.8888888888888888, + 'x_max': 252, + 'y_min': -580, + 'y_max': 754, + 'ha': 1334, + 'o': 'm 298 1086 b 287 1073 288 1086 287 1081 b 288 1050 287 1066 289 1057 b 288 1028 287 1043 288 1035 b 197 670 276 904 265 779 b 56 510 160 609 107 560 b 12 415 29 482 12 454 b 9 287 12 373 9 330 b 13 204 9 258 10 232 b 20 60 19 157 20 108 b 19 -53 20 23 19 -16 b 22 -138 19 -82 20 -109 b 24 -200 23 -158 24 -180 b 22 -361 24 -256 22 -310 b 1 -501 22 -409 6 -454 b 0 -541 0 -514 0 -528 b 0 -667 0 -583 -3 -624 b 0 -809 0 -675 -3 -791 b 46 -834 4 -825 36 -829 b 50 -835 48 -834 49 -835 b 62 -816 58 -835 58 -824 b 75 -780 68 -805 75 -795 b 147 -668 75 -727 111 -698 b 243 -589 179 -641 213 -618 b 361 -300 325 -507 361 -409 b 359 -246 361 -282 360 -265 b 344 -216 357 -235 353 -222 b 327 -186 331 -204 327 -196 b 337 -151 327 -176 333 -164 b 363 -17 351 -105 363 -60 b 331 107 363 24 353 65 b 328 115 328 109 328 112 b 331 130 328 121 330 125 b 361 294 348 184 361 239 b 343 399 361 330 356 364 b 333 462 334 420 333 441 b 341 573 333 500 341 537 b 340 593 341 580 340 588 b 330 661 337 616 338 642 b 320 706 323 677 320 691 b 328 765 320 726 324 744 b 347 924 338 818 347 871 b 330 1044 347 965 343 1004 b 328 1054 330 1047 330 1051 b 298 1086 320 1067 312 1086 z m 249 537 b 69 285 229 426 131 369 b 249 537 88 399 197 448 z m 279 324 b 82 19 269 209 167 53 b 81 40 81 26 81 33 b 132 151 81 84 104 120 b 279 324 180 207 233 258 z m 271 1 b 84 -266 242 -111 148 -174 b 81 -239 82 -256 81 -248 b 127 -144 81 -199 96 -170 b 271 1 179 -98 233 -58 z m 304 -222 b 75 -547 305 -359 233 -429 b 304 -222 112 -406 229 -328 z' + }, + 'accidentalFlat': { + 'x_min': 1, + 'x_max': 209, + 'y_min': -208, + 'y_max': 472, + 'ha': 680, + 'o': 'm 29 -300 b 46 -289 33 -300 39 -297 b 107 -243 65 -274 86 -258 b 301 127 233 -153 301 -30 b 298 186 301 147 301 166 b 190 297 291 256 251 297 b 147 289 177 297 163 294 b 86 265 127 284 107 274 l 85 264 l 85 301 b 91 465 85 356 88 410 b 94 559 91 497 94 527 b 84 651 94 589 91 621 b 66 680 81 661 81 680 l 65 680 b 37 645 49 678 37 665 b 33 523 36 605 32 563 l 33 478 b 26 223 33 393 29 308 b 1 -141 22 101 1 -19 b 17 -287 1 -189 4 -239 b 29 -300 20 -295 23 -300 z m 68 -105 b 76 12 71 -68 72 -29 b 81 107 79 43 81 75 l 86 109 b 171 135 114 121 141 135 b 204 128 181 135 193 132 b 238 92 228 120 239 108 b 230 63 238 84 236 75 b 68 -105 193 -10 132 -59 z' + }, + 'accidentalNatural': { + 'x_min': 0, + 'x_max': 213.5, + 'y_min': -456, + 'y_max': 462, + 'ha': 918, + 'o': 'm 255 -657 b 281 -624 271 -657 275 -636 b 285 -599 282 -615 285 -608 b 292 -300 288 -500 289 -400 b 289 -161 292 -253 289 -207 b 300 128 292 -65 297 32 b 304 168 300 128 302 150 l 304 173 l 305 190 l 305 199 l 307 225 b 304 259 307 229 310 246 b 272 298 297 274 302 305 b 63 266 204 279 134 272 b 72 514 68 348 72 432 b 71 595 72 541 72 567 b 56 665 71 619 66 642 b 17 579 9 651 17 608 b 3 144 19 433 7 289 b 0 -7 1 94 0 43 b 3 -134 0 -50 1 -92 b 7 -219 3 -163 7 -192 b 35 -251 7 -243 17 -251 b 49 -249 39 -251 43 -251 l 223 -223 l 230 -222 l 230 -359 b 223 -516 230 -410 223 -464 b 236 -619 223 -550 226 -585 b 255 -657 240 -634 236 -657 z m 58 -81 l 58 -63 b 55 81 56 -14 53 33 l 56 99 b 85 99 65 99 75 98 b 232 108 134 104 183 107 l 240 109 l 236 66 b 232 -48 235 29 232 -10 b 58 -81 174 -63 115 -73 z' + }, + 'accidentalSharp': { + 'x_min': -22, + 'x_max': 390, + 'y_min': -384, + 'y_max': 383, + 'ha': 767, + 'o': 'm 202 -553 b 219 -526 213 -552 216 -536 b 226 -471 225 -507 226 -488 b 225 -425 226 -455 225 -441 b 226 -392 225 -415 225 -402 b 233 -305 229 -363 232 -334 l 297 -292 b 331 -469 300 -353 311 -412 b 347 -485 333 -477 338 -485 b 363 -469 356 -487 359 -477 b 374 -418 373 -454 374 -435 b 376 -382 376 -405 376 -393 b 372 -276 376 -347 373 -311 l 455 -259 b 550 -156 534 -243 544 -232 b 550 -109 550 -137 552 -124 b 526 -78 549 -91 541 -78 b 523 -78 524 -78 524 -78 b 507 -79 517 -78 513 -78 b 403 -101 474 -88 438 -95 l 379 -105 b 382 -42 380 -85 380 -63 b 384 96 383 4 384 50 b 503 131 425 107 464 118 b 549 173 524 138 543 150 b 562 249 554 199 562 223 b 554 294 562 264 560 279 b 536 315 549 308 544 315 b 533 315 534 315 534 315 b 517 312 528 315 523 315 b 382 266 472 294 428 279 l 377 344 b 359 531 374 406 372 469 b 348 552 356 539 357 552 b 347 552 348 552 347 552 l 343 552 b 315 528 331 549 317 544 l 315 501 b 320 249 315 416 318 333 l 243 232 b 239 361 243 275 242 318 b 226 425 238 383 238 403 b 199 359 194 409 199 382 b 193 223 196 312 194 268 b 72 202 153 215 112 209 b 4 118 13 192 4 183 b 10 66 0 102 12 84 b 33 29 7 39 14 30 b 48 32 37 29 42 30 b 187 55 95 39 141 46 l 183 -75 b 176 -145 181 -99 179 -122 b 16 -179 122 -156 69 -166 b -32 -232 -14 -186 -32 -197 b -17 -331 -32 -266 -19 -298 b -1 -356 -17 -347 -13 -354 b 12 -353 1 -356 6 -354 b 167 -320 63 -341 115 -331 b 166 -377 166 -338 166 -357 b 189 -526 166 -428 171 -477 b 202 -553 192 -536 189 -553 z m 240 -132 b 243 -37 242 -101 242 -69 b 245 65 245 -3 245 30 b 315 79 269 69 292 73 b 301 -120 308 13 305 -53 z' + }, + 'accidentalDoubleSharp': { + 'x_min': 0, + 'x_max': 287, + 'y_min': -159, + 'y_max': 159, + 'ha': 318, + 'o': 'm 84 -229 b 107 -216 91 -229 98 -225 b 200 -125 138 -186 167 -154 b 232 -95 212 -115 222 -105 b 347 -189 271 -125 310 -157 b 370 -200 356 -196 363 -200 b 396 -179 380 -200 389 -192 b 412 -102 410 -154 406 -125 b 377 -27 410 -69 400 -46 l 325 14 b 402 91 350 42 374 68 b 413 127 410 96 413 107 b 382 200 409 148 397 176 b 350 229 370 220 360 229 b 314 210 340 229 328 223 b 274 174 300 199 285 187 b 212 104 252 151 232 128 b 92 187 173 132 132 161 b 78 193 86 192 82 193 b 68 190 75 193 72 193 b 48 179 62 186 53 187 b 40 137 43 168 40 154 b 81 16 40 92 56 32 b 107 -3 89 10 98 4 b 14 -94 76 -32 45 -62 b 0 -124 6 -102 0 -114 b 12 -154 0 -134 3 -144 b 62 -215 26 -176 48 -193 b 84 -229 69 -225 76 -229 z' + }, + 'accidentalDoubleFlat': { + 'x_min': 0, + 'x_max': 359, + 'y_min': -220, + 'y_max': 446, + 'ha': 666, + 'o': 'm 43 -317 b 72 -301 55 -317 63 -310 b 160 -186 108 -268 134 -226 b 236 -60 186 -145 212 -102 b 233 -131 235 -85 233 -108 b 239 -220 233 -161 235 -190 b 259 -246 240 -233 239 -240 b 301 -228 284 -252 291 -238 b 465 -7 369 -163 416 -85 b 517 173 500 48 517 108 b 451 307 517 229 505 284 b 409 315 436 312 422 315 b 331 287 382 315 356 305 b 311 274 324 282 320 274 l 310 274 l 310 566 b 305 621 310 585 312 603 b 294 642 301 628 305 642 l 292 642 b 264 622 282 641 266 636 b 253 575 259 606 256 590 b 246 418 248 523 246 471 b 248 243 246 360 248 302 l 248 187 b 164 238 220 225 193 238 b 85 213 140 238 112 226 b 84 229 85 220 84 225 b 86 315 85 258 86 287 b 81 528 86 386 82 458 b 71 582 81 547 78 566 b 56 603 66 590 68 603 l 53 603 b 23 580 40 600 26 598 b 19 537 20 566 19 552 b 20 514 19 530 19 521 b 26 390 24 472 26 432 b 14 66 26 282 16 174 b 0 -168 13 -12 0 -91 b 12 -279 0 -206 3 -242 b 30 -314 16 -294 14 -308 b 43 -317 35 -317 39 -317 z m 75 -147 b 73 30 75 -86 75 -29 b 118 82 73 62 92 76 b 132 84 124 84 128 84 b 190 52 156 84 174 69 b 193 40 192 49 193 45 b 192 33 193 37 193 35 b 75 -147 157 -30 125 -95 z m 301 -72 b 302 7 302 -45 302 -19 l 302 86 b 351 158 304 121 321 145 b 383 166 361 163 373 166 b 435 143 402 166 419 157 b 445 127 441 138 445 132 b 441 114 445 122 444 118 b 301 -72 397 49 354 -14 z' + }, + 'accidentalParensLeft': { + 'x_min': 0, + 'x_max': 130.18934911242604, + 'y_min': -270, + 'y_max': 267.6082500723851, + 'ha': 537.6082500723851, + 'o': 'm 107 -389 b 127 -374 114 -389 120 -384 b 141 -347 132 -367 137 -357 b 151 -294 148 -330 151 -311 b 122 -207 151 -265 141 -236 b 63 -65 94 -164 72 -117 b 59 -10 60 -46 59 -27 b 145 223 59 78 94 153 b 187 354 176 262 189 305 b 177 384 187 364 190 380 b 143 373 166 387 153 383 b 124 354 137 367 130 361 b 0 -35 33 240 0 108 l 0 -92 b 85 -372 4 -193 27 -287 b 107 -389 92 -383 99 -389 z' + }, + 'accidentalParensRight': { + 'x_min': -0.4444444444444445, + 'x_max': 139, + 'y_min': -275, + 'y_max': 277, + 'ha': 552, + 'o': 'm 58 -396 b 96 -354 75 -396 85 -370 b 200 13 168 -238 200 -111 b 153 268 200 109 184 190 b 49 392 131 320 101 364 b 26 399 40 397 33 399 b 0 366 10 399 0 387 b 0 318 -1 350 0 334 l 0 291 b 27 238 -3 266 7 253 b 143 9 105 180 143 98 b 141 -20 143 -1 143 -10 b 63 -225 135 -92 108 -164 b 36 -307 45 -251 36 -278 b 40 -344 36 -320 37 -331 b 42 -356 42 -347 42 -351 b 58 -396 42 -374 37 -396 z' + }, + 'accidentalQuarterToneFlatStein': { + 'x_min': 0, + 'x_max': 208, + 'y_min': -240, + 'y_max': 440, + 'ha': 680, + 'o': 'm 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z' + }, + 'accidentalThreeQuarterTonesFlatZimmermann': { + 'x_min': 0, + 'x_max': 422, + 'y_min': -240, + 'y_max': 440, + 'ha': 680, + 'o': 'm 336 -346 b 353 -336 340 -346 346 -343 b 413 -289 372 -320 393 -304 b 608 81 540 -199 608 -76 b 605 140 608 101 608 120 b 497 251 598 210 557 251 b 454 243 484 251 469 248 b 393 219 433 238 413 228 l 392 217 l 392 255 b 397 419 392 310 395 364 b 400 513 397 451 400 481 b 390 605 400 543 397 575 b 373 634 387 615 387 634 l 372 634 b 344 599 356 632 344 619 b 340 477 343 559 338 517 l 340 432 b 333 177 340 347 336 262 b 308 -187 328 55 308 -65 b 324 -333 308 -235 311 -285 b 336 -346 327 -341 330 -346 z m 233 -151 b 71 17 168 -105 108 -56 b 63 46 65 29 63 37 b 96 82 62 62 73 73 b 130 89 108 86 120 89 b 215 63 160 89 187 75 l 220 60 b 225 -35 220 29 222 -3 b 233 -151 229 -75 230 -114 z m 272 -346 b 284 -333 278 -346 281 -341 b 300 -187 297 -285 300 -235 b 275 177 300 -65 279 55 b 268 432 272 262 268 347 l 268 477 b 264 599 269 517 265 559 b 236 634 264 619 252 632 l 235 634 b 217 605 220 634 220 615 b 207 513 210 575 207 543 b 210 419 207 481 210 451 b 216 255 213 364 216 310 l 216 217 l 215 219 b 154 243 194 228 174 238 b 111 251 138 248 124 251 b 3 140 50 251 10 210 b 0 81 0 120 0 101 b 194 -289 0 -76 68 -199 b 255 -336 215 -304 236 -320 b 272 -346 262 -343 268 -346 z m 374 -151 b 383 -35 377 -114 379 -75 b 387 60 386 -3 387 29 l 393 63 b 478 89 420 75 448 89 b 511 82 488 89 500 86 b 544 46 534 73 546 62 b 537 17 544 37 543 29 b 374 -151 500 -56 439 -105 z' + }, + 'accidentalQuarterToneSharpStein': { + 'x_min': 0, + 'x_max': 300, + 'y_min': -338, + 'y_max': 351, + 'ha': 689, + 'o': 'm 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 b 35 66 29 66 32 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z' + }, + 'accidentalThreeQuarterTonesSharpStein': { + 'x_min': -23, + 'x_max': 388, + 'y_min': -373, + 'y_max': 445, + 'ha': 818, + 'o': 'm 114 -537 b 138 -475 137 -518 138 -495 b 147 -292 138 -413 144 -353 b 212 -278 168 -287 190 -282 b 243 -444 215 -333 225 -389 b 261 -467 248 -454 251 -465 b 281 -446 272 -469 276 -455 b 292 -347 292 -416 288 -384 b 288 -262 289 -320 288 -291 l 374 -245 b 376 -311 374 -266 374 -288 b 390 -456 379 -357 379 -405 b 416 -396 412 -436 415 -418 b 423 -287 420 -360 423 -323 b 422 -235 423 -269 423 -252 b 451 -229 432 -233 441 -232 b 547 -98 524 -215 547 -199 l 547 -89 b 521 -49 546 -59 540 -49 b 497 -52 516 -49 507 -49 b 418 -68 469 -56 444 -63 b 423 52 419 -29 422 12 b 426 140 425 81 425 109 b 495 160 449 145 472 153 b 552 219 526 170 546 189 b 559 279 557 240 553 262 b 530 341 559 324 552 341 b 490 331 520 341 507 338 b 432 311 471 324 452 318 b 449 552 436 392 442 471 b 452 588 451 563 452 575 b 446 622 452 599 451 611 b 436 641 444 629 448 641 b 418 628 428 641 420 636 b 409 602 413 621 410 611 b 386 297 396 501 390 399 b 297 274 356 288 327 281 b 291 403 295 317 294 360 b 274 550 288 452 284 501 b 259 569 271 564 265 569 b 240 559 253 569 248 563 b 230 537 232 554 230 546 l 230 488 b 233 369 230 448 232 409 b 236 261 236 333 238 297 b 156 245 210 255 183 251 b 154 396 154 295 154 346 b 150 416 154 403 153 410 b 140 438 145 423 150 438 l 138 438 b 118 413 128 436 118 428 b 112 354 118 393 114 374 b 109 238 109 315 109 276 b 49 226 89 233 69 230 b 3 163 16 222 3 202 b 7 91 3 138 9 114 b 29 62 7 69 13 62 b 39 63 32 62 35 63 b 104 73 60 66 82 71 b 101 -10 104 46 102 17 l 92 -132 l 10 -150 b -33 -204 -19 -157 -33 -170 b -19 -310 -32 -240 -19 -274 b -6 -324 -19 -321 -13 -324 b 6 -323 -1 -324 1 -324 b 82 -307 32 -317 58 -311 b 81 -376 82 -330 81 -353 b 114 -537 81 -431 94 -484 z m 154 -120 b 157 20 154 -73 156 -26 b 158 82 158 40 158 62 b 230 95 183 86 206 89 b 225 0 229 63 226 32 b 217 -107 223 -35 220 -71 z m 294 -92 b 297 -37 295 -73 295 -56 b 300 49 300 -9 300 20 b 300 108 300 69 300 88 b 379 127 325 114 353 120 b 374 -76 376 59 374 -9 b 294 -92 347 -82 320 -86 z' + }, + 'accidentalBuyukMucennebFlat': { + 'x_min': 1.8692317181955784, + 'x_max': 287, + 'y_min': -248, + 'y_max': 432.4720949426819, + 'ha': 680.4720949426819, + 'o': 'm 410 128 b 302 239 403 199 363 239 b 259 232 289 239 275 236 b 199 207 239 226 219 216 l 197 206 l 197 243 b 197 251 197 246 197 248 b 347 317 248 272 298 295 b 376 347 360 324 372 334 b 389 435 387 376 393 405 b 348 454 384 462 377 465 b 202 387 300 432 251 409 b 203 408 203 395 203 402 b 203 431 203 416 203 423 b 347 490 252 451 300 469 b 376 517 360 495 372 505 b 389 599 387 546 393 572 b 348 616 384 625 377 628 b 203 556 300 596 251 576 b 196 593 202 569 199 582 b 179 622 193 603 193 622 l 177 622 b 150 588 161 621 150 608 b 147 533 150 570 148 552 b 29 488 108 517 69 503 b 3 455 12 482 3 472 b 12 353 1 422 9 389 b 145 408 56 372 101 389 b 145 363 145 392 145 377 b 29 315 107 347 68 331 b 3 281 12 310 3 298 b 12 170 1 245 9 209 b 141 226 55 189 98 207 b 138 166 140 206 138 186 b 114 -199 134 43 115 -76 b 130 -344 114 -246 117 -297 b 141 -357 132 -353 135 -357 b 158 -347 145 -357 151 -354 b 219 -301 177 -331 199 -315 b 413 69 346 -210 413 -88 b 410 128 413 89 413 108 z m 350 35 b 343 6 350 26 348 17 b 180 -163 308 -69 245 -117 b 189 -46 183 -125 184 -86 b 193 49 192 -14 193 17 l 199 52 b 284 78 226 63 253 78 b 317 71 294 78 305 75 b 350 35 340 62 351 50 z' + }, + 'accidentalBakiyeFlat': { + 'x_min': 1.8692317181955784, + 'x_max': 287, + 'y_min': -236, + 'y_max': 444, + 'ha': 680, + 'o': 'm 141 -340 b 158 -330 145 -340 151 -337 b 219 -284 177 -314 199 -298 b 413 86 346 -193 413 -71 b 410 145 413 107 413 125 b 302 256 403 216 363 256 b 259 249 289 256 275 253 b 199 225 239 243 219 233 l 197 223 l 197 261 b 199 334 197 285 199 310 b 347 406 249 357 298 382 b 376 439 360 413 372 425 b 390 516 384 465 390 490 b 389 537 390 523 390 530 b 372 564 384 556 382 564 b 348 557 367 564 359 562 b 204 487 300 537 253 510 b 206 518 206 497 206 507 b 196 611 206 549 203 580 b 179 639 193 621 193 639 l 177 639 b 150 605 161 638 150 625 b 145 482 148 564 144 523 l 145 458 b 29 405 107 439 68 420 b 3 366 12 397 3 386 b 12 243 1 325 9 287 b 143 307 56 265 99 285 l 138 183 b 114 -181 134 60 114 -59 b 130 -327 114 -229 117 -279 b 141 -340 132 -336 135 -340 z m 180 -145 b 189 -29 183 -108 184 -69 b 193 66 192 3 193 35 l 199 69 b 284 95 226 81 253 95 b 317 88 294 95 305 92 b 350 52 340 79 351 68 b 343 23 350 43 348 35 b 180 -145 305 -50 245 -99 z' + }, + 'accidentalKomaSharp': { + 'x_min': 0, + 'x_max': 300, + 'y_min': -338, + 'y_max': 351, + 'ha': 689, + 'o': 'm 194 -487 b 225 -432 215 -469 223 -452 b 238 -232 229 -366 236 -298 b 377 -199 285 -220 331 -209 b 418 -164 397 -193 410 -181 b 432 -88 428 -138 432 -114 b 412 -42 432 -55 428 -42 b 389 -46 406 -42 399 -43 l 235 -85 b 233 -20 235 -63 233 -42 b 233 105 232 22 233 63 b 312 121 259 111 285 117 b 406 226 390 134 400 145 b 373 284 409 268 402 284 b 344 281 364 284 356 282 b 232 258 307 276 269 266 b 230 308 232 275 232 291 b 210 505 229 374 232 441 b 183 471 189 501 184 490 b 180 406 181 449 180 428 b 184 246 180 353 184 300 b 48 222 140 236 94 228 b 0 168 6 216 0 209 b 7 86 1 141 4 114 b 27 66 9 73 13 66 b 35 66 29 66 32 66 b 184 94 85 66 135 84 b 187 -1 184 62 186 30 b 190 -96 189 -33 190 -65 l 112 -114 b 35 -213 27 -132 35 -132 b 33 -253 35 -226 35 -240 b 49 -276 33 -269 37 -276 b 62 -275 52 -276 56 -276 l 186 -245 l 186 -256 b 179 -387 180 -300 177 -343 b 194 -487 180 -419 179 -454 z' + }, + 'accidentalKucukMucennebSharp': { + 'x_min': -0.15206251809627475, + 'x_max': 359, + 'y_min': -420, + 'y_max': 343, + 'ha': 763, + 'o': 'm 236 -605 b 262 -543 256 -583 261 -564 b 269 -423 268 -503 269 -464 b 266 -340 269 -396 268 -367 l 361 -318 b 405 -276 384 -312 399 -298 b 413 -189 412 -248 416 -219 b 395 -164 412 -171 409 -164 b 382 -166 392 -164 387 -164 b 264 -193 343 -176 304 -184 b 269 -102 265 -163 268 -132 b 454 -62 331 -89 392 -78 b 501 -23 477 -58 494 -45 b 517 62 511 6 517 33 b 487 112 517 95 513 112 b 471 111 482 112 477 112 b 274 66 406 95 340 81 b 276 138 275 91 276 114 b 350 154 301 144 325 148 b 402 203 377 160 396 176 b 412 284 408 230 412 258 b 392 311 412 302 406 311 b 372 308 386 311 379 310 b 287 291 343 301 314 297 l 295 405 b 298 441 297 416 298 428 b 292 475 298 452 297 464 b 282 494 289 482 294 494 b 264 481 274 494 266 490 b 255 455 259 474 256 464 b 239 282 248 397 243 340 b 148 268 209 278 179 274 b 62 164 62 252 62 253 l 62 132 b 79 108 60 117 65 108 l 86 108 l 230 130 b 229 92 230 118 229 105 b 228 56 228 79 228 68 b 66 20 173 43 120 32 b 0 -59 6 7 3 1 l 0 -138 b 14 -160 -1 -156 4 -160 b 27 -158 19 -160 23 -160 b 222 -112 92 -141 157 -127 b 220 -203 220 -143 220 -173 b 147 -217 196 -207 171 -213 b 89 -288 92 -228 89 -229 b 95 -347 85 -305 96 -325 b 112 -374 92 -366 98 -374 b 125 -373 117 -374 121 -374 l 220 -351 b 222 -458 220 -386 220 -422 b 236 -605 223 -504 225 -552 z' + }, + 'accidentalKoron': { + 'x_min': 0, + 'x_max': 303, + 'y_min': -462.4598053473055, + 'y_max': 180, + 'ha': 642.4598053473055, + 'o': 'm 59 -665 b 72 -649 69 -662 72 -657 b 69 -626 72 -642 69 -634 b 69 -622 69 -625 69 -624 b 69 -600 69 -615 69 -608 b 55 -156 60 -456 68 -311 b 86 -170 66 -166 76 -170 b 112 -163 95 -170 104 -166 b 390 -35 204 -120 298 -78 b 436 -1 409 -27 436 -27 b 396 46 436 22 413 33 l 382 55 b 46 243 271 121 157 179 b 12 259 29 253 17 259 b 0 219 1 259 0 248 b 3 -372 0 22 3 -176 b 6 -616 3 -454 6 -536 b 59 -665 6 -638 40 -671 z m 55 -118 l 55 199 b 363 24 156 141 258 84 b 55 -118 259 -24 160 -69 z' + }, + 'accidentalSori': { + 'x_min': 0, + 'x_max': 434, + 'y_min': -295, + 'y_max': 325, + 'ha': 620, + 'o': 'm 194 -425 b 196 -409 194 -418 196 -413 b 194 -194 196 -337 196 -266 b 364 -127 251 -171 308 -150 b 361 -321 363 -192 364 -256 b 410 -387 360 -357 373 -377 b 413 -373 412 -382 413 -377 b 418 -114 418 -287 418 -200 l 418 -105 b 595 -35 477 -82 536 -59 b 625 0 612 -27 625 -22 b 593 48 624 23 618 39 l 419 117 b 423 370 419 202 423 285 b 426 403 423 382 426 393 b 418 436 426 415 425 426 b 384 468 409 449 399 468 b 369 448 370 468 369 459 b 369 436 369 444 369 441 b 369 428 369 433 369 431 l 369 423 b 367 138 369 328 367 233 l 353 143 l 192 207 l 192 367 b 173 406 192 383 184 396 b 151 422 167 413 160 422 b 144 420 148 422 147 422 b 137 403 138 416 137 410 b 137 392 137 399 137 396 l 137 229 b 33 271 102 243 68 256 b 13 276 26 274 19 276 b 0 262 6 276 0 272 b 35 199 1 239 0 212 l 138 160 b 140 -148 138 58 138 -45 b 56 -181 111 -158 84 -170 b 24 -215 35 -189 24 -199 b 29 -235 24 -220 26 -228 b 49 -253 35 -249 42 -253 b 78 -240 59 -253 69 -243 b 140 -216 98 -233 120 -225 l 140 -356 b 194 -425 140 -406 141 -406 z m 194 -125 b 193 138 194 -37 193 50 b 315 89 233 122 275 107 b 366 71 333 84 350 76 b 364 -58 366 27 366 -16 b 194 -125 308 -81 251 -104 z m 419 -36 l 419 49 l 526 7 l 485 -10 z' + }, + 'articAccentAbove': { + 'x_min': 0, + 'x_max': 425, + 'y_min': 0, + 'y_max': 326, + 'ha': 326, + 'o': 'm 27 1 b 78 12 46 0 62 6 b 347 112 168 45 253 91 b 521 184 409 128 459 167 b 608 259 557 194 589 220 b 612 274 611 265 612 271 b 598 292 612 281 608 287 b 477 347 559 312 518 331 b 176 465 374 384 275 425 b 156 469 168 468 161 469 b 125 456 145 469 137 465 b 53 370 96 432 78 399 b 45 353 48 363 45 357 b 68 333 45 344 52 337 b 360 225 166 298 262 261 b 192 154 302 203 249 171 b 13 36 120 132 53 105 b 0 13 9 29 0 22 b 0 9 0 12 0 10 b 16 0 3 1 10 0 l 26 0 b 27 1 27 0 27 0 z' + }, + 'articAccentBelow': { + 'x_min': 0, + 'x_max': 425, + 'y_min': -326, + 'y_max': 0, + 'ha': 326, + 'o': 'm 16 -469 l 26 -469 b 27 -469 27 -469 27 -469 b 78 -458 46 -469 62 -464 b 347 -357 168 -426 253 -380 b 521 -285 409 -341 459 -302 b 608 -210 557 -276 589 -249 b 612 -196 611 -204 612 -200 b 598 -179 612 -189 608 -183 b 477 -122 559 -157 518 -138 b 176 -4 374 -85 275 -45 b 156 0 168 -1 161 0 b 125 -13 145 0 137 -4 b 53 -99 96 -37 78 -71 b 45 -117 48 -107 45 -112 b 68 -137 45 -125 52 -132 b 360 -245 166 -171 262 -209 b 192 -315 302 -266 249 -300 b 13 -433 120 -337 53 -366 b 0 -456 9 -442 0 -448 b 0 -461 0 -458 0 -459 b 16 -469 3 -468 10 -469 z' + }, + 'articTenutoAbove': { + 'x_min': 0.35192668236256364, + 'x_max': 471.1238660564107, + 'y_min': 0, + 'y_max': 56, + 'ha': 56, + 'o': 'm 137 0 b 197 1 156 0 179 1 b 409 6 268 1 338 6 b 482 4 432 6 459 6 b 556 0 508 3 534 0 b 651 10 588 0 621 3 b 678 27 662 12 678 10 b 654 59 680 45 672 53 b 511 75 606 73 560 73 b 255 81 426 78 341 81 b 160 79 222 81 193 79 l 36 79 b 1 71 24 78 7 85 b 19 32 -3 56 9 43 b 45 16 26 24 36 20 b 137 0 76 3 108 0 z' + }, + 'articTenutoBelow': { + 'x_min': 0.35192668236256364, + 'x_max': 471.1238660564107, + 'y_min': -59, + 'y_max': -3, + 'ha': 56, + 'o': 'm 137 -85 b 197 -84 156 -85 179 -84 b 409 -79 268 -84 338 -79 b 482 -81 432 -79 459 -79 b 556 -85 508 -82 534 -85 b 651 -75 588 -85 621 -82 b 678 -58 662 -73 678 -75 b 654 -26 680 -40 672 -32 b 511 -10 606 -12 560 -12 b 255 -4 426 -7 341 -4 b 160 -6 222 -4 193 -6 l 36 -6 b 1 -14 24 -7 7 0 b 19 -53 -3 -29 9 -42 b 45 -69 26 -60 36 -65 b 137 -85 76 -82 108 -85 z' + }, + 'articStaccatoAbove': { + 'x_min': 1.4151102965496913, + 'x_max': 112, + 'y_min': 0, + 'y_max': 156, + 'ha': 156, + 'o': 'm 98 0 b 132 23 109 0 122 7 b 161 112 150 50 161 79 b 158 148 161 124 161 137 b 125 186 154 167 131 167 b 63 225 117 215 85 216 b 23 197 45 222 30 219 b 3 91 12 163 12 127 b 19 66 0 79 4 69 b 65 27 40 62 53 46 b 98 0 76 9 88 0 z' + }, + 'articStaccatoBelow': { + 'x_min': 1.4151102965496913, + 'x_max': 112.08403222864916, + 'y_min': -156, + 'y_max': 0, + 'ha': 156, + 'o': 'm 132 -202 b 161 -112 151 -174 163 -145 b 158 -76 161 -101 161 -88 b 125 -39 153 -58 131 -58 b 63 0 115 -10 85 -9 b 23 -27 45 -3 30 -6 b 3 -134 12 -62 10 -98 b 19 -158 0 -145 4 -156 b 65 -197 40 -164 53 -179 b 98 -225 75 -216 88 -225 b 132 -202 109 -225 122 -217 z' + }, + 'articStaccatissimoAbove': { + 'x_min': 0, + 'x_max': 139, + 'y_min': 0, + 'y_max': 411, + 'ha': 411, + 'o': 'm 96 0 l 104 0 b 144 115 143 29 138 75 b 197 423 158 217 180 320 b 200 454 199 433 200 444 b 181 540 200 482 193 513 b 112 592 167 573 141 592 b 55 567 92 592 72 585 b 0 490 32 546 3 527 l 0 484 b 27 279 14 416 14 347 b 84 20 43 193 52 104 b 96 0 86 13 92 6 z' + }, + 'articStaccatissimoBelow': { + 'x_min': 0, + 'x_max': 139, + 'y_min': -411, + 'y_max': 0, + 'ha': 411, + 'o': 'm 88 -592 b 145 -567 108 -592 128 -585 b 200 -490 168 -546 197 -527 l 200 -484 b 173 -279 186 -416 186 -347 b 117 -20 157 -193 148 -104 b 104 0 114 -13 108 -6 l 96 0 b 56 -115 58 -29 62 -75 b 3 -423 42 -217 20 -320 b 0 -454 1 -433 0 -444 b 19 -540 0 -482 7 -513 b 88 -592 33 -573 59 -592 z' + }, + 'articMarcatoAbove': { + 'x_min': 0.04121419527862119, + 'x_max': 396, + 'y_min': 0, + 'y_max': 328.0000000000001, + 'ha': 328.0000000000001, + 'o': 'm 477 0 b 510 13 488 0 500 6 b 570 124 546 40 563 81 b 547 183 570 147 560 166 b 356 422 487 265 405 330 b 346 442 354 429 350 436 l 346 444 b 318 465 340 456 330 464 l 312 469 b 274 449 294 480 284 461 b 242 413 262 438 253 425 b 56 196 177 343 112 274 b 1 56 26 154 13 105 b 27 20 -4 35 9 20 b 42 23 32 20 37 20 b 84 53 59 29 72 39 b 255 269 141 125 193 200 b 275 229 262 255 266 242 b 448 14 324 151 390 86 b 477 0 456 4 467 0 z' + }, + 'articMarcatoBelow': { + 'x_min': 0, + 'x_max': 395.9587858047214, + 'y_min': -328.0000000000001, + 'y_max': 0, + 'ha': 328.0000000000001, + 'o': 'm 258 -469 b 297 -449 276 -480 287 -461 b 328 -413 308 -438 317 -425 b 514 -196 393 -343 458 -274 b 569 -56 544 -154 557 -105 b 543 -20 575 -35 562 -20 b 528 -23 539 -20 533 -20 b 487 -53 511 -29 498 -39 b 315 -269 429 -125 377 -200 b 295 -229 308 -255 304 -242 b 122 -14 246 -151 180 -86 b 94 0 114 -4 104 0 b 60 -13 82 0 71 -6 b 0 -124 24 -40 7 -81 b 23 -183 0 -147 10 -166 b 215 -422 84 -265 166 -330 b 225 -442 216 -429 220 -436 l 225 -444 b 252 -465 230 -456 240 -464 z' + }, + 'fermataAbove': { + 'x_min': -0.04550444040404433, + 'x_max': 472, + 'y_min': 2.015071727506986, + 'y_max': 454, + 'ha': 451.984928272493, + 'o': 'm 39 10 b 78 108 66 37 71 73 b 163 311 92 181 111 252 b 284 423 199 353 239 392 b 373 458 312 444 340 454 b 433 431 395 458 410 446 b 603 153 530 361 596 276 b 595 121 603 144 595 131 l 595 88 b 602 50 596 75 589 55 b 639 73 619 43 631 60 b 651 102 645 82 648 92 b 667 194 660 132 662 163 b 680 278 671 222 672 248 b 560 567 680 386 638 481 b 396 654 508 625 452 649 b 291 632 364 654 325 644 b 161 526 235 613 200 566 b 4 249 85 446 26 357 b 4 174 0 222 -3 196 b 10 19 4 124 4 69 b 29 4 12 6 16 0 b 39 10 35 4 33 4 z m 338 37 b 370 40 350 36 357 36 b 380 75 387 40 380 43 b 389 94 382 79 382 85 b 356 132 389 111 374 122 b 269 154 328 147 300 156 b 225 125 252 154 228 157 b 261 48 222 81 232 56 b 338 37 287 40 312 40 z' + }, + 'fermataBelow': { + 'x_min': -0.310835055998654, + 'x_max': 518.570567335755, + 'y_min': -430, + 'y_max': -0.9161449836506543, + 'ha': 429.08385501634933, + 'o': 'm 344 -615 b 500 -543 402 -602 452 -576 b 713 -253 605 -471 661 -364 b 746 -98 737 -204 750 -153 b 727 -59 744 -82 744 -59 b 688 -88 711 -59 694 -68 b 678 -109 687 -96 683 -102 b 562 -314 648 -183 611 -252 b 387 -439 516 -373 458 -416 b 328 -449 367 -446 347 -449 b 180 -386 274 -449 225 -423 b 69 -179 111 -330 69 -262 b 75 -121 69 -160 71 -141 b 84 -58 78 -101 84 -79 b 82 -39 84 -52 84 -45 b 68 -1 79 -26 82 -4 b 26 -32 49 0 33 -12 b 20 -52 24 -39 22 -45 b 0 -223 9 -107 -3 -161 b 141 -553 1 -348 27 -468 b 304 -619 192 -590 243 -619 b 344 -615 317 -619 330 -618 z m 415 -190 b 435 -157 429 -192 435 -184 b 308 -27 435 -86 379 -27 b 271 -46 287 -27 272 -35 b 269 -69 269 -55 269 -62 b 364 -183 269 -128 302 -170 z' + }, + 'breathMarkComma': { + 'x_min': 0, + 'x_max': 148, + 'y_min': 0, + 'y_max': 275, + 'ha': 275, + 'o': 'm 120 0 b 187 78 156 20 174 48 b 213 209 206 121 213 164 b 206 294 213 238 210 265 b 140 390 200 337 171 367 b 122 396 134 395 128 396 b 68 382 105 396 85 384 b 46 379 60 382 53 382 b 0 328 12 369 0 357 b 1 311 0 323 1 317 b 30 210 4 275 22 243 b 66 167 39 179 46 167 b 94 171 73 167 82 168 b 143 180 109 174 124 180 b 160 179 148 180 154 180 b 120 66 124 145 120 107 b 120 0 120 45 121 23 z' + }, + 'breathMarkUpbow': { + 'x_min': 0, + 'x_max': 254, + 'y_min': 0, + 'y_max': 595, + 'ha': 595, + 'o': 'm 233 0 b 256 48 251 14 253 30 b 272 183 264 92 265 138 b 311 455 289 274 295 364 b 350 716 327 541 341 628 b 366 815 354 749 366 782 b 359 857 366 829 363 842 b 327 815 334 852 330 832 b 302 674 315 769 310 721 b 248 357 288 567 269 462 b 225 226 240 314 242 268 b 210 251 212 232 213 243 b 69 721 163 408 117 564 b 32 835 58 760 53 801 b 20 851 29 841 27 851 b 14 850 19 851 16 851 b 0 828 6 847 0 838 l 0 825 b 12 765 1 804 7 785 b 194 125 73 552 132 338 b 233 0 206 84 213 42 z' + }, + 'caesura': { + 'x_min': 0, + 'x_max': 565.5831864753837, + 'y_min': -0.09016994374947417, + 'y_max': 562.4481112129314, + 'ha': 562.5382811566809, + 'o': 'm 226 1 b 248 13 238 -4 243 7 l 353 137 b 759 638 490 302 632 464 b 814 805 795 688 819 740 b 779 786 796 805 788 796 b 628 609 724 732 678 668 b 310 242 523 485 416 363 b 217 69 265 190 217 140 b 222 30 217 58 219 45 b 222 23 222 29 220 26 b 220 12 222 20 220 16 b 226 1 220 7 222 3 z m 0 76 b 49 122 24 92 37 107 b 444 613 180 287 305 455 b 528 770 484 660 518 708 b 531 792 530 778 531 785 b 524 808 531 799 530 805 b 490 792 513 815 498 802 b 390 683 456 756 420 721 b 48 262 275 543 164 400 b 0 76 0 207 7 145 z' + }, + 'caesuraCurved': { + 'x_min': 0, + 'x_max': 386, + 'y_min': -10, + 'y_max': 584, + 'ha': 594, + 'o': 'm 180 -14 b 246 14 213 -13 230 0 b 347 144 288 52 315 99 b 526 471 420 246 488 350 b 556 671 546 537 556 603 b 543 798 556 713 553 756 b 504 837 537 822 521 828 b 490 841 500 840 494 841 b 472 832 482 841 477 838 b 406 678 436 785 406 737 b 410 638 406 665 408 652 b 425 511 419 595 425 553 b 315 186 425 395 387 287 b 180 -14 271 122 228 58 z m 14 24 b 49 39 29 24 40 32 b 120 114 76 60 99 85 b 216 276 156 166 184 223 b 317 626 281 384 317 501 b 315 664 317 639 317 651 b 301 773 314 701 311 737 b 262 808 295 795 278 808 b 245 799 256 808 249 805 b 170 641 209 750 170 706 b 171 621 170 634 170 628 b 177 511 176 585 177 549 b 114 229 177 415 160 320 b 0 26 79 161 42 95 b 14 24 6 24 10 24 z' + }, + 'restMaxima': { + 'x_min': 0, + 'x_max': 366, + 'y_min': -255, + 'y_max': 255, + 'ha': 510, + 'o': 'm 397 -367 b 504 -343 436 -367 468 -347 b 518 -318 516 -341 518 -330 b 527 -30 518 -217 527 -117 b 526 33 527 -7 527 13 l 526 301 b 501 350 526 323 520 341 b 428 367 477 361 452 367 b 374 359 410 367 393 364 b 357 333 361 354 357 347 b 356 91 357 252 356 171 l 356 30 b 340 -307 357 -82 346 -194 b 397 -367 337 -354 350 -367 z m 46 -357 b 58 -356 49 -357 53 -357 b 154 -333 91 -351 121 -338 b 173 -305 168 -330 173 -320 l 173 302 b 132 356 173 330 157 348 b 68 364 112 363 89 364 b 3 304 19 363 1 348 l 3 4 l 0 4 b 1 -302 0 -98 0 -200 b 46 -357 1 -331 16 -357 z' + }, + 'restDoubleWhole': { + 'x_min': 0, + 'x_max': 122, + 'y_min': 0, + 'y_max': 249, + 'ha': 249, + 'o': 'm 43 0 b 58 1 48 0 52 0 b 124 20 81 6 102 17 b 176 96 173 27 176 58 b 173 220 174 138 173 179 b 176 304 173 248 176 276 b 140 353 176 331 163 346 b 95 359 125 356 111 359 b 32 346 73 359 52 354 b 0 315 20 340 0 337 b 1 243 0 291 1 268 l 1 174 l 4 174 l 4 48 b 43 0 4 16 17 0 z' + }, + 'restWhole': { + 'x_min': 0.8908513171538642, + 'x_max': 500, + 'y_min': -120, + 'y_max': 14, + 'ha': 134, + 'o': 'm 76 -173 l 356 -173 l 356 -171 l 642 -171 b 719 -115 680 -171 717 -145 b 720 -82 719 -104 720 -92 b 711 -20 720 -60 719 -40 b 672 17 704 0 694 10 b 649 20 664 20 657 20 b 605 17 634 20 621 17 b 92 19 433 17 262 17 b 29 7 69 20 49 12 b 9 -17 12 4 9 -6 b 10 -43 9 -26 10 -35 b 1 -84 10 -58 3 -72 b 76 -173 0 -147 7 -173 z' + }, + 'restHalf': { + 'x_min': 0, + 'x_max': 518.3998530468286, + 'y_min': 0, + 'y_max': 162, + 'ha': 162, + 'o': 'm 98 0 l 446 0 l 556 0 b 665 1 592 0 629 0 b 746 82 720 3 743 29 b 736 174 749 114 740 144 b 670 232 729 215 708 232 b 570 229 636 232 603 229 b 356 233 498 229 426 233 l 73 233 b 0 179 19 233 0 220 b 1 154 0 171 0 164 b 6 95 4 135 6 115 b 98 0 3 27 29 0 z' + }, + 'restQuarter': { + 'x_min': -0.3784452492533808, + 'x_max': 263, + 'y_min': -415, + 'y_max': 415, + 'ha': 830, + 'o': 'm 151 -596 b 164 -563 163 -589 161 -575 b 160 -546 164 -557 161 -552 b 124 -396 148 -495 135 -446 b 122 -380 122 -390 122 -384 b 199 -255 122 -331 158 -272 b 228 -256 209 -249 217 -253 b 324 -346 274 -271 298 -310 b 353 -369 331 -356 341 -369 b 360 -367 356 -369 357 -369 b 379 -336 373 -361 379 -348 l 377 -325 b 344 -232 372 -292 366 -258 b 249 -58 301 -180 278 -117 b 242 -36 245 -49 242 -42 b 258 -7 242 -26 248 -17 b 328 78 284 20 311 45 b 354 158 344 104 354 131 b 337 216 354 177 350 196 b 213 435 294 288 249 359 b 115 575 189 487 158 536 b 78 598 105 585 92 598 b 59 592 72 598 66 596 b 39 562 45 583 39 572 b 53 527 39 550 45 539 b 168 344 98 469 125 402 b 187 307 181 328 187 317 b 153 269 187 294 176 284 b 62 213 122 252 91 235 b 40 180 48 203 40 192 b 46 158 40 173 43 166 b 99 65 60 125 79 95 b 183 -79 131 20 160 -29 b 156 -86 173 -88 164 -85 b 0 -261 58 -99 -7 -173 b 96 -557 10 -366 49 -464 b 124 -585 102 -569 109 -580 b 145 -598 132 -588 138 -598 b 151 -596 147 -598 150 -598 z' + }, + 'rest8th': { + 'x_min': 0, + 'x_max': 289, + 'y_min': -260, + 'y_max': 261, + 'ha': 521, + 'o': 'm 164 -374 b 212 -340 190 -373 203 -357 b 276 -190 238 -292 258 -242 b 410 285 333 -36 359 128 b 416 314 413 294 416 304 l 416 321 b 393 354 415 341 410 354 b 382 353 389 354 386 354 b 292 311 347 347 315 333 b 174 225 256 276 216 251 b 157 219 168 222 163 219 b 140 228 151 219 145 222 b 131 246 134 233 131 240 b 135 262 131 252 132 256 b 147 298 141 272 147 285 b 127 367 147 323 154 354 b 94 376 114 373 102 376 b 48 336 75 376 63 363 b 3 181 20 288 12 235 b 0 150 1 170 0 160 b 109 24 0 84 35 24 b 171 36 127 24 148 27 b 289 101 213 52 248 75 b 164 -374 256 -62 193 -213 z' + }, + 'rest16th': { + 'x_min': 0, + 'x_max': 333, + 'y_min': -328.283950617284, + 'y_max': 244, + 'ha': 572.2839506172841, + 'o': 'm 209 -471 b 246 -458 222 -477 236 -468 b 307 -338 279 -425 300 -384 b 324 -226 312 -301 317 -262 b 428 161 350 -94 386 35 b 480 318 445 215 480 259 b 467 347 480 331 477 341 b 445 351 461 350 454 351 b 408 337 432 351 419 347 b 402 333 405 336 403 334 b 223 215 344 294 294 245 b 236 259 229 233 235 246 b 238 276 238 265 238 271 b 212 338 238 302 226 334 b 193 341 206 340 199 341 b 86 289 156 341 104 317 b 59 180 66 255 59 217 b 156 27 59 76 92 27 b 236 46 179 27 204 35 b 338 101 271 59 298 82 b 289 -49 312 49 302 0 b 196 -122 276 -99 235 -107 b 176 -114 187 -127 176 -127 l 176 -111 b 157 -53 177 -88 164 -72 b 69 -9 141 -7 101 -16 b 17 -48 43 -3 29 -27 b 0 -127 4 -73 0 -99 b 6 -186 0 -147 1 -167 b 82 -294 17 -262 37 -294 b 160 -276 102 -294 128 -289 b 219 -242 181 -268 203 -259 b 236 -230 223 -236 229 -230 b 243 -232 239 -230 240 -230 b 235 -275 248 -246 239 -261 b 202 -456 220 -334 202 -395 b 209 -471 202 -462 203 -468 z' + }, + 'rest32nd': { + 'x_min': 0, + 'x_max': 347, + 'y_min': -497.5023916875033, + 'y_max': 483, + 'ha': 980.5023916875033, + 'o': 'm 177 -716 b 217 -690 194 -720 209 -704 b 233 -655 225 -680 230 -668 b 292 -390 253 -567 275 -480 b 361 -48 312 -275 336 -161 b 452 400 393 102 422 252 b 497 629 467 477 482 553 b 500 647 498 635 500 641 b 480 691 500 665 492 684 b 464 696 475 694 469 696 b 418 674 448 696 431 685 l 361 626 b 333 611 353 618 343 612 b 308 629 325 611 317 616 b 239 667 292 651 265 661 b 204 670 228 668 216 670 b 86 559 141 670 95 628 b 85 537 86 552 85 544 b 107 416 85 495 95 455 b 161 372 114 389 134 372 b 174 373 166 372 170 372 b 226 383 192 374 209 377 b 387 478 285 402 330 444 b 364 386 379 444 364 415 b 276 271 364 323 320 298 b 265 266 272 268 268 266 b 252 276 261 266 256 269 b 143 333 229 311 186 333 b 107 327 130 333 118 330 b 43 243 62 314 46 291 b 58 145 43 210 52 179 b 150 63 68 92 99 63 b 315 132 213 63 259 98 b 266 -58 297 63 281 4 b 207 -101 259 -91 230 -96 b 186 -66 186 -107 199 -75 b 180 -50 181 -63 183 -55 b 101 -3 160 -23 135 -3 b 9 -66 59 -3 20 -32 b 0 -118 3 -84 0 -101 b 10 -196 0 -144 6 -170 b 104 -287 20 -256 52 -287 b 137 -282 114 -287 125 -287 b 184 -269 151 -281 171 -269 b 196 -275 190 -269 193 -271 b 199 -287 197 -278 199 -282 b 184 -343 199 -304 189 -325 b 181 -348 184 -346 183 -347 b 134 -595 158 -429 131 -508 b 156 -677 134 -624 150 -648 b 177 -716 158 -693 160 -713 z' + }, + 'rest64th': { + 'x_min': 0, + 'x_max': 428, + 'y_min': -720, + 'y_max': 473.6797408388932, + 'ha': 1193.6797408388932, + 'o': 'm 200 -1037 b 229 -1012 215 -1037 222 -1025 b 238 -984 233 -1004 236 -994 b 282 -780 248 -914 265 -848 b 386 -369 317 -644 354 -507 b 491 104 422 -212 451 -53 b 600 541 528 249 550 399 b 616 629 611 570 616 599 b 600 680 616 648 615 671 b 550 665 586 687 566 677 b 480 618 527 649 501 635 b 464 611 474 613 468 611 b 448 622 458 611 454 615 b 366 662 425 651 397 662 b 331 658 354 662 343 661 b 242 572 285 647 253 619 b 236 528 239 557 236 543 b 266 400 236 484 251 442 b 325 373 274 377 301 373 b 436 409 366 373 403 383 l 494 452 b 474 360 485 416 474 389 b 383 248 474 297 435 269 b 320 328 377 288 351 310 b 276 341 305 337 291 341 b 186 269 235 341 194 311 b 181 230 183 256 181 243 b 187 153 181 204 186 179 b 279 63 192 86 233 63 b 304 65 288 63 295 63 b 416 115 344 72 379 92 b 387 -14 406 69 397 27 b 320 -95 380 -52 369 -86 b 318 -79 320 -89 320 -84 b 223 0 305 -29 271 0 b 122 -81 171 0 135 -30 b 118 -127 120 -96 118 -112 b 118 -196 118 -150 118 -173 b 137 -242 118 -215 125 -229 b 209 -275 157 -266 181 -275 b 249 -269 222 -275 235 -274 b 318 -248 272 -264 294 -255 b 281 -390 315 -301 292 -344 b 276 -400 279 -393 279 -397 b 259 -420 272 -408 266 -416 b 246 -429 255 -425 251 -429 b 233 -415 242 -429 238 -426 b 176 -359 225 -389 200 -372 b 121 -346 158 -348 140 -346 b 14 -408 73 -346 27 -370 b 0 -498 4 -438 0 -468 b 6 -564 0 -520 3 -543 b 91 -635 12 -611 45 -635 b 131 -629 104 -635 117 -634 b 223 -590 163 -622 190 -603 b 166 -824 203 -671 189 -747 b 148 -912 157 -852 148 -881 b 156 -955 148 -926 150 -940 b 177 -1008 161 -972 170 -991 b 200 -1037 181 -1020 183 -1037 z' + }, + 'rest128th': { + 'x_min': 0.6717818579024267, + 'x_max': 491, + 'y_min': -711, + 'y_max': 719, + 'ha': 1430, + 'o': 'm 233 -1015 b 271 -956 256 -1002 266 -981 l 314 -723 b 393 -350 337 -598 366 -474 b 543 312 442 -128 492 91 b 687 841 583 490 635 665 b 707 958 698 880 707 919 b 706 986 707 968 707 976 b 688 1025 704 999 704 1024 b 670 1027 683 1025 677 1027 b 629 1007 655 1027 639 1022 b 559 945 613 981 586 968 b 541 1004 553 968 559 991 b 456 1035 516 1024 488 1035 b 419 1030 444 1035 431 1034 b 344 953 379 1018 353 995 b 340 900 341 936 340 917 b 341 847 340 881 341 864 b 380 779 340 815 354 793 b 464 763 406 765 435 762 b 592 814 510 763 549 786 b 546 660 575 757 556 710 b 480 585 537 619 517 598 b 478 599 480 590 478 595 b 386 678 472 641 428 678 b 294 612 343 678 304 651 b 279 477 282 567 278 521 b 363 395 281 428 317 395 b 380 396 369 395 374 395 b 488 436 416 403 449 419 b 384 233 469 357 468 275 b 359 291 373 252 377 276 b 282 318 337 310 310 318 b 181 264 243 318 203 298 b 154 107 153 216 154 161 b 242 6 154 42 187 6 b 278 10 253 6 265 7 b 408 88 330 22 366 55 b 387 -1 400 56 393 27 b 301 -112 379 -55 354 -94 b 289 -65 297 -95 302 -79 b 219 -32 269 -42 245 -32 b 183 -37 207 -32 196 -35 b 112 -109 144 -46 121 -71 b 105 -219 104 -145 108 -183 b 186 -315 101 -276 134 -315 b 230 -307 199 -315 215 -312 b 324 -256 264 -295 292 -275 b 180 -491 323 -383 266 -471 b 183 -459 180 -480 180 -469 b 184 -442 184 -454 184 -448 b 184 -436 184 -441 184 -438 b 135 -369 184 -403 170 -383 b 102 -363 125 -364 114 -363 b 29 -399 73 -363 45 -376 b 1 -556 -4 -448 6 -503 b 109 -670 -4 -625 43 -670 b 140 -667 118 -670 130 -668 b 253 -616 180 -658 213 -638 b 238 -688 248 -644 242 -665 b 192 -959 220 -779 192 -867 b 193 -992 192 -971 192 -981 b 210 -1024 194 -1014 199 -1024 b 233 -1015 216 -1024 223 -1021 z' + }, + 'dynamicPiano': { + 'x_min': -49, + 'x_max': 326.5019318364244, + 'y_min': -142, + 'y_max': 515, + 'ha': 657, + 'o': 'm -56 -204 b -42 -202 -52 -204 -46 -203 b -19 -194 -35 -202 -26 -197 b 147 -138 35 -170 91 -151 b 249 -58 194 -127 223 -95 b 262 -29 255 -50 262 -39 b 258 -17 262 -24 261 -20 b 232 -7 252 -10 242 -7 b 210 -12 225 -7 217 -9 b 125 -40 184 -23 157 -30 b 183 140 153 19 171 79 b 251 167 207 144 230 153 b 469 518 383 262 480 382 b 357 687 472 626 420 687 b 315 678 344 687 330 684 b 204 600 279 664 240 634 b 210 704 206 635 209 670 b 215 721 212 710 215 716 b 206 733 215 727 212 730 b 180 742 197 736 189 742 b 164 734 176 742 170 740 b 1 575 108 684 36 645 b -7 557 -1 569 -7 563 b -6 553 -7 556 -7 554 b 7 547 -3 547 3 547 l 17 547 b 82 575 43 547 59 567 l 82 452 b 56 46 82 317 81 180 b 17 -66 49 7 46 -36 b -62 -173 -13 -99 -37 -135 b -71 -192 -66 -179 -71 -184 b -68 -199 -71 -193 -69 -196 b -56 -204 -65 -203 -60 -204 z m 196 258 b 197 266 197 261 197 264 b 200 510 200 347 199 429 b 233 543 210 521 222 533 b 281 560 249 554 266 560 b 340 503 310 560 333 540 b 344 461 343 488 344 474 b 321 323 344 413 333 369 b 268 272 315 300 295 281 b 196 258 245 265 220 261 z' + }, + 'dynamicMezzo': { + 'x_min': -18, + 'x_max': 559, + 'y_min': -50, + 'y_max': 365, + 'ha': 415, + 'o': 'm 43 -71 b 160 19 86 -71 143 -26 b 230 264 189 99 200 184 b 282 363 243 297 259 327 b 287 320 285 347 287 333 b 284 279 287 305 285 292 l 249 -12 b 275 -43 248 -29 245 -43 b 395 45 321 -43 389 3 b 462 271 406 124 436 197 b 523 387 475 310 490 348 l 523 346 b 504 130 521 274 513 202 b 501 81 501 114 501 98 b 510 3 501 55 504 29 b 580 -72 521 -48 543 -72 b 625 -63 593 -72 608 -69 b 789 50 690 -43 744 -3 b 805 72 795 56 805 63 b 798 85 805 76 802 81 b 778 94 792 91 785 94 b 755 85 770 94 763 91 l 693 40 b 675 33 685 36 680 33 b 658 52 668 33 662 39 b 645 144 651 82 645 112 b 658 448 641 246 660 346 b 606 507 658 485 638 507 b 583 504 599 507 592 505 b 495 446 547 497 521 471 b 420 373 471 423 448 399 b 413 458 418 406 418 432 b 361 507 408 490 386 507 b 320 491 347 507 333 501 b 160 307 256 444 207 382 l 160 337 b 174 488 160 387 174 438 b 156 521 174 501 173 513 b 137 526 148 524 143 526 b 109 513 127 526 118 520 b -16 399 66 477 23 439 b -26 383 -20 395 -26 389 b -26 379 -26 382 -26 380 b -14 370 -24 372 -20 370 b -6 372 -12 370 -9 372 b 19 376 4 374 12 376 b 36 359 32 376 36 370 b 30 330 36 350 35 341 l 30 323 b 9 -35 23 203 17 85 b 43 -71 6 -65 19 -71 z' + }, + 'dynamicForte': { + 'x_min': -144, + 'x_max': 311.30112136775, + 'y_min': -115.3876295915697, + 'y_max': 504, + 'ha': 619.3876295915697, + 'o': 'm -101 -166 b 173 76 7 -153 150 -30 b 206 344 192 164 202 253 b 268 338 226 343 246 341 b 384 395 317 333 353 361 b 397 419 393 405 397 412 b 367 442 397 429 387 436 b 350 444 361 444 356 444 b 206 455 302 449 255 454 l 206 474 b 202 540 204 495 202 518 b 209 593 202 557 203 576 b 236 624 215 613 225 624 b 265 612 245 624 253 619 b 308 552 287 596 302 577 b 336 533 312 534 323 533 b 448 611 366 533 444 583 b 399 696 452 648 423 671 b 382 706 395 700 387 703 b 308 726 357 720 333 726 b 207 684 272 726 239 711 b 60 455 135 622 60 560 l 10 455 b -23 448 -1 455 -13 454 b -102 372 -55 426 -76 397 b -109 357 -108 367 -109 361 b -95 347 -109 353 -105 348 b -63 346 -84 346 -73 346 b 0 344 -43 344 -22 344 b 63 344 22 344 43 344 b 53 186 63 291 59 239 b 23 0 46 124 42 60 b -35 -60 10 -42 -6 -60 b -73 -52 -45 -60 -58 -58 b -91 -48 -79 -49 -85 -48 b -109 -53 -96 -48 -102 -49 b -199 -124 -143 -72 -168 -99 b -207 -137 -203 -128 -207 -132 b -194 -148 -207 -141 -203 -145 b -101 -166 -164 -160 -132 -168 z' + }, + 'dynamicRinforzando': { + 'x_min': -75, + 'x_max': 322.0960720195126, + 'y_min': -90, + 'y_max': 325, + 'ha': 415, + 'o': 'm 23 -130 b 40 -125 27 -130 33 -128 b 128 -9 81 -114 125 -53 b 145 200 132 62 141 130 b 148 238 147 212 148 225 b 308 321 184 291 245 321 b 363 314 325 321 344 318 b 377 310 369 312 373 310 b 384 311 380 310 382 310 b 464 415 410 317 464 389 b 446 433 465 429 455 429 b 390 445 428 441 409 445 b 305 429 361 445 334 438 b 167 346 252 413 202 393 b 153 325 163 338 158 333 b 148 438 154 363 151 399 b 121 468 147 456 134 468 b 101 458 115 468 108 465 b -63 310 46 409 -16 367 b -108 240 -78 289 -98 271 b 32 330 -50 256 -13 297 b 37 304 37 320 37 312 l 37 292 b 10 -101 27 161 20 30 b 23 -130 9 -120 12 -130 z' + }, + 'dynamicSforzando': { + 'x_min': 0, + 'x_max': 296, + 'y_min': 0, + 'y_max': 379, + 'ha': 379, + 'o': 'm 151 0 b 174 1 160 0 166 0 b 392 158 272 14 346 71 b 405 207 400 174 405 190 b 359 287 405 236 389 265 b 261 325 328 308 294 315 b 168 413 216 340 181 366 b 166 426 167 418 166 423 b 176 438 166 432 167 436 b 199 441 183 441 190 441 b 310 393 238 441 295 422 b 334 370 317 376 325 370 b 363 386 343 370 353 379 b 422 445 386 402 408 420 b 426 458 425 449 426 454 b 422 469 426 462 425 465 b 274 546 395 518 333 546 b 161 503 232 546 190 531 b 86 405 132 472 108 439 b 71 347 75 387 71 367 b 112 256 71 312 85 279 b 209 215 141 232 176 226 b 284 168 238 206 266 197 b 300 131 291 157 300 144 b 298 120 300 127 298 122 b 278 107 294 109 285 108 b 262 108 271 107 266 108 l 259 108 b 114 157 200 107 156 125 b 96 181 104 163 96 170 l 96 184 b 102 202 96 190 102 196 b 96 209 102 204 101 207 b 63 194 82 215 72 204 b 7 109 42 168 26 138 b 0 86 3 101 0 94 b 13 60 0 78 4 68 b 151 0 53 23 101 0 z' + }, + 'dynamicZ': { + 'x_min': -42.73880183193087, + 'x_max': 331, + 'y_min': 0, + 'y_max': 328, + 'ha': 328, + 'o': 'm -45 0 b -6 16 -32 0 -17 10 b 3 20 -3 16 0 19 b 144 60 49 48 96 60 b 284 22 190 60 238 46 b 348 4 305 10 327 4 b 461 75 393 4 435 30 b 468 91 464 81 467 86 b 456 104 468 95 465 99 b 287 173 402 131 348 167 b 239 176 271 174 255 176 b 168 174 217 176 194 174 b 367 340 236 236 298 294 b 459 423 402 363 432 392 b 477 454 467 431 475 442 b 474 462 477 456 475 459 b 454 472 469 469 462 472 b 432 468 446 472 439 469 b 356 448 406 461 380 455 b 210 422 307 433 258 422 b 109 442 177 422 144 428 b 94 445 104 444 99 445 b 69 433 85 445 76 442 b 27 390 56 419 39 406 b -9 343 16 373 -17 357 b 63 311 3 320 36 314 l 78 311 b 132 307 95 308 114 307 b 240 314 168 307 203 311 l 193 271 b -37 50 117 196 19 145 b -59 7 -46 36 -69 20 b -45 0 -55 3 -50 0 z' + }, + 'ornamentTrill': { + 'x_min': 1, + 'x_max': 551, + 'y_min': -18, + 'y_max': 539, + 'ha': 557, + 'o': 'm 269 -17 b 343 135 325 19 346 66 b 343 158 343 147 344 147 b 323 192 341 171 337 187 b 291 176 311 194 300 184 b 264 148 282 167 274 158 b 229 131 261 145 238 131 b 212 170 209 131 213 154 b 194 438 203 259 199 348 l 272 442 b 284 452 276 441 279 441 b 305 462 287 461 295 462 b 312 462 307 462 310 462 b 346 477 325 462 340 464 b 366 560 357 503 366 531 b 321 612 366 598 356 618 b 190 602 278 605 235 605 l 190 638 b 187 693 190 652 190 667 b 161 776 184 717 193 776 b 137 747 150 776 137 766 b 130 654 135 716 131 685 l 130 596 l 52 588 b 4 539 23 585 7 570 b 1 477 3 530 1 500 b 3 448 1 461 3 448 b 3 461 3 448 3 452 b 53 432 0 438 19 432 b 134 435 75 432 102 433 b 151 117 138 328 147 223 b 170 13 153 82 157 46 b 209 -26 179 -10 193 -26 b 222 -22 213 -26 217 -24 b 269 -17 233 -16 253 -27 z m 549 66 b 577 99 563 66 572 84 b 580 131 580 109 580 121 l 580 302 b 600 347 580 318 582 337 b 701 392 632 364 665 384 b 793 518 785 409 793 435 b 759 588 793 559 785 576 b 711 560 749 592 733 570 b 588 500 671 541 631 521 b 583 533 586 514 586 524 b 560 576 577 549 577 572 b 517 550 541 582 528 564 b 416 423 482 508 452 462 b 382 353 392 397 384 370 b 387 305 380 341 386 318 b 392 275 389 295 392 285 b 409 243 393 262 393 243 b 431 262 419 243 425 255 b 521 373 459 298 488 333 b 523 354 521 366 523 360 b 520 337 523 346 521 340 b 508 295 513 323 508 310 b 530 102 508 279 524 122 b 549 66 533 88 530 66 z' + }, + 'ornamentTurn': { + 'x_min': 0, + 'x_max': 574, + 'y_min': 0, + 'y_max': 312, + 'ha': 312, + 'o': 'm 651 0 b 816 132 727 0 796 46 b 827 223 822 163 827 193 b 808 340 827 262 821 301 b 665 449 785 408 729 449 b 636 446 655 449 647 448 b 589 384 600 441 586 422 l 602 300 b 611 285 603 291 605 285 b 621 288 613 285 616 287 b 655 295 632 294 644 295 b 711 284 674 295 693 289 b 773 209 740 275 773 232 b 697 156 773 184 734 160 b 664 154 685 154 675 154 b 579 168 635 154 608 158 b 455 242 533 186 495 213 b 261 400 387 291 331 354 b 160 432 225 422 190 432 b 20 328 98 432 49 392 b 0 229 6 295 0 262 b 30 71 0 176 14 122 b 144 3 43 29 96 3 b 168 6 153 3 160 4 b 248 122 233 20 248 39 b 246 147 248 124 248 135 b 226 177 243 164 239 177 b 206 170 220 177 215 174 b 144 154 186 158 166 154 b 79 170 122 154 101 160 b 53 202 62 179 53 189 b 60 228 53 209 55 217 b 161 281 81 261 120 281 b 183 279 168 281 176 281 b 325 190 243 269 284 229 b 572 16 402 124 475 53 b 651 0 598 6 625 0 z' + }, + 'ornamentTurnSlash': { + 'x_min': 0, + 'x_max': 574, + 'y_min': -106, + 'y_max': 405, + 'ha': 511, + 'o': 'm 441 -153 b 456 -60 455 -118 456 -89 b 455 81 455 -14 455 33 b 572 14 491 55 530 30 b 651 -1 598 4 625 -1 b 816 131 727 -1 796 45 b 827 222 822 161 827 192 b 808 338 827 261 821 300 b 665 448 785 406 729 448 b 636 445 655 448 647 446 b 589 383 600 439 586 420 l 602 298 b 611 284 603 289 605 284 b 621 287 613 284 616 285 b 655 294 632 292 644 294 b 711 282 674 294 693 288 b 773 207 740 274 773 230 b 697 154 773 183 734 158 b 664 153 685 153 675 153 b 579 167 635 153 608 157 b 455 240 533 183 495 212 b 454 242 455 240 455 242 l 454 337 b 452 488 454 386 452 439 b 433 570 452 517 451 546 b 425 583 431 575 431 583 l 422 583 b 403 566 415 582 408 573 b 402 546 400 560 402 553 l 397 287 b 261 399 353 325 310 366 b 160 431 225 420 190 431 b 20 327 98 431 48 390 b 0 228 6 294 0 261 b 30 69 0 174 14 121 b 144 1 43 27 96 1 b 168 4 153 1 160 3 b 248 121 233 19 248 37 b 246 145 248 122 248 134 b 226 176 243 163 239 176 b 206 168 220 176 215 173 b 144 153 186 157 166 153 b 79 168 122 153 101 158 b 53 200 62 177 53 187 b 60 226 53 207 55 216 b 161 279 79 259 120 279 b 183 278 168 279 176 279 b 325 189 243 266 282 226 b 395 130 348 168 372 148 b 393 71 393 109 393 89 b 441 -153 390 -6 402 -78 z' + }, + 'ornamentMordent': { + 'x_min': 0, + 'x_max': 700, + 'y_min': 0, + 'y_max': 497, + 'ha': 497, + 'o': 'm 513 0 b 528 39 526 14 527 27 b 531 72 531 50 531 60 b 528 138 531 94 528 117 l 528 347 b 552 359 537 354 544 359 b 579 338 560 359 569 353 b 674 217 609 297 639 255 b 719 190 690 200 704 190 b 759 215 732 190 744 197 b 940 395 815 279 877 337 b 1001 490 968 422 986 455 b 1008 513 1004 495 1008 505 b 1002 524 1008 517 1007 521 b 968 516 994 530 978 524 b 960 508 965 513 963 510 b 798 356 900 464 848 410 b 778 341 791 347 783 341 b 757 354 772 341 765 346 b 661 475 720 392 690 432 b 611 517 644 504 629 517 b 563 498 598 517 583 511 b 527 471 550 490 539 481 l 527 570 b 492 716 526 619 523 671 b 472 677 480 704 472 694 b 465 399 474 585 468 491 b 439 366 456 387 448 376 b 384 320 415 336 399 320 b 330 367 369 320 354 336 b 325 376 328 369 327 373 b 226 490 291 413 265 456 b 189 505 213 500 202 505 b 157 491 177 505 167 500 b 0 229 75 420 0 346 b 1 202 0 220 0 212 b 22 215 12 203 16 209 b 124 327 55 252 89 289 b 147 343 132 337 140 343 b 171 323 156 343 164 336 b 266 197 196 276 232 236 b 337 157 291 170 314 157 b 410 207 361 157 386 174 b 461 274 428 229 444 252 b 462 166 461 238 461 202 b 513 0 465 108 487 55 z' + }, + 'ornamentShortTrill': { + 'x_min': 0, + 'x_max': 747, + 'y_min': 0, + 'y_max': 243, + 'ha': 243, + 'o': 'm 379 0 b 428 14 395 0 410 4 b 474 56 445 26 461 39 b 552 157 500 89 526 122 b 566 168 556 163 560 168 b 575 157 569 168 572 166 b 664 36 592 107 628 72 b 733 1 685 13 710 1 b 802 35 757 1 780 13 b 1007 249 871 105 940 177 b 1067 324 1028 272 1054 295 b 1076 340 1068 330 1076 334 b 1073 346 1076 341 1076 343 b 1057 350 1068 348 1063 350 b 1047 347 1053 350 1050 350 b 1001 310 1031 336 1015 324 l 857 157 b 844 143 852 153 848 143 b 835 150 841 143 838 144 b 757 242 815 186 780 209 b 685 298 739 268 713 284 b 641 310 670 305 655 310 b 590 288 625 310 608 304 b 497 179 554 256 527 215 b 480 164 490 170 485 164 b 462 179 474 164 469 168 b 372 295 436 220 405 258 b 278 344 346 324 312 344 b 199 310 252 344 226 334 b 92 196 161 274 128 233 b 0 24 46 148 23 89 b 42 48 22 27 32 37 b 156 168 84 85 114 132 b 196 192 174 184 186 192 b 228 158 206 192 215 181 b 312 36 252 114 282 75 b 379 0 331 12 354 0 z' + }, + 'ornamentTremblement': { + 'x_min': 0, + 'x_max': 982.17691453624, + 'y_min': 0, + 'y_max': 224, + 'ha': 224, + 'o': 'm 0 0 b 63 36 30 12 48 23 b 157 124 94 66 125 94 b 177 135 164 131 170 135 b 196 122 183 135 189 131 b 268 40 217 94 245 68 b 323 6 288 16 304 6 b 369 20 336 6 350 10 b 412 53 384 29 399 40 b 501 145 442 84 472 114 b 523 158 508 154 516 158 b 543 145 528 158 536 154 b 641 45 576 112 608 78 b 698 17 658 27 677 17 b 729 23 708 17 719 20 b 804 65 756 32 780 46 b 904 154 837 95 871 124 b 920 163 910 160 916 163 b 936 153 924 163 930 160 b 1024 60 965 121 996 92 b 1112 13 1053 29 1080 13 b 1184 39 1135 13 1158 22 b 1359 194 1248 84 1305 138 b 1413 301 1388 223 1403 261 b 1404 323 1417 315 1413 323 b 1391 320 1400 323 1395 321 b 1344 294 1375 314 1358 307 b 1224 186 1305 258 1269 216 b 1194 173 1212 179 1202 173 b 1165 193 1184 173 1175 179 b 1096 271 1145 222 1122 248 b 1001 318 1061 302 1031 318 b 903 268 969 318 937 301 b 806 186 871 239 841 210 b 782 174 796 179 789 174 b 756 193 773 174 765 180 b 652 291 729 232 693 266 b 596 308 634 302 615 308 b 530 278 573 308 552 298 l 415 168 b 393 157 408 161 400 157 b 373 171 387 157 380 161 b 305 245 353 197 330 222 b 248 276 285 266 266 278 b 189 245 229 276 210 266 b 81 144 156 209 120 174 b 0 0 33 109 26 56 z' + }, + 'ornamentPrecompAppoggTrill': { + 'x_min': -0.11067192132025548, + 'x_max': 1066, + 'y_min': -50, + 'y_max': 533.1706452421108, + 'ha': 583.1706452421108, + 'o': 'm 187 -46 b 213 -14 197 -37 204 -26 b 285 151 251 36 266 94 b 304 189 294 177 297 189 b 337 168 311 189 320 181 b 458 33 386 131 415 76 b 495 12 472 19 484 12 b 531 40 508 12 518 22 b 580 168 557 79 569 124 b 622 235 592 213 603 235 b 683 194 636 235 655 222 b 838 26 737 140 791 86 b 919 -33 860 -1 881 -39 b 984 53 960 -27 971 19 b 1022 156 998 86 1008 122 b 1054 190 1032 179 1041 190 b 1089 167 1063 190 1074 183 b 1208 32 1129 122 1171 78 b 1244 10 1221 17 1231 10 b 1273 22 1253 10 1263 14 b 1496 206 1352 78 1427 137 b 1535 310 1526 236 1535 272 b 1531 359 1535 325 1534 343 b 1496 343 1515 360 1506 351 l 1309 192 b 1269 167 1289 176 1279 167 b 1234 199 1260 167 1251 177 b 1122 324 1200 243 1168 289 b 1074 344 1106 337 1089 344 b 1014 301 1051 344 1030 328 b 952 144 985 252 971 197 b 933 121 946 128 940 121 b 910 137 927 121 920 125 b 850 210 888 161 870 186 b 687 369 799 266 750 325 b 631 390 665 383 647 390 b 567 327 602 390 580 369 b 527 199 554 284 543 242 b 508 168 520 179 514 168 b 482 192 503 168 495 177 b 353 328 444 240 405 292 b 312 343 338 338 324 343 b 266 297 292 343 276 327 b 204 125 248 239 232 180 b 143 79 193 102 173 79 b 92 122 117 79 105 102 b 81 154 86 131 84 143 b 48 423 59 242 50 333 b 45 544 46 464 45 504 b 53 730 45 606 48 668 b 40 768 55 744 52 766 b 13 730 19 770 14 747 b 0 514 7 658 -1 586 b 26 122 3 383 6 252 b 75 -36 35 66 40 10 b 134 -72 92 -59 112 -72 b 187 -46 151 -72 170 -63 z' + }, + 'ornamentPrecompSlideTrillDAnglebert': { + 'x_min': 0, + 'x_max': 1088, + 'y_min': -380, + 'y_max': 252, + 'ha': 632, + 'o': 'm 560 -539 b 439 -481 527 -497 484 -485 b 354 -461 409 -478 380 -477 b 131 -154 236 -389 161 -285 b 124 -98 127 -135 124 -117 b 196 55 124 -40 148 10 b 308 99 230 86 268 99 b 399 81 337 99 367 92 b 514 22 441 66 477 43 b 619 -30 567 -9 590 -30 b 719 17 642 -30 670 -16 b 861 131 769 52 818 88 b 899 150 874 144 887 150 b 936 117 913 150 926 138 b 965 43 948 94 956 68 b 1007 -1 973 24 978 -1 b 1048 30 1025 -1 1037 16 b 1070 65 1057 40 1064 52 b 1110 148 1084 92 1096 121 b 1145 190 1120 164 1120 190 b 1191 153 1169 192 1179 168 b 1256 29 1218 115 1231 68 b 1292 1 1267 10 1277 1 b 1320 10 1300 1 1309 4 b 1369 48 1339 19 1355 33 b 1515 196 1418 96 1464 148 b 1567 343 1558 238 1567 287 b 1555 363 1565 357 1562 363 b 1539 356 1551 363 1547 360 b 1433 268 1502 330 1466 301 b 1335 171 1401 236 1374 199 b 1310 163 1325 166 1318 163 b 1286 183 1302 163 1293 168 b 1218 311 1264 226 1247 272 b 1164 351 1200 337 1182 351 b 1110 308 1146 351 1128 337 b 1031 176 1084 265 1058 219 b 1015 161 1025 166 1021 161 b 999 179 1009 161 1005 167 b 955 279 985 213 973 248 b 913 307 943 300 930 307 b 887 302 904 307 896 305 b 852 281 874 298 863 291 b 693 167 804 236 747 204 b 612 140 667 150 639 140 b 549 157 592 140 570 145 b 403 220 503 181 452 202 b 271 248 360 236 315 248 b 179 229 239 248 209 242 b 0 -29 65 180 0 85 b 9 -104 0 -53 3 -78 b 397 -526 56 -317 183 -464 b 505 -547 432 -536 468 -547 b 560 -539 524 -547 541 -544 z' + }, + 'ornamentPrecompSlideTrillBach': { + 'x_min': 0, + 'x_max': 1185, + 'y_min': -380, + 'y_max': 465, + 'ha': 845, + 'o': 'm 624 -544 b 642 -528 638 -543 642 -537 b 639 -514 642 -524 642 -520 b 590 -444 629 -487 609 -467 b 523 -413 573 -422 553 -410 b 498 -415 514 -415 507 -415 b 399 -389 464 -415 431 -405 b 89 -157 281 -330 176 -255 b 72 -117 78 -144 72 -131 b 73 -101 72 -111 72 -107 b 187 186 91 3 147 91 b 246 230 200 216 222 230 b 300 209 262 230 281 223 b 456 48 359 163 403 101 b 540 -10 494 10 518 -10 b 625 59 566 -10 589 13 b 690 148 648 88 668 118 b 711 167 697 160 704 167 b 733 153 719 167 724 163 b 844 14 769 105 808 60 b 903 -42 873 -23 886 -42 b 973 -1 919 -42 937 -27 b 1008 33 986 7 996 20 b 1048 81 1021 48 1035 65 b 1050 37 1048 66 1050 52 b 1047 -24 1050 17 1048 -3 b 1038 -275 1038 -108 1040 -192 l 1037 -289 b 1045 -302 1037 -295 1038 -301 b 1068 -284 1056 -304 1064 -292 b 1084 -242 1076 -271 1081 -256 b 1099 -109 1096 -199 1099 -154 b 1106 158 1099 -19 1106 71 b 1128 187 1113 167 1120 177 b 1168 223 1143 212 1155 223 b 1210 193 1179 223 1191 213 b 1220 183 1214 190 1215 186 b 1329 36 1261 138 1292 84 b 1374 7 1345 16 1358 7 b 1411 20 1384 7 1395 12 b 1479 84 1437 37 1459 59 b 1610 235 1521 135 1564 186 b 1706 403 1655 282 1695 334 b 1614 346 1663 400 1637 373 b 1464 170 1564 287 1515 228 b 1440 150 1453 156 1447 150 b 1414 173 1433 150 1426 158 b 1283 336 1371 228 1333 288 b 1220 366 1261 356 1240 366 b 1148 318 1194 366 1169 350 b 1103 255 1133 297 1119 275 b 1097 301 1102 271 1100 285 b 1099 334 1099 312 1099 324 b 1092 428 1099 367 1094 397 b 1071 647 1087 501 1079 575 b 1058 670 1071 657 1071 670 b 1035 648 1047 670 1038 661 b 1018 516 1024 605 1015 560 b 1041 203 1025 412 1037 307 b 1043 180 1041 196 1043 187 b 992 127 1027 161 1009 143 b 965 111 981 117 972 111 b 936 132 955 111 946 120 b 829 268 900 179 867 225 b 760 317 801 301 780 317 b 691 258 739 317 719 297 b 605 147 664 219 641 177 b 589 138 599 141 593 138 b 572 148 583 138 579 141 b 415 317 520 206 467 261 b 327 372 390 343 366 366 b 300 373 317 373 308 373 b 154 295 239 373 190 348 b 55 138 120 243 85 192 b 0 -53 22 79 0 13 b 160 -317 0 -156 49 -252 b 209 -354 177 -327 192 -343 b 510 -531 305 -419 397 -495 b 593 -547 537 -540 564 -547 b 624 -544 603 -547 613 -546 z' + }, + 'ornamentPrecompTrillSuffixDandrieu': { + 'x_min': 0, + 'x_max': 1003, + 'y_min': -20, + 'y_max': 521, + 'ha': 541, + 'o': 'm 791 -16 b 844 33 812 -3 829 14 b 981 271 900 107 937 190 b 994 288 984 278 985 288 b 1009 269 1004 288 1007 278 b 1077 112 1034 217 1051 163 b 1158 43 1103 62 1129 43 b 1231 69 1179 43 1204 55 b 1348 189 1280 98 1315 143 b 1444 451 1407 271 1444 357 b 1431 547 1444 482 1440 514 b 1188 750 1401 665 1299 750 b 1158 747 1178 750 1168 749 b 1079 684 1119 742 1089 727 b 1063 632 1076 665 1071 648 b 1056 609 1058 622 1056 615 b 1071 599 1056 602 1060 599 b 1086 600 1076 599 1080 600 b 1130 605 1102 603 1116 605 b 1244 569 1171 605 1210 595 b 1349 346 1322 511 1349 433 b 1348 312 1349 334 1349 324 b 1289 197 1345 266 1325 228 b 1238 174 1270 181 1253 174 b 1188 215 1220 174 1202 187 b 1145 308 1172 245 1159 276 b 1096 413 1129 343 1120 382 b 1053 438 1084 431 1068 438 b 1011 413 1038 438 1022 431 b 955 324 989 384 971 354 b 850 127 920 258 886 192 b 838 112 847 121 842 112 b 824 128 828 109 825 121 b 802 193 815 150 809 171 b 730 400 779 264 766 337 b 688 431 719 420 703 431 b 647 403 674 431 660 422 b 606 338 632 383 619 361 b 513 167 575 282 546 223 b 480 122 503 150 498 122 b 452 171 459 122 459 153 b 420 255 442 199 432 228 b 337 408 399 308 380 364 b 276 436 317 428 297 436 b 215 397 253 436 230 423 b 23 72 148 289 81 184 b 0 29 17 59 0 40 b 7 17 0 23 1 20 b 59 58 26 7 46 39 b 190 276 111 127 143 206 b 216 301 202 292 207 301 b 245 279 223 301 232 294 b 311 166 278 248 292 206 b 367 16 331 117 346 65 b 402 -19 377 -7 387 -19 b 438 -4 412 -19 423 -13 b 518 88 474 17 495 55 b 628 284 562 150 592 216 b 657 223 648 266 651 243 b 717 13 677 154 696 84 b 755 -29 726 -16 737 -29 b 791 -16 765 -29 776 -24 z' + }, + 'ornamentPrecompDoubleCadenceUpperPrefix': { + 'x_min': 0, + 'x_max': 1246, + 'y_min': -30, + 'y_max': 296.0302860502196, + 'ha': 326.0302860502196, + 'o': 'm 360 -43 b 559 59 445 -43 503 7 b 698 236 615 111 652 179 b 714 248 704 243 710 248 b 727 235 719 248 721 243 l 848 42 b 883 12 860 22 870 12 b 917 32 891 12 903 19 b 946 62 927 42 939 50 b 1037 192 972 108 1009 147 b 1057 210 1044 204 1051 210 b 1076 190 1063 210 1068 203 l 1176 12 b 1215 -19 1188 -9 1201 -19 b 1250 -6 1225 -19 1237 -14 b 1284 27 1264 3 1274 16 b 1380 190 1323 78 1351 135 b 1395 210 1384 197 1385 210 b 1413 190 1405 210 1410 197 b 1508 40 1436 134 1467 85 b 1564 3 1529 14 1547 3 b 1617 32 1580 3 1597 12 b 1767 238 1678 92 1719 167 b 1794 310 1781 259 1791 282 b 1752 294 1776 317 1764 304 b 1656 164 1711 258 1689 206 b 1629 144 1646 151 1637 144 b 1603 161 1620 144 1613 150 b 1502 315 1562 207 1525 258 b 1452 357 1490 344 1470 357 b 1397 320 1431 357 1411 344 b 1316 170 1368 271 1345 219 b 1280 127 1306 154 1303 127 b 1244 171 1256 127 1254 154 b 1145 337 1210 226 1179 282 b 1110 363 1135 354 1122 363 b 1070 338 1097 363 1084 354 b 1050 311 1063 330 1057 320 b 959 181 1017 271 992 223 b 939 167 950 173 945 167 b 920 184 933 167 927 173 b 818 343 887 238 852 291 b 759 395 795 377 778 395 b 701 344 742 395 724 377 b 698 338 700 341 700 340 b 544 154 652 272 605 207 b 412 98 501 117 458 98 b 304 130 377 98 341 108 b 95 373 204 187 144 275 b 58 426 85 393 82 428 b 19 366 26 426 26 389 b 0 307 13 346 0 327 b 4 287 0 300 1 294 b 174 36 49 194 91 102 b 360 -43 230 -9 289 -43 z' + }, + 'ornamentPrecompDoubleCadenceUpperPrefixTurn': { + 'x_min': 0, + 'x_max': 1226, + 'y_min': -237, + 'y_max': 436, + 'ha': 673, + 'o': 'm 1279 -341 b 1293 -252 1293 -307 1295 -278 b 1277 36 1287 -156 1282 -59 l 1273 118 b 1318 176 1289 137 1303 157 b 1349 203 1332 193 1342 203 b 1378 168 1359 203 1367 192 b 1456 35 1401 122 1428 78 b 1511 -12 1476 3 1493 -12 b 1568 23 1526 -12 1544 0 b 1597 53 1578 32 1588 42 b 1705 186 1629 101 1669 143 b 1761 284 1728 216 1751 246 b 1765 300 1763 288 1765 295 b 1763 307 1765 302 1765 305 b 1737 302 1754 311 1744 308 b 1718 287 1729 298 1725 292 b 1598 145 1673 245 1637 194 b 1578 130 1590 135 1584 130 b 1557 147 1571 130 1565 135 b 1447 321 1516 202 1488 265 b 1403 351 1433 341 1417 351 b 1358 323 1388 351 1372 341 b 1269 209 1329 285 1299 248 b 1254 521 1264 314 1259 418 b 1228 616 1253 554 1247 588 b 1218 628 1224 621 1223 628 l 1215 628 b 1201 613 1210 626 1202 619 b 1200 600 1200 609 1200 605 l 1200 586 b 1211 348 1204 507 1207 428 b 1217 166 1214 288 1215 226 b 1202 181 1212 168 1208 174 b 1094 334 1168 233 1130 284 b 1048 366 1079 356 1064 366 b 1004 331 1034 366 1018 354 b 904 154 969 275 930 220 b 873 202 887 171 880 187 b 778 356 845 256 819 311 b 737 379 763 372 750 379 b 698 353 724 379 711 370 l 621 232 b 415 114 570 154 495 114 b 302 138 377 114 340 121 b 73 400 187 192 117 284 b 55 420 69 415 62 420 b 42 410 50 420 45 416 b 0 292 23 373 0 334 b 4 262 0 282 1 272 b 168 39 32 168 92 99 b 359 -26 225 -6 292 -26 b 585 76 446 -26 530 10 b 668 202 616 115 641 160 b 693 228 680 219 687 228 b 720 203 700 228 707 219 b 801 63 752 160 775 111 b 844 7 812 42 818 7 b 910 66 877 6 894 39 b 923 94 916 75 919 85 b 995 219 945 137 968 179 b 1025 184 1009 210 1017 197 b 1119 56 1054 141 1087 98 b 1166 20 1138 32 1152 20 b 1215 50 1181 20 1195 30 b 1221 56 1217 52 1218 55 b 1228 -163 1223 -17 1225 -89 b 1279 -341 1231 -223 1251 -278 z' + }, + 'ornamentPrecompTrillLowerSuffix': { + 'x_min': 0, + 'x_max': 833, + 'y_min': -309, + 'y_max': 319, + 'ha': 628, + 'o': 'm 778 -444 b 801 -445 785 -444 793 -445 b 1037 -338 894 -445 969 -397 b 1200 37 1149 -240 1200 -109 b 1084 406 1200 171 1172 300 b 1024 444 1064 431 1043 444 b 960 390 999 444 978 426 b 841 163 923 314 886 236 b 812 128 832 150 827 128 b 786 167 796 130 793 153 b 660 418 744 251 716 341 b 599 459 639 445 619 459 b 541 410 577 459 557 444 b 439 197 507 340 474 269 b 422 179 435 190 435 179 b 338 393 392 251 379 328 b 275 439 320 423 298 439 b 212 396 253 439 230 425 b 71 219 170 333 128 268 b 0 45 17 173 16 112 b 68 98 32 62 50 78 b 194 264 112 150 153 209 b 230 292 209 282 219 292 b 264 261 240 292 251 282 b 274 242 268 255 269 248 b 346 46 304 179 325 112 b 376 10 351 32 354 10 b 412 35 392 10 403 22 b 452 107 429 56 441 82 b 541 291 481 168 511 230 b 556 307 547 302 552 307 b 573 295 562 307 567 302 b 624 217 595 272 611 246 b 721 1 657 145 685 72 b 755 -27 732 -19 742 -27 b 786 -16 765 -27 775 -24 b 857 73 819 7 840 39 b 952 256 887 134 920 194 b 978 289 963 279 969 289 b 1009 262 985 289 994 281 b 1030 235 1017 253 1024 245 b 1110 -4 1071 161 1099 81 b 1116 -68 1113 -26 1116 -48 b 1009 -243 1116 -140 1090 -200 b 848 -291 956 -272 901 -291 b 730 -261 809 -291 770 -282 b 696 -248 714 -252 703 -248 b 671 -284 684 -248 678 -258 l 662 -312 b 657 -357 658 -330 657 -344 b 744 -439 657 -403 683 -425 z' + }, + 'stringsDownBow': { + 'x_min': 0, + 'x_max': 306, + 'y_min': -0.09607201951262866, + 'y_max': 366, + 'ha': 366.09607201951263, + 'o': 'm 405 0 b 425 17 413 -1 420 9 b 439 66 435 32 439 48 b 441 268 439 137 441 202 b 436 412 441 314 439 361 l 435 413 b 423 469 435 436 431 456 b 344 508 406 501 373 501 b 204 527 298 520 251 527 b 60 498 156 527 108 518 b 7 438 32 485 10 468 l 7 426 b 4 337 7 396 7 367 b 0 140 0 272 0 206 b 1 42 0 107 0 73 b 13 3 1 27 -3 4 b 40 39 29 3 35 24 b 42 53 42 43 40 49 b 49 141 48 84 49 112 b 48 215 49 167 48 192 b 49 252 48 228 48 240 l 49 312 b 130 343 72 331 99 340 b 206 347 156 346 180 347 b 372 314 262 347 318 338 l 390 307 l 390 245 b 390 138 392 212 390 176 b 397 23 390 101 392 62 b 405 0 399 14 393 1 z' + }, + 'stringsUpBow': { + 'x_min': 0, + 'x_max': 219.2842808242076, + 'y_min': 0, + 'y_max': 489, + 'ha': 489, + 'o': 'm 150 0 l 151 0 b 184 42 170 12 180 26 b 297 554 223 212 261 382 b 315 690 305 598 318 645 b 304 704 315 697 311 704 b 276 670 288 704 282 697 b 157 131 236 490 196 311 l 157 144 b 73 526 134 276 104 396 b 30 677 60 576 52 638 b 13 694 26 684 22 694 b 0 674 9 694 0 691 l 0 671 b 10 603 3 649 6 626 b 105 174 42 461 72 317 b 150 0 117 117 128 58 z' + }, + 'stringsHarmonic': { + 'x_min': 0, + 'x_max': 191, + 'y_min': 0, + 'y_max': 202, + 'ha': 202, + 'o': 'm 143 0 b 275 122 217 0 275 53 b 127 291 275 206 202 291 b 0 154 63 291 0 222 b 143 0 0 76 71 0 z m 122 68 b 43 105 89 66 59 75 b 39 124 40 111 39 117 b 79 199 39 148 56 180 b 145 226 101 216 122 226 b 199 210 163 226 180 220 b 235 150 223 196 235 173 b 203 92 235 128 225 107 b 122 68 181 76 150 68 z' + }, + 'pluckedSnapPizzicatoAbove': { + 'x_min': 0, + 'x_max': 201, + 'y_min': 0, + 'y_max': 325, + 'ha': 325, + 'o': 'm 171 0 b 289 99 240 0 289 45 b 258 183 289 130 274 156 b 174 269 236 217 203 240 l 174 408 b 174 429 174 415 176 422 b 131 468 168 451 153 468 b 117 451 120 468 117 461 b 118 429 117 444 118 435 b 115 307 117 389 115 347 b 0 166 59 295 0 223 b 171 0 0 85 89 0 z m 134 55 b 52 131 84 55 52 85 b 115 233 52 179 81 209 b 114 192 114 220 114 206 b 174 120 114 137 114 137 l 174 228 b 233 148 200 207 223 183 b 236 130 235 143 236 135 b 197 72 236 105 223 85 b 134 55 177 60 157 55 z' + }, + 'pluckedSnapPizzicatoBelow': { + 'x_min': 0, + 'x_max': 211, + 'y_min': 0, + 'y_max': 307, + 'ha': 307, + 'o': 'm 145 7 b 163 0 153 3 158 0 b 173 23 170 0 173 7 l 173 140 l 170 140 l 170 163 l 171 163 b 206 170 179 164 193 166 b 304 287 264 186 304 233 b 281 354 304 308 297 333 b 118 442 240 412 186 439 b 0 324 69 442 0 370 b 115 176 0 266 55 202 l 115 56 b 145 7 114 33 125 19 z m 115 220 b 62 256 92 223 73 230 b 53 292 56 269 53 281 b 78 344 53 311 60 328 b 168 384 105 372 135 384 b 213 376 183 384 199 382 b 253 321 239 366 253 346 b 246 291 253 311 251 301 b 170 226 230 256 203 236 l 170 258 b 148 305 171 278 163 292 b 128 315 143 310 135 315 l 124 315 b 115 301 117 314 115 308 z' + }, + 'pluckedLeftHandPizzicato': { + 'x_min': 0, + 'x_max': 271, + 'y_min': 0, + 'y_max': 284, + 'ha': 284, + 'o': 'm 213 0 b 223 14 222 0 223 7 b 222 35 223 22 222 29 l 222 176 b 373 170 272 174 323 170 b 390 180 382 170 390 171 l 390 184 b 347 232 386 207 382 232 b 219 238 307 233 266 235 l 219 364 b 171 409 219 395 193 409 b 156 393 160 409 156 402 b 158 370 156 384 158 376 l 158 240 b 16 239 115 240 66 239 b 0 226 7 239 0 238 l 0 223 b 50 179 1 203 29 179 b 158 177 86 179 122 179 l 158 63 b 161 29 158 52 158 40 b 213 0 166 -1 194 1 z' + }, + 'keyboardPedalPed': { + 'x_min': 0, + 'x_max': 944, + 'y_min': -13, + 'y_max': 550, + 'ha': 563, + 'o': 'm 22 0 b 109 78 53 0 105 46 l 144 333 b 163 376 147 347 140 372 b 364 465 238 390 301 426 b 454 599 416 497 454 540 b 452 618 454 605 454 612 b 320 770 442 694 396 747 b 248 779 295 778 272 779 b 193 778 229 779 212 779 b 160 780 181 778 167 775 b 137 792 153 789 144 791 b 109 789 128 792 118 789 b 7 719 59 789 48 737 b 23 708 16 714 20 708 b 36 710 29 710 33 710 b 53 684 52 710 53 698 l 53 674 b 43 386 53 577 53 482 b 20 164 36 312 30 238 b 1 30 14 120 7 75 b 0 19 0 26 0 22 b 22 0 0 9 4 0 z m 393 -17 b 634 145 494 16 579 52 b 638 160 636 151 638 156 b 625 168 638 166 634 168 b 621 167 624 168 622 168 b 524 118 582 164 544 160 b 495 79 517 104 505 92 b 435 33 471 49 452 33 b 380 96 416 33 397 55 b 369 145 373 114 369 131 b 442 225 369 186 395 213 b 468 232 451 228 459 229 b 654 344 539 255 606 285 b 677 395 667 360 677 376 b 672 415 677 402 675 408 b 612 459 661 442 639 455 b 589 461 602 461 592 461 b 348 328 500 461 409 408 b 269 120 302 268 269 199 b 379 -19 269 45 318 -19 b 393 -17 383 -19 389 -19 z m 395 240 b 494 383 418 300 452 344 l 521 405 b 544 419 528 409 536 418 b 554 415 547 419 550 418 b 570 383 564 406 570 396 l 570 379 b 552 331 570 360 562 344 b 395 240 511 285 462 253 z m 171 425 b 156 442 160 425 156 429 b 157 475 157 452 157 464 b 164 602 161 517 164 560 b 161 698 164 635 163 667 b 184 729 161 720 167 729 l 193 729 b 348 563 278 719 348 641 b 346 539 348 554 347 547 b 171 425 328 459 229 422 z m 827 89 b 792 111 815 89 804 96 b 766 204 775 131 766 158 b 845 360 772 256 799 314 b 871 372 854 369 863 372 b 897 366 880 372 888 369 b 978 279 942 353 963 320 b 976 259 981 272 981 265 b 858 104 942 203 909 147 b 827 89 847 94 837 89 z m 979 6 b 1008 13 986 6 995 9 b 1081 101 1047 29 1079 46 b 1116 449 1087 217 1104 333 b 1143 654 1123 518 1133 586 b 1148 685 1145 664 1148 675 b 1140 704 1148 693 1146 700 b 1107 716 1130 713 1119 716 b 1056 706 1092 716 1073 710 b 1037 671 1035 703 1038 685 b 1004 439 1025 595 1014 517 b 986 419 1001 428 999 419 b 979 419 985 419 982 420 b 935 426 965 423 949 425 b 795 376 884 426 838 405 b 664 153 714 323 664 249 b 665 130 664 145 665 138 b 753 29 671 65 704 29 b 815 40 773 29 792 33 b 975 147 873 65 923 101 b 965 45 971 108 968 76 b 979 6 963 17 966 6 z m 1282 12 b 1336 35 1303 14 1320 23 b 1359 71 1351 45 1359 58 b 1338 102 1359 82 1352 95 b 1254 130 1312 118 1284 130 b 1187 88 1223 130 1202 109 b 1178 65 1182 81 1178 72 b 1195 37 1178 55 1182 45 b 1282 12 1223 23 1253 19 z' + }, + 'keyboardPedalUp': { + 'x_min': 0, + 'x_max': 436.6015132318337, + 'y_min': 0, + 'y_max': 461, + 'ha': 461, + 'o': 'm 330 0 b 334 1 331 0 333 0 b 340 12 338 4 340 7 l 338 26 b 340 264 338 105 338 184 b 526 95 400 206 461 148 b 559 71 536 88 547 71 b 564 72 560 71 563 71 b 580 121 580 79 580 102 l 580 127 b 543 203 585 158 573 184 b 472 259 518 219 495 238 l 445 285 b 590 292 494 288 541 291 b 622 318 609 294 618 302 b 628 359 625 331 626 346 b 586 402 632 393 621 405 b 464 395 546 399 504 396 l 559 491 b 567 524 567 500 567 510 b 564 543 567 527 567 536 b 539 596 559 563 560 590 b 494 564 521 600 508 577 b 340 413 442 514 390 464 l 340 560 b 287 664 340 600 321 632 b 271 518 274 612 272 566 b 268 445 269 494 269 469 b 117 569 219 488 168 530 b 96 579 109 575 102 579 b 85 560 89 579 85 573 b 124 446 85 518 82 477 b 209 380 153 426 181 403 b 45 374 154 377 99 376 b 0 324 9 374 0 359 b 63 266 0 265 1 265 b 144 272 89 269 117 272 l 196 272 b 108 193 167 246 138 219 b 60 135 76 164 60 151 b 99 73 60 121 73 105 b 104 68 101 72 102 71 b 114 58 107 60 111 58 b 130 66 120 58 124 62 b 259 186 173 107 217 145 b 256 117 259 163 256 140 b 311 13 256 72 271 37 b 330 0 317 10 323 0 z' + }, + 'pictChokeCymbal': { + 'x_min': 1, + 'x_max': 147, + 'y_min': 0, + 'y_max': 242, + 'ha': 242, + 'o': 'm 79 4 b 207 158 153 32 192 88 b 212 200 210 173 212 187 b 143 336 212 253 187 298 b 98 348 131 344 115 348 b 4 295 60 348 16 327 b 1 276 1 289 1 282 b 9 249 1 266 3 258 b 121 183 35 206 72 183 b 156 186 132 183 144 183 b 26 53 134 115 91 73 b 7 39 13 49 7 45 b 19 20 7 33 12 27 b 59 0 30 9 43 0 b 79 4 65 0 72 1 z' + }, + 'wiggleArpeggiatoUp': { + 'x_min': -22, + 'x_max': 300, + 'y_min': 0, + 'y_max': 176, + 'ha': 176, + 'o': 'm 173 4 b 196 0 180 1 189 0 b 246 26 215 0 230 9 b 301 117 271 53 285 85 b 312 131 305 125 307 131 b 327 124 315 131 321 128 b 373 86 341 112 353 101 b 412 69 389 75 402 69 b 432 94 425 69 432 79 b 373 181 432 117 413 154 b 235 252 323 216 285 245 b 220 253 229 253 225 253 b 168 215 196 253 181 240 b 111 112 151 180 140 141 b 94 102 105 105 99 102 b 78 111 89 102 84 105 b 0 181 55 135 35 160 b -32 153 -20 194 -32 168 b 0 86 -32 124 -32 109 b 94 36 22 71 73 46 b 173 4 134 16 131 17 z' + }, + 'arrowheadBlackUp': { + 'x_min': 186, + 'x_max': 820, + 'y_min': -1000, + 'y_max': 1000, + 'ha': 2000, + 'o': 'm 1181 1440 l 268 1440 l 268 -1440 l 1181 -1440 z m 959 -524 l 959 -850 l 481 -850 l 481 -524 z m 864 -619 l 576 -619 l 576 -755 l 864 -755 z m 959 -26 l 959 -351 l 481 -351 l 481 -26 l 576 -26 l 576 -256 l 864 -256 l 864 -121 l 769 -121 l 769 -187 l 671 -187 l 671 -26 z m 959 325 l 959 37 l 481 37 l 481 135 l 864 135 l 864 325 z m 959 498 l 959 403 l 769 403 l 769 202 l 481 202 l 481 297 l 671 297 l 671 403 l 481 403 l 481 498 z m 671 778 l 576 778 l 576 674 l 671 674 z m 769 876 l 769 674 l 959 674 l 959 576 l 481 576 l 481 876 z m 959 1247 l 959 1152 l 769 1152 l 769 1045 l 959 1045 l 959 950 l 481 950 l 481 1045 l 671 1045 l 671 1152 l 484 1152 l 484 1247 z m 959 -916 l 959 -1011 l 867 -1011 l 665 -1146 l 959 -1146 l 959 -1241 l 481 -1241 l 481 -1146 l 683 -1011 l 481 -1011 l 481 -916 z' + }, + 'arrowheadBlackDown': { + 'x_min': 186, + 'x_max': 820, + 'y_min': -1000, + 'y_max': 1000, + 'ha': 2000, + 'o': 'm 1181 1440 l 268 1440 l 268 -1440 l 1181 -1440 z m 959 -524 l 959 -850 l 481 -850 l 481 -524 z m 864 -619 l 576 -619 l 576 -755 l 864 -755 z m 959 -26 l 959 -351 l 481 -351 l 481 -26 l 576 -26 l 576 -256 l 864 -256 l 864 -121 l 769 -121 l 769 -187 l 671 -187 l 671 -26 z m 959 325 l 959 37 l 481 37 l 481 135 l 864 135 l 864 325 z m 959 498 l 959 403 l 769 403 l 769 202 l 481 202 l 481 297 l 671 297 l 671 403 l 481 403 l 481 498 z m 671 778 l 576 778 l 576 674 l 671 674 z m 769 876 l 769 674 l 959 674 l 959 576 l 481 576 l 481 876 z m 959 1247 l 959 1152 l 769 1152 l 769 1045 l 959 1045 l 959 950 l 481 950 l 481 1045 l 671 1045 l 671 1152 l 484 1152 l 484 1247 z m 959 -916 l 959 -1011 l 867 -1011 l 665 -1146 l 959 -1146 l 959 -1241 l 481 -1241 l 481 -1146 l 683 -1011 l 481 -1011 l 481 -916 z' + }, + 'arpeggiatoUp': { + 'x_min': 0, + 'x_max': 262, + 'y_min': 0, + 'y_max': 1459, + 'ha': 1459, + 'o': 'm 190 0 b 160 63 187 29 170 45 b 145 108 150 81 145 95 b 183 163 145 128 157 145 b 300 246 222 190 262 216 b 347 318 333 272 347 295 b 301 393 347 341 331 364 b 258 413 289 403 272 408 b 145 449 220 425 183 436 b 117 464 135 452 120 452 b 140 491 115 477 128 484 b 294 593 192 526 243 557 b 330 647 318 611 330 626 b 314 693 330 660 324 675 b 262 736 302 714 285 729 b 170 763 230 744 200 753 b 122 783 153 768 125 768 b 160 831 120 804 143 818 b 288 922 202 861 246 890 b 333 999 318 945 333 972 b 266 1083 333 1032 310 1064 b 189 1115 240 1094 215 1103 b 122 1178 145 1133 122 1153 b 168 1250 122 1200 138 1223 l 180 1257 b 269 1333 210 1283 240 1306 b 305 1405 294 1356 305 1381 b 284 1469 305 1426 298 1447 b 228 1525 269 1492 251 1511 b 183 1600 197 1545 183 1571 b 190 1640 183 1613 184 1626 b 197 1670 193 1650 194 1660 b 272 1735 213 1719 230 1735 b 295 1734 279 1735 287 1735 b 323 1732 305 1732 314 1732 b 350 1731 333 1732 341 1732 b 377 1742 369 1729 377 1732 b 370 1761 377 1747 374 1754 l 301 1898 b 217 2066 274 1954 248 2012 b 186 2101 204 2089 196 2101 b 154 2069 177 2101 167 2091 b 12 1824 105 1987 59 1907 b 0 1787 4 1810 0 1797 b 59 1744 0 1761 20 1745 b 160 1738 92 1744 125 1740 b 145 1692 156 1721 151 1706 b 135 1633 138 1672 135 1652 b 184 1518 135 1591 151 1552 b 229 1475 199 1503 213 1488 b 259 1431 249 1456 259 1444 b 229 1388 259 1420 249 1407 b 151 1325 203 1365 177 1345 b 105 1279 134 1310 118 1296 b 73 1202 84 1251 73 1227 b 108 1123 73 1176 85 1152 b 255 1031 148 1077 199 1051 b 282 1014 274 1025 282 1021 b 262 991 282 1008 275 1001 b 151 914 226 963 189 939 b 79 851 125 896 99 877 b 63 809 69 837 63 824 b 79 769 63 796 68 783 b 202 697 111 729 154 710 b 266 670 225 690 266 688 b 210 622 266 648 232 635 b 82 534 167 593 120 570 b 55 491 63 518 55 505 b 79 448 55 478 63 465 b 255 361 127 395 192 380 b 288 343 269 359 288 357 b 266 312 288 331 275 320 b 144 223 229 278 184 253 b 85 134 104 193 85 166 b 118 53 85 111 96 85 b 190 0 135 29 160 14 z' + }, + 'arpeggiatoDown': { + 'x_min': 0, + 'x_max': 218, + 'y_min': 0, + 'y_max': 1440, + 'ha': 1440, + 'o': 'm 161 16 b 310 261 210 98 259 180 b 314 275 312 266 314 271 b 302 295 314 282 310 289 b 252 311 287 308 269 311 b 217 310 240 311 229 310 b 190 333 202 310 194 315 b 151 412 186 363 171 389 b 102 501 120 452 102 477 b 150 588 102 524 118 547 b 161 603 154 592 158 598 b 181 661 176 622 181 641 b 173 704 181 675 179 690 b 86 795 156 746 121 770 b 53 829 63 811 53 819 b 78 868 53 840 62 851 b 102 888 85 876 94 883 b 180 956 128 912 156 933 b 216 1028 204 979 216 1002 b 203 1081 216 1044 212 1061 b 115 1171 186 1123 148 1145 b 75 1221 88 1191 75 1207 b 114 1272 75 1237 88 1251 b 173 1308 132 1284 154 1296 b 226 1339 190 1318 209 1328 b 265 1405 253 1359 265 1380 b 258 1447 265 1418 264 1431 b 154 1541 242 1499 199 1521 b 109 1581 124 1555 109 1567 b 141 1627 109 1594 121 1608 b 204 1680 163 1646 184 1662 b 233 1742 223 1699 233 1719 b 226 1777 233 1752 230 1764 b 135 1862 210 1822 173 1840 b 104 1895 114 1875 104 1884 b 118 1930 104 1904 109 1914 b 192 2006 135 1961 161 1986 b 206 2029 203 2013 206 2022 b 192 2064 206 2040 197 2052 b 180 2074 187 2071 184 2074 b 156 2061 171 2074 163 2065 b 84 1983 125 2040 102 2013 b 65 1921 71 1961 65 1941 b 88 1853 65 1899 72 1876 b 171 1784 108 1820 138 1801 b 190 1764 184 1777 190 1770 b 174 1741 190 1757 184 1750 b 107 1683 153 1722 128 1704 b 68 1610 81 1659 68 1636 b 88 1548 68 1591 75 1571 b 177 1470 109 1512 141 1489 b 223 1431 209 1453 223 1443 b 179 1390 223 1420 209 1408 b 128 1361 163 1380 145 1371 b 71 1322 108 1348 88 1338 b 32 1253 45 1300 32 1277 b 48 1198 32 1236 37 1218 b 147 1090 71 1152 108 1120 b 174 1057 166 1076 174 1067 b 153 1022 174 1047 167 1037 b 109 982 140 1008 124 995 b 37 919 85 962 59 942 b 9 860 17 899 9 880 b 26 806 9 844 14 827 b 120 717 50 769 84 740 b 138 691 132 708 138 700 b 130 668 138 684 135 677 b 92 618 118 651 105 635 b 59 531 71 589 59 560 b 84 455 59 507 68 481 b 132 386 98 431 115 408 b 148 341 144 372 148 357 b 144 317 148 333 147 324 b 121 305 140 307 131 305 l 98 305 b 82 304 94 304 88 304 l 32 304 b 0 292 10 304 0 302 b 12 266 0 287 4 279 b 60 164 32 233 46 199 b 127 20 84 117 105 68 b 144 0 132 9 137 0 b 161 16 150 0 154 4 z' + }, + 'repeat1Bar': { + 'x_min': 0, + 'x_max': 599.1057280164835, + 'y_min': -250, + 'y_max': 175, + 'ha': 425, + 'o': 'm 76 -334 b 181 -285 111 -315 148 -302 b 831 52 396 -168 613 -58 b 863 114 855 63 864 82 b 828 202 855 140 855 176 b 808 213 821 209 815 213 b 793 209 804 213 799 212 l 422 19 b 26 -179 291 -48 164 -124 b 0 -213 10 -186 0 -196 b 3 -232 0 -219 0 -225 b 52 -325 14 -265 37 -294 b 66 -337 55 -331 59 -337 b 76 -334 69 -337 72 -336 z m 216 98 b 255 75 236 84 246 75 b 291 104 265 75 274 85 b 323 147 304 117 327 125 b 289 215 323 168 314 184 b 238 252 269 239 253 252 b 187 222 222 252 207 242 b 173 206 183 216 177 212 b 157 170 163 194 157 183 b 174 138 157 160 161 150 b 216 98 189 127 200 109 z m 769 -360 b 829 -264 779 -360 829 -284 b 769 -176 822 -232 799 -200 b 742 -163 760 -167 750 -163 b 716 -184 733 -163 723 -168 b 683 -228 708 -202 693 -213 b 672 -253 675 -236 672 -245 b 683 -281 672 -262 675 -271 b 752 -353 703 -308 732 -327 b 769 -360 756 -357 763 -360 z' + }, + 'repeat2Bars': { + 'x_min': 0.008571918423331715, + 'x_max': 775, + 'y_min': -246.92374029115243, + 'y_max': 362.82068246705313, + 'ha': 609.7444227582056, + 'o': 'm 909 412 b 873 351 906 384 893 367 b 436 50 729 249 585 147 b 91 -179 321 -26 206 -102 b 62 -174 76 -189 68 -183 b 12 -96 48 -147 24 -125 b 36 -16 -7 -53 -6 -43 b 220 104 96 24 158 65 b 819 507 425 232 624 369 b 881 495 852 530 861 528 b 909 412 899 469 900 439 z m 1116 228 b 1067 158 1115 192 1092 174 b 910 59 1015 125 963 92 b 478 -240 762 -33 622 -140 b 311 -350 423 -279 366 -314 b 285 -344 298 -360 289 -356 b 239 -258 272 -314 251 -288 b 261 -196 228 -228 235 -210 b 517 -29 348 -144 436 -91 b 1030 321 681 98 861 202 b 1093 307 1060 343 1076 340 b 1116 228 1107 281 1109 252 z m 1070 -105 b 1020 -210 1057 -143 1038 -176 b 998 -210 1014 -219 1004 -215 b 924 -153 973 -192 949 -171 b 913 -88 899 -135 897 -112 b 949 -22 926 -66 939 -45 b 998 -7 960 6 976 9 b 1070 -105 1032 -32 1058 -63 z m 333 338 b 302 240 330 307 317 274 b 276 235 297 225 287 228 b 233 269 262 246 248 258 b 203 376 186 307 183 318 b 225 441 212 397 217 419 b 246 454 228 452 232 458 b 333 338 284 441 333 380 z' + }, + 'repeat4Bars': { + 'x_min': 0, + 'x_max': 1374, + 'y_min': -304, + 'y_max': 304, + 'ha': 608, + 'o': 'm 815 -367 b 829 -359 819 -367 824 -364 b 851 -343 835 -353 844 -347 b 1375 6 1027 -228 1205 -117 l 1610 170 b 1644 235 1632 184 1643 203 b 1626 300 1639 253 1634 276 b 1590 337 1614 325 1604 337 b 1551 320 1580 337 1567 330 b 873 -135 1329 161 1103 10 b 749 -222 829 -161 785 -184 b 737 -245 742 -230 737 -238 b 742 -261 737 -249 739 -255 b 802 -357 755 -297 782 -325 b 815 -367 805 -363 809 -367 z m 291 148 b 325 223 302 148 308 170 b 333 256 328 235 330 246 b 264 363 330 305 298 336 b 242 373 255 369 248 373 b 220 347 232 373 225 364 b 202 288 216 327 213 305 b 190 252 193 275 190 262 b 222 200 190 232 202 215 b 291 148 264 170 279 148 z m 78 -266 b 92 -258 82 -266 88 -264 b 114 -240 98 -251 107 -246 b 638 107 289 -125 467 -14 b 873 271 716 161 793 216 b 907 337 894 285 906 305 b 887 400 901 354 897 379 b 852 438 877 426 867 438 b 814 420 842 438 829 432 b 135 -33 592 262 366 111 b 12 -121 92 -60 48 -84 b 0 -144 4 -128 0 -135 b 4 -160 0 -148 1 -154 b 63 -255 17 -196 45 -223 b 78 -266 68 -262 72 -266 z m 396 -360 b 408 -356 400 -360 403 -359 b 609 -223 471 -307 543 -269 b 896 -19 706 -156 795 -81 b 1164 154 985 37 1074 96 b 1214 223 1189 170 1211 187 b 1176 321 1204 253 1205 292 b 1159 330 1169 327 1165 330 b 1145 324 1155 330 1151 328 b 1048 258 1113 302 1081 278 b 357 -202 809 117 598 -65 b 333 -238 341 -212 333 -223 b 338 -262 333 -245 334 -253 b 384 -350 350 -294 372 -318 b 396 -360 386 -354 390 -360 z m 1162 -438 b 1174 -433 1166 -438 1169 -436 b 1374 -300 1237 -384 1309 -346 b 1660 -96 1470 -233 1561 -158 b 1930 76 1751 -39 1840 19 b 1979 147 1954 92 1977 109 b 1943 243 1968 177 1971 216 b 1924 253 1935 251 1930 253 b 1911 248 1920 253 1915 252 b 1814 181 1878 225 1848 202 b 1123 -279 1575 40 1364 -141 b 1099 -315 1106 -289 1099 -300 b 1103 -338 1099 -321 1100 -330 b 1149 -426 1115 -370 1138 -396 b 1162 -438 1151 -432 1156 -438 z m 1875 -295 b 1882 -291 1878 -295 1879 -294 b 1934 -189 1904 -258 1921 -223 b 1872 -96 1925 -147 1901 -120 b 1840 -78 1858 -84 1848 -78 b 1812 -109 1830 -78 1823 -88 l 1777 -173 b 1770 -199 1773 -181 1770 -190 b 1786 -230 1770 -210 1774 -220 b 1862 -289 1809 -253 1837 -269 b 1875 -295 1865 -292 1871 -295 z' + }, + 'repeatBarSlash': { + 'x_min': 0, + 'x_max': 630, + 'y_min': -225.19160170741762, + 'y_max': 265.12618221237005, + 'ha': 490.31778391978764, + 'o': 'm 78 -324 b 92 -314 82 -325 88 -321 b 114 -298 96 -307 107 -302 b 638 49 289 -183 467 -72 b 873 215 716 104 792 161 b 907 279 894 229 906 248 b 887 344 901 298 897 321 b 852 382 877 369 867 380 b 814 363 842 383 829 376 b 135 -91 603 192 364 55 b 12 -177 92 -118 45 -137 b 0 -202 4 -186 0 -192 b 4 -217 0 -206 1 -212 b 63 -312 17 -253 42 -284 b 78 -324 68 -318 72 -323 z' + } + }, + 'fontFamily': 'Petaluma', + 'resolution': 1000, + 'generatedOn': '2020-04-13T11:57:51.948Z' +}; + +/***/ }), + +/***/ "./src/fonts/petaluma_metrics.js": +/*!***************************************!*\ + !*** ./src/fonts/petaluma_metrics.js ***! + \***************************************/ +/*! exports provided: PetalumaMetrics */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PetalumaMetrics", function() { return PetalumaMetrics; }); +var PetalumaMetrics = { + name: 'Petaluma', + smufl: true, + stave: { + padding: 15 + }, + clef: { + "default": { + point: 32, + width: 26 + }, + small: { + point: 26, + width: 20 + }, + annotations: { + '8va': { + smuflCode: 'timeSig8', + "default": { + point: 18, + treble: { + line: -1.4, + shiftX: 12 + } + }, + small: { + point: 16, + treble: { + line: -0.2, + shiftX: 8 + } + } + }, + '8vb': { + smuflCode: 'timeSig8', + "default": { + point: 18, + treble: { + line: 6, + shiftX: 10 + }, + bass: { + line: 3.5, + shiftX: 1 + } + }, + small: { + point: 16, + treble: { + line: 5.3, + shiftX: 6 + }, + bass: { + line: 3.1, + shiftX: 0.5 + } + } + } + }, + // These may no longer be necessary + lineCount: { + '8': { + point: 55, + shiftY: 14 + }, + '7': { + point: 47, + shiftY: 8 + }, + '6': { + point: 32, + shiftY: 1 + }, + '5': { + point: 30, + shiftY: -6 + }, + '4': { + point: 23, + shiftY: -12 + } + } + }, + pedalMarking: { + up: { + point: 40 + }, + down: { + point: 34 + } + }, + // These are for numeric digits, such as in time signatures + digits: { + // used by timesig + shiftLine: -1, + point: 22, + // used by tuplets + tupletPoint: 16, + shiftY: -2 + }, + articulation: { + articStaccatissimoAbove: { + padding: 2 + }, + articStaccatissimoBelow: { + padding: 2 + } + }, + tremolo: { + "default": { + point: 25, + spacing: 5, + offsetYStemUp: -5, + offsetYStemDown: 5, + offsetXStemUp: 11, + offsetXStemDown: 1 + }, + grace: { + point: 18, + spacing: 4, + offsetYStemUp: -5, + offsetYStemDown: 5, + offsetXStemUp: 7, + offsetXStemDown: 1 + } + }, + noteHead: { + displaced: { + shiftX: -2 + } + }, + stem: { + // These are stem (Y) offsets to the note heads. To shift the + // noteheads (x-position) themselves, see glyphs.notehead.custom. + noteHead: { + noteheadTriangleUpHalf: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4 + }, + noteheadTriangleUpBlack: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4 + }, + noteheadTriangleUpWhole: { + offsetYBaseStemUp: 5, + offsetYBaseStemDown: 4 + }, + noteheadXHalf: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4 + }, + noteheadXBlack: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4 + }, + noteheadXWhole: { + offsetYBaseStemUp: -4, + offsetYBaseStemDown: 4 + }, + noteheadBlack: { + offsetYBaseStemDown: 2, + offsetYBaseStemUp: -2 + }, + noteheadSquareWhite: { + offsetYBaseStemDown: -5, + offsetYBaseStemUp: 5 + } + } + }, + // Values under here are used by the Glyph class to reposition and rescale + // glyphs based on their category. This should be the first stop for + // custom font glyph repositioning. + // + // The glyph loader first looks up a specific set of settings based on the + // glyph code, and if not found, uses the defaults from the category. See + // glyphs.textNote for an example of this. + // + // Details in Glyph.lookupFontMetrics. + glyphs: { + coda: { + point: 20, + shiftX: -7, + shiftY: 8 + }, + segno: { + shiftX: -7 + }, + flag: { + shiftX: -0.75, + tabStem: { + shiftX: -1.75 + }, + staveTempo: { + shiftX: -1 + } + }, + clef: { + gClef: { + "default": { + scale: 1.1, + shiftY: 1 + }, + small: { + shiftY: 1.5 + } + }, + fClef: { + "default": { + shiftY: -0.5 + } + } + }, + ornament: { + ornamentTurn: { + scale: 1.2 + }, + ornamentTurnSlash: { + scale: 1.2 + } + }, + stroke: { + arrowheadBlackDown: { + straight: { + shiftX: -4.5 + }, + wiggly: { + shiftX: -1, + shiftY: 1 + } + }, + arrowheadBlackUp: { + straight: { + shiftX: -0.85 + }, + wiggly: { + shiftX: -1, + shiftY: 1 + } + } + }, + textNote: { + point: 34, + breathMarkTick: { + point: 36, + shiftY: 9 + }, + breathMarkComma: { + point: 36 + }, + segno: { + point: 30, + shiftX: -7, + shiftY: 8 + }, + coda: { + point: 20, + shiftX: -7, + shiftY: 8 + }, + ornamentTrill: { + shiftX: -10, + shiftY: 8 + }, + ornamentMordent: { + shiftX: -8 + }, + ornamentShortTrill: { + shiftX: -8 + } + }, + noteHead: { + standard: { + noteheadBlackStemUp: { + shiftX: 1.5, + point: 34 + }, + noteheadBlackStemDown: { + point: 34 + }, + noteheadHalfStemUp: { + shiftX: 1, + point: 34 + }, + noteheadHalfStemDown: { + point: 34 + }, + noteheadWholeStemUp: { + shiftX: 1, + point: 34 + }, + noteheadWholeStemDown: { + point: 34 + }, + restQuarterStemUp: { + point: 35 + }, + restQuarterStemDown: { + point: 35 + } + }, + custom: { + 'noteheadCircleXStemUp': { + shiftX: -1 + }, + 'noteheadCircleXStemDown': { + shiftX: 0.25 + }, + 'noteheadDiamondHalfStemUp': { + shiftX: 1.5 + }, + 'noteheadDiamondBlackStemUp': { + shiftX: 1.5 + }, + 'noteheadDiamondWholeStemUp': { + shiftX: 1 + }, + 'noteheadXBlackStemUp': { + shiftX: 1 + }, + 'noteheadXHalfStemUp': { + shiftX: -3 + }, + 'noteheadXHalfStemDown': { + shiftX: 1 + }, + 'noteheadXWholeStemUp': { + shiftX: -7 + }, + 'noteheadXWholeStemDown': { + shiftX: 1 + }, + 'noteheadSquareWhiteStemDown': { + shiftX: 0.25 + }, + 'noteheadSquareWhiteStemUp': { + shiftX: -0.75 + }, + 'noteheadSquareBlackStemUp': { + shiftX: -0.75 + }, + 'noteheadTriangleUpWholeStemUp': { + shiftX: -0.75 + } + } + } + } +}; + +/***/ }), + +/***/ "./src/formatter.js": +/*!**************************!*\ + !*** ./src/formatter.js ***! + \**************************/ +/*! exports provided: Formatter */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Formatter", function() { return Formatter; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _beam__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./beam */ "./src/beam.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fraction */ "./src/fraction.js"); +/* harmony import */ var _voice__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./voice */ "./src/voice.js"); +/* harmony import */ var _staveconnector__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./staveconnector */ "./src/staveconnector.js"); +/* harmony import */ var _stavenote__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./stavenote */ "./src/stavenote.js"); +/* harmony import */ var _modifiercontext__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modifiercontext */ "./src/modifiercontext.js"); +/* harmony import */ var _tickcontext__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./tickcontext */ "./src/tickcontext.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// This file implements the formatting and layout algorithms that are used +// to position notes in a voice. The algorithm can align multiple voices both +// within a stave, and across multiple staves. +// +// To do this, the formatter breaks up voices into a grid of rational-valued +// `ticks`, to which each note is assigned. Then, minimum widths are assigned +// to each tick based on the widths of the notes and modifiers in that tick. This +// establishes the smallest amount of space required for each tick. +// +// Finally, the formatter distributes the left over space proportionally to +// all the ticks, setting the `x` values of the notes in each tick. +// +// See `tests/formatter_tests.js` for usage examples. The helper functions included +// here (`FormatAndDraw`, `FormatAndDrawTab`) also serve as useful usage examples. + + + + + + + + + // To enable logging for this class. Set `Vex.Flow.Formatter.DEBUG` to `true`. + +function L() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (Formatter.DEBUG) _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].L('Vex.Flow.Formatter', args); +} // Helper function to locate the next non-rest note(s). + + +function lookAhead(notes, restLine, i, compare) { + // If no valid next note group, nextRestLine is same as current. + var nextRestLine = restLine; // Get the rest line for next valid non-rest note group. + + for (i += 1; i < notes.length; i += 1) { + var note = notes[i]; + + if (!note.isRest() && !note.shouldIgnoreTicks()) { + nextRestLine = note.getLineForRest(); + break; + } + } // Locate the mid point between two lines. + + + if (compare && restLine !== nextRestLine) { + var top = Math.max(restLine, nextRestLine); + var bot = Math.min(restLine, nextRestLine); + nextRestLine = _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].MidLine(top, bot); + } + + return nextRestLine; +} // Take an array of `voices` and place aligned tickables in the same context. Returns +// a mapping from `tick` to `ContextType`, a list of `tick`s, and the resolution +// multiplier. +// +// Params: +// * `voices`: Array of `Voice` instances. +// * `ContextType`: A context class (e.g., `ModifierContext`, `TickContext`) +// * `addToContext`: Function to add tickable to context. + + +function createContexts(voices, ContextType, addToContext) { + if (!voices || !voices.length) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArgument', 'No voices to format'); + } // Find out highest common multiple of resolution multipliers. + // The purpose of this is to find out a common denominator + // for all fractional tick values in all tickables of all voices, + // so that the values can be expanded and the numerator used + // as an integer tick value. + + + var totalTicks = voices[0].getTotalTicks(); + var resolutionMultiplier = voices.reduce(function (resolutionMultiplier, voice) { + if (!voice.getTotalTicks().equals(totalTicks)) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('TickMismatch', 'Voices should have same total note duration in ticks.'); + } + + if (voice.getMode() === _voice__WEBPACK_IMPORTED_MODULE_4__["Voice"].Mode.STRICT && !voice.isComplete()) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('IncompleteVoice', 'Voice does not have enough notes.'); + } + + return Math.max(resolutionMultiplier, _fraction__WEBPACK_IMPORTED_MODULE_3__["Fraction"].LCM(resolutionMultiplier, voice.getResolutionMultiplier())); + }, 1); // Initialize tick maps. + + var tickToContextMap = {}; + var tickList = []; + var contexts = []; // For each voice, extract notes and create a context for every + // new tick that hasn't been seen before. + + voices.forEach(function (voice, voiceIndex) { + // Use resolution multiplier as denominator to expand ticks + // to suitable integer values, so that no additional expansion + // of fractional tick values is needed. + var ticksUsed = new _fraction__WEBPACK_IMPORTED_MODULE_3__["Fraction"](0, resolutionMultiplier); + voice.getTickables().forEach(function (tickable) { + var integerTicks = ticksUsed.numerator; // If we have no tick context for this tick, create one. + + if (!tickToContextMap[integerTicks]) { + var newContext = new ContextType({ + tickID: integerTicks + }); + contexts.push(newContext); + tickToContextMap[integerTicks] = newContext; + } // Add this tickable to the TickContext. + + + addToContext(tickable, tickToContextMap[integerTicks], voiceIndex); // Maintain a sorted list of tick contexts. + + tickList.push(integerTicks); + ticksUsed.add(tickable.getTicks()); + }); + }); + return { + map: tickToContextMap, + array: contexts, + list: _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].SortAndUnique(tickList, function (a, b) { + return a - b; + }, function (a, b) { + return a === b; + }), + resolutionMultiplier: resolutionMultiplier + }; +} + +var Formatter = +/*#__PURE__*/ +function () { + _createClass(Formatter, null, [{ + key: "SimpleFormat", + // Helper function to layout "notes" one after the other without + // regard for proportions. Useful for tests and debugging. + value: function SimpleFormat(notes) { + var x = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + + var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, + _ref$paddingBetween = _ref.paddingBetween, + paddingBetween = _ref$paddingBetween === void 0 ? 10 : _ref$paddingBetween; + + notes.reduce(function (x, note) { + note.addToModifierContext(new _modifiercontext__WEBPACK_IMPORTED_MODULE_7__["ModifierContext"]()); + var tick = new _tickcontext__WEBPACK_IMPORTED_MODULE_8__["TickContext"]().addTickable(note).preFormat(); + var metrics = tick.getMetrics(); + tick.setX(x + metrics.totalLeftPx); + return x + tick.getWidth() + metrics.totalRightPx + paddingBetween; + }, x); + } // Helper function to plot formatter debug info. + + }, { + key: "plotDebugging", + value: function plotDebugging(ctx, formatter, xPos, y1, y2, options) { + options = _objectSpread({ + stavePadding: _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.DEFAULT_FONT_STACK[0].lookupMetric('stave.padding') + }, options); + var x = xPos + options.stavePadding; + var contextGaps = formatter.contextGaps; + + function stroke(x1, x2, color) { + ctx.beginPath(); + ctx.setStrokeStyle(color); + ctx.setFillStyle(color); + ctx.setLineWidth(1); + ctx.fillRect(x1, y1, Math.max(x2 - x1, 0), y2 - y1); + } + + ctx.save(); + ctx.setFont('Arial', 8, ''); + contextGaps.gaps.forEach(function (gap) { + stroke(x + gap.x1, x + gap.x2, 'rgba(100,200,100,0.4)'); + ctx.setFillStyle('green'); + ctx.fillText(Math.round(gap.x2 - gap.x1), x + gap.x1, y2 + 12); + }); + ctx.setFillStyle('red'); + ctx.fillText("Loss: ".concat((formatter.totalCost || 0).toFixed(2), " Shift: ").concat((formatter.totalShift || 0).toFixed(2), " Gap: ").concat(contextGaps.total.toFixed(2)), x - 20, y2 + 27); + ctx.restore(); + } // Helper function to format and draw a single voice. Returns a bounding + // box for the notation. + // + // Parameters: + // * `ctx` - The rendering context + // * `stave` - The stave to which to draw (`Stave` or `TabStave`) + // * `notes` - Array of `Note` instances (`StaveNote`, `TextNote`, `TabNote`, etc.) + // * `params` - One of below: + // * Setting `autobeam` only `(context, stave, notes, true)` or + // `(ctx, stave, notes, {autobeam: true})` + // * Setting `align_rests` a struct is needed `(context, stave, notes, {align_rests: true})` + // * Setting both a struct is needed `(context, stave, notes, { + // autobeam: true, align_rests: true})` + // + // `autobeam` automatically generates beams for the notes. + // `align_rests` aligns rests with nearby notes. + + }, { + key: "FormatAndDraw", + value: function FormatAndDraw(ctx, stave, notes, params) { + var options = { + auto_beam: false, + align_rests: false + }; + + if (_typeof(params) === 'object') { + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(options, params); + } else if (typeof params === 'boolean') { + options.auto_beam = params; + } // Start by creating a voice and adding all the notes to it. + + + var voice = new _voice__WEBPACK_IMPORTED_MODULE_4__["Voice"](_tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].TIME4_4).setMode(_voice__WEBPACK_IMPORTED_MODULE_4__["Voice"].Mode.SOFT).addTickables(notes); // Then create beams, if requested. + + var beams = options.auto_beam ? _beam__WEBPACK_IMPORTED_MODULE_1__["Beam"].applyAndGetBeams(voice) : []; // Instantiate a `Formatter` and format the notes. + + new Formatter().joinVoices([voice], { + align_rests: options.align_rests + }).formatToStave([voice], stave, { + align_rests: options.align_rests, + stave: stave + }); // Render the voice and beams to the stave. + + voice.setStave(stave).draw(ctx, stave); + beams.forEach(function (beam) { + return beam.setContext(ctx).draw(); + }); // Return the bounding box of the voice. + + return voice.getBoundingBox(); + } // Helper function to format and draw aligned tab and stave notes in two + // separate staves. + // + // Parameters: + // * `ctx` - The rendering context + // * `tabstave` - A `TabStave` instance on which to render `TabNote`s. + // * `stave` - A `Stave` instance on which to render `Note`s. + // * `notes` - Array of `Note` instances for the stave (`StaveNote`, `BarNote`, etc.) + // * `tabnotes` - Array of `Note` instances for the tab stave (`TabNote`, `BarNote`, etc.) + // * `autobeam` - Automatically generate beams. + // * `params` - A configuration object: + // * `autobeam` automatically generates beams for the notes. + // * `align_rests` aligns rests with nearby notes. + + }, { + key: "FormatAndDrawTab", + value: function FormatAndDrawTab(ctx, tabstave, stave, tabnotes, notes, autobeam, params) { + var opts = { + auto_beam: autobeam, + align_rests: false + }; + + if (_typeof(params) === 'object') { + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(opts, params); + } else if (typeof params === 'boolean') { + opts.auto_beam = params; + } // Create a `4/4` voice for `notes`. + + + var notevoice = new _voice__WEBPACK_IMPORTED_MODULE_4__["Voice"](_tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].TIME4_4).setMode(_voice__WEBPACK_IMPORTED_MODULE_4__["Voice"].Mode.SOFT).addTickables(notes); // Create a `4/4` voice for `tabnotes`. + + var tabvoice = new _voice__WEBPACK_IMPORTED_MODULE_4__["Voice"](_tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].TIME4_4).setMode(_voice__WEBPACK_IMPORTED_MODULE_4__["Voice"].Mode.SOFT).addTickables(tabnotes); // Then create beams, if requested. + + var beams = opts.auto_beam ? _beam__WEBPACK_IMPORTED_MODULE_1__["Beam"].applyAndGetBeams(notevoice) : []; // Instantiate a `Formatter` and align tab and stave notes. + + new Formatter().joinVoices([notevoice], { + align_rests: opts.align_rests + }).joinVoices([tabvoice]).formatToStave([notevoice, tabvoice], stave, { + align_rests: opts.align_rests + }); // Render voices and beams to staves. + + notevoice.draw(ctx, stave); + tabvoice.draw(ctx, tabstave); + beams.forEach(function (beam) { + return beam.setContext(ctx).draw(); + }); // Draw a connector between tab and note staves. + + new _staveconnector__WEBPACK_IMPORTED_MODULE_5__["StaveConnector"](stave, tabstave).setContext(ctx).draw(); + } // Auto position rests based on previous/next note positions. + // + // Params: + // * `notes`: An array of notes. + // * `alignAllNotes`: If set to false, only aligns non-beamed notes. + // * `alignTuplets`: If set to false, ignores tuplets. + + }, { + key: "AlignRestsToNotes", + value: function AlignRestsToNotes(notes, alignAllNotes, alignTuplets) { + notes.forEach(function (note, index) { + if (note instanceof _stavenote__WEBPACK_IMPORTED_MODULE_6__["StaveNote"] && note.isRest()) { + if (note.tuplet && !alignTuplets) return; // If activated rests not on default can be rendered as specified. + + var position = note.getGlyph().position.toUpperCase(); + if (position !== 'R/4' && position !== 'B/4') return; + + if (alignAllNotes || note.beam != null) { + // Align rests with previous/next notes. + var props = note.getKeyProps()[0]; + + if (index === 0) { + props.line = lookAhead(notes, props.line, index, false); + note.setKeyLine(0, props.line); + } else if (index > 0 && index < notes.length) { + // If previous note is a rest, use its line number. + var restLine; + + if (notes[index - 1].isRest()) { + restLine = notes[index - 1].getKeyProps()[0].line; + props.line = restLine; + } else { + restLine = notes[index - 1].getLineForRest(); // Get the rest line for next valid non-rest note group. + + props.line = lookAhead(notes, restLine, index, true); + } + + note.setKeyLine(0, props.line); + } + } + } + }); + return this; + } + }]); + + function Formatter(options) { + _classCallCheck(this, Formatter); + + this.options = _objectSpread({ + softmaxFactor: null, + maxIterations: 2 + }, options); // Minimum width required to render all the notes in the voices. + + this.minTotalWidth = 0; // This is set to `true` after `minTotalWidth` is calculated. + + this.hasMinTotalWidth = false; // Total number of ticks in the voice. + + this.totalTicks = new _fraction__WEBPACK_IMPORTED_MODULE_3__["Fraction"](0, 1); // Arrays of tick and modifier contexts. + + this.tickContexts = null; + this.modiferContexts = null; // Gaps between contexts, for free movement of notes post + // formatting. + + this.contextGaps = { + total: 0, + gaps: [] + }; + this.voices = []; + this.iterationsCompleted = 0; + this.lossHistory = []; + } // Find all the rests in each of the `voices` and align them + // to neighboring notes. If `alignAllNotes` is `false`, then only + // align non-beamed notes. + + + _createClass(Formatter, [{ + key: "alignRests", + value: function alignRests(voices, alignAllNotes) { + if (!voices || !voices.length) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArgument', 'No voices to format rests'); + } + + voices.forEach(function (voice) { + return Formatter.AlignRestsToNotes(voice.getTickables(), alignAllNotes); + }); + } // Calculate the minimum width required to align and format `voices`. + + }, { + key: "preCalculateMinTotalWidth", + value: function preCalculateMinTotalWidth(voices) { + // Cache results. + if (this.hasMinTotalWidth) return this.minTotalWidth; // Create tick contexts if not already created. + + if (!this.tickContexts) { + if (!voices) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArgument', "'voices' required to run preCalculateMinTotalWidth"); + } + + this.createTickContexts(voices); + } + + var _this$tickContexts = this.tickContexts, + contextList = _this$tickContexts.list, + contextMap = _this$tickContexts.map; // Go through each tick context and calculate total width. + + this.minTotalWidth = contextList.map(function (tick) { + var context = contextMap[tick]; + context.preFormat(); + return context.getWidth(); + }).reduce(function (a, b) { + return a + b; + }, 0); + this.hasMinTotalWidth = true; + return this.minTotalWidth; + } // Get minimum width required to render all voices. Either `format` or + // `preCalculateMinTotalWidth` must be called before this method. + + }, { + key: "getMinTotalWidth", + value: function getMinTotalWidth() { + if (!this.hasMinTotalWidth) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoMinTotalWidth', "Call 'preCalculateMinTotalWidth' or 'preFormat' before calling 'getMinTotalWidth'"); + } + + return this.minTotalWidth; + } // Create `ModifierContext`s for each tick in `voices`. + + }, { + key: "createModifierContexts", + value: function createModifierContexts(voices) { + var contexts = createContexts(voices, _modifiercontext__WEBPACK_IMPORTED_MODULE_7__["ModifierContext"], function (tickable, context) { + return tickable.addToModifierContext(context); + }); + this.modiferContexts = contexts; + return contexts; + } // Create `TickContext`s for each tick in `voices`. Also calculate the + // total number of ticks in voices. + + }, { + key: "createTickContexts", + value: function createTickContexts(voices) { + var contexts = createContexts(voices, _tickcontext__WEBPACK_IMPORTED_MODULE_8__["TickContext"], function (tickable, context, voiceIndex) { + return context.addTickable(tickable, voiceIndex); + }); + contexts.array.forEach(function (context) { + context.tContexts = contexts.array; + }); + this.totalTicks = voices[0].getTicksUsed().clone(); + this.tickContexts = contexts; + return contexts; + } // This is the core formatter logic. Format voices and justify them + // to `justifyWidth` pixels. `renderingContext` is required to justify elements + // that can't retreive widths without a canvas. This method sets the `x` positions + // of all the tickables/notes in the formatter. + + }, { + key: "preFormat", + value: function preFormat() { + var _this = this; + + var justifyWidth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + var renderingContext = arguments.length > 1 ? arguments[1] : undefined; + var voices = arguments.length > 2 ? arguments[2] : undefined; + var stave = arguments.length > 3 ? arguments[3] : undefined; + // Initialize context maps. + var contexts = this.tickContexts; + var contextList = contexts.list, + contextMap = contexts.map; // Reset loss history for evaluator. + + this.lossHistory = []; // If voices and a stave were provided, set the Stave for each voice + // and preFormat to apply Y values to the notes; + + if (voices && stave) { + voices.forEach(function (voice) { + return voice.setStave(stave).preFormat(); + }); + } // Now distribute the ticks to each tick context, and assign them their + // own X positions. + + + var x = 0; + var shift = 0; + this.minTotalWidth = 0; // Pass 1: Give each note maximum width requested by context. + + contextList.forEach(function (tick) { + var context = contextMap[tick]; + if (renderingContext) context.setContext(renderingContext); // Make sure that all tickables in this context have calculated their + // space requirements. + + context.preFormat(); + var width = context.getWidth(); + _this.minTotalWidth += width; + var metrics = context.getMetrics(); + x = x + shift + metrics.totalLeftPx; + context.setX(x); // Calculate shift for the next tick. + + shift = width - metrics.totalLeftPx; + }); + this.minTotalWidth = x + shift; + this.hasMinTotalWidth = true; // No justification needed. End formatting. + + if (justifyWidth <= 0) return this.evaluate(); // Start justification. Subtract the right extra pixels of the final context because the formatter + // justifies based on the context's X position, which is the left-most part of the note head. + + var firstContext = contextMap[contextList[0]]; + var lastContext = contextMap[contextList[contextList.length - 1]]; // Calculate the "distance error" between the tick contexts. The expected distance is the spacing proportional to + // the softmax of the ticks. + + function calculateIdealDistances(adjustedJustifyWidth) { + return contextList.map(function (tick, i) { + var context = contextMap[tick]; + var voices = context.getTickablesByVoice(); + var backTickable = null; + + if (i > 0) { + var prevContext = contextMap[contextList[i - 1]]; // Go through each tickable and search backwards for another tickable + // in the same voice. If found, use that duration (ticks) to calculate + // the expected distance. + + var _loop = function _loop(j) { + var backTick = contextMap[contextList[j]]; + var backVoices = backTick.getTickablesByVoice(); // Look for matching voices between tick contexts. + + var matchingVoices = []; + Object.keys(voices).forEach(function (v) { + if (backVoices[v]) { + matchingVoices.push(v); + } + }); + + if (matchingVoices.length > 0) { + // Found matching voices, get largest duration + var maxTicks = 0; + var maxNegativeShiftPx = Infinity; + var expectedDistance = 0; // eslint-disable-next-line + + matchingVoices.forEach(function (v) { + var ticks = backVoices[v].getTicks().value(); + + if (ticks > maxTicks) { + backTickable = backVoices[v]; + maxTicks = ticks; + } // Calculate the limits of the shift based on modifiers, etc. + + + var thisTickable = voices[v]; + var insideLeftEdge = thisTickable.getX() - (thisTickable.getMetrics().modLeftPx + thisTickable.getMetrics().leftDisplacedHeadPx); + var backMetrics = backVoices[v].getMetrics(); + var insideRightEdge = backVoices[v].getX() + backMetrics.notePx + backMetrics.modRightPx + backMetrics.rightDisplacedHeadPx; // Don't allow shifting if notes in the same voice can collide + + maxNegativeShiftPx = Math.min(maxNegativeShiftPx, insideLeftEdge - insideRightEdge); + }); // Don't shift further left than the notehead of the last context + + maxNegativeShiftPx = Math.min(maxNegativeShiftPx, context.getX() - prevContext.getX()); // Calculate the expected distance of the current context from the last matching tickable. The + // distance is scaled down by the softmax for the voice. + + expectedDistance = backTickable.getVoice().softmax(maxTicks) * adjustedJustifyWidth; + return { + v: { + expectedDistance: expectedDistance, + maxNegativeShiftPx: maxNegativeShiftPx, + fromTickable: backTickable + } + }; + } + }; + + for (var j = i - 1; j >= 0; j--) { + var _ret = _loop(j); + + if (_typeof(_ret) === "object") return _ret.v; + } + } + + return { + errorPx: 0, + fromTickablePx: 0, + maxNegativeShiftPx: 0 + }; + }); + } + + function shiftToIdealDistances(idealDistances) { + // Distribute ticks to the contexts based on the calculated distance error. + var centerX = adjustedJustifyWidth / 2; + var spaceAccum = 0; + var negativeSpaceAccum = 0; + contextList.forEach(function (tick, index) { + var context = contextMap[tick]; + + if (index > 0) { + var _x = context.getX(); + + var ideal = idealDistances[index]; + + var errorPx = ideal.fromTickable.getX() + ideal.expectedDistance - (_x + spaceAccum); + + var negativeShiftPx = 0; + + if (errorPx > 0) { + spaceAccum += errorPx; + } else if (errorPx < 0) { + negativeShiftPx = Math.min(ideal.maxNegativeShiftPx + negativeSpaceAccum, Math.abs(errorPx)); + } + + context.setX(_x + spaceAccum - negativeShiftPx); + negativeSpaceAccum += negativeShiftPx; + } // Move center aligned tickables to middle + + + context.getCenterAlignedTickables().forEach(function (tickable) { + // eslint-disable-line + tickable.center_x_shift = centerX - context.getX(); + }); + }); + return lastContext.getX() - firstContext.getX(); + } + + var adjustedJustifyWidth = justifyWidth - lastContext.getMetrics().notePx - lastContext.getMetrics().totalRightPx - firstContext.getMetrics().totalLeftPx; + var targetWidth = adjustedJustifyWidth; + var actualWidth = shiftToIdealDistances(calculateIdealDistances(targetWidth)); + var iterations = this.options.maxIterations; + + while (actualWidth > adjustedJustifyWidth + lastContext.getMetrics().notePx && iterations > 0) { + // If we couldn't fit all the notes into the jusification width, it's because the softmax-scaled + // widths between different durations differ across stave (e.g., 1 quarter note is not the same pixel-width + // as 4 16th-notes). Run another pass, now that we know how much to justify. + targetWidth -= actualWidth - targetWidth; + actualWidth = shiftToIdealDistances(calculateIdealDistances(targetWidth)); + iterations--; + } // Just one context. Done formatting. + + + if (contextList.length === 1) return null; + this.justifyWidth = justifyWidth; + return this.evaluate(); + } // Calculate the total cost of this formatting decision. + + }, { + key: "evaluate", + value: function evaluate() { + var _this2 = this; + + var justifyWidth = this.justifyWidth; // Calculate available slack per tick context. This works out how much freedom + // to move a context has in either direction, without affecting other notes. + + this.contextGaps = { + total: 0, + gaps: [] + }; + this.tickContexts.list.forEach(function (tick, index) { + if (index === 0) return; + var prevTick = _this2.tickContexts.list[index - 1]; + var prevContext = _this2.tickContexts.map[prevTick]; + var context = _this2.tickContexts.map[tick]; + var prevMetrics = prevContext.getMetrics(); + var currMetrics = context.getMetrics(); // Calculate X position of right edge of previous note + + var insideRightEdge = prevContext.getX() + prevMetrics.notePx + prevMetrics.totalRightPx; // Calculate X position of left edge of current note + + var insideLeftEdge = context.getX() - currMetrics.totalLeftPx; + var gap = insideLeftEdge - insideRightEdge; + _this2.contextGaps.total += gap; + + _this2.contextGaps.gaps.push({ + x1: insideRightEdge, + x2: insideLeftEdge + }); // Tell the tick contexts how much they can reposition themselves. + + + context.getFormatterMetrics().freedom.left = gap; + prevContext.getFormatterMetrics().freedom.right = gap; + }); // Calculate mean distance in each voice for each duration type, then calculate + // how far each note is from the mean. + + var durationStats = this.durationStats = {}; + + function updateStats(duration, space) { + var stats = durationStats[duration]; + + if (stats === undefined) { + durationStats[duration] = { + mean: space, + count: 1 + }; + } else { + stats.count += 1; + stats.mean = (stats.mean + space) / 2; + } + } + + this.voices.forEach(function (voice) { + voice.getTickables().forEach(function (note, i, notes) { + var duration = note.getTicks().clone().simplify().toString(); + var metrics = note.getMetrics(); + var formatterMetrics = note.getFormatterMetrics(); + var leftNoteEdge = note.getX() + metrics.notePx + metrics.totalRightPx; + var space = 0; + + if (i < notes.length - 1) { + var rightNote = notes[i + 1]; + var rightMetrics = rightNote.getMetrics(); + var rightNoteEdge = rightNote.getX() - rightMetrics.totalLeftPx; + space = rightNoteEdge - leftNoteEdge; + formatterMetrics.space.used = rightNote.getX() - note.getX(); + rightNote.getFormatterMetrics().freedom.left = space; + } else { + space = justifyWidth - leftNoteEdge; + formatterMetrics.space.used = justifyWidth - note.getX(); + } + + formatterMetrics.freedom.right = space; + updateStats(duration, formatterMetrics.space.used); + }); + }); // Calculate how much each note deviates from the mean. Loss function is square + // root of the sum of squared deviations. + + var totalDeviation = 0; + this.voices.forEach(function (voice) { + voice.getTickables().forEach(function (note) { + var duration = note.getTicks().clone().simplify().toString(); + var metrics = note.getFormatterMetrics(); + metrics.space.mean = durationStats[duration].mean; + metrics.duration = duration; + metrics.iterations += 1; + metrics.space.deviation = metrics.space.used - metrics.space.mean; + totalDeviation += Math.pow(metrics.space.deviation, 2); + }); + }); + this.totalCost = Math.sqrt(totalDeviation); + this.lossHistory.push(this.totalCost); + return this.totalCost; + } // Run a single iteration of rejustification. At a high level, this method calculates + // the overall "loss" (or cost) of this layout, and repositions tickcontexts in an + // attempt to reduce the cost. You can call this method multiple times until it finds + // and oscillates around a global minimum. + // + // Alpha is the "learning rate" for the formatter. It determines how much of a shift + // the formatter should make based on its cost function. + + }, { + key: "tune", + value: function tune(options) { + var _this3 = this; + + options = _objectSpread({ + alpha: 0.5 + }, options); + + var sum = function sum(arr) { + return arr.reduce(function (a, b) { + return a + b; + }); + }; // Move `current` tickcontext by `shift` pixels, and adjust the freedom + // on adjacent tickcontexts. + + + function move(current, prev, next, shift) { + current.setX(current.getX() + shift); + current.getFormatterMetrics().freedom.left += shift; + current.getFormatterMetrics().freedom.right -= shift; + if (prev) prev.getFormatterMetrics().freedom.right += shift; + if (next) next.getFormatterMetrics().freedom.left -= shift; + } + + var shift = 0; + this.totalShift = 0; + this.tickContexts.list.forEach(function (tick, index, list) { + var context = _this3.tickContexts.map[tick]; + var prevContext = index > 0 ? _this3.tickContexts.map[list[index - 1]] : null; + var nextContext = index < list.length - 1 ? _this3.tickContexts.map[list[index + 1]] : null; + move(context, prevContext, nextContext, shift); + var cost = -sum(context.getTickables().map(function (t) { + return t.getFormatterMetrics().space.deviation; + })); + + if (cost > 0) { + shift = -Math.min(context.getFormatterMetrics().freedom.right, Math.abs(cost)); + } else if (cost < 0) { + if (nextContext) { + shift = Math.min(nextContext.getFormatterMetrics().freedom.right, Math.abs(cost)); + } else { + shift = 0; + } + } + + shift *= options.alpha; + _this3.totalShift += shift; + }); + this.iterationsCompleted++; + return this.evaluate(); + } // This is the top-level call for all formatting logic completed + // after `x` *and* `y` values have been computed for the notes + // in the voices. + + }, { + key: "postFormat", + value: function postFormat() { + var postFormatContexts = function postFormatContexts(contexts) { + return contexts.list.forEach(function (tick) { + return contexts.map[tick].postFormat(); + }); + }; + + postFormatContexts(this.modiferContexts); + postFormatContexts(this.tickContexts); + return this; + } // Take all `voices` and create `ModifierContext`s out of them. This tells + // the formatters that the voices belong on a single stave. + + }, { + key: "joinVoices", + value: function joinVoices(voices) { + this.createModifierContexts(voices); + this.hasMinTotalWidth = false; + return this; + } // Align rests in voices, justify the contexts, and position the notes + // so voices are aligned and ready to render onto the stave. This method + // mutates the `x` positions of all tickables in `voices`. + // + // Voices are full justified to fit in `justifyWidth` pixels. + // + // Set `options.context` to the rendering context. Set `options.align_rests` + // to true to enable rest alignment. + + }, { + key: "format", + value: function format(voices, justifyWidth, options) { + var _this4 = this; + + var opts = _objectSpread({ + align_rests: false, + context: null, + stave: null + }, options); + + this.voices = voices; + + if (this.options.softmaxFactor) { + this.voices.forEach(function (v) { + return v.setSoftmaxFactor(_this4.options.softmaxFactor); + }); + } + + this.alignRests(voices, opts.align_rests); + this.createTickContexts(voices); + this.preFormat(justifyWidth, opts.context, voices, opts.stave); // Only postFormat if a stave was supplied for y value formatting + + if (opts.stave) this.postFormat(); + return this; + } // This method is just like `format` except that the `justifyWidth` is inferred + // from the `stave`. + + }, { + key: "formatToStave", + value: function formatToStave(voices, stave, options) { + options = _objectSpread({ + padding: 10 + }, options); + var justifyWidth = stave.getNoteEndX() - stave.getNoteStartX() - options.padding; + L('Formatting voices to width: ', justifyWidth); + return this.format(voices, justifyWidth, _objectSpread({ + context: stave.getContext() + }, options)); + } + }]); + + return Formatter; +}(); + +/***/ }), + +/***/ "./src/fraction.js": +/*!*************************!*\ + !*** ./src/fraction.js ***! + \*************************/ +/*! exports provided: Fraction */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Fraction", function() { return Fraction; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// Fraction class that represents a rational number +// +// @author zz85 +// @author incompleteopus (modifications) + +/* eslint-disable no-underscore-dangle */ + +var Fraction = +/*#__PURE__*/ +function () { + _createClass(Fraction, null, [{ + key: "GCD", + + /** + * GCD: Find greatest common divisor using Euclidean algorithm + */ + value: function GCD(a, b) { + if (typeof a !== 'number' || typeof b !== 'number') { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArgument', "Invalid numbers: ".concat(a, ", ").concat(b)); + } + + var t; + + while (b !== 0) { + t = b; + b = a % b; + a = t; + } + + return a; + } + /** + * LCM: Lowest common multiple + */ + + }, { + key: "LCM", + value: function LCM(a, b) { + return a * b / Fraction.GCD(a, b); + } + /** + * LCMM: Lowest common multiple for more than two numbers + */ + + }, { + key: "LCMM", + value: function LCMM(args) { + if (args.length === 0) { + return 0; + } else if (args.length === 1) { + return args[0]; + } else if (args.length === 2) { + return Fraction.LCM(args[0], args[1]); + } else { + var arg0 = args[0]; + args.shift(); + return Fraction.LCM(arg0, Fraction.LCMM(args)); + } + } + }]); + + function Fraction(numerator, denominator) { + _classCallCheck(this, Fraction); + + this.set(numerator, denominator); + } + + _createClass(Fraction, [{ + key: "set", + value: function set(numerator, denominator) { + this.numerator = numerator === undefined ? 1 : numerator; + this.denominator = denominator === undefined ? 1 : denominator; + return this; + } + }, { + key: "value", + value: function value() { + return this.numerator / this.denominator; + } + }, { + key: "simplify", + value: function simplify() { + var u = this.numerator; + var d = this.denominator; + var gcd = Fraction.GCD(u, d); + u /= gcd; + d /= gcd; + + if (d < 0) { + d = -d; + u = -u; + } + + return this.set(u, d); + } + }, { + key: "add", + value: function add(param1, param2) { + var otherNumerator; + var otherDenominator; + + if (param1 instanceof Fraction) { + otherNumerator = param1.numerator; + otherDenominator = param1.denominator; + } else { + if (param1 !== undefined) { + otherNumerator = param1; + } else { + otherNumerator = 0; + } + + if (param2 !== undefined) { + otherDenominator = param2; + } else { + otherDenominator = 1; + } + } + + var lcm = Fraction.LCM(this.denominator, otherDenominator); + var a = lcm / this.denominator; + var b = lcm / otherDenominator; + var u = this.numerator * a + otherNumerator * b; + return this.set(u, lcm); + } + }, { + key: "subtract", + value: function subtract(param1, param2) { + var otherNumerator; + var otherDenominator; + + if (param1 instanceof Fraction) { + otherNumerator = param1.numerator; + otherDenominator = param1.denominator; + } else { + if (param1 !== undefined) { + otherNumerator = param1; + } else { + otherNumerator = 0; + } + + if (param2 !== undefined) { + otherDenominator = param2; + } else { + otherDenominator = 1; + } + } + + var lcm = Fraction.LCM(this.denominator, otherDenominator); + var a = lcm / this.denominator; + var b = lcm / otherDenominator; + var u = this.numerator * a - otherNumerator * b; + return this.set(u, lcm); + } + }, { + key: "multiply", + value: function multiply(param1, param2) { + var otherNumerator; + var otherDenominator; + + if (param1 instanceof Fraction) { + otherNumerator = param1.numerator; + otherDenominator = param1.denominator; + } else { + if (param1 !== undefined) { + otherNumerator = param1; + } else { + otherNumerator = 1; + } + + if (param2 !== undefined) { + otherDenominator = param2; + } else { + otherDenominator = 1; + } + } + + return this.set(this.numerator * otherNumerator, this.denominator * otherDenominator); + } + }, { + key: "divide", + value: function divide(param1, param2) { + var otherNumerator; + var otherDenominator; + + if (param1 instanceof Fraction) { + otherNumerator = param1.numerator; + otherDenominator = param1.denominator; + } else { + if (param1 !== undefined) { + otherNumerator = param1; + } else { + otherNumerator = 1; + } + + if (param2 !== undefined) { + otherDenominator = param2; + } else { + otherDenominator = 1; + } + } + + return this.set(this.numerator * otherDenominator, this.denominator * otherNumerator); + } // Simplifies both sides and checks if they are equal. + + }, { + key: "equals", + value: function equals(compare) { + var a = Fraction.__compareA.copy(compare).simplify(); + + var b = Fraction.__compareB.copy(this).simplify(); + + return a.numerator === b.numerator && a.denominator === b.denominator; + } // Greater than operator. + + }, { + key: "greaterThan", + value: function greaterThan(compare) { + var a = Fraction.__compareB.copy(this); + + a.subtract(compare); + return a.numerator > 0; + } // Greater than or equals operator. + + }, { + key: "greaterThanEquals", + value: function greaterThanEquals(compare) { + var a = Fraction.__compareB.copy(this); + + a.subtract(compare); + return a.numerator >= 0; + } // Less than operator. + + }, { + key: "lessThan", + value: function lessThan(compare) { + return !this.greaterThanEquals(compare); + } // Less than or equals operator. + + }, { + key: "lessThanEquals", + value: function lessThanEquals(compare) { + return !this.greaterThan(compare); + } // Creates a new copy with this current values. + + }, { + key: "clone", + value: function clone() { + return new Fraction(this.numerator, this.denominator); + } // Copies value of another Fraction into itself. + + }, { + key: "copy", + value: function copy(_copy) { + if (typeof _copy === 'number') { + return this.set(_copy || 0, 1); + } + + return this.set(_copy.numerator, _copy.denominator); + } // Returns the integer component eg. (4/2) == 2 + + }, { + key: "quotient", + value: function quotient() { + return Math.floor(this.numerator / this.denominator); + } // Returns the fraction component when reduced to a mixed number + + }, { + key: "fraction", + value: function fraction() { + return this.numerator % this.denominator; + } // Returns the absolute value + + }, { + key: "abs", + value: function abs() { + this.denominator = Math.abs(this.denominator); + this.numerator = Math.abs(this.numerator); + return this; + } // Returns a raw string representation + + }, { + key: "toString", + value: function toString() { + return this.numerator + '/' + this.denominator; + } // Returns a simplified string respresentation + + }, { + key: "toSimplifiedString", + value: function toSimplifiedString() { + return Fraction.__tmp.copy(this).simplify().toString(); + } // Returns string representation in mixed form + + }, { + key: "toMixedString", + value: function toMixedString() { + var s = ''; + var q = this.quotient(); + + var f = Fraction.__tmp.copy(this); + + if (q < 0) { + f.abs().fraction(); + } else { + f.fraction(); + } + + if (q !== 0) { + s += q; + + if (f.numerator !== 0) { + s += ' ' + f.toSimplifiedString(); + } + } else { + if (f.numerator === 0) { + s = '0'; + } else { + s = f.toSimplifiedString(); + } + } + + return s; + } // Parses a fraction string + + }, { + key: "parse", + value: function parse(str) { + var i = str.split('/'); + var n = parseInt(i[0], 10); + var d = i[1] ? parseInt(i[1], 10) : 1; + return this.set(n, d); + } + }]); + + return Fraction; +}(); // Temporary cached objects + +Fraction.__compareA = new Fraction(); +Fraction.__compareB = new Fraction(); +Fraction.__tmp = new Fraction(); + +/***/ }), + +/***/ "./src/frethandfinger.js": +/*!*******************************!*\ + !*** ./src/frethandfinger.js ***! + \*******************************/ +/*! exports provided: FretHandFinger */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FretHandFinger", function() { return FretHandFinger; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// VexFlow - Music Engraving for HTML5 +// Copyright Mohit Muthanna 2010 +// Author Larry Kuhns 2013 +// Class to draws string numbers into the notation. + + +/** + * @constructor + */ + +var FretHandFinger = +/*#__PURE__*/ +function (_Modifier) { + _inherits(FretHandFinger, _Modifier); + + _createClass(FretHandFinger, null, [{ + key: "format", + // Arrange fingerings inside a ModifierContext. + value: function format(nums, state) { + var left_shift = state.left_shift, + right_shift = state.right_shift; + var num_spacing = 1; + if (!nums || nums.length === 0) return false; + var nums_list = []; + var prev_note = null; + var shiftLeft = 0; + var shiftRight = 0; + + for (var i = 0; i < nums.length; ++i) { + var num = nums[i]; + var note = num.getNote(); + var pos = num.getPosition(); + var props = note.getKeyProps()[num.getIndex()]; + + if (note !== prev_note) { + for (var n = 0; n < note.keys.length; ++n) { + if (left_shift === 0) { + shiftLeft = Math.max(note.getLeftDisplacedHeadPx(), shiftLeft); + } + + if (right_shift === 0) { + shiftRight = Math.max(note.getRightDisplacedHeadPx(), shiftRight); + } + } + + prev_note = note; + } + + nums_list.push({ + note: note, + num: num, + pos: pos, + line: props.line, + shiftL: shiftLeft, + shiftR: shiftRight + }); + } // Sort fingernumbers by line number. + + + nums_list.sort(function (a, b) { + return b.line - a.line; + }); + var numShiftL = 0; + var numShiftR = 0; + var xWidthL = 0; + var xWidthR = 0; + var lastLine = null; + var lastNote = null; + + for (var _i = 0; _i < nums_list.length; ++_i) { + var num_shift = 0; + var _nums_list$_i = nums_list[_i], + _note = _nums_list$_i.note, + _pos = _nums_list$_i.pos, + _num = _nums_list$_i.num, + line = _nums_list$_i.line, + shiftL = _nums_list$_i.shiftL, + shiftR = _nums_list$_i.shiftR; // Reset the position of the string number every line. + + if (line !== lastLine || _note !== lastNote) { + numShiftL = left_shift + shiftL; + numShiftR = right_shift + shiftR; + } + + var numWidth = _num.getWidth() + num_spacing; + + if (_pos === _modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"].Position.LEFT) { + _num.setXShift(left_shift + numShiftL); + + num_shift = left_shift + numWidth; // spacing + + xWidthL = num_shift > xWidthL ? num_shift : xWidthL; + } else if (_pos === _modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"].Position.RIGHT) { + _num.setXShift(numShiftR); + + num_shift = shiftRight + numWidth; // spacing + + xWidthR = num_shift > xWidthR ? num_shift : xWidthR; + } + + lastLine = line; + lastNote = _note; + } + + state.left_shift += xWidthL; + state.right_shift += xWidthR; + return true; + } + }, { + key: "CATEGORY", + get: function get() { + return 'frethandfinger'; + } + }]); + + function FretHandFinger(number) { + var _this; + + _classCallCheck(this, FretHandFinger); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(FretHandFinger).call(this)); + + _this.setAttribute('type', 'FretHandFinger'); + + _this.note = null; + _this.index = null; + _this.finger = number; + _this.width = 7; + _this.position = _modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"].Position.LEFT; // Default position above stem or note head + + _this.x_shift = 0; + _this.y_shift = 0; + _this.x_offset = 0; // Horizontal offset from default + + _this.y_offset = 0; // Vertical offset from default + + _this.font = { + family: 'sans-serif', + size: 9, + weight: 'bold' + }; + return _this; + } + + _createClass(FretHandFinger, [{ + key: "getCategory", + value: function getCategory() { + return FretHandFinger.CATEGORY; + } + }, { + key: "setFretHandFinger", + value: function setFretHandFinger(number) { + this.finger = number; + return this; + } + }, { + key: "setOffsetX", + value: function setOffsetX(x) { + this.x_offset = x; + return this; + } + }, { + key: "setOffsetY", + value: function setOffsetY(y) { + this.y_offset = y; + return this; + } + }, { + key: "draw", + value: function draw() { + this.checkContext(); + + if (!this.note || this.index == null) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoAttachedNote', "Can't draw string number without a note and index."); + } + + this.setRendered(); + var ctx = this.context; + var start = this.note.getModifierStartXY(this.position, this.index); + var dot_x = start.x + this.x_shift + this.x_offset; + var dot_y = start.y + this.y_shift + this.y_offset + 5; + + switch (this.position) { + case _modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"].Position.ABOVE: + dot_x -= 4; + dot_y -= 12; + break; + + case _modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"].Position.BELOW: + dot_x -= 2; + dot_y += 10; + break; + + case _modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"].Position.LEFT: + dot_x -= this.width; + break; + + case _modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"].Position.RIGHT: + dot_x += 1; + break; + + default: + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('InvalidPostion', "The position ".concat(this.position, " does not exist")); + } + + ctx.save(); + ctx.setFont(this.font.family, this.font.size, this.font.weight); + ctx.fillText('' + this.finger, dot_x, dot_y); + ctx.restore(); + } + }]); + + return FretHandFinger; +}(_modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"]); + +/***/ }), + +/***/ "./src/ghostnote.js": +/*!**************************!*\ + !*** ./src/ghostnote.js ***! + \**************************/ +/*! exports provided: GhostNote */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GhostNote", function() { return GhostNote; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _stemmablenote__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stemmablenote */ "./src/stemmablenote.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description + + +var GhostNote = +/*#__PURE__*/ +function (_StemmableNote) { + _inherits(GhostNote, _StemmableNote); + + /** @constructor */ + function GhostNote(parameter) { + var _this; + + _classCallCheck(this, GhostNote); + + // Sanity check + if (!parameter) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('BadArguments', 'Ghost note must have valid initialization data to identify ' + 'duration.'); + } + + var note_struct; // Preserve backwards-compatibility + + if (typeof parameter === 'string') { + note_struct = { + duration: parameter + }; + } else if (_typeof(parameter) === 'object') { + note_struct = parameter; + } else { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('BadArguments', 'Ghost note must have valid initialization data to identify ' + 'duration.'); + } + + _this = _possibleConstructorReturn(this, _getPrototypeOf(GhostNote).call(this, note_struct)); + + _this.setAttribute('type', 'GhostNote'); // Note properties + + + _this.setWidth(0); + + return _this; + } + + _createClass(GhostNote, [{ + key: "isRest", + value: function isRest() { + return true; + } + }, { + key: "setStave", + value: function setStave(stave) { + _get(_getPrototypeOf(GhostNote.prototype), "setStave", this).call(this, stave); + } + }, { + key: "addToModifierContext", + value: function addToModifierContext() { + /* intentionally overridden */ + return this; + } + }, { + key: "preFormat", + value: function preFormat() { + this.setPreFormatted(true); + return this; + } + }, { + key: "draw", + value: function draw() { + if (!this.stave) throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoStave', "Can't draw without a stave."); // Draw the modifiers + + this.setRendered(); + + for (var i = 0; i < this.modifiers.length; ++i) { + var modifier = this.modifiers[i]; + modifier.setContext(this.context); + modifier.drawWithStyle(); + } + } + }]); + + return GhostNote; +}(_stemmablenote__WEBPACK_IMPORTED_MODULE_1__["StemmableNote"]); + +/***/ }), + +/***/ "./src/glyph.js": +/*!**********************!*\ + !*** ./src/glyph.js ***! + \**********************/ +/*! exports provided: Glyph */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Glyph", function() { return Glyph; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element */ "./src/element.js"); +/* harmony import */ var _boundingboxcomputation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./boundingboxcomputation */ "./src/boundingboxcomputation.js"); +/* harmony import */ var _boundingbox__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./boundingbox */ "./src/boundingbox.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. + + + + + + +function processOutline(outline, originX, originY, scaleX, scaleY, outlineFns) { + var command; + var x; + var y; + var i = 0; + + function nextX() { + return originX + outline[i++] * scaleX; + } + + function nextY() { + return originY + outline[i++] * scaleY; + } + + function doOutline(command) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + outlineFns[command].apply(outlineFns, args); + } + + while (i < outline.length) { + command = outline[i++]; + + switch (command) { + case 'm': + case 'l': + doOutline(command, nextX(), nextY()); + break; + + case 'q': + x = nextX(); + y = nextY(); + doOutline(command, nextX(), nextY(), x, y); + break; + + case 'b': + x = nextX(); + y = nextY(); + doOutline(command, nextX(), nextY(), nextX(), nextY(), x, y); + break; + + case 'z': + break; + + default: + break; + } + } +} + +var Glyph = +/*#__PURE__*/ +function (_Element) { + _inherits(Glyph, _Element); + + _createClass(Glyph, null, [{ + key: "lookupFontMetric", + + /* + Static methods used to implement loading and rendering glyphs. + Below categoryPath can be any metric path under 'glyphs', so stem.up would respolve + to glyphs.stem.up.shifX, glyphs.stem.up.shiftY, etc. + */ + value: function lookupFontMetric(_ref) { + var font = _ref.font, + category = _ref.category, + code = _ref.code, + key = _ref.key, + defaultValue = _ref.defaultValue; + var value = font.lookupMetric("glyphs.".concat(category, ".").concat(code, ".").concat(key), null); + + if (value === null) { + value = font.lookupMetric("glyphs.".concat(category, ".").concat(key), defaultValue); + } + + return value; + } + }, { + key: "lookupGlyph", + value: function lookupGlyph(fontStack, code) { + if (!fontStack) { + throw _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BAD_FONTSTACK', 'Font stack is misconfigured'); + } + + var glyph; + var font; + + for (var i = 0; i < fontStack.length; i++) { + font = fontStack[i]; + glyph = font.getGlyphs()[code]; + if (glyph) break; + } + + if (!glyph) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadGlyph', "Glyph ".concat(code, " does not exist in font.")); + } + + return { + glyph: glyph, + font: font + }; + } + }, { + key: "loadMetrics", + value: function loadMetrics(fontStack, code) { + var category = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + + var _Glyph$lookupGlyph = Glyph.lookupGlyph(fontStack, code), + glyph = _Glyph$lookupGlyph.glyph, + font = _Glyph$lookupGlyph.font; + + var x_shift = category ? Glyph.lookupFontMetric({ + font: font, + category: category, + code: code, + key: 'shiftX', + defaultValue: 0 + }) : 0; + var y_shift = category ? Glyph.lookupFontMetric({ + font: font, + category: category, + code: code, + key: 'shiftY', + defaultValue: 0 + }) : 0; + var scale = category ? Glyph.lookupFontMetric({ + font: font, + category: category, + code: code, + key: 'scale', + defaultValue: 1 + }) : 1; + var x_min = glyph.x_min; + var x_max = glyph.x_max; + var ha = glyph.ha; + var outline; + var CACHE = true; + + if (glyph.o) { + if (CACHE) { + if (glyph.cached_outline) { + outline = glyph.cached_outline; + } else { + outline = glyph.o.split(' '); + glyph.cached_outline = outline; + } + } else { + if (glyph.cached_outline) delete glyph.cached_outline; + outline = glyph.o.split(' '); + } + + return { + x_min: x_min, + x_max: x_max, + x_shift: x_shift, + y_shift: y_shift, + scale: scale, + ha: ha, + outline: outline, + font: font + }; + } else { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadGlyph', "Glyph ".concat(code, " has no outline defined.")); + } + } + /** + * A quick and dirty static glyph renderer. Renders glyphs from the default + * font defined in Vex.Flow.Font. + * + * @param {!Object} ctx The canvas context. + * @param {number} x_pos X coordinate. + * @param {number} y_pos Y coordinate. + * @param {number} point The point size to use. + * @param {string} val The glyph code in font.getGlyphs() + */ + + }, { + key: "renderGlyph", + value: function renderGlyph(ctx, x_pos, y_pos, point, val, options) { + var params = _objectSpread({ + fontStack: _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].DEFAULT_FONT_STACK, + category: null + }, options); + + var metrics = Glyph.loadMetrics(params.fontStack, val, params.category); + point = params.category ? Glyph.lookupFontMetric({ + font: metrics.font, + category: params.category, + code: val, + key: 'point', + defaultValue: point + }) : point; + var scale = point * 72.0 / (metrics.font.getResolution() * 100.0); + Glyph.renderOutline(ctx, metrics.outline, scale * metrics.scale, x_pos + metrics.x_shift, y_pos + metrics.y_shift, options); + return metrics; + } + }, { + key: "renderOutline", + value: function renderOutline(ctx, outline, scale, x_pos, y_pos, options) { + ctx.beginPath(); + ctx.moveTo(x_pos, y_pos); + processOutline(outline, x_pos, y_pos, scale, -scale, { + m: ctx.moveTo.bind(ctx), + l: ctx.lineTo.bind(ctx), + q: ctx.quadraticCurveTo.bind(ctx), + b: ctx.bezierCurveTo.bind(ctx) // z: ctx.fill.bind(ctx), // ignored + + }, options); + ctx.fill(); + } + }, { + key: "getOutlineBoundingBox", + value: function getOutlineBoundingBox(outline, scale, x_pos, y_pos) { + var bboxComp = new _boundingboxcomputation__WEBPACK_IMPORTED_MODULE_3__["BoundingBoxComputation"](); + processOutline(outline, x_pos, y_pos, scale, -scale, { + m: bboxComp.addPoint.bind(bboxComp), + l: bboxComp.addPoint.bind(bboxComp), + q: bboxComp.addQuadraticCurve.bind(bboxComp), + b: bboxComp.addBezierCurve.bind(bboxComp), + z: bboxComp.noOp.bind(bboxComp) + }); + return new _boundingbox__WEBPACK_IMPORTED_MODULE_4__["BoundingBox"](bboxComp.x1, bboxComp.y1, bboxComp.width(), bboxComp.height()); + } + /** + * @constructor + */ + + }]); + + function Glyph(code, point, options) { + var _this; + + _classCallCheck(this, Glyph); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Glyph).call(this)); + + _this.setAttribute('type', 'Glyph'); + + _this.code = code; + _this.point = point; + _this.options = { + fontStack: _this.getFontStack(), + category: null + }; + _this.metrics = null; + _this.x_shift = 0; + _this.y_shift = 0; + _this.originShift = { + x: 0, + y: 0 + }; + + if (options) { + _this.setOptions(options); + } else { + _this.reset(); + } + + return _this; + } + + _createClass(Glyph, [{ + key: "getCode", + value: function getCode() { + return this.code; + } + }, { + key: "setOptions", + value: function setOptions(options) { + this.options = _objectSpread({}, this.options, {}, options); + this.reset(); + } + }, { + key: "setPoint", + value: function setPoint(point) { + this.point = point; + return this; + } + }, { + key: "setStave", + value: function setStave(stave) { + this.stave = stave; + return this; + } + }, { + key: "setXShift", + value: function setXShift(x_shift) { + this.x_shift = x_shift; + return this; + } + }, { + key: "setYShift", + value: function setYShift(y_shift) { + this.y_shift = y_shift; + return this; + } + }, { + key: "reset", + value: function reset() { + this.metrics = Glyph.loadMetrics(this.options.fontStack, this.code, this.options.category); // Override point from metrics file + + this.point = this.options.category ? Glyph.lookupFontMetric({ + category: this.options.category, + font: this.metrics.font, + code: this.code, + key: 'point', + defaultValue: this.point + }) : this.point; + this.scale = this.point * 72 / (this.metrics.font.getResolution() * 100); + this.bbox = Glyph.getOutlineBoundingBox(this.metrics.outline, this.scale * this.metrics.scale, this.metrics.x_shift, this.metrics.y_shift); + } + }, { + key: "getMetrics", + value: function getMetrics() { + if (!this.metrics) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('BadGlyph', "Glyph ".concat(this.code, " is not initialized.")); + } + + return { + x_min: this.metrics.x_min * this.scale * this.metrics.scale, + x_max: this.metrics.x_max * this.scale * this.metrics.scale, + width: this.bbox.getW(), + height: this.bbox.getH() + }; + } + }, { + key: "setOriginX", + value: function setOriginX(x) { + var bbox = this.bbox; + var originX = Math.abs(bbox.getX() / bbox.getW()); + var xShift = (x - originX) * bbox.getW(); + this.originShift.x = -xShift; + } + }, { + key: "setOriginY", + value: function setOriginY(y) { + var bbox = this.bbox; + var originY = Math.abs(bbox.getY() / bbox.getH()); + var yShift = (y - originY) * bbox.getH(); + this.originShift.y = -yShift; + } + }, { + key: "setOrigin", + value: function setOrigin(x, y) { + this.setOriginX(x); + this.setOriginY(y); + } + }, { + key: "render", + value: function render(ctx, x, y) { + if (!this.metrics) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('BadGlyph', "Glyph ".concat(this.code, " is not initialized.")); + } + + var outline = this.metrics.outline; + var scale = this.scale * this.metrics.scale; + this.setRendered(); + this.applyStyle(ctx); + Glyph.renderOutline(ctx, outline, scale, x + this.originShift.x + this.metrics.x_shift, y + this.originShift.y + this.metrics.y_shift); + this.restoreStyle(ctx); + } + }, { + key: "renderToStave", + value: function renderToStave(x) { + this.checkContext(); + + if (!this.metrics) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('BadGlyph', "Glyph ".concat(this.code, " is not initialized.")); + } + + if (!this.stave) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('GlyphError', 'No valid stave'); + } + + var outline = this.metrics.outline; + var scale = this.scale * this.metrics.scale; + this.setRendered(); + this.applyStyle(); + Glyph.renderOutline(this.context, outline, scale, x + this.x_shift + this.metrics.x_shift, this.stave.getYForGlyphs() + this.y_shift + this.metrics.y_shift); + this.restoreStyle(); + } + }]); + + return Glyph; +}(_element__WEBPACK_IMPORTED_MODULE_2__["Element"]); + +/***/ }), + +/***/ "./src/glyphnote.js": +/*!**************************!*\ + !*** ./src/glyphnote.js ***! + \**************************/ +/*! exports provided: GlyphNote */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GlyphNote", function() { return GlyphNote; }); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./note */ "./src/note.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. + +var GlyphNote = +/*#__PURE__*/ +function (_Note) { + _inherits(GlyphNote, _Note); + + function GlyphNote(glyph, noteStruct, options) { + var _this; + + _classCallCheck(this, GlyphNote); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(GlyphNote).call(this, noteStruct)); + _this.options = _objectSpread({ + ignoreTicks: false, + line: 2 + }, options); + + _this.setAttribute('type', 'GlyphNote'); // Note properties + + + _this.ignore_ticks = _this.options.ignoreTicks; + + if (glyph) { + _this.setGlyph(glyph); + } + + return _this; + } + + _createClass(GlyphNote, [{ + key: "setGlyph", + value: function setGlyph(glyph) { + this.glyph = glyph; + this.setWidth(this.glyph.getMetrics().width); + return this; + } + }, { + key: "getBoundingBox", + value: function getBoundingBox() { + return this.glyph.getBoundingBox(); + } + /* + addToModifierContext() { + return this; + } + */ + + }, { + key: "preFormat", + value: function preFormat() { + this.setPreFormatted(true); + return this; + } + }, { + key: "draw", + value: function draw() { + this.stave.checkContext(); + this.setRendered(); // Context is set when setStave is called on Note + + if (!this.glyph.getContext()) { + this.glyph.setContext(this.context); + } + + this.glyph.setStave(this.stave); + this.glyph.setYShift(this.stave.getYForLine(this.options.line) - this.stave.getYForGlyphs()); + var x = this.isCenterAligned() ? this.getAbsoluteX() - this.getWidth() / 2 : this.getAbsoluteX(); + this.glyph.renderToStave(x); + } + }]); + + return GlyphNote; +}(_note__WEBPACK_IMPORTED_MODULE_0__["Note"]); + +/***/ }), + +/***/ "./src/gracenote.js": +/*!**************************!*\ + !*** ./src/gracenote.js ***! + \**************************/ +/*! exports provided: GraceNote */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GraceNote", function() { return GraceNote; }); +/* harmony import */ var _stavenote__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./stavenote */ "./src/stavenote.js"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stem */ "./src/stem.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. + + + +var GraceNote = +/*#__PURE__*/ +function (_StaveNote) { + _inherits(GraceNote, _StaveNote); + + _createClass(GraceNote, null, [{ + key: "CATEGORY", + get: function get() { + return 'gracenotes'; + } + }, { + key: "LEDGER_LINE_OFFSET", + get: function get() { + return 2; + } + }, { + key: "SCALE", + get: function get() { + return 0.66; + } + }]); + + function GraceNote(note_struct) { + var _this; + + _classCallCheck(this, GraceNote); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(GraceNote).call(this, _extends(note_struct, { + glyph_font_scale: _tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].DEFAULT_NOTATION_FONT_SCALE * GraceNote.SCALE, + stroke_px: GraceNote.LEDGER_LINE_OFFSET + }))); + + _this.setAttribute('type', 'GraceNote'); + + _this.slash = note_struct.slash; + _this.slur = true; + + _this.buildNoteHeads(); + + _this.width = 3; + return _this; + } + + _createClass(GraceNote, [{ + key: "getStemExtension", + value: function getStemExtension() { + if (this.stem_extension_override != null) { + return this.stem_extension_override; + } + + var glyph = this.getGlyph(); + + if (glyph) { + var ret = _get(_getPrototypeOf(GraceNote.prototype), "getStemExtension", this).call(this); + + if (glyph.stem) { + var staveNoteScale = this.getStaveNoteScale(); + ret = (_stem__WEBPACK_IMPORTED_MODULE_1__["Stem"].HEIGHT + ret) * staveNoteScale - _stem__WEBPACK_IMPORTED_MODULE_1__["Stem"].HEIGHT; + } + + return ret; + } + + return 0; + } + }, { + key: "getCategory", + value: function getCategory() { + return GraceNote.CATEGORY; + } // FIXME: move this to more basic class. + + }, { + key: "getStaveNoteScale", + value: function getStaveNoteScale() { + return this.render_options.glyph_font_scale / _tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].DEFAULT_NOTATION_FONT_SCALE; + } + }, { + key: "draw", + value: function draw() { + _get(_getPrototypeOf(GraceNote.prototype), "draw", this).call(this); + + this.setRendered(); + var stem = this.stem; + + if (this.slash && stem) { + var staveNoteScale = this.getStaveNoteScale(); // some magic numbers are based on the staveNoteScale 0.66. + + var offsetScale = staveNoteScale / 0.66; + var slashBBox = undefined; + var beam = this.beam; + + if (beam) { + // FIXME: should render slash after beam? + if (!beam.postFormatted) { + beam.postFormat(); + } + + slashBBox = this.calcBeamedNotesSlashBBox(8 * offsetScale, 8 * offsetScale, { + stem: 6 * offsetScale, + beam: 5 * offsetScale + }); + } else { + var stem_direction = this.getStemDirection(); + var noteHeadBounds = this.getNoteHeadBounds(); + var noteStemHeight = stem.getHeight(); + var x = this.getAbsoluteX(); + var y = stem_direction === _tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].Stem.DOWN ? noteHeadBounds.y_top - noteStemHeight : noteHeadBounds.y_bottom - noteStemHeight; + var defaultStemExtention = stem_direction === _tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].Stem.DOWN ? this.glyph.stem_down_extension : this.glyph.stem_up_extension; + var defaultOffsetY = _tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].STEM_HEIGHT; + defaultOffsetY -= defaultOffsetY / 2.8; + defaultOffsetY += defaultStemExtention; + y += defaultOffsetY * staveNoteScale * stem_direction; + var offsets = stem_direction === _tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].Stem.UP ? { + x1: 1, + y1: 0, + x2: 13, + y2: -9 + } : { + x1: -4, + y1: 1, + x2: 13, + y2: 9 + }; + x += offsets.x1 * offsetScale; + y += offsets.y1 * offsetScale; + slashBBox = { + x1: x, + y1: y, + x2: x + offsets.x2 * offsetScale, + y2: y + offsets.y2 * offsetScale + }; + } // FIXME: avoide staff lines, leadger lines or others. + + + var ctx = this.context; + ctx.save(); + ctx.setLineWidth(1 * offsetScale); // FIXME: use more appropriate value. + + ctx.beginPath(); + ctx.moveTo(slashBBox.x1, slashBBox.y1); + ctx.lineTo(slashBBox.x2, slashBBox.y2); + ctx.closePath(); + ctx.stroke(); + ctx.restore(); + } + } + }, { + key: "calcBeamedNotesSlashBBox", + value: function calcBeamedNotesSlashBBox(slashStemOffset, slashBeamOffset, protrusions) { + var beam = this.beam; + var beam_slope = beam.slope; + var isBeamEndNote = beam.notes[beam.notes.length - 1] === this; + var scaleX = isBeamEndNote ? -1 : 1; + var beam_angle = Math.atan(beam_slope * scaleX); // slash line intersecting point on beam. + + var iPointOnBeam = { + dx: Math.cos(beam_angle) * slashBeamOffset, + dy: Math.sin(beam_angle) * slashBeamOffset + }; + slashStemOffset *= this.getStemDirection(); + var slash_angle = Math.atan((iPointOnBeam.dy - slashStemOffset) / iPointOnBeam.dx); + var protrusion_stem_dx = Math.cos(slash_angle) * protrusions.stem * scaleX; + var protrusion_stem_dy = Math.sin(slash_angle) * protrusions.stem; + var protrusion_beam_dx = Math.cos(slash_angle) * protrusions.beam * scaleX; + var protrusion_beam_dy = Math.sin(slash_angle) * protrusions.beam; + var stemX = this.getStemX(); + var stem0X = beam.notes[0].getStemX(); + var stemY = this.beam.getBeamYToDraw() + (stemX - stem0X) * beam_slope; + var ret = { + x1: stemX - protrusion_stem_dx, + y1: stemY + slashStemOffset - protrusion_stem_dy, + x2: stemX + iPointOnBeam.dx * scaleX + protrusion_beam_dx, + y2: stemY + iPointOnBeam.dy + protrusion_beam_dy + }; + return ret; + } + }]); + + return GraceNote; +}(_stavenote__WEBPACK_IMPORTED_MODULE_0__["StaveNote"]); + +/***/ }), + +/***/ "./src/gracenotegroup.js": +/*!*******************************!*\ + !*** ./src/gracenotegroup.js ***! + \*******************************/ +/*! exports provided: GraceNoteGroup */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GraceNoteGroup", function() { return GraceNoteGroup; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifier */ "./src/modifier.js"); +/* harmony import */ var _formatter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./formatter */ "./src/formatter.js"); +/* harmony import */ var _voice__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./voice */ "./src/voice.js"); +/* harmony import */ var _beam__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./beam */ "./src/beam.js"); +/* harmony import */ var _stavetie__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./stavetie */ "./src/stavetie.js"); +/* harmony import */ var _tabtie__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./tabtie */ "./src/tabtie.js"); +/* harmony import */ var _stavenote__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./stavenote */ "./src/stavenote.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// This file implements `GraceNoteGroup` which is used to format and +// render grace notes. + + + + + + + + + // To enable logging for this class. Set `Vex.Flow.GraceNoteGroup.DEBUG` to `true`. + +function L() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (GraceNoteGroup.DEBUG) _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].L('Vex.Flow.GraceNoteGroup', args); +} + +var GraceNoteGroup = +/*#__PURE__*/ +function (_Modifier) { + _inherits(GraceNoteGroup, _Modifier); + + _createClass(GraceNoteGroup, null, [{ + key: "format", + // Arrange groups inside a `ModifierContext` + value: function format(gracenote_groups, state) { + var group_spacing_stave = 4; + var group_spacing_tab = 0; + if (!gracenote_groups || gracenote_groups.length === 0) return false; + var group_list = []; + var prev_note = null; + var shiftL = 0; + + for (var i = 0; i < gracenote_groups.length; ++i) { + var gracenote_group = gracenote_groups[i]; + var note = gracenote_group.getNote(); + var is_stavenote = note.getCategory() === _stavenote__WEBPACK_IMPORTED_MODULE_8__["StaveNote"].CATEGORY; + var spacing = is_stavenote ? group_spacing_stave : group_spacing_tab; + + if (is_stavenote && note !== prev_note) { + // Iterate through all notes to get the displaced pixels + for (var n = 0; n < note.keys.length; ++n) { + shiftL = Math.max(note.getLeftDisplacedHeadPx(), shiftL); + } + + prev_note = note; + } + + group_list.push({ + shift: shiftL, + gracenote_group: gracenote_group, + spacing: spacing + }); + } // If first note left shift in case it is displaced + + + var group_shift = group_list[0].shift; + var formatWidth; + + for (var _i = 0; _i < group_list.length; ++_i) { + var _gracenote_group = group_list[_i].gracenote_group; + + _gracenote_group.preFormat(); + + formatWidth = _gracenote_group.getWidth() + group_list[_i].spacing; + group_shift = Math.max(formatWidth, group_shift); + } + + for (var _i2 = 0; _i2 < group_list.length; ++_i2) { + var _gracenote_group2 = group_list[_i2].gracenote_group; + formatWidth = _gracenote_group2.getWidth() + group_list[_i2].spacing; + + _gracenote_group2.setSpacingFromNextModifier(group_shift - Math.min(formatWidth, group_shift)); + } + + state.left_shift += group_shift; + return true; + } // ## Prototype Methods + // + // `GraceNoteGroup` inherits from `Modifier` and is placed inside a + // `ModifierContext`. + + }, { + key: "CATEGORY", + get: function get() { + return 'gracenotegroups'; + } + }]); + + function GraceNoteGroup(grace_notes, show_slur) { + var _this; + + _classCallCheck(this, GraceNoteGroup); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(GraceNoteGroup).call(this)); + + _this.setAttribute('type', 'GraceNoteGroup'); + + _this.note = null; + _this.index = null; + _this.position = _modifier__WEBPACK_IMPORTED_MODULE_2__["Modifier"].Position.LEFT; + _this.grace_notes = grace_notes; + _this.width = 0; + _this.preFormatted = false; + _this.show_slur = show_slur; + _this.slur = null; + _this.formatter = new _formatter__WEBPACK_IMPORTED_MODULE_3__["Formatter"](); + _this.voice = new _voice__WEBPACK_IMPORTED_MODULE_4__["Voice"]({ + num_beats: 4, + beat_value: 4, + resolution: _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].RESOLUTION + }).setStrict(false); + _this.render_options = { + slur_y_shift: 0 + }; + _this.beams = []; + + _this.voice.addTickables(_this.grace_notes); + + return _possibleConstructorReturn(_this, _assertThisInitialized(_this)); + } + + _createClass(GraceNoteGroup, [{ + key: "getCategory", + value: function getCategory() { + return GraceNoteGroup.CATEGORY; + } + }, { + key: "preFormat", + value: function preFormat() { + if (this.preFormatted) return; + this.formatter.joinVoices([this.voice]).format([this.voice], 0); + this.setWidth(this.formatter.getMinTotalWidth()); + this.preFormatted = true; + } + }, { + key: "beamNotes", + value: function beamNotes(grace_notes) { + grace_notes = grace_notes || this.grace_notes; + + if (grace_notes.length > 1) { + var beam = new _beam__WEBPACK_IMPORTED_MODULE_5__["Beam"](grace_notes); + beam.render_options.beam_width = 3; + beam.render_options.partial_beam_length = 4; + this.beams.push(beam); + } + + return this; + } + }, { + key: "setNote", + value: function setNote(note) { + this.note = note; + } + }, { + key: "setWidth", + value: function setWidth(width) { + this.width = width; + } + }, { + key: "getWidth", + value: function getWidth() { + return this.width; + } + }, { + key: "getGraceNotes", + value: function getGraceNotes() { + return this.grace_notes; + } + }, { + key: "draw", + value: function draw() { + var _this2 = this; + + this.checkContext(); + var note = this.getNote(); + L('Drawing grace note group for:', note); + + if (!(note && this.index !== null)) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('NoAttachedNote', "Can't draw grace note without a parent note and parent note index."); + } + + this.setRendered(); + this.alignSubNotesWithNote(this.getGraceNotes(), note); // Modifier function + // Draw notes + + this.grace_notes.forEach(function (graceNote) { + graceNote.setContext(_this2.context).draw(); + }); // Draw beam + + this.beams.forEach(function (beam) { + beam.setContext(_this2.context).draw(); + }); + + if (this.show_slur) { + // Create and draw slur + var is_stavenote = this.getNote().getCategory() === _stavenote__WEBPACK_IMPORTED_MODULE_8__["StaveNote"].CATEGORY; + var TieClass = is_stavenote ? _stavetie__WEBPACK_IMPORTED_MODULE_6__["StaveTie"] : _tabtie__WEBPACK_IMPORTED_MODULE_7__["TabTie"]; + this.slur = new TieClass({ + last_note: this.grace_notes[0], + first_note: note, + first_indices: [0], + last_indices: [0] + }); + this.slur.render_options.cp2 = 12; + this.slur.render_options.y_shift = (is_stavenote ? 7 : 5) + this.render_options.slur_y_shift; + this.slur.setContext(this.context).draw(); + } + } + }]); + + return GraceNoteGroup; +}(_modifier__WEBPACK_IMPORTED_MODULE_2__["Modifier"]); + +/***/ }), + +/***/ "./src/gracetabnote.js": +/*!*****************************!*\ + !*** ./src/gracetabnote.js ***! + \*****************************/ +/*! exports provided: GraceTabNote */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GraceTabNote", function() { return GraceTabNote; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _tabnote__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tabnote */ "./src/tabnote.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// @author Balazs Forian-Szabo +// +// ## Description +// +// A basic implementation of grace notes +// to be rendered on a tab stave. +// +// See `tests/gracetabnote_tests.js` for usage examples. + + +var GraceTabNote = +/*#__PURE__*/ +function (_TabNote) { + _inherits(GraceTabNote, _TabNote); + + _createClass(GraceTabNote, null, [{ + key: "CATEGORY", + get: function get() { + return 'gracetabnotes'; + } + }]); + + function GraceTabNote(note_struct) { + var _this; + + _classCallCheck(this, GraceTabNote); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(GraceTabNote).call(this, note_struct, false)); + + _this.setAttribute('type', 'GraceTabNote'); + + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(_this.render_options, { + // vertical shift from stave line + y_shift: 0.3, + // grace glyph scale + scale: 0.6, + // grace tablature font + font: '7.5pt Arial' + }); + + _this.updateWidth(); + + return _this; + } + + _createClass(GraceTabNote, [{ + key: "getCategory", + value: function getCategory() { + return GraceTabNote.CATEGORY; + } + }, { + key: "draw", + value: function draw() { + _get(_getPrototypeOf(GraceTabNote.prototype), "draw", this).call(this); + + this.setRendered(); + } + }]); + + return GraceTabNote; +}(_tabnote__WEBPACK_IMPORTED_MODULE_1__["TabNote"]); + +/***/ }), + +/***/ "./src/index.js": +/*!**********************!*\ + !*** ./src/index.js ***! + \**********************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element */ "./src/element.js"); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fraction */ "./src/fraction.js"); +/* harmony import */ var _renderer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./renderer */ "./src/renderer.js"); +/* harmony import */ var _formatter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./formatter */ "./src/formatter.js"); +/* harmony import */ var _music__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./music */ "./src/music.js"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./glyph */ "./src/glyph.js"); +/* harmony import */ var _stave__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./stave */ "./src/stave.js"); +/* harmony import */ var _stavenote__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./stavenote */ "./src/stavenote.js"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.js"); +/* harmony import */ var _stavetempo__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./stavetempo */ "./src/stavetempo.js"); +/* harmony import */ var _voice__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./voice */ "./src/voice.js"); +/* harmony import */ var _accidental__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./accidental */ "./src/accidental.js"); +/* harmony import */ var _beam__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./beam */ "./src/beam.js"); +/* harmony import */ var _stavetie__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./stavetie */ "./src/stavetie.js"); +/* harmony import */ var _tabstave__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./tabstave */ "./src/tabstave.js"); +/* harmony import */ var _tabnote__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./tabnote */ "./src/tabnote.js"); +/* harmony import */ var _bend__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./bend */ "./src/bend.js"); +/* harmony import */ var _vibrato__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./vibrato */ "./src/vibrato.js"); +/* harmony import */ var _vibratobracket__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./vibratobracket */ "./src/vibratobracket.js"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./note */ "./src/note.js"); +/* harmony import */ var _modifiercontext__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./modifiercontext */ "./src/modifiercontext.js"); +/* harmony import */ var _multimeasurerest__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./multimeasurerest */ "./src/multimeasurerest.js"); +/* harmony import */ var _tickcontext__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./tickcontext */ "./src/tickcontext.js"); +/* harmony import */ var _articulation__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./articulation */ "./src/articulation.js"); +/* harmony import */ var _annotation__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./annotation */ "./src/annotation.js"); +/* harmony import */ var _stavebarline__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./stavebarline */ "./src/stavebarline.js"); +/* harmony import */ var _notehead__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./notehead */ "./src/notehead.js"); +/* harmony import */ var _staveconnector__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./staveconnector */ "./src/staveconnector.js"); +/* harmony import */ var _clefnote__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./clefnote */ "./src/clefnote.js"); +/* harmony import */ var _keysignature__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./keysignature */ "./src/keysignature.js"); +/* harmony import */ var _keysignote__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./keysignote */ "./src/keysignote.js"); +/* harmony import */ var _timesignature__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./timesignature */ "./src/timesignature.js"); +/* harmony import */ var _timesignote__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./timesignote */ "./src/timesignote.js"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./stem */ "./src/stem.js"); +/* harmony import */ var _tabtie__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./tabtie */ "./src/tabtie.js"); +/* harmony import */ var _clef__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./clef */ "./src/clef.js"); +/* harmony import */ var _dot__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./dot */ "./src/dot.js"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./modifier */ "./src/modifier.js"); +/* harmony import */ var _tabslide__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./tabslide */ "./src/tabslide.js"); +/* harmony import */ var _tuplet__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./tuplet */ "./src/tuplet.js"); +/* harmony import */ var _gracenote__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./gracenote */ "./src/gracenote.js"); +/* harmony import */ var _gracetabnote__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./gracetabnote */ "./src/gracetabnote.js"); +/* harmony import */ var _tuning__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./tuning */ "./src/tuning.js"); +/* harmony import */ var _keymanager__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./keymanager */ "./src/keymanager.js"); +/* harmony import */ var _stavehairpin__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./stavehairpin */ "./src/stavehairpin.js"); +/* harmony import */ var _boundingbox__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./boundingbox */ "./src/boundingbox.js"); +/* harmony import */ var _strokes__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./strokes */ "./src/strokes.js"); +/* harmony import */ var _textnote__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./textnote */ "./src/textnote.js"); +/* harmony import */ var _curve__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./curve */ "./src/curve.js"); +/* harmony import */ var _textdynamics__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./textdynamics */ "./src/textdynamics.js"); +/* harmony import */ var _staveline__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./staveline */ "./src/staveline.js"); +/* harmony import */ var _ornament__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./ornament */ "./src/ornament.js"); +/* harmony import */ var _pedalmarking__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./pedalmarking */ "./src/pedalmarking.js"); +/* harmony import */ var _textbracket__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./textbracket */ "./src/textbracket.js"); +/* harmony import */ var _frethandfinger__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./frethandfinger */ "./src/frethandfinger.js"); +/* harmony import */ var _staverepetition__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./staverepetition */ "./src/staverepetition.js"); +/* harmony import */ var _barnote__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./barnote */ "./src/barnote.js"); +/* harmony import */ var _ghostnote__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./ghostnote */ "./src/ghostnote.js"); +/* harmony import */ var _notesubgroup__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./notesubgroup */ "./src/notesubgroup.js"); +/* harmony import */ var _gracenotegroup__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./gracenotegroup */ "./src/gracenotegroup.js"); +/* harmony import */ var _tremolo__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ./tremolo */ "./src/tremolo.js"); +/* harmony import */ var _stringnumber__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./stringnumber */ "./src/stringnumber.js"); +/* harmony import */ var _crescendo__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./crescendo */ "./src/crescendo.js"); +/* harmony import */ var _stavevolta__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./stavevolta */ "./src/stavevolta.js"); +/* harmony import */ var _system__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./system */ "./src/system.js"); +/* harmony import */ var _factory__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./factory */ "./src/factory.js"); +/* harmony import */ var _parser__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./parser */ "./src/parser.js"); +/* harmony import */ var _easyscore__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./easyscore */ "./src/easyscore.js"); +/* harmony import */ var _registry__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ./registry */ "./src/registry.js"); +/* harmony import */ var _stavetext__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ./stavetext */ "./src/stavetext.js"); +/* harmony import */ var _glyphnote__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ./glyphnote */ "./src/glyphnote.js"); +/* harmony import */ var _repeatnote__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ./repeatnote */ "./src/repeatnote.js"); +/* harmony import */ var _smufl__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ./smufl */ "./src/smufl.js"); +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow = _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Element = _element__WEBPACK_IMPORTED_MODULE_2__["Element"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Fraction = _fraction__WEBPACK_IMPORTED_MODULE_3__["Fraction"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Renderer = _renderer__WEBPACK_IMPORTED_MODULE_4__["Renderer"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Formatter = _formatter__WEBPACK_IMPORTED_MODULE_5__["Formatter"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Music = _music__WEBPACK_IMPORTED_MODULE_6__["Music"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Glyph = _glyph__WEBPACK_IMPORTED_MODULE_7__["Glyph"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Stave = _stave__WEBPACK_IMPORTED_MODULE_8__["Stave"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.StaveNote = _stavenote__WEBPACK_IMPORTED_MODULE_9__["StaveNote"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.StaveModifier = _stavemodifier__WEBPACK_IMPORTED_MODULE_10__["StaveModifier"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.StaveTempo = _stavetempo__WEBPACK_IMPORTED_MODULE_11__["StaveTempo"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Voice = _voice__WEBPACK_IMPORTED_MODULE_12__["Voice"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Accidental = _accidental__WEBPACK_IMPORTED_MODULE_13__["Accidental"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Beam = _beam__WEBPACK_IMPORTED_MODULE_14__["Beam"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.StaveTie = _stavetie__WEBPACK_IMPORTED_MODULE_15__["StaveTie"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.TabStave = _tabstave__WEBPACK_IMPORTED_MODULE_16__["TabStave"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.TabNote = _tabnote__WEBPACK_IMPORTED_MODULE_17__["TabNote"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Bend = _bend__WEBPACK_IMPORTED_MODULE_18__["Bend"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Vibrato = _vibrato__WEBPACK_IMPORTED_MODULE_19__["Vibrato"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.VibratoBracket = _vibratobracket__WEBPACK_IMPORTED_MODULE_20__["VibratoBracket"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Note = _note__WEBPACK_IMPORTED_MODULE_21__["Note"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.ModifierContext = _modifiercontext__WEBPACK_IMPORTED_MODULE_22__["ModifierContext"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.MultiMeasureRest = _multimeasurerest__WEBPACK_IMPORTED_MODULE_23__["MultiMeasureRest"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.TickContext = _tickcontext__WEBPACK_IMPORTED_MODULE_24__["TickContext"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Articulation = _articulation__WEBPACK_IMPORTED_MODULE_25__["Articulation"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Annotation = _annotation__WEBPACK_IMPORTED_MODULE_26__["Annotation"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Barline = _stavebarline__WEBPACK_IMPORTED_MODULE_27__["Barline"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.NoteHead = _notehead__WEBPACK_IMPORTED_MODULE_28__["NoteHead"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.StaveConnector = _staveconnector__WEBPACK_IMPORTED_MODULE_29__["StaveConnector"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.ClefNote = _clefnote__WEBPACK_IMPORTED_MODULE_30__["ClefNote"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.KeySignature = _keysignature__WEBPACK_IMPORTED_MODULE_31__["KeySignature"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.KeySigNote = _keysignote__WEBPACK_IMPORTED_MODULE_32__["KeySigNote"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.TimeSignature = _timesignature__WEBPACK_IMPORTED_MODULE_33__["TimeSignature"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.TimeSigNote = _timesignote__WEBPACK_IMPORTED_MODULE_34__["TimeSigNote"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Stem = _stem__WEBPACK_IMPORTED_MODULE_35__["Stem"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.TabTie = _tabtie__WEBPACK_IMPORTED_MODULE_36__["TabTie"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Clef = _clef__WEBPACK_IMPORTED_MODULE_37__["Clef"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Dot = _dot__WEBPACK_IMPORTED_MODULE_38__["Dot"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Modifier = _modifier__WEBPACK_IMPORTED_MODULE_39__["Modifier"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.TabSlide = _tabslide__WEBPACK_IMPORTED_MODULE_40__["TabSlide"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Tuplet = _tuplet__WEBPACK_IMPORTED_MODULE_41__["Tuplet"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.GraceNote = _gracenote__WEBPACK_IMPORTED_MODULE_42__["GraceNote"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.GraceTabNote = _gracetabnote__WEBPACK_IMPORTED_MODULE_43__["GraceTabNote"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Tuning = _tuning__WEBPACK_IMPORTED_MODULE_44__["Tuning"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.KeyManager = _keymanager__WEBPACK_IMPORTED_MODULE_45__["KeyManager"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.StaveHairpin = _stavehairpin__WEBPACK_IMPORTED_MODULE_46__["StaveHairpin"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.BoundingBox = _boundingbox__WEBPACK_IMPORTED_MODULE_47__["BoundingBox"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Stroke = _strokes__WEBPACK_IMPORTED_MODULE_48__["Stroke"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.TextNote = _textnote__WEBPACK_IMPORTED_MODULE_49__["TextNote"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Curve = _curve__WEBPACK_IMPORTED_MODULE_50__["Curve"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.TextDynamics = _textdynamics__WEBPACK_IMPORTED_MODULE_51__["TextDynamics"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.StaveLine = _staveline__WEBPACK_IMPORTED_MODULE_52__["StaveLine"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Ornament = _ornament__WEBPACK_IMPORTED_MODULE_53__["Ornament"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.PedalMarking = _pedalmarking__WEBPACK_IMPORTED_MODULE_54__["PedalMarking"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.TextBracket = _textbracket__WEBPACK_IMPORTED_MODULE_55__["TextBracket"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.FretHandFinger = _frethandfinger__WEBPACK_IMPORTED_MODULE_56__["FretHandFinger"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Repetition = _staverepetition__WEBPACK_IMPORTED_MODULE_57__["Repetition"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.BarNote = _barnote__WEBPACK_IMPORTED_MODULE_58__["BarNote"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.GhostNote = _ghostnote__WEBPACK_IMPORTED_MODULE_59__["GhostNote"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.NoteSubGroup = _notesubgroup__WEBPACK_IMPORTED_MODULE_60__["NoteSubGroup"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.GraceNoteGroup = _gracenotegroup__WEBPACK_IMPORTED_MODULE_61__["GraceNoteGroup"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Tremolo = _tremolo__WEBPACK_IMPORTED_MODULE_62__["Tremolo"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.StringNumber = _stringnumber__WEBPACK_IMPORTED_MODULE_63__["StringNumber"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Crescendo = _crescendo__WEBPACK_IMPORTED_MODULE_64__["Crescendo"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Volta = _stavevolta__WEBPACK_IMPORTED_MODULE_65__["Volta"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.System = _system__WEBPACK_IMPORTED_MODULE_66__["System"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Factory = _factory__WEBPACK_IMPORTED_MODULE_67__["Factory"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Parser = _parser__WEBPACK_IMPORTED_MODULE_68__["Parser"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.EasyScore = _easyscore__WEBPACK_IMPORTED_MODULE_69__["EasyScore"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Registry = _registry__WEBPACK_IMPORTED_MODULE_70__["Registry"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.StaveText = _stavetext__WEBPACK_IMPORTED_MODULE_71__["StaveText"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.GlyphNote = _glyphnote__WEBPACK_IMPORTED_MODULE_72__["GlyphNote"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.RepeatNote = _repeatnote__WEBPACK_IMPORTED_MODULE_73__["RepeatNote"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Font = _smufl__WEBPACK_IMPORTED_MODULE_74__["Font"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.Fonts = _smufl__WEBPACK_IMPORTED_MODULE_74__["Fonts"]; +_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Flow.DefaultFontStack = _smufl__WEBPACK_IMPORTED_MODULE_74__["DefaultFontStack"]; +/* harmony default export */ __webpack_exports__["default"] = (_vex__WEBPACK_IMPORTED_MODULE_0__["Vex"]); + +/***/ }), + +/***/ "./src/keymanager.js": +/*!***************************!*\ + !*** ./src/keymanager.js ***! + \***************************/ +/*! exports provided: KeyManager */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KeyManager", function() { return KeyManager; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _music__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./music */ "./src/music.js"); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// This class implements diatonic key management. + + +var KeyManager = +/*#__PURE__*/ +function () { + function KeyManager(key) { + _classCallCheck(this, KeyManager); + + this.music = new _music__WEBPACK_IMPORTED_MODULE_1__["Music"](); + this.setKey(key); + } + + _createClass(KeyManager, [{ + key: "setKey", + value: function setKey(key) { + this.key = key; + this.reset(); + return this; + } + }, { + key: "getKey", + value: function getKey() { + return this.key; + } + }, { + key: "reset", + value: function reset() { + this.keyParts = this.music.getKeyParts(this.key); + this.keyString = this.keyParts.root; + if (this.keyParts.accidental) this.keyString += this.keyParts.accidental; + var is_supported_type = _music__WEBPACK_IMPORTED_MODULE_1__["Music"].scaleTypes[this.keyParts.type]; + + if (!is_supported_type) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', "Unsupported key type: ".concat(this.key)); + } + + this.scale = this.music.getScaleTones(this.music.getNoteValue(this.keyString), _music__WEBPACK_IMPORTED_MODULE_1__["Music"].scaleTypes[this.keyParts.type]); + this.scaleMap = {}; + this.scaleMapByValue = {}; + this.originalScaleMapByValue = {}; + var noteLocation = _music__WEBPACK_IMPORTED_MODULE_1__["Music"].root_indices[this.keyParts.root]; + + for (var i = 0; i < _music__WEBPACK_IMPORTED_MODULE_1__["Music"].roots.length; ++i) { + var index = (noteLocation + i) % _music__WEBPACK_IMPORTED_MODULE_1__["Music"].roots.length; + var rootName = _music__WEBPACK_IMPORTED_MODULE_1__["Music"].roots[index]; + var noteName = this.music.getRelativeNoteName(rootName, this.scale[i]); + this.scaleMap[rootName] = noteName; + this.scaleMapByValue[this.scale[i]] = noteName; + this.originalScaleMapByValue[this.scale[i]] = noteName; + } + + return this; + } + }, { + key: "getAccidental", + value: function getAccidental(key) { + var root = this.music.getKeyParts(key).root; + var parts = this.music.getNoteParts(this.scaleMap[root]); + return { + note: this.scaleMap[root], + accidental: parts.accidental + }; + } + }, { + key: "selectNote", + value: function selectNote(note) { + note = note.toLowerCase(); + var parts = this.music.getNoteParts(note); // First look for matching note in our altered scale + + var scaleNote = this.scaleMap[parts.root]; + var modparts = this.music.getNoteParts(scaleNote); + + if (scaleNote === note) { + return { + 'note': scaleNote, + 'accidental': parts.accidental, + 'change': false + }; + } // Then search for a note of equivalent value in our altered scale + + + var valueNote = this.scaleMapByValue[this.music.getNoteValue(note)]; + + if (valueNote != null) { + return { + 'note': valueNote, + 'accidental': this.music.getNoteParts(valueNote).accidental, + 'change': false + }; + } // Then search for a note of equivalent value in the original scale + + + var originalValueNote = this.originalScaleMapByValue[this.music.getNoteValue(note)]; + + if (originalValueNote != null) { + this.scaleMap[modparts.root] = originalValueNote; + delete this.scaleMapByValue[this.music.getNoteValue(scaleNote)]; + this.scaleMapByValue[this.music.getNoteValue(note)] = originalValueNote; + return { + 'note': originalValueNote, + 'accidental': this.music.getNoteParts(originalValueNote).accidental, + 'change': true + }; + } // Then try to unmodify a currently modified note. + + + if (modparts.root === note) { + delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])]; + this.scaleMapByValue[this.music.getNoteValue(modparts.root)] = modparts.root; + this.scaleMap[modparts.root] = modparts.root; + return { + 'note': modparts.root, + 'accidental': null, + 'change': true + }; + } // Last resort -- shitshoot + + + delete this.scaleMapByValue[this.music.getNoteValue(this.scaleMap[parts.root])]; + this.scaleMapByValue[this.music.getNoteValue(note)] = note; + delete this.scaleMap[modparts.root]; + this.scaleMap[modparts.root] = note; + return { + note: note, + 'accidental': parts.accidental, + 'change': true + }; + } + }]); + + return KeyManager; +}(); + +/***/ }), + +/***/ "./src/keysignature.js": +/*!*****************************!*\ + !*** ./src/keysignature.js ***! + \*****************************/ +/*! exports provided: KeySignature */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KeySignature", function() { return KeySignature; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.js"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./glyph */ "./src/glyph.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Cyril Silverman +// +// ## Description +// +// This file implements key signatures. A key signature sits on a stave +// and indicates the notes with implicit accidentals. + + + + +var KeySignature = +/*#__PURE__*/ +function (_StaveModifier) { + _inherits(KeySignature, _StaveModifier); + + _createClass(KeySignature, null, [{ + key: "CATEGORY", + get: function get() { + return 'keysignatures'; + } // Space between natural and following accidental depending + // on vertical position + + }, { + key: "accidentalSpacing", + get: function get() { + return { + '#': { + above: 6, + below: 4 + }, + 'b': { + above: 4, + below: 7 + }, + 'n': { + above: 4, + below: 1 + }, + '##': { + above: 6, + below: 4 + }, + 'bb': { + above: 4, + below: 7 + }, + 'db': { + above: 4, + below: 7 + }, + 'd': { + above: 4, + below: 7 + }, + 'bbs': { + above: 4, + below: 7 + }, + '++': { + above: 6, + below: 4 + }, + '+': { + above: 6, + below: 4 + }, + '+-': { + above: 6, + below: 4 + }, + '++-': { + above: 6, + below: 4 + }, + 'bs': { + above: 4, + below: 10 + }, + 'bss': { + above: 4, + below: 10 + } + }; + } // Create a new Key Signature based on a `key_spec` + + }]); + + function KeySignature(keySpec, cancelKeySpec, alterKeySpec) { + var _this; + + _classCallCheck(this, KeySignature); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(KeySignature).call(this)); + + _this.setAttribute('type', 'KeySignature'); + + _this.setKeySig(keySpec, cancelKeySpec, alterKeySpec); + + _this.setPosition(_stavemodifier__WEBPACK_IMPORTED_MODULE_2__["StaveModifier"].Position.BEGIN); + + _this.glyphFontScale = 38; // TODO(0xFE): Should this match StaveNote? + + _this.glyphs = []; + _this.xPositions = []; // relative to this.x + + _this.paddingForced = false; + return _this; + } + + _createClass(KeySignature, [{ + key: "getCategory", + value: function getCategory() { + return KeySignature.CATEGORY; + } // Add an accidental glyph to the `KeySignature` instance which represents + // the provided `acc`. If `nextAcc` is also provided, the appropriate + // spacing will be included in the glyph's position + + }, { + key: "convertToGlyph", + value: function convertToGlyph(acc, nextAcc) { + var accGlyphData = _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].accidentalCodes(acc.type); + var glyph = new _glyph__WEBPACK_IMPORTED_MODULE_3__["Glyph"](accGlyphData.code, this.glyphFontScale); // Determine spacing between current accidental and the next accidental + + var extraWidth = 1; + + if (acc.type === 'n' && nextAcc) { + var spacing = KeySignature.accidentalSpacing[nextAcc.type]; + + if (spacing) { + var isAbove = nextAcc.line >= acc.line; + extraWidth = isAbove ? spacing.above : spacing.below; + } + } // Place the glyph on the stave + + + this.placeGlyphOnLine(glyph, this.stave, acc.line); + this.glyphs.push(glyph); + var xPosition = this.xPositions[this.xPositions.length - 1]; + var glyphWidth = glyph.getMetrics().width + extraWidth; // Store the next accidental's x position + + this.xPositions.push(xPosition + glyphWidth); // Expand size of key signature + + this.width += glyphWidth; + } // Cancel out a key signature provided in the `spec` parameter. This will + // place appropriate natural accidentals before the key signature. + + }, { + key: "cancelKey", + value: function cancelKey(spec) { + this.formatted = false; + this.cancelKeySpec = spec; + return this; + } + }, { + key: "convertToCancelAccList", + value: function convertToCancelAccList(spec) { + // Get the accidental list for the cancelled key signature + var cancel_accList = _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].keySignature(spec); // If the cancelled key has a different accidental type, ie: # vs b + + var different_types = this.accList.length > 0 && cancel_accList.length > 0 && cancel_accList[0].type !== this.accList[0].type; // Determine how many naturals needed to add + + var naturals = different_types ? cancel_accList.length : cancel_accList.length - this.accList.length; // Return if no naturals needed + + if (naturals < 1) return undefined; // Get the line position for each natural + + var cancelled = []; + + for (var i = 0; i < naturals; i++) { + var index = i; + + if (!different_types) { + index = cancel_accList.length - naturals + i; + } + + var acc = cancel_accList[index]; + cancelled.push({ + type: 'n', + line: acc.line + }); + } // Combine naturals with main accidental list for the key signature + + + this.accList = cancelled.concat(this.accList); + return { + accList: cancelled, + type: cancel_accList[0].type + }; + } // Deprecated + + }, { + key: "addToStave", + value: function addToStave(stave) { + this.paddingForced = true; + stave.addModifier(this); + return this; + } // Apply the accidental staff line placement based on the `clef` and + // the accidental `type` for the key signature ('# or 'b'). + + }, { + key: "convertAccLines", + value: function convertAccLines(clef, type) { + var accList = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.accList; + var offset = 0.0; // if clef === "treble" + + var customLines; // when clef doesn't follow treble key sig shape + + switch (clef) { + // Treble & Subbass both have offsets of 0, so are not included. + case 'soprano': + if (type === '#') customLines = [2.5, 0.5, 2, 0, 1.5, -0.5, 1];else offset = -1; + break; + + case 'mezzo-soprano': + if (type === 'b') customLines = [0, 2, 0.5, 2.5, 1, 3, 1.5];else offset = 1.5; + break; + + case 'alto': + offset = 0.5; + break; + + case 'tenor': + if (type === '#') customLines = [3, 1, 2.5, 0.5, 2, 0, 1.5];else offset = -0.5; + break; + + case 'baritone-f': + case 'baritone-c': + if (type === 'b') customLines = [0.5, 2.5, 1, 3, 1.5, 3.5, 2];else offset = 2; + break; + + case 'bass': + case 'french': + offset = 1; + break; + + default: + break; + } // If there's a special case, assign those lines/spaces: + + + var i; + + if (typeof customLines !== 'undefined') { + for (i = 0; i < accList.length; ++i) { + accList[i].line = customLines[i]; + } + } else if (offset !== 0) { + for (i = 0; i < accList.length; ++i) { + accList[i].line += offset; + } + } + } + }, { + key: "getPadding", + value: function getPadding(index) { + if (!this.formatted) this.format(); + return this.glyphs.length === 0 || !this.paddingForced && index < 2 ? 0 : this.padding; + } + }, { + key: "getWidth", + value: function getWidth() { + if (!this.formatted) this.format(); + return this.width; + } + }, { + key: "setKeySig", + value: function setKeySig(keySpec, cancelKeySpec, alterKeySpec) { + this.formatted = false; + this.keySpec = keySpec; + this.cancelKeySpec = cancelKeySpec; + this.alterKeySpec = alterKeySpec; + return this; + } // Alter the accidentals of a key spec one by one. + // Each alteration is a new accidental that replaces the + // original accidental (or the canceled one). + + }, { + key: "alterKey", + value: function alterKey(alterKeySpec) { + this.formatted = false; + this.alterKeySpec = alterKeySpec; + return this; + } + }, { + key: "convertToAlterAccList", + value: function convertToAlterAccList(alterKeySpec) { + var max = Math.min(alterKeySpec.length, this.accList.length); + + for (var i = 0; i < max; ++i) { + if (alterKeySpec[i]) { + this.accList[i].type = alterKeySpec[i]; + } + } + } + }, { + key: "format", + value: function format() { + if (!this.stave) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('KeySignatureError', "Can't draw key signature without stave."); + } + + this.width = 0; + this.glyphs = []; + this.xPositions = [0]; // initialize with initial x position + + this.accList = _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].keySignature(this.keySpec); + var accList = this.accList; + var firstAccidentalType = accList.length > 0 ? accList[0].type : null; + var cancelAccList; + + if (this.cancelKeySpec) { + cancelAccList = this.convertToCancelAccList(this.cancelKeySpec); + } + + if (this.alterKeySpec) { + this.convertToAlterAccList(this.alterKeySpec); + } + + if (this.accList.length > 0) { + var clef = (this.position === _stavemodifier__WEBPACK_IMPORTED_MODULE_2__["StaveModifier"].Position.END ? this.stave.endClef : this.stave.clef) || this.stave.clef; + + if (cancelAccList) { + this.convertAccLines(clef, cancelAccList.type, cancelAccList.accList); + } + + this.convertAccLines(clef, firstAccidentalType, accList); + + for (var i = 0; i < this.accList.length; ++i) { + this.convertToGlyph(this.accList[i], this.accList[i + 1]); + } + } + + this.formatted = true; + } + }, { + key: "draw", + value: function draw() { + if (!this.x) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('KeySignatureError', "Can't draw key signature without x."); + } + + if (!this.stave) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('KeySignatureError', "Can't draw key signature without stave."); + } + + if (!this.formatted) this.format(); + this.setRendered(); + + for (var i = 0; i < this.glyphs.length; i++) { + var glyph = this.glyphs[i]; + var x = this.x + this.xPositions[i]; + glyph.setStave(this.stave); + glyph.setContext(this.stave.context); + glyph.renderToStave(x); + } + } + }]); + + return KeySignature; +}(_stavemodifier__WEBPACK_IMPORTED_MODULE_2__["StaveModifier"]); + +/***/ }), + +/***/ "./src/keysignote.js": +/*!***************************!*\ + !*** ./src/keysignote.js ***! + \***************************/ +/*! exports provided: KeySigNote */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KeySigNote", function() { return KeySigNote; }); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./note */ "./src/note.js"); +/* harmony import */ var _keysignature__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keysignature */ "./src/keysignature.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Mark Meeus 2019 + + +var KeySigNote = +/*#__PURE__*/ +function (_Note) { + _inherits(KeySigNote, _Note); + + function KeySigNote(keySpec, cancelKeySpec, alterKeySpec) { + var _this; + + _classCallCheck(this, KeySigNote); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(KeySigNote).call(this, { + duration: 'b' + })); + + _this.setAttribute('type', 'KeySigNote'); + + _this.keySignature = new _keysignature__WEBPACK_IMPORTED_MODULE_1__["KeySignature"](keySpec, cancelKeySpec, alterKeySpec); // Note properties + + _this.ignore_ticks = true; + return _this; + } + + _createClass(KeySigNote, [{ + key: "getBoundingBox", + value: function getBoundingBox() { + return _get(_getPrototypeOf(KeySigNote.prototype), "getBoundingBox", this).call(this); + } + }, { + key: "addToModifierContext", + value: function addToModifierContext() { + /* overridden to ignore */ + return this; + } + }, { + key: "preFormat", + value: function preFormat() { + this.setPreFormatted(true); + this.keySignature.setStave(this.stave); + this.keySignature.format(); + this.setWidth(this.keySignature.width); + return this; + } + }, { + key: "draw", + value: function draw() { + this.stave.checkContext(); + this.setRendered(); + this.keySignature.x = this.getAbsoluteX(); + this.keySignature.setContext(this.context); + this.keySignature.draw(); + } + }]); + + return KeySigNote; +}(_note__WEBPACK_IMPORTED_MODULE_0__["Note"]); + +/***/ }), + +/***/ "./src/modifier.js": +/*!*************************!*\ + !*** ./src/modifier.js ***! + \*************************/ +/*! exports provided: Modifier */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Modifier", function() { return Modifier; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element */ "./src/element.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// `Modifier` is an abstract interface for notational elements that modify +// a `Note`. Examples of modifiers are `Accidental`, `Annotation`, `Stroke`, etc. +// +// For a `Modifier` instance to be positioned correctly, it must be part of +// a `ModifierContext`. All modifiers in the same context are rendered relative to +// one another. +// +// Typically, all modifiers to a note are part of the same `ModifierContext` instance. Also, +// in multi-voice staves, all modifiers to notes on the same `tick` are part of the same +// `ModifierContext`. This ensures that multiple voices don't trample all over each other. + + // To enable logging for this class. Set `Vex.Flow.Modifier.DEBUG` to `true`. +// function L(...args) { if (Modifier.DEBUG) Vex.L('Vex.Flow.Modifier', args); } + +var Modifier = +/*#__PURE__*/ +function (_Element) { + _inherits(Modifier, _Element); + + _createClass(Modifier, null, [{ + key: "CATEGORY", + get: function get() { + return 'none'; + } // Modifiers can be positioned almost anywhere, relative to a note. + + }, { + key: "Position", + get: function get() { + return { + LEFT: 1, + RIGHT: 2, + ABOVE: 3, + BELOW: 4 + }; + } + }, { + key: "PositionString", + get: function get() { + return { + above: Modifier.Position.ABOVE, + below: Modifier.Position.BELOW, + left: Modifier.Position.LEFT, + right: Modifier.Position.RIGHT + }; + } + }]); + + function Modifier() { + var _this; + + _classCallCheck(this, Modifier); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Modifier).call(this)); + + _this.setAttribute('type', 'Modifier'); + + _this.width = 0; // Modifiers are attached to a note and an index. An index is a + // specific head in a chord. + + _this.note = null; + _this.index = null; // The `text_line` is reserved space above or below a stave. + + _this.text_line = 0; + _this.position = Modifier.Position.LEFT; + _this.modifier_context = null; + _this.x_shift = 0; + _this.y_shift = 0; + _this.spacingFromNextModifier = 0; + return _this; + } // Called when position changes + + + _createClass(Modifier, [{ + key: "reset", + value: function reset() {} // do nothing + // Every modifier has a category. The `ModifierContext` uses this to determine + // the type and order of the modifiers. + + }, { + key: "getCategory", + value: function getCategory() { + return Modifier.CATEGORY; + } // Get and set modifier widths. + + }, { + key: "getWidth", + value: function getWidth() { + return this.width; + } + }, { + key: "setWidth", + value: function setWidth(width) { + this.width = width; + return this; + } // Get and set attached note (`StaveNote`, `TabNote`, etc.) + + }, { + key: "getNote", + value: function getNote() { + return this.note; + } + }, { + key: "setNote", + value: function setNote(note) { + this.note = note; + return this; + } // Get and set note index, which is a specific note in a chord. + + }, { + key: "getIndex", + value: function getIndex() { + return this.index; + } + }, { + key: "setIndex", + value: function setIndex(index) { + this.index = index; + return this; + } // Every modifier must be part of a `ModifierContext`. + + }, { + key: "getModifierContext", + value: function getModifierContext() { + return this.modifier_context; + } + }, { + key: "setModifierContext", + value: function setModifierContext(c) { + this.modifier_context = c; + return this; + } // Get and set articulation position. + + }, { + key: "getPosition", + value: function getPosition() { + return this.position; + } + }, { + key: "setPosition", + value: function setPosition(position) { + this.position = typeof position === 'string' ? Modifier.PositionString[position] : position; + this.reset(); + return this; + } // Set the `text_line` for the modifier. + + }, { + key: "setTextLine", + value: function setTextLine(line) { + this.text_line = line; + return this; + } // Shift modifier down `y` pixels. Negative values shift up. + + }, { + key: "setYShift", + value: function setYShift(y) { + this.y_shift = y; + return this; + } + }, { + key: "setSpacingFromNextModifier", + value: function setSpacingFromNextModifier(x) { + this.spacingFromNextModifier = x; + } + }, { + key: "getSpacingFromNextModifier", + value: function getSpacingFromNextModifier() { + return this.spacingFromNextModifier; + } // Shift modifier `x` pixels in the direction of the modifier. Negative values + // shift reverse. + + }, { + key: "setXShift", + value: function setXShift(x) { + this.x_shift = 0; + + if (this.position === Modifier.Position.LEFT) { + this.x_shift -= x; + } else { + this.x_shift += x; + } + } + }, { + key: "getXShift", + value: function getXShift() { + return this.x_shift; + } // Render the modifier onto the canvas. + + }, { + key: "draw", + value: function draw() { + this.checkContext(); + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('MethodNotImplemented', 'draw() not implemented for this modifier.'); + } // aligns sub notes of NoteSubGroup (or GraceNoteGroup) to the main note with correct x-offset + + }, { + key: "alignSubNotesWithNote", + value: function alignSubNotesWithNote(subNotes, note) { + // Shift over the tick contexts of each note + var tickContext = note.getTickContext(); + var metrics = tickContext.getMetrics(); + var subNoteXOffset = tickContext.getX() - metrics.modLeftPx - metrics.modRightPx + this.getSpacingFromNextModifier(); + subNotes.forEach(function (subNote) { + var subTickContext = subNote.getTickContext(); + subNote.setStave(note.stave); + subTickContext.setXOffset(subNoteXOffset); // don't touch baseX to avoid shift each render + }); + } + }]); + + return Modifier; +}(_element__WEBPACK_IMPORTED_MODULE_1__["Element"]); + +/***/ }), + +/***/ "./src/modifiercontext.js": +/*!********************************!*\ + !*** ./src/modifiercontext.js ***! + \********************************/ +/*! exports provided: ModifierContext */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ModifierContext", function() { return ModifierContext; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _stavenote__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stavenote */ "./src/stavenote.js"); +/* harmony import */ var _dot__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dot */ "./src/dot.js"); +/* harmony import */ var _frethandfinger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./frethandfinger */ "./src/frethandfinger.js"); +/* harmony import */ var _accidental__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./accidental */ "./src/accidental.js"); +/* harmony import */ var _notesubgroup__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./notesubgroup */ "./src/notesubgroup.js"); +/* harmony import */ var _gracenotegroup__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./gracenotegroup */ "./src/gracenotegroup.js"); +/* harmony import */ var _strokes__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./strokes */ "./src/strokes.js"); +/* harmony import */ var _stringnumber__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./stringnumber */ "./src/stringnumber.js"); +/* harmony import */ var _articulation__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./articulation */ "./src/articulation.js"); +/* harmony import */ var _ornament__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ornament */ "./src/ornament.js"); +/* harmony import */ var _annotation__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./annotation */ "./src/annotation.js"); +/* harmony import */ var _bend__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./bend */ "./src/bend.js"); +/* harmony import */ var _vibrato__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./vibrato */ "./src/vibrato.js"); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// This class implements various types of modifiers to notes (e.g. bends, +// fingering positions etc.) + + + + + + + + + + + + + + // To enable logging for this class. Set `Vex.Flow.ModifierContext.DEBUG` to `true`. + +function L() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (ModifierContext.DEBUG) _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].L('Vex.Flow.ModifierContext', args); +} + +var ModifierContext = +/*#__PURE__*/ +function () { + function ModifierContext() { + _classCallCheck(this, ModifierContext); + + // Current modifiers + this.modifiers = {}; // Formatting data. + + this.preFormatted = false; + this.postFormatted = false; + this.width = 0; + this.spacing = 0; + this.state = { + left_shift: 0, + right_shift: 0, + text_line: 0, + top_text_line: 0 + }; // Add new modifiers to this array. The ordering is significant -- lower + // modifiers are formatted and rendered before higher ones. + + this.PREFORMAT = [_stavenote__WEBPACK_IMPORTED_MODULE_1__["StaveNote"], _dot__WEBPACK_IMPORTED_MODULE_2__["Dot"], _frethandfinger__WEBPACK_IMPORTED_MODULE_3__["FretHandFinger"], _accidental__WEBPACK_IMPORTED_MODULE_4__["Accidental"], _strokes__WEBPACK_IMPORTED_MODULE_7__["Stroke"], _gracenotegroup__WEBPACK_IMPORTED_MODULE_6__["GraceNoteGroup"], _notesubgroup__WEBPACK_IMPORTED_MODULE_5__["NoteSubGroup"], _stringnumber__WEBPACK_IMPORTED_MODULE_8__["StringNumber"], _articulation__WEBPACK_IMPORTED_MODULE_9__["Articulation"], _ornament__WEBPACK_IMPORTED_MODULE_10__["Ornament"], _annotation__WEBPACK_IMPORTED_MODULE_11__["Annotation"], _bend__WEBPACK_IMPORTED_MODULE_12__["Bend"], _vibrato__WEBPACK_IMPORTED_MODULE_13__["Vibrato"]]; // If post-formatting is required for an element, add it to this array. + + this.POSTFORMAT = [_stavenote__WEBPACK_IMPORTED_MODULE_1__["StaveNote"]]; + } + + _createClass(ModifierContext, [{ + key: "addModifier", + value: function addModifier(modifier) { + var type = modifier.getCategory(); + if (!this.modifiers[type]) this.modifiers[type] = []; + this.modifiers[type].push(modifier); + modifier.setModifierContext(this); + this.preFormatted = false; + return this; + } + }, { + key: "getModifiers", + value: function getModifiers(type) { + return this.modifiers[type]; + } + }, { + key: "getWidth", + value: function getWidth() { + return this.width; + } + }, { + key: "getLeftShift", + value: function getLeftShift() { + return this.state.left_shift; + } + }, { + key: "getRightShift", + value: function getRightShift() { + return this.state.right_shift; + } + }, { + key: "getState", + value: function getState() { + return this.state; + } + }, { + key: "getMetrics", + value: function getMetrics() { + if (!this.formatted) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('UnformattedModifier', 'Unformatted modifier has no metrics.'); + } + + return { + width: this.state.left_shift + this.state.right_shift + this.spacing, + spacing: this.spacing + }; + } + }, { + key: "preFormat", + value: function preFormat() { + var _this = this; + + if (this.preFormatted) return; + this.PREFORMAT.forEach(function (modifier) { + L('Preformatting ModifierContext: ', modifier.CATEGORY); + modifier.format(_this.getModifiers(modifier.CATEGORY), _this.state, _this); + }); // Update width of this modifier context + + this.width = this.state.left_shift + this.state.right_shift; + this.preFormatted = true; + } + }, { + key: "postFormat", + value: function postFormat() { + var _this2 = this; + + if (this.postFormatted) return; + this.POSTFORMAT.forEach(function (modifier) { + L('Postformatting ModifierContext: ', modifier.CATEGORY); + modifier.postFormat(_this2.getModifiers(modifier.CATEGORY), _this2); + }); + } + }]); + + return ModifierContext; +}(); + +/***/ }), + +/***/ "./src/multimeasurerest.js": +/*!*********************************!*\ + !*** ./src/multimeasurerest.js ***! + \*********************************/ +/*! exports provided: MultiMeasureRest */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MultiMeasureRest", function() { return MultiMeasureRest; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element */ "./src/element.js"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./glyph */ "./src/glyph.js"); +/* harmony import */ var _notehead__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./notehead */ "./src/notehead.js"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.js"); +/* harmony import */ var _timesignature__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./timesignature */ "./src/timesignature.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// VexFlow - Music Engraving for HTML5 +// Copyright Mohit Muthanna 2010 +// +// This class implements multiple measure rests + + + + + + + +var semibrave_rest; + +function get_semibrave_rest() { + if (!semibrave_rest) { + var notehead = new _notehead__WEBPACK_IMPORTED_MODULE_4__["NoteHead"]({ + duration: 'w', + note_type: 'r' + }); + semibrave_rest = { + glyph_font_scale: notehead.render_options.glyph_font_scale, + glyph_code: notehead.glyph_code, + width: notehead.getWidth() + }; + } + + return semibrave_rest; +} + +var MultiMeasureRest = +/*#__PURE__*/ +function (_Element) { + _inherits(MultiMeasureRest, _Element); + + // Parameters: + // * `number_of_measures` - Number of measures. + // * `options` - The options object. + // * `show_number` - Show number of measures string or not. + // * `number_line` - Staff line to render the number of measures string. + // * `number_glyph_point` - Size of the number of measures string glyphs. + // * `padding_left` - Left padding from stave x. + // * `padding_right` - Right padding from stave end x. + // * `line` - Staff line to render rest line or rest symbols. + // * `spacing_between_lines_px` - Spacing between staff lines to + // resolve serif height or {2-bar and 4-bar}rest symbol height. + // * `line_thickness` - Rest line thickness. + // * `serif_thickness` - Rest serif line thickness. + // * `use_symbols` - Use rest symbols or not. + // * `symbol_spacing` - Spacing between each rest symbol glyphs. + // * `semibrave_rest_glyph_scale` - Size of the semibrave(1-bar) rest symbol. + function MultiMeasureRest(number_of_measures, options) { + var _this; + + _classCallCheck(this, MultiMeasureRest); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(MultiMeasureRest).call(this)); + + _this.setAttribute('type', 'MultiMeasureRest'); + + var point = _this.musicFont.lookupMetric('digits.point'); + + var fontLineShift = _this.musicFont.lookupMetric('digits.shiftLine', 0); + + _this.render_options = { + show_number: true, + number_line: -0.5, + number_glyph_point: point, + // same as TimeSignature. + padding_left: undefined, + padding_right: undefined, + line: 2, + spacing_between_lines_px: 10, + // same as Stave. + line_thickness: undefined, + serif_thickness: 2, + use_symbols: false, + symbol_spacing: undefined, + + /* same as NoteHead. */ + semibrave_rest_glyph_scale: _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].DEFAULT_NOTATION_FONT_SCALE + }; + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(_this.render_options, options); + _this.render_options.number_line += fontLineShift; + _this.number_of_measures = number_of_measures; + _this.xs = { + left: NaN, + right: NaN + }; + return _this; + } + + _createClass(MultiMeasureRest, [{ + key: "getXs", + value: function getXs() { + return this.xs; + } + }, { + key: "setStave", + value: function setStave(stave) { + this.stave = stave; + return this; + } + }, { + key: "getStave", + value: function getStave() { + return this.stave; + } + }, { + key: "drawLine", + value: function drawLine(ctx, left, right, sbl) { + var y = this.stave.getYForLine(this.render_options.line); + var padding = (right - left) * 0.1; + left += padding; + right -= padding; + var serif = { + thickness: this.render_options.serif_thickness, + height: sbl + }; + var lineThicknessHalf = sbl * 0.25; + + if (!isNaN(this.render_options.line_thickness)) { + lineThicknessHalf = this.render_options.line_thickness * 0.5; + } + + ctx.save(); + ctx.beginPath(); + ctx.moveTo(left, y - sbl); + ctx.lineTo(left + serif.thickness, y - sbl); + ctx.lineTo(left + serif.thickness, y - lineThicknessHalf); + ctx.lineTo(right - serif.thickness, y - lineThicknessHalf); + ctx.lineTo(right - serif.thickness, y - sbl); + ctx.lineTo(right, y - sbl); + ctx.lineTo(right, y + sbl); + ctx.lineTo(right - serif.thickness, y + sbl); + ctx.lineTo(right - serif.thickness, y + lineThicknessHalf); + ctx.lineTo(left + serif.thickness, y + lineThicknessHalf); + ctx.lineTo(left + serif.thickness, y + sbl); + ctx.lineTo(left, y + sbl); + ctx.closePath(); + ctx.fill(); + } + }, { + key: "drawSymbols", + value: function drawSymbols(ctx, left, right, sbl) { + var n4 = Math.floor(this.number_of_measures / 4); + var n = this.number_of_measures % 4; + var n2 = Math.floor(n / 2); + var n1 = n % 2; + var semibrave_rest = get_semibrave_rest(); + var semibrave_rest_width = semibrave_rest.width * (this.render_options.semibrave_rest_glyph_scale / semibrave_rest.glyph_font_scale); + var glyphs = { + 2: { + width: semibrave_rest_width * 0.5, + height: sbl + }, + 1: { + width: semibrave_rest_width + } + }; + var spacing = semibrave_rest_width * 1.35; + + if (!isNaN(this.render_options.symbol_spacing)) { + spacing = this.render_options.symbol_spacing; + } + + var width = n4 * glyphs[2].width + n2 * glyphs[2].width + n1 * glyphs[1].width + (n4 + n2 + n1 - 1) * spacing; + var x = left + (right - left) * 0.5 - width * 0.5; + var yTop = this.stave.getYForLine(this.render_options.line - 1); + var yMiddle = this.stave.getYForLine(this.render_options.line); + var yBottom = this.stave.getYForLine(this.render_options.line + 1); + ctx.save(); + ctx.setStrokeStyle('none'); + ctx.setLineWidth(0); + + for (var i = 0; i < n4; ++i) { + ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height); + ctx.fillRect(x, yBottom - glyphs[2].height, glyphs[2].width, glyphs[2].height); + x += glyphs[2].width + spacing; + } + + for (var _i = 0; _i < n2; ++_i) { + ctx.fillRect(x, yMiddle - glyphs[2].height, glyphs[2].width, glyphs[2].height); + x += glyphs[2].width + spacing; + } + + for (var _i2 = 0; _i2 < n1; ++_i2) { + _glyph__WEBPACK_IMPORTED_MODULE_3__["Glyph"].renderGlyph(ctx, x, yTop, this.render_options.semibrave_rest_glyph_scale, semibrave_rest.glyph_code); + x += glyphs[1].width + spacing; + } + + ctx.restore(); + } + }, { + key: "draw", + value: function draw() { + this.checkContext(); + this.setRendered(); + var ctx = this.context; + var stave = this.stave; + var sbl = this.render_options.spacing_between_lines_px; + var left = stave.getNoteStartX(); + var right = stave.getNoteEndX(); // FIXME: getNoteStartX() returns x+5(barline width) and + // getNoteEndX() returns x + width(no barline width) by default. how to fix? + + var begModifiers = stave.getModifiers(_stavemodifier__WEBPACK_IMPORTED_MODULE_5__["StaveModifier"].Position.BEGIN); + + if (begModifiers.length === 1 && begModifiers[0].getCategory() === 'barlines') { + left -= begModifiers[0].getWidth(); + } + + if (!isNaN(this.render_options.padding_left)) { + left = stave.getX() + this.render_options.padding_left; + } + + if (!isNaN(this.render_options.padding_right)) { + right = stave.getX() + stave.getWidth() - this.render_options.padding_right; + } + + this.xs.left = left; + this.xs.right = right; + + if (this.render_options.use_symbols) { + this.drawSymbols(ctx, left, right, sbl); + } else { + this.drawLine(ctx, left, right, sbl); + } + + if (this.render_options.show_number) { + var timeSpec = '/' + this.number_of_measures; + var timeSig = new _timesignature__WEBPACK_IMPORTED_MODULE_6__["TimeSignature"](null, undefined, false); + timeSig.point = this.render_options.number_glyph_point; + timeSig.setTimeSig(timeSpec); + timeSig.setStave(stave); + timeSig.x = left + (right - left) * 0.5 - timeSig.timeSig.glyph.getMetrics().width * 0.5; + timeSig.bottomLine = this.render_options.number_line; + timeSig.setContext(ctx).draw(); + } + } + }]); + + return MultiMeasureRest; +}(_element__WEBPACK_IMPORTED_MODULE_2__["Element"]); + +/***/ }), + +/***/ "./src/music.js": +/*!**********************!*\ + !*** ./src/music.js ***! + \**********************/ +/*! exports provided: Music */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Music", function() { return Music; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// This class implements some standard music theory routines. + +var Music = +/*#__PURE__*/ +function () { + function Music() { + _classCallCheck(this, Music); + } + + _createClass(Music, [{ + key: "isValidNoteValue", + value: function isValidNoteValue(note) { + if (note == null || note < 0 || note >= Music.NUM_TONES) { + return false; + } + + return true; + } + }, { + key: "isValidIntervalValue", + value: function isValidIntervalValue(interval) { + return this.isValidNoteValue(interval); + } + }, { + key: "getNoteParts", + value: function getNoteParts(noteString) { + if (!noteString || noteString.length < 1) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', 'Invalid note name: ' + noteString); + } + + if (noteString.length > 3) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', 'Invalid note name: ' + noteString); + } + + var note = noteString.toLowerCase(); + var regex = /^([cdefgab])(b|bb|n|#|##)?$/; + var match = regex.exec(note); + + if (match != null) { + var root = match[1]; + var accidental = match[2]; + return { + root: root, + accidental: accidental + }; + } else { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', 'Invalid note name: ' + noteString); + } + } + }, { + key: "getKeyParts", + value: function getKeyParts(keyString) { + if (!keyString || keyString.length < 1) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', 'Invalid key: ' + keyString); + } + + var key = keyString.toLowerCase(); // Support Major, Minor, Melodic Minor, and Harmonic Minor key types. + + var regex = /^([cdefgab])(b|#)?(mel|harm|m|M)?$/; + var match = regex.exec(key); + + if (match != null) { + var root = match[1]; + var accidental = match[2]; + var type = match[3]; // Unspecified type implies major + + if (!type) type = 'M'; + return { + root: root, + accidental: accidental, + type: type + }; + } else { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', "Invalid key: ".concat(keyString)); + } + } + }, { + key: "getNoteValue", + value: function getNoteValue(noteString) { + var value = Music.noteValues[noteString]; + + if (value == null) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', "Invalid note name: ".concat(noteString)); + } + + return value.int_val; + } + }, { + key: "getIntervalValue", + value: function getIntervalValue(intervalString) { + var value = Music.intervals[intervalString]; + + if (value == null) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', "Invalid interval name: ".concat(intervalString)); + } + + return value; + } + }, { + key: "getCanonicalNoteName", + value: function getCanonicalNoteName(noteValue) { + if (!this.isValidNoteValue(noteValue)) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', "Invalid note value: ".concat(noteValue)); + } + + return Music.canonical_notes[noteValue]; + } + }, { + key: "getCanonicalIntervalName", + value: function getCanonicalIntervalName(intervalValue) { + if (!this.isValidIntervalValue(intervalValue)) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', "Invalid interval value: ".concat(intervalValue)); + } + + return Music.diatonic_intervals[intervalValue]; + } + /* Given a note, interval, and interval direction, product the + * relative note. + */ + + }, { + key: "getRelativeNoteValue", + value: function getRelativeNoteValue(noteValue, intervalValue, direction) { + if (direction == null) direction = 1; + + if (direction !== 1 && direction !== -1) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', "Invalid direction: ".concat(direction)); + } + + var sum = (noteValue + direction * intervalValue) % Music.NUM_TONES; + if (sum < 0) sum += Music.NUM_TONES; + return sum; + } + }, { + key: "getRelativeNoteName", + value: function getRelativeNoteName(root, noteValue) { + var parts = this.getNoteParts(root); + var rootValue = this.getNoteValue(parts.root); + var interval = noteValue - rootValue; + + if (Math.abs(interval) > Music.NUM_TONES - 3) { + var multiplier = 1; + if (interval > 0) multiplier = -1; // Possibly wrap around. (Add +1 for modulo operator) + + var reverse_interval = (noteValue + 1 + (rootValue + 1)) % Music.NUM_TONES * multiplier; + + if (Math.abs(reverse_interval) > 2) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', "Notes not related: ".concat(root, ", ").concat(noteValue, ")")); + } else { + interval = reverse_interval; + } + } + + if (Math.abs(interval) > 2) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', "Notes not related: ".concat(root, ", ").concat(noteValue, ")")); + } + + var relativeNoteName = parts.root; + + if (interval > 0) { + for (var i = 1; i <= interval; ++i) { + relativeNoteName += '#'; + } + } else if (interval < 0) { + for (var _i = -1; _i >= interval; --_i) { + relativeNoteName += 'b'; + } + } + + return relativeNoteName; + } + /* Return scale tones, given intervals. Each successive interval is + * relative to the previous one, e.g., Major Scale: + * + * TTSTTTS = [2,2,1,2,2,2,1] + * + * When used with key = 0, returns C scale (which is isomorphic to + * interval list). + */ + + }, { + key: "getScaleTones", + value: function getScaleTones(key, intervals) { + var tones = [key]; + var nextNote = key; + + for (var i = 0; i < intervals.length; i += 1) { + nextNote = this.getRelativeNoteValue(nextNote, intervals[i]); + if (nextNote !== key) tones.push(nextNote); + } + + return tones; + } + /* Returns the interval of a note, given a diatonic scale. + * + * E.g., Given the scale C, and the note E, returns M3 + */ + + }, { + key: "getIntervalBetween", + value: function getIntervalBetween(note1, note2, direction) { + if (direction == null) direction = 1; + + if (direction !== 1 && direction !== -1) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', "Invalid direction: ".concat(direction)); + } + + if (!this.isValidNoteValue(note1) || !this.isValidNoteValue(note2)) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', "Invalid notes: ".concat(note1, ", ").concat(note2)); + } + + var difference = direction === 1 ? note2 - note1 : note1 - note2; + if (difference < 0) difference += Music.NUM_TONES; + return difference; + } // Create a scale map that represents the pitch state for a + // `keySignature`. For example, passing a `G` to `keySignature` would + // return a scale map with every note naturalized except for `F` which + // has an `F#` state. + + }, { + key: "createScaleMap", + value: function createScaleMap(keySignature) { + var keySigParts = this.getKeyParts(keySignature); + var scaleName = Music.scaleTypes[keySigParts.type]; + var keySigString = keySigParts.root; + if (keySigParts.accidental) keySigString += keySigParts.accidental; + if (!scaleName) throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', 'Unsupported key type: ' + keySignature); + var scale = this.getScaleTones(this.getNoteValue(keySigString), scaleName); + var noteLocation = Music.root_indices[keySigParts.root]; + var scaleMap = {}; + + for (var i = 0; i < Music.roots.length; ++i) { + var index = (noteLocation + i) % Music.roots.length; + var rootName = Music.roots[index]; + var noteName = this.getRelativeNoteName(rootName, scale[i]); + + if (noteName.length === 1) { + noteName += 'n'; + } + + scaleMap[rootName] = noteName; + } + + return scaleMap; + } + }], [{ + key: "NUM_TONES", + get: function get() { + return 12; + } + }, { + key: "roots", + get: function get() { + return ['c', 'd', 'e', 'f', 'g', 'a', 'b']; + } + }, { + key: "root_values", + get: function get() { + return [0, 2, 4, 5, 7, 9, 11]; + } + }, { + key: "root_indices", + get: function get() { + return { + 'c': 0, + 'd': 1, + 'e': 2, + 'f': 3, + 'g': 4, + 'a': 5, + 'b': 6 + }; + } + }, { + key: "canonical_notes", + get: function get() { + return ['c', 'c#', 'd', 'd#', 'e', 'f', 'f#', 'g', 'g#', 'a', 'a#', 'b']; + } + }, { + key: "diatonic_intervals", + get: function get() { + return ['unison', 'm2', 'M2', 'm3', 'M3', 'p4', 'dim5', 'p5', 'm6', 'M6', 'b7', 'M7', 'octave']; + } + }, { + key: "diatonic_accidentals", + get: function get() { + return { + 'unison': { + note: 0, + accidental: 0 + }, + 'm2': { + note: 1, + accidental: -1 + }, + 'M2': { + note: 1, + accidental: 0 + }, + 'm3': { + note: 2, + accidental: -1 + }, + 'M3': { + note: 2, + accidental: 0 + }, + 'p4': { + note: 3, + accidental: 0 + }, + 'dim5': { + note: 4, + accidental: -1 + }, + 'p5': { + note: 4, + accidental: 0 + }, + 'm6': { + note: 5, + accidental: -1 + }, + 'M6': { + note: 5, + accidental: 0 + }, + 'b7': { + note: 6, + accidental: -1 + }, + 'M7': { + note: 6, + accidental: 0 + }, + 'octave': { + note: 7, + accidental: 0 + } + }; + } + }, { + key: "intervals", + get: function get() { + return { + 'u': 0, + 'unison': 0, + 'm2': 1, + 'b2': 1, + 'min2': 1, + 'S': 1, + 'H': 1, + '2': 2, + 'M2': 2, + 'maj2': 2, + 'T': 2, + 'W': 2, + 'm3': 3, + 'b3': 3, + 'min3': 3, + 'M3': 4, + '3': 4, + 'maj3': 4, + '4': 5, + 'p4': 5, + '#4': 6, + 'b5': 6, + 'aug4': 6, + 'dim5': 6, + '5': 7, + 'p5': 7, + '#5': 8, + 'b6': 8, + 'aug5': 8, + '6': 9, + 'M6': 9, + 'maj6': 9, + 'b7': 10, + 'm7': 10, + 'min7': 10, + 'dom7': 10, + 'M7': 11, + 'maj7': 11, + '8': 12, + 'octave': 12 + }; + } + }, { + key: "scales", + get: function get() { + return { + major: [2, 2, 1, 2, 2, 2, 1], + dorian: [2, 1, 2, 2, 2, 1, 2], + mixolydian: [2, 2, 1, 2, 2, 1, 2], + minor: [2, 1, 2, 2, 1, 2, 2] + }; + } + }, { + key: "scaleTypes", + get: function get() { + return { + 'M': Music.scales.major, + 'm': Music.scales.minor + }; + } + }, { + key: "accidentals", + get: function get() { + return ['bb', 'b', 'n', '#', '##']; + } + }, { + key: "noteValues", + get: function get() { + return { + 'c': { + root_index: 0, + int_val: 0 + }, + 'cn': { + root_index: 0, + int_val: 0 + }, + 'c#': { + root_index: 0, + int_val: 1 + }, + 'c##': { + root_index: 0, + int_val: 2 + }, + 'cb': { + root_index: 0, + int_val: 11 + }, + 'cbb': { + root_index: 0, + int_val: 10 + }, + 'd': { + root_index: 1, + int_val: 2 + }, + 'dn': { + root_index: 1, + int_val: 2 + }, + 'd#': { + root_index: 1, + int_val: 3 + }, + 'd##': { + root_index: 1, + int_val: 4 + }, + 'db': { + root_index: 1, + int_val: 1 + }, + 'dbb': { + root_index: 1, + int_val: 0 + }, + 'e': { + root_index: 2, + int_val: 4 + }, + 'en': { + root_index: 2, + int_val: 4 + }, + 'e#': { + root_index: 2, + int_val: 5 + }, + 'e##': { + root_index: 2, + int_val: 6 + }, + 'eb': { + root_index: 2, + int_val: 3 + }, + 'ebb': { + root_index: 2, + int_val: 2 + }, + 'f': { + root_index: 3, + int_val: 5 + }, + 'fn': { + root_index: 3, + int_val: 5 + }, + 'f#': { + root_index: 3, + int_val: 6 + }, + 'f##': { + root_index: 3, + int_val: 7 + }, + 'fb': { + root_index: 3, + int_val: 4 + }, + 'fbb': { + root_index: 3, + int_val: 3 + }, + 'g': { + root_index: 4, + int_val: 7 + }, + 'gn': { + root_index: 4, + int_val: 7 + }, + 'g#': { + root_index: 4, + int_val: 8 + }, + 'g##': { + root_index: 4, + int_val: 9 + }, + 'gb': { + root_index: 4, + int_val: 6 + }, + 'gbb': { + root_index: 4, + int_val: 5 + }, + 'a': { + root_index: 5, + int_val: 9 + }, + 'an': { + root_index: 5, + int_val: 9 + }, + 'a#': { + root_index: 5, + int_val: 10 + }, + 'a##': { + root_index: 5, + int_val: 11 + }, + 'ab': { + root_index: 5, + int_val: 8 + }, + 'abb': { + root_index: 5, + int_val: 7 + }, + 'b': { + root_index: 6, + int_val: 11 + }, + 'bn': { + root_index: 6, + int_val: 11 + }, + 'b#': { + root_index: 6, + int_val: 0 + }, + 'b##': { + root_index: 6, + int_val: 1 + }, + 'bb': { + root_index: 6, + int_val: 10 + }, + 'bbb': { + root_index: 6, + int_val: 9 + } + }; + } + }]); + + return Music; +}(); + +/***/ }), + +/***/ "./src/note.js": +/*!*********************!*\ + !*** ./src/note.js ***! + \*********************/ +/*! exports provided: Note */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Note", function() { return Note; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _tickable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tickable */ "./src/tickable.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// This file implements an abstract interface for notes and chords that +// are rendered on a stave. Notes have some common properties: All of them +// have a value (e.g., pitch, fret, etc.) and a duration (quarter, half, etc.) +// +// Some notes have stems, heads, dots, etc. Most notational elements that +// surround a note are called *modifiers*, and every note has an associated +// array of them. All notes also have a rendering context and belong to a stave. + + + +var Note = +/*#__PURE__*/ +function (_Tickable) { + _inherits(Note, _Tickable); + + _createClass(Note, null, [{ + key: "plotMetrics", + // Debug helper. Displays various note metrics for the given + // note. + value: function plotMetrics(ctx, note, yPos) { + var metrics = note.getMetrics(); + var xStart = note.getAbsoluteX() - metrics.modLeftPx - metrics.leftDisplacedHeadPx; + var xPre1 = note.getAbsoluteX() - metrics.leftDisplacedHeadPx; + var xAbs = note.getAbsoluteX(); + var xPost1 = note.getAbsoluteX() + metrics.notePx; + var xPost2 = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx; + var xEnd = note.getAbsoluteX() + metrics.notePx + metrics.rightDisplacedHeadPx + metrics.modRightPx; + var xFreedomRight = xEnd + (note.getFormatterMetrics().freedom.right || 0); + var xWidth = xEnd - xStart; + ctx.save(); + ctx.setFont('Arial', 8, ''); + ctx.fillText(Math.round(xWidth) + 'px', xStart + note.getXShift(), yPos); + var y = yPos + 7; + + function stroke(x1, x2, color) { + var yy = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : y; + ctx.beginPath(); + ctx.setStrokeStyle(color); + ctx.setFillStyle(color); + ctx.setLineWidth(3); + ctx.moveTo(x1 + note.getXShift(), yy); + ctx.lineTo(x2 + note.getXShift(), yy); + ctx.stroke(); + } + + stroke(xStart, xPre1, 'red'); + stroke(xPre1, xAbs, '#999'); + stroke(xAbs, xPost1, 'green'); + stroke(xPost1, xPost2, '#999'); + stroke(xPost2, xEnd, 'red'); + stroke(xEnd, xFreedomRight, '#DD0'); + stroke(xStart - note.getXShift(), xStart, '#BBB'); // Shift + + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].drawDot(ctx, xAbs + note.getXShift(), y, 'blue'); + var formatterMetrics = note.getFormatterMetrics(); + + if (formatterMetrics.iterations > 0) { + var spaceDeviation = formatterMetrics.space.deviation; + var prefix = spaceDeviation >= 0 ? '+' : ''; + ctx.setFillStyle('red'); + ctx.fillText(prefix + Math.round(spaceDeviation), xAbs + note.getXShift(), yPos - 10); + } + + ctx.restore(); + } + }, { + key: "parseDuration", + value: function parseDuration(durationString) { + if (typeof durationString !== 'string') { + return null; + } + + var regexp = /(\d*\/?\d+|[a-z])(d*)([nrhms]|$)/; + var result = regexp.exec(durationString); + + if (!result) { + return null; + } + + var duration = result[1]; + var dots = result[2].length; + var type = result[3] || 'n'; + return { + duration: duration, + dots: dots, + type: type + }; + } + }, { + key: "parseNoteStruct", + value: function parseNoteStruct(noteStruct) { + var durationString = noteStruct.duration; + var customTypes = []; // Preserve backwards-compatibility + + var durationProps = Note.parseDuration(durationString); + + if (!durationProps) { + return null; + } // If specified type is invalid, return null + + + var type = noteStruct.type; + + if (type && !_tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].getGlyphProps.validTypes[type]) { + return null; + } // If no type specified, check duration or custom types + + + if (!type) { + type = durationProps.type || 'n'; // If we have keys, try and check if we've got a custom glyph + + if (noteStruct.keys !== undefined) { + noteStruct.keys.forEach(function (k, i) { + var result = k.split('/'); // We have a custom glyph specified after the note eg. /X2 + + customTypes[i] = result && result.length === 3 ? result[2] : type; + }); + } + } // Calculate the tick duration of the note + + + var ticks = _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].durationToTicks(durationProps.duration); + + if (ticks == null) { + return null; + } // Are there any dots? + + + var dots = noteStruct.dots ? noteStruct.dots : durationProps.dots; + + if (typeof dots !== 'number') { + return null; + } // Add ticks as necessary depending on the numbr of dots + + + var currentTicks = ticks; + + for (var i = 0; i < dots; i++) { + if (currentTicks <= 1) return null; + currentTicks = currentTicks / 2; + ticks += currentTicks; + } + + return { + duration: durationProps.duration, + type: type, + customTypes: customTypes, + dots: dots, + ticks: ticks + }; + } // Every note is a tickable, i.e., it can be mutated by the `Formatter` class for + // positioning and layout. + // To create a new note you need to provide a `noteStruct`, which consists + // of the following fields: + // + // `type`: The note type (e.g., `r` for rest, `s` for slash notes, etc.) + // `dots`: The number of dots, which affects the duration. + // `duration`: The time length (e.g., `q` for quarter, `h` for half, `8` for eighth etc.) + // + // The range of values for these parameters are available in `src/tables.js`. + + }, { + key: "CATEGORY", + get: function get() { + return 'note'; + } + }]); + + function Note(noteStruct) { + var _this; + + _classCallCheck(this, Note); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Note).call(this)); + + _this.setAttribute('type', 'Note'); + + if (!noteStruct) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('BadArguments', 'Note must have valid initialization data to identify duration and type.'); + } // Parse `noteStruct` and get note properties. + + + var initStruct = Note.parseNoteStruct(noteStruct); + + if (!initStruct) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('BadArguments', "Invalid note initialization object: ".concat(JSON.stringify(noteStruct))); + } // Set note properties from parameters. + + + _this.duration = initStruct.duration; + _this.dots = initStruct.dots; + _this.noteType = initStruct.type; + _this.customTypes = initStruct.customTypes; + + if (noteStruct.duration_override) { + // Custom duration + _this.setDuration(noteStruct.duration_override); + } else { + // Default duration + _this.setIntrinsicTicks(initStruct.ticks); + } + + _this.modifiers = []; // Get the glyph code for this note from the font. + + _this.glyph = _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].getGlyphProps(_this.duration, _this.noteType); + _this.customGlyphs = _this.customTypes.map(function (t) { + return _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].getGlyphProps(_this.duration, t); + }); + + if (_this.positions && (_typeof(_this.positions) !== 'object' || !_this.positions.length)) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('BadArguments', 'Note keys must be array type.'); + } // Note to play for audio players. + + + _this.playNote = null; // Positioning contexts used by the Formatter. + + _this.tickContext = null; // The current tick context. + + _this.modifierContext = null; + _this.ignore_ticks = false; // Positioning variables + + _this.width = 0; // Width in pixels calculated after preFormat + + _this.leftDisplacedHeadPx = 0; // Extra room on left for displaced note head + + _this.rightDisplacedHeadPx = 0; // Extra room on right for displaced note head + + _this.x_shift = 0; // X shift from tick context X + + _this.voice = null; // The voice that this note is in + + _this.preFormatted = false; // Is this note preFormatted? + + _this.ys = []; // list of y coordinates for each note + // we need to hold on to these for ties and beams. + + if (noteStruct.align_center) { + _this.setCenterAlignment(noteStruct.align_center); + } // The render surface. + + + _this.stave = null; + _this.render_options = { + annotation_spacing: 5 + }; + return _this; + } // Get and set the play note, which is arbitrary data that can be used by an + // audio player. + + + _createClass(Note, [{ + key: "getPlayNote", + value: function getPlayNote() { + return this.playNote; + } + }, { + key: "setPlayNote", + value: function setPlayNote(note) { + this.playNote = note; + return this; + } // Don't play notes by default, call them rests. This is also used by things like + // beams and dots for positioning. + + }, { + key: "isRest", + value: function isRest() { + return false; + } // TODO(0xfe): Why is this method here? + + }, { + key: "addStroke", + value: function addStroke(index, stroke) { + stroke.setNote(this); + stroke.setIndex(index); + this.modifiers.push(stroke); + this.setPreFormatted(false); + return this; + } // Get and set the target stave. + + }, { + key: "getStave", + value: function getStave() { + return this.stave; + } + }, { + key: "setStave", + value: function setStave(stave) { + this.stave = stave; + this.setYs([stave.getYForLine(0)]); // Update Y values if the stave is changed. + + this.context = this.stave.context; + return this; + } // `Note` is not really a modifier, but is used in + // a `ModifierContext`. + + }, { + key: "getCategory", + value: function getCategory() { + return Note.CATEGORY; + } // Set the rendering context for the note. + + }, { + key: "setContext", + value: function setContext(context) { + this.context = context; + return this; + } // Get and set spacing to the left and right of the notes. + + }, { + key: "getLeftDisplacedHeadPx", + value: function getLeftDisplacedHeadPx() { + return this.leftDisplacedHeadPx; + } + }, { + key: "getRightDisplacedHeadPx", + value: function getRightDisplacedHeadPx() { + return this.rightDisplacedHeadPx; + } + }, { + key: "setLeftDisplacedHeadPx", + value: function setLeftDisplacedHeadPx(x) { + this.leftDisplacedHeadPx = x; + return this; + } + }, { + key: "setRightDisplacedHeadPx", + value: function setRightDisplacedHeadPx(x) { + this.rightDisplacedHeadPx = x; + return this; + } // Returns true if this note has no duration (e.g., bar notes, spacers, etc.) + + }, { + key: "shouldIgnoreTicks", + value: function shouldIgnoreTicks() { + return this.ignore_ticks; + } // Get the stave line number for the note. + + }, { + key: "getLineNumber", + value: function getLineNumber() { + return 0; + } // Get the stave line number for rest. + + }, { + key: "getLineForRest", + value: function getLineForRest() { + return 0; + } // Get the glyph associated with this note. + + }, { + key: "getGlyph", + value: function getGlyph() { + return this.glyph; + } + }, { + key: "getGlyphWidth", + value: function getGlyphWidth() { + // TODO: FIXME (multiple potential values for this.glyph) + if (this.glyph) { + if (this.glyph.getMetrics) { + return this.glyph.getMetrics().width; + } else if (this.glyph.getWidth) { + return this.glyph.getWidth(this.render_options.glyph_font_scale); + } + } + + return 0; + } // Set and get Y positions for this note. Each Y value is associated with + // an individual pitch/key within the note/chord. + + }, { + key: "setYs", + value: function setYs(ys) { + this.ys = ys; + return this; + } + }, { + key: "getYs", + value: function getYs() { + if (this.ys.length === 0) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoYValues', 'No Y-values calculated for this note.'); + } + + return this.ys; + } // Get the Y position of the space above the stave onto which text can + // be rendered. + + }, { + key: "getYForTopText", + value: function getYForTopText(text_line) { + if (!this.stave) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoStave', 'No stave attached to this note.'); + } + + return this.stave.getYForTopText(text_line); + } // Get a `BoundingBox` for this note. + + }, { + key: "getBoundingBox", + value: function getBoundingBox() { + return null; + } // Returns the voice that this note belongs in. + + }, { + key: "getVoice", + value: function getVoice() { + if (!this.voice) throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoVoice', 'Note has no voice.'); + return this.voice; + } // Attach this note to `voice`. + + }, { + key: "setVoice", + value: function setVoice(voice) { + this.voice = voice; + this.preFormatted = false; + return this; + } // Get and set the `TickContext` for this note. + + }, { + key: "getTickContext", + value: function getTickContext() { + return this.tickContext; + } + }, { + key: "setTickContext", + value: function setTickContext(tc) { + this.tickContext = tc; + this.preFormatted = false; + return this; + } // Accessors for the note type. + + }, { + key: "getDuration", + value: function getDuration() { + return this.duration; + } + }, { + key: "isDotted", + value: function isDotted() { + return this.dots > 0; + } + }, { + key: "hasStem", + value: function hasStem() { + return false; + } + }, { + key: "getDots", + value: function getDots() { + return this.dots; + } + }, { + key: "getNoteType", + value: function getNoteType() { + return this.noteType; + } + }, { + key: "setBeam", + value: function setBeam() { + return this; + } // ignore parameters + // Attach this note to a modifier context. + + }, { + key: "setModifierContext", + value: function setModifierContext(mc) { + this.modifierContext = mc; + return this; + } // Attach a modifier to this note. + + }, { + key: "addModifier", + value: function addModifier(modifier) { + var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + modifier.setNote(this); + modifier.setIndex(index); + this.modifiers.push(modifier); + this.setPreFormatted(false); + return this; + } // Get the coordinates for where modifiers begin. + + }, { + key: "getModifierStartXY", + value: function getModifierStartXY() { + if (!this.preFormatted) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('UnformattedNote', "Can't call GetModifierStartXY on an unformatted note"); + } + + return { + x: this.getAbsoluteX(), + y: this.ys[0] + }; + } // Get bounds and metrics for this note. + // + // Returns a struct with fields: + // `width`: The total width of the note (including modifiers.) + // `notePx`: The width of the note head only. + // `left_shift`: The horizontal displacement of the note. + // `modLeftPx`: Start `X` for left modifiers. + // `modRightPx`: Start `X` for right modifiers. + // `leftDisplacedHeadPx`: Extra space on left of note. + // `rightDisplacedHeadPx`: Extra space on right of note. + + }, { + key: "getMetrics", + value: function getMetrics() { + if (!this.preFormatted) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('UnformattedNote', "Can't call getMetrics on an unformatted note."); + } + + var modLeftPx = this.modifierContext ? this.modifierContext.state.left_shift : 0; + var modRightPx = this.modifierContext ? this.modifierContext.state.right_shift : 0; + var width = this.getWidth(); + var glyphWidth = this.getGlyphWidth(); + var notePx = width - modLeftPx // subtract left modifiers + - modRightPx // subtract right modifiers + - this.leftDisplacedHeadPx // subtract left displaced head + - this.rightDisplacedHeadPx; // subtract right displaced head + + return { + // ---------- + // NOTE: If you change this, remember to update MockTickable in the tests/ directory. + // -------------- + width: width, + glyphWidth: glyphWidth, + notePx: notePx, + // Modifier spacing. + modLeftPx: modLeftPx, + modRightPx: modRightPx, + // Displaced note head on left or right. + leftDisplacedHeadPx: this.leftDisplacedHeadPx, + rightDisplacedHeadPx: this.rightDisplacedHeadPx + }; + } // Get the absolute `X` position of this note's tick context. This + // excludes x_shift, so you'll need to factor it in if you're + // looking for the post-formatted x-position. + + }, { + key: "getAbsoluteX", + value: function getAbsoluteX() { + if (!this.tickContext) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoTickContext', 'Note needs a TickContext assigned for an X-Value'); + } // Position note to left edge of tick context. + + + var x = this.tickContext.getX(); + + if (this.stave) { + x += this.stave.getNoteStartX() + this.musicFont.lookupMetric('stave.padding'); + } + + if (this.isCenterAligned()) { + x += this.getCenterXShift(); + } + + return x; + } + }, { + key: "setPreFormatted", + value: function setPreFormatted(value) { + this.preFormatted = value; + } + }]); + + return Note; +}(_tickable__WEBPACK_IMPORTED_MODULE_2__["Tickable"]); + +/***/ }), + +/***/ "./src/notehead.js": +/*!*************************!*\ + !*** ./src/notehead.js ***! + \*************************/ +/*! exports provided: NoteHead */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NoteHead", function() { return NoteHead; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./note */ "./src/note.js"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stem */ "./src/stem.js"); +/* harmony import */ var _stavenote__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stavenote */ "./src/stavenote.js"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./glyph */ "./src/glyph.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// This file implements `NoteHeads`. `NoteHeads` are typically not manipulated +// directly, but used internally in `StaveNote`. +// +// See `tests/notehead_tests.js` for usage examples. + + + + + + // To enable logging for this class. Set `Vex.Flow.NoteHead.DEBUG` to `true`. + +function L() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (NoteHead.DEBUG) _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].L('Vex.Flow.NoteHead', args); +} // Draw slashnote head manually. No glyph exists for this. +// +// Parameters: +// * `ctx`: the Canvas context +// * `duration`: the duration of the note. ex: "4" +// * `x`: the x coordinate to draw at +// * `y`: the y coordinate to draw at +// * `stem_direction`: the direction of the stem + + +function drawSlashNoteHead(ctx, duration, x, y, stem_direction, staveSpace) { + var width = _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].SLASH_NOTEHEAD_WIDTH; + ctx.save(); + ctx.setLineWidth(_tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].STEM_WIDTH); + var fill = false; + + if (_tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].durationToNumber(duration) > 2) { + fill = true; + } + + if (!fill) x -= _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].STEM_WIDTH / 2 * stem_direction; + ctx.beginPath(); + ctx.moveTo(x, y + staveSpace); + ctx.lineTo(x, y + 1); + ctx.lineTo(x + width, y - staveSpace); + ctx.lineTo(x + width, y); + ctx.lineTo(x, y + staveSpace); + ctx.closePath(); + + if (fill) { + ctx.fill(); + } else { + ctx.stroke(); + } + + if (_tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].durationToFraction(duration).equals(0.5)) { + var breve_lines = [-3, -1, width + 1, width + 3]; + + for (var i = 0; i < breve_lines.length; i++) { + ctx.beginPath(); + ctx.moveTo(x + breve_lines[i], y - 10); + ctx.lineTo(x + breve_lines[i], y + 11); + ctx.stroke(); + } + } + + ctx.restore(); +} + +var NoteHead = +/*#__PURE__*/ +function (_Note) { + _inherits(NoteHead, _Note); + + _createClass(NoteHead, null, [{ + key: "CATEGORY", + get: function get() { + return 'notehead'; + } + }]); + + function NoteHead(head_options) { + var _this; + + _classCallCheck(this, NoteHead); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(NoteHead).call(this, head_options)); + + _this.setAttribute('type', 'NoteHead'); + + _this.index = head_options.index; + _this.x = head_options.x || 0; + _this.y = head_options.y || 0; + _this.note_type = head_options.note_type; + _this.duration = head_options.duration; + _this.displaced = head_options.displaced || false; + _this.stem_direction = head_options.stem_direction || _stavenote__WEBPACK_IMPORTED_MODULE_4__["StaveNote"].STEM_UP; + _this.line = head_options.line; // Get glyph code based on duration and note type. This could be + // regular notes, rests, or other custom codes. + + _this.glyph = _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].getGlyphProps(_this.duration, _this.note_type); + + if (!_this.glyph) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('BadArguments', "No glyph found for duration '".concat(_this.duration, "' and type '").concat(_this.note_type, "'")); + } + + _this.glyph_code = _this.glyph.code_head; + _this.x_shift = head_options.x_shift || 0; + + if (head_options.custom_glyph_code) { + _this.custom_glyph = true; + _this.glyph_code = head_options.custom_glyph_code; + _this.stem_up_x_offset = head_options.stem_up_x_offset || 0; + _this.stem_down_x_offset = head_options.stem_down_x_offset || 0; + } + + _this.style = head_options.style; + _this.slashed = head_options.slashed; + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(_this.render_options, { + // font size for note heads + glyph_font_scale: head_options.glyph_font_scale || _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].DEFAULT_NOTATION_FONT_SCALE, + // number of stroke px to the left and right of head + stroke_px: 3 + }); + + _this.setWidth(_this.glyph.getWidth(_this.render_options.glyph_font_scale)); + + return _this; + } + + _createClass(NoteHead, [{ + key: "getCategory", + value: function getCategory() { + return NoteHead.CATEGORY; + } // Get the width of the notehead + + }, { + key: "getWidth", + value: function getWidth() { + return this.width; + } // Determine if the notehead is displaced + + }, { + key: "isDisplaced", + value: function isDisplaced() { + return this.displaced === true; + } // Get the glyph data + + }, { + key: "getGlyph", + value: function getGlyph() { + return this.glyph; + } // Set the X coordinate + + }, { + key: "setX", + value: function setX(x) { + this.x = x; + return this; + } // get/set the Y coordinate + + }, { + key: "getY", + value: function getY() { + return this.y; + } + }, { + key: "setY", + value: function setY(y) { + this.y = y; + return this; + } // Get/set the stave line the notehead is placed on + + }, { + key: "getLine", + value: function getLine() { + return this.line; + } + }, { + key: "setLine", + value: function setLine(line) { + this.line = line; + return this; + } // Get the canvas `x` coordinate position of the notehead. + + }, { + key: "getAbsoluteX", + value: function getAbsoluteX() { + // If the note has not been preformatted, then get the static x value + // Otherwise, it's been formatted and we should use it's x value relative + // to its tick context + var x = !this.preFormatted ? this.x : _get(_getPrototypeOf(NoteHead.prototype), "getAbsoluteX", this).call(this); // For a more natural displaced notehead, we adjust the displacement amount + // by half the stem width in order to maintain a slight overlap with the stem + + var displacementStemAdjustment = _stem__WEBPACK_IMPORTED_MODULE_3__["Stem"].WIDTH / 2; + var fontShift = this.musicFont.lookupMetric('notehead.shiftX', 0) * this.stem_direction; + var displacedFontShift = this.musicFont.lookupMetric('noteHead.displaced.shiftX', 0) * this.stem_direction; + return x + fontShift + (this.displaced ? (this.width - displacementStemAdjustment) * this.stem_direction + displacedFontShift : 0); + } // Get the `BoundingBox` for the `NoteHead` + + }, { + key: "getBoundingBox", + value: function getBoundingBox() { + if (!this.preFormatted) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('UnformattedNote', "Can't call getBoundingBox on an unformatted note."); + } + + var spacing = this.stave.getSpacingBetweenLines(); + var half_spacing = spacing / 2; + var min_y = this.y - half_spacing; + return new _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].BoundingBox(this.getAbsoluteX(), min_y, this.width, spacing); + } // Set notehead to a provided `stave` + + }, { + key: "setStave", + value: function setStave(stave) { + var line = this.getLine(); + this.stave = stave; + this.setY(stave.getYForNote(line)); + this.context = this.stave.context; + return this; + } // Pre-render formatting + + }, { + key: "preFormat", + value: function preFormat() { + if (this.preFormatted) return this; + var width = this.getWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx; + this.setWidth(width); + this.setPreFormatted(true); + return this; + } // Draw the notehead + + }, { + key: "draw", + value: function draw() { + this.checkContext(); + this.setRendered(); + var ctx = this.context; + var head_x = this.getAbsoluteX(); + + if (this.custom_glyph) { + // head_x += this.x_shift; + head_x += this.stem_direction === _stem__WEBPACK_IMPORTED_MODULE_3__["Stem"].UP ? this.stem_up_x_offset : this.stem_down_x_offset; + } + + var y = this.y; + L("Drawing note head '", this.note_type, this.duration, "' at", head_x, y); // Begin and end positions for head. + + var stem_direction = this.stem_direction; + var glyph_font_scale = this.render_options.glyph_font_scale; + + if (this.style) { + this.applyStyle(ctx); + } + + var categorySuffix = "".concat(this.glyph_code, "Stem").concat(stem_direction === _stem__WEBPACK_IMPORTED_MODULE_3__["Stem"].UP ? 'Up' : 'Down'); + + if (this.note_type === 's') { + var staveSpace = this.stave.getSpacingBetweenLines(); + drawSlashNoteHead(ctx, this.duration, head_x, y, stem_direction, staveSpace); + } else { + _glyph__WEBPACK_IMPORTED_MODULE_5__["Glyph"].renderGlyph(ctx, head_x, y, glyph_font_scale, this.glyph_code, { + font: this.musicFont, + category: this.custom_glyph ? "noteHead.custom.".concat(categorySuffix) : "noteHead.standard.".concat(categorySuffix) + }); + } + + if (this.style) { + this.restoreStyle(ctx); + } + } + }]); + + return NoteHead; +}(_note__WEBPACK_IMPORTED_MODULE_2__["Note"]); + +/***/ }), + +/***/ "./src/notesubgroup.js": +/*!*****************************!*\ + !*** ./src/notesubgroup.js ***! + \*****************************/ +/*! exports provided: NoteSubGroup */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NoteSubGroup", function() { return NoteSubGroup; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifier */ "./src/modifier.js"); +/* harmony import */ var _formatter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./formatter */ "./src/formatter.js"); +/* harmony import */ var _voice__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./voice */ "./src/voice.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Taehoon Moon 2016 +// +// ## Description +// +// This file implements `NoteSubGroup` which is used to format and +// render notes as a `Modifier` +// ex) ClefNote, TimeSigNote and BarNote. + + + + + +var NoteSubGroup = +/*#__PURE__*/ +function (_Modifier) { + _inherits(NoteSubGroup, _Modifier); + + _createClass(NoteSubGroup, null, [{ + key: "format", + // Arrange groups inside a `ModifierContext` + value: function format(groups, state) { + if (!groups || groups.length === 0) return false; + var width = 0; + + for (var i = 0; i < groups.length; ++i) { + var group = groups[i]; + group.preFormat(); + width += group.getWidth(); + } + + state.left_shift += width; + return true; + } + }, { + key: "CATEGORY", + get: function get() { + return 'notesubgroup'; + } + }]); + + function NoteSubGroup(subNotes) { + var _this; + + _classCallCheck(this, NoteSubGroup); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(NoteSubGroup).call(this)); + + _this.setAttribute('type', 'NoteSubGroup'); + + _this.note = null; + _this.index = null; + _this.position = _modifier__WEBPACK_IMPORTED_MODULE_2__["Modifier"].Position.LEFT; + _this.subNotes = subNotes; + + _this.subNotes.forEach(function (subNote) { + subNote.ignore_ticks = false; + }); + + _this.width = 0; + _this.preFormatted = false; + _this.formatter = new _formatter__WEBPACK_IMPORTED_MODULE_3__["Formatter"](); + _this.voice = new _voice__WEBPACK_IMPORTED_MODULE_4__["Voice"]({ + num_beats: 4, + beat_value: 4, + resolution: _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].RESOLUTION + }).setStrict(false); + + _this.voice.addTickables(_this.subNotes); + + return _possibleConstructorReturn(_this, _assertThisInitialized(_this)); + } + + _createClass(NoteSubGroup, [{ + key: "getCategory", + value: function getCategory() { + return NoteSubGroup.CATEGORY; + } + }, { + key: "preFormat", + value: function preFormat() { + if (this.preFormatted) return; + this.formatter.joinVoices([this.voice]).format([this.voice], 0); + this.setWidth(this.formatter.getMinTotalWidth()); + this.preFormatted = true; + } + }, { + key: "setNote", + value: function setNote(note) { + this.note = note; + } + }, { + key: "setWidth", + value: function setWidth(width) { + this.width = width; + } + }, { + key: "getWidth", + value: function getWidth() { + return this.width; + } + }, { + key: "draw", + value: function draw() { + var _this2 = this; + + this.checkContext(); + var note = this.getNote(); + + if (!(note && this.index !== null)) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('NoAttachedNote', "Can't draw notes without a parent note and parent note index."); + } + + this.setRendered(); + this.alignSubNotesWithNote(this.subNotes, note); // Modifier function + // Draw notes + + this.subNotes.forEach(function (subNote) { + return subNote.setContext(_this2.context).drawWithStyle(); + }); + } + }]); + + return NoteSubGroup; +}(_modifier__WEBPACK_IMPORTED_MODULE_2__["Modifier"]); + +/***/ }), + +/***/ "./src/ornament.js": +/*!*************************!*\ + !*** ./src/ornament.js ***! + \*************************/ +/*! exports provided: Ornament */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Ornament", function() { return Ornament; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifier */ "./src/modifier.js"); +/* harmony import */ var _tickcontext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tickcontext */ "./src/tickcontext.js"); +/* harmony import */ var _stavenote__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stavenote */ "./src/stavenote.js"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./glyph */ "./src/glyph.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Cyril Silverman +// +// ## Description +// +// This file implements ornaments as modifiers that can be +// attached to notes. The complete list of ornaments is available in +// `tables.js` under `Vex.Flow.ornamentCodes`. +// +// See `tests/ornament_tests.js` for usage examples. + + + + + + // To enable logging for this class. Set `Vex.Flow.Ornament.DEBUG` to `true`. + +function L() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (Ornament.DEBUG) _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].L('Vex.Flow.Ornament', args); +} + +var Ornament = +/*#__PURE__*/ +function (_Modifier) { + _inherits(Ornament, _Modifier); + + _createClass(Ornament, null, [{ + key: "format", + // ## Static Methods + // Arrange ornaments inside `ModifierContext` + value: function format(ornaments, state) { + if (!ornaments || ornaments.length === 0) return false; + var width = 0; + + for (var i = 0; i < ornaments.length; ++i) { + var ornament = ornaments[i]; + var increment = 2; + width = Math.max(ornament.getWidth(), width); + + if (ornament.getPosition() === _modifier__WEBPACK_IMPORTED_MODULE_2__["Modifier"].Position.ABOVE) { + ornament.setTextLine(state.top_text_line); + state.top_text_line += increment; + } else { + ornament.setTextLine(state.text_line); + state.text_line += increment; + } + } + + state.left_shift += width / 2; + state.right_shift += width / 2; + return true; + } // Create a new ornament of type `type`, which is an entry in + // `Vex.Flow.ornamentCodes` in `tables.js`. + + }, { + key: "CATEGORY", + get: function get() { + return 'ornaments'; + } + }]); + + function Ornament(type) { + var _this; + + _classCallCheck(this, Ornament); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Ornament).call(this)); + + _this.setAttribute('type', 'Ornament'); + + _this.note = null; + _this.index = null; + _this.type = type; + _this.position = _modifier__WEBPACK_IMPORTED_MODULE_2__["Modifier"].Position.ABOVE; + _this.delayed = false; + _this.accidentalUpper = null; + _this.accidentalLower = null; + _this.render_options = { + font_scale: 38, + accidentalLowerPadding: 3, + accidentalUpperPadding: 3 + }; + _this.ornament = _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].ornamentCodes(_this.type); + + if (!_this.ornament) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('ArgumentError', "Ornament not found: '".concat(_this.type, "'")); + } + + _this.glyph = new _glyph__WEBPACK_IMPORTED_MODULE_5__["Glyph"](_this.ornament.code, _this.render_options.font_scale, { + category: "ornament.".concat(_this.ornament.code) + }); + + _this.glyph.setOrigin(0.5, 1.0); // FIXME: SMuFL won't require a vertical origin shift + + + return _this; + } + + _createClass(Ornament, [{ + key: "getCategory", + value: function getCategory() { + return Ornament.CATEGORY; + } // Set whether the ornament is to be delayed + + }, { + key: "setDelayed", + value: function setDelayed(delayed) { + this.delayed = delayed; + return this; + } // Set the upper accidental for the ornament + + }, { + key: "setUpperAccidental", + value: function setUpperAccidental(accid) { + var scale = this.render_options.font_scale / 1.3; + this.accidentalUpper = new _glyph__WEBPACK_IMPORTED_MODULE_5__["Glyph"](_tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].accidentalCodes(accid).code, scale); + this.accidentalUpper.setOrigin(0.5, 1.0); + return this; + } // Set the lower accidental for the ornament + + }, { + key: "setLowerAccidental", + value: function setLowerAccidental(accid) { + var scale = this.render_options.font_scale / 1.3; + this.accidentalLower = new _glyph__WEBPACK_IMPORTED_MODULE_5__["Glyph"](_tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].accidentalCodes(accid).code, scale); + this.accidentalLower.setOrigin(0.5, 1.0); + return this; + } // Render ornament in position next to note. + + }, { + key: "draw", + value: function draw() { + this.checkContext(); + + if (!this.note || this.index == null) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoAttachedNote', "Can't draw Ornament without a note and index."); + } + + this.setRendered(); + var ctx = this.context; + var stemDir = this.note.getStemDirection(); + var stave = this.note.getStave(); // Get stem extents + + var stemExtents = this.note.getStem().getExtents(); + var y = stemDir === _stavenote__WEBPACK_IMPORTED_MODULE_4__["StaveNote"].STEM_DOWN ? stemExtents.baseY : stemExtents.topY; // TabNotes don't have stems attached to them. Tab stems are rendered + // outside the stave. + + if (this.note.getCategory() === 'tabnotes') { + if (this.note.hasStem()) { + if (stemDir === _stavenote__WEBPACK_IMPORTED_MODULE_4__["StaveNote"].STEM_DOWN) { + y = stave.getYForTopText(this.text_line); + } + } else { + // Without a stem + y = stave.getYForTopText(this.text_line); + } + } + + var isPlacedOnNoteheadSide = stemDir === _stavenote__WEBPACK_IMPORTED_MODULE_4__["StaveNote"].STEM_DOWN; + var spacing = stave.getSpacingBetweenLines(); + var lineSpacing = 1; // Beamed stems are longer than quarter note stems, adjust accordingly + + if (!isPlacedOnNoteheadSide && this.note.beam) { + lineSpacing += 0.5; + } + + var totalSpacing = spacing * (this.text_line + lineSpacing); + var glyphYBetweenLines = y - totalSpacing; // Get initial coordinates for the modifier position + + var start = this.note.getModifierStartXY(this.position, this.index); + var glyphX = start.x; + var glyphY = Math.min(stave.getYForTopText(this.text_line), glyphYBetweenLines); + glyphY += this.y_shift; // Ajdust x position if ornament is delayed + + if (this.delayed) { + var delayXShift = 0; + + if (this.delayXShift !== undefined) { + delayXShift = this.delayXShift; + } else { + delayXShift += this.glyph.getMetrics().width / 2; + var nextContext = _tickcontext__WEBPACK_IMPORTED_MODULE_3__["TickContext"].getNextContext(this.note.getTickContext()); + + if (nextContext) { + delayXShift += (nextContext.getX() - glyphX) * 0.5; + } else { + delayXShift += (stave.x + stave.width - glyphX) * 0.5; + } + + this.delayXShift = delayXShift; + } + + glyphX += delayXShift; + } + + L('Rendering ornament: ', this.ornament, glyphX, glyphY); + + if (this.accidentalLower) { + this.accidentalLower.render(ctx, glyphX, glyphY); + glyphY -= this.accidentalLower.getMetrics().height; + glyphY -= this.render_options.accidentalLowerPadding; + } + + this.glyph.render(ctx, glyphX, glyphY); + glyphY -= this.glyph.getMetrics().height; + + if (this.accidentalUpper) { + glyphY -= this.render_options.accidentalUpperPadding; + this.accidentalUpper.render(ctx, glyphX, glyphY); + } + } + }]); + + return Ornament; +}(_modifier__WEBPACK_IMPORTED_MODULE_2__["Modifier"]); + +/***/ }), + +/***/ "./src/parser.js": +/*!***********************!*\ + !*** ./src/parser.js ***! + \***********************/ +/*! exports provided: X, Parser */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "X", function() { return X; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Parser", function() { return Parser; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// A generic text parsing class for VexFlow. + // To enable logging for this class. Set `Vex.Flow.Parser.DEBUG` to `true`. + +function L() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (Parser.DEBUG) _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].L('Vex.Flow.Parser', args); +} + +var X = _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].MakeException('ParserError'); // Converts parser results into an easy to reference list that can be +// used in triggers. + +function flattenMatches(results) { + if (results.matchedString !== undefined) return results.matchedString; + if (results.results) return flattenMatches(results.results); + if (results.length === 1) return flattenMatches(results[0]); + if (results.length === 0) return null; + return results.map(flattenMatches); +} // This is the base parser class. Given an arbitrary context-free grammar, it +// can parse any line and execute code when specific rules are met (e.g., +// when a string is terminated.) + + +var Parser = +/*#__PURE__*/ +function () { + // For an example of a simple grammar, take a look at tests/parser_tests.js or + // the EasyScore grammar in easyscore.js. + function Parser(grammar) { + _classCallCheck(this, Parser); + + this.grammar = grammar; + } // Parse `line` using current grammar. Returns {success: true} if the + // line parsed correctly, otherwise returns `{success: false, errorPos: N}` + // where `errorPos` is the location of the error in the string. + + + _createClass(Parser, [{ + key: "parse", + value: function parse(line) { + this.line = line; + this.pos = 0; + this.errorPos = -1; + var results = this.expect(this.grammar.begin()); + results.errorPos = this.errorPos; + return results; + } + }, { + key: "matchFail", + value: function matchFail(returnPos) { + if (this.errorPos === -1) this.errorPos = this.pos; + this.pos = returnPos; + } + }, { + key: "matchSuccess", + value: function matchSuccess() { + this.errorPos = -1; + } // Look for `token` in this.line[this.pos], and return success + // if one is found. `token` is specified as a regular expression. + + }, { + key: "matchToken", + value: function matchToken(token) { + var noSpace = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var regexp = noSpace ? new RegExp('^((' + token + '))') : new RegExp('^((' + token + ')\\s*)'); + var workingLine = this.line.slice(this.pos); + var result = workingLine.match(regexp); + + if (result !== null) { + return { + success: true, + matchedString: result[2], + incrementPos: result[1].length, + pos: this.pos + }; + } else { + return { + success: false, + pos: this.pos + }; + } + } // Execute rule to match a sequence of tokens (or rules). If `maybe` is + // set, then return success even if the token is not found, but reset + // the position before exiting. + + }, { + key: "expectOne", + value: function expectOne(rule) { + var maybe = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var results = []; + var pos = this.pos; + var allMatches = true; + var oneMatch = false; + maybe = maybe === true || rule.maybe === true; // Execute all sub rules in sequence. + + for (var i = 0; i < rule.expect.length; i++) { + var next = rule.expect[i]; + var localPos = this.pos; + var result = this.expect(next); // If `rule.or` is set, then return success if any one + // of the subrules match, else all subrules must match. + + if (result.success) { + results.push(result); + oneMatch = true; + if (rule.or) break; + } else { + allMatches = false; + + if (!rule.or) { + this.pos = localPos; + break; + } + } + } + + var gotOne = rule.or && oneMatch || allMatches; + var success = gotOne || maybe === true; + if (maybe && !gotOne) this.pos = pos; + if (success) this.matchSuccess();else this.matchFail(pos); + return { + success: success, + results: results, + numMatches: gotOne ? 1 : 0 + }; + } // Try to match multiple (one or more) instances of the rule. If `maybe` is set, + // then a failed match is also a success (but the position is reset). + + }, { + key: "expectOneOrMore", + value: function expectOneOrMore(rule) { + var maybe = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var results = []; + var pos = this.pos; + var numMatches = 0; + var more = true; + + do { + var result = this.expectOne(rule); + + if (result.success) { + numMatches++; + results.push(result.results); + } else { + more = false; + } + } while (more); + + var success = numMatches > 0 || maybe === true; + if (maybe && !(numMatches > 0)) this.pos = pos; + if (success) this.matchSuccess();else this.matchFail(pos); + return { + success: success, + results: results, + numMatches: numMatches + }; + } // Match zero or more instances of `rule`. Offloads to `expectOneOrMore`. + + }, { + key: "expectZeroOrMore", + value: function expectZeroOrMore(rule) { + return this.expectOneOrMore(rule, true); + } // Execute the rule produced by the provided the `rules` function. This + // ofloads to one of the above matchers and consolidates the results. It is also + // responsible for executing any code triggered by the rule (in `rule.run`.) + + }, { + key: "expect", + value: function expect(rules) { + L('Evaluating rules:', rules); + var result; + + if (!rules) { + throw new X('Invalid Rule: ' + rules, rules); + } // Get rule from Grammar class. + + + var rule = rules.bind(this.grammar)(); + + if (rule.token) { + // Base case: parse the regex and throw an error if the + // line doesn't match. + result = this.matchToken(rule.token, rule.noSpace === true); + + if (result.success) { + // Token match! Update position and throw away parsed portion + // of string. + this.pos += result.incrementPos; + } + } else if (rule.expect) { + if (rule.oneOrMore) { + result = this.expectOneOrMore(rule); + } else if (rule.zeroOrMore) { + result = this.expectZeroOrMore(rule); + } else { + result = this.expectOne(rule); + } + } else { + throw new X('Bad grammar! No `token` or `expect` property', rule); + } // If there's a trigger attached to this rule, then pull it. + + + result.matches = []; + if (result.results) result.results.forEach(function (r) { + return result.matches.push(flattenMatches(r)); + }); + if (rule.run && result.success) rule.run(result); + return result; + } + }]); + + return Parser; +}(); + +/***/ }), + +/***/ "./src/pedalmarking.js": +/*!*****************************!*\ + !*** ./src/pedalmarking.js ***! + \*****************************/ +/*! exports provided: PedalMarking */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PedalMarking", function() { return PedalMarking; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element */ "./src/element.js"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./glyph */ "./src/glyph.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// This file implements different types of pedal markings. These notation +// elements indicate to the performer when to depress and release the a pedal. +// +// In order to create "Sostenuto", and "una corda" markings, you must set +// custom text for the release/depress pedal markings. + + + // To enable logging for this class. Set `Vex.Flow.PedalMarking.DEBUG` to `true`. + +function L() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (PedalMarking.DEBUG) _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].L('Vex.Flow.PedalMarking', args); +} // Draws a pedal glyph with the provided `name` on a rendering `context` +// at the coordinates `x` and `y. Takes into account the glyph data +// coordinate shifts. + + +function drawPedalGlyph(name, context, x, y, point) { + var glyph_data = PedalMarking.GLYPHS[name]; + var glyph = new _glyph__WEBPACK_IMPORTED_MODULE_2__["Glyph"](glyph_data.code, point, { + category: 'pedalMarking' + }); + glyph.render(context, x + glyph_data.x_shift, y + glyph_data.y_shift); +} + +var PedalMarking = +/*#__PURE__*/ +function (_Element) { + _inherits(PedalMarking, _Element); + + _createClass(PedalMarking, null, [{ + key: "createSustain", + // Create a sustain pedal marking. Returns the defaults PedalMarking. + // Which uses the traditional "Ped" and "*"" markings. + value: function createSustain(notes) { + var pedal = new PedalMarking(notes); + return pedal; + } // Create a sostenuto pedal marking + + }, { + key: "createSostenuto", + value: function createSostenuto(notes) { + var pedal = new PedalMarking(notes); + pedal.setStyle(PedalMarking.Styles.MIXED); + pedal.setCustomText('Sost. Ped.'); + return pedal; + } // Create an una corda pedal marking + + }, { + key: "createUnaCorda", + value: function createUnaCorda(notes) { + var pedal = new PedalMarking(notes); + pedal.setStyle(PedalMarking.Styles.TEXT); + pedal.setCustomText('una corda', 'tre corda'); + return pedal; + } // ## Prototype Methods + + }, { + key: "GLYPHS", + // Glyph data + get: function get() { + return { + 'pedal_depress': { + code: 'keyboardPedalPed', + x_shift: -10, + y_shift: 0 + }, + 'pedal_release': { + code: 'keyboardPedalUp', + x_shift: -2, + y_shift: 3 + } + }; + } + }, { + key: "Styles", + get: function get() { + return { + TEXT: 1, + BRACKET: 2, + MIXED: 3 + }; + } + }, { + key: "StylesString", + get: function get() { + return { + text: PedalMarking.Styles.TEXT, + bracket: PedalMarking.Styles.BRACKET, + mixed: PedalMarking.Styles.MIXED + }; + } + }]); + + function PedalMarking(notes) { + var _this; + + _classCallCheck(this, PedalMarking); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(PedalMarking).call(this)); + + _this.setAttribute('type', 'PedalMarking'); + + _this.notes = notes; + _this.style = PedalMarking.TEXT; + _this.line = 0; // Custom text for the release/depress markings + + _this.custom_depress_text = ''; + _this.custom_release_text = ''; + _this.font = { + family: 'Times New Roman', + size: 12, + weight: 'italic bold' + }; + _this.render_options = { + bracket_height: 10, + text_margin_right: 6, + bracket_line_width: 1, + color: 'black' + }; + return _this; + } // Set custom text for the `depress`/`release` pedal markings. No text is + // set if the parameter is falsy. + + + _createClass(PedalMarking, [{ + key: "setCustomText", + value: function setCustomText(depress, release) { + this.custom_depress_text = depress || ''; + this.custom_release_text = release || ''; + return this; + } // Set the pedal marking style + + }, { + key: "setStyle", + value: function setStyle(style) { + if (style < 1 && style > 3) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('InvalidParameter', 'The style must be one found in PedalMarking.Styles'); + } + + this.style = style; + return this; + } // Set the staff line to render the markings on + + }, { + key: "setLine", + value: function setLine(line) { + this.line = line; + return this; + } // Draw the bracket based pedal markings + + }, { + key: "drawBracketed", + value: function drawBracketed() { + var _this2 = this; + + var ctx = this.context; + var is_pedal_depressed = false; + var prev_x; + var prev_y; + var pedal = this; // Iterate through each note + + this.notes.forEach(function (note, index, notes) { + // Each note triggers the opposite pedal action + is_pedal_depressed = !is_pedal_depressed; // Get the initial coordinates for the note + + var x = note.getAbsoluteX(); + var y = note.getStave().getYForBottomText(pedal.line + 3); // Throw if current note is positioned before the previous note + + if (x < prev_x) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('InvalidConfiguration', 'The notes provided must be in order of ascending x positions'); + } // Determine if the previous or next note are the same + // as the current note. We need to keep track of this for + // when adjustments are made for the release+depress action + + + var next_is_same = notes[index + 1] === note; + var prev_is_same = notes[index - 1] === note; + var x_shift = 0; + + var point = _this2.musicFont.lookupMetric("pedalMarking.".concat(is_pedal_depressed ? 'down' : 'up', ".point")); + + if (is_pedal_depressed) { + // Adjustment for release+depress + x_shift = prev_is_same ? 5 : 0; + + if (pedal.style === PedalMarking.Styles.MIXED && !prev_is_same) { + // For MIXED style, start with text instead of bracket + if (pedal.custom_depress_text) { + // If we have custom text, use instead of the default "Ped" glyph + var text_width = ctx.measureText(pedal.custom_depress_text).width; + ctx.fillText(pedal.custom_depress_text, x - text_width / 2, y); + x_shift = text_width / 2 + pedal.render_options.text_margin_right; + } else { + // Render the Ped glyph in position + drawPedalGlyph('pedal_depress', ctx, x, y, point); + x_shift = 20 + pedal.render_options.text_margin_right; + } + } else { + // Draw start bracket + ctx.beginPath(); + ctx.moveTo(x, y - pedal.render_options.bracket_height); + ctx.lineTo(x + x_shift, y); + ctx.stroke(); + ctx.closePath(); + } + } else { + // Adjustment for release+depress + x_shift = next_is_same ? -5 : 0; // Draw end bracket + + ctx.beginPath(); + ctx.moveTo(prev_x, prev_y); + ctx.lineTo(x + x_shift, y); + ctx.lineTo(x, y - pedal.render_options.bracket_height); + ctx.stroke(); + ctx.closePath(); + } // Store previous coordinates + + + prev_x = x + x_shift; + prev_y = y; + }); + } // Draw the text based pedal markings. This defaults to the traditional + // "Ped" and "*"" symbols if no custom text has been provided. + + }, { + key: "drawText", + value: function drawText() { + var _this3 = this; + + var ctx = this.context; + var is_pedal_depressed = false; + var pedal = this; // Iterate through each note, placing glyphs or custom text accordingly + + this.notes.forEach(function (note) { + is_pedal_depressed = !is_pedal_depressed; + var stave = note.getStave(); + var x = note.getAbsoluteX(); + var y = stave.getYForBottomText(pedal.line + 3); + + var point = _this3.musicFont.lookupMetric("pedalMarking.".concat(is_pedal_depressed ? 'down' : 'up', ".point")); + + var text_width = 0; + + if (is_pedal_depressed) { + if (pedal.custom_depress_text) { + text_width = ctx.measureText(pedal.custom_depress_text).width; + ctx.fillText(pedal.custom_depress_text, x - text_width / 2, y); + } else { + drawPedalGlyph('pedal_depress', ctx, x, y, point); + } + } else { + if (pedal.custom_release_text) { + text_width = ctx.measureText(pedal.custom_release_text).width; + ctx.fillText(pedal.custom_release_text, x - text_width / 2, y); + } else { + drawPedalGlyph('pedal_release', ctx, x, y, point); + } + } + }); + } // Render the pedal marking in position on the rendering context + + }, { + key: "draw", + value: function draw() { + var ctx = this.checkContext(); + this.setRendered(); + ctx.save(); + ctx.setStrokeStyle(this.render_options.color); + ctx.setFillStyle(this.render_options.color); + ctx.setFont(this.font.family, this.font.size, this.font.weight); + L('Rendering Pedal Marking'); + + if (this.style === PedalMarking.Styles.BRACKET || this.style === PedalMarking.Styles.MIXED) { + ctx.setLineWidth(this.render_options.bracket_line_width); + this.drawBracketed(); + } else if (this.style === PedalMarking.Styles.TEXT) { + this.drawText(); + } + + ctx.restore(); + } + }]); + + return PedalMarking; +}(_element__WEBPACK_IMPORTED_MODULE_1__["Element"]); + +/***/ }), + +/***/ "./src/raphaelcontext.js": +/*!*******************************!*\ + !*** ./src/raphaelcontext.js ***! + \*******************************/ +/*! exports provided: RaphaelContext */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RaphaelContext", function() { return RaphaelContext; }); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// A rendering context for the Raphael backend. +// +// ## Warning: Deprecated for SVGContext +// Except in instances where SVG support for IE < 9.0 is +// needed, SVGContext is recommended. +var RaphaelContext = +/*#__PURE__*/ +function () { + function RaphaelContext(element) { + _classCallCheck(this, RaphaelContext); + + this.element = element; + this.paper = Raphael(element); // eslint-disable-line + + this.path = ''; + this.pen = { + x: 0, + y: 0 + }; + this.lineWidth = 1.0; + this.state = { + scale: { + x: 1, + y: 1 + }, + font_family: 'Arial', + font_size: 8, + font_weight: 800 + }; + this.attributes = { + 'stroke-width': 0.3, + 'fill': 'black', + 'stroke': 'black', + 'font': '10pt Arial' + }; + this.background_attributes = { + 'stroke-width': 0, + 'fill': 'white', + 'stroke': 'white', + 'font': '10pt Arial' + }; + this.shadow_attributes = { + width: 0, + color: 'black' + }; + this.state_stack = []; + } // Containers not implemented + + + _createClass(RaphaelContext, [{ + key: "openGroup", + value: function openGroup() {} + }, { + key: "closeGroup", + value: function closeGroup() {} + }, { + key: "add", + value: function add() {} + }, { + key: "setFont", + value: function setFont(family, size, weight) { + this.state.font_family = family; + this.state.font_size = size; + this.state.font_weight = weight; + this.attributes.font = (this.state.font_weight || '') + ' ' + this.state.font_size * this.state.scale.x + 'pt ' + this.state.font_family; + return this; + } + }, { + key: "setRawFont", + value: function setRawFont(font) { + this.attributes.font = font; + return this; + } + }, { + key: "setFillStyle", + value: function setFillStyle(style) { + this.attributes.fill = style; + return this; + } + }, { + key: "setBackgroundFillStyle", + value: function setBackgroundFillStyle(style) { + this.background_attributes.fill = style; + this.background_attributes.stroke = style; + return this; + } + }, { + key: "setStrokeStyle", + value: function setStrokeStyle(style) { + this.attributes.stroke = style; + return this; + } + }, { + key: "setShadowColor", + value: function setShadowColor(style) { + this.shadow_attributes.color = style; + return this; + } + }, { + key: "setShadowBlur", + value: function setShadowBlur(blur) { + this.shadow_attributes.width = blur; + return this; + } + }, { + key: "setLineWidth", + value: function setLineWidth(width) { + this.attributes['stroke-width'] = width; + this.lineWidth = width; + } // Empty because there is no equivalent in SVG + + }, { + key: "setLineDash", + value: function setLineDash() { + return this; + } + }, { + key: "setLineCap", + value: function setLineCap() { + return this; + } + }, { + key: "scale", + value: function scale(x, y) { + this.state.scale = { + x: x, + y: y + }; // The scale() method is deprecated as of Raphael.JS 2.0, and + // can no longer be used as an option in an Element.attr() call. + // It is preserved here for users running earlier versions of + // Raphael.JS, though it has no effect on the SVG output in + // Raphael 2 and higher. + + this.attributes.transform = 'S' + x + ',' + y + ',0,0'; + this.attributes.scale = x + ',' + y + ',0,0'; + this.attributes.font = this.state.font_size * this.state.scale.x + 'pt ' + this.state.font_family; + this.background_attributes.transform = 'S' + x + ',' + y + ',0,0'; + this.background_attributes.font = this.state.font_size * this.state.scale.x + 'pt ' + this.state.font_family; + return this; + } + }, { + key: "clear", + value: function clear() { + this.paper.clear(); + } + }, { + key: "resize", + value: function resize(width, height) { + this.element.style.width = width; + this.paper.setSize(width, height); + return this; + } // Sets the SVG `viewBox` property, which results in auto scaling images when its container + // is resized. + // + // Usage: `ctx.setViewBox("0 0 600 400")` + + }, { + key: "setViewBox", + value: function setViewBox(viewBox) { + this.paper.canvas.setAttribute('viewBox', viewBox); + } + }, { + key: "rect", + value: function rect(x, y, width, height) { + if (height < 0) { + y += height; + height = -height; + } + + this.paper.rect(x, y, width - 0.5, height - 0.5).attr(this.attributes).attr('fill', 'none').attr('stroke-width', this.lineWidth); + return this; + } + }, { + key: "fillRect", + value: function fillRect(x, y, width, height) { + if (height < 0) { + y += height; + height = -height; + } + + this.paper.rect(x, y, width - 0.5, height - 0.5).attr(this.attributes); + return this; + } + }, { + key: "clearRect", + value: function clearRect(x, y, width, height) { + if (height < 0) { + y += height; + height = -height; + } + + this.paper.rect(x, y, width - 0.5, height - 0.5).attr(this.background_attributes); + return this; + } + }, { + key: "beginPath", + value: function beginPath() { + this.path = ''; + this.pen.x = 0; + this.pen.y = 0; + return this; + } + }, { + key: "moveTo", + value: function moveTo(x, y) { + this.path += 'M' + x + ',' + y; + this.pen.x = x; + this.pen.y = y; + return this; + } + }, { + key: "lineTo", + value: function lineTo(x, y) { + this.path += 'L' + x + ',' + y; + this.pen.x = x; + this.pen.y = y; + return this; + } + }, { + key: "bezierCurveTo", + value: function bezierCurveTo(x1, y1, x2, y2, x, y) { + this.path += 'C' + x1 + ',' + y1 + ',' + x2 + ',' + y2 + ',' + x + ',' + y; + this.pen.x = x; + this.pen.y = y; + return this; + } + }, { + key: "quadraticCurveTo", + value: function quadraticCurveTo(x1, y1, x, y) { + this.path += 'Q' + x1 + ',' + y1 + ',' + x + ',' + y; + this.pen.x = x; + this.pen.y = y; + return this; + } // This is an attempt (hack) to simulate the HTML5 canvas + // arc method. + + }, { + key: "arc", + value: function arc(x, y, radius, startAngle, endAngle, antiClockwise) { + function normalizeAngle(angle) { + while (angle < 0) { + angle += Math.PI * 2; + } + + while (angle > Math.PI * 2) { + angle -= Math.PI * 2; + } + + return angle; + } + + startAngle = normalizeAngle(startAngle); + endAngle = normalizeAngle(endAngle); + + if (startAngle > endAngle) { + var tmp = startAngle; + startAngle = endAngle; + endAngle = tmp; + antiClockwise = !antiClockwise; + } + + var delta = endAngle - startAngle; + + if (delta > Math.PI) { + this.arcHelper(x, y, radius, startAngle, startAngle + delta / 2, antiClockwise); + this.arcHelper(x, y, radius, startAngle + delta / 2, endAngle, antiClockwise); + } else { + this.arcHelper(x, y, radius, startAngle, endAngle, antiClockwise); + } + + return this; + } + }, { + key: "arcHelper", + value: function arcHelper(x, y, radius, startAngle, endAngle, antiClockwise) { + var x1 = x + radius * Math.cos(startAngle); + var y1 = y + radius * Math.sin(startAngle); + var x2 = x + radius * Math.cos(endAngle); + var y2 = y + radius * Math.sin(endAngle); + var largeArcFlag = 0; + var sweepFlag = 0; + + if (antiClockwise) { + sweepFlag = 1; + + if (endAngle - startAngle < Math.PI) { + largeArcFlag = 1; + } + } else if (endAngle - startAngle > Math.PI) { + largeArcFlag = 1; + } + + this.path += 'M' + x1 + ',' + y1 + ',A' + radius + ',' + radius + ',0,' + largeArcFlag + ',' + sweepFlag + ',' + x2 + ',' + y2 + 'M' + this.pen.x + ',' + this.pen.y; + } // Adapted from the source for Raphael's Element.glow + + }, { + key: "glow", + value: function glow() { + var out = this.paper.set(); + + if (this.shadow_attributes.width > 0) { + var sa = this.shadow_attributes; + var num_paths = sa.width / 2; + + for (var i = 1; i <= num_paths; i++) { + out.push(this.paper.path(this.path).attr({ + stroke: sa.color, + 'stroke-linejoin': 'round', + 'stroke-linecap': 'round', + 'stroke-width': +(sa.width / num_paths * i).toFixed(3), + opacity: +((sa.opacity || 0.3) / num_paths).toFixed(3), + // See note in this.scale(): In Raphael the scale() method + // is deprecated and removed as of Raphael 2.0 and replaced + // by the transform() method. It is preserved here for + // users with earlier versions of Raphael, but has no effect + // on the output SVG in Raphael 2.0+. + transform: this.attributes.transform, + scale: this.attributes.scale + })); + } + } + + return out; + } + }, { + key: "fill", + value: function fill() { + var elem = this.paper.path(this.path).attr(this.attributes).attr('stroke-width', 0); + this.glow(elem); + return this; + } + }, { + key: "stroke", + value: function stroke() { + // The first line of code below is, unfortunately, a bit of a hack: + // Raphael's transform() scaling does not scale the stroke-width, so + // in order to scale a stroke, we have to manually scale the + // stroke-width. + // + // This works well so long as the X & Y states for this.scale() are + // relatively similar. However, if they are very different, we + // would expect horizontal and vertical lines to have different + // stroke-widths. + // + // In the future, if we want to support very divergent values for + // horizontal and vertical scaling, we may want to consider + // implementing SVG scaling with properties of the SVG viewBox & + // viewPort and removing it entirely from the Element.attr() calls. + // This would more closely parallel the approach taken in + // canvascontext.js as well. + var strokeWidth = this.lineWidth * (this.state.scale.x + this.state.scale.y) / 2; + var elem = this.paper.path(this.path).attr(this.attributes).attr('fill', 'none').attr('stroke-width', strokeWidth); + this.glow(elem); + return this; + } + }, { + key: "closePath", + value: function closePath() { + this.path += 'Z'; + return this; + } + }, { + key: "measureText", + value: function measureText(text) { + var txt = this.paper.text(0, 0, text).attr(this.attributes).attr('fill', 'none').attr('stroke', 'none'); + var bounds = txt.getBBox(); + txt.remove(); + return { + width: bounds.width, + height: bounds.height + }; + } + }, { + key: "fillText", + value: function fillText(text, x, y) { + this.paper.text(x + this.measureText(text).width / 2, y - this.state.font_size / (2.25 * this.state.scale.y), text).attr(this.attributes); + return this; + } + }, { + key: "save", + value: function save() { + // TODO(mmuthanna): State needs to be deep-copied. + this.state_stack.push({ + state: { + font_family: this.state.font_family + }, + attributes: { + font: this.attributes.font, + fill: this.attributes.fill, + stroke: this.attributes.stroke, + 'stroke-width': this.attributes['stroke-width'] + }, + shadow_attributes: { + width: this.shadow_attributes.width, + color: this.shadow_attributes.color + } + }); + return this; + } + }, { + key: "restore", + value: function restore() { + // TODO(0xfe): State needs to be deep-restored. + var state = this.state_stack.pop(); + this.state.font_family = state.state.font_family; + this.attributes.font = state.attributes.font; + this.attributes.fill = state.attributes.fill; + this.attributes.stroke = state.attributes.stroke; + this.attributes['stroke-width'] = state.attributes['stroke-width']; + this.shadow_attributes.width = state.shadow_attributes.width; + this.shadow_attributes.color = state.shadow_attributes.color; + return this; + } + }]); + + return RaphaelContext; +}(); + +/***/ }), + +/***/ "./src/registry.js": +/*!*************************!*\ + !*** ./src/registry.js ***! + \*************************/ +/*! exports provided: X, Registry */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "X", function() { return X; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Registry", function() { return Registry; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// @author Mohit Cheppudira +// +// ## Description +// +// This file implements a registry for VexFlow elements. It allows users +// to track, query, and manage some subset of generated elements, and +// dynamically get and set attributes. +// +// There are two ways to regiser with a registry: +// +// 1) Explicitly call `element.register(registry)`, or, +// 2) Call `Registry.enableDefaultRegistry(registry)` when ready, and all future +// elements will automatically register with it. +// +// Once an element is registered, selected attributes are tracked and indexed by +// the registry. This allows fast look up of elements by attributes like id, type, +// and class. + +var X = _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].MakeException('RegistryError'); + +function setIndexValue(index, name, value, id, elem) { + if (!index[name][value]) index[name][value] = {}; + index[name][value][id] = elem; +} + +var Registry = +/*#__PURE__*/ +function () { + _createClass(Registry, null, [{ + key: "INDEXES", + get: function get() { + return ['type']; + } + }]); + + function Registry() { + _classCallCheck(this, Registry); + + this.clear(); + } // If you call `enableDefaultRegistry`, any new elements will auto-register with + // the provided registry as soon as they're constructed. + + + _createClass(Registry, [{ + key: "clear", + value: function clear() { + // Indexes are represented as maps of maps (of maps). This allows + // for both multi-labeling (e.g., an element can have multiple classes) + // and efficient lookup. + this.index = { + id: {}, + type: {}, + "class": {} + }; + return this; + } // Updates the indexes for element 'id'. If an element's attribute changes + // from A -> B, make sure to remove the element from A. + + }, { + key: "updateIndex", + value: function updateIndex(_ref) { + var id = _ref.id, + name = _ref.name, + value = _ref.value, + oldValue = _ref.oldValue; + var elem = this.getElementById(id); + + if (oldValue !== null && this.index[name][oldValue]) { + delete this.index[name][oldValue][id]; + } + + if (value !== null) { + setIndexValue(this.index, name, value, elem.getAttribute('id'), elem); + } + } // Register element `elem` with this registry. This adds the element to its index and watches + // it for attribute changes. + + }, { + key: "register", + value: function register(elem, id) { + var _this = this; + + id = id || elem.getAttribute('id'); + + if (!id) { + throw new X('Can\'t add element without `id` attribute to registry', elem); + } // Manually add id to index, then update other indexes. + + + elem.setAttribute('id', id); + setIndexValue(this.index, 'id', id, id, elem); + Registry.INDEXES.forEach(function (name) { + _this.updateIndex({ + id: id, + name: name, + value: elem.getAttribute(name), + oldValue: null + }); + }); + elem.onRegister(this); + return this; + } + }, { + key: "getElementById", + value: function getElementById(id) { + return this.index.id[id] ? this.index.id[id][id] : null; + } + }, { + key: "getElementsByAttribute", + value: function getElementsByAttribute(attrName, value) { + var index = this.index[attrName]; + + if (index && index[value]) { + return Object.keys(index[value]).map(function (i) { + return index[value][i]; + }); + } else { + return []; + } + } + }, { + key: "getElementsByType", + value: function getElementsByType(type) { + return this.getElementsByAttribute('type', type); + } + }, { + key: "getElementsByClass", + value: function getElementsByClass(className) { + return this.getElementsByAttribute('class', className); + } // This is called by the element when an attribute value changes. If an indexed + // attribute changes, then update the local index. + + }, { + key: "onUpdate", + value: function onUpdate(_ref2) { + var id = _ref2.id, + name = _ref2.name, + value = _ref2.value, + oldValue = _ref2.oldValue; + + function includes(array, value) { + return array.filter(function (x) { + return x === value; + }).length > 0; + } + + if (!includes(Registry.INDEXES.concat(['id', 'class']), name)) return this; + this.updateIndex({ + id: id, + name: name, + value: value, + oldValue: oldValue + }); + return this; + } + }], [{ + key: "enableDefaultRegistry", + value: function enableDefaultRegistry(registry) { + Registry.defaultRegistry = registry; + } + }, { + key: "getDefaultRegistry", + value: function getDefaultRegistry() { + return Registry.defaultRegistry; + } + }, { + key: "disableDefaultRegistry", + value: function disableDefaultRegistry() { + Registry.defaultRegistry = null; + } + }]); + + return Registry; +}(); +Registry.defaultRegistry = null; + +/***/ }), + +/***/ "./src/renderer.js": +/*!*************************!*\ + !*** ./src/renderer.js ***! + \*************************/ +/*! exports provided: Renderer */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Renderer", function() { return Renderer; }); +/* harmony import */ var _canvascontext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./canvascontext */ "./src/canvascontext.js"); +/* harmony import */ var _raphaelcontext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./raphaelcontext */ "./src/raphaelcontext.js"); +/* harmony import */ var _svgcontext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./svgcontext */ "./src/svgcontext.js"); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + +function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// Support for different rendering contexts: Canvas, Raphael + + + + +var lastContext = null; +var Renderer = +/*#__PURE__*/ +function () { + _createClass(Renderer, null, [{ + key: "buildContext", + value: function buildContext(elementId, backend, width, height, background) { + var renderer = new Renderer(elementId, backend); + + if (width && height) { + renderer.resize(width, height); + } + + if (!background) background = '#FFF'; + var ctx = renderer.getContext(); + ctx.setBackgroundFillStyle(background); + Renderer.lastContext = ctx; + return ctx; + } + }, { + key: "getCanvasContext", + value: function getCanvasContext(elementId, width, height, background) { + return Renderer.buildContext(elementId, Renderer.Backends.CANVAS, width, height, background); + } + }, { + key: "getRaphaelContext", + value: function getRaphaelContext(elementId, width, height, background) { + return Renderer.buildContext(elementId, Renderer.Backends.RAPHAEL, width, height, background); + } + }, { + key: "getSVGContext", + value: function getSVGContext(elementId, width, height, background) { + return Renderer.buildContext(elementId, Renderer.Backends.SVG, width, height, background); + } + }, { + key: "bolsterCanvasContext", + value: function bolsterCanvasContext(ctx) { + if (Renderer.USE_CANVAS_PROXY) { + return new _canvascontext__WEBPACK_IMPORTED_MODULE_0__["CanvasContext"](ctx); + } + + var methodNames = ['clear', 'setFont', 'setRawFont', 'setFillStyle', 'setBackgroundFillStyle', 'setStrokeStyle', 'setShadowColor', 'setShadowBlur', 'setLineWidth', 'setLineCap', 'setLineDash', 'openGroup', 'closeGroup', 'getGroup']; + ctx.vexFlowCanvasContext = ctx; + methodNames.forEach(function (methodName) { + ctx[methodName] = ctx[methodName] || _canvascontext__WEBPACK_IMPORTED_MODULE_0__["CanvasContext"].prototype[methodName]; + }); + return ctx; + } // Draw a dashed line (horizontal, vertical or diagonal + // dashPattern = [3,3] draws a 3 pixel dash followed by a three pixel space. + // setting the second number to 0 draws a solid line. + + }, { + key: "drawDashedLine", + value: function drawDashedLine(context, fromX, fromY, toX, toY, dashPattern) { + context.beginPath(); + var dx = toX - fromX; + var dy = toY - fromY; + var angle = Math.atan2(dy, dx); + var x = fromX; + var y = fromY; + context.moveTo(fromX, fromY); + var idx = 0; + var draw = true; + + while (!((dx < 0 ? x <= toX : x >= toX) && (dy < 0 ? y <= toY : y >= toY))) { + var dashLength = dashPattern[idx++ % dashPattern.length]; + var nx = x + Math.cos(angle) * dashLength; + x = dx < 0 ? Math.max(toX, nx) : Math.min(toX, nx); + var ny = y + Math.sin(angle) * dashLength; + y = dy < 0 ? Math.max(toY, ny) : Math.min(toY, ny); + + if (draw) { + context.lineTo(x, y); + } else { + context.moveTo(x, y); + } + + draw = !draw; + } + + context.closePath(); + context.stroke(); + } + }, { + key: "Backends", + get: function get() { + return { + CANVAS: 1, + RAPHAEL: 2, + SVG: 3, + VML: 4 + }; + } // End of line types + + }, { + key: "LineEndType", + get: function get() { + return { + NONE: 1, + // No leg + UP: 2, + // Upward leg + DOWN: 3 // Downward leg + + }; + } // Set this to true if you're using VexFlow inside a runtime + // that does not allow modifiying canvas objects. There is a small + // performance degradation due to the extra indirection. + + }, { + key: "USE_CANVAS_PROXY", + get: function get() { + return false; + } + }, { + key: "lastContext", + get: function get() { + return lastContext; + }, + set: function set(ctx) { + lastContext = ctx; + } + }]); + + function Renderer(elementId, backend) { + _classCallCheck(this, Renderer); + + this.elementId = elementId; + + if (!this.elementId) { + throw new _vex__WEBPACK_IMPORTED_MODULE_3__["Vex"].RERR('BadArgument', 'Invalid id for renderer.'); + } + + this.element = document.getElementById(elementId); + if (!this.element) this.element = elementId; // Verify backend and create context + + this.ctx = null; + this.paper = null; + this.backend = backend; + + if (this.backend === Renderer.Backends.CANVAS) { + // Create context. + if (!this.element.getContext) { + throw new _vex__WEBPACK_IMPORTED_MODULE_3__["Vex"].RERR('BadElement', "Can't get canvas context from element: ".concat(elementId)); + } + + this.ctx = Renderer.bolsterCanvasContext(this.element.getContext('2d')); + } else if (this.backend === Renderer.Backends.RAPHAEL) { + this.ctx = new _raphaelcontext__WEBPACK_IMPORTED_MODULE_1__["RaphaelContext"](this.element); + } else if (this.backend === Renderer.Backends.SVG) { + this.ctx = new _svgcontext__WEBPACK_IMPORTED_MODULE_2__["SVGContext"](this.element); + } else { + throw new _vex__WEBPACK_IMPORTED_MODULE_3__["Vex"].RERR('InvalidBackend', "No support for backend: ".concat(this.backend)); + } + } + + _createClass(Renderer, [{ + key: "resize", + value: function resize(width, height) { + if (this.backend === Renderer.Backends.CANVAS) { + if (!this.element.getContext) { + throw new _vex__WEBPACK_IMPORTED_MODULE_3__["Vex"].RERR('BadElement', "Can't get canvas context from element: ".concat(this.elementId)); + } + + var _CanvasContext$Saniti = _canvascontext__WEBPACK_IMPORTED_MODULE_0__["CanvasContext"].SanitizeCanvasDims(width, height); + + var _CanvasContext$Saniti2 = _slicedToArray(_CanvasContext$Saniti, 2); + + width = _CanvasContext$Saniti2[0]; + height = _CanvasContext$Saniti2[1]; + var devicePixelRatio = window.devicePixelRatio || 1; + this.element.width = width * devicePixelRatio; + this.element.height = height * devicePixelRatio; + this.element.style.width = width + 'px'; + this.element.style.height = height + 'px'; + this.ctx = Renderer.bolsterCanvasContext(this.element.getContext('2d')); + this.ctx.scale(devicePixelRatio, devicePixelRatio); + } else { + this.ctx.resize(width, height); + } + + return this; + } + }, { + key: "getContext", + value: function getContext() { + return this.ctx; + } + }]); + + return Renderer; +}(); + +/***/ }), + +/***/ "./src/repeatnote.js": +/*!***************************!*\ + !*** ./src/repeatnote.js ***! + \***************************/ +/*! exports provided: RepeatNote */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RepeatNote", function() { return RepeatNote; }); +/* harmony import */ var _glyphnote__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./glyphnote */ "./src/glyphnote.js"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. + + +var RepeatNote = +/*#__PURE__*/ +function (_GlyphNote) { + _inherits(RepeatNote, _GlyphNote); + + function RepeatNote(type, noteStruct, options) { + var _this; + + _classCallCheck(this, RepeatNote); + + // Smufl Codes + var CODES = { + '1': 'repeat1Bar', + '2': 'repeat2Bars', + '4': 'repeat4Bars', + 'slash': 'repeatBarSlash' + }; + noteStruct = _objectSpread({ + duration: 'q', + align_center: type !== 'slash' + }, noteStruct); + _this = _possibleConstructorReturn(this, _getPrototypeOf(RepeatNote).call(this, null, _objectSpread({ + duration: 'q', + align_center: type !== 'slash' + }, noteStruct), options)); + + _this.setAttribute('type', 'RepeatNote'); + + var glyphCode = CODES[type] || 'repeat1Bar'; + var glyph = new _glyph__WEBPACK_IMPORTED_MODULE_1__["Glyph"](glyphCode, _this.musicFont.lookupMetric('repeatNote.point', 40), { + category: 'repeatNote' + }); + + _this.setGlyph(glyph); + + return _this; + } + + return RepeatNote; +}(_glyphnote__WEBPACK_IMPORTED_MODULE_0__["GlyphNote"]); + +/***/ }), + +/***/ "./src/smufl.js": +/*!**********************!*\ + !*** ./src/smufl.js ***! + \**********************/ +/*! exports provided: Fonts, DefaultFontStack, Font */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Fonts", function() { return Fonts; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DefaultFontStack", function() { return DefaultFontStack; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Font", function() { return Font; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _fonts_bravura_glyphs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fonts/bravura_glyphs */ "./src/fonts/bravura_glyphs.js"); +/* harmony import */ var _fonts_bravura_metrics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fonts/bravura_metrics */ "./src/fonts/bravura_metrics.js"); +/* harmony import */ var _fonts_gonville_glyphs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fonts/gonville_glyphs */ "./src/fonts/gonville_glyphs.js"); +/* harmony import */ var _fonts_gonville_metrics__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./fonts/gonville_metrics */ "./src/fonts/gonville_metrics.js"); +/* harmony import */ var _fonts_petaluma_glyphs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./fonts/petaluma_glyphs */ "./src/fonts/petaluma_glyphs.js"); +/* harmony import */ var _fonts_petaluma_metrics__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./fonts/petaluma_metrics */ "./src/fonts/petaluma_metrics.js"); +/* harmony import */ var _fonts_custom_glyphs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./fonts/custom_glyphs */ "./src/fonts/custom_glyphs.js"); +/* harmony import */ var _fonts_custom_metrics__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./fonts/custom_metrics */ "./src/fonts/custom_metrics.js"); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + + + + + + + + + + + +var Font = +/*#__PURE__*/ +function () { + function Font(name, metrics, fontData) { + _classCallCheck(this, Font); + + this.name = name; + this.metrics = metrics; + this.fontData = fontData; + this.codePoints = {}; + } + + _createClass(Font, [{ + key: "getName", + value: function getName() { + return this.name; + } + }, { + key: "getResolution", + value: function getResolution() { + return this.fontData.resolution; + } + }, { + key: "getMetrics", + value: function getMetrics() { + return this.metrics; + } + }, { + key: "lookupMetric", + value: function lookupMetric(key) { + var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; + var parts = key.split('.'); + var val = this.metrics; // console.log('lookupMetric:', key); + + for (var i = 0; i < parts.length; i++) { + if (val[parts[i]] === undefined) { + if (defaultValue !== undefined) { + return defaultValue; + } else { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('INVALID_KEY', "Invalid music font metric key: ".concat(key)); + } + } + + val = val[parts[i]]; + } // console.log('found:', key, val); + + + return val; + } + }, { + key: "getFontData", + value: function getFontData() { + return this.fontData; + } + }, { + key: "getGlyphs", + value: function getGlyphs() { + return this.fontData.glyphs; + } + }, { + key: "getCodePoints", + value: function getCodePoints() { + return this.codePoints; + } + }, { + key: "setCodePoints", + value: function setCodePoints(codePoints) { + this.codePoints = codePoints; + return this; + } + }]); + + return Font; +}(); + +var Fonts = { + Bravura: new Font('Bravura', _fonts_bravura_metrics__WEBPACK_IMPORTED_MODULE_2__["BravuraMetrics"], _fonts_bravura_glyphs__WEBPACK_IMPORTED_MODULE_1__["BravuraFont"]), + Gonville: new Font('Gonville', _fonts_gonville_metrics__WEBPACK_IMPORTED_MODULE_4__["GonvilleMetrics"], _fonts_gonville_glyphs__WEBPACK_IMPORTED_MODULE_3__["GonvilleFont"]), + Petaluma: new Font('Petaluma', _fonts_petaluma_metrics__WEBPACK_IMPORTED_MODULE_6__["PetalumaMetrics"], _fonts_petaluma_glyphs__WEBPACK_IMPORTED_MODULE_5__["PetalumaFont"]), + Custom: new Font('Custom', _fonts_custom_metrics__WEBPACK_IMPORTED_MODULE_8__["CustomMetrics"], _fonts_custom_glyphs__WEBPACK_IMPORTED_MODULE_7__["CustomFont"]) +}; +var DefaultFontStack = [Fonts.Bravura, Fonts.Gonville, Fonts.Custom]; + + +/***/ }), + +/***/ "./src/stave.js": +/*!**********************!*\ + !*** ./src/stave.js ***! + \**********************/ +/*! exports provided: Stave */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Stave", function() { return Stave; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element */ "./src/element.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _stavebarline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stavebarline */ "./src/stavebarline.js"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.js"); +/* harmony import */ var _staverepetition__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./staverepetition */ "./src/staverepetition.js"); +/* harmony import */ var _stavesection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./stavesection */ "./src/stavesection.js"); +/* harmony import */ var _stavetempo__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./stavetempo */ "./src/stavetempo.js"); +/* harmony import */ var _stavetext__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./stavetext */ "./src/stavetext.js"); +/* harmony import */ var _boundingbox__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./boundingbox */ "./src/boundingbox.js"); +/* harmony import */ var _clef__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./clef */ "./src/clef.js"); +/* harmony import */ var _keysignature__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./keysignature */ "./src/keysignature.js"); +/* harmony import */ var _timesignature__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./timesignature */ "./src/timesignature.js"); +/* harmony import */ var _stavevolta__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./stavevolta */ "./src/stavevolta.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. + + + + + + + + + + + + + + +var Stave = +/*#__PURE__*/ +function (_Element) { + _inherits(Stave, _Element); + + function Stave(x, y, width, options) { + var _this; + + _classCallCheck(this, Stave); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Stave).call(this)); + + _this.setAttribute('type', 'Stave'); + + _this.x = x; + _this.y = y; + _this.width = width; + _this.formatted = false; + _this.start_x = x + 5; + _this.end_x = x + width; + _this.modifiers = []; // stave modifiers (clef, key, time, barlines, coda, segno, etc.) + + _this.measure = 0; + _this.clef = 'treble'; + _this.endClef = undefined; + _this.font = { + family: 'sans-serif', + size: 8, + weight: '' + }; + _this.options = { + vertical_bar_width: 10, + // Width around vertical bar end-marker + glyph_spacing_px: 10, + num_lines: 5, + fill_style: '#999999', + left_bar: true, + // draw vertical bar on left + right_bar: true, + // draw vertical bar on right + spacing_between_lines_px: 10, + // in pixels + space_above_staff_ln: 4, + // in staff lines + space_below_staff_ln: 4, + // in staff lines + top_text_position: 1 // in staff lines + + }; + _this.bounds = { + x: _this.x, + y: _this.y, + w: _this.width, + h: 0 + }; + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(_this.options, options); + + _this.resetLines(); + + var BARTYPE = _stavebarline__WEBPACK_IMPORTED_MODULE_3__["Barline"].type; // beg bar + + _this.addModifier(new _stavebarline__WEBPACK_IMPORTED_MODULE_3__["Barline"](_this.options.left_bar ? BARTYPE.SINGLE : BARTYPE.NONE)); // end bar + + + _this.addEndModifier(new _stavebarline__WEBPACK_IMPORTED_MODULE_3__["Barline"](_this.options.right_bar ? BARTYPE.SINGLE : BARTYPE.NONE)); + + return _this; + } + + _createClass(Stave, [{ + key: "space", + value: function space(spacing) { + return this.options.spacing_between_lines_px * spacing; + } + }, { + key: "resetLines", + value: function resetLines() { + this.options.line_config = []; + + for (var i = 0; i < this.options.num_lines; i++) { + this.options.line_config.push({ + visible: true + }); + } + + this.height = (this.options.num_lines + this.options.space_above_staff_ln) * this.options.spacing_between_lines_px; + this.options.bottom_text_position = this.options.num_lines; + } + }, { + key: "getOptions", + value: function getOptions() { + return this.options; + } + }, { + key: "setNoteStartX", + value: function setNoteStartX(x) { + if (!this.formatted) this.format(); + this.start_x = x; + var begBarline = this.modifiers[0]; + begBarline.setX(this.start_x - begBarline.getWidth()); + return this; + } + }, { + key: "getNoteStartX", + value: function getNoteStartX() { + if (!this.formatted) this.format(); + return this.start_x; + } + }, { + key: "getNoteEndX", + value: function getNoteEndX() { + if (!this.formatted) this.format(); + return this.end_x; + } + }, { + key: "getTieStartX", + value: function getTieStartX() { + return this.start_x; + } + }, { + key: "getTieEndX", + value: function getTieEndX() { + return this.x + this.width; + } + }, { + key: "getX", + value: function getX() { + return this.x; + } + }, { + key: "getNumLines", + value: function getNumLines() { + return this.options.num_lines; + } + }, { + key: "setNumLines", + value: function setNumLines(lines) { + this.options.num_lines = parseInt(lines, 10); + this.resetLines(); + return this; + } + }, { + key: "setY", + value: function setY(y) { + this.y = y; + return this; + } + }, { + key: "getTopLineTopY", + value: function getTopLineTopY() { + return this.getYForLine(0) - _tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].STAVE_LINE_THICKNESS / 2; + } + }, { + key: "getBottomLineBottomY", + value: function getBottomLineBottomY() { + return this.getYForLine(this.getNumLines() - 1) + _tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].STAVE_LINE_THICKNESS / 2; + } + }, { + key: "setX", + value: function setX(x) { + var shift = x - this.x; + this.formatted = false; + this.x = x; + this.start_x += shift; + this.end_x += shift; + + for (var i = 0; i < this.modifiers.length; i++) { + var mod = this.modifiers[i]; + + if (mod.x !== undefined) { + mod.x += shift; + } + } + + return this; + } + }, { + key: "setWidth", + value: function setWidth(width) { + this.formatted = false; + this.width = width; + this.end_x = this.x + width; // reset the x position of the end barline (TODO(0xfe): This makes no sense) + // this.modifiers[1].setX(this.end_x); + + return this; + } + }, { + key: "getWidth", + value: function getWidth() { + return this.width; + } + }, { + key: "getStyle", + value: function getStyle() { + return _objectSpread({ + fillStyle: this.options.fill_style, + strokeStyle: this.options.fill_style, + // yes, this is correct for legacy compatibility + lineWidth: _tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].STAVE_LINE_THICKNESS + }, this.style || {}); + } + }, { + key: "setMeasure", + value: function setMeasure(measure) { + this.measure = measure; + return this; + } + /** + * Gets the pixels to shift from the beginning of the stave + * following the modifier at the provided index + * @param {Number} index The index from which to determine the shift + * @return {Number} The amount of pixels shifted + */ + + }, { + key: "getModifierXShift", + value: function getModifierXShift() { + var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + + if (typeof index !== 'number') { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('InvalidIndex', 'Must be of number type'); + } + + if (!this.formatted) this.format(); + + if (this.getModifiers(_stavemodifier__WEBPACK_IMPORTED_MODULE_4__["StaveModifier"].Position.BEGIN).length === 1) { + return 0; + } + + var start_x = this.start_x - this.x; + var begBarline = this.modifiers[0]; + + if (begBarline.getType() === _stavebarline__WEBPACK_IMPORTED_MODULE_3__["Barline"].type.REPEAT_BEGIN && start_x > begBarline.getWidth()) { + start_x -= begBarline.getWidth(); + } + + return start_x; + } // Coda & Segno Symbol functions + + }, { + key: "setRepetitionTypeLeft", + value: function setRepetitionTypeLeft(type, y) { + this.modifiers.push(new _staverepetition__WEBPACK_IMPORTED_MODULE_5__["Repetition"](type, this.x, y)); + return this; + } + }, { + key: "setRepetitionTypeRight", + value: function setRepetitionTypeRight(type, y) { + this.modifiers.push(new _staverepetition__WEBPACK_IMPORTED_MODULE_5__["Repetition"](type, this.x, y)); + return this; + } // Volta functions + + }, { + key: "setVoltaType", + value: function setVoltaType(type, number_t, y) { + this.modifiers.push(new _stavevolta__WEBPACK_IMPORTED_MODULE_13__["Volta"](type, number_t, this.x, y)); + return this; + } // Section functions + + }, { + key: "setSection", + value: function setSection(section, y) { + this.modifiers.push(new _stavesection__WEBPACK_IMPORTED_MODULE_6__["StaveSection"](section, this.x, y)); + return this; + } // Tempo functions + + }, { + key: "setTempo", + value: function setTempo(tempo, y) { + this.modifiers.push(new _stavetempo__WEBPACK_IMPORTED_MODULE_7__["StaveTempo"](tempo, this.x, y)); + return this; + } // Text functions + + }, { + key: "setText", + value: function setText(text, position, options) { + this.modifiers.push(new _stavetext__WEBPACK_IMPORTED_MODULE_8__["StaveText"](text, position, options)); + return this; + } + }, { + key: "getHeight", + value: function getHeight() { + return this.height; + } + }, { + key: "getSpacingBetweenLines", + value: function getSpacingBetweenLines() { + return this.options.spacing_between_lines_px; + } + }, { + key: "getBoundingBox", + value: function getBoundingBox() { + return new _boundingbox__WEBPACK_IMPORTED_MODULE_9__["BoundingBox"](this.x, this.y, this.width, this.getBottomY() - this.y); + } + }, { + key: "getBottomY", + value: function getBottomY() { + var options = this.options; + var spacing = options.spacing_between_lines_px; + var score_bottom = this.getYForLine(options.num_lines) + options.space_below_staff_ln * spacing; + return score_bottom; + } + }, { + key: "getBottomLineY", + value: function getBottomLineY() { + return this.getYForLine(this.options.num_lines); + } // This returns the y for the *center* of a staff line + + }, { + key: "getYForLine", + value: function getYForLine(line) { + var options = this.options; + var spacing = options.spacing_between_lines_px; + var headroom = options.space_above_staff_ln; + var y = this.y + line * spacing + headroom * spacing; + return y; + } + }, { + key: "getLineForY", + value: function getLineForY(y) { + // Does the reverse of getYForLine - somewhat dumb and just calls + // getYForLine until the right value is reaches + var options = this.options; + var spacing = options.spacing_between_lines_px; + var headroom = options.space_above_staff_ln; + return (y - this.y) / spacing - headroom; + } + }, { + key: "getYForTopText", + value: function getYForTopText(line) { + var l = line || 0; + return this.getYForLine(-l - this.options.top_text_position); + } + }, { + key: "getYForBottomText", + value: function getYForBottomText(line) { + var l = line || 0; + return this.getYForLine(this.options.bottom_text_position + l); + } + }, { + key: "getYForNote", + value: function getYForNote(line) { + var options = this.options; + var spacing = options.spacing_between_lines_px; + var headroom = options.space_above_staff_ln; + var y = this.y + headroom * spacing + 5 * spacing - line * spacing; + return y; + } + }, { + key: "getYForGlyphs", + value: function getYForGlyphs() { + return this.getYForLine(3); + } // This method adds a stave modifier to the stave. Note that the first two + // modifiers (BarLines) are automatically added upon construction. + + }, { + key: "addModifier", + value: function addModifier(modifier, position) { + if (position !== undefined) { + modifier.setPosition(position); + } + + modifier.setStave(this); + this.formatted = false; + this.modifiers.push(modifier); + return this; + } + }, { + key: "addEndModifier", + value: function addEndModifier(modifier) { + this.addModifier(modifier, _stavemodifier__WEBPACK_IMPORTED_MODULE_4__["StaveModifier"].Position.END); + return this; + } // Bar Line functions + + }, { + key: "setBegBarType", + value: function setBegBarType(type) { + // Only valid bar types at beginning of stave is none, single or begin repeat + var _Barline$type = _stavebarline__WEBPACK_IMPORTED_MODULE_3__["Barline"].type, + SINGLE = _Barline$type.SINGLE, + REPEAT_BEGIN = _Barline$type.REPEAT_BEGIN, + NONE = _Barline$type.NONE; + + if (type === SINGLE || type === REPEAT_BEGIN || type === NONE) { + this.modifiers[0].setType(type); + this.formatted = false; + } + + return this; + } + }, { + key: "setEndBarType", + value: function setEndBarType(type) { + // Repeat end not valid at end of stave + if (type !== _stavebarline__WEBPACK_IMPORTED_MODULE_3__["Barline"].type.REPEAT_BEGIN) { + this.modifiers[1].setType(type); + this.formatted = false; + } + + return this; + } + }, { + key: "setClef", + value: function setClef(clefSpec, size, annotation, position) { + if (position === undefined) { + position = _stavemodifier__WEBPACK_IMPORTED_MODULE_4__["StaveModifier"].Position.BEGIN; + } + + if (position === _stavemodifier__WEBPACK_IMPORTED_MODULE_4__["StaveModifier"].Position.END) { + this.endClef = clefSpec; + } else { + this.clef = clefSpec; + } + + var clefs = this.getModifiers(position, _clef__WEBPACK_IMPORTED_MODULE_10__["Clef"].CATEGORY); + + if (clefs.length === 0) { + this.addClef(clefSpec, size, annotation, position); + } else { + clefs[0].setType(clefSpec, size, annotation); + } + + return this; + } + }, { + key: "setEndClef", + value: function setEndClef(clefSpec, size, annotation) { + this.setClef(clefSpec, size, annotation, _stavemodifier__WEBPACK_IMPORTED_MODULE_4__["StaveModifier"].Position.END); + return this; + } + }, { + key: "setKeySignature", + value: function setKeySignature(keySpec, cancelKeySpec, position) { + if (position === undefined) { + position = _stavemodifier__WEBPACK_IMPORTED_MODULE_4__["StaveModifier"].Position.BEGIN; + } + + var keySignatures = this.getModifiers(position, _keysignature__WEBPACK_IMPORTED_MODULE_11__["KeySignature"].CATEGORY); + + if (keySignatures.length === 0) { + this.addKeySignature(keySpec, cancelKeySpec, position); + } else { + keySignatures[0].setKeySig(keySpec, cancelKeySpec); + } + + return this; + } + }, { + key: "setEndKeySignature", + value: function setEndKeySignature(keySpec, cancelKeySpec) { + this.setKeySignature(keySpec, cancelKeySpec, _stavemodifier__WEBPACK_IMPORTED_MODULE_4__["StaveModifier"].Position.END); + return this; + } + }, { + key: "setTimeSignature", + value: function setTimeSignature(timeSpec, customPadding, position) { + if (position === undefined) { + position = _stavemodifier__WEBPACK_IMPORTED_MODULE_4__["StaveModifier"].Position.BEGIN; + } + + var timeSignatures = this.getModifiers(position, _timesignature__WEBPACK_IMPORTED_MODULE_12__["TimeSignature"].CATEGORY); + + if (timeSignatures.length === 0) { + this.addTimeSignature(timeSpec, customPadding, position); + } else { + timeSignatures[0].setTimeSig(timeSpec); + } + + return this; + } + }, { + key: "setEndTimeSignature", + value: function setEndTimeSignature(timeSpec, customPadding) { + this.setTimeSignature(timeSpec, customPadding, _stavemodifier__WEBPACK_IMPORTED_MODULE_4__["StaveModifier"].Position.END); + return this; + } + }, { + key: "addKeySignature", + value: function addKeySignature(keySpec, cancelKeySpec, position) { + if (position === undefined) { + position = _stavemodifier__WEBPACK_IMPORTED_MODULE_4__["StaveModifier"].Position.BEGIN; + } + + this.addModifier(new _keysignature__WEBPACK_IMPORTED_MODULE_11__["KeySignature"](keySpec, cancelKeySpec).setPosition(position), position); + return this; + } + }, { + key: "addClef", + value: function addClef(clef, size, annotation, position) { + if (position === undefined || position === _stavemodifier__WEBPACK_IMPORTED_MODULE_4__["StaveModifier"].Position.BEGIN) { + this.clef = clef; + } else if (position === _stavemodifier__WEBPACK_IMPORTED_MODULE_4__["StaveModifier"].Position.END) { + this.endClef = clef; + } + + this.addModifier(new _clef__WEBPACK_IMPORTED_MODULE_10__["Clef"](clef, size, annotation), position); + return this; + } + }, { + key: "addEndClef", + value: function addEndClef(clef, size, annotation) { + this.addClef(clef, size, annotation, _stavemodifier__WEBPACK_IMPORTED_MODULE_4__["StaveModifier"].Position.END); + return this; + } + }, { + key: "addTimeSignature", + value: function addTimeSignature(timeSpec, customPadding, position) { + this.addModifier(new _timesignature__WEBPACK_IMPORTED_MODULE_12__["TimeSignature"](timeSpec, customPadding), position); + return this; + } + }, { + key: "addEndTimeSignature", + value: function addEndTimeSignature(timeSpec, customPadding) { + this.addTimeSignature(timeSpec, customPadding, _stavemodifier__WEBPACK_IMPORTED_MODULE_4__["StaveModifier"].Position.END); + return this; + } // Deprecated + + }, { + key: "addTrebleGlyph", + value: function addTrebleGlyph() { + this.addClef('treble'); + return this; + } + }, { + key: "getModifiers", + value: function getModifiers(position, category) { + if (position === undefined && category === undefined) return this.modifiers; + return this.modifiers.filter(function (modifier) { + return (position === undefined || position === modifier.getPosition()) && (category === undefined || category === modifier.getCategory()); + }); + } + }, { + key: "sortByCategory", + value: function sortByCategory(items, order) { + for (var i = items.length - 1; i >= 0; i--) { + for (var j = 0; j < i; j++) { + if (order[items[j].getCategory()] > order[items[j + 1].getCategory()]) { + var temp = items[j]; + items[j] = items[j + 1]; + items[j + 1] = temp; + } + } + } + } + }, { + key: "format", + value: function format() { + var begBarline = this.modifiers[0]; + var endBarline = this.modifiers[1]; + var begModifiers = this.getModifiers(_stavemodifier__WEBPACK_IMPORTED_MODULE_4__["StaveModifier"].Position.BEGIN); + var endModifiers = this.getModifiers(_stavemodifier__WEBPACK_IMPORTED_MODULE_4__["StaveModifier"].Position.END); + this.sortByCategory(begModifiers, { + barlines: 0, + clefs: 1, + keysignatures: 2, + timesignatures: 3 + }); + this.sortByCategory(endModifiers, { + timesignatures: 0, + keysignatures: 1, + barlines: 2, + clefs: 3 + }); + + if (begModifiers.length > 1 && begBarline.getType() === _stavebarline__WEBPACK_IMPORTED_MODULE_3__["Barline"].type.REPEAT_BEGIN) { + begModifiers.push(begModifiers.splice(0, 1)[0]); + begModifiers.splice(0, 0, new _stavebarline__WEBPACK_IMPORTED_MODULE_3__["Barline"](_stavebarline__WEBPACK_IMPORTED_MODULE_3__["Barline"].type.SINGLE)); + } + + if (endModifiers.indexOf(endBarline) > 0) { + endModifiers.splice(0, 0, new _stavebarline__WEBPACK_IMPORTED_MODULE_3__["Barline"](_stavebarline__WEBPACK_IMPORTED_MODULE_3__["Barline"].type.NONE)); + } + + var width; + var padding; + var modifier; + var offset = 0; + var x = this.x; + + for (var i = 0; i < begModifiers.length; i++) { + modifier = begModifiers[i]; + padding = modifier.getPadding(i + offset); + width = modifier.getWidth(); + x += padding; + modifier.setX(x); + x += width; + if (padding + width === 0) offset--; + } + + this.start_x = x; + x = this.x + this.width; + var widths = { + left: 0, + right: 0, + paddingRight: 0, + paddingLeft: 0 + }; + var lastBarlineIdx = 0; + + for (var _i = 0; _i < endModifiers.length; _i++) { + modifier = endModifiers[_i]; + lastBarlineIdx = modifier.getCategory() === 'barlines' ? _i : lastBarlineIdx; + widths.right = 0; + widths.left = 0; + widths.paddingRight = 0; + widths.paddingLeft = 0; + var layoutMetrics = modifier.getLayoutMetrics(); + + if (layoutMetrics) { + if (_i !== 0) { + widths.right = layoutMetrics.xMax || 0; + widths.paddingRight = layoutMetrics.paddingRight || 0; + } + + widths.left = -layoutMetrics.xMin || 0; + widths.paddingLeft = layoutMetrics.paddingLeft || 0; + + if (_i === endModifiers.length - 1) { + widths.paddingLeft = 0; + } + } else { + widths.paddingRight = modifier.getPadding(_i - lastBarlineIdx); + + if (_i !== 0) { + widths.right = modifier.getWidth(); + } + + if (_i === 0) { + widths.left = modifier.getWidth(); + } + } + + x -= widths.paddingRight; + x -= widths.right; + modifier.setX(x); + x -= widths.left; + x -= widths.paddingLeft; + } + + this.end_x = endModifiers.length === 1 ? this.x + this.width : x; + this.formatted = true; + } + /** + * All drawing functions below need the context to be set. + */ + + }, { + key: "draw", + value: function draw() { + this.checkContext(); + this.setRendered(); + if (!this.formatted) this.format(); + var num_lines = this.options.num_lines; + var width = this.width; + var x = this.x; + var y; // Render lines + + for (var line = 0; line < num_lines; line++) { + y = this.getYForLine(line); + this.applyStyle(); + + if (this.options.line_config[line].visible) { + this.context.beginPath(); + this.context.moveTo(x, y); + this.context.lineTo(x + width, y); + this.context.stroke(); + } + + this.restoreStyle(); + } // Draw the modifiers (bar lines, coda, segno, repeat brackets, etc.) + + + for (var i = 0; i < this.modifiers.length; i++) { + // Only draw modifier if it has a draw function + if (typeof this.modifiers[i].draw === 'function') { + this.modifiers[i].applyStyle(this.context); + this.modifiers[i].draw(this, this.getModifierXShift(i)); + this.modifiers[i].restoreStyle(this.context); + } + } // Render measure numbers + + + if (this.measure > 0) { + this.context.save(); + this.context.setFont(this.font.family, this.font.size, this.font.weight); + var text_width = this.context.measureText('' + this.measure).width; + y = this.getYForTopText(0) + 3; + this.context.fillText('' + this.measure, this.x - text_width / 2, y); + this.context.restore(); + } + + return this; + } // Draw Simple barlines for backward compatability + // Do not delete - draws the beginning bar of the stave + + }, { + key: "drawVertical", + value: function drawVertical(x, isDouble) { + this.drawVerticalFixed(this.x + x, isDouble); + } + }, { + key: "drawVerticalFixed", + value: function drawVerticalFixed(x, isDouble) { + this.checkContext(); + var top_line = this.getYForLine(0); + var bottom_line = this.getYForLine(this.options.num_lines - 1); + + if (isDouble) { + this.context.fillRect(x - 3, top_line, 1, bottom_line - top_line + 1); + } + + this.context.fillRect(x, top_line, 1, bottom_line - top_line + 1); + } + }, { + key: "drawVerticalBar", + value: function drawVerticalBar(x) { + this.drawVerticalBarFixed(this.x + x, false); + } + }, { + key: "drawVerticalBarFixed", + value: function drawVerticalBarFixed(x) { + this.checkContext(); + var top_line = this.getYForLine(0); + var bottom_line = this.getYForLine(this.options.num_lines - 1); + this.context.fillRect(x, top_line, 1, bottom_line - top_line + 1); + } + /** + * Get the current configuration for the Stave. + * @return {Array} An array of configuration objects. + */ + + }, { + key: "getConfigForLines", + value: function getConfigForLines() { + return this.options.line_config; + } + /** + * Configure properties of the lines in the Stave + * @param line_number The index of the line to configure. + * @param line_config An configuration object for the specified line. + * @throws Vex.RERR "StaveConfigError" When the specified line number is out of + * range of the number of lines specified in the constructor. + */ + + }, { + key: "setConfigForLine", + value: function setConfigForLine(line_number, line_config) { + if (line_number >= this.options.num_lines || line_number < 0) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('StaveConfigError', 'The line number must be within the range of the number of lines in the Stave.'); + } + + if (line_config.visible === undefined) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('StaveConfigError', "The line configuration object is missing the 'visible' property."); + } + + if (typeof line_config.visible !== 'boolean') { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('StaveConfigError', "The line configuration objects 'visible' property must be true or false."); + } + + this.options.line_config[line_number] = line_config; + return this; + } + /** + * Set the staff line configuration array for all of the lines at once. + * @param lines_configuration An array of line configuration objects. These objects + * are of the same format as the single one passed in to setLineConfiguration(). + * The caller can set null for any line config entry if it is desired that the default be used + * @throws Vex.RERR "StaveConfigError" When the lines_configuration array does not have + * exactly the same number of elements as the num_lines configuration object set in + * the constructor. + */ + + }, { + key: "setConfigForLines", + value: function setConfigForLines(lines_configuration) { + if (lines_configuration.length !== this.options.num_lines) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('StaveConfigError', 'The length of the lines configuration array must match the number of lines in the Stave'); + } // Make sure the defaults are present in case an incomplete set of + // configuration options were supplied. + // eslint-disable-next-line + + + for (var line_config in lines_configuration) { + // Allow 'null' to be used if the caller just wants the default for a particular node. + if (!lines_configuration[line_config]) { + lines_configuration[line_config] = this.options.line_config[line_config]; + } + + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(this.options.line_config[line_config], lines_configuration[line_config]); + } + + this.options.line_config = lines_configuration; + return this; + } + }]); + + return Stave; +}(_element__WEBPACK_IMPORTED_MODULE_1__["Element"]); + +/***/ }), + +/***/ "./src/stavebarline.js": +/*!*****************************!*\ + !*** ./src/stavebarline.js ***! + \*****************************/ +/*! exports provided: Barline */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Barline", function() { return Barline; }); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// Author Larry Kuhns 2011 + + +var Barline = +/*#__PURE__*/ +function (_StaveModifier) { + _inherits(Barline, _StaveModifier); + + _createClass(Barline, null, [{ + key: "CATEGORY", + get: function get() { + return 'barlines'; + } + }, { + key: "type", + get: function get() { + return { + SINGLE: 1, + DOUBLE: 2, + END: 3, + REPEAT_BEGIN: 4, + REPEAT_END: 5, + REPEAT_BOTH: 6, + NONE: 7 + }; + } + }, { + key: "typeString", + get: function get() { + return { + single: Barline.type.SINGLE, + "double": Barline.type.DOUBLE, + end: Barline.type.END, + repeatBegin: Barline.type.REPEAT_BEGIN, + repeatEnd: Barline.type.REPEAT_END, + repeatBoth: Barline.type.REPEAT_BOTH, + none: Barline.type.NONE + }; + } + /** + * @constructor + */ + + }]); + + function Barline(type) { + var _this; + + _classCallCheck(this, Barline); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Barline).call(this)); + + _this.setAttribute('type', 'Barline'); + + _this.thickness = _tables__WEBPACK_IMPORTED_MODULE_0__["Flow"].STAVE_LINE_THICKNESS; + var TYPE = Barline.type; + _this.widths = {}; + _this.widths[TYPE.SINGLE] = 5; + _this.widths[TYPE.DOUBLE] = 5; + _this.widths[TYPE.END] = 5; + _this.widths[TYPE.REPEAT_BEGIN] = 5; + _this.widths[TYPE.REPEAT_END] = 5; + _this.widths[TYPE.REPEAT_BOTH] = 5; + _this.widths[TYPE.NONE] = 5; + _this.paddings = {}; + _this.paddings[TYPE.SINGLE] = 0; + _this.paddings[TYPE.DOUBLE] = 0; + _this.paddings[TYPE.END] = 0; + _this.paddings[TYPE.REPEAT_BEGIN] = 15; + _this.paddings[TYPE.REPEAT_END] = 15; + _this.paddings[TYPE.REPEAT_BOTH] = 15; + _this.paddings[TYPE.NONE] = 0; + _this.layoutMetricsMap = {}; + _this.layoutMetricsMap[TYPE.SINGLE] = { + xMin: 0, + xMax: 1, + paddingLeft: 5, + paddingRight: 5 + }; + _this.layoutMetricsMap[TYPE.DOUBLE] = { + xMin: -3, + xMax: 1, + paddingLeft: 5, + paddingRight: 5 + }; + _this.layoutMetricsMap[TYPE.END] = { + xMin: -5, + xMax: 1, + paddingLeft: 5, + paddingRight: 5 + }; + _this.layoutMetricsMap[TYPE.REPEAT_END] = { + xMin: -10, + xMax: 1, + paddingLeft: 5, + paddingRight: 5 + }; + _this.layoutMetricsMap[TYPE.REPEAT_BEGIN] = { + xMin: -2, + xMax: 10, + paddingLeft: 5, + paddingRight: 5 + }; + _this.layoutMetricsMap[TYPE.REPEAT_BOTH] = { + xMin: -10, + xMax: 10, + paddingLeft: 5, + paddingRight: 5 + }; + _this.layoutMetricsMap[TYPE.NONE] = { + xMin: 0, + xMax: 0, + paddingLeft: 5, + paddingRight: 5 + }; + + _this.setPosition(_stavemodifier__WEBPACK_IMPORTED_MODULE_1__["StaveModifier"].Position.BEGIN); + + _this.setType(type); + + return _this; + } + + _createClass(Barline, [{ + key: "getCategory", + value: function getCategory() { + return Barline.CATEGORY; + } + }, { + key: "getType", + value: function getType() { + return this.type; + } + }, { + key: "setType", + value: function setType(type) { + this.type = typeof type === 'string' ? Barline.typeString[type] : type; + this.setWidth(this.widths[this.type]); + this.setPadding(this.paddings[this.type]); + this.setLayoutMetrics(this.layoutMetricsMap[this.type]); + return this; + } // Draw barlines + + }, { + key: "draw", + value: function draw(stave) { + stave.checkContext(); + this.setRendered(); + + switch (this.type) { + case Barline.type.SINGLE: + this.drawVerticalBar(stave, this.x, false); + break; + + case Barline.type.DOUBLE: + this.drawVerticalBar(stave, this.x, true); + break; + + case Barline.type.END: + this.drawVerticalEndBar(stave, this.x); + break; + + case Barline.type.REPEAT_BEGIN: + // If the barline is shifted over (in front of clef/time/key) + // Draw vertical bar at the beginning. + this.drawRepeatBar(stave, this.x, true); + + if (stave.getX() !== this.x) { + this.drawVerticalBar(stave, stave.getX()); + } + + break; + + case Barline.type.REPEAT_END: + this.drawRepeatBar(stave, this.x, false); + break; + + case Barline.type.REPEAT_BOTH: + this.drawRepeatBar(stave, this.x, false); + this.drawRepeatBar(stave, this.x, true); + break; + + default: + // Default is NONE, so nothing to draw + break; + } + } + }, { + key: "drawVerticalBar", + value: function drawVerticalBar(stave, x, double_bar) { + stave.checkContext(); + var topY = stave.getTopLineTopY(); + var botY = stave.getBottomLineBottomY(); + + if (double_bar) { + stave.context.fillRect(x - 3, topY, 1, botY - topY); + } + + stave.context.fillRect(x, topY, 1, botY - topY); + } + }, { + key: "drawVerticalEndBar", + value: function drawVerticalEndBar(stave, x) { + stave.checkContext(); + var topY = stave.getTopLineTopY(); + var botY = stave.getBottomLineBottomY(); + stave.context.fillRect(x - 5, topY, 1, botY - topY); + stave.context.fillRect(x - 2, topY, 3, botY - topY); + } + }, { + key: "drawRepeatBar", + value: function drawRepeatBar(stave, x, begin) { + stave.checkContext(); + var topY = stave.getTopLineTopY(); + var botY = stave.getBottomLineBottomY(); + var x_shift = 3; + + if (!begin) { + x_shift = -5; + } + + stave.context.fillRect(x + x_shift, topY, 1, botY - topY); + stave.context.fillRect(x - 2, topY, 3, botY - topY); + var dot_radius = 2; // Shift dots left or right + + if (begin) { + x_shift += 4; + } else { + x_shift -= 4; + } + + var dot_x = x + x_shift + dot_radius / 2; // calculate the y offset based on number of stave lines + + var y_offset = (stave.getNumLines() - 1) * stave.getSpacingBetweenLines(); + y_offset = y_offset / 2 - stave.getSpacingBetweenLines() / 2; + var dot_y = topY + y_offset + dot_radius / 2; // draw the top repeat dot + + stave.context.beginPath(); + stave.context.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false); + stave.context.fill(); // draw the bottom repeat dot + + dot_y += stave.getSpacingBetweenLines(); + stave.context.beginPath(); + stave.context.arc(dot_x, dot_y, dot_radius, 0, Math.PI * 2, false); + stave.context.fill(); + } + }]); + + return Barline; +}(_stavemodifier__WEBPACK_IMPORTED_MODULE_1__["StaveModifier"]); + +/***/ }), + +/***/ "./src/staveconnector.js": +/*!*******************************!*\ + !*** ./src/staveconnector.js ***! + \*******************************/ +/*! exports provided: StaveConnector */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StaveConnector", function() { return StaveConnector; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element */ "./src/element.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./glyph */ "./src/glyph.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. + + + + + +function drawBoldDoubleLine(ctx, type, topX, topY, botY) { + if (type !== StaveConnector.type.BOLD_DOUBLE_LEFT && type !== StaveConnector.type.BOLD_DOUBLE_RIGHT) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('InvalidConnector', 'A REPEAT_BEGIN or REPEAT_END type must be provided.'); + } + + var x_shift = 3; + var variableWidth = 3.5; // Width for avoiding anti-aliasing width issues + + var thickLineOffset = 2; // For aesthetics + + if (type === StaveConnector.type.BOLD_DOUBLE_RIGHT) { + x_shift = -5; // Flips the side of the thin line + + variableWidth = 3; + } // Thin line + + + ctx.fillRect(topX + x_shift, topY, 1, botY - topY); // Thick line + + ctx.fillRect(topX - thickLineOffset, topY, variableWidth, botY - topY); +} + +var StaveConnector = +/*#__PURE__*/ +function (_Element) { + _inherits(StaveConnector, _Element); + + _createClass(StaveConnector, null, [{ + key: "type", + // SINGLE_LEFT and SINGLE are the same value for compatibility + // with older versions of vexflow which didn't have right sided + // stave connectors + get: function get() { + return { + SINGLE_RIGHT: 0, + SINGLE_LEFT: 1, + SINGLE: 1, + DOUBLE: 2, + BRACE: 3, + BRACKET: 4, + BOLD_DOUBLE_LEFT: 5, + BOLD_DOUBLE_RIGHT: 6, + THIN_DOUBLE: 7, + NONE: 8 + }; + } + }, { + key: "typeString", + get: function get() { + return { + singleRight: StaveConnector.type.SINGLE_RIGHT, + singleLeft: StaveConnector.type.SINGLE_LEFT, + single: StaveConnector.type.SINGLE, + "double": StaveConnector.type.DOUBLE, + brace: StaveConnector.type.BRACE, + bracket: StaveConnector.type.BRACKET, + boldDoubleLeft: StaveConnector.type.BOLD_DOUBLE_LEFT, + boldDoubleRight: StaveConnector.type.BOLD_DOUBLE_RIGHT, + thinDouble: StaveConnector.type.THIN_DOUBLE, + none: StaveConnector.type.NONE + }; + } + }]); + + function StaveConnector(top_stave, bottom_stave) { + var _this; + + _classCallCheck(this, StaveConnector); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(StaveConnector).call(this)); + + _this.setAttribute('type', 'StaveConnector'); + + _this.thickness = _tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].STAVE_LINE_THICKNESS; + _this.width = 3; + _this.top_stave = top_stave; + _this.bottom_stave = bottom_stave; + _this.type = StaveConnector.type.DOUBLE; + _this.font = { + family: 'times', + size: 16, + weight: 'normal' + }; // 1. Offset Bold Double Left to align with offset Repeat Begin bars + // 2. Offset BRACE type not to overlap with another StaveConnector + + _this.x_shift = 0; + _this.texts = []; + return _this; + } + + _createClass(StaveConnector, [{ + key: "setType", + value: function setType(type) { + type = typeof type === 'string' ? StaveConnector.typeString[type] : type; + + if (type >= StaveConnector.type.SINGLE_RIGHT && type <= StaveConnector.type.NONE) { + this.type = type; + } + + return this; + } + }, { + key: "setText", + value: function setText(text, options) { + this.texts.push({ + content: text, + options: _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge({ + shift_x: 0, + shift_y: 0 + }, options) + }); + return this; + } + }, { + key: "setFont", + value: function setFont(font) { + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(this.font, font); + } + }, { + key: "setXShift", + value: function setXShift(x_shift) { + if (typeof x_shift !== 'number') { + throw _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('InvalidType', 'x_shift must be a Number'); + } + + this.x_shift = x_shift; + return this; + } + }, { + key: "draw", + value: function draw() { + var ctx = this.checkContext(); + this.setRendered(); + var topY = this.top_stave.getYForLine(0); + var botY = this.bottom_stave.getYForLine(this.bottom_stave.getNumLines() - 1) + this.thickness; + var width = this.width; + var topX = this.top_stave.getX(); + var isRightSidedConnector = this.type === StaveConnector.type.SINGLE_RIGHT || this.type === StaveConnector.type.BOLD_DOUBLE_RIGHT || this.type === StaveConnector.type.THIN_DOUBLE; + + if (isRightSidedConnector) { + topX = this.top_stave.getX() + this.top_stave.width; + } + + var attachment_height = botY - topY; + + switch (this.type) { + case StaveConnector.type.SINGLE: + width = 1; + break; + + case StaveConnector.type.SINGLE_LEFT: + width = 1; + break; + + case StaveConnector.type.SINGLE_RIGHT: + width = 1; + break; + + case StaveConnector.type.DOUBLE: + topX -= this.width + 2; + topY -= this.thickness; + attachment_height += 0.5; + break; + + case StaveConnector.type.BRACE: + { + width = 12; // May need additional code to draw brace + + var x1 = this.top_stave.getX() - 2 + this.x_shift; + var y1 = topY; + var x3 = x1; + var y3 = botY; + var x2 = x1 - width; + var y2 = y1 + attachment_height / 2.0; + var cpx1 = x2 - 0.90 * width; + var cpy1 = y1 + 0.2 * attachment_height; + var cpx2 = x1 + 1.10 * width; + var cpy2 = y2 - 0.135 * attachment_height; + var cpx3 = cpx2; + var cpy3 = y2 + 0.135 * attachment_height; + var cpx4 = cpx1; + var cpy4 = y3 - 0.2 * attachment_height; + var cpx5 = x2 - width; + var cpy5 = cpy4; + var cpx6 = x1 + 0.40 * width; + var cpy6 = y2 + 0.135 * attachment_height; + var cpx7 = cpx6; + var cpy7 = y2 - 0.135 * attachment_height; + var cpx8 = cpx5; + var cpy8 = cpy1; + ctx.beginPath(); + ctx.moveTo(x1, y1); + ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2); + ctx.bezierCurveTo(cpx3, cpy3, cpx4, cpy4, x3, y3); + ctx.bezierCurveTo(cpx5, cpy5, cpx6, cpy6, x2, y2); + ctx.bezierCurveTo(cpx7, cpy7, cpx8, cpy8, x1, y1); + ctx.fill(); + ctx.stroke(); + break; + } + + case StaveConnector.type.BRACKET: + topY -= 6; + botY += 6; + attachment_height = botY - topY; + _glyph__WEBPACK_IMPORTED_MODULE_3__["Glyph"].renderGlyph(ctx, topX - 5, topY, 40, 'bracketTop'); + _glyph__WEBPACK_IMPORTED_MODULE_3__["Glyph"].renderGlyph(ctx, topX - 5, botY, 40, 'bracketBottom'); + topX -= this.width + 2; + break; + + case StaveConnector.type.BOLD_DOUBLE_LEFT: + drawBoldDoubleLine(ctx, this.type, topX + this.x_shift, topY, botY - this.thickness); + break; + + case StaveConnector.type.BOLD_DOUBLE_RIGHT: + drawBoldDoubleLine(ctx, this.type, topX, topY, botY - this.thickness); + break; + + case StaveConnector.type.THIN_DOUBLE: + width = 1; + attachment_height -= this.thickness; + break; + + case StaveConnector.type.NONE: + break; + + default: + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('InvalidType', "The provided StaveConnector.type (".concat(this.type, ") is invalid")); + } + + if (this.type !== StaveConnector.type.BRACE && this.type !== StaveConnector.type.BOLD_DOUBLE_LEFT && this.type !== StaveConnector.type.BOLD_DOUBLE_RIGHT && this.type !== StaveConnector.type.NONE) { + ctx.fillRect(topX, topY, width, attachment_height); + } // If the connector is a thin double barline, draw the paralell line + + + if (this.type === StaveConnector.type.THIN_DOUBLE) { + ctx.fillRect(topX - 3, topY, width, attachment_height); + } + + ctx.save(); + ctx.lineWidth = 2; + ctx.setFont(this.font.family, this.font.size, this.font.weight); // Add stave connector text + + for (var i = 0; i < this.texts.length; i++) { + var text = this.texts[i]; + var text_width = ctx.measureText('' + text.content).width; + var x = this.top_stave.getX() - text_width - 24 + text.options.shift_x; + var y = (this.top_stave.getYForLine(0) + this.bottom_stave.getBottomLineY()) / 2 + text.options.shift_y; + ctx.fillText('' + text.content, x, y + 4); + } + + ctx.restore(); + } + }]); + + return StaveConnector; +}(_element__WEBPACK_IMPORTED_MODULE_1__["Element"]); + +/***/ }), + +/***/ "./src/stavehairpin.js": +/*!*****************************!*\ + !*** ./src/stavehairpin.js ***! + \*****************************/ +/*! exports provided: StaveHairpin */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StaveHairpin", function() { return StaveHairpin; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element */ "./src/element.js"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifier */ "./src/modifier.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// This class by Raffaele Viglianti, 2012 http://itisnotsound.wordpress.com/ +// +// This class implements hairpins between notes. +// Hairpins can be either Crescendo or Descrescendo. + + + +var StaveHairpin = +/*#__PURE__*/ +function (_Element) { + _inherits(StaveHairpin, _Element); + + _createClass(StaveHairpin, null, [{ + key: "FormatByTicksAndDraw", + + /* Helper function to convert ticks into pixels. + * Requires a Formatter with voices joined and formatted (to + * get pixels per tick) + * + * options is struct that has: + * + * { + * height: px, + * y_shift: px, //vertical offset + * left_shift_ticks: 0, //left horizontal offset expressed in ticks + * right_shift_ticks: 0 // right horizontal offset expressed in ticks + * } + * + **/ + value: function FormatByTicksAndDraw(ctx, formatter, notes, type, position, options) { + var ppt = formatter.pixelsPerTick; + + if (ppt == null) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('BadArguments', 'A valid Formatter must be provide to draw offsets by ticks.'); + } + + var l_shift_px = ppt * options.left_shift_ticks; + var r_shift_px = ppt * options.right_shift_ticks; + var hairpin_options = { + height: options.height, + y_shift: options.y_shift, + left_shift_px: l_shift_px, + right_shift_px: r_shift_px + }; + new StaveHairpin({ + first_note: notes.first_note, + last_note: notes.last_note + }, type).setContext(ctx).setRenderOptions(hairpin_options).setPosition(position).draw(); + } + /** + * Create a new hairpin from the specified notes. + * + * @constructor + * @param {!Object} notes The notes to tie up. + * @param {!Object} type The type of hairpin + */ + + }, { + key: "type", + get: function get() { + return { + CRESC: 1, + DECRESC: 2 + }; + } + }]); + + function StaveHairpin(notes, type) { + var _this; + + _classCallCheck(this, StaveHairpin); + + /** + * Notes is a struct that has: + * + * { + * first_note: Note, + * last_note: Note, + * } + * + **/ + _this = _possibleConstructorReturn(this, _getPrototypeOf(StaveHairpin).call(this)); + + _this.setAttribute('type', 'StaveHairpin'); + + _this.notes = notes; + _this.hairpin = type; + _this.position = _modifier__WEBPACK_IMPORTED_MODULE_2__["Modifier"].Position.BELOW; + _this.render_options = { + height: 10, + y_shift: 0, + // vertical offset + left_shift_px: 0, + // left horizontal offset + right_shift_px: 0 // right horizontal offset + + }; + + _this.setNotes(notes); + + return _this; + } + + _createClass(StaveHairpin, [{ + key: "setPosition", + value: function setPosition(position) { + if (position === _modifier__WEBPACK_IMPORTED_MODULE_2__["Modifier"].Position.ABOVE || position === _modifier__WEBPACK_IMPORTED_MODULE_2__["Modifier"].Position.BELOW) { + this.position = position; + } + + return this; + } + }, { + key: "setRenderOptions", + value: function setRenderOptions(options) { + if (options.height != null && options.y_shift != null && options.left_shift_px != null && options.right_shift_px != null) { + this.render_options = options; + } + + return this; + } + /** + * Set the notes to attach this hairpin to. + * + * @param {!Object} notes The start and end notes. + */ + + }, { + key: "setNotes", + value: function setNotes(notes) { + if (!notes.first_note && !notes.last_note) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('BadArguments', 'Hairpin needs to have either first_note or last_note set.'); + } // Success. Lets grab 'em notes. + + + this.first_note = notes.first_note; + this.last_note = notes.last_note; + return this; + } + }, { + key: "renderHairpin", + value: function renderHairpin(params) { + var ctx = this.checkContext(); + var dis = this.render_options.y_shift + 20; + var y_shift = params.first_y; + + if (this.position === _modifier__WEBPACK_IMPORTED_MODULE_2__["Modifier"].Position.ABOVE) { + dis = -dis + 30; + y_shift = params.first_y - params.staff_height; + } + + var l_shift = this.render_options.left_shift_px; + var r_shift = this.render_options.right_shift_px; + ctx.beginPath(); + + switch (this.hairpin) { + case StaveHairpin.type.CRESC: + ctx.moveTo(params.last_x + r_shift, y_shift + dis); + ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height / 2 + dis); + ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height + dis); + break; + + case StaveHairpin.type.DECRESC: + ctx.moveTo(params.first_x + l_shift, y_shift + dis); + ctx.lineTo(params.last_x + r_shift, y_shift + this.render_options.height / 2 + dis); + ctx.lineTo(params.first_x + l_shift, y_shift + this.render_options.height + dis); + break; + + default: + // Default is NONE, so nothing to draw + break; + } + + ctx.stroke(); + ctx.closePath(); + } + }, { + key: "draw", + value: function draw() { + this.checkContext(); + this.setRendered(); + var firstNote = this.first_note; + var lastNote = this.last_note; + var start = firstNote.getModifierStartXY(this.position, 0); + var end = lastNote.getModifierStartXY(this.position, 0); + this.renderHairpin({ + first_x: start.x, + last_x: end.x, + first_y: firstNote.getStave().y + firstNote.getStave().height, + last_y: lastNote.getStave().y + lastNote.getStave().height, + staff_height: firstNote.getStave().height + }); + return true; + } + }]); + + return StaveHairpin; +}(_element__WEBPACK_IMPORTED_MODULE_1__["Element"]); + +/***/ }), + +/***/ "./src/staveline.js": +/*!**************************!*\ + !*** ./src/staveline.js ***! + \**************************/ +/*! exports provided: StaveLine */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StaveLine", function() { return StaveLine; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element */ "./src/element.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// This file implements `StaveLine` which are simply lines that connect +// two notes. This object is highly configurable, see the `render_options`. +// A simple line is often used for notating glissando articulations, but you +// can format a `StaveLine` with arrows or colors for more pedagogical +// purposes, such as diagrams. + + + // Attribution: Arrow rendering implementations based off of +// Patrick Horgan's article, "Drawing lines and arcs with +// arrow heads on HTML5 Canvas" +// +// Draw an arrow head that connects between 3 coordinates + +function drawArrowHead(ctx, x0, y0, x1, y1, x2, y2) { + // all cases do this. + ctx.beginPath(); + ctx.moveTo(x0, y0); + ctx.lineTo(x1, y1); + ctx.lineTo(x2, y2); + ctx.lineTo(x0, y0); + ctx.closePath(); + ctx.fill(); +} // Helper function to draw a line with arrow heads + + +function drawArrowLine(ctx, point1, point2, config) { + var both_arrows = config.draw_start_arrow && config.draw_end_arrow; + var x1 = point1.x; + var y1 = point1.y; + var x2 = point2.x; + var y2 = point2.y; // For ends with arrow we actually want to stop before we get to the arrow + // so that wide lines won't put a flat end on the arrow. + + var distance = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)); + var ratio = (distance - config.arrowhead_length / 3) / distance; + var end_x; + var end_y; + var start_x; + var start_y; + + if (config.draw_end_arrow || both_arrows) { + end_x = Math.round(x1 + (x2 - x1) * ratio); + end_y = Math.round(y1 + (y2 - y1) * ratio); + } else { + end_x = x2; + end_y = y2; + } + + if (config.draw_start_arrow || both_arrows) { + start_x = x1 + (x2 - x1) * (1 - ratio); + start_y = y1 + (y2 - y1) * (1 - ratio); + } else { + start_x = x1; + start_y = y1; + } + + if (config.color) { + ctx.setStrokeStyle(config.color); + ctx.setFillStyle(config.color); + } // Draw the shaft of the arrow + + + ctx.beginPath(); + ctx.moveTo(start_x, start_y); + ctx.lineTo(end_x, end_y); + ctx.stroke(); + ctx.closePath(); // calculate the angle of the line + + var line_angle = Math.atan2(y2 - y1, x2 - x1); // h is the line length of a side of the arrow head + + var h = Math.abs(config.arrowhead_length / Math.cos(config.arrowhead_angle)); + var angle1; + var angle2; + var top_x; + var top_y; + var bottom_x; + var bottom_y; + + if (config.draw_end_arrow || both_arrows) { + angle1 = line_angle + Math.PI + config.arrowhead_angle; + top_x = x2 + Math.cos(angle1) * h; + top_y = y2 + Math.sin(angle1) * h; + angle2 = line_angle + Math.PI - config.arrowhead_angle; + bottom_x = x2 + Math.cos(angle2) * h; + bottom_y = y2 + Math.sin(angle2) * h; + drawArrowHead(ctx, top_x, top_y, x2, y2, bottom_x, bottom_y); + } + + if (config.draw_start_arrow || both_arrows) { + angle1 = line_angle + config.arrowhead_angle; + top_x = x1 + Math.cos(angle1) * h; + top_y = y1 + Math.sin(angle1) * h; + angle2 = line_angle - config.arrowhead_angle; + bottom_x = x1 + Math.cos(angle2) * h; + bottom_y = y1 + Math.sin(angle2) * h; + drawArrowHead(ctx, top_x, top_y, x1, y1, bottom_x, bottom_y); + } +} + +var StaveLine = +/*#__PURE__*/ +function (_Element) { + _inherits(StaveLine, _Element); + + _createClass(StaveLine, null, [{ + key: "TextVerticalPosition", + // Text Positioning + get: function get() { + return { + TOP: 1, + BOTTOM: 2 + }; + } + }, { + key: "TextJustification", + get: function get() { + return { + LEFT: 1, + CENTER: 2, + RIGHT: 3 + }; + } // Initialize the StaveLine with the given `notes`. + // + // `notes` is a struct that has: + // + // ``` + // { + // first_note: Note, + // last_note: Note, + // first_indices: [n1, n2, n3], + // last_indices: [n1, n2, n3] + // } + // ``` + + }]); + + function StaveLine(notes) { + var _this; + + _classCallCheck(this, StaveLine); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(StaveLine).call(this)); + + _this.setAttribute('type', 'StaveLine'); + + _this.notes = notes; + _this.text = ''; + _this.font = { + family: 'Arial', + size: 10, + weight: '' + }; + _this.render_options = { + // Space to add to the left or the right + padding_left: 4, + padding_right: 3, + // The width of the line in pixels + line_width: 1, + // An array of line/space lengths. Unsupported with Raphael (SVG) + line_dash: null, + // Can draw rounded line end, instead of a square. Unsupported with Raphael (SVG) + rounded_end: true, + // The color of the line and arrowheads + color: null, + // Flags to draw arrows on each end of the line + draw_start_arrow: false, + draw_end_arrow: false, + // The length of the arrowhead sides + arrowhead_length: 10, + // The angle of the arrowhead + arrowhead_angle: Math.PI / 8, + // The position of the text + text_position_vertical: StaveLine.TextVerticalPosition.TOP, + text_justification: StaveLine.TextJustification.CENTER + }; + + _this.setNotes(notes); + + return _this; + } // Set the font for the `StaveLine` text + + + _createClass(StaveLine, [{ + key: "setFont", + value: function setFont(font) { + this.font = font; + return this; + } // The the annotation for the `StaveLine` + + }, { + key: "setText", + value: function setText(text) { + this.text = text; + return this; + } // Set the notes for the `StaveLine` + + }, { + key: "setNotes", + value: function setNotes(notes) { + if (!notes.first_note && !notes.last_note) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('BadArguments', 'Notes needs to have either first_note or last_note set.'); + } + + if (!notes.first_indices) notes.first_indices = [0]; + if (!notes.last_indices) notes.last_indices = [0]; + + if (notes.first_indices.length !== notes.last_indices.length) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('BadArguments', 'Connected notes must have similar index sizes'); + } // Success. Lets grab 'em notes. + + + this.first_note = notes.first_note; + this.first_indices = notes.first_indices; + this.last_note = notes.last_note; + this.last_indices = notes.last_indices; + return this; + } // Apply the style of the `StaveLine` to the context + + }, { + key: "applyLineStyle", + value: function applyLineStyle() { + var ctx = this.checkContext(); + var render_options = this.render_options; + + if (render_options.line_dash) { + ctx.setLineDash(render_options.line_dash); + } + + if (render_options.line_width) { + ctx.setLineWidth(render_options.line_width); + } + + if (render_options.rounded_end) { + ctx.setLineCap('round'); + } else { + ctx.setLineCap('square'); + } + } // Apply the text styling to the context + + }, { + key: "applyFontStyle", + value: function applyFontStyle() { + var ctx = this.checkContext(); + + if (this.font) { + ctx.setFont(this.font.family, this.font.size, this.font.weight); + } + + if (this.render_options.color) { + ctx.setStrokeStyle(this.render_options.color); + ctx.setFillStyle(this.render_options.color); + } + } // Renders the `StaveLine` on the context + + }, { + key: "draw", + value: function draw() { + var _this2 = this; + + var ctx = this.checkContext(); + this.setRendered(); + var first_note = this.first_note; + var last_note = this.last_note; + var render_options = this.render_options; + ctx.save(); + this.applyLineStyle(); // Cycle through each set of indices and draw lines + + var start_position; + var end_position; + this.first_indices.forEach(function (first_index, i) { + var last_index = _this2.last_indices[i]; // Get initial coordinates for the start/end of the line + + start_position = first_note.getModifierStartXY(2, first_index); + end_position = last_note.getModifierStartXY(1, last_index); + var upwards_slope = start_position.y > end_position.y; // Adjust `x` coordinates for modifiers + + start_position.x += first_note.getMetrics().modRightPx + render_options.padding_left; + end_position.x -= last_note.getMetrics().modLeftPx + render_options.padding_right; // Adjust first `x` coordinates for displacements + + var notehead_width = first_note.getGlyph().getWidth(); + var first_displaced = first_note.getKeyProps()[first_index].displaced; + + if (first_displaced && first_note.getStemDirection() === 1) { + start_position.x += notehead_width + render_options.padding_left; + } // Adjust last `x` coordinates for displacements + + + var last_displaced = last_note.getKeyProps()[last_index].displaced; + + if (last_displaced && last_note.getStemDirection() === -1) { + end_position.x -= notehead_width + render_options.padding_right; + } // Adjust y position better if it's not coming from the center of the note + + + start_position.y += upwards_slope ? -3 : 1; + end_position.y += upwards_slope ? 2 : 0; + drawArrowLine(ctx, start_position, end_position, _this2.render_options); + }); + ctx.restore(); // Determine the x coordinate where to start the text + + var text_width = ctx.measureText(this.text).width; + var justification = render_options.text_justification; + var x = 0; + + if (justification === StaveLine.TextJustification.LEFT) { + x = start_position.x; + } else if (justification === StaveLine.TextJustification.CENTER) { + var delta_x = end_position.x - start_position.x; + var center_x = delta_x / 2 + start_position.x; + x = center_x - text_width / 2; + } else if (justification === StaveLine.TextJustification.RIGHT) { + x = end_position.x - text_width; + } // Determine the y value to start the text + + + var y; + var vertical_position = render_options.text_position_vertical; + + if (vertical_position === StaveLine.TextVerticalPosition.TOP) { + y = first_note.getStave().getYForTopText(); + } else if (vertical_position === StaveLine.TextVerticalPosition.BOTTOM) { + y = first_note.getStave().getYForBottomText(_tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].TEXT_HEIGHT_OFFSET_HACK); + } // Draw the text + + + ctx.save(); + this.applyFontStyle(); + ctx.fillText(this.text, x, y); + ctx.restore(); + return this; + } + }]); + + return StaveLine; +}(_element__WEBPACK_IMPORTED_MODULE_1__["Element"]); + +/***/ }), + +/***/ "./src/stavemodifier.js": +/*!******************************!*\ + !*** ./src/stavemodifier.js ***! + \******************************/ +/*! exports provided: StaveModifier */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StaveModifier", function() { return StaveModifier; }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// A base class for stave modifiers (e.g. clefs, key signatures) + +var StaveModifier = +/*#__PURE__*/ +function (_Element) { + _inherits(StaveModifier, _Element); + + _createClass(StaveModifier, null, [{ + key: "Position", + get: function get() { + return { + LEFT: 1, + RIGHT: 2, + ABOVE: 3, + BELOW: 4, + BEGIN: 5, + END: 6 + }; + } + }]); + + function StaveModifier() { + var _this; + + _classCallCheck(this, StaveModifier); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(StaveModifier).call(this)); + + _this.setAttribute('type', 'StaveModifier'); + + _this.padding = 10; + _this.position = StaveModifier.Position.ABOVE; + _this.layoutMetrics = null; + return _this; + } + + _createClass(StaveModifier, [{ + key: "getPosition", + value: function getPosition() { + return this.position; + } + }, { + key: "setPosition", + value: function setPosition(position) { + this.position = position; + return this; + } + }, { + key: "getStave", + value: function getStave() { + return this.stave; + } + }, { + key: "setStave", + value: function setStave(stave) { + this.stave = stave; + return this; + } + }, { + key: "getWidth", + value: function getWidth() { + return this.width; + } + }, { + key: "setWidth", + value: function setWidth(width) { + this.width = width; + return this; + } + }, { + key: "getX", + value: function getX() { + return this.x; + } + }, { + key: "setX", + value: function setX(x) { + this.x = x; + return this; + } + }, { + key: "getCategory", + value: function getCategory() { + return ''; + } + }, { + key: "makeSpacer", + value: function makeSpacer(padding) { + // TODO(0xfe): Return an instance of type `Spacer` based on `GhostNote` + // instead of this hack. + return { + getContext: function getContext() { + return true; + }, + setStave: function setStave() {}, + renderToStave: function renderToStave() {}, + getMetrics: function getMetrics() { + return { + width: padding + }; + } + }; + } + }, { + key: "placeGlyphOnLine", + value: function placeGlyphOnLine(glyph, stave, line) { + var customShift = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0; + glyph.setYShift(stave.getYForLine(line) - stave.getYForGlyphs() + customShift); + } + }, { + key: "getPadding", + value: function getPadding(index) { + return index !== undefined && index < 2 ? 0 : this.padding; + } + }, { + key: "setPadding", + value: function setPadding(padding) { + this.padding = padding; + return this; + } + }, { + key: "setLayoutMetrics", + value: function setLayoutMetrics(layoutMetrics) { + this.layoutMetrics = layoutMetrics; + return this; + } + }, { + key: "getLayoutMetrics", + value: function getLayoutMetrics() { + return this.layoutMetrics; + } + }]); + + return StaveModifier; +}(_element__WEBPACK_IMPORTED_MODULE_0__["Element"]); + +/***/ }), + +/***/ "./src/stavenote.js": +/*!**************************!*\ + !*** ./src/stavenote.js ***! + \**************************/ +/*! exports provided: StaveNote */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StaveNote", function() { return StaveNote; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _boundingbox__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./boundingbox */ "./src/boundingbox.js"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stem */ "./src/stem.js"); +/* harmony import */ var _notehead__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./notehead */ "./src/notehead.js"); +/* harmony import */ var _stemmablenote__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./stemmablenote */ "./src/stemmablenote.js"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modifier */ "./src/modifier.js"); +/* harmony import */ var _dot__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./dot */ "./src/dot.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// This file implements notes for standard notation. This consists of one or +// more `NoteHeads`, an optional stem, and an optional flag. +// +// *Throughout these comments, a "note" refers to the entire `StaveNote`, +// and a "key" refers to a specific pitch/notehead within a note.* +// +// See `tests/stavenote_tests.js` for usage examples. + + + + + + + + // To enable logging for this class. Set `Vex.Flow.StaveNote.DEBUG` to `true`. + +function L() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (StaveNote.DEBUG) _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].L('Vex.Flow.StaveNote', args); +} + +var getStemAdjustment = function getStemAdjustment(note) { + return _stem__WEBPACK_IMPORTED_MODULE_3__["Stem"].WIDTH / (2 * -note.getStemDirection()); +}; + +var isInnerNoteIndex = function isInnerNoteIndex(note, index) { + return index === (note.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_3__["Stem"].UP ? note.keyProps.length - 1 : 0); +}; // Helper methods for rest positioning in ModifierContext. + + +function shiftRestVertical(rest, note, dir) { + var delta = (note.isrest ? 0.0 : 1.0) * dir; + rest.line += delta; + rest.maxLine += delta; + rest.minLine += delta; + rest.note.setKeyLine(0, rest.note.getKeyLine(0) + delta); +} // Called from formatNotes :: center a rest between two notes + + +function centerRest(rest, noteU, noteL) { + var delta = rest.line - _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].MidLine(noteU.minLine, noteL.maxLine); + rest.note.setKeyLine(0, rest.note.getKeyLine(0) - delta); + rest.line -= delta; + rest.maxLine -= delta; + rest.minLine -= delta; +} + +var StaveNote = +/*#__PURE__*/ +function (_StemmableNote) { + _inherits(StaveNote, _StemmableNote); + + _createClass(StaveNote, null, [{ + key: "format", + // ## Static Methods + // + // Format notes inside a ModifierContext. + value: function format(notes, state) { + if (!notes || notes.length < 2) return false; // FIXME: VexFlow will soon require that a stave be set before formatting. + // Which, according to the below condition, means that following branch will + // always be taken and the rest of this function is dead code. + // + // Problematically, `Formatter#formatByY` was not designed to work for more + // than 2 voices (although, doesn't throw on this condition, just tries + // to power through). + // + // Based on the above: + // * 2 voices can be formatted *with or without* a stave being set but + // the output will be different + // * 3 voices can only be formatted *without* a stave + + if (notes[0].getStave()) { + return StaveNote.formatByY(notes, state); + } + + var notesList = []; + + for (var i = 0; i < notes.length; i++) { + var props = notes[i].getKeyProps(); + var line = props[0].line; + var minL = props[props.length - 1].line; + var stemDirection = notes[i].getStemDirection(); + var stemMax = notes[i].getStemLength() / 10; + var stemMin = notes[i].getStemMinumumLength() / 10; + var maxL = void 0; + + if (notes[i].isRest()) { + maxL = line + notes[i].glyph.line_above; + minL = line - notes[i].glyph.line_below; + } else { + maxL = stemDirection === 1 ? props[props.length - 1].line + stemMax : props[props.length - 1].line; + minL = stemDirection === 1 ? props[0].line : props[0].line - stemMax; + } + + notesList.push({ + line: props[0].line, + // note/rest base line + maxLine: maxL, + // note/rest upper bounds line + minLine: minL, + // note/rest lower bounds line + isrest: notes[i].isRest(), + stemDirection: stemDirection, + stemMax: stemMax, + // Maximum (default) note stem length; + stemMin: stemMin, + // minimum note stem length + voice_shift: notes[i].getVoiceShiftWidth(), + is_displaced: notes[i].isDisplaced(), + // note manually displaced + note: notes[i] + }); + } + + var voices = notesList.length; + var noteU = notesList[0]; + var noteM = voices > 2 ? notesList[1] : null; + var noteL = voices > 2 ? notesList[2] : notesList[1]; // for two voice backward compatibility, ensure upper voice is stems up + // for three voices, the voices must be in order (upper, middle, lower) + + if (voices === 2 && noteU.stemDirection === -1 && noteL.stemDirection === 1) { + noteU = notesList[1]; + noteL = notesList[0]; + } + + var voiceXShift = Math.max(noteU.voice_shift, noteL.voice_shift); + var xShift = 0; + var stemDelta; // Test for two voice note intersection + + if (voices === 2) { + var lineSpacing = noteU.stemDirection === noteL.stemDirection ? 0.0 : 0.5; // if top voice is a middle voice, check stem intersection with lower voice + + if (noteU.stemDirection === noteL.stemDirection && noteU.minLine <= noteL.maxLine) { + if (!noteU.isrest) { + stemDelta = Math.abs(noteU.line - (noteL.maxLine + 0.5)); + stemDelta = Math.max(stemDelta, noteU.stemMin); + noteU.minLine = noteU.line - stemDelta; + noteU.note.setStemLength(stemDelta * 10); + } + } + + if (noteU.minLine <= noteL.maxLine + lineSpacing) { + if (noteU.isrest) { + // shift rest up + shiftRestVertical(noteU, noteL, 1); + } else if (noteL.isrest) { + // shift rest down + shiftRestVertical(noteL, noteU, -1); + } else { + xShift = voiceXShift; + + if (noteU.stemDirection === noteL.stemDirection) { + // upper voice is middle voice, so shift it right + noteU.note.setXShift(xShift + 3); + } else { + // shift lower voice right + noteL.note.setXShift(xShift); + } + } + } // format complete + + + return true; + } // Check middle voice stem intersection with lower voice + + + if (noteM !== null && noteM.minLine < noteL.maxLine + 0.5) { + if (!noteM.isrest) { + stemDelta = Math.abs(noteM.line - (noteL.maxLine + 0.5)); + stemDelta = Math.max(stemDelta, noteM.stemMin); + noteM.minLine = noteM.line - stemDelta; + noteM.note.setStemLength(stemDelta * 10); + } + } // For three voices, test if rests can be repositioned + // + // Special case 1 :: middle voice rest between two notes + // + + + if (noteM.isrest && !noteU.isrest && !noteL.isrest) { + if (noteU.minLine <= noteM.maxLine || noteM.minLine <= noteL.maxLine) { + var restHeight = noteM.maxLine - noteM.minLine; + var space = noteU.minLine - noteL.maxLine; + + if (restHeight < space) { + // center middle voice rest between the upper and lower voices + centerRest(noteM, noteU, noteL); + } else { + xShift = voiceXShift + 3; // shift middle rest right + + noteM.note.setXShift(xShift); + } // format complete + + + return true; + } + } // Special case 2 :: all voices are rests + + + if (noteU.isrest && noteM.isrest && noteL.isrest) { + // Shift upper voice rest up + shiftRestVertical(noteU, noteM, 1); // Shift lower voice rest down + + shiftRestVertical(noteL, noteM, -1); // format complete + + return true; + } // Test if any other rests can be repositioned + + + if (noteM.isrest && noteU.isrest && noteM.minLine <= noteL.maxLine) { + // Shift middle voice rest up + shiftRestVertical(noteM, noteL, 1); + } + + if (noteM.isrest && noteL.isrest && noteU.minLine <= noteM.maxLine) { + // Shift middle voice rest down + shiftRestVertical(noteM, noteU, -1); + } + + if (noteU.isrest && noteU.minLine <= noteM.maxLine) { + // shift upper voice rest up; + shiftRestVertical(noteU, noteM, 1); + } + + if (noteL.isrest && noteM.minLine <= noteL.maxLine) { + // shift lower voice rest down + shiftRestVertical(noteL, noteM, -1); + } // If middle voice intersects upper or lower voice + + + if (!noteU.isrest && !noteM.isrest && noteU.minLine <= noteM.maxLine + 0.5 || !noteM.isrest && !noteL.isrest && noteM.minLine <= noteL.maxLine) { + xShift = voiceXShift + 3; // shift middle note right + + noteM.note.setXShift(xShift); + } + + return true; + } + }, { + key: "formatByY", + value: function formatByY(notes, state) { + // NOTE: this function does not support more than two voices per stave + // use with care. + var hasStave = true; + + for (var i = 0; i < notes.length; i++) { + hasStave = hasStave && notes[i].getStave() != null; + } + + if (!hasStave) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('Stave Missing', 'All notes must have a stave - Vex.Flow.ModifierContext.formatMultiVoice!'); + } + + var xShift = 0; + + for (var _i = 0; _i < notes.length - 1; _i++) { + var topNote = notes[_i]; + var bottomNote = notes[_i + 1]; + + if (topNote.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_3__["Stem"].DOWN) { + topNote = notes[_i + 1]; + bottomNote = notes[_i]; + } + + var topKeys = topNote.getKeyProps(); + var bottomKeys = bottomNote.getKeyProps(); + var HALF_NOTEHEAD_HEIGHT = 0.5; // `keyProps` and `stave.getYForLine` have different notions of a `line` + // so we have to convert the keyProps value by subtracting 5. + // See https://github.com/0xfe/vexflow/wiki/Development-Gotchas + // + // We also extend the y for each note by a half notehead because the + // notehead's origin is centered + + var topNoteBottomY = topNote.getStave().getYForLine(5 - topKeys[0].line + HALF_NOTEHEAD_HEIGHT); + var bottomNoteTopY = bottomNote.getStave().getYForLine(5 - bottomKeys[bottomKeys.length - 1].line - HALF_NOTEHEAD_HEIGHT); + var areNotesColliding = bottomNoteTopY - topNoteBottomY < 0; + + if (areNotesColliding) { + xShift = topNote.getVoiceShiftWidth() + 2; + bottomNote.setXShift(xShift); + } + } + + state.right_shift += xShift; + } + }, { + key: "postFormat", + value: function postFormat(notes) { + if (!notes) return false; + notes.forEach(function (note) { + return note.postFormat(); + }); + return true; + } + }, { + key: "CATEGORY", + get: function get() { + return 'stavenotes'; + } + }, { + key: "STEM_UP", + get: function get() { + return _stem__WEBPACK_IMPORTED_MODULE_3__["Stem"].UP; + } + }, { + key: "STEM_DOWN", + get: function get() { + return _stem__WEBPACK_IMPORTED_MODULE_3__["Stem"].DOWN; + } + }, { + key: "DEFAULT_LEDGER_LINE_OFFSET", + get: function get() { + return 3; + } + }]); + + function StaveNote(noteStruct) { + var _this; + + _classCallCheck(this, StaveNote); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(StaveNote).call(this, noteStruct)); + + _this.setAttribute('type', 'StaveNote'); + + _this.keys = noteStruct.keys; + _this.clef = noteStruct.clef; + _this.octave_shift = noteStruct.octave_shift; + _this.beam = null; // Pull note rendering properties + + _this.glyph = _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].getGlyphProps(_this.duration, _this.noteType); + + if (!_this.glyph) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('BadArguments', "Invalid note initialization data (No glyph found): ".concat(JSON.stringify(noteStruct))); + } // if true, displace note to right + + + _this.displaced = false; + _this.dot_shiftY = 0; // per-pitch properties + + _this.keyProps = []; // for displaced ledger lines + + _this.use_default_head_x = false; // Drawing + + _this.note_heads = []; + _this.modifiers = []; + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(_this.render_options, { + // font size for note heads and rests + glyph_font_scale: noteStruct.glyph_font_scale || _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].DEFAULT_NOTATION_FONT_SCALE, + // number of stroke px to the left and right of head + stroke_px: noteStruct.stroke_px || StaveNote.DEFAULT_LEDGER_LINE_OFFSET + }); + + _this.calculateKeyProps(); + + _this.buildStem(); // Set the stem direction + + + if (noteStruct.auto_stem) { + _this.autoStem(); + } else { + _this.setStemDirection(noteStruct.stem_direction); + } + + _this.reset(); + + _this.buildFlag(); + + return _this; + } + + _createClass(StaveNote, [{ + key: "reset", + value: function reset() { + var _this2 = this; + + _get(_getPrototypeOf(StaveNote.prototype), "reset", this).call(this); // Save prior noteHead styles & reapply them after making new noteheads. + + + var noteHeadStyles = this.note_heads.map(function (noteHead) { + return noteHead.getStyle(); + }); + this.buildNoteHeads(); + this.note_heads.forEach(function (noteHead, index) { + return noteHead.setStyle(noteHeadStyles[index]); + }); + + if (this.stave) { + this.note_heads.forEach(function (head) { + return head.setStave(_this2.stave); + }); + } + + this.calcNoteDisplacements(); + } + }, { + key: "setBeam", + value: function setBeam(beam) { + this.beam = beam; + this.calcNoteDisplacements(); + return this; + } + }, { + key: "getCategory", + value: function getCategory() { + return StaveNote.CATEGORY; + } // Builds a `Stem` for the note + + }, { + key: "buildStem", + value: function buildStem() { + this.setStem(new _stem__WEBPACK_IMPORTED_MODULE_3__["Stem"]({ + hide: !!this.isRest() + })); + } // Builds a `NoteHead` for each key in the note + + }, { + key: "buildNoteHeads", + value: function buildNoteHeads() { + this.note_heads = []; + var stemDirection = this.getStemDirection(); + var keys = this.getKeys(); + var lastLine = null; + var lineDiff = null; + var displaced = false; // Draw notes from bottom to top. + // For down-stem notes, we draw from top to bottom. + + var start; + var end; + var step; + + if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_3__["Stem"].UP) { + start = 0; + end = keys.length; + step = 1; + } else if (stemDirection === _stem__WEBPACK_IMPORTED_MODULE_3__["Stem"].DOWN) { + start = keys.length - 1; + end = -1; + step = -1; + } + + for (var i = start; i !== end; i += step) { + var noteProps = this.keyProps[i]; + var line = noteProps.line; // Keep track of last line with a note head, so that consecutive heads + // are correctly displaced. + + if (lastLine === null) { + lastLine = line; + } else { + lineDiff = Math.abs(lastLine - line); + + if (lineDiff === 0 || lineDiff === 0.5) { + displaced = !displaced; + } else { + displaced = false; + this.use_default_head_x = true; + } + } + + lastLine = line; + var notehead = new _notehead__WEBPACK_IMPORTED_MODULE_4__["NoteHead"]({ + duration: this.duration, + note_type: this.noteType, + displaced: displaced, + stem_direction: stemDirection, + custom_glyph_code: noteProps.code, + glyph_font_scale: this.render_options.glyph_font_scale, + x_shift: noteProps.shift_right, + stem_up_x_offset: noteProps.stem_up_x_offset, + stem_down_x_offset: noteProps.stem_down_x_offset, + line: noteProps.line + }); + this.note_heads[i] = notehead; + } + } // Automatically sets the stem direction based on the keys in the note + + }, { + key: "autoStem", + value: function autoStem() { + // Figure out optimal stem direction based on given notes + this.minLine = this.keyProps[0].line; + this.maxLine = this.keyProps[this.keyProps.length - 1].line; + var MIDDLE_LINE = 3; + var decider = (this.minLine + this.maxLine) / 2; + var stemDirection = decider < MIDDLE_LINE ? _stem__WEBPACK_IMPORTED_MODULE_3__["Stem"].UP : _stem__WEBPACK_IMPORTED_MODULE_3__["Stem"].DOWN; + this.setStemDirection(stemDirection); + } // Calculates and stores the properties for each key in the note + + }, { + key: "calculateKeyProps", + value: function calculateKeyProps() { + var lastLine = null; + + for (var i = 0; i < this.keys.length; ++i) { + var key = this.keys[i]; // All rests use the same position on the line. + // if (this.glyph.rest) key = this.glyph.position; + + if (this.glyph.rest) this.glyph.position = key; + var options = { + octave_shift: this.octave_shift || 0 + }; + var props = _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].keyProperties(key, this.clef, options); + + if (!props) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('BadArguments', "Invalid key for note properties: ".concat(key)); + } // Override line placement for default rests + + + if (props.key === 'R') { + if (this.duration === '1' || this.duration === 'w') { + props.line = 4; + } else { + props.line = 3; + } + } // Calculate displacement of this note + + + var line = props.line; + + if (lastLine === null) { + lastLine = line; + } else { + if (Math.abs(lastLine - line) === 0.5) { + this.displaced = true; + props.displaced = true; // Have to mark the previous note as + // displaced as well, for modifier placement + + if (this.keyProps.length > 0) { + this.keyProps[i - 1].displaced = true; + } + } + } + + lastLine = line; + this.keyProps.push(props); + } // Sort the notes from lowest line to highest line + + + lastLine = -Infinity; + this.keyProps.forEach(function (key) { + if (key.line < lastLine) { + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].W('Unsorted keys in note will be sorted. ' + 'See https://github.com/0xfe/vexflow/issues/104 for details.'); + } + + lastLine = key.line; + }); + this.keyProps.sort(function (a, b) { + return a.line - b.line; + }); + } // Get the `BoundingBox` for the entire note + + }, { + key: "getBoundingBox", + value: function getBoundingBox() { + if (!this.preFormatted) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('UnformattedNote', "Can't call getBoundingBox on an unformatted note."); + } + + var _this$getMetrics = this.getMetrics(), + w = _this$getMetrics.width, + modLeftPx = _this$getMetrics.modLeftPx, + leftDisplacedHeadPx = _this$getMetrics.leftDisplacedHeadPx; + + var x = this.getAbsoluteX() - modLeftPx - leftDisplacedHeadPx; + var minY = 0; + var maxY = 0; + var halfLineSpacing = this.getStave().getSpacingBetweenLines() / 2; + var lineSpacing = halfLineSpacing * 2; + + if (this.isRest()) { + var y = this.ys[0]; + var frac = _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].durationToFraction(this.duration); + + if (frac.equals(1) || frac.equals(2)) { + minY = y - halfLineSpacing; + maxY = y + halfLineSpacing; + } else { + minY = y - this.glyph.line_above * lineSpacing; + maxY = y + this.glyph.line_below * lineSpacing; + } + } else if (this.glyph.stem) { + var ys = this.getStemExtents(); + ys.baseY += halfLineSpacing * this.stem_direction; + minY = Math.min(ys.topY, ys.baseY); + maxY = Math.max(ys.topY, ys.baseY); + } else { + minY = null; + maxY = null; + + for (var i = 0; i < this.ys.length; ++i) { + var yy = this.ys[i]; + + if (i === 0) { + minY = yy; + maxY = yy; + } else { + minY = Math.min(yy, minY); + maxY = Math.max(yy, maxY); + } + } + + minY -= halfLineSpacing; + maxY += halfLineSpacing; + } + + return new _boundingbox__WEBPACK_IMPORTED_MODULE_2__["BoundingBox"](x, minY, w, maxY - minY); + } // Gets the line number of the top or bottom note in the chord. + // If `isTopNote` is `true` then get the top note + + }, { + key: "getLineNumber", + value: function getLineNumber(isTopNote) { + if (!this.keyProps.length) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoKeyProps', "Can't get bottom note line, because note is not initialized properly."); + } + + var resultLine = this.keyProps[0].line; // No precondition assumed for sortedness of keyProps array + + for (var i = 0; i < this.keyProps.length; i++) { + var thisLine = this.keyProps[i].line; + + if (isTopNote) { + if (thisLine > resultLine) resultLine = thisLine; + } else { + if (thisLine < resultLine) resultLine = thisLine; + } + } + + return resultLine; + } // Determine if current note is a rest + + }, { + key: "isRest", + value: function isRest() { + return this.glyph.rest; + } // Determine if the current note is a chord + + }, { + key: "isChord", + value: function isChord() { + return !this.isRest() && this.keys.length > 1; + } // Determine if the `StaveNote` has a stem + + }, { + key: "hasStem", + value: function hasStem() { + return this.glyph.stem; + } + }, { + key: "hasFlag", + value: function hasFlag() { + return _get(_getPrototypeOf(StaveNote.prototype), "hasFlag", this).call(this) && !this.isRest(); + } + }, { + key: "getStemX", + value: function getStemX() { + if (this.noteType === 'r') { + return this.getCenterGlyphX(); + } else { + // We adjust the origin of the stem because we want the stem left-aligned + // with the notehead if stemmed-down, and right-aligned if stemmed-up + return _get(_getPrototypeOf(StaveNote.prototype), "getStemX", this).call(this) + getStemAdjustment(this); + } + } // Get the `y` coordinate for text placed on the top/bottom of a + // note at a desired `text_line` + + }, { + key: "getYForTopText", + value: function getYForTopText(textLine) { + var extents = this.getStemExtents(); + return Math.min(this.stave.getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1)); + } + }, { + key: "getYForBottomText", + value: function getYForBottomText(textLine) { + var extents = this.getStemExtents(); + return Math.max(this.stave.getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine); + } // Sets the current note to the provided `stave`. This applies + // `y` values to the `NoteHeads`. + + }, { + key: "setStave", + value: function setStave(stave) { + _get(_getPrototypeOf(StaveNote.prototype), "setStave", this).call(this, stave); + + var ys = this.note_heads.map(function (notehead) { + notehead.setStave(stave); + return notehead.getY(); + }); + this.setYs(ys); + + if (this.stem) { + var _this$getNoteHeadBoun = this.getNoteHeadBounds(), + y_top = _this$getNoteHeadBoun.y_top, + y_bottom = _this$getNoteHeadBoun.y_bottom; + + this.stem.setYBounds(y_top, y_bottom); + } + + return this; + } // Get the pitches in the note + + }, { + key: "getKeys", + value: function getKeys() { + return this.keys; + } // Get the properties for all the keys in the note + + }, { + key: "getKeyProps", + value: function getKeyProps() { + return this.keyProps; + } // Check if note is shifted to the right + + }, { + key: "isDisplaced", + value: function isDisplaced() { + return this.displaced; + } // Sets whether shift note to the right. `displaced` is a `boolean` + + }, { + key: "setNoteDisplaced", + value: function setNoteDisplaced(displaced) { + this.displaced = displaced; + return this; + } // Get the starting `x` coordinate for a `StaveTie` + + }, { + key: "getTieRightX", + value: function getTieRightX() { + var tieStartX = this.getAbsoluteX(); + tieStartX += this.getGlyphWidth() + this.x_shift + this.rightDisplacedHeadPx; + if (this.modifierContext) tieStartX += this.modifierContext.getRightShift(); + return tieStartX; + } // Get the ending `x` coordinate for a `StaveTie` + + }, { + key: "getTieLeftX", + value: function getTieLeftX() { + var tieEndX = this.getAbsoluteX(); + tieEndX += this.x_shift - this.leftDisplacedHeadPx; + return tieEndX; + } // Get the stave line on which to place a rest + + }, { + key: "getLineForRest", + value: function getLineForRest() { + var restLine = this.keyProps[0].line; + + if (this.keyProps.length > 1) { + var lastLine = this.keyProps[this.keyProps.length - 1].line; + var top = Math.max(restLine, lastLine); + var bot = Math.min(restLine, lastLine); + restLine = _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].MidLine(top, bot); + } + + return restLine; + } // Get the default `x` and `y` coordinates for the provided `position` + // and key `index` + + }, { + key: "getModifierStartXY", + value: function getModifierStartXY(position, index, options) { + options = options || {}; + + if (!this.preFormatted) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('UnformattedNote', "Can't call GetModifierStartXY on an unformatted note"); + } + + if (this.ys.length === 0) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoYValues', 'No Y-Values calculated for this note.'); + } + + var _Modifier$Position = _modifier__WEBPACK_IMPORTED_MODULE_6__["Modifier"].Position, + ABOVE = _Modifier$Position.ABOVE, + BELOW = _Modifier$Position.BELOW, + LEFT = _Modifier$Position.LEFT, + RIGHT = _Modifier$Position.RIGHT; + var x = 0; + + if (position === LEFT) { + // FIXME: Left modifier padding, move to font file + x = -1 * 2; + } else if (position === RIGHT) { + // FIXME: Right modifier padding, move to font file + x = this.getGlyphWidth() + this.x_shift + 2; + + if (this.stem_direction === _stem__WEBPACK_IMPORTED_MODULE_3__["Stem"].UP && this.hasFlag() && (options.forceFlagRight || isInnerNoteIndex(this, index))) { + x += this.flag.getMetrics().width; + } + } else if (position === BELOW || position === ABOVE) { + x = this.getGlyphWidth() / 2; + } + + return { + x: this.getAbsoluteX() + x, + y: this.ys[index] + }; + } // Sets the style of the complete StaveNote, including all keys + // and the stem. + + }, { + key: "setStyle", + value: function setStyle(style) { + _get(_getPrototypeOf(StaveNote.prototype), "setStyle", this).call(this, style); + + this.note_heads.forEach(function (notehead) { + return notehead.setStyle(style); + }); + this.stem.setStyle(style); + } + }, { + key: "setStemStyle", + value: function setStemStyle(style) { + var stem = this.getStem(); + stem.setStyle(style); + } + }, { + key: "getStemStyle", + value: function getStemStyle() { + return this.stem.getStyle(); + } + }, { + key: "setLedgerLineStyle", + value: function setLedgerLineStyle(style) { + this.ledgerLineStyle = style; + } + }, { + key: "getLedgerLineStyle", + value: function getLedgerLineStyle() { + return this.ledgerLineStyle; + } + }, { + key: "setFlagStyle", + value: function setFlagStyle(style) { + this.flagStyle = style; + } + }, { + key: "getFlagStyle", + value: function getFlagStyle() { + return this.flagStyle; + } // Sets the notehead at `index` to the provided coloring `style`. + // + // `style` is an `object` with the following properties: `shadowColor`, + // `shadowBlur`, `fillStyle`, `strokeStyle` + + }, { + key: "setKeyStyle", + value: function setKeyStyle(index, style) { + this.note_heads[index].setStyle(style); + return this; + } + }, { + key: "setKeyLine", + value: function setKeyLine(index, line) { + this.keyProps[index].line = line; + this.reset(); + return this; + } + }, { + key: "getKeyLine", + value: function getKeyLine(index) { + return this.keyProps[index].line; + } // Add self to modifier context. `mContext` is the `ModifierContext` + // to be added to. + + }, { + key: "addToModifierContext", + value: function addToModifierContext(mContext) { + this.setModifierContext(mContext); + + for (var i = 0; i < this.modifiers.length; ++i) { + this.modifierContext.addModifier(this.modifiers[i]); + } + + this.modifierContext.addModifier(this); + this.setPreFormatted(false); + return this; + } // Generic function to add modifiers to a note + // + // Parameters: + // * `index`: The index of the key that we're modifying + // * `modifier`: The modifier to add + + }, { + key: "addModifier", + value: function addModifier(index, modifier) { + modifier.setNote(this); + modifier.setIndex(index); + this.modifiers.push(modifier); + this.setPreFormatted(false); + return this; + } // Helper function to add an accidental to a key + + }, { + key: "addAccidental", + value: function addAccidental(index, accidental) { + return this.addModifier(index, accidental); + } // Helper function to add an articulation to a key + + }, { + key: "addArticulation", + value: function addArticulation(index, articulation) { + return this.addModifier(index, articulation); + } // Helper function to add an annotation to a key + + }, { + key: "addAnnotation", + value: function addAnnotation(index, annotation) { + return this.addModifier(index, annotation); + } // Helper function to add a dot on a specific key + + }, { + key: "addDot", + value: function addDot(index) { + var dot = new _dot__WEBPACK_IMPORTED_MODULE_7__["Dot"](); + dot.setDotShiftY(this.glyph.dot_shiftY); + this.dots++; + return this.addModifier(index, dot); + } // Convenience method to add dot to all keys in note + + }, { + key: "addDotToAll", + value: function addDotToAll() { + for (var i = 0; i < this.keys.length; ++i) { + this.addDot(i); + } + + return this; + } // Get all accidentals in the `ModifierContext` + + }, { + key: "getAccidentals", + value: function getAccidentals() { + return this.modifierContext.getModifiers('accidentals'); + } // Get all dots in the `ModifierContext` + + }, { + key: "getDots", + value: function getDots() { + return this.modifierContext.getModifiers('dots'); + } // Get the width of the note if it is displaced. Used for `Voice` + // formatting + + }, { + key: "getVoiceShiftWidth", + value: function getVoiceShiftWidth() { + // TODO: may need to accomodate for dot here. + return this.getGlyphWidth() * (this.displaced ? 2 : 1); + } // Calculates and sets the extra pixels to the left or right + // if the note is displaced. + + }, { + key: "calcNoteDisplacements", + value: function calcNoteDisplacements() { + this.setLeftDisplacedHeadPx(this.displaced && this.stem_direction === _stem__WEBPACK_IMPORTED_MODULE_3__["Stem"].DOWN ? this.getGlyphWidth() : 0); // For upstems with flags, the extra space is unnecessary, since it's taken + // up by the flag. + + this.setRightDisplacedHeadPx(!this.hasFlag() && this.displaced && this.stem_direction === _stem__WEBPACK_IMPORTED_MODULE_3__["Stem"].UP ? this.getGlyphWidth() : 0); + } // Pre-render formatting + + }, { + key: "preFormat", + value: function preFormat() { + if (this.preFormatted) return; + if (this.modifierContext) this.modifierContext.preFormat(); + var width = this.getGlyphWidth() + this.leftDisplacedHeadPx + this.rightDisplacedHeadPx; // For upward flagged notes, the width of the flag needs to be added + + if (this.glyph.flag && this.beam === null && this.stem_direction === _stem__WEBPACK_IMPORTED_MODULE_3__["Stem"].UP) { + width += this.getGlyphWidth(); // TODO: Add flag width as a separate metric + } + + this.setWidth(width); + this.setPreFormatted(true); + } + /** + * @typedef {Object} noteHeadBounds + * @property {number} y_top the highest notehead bound + * @property {number} y_bottom the lowest notehead bound + * @property {number|Null} displaced_x the starting x for displaced noteheads + * @property {number|Null} non_displaced_x the starting x for non-displaced noteheads + * @property {number} highest_line the highest notehead line in traditional music line + * numbering (bottom line = 1, top line = 5) + * @property {number} lowest_line the lowest notehead line + * @property {number|false} highest_displaced_line the highest staff line number + * for a displaced notehead + * @property {number|false} lowest_displaced_line + * @property {number} highest_non_displaced_line + * @property {number} lowest_non_displaced_line + */ + + /** + * Get the staff line and y value for the highest & lowest noteheads + * @returns {noteHeadBounds} + */ + + }, { + key: "getNoteHeadBounds", + value: function getNoteHeadBounds() { + // Top and bottom Y values for stem. + var yTop = null; + var yBottom = null; + var nonDisplacedX = null; + var displacedX = null; + var highestLine = this.stave.getNumLines(); + var lowestLine = 1; + var highestDisplacedLine = false; + var lowestDisplacedLine = false; + var highestNonDisplacedLine = highestLine; + var lowestNonDisplacedLine = lowestLine; + this.note_heads.forEach(function (notehead) { + var line = notehead.getLine(); + var y = notehead.getY(); + + if (yTop === null || y < yTop) { + yTop = y; + } + + if (yBottom === null || y > yBottom) { + yBottom = y; + } + + if (displacedX === null && notehead.isDisplaced()) { + displacedX = notehead.getAbsoluteX(); + } + + if (nonDisplacedX === null && !notehead.isDisplaced()) { + nonDisplacedX = notehead.getAbsoluteX(); + } + + highestLine = line > highestLine ? line : highestLine; + lowestLine = line < lowestLine ? line : lowestLine; + + if (notehead.isDisplaced()) { + highestDisplacedLine = highestDisplacedLine === false ? line : Math.max(line, highestDisplacedLine); + lowestDisplacedLine = lowestDisplacedLine === false ? line : Math.min(line, lowestDisplacedLine); + } else { + highestNonDisplacedLine = Math.max(line, highestNonDisplacedLine); + lowestNonDisplacedLine = Math.min(line, lowestNonDisplacedLine); + } + }, this); + return { + y_top: yTop, + y_bottom: yBottom, + displaced_x: displacedX, + non_displaced_x: nonDisplacedX, + highest_line: highestLine, + lowest_line: lowestLine, + highest_displaced_line: highestDisplacedLine, + lowest_displaced_line: lowestDisplacedLine, + highest_non_displaced_line: highestNonDisplacedLine, + lowest_non_displaced_line: lowestNonDisplacedLine + }; + } // Get the starting `x` coordinate for the noteheads + + }, { + key: "getNoteHeadBeginX", + value: function getNoteHeadBeginX() { + return this.getAbsoluteX() + this.x_shift; + } // Get the ending `x` coordinate for the noteheads + + }, { + key: "getNoteHeadEndX", + value: function getNoteHeadEndX() { + var xBegin = this.getNoteHeadBeginX(); + return xBegin + this.getGlyphWidth(); + } // Draw the ledger lines between the stave and the highest/lowest keys + + }, { + key: "drawLedgerLines", + value: function drawLedgerLines() { + var stave = this.stave, + glyph = this.glyph, + stroke_px = this.render_options.stroke_px, + ctx = this.context; + var width = glyph.getWidth() + stroke_px * 2; + var doubleWidth = 2 * (glyph.getWidth() + stroke_px) - _stem__WEBPACK_IMPORTED_MODULE_3__["Stem"].WIDTH / 2; + if (this.isRest()) return; + + if (!ctx) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoCanvasContext', "Can't draw without a canvas context."); + } + + var _this$getNoteHeadBoun2 = this.getNoteHeadBounds(), + highest_line = _this$getNoteHeadBoun2.highest_line, + lowest_line = _this$getNoteHeadBoun2.lowest_line, + highest_displaced_line = _this$getNoteHeadBoun2.highest_displaced_line, + highest_non_displaced_line = _this$getNoteHeadBoun2.highest_non_displaced_line, + lowest_displaced_line = _this$getNoteHeadBoun2.lowest_displaced_line, + lowest_non_displaced_line = _this$getNoteHeadBoun2.lowest_non_displaced_line, + displaced_x = _this$getNoteHeadBoun2.displaced_x, + non_displaced_x = _this$getNoteHeadBoun2.non_displaced_x; + + var min_x = Math.min(displaced_x, non_displaced_x); + + var drawLedgerLine = function drawLedgerLine(y, normal, displaced) { + var x; + if (displaced && normal) x = min_x - stroke_px;else if (normal) x = non_displaced_x - stroke_px;else x = displaced_x - stroke_px; + var ledgerWidth = normal && displaced ? doubleWidth : width; + ctx.beginPath(); + ctx.moveTo(x, y); + ctx.lineTo(x + ledgerWidth, y); + ctx.stroke(); + }; + + var style = _objectSpread({}, stave.getStyle() || {}, {}, this.getLedgerLineStyle() || {}); + + this.applyStyle(ctx, style); // Draw ledger lines below the staff: + + for (var line = 6; line <= highest_line; ++line) { + var normal = non_displaced_x !== null && line <= highest_non_displaced_line; + var displaced = displaced_x !== null && line <= highest_displaced_line; + drawLedgerLine(stave.getYForNote(line), normal, displaced); + } // Draw ledger lines above the staff: + + + for (var _line = 0; _line >= lowest_line; --_line) { + var _normal = non_displaced_x !== null && _line >= lowest_non_displaced_line; + + var _displaced = displaced_x !== null && _line >= lowest_displaced_line; + + drawLedgerLine(stave.getYForNote(_line), _normal, _displaced); + } + + this.restoreStyle(ctx, style); + } // Draw all key modifiers + + }, { + key: "drawModifiers", + value: function drawModifiers() { + if (!this.context) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoCanvasContext', "Can't draw without a canvas context."); + } + + var ctx = this.context; + ctx.openGroup('modifiers'); + + for (var i = 0; i < this.modifiers.length; i++) { + var modifier = this.modifiers[i]; + var notehead = this.note_heads[modifier.getIndex()]; + var noteheadStyle = notehead.getStyle(); + notehead.applyStyle(ctx, noteheadStyle); + modifier.setContext(ctx); + modifier.drawWithStyle(); + notehead.restoreStyle(ctx, noteheadStyle); + } + + ctx.closeGroup(); + } // Draw the flag for the note + + }, { + key: "drawFlag", + value: function drawFlag() { + var stem = this.stem, + beam = this.beam, + ctx = this.context; + + if (!ctx) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoCanvasContext', "Can't draw without a canvas context."); + } + + var shouldRenderFlag = beam === null; + var glyph = this.getGlyph(); + + if (glyph.flag && shouldRenderFlag) { + var _this$getNoteHeadBoun3 = this.getNoteHeadBounds(), + y_top = _this$getNoteHeadBoun3.y_top, + y_bottom = _this$getNoteHeadBoun3.y_bottom; + + var noteStemHeight = stem.getHeight(); + var flagX = this.getStemX(); // FIXME: What's with the magic +/- 2 + + var flagY = this.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_3__["Stem"].DOWN // Down stems have flags on the left + ? y_top - noteStemHeight + 2 // Up stems have flags on the eft. + : y_bottom - noteStemHeight - 2; // Draw the Flag + + ctx.openGroup('flag', null, { + pointerBBox: true + }); + this.applyStyle(ctx, this.getFlagStyle() || false); + this.flag.render(ctx, flagX, flagY); + this.restoreStyle(ctx, this.getFlagStyle() || false); + ctx.closeGroup(); + } + } // Draw the NoteHeads + + }, { + key: "drawNoteHeads", + value: function drawNoteHeads() { + var _this3 = this; + + this.note_heads.forEach(function (notehead) { + _this3.context.openGroup('notehead', null, { + pointerBBox: true + }); + + notehead.setContext(_this3.context).draw(); + + _this3.context.closeGroup(); + }); + } + }, { + key: "drawStem", + value: function drawStem(stemStruct) { + // GCR TODO: I can't find any context in which this is called with the stemStruct + // argument in the codebase or tests. Nor can I find a case where super.drawStem + // is called at all. Perhaps these should be removed? + if (!this.context) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoCanvasContext', "Can't draw without a canvas context."); + } + + if (stemStruct) { + this.setStem(new _stem__WEBPACK_IMPORTED_MODULE_3__["Stem"](stemStruct)); + } + + this.context.openGroup('stem', null, { + pointerBBox: true + }); + this.stem.setContext(this.context).draw(); + this.context.closeGroup(); + } // Draws all the `StaveNote` parts. This is the main drawing method. + + }, { + key: "draw", + value: function draw() { + if (!this.context) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoCanvasContext', "Can't draw without a canvas context."); + } + + if (!this.stave) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoStave', "Can't draw without a stave."); + } + + if (this.ys.length === 0) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoYValues', "Can't draw note without Y values."); + } + + var xBegin = this.getNoteHeadBeginX(); + var shouldRenderStem = this.hasStem() && !this.beam; // Format note head x positions + + this.note_heads.forEach(function (notehead) { + return notehead.setX(xBegin); + }); // Format stem x positions + + var stemX = this.getStemX(); + this.stem.setNoteHeadXBounds(stemX, stemX); + L('Rendering ', this.isChord() ? 'chord :' : 'note :', this.keys); // Draw each part of the note + + this.drawLedgerLines(); // Apply the overall style -- may be contradicted by local settings: + + this.applyStyle(); + this.setAttribute('el', this.context.openGroup('stavenote', this.getAttribute('id'))); + this.context.openGroup('note', null, { + pointerBBox: true + }); + if (shouldRenderStem) this.drawStem(); + this.drawNoteHeads(); + this.drawFlag(); + this.context.closeGroup(); + this.drawModifiers(); + this.context.closeGroup(); + this.restoreStyle(); + this.setRendered(); + } + }]); + + return StaveNote; +}(_stemmablenote__WEBPACK_IMPORTED_MODULE_5__["StemmableNote"]); + +/***/ }), + +/***/ "./src/staverepetition.js": +/*!********************************!*\ + !*** ./src/staverepetition.js ***! + \********************************/ +/*! exports provided: Repetition */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Repetition", function() { return Repetition; }); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.js"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Larry Kuhns 2011 + + +var Repetition = +/*#__PURE__*/ +function (_StaveModifier) { + _inherits(Repetition, _StaveModifier); + + _createClass(Repetition, null, [{ + key: "CATEGORY", + get: function get() { + return 'repetitions'; + } + }, { + key: "type", + get: function get() { + return { + NONE: 1, + // no coda or segno + CODA_LEFT: 2, + // coda at beginning of stave + CODA_RIGHT: 3, + // coda at end of stave + SEGNO_LEFT: 4, + // segno at beginning of stave + SEGNO_RIGHT: 5, + // segno at end of stave + DC: 6, + // D.C. at end of stave + DC_AL_CODA: 7, + // D.C. al coda at end of stave + DC_AL_FINE: 8, + // D.C. al Fine end of stave + DS: 9, + // D.S. at end of stave + DS_AL_CODA: 10, + // D.S. al coda at end of stave + DS_AL_FINE: 11, + // D.S. al Fine at end of stave + FINE: 12 // Fine at end of stave + + }; + } + }]); + + function Repetition(type, x, y_shift) { + var _this; + + _classCallCheck(this, Repetition); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Repetition).call(this)); + + _this.setAttribute('type', 'Repetition'); + + _this.symbol_type = type; + _this.x = x; + _this.x_shift = 0; + _this.y_shift = y_shift; + _this.font = { + family: 'times', + size: 12, + weight: 'bold italic' + }; + return _this; + } + + _createClass(Repetition, [{ + key: "getCategory", + value: function getCategory() { + return Repetition.CATEGORY; + } + }, { + key: "setShiftX", + value: function setShiftX(x) { + this.x_shift = x; + return this; + } + }, { + key: "setShiftY", + value: function setShiftY(y) { + this.y_shift = y; + return this; + } + }, { + key: "draw", + value: function draw(stave, x) { + this.setRendered(); + + switch (this.symbol_type) { + case Repetition.type.CODA_RIGHT: + this.drawCodaFixed(stave, x + stave.width); + break; + + case Repetition.type.CODA_LEFT: + this.drawSymbolText(stave, x, 'Coda', true); + break; + + case Repetition.type.SEGNO_LEFT: + this.drawSignoFixed(stave, x); + break; + + case Repetition.type.SEGNO_RIGHT: + this.drawSignoFixed(stave, x + stave.width); + break; + + case Repetition.type.DC: + this.drawSymbolText(stave, x, 'D.C.', false); + break; + + case Repetition.type.DC_AL_CODA: + this.drawSymbolText(stave, x, 'D.C. al', true); + break; + + case Repetition.type.DC_AL_FINE: + this.drawSymbolText(stave, x, 'D.C. al Fine', false); + break; + + case Repetition.type.DS: + this.drawSymbolText(stave, x, 'D.S.', false); + break; + + case Repetition.type.DS_AL_CODA: + this.drawSymbolText(stave, x, 'D.S. al', true); + break; + + case Repetition.type.DS_AL_FINE: + this.drawSymbolText(stave, x, 'D.S. al Fine', false); + break; + + case Repetition.type.FINE: + this.drawSymbolText(stave, x, 'Fine', false); + break; + + default: + break; + } + + return this; + } + }, { + key: "drawCodaFixed", + value: function drawCodaFixed(stave, x) { + var y = stave.getYForTopText(stave.options.num_lines) + this.y_shift; + _glyph__WEBPACK_IMPORTED_MODULE_1__["Glyph"].renderGlyph(stave.context, this.x + x + this.x_shift, y + 25, 40, 'coda', { + category: 'coda' + }); + return this; + } + }, { + key: "drawSignoFixed", + value: function drawSignoFixed(stave, x) { + var y = stave.getYForTopText(stave.options.num_lines) + this.y_shift; + _glyph__WEBPACK_IMPORTED_MODULE_1__["Glyph"].renderGlyph(stave.context, this.x + x + this.x_shift, y + 25, 30, 'segno', { + category: 'segno' + }); + return this; + } + }, { + key: "drawSymbolText", + value: function drawSymbolText(stave, x, text, draw_coda) { + var ctx = stave.checkContext(); + ctx.save(); + ctx.setFont(this.font.family, this.font.size, this.font.weight); // Default to right symbol + + var text_x = 0 + this.x_shift; + var symbol_x = x + this.x_shift; + + if (this.symbol_type === Repetition.type.CODA_LEFT) { + // Offset Coda text to right of stave beginning + text_x = this.x + stave.options.vertical_bar_width; + symbol_x = text_x + ctx.measureText(text).width + 12; + } else { + // Offset Signo text to left stave end + symbol_x = this.x + x + stave.width - 5 + this.x_shift; + text_x = symbol_x - +ctx.measureText(text).width - 12; + } + + var y = stave.getYForTopText(stave.options.num_lines) + this.y_shift; + + if (draw_coda) { + _glyph__WEBPACK_IMPORTED_MODULE_1__["Glyph"].renderGlyph(ctx, symbol_x, y, 40, 'coda', { + category: 'coda' + }); + } + + ctx.fillText(text, text_x, y + 5); + ctx.restore(); + return this; + } + }]); + + return Repetition; +}(_stavemodifier__WEBPACK_IMPORTED_MODULE_0__["StaveModifier"]); + +/***/ }), + +/***/ "./src/stavesection.js": +/*!*****************************!*\ + !*** ./src/stavesection.js ***! + \*****************************/ +/*! exports provided: StaveSection */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StaveSection", function() { return StaveSection; }); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Larry Kuhns 2011 + +var StaveSection = +/*#__PURE__*/ +function (_StaveModifier) { + _inherits(StaveSection, _StaveModifier); + + _createClass(StaveSection, null, [{ + key: "CATEGORY", + get: function get() { + return 'stavesection'; + } + }]); + + function StaveSection(section, x, shift_y) { + var _this; + + _classCallCheck(this, StaveSection); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(StaveSection).call(this)); + + _this.setAttribute('type', 'StaveSection'); + + _this.setWidth(16); + + _this.section = section; + _this.x = x; + _this.shift_x = 0; + _this.shift_y = shift_y; + _this.font = { + family: 'sans-serif', + size: 12, + weight: 'bold' + }; + return _this; + } + + _createClass(StaveSection, [{ + key: "getCategory", + value: function getCategory() { + return StaveSection.CATEGORY; + } + }, { + key: "setStaveSection", + value: function setStaveSection(section) { + this.section = section; + return this; + } + }, { + key: "setShiftX", + value: function setShiftX(x) { + this.shift_x = x; + return this; + } + }, { + key: "setShiftY", + value: function setShiftY(y) { + this.shift_y = y; + return this; + } + }, { + key: "draw", + value: function draw(stave, shift_x) { + var ctx = stave.checkContext(); + this.setRendered(); + ctx.save(); + ctx.lineWidth = 2; + ctx.setFont(this.font.family, this.font.size, this.font.weight); + var text_width = ctx.measureText('' + this.section).width; + var width = text_width + 6; // add left & right padding + + if (width < 18) width = 18; + var height = 20; // Seems to be a good default y + + var y = stave.getYForTopText(3) + this.shift_y; + var x = this.x + shift_x; + ctx.beginPath(); + ctx.lineWidth = 2; + ctx.rect(x, y, width, height); + ctx.stroke(); + x += (width - text_width) / 2; + ctx.fillText('' + this.section, x, y + 16); + ctx.restore(); + return this; + } + }]); + + return StaveSection; +}(_stavemodifier__WEBPACK_IMPORTED_MODULE_0__["StaveModifier"]); + +/***/ }), + +/***/ "./src/stavetempo.js": +/*!***************************!*\ + !*** ./src/stavetempo.js ***! + \***************************/ +/*! exports provided: StaveTempo */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StaveTempo", function() { return StaveTempo; }); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.js"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.js"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./glyph */ "./src/glyph.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Radosaw Eichler 2012 + + + + +var StaveTempo = +/*#__PURE__*/ +function (_StaveModifier) { + _inherits(StaveTempo, _StaveModifier); + + _createClass(StaveTempo, null, [{ + key: "CATEGORY", + get: function get() { + return 'stavetempo'; + } + }]); + + function StaveTempo(tempo, x, shift_y) { + var _this; + + _classCallCheck(this, StaveTempo); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(StaveTempo).call(this)); + + _this.setAttribute('type', 'StaveTempo'); + + _this.tempo = tempo; + _this.position = _modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"].Position.ABOVE; + _this.x = x; + _this.shift_x = 10; + _this.shift_y = shift_y; + _this.font = { + family: 'times', + size: 14, + weight: 'bold' + }; + _this.render_options = { + glyph_font_scale: 30 // font size for note + + }; + return _this; + } + + _createClass(StaveTempo, [{ + key: "getCategory", + value: function getCategory() { + return StaveTempo.CATEGORY; + } + }, { + key: "setTempo", + value: function setTempo(tempo) { + this.tempo = tempo; + return this; + } + }, { + key: "setShiftX", + value: function setShiftX(x) { + this.shift_x = x; + return this; + } + }, { + key: "setShiftY", + value: function setShiftY(y) { + this.shift_y = y; + return this; + } + }, { + key: "draw", + value: function draw(stave, shift_x) { + var ctx = stave.checkContext(); + this.setRendered(); + var options = this.render_options; // FIXME: What does the '38' mean? Why 38? Is that supposed to + // be the default font size for standard notation? + + var scale = options.glyph_font_scale / 38; + var name = this.tempo.name; + var duration = this.tempo.duration; + var dots = this.tempo.dots; + var bpm = this.tempo.bpm; + var font = this.font; + var x = this.x + this.shift_x + shift_x; + var y = stave.getYForTopText(1) + this.shift_y; + ctx.save(); + + if (name) { + ctx.setFont(font.family, font.size, font.weight); + ctx.fillText(name, x, y); + x += ctx.measureText(name).width; + } + + if (duration && bpm) { + ctx.setFont(font.family, font.size, 'normal'); + + if (name) { + x += ctx.measureText(' ').width; + ctx.fillText('(', x, y); + x += ctx.measureText('(').width; + } + + var code = _tables__WEBPACK_IMPORTED_MODULE_0__["Flow"].getGlyphProps(duration); + x += 3 * scale; + _glyph__WEBPACK_IMPORTED_MODULE_3__["Glyph"].renderGlyph(ctx, x, y, options.glyph_font_scale, code.code_head); + x += code.getWidth() * scale; // Draw stem and flags + + if (code.stem) { + var stem_height = 30; + if (code.beam_count) stem_height += 3 * (code.beam_count - 1); + stem_height *= scale; + var y_top = y - stem_height; + ctx.fillRect(x - scale, y_top, scale, stem_height); + + if (code.flag) { + _glyph__WEBPACK_IMPORTED_MODULE_3__["Glyph"].renderGlyph(ctx, x, y_top, options.glyph_font_scale, code.code_flag_upstem, { + category: 'flag.staveTempo' + }); + if (!dots) x += 6 * scale; + } + } // Draw dot + + + for (var i = 0; i < dots; i++) { + x += 6 * scale; + ctx.beginPath(); + ctx.arc(x, y + 2 * scale, 2 * scale, 0, Math.PI * 2, false); + ctx.fill(); + } + + ctx.fillText(' = ' + bpm + (name ? ')' : ''), x + 3 * scale, y); + } + + ctx.restore(); + return this; + } + }]); + + return StaveTempo; +}(_stavemodifier__WEBPACK_IMPORTED_MODULE_2__["StaveModifier"]); + +/***/ }), + +/***/ "./src/stavetext.js": +/*!**************************!*\ + !*** ./src/stavetext.js ***! + \**************************/ +/*! exports provided: StaveText */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StaveText", function() { return StaveText; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.js"); +/* harmony import */ var _textnote__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./textnote */ "./src/textnote.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Taehoon Moon 2014 + + + +var StaveText = +/*#__PURE__*/ +function (_StaveModifier) { + _inherits(StaveText, _StaveModifier); + + _createClass(StaveText, null, [{ + key: "CATEGORY", + get: function get() { + return 'stavetext'; + } + }]); + + function StaveText(text, position, options) { + var _this; + + _classCallCheck(this, StaveText); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(StaveText).call(this)); + + _this.setAttribute('type', 'StaveText'); + + _this.setWidth(16); + + _this.text = text; + _this.position = position; + _this.options = { + shift_x: 0, + shift_y: 0, + justification: _textnote__WEBPACK_IMPORTED_MODULE_2__["TextNote"].Justification.CENTER + }; + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(_this.options, options); + _this.font = { + family: 'times', + size: 16, + weight: 'normal' + }; + return _this; + } + + _createClass(StaveText, [{ + key: "getCategory", + value: function getCategory() { + return StaveText.CATEGORY; + } + }, { + key: "setStaveText", + value: function setStaveText(text) { + this.text = text; + return this; + } + }, { + key: "setShiftX", + value: function setShiftX(x) { + this.shift_x = x; + return this; + } + }, { + key: "setShiftY", + value: function setShiftY(y) { + this.shift_y = y; + return this; + } + }, { + key: "setFont", + value: function setFont(font) { + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(this.font, font); + } + }, { + key: "setText", + value: function setText(text) { + this.text = text; + } + }, { + key: "draw", + value: function draw(stave) { + var ctx = stave.checkContext(); + this.setRendered(); + ctx.save(); + ctx.lineWidth = 2; + ctx.setFont(this.font.family, this.font.size, this.font.weight); + var text_width = ctx.measureText('' + this.text).width; + var x; + var y; + var Position = _stavemodifier__WEBPACK_IMPORTED_MODULE_1__["StaveModifier"].Position; + var Justification = _textnote__WEBPACK_IMPORTED_MODULE_2__["TextNote"].Justification; + + switch (this.position) { + case Position.LEFT: + case Position.RIGHT: + y = (stave.getYForLine(0) + stave.getBottomLineY()) / 2 + this.options.shift_y; + + if (this.position === Position.LEFT) { + x = stave.getX() - text_width - 24 + this.options.shift_x; + } else { + x = stave.getX() + stave.getWidth() + 24 + this.options.shift_x; + } + + break; + + case Position.ABOVE: + case Position.BELOW: + x = stave.getX() + this.options.shift_x; + + if (this.options.justification === Justification.CENTER) { + x += stave.getWidth() / 2 - text_width / 2; + } else if (this.options.justification === Justification.RIGHT) { + x += stave.getWidth() - text_width; + } + + if (this.position === Position.ABOVE) { + y = stave.getYForTopText(2) + this.options.shift_y; + } else { + y = stave.getYForBottomText(2) + this.options.shift_y; + } + + break; + + default: + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('InvalidPosition', 'Value Must be in Modifier.Position.'); + } + + ctx.fillText('' + this.text, x, y + 4); + ctx.restore(); + return this; + } + }]); + + return StaveText; +}(_stavemodifier__WEBPACK_IMPORTED_MODULE_1__["StaveModifier"]); + +/***/ }), + +/***/ "./src/stavetie.js": +/*!*************************!*\ + !*** ./src/stavetie.js ***! + \*************************/ +/*! exports provided: StaveTie */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StaveTie", function() { return StaveTie; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element */ "./src/element.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// This class implements varies types of ties between contiguous notes. The +// ties include: regular ties, hammer ons, pull offs, and slides. + + +var StaveTie = +/*#__PURE__*/ +function (_Element) { + _inherits(StaveTie, _Element); + + function StaveTie(notes, text) { + var _this; + + _classCallCheck(this, StaveTie); + + /** + * Notes is a struct that has: + * + * { + * first_note: Note, + * last_note: Note, + * first_indices: [n1, n2, n3], + * last_indices: [n1, n2, n3] + * } + * + **/ + _this = _possibleConstructorReturn(this, _getPrototypeOf(StaveTie).call(this)); + + _this.setAttribute('type', 'StaveTie'); + + _this.notes = notes; + _this.context = null; + _this.text = text; + _this.direction = null; + _this.render_options = { + cp1: 8, + // Curve control point 1 + cp2: 12, + // Curve control point 2 + text_shift_x: 0, + first_x_shift: 0, + last_x_shift: 0, + y_shift: 7, + tie_spacing: 0, + font: { + family: 'Arial', + size: 10, + style: '' + } + }; + _this.font = _this.render_options.font; + + _this.setNotes(notes); + + return _this; + } + + _createClass(StaveTie, [{ + key: "setFont", + value: function setFont(font) { + this.font = font; + return this; + } + }, { + key: "setDirection", + value: function setDirection(direction) { + this.direction = direction; + return this; + } + /** + * Set the notes to attach this tie to. + * + * @param {!Object} notes The notes to tie up. + */ + + }, { + key: "setNotes", + value: function setNotes(notes) { + if (!notes.first_note && !notes.last_note) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('BadArguments', 'Tie needs to have either first_note or last_note set.'); + } + + if (!notes.first_indices) notes.first_indices = [0]; + if (!notes.last_indices) notes.last_indices = [0]; + + if (notes.first_indices.length !== notes.last_indices.length) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('BadArguments', 'Tied notes must have similar index sizes'); + } // Success. Lets grab 'em notes. + + + this.first_note = notes.first_note; + this.first_indices = notes.first_indices; + this.last_note = notes.last_note; + this.last_indices = notes.last_indices; + return this; + } + /** + * @return {boolean} Returns true if this is a partial bar. + */ + + }, { + key: "isPartial", + value: function isPartial() { + return !this.first_note || !this.last_note; + } + }, { + key: "renderTie", + value: function renderTie(params) { + if (params.first_ys.length === 0 || params.last_ys.length === 0) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', 'No Y-values to render'); + } + + var ctx = this.context; + var cp1 = this.render_options.cp1; + var cp2 = this.render_options.cp2; + + if (Math.abs(params.last_x_px - params.first_x_px) < 10) { + cp1 = 2; + cp2 = 8; + } + + var first_x_shift = this.render_options.first_x_shift; + var last_x_shift = this.render_options.last_x_shift; + var y_shift = this.render_options.y_shift * params.direction; + + for (var i = 0; i < this.first_indices.length; ++i) { + var cp_x = (params.last_x_px + last_x_shift + (params.first_x_px + first_x_shift)) / 2; + var first_y_px = params.first_ys[this.first_indices[i]] + y_shift; + var last_y_px = params.last_ys[this.last_indices[i]] + y_shift; + + if (isNaN(first_y_px) || isNaN(last_y_px)) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', 'Bad indices for tie rendering.'); + } + + var top_cp_y = (first_y_px + last_y_px) / 2 + cp1 * params.direction; + var bottom_cp_y = (first_y_px + last_y_px) / 2 + cp2 * params.direction; + ctx.beginPath(); + ctx.moveTo(params.first_x_px + first_x_shift, first_y_px); + ctx.quadraticCurveTo(cp_x, top_cp_y, params.last_x_px + last_x_shift, last_y_px); + ctx.quadraticCurveTo(cp_x, bottom_cp_y, params.first_x_px + first_x_shift, first_y_px); + ctx.closePath(); + ctx.fill(); + } + } + }, { + key: "renderText", + value: function renderText(first_x_px, last_x_px) { + if (!this.text) return; + var center_x = (first_x_px + last_x_px) / 2; + center_x -= this.context.measureText(this.text).width / 2; + this.context.save(); + this.context.setFont(this.font.family, this.font.size, this.font.style); + this.context.fillText(this.text, center_x + this.render_options.text_shift_x, (this.first_note || this.last_note).getStave().getYForTopText() - 1); + this.context.restore(); + } + }, { + key: "draw", + value: function draw() { + this.checkContext(); + this.setRendered(); + var first_note = this.first_note; + var last_note = this.last_note; + var first_x_px; + var last_x_px; + var first_ys; + var last_ys; + var stem_direction; + + if (first_note) { + first_x_px = first_note.getTieRightX() + this.render_options.tie_spacing; + stem_direction = first_note.getStemDirection(); + first_ys = first_note.getYs(); + } else { + first_x_px = last_note.getStave().getTieStartX(); + first_ys = last_note.getYs(); + this.first_indices = this.last_indices; + } + + if (last_note) { + last_x_px = last_note.getTieLeftX() + this.render_options.tie_spacing; + stem_direction = last_note.getStemDirection(); + last_ys = last_note.getYs(); + } else { + last_x_px = first_note.getStave().getTieEndX(); + last_ys = first_note.getYs(); + this.last_indices = this.first_indices; + } + + if (this.direction) { + stem_direction = this.direction; + } + + this.renderTie({ + first_x_px: first_x_px, + last_x_px: last_x_px, + first_ys: first_ys, + last_ys: last_ys, + direction: stem_direction + }); + this.renderText(first_x_px, last_x_px); + return true; + } + }]); + + return StaveTie; +}(_element__WEBPACK_IMPORTED_MODULE_1__["Element"]); + +/***/ }), + +/***/ "./src/stavevolta.js": +/*!***************************!*\ + !*** ./src/stavevolta.js ***! + \***************************/ +/*! exports provided: Volta */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Volta", function() { return Volta; }); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Larry Kuhns 2011 + +var Volta = +/*#__PURE__*/ +function (_StaveModifier) { + _inherits(Volta, _StaveModifier); + + _createClass(Volta, null, [{ + key: "CATEGORY", + get: function get() { + return 'voltas'; + } + }, { + key: "type", + get: function get() { + return { + NONE: 1, + BEGIN: 2, + MID: 3, + END: 4, + BEGIN_END: 5 + }; + } + }]); + + function Volta(type, number, x, y_shift) { + var _this; + + _classCallCheck(this, Volta); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Volta).call(this)); + + _this.setAttribute('type', 'Volta'); + + _this.volta = type; + _this.x = x; + _this.y_shift = y_shift; + _this.number = number; + _this.font = { + family: 'sans-serif', + size: 9, + weight: 'bold' + }; + return _this; + } + + _createClass(Volta, [{ + key: "getCategory", + value: function getCategory() { + return Volta.CATEGORY; + } + }, { + key: "setShiftY", + value: function setShiftY(y) { + this.y_shift = y; + return this; + } + }, { + key: "draw", + value: function draw(stave, x) { + var ctx = stave.checkContext(); + this.setRendered(); + var width = stave.width; + var top_y = stave.getYForTopText(stave.options.num_lines) + this.y_shift; + var vert_height = 1.5 * stave.options.spacing_between_lines_px; + + switch (this.volta) { + case Volta.type.BEGIN: + ctx.fillRect(this.x + x, top_y, 1, vert_height); + break; + + case Volta.type.END: + width -= 5; + ctx.fillRect(this.x + x + width, top_y, 1, vert_height); + break; + + case Volta.type.BEGIN_END: + width -= 3; + ctx.fillRect(this.x + x, top_y, 1, vert_height); + ctx.fillRect(this.x + x + width, top_y, 1, vert_height); + break; + + default: + break; + } // If the beginning of a volta, draw measure number + + + if (this.volta === Volta.type.BEGIN || this.volta === Volta.type.BEGIN_END) { + ctx.save(); + ctx.setFont(this.font.family, this.font.size, this.font.weight); + ctx.fillText(this.number, this.x + x + 5, top_y + 15); + ctx.restore(); + } + + ctx.fillRect(this.x + x, top_y, width, 1); + return this; + } + }]); + + return Volta; +}(_stavemodifier__WEBPACK_IMPORTED_MODULE_0__["StaveModifier"]); + +/***/ }), + +/***/ "./src/stem.js": +/*!*********************!*\ + !*** ./src/stem.js ***! + \*********************/ +/*! exports provided: Stem */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Stem", function() { return Stem; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element */ "./src/element.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// This file implements the `Stem` object. Generally this object is handled +// by its parent `StemmableNote`. + + + // To enable logging for this class. Set `Vex.Flow.Stem.DEBUG` to `true`. + +function L() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (Stem.DEBUG) _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].L('Vex.Flow.Stem', args); +} + +var Stem = +/*#__PURE__*/ +function (_Element) { + _inherits(Stem, _Element); + + _createClass(Stem, null, [{ + key: "CATEGORY", + get: function get() { + return 'stem'; + } // Stem directions + + }, { + key: "UP", + get: function get() { + return 1; + } + }, { + key: "DOWN", + get: function get() { + return -1; + } // Theme + + }, { + key: "WIDTH", + get: function get() { + return _tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].STEM_WIDTH; + } + }, { + key: "HEIGHT", + get: function get() { + return _tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].STEM_HEIGHT; + } + }]); + + function Stem() { + var _this; + + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + _classCallCheck(this, Stem); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Stem).call(this)); + + _this.setAttribute('type', 'Stem'); // Default notehead x bounds + + + _this.x_begin = options.x_begin || 0; + _this.x_end = options.x_end || 0; // Y bounds for top/bottom most notehead + + _this.y_top = options.y_top || 0; + _this.y_bottom = options.y_bottom || 0; // Stem top extension + + _this.stem_extension = options.stem_extension || 0; // Direction of the stem + + _this.stem_direction = options.stem_direction || 0; // Flag to override all draw calls + + _this.hide = options.hide || false; + _this.isStemlet = options.isStemlet || false; + _this.stemletHeight = options.stemletHeight || 0; // Use to adjust the rendered height without affecting + // the results of `.getExtents()` + + _this.renderHeightAdjustment = 0; + + _this.setOptions(options); + + return _this; + } + + _createClass(Stem, [{ + key: "setOptions", + value: function setOptions(options) { + // Changing where the stem meets the head + this.stem_up_y_offset = options.stem_up_y_offset || 0; + this.stem_down_y_offset = options.stem_down_y_offset || 0; + this.stem_up_y_base_offset = options.stem_up_y_base_offset || 0; + this.stem_down_y_base_offset = options.stem_down_y_base_offset || 0; + } // Set the x bounds for the default notehead + + }, { + key: "setNoteHeadXBounds", + value: function setNoteHeadXBounds(x_begin, x_end) { + this.x_begin = x_begin; + this.x_end = x_end; + return this; + } // Set the direction of the stem in relation to the noteheads + + }, { + key: "setDirection", + value: function setDirection(direction) { + this.stem_direction = direction; + } // Set the extension for the stem, generally for flags or beams + + }, { + key: "setExtension", + value: function setExtension(ext) { + this.stem_extension = ext; + } + }, { + key: "getExtension", + value: function getExtension() { + return this.stem_extension; + } // The the y bounds for the top and bottom noteheads + + }, { + key: "setYBounds", + value: function setYBounds(y_top, y_bottom) { + this.y_top = y_top; + this.y_bottom = y_bottom; + } // The category of the object + + }, { + key: "getCategory", + value: function getCategory() { + return Stem.CATEGORY; + } // Gets the entire height for the stem + + }, { + key: "getHeight", + value: function getHeight() { + var y_offset = this.stem_direction === Stem.UP ? this.stem_up_y_offset : this.stem_down_y_offset; // eslint-disable-line max-len + + return (this.y_bottom - this.y_top) * this.stem_direction + (Stem.HEIGHT - y_offset + this.stem_extension) * this.stem_direction; + } + }, { + key: "getBoundingBox", + value: function getBoundingBox() { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NotImplemented', 'getBoundingBox() not implemented.'); + } // Get the y coordinates for the very base of the stem to the top of + // the extension + + }, { + key: "getExtents", + value: function getExtents() { + var isStemUp = this.stem_direction === Stem.UP; + var ys = [this.y_top, this.y_bottom]; + var stemHeight = Stem.HEIGHT + this.stem_extension; + var innerMostNoteheadY = (isStemUp ? Math.min : Math.max).apply(void 0, ys); + var outerMostNoteheadY = (isStemUp ? Math.max : Math.min).apply(void 0, ys); + var stemTipY = innerMostNoteheadY + stemHeight * -this.stem_direction; + return { + topY: stemTipY, + baseY: outerMostNoteheadY + }; + } + }, { + key: "setVisibility", + value: function setVisibility(isVisible) { + this.hide = !isVisible; + return this; + } + }, { + key: "setStemlet", + value: function setStemlet(isStemlet, stemletHeight) { + this.isStemlet = isStemlet; + this.stemletHeight = stemletHeight; + return this; + } // Render the stem onto the canvas + + }, { + key: "draw", + value: function draw() { + this.setRendered(); + if (this.hide) return; + var ctx = this.checkContext(); + var stem_x; + var stem_y; + var stem_direction = this.stem_direction; + var y_base_offset = 0; + + if (stem_direction === Stem.DOWN) { + // Down stems are rendered to the left of the head. + stem_x = this.x_begin; + stem_y = this.y_top + this.stem_down_y_offset; + y_base_offset = this.stem_down_y_base_offset; + } else { + // Up stems are rendered to the right of the head. + stem_x = this.x_end; + stem_y = this.y_bottom - this.stem_up_y_offset; + y_base_offset = this.stem_up_y_base_offset; + } + + var stemHeight = this.getHeight(); + L('Rendering stem - ', 'Top Y: ', this.y_top, 'Bottom Y: ', this.y_bottom); // The offset from the stem's base which is required fo satisfy the stemlet height + + var stemletYOffset = this.isStemlet ? stemHeight - this.stemletHeight * this.stem_direction : 0; // Draw the stem + + ctx.save(); + this.applyStyle(ctx); + ctx.beginPath(); + ctx.setLineWidth(Stem.WIDTH); + ctx.moveTo(stem_x, stem_y - stemletYOffset + y_base_offset); + ctx.lineTo(stem_x, stem_y - stemHeight - this.renderHeightAdjustment * stem_direction); + ctx.stroke(); + this.restoreStyle(ctx); + ctx.restore(); + } + }]); + + return Stem; +}(_element__WEBPACK_IMPORTED_MODULE_1__["Element"]); + +/***/ }), + +/***/ "./src/stemmablenote.js": +/*!******************************!*\ + !*** ./src/stemmablenote.js ***! + \******************************/ +/*! exports provided: StemmableNote */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StemmableNote", function() { return StemmableNote; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stem */ "./src/stem.js"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./glyph */ "./src/glyph.js"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./note */ "./src/note.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// `StemmableNote` is an abstract interface for notes with optional stems. +// Examples of stemmable notes are `StaveNote` and `TabNote` + + + + + +var StemmableNote = +/*#__PURE__*/ +function (_Note) { + _inherits(StemmableNote, _Note); + + function StemmableNote(note_struct) { + var _this; + + _classCallCheck(this, StemmableNote); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(StemmableNote).call(this, note_struct)); + + _this.setAttribute('type', 'StemmableNote'); + + _this.stem = null; + _this.stemExtensionOverride = null; + _this.beam = null; + return _this; + } // Get and set the note's `Stem` + + + _createClass(StemmableNote, [{ + key: "getStem", + value: function getStem() { + return this.stem; + } + }, { + key: "setStem", + value: function setStem(stem) { + this.stem = stem; + return this; + } // Builds and sets a new stem + + }, { + key: "buildStem", + value: function buildStem() { + var stem = new _stem__WEBPACK_IMPORTED_MODULE_2__["Stem"](); + this.setStem(stem); + return this; + } + }, { + key: "buildFlag", + value: function buildFlag() { + var category = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'flag'; + var glyph = this.glyph, + beam = this.beam; + var shouldRenderFlag = beam === null; + + if (glyph && glyph.flag && shouldRenderFlag) { + var flagCode = this.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_2__["Stem"].DOWN ? glyph.code_flag_downstem : glyph.code_flag_upstem; + this.flag = new _glyph__WEBPACK_IMPORTED_MODULE_3__["Glyph"](flagCode, this.render_options.glyph_font_scale, { + category: category + }); + } + } // Get the custom glyph associated with the outer note head on the base of the stem. + + }, { + key: "getBaseCustomNoteHeadGlyph", + value: function getBaseCustomNoteHeadGlyph() { + if (this.getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_2__["Stem"].DOWN) { + return this.customGlyphs[this.customGlyphs.length - 1]; + } else { + return this.customGlyphs[0]; + } + } // Get the full length of stem + + }, { + key: "getStemLength", + value: function getStemLength() { + return _stem__WEBPACK_IMPORTED_MODULE_2__["Stem"].HEIGHT + this.getStemExtension(); + } // Get the number of beams for this duration + + }, { + key: "getBeamCount", + value: function getBeamCount() { + var glyph = this.getGlyph(); + + if (glyph) { + return glyph.beam_count; + } else { + return 0; + } + } // Get the minimum length of stem + + }, { + key: "getStemMinumumLength", + value: function getStemMinumumLength() { + var frac = _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].durationToFraction(this.duration); + var length = frac.value() <= 1 ? 0 : 20; // if note is flagged, cannot shorten beam + + switch (this.duration) { + case '8': + if (this.beam == null) length = 35; + break; + + case '16': + length = this.beam == null ? 35 : 25; + break; + + case '32': + length = this.beam == null ? 45 : 35; + break; + + case '64': + length = this.beam == null ? 50 : 40; + break; + + case '128': + length = this.beam == null ? 55 : 45; + break; + + default: + break; + } + + return length; + } // Get/set the direction of the stem + + }, { + key: "getStemDirection", + value: function getStemDirection() { + return this.stem_direction; + } + }, { + key: "setStemDirection", + value: function setStemDirection(direction) { + if (!direction) direction = _stem__WEBPACK_IMPORTED_MODULE_2__["Stem"].UP; + + if (direction !== _stem__WEBPACK_IMPORTED_MODULE_2__["Stem"].UP && direction !== _stem__WEBPACK_IMPORTED_MODULE_2__["Stem"].DOWN) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArgument', "Invalid stem direction: ".concat(direction)); + } + + this.stem_direction = direction; + + if (this.stem) { + this.stem.setDirection(direction); + this.stem.setExtension(this.getStemExtension()); // Lookup the base custom notehead (closest to the base of the stem) to extend or shorten + // the stem appropriately. If there's no custom note head, lookup the standard notehead. + + var glyph = this.getBaseCustomNoteHeadGlyph() || this.getGlyph(); // Get the font-specific customizations for the note heads. + + var offsets = this.musicFont.lookupMetric("stem.noteHead.".concat(glyph.code_head), { + offsetYBaseStemUp: 0, + offsetYTopStemUp: 0, + offsetYBaseStemDown: 0, + offsetYTopStemDown: 0 + }); // Configure the stem to use these offsets. + + this.stem.setOptions({ + stem_up_y_offset: offsets.offsetYTopStemUp, + // glyph.stem_up_y_offset, + stem_down_y_offset: offsets.offsetYTopStemDown, + // glyph.stem_down_y_offset, + stem_up_y_base_offset: offsets.offsetYBaseStemUp, + // glyph.stem_up_y_base_offset, + stem_down_y_base_offset: offsets.offsetYBaseStemDown // glyph.stem_down_y_base_offset, + + }); + } // Reset and reformat everything. + + + this.reset(); + + if (this.flag) { + this.buildFlag(); + } + + this.beam = null; + + if (this.preFormatted) { + this.preFormat(); + } + + return this; + } // Get the `x` coordinate of the stem + + }, { + key: "getStemX", + value: function getStemX() { + var x_begin = this.getAbsoluteX() + this.x_shift; + var x_end = this.getAbsoluteX() + this.x_shift + this.getGlyphWidth(); + var stem_x = this.stem_direction === _stem__WEBPACK_IMPORTED_MODULE_2__["Stem"].DOWN ? x_begin : x_end; + return stem_x; + } // Get the `x` coordinate for the center of the glyph. + // Used for `TabNote` stems and stemlets over rests + + }, { + key: "getCenterGlyphX", + value: function getCenterGlyphX() { + return this.getAbsoluteX() + this.x_shift + this.getGlyphWidth() / 2; + } // Get the stem extension for the current duration + + }, { + key: "getStemExtension", + value: function getStemExtension() { + var glyph = this.getGlyph(); + + if (this.stemExtensionOverride != null) { + return this.stemExtensionOverride; + } + + if (glyph) { + return this.getStemDirection() === 1 ? glyph.stem_up_extension : glyph.stem_down_extension; + } + + return 0; + } // Set the stem length to a specific. Will override the default length. + + }, { + key: "setStemLength", + value: function setStemLength(height) { + this.stemExtensionOverride = height - _stem__WEBPACK_IMPORTED_MODULE_2__["Stem"].HEIGHT; + return this; + } // Get the top and bottom `y` values of the stem. + + }, { + key: "getStemExtents", + value: function getStemExtents() { + return this.stem.getExtents(); + } // Sets the current note's beam + + }, { + key: "setBeam", + value: function setBeam(beam) { + this.beam = beam; + return this; + } // Get the `y` value for the top/bottom modifiers at a specific `textLine` + + }, { + key: "getYForTopText", + value: function getYForTopText(textLine) { + var extents = this.getStemExtents(); + + if (this.hasStem()) { + return Math.min(this.stave.getYForTopText(textLine), extents.topY - this.render_options.annotation_spacing * (textLine + 1)); + } else { + return this.stave.getYForTopText(textLine); + } + } + }, { + key: "getYForBottomText", + value: function getYForBottomText(textLine) { + var extents = this.getStemExtents(); + + if (this.hasStem()) { + return Math.max(this.stave.getYForTopText(textLine), extents.baseY + this.render_options.annotation_spacing * textLine); + } else { + return this.stave.getYForBottomText(textLine); + } + } + }, { + key: "hasFlag", + value: function hasFlag() { + return _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].getGlyphProps(this.duration).flag && !this.beam; + } // Post format the note + + }, { + key: "postFormat", + value: function postFormat() { + if (this.beam) this.beam.postFormat(); + this.postFormatted = true; + return this; + } // Render the stem onto the canvas + + }, { + key: "drawStem", + value: function drawStem(stem_struct) { + this.checkContext(); + this.setRendered(); + this.setStem(new _stem__WEBPACK_IMPORTED_MODULE_2__["Stem"](stem_struct)); + this.stem.setContext(this.context).draw(); + } + }]); + + return StemmableNote; +}(_note__WEBPACK_IMPORTED_MODULE_4__["Note"]); + +/***/ }), + +/***/ "./src/stringnumber.js": +/*!*****************************!*\ + !*** ./src/stringnumber.js ***! + \*****************************/ +/*! exports provided: StringNumber */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StringNumber", function() { return StringNumber; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.js"); +/* harmony import */ var _renderer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./renderer */ "./src/renderer.js"); +/* harmony import */ var _stavenote__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stavenote */ "./src/stavenote.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Larry Kuhns +// +// ## Description +// This file implements the `StringNumber` class which renders string +// number annotations beside notes. + + + + +var StringNumber = +/*#__PURE__*/ +function (_Modifier) { + _inherits(StringNumber, _Modifier); + + _createClass(StringNumber, null, [{ + key: "format", + // ## Static Methods + // Arrange string numbers inside a `ModifierContext` + value: function format(nums, state) { + var left_shift = state.left_shift; + var right_shift = state.right_shift; + var num_spacing = 1; + if (!nums || nums.length === 0) return this; + var nums_list = []; + var prev_note = null; + var shift_left = 0; + var shift_right = 0; + var i; + var num; + var note; + var pos; + + for (i = 0; i < nums.length; ++i) { + num = nums[i]; + note = num.getNote(); + + for (i = 0; i < nums.length; ++i) { + num = nums[i]; + note = num.getNote(); + pos = num.getPosition(); + var props = note.getKeyProps()[num.getIndex()]; + + if (note !== prev_note) { + for (var n = 0; n < note.keys.length; ++n) { + if (left_shift === 0) { + shift_left = Math.max(note.getLeftDisplacedHeadPx(), shift_left); + } + + if (right_shift === 0) { + shift_right = Math.max(note.getRightDisplacedHeadPx(), shift_right); + } + } + + prev_note = note; + } + + nums_list.push({ + pos: pos, + note: note, + num: num, + line: props.line, + shiftL: shift_left, + shiftR: shift_right + }); + } + } // Sort string numbers by line number. + + + nums_list.sort(function (a, b) { + return b.line - a.line; + }); // TODO: This variable never gets assigned to anything. Is that a bug or can this be removed? + + var num_shiftL = 0; // eslint-disable-line + + var num_shiftR = 0; + var x_widthL = 0; + var x_widthR = 0; + var last_line = null; + var last_note = null; + + for (i = 0; i < nums_list.length; ++i) { + var num_shift = 0; + note = nums_list[i].note; + pos = nums_list[i].pos; + num = nums_list[i].num; + var line = nums_list[i].line; + var shiftL = nums_list[i].shiftL; + var shiftR = nums_list[i].shiftR; // Reset the position of the string number every line. + + if (line !== last_line || note !== last_note) { + num_shiftL = left_shift + shiftL; + num_shiftR = right_shift + shiftR; + } + + var num_width = num.getWidth() + num_spacing; + + if (pos === _modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"].Position.LEFT) { + num.setXShift(left_shift); + num_shift = shift_left + num_width; // spacing + + x_widthL = num_shift > x_widthL ? num_shift : x_widthL; + } else if (pos === _modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"].Position.RIGHT) { + num.setXShift(num_shiftR); + num_shift += num_width; // spacing + + x_widthR = num_shift > x_widthR ? num_shift : x_widthR; + } + + last_line = line; + last_note = note; + } + + state.left_shift += x_widthL; + state.right_shift += x_widthR; + return true; + } + }, { + key: "CATEGORY", + get: function get() { + return 'stringnumber'; + } + }]); + + function StringNumber(number) { + var _this; + + _classCallCheck(this, StringNumber); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(StringNumber).call(this)); + + _this.setAttribute('type', 'StringNumber'); + + _this.note = null; + _this.last_note = null; + _this.index = null; + _this.string_number = number; + + _this.setWidth(20); // ??? + + + _this.position = _modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"].Position.ABOVE; // Default position above stem or note head + + _this.x_shift = 0; + _this.y_shift = 0; + _this.x_offset = 0; // Horizontal offset from default + + _this.y_offset = 0; // Vertical offset from default + + _this.dashed = true; // true - draw dashed extension false - no extension + + _this.leg = _renderer__WEBPACK_IMPORTED_MODULE_2__["Renderer"].LineEndType.NONE; // draw upward/downward leg at the of extension line + + _this.radius = 8; + _this.font = { + family: 'sans-serif', + size: 10, + weight: 'bold' + }; + return _this; + } + + _createClass(StringNumber, [{ + key: "getCategory", + value: function getCategory() { + return StringNumber.CATEGORY; + } + }, { + key: "getNote", + value: function getNote() { + return this.note; + } + }, { + key: "setNote", + value: function setNote(note) { + this.note = note; + return this; + } + }, { + key: "getIndex", + value: function getIndex() { + return this.index; + } + }, { + key: "setIndex", + value: function setIndex(index) { + this.index = index; + return this; + } + }, { + key: "setLineEndType", + value: function setLineEndType(leg) { + if (leg >= _renderer__WEBPACK_IMPORTED_MODULE_2__["Renderer"].LineEndType.NONE && leg <= _renderer__WEBPACK_IMPORTED_MODULE_2__["Renderer"].LineEndType.DOWN) { + this.leg = leg; + } + + return this; + } + }, { + key: "setStringNumber", + value: function setStringNumber(number) { + this.string_number = number; + return this; + } + }, { + key: "setOffsetX", + value: function setOffsetX(x) { + this.x_offset = x; + return this; + } + }, { + key: "setOffsetY", + value: function setOffsetY(y) { + this.y_offset = y; + return this; + } + }, { + key: "setLastNote", + value: function setLastNote(note) { + this.last_note = note; + return this; + } + }, { + key: "setDashed", + value: function setDashed(dashed) { + this.dashed = dashed; + return this; + } + }, { + key: "draw", + value: function draw() { + var ctx = this.checkContext(); + + if (!(this.note && this.index != null)) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoAttachedNote', "Can't draw string number without a note and index."); + } + + this.setRendered(); + var line_space = this.note.stave.options.spacing_between_lines_px; + var start = this.note.getModifierStartXY(this.position, this.index); + var dot_x = start.x + this.x_shift + this.x_offset; + var dot_y = start.y + this.y_shift + this.y_offset; + + switch (this.position) { + case _modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"].Position.ABOVE: + case _modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"].Position.BELOW: + { + var stem_ext = this.note.getStemExtents(); + var top = stem_ext.topY; + var bottom = stem_ext.baseY + 2; + + if (this.note.stem_direction === _stavenote__WEBPACK_IMPORTED_MODULE_3__["StaveNote"].STEM_DOWN) { + top = stem_ext.baseY; + bottom = stem_ext.topY - 2; + } + + if (this.position === _modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"].Position.ABOVE) { + dot_y = this.note.hasStem() ? top - line_space * 1.75 : start.y - line_space * 1.75; + } else { + dot_y = this.note.hasStem() ? bottom + line_space * 1.5 : start.y + line_space * 1.75; + } + + dot_y += this.y_shift + this.y_offset; + break; + } + + case _modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"].Position.LEFT: + dot_x -= this.radius / 2 + 5; + break; + + case _modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"].Position.RIGHT: + dot_x += this.radius / 2 + 6; + break; + + default: + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('InvalidPosition', "The position ".concat(this.position, " is invalid")); + } + + ctx.save(); + ctx.beginPath(); + ctx.arc(dot_x, dot_y, this.radius, 0, Math.PI * 2, false); + ctx.lineWidth = 1.5; + ctx.stroke(); + ctx.setFont(this.font.family, this.font.size, this.font.weight); + var x = dot_x - ctx.measureText(this.string_number).width / 2; + ctx.fillText('' + this.string_number, x, dot_y + 4.5); + + if (this.last_note != null) { + var end = this.last_note.getStemX() - this.note.getX() + 5; + ctx.strokeStyle = '#000000'; + ctx.lineCap = 'round'; + ctx.lineWidth = 0.6; + + if (this.dashed) { + _renderer__WEBPACK_IMPORTED_MODULE_2__["Renderer"].drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 3]); + } else { + _renderer__WEBPACK_IMPORTED_MODULE_2__["Renderer"].drawDashedLine(ctx, dot_x + 10, dot_y, dot_x + end, dot_y, [3, 0]); + } + + var len; + var pattern; + + switch (this.leg) { + case _renderer__WEBPACK_IMPORTED_MODULE_2__["Renderer"].LineEndType.UP: + len = -10; + pattern = this.dashed ? [3, 3] : [3, 0]; + _renderer__WEBPACK_IMPORTED_MODULE_2__["Renderer"].drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern); + break; + + case _renderer__WEBPACK_IMPORTED_MODULE_2__["Renderer"].LineEndType.DOWN: + len = 10; + pattern = this.dashed ? [3, 3] : [3, 0]; + _renderer__WEBPACK_IMPORTED_MODULE_2__["Renderer"].drawDashedLine(ctx, dot_x + end, dot_y, dot_x + end, dot_y + len, pattern); + break; + + default: + break; + } + } + + ctx.restore(); + } + }]); + + return StringNumber; +}(_modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"]); + +/***/ }), + +/***/ "./src/strokes.js": +/*!************************!*\ + !*** ./src/strokes.js ***! + \************************/ +/*! exports provided: Stroke */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Stroke", function() { return Stroke; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.js"); +/* harmony import */ var _stavenote__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stavenote */ "./src/stavenote.js"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./glyph */ "./src/glyph.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Larry Kuhns +// +// ## Description +// This file implements the `Stroke` class which renders chord strokes +// that can be arpeggiated, brushed, rasquedo, etc. + + + + +var Stroke = +/*#__PURE__*/ +function (_Modifier) { + _inherits(Stroke, _Modifier); + + _createClass(Stroke, null, [{ + key: "format", + // Arrange strokes inside `ModifierContext` + value: function format(strokes, state) { + var left_shift = state.left_shift; + var stroke_spacing = 0; + if (!strokes || strokes.length === 0) return this; + var strokeList = strokes.map(function (stroke) { + var note = stroke.getNote(); + + if (note instanceof _stavenote__WEBPACK_IMPORTED_MODULE_2__["StaveNote"]) { + var line = note.getKeyProps()[stroke.getIndex()].line; + var shift = note.getLeftDisplacedHeadPx(); + return { + line: line, + shift: shift, + stroke: stroke + }; + } else { + var string = note.getPositions()[stroke.getIndex()].str; + return { + line: string, + shift: 0, + stroke: stroke + }; + } + }); + var strokeShift = left_shift; // There can only be one stroke .. if more than one, they overlay each other + + var xShift = strokeList.reduce(function (xShift, _ref) { + var stroke = _ref.stroke, + shift = _ref.shift; + stroke.setXShift(strokeShift + shift); + return Math.max(stroke.getWidth() + stroke_spacing, xShift); + }, 0); + state.left_shift += xShift; + return true; + } + }, { + key: "CATEGORY", + get: function get() { + return 'strokes'; + } + }, { + key: "Type", + get: function get() { + return { + BRUSH_DOWN: 1, + BRUSH_UP: 2, + ROLL_DOWN: 3, + // Arpeggiated chord + ROLL_UP: 4, + // Arpeggiated chord + RASQUEDO_DOWN: 5, + RASQUEDO_UP: 6, + ARPEGGIO_DIRECTIONLESS: 7 // Arpeggiated chord without upwards or downwards arrow + + }; + } + }]); + + function Stroke(type, options) { + var _this; + + _classCallCheck(this, Stroke); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Stroke).call(this)); + + _this.setAttribute('type', 'Stroke'); + + _this.note = null; + _this.options = _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge({}, options); // multi voice - span stroke across all voices if true + + _this.all_voices = 'all_voices' in _this.options ? _this.options.all_voices : true; // multi voice - end note of stroke, set in draw() + + _this.note_end = null; + _this.index = null; + _this.type = type; + _this.position = _modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"].Position.LEFT; + _this.render_options = { + font_scale: 38, + stroke_px: 3, + stroke_spacing: 10 + }; + _this.font = { + family: 'serif', + size: 10, + weight: 'bold italic' + }; + + _this.setXShift(0); + + _this.setWidth(10); + + return _this; + } + + _createClass(Stroke, [{ + key: "getCategory", + value: function getCategory() { + return Stroke.CATEGORY; + } + }, { + key: "getPosition", + value: function getPosition() { + return this.position; + } + }, { + key: "addEndNote", + value: function addEndNote(note) { + this.note_end = note; + return this; + } + }, { + key: "draw", + value: function draw() { + this.checkContext(); + this.setRendered(); + + if (!(this.note && this.index != null)) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoAttachedNote', "Can't draw stroke without a note and index."); + } + + var start = this.note.getModifierStartXY(this.position, this.index); + var ys = this.note.getYs(); + var topY = start.y; + var botY = start.y; + var x = start.x - 5; + var line_space = this.note.stave.options.spacing_between_lines_px; + var notes = this.getModifierContext().getModifiers(this.note.getCategory()); + + for (var i = 0; i < notes.length; i++) { + ys = notes[i].getYs(); + + for (var n = 0; n < ys.length; n++) { + if (this.note === notes[i] || this.all_voices) { + topY = _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Min(topY, ys[n]); + botY = _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Max(botY, ys[n]); + } + } + } + + var arrow; + var arrow_shift_x; + var arrow_y; + var text_shift_x; + var text_y; + + switch (this.type) { + case Stroke.Type.BRUSH_DOWN: + arrow = 'arrowheadBlackUp'; + arrow_shift_x = -3; + arrow_y = topY - line_space / 2 + 10; + botY += line_space / 2; + break; + + case Stroke.Type.BRUSH_UP: + arrow = 'arrowheadBlackDown'; + arrow_shift_x = 0.5; + arrow_y = botY + line_space / 2; + topY -= line_space / 2; + break; + + case Stroke.Type.ROLL_DOWN: + case Stroke.Type.RASQUEDO_DOWN: + arrow = 'arrowheadBlackUp'; + arrow_shift_x = -3; + text_shift_x = this.x_shift + arrow_shift_x - 2; + + if (this.note instanceof _stavenote__WEBPACK_IMPORTED_MODULE_2__["StaveNote"]) { + topY += 1.5 * line_space; + + if ((botY - topY) % 2 !== 0) { + botY += 0.5 * line_space; + } else { + botY += line_space; + } + + arrow_y = topY - line_space; + text_y = botY + line_space + 2; + } else { + topY += 1.5 * line_space; + botY += line_space; + arrow_y = topY - 0.75 * line_space; + text_y = botY + 0.25 * line_space; + } + + break; + + case Stroke.Type.ROLL_UP: + case Stroke.Type.RASQUEDO_UP: + arrow = 'arrowheadBlackDown'; + arrow_shift_x = -4; + text_shift_x = this.x_shift + arrow_shift_x - 1; + + if (this.note instanceof _stavenote__WEBPACK_IMPORTED_MODULE_2__["StaveNote"]) { + arrow_y = line_space / 2; + topY += 0.5 * line_space; + + if ((botY - topY) % 2 === 0) { + botY += line_space / 2; + } + + arrow_y = botY + 0.5 * line_space; + text_y = topY - 1.25 * line_space; + } else { + topY += 0.25 * line_space; + botY += 0.5 * line_space; + arrow_y = botY + 0.25 * line_space; + text_y = topY - line_space; + } + + break; + + case Stroke.Type.ARPEGGIO_DIRECTIONLESS: + topY += 0.5 * line_space; + botY += line_space; // * 0.5 can lead to slight underlap instead of overlap sometimes + + break; + + default: + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('InvalidType', "The stroke type ".concat(this.type, " does not exist")); + } + + var strokeLine = 'straight'; // Draw the stroke + + if (this.type === Stroke.Type.BRUSH_DOWN || this.type === Stroke.Type.BRUSH_UP) { + this.context.fillRect(x + this.x_shift, topY, 1, botY - topY); + } else { + strokeLine = 'wiggly'; + + if (this.note instanceof _stavenote__WEBPACK_IMPORTED_MODULE_2__["StaveNote"]) { + for (var _i = topY; _i <= botY; _i += line_space) { + _glyph__WEBPACK_IMPORTED_MODULE_3__["Glyph"].renderGlyph(this.context, x + this.x_shift - 4, _i, this.render_options.font_scale, 'vexWiggleArpeggioUp'); + } + } else { + var _i2; + + for (_i2 = topY; _i2 <= botY; _i2 += 10) { + _glyph__WEBPACK_IMPORTED_MODULE_3__["Glyph"].renderGlyph(this.context, x + this.x_shift - 4, _i2, this.render_options.font_scale, 'vexWiggleArpeggioUp'); + } + + if (this.type === Stroke.Type.RASQUEDO_DOWN) { + text_y = _i2 + 0.25 * line_space; + } + } + } + + if (this.type === Stroke.Type.ARPEGGIO_DIRECTIONLESS) { + return; // skip drawing arrow heads or text + } // Draw the arrow head + + + _glyph__WEBPACK_IMPORTED_MODULE_3__["Glyph"].renderGlyph(this.context, x + this.x_shift + arrow_shift_x, arrow_y, this.render_options.font_scale, arrow, { + category: "stroke.".concat(arrow, ".").concat(strokeLine) + }); // Draw the rasquedo "R" + + if (this.type === Stroke.Type.RASQUEDO_DOWN || this.type === Stroke.Type.RASQUEDO_UP) { + this.context.save(); + this.context.setFont(this.font.family, this.font.size, this.font.weight); + this.context.fillText('R', x + text_shift_x, text_y); + this.context.restore(); + } + } + }]); + + return Stroke; +}(_modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"]); + +/***/ }), + +/***/ "./src/svgcontext.js": +/*!***************************!*\ + !*** ./src/svgcontext.js ***! + \***************************/ +/*! exports provided: SVGContext */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SVGContext", function() { return SVGContext; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// @author Gregory Ristow (2015) + +var attrNamesToIgnoreMap = { + path: { + x: true, + y: true, + width: true, + height: true + }, + rect: {}, + text: { + width: true, + height: true + } +}; +{ + var fontAttrNamesToIgnore = { + 'font-family': true, + 'font-weight': true, + 'font-style': true, + 'font-size': true + }; + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(attrNamesToIgnoreMap.rect, fontAttrNamesToIgnore); + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(attrNamesToIgnoreMap.path, fontAttrNamesToIgnore); +} +var SVGContext = +/*#__PURE__*/ +function () { + function SVGContext(element) { + _classCallCheck(this, SVGContext); + + // element is the parent DOM object + this.element = element; // Create the SVG in the SVG namespace: + + this.svgNS = 'http://www.w3.org/2000/svg'; + var svg = this.create('svg'); // Add it to the canvas: + + this.element.appendChild(svg); // Point to it: + + this.svg = svg; + this.groups = [this.svg]; // Create the group stack + + this.parent = this.svg; + this.path = ''; + this.pen = { + x: NaN, + y: NaN + }; + this.lineWidth = 1.0; + this.state = { + scale: { + x: 1, + y: 1 + }, + 'font-family': 'Arial', + 'font-size': '8pt', + 'font-weight': 'normal' + }; + this.attributes = { + 'stroke-width': 0.3, + 'fill': 'black', + 'stroke': 'black', + 'stroke-dasharray': 'none', + 'font-family': 'Arial', + 'font-size': '10pt', + 'font-weight': 'normal', + 'font-style': 'normal' + }; + this.background_attributes = { + 'stroke-width': 0, + 'fill': 'white', + 'stroke': 'white', + 'stroke-dasharray': 'none', + 'font-family': 'Arial', + 'font-size': '10pt', + 'font-weight': 'normal', + 'font-style': 'normal' + }; + this.shadow_attributes = { + width: 0, + color: 'black' + }; + this.state_stack = []; // Test for Internet Explorer + + this.iePolyfill(); + } + + _createClass(SVGContext, [{ + key: "create", + value: function create(svgElementType) { + return document.createElementNS(this.svgNS, svgElementType); + } // Allow grouping elements in containers for interactivity. + + }, { + key: "openGroup", + value: function openGroup(cls, id, attrs) { + var group = this.create('g'); + this.groups.push(group); + this.parent.appendChild(group); + this.parent = group; + if (cls) group.setAttribute('class', _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Prefix(cls)); + if (id) group.setAttribute('id', _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Prefix(id)); + + if (attrs && attrs.pointerBBox) { + group.setAttribute('pointer-events', 'bounding-box'); + } + + return group; + } + }, { + key: "closeGroup", + value: function closeGroup() { + this.groups.pop(); + this.parent = this.groups[this.groups.length - 1]; + } + }, { + key: "add", + value: function add(elem) { + this.parent.appendChild(elem); + } // Tests if the browser is Internet Explorer; if it is, + // we do some tricks to improve text layout. See the + // note at ieMeasureTextFix() for details. + + }, { + key: "iePolyfill", + value: function iePolyfill() { + if (typeof navigator !== 'undefined') { + this.ie = /MSIE 9/i.test(navigator.userAgent) || /MSIE 10/i.test(navigator.userAgent) || /rv:11\.0/i.test(navigator.userAgent) || /Trident/i.test(navigator.userAgent); + } + } // ### Styling & State Methods: + + }, { + key: "setFont", + value: function setFont(family, size, weight) { + // Unlike canvas, in SVG italic is handled by font-style, + // not weight. So: we search the weight argument and + // apply bold and italic to weight and style respectively. + var bold = false; + var italic = false; + var style = 'normal'; // Weight might also be a number (200, 400, etc...) so we + // test its type to be sure we have access to String methods. + + if (typeof weight === 'string') { + // look for "italic" in the weight: + if (weight.indexOf('italic') !== -1) { + weight = weight.replace(/italic/g, ''); + italic = true; + } // look for "bold" in weight + + + if (weight.indexOf('bold') !== -1) { + weight = weight.replace(/bold/g, ''); + bold = true; + } // remove any remaining spaces + + + weight = weight.replace(/ /g, ''); + } + + weight = bold ? 'bold' : weight; + weight = typeof weight === 'undefined' || weight === '' ? 'normal' : weight; + style = italic ? 'italic' : style; + var fontAttributes = { + 'font-family': family, + 'font-size': size + 'pt', + 'font-weight': weight, + 'font-style': style + }; // Store the font size so that if the browser is Internet + // Explorer we can fix its calculations of text width. + + this.fontSize = Number(size); + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(this.attributes, fontAttributes); + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(this.state, fontAttributes); + return this; + } + }, { + key: "setRawFont", + value: function setRawFont(font) { + font = font.trim(); // Assumes size first, splits on space -- which is presently + // how all existing modules are calling this. + + var fontArray = font.split(' '); + this.attributes['font-family'] = fontArray[1]; + this.state['font-family'] = fontArray[1]; + this.attributes['font-size'] = fontArray[0]; + this.state['font-size'] = fontArray[0]; // Saves fontSize for IE polyfill + + this.fontSize = Number(fontArray[0].match(/\d+/)); + return this; + } + }, { + key: "setFillStyle", + value: function setFillStyle(style) { + this.attributes.fill = style; + return this; + } + }, { + key: "setBackgroundFillStyle", + value: function setBackgroundFillStyle(style) { + this.background_attributes.fill = style; + this.background_attributes.stroke = style; + return this; + } + }, { + key: "setStrokeStyle", + value: function setStrokeStyle(style) { + this.attributes.stroke = style; + return this; + } + }, { + key: "setShadowColor", + value: function setShadowColor(style) { + this.shadow_attributes.color = style; + return this; + } + }, { + key: "setShadowBlur", + value: function setShadowBlur(blur) { + this.shadow_attributes.width = blur; + return this; + } + }, { + key: "setLineWidth", + value: function setLineWidth(width) { + this.attributes['stroke-width'] = width; + this.lineWidth = width; + } // @param array {lineDash} as [dashInt, spaceInt, dashInt, spaceInt, etc...] + + }, { + key: "setLineDash", + value: function setLineDash(lineDash) { + if (Object.prototype.toString.call(lineDash) === '[object Array]') { + lineDash = lineDash.join(', '); + this.attributes['stroke-dasharray'] = lineDash; + return this; + } else { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('ArgumentError', 'lineDash must be an array of integers.'); + } + } + }, { + key: "setLineCap", + value: function setLineCap(lineCap) { + this.attributes['stroke-linecap'] = lineCap; + return this; + } // ### Sizing & Scaling Methods: + // TODO (GCR): See note at scale() -- seperate our internal + // conception of pixel-based width/height from the style.width + // and style.height properties eventually to allow users to + // apply responsive sizing attributes to the SVG. + + }, { + key: "resize", + value: function resize(width, height) { + this.width = width; + this.height = height; + this.element.style.width = width; + this.svg.style.width = width; + this.svg.style.height = height; + var attributes = { + width: width, + height: height + }; + this.applyAttributes(this.svg, attributes); + this.scale(this.state.scale.x, this.state.scale.y); + return this; + } + }, { + key: "scale", + value: function scale(x, y) { + // uses viewBox to scale + // TODO (GCR): we may at some point want to distinguish the + // style.width / style.height properties that are applied to + // the SVG object from our internal conception of the SVG + // width/height. This would allow us to create automatically + // scaling SVG's that filled their containers, for instance. + // + // As this isn't implemented in Canvas or Raphael contexts, + // I've left as is for now, but in using the viewBox to + // handle internal scaling, am trying to make it possible + // for us to eventually move in that direction. + this.state.scale = { + x: x, + y: y + }; + var visibleWidth = this.width / x; + var visibleHeight = this.height / y; + this.setViewBox(0, 0, visibleWidth, visibleHeight); + return this; + } + }, { + key: "setViewBox", + value: function setViewBox() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + // Override for "x y w h" style: + if (args.length === 1) { + var viewBox = args[0]; + this.svg.setAttribute('viewBox', viewBox); + } else { + var xMin = args[0], + yMin = args[1], + width = args[2], + height = args[3]; + var viewBoxString = xMin + ' ' + yMin + ' ' + width + ' ' + height; + this.svg.setAttribute('viewBox', viewBoxString); + } + } // ### Drawing helper methods: + + }, { + key: "applyAttributes", + value: function applyAttributes(element, attributes) { + var attrNamesToIgnore = attrNamesToIgnoreMap[element.nodeName]; + Object.keys(attributes).forEach(function (propertyName) { + if (attrNamesToIgnore && attrNamesToIgnore[propertyName]) { + return; + } + + element.setAttributeNS(null, propertyName, attributes[propertyName]); + }); + return element; + } // ### Shape & Path Methods: + + }, { + key: "clear", + value: function clear() { + // Clear the SVG by removing all inner children. + // (This approach is usually slightly more efficient + // than removing the old SVG & adding a new one to + // the container element, since it does not cause the + // container to resize twice. Also, the resize + // triggered by removing the entire SVG can trigger + // a touchcancel event when the element resizes away + // from a touch point.) + while (this.svg.lastChild) { + this.svg.removeChild(this.svg.lastChild); + } // Replace the viewbox attribute we just removed: + + + this.scale(this.state.scale.x, this.state.scale.y); + } // ## Rectangles: + + }, { + key: "rect", + value: function rect(x, y, width, height, attributes) { + // Avoid invalid negative height attribs by + // flipping the rectangle on its head: + if (height < 0) { + y += height; + height *= -1; + } // Create the rect & style it: + + + var rectangle = this.create('rect'); + + if (typeof attributes === 'undefined') { + attributes = { + fill: 'none', + 'stroke-width': this.lineWidth, + stroke: 'black' + }; + } + + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(attributes, { + x: x, + y: y, + width: width, + height: height + }); + this.applyAttributes(rectangle, attributes); + this.add(rectangle); + return this; + } + }, { + key: "fillRect", + value: function fillRect(x, y, width, height) { + if (height < 0) { + y += height; + height *= -1; + } + + this.rect(x, y, width, height, this.attributes); + return this; + } + }, { + key: "clearRect", + value: function clearRect(x, y, width, height) { + // TODO(GCR): Improve implementation of this... + // Currently it draws a box of the background color, rather + // than creating alpha through lower z-levels. + // + // See the implementation of this in SVGKit: + // http://sourceforge.net/projects/svgkit/ + // as a starting point. + // + // Adding a large number of transform paths (as we would + // have to do) could be a real performance hit. Since + // tabNote seems to be the only module that makes use of this + // it may be worth creating a seperate tabStave that would + // draw lines around locations of tablature fingering. + // + this.rect(x, y, width, height, this.background_attributes); + return this; + } // ## Paths: + + }, { + key: "beginPath", + value: function beginPath() { + this.path = ''; + this.pen.x = NaN; + this.pen.y = NaN; + return this; + } + }, { + key: "moveTo", + value: function moveTo(x, y) { + this.path += 'M' + x + ' ' + y; + this.pen.x = x; + this.pen.y = y; + return this; + } + }, { + key: "lineTo", + value: function lineTo(x, y) { + this.path += 'L' + x + ' ' + y; + this.pen.x = x; + this.pen.y = y; + return this; + } + }, { + key: "bezierCurveTo", + value: function bezierCurveTo(x1, y1, x2, y2, x, y) { + this.path += 'C' + x1 + ' ' + y1 + ',' + x2 + ' ' + y2 + ',' + x + ' ' + y; + this.pen.x = x; + this.pen.y = y; + return this; + } + }, { + key: "quadraticCurveTo", + value: function quadraticCurveTo(x1, y1, x, y) { + this.path += 'Q' + x1 + ' ' + y1 + ',' + x + ' ' + y; + this.pen.x = x; + this.pen.y = y; + return this; + } // This is an attempt (hack) to simulate the HTML5 canvas + // arc method. + + }, { + key: "arc", + value: function arc(x, y, radius, startAngle, endAngle, antiClockwise) { + function normalizeAngle(angle) { + while (angle < 0) { + angle += Math.PI * 2; + } + + while (angle > Math.PI * 2) { + angle -= Math.PI * 2; + } + + return angle; + } + + startAngle = normalizeAngle(startAngle); + endAngle = normalizeAngle(endAngle); + + if (startAngle > endAngle) { + var tmp = startAngle; + startAngle = endAngle; + endAngle = tmp; + antiClockwise = !antiClockwise; + } + + var delta = endAngle - startAngle; + + if (delta > Math.PI) { + this.arcHelper(x, y, radius, startAngle, startAngle + delta / 2, antiClockwise); + this.arcHelper(x, y, radius, startAngle + delta / 2, endAngle, antiClockwise); + } else { + this.arcHelper(x, y, radius, startAngle, endAngle, antiClockwise); + } + + return this; + } + }, { + key: "arcHelper", + value: function arcHelper(x, y, radius, startAngle, endAngle, antiClockwise) { + var x1 = x + radius * Math.cos(startAngle); + var y1 = y + radius * Math.sin(startAngle); + var x2 = x + radius * Math.cos(endAngle); + var y2 = y + radius * Math.sin(endAngle); + var largeArcFlag = 0; + var sweepFlag = 0; + + if (antiClockwise) { + sweepFlag = 1; + + if (endAngle - startAngle < Math.PI) { + largeArcFlag = 1; + } + } else if (endAngle - startAngle > Math.PI) { + largeArcFlag = 1; + } + + this.path += 'M' + x1 + ' ' + y1 + ' A' + radius + ' ' + radius + ' 0 ' + largeArcFlag + ' ' + sweepFlag + ' ' + x2 + ' ' + y2; + + if (!isNaN(this.pen.x) && !isNaN(this.pen.y)) { + this.peth += 'M' + this.pen.x + ' ' + this.pen.y; + } + } + }, { + key: "closePath", + value: function closePath() { + this.path += 'Z'; + return this; + } // Adapted from the source for Raphael's Element.glow + + }, { + key: "glow", + value: function glow() { + // Calculate the width & paths of the glow: + if (this.shadow_attributes.width > 0) { + var sa = this.shadow_attributes; + var num_paths = sa.width / 2; // Stroke at varying widths to create effect of gaussian blur: + + for (var i = 1; i <= num_paths; i++) { + var attributes = { + stroke: sa.color, + 'stroke-linejoin': 'round', + 'stroke-linecap': 'round', + 'stroke-width': +(sa.width * 0.4 / num_paths * i).toFixed(3), + opacity: +((sa.opacity || 0.3) / num_paths).toFixed(3) + }; + var path = this.create('path'); + attributes.d = this.path; + this.applyAttributes(path, attributes); + this.add(path); + } + } + + return this; + } + }, { + key: "fill", + value: function fill(attributes) { + // If our current path is set to glow, make it glow + this.glow(); + var path = this.create('path'); + + if (typeof attributes === 'undefined') { + attributes = {}; + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(attributes, this.attributes); + attributes.stroke = 'none'; + } + + attributes.d = this.path; + this.applyAttributes(path, attributes); + this.add(path); + return this; + } + }, { + key: "stroke", + value: function stroke() { + // If our current path is set to glow, make it glow. + this.glow(); + var path = this.create('path'); + var attributes = {}; + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(attributes, this.attributes); + attributes.fill = 'none'; + attributes['stroke-width'] = this.lineWidth; + attributes.d = this.path; + this.applyAttributes(path, attributes); + this.add(path); + return this; + } // ## Text Methods: + + }, { + key: "measureText", + value: function measureText(text) { + var txt = this.create('text'); + + if (typeof txt.getBBox !== 'function') { + return { + x: 0, + y: 0, + width: 0, + height: 0 + }; + } + + txt.textContent = text; + this.applyAttributes(txt, this.attributes); // Temporarily add it to the document for measurement. + + this.svg.appendChild(txt); + var bbox = txt.getBBox(); + + if (this.ie && text !== '' && this.attributes['font-style'] === 'italic') { + bbox = this.ieMeasureTextFix(bbox, text); + } + + this.svg.removeChild(txt); + return bbox; + } + }, { + key: "ieMeasureTextFix", + value: function ieMeasureTextFix(bbox) { + // Internet Explorer over-pads text in italics, + // resulting in giant width estimates for measureText. + // To fix this, we use this formula, tested against + // ie 11: + // overestimate (in pixels) = FontSize(in pt) * 1.196 + 1.96 + // And then subtract the overestimate from calculated width. + var fontSize = Number(this.fontSize); + var m = 1.196; + var b = 1.9598; + var widthCorrection = m * fontSize + b; + var width = bbox.width - widthCorrection; + var height = bbox.height - 1.5; // Get non-protected copy: + + var box = { + x: bbox.x, + y: bbox.y, + width: width, + height: height + }; + return box; + } + }, { + key: "fillText", + value: function fillText(text, x, y) { + if (!text || text.length <= 0) { + return; + } + + var attributes = {}; + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(attributes, this.attributes); + attributes.stroke = 'none'; + attributes.x = x; + attributes.y = y; + var txt = this.create('text'); + txt.textContent = text; + this.applyAttributes(txt, attributes); + this.add(txt); + } + }, { + key: "save", + value: function save() { + // TODO(mmuthanna): State needs to be deep-copied. + this.state_stack.push({ + state: { + 'font-family': this.state['font-family'], + 'font-weight': this.state['font-weight'], + 'font-style': this.state['font-style'], + 'font-size': this.state['font-size'], + scale: this.state.scale + }, + attributes: { + 'font-family': this.attributes['font-family'], + 'font-weight': this.attributes['font-weight'], + 'font-style': this.attributes['font-style'], + 'font-size': this.attributes['font-size'], + fill: this.attributes.fill, + stroke: this.attributes.stroke, + 'stroke-width': this.attributes['stroke-width'], + 'stroke-dasharray': this.attributes['stroke-dasharray'] + }, + shadow_attributes: { + width: this.shadow_attributes.width, + color: this.shadow_attributes.color + }, + lineWidth: this.lineWidth + }); + return this; + } + }, { + key: "restore", + value: function restore() { + // TODO(0xfe): State needs to be deep-restored. + var state = this.state_stack.pop(); + this.state['font-family'] = state.state['font-family']; + this.state['font-weight'] = state.state['font-weight']; + this.state['font-style'] = state.state['font-style']; + this.state['font-size'] = state.state['font-size']; + this.state.scale = state.state.scale; + this.attributes['font-family'] = state.attributes['font-family']; + this.attributes['font-weight'] = state.attributes['font-weight']; + this.attributes['font-style'] = state.attributes['font-style']; + this.attributes['font-size'] = state.attributes['font-size']; + this.attributes.fill = state.attributes.fill; + this.attributes.stroke = state.attributes.stroke; + this.attributes['stroke-width'] = state.attributes['stroke-width']; + this.attributes['stroke-dasharray'] = state.attributes['stroke-dasharray']; + this.shadow_attributes.width = state.shadow_attributes.width; + this.shadow_attributes.color = state.shadow_attributes.color; + this.lineWidth = state.lineWidth; + return this; + } + }]); + + return SVGContext; +}(); + +/***/ }), + +/***/ "./src/system.js": +/*!***********************!*\ + !*** ./src/system.js ***! + \***********************/ +/*! exports provided: System */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "System", function() { return System; }); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./src/element.js"); +/* harmony import */ var _factory__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./factory */ "./src/factory.js"); +/* harmony import */ var _formatter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatter */ "./src/formatter.js"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./note */ "./src/note.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// This class implements a musical system, which is a collection of staves, +// each which can have one or more voices. All voices across all staves in +// the system are formatted together. + + + + +var System = +/*#__PURE__*/ +function (_Element) { + _inherits(System, _Element); + + function System() { + var _this; + + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + _classCallCheck(this, System); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(System).call(this)); + + _this.setAttribute('type', 'System'); + + _this.setOptions(params); + + _this.parts = []; + return _this; + } + + _createClass(System, [{ + key: "setOptions", + value: function setOptions() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + this.options = _objectSpread({ + x: 10, + y: 10, + width: 500, + connector: null, + spaceBetweenStaves: 12, + // stave spaces + factory: null, + noJustification: false, + debugFormatter: false, + formatIterations: 0, + // number of formatter tuning steps + noPadding: false + }, options, { + details: _objectSpread({ + alpha: 0.5 + }, options.details) + }); + this.factory = this.options.factory || new _factory__WEBPACK_IMPORTED_MODULE_1__["Factory"]({ + renderer: { + el: null + } + }); + } + }, { + key: "setContext", + value: function setContext(context) { + _get(_getPrototypeOf(System.prototype), "setContext", this).call(this, context); + + this.factory.setContext(context); + return this; + } + }, { + key: "addConnector", + value: function addConnector() { + var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'double'; + this.connector = this.factory.StaveConnector({ + top_stave: this.parts[0].stave, + bottom_stave: this.parts[this.parts.length - 1].stave, + type: type + }); + return this.connector; + } + }, { + key: "addStave", + value: function addStave(params) { + var _this2 = this; + + params = _objectSpread({ + stave: null, + voices: [], + spaceAbove: 0, + // stave spaces + spaceBelow: 0, + // stave spaces + debugNoteMetrics: false + }, params, { + options: _objectSpread({ + left_bar: false + }, params.options) + }); + + if (!params.stave) { + params.stave = this.factory.Stave({ + x: this.options.x, + y: this.options.y, + width: this.options.width, + options: params.options + }); + } + + params.voices.forEach(function (voice) { + return voice.setContext(_this2.context).setStave(params.stave).getTickables().forEach(function (tickable) { + return tickable.setStave(params.stave); + }); + }); + this.parts.push(params); + return params.stave; + } + }, { + key: "format", + value: function format() { + var _this3 = this; + + var formatter = new _formatter__WEBPACK_IMPORTED_MODULE_2__["Formatter"](_objectSpread({}, this.options.details)); + this.formatter = formatter; + var y = this.options.y; + var startX = 0; + var allVoices = []; + var debugNoteMetricsYs = []; // Join the voices for each stave. + + this.parts.forEach(function (part) { + y = y + part.stave.space(part.spaceAbove); + part.stave.setY(y); + formatter.joinVoices(part.voices); + y = y + part.stave.space(part.spaceBelow); + y = y + part.stave.space(_this3.options.spaceBetweenStaves); + + if (part.debugNoteMetrics) { + debugNoteMetricsYs.push({ + y: y, + voice: part.voices[0] + }); + y += 15; + } + + allVoices = allVoices.concat(part.voices); + startX = Math.max(startX, part.stave.getNoteStartX()); + }); // Update the start position of all staves. + + this.parts.forEach(function (part) { + return part.stave.setNoteStartX(startX); + }); + var justifyWidth = this.options.noPadding ? this.options.width - this.options.x : this.options.width - (startX - this.options.x) - this.musicFont.lookupMetric('stave.padding'); + formatter.format(allVoices, this.options.noJustification ? 0 : justifyWidth); + + for (var i = 0; i < this.options.formatIterations; i++) { + formatter.tune({ + alpha: this.options.details.alpha + }); + } + + this.startX = startX; + this.debugNoteMetricsYs = debugNoteMetricsYs; + this.lastY = y; + } + }, { + key: "draw", + value: function draw() { + // Render debugging information, if requested. + var ctx = this.checkContext(); + this.setRendered(); + + if (this.options.debugFormatter) { + _formatter__WEBPACK_IMPORTED_MODULE_2__["Formatter"].plotDebugging(ctx, this.formatter, this.startX, this.options.y, this.lastY); + } + + this.debugNoteMetricsYs.forEach(function (d) { + d.voice.getTickables().forEach(function (note) { + return _note__WEBPACK_IMPORTED_MODULE_3__["Note"].plotMetrics(ctx, note, d.y); + }); + }); + } + }]); + + return System; +}(_element__WEBPACK_IMPORTED_MODULE_0__["Element"]); + +/***/ }), + +/***/ "./src/tables.js": +/*!***********************!*\ + !*** ./src/tables.js ***! + \***********************/ +/*! exports provided: Flow */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Flow", function() { return Flow; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fraction */ "./src/fraction.js"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./glyph */ "./src/glyph.js"); +/* harmony import */ var _smufl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./smufl */ "./src/smufl.js"); +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. + +/* eslint-disable key-spacing */ + + + + +var Flow = { + STEM_WIDTH: 1.5, + STEM_HEIGHT: 35, + STAVE_LINE_THICKNESS: 1, + RESOLUTION: 16384, + DEFAULT_FONT_STACK: _smufl__WEBPACK_IMPORTED_MODULE_3__["DefaultFontStack"], + DEFAULT_NOTATION_FONT_SCALE: 39, + DEFAULT_TABLATURE_FONT_SCALE: 39, + SLASH_NOTEHEAD_WIDTH: 15, + // HACK: + // Since text origins are positioned at the baseline, we must + // compensate for the ascender of the text. Of course, 1 staff space is + // a very poor approximation. + // + // This will be deprecated in the future. This is a temporary solution until + // we have more robust text metrics. + TEXT_HEIGHT_OFFSET_HACK: 1, + + /* Kerning (DEPRECATED) */ + IsKerned: true +}; + +Flow.clefProperties = function (clef) { + if (!clef) throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArgument', 'Invalid clef: ' + clef); + var props = Flow.clefProperties.values[clef]; + if (!props) throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArgument', 'Invalid clef: ' + clef); + return props; +}; + +Flow.clefProperties.values = { + 'treble': { + line_shift: 0 + }, + 'bass': { + line_shift: 6 + }, + 'tenor': { + line_shift: 4 + }, + 'alto': { + line_shift: 3 + }, + 'soprano': { + line_shift: 1 + }, + 'percussion': { + line_shift: 0 + }, + 'mezzo-soprano': { + line_shift: 2 + }, + 'baritone-c': { + line_shift: 5 + }, + 'baritone-f': { + line_shift: 5 + }, + 'subbass': { + line_shift: 7 + }, + 'french': { + line_shift: -1 + } +}; +/* + Take a note in the format "Key/Octave" (e.g., "C/5") and return properties. + + The last argument, params, is a struct the currently can contain one option, + octave_shift for clef ottavation (0 = default; 1 = 8va; -1 = 8vb, etc.). +*/ + +Flow.keyProperties = function (key, clef, params) { + if (clef === undefined) { + clef = 'treble'; + } + + var options = { + octave_shift: 0 + }; + + if (_typeof(params) === 'object') { + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(options, params); + } + + var pieces = key.split('/'); + + if (pieces.length < 2) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', "Key must have note + octave and an optional glyph: ".concat(key)); + } + + var k = pieces[0].toUpperCase(); + var value = Flow.keyProperties.note_values[k]; + if (!value) throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', 'Invalid key name: ' + k); + if (value.octave) pieces[1] = value.octave; + var octave = parseInt(pieces[1], 10); // Octave_shift is the shift to compensate for clef 8va/8vb. + + octave += -1 * options.octave_shift; + var base_index = octave * 7 - 4 * 7; + var line = (base_index + value.index) / 2; + line += Flow.clefProperties(clef).line_shift; + var stroke = 0; + if (line <= 0 && line * 2 % 2 === 0) stroke = 1; // stroke up + + if (line >= 6 && line * 2 % 2 === 0) stroke = -1; // stroke down + // Integer value for note arithmetic. + + var int_value = typeof value.int_val !== 'undefined' ? octave * 12 + value.int_val : null; + /* Check if the user specified a glyph. */ + + var code = value.code; + var shift_right = value.shift_right; + var extraProps = {}; + + if (pieces.length > 2 && pieces[2]) { + var glyph_name = pieces[2].toUpperCase(); + extraProps = Flow.keyProperties.customNoteHeads[glyph_name] || {}; + } + + return _objectSpread({ + key: k, + octave: octave, + line: line, + int_value: int_value, + accidental: value.accidental, + code: code, + stroke: stroke, + shift_right: shift_right, + displaced: false + }, extraProps); +}; + +Flow.keyProperties.note_values = { + 'C': { + index: 0, + int_val: 0, + accidental: null + }, + 'CN': { + index: 0, + int_val: 0, + accidental: 'n' + }, + 'C#': { + index: 0, + int_val: 1, + accidental: '#' + }, + 'C##': { + index: 0, + int_val: 2, + accidental: '##' + }, + 'CB': { + index: 0, + int_val: -1, + accidental: 'b' + }, + 'CBB': { + index: 0, + int_val: -2, + accidental: 'bb' + }, + 'D': { + index: 1, + int_val: 2, + accidental: null + }, + 'DN': { + index: 1, + int_val: 2, + accidental: 'n' + }, + 'D#': { + index: 1, + int_val: 3, + accidental: '#' + }, + 'D##': { + index: 1, + int_val: 4, + accidental: '##' + }, + 'DB': { + index: 1, + int_val: 1, + accidental: 'b' + }, + 'DBB': { + index: 1, + int_val: 0, + accidental: 'bb' + }, + 'E': { + index: 2, + int_val: 4, + accidental: null + }, + 'EN': { + index: 2, + int_val: 4, + accidental: 'n' + }, + 'E#': { + index: 2, + int_val: 5, + accidental: '#' + }, + 'E##': { + index: 2, + int_val: 6, + accidental: '##' + }, + 'EB': { + index: 2, + int_val: 3, + accidental: 'b' + }, + 'EBB': { + index: 2, + int_val: 2, + accidental: 'bb' + }, + 'F': { + index: 3, + int_val: 5, + accidental: null + }, + 'FN': { + index: 3, + int_val: 5, + accidental: 'n' + }, + 'F#': { + index: 3, + int_val: 6, + accidental: '#' + }, + 'F##': { + index: 3, + int_val: 7, + accidental: '##' + }, + 'FB': { + index: 3, + int_val: 4, + accidental: 'b' + }, + 'FBB': { + index: 3, + int_val: 3, + accidental: 'bb' + }, + 'G': { + index: 4, + int_val: 7, + accidental: null + }, + 'GN': { + index: 4, + int_val: 7, + accidental: 'n' + }, + 'G#': { + index: 4, + int_val: 8, + accidental: '#' + }, + 'G##': { + index: 4, + int_val: 9, + accidental: '##' + }, + 'GB': { + index: 4, + int_val: 6, + accidental: 'b' + }, + 'GBB': { + index: 4, + int_val: 5, + accidental: 'bb' + }, + 'A': { + index: 5, + int_val: 9, + accidental: null + }, + 'AN': { + index: 5, + int_val: 9, + accidental: 'n' + }, + 'A#': { + index: 5, + int_val: 10, + accidental: '#' + }, + 'A##': { + index: 5, + int_val: 11, + accidental: '##' + }, + 'AB': { + index: 5, + int_val: 8, + accidental: 'b' + }, + 'ABB': { + index: 5, + int_val: 7, + accidental: 'bb' + }, + 'B': { + index: 6, + int_val: 11, + accidental: null + }, + 'BN': { + index: 6, + int_val: 11, + accidental: 'n' + }, + 'B#': { + index: 6, + int_val: 12, + accidental: '#' + }, + 'B##': { + index: 6, + int_val: 13, + accidental: '##' + }, + 'BB': { + index: 6, + int_val: 10, + accidental: 'b' + }, + 'BBB': { + index: 6, + int_val: 9, + accidental: 'bb' + }, + 'R': { + index: 6, + int_val: 9, + rest: true + }, + // Rest + 'X': { + index: 6, + accidental: '', + octave: 4, + code: 'noteheadXBlack', + shift_right: 5.5 + } +}; + +Flow.integerToNote = function (integer) { + if (typeof integer === 'undefined') { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', 'Undefined integer for integerToNote'); + } + + if (integer < -2) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', "integerToNote requires integer > -2: ".concat(integer)); + } + + var noteValue = Flow.integerToNote.table[integer]; + + if (!noteValue) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', "Unknown note value for integer: ".concat(integer)); + } + + return noteValue; +}; + +Flow.integerToNote.table = { + 0: 'C', + 1: 'C#', + 2: 'D', + 3: 'D#', + 4: 'E', + 5: 'F', + 6: 'F#', + 7: 'G', + 8: 'G#', + 9: 'A', + 10: 'A#', + 11: 'B' +}; + +Flow.tabToGlyph = function (fret) { + var scale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1.0; + var glyph = null; + var width = 0; + var shift_y = 0; + + if (fret.toString().toUpperCase() === 'X') { + var glyphMetrics = new _glyph__WEBPACK_IMPORTED_MODULE_2__["Glyph"]('accidentalDoubleSharp', Flow.DEFAULT_TABLATURE_FONT_SCALE).getMetrics(); + glyph = 'accidentalDoubleSharp'; + width = glyphMetrics.width; + shift_y = -glyphMetrics.height / 2; + } else { + width = Flow.textWidth(fret.toString()); + } + + return { + text: fret, + code: glyph, + getWidth: function getWidth() { + return width * scale; + }, + shift_y: shift_y + }; +}; + +Flow.textWidth = function (text) { + return 7 * text.toString().length; +}; + +Flow.articulationCodes = function (artic) { + return Flow.articulationCodes.articulations[artic]; +}; + +Flow.articulationCodes.articulations = { + 'a.': { + code: 'augmentationDot', + between_lines: true + }, + // Staccato + 'av': { + aboveCode: 'articStaccatissimoAbove', + belowCode: 'articStaccatissimoBelow', + between_lines: true + }, + // Staccatissimo + 'a>': { + aboveCode: 'articAccentAbove', + belowCode: 'articAccentBelow', + between_lines: true + }, + // Accent + 'a-': { + aboveCode: 'articTenutoAbove', + belowCode: 'articTenutoBelow', + between_lines: true + }, + // Tenuto + 'a^': { + aboveCode: 'articMarcatoAbove', + belowCode: 'articMarcatoBelow', + between_lines: false + }, + // Marcato + 'a+': { + code: 'pluckedLeftHandPizzicato', + between_lines: false + }, + // Left hand pizzicato + 'ao': { + aboveCode: 'pluckedSnapPizzicatoAbove', + belowCode: 'pluckedSnapPizzicatoBelow', + between_lines: false + }, + // Snap pizzicato + 'ah': { + code: 'stringsHarmonic', + between_lines: false + }, + // Natural harmonic or open note + 'a@': { + aboveCode: 'fermataAbove', + belowCode: 'fermataBelow', + between_lines: false + }, + // Fermata + 'a@a': { + code: 'fermataAbove', + between_lines: false + }, + // Fermata above staff + 'a@u': { + code: 'fermataBelow', + between_lines: false + }, + // Fermata below staff + 'a|': { + code: 'stringsUpBow', + between_lines: false + }, + // Bow up - up stroke + 'am': { + code: 'stringsDownBow', + between_lines: false + }, + // Bow down - down stroke + 'a,': { + code: 'pictChokeCymbal', + between_lines: false + } // Choked + +}; + +Flow.accidentalCodes = function (acc) { + return Flow.accidentalCodes.accidentals[acc]; +}; + +Flow.accidentalCodes.accidentals = { + '#': { + code: 'accidentalSharp', + parenRightPaddingAdjustment: -1 + }, + '##': { + code: 'accidentalDoubleSharp', + parenRightPaddingAdjustment: -1 + }, + 'b': { + code: 'accidentalFlat', + parenRightPaddingAdjustment: -2 + }, + 'bb': { + code: 'accidentalDoubleFlat', + parenRightPaddingAdjustment: -2 + }, + 'n': { + code: 'accidentalNatural', + parenRightPaddingAdjustment: -1 + }, + '{': { + code: 'accidentalParensLeft', + parenRightPaddingAdjustment: -1 + }, + '}': { + code: 'accidentalParensRight', + parenRightPaddingAdjustment: -1 + }, + 'db': { + code: 'accidentalThreeQuarterTonesFlatZimmermann', + parenRightPaddingAdjustment: -1 + }, + 'd': { + code: 'accidentalQuarterToneFlatStein', + parenRightPaddingAdjustment: 0 + }, + '++': { + code: 'accidentalThreeQuarterTonesSharpStein', + parenRightPaddingAdjustment: -1 + }, + '+': { + code: 'accidentalQuarterToneSharpStein', + parenRightPaddingAdjustment: -1 + }, + '+-': { + code: 'accidentalKucukMucennebSharp', + parenRightPaddingAdjustment: -1 + }, + 'bs': { + code: 'accidentalBakiyeFlat', + parenRightPaddingAdjustment: -1 + }, + 'bss': { + code: 'accidentalBuyukMucennebFlat', + parenRightPaddingAdjustment: -1 + }, + 'o': { + code: 'accidentalSori', + parenRightPaddingAdjustment: -1 + }, + 'k': { + code: 'accidentalKoron', + parenRightPaddingAdjustment: -1 + }, + 'bbs': { + code: 'vexAccidentalMicrotonal1', + parenRightPaddingAdjustment: -1 + }, + '++-': { + code: 'vexAccidentalMicrotonal2', + parenRightPaddingAdjustment: -1 + }, + 'ashs': { + code: 'vexAccidentalMicrotonal3', + parenRightPaddingAdjustment: -1 + }, + 'afhf': { + code: 'vexAccidentalMicrotonal4', + parenRightPaddingAdjustment: -1 + } +}; +Flow.accidentalColumnsTable = { + 1: { + a: [1], + b: [1] + }, + 2: { + a: [1, 2] + }, + 3: { + a: [1, 3, 2], + b: [1, 2, 1], + second_on_bottom: [1, 2, 3] + }, + 4: { + a: [1, 3, 4, 2], + b: [1, 2, 3, 1], + spaced_out_tetrachord: [1, 2, 1, 2] + }, + 5: { + a: [1, 3, 5, 4, 2], + b: [1, 2, 4, 3, 1], + spaced_out_pentachord: [1, 2, 3, 2, 1], + very_spaced_out_pentachord: [1, 2, 1, 2, 1] + }, + 6: { + a: [1, 3, 5, 6, 4, 2], + b: [1, 2, 4, 5, 3, 1], + spaced_out_hexachord: [1, 3, 2, 1, 3, 2], + very_spaced_out_hexachord: [1, 2, 1, 2, 1, 2] + } +}; + +Flow.ornamentCodes = function (acc) { + return Flow.ornamentCodes.ornaments[acc]; +}; + +Flow.ornamentCodes.ornaments = { + 'mordent': { + code: 'ornamentShortTrill' + }, + 'mordent_inverted': { + code: 'ornamentMordent' + }, + 'turn': { + code: 'ornamentTurn' + }, + 'turn_inverted': { + code: 'ornamentTurnSlash' + }, + 'tr': { + code: 'ornamentTrill' + }, + 'upprall': { + code: 'ornamentPrecompSlideTrillDAnglebert' + }, + 'downprall': { + code: 'ornamentPrecompDoubleCadenceUpperPrefix' + }, + 'prallup': { + code: 'ornamentPrecompTrillSuffixDandrieu' + }, + 'pralldown': { + code: 'ornamentPrecompTrillLowerSuffix' + }, + 'upmordent': { + code: 'ornamentPrecompSlideTrillBach' + }, + 'downmordent': { + code: 'ornamentPrecompDoubleCadenceUpperPrefixTurn' + }, + 'lineprall': { + code: 'ornamentPrecompAppoggTrill' + }, + 'prallprall': { + code: 'ornamentTremblement' + } +}; + +Flow.keySignature = function (spec) { + var keySpec = Flow.keySignature.keySpecs[spec]; + + if (!keySpec) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadKeySignature', "Bad key signature spec: '".concat(spec, "'")); + } + + if (!keySpec.acc) { + return []; + } + + var notes = Flow.keySignature.accidentalList(keySpec.acc); + var acc_list = []; + + for (var i = 0; i < keySpec.num; ++i) { + var line = notes[i]; + acc_list.push({ + type: keySpec.acc, + line: line + }); + } + + return acc_list; +}; + +Flow.keySignature.keySpecs = { + 'C': { + acc: null, + num: 0 + }, + 'Am': { + acc: null, + num: 0 + }, + 'F': { + acc: 'b', + num: 1 + }, + 'Dm': { + acc: 'b', + num: 1 + }, + 'Bb': { + acc: 'b', + num: 2 + }, + 'Gm': { + acc: 'b', + num: 2 + }, + 'Eb': { + acc: 'b', + num: 3 + }, + 'Cm': { + acc: 'b', + num: 3 + }, + 'Ab': { + acc: 'b', + num: 4 + }, + 'Fm': { + acc: 'b', + num: 4 + }, + 'Db': { + acc: 'b', + num: 5 + }, + 'Bbm': { + acc: 'b', + num: 5 + }, + 'Gb': { + acc: 'b', + num: 6 + }, + 'Ebm': { + acc: 'b', + num: 6 + }, + 'Cb': { + acc: 'b', + num: 7 + }, + 'Abm': { + acc: 'b', + num: 7 + }, + 'G': { + acc: '#', + num: 1 + }, + 'Em': { + acc: '#', + num: 1 + }, + 'D': { + acc: '#', + num: 2 + }, + 'Bm': { + acc: '#', + num: 2 + }, + 'A': { + acc: '#', + num: 3 + }, + 'F#m': { + acc: '#', + num: 3 + }, + 'E': { + acc: '#', + num: 4 + }, + 'C#m': { + acc: '#', + num: 4 + }, + 'B': { + acc: '#', + num: 5 + }, + 'G#m': { + acc: '#', + num: 5 + }, + 'F#': { + acc: '#', + num: 6 + }, + 'D#m': { + acc: '#', + num: 6 + }, + 'C#': { + acc: '#', + num: 7 + }, + 'A#m': { + acc: '#', + num: 7 + } +}; +Flow.unicode = { + // Unicode accidentals + 'sharp': String.fromCharCode(parseInt('266F', 16)), + 'flat': String.fromCharCode(parseInt('266D', 16)), + 'natural': String.fromCharCode(parseInt('266E', 16)), + // Major Chord + 'triangle': String.fromCharCode(parseInt('25B3', 16)), + // half-diminished + 'o-with-slash': String.fromCharCode(parseInt('00F8', 16)), + // Diminished + 'degrees': String.fromCharCode(parseInt('00B0', 16)), + 'circle': String.fromCharCode(parseInt('25CB', 16)) +}; + +Flow.keySignature.accidentalList = function (acc) { + var patterns = { + 'b': [2, 0.5, 2.5, 1, 3, 1.5, 3.5], + '#': [0, 1.5, -0.5, 1, 2.5, 0.5, 2] + }; + return patterns[acc]; +}; // Used to convert duration aliases to the number based duration. +// If the input isn't an alias, simply return the input. +// +// example: 'q' -> '4', '8' -> '8' + + +Flow.sanitizeDuration = function (duration) { + var alias = Flow.durationAliases[duration]; + + if (alias !== undefined) { + duration = alias; + } + + if (Flow.durationToTicks.durations[duration] === undefined) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', "The provided duration is not valid: ".concat(duration)); + } + + return duration; +}; // Convert the `duration` to an fraction + + +Flow.durationToFraction = function (duration) { + return new _fraction__WEBPACK_IMPORTED_MODULE_1__["Fraction"]().parse(Flow.sanitizeDuration(duration)); +}; // Convert the `duration` to an number + + +Flow.durationToNumber = function (duration) { + return Flow.durationToFraction(duration).value(); +}; // Convert the `duration` to total ticks + + +Flow.durationToTicks = function (duration) { + duration = Flow.sanitizeDuration(duration); + var ticks = Flow.durationToTicks.durations[duration]; + + if (ticks === undefined) { + return null; + } + + return ticks; +}; + +Flow.durationToTicks.durations = { + '1/2': Flow.RESOLUTION * 2, + '1': Flow.RESOLUTION / 1, + '2': Flow.RESOLUTION / 2, + '4': Flow.RESOLUTION / 4, + '8': Flow.RESOLUTION / 8, + '16': Flow.RESOLUTION / 16, + '32': Flow.RESOLUTION / 32, + '64': Flow.RESOLUTION / 64, + '128': Flow.RESOLUTION / 128, + '256': Flow.RESOLUTION / 256 +}; +Flow.durationAliases = { + 'w': '1', + 'h': '2', + 'q': '4', + // This is the default duration used to render bars (BarNote). Bars no longer + // consume ticks, so this should be a no-op. + // + // TODO(0xfe): This needs to be cleaned up. + 'b': '256' +}; // Return a glyph given duration and type. The type can be a custom glyph code from customNoteHeads. + +Flow.getGlyphProps = function (duration, type) { + duration = Flow.sanitizeDuration(duration); + type = type || 'n'; // default type is a regular note + // Lookup duration for default glyph head code + + var code = Flow.getGlyphProps.duration_codes[duration]; + + if (code === undefined) { + return null; + } // Get glyph properties for 'type' from duration string (note, rest, harmonic, muted, slash) + + + var glyphTypeProperties = code.type[type]; // If this isn't a standard type, then lookup the custom note head map. + + if (glyphTypeProperties === undefined) { + // Try and get it from the custom list of note heads + var customGlyphTypeProperties = Flow.keyProperties.customNoteHeads[type.toUpperCase()]; // If not, then return with nothing + + if (customGlyphTypeProperties === undefined) { + return null; + } // Otherwise set it as the code_head value + + + glyphTypeProperties = _objectSpread({ + code_head: customGlyphTypeProperties.code + }, customGlyphTypeProperties); + } // Merge duration props for 'duration' with the note head properties. + + + return _objectSpread({}, code.common, {}, glyphTypeProperties); +}; + +Flow.getGlyphProps.validTypes = { + 'n': { + name: 'note' + }, + 'r': { + name: 'rest' + }, + 'h': { + name: 'harmonic' + }, + 'm': { + name: 'muted' + }, + 's': { + name: 'slash' + } +}; // Custom note heads + +Flow.keyProperties.customNoteHeads = { + /* Diamond */ + 'D0': { + code: 'noteheadDiamondWhole' + }, + 'D1': { + code: 'noteheadDiamondHalf' + }, + 'D2': { + code: 'noteheadDiamondBlack' + }, + 'D3': { + code: 'noteheadDiamondBlack' + }, + + /* Triangle */ + 'T0': { + code: 'noteheadTriangleUpWhole' + }, + 'T1': { + code: 'noteheadTriangleUpHalf' + }, + 'T2': { + code: 'noteheadTriangleUpBlack' + }, + 'T3': { + code: 'noteheadTriangleUpBlack' + }, + + /* Cross */ + 'X0': { + code: 'noteheadXWhole' + }, + 'X1': { + code: 'noteheadXHalf' + }, + 'X2': { + code: 'noteheadXBlack' + }, + 'X3': { + code: 'noteheadCircleX' + }, + + /* Square */ + 'S1': { + code: 'noteheadSquareWhite' + }, + 'S2': { + code: 'noteheadSquareBlack' + }, + + /* Rectangle */ + 'R1': { + code: 'vexNoteHeadRectWhite' + }, + // no smufl code + 'R2': { + code: 'vexNoteHeadRectBlack' + } // no smufl code + +}; +Flow.getGlyphProps.duration_codes = { + '1/2': { + common: { + getWidth: function getWidth() { + var scale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Flow.DEFAULT_NOTATION_FONT_SCALE; + return new _glyph__WEBPACK_IMPORTED_MODULE_2__["Glyph"](this.code_head || 'v53', scale).getMetrics().width; + }, + stem: false, + stem_offset: 0, + flag: false, + stem_up_extension: -Flow.STEM_HEIGHT, + stem_down_extension: -Flow.STEM_HEIGHT, + tabnote_stem_up_extension: -Flow.STEM_HEIGHT, + tabnote_stem_down_extension: -Flow.STEM_HEIGHT, + dot_shiftY: 0, + line_above: 0, + line_below: 0 + }, + type: { + 'n': { + // Breve note + code_head: 'noteheadDoubleWhole' + }, + 'h': { + // Breve note harmonic + code_head: 'unpitchedPercussionClef1' + }, + 'm': { + // Breve note muted - + code_head: 'vexNoteHeadMutedBreve', + stem_offset: 0 + }, + 'r': { + // Breve rest + code_head: 'restDoubleWhole', + rest: true, + position: 'B/5', + dot_shiftY: 0.5 + }, + 's': { + // Breve note slash - + // Drawn with canvas primitives + getWidth: function getWidth() { + return Flow.SLASH_NOTEHEAD_WIDTH; + }, + position: 'B/4' + } + } + }, + '1': { + common: { + getWidth: function getWidth() { + var scale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Flow.DEFAULT_NOTATION_FONT_SCALE; + return new _glyph__WEBPACK_IMPORTED_MODULE_2__["Glyph"](this.code_head || 'v1d', scale).getMetrics().width; + }, + stem: false, + stem_offset: 0, + flag: false, + stem_up_extension: -Flow.STEM_HEIGHT, + stem_down_extension: -Flow.STEM_HEIGHT, + tabnote_stem_up_extension: -Flow.STEM_HEIGHT, + tabnote_stem_down_extension: -Flow.STEM_HEIGHT, + dot_shiftY: 0, + line_above: 0, + line_below: 0 + }, + type: { + 'n': { + // Whole note + code_head: 'noteheadWhole' + }, + 'h': { + // Whole note harmonic + code_head: 'noteheadDiamondWhole' + }, + 'm': { + // Whole note muted + code_head: 'noteheadXWhole', + stem_offset: -3 + }, + 'r': { + // Whole rest + code_head: 'restWhole', + rest: true, + position: 'D/5', + dot_shiftY: 0.5 + }, + 's': { + // Whole note slash + // Drawn with canvas primitives + getWidth: function getWidth() { + return Flow.SLASH_NOTEHEAD_WIDTH; + }, + position: 'B/4' + } + } + }, + '2': { + common: { + getWidth: function getWidth() { + var scale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Flow.DEFAULT_NOTATION_FONT_SCALE; + return new _glyph__WEBPACK_IMPORTED_MODULE_2__["Glyph"](this.code_head || 'noteheadHalf', scale).getMetrics().width; + }, + stem: true, + stem_offset: 0, + flag: false, + stem_up_extension: 0, + stem_down_extension: 0, + tabnote_stem_up_extension: 0, + tabnote_stem_down_extension: 0, + dot_shiftY: 0, + line_above: 0, + line_below: 0 + }, + type: { + 'n': { + // Half note + code_head: 'noteheadHalf' + }, + 'h': { + // Half note harmonic + code_head: 'noteheadDiamondHalf' + }, + 'm': { + // Half note muted + code_head: 'noteheadXHalf', + stem_offset: -3 + }, + 'r': { + // Half rest + code_head: 'restHalf', + stem: false, + rest: true, + position: 'B/4', + dot_shiftY: -0.5 + }, + 's': { + // Half note slash + // Drawn with canvas primitives + getWidth: function getWidth() { + return Flow.SLASH_NOTEHEAD_WIDTH; + }, + position: 'B/4' + } + } + }, + '4': { + common: { + getWidth: function getWidth() { + var scale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Flow.DEFAULT_NOTATION_FONT_SCALE; + return new _glyph__WEBPACK_IMPORTED_MODULE_2__["Glyph"](this.code_head || 'noteheadBlack', scale).getMetrics().width; + }, + stem: true, + stem_offset: 0, + flag: false, + stem_up_extension: 0, + stem_down_extension: 0, + tabnote_stem_up_extension: 0, + tabnote_stem_down_extension: 0, + dot_shiftY: 0, + line_above: 0, + line_below: 0 + }, + type: { + 'n': { + // Quarter note + code_head: 'noteheadBlack' + }, + 'h': { + // Quarter harmonic + code_head: 'noteheadDiamondBlack' + }, + 'm': { + // Quarter muted + code_head: 'noteheadXBlack' + }, + 'r': { + // Quarter rest + code_head: 'restQuarter', + stem: false, + rest: true, + position: 'B/4', + dot_shiftY: -0.5, + line_above: 1.5, + line_below: 1.5 + }, + 's': { + // Quarter slash + // Drawn with canvas primitives + getWidth: function getWidth() { + return Flow.SLASH_NOTEHEAD_WIDTH; + }, + position: 'B/4' + } + } + }, + '8': { + common: { + getWidth: function getWidth() { + var scale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Flow.DEFAULT_NOTATION_FONT_SCALE; + return new _glyph__WEBPACK_IMPORTED_MODULE_2__["Glyph"](this.code_head || 'noteheadBlack', scale).getMetrics().width; + }, + stem: true, + stem_offset: 0, + flag: true, + beam_count: 1, + code_flag_upstem: 'flag8thUp', + code_flag_downstem: 'flag8thDown', + stem_up_extension: 0, + stem_down_extension: 0, + tabnote_stem_up_extension: 0, + tabnote_stem_down_extension: 0, + dot_shiftY: 0, + line_above: 0, + line_below: 0 + }, + type: { + 'n': { + // Eighth note + code_head: 'noteheadBlack' + }, + 'h': { + // Eighth note harmonic + code_head: 'noteheadDiamondBlack' + }, + 'm': { + // Eighth note muted + code_head: 'noteheadXBlack' + }, + 'r': { + // Eighth rest + code_head: 'rest8th', + stem: false, + flag: false, + rest: true, + position: 'B/4', + dot_shiftY: -0.5, + line_above: 1.0, + line_below: 1.0 + }, + 's': { + // Eight slash + // Drawn with canvas primitives + getWidth: function getWidth() { + return Flow.SLASH_NOTEHEAD_WIDTH; + }, + position: 'B/4' + } + } + }, + '16': { + common: { + beam_count: 2, + getWidth: function getWidth() { + var scale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Flow.DEFAULT_NOTATION_FONT_SCALE; + return new _glyph__WEBPACK_IMPORTED_MODULE_2__["Glyph"](this.code_head || 'noteheadBlack', scale).getMetrics().width; + }, + stem: true, + stem_offset: 0, + flag: true, + code_flag_upstem: 'flag16thUp', + code_flag_downstem: 'flag16thDown', + stem_up_extension: 0, + stem_down_extension: 0, + tabnote_stem_up_extension: 0, + tabnote_stem_down_extension: 0, + dot_shiftY: 0, + line_above: 0, + line_below: 0 + }, + type: { + 'n': { + // Sixteenth note + code_head: 'noteheadBlack' + }, + 'h': { + // Sixteenth note harmonic + code_head: 'noteheadDiamondBlack' + }, + 'm': { + // Sixteenth note muted + code_head: 'noteheadXBlack' + }, + 'r': { + // Sixteenth rest + code_head: 'rest16th', + stem: false, + flag: false, + rest: true, + position: 'B/4', + dot_shiftY: -0.5, + line_above: 1.0, + line_below: 2.0 + }, + 's': { + // Sixteenth slash + // Drawn with canvas primitives + getWidth: function getWidth() { + return Flow.SLASH_NOTEHEAD_WIDTH; + }, + position: 'B/4' + } + } + }, + '32': { + common: { + beam_count: 3, + getWidth: function getWidth() { + var scale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Flow.DEFAULT_NOTATION_FONT_SCALE; + return new _glyph__WEBPACK_IMPORTED_MODULE_2__["Glyph"](this.code_head || 'noteheadBlack', scale).getMetrics().width; + }, + stem: true, + stem_offset: 0, + flag: true, + code_flag_upstem: 'flag32ndUp', + code_flag_downstem: 'flag32ndDown', + stem_up_extension: 9, + stem_down_extension: 9, + tabnote_stem_up_extension: 8, + tabnote_stem_down_extension: 5, + dot_shiftY: 0, + line_above: 0, + line_below: 0 + }, + type: { + 'n': { + // Thirty-second note + code_head: 'noteheadBlack' + }, + 'h': { + // Thirty-second harmonic + code_head: 'noteheadDiamondBlack' + }, + 'm': { + // Thirty-second muted + code_head: 'noteheadXBlack' + }, + 'r': { + // Thirty-second rest + code_head: 'rest32nd', + stem: false, + flag: false, + rest: true, + position: 'B/4', + dot_shiftY: -1.5, + line_above: 2.0, + line_below: 2.0 + }, + 's': { + // Thirty-second slash + // Drawn with canvas primitives + getWidth: function getWidth() { + return Flow.SLASH_NOTEHEAD_WIDTH; + }, + position: 'B/4' + } + } + }, + '64': { + common: { + beam_count: 4, + getWidth: function getWidth() { + var scale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Flow.DEFAULT_NOTATION_FONT_SCALE; + return new _glyph__WEBPACK_IMPORTED_MODULE_2__["Glyph"](this.code_head || 'noteheadBlack', scale).getMetrics().width; + }, + stem: true, + stem_offset: 0, + flag: true, + code_flag_upstem: 'flag64thUp', + code_flag_downstem: 'flag64thDown', + stem_up_extension: 13, + stem_down_extension: 13, + tabnote_stem_up_extension: 12, + tabnote_stem_down_extension: 9, + dot_shiftY: 0, + line_above: 0, + line_below: 0 + }, + type: { + 'n': { + // Sixty-fourth note + code_head: 'noteheadBlack' + }, + 'h': { + // Sixty-fourth harmonic + code_head: 'noteheadDiamondBlack' + }, + 'm': { + // Sixty-fourth muted + code_head: 'noteheadXBlack' + }, + 'r': { + // Sixty-fourth rest + code_head: 'rest64th', + stem: false, + flag: false, + rest: true, + position: 'B/4', + dot_shiftY: -1.5, + line_above: 2.0, + line_below: 3.0 + }, + 's': { + // Sixty-fourth slash + // Drawn with canvas primitives + getWidth: function getWidth() { + return Flow.SLASH_NOTEHEAD_WIDTH; + }, + position: 'B/4' + } + } + }, + '128': { + common: { + beam_count: 5, + getWidth: function getWidth() { + var scale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Flow.DEFAULT_NOTATION_FONT_SCALE; + return new _glyph__WEBPACK_IMPORTED_MODULE_2__["Glyph"](this.code_head || 'noteheadBlack', scale).getMetrics().width; + }, + stem: true, + stem_offset: 0, + flag: true, + code_flag_upstem: 'flag128thUp', + code_flag_downstem: 'flag128thDown', + stem_up_extension: 22, + stem_down_extension: 22, + tabnote_stem_up_extension: 21, + tabnote_stem_down_extension: 18, + dot_shiftY: 0, + line_above: 0, + line_below: 0 + }, + type: { + 'n': { + // Hundred-twenty-eight note + code_head: 'noteheadBlack' + }, + 'h': { + // Hundred-twenty-eight harmonic + code_head: 'noteheadDiamondBlack' + }, + 'm': { + // Hundred-twenty-eight muted + code_head: 'noteheadXBlack' + }, + 'r': { + // Hundred-twenty-eight rest + code_head: 'rest128th', + stem: false, + flag: false, + rest: true, + position: 'B/4', + dot_shiftY: 1.5, + line_above: 3.0, + line_below: 3.0 + }, + 's': { + // Hundred-twenty-eight rest + // Drawn with canvas primitives + getWidth: function getWidth() { + return Flow.SLASH_NOTEHEAD_WIDTH; + }, + position: 'B/4' + } + } + } +}; // Some defaults + +Flow.TIME4_4 = { + num_beats: 4, + beat_value: 4, + resolution: Flow.RESOLUTION +}; + + +/***/ }), + +/***/ "./src/tabnote.js": +/*!************************!*\ + !*** ./src/tabnote.js ***! + \************************/ +/*! exports provided: TabNote */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TabNote", function() { return TabNote; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifier */ "./src/modifier.js"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stem */ "./src/stem.js"); +/* harmony import */ var _stemmablenote__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stemmablenote */ "./src/stemmablenote.js"); +/* harmony import */ var _dot__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dot */ "./src/dot.js"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./glyph */ "./src/glyph.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// The file implements notes for Tablature notation. This consists of one or +// more fret positions, and can either be drawn with or without stems. +// +// See `tests/tabnote_tests.js` for usage examples + + + + + + + // Gets the unused strings grouped together if consecutive. +// +// Parameters: +// * num_lines - The number of lines +// * strings_used - An array of numbers representing which strings have fret positions + +function getUnusedStringGroups(num_lines, strings_used) { + var stem_through = []; + var group = []; + + for (var string = 1; string <= num_lines; string++) { + var is_used = strings_used.indexOf(string) > -1; + + if (!is_used) { + group.push(string); + } else { + stem_through.push(group); + group = []; + } + } + + if (group.length > 0) stem_through.push(group); + return stem_through; +} // Gets groups of points that outline the partial stem lines +// between fret positions +// +// Parameters: +// * stem_Y - The `y` coordinate the stem is located on +// * unused_strings - An array of groups of unused strings +// * stave - The stave to use for reference +// * stem_direction - The direction of the stem + + +function getPartialStemLines(stem_y, unused_strings, stave, stem_direction) { + var up_stem = stem_direction !== 1; + var down_stem = stem_direction !== -1; + var line_spacing = stave.getSpacingBetweenLines(); + var total_lines = stave.getNumLines(); + var stem_lines = []; + unused_strings.forEach(function (strings) { + var containsLastString = strings.indexOf(total_lines) > -1; + var containsFirstString = strings.indexOf(1) > -1; + + if (up_stem && containsFirstString || down_stem && containsLastString) { + return; + } // If there's only one string in the group, push a duplicate value. + // We do this because we need 2 strings to convert into upper/lower y + // values. + + + if (strings.length === 1) { + strings.push(strings[0]); + } + + var line_ys = []; // Iterate through each group string and store it's y position + + strings.forEach(function (string, index, strings) { + var isTopBound = string === 1; + var isBottomBound = string === total_lines; // Get the y value for the appropriate staff line, + // we adjust for a 0 index array, since string numbers are index 1 + + var y = stave.getYForLine(string - 1); // Unless the string is the first or last, add padding to each side + // of the line + + if (index === 0 && !isTopBound) { + y -= line_spacing / 2 - 1; + } else if (index === strings.length - 1 && !isBottomBound) { + y += line_spacing / 2 - 1; + } // Store the y value + + + line_ys.push(y); // Store a subsequent y value connecting this group to the main + // stem above/below the stave if it's the top/bottom string + + if (stem_direction === 1 && isTopBound) { + line_ys.push(stem_y - 2); + } else if (stem_direction === -1 && isBottomBound) { + line_ys.push(stem_y + 2); + } + }); // Add the sorted y values to the + + stem_lines.push(line_ys.sort(function (a, b) { + return a - b; + })); + }); + return stem_lines; +} + +var TabNote = +/*#__PURE__*/ +function (_StemmableNote) { + _inherits(TabNote, _StemmableNote); + + _createClass(TabNote, null, [{ + key: "CATEGORY", + get: function get() { + return 'tabnotes'; + } // Initialize the TabNote with a `tab_struct` full of properties + // and whether to `draw_stem` when rendering the note + + }]); + + function TabNote(tab_struct, draw_stem) { + var _this; + + _classCallCheck(this, TabNote); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(TabNote).call(this, tab_struct)); + + _this.setAttribute('type', 'TabNote'); + + _this.ghost = false; // Renders parenthesis around notes + // Note properties + // + // The fret positions in the note. An array of `{ str: X, fret: X }` + + _this.positions = tab_struct.positions; // Render Options + + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(_this.render_options, { + // font size for note heads and rests + glyph_font_scale: _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].DEFAULT_TABLATURE_FONT_SCALE, + // Flag to draw a stem + draw_stem: draw_stem, + // Flag to draw dot modifiers + draw_dots: draw_stem, + // Flag to extend the main stem through the stave and fret positions + draw_stem_through_stave: false, + // vertical shift from stave line + y_shift: 0, + // normal glyph scale + scale: 1.0, + // default tablature font + font: '10pt Arial' + }); + _this.glyph = _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].getGlyphProps(_this.duration, _this.noteType); + + if (!_this.glyph) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('BadArguments', "Invalid note initialization data (No glyph found): ".concat(JSON.stringify(tab_struct))); + } + + _this.buildStem(); + + if (tab_struct.stem_direction) { + _this.setStemDirection(tab_struct.stem_direction); + } else { + _this.setStemDirection(_stem__WEBPACK_IMPORTED_MODULE_3__["Stem"].UP); + } // Renders parenthesis around notes + + + _this.ghost = false; + + _this.updateWidth(); + + return _this; + } + + _createClass(TabNote, [{ + key: "reset", + value: function reset() { + if (this.stave) this.setStave(this.stave); + } // The ModifierContext category + + }, { + key: "getCategory", + value: function getCategory() { + return TabNote.CATEGORY; + } // Set as ghost `TabNote`, surrounds the fret positions with parenthesis. + // Often used for indicating frets that are being bent to + + }, { + key: "setGhost", + value: function setGhost(ghost) { + this.ghost = ghost; + this.updateWidth(); + return this; + } // Determine if the note has a stem + + }, { + key: "hasStem", + value: function hasStem() { + return this.render_options.draw_stem; + } // Get the default stem extension for the note + + }, { + key: "getStemExtension", + value: function getStemExtension() { + var glyph = this.getGlyph(); + + if (this.stem_extension_override != null) { + return this.stem_extension_override; + } + + if (glyph) { + return this.getStemDirection() === 1 ? glyph.tabnote_stem_up_extension : glyph.tabnote_stem_down_extension; + } + + return 0; + } // Add a dot to the note + + }, { + key: "addDot", + value: function addDot() { + var dot = new _dot__WEBPACK_IMPORTED_MODULE_5__["Dot"](); + this.dots += 1; + return this.addModifier(dot, 0); + } // Calculate and store the width of the note + + }, { + key: "updateWidth", + value: function updateWidth() { + var _this2 = this; + + this.glyphs = []; + this.width = 0; + + for (var i = 0; i < this.positions.length; ++i) { + var fret = this.positions[i].fret; + if (this.ghost) fret = '(' + fret + ')'; + var glyph = _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].tabToGlyph(fret, this.render_options.scale); + this.glyphs.push(glyph); + this.width = Math.max(glyph.getWidth(), this.width); + } // For some reason we associate a notehead glyph with a TabNote, and this + // glyph is used for certain width calculations. Of course, this is totally + // incorrect since a notehead is a poor approximation for the dimensions of + // a fret number which can have multiple digits. As a result, we must + // overwrite getWidth() to return the correct width + + + this.glyph.getWidth = function () { + return _this2.width; + }; + } // Set the `stave` to the note + + }, { + key: "setStave", + value: function setStave(stave) { + var _this3 = this; + + _get(_getPrototypeOf(TabNote.prototype), "setStave", this).call(this, stave); + + this.context = stave.context; // Calculate the fret number width based on font used + + var i; + + if (this.context) { + var ctx = this.context; + this.width = 0; + + var _loop = function _loop() { + var glyph = _this3.glyphs[i]; + var text = '' + glyph.text; + + if (text.toUpperCase() !== 'X') { + ctx.save(); + ctx.setRawFont(_this3.render_options.font); + glyph.width = ctx.measureText(text).width; + ctx.restore(); + + glyph.getWidth = function () { + return glyph.width; + }; + } + + _this3.width = Math.max(glyph.getWidth(), _this3.width); + }; + + for (i = 0; i < this.glyphs.length; ++i) { + _loop(); + } + + this.glyph.getWidth = function () { + return _this3.width; + }; + } // we subtract 1 from `line` because getYForLine expects a 0-based index, + // while the position.str is a 1-based index + + + var ys = this.positions.map(function (_ref) { + var line = _ref.str; + return stave.getYForLine(line - 1); + }); + this.setYs(ys); + + if (this.stem) { + this.stem.setYBounds(this.getStemY(), this.getStemY()); + } + + return this; + } // Get the fret positions for the note + + }, { + key: "getPositions", + value: function getPositions() { + return this.positions; + } // Add self to the provided modifier context `mc` + + }, { + key: "addToModifierContext", + value: function addToModifierContext(mc) { + this.setModifierContext(mc); + + for (var i = 0; i < this.modifiers.length; ++i) { + this.modifierContext.addModifier(this.modifiers[i]); + } + + this.modifierContext.addModifier(this); + this.preFormatted = false; + return this; + } // Get the `x` coordinate to the right of the note + + }, { + key: "getTieRightX", + value: function getTieRightX() { + var tieStartX = this.getAbsoluteX(); + var note_glyph_width = this.glyph.getWidth(); + tieStartX += note_glyph_width / 2; + tieStartX += -this.width / 2 + this.width + 2; + return tieStartX; + } // Get the `x` coordinate to the left of the note + + }, { + key: "getTieLeftX", + value: function getTieLeftX() { + var tieEndX = this.getAbsoluteX(); + var note_glyph_width = this.glyph.getWidth(); + tieEndX += note_glyph_width / 2; + tieEndX -= this.width / 2 + 2; + return tieEndX; + } // Get the default `x` and `y` coordinates for a modifier at a specific + // `position` at a fret position `index` + + }, { + key: "getModifierStartXY", + value: function getModifierStartXY(position, index) { + if (!this.preFormatted) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('UnformattedNote', "Can't call GetModifierStartXY on an unformatted note"); + } + + if (this.ys.length === 0) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoYValues', 'No Y-Values calculated for this note.'); + } + + var x = 0; + + if (position === _modifier__WEBPACK_IMPORTED_MODULE_2__["Modifier"].Position.LEFT) { + x = -1 * 2; // FIXME: modifier padding, move to font file + } else if (position === _modifier__WEBPACK_IMPORTED_MODULE_2__["Modifier"].Position.RIGHT) { + x = this.width + 2; // FIXME: modifier padding, move to font file + } else if (position === _modifier__WEBPACK_IMPORTED_MODULE_2__["Modifier"].Position.BELOW || position === _modifier__WEBPACK_IMPORTED_MODULE_2__["Modifier"].Position.ABOVE) { + var note_glyph_width = this.glyph.getWidth(); + x = note_glyph_width / 2; + } + + return { + x: this.getAbsoluteX() + x, + y: this.ys[index] + }; + } // Get the default line for rest + + }, { + key: "getLineForRest", + value: function getLineForRest() { + return this.positions[0].str; + } // Pre-render formatting + + }, { + key: "preFormat", + value: function preFormat() { + if (this.preFormatted) return; + if (this.modifierContext) this.modifierContext.preFormat(); // width is already set during init() + + this.setPreFormatted(true); + } // Get the x position for the stem + + }, { + key: "getStemX", + value: function getStemX() { + return this.getCenterGlyphX(); + } // Get the y position for the stem + + }, { + key: "getStemY", + value: function getStemY() { + var num_lines = this.stave.getNumLines(); // The decimal staff line amounts provide optimal spacing between the + // fret number and the stem + + var stemUpLine = -0.5; + var stemDownLine = num_lines - 0.5; + var stemStartLine = _stem__WEBPACK_IMPORTED_MODULE_3__["Stem"].UP === this.stem_direction ? stemUpLine : stemDownLine; + return this.stave.getYForLine(stemStartLine); + } // Get the stem extents for the tabnote + + }, { + key: "getStemExtents", + value: function getStemExtents() { + return this.stem.getExtents(); + } // Draw the fal onto the context + + }, { + key: "drawFlag", + value: function drawFlag() { + var beam = this.beam, + glyph = this.glyph, + context = this.context, + stem = this.stem, + stem_direction = this.stem_direction, + _this$render_options = this.render_options, + draw_stem = _this$render_options.draw_stem, + glyph_font_scale = _this$render_options.glyph_font_scale; + var shouldDrawFlag = beam == null && draw_stem; // Now it's the flag's turn. + + if (glyph.flag && shouldDrawFlag) { + var flag_x = this.getStemX() + 1; + var flag_y = this.getStemY() - stem.getHeight(); + var flag_code = stem_direction === _stem__WEBPACK_IMPORTED_MODULE_3__["Stem"].DOWN ? glyph.code_flag_downstem // Down stems have flags on the left. + : glyph.code_flag_upstem; // Draw the Flag + + _glyph__WEBPACK_IMPORTED_MODULE_6__["Glyph"].renderGlyph(context, flag_x, flag_y, glyph_font_scale, flag_code, { + category: 'flag.tabStem' + }); + } + } // Render the modifiers onto the context + + }, { + key: "drawModifiers", + value: function drawModifiers() { + var _this4 = this; + + // Draw the modifiers + this.modifiers.forEach(function (modifier) { + // Only draw the dots if enabled + if (modifier.getCategory() === 'dots' && !_this4.render_options.draw_dots) return; + modifier.setContext(_this4.context); + modifier.drawWithStyle(); + }); + } // Render the stem extension through the fret positions + + }, { + key: "drawStemThrough", + value: function drawStemThrough() { + var stem_x = this.getStemX(); + var stem_y = this.getStemY(); + var ctx = this.context; + var stem_through = this.render_options.draw_stem_through_stave; + var draw_stem = this.render_options.draw_stem; + + if (draw_stem && stem_through) { + var total_lines = this.stave.getNumLines(); + var strings_used = this.positions.map(function (position) { + return position.str; + }); + var unused_strings = getUnusedStringGroups(total_lines, strings_used); + var stem_lines = getPartialStemLines(stem_y, unused_strings, this.getStave(), this.getStemDirection()); + ctx.save(); + ctx.setLineWidth(_stem__WEBPACK_IMPORTED_MODULE_3__["Stem"].WIDTH); + stem_lines.forEach(function (bounds) { + if (bounds.length === 0) return; + ctx.beginPath(); + ctx.moveTo(stem_x, bounds[0]); + ctx.lineTo(stem_x, bounds[bounds.length - 1]); + ctx.stroke(); + ctx.closePath(); + }); + ctx.restore(); + } + } // Render the fret positions onto the context + + }, { + key: "drawPositions", + value: function drawPositions() { + var ctx = this.context; + var x = this.getAbsoluteX(); + var ys = this.ys; + + for (var i = 0; i < this.positions.length; ++i) { + var y = ys[i] + this.render_options.y_shift; + var glyph = this.glyphs[i]; // Center the fret text beneath the notation note head + + var note_glyph_width = this.glyph.getWidth(); + var tab_x = x + note_glyph_width / 2 - glyph.getWidth() / 2; // FIXME: Magic numbers. + + ctx.clearRect(tab_x - 2, y - 3, glyph.getWidth() + 4, 6); + + if (glyph.code) { + _glyph__WEBPACK_IMPORTED_MODULE_6__["Glyph"].renderGlyph(ctx, tab_x, y, this.render_options.glyph_font_scale * this.render_options.scale, glyph.code); + } else { + ctx.save(); + ctx.setRawFont(this.render_options.font); + var text = glyph.text.toString(); + ctx.fillText(text, tab_x, y + 5 * this.render_options.scale); + ctx.restore(); + } + } + } // The main rendering function for the entire note + + }, { + key: "draw", + value: function draw() { + this.checkContext(); + + if (!this.stave) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoStave', "Can't draw without a stave."); + } + + if (this.ys.length === 0) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoYValues', "Can't draw note without Y values."); + } + + this.setRendered(); + var render_stem = this.beam == null && this.render_options.draw_stem; + this.drawPositions(); + this.drawStemThrough(); + var stem_x = this.getStemX(); + this.stem.setNoteHeadXBounds(stem_x, stem_x); + + if (render_stem) { + this.context.openGroup('stem', null, { + pointerBBox: true + }); + this.stem.setContext(this.context).draw(); + this.context.closeGroup(); + } + + this.drawFlag(); + this.drawModifiers(); + } + }]); + + return TabNote; +}(_stemmablenote__WEBPACK_IMPORTED_MODULE_4__["StemmableNote"]); + +/***/ }), + +/***/ "./src/tabslide.js": +/*!*************************!*\ + !*** ./src/tabslide.js ***! + \*************************/ +/*! exports provided: TabSlide */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TabSlide", function() { return TabSlide; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _tabtie__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tabtie */ "./src/tabtie.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// This class implements varies types of ties between contiguous notes. The +// ties include: regular ties, hammer ons, pull offs, and slides. + + +var TabSlide = +/*#__PURE__*/ +function (_TabTie) { + _inherits(TabSlide, _TabTie); + + _createClass(TabSlide, null, [{ + key: "createSlideUp", + value: function createSlideUp(notes) { + return new TabSlide(notes, TabSlide.SLIDE_UP); + } + }, { + key: "createSlideDown", + value: function createSlideDown(notes) { + return new TabSlide(notes, TabSlide.SLIDE_DOWN); + } + }, { + key: "SLIDE_UP", + get: function get() { + return 1; + } + }, { + key: "SLIDE_DOWN", + get: function get() { + return -1; + } + }]); + + function TabSlide(notes, direction) { + var _this; + + _classCallCheck(this, TabSlide); + + /** + * Notes is a struct that has: + * + * { + * first_note: Note, + * last_note: Note, + * first_indices: [n1, n2, n3], + * last_indices: [n1, n2, n3] + * } + * + **/ + _this = _possibleConstructorReturn(this, _getPrototypeOf(TabSlide).call(this, notes, 'sl.')); + + _this.setAttribute('type', 'TabSlide'); + + if (!direction) { + var first_fret = notes.first_note.getPositions()[0].fret; + var last_fret = notes.last_note.getPositions()[0].fret; + direction = parseInt(first_fret, 10) > parseInt(last_fret, 10) ? TabSlide.SLIDE_DOWN : TabSlide.SLIDE_UP; + } + + _this.slide_direction = direction; + _this.render_options.cp1 = 11; + _this.render_options.cp2 = 14; + _this.render_options.y_shift = 0.5; + + _this.setFont({ + font: 'Times', + size: 10, + style: 'bold italic' + }); + + _this.setNotes(notes); + + return _this; + } + + _createClass(TabSlide, [{ + key: "renderTie", + value: function renderTie(params) { + if (params.first_ys.length === 0 || params.last_ys.length === 0) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', 'No Y-values to render'); + } + + var ctx = this.context; + var first_x_px = params.first_x_px; + var first_ys = params.first_ys; + var last_x_px = params.last_x_px; + var direction = this.slide_direction; + + if (direction !== TabSlide.SLIDE_UP && direction !== TabSlide.SLIDE_DOWN) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadSlide', 'Invalid slide direction'); + } + + for (var i = 0; i < this.first_indices.length; ++i) { + var slide_y = first_ys[this.first_indices[i]] + this.render_options.y_shift; + + if (isNaN(slide_y)) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', 'Bad indices for slide rendering.'); + } + + ctx.beginPath(); + ctx.moveTo(first_x_px, slide_y + 3 * direction); + ctx.lineTo(last_x_px, slide_y - 3 * direction); + ctx.closePath(); + ctx.stroke(); + } + + this.setRendered(); + } + }]); + + return TabSlide; +}(_tabtie__WEBPACK_IMPORTED_MODULE_1__["TabTie"]); + +/***/ }), + +/***/ "./src/tabstave.js": +/*!*************************!*\ + !*** ./src/tabstave.js ***! + \*************************/ +/*! exports provided: TabStave */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TabStave", function() { return TabStave; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _stave__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stave */ "./src/stave.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. + + +var TabStave = +/*#__PURE__*/ +function (_Stave) { + _inherits(TabStave, _Stave); + + function TabStave(x, y, width, options) { + var _this; + + _classCallCheck(this, TabStave); + + var tab_options = { + spacing_between_lines_px: 13, + num_lines: 6, + top_text_position: 1 + }; + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(tab_options, options); + _this = _possibleConstructorReturn(this, _getPrototypeOf(TabStave).call(this, x, y, width, tab_options)); + + _this.setAttribute('type', 'TabStave'); + + return _this; + } + + _createClass(TabStave, [{ + key: "getYForGlyphs", + value: function getYForGlyphs() { + return this.getYForLine(2.5); + } // Deprecated + + }, { + key: "addTabGlyph", + value: function addTabGlyph() { + this.addClef('tab'); + return this; + } + }]); + + return TabStave; +}(_stave__WEBPACK_IMPORTED_MODULE_1__["Stave"]); + +/***/ }), + +/***/ "./src/tabtie.js": +/*!***********************!*\ + !*** ./src/tabtie.js ***! + \***********************/ +/*! exports provided: TabTie */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TabTie", function() { return TabTie; }); +/* harmony import */ var _stavetie__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./stavetie */ "./src/stavetie.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// / [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// This class implements varies types of ties between contiguous notes. The +// ties include: regular ties, hammer ons, pull offs, and slides. + +var TabTie = +/*#__PURE__*/ +function (_StaveTie) { + _inherits(TabTie, _StaveTie); + + _createClass(TabTie, null, [{ + key: "createHammeron", + value: function createHammeron(notes) { + return new TabTie(notes, 'H'); + } + }, { + key: "createPulloff", + value: function createPulloff(notes) { + return new TabTie(notes, 'P'); + } + }]); + + function TabTie(notes, text) { + var _this; + + _classCallCheck(this, TabTie); + + /** + * Notes is a struct that has: + * + * { + * first_note: Note, + * last_note: Note, + * first_indices: [n1, n2, n3], + * last_indices: [n1, n2, n3] + * } + * + **/ + _this = _possibleConstructorReturn(this, _getPrototypeOf(TabTie).call(this, notes, text)); + + _this.setAttribute('type', 'TabTie'); + + _this.render_options.cp1 = 9; + _this.render_options.cp2 = 11; + _this.render_options.y_shift = 3; + + _this.setNotes(notes); + + return _this; + } + + _createClass(TabTie, [{ + key: "draw", + value: function draw() { + this.checkContext(); + this.setRendered(); + var first_note = this.first_note; + var last_note = this.last_note; + var first_x_px; + var last_x_px; + var first_ys; + var last_ys; + + if (first_note) { + first_x_px = first_note.getTieRightX() + this.render_options.tie_spacing; + first_ys = first_note.getYs(); + } else { + first_x_px = last_note.getStave().getTieStartX(); + first_ys = last_note.getYs(); + this.first_indices = this.last_indices; + } + + if (last_note) { + last_x_px = last_note.getTieLeftX() + this.render_options.tie_spacing; + last_ys = last_note.getYs(); + } else { + last_x_px = first_note.getStave().getTieEndX(); + last_ys = first_note.getYs(); + this.last_indices = this.first_indices; + } + + this.renderTie({ + first_x_px: first_x_px, + last_x_px: last_x_px, + first_ys: first_ys, + last_ys: last_ys, + direction: -1 // Tab tie's are always face up. + + }); + this.renderText(first_x_px, last_x_px); + return true; + } + }]); + + return TabTie; +}(_stavetie__WEBPACK_IMPORTED_MODULE_0__["StaveTie"]); + +/***/ }), + +/***/ "./src/textbracket.js": +/*!****************************!*\ + !*** ./src/textbracket.js ***! + \****************************/ +/*! exports provided: TextBracket */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextBracket", function() { return TextBracket; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element */ "./src/element.js"); +/* harmony import */ var _renderer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./renderer */ "./src/renderer.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Cyril Silverman +// +// ## Description +// +// This file implement `TextBrackets` which extend between two notes. +// The octave transposition markings (8va, 8vb, 15va, 15vb) can be created +// using this class. + + + + // To enable logging for this class. Set `Vex.Flow.TextBracket.DEBUG` to `true`. + +function L() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (TextBracket.DEBUG) _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].L('Vex.Flow.TextBracket', args); +} + +var TextBracket = +/*#__PURE__*/ +function (_Element) { + _inherits(TextBracket, _Element); + + _createClass(TextBracket, null, [{ + key: "Positions", + // FIXME: Modifier.Position is singular while this is plural, make consistent + get: function get() { + return { + TOP: 1, + BOTTOM: -1 + }; + } + }, { + key: "PositionString", + get: function get() { + return { + top: TextBracket.Positions.TOP, + bottom: TextBracket.Positions.BOTTOM + }; + } + }]); + + function TextBracket(_ref) { + var _this; + + var start = _ref.start, + stop = _ref.stop, + _ref$text = _ref.text, + text = _ref$text === void 0 ? '' : _ref$text, + _ref$superscript = _ref.superscript, + superscript = _ref$superscript === void 0 ? '' : _ref$superscript, + _ref$position = _ref.position, + position = _ref$position === void 0 ? TextBracket.Positions.TOP : _ref$position; + + _classCallCheck(this, TextBracket); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(TextBracket).call(this)); + + _this.setAttribute('type', 'TextBracket'); + + _this.start = start; + _this.stop = stop; + _this.text = text; + _this.superscript = superscript; + _this.position = typeof position === 'string' ? TextBracket.PositionString[position] : position; + _this.line = 1; + _this.font = { + family: 'Serif', + size: 15, + weight: 'italic' + }; + _this.render_options = { + dashed: true, + dash: [5], + color: 'black', + line_width: 1, + show_bracket: true, + bracket_height: 8, + // In the BOTTOM position, the bracket line can extend + // under the superscript. + underline_superscript: true + }; + return _this; + } // Apply the text backet styling to the provided `context` + + + _createClass(TextBracket, [{ + key: "applyStyle", + value: function applyStyle(context) { + // Apply style for the octave bracket + context.setFont(this.font.family, this.font.size, this.font.weight); + context.setStrokeStyle(this.render_options.color); + context.setFillStyle(this.render_options.color); + context.setLineWidth(this.render_options.line_width); + return this; + } // Set whether the bracket line should be `dashed`. You can also + // optionally set the `dash` pattern by passing in an array of numbers + + }, { + key: "setDashed", + value: function setDashed(dashed, dash) { + this.render_options.dashed = dashed; + if (dash) this.render_options.dash = dash; + return this; + } // Set the font for the text + + }, { + key: "setFont", + value: function setFont(font) { + // We use Object.assign to support partial updates to the font object + this.font = _objectSpread({}, this.font, {}, font); + return this; + } // Set the rendering `context` for the octave bracket + + }, { + key: "setLine", + value: function setLine(line) { + this.line = line; + return this; + } // Draw the octave bracket on the rendering context + + }, { + key: "draw", + value: function draw() { + var ctx = this.context; + this.setRendered(); + var y = 0; + + switch (this.position) { + case TextBracket.Positions.TOP: + y = this.start.getStave().getYForTopText(this.line); + break; + + case TextBracket.Positions.BOTTOM: + y = this.start.getStave().getYForBottomText(this.line + _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].TEXT_HEIGHT_OFFSET_HACK); + break; + + default: + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('InvalidPosition', "The position ".concat(this.position, " is invalid")); + } // Get the preliminary start and stop coordintates for the bracket + + + var start = { + x: this.start.getAbsoluteX(), + y: y + }; + var stop = { + x: this.stop.getAbsoluteX(), + y: y + }; + L('Rendering TextBracket: start:', start, 'stop:', stop, 'y:', y); + var bracket_height = this.render_options.bracket_height * this.position; + ctx.save(); + this.applyStyle(ctx); // Draw text + + ctx.fillText(this.text, start.x, start.y); // Get the width and height for the octave number + + var main_width = ctx.measureText(this.text).width; + var main_height = ctx.measureText('M').width; // Calculate the y position for the super script + + var super_y = start.y - main_height / 2.5; // Draw the superscript + + ctx.setFont(this.font.family, this.font.size / 1.4, this.font.weight); + ctx.fillText(this.superscript, start.x + main_width + 1, super_y); // Determine width and height of the superscript + + var superscript_width = ctx.measureText(this.superscript).width; + var super_height = ctx.measureText('M').width; // Setup initial coordinates for the bracket line + + var start_x = start.x; + var line_y = super_y; + var end_x = stop.x + this.stop.getGlyph().getWidth(); // Adjust x and y coordinates based on position + + if (this.position === TextBracket.Positions.TOP) { + start_x += main_width + superscript_width + 5; + line_y -= super_height / 2.7; + } else if (this.position === TextBracket.Positions.BOTTOM) { + line_y += super_height / 2.7; + start_x += main_width + 2; + + if (!this.render_options.underline_superscript) { + start_x += superscript_width; + } + } + + if (this.render_options.dashed) { + // Main line + _renderer__WEBPACK_IMPORTED_MODULE_3__["Renderer"].drawDashedLine(ctx, start_x, line_y, end_x, line_y, this.render_options.dash); // Ending Bracket + + if (this.render_options.show_bracket) { + _renderer__WEBPACK_IMPORTED_MODULE_3__["Renderer"].drawDashedLine(ctx, end_x, line_y + 1 * this.position, end_x, line_y + bracket_height, this.render_options.dash); + } + } else { + ctx.beginPath(); + ctx.moveTo(start_x, line_y); // Main line + + ctx.lineTo(end_x, line_y); + + if (this.render_options.show_bracket) { + // Ending bracket + ctx.lineTo(end_x, line_y + bracket_height); + } + + ctx.stroke(); + ctx.closePath(); + } + + ctx.restore(); + } + }]); + + return TextBracket; +}(_element__WEBPACK_IMPORTED_MODULE_2__["Element"]); + +/***/ }), + +/***/ "./src/textdynamics.js": +/*!*****************************!*\ + !*** ./src/textdynamics.js ***! + \*****************************/ +/*! exports provided: TextDynamics */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextDynamics", function() { return TextDynamics; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./note */ "./src/note.js"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./glyph */ "./src/glyph.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// This file implements the `TextDynamics` which renders traditional +// text dynamics markings, **ie: p, f, sfz, rfz, ppp** +// +// You can render any dynamics string that contains a combination of +// the following letters: P, M, F, Z, R, S + + + // To enable logging for this class. Set `Vex.Flow.TextDynamics.DEBUG` to `true`. + +function L() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (TextDynamics.DEBUG) _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].L('Vex.Flow.TextDynamics', args); +} + +var TextDynamics = +/*#__PURE__*/ +function (_Note) { + _inherits(TextDynamics, _Note); + + _createClass(TextDynamics, null, [{ + key: "GLYPHS", + // The glyph data for each dynamics letter + get: function get() { + return { + 'f': { + code: 'dynamicForte', + width: 12 + }, + 'p': { + code: 'dynamicPiano', + width: 14 + }, + 'm': { + code: 'dynamicMezzo', + width: 17 + }, + 's': { + code: 'dynamicSforzando', + width: 10 + }, + 'z': { + code: 'dynamicZ', + width: 12 + }, + 'r': { + code: 'dynamicRinforzando', + width: 12 + } + }; + } // A `TextDynamics` object inherits from `Note` so that it can be formatted + // within a `Voice`. + // Create the dynamics marking. `text_struct` is an object + // that contains a `duration` property and a `sequence` of + // letters that represents the letters to render + + }]); + + function TextDynamics(text_struct) { + var _this; + + _classCallCheck(this, TextDynamics); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(TextDynamics).call(this, text_struct)); + + _this.setAttribute('type', 'TextDynamics'); + + _this.sequence = text_struct.text.toLowerCase(); + _this.line = text_struct.line || 0; + _this.glyphs = []; + _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge(_this.render_options, { + glyph_font_size: 40 + }); + L('New Dynamics Text: ', _this.sequence); + return _this; + } // Set the Stave line on which the note should be placed + + + _createClass(TextDynamics, [{ + key: "setLine", + value: function setLine(line) { + this.line = line; + return this; + } // Preformat the dynamics text + + }, { + key: "preFormat", + value: function preFormat() { + var _this2 = this; + + var total_width = 0; // Iterate through each letter + + this.sequence.split('').forEach(function (letter) { + // Get the glyph data for the letter + var glyph_data = TextDynamics.GLYPHS[letter]; + if (!glyph_data) throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('Invalid dynamics character: ' + letter); + var size = _this2.render_options.glyph_font_size; + var glyph = new _glyph__WEBPACK_IMPORTED_MODULE_2__["Glyph"](glyph_data.code, size, { + category: 'textNote' + }); // Add the glyph + + _this2.glyphs.push(glyph); + + total_width += glyph_data.width; + }); // Store the width of the text + + this.setWidth(total_width); + this.preFormatted = true; + return this; + } // Draw the dynamics text on the rendering context + + }, { + key: "draw", + value: function draw() { + var _this3 = this; + + this.setRendered(); + var x = this.getAbsoluteX(); + var y = this.stave.getYForLine(this.line + -3); + L('Rendering Dynamics: ', this.sequence); + var letter_x = x; + this.glyphs.forEach(function (glyph, index) { + var current_letter = _this3.sequence[index]; + glyph.render(_this3.context, letter_x, y); + letter_x += TextDynamics.GLYPHS[current_letter].width; + }); + } + }]); + + return TextDynamics; +}(_note__WEBPACK_IMPORTED_MODULE_1__["Note"]); + +/***/ }), + +/***/ "./src/textnote.js": +/*!*************************!*\ + !*** ./src/textnote.js ***! + \*************************/ +/*! exports provided: TextNote */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextNote", function() { return TextNote; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./note */ "./src/note.js"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./glyph */ "./src/glyph.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// `TextNote` is a notation element that is positioned in time. Generally +// meant for objects that sit above/below the staff and inline with each other. +// Examples of this would be such as dynamics, lyrics, chord changes, etc. + + + +var TextNote = +/*#__PURE__*/ +function (_Note) { + _inherits(TextNote, _Note); + + _createClass(TextNote, null, [{ + key: "Justification", + get: function get() { + return { + LEFT: 1, + CENTER: 2, + RIGHT: 3 + }; + } // Glyph data + + }, { + key: "GLYPHS", + get: function get() { + return { + 'segno': { + code: 'segno' + }, + 'tr': { + code: 'ornamentTrill' + }, + 'mordent': { + code: 'ornamentMordent' + }, + 'mordent_upper': { + code: 'ornamentShortTrill' + }, + 'mordent_lower': { + code: 'ornamentMordent' + }, + 'f': { + code: 'dynamicForte' + }, + 'p': { + code: 'dynamicPiano' + }, + 'm': { + code: 'dynamicMezzo' + }, + 's': { + code: 'dynamicSforzando' + }, + 'z': { + code: 'dynamicZ' + }, + 'coda': { + code: 'coda' + }, + 'pedal_open': { + code: 'keyboardPedalPed' + }, + 'pedal_close': { + code: 'keyboardPedalUp' + }, + 'caesura_straight': { + code: 'caesura' + }, + 'caesura_curved': { + code: 'caesuraCurved' + }, + 'breath': { + code: 'breathMarkComma' + }, + 'tick': { + code: 'breathMarkTick' + }, + 'turn': { + code: 'ornamentTurn' + }, + 'turn_inverted': { + code: 'ornamentTurnSlash' + } + }; + } + }]); + + function TextNote(options) { + var _this; + + _classCallCheck(this, TextNote); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(TextNote).call(this, options)); + + _this.setAttribute('type', 'TextNote'); // Note properties + + + _this.text = options.text; + _this.superscript = options.superscript; + _this.subscript = options.subscript; + _this.glyph = null; + _this.font = _objectSpread({ + family: 'Arial', + size: 12, + weight: '' + }, options.font); // Determine and set initial note width. Note that the text width is + // an approximation and isn't very accurate. The only way to accurately + // measure the length of text is with `canvasmeasureText()` + + if (options.glyph) { + var struct = TextNote.GLYPHS[options.glyph]; + if (!struct) throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('Invalid glyph type: ' + options.glyph); + _this.glyph = new _glyph__WEBPACK_IMPORTED_MODULE_2__["Glyph"](struct.code, 40, { + category: 'textNote' + }); + + _this.setWidth(_this.glyph.getMetrics().width); + } + + _this.line = options.line || 0; + _this.smooth = options.smooth || false; + _this.ignore_ticks = options.ignore_ticks || false; + _this.justification = TextNote.Justification.LEFT; + return _this; + } // Set the horizontal justification of the TextNote + + + _createClass(TextNote, [{ + key: "setJustification", + value: function setJustification(just) { + this.justification = just; + return this; + } // Set the Stave line on which the note should be placed + + }, { + key: "setLine", + value: function setLine(line) { + this.line = line; + return this; + } // Pre-render formatting + + }, { + key: "preFormat", + value: function preFormat() { + this.checkContext(); + if (this.preFormatted) return; + + if (this.smooth) { + this.setWidth(0); + } else { + if (this.glyph) {// Width already set. + } else { + this.context.setFont(this.font.family, this.font.size, this.font.weight); + this.setWidth(this.context.measureText(this.text).width); + } + } + + if (this.justification === TextNote.Justification.CENTER) { + this.leftDisplacedHeadPx = this.width / 2; + } else if (this.justification === TextNote.Justification.RIGHT) { + this.leftDisplacedHeadPx = this.width; + } // We reposition to the center of the note head + + + this.rightDisplacedHeadPx = this.tickContext.getMetrics().glyphPx / 2; + this.setPreFormatted(true); + } // Renders the TextNote + + }, { + key: "draw", + value: function draw() { + this.checkContext(); + + if (!this.stave) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoStave', "Can't draw without a stave."); + } + + this.setRendered(); + var ctx = this.context; // Reposition to center of note head + + var x = this.getAbsoluteX() + this.tickContext.getMetrics().glyphPx / 2; // Align based on tick-context width. + + var width = this.getWidth(); + + if (this.justification === TextNote.Justification.CENTER) { + x -= width / 2; + } else if (this.justification === TextNote.Justification.RIGHT) { + x -= width; + } + + var y; + + if (this.glyph) { + y = this.stave.getYForLine(this.line + -3); + this.glyph.render(this.context, x, y); + } else { + y = this.stave.getYForLine(this.line + -3); + this.applyStyle(ctx); + ctx.setFont(this.font.family, this.font.size, this.font.weight); + ctx.fillText(this.text, x, y); + var height = ctx.measureText(this.text).height; // Write superscript + + if (this.superscript) { + ctx.setFont(this.font.family, this.font.size / 1.3, this.font.weight); + ctx.fillText(this.superscript, x + width + 2, y - height / 2.2); + } // Write subscript + + + if (this.subscript) { + ctx.setFont(this.font.family, this.font.size / 1.3, this.font.weight); + ctx.fillText(this.subscript, x + width + 2, y + height / 2.2 - 1); + } + + this.restoreStyle(ctx); + } + } + }]); + + return TextNote; +}(_note__WEBPACK_IMPORTED_MODULE_1__["Note"]); + +/***/ }), + +/***/ "./src/tickable.js": +/*!*************************!*\ + !*** ./src/tickable.js ***! + \*************************/ +/*! exports provided: Tickable */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Tickable", function() { return Tickable; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element */ "./src/element.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fraction */ "./src/fraction.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// The tickable interface. Tickables are things that sit on a score and +// have a duration, i.e., they occupy space in the musical rendering dimension. + + + + +var Tickable = +/*#__PURE__*/ +function (_Element) { + _inherits(Tickable, _Element); + + function Tickable() { + var _this; + + _classCallCheck(this, Tickable); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Tickable).call(this)); + + _this.setAttribute('type', 'Tickable'); // These properties represent the duration of + // this tickable element. + + + _this.ticks = new _fraction__WEBPACK_IMPORTED_MODULE_3__["Fraction"](0, 1); // Fractional value of ticks + + _this.intrinsicTicks = 0; // Floating point value of ticks + + _this.tickMultiplier = new _fraction__WEBPACK_IMPORTED_MODULE_3__["Fraction"](1, 1); // Formatter metrics + + _this.width = 0; + _this.x_shift = 0; // Shift from tick context + + _this.voice = null; + _this.tickContext = null; + _this.modifierContext = null; + _this.modifiers = []; + _this.preFormatted = false; + _this.postFormatted = false; + _this.tuplet = null; + _this.tupletStack = []; + _this.align_center = false; + _this.center_x_shift = 0; // Shift from tick context if center aligned + // This flag tells the formatter to ignore this tickable during + // formatting and justification. It is set by tickables such as BarNote. + + _this.ignore_ticks = false; // This is a space for an external formatting class or function to maintain + // metrics. + + _this.formatterMetrics = { + // The freedom of a tickable is the distance it can move without colliding + // with neighboring elements. A formatter can set these values during its + // formatting pass, which a different formatter can then use to fine tune. + freedom: { + left: 0, + right: 0 + }, + // The simplified rational duration of this tick as a string. It can be + // used as an index to a map or hashtable. + duration: '', + // The number of formatting iterations undergone. + iterations: 0, + // The space in pixels allocated by this formatter, along with the mean space + // for tickables of this duration, and the deviation from the mean. + space: { + used: 0, + mean: 0, + deviation: 0 + } + }; + return _this; + } + + _createClass(Tickable, [{ + key: "reset", + value: function reset() { + return this; + } + }, { + key: "getTicks", + value: function getTicks() { + return this.ticks; + } + }, { + key: "shouldIgnoreTicks", + value: function shouldIgnoreTicks() { + return this.ignore_ticks; + } // Get and set width of note. Used by the formatter for positioning. + + }, { + key: "setWidth", + value: function setWidth(width) { + this.width = width; + } + }, { + key: "getWidth", + value: function getWidth() { + if (!this.preFormatted) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('UnformattedNote', "Can't call GetWidth on an unformatted note."); + } + + return this.width + (this.modifierContext ? this.modifierContext.getWidth() : 0); + } // Displace note by `x` pixels. Used by the formatter. + + }, { + key: "setXShift", + value: function setXShift(x) { + this.x_shift = x; + return this; + } + }, { + key: "getXShift", + value: function getXShift() { + return this.x_shift; + } // Get `X` position of this tick context. + + }, { + key: "getX", + value: function getX() { + if (!this.tickContext) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoTickContext', 'Note needs a TickContext assigned for an X-Value'); + } + + return this.tickContext.getX() + this.x_shift; + } + }, { + key: "getFormatterMetrics", + value: function getFormatterMetrics() { + return this.formatterMetrics; + } + }, { + key: "getCenterXShift", + value: function getCenterXShift() { + if (this.isCenterAligned()) { + return this.center_x_shift; + } + + return 0; + } + }, { + key: "isCenterAligned", + value: function isCenterAligned() { + return this.align_center; + } + }, { + key: "setCenterAlignment", + value: function setCenterAlignment(align_center) { + this.align_center = align_center; + return this; + } // Every tickable must be associated with a voice. This allows formatters + // and preFormatter to associate them with the right modifierContexts. + + }, { + key: "getVoice", + value: function getVoice() { + if (!this.voice) throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoVoice', 'Tickable has no voice.'); + return this.voice; + } + }, { + key: "setVoice", + value: function setVoice(voice) { + this.voice = voice; + } + }, { + key: "getTuplet", + value: function getTuplet() { + return this.tuplet; + } + /* + * resetTuplet + * @param tuplet -- the specific tuplet to reset + * if this is not provided, all tuplets are reset. + * @returns this + * + * Removes any prior tuplets from the tick calculation and + * resets the intrinsic tick value to + */ + + }, { + key: "resetTuplet", + value: function resetTuplet(tuplet) { + var noteCount; + var notesOccupied; + + if (tuplet) { + var i = this.tupletStack.indexOf(tuplet); + + if (i !== -1) { + this.tupletStack.splice(i, 1); + noteCount = tuplet.getNoteCount(); + notesOccupied = tuplet.getNotesOccupied(); // Revert old multiplier by inverting numerator & denom.: + + this.applyTickMultiplier(noteCount, notesOccupied); + } + + return this; + } + + while (this.tupletStack.length) { + tuplet = this.tupletStack.pop(); + noteCount = tuplet.getNoteCount(); + notesOccupied = tuplet.getNotesOccupied(); // Revert old multiplier by inverting numerator & denom.: + + this.applyTickMultiplier(noteCount, notesOccupied); + } + + return this; + } + }, { + key: "setTuplet", + value: function setTuplet(tuplet) { + // Attach to new tuplet + if (tuplet) { + this.tupletStack.push(tuplet); + var noteCount = tuplet.getNoteCount(); + var notesOccupied = tuplet.getNotesOccupied(); + this.applyTickMultiplier(notesOccupied, noteCount); + } + + this.tuplet = tuplet; + return this; + } + /** optional, if tickable has modifiers **/ + + }, { + key: "addToModifierContext", + value: function addToModifierContext(mc) { + this.modifierContext = mc; // Add modifiers to modifier context (if any) + + this.preFormatted = false; + } + /** optional, if tickable has modifiers **/ + + }, { + key: "addModifier", + value: function addModifier(mod) { + this.modifiers.push(mod); + this.preFormatted = false; + return this; + } + }, { + key: "getModifiers", + value: function getModifiers() { + return this.modifiers; + } + }, { + key: "setTickContext", + value: function setTickContext(tc) { + this.tickContext = tc; + this.preFormatted = false; + } + }, { + key: "preFormat", + value: function preFormat() { + if (this.preFormatted) return; + this.width = 0; + + if (this.modifierContext) { + this.modifierContext.preFormat(); + this.width += this.modifierContext.getWidth(); + } + } + }, { + key: "postFormat", + value: function postFormat() { + if (this.postFormatted) return this; + this.postFormatted = true; + return this; + } + }, { + key: "getIntrinsicTicks", + value: function getIntrinsicTicks() { + return this.intrinsicTicks; + } + }, { + key: "setIntrinsicTicks", + value: function setIntrinsicTicks(intrinsicTicks) { + this.intrinsicTicks = intrinsicTicks; + this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks); + } + }, { + key: "getTickMultiplier", + value: function getTickMultiplier() { + return this.tickMultiplier; + } + }, { + key: "applyTickMultiplier", + value: function applyTickMultiplier(numerator, denominator) { + this.tickMultiplier.multiply(numerator, denominator); + this.ticks = this.tickMultiplier.clone().multiply(this.intrinsicTicks); + } + }, { + key: "setDuration", + value: function setDuration(duration) { + var ticks = duration.numerator * (_tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].RESOLUTION / duration.denominator); + this.ticks = this.tickMultiplier.clone().multiply(ticks); + this.intrinsicTicks = this.ticks.value(); + } + }]); + + return Tickable; +}(_element__WEBPACK_IMPORTED_MODULE_1__["Element"]); + +/***/ }), + +/***/ "./src/tickcontext.js": +/*!****************************!*\ + !*** ./src/tickcontext.js ***! + \****************************/ +/*! exports provided: TickContext */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TickContext", function() { return TickContext; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _tickable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tickable */ "./src/tickable.js"); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fraction */ "./src/fraction.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// A formatter for abstract tickable objects, such as notes, chords, +// tabs, etc. + + + +var TickContext = +/*#__PURE__*/ +function (_Tickable) { + _inherits(TickContext, _Tickable); + + _createClass(TickContext, null, [{ + key: "getNextContext", + value: function getNextContext(tContext) { + var contexts = tContext.tContexts; + var index = contexts.indexOf(tContext); + return contexts[index + 1]; + } + }]); + + function TickContext(options) { + var _this; + + _classCallCheck(this, TickContext); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(TickContext).call(this)); + _this.tickID = options && options.tickID; + + _this.setAttribute('type', 'TickContext'); + + _this.currentTick = new _fraction__WEBPACK_IMPORTED_MODULE_2__["Fraction"](0, 1); + _this.maxTicks = new _fraction__WEBPACK_IMPORTED_MODULE_2__["Fraction"](0, 1); + _this.maxTickable = null; // Biggest tickable + + _this.minTicks = null; // this can remian null if all tickables have ignore_ticks + + _this.minTickable = null; + _this.padding = 1; // padding on each side (width += padding * 2) + + _this.x = 0; + _this.xBase = 0; // base x position without xOffset + + _this.xOffset = 0; // xBase and xOffset are an alternative way to describe x (x = xB + xO) + + _this.tickables = []; // Notes, tabs, chords, lyrics. + + _this.tickablesByVoice = {}; // Tickables indeced by voice number + // Formatting metrics + + _this.notePx = 0; // width of widest note in this context + + _this.glyphPx = 0; // width of glyph (note head) + + _this.leftDisplacedHeadPx = 0; // Extra left pixels for displaced notes + + _this.rightDisplacedHeadPx = 0; // Extra right pixels for displaced notes + + _this.modLeftPx = 0; // Left modifier pixels + + _this.modRightPx = 0; // Right modifier pixels + + _this.totalLeftPx = 0; // Total left pixels + + _this.totalRightPx = 0; // Total right pixels + + _this.tContexts = []; // Parent array of tick contexts + + return _this; + } + + _createClass(TickContext, [{ + key: "getTickID", + value: function getTickID() { + return this.tickID; + } + }, { + key: "getX", + value: function getX() { + return this.x; + } + }, { + key: "setX", + value: function setX(x) { + this.x = x; + this.xBase = x; + this.xOffset = 0; + return this; + } + }, { + key: "getXBase", + value: function getXBase() { + return this.xBase; + } // use of xBase and xOffset is optional, avoids offset creep + + }, { + key: "setXBase", + value: function setXBase(xBase) { + this.xBase = xBase; + this.x = xBase + this.xOffset; + } + }, { + key: "getXOffset", + value: function getXOffset() { + return this.xOffset; + } + }, { + key: "setXOffset", + value: function setXOffset(xOffset) { + this.xOffset = xOffset; + this.x = this.xBase + xOffset; + } + }, { + key: "getWidth", + value: function getWidth() { + return this.width + this.padding * 2; + } + }, { + key: "setPadding", + value: function setPadding(padding) { + this.padding = padding; + return this; + } + }, { + key: "getMaxTicks", + value: function getMaxTicks() { + return this.maxTicks; + } + }, { + key: "getMinTicks", + value: function getMinTicks() { + return this.minTicks; + } + }, { + key: "getMaxTickable", + value: function getMaxTickable() { + return this.maxTickable; + } + }, { + key: "getMinTickable", + value: function getMinTickable() { + return this.minTickable; + } + }, { + key: "getTickables", + value: function getTickables() { + return this.tickables; + } + }, { + key: "getTickablesForVoice", + value: function getTickablesForVoice(voiceIndex) { + return this.tickablesByVoice[voiceIndex]; + } + }, { + key: "getTickablesByVoice", + value: function getTickablesByVoice() { + return this.tickablesByVoice; + } + }, { + key: "getCenterAlignedTickables", + value: function getCenterAlignedTickables() { + return this.tickables.filter(function (tickable) { + return tickable.isCenterAligned(); + }); + } // Get widths context, note and left/right modifiers for formatting + + }, { + key: "getMetrics", + value: function getMetrics() { + var width = this.width, + glyphPx = this.glyphPx, + notePx = this.notePx, + leftDisplacedHeadPx = this.leftDisplacedHeadPx, + rightDisplacedHeadPx = this.rightDisplacedHeadPx, + modLeftPx = this.modLeftPx, + modRightPx = this.modRightPx, + totalLeftPx = this.totalLeftPx, + totalRightPx = this.totalRightPx; + return { + width: width, + // Width of largest tickable in context + glyphPx: glyphPx, + // Width of largest glyph (note head) + notePx: notePx, + // Width of notehead + stem + leftDisplacedHeadPx: leftDisplacedHeadPx, + // Left modifiers + rightDisplacedHeadPx: rightDisplacedHeadPx, + // Right modifiers + modLeftPx: modLeftPx, + modRightPx: modRightPx, + totalLeftPx: totalLeftPx, + totalRightPx: totalRightPx + }; + } + }, { + key: "getCurrentTick", + value: function getCurrentTick() { + return this.currentTick; + } + }, { + key: "setCurrentTick", + value: function setCurrentTick(tick) { + this.currentTick = tick; + this.preFormatted = false; + } + }, { + key: "addTickable", + value: function addTickable(tickable, voiceIndex) { + if (!tickable) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArgument', 'Invalid tickable added.'); + } + + if (!tickable.shouldIgnoreTicks()) { + this.ignore_ticks = false; + var ticks = tickable.getTicks(); + + if (ticks.greaterThan(this.maxTicks)) { + this.maxTicks = ticks.clone(); + this.maxTickable = tickable; + } + + if (this.minTicks == null) { + this.minTicks = ticks.clone(); + this.minTickable = tickable; + } else if (ticks.lessThan(this.minTicks)) { + this.minTicks = ticks.clone(); + this.minTickable = tickable; + } + } + + tickable.setTickContext(this); + this.tickables.push(tickable); + this.tickablesByVoice[voiceIndex] = tickable; + this.preFormatted = false; + return this; + } + }, { + key: "preFormat", + value: function preFormat() { + if (this.preFormatted) return this; + + for (var i = 0; i < this.tickables.length; ++i) { + var tickable = this.tickables[i]; + tickable.preFormat(); + var metrics = tickable.getMetrics(); // Maintain max displaced head pixels from all tickables in the context + + this.leftDisplacedHeadPx = Math.max(this.leftDisplacedHeadPx, metrics.leftDisplacedHeadPx); + this.rightDisplacedHeadPx = Math.max(this.rightDisplacedHeadPx, metrics.rightDisplacedHeadPx); // Maintain the widest note for all tickables in the context + + this.notePx = Math.max(this.notePx, metrics.notePx); // Maintain the widest note head + + this.glyphPx = Math.max(this.glyphPx, metrics.glyphWidth); // Total modifier shift + + this.modLeftPx = Math.max(this.modLeftPx, metrics.modLeftPx); + this.modRightPx = Math.max(this.modRightPx, metrics.modRightPx); // Total shift + + this.totalLeftPx = Math.max(this.totalLeftPx, metrics.modLeftPx + metrics.leftDisplacedHeadPx); + this.totalRightPx = Math.max(this.totalRightPx, metrics.modRightPx + metrics.rightDisplacedHeadPx); // Recalculate the tick context total width + + this.width = this.notePx + this.totalLeftPx + this.totalRightPx; + } + + return this; + } + }, { + key: "postFormat", + value: function postFormat() { + if (this.postFormatted) return this; + this.postFormatted = true; + return this; + } + }]); + + return TickContext; +}(_tickable__WEBPACK_IMPORTED_MODULE_1__["Tickable"]); + +/***/ }), + +/***/ "./src/timesignature.js": +/*!******************************!*\ + !*** ./src/timesignature.js ***! + \******************************/ +/*! exports provided: TimeSignature */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TimeSignature", function() { return TimeSignature; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./glyph */ "./src/glyph.js"); +/* harmony import */ var _stavemodifier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stavemodifier */ "./src/stavemodifier.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + +function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// Implements time signatures glyphs for staffs +// See tables.js for the internal time signatures +// representation + + + + +var assertIsValidFraction = function assertIsValidFraction(timeSpec) { + var numbers = timeSpec.split('/').filter(function (number) { + return number !== ''; + }); + + if (numbers.length !== 2) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadTimeSignature', "Invalid time spec: ".concat(timeSpec, ". Must be in the form \"/\"")); + } + + numbers.forEach(function (number) { + if (isNaN(Number(number))) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadTimeSignature', "Invalid time spec: ".concat(timeSpec, ". Must contain two valid numbers.")); + } + }); +}; + +var TimeSignature = +/*#__PURE__*/ +function (_StaveModifier) { + _inherits(TimeSignature, _StaveModifier); + + _createClass(TimeSignature, null, [{ + key: "CATEGORY", + get: function get() { + return 'timesignatures'; + } + }, { + key: "glyphs", + get: function get() { + return { + 'C': { + code: 'timeSigCommon', + point: 40, + line: 2 + }, + 'C|': { + code: 'timeSigCutCommon', + point: 40, + line: 2 + } + }; + } + }]); + + function TimeSignature() { + var _this; + + var timeSpec = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + var customPadding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 15; + var validate_args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + + _classCallCheck(this, TimeSignature); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(TimeSignature).call(this)); + + _this.setAttribute('type', 'TimeSignature'); + + _this.validate_args = validate_args; + if (timeSpec === null) return _possibleConstructorReturn(_this); + var padding = customPadding; + _this.point = _this.musicFont.lookupMetric('digits.point'); + + var fontLineShift = _this.musicFont.lookupMetric('digits.shiftLine', 0); + + _this.topLine = 2 + fontLineShift; + _this.bottomLine = 4 + fontLineShift; + + _this.setPosition(_stavemodifier__WEBPACK_IMPORTED_MODULE_2__["StaveModifier"].Position.BEGIN); + + _this.setTimeSig(timeSpec); + + _this.setWidth(_this.timeSig.glyph.getMetrics().width); + + _this.setPadding(padding); + + return _this; + } + + _createClass(TimeSignature, [{ + key: "getCategory", + value: function getCategory() { + return TimeSignature.CATEGORY; + } + }, { + key: "parseTimeSpec", + value: function parseTimeSpec(timeSpec) { + if (timeSpec === 'C' || timeSpec === 'C|') { + var _TimeSignature$glyphs = TimeSignature.glyphs[timeSpec], + line = _TimeSignature$glyphs.line, + code = _TimeSignature$glyphs.code, + point = _TimeSignature$glyphs.point; + return { + line: line, + num: false, + glyph: new _glyph__WEBPACK_IMPORTED_MODULE_1__["Glyph"](code, point) + }; + } + + if (this.validate_args) { + assertIsValidFraction(timeSpec); + } + + var _timeSpec$split$map = timeSpec.split('/').map(function (number) { + return number.split(''); + }), + _timeSpec$split$map2 = _slicedToArray(_timeSpec$split$map, 2), + topDigits = _timeSpec$split$map2[0], + botDigits = _timeSpec$split$map2[1]; + + return { + num: true, + glyph: this.makeTimeSignatureGlyph(topDigits, botDigits) + }; + } + }, { + key: "makeTimeSignatureGlyph", + value: function makeTimeSignatureGlyph(topDigits, botDigits) { + var glyph = new _glyph__WEBPACK_IMPORTED_MODULE_1__["Glyph"]('timeSig0', this.point); + glyph.topGlyphs = []; + glyph.botGlyphs = []; + var topWidth = 0; + + for (var i = 0; i < topDigits.length; ++i) { + var num = topDigits[i]; + var topGlyph = new _glyph__WEBPACK_IMPORTED_MODULE_1__["Glyph"]('timeSig' + num, this.point); + glyph.topGlyphs.push(topGlyph); + topWidth += topGlyph.getMetrics().width; + } + + var botWidth = 0; + + for (var _i2 = 0; _i2 < botDigits.length; ++_i2) { + var _num = botDigits[_i2]; + var botGlyph = new _glyph__WEBPACK_IMPORTED_MODULE_1__["Glyph"]('timeSig' + _num, this.point); + glyph.botGlyphs.push(botGlyph); + botWidth += botGlyph.getMetrics().width; + } + + var width = topWidth > botWidth ? topWidth : botWidth; + var xMin = glyph.getMetrics().x_min; + + glyph.getMetrics = function () { + return { + x_min: xMin, + x_max: xMin + width, + width: width + }; + }; + + var topStartX = (width - topWidth) / 2.0; + var botStartX = (width - botWidth) / 2.0; + var that = this; + + glyph.renderToStave = function renderToStave(x) { + var start_x = x + topStartX; + + for (var _i3 = 0; _i3 < this.topGlyphs.length; ++_i3) { + var _glyph = this.topGlyphs[_i3]; + _glyph__WEBPACK_IMPORTED_MODULE_1__["Glyph"].renderOutline(this.context, _glyph.metrics.outline, _glyph.scale, start_x + _glyph.x_shift, this.stave.getYForLine(that.topLine)); + start_x += _glyph.getMetrics().width; + } + + start_x = x + botStartX; + + for (var _i4 = 0; _i4 < this.botGlyphs.length; ++_i4) { + var _glyph2 = this.botGlyphs[_i4]; + that.placeGlyphOnLine(_glyph2, this.stave, _glyph2.line); + _glyph__WEBPACK_IMPORTED_MODULE_1__["Glyph"].renderOutline(this.context, _glyph2.metrics.outline, _glyph2.scale, start_x + _glyph2.x_shift, this.stave.getYForLine(that.bottomLine)); + start_x += _glyph2.getMetrics().width; + } + }; + + return glyph; + } + }, { + key: "getTimeSig", + value: function getTimeSig() { + return this.timeSig; + } + }, { + key: "setTimeSig", + value: function setTimeSig(timeSpec) { + this.timeSig = this.parseTimeSpec(timeSpec); + return this; + } + }, { + key: "draw", + value: function draw() { + if (!this.x) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('TimeSignatureError', "Can't draw time signature without x."); + } + + if (!this.stave) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('TimeSignatureError', "Can't draw time signature without stave."); + } + + this.setRendered(); + this.timeSig.glyph.setStave(this.stave); + this.timeSig.glyph.setContext(this.stave.context); + this.placeGlyphOnLine(this.timeSig.glyph, this.stave, this.timeSig.line); + this.timeSig.glyph.renderToStave(this.x); + } + }]); + + return TimeSignature; +}(_stavemodifier__WEBPACK_IMPORTED_MODULE_2__["StaveModifier"]); + +/***/ }), + +/***/ "./src/timesignote.js": +/*!****************************!*\ + !*** ./src/timesignote.js ***! + \****************************/ +/*! exports provided: TimeSigNote */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TimeSigNote", function() { return TimeSigNote; }); +/* harmony import */ var _note__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./note */ "./src/note.js"); +/* harmony import */ var _timesignature__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./timesignature */ "./src/timesignature.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author Taehoon Moon 2014 + + +var TimeSigNote = +/*#__PURE__*/ +function (_Note) { + _inherits(TimeSigNote, _Note); + + function TimeSigNote(timeSpec, customPadding) { + var _this; + + _classCallCheck(this, TimeSigNote); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(TimeSigNote).call(this, { + duration: 'b' + })); + + _this.setAttribute('type', 'TimeSigNote'); + + var timeSignature = new _timesignature__WEBPACK_IMPORTED_MODULE_1__["TimeSignature"](timeSpec, customPadding); + _this.timeSig = timeSignature.getTimeSig(); + + _this.setWidth(_this.timeSig.glyph.getMetrics().width); // Note properties + + + _this.ignore_ticks = true; + return _this; + } + + _createClass(TimeSigNote, [{ + key: "getBoundingBox", + value: function getBoundingBox() { + return _get(_getPrototypeOf(TimeSigNote.prototype), "getBoundingBox", this).call(this); + } + }, { + key: "addToModifierContext", + value: function addToModifierContext() { + /* overridden to ignore */ + return this; + } + }, { + key: "preFormat", + value: function preFormat() { + this.setPreFormatted(true); + return this; + } + }, { + key: "draw", + value: function draw() { + this.stave.checkContext(); + this.setRendered(); + + if (!this.timeSig.glyph.getContext()) { + this.timeSig.glyph.setContext(this.context); + } + + this.timeSig.glyph.setStave(this.stave); + this.timeSig.glyph.setYShift(this.stave.getYForLine(this.timeSig.line) - this.stave.getYForGlyphs()); + this.timeSig.glyph.renderToStave(this.getAbsoluteX()); + } + }]); + + return TimeSigNote; +}(_note__WEBPACK_IMPORTED_MODULE_0__["Note"]); + +/***/ }), + +/***/ "./src/tremolo.js": +/*!************************!*\ + !*** ./src/tremolo.js ***! + \************************/ +/*! exports provided: Tremolo */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Tremolo", function() { return Tremolo; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.js"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./glyph */ "./src/glyph.js"); +/* harmony import */ var _gracenote__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./gracenote */ "./src/gracenote.js"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stem */ "./src/stem.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Mike Corrigan +// +// This class implements tremolo notation. + + + + + +var Tremolo = +/*#__PURE__*/ +function (_Modifier) { + _inherits(Tremolo, _Modifier); + + _createClass(Tremolo, null, [{ + key: "CATEGORY", + get: function get() { + return 'tremolo'; + } + }]); + + function Tremolo(num) { + var _this; + + _classCallCheck(this, Tremolo); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Tremolo).call(this)); + + _this.setAttribute('type', 'Tremolo'); + + _this.num = num; + _this.note = null; + _this.index = null; + _this.position = _modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"].Position.CENTER; + _this.code = 'tremolo1'; + return _this; + } + + _createClass(Tremolo, [{ + key: "getCategory", + value: function getCategory() { + return Tremolo.CATEGORY; + } + }, { + key: "draw", + value: function draw() { + this.checkContext(); + + if (!(this.note && this.index != null)) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoAttachedNote', "Can't draw Tremolo without a note and index."); + } + + this.setRendered(); + var stemDirection = this.note.getStemDirection(); + var start = this.note.getModifierStartXY(this.position, this.index); + var x = start.x; + var isGraceNote = this.note.getCategory() === 'gracenotes'; + var scale = isGraceNote ? _gracenote__WEBPACK_IMPORTED_MODULE_3__["GraceNote"].SCALE : 1; + var category = "tremolo.".concat(isGraceNote ? 'grace' : 'default'); + this.y_spacing = this.musicFont.lookupMetric("".concat(category, ".spacing")) * stemDirection; + var height = this.num * this.y_spacing; + var y = this.note.stem.getExtents().baseY - height; + + if (stemDirection < 0) { + y += this.musicFont.lookupMetric("".concat(category, ".offsetYStemDown")) * scale; + } else { + y += this.musicFont.lookupMetric("".concat(category, ".offsetYStemUp")) * scale; + } + + this.font = { + family: 'Arial', + size: 16 * scale, + weight: '' + }; + this.render_options = { + font_scale: this.musicFont.lookupMetric("".concat(category, ".point")), + stroke_px: 3, + stroke_spacing: 10 * scale + }; + x += this.musicFont.lookupMetric("".concat(category, ".offsetXStem").concat(stemDirection === _stem__WEBPACK_IMPORTED_MODULE_4__["Stem"].UP ? 'Up' : 'Down')); + + for (var i = 0; i < this.num; ++i) { + _glyph__WEBPACK_IMPORTED_MODULE_2__["Glyph"].renderGlyph(this.context, x, y, this.render_options.font_scale, this.code, { + category: category + }); + y += this.y_spacing; + } + } + }]); + + return Tremolo; +}(_modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"]); + +/***/ }), + +/***/ "./src/tuning.js": +/*!***********************!*\ + !*** ./src/tuning.js ***! + \***********************/ +/*! exports provided: Tuning */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Tuning", function() { return Tuning; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// This class implements varies types of tunings for tablature. + + +var Tuning = +/*#__PURE__*/ +function () { + _createClass(Tuning, null, [{ + key: "names", + get: function get() { + return { + 'standard': 'E/5,B/4,G/4,D/4,A/3,E/3', + 'dagdad': 'D/5,A/4,G/4,D/4,A/3,D/3', + 'dropd': 'E/5,B/4,G/4,D/4,A/3,D/3', + 'eb': 'Eb/5,Bb/4,Gb/4,Db/4,Ab/3,Db/3', + 'standardBanjo': 'D/5,B/4,G/4,D/4,G/5' + }; + } + }]); + + function Tuning() { + var tuningString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'E/5,B/4,G/4,D/4,A/3,E/3,B/2,E/2'; + + _classCallCheck(this, Tuning); + + // Default to standard tuning. + this.setTuning(tuningString); + } + + _createClass(Tuning, [{ + key: "noteToInteger", + value: function noteToInteger(noteString) { + return _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].keyProperties(noteString).int_value; + } + }, { + key: "setTuning", + value: function setTuning(noteString) { + if (Tuning.names[noteString]) { + noteString = Tuning.names[noteString]; + } + + this.tuningString = noteString; + this.tuningValues = []; + this.numStrings = 0; + var keys = noteString.split(/\s*,\s*/); + + if (keys.length === 0) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', 'Invalid tuning string: ' + noteString); + } + + this.numStrings = keys.length; + + for (var i = 0; i < this.numStrings; ++i) { + this.tuningValues[i] = this.noteToInteger(keys[i]); + } + } + }, { + key: "getValueForString", + value: function getValueForString(stringNum) { + var s = parseInt(stringNum, 10); + + if (s < 1 || s > this.numStrings) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', "String number must be between 1 and ".concat(this.numStrings, ":").concat(stringNum)); + } + + return this.tuningValues[s - 1]; + } + }, { + key: "getValueForFret", + value: function getValueForFret(fretNum, stringNum) { + var stringValue = this.getValueForString(stringNum); + var f = parseInt(fretNum, 10); + + if (f < 0) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArguments', 'Fret number must be 0 or higher: ' + fretNum); + } + + return stringValue + f; + } + }, { + key: "getNoteForFret", + value: function getNoteForFret(fretNum, stringNum) { + var noteValue = this.getValueForFret(fretNum, stringNum); + var octave = Math.floor(noteValue / 12); + var value = noteValue % 12; + return _tables__WEBPACK_IMPORTED_MODULE_1__["Flow"].integerToNote(value) + '/' + octave; + } + }]); + + return Tuning; +}(); + +/***/ }), + +/***/ "./src/tuplet.js": +/*!***********************!*\ + !*** ./src/tuplet.js ***! + \***********************/ +/*! exports provided: Tuplet */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Tuplet", function() { return Tuplet; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element */ "./src/element.js"); +/* harmony import */ var _formatter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatter */ "./src/formatter.js"); +/* harmony import */ var _glyph__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./glyph */ "./src/glyph.js"); +/* harmony import */ var _stem__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stem */ "./src/stem.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. + +/** + * ## Description + * + * Create a new tuplet from the specified notes. The notes must + * be part of the same voice. If they are of different rhythmic + * values, then options.num_notes must be set. + * + * @constructor + * @param {Array.} A set of notes: staveNotes, + * notes, etc... any class that inherits stemmableNote at some + * point in its prototype chain. + * @param options: object { + * + * num_notes: fit this many notes into... + * notes_occupied: ...the space of this many notes + * + * Together, these two properties make up the tuplet ratio + * in the form of num_notes : notes_occupied. + * num_notes defaults to the number of notes passed in, so + * it is important that if you omit this property, all of + * the notes passed should be of the same note value. + * notes_occupied defaults to 2 -- so you should almost + * certainly pass this parameter for anything other than + * a basic triplet. + * + * location: + * default 1, which is above the notes: ┌─── 3 ───┐ + * -1 is below the notes └─── 3 ───┘ + * + * bracketed: boolean, draw a bracket around the tuplet number + * when true: ┌─── 3 ───┐ when false: 3 + * defaults to true if notes are not beamed, false otherwise + * + * ratioed: boolean + * when true: ┌─── 7:8 ───┐, when false: ┌─── 7 ───┐ + * defaults to true if the difference between num_notes and + * notes_occupied is greater than 1. + * + * y_offset: int, default 0 + * manually offset a tuplet, for instance to avoid collisions + * with articulations, etc... + * } + */ + + + + + +var Tuplet = +/*#__PURE__*/ +function (_Element) { + _inherits(Tuplet, _Element); + + _createClass(Tuplet, null, [{ + key: "LOCATION_TOP", + get: function get() { + return 1; + } + }, { + key: "LOCATION_BOTTOM", + get: function get() { + return -1; + } + }, { + key: "NESTING_OFFSET", + get: function get() { + return 15; + } + }]); + + function Tuplet(notes, options) { + var _this; + + _classCallCheck(this, Tuplet); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Tuplet).call(this)); + + _this.setAttribute('type', 'Tuplet'); + + if (!notes || !notes.length) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('BadArguments', 'No notes provided for tuplet.'); + } + + _this.options = _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge({}, options); + _this.notes = notes; + _this.num_notes = 'num_notes' in _this.options ? _this.options.num_notes : notes.length; // We accept beats_occupied, but warn that it's deprecated: + // the preferred property name is now notes_occupied. + + if (_this.options.beats_occupied) { + _this.beatsOccupiedDeprecationWarning(); + } + + _this.notes_occupied = _this.options.notes_occupied || _this.options.beats_occupied || 2; + + if ('bracketed' in _this.options) { + _this.bracketed = _this.options.bracketed; + } else { + _this.bracketed = notes.some(function (note) { + return note.beam === null; + }); + } + + _this.ratioed = 'ratioed' in _this.options ? _this.options.ratioed : Math.abs(_this.notes_occupied - _this.num_notes) > 1; + _this.point = _this.musicFont.lookupMetric('digits.tupletPoint'); + _this.y_pos = 16; + _this.x_pos = 100; + _this.width = 200; + _this.location = _this.options.location || Tuplet.LOCATION_TOP; + _formatter__WEBPACK_IMPORTED_MODULE_2__["Formatter"].AlignRestsToNotes(notes, true, true); + + _this.resolveGlyphs(); + + _this.attach(); + + return _this; + } + + _createClass(Tuplet, [{ + key: "attach", + value: function attach() { + for (var i = 0; i < this.notes.length; i++) { + var note = this.notes[i]; + note.setTuplet(this); + } + } + }, { + key: "detach", + value: function detach() { + for (var i = 0; i < this.notes.length; i++) { + var note = this.notes[i]; + note.resetTuplet(this); + } + } + /** + * Set whether or not the bracket is drawn. + */ + + }, { + key: "setBracketed", + value: function setBracketed(bracketed) { + this.bracketed = !!bracketed; + return this; + } + /** + * Set whether or not the ratio is shown. + */ + + }, { + key: "setRatioed", + value: function setRatioed(ratioed) { + this.ratioed = !!ratioed; + return this; + } + /** + * Set the tuplet to be displayed either on the top or bottom of the stave + */ + + }, { + key: "setTupletLocation", + value: function setTupletLocation(location) { + if (!location) { + location = Tuplet.LOCATION_TOP; + } else if (location !== Tuplet.LOCATION_TOP && location !== Tuplet.LOCATION_BOTTOM) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArgument', 'Invalid tuplet location: ' + location); + } + + this.location = location; + return this; + } + }, { + key: "getNotes", + value: function getNotes() { + return this.notes; + } + }, { + key: "getNoteCount", + value: function getNoteCount() { + return this.num_notes; + } + }, { + key: "beatsOccupiedDeprecationWarning", + value: function beatsOccupiedDeprecationWarning() { + var msg = ['beats_occupied has been deprecated as an ', 'option for tuplets. Please use notes_occupied ', 'instead. Calls to getBeatsOccupied and ', 'setBeatsOccupied should now be routed to ', 'getNotesOccupied and setNotesOccupied instead'].join(''); + + if (console && console.warn) { + // eslint-disable-line no-console + console.warn(msg); // eslint-disable-line no-console + } else if (console) { + console.log(msg); // eslint-disable-line no-console + } + } + }, { + key: "getBeatsOccupied", + value: function getBeatsOccupied() { + this.beatsOccupiedDeprecationWarning(); + return this.getNotesOccupied(); + } + }, { + key: "setBeatsOccupied", + value: function setBeatsOccupied(beats) { + this.beatsOccupiedDeprecationWarning(); + return this.setNotesOccupied(beats); + } + }, { + key: "getNotesOccupied", + value: function getNotesOccupied() { + return this.notes_occupied; + } + }, { + key: "setNotesOccupied", + value: function setNotesOccupied(notes) { + this.detach(); + this.notes_occupied = notes; + this.resolveGlyphs(); + this.attach(); + } + }, { + key: "resolveGlyphs", + value: function resolveGlyphs() { + this.numerator_glyphs = []; + var n = this.num_notes; + + while (n >= 1) { + this.numerator_glyphs.unshift(new _glyph__WEBPACK_IMPORTED_MODULE_3__["Glyph"]('timeSig' + n % 10, this.point)); + n = parseInt(n / 10, 10); + } + + this.denom_glyphs = []; + n = this.notes_occupied; + + while (n >= 1) { + this.denom_glyphs.unshift(new _glyph__WEBPACK_IMPORTED_MODULE_3__["Glyph"]('timeSig' + n % 10, this.point)); + n = parseInt(n / 10, 10); + } + } // determine how many tuplets are nested within this tuplet + // on the same side (above/below), to calculate a y + // offset for this tuplet: + + }, { + key: "getNestedTupletCount", + value: function getNestedTupletCount() { + var location = this.location; + var first_note = this.notes[0]; + var maxTupletCount = countTuplets(first_note, location); + var minTupletCount = countTuplets(first_note, location); // Count the tuplets that are on the same side (above/below) + // as this tuplet: + + function countTuplets(note, location) { + return note.tupletStack.filter(function (tuplet) { + return tuplet.location === location; + }).length; + } + + this.notes.forEach(function (note) { + var tupletCount = countTuplets(note, location); + maxTupletCount = tupletCount > maxTupletCount ? tupletCount : maxTupletCount; + minTupletCount = tupletCount < minTupletCount ? tupletCount : minTupletCount; + }); + return maxTupletCount - minTupletCount; + } // determine the y position of the tuplet: + + }, { + key: "getYPosition", + value: function getYPosition() { + // offset the tuplet for any nested tuplets between + // it and the notes: + var nested_tuplet_y_offset = this.getNestedTupletCount() * Tuplet.NESTING_OFFSET * -this.location; // offset the tuplet for any manual y_offset: + + var y_offset = this.options.y_offset || 0; // now iterate through the notes and find our highest + // or lowest locations, to form a base y_pos + + var first_note = this.notes[0]; + var y_pos; + + if (this.location === Tuplet.LOCATION_TOP) { + y_pos = first_note.getStave().getYForLine(0) - 15; // y_pos = first_note.getStemExtents().topY - 10; + + for (var i = 0; i < this.notes.length; ++i) { + var top_y = this.notes[i].getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_4__["Stem"].UP ? this.notes[i].getStemExtents().topY - 10 : this.notes[i].getStemExtents().baseY - 20; + + if (top_y < y_pos) { + y_pos = top_y; + } + } + } else { + y_pos = first_note.getStave().getYForLine(4) + 20; + + for (var _i = 0; _i < this.notes.length; ++_i) { + var bottom_y = this.notes[_i].getStemDirection() === _stem__WEBPACK_IMPORTED_MODULE_4__["Stem"].UP ? this.notes[_i].getStemExtents().baseY + 20 : this.notes[_i].getStemExtents().topY + 10; + + if (bottom_y > y_pos) { + y_pos = bottom_y; + } + } + } + + return y_pos + nested_tuplet_y_offset + y_offset; + } + }, { + key: "draw", + value: function draw() { + var _this2 = this; + + this.checkContext(); + this.setRendered(); // determine x value of left bound of tuplet + + var first_note = this.notes[0]; + var last_note = this.notes[this.notes.length - 1]; + + if (!this.bracketed) { + this.x_pos = first_note.getStemX(); + this.width = last_note.getStemX() - this.x_pos; + } else { + this.x_pos = first_note.getTieLeftX() - 5; + this.width = last_note.getTieRightX() - this.x_pos + 5; + } // determine y value for tuplet + + + this.y_pos = this.getYPosition(); + + var addGlyphWidth = function addGlyphWidth(width, glyph) { + return width + glyph.getMetrics().width; + }; // calculate total width of tuplet notation + + + var width = this.numerator_glyphs.reduce(addGlyphWidth, 0); + + if (this.ratioed) { + width = this.denom_glyphs.reduce(addGlyphWidth, width); + width += this.point * 0.32; + } + + var notation_center_x = this.x_pos + this.width / 2; + var notation_start_x = notation_center_x - width / 2; // draw bracket if the tuplet is not beamed + + if (this.bracketed) { + var line_width = this.width / 2 - width / 2 - 5; // only draw the bracket if it has positive length + + if (line_width > 0) { + this.context.fillRect(this.x_pos, this.y_pos, line_width, 1); + this.context.fillRect(this.x_pos + this.width / 2 + width / 2 + 5, this.y_pos, line_width, 1); + this.context.fillRect(this.x_pos, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM), 1, this.location * 10); + this.context.fillRect(this.x_pos + this.width, this.y_pos + (this.location === Tuplet.LOCATION_BOTTOM), 1, this.location * 10); + } + } // draw numerator glyphs + + + var shiftY = this.musicFont.lookupMetric('digits.shiftY', 0); + var x_offset = 0; + this.numerator_glyphs.forEach(function (glyph) { + glyph.render(_this2.context, notation_start_x + x_offset, _this2.y_pos + _this2.point / 3 - 2 + shiftY); + x_offset += glyph.getMetrics().width; + }); // display colon and denominator if the ratio is to be shown + + if (this.ratioed) { + var colon_x = notation_start_x + x_offset + this.point * 0.16; + var colon_radius = this.point * 0.06; + this.context.beginPath(); + this.context.arc(colon_x, this.y_pos - this.point * 0.08, colon_radius, 0, Math.PI * 2, true); + this.context.closePath(); + this.context.fill(); + this.context.beginPath(); + this.context.arc(colon_x, this.y_pos + this.point * 0.12, colon_radius, 0, Math.PI * 2, true); + this.context.closePath(); + this.context.fill(); + x_offset += this.point * 0.32; + this.denom_glyphs.forEach(function (glyph) { + glyph.render(_this2.context, notation_start_x + x_offset, _this2.y_pos + _this2.point / 3 - 2 + shiftY); + x_offset += glyph.getMetrics().width; + }); + } + } + }]); + + return Tuplet; +}(_element__WEBPACK_IMPORTED_MODULE_1__["Element"]); + +/***/ }), + +/***/ "./src/vex.js": +/*!********************!*\ + !*** ./src/vex.js ***! + \********************/ +/*! exports provided: Vex */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Vex", function() { return Vex; }); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } + +function isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } + +function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// This file implements utility methods used by the rest of the VexFlow +// codebase. +// + +/* eslint max-classes-per-file: "off" */ +var Vex = function Vex() {}; // Default log function sends all arguments to console. + + +Vex.L = function (block, args) { + if (!args) return; + var line = Array.prototype.slice.call(args).join(' '); + window.console.log(block + ': ' + line); +}; + +Vex.MakeException = function (name) { + var exception = + /*#__PURE__*/ + function (_Error) { + _inherits(exception, _Error); + + function exception(message, data) { + var _this; + + _classCallCheck(this, exception); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(exception).call(this, message)); + _this.name = name; + _this.message = message; + _this.data = data; + return _this; + } + + return exception; + }(_wrapNativeSuper(Error)); + + return exception; +}; // Default runtime exception. + + +var RuntimeError = +/*#__PURE__*/ +function () { + function RuntimeError(code, message) { + _classCallCheck(this, RuntimeError); + + this.code = code; + this.message = message; + } + + _createClass(RuntimeError, [{ + key: "toString", + value: function toString() { + return '[RuntimeError] ' + this.code + ':' + this.message; + } + }]); + + return RuntimeError; +}(); // Shortcut method for `RuntimeError`. + + +Vex.RuntimeError = RuntimeError; +Vex.RERR = Vex.RuntimeError; // Merge `destination` hash with `source` hash, overwriting like keys +// in `source` if necessary. + +Vex.Merge = function (destination, source) { + for (var property in source) { + // eslint-disable-line guard-for-in + destination[property] = source[property]; + } + + return destination; +}; // DEPRECATED. Use `Math.*`. + + +Vex.Min = Math.min; +Vex.Max = Math.max; + +Vex.forEach = function (a, fn) { + for (var i = 0; i < a.length; i++) { + fn(a[i], i); + } +}; // Round number to nearest fractional value (`.5`, `.25`, etc.) + + +Vex.RoundN = function (x, n) { + return x % n >= n / 2 ? parseInt(x / n, 10) * n + n : parseInt(x / n, 10) * n; +}; // Locate the mid point between stave lines. Returns a fractional line if a space. + + +Vex.MidLine = function (a, b) { + var mid_line = b + (a - b) / 2; + + if (mid_line % 2 > 0) { + mid_line = Vex.RoundN(mid_line * 10, 5) / 10; + } + + return mid_line; +}; // Take `arr` and return a new list consisting of the sorted, unique, +// contents of arr. Does not modify `arr`. + + +Vex.SortAndUnique = function (arr, cmp, eq) { + if (arr.length > 1) { + var newArr = []; + var last; + arr.sort(cmp); + + for (var i = 0; i < arr.length; ++i) { + if (i === 0 || !eq(arr[i], last)) { + newArr.push(arr[i]); + } + + last = arr[i]; + } + + return newArr; + } else { + return arr; + } +}; // Check if array `a` contains `obj`. + + +Vex.Contains = function (a, obj) { + var i = a.length; + + while (i--) { + if (a[i] === obj) { + return true; + } + } + + return false; +}; // Get the 2D Canvas context from DOM element `canvas_sel`. + + +Vex.getCanvasContext = function (canvas_sel) { + if (!canvas_sel) { + throw new Vex.RERR('BadArgument', 'Invalid canvas selector: ' + canvas_sel); + } + + var canvas = document.getElementById(canvas_sel); + + if (!(canvas && canvas.getContext)) { + throw new Vex.RERR('UnsupportedBrowserError', 'This browser does not support HTML5 Canvas'); + } + + return canvas.getContext('2d'); +}; // Draw a tiny dot marker on the specified canvas. A great debugging aid. +// +// `ctx`: Canvas context. +// `x`, `y`: Dot coordinates. + + +Vex.drawDot = function (ctx, x, y) { + var color = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '#55'; + ctx.save(); + ctx.setFillStyle(color); // draw a circle + + ctx.beginPath(); + ctx.arc(x, y, 3, 0, Math.PI * 2, true); + ctx.closePath(); + ctx.fill(); + ctx.restore(); +}; // Benchmark. Run function `f` once and report time elapsed shifted by `s` milliseconds. + + +Vex.BM = function (s, f) { + var start_time = new Date().getTime(); + f(); + var elapsed = new Date().getTime() - start_time; + Vex.L(s + elapsed + 'ms'); +}; // Get stack trace. + + +Vex.StackTrace = function () { + var err = new Error(); + return err.stack; +}; // Dump warning to console. + + +Vex.W = function () { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + var line = args.join(' '); + window.console.log('Warning: ', line, Vex.StackTrace()); +}; // Used by various classes (e.g., SVGContext) to provide a +// unique prefix to element names (or other keys in shared namespaces). + + +Vex.Prefix = function (text) { + return Vex.Prefix.prefix + text; +}; + +Vex.Prefix.prefix = 'vf-'; + + +/***/ }), + +/***/ "./src/vibrato.js": +/*!************************!*\ + !*** ./src/vibrato.js ***! + \************************/ +/*! exports provided: Vibrato */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Vibrato", function() { return Vibrato; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _modifier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifier */ "./src/modifier.js"); +/* harmony import */ var _bend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bend */ "./src/bend.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// This class implements vibratos. + + + +var Vibrato = +/*#__PURE__*/ +function (_Modifier) { + _inherits(Vibrato, _Modifier); + + _createClass(Vibrato, null, [{ + key: "format", + // ## Static Methods + // Arrange vibratos inside a `ModifierContext`. + value: function format(vibratos, state, context) { + if (!vibratos || vibratos.length === 0) return false; // Vibratos are always on top. + + var text_line = state.top_text_line; + var width = 0; + var shift = state.right_shift - 7; // If there's a bend, drop the text line + + var bends = context.getModifiers(_bend__WEBPACK_IMPORTED_MODULE_2__["Bend"].CATEGORY); + + if (bends && bends.length > 0) { + text_line--; + } // Format Vibratos + + + for (var i = 0; i < vibratos.length; ++i) { + var vibrato = vibratos[i]; + vibrato.setXShift(shift); + vibrato.setTextLine(text_line); + width += vibrato.getWidth(); + shift += width; + } + + state.right_shift += width; + state.top_text_line += 1; + return true; + } // ## Prototype Methods + + }, { + key: "CATEGORY", + get: function get() { + return 'vibratos'; + } + }]); + + function Vibrato() { + var _this; + + _classCallCheck(this, Vibrato); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Vibrato).call(this)); + + _this.setAttribute('type', 'Vibrato'); + + _this.position = _modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"].Position.RIGHT; + _this.render_options = { + harsh: false, + vibrato_width: 20, + wave_height: 6, + wave_width: 4, + wave_girth: 2 + }; + + _this.setVibratoWidth(_this.render_options.vibrato_width); + + return _this; + } + + _createClass(Vibrato, [{ + key: "getCategory", + value: function getCategory() { + return Vibrato.CATEGORY; + } + }, { + key: "setHarsh", + value: function setHarsh(harsh) { + this.render_options.harsh = harsh; + return this; + } + }, { + key: "setVibratoWidth", + value: function setVibratoWidth(width) { + this.render_options.vibrato_width = width; + this.setWidth(width); + return this; + } + }, { + key: "draw", + value: function draw() { + var ctx = this.checkContext(); + + if (!this.note) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoNoteForVibrato', "Can't draw vibrato without an attached note."); + } + + this.setRendered(); + var start = this.note.getModifierStartXY(_modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"].Position.RIGHT, this.index); + var vx = start.x + this.x_shift; + var vy = this.note.getYForTopText(this.text_line) + 2; + Vibrato.renderVibrato(ctx, vx, vy, this.render_options); + } // Static rendering method that can be called from + // other classes (e.g. VibratoBracket) + + }], [{ + key: "renderVibrato", + value: function renderVibrato(ctx, x, y, opts) { + var harsh = opts.harsh, + vibrato_width = opts.vibrato_width, + wave_width = opts.wave_width, + wave_girth = opts.wave_girth, + wave_height = opts.wave_height; + var num_waves = vibrato_width / wave_width; + ctx.beginPath(); + var i; + + if (harsh) { + ctx.moveTo(x, y + wave_girth + 1); + + for (i = 0; i < num_waves / 2; ++i) { + ctx.lineTo(x + wave_width, y - wave_height / 2); + x += wave_width; + ctx.lineTo(x + wave_width, y + wave_height / 2); + x += wave_width; + } + + for (i = 0; i < num_waves / 2; ++i) { + ctx.lineTo(x - wave_width, y - wave_height / 2 + wave_girth + 1); + x -= wave_width; + ctx.lineTo(x - wave_width, y + wave_height / 2 + wave_girth + 1); + x -= wave_width; + } + + ctx.fill(); + } else { + ctx.moveTo(x, y + wave_girth); + + for (i = 0; i < num_waves / 2; ++i) { + ctx.quadraticCurveTo(x + wave_width / 2, y - wave_height / 2, x + wave_width, y); + x += wave_width; + ctx.quadraticCurveTo(x + wave_width / 2, y + wave_height / 2, x + wave_width, y); + x += wave_width; + } + + for (i = 0; i < num_waves / 2; ++i) { + ctx.quadraticCurveTo(x - wave_width / 2, y + wave_height / 2 + wave_girth, x - wave_width, y + wave_girth); + x -= wave_width; + ctx.quadraticCurveTo(x - wave_width / 2, y - wave_height / 2 + wave_girth, x - wave_width, y + wave_girth); + x -= wave_width; + } + + ctx.fill(); + } + } + }]); + + return Vibrato; +}(_modifier__WEBPACK_IMPORTED_MODULE_1__["Modifier"]); + +/***/ }), + +/***/ "./src/vibratobracket.js": +/*!*******************************!*\ + !*** ./src/vibratobracket.js ***! + \*******************************/ +/*! exports provided: VibratoBracket */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VibratoBracket", function() { return VibratoBracket; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element */ "./src/element.js"); +/* harmony import */ var _vibrato__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./vibrato */ "./src/vibrato.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// Author: Balazs Forian-Szabo +// +// ## Description +// +// This file implements `VibratoBrackets` +// that renders vibrato effect between two notes. + + + // To enable logging for this class. Set `Vex.Flow.VibratoBracket.DEBUG` to `true`. + +function L() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (VibratoBracket.DEBUG) _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].L('Vex.Flow.VibratoBracket', args); +} + +var VibratoBracket = +/*#__PURE__*/ +function (_Element) { + _inherits(VibratoBracket, _Element); + + // bracket_data = { + // start: Vex.Flow.Note (optional) + // stop: Vex.Flow.Note (optional) + // }; + // Either the stop or start note must be set, or both of them. + // A null value for the start or stop note indicates that the vibrato + // is drawn from the beginning or until the end of the stave accordingly. + function VibratoBracket(bracket_data) { + var _this; + + _classCallCheck(this, VibratoBracket); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(VibratoBracket).call(this)); + + _this.setAttribute('type', 'VibratoBracket'); + + _this.start = bracket_data.start; + _this.stop = bracket_data.stop; + _this.line = 1; + _this.render_options = { + harsh: false, + wave_height: 6, + wave_width: 4, + wave_girth: 2 + }; + return _this; + } // Set line position of the vibrato bracket + + + _createClass(VibratoBracket, [{ + key: "setLine", + value: function setLine(line) { + this.line = line; + return this; + } + }, { + key: "setHarsh", + value: function setHarsh(harsh) { + this.render_options.harsh = harsh; + return this; + } // Draw the vibrato bracket on the rendering context + + }, { + key: "draw", + value: function draw() { + var ctx = this.context; + this.setRendered(); + var y = this.start ? this.start.getStave().getYForTopText(this.line) : this.stop.getStave().getYForTopText(this.line); // If start note is not set then vibrato will be drawn + // from the beginning of the stave + + var start_x = this.start ? this.start.getAbsoluteX() : this.stop.getStave().getTieStartX(); // If stop note is not set then vibrato will be drawn + // until the end of the stave + + var stop_x = this.stop ? this.stop.getAbsoluteX() - this.stop.getWidth() - 5 : this.start.getStave().getTieEndX() - 10; + this.render_options.vibrato_width = stop_x - start_x; + L('Rendering VibratoBracket: start_x:', start_x, 'stop_x:', stop_x, 'y:', y); + _vibrato__WEBPACK_IMPORTED_MODULE_2__["Vibrato"].renderVibrato(ctx, start_x, y, this.render_options); + } + }]); + + return VibratoBracket; +}(_element__WEBPACK_IMPORTED_MODULE_1__["Element"]); + +/***/ }), + +/***/ "./src/voice.js": +/*!**********************!*\ + !*** ./src/voice.js ***! + \**********************/ +/*! exports provided: Voice */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Voice", function() { return Voice; }); +/* harmony import */ var _vex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vex */ "./src/vex.js"); +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element */ "./src/element.js"); +/* harmony import */ var _tables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tables */ "./src/tables.js"); +/* harmony import */ var _fraction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fraction */ "./src/fraction.js"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +// [VexFlow](http://vexflow.com) - Copyright (c) Mohit Muthanna 2010. +// +// ## Description +// +// This file implements the main Voice class. It's mainly a container +// object to group `Tickables` for formatting. + + + + +var Voice = +/*#__PURE__*/ +function (_Element) { + _inherits(Voice, _Element); + + _createClass(Voice, null, [{ + key: "Mode", + // Modes allow the addition of ticks in three different ways: + // + // STRICT: This is the default. Ticks must fill the voice. + // SOFT: Ticks can be added without restrictions. + // FULL: Ticks do not need to fill the voice, but can't exceed the maximum + // tick length. + get: function get() { + return { + STRICT: 1, + SOFT: 2, + FULL: 3 + }; + } + }]); + + function Voice(time, options) { + var _this; + + _classCallCheck(this, Voice); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Voice).call(this)); + + _this.setAttribute('type', 'Voice'); + + _this.options = _objectSpread({ + softmaxFactor: 100 + }, options); // Time signature shortcut: "4/4", "3/8", etc. + + if (typeof time === 'string') { + var match = time.match(/(\d+)\/(\d+)/); + + if (match) { + time = { + num_beats: match[1], + beat_value: match[2], + resolution: _tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].RESOLUTION + }; + } + } // Default time sig is 4/4 + + + _this.time = _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].Merge({ + num_beats: 4, + beat_value: 4, + resolution: _tables__WEBPACK_IMPORTED_MODULE_2__["Flow"].RESOLUTION + }, time); // Recalculate total ticks. + + _this.totalTicks = new _fraction__WEBPACK_IMPORTED_MODULE_3__["Fraction"](_this.time.num_beats * (_this.time.resolution / _this.time.beat_value), 1); + _this.resolutionMultiplier = 1; // Set defaults + + _this.tickables = []; + _this.ticksUsed = new _fraction__WEBPACK_IMPORTED_MODULE_3__["Fraction"](0, 1); + _this.smallestTickCount = _this.totalTicks.clone(); + _this.largestTickWidth = 0; + _this.stave = null; // Do we care about strictly timed notes + + _this.mode = Voice.Mode.STRICT; // This must belong to a VoiceGroup + + _this.voiceGroup = null; + return _this; + } // Get the total ticks in the voice + + + _createClass(Voice, [{ + key: "getTotalTicks", + value: function getTotalTicks() { + return this.totalTicks; + } // Get the total ticks used in the voice by all the tickables + + }, { + key: "getTicksUsed", + value: function getTicksUsed() { + return this.ticksUsed; + } // Get the largest width of all the tickables + + }, { + key: "getLargestTickWidth", + value: function getLargestTickWidth() { + return this.largestTickWidth; + } // Get the tick count for the shortest tickable + + }, { + key: "getSmallestTickCount", + value: function getSmallestTickCount() { + return this.smallestTickCount; + } // Get the tickables in the voice + + }, { + key: "getTickables", + value: function getTickables() { + return this.tickables; + } // Get/set the voice mode, use a value from `Voice.Mode` + + }, { + key: "getMode", + value: function getMode() { + return this.mode; + } + }, { + key: "setMode", + value: function setMode(mode) { + this.mode = mode; + return this; + } // Get the resolution multiplier for the voice + + }, { + key: "getResolutionMultiplier", + value: function getResolutionMultiplier() { + return this.resolutionMultiplier; + } // Get the actual tick resolution for the voice + + }, { + key: "getActualResolution", + value: function getActualResolution() { + return this.resolutionMultiplier * this.time.resolution; + } // Set the voice's stave + + }, { + key: "setStave", + value: function setStave(stave) { + this.stave = stave; + this.boundingBox = null; // Reset bounding box so we can reformat + + return this; + } // Get the bounding box for the voice + + }, { + key: "getBoundingBox", + value: function getBoundingBox() { + var stave; + var boundingBox; + var bb; + var i; + + if (!this.boundingBox) { + if (!this.stave) throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoStave', "Can't get bounding box without stave."); + stave = this.stave; + boundingBox = null; + + for (i = 0; i < this.tickables.length; ++i) { + this.tickables[i].setStave(stave); + bb = this.tickables[i].getBoundingBox(); + if (!bb) continue; + boundingBox = boundingBox ? boundingBox.mergeWith(bb) : bb; + } + + this.boundingBox = boundingBox; + } + + return this.boundingBox; + } // Every tickable must be associated with a voiceGroup. This allows formatters + // and preformatters to associate them with the right modifierContexts. + + }, { + key: "getVoiceGroup", + value: function getVoiceGroup() { + if (!this.voiceGroup) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('NoVoiceGroup', 'No voice group for voice.'); + } + + return this.voiceGroup; + } // Set the voice group + + }, { + key: "setVoiceGroup", + value: function setVoiceGroup(g) { + this.voiceGroup = g; + return this; + } // Set the voice mode to strict or soft + + }, { + key: "setStrict", + value: function setStrict(strict) { + this.mode = strict ? Voice.Mode.STRICT : Voice.Mode.SOFT; + return this; + } // Determine if the voice is complete according to the voice mode + + }, { + key: "isComplete", + value: function isComplete() { + if (this.mode === Voice.Mode.STRICT || this.mode === Voice.Mode.FULL) { + return this.ticksUsed.equals(this.totalTicks); + } else { + return true; + } + } // We use softmax to layout the tickables proportional to the exponent of + // their duration. The softmax factor is used to determine the 'linearness' of + // the layout. + // + // The softmax of all the tickables in this voice should sum to 1. + + }, { + key: "setSoftmaxFactor", + value: function setSoftmaxFactor(factor) { + this.options.softmaxFactor = factor; + return this; + } // Calculate the sum of the exponents of all the ticks in this voice to use as the denominator + // of softmax. + + }, { + key: "reCalculateExpTicksUsed", + value: function reCalculateExpTicksUsed() { + var _this2 = this; + + var totalTicks = this.ticksUsed.value(); + + var exp = function exp(tickable) { + return Math.pow(_this2.options.softmaxFactor, tickable.getTicks().value() / totalTicks); + }; + + this.expTicksUsed = this.tickables.map(exp).reduce(function (a, b) { + return a + b; + }); + return this.expTicksUsed; + } // Get the softmax-scaled value of a tick duration. 'tickValue' is a number. + + }, { + key: "softmax", + value: function softmax(tickValue) { + var _this3 = this; + + if (!this.expTicksUsed) { + this.reCalculateExpTicksUsed(); + } + + var totalTicks = this.ticksUsed.value(); + + var exp = function exp(v) { + return Math.pow(_this3.options.softmaxFactor, v / totalTicks); + }; + + return exp(tickValue) / this.expTicksUsed; + } // Add a tickable to the voice + + }, { + key: "addTickable", + value: function addTickable(tickable) { + if (!tickable.shouldIgnoreTicks()) { + var ticks = tickable.getTicks(); // Update the total ticks for this line. + + this.ticksUsed.add(ticks); + + if ((this.mode === Voice.Mode.STRICT || this.mode === Voice.Mode.FULL) && this.ticksUsed.greaterThan(this.totalTicks)) { + this.ticksUsed.subtract(ticks); + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RERR('BadArgument', 'Too many ticks.'); + } // Track the smallest tickable for formatting. + + + if (ticks.lessThan(this.smallestTickCount)) { + this.smallestTickCount = ticks.clone(); + } + + this.resolutionMultiplier = this.ticksUsed.denominator; // Expand total ticks using denominator from ticks used. + + this.totalTicks.add(0, this.ticksUsed.denominator); + } // Add the tickable to the line. + + + this.tickables.push(tickable); + tickable.setVoice(this); + return this; + } // Add an array of tickables to the voice. + + }, { + key: "addTickables", + value: function addTickables(tickables) { + for (var i = 0; i < tickables.length; ++i) { + this.addTickable(tickables[i]); + } + + return this; + } // Preformats the voice by applying the voice's stave to each note. + + }, { + key: "preFormat", + value: function preFormat() { + var _this4 = this; + + if (this.preFormatted) return this; + this.tickables.forEach(function (tickable) { + if (!tickable.getStave()) { + tickable.setStave(_this4.stave); + } + }); + this.preFormatted = true; + return this; + } // Render the voice onto the canvas `context` and an optional `stave`. + // If `stave` is omitted, it is expected that the notes have staves + // already set. + + }, { + key: "draw", + value: function draw() { + var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.context; + var stave = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.stave; + this.setRendered(); + var boundingBox = null; + + for (var i = 0; i < this.tickables.length; ++i) { + var tickable = this.tickables[i]; // Set the stave if provided + + if (stave) tickable.setStave(stave); + + if (!tickable.getStave()) { + throw new _vex__WEBPACK_IMPORTED_MODULE_0__["Vex"].RuntimeError('MissingStave', 'The voice cannot draw tickables without staves.'); + } + + if (i === 0) boundingBox = tickable.getBoundingBox(); + + if (i > 0 && boundingBox) { + var tickable_bb = tickable.getBoundingBox(); + if (tickable_bb) boundingBox.mergeWith(tickable_bb); + } + + tickable.setContext(context); + tickable.drawWithStyle(); + } + + this.boundingBox = boundingBox; + } + }]); + + return Voice; +}(_element__WEBPACK_IMPORTED_MODULE_1__["Element"]); + +/***/ }) + +/******/ })["default"]; +}); +console.warn("Please upgrade to the newest release of VexFlow.\nSee: https://github.com/0xfe/vexflow for more information.\nThis page uses version 3.0.9, which is no longer supported."); + +// YOU ARE LOOKING AT VEXFLOW LEGACY VERSION 3.0.9. +// SEE THE `build/` FOLDER FOR THE NEWEST RELEASE. diff --git a/releases/vexflow-min.js b/releases/vexflow-min.js new file mode 100644 index 0000000000..90593d5241 --- /dev/null +++ b/releases/vexflow-min.js @@ -0,0 +1,6 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Vex=e():t.Vex=e()}(window,(function(){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=0)}([function(t,e,n){"use strict";function i(t){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function o(t,e){for(var n=0;n=e/2?parseInt(t/e,10)*e+e:parseInt(t/e,10)*e},h.MidLine=function(t,e){var n=e+(t-e)/2;return n%2>0&&(n=h.RoundN(10*n,5)/10),n},h.SortAndUnique=function(t,e,n){if(t.length>1){var i,o=[];t.sort(e);for(var r=0;r3&&void 0!==arguments[3]?arguments[3]:"#55";t.save(),t.setFillStyle(i),t.beginPath(),t.arc(e,n,3,0,2*Math.PI,!0),t.closePath(),t.fill(),t.restore()},h.BM=function(t,e){var n=(new Date).getTime();e();var i=(new Date).getTime()-n;h.L(t+i+"ms")},h.StackTrace=function(){return(new Error).stack},h.W=function(){for(var t=arguments.length,e=new Array(t),n=0;n0}},{key:"greaterThanEquals",value:function(e){var n=t.__compareB.copy(this);return n.subtract(e),n.numerator>=0}},{key:"lessThan",value:function(t){return!this.greaterThanEquals(t)}},{key:"lessThanEquals",value:function(t){return!this.greaterThan(t)}},{key:"clone",value:function(){return new t(this.numerator,this.denominator)}},{key:"copy",value:function(t){return"number"==typeof t?this.set(t||0,1):this.set(t.numerator,t.denominator)}},{key:"quotient",value:function(){return Math.floor(this.numerator/this.denominator)}},{key:"fraction",value:function(){return this.numerator%this.denominator}},{key:"abs",value:function(){return this.denominator=Math.abs(this.denominator),this.numerator=Math.abs(this.numerator),this}},{key:"toString",value:function(){return this.numerator+"/"+this.denominator}},{key:"toSimplifiedString",value:function(){return t.__tmp.copy(this).simplify().toString()}},{key:"toMixedString",value:function(){var e="",n=this.quotient(),i=t.__tmp.copy(this);return n<0?i.abs().fraction():i.fraction(),0!==n?(e+=n,0!==i.numerator&&(e+=" "+i.toSimplifiedString())):e=0===i.numerator?"0":i.toSimplifiedString(),e}},{key:"parse",value:function(t){var e=t.split("/"),n=parseInt(e[0],10),i=e[1]?parseInt(e[1],10):1;return this.set(n,i)}}]),t}();function y(t,e){for(var n=0;n0}(t.INDEXES.concat(["id","class"]),i)?(this.updateIndex({id:n,name:i,value:o,oldValue:r}),this):this}}],[{key:"enableDefaultRegistry",value:function(e){t.defaultRegistry=e}},{key:"getDefaultRegistry",value:function(){return t.defaultRegistry}},{key:"disableDefaultRegistry",value:function(){t.defaultRegistry=null}}]),t}();function x(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function w(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{},n=e.type;x(this,t),this.attrs={id:t.newID(),el:null,type:n||"Base",classes:{}},this.boundingBox=null,this.context=null,this.rendered=!1,this.fontStack=q.DEFAULT_FONT_STACK,this.musicFont=q.DEFAULT_FONT_STACK[0],v.getDefaultRegistry()&&v.getDefaultRegistry().register(this)}return k(t,null,[{key:"newID",value:function(){return"auto"+t.ID++}}]),k(t,[{key:"setFontStack",value:function(t){return this.fontStack=t,this.musicFont=t[0],this}},{key:"getFontStack",value:function(){return this.fontStack}},{key:"setStyle",value:function(t){return this.style=t,this}},{key:"getStyle",value:function(){return this.style}},{key:"applyStyle",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.context,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.getStyle();return e?(t.save(),e.shadowColor&&t.setShadowColor(e.shadowColor),e.shadowBlur&&t.setShadowBlur(e.shadowBlur),e.fillStyle&&t.setFillStyle(e.fillStyle),e.strokeStyle&&t.setStrokeStyle(e.strokeStyle),e.lineWidth&&t.setLineWidth(e.lineWidth),this):this}},{key:"restoreStyle",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.context,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.getStyle();return e?(t.restore(),this):this}},{key:"drawWithStyle",value:function(){this.checkContext(),this.applyStyle(),this.draw(),this.restoreStyle()}},{key:"hasClass",value:function(t){return!0===this.attrs.classes[t]}},{key:"addClass",value:function(t){return this.attrs.classes[t]=!0,this.registry&&this.registry.onUpdate({id:this.getAttribute("id"),name:"class",value:t,oldValue:null}),this}},{key:"removeClass",value:function(t){return delete this.attrs.classes[t],this.registry&&this.registry.onUpdate({id:this.getAttribute("id"),name:"class",value:null,oldValue:t}),this}},{key:"onRegister",value:function(t){return this.registry=t,this}},{key:"isRendered",value:function(){return this.rendered}},{key:"setRendered",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this.rendered=t,this}},{key:"getAttributes",value:function(){return this.attrs}},{key:"getAttribute",value:function(t){return this.attrs[t]}},{key:"setAttribute",value:function(t,e){var n=this.attrs.id,i=this.attrs[t];return this.attrs[t]=e,this.registry&&this.registry.onUpdate({id:n,name:t,value:e,oldValue:i}),this}},{key:"getContext",value:function(){return this.context}},{key:"setContext",value:function(t){return this.context=t,this}},{key:"getBoundingBox",value:function(){return this.boundingBox}},{key:"checkContext",value:function(){if(!this.context)throw new h.RERR("NoContext","No rendering context attached to instance");return this.context}}]),t}();function T(t,e){for(var n=0;nthis.x2&&(this.x2=t)),null!=e&&((isNaN(this.y1)||isNaN(this.y2))&&(this.y1=e,this.y2=e),ethis.y2&&(this.y2=e))}},{key:"addX",value:function(t){this.addPoint(t,null)}},{key:"addY",value:function(t){this.addPoint(null,t)}},{key:"addQuadraticCurve",value:function(t,e,n,i,o,r){var b=t+2/3*(n-t),a=e+2/3*(i-e),s=b+1/3*(o-t),l=a+1/3*(r-e);this.addBezierCurve(t,e,b,a,s,l,o,r)}},{key:"addBezierCurve",value:function(t,e,n,i,o,r,b,a){var s,l=[t,e],u=[n,i],c=[o,r],h=[b,a];this.addPoint(l[0],l[1]),this.addPoint(h[0],h[1]);var f=function(t,e){return Math.pow(1-t,3)*l[e]+3*Math.pow(1-t,2)*t*u[e]+3*(1-t)*Math.pow(t,2)*c[e]+Math.pow(t,3)*h[e]};for(s=0;s<=1;s++){var p=6*l[s]-12*u[s]+6*c[s],m=-3*l[s]+9*u[s]-9*c[s]+3*h[s],y=3*u[s]-3*l[s];if(0!==m){var d=Math.pow(p,2)-4*y*m;if(!(d<0)){var _=(-p+Math.sqrt(d))/(2*m);0<_&&_<1&&(0===s&&this.addX(f(_,s)),1===s&&this.addY(f(_,s)));var g=(-p-Math.sqrt(d))/(2*m);01?e-1:0),i=1;i2&&void 0!==arguments[2]?arguments[2]:null,r=e.lookupGlyph(t,n),b=r.glyph,a=r.font,s=o?e.lookupFontMetric({font:a,category:o,code:n,key:"shiftX",defaultValue:0}):0,l=o?e.lookupFontMetric({font:a,category:o,code:n,key:"shiftY",defaultValue:0}):0,u=o?e.lookupFontMetric({font:a,category:o,code:n,key:"scale",defaultValue:1}):1,c=b.x_min,f=b.x_max,p=b.ha,m=!0;if(b.o)return m?b.cached_outline?i=b.cached_outline:(i=b.o.split(" "),b.cached_outline=i):(b.cached_outline&&delete b.cached_outline,i=b.o.split(" ")),{x_min:c,x_max:f,x_shift:s,y_shift:l,scale:u,ha:p,outline:i,font:a};throw new h.RERR("BadGlyph","Glyph ".concat(n," has no outline defined."))}},{key:"renderGlyph",value:function(t,n,i,o,r,b){var a=N({fontStack:q.DEFAULT_FONT_STACK,category:null},b),s=e.loadMetrics(a.fontStack,r,a.category),l=72*(o=a.category?e.lookupFontMetric({font:s.font,category:a.category,code:r,key:"point",defaultValue:o}):o)/(100*s.font.getResolution());return e.renderOutline(t,s.outline,l*s.scale,n+s.x_shift,i+s.y_shift,b),s}},{key:"renderOutline",value:function(t,e,n,i,o,r){t.beginPath(),t.moveTo(i,o),z(e,i,o,n,-n,{m:t.moveTo.bind(t),l:t.lineTo.bind(t),q:t.quadraticCurveTo.bind(t),b:t.bezierCurveTo.bind(t)}),t.fill()}},{key:"getOutlineBoundingBox",value:function(t,e,n,i){var o=new O;return z(t,n,i,e,-e,{m:o.addPoint.bind(o),l:o.addPoint.bind(o),q:o.addQuadraticCurve.bind(o),b:o.addBezierCurve.bind(o),z:o.noOp.bind(o)}),new C(o.x1,o.y1,o.width(),o.height())}}]),j(e,[{key:"getCode",value:function(){return this.code}},{key:"setOptions",value:function(t){this.options=N({},this.options,{},t),this.reset()}},{key:"setPoint",value:function(t){return this.point=t,this}},{key:"setStave",value:function(t){return this.stave=t,this}},{key:"setXShift",value:function(t){return this.x_shift=t,this}},{key:"setYShift",value:function(t){return this.y_shift=t,this}},{key:"reset",value:function(){this.metrics=e.loadMetrics(this.options.fontStack,this.code,this.options.category),this.point=this.options.category?e.lookupFontMetric({category:this.options.category,font:this.metrics.font,code:this.code,key:"point",defaultValue:this.point}):this.point,this.scale=72*this.point/(100*this.metrics.font.getResolution()),this.bbox=e.getOutlineBoundingBox(this.metrics.outline,this.scale*this.metrics.scale,this.metrics.x_shift,this.metrics.y_shift)}},{key:"getMetrics",value:function(){if(!this.metrics)throw new h.RuntimeError("BadGlyph","Glyph ".concat(this.code," is not initialized."));return{x_min:this.metrics.x_min*this.scale*this.metrics.scale,x_max:this.metrics.x_max*this.scale*this.metrics.scale,width:this.bbox.getW(),height:this.bbox.getH()}}},{key:"setOriginX",value:function(t){var e=this.bbox,n=(t-Math.abs(e.getX()/e.getW()))*e.getW();this.originShift.x=-n}},{key:"setOriginY",value:function(t){var e=this.bbox,n=(t-Math.abs(e.getY()/e.getH()))*e.getH();this.originShift.y=-n}},{key:"setOrigin",value:function(t,e){this.setOriginX(t),this.setOriginY(e)}},{key:"render",value:function(t,n,i){if(!this.metrics)throw new h.RuntimeError("BadGlyph","Glyph ".concat(this.code," is not initialized."));var o=this.metrics.outline,r=this.scale*this.metrics.scale;this.setRendered(),this.applyStyle(t),e.renderOutline(t,o,r,n+this.originShift.x+this.metrics.x_shift,i+this.originShift.y+this.metrics.y_shift),this.restoreStyle(t)}},{key:"renderToStave",value:function(t){if(this.checkContext(),!this.metrics)throw new h.RuntimeError("BadGlyph","Glyph ".concat(this.code," is not initialized."));if(!this.stave)throw new h.RuntimeError("GlyphError","No valid stave");var n=this.metrics.outline,i=this.scale*this.metrics.scale;this.setRendered(),this.applyStyle(),e.renderOutline(this.context,n,i,t+this.x_shift+this.metrics.x_shift,this.stave.getYForGlyphs()+this.y_shift+this.metrics.y_shift),this.restoreStyle()}}]),e}(S);function I(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:void 0,n=t.split("."),i=this.metrics,o=0;o=6&&2*s%2==0&&(l=-1);var u=void 0!==b.int_val?12*a+b.int_val:null,c=b.code,f=b.shift_right,p={};if(o.length>2&&o[2]){var m=o[2].toUpperCase();p=q.keyProperties.customNoteHeads[m]||{}}return H({key:r,octave:a,line:s,int_value:u,accidental:b.accidental,code:c,stroke:l,shift_right:f,displaced:!1},p)},q.keyProperties.note_values={C:{index:0,int_val:0,accidental:null},CN:{index:0,int_val:0,accidental:"n"},"C#":{index:0,int_val:1,accidental:"#"},"C##":{index:0,int_val:2,accidental:"##"},CB:{index:0,int_val:-1,accidental:"b"},CBB:{index:0,int_val:-2,accidental:"bb"},D:{index:1,int_val:2,accidental:null},DN:{index:1,int_val:2,accidental:"n"},"D#":{index:1,int_val:3,accidental:"#"},"D##":{index:1,int_val:4,accidental:"##"},DB:{index:1,int_val:1,accidental:"b"},DBB:{index:1,int_val:0,accidental:"bb"},E:{index:2,int_val:4,accidental:null},EN:{index:2,int_val:4,accidental:"n"},"E#":{index:2,int_val:5,accidental:"#"},"E##":{index:2,int_val:6,accidental:"##"},EB:{index:2,int_val:3,accidental:"b"},EBB:{index:2,int_val:2,accidental:"bb"},F:{index:3,int_val:5,accidental:null},FN:{index:3,int_val:5,accidental:"n"},"F#":{index:3,int_val:6,accidental:"#"},"F##":{index:3,int_val:7,accidental:"##"},FB:{index:3,int_val:4,accidental:"b"},FBB:{index:3,int_val:3,accidental:"bb"},G:{index:4,int_val:7,accidental:null},GN:{index:4,int_val:7,accidental:"n"},"G#":{index:4,int_val:8,accidental:"#"},"G##":{index:4,int_val:9,accidental:"##"},GB:{index:4,int_val:6,accidental:"b"},GBB:{index:4,int_val:5,accidental:"bb"},A:{index:5,int_val:9,accidental:null},AN:{index:5,int_val:9,accidental:"n"},"A#":{index:5,int_val:10,accidental:"#"},"A##":{index:5,int_val:11,accidental:"##"},AB:{index:5,int_val:8,accidental:"b"},ABB:{index:5,int_val:7,accidental:"bb"},B:{index:6,int_val:11,accidental:null},BN:{index:6,int_val:11,accidental:"n"},"B#":{index:6,int_val:12,accidental:"#"},"B##":{index:6,int_val:13,accidental:"##"},BB:{index:6,int_val:10,accidental:"b"},BBB:{index:6,int_val:9,accidental:"bb"},R:{index:6,int_val:9,rest:!0},X:{index:6,accidental:"",octave:4,code:"noteheadXBlack",shift_right:5.5}},q.integerToNote=function(t){if(void 0===t)throw new h.RERR("BadArguments","Undefined integer for integerToNote");if(t<-2)throw new h.RERR("BadArguments","integerToNote requires integer > -2: ".concat(t));var e=q.integerToNote.table[t];if(!e)throw new h.RERR("BadArguments","Unknown note value for integer: ".concat(t));return e},q.integerToNote.table={0:"C",1:"C#",2:"D",3:"D#",4:"E",5:"F",6:"F#",7:"G",8:"G#",9:"A",10:"A#",11:"B"},q.tabToGlyph=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=null,i=0,o=0;if("X"===t.toString().toUpperCase()){var r=new Y("accidentalDoubleSharp",q.DEFAULT_TABLATURE_FONT_SCALE).getMetrics();n="accidentalDoubleSharp",i=r.width,o=-r.height/2}else i=q.textWidth(t.toString());return{text:t,code:n,getWidth:function(){return i*e},shift_y:o}},q.textWidth=function(t){return 7*t.toString().length},q.articulationCodes=function(t){return q.articulationCodes.articulations[t]},q.articulationCodes.articulations={"a.":{code:"augmentationDot",between_lines:!0},av:{aboveCode:"articStaccatissimoAbove",belowCode:"articStaccatissimoBelow",between_lines:!0},"a>":{aboveCode:"articAccentAbove",belowCode:"articAccentBelow",between_lines:!0},"a-":{aboveCode:"articTenutoAbove",belowCode:"articTenutoBelow",between_lines:!0},"a^":{aboveCode:"articMarcatoAbove",belowCode:"articMarcatoBelow",between_lines:!1},"a+":{code:"pluckedLeftHandPizzicato",between_lines:!1},ao:{aboveCode:"pluckedSnapPizzicatoAbove",belowCode:"pluckedSnapPizzicatoBelow",between_lines:!1},ah:{code:"stringsHarmonic",between_lines:!1},"a@":{aboveCode:"fermataAbove",belowCode:"fermataBelow",between_lines:!1},"a@a":{code:"fermataAbove",between_lines:!1},"a@u":{code:"fermataBelow",between_lines:!1},"a|":{code:"stringsUpBow",between_lines:!1},am:{code:"stringsDownBow",between_lines:!1},"a,":{code:"pictChokeCymbal",between_lines:!1}},q.accidentalCodes=function(t){return q.accidentalCodes.accidentals[t]},q.accidentalCodes.accidentals={"#":{code:"accidentalSharp",parenRightPaddingAdjustment:-1},"##":{code:"accidentalDoubleSharp",parenRightPaddingAdjustment:-1},b:{code:"accidentalFlat",parenRightPaddingAdjustment:-2},bb:{code:"accidentalDoubleFlat",parenRightPaddingAdjustment:-2},n:{code:"accidentalNatural",parenRightPaddingAdjustment:-1},"{":{code:"accidentalParensLeft",parenRightPaddingAdjustment:-1},"}":{code:"accidentalParensRight",parenRightPaddingAdjustment:-1},db:{code:"accidentalThreeQuarterTonesFlatZimmermann",parenRightPaddingAdjustment:-1},d:{code:"accidentalQuarterToneFlatStein",parenRightPaddingAdjustment:0},"++":{code:"accidentalThreeQuarterTonesSharpStein",parenRightPaddingAdjustment:-1},"+":{code:"accidentalQuarterToneSharpStein",parenRightPaddingAdjustment:-1},"+-":{code:"accidentalKucukMucennebSharp",parenRightPaddingAdjustment:-1},bs:{code:"accidentalBakiyeFlat",parenRightPaddingAdjustment:-1},bss:{code:"accidentalBuyukMucennebFlat",parenRightPaddingAdjustment:-1},o:{code:"accidentalSori",parenRightPaddingAdjustment:-1},k:{code:"accidentalKoron",parenRightPaddingAdjustment:-1},bbs:{code:"vexAccidentalMicrotonal1",parenRightPaddingAdjustment:-1},"++-":{code:"vexAccidentalMicrotonal2",parenRightPaddingAdjustment:-1},ashs:{code:"vexAccidentalMicrotonal3",parenRightPaddingAdjustment:-1},afhf:{code:"vexAccidentalMicrotonal4",parenRightPaddingAdjustment:-1}},q.accidentalColumnsTable={1:{a:[1],b:[1]},2:{a:[1,2]},3:{a:[1,3,2],b:[1,2,1],second_on_bottom:[1,2,3]},4:{a:[1,3,4,2],b:[1,2,3,1],spaced_out_tetrachord:[1,2,1,2]},5:{a:[1,3,5,4,2],b:[1,2,4,3,1],spaced_out_pentachord:[1,2,3,2,1],very_spaced_out_pentachord:[1,2,1,2,1]},6:{a:[1,3,5,6,4,2],b:[1,2,4,5,3,1],spaced_out_hexachord:[1,3,2,1,3,2],very_spaced_out_hexachord:[1,2,1,2,1,2]}},q.ornamentCodes=function(t){return q.ornamentCodes.ornaments[t]},q.ornamentCodes.ornaments={mordent:{code:"ornamentShortTrill"},mordent_inverted:{code:"ornamentMordent"},turn:{code:"ornamentTurn"},turn_inverted:{code:"ornamentTurnSlash"},tr:{code:"ornamentTrill"},upprall:{code:"ornamentPrecompSlideTrillDAnglebert"},downprall:{code:"ornamentPrecompDoubleCadenceUpperPrefix"},prallup:{code:"ornamentPrecompTrillSuffixDandrieu"},pralldown:{code:"ornamentPrecompTrillLowerSuffix"},upmordent:{code:"ornamentPrecompSlideTrillBach"},downmordent:{code:"ornamentPrecompDoubleCadenceUpperPrefixTurn"},lineprall:{code:"ornamentPrecompAppoggTrill"},prallprall:{code:"ornamentTremblement"}},q.keySignature=function(t){var e=q.keySignature.keySpecs[t];if(!e)throw new h.RERR("BadKeySignature","Bad key signature spec: '".concat(t,"'"));if(!e.acc)return[];for(var n=q.keySignature.accidentalList(e.acc),i=[],o=0;o0&&void 0!==arguments[0]?arguments[0]:q.DEFAULT_NOTATION_FONT_SCALE;return new Y(this.code_head||"v53",t).getMetrics().width},stem:!1,stem_offset:0,flag:!1,stem_up_extension:-q.STEM_HEIGHT,stem_down_extension:-q.STEM_HEIGHT,tabnote_stem_up_extension:-q.STEM_HEIGHT,tabnote_stem_down_extension:-q.STEM_HEIGHT,dot_shiftY:0,line_above:0,line_below:0},type:{n:{code_head:"noteheadDoubleWhole"},h:{code_head:"unpitchedPercussionClef1"},m:{code_head:"vexNoteHeadMutedBreve",stem_offset:0},r:{code_head:"restDoubleWhole",rest:!0,position:"B/5",dot_shiftY:.5},s:{getWidth:function(){return q.SLASH_NOTEHEAD_WIDTH},position:"B/4"}}},1:{common:{getWidth:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:q.DEFAULT_NOTATION_FONT_SCALE;return new Y(this.code_head||"v1d",t).getMetrics().width},stem:!1,stem_offset:0,flag:!1,stem_up_extension:-q.STEM_HEIGHT,stem_down_extension:-q.STEM_HEIGHT,tabnote_stem_up_extension:-q.STEM_HEIGHT,tabnote_stem_down_extension:-q.STEM_HEIGHT,dot_shiftY:0,line_above:0,line_below:0},type:{n:{code_head:"noteheadWhole"},h:{code_head:"noteheadDiamondWhole"},m:{code_head:"noteheadXWhole",stem_offset:-3},r:{code_head:"restWhole",rest:!0,position:"D/5",dot_shiftY:.5},s:{getWidth:function(){return q.SLASH_NOTEHEAD_WIDTH},position:"B/4"}}},2:{common:{getWidth:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:q.DEFAULT_NOTATION_FONT_SCALE;return new Y(this.code_head||"noteheadHalf",t).getMetrics().width},stem:!0,stem_offset:0,flag:!1,stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{n:{code_head:"noteheadHalf"},h:{code_head:"noteheadDiamondHalf"},m:{code_head:"noteheadXHalf",stem_offset:-3},r:{code_head:"restHalf",stem:!1,rest:!0,position:"B/4",dot_shiftY:-.5},s:{getWidth:function(){return q.SLASH_NOTEHEAD_WIDTH},position:"B/4"}}},4:{common:{getWidth:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:q.DEFAULT_NOTATION_FONT_SCALE;return new Y(this.code_head||"noteheadBlack",t).getMetrics().width},stem:!0,stem_offset:0,flag:!1,stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{n:{code_head:"noteheadBlack"},h:{code_head:"noteheadDiamondBlack"},m:{code_head:"noteheadXBlack"},r:{code_head:"restQuarter",stem:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1.5,line_below:1.5},s:{getWidth:function(){return q.SLASH_NOTEHEAD_WIDTH},position:"B/4"}}},8:{common:{getWidth:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:q.DEFAULT_NOTATION_FONT_SCALE;return new Y(this.code_head||"noteheadBlack",t).getMetrics().width},stem:!0,stem_offset:0,flag:!0,beam_count:1,code_flag_upstem:"flag8thUp",code_flag_downstem:"flag8thDown",stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{n:{code_head:"noteheadBlack"},h:{code_head:"noteheadDiamondBlack"},m:{code_head:"noteheadXBlack"},r:{code_head:"rest8th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1,line_below:1},s:{getWidth:function(){return q.SLASH_NOTEHEAD_WIDTH},position:"B/4"}}},16:{common:{beam_count:2,getWidth:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:q.DEFAULT_NOTATION_FONT_SCALE;return new Y(this.code_head||"noteheadBlack",t).getMetrics().width},stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag16thUp",code_flag_downstem:"flag16thDown",stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{n:{code_head:"noteheadBlack"},h:{code_head:"noteheadDiamondBlack"},m:{code_head:"noteheadXBlack"},r:{code_head:"rest16th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1,line_below:2},s:{getWidth:function(){return q.SLASH_NOTEHEAD_WIDTH},position:"B/4"}}},32:{common:{beam_count:3,getWidth:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:q.DEFAULT_NOTATION_FONT_SCALE;return new Y(this.code_head||"noteheadBlack",t).getMetrics().width},stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag32ndUp",code_flag_downstem:"flag32ndDown",stem_up_extension:9,stem_down_extension:9,tabnote_stem_up_extension:8,tabnote_stem_down_extension:5,dot_shiftY:0,line_above:0,line_below:0},type:{n:{code_head:"noteheadBlack"},h:{code_head:"noteheadDiamondBlack"},m:{code_head:"noteheadXBlack"},r:{code_head:"rest32nd",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-1.5,line_above:2,line_below:2},s:{getWidth:function(){return q.SLASH_NOTEHEAD_WIDTH},position:"B/4"}}},64:{common:{beam_count:4,getWidth:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:q.DEFAULT_NOTATION_FONT_SCALE;return new Y(this.code_head||"noteheadBlack",t).getMetrics().width},stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag64thUp",code_flag_downstem:"flag64thDown",stem_up_extension:13,stem_down_extension:13,tabnote_stem_up_extension:12,tabnote_stem_down_extension:9,dot_shiftY:0,line_above:0,line_below:0},type:{n:{code_head:"noteheadBlack"},h:{code_head:"noteheadDiamondBlack"},m:{code_head:"noteheadXBlack"},r:{code_head:"rest64th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-1.5,line_above:2,line_below:3},s:{getWidth:function(){return q.SLASH_NOTEHEAD_WIDTH},position:"B/4"}}},128:{common:{beam_count:5,getWidth:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:q.DEFAULT_NOTATION_FONT_SCALE;return new Y(this.code_head||"noteheadBlack",t).getMetrics().width},stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"flag128thUp",code_flag_downstem:"flag128thDown",stem_up_extension:22,stem_down_extension:22,tabnote_stem_up_extension:21,tabnote_stem_down_extension:18,dot_shiftY:0,line_above:0,line_below:0},type:{n:{code_head:"noteheadBlack"},h:{code_head:"noteheadDiamondBlack"},m:{code_head:"noteheadXBlack"},r:{code_head:"rest128th",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:1.5,line_above:3,line_below:3},s:{getWidth:function(){return q.SLASH_NOTEHEAD_WIDTH},position:"B/4"}}}},q.TIME4_4={num_beats:4,beat_value:4,resolution:q.RESOLUTION};var $=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.vexFlowCanvasContext=e,e.canvas?this.canvas=e.canvas:this.canvas={width:t.WIDTH,height:t.HEIGHT}}return Z(t,null,[{key:"SanitizeCanvasDims",value:function(t,e){return Math.max(t,e)>this.CANVAS_BROWSER_SIZE_LIMIT&&(h.W("Canvas dimensions exceed browser limit. Cropping to "+this.CANVAS_BROWSER_SIZE_LIMIT),t>this.CANVAS_BROWSER_SIZE_LIMIT&&(t=this.CANVAS_BROWSER_SIZE_LIMIT),e>this.CANVAS_BROWSER_SIZE_LIMIT&&(e=this.CANVAS_BROWSER_SIZE_LIMIT)),[t,e]}},{key:"WIDTH",get:function(){return 600}},{key:"HEIGHT",get:function(){return 400}},{key:"CANVAS_BROWSER_SIZE_LIMIT",get:function(){return 32767}}]),Z(t,[{key:"clear",value:function(){this.vexFlowCanvasContext.clearRect(0,0,this.canvas.width,this.canvas.height)}},{key:"openGroup",value:function(){}},{key:"closeGroup",value:function(){}},{key:"add",value:function(){}},{key:"setFont",value:function(t,e,n){return this.vexFlowCanvasContext.font=(n||"")+" "+e+"pt "+t,this}},{key:"setRawFont",value:function(t){return this.vexFlowCanvasContext.font=t,this}},{key:"setFillStyle",value:function(t){return this.vexFlowCanvasContext.fillStyle=t,this}},{key:"setBackgroundFillStyle",value:function(t){return this.background_fillStyle=t,this}},{key:"setStrokeStyle",value:function(t){return this.vexFlowCanvasContext.strokeStyle=t,this}},{key:"setShadowColor",value:function(t){return this.vexFlowCanvasContext.shadowColor=t,this}},{key:"setShadowBlur",value:function(t){return this.vexFlowCanvasContext.shadowBlur=t,this}},{key:"setLineWidth",value:function(t){return this.vexFlowCanvasContext.lineWidth=t,this}},{key:"setLineCap",value:function(t){return this.vexFlowCanvasContext.lineCap=t,this}},{key:"setLineDash",value:function(t){return this.vexFlowCanvasContext.lineDash=t,this}},{key:"scale",value:function(t,e){return this.vexFlowCanvasContext.scale(parseFloat(t),parseFloat(e))}},{key:"resize",value:function(t,e){var n=Q(this.SanitizeCanvasDims(parseInt(t,10),parseInt(e,10)),2);return t=n[0],e=n[1],this.vexFlowCanvasContext.resize(t,e)}},{key:"rect",value:function(t,e,n,i){return this.vexFlowCanvasContext.rect(t,e,n,i)}},{key:"fillRect",value:function(t,e,n,i){return this.vexFlowCanvasContext.fillRect(t,e,n,i)}},{key:"clearRect",value:function(t,e,n,i){return this.vexFlowCanvasContext.clearRect(t,e,n,i)}},{key:"beginPath",value:function(){return this.vexFlowCanvasContext.beginPath()}},{key:"moveTo",value:function(t,e){return this.vexFlowCanvasContext.moveTo(t,e)}},{key:"lineTo",value:function(t,e){return this.vexFlowCanvasContext.lineTo(t,e)}},{key:"bezierCurveTo",value:function(t,e,n,i,o,r){return this.vexFlowCanvasContext.bezierCurveTo(t,e,n,i,o,r)}},{key:"quadraticCurveTo",value:function(t,e,n,i){return this.vexFlowCanvasContext.quadraticCurveTo(t,e,n,i)}},{key:"arc",value:function(t,e,n,i,o,r){return this.vexFlowCanvasContext.arc(t,e,n,i,o,r)}},{key:"glow",value:function(){return this.vexFlowCanvasContext.glow()}},{key:"fill",value:function(){return this.vexFlowCanvasContext.fill()}},{key:"stroke",value:function(){return this.vexFlowCanvasContext.stroke()}},{key:"closePath",value:function(){return this.vexFlowCanvasContext.closePath()}},{key:"measureText",value:function(t){return this.vexFlowCanvasContext.measureText(t)}},{key:"fillText",value:function(t,e,n){return this.vexFlowCanvasContext.fillText(t,e,n)}},{key:"save",value:function(){return this.vexFlowCanvasContext.save()}},{key:"restore",value:function(){return this.vexFlowCanvasContext.restore()}}]),t}();function tt(t,e){for(var n=0;n2*Math.PI;)t-=2*Math.PI;return t}if((i=b(i))>(o=b(o))){var a=i;i=o,o=a,r=!r}var s=o-i;return s>Math.PI?(this.arcHelper(t,e,n,i,i+s/2,r),this.arcHelper(t,e,n,i+s/2,o,r)):this.arcHelper(t,e,n,i,o,r),this}},{key:"arcHelper",value:function(t,e,n,i,o,r){var b=t+n*Math.cos(i),a=e+n*Math.sin(i),s=t+n*Math.cos(o),l=e+n*Math.sin(o),u=0,c=0;r?(c=1,o-iMath.PI&&(u=1),this.path+="M"+b+","+a+",A"+n+","+n+",0,"+u+","+c+","+s+","+l+"M"+this.pen.x+","+this.pen.y}},{key:"glow",value:function(){var t=this.paper.set();if(this.shadow_attributes.width>0)for(var e=this.shadow_attributes,n=e.width/2,i=1;i<=n;i++)t.push(this.paper.path(this.path).attr({stroke:e.color,"stroke-linejoin":"round","stroke-linecap":"round","stroke-width":+(e.width/n*i).toFixed(3),opacity:+((e.opacity||.3)/n).toFixed(3),transform:this.attributes.transform,scale:this.attributes.scale}));return t}},{key:"fill",value:function(){var t=this.paper.path(this.path).attr(this.attributes).attr("stroke-width",0);return this.glow(t),this}},{key:"stroke",value:function(){var t=this.lineWidth*(this.state.scale.x+this.state.scale.y)/2,e=this.paper.path(this.path).attr(this.attributes).attr("fill","none").attr("stroke-width",t);return this.glow(e),this}},{key:"closePath",value:function(){return this.path+="Z",this}},{key:"measureText",value:function(t){var e=this.paper.text(0,0,t).attr(this.attributes).attr("fill","none").attr("stroke","none"),n=e.getBBox();return e.remove(),{width:n.width,height:n.height}}},{key:"fillText",value:function(t,e,n){return this.paper.text(e+this.measureText(t).width/2,n-this.state.font_size/(2.25*this.state.scale.y),t).attr(this.attributes),this}},{key:"save",value:function(){return this.state_stack.push({state:{font_family:this.state.font_family},attributes:{font:this.attributes.font,fill:this.attributes.fill,stroke:this.attributes.stroke,"stroke-width":this.attributes["stroke-width"]},shadow_attributes:{width:this.shadow_attributes.width,color:this.shadow_attributes.color}}),this}},{key:"restore",value:function(){var t=this.state_stack.pop();return this.state.font_family=t.state.font_family,this.attributes.font=t.attributes.font,this.attributes.fill=t.attributes.fill,this.attributes.stroke=t.attributes.stroke,this.attributes["stroke-width"]=t.attributes["stroke-width"],this.shadow_attributes.width=t.shadow_attributes.width,this.shadow_attributes.color=t.shadow_attributes.color,this}}])&&tt(e.prototype,n),i&&tt(e,i),t}();function nt(t,e){for(var n=0;n2*Math.PI;)t-=2*Math.PI;return t}if((i=b(i))>(o=b(o))){var a=i;i=o,o=a,r=!r}var s=o-i;return s>Math.PI?(this.arcHelper(t,e,n,i,i+s/2,r),this.arcHelper(t,e,n,i+s/2,o,r)):this.arcHelper(t,e,n,i,o,r),this}},{key:"arcHelper",value:function(t,e,n,i,o,r){var b=t+n*Math.cos(i),a=e+n*Math.sin(i),s=t+n*Math.cos(o),l=e+n*Math.sin(o),u=0,c=0;r?(c=1,o-iMath.PI&&(u=1),this.path+="M"+b+" "+a+" A"+n+" "+n+" 0 "+u+" "+c+" "+s+" "+l,isNaN(this.pen.x)||isNaN(this.pen.y)||(this.peth+="M"+this.pen.x+" "+this.pen.y)}},{key:"closePath",value:function(){return this.path+="Z",this}},{key:"glow",value:function(){if(this.shadow_attributes.width>0)for(var t=this.shadow_attributes,e=t.width/2,n=1;n<=e;n++){var i={stroke:t.color,"stroke-linejoin":"round","stroke-linecap":"round","stroke-width":+(.4*t.width/e*n).toFixed(3),opacity:+((t.opacity||.3)/e).toFixed(3)},o=this.create("path");i.d=this.path,this.applyAttributes(o,i),this.add(o)}return this}},{key:"fill",value:function(t){this.glow();var e=this.create("path");return void 0===t&&(h.Merge(t={},this.attributes),t.stroke="none"),t.d=this.path,this.applyAttributes(e,t),this.add(e),this}},{key:"stroke",value:function(){this.glow();var t=this.create("path"),e={};return h.Merge(e,this.attributes),e.fill="none",e["stroke-width"]=this.lineWidth,e.d=this.path,this.applyAttributes(t,e),this.add(t),this}},{key:"measureText",value:function(t){var e=this.create("text");if("function"!=typeof e.getBBox)return{x:0,y:0,width:0,height:0};e.textContent=t,this.applyAttributes(e,this.attributes),this.svg.appendChild(e);var n=e.getBBox();return this.ie&&""!==t&&"italic"===this.attributes["font-style"]&&(n=this.ieMeasureTextFix(n,t)),this.svg.removeChild(e),n}},{key:"ieMeasureTextFix",value:function(t){var e=1.196*Number(this.fontSize)+1.9598,n=t.width-e,i=t.height-1.5;return{x:t.x,y:t.y,width:n,height:i}}},{key:"fillText",value:function(t,e,n){if(t&&!(t.length<=0)){var i={};h.Merge(i,this.attributes),i.stroke="none",i.x=e,i.y=n;var o=this.create("text");o.textContent=t,this.applyAttributes(o,i),this.add(o)}}},{key:"save",value:function(){return this.state_stack.push({state:{"font-family":this.state["font-family"],"font-weight":this.state["font-weight"],"font-style":this.state["font-style"],"font-size":this.state["font-size"],scale:this.state.scale},attributes:{"font-family":this.attributes["font-family"],"font-weight":this.attributes["font-weight"],"font-style":this.attributes["font-style"],"font-size":this.attributes["font-size"],fill:this.attributes.fill,stroke:this.attributes.stroke,"stroke-width":this.attributes["stroke-width"],"stroke-dasharray":this.attributes["stroke-dasharray"]},shadow_attributes:{width:this.shadow_attributes.width,color:this.shadow_attributes.color},lineWidth:this.lineWidth}),this}},{key:"restore",value:function(){var t=this.state_stack.pop();return this.state["font-family"]=t.state["font-family"],this.state["font-weight"]=t.state["font-weight"],this.state["font-style"]=t.state["font-style"],this.state["font-size"]=t.state["font-size"],this.state.scale=t.state.scale,this.attributes["font-family"]=t.attributes["font-family"],this.attributes["font-weight"]=t.attributes["font-weight"],this.attributes["font-style"]=t.attributes["font-style"],this.attributes["font-size"]=t.attributes["font-size"],this.attributes.fill=t.attributes.fill,this.attributes.stroke=t.attributes.stroke,this.attributes["stroke-width"]=t.attributes["stroke-width"],this.attributes["stroke-dasharray"]=t.attributes["stroke-dasharray"],this.shadow_attributes.width=t.shadow_attributes.width,this.shadow_attributes.color=t.shadow_attributes.color,this.lineWidth=t.lineWidth,this}}])&&nt(e.prototype,n),i&&nt(e,i),t}();function bt(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if(!(Symbol.iterator in Object(t))&&"[object Arguments]"!==Object.prototype.toString.call(t))return;var n=[],i=!0,o=!1,r=void 0;try{for(var b,a=t[Symbol.iterator]();!(i=(b=a.next()).done)&&(n.push(b.value),!e||n.length!==e);i=!0);}catch(t){o=!0,r=t}finally{try{i||null==a.return||a.return()}finally{if(o)throw r}}return n}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function at(t,e){for(var n=0;n=i)||!(a<0?u<=o:u>=o);){var f=r[c++%r.length],p=l+Math.cos(s)*f;l=b<0?Math.max(i,p):Math.min(i,p);var m=u+Math.sin(s)*f;u=a<0?Math.max(o,m):Math.min(o,m),h?t.lineTo(l,u):t.moveTo(l,u),h=!h}t.closePath(),t.stroke()}},{key:"Backends",get:function(){return{CANVAS:1,RAPHAEL:2,SVG:3,VML:4}}},{key:"LineEndType",get:function(){return{NONE:1,UP:2,DOWN:3}}},{key:"USE_CANVAS_PROXY",get:function(){return!1}},{key:"lastContext",get:function(){return lt},set:function(t){lt=t}}]),st(t,[{key:"resize",value:function(e,n){if(this.backend===t.Backends.CANVAS){if(!this.element.getContext)throw new h.RERR("BadElement","Can't get canvas context from element: ".concat(this.elementId));var i=bt($.SanitizeCanvasDims(e,n),2);e=i[0],n=i[1];var o=window.devicePixelRatio||1;this.element.width=e*o,this.element.height=n*o,this.element.style.width=e+"px",this.element.style.height=n+"px",this.ctx=t.bolsterCanvasContext(this.element.getContext("2d")),this.ctx.scale(o,o)}else this.ctx.resize(e,n);return this}},{key:"getContext",value:function(){return this.ctx}}]),t}();function ct(t){return(ct="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function ht(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function ft(t,e){return!e||"object"!==ct(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function pt(t){return(pt=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function mt(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{};return ht(this,e),(t=ft(this,pt(e).call(this))).setAttribute("type","Stem"),t.x_begin=n.x_begin||0,t.x_end=n.x_end||0,t.y_top=n.y_top||0,t.y_bottom=n.y_bottom||0,t.stem_extension=n.stem_extension||0,t.stem_direction=n.stem_direction||0,t.hide=n.hide||!1,t.isStemlet=n.isStemlet||!1,t.stemletHeight=n.stemletHeight||0,t.renderHeightAdjustment=0,t.setOptions(n),t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&dt(t,e)}(e,t),yt(e,null,[{key:"CATEGORY",get:function(){return"stem"}},{key:"UP",get:function(){return 1}},{key:"DOWN",get:function(){return-1}},{key:"WIDTH",get:function(){return q.STEM_WIDTH}},{key:"HEIGHT",get:function(){return q.STEM_HEIGHT}}]),yt(e,[{key:"setOptions",value:function(t){this.stem_up_y_offset=t.stem_up_y_offset||0,this.stem_down_y_offset=t.stem_down_y_offset||0,this.stem_up_y_base_offset=t.stem_up_y_base_offset||0,this.stem_down_y_base_offset=t.stem_down_y_base_offset||0}},{key:"setNoteHeadXBounds",value:function(t,e){return this.x_begin=t,this.x_end=e,this}},{key:"setDirection",value:function(t){this.stem_direction=t}},{key:"setExtension",value:function(t){this.stem_extension=t}},{key:"getExtension",value:function(){return this.stem_extension}},{key:"setYBounds",value:function(t,e){this.y_top=t,this.y_bottom=e}},{key:"getCategory",value:function(){return e.CATEGORY}},{key:"getHeight",value:function(){var t=this.stem_direction===e.UP?this.stem_up_y_offset:this.stem_down_y_offset;return(this.y_bottom-this.y_top)*this.stem_direction+(e.HEIGHT-t+this.stem_extension)*this.stem_direction}},{key:"getBoundingBox",value:function(){throw new h.RERR("NotImplemented","getBoundingBox() not implemented.")}},{key:"getExtents",value:function(){var t=this.stem_direction===e.UP,n=[this.y_top,this.y_bottom],i=e.HEIGHT+this.stem_extension,o=(t?Math.min:Math.max).apply(void 0,n),r=(t?Math.max:Math.min).apply(void 0,n);return{topY:o+i*-this.stem_direction,baseY:r}}},{key:"setVisibility",value:function(t){return this.hide=!t,this}},{key:"setStemlet",value:function(t,e){return this.isStemlet=t,this.stemletHeight=e,this}},{key:"draw",value:function(){if(this.setRendered(),!this.hide){var t,n,i=this.checkContext(),o=this.stem_direction,r=0;o===e.DOWN?(t=this.x_begin,n=this.y_top+this.stem_down_y_offset,r=this.stem_down_y_base_offset):(t=this.x_end,n=this.y_bottom-this.stem_up_y_offset,r=this.stem_up_y_base_offset);var b=this.getHeight();!function(){for(var t=arguments.length,e=new Array(t),n=0;n1,i.point=i.musicFont.lookupMetric("digits.tupletPoint"),i.y_pos=16,i.x_pos=100,i.width=200,i.location=i.options.location||e.LOCATION_TOP,go.AlignRestsToNotes(t,!0,!0),i.resolveGlyphs(),i.attach(),i}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&St(t,e)}(e,t),kt(e,null,[{key:"LOCATION_TOP",get:function(){return 1}},{key:"LOCATION_BOTTOM",get:function(){return-1}},{key:"NESTING_OFFSET",get:function(){return 15}}]),kt(e,[{key:"attach",value:function(){for(var t=0;t=1;)this.numerator_glyphs.unshift(new Y("timeSig"+t%10,this.point)),t=parseInt(t/10,10);for(this.denom_glyphs=[],t=this.notes_occupied;t>=1;)this.denom_glyphs.unshift(new Y("timeSig"+t%10,this.point)),t=parseInt(t/10,10)}},{key:"getNestedTupletCount",value:function(){var t=this.location,e=this.notes[0],n=o(e,t),i=o(e,t);function o(t,e){return t.tupletStack.filter((function(t){return t.location===e})).length}return this.notes.forEach((function(e){var r=o(e,t);n=r>n?r:n,i=rt&&(t=s)}}return t+n+i}},{key:"draw",value:function(){var t=this;this.checkContext(),this.setRendered();var n=this.notes[0],i=this.notes[this.notes.length-1];this.bracketed?(this.x_pos=n.getTieLeftX()-5,this.width=i.getTieRightX()-this.x_pos+5):(this.x_pos=n.getStemX(),this.width=i.getStemX()-this.x_pos),this.y_pos=this.getYPosition();var o=function(t,e){return t+e.getMetrics().width},r=this.numerator_glyphs.reduce(o,0);this.ratioed&&(r=this.denom_glyphs.reduce(o,r),r+=.32*this.point);var b=this.x_pos+this.width/2-r/2;if(this.bracketed){var a=this.width/2-r/2-5;a>0&&(this.context.fillRect(this.x_pos,this.y_pos,a,1),this.context.fillRect(this.x_pos+this.width/2+r/2+5,this.y_pos,a,1),this.context.fillRect(this.x_pos,this.y_pos+(this.location===e.LOCATION_BOTTOM),1,10*this.location),this.context.fillRect(this.x_pos+this.width,this.y_pos+(this.location===e.LOCATION_BOTTOM),1,10*this.location))}var s=this.musicFont.lookupMetric("digits.shiftY",0),l=0;if(this.numerator_glyphs.forEach((function(e){e.render(t.context,b+l,t.y_pos+t.point/3-2+s),l+=e.getMetrics().width})),this.ratioed){var u=b+l+.16*this.point,c=.06*this.point;this.context.beginPath(),this.context.arc(u,this.y_pos-.08*this.point,c,0,2*Math.PI,!0),this.context.closePath(),this.context.fill(),this.context.beginPath(),this.context.arc(u,this.y_pos+.12*this.point,c,0,2*Math.PI,!0),this.context.closePath(),this.context.fill(),l+=.32*this.point,this.denom_glyphs.forEach((function(e){e.render(t.context,b+l,t.y_pos+t.point/3-2+s),l+=e.getMetrics().width}))}}}]),e}(S);function Ot(t){return(Ot="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Et(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e=0?_t.DOWN:_t.UP}var Mt="L",Ft="B",Dt=function(t){function e(t,n){var i,o,r,b,a;if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),o=this,(i=!(r=Pt(e).call(this))||"object"!==Ot(r)&&"function"!=typeof r?Ct(o):r).setAttribute("type","Beam"),!t||t===[])throw new h.RuntimeError("BadArguments","No notes provided for beam.");if(1===t.length)throw new h.RuntimeError("BadArguments","Too few notes for beam.");if(i.ticks=t[0].getIntrinsicTicks(),i.ticks>=q.durationToTicks("4"))throw new h.RuntimeError("BadArguments","Beams can only be applied to notes shorter than a quarter note.");for(i.stem_direction=_t.UP,b=0;b-1?_t.UP:_t.DOWN}for(b=0;b4?[new m(2,i)]:i<=4?[new m(1,i)]:[new m(1,4)]}},{key:"applyAndGetBeams",value:function(t,n,i){return e.generateBeams(t.getTickables(),{groups:i,stem_direction:n})}},{key:"generateBeams",value:function(t,n){n||(n={}),n.groups&&n.groups.length||(n.groups=[new m(2,8)]);var i,o,r=n.groups.map((function(t){if(!t.multiply)throw new h.RuntimeError("InvalidBeamGroups","The beam groups must be an array of Vex.Flow.Fractions");return t.clone().multiply(q.RESOLUTION,1)})),b=0,a=[],s=[];function l(){r.length-1>b?b+=1:b=0}i=[],t.forEach((function(t){if(i=[],t.shouldIgnoreTicks())return a.push(s),void(s=i);s.push(t);var e=r[b].clone(),n=s.reduce((function(t,e){return e.getTicks().clone().add(t)}),new m(0,1)),o=q.durationToNumber(t.duration)<8;o&&t.tuplet&&(e.numerator*=2),n.greaterThan(e)?(o||i.push(s.pop()),a.push(s),s=i,l()):n.equals(e)&&(a.push(s),s=i,l())})),s.length>0&&a.push(s),o=[],a.forEach((function(t){var e=[];t.forEach((function(t,i,r){var b=0===i||i===r.length-1,a=r[i-1],s=!n.beam_rests&&t.isRest(),l=n.beam_rests&&n.beam_middle_only&&t.isRest()&&b,u=!1;if(n.maintain_stem_directions&&a&&!t.isRest()&&!a.isRest()){var c=a.getStemDirection();u=t.getStemDirection()!==c}var h=parseInt(t.duration,10)<8;s||l||u||h?(e.length>0&&o.push(e),e=u?[t]:[]):e.push(t)})),e.length>0&&o.push(e)})),(a=o).forEach((function(t){var e;if(n.maintain_stem_directions){var i=function(t){for(var e=0;e1){var e=!0;return t.forEach((function(t){t.getIntrinsicTicks()>=q.durationToTicks("4")&&(e=!1)})),e}return!1})),f=(u=[],a.forEach((function(t){var e=null;t.forEach((function(t){t.tuplet&&e!==t.tuplet&&(e=t.tuplet,u.push(e))}))})),u),p=[];return c.forEach((function(t){var i=new e(t);n.show_stemlets&&(i.render_options.show_stemlets=!0),n.secondary_breaks&&(i.render_options.secondary_break_ticks=q.durationToTicks(n.secondary_breaks)),!0===n.flat_beams&&(i.render_options.flat_beams=!0,i.render_options.flat_beam_offset=n.flat_beam_offset),p.push(i)})),f.forEach((function(t){var e=t.notes[0].stem_direction===_t.DOWN?Tt.LOCATION_BOTTOM:Tt.LOCATION_TOP;t.setTupletLocation(e);for(var n=!1,i=0;it?e:t}))}},{key:"breakSecondaryAt",value:function(t){return this.break_on_indices=t,this}},{key:"getSlopeY",value:function(t,e,n,i){return n+(t-e)*i}},{key:"calculateSlope",value:function(){for(var t=this.notes,e=this.stem_direction,n=this.render_options,i=n.max_slope,o=n.min_slope,r=n.slope_iterations,b=n.slope_cost,a=t[0],s=function(t,e){var n=t.getStemExtents().topY,i=t.getStemX();return(e.getStemExtents().topY-n)/(e.getStemX()-i)}(a,t[t.length-1]),l=(i-o)/r,u=Number.MAX_VALUE,c=0,h=0,f=o;f<=i;f+=l){for(var p=0,m=0,y=1;yh)&&(l=h,a=Math.min.apply(Math,Et(c.getYs())),s=c.getBeamCount())}var f=b/t.length,p=o+s*(1.5*i),m=a+p*-e;e===_t.DOWN&&fm&&(f=a-p),r?(e===_t.DOWN&&f>r||e===_t.UP&&f=8&&(u=-1!==this.break_on_indices.indexOf(s),this.render_options.secondary_break_ticks&&a>=this.render_options.secondary_break_ticks&&(a=0,u=!0));var c=l.getIntrinsicTicks()0&&void 0!==arguments[0]?arguments[0]:this.context,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.stave;this.setRendered();for(var n=null,i=0;i0&&n){var r=o.getBoundingBox();r&&n.mergeWith(r)}o.setContext(t),o.drawWithStyle()}this.boundingBox=n}}]),e}(S);function Ht(t){return(Ht="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Vt(t,e){return!e||"object"!==Ht(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function Kt(t){return(Kt=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function qt(t,e){for(var n=0;n=e.type.SINGLE_RIGHT&&t<=e.type.NONE&&(this.type=t),this}},{key:"setText",value:function(t,e){return this.texts.push({content:t,options:h.Merge({shift_x:0,shift_y:0},e)}),this}},{key:"setFont",value:function(t){h.Merge(this.font,t)}},{key:"setXShift",value:function(t){if("number"!=typeof t)throw h.RERR("InvalidType","x_shift must be a Number");return this.x_shift=t,this}},{key:"draw",value:function(){var t=this.checkContext();this.setRendered();var n=this.top_stave.getYForLine(0),i=this.bottom_stave.getYForLine(this.bottom_stave.getNumLines()-1)+this.thickness,o=this.width,r=this.top_stave.getX();(this.type===e.type.SINGLE_RIGHT||this.type===e.type.BOLD_DOUBLE_RIGHT||this.type===e.type.THIN_DOUBLE)&&(r=this.top_stave.getX()+this.top_stave.width);var b=i-n;switch(this.type){case e.type.SINGLE:case e.type.SINGLE_LEFT:case e.type.SINGLE_RIGHT:o=1;break;case e.type.DOUBLE:r-=this.width+2,n-=this.thickness,b+=.5;break;case e.type.BRACE:o=12;var a=this.top_stave.getX()-2+this.x_shift,s=n,l=a,u=i,c=a-o,f=s+b/2,p=c-.9*o,m=s+.2*b,y=a+1.1*o,d=f-.135*b,_=y,g=f+.135*b,v=p,x=u-.2*b,w=c-o,k=x,S=a+.4*o,T=f+.135*b,O=S,E=f-.135*b,P=w,C=m;t.beginPath(),t.moveTo(a,s),t.bezierCurveTo(p,m,y,d,c,f),t.bezierCurveTo(_,g,v,x,l,u),t.bezierCurveTo(w,k,S,T,c,f),t.bezierCurveTo(O,E,P,C,a,s),t.fill(),t.stroke();break;case e.type.BRACKET:b=(i+=6)-(n-=6),Y.renderGlyph(t,r-5,n,40,"bracketTop"),Y.renderGlyph(t,r-5,i,40,"bracketBottom"),r-=this.width+2;break;case e.type.BOLD_DOUBLE_LEFT:Zt(t,this.type,r+this.x_shift,n,i-this.thickness);break;case e.type.BOLD_DOUBLE_RIGHT:Zt(t,this.type,r,n,i-this.thickness);break;case e.type.THIN_DOUBLE:o=1,b-=this.thickness;break;case e.type.NONE:break;default:throw new h.RERR("InvalidType","The provided StaveConnector.type (".concat(this.type,") is invalid"))}this.type!==e.type.BRACE&&this.type!==e.type.BOLD_DOUBLE_LEFT&&this.type!==e.type.BOLD_DOUBLE_RIGHT&&this.type!==e.type.NONE&&t.fillRect(r,n,o,b),this.type===e.type.THIN_DOUBLE&&t.fillRect(r-3,n,o,b),t.save(),t.lineWidth=2,t.setFont(this.font.family,this.font.size,this.font.weight);for(var R=0;R3&&void 0!==arguments[3]?arguments[3]:f;t.beginPath(),t.setStrokeStyle(o),t.setFillStyle(o),t.setLineWidth(3),t.moveTo(n+e.getXShift(),r),t.lineTo(i+e.getXShift(),r),t.stroke()}p(o,r,"red"),p(r,b,"#999"),p(b,a,"green"),p(a,s,"#999"),p(s,l,"red"),p(l,u,"#DD0"),p(o-e.getXShift(),o,"#BBB"),h.drawDot(t,b+e.getXShift(),f,"blue");var m=e.getFormatterMetrics();if(m.iterations>0){var y=m.space.deviation,d=y>=0?"+":"";t.setFillStyle("red"),t.fillText(d+Math.round(y),b+e.getXShift(),n-10)}t.restore()}},{key:"parseDuration",value:function(t){if("string"!=typeof t)return null;var e=/(\d*\/?\d+|[a-z])(d*)([nrhms]|$)/.exec(t);return e?{duration:e[1],dots:e[2].length,type:e[3]||"n"}:null}},{key:"parseNoteStruct",value:function(t){var n=t.duration,i=[],o=e.parseDuration(n);if(!o)return null;var r=t.type;if(r&&!q.getGlyphProps.validTypes[r])return null;r||(r=o.type||"n",void 0!==t.keys&&t.keys.forEach((function(t,e){var n=t.split("/");i[e]=n&&3===n.length?n[2]:r})));var b=q.durationToTicks(o.duration);if(null==b)return null;var a=t.dots?t.dots:o.dots;if("number"!=typeof a)return null;for(var s=b,l=0;l0}},{key:"hasStem",value:function(){return!1}},{key:"getDots",value:function(){return this.dots}},{key:"getNoteType",value:function(){return this.noteType}},{key:"setBeam",value:function(){return this}},{key:"setModifierContext",value:function(t){return this.modifierContext=t,this}},{key:"addModifier",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t.setNote(this),t.setIndex(e),this.modifiers.push(t),this.setPreFormatted(!1),this}},{key:"getModifierStartXY",value:function(){if(!this.preFormatted)throw new h.RERR("UnformattedNote","Can't call GetModifierStartXY on an unformatted note");return{x:this.getAbsoluteX(),y:this.ys[0]}}},{key:"getMetrics",value:function(){if(!this.preFormatted)throw new h.RERR("UnformattedNote","Can't call getMetrics on an unformatted note.");var t=this.modifierContext?this.modifierContext.state.left_shift:0,e=this.modifierContext?this.modifierContext.state.right_shift:0,n=this.getWidth();return{width:n,glyphWidth:this.getGlyphWidth(),notePx:n-t-e-this.leftDisplacedHeadPx-this.rightDisplacedHeadPx,modLeftPx:t,modRightPx:e,leftDisplacedHeadPx:this.leftDisplacedHeadPx,rightDisplacedHeadPx:this.rightDisplacedHeadPx}}},{key:"getAbsoluteX",value:function(){if(!this.tickContext)throw new h.RERR("NoTickContext","Note needs a TickContext assigned for an X-Value");var t=this.tickContext.getX();return this.stave&&(t+=this.stave.getNoteStartX()+this.musicFont.lookupMetric("stave.padding")),this.isCenterAligned()&&(t+=this.getCenterXShift()),t}},{key:"setPreFormatted",value:function(t){this.preFormatted=t}}]),e}(re);function fe(t){return(fe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function pe(t,e){return!e||"object"!==fe(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function me(t,e,n){return(me="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var i=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=ye(t)););return t}(t,e);if(i){var o=Object.getOwnPropertyDescriptor(i,e);return o.get?o.get.call(n):o.value}})(t,e,n||t)}function ye(t){return(ye=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function de(t,e){for(var n=0;n2&&(a=!0),a||(n-=q.STEM_WIDTH/2*o),t.beginPath(),t.moveTo(n,i+r),t.lineTo(n,i+1),t.lineTo(n+b,i-r),t.lineTo(n+b,i),t.lineTo(n,i+r),t.closePath(),a?t.fill():t.stroke(),q.durationToFraction(e).equals(.5))for(var s=[-3,-1,b+1,b+3],l=0;l0&&void 0!==arguments[0]?arguments[0]:"flag",e=this.glyph,n=this.beam,i=null===n;if(e&&e.flag&&i){var o=this.getStemDirection()===_t.DOWN?e.code_flag_downstem:e.code_flag_upstem;this.flag=new Y(o,this.render_options.glyph_font_scale,{category:t})}}},{key:"getBaseCustomNoteHeadGlyph",value:function(){return this.getStemDirection()===_t.DOWN?this.customGlyphs[this.customGlyphs.length-1]:this.customGlyphs[0]}},{key:"getStemLength",value:function(){return _t.HEIGHT+this.getStemExtension()}},{key:"getBeamCount",value:function(){var t=this.getGlyph();return t?t.beam_count:0}},{key:"getStemMinumumLength",value:function(){var t=q.durationToFraction(this.duration).value()<=1?0:20;switch(this.duration){case"8":null==this.beam&&(t=35);break;case"16":t=null==this.beam?35:25;break;case"32":t=null==this.beam?45:35;break;case"64":t=null==this.beam?50:40;break;case"128":t=null==this.beam?55:45}return t}},{key:"getStemDirection",value:function(){return this.stem_direction}},{key:"setStemDirection",value:function(t){if(t||(t=_t.UP),t!==_t.UP&&t!==_t.DOWN)throw new h.RERR("BadArgument","Invalid stem direction: ".concat(t));if(this.stem_direction=t,this.stem){this.stem.setDirection(t),this.stem.setExtension(this.getStemExtension());var e=this.getBaseCustomNoteHeadGlyph()||this.getGlyph(),n=this.musicFont.lookupMetric("stem.noteHead.".concat(e.code_head),{offsetYBaseStemUp:0,offsetYTopStemUp:0,offsetYBaseStemDown:0,offsetYTopStemDown:0});this.stem.setOptions({stem_up_y_offset:n.offsetYTopStemUp,stem_down_y_offset:n.offsetYTopStemDown,stem_up_y_base_offset:n.offsetYBaseStemUp,stem_down_y_base_offset:n.offsetYBaseStemDown})}return this.reset(),this.flag&&this.buildFlag(),this.beam=null,this.preFormatted&&this.preFormat(),this}},{key:"getStemX",value:function(){var t=this.getAbsoluteX()+this.x_shift,e=this.getAbsoluteX()+this.x_shift+this.getGlyphWidth();return this.stem_direction===_t.DOWN?t:e}},{key:"getCenterGlyphX",value:function(){return this.getAbsoluteX()+this.x_shift+this.getGlyphWidth()/2}},{key:"getStemExtension",value:function(){var t=this.getGlyph();return null!=this.stemExtensionOverride?this.stemExtensionOverride:t?1===this.getStemDirection()?t.stem_up_extension:t.stem_down_extension:0}},{key:"setStemLength",value:function(t){return this.stemExtensionOverride=t-_t.HEIGHT,this}},{key:"getStemExtents",value:function(){return this.stem.getExtents()}},{key:"setBeam",value:function(t){return this.beam=t,this}},{key:"getYForTopText",value:function(t){var e=this.getStemExtents();return this.hasStem()?Math.min(this.stave.getYForTopText(t),e.topY-this.render_options.annotation_spacing*(t+1)):this.stave.getYForTopText(t)}},{key:"getYForBottomText",value:function(t){var e=this.getStemExtents();return this.hasStem()?Math.max(this.stave.getYForTopText(t),e.baseY+this.render_options.annotation_spacing*t):this.stave.getYForBottomText(t)}},{key:"hasFlag",value:function(){return q.getGlyphProps(this.duration).flag&&!this.beam}},{key:"postFormat",value:function(){return this.beam&&this.beam.postFormat(),this.postFormatted=!0,this}},{key:"drawStem",value:function(t){this.checkContext(),this.setRendered(),this.setStem(new _t(t)),this.stem.setContext(this.context).draw()}}])&&we(n.prototype,i),o&&we(n,o),e}(he);function Ee(t){return(Ee="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Pe(t,e){return!e||"object"!==Ee(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function Ce(t){return(Ce=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function Re(t,e){for(var n=0;nh?c:h,f=w,p=v}return e.right_shift+=h,!0}},{key:"CATEGORY",get:function(){return"dots"}}]),Le(e,[{key:"getCategory",value:function(){return e.CATEGORY}},{key:"setNote",value:function(t){this.note=t,"gracenotes"===this.note.getCategory()&&(this.radius*=.5,this.setWidth(3))}},{key:"setDotShiftY",value:function(t){return this.dot_shiftY=t,this}},{key:"draw",value:function(){if(this.checkContext(),this.setRendered(),!this.note||null===this.index)throw new h.RERR("NoAttachedNote","Can't draw dot without a note and index.");var t=this.note.stave.options.spacing_between_lines_px,e=this.note.getModifierStartXY(this.position,this.index,{forceFlagRight:!0});"tabnotes"===this.note.getCategory()&&(e.y=this.note.getStemExtents().baseY);var n=e.x+this.x_shift+this.width-this.radius,i=e.y+this.y_shift+this.dot_shiftY*t,o=this.context;o.beginPath(),o.arc(n,i,this.radius,0,2*Math.PI,!1),o.fill()}}]),e}(Be);function Ie(t){return(Ie="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Ge(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function Xe(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function We(t,e){return!e||"object"!==Ie(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function Ue(t,e,n){return(Ue="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var i=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=He(t)););return t}(t,e);if(i){var o=Object.getOwnPropertyDescriptor(i,e);return o.get?o.get.call(n):o.value}})(t,e,n||t)}function He(t){return(He=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function Ve(t,e){for(var n=0;n2?i[1]:null,y=f>2?i[2]:i[1];2===f&&-1===p.stemDirection&&1===y.stemDirection&&(p=i[1],y=i[0]);var d,_=Math.max(p.voice_shift,y.voice_shift),g=0;if(2===f){var v=p.stemDirection===y.stemDirection?0:.5;return p.stemDirection===y.stemDirection&&p.minLine<=y.maxLine&&(p.isrest||(d=Math.abs(p.line-(y.maxLine+.5)),d=Math.max(d,p.stemMin),p.minLine=p.line-d,p.note.setStemLength(10*d))),p.minLine<=y.maxLine+v&&(p.isrest?Qe(p,y,1):y.isrest?Qe(y,p,-1):(g=_,p.stemDirection===y.stemDirection?p.note.setXShift(g+3):y.note.setXShift(g))),!0}if((null!==m&&m.minLine0&&(this.keyProps[e-1].displaced=!0)),t=r,this.keyProps.push(o)}t=-1/0,this.keyProps.forEach((function(e){e.linee&&(e=i):i1}},{key:"hasStem",value:function(){return this.glyph.stem}},{key:"hasFlag",value:function(){return Ue(He(e.prototype),"hasFlag",this).call(this)&&!this.isRest()}},{key:"getStemX",value:function(){return"r"===this.noteType?this.getCenterGlyphX():Ue(He(e.prototype),"getStemX",this).call(this)+(t=this,_t.WIDTH/(2*-t.getStemDirection()));var t}},{key:"getYForTopText",value:function(t){var e=this.getStemExtents();return Math.min(this.stave.getYForTopText(t),e.topY-this.render_options.annotation_spacing*(t+1))}},{key:"getYForBottomText",value:function(t){var e=this.getStemExtents();return Math.max(this.stave.getYForTopText(t),e.baseY+this.render_options.annotation_spacing*t)}},{key:"setStave",value:function(t){Ue(He(e.prototype),"setStave",this).call(this,t);var n=this.note_heads.map((function(e){return e.setStave(t),e.getY()}));if(this.setYs(n),this.stem){var i=this.getNoteHeadBounds(),o=i.y_top,r=i.y_bottom;this.stem.setYBounds(o,r)}return this}},{key:"getKeys",value:function(){return this.keys}},{key:"getKeyProps",value:function(){return this.keyProps}},{key:"isDisplaced",value:function(){return this.displaced}},{key:"setNoteDisplaced",value:function(t){return this.displaced=t,this}},{key:"getTieRightX",value:function(){var t=this.getAbsoluteX();return t+=this.getGlyphWidth()+this.x_shift+this.rightDisplacedHeadPx,this.modifierContext&&(t+=this.modifierContext.getRightShift()),t}},{key:"getTieLeftX",value:function(){var t=this.getAbsoluteX();return t+=this.x_shift-this.leftDisplacedHeadPx}},{key:"getLineForRest",value:function(){var t=this.keyProps[0].line;if(this.keyProps.length>1){var e=this.keyProps[this.keyProps.length-1].line,n=Math.max(t,e),i=Math.min(t,e);t=h.MidLine(n,i)}return t}},{key:"getModifierStartXY",value:function(t,e,n){if(n=n||{},!this.preFormatted)throw new h.RERR("UnformattedNote","Can't call GetModifierStartXY on an unformatted note");if(0===this.ys.length)throw new h.RERR("NoYValues","No Y-Values calculated for this note.");var i=Be.Position,o=i.ABOVE,r=i.BELOW,b=i.LEFT,a=i.RIGHT,s=0;return t===b?s=-2:t===a?(s=this.getGlyphWidth()+this.x_shift+2,this.stem_direction===_t.UP&&this.hasFlag()&&(n.forceFlagRight||function(t,e){return e===(t.getStemDirection()===_t.UP?t.keyProps.length-1:0)}(this,e))&&(s+=this.flag.getMetrics().width)):t!==r&&t!==o||(s=this.getGlyphWidth()/2),{x:this.getAbsoluteX()+s,y:this.ys[e]}}},{key:"setStyle",value:function(t){Ue(He(e.prototype),"setStyle",this).call(this,t),this.note_heads.forEach((function(e){return e.setStyle(t)})),this.stem.setStyle(t)}},{key:"setStemStyle",value:function(t){this.getStem().setStyle(t)}},{key:"getStemStyle",value:function(){return this.stem.getStyle()}},{key:"setLedgerLineStyle",value:function(t){this.ledgerLineStyle=t}},{key:"getLedgerLineStyle",value:function(){return this.ledgerLineStyle}},{key:"setFlagStyle",value:function(t){this.flagStyle=t}},{key:"getFlagStyle",value:function(){return this.flagStyle}},{key:"setKeyStyle",value:function(t,e){return this.note_heads[t].setStyle(e),this}},{key:"setKeyLine",value:function(t,e){return this.keyProps[t].line=e,this.reset(),this}},{key:"getKeyLine",value:function(t){return this.keyProps[t].line}},{key:"addToModifierContext",value:function(t){this.setModifierContext(t);for(var e=0;ee)&&(e=h),null===i&&u.isDisplaced()&&(i=u.getAbsoluteX()),null!==n||u.isDisplaced()||(n=u.getAbsoluteX()),o=c>o?c:o,r=c=s;--w){var k=null!==m&&w>=f,S=null!==p&&w>=c;d(t.getYForNote(w),k,S)}this.restoreStyle(i,_)}}},{key:"drawModifiers",value:function(){if(!this.context)throw new h.RERR("NoCanvasContext","Can't draw without a canvas context.");var t=this.context;t.openGroup("modifiers");for(var e=0;ey?x:y):S===Be.Position.RIGHT&&(T.setXShift(m),d=(x=a+C)>d?x:d),_=O,g=k}return e.left_shift+=y,e.right_shift+=d,!0}},{key:"CATEGORY",get:function(){return"frethandfinger"}}]),nn(e,[{key:"getCategory",value:function(){return e.CATEGORY}},{key:"setFretHandFinger",value:function(t){return this.finger=t,this}},{key:"setOffsetX",value:function(t){return this.x_offset=t,this}},{key:"setOffsetY",value:function(t){return this.y_offset=t,this}},{key:"draw",value:function(){if(this.checkContext(),!this.note||null==this.index)throw new h.RERR("NoAttachedNote","Can't draw string number without a note and index.");this.setRendered();var t=this.context,e=this.note.getModifierStartXY(this.position,this.index),n=e.x+this.x_shift+this.x_offset,i=e.y+this.y_shift+this.y_offset+5;switch(this.position){case Be.Position.ABOVE:n-=4,i-=12;break;case Be.Position.BELOW:n-=2,i+=10;break;case Be.Position.LEFT:n-=this.width;break;case Be.Position.RIGHT:n+=1;break;default:throw new h.RERR("InvalidPostion","The position ".concat(this.position," does not exist"))}t.save(),t.setFont(this.font.family,this.font.size,this.font.weight),t.fillText(""+this.finger,n,i),t.restore()}}]),e}(Be);function bn(t,e){for(var n=0;n=t.NUM_TONES)}},{key:"isValidIntervalValue",value:function(t){return this.isValidNoteValue(t)}},{key:"getNoteParts",value:function(t){if(!t||t.length<1)throw new h.RERR("BadArguments","Invalid note name: "+t);if(t.length>3)throw new h.RERR("BadArguments","Invalid note name: "+t);var e=t.toLowerCase(),n=/^([cdefgab])(b|bb|n|#|##)?$/.exec(e);if(null!=n)return{root:n[1],accidental:n[2]};throw new h.RERR("BadArguments","Invalid note name: "+t)}},{key:"getKeyParts",value:function(t){if(!t||t.length<1)throw new h.RERR("BadArguments","Invalid key: "+t);var e=t.toLowerCase(),n=/^([cdefgab])(b|#)?(mel|harm|m|M)?$/.exec(e);if(null!=n){var i=n[1],o=n[2],r=n[3];return r||(r="M"),{root:i,accidental:o,type:r}}throw new h.RERR("BadArguments","Invalid key: ".concat(t))}},{key:"getNoteValue",value:function(e){var n=t.noteValues[e];if(null==n)throw new h.RERR("BadArguments","Invalid note name: ".concat(e));return n.int_val}},{key:"getIntervalValue",value:function(e){var n=t.intervals[e];if(null==n)throw new h.RERR("BadArguments","Invalid interval name: ".concat(e));return n}},{key:"getCanonicalNoteName",value:function(e){if(!this.isValidNoteValue(e))throw new h.RERR("BadArguments","Invalid note value: ".concat(e));return t.canonical_notes[e]}},{key:"getCanonicalIntervalName",value:function(e){if(!this.isValidIntervalValue(e))throw new h.RERR("BadArguments","Invalid interval value: ".concat(e));return t.diatonic_intervals[e]}},{key:"getRelativeNoteValue",value:function(e,n,i){if(null==i&&(i=1),1!==i&&-1!==i)throw new h.RERR("BadArguments","Invalid direction: ".concat(i));var o=(e+i*n)%t.NUM_TONES;return o<0&&(o+=t.NUM_TONES),o}},{key:"getRelativeNoteName",value:function(e,n){var i=this.getNoteParts(e),o=this.getNoteValue(i.root),r=n-o;if(Math.abs(r)>t.NUM_TONES-3){var b=1;r>0&&(b=-1);var a=(n+1+(o+1))%t.NUM_TONES*b;if(Math.abs(a)>2)throw new h.RERR("BadArguments","Notes not related: ".concat(e,", ").concat(n,")"));r=a}if(Math.abs(r)>2)throw new h.RERR("BadArguments","Notes not related: ".concat(e,", ").concat(n,")"));var s=i.root;if(r>0)for(var l=1;l<=r;++l)s+="#";else if(r<0)for(var u=-1;u>=r;--u)s+="b";return s}},{key:"getScaleTones",value:function(t,e){for(var n=[t],i=t,o=0;o0&&void 0!==arguments[0]?arguments[0]:null;if(cn(this,e),(t=hn(this,fn(e).call(this))).setAttribute("type","Accidental"),dn("New accidental: ",n),t.note=null,t.index=null,t.type=n,t.position=Be.Position.LEFT,t.render_options={font_scale:38,stroke_px:3,parenLeftPadding:2,parenRightPadding:2},t.accidental=q.accidentalCodes(t.type),!t.accidental)throw new h.RERR("ArgumentError","Unknown accidental type: ".concat(n));return t.cautionary=!1,t.parenLeft=null,t.parenRight=null,t.reset(),t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&yn(t,e)}(e,t),mn(e,null,[{key:"format",value:function(t,e){var n=this,i=e.left_shift+1;if(t&&0!==t.length){for(var o=[],r=null,b=0,a=0;ad?v.shift:d,_=v.line}for(var x=0,w=function(t){for(var e=!1,i=t,o=t;o+1=7){for(var f=2,p=!0;!0===p;){p=!1;for(var m=0;m+fh?x:h}else for(c=t;c<=o;c++)h=q.accidentalColumnsTable[l][u][c-t],y[c].column=h,x=x>h?x:h;k=t=o},k=0;kS[t.column]&&(S[t.column]=t.width)}));for(var E=1;E0?(i=e.flatLine||e.dblSharpLine?2.5:3,t.dblSharpLine&&(n-=.5)):(i=t.flatLine||t.dblSharpLine?2.5:3,e.dblSharpLine&&(n-=.5));var o=Math.abs(n)-1;if(!u||u&&c){b[a.root]=l;var h=new e(s);n.addAccidental(o,h),i.push(l)}})),n.getModifiers().forEach((function(e){"gracenotegroups"===e.getCategory()&&e.getGraceNotes().forEach(t)})))}))}))}},{key:"CATEGORY",get:function(){return"accidentals"}}]),mn(e,[{key:"reset",value:function(){var t=this.render_options.font_scale;this.glyph=new Y(this.accidental.code,t),this.glyph.setOriginX(1),this.cautionary&&(this.parenLeft=new Y(q.accidentalCodes("{").code,t),this.parenRight=new Y(q.accidentalCodes("}").code,t),this.parenLeft.setOriginX(1),this.parenRight.setOriginX(1))}},{key:"getCategory",value:function(){return e.CATEGORY}},{key:"getWidth",value:function(){var t=this.cautionary?_n(this.parenLeft)+_n(this.parenRight)+this.render_options.parenLeftPadding+this.render_options.parenRightPadding:0;return _n(this.glyph)+t}},{key:"setNote",value:function(t){if(!t)throw new h.RERR("ArgumentError","Bad note value: ".concat(t));this.note=t,"gracenotes"===this.note.getCategory()&&(this.render_options.font_scale=25,this.reset())}},{key:"setAsCautionary",value:function(){return this.cautionary=!0,this.render_options.font_scale=28,this.reset(),this}},{key:"draw",value:function(){var t=this.context,e=this.type,n=this.position,i=this.note,o=this.index,r=this.cautionary,b=this.x_shift,a=this.y_shift,s=this.glyph,l=this.parenLeft,u=this.parenRight,c=this.render_options,f=c.parenLeftPadding,p=c.parenRightPadding;if(this.checkContext(),!i||null==o)throw new h.RERR("NoAttachedNote","Can't draw accidental without a note and index.");var m=i.getModifierStartXY(n,o),y=m.x+b,d=m.y+a;dn("Rendering: ",e,y,d),r?(u.render(t,y,d),y-=_n(u),y-=p,y-=this.accidental.parenRightPaddingAdjustment,s.render(t,y,d),y-=_n(s),y-=f,l.render(t,y,d)):s.render(t,y,d),this.setRendered()}}]),e}(Be);function vn(t){return(vn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function xn(t,e){return!e||"object"!==vn(e)&&"function"!=typeof e?kn(t):e}function wn(t){return(wn=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function kn(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function Sn(t,e){for(var n=0;n1){var e=new Dt(t);e.render_options.beam_width=3,e.render_options.partial_beam_length=4,this.beams.push(e)}return this}},{key:"setNote",value:function(t){this.note=t}},{key:"setWidth",value:function(t){this.width=t}},{key:"getWidth",value:function(){return this.width}},{key:"getGraceNotes",value:function(){return this.grace_notes}},{key:"draw",value:function(){var t=this;this.checkContext();var e=this.getNote();if(function(){for(var t=arguments.length,e=new Array(t),n=0;nm?g:m):a===Be.Position.RIGHT&&(r.setXShift(p),y=(g+=k)>y?g:y),d=v,_=b}return e.left_shift+=m,e.right_shift+=y,!0}},{key:"CATEGORY",get:function(){return"stringnumber"}}]),bi(e,[{key:"getCategory",value:function(){return e.CATEGORY}},{key:"getNote",value:function(){return this.note}},{key:"setNote",value:function(t){return this.note=t,this}},{key:"getIndex",value:function(){return this.index}},{key:"setIndex",value:function(t){return this.index=t,this}},{key:"setLineEndType",value:function(t){return t>=ut.LineEndType.NONE&&t<=ut.LineEndType.DOWN&&(this.leg=t),this}},{key:"setStringNumber",value:function(t){return this.string_number=t,this}},{key:"setOffsetX",value:function(t){return this.x_offset=t,this}},{key:"setOffsetY",value:function(t){return this.y_offset=t,this}},{key:"setLastNote",value:function(t){return this.last_note=t,this}},{key:"setDashed",value:function(t){return this.dashed=t,this}},{key:"draw",value:function(){var t=this.checkContext();if(!this.note||null==this.index)throw new h.RERR("NoAttachedNote","Can't draw string number without a note and index.");this.setRendered();var e=this.note.stave.options.spacing_between_lines_px,n=this.note.getModifierStartXY(this.position,this.index),i=n.x+this.x_shift+this.x_offset,o=n.y+this.y_shift+this.y_offset;switch(this.position){case Be.Position.ABOVE:case Be.Position.BELOW:var r=this.note.getStemExtents(),b=r.topY,a=r.baseY+2;this.note.stem_direction===Je.STEM_DOWN&&(b=r.baseY,a=r.topY-2),o=this.position===Be.Position.ABOVE?this.note.hasStem()?b-1.75*e:n.y-1.75*e:this.note.hasStem()?a+1.5*e:n.y+1.75*e,o+=this.y_shift+this.y_offset;break;case Be.Position.LEFT:i-=this.radius/2+5;break;case Be.Position.RIGHT:i+=this.radius/2+6;break;default:throw new h.RERR("InvalidPosition","The position ".concat(this.position," is invalid"))}t.save(),t.beginPath(),t.arc(i,o,this.radius,0,2*Math.PI,!1),t.lineWidth=1.5,t.stroke(),t.setFont(this.font.family,this.font.size,this.font.weight);var s=i-t.measureText(this.string_number).width/2;if(t.fillText(""+this.string_number,s,o+4.5),null!=this.last_note){var l,u,c=this.last_note.getStemX()-this.note.getX()+5;switch(t.strokeStyle="#000000",t.lineCap="round",t.lineWidth=.6,this.dashed?ut.drawDashedLine(t,i+10,o,i+c,o,[3,3]):ut.drawDashedLine(t,i+10,o,i+c,o,[3,0]),this.leg){case ut.LineEndType.UP:l=-10,u=this.dashed?[3,3]:[3,0],ut.drawDashedLine(t,i+c,o,i+c,o+l,u);break;case ut.LineEndType.DOWN:l=10,u=this.dashed?[3,3]:[3,0],ut.drawDashedLine(t,i+c,o,i+c,o+l,u)}}t.restore()}}]),e}(Be);function li(t){return(li="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function ui(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function ci(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if(!(Symbol.iterator in Object(t))&&"[object Arguments]"!==Object.prototype.toString.call(t))return;var n=[],i=!0,o=!1,r=void 0;try{for(var b,a=t[Symbol.iterator]();!(i=(b=a.next()).done)&&(n.push(b.value),!e||n.length!==e);i=!0);}catch(t){o=!0,r=t}finally{try{i||null==a.return||a.return()}finally{if(o)throw r}}return n}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function hi(t,e){return!e||"object"!==li(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function fi(t){return(fi=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function pi(t,e){for(var n=0;n=1},ki=function(t,e){return wi(t,e)?e===gi?Math.ceil:Math.floor:Math.round},Si=function(t){var e=t.getCategory();return"stavenotes"===e||"gracenotes"===e},Ti=function(t){function e(t){var n;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),(n=hi(this,fi(e).call(this))).setAttribute("type","Articulation"),n.note=null,n.index=null,n.type=t,n.position=vi,n.render_options={font_scale:38},n.reset(),n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&yi(t,e)}(e,t),mi(e,null,[{key:"format",value:function(t,e){if(!t||0===t.length)return!1;var n=function(t,e,n){return xi(ki(e,n),t.glyph.getMetrics().height/10+.5)};t.filter((function(t){return t.getPosition()===gi})).forEach((function(t){t.setTextLine(e.top_text_line),e.top_text_line+=n(t,e.top_text_line,gi)})),t.filter((function(t){return t.getPosition()===vi})).forEach((function(t){t.setTextLine(e.text_line),e.text_line+=n(t,e.text_line,vi)}));var i=t.map((function(t){return t.getWidth()})).reduce((function(t,e){return Math.max(e,t)}));return e.left_shift+=i/2,e.right_shift+=i/2,!0}},{key:"easyScoreHook",value:function(t,e,n){var i=t.articulations;if(i){var o={staccato:"a.",tenuto:"a-"};i.split(",").map((function(t){return t.trim().split(".")})).map((function(t){var e=ci(t,2),i=e[0],r=e[1],b={type:o[i]};return r&&(b.position=Be.PositionString[r]),n.getFactory().Articulation(b)})).map((function(t){return e.addModifier(0,t)}))}}},{key:"CATEGORY",get:function(){return"articulations"}},{key:"INITIAL_OFFSET",get:function(){return-.5}}]),mi(e,[{key:"reset",value:function(){if(this.articulation=q.articulationCodes(this.type),!this.articulation)throw new h.RERR("ArgumentError","Articulation not found: ".concat(this.type));var t=(this.position===gi?this.articulation.aboveCode:this.articulation.belowCode)||this.articulation.code;this.glyph=new Y(t,this.render_options.font_scale),this.setWidth(this.glyph.getMetrics().width)}},{key:"getCategory",value:function(){return e.CATEGORY}},{key:"draw",value:function(){var t,n=this.note,i=this.index,o=this.position,r=this.glyph,b=this.articulation.between_lines,a=this.text_line,s=this.context;if(this.checkContext(),!n||null==i)throw new h.RERR("NoAttachedNote","Can't draw Articulation without a note and index.");this.setRendered();var l=n.getStave(),u=l.getSpacingBetweenLines(),c="tabnotes"===n.getCategory(),f=n.getModifierStartXY(o,i).x,p=!b||c,m=function(t,e){var n=e===gi&&t.getStemDirection()===_t.UP||e===vi&&t.getStemDirection()===_t.DOWN;return Si(t)?t.hasStem()&&n?.5:1:t.hasStem()&&n?1:0}(n,o),y=this.musicFont.lookupMetric("articulation.".concat(r.getCode(),".padding"),0),d=(t={},ui(t,gi,(function(){r.setOrigin(.5,1);var t=function(t,e){var n=t.getStave(),i=t.getStemDirection(),o=t.getStemExtents(),r=o.topY,b=o.baseY;if(Si(t))return t.hasStem()?i===_t.UP?r:b:Math.min.apply(Math,di(t.getYs()));if("tabnotes"===t.getCategory())return t.hasStem()&&i===_t.UP?r:n.getYForTopText(e);throw new h.RERR("UnknownCategory","Only can get the top and bottom ys of stavenotes and tabnotes")}(n,a)-(a+m)*u;return p?Math.min(l.getYForTopText(e.INITIAL_OFFSET),t):t})),ui(t,vi,(function(){r.setOrigin(.5,0);var t=function(t,e){var n=t.getStave(),i=t.getStemDirection(),o=t.getStemExtents(),r=o.topY,b=o.baseY;if(Si(t))return t.hasStem()?i===_t.UP?b:r:Math.max.apply(Math,di(t.getYs()));if("tabnotes"===t.getCategory())return t.hasStem()?i===_t.UP?n.getYForBottomText(e):r:n.getYForBottomText(e);throw new h.RERR("UnknownCategory","Only can get the top and bottom ys of stavenotes and tabnotes")}(n,a)+(a+m)*u;return p?Math.max(l.getYForBottomText(e.INITIAL_OFFSET),t):t})),t)[o]();if(!c){var _=o===gi?-1:1,g=c?n.positions[i].str:n.getKeyProps()[i].line,v=(n.getYs()[i]-d)/u+g,x=function(t,e,n,i){var o=xi(ki(e,n),e);if(t&&wi(o,n)&&o%1==0){return o+.5*-i}return o}(b,v,o,_);wi(x,o)&&r.setOrigin(.5,.5),d+=Math.abs(x-v)*u*_+y*_}!function(){for(var t=arguments.length,e=new Array(t),n=0;n0&&i--;for(var a=0;a1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=n.paddingBetween,o=void 0===i?10:i;t.reduce((function(t,e){e.addToModifierContext(new lo);var n=(new Ni).addTickable(e).preFormat(),i=n.getMetrics();return n.setX(t+i.totalLeftPx),t+n.getWidth()+i.totalRightPx+o}),e)}},{key:"plotDebugging",value:function(t,e,n,i,o,r){var b=n+(r=ho({stavePadding:h.Flow.DEFAULT_FONT_STACK[0].lookupMetric("stave.padding")},r)).stavePadding,a=e.contextGaps;t.save(),t.setFont("Arial",8,""),a.gaps.forEach((function(e){var n,r,a;n=b+e.x1,r=b+e.x2,a="rgba(100,200,100,0.4)",t.beginPath(),t.setStrokeStyle(a),t.setFillStyle(a),t.setLineWidth(1),t.fillRect(n,i,Math.max(r-n,0),o-i),t.setFillStyle("green"),t.fillText(Math.round(e.x2-e.x1),b+e.x1,o+12)})),t.setFillStyle("red"),t.fillText("Loss: ".concat((e.totalCost||0).toFixed(2)," Shift: ").concat((e.totalShift||0).toFixed(2)," Gap: ").concat(a.total.toFixed(2)),b-20,o+27),t.restore()}},{key:"FormatAndDraw",value:function(e,n,i,o){var r={auto_beam:!1,align_rests:!1};"object"===uo(o)?h.Merge(r,o):"boolean"==typeof o&&(r.auto_beam=o);var b=new Ut(q.TIME4_4).setMode(Ut.Mode.SOFT).addTickables(i),a=r.auto_beam?Dt.applyAndGetBeams(b):[];return(new t).joinVoices([b],{align_rests:r.align_rests}).formatToStave([b],n,{align_rests:r.align_rests,stave:n}),b.setStave(n).draw(e,n),a.forEach((function(t){return t.setContext(e).draw()})),b.getBoundingBox()}},{key:"FormatAndDrawTab",value:function(e,n,i,o,r,b,a){var s={auto_beam:b,align_rests:!1};"object"===uo(a)?h.Merge(s,a):"boolean"==typeof a&&(s.auto_beam=a);var l=new Ut(q.TIME4_4).setMode(Ut.Mode.SOFT).addTickables(r),u=new Ut(q.TIME4_4).setMode(Ut.Mode.SOFT).addTickables(o),c=s.auto_beam?Dt.applyAndGetBeams(l):[];(new t).joinVoices([l],{align_rests:s.align_rests}).joinVoices([u]).formatToStave([l,u],i,{align_rests:s.align_rests}),l.draw(e,i),u.draw(e,n),c.forEach((function(t){return t.setContext(e).draw()})),new $t(i,n).setContext(e).draw()}},{key:"AlignRestsToNotes",value:function(t,e,n){return t.forEach((function(i,o){if(i instanceof Je&&i.isRest()){if(i.tuplet&&!n)return;var r=i.getGlyph().position.toUpperCase();if("R/4"!==r&&"B/4"!==r)return;if(e||null!=i.beam){var b=i.getKeyProps()[0];if(0===o)b.line=yo(t,b.line,o,!1),i.setKeyLine(0,b.line);else if(o>0&&o0&&void 0!==arguments[0]?arguments[0]:0,n=arguments.length>1?arguments[1]:void 0,i=arguments.length>2?arguments[2]:void 0,o=arguments.length>3?arguments[3]:void 0,r=this.tickContexts,b=r.list,a=r.map;this.lossHistory=[],i&&o&&i.forEach((function(t){return t.setStave(o).preFormat()}));var s=0,l=0;if(this.minTotalWidth=0,b.forEach((function(e){var i=a[e];n&&i.setContext(n),i.preFormat();var o=i.getWidth();t.minTotalWidth+=o;var r=i.getMetrics();s=s+l+r.totalLeftPx,i.setX(s),l=o-r.totalLeftPx})),this.minTotalWidth=s+l,this.hasMinTotalWidth=!0,e<=0)return this.evaluate();var u=a[b[0]],c=a[b[b.length-1]];function h(t){return b.map((function(e,n){var i=a[e],o=i.getTickablesByVoice(),r=null;if(n>0)for(var s=a[b[n-1]],l=function(e){var n=a[b[e]].getTickablesByVoice(),l=[];if(Object.keys(o).forEach((function(t){n[t]&&l.push(t)})),l.length>0){var u=0,c=1/0;return l.forEach((function(t){var e=n[t].getTicks().value();e>u&&(r=n[t],u=e);var i=o[t],b=i.getX()-(i.getMetrics().modLeftPx+i.getMetrics().leftDisplacedHeadPx),a=n[t].getMetrics(),s=n[t].getX()+a.notePx+a.modRightPx+a.rightDisplacedHeadPx;c=Math.min(c,b-s)})),c=Math.min(c,i.getX()-s.getX()),{v:{expectedDistance:r.getVoice().softmax(u)*t,maxNegativeShiftPx:c,fromTickable:r}}}},u=n-1;u>=0;u--){var c=l(u);if("object"===uo(c))return c.v}return{errorPx:0,fromTickablePx:0,maxNegativeShiftPx:0}}))}function f(t){var e=p/2,n=0,i=0;return b.forEach((function(o,r){var b=a[o];if(r>0){var s=b.getX(),l=t[r],u=l.fromTickable.getX()+l.expectedDistance-(s+n),c=0;u>0?n+=u:u<0&&(c=Math.min(l.maxNegativeShiftPx+i,Math.abs(u))),b.setX(s+n-c),i+=c}b.getCenterAlignedTickables().forEach((function(t){t.center_x_shift=e-b.getX()}))})),c.getX()-u.getX()}for(var p=e-c.getMetrics().notePx-c.getMetrics().totalRightPx-u.getMetrics().totalLeftPx,m=p,y=f(h(m)),d=this.options.maxIterations;y>p+c.getMetrics().notePx&&d>0;)y=f(h(m-=y-m)),d--;return 1===b.length?null:(this.justifyWidth=e,this.evaluate())}},{key:"evaluate",value:function(){var t=this,e=this.justifyWidth;this.contextGaps={total:0,gaps:[]},this.tickContexts.list.forEach((function(e,n){if(0!==n){var i=t.tickContexts.list[n-1],o=t.tickContexts.map[i],r=t.tickContexts.map[e],b=o.getMetrics(),a=r.getMetrics(),s=o.getX()+b.notePx+b.totalRightPx,l=r.getX()-a.totalLeftPx,u=l-s;t.contextGaps.total+=u,t.contextGaps.gaps.push({x1:s,x2:l}),r.getFormatterMetrics().freedom.left=u,o.getFormatterMetrics().freedom.right=u}}));var n=this.durationStats={};this.voices.forEach((function(t){t.getTickables().forEach((function(t,i,o){var r=t.getTicks().clone().simplify().toString(),b=t.getMetrics(),a=t.getFormatterMetrics(),s=t.getX()+b.notePx+b.totalRightPx,l=0;if(i0?e.tickContexts.map[r[o-1]]:null,s=o0?n=-Math.min(b.getFormatterMetrics().freedom.right,Math.abs(l)):l<0&&(n=s?Math.min(s.getFormatterMetrics().freedom.right,Math.abs(l)):0),n*=t.alpha,e.totalShift+=n})),this.iterationsCompleted++,this.evaluate()}},{key:"postFormat",value:function(){var t=function(t){return t.list.forEach((function(e){return t.map[e].postFormat()}))};return t(this.modiferContexts),t(this.tickContexts),this}},{key:"joinVoices",value:function(t){return this.createModifierContexts(t),this.hasMinTotalWidth=!1,this}},{key:"format",value:function(t,e,n){var i=this,o=ho({align_rests:!1,context:null,stave:null},n);return this.voices=t,this.options.softmaxFactor&&this.voices.forEach((function(t){return t.setSoftmaxFactor(i.options.softmaxFactor)})),this.alignRests(t,o.align_rests),this.createTickContexts(t),this.preFormat(e,o.context,t,o.stave),o.stave&&this.postFormat(),this}},{key:"formatToStave",value:function(t,e,n){n=ho({padding:10},n);var i=e.getNoteEndX()-e.getNoteStartX()-n.padding;return function(){for(var t=arguments.length,e=new Array(t),n=0;n3&&void 0!==arguments[3]?arguments[3]:0;t.setYShift(e.getYForLine(n)-e.getYForGlyphs()+i)}},{key:"getPadding",value:function(t){return void 0!==t&&t<2?0:this.padding}},{key:"setPadding",value:function(t){return this.padding=t,this}},{key:"setLayoutMetrics",value:function(t){return this.layoutMetrics=t,this}},{key:"getLayoutMetrics",value:function(){return this.layoutMetrics}}]),e}(S);function Eo(t){return(Eo="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Po(t,e){return!e||"object"!==Eo(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function Co(t){return(Co=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function Ro(t,e){for(var n=0;n=t.line?b.above:b.below}this.placeGlyphOnLine(o,this.stave,t.line),this.glyphs.push(o);var a=this.xPositions[this.xPositions.length-1],s=o.getMetrics().width+r;this.xPositions.push(a+s),this.width+=s}},{key:"cancelKey",value:function(t){return this.formatted=!1,this.cancelKeySpec=t,this}},{key:"convertToCancelAccList",value:function(t){var e=q.keySignature(t),n=this.accList.length>0&&e.length>0&&e[0].type!==this.accList[0].type,i=n?e.length:e.length-this.accList.length;if(!(i<1)){for(var o=[],r=0;r2&&void 0!==arguments[2]?arguments[2]:this.accList,r=0;switch(t){case"soprano":"#"===e?n=[2.5,.5,2,0,1.5,-.5,1]:r=-1;break;case"mezzo-soprano":"b"===e?n=[0,2,.5,2.5,1,3,1.5]:r=1.5;break;case"alto":r=.5;break;case"tenor":"#"===e?n=[3,1,2.5,.5,2,0,1.5]:r=-.5;break;case"baritone-f":case"baritone-c":"b"===e?n=[.5,2.5,1,3,1.5,3.5,2]:r=2;break;case"bass":case"french":r=1}if(void 0!==n)for(i=0;i0?e[0].type:null;if(this.cancelKeySpec&&(t=this.convertToCancelAccList(this.cancelKeySpec)),this.alterKeySpec&&this.convertToAlterAccList(this.alterKeySpec),this.accList.length>0){var i=(this.position===Oo.Position.END?this.stave.endClef:this.stave.clef)||this.stave.clef;t&&this.convertAccLines(i,t.type,t.accList),this.convertAccLines(i,n,e);for(var o=0;o0&&void 0!==arguments[0]?arguments[0]:null,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:15,o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(Br(this,e),(t=Mr(this,Fr(e).call(this))).setAttribute("type","TimeSignature"),t.validate_args=o,null===n)return Mr(t);var r=i;t.point=t.musicFont.lookupMetric("digits.point");var b=t.musicFont.lookupMetric("digits.shiftLine",0);return t.topLine=2+b,t.bottomLine=4+b,t.setPosition(Oo.Position.BEGIN),t.setTimeSig(n),t.setWidth(t.timeSig.glyph.getMetrics().width),t.setPadding(r),t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&Lr(t,e)}(e,t),jr(e,null,[{key:"CATEGORY",get:function(){return"timesignatures"}},{key:"glyphs",get:function(){return{C:{code:"timeSigCommon",point:40,line:2},"C|":{code:"timeSigCutCommon",point:40,line:2}}}}]),jr(e,[{key:"getCategory",value:function(){return e.CATEGORY}},{key:"parseTimeSpec",value:function(t){if("C"===t||"C|"===t){var n=e.glyphs[t],i=n.line,o=n.code,r=n.point;return{line:i,num:!1,glyph:new Y(o,r)}}this.validate_args&&function(t){var e=t.split("/").filter((function(t){return""!==t}));if(2!==e.length)throw new h.RERR("BadTimeSignature","Invalid time spec: ".concat(t,'. Must be in the form "/"'));e.forEach((function(e){if(isNaN(Number(e)))throw new h.RERR("BadTimeSignature","Invalid time spec: ".concat(t,". Must contain two valid numbers."))}))}(t);var b=Nr(t.split("/").map((function(t){return t.split("")})),2),a=b[0],s=b[1];return{num:!0,glyph:this.makeTimeSignatureGlyph(a,s)}}},{key:"makeTimeSignatureGlyph",value:function(t,e){var n=new Y("timeSig0",this.point);n.topGlyphs=[],n.botGlyphs=[];for(var i=0,o=0;oa?i:a,h=n.getMetrics().x_min;n.getMetrics=function(){return{x_min:h,x_max:h+c,width:c}};var f=(c-i)/2,p=(c-a)/2,m=this;return n.renderToStave=function(t){for(var e=t+f,n=0;n0&&void 0!==arguments[0]?arguments[0]:0;if("number"!=typeof t)throw new h.RERR("InvalidIndex","Must be of number type");if(this.formatted||this.format(),1===this.getModifiers(Oo.Position.BEGIN).length)return 0;var e=this.start_x-this.x,n=this.modifiers[0];return n.getType()===Bo.type.REPEAT_BEGIN&&e>n.getWidth()&&(e-=n.getWidth()),e}},{key:"setRepetitionTypeLeft",value:function(t,e){return this.modifiers.push(new Yo(t,this.x,e)),this}},{key:"setRepetitionTypeRight",value:function(t,e){return this.modifiers.push(new Yo(t,this.x,e)),this}},{key:"setVoltaType",value:function(t,e,n){return this.modifiers.push(new Hr(t,e,this.x,n)),this}},{key:"setSection",value:function(t,e){return this.modifiers.push(new Vo(t,this.x,e)),this}},{key:"setTempo",value:function(t,e){return this.modifiers.push(new tr(t,this.x,e)),this}},{key:"setText",value:function(t,e,n){return this.modifiers.push(new yr(t,e,n)),this}},{key:"getHeight",value:function(){return this.height}},{key:"getSpacingBetweenLines",value:function(){return this.options.spacing_between_lines_px}},{key:"getBoundingBox",value:function(){return new C(this.x,this.y,this.width,this.getBottomY()-this.y)}},{key:"getBottomY",value:function(){var t=this.options,e=t.spacing_between_lines_px;return this.getYForLine(t.num_lines)+t.space_below_staff_ln*e}},{key:"getBottomLineY",value:function(){return this.getYForLine(this.options.num_lines)}},{key:"getYForLine",value:function(t){var e=this.options,n=e.spacing_between_lines_px,i=e.space_above_staff_ln;return this.y+t*n+i*n}},{key:"getLineForY",value:function(t){var e=this.options,n=e.spacing_between_lines_px,i=e.space_above_staff_ln;return(t-this.y)/n-i}},{key:"getYForTopText",value:function(t){var e=t||0;return this.getYForLine(-e-this.options.top_text_position)}},{key:"getYForBottomText",value:function(t){var e=t||0;return this.getYForLine(this.options.bottom_text_position+e)}},{key:"getYForNote",value:function(t){var e=this.options,n=e.spacing_between_lines_px,i=e.space_above_staff_ln;return this.y+i*n+5*n-t*n}},{key:"getYForGlyphs",value:function(){return this.getYForLine(3)}},{key:"addModifier",value:function(t,e){return void 0!==e&&t.setPosition(e),t.setStave(this),this.formatted=!1,this.modifiers.push(t),this}},{key:"addEndModifier",value:function(t){return this.addModifier(t,Oo.Position.END),this}},{key:"setBegBarType",value:function(t){var e=Bo.type,n=e.SINGLE,i=e.REPEAT_BEGIN,o=e.NONE;return t!==n&&t!==i&&t!==o||(this.modifiers[0].setType(t),this.formatted=!1),this}},{key:"setEndBarType",value:function(t){return t!==Bo.type.REPEAT_BEGIN&&(this.modifiers[1].setType(t),this.formatted=!1),this}},{key:"setClef",value:function(t,e,n,i){void 0===i&&(i=Oo.Position.BEGIN),i===Oo.Position.END?this.endClef=t:this.clef=t;var o=this.getModifiers(i,kr.CATEGORY);return 0===o.length?this.addClef(t,e,n,i):o[0].setType(t,e,n),this}},{key:"setEndClef",value:function(t,e,n){return this.setClef(t,e,n,Oo.Position.END),this}},{key:"setKeySignature",value:function(t,e,n){void 0===n&&(n=Oo.Position.BEGIN);var i=this.getModifiers(n,Rr.CATEGORY);return 0===i.length?this.addKeySignature(t,e,n):i[0].setKeySig(t,e),this}},{key:"setEndKeySignature",value:function(t,e){return this.setKeySignature(t,e,Oo.Position.END),this}},{key:"setTimeSignature",value:function(t,e,n){void 0===n&&(n=Oo.Position.BEGIN);var i=this.getModifiers(n,zr.CATEGORY);return 0===i.length?this.addTimeSignature(t,e,n):i[0].setTimeSig(t),this}},{key:"setEndTimeSignature",value:function(t,e){return this.setTimeSignature(t,e,Oo.Position.END),this}},{key:"addKeySignature",value:function(t,e,n){return void 0===n&&(n=Oo.Position.BEGIN),this.addModifier(new Rr(t,e).setPosition(n),n),this}},{key:"addClef",value:function(t,e,n,i){return void 0===i||i===Oo.Position.BEGIN?this.clef=t:i===Oo.Position.END&&(this.endClef=t),this.addModifier(new kr(t,e,n),i),this}},{key:"addEndClef",value:function(t,e,n){return this.addClef(t,e,n,Oo.Position.END),this}},{key:"addTimeSignature",value:function(t,e,n){return this.addModifier(new zr(t,e),n),this}},{key:"addEndTimeSignature",value:function(t,e){return this.addTimeSignature(t,e,Oo.Position.END),this}},{key:"addTrebleGlyph",value:function(){return this.addClef("treble"),this}},{key:"getModifiers",value:function(t,e){return void 0===t&&void 0===e?this.modifiers:this.modifiers.filter((function(n){return!(void 0!==t&&t!==n.getPosition()||void 0!==e&&e!==n.getCategory())}))}},{key:"sortByCategory",value:function(t,e){for(var n=t.length-1;n>=0;n--)for(var i=0;ie[t[i+1].getCategory()]){var o=t[i];t[i]=t[i+1],t[i+1]=o}}},{key:"format",value:function(){var t,e,n,i=this.modifiers[0],o=this.modifiers[1],r=this.getModifiers(Oo.Position.BEGIN),b=this.getModifiers(Oo.Position.END);this.sortByCategory(r,{barlines:0,clefs:1,keysignatures:2,timesignatures:3}),this.sortByCategory(b,{timesignatures:0,keysignatures:1,barlines:2,clefs:3}),r.length>1&&i.getType()===Bo.type.REPEAT_BEGIN&&(r.push(r.splice(0,1)[0]),r.splice(0,0,new Bo(Bo.type.SINGLE))),b.indexOf(o)>0&&b.splice(0,0,new Bo(Bo.type.NONE));for(var a=0,s=this.x,l=0;l0){this.context.save(),this.context.setFont(this.font.family,this.font.size,this.font.weight);var b=this.context.measureText(""+this.measure).width;t=this.getYForTopText(0)+3,this.context.fillText(""+this.measure,this.x-b/2,t),this.context.restore()}return this}},{key:"drawVertical",value:function(t,e){this.drawVerticalFixed(this.x+t,e)}},{key:"drawVerticalFixed",value:function(t,e){this.checkContext();var n=this.getYForLine(0),i=this.getYForLine(this.options.num_lines-1);e&&this.context.fillRect(t-3,n,1,i-n+1),this.context.fillRect(t,n,1,i-n+1)}},{key:"drawVerticalBar",value:function(t){this.drawVerticalBarFixed(this.x+t,!1)}},{key:"drawVerticalBarFixed",value:function(t){this.checkContext();var e=this.getYForLine(0),n=this.getYForLine(this.options.num_lines-1);this.context.fillRect(t,e,1,n-e+1)}},{key:"getConfigForLines",value:function(){return this.options.line_config}},{key:"setConfigForLine",value:function(t,e){if(t>=this.options.num_lines||t<0)throw new h.RERR("StaveConfigError","The line number must be within the range of the number of lines in the Stave.");if(void 0===e.visible)throw new h.RERR("StaveConfigError","The line configuration object is missing the 'visible' property.");if("boolean"!=typeof e.visible)throw new h.RERR("StaveConfigError","The line configuration objects 'visible' property must be true or false.");return this.options.line_config[t]=e,this}},{key:"setConfigForLines",value:function(t){if(t.length!==this.options.num_lines)throw new h.RERR("StaveConfigError","The length of the lines configuration array must match the number of lines in the Stave");for(var e in t)t[e]||(t[e]=this.options.line_config[e]),h.Merge(this.options.line_config[e],t[e]);return this.options.line_config=t,this}}])&&Qr(n.prototype,i),o&&Qr(n,o),e}(S);function eb(t){return(eb="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function nb(t,e){for(var n=0;n-1,u=e.indexOf(1)>-1;if(!(o&&u||r&&l)){1===e.length&&e.push(e[0]);var c=[];e.forEach((function(e,o,r){var s=1===e,l=e===a,u=n.getYForLine(e-1);0!==o||s?o!==r.length-1||l||(u+=b/2-1):u-=b/2-1,c.push(u),1===i&&s?c.push(t-2):-1===i&&l&&c.push(t+2)})),s.push(c.sort((function(t,e){return t-e})))}})),s}(e,function(t,e){for(var n=[],i=[],o=1;o<=t;o++){e.indexOf(o)>-1?(n.push(i),i=[]):i.push(o)}return i.length>0&&n.push(i),n}(this.stave.getNumLines(),this.positions.map((function(t){return t.str}))),this.getStave(),this.getStemDirection());n.save(),n.setLineWidth(_t.WIDTH),o.forEach((function(e){0!==e.length&&(n.beginPath(),n.moveTo(t,e[0]),n.lineTo(t,e[e.length-1]),n.stroke(),n.closePath())})),n.restore()}}},{key:"drawPositions",value:function(){for(var t=this.context,e=this.getAbsoluteX(),n=this.ys,i=0;iparseInt(r,10)?e.SLIDE_DOWN:e.SLIDE_UP}return i.slide_direction=n,i.render_options.cp1=11,i.render_options.cp2=14,i.render_options.y_shift=.5,i.setFont({font:"Times",size:10,style:"bold italic"}),i.setNotes(t),i}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&ea(t,e)}(e,t),ta(e,null,[{key:"createSlideUp",value:function(t){return new e(t,e.SLIDE_UP)}},{key:"createSlideDown",value:function(t){return new e(t,e.SLIDE_DOWN)}},{key:"SLIDE_UP",get:function(){return 1}},{key:"SLIDE_DOWN",get:function(){return-1}}]),ta(e,[{key:"renderTie",value:function(t){if(0===t.first_ys.length||0===t.last_ys.length)throw new h.RERR("BadArguments","No Y-values to render");var n=this.context,i=t.first_x_px,o=t.first_ys,r=t.last_x_px,b=this.slide_direction;if(b!==e.SLIDE_UP&&b!==e.SLIDE_DOWN)throw new h.RERR("BadSlide","Invalid slide direction");for(var a=0;a0&&void 0!==arguments[0]?arguments[0]:"E/5,B/4,G/4,D/4,A/3,E/3,B/2,E/2";va(this,t),this.setTuning(e)}return wa(t,null,[{key:"names",get:function(){return{standard:"E/5,B/4,G/4,D/4,A/3,E/3",dagdad:"D/5,A/4,G/4,D/4,A/3,D/3",dropd:"E/5,B/4,G/4,D/4,A/3,D/3",eb:"Eb/5,Bb/4,Gb/4,Db/4,Ab/3,Db/3",standardBanjo:"D/5,B/4,G/4,D/4,G/5"}}}]),wa(t,[{key:"noteToInteger",value:function(t){return q.keyProperties(t).int_value}},{key:"setTuning",value:function(e){t.names[e]&&(e=t.names[e]),this.tuningString=e,this.tuningValues=[],this.numStrings=0;var n=e.split(/\s*,\s*/);if(0===n.length)throw new h.RERR("BadArguments","Invalid tuning string: "+e);this.numStrings=n.length;for(var i=0;ithis.numStrings)throw new h.RERR("BadArguments","String number must be between 1 and ".concat(this.numStrings,":").concat(t));return this.tuningValues[e-1]}},{key:"getValueForFret",value:function(t,e){var n=this.getValueForString(e),i=parseInt(t,10);if(i<0)throw new h.RERR("BadArguments","Fret number must be 0 or higher: "+t);return n+i}},{key:"getNoteForFret",value:function(t,e){var n=this.getValueForFret(t,e),i=Math.floor(n/12),o=n%12;return q.integerToNote(o)+"/"+i}}]),t}();function Sa(t,e){for(var n=0;no.y;i.x+=r.getMetrics().modRightPx+a.padding_left,o.x-=b.getMetrics().modLeftPx+a.padding_right;var c=r.getGlyph().getWidth();r.getKeyProps()[e].displaced&&1===r.getStemDirection()&&(i.x+=c+a.padding_left),b.getKeyProps()[l].displaced&&-1===b.getStemDirection()&&(o.x-=c+a.padding_right),i.y+=u?-3:1,o.y+=u?2:0,function(t,e,n,i){var o,r,b,a,s=i.draw_start_arrow&&i.draw_end_arrow,l=e.x,u=e.y,c=n.x,h=n.y,f=Math.sqrt((c-l)*(c-l)+(h-u)*(h-u)),p=(f-i.arrowhead_length/3)/f;i.draw_end_arrow||s?(o=Math.round(l+(c-l)*p),r=Math.round(u+(h-u)*p)):(o=c,r=h),i.draw_start_arrow||s?(b=l+(c-l)*(1-p),a=u+(h-u)*(1-p)):(b=l,a=u),i.color&&(t.setStrokeStyle(i.color),t.setFillStyle(i.color)),t.beginPath(),t.moveTo(b,a),t.lineTo(o,r),t.stroke(),t.closePath();var m,y,d,_,g=Math.atan2(h-u,c-l),v=Math.abs(i.arrowhead_length/Math.cos(i.arrowhead_angle));(i.draw_end_arrow||s)&&(m=g+Math.PI+i.arrowhead_angle,d=c+Math.cos(m)*v,_=h+Math.sin(m)*v,y=g+Math.PI-i.arrowhead_angle,ts(t,d,_,c,h,c+Math.cos(y)*v,h+Math.sin(y)*v)),(i.draw_start_arrow||s)&&(m=g+i.arrowhead_angle,d=l+Math.cos(m)*v,_=u+Math.sin(m)*v,y=g-i.arrowhead_angle,ts(t,d,_,l,u,l+Math.cos(y)*v,u+Math.sin(y)*v))}(n,i,o,t.render_options)})),n.restore();var s,l=n.measureText(this.text).width,u=a.text_justification,c=0;if(u===e.TextJustification.LEFT)c=i.x;else if(u===e.TextJustification.CENTER){c=(o.x-i.x)/2+i.x-l/2}else u===e.TextJustification.RIGHT&&(c=o.x-l);var h=a.text_position_vertical;return h===e.TextVerticalPosition.TOP?s=r.getStave().getYForTopText():h===e.TextVerticalPosition.BOTTOM&&(s=r.getStave().getYForBottomText(q.TEXT_HEIGHT_OFFSET_HACK)),n.save(),this.applyFontStyle(),n.fillText(this.text,c,s),n.restore(),this}}]),e}(S);function ns(t){return(ns="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function is(t,e){return!e||"object"!==ns(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function os(t){return(os=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function rs(t,e){for(var n=0;n3)throw new h.RERR("InvalidParameter","The style must be one found in PedalMarking.Styles");return this.style=t,this}},{key:"setLine",value:function(t){return this.line=t,this}},{key:"drawBracketed",value:function(){var t,n,i=this,o=this.context,r=!1,b=this;this.notes.forEach((function(a,s,l){r=!r;var u=a.getAbsoluteX(),c=a.getStave().getYForBottomText(b.line+3);if(u0&&void 0!==arguments[0]?arguments[0]:Bo.type.SINGLE;xs(this,e),(n=ks(this,Ts(e).call(this,{duration:"b"}))).setAttribute("type","BarNote"),n.metrics={widths:{}};var o=Bo.type;return n.metrics.widths=(vs(t={},o.SINGLE,8),vs(t,o.DOUBLE,12),vs(t,o.END,15),vs(t,o.REPEAT_BEGIN,14),vs(t,o.REPEAT_END,14),vs(t,o.REPEAT_BOTH,18),vs(t,o.NONE,0),t),n.ignore_ticks=!0,n.setType(i),n}var n,i,o;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&Os(t,e)}(e,t),n=e,(i=[{key:"getType",value:function(){return this.type}},{key:"setType",value:function(t){return this.type="string"==typeof t?Bo.typeString[t]:t,this.setWidth(this.metrics.widths[this.type]),this}},{key:"getBoundingBox",value:function(){return Ss(Ts(e.prototype),"getBoundingBox",this).call(this)}},{key:"addToModifierContext",value:function(){return this}},{key:"preFormat",value:function(){return this.setPreFormatted(!0),this}},{key:"draw",value:function(){if(this.checkContext(),!this.stave)throw new h.RERR("NoStave","Can't draw without a stave.");!function(){for(var t=arguments.length,e=new Array(t),n=0;n1&&void 0!==arguments[1]&&arguments[1],n=e?new RegExp("^(("+t+"))"):new RegExp("^(("+t+")\\s*)"),i=this.line.slice(this.pos),o=i.match(n);return null!==o?{success:!0,matchedString:o[2],incrementPos:o[1].length,pos:this.pos}:{success:!1,pos:this.pos}}},{key:"expectOne",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=[],i=this.pos,o=!0,r=!1;e=!0===e||!0===t.maybe;for(var b=0;b1&&void 0!==arguments[1]&&arguments[1],n=[],i=this.pos,o=0,r=!0;do{var b=this.expectOne(t);b.success?(o++,n.push(b.results)):r=!1}while(r);var a=o>0||!0===e;return!e||o>0||(this.pos=i),a?this.matchSuccess():this.matchFail(i),{success:a,results:n,numMatches:o}}},{key:"expectZeroOrMore",value:function(t){return this.expectOneOrMore(t,!0)}},{key:"expect",value:function(t){var e;if(cl("Evaluating rules:",t),!t)throw new hl("Invalid Rule: "+t,t);var n=t.bind(this.grammar)();if(n.token)(e=this.matchToken(n.token,!0===n.noSpace)).success&&(this.pos+=e.incrementPos);else{if(!n.expect)throw new hl("Bad grammar! No `token` or `expect` property",n);e=n.oneOrMore?this.expectOneOrMore(n):n.zeroOrMore?this.expectZeroOrMore(n):this.expectOne(n)}return e.matches=[],e.results&&e.results.forEach((function(t){return e.matches.push(fl(t))})),n.run&&e.success&&n.run(e),e}}])&&ul(e.prototype,n),i&&ul(e,i),t}();function ml(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function yl(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};this.options={stem:"auto",clef:"treble"},this.elements={notes:[],accidentals:[]},this.rollingDuration="8",this.resetPiece(),vl(this.options,t)}},{key:"getFactory",value:function(){return this.factory}},{key:"getElements",value:function(){return this.elements}},{key:"addCommitHook",value:function(t){this.commitHooks.push(t)}},{key:"resetPiece",value:function(){Sl("resetPiece"),this.piece={chord:[],duration:this.rollingDuration,dots:0,type:void 0,options:{}}}},{key:"setNoteDots",value:function(t){Sl("setNoteDots:",t),t&&(this.piece.dots=t.length)}},{key:"setNoteDuration",value:function(t){Sl("setNoteDuration:",t),this.rollingDuration=this.piece.duration=t||this.rollingDuration}},{key:"setNoteType",value:function(t){Sl("setNoteType:",t),t&&(this.piece.type=t)}},{key:"addNoteOption",value:function(t,e){Sl("addNoteOption: key:",t,"value:",e),this.piece.options[t]=e}},{key:"addNote",value:function(t,e,n){Sl("addNote:",t,e,n),this.piece.chord.push({key:t,accid:e,octave:n})}},{key:"addSingleNote",value:function(t,e,n){Sl("addSingleNote:",t,e,n),this.addNote(t,e,n)}},{key:"addChord",value:function(t){var e=this;Sl("startChord"),"object"!==gl(t[0])?this.addSingleNote(t[0]):t.forEach((function(t){t&&e.addNote.apply(e,_l(t))})),Sl("endChord")}},{key:"commitPiece",value:function(){var t=this;Sl("commitPiece");var e=this.factory;if(e){var n=yl({},this.options,{},this.piece.options),i=n.stem,o=n.clef,r="auto"===i.toLowerCase(),b=r||"up"!==i.toLowerCase()?Je.STEM_DOWN:Je.STEM_UP,a=this.piece,s=a.chord,l=a.duration,u=a.dots,c=a.type,h=s.map((function(t){return t.key+"/"+t.octave})),f=e.StaveNote({keys:h,duration:l,dots:u,type:c,clef:o,auto_stem:r});r||f.setStemDirection(b);var p=s.map((function(t){return t.accid||null}));p.forEach((function(t,n){t&&f.addAccidental(n,e.Accidental({type:t}))}));for(var m=0;m0&&void 0!==arguments[0]?arguments[0]:{};xl(this,t),this.setOptions(e),this.defaults={clef:"treble",time:"4/4",stem:"auto"}}return kl(t,[{key:"set",value:function(t){return vl(this.defaults,t),this}},{key:"setOptions",value:function(t){var e=this;return this.options=yl({factory:null,builder:null,commitHooks:[Pl,Cl,Ti.easyScoreHook],throwOnError:!1},t),this.factory=this.options.factory,this.builder=this.options.builder||new El(this.factory),this.grammar=new Ol(this.builder),this.parser=new pl(this.grammar),this.options.commitHooks.forEach((function(t){return e.addCommitHook(t)})),this}},{key:"setContext",value:function(t){return this.factory&&this.factory.setContext(t),this}},{key:"parse",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.builder.reset(e);var n=this.parser.parse(t);if(!n.success&&this.options.throwOnError)throw new Tl("Error parsing line: "+t,n);return n}},{key:"beam",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.factory.Beam({notes:t,options:e}),t}},{key:"tuplet",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.factory.Tuplet({notes:t,options:e}),t}},{key:"notes",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e=yl({clef:this.defaults.clef,stem:this.defaults.stem},e),this.parse(t,e),this.builder.getElements().notes}},{key:"voice",value:function(t,e){return e=yl({time:this.defaults.time},e),this.factory.Voice(e).addTickables(t)}},{key:"addCommitHook",value:function(t){return this.builder.addCommitHook(t)}}]),t}();function Al(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0,n=e.options;return(t=Nl(e,t)).options=Nl(n,t.options),t}var Fl=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),function(){for(var t=arguments.length,e=new Array(t),n=0;n1&&void 0!==arguments[1]?arguments[1]:500,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:200;return new t({renderer:{elementId:e,width:n,height:i}})}}],(n=[{key:"reset",value:function(){this.renderQ=[],this.systems=[],this.staves=[],this.voices=[],this.stave=null}},{key:"getOptions",value:function(){return this.options}},{key:"setOptions",value:function(t){for(var e=0,n=["stave","renderer","font"];e0&&void 0!==arguments[0]?arguments[0]:{};t.factory=this;var e=new Hl(t).setContext(this.context);return this.systems.push(e),e}},{key:"EasyScore",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t.factory=this,new Rl(t)}},{key:"PedalMarking",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t=Ml(t,{notes:[],options:{style:"mixed"}});var e=new ls(t.notes);return e.setStyle(ls.StylesString[t.options.style]),e.setContext(this.context),this.renderQ.push(e),e}},{key:"NoteSubGroup",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t=Ml(t,{notes:[],options:{}});var e=new En(t.notes);return e.setContext(this.context),e}},{key:"draw",value:function(){var t=this;this.systems.forEach((function(e){return e.setContext(t.context).format()})),this.staves.forEach((function(e){return e.setContext(t.context).draw()})),this.voices.forEach((function(e){return e.setContext(t.context).draw()})),this.renderQ.forEach((function(e){e.isRendered()||e.setContext(t.context).draw()})),this.systems.forEach((function(e){return e.setContext(t.context).draw()})),this.reset()}}])&&Al(e.prototype,n),i&&Al(e,i),t}();function Dl(t){return(Dl="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function jl(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function Ll(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return Yl(this,e),(t=Gl(this,Wl(e).call(this))).setAttribute("type","System"),t.setOptions(n),t.parts=[],t}var n,i,o;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&Ul(t,e)}(e,t),n=e,(i=[{key:"setOptions",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.options=Ll({x:10,y:10,width:500,connector:null,spaceBetweenStaves:12,factory:null,noJustification:!1,debugFormatter:!1,formatIterations:0,noPadding:!1},t,{details:Ll({alpha:.5},t.details)}),this.factory=this.options.factory||new Fl({renderer:{el:null}})}},{key:"setContext",value:function(t){return Xl(Wl(e.prototype),"setContext",this).call(this,t),this.factory.setContext(t),this}},{key:"addConnector",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"double";return this.connector=this.factory.StaveConnector({top_stave:this.parts[0].stave,bottom_stave:this.parts[this.parts.length-1].stave,type:t}),this.connector}},{key:"addStave",value:function(t){var e=this;return(t=Ll({stave:null,voices:[],spaceAbove:0,spaceBelow:0,debugNoteMetrics:!1},t,{options:Ll({left_bar:!1},t.options)})).stave||(t.stave=this.factory.Stave({x:this.options.x,y:this.options.y,width:this.options.width,options:t.options})),t.voices.forEach((function(n){return n.setContext(e.context).setStave(t.stave).getTickables().forEach((function(e){return e.setStave(t.stave)}))})),this.parts.push(t),t.stave}},{key:"format",value:function(){var t=this,e=new go(Ll({},this.options.details));this.formatter=e;var n=this.options.y,i=0,o=[],r=[];this.parts.forEach((function(b){n+=b.stave.space(b.spaceAbove),b.stave.setY(n),e.joinVoices(b.voices),n+=b.stave.space(b.spaceBelow),n+=b.stave.space(t.options.spaceBetweenStaves),b.debugNoteMetrics&&(r.push({y:n,voice:b.voices[0]}),n+=15),o=o.concat(b.voices),i=Math.max(i,b.stave.getNoteStartX())})),this.parts.forEach((function(t){return t.stave.setNoteStartX(i)}));var b=this.options.noPadding?this.options.width-this.options.x:this.options.width-(i-this.options.x)-this.musicFont.lookupMetric("stave.padding");e.format(o,this.options.noJustification?0:b);for(var a=0;a